ZGlmZiAtLWdpdCBhLy5naXRpZ25vcmUgYi8uZ2l0aWdub3JlCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmZhY2Y4ZDAKLS0tIC9kZXYvbnVsbAorKysgYi8uZ2l0aWdub3JlCkBAIC0wLDAgKzEsOSBAQAorYmluLwordGFyZ2V0LworKi5qYXZhLl90cmFjZQorKi5weWMKKy5EU19TdG9yZQorKi54dGVuZGJpbgorCisjIFdvcmtzcGFjZSBtZXRhZGF0YSBmb2xkZXIgY3JlYXRlZCBieSBPb21waCB3aGVuIGxhdW5jaGluZyB0ZXN0cy4KK3Rlc3RzLyoqLy5tZXRhZGF0YS8KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MSUNFTlNFIGIvTElDRU5TRQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5mNzM1YmVlCi0tLSAvZGV2L251bGwKKysrIGIvTElDRU5TRQpAQCAtMCwwICsxLDIwMyBAQAorRWNsaXBzZSBQdWJsaWMgTGljZW5zZSAtIHYgMS4wCisKK1RIRSBBQ0NPTVBBTllJTkcgUFJPR1JBTSBJUyBQUk9WSURFRCBVTkRFUiBUSEUgVEVSTVMgT0YgVEhJUyBFQ0xJUFNFIFBVQkxJQworTElDRU5TRSAoIkFHUkVFTUVOVCIpLiBBTlkgVVNFLCBSRVBST0RVQ1RJT04gT1IgRElTVFJJQlVUSU9OIE9GIFRIRSBQUk9HUkFNCitDT05TVElUVVRFUyBSRUNJUElFTlQnUyBBQ0NFUFRBTkNFIE9GIFRISVMgQUdSRUVNRU5ULgorCisxLiBERUZJTklUSU9OUworCisiQ29udHJpYnV0aW9uIiBtZWFuczoKKworYSkgaW4gdGhlIGNhc2Ugb2YgdGhlIGluaXRpYWwgQ29udHJpYnV0b3IsIHRoZSBpbml0aWFsIGNvZGUgYW5kIGRvY3VtZW50YXRpb24KKyAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoaXMgQWdyZWVtZW50LCBhbmQKK2IpIGluIHRoZSBjYXNlIG9mIGVhY2ggc3Vic2VxdWVudCBDb250cmlidXRvcjoKKyAgICBpKSBjaGFuZ2VzIHRvIHRoZSBQcm9ncmFtLCBhbmQKKyAgIGlpKSBhZGRpdGlvbnMgdG8gdGhlIFByb2dyYW07CisKKyAgIHdoZXJlIHN1Y2ggY2hhbmdlcyBhbmQvb3IgYWRkaXRpb25zIHRvIHRoZSBQcm9ncmFtIG9yaWdpbmF0ZSBmcm9tIGFuZCBhcmUKKyAgIGRpc3RyaWJ1dGVkIGJ5IHRoYXQgcGFydGljdWxhciBDb250cmlidXRvci4gQSBDb250cmlidXRpb24gJ29yaWdpbmF0ZXMnCisgICBmcm9tIGEgQ29udHJpYnV0b3IgaWYgaXQgd2FzIGFkZGVkIHRvIHRoZSBQcm9ncmFtIGJ5IHN1Y2ggQ29udHJpYnV0b3IKKyAgIGl0c2VsZiBvciBhbnlvbmUgYWN0aW5nIG9uIHN1Y2ggQ29udHJpYnV0b3IncyBiZWhhbGYuIENvbnRyaWJ1dGlvbnMgZG8gbm90CisgICBpbmNsdWRlIGFkZGl0aW9ucyB0byB0aGUgUHJvZ3JhbSB3aGljaDogKGkpIGFyZSBzZXBhcmF0ZSBtb2R1bGVzIG9mCisgICBzb2Z0d2FyZSBkaXN0cmlidXRlZCBpbiBjb25qdW5jdGlvbiB3aXRoIHRoZSBQcm9ncmFtIHVuZGVyIHRoZWlyIG93bgorICAgbGljZW5zZSBhZ3JlZW1lbnQsIGFuZCAoaWkpIGFyZSBub3QgZGVyaXZhdGl2ZSB3b3JrcyBvZiB0aGUgUHJvZ3JhbS4KKworIkNvbnRyaWJ1dG9yIiBtZWFucyBhbnkgcGVyc29uIG9yIGVudGl0eSB0aGF0IGRpc3RyaWJ1dGVzIHRoZSBQcm9ncmFtLgorCisiTGljZW5zZWQgUGF0ZW50cyIgbWVhbiBwYXRlbnQgY2xhaW1zIGxpY2Vuc2FibGUgYnkgYSBDb250cmlidXRvciB3aGljaCBhcmUKK25lY2Vzc2FyaWx5IGluZnJpbmdlZCBieSB0aGUgdXNlIG9yIHNhbGUgb2YgaXRzIENvbnRyaWJ1dGlvbiBhbG9uZSBvciB3aGVuCitjb21iaW5lZCB3aXRoIHRoZSBQcm9ncmFtLgorCisiUHJvZ3JhbSIgbWVhbnMgdGhlIENvbnRyaWJ1dGlvbnMgZGlzdHJpYnV0ZWQgaW4gYWNjb3JkYW5jZSB3aXRoIHRoaXMKK0FncmVlbWVudC4KKworIlJlY2lwaWVudCIgbWVhbnMgYW55b25lIHdobyByZWNlaXZlcyB0aGUgUHJvZ3JhbSB1bmRlciB0aGlzIEFncmVlbWVudCwKK2luY2x1ZGluZyBhbGwgQ29udHJpYnV0b3JzLgorCisyLiBHUkFOVCBPRiBSSUdIVFMKKyAgYSkgU3ViamVjdCB0byB0aGUgdGVybXMgb2YgdGhpcyBBZ3JlZW1lbnQsIGVhY2ggQ29udHJpYnV0b3IgaGVyZWJ5IGdyYW50cworICAgICBSZWNpcGllbnQgYSBub24tZXhjbHVzaXZlLCB3b3JsZHdpZGUsIHJveWFsdHktZnJlZSBjb3B5cmlnaHQgbGljZW5zZSB0bworICAgICByZXByb2R1Y2UsIHByZXBhcmUgZGVyaXZhdGl2ZSB3b3JrcyBvZiwgcHVibGljbHkgZGlzcGxheSwgcHVibGljbHkKKyAgICAgcGVyZm9ybSwgZGlzdHJpYnV0ZSBhbmQgc3VibGljZW5zZSB0aGUgQ29udHJpYnV0aW9uIG9mIHN1Y2ggQ29udHJpYnV0b3IsCisgICAgIGlmIGFueSwgYW5kIHN1Y2ggZGVyaXZhdGl2ZSB3b3JrcywgaW4gc291cmNlIGNvZGUgYW5kIG9iamVjdCBjb2RlIGZvcm0uCisgIGIpIFN1YmplY3QgdG8gdGhlIHRlcm1zIG9mIHRoaXMgQWdyZWVtZW50LCBlYWNoIENvbnRyaWJ1dG9yIGhlcmVieSBncmFudHMKKyAgICAgUmVjaXBpZW50IGEgbm9uLWV4Y2x1c2l2ZSwgd29ybGR3aWRlLCByb3lhbHR5LWZyZWUgcGF0ZW50IGxpY2Vuc2UgdW5kZXIKKyAgICAgTGljZW5zZWQgUGF0ZW50cyB0byBtYWtlLCB1c2UsIHNlbGwsIG9mZmVyIHRvIHNlbGwsIGltcG9ydCBhbmQgb3RoZXJ3aXNlCisgICAgIHRyYW5zZmVyIHRoZSBDb250cmlidXRpb24gb2Ygc3VjaCBDb250cmlidXRvciwgaWYgYW55LCBpbiBzb3VyY2UgY29kZSBhbmQKKyAgICAgb2JqZWN0IGNvZGUgZm9ybS4gVGhpcyBwYXRlbnQgbGljZW5zZSBzaGFsbCBhcHBseSB0byB0aGUgY29tYmluYXRpb24gb2YKKyAgICAgdGhlIENvbnRyaWJ1dGlvbiBhbmQgdGhlIFByb2dyYW0gaWYsIGF0IHRoZSB0aW1lIHRoZSBDb250cmlidXRpb24gaXMKKyAgICAgYWRkZWQgYnkgdGhlIENvbnRyaWJ1dG9yLCBzdWNoIGFkZGl0aW9uIG9mIHRoZSBDb250cmlidXRpb24gY2F1c2VzIHN1Y2gKKyAgICAgY29tYmluYXRpb24gdG8gYmUgY292ZXJlZCBieSB0aGUgTGljZW5zZWQgUGF0ZW50cy4gVGhlIHBhdGVudCBsaWNlbnNlCisgICAgIHNoYWxsIG5vdCBhcHBseSB0byBhbnkgb3RoZXIgY29tYmluYXRpb25zIHdoaWNoIGluY2x1ZGUgdGhlIENvbnRyaWJ1dGlvbi4KKyAgICAgTm8gaGFyZHdhcmUgcGVyIHNlIGlzIGxpY2Vuc2VkIGhlcmV1bmRlci4KKyAgYykgUmVjaXBpZW50IHVuZGVyc3RhbmRzIHRoYXQgYWx0aG91Z2ggZWFjaCBDb250cmlidXRvciBncmFudHMgdGhlIGxpY2Vuc2VzCisgICAgIHRvIGl0cyBDb250cmlidXRpb25zIHNldCBmb3J0aCBoZXJlaW4sIG5vIGFzc3VyYW5jZXMgYXJlIHByb3ZpZGVkIGJ5IGFueQorICAgICBDb250cmlidXRvciB0aGF0IHRoZSBQcm9ncmFtIGRvZXMgbm90IGluZnJpbmdlIHRoZSBwYXRlbnQgb3Igb3RoZXIKKyAgICAgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBvZiBhbnkgb3RoZXIgZW50aXR5LiBFYWNoIENvbnRyaWJ1dG9yCisgICAgIGRpc2NsYWltcyBhbnkgbGlhYmlsaXR5IHRvIFJlY2lwaWVudCBmb3IgY2xhaW1zIGJyb3VnaHQgYnkgYW55IG90aGVyCisgICAgIGVudGl0eSBiYXNlZCBvbiBpbmZyaW5nZW1lbnQgb2YgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBvcgorICAgICBvdGhlcndpc2UuIEFzIGEgY29uZGl0aW9uIHRvIGV4ZXJjaXNpbmcgdGhlIHJpZ2h0cyBhbmQgbGljZW5zZXMgZ3JhbnRlZAorICAgICBoZXJldW5kZXIsIGVhY2ggUmVjaXBpZW50IGhlcmVieSBhc3N1bWVzIHNvbGUgcmVzcG9uc2liaWxpdHkgdG8gc2VjdXJlCisgICAgIGFueSBvdGhlciBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIG5lZWRlZCwgaWYgYW55LiBGb3IgZXhhbXBsZSwgaWYgYQorICAgICB0aGlyZCBwYXJ0eSBwYXRlbnQgbGljZW5zZSBpcyByZXF1aXJlZCB0byBhbGxvdyBSZWNpcGllbnQgdG8gZGlzdHJpYnV0ZQorICAgICB0aGUgUHJvZ3JhbSwgaXQgaXMgUmVjaXBpZW50J3MgcmVzcG9uc2liaWxpdHkgdG8gYWNxdWlyZSB0aGF0IGxpY2Vuc2UKKyAgICAgYmVmb3JlIGRpc3RyaWJ1dGluZyB0aGUgUHJvZ3JhbS4KKyAgZCkgRWFjaCBDb250cmlidXRvciByZXByZXNlbnRzIHRoYXQgdG8gaXRzIGtub3dsZWRnZSBpdCBoYXMgc3VmZmljaWVudAorICAgICBjb3B5cmlnaHQgcmlnaHRzIGluIGl0cyBDb250cmlidXRpb24sIGlmIGFueSwgdG8gZ3JhbnQgdGhlIGNvcHlyaWdodAorICAgICBsaWNlbnNlIHNldCBmb3J0aCBpbiB0aGlzIEFncmVlbWVudC4KKworMy4gUkVRVUlSRU1FTlRTCisKK0EgQ29udHJpYnV0b3IgbWF5IGNob29zZSB0byBkaXN0cmlidXRlIHRoZSBQcm9ncmFtIGluIG9iamVjdCBjb2RlIGZvcm0gdW5kZXIKK2l0cyBvd24gbGljZW5zZSBhZ3JlZW1lbnQsIHByb3ZpZGVkIHRoYXQ6CisKKyAgYSkgaXQgY29tcGxpZXMgd2l0aCB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhpcyBBZ3JlZW1lbnQ7IGFuZAorICBiKSBpdHMgbGljZW5zZSBhZ3JlZW1lbnQ6CisgICAgICBpKSBlZmZlY3RpdmVseSBkaXNjbGFpbXMgb24gYmVoYWxmIG9mIGFsbCBDb250cmlidXRvcnMgYWxsIHdhcnJhbnRpZXMKKyAgICAgICAgIGFuZCBjb25kaXRpb25zLCBleHByZXNzIGFuZCBpbXBsaWVkLCBpbmNsdWRpbmcgd2FycmFudGllcyBvcgorICAgICAgICAgY29uZGl0aW9ucyBvZiB0aXRsZSBhbmQgbm9uLWluZnJpbmdlbWVudCwgYW5kIGltcGxpZWQgd2FycmFudGllcyBvcgorICAgICAgICAgY29uZGl0aW9ucyBvZiBtZXJjaGFudGFiaWxpdHkgYW5kIGZpdG5lc3MgZm9yIGEgcGFydGljdWxhciBwdXJwb3NlOworICAgICBpaSkgZWZmZWN0aXZlbHkgZXhjbHVkZXMgb24gYmVoYWxmIG9mIGFsbCBDb250cmlidXRvcnMgYWxsIGxpYWJpbGl0eSBmb3IKKyAgICAgICAgIGRhbWFnZXMsIGluY2x1ZGluZyBkaXJlY3QsIGluZGlyZWN0LCBzcGVjaWFsLCBpbmNpZGVudGFsIGFuZAorICAgICAgICAgY29uc2VxdWVudGlhbCBkYW1hZ2VzLCBzdWNoIGFzIGxvc3QgcHJvZml0czsKKyAgICBpaWkpIHN0YXRlcyB0aGF0IGFueSBwcm92aXNpb25zIHdoaWNoIGRpZmZlciBmcm9tIHRoaXMgQWdyZWVtZW50IGFyZQorICAgICAgICAgb2ZmZXJlZCBieSB0aGF0IENvbnRyaWJ1dG9yIGFsb25lIGFuZCBub3QgYnkgYW55IG90aGVyIHBhcnR5OyBhbmQKKyAgICAgaXYpIHN0YXRlcyB0aGF0IHNvdXJjZSBjb2RlIGZvciB0aGUgUHJvZ3JhbSBpcyBhdmFpbGFibGUgZnJvbSBzdWNoCisgICAgICAgICBDb250cmlidXRvciwgYW5kIGluZm9ybXMgbGljZW5zZWVzIGhvdyB0byBvYnRhaW4gaXQgaW4gYSByZWFzb25hYmxlCisgICAgICAgICBtYW5uZXIgb24gb3IgdGhyb3VnaCBhIG1lZGl1bSBjdXN0b21hcmlseSB1c2VkIGZvciBzb2Z0d2FyZSBleGNoYW5nZS4KKworV2hlbiB0aGUgUHJvZ3JhbSBpcyBtYWRlIGF2YWlsYWJsZSBpbiBzb3VyY2UgY29kZSBmb3JtOgorCisgIGEpIGl0IG11c3QgYmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhpcyBBZ3JlZW1lbnQ7IGFuZAorICBiKSBhIGNvcHkgb2YgdGhpcyBBZ3JlZW1lbnQgbXVzdCBiZSBpbmNsdWRlZCB3aXRoIGVhY2ggY29weSBvZiB0aGUgUHJvZ3JhbS4KKyAgICAgQ29udHJpYnV0b3JzIG1heSBub3QgcmVtb3ZlIG9yIGFsdGVyIGFueSBjb3B5cmlnaHQgbm90aWNlcyBjb250YWluZWQKKyAgICAgd2l0aGluIHRoZSBQcm9ncmFtLgorCitFYWNoIENvbnRyaWJ1dG9yIG11c3QgaWRlbnRpZnkgaXRzZWxmIGFzIHRoZSBvcmlnaW5hdG9yIG9mIGl0cyBDb250cmlidXRpb24sCitpZgorYW55LCBpbiBhIG1hbm5lciB0aGF0IHJlYXNvbmFibHkgYWxsb3dzIHN1YnNlcXVlbnQgUmVjaXBpZW50cyB0byBpZGVudGlmeSB0aGUKK29yaWdpbmF0b3Igb2YgdGhlIENvbnRyaWJ1dGlvbi4KKworNC4gQ09NTUVSQ0lBTCBESVNUUklCVVRJT04KKworQ29tbWVyY2lhbCBkaXN0cmlidXRvcnMgb2Ygc29mdHdhcmUgbWF5IGFjY2VwdCBjZXJ0YWluIHJlc3BvbnNpYmlsaXRpZXMgd2l0aAorcmVzcGVjdCB0byBlbmQgdXNlcnMsIGJ1c2luZXNzIHBhcnRuZXJzIGFuZCB0aGUgbGlrZS4gV2hpbGUgdGhpcyBsaWNlbnNlIGlzCitpbnRlbmRlZCB0byBmYWNpbGl0YXRlIHRoZSBjb21tZXJjaWFsIHVzZSBvZiB0aGUgUHJvZ3JhbSwgdGhlIENvbnRyaWJ1dG9yIHdobworaW5jbHVkZXMgdGhlIFByb2dyYW0gaW4gYSBjb21tZXJjaWFsIHByb2R1Y3Qgb2ZmZXJpbmcgc2hvdWxkIGRvIHNvIGluIGEgbWFubmVyCit3aGljaCBkb2VzIG5vdCBjcmVhdGUgcG90ZW50aWFsIGxpYWJpbGl0eSBmb3Igb3RoZXIgQ29udHJpYnV0b3JzLiBUaGVyZWZvcmUsCitpZiBhIENvbnRyaWJ1dG9yIGluY2x1ZGVzIHRoZSBQcm9ncmFtIGluIGEgY29tbWVyY2lhbCBwcm9kdWN0IG9mZmVyaW5nLCBzdWNoCitDb250cmlidXRvciAoIkNvbW1lcmNpYWwgQ29udHJpYnV0b3IiKSBoZXJlYnkgYWdyZWVzIHRvIGRlZmVuZCBhbmQgaW5kZW1uaWZ5CitldmVyeSBvdGhlciBDb250cmlidXRvciAoIkluZGVtbmlmaWVkIENvbnRyaWJ1dG9yIikgYWdhaW5zdCBhbnkgbG9zc2VzLAorZGFtYWdlcyBhbmQgY29zdHMgKGNvbGxlY3RpdmVseSAiTG9zc2VzIikgYXJpc2luZyBmcm9tIGNsYWltcywgbGF3c3VpdHMgYW5kCitvdGhlciBsZWdhbCBhY3Rpb25zIGJyb3VnaHQgYnkgYSB0aGlyZCBwYXJ0eSBhZ2FpbnN0IHRoZSBJbmRlbW5pZmllZAorQ29udHJpYnV0b3IgdG8gdGhlIGV4dGVudCBjYXVzZWQgYnkgdGhlIGFjdHMgb3Igb21pc3Npb25zIG9mIHN1Y2ggQ29tbWVyY2lhbAorQ29udHJpYnV0b3IgaW4gY29ubmVjdGlvbiB3aXRoIGl0cyBkaXN0cmlidXRpb24gb2YgdGhlIFByb2dyYW0gaW4gYSBjb21tZXJjaWFsCitwcm9kdWN0IG9mZmVyaW5nLiBUaGUgb2JsaWdhdGlvbnMgaW4gdGhpcyBzZWN0aW9uIGRvIG5vdCBhcHBseSB0byBhbnkgY2xhaW1zCitvciBMb3NzZXMgcmVsYXRpbmcgdG8gYW55IGFjdHVhbCBvciBhbGxlZ2VkIGludGVsbGVjdHVhbCBwcm9wZXJ0eQoraW5mcmluZ2VtZW50LiBJbiBvcmRlciB0byBxdWFsaWZ5LCBhbiBJbmRlbW5pZmllZCBDb250cmlidXRvciBtdXN0OgorYSkgcHJvbXB0bHkgbm90aWZ5IHRoZSBDb21tZXJjaWFsIENvbnRyaWJ1dG9yIGluIHdyaXRpbmcgb2Ygc3VjaCBjbGFpbSwgYW5kCitiKSBhbGxvdyB0aGUgQ29tbWVyY2lhbCBDb250cmlidXRvciB0byBjb250cm9sLCBhbmQgY29vcGVyYXRlIHdpdGggdGhlCitDb21tZXJjaWFsIENvbnRyaWJ1dG9yIGluLCB0aGUgZGVmZW5zZSBhbmQgYW55IHJlbGF0ZWQgc2V0dGxlbWVudAorbmVnb3RpYXRpb25zLiBUaGUgSW5kZW1uaWZpZWQgQ29udHJpYnV0b3IgbWF5IHBhcnRpY2lwYXRlIGluIGFueSBzdWNoIGNsYWltIGF0CitpdHMgb3duIGV4cGVuc2UuCisKK0ZvciBleGFtcGxlLCBhIENvbnRyaWJ1dG9yIG1pZ2h0IGluY2x1ZGUgdGhlIFByb2dyYW0gaW4gYSBjb21tZXJjaWFsIHByb2R1Y3QKK29mZmVyaW5nLCBQcm9kdWN0IFguIFRoYXQgQ29udHJpYnV0b3IgaXMgdGhlbiBhIENvbW1lcmNpYWwgQ29udHJpYnV0b3IuIElmCit0aGF0IENvbW1lcmNpYWwgQ29udHJpYnV0b3IgdGhlbiBtYWtlcyBwZXJmb3JtYW5jZSBjbGFpbXMsIG9yIG9mZmVycword2FycmFudGllcyByZWxhdGVkIHRvIFByb2R1Y3QgWCwgdGhvc2UgcGVyZm9ybWFuY2UgY2xhaW1zIGFuZCB3YXJyYW50aWVzIGFyZQorc3VjaCBDb21tZXJjaWFsIENvbnRyaWJ1dG9yJ3MgcmVzcG9uc2liaWxpdHkgYWxvbmUuIFVuZGVyIHRoaXMgc2VjdGlvbiwgdGhlCitDb21tZXJjaWFsIENvbnRyaWJ1dG9yIHdvdWxkIGhhdmUgdG8gZGVmZW5kIGNsYWltcyBhZ2FpbnN0IHRoZSBvdGhlcgorQ29udHJpYnV0b3JzIHJlbGF0ZWQgdG8gdGhvc2UgcGVyZm9ybWFuY2UgY2xhaW1zIGFuZCB3YXJyYW50aWVzLCBhbmQgaWYgYQorY291cnQgcmVxdWlyZXMgYW55IG90aGVyIENvbnRyaWJ1dG9yIHRvIHBheSBhbnkgZGFtYWdlcyBhcyBhIHJlc3VsdCwgdGhlCitDb21tZXJjaWFsIENvbnRyaWJ1dG9yIG11c3QgcGF5IHRob3NlIGRhbWFnZXMuCisKKzUuIE5PIFdBUlJBTlRZCisKK0VYQ0VQVCBBUyBFWFBSRVNTTFkgU0VUIEZPUlRIIElOIFRISVMgQUdSRUVNRU5ULCBUSEUgUFJPR1JBTSBJUyBQUk9WSURFRCBPTiBBTgorIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIEVJVEhFUiBFWFBSRVNTIE9SCitJTVBMSUVEIElOQ0xVRElORywgV0lUSE9VVCBMSU1JVEFUSU9OLCBBTlkgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIFRJVExFLAorTk9OLUlORlJJTkdFTUVOVCwgTUVSQ0hBTlRBQklMSVRZIE9SIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBFYWNoCitSZWNpcGllbnQgaXMgc29sZWx5IHJlc3BvbnNpYmxlIGZvciBkZXRlcm1pbmluZyB0aGUgYXBwcm9wcmlhdGVuZXNzIG9mIHVzaW5nCithbmQgZGlzdHJpYnV0aW5nIHRoZSBQcm9ncmFtIGFuZCBhc3N1bWVzIGFsbCByaXNrcyBhc3NvY2lhdGVkIHdpdGggaXRzCitleGVyY2lzZSBvZiByaWdodHMgdW5kZXIgdGhpcyBBZ3JlZW1lbnQgLCBpbmNsdWRpbmcgYnV0IG5vdCBsaW1pdGVkIHRvIHRoZQorcmlza3MgYW5kIGNvc3RzIG9mIHByb2dyYW0gZXJyb3JzLCBjb21wbGlhbmNlIHdpdGggYXBwbGljYWJsZSBsYXdzLCBkYW1hZ2UgdG8KK29yIGxvc3Mgb2YgZGF0YSwgcHJvZ3JhbXMgb3IgZXF1aXBtZW50LCBhbmQgdW5hdmFpbGFiaWxpdHkgb3IgaW50ZXJydXB0aW9uIG9mCitvcGVyYXRpb25zLgorCis2LiBESVNDTEFJTUVSIE9GIExJQUJJTElUWQorCitFWENFUFQgQVMgRVhQUkVTU0xZIFNFVCBGT1JUSCBJTiBUSElTIEFHUkVFTUVOVCwgTkVJVEhFUiBSRUNJUElFTlQgTk9SIEFOWQorQ09OVFJJQlVUT1JTIFNIQUxMIEhBVkUgQU5ZIExJQUJJTElUWSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCitTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HIFdJVEhPVVQgTElNSVRBVElPTgorTE9TVCBQUk9GSVRTKSwgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCitDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9SIERJU1RSSUJVVElPTiBPRiBUSEUgUFJPR1JBTSBPUiBUSEUKK0VYRVJDSVNFIE9GIEFOWSBSSUdIVFMgR1JBTlRFRCBIRVJFVU5ERVIsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkKK09GIFNVQ0ggREFNQUdFUy4KKworNy4gR0VORVJBTAorCitJZiBhbnkgcHJvdmlzaW9uIG9mIHRoaXMgQWdyZWVtZW50IGlzIGludmFsaWQgb3IgdW5lbmZvcmNlYWJsZSB1bmRlcgorYXBwbGljYWJsZSBsYXcsIGl0IHNoYWxsIG5vdCBhZmZlY3QgdGhlIHZhbGlkaXR5IG9yIGVuZm9yY2VhYmlsaXR5IG9mIHRoZQorcmVtYWluZGVyIG9mIHRoZSB0ZXJtcyBvZiB0aGlzIEFncmVlbWVudCwgYW5kIHdpdGhvdXQgZnVydGhlciBhY3Rpb24gYnkgdGhlCitwYXJ0aWVzIGhlcmV0bywgc3VjaCBwcm92aXNpb24gc2hhbGwgYmUgcmVmb3JtZWQgdG8gdGhlIG1pbmltdW0gZXh0ZW50CituZWNlc3NhcnkgdG8gbWFrZSBzdWNoIHByb3Zpc2lvbiB2YWxpZCBhbmQgZW5mb3JjZWFibGUuCisKK0lmIFJlY2lwaWVudCBpbnN0aXR1dGVzIHBhdGVudCBsaXRpZ2F0aW9uIGFnYWluc3QgYW55IGVudGl0eSAoaW5jbHVkaW5nIGEKK2Nyb3NzLWNsYWltIG9yIGNvdW50ZXJjbGFpbSBpbiBhIGxhd3N1aXQpIGFsbGVnaW5nIHRoYXQgdGhlIFByb2dyYW0gaXRzZWxmCisoZXhjbHVkaW5nIGNvbWJpbmF0aW9ucyBvZiB0aGUgUHJvZ3JhbSB3aXRoIG90aGVyIHNvZnR3YXJlIG9yIGhhcmR3YXJlKQoraW5mcmluZ2VzIHN1Y2ggUmVjaXBpZW50J3MgcGF0ZW50KHMpLCB0aGVuIHN1Y2ggUmVjaXBpZW50J3MgcmlnaHRzIGdyYW50ZWQKK3VuZGVyIFNlY3Rpb24gMihiKSBzaGFsbCB0ZXJtaW5hdGUgYXMgb2YgdGhlIGRhdGUgc3VjaCBsaXRpZ2F0aW9uIGlzIGZpbGVkLgorCitBbGwgUmVjaXBpZW50J3MgcmlnaHRzIHVuZGVyIHRoaXMgQWdyZWVtZW50IHNoYWxsIHRlcm1pbmF0ZSBpZiBpdCBmYWlscyB0bworY29tcGx5IHdpdGggYW55IG9mIHRoZSBtYXRlcmlhbCB0ZXJtcyBvciBjb25kaXRpb25zIG9mIHRoaXMgQWdyZWVtZW50IGFuZCBkb2VzCitub3QgY3VyZSBzdWNoIGZhaWx1cmUgaW4gYSByZWFzb25hYmxlIHBlcmlvZCBvZiB0aW1lIGFmdGVyIGJlY29taW5nIGF3YXJlIG9mCitzdWNoIG5vbmNvbXBsaWFuY2UuIElmIGFsbCBSZWNpcGllbnQncyByaWdodHMgdW5kZXIgdGhpcyBBZ3JlZW1lbnQgdGVybWluYXRlLAorUmVjaXBpZW50IGFncmVlcyB0byBjZWFzZSB1c2UgYW5kIGRpc3RyaWJ1dGlvbiBvZiB0aGUgUHJvZ3JhbSBhcyBzb29uIGFzCityZWFzb25hYmx5IHByYWN0aWNhYmxlLiBIb3dldmVyLCBSZWNpcGllbnQncyBvYmxpZ2F0aW9ucyB1bmRlciB0aGlzIEFncmVlbWVudAorYW5kIGFueSBsaWNlbnNlcyBncmFudGVkIGJ5IFJlY2lwaWVudCByZWxhdGluZyB0byB0aGUgUHJvZ3JhbSBzaGFsbCBjb250aW51ZQorYW5kIHN1cnZpdmUuCisKK0V2ZXJ5b25lIGlzIHBlcm1pdHRlZCB0byBjb3B5IGFuZCBkaXN0cmlidXRlIGNvcGllcyBvZiB0aGlzIEFncmVlbWVudCwgYnV0IGluCitvcmRlciB0byBhdm9pZCBpbmNvbnNpc3RlbmN5IHRoZSBBZ3JlZW1lbnQgaXMgY29weXJpZ2h0ZWQgYW5kIG1heSBvbmx5IGJlCittb2RpZmllZCBpbiB0aGUgZm9sbG93aW5nIG1hbm5lci4gVGhlIEFncmVlbWVudCBTdGV3YXJkIHJlc2VydmVzIHRoZSByaWdodCB0bworcHVibGlzaCBuZXcgdmVyc2lvbnMgKGluY2x1ZGluZyByZXZpc2lvbnMpIG9mIHRoaXMgQWdyZWVtZW50IGZyb20gdGltZSB0bwordGltZS4gTm8gb25lIG90aGVyIHRoYW4gdGhlIEFncmVlbWVudCBTdGV3YXJkIGhhcyB0aGUgcmlnaHQgdG8gbW9kaWZ5IHRoaXMKK0FncmVlbWVudC4gVGhlIEVjbGlwc2UgRm91bmRhdGlvbiBpcyB0aGUgaW5pdGlhbCBBZ3JlZW1lbnQgU3Rld2FyZC4gVGhlCitFY2xpcHNlIEZvdW5kYXRpb24gbWF5IGFzc2lnbiB0aGUgcmVzcG9uc2liaWxpdHkgdG8gc2VydmUgYXMgdGhlIEFncmVlbWVudAorU3Rld2FyZCB0byBhIHN1aXRhYmxlIHNlcGFyYXRlIGVudGl0eS4gRWFjaCBuZXcgdmVyc2lvbiBvZiB0aGUgQWdyZWVtZW50IHdpbGwKK2JlIGdpdmVuIGEgZGlzdGluZ3Vpc2hpbmcgdmVyc2lvbiBudW1iZXIuIFRoZSBQcm9ncmFtIChpbmNsdWRpbmcKK0NvbnRyaWJ1dGlvbnMpIG1heSBhbHdheXMgYmUgZGlzdHJpYnV0ZWQgc3ViamVjdCB0byB0aGUgdmVyc2lvbiBvZiB0aGUKK0FncmVlbWVudCB1bmRlciB3aGljaCBpdCB3YXMgcmVjZWl2ZWQuIEluIGFkZGl0aW9uLCBhZnRlciBhIG5ldyB2ZXJzaW9uIG9mIHRoZQorQWdyZWVtZW50IGlzIHB1Ymxpc2hlZCwgQ29udHJpYnV0b3IgbWF5IGVsZWN0IHRvIGRpc3RyaWJ1dGUgdGhlIFByb2dyYW0KKyhpbmNsdWRpbmcgaXRzIENvbnRyaWJ1dGlvbnMpIHVuZGVyIHRoZSBuZXcgdmVyc2lvbi4gRXhjZXB0IGFzIGV4cHJlc3NseQorc3RhdGVkIGluIFNlY3Rpb25zIDIoYSkgYW5kIDIoYikgYWJvdmUsIFJlY2lwaWVudCByZWNlaXZlcyBubyByaWdodHMgb3IKK2xpY2Vuc2VzIHRvIHRoZSBpbnRlbGxlY3R1YWwgcHJvcGVydHkgb2YgYW55IENvbnRyaWJ1dG9yIHVuZGVyIHRoaXMgQWdyZWVtZW50LAord2hldGhlciBleHByZXNzbHksIGJ5IGltcGxpY2F0aW9uLCBlc3RvcHBlbCBvciBvdGhlcndpc2UuIEFsbCByaWdodHMgaW4gdGhlCitQcm9ncmFtIG5vdCBleHByZXNzbHkgZ3JhbnRlZCB1bmRlciB0aGlzIEFncmVlbWVudCBhcmUgcmVzZXJ2ZWQuCisKK1RoaXMgQWdyZWVtZW50IGlzIGdvdmVybmVkIGJ5IHRoZSBsYXdzIG9mIHRoZSBTdGF0ZSBvZiBOZXcgWW9yayBhbmQgdGhlCitpbnRlbGxlY3R1YWwgcHJvcGVydHkgbGF3cyBvZiB0aGUgVW5pdGVkIFN0YXRlcyBvZiBBbWVyaWNhLiBObyBwYXJ0eSB0byB0aGlzCitBZ3JlZW1lbnQgd2lsbCBicmluZyBhIGxlZ2FsIGFjdGlvbiB1bmRlciB0aGlzIEFncmVlbWVudCBtb3JlIHRoYW4gb25lIHllYXIKK2FmdGVyIHRoZSBjYXVzZSBvZiBhY3Rpb24gYXJvc2UuIEVhY2ggcGFydHkgd2FpdmVzIGl0cyByaWdodHMgdG8gYSBqdXJ5IHRyaWFsIGluCithbnkgcmVzdWx0aW5nIGxpdGlnYXRpb24uCmRpZmYgLS1naXQgYS9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5lZGl0Ly5jbGFzc3BhdGggYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5lZGl0Ly5jbGFzc3BhdGgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTQ1YWE5MQotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmVkaXQvLmNsYXNzcGF0aApAQCAtMCwwICsxLDggQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+DQorPGNsYXNzcGF0aD4NCisJPGNsYXNzcGF0aGVudHJ5IGtpbmQ9InNyYyIgcGF0aD0ic3JjLWdlbiIvPg0KKwk8Y2xhc3NwYXRoZW50cnkga2luZD0ic3JjIiBwYXRoPSJzcmMiLz4NCisJPGNsYXNzcGF0aGVudHJ5IGtpbmQ9ImNvbiIgcGF0aD0ib3JnLmVjbGlwc2UuamR0LmxhdW5jaGluZy5KUkVfQ09OVEFJTkVSL29yZy5lY2xpcHNlLmpkdC5pbnRlcm5hbC5kZWJ1Zy51aS5sYXVuY2hlci5TdGFuZGFyZFZNVHlwZS9KYXZhU0UtMS43Ii8+DQorCTxjbGFzc3BhdGhlbnRyeSBraW5kPSJjb24iIHBhdGg9Im9yZy5lY2xpcHNlLnBkZS5jb3JlLnJlcXVpcmVkUGx1Z2lucyIvPg0KKwk8Y2xhc3NwYXRoZW50cnkga2luZD0ib3V0cHV0IiBwYXRoPSJiaW4iLz4NCis8L2NsYXNzcGF0aD4NCmRpZmYgLS1naXQgYS9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5lZGl0Ly5wcm9qZWN0IGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZWRpdC8ucHJvamVjdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44M2VhYTZkCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZWRpdC8ucHJvamVjdApAQCAtMCwwICsxLDI4IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/Pg0KKzxwcm9qZWN0RGVzY3JpcHRpb24+DQorCTxuYW1lPm9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5lZGl0PC9uYW1lPg0KKwk8Y29tbWVudD48L2NvbW1lbnQ+DQorCTxwcm9qZWN0cz4NCisJPC9wcm9qZWN0cz4NCisJPGJ1aWxkU3BlYz4NCisJCTxidWlsZENvbW1hbmQ+DQorCQkJPG5hbWU+b3JnLmVjbGlwc2UuamR0LmNvcmUuamF2YWJ1aWxkZXI8L25hbWU+DQorCQkJPGFyZ3VtZW50cz4NCisJCQk8L2FyZ3VtZW50cz4NCisJCTwvYnVpbGRDb21tYW5kPg0KKwkJPGJ1aWxkQ29tbWFuZD4NCisJCQk8bmFtZT5vcmcuZWNsaXBzZS5wZGUuTWFuaWZlc3RCdWlsZGVyPC9uYW1lPg0KKwkJCTxhcmd1bWVudHM+DQorCQkJPC9hcmd1bWVudHM+DQorCQk8L2J1aWxkQ29tbWFuZD4NCisJCTxidWlsZENvbW1hbmQ+DQorCQkJPG5hbWU+b3JnLmVjbGlwc2UucGRlLlNjaGVtYUJ1aWxkZXI8L25hbWU+DQorCQkJPGFyZ3VtZW50cz4NCisJCQk8L2FyZ3VtZW50cz4NCisJCTwvYnVpbGRDb21tYW5kPg0KKwk8L2J1aWxkU3BlYz4NCisJPG5hdHVyZXM+DQorCQk8bmF0dXJlPm9yZy5lY2xpcHNlLmpkdC5jb3JlLmphdmFuYXR1cmU8L25hdHVyZT4NCisJCTxuYXR1cmU+b3JnLmVjbGlwc2UucGRlLlBsdWdpbk5hdHVyZTwvbmF0dXJlPg0KKwk8L25hdHVyZXM+DQorPC9wcm9qZWN0RGVzY3JpcHRpb24+DQpkaWZmIC0tZ2l0IGEvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZWRpdC8uc2V0dGluZ3Mvb3JnLmVjbGlwc2UuamR0LmNvcmUucHJlZnMgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5lZGl0Ly5zZXR0aW5ncy9vcmcuZWNsaXBzZS5qZHQuY29yZS5wcmVmcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMDljYmU3Ci0tLSAvZGV2L251bGwKKysrIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZWRpdC8uc2V0dGluZ3Mvb3JnLmVjbGlwc2UuamR0LmNvcmUucHJlZnMKQEAgLTAsMCArMSwyODggQEAKK2VjbGlwc2UucHJlZmVyZW5jZXMudmVyc2lvbj0xDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIuY29kZWdlbi5pbmxpbmVKc3JCeXRlY29kZT1lbmFibGVkDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5hc3NlcnRJZGVudGlmaWVyPWVycm9yDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5lbnVtSWRlbnRpZmllcj1lcnJvcg0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5hbGlnbl90eXBlX21lbWJlcnNfb25fY29sdW1ucz1mYWxzZQ0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5hbGlnbm1lbnRfZm9yX2FyZ3VtZW50c19pbl9hbGxvY2F0aW9uX2V4cHJlc3Npb249MTYNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuYWxpZ25tZW50X2Zvcl9hcmd1bWVudHNfaW5fYW5ub3RhdGlvbj0wDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmFsaWdubWVudF9mb3JfYXJndW1lbnRzX2luX2VudW1fY29uc3RhbnQ9MTYNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuYWxpZ25tZW50X2Zvcl9hcmd1bWVudHNfaW5fZXhwbGljaXRfY29uc3RydWN0b3JfY2FsbD0xNg0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5hbGlnbm1lbnRfZm9yX2FyZ3VtZW50c19pbl9tZXRob2RfaW52b2NhdGlvbj0xNg0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5hbGlnbm1lbnRfZm9yX2FyZ3VtZW50c19pbl9xdWFsaWZpZWRfYWxsb2NhdGlvbl9leHByZXNzaW9uPTE2DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmFsaWdubWVudF9mb3JfYXNzaWdubWVudD0wDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmFsaWdubWVudF9mb3JfYmluYXJ5X2V4cHJlc3Npb249MTYNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuYWxpZ25tZW50X2Zvcl9jb21wYWN0X2lmPTE2DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmFsaWdubWVudF9mb3JfY29uZGl0aW9uYWxfZXhwcmVzc2lvbj04MA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5hbGlnbm1lbnRfZm9yX2VudW1fY29uc3RhbnRzPTANCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuYWxpZ25tZW50X2Zvcl9leHByZXNzaW9uc19pbl9hcnJheV9pbml0aWFsaXplcj0xNg0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5hbGlnbm1lbnRfZm9yX21ldGhvZF9kZWNsYXJhdGlvbj0wDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmFsaWdubWVudF9mb3JfbXVsdGlwbGVfZmllbGRzPTE2DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmFsaWdubWVudF9mb3JfcGFyYW1ldGVyc19pbl9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbj0xNg0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5hbGlnbm1lbnRfZm9yX3BhcmFtZXRlcnNfaW5fbWV0aG9kX2RlY2xhcmF0aW9uPTE2DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmFsaWdubWVudF9mb3JfcmVzb3VyY2VzX2luX3RyeT04MA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5hbGlnbm1lbnRfZm9yX3NlbGVjdG9yX2luX21ldGhvZF9pbnZvY2F0aW9uPTE2DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmFsaWdubWVudF9mb3Jfc3VwZXJjbGFzc19pbl90eXBlX2RlY2xhcmF0aW9uPTE2DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmFsaWdubWVudF9mb3Jfc3VwZXJpbnRlcmZhY2VzX2luX2VudW1fZGVjbGFyYXRpb249MTYNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuYWxpZ25tZW50X2Zvcl9zdXBlcmludGVyZmFjZXNfaW5fdHlwZV9kZWNsYXJhdGlvbj0xNg0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5hbGlnbm1lbnRfZm9yX3Rocm93c19jbGF1c2VfaW5fY29uc3RydWN0b3JfZGVjbGFyYXRpb249MTYNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuYWxpZ25tZW50X2Zvcl90aHJvd3NfY2xhdXNlX2luX21ldGhvZF9kZWNsYXJhdGlvbj0xNg0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5hbGlnbm1lbnRfZm9yX3VuaW9uX3R5cGVfaW5fbXVsdGljYXRjaD0xNg0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5ibGFua19saW5lc19hZnRlcl9pbXBvcnRzPTENCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuYmxhbmtfbGluZXNfYWZ0ZXJfcGFja2FnZT0xDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmJsYW5rX2xpbmVzX2JlZm9yZV9maWVsZD0wDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmJsYW5rX2xpbmVzX2JlZm9yZV9maXJzdF9jbGFzc19ib2R5X2RlY2xhcmF0aW9uPTANCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuYmxhbmtfbGluZXNfYmVmb3JlX2ltcG9ydHM9MQ0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5ibGFua19saW5lc19iZWZvcmVfbWVtYmVyX3R5cGU9MQ0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5ibGFua19saW5lc19iZWZvcmVfbWV0aG9kPTENCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuYmxhbmtfbGluZXNfYmVmb3JlX25ld19jaHVuaz0xDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmJsYW5rX2xpbmVzX2JlZm9yZV9wYWNrYWdlPTANCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuYmxhbmtfbGluZXNfYmV0d2Vlbl9pbXBvcnRfZ3JvdXBzPTENCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuYmxhbmtfbGluZXNfYmV0d2Vlbl90eXBlX2RlY2xhcmF0aW9ucz0xDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmJyYWNlX3Bvc2l0aW9uX2Zvcl9hbm5vdGF0aW9uX3R5cGVfZGVjbGFyYXRpb249ZW5kX29mX2xpbmUNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuYnJhY2VfcG9zaXRpb25fZm9yX2Fub255bW91c190eXBlX2RlY2xhcmF0aW9uPWVuZF9vZl9saW5lDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmJyYWNlX3Bvc2l0aW9uX2Zvcl9hcnJheV9pbml0aWFsaXplcj1lbmRfb2ZfbGluZQ0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5icmFjZV9wb3NpdGlvbl9mb3JfYmxvY2s9ZW5kX29mX2xpbmUNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuYnJhY2VfcG9zaXRpb25fZm9yX2Jsb2NrX2luX2Nhc2U9ZW5kX29mX2xpbmUNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuYnJhY2VfcG9zaXRpb25fZm9yX2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uPWVuZF9vZl9saW5lDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmJyYWNlX3Bvc2l0aW9uX2Zvcl9lbnVtX2NvbnN0YW50PWVuZF9vZl9saW5lDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmJyYWNlX3Bvc2l0aW9uX2Zvcl9lbnVtX2RlY2xhcmF0aW9uPWVuZF9vZl9saW5lDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmJyYWNlX3Bvc2l0aW9uX2Zvcl9sYW1iZGFfYm9keT1lbmRfb2ZfbGluZQ0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5icmFjZV9wb3NpdGlvbl9mb3JfbWV0aG9kX2RlY2xhcmF0aW9uPWVuZF9vZl9saW5lDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmJyYWNlX3Bvc2l0aW9uX2Zvcl9zd2l0Y2g9ZW5kX29mX2xpbmUNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuYnJhY2VfcG9zaXRpb25fZm9yX3R5cGVfZGVjbGFyYXRpb249ZW5kX29mX2xpbmUNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuY29tbWVudC5jbGVhcl9ibGFua19saW5lc19pbl9ibG9ja19jb21tZW50PWZhbHNlDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmNvbW1lbnQuY2xlYXJfYmxhbmtfbGluZXNfaW5famF2YWRvY19jb21tZW50PWZhbHNlDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmNvbW1lbnQuZm9ybWF0X2Jsb2NrX2NvbW1lbnRzPXRydWUNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuY29tbWVudC5mb3JtYXRfaGVhZGVyPWZhbHNlDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmNvbW1lbnQuZm9ybWF0X2h0bWw9dHJ1ZQ0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5jb21tZW50LmZvcm1hdF9qYXZhZG9jX2NvbW1lbnRzPXRydWUNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuY29tbWVudC5mb3JtYXRfbGluZV9jb21tZW50cz10cnVlDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmNvbW1lbnQuZm9ybWF0X3NvdXJjZV9jb2RlPXRydWUNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuY29tbWVudC5pbmRlbnRfcGFyYW1ldGVyX2Rlc2NyaXB0aW9uPXRydWUNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuY29tbWVudC5pbmRlbnRfcm9vdF90YWdzPXRydWUNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuY29tbWVudC5pbnNlcnRfbmV3X2xpbmVfYmVmb3JlX3Jvb3RfdGFncz1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuY29tbWVudC5pbnNlcnRfbmV3X2xpbmVfZm9yX3BhcmFtZXRlcj1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuY29tbWVudC5saW5lX2xlbmd0aD0yNjANCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuY29tbWVudC5uZXdfbGluZXNfYXRfYmxvY2tfYm91bmRhcmllcz10cnVlDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmNvbW1lbnQubmV3X2xpbmVzX2F0X2phdmFkb2NfYm91bmRhcmllcz10cnVlDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmNvbW1lbnQucHJlc2VydmVfd2hpdGVfc3BhY2VfYmV0d2Vlbl9jb2RlX2FuZF9saW5lX2NvbW1lbnRzPWZhbHNlDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmNvbXBhY3RfZWxzZV9pZj10cnVlDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmNvbnRpbnVhdGlvbl9pbmRlbnRhdGlvbj0yDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmNvbnRpbnVhdGlvbl9pbmRlbnRhdGlvbl9mb3JfYXJyYXlfaW5pdGlhbGl6ZXI9Mg0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5kaXNhYmxpbmdfdGFnPUBmb3JtYXR0ZXJcOm9mZg0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5lbmFibGluZ190YWc9QGZvcm1hdHRlclw6b24NCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuZm9ybWF0X2d1YXJkaWFuX2NsYXVzZV9vbl9vbmVfbGluZT1mYWxzZQ0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5mb3JtYXRfbGluZV9jb21tZW50X3N0YXJ0aW5nX29uX2ZpcnN0X2NvbHVtbj10cnVlDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluZGVudF9ib2R5X2RlY2xhcmF0aW9uc19jb21wYXJlX3RvX2Fubm90YXRpb25fZGVjbGFyYXRpb25faGVhZGVyPXRydWUNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5kZW50X2JvZHlfZGVjbGFyYXRpb25zX2NvbXBhcmVfdG9fZW51bV9jb25zdGFudF9oZWFkZXI9dHJ1ZQ0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbmRlbnRfYm9keV9kZWNsYXJhdGlvbnNfY29tcGFyZV90b19lbnVtX2RlY2xhcmF0aW9uX2hlYWRlcj10cnVlDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluZGVudF9ib2R5X2RlY2xhcmF0aW9uc19jb21wYXJlX3RvX3R5cGVfaGVhZGVyPXRydWUNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5kZW50X2JyZWFrc19jb21wYXJlX3RvX2Nhc2VzPXRydWUNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5kZW50X2VtcHR5X2xpbmVzPWZhbHNlDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluZGVudF9zdGF0ZW1lbnRzX2NvbXBhcmVfdG9fYmxvY2s9dHJ1ZQ0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbmRlbnRfc3RhdGVtZW50c19jb21wYXJlX3RvX2JvZHk9dHJ1ZQ0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbmRlbnRfc3dpdGNoc3RhdGVtZW50c19jb21wYXJlX3RvX2Nhc2VzPXRydWUNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5kZW50X3N3aXRjaHN0YXRlbWVudHNfY29tcGFyZV90b19zd2l0Y2g9ZmFsc2UNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5kZW50YXRpb24uc2l6ZT00DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9uZXdfbGluZV9hZnRlcl9hbm5vdGF0aW9uX29uX2ZpZWxkPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfbmV3X2xpbmVfYWZ0ZXJfYW5ub3RhdGlvbl9vbl9sb2NhbF92YXJpYWJsZT1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X25ld19saW5lX2FmdGVyX2Fubm90YXRpb25fb25fbWV0aG9kPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfbmV3X2xpbmVfYWZ0ZXJfYW5ub3RhdGlvbl9vbl9wYWNrYWdlPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfbmV3X2xpbmVfYWZ0ZXJfYW5ub3RhdGlvbl9vbl9wYXJhbWV0ZXI9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfbmV3X2xpbmVfYWZ0ZXJfYW5ub3RhdGlvbl9vbl90eXBlPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfbmV3X2xpbmVfYWZ0ZXJfbGFiZWw9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfbmV3X2xpbmVfYWZ0ZXJfb3BlbmluZ19icmFjZV9pbl9hcnJheV9pbml0aWFsaXplcj1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9uZXdfbGluZV9hZnRlcl90eXBlX2Fubm90YXRpb249ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfbmV3X2xpbmVfYXRfZW5kX29mX2ZpbGVfaWZfbWlzc2luZz1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9uZXdfbGluZV9iZWZvcmVfY2F0Y2hfaW5fdHJ5X3N0YXRlbWVudD1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9uZXdfbGluZV9iZWZvcmVfY2xvc2luZ19icmFjZV9pbl9hcnJheV9pbml0aWFsaXplcj1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9uZXdfbGluZV9iZWZvcmVfZWxzZV9pbl9pZl9zdGF0ZW1lbnQ9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfbmV3X2xpbmVfYmVmb3JlX2ZpbmFsbHlfaW5fdHJ5X3N0YXRlbWVudD1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9uZXdfbGluZV9iZWZvcmVfd2hpbGVfaW5fZG9fc3RhdGVtZW50PWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X25ld19saW5lX2luX2VtcHR5X2Fubm90YXRpb25fZGVjbGFyYXRpb249aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9uZXdfbGluZV9pbl9lbXB0eV9hbm9ueW1vdXNfdHlwZV9kZWNsYXJhdGlvbj1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X25ld19saW5lX2luX2VtcHR5X2Jsb2NrPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfbmV3X2xpbmVfaW5fZW1wdHlfZW51bV9jb25zdGFudD1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X25ld19saW5lX2luX2VtcHR5X2VudW1fZGVjbGFyYXRpb249aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9uZXdfbGluZV9pbl9lbXB0eV9tZXRob2RfYm9keT1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X25ld19saW5lX2luX2VtcHR5X3R5cGVfZGVjbGFyYXRpb249aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9hbmRfaW5fdHlwZV9wYXJhbWV0ZXI9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9hc3NpZ25tZW50X29wZXJhdG9yPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfYXRfaW5fYW5ub3RhdGlvbj1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9hdF9pbl9hbm5vdGF0aW9uX3R5cGVfZGVjbGFyYXRpb249ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfYmluYXJ5X29wZXJhdG9yPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfY2xvc2luZ19hbmdsZV9icmFja2V0X2luX3R5cGVfYXJndW1lbnRzPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfY2xvc2luZ19hbmdsZV9icmFja2V0X2luX3R5cGVfcGFyYW1ldGVycz1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX2Nsb3NpbmdfYnJhY2VfaW5fYmxvY2s9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9jbG9zaW5nX3BhcmVuX2luX2Nhc3Q9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9jb2xvbl9pbl9hc3NlcnQ9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9jb2xvbl9pbl9jYXNlPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfY29sb25faW5fY29uZGl0aW9uYWw9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9jb2xvbl9pbl9mb3I9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9jb2xvbl9pbl9sYWJlbGVkX3N0YXRlbWVudD1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX2NvbW1hX2luX2FsbG9jYXRpb25fZXhwcmVzc2lvbj1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX2NvbW1hX2luX2Fubm90YXRpb249aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9jb21tYV9pbl9hcnJheV9pbml0aWFsaXplcj1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX2NvbW1hX2luX2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uX3BhcmFtZXRlcnM9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9jb21tYV9pbl9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbl90aHJvd3M9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9jb21tYV9pbl9lbnVtX2NvbnN0YW50X2FyZ3VtZW50cz1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX2NvbW1hX2luX2VudW1fZGVjbGFyYXRpb25zPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfY29tbWFfaW5fZXhwbGljaXRjb25zdHJ1Y3RvcmNhbGxfYXJndW1lbnRzPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfY29tbWFfaW5fZm9yX2luY3JlbWVudHM9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9jb21tYV9pbl9mb3JfaW5pdHM9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9jb21tYV9pbl9tZXRob2RfZGVjbGFyYXRpb25fcGFyYW1ldGVycz1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX2NvbW1hX2luX21ldGhvZF9kZWNsYXJhdGlvbl90aHJvd3M9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9jb21tYV9pbl9tZXRob2RfaW52b2NhdGlvbl9hcmd1bWVudHM9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9jb21tYV9pbl9tdWx0aXBsZV9maWVsZF9kZWNsYXJhdGlvbnM9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9jb21tYV9pbl9tdWx0aXBsZV9sb2NhbF9kZWNsYXJhdGlvbnM9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9jb21tYV9pbl9wYXJhbWV0ZXJpemVkX3R5cGVfcmVmZXJlbmNlPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfY29tbWFfaW5fc3VwZXJpbnRlcmZhY2VzPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfY29tbWFfaW5fdHlwZV9hcmd1bWVudHM9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9jb21tYV9pbl90eXBlX3BhcmFtZXRlcnM9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9lbGxpcHNpcz1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX2xhbWJkYV9hcnJvdz1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX29wZW5pbmdfYW5nbGVfYnJhY2tldF9pbl9wYXJhbWV0ZXJpemVkX3R5cGVfcmVmZXJlbmNlPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX29wZW5pbmdfYW5nbGVfYnJhY2tldF9pbl90eXBlX2FyZ3VtZW50cz1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9vcGVuaW5nX2FuZ2xlX2JyYWNrZXRfaW5fdHlwZV9wYXJhbWV0ZXJzPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX29wZW5pbmdfYnJhY2VfaW5fYXJyYXlfaW5pdGlhbGl6ZXI9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9vcGVuaW5nX2JyYWNrZXRfaW5fYXJyYXlfYWxsb2NhdGlvbl9leHByZXNzaW9uPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX29wZW5pbmdfYnJhY2tldF9pbl9hcnJheV9yZWZlcmVuY2U9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfb3BlbmluZ19wYXJlbl9pbl9hbm5vdGF0aW9uPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX29wZW5pbmdfcGFyZW5faW5fY2FzdD1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9vcGVuaW5nX3BhcmVuX2luX2NhdGNoPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX29wZW5pbmdfcGFyZW5faW5fY29uc3RydWN0b3JfZGVjbGFyYXRpb249ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfb3BlbmluZ19wYXJlbl9pbl9lbnVtX2NvbnN0YW50PWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX29wZW5pbmdfcGFyZW5faW5fZm9yPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX29wZW5pbmdfcGFyZW5faW5faWY9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfb3BlbmluZ19wYXJlbl9pbl9tZXRob2RfZGVjbGFyYXRpb249ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfb3BlbmluZ19wYXJlbl9pbl9tZXRob2RfaW52b2NhdGlvbj1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9vcGVuaW5nX3BhcmVuX2luX3BhcmVudGhlc2l6ZWRfZXhwcmVzc2lvbj1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9vcGVuaW5nX3BhcmVuX2luX3N3aXRjaD1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9vcGVuaW5nX3BhcmVuX2luX3N5bmNocm9uaXplZD1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9vcGVuaW5nX3BhcmVuX2luX3RyeT1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9vcGVuaW5nX3BhcmVuX2luX3doaWxlPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX3Bvc3RmaXhfb3BlcmF0b3I9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfcHJlZml4X29wZXJhdG9yPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX3F1ZXN0aW9uX2luX2NvbmRpdGlvbmFsPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfcXVlc3Rpb25faW5fd2lsZGNhcmQ9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfc2VtaWNvbG9uX2luX2Zvcj1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX3NlbWljb2xvbl9pbl90cnlfcmVzb3VyY2VzPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfdW5hcnlfb3BlcmF0b3I9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2FuZF9pbl90eXBlX3BhcmFtZXRlcj1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9hc3NpZ25tZW50X29wZXJhdG9yPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2F0X2luX2Fubm90YXRpb25fdHlwZV9kZWNsYXJhdGlvbj1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9iaW5hcnlfb3BlcmF0b3I9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfY2xvc2luZ19hbmdsZV9icmFja2V0X2luX3BhcmFtZXRlcml6ZWRfdHlwZV9yZWZlcmVuY2U9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2Nsb3NpbmdfYW5nbGVfYnJhY2tldF9pbl90eXBlX2FyZ3VtZW50cz1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfY2xvc2luZ19hbmdsZV9icmFja2V0X2luX3R5cGVfcGFyYW1ldGVycz1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfY2xvc2luZ19icmFjZV9pbl9hcnJheV9pbml0aWFsaXplcj1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9jbG9zaW5nX2JyYWNrZXRfaW5fYXJyYXlfYWxsb2NhdGlvbl9leHByZXNzaW9uPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9jbG9zaW5nX2JyYWNrZXRfaW5fYXJyYXlfcmVmZXJlbmNlPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9jbG9zaW5nX3BhcmVuX2luX2Fubm90YXRpb249ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2Nsb3NpbmdfcGFyZW5faW5fY2FzdD1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfY2xvc2luZ19wYXJlbl9pbl9jYXRjaD1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfY2xvc2luZ19wYXJlbl9pbl9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbj1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfY2xvc2luZ19wYXJlbl9pbl9lbnVtX2NvbnN0YW50PWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9jbG9zaW5nX3BhcmVuX2luX2Zvcj1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfY2xvc2luZ19wYXJlbl9pbl9pZj1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfY2xvc2luZ19wYXJlbl9pbl9tZXRob2RfZGVjbGFyYXRpb249ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2Nsb3NpbmdfcGFyZW5faW5fbWV0aG9kX2ludm9jYXRpb249ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2Nsb3NpbmdfcGFyZW5faW5fcGFyZW50aGVzaXplZF9leHByZXNzaW9uPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9jbG9zaW5nX3BhcmVuX2luX3N3aXRjaD1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfY2xvc2luZ19wYXJlbl9pbl9zeW5jaHJvbml6ZWQ9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2Nsb3NpbmdfcGFyZW5faW5fdHJ5PWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9jbG9zaW5nX3BhcmVuX2luX3doaWxlPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9jb2xvbl9pbl9hc3NlcnQ9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfY29sb25faW5fY2FzZT1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfY29sb25faW5fY29uZGl0aW9uYWw9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfY29sb25faW5fZGVmYXVsdD1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfY29sb25faW5fZm9yPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2NvbG9uX2luX2xhYmVsZWRfc3RhdGVtZW50PWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9jb21tYV9pbl9hbGxvY2F0aW9uX2V4cHJlc3Npb249ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2NvbW1hX2luX2Fubm90YXRpb249ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2NvbW1hX2luX2FycmF5X2luaXRpYWxpemVyPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9jb21tYV9pbl9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbl9wYXJhbWV0ZXJzPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9jb21tYV9pbl9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbl90aHJvd3M9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2NvbW1hX2luX2VudW1fY29uc3RhbnRfYXJndW1lbnRzPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9jb21tYV9pbl9lbnVtX2RlY2xhcmF0aW9ucz1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfY29tbWFfaW5fZXhwbGljaXRjb25zdHJ1Y3RvcmNhbGxfYXJndW1lbnRzPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9jb21tYV9pbl9mb3JfaW5jcmVtZW50cz1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfY29tbWFfaW5fZm9yX2luaXRzPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9jb21tYV9pbl9tZXRob2RfZGVjbGFyYXRpb25fcGFyYW1ldGVycz1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfY29tbWFfaW5fbWV0aG9kX2RlY2xhcmF0aW9uX3Rocm93cz1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfY29tbWFfaW5fbWV0aG9kX2ludm9jYXRpb25fYXJndW1lbnRzPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9jb21tYV9pbl9tdWx0aXBsZV9maWVsZF9kZWNsYXJhdGlvbnM9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2NvbW1hX2luX211bHRpcGxlX2xvY2FsX2RlY2xhcmF0aW9ucz1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfY29tbWFfaW5fcGFyYW1ldGVyaXplZF90eXBlX3JlZmVyZW5jZT1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfY29tbWFfaW5fc3VwZXJpbnRlcmZhY2VzPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9jb21tYV9pbl90eXBlX2FyZ3VtZW50cz1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfY29tbWFfaW5fdHlwZV9wYXJhbWV0ZXJzPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9lbGxpcHNpcz1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfbGFtYmRhX2Fycm93PWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX29wZW5pbmdfYW5nbGVfYnJhY2tldF9pbl9wYXJhbWV0ZXJpemVkX3R5cGVfcmVmZXJlbmNlPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9vcGVuaW5nX2FuZ2xlX2JyYWNrZXRfaW5fdHlwZV9hcmd1bWVudHM9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX29wZW5pbmdfYW5nbGVfYnJhY2tldF9pbl90eXBlX3BhcmFtZXRlcnM9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX29wZW5pbmdfYnJhY2VfaW5fYW5ub3RhdGlvbl90eXBlX2RlY2xhcmF0aW9uPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX29wZW5pbmdfYnJhY2VfaW5fYW5vbnltb3VzX3R5cGVfZGVjbGFyYXRpb249aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfb3BlbmluZ19icmFjZV9pbl9hcnJheV9pbml0aWFsaXplcj1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9vcGVuaW5nX2JyYWNlX2luX2Jsb2NrPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX29wZW5pbmdfYnJhY2VfaW5fY29uc3RydWN0b3JfZGVjbGFyYXRpb249aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfb3BlbmluZ19icmFjZV9pbl9lbnVtX2NvbnN0YW50PWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX29wZW5pbmdfYnJhY2VfaW5fZW51bV9kZWNsYXJhdGlvbj1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9vcGVuaW5nX2JyYWNlX2luX21ldGhvZF9kZWNsYXJhdGlvbj1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9vcGVuaW5nX2JyYWNlX2luX3N3aXRjaD1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9vcGVuaW5nX2JyYWNlX2luX3R5cGVfZGVjbGFyYXRpb249aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfb3BlbmluZ19icmFja2V0X2luX2FycmF5X2FsbG9jYXRpb25fZXhwcmVzc2lvbj1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfb3BlbmluZ19icmFja2V0X2luX2FycmF5X3JlZmVyZW5jZT1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfb3BlbmluZ19icmFja2V0X2luX2FycmF5X3R5cGVfcmVmZXJlbmNlPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9vcGVuaW5nX3BhcmVuX2luX2Fubm90YXRpb249ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX29wZW5pbmdfcGFyZW5faW5fYW5ub3RhdGlvbl90eXBlX21lbWJlcl9kZWNsYXJhdGlvbj1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfb3BlbmluZ19wYXJlbl9pbl9jYXRjaD1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9vcGVuaW5nX3BhcmVuX2luX2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9vcGVuaW5nX3BhcmVuX2luX2VudW1fY29uc3RhbnQ9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX29wZW5pbmdfcGFyZW5faW5fZm9yPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX29wZW5pbmdfcGFyZW5faW5faWY9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfb3BlbmluZ19wYXJlbl9pbl9tZXRob2RfZGVjbGFyYXRpb249ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX29wZW5pbmdfcGFyZW5faW5fbWV0aG9kX2ludm9jYXRpb249ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX29wZW5pbmdfcGFyZW5faW5fcGFyZW50aGVzaXplZF9leHByZXNzaW9uPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9vcGVuaW5nX3BhcmVuX2luX3N3aXRjaD1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9vcGVuaW5nX3BhcmVuX2luX3N5bmNocm9uaXplZD1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9vcGVuaW5nX3BhcmVuX2luX3RyeT1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9vcGVuaW5nX3BhcmVuX2luX3doaWxlPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX3BhcmVudGhlc2l6ZWRfZXhwcmVzc2lvbl9pbl9yZXR1cm49aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfcGFyZW50aGVzaXplZF9leHByZXNzaW9uX2luX3Rocm93PWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX3Bvc3RmaXhfb3BlcmF0b3I9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX3ByZWZpeF9vcGVyYXRvcj1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfcXVlc3Rpb25faW5fY29uZGl0aW9uYWw9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfcXVlc3Rpb25faW5fd2lsZGNhcmQ9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX3NlbWljb2xvbj1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfc2VtaWNvbG9uX2luX2Zvcj1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfc2VtaWNvbG9uX2luX3RyeV9yZXNvdXJjZXM9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX3VuYXJ5X29wZXJhdG9yPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JldHdlZW5fYnJhY2tldHNfaW5fYXJyYXlfdHlwZV9yZWZlcmVuY2U9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmV0d2Vlbl9lbXB0eV9icmFjZXNfaW5fYXJyYXlfaW5pdGlhbGl6ZXI9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmV0d2Vlbl9lbXB0eV9icmFja2V0c19pbl9hcnJheV9hbGxvY2F0aW9uX2V4cHJlc3Npb249ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmV0d2Vlbl9lbXB0eV9wYXJlbnNfaW5fYW5ub3RhdGlvbl90eXBlX21lbWJlcl9kZWNsYXJhdGlvbj1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZXR3ZWVuX2VtcHR5X3BhcmVuc19pbl9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbj1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZXR3ZWVuX2VtcHR5X3BhcmVuc19pbl9lbnVtX2NvbnN0YW50PWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JldHdlZW5fZW1wdHlfcGFyZW5zX2luX21ldGhvZF9kZWNsYXJhdGlvbj1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZXR3ZWVuX2VtcHR5X3BhcmVuc19pbl9tZXRob2RfaW52b2NhdGlvbj1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmpvaW5fbGluZXNfaW5fY29tbWVudHM9ZmFsc2UNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuam9pbl93cmFwcGVkX2xpbmVzPWZhbHNlDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmtlZXBfZWxzZV9zdGF0ZW1lbnRfb25fc2FtZV9saW5lPWZhbHNlDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmtlZXBfZW1wdHlfYXJyYXlfaW5pdGlhbGl6ZXJfb25fb25lX2xpbmU9ZmFsc2UNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIua2VlcF9pbXBsZV9pZl9vbl9vbmVfbGluZT1mYWxzZQ0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5rZWVwX3RoZW5fc3RhdGVtZW50X29uX3NhbWVfbGluZT1mYWxzZQ0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5saW5lU3BsaXQ9MjYwDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLm5ldmVyX2luZGVudF9ibG9ja19jb21tZW50c19vbl9maXJzdF9jb2x1bW49ZmFsc2UNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIubmV2ZXJfaW5kZW50X2xpbmVfY29tbWVudHNfb25fZmlyc3RfY29sdW1uPWZhbHNlDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLm51bWJlcl9vZl9ibGFua19saW5lc19hdF9iZWdpbm5pbmdfb2ZfbWV0aG9kX2JvZHk9MA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5udW1iZXJfb2ZfZW1wdHlfbGluZXNfdG9fcHJlc2VydmU9NQ0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5wdXRfZW1wdHlfc3RhdGVtZW50X29uX25ld19saW5lPXRydWUNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIudGFidWxhdGlvbi5jaGFyPXRhYg0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci50YWJ1bGF0aW9uLnNpemU9NA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci51c2Vfb25fb2ZmX3RhZ3M9ZmFsc2UNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIudXNlX3RhYnNfb25seV9mb3JfbGVhZGluZ19pbmRlbnRhdGlvbnM9ZmFsc2UNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIud3JhcF9iZWZvcmVfYmluYXJ5X29wZXJhdG9yPXRydWUNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIud3JhcF9iZWZvcmVfb3Jfb3BlcmF0b3JfbXVsdGljYXRjaD10cnVlDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLndyYXBfb3V0ZXJfZXhwcmVzc2lvbnNfd2hlbl9uZXN0ZWQ9dHJ1ZQ0KZGlmZiAtLWdpdCBhL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmVkaXQvLnNldHRpbmdzL29yZy5lY2xpcHNlLmpkdC51aS5wcmVmcyBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmVkaXQvLnNldHRpbmdzL29yZy5lY2xpcHNlLmpkdC51aS5wcmVmcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMWQ3MDRiCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZWRpdC8uc2V0dGluZ3Mvb3JnLmVjbGlwc2UuamR0LnVpLnByZWZzCkBAIC0wLDAgKzEsNjggQEAKK2NsZWFudXAuYWRkX2RlZmF1bHRfc2VyaWFsX3ZlcnNpb25faWQ9dHJ1ZQ0KK2NsZWFudXAuYWRkX2dlbmVyYXRlZF9zZXJpYWxfdmVyc2lvbl9pZD1mYWxzZQ0KK2NsZWFudXAuYWRkX21pc3NpbmdfYW5ub3RhdGlvbnM9dHJ1ZQ0KK2NsZWFudXAuYWRkX21pc3NpbmdfZGVwcmVjYXRlZF9hbm5vdGF0aW9ucz10cnVlDQorY2xlYW51cC5hZGRfbWlzc2luZ19tZXRob2RzPWZhbHNlDQorY2xlYW51cC5hZGRfbWlzc2luZ19ubHNfdGFncz1mYWxzZQ0KK2NsZWFudXAuYWRkX21pc3Npbmdfb3ZlcnJpZGVfYW5ub3RhdGlvbnM9dHJ1ZQ0KK2NsZWFudXAuYWRkX21pc3Npbmdfb3ZlcnJpZGVfYW5ub3RhdGlvbnNfaW50ZXJmYWNlX21ldGhvZHM9dHJ1ZQ0KK2NsZWFudXAuYWRkX3NlcmlhbF92ZXJzaW9uX2lkPWZhbHNlDQorY2xlYW51cC5hbHdheXNfdXNlX2Jsb2Nrcz10cnVlDQorY2xlYW51cC5hbHdheXNfdXNlX3BhcmVudGhlc2VzX2luX2V4cHJlc3Npb25zPWZhbHNlDQorY2xlYW51cC5hbHdheXNfdXNlX3RoaXNfZm9yX25vbl9zdGF0aWNfZmllbGRfYWNjZXNzPWZhbHNlDQorY2xlYW51cC5hbHdheXNfdXNlX3RoaXNfZm9yX25vbl9zdGF0aWNfbWV0aG9kX2FjY2Vzcz1mYWxzZQ0KK2NsZWFudXAuY29udmVydF9mdW5jdGlvbmFsX2ludGVyZmFjZXM9ZmFsc2UNCitjbGVhbnVwLmNvbnZlcnRfdG9fZW5oYW5jZWRfZm9yX2xvb3A9ZmFsc2UNCitjbGVhbnVwLmNvcnJlY3RfaW5kZW50YXRpb249ZmFsc2UNCitjbGVhbnVwLmZvcm1hdF9zb3VyY2VfY29kZT1mYWxzZQ0KK2NsZWFudXAuZm9ybWF0X3NvdXJjZV9jb2RlX2NoYW5nZXNfb25seT1mYWxzZQ0KK2NsZWFudXAuaW5zZXJ0X2luZmVycmVkX3R5cGVfYXJndW1lbnRzPWZhbHNlDQorY2xlYW51cC5tYWtlX2xvY2FsX3ZhcmlhYmxlX2ZpbmFsPXRydWUNCitjbGVhbnVwLm1ha2VfcGFyYW1ldGVyc19maW5hbD1mYWxzZQ0KK2NsZWFudXAubWFrZV9wcml2YXRlX2ZpZWxkc19maW5hbD10cnVlDQorY2xlYW51cC5tYWtlX3R5cGVfYWJzdHJhY3RfaWZfbWlzc2luZ19tZXRob2Q9ZmFsc2UNCitjbGVhbnVwLm1ha2VfdmFyaWFibGVfZGVjbGFyYXRpb25zX2ZpbmFsPWZhbHNlDQorY2xlYW51cC5uZXZlcl91c2VfYmxvY2tzPWZhbHNlDQorY2xlYW51cC5uZXZlcl91c2VfcGFyZW50aGVzZXNfaW5fZXhwcmVzc2lvbnM9dHJ1ZQ0KK2NsZWFudXAub3JnYW5pemVfaW1wb3J0cz1mYWxzZQ0KK2NsZWFudXAucXVhbGlmeV9zdGF0aWNfZmllbGRfYWNjZXNzZXNfd2l0aF9kZWNsYXJpbmdfY2xhc3M9ZmFsc2UNCitjbGVhbnVwLnF1YWxpZnlfc3RhdGljX21lbWJlcl9hY2Nlc3Nlc190aHJvdWdoX2luc3RhbmNlc193aXRoX2RlY2xhcmluZ19jbGFzcz10cnVlDQorY2xlYW51cC5xdWFsaWZ5X3N0YXRpY19tZW1iZXJfYWNjZXNzZXNfdGhyb3VnaF9zdWJ0eXBlc193aXRoX2RlY2xhcmluZ19jbGFzcz10cnVlDQorY2xlYW51cC5xdWFsaWZ5X3N0YXRpY19tZW1iZXJfYWNjZXNzZXNfd2l0aF9kZWNsYXJpbmdfY2xhc3M9dHJ1ZQ0KK2NsZWFudXAucXVhbGlmeV9zdGF0aWNfbWV0aG9kX2FjY2Vzc2VzX3dpdGhfZGVjbGFyaW5nX2NsYXNzPWZhbHNlDQorY2xlYW51cC5yZW1vdmVfcHJpdmF0ZV9jb25zdHJ1Y3RvcnM9dHJ1ZQ0KK2NsZWFudXAucmVtb3ZlX3JlZHVuZGFudF90eXBlX2FyZ3VtZW50cz10cnVlDQorY2xlYW51cC5yZW1vdmVfdHJhaWxpbmdfd2hpdGVzcGFjZXM9dHJ1ZQ0KK2NsZWFudXAucmVtb3ZlX3RyYWlsaW5nX3doaXRlc3BhY2VzX2FsbD10cnVlDQorY2xlYW51cC5yZW1vdmVfdHJhaWxpbmdfd2hpdGVzcGFjZXNfaWdub3JlX2VtcHR5PWZhbHNlDQorY2xlYW51cC5yZW1vdmVfdW5uZWNlc3NhcnlfY2FzdHM9dHJ1ZQ0KK2NsZWFudXAucmVtb3ZlX3VubmVjZXNzYXJ5X25sc190YWdzPXRydWUNCitjbGVhbnVwLnJlbW92ZV91bnVzZWRfaW1wb3J0cz10cnVlDQorY2xlYW51cC5yZW1vdmVfdW51c2VkX2xvY2FsX3ZhcmlhYmxlcz1mYWxzZQ0KK2NsZWFudXAucmVtb3ZlX3VudXNlZF9wcml2YXRlX2ZpZWxkcz10cnVlDQorY2xlYW51cC5yZW1vdmVfdW51c2VkX3ByaXZhdGVfbWVtYmVycz1mYWxzZQ0KK2NsZWFudXAucmVtb3ZlX3VudXNlZF9wcml2YXRlX21ldGhvZHM9dHJ1ZQ0KK2NsZWFudXAucmVtb3ZlX3VudXNlZF9wcml2YXRlX3R5cGVzPXRydWUNCitjbGVhbnVwLnNvcnRfbWVtYmVycz1mYWxzZQ0KK2NsZWFudXAuc29ydF9tZW1iZXJzX2FsbD1mYWxzZQ0KK2NsZWFudXAudXNlX2Fub255bW91c19jbGFzc19jcmVhdGlvbj1mYWxzZQ0KK2NsZWFudXAudXNlX2Jsb2Nrcz10cnVlDQorY2xlYW51cC51c2VfYmxvY2tzX29ubHlfZm9yX3JldHVybl9hbmRfdGhyb3c9ZmFsc2UNCitjbGVhbnVwLnVzZV9sYW1iZGE9dHJ1ZQ0KK2NsZWFudXAudXNlX3BhcmVudGhlc2VzX2luX2V4cHJlc3Npb25zPWZhbHNlDQorY2xlYW51cC51c2VfdGhpc19mb3Jfbm9uX3N0YXRpY19maWVsZF9hY2Nlc3M9ZmFsc2UNCitjbGVhbnVwLnVzZV90aGlzX2Zvcl9ub25fc3RhdGljX2ZpZWxkX2FjY2Vzc19vbmx5X2lmX25lY2Vzc2FyeT10cnVlDQorY2xlYW51cC51c2VfdGhpc19mb3Jfbm9uX3N0YXRpY19tZXRob2RfYWNjZXNzPWZhbHNlDQorY2xlYW51cC51c2VfdGhpc19mb3Jfbm9uX3N0YXRpY19tZXRob2RfYWNjZXNzX29ubHlfaWZfbmVjZXNzYXJ5PXRydWUNCitjbGVhbnVwLnVzZV90eXBlX2FyZ3VtZW50cz1mYWxzZQ0KK2NsZWFudXBfcHJvZmlsZT1fUGFweXJ1cw0KK2NsZWFudXBfc2V0dGluZ3NfdmVyc2lvbj0yDQorZWNsaXBzZS5wcmVmZXJlbmNlcy52ZXJzaW9uPTENCitmb3JtYXR0ZXJfcHJvZmlsZT1fUGFweXJ1cw0KK2Zvcm1hdHRlcl9zZXR0aW5nc192ZXJzaW9uPTEyDQorb3JnLmVjbGlwc2UuamR0LnVpLmlnbm9yZWxvd2VyY2FzZW5hbWVzPXRydWUNCitvcmcuZWNsaXBzZS5qZHQudWkuaW1wb3J0b3JkZXI9amF2YTtqYXZheDtvcmc7Y29tOw0KK29yZy5lY2xpcHNlLmpkdC51aS5qYXZhZG9jPXRydWUNCitvcmcuZWNsaXBzZS5qZHQudWkub25kZW1hbmR0aHJlc2hvbGQ9OTkNCitvcmcuZWNsaXBzZS5qZHQudWkuc3RhdGljb25kZW1hbmR0aHJlc2hvbGQ9OTkNCitvcmcuZWNsaXBzZS5qZHQudWkudGV4dC5jdXN0b21fY29kZV90ZW1wbGF0ZXM9PD94bWwgdmVyc2lvblw9IjEuMCIgZW5jb2RpbmdcPSJVVEYtOCIgc3RhbmRhbG9uZVw9Im5vIj8+PHRlbXBsYXRlcz48dGVtcGxhdGUgYXV0b2luc2VydFw9InRydWUiIGNvbnRleHRcPSJnZXR0ZXJjb21tZW50X2NvbnRleHQiIGRlbGV0ZWRcPSJmYWxzZSIgZGVzY3JpcHRpb25cPSJDb21tZW50IGZvciBnZXR0ZXIgbWV0aG9kIiBlbmFibGVkXD0idHJ1ZSIgaWRcPSJvcmcuZWNsaXBzZS5qZHQudWkudGV4dC5jb2RldGVtcGxhdGVzLmdldHRlcmNvbW1lbnQiIG5hbWVcPSJnZXR0ZXJjb21tZW50Ij4vKipcbiAqIEByZXR1cm4gdGhlICR7YmFyZV9maWVsZF9uYW1lfVxuICovPC90ZW1wbGF0ZT48dGVtcGxhdGUgYXV0b2luc2VydFw9InRydWUiIGNvbnRleHRcPSJzZXR0ZXJjb21tZW50X2NvbnRleHQiIGRlbGV0ZWRcPSJmYWxzZSIgZGVzY3JpcHRpb25cPSJDb21tZW50IGZvciBzZXR0ZXIgbWV0aG9kIiBlbmFibGVkXD0idHJ1ZSIgaWRcPSJvcmcuZWNsaXBzZS5qZHQudWkudGV4dC5jb2RldGVtcGxhdGVzLnNldHRlcmNvbW1lbnQiIG5hbWVcPSJzZXR0ZXJjb21tZW50Ij4vKipcbiAqIEBwYXJhbSAke3BhcmFtfSB0aGUgJHtiYXJlX2ZpZWxkX25hbWV9IHRvIHNldFxuICovPC90ZW1wbGF0ZT48dGVtcGxhdGUgYXV0b2luc2VydFw9ImZhbHNlIiBjb250ZXh0XD0iY29uc3RydWN0b3Jjb21tZW50X2NvbnRleHQiIGRlbGV0ZWRcPSJmYWxzZSIgZGVzY3JpcHRpb25cPSJDb21tZW50IGZvciBjcmVhdGVkIGNvbnN0cnVjdG9ycyIgZW5hYmxlZFw9InRydWUiIGlkXD0ib3JnLmVjbGlwc2UuamR0LnVpLnRleHQuY29kZXRlbXBsYXRlcy5jb25zdHJ1Y3RvcmNvbW1lbnQiIG5hbWVcPSJjb25zdHJ1Y3RvcmNvbW1lbnQiPi8qKlxuICogQ29uc3RydWN0b3IuXG4gKlxuICogJHt0YWdzfVxuICovPC90ZW1wbGF0ZT48dGVtcGxhdGUgYXV0b2luc2VydFw9ImZhbHNlIiBjb250ZXh0XD0iZmlsZWNvbW1lbnRfY29udGV4dCIgZGVsZXRlZFw9ImZhbHNlIiBkZXNjcmlwdGlvblw9IkNvbW1lbnQgZm9yIGNyZWF0ZWQgSmF2YSBmaWxlcyIgZW5hYmxlZFw9InRydWUiIGlkXD0ib3JnLmVjbGlwc2UuamR0LnVpLnRleHQuY29kZXRlbXBsYXRlcy5maWxlY29tbWVudCIgbmFtZVw9ImZpbGVjb21tZW50Ij4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAqIENvcHlyaWdodCAoYykgJHt5ZWFyfSBDRUEgTElTVCBhbmQgb3RoZXJzLlxuICogXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzXG4gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjBcbiAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0XG4gKiBodHRwXDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWxcbiAqXG4gKiBDb250cmlidXRvcnNcOlxuICogICBDRUEgTElTVCAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvblxuICogICBcbiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbjwvdGVtcGxhdGU+PHRlbXBsYXRlIGF1dG9pbnNlcnRcPSJ0cnVlIiBjb250ZXh0XD0idHlwZWNvbW1lbnRfY29udGV4dCIgZGVsZXRlZFw9ImZhbHNlIiBkZXNjcmlwdGlvblw9IkNvbW1lbnQgZm9yIGNyZWF0ZWQgdHlwZXMiIGVuYWJsZWRcPSJ0cnVlIiBpZFw9Im9yZy5lY2xpcHNlLmpkdC51aS50ZXh0LmNvZGV0ZW1wbGF0ZXMudHlwZWNvbW1lbnQiIG5hbWVcPSJ0eXBlY29tbWVudCI+LyoqXG4gKiBAYXV0aG9yICR7dXNlcn1cbiAqXG4gKiAke3RhZ3N9XG4gKi88L3RlbXBsYXRlPjx0ZW1wbGF0ZSBhdXRvaW5zZXJ0XD0idHJ1ZSIgY29udGV4dFw9ImZpZWxkY29tbWVudF9jb250ZXh0IiBkZWxldGVkXD0iZmFsc2UiIGRlc2NyaXB0aW9uXD0iQ29tbWVudCBmb3IgZmllbGRzIiBlbmFibGVkXD0idHJ1ZSIgaWRcPSJvcmcuZWNsaXBzZS5qZHQudWkudGV4dC5jb2RldGVtcGxhdGVzLmZpZWxkY29tbWVudCIgbmFtZVw9ImZpZWxkY29tbWVudCI+LyoqXG4gKiBcbiAqLzwvdGVtcGxhdGU+PHRlbXBsYXRlIGF1dG9pbnNlcnRcPSJ0cnVlIiBjb250ZXh0XD0ibWV0aG9kY29tbWVudF9jb250ZXh0IiBkZWxldGVkXD0iZmFsc2UiIGRlc2NyaXB0aW9uXD0iQ29tbWVudCBmb3Igbm9uLW92ZXJyaWRpbmcgbWV0aG9kcyIgZW5hYmxlZFw9InRydWUiIGlkXD0ib3JnLmVjbGlwc2UuamR0LnVpLnRleHQuY29kZXRlbXBsYXRlcy5tZXRob2Rjb21tZW50IiBuYW1lXD0ibWV0aG9kY29tbWVudCI+LyoqXG4gKiAke3RhZ3N9XG4gKi88L3RlbXBsYXRlPjx0ZW1wbGF0ZSBhdXRvaW5zZXJ0XD0iZmFsc2UiIGNvbnRleHRcPSJvdmVycmlkZWNvbW1lbnRfY29udGV4dCIgZGVsZXRlZFw9ImZhbHNlIiBkZXNjcmlwdGlvblw9IkNvbW1lbnQgZm9yIG92ZXJyaWRpbmcgbWV0aG9kcyIgZW5hYmxlZFw9InRydWUiIGlkXD0ib3JnLmVjbGlwc2UuamR0LnVpLnRleHQuY29kZXRlbXBsYXRlcy5vdmVycmlkZWNvbW1lbnQiIG5hbWVcPSJvdmVycmlkZWNvbW1lbnQiPi8qKlxuICogJHtzZWVfdG9fb3ZlcnJpZGRlbn1cbiAqXG4gKiAke3RhZ3N9XG4gKi88L3RlbXBsYXRlPjx0ZW1wbGF0ZSBhdXRvaW5zZXJ0XD0iZmFsc2UiIGNvbnRleHRcPSJkZWxlZ2F0ZWNvbW1lbnRfY29udGV4dCIgZGVsZXRlZFw9ImZhbHNlIiBkZXNjcmlwdGlvblw9IkNvbW1lbnQgZm9yIGRlbGVnYXRlIG1ldGhvZHMiIGVuYWJsZWRcPSJ0cnVlIiBpZFw9Im9yZy5lY2xpcHNlLmpkdC51aS50ZXh0LmNvZGV0ZW1wbGF0ZXMuZGVsZWdhdGVjb21tZW50IiBuYW1lXD0iZGVsZWdhdGVjb21tZW50Ij4vKipcbiAqICR7c2VlX3RvX3RhcmdldH1cbiAqXG4gKiAke3RhZ3N9XG4gKi88L3RlbXBsYXRlPjx0ZW1wbGF0ZSBhdXRvaW5zZXJ0XD0idHJ1ZSIgY29udGV4dFw9Im5ld3R5cGVfY29udGV4dCIgZGVsZXRlZFw9ImZhbHNlIiBkZXNjcmlwdGlvblw9Ik5ld2x5IGNyZWF0ZWQgZmlsZXMiIGVuYWJsZWRcPSJ0cnVlIiBpZFw9Im9yZy5lY2xpcHNlLmpkdC51aS50ZXh0LmNvZGV0ZW1wbGF0ZXMubmV3dHlwZSIgbmFtZVw9Im5ld3R5cGUiPiR7ZmlsZWNvbW1lbnR9XG4ke3BhY2thZ2VfZGVjbGFyYXRpb259XG5cbiR7dHlwZWNvbW1lbnR9XG4ke3R5cGVfZGVjbGFyYXRpb259PC90ZW1wbGF0ZT48dGVtcGxhdGUgYXV0b2luc2VydFw9InRydWUiIGNvbnRleHRcPSJjbGFzc2JvZHlfY29udGV4dCIgZGVsZXRlZFw9ImZhbHNlIiBkZXNjcmlwdGlvblw9IkNvZGUgaW4gbmV3IGNsYXNzIHR5cGUgYm9kaWVzIiBlbmFibGVkXD0idHJ1ZSIgaWRcPSJvcmcuZWNsaXBzZS5qZHQudWkudGV4dC5jb2RldGVtcGxhdGVzLmNsYXNzYm9keSIgbmFtZVw9ImNsYXNzYm9keSI+XG48L3RlbXBsYXRlPjx0ZW1wbGF0ZSBhdXRvaW5zZXJ0XD0idHJ1ZSIgY29udGV4dFw9ImludGVyZmFjZWJvZHlfY29udGV4dCIgZGVsZXRlZFw9ImZhbHNlIiBkZXNjcmlwdGlvblw9IkNvZGUgaW4gbmV3IGludGVyZmFjZSB0eXBlIGJvZGllcyIgZW5hYmxlZFw9InRydWUiIGlkXD0ib3JnLmVjbGlwc2UuamR0LnVpLnRleHQuY29kZXRlbXBsYXRlcy5pbnRlcmZhY2Vib2R5IiBuYW1lXD0iaW50ZXJmYWNlYm9keSI+XG48L3RlbXBsYXRlPjx0ZW1wbGF0ZSBhdXRvaW5zZXJ0XD0idHJ1ZSIgY29udGV4dFw9ImVudW1ib2R5X2NvbnRleHQiIGRlbGV0ZWRcPSJmYWxzZSIgZGVzY3JpcHRpb25cPSJDb2RlIGluIG5ldyBlbnVtIHR5cGUgYm9kaWVzIiBlbmFibGVkXD0idHJ1ZSIgaWRcPSJvcmcuZWNsaXBzZS5qZHQudWkudGV4dC5jb2RldGVtcGxhdGVzLmVudW1ib2R5IiBuYW1lXD0iZW51bWJvZHkiPlxuPC90ZW1wbGF0ZT48dGVtcGxhdGUgYXV0b2luc2VydFw9InRydWUiIGNvbnRleHRcPSJhbm5vdGF0aW9uYm9keV9jb250ZXh0IiBkZWxldGVkXD0iZmFsc2UiIGRlc2NyaXB0aW9uXD0iQ29kZSBpbiBuZXcgYW5ub3RhdGlvbiB0eXBlIGJvZGllcyIgZW5hYmxlZFw9InRydWUiIGlkXD0ib3JnLmVjbGlwc2UuamR0LnVpLnRleHQuY29kZXRlbXBsYXRlcy5hbm5vdGF0aW9uYm9keSIgbmFtZVw9ImFubm90YXRpb25ib2R5Ij5cbjwvdGVtcGxhdGU+PHRlbXBsYXRlIGF1dG9pbnNlcnRcPSJ0cnVlIiBjb250ZXh0XD0iY2F0Y2hibG9ja19jb250ZXh0IiBkZWxldGVkXD0iZmFsc2UiIGRlc2NyaXB0aW9uXD0iQ29kZSBpbiBuZXcgY2F0Y2ggYmxvY2tzIiBlbmFibGVkXD0idHJ1ZSIgaWRcPSJvcmcuZWNsaXBzZS5qZHQudWkudGV4dC5jb2RldGVtcGxhdGVzLmNhdGNoYmxvY2siIG5hbWVcPSJjYXRjaGJsb2NrIj4vLyAke3RvZG99IEF1dG8tZ2VuZXJhdGVkIGNhdGNoIGJsb2NrXG4ke2V4Y2VwdGlvbl92YXJ9LnByaW50U3RhY2tUcmFjZSgpOzwvdGVtcGxhdGU+PHRlbXBsYXRlIGF1dG9pbnNlcnRcPSJ0cnVlIiBjb250ZXh0XD0ibWV0aG9kYm9keV9jb250ZXh0IiBkZWxldGVkXD0iZmFsc2UiIGRlc2NyaXB0aW9uXD0iQ29kZSBpbiBjcmVhdGVkIG1ldGhvZCBzdHVicyIgZW5hYmxlZFw9InRydWUiIGlkXD0ib3JnLmVjbGlwc2UuamR0LnVpLnRleHQuY29kZXRlbXBsYXRlcy5tZXRob2Rib2R5IiBuYW1lXD0ibWV0aG9kYm9keSI+Ly8gJHt0b2RvfSBBdXRvLWdlbmVyYXRlZCBtZXRob2Qgc3R1YlxuJHtib2R5X3N0YXRlbWVudH08L3RlbXBsYXRlPjx0ZW1wbGF0ZSBhdXRvaW5zZXJ0XD0idHJ1ZSIgY29udGV4dFw9ImNvbnN0cnVjdG9yYm9keV9jb250ZXh0IiBkZWxldGVkXD0iZmFsc2UiIGRlc2NyaXB0aW9uXD0iQ29kZSBpbiBjcmVhdGVkIGNvbnN0cnVjdG9yIHN0dWJzIiBlbmFibGVkXD0idHJ1ZSIgaWRcPSJvcmcuZWNsaXBzZS5qZHQudWkudGV4dC5jb2RldGVtcGxhdGVzLmNvbnN0cnVjdG9yYm9keSIgbmFtZVw9ImNvbnN0cnVjdG9yYm9keSI+JHtib2R5X3N0YXRlbWVudH1cbi8vICR7dG9kb30gQXV0by1nZW5lcmF0ZWQgY29uc3RydWN0b3Igc3R1YjwvdGVtcGxhdGU+PHRlbXBsYXRlIGF1dG9pbnNlcnRcPSJ0cnVlIiBjb250ZXh0XD0iZ2V0dGVyYm9keV9jb250ZXh0IiBkZWxldGVkXD0iZmFsc2UiIGRlc2NyaXB0aW9uXD0iQ29kZSBpbiBjcmVhdGVkIGdldHRlcnMiIGVuYWJsZWRcPSJ0cnVlIiBpZFw9Im9yZy5lY2xpcHNlLmpkdC51aS50ZXh0LmNvZGV0ZW1wbGF0ZXMuZ2V0dGVyYm9keSIgbmFtZVw9ImdldHRlcmJvZHkiPnJldHVybiAke2ZpZWxkfTs8L3RlbXBsYXRlPjx0ZW1wbGF0ZSBhdXRvaW5zZXJ0XD0idHJ1ZSIgY29udGV4dFw9InNldHRlcmJvZHlfY29udGV4dCIgZGVsZXRlZFw9ImZhbHNlIiBkZXNjcmlwdGlvblw9IkNvZGUgaW4gY3JlYXRlZCBzZXR0ZXJzIiBlbmFibGVkXD0idHJ1ZSIgaWRcPSJvcmcuZWNsaXBzZS5qZHQudWkudGV4dC5jb2RldGVtcGxhdGVzLnNldHRlcmJvZHkiIG5hbWVcPSJzZXR0ZXJib2R5Ij4ke2ZpZWxkfSBcPSAke3BhcmFtfTs8L3RlbXBsYXRlPjwvdGVtcGxhdGVzPg0KZGlmZiAtLWdpdCBhL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmVkaXQvTUVUQS1JTkYvTUFOSUZFU1QuTUYgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5lZGl0L01FVEEtSU5GL01BTklGRVNULk1GCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc1ZmVhNjUKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5lZGl0L01FVEEtSU5GL01BTklGRVNULk1GCkBAIC0wLDAgKzEsMzAgQEAKK01hbmlmZXN0LVZlcnNpb246IDEuMA0KK0J1bmRsZS1NYW5pZmVzdFZlcnNpb246IDINCitCdW5kbGUtTmFtZTogJXBsdWdpbk5hbWUNCitCdW5kbGUtU3ltYm9saWNOYW1lOiBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZWRpdDtzaW5nbGV0b246PXRydWUNCitCdW5kbGUtVmVyc2lvbjogMC43LjAucXVhbGlmaWVyDQorQnVuZGxlLUNsYXNzUGF0aDogLg0KK0J1bmRsZS1BY3RpdmF0b3I6IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5wcm92aWRlci5TeXNtbEVkaXRQbHVnaW4kSW1wbGVtZW50YXRpb24NCitCdW5kbGUtVmVuZG9yOiAlcHJvdmlkZXJOYW1lDQorQnVuZGxlLUxvY2FsaXphdGlvbjogcGx1Z2luDQorQnVuZGxlLVJlcXVpcmVkRXhlY3V0aW9uRW52aXJvbm1lbnQ6IEphdmFTRS0xLjcNCitFeHBvcnQtUGFja2FnZTogb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmFjdGl2aXRpZXMucHJvdmlkZXIsDQorIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5hbGxvY2F0aW9ucy5wcm92aWRlciwNCisgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmJsb2Nrcy5wcm92aWRlciwNCisgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmNvbnN0cmFpbnRibG9ja3MucHJvdmlkZXIsDQorIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kZXByZWNhdGVkZWxlbWVudHMucHJvdmlkZXIsDQorIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5tb2RlbGVsZW1lbnRzLnByb3ZpZGVyLA0KKyBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucG9ydGFuZGZsb3dzLnByb3ZpZGVyLA0KKyBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucHJvdmlkZXIsDQorIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5yZXF1aXJlbWVudHMucHJvdmlkZXINCitSZXF1aXJlLUJ1bmRsZTogb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLA0KKyBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQ7YnVuZGxlLXZlcnNpb249IjAuNy4wIjt2aXNpYmlsaXR5Oj1yZWV4cG9ydCwNCisgb3JnLmVjbGlwc2UuZW1mLmVkaXQ7dmlzaWJpbGl0eTo9cmVleHBvcnQsDQorIG9yZy5lY2xpcHNlLmVtZi5lY29yZTt2aXNpYmlsaXR5Oj1yZWV4cG9ydCwNCisgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLmVkaXQ7dmlzaWJpbGl0eTo9cmVleHBvcnQsDQorIG9yZy5lY2xpcHNlLnVtbDIudW1sLnByb2ZpbGUuc3RhbmRhcmQ7dmlzaWJpbGl0eTo9cmVleHBvcnQsDQorIG9yZy5lY2xpcHNlLnVtbDIudHlwZXM7dmlzaWJpbGl0eTo9cmVleHBvcnQsDQorIG9yZy5lY2xpcHNlLnVtbDIudW1sO3Zpc2liaWxpdHk6PXJlZXhwb3J0LA0KKyBvcmcuZWNsaXBzZS51bWwyLnVtbC5lZGl0O3Zpc2liaWxpdHk6PXJlZXhwb3J0LA0KKyBvcmcuZWNsaXBzZS51bWwyLmNvbW1vbi5lZGl0O3Zpc2liaWxpdHk6PXJlZXhwb3J0DQorQnVuZGxlLUFjdGl2YXRpb25Qb2xpY3k6IGxhenkNCmRpZmYgLS1naXQgYS9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5lZGl0L2Fib3V0Lmh0bWwgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5lZGl0L2Fib3V0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODJkNDliZgotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmVkaXQvYWJvdXQuaHRtbApAQCAtMCwwICsxLDI4IEBACis8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIFhIVE1MIDEuMCBTdHJpY3QvL0VOIg0KKyAgICAiaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtc3RyaWN0LmR0ZCI+DQorPGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPg0KKzxoZWFkPg0KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PUlTTy04ODU5LTEiLz4NCis8dGl0bGU+QWJvdXQ8L3RpdGxlPg0KKzwvaGVhZD4NCis8Ym9keSBsYW5nPSJFTi1VUyI+DQorPGgyPkFib3V0IFRoaXMgQ29udGVudDwvaDI+DQorIA0KKzxwPkp1bmUgNSwgMjAwNzwvcD4JDQorPGgzPkxpY2Vuc2U8L2gzPg0KKw0KKzxwPlRoZSBFY2xpcHNlIEZvdW5kYXRpb24gbWFrZXMgYXZhaWxhYmxlIGFsbCBjb250ZW50IGluIHRoaXMgcGx1Zy1pbiAoJnF1b3Q7Q29udGVudCZxdW90OykuICBVbmxlc3Mgb3RoZXJ3aXNlIA0KK2luZGljYXRlZCBiZWxvdywgdGhlIENvbnRlbnQgaXMgcHJvdmlkZWQgdG8geW91IHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUNCitFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMS4wICgmcXVvdDtFUEwmcXVvdDspLiAgQSBjb3B5IG9mIHRoZSBFUEwgaXMgYXZhaWxhYmxlIA0KK2F0IDxhIGhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sIj5odHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbDwvYT4uDQorRm9yIHB1cnBvc2VzIG9mIHRoZSBFUEwsICZxdW90O1Byb2dyYW0mcXVvdDsgd2lsbCBtZWFuIHRoZSBDb250ZW50LjwvcD4NCisNCis8cD5JZiB5b3UgZGlkIG5vdCByZWNlaXZlIHRoaXMgQ29udGVudCBkaXJlY3RseSBmcm9tIHRoZSBFY2xpcHNlIEZvdW5kYXRpb24sIHRoZSBDb250ZW50IGlzIA0KK2JlaW5nIHJlZGlzdHJpYnV0ZWQgYnkgYW5vdGhlciBwYXJ0eSAoJnF1b3Q7UmVkaXN0cmlidXRvciZxdW90OykgYW5kIGRpZmZlcmVudCB0ZXJtcyBhbmQgY29uZGl0aW9ucyBtYXkNCithcHBseSB0byB5b3VyIHVzZSBvZiBhbnkgb2JqZWN0IGNvZGUgaW4gdGhlIENvbnRlbnQuICBDaGVjayB0aGUgUmVkaXN0cmlidXRvcidzIGxpY2Vuc2UgdGhhdCB3YXMgDQorcHJvdmlkZWQgd2l0aCB0aGUgQ29udGVudC4gIElmIG5vIHN1Y2ggbGljZW5zZSBleGlzdHMsIGNvbnRhY3QgdGhlIFJlZGlzdHJpYnV0b3IuICBVbmxlc3Mgb3RoZXJ3aXNlDQoraW5kaWNhdGVkIGJlbG93LCB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEVQTCBzdGlsbCBhcHBseSB0byBhbnkgc291cmNlIGNvZGUgaW4gdGhlIENvbnRlbnQNCithbmQgc3VjaCBzb3VyY2UgY29kZSBtYXkgYmUgb2J0YWluZWQgYXQgPGEgaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy8iPmh0dHA6Ly93d3cuZWNsaXBzZS5vcmc8L2E+LjwvcD4NCisNCis8L2JvZHk+DQorPC9odG1sPg0KZGlmZiAtLWdpdCBhL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmVkaXQvYnVpbGQucHJvcGVydGllcyBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmVkaXQvYnVpbGQucHJvcGVydGllcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYTIxOGY1Ci0tLSAvZGV2L251bGwKKysrIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZWRpdC9idWlsZC5wcm9wZXJ0aWVzCkBAIC0wLDAgKzEsMTggQEAKKyMgQ29weXJpZ2h0IChjKSAyMDE1IENFQSBMSVNULg0KKyMgDQorIyAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KKyMgIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KKyMgIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQorIyAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisNCitiaW4uaW5jbHVkZXMgPSAuLFwNCisgICAgICAgICAgICAgICBpY29ucy8sXA0KKyAgICAgICAgICAgICAgIE1FVEEtSU5GLyxcDQorICAgICAgICAgICAgICAgcGx1Z2luLnhtbCxcDQorICAgICAgICAgICAgICAgcGx1Z2luLnByb3BlcnRpZXMsXA0KKyAgICAgICAgICAgICAgIGFib3V0Lmh0bWwNCitqYXJzLmNvbXBpbGUub3JkZXIgPSAuDQorc291cmNlLi4gPSBzcmMtZ2VuLyxcDQorICAgICAgICAgICBzcmMvDQorb3V0cHV0Li4gPSBiaW4vDQorc3JjLmluY2x1ZGVzID0gYWJvdXQuaHRtbA0KZGlmZiAtLWdpdCBhL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmVkaXQvaWNvbnMvZnVsbC9vYmoxNi9BY2NlcHRDaGFuZ2VTdHJ1Y3R1cmFsRmVhdHVyZUV2ZW50QWN0aW9uLmdpZiBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmVkaXQvaWNvbnMvZnVsbC9vYmoxNi9BY2NlcHRDaGFuZ2VTdHJ1Y3R1cmFsRmVhdHVyZUV2ZW50QWN0aW9uLmdpZgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kM2RjNWE5Ci0tLSAvZGV2L251bGwKKysrIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZWRpdC9pY29ucy9mdWxsL29iajE2L0FjY2VwdENoYW5nZVN0cnVjdHVyYWxGZWF0dXJlRXZlbnRBY3Rpb24uZ2lmCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmVkaXQvaWNvbnMvZnVsbC9vYmoxNi9BZGp1bmN0UHJvcGVydHkuZ2lmIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZWRpdC9pY29ucy9mdWxsL29iajE2L0FkanVuY3RQcm9wZXJ0eS5naWYKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjM2NDNkYQotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmVkaXQvaWNvbnMvZnVsbC9vYmoxNi9BZGp1bmN0UHJvcGVydHkuZ2lmCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmVkaXQvaWNvbnMvZnVsbC9vYmoxNi9BbGxvY2F0ZS5naWYgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5lZGl0L2ljb25zL2Z1bGwvb2JqMTYvQWxsb2NhdGUuZ2lmCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkyNTBmZWMKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5lZGl0L2ljb25zL2Z1bGwvb2JqMTYvQWxsb2NhdGUuZ2lmCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmVkaXQvaWNvbnMvZnVsbC9vYmoxNi9BbGxvY2F0ZUFjdGl2aXR5UGFydGl0aW9uLmdpZiBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmVkaXQvaWNvbnMvZnVsbC9vYmoxNi9BbGxvY2F0ZUFjdGl2aXR5UGFydGl0aW9uLmdpZgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMzhmYjhkCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZWRpdC9pY29ucy9mdWxsL29iajE2L0FsbG9jYXRlQWN0aXZpdHlQYXJ0aXRpb24uZ2lmCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmVkaXQvaWNvbnMvZnVsbC9vYmoxNi9BbGxvY2F0ZWQuZ2lmIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZWRpdC9pY29ucy9mdWxsL29iajE2L0FsbG9jYXRlZC5naWYKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzY3M2E1MgotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmVkaXQvaWNvbnMvZnVsbC9vYmoxNi9BbGxvY2F0ZWQuZ2lmCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmVkaXQvaWNvbnMvZnVsbC9vYmoxNi9CaW5kaW5nQ29ubmVjdG9yLmdpZiBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmVkaXQvaWNvbnMvZnVsbC9vYmoxNi9CaW5kaW5nQ29ubmVjdG9yLmdpZgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMTI0ZjNlCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZWRpdC9pY29ucy9mdWxsL29iajE2L0JpbmRpbmdDb25uZWN0b3IuZ2lmCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmVkaXQvaWNvbnMvZnVsbC9vYmoxNi9CbG9jay5naWYgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5lZGl0L2ljb25zL2Z1bGwvb2JqMTYvQmxvY2suZ2lmCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg5YWQ1ZGEKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5lZGl0L2ljb25zL2Z1bGwvb2JqMTYvQmxvY2suZ2lmCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmVkaXQvaWNvbnMvZnVsbC9vYmoxNi9Cb3VuZFJlZmVyZW5jZS5naWYgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5lZGl0L2ljb25zL2Z1bGwvb2JqMTYvQm91bmRSZWZlcmVuY2UuZ2lmCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkwNDE1OTgKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5lZGl0L2ljb25zL2Z1bGwvb2JqMTYvQm91bmRSZWZlcmVuY2UuZ2lmCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmVkaXQvaWNvbnMvZnVsbC9vYmoxNi9DaGFuZ2VTdHJ1Y3R1cmFsRmVhdHVyZUV2ZW50LmdpZiBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmVkaXQvaWNvbnMvZnVsbC9vYmoxNi9DaGFuZ2VTdHJ1Y3R1cmFsRmVhdHVyZUV2ZW50LmdpZgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMGQyMjI5Ci0tLSAvZGV2L251bGwKKysrIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZWRpdC9pY29ucy9mdWxsL29iajE2L0NoYW5nZVN0cnVjdHVyYWxGZWF0dXJlRXZlbnQuZ2lmCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmVkaXQvaWNvbnMvZnVsbC9vYmoxNi9DbGFzc2lmaWVyQmVoYXZpb3JQcm9wZXJ0eS5naWYgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5lZGl0L2ljb25zL2Z1bGwvb2JqMTYvQ2xhc3NpZmllckJlaGF2aW9yUHJvcGVydHkuZ2lmCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkwNDE1OTgKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5lZGl0L2ljb25zL2Z1bGwvb2JqMTYvQ2xhc3NpZmllckJlaGF2aW9yUHJvcGVydHkuZ2lmCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmVkaXQvaWNvbnMvZnVsbC9vYmoxNi9Db25mb3JtLmdpZiBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmVkaXQvaWNvbnMvZnVsbC9vYmoxNi9Db25mb3JtLmdpZgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYTU4YTY1Ci0tLSAvZGV2L251bGwKKysrIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZWRpdC9pY29ucy9mdWxsL29iajE2L0NvbmZvcm0uZ2lmCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmVkaXQvaWNvbnMvZnVsbC9vYmoxNi9Db25uZWN0b3JQcm9wZXJ0eS5naWYgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5lZGl0L2ljb25zL2Z1bGwvb2JqMTYvQ29ubmVjdG9yUHJvcGVydHkuZ2lmCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ1NzMxZmUKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5lZGl0L2ljb25zL2Z1bGwvb2JqMTYvQ29ubmVjdG9yUHJvcGVydHkuZ2lmCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmVkaXQvaWNvbnMvZnVsbC9vYmoxNi9Db25zdHJhaW50QmxvY2suZ2lmIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZWRpdC9pY29ucy9mdWxsL29iajE2L0NvbnN0cmFpbnRCbG9jay5naWYKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzM4ZmI4ZAotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmVkaXQvaWNvbnMvZnVsbC9vYmoxNi9Db25zdHJhaW50QmxvY2suZ2lmCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmVkaXQvaWNvbnMvZnVsbC9vYmoxNi9Db250aW51b3VzLmdpZiBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmVkaXQvaWNvbnMvZnVsbC9vYmoxNi9Db250aW51b3VzLmdpZgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZTUzNDVmCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZWRpdC9pY29ucy9mdWxsL29iajE2L0NvbnRpbnVvdXMuZ2lmCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmVkaXQvaWNvbnMvZnVsbC9vYmoxNi9Db250cm9sT3BlcmF0b3IuZ2lmIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZWRpdC9pY29ucy9mdWxsL29iajE2L0NvbnRyb2xPcGVyYXRvci5naWYKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTM2ZTNiMgotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmVkaXQvaWNvbnMvZnVsbC9vYmoxNi9Db250cm9sT3BlcmF0b3IuZ2lmCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmVkaXQvaWNvbnMvZnVsbC9vYmoxNi9Db3B5LmdpZiBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmVkaXQvaWNvbnMvZnVsbC9vYmoxNi9Db3B5LmdpZgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43YzJhYWFjCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZWRpdC9pY29ucy9mdWxsL29iajE2L0NvcHkuZ2lmCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmVkaXQvaWNvbnMvZnVsbC9vYmoxNi9EZXByZWNhdGVkLmdpZiBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmVkaXQvaWNvbnMvZnVsbC9vYmoxNi9EZXByZWNhdGVkLmdpZgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZjU2YzE0Ci0tLSAvZGV2L251bGwKKysrIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZWRpdC9pY29ucy9mdWxsL29iajE2L0RlcHJlY2F0ZWQuZ2lmCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmVkaXQvaWNvbnMvZnVsbC9vYmoxNi9EZXJpdmVSZXF0LmdpZiBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmVkaXQvaWNvbnMvZnVsbC9vYmoxNi9EZXJpdmVSZXF0LmdpZgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMTI0ZjNlCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZWRpdC9pY29ucy9mdWxsL29iajE2L0Rlcml2ZVJlcXQuZ2lmCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmVkaXQvaWNvbnMvZnVsbC9vYmoxNi9EaXJlY3RlZEZlYXR1cmUuZ2lmIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZWRpdC9pY29ucy9mdWxsL29iajE2L0RpcmVjdGVkRmVhdHVyZS5naWYKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTM2ZTNiMgotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmVkaXQvaWNvbnMvZnVsbC9vYmoxNi9EaXJlY3RlZEZlYXR1cmUuZ2lmCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmVkaXQvaWNvbnMvZnVsbC9vYmoxNi9EaXNjcmV0ZS5naWYgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5lZGl0L2ljb25zL2Z1bGwvb2JqMTYvRGlzY3JldGUuZ2lmCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJiNjkyNTYKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5lZGl0L2ljb25zL2Z1bGwvb2JqMTYvRGlzY3JldGUuZ2lmCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmVkaXQvaWNvbnMvZnVsbC9vYmoxNi9EaXN0cmlidXRlZFByb3BlcnR5LmdpZiBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmVkaXQvaWNvbnMvZnVsbC9vYmoxNi9EaXN0cmlidXRlZFByb3BlcnR5LmdpZgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MzllYmJmCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZWRpdC9pY29ucy9mdWxsL29iajE2L0Rpc3RyaWJ1dGVkUHJvcGVydHkuZ2lmCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmVkaXQvaWNvbnMvZnVsbC9vYmoxNi9FbGVtZW50R3JvdXAuZ2lmIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZWRpdC9pY29ucy9mdWxsL29iajE2L0VsZW1lbnRHcm91cC5naWYKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODNhZmI5YgotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmVkaXQvaWNvbnMvZnVsbC9vYmoxNi9FbGVtZW50R3JvdXAuZ2lmCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmVkaXQvaWNvbnMvZnVsbC9vYmoxNi9FbmRQYXRoTXVsdGlwbGljaXR5LmdpZiBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmVkaXQvaWNvbnMvZnVsbC9vYmoxNi9FbmRQYXRoTXVsdGlwbGljaXR5LmdpZgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43YmFjNGZkCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZWRpdC9pY29ucy9mdWxsL29iajE2L0VuZFBhdGhNdWx0aXBsaWNpdHkuZ2lmCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmVkaXQvaWNvbnMvZnVsbC9vYmoxNi9FeHBvc2UuZ2lmIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZWRpdC9pY29ucy9mdWxsL29iajE2L0V4cG9zZS5naWYKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGI3NDE0ZQotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmVkaXQvaWNvbnMvZnVsbC9vYmoxNi9FeHBvc2UuZ2lmCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmVkaXQvaWNvbnMvZnVsbC9vYmoxNi9GbG93UG9ydC5naWYgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5lZGl0L2ljb25zL2Z1bGwvb2JqMTYvRmxvd1BvcnQuZ2lmCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk0Yzk1M2UKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5lZGl0L2ljb25zL2Z1bGwvb2JqMTYvRmxvd1BvcnQuZ2lmCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmVkaXQvaWNvbnMvZnVsbC9vYmoxNi9GbG93UHJvcGVydHkuZ2lmIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZWRpdC9pY29ucy9mdWxsL29iajE2L0Zsb3dQcm9wZXJ0eS5naWYKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2MyYWFhYwotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmVkaXQvaWNvbnMvZnVsbC9vYmoxNi9GbG93UHJvcGVydHkuZ2lmCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmVkaXQvaWNvbnMvZnVsbC9vYmoxNi9GbG93U3BlY2lmaWNhdGlvbi5naWYgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5lZGl0L2ljb25zL2Z1bGwvb2JqMTYvRmxvd1NwZWNpZmljYXRpb24uZ2lmCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdiN2M0MjgKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5lZGl0L2ljb25zL2Z1bGwvb2JqMTYvRmxvd1NwZWNpZmljYXRpb24uZ2lmCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmVkaXQvaWNvbnMvZnVsbC9vYmoxNi9GdWxsUG9ydC5naWYgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5lZGl0L2ljb25zL2Z1bGwvb2JqMTYvRnVsbFBvcnQuZ2lmCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhhNWM3MGMKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5lZGl0L2ljb25zL2Z1bGwvb2JqMTYvRnVsbFBvcnQuZ2lmCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmVkaXQvaWNvbnMvZnVsbC9vYmoxNi9JbnRlcmZhY2VCbG9jay5naWYgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5lZGl0L2ljb25zL2Z1bGwvb2JqMTYvSW50ZXJmYWNlQmxvY2suZ2lmCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVkODc0NzQKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5lZGl0L2ljb25zL2Z1bGwvb2JqMTYvSW50ZXJmYWNlQmxvY2suZ2lmCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmVkaXQvaWNvbnMvZnVsbC9vYmoxNi9JbnZvY2F0aW9uT25OZXN0ZWRQb3J0QWN0aW9uLmdpZiBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmVkaXQvaWNvbnMvZnVsbC9vYmoxNi9JbnZvY2F0aW9uT25OZXN0ZWRQb3J0QWN0aW9uLmdpZgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYWRhYWIwCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZWRpdC9pY29ucy9mdWxsL29iajE2L0ludm9jYXRpb25Pbk5lc3RlZFBvcnRBY3Rpb24uZ2lmCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmVkaXQvaWNvbnMvZnVsbC9vYmoxNi9JdGVtRmxvdy5naWYgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5lZGl0L2ljb25zL2Z1bGwvb2JqMTYvSXRlbUZsb3cuZ2lmCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY4MDQxZDIKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5lZGl0L2ljb25zL2Z1bGwvb2JqMTYvSXRlbUZsb3cuZ2lmCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmVkaXQvaWNvbnMvZnVsbC9vYmoxNi9OZXN0ZWRDb25uZWN0b3JFbmQuZ2lmIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZWRpdC9pY29ucy9mdWxsL29iajE2L05lc3RlZENvbm5lY3RvckVuZC5naWYKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzAwYWVkZgotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmVkaXQvaWNvbnMvZnVsbC9vYmoxNi9OZXN0ZWRDb25uZWN0b3JFbmQuZ2lmCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmVkaXQvaWNvbnMvZnVsbC9vYmoxNi9Ob0J1ZmZlci5naWYgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5lZGl0L2ljb25zL2Z1bGwvb2JqMTYvTm9CdWZmZXIuZ2lmCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQyMGVlZTEKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5lZGl0L2ljb25zL2Z1bGwvb2JqMTYvTm9CdWZmZXIuZ2lmCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmVkaXQvaWNvbnMvZnVsbC9vYmoxNi9PcHRpb25hbC5naWYgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5lZGl0L2ljb25zL2Z1bGwvb2JqMTYvT3B0aW9uYWwuZ2lmCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMwMGFlZGYKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5lZGl0L2ljb25zL2Z1bGwvb2JqMTYvT3B0aW9uYWwuZ2lmCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmVkaXQvaWNvbnMvZnVsbC9vYmoxNi9PdmVyd3JpdGUuZ2lmIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZWRpdC9pY29ucy9mdWxsL29iajE2L092ZXJ3cml0ZS5naWYKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDkyZjM0YwotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmVkaXQvaWNvbnMvZnVsbC9vYmoxNi9PdmVyd3JpdGUuZ2lmCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmVkaXQvaWNvbnMvZnVsbC9vYmoxNi9QYXJ0aWNpcGFudFByb3BlcnR5LmdpZiBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmVkaXQvaWNvbnMvZnVsbC9vYmoxNi9QYXJ0aWNpcGFudFByb3BlcnR5LmdpZgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYjc0MTRlCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZWRpdC9pY29ucy9mdWxsL29iajE2L1BhcnRpY2lwYW50UHJvcGVydHkuZ2lmCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmVkaXQvaWNvbnMvZnVsbC9vYmoxNi9Qcm9iYWJpbGl0eS5naWYgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5lZGl0L2ljb25zL2Z1bGwvb2JqMTYvUHJvYmFiaWxpdHkuZ2lmCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ5MmYzNGMKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5lZGl0L2ljb25zL2Z1bGwvb2JqMTYvUHJvYmFiaWxpdHkuZ2lmCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmVkaXQvaWNvbnMvZnVsbC9vYmoxNi9Qcm9ibGVtLmdpZiBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmVkaXQvaWNvbnMvZnVsbC9vYmoxNi9Qcm9ibGVtLmdpZgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYjc0MTRlCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZWRpdC9pY29ucy9mdWxsL29iajE2L1Byb2JsZW0uZ2lmCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmVkaXQvaWNvbnMvZnVsbC9vYmoxNi9Qcm9wZXJ0eVNwZWNpZmljVHlwZS5naWYgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5lZGl0L2ljb25zL2Z1bGwvb2JqMTYvUHJvcGVydHlTcGVjaWZpY1R5cGUuZ2lmCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdiN2M0MjgKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5lZGl0L2ljb25zL2Z1bGwvb2JqMTYvUHJvcGVydHlTcGVjaWZpY1R5cGUuZ2lmCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmVkaXQvaWNvbnMvZnVsbC9vYmoxNi9Qcm94eVBvcnQuZ2lmIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZWRpdC9pY29ucy9mdWxsL29iajE2L1Byb3h5UG9ydC5naWYKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDkyZjM0YwotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmVkaXQvaWNvbnMvZnVsbC9vYmoxNi9Qcm94eVBvcnQuZ2lmCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmVkaXQvaWNvbnMvZnVsbC9vYmoxNi9SYXRlLmdpZiBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmVkaXQvaWNvbnMvZnVsbC9vYmoxNi9SYXRlLmdpZgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NGM5NTNlCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZWRpdC9pY29ucy9mdWxsL29iajE2L1JhdGUuZ2lmCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmVkaXQvaWNvbnMvZnVsbC9vYmoxNi9SYXRpb25hbGUuZ2lmIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZWRpdC9pY29ucy9mdWxsL29iajE2L1JhdGlvbmFsZS5naWYKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmFkYWFiMAotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmVkaXQvaWNvbnMvZnVsbC9vYmoxNi9SYXRpb25hbGUuZ2lmCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmVkaXQvaWNvbnMvZnVsbC9vYmoxNi9SZWZpbmUuZ2lmIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZWRpdC9pY29ucy9mdWxsL29iajE2L1JlZmluZS5naWYKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDhlM2NmMgotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmVkaXQvaWNvbnMvZnVsbC9vYmoxNi9SZWZpbmUuZ2lmCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmVkaXQvaWNvbnMvZnVsbC9vYmoxNi9SZXF1aXJlbWVudC5naWYgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5lZGl0L2ljb25zL2Z1bGwvb2JqMTYvUmVxdWlyZW1lbnQuZ2lmCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk0Yzk1M2UKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5lZGl0L2ljb25zL2Z1bGwvb2JqMTYvUmVxdWlyZW1lbnQuZ2lmCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmVkaXQvaWNvbnMvZnVsbC9vYmoxNi9SZXF1aXJlbWVudFJlbGF0ZWQuZ2lmIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZWRpdC9pY29ucy9mdWxsL29iajE2L1JlcXVpcmVtZW50UmVsYXRlZC5naWYKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzM4NTRlOQotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmVkaXQvaWNvbnMvZnVsbC9vYmoxNi9SZXF1aXJlbWVudFJlbGF0ZWQuZ2lmCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmVkaXQvaWNvbnMvZnVsbC9vYmoxNi9TYXRpc2Z5LmdpZiBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmVkaXQvaWNvbnMvZnVsbC9vYmoxNi9TYXRpc2Z5LmdpZgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZTUzNDVmCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZWRpdC9pY29ucy9mdWxsL29iajE2L1NhdGlzZnkuZ2lmCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmVkaXQvaWNvbnMvZnVsbC9vYmoxNi9TdGFrZWhvbGRlci5naWYgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5lZGl0L2ljb25zL2Z1bGwvb2JqMTYvU3Rha2Vob2xkZXIuZ2lmCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA1ZGM3NGEKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5lZGl0L2ljb25zL2Z1bGwvb2JqMTYvU3Rha2Vob2xkZXIuZ2lmCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmVkaXQvaWNvbnMvZnVsbC9vYmoxNi9UZXN0Q2FzZS5naWYgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5lZGl0L2ljb25zL2Z1bGwvb2JqMTYvVGVzdENhc2UuZ2lmCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkwNDE1OTgKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5lZGl0L2ljb25zL2Z1bGwvb2JqMTYvVGVzdENhc2UuZ2lmCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmVkaXQvaWNvbnMvZnVsbC9vYmoxNi9UcmFjZS5naWYgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5lZGl0L2ljb25zL2Z1bGwvb2JqMTYvVHJhY2UuZ2lmCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJlMjI0NjMKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5lZGl0L2ljb25zL2Z1bGwvb2JqMTYvVHJhY2UuZ2lmCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmVkaXQvaWNvbnMvZnVsbC9vYmoxNi9UcmlnZ2VyT25OZXN0ZWRQb3J0LmdpZiBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmVkaXQvaWNvbnMvZnVsbC9vYmoxNi9UcmlnZ2VyT25OZXN0ZWRQb3J0LmdpZgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNDE0ZmU5Ci0tLSAvZGV2L251bGwKKysrIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZWRpdC9pY29ucy9mdWxsL29iajE2L1RyaWdnZXJPbk5lc3RlZFBvcnQuZ2lmCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmVkaXQvaWNvbnMvZnVsbC9vYmoxNi9WYWx1ZVR5cGUuZ2lmIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZWRpdC9pY29ucy9mdWxsL29iajE2L1ZhbHVlVHlwZS5naWYKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmFkYWFiMAotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmVkaXQvaWNvbnMvZnVsbC9vYmoxNi9WYWx1ZVR5cGUuZ2lmCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmVkaXQvaWNvbnMvZnVsbC9vYmoxNi9WZXJpZnkuZ2lmIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZWRpdC9pY29ucy9mdWxsL29iajE2L1ZlcmlmeS5naWYKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWZiODJlYQotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmVkaXQvaWNvbnMvZnVsbC9vYmoxNi9WZXJpZnkuZ2lmCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmVkaXQvaWNvbnMvZnVsbC9vYmoxNi9WaWV3LmdpZiBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmVkaXQvaWNvbnMvZnVsbC9vYmoxNi9WaWV3LmdpZgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43YzJhYWFjCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZWRpdC9pY29ucy9mdWxsL29iajE2L1ZpZXcuZ2lmCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmVkaXQvaWNvbnMvZnVsbC9vYmoxNi9WaWV3UG9pbnQuZ2lmIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZWRpdC9pY29ucy9mdWxsL29iajE2L1ZpZXdQb2ludC5naWYKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzM4ZmI4ZAotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmVkaXQvaWNvbnMvZnVsbC9vYmoxNi9WaWV3UG9pbnQuZ2lmCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmVkaXQvcGx1Z2luLnByb3BlcnRpZXMgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5lZGl0L3BsdWdpbi5wcm9wZXJ0aWVzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc5MTM0ZGQKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5lZGl0L3BsdWdpbi5wcm9wZXJ0aWVzCkBAIC0wLDAgKzEsMjY1IEBACisjIENvcHlyaWdodCAoYykgMjAxNSBDRUEgTElTVC4NCisjIA0KKyMgIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCisjICBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCisjICB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KKyMgIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorDQorcGx1Z2luTmFtZSA9IFN5c01MIEVkaXQgU3VwcG9ydA0KK3Byb3ZpZGVyTmFtZSA9IEVjbGlwc2UgTW9kZWxpbmcgUHJvamVjdA0KKw0KK19VSV9DcmVhdGVDaGlsZF90ZXh0ID0gezB9DQorX1VJX0NyZWF0ZUNoaWxkX3RleHQyID0gezF9IHswfQ0KK19VSV9DcmVhdGVDaGlsZF90ZXh0MyA9IHsxfQ0KK19VSV9DcmVhdGVDaGlsZF90b29sdGlwID0gQ3JlYXRlIE5ldyB7MH0gVW5kZXIgezF9IEZlYXR1cmUNCitfVUlfQ3JlYXRlQ2hpbGRfZGVzY3JpcHRpb24gPSBDcmVhdGUgYSBuZXcgY2hpbGQgb2YgdHlwZSB7MH0gZm9yIHRoZSB7MX0gZmVhdHVyZSBvZiB0aGUgc2VsZWN0ZWQgezJ9Lg0KK19VSV9DcmVhdGVTaWJsaW5nX2Rlc2NyaXB0aW9uID0gQ3JlYXRlIGEgbmV3IHNpYmxpbmcgb2YgdHlwZSB7MH0gZm9yIHRoZSBzZWxlY3RlZCB7Mn0sIHVuZGVyIHRoZSB7MX0gZmVhdHVyZSBvZiB0aGVpciBwYXJlbnQuDQorDQorX1VJX1Byb3BlcnR5RGVzY3JpcHRvcl9kZXNjcmlwdGlvbiA9IFRoZSB7MH0gb2YgdGhlIHsxfQ0KKw0KK19VSV9WYWx1ZVR5cGVfdHlwZSA9IFZhbHVlIFR5cGUNCitfVUlfRGlzdHJpYnV0ZWRQcm9wZXJ0eV90eXBlID0gRGlzdHJpYnV0ZWQgUHJvcGVydHkNCitfVUlfQ29ubmVjdG9yUHJvcGVydHlfdHlwZSA9IENvbm5lY3RvciBQcm9wZXJ0eQ0KK19VSV9QYXJ0aWNpcGFudFByb3BlcnR5X3R5cGUgPSBQYXJ0aWNpcGFudCBQcm9wZXJ0eQ0KK19VSV9CaW5kaW5nQ29ubmVjdG9yX3R5cGUgPSBCaW5kaW5nIENvbm5lY3Rvcg0KK19VSV9CbG9ja190eXBlID0gQmxvY2sNCitfVUlfUHJvcGVydHlTcGVjaWZpY1R5cGVfdHlwZSA9IFByb3BlcnR5IFNwZWNpZmljIFR5cGUNCitfVUlfTmVzdGVkQ29ubmVjdG9yRW5kX3R5cGUgPSBOZXN0ZWQgQ29ubmVjdG9yIEVuZA0KK19VSV9FbGVtZW50UHJvcGVydHlQYXRoX3R5cGUgPSBFbGVtZW50IFByb3BlcnR5IFBhdGgNCitfVUlfRGlyZWN0ZWRSZWxhdGlvbnNoaXBQcm9wZXJ0eVBhdGhfdHlwZSA9IERpcmVjdGVkIFJlbGF0aW9uc2hpcCBQcm9wZXJ0eSBQYXRoDQorX1VJX0VuZFBhdGhNdWx0aXBsaWNpdHlfdHlwZSA9IEVuZCBQYXRoIE11bHRpcGxpY2l0eQ0KK19VSV9Cb3VuZFJlZmVyZW5jZV90eXBlID0gQm91bmQgUmVmZXJlbmNlDQorX1VJX0FkanVuY3RQcm9wZXJ0eV90eXBlID0gQWRqdW5jdCBQcm9wZXJ0eQ0KK19VSV9DbGFzc2lmaWVyQmVoYXZpb3JQcm9wZXJ0eV90eXBlID0gQ2xhc3NpZmllciBCZWhhdmlvciBQcm9wZXJ0eQ0KK19VSV9JdGVtRmxvd190eXBlID0gSXRlbSBGbG93DQorX1VJX0Zsb3dQcm9wZXJ0eV90eXBlID0gRmxvdyBQcm9wZXJ0eQ0KK19VSV9GdWxsUG9ydF90eXBlID0gRnVsbCBQb3J0DQorX1VJX0ludGVyZmFjZUJsb2NrX3R5cGUgPSBJbnRlcmZhY2UgQmxvY2sNCitfVUlfUHJveHlQb3J0X3R5cGUgPSBQcm94eSBQb3J0DQorX1VJX0FjY2VwdENoYW5nZVN0cnVjdHVyYWxGZWF0dXJlRXZlbnRBY3Rpb25fdHlwZSA9IEFjY2VwdCBDaGFuZ2UgU3RydWN0dXJhbCBGZWF0dXJlIEV2ZW50IEFjdGlvbg0KK19VSV9DaGFuZ2VTdHJ1Y3R1cmFsRmVhdHVyZUV2ZW50X3R5cGUgPSBDaGFuZ2UgU3RydWN0dXJhbCBGZWF0dXJlIEV2ZW50DQorX1VJX0RpcmVjdGVkRmVhdHVyZV90eXBlID0gRGlyZWN0ZWQgRmVhdHVyZQ0KK19VSV9JbnZvY2F0aW9uT25OZXN0ZWRQb3J0QWN0aW9uX3R5cGUgPSBJbnZvY2F0aW9uIE9uIE5lc3RlZCBQb3J0IEFjdGlvbg0KK19VSV9UcmlnZ2VyT25OZXN0ZWRQb3J0X3R5cGUgPSBUcmlnZ2VyIE9uIE5lc3RlZCBQb3J0DQorX1VJX092ZXJ3cml0ZV90eXBlID0gT3ZlcndyaXRlDQorX1VJX0NvbnRyb2xPcGVyYXRvcl90eXBlID0gQ29udHJvbCBPcGVyYXRvcg0KK19VSV9SYXRlX3R5cGUgPSBSYXRlDQorX1VJX05vQnVmZmVyX3R5cGUgPSBObyBCdWZmZXINCitfVUlfRGlzY3JldGVfdHlwZSA9IERpc2NyZXRlDQorX1VJX0NvbnRpbnVvdXNfdHlwZSA9IENvbnRpbnVvdXMNCitfVUlfUHJvYmFiaWxpdHlfdHlwZSA9IFByb2JhYmlsaXR5DQorX1VJX09wdGlvbmFsX3R5cGUgPSBPcHRpb25hbA0KK19VSV9SYXRpb25hbGVfdHlwZSA9IFJhdGlvbmFsZQ0KK19VSV9WaWV3X3R5cGUgPSBWaWV3DQorX1VJX1ZpZXdQb2ludF90eXBlID0gVmlldyBQb2ludA0KK19VSV9TdGFrZWhvbGRlcl90eXBlID0gU3Rha2Vob2xkZXINCitfVUlfQ29uZm9ybV90eXBlID0gQ29uZm9ybQ0KK19VSV9Qcm9ibGVtX3R5cGUgPSBQcm9ibGVtDQorX1VJX0V4cG9zZV90eXBlID0gRXhwb3NlDQorX1VJX0VsZW1lbnRHcm91cF90eXBlID0gRWxlbWVudCBHcm91cA0KK19VSV9Db25zdHJhaW50QmxvY2tfdHlwZSA9IENvbnN0cmFpbnQgQmxvY2sNCitfVUlfQWxsb2NhdGVBY3Rpdml0eVBhcnRpdGlvbl90eXBlID0gQWxsb2NhdGUgQWN0aXZpdHkgUGFydGl0aW9uDQorX1VJX0FsbG9jYXRlX3R5cGUgPSBBbGxvY2F0ZQ0KK19VSV9EZXJpdmVSZXF0X3R5cGUgPSBEZXJpdmUgUmVxdA0KK19VSV9UcmFjZV90eXBlID0gVHJhY2UNCitfVUlfUmVxdWlyZW1lbnRfdHlwZSA9IFJlcXVpcmVtZW50DQorX1VJX0NvcHlfdHlwZSA9IENvcHkNCitfVUlfU2F0aXNmeV90eXBlID0gU2F0aXNmeQ0KK19VSV9UZXN0Q2FzZV90eXBlID0gVGVzdCBDYXNlDQorX1VJX1ZlcmlmeV90eXBlID0gVmVyaWZ5DQorX1VJX1JlZmluZV90eXBlID0gUmVmaW5lDQorX1VJX0Zsb3dQb3J0X3R5cGUgPSBGbG93IFBvcnQNCitfVUlfRmxvd1NwZWNpZmljYXRpb25fdHlwZSA9IEZsb3cgU3BlY2lmaWNhdGlvbg0KK19VSV9BbGxvY2F0ZWRfdHlwZSA9IEFsbG9jYXRlZA0KK19VSV9SZXF1aXJlbWVudFJlbGF0ZWRfdHlwZSA9IFJlcXVpcmVtZW50IFJlbGF0ZWQNCitfVUlfRGVwcmVjYXRlZF90eXBlID0gRGVwcmVjYXRlZA0KK19VSV9BdXhpbGlhcnlfdHlwZSA9IEF1eGlsaWFyeQ0KK19VSV9DYWxsX3R5cGUgPSBDYWxsDQorX1VJX0NyZWF0ZV90eXBlID0gQ3JlYXRlDQorX1VJX0Rlcml2ZV90eXBlID0gRGVyaXZlDQorX1VJX0Rlc3Ryb3lfdHlwZSA9IERlc3Ryb3kNCitfVUlfRG9jdW1lbnRfdHlwZSA9IERvY3VtZW50DQorX1VJX0ZpbGVfdHlwZSA9IEZpbGUNCitfVUlfRW50aXR5X3R5cGUgPSBFbnRpdHkNCitfVUlfRXhlY3V0YWJsZV90eXBlID0gRXhlY3V0YWJsZQ0KK19VSV9Gb2N1c190eXBlID0gRm9jdXMNCitfVUlfRnJhbWV3b3JrX3R5cGUgPSBGcmFtZXdvcmsNCitfVUlfSW1wbGVtZW50X3R5cGUgPSBJbXBsZW1lbnQNCitfVUlfSW1wbGVtZW50YXRpb25DbGFzc190eXBlID0gSW1wbGVtZW50YXRpb24gQ2xhc3MNCitfVUlfSW5zdGFudGlhdGVfdHlwZSA9IEluc3RhbnRpYXRlDQorX1VJX0xpYnJhcnlfdHlwZSA9IExpYnJhcnkNCitfVUlfTWV0YWNsYXNzX3R5cGUgPSBNZXRhY2xhc3MNCitfVUlfTW9kZWxMaWJyYXJ5X3R5cGUgPSBNb2RlbCBMaWJyYXJ5DQorX1VJX1Byb2Nlc3NfdHlwZSA9IFByb2Nlc3MNCitfVUlfUmVhbGl6YXRpb25fdHlwZSA9IFJlYWxpemF0aW9uDQorX1VJX1JlZmluZV90eXBlID0gUmVmaW5lDQorX1VJX1Jlc3BvbnNpYmlsaXR5X3R5cGUgPSBSZXNwb25zaWJpbGl0eQ0KK19VSV9TY3JpcHRfdHlwZSA9IFNjcmlwdA0KK19VSV9TZW5kX3R5cGUgPSBTZW5kDQorX1VJX1NlcnZpY2VfdHlwZSA9IFNlcnZpY2UNCitfVUlfU291cmNlX3R5cGUgPSBTb3VyY2UNCitfVUlfU3BlY2lmaWNhdGlvbl90eXBlID0gU3BlY2lmaWNhdGlvbg0KK19VSV9TdWJzeXN0ZW1fdHlwZSA9IFN1YnN5c3RlbQ0KK19VSV9UcmFjZV90eXBlID0gVHJhY2UNCitfVUlfVHlwZV90eXBlID0gVHlwZQ0KK19VSV9VdGlsaXR5X3R5cGUgPSBVdGlsaXR5DQorX1VJX0J1aWxkQ29tcG9uZW50X3R5cGUgPSBCdWlsZCBDb21wb25lbnQNCitfVUlfTWV0YW1vZGVsX3R5cGUgPSBNZXRhbW9kZWwNCitfVUlfU3lzdGVtTW9kZWxfdHlwZSA9IFN5c3RlbSBNb2RlbA0KK19VSV9Vbmtub3duX3R5cGUgPSBPYmplY3QNCisNCitfVUlfVW5rbm93bl9kYXRhdHlwZT0gVmFsdWUNCisNCitfVUlfVmFsdWVUeXBlX2Jhc2VfRGF0YVR5cGVfZmVhdHVyZSA9IEJhc2UgRGF0YSBUeXBlDQorX1VJX1ZhbHVlVHlwZV91bml0X2ZlYXR1cmUgPSBVbml0DQorX1VJX1ZhbHVlVHlwZV9xdWFudGl0eUtpbmRfZmVhdHVyZSA9IFF1YW50aXR5IEtpbmQNCitfVUlfRGlzdHJpYnV0ZWRQcm9wZXJ0eV9iYXNlX1Byb3BlcnR5X2ZlYXR1cmUgPSBCYXNlIFByb3BlcnR5DQorX1VJX0Nvbm5lY3RvclByb3BlcnR5X2Jhc2VfUHJvcGVydHlfZmVhdHVyZSA9IEJhc2UgUHJvcGVydHkNCitfVUlfQ29ubmVjdG9yUHJvcGVydHlfY29ubmVjdG9yX2ZlYXR1cmUgPSBDb25uZWN0b3INCitfVUlfUGFydGljaXBhbnRQcm9wZXJ0eV9iYXNlX1Byb3BlcnR5X2ZlYXR1cmUgPSBCYXNlIFByb3BlcnR5DQorX1VJX1BhcnRpY2lwYW50UHJvcGVydHlfZW5kX2ZlYXR1cmUgPSBFbmQNCitfVUlfQmluZGluZ0Nvbm5lY3Rvcl9iYXNlX0Nvbm5lY3Rvcl9mZWF0dXJlID0gQmFzZSBDb25uZWN0b3INCitfVUlfQmxvY2tfYmFzZV9DbGFzc19mZWF0dXJlID0gQmFzZSBDbGFzcw0KK19VSV9CbG9ja19pc0VuY2Fwc3VsYXRlZF9mZWF0dXJlID0gSXMgRW5jYXBzdWxhdGVkDQorX1VJX1Byb3BlcnR5U3BlY2lmaWNUeXBlX2Jhc2VfQ2xhc3NpZmllcl9mZWF0dXJlID0gQmFzZSBDbGFzc2lmaWVyDQorX1VJX05lc3RlZENvbm5lY3RvckVuZF9iYXNlX0Nvbm5lY3RvckVuZF9mZWF0dXJlID0gQmFzZSBDb25uZWN0b3IgRW5kDQorX1VJX0VsZW1lbnRQcm9wZXJ0eVBhdGhfYmFzZV9FbGVtZW50X2ZlYXR1cmUgPSBCYXNlIEVsZW1lbnQNCitfVUlfRWxlbWVudFByb3BlcnR5UGF0aF9wcm9wZXJ0eVBhdGhfZmVhdHVyZSA9IFByb3BlcnR5IFBhdGgNCitfVUlfRGlyZWN0ZWRSZWxhdGlvbnNoaXBQcm9wZXJ0eVBhdGhfYmFzZV9EaXJlY3RlZFJlbGF0aW9uc2hpcF9mZWF0dXJlID0gQmFzZSBEaXJlY3RlZCBSZWxhdGlvbnNoaXANCitfVUlfRGlyZWN0ZWRSZWxhdGlvbnNoaXBQcm9wZXJ0eVBhdGhfc291cmNlUHJvcGVydHlQYXRoX2ZlYXR1cmUgPSBTb3VyY2UgUHJvcGVydHkgUGF0aA0KK19VSV9EaXJlY3RlZFJlbGF0aW9uc2hpcFByb3BlcnR5UGF0aF90YXJnZXRQcm9wZXJ0eVBhdGhfZmVhdHVyZSA9IFRhcmdldCBQcm9wZXJ0eSBQYXRoDQorX1VJX0RpcmVjdGVkUmVsYXRpb25zaGlwUHJvcGVydHlQYXRoX3NvdXJjZUNvbnRleHRfZmVhdHVyZSA9IFNvdXJjZSBDb250ZXh0DQorX1VJX0RpcmVjdGVkUmVsYXRpb25zaGlwUHJvcGVydHlQYXRoX3RhcmdldENvbnRleHRfZmVhdHVyZSA9IFRhcmdldCBDb250ZXh0DQorX1VJX0VuZFBhdGhNdWx0aXBsaWNpdHlfYmFzZV9Qcm9wZXJ0eV9mZWF0dXJlID0gQmFzZSBQcm9wZXJ0eQ0KK19VSV9FbmRQYXRoTXVsdGlwbGljaXR5X2xvd2VyX2ZlYXR1cmUgPSBMb3dlcg0KK19VSV9FbmRQYXRoTXVsdGlwbGljaXR5X3VwcGVyX2ZlYXR1cmUgPSBVcHBlcg0KK19VSV9Cb3VuZFJlZmVyZW5jZV9ib3VuZEVuZF9mZWF0dXJlID0gQm91bmQgRW5kDQorX1VJX0JvdW5kUmVmZXJlbmNlX2JpbmRpbmdQYXRoX2ZlYXR1cmUgPSBCaW5kaW5nIFBhdGgNCitfVUlfQWRqdW5jdFByb3BlcnR5X2Jhc2VfUHJvcGVydHlfZmVhdHVyZSA9IEJhc2UgUHJvcGVydHkNCitfVUlfQWRqdW5jdFByb3BlcnR5X3ByaW5jaXBhbF9mZWF0dXJlID0gUHJpbmNpcGFsDQorX1VJX0NsYXNzaWZpZXJCZWhhdmlvclByb3BlcnR5X2Jhc2VfUHJvcGVydHlfZmVhdHVyZSA9IEJhc2UgUHJvcGVydHkNCitfVUlfSXRlbUZsb3dfYmFzZV9JbmZvcm1hdGlvbkZsb3dfZmVhdHVyZSA9IEJhc2UgSW5mb3JtYXRpb24gRmxvdw0KK19VSV9JdGVtRmxvd19pdGVtUHJvcGVydHlfZmVhdHVyZSA9IEl0ZW0gUHJvcGVydHkNCitfVUlfRmxvd1Byb3BlcnR5X2Jhc2VfUHJvcGVydHlfZmVhdHVyZSA9IEJhc2UgUHJvcGVydHkNCitfVUlfRmxvd1Byb3BlcnR5X2RpcmVjdGlvbl9mZWF0dXJlID0gRGlyZWN0aW9uDQorX1VJX0Z1bGxQb3J0X2Jhc2VfUG9ydF9mZWF0dXJlID0gQmFzZSBQb3J0DQorX1VJX1Byb3h5UG9ydF9iYXNlX1BvcnRfZmVhdHVyZSA9IEJhc2UgUG9ydA0KK19VSV9BY2NlcHRDaGFuZ2VTdHJ1Y3R1cmFsRmVhdHVyZUV2ZW50QWN0aW9uX2Jhc2VfQWNjZXB0RXZlbnRBY3Rpb25fZmVhdHVyZSA9IEJhc2UgQWNjZXB0IEV2ZW50IEFjdGlvbg0KK19VSV9DaGFuZ2VTdHJ1Y3R1cmFsRmVhdHVyZUV2ZW50X2Jhc2VfQ2hhbmdlRXZlbnRfZmVhdHVyZSA9IEJhc2UgQ2hhbmdlIEV2ZW50DQorX1VJX0NoYW5nZVN0cnVjdHVyYWxGZWF0dXJlRXZlbnRfc3RydWN0dXJhbEZlYXR1cmVfZmVhdHVyZSA9IFN0cnVjdHVyYWwgRmVhdHVyZQ0KK19VSV9EaXJlY3RlZEZlYXR1cmVfYmFzZV9GZWF0dXJlX2ZlYXR1cmUgPSBCYXNlIEZlYXR1cmUNCitfVUlfRGlyZWN0ZWRGZWF0dXJlX2ZlYXR1cmVEaXJlY3Rpb25fZmVhdHVyZSA9IEZlYXR1cmUgRGlyZWN0aW9uDQorX1VJX0ludm9jYXRpb25Pbk5lc3RlZFBvcnRBY3Rpb25fYmFzZV9JbnZvY2F0aW9uQWN0aW9uX2ZlYXR1cmUgPSBCYXNlIEludm9jYXRpb24gQWN0aW9uDQorX1VJX0ludm9jYXRpb25Pbk5lc3RlZFBvcnRBY3Rpb25fb25OZXN0ZWRQb3J0X2ZlYXR1cmUgPSBPbiBOZXN0ZWQgUG9ydA0KK19VSV9UcmlnZ2VyT25OZXN0ZWRQb3J0X2Jhc2VfVHJpZ2dlcl9mZWF0dXJlID0gQmFzZSBUcmlnZ2VyDQorX1VJX1RyaWdnZXJPbk5lc3RlZFBvcnRfb25OZXN0ZWRQb3J0X2ZlYXR1cmUgPSBPbiBOZXN0ZWQgUG9ydA0KK19VSV9PdmVyd3JpdGVfYmFzZV9PYmplY3ROb2RlX2ZlYXR1cmUgPSBCYXNlIE9iamVjdCBOb2RlDQorX1VJX0NvbnRyb2xPcGVyYXRvcl9iYXNlX0JlaGF2aW9yX2ZlYXR1cmUgPSBCYXNlIEJlaGF2aW9yDQorX1VJX0NvbnRyb2xPcGVyYXRvcl9iYXNlX09wZXJhdGlvbl9mZWF0dXJlID0gQmFzZSBPcGVyYXRpb24NCitfVUlfUmF0ZV9yYXRlX2ZlYXR1cmUgPSBSYXRlDQorX1VJX1JhdGVfYmFzZV9BY3Rpdml0eUVkZ2VfZmVhdHVyZSA9IEJhc2UgQWN0aXZpdHkgRWRnZQ0KK19VSV9SYXRlX2Jhc2VfT2JqZWN0Tm9kZV9mZWF0dXJlID0gQmFzZSBPYmplY3QgTm9kZQ0KK19VSV9SYXRlX2Jhc2VfUGFyYW1ldGVyX2ZlYXR1cmUgPSBCYXNlIFBhcmFtZXRlcg0KK19VSV9Ob0J1ZmZlcl9iYXNlX09iamVjdE5vZGVfZmVhdHVyZSA9IEJhc2UgT2JqZWN0IE5vZGUNCitfVUlfUHJvYmFiaWxpdHlfYmFzZV9BY3Rpdml0eUVkZ2VfZmVhdHVyZSA9IEJhc2UgQWN0aXZpdHkgRWRnZQ0KK19VSV9Qcm9iYWJpbGl0eV9iYXNlX1BhcmFtZXRlclNldF9mZWF0dXJlID0gQmFzZSBQYXJhbWV0ZXIgU2V0DQorX1VJX1Byb2JhYmlsaXR5X3Byb2JhYmlsaXR5X2ZlYXR1cmUgPSBQcm9iYWJpbGl0eQ0KK19VSV9PcHRpb25hbF9iYXNlX1BhcmFtZXRlcl9mZWF0dXJlID0gQmFzZSBQYXJhbWV0ZXINCitfVUlfUmF0aW9uYWxlX2Jhc2VfQ29tbWVudF9mZWF0dXJlID0gQmFzZSBDb21tZW50DQorX1VJX1ZpZXdfYmFzZV9QYWNrYWdlX2ZlYXR1cmUgPSBCYXNlIFBhY2thZ2UNCitfVUlfVmlld192aWV3UG9pbnRfZmVhdHVyZSA9IFZpZXcgUG9pbnQNCitfVUlfVmlld19zdGFrZWhvbGRlcl9mZWF0dXJlID0gU3Rha2Vob2xkZXINCitfVUlfVmlld19iYXNlX0NsYXNzX2ZlYXR1cmUgPSBCYXNlIENsYXNzDQorX1VJX1ZpZXdQb2ludF9iYXNlX0NsYXNzX2ZlYXR1cmUgPSBCYXNlIENsYXNzDQorX1VJX1ZpZXdQb2ludF9zdGFrZWhvbGRlcl9mZWF0dXJlID0gU3Rha2Vob2xkZXINCitfVUlfVmlld1BvaW50X3B1cnBvc2VfZmVhdHVyZSA9IFB1cnBvc2UNCitfVUlfVmlld1BvaW50X2NvbmNlcm5MaXN0X2ZlYXR1cmUgPSBDb25jZXJuIExpc3QNCitfVUlfVmlld1BvaW50X2xhbmd1YWdlX2ZlYXR1cmUgPSBMYW5ndWFnZQ0KK19VSV9WaWV3UG9pbnRfbWV0aG9kX2ZlYXR1cmUgPSBNZXRob2QNCitfVUlfVmlld1BvaW50X3ByZXNlbnRhdGlvbl9mZWF0dXJlID0gUHJlc2VudGF0aW9uDQorX1VJX1ZpZXdQb2ludF9jb25jZXJuX2ZlYXR1cmUgPSBDb25jZXJuDQorX1VJX1N0YWtlaG9sZGVyX2Jhc2VfQ2xhc3NpZmllcl9mZWF0dXJlID0gQmFzZSBDbGFzc2lmaWVyDQorX1VJX1N0YWtlaG9sZGVyX2NvbmNlcm5fZmVhdHVyZSA9IENvbmNlcm4NCitfVUlfU3Rha2Vob2xkZXJfY29uY2Vybkxpc3RfZmVhdHVyZSA9IENvbmNlcm4gTGlzdA0KK19VSV9Db25mb3JtX2Jhc2VfRGVwZW5kZW5jeV9mZWF0dXJlID0gQmFzZSBEZXBlbmRlbmN5DQorX1VJX0NvbmZvcm1fYmFzZV9HZW5lcmFsaXphdGlvbl9mZWF0dXJlID0gQmFzZSBHZW5lcmFsaXphdGlvbg0KK19VSV9Qcm9ibGVtX2Jhc2VfQ29tbWVudF9mZWF0dXJlID0gQmFzZSBDb21tZW50DQorX1VJX0V4cG9zZV9iYXNlX0RlcGVuZGVuY3lfZmVhdHVyZSA9IEJhc2UgRGVwZW5kZW5jeQ0KK19VSV9FbGVtZW50R3JvdXBfYmFzZV9Db21tZW50X2ZlYXR1cmUgPSBCYXNlIENvbW1lbnQNCitfVUlfRWxlbWVudEdyb3VwX25hbWVfZmVhdHVyZSA9IE5hbWUNCitfVUlfRWxlbWVudEdyb3VwX2NyaXRlcmlvbl9mZWF0dXJlID0gQ3JpdGVyaW9uDQorX1VJX0VsZW1lbnRHcm91cF9zaXplX2ZlYXR1cmUgPSBTaXplDQorX1VJX0VsZW1lbnRHcm91cF9tZW1iZXJfZmVhdHVyZSA9IE1lbWJlcg0KK19VSV9FbGVtZW50R3JvdXBfb3JkZXJlZE1lbWJlcl9mZWF0dXJlID0gT3JkZXJlZCBNZW1iZXINCitfVUlfQWxsb2NhdGVBY3Rpdml0eVBhcnRpdGlvbl9iYXNlX0FjdGl2aXR5UGFydGl0aW9uX2ZlYXR1cmUgPSBCYXNlIEFjdGl2aXR5IFBhcnRpdGlvbg0KK19VSV9BbGxvY2F0ZV9iYXNlX0Fic3RyYWN0aW9uX2ZlYXR1cmUgPSBCYXNlIEFic3RyYWN0aW9uDQorX1VJX1JlcXVpcmVtZW50X2Jhc2VfQ2xhc3NfZmVhdHVyZSA9IEJhc2UgQ2xhc3MNCitfVUlfUmVxdWlyZW1lbnRfdGV4dF9mZWF0dXJlID0gVGV4dA0KK19VSV9SZXF1aXJlbWVudF9pZF9mZWF0dXJlID0gSWQNCitfVUlfUmVxdWlyZW1lbnRfZGVyaXZlZF9mZWF0dXJlID0gRGVyaXZlZA0KK19VSV9SZXF1aXJlbWVudF9kZXJpdmVkRnJvbV9mZWF0dXJlID0gRGVyaXZlZCBGcm9tDQorX1VJX1JlcXVpcmVtZW50X3NhdGlzZmllZEJ5X2ZlYXR1cmUgPSBTYXRpc2ZpZWQgQnkNCitfVUlfUmVxdWlyZW1lbnRfcmVmaW5lZEJ5X2ZlYXR1cmUgPSBSZWZpbmVkIEJ5DQorX1VJX1JlcXVpcmVtZW50X3RyYWNlZFRvX2ZlYXR1cmUgPSBUcmFjZWQgVG8NCitfVUlfUmVxdWlyZW1lbnRfdmVyaWZpZWRCeV9mZWF0dXJlID0gVmVyaWZpZWQgQnkNCitfVUlfUmVxdWlyZW1lbnRfbWFzdGVyX2ZlYXR1cmUgPSBNYXN0ZXINCitfVUlfVGVzdENhc2VfYmFzZV9PcGVyYXRpb25fZmVhdHVyZSA9IEJhc2UgT3BlcmF0aW9uDQorX1VJX1Rlc3RDYXNlX2Jhc2VfQmVoYXZpb3JfZmVhdHVyZSA9IEJhc2UgQmVoYXZpb3INCitfVUlfRmxvd1BvcnRfYmFzZV9Qb3J0X2ZlYXR1cmUgPSBCYXNlIFBvcnQNCitfVUlfRmxvd1BvcnRfZGlyZWN0aW9uX2ZlYXR1cmUgPSBEaXJlY3Rpb24NCitfVUlfRmxvd1BvcnRfaXNBdG9taWNfZmVhdHVyZSA9IElzIEF0b21pYw0KK19VSV9GbG93U3BlY2lmaWNhdGlvbl9iYXNlX0ludGVyZmFjZV9mZWF0dXJlID0gQmFzZSBJbnRlcmZhY2UNCitfVUlfQWxsb2NhdGVkX2Jhc2VfTmFtZWRFbGVtZW50X2ZlYXR1cmUgPSBCYXNlIE5hbWVkIEVsZW1lbnQNCitfVUlfQWxsb2NhdGVkX2FsbG9jYXRlZEZyb21fZmVhdHVyZSA9IEFsbG9jYXRlZCBGcm9tDQorX1VJX0FsbG9jYXRlZF9hbGxvY2F0ZWRUb19mZWF0dXJlID0gQWxsb2NhdGVkIFRvDQorX1VJX1JlcXVpcmVtZW50UmVsYXRlZF9iYXNlX05hbWVkRWxlbWVudF9mZWF0dXJlID0gQmFzZSBOYW1lZCBFbGVtZW50DQorX1VJX1JlcXVpcmVtZW50UmVsYXRlZF9UcmFjZWRGcm9tX2ZlYXR1cmUgPSBUcmFjZWQgRnJvbQ0KK19VSV9SZXF1aXJlbWVudFJlbGF0ZWRfU2F0aXNmaWVzX2ZlYXR1cmUgPSBTYXRpc2ZpZXMNCitfVUlfUmVxdWlyZW1lbnRSZWxhdGVkX1JlZmluZXNfZmVhdHVyZSA9IFJlZmluZXMNCitfVUlfUmVxdWlyZW1lbnRSZWxhdGVkX1ZlcmlmaWVzX2ZlYXR1cmUgPSBWZXJpZmllcw0KK19VSV9EZXByZWNhdGVkX2Jhc2VfVmFsdWVTcGVjaWZpY2F0aW9uX2ZlYXR1cmUgPSBCYXNlIFZhbHVlIFNwZWNpZmljYXRpb24NCitfVUlfRGVwcmVjYXRlZF9iYXNlX1Byb3BlcnR5X2ZlYXR1cmUgPSBCYXNlIFByb3BlcnR5DQorX1VJX0RlcHJlY2F0ZWRfYmFzZV9JbnN0YW5jZVNwZWNpZmljYXRpb25fZmVhdHVyZSA9IEJhc2UgSW5zdGFuY2UgU3BlY2lmaWNhdGlvbg0KK19VSV9EZXByZWNhdGVkX2Jhc2VfQ2xhc3NfZmVhdHVyZSA9IEJhc2UgQ2xhc3MNCitfVUlfRGVwcmVjYXRlZF9iYXNlX0Fzc29jaWF0aW9uX2ZlYXR1cmUgPSBCYXNlIEFzc29jaWF0aW9uDQorX1VJX0RlcHJlY2F0ZWRfZGVwcmVjYXRlZFJlYXNvbl9mZWF0dXJlID0gRGVwcmVjYXRlZCBSZWFzb24NCitfVUlfRGVwcmVjYXRlZF9iYXNlX0dlbmVyYWxpemF0aW9uX2ZlYXR1cmUgPSBCYXNlIEdlbmVyYWxpemF0aW9uDQorX1VJX0RlcHJlY2F0ZWRfYmFzZV9EYXRhVHlwZV9mZWF0dXJlID0gQmFzZSBEYXRhIFR5cGUNCitfVUlfQXV4aWxpYXJ5X2Jhc2VfQ2xhc3NfZmVhdHVyZSA9IEJhc2UgQ2xhc3MNCitfVUlfQ2FsbF9iYXNlX1VzYWdlX2ZlYXR1cmUgPSBCYXNlIFVzYWdlDQorX1VJX0NyZWF0ZV9iYXNlX0JlaGF2aW9yYWxGZWF0dXJlX2ZlYXR1cmUgPSBCYXNlIEJlaGF2aW9yYWwgRmVhdHVyZQ0KK19VSV9DcmVhdGVfYmFzZV9Vc2FnZV9mZWF0dXJlID0gQmFzZSBVc2FnZQ0KK19VSV9EZXJpdmVfY29tcHV0YXRpb25fZmVhdHVyZSA9IENvbXB1dGF0aW9uDQorX1VJX0Rlcml2ZV9iYXNlX0Fic3RyYWN0aW9uX2ZlYXR1cmUgPSBCYXNlIEFic3RyYWN0aW9uDQorX1VJX0Rlc3Ryb3lfYmFzZV9CZWhhdmlvcmFsRmVhdHVyZV9mZWF0dXJlID0gQmFzZSBCZWhhdmlvcmFsIEZlYXR1cmUNCitfVUlfRmlsZV9iYXNlX0FydGlmYWN0X2ZlYXR1cmUgPSBCYXNlIEFydGlmYWN0DQorX1VJX0VudGl0eV9iYXNlX0NvbXBvbmVudF9mZWF0dXJlID0gQmFzZSBDb21wb25lbnQNCitfVUlfRm9jdXNfYmFzZV9DbGFzc19mZWF0dXJlID0gQmFzZSBDbGFzcw0KK19VSV9GcmFtZXdvcmtfYmFzZV9QYWNrYWdlX2ZlYXR1cmUgPSBCYXNlIFBhY2thZ2UNCitfVUlfSW1wbGVtZW50X2Jhc2VfQ29tcG9uZW50X2ZlYXR1cmUgPSBCYXNlIENvbXBvbmVudA0KK19VSV9JbXBsZW1lbnRhdGlvbkNsYXNzX2Jhc2VfQ2xhc3NfZmVhdHVyZSA9IEJhc2UgQ2xhc3MNCitfVUlfSW5zdGFudGlhdGVfYmFzZV9Vc2FnZV9mZWF0dXJlID0gQmFzZSBVc2FnZQ0KK19VSV9NZXRhY2xhc3NfYmFzZV9DbGFzc19mZWF0dXJlID0gQmFzZSBDbGFzcw0KK19VSV9Nb2RlbExpYnJhcnlfYmFzZV9QYWNrYWdlX2ZlYXR1cmUgPSBCYXNlIFBhY2thZ2UNCitfVUlfUHJvY2Vzc19iYXNlX0NvbXBvbmVudF9mZWF0dXJlID0gQmFzZSBDb21wb25lbnQNCitfVUlfUmVhbGl6YXRpb25fYmFzZV9DbGFzc2lmaWVyX2ZlYXR1cmUgPSBCYXNlIENsYXNzaWZpZXINCitfVUlfUmVmaW5lX2Jhc2VfQWJzdHJhY3Rpb25fZmVhdHVyZSA9IEJhc2UgQWJzdHJhY3Rpb24NCitfVUlfUmVzcG9uc2liaWxpdHlfYmFzZV9Vc2FnZV9mZWF0dXJlID0gQmFzZSBVc2FnZQ0KK19VSV9TZW5kX2Jhc2VfVXNhZ2VfZmVhdHVyZSA9IEJhc2UgVXNhZ2UNCitfVUlfU2VydmljZV9iYXNlX0NvbXBvbmVudF9mZWF0dXJlID0gQmFzZSBDb21wb25lbnQNCitfVUlfU3BlY2lmaWNhdGlvbl9iYXNlX0NsYXNzaWZpZXJfZmVhdHVyZSA9IEJhc2UgQ2xhc3NpZmllcg0KK19VSV9TdWJzeXN0ZW1fYmFzZV9Db21wb25lbnRfZmVhdHVyZSA9IEJhc2UgQ29tcG9uZW50DQorX1VJX1RyYWNlX2Jhc2VfQWJzdHJhY3Rpb25fZmVhdHVyZSA9IEJhc2UgQWJzdHJhY3Rpb24NCitfVUlfVHlwZV9iYXNlX0NsYXNzX2ZlYXR1cmUgPSBCYXNlIENsYXNzDQorX1VJX1V0aWxpdHlfYmFzZV9DbGFzc19mZWF0dXJlID0gQmFzZSBDbGFzcw0KK19VSV9CdWlsZENvbXBvbmVudF9iYXNlX0NvbXBvbmVudF9mZWF0dXJlID0gQmFzZSBDb21wb25lbnQNCitfVUlfTWV0YW1vZGVsX2Jhc2VfTW9kZWxfZmVhdHVyZSA9IEJhc2UgTW9kZWwNCitfVUlfU3lzdGVtTW9kZWxfYmFzZV9Nb2RlbF9mZWF0dXJlID0gQmFzZSBNb2RlbA0KK19VSV9Vbmtub3duX2ZlYXR1cmUgPSBVbnNwZWNpZmllZA0KKw0KK19VSV9GbG93RGlyZWN0aW9uX2luX2xpdGVyYWwgPSBpbg0KK19VSV9GbG93RGlyZWN0aW9uX291dF9saXRlcmFsID0gb3V0DQorX1VJX0Zsb3dEaXJlY3Rpb25faW5vdXRfbGl0ZXJhbCA9IGlub3V0DQorX1VJX0ZlYXR1cmVEaXJlY3Rpb25fcHJvdmlkZWRfbGl0ZXJhbCA9IHByb3ZpZGVkDQorX1VJX0ZlYXR1cmVEaXJlY3Rpb25fcmVxdWlyZWRfbGl0ZXJhbCA9IHJlcXVpcmVkDQorX1VJX0ZlYXR1cmVEaXJlY3Rpb25fcHJvdmlkZWRSZXF1aXJlZF9saXRlcmFsID0gcHJvdmlkZWRSZXF1aXJlZA0KZGlmZiAtLWdpdCBhL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmVkaXQvcGx1Z2luLnhtbCBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmVkaXQvcGx1Z2luLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYmUwMTcxCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZWRpdC9wbHVnaW4ueG1sCkBAIC0wLDAgKzEsMTE5IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/Pg0KKzw/ZWNsaXBzZSB2ZXJzaW9uPSIzLjAiPz4NCisNCis8IS0tDQorIENvcHlyaWdodCAoYykgMjAxNSBDRUEgTElTVC4NCisgDQorICBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQorICBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCisgIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQorICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKy0tPg0KKw0KKzxwbHVnaW4+DQorDQorICAgPGV4dGVuc2lvbiBwb2ludD0ib3JnLmVjbGlwc2UuZW1mLmVkaXQuaXRlbVByb3ZpZGVyQWRhcHRlckZhY3RvcmllcyI+DQorICAgICAgPCEtLSBAZ2VuZXJhdGVkIFN5c01MLnByb2ZpbGUgLS0+DQorICAgICAgPGZhY3RvcnkNCisgICAgICAgICAgICB1cmk9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvcGFweXJ1cy8xLjQvU3lzTUwvQmxvY2tzIg0KKyAgICAgICAgICAgIGNsYXNzPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYmxvY2tzLnByb3ZpZGVyLkJsb2Nrc0l0ZW1Qcm92aWRlckFkYXB0ZXJGYWN0b3J5Ig0KKyAgICAgICAgICAgIHN1cHBvcnRlZFR5cGVzPQ0KKyAgICAgICAgICAgICAgIm9yZy5lY2xpcHNlLmVtZi5lZGl0LnByb3ZpZGVyLklFZGl0aW5nRG9tYWluSXRlbVByb3ZpZGVyDQorICAgICAgICAgICAgICAgb3JnLmVjbGlwc2UuZW1mLmVkaXQucHJvdmlkZXIuSVN0cnVjdHVyZWRJdGVtQ29udGVudFByb3ZpZGVyDQorICAgICAgICAgICAgICAgb3JnLmVjbGlwc2UuZW1mLmVkaXQucHJvdmlkZXIuSVRyZWVJdGVtQ29udGVudFByb3ZpZGVyDQorICAgICAgICAgICAgICAgb3JnLmVjbGlwc2UuZW1mLmVkaXQucHJvdmlkZXIuSUl0ZW1MYWJlbFByb3ZpZGVyDQorICAgICAgICAgICAgICAgb3JnLmVjbGlwc2UuZW1mLmVkaXQucHJvdmlkZXIuSUl0ZW1Qcm9wZXJ0eVNvdXJjZSIvPg0KKyAgIDwvZXh0ZW5zaW9uPg0KKw0KKyAgIDxleHRlbnNpb24gcG9pbnQ9Im9yZy5lY2xpcHNlLmVtZi5lZGl0Lml0ZW1Qcm92aWRlckFkYXB0ZXJGYWN0b3JpZXMiPg0KKyAgICAgIDwhLS0gQGdlbmVyYXRlZCBTeXNNTC5wcm9maWxlIC0tPg0KKyAgICAgIDxmYWN0b3J5DQorICAgICAgICAgICAgdXJpPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3BhcHlydXMvMS40L1N5c01ML1BvcnRBbmRGbG93cyINCisgICAgICAgICAgICBjbGFzcz0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnBvcnRhbmRmbG93cy5wcm92aWRlci5Qb3J0YW5kZmxvd3NJdGVtUHJvdmlkZXJBZGFwdGVyRmFjdG9yeSINCisgICAgICAgICAgICBzdXBwb3J0ZWRUeXBlcz0NCisgICAgICAgICAgICAgICJvcmcuZWNsaXBzZS5lbWYuZWRpdC5wcm92aWRlci5JRWRpdGluZ0RvbWFpbkl0ZW1Qcm92aWRlcg0KKyAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLmVtZi5lZGl0LnByb3ZpZGVyLklTdHJ1Y3R1cmVkSXRlbUNvbnRlbnRQcm92aWRlcg0KKyAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLmVtZi5lZGl0LnByb3ZpZGVyLklUcmVlSXRlbUNvbnRlbnRQcm92aWRlcg0KKyAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLmVtZi5lZGl0LnByb3ZpZGVyLklJdGVtTGFiZWxQcm92aWRlcg0KKyAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLmVtZi5lZGl0LnByb3ZpZGVyLklJdGVtUHJvcGVydHlTb3VyY2UiLz4NCisgICA8L2V4dGVuc2lvbj4NCisNCisgICA8ZXh0ZW5zaW9uIHBvaW50PSJvcmcuZWNsaXBzZS5lbWYuZWRpdC5pdGVtUHJvdmlkZXJBZGFwdGVyRmFjdG9yaWVzIj4NCisgICAgICA8IS0tIEBnZW5lcmF0ZWQgU3lzTUwucHJvZmlsZSAtLT4NCisgICAgICA8ZmFjdG9yeQ0KKyAgICAgICAgICAgIHVyaT0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9wYXB5cnVzLzEuNC9TeXNNTC9BY3Rpdml0aWVzIg0KKyAgICAgICAgICAgIGNsYXNzPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYWN0aXZpdGllcy5wcm92aWRlci5BY3Rpdml0aWVzSXRlbVByb3ZpZGVyQWRhcHRlckZhY3RvcnkiDQorICAgICAgICAgICAgc3VwcG9ydGVkVHlwZXM9DQorICAgICAgICAgICAgICAib3JnLmVjbGlwc2UuZW1mLmVkaXQucHJvdmlkZXIuSUVkaXRpbmdEb21haW5JdGVtUHJvdmlkZXINCisgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS5lbWYuZWRpdC5wcm92aWRlci5JU3RydWN0dXJlZEl0ZW1Db250ZW50UHJvdmlkZXINCisgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS5lbWYuZWRpdC5wcm92aWRlci5JVHJlZUl0ZW1Db250ZW50UHJvdmlkZXINCisgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS5lbWYuZWRpdC5wcm92aWRlci5JSXRlbUxhYmVsUHJvdmlkZXINCisgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS5lbWYuZWRpdC5wcm92aWRlci5JSXRlbVByb3BlcnR5U291cmNlIi8+DQorICAgPC9leHRlbnNpb24+DQorDQorICAgPGV4dGVuc2lvbiBwb2ludD0ib3JnLmVjbGlwc2UuZW1mLmVkaXQuaXRlbVByb3ZpZGVyQWRhcHRlckZhY3RvcmllcyI+DQorICAgICAgPCEtLSBAZ2VuZXJhdGVkIFN5c01MLnByb2ZpbGUgLS0+DQorICAgICAgPGZhY3RvcnkNCisgICAgICAgICAgICB1cmk9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvcGFweXJ1cy8xLjQvU3lzTUwvTW9kZWxFbGVtZW50cyINCisgICAgICAgICAgICBjbGFzcz0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0Lm1vZGVsZWxlbWVudHMucHJvdmlkZXIuTW9kZWxlbGVtZW50c0l0ZW1Qcm92aWRlckFkYXB0ZXJGYWN0b3J5Ig0KKyAgICAgICAgICAgIHN1cHBvcnRlZFR5cGVzPQ0KKyAgICAgICAgICAgICAgIm9yZy5lY2xpcHNlLmVtZi5lZGl0LnByb3ZpZGVyLklFZGl0aW5nRG9tYWluSXRlbVByb3ZpZGVyDQorICAgICAgICAgICAgICAgb3JnLmVjbGlwc2UuZW1mLmVkaXQucHJvdmlkZXIuSVN0cnVjdHVyZWRJdGVtQ29udGVudFByb3ZpZGVyDQorICAgICAgICAgICAgICAgb3JnLmVjbGlwc2UuZW1mLmVkaXQucHJvdmlkZXIuSVRyZWVJdGVtQ29udGVudFByb3ZpZGVyDQorICAgICAgICAgICAgICAgb3JnLmVjbGlwc2UuZW1mLmVkaXQucHJvdmlkZXIuSUl0ZW1MYWJlbFByb3ZpZGVyDQorICAgICAgICAgICAgICAgb3JnLmVjbGlwc2UuZW1mLmVkaXQucHJvdmlkZXIuSUl0ZW1Qcm9wZXJ0eVNvdXJjZSIvPg0KKyAgIDwvZXh0ZW5zaW9uPg0KKw0KKyAgIDxleHRlbnNpb24gcG9pbnQ9Im9yZy5lY2xpcHNlLmVtZi5lZGl0Lml0ZW1Qcm92aWRlckFkYXB0ZXJGYWN0b3JpZXMiPg0KKyAgICAgIDwhLS0gQGdlbmVyYXRlZCBTeXNNTC5wcm9maWxlIC0tPg0KKyAgICAgIDxmYWN0b3J5DQorICAgICAgICAgICAgdXJpPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3BhcHlydXMvMS40L1N5c01ML0NvbnN0cmFpbnRCbG9ja3MiDQorICAgICAgICAgICAgY2xhc3M9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5jb25zdHJhaW50YmxvY2tzLnByb3ZpZGVyLkNvbnN0cmFpbnRibG9ja3NJdGVtUHJvdmlkZXJBZGFwdGVyRmFjdG9yeSINCisgICAgICAgICAgICBzdXBwb3J0ZWRUeXBlcz0NCisgICAgICAgICAgICAgICJvcmcuZWNsaXBzZS5lbWYuZWRpdC5wcm92aWRlci5JRWRpdGluZ0RvbWFpbkl0ZW1Qcm92aWRlcg0KKyAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLmVtZi5lZGl0LnByb3ZpZGVyLklTdHJ1Y3R1cmVkSXRlbUNvbnRlbnRQcm92aWRlcg0KKyAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLmVtZi5lZGl0LnByb3ZpZGVyLklUcmVlSXRlbUNvbnRlbnRQcm92aWRlcg0KKyAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLmVtZi5lZGl0LnByb3ZpZGVyLklJdGVtTGFiZWxQcm92aWRlcg0KKyAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLmVtZi5lZGl0LnByb3ZpZGVyLklJdGVtUHJvcGVydHlTb3VyY2UiLz4NCisgICA8L2V4dGVuc2lvbj4NCisNCisgICA8ZXh0ZW5zaW9uIHBvaW50PSJvcmcuZWNsaXBzZS5lbWYuZWRpdC5pdGVtUHJvdmlkZXJBZGFwdGVyRmFjdG9yaWVzIj4NCisgICAgICA8IS0tIEBnZW5lcmF0ZWQgU3lzTUwucHJvZmlsZSAtLT4NCisgICAgICA8ZmFjdG9yeQ0KKyAgICAgICAgICAgIHVyaT0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9wYXB5cnVzLzEuNC9TeXNNTC9BbGxvY2F0aW9ucyINCisgICAgICAgICAgICBjbGFzcz0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmFsbG9jYXRpb25zLnByb3ZpZGVyLkFsbG9jYXRpb25zSXRlbVByb3ZpZGVyQWRhcHRlckZhY3RvcnkiDQorICAgICAgICAgICAgc3VwcG9ydGVkVHlwZXM9DQorICAgICAgICAgICAgICAib3JnLmVjbGlwc2UuZW1mLmVkaXQucHJvdmlkZXIuSUVkaXRpbmdEb21haW5JdGVtUHJvdmlkZXINCisgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS5lbWYuZWRpdC5wcm92aWRlci5JU3RydWN0dXJlZEl0ZW1Db250ZW50UHJvdmlkZXINCisgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS5lbWYuZWRpdC5wcm92aWRlci5JVHJlZUl0ZW1Db250ZW50UHJvdmlkZXINCisgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS5lbWYuZWRpdC5wcm92aWRlci5JSXRlbUxhYmVsUHJvdmlkZXINCisgICAgICAgICAgICAgICBvcmcuZWNsaXBzZS5lbWYuZWRpdC5wcm92aWRlci5JSXRlbVByb3BlcnR5U291cmNlIi8+DQorICAgPC9leHRlbnNpb24+DQorDQorICAgPGV4dGVuc2lvbiBwb2ludD0ib3JnLmVjbGlwc2UuZW1mLmVkaXQuaXRlbVByb3ZpZGVyQWRhcHRlckZhY3RvcmllcyI+DQorICAgICAgPCEtLSBAZ2VuZXJhdGVkIFN5c01MLnByb2ZpbGUgLS0+DQorICAgICAgPGZhY3RvcnkNCisgICAgICAgICAgICB1cmk9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvcGFweXJ1cy8xLjQvU3lzTUwvUmVxdWlyZW1lbnRzIg0KKyAgICAgICAgICAgIGNsYXNzPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucmVxdWlyZW1lbnRzLnByb3ZpZGVyLlJlcXVpcmVtZW50c0l0ZW1Qcm92aWRlckFkYXB0ZXJGYWN0b3J5Ig0KKyAgICAgICAgICAgIHN1cHBvcnRlZFR5cGVzPQ0KKyAgICAgICAgICAgICAgIm9yZy5lY2xpcHNlLmVtZi5lZGl0LnByb3ZpZGVyLklFZGl0aW5nRG9tYWluSXRlbVByb3ZpZGVyDQorICAgICAgICAgICAgICAgb3JnLmVjbGlwc2UuZW1mLmVkaXQucHJvdmlkZXIuSVN0cnVjdHVyZWRJdGVtQ29udGVudFByb3ZpZGVyDQorICAgICAgICAgICAgICAgb3JnLmVjbGlwc2UuZW1mLmVkaXQucHJvdmlkZXIuSVRyZWVJdGVtQ29udGVudFByb3ZpZGVyDQorICAgICAgICAgICAgICAgb3JnLmVjbGlwc2UuZW1mLmVkaXQucHJvdmlkZXIuSUl0ZW1MYWJlbFByb3ZpZGVyDQorICAgICAgICAgICAgICAgb3JnLmVjbGlwc2UuZW1mLmVkaXQucHJvdmlkZXIuSUl0ZW1Qcm9wZXJ0eVNvdXJjZSIvPg0KKyAgIDwvZXh0ZW5zaW9uPg0KKw0KKyAgIDxleHRlbnNpb24gcG9pbnQ9Im9yZy5lY2xpcHNlLmVtZi5lZGl0Lml0ZW1Qcm92aWRlckFkYXB0ZXJGYWN0b3JpZXMiPg0KKyAgICAgIDwhLS0gQGdlbmVyYXRlZCBTeXNNTC5wcm9maWxlIC0tPg0KKyAgICAgIDxmYWN0b3J5DQorICAgICAgICAgICAgdXJpPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3BhcHlydXMvMS40L1N5c01ML0RlcHJlY2F0ZWRFbGVtZW50cyINCisgICAgICAgICAgICBjbGFzcz0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRlcHJlY2F0ZWRlbGVtZW50cy5wcm92aWRlci5EZXByZWNhdGVkZWxlbWVudHNJdGVtUHJvdmlkZXJBZGFwdGVyRmFjdG9yeSINCisgICAgICAgICAgICBzdXBwb3J0ZWRUeXBlcz0NCisgICAgICAgICAgICAgICJvcmcuZWNsaXBzZS5lbWYuZWRpdC5wcm92aWRlci5JRWRpdGluZ0RvbWFpbkl0ZW1Qcm92aWRlcg0KKyAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLmVtZi5lZGl0LnByb3ZpZGVyLklTdHJ1Y3R1cmVkSXRlbUNvbnRlbnRQcm92aWRlcg0KKyAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLmVtZi5lZGl0LnByb3ZpZGVyLklUcmVlSXRlbUNvbnRlbnRQcm92aWRlcg0KKyAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLmVtZi5lZGl0LnByb3ZpZGVyLklJdGVtTGFiZWxQcm92aWRlcg0KKyAgICAgICAgICAgICAgIG9yZy5lY2xpcHNlLmVtZi5lZGl0LnByb3ZpZGVyLklJdGVtUHJvcGVydHlTb3VyY2UiLz4NCisgICA8L2V4dGVuc2lvbj4NCisNCis8L3BsdWdpbj4NCmRpZmYgLS1naXQgYS9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5lZGl0L3BvbS54bWwgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5lZGl0L3BvbS54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzYwZTgyYQotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmVkaXQvcG9tLnhtbApAQCAtMCwwICsxLDExIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/Pg0KKzxwcm9qZWN0Pg0KKwk8bW9kZWxWZXJzaW9uPjQuMC4wPC9tb2RlbFZlcnNpb24+DQorCTxwYXJlbnQ+DQorCQk8YXJ0aWZhY3RJZD5vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sLmNvcmU8L2FydGlmYWN0SWQ+DQorCQk8Z3JvdXBJZD5vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sPC9ncm91cElkPg0KKwkJPHZlcnNpb24+MC43LjAtU05BUFNIT1Q8L3ZlcnNpb24+DQorCTwvcGFyZW50Pg0KKwk8YXJ0aWZhY3RJZD5vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZWRpdDwvYXJ0aWZhY3RJZD4NCisJPHBhY2thZ2luZz5lY2xpcHNlLXBsdWdpbjwvcGFja2FnaW5nPg0KKzwvcHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5lZGl0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L2FjdGl2aXRpZXMvcHJvdmlkZXIvQWN0aXZpdGllc0l0ZW1Qcm92aWRlckFkYXB0ZXJGYWN0b3J5LmphdmEgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5lZGl0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L2FjdGl2aXRpZXMvcHJvdmlkZXIvQWN0aXZpdGllc0l0ZW1Qcm92aWRlckFkYXB0ZXJGYWN0b3J5LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWU2YzE3YgotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmVkaXQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvYWN0aXZpdGllcy9wcm92aWRlci9BY3Rpdml0aWVzSXRlbVByb3ZpZGVyQWRhcHRlckZhY3RvcnkuamF2YQpAQCAtMCwwICsxLDM3MyBAQAorLyoqDQorICogQ29weXJpZ2h0IChjKSAyMDE1IENFQSBMSVNULg0KKyAqIA0KKyAqICBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQorICogIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KKyAqICB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KKyAqICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqLw0KK3BhY2thZ2Ugb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmFjdGl2aXRpZXMucHJvdmlkZXI7DQorDQoraW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7DQoraW1wb3J0IGphdmEudXRpbC5Db2xsZWN0aW9uOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY29tbW9uLm5vdGlmeS5BZGFwdGVyOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY29tbW9uLm5vdGlmeS5Ob3RpZmljYXRpb247DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jb21tb24ubm90aWZ5Lk5vdGlmaWVyOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWRpdC5wcm92aWRlci5DaGFuZ2VOb3RpZmllcjsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVkaXQucHJvdmlkZXIuQ29tcG9zZWFibGVBZGFwdGVyRmFjdG9yeTsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVkaXQucHJvdmlkZXIuQ29tcG9zZWRBZGFwdGVyRmFjdG9yeTsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVkaXQucHJvdmlkZXIuSUNoYW5nZU5vdGlmaWVyOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWRpdC5wcm92aWRlci5JRGlzcG9zYWJsZTsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVkaXQucHJvdmlkZXIuSUVkaXRpbmdEb21haW5JdGVtUHJvdmlkZXI7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lZGl0LnByb3ZpZGVyLklJdGVtTGFiZWxQcm92aWRlcjsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVkaXQucHJvdmlkZXIuSUl0ZW1Qcm9wZXJ0eVNvdXJjZTsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVkaXQucHJvdmlkZXIuSU5vdGlmeUNoYW5nZWRMaXN0ZW5lcjsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVkaXQucHJvdmlkZXIuSVN0cnVjdHVyZWRJdGVtQ29udGVudFByb3ZpZGVyOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWRpdC5wcm92aWRlci5JVHJlZUl0ZW1Db250ZW50UHJvdmlkZXI7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5hY3Rpdml0aWVzLnV0aWwuQWN0aXZpdGllc0FkYXB0ZXJGYWN0b3J5Ow0KKw0KKy8qKg0KKyAqIFRoaXMgaXMgdGhlIGZhY3RvcnkgdGhhdCBpcyB1c2VkIHRvIHByb3ZpZGUgdGhlIGludGVyZmFjZXMgbmVlZGVkIHRvIHN1cHBvcnQgVmlld2Vycy4NCisgKiBUaGUgYWRhcHRlcnMgZ2VuZXJhdGVkIGJ5IHRoaXMgZmFjdG9yeSBjb252ZXJ0IEVNRiBhZGFwdGVyIG5vdGlmaWNhdGlvbnMgaW50byBjYWxscyB0byB7QGxpbmsgI2ZpcmVOb3RpZnlDaGFuZ2VkIGZpcmVOb3RpZnlDaGFuZ2VkfS4NCisgKiBUaGUgYWRhcHRlcnMgYWxzbyBzdXBwb3J0IEVjbGlwc2UgcHJvcGVydHkgc2hlZXRzLg0KKyAqIE5vdGUgdGhhdCBtb3N0IG9mIHRoZSBhZGFwdGVycyBhcmUgc2hhcmVkIGFtb25nIG11bHRpcGxlIGluc3RhbmNlcy4NCisgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKyAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKyAqIEBnZW5lcmF0ZWQNCisgKi8NCitwdWJsaWMgY2xhc3MgQWN0aXZpdGllc0l0ZW1Qcm92aWRlckFkYXB0ZXJGYWN0b3J5IGV4dGVuZHMgQWN0aXZpdGllc0FkYXB0ZXJGYWN0b3J5IGltcGxlbWVudHMgQ29tcG9zZWFibGVBZGFwdGVyRmFjdG9yeSwgSUNoYW5nZU5vdGlmaWVyLCBJRGlzcG9zYWJsZSB7DQorCS8qKg0KKwkgKiBUaGlzIGtlZXBzIHRyYWNrIG9mIHRoZSByb290IGFkYXB0ZXIgZmFjdG9yeSB0aGF0IGRlbGVnYXRlcyB0byB0aGlzIGFkYXB0ZXIgZmFjdG9yeS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXByb3RlY3RlZCBDb21wb3NlZEFkYXB0ZXJGYWN0b3J5IHBhcmVudEFkYXB0ZXJGYWN0b3J5Ow0KKw0KKwkvKioNCisJICogVGhpcyBpcyB1c2VkIHRvIGltcGxlbWVudCB7QGxpbmsgb3JnLmVjbGlwc2UuZW1mLmVkaXQucHJvdmlkZXIuSUNoYW5nZU5vdGlmaWVyfS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXByb3RlY3RlZCBJQ2hhbmdlTm90aWZpZXIgY2hhbmdlTm90aWZpZXIgPSBuZXcgQ2hhbmdlTm90aWZpZXIoKTsNCisNCisJLyoqDQorCSAqIFRoaXMga2VlcHMgdHJhY2sgb2YgYWxsIHRoZSBzdXBwb3J0ZWQgdHlwZXMgY2hlY2tlZCBieSB7QGxpbmsgI2lzRmFjdG9yeUZvclR5cGUgaXNGYWN0b3J5Rm9yVHlwZX0uDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwcm90ZWN0ZWQgQ29sbGVjdGlvbjxPYmplY3Q+IHN1cHBvcnRlZFR5cGVzID0gbmV3IEFycmF5TGlzdDxPYmplY3Q+KCk7DQorDQorCS8qKg0KKwkgKiBUaGlzIGNvbnN0cnVjdHMgYW4gaW5zdGFuY2UuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgQWN0aXZpdGllc0l0ZW1Qcm92aWRlckFkYXB0ZXJGYWN0b3J5KCkgew0KKwkJc3VwcG9ydGVkVHlwZXMuYWRkKElFZGl0aW5nRG9tYWluSXRlbVByb3ZpZGVyLmNsYXNzKTsNCisJCXN1cHBvcnRlZFR5cGVzLmFkZChJU3RydWN0dXJlZEl0ZW1Db250ZW50UHJvdmlkZXIuY2xhc3MpOw0KKwkJc3VwcG9ydGVkVHlwZXMuYWRkKElUcmVlSXRlbUNvbnRlbnRQcm92aWRlci5jbGFzcyk7DQorCQlzdXBwb3J0ZWRUeXBlcy5hZGQoSUl0ZW1MYWJlbFByb3ZpZGVyLmNsYXNzKTsNCisJCXN1cHBvcnRlZFR5cGVzLmFkZChJSXRlbVByb3BlcnR5U291cmNlLmNsYXNzKTsNCisJfQ0KKw0KKwkvKioNCisJICogVGhpcyBrZWVwcyB0cmFjayBvZiB0aGUgb25lIGFkYXB0ZXIgdXNlZCBmb3IgYWxsIHtAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYWN0aXZpdGllcy5PdmVyd3JpdGV9IGluc3RhbmNlcy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXByb3RlY3RlZCBPdmVyd3JpdGVJdGVtUHJvdmlkZXIgb3ZlcndyaXRlSXRlbVByb3ZpZGVyOw0KKw0KKwkvKioNCisJICogVGhpcyBjcmVhdGVzIGFuIGFkYXB0ZXIgZm9yIGEge0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5hY3Rpdml0aWVzLk92ZXJ3cml0ZX0uDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIEFkYXB0ZXIgY3JlYXRlT3ZlcndyaXRlQWRhcHRlcigpIHsNCisJCWlmIChvdmVyd3JpdGVJdGVtUHJvdmlkZXIgPT0gbnVsbCkgew0KKwkJCW92ZXJ3cml0ZUl0ZW1Qcm92aWRlciA9IG5ldyBPdmVyd3JpdGVJdGVtUHJvdmlkZXIodGhpcyk7DQorCQl9DQorDQorCQlyZXR1cm4gb3ZlcndyaXRlSXRlbVByb3ZpZGVyOw0KKwl9DQorDQorCS8qKg0KKwkgKiBUaGlzIGtlZXBzIHRyYWNrIG9mIHRoZSBvbmUgYWRhcHRlciB1c2VkIGZvciBhbGwge0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5hY3Rpdml0aWVzLkNvbnRyb2xPcGVyYXRvcn0gaW5zdGFuY2VzLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHJvdGVjdGVkIENvbnRyb2xPcGVyYXRvckl0ZW1Qcm92aWRlciBjb250cm9sT3BlcmF0b3JJdGVtUHJvdmlkZXI7DQorDQorCS8qKg0KKwkgKiBUaGlzIGNyZWF0ZXMgYW4gYWRhcHRlciBmb3IgYSB7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmFjdGl2aXRpZXMuQ29udHJvbE9wZXJhdG9yfS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgQWRhcHRlciBjcmVhdGVDb250cm9sT3BlcmF0b3JBZGFwdGVyKCkgew0KKwkJaWYgKGNvbnRyb2xPcGVyYXRvckl0ZW1Qcm92aWRlciA9PSBudWxsKSB7DQorCQkJY29udHJvbE9wZXJhdG9ySXRlbVByb3ZpZGVyID0gbmV3IENvbnRyb2xPcGVyYXRvckl0ZW1Qcm92aWRlcih0aGlzKTsNCisJCX0NCisNCisJCXJldHVybiBjb250cm9sT3BlcmF0b3JJdGVtUHJvdmlkZXI7DQorCX0NCisNCisJLyoqDQorCSAqIFRoaXMga2VlcHMgdHJhY2sgb2YgdGhlIG9uZSBhZGFwdGVyIHVzZWQgZm9yIGFsbCB7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmFjdGl2aXRpZXMuUmF0ZX0gaW5zdGFuY2VzLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHJvdGVjdGVkIFJhdGVJdGVtUHJvdmlkZXIgcmF0ZUl0ZW1Qcm92aWRlcjsNCisNCisJLyoqDQorCSAqIFRoaXMgY3JlYXRlcyBhbiBhZGFwdGVyIGZvciBhIHtAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYWN0aXZpdGllcy5SYXRlfS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgQWRhcHRlciBjcmVhdGVSYXRlQWRhcHRlcigpIHsNCisJCWlmIChyYXRlSXRlbVByb3ZpZGVyID09IG51bGwpIHsNCisJCQlyYXRlSXRlbVByb3ZpZGVyID0gbmV3IFJhdGVJdGVtUHJvdmlkZXIodGhpcyk7DQorCQl9DQorDQorCQlyZXR1cm4gcmF0ZUl0ZW1Qcm92aWRlcjsNCisJfQ0KKw0KKwkvKioNCisJICogVGhpcyBrZWVwcyB0cmFjayBvZiB0aGUgb25lIGFkYXB0ZXIgdXNlZCBmb3IgYWxsIHtAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYWN0aXZpdGllcy5Ob0J1ZmZlcn0gaW5zdGFuY2VzLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHJvdGVjdGVkIE5vQnVmZmVySXRlbVByb3ZpZGVyIG5vQnVmZmVySXRlbVByb3ZpZGVyOw0KKw0KKwkvKioNCisJICogVGhpcyBjcmVhdGVzIGFuIGFkYXB0ZXIgZm9yIGEge0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5hY3Rpdml0aWVzLk5vQnVmZmVyfS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgQWRhcHRlciBjcmVhdGVOb0J1ZmZlckFkYXB0ZXIoKSB7DQorCQlpZiAobm9CdWZmZXJJdGVtUHJvdmlkZXIgPT0gbnVsbCkgew0KKwkJCW5vQnVmZmVySXRlbVByb3ZpZGVyID0gbmV3IE5vQnVmZmVySXRlbVByb3ZpZGVyKHRoaXMpOw0KKwkJfQ0KKw0KKwkJcmV0dXJuIG5vQnVmZmVySXRlbVByb3ZpZGVyOw0KKwl9DQorDQorCS8qKg0KKwkgKiBUaGlzIGtlZXBzIHRyYWNrIG9mIHRoZSBvbmUgYWRhcHRlciB1c2VkIGZvciBhbGwge0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5hY3Rpdml0aWVzLkRpc2NyZXRlfSBpbnN0YW5jZXMuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwcm90ZWN0ZWQgRGlzY3JldGVJdGVtUHJvdmlkZXIgZGlzY3JldGVJdGVtUHJvdmlkZXI7DQorDQorCS8qKg0KKwkgKiBUaGlzIGNyZWF0ZXMgYW4gYWRhcHRlciBmb3IgYSB7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmFjdGl2aXRpZXMuRGlzY3JldGV9Lg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXB1YmxpYyBBZGFwdGVyIGNyZWF0ZURpc2NyZXRlQWRhcHRlcigpIHsNCisJCWlmIChkaXNjcmV0ZUl0ZW1Qcm92aWRlciA9PSBudWxsKSB7DQorCQkJZGlzY3JldGVJdGVtUHJvdmlkZXIgPSBuZXcgRGlzY3JldGVJdGVtUHJvdmlkZXIodGhpcyk7DQorCQl9DQorDQorCQlyZXR1cm4gZGlzY3JldGVJdGVtUHJvdmlkZXI7DQorCX0NCisNCisJLyoqDQorCSAqIFRoaXMga2VlcHMgdHJhY2sgb2YgdGhlIG9uZSBhZGFwdGVyIHVzZWQgZm9yIGFsbCB7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmFjdGl2aXRpZXMuQ29udGludW91c30gaW5zdGFuY2VzLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHJvdGVjdGVkIENvbnRpbnVvdXNJdGVtUHJvdmlkZXIgY29udGludW91c0l0ZW1Qcm92aWRlcjsNCisNCisJLyoqDQorCSAqIFRoaXMgY3JlYXRlcyBhbiBhZGFwdGVyIGZvciBhIHtAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYWN0aXZpdGllcy5Db250aW51b3VzfS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgQWRhcHRlciBjcmVhdGVDb250aW51b3VzQWRhcHRlcigpIHsNCisJCWlmIChjb250aW51b3VzSXRlbVByb3ZpZGVyID09IG51bGwpIHsNCisJCQljb250aW51b3VzSXRlbVByb3ZpZGVyID0gbmV3IENvbnRpbnVvdXNJdGVtUHJvdmlkZXIodGhpcyk7DQorCQl9DQorDQorCQlyZXR1cm4gY29udGludW91c0l0ZW1Qcm92aWRlcjsNCisJfQ0KKw0KKwkvKioNCisJICogVGhpcyBrZWVwcyB0cmFjayBvZiB0aGUgb25lIGFkYXB0ZXIgdXNlZCBmb3IgYWxsIHtAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYWN0aXZpdGllcy5Qcm9iYWJpbGl0eX0gaW5zdGFuY2VzLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHJvdGVjdGVkIFByb2JhYmlsaXR5SXRlbVByb3ZpZGVyIHByb2JhYmlsaXR5SXRlbVByb3ZpZGVyOw0KKw0KKwkvKioNCisJICogVGhpcyBjcmVhdGVzIGFuIGFkYXB0ZXIgZm9yIGEge0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5hY3Rpdml0aWVzLlByb2JhYmlsaXR5fS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgQWRhcHRlciBjcmVhdGVQcm9iYWJpbGl0eUFkYXB0ZXIoKSB7DQorCQlpZiAocHJvYmFiaWxpdHlJdGVtUHJvdmlkZXIgPT0gbnVsbCkgew0KKwkJCXByb2JhYmlsaXR5SXRlbVByb3ZpZGVyID0gbmV3IFByb2JhYmlsaXR5SXRlbVByb3ZpZGVyKHRoaXMpOw0KKwkJfQ0KKw0KKwkJcmV0dXJuIHByb2JhYmlsaXR5SXRlbVByb3ZpZGVyOw0KKwl9DQorDQorCS8qKg0KKwkgKiBUaGlzIGtlZXBzIHRyYWNrIG9mIHRoZSBvbmUgYWRhcHRlciB1c2VkIGZvciBhbGwge0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5hY3Rpdml0aWVzLk9wdGlvbmFsfSBpbnN0YW5jZXMuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwcm90ZWN0ZWQgT3B0aW9uYWxJdGVtUHJvdmlkZXIgb3B0aW9uYWxJdGVtUHJvdmlkZXI7DQorDQorCS8qKg0KKwkgKiBUaGlzIGNyZWF0ZXMgYW4gYWRhcHRlciBmb3IgYSB7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmFjdGl2aXRpZXMuT3B0aW9uYWx9Lg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXB1YmxpYyBBZGFwdGVyIGNyZWF0ZU9wdGlvbmFsQWRhcHRlcigpIHsNCisJCWlmIChvcHRpb25hbEl0ZW1Qcm92aWRlciA9PSBudWxsKSB7DQorCQkJb3B0aW9uYWxJdGVtUHJvdmlkZXIgPSBuZXcgT3B0aW9uYWxJdGVtUHJvdmlkZXIodGhpcyk7DQorCQl9DQorDQorCQlyZXR1cm4gb3B0aW9uYWxJdGVtUHJvdmlkZXI7DQorCX0NCisNCisJLyoqDQorCSAqIFRoaXMgcmV0dXJucyB0aGUgcm9vdCBhZGFwdGVyIGZhY3RvcnkgdGhhdCBjb250YWlucyB0aGlzIGZhY3RvcnkuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgQ29tcG9zZWFibGVBZGFwdGVyRmFjdG9yeSBnZXRSb290QWRhcHRlckZhY3RvcnkoKSB7DQorCQlyZXR1cm4gcGFyZW50QWRhcHRlckZhY3RvcnkgPT0gbnVsbCA/IHRoaXMgOiBwYXJlbnRBZGFwdGVyRmFjdG9yeS5nZXRSb290QWRhcHRlckZhY3RvcnkoKTsNCisJfQ0KKw0KKwkvKioNCisJICogVGhpcyBzZXRzIHRoZSBjb21wb3NlZCBhZGFwdGVyIGZhY3RvcnkgdGhhdCBjb250YWlucyB0aGlzIGZhY3RvcnkuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgdm9pZCBzZXRQYXJlbnRBZGFwdGVyRmFjdG9yeShDb21wb3NlZEFkYXB0ZXJGYWN0b3J5IHBhcmVudEFkYXB0ZXJGYWN0b3J5KSB7DQorCQl0aGlzLnBhcmVudEFkYXB0ZXJGYWN0b3J5ID0gcGFyZW50QWRhcHRlckZhY3Rvcnk7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIGJvb2xlYW4gaXNGYWN0b3J5Rm9yVHlwZShPYmplY3QgdHlwZSkgew0KKwkJcmV0dXJuIHN1cHBvcnRlZFR5cGVzLmNvbnRhaW5zKHR5cGUpIHx8IHN1cGVyLmlzRmFjdG9yeUZvclR5cGUodHlwZSk7DQorCX0NCisNCisJLyoqDQorCSAqIFRoaXMgaW1wbGVtZW50YXRpb24gc3Vic3RpdHV0ZXMgdGhlIGZhY3RvcnkgaXRzZWxmIGFzIHRoZSBrZXkgZm9yIHRoZSBhZGFwdGVyLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXB1YmxpYyBBZGFwdGVyIGFkYXB0KE5vdGlmaWVyIG5vdGlmaWVyLCBPYmplY3QgdHlwZSkgew0KKwkJcmV0dXJuIHN1cGVyLmFkYXB0KG5vdGlmaWVyLCB0aGlzKTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgT2JqZWN0IGFkYXB0KE9iamVjdCBvYmplY3QsIE9iamVjdCB0eXBlKSB7DQorCQlpZiAoaXNGYWN0b3J5Rm9yVHlwZSh0eXBlKSkgew0KKwkJCU9iamVjdCBhZGFwdGVyID0gc3VwZXIuYWRhcHQob2JqZWN0LCB0eXBlKTsNCisJCQlpZiAoISh0eXBlIGluc3RhbmNlb2YgQ2xhc3M8Pz4pIHx8ICgoKENsYXNzPD8+KXR5cGUpLmlzSW5zdGFuY2UoYWRhcHRlcikpKSB7DQorCQkJCXJldHVybiBhZGFwdGVyOw0KKwkJCX0NCisJCX0NCisNCisJCXJldHVybiBudWxsOw0KKwl9DQorDQorCS8qKg0KKwkgKiBUaGlzIGFkZHMgYSBsaXN0ZW5lci4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyB2b2lkIGFkZExpc3RlbmVyKElOb3RpZnlDaGFuZ2VkTGlzdGVuZXIgbm90aWZ5Q2hhbmdlZExpc3RlbmVyKSB7DQorCQljaGFuZ2VOb3RpZmllci5hZGRMaXN0ZW5lcihub3RpZnlDaGFuZ2VkTGlzdGVuZXIpOw0KKwl9DQorDQorCS8qKg0KKwkgKiBUaGlzIHJlbW92ZXMgYSBsaXN0ZW5lci4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyB2b2lkIHJlbW92ZUxpc3RlbmVyKElOb3RpZnlDaGFuZ2VkTGlzdGVuZXIgbm90aWZ5Q2hhbmdlZExpc3RlbmVyKSB7DQorCQljaGFuZ2VOb3RpZmllci5yZW1vdmVMaXN0ZW5lcihub3RpZnlDaGFuZ2VkTGlzdGVuZXIpOw0KKwl9DQorDQorCS8qKg0KKwkgKiBUaGlzIGRlbGVnYXRlcyB0byB7QGxpbmsgI2NoYW5nZU5vdGlmaWVyfSBhbmQgdG8ge0BsaW5rICNwYXJlbnRBZGFwdGVyRmFjdG9yeX0uDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgdm9pZCBmaXJlTm90aWZ5Q2hhbmdlZChOb3RpZmljYXRpb24gbm90aWZpY2F0aW9uKSB7DQorCQljaGFuZ2VOb3RpZmllci5maXJlTm90aWZ5Q2hhbmdlZChub3RpZmljYXRpb24pOw0KKw0KKwkJaWYgKHBhcmVudEFkYXB0ZXJGYWN0b3J5ICE9IG51bGwpIHsNCisJCQlwYXJlbnRBZGFwdGVyRmFjdG9yeS5maXJlTm90aWZ5Q2hhbmdlZChub3RpZmljYXRpb24pOw0KKwkJfQ0KKwl9DQorDQorCS8qKg0KKwkgKiBUaGlzIGRpc3Bvc2VzIGFsbCBvZiB0aGUgaXRlbSBwcm92aWRlcnMgY3JlYXRlZCBieSB0aGlzIGZhY3RvcnkuIA0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIHZvaWQgZGlzcG9zZSgpIHsNCisJCWlmIChvdmVyd3JpdGVJdGVtUHJvdmlkZXIgIT0gbnVsbCkgb3ZlcndyaXRlSXRlbVByb3ZpZGVyLmRpc3Bvc2UoKTsNCisJCWlmIChjb250cm9sT3BlcmF0b3JJdGVtUHJvdmlkZXIgIT0gbnVsbCkgY29udHJvbE9wZXJhdG9ySXRlbVByb3ZpZGVyLmRpc3Bvc2UoKTsNCisJCWlmIChyYXRlSXRlbVByb3ZpZGVyICE9IG51bGwpIHJhdGVJdGVtUHJvdmlkZXIuZGlzcG9zZSgpOw0KKwkJaWYgKG5vQnVmZmVySXRlbVByb3ZpZGVyICE9IG51bGwpIG5vQnVmZmVySXRlbVByb3ZpZGVyLmRpc3Bvc2UoKTsNCisJCWlmIChkaXNjcmV0ZUl0ZW1Qcm92aWRlciAhPSBudWxsKSBkaXNjcmV0ZUl0ZW1Qcm92aWRlci5kaXNwb3NlKCk7DQorCQlpZiAoY29udGludW91c0l0ZW1Qcm92aWRlciAhPSBudWxsKSBjb250aW51b3VzSXRlbVByb3ZpZGVyLmRpc3Bvc2UoKTsNCisJCWlmIChwcm9iYWJpbGl0eUl0ZW1Qcm92aWRlciAhPSBudWxsKSBwcm9iYWJpbGl0eUl0ZW1Qcm92aWRlci5kaXNwb3NlKCk7DQorCQlpZiAob3B0aW9uYWxJdGVtUHJvdmlkZXIgIT0gbnVsbCkgb3B0aW9uYWxJdGVtUHJvdmlkZXIuZGlzcG9zZSgpOw0KKwl9DQorDQorfQ0KZGlmZiAtLWdpdCBhL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmVkaXQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvYWN0aXZpdGllcy9wcm92aWRlci9Db250aW51b3VzSXRlbVByb3ZpZGVyLmphdmEgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5lZGl0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L2FjdGl2aXRpZXMvcHJvdmlkZXIvQ29udGludW91c0l0ZW1Qcm92aWRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc4ZDdjMmIKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5lZGl0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L2FjdGl2aXRpZXMvcHJvdmlkZXIvQ29udGludW91c0l0ZW1Qcm92aWRlci5qYXZhCkBAIC0wLDAgKzEsMTAwIEBACisvKioNCisgKiBDb3B5cmlnaHQgKGMpIDIwMTUgQ0VBIExJU1QuDQorICogDQorICogIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCisgKiAgYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQorICogIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQorICogIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICovDQorcGFja2FnZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYWN0aXZpdGllcy5wcm92aWRlcjsNCisNCisNCitpbXBvcnQgamF2YS51dGlsLkNvbGxlY3Rpb247DQoraW1wb3J0IGphdmEudXRpbC5MaXN0Ow0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY29tbW9uLm5vdGlmeS5BZGFwdGVyRmFjdG9yeTsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi5ub3RpZnkuTm90aWZpY2F0aW9uOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWRpdC5wcm92aWRlci5JSXRlbVByb3BlcnR5RGVzY3JpcHRvcjsNCisNCisvKioNCisgKiBUaGlzIGlzIHRoZSBpdGVtIHByb3ZpZGVyIGFkYXB0ZXIgZm9yIGEge0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5hY3Rpdml0aWVzLkNvbnRpbnVvdXN9IG9iamVjdC4NCisgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKyAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKyAqIEBnZW5lcmF0ZWQNCisgKi8NCitwdWJsaWMgY2xhc3MgQ29udGludW91c0l0ZW1Qcm92aWRlciBleHRlbmRzIFJhdGVJdGVtUHJvdmlkZXIgew0KKwkvKioNCisJICogVGhpcyBjb25zdHJ1Y3RzIGFuIGluc3RhbmNlIGZyb20gYSBmYWN0b3J5IGFuZCBhIG5vdGlmaWVyLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIENvbnRpbnVvdXNJdGVtUHJvdmlkZXIoQWRhcHRlckZhY3RvcnkgYWRhcHRlckZhY3RvcnkpIHsNCisJCXN1cGVyKGFkYXB0ZXJGYWN0b3J5KTsNCisJfQ0KKw0KKwkvKioNCisJICogVGhpcyByZXR1cm5zIHRoZSBwcm9wZXJ0eSBkZXNjcmlwdG9ycyBmb3IgdGhlIGFkYXB0ZWQgY2xhc3MuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIExpc3Q8SUl0ZW1Qcm9wZXJ0eURlc2NyaXB0b3I+IGdldFByb3BlcnR5RGVzY3JpcHRvcnMoT2JqZWN0IG9iamVjdCkgew0KKwkJaWYgKGl0ZW1Qcm9wZXJ0eURlc2NyaXB0b3JzID09IG51bGwpIHsNCisJCQlzdXBlci5nZXRQcm9wZXJ0eURlc2NyaXB0b3JzKG9iamVjdCk7DQorDQorCQl9DQorCQlyZXR1cm4gaXRlbVByb3BlcnR5RGVzY3JpcHRvcnM7DQorCX0NCisNCisJLyoqDQorCSAqIFRoaXMgcmV0dXJucyBDb250aW51b3VzLmdpZi4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgT2JqZWN0IGdldEltYWdlKE9iamVjdCBvYmplY3QpIHsNCisJCXJldHVybiBvdmVybGF5SW1hZ2Uob2JqZWN0LCBnZXRSZXNvdXJjZUxvY2F0b3IoKS5nZXRJbWFnZSgiZnVsbC9vYmoxNi9Db250aW51b3VzIikpOyAvLyROT04tTkxTLTEkDQorCX0NCisNCisJLyoqDQorCSAqIFRoaXMgcmV0dXJucyB0aGUgbGFiZWwgdGV4dCBmb3IgdGhlIGFkYXB0ZWQgY2xhc3MuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIFN0cmluZyBnZXRUZXh0KE9iamVjdCBvYmplY3QpIHsNCisJCXJldHVybiBnZXRTdHJpbmcoIl9VSV9Db250aW51b3VzX3R5cGUiKTsgLy8kTk9OLU5MUy0xJA0KKwl9DQorCQ0KKw0KKwkvKioNCisJICogVGhpcyBoYW5kbGVzIG1vZGVsIG5vdGlmaWNhdGlvbnMgYnkgY2FsbGluZyB7QGxpbmsgI3VwZGF0ZUNoaWxkcmVufSB0byB1cGRhdGUgYW55IGNhY2hlZA0KKwkgKiBjaGlsZHJlbiBhbmQgYnkgY3JlYXRpbmcgYSB2aWV3ZXIgbm90aWZpY2F0aW9uLCB3aGljaCBpdCBwYXNzZXMgdG8ge0BsaW5rICNmaXJlTm90aWZ5Q2hhbmdlZH0uDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIHZvaWQgbm90aWZ5Q2hhbmdlZChOb3RpZmljYXRpb24gbm90aWZpY2F0aW9uKSB7DQorCQl1cGRhdGVDaGlsZHJlbihub3RpZmljYXRpb24pOw0KKwkJc3VwZXIubm90aWZ5Q2hhbmdlZChub3RpZmljYXRpb24pOw0KKwl9DQorDQorCS8qKg0KKwkgKiBUaGlzIGFkZHMge0BsaW5rIG9yZy5lY2xpcHNlLmVtZi5lZGl0LmNvbW1hbmQuQ29tbWFuZFBhcmFtZXRlcn1zIGRlc2NyaWJpbmcgdGhlIGNoaWxkcmVuDQorCSAqIHRoYXQgY2FuIGJlIGNyZWF0ZWQgdW5kZXIgdGhpcyBvYmplY3QuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHJvdGVjdGVkIHZvaWQgY29sbGVjdE5ld0NoaWxkRGVzY3JpcHRvcnMoQ29sbGVjdGlvbjxPYmplY3Q+IG5ld0NoaWxkRGVzY3JpcHRvcnMsIE9iamVjdCBvYmplY3QpIHsNCisJCXN1cGVyLmNvbGxlY3ROZXdDaGlsZERlc2NyaXB0b3JzKG5ld0NoaWxkRGVzY3JpcHRvcnMsIG9iamVjdCk7DQorCX0NCisNCit9DQpkaWZmIC0tZ2l0IGEvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZWRpdC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9hY3Rpdml0aWVzL3Byb3ZpZGVyL0NvbnRyb2xPcGVyYXRvckl0ZW1Qcm92aWRlci5qYXZhIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZWRpdC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9hY3Rpdml0aWVzL3Byb3ZpZGVyL0NvbnRyb2xPcGVyYXRvckl0ZW1Qcm92aWRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhmZDAzYTMKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5lZGl0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L2FjdGl2aXRpZXMvcHJvdmlkZXIvQ29udHJvbE9wZXJhdG9ySXRlbVByb3ZpZGVyLmphdmEKQEAgLTAsMCArMSwxNzIgQEAKKy8qKg0KKyAqIENvcHlyaWdodCAoYykgMjAxNSBDRUEgTElTVC4NCisgKiANCisgKiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KKyAqICBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCisgKiAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCisgKiAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgKi8NCitwYWNrYWdlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5hY3Rpdml0aWVzLnByb3ZpZGVyOw0KKw0KKw0KK2ltcG9ydCBqYXZhLnV0aWwuQ29sbGVjdGlvbjsNCitpbXBvcnQgamF2YS51dGlsLkxpc3Q7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jb21tb24ubm90aWZ5LkFkYXB0ZXJGYWN0b3J5Ow0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY29tbW9uLm5vdGlmeS5Ob3RpZmljYXRpb247DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jb21tb24udXRpbC5SZXNvdXJjZUxvY2F0b3I7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lZGl0LnByb3ZpZGVyLkNvbXBvc2VhYmxlQWRhcHRlckZhY3Rvcnk7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lZGl0LnByb3ZpZGVyLklFZGl0aW5nRG9tYWluSXRlbVByb3ZpZGVyOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWRpdC5wcm92aWRlci5JSXRlbUxhYmVsUHJvdmlkZXI7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lZGl0LnByb3ZpZGVyLklJdGVtUHJvcGVydHlEZXNjcmlwdG9yOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWRpdC5wcm92aWRlci5JSXRlbVByb3BlcnR5U291cmNlOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWRpdC5wcm92aWRlci5JU3RydWN0dXJlZEl0ZW1Db250ZW50UHJvdmlkZXI7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lZGl0LnByb3ZpZGVyLklUcmVlSXRlbUNvbnRlbnRQcm92aWRlcjsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVkaXQucHJvdmlkZXIuSXRlbVByb3ZpZGVyQWRhcHRlcjsNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmFjdGl2aXRpZXMuQWN0aXZpdGllc1BhY2thZ2U7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5wcm92aWRlci5TeXNtbEVkaXRQbHVnaW47DQorDQorLyoqDQorICogVGhpcyBpcyB0aGUgaXRlbSBwcm92aWRlciBhZGFwdGVyIGZvciBhIHtAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYWN0aXZpdGllcy5Db250cm9sT3BlcmF0b3J9IG9iamVjdC4NCisgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKyAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKyAqIEBnZW5lcmF0ZWQNCisgKi8NCitwdWJsaWMgY2xhc3MgQ29udHJvbE9wZXJhdG9ySXRlbVByb3ZpZGVyIA0KKwlleHRlbmRzIEl0ZW1Qcm92aWRlckFkYXB0ZXINCisJaW1wbGVtZW50cw0KKwkJSUVkaXRpbmdEb21haW5JdGVtUHJvdmlkZXIsDQorCQlJU3RydWN0dXJlZEl0ZW1Db250ZW50UHJvdmlkZXIsDQorCQlJVHJlZUl0ZW1Db250ZW50UHJvdmlkZXIsDQorCQlJSXRlbUxhYmVsUHJvdmlkZXIsDQorCQlJSXRlbVByb3BlcnR5U291cmNlIHsNCisJLyoqDQorCSAqIFRoaXMgY29uc3RydWN0cyBhbiBpbnN0YW5jZSBmcm9tIGEgZmFjdG9yeSBhbmQgYSBub3RpZmllci4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBDb250cm9sT3BlcmF0b3JJdGVtUHJvdmlkZXIoQWRhcHRlckZhY3RvcnkgYWRhcHRlckZhY3RvcnkpIHsNCisJCXN1cGVyKGFkYXB0ZXJGYWN0b3J5KTsNCisJfQ0KKw0KKwkvKioNCisJICogVGhpcyByZXR1cm5zIHRoZSBwcm9wZXJ0eSBkZXNjcmlwdG9ycyBmb3IgdGhlIGFkYXB0ZWQgY2xhc3MuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIExpc3Q8SUl0ZW1Qcm9wZXJ0eURlc2NyaXB0b3I+IGdldFByb3BlcnR5RGVzY3JpcHRvcnMoT2JqZWN0IG9iamVjdCkgew0KKwkJaWYgKGl0ZW1Qcm9wZXJ0eURlc2NyaXB0b3JzID09IG51bGwpIHsNCisJCQlzdXBlci5nZXRQcm9wZXJ0eURlc2NyaXB0b3JzKG9iamVjdCk7DQorDQorCQkJYWRkQmFzZV9CZWhhdmlvclByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QpOw0KKwkJCWFkZEJhc2VfT3BlcmF0aW9uUHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCk7DQorCQl9DQorCQlyZXR1cm4gaXRlbVByb3BlcnR5RGVzY3JpcHRvcnM7DQorCX0NCisNCisJLyoqDQorCSAqIFRoaXMgYWRkcyBhIHByb3BlcnR5IGRlc2NyaXB0b3IgZm9yIHRoZSBCYXNlIEJlaGF2aW9yIGZlYXR1cmUuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwcm90ZWN0ZWQgdm9pZCBhZGRCYXNlX0JlaGF2aW9yUHJvcGVydHlEZXNjcmlwdG9yKE9iamVjdCBvYmplY3QpIHsNCisJCWl0ZW1Qcm9wZXJ0eURlc2NyaXB0b3JzLmFkZA0KKwkJCShjcmVhdGVJdGVtUHJvcGVydHlEZXNjcmlwdG9yDQorCQkJCSgoKENvbXBvc2VhYmxlQWRhcHRlckZhY3RvcnkpYWRhcHRlckZhY3RvcnkpLmdldFJvb3RBZGFwdGVyRmFjdG9yeSgpLA0KKwkJCQkgZ2V0UmVzb3VyY2VMb2NhdG9yKCksDQorCQkJCSBnZXRTdHJpbmcoIl9VSV9Db250cm9sT3BlcmF0b3JfYmFzZV9CZWhhdmlvcl9mZWF0dXJlIiksIC8vJE5PTi1OTFMtMSQNCisJCQkJIGdldFN0cmluZygiX1VJX1Byb3BlcnR5RGVzY3JpcHRvcl9kZXNjcmlwdGlvbiIsICJfVUlfQ29udHJvbE9wZXJhdG9yX2Jhc2VfQmVoYXZpb3JfZmVhdHVyZSIsICJfVUlfQ29udHJvbE9wZXJhdG9yX3R5cGUiKSwgLy8kTk9OLU5MUy0xJCAvLyROT04tTkxTLTIkIC8vJE5PTi1OTFMtMyQNCisJCQkJIEFjdGl2aXRpZXNQYWNrYWdlLkxpdGVyYWxzLkNPTlRST0xfT1BFUkFUT1JfX0JBU0VfQkVIQVZJT1IsDQorCQkJCSB0cnVlLA0KKwkJCQkgZmFsc2UsDQorCQkJCSB0cnVlLA0KKwkJCQkgbnVsbCwNCisJCQkJIG51bGwsDQorCQkJCSBudWxsKSk7DQorCX0NCisNCisJLyoqDQorCSAqIFRoaXMgYWRkcyBhIHByb3BlcnR5IGRlc2NyaXB0b3IgZm9yIHRoZSBCYXNlIE9wZXJhdGlvbiBmZWF0dXJlLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHJvdGVjdGVkIHZvaWQgYWRkQmFzZV9PcGVyYXRpb25Qcm9wZXJ0eURlc2NyaXB0b3IoT2JqZWN0IG9iamVjdCkgew0KKwkJaXRlbVByb3BlcnR5RGVzY3JpcHRvcnMuYWRkDQorCQkJKGNyZWF0ZUl0ZW1Qcm9wZXJ0eURlc2NyaXB0b3INCisJCQkJKCgoQ29tcG9zZWFibGVBZGFwdGVyRmFjdG9yeSlhZGFwdGVyRmFjdG9yeSkuZ2V0Um9vdEFkYXB0ZXJGYWN0b3J5KCksDQorCQkJCSBnZXRSZXNvdXJjZUxvY2F0b3IoKSwNCisJCQkJIGdldFN0cmluZygiX1VJX0NvbnRyb2xPcGVyYXRvcl9iYXNlX09wZXJhdGlvbl9mZWF0dXJlIiksIC8vJE5PTi1OTFMtMSQNCisJCQkJIGdldFN0cmluZygiX1VJX1Byb3BlcnR5RGVzY3JpcHRvcl9kZXNjcmlwdGlvbiIsICJfVUlfQ29udHJvbE9wZXJhdG9yX2Jhc2VfT3BlcmF0aW9uX2ZlYXR1cmUiLCAiX1VJX0NvbnRyb2xPcGVyYXRvcl90eXBlIiksIC8vJE5PTi1OTFMtMSQgLy8kTk9OLU5MUy0yJCAvLyROT04tTkxTLTMkDQorCQkJCSBBY3Rpdml0aWVzUGFja2FnZS5MaXRlcmFscy5DT05UUk9MX09QRVJBVE9SX19CQVNFX09QRVJBVElPTiwNCisJCQkJIHRydWUsDQorCQkJCSBmYWxzZSwNCisJCQkJIHRydWUsDQorCQkJCSBudWxsLA0KKwkJCQkgbnVsbCwNCisJCQkJIG51bGwpKTsNCisJfQ0KKw0KKwkvKioNCisJICogVGhpcyByZXR1cm5zIENvbnRyb2xPcGVyYXRvci5naWYuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIE9iamVjdCBnZXRJbWFnZShPYmplY3Qgb2JqZWN0KSB7DQorCQlyZXR1cm4gb3ZlcmxheUltYWdlKG9iamVjdCwgZ2V0UmVzb3VyY2VMb2NhdG9yKCkuZ2V0SW1hZ2UoImZ1bGwvb2JqMTYvQ29udHJvbE9wZXJhdG9yIikpOyAvLyROT04tTkxTLTEkDQorCX0NCisNCisJLyoqDQorCSAqIFRoaXMgcmV0dXJucyB0aGUgbGFiZWwgdGV4dCBmb3IgdGhlIGFkYXB0ZWQgY2xhc3MuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIFN0cmluZyBnZXRUZXh0KE9iamVjdCBvYmplY3QpIHsNCisJCXJldHVybiBnZXRTdHJpbmcoIl9VSV9Db250cm9sT3BlcmF0b3JfdHlwZSIpOyAvLyROT04tTkxTLTEkDQorCX0NCisJDQorDQorCS8qKg0KKwkgKiBUaGlzIGhhbmRsZXMgbW9kZWwgbm90aWZpY2F0aW9ucyBieSBjYWxsaW5nIHtAbGluayAjdXBkYXRlQ2hpbGRyZW59IHRvIHVwZGF0ZSBhbnkgY2FjaGVkDQorCSAqIGNoaWxkcmVuIGFuZCBieSBjcmVhdGluZyBhIHZpZXdlciBub3RpZmljYXRpb24sIHdoaWNoIGl0IHBhc3NlcyB0byB7QGxpbmsgI2ZpcmVOb3RpZnlDaGFuZ2VkfS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgdm9pZCBub3RpZnlDaGFuZ2VkKE5vdGlmaWNhdGlvbiBub3RpZmljYXRpb24pIHsNCisJCXVwZGF0ZUNoaWxkcmVuKG5vdGlmaWNhdGlvbik7DQorCQlzdXBlci5ub3RpZnlDaGFuZ2VkKG5vdGlmaWNhdGlvbik7DQorCX0NCisNCisJLyoqDQorCSAqIFRoaXMgYWRkcyB7QGxpbmsgb3JnLmVjbGlwc2UuZW1mLmVkaXQuY29tbWFuZC5Db21tYW5kUGFyYW1ldGVyfXMgZGVzY3JpYmluZyB0aGUgY2hpbGRyZW4NCisJICogdGhhdCBjYW4gYmUgY3JlYXRlZCB1bmRlciB0aGlzIG9iamVjdC4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwcm90ZWN0ZWQgdm9pZCBjb2xsZWN0TmV3Q2hpbGREZXNjcmlwdG9ycyhDb2xsZWN0aW9uPE9iamVjdD4gbmV3Q2hpbGREZXNjcmlwdG9ycywgT2JqZWN0IG9iamVjdCkgew0KKwkJc3VwZXIuY29sbGVjdE5ld0NoaWxkRGVzY3JpcHRvcnMobmV3Q2hpbGREZXNjcmlwdG9ycywgb2JqZWN0KTsNCisJfQ0KKw0KKwkvKioNCisJICogUmV0dXJuIHRoZSByZXNvdXJjZSBsb2NhdG9yIGZvciB0aGlzIGl0ZW0gcHJvdmlkZXIncyByZXNvdXJjZXMuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIFJlc291cmNlTG9jYXRvciBnZXRSZXNvdXJjZUxvY2F0b3IoKSB7DQorCQlyZXR1cm4gU3lzbWxFZGl0UGx1Z2luLklOU1RBTkNFOw0KKwl9DQorDQorfQ0KZGlmZiAtLWdpdCBhL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmVkaXQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvYWN0aXZpdGllcy9wcm92aWRlci9EaXNjcmV0ZUl0ZW1Qcm92aWRlci5qYXZhIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZWRpdC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9hY3Rpdml0aWVzL3Byb3ZpZGVyL0Rpc2NyZXRlSXRlbVByb3ZpZGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWFjYjc3YgotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmVkaXQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvYWN0aXZpdGllcy9wcm92aWRlci9EaXNjcmV0ZUl0ZW1Qcm92aWRlci5qYXZhCkBAIC0wLDAgKzEsMTAwIEBACisvKioNCisgKiBDb3B5cmlnaHQgKGMpIDIwMTUgQ0VBIExJU1QuDQorICogDQorICogIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCisgKiAgYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQorICogIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQorICogIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICovDQorcGFja2FnZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYWN0aXZpdGllcy5wcm92aWRlcjsNCisNCisNCitpbXBvcnQgamF2YS51dGlsLkNvbGxlY3Rpb247DQoraW1wb3J0IGphdmEudXRpbC5MaXN0Ow0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY29tbW9uLm5vdGlmeS5BZGFwdGVyRmFjdG9yeTsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi5ub3RpZnkuTm90aWZpY2F0aW9uOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWRpdC5wcm92aWRlci5JSXRlbVByb3BlcnR5RGVzY3JpcHRvcjsNCisNCisvKioNCisgKiBUaGlzIGlzIHRoZSBpdGVtIHByb3ZpZGVyIGFkYXB0ZXIgZm9yIGEge0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5hY3Rpdml0aWVzLkRpc2NyZXRlfSBvYmplY3QuDQorICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisgKiBAZ2VuZXJhdGVkDQorICovDQorcHVibGljIGNsYXNzIERpc2NyZXRlSXRlbVByb3ZpZGVyIGV4dGVuZHMgUmF0ZUl0ZW1Qcm92aWRlciB7DQorCS8qKg0KKwkgKiBUaGlzIGNvbnN0cnVjdHMgYW4gaW5zdGFuY2UgZnJvbSBhIGZhY3RvcnkgYW5kIGEgbm90aWZpZXIuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgRGlzY3JldGVJdGVtUHJvdmlkZXIoQWRhcHRlckZhY3RvcnkgYWRhcHRlckZhY3RvcnkpIHsNCisJCXN1cGVyKGFkYXB0ZXJGYWN0b3J5KTsNCisJfQ0KKw0KKwkvKioNCisJICogVGhpcyByZXR1cm5zIHRoZSBwcm9wZXJ0eSBkZXNjcmlwdG9ycyBmb3IgdGhlIGFkYXB0ZWQgY2xhc3MuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIExpc3Q8SUl0ZW1Qcm9wZXJ0eURlc2NyaXB0b3I+IGdldFByb3BlcnR5RGVzY3JpcHRvcnMoT2JqZWN0IG9iamVjdCkgew0KKwkJaWYgKGl0ZW1Qcm9wZXJ0eURlc2NyaXB0b3JzID09IG51bGwpIHsNCisJCQlzdXBlci5nZXRQcm9wZXJ0eURlc2NyaXB0b3JzKG9iamVjdCk7DQorDQorCQl9DQorCQlyZXR1cm4gaXRlbVByb3BlcnR5RGVzY3JpcHRvcnM7DQorCX0NCisNCisJLyoqDQorCSAqIFRoaXMgcmV0dXJucyBEaXNjcmV0ZS5naWYuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIE9iamVjdCBnZXRJbWFnZShPYmplY3Qgb2JqZWN0KSB7DQorCQlyZXR1cm4gb3ZlcmxheUltYWdlKG9iamVjdCwgZ2V0UmVzb3VyY2VMb2NhdG9yKCkuZ2V0SW1hZ2UoImZ1bGwvb2JqMTYvRGlzY3JldGUiKSk7IC8vJE5PTi1OTFMtMSQNCisJfQ0KKw0KKwkvKioNCisJICogVGhpcyByZXR1cm5zIHRoZSBsYWJlbCB0ZXh0IGZvciB0aGUgYWRhcHRlZCBjbGFzcy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgU3RyaW5nIGdldFRleHQoT2JqZWN0IG9iamVjdCkgew0KKwkJcmV0dXJuIGdldFN0cmluZygiX1VJX0Rpc2NyZXRlX3R5cGUiKTsgLy8kTk9OLU5MUy0xJA0KKwl9DQorCQ0KKw0KKwkvKioNCisJICogVGhpcyBoYW5kbGVzIG1vZGVsIG5vdGlmaWNhdGlvbnMgYnkgY2FsbGluZyB7QGxpbmsgI3VwZGF0ZUNoaWxkcmVufSB0byB1cGRhdGUgYW55IGNhY2hlZA0KKwkgKiBjaGlsZHJlbiBhbmQgYnkgY3JlYXRpbmcgYSB2aWV3ZXIgbm90aWZpY2F0aW9uLCB3aGljaCBpdCBwYXNzZXMgdG8ge0BsaW5rICNmaXJlTm90aWZ5Q2hhbmdlZH0uDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIHZvaWQgbm90aWZ5Q2hhbmdlZChOb3RpZmljYXRpb24gbm90aWZpY2F0aW9uKSB7DQorCQl1cGRhdGVDaGlsZHJlbihub3RpZmljYXRpb24pOw0KKwkJc3VwZXIubm90aWZ5Q2hhbmdlZChub3RpZmljYXRpb24pOw0KKwl9DQorDQorCS8qKg0KKwkgKiBUaGlzIGFkZHMge0BsaW5rIG9yZy5lY2xpcHNlLmVtZi5lZGl0LmNvbW1hbmQuQ29tbWFuZFBhcmFtZXRlcn1zIGRlc2NyaWJpbmcgdGhlIGNoaWxkcmVuDQorCSAqIHRoYXQgY2FuIGJlIGNyZWF0ZWQgdW5kZXIgdGhpcyBvYmplY3QuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHJvdGVjdGVkIHZvaWQgY29sbGVjdE5ld0NoaWxkRGVzY3JpcHRvcnMoQ29sbGVjdGlvbjxPYmplY3Q+IG5ld0NoaWxkRGVzY3JpcHRvcnMsIE9iamVjdCBvYmplY3QpIHsNCisJCXN1cGVyLmNvbGxlY3ROZXdDaGlsZERlc2NyaXB0b3JzKG5ld0NoaWxkRGVzY3JpcHRvcnMsIG9iamVjdCk7DQorCX0NCisNCit9DQpkaWZmIC0tZ2l0IGEvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZWRpdC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9hY3Rpdml0aWVzL3Byb3ZpZGVyL05vQnVmZmVySXRlbVByb3ZpZGVyLmphdmEgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5lZGl0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L2FjdGl2aXRpZXMvcHJvdmlkZXIvTm9CdWZmZXJJdGVtUHJvdmlkZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZjExY2NjCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZWRpdC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9hY3Rpdml0aWVzL3Byb3ZpZGVyL05vQnVmZmVySXRlbVByb3ZpZGVyLmphdmEKQEAgLTAsMCArMSwxNDkgQEAKKy8qKg0KKyAqIENvcHlyaWdodCAoYykgMjAxNSBDRUEgTElTVC4NCisgKiANCisgKiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KKyAqICBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCisgKiAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCisgKiAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgKi8NCitwYWNrYWdlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5hY3Rpdml0aWVzLnByb3ZpZGVyOw0KKw0KKw0KK2ltcG9ydCBqYXZhLnV0aWwuQ29sbGVjdGlvbjsNCitpbXBvcnQgamF2YS51dGlsLkxpc3Q7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jb21tb24ubm90aWZ5LkFkYXB0ZXJGYWN0b3J5Ow0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY29tbW9uLm5vdGlmeS5Ob3RpZmljYXRpb247DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jb21tb24udXRpbC5SZXNvdXJjZUxvY2F0b3I7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lZGl0LnByb3ZpZGVyLkNvbXBvc2VhYmxlQWRhcHRlckZhY3Rvcnk7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lZGl0LnByb3ZpZGVyLklFZGl0aW5nRG9tYWluSXRlbVByb3ZpZGVyOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWRpdC5wcm92aWRlci5JSXRlbUxhYmVsUHJvdmlkZXI7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lZGl0LnByb3ZpZGVyLklJdGVtUHJvcGVydHlEZXNjcmlwdG9yOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWRpdC5wcm92aWRlci5JSXRlbVByb3BlcnR5U291cmNlOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWRpdC5wcm92aWRlci5JU3RydWN0dXJlZEl0ZW1Db250ZW50UHJvdmlkZXI7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lZGl0LnByb3ZpZGVyLklUcmVlSXRlbUNvbnRlbnRQcm92aWRlcjsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVkaXQucHJvdmlkZXIuSXRlbVByb3ZpZGVyQWRhcHRlcjsNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmFjdGl2aXRpZXMuQWN0aXZpdGllc1BhY2thZ2U7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5wcm92aWRlci5TeXNtbEVkaXRQbHVnaW47DQorDQorLyoqDQorICogVGhpcyBpcyB0aGUgaXRlbSBwcm92aWRlciBhZGFwdGVyIGZvciBhIHtAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYWN0aXZpdGllcy5Ob0J1ZmZlcn0gb2JqZWN0Lg0KKyAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorICogQGdlbmVyYXRlZA0KKyAqLw0KK3B1YmxpYyBjbGFzcyBOb0J1ZmZlckl0ZW1Qcm92aWRlciANCisJZXh0ZW5kcyBJdGVtUHJvdmlkZXJBZGFwdGVyDQorCWltcGxlbWVudHMNCisJCUlFZGl0aW5nRG9tYWluSXRlbVByb3ZpZGVyLA0KKwkJSVN0cnVjdHVyZWRJdGVtQ29udGVudFByb3ZpZGVyLA0KKwkJSVRyZWVJdGVtQ29udGVudFByb3ZpZGVyLA0KKwkJSUl0ZW1MYWJlbFByb3ZpZGVyLA0KKwkJSUl0ZW1Qcm9wZXJ0eVNvdXJjZSB7DQorCS8qKg0KKwkgKiBUaGlzIGNvbnN0cnVjdHMgYW4gaW5zdGFuY2UgZnJvbSBhIGZhY3RvcnkgYW5kIGEgbm90aWZpZXIuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgTm9CdWZmZXJJdGVtUHJvdmlkZXIoQWRhcHRlckZhY3RvcnkgYWRhcHRlckZhY3RvcnkpIHsNCisJCXN1cGVyKGFkYXB0ZXJGYWN0b3J5KTsNCisJfQ0KKw0KKwkvKioNCisJICogVGhpcyByZXR1cm5zIHRoZSBwcm9wZXJ0eSBkZXNjcmlwdG9ycyBmb3IgdGhlIGFkYXB0ZWQgY2xhc3MuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIExpc3Q8SUl0ZW1Qcm9wZXJ0eURlc2NyaXB0b3I+IGdldFByb3BlcnR5RGVzY3JpcHRvcnMoT2JqZWN0IG9iamVjdCkgew0KKwkJaWYgKGl0ZW1Qcm9wZXJ0eURlc2NyaXB0b3JzID09IG51bGwpIHsNCisJCQlzdXBlci5nZXRQcm9wZXJ0eURlc2NyaXB0b3JzKG9iamVjdCk7DQorDQorCQkJYWRkQmFzZV9PYmplY3ROb2RlUHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCk7DQorCQl9DQorCQlyZXR1cm4gaXRlbVByb3BlcnR5RGVzY3JpcHRvcnM7DQorCX0NCisNCisJLyoqDQorCSAqIFRoaXMgYWRkcyBhIHByb3BlcnR5IGRlc2NyaXB0b3IgZm9yIHRoZSBCYXNlIE9iamVjdCBOb2RlIGZlYXR1cmUuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwcm90ZWN0ZWQgdm9pZCBhZGRCYXNlX09iamVjdE5vZGVQcm9wZXJ0eURlc2NyaXB0b3IoT2JqZWN0IG9iamVjdCkgew0KKwkJaXRlbVByb3BlcnR5RGVzY3JpcHRvcnMuYWRkDQorCQkJKGNyZWF0ZUl0ZW1Qcm9wZXJ0eURlc2NyaXB0b3INCisJCQkJKCgoQ29tcG9zZWFibGVBZGFwdGVyRmFjdG9yeSlhZGFwdGVyRmFjdG9yeSkuZ2V0Um9vdEFkYXB0ZXJGYWN0b3J5KCksDQorCQkJCSBnZXRSZXNvdXJjZUxvY2F0b3IoKSwNCisJCQkJIGdldFN0cmluZygiX1VJX05vQnVmZmVyX2Jhc2VfT2JqZWN0Tm9kZV9mZWF0dXJlIiksIC8vJE5PTi1OTFMtMSQNCisJCQkJIGdldFN0cmluZygiX1VJX1Byb3BlcnR5RGVzY3JpcHRvcl9kZXNjcmlwdGlvbiIsICJfVUlfTm9CdWZmZXJfYmFzZV9PYmplY3ROb2RlX2ZlYXR1cmUiLCAiX1VJX05vQnVmZmVyX3R5cGUiKSwgLy8kTk9OLU5MUy0xJCAvLyROT04tTkxTLTIkIC8vJE5PTi1OTFMtMyQNCisJCQkJIEFjdGl2aXRpZXNQYWNrYWdlLkxpdGVyYWxzLk5PX0JVRkZFUl9fQkFTRV9PQkpFQ1RfTk9ERSwNCisJCQkJIHRydWUsDQorCQkJCSBmYWxzZSwNCisJCQkJIHRydWUsDQorCQkJCSBudWxsLA0KKwkJCQkgbnVsbCwNCisJCQkJIG51bGwpKTsNCisJfQ0KKw0KKwkvKioNCisJICogVGhpcyByZXR1cm5zIE5vQnVmZmVyLmdpZi4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgT2JqZWN0IGdldEltYWdlKE9iamVjdCBvYmplY3QpIHsNCisJCXJldHVybiBvdmVybGF5SW1hZ2Uob2JqZWN0LCBnZXRSZXNvdXJjZUxvY2F0b3IoKS5nZXRJbWFnZSgiZnVsbC9vYmoxNi9Ob0J1ZmZlciIpKTsgLy8kTk9OLU5MUy0xJA0KKwl9DQorDQorCS8qKg0KKwkgKiBUaGlzIHJldHVybnMgdGhlIGxhYmVsIHRleHQgZm9yIHRoZSBhZGFwdGVkIGNsYXNzLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXB1YmxpYyBTdHJpbmcgZ2V0VGV4dChPYmplY3Qgb2JqZWN0KSB7DQorCQlyZXR1cm4gZ2V0U3RyaW5nKCJfVUlfTm9CdWZmZXJfdHlwZSIpOyAvLyROT04tTkxTLTEkDQorCX0NCisJDQorDQorCS8qKg0KKwkgKiBUaGlzIGhhbmRsZXMgbW9kZWwgbm90aWZpY2F0aW9ucyBieSBjYWxsaW5nIHtAbGluayAjdXBkYXRlQ2hpbGRyZW59IHRvIHVwZGF0ZSBhbnkgY2FjaGVkDQorCSAqIGNoaWxkcmVuIGFuZCBieSBjcmVhdGluZyBhIHZpZXdlciBub3RpZmljYXRpb24sIHdoaWNoIGl0IHBhc3NlcyB0byB7QGxpbmsgI2ZpcmVOb3RpZnlDaGFuZ2VkfS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgdm9pZCBub3RpZnlDaGFuZ2VkKE5vdGlmaWNhdGlvbiBub3RpZmljYXRpb24pIHsNCisJCXVwZGF0ZUNoaWxkcmVuKG5vdGlmaWNhdGlvbik7DQorCQlzdXBlci5ub3RpZnlDaGFuZ2VkKG5vdGlmaWNhdGlvbik7DQorCX0NCisNCisJLyoqDQorCSAqIFRoaXMgYWRkcyB7QGxpbmsgb3JnLmVjbGlwc2UuZW1mLmVkaXQuY29tbWFuZC5Db21tYW5kUGFyYW1ldGVyfXMgZGVzY3JpYmluZyB0aGUgY2hpbGRyZW4NCisJICogdGhhdCBjYW4gYmUgY3JlYXRlZCB1bmRlciB0aGlzIG9iamVjdC4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwcm90ZWN0ZWQgdm9pZCBjb2xsZWN0TmV3Q2hpbGREZXNjcmlwdG9ycyhDb2xsZWN0aW9uPE9iamVjdD4gbmV3Q2hpbGREZXNjcmlwdG9ycywgT2JqZWN0IG9iamVjdCkgew0KKwkJc3VwZXIuY29sbGVjdE5ld0NoaWxkRGVzY3JpcHRvcnMobmV3Q2hpbGREZXNjcmlwdG9ycywgb2JqZWN0KTsNCisJfQ0KKw0KKwkvKioNCisJICogUmV0dXJuIHRoZSByZXNvdXJjZSBsb2NhdG9yIGZvciB0aGlzIGl0ZW0gcHJvdmlkZXIncyByZXNvdXJjZXMuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIFJlc291cmNlTG9jYXRvciBnZXRSZXNvdXJjZUxvY2F0b3IoKSB7DQorCQlyZXR1cm4gU3lzbWxFZGl0UGx1Z2luLklOU1RBTkNFOw0KKwl9DQorDQorfQ0KZGlmZiAtLWdpdCBhL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmVkaXQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvYWN0aXZpdGllcy9wcm92aWRlci9PcHRpb25hbEl0ZW1Qcm92aWRlci5qYXZhIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZWRpdC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9hY3Rpdml0aWVzL3Byb3ZpZGVyL09wdGlvbmFsSXRlbVByb3ZpZGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzEzMTcwYQotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmVkaXQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvYWN0aXZpdGllcy9wcm92aWRlci9PcHRpb25hbEl0ZW1Qcm92aWRlci5qYXZhCkBAIC0wLDAgKzEsMTQ5IEBACisvKioNCisgKiBDb3B5cmlnaHQgKGMpIDIwMTUgQ0VBIExJU1QuDQorICogDQorICogIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCisgKiAgYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQorICogIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQorICogIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICovDQorcGFja2FnZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYWN0aXZpdGllcy5wcm92aWRlcjsNCisNCisNCitpbXBvcnQgamF2YS51dGlsLkNvbGxlY3Rpb247DQoraW1wb3J0IGphdmEudXRpbC5MaXN0Ow0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY29tbW9uLm5vdGlmeS5BZGFwdGVyRmFjdG9yeTsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi5ub3RpZnkuTm90aWZpY2F0aW9uOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY29tbW9uLnV0aWwuUmVzb3VyY2VMb2NhdG9yOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWRpdC5wcm92aWRlci5Db21wb3NlYWJsZUFkYXB0ZXJGYWN0b3J5Ow0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWRpdC5wcm92aWRlci5JRWRpdGluZ0RvbWFpbkl0ZW1Qcm92aWRlcjsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVkaXQucHJvdmlkZXIuSUl0ZW1MYWJlbFByb3ZpZGVyOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWRpdC5wcm92aWRlci5JSXRlbVByb3BlcnR5RGVzY3JpcHRvcjsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVkaXQucHJvdmlkZXIuSUl0ZW1Qcm9wZXJ0eVNvdXJjZTsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVkaXQucHJvdmlkZXIuSVN0cnVjdHVyZWRJdGVtQ29udGVudFByb3ZpZGVyOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWRpdC5wcm92aWRlci5JVHJlZUl0ZW1Db250ZW50UHJvdmlkZXI7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lZGl0LnByb3ZpZGVyLkl0ZW1Qcm92aWRlckFkYXB0ZXI7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5hY3Rpdml0aWVzLkFjdGl2aXRpZXNQYWNrYWdlOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucHJvdmlkZXIuU3lzbWxFZGl0UGx1Z2luOw0KKw0KKy8qKg0KKyAqIFRoaXMgaXMgdGhlIGl0ZW0gcHJvdmlkZXIgYWRhcHRlciBmb3IgYSB7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmFjdGl2aXRpZXMuT3B0aW9uYWx9IG9iamVjdC4NCisgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKyAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKyAqIEBnZW5lcmF0ZWQNCisgKi8NCitwdWJsaWMgY2xhc3MgT3B0aW9uYWxJdGVtUHJvdmlkZXIgDQorCWV4dGVuZHMgSXRlbVByb3ZpZGVyQWRhcHRlcg0KKwlpbXBsZW1lbnRzDQorCQlJRWRpdGluZ0RvbWFpbkl0ZW1Qcm92aWRlciwNCisJCUlTdHJ1Y3R1cmVkSXRlbUNvbnRlbnRQcm92aWRlciwNCisJCUlUcmVlSXRlbUNvbnRlbnRQcm92aWRlciwNCisJCUlJdGVtTGFiZWxQcm92aWRlciwNCisJCUlJdGVtUHJvcGVydHlTb3VyY2Ugew0KKwkvKioNCisJICogVGhpcyBjb25zdHJ1Y3RzIGFuIGluc3RhbmNlIGZyb20gYSBmYWN0b3J5IGFuZCBhIG5vdGlmaWVyLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIE9wdGlvbmFsSXRlbVByb3ZpZGVyKEFkYXB0ZXJGYWN0b3J5IGFkYXB0ZXJGYWN0b3J5KSB7DQorCQlzdXBlcihhZGFwdGVyRmFjdG9yeSk7DQorCX0NCisNCisJLyoqDQorCSAqIFRoaXMgcmV0dXJucyB0aGUgcHJvcGVydHkgZGVzY3JpcHRvcnMgZm9yIHRoZSBhZGFwdGVkIGNsYXNzLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXB1YmxpYyBMaXN0PElJdGVtUHJvcGVydHlEZXNjcmlwdG9yPiBnZXRQcm9wZXJ0eURlc2NyaXB0b3JzKE9iamVjdCBvYmplY3QpIHsNCisJCWlmIChpdGVtUHJvcGVydHlEZXNjcmlwdG9ycyA9PSBudWxsKSB7DQorCQkJc3VwZXIuZ2V0UHJvcGVydHlEZXNjcmlwdG9ycyhvYmplY3QpOw0KKw0KKwkJCWFkZEJhc2VfUGFyYW1ldGVyUHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCk7DQorCQl9DQorCQlyZXR1cm4gaXRlbVByb3BlcnR5RGVzY3JpcHRvcnM7DQorCX0NCisNCisJLyoqDQorCSAqIFRoaXMgYWRkcyBhIHByb3BlcnR5IGRlc2NyaXB0b3IgZm9yIHRoZSBCYXNlIFBhcmFtZXRlciBmZWF0dXJlLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHJvdGVjdGVkIHZvaWQgYWRkQmFzZV9QYXJhbWV0ZXJQcm9wZXJ0eURlc2NyaXB0b3IoT2JqZWN0IG9iamVjdCkgew0KKwkJaXRlbVByb3BlcnR5RGVzY3JpcHRvcnMuYWRkDQorCQkJKGNyZWF0ZUl0ZW1Qcm9wZXJ0eURlc2NyaXB0b3INCisJCQkJKCgoQ29tcG9zZWFibGVBZGFwdGVyRmFjdG9yeSlhZGFwdGVyRmFjdG9yeSkuZ2V0Um9vdEFkYXB0ZXJGYWN0b3J5KCksDQorCQkJCSBnZXRSZXNvdXJjZUxvY2F0b3IoKSwNCisJCQkJIGdldFN0cmluZygiX1VJX09wdGlvbmFsX2Jhc2VfUGFyYW1ldGVyX2ZlYXR1cmUiKSwgLy8kTk9OLU5MUy0xJA0KKwkJCQkgZ2V0U3RyaW5nKCJfVUlfUHJvcGVydHlEZXNjcmlwdG9yX2Rlc2NyaXB0aW9uIiwgIl9VSV9PcHRpb25hbF9iYXNlX1BhcmFtZXRlcl9mZWF0dXJlIiwgIl9VSV9PcHRpb25hbF90eXBlIiksIC8vJE5PTi1OTFMtMSQgLy8kTk9OLU5MUy0yJCAvLyROT04tTkxTLTMkDQorCQkJCSBBY3Rpdml0aWVzUGFja2FnZS5MaXRlcmFscy5PUFRJT05BTF9fQkFTRV9QQVJBTUVURVIsDQorCQkJCSB0cnVlLA0KKwkJCQkgZmFsc2UsDQorCQkJCSB0cnVlLA0KKwkJCQkgbnVsbCwNCisJCQkJIG51bGwsDQorCQkJCSBudWxsKSk7DQorCX0NCisNCisJLyoqDQorCSAqIFRoaXMgcmV0dXJucyBPcHRpb25hbC5naWYuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIE9iamVjdCBnZXRJbWFnZShPYmplY3Qgb2JqZWN0KSB7DQorCQlyZXR1cm4gb3ZlcmxheUltYWdlKG9iamVjdCwgZ2V0UmVzb3VyY2VMb2NhdG9yKCkuZ2V0SW1hZ2UoImZ1bGwvb2JqMTYvT3B0aW9uYWwiKSk7IC8vJE5PTi1OTFMtMSQNCisJfQ0KKw0KKwkvKioNCisJICogVGhpcyByZXR1cm5zIHRoZSBsYWJlbCB0ZXh0IGZvciB0aGUgYWRhcHRlZCBjbGFzcy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgU3RyaW5nIGdldFRleHQoT2JqZWN0IG9iamVjdCkgew0KKwkJcmV0dXJuIGdldFN0cmluZygiX1VJX09wdGlvbmFsX3R5cGUiKTsgLy8kTk9OLU5MUy0xJA0KKwl9DQorCQ0KKw0KKwkvKioNCisJICogVGhpcyBoYW5kbGVzIG1vZGVsIG5vdGlmaWNhdGlvbnMgYnkgY2FsbGluZyB7QGxpbmsgI3VwZGF0ZUNoaWxkcmVufSB0byB1cGRhdGUgYW55IGNhY2hlZA0KKwkgKiBjaGlsZHJlbiBhbmQgYnkgY3JlYXRpbmcgYSB2aWV3ZXIgbm90aWZpY2F0aW9uLCB3aGljaCBpdCBwYXNzZXMgdG8ge0BsaW5rICNmaXJlTm90aWZ5Q2hhbmdlZH0uDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIHZvaWQgbm90aWZ5Q2hhbmdlZChOb3RpZmljYXRpb24gbm90aWZpY2F0aW9uKSB7DQorCQl1cGRhdGVDaGlsZHJlbihub3RpZmljYXRpb24pOw0KKwkJc3VwZXIubm90aWZ5Q2hhbmdlZChub3RpZmljYXRpb24pOw0KKwl9DQorDQorCS8qKg0KKwkgKiBUaGlzIGFkZHMge0BsaW5rIG9yZy5lY2xpcHNlLmVtZi5lZGl0LmNvbW1hbmQuQ29tbWFuZFBhcmFtZXRlcn1zIGRlc2NyaWJpbmcgdGhlIGNoaWxkcmVuDQorCSAqIHRoYXQgY2FuIGJlIGNyZWF0ZWQgdW5kZXIgdGhpcyBvYmplY3QuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHJvdGVjdGVkIHZvaWQgY29sbGVjdE5ld0NoaWxkRGVzY3JpcHRvcnMoQ29sbGVjdGlvbjxPYmplY3Q+IG5ld0NoaWxkRGVzY3JpcHRvcnMsIE9iamVjdCBvYmplY3QpIHsNCisJCXN1cGVyLmNvbGxlY3ROZXdDaGlsZERlc2NyaXB0b3JzKG5ld0NoaWxkRGVzY3JpcHRvcnMsIG9iamVjdCk7DQorCX0NCisNCisJLyoqDQorCSAqIFJldHVybiB0aGUgcmVzb3VyY2UgbG9jYXRvciBmb3IgdGhpcyBpdGVtIHByb3ZpZGVyJ3MgcmVzb3VyY2VzLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXB1YmxpYyBSZXNvdXJjZUxvY2F0b3IgZ2V0UmVzb3VyY2VMb2NhdG9yKCkgew0KKwkJcmV0dXJuIFN5c21sRWRpdFBsdWdpbi5JTlNUQU5DRTsNCisJfQ0KKw0KK30NCmRpZmYgLS1naXQgYS9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5lZGl0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L2FjdGl2aXRpZXMvcHJvdmlkZXIvT3ZlcndyaXRlSXRlbVByb3ZpZGVyLmphdmEgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5lZGl0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L2FjdGl2aXRpZXMvcHJvdmlkZXIvT3ZlcndyaXRlSXRlbVByb3ZpZGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGU1Y2RmZQotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmVkaXQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvYWN0aXZpdGllcy9wcm92aWRlci9PdmVyd3JpdGVJdGVtUHJvdmlkZXIuamF2YQpAQCAtMCwwICsxLDE0OSBAQAorLyoqDQorICogQ29weXJpZ2h0IChjKSAyMDE1IENFQSBMSVNULg0KKyAqIA0KKyAqICBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQorICogIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KKyAqICB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KKyAqICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqLw0KK3BhY2thZ2Ugb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmFjdGl2aXRpZXMucHJvdmlkZXI7DQorDQorDQoraW1wb3J0IGphdmEudXRpbC5Db2xsZWN0aW9uOw0KK2ltcG9ydCBqYXZhLnV0aWwuTGlzdDsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi5ub3RpZnkuQWRhcHRlckZhY3Rvcnk7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jb21tb24ubm90aWZ5Lk5vdGlmaWNhdGlvbjsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi51dGlsLlJlc291cmNlTG9jYXRvcjsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVkaXQucHJvdmlkZXIuQ29tcG9zZWFibGVBZGFwdGVyRmFjdG9yeTsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVkaXQucHJvdmlkZXIuSUVkaXRpbmdEb21haW5JdGVtUHJvdmlkZXI7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lZGl0LnByb3ZpZGVyLklJdGVtTGFiZWxQcm92aWRlcjsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVkaXQucHJvdmlkZXIuSUl0ZW1Qcm9wZXJ0eURlc2NyaXB0b3I7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lZGl0LnByb3ZpZGVyLklJdGVtUHJvcGVydHlTb3VyY2U7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lZGl0LnByb3ZpZGVyLklTdHJ1Y3R1cmVkSXRlbUNvbnRlbnRQcm92aWRlcjsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVkaXQucHJvdmlkZXIuSVRyZWVJdGVtQ29udGVudFByb3ZpZGVyOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWRpdC5wcm92aWRlci5JdGVtUHJvdmlkZXJBZGFwdGVyOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYWN0aXZpdGllcy5BY3Rpdml0aWVzUGFja2FnZTsNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnByb3ZpZGVyLlN5c21sRWRpdFBsdWdpbjsNCisNCisvKioNCisgKiBUaGlzIGlzIHRoZSBpdGVtIHByb3ZpZGVyIGFkYXB0ZXIgZm9yIGEge0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5hY3Rpdml0aWVzLk92ZXJ3cml0ZX0gb2JqZWN0Lg0KKyAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorICogQGdlbmVyYXRlZA0KKyAqLw0KK3B1YmxpYyBjbGFzcyBPdmVyd3JpdGVJdGVtUHJvdmlkZXIgDQorCWV4dGVuZHMgSXRlbVByb3ZpZGVyQWRhcHRlcg0KKwlpbXBsZW1lbnRzDQorCQlJRWRpdGluZ0RvbWFpbkl0ZW1Qcm92aWRlciwNCisJCUlTdHJ1Y3R1cmVkSXRlbUNvbnRlbnRQcm92aWRlciwNCisJCUlUcmVlSXRlbUNvbnRlbnRQcm92aWRlciwNCisJCUlJdGVtTGFiZWxQcm92aWRlciwNCisJCUlJdGVtUHJvcGVydHlTb3VyY2Ugew0KKwkvKioNCisJICogVGhpcyBjb25zdHJ1Y3RzIGFuIGluc3RhbmNlIGZyb20gYSBmYWN0b3J5IGFuZCBhIG5vdGlmaWVyLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIE92ZXJ3cml0ZUl0ZW1Qcm92aWRlcihBZGFwdGVyRmFjdG9yeSBhZGFwdGVyRmFjdG9yeSkgew0KKwkJc3VwZXIoYWRhcHRlckZhY3RvcnkpOw0KKwl9DQorDQorCS8qKg0KKwkgKiBUaGlzIHJldHVybnMgdGhlIHByb3BlcnR5IGRlc2NyaXB0b3JzIGZvciB0aGUgYWRhcHRlZCBjbGFzcy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgTGlzdDxJSXRlbVByb3BlcnR5RGVzY3JpcHRvcj4gZ2V0UHJvcGVydHlEZXNjcmlwdG9ycyhPYmplY3Qgb2JqZWN0KSB7DQorCQlpZiAoaXRlbVByb3BlcnR5RGVzY3JpcHRvcnMgPT0gbnVsbCkgew0KKwkJCXN1cGVyLmdldFByb3BlcnR5RGVzY3JpcHRvcnMob2JqZWN0KTsNCisNCisJCQlhZGRCYXNlX09iamVjdE5vZGVQcm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0KTsNCisJCX0NCisJCXJldHVybiBpdGVtUHJvcGVydHlEZXNjcmlwdG9yczsNCisJfQ0KKw0KKwkvKioNCisJICogVGhpcyBhZGRzIGEgcHJvcGVydHkgZGVzY3JpcHRvciBmb3IgdGhlIEJhc2UgT2JqZWN0IE5vZGUgZmVhdHVyZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXByb3RlY3RlZCB2b2lkIGFkZEJhc2VfT2JqZWN0Tm9kZVByb3BlcnR5RGVzY3JpcHRvcihPYmplY3Qgb2JqZWN0KSB7DQorCQlpdGVtUHJvcGVydHlEZXNjcmlwdG9ycy5hZGQNCisJCQkoY3JlYXRlSXRlbVByb3BlcnR5RGVzY3JpcHRvcg0KKwkJCQkoKChDb21wb3NlYWJsZUFkYXB0ZXJGYWN0b3J5KWFkYXB0ZXJGYWN0b3J5KS5nZXRSb290QWRhcHRlckZhY3RvcnkoKSwNCisJCQkJIGdldFJlc291cmNlTG9jYXRvcigpLA0KKwkJCQkgZ2V0U3RyaW5nKCJfVUlfT3ZlcndyaXRlX2Jhc2VfT2JqZWN0Tm9kZV9mZWF0dXJlIiksIC8vJE5PTi1OTFMtMSQNCisJCQkJIGdldFN0cmluZygiX1VJX1Byb3BlcnR5RGVzY3JpcHRvcl9kZXNjcmlwdGlvbiIsICJfVUlfT3ZlcndyaXRlX2Jhc2VfT2JqZWN0Tm9kZV9mZWF0dXJlIiwgIl9VSV9PdmVyd3JpdGVfdHlwZSIpLCAvLyROT04tTkxTLTEkIC8vJE5PTi1OTFMtMiQgLy8kTk9OLU5MUy0zJA0KKwkJCQkgQWN0aXZpdGllc1BhY2thZ2UuTGl0ZXJhbHMuT1ZFUldSSVRFX19CQVNFX09CSkVDVF9OT0RFLA0KKwkJCQkgdHJ1ZSwNCisJCQkJIGZhbHNlLA0KKwkJCQkgdHJ1ZSwNCisJCQkJIG51bGwsDQorCQkJCSBudWxsLA0KKwkJCQkgbnVsbCkpOw0KKwl9DQorDQorCS8qKg0KKwkgKiBUaGlzIHJldHVybnMgT3ZlcndyaXRlLmdpZi4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgT2JqZWN0IGdldEltYWdlKE9iamVjdCBvYmplY3QpIHsNCisJCXJldHVybiBvdmVybGF5SW1hZ2Uob2JqZWN0LCBnZXRSZXNvdXJjZUxvY2F0b3IoKS5nZXRJbWFnZSgiZnVsbC9vYmoxNi9PdmVyd3JpdGUiKSk7IC8vJE5PTi1OTFMtMSQNCisJfQ0KKw0KKwkvKioNCisJICogVGhpcyByZXR1cm5zIHRoZSBsYWJlbCB0ZXh0IGZvciB0aGUgYWRhcHRlZCBjbGFzcy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgU3RyaW5nIGdldFRleHQoT2JqZWN0IG9iamVjdCkgew0KKwkJcmV0dXJuIGdldFN0cmluZygiX1VJX092ZXJ3cml0ZV90eXBlIik7IC8vJE5PTi1OTFMtMSQNCisJfQ0KKwkNCisNCisJLyoqDQorCSAqIFRoaXMgaGFuZGxlcyBtb2RlbCBub3RpZmljYXRpb25zIGJ5IGNhbGxpbmcge0BsaW5rICN1cGRhdGVDaGlsZHJlbn0gdG8gdXBkYXRlIGFueSBjYWNoZWQNCisJICogY2hpbGRyZW4gYW5kIGJ5IGNyZWF0aW5nIGEgdmlld2VyIG5vdGlmaWNhdGlvbiwgd2hpY2ggaXQgcGFzc2VzIHRvIHtAbGluayAjZmlyZU5vdGlmeUNoYW5nZWR9Lg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXB1YmxpYyB2b2lkIG5vdGlmeUNoYW5nZWQoTm90aWZpY2F0aW9uIG5vdGlmaWNhdGlvbikgew0KKwkJdXBkYXRlQ2hpbGRyZW4obm90aWZpY2F0aW9uKTsNCisJCXN1cGVyLm5vdGlmeUNoYW5nZWQobm90aWZpY2F0aW9uKTsNCisJfQ0KKw0KKwkvKioNCisJICogVGhpcyBhZGRzIHtAbGluayBvcmcuZWNsaXBzZS5lbWYuZWRpdC5jb21tYW5kLkNvbW1hbmRQYXJhbWV0ZXJ9cyBkZXNjcmliaW5nIHRoZSBjaGlsZHJlbg0KKwkgKiB0aGF0IGNhbiBiZSBjcmVhdGVkIHVuZGVyIHRoaXMgb2JqZWN0Lg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXByb3RlY3RlZCB2b2lkIGNvbGxlY3ROZXdDaGlsZERlc2NyaXB0b3JzKENvbGxlY3Rpb248T2JqZWN0PiBuZXdDaGlsZERlc2NyaXB0b3JzLCBPYmplY3Qgb2JqZWN0KSB7DQorCQlzdXBlci5jb2xsZWN0TmV3Q2hpbGREZXNjcmlwdG9ycyhuZXdDaGlsZERlc2NyaXB0b3JzLCBvYmplY3QpOw0KKwl9DQorDQorCS8qKg0KKwkgKiBSZXR1cm4gdGhlIHJlc291cmNlIGxvY2F0b3IgZm9yIHRoaXMgaXRlbSBwcm92aWRlcidzIHJlc291cmNlcy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgUmVzb3VyY2VMb2NhdG9yIGdldFJlc291cmNlTG9jYXRvcigpIHsNCisJCXJldHVybiBTeXNtbEVkaXRQbHVnaW4uSU5TVEFOQ0U7DQorCX0NCisNCit9DQpkaWZmIC0tZ2l0IGEvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZWRpdC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9hY3Rpdml0aWVzL3Byb3ZpZGVyL1Byb2JhYmlsaXR5SXRlbVByb3ZpZGVyLmphdmEgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5lZGl0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L2FjdGl2aXRpZXMvcHJvdmlkZXIvUHJvYmFiaWxpdHlJdGVtUHJvdmlkZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZDZmNTYxCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZWRpdC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9hY3Rpdml0aWVzL3Byb3ZpZGVyL1Byb2JhYmlsaXR5SXRlbVByb3ZpZGVyLmphdmEKQEAgLTAsMCArMSwxOTUgQEAKKy8qKg0KKyAqIENvcHlyaWdodCAoYykgMjAxNSBDRUEgTElTVC4NCisgKiANCisgKiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KKyAqICBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCisgKiAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCisgKiAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgKi8NCitwYWNrYWdlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5hY3Rpdml0aWVzLnByb3ZpZGVyOw0KKw0KKw0KK2ltcG9ydCBqYXZhLnV0aWwuQ29sbGVjdGlvbjsNCitpbXBvcnQgamF2YS51dGlsLkxpc3Q7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jb21tb24ubm90aWZ5LkFkYXB0ZXJGYWN0b3J5Ow0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY29tbW9uLm5vdGlmeS5Ob3RpZmljYXRpb247DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jb21tb24udXRpbC5SZXNvdXJjZUxvY2F0b3I7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lZGl0LnByb3ZpZGVyLkNvbXBvc2VhYmxlQWRhcHRlckZhY3Rvcnk7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lZGl0LnByb3ZpZGVyLklFZGl0aW5nRG9tYWluSXRlbVByb3ZpZGVyOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWRpdC5wcm92aWRlci5JSXRlbUxhYmVsUHJvdmlkZXI7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lZGl0LnByb3ZpZGVyLklJdGVtUHJvcGVydHlEZXNjcmlwdG9yOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWRpdC5wcm92aWRlci5JSXRlbVByb3BlcnR5U291cmNlOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWRpdC5wcm92aWRlci5JU3RydWN0dXJlZEl0ZW1Db250ZW50UHJvdmlkZXI7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lZGl0LnByb3ZpZGVyLklUcmVlSXRlbUNvbnRlbnRQcm92aWRlcjsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVkaXQucHJvdmlkZXIuSXRlbVByb3ZpZGVyQWRhcHRlcjsNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmFjdGl2aXRpZXMuQWN0aXZpdGllc1BhY2thZ2U7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5wcm92aWRlci5TeXNtbEVkaXRQbHVnaW47DQorDQorLyoqDQorICogVGhpcyBpcyB0aGUgaXRlbSBwcm92aWRlciBhZGFwdGVyIGZvciBhIHtAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYWN0aXZpdGllcy5Qcm9iYWJpbGl0eX0gb2JqZWN0Lg0KKyAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorICogQGdlbmVyYXRlZA0KKyAqLw0KK3B1YmxpYyBjbGFzcyBQcm9iYWJpbGl0eUl0ZW1Qcm92aWRlciANCisJZXh0ZW5kcyBJdGVtUHJvdmlkZXJBZGFwdGVyDQorCWltcGxlbWVudHMNCisJCUlFZGl0aW5nRG9tYWluSXRlbVByb3ZpZGVyLA0KKwkJSVN0cnVjdHVyZWRJdGVtQ29udGVudFByb3ZpZGVyLA0KKwkJSVRyZWVJdGVtQ29udGVudFByb3ZpZGVyLA0KKwkJSUl0ZW1MYWJlbFByb3ZpZGVyLA0KKwkJSUl0ZW1Qcm9wZXJ0eVNvdXJjZSB7DQorCS8qKg0KKwkgKiBUaGlzIGNvbnN0cnVjdHMgYW4gaW5zdGFuY2UgZnJvbSBhIGZhY3RvcnkgYW5kIGEgbm90aWZpZXIuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgUHJvYmFiaWxpdHlJdGVtUHJvdmlkZXIoQWRhcHRlckZhY3RvcnkgYWRhcHRlckZhY3RvcnkpIHsNCisJCXN1cGVyKGFkYXB0ZXJGYWN0b3J5KTsNCisJfQ0KKw0KKwkvKioNCisJICogVGhpcyByZXR1cm5zIHRoZSBwcm9wZXJ0eSBkZXNjcmlwdG9ycyBmb3IgdGhlIGFkYXB0ZWQgY2xhc3MuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIExpc3Q8SUl0ZW1Qcm9wZXJ0eURlc2NyaXB0b3I+IGdldFByb3BlcnR5RGVzY3JpcHRvcnMoT2JqZWN0IG9iamVjdCkgew0KKwkJaWYgKGl0ZW1Qcm9wZXJ0eURlc2NyaXB0b3JzID09IG51bGwpIHsNCisJCQlzdXBlci5nZXRQcm9wZXJ0eURlc2NyaXB0b3JzKG9iamVjdCk7DQorDQorCQkJYWRkQmFzZV9BY3Rpdml0eUVkZ2VQcm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0KTsNCisJCQlhZGRCYXNlX1BhcmFtZXRlclNldFByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QpOw0KKwkJCWFkZFByb2JhYmlsaXR5UHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCk7DQorCQl9DQorCQlyZXR1cm4gaXRlbVByb3BlcnR5RGVzY3JpcHRvcnM7DQorCX0NCisNCisJLyoqDQorCSAqIFRoaXMgYWRkcyBhIHByb3BlcnR5IGRlc2NyaXB0b3IgZm9yIHRoZSBCYXNlIEFjdGl2aXR5IEVkZ2UgZmVhdHVyZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXByb3RlY3RlZCB2b2lkIGFkZEJhc2VfQWN0aXZpdHlFZGdlUHJvcGVydHlEZXNjcmlwdG9yKE9iamVjdCBvYmplY3QpIHsNCisJCWl0ZW1Qcm9wZXJ0eURlc2NyaXB0b3JzLmFkZA0KKwkJCShjcmVhdGVJdGVtUHJvcGVydHlEZXNjcmlwdG9yDQorCQkJCSgoKENvbXBvc2VhYmxlQWRhcHRlckZhY3RvcnkpYWRhcHRlckZhY3RvcnkpLmdldFJvb3RBZGFwdGVyRmFjdG9yeSgpLA0KKwkJCQkgZ2V0UmVzb3VyY2VMb2NhdG9yKCksDQorCQkJCSBnZXRTdHJpbmcoIl9VSV9Qcm9iYWJpbGl0eV9iYXNlX0FjdGl2aXR5RWRnZV9mZWF0dXJlIiksIC8vJE5PTi1OTFMtMSQNCisJCQkJIGdldFN0cmluZygiX1VJX1Byb3BlcnR5RGVzY3JpcHRvcl9kZXNjcmlwdGlvbiIsICJfVUlfUHJvYmFiaWxpdHlfYmFzZV9BY3Rpdml0eUVkZ2VfZmVhdHVyZSIsICJfVUlfUHJvYmFiaWxpdHlfdHlwZSIpLCAvLyROT04tTkxTLTEkIC8vJE5PTi1OTFMtMiQgLy8kTk9OLU5MUy0zJA0KKwkJCQkgQWN0aXZpdGllc1BhY2thZ2UuTGl0ZXJhbHMuUFJPQkFCSUxJVFlfX0JBU0VfQUNUSVZJVFlfRURHRSwNCisJCQkJIHRydWUsDQorCQkJCSBmYWxzZSwNCisJCQkJIHRydWUsDQorCQkJCSBudWxsLA0KKwkJCQkgbnVsbCwNCisJCQkJIG51bGwpKTsNCisJfQ0KKw0KKwkvKioNCisJICogVGhpcyBhZGRzIGEgcHJvcGVydHkgZGVzY3JpcHRvciBmb3IgdGhlIEJhc2UgUGFyYW1ldGVyIFNldCBmZWF0dXJlLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHJvdGVjdGVkIHZvaWQgYWRkQmFzZV9QYXJhbWV0ZXJTZXRQcm9wZXJ0eURlc2NyaXB0b3IoT2JqZWN0IG9iamVjdCkgew0KKwkJaXRlbVByb3BlcnR5RGVzY3JpcHRvcnMuYWRkDQorCQkJKGNyZWF0ZUl0ZW1Qcm9wZXJ0eURlc2NyaXB0b3INCisJCQkJKCgoQ29tcG9zZWFibGVBZGFwdGVyRmFjdG9yeSlhZGFwdGVyRmFjdG9yeSkuZ2V0Um9vdEFkYXB0ZXJGYWN0b3J5KCksDQorCQkJCSBnZXRSZXNvdXJjZUxvY2F0b3IoKSwNCisJCQkJIGdldFN0cmluZygiX1VJX1Byb2JhYmlsaXR5X2Jhc2VfUGFyYW1ldGVyU2V0X2ZlYXR1cmUiKSwgLy8kTk9OLU5MUy0xJA0KKwkJCQkgZ2V0U3RyaW5nKCJfVUlfUHJvcGVydHlEZXNjcmlwdG9yX2Rlc2NyaXB0aW9uIiwgIl9VSV9Qcm9iYWJpbGl0eV9iYXNlX1BhcmFtZXRlclNldF9mZWF0dXJlIiwgIl9VSV9Qcm9iYWJpbGl0eV90eXBlIiksIC8vJE5PTi1OTFMtMSQgLy8kTk9OLU5MUy0yJCAvLyROT04tTkxTLTMkDQorCQkJCSBBY3Rpdml0aWVzUGFja2FnZS5MaXRlcmFscy5QUk9CQUJJTElUWV9fQkFTRV9QQVJBTUVURVJfU0VULA0KKwkJCQkgdHJ1ZSwNCisJCQkJIGZhbHNlLA0KKwkJCQkgdHJ1ZSwNCisJCQkJIG51bGwsDQorCQkJCSBudWxsLA0KKwkJCQkgbnVsbCkpOw0KKwl9DQorDQorCS8qKg0KKwkgKiBUaGlzIGFkZHMgYSBwcm9wZXJ0eSBkZXNjcmlwdG9yIGZvciB0aGUgUHJvYmFiaWxpdHkgZmVhdHVyZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXByb3RlY3RlZCB2b2lkIGFkZFByb2JhYmlsaXR5UHJvcGVydHlEZXNjcmlwdG9yKE9iamVjdCBvYmplY3QpIHsNCisJCWl0ZW1Qcm9wZXJ0eURlc2NyaXB0b3JzLmFkZA0KKwkJCShjcmVhdGVJdGVtUHJvcGVydHlEZXNjcmlwdG9yDQorCQkJCSgoKENvbXBvc2VhYmxlQWRhcHRlckZhY3RvcnkpYWRhcHRlckZhY3RvcnkpLmdldFJvb3RBZGFwdGVyRmFjdG9yeSgpLA0KKwkJCQkgZ2V0UmVzb3VyY2VMb2NhdG9yKCksDQorCQkJCSBnZXRTdHJpbmcoIl9VSV9Qcm9iYWJpbGl0eV9wcm9iYWJpbGl0eV9mZWF0dXJlIiksIC8vJE5PTi1OTFMtMSQNCisJCQkJIGdldFN0cmluZygiX1VJX1Byb3BlcnR5RGVzY3JpcHRvcl9kZXNjcmlwdGlvbiIsICJfVUlfUHJvYmFiaWxpdHlfcHJvYmFiaWxpdHlfZmVhdHVyZSIsICJfVUlfUHJvYmFiaWxpdHlfdHlwZSIpLCAvLyROT04tTkxTLTEkIC8vJE5PTi1OTFMtMiQgLy8kTk9OLU5MUy0zJA0KKwkJCQkgQWN0aXZpdGllc1BhY2thZ2UuTGl0ZXJhbHMuUFJPQkFCSUxJVFlfX1BST0JBQklMSVRZLA0KKwkJCQkgdHJ1ZSwNCisJCQkJIGZhbHNlLA0KKwkJCQkgdHJ1ZSwNCisJCQkJIG51bGwsDQorCQkJCSBudWxsLA0KKwkJCQkgbnVsbCkpOw0KKwl9DQorDQorCS8qKg0KKwkgKiBUaGlzIHJldHVybnMgUHJvYmFiaWxpdHkuZ2lmLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXB1YmxpYyBPYmplY3QgZ2V0SW1hZ2UoT2JqZWN0IG9iamVjdCkgew0KKwkJcmV0dXJuIG92ZXJsYXlJbWFnZShvYmplY3QsIGdldFJlc291cmNlTG9jYXRvcigpLmdldEltYWdlKCJmdWxsL29iajE2L1Byb2JhYmlsaXR5IikpOyAvLyROT04tTkxTLTEkDQorCX0NCisNCisJLyoqDQorCSAqIFRoaXMgcmV0dXJucyB0aGUgbGFiZWwgdGV4dCBmb3IgdGhlIGFkYXB0ZWQgY2xhc3MuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIFN0cmluZyBnZXRUZXh0KE9iamVjdCBvYmplY3QpIHsNCisJCXJldHVybiBnZXRTdHJpbmcoIl9VSV9Qcm9iYWJpbGl0eV90eXBlIik7IC8vJE5PTi1OTFMtMSQNCisJfQ0KKwkNCisNCisJLyoqDQorCSAqIFRoaXMgaGFuZGxlcyBtb2RlbCBub3RpZmljYXRpb25zIGJ5IGNhbGxpbmcge0BsaW5rICN1cGRhdGVDaGlsZHJlbn0gdG8gdXBkYXRlIGFueSBjYWNoZWQNCisJICogY2hpbGRyZW4gYW5kIGJ5IGNyZWF0aW5nIGEgdmlld2VyIG5vdGlmaWNhdGlvbiwgd2hpY2ggaXQgcGFzc2VzIHRvIHtAbGluayAjZmlyZU5vdGlmeUNoYW5nZWR9Lg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXB1YmxpYyB2b2lkIG5vdGlmeUNoYW5nZWQoTm90aWZpY2F0aW9uIG5vdGlmaWNhdGlvbikgew0KKwkJdXBkYXRlQ2hpbGRyZW4obm90aWZpY2F0aW9uKTsNCisJCXN1cGVyLm5vdGlmeUNoYW5nZWQobm90aWZpY2F0aW9uKTsNCisJfQ0KKw0KKwkvKioNCisJICogVGhpcyBhZGRzIHtAbGluayBvcmcuZWNsaXBzZS5lbWYuZWRpdC5jb21tYW5kLkNvbW1hbmRQYXJhbWV0ZXJ9cyBkZXNjcmliaW5nIHRoZSBjaGlsZHJlbg0KKwkgKiB0aGF0IGNhbiBiZSBjcmVhdGVkIHVuZGVyIHRoaXMgb2JqZWN0Lg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXByb3RlY3RlZCB2b2lkIGNvbGxlY3ROZXdDaGlsZERlc2NyaXB0b3JzKENvbGxlY3Rpb248T2JqZWN0PiBuZXdDaGlsZERlc2NyaXB0b3JzLCBPYmplY3Qgb2JqZWN0KSB7DQorCQlzdXBlci5jb2xsZWN0TmV3Q2hpbGREZXNjcmlwdG9ycyhuZXdDaGlsZERlc2NyaXB0b3JzLCBvYmplY3QpOw0KKwl9DQorDQorCS8qKg0KKwkgKiBSZXR1cm4gdGhlIHJlc291cmNlIGxvY2F0b3IgZm9yIHRoaXMgaXRlbSBwcm92aWRlcidzIHJlc291cmNlcy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgUmVzb3VyY2VMb2NhdG9yIGdldFJlc291cmNlTG9jYXRvcigpIHsNCisJCXJldHVybiBTeXNtbEVkaXRQbHVnaW4uSU5TVEFOQ0U7DQorCX0NCisNCit9DQpkaWZmIC0tZ2l0IGEvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZWRpdC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9hY3Rpdml0aWVzL3Byb3ZpZGVyL1JhdGVJdGVtUHJvdmlkZXIuamF2YSBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmVkaXQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvYWN0aXZpdGllcy9wcm92aWRlci9SYXRlSXRlbVByb3ZpZGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTRlMDQ2MgotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmVkaXQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvYWN0aXZpdGllcy9wcm92aWRlci9SYXRlSXRlbVByb3ZpZGVyLmphdmEKQEAgLTAsMCArMSwyMTggQEAKKy8qKg0KKyAqIENvcHlyaWdodCAoYykgMjAxNSBDRUEgTElTVC4NCisgKiANCisgKiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KKyAqICBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCisgKiAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCisgKiAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgKi8NCitwYWNrYWdlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5hY3Rpdml0aWVzLnByb3ZpZGVyOw0KKw0KKw0KK2ltcG9ydCBqYXZhLnV0aWwuQ29sbGVjdGlvbjsNCitpbXBvcnQgamF2YS51dGlsLkxpc3Q7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jb21tb24ubm90aWZ5LkFkYXB0ZXJGYWN0b3J5Ow0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY29tbW9uLm5vdGlmeS5Ob3RpZmljYXRpb247DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jb21tb24udXRpbC5SZXNvdXJjZUxvY2F0b3I7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lZGl0LnByb3ZpZGVyLkNvbXBvc2VhYmxlQWRhcHRlckZhY3Rvcnk7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lZGl0LnByb3ZpZGVyLklFZGl0aW5nRG9tYWluSXRlbVByb3ZpZGVyOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWRpdC5wcm92aWRlci5JSXRlbUxhYmVsUHJvdmlkZXI7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lZGl0LnByb3ZpZGVyLklJdGVtUHJvcGVydHlEZXNjcmlwdG9yOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWRpdC5wcm92aWRlci5JSXRlbVByb3BlcnR5U291cmNlOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWRpdC5wcm92aWRlci5JU3RydWN0dXJlZEl0ZW1Db250ZW50UHJvdmlkZXI7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lZGl0LnByb3ZpZGVyLklUcmVlSXRlbUNvbnRlbnRQcm92aWRlcjsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVkaXQucHJvdmlkZXIuSXRlbVByb3ZpZGVyQWRhcHRlcjsNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmFjdGl2aXRpZXMuQWN0aXZpdGllc1BhY2thZ2U7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5wcm92aWRlci5TeXNtbEVkaXRQbHVnaW47DQorDQorLyoqDQorICogVGhpcyBpcyB0aGUgaXRlbSBwcm92aWRlciBhZGFwdGVyIGZvciBhIHtAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYWN0aXZpdGllcy5SYXRlfSBvYmplY3QuDQorICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisgKiBAZ2VuZXJhdGVkDQorICovDQorcHVibGljIGNsYXNzIFJhdGVJdGVtUHJvdmlkZXIgDQorCWV4dGVuZHMgSXRlbVByb3ZpZGVyQWRhcHRlcg0KKwlpbXBsZW1lbnRzDQorCQlJRWRpdGluZ0RvbWFpbkl0ZW1Qcm92aWRlciwNCisJCUlTdHJ1Y3R1cmVkSXRlbUNvbnRlbnRQcm92aWRlciwNCisJCUlUcmVlSXRlbUNvbnRlbnRQcm92aWRlciwNCisJCUlJdGVtTGFiZWxQcm92aWRlciwNCisJCUlJdGVtUHJvcGVydHlTb3VyY2Ugew0KKwkvKioNCisJICogVGhpcyBjb25zdHJ1Y3RzIGFuIGluc3RhbmNlIGZyb20gYSBmYWN0b3J5IGFuZCBhIG5vdGlmaWVyLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIFJhdGVJdGVtUHJvdmlkZXIoQWRhcHRlckZhY3RvcnkgYWRhcHRlckZhY3RvcnkpIHsNCisJCXN1cGVyKGFkYXB0ZXJGYWN0b3J5KTsNCisJfQ0KKw0KKwkvKioNCisJICogVGhpcyByZXR1cm5zIHRoZSBwcm9wZXJ0eSBkZXNjcmlwdG9ycyBmb3IgdGhlIGFkYXB0ZWQgY2xhc3MuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIExpc3Q8SUl0ZW1Qcm9wZXJ0eURlc2NyaXB0b3I+IGdldFByb3BlcnR5RGVzY3JpcHRvcnMoT2JqZWN0IG9iamVjdCkgew0KKwkJaWYgKGl0ZW1Qcm9wZXJ0eURlc2NyaXB0b3JzID09IG51bGwpIHsNCisJCQlzdXBlci5nZXRQcm9wZXJ0eURlc2NyaXB0b3JzKG9iamVjdCk7DQorDQorCQkJYWRkUmF0ZVByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QpOw0KKwkJCWFkZEJhc2VfQWN0aXZpdHlFZGdlUHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCk7DQorCQkJYWRkQmFzZV9PYmplY3ROb2RlUHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCk7DQorCQkJYWRkQmFzZV9QYXJhbWV0ZXJQcm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0KTsNCisJCX0NCisJCXJldHVybiBpdGVtUHJvcGVydHlEZXNjcmlwdG9yczsNCisJfQ0KKw0KKwkvKioNCisJICogVGhpcyBhZGRzIGEgcHJvcGVydHkgZGVzY3JpcHRvciBmb3IgdGhlIFJhdGUgZmVhdHVyZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXByb3RlY3RlZCB2b2lkIGFkZFJhdGVQcm9wZXJ0eURlc2NyaXB0b3IoT2JqZWN0IG9iamVjdCkgew0KKwkJaXRlbVByb3BlcnR5RGVzY3JpcHRvcnMuYWRkDQorCQkJKGNyZWF0ZUl0ZW1Qcm9wZXJ0eURlc2NyaXB0b3INCisJCQkJKCgoQ29tcG9zZWFibGVBZGFwdGVyRmFjdG9yeSlhZGFwdGVyRmFjdG9yeSkuZ2V0Um9vdEFkYXB0ZXJGYWN0b3J5KCksDQorCQkJCSBnZXRSZXNvdXJjZUxvY2F0b3IoKSwNCisJCQkJIGdldFN0cmluZygiX1VJX1JhdGVfcmF0ZV9mZWF0dXJlIiksIC8vJE5PTi1OTFMtMSQNCisJCQkJIGdldFN0cmluZygiX1VJX1Byb3BlcnR5RGVzY3JpcHRvcl9kZXNjcmlwdGlvbiIsICJfVUlfUmF0ZV9yYXRlX2ZlYXR1cmUiLCAiX1VJX1JhdGVfdHlwZSIpLCAvLyROT04tTkxTLTEkIC8vJE5PTi1OTFMtMiQgLy8kTk9OLU5MUy0zJA0KKwkJCQkgQWN0aXZpdGllc1BhY2thZ2UuTGl0ZXJhbHMuUkFURV9fUkFURSwNCisJCQkJIHRydWUsDQorCQkJCSBmYWxzZSwNCisJCQkJIHRydWUsDQorCQkJCSBudWxsLA0KKwkJCQkgbnVsbCwNCisJCQkJIG51bGwpKTsNCisJfQ0KKw0KKwkvKioNCisJICogVGhpcyBhZGRzIGEgcHJvcGVydHkgZGVzY3JpcHRvciBmb3IgdGhlIEJhc2UgQWN0aXZpdHkgRWRnZSBmZWF0dXJlLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHJvdGVjdGVkIHZvaWQgYWRkQmFzZV9BY3Rpdml0eUVkZ2VQcm9wZXJ0eURlc2NyaXB0b3IoT2JqZWN0IG9iamVjdCkgew0KKwkJaXRlbVByb3BlcnR5RGVzY3JpcHRvcnMuYWRkDQorCQkJKGNyZWF0ZUl0ZW1Qcm9wZXJ0eURlc2NyaXB0b3INCisJCQkJKCgoQ29tcG9zZWFibGVBZGFwdGVyRmFjdG9yeSlhZGFwdGVyRmFjdG9yeSkuZ2V0Um9vdEFkYXB0ZXJGYWN0b3J5KCksDQorCQkJCSBnZXRSZXNvdXJjZUxvY2F0b3IoKSwNCisJCQkJIGdldFN0cmluZygiX1VJX1JhdGVfYmFzZV9BY3Rpdml0eUVkZ2VfZmVhdHVyZSIpLCAvLyROT04tTkxTLTEkDQorCQkJCSBnZXRTdHJpbmcoIl9VSV9Qcm9wZXJ0eURlc2NyaXB0b3JfZGVzY3JpcHRpb24iLCAiX1VJX1JhdGVfYmFzZV9BY3Rpdml0eUVkZ2VfZmVhdHVyZSIsICJfVUlfUmF0ZV90eXBlIiksIC8vJE5PTi1OTFMtMSQgLy8kTk9OLU5MUy0yJCAvLyROT04tTkxTLTMkDQorCQkJCSBBY3Rpdml0aWVzUGFja2FnZS5MaXRlcmFscy5SQVRFX19CQVNFX0FDVElWSVRZX0VER0UsDQorCQkJCSB0cnVlLA0KKwkJCQkgZmFsc2UsDQorCQkJCSB0cnVlLA0KKwkJCQkgbnVsbCwNCisJCQkJIG51bGwsDQorCQkJCSBudWxsKSk7DQorCX0NCisNCisJLyoqDQorCSAqIFRoaXMgYWRkcyBhIHByb3BlcnR5IGRlc2NyaXB0b3IgZm9yIHRoZSBCYXNlIE9iamVjdCBOb2RlIGZlYXR1cmUuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwcm90ZWN0ZWQgdm9pZCBhZGRCYXNlX09iamVjdE5vZGVQcm9wZXJ0eURlc2NyaXB0b3IoT2JqZWN0IG9iamVjdCkgew0KKwkJaXRlbVByb3BlcnR5RGVzY3JpcHRvcnMuYWRkDQorCQkJKGNyZWF0ZUl0ZW1Qcm9wZXJ0eURlc2NyaXB0b3INCisJCQkJKCgoQ29tcG9zZWFibGVBZGFwdGVyRmFjdG9yeSlhZGFwdGVyRmFjdG9yeSkuZ2V0Um9vdEFkYXB0ZXJGYWN0b3J5KCksDQorCQkJCSBnZXRSZXNvdXJjZUxvY2F0b3IoKSwNCisJCQkJIGdldFN0cmluZygiX1VJX1JhdGVfYmFzZV9PYmplY3ROb2RlX2ZlYXR1cmUiKSwgLy8kTk9OLU5MUy0xJA0KKwkJCQkgZ2V0U3RyaW5nKCJfVUlfUHJvcGVydHlEZXNjcmlwdG9yX2Rlc2NyaXB0aW9uIiwgIl9VSV9SYXRlX2Jhc2VfT2JqZWN0Tm9kZV9mZWF0dXJlIiwgIl9VSV9SYXRlX3R5cGUiKSwgLy8kTk9OLU5MUy0xJCAvLyROT04tTkxTLTIkIC8vJE5PTi1OTFMtMyQNCisJCQkJIEFjdGl2aXRpZXNQYWNrYWdlLkxpdGVyYWxzLlJBVEVfX0JBU0VfT0JKRUNUX05PREUsDQorCQkJCSB0cnVlLA0KKwkJCQkgZmFsc2UsDQorCQkJCSB0cnVlLA0KKwkJCQkgbnVsbCwNCisJCQkJIG51bGwsDQorCQkJCSBudWxsKSk7DQorCX0NCisNCisJLyoqDQorCSAqIFRoaXMgYWRkcyBhIHByb3BlcnR5IGRlc2NyaXB0b3IgZm9yIHRoZSBCYXNlIFBhcmFtZXRlciBmZWF0dXJlLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHJvdGVjdGVkIHZvaWQgYWRkQmFzZV9QYXJhbWV0ZXJQcm9wZXJ0eURlc2NyaXB0b3IoT2JqZWN0IG9iamVjdCkgew0KKwkJaXRlbVByb3BlcnR5RGVzY3JpcHRvcnMuYWRkDQorCQkJKGNyZWF0ZUl0ZW1Qcm9wZXJ0eURlc2NyaXB0b3INCisJCQkJKCgoQ29tcG9zZWFibGVBZGFwdGVyRmFjdG9yeSlhZGFwdGVyRmFjdG9yeSkuZ2V0Um9vdEFkYXB0ZXJGYWN0b3J5KCksDQorCQkJCSBnZXRSZXNvdXJjZUxvY2F0b3IoKSwNCisJCQkJIGdldFN0cmluZygiX1VJX1JhdGVfYmFzZV9QYXJhbWV0ZXJfZmVhdHVyZSIpLCAvLyROT04tTkxTLTEkDQorCQkJCSBnZXRTdHJpbmcoIl9VSV9Qcm9wZXJ0eURlc2NyaXB0b3JfZGVzY3JpcHRpb24iLCAiX1VJX1JhdGVfYmFzZV9QYXJhbWV0ZXJfZmVhdHVyZSIsICJfVUlfUmF0ZV90eXBlIiksIC8vJE5PTi1OTFMtMSQgLy8kTk9OLU5MUy0yJCAvLyROT04tTkxTLTMkDQorCQkJCSBBY3Rpdml0aWVzUGFja2FnZS5MaXRlcmFscy5SQVRFX19CQVNFX1BBUkFNRVRFUiwNCisJCQkJIHRydWUsDQorCQkJCSBmYWxzZSwNCisJCQkJIHRydWUsDQorCQkJCSBudWxsLA0KKwkJCQkgbnVsbCwNCisJCQkJIG51bGwpKTsNCisJfQ0KKw0KKwkvKioNCisJICogVGhpcyByZXR1cm5zIFJhdGUuZ2lmLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXB1YmxpYyBPYmplY3QgZ2V0SW1hZ2UoT2JqZWN0IG9iamVjdCkgew0KKwkJcmV0dXJuIG92ZXJsYXlJbWFnZShvYmplY3QsIGdldFJlc291cmNlTG9jYXRvcigpLmdldEltYWdlKCJmdWxsL29iajE2L1JhdGUiKSk7IC8vJE5PTi1OTFMtMSQNCisJfQ0KKw0KKwkvKioNCisJICogVGhpcyByZXR1cm5zIHRoZSBsYWJlbCB0ZXh0IGZvciB0aGUgYWRhcHRlZCBjbGFzcy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgU3RyaW5nIGdldFRleHQoT2JqZWN0IG9iamVjdCkgew0KKwkJcmV0dXJuIGdldFN0cmluZygiX1VJX1JhdGVfdHlwZSIpOyAvLyROT04tTkxTLTEkDQorCX0NCisJDQorDQorCS8qKg0KKwkgKiBUaGlzIGhhbmRsZXMgbW9kZWwgbm90aWZpY2F0aW9ucyBieSBjYWxsaW5nIHtAbGluayAjdXBkYXRlQ2hpbGRyZW59IHRvIHVwZGF0ZSBhbnkgY2FjaGVkDQorCSAqIGNoaWxkcmVuIGFuZCBieSBjcmVhdGluZyBhIHZpZXdlciBub3RpZmljYXRpb24sIHdoaWNoIGl0IHBhc3NlcyB0byB7QGxpbmsgI2ZpcmVOb3RpZnlDaGFuZ2VkfS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgdm9pZCBub3RpZnlDaGFuZ2VkKE5vdGlmaWNhdGlvbiBub3RpZmljYXRpb24pIHsNCisJCXVwZGF0ZUNoaWxkcmVuKG5vdGlmaWNhdGlvbik7DQorCQlzdXBlci5ub3RpZnlDaGFuZ2VkKG5vdGlmaWNhdGlvbik7DQorCX0NCisNCisJLyoqDQorCSAqIFRoaXMgYWRkcyB7QGxpbmsgb3JnLmVjbGlwc2UuZW1mLmVkaXQuY29tbWFuZC5Db21tYW5kUGFyYW1ldGVyfXMgZGVzY3JpYmluZyB0aGUgY2hpbGRyZW4NCisJICogdGhhdCBjYW4gYmUgY3JlYXRlZCB1bmRlciB0aGlzIG9iamVjdC4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwcm90ZWN0ZWQgdm9pZCBjb2xsZWN0TmV3Q2hpbGREZXNjcmlwdG9ycyhDb2xsZWN0aW9uPE9iamVjdD4gbmV3Q2hpbGREZXNjcmlwdG9ycywgT2JqZWN0IG9iamVjdCkgew0KKwkJc3VwZXIuY29sbGVjdE5ld0NoaWxkRGVzY3JpcHRvcnMobmV3Q2hpbGREZXNjcmlwdG9ycywgb2JqZWN0KTsNCisJfQ0KKw0KKwkvKioNCisJICogUmV0dXJuIHRoZSByZXNvdXJjZSBsb2NhdG9yIGZvciB0aGlzIGl0ZW0gcHJvdmlkZXIncyByZXNvdXJjZXMuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIFJlc291cmNlTG9jYXRvciBnZXRSZXNvdXJjZUxvY2F0b3IoKSB7DQorCQlyZXR1cm4gU3lzbWxFZGl0UGx1Z2luLklOU1RBTkNFOw0KKwl9DQorDQorfQ0KZGlmZiAtLWdpdCBhL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmVkaXQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvYWxsb2NhdGlvbnMvcHJvdmlkZXIvQWxsb2NhdGVBY3Rpdml0eVBhcnRpdGlvbkl0ZW1Qcm92aWRlci5qYXZhIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZWRpdC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9hbGxvY2F0aW9ucy9wcm92aWRlci9BbGxvY2F0ZUFjdGl2aXR5UGFydGl0aW9uSXRlbVByb3ZpZGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDRlYmIyYQotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmVkaXQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvYWxsb2NhdGlvbnMvcHJvdmlkZXIvQWxsb2NhdGVBY3Rpdml0eVBhcnRpdGlvbkl0ZW1Qcm92aWRlci5qYXZhCkBAIC0wLDAgKzEsMTQ5IEBACisvKioNCisgKiBDb3B5cmlnaHQgKGMpIDIwMTUgQ0VBIExJU1QuDQorICogDQorICogIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCisgKiAgYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQorICogIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQorICogIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICovDQorcGFja2FnZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYWxsb2NhdGlvbnMucHJvdmlkZXI7DQorDQorDQoraW1wb3J0IGphdmEudXRpbC5Db2xsZWN0aW9uOw0KK2ltcG9ydCBqYXZhLnV0aWwuTGlzdDsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi5ub3RpZnkuQWRhcHRlckZhY3Rvcnk7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jb21tb24ubm90aWZ5Lk5vdGlmaWNhdGlvbjsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi51dGlsLlJlc291cmNlTG9jYXRvcjsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVkaXQucHJvdmlkZXIuQ29tcG9zZWFibGVBZGFwdGVyRmFjdG9yeTsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVkaXQucHJvdmlkZXIuSUVkaXRpbmdEb21haW5JdGVtUHJvdmlkZXI7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lZGl0LnByb3ZpZGVyLklJdGVtTGFiZWxQcm92aWRlcjsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVkaXQucHJvdmlkZXIuSUl0ZW1Qcm9wZXJ0eURlc2NyaXB0b3I7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lZGl0LnByb3ZpZGVyLklJdGVtUHJvcGVydHlTb3VyY2U7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lZGl0LnByb3ZpZGVyLklTdHJ1Y3R1cmVkSXRlbUNvbnRlbnRQcm92aWRlcjsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVkaXQucHJvdmlkZXIuSVRyZWVJdGVtQ29udGVudFByb3ZpZGVyOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWRpdC5wcm92aWRlci5JdGVtUHJvdmlkZXJBZGFwdGVyOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYWxsb2NhdGlvbnMuQWxsb2NhdGlvbnNQYWNrYWdlOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucHJvdmlkZXIuU3lzbWxFZGl0UGx1Z2luOw0KKw0KKy8qKg0KKyAqIFRoaXMgaXMgdGhlIGl0ZW0gcHJvdmlkZXIgYWRhcHRlciBmb3IgYSB7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmFsbG9jYXRpb25zLkFsbG9jYXRlQWN0aXZpdHlQYXJ0aXRpb259IG9iamVjdC4NCisgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKyAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKyAqIEBnZW5lcmF0ZWQNCisgKi8NCitwdWJsaWMgY2xhc3MgQWxsb2NhdGVBY3Rpdml0eVBhcnRpdGlvbkl0ZW1Qcm92aWRlciANCisJZXh0ZW5kcyBJdGVtUHJvdmlkZXJBZGFwdGVyDQorCWltcGxlbWVudHMNCisJCUlFZGl0aW5nRG9tYWluSXRlbVByb3ZpZGVyLA0KKwkJSVN0cnVjdHVyZWRJdGVtQ29udGVudFByb3ZpZGVyLA0KKwkJSVRyZWVJdGVtQ29udGVudFByb3ZpZGVyLA0KKwkJSUl0ZW1MYWJlbFByb3ZpZGVyLA0KKwkJSUl0ZW1Qcm9wZXJ0eVNvdXJjZSB7DQorCS8qKg0KKwkgKiBUaGlzIGNvbnN0cnVjdHMgYW4gaW5zdGFuY2UgZnJvbSBhIGZhY3RvcnkgYW5kIGEgbm90aWZpZXIuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgQWxsb2NhdGVBY3Rpdml0eVBhcnRpdGlvbkl0ZW1Qcm92aWRlcihBZGFwdGVyRmFjdG9yeSBhZGFwdGVyRmFjdG9yeSkgew0KKwkJc3VwZXIoYWRhcHRlckZhY3RvcnkpOw0KKwl9DQorDQorCS8qKg0KKwkgKiBUaGlzIHJldHVybnMgdGhlIHByb3BlcnR5IGRlc2NyaXB0b3JzIGZvciB0aGUgYWRhcHRlZCBjbGFzcy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgTGlzdDxJSXRlbVByb3BlcnR5RGVzY3JpcHRvcj4gZ2V0UHJvcGVydHlEZXNjcmlwdG9ycyhPYmplY3Qgb2JqZWN0KSB7DQorCQlpZiAoaXRlbVByb3BlcnR5RGVzY3JpcHRvcnMgPT0gbnVsbCkgew0KKwkJCXN1cGVyLmdldFByb3BlcnR5RGVzY3JpcHRvcnMob2JqZWN0KTsNCisNCisJCQlhZGRCYXNlX0FjdGl2aXR5UGFydGl0aW9uUHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCk7DQorCQl9DQorCQlyZXR1cm4gaXRlbVByb3BlcnR5RGVzY3JpcHRvcnM7DQorCX0NCisNCisJLyoqDQorCSAqIFRoaXMgYWRkcyBhIHByb3BlcnR5IGRlc2NyaXB0b3IgZm9yIHRoZSBCYXNlIEFjdGl2aXR5IFBhcnRpdGlvbiBmZWF0dXJlLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHJvdGVjdGVkIHZvaWQgYWRkQmFzZV9BY3Rpdml0eVBhcnRpdGlvblByb3BlcnR5RGVzY3JpcHRvcihPYmplY3Qgb2JqZWN0KSB7DQorCQlpdGVtUHJvcGVydHlEZXNjcmlwdG9ycy5hZGQNCisJCQkoY3JlYXRlSXRlbVByb3BlcnR5RGVzY3JpcHRvcg0KKwkJCQkoKChDb21wb3NlYWJsZUFkYXB0ZXJGYWN0b3J5KWFkYXB0ZXJGYWN0b3J5KS5nZXRSb290QWRhcHRlckZhY3RvcnkoKSwNCisJCQkJIGdldFJlc291cmNlTG9jYXRvcigpLA0KKwkJCQkgZ2V0U3RyaW5nKCJfVUlfQWxsb2NhdGVBY3Rpdml0eVBhcnRpdGlvbl9iYXNlX0FjdGl2aXR5UGFydGl0aW9uX2ZlYXR1cmUiKSwgLy8kTk9OLU5MUy0xJA0KKwkJCQkgZ2V0U3RyaW5nKCJfVUlfUHJvcGVydHlEZXNjcmlwdG9yX2Rlc2NyaXB0aW9uIiwgIl9VSV9BbGxvY2F0ZUFjdGl2aXR5UGFydGl0aW9uX2Jhc2VfQWN0aXZpdHlQYXJ0aXRpb25fZmVhdHVyZSIsICJfVUlfQWxsb2NhdGVBY3Rpdml0eVBhcnRpdGlvbl90eXBlIiksIC8vJE5PTi1OTFMtMSQgLy8kTk9OLU5MUy0yJCAvLyROT04tTkxTLTMkDQorCQkJCSBBbGxvY2F0aW9uc1BhY2thZ2UuTGl0ZXJhbHMuQUxMT0NBVEVfQUNUSVZJVFlfUEFSVElUSU9OX19CQVNFX0FDVElWSVRZX1BBUlRJVElPTiwNCisJCQkJIHRydWUsDQorCQkJCSBmYWxzZSwNCisJCQkJIHRydWUsDQorCQkJCSBudWxsLA0KKwkJCQkgbnVsbCwNCisJCQkJIG51bGwpKTsNCisJfQ0KKw0KKwkvKioNCisJICogVGhpcyByZXR1cm5zIEFsbG9jYXRlQWN0aXZpdHlQYXJ0aXRpb24uZ2lmLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXB1YmxpYyBPYmplY3QgZ2V0SW1hZ2UoT2JqZWN0IG9iamVjdCkgew0KKwkJcmV0dXJuIG92ZXJsYXlJbWFnZShvYmplY3QsIGdldFJlc291cmNlTG9jYXRvcigpLmdldEltYWdlKCJmdWxsL29iajE2L0FsbG9jYXRlQWN0aXZpdHlQYXJ0aXRpb24iKSk7IC8vJE5PTi1OTFMtMSQNCisJfQ0KKw0KKwkvKioNCisJICogVGhpcyByZXR1cm5zIHRoZSBsYWJlbCB0ZXh0IGZvciB0aGUgYWRhcHRlZCBjbGFzcy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgU3RyaW5nIGdldFRleHQoT2JqZWN0IG9iamVjdCkgew0KKwkJcmV0dXJuIGdldFN0cmluZygiX1VJX0FsbG9jYXRlQWN0aXZpdHlQYXJ0aXRpb25fdHlwZSIpOyAvLyROT04tTkxTLTEkDQorCX0NCisJDQorDQorCS8qKg0KKwkgKiBUaGlzIGhhbmRsZXMgbW9kZWwgbm90aWZpY2F0aW9ucyBieSBjYWxsaW5nIHtAbGluayAjdXBkYXRlQ2hpbGRyZW59IHRvIHVwZGF0ZSBhbnkgY2FjaGVkDQorCSAqIGNoaWxkcmVuIGFuZCBieSBjcmVhdGluZyBhIHZpZXdlciBub3RpZmljYXRpb24sIHdoaWNoIGl0IHBhc3NlcyB0byB7QGxpbmsgI2ZpcmVOb3RpZnlDaGFuZ2VkfS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgdm9pZCBub3RpZnlDaGFuZ2VkKE5vdGlmaWNhdGlvbiBub3RpZmljYXRpb24pIHsNCisJCXVwZGF0ZUNoaWxkcmVuKG5vdGlmaWNhdGlvbik7DQorCQlzdXBlci5ub3RpZnlDaGFuZ2VkKG5vdGlmaWNhdGlvbik7DQorCX0NCisNCisJLyoqDQorCSAqIFRoaXMgYWRkcyB7QGxpbmsgb3JnLmVjbGlwc2UuZW1mLmVkaXQuY29tbWFuZC5Db21tYW5kUGFyYW1ldGVyfXMgZGVzY3JpYmluZyB0aGUgY2hpbGRyZW4NCisJICogdGhhdCBjYW4gYmUgY3JlYXRlZCB1bmRlciB0aGlzIG9iamVjdC4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwcm90ZWN0ZWQgdm9pZCBjb2xsZWN0TmV3Q2hpbGREZXNjcmlwdG9ycyhDb2xsZWN0aW9uPE9iamVjdD4gbmV3Q2hpbGREZXNjcmlwdG9ycywgT2JqZWN0IG9iamVjdCkgew0KKwkJc3VwZXIuY29sbGVjdE5ld0NoaWxkRGVzY3JpcHRvcnMobmV3Q2hpbGREZXNjcmlwdG9ycywgb2JqZWN0KTsNCisJfQ0KKw0KKwkvKioNCisJICogUmV0dXJuIHRoZSByZXNvdXJjZSBsb2NhdG9yIGZvciB0aGlzIGl0ZW0gcHJvdmlkZXIncyByZXNvdXJjZXMuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIFJlc291cmNlTG9jYXRvciBnZXRSZXNvdXJjZUxvY2F0b3IoKSB7DQorCQlyZXR1cm4gU3lzbWxFZGl0UGx1Z2luLklOU1RBTkNFOw0KKwl9DQorDQorfQ0KZGlmZiAtLWdpdCBhL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmVkaXQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvYWxsb2NhdGlvbnMvcHJvdmlkZXIvQWxsb2NhdGVJdGVtUHJvdmlkZXIuamF2YSBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmVkaXQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvYWxsb2NhdGlvbnMvcHJvdmlkZXIvQWxsb2NhdGVJdGVtUHJvdmlkZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zOTBhOWZkCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZWRpdC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9hbGxvY2F0aW9ucy9wcm92aWRlci9BbGxvY2F0ZUl0ZW1Qcm92aWRlci5qYXZhCkBAIC0wLDAgKzEsMTM3IEBACisvKioNCisgKiBDb3B5cmlnaHQgKGMpIDIwMTUgQ0VBIExJU1QuDQorICogDQorICogIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCisgKiAgYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQorICogIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQorICogIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICovDQorcGFja2FnZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYWxsb2NhdGlvbnMucHJvdmlkZXI7DQorDQorDQoraW1wb3J0IGphdmEudXRpbC5Db2xsZWN0aW9uOw0KK2ltcG9ydCBqYXZhLnV0aWwuTGlzdDsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi5ub3RpZnkuQWRhcHRlckZhY3Rvcnk7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jb21tb24ubm90aWZ5Lk5vdGlmaWNhdGlvbjsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi51dGlsLlJlc291cmNlTG9jYXRvcjsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVkaXQucHJvdmlkZXIuQ29tcG9zZWFibGVBZGFwdGVyRmFjdG9yeTsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVkaXQucHJvdmlkZXIuSUl0ZW1Qcm9wZXJ0eURlc2NyaXB0b3I7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5hbGxvY2F0aW9ucy5BbGxvY2F0aW9uc1BhY2thZ2U7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5ibG9ja3MucHJvdmlkZXIuRGlyZWN0ZWRSZWxhdGlvbnNoaXBQcm9wZXJ0eVBhdGhJdGVtUHJvdmlkZXI7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5wcm92aWRlci5TeXNtbEVkaXRQbHVnaW47DQorDQorLyoqDQorICogVGhpcyBpcyB0aGUgaXRlbSBwcm92aWRlciBhZGFwdGVyIGZvciBhIHtAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYWxsb2NhdGlvbnMuQWxsb2NhdGV9IG9iamVjdC4NCisgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKyAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKyAqIEBnZW5lcmF0ZWQNCisgKi8NCitwdWJsaWMgY2xhc3MgQWxsb2NhdGVJdGVtUHJvdmlkZXIgZXh0ZW5kcyBEaXJlY3RlZFJlbGF0aW9uc2hpcFByb3BlcnR5UGF0aEl0ZW1Qcm92aWRlciB7DQorCS8qKg0KKwkgKiBUaGlzIGNvbnN0cnVjdHMgYW4gaW5zdGFuY2UgZnJvbSBhIGZhY3RvcnkgYW5kIGEgbm90aWZpZXIuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgQWxsb2NhdGVJdGVtUHJvdmlkZXIoQWRhcHRlckZhY3RvcnkgYWRhcHRlckZhY3RvcnkpIHsNCisJCXN1cGVyKGFkYXB0ZXJGYWN0b3J5KTsNCisJfQ0KKw0KKwkvKioNCisJICogVGhpcyByZXR1cm5zIHRoZSBwcm9wZXJ0eSBkZXNjcmlwdG9ycyBmb3IgdGhlIGFkYXB0ZWQgY2xhc3MuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIExpc3Q8SUl0ZW1Qcm9wZXJ0eURlc2NyaXB0b3I+IGdldFByb3BlcnR5RGVzY3JpcHRvcnMoT2JqZWN0IG9iamVjdCkgew0KKwkJaWYgKGl0ZW1Qcm9wZXJ0eURlc2NyaXB0b3JzID09IG51bGwpIHsNCisJCQlzdXBlci5nZXRQcm9wZXJ0eURlc2NyaXB0b3JzKG9iamVjdCk7DQorDQorCQkJYWRkQmFzZV9BYnN0cmFjdGlvblByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QpOw0KKwkJfQ0KKwkJcmV0dXJuIGl0ZW1Qcm9wZXJ0eURlc2NyaXB0b3JzOw0KKwl9DQorDQorCS8qKg0KKwkgKiBUaGlzIGFkZHMgYSBwcm9wZXJ0eSBkZXNjcmlwdG9yIGZvciB0aGUgQmFzZSBBYnN0cmFjdGlvbiBmZWF0dXJlLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHJvdGVjdGVkIHZvaWQgYWRkQmFzZV9BYnN0cmFjdGlvblByb3BlcnR5RGVzY3JpcHRvcihPYmplY3Qgb2JqZWN0KSB7DQorCQlpdGVtUHJvcGVydHlEZXNjcmlwdG9ycy5hZGQNCisJCQkoY3JlYXRlSXRlbVByb3BlcnR5RGVzY3JpcHRvcg0KKwkJCQkoKChDb21wb3NlYWJsZUFkYXB0ZXJGYWN0b3J5KWFkYXB0ZXJGYWN0b3J5KS5nZXRSb290QWRhcHRlckZhY3RvcnkoKSwNCisJCQkJIGdldFJlc291cmNlTG9jYXRvcigpLA0KKwkJCQkgZ2V0U3RyaW5nKCJfVUlfQWxsb2NhdGVfYmFzZV9BYnN0cmFjdGlvbl9mZWF0dXJlIiksIC8vJE5PTi1OTFMtMSQNCisJCQkJIGdldFN0cmluZygiX1VJX1Byb3BlcnR5RGVzY3JpcHRvcl9kZXNjcmlwdGlvbiIsICJfVUlfQWxsb2NhdGVfYmFzZV9BYnN0cmFjdGlvbl9mZWF0dXJlIiwgIl9VSV9BbGxvY2F0ZV90eXBlIiksIC8vJE5PTi1OTFMtMSQgLy8kTk9OLU5MUy0yJCAvLyROT04tTkxTLTMkDQorCQkJCSBBbGxvY2F0aW9uc1BhY2thZ2UuTGl0ZXJhbHMuQUxMT0NBVEVfX0JBU0VfQUJTVFJBQ1RJT04sDQorCQkJCSB0cnVlLA0KKwkJCQkgZmFsc2UsDQorCQkJCSB0cnVlLA0KKwkJCQkgbnVsbCwNCisJCQkJIG51bGwsDQorCQkJCSBudWxsKSk7DQorCX0NCisNCisJLyoqDQorCSAqIFRoaXMgcmV0dXJucyBBbGxvY2F0ZS5naWYuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIE9iamVjdCBnZXRJbWFnZShPYmplY3Qgb2JqZWN0KSB7DQorCQlyZXR1cm4gb3ZlcmxheUltYWdlKG9iamVjdCwgZ2V0UmVzb3VyY2VMb2NhdG9yKCkuZ2V0SW1hZ2UoImZ1bGwvb2JqMTYvQWxsb2NhdGUiKSk7IC8vJE5PTi1OTFMtMSQNCisJfQ0KKw0KKwkvKioNCisJICogVGhpcyByZXR1cm5zIHRoZSBsYWJlbCB0ZXh0IGZvciB0aGUgYWRhcHRlZCBjbGFzcy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgU3RyaW5nIGdldFRleHQoT2JqZWN0IG9iamVjdCkgew0KKwkJcmV0dXJuIGdldFN0cmluZygiX1VJX0FsbG9jYXRlX3R5cGUiKTsgLy8kTk9OLU5MUy0xJA0KKwl9DQorCQ0KKw0KKwkvKioNCisJICogVGhpcyBoYW5kbGVzIG1vZGVsIG5vdGlmaWNhdGlvbnMgYnkgY2FsbGluZyB7QGxpbmsgI3VwZGF0ZUNoaWxkcmVufSB0byB1cGRhdGUgYW55IGNhY2hlZA0KKwkgKiBjaGlsZHJlbiBhbmQgYnkgY3JlYXRpbmcgYSB2aWV3ZXIgbm90aWZpY2F0aW9uLCB3aGljaCBpdCBwYXNzZXMgdG8ge0BsaW5rICNmaXJlTm90aWZ5Q2hhbmdlZH0uDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIHZvaWQgbm90aWZ5Q2hhbmdlZChOb3RpZmljYXRpb24gbm90aWZpY2F0aW9uKSB7DQorCQl1cGRhdGVDaGlsZHJlbihub3RpZmljYXRpb24pOw0KKwkJc3VwZXIubm90aWZ5Q2hhbmdlZChub3RpZmljYXRpb24pOw0KKwl9DQorDQorCS8qKg0KKwkgKiBUaGlzIGFkZHMge0BsaW5rIG9yZy5lY2xpcHNlLmVtZi5lZGl0LmNvbW1hbmQuQ29tbWFuZFBhcmFtZXRlcn1zIGRlc2NyaWJpbmcgdGhlIGNoaWxkcmVuDQorCSAqIHRoYXQgY2FuIGJlIGNyZWF0ZWQgdW5kZXIgdGhpcyBvYmplY3QuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHJvdGVjdGVkIHZvaWQgY29sbGVjdE5ld0NoaWxkRGVzY3JpcHRvcnMoQ29sbGVjdGlvbjxPYmplY3Q+IG5ld0NoaWxkRGVzY3JpcHRvcnMsIE9iamVjdCBvYmplY3QpIHsNCisJCXN1cGVyLmNvbGxlY3ROZXdDaGlsZERlc2NyaXB0b3JzKG5ld0NoaWxkRGVzY3JpcHRvcnMsIG9iamVjdCk7DQorCX0NCisNCisJLyoqDQorCSAqIFJldHVybiB0aGUgcmVzb3VyY2UgbG9jYXRvciBmb3IgdGhpcyBpdGVtIHByb3ZpZGVyJ3MgcmVzb3VyY2VzLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXB1YmxpYyBSZXNvdXJjZUxvY2F0b3IgZ2V0UmVzb3VyY2VMb2NhdG9yKCkgew0KKwkJcmV0dXJuIFN5c21sRWRpdFBsdWdpbi5JTlNUQU5DRTsNCisJfQ0KKw0KK30NCmRpZmYgLS1naXQgYS9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5lZGl0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L2FsbG9jYXRpb25zL3Byb3ZpZGVyL0FsbG9jYXRpb25zSXRlbVByb3ZpZGVyQWRhcHRlckZhY3RvcnkuamF2YSBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmVkaXQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvYWxsb2NhdGlvbnMvcHJvdmlkZXIvQWxsb2NhdGlvbnNJdGVtUHJvdmlkZXJBZGFwdGVyRmFjdG9yeS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNlNjk3ODcKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5lZGl0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L2FsbG9jYXRpb25zL3Byb3ZpZGVyL0FsbG9jYXRpb25zSXRlbVByb3ZpZGVyQWRhcHRlckZhY3RvcnkuamF2YQpAQCAtMCwwICsxLDIyOSBAQAorLyoqDQorICogQ29weXJpZ2h0IChjKSAyMDE1IENFQSBMSVNULg0KKyAqIA0KKyAqICBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQorICogIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KKyAqICB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KKyAqICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqLw0KK3BhY2thZ2Ugb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmFsbG9jYXRpb25zLnByb3ZpZGVyOw0KKw0KK2ltcG9ydCBqYXZhLnV0aWwuQXJyYXlMaXN0Ow0KK2ltcG9ydCBqYXZhLnV0aWwuQ29sbGVjdGlvbjsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi5ub3RpZnkuQWRhcHRlcjsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi5ub3RpZnkuTm90aWZpY2F0aW9uOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY29tbW9uLm5vdGlmeS5Ob3RpZmllcjsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVkaXQucHJvdmlkZXIuQ2hhbmdlTm90aWZpZXI7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lZGl0LnByb3ZpZGVyLkNvbXBvc2VhYmxlQWRhcHRlckZhY3Rvcnk7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lZGl0LnByb3ZpZGVyLkNvbXBvc2VkQWRhcHRlckZhY3Rvcnk7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lZGl0LnByb3ZpZGVyLklDaGFuZ2VOb3RpZmllcjsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVkaXQucHJvdmlkZXIuSURpc3Bvc2FibGU7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lZGl0LnByb3ZpZGVyLklFZGl0aW5nRG9tYWluSXRlbVByb3ZpZGVyOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWRpdC5wcm92aWRlci5JSXRlbUxhYmVsUHJvdmlkZXI7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lZGl0LnByb3ZpZGVyLklJdGVtUHJvcGVydHlTb3VyY2U7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lZGl0LnByb3ZpZGVyLklOb3RpZnlDaGFuZ2VkTGlzdGVuZXI7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lZGl0LnByb3ZpZGVyLklTdHJ1Y3R1cmVkSXRlbUNvbnRlbnRQcm92aWRlcjsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVkaXQucHJvdmlkZXIuSVRyZWVJdGVtQ29udGVudFByb3ZpZGVyOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYWxsb2NhdGlvbnMudXRpbC5BbGxvY2F0aW9uc0FkYXB0ZXJGYWN0b3J5Ow0KKw0KKy8qKg0KKyAqIFRoaXMgaXMgdGhlIGZhY3RvcnkgdGhhdCBpcyB1c2VkIHRvIHByb3ZpZGUgdGhlIGludGVyZmFjZXMgbmVlZGVkIHRvIHN1cHBvcnQgVmlld2Vycy4NCisgKiBUaGUgYWRhcHRlcnMgZ2VuZXJhdGVkIGJ5IHRoaXMgZmFjdG9yeSBjb252ZXJ0IEVNRiBhZGFwdGVyIG5vdGlmaWNhdGlvbnMgaW50byBjYWxscyB0byB7QGxpbmsgI2ZpcmVOb3RpZnlDaGFuZ2VkIGZpcmVOb3RpZnlDaGFuZ2VkfS4NCisgKiBUaGUgYWRhcHRlcnMgYWxzbyBzdXBwb3J0IEVjbGlwc2UgcHJvcGVydHkgc2hlZXRzLg0KKyAqIE5vdGUgdGhhdCBtb3N0IG9mIHRoZSBhZGFwdGVycyBhcmUgc2hhcmVkIGFtb25nIG11bHRpcGxlIGluc3RhbmNlcy4NCisgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKyAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKyAqIEBnZW5lcmF0ZWQNCisgKi8NCitwdWJsaWMgY2xhc3MgQWxsb2NhdGlvbnNJdGVtUHJvdmlkZXJBZGFwdGVyRmFjdG9yeSBleHRlbmRzIEFsbG9jYXRpb25zQWRhcHRlckZhY3RvcnkgaW1wbGVtZW50cyBDb21wb3NlYWJsZUFkYXB0ZXJGYWN0b3J5LCBJQ2hhbmdlTm90aWZpZXIsIElEaXNwb3NhYmxlIHsNCisJLyoqDQorCSAqIFRoaXMga2VlcHMgdHJhY2sgb2YgdGhlIHJvb3QgYWRhcHRlciBmYWN0b3J5IHRoYXQgZGVsZWdhdGVzIHRvIHRoaXMgYWRhcHRlciBmYWN0b3J5Lg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHJvdGVjdGVkIENvbXBvc2VkQWRhcHRlckZhY3RvcnkgcGFyZW50QWRhcHRlckZhY3Rvcnk7DQorDQorCS8qKg0KKwkgKiBUaGlzIGlzIHVzZWQgdG8gaW1wbGVtZW50IHtAbGluayBvcmcuZWNsaXBzZS5lbWYuZWRpdC5wcm92aWRlci5JQ2hhbmdlTm90aWZpZXJ9Lg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHJvdGVjdGVkIElDaGFuZ2VOb3RpZmllciBjaGFuZ2VOb3RpZmllciA9IG5ldyBDaGFuZ2VOb3RpZmllcigpOw0KKw0KKwkvKioNCisJICogVGhpcyBrZWVwcyB0cmFjayBvZiBhbGwgdGhlIHN1cHBvcnRlZCB0eXBlcyBjaGVja2VkIGJ5IHtAbGluayAjaXNGYWN0b3J5Rm9yVHlwZSBpc0ZhY3RvcnlGb3JUeXBlfS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXByb3RlY3RlZCBDb2xsZWN0aW9uPE9iamVjdD4gc3VwcG9ydGVkVHlwZXMgPSBuZXcgQXJyYXlMaXN0PE9iamVjdD4oKTsNCisNCisJLyoqDQorCSAqIFRoaXMgY29uc3RydWN0cyBhbiBpbnN0YW5jZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBBbGxvY2F0aW9uc0l0ZW1Qcm92aWRlckFkYXB0ZXJGYWN0b3J5KCkgew0KKwkJc3VwcG9ydGVkVHlwZXMuYWRkKElFZGl0aW5nRG9tYWluSXRlbVByb3ZpZGVyLmNsYXNzKTsNCisJCXN1cHBvcnRlZFR5cGVzLmFkZChJU3RydWN0dXJlZEl0ZW1Db250ZW50UHJvdmlkZXIuY2xhc3MpOw0KKwkJc3VwcG9ydGVkVHlwZXMuYWRkKElUcmVlSXRlbUNvbnRlbnRQcm92aWRlci5jbGFzcyk7DQorCQlzdXBwb3J0ZWRUeXBlcy5hZGQoSUl0ZW1MYWJlbFByb3ZpZGVyLmNsYXNzKTsNCisJCXN1cHBvcnRlZFR5cGVzLmFkZChJSXRlbVByb3BlcnR5U291cmNlLmNsYXNzKTsNCisJfQ0KKw0KKwkvKioNCisJICogVGhpcyBrZWVwcyB0cmFjayBvZiB0aGUgb25lIGFkYXB0ZXIgdXNlZCBmb3IgYWxsIHtAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYWxsb2NhdGlvbnMuQWxsb2NhdGVBY3Rpdml0eVBhcnRpdGlvbn0gaW5zdGFuY2VzLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHJvdGVjdGVkIEFsbG9jYXRlQWN0aXZpdHlQYXJ0aXRpb25JdGVtUHJvdmlkZXIgYWxsb2NhdGVBY3Rpdml0eVBhcnRpdGlvbkl0ZW1Qcm92aWRlcjsNCisNCisJLyoqDQorCSAqIFRoaXMgY3JlYXRlcyBhbiBhZGFwdGVyIGZvciBhIHtAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYWxsb2NhdGlvbnMuQWxsb2NhdGVBY3Rpdml0eVBhcnRpdGlvbn0uDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIEFkYXB0ZXIgY3JlYXRlQWxsb2NhdGVBY3Rpdml0eVBhcnRpdGlvbkFkYXB0ZXIoKSB7DQorCQlpZiAoYWxsb2NhdGVBY3Rpdml0eVBhcnRpdGlvbkl0ZW1Qcm92aWRlciA9PSBudWxsKSB7DQorCQkJYWxsb2NhdGVBY3Rpdml0eVBhcnRpdGlvbkl0ZW1Qcm92aWRlciA9IG5ldyBBbGxvY2F0ZUFjdGl2aXR5UGFydGl0aW9uSXRlbVByb3ZpZGVyKHRoaXMpOw0KKwkJfQ0KKw0KKwkJcmV0dXJuIGFsbG9jYXRlQWN0aXZpdHlQYXJ0aXRpb25JdGVtUHJvdmlkZXI7DQorCX0NCisNCisJLyoqDQorCSAqIFRoaXMga2VlcHMgdHJhY2sgb2YgdGhlIG9uZSBhZGFwdGVyIHVzZWQgZm9yIGFsbCB7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmFsbG9jYXRpb25zLkFsbG9jYXRlfSBpbnN0YW5jZXMuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwcm90ZWN0ZWQgQWxsb2NhdGVJdGVtUHJvdmlkZXIgYWxsb2NhdGVJdGVtUHJvdmlkZXI7DQorDQorCS8qKg0KKwkgKiBUaGlzIGNyZWF0ZXMgYW4gYWRhcHRlciBmb3IgYSB7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmFsbG9jYXRpb25zLkFsbG9jYXRlfS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgQWRhcHRlciBjcmVhdGVBbGxvY2F0ZUFkYXB0ZXIoKSB7DQorCQlpZiAoYWxsb2NhdGVJdGVtUHJvdmlkZXIgPT0gbnVsbCkgew0KKwkJCWFsbG9jYXRlSXRlbVByb3ZpZGVyID0gbmV3IEFsbG9jYXRlSXRlbVByb3ZpZGVyKHRoaXMpOw0KKwkJfQ0KKw0KKwkJcmV0dXJuIGFsbG9jYXRlSXRlbVByb3ZpZGVyOw0KKwl9DQorDQorCS8qKg0KKwkgKiBUaGlzIHJldHVybnMgdGhlIHJvb3QgYWRhcHRlciBmYWN0b3J5IHRoYXQgY29udGFpbnMgdGhpcyBmYWN0b3J5Lg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIENvbXBvc2VhYmxlQWRhcHRlckZhY3RvcnkgZ2V0Um9vdEFkYXB0ZXJGYWN0b3J5KCkgew0KKwkJcmV0dXJuIHBhcmVudEFkYXB0ZXJGYWN0b3J5ID09IG51bGwgPyB0aGlzIDogcGFyZW50QWRhcHRlckZhY3RvcnkuZ2V0Um9vdEFkYXB0ZXJGYWN0b3J5KCk7DQorCX0NCisNCisJLyoqDQorCSAqIFRoaXMgc2V0cyB0aGUgY29tcG9zZWQgYWRhcHRlciBmYWN0b3J5IHRoYXQgY29udGFpbnMgdGhpcyBmYWN0b3J5Lg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIHZvaWQgc2V0UGFyZW50QWRhcHRlckZhY3RvcnkoQ29tcG9zZWRBZGFwdGVyRmFjdG9yeSBwYXJlbnRBZGFwdGVyRmFjdG9yeSkgew0KKwkJdGhpcy5wYXJlbnRBZGFwdGVyRmFjdG9yeSA9IHBhcmVudEFkYXB0ZXJGYWN0b3J5Ow0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXB1YmxpYyBib29sZWFuIGlzRmFjdG9yeUZvclR5cGUoT2JqZWN0IHR5cGUpIHsNCisJCXJldHVybiBzdXBwb3J0ZWRUeXBlcy5jb250YWlucyh0eXBlKSB8fCBzdXBlci5pc0ZhY3RvcnlGb3JUeXBlKHR5cGUpOw0KKwl9DQorDQorCS8qKg0KKwkgKiBUaGlzIGltcGxlbWVudGF0aW9uIHN1YnN0aXR1dGVzIHRoZSBmYWN0b3J5IGl0c2VsZiBhcyB0aGUga2V5IGZvciB0aGUgYWRhcHRlci4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgQWRhcHRlciBhZGFwdChOb3RpZmllciBub3RpZmllciwgT2JqZWN0IHR5cGUpIHsNCisJCXJldHVybiBzdXBlci5hZGFwdChub3RpZmllciwgdGhpcyk7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIE9iamVjdCBhZGFwdChPYmplY3Qgb2JqZWN0LCBPYmplY3QgdHlwZSkgew0KKwkJaWYgKGlzRmFjdG9yeUZvclR5cGUodHlwZSkpIHsNCisJCQlPYmplY3QgYWRhcHRlciA9IHN1cGVyLmFkYXB0KG9iamVjdCwgdHlwZSk7DQorCQkJaWYgKCEodHlwZSBpbnN0YW5jZW9mIENsYXNzPD8+KSB8fCAoKChDbGFzczw/Pil0eXBlKS5pc0luc3RhbmNlKGFkYXB0ZXIpKSkgew0KKwkJCQlyZXR1cm4gYWRhcHRlcjsNCisJCQl9DQorCQl9DQorDQorCQlyZXR1cm4gbnVsbDsNCisJfQ0KKw0KKwkvKioNCisJICogVGhpcyBhZGRzIGEgbGlzdGVuZXIuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgdm9pZCBhZGRMaXN0ZW5lcihJTm90aWZ5Q2hhbmdlZExpc3RlbmVyIG5vdGlmeUNoYW5nZWRMaXN0ZW5lcikgew0KKwkJY2hhbmdlTm90aWZpZXIuYWRkTGlzdGVuZXIobm90aWZ5Q2hhbmdlZExpc3RlbmVyKTsNCisJfQ0KKw0KKwkvKioNCisJICogVGhpcyByZW1vdmVzIGEgbGlzdGVuZXIuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgdm9pZCByZW1vdmVMaXN0ZW5lcihJTm90aWZ5Q2hhbmdlZExpc3RlbmVyIG5vdGlmeUNoYW5nZWRMaXN0ZW5lcikgew0KKwkJY2hhbmdlTm90aWZpZXIucmVtb3ZlTGlzdGVuZXIobm90aWZ5Q2hhbmdlZExpc3RlbmVyKTsNCisJfQ0KKw0KKwkvKioNCisJICogVGhpcyBkZWxlZ2F0ZXMgdG8ge0BsaW5rICNjaGFuZ2VOb3RpZmllcn0gYW5kIHRvIHtAbGluayAjcGFyZW50QWRhcHRlckZhY3Rvcnl9Lg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIHZvaWQgZmlyZU5vdGlmeUNoYW5nZWQoTm90aWZpY2F0aW9uIG5vdGlmaWNhdGlvbikgew0KKwkJY2hhbmdlTm90aWZpZXIuZmlyZU5vdGlmeUNoYW5nZWQobm90aWZpY2F0aW9uKTsNCisNCisJCWlmIChwYXJlbnRBZGFwdGVyRmFjdG9yeSAhPSBudWxsKSB7DQorCQkJcGFyZW50QWRhcHRlckZhY3RvcnkuZmlyZU5vdGlmeUNoYW5nZWQobm90aWZpY2F0aW9uKTsNCisJCX0NCisJfQ0KKw0KKwkvKioNCisJICogVGhpcyBkaXNwb3NlcyBhbGwgb2YgdGhlIGl0ZW0gcHJvdmlkZXJzIGNyZWF0ZWQgYnkgdGhpcyBmYWN0b3J5LiANCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyB2b2lkIGRpc3Bvc2UoKSB7DQorCQlpZiAoYWxsb2NhdGVBY3Rpdml0eVBhcnRpdGlvbkl0ZW1Qcm92aWRlciAhPSBudWxsKSBhbGxvY2F0ZUFjdGl2aXR5UGFydGl0aW9uSXRlbVByb3ZpZGVyLmRpc3Bvc2UoKTsNCisJCWlmIChhbGxvY2F0ZUl0ZW1Qcm92aWRlciAhPSBudWxsKSBhbGxvY2F0ZUl0ZW1Qcm92aWRlci5kaXNwb3NlKCk7DQorCX0NCisNCit9DQpkaWZmIC0tZ2l0IGEvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZWRpdC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9ibG9ja3MvcHJvdmlkZXIvQWRqdW5jdFByb3BlcnR5SXRlbVByb3ZpZGVyLmphdmEgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5lZGl0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L2Jsb2Nrcy9wcm92aWRlci9BZGp1bmN0UHJvcGVydHlJdGVtUHJvdmlkZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZDE2MWZmCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZWRpdC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9ibG9ja3MvcHJvdmlkZXIvQWRqdW5jdFByb3BlcnR5SXRlbVByb3ZpZGVyLmphdmEKQEAgLTAsMCArMSwxNzYgQEAKKy8qKg0KKyAqIENvcHlyaWdodCAoYykgMjAxNSBDRUEgTElTVC4NCisgKiANCisgKiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KKyAqICBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCisgKiAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCisgKiAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgKi8NCitwYWNrYWdlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5ibG9ja3MucHJvdmlkZXI7DQorDQorDQoraW1wb3J0IGphdmEudXRpbC5Db2xsZWN0aW9uOw0KK2ltcG9ydCBqYXZhLnV0aWwuTGlzdDsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi5ub3RpZnkuQWRhcHRlckZhY3Rvcnk7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jb21tb24ubm90aWZ5Lk5vdGlmaWNhdGlvbjsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi51dGlsLlJlc291cmNlTG9jYXRvcjsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVkaXQucHJvdmlkZXIuQ29tcG9zZWFibGVBZGFwdGVyRmFjdG9yeTsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVkaXQucHJvdmlkZXIuSUVkaXRpbmdEb21haW5JdGVtUHJvdmlkZXI7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lZGl0LnByb3ZpZGVyLklJdGVtTGFiZWxQcm92aWRlcjsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVkaXQucHJvdmlkZXIuSUl0ZW1Qcm9wZXJ0eURlc2NyaXB0b3I7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lZGl0LnByb3ZpZGVyLklJdGVtUHJvcGVydHlTb3VyY2U7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lZGl0LnByb3ZpZGVyLklTdHJ1Y3R1cmVkSXRlbUNvbnRlbnRQcm92aWRlcjsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVkaXQucHJvdmlkZXIuSVRyZWVJdGVtQ29udGVudFByb3ZpZGVyOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWRpdC5wcm92aWRlci5JdGVtUHJvdmlkZXJBZGFwdGVyOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYmxvY2tzLkJsb2Nrc1BhY2thZ2U7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5wcm92aWRlci5TeXNtbEVkaXRQbHVnaW47DQorDQorLyoqDQorICogVGhpcyBpcyB0aGUgaXRlbSBwcm92aWRlciBhZGFwdGVyIGZvciBhIHtAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYmxvY2tzLkFkanVuY3RQcm9wZXJ0eX0gb2JqZWN0Lg0KKyAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorICogQGdlbmVyYXRlZA0KKyAqLw0KK3B1YmxpYyBjbGFzcyBBZGp1bmN0UHJvcGVydHlJdGVtUHJvdmlkZXIgDQorCWV4dGVuZHMgSXRlbVByb3ZpZGVyQWRhcHRlcg0KKwlpbXBsZW1lbnRzDQorCQlJRWRpdGluZ0RvbWFpbkl0ZW1Qcm92aWRlciwNCisJCUlTdHJ1Y3R1cmVkSXRlbUNvbnRlbnRQcm92aWRlciwNCisJCUlUcmVlSXRlbUNvbnRlbnRQcm92aWRlciwNCisJCUlJdGVtTGFiZWxQcm92aWRlciwNCisJCUlJdGVtUHJvcGVydHlTb3VyY2Ugew0KKwkvKioNCisJICogVGhpcyBjb25zdHJ1Y3RzIGFuIGluc3RhbmNlIGZyb20gYSBmYWN0b3J5IGFuZCBhIG5vdGlmaWVyLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIEFkanVuY3RQcm9wZXJ0eUl0ZW1Qcm92aWRlcihBZGFwdGVyRmFjdG9yeSBhZGFwdGVyRmFjdG9yeSkgew0KKwkJc3VwZXIoYWRhcHRlckZhY3RvcnkpOw0KKwl9DQorDQorCS8qKg0KKwkgKiBUaGlzIHJldHVybnMgdGhlIHByb3BlcnR5IGRlc2NyaXB0b3JzIGZvciB0aGUgYWRhcHRlZCBjbGFzcy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgTGlzdDxJSXRlbVByb3BlcnR5RGVzY3JpcHRvcj4gZ2V0UHJvcGVydHlEZXNjcmlwdG9ycyhPYmplY3Qgb2JqZWN0KSB7DQorCQlpZiAoaXRlbVByb3BlcnR5RGVzY3JpcHRvcnMgPT0gbnVsbCkgew0KKwkJCXN1cGVyLmdldFByb3BlcnR5RGVzY3JpcHRvcnMob2JqZWN0KTsNCisNCisJCQlhZGRCYXNlX1Byb3BlcnR5UHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCk7DQorCQkJYWRkUHJpbmNpcGFsUHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCk7DQorCQl9DQorCQlyZXR1cm4gaXRlbVByb3BlcnR5RGVzY3JpcHRvcnM7DQorCX0NCisNCisJLyoqDQorCSAqIFRoaXMgYWRkcyBhIHByb3BlcnR5IGRlc2NyaXB0b3IgZm9yIHRoZSBCYXNlIFByb3BlcnR5IGZlYXR1cmUuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwcm90ZWN0ZWQgdm9pZCBhZGRCYXNlX1Byb3BlcnR5UHJvcGVydHlEZXNjcmlwdG9yKE9iamVjdCBvYmplY3QpIHsNCisJCWl0ZW1Qcm9wZXJ0eURlc2NyaXB0b3JzLmFkZA0KKwkJCShjcmVhdGVJdGVtUHJvcGVydHlEZXNjcmlwdG9yDQorCQkJCSgoKENvbXBvc2VhYmxlQWRhcHRlckZhY3RvcnkpYWRhcHRlckZhY3RvcnkpLmdldFJvb3RBZGFwdGVyRmFjdG9yeSgpLA0KKwkJCQkgZ2V0UmVzb3VyY2VMb2NhdG9yKCksDQorCQkJCSBnZXRTdHJpbmcoIl9VSV9BZGp1bmN0UHJvcGVydHlfYmFzZV9Qcm9wZXJ0eV9mZWF0dXJlIiksIC8vJE5PTi1OTFMtMSQNCisJCQkJIGdldFN0cmluZygiX1VJX1Byb3BlcnR5RGVzY3JpcHRvcl9kZXNjcmlwdGlvbiIsICJfVUlfQWRqdW5jdFByb3BlcnR5X2Jhc2VfUHJvcGVydHlfZmVhdHVyZSIsICJfVUlfQWRqdW5jdFByb3BlcnR5X3R5cGUiKSwgLy8kTk9OLU5MUy0xJCAvLyROT04tTkxTLTIkIC8vJE5PTi1OTFMtMyQNCisJCQkJIEJsb2Nrc1BhY2thZ2UuTGl0ZXJhbHMuQURKVU5DVF9QUk9QRVJUWV9fQkFTRV9QUk9QRVJUWSwNCisJCQkJIHRydWUsDQorCQkJCSBmYWxzZSwNCisJCQkJIHRydWUsDQorCQkJCSBudWxsLA0KKwkJCQkgbnVsbCwNCisJCQkJIG51bGwpKTsNCisJfQ0KKw0KKwkvKioNCisJICogVGhpcyBhZGRzIGEgcHJvcGVydHkgZGVzY3JpcHRvciBmb3IgdGhlIFByaW5jaXBhbCBmZWF0dXJlLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHJvdGVjdGVkIHZvaWQgYWRkUHJpbmNpcGFsUHJvcGVydHlEZXNjcmlwdG9yKE9iamVjdCBvYmplY3QpIHsNCisJCWl0ZW1Qcm9wZXJ0eURlc2NyaXB0b3JzLmFkZA0KKwkJCShjcmVhdGVJdGVtUHJvcGVydHlEZXNjcmlwdG9yDQorCQkJCSgoKENvbXBvc2VhYmxlQWRhcHRlckZhY3RvcnkpYWRhcHRlckZhY3RvcnkpLmdldFJvb3RBZGFwdGVyRmFjdG9yeSgpLA0KKwkJCQkgZ2V0UmVzb3VyY2VMb2NhdG9yKCksDQorCQkJCSBnZXRTdHJpbmcoIl9VSV9BZGp1bmN0UHJvcGVydHlfcHJpbmNpcGFsX2ZlYXR1cmUiKSwgLy8kTk9OLU5MUy0xJA0KKwkJCQkgZ2V0U3RyaW5nKCJfVUlfUHJvcGVydHlEZXNjcmlwdG9yX2Rlc2NyaXB0aW9uIiwgIl9VSV9BZGp1bmN0UHJvcGVydHlfcHJpbmNpcGFsX2ZlYXR1cmUiLCAiX1VJX0FkanVuY3RQcm9wZXJ0eV90eXBlIiksIC8vJE5PTi1OTFMtMSQgLy8kTk9OLU5MUy0yJCAvLyROT04tTkxTLTMkDQorCQkJCSBCbG9ja3NQYWNrYWdlLkxpdGVyYWxzLkFESlVOQ1RfUFJPUEVSVFlfX1BSSU5DSVBBTCwNCisJCQkJIHRydWUsDQorCQkJCSBmYWxzZSwNCisJCQkJIHRydWUsDQorCQkJCSBudWxsLA0KKwkJCQkgbnVsbCwNCisJCQkJIG51bGwpKTsNCisJfQ0KKw0KKwkvKioNCisJICogVGhpcyByZXR1cm5zIEFkanVuY3RQcm9wZXJ0eS5naWYuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIE9iamVjdCBnZXRJbWFnZShPYmplY3Qgb2JqZWN0KSB7DQorCQlyZXR1cm4gb3ZlcmxheUltYWdlKG9iamVjdCwgZ2V0UmVzb3VyY2VMb2NhdG9yKCkuZ2V0SW1hZ2UoImZ1bGwvb2JqMTYvQWRqdW5jdFByb3BlcnR5IikpOyAvLyROT04tTkxTLTEkDQorCX0NCisNCisJLyoqDQorCSAqIFRoaXMgcmV0dXJucyB0aGUgbGFiZWwgdGV4dCBmb3IgdGhlIGFkYXB0ZWQgY2xhc3MuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIFN0cmluZyBnZXRUZXh0KE9iamVjdCBvYmplY3QpIHsNCisJCXJldHVybiBnZXRTdHJpbmcoIl9VSV9BZGp1bmN0UHJvcGVydHlfdHlwZSIpOyAvLyROT04tTkxTLTEkDQorCX0NCisJDQorDQorCS8qKg0KKwkgKiBUaGlzIGhhbmRsZXMgbW9kZWwgbm90aWZpY2F0aW9ucyBieSBjYWxsaW5nIHtAbGluayAjdXBkYXRlQ2hpbGRyZW59IHRvIHVwZGF0ZSBhbnkgY2FjaGVkDQorCSAqIGNoaWxkcmVuIGFuZCBieSBjcmVhdGluZyBhIHZpZXdlciBub3RpZmljYXRpb24sIHdoaWNoIGl0IHBhc3NlcyB0byB7QGxpbmsgI2ZpcmVOb3RpZnlDaGFuZ2VkfS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgdm9pZCBub3RpZnlDaGFuZ2VkKE5vdGlmaWNhdGlvbiBub3RpZmljYXRpb24pIHsNCisJCXVwZGF0ZUNoaWxkcmVuKG5vdGlmaWNhdGlvbik7DQorCQlzdXBlci5ub3RpZnlDaGFuZ2VkKG5vdGlmaWNhdGlvbik7DQorCX0NCisNCisJLyoqDQorCSAqIFRoaXMgYWRkcyB7QGxpbmsgb3JnLmVjbGlwc2UuZW1mLmVkaXQuY29tbWFuZC5Db21tYW5kUGFyYW1ldGVyfXMgZGVzY3JpYmluZyB0aGUgY2hpbGRyZW4NCisJICogdGhhdCBjYW4gYmUgY3JlYXRlZCB1bmRlciB0aGlzIG9iamVjdC4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwcm90ZWN0ZWQgdm9pZCBjb2xsZWN0TmV3Q2hpbGREZXNjcmlwdG9ycyhDb2xsZWN0aW9uPE9iamVjdD4gbmV3Q2hpbGREZXNjcmlwdG9ycywgT2JqZWN0IG9iamVjdCkgew0KKwkJc3VwZXIuY29sbGVjdE5ld0NoaWxkRGVzY3JpcHRvcnMobmV3Q2hpbGREZXNjcmlwdG9ycywgb2JqZWN0KTsNCisJfQ0KKw0KKwkvKioNCisJICogUmV0dXJuIHRoZSByZXNvdXJjZSBsb2NhdG9yIGZvciB0aGlzIGl0ZW0gcHJvdmlkZXIncyByZXNvdXJjZXMuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIFJlc291cmNlTG9jYXRvciBnZXRSZXNvdXJjZUxvY2F0b3IoKSB7DQorCQlyZXR1cm4gU3lzbWxFZGl0UGx1Z2luLklOU1RBTkNFOw0KKwl9DQorDQorfQ0KZGlmZiAtLWdpdCBhL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmVkaXQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvYmxvY2tzL3Byb3ZpZGVyL0JpbmRpbmdDb25uZWN0b3JJdGVtUHJvdmlkZXIuamF2YSBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmVkaXQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvYmxvY2tzL3Byb3ZpZGVyL0JpbmRpbmdDb25uZWN0b3JJdGVtUHJvdmlkZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZjJhYTIyCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZWRpdC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9ibG9ja3MvcHJvdmlkZXIvQmluZGluZ0Nvbm5lY3Rvckl0ZW1Qcm92aWRlci5qYXZhCkBAIC0wLDAgKzEsMTUzIEBACisvKioNCisgKiBDb3B5cmlnaHQgKGMpIDIwMTUgQ0VBIExJU1QuDQorICogDQorICogIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCisgKiAgYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQorICogIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQorICogIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICovDQorcGFja2FnZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYmxvY2tzLnByb3ZpZGVyOw0KKw0KKw0KK2ltcG9ydCBqYXZhLnV0aWwuQ29sbGVjdGlvbjsNCitpbXBvcnQgamF2YS51dGlsLkxpc3Q7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jb21tb24ubm90aWZ5LkFkYXB0ZXJGYWN0b3J5Ow0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY29tbW9uLm5vdGlmeS5Ob3RpZmljYXRpb247DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jb21tb24udXRpbC5SZXNvdXJjZUxvY2F0b3I7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lZGl0LnByb3ZpZGVyLkNvbXBvc2VhYmxlQWRhcHRlckZhY3Rvcnk7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lZGl0LnByb3ZpZGVyLklFZGl0aW5nRG9tYWluSXRlbVByb3ZpZGVyOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWRpdC5wcm92aWRlci5JSXRlbUxhYmVsUHJvdmlkZXI7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lZGl0LnByb3ZpZGVyLklJdGVtUHJvcGVydHlEZXNjcmlwdG9yOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWRpdC5wcm92aWRlci5JSXRlbVByb3BlcnR5U291cmNlOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWRpdC5wcm92aWRlci5JU3RydWN0dXJlZEl0ZW1Db250ZW50UHJvdmlkZXI7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lZGl0LnByb3ZpZGVyLklUcmVlSXRlbUNvbnRlbnRQcm92aWRlcjsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVkaXQucHJvdmlkZXIuSXRlbVByb3ZpZGVyQWRhcHRlcjsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmJsb2Nrcy5CbG9ja3NQYWNrYWdlOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucHJvdmlkZXIuU3lzbWxFZGl0UGx1Z2luOw0KKw0KKy8qKg0KKyAqIFRoaXMgaXMgdGhlIGl0ZW0gcHJvdmlkZXIgYWRhcHRlciBmb3IgYSB7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmJsb2Nrcy5CaW5kaW5nQ29ubmVjdG9yfSBvYmplY3QuDQorICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisgKiBAZ2VuZXJhdGVkDQorICovDQorcHVibGljIGNsYXNzIEJpbmRpbmdDb25uZWN0b3JJdGVtUHJvdmlkZXIgDQorCWV4dGVuZHMgSXRlbVByb3ZpZGVyQWRhcHRlcg0KKwlpbXBsZW1lbnRzDQorCQlJRWRpdGluZ0RvbWFpbkl0ZW1Qcm92aWRlciwNCisJCUlTdHJ1Y3R1cmVkSXRlbUNvbnRlbnRQcm92aWRlciwNCisJCUlUcmVlSXRlbUNvbnRlbnRQcm92aWRlciwNCisJCUlJdGVtTGFiZWxQcm92aWRlciwNCisJCUlJdGVtUHJvcGVydHlTb3VyY2Ugew0KKwkvKioNCisJICogVGhpcyBjb25zdHJ1Y3RzIGFuIGluc3RhbmNlIGZyb20gYSBmYWN0b3J5IGFuZCBhIG5vdGlmaWVyLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIEJpbmRpbmdDb25uZWN0b3JJdGVtUHJvdmlkZXIoQWRhcHRlckZhY3RvcnkgYWRhcHRlckZhY3RvcnkpIHsNCisJCXN1cGVyKGFkYXB0ZXJGYWN0b3J5KTsNCisJfQ0KKw0KKwkvKioNCisJICogVGhpcyByZXR1cm5zIHRoZSBwcm9wZXJ0eSBkZXNjcmlwdG9ycyBmb3IgdGhlIGFkYXB0ZWQgY2xhc3MuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIExpc3Q8SUl0ZW1Qcm9wZXJ0eURlc2NyaXB0b3I+IGdldFByb3BlcnR5RGVzY3JpcHRvcnMoT2JqZWN0IG9iamVjdCkgew0KKwkJaWYgKGl0ZW1Qcm9wZXJ0eURlc2NyaXB0b3JzID09IG51bGwpIHsNCisJCQlzdXBlci5nZXRQcm9wZXJ0eURlc2NyaXB0b3JzKG9iamVjdCk7DQorDQorCQkJYWRkQmFzZV9Db25uZWN0b3JQcm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0KTsNCisJCX0NCisJCXJldHVybiBpdGVtUHJvcGVydHlEZXNjcmlwdG9yczsNCisJfQ0KKw0KKwkvKioNCisJICogVGhpcyBhZGRzIGEgcHJvcGVydHkgZGVzY3JpcHRvciBmb3IgdGhlIEJhc2UgQ29ubmVjdG9yIGZlYXR1cmUuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwcm90ZWN0ZWQgdm9pZCBhZGRCYXNlX0Nvbm5lY3RvclByb3BlcnR5RGVzY3JpcHRvcihPYmplY3Qgb2JqZWN0KSB7DQorCQlpdGVtUHJvcGVydHlEZXNjcmlwdG9ycy5hZGQNCisJCQkoY3JlYXRlSXRlbVByb3BlcnR5RGVzY3JpcHRvcg0KKwkJCQkoKChDb21wb3NlYWJsZUFkYXB0ZXJGYWN0b3J5KWFkYXB0ZXJGYWN0b3J5KS5nZXRSb290QWRhcHRlckZhY3RvcnkoKSwNCisJCQkJIGdldFJlc291cmNlTG9jYXRvcigpLA0KKwkJCQkgZ2V0U3RyaW5nKCJfVUlfQmluZGluZ0Nvbm5lY3Rvcl9iYXNlX0Nvbm5lY3Rvcl9mZWF0dXJlIiksIC8vJE5PTi1OTFMtMSQNCisJCQkJIGdldFN0cmluZygiX1VJX1Byb3BlcnR5RGVzY3JpcHRvcl9kZXNjcmlwdGlvbiIsICJfVUlfQmluZGluZ0Nvbm5lY3Rvcl9iYXNlX0Nvbm5lY3Rvcl9mZWF0dXJlIiwgIl9VSV9CaW5kaW5nQ29ubmVjdG9yX3R5cGUiKSwgLy8kTk9OLU5MUy0xJCAvLyROT04tTkxTLTIkIC8vJE5PTi1OTFMtMyQNCisJCQkJIEJsb2Nrc1BhY2thZ2UuTGl0ZXJhbHMuQklORElOR19DT05ORUNUT1JfX0JBU0VfQ09OTkVDVE9SLA0KKwkJCQkgdHJ1ZSwNCisJCQkJIGZhbHNlLA0KKwkJCQkgdHJ1ZSwNCisJCQkJIG51bGwsDQorCQkJCSBudWxsLA0KKwkJCQkgbnVsbCkpOw0KKwl9DQorDQorCS8qKg0KKwkgKiBUaGlzIHJldHVybnMgQmluZGluZ0Nvbm5lY3Rvci5naWYuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIE9iamVjdCBnZXRJbWFnZShPYmplY3Qgb2JqZWN0KSB7DQorCQlyZXR1cm4gb3ZlcmxheUltYWdlKG9iamVjdCwgZ2V0UmVzb3VyY2VMb2NhdG9yKCkuZ2V0SW1hZ2UoImZ1bGwvb2JqMTYvQmluZGluZ0Nvbm5lY3RvciIpKTsgLy8kTk9OLU5MUy0xJA0KKwl9DQorDQorCS8qKg0KKwkgKiBUaGlzIHJldHVybnMgdGhlIGxhYmVsIHRleHQgZm9yIHRoZSBhZGFwdGVkIGNsYXNzLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXB1YmxpYyBTdHJpbmcgZ2V0VGV4dChPYmplY3Qgb2JqZWN0KSB7DQorCQlyZXR1cm4gZ2V0U3RyaW5nKCJfVUlfQmluZGluZ0Nvbm5lY3Rvcl90eXBlIik7IC8vJE5PTi1OTFMtMSQNCisJfQ0KKwkNCisNCisJLyoqDQorCSAqIFRoaXMgaGFuZGxlcyBtb2RlbCBub3RpZmljYXRpb25zIGJ5IGNhbGxpbmcge0BsaW5rICN1cGRhdGVDaGlsZHJlbn0gdG8gdXBkYXRlIGFueSBjYWNoZWQNCisJICogY2hpbGRyZW4gYW5kIGJ5IGNyZWF0aW5nIGEgdmlld2VyIG5vdGlmaWNhdGlvbiwgd2hpY2ggaXQgcGFzc2VzIHRvIHtAbGluayAjZmlyZU5vdGlmeUNoYW5nZWR9Lg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXB1YmxpYyB2b2lkIG5vdGlmeUNoYW5nZWQoTm90aWZpY2F0aW9uIG5vdGlmaWNhdGlvbikgew0KKwkJdXBkYXRlQ2hpbGRyZW4obm90aWZpY2F0aW9uKTsNCisJCXN1cGVyLm5vdGlmeUNoYW5nZWQobm90aWZpY2F0aW9uKTsNCisJfQ0KKw0KKwkvKioNCisJICogVGhpcyBhZGRzIHtAbGluayBvcmcuZWNsaXBzZS5lbWYuZWRpdC5jb21tYW5kLkNvbW1hbmRQYXJhbWV0ZXJ9cyBkZXNjcmliaW5nIHRoZSBjaGlsZHJlbg0KKwkgKiB0aGF0IGNhbiBiZSBjcmVhdGVkIHVuZGVyIHRoaXMgb2JqZWN0Lg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXByb3RlY3RlZCB2b2lkIGNvbGxlY3ROZXdDaGlsZERlc2NyaXB0b3JzKENvbGxlY3Rpb248T2JqZWN0PiBuZXdDaGlsZERlc2NyaXB0b3JzLCBPYmplY3Qgb2JqZWN0KSB7DQorCQlzdXBlci5jb2xsZWN0TmV3Q2hpbGREZXNjcmlwdG9ycyhuZXdDaGlsZERlc2NyaXB0b3JzLCBvYmplY3QpOw0KKwl9DQorDQorCS8qKg0KKwkgKiBSZXR1cm4gdGhlIHJlc291cmNlIGxvY2F0b3IgZm9yIHRoaXMgaXRlbSBwcm92aWRlcidzIHJlc291cmNlcy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgUmVzb3VyY2VMb2NhdG9yIGdldFJlc291cmNlTG9jYXRvcigpIHsNCisJCXJldHVybiBTeXNtbEVkaXRQbHVnaW4uSU5TVEFOQ0U7DQorCX0NCisNCit9DQpkaWZmIC0tZ2l0IGEvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZWRpdC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9ibG9ja3MvcHJvdmlkZXIvQmxvY2tJdGVtUHJvdmlkZXIuamF2YSBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmVkaXQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvYmxvY2tzL3Byb3ZpZGVyL0Jsb2NrSXRlbVByb3ZpZGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmM5Y2JkYgotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmVkaXQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvYmxvY2tzL3Byb3ZpZGVyL0Jsb2NrSXRlbVByb3ZpZGVyLmphdmEKQEAgLTAsMCArMSwxODYgQEAKKy8qKg0KKyAqIENvcHlyaWdodCAoYykgMjAxNSBDRUEgTElTVC4NCisgKiANCisgKiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KKyAqICBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCisgKiAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCisgKiAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgKi8NCitwYWNrYWdlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5ibG9ja3MucHJvdmlkZXI7DQorDQorDQoraW1wb3J0IGphdmEudXRpbC5Db2xsZWN0aW9uOw0KK2ltcG9ydCBqYXZhLnV0aWwuTGlzdDsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi5ub3RpZnkuQWRhcHRlckZhY3Rvcnk7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jb21tb24ubm90aWZ5Lk5vdGlmaWNhdGlvbjsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi51dGlsLlJlc291cmNlTG9jYXRvcjsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVkaXQucHJvdmlkZXIuQ29tcG9zZWFibGVBZGFwdGVyRmFjdG9yeTsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVkaXQucHJvdmlkZXIuSUVkaXRpbmdEb21haW5JdGVtUHJvdmlkZXI7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lZGl0LnByb3ZpZGVyLklJdGVtTGFiZWxQcm92aWRlcjsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVkaXQucHJvdmlkZXIuSUl0ZW1Qcm9wZXJ0eURlc2NyaXB0b3I7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lZGl0LnByb3ZpZGVyLklJdGVtUHJvcGVydHlTb3VyY2U7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lZGl0LnByb3ZpZGVyLklTdHJ1Y3R1cmVkSXRlbUNvbnRlbnRQcm92aWRlcjsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVkaXQucHJvdmlkZXIuSVRyZWVJdGVtQ29udGVudFByb3ZpZGVyOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWRpdC5wcm92aWRlci5JdGVtUHJvcGVydHlEZXNjcmlwdG9yOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWRpdC5wcm92aWRlci5JdGVtUHJvdmlkZXJBZGFwdGVyOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWRpdC5wcm92aWRlci5WaWV3ZXJOb3RpZmljYXRpb247DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5ibG9ja3MuQmxvY2s7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5ibG9ja3MuQmxvY2tzUGFja2FnZTsNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnByb3ZpZGVyLlN5c21sRWRpdFBsdWdpbjsNCisNCisvKioNCisgKiBUaGlzIGlzIHRoZSBpdGVtIHByb3ZpZGVyIGFkYXB0ZXIgZm9yIGEge0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5ibG9ja3MuQmxvY2t9IG9iamVjdC4NCisgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKyAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKyAqIEBnZW5lcmF0ZWQNCisgKi8NCitwdWJsaWMgY2xhc3MgQmxvY2tJdGVtUHJvdmlkZXIgDQorCWV4dGVuZHMgSXRlbVByb3ZpZGVyQWRhcHRlcg0KKwlpbXBsZW1lbnRzDQorCQlJRWRpdGluZ0RvbWFpbkl0ZW1Qcm92aWRlciwNCisJCUlTdHJ1Y3R1cmVkSXRlbUNvbnRlbnRQcm92aWRlciwNCisJCUlUcmVlSXRlbUNvbnRlbnRQcm92aWRlciwNCisJCUlJdGVtTGFiZWxQcm92aWRlciwNCisJCUlJdGVtUHJvcGVydHlTb3VyY2Ugew0KKwkvKioNCisJICogVGhpcyBjb25zdHJ1Y3RzIGFuIGluc3RhbmNlIGZyb20gYSBmYWN0b3J5IGFuZCBhIG5vdGlmaWVyLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIEJsb2NrSXRlbVByb3ZpZGVyKEFkYXB0ZXJGYWN0b3J5IGFkYXB0ZXJGYWN0b3J5KSB7DQorCQlzdXBlcihhZGFwdGVyRmFjdG9yeSk7DQorCX0NCisNCisJLyoqDQorCSAqIFRoaXMgcmV0dXJucyB0aGUgcHJvcGVydHkgZGVzY3JpcHRvcnMgZm9yIHRoZSBhZGFwdGVkIGNsYXNzLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXB1YmxpYyBMaXN0PElJdGVtUHJvcGVydHlEZXNjcmlwdG9yPiBnZXRQcm9wZXJ0eURlc2NyaXB0b3JzKE9iamVjdCBvYmplY3QpIHsNCisJCWlmIChpdGVtUHJvcGVydHlEZXNjcmlwdG9ycyA9PSBudWxsKSB7DQorCQkJc3VwZXIuZ2V0UHJvcGVydHlEZXNjcmlwdG9ycyhvYmplY3QpOw0KKw0KKwkJCWFkZEJhc2VfQ2xhc3NQcm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0KTsNCisJCQlhZGRJc0VuY2Fwc3VsYXRlZFByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QpOw0KKwkJfQ0KKwkJcmV0dXJuIGl0ZW1Qcm9wZXJ0eURlc2NyaXB0b3JzOw0KKwl9DQorDQorCS8qKg0KKwkgKiBUaGlzIGFkZHMgYSBwcm9wZXJ0eSBkZXNjcmlwdG9yIGZvciB0aGUgQmFzZSBDbGFzcyBmZWF0dXJlLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHJvdGVjdGVkIHZvaWQgYWRkQmFzZV9DbGFzc1Byb3BlcnR5RGVzY3JpcHRvcihPYmplY3Qgb2JqZWN0KSB7DQorCQlpdGVtUHJvcGVydHlEZXNjcmlwdG9ycy5hZGQNCisJCQkoY3JlYXRlSXRlbVByb3BlcnR5RGVzY3JpcHRvcg0KKwkJCQkoKChDb21wb3NlYWJsZUFkYXB0ZXJGYWN0b3J5KWFkYXB0ZXJGYWN0b3J5KS5nZXRSb290QWRhcHRlckZhY3RvcnkoKSwNCisJCQkJIGdldFJlc291cmNlTG9jYXRvcigpLA0KKwkJCQkgZ2V0U3RyaW5nKCJfVUlfQmxvY2tfYmFzZV9DbGFzc19mZWF0dXJlIiksIC8vJE5PTi1OTFMtMSQNCisJCQkJIGdldFN0cmluZygiX1VJX1Byb3BlcnR5RGVzY3JpcHRvcl9kZXNjcmlwdGlvbiIsICJfVUlfQmxvY2tfYmFzZV9DbGFzc19mZWF0dXJlIiwgIl9VSV9CbG9ja190eXBlIiksIC8vJE5PTi1OTFMtMSQgLy8kTk9OLU5MUy0yJCAvLyROT04tTkxTLTMkDQorCQkJCSBCbG9ja3NQYWNrYWdlLkxpdGVyYWxzLkJMT0NLX19CQVNFX0NMQVNTLA0KKwkJCQkgdHJ1ZSwNCisJCQkJIGZhbHNlLA0KKwkJCQkgdHJ1ZSwNCisJCQkJIG51bGwsDQorCQkJCSBudWxsLA0KKwkJCQkgbnVsbCkpOw0KKwl9DQorDQorCS8qKg0KKwkgKiBUaGlzIGFkZHMgYSBwcm9wZXJ0eSBkZXNjcmlwdG9yIGZvciB0aGUgSXMgRW5jYXBzdWxhdGVkIGZlYXR1cmUuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwcm90ZWN0ZWQgdm9pZCBhZGRJc0VuY2Fwc3VsYXRlZFByb3BlcnR5RGVzY3JpcHRvcihPYmplY3Qgb2JqZWN0KSB7DQorCQlpdGVtUHJvcGVydHlEZXNjcmlwdG9ycy5hZGQNCisJCQkoY3JlYXRlSXRlbVByb3BlcnR5RGVzY3JpcHRvcg0KKwkJCQkoKChDb21wb3NlYWJsZUFkYXB0ZXJGYWN0b3J5KWFkYXB0ZXJGYWN0b3J5KS5nZXRSb290QWRhcHRlckZhY3RvcnkoKSwNCisJCQkJIGdldFJlc291cmNlTG9jYXRvcigpLA0KKwkJCQkgZ2V0U3RyaW5nKCJfVUlfQmxvY2tfaXNFbmNhcHN1bGF0ZWRfZmVhdHVyZSIpLCAvLyROT04tTkxTLTEkDQorCQkJCSBnZXRTdHJpbmcoIl9VSV9Qcm9wZXJ0eURlc2NyaXB0b3JfZGVzY3JpcHRpb24iLCAiX1VJX0Jsb2NrX2lzRW5jYXBzdWxhdGVkX2ZlYXR1cmUiLCAiX1VJX0Jsb2NrX3R5cGUiKSwgLy8kTk9OLU5MUy0xJCAvLyROT04tTkxTLTIkIC8vJE5PTi1OTFMtMyQNCisJCQkJIEJsb2Nrc1BhY2thZ2UuTGl0ZXJhbHMuQkxPQ0tfX0lTX0VOQ0FQU1VMQVRFRCwNCisJCQkJIHRydWUsDQorCQkJCSBmYWxzZSwNCisJCQkJIGZhbHNlLA0KKwkJCQkgSXRlbVByb3BlcnR5RGVzY3JpcHRvci5CT09MRUFOX1ZBTFVFX0lNQUdFLA0KKwkJCQkgbnVsbCwNCisJCQkJIG51bGwpKTsNCisJfQ0KKw0KKwkvKioNCisJICogVGhpcyByZXR1cm5zIEJsb2NrLmdpZi4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgT2JqZWN0IGdldEltYWdlKE9iamVjdCBvYmplY3QpIHsNCisJCXJldHVybiBvdmVybGF5SW1hZ2Uob2JqZWN0LCBnZXRSZXNvdXJjZUxvY2F0b3IoKS5nZXRJbWFnZSgiZnVsbC9vYmoxNi9CbG9jayIpKTsgLy8kTk9OLU5MUy0xJA0KKwl9DQorDQorCS8qKg0KKwkgKiBUaGlzIHJldHVybnMgdGhlIGxhYmVsIHRleHQgZm9yIHRoZSBhZGFwdGVkIGNsYXNzLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXB1YmxpYyBTdHJpbmcgZ2V0VGV4dChPYmplY3Qgb2JqZWN0KSB7DQorCQlCbG9jayBibG9jayA9IChCbG9jaylvYmplY3Q7DQorCQlyZXR1cm4gZ2V0U3RyaW5nKCJfVUlfQmxvY2tfdHlwZSIpICsgIiAiICsgYmxvY2suaXNFbmNhcHN1bGF0ZWQoKTsgLy8kTk9OLU5MUy0xJCAvLyROT04tTkxTLTIkDQorCX0NCisJDQorDQorCS8qKg0KKwkgKiBUaGlzIGhhbmRsZXMgbW9kZWwgbm90aWZpY2F0aW9ucyBieSBjYWxsaW5nIHtAbGluayAjdXBkYXRlQ2hpbGRyZW59IHRvIHVwZGF0ZSBhbnkgY2FjaGVkDQorCSAqIGNoaWxkcmVuIGFuZCBieSBjcmVhdGluZyBhIHZpZXdlciBub3RpZmljYXRpb24sIHdoaWNoIGl0IHBhc3NlcyB0byB7QGxpbmsgI2ZpcmVOb3RpZnlDaGFuZ2VkfS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgdm9pZCBub3RpZnlDaGFuZ2VkKE5vdGlmaWNhdGlvbiBub3RpZmljYXRpb24pIHsNCisJCXVwZGF0ZUNoaWxkcmVuKG5vdGlmaWNhdGlvbik7DQorDQorCQlzd2l0Y2ggKG5vdGlmaWNhdGlvbi5nZXRGZWF0dXJlSUQoQmxvY2suY2xhc3MpKSB7DQorCQkJY2FzZSBCbG9ja3NQYWNrYWdlLkJMT0NLX19JU19FTkNBUFNVTEFURUQ6DQorCQkJCWZpcmVOb3RpZnlDaGFuZ2VkKG5ldyBWaWV3ZXJOb3RpZmljYXRpb24obm90aWZpY2F0aW9uLCBub3RpZmljYXRpb24uZ2V0Tm90aWZpZXIoKSwgZmFsc2UsIHRydWUpKTsNCisJCQkJcmV0dXJuOw0KKwkJfQ0KKwkJc3VwZXIubm90aWZ5Q2hhbmdlZChub3RpZmljYXRpb24pOw0KKwl9DQorDQorCS8qKg0KKwkgKiBUaGlzIGFkZHMge0BsaW5rIG9yZy5lY2xpcHNlLmVtZi5lZGl0LmNvbW1hbmQuQ29tbWFuZFBhcmFtZXRlcn1zIGRlc2NyaWJpbmcgdGhlIGNoaWxkcmVuDQorCSAqIHRoYXQgY2FuIGJlIGNyZWF0ZWQgdW5kZXIgdGhpcyBvYmplY3QuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHJvdGVjdGVkIHZvaWQgY29sbGVjdE5ld0NoaWxkRGVzY3JpcHRvcnMoQ29sbGVjdGlvbjxPYmplY3Q+IG5ld0NoaWxkRGVzY3JpcHRvcnMsIE9iamVjdCBvYmplY3QpIHsNCisJCXN1cGVyLmNvbGxlY3ROZXdDaGlsZERlc2NyaXB0b3JzKG5ld0NoaWxkRGVzY3JpcHRvcnMsIG9iamVjdCk7DQorCX0NCisNCisJLyoqDQorCSAqIFJldHVybiB0aGUgcmVzb3VyY2UgbG9jYXRvciBmb3IgdGhpcyBpdGVtIHByb3ZpZGVyJ3MgcmVzb3VyY2VzLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXB1YmxpYyBSZXNvdXJjZUxvY2F0b3IgZ2V0UmVzb3VyY2VMb2NhdG9yKCkgew0KKwkJcmV0dXJuIFN5c21sRWRpdFBsdWdpbi5JTlNUQU5DRTsNCisJfQ0KKw0KK30NCmRpZmYgLS1naXQgYS9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5lZGl0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L2Jsb2Nrcy9wcm92aWRlci9CbG9ja3NJdGVtUHJvdmlkZXJBZGFwdGVyRmFjdG9yeS5qYXZhIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZWRpdC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9ibG9ja3MvcHJvdmlkZXIvQmxvY2tzSXRlbVByb3ZpZGVyQWRhcHRlckZhY3RvcnkuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMGRkNDY0Ci0tLSAvZGV2L251bGwKKysrIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZWRpdC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9ibG9ja3MvcHJvdmlkZXIvQmxvY2tzSXRlbVByb3ZpZGVyQWRhcHRlckZhY3RvcnkuamF2YQpAQCAtMCwwICsxLDQ2OSBAQAorLyoqDQorICogQ29weXJpZ2h0IChjKSAyMDE1IENFQSBMSVNULg0KKyAqIA0KKyAqICBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQorICogIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KKyAqICB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KKyAqICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqLw0KK3BhY2thZ2Ugb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmJsb2Nrcy5wcm92aWRlcjsNCisNCitpbXBvcnQgamF2YS51dGlsLkFycmF5TGlzdDsNCitpbXBvcnQgamF2YS51dGlsLkNvbGxlY3Rpb247DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jb21tb24ubm90aWZ5LkFkYXB0ZXI7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jb21tb24ubm90aWZ5Lk5vdGlmaWNhdGlvbjsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi5ub3RpZnkuTm90aWZpZXI7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lZGl0LnByb3ZpZGVyLkNoYW5nZU5vdGlmaWVyOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWRpdC5wcm92aWRlci5Db21wb3NlYWJsZUFkYXB0ZXJGYWN0b3J5Ow0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWRpdC5wcm92aWRlci5Db21wb3NlZEFkYXB0ZXJGYWN0b3J5Ow0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWRpdC5wcm92aWRlci5JQ2hhbmdlTm90aWZpZXI7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lZGl0LnByb3ZpZGVyLklEaXNwb3NhYmxlOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWRpdC5wcm92aWRlci5JRWRpdGluZ0RvbWFpbkl0ZW1Qcm92aWRlcjsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVkaXQucHJvdmlkZXIuSUl0ZW1MYWJlbFByb3ZpZGVyOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWRpdC5wcm92aWRlci5JSXRlbVByb3BlcnR5U291cmNlOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWRpdC5wcm92aWRlci5JTm90aWZ5Q2hhbmdlZExpc3RlbmVyOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWRpdC5wcm92aWRlci5JU3RydWN0dXJlZEl0ZW1Db250ZW50UHJvdmlkZXI7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lZGl0LnByb3ZpZGVyLklUcmVlSXRlbUNvbnRlbnRQcm92aWRlcjsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmJsb2Nrcy51dGlsLkJsb2Nrc0FkYXB0ZXJGYWN0b3J5Ow0KKw0KKy8qKg0KKyAqIFRoaXMgaXMgdGhlIGZhY3RvcnkgdGhhdCBpcyB1c2VkIHRvIHByb3ZpZGUgdGhlIGludGVyZmFjZXMgbmVlZGVkIHRvIHN1cHBvcnQgVmlld2Vycy4NCisgKiBUaGUgYWRhcHRlcnMgZ2VuZXJhdGVkIGJ5IHRoaXMgZmFjdG9yeSBjb252ZXJ0IEVNRiBhZGFwdGVyIG5vdGlmaWNhdGlvbnMgaW50byBjYWxscyB0byB7QGxpbmsgI2ZpcmVOb3RpZnlDaGFuZ2VkIGZpcmVOb3RpZnlDaGFuZ2VkfS4NCisgKiBUaGUgYWRhcHRlcnMgYWxzbyBzdXBwb3J0IEVjbGlwc2UgcHJvcGVydHkgc2hlZXRzLg0KKyAqIE5vdGUgdGhhdCBtb3N0IG9mIHRoZSBhZGFwdGVycyBhcmUgc2hhcmVkIGFtb25nIG11bHRpcGxlIGluc3RhbmNlcy4NCisgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKyAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKyAqIEBnZW5lcmF0ZWQNCisgKi8NCitwdWJsaWMgY2xhc3MgQmxvY2tzSXRlbVByb3ZpZGVyQWRhcHRlckZhY3RvcnkgZXh0ZW5kcyBCbG9ja3NBZGFwdGVyRmFjdG9yeSBpbXBsZW1lbnRzIENvbXBvc2VhYmxlQWRhcHRlckZhY3RvcnksIElDaGFuZ2VOb3RpZmllciwgSURpc3Bvc2FibGUgew0KKwkvKioNCisJICogVGhpcyBrZWVwcyB0cmFjayBvZiB0aGUgcm9vdCBhZGFwdGVyIGZhY3RvcnkgdGhhdCBkZWxlZ2F0ZXMgdG8gdGhpcyBhZGFwdGVyIGZhY3RvcnkuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwcm90ZWN0ZWQgQ29tcG9zZWRBZGFwdGVyRmFjdG9yeSBwYXJlbnRBZGFwdGVyRmFjdG9yeTsNCisNCisJLyoqDQorCSAqIFRoaXMgaXMgdXNlZCB0byBpbXBsZW1lbnQge0BsaW5rIG9yZy5lY2xpcHNlLmVtZi5lZGl0LnByb3ZpZGVyLklDaGFuZ2VOb3RpZmllcn0uDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwcm90ZWN0ZWQgSUNoYW5nZU5vdGlmaWVyIGNoYW5nZU5vdGlmaWVyID0gbmV3IENoYW5nZU5vdGlmaWVyKCk7DQorDQorCS8qKg0KKwkgKiBUaGlzIGtlZXBzIHRyYWNrIG9mIGFsbCB0aGUgc3VwcG9ydGVkIHR5cGVzIGNoZWNrZWQgYnkge0BsaW5rICNpc0ZhY3RvcnlGb3JUeXBlIGlzRmFjdG9yeUZvclR5cGV9Lg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHJvdGVjdGVkIENvbGxlY3Rpb248T2JqZWN0PiBzdXBwb3J0ZWRUeXBlcyA9IG5ldyBBcnJheUxpc3Q8T2JqZWN0PigpOw0KKw0KKwkvKioNCisJICogVGhpcyBjb25zdHJ1Y3RzIGFuIGluc3RhbmNlLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIEJsb2Nrc0l0ZW1Qcm92aWRlckFkYXB0ZXJGYWN0b3J5KCkgew0KKwkJc3VwcG9ydGVkVHlwZXMuYWRkKElFZGl0aW5nRG9tYWluSXRlbVByb3ZpZGVyLmNsYXNzKTsNCisJCXN1cHBvcnRlZFR5cGVzLmFkZChJU3RydWN0dXJlZEl0ZW1Db250ZW50UHJvdmlkZXIuY2xhc3MpOw0KKwkJc3VwcG9ydGVkVHlwZXMuYWRkKElUcmVlSXRlbUNvbnRlbnRQcm92aWRlci5jbGFzcyk7DQorCQlzdXBwb3J0ZWRUeXBlcy5hZGQoSUl0ZW1MYWJlbFByb3ZpZGVyLmNsYXNzKTsNCisJCXN1cHBvcnRlZFR5cGVzLmFkZChJSXRlbVByb3BlcnR5U291cmNlLmNsYXNzKTsNCisJfQ0KKw0KKwkvKioNCisJICogVGhpcyBrZWVwcyB0cmFjayBvZiB0aGUgb25lIGFkYXB0ZXIgdXNlZCBmb3IgYWxsIHtAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYmxvY2tzLlZhbHVlVHlwZX0gaW5zdGFuY2VzLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHJvdGVjdGVkIFZhbHVlVHlwZUl0ZW1Qcm92aWRlciB2YWx1ZVR5cGVJdGVtUHJvdmlkZXI7DQorDQorCS8qKg0KKwkgKiBUaGlzIGNyZWF0ZXMgYW4gYWRhcHRlciBmb3IgYSB7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmJsb2Nrcy5WYWx1ZVR5cGV9Lg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXB1YmxpYyBBZGFwdGVyIGNyZWF0ZVZhbHVlVHlwZUFkYXB0ZXIoKSB7DQorCQlpZiAodmFsdWVUeXBlSXRlbVByb3ZpZGVyID09IG51bGwpIHsNCisJCQl2YWx1ZVR5cGVJdGVtUHJvdmlkZXIgPSBuZXcgVmFsdWVUeXBlSXRlbVByb3ZpZGVyKHRoaXMpOw0KKwkJfQ0KKw0KKwkJcmV0dXJuIHZhbHVlVHlwZUl0ZW1Qcm92aWRlcjsNCisJfQ0KKw0KKwkvKioNCisJICogVGhpcyBrZWVwcyB0cmFjayBvZiB0aGUgb25lIGFkYXB0ZXIgdXNlZCBmb3IgYWxsIHtAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYmxvY2tzLkRpc3RyaWJ1dGVkUHJvcGVydHl9IGluc3RhbmNlcy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXByb3RlY3RlZCBEaXN0cmlidXRlZFByb3BlcnR5SXRlbVByb3ZpZGVyIGRpc3RyaWJ1dGVkUHJvcGVydHlJdGVtUHJvdmlkZXI7DQorDQorCS8qKg0KKwkgKiBUaGlzIGNyZWF0ZXMgYW4gYWRhcHRlciBmb3IgYSB7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmJsb2Nrcy5EaXN0cmlidXRlZFByb3BlcnR5fS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgQWRhcHRlciBjcmVhdGVEaXN0cmlidXRlZFByb3BlcnR5QWRhcHRlcigpIHsNCisJCWlmIChkaXN0cmlidXRlZFByb3BlcnR5SXRlbVByb3ZpZGVyID09IG51bGwpIHsNCisJCQlkaXN0cmlidXRlZFByb3BlcnR5SXRlbVByb3ZpZGVyID0gbmV3IERpc3RyaWJ1dGVkUHJvcGVydHlJdGVtUHJvdmlkZXIodGhpcyk7DQorCQl9DQorDQorCQlyZXR1cm4gZGlzdHJpYnV0ZWRQcm9wZXJ0eUl0ZW1Qcm92aWRlcjsNCisJfQ0KKw0KKwkvKioNCisJICogVGhpcyBrZWVwcyB0cmFjayBvZiB0aGUgb25lIGFkYXB0ZXIgdXNlZCBmb3IgYWxsIHtAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYmxvY2tzLkNvbm5lY3RvclByb3BlcnR5fSBpbnN0YW5jZXMuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwcm90ZWN0ZWQgQ29ubmVjdG9yUHJvcGVydHlJdGVtUHJvdmlkZXIgY29ubmVjdG9yUHJvcGVydHlJdGVtUHJvdmlkZXI7DQorDQorCS8qKg0KKwkgKiBUaGlzIGNyZWF0ZXMgYW4gYWRhcHRlciBmb3IgYSB7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmJsb2Nrcy5Db25uZWN0b3JQcm9wZXJ0eX0uDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIEFkYXB0ZXIgY3JlYXRlQ29ubmVjdG9yUHJvcGVydHlBZGFwdGVyKCkgew0KKwkJaWYgKGNvbm5lY3RvclByb3BlcnR5SXRlbVByb3ZpZGVyID09IG51bGwpIHsNCisJCQljb25uZWN0b3JQcm9wZXJ0eUl0ZW1Qcm92aWRlciA9IG5ldyBDb25uZWN0b3JQcm9wZXJ0eUl0ZW1Qcm92aWRlcih0aGlzKTsNCisJCX0NCisNCisJCXJldHVybiBjb25uZWN0b3JQcm9wZXJ0eUl0ZW1Qcm92aWRlcjsNCisJfQ0KKw0KKwkvKioNCisJICogVGhpcyBrZWVwcyB0cmFjayBvZiB0aGUgb25lIGFkYXB0ZXIgdXNlZCBmb3IgYWxsIHtAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYmxvY2tzLlBhcnRpY2lwYW50UHJvcGVydHl9IGluc3RhbmNlcy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXByb3RlY3RlZCBQYXJ0aWNpcGFudFByb3BlcnR5SXRlbVByb3ZpZGVyIHBhcnRpY2lwYW50UHJvcGVydHlJdGVtUHJvdmlkZXI7DQorDQorCS8qKg0KKwkgKiBUaGlzIGNyZWF0ZXMgYW4gYWRhcHRlciBmb3IgYSB7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmJsb2Nrcy5QYXJ0aWNpcGFudFByb3BlcnR5fS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgQWRhcHRlciBjcmVhdGVQYXJ0aWNpcGFudFByb3BlcnR5QWRhcHRlcigpIHsNCisJCWlmIChwYXJ0aWNpcGFudFByb3BlcnR5SXRlbVByb3ZpZGVyID09IG51bGwpIHsNCisJCQlwYXJ0aWNpcGFudFByb3BlcnR5SXRlbVByb3ZpZGVyID0gbmV3IFBhcnRpY2lwYW50UHJvcGVydHlJdGVtUHJvdmlkZXIodGhpcyk7DQorCQl9DQorDQorCQlyZXR1cm4gcGFydGljaXBhbnRQcm9wZXJ0eUl0ZW1Qcm92aWRlcjsNCisJfQ0KKw0KKwkvKioNCisJICogVGhpcyBrZWVwcyB0cmFjayBvZiB0aGUgb25lIGFkYXB0ZXIgdXNlZCBmb3IgYWxsIHtAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYmxvY2tzLkJpbmRpbmdDb25uZWN0b3J9IGluc3RhbmNlcy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXByb3RlY3RlZCBCaW5kaW5nQ29ubmVjdG9ySXRlbVByb3ZpZGVyIGJpbmRpbmdDb25uZWN0b3JJdGVtUHJvdmlkZXI7DQorDQorCS8qKg0KKwkgKiBUaGlzIGNyZWF0ZXMgYW4gYWRhcHRlciBmb3IgYSB7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmJsb2Nrcy5CaW5kaW5nQ29ubmVjdG9yfS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgQWRhcHRlciBjcmVhdGVCaW5kaW5nQ29ubmVjdG9yQWRhcHRlcigpIHsNCisJCWlmIChiaW5kaW5nQ29ubmVjdG9ySXRlbVByb3ZpZGVyID09IG51bGwpIHsNCisJCQliaW5kaW5nQ29ubmVjdG9ySXRlbVByb3ZpZGVyID0gbmV3IEJpbmRpbmdDb25uZWN0b3JJdGVtUHJvdmlkZXIodGhpcyk7DQorCQl9DQorDQorCQlyZXR1cm4gYmluZGluZ0Nvbm5lY3Rvckl0ZW1Qcm92aWRlcjsNCisJfQ0KKw0KKwkvKioNCisJICogVGhpcyBrZWVwcyB0cmFjayBvZiB0aGUgb25lIGFkYXB0ZXIgdXNlZCBmb3IgYWxsIHtAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYmxvY2tzLkJsb2NrfSBpbnN0YW5jZXMuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwcm90ZWN0ZWQgQmxvY2tJdGVtUHJvdmlkZXIgYmxvY2tJdGVtUHJvdmlkZXI7DQorDQorCS8qKg0KKwkgKiBUaGlzIGNyZWF0ZXMgYW4gYWRhcHRlciBmb3IgYSB7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmJsb2Nrcy5CbG9ja30uDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIEFkYXB0ZXIgY3JlYXRlQmxvY2tBZGFwdGVyKCkgew0KKwkJaWYgKGJsb2NrSXRlbVByb3ZpZGVyID09IG51bGwpIHsNCisJCQlibG9ja0l0ZW1Qcm92aWRlciA9IG5ldyBCbG9ja0l0ZW1Qcm92aWRlcih0aGlzKTsNCisJCX0NCisNCisJCXJldHVybiBibG9ja0l0ZW1Qcm92aWRlcjsNCisJfQ0KKw0KKwkvKioNCisJICogVGhpcyBrZWVwcyB0cmFjayBvZiB0aGUgb25lIGFkYXB0ZXIgdXNlZCBmb3IgYWxsIHtAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYmxvY2tzLlByb3BlcnR5U3BlY2lmaWNUeXBlfSBpbnN0YW5jZXMuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwcm90ZWN0ZWQgUHJvcGVydHlTcGVjaWZpY1R5cGVJdGVtUHJvdmlkZXIgcHJvcGVydHlTcGVjaWZpY1R5cGVJdGVtUHJvdmlkZXI7DQorDQorCS8qKg0KKwkgKiBUaGlzIGNyZWF0ZXMgYW4gYWRhcHRlciBmb3IgYSB7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmJsb2Nrcy5Qcm9wZXJ0eVNwZWNpZmljVHlwZX0uDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIEFkYXB0ZXIgY3JlYXRlUHJvcGVydHlTcGVjaWZpY1R5cGVBZGFwdGVyKCkgew0KKwkJaWYgKHByb3BlcnR5U3BlY2lmaWNUeXBlSXRlbVByb3ZpZGVyID09IG51bGwpIHsNCisJCQlwcm9wZXJ0eVNwZWNpZmljVHlwZUl0ZW1Qcm92aWRlciA9IG5ldyBQcm9wZXJ0eVNwZWNpZmljVHlwZUl0ZW1Qcm92aWRlcih0aGlzKTsNCisJCX0NCisNCisJCXJldHVybiBwcm9wZXJ0eVNwZWNpZmljVHlwZUl0ZW1Qcm92aWRlcjsNCisJfQ0KKw0KKwkvKioNCisJICogVGhpcyBrZWVwcyB0cmFjayBvZiB0aGUgb25lIGFkYXB0ZXIgdXNlZCBmb3IgYWxsIHtAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYmxvY2tzLk5lc3RlZENvbm5lY3RvckVuZH0gaW5zdGFuY2VzLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHJvdGVjdGVkIE5lc3RlZENvbm5lY3RvckVuZEl0ZW1Qcm92aWRlciBuZXN0ZWRDb25uZWN0b3JFbmRJdGVtUHJvdmlkZXI7DQorDQorCS8qKg0KKwkgKiBUaGlzIGNyZWF0ZXMgYW4gYWRhcHRlciBmb3IgYSB7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmJsb2Nrcy5OZXN0ZWRDb25uZWN0b3JFbmR9Lg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXB1YmxpYyBBZGFwdGVyIGNyZWF0ZU5lc3RlZENvbm5lY3RvckVuZEFkYXB0ZXIoKSB7DQorCQlpZiAobmVzdGVkQ29ubmVjdG9yRW5kSXRlbVByb3ZpZGVyID09IG51bGwpIHsNCisJCQluZXN0ZWRDb25uZWN0b3JFbmRJdGVtUHJvdmlkZXIgPSBuZXcgTmVzdGVkQ29ubmVjdG9yRW5kSXRlbVByb3ZpZGVyKHRoaXMpOw0KKwkJfQ0KKw0KKwkJcmV0dXJuIG5lc3RlZENvbm5lY3RvckVuZEl0ZW1Qcm92aWRlcjsNCisJfQ0KKw0KKwkvKioNCisJICogVGhpcyBrZWVwcyB0cmFjayBvZiB0aGUgb25lIGFkYXB0ZXIgdXNlZCBmb3IgYWxsIHtAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYmxvY2tzLkVuZFBhdGhNdWx0aXBsaWNpdHl9IGluc3RhbmNlcy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXByb3RlY3RlZCBFbmRQYXRoTXVsdGlwbGljaXR5SXRlbVByb3ZpZGVyIGVuZFBhdGhNdWx0aXBsaWNpdHlJdGVtUHJvdmlkZXI7DQorDQorCS8qKg0KKwkgKiBUaGlzIGNyZWF0ZXMgYW4gYWRhcHRlciBmb3IgYSB7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmJsb2Nrcy5FbmRQYXRoTXVsdGlwbGljaXR5fS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgQWRhcHRlciBjcmVhdGVFbmRQYXRoTXVsdGlwbGljaXR5QWRhcHRlcigpIHsNCisJCWlmIChlbmRQYXRoTXVsdGlwbGljaXR5SXRlbVByb3ZpZGVyID09IG51bGwpIHsNCisJCQllbmRQYXRoTXVsdGlwbGljaXR5SXRlbVByb3ZpZGVyID0gbmV3IEVuZFBhdGhNdWx0aXBsaWNpdHlJdGVtUHJvdmlkZXIodGhpcyk7DQorCQl9DQorDQorCQlyZXR1cm4gZW5kUGF0aE11bHRpcGxpY2l0eUl0ZW1Qcm92aWRlcjsNCisJfQ0KKw0KKwkvKioNCisJICogVGhpcyBrZWVwcyB0cmFjayBvZiB0aGUgb25lIGFkYXB0ZXIgdXNlZCBmb3IgYWxsIHtAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYmxvY2tzLkJvdW5kUmVmZXJlbmNlfSBpbnN0YW5jZXMuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwcm90ZWN0ZWQgQm91bmRSZWZlcmVuY2VJdGVtUHJvdmlkZXIgYm91bmRSZWZlcmVuY2VJdGVtUHJvdmlkZXI7DQorDQorCS8qKg0KKwkgKiBUaGlzIGNyZWF0ZXMgYW4gYWRhcHRlciBmb3IgYSB7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmJsb2Nrcy5Cb3VuZFJlZmVyZW5jZX0uDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIEFkYXB0ZXIgY3JlYXRlQm91bmRSZWZlcmVuY2VBZGFwdGVyKCkgew0KKwkJaWYgKGJvdW5kUmVmZXJlbmNlSXRlbVByb3ZpZGVyID09IG51bGwpIHsNCisJCQlib3VuZFJlZmVyZW5jZUl0ZW1Qcm92aWRlciA9IG5ldyBCb3VuZFJlZmVyZW5jZUl0ZW1Qcm92aWRlcih0aGlzKTsNCisJCX0NCisNCisJCXJldHVybiBib3VuZFJlZmVyZW5jZUl0ZW1Qcm92aWRlcjsNCisJfQ0KKw0KKwkvKioNCisJICogVGhpcyBrZWVwcyB0cmFjayBvZiB0aGUgb25lIGFkYXB0ZXIgdXNlZCBmb3IgYWxsIHtAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYmxvY2tzLkFkanVuY3RQcm9wZXJ0eX0gaW5zdGFuY2VzLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHJvdGVjdGVkIEFkanVuY3RQcm9wZXJ0eUl0ZW1Qcm92aWRlciBhZGp1bmN0UHJvcGVydHlJdGVtUHJvdmlkZXI7DQorDQorCS8qKg0KKwkgKiBUaGlzIGNyZWF0ZXMgYW4gYWRhcHRlciBmb3IgYSB7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmJsb2Nrcy5BZGp1bmN0UHJvcGVydHl9Lg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXB1YmxpYyBBZGFwdGVyIGNyZWF0ZUFkanVuY3RQcm9wZXJ0eUFkYXB0ZXIoKSB7DQorCQlpZiAoYWRqdW5jdFByb3BlcnR5SXRlbVByb3ZpZGVyID09IG51bGwpIHsNCisJCQlhZGp1bmN0UHJvcGVydHlJdGVtUHJvdmlkZXIgPSBuZXcgQWRqdW5jdFByb3BlcnR5SXRlbVByb3ZpZGVyKHRoaXMpOw0KKwkJfQ0KKw0KKwkJcmV0dXJuIGFkanVuY3RQcm9wZXJ0eUl0ZW1Qcm92aWRlcjsNCisJfQ0KKw0KKwkvKioNCisJICogVGhpcyBrZWVwcyB0cmFjayBvZiB0aGUgb25lIGFkYXB0ZXIgdXNlZCBmb3IgYWxsIHtAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYmxvY2tzLkNsYXNzaWZpZXJCZWhhdmlvclByb3BlcnR5fSBpbnN0YW5jZXMuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwcm90ZWN0ZWQgQ2xhc3NpZmllckJlaGF2aW9yUHJvcGVydHlJdGVtUHJvdmlkZXIgY2xhc3NpZmllckJlaGF2aW9yUHJvcGVydHlJdGVtUHJvdmlkZXI7DQorDQorCS8qKg0KKwkgKiBUaGlzIGNyZWF0ZXMgYW4gYWRhcHRlciBmb3IgYSB7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmJsb2Nrcy5DbGFzc2lmaWVyQmVoYXZpb3JQcm9wZXJ0eX0uDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIEFkYXB0ZXIgY3JlYXRlQ2xhc3NpZmllckJlaGF2aW9yUHJvcGVydHlBZGFwdGVyKCkgew0KKwkJaWYgKGNsYXNzaWZpZXJCZWhhdmlvclByb3BlcnR5SXRlbVByb3ZpZGVyID09IG51bGwpIHsNCisJCQljbGFzc2lmaWVyQmVoYXZpb3JQcm9wZXJ0eUl0ZW1Qcm92aWRlciA9IG5ldyBDbGFzc2lmaWVyQmVoYXZpb3JQcm9wZXJ0eUl0ZW1Qcm92aWRlcih0aGlzKTsNCisJCX0NCisNCisJCXJldHVybiBjbGFzc2lmaWVyQmVoYXZpb3JQcm9wZXJ0eUl0ZW1Qcm92aWRlcjsNCisJfQ0KKw0KKwkvKioNCisJICogVGhpcyByZXR1cm5zIHRoZSByb290IGFkYXB0ZXIgZmFjdG9yeSB0aGF0IGNvbnRhaW5zIHRoaXMgZmFjdG9yeS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBDb21wb3NlYWJsZUFkYXB0ZXJGYWN0b3J5IGdldFJvb3RBZGFwdGVyRmFjdG9yeSgpIHsNCisJCXJldHVybiBwYXJlbnRBZGFwdGVyRmFjdG9yeSA9PSBudWxsID8gdGhpcyA6IHBhcmVudEFkYXB0ZXJGYWN0b3J5LmdldFJvb3RBZGFwdGVyRmFjdG9yeSgpOw0KKwl9DQorDQorCS8qKg0KKwkgKiBUaGlzIHNldHMgdGhlIGNvbXBvc2VkIGFkYXB0ZXIgZmFjdG9yeSB0aGF0IGNvbnRhaW5zIHRoaXMgZmFjdG9yeS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyB2b2lkIHNldFBhcmVudEFkYXB0ZXJGYWN0b3J5KENvbXBvc2VkQWRhcHRlckZhY3RvcnkgcGFyZW50QWRhcHRlckZhY3RvcnkpIHsNCisJCXRoaXMucGFyZW50QWRhcHRlckZhY3RvcnkgPSBwYXJlbnRBZGFwdGVyRmFjdG9yeTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgYm9vbGVhbiBpc0ZhY3RvcnlGb3JUeXBlKE9iamVjdCB0eXBlKSB7DQorCQlyZXR1cm4gc3VwcG9ydGVkVHlwZXMuY29udGFpbnModHlwZSkgfHwgc3VwZXIuaXNGYWN0b3J5Rm9yVHlwZSh0eXBlKTsNCisJfQ0KKw0KKwkvKioNCisJICogVGhpcyBpbXBsZW1lbnRhdGlvbiBzdWJzdGl0dXRlcyB0aGUgZmFjdG9yeSBpdHNlbGYgYXMgdGhlIGtleSBmb3IgdGhlIGFkYXB0ZXIuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIEFkYXB0ZXIgYWRhcHQoTm90aWZpZXIgbm90aWZpZXIsIE9iamVjdCB0eXBlKSB7DQorCQlyZXR1cm4gc3VwZXIuYWRhcHQobm90aWZpZXIsIHRoaXMpOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXB1YmxpYyBPYmplY3QgYWRhcHQoT2JqZWN0IG9iamVjdCwgT2JqZWN0IHR5cGUpIHsNCisJCWlmIChpc0ZhY3RvcnlGb3JUeXBlKHR5cGUpKSB7DQorCQkJT2JqZWN0IGFkYXB0ZXIgPSBzdXBlci5hZGFwdChvYmplY3QsIHR5cGUpOw0KKwkJCWlmICghKHR5cGUgaW5zdGFuY2VvZiBDbGFzczw/PikgfHwgKCgoQ2xhc3M8Pz4pdHlwZSkuaXNJbnN0YW5jZShhZGFwdGVyKSkpIHsNCisJCQkJcmV0dXJuIGFkYXB0ZXI7DQorCQkJfQ0KKwkJfQ0KKw0KKwkJcmV0dXJuIG51bGw7DQorCX0NCisNCisJLyoqDQorCSAqIFRoaXMgYWRkcyBhIGxpc3RlbmVyLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIHZvaWQgYWRkTGlzdGVuZXIoSU5vdGlmeUNoYW5nZWRMaXN0ZW5lciBub3RpZnlDaGFuZ2VkTGlzdGVuZXIpIHsNCisJCWNoYW5nZU5vdGlmaWVyLmFkZExpc3RlbmVyKG5vdGlmeUNoYW5nZWRMaXN0ZW5lcik7DQorCX0NCisNCisJLyoqDQorCSAqIFRoaXMgcmVtb3ZlcyBhIGxpc3RlbmVyLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIHZvaWQgcmVtb3ZlTGlzdGVuZXIoSU5vdGlmeUNoYW5nZWRMaXN0ZW5lciBub3RpZnlDaGFuZ2VkTGlzdGVuZXIpIHsNCisJCWNoYW5nZU5vdGlmaWVyLnJlbW92ZUxpc3RlbmVyKG5vdGlmeUNoYW5nZWRMaXN0ZW5lcik7DQorCX0NCisNCisJLyoqDQorCSAqIFRoaXMgZGVsZWdhdGVzIHRvIHtAbGluayAjY2hhbmdlTm90aWZpZXJ9IGFuZCB0byB7QGxpbmsgI3BhcmVudEFkYXB0ZXJGYWN0b3J5fS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyB2b2lkIGZpcmVOb3RpZnlDaGFuZ2VkKE5vdGlmaWNhdGlvbiBub3RpZmljYXRpb24pIHsNCisJCWNoYW5nZU5vdGlmaWVyLmZpcmVOb3RpZnlDaGFuZ2VkKG5vdGlmaWNhdGlvbik7DQorDQorCQlpZiAocGFyZW50QWRhcHRlckZhY3RvcnkgIT0gbnVsbCkgew0KKwkJCXBhcmVudEFkYXB0ZXJGYWN0b3J5LmZpcmVOb3RpZnlDaGFuZ2VkKG5vdGlmaWNhdGlvbik7DQorCQl9DQorCX0NCisNCisJLyoqDQorCSAqIFRoaXMgZGlzcG9zZXMgYWxsIG9mIHRoZSBpdGVtIHByb3ZpZGVycyBjcmVhdGVkIGJ5IHRoaXMgZmFjdG9yeS4gDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgdm9pZCBkaXNwb3NlKCkgew0KKwkJaWYgKHZhbHVlVHlwZUl0ZW1Qcm92aWRlciAhPSBudWxsKSB2YWx1ZVR5cGVJdGVtUHJvdmlkZXIuZGlzcG9zZSgpOw0KKwkJaWYgKGRpc3RyaWJ1dGVkUHJvcGVydHlJdGVtUHJvdmlkZXIgIT0gbnVsbCkgZGlzdHJpYnV0ZWRQcm9wZXJ0eUl0ZW1Qcm92aWRlci5kaXNwb3NlKCk7DQorCQlpZiAoY29ubmVjdG9yUHJvcGVydHlJdGVtUHJvdmlkZXIgIT0gbnVsbCkgY29ubmVjdG9yUHJvcGVydHlJdGVtUHJvdmlkZXIuZGlzcG9zZSgpOw0KKwkJaWYgKHBhcnRpY2lwYW50UHJvcGVydHlJdGVtUHJvdmlkZXIgIT0gbnVsbCkgcGFydGljaXBhbnRQcm9wZXJ0eUl0ZW1Qcm92aWRlci5kaXNwb3NlKCk7DQorCQlpZiAoYmluZGluZ0Nvbm5lY3Rvckl0ZW1Qcm92aWRlciAhPSBudWxsKSBiaW5kaW5nQ29ubmVjdG9ySXRlbVByb3ZpZGVyLmRpc3Bvc2UoKTsNCisJCWlmIChibG9ja0l0ZW1Qcm92aWRlciAhPSBudWxsKSBibG9ja0l0ZW1Qcm92aWRlci5kaXNwb3NlKCk7DQorCQlpZiAocHJvcGVydHlTcGVjaWZpY1R5cGVJdGVtUHJvdmlkZXIgIT0gbnVsbCkgcHJvcGVydHlTcGVjaWZpY1R5cGVJdGVtUHJvdmlkZXIuZGlzcG9zZSgpOw0KKwkJaWYgKG5lc3RlZENvbm5lY3RvckVuZEl0ZW1Qcm92aWRlciAhPSBudWxsKSBuZXN0ZWRDb25uZWN0b3JFbmRJdGVtUHJvdmlkZXIuZGlzcG9zZSgpOw0KKwkJaWYgKGVuZFBhdGhNdWx0aXBsaWNpdHlJdGVtUHJvdmlkZXIgIT0gbnVsbCkgZW5kUGF0aE11bHRpcGxpY2l0eUl0ZW1Qcm92aWRlci5kaXNwb3NlKCk7DQorCQlpZiAoYm91bmRSZWZlcmVuY2VJdGVtUHJvdmlkZXIgIT0gbnVsbCkgYm91bmRSZWZlcmVuY2VJdGVtUHJvdmlkZXIuZGlzcG9zZSgpOw0KKwkJaWYgKGFkanVuY3RQcm9wZXJ0eUl0ZW1Qcm92aWRlciAhPSBudWxsKSBhZGp1bmN0UHJvcGVydHlJdGVtUHJvdmlkZXIuZGlzcG9zZSgpOw0KKwkJaWYgKGNsYXNzaWZpZXJCZWhhdmlvclByb3BlcnR5SXRlbVByb3ZpZGVyICE9IG51bGwpIGNsYXNzaWZpZXJCZWhhdmlvclByb3BlcnR5SXRlbVByb3ZpZGVyLmRpc3Bvc2UoKTsNCisJfQ0KKw0KK30NCmRpZmYgLS1naXQgYS9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5lZGl0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L2Jsb2Nrcy9wcm92aWRlci9Cb3VuZFJlZmVyZW5jZUl0ZW1Qcm92aWRlci5qYXZhIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZWRpdC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9ibG9ja3MvcHJvdmlkZXIvQm91bmRSZWZlcmVuY2VJdGVtUHJvdmlkZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MDg2ODVhCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZWRpdC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9ibG9ja3MvcHJvdmlkZXIvQm91bmRSZWZlcmVuY2VJdGVtUHJvdmlkZXIuamF2YQpAQCAtMCwwICsxLDE1MSBAQAorLyoqDQorICogQ29weXJpZ2h0IChjKSAyMDE1IENFQSBMSVNULg0KKyAqIA0KKyAqICBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQorICogIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KKyAqICB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KKyAqICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqLw0KK3BhY2thZ2Ugb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmJsb2Nrcy5wcm92aWRlcjsNCisNCisNCitpbXBvcnQgamF2YS51dGlsLkNvbGxlY3Rpb247DQoraW1wb3J0IGphdmEudXRpbC5MaXN0Ow0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY29tbW9uLm5vdGlmeS5BZGFwdGVyRmFjdG9yeTsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi5ub3RpZnkuTm90aWZpY2F0aW9uOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWRpdC5wcm92aWRlci5Db21wb3NlYWJsZUFkYXB0ZXJGYWN0b3J5Ow0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWRpdC5wcm92aWRlci5JSXRlbVByb3BlcnR5RGVzY3JpcHRvcjsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmJsb2Nrcy5CbG9ja3NQYWNrYWdlOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYmxvY2tzLkJvdW5kUmVmZXJlbmNlOw0KKw0KKy8qKg0KKyAqIFRoaXMgaXMgdGhlIGl0ZW0gcHJvdmlkZXIgYWRhcHRlciBmb3IgYSB7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmJsb2Nrcy5Cb3VuZFJlZmVyZW5jZX0gb2JqZWN0Lg0KKyAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorICogQGdlbmVyYXRlZA0KKyAqLw0KK3B1YmxpYyBjbGFzcyBCb3VuZFJlZmVyZW5jZUl0ZW1Qcm92aWRlciBleHRlbmRzIEVuZFBhdGhNdWx0aXBsaWNpdHlJdGVtUHJvdmlkZXIgew0KKwkvKioNCisJICogVGhpcyBjb25zdHJ1Y3RzIGFuIGluc3RhbmNlIGZyb20gYSBmYWN0b3J5IGFuZCBhIG5vdGlmaWVyLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIEJvdW5kUmVmZXJlbmNlSXRlbVByb3ZpZGVyKEFkYXB0ZXJGYWN0b3J5IGFkYXB0ZXJGYWN0b3J5KSB7DQorCQlzdXBlcihhZGFwdGVyRmFjdG9yeSk7DQorCX0NCisNCisJLyoqDQorCSAqIFRoaXMgcmV0dXJucyB0aGUgcHJvcGVydHkgZGVzY3JpcHRvcnMgZm9yIHRoZSBhZGFwdGVkIGNsYXNzLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXB1YmxpYyBMaXN0PElJdGVtUHJvcGVydHlEZXNjcmlwdG9yPiBnZXRQcm9wZXJ0eURlc2NyaXB0b3JzKE9iamVjdCBvYmplY3QpIHsNCisJCWlmIChpdGVtUHJvcGVydHlEZXNjcmlwdG9ycyA9PSBudWxsKSB7DQorCQkJc3VwZXIuZ2V0UHJvcGVydHlEZXNjcmlwdG9ycyhvYmplY3QpOw0KKw0KKwkJCWFkZEJvdW5kRW5kUHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCk7DQorCQkJYWRkQmluZGluZ1BhdGhQcm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0KTsNCisJCX0NCisJCXJldHVybiBpdGVtUHJvcGVydHlEZXNjcmlwdG9yczsNCisJfQ0KKw0KKwkvKioNCisJICogVGhpcyBhZGRzIGEgcHJvcGVydHkgZGVzY3JpcHRvciBmb3IgdGhlIEJvdW5kIEVuZCBmZWF0dXJlLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHJvdGVjdGVkIHZvaWQgYWRkQm91bmRFbmRQcm9wZXJ0eURlc2NyaXB0b3IoT2JqZWN0IG9iamVjdCkgew0KKwkJaXRlbVByb3BlcnR5RGVzY3JpcHRvcnMuYWRkDQorCQkJKGNyZWF0ZUl0ZW1Qcm9wZXJ0eURlc2NyaXB0b3INCisJCQkJKCgoQ29tcG9zZWFibGVBZGFwdGVyRmFjdG9yeSlhZGFwdGVyRmFjdG9yeSkuZ2V0Um9vdEFkYXB0ZXJGYWN0b3J5KCksDQorCQkJCSBnZXRSZXNvdXJjZUxvY2F0b3IoKSwNCisJCQkJIGdldFN0cmluZygiX1VJX0JvdW5kUmVmZXJlbmNlX2JvdW5kRW5kX2ZlYXR1cmUiKSwgLy8kTk9OLU5MUy0xJA0KKwkJCQkgZ2V0U3RyaW5nKCJfVUlfUHJvcGVydHlEZXNjcmlwdG9yX2Rlc2NyaXB0aW9uIiwgIl9VSV9Cb3VuZFJlZmVyZW5jZV9ib3VuZEVuZF9mZWF0dXJlIiwgIl9VSV9Cb3VuZFJlZmVyZW5jZV90eXBlIiksIC8vJE5PTi1OTFMtMSQgLy8kTk9OLU5MUy0yJCAvLyROT04tTkxTLTMkDQorCQkJCSBCbG9ja3NQYWNrYWdlLkxpdGVyYWxzLkJPVU5EX1JFRkVSRU5DRV9fQk9VTkRfRU5ELA0KKwkJCQkgdHJ1ZSwNCisJCQkJIGZhbHNlLA0KKwkJCQkgdHJ1ZSwNCisJCQkJIG51bGwsDQorCQkJCSBudWxsLA0KKwkJCQkgbnVsbCkpOw0KKwl9DQorDQorCS8qKg0KKwkgKiBUaGlzIGFkZHMgYSBwcm9wZXJ0eSBkZXNjcmlwdG9yIGZvciB0aGUgQmluZGluZyBQYXRoIGZlYXR1cmUuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwcm90ZWN0ZWQgdm9pZCBhZGRCaW5kaW5nUGF0aFByb3BlcnR5RGVzY3JpcHRvcihPYmplY3Qgb2JqZWN0KSB7DQorCQlpdGVtUHJvcGVydHlEZXNjcmlwdG9ycy5hZGQNCisJCQkoY3JlYXRlSXRlbVByb3BlcnR5RGVzY3JpcHRvcg0KKwkJCQkoKChDb21wb3NlYWJsZUFkYXB0ZXJGYWN0b3J5KWFkYXB0ZXJGYWN0b3J5KS5nZXRSb290QWRhcHRlckZhY3RvcnkoKSwNCisJCQkJIGdldFJlc291cmNlTG9jYXRvcigpLA0KKwkJCQkgZ2V0U3RyaW5nKCJfVUlfQm91bmRSZWZlcmVuY2VfYmluZGluZ1BhdGhfZmVhdHVyZSIpLCAvLyROT04tTkxTLTEkDQorCQkJCSBnZXRTdHJpbmcoIl9VSV9Qcm9wZXJ0eURlc2NyaXB0b3JfZGVzY3JpcHRpb24iLCAiX1VJX0JvdW5kUmVmZXJlbmNlX2JpbmRpbmdQYXRoX2ZlYXR1cmUiLCAiX1VJX0JvdW5kUmVmZXJlbmNlX3R5cGUiKSwgLy8kTk9OLU5MUy0xJCAvLyROT04tTkxTLTIkIC8vJE5PTi1OTFMtMyQNCisJCQkJIEJsb2Nrc1BhY2thZ2UuTGl0ZXJhbHMuQk9VTkRfUkVGRVJFTkNFX19CSU5ESU5HX1BBVEgsDQorCQkJCSB0cnVlLA0KKwkJCQkgZmFsc2UsDQorCQkJCSB0cnVlLA0KKwkJCQkgbnVsbCwNCisJCQkJIG51bGwsDQorCQkJCSBudWxsKSk7DQorCX0NCisNCisJLyoqDQorCSAqIFRoaXMgcmV0dXJucyBCb3VuZFJlZmVyZW5jZS5naWYuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIE9iamVjdCBnZXRJbWFnZShPYmplY3Qgb2JqZWN0KSB7DQorCQlyZXR1cm4gb3ZlcmxheUltYWdlKG9iamVjdCwgZ2V0UmVzb3VyY2VMb2NhdG9yKCkuZ2V0SW1hZ2UoImZ1bGwvb2JqMTYvQm91bmRSZWZlcmVuY2UiKSk7IC8vJE5PTi1OTFMtMSQNCisJfQ0KKw0KKwkvKioNCisJICogVGhpcyByZXR1cm5zIHRoZSBsYWJlbCB0ZXh0IGZvciB0aGUgYWRhcHRlZCBjbGFzcy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgU3RyaW5nIGdldFRleHQoT2JqZWN0IG9iamVjdCkgew0KKwkJQm91bmRSZWZlcmVuY2UgYm91bmRSZWZlcmVuY2UgPSAoQm91bmRSZWZlcmVuY2Upb2JqZWN0Ow0KKwkJcmV0dXJuIGdldFN0cmluZygiX1VJX0JvdW5kUmVmZXJlbmNlX3R5cGUiKSArICIgIiArIGJvdW5kUmVmZXJlbmNlLmdldExvd2VyKCk7IC8vJE5PTi1OTFMtMSQgLy8kTk9OLU5MUy0yJA0KKwl9DQorCQ0KKw0KKwkvKioNCisJICogVGhpcyBoYW5kbGVzIG1vZGVsIG5vdGlmaWNhdGlvbnMgYnkgY2FsbGluZyB7QGxpbmsgI3VwZGF0ZUNoaWxkcmVufSB0byB1cGRhdGUgYW55IGNhY2hlZA0KKwkgKiBjaGlsZHJlbiBhbmQgYnkgY3JlYXRpbmcgYSB2aWV3ZXIgbm90aWZpY2F0aW9uLCB3aGljaCBpdCBwYXNzZXMgdG8ge0BsaW5rICNmaXJlTm90aWZ5Q2hhbmdlZH0uDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIHZvaWQgbm90aWZ5Q2hhbmdlZChOb3RpZmljYXRpb24gbm90aWZpY2F0aW9uKSB7DQorCQl1cGRhdGVDaGlsZHJlbihub3RpZmljYXRpb24pOw0KKwkJc3VwZXIubm90aWZ5Q2hhbmdlZChub3RpZmljYXRpb24pOw0KKwl9DQorDQorCS8qKg0KKwkgKiBUaGlzIGFkZHMge0BsaW5rIG9yZy5lY2xpcHNlLmVtZi5lZGl0LmNvbW1hbmQuQ29tbWFuZFBhcmFtZXRlcn1zIGRlc2NyaWJpbmcgdGhlIGNoaWxkcmVuDQorCSAqIHRoYXQgY2FuIGJlIGNyZWF0ZWQgdW5kZXIgdGhpcyBvYmplY3QuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHJvdGVjdGVkIHZvaWQgY29sbGVjdE5ld0NoaWxkRGVzY3JpcHRvcnMoQ29sbGVjdGlvbjxPYmplY3Q+IG5ld0NoaWxkRGVzY3JpcHRvcnMsIE9iamVjdCBvYmplY3QpIHsNCisJCXN1cGVyLmNvbGxlY3ROZXdDaGlsZERlc2NyaXB0b3JzKG5ld0NoaWxkRGVzY3JpcHRvcnMsIG9iamVjdCk7DQorCX0NCisNCit9DQpkaWZmIC0tZ2l0IGEvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZWRpdC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9ibG9ja3MvcHJvdmlkZXIvQ2xhc3NpZmllckJlaGF2aW9yUHJvcGVydHlJdGVtUHJvdmlkZXIuamF2YSBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmVkaXQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvYmxvY2tzL3Byb3ZpZGVyL0NsYXNzaWZpZXJCZWhhdmlvclByb3BlcnR5SXRlbVByb3ZpZGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2ZiNjgxNQotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmVkaXQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvYmxvY2tzL3Byb3ZpZGVyL0NsYXNzaWZpZXJCZWhhdmlvclByb3BlcnR5SXRlbVByb3ZpZGVyLmphdmEKQEAgLTAsMCArMSwxNTMgQEAKKy8qKg0KKyAqIENvcHlyaWdodCAoYykgMjAxNSBDRUEgTElTVC4NCisgKiANCisgKiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KKyAqICBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCisgKiAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCisgKiAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgKi8NCitwYWNrYWdlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5ibG9ja3MucHJvdmlkZXI7DQorDQorDQoraW1wb3J0IGphdmEudXRpbC5Db2xsZWN0aW9uOw0KK2ltcG9ydCBqYXZhLnV0aWwuTGlzdDsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi5ub3RpZnkuQWRhcHRlckZhY3Rvcnk7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jb21tb24ubm90aWZ5Lk5vdGlmaWNhdGlvbjsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi51dGlsLlJlc291cmNlTG9jYXRvcjsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVkaXQucHJvdmlkZXIuQ29tcG9zZWFibGVBZGFwdGVyRmFjdG9yeTsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVkaXQucHJvdmlkZXIuSUVkaXRpbmdEb21haW5JdGVtUHJvdmlkZXI7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lZGl0LnByb3ZpZGVyLklJdGVtTGFiZWxQcm92aWRlcjsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVkaXQucHJvdmlkZXIuSUl0ZW1Qcm9wZXJ0eURlc2NyaXB0b3I7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lZGl0LnByb3ZpZGVyLklJdGVtUHJvcGVydHlTb3VyY2U7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lZGl0LnByb3ZpZGVyLklTdHJ1Y3R1cmVkSXRlbUNvbnRlbnRQcm92aWRlcjsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVkaXQucHJvdmlkZXIuSVRyZWVJdGVtQ29udGVudFByb3ZpZGVyOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWRpdC5wcm92aWRlci5JdGVtUHJvdmlkZXJBZGFwdGVyOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYmxvY2tzLkJsb2Nrc1BhY2thZ2U7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5wcm92aWRlci5TeXNtbEVkaXRQbHVnaW47DQorDQorLyoqDQorICogVGhpcyBpcyB0aGUgaXRlbSBwcm92aWRlciBhZGFwdGVyIGZvciBhIHtAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYmxvY2tzLkNsYXNzaWZpZXJCZWhhdmlvclByb3BlcnR5fSBvYmplY3QuDQorICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisgKiBAZ2VuZXJhdGVkDQorICovDQorcHVibGljIGNsYXNzIENsYXNzaWZpZXJCZWhhdmlvclByb3BlcnR5SXRlbVByb3ZpZGVyIA0KKwlleHRlbmRzIEl0ZW1Qcm92aWRlckFkYXB0ZXINCisJaW1wbGVtZW50cw0KKwkJSUVkaXRpbmdEb21haW5JdGVtUHJvdmlkZXIsDQorCQlJU3RydWN0dXJlZEl0ZW1Db250ZW50UHJvdmlkZXIsDQorCQlJVHJlZUl0ZW1Db250ZW50UHJvdmlkZXIsDQorCQlJSXRlbUxhYmVsUHJvdmlkZXIsDQorCQlJSXRlbVByb3BlcnR5U291cmNlIHsNCisJLyoqDQorCSAqIFRoaXMgY29uc3RydWN0cyBhbiBpbnN0YW5jZSBmcm9tIGEgZmFjdG9yeSBhbmQgYSBub3RpZmllci4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBDbGFzc2lmaWVyQmVoYXZpb3JQcm9wZXJ0eUl0ZW1Qcm92aWRlcihBZGFwdGVyRmFjdG9yeSBhZGFwdGVyRmFjdG9yeSkgew0KKwkJc3VwZXIoYWRhcHRlckZhY3RvcnkpOw0KKwl9DQorDQorCS8qKg0KKwkgKiBUaGlzIHJldHVybnMgdGhlIHByb3BlcnR5IGRlc2NyaXB0b3JzIGZvciB0aGUgYWRhcHRlZCBjbGFzcy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgTGlzdDxJSXRlbVByb3BlcnR5RGVzY3JpcHRvcj4gZ2V0UHJvcGVydHlEZXNjcmlwdG9ycyhPYmplY3Qgb2JqZWN0KSB7DQorCQlpZiAoaXRlbVByb3BlcnR5RGVzY3JpcHRvcnMgPT0gbnVsbCkgew0KKwkJCXN1cGVyLmdldFByb3BlcnR5RGVzY3JpcHRvcnMob2JqZWN0KTsNCisNCisJCQlhZGRCYXNlX1Byb3BlcnR5UHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCk7DQorCQl9DQorCQlyZXR1cm4gaXRlbVByb3BlcnR5RGVzY3JpcHRvcnM7DQorCX0NCisNCisJLyoqDQorCSAqIFRoaXMgYWRkcyBhIHByb3BlcnR5IGRlc2NyaXB0b3IgZm9yIHRoZSBCYXNlIFByb3BlcnR5IGZlYXR1cmUuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwcm90ZWN0ZWQgdm9pZCBhZGRCYXNlX1Byb3BlcnR5UHJvcGVydHlEZXNjcmlwdG9yKE9iamVjdCBvYmplY3QpIHsNCisJCWl0ZW1Qcm9wZXJ0eURlc2NyaXB0b3JzLmFkZA0KKwkJCShjcmVhdGVJdGVtUHJvcGVydHlEZXNjcmlwdG9yDQorCQkJCSgoKENvbXBvc2VhYmxlQWRhcHRlckZhY3RvcnkpYWRhcHRlckZhY3RvcnkpLmdldFJvb3RBZGFwdGVyRmFjdG9yeSgpLA0KKwkJCQkgZ2V0UmVzb3VyY2VMb2NhdG9yKCksDQorCQkJCSBnZXRTdHJpbmcoIl9VSV9DbGFzc2lmaWVyQmVoYXZpb3JQcm9wZXJ0eV9iYXNlX1Byb3BlcnR5X2ZlYXR1cmUiKSwgLy8kTk9OLU5MUy0xJA0KKwkJCQkgZ2V0U3RyaW5nKCJfVUlfUHJvcGVydHlEZXNjcmlwdG9yX2Rlc2NyaXB0aW9uIiwgIl9VSV9DbGFzc2lmaWVyQmVoYXZpb3JQcm9wZXJ0eV9iYXNlX1Byb3BlcnR5X2ZlYXR1cmUiLCAiX1VJX0NsYXNzaWZpZXJCZWhhdmlvclByb3BlcnR5X3R5cGUiKSwgLy8kTk9OLU5MUy0xJCAvLyROT04tTkxTLTIkIC8vJE5PTi1OTFMtMyQNCisJCQkJIEJsb2Nrc1BhY2thZ2UuTGl0ZXJhbHMuQ0xBU1NJRklFUl9CRUhBVklPUl9QUk9QRVJUWV9fQkFTRV9QUk9QRVJUWSwNCisJCQkJIHRydWUsDQorCQkJCSBmYWxzZSwNCisJCQkJIHRydWUsDQorCQkJCSBudWxsLA0KKwkJCQkgbnVsbCwNCisJCQkJIG51bGwpKTsNCisJfQ0KKw0KKwkvKioNCisJICogVGhpcyByZXR1cm5zIENsYXNzaWZpZXJCZWhhdmlvclByb3BlcnR5LmdpZi4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgT2JqZWN0IGdldEltYWdlKE9iamVjdCBvYmplY3QpIHsNCisJCXJldHVybiBvdmVybGF5SW1hZ2Uob2JqZWN0LCBnZXRSZXNvdXJjZUxvY2F0b3IoKS5nZXRJbWFnZSgiZnVsbC9vYmoxNi9DbGFzc2lmaWVyQmVoYXZpb3JQcm9wZXJ0eSIpKTsgLy8kTk9OLU5MUy0xJA0KKwl9DQorDQorCS8qKg0KKwkgKiBUaGlzIHJldHVybnMgdGhlIGxhYmVsIHRleHQgZm9yIHRoZSBhZGFwdGVkIGNsYXNzLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXB1YmxpYyBTdHJpbmcgZ2V0VGV4dChPYmplY3Qgb2JqZWN0KSB7DQorCQlyZXR1cm4gZ2V0U3RyaW5nKCJfVUlfQ2xhc3NpZmllckJlaGF2aW9yUHJvcGVydHlfdHlwZSIpOyAvLyROT04tTkxTLTEkDQorCX0NCisJDQorDQorCS8qKg0KKwkgKiBUaGlzIGhhbmRsZXMgbW9kZWwgbm90aWZpY2F0aW9ucyBieSBjYWxsaW5nIHtAbGluayAjdXBkYXRlQ2hpbGRyZW59IHRvIHVwZGF0ZSBhbnkgY2FjaGVkDQorCSAqIGNoaWxkcmVuIGFuZCBieSBjcmVhdGluZyBhIHZpZXdlciBub3RpZmljYXRpb24sIHdoaWNoIGl0IHBhc3NlcyB0byB7QGxpbmsgI2ZpcmVOb3RpZnlDaGFuZ2VkfS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgdm9pZCBub3RpZnlDaGFuZ2VkKE5vdGlmaWNhdGlvbiBub3RpZmljYXRpb24pIHsNCisJCXVwZGF0ZUNoaWxkcmVuKG5vdGlmaWNhdGlvbik7DQorCQlzdXBlci5ub3RpZnlDaGFuZ2VkKG5vdGlmaWNhdGlvbik7DQorCX0NCisNCisJLyoqDQorCSAqIFRoaXMgYWRkcyB7QGxpbmsgb3JnLmVjbGlwc2UuZW1mLmVkaXQuY29tbWFuZC5Db21tYW5kUGFyYW1ldGVyfXMgZGVzY3JpYmluZyB0aGUgY2hpbGRyZW4NCisJICogdGhhdCBjYW4gYmUgY3JlYXRlZCB1bmRlciB0aGlzIG9iamVjdC4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwcm90ZWN0ZWQgdm9pZCBjb2xsZWN0TmV3Q2hpbGREZXNjcmlwdG9ycyhDb2xsZWN0aW9uPE9iamVjdD4gbmV3Q2hpbGREZXNjcmlwdG9ycywgT2JqZWN0IG9iamVjdCkgew0KKwkJc3VwZXIuY29sbGVjdE5ld0NoaWxkRGVzY3JpcHRvcnMobmV3Q2hpbGREZXNjcmlwdG9ycywgb2JqZWN0KTsNCisJfQ0KKw0KKwkvKioNCisJICogUmV0dXJuIHRoZSByZXNvdXJjZSBsb2NhdG9yIGZvciB0aGlzIGl0ZW0gcHJvdmlkZXIncyByZXNvdXJjZXMuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIFJlc291cmNlTG9jYXRvciBnZXRSZXNvdXJjZUxvY2F0b3IoKSB7DQorCQlyZXR1cm4gU3lzbWxFZGl0UGx1Z2luLklOU1RBTkNFOw0KKwl9DQorDQorfQ0KZGlmZiAtLWdpdCBhL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmVkaXQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvYmxvY2tzL3Byb3ZpZGVyL0Nvbm5lY3RvclByb3BlcnR5SXRlbVByb3ZpZGVyLmphdmEgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5lZGl0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L2Jsb2Nrcy9wcm92aWRlci9Db25uZWN0b3JQcm9wZXJ0eUl0ZW1Qcm92aWRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJmMGY0OWQKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5lZGl0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L2Jsb2Nrcy9wcm92aWRlci9Db25uZWN0b3JQcm9wZXJ0eUl0ZW1Qcm92aWRlci5qYXZhCkBAIC0wLDAgKzEsMTc2IEBACisvKioNCisgKiBDb3B5cmlnaHQgKGMpIDIwMTUgQ0VBIExJU1QuDQorICogDQorICogIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCisgKiAgYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQorICogIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQorICogIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICovDQorcGFja2FnZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYmxvY2tzLnByb3ZpZGVyOw0KKw0KKw0KK2ltcG9ydCBqYXZhLnV0aWwuQ29sbGVjdGlvbjsNCitpbXBvcnQgamF2YS51dGlsLkxpc3Q7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jb21tb24ubm90aWZ5LkFkYXB0ZXJGYWN0b3J5Ow0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY29tbW9uLm5vdGlmeS5Ob3RpZmljYXRpb247DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jb21tb24udXRpbC5SZXNvdXJjZUxvY2F0b3I7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lZGl0LnByb3ZpZGVyLkNvbXBvc2VhYmxlQWRhcHRlckZhY3Rvcnk7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lZGl0LnByb3ZpZGVyLklFZGl0aW5nRG9tYWluSXRlbVByb3ZpZGVyOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWRpdC5wcm92aWRlci5JSXRlbUxhYmVsUHJvdmlkZXI7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lZGl0LnByb3ZpZGVyLklJdGVtUHJvcGVydHlEZXNjcmlwdG9yOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWRpdC5wcm92aWRlci5JSXRlbVByb3BlcnR5U291cmNlOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWRpdC5wcm92aWRlci5JU3RydWN0dXJlZEl0ZW1Db250ZW50UHJvdmlkZXI7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lZGl0LnByb3ZpZGVyLklUcmVlSXRlbUNvbnRlbnRQcm92aWRlcjsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVkaXQucHJvdmlkZXIuSXRlbVByb3ZpZGVyQWRhcHRlcjsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmJsb2Nrcy5CbG9ja3NQYWNrYWdlOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucHJvdmlkZXIuU3lzbWxFZGl0UGx1Z2luOw0KKw0KKy8qKg0KKyAqIFRoaXMgaXMgdGhlIGl0ZW0gcHJvdmlkZXIgYWRhcHRlciBmb3IgYSB7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmJsb2Nrcy5Db25uZWN0b3JQcm9wZXJ0eX0gb2JqZWN0Lg0KKyAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorICogQGdlbmVyYXRlZA0KKyAqLw0KK3B1YmxpYyBjbGFzcyBDb25uZWN0b3JQcm9wZXJ0eUl0ZW1Qcm92aWRlciANCisJZXh0ZW5kcyBJdGVtUHJvdmlkZXJBZGFwdGVyDQorCWltcGxlbWVudHMNCisJCUlFZGl0aW5nRG9tYWluSXRlbVByb3ZpZGVyLA0KKwkJSVN0cnVjdHVyZWRJdGVtQ29udGVudFByb3ZpZGVyLA0KKwkJSVRyZWVJdGVtQ29udGVudFByb3ZpZGVyLA0KKwkJSUl0ZW1MYWJlbFByb3ZpZGVyLA0KKwkJSUl0ZW1Qcm9wZXJ0eVNvdXJjZSB7DQorCS8qKg0KKwkgKiBUaGlzIGNvbnN0cnVjdHMgYW4gaW5zdGFuY2UgZnJvbSBhIGZhY3RvcnkgYW5kIGEgbm90aWZpZXIuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgQ29ubmVjdG9yUHJvcGVydHlJdGVtUHJvdmlkZXIoQWRhcHRlckZhY3RvcnkgYWRhcHRlckZhY3RvcnkpIHsNCisJCXN1cGVyKGFkYXB0ZXJGYWN0b3J5KTsNCisJfQ0KKw0KKwkvKioNCisJICogVGhpcyByZXR1cm5zIHRoZSBwcm9wZXJ0eSBkZXNjcmlwdG9ycyBmb3IgdGhlIGFkYXB0ZWQgY2xhc3MuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIExpc3Q8SUl0ZW1Qcm9wZXJ0eURlc2NyaXB0b3I+IGdldFByb3BlcnR5RGVzY3JpcHRvcnMoT2JqZWN0IG9iamVjdCkgew0KKwkJaWYgKGl0ZW1Qcm9wZXJ0eURlc2NyaXB0b3JzID09IG51bGwpIHsNCisJCQlzdXBlci5nZXRQcm9wZXJ0eURlc2NyaXB0b3JzKG9iamVjdCk7DQorDQorCQkJYWRkQmFzZV9Qcm9wZXJ0eVByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QpOw0KKwkJCWFkZENvbm5lY3RvclByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QpOw0KKwkJfQ0KKwkJcmV0dXJuIGl0ZW1Qcm9wZXJ0eURlc2NyaXB0b3JzOw0KKwl9DQorDQorCS8qKg0KKwkgKiBUaGlzIGFkZHMgYSBwcm9wZXJ0eSBkZXNjcmlwdG9yIGZvciB0aGUgQmFzZSBQcm9wZXJ0eSBmZWF0dXJlLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHJvdGVjdGVkIHZvaWQgYWRkQmFzZV9Qcm9wZXJ0eVByb3BlcnR5RGVzY3JpcHRvcihPYmplY3Qgb2JqZWN0KSB7DQorCQlpdGVtUHJvcGVydHlEZXNjcmlwdG9ycy5hZGQNCisJCQkoY3JlYXRlSXRlbVByb3BlcnR5RGVzY3JpcHRvcg0KKwkJCQkoKChDb21wb3NlYWJsZUFkYXB0ZXJGYWN0b3J5KWFkYXB0ZXJGYWN0b3J5KS5nZXRSb290QWRhcHRlckZhY3RvcnkoKSwNCisJCQkJIGdldFJlc291cmNlTG9jYXRvcigpLA0KKwkJCQkgZ2V0U3RyaW5nKCJfVUlfQ29ubmVjdG9yUHJvcGVydHlfYmFzZV9Qcm9wZXJ0eV9mZWF0dXJlIiksIC8vJE5PTi1OTFMtMSQNCisJCQkJIGdldFN0cmluZygiX1VJX1Byb3BlcnR5RGVzY3JpcHRvcl9kZXNjcmlwdGlvbiIsICJfVUlfQ29ubmVjdG9yUHJvcGVydHlfYmFzZV9Qcm9wZXJ0eV9mZWF0dXJlIiwgIl9VSV9Db25uZWN0b3JQcm9wZXJ0eV90eXBlIiksIC8vJE5PTi1OTFMtMSQgLy8kTk9OLU5MUy0yJCAvLyROT04tTkxTLTMkDQorCQkJCSBCbG9ja3NQYWNrYWdlLkxpdGVyYWxzLkNPTk5FQ1RPUl9QUk9QRVJUWV9fQkFTRV9QUk9QRVJUWSwNCisJCQkJIHRydWUsDQorCQkJCSBmYWxzZSwNCisJCQkJIHRydWUsDQorCQkJCSBudWxsLA0KKwkJCQkgbnVsbCwNCisJCQkJIG51bGwpKTsNCisJfQ0KKw0KKwkvKioNCisJICogVGhpcyBhZGRzIGEgcHJvcGVydHkgZGVzY3JpcHRvciBmb3IgdGhlIENvbm5lY3RvciBmZWF0dXJlLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHJvdGVjdGVkIHZvaWQgYWRkQ29ubmVjdG9yUHJvcGVydHlEZXNjcmlwdG9yKE9iamVjdCBvYmplY3QpIHsNCisJCWl0ZW1Qcm9wZXJ0eURlc2NyaXB0b3JzLmFkZA0KKwkJCShjcmVhdGVJdGVtUHJvcGVydHlEZXNjcmlwdG9yDQorCQkJCSgoKENvbXBvc2VhYmxlQWRhcHRlckZhY3RvcnkpYWRhcHRlckZhY3RvcnkpLmdldFJvb3RBZGFwdGVyRmFjdG9yeSgpLA0KKwkJCQkgZ2V0UmVzb3VyY2VMb2NhdG9yKCksDQorCQkJCSBnZXRTdHJpbmcoIl9VSV9Db25uZWN0b3JQcm9wZXJ0eV9jb25uZWN0b3JfZmVhdHVyZSIpLCAvLyROT04tTkxTLTEkDQorCQkJCSBnZXRTdHJpbmcoIl9VSV9Qcm9wZXJ0eURlc2NyaXB0b3JfZGVzY3JpcHRpb24iLCAiX1VJX0Nvbm5lY3RvclByb3BlcnR5X2Nvbm5lY3Rvcl9mZWF0dXJlIiwgIl9VSV9Db25uZWN0b3JQcm9wZXJ0eV90eXBlIiksIC8vJE5PTi1OTFMtMSQgLy8kTk9OLU5MUy0yJCAvLyROT04tTkxTLTMkDQorCQkJCSBCbG9ja3NQYWNrYWdlLkxpdGVyYWxzLkNPTk5FQ1RPUl9QUk9QRVJUWV9fQ09OTkVDVE9SLA0KKwkJCQkgdHJ1ZSwNCisJCQkJIGZhbHNlLA0KKwkJCQkgdHJ1ZSwNCisJCQkJIG51bGwsDQorCQkJCSBudWxsLA0KKwkJCQkgbnVsbCkpOw0KKwl9DQorDQorCS8qKg0KKwkgKiBUaGlzIHJldHVybnMgQ29ubmVjdG9yUHJvcGVydHkuZ2lmLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXB1YmxpYyBPYmplY3QgZ2V0SW1hZ2UoT2JqZWN0IG9iamVjdCkgew0KKwkJcmV0dXJuIG92ZXJsYXlJbWFnZShvYmplY3QsIGdldFJlc291cmNlTG9jYXRvcigpLmdldEltYWdlKCJmdWxsL29iajE2L0Nvbm5lY3RvclByb3BlcnR5IikpOyAvLyROT04tTkxTLTEkDQorCX0NCisNCisJLyoqDQorCSAqIFRoaXMgcmV0dXJucyB0aGUgbGFiZWwgdGV4dCBmb3IgdGhlIGFkYXB0ZWQgY2xhc3MuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIFN0cmluZyBnZXRUZXh0KE9iamVjdCBvYmplY3QpIHsNCisJCXJldHVybiBnZXRTdHJpbmcoIl9VSV9Db25uZWN0b3JQcm9wZXJ0eV90eXBlIik7IC8vJE5PTi1OTFMtMSQNCisJfQ0KKwkNCisNCisJLyoqDQorCSAqIFRoaXMgaGFuZGxlcyBtb2RlbCBub3RpZmljYXRpb25zIGJ5IGNhbGxpbmcge0BsaW5rICN1cGRhdGVDaGlsZHJlbn0gdG8gdXBkYXRlIGFueSBjYWNoZWQNCisJICogY2hpbGRyZW4gYW5kIGJ5IGNyZWF0aW5nIGEgdmlld2VyIG5vdGlmaWNhdGlvbiwgd2hpY2ggaXQgcGFzc2VzIHRvIHtAbGluayAjZmlyZU5vdGlmeUNoYW5nZWR9Lg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXB1YmxpYyB2b2lkIG5vdGlmeUNoYW5nZWQoTm90aWZpY2F0aW9uIG5vdGlmaWNhdGlvbikgew0KKwkJdXBkYXRlQ2hpbGRyZW4obm90aWZpY2F0aW9uKTsNCisJCXN1cGVyLm5vdGlmeUNoYW5nZWQobm90aWZpY2F0aW9uKTsNCisJfQ0KKw0KKwkvKioNCisJICogVGhpcyBhZGRzIHtAbGluayBvcmcuZWNsaXBzZS5lbWYuZWRpdC5jb21tYW5kLkNvbW1hbmRQYXJhbWV0ZXJ9cyBkZXNjcmliaW5nIHRoZSBjaGlsZHJlbg0KKwkgKiB0aGF0IGNhbiBiZSBjcmVhdGVkIHVuZGVyIHRoaXMgb2JqZWN0Lg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXByb3RlY3RlZCB2b2lkIGNvbGxlY3ROZXdDaGlsZERlc2NyaXB0b3JzKENvbGxlY3Rpb248T2JqZWN0PiBuZXdDaGlsZERlc2NyaXB0b3JzLCBPYmplY3Qgb2JqZWN0KSB7DQorCQlzdXBlci5jb2xsZWN0TmV3Q2hpbGREZXNjcmlwdG9ycyhuZXdDaGlsZERlc2NyaXB0b3JzLCBvYmplY3QpOw0KKwl9DQorDQorCS8qKg0KKwkgKiBSZXR1cm4gdGhlIHJlc291cmNlIGxvY2F0b3IgZm9yIHRoaXMgaXRlbSBwcm92aWRlcidzIHJlc291cmNlcy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgUmVzb3VyY2VMb2NhdG9yIGdldFJlc291cmNlTG9jYXRvcigpIHsNCisJCXJldHVybiBTeXNtbEVkaXRQbHVnaW4uSU5TVEFOQ0U7DQorCX0NCisNCit9DQpkaWZmIC0tZ2l0IGEvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZWRpdC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9ibG9ja3MvcHJvdmlkZXIvRGlyZWN0ZWRSZWxhdGlvbnNoaXBQcm9wZXJ0eVBhdGhJdGVtUHJvdmlkZXIuamF2YSBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmVkaXQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvYmxvY2tzL3Byb3ZpZGVyL0RpcmVjdGVkUmVsYXRpb25zaGlwUHJvcGVydHlQYXRoSXRlbVByb3ZpZGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzJiOTdiMAotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmVkaXQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvYmxvY2tzL3Byb3ZpZGVyL0RpcmVjdGVkUmVsYXRpb25zaGlwUHJvcGVydHlQYXRoSXRlbVByb3ZpZGVyLmphdmEKQEAgLTAsMCArMSwyMzQgQEAKKy8qKg0KKyAqIENvcHlyaWdodCAoYykgMjAxNSBDRUEgTElTVC4NCisgKiANCisgKiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KKyAqICBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCisgKiAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCisgKiAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgKi8NCitwYWNrYWdlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5ibG9ja3MucHJvdmlkZXI7DQorDQorDQoraW1wb3J0IGphdmEudXRpbC5Db2xsZWN0aW9uOw0KK2ltcG9ydCBqYXZhLnV0aWwuTGlzdDsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi5ub3RpZnkuQWRhcHRlckZhY3Rvcnk7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jb21tb24ubm90aWZ5Lk5vdGlmaWNhdGlvbjsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi51dGlsLlJlc291cmNlTG9jYXRvcjsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVkaXQucHJvdmlkZXIuQ29tcG9zZWFibGVBZGFwdGVyRmFjdG9yeTsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVkaXQucHJvdmlkZXIuSUVkaXRpbmdEb21haW5JdGVtUHJvdmlkZXI7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lZGl0LnByb3ZpZGVyLklJdGVtTGFiZWxQcm92aWRlcjsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVkaXQucHJvdmlkZXIuSUl0ZW1Qcm9wZXJ0eURlc2NyaXB0b3I7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lZGl0LnByb3ZpZGVyLklJdGVtUHJvcGVydHlTb3VyY2U7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lZGl0LnByb3ZpZGVyLklTdHJ1Y3R1cmVkSXRlbUNvbnRlbnRQcm92aWRlcjsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVkaXQucHJvdmlkZXIuSVRyZWVJdGVtQ29udGVudFByb3ZpZGVyOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWRpdC5wcm92aWRlci5JdGVtUHJvdmlkZXJBZGFwdGVyOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYmxvY2tzLkJsb2Nrc1BhY2thZ2U7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5wcm92aWRlci5TeXNtbEVkaXRQbHVnaW47DQorDQorLyoqDQorICogVGhpcyBpcyB0aGUgaXRlbSBwcm92aWRlciBhZGFwdGVyIGZvciBhIHtAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYmxvY2tzLkRpcmVjdGVkUmVsYXRpb25zaGlwUHJvcGVydHlQYXRofSBvYmplY3QuDQorICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisgKiBAZ2VuZXJhdGVkDQorICovDQorcHVibGljIGNsYXNzIERpcmVjdGVkUmVsYXRpb25zaGlwUHJvcGVydHlQYXRoSXRlbVByb3ZpZGVyIA0KKwlleHRlbmRzIEl0ZW1Qcm92aWRlckFkYXB0ZXINCisJaW1wbGVtZW50cw0KKwkJSUVkaXRpbmdEb21haW5JdGVtUHJvdmlkZXIsDQorCQlJU3RydWN0dXJlZEl0ZW1Db250ZW50UHJvdmlkZXIsDQorCQlJVHJlZUl0ZW1Db250ZW50UHJvdmlkZXIsDQorCQlJSXRlbUxhYmVsUHJvdmlkZXIsDQorCQlJSXRlbVByb3BlcnR5U291cmNlIHsNCisJLyoqDQorCSAqIFRoaXMgY29uc3RydWN0cyBhbiBpbnN0YW5jZSBmcm9tIGEgZmFjdG9yeSBhbmQgYSBub3RpZmllci4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBEaXJlY3RlZFJlbGF0aW9uc2hpcFByb3BlcnR5UGF0aEl0ZW1Qcm92aWRlcihBZGFwdGVyRmFjdG9yeSBhZGFwdGVyRmFjdG9yeSkgew0KKwkJc3VwZXIoYWRhcHRlckZhY3RvcnkpOw0KKwl9DQorDQorCS8qKg0KKwkgKiBUaGlzIHJldHVybnMgdGhlIHByb3BlcnR5IGRlc2NyaXB0b3JzIGZvciB0aGUgYWRhcHRlZCBjbGFzcy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgTGlzdDxJSXRlbVByb3BlcnR5RGVzY3JpcHRvcj4gZ2V0UHJvcGVydHlEZXNjcmlwdG9ycyhPYmplY3Qgb2JqZWN0KSB7DQorCQlpZiAoaXRlbVByb3BlcnR5RGVzY3JpcHRvcnMgPT0gbnVsbCkgew0KKwkJCXN1cGVyLmdldFByb3BlcnR5RGVzY3JpcHRvcnMob2JqZWN0KTsNCisNCisJCQlhZGRCYXNlX0RpcmVjdGVkUmVsYXRpb25zaGlwUHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCk7DQorCQkJYWRkU291cmNlUHJvcGVydHlQYXRoUHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCk7DQorCQkJYWRkVGFyZ2V0UHJvcGVydHlQYXRoUHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCk7DQorCQkJYWRkU291cmNlQ29udGV4dFByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QpOw0KKwkJCWFkZFRhcmdldENvbnRleHRQcm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0KTsNCisJCX0NCisJCXJldHVybiBpdGVtUHJvcGVydHlEZXNjcmlwdG9yczsNCisJfQ0KKw0KKwkvKioNCisJICogVGhpcyBhZGRzIGEgcHJvcGVydHkgZGVzY3JpcHRvciBmb3IgdGhlIEJhc2UgRGlyZWN0ZWQgUmVsYXRpb25zaGlwIGZlYXR1cmUuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwcm90ZWN0ZWQgdm9pZCBhZGRCYXNlX0RpcmVjdGVkUmVsYXRpb25zaGlwUHJvcGVydHlEZXNjcmlwdG9yKE9iamVjdCBvYmplY3QpIHsNCisJCWl0ZW1Qcm9wZXJ0eURlc2NyaXB0b3JzLmFkZA0KKwkJCShjcmVhdGVJdGVtUHJvcGVydHlEZXNjcmlwdG9yDQorCQkJCSgoKENvbXBvc2VhYmxlQWRhcHRlckZhY3RvcnkpYWRhcHRlckZhY3RvcnkpLmdldFJvb3RBZGFwdGVyRmFjdG9yeSgpLA0KKwkJCQkgZ2V0UmVzb3VyY2VMb2NhdG9yKCksDQorCQkJCSBnZXRTdHJpbmcoIl9VSV9EaXJlY3RlZFJlbGF0aW9uc2hpcFByb3BlcnR5UGF0aF9iYXNlX0RpcmVjdGVkUmVsYXRpb25zaGlwX2ZlYXR1cmUiKSwgLy8kTk9OLU5MUy0xJA0KKwkJCQkgZ2V0U3RyaW5nKCJfVUlfUHJvcGVydHlEZXNjcmlwdG9yX2Rlc2NyaXB0aW9uIiwgIl9VSV9EaXJlY3RlZFJlbGF0aW9uc2hpcFByb3BlcnR5UGF0aF9iYXNlX0RpcmVjdGVkUmVsYXRpb25zaGlwX2ZlYXR1cmUiLCAiX1VJX0RpcmVjdGVkUmVsYXRpb25zaGlwUHJvcGVydHlQYXRoX3R5cGUiKSwgLy8kTk9OLU5MUy0xJCAvLyROT04tTkxTLTIkIC8vJE5PTi1OTFMtMyQNCisJCQkJIEJsb2Nrc1BhY2thZ2UuTGl0ZXJhbHMuRElSRUNURURfUkVMQVRJT05TSElQX1BST1BFUlRZX1BBVEhfX0JBU0VfRElSRUNURURfUkVMQVRJT05TSElQLA0KKwkJCQkgdHJ1ZSwNCisJCQkJIGZhbHNlLA0KKwkJCQkgdHJ1ZSwNCisJCQkJIG51bGwsDQorCQkJCSBudWxsLA0KKwkJCQkgbnVsbCkpOw0KKwl9DQorDQorCS8qKg0KKwkgKiBUaGlzIGFkZHMgYSBwcm9wZXJ0eSBkZXNjcmlwdG9yIGZvciB0aGUgU291cmNlIFByb3BlcnR5IFBhdGggZmVhdHVyZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXByb3RlY3RlZCB2b2lkIGFkZFNvdXJjZVByb3BlcnR5UGF0aFByb3BlcnR5RGVzY3JpcHRvcihPYmplY3Qgb2JqZWN0KSB7DQorCQlpdGVtUHJvcGVydHlEZXNjcmlwdG9ycy5hZGQNCisJCQkoY3JlYXRlSXRlbVByb3BlcnR5RGVzY3JpcHRvcg0KKwkJCQkoKChDb21wb3NlYWJsZUFkYXB0ZXJGYWN0b3J5KWFkYXB0ZXJGYWN0b3J5KS5nZXRSb290QWRhcHRlckZhY3RvcnkoKSwNCisJCQkJIGdldFJlc291cmNlTG9jYXRvcigpLA0KKwkJCQkgZ2V0U3RyaW5nKCJfVUlfRGlyZWN0ZWRSZWxhdGlvbnNoaXBQcm9wZXJ0eVBhdGhfc291cmNlUHJvcGVydHlQYXRoX2ZlYXR1cmUiKSwgLy8kTk9OLU5MUy0xJA0KKwkJCQkgZ2V0U3RyaW5nKCJfVUlfUHJvcGVydHlEZXNjcmlwdG9yX2Rlc2NyaXB0aW9uIiwgIl9VSV9EaXJlY3RlZFJlbGF0aW9uc2hpcFByb3BlcnR5UGF0aF9zb3VyY2VQcm9wZXJ0eVBhdGhfZmVhdHVyZSIsICJfVUlfRGlyZWN0ZWRSZWxhdGlvbnNoaXBQcm9wZXJ0eVBhdGhfdHlwZSIpLCAvLyROT04tTkxTLTEkIC8vJE5PTi1OTFMtMiQgLy8kTk9OLU5MUy0zJA0KKwkJCQkgQmxvY2tzUGFja2FnZS5MaXRlcmFscy5ESVJFQ1RFRF9SRUxBVElPTlNISVBfUFJPUEVSVFlfUEFUSF9fU09VUkNFX1BST1BFUlRZX1BBVEgsDQorCQkJCSB0cnVlLA0KKwkJCQkgZmFsc2UsDQorCQkJCSB0cnVlLA0KKwkJCQkgbnVsbCwNCisJCQkJIG51bGwsDQorCQkJCSBudWxsKSk7DQorCX0NCisNCisJLyoqDQorCSAqIFRoaXMgYWRkcyBhIHByb3BlcnR5IGRlc2NyaXB0b3IgZm9yIHRoZSBUYXJnZXQgUHJvcGVydHkgUGF0aCBmZWF0dXJlLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHJvdGVjdGVkIHZvaWQgYWRkVGFyZ2V0UHJvcGVydHlQYXRoUHJvcGVydHlEZXNjcmlwdG9yKE9iamVjdCBvYmplY3QpIHsNCisJCWl0ZW1Qcm9wZXJ0eURlc2NyaXB0b3JzLmFkZA0KKwkJCShjcmVhdGVJdGVtUHJvcGVydHlEZXNjcmlwdG9yDQorCQkJCSgoKENvbXBvc2VhYmxlQWRhcHRlckZhY3RvcnkpYWRhcHRlckZhY3RvcnkpLmdldFJvb3RBZGFwdGVyRmFjdG9yeSgpLA0KKwkJCQkgZ2V0UmVzb3VyY2VMb2NhdG9yKCksDQorCQkJCSBnZXRTdHJpbmcoIl9VSV9EaXJlY3RlZFJlbGF0aW9uc2hpcFByb3BlcnR5UGF0aF90YXJnZXRQcm9wZXJ0eVBhdGhfZmVhdHVyZSIpLCAvLyROT04tTkxTLTEkDQorCQkJCSBnZXRTdHJpbmcoIl9VSV9Qcm9wZXJ0eURlc2NyaXB0b3JfZGVzY3JpcHRpb24iLCAiX1VJX0RpcmVjdGVkUmVsYXRpb25zaGlwUHJvcGVydHlQYXRoX3RhcmdldFByb3BlcnR5UGF0aF9mZWF0dXJlIiwgIl9VSV9EaXJlY3RlZFJlbGF0aW9uc2hpcFByb3BlcnR5UGF0aF90eXBlIiksIC8vJE5PTi1OTFMtMSQgLy8kTk9OLU5MUy0yJCAvLyROT04tTkxTLTMkDQorCQkJCSBCbG9ja3NQYWNrYWdlLkxpdGVyYWxzLkRJUkVDVEVEX1JFTEFUSU9OU0hJUF9QUk9QRVJUWV9QQVRIX19UQVJHRVRfUFJPUEVSVFlfUEFUSCwNCisJCQkJIHRydWUsDQorCQkJCSBmYWxzZSwNCisJCQkJIHRydWUsDQorCQkJCSBudWxsLA0KKwkJCQkgbnVsbCwNCisJCQkJIG51bGwpKTsNCisJfQ0KKw0KKwkvKioNCisJICogVGhpcyBhZGRzIGEgcHJvcGVydHkgZGVzY3JpcHRvciBmb3IgdGhlIFNvdXJjZSBDb250ZXh0IGZlYXR1cmUuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwcm90ZWN0ZWQgdm9pZCBhZGRTb3VyY2VDb250ZXh0UHJvcGVydHlEZXNjcmlwdG9yKE9iamVjdCBvYmplY3QpIHsNCisJCWl0ZW1Qcm9wZXJ0eURlc2NyaXB0b3JzLmFkZA0KKwkJCShjcmVhdGVJdGVtUHJvcGVydHlEZXNjcmlwdG9yDQorCQkJCSgoKENvbXBvc2VhYmxlQWRhcHRlckZhY3RvcnkpYWRhcHRlckZhY3RvcnkpLmdldFJvb3RBZGFwdGVyRmFjdG9yeSgpLA0KKwkJCQkgZ2V0UmVzb3VyY2VMb2NhdG9yKCksDQorCQkJCSBnZXRTdHJpbmcoIl9VSV9EaXJlY3RlZFJlbGF0aW9uc2hpcFByb3BlcnR5UGF0aF9zb3VyY2VDb250ZXh0X2ZlYXR1cmUiKSwgLy8kTk9OLU5MUy0xJA0KKwkJCQkgZ2V0U3RyaW5nKCJfVUlfUHJvcGVydHlEZXNjcmlwdG9yX2Rlc2NyaXB0aW9uIiwgIl9VSV9EaXJlY3RlZFJlbGF0aW9uc2hpcFByb3BlcnR5UGF0aF9zb3VyY2VDb250ZXh0X2ZlYXR1cmUiLCAiX1VJX0RpcmVjdGVkUmVsYXRpb25zaGlwUHJvcGVydHlQYXRoX3R5cGUiKSwgLy8kTk9OLU5MUy0xJCAvLyROT04tTkxTLTIkIC8vJE5PTi1OTFMtMyQNCisJCQkJIEJsb2Nrc1BhY2thZ2UuTGl0ZXJhbHMuRElSRUNURURfUkVMQVRJT05TSElQX1BST1BFUlRZX1BBVEhfX1NPVVJDRV9DT05URVhULA0KKwkJCQkgdHJ1ZSwNCisJCQkJIGZhbHNlLA0KKwkJCQkgdHJ1ZSwNCisJCQkJIG51bGwsDQorCQkJCSBudWxsLA0KKwkJCQkgbnVsbCkpOw0KKwl9DQorDQorCS8qKg0KKwkgKiBUaGlzIGFkZHMgYSBwcm9wZXJ0eSBkZXNjcmlwdG9yIGZvciB0aGUgVGFyZ2V0IENvbnRleHQgZmVhdHVyZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXByb3RlY3RlZCB2b2lkIGFkZFRhcmdldENvbnRleHRQcm9wZXJ0eURlc2NyaXB0b3IoT2JqZWN0IG9iamVjdCkgew0KKwkJaXRlbVByb3BlcnR5RGVzY3JpcHRvcnMuYWRkDQorCQkJKGNyZWF0ZUl0ZW1Qcm9wZXJ0eURlc2NyaXB0b3INCisJCQkJKCgoQ29tcG9zZWFibGVBZGFwdGVyRmFjdG9yeSlhZGFwdGVyRmFjdG9yeSkuZ2V0Um9vdEFkYXB0ZXJGYWN0b3J5KCksDQorCQkJCSBnZXRSZXNvdXJjZUxvY2F0b3IoKSwNCisJCQkJIGdldFN0cmluZygiX1VJX0RpcmVjdGVkUmVsYXRpb25zaGlwUHJvcGVydHlQYXRoX3RhcmdldENvbnRleHRfZmVhdHVyZSIpLCAvLyROT04tTkxTLTEkDQorCQkJCSBnZXRTdHJpbmcoIl9VSV9Qcm9wZXJ0eURlc2NyaXB0b3JfZGVzY3JpcHRpb24iLCAiX1VJX0RpcmVjdGVkUmVsYXRpb25zaGlwUHJvcGVydHlQYXRoX3RhcmdldENvbnRleHRfZmVhdHVyZSIsICJfVUlfRGlyZWN0ZWRSZWxhdGlvbnNoaXBQcm9wZXJ0eVBhdGhfdHlwZSIpLCAvLyROT04tTkxTLTEkIC8vJE5PTi1OTFMtMiQgLy8kTk9OLU5MUy0zJA0KKwkJCQkgQmxvY2tzUGFja2FnZS5MaXRlcmFscy5ESVJFQ1RFRF9SRUxBVElPTlNISVBfUFJPUEVSVFlfUEFUSF9fVEFSR0VUX0NPTlRFWFQsDQorCQkJCSB0cnVlLA0KKwkJCQkgZmFsc2UsDQorCQkJCSB0cnVlLA0KKwkJCQkgbnVsbCwNCisJCQkJIG51bGwsDQorCQkJCSBudWxsKSk7DQorCX0NCisNCisJLyoqDQorCSAqIFRoaXMgcmV0dXJucyB0aGUgbGFiZWwgdGV4dCBmb3IgdGhlIGFkYXB0ZWQgY2xhc3MuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIFN0cmluZyBnZXRUZXh0KE9iamVjdCBvYmplY3QpIHsNCisJCXJldHVybiBnZXRTdHJpbmcoIl9VSV9EaXJlY3RlZFJlbGF0aW9uc2hpcFByb3BlcnR5UGF0aF90eXBlIik7IC8vJE5PTi1OTFMtMSQNCisJfQ0KKwkNCisNCisJLyoqDQorCSAqIFRoaXMgaGFuZGxlcyBtb2RlbCBub3RpZmljYXRpb25zIGJ5IGNhbGxpbmcge0BsaW5rICN1cGRhdGVDaGlsZHJlbn0gdG8gdXBkYXRlIGFueSBjYWNoZWQNCisJICogY2hpbGRyZW4gYW5kIGJ5IGNyZWF0aW5nIGEgdmlld2VyIG5vdGlmaWNhdGlvbiwgd2hpY2ggaXQgcGFzc2VzIHRvIHtAbGluayAjZmlyZU5vdGlmeUNoYW5nZWR9Lg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXB1YmxpYyB2b2lkIG5vdGlmeUNoYW5nZWQoTm90aWZpY2F0aW9uIG5vdGlmaWNhdGlvbikgew0KKwkJdXBkYXRlQ2hpbGRyZW4obm90aWZpY2F0aW9uKTsNCisJCXN1cGVyLm5vdGlmeUNoYW5nZWQobm90aWZpY2F0aW9uKTsNCisJfQ0KKw0KKwkvKioNCisJICogVGhpcyBhZGRzIHtAbGluayBvcmcuZWNsaXBzZS5lbWYuZWRpdC5jb21tYW5kLkNvbW1hbmRQYXJhbWV0ZXJ9cyBkZXNjcmliaW5nIHRoZSBjaGlsZHJlbg0KKwkgKiB0aGF0IGNhbiBiZSBjcmVhdGVkIHVuZGVyIHRoaXMgb2JqZWN0Lg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXByb3RlY3RlZCB2b2lkIGNvbGxlY3ROZXdDaGlsZERlc2NyaXB0b3JzKENvbGxlY3Rpb248T2JqZWN0PiBuZXdDaGlsZERlc2NyaXB0b3JzLCBPYmplY3Qgb2JqZWN0KSB7DQorCQlzdXBlci5jb2xsZWN0TmV3Q2hpbGREZXNjcmlwdG9ycyhuZXdDaGlsZERlc2NyaXB0b3JzLCBvYmplY3QpOw0KKwl9DQorDQorCS8qKg0KKwkgKiBSZXR1cm4gdGhlIHJlc291cmNlIGxvY2F0b3IgZm9yIHRoaXMgaXRlbSBwcm92aWRlcidzIHJlc291cmNlcy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgUmVzb3VyY2VMb2NhdG9yIGdldFJlc291cmNlTG9jYXRvcigpIHsNCisJCXJldHVybiBTeXNtbEVkaXRQbHVnaW4uSU5TVEFOQ0U7DQorCX0NCisNCit9DQpkaWZmIC0tZ2l0IGEvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZWRpdC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9ibG9ja3MvcHJvdmlkZXIvRGlzdHJpYnV0ZWRQcm9wZXJ0eUl0ZW1Qcm92aWRlci5qYXZhIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZWRpdC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9ibG9ja3MvcHJvdmlkZXIvRGlzdHJpYnV0ZWRQcm9wZXJ0eUl0ZW1Qcm92aWRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjllN2MyOTgKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5lZGl0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L2Jsb2Nrcy9wcm92aWRlci9EaXN0cmlidXRlZFByb3BlcnR5SXRlbVByb3ZpZGVyLmphdmEKQEAgLTAsMCArMSwxNTMgQEAKKy8qKg0KKyAqIENvcHlyaWdodCAoYykgMjAxNSBDRUEgTElTVC4NCisgKiANCisgKiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KKyAqICBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCisgKiAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCisgKiAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgKi8NCitwYWNrYWdlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5ibG9ja3MucHJvdmlkZXI7DQorDQorDQoraW1wb3J0IGphdmEudXRpbC5Db2xsZWN0aW9uOw0KK2ltcG9ydCBqYXZhLnV0aWwuTGlzdDsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi5ub3RpZnkuQWRhcHRlckZhY3Rvcnk7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jb21tb24ubm90aWZ5Lk5vdGlmaWNhdGlvbjsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi51dGlsLlJlc291cmNlTG9jYXRvcjsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVkaXQucHJvdmlkZXIuQ29tcG9zZWFibGVBZGFwdGVyRmFjdG9yeTsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVkaXQucHJvdmlkZXIuSUVkaXRpbmdEb21haW5JdGVtUHJvdmlkZXI7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lZGl0LnByb3ZpZGVyLklJdGVtTGFiZWxQcm92aWRlcjsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVkaXQucHJvdmlkZXIuSUl0ZW1Qcm9wZXJ0eURlc2NyaXB0b3I7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lZGl0LnByb3ZpZGVyLklJdGVtUHJvcGVydHlTb3VyY2U7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lZGl0LnByb3ZpZGVyLklTdHJ1Y3R1cmVkSXRlbUNvbnRlbnRQcm92aWRlcjsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVkaXQucHJvdmlkZXIuSVRyZWVJdGVtQ29udGVudFByb3ZpZGVyOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWRpdC5wcm92aWRlci5JdGVtUHJvdmlkZXJBZGFwdGVyOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYmxvY2tzLkJsb2Nrc1BhY2thZ2U7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5wcm92aWRlci5TeXNtbEVkaXRQbHVnaW47DQorDQorLyoqDQorICogVGhpcyBpcyB0aGUgaXRlbSBwcm92aWRlciBhZGFwdGVyIGZvciBhIHtAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYmxvY2tzLkRpc3RyaWJ1dGVkUHJvcGVydHl9IG9iamVjdC4NCisgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKyAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKyAqIEBnZW5lcmF0ZWQNCisgKi8NCitwdWJsaWMgY2xhc3MgRGlzdHJpYnV0ZWRQcm9wZXJ0eUl0ZW1Qcm92aWRlciANCisJZXh0ZW5kcyBJdGVtUHJvdmlkZXJBZGFwdGVyDQorCWltcGxlbWVudHMNCisJCUlFZGl0aW5nRG9tYWluSXRlbVByb3ZpZGVyLA0KKwkJSVN0cnVjdHVyZWRJdGVtQ29udGVudFByb3ZpZGVyLA0KKwkJSVRyZWVJdGVtQ29udGVudFByb3ZpZGVyLA0KKwkJSUl0ZW1MYWJlbFByb3ZpZGVyLA0KKwkJSUl0ZW1Qcm9wZXJ0eVNvdXJjZSB7DQorCS8qKg0KKwkgKiBUaGlzIGNvbnN0cnVjdHMgYW4gaW5zdGFuY2UgZnJvbSBhIGZhY3RvcnkgYW5kIGEgbm90aWZpZXIuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgRGlzdHJpYnV0ZWRQcm9wZXJ0eUl0ZW1Qcm92aWRlcihBZGFwdGVyRmFjdG9yeSBhZGFwdGVyRmFjdG9yeSkgew0KKwkJc3VwZXIoYWRhcHRlckZhY3RvcnkpOw0KKwl9DQorDQorCS8qKg0KKwkgKiBUaGlzIHJldHVybnMgdGhlIHByb3BlcnR5IGRlc2NyaXB0b3JzIGZvciB0aGUgYWRhcHRlZCBjbGFzcy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgTGlzdDxJSXRlbVByb3BlcnR5RGVzY3JpcHRvcj4gZ2V0UHJvcGVydHlEZXNjcmlwdG9ycyhPYmplY3Qgb2JqZWN0KSB7DQorCQlpZiAoaXRlbVByb3BlcnR5RGVzY3JpcHRvcnMgPT0gbnVsbCkgew0KKwkJCXN1cGVyLmdldFByb3BlcnR5RGVzY3JpcHRvcnMob2JqZWN0KTsNCisNCisJCQlhZGRCYXNlX1Byb3BlcnR5UHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCk7DQorCQl9DQorCQlyZXR1cm4gaXRlbVByb3BlcnR5RGVzY3JpcHRvcnM7DQorCX0NCisNCisJLyoqDQorCSAqIFRoaXMgYWRkcyBhIHByb3BlcnR5IGRlc2NyaXB0b3IgZm9yIHRoZSBCYXNlIFByb3BlcnR5IGZlYXR1cmUuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwcm90ZWN0ZWQgdm9pZCBhZGRCYXNlX1Byb3BlcnR5UHJvcGVydHlEZXNjcmlwdG9yKE9iamVjdCBvYmplY3QpIHsNCisJCWl0ZW1Qcm9wZXJ0eURlc2NyaXB0b3JzLmFkZA0KKwkJCShjcmVhdGVJdGVtUHJvcGVydHlEZXNjcmlwdG9yDQorCQkJCSgoKENvbXBvc2VhYmxlQWRhcHRlckZhY3RvcnkpYWRhcHRlckZhY3RvcnkpLmdldFJvb3RBZGFwdGVyRmFjdG9yeSgpLA0KKwkJCQkgZ2V0UmVzb3VyY2VMb2NhdG9yKCksDQorCQkJCSBnZXRTdHJpbmcoIl9VSV9EaXN0cmlidXRlZFByb3BlcnR5X2Jhc2VfUHJvcGVydHlfZmVhdHVyZSIpLCAvLyROT04tTkxTLTEkDQorCQkJCSBnZXRTdHJpbmcoIl9VSV9Qcm9wZXJ0eURlc2NyaXB0b3JfZGVzY3JpcHRpb24iLCAiX1VJX0Rpc3RyaWJ1dGVkUHJvcGVydHlfYmFzZV9Qcm9wZXJ0eV9mZWF0dXJlIiwgIl9VSV9EaXN0cmlidXRlZFByb3BlcnR5X3R5cGUiKSwgLy8kTk9OLU5MUy0xJCAvLyROT04tTkxTLTIkIC8vJE5PTi1OTFMtMyQNCisJCQkJIEJsb2Nrc1BhY2thZ2UuTGl0ZXJhbHMuRElTVFJJQlVURURfUFJPUEVSVFlfX0JBU0VfUFJPUEVSVFksDQorCQkJCSB0cnVlLA0KKwkJCQkgZmFsc2UsDQorCQkJCSB0cnVlLA0KKwkJCQkgbnVsbCwNCisJCQkJIG51bGwsDQorCQkJCSBudWxsKSk7DQorCX0NCisNCisJLyoqDQorCSAqIFRoaXMgcmV0dXJucyBEaXN0cmlidXRlZFByb3BlcnR5LmdpZi4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgT2JqZWN0IGdldEltYWdlKE9iamVjdCBvYmplY3QpIHsNCisJCXJldHVybiBvdmVybGF5SW1hZ2Uob2JqZWN0LCBnZXRSZXNvdXJjZUxvY2F0b3IoKS5nZXRJbWFnZSgiZnVsbC9vYmoxNi9EaXN0cmlidXRlZFByb3BlcnR5IikpOyAvLyROT04tTkxTLTEkDQorCX0NCisNCisJLyoqDQorCSAqIFRoaXMgcmV0dXJucyB0aGUgbGFiZWwgdGV4dCBmb3IgdGhlIGFkYXB0ZWQgY2xhc3MuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIFN0cmluZyBnZXRUZXh0KE9iamVjdCBvYmplY3QpIHsNCisJCXJldHVybiBnZXRTdHJpbmcoIl9VSV9EaXN0cmlidXRlZFByb3BlcnR5X3R5cGUiKTsgLy8kTk9OLU5MUy0xJA0KKwl9DQorCQ0KKw0KKwkvKioNCisJICogVGhpcyBoYW5kbGVzIG1vZGVsIG5vdGlmaWNhdGlvbnMgYnkgY2FsbGluZyB7QGxpbmsgI3VwZGF0ZUNoaWxkcmVufSB0byB1cGRhdGUgYW55IGNhY2hlZA0KKwkgKiBjaGlsZHJlbiBhbmQgYnkgY3JlYXRpbmcgYSB2aWV3ZXIgbm90aWZpY2F0aW9uLCB3aGljaCBpdCBwYXNzZXMgdG8ge0BsaW5rICNmaXJlTm90aWZ5Q2hhbmdlZH0uDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIHZvaWQgbm90aWZ5Q2hhbmdlZChOb3RpZmljYXRpb24gbm90aWZpY2F0aW9uKSB7DQorCQl1cGRhdGVDaGlsZHJlbihub3RpZmljYXRpb24pOw0KKwkJc3VwZXIubm90aWZ5Q2hhbmdlZChub3RpZmljYXRpb24pOw0KKwl9DQorDQorCS8qKg0KKwkgKiBUaGlzIGFkZHMge0BsaW5rIG9yZy5lY2xpcHNlLmVtZi5lZGl0LmNvbW1hbmQuQ29tbWFuZFBhcmFtZXRlcn1zIGRlc2NyaWJpbmcgdGhlIGNoaWxkcmVuDQorCSAqIHRoYXQgY2FuIGJlIGNyZWF0ZWQgdW5kZXIgdGhpcyBvYmplY3QuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHJvdGVjdGVkIHZvaWQgY29sbGVjdE5ld0NoaWxkRGVzY3JpcHRvcnMoQ29sbGVjdGlvbjxPYmplY3Q+IG5ld0NoaWxkRGVzY3JpcHRvcnMsIE9iamVjdCBvYmplY3QpIHsNCisJCXN1cGVyLmNvbGxlY3ROZXdDaGlsZERlc2NyaXB0b3JzKG5ld0NoaWxkRGVzY3JpcHRvcnMsIG9iamVjdCk7DQorCX0NCisNCisJLyoqDQorCSAqIFJldHVybiB0aGUgcmVzb3VyY2UgbG9jYXRvciBmb3IgdGhpcyBpdGVtIHByb3ZpZGVyJ3MgcmVzb3VyY2VzLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXB1YmxpYyBSZXNvdXJjZUxvY2F0b3IgZ2V0UmVzb3VyY2VMb2NhdG9yKCkgew0KKwkJcmV0dXJuIFN5c21sRWRpdFBsdWdpbi5JTlNUQU5DRTsNCisJfQ0KKw0KK30NCmRpZmYgLS1naXQgYS9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5lZGl0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L2Jsb2Nrcy9wcm92aWRlci9FbGVtZW50UHJvcGVydHlQYXRoSXRlbVByb3ZpZGVyLmphdmEgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5lZGl0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L2Jsb2Nrcy9wcm92aWRlci9FbGVtZW50UHJvcGVydHlQYXRoSXRlbVByb3ZpZGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjUyYmE4NAotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmVkaXQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvYmxvY2tzL3Byb3ZpZGVyL0VsZW1lbnRQcm9wZXJ0eVBhdGhJdGVtUHJvdmlkZXIuamF2YQpAQCAtMCwwICsxLDE2NSBAQAorLyoqDQorICogQ29weXJpZ2h0IChjKSAyMDE1IENFQSBMSVNULg0KKyAqIA0KKyAqICBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQorICogIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KKyAqICB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KKyAqICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqLw0KK3BhY2thZ2Ugb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmJsb2Nrcy5wcm92aWRlcjsNCisNCisNCitpbXBvcnQgamF2YS51dGlsLkNvbGxlY3Rpb247DQoraW1wb3J0IGphdmEudXRpbC5MaXN0Ow0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY29tbW9uLm5vdGlmeS5BZGFwdGVyRmFjdG9yeTsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi5ub3RpZnkuTm90aWZpY2F0aW9uOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY29tbW9uLnV0aWwuUmVzb3VyY2VMb2NhdG9yOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWRpdC5wcm92aWRlci5Db21wb3NlYWJsZUFkYXB0ZXJGYWN0b3J5Ow0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWRpdC5wcm92aWRlci5JRWRpdGluZ0RvbWFpbkl0ZW1Qcm92aWRlcjsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVkaXQucHJvdmlkZXIuSUl0ZW1MYWJlbFByb3ZpZGVyOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWRpdC5wcm92aWRlci5JSXRlbVByb3BlcnR5RGVzY3JpcHRvcjsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVkaXQucHJvdmlkZXIuSUl0ZW1Qcm9wZXJ0eVNvdXJjZTsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVkaXQucHJvdmlkZXIuSVN0cnVjdHVyZWRJdGVtQ29udGVudFByb3ZpZGVyOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWRpdC5wcm92aWRlci5JVHJlZUl0ZW1Db250ZW50UHJvdmlkZXI7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lZGl0LnByb3ZpZGVyLkl0ZW1Qcm92aWRlckFkYXB0ZXI7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5ibG9ja3MuQmxvY2tzUGFja2FnZTsNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnByb3ZpZGVyLlN5c21sRWRpdFBsdWdpbjsNCisNCisvKioNCisgKiBUaGlzIGlzIHRoZSBpdGVtIHByb3ZpZGVyIGFkYXB0ZXIgZm9yIGEge0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5ibG9ja3MuRWxlbWVudFByb3BlcnR5UGF0aH0gb2JqZWN0Lg0KKyAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorICogQGdlbmVyYXRlZA0KKyAqLw0KK3B1YmxpYyBjbGFzcyBFbGVtZW50UHJvcGVydHlQYXRoSXRlbVByb3ZpZGVyIA0KKwlleHRlbmRzIEl0ZW1Qcm92aWRlckFkYXB0ZXINCisJaW1wbGVtZW50cw0KKwkJSUVkaXRpbmdEb21haW5JdGVtUHJvdmlkZXIsDQorCQlJU3RydWN0dXJlZEl0ZW1Db250ZW50UHJvdmlkZXIsDQorCQlJVHJlZUl0ZW1Db250ZW50UHJvdmlkZXIsDQorCQlJSXRlbUxhYmVsUHJvdmlkZXIsDQorCQlJSXRlbVByb3BlcnR5U291cmNlIHsNCisJLyoqDQorCSAqIFRoaXMgY29uc3RydWN0cyBhbiBpbnN0YW5jZSBmcm9tIGEgZmFjdG9yeSBhbmQgYSBub3RpZmllci4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBFbGVtZW50UHJvcGVydHlQYXRoSXRlbVByb3ZpZGVyKEFkYXB0ZXJGYWN0b3J5IGFkYXB0ZXJGYWN0b3J5KSB7DQorCQlzdXBlcihhZGFwdGVyRmFjdG9yeSk7DQorCX0NCisNCisJLyoqDQorCSAqIFRoaXMgcmV0dXJucyB0aGUgcHJvcGVydHkgZGVzY3JpcHRvcnMgZm9yIHRoZSBhZGFwdGVkIGNsYXNzLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXB1YmxpYyBMaXN0PElJdGVtUHJvcGVydHlEZXNjcmlwdG9yPiBnZXRQcm9wZXJ0eURlc2NyaXB0b3JzKE9iamVjdCBvYmplY3QpIHsNCisJCWlmIChpdGVtUHJvcGVydHlEZXNjcmlwdG9ycyA9PSBudWxsKSB7DQorCQkJc3VwZXIuZ2V0UHJvcGVydHlEZXNjcmlwdG9ycyhvYmplY3QpOw0KKw0KKwkJCWFkZEJhc2VfRWxlbWVudFByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QpOw0KKwkJCWFkZFByb3BlcnR5UGF0aFByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QpOw0KKwkJfQ0KKwkJcmV0dXJuIGl0ZW1Qcm9wZXJ0eURlc2NyaXB0b3JzOw0KKwl9DQorDQorCS8qKg0KKwkgKiBUaGlzIGFkZHMgYSBwcm9wZXJ0eSBkZXNjcmlwdG9yIGZvciB0aGUgQmFzZSBFbGVtZW50IGZlYXR1cmUuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwcm90ZWN0ZWQgdm9pZCBhZGRCYXNlX0VsZW1lbnRQcm9wZXJ0eURlc2NyaXB0b3IoT2JqZWN0IG9iamVjdCkgew0KKwkJaXRlbVByb3BlcnR5RGVzY3JpcHRvcnMuYWRkDQorCQkJKGNyZWF0ZUl0ZW1Qcm9wZXJ0eURlc2NyaXB0b3INCisJCQkJKCgoQ29tcG9zZWFibGVBZGFwdGVyRmFjdG9yeSlhZGFwdGVyRmFjdG9yeSkuZ2V0Um9vdEFkYXB0ZXJGYWN0b3J5KCksDQorCQkJCSBnZXRSZXNvdXJjZUxvY2F0b3IoKSwNCisJCQkJIGdldFN0cmluZygiX1VJX0VsZW1lbnRQcm9wZXJ0eVBhdGhfYmFzZV9FbGVtZW50X2ZlYXR1cmUiKSwgLy8kTk9OLU5MUy0xJA0KKwkJCQkgZ2V0U3RyaW5nKCJfVUlfUHJvcGVydHlEZXNjcmlwdG9yX2Rlc2NyaXB0aW9uIiwgIl9VSV9FbGVtZW50UHJvcGVydHlQYXRoX2Jhc2VfRWxlbWVudF9mZWF0dXJlIiwgIl9VSV9FbGVtZW50UHJvcGVydHlQYXRoX3R5cGUiKSwgLy8kTk9OLU5MUy0xJCAvLyROT04tTkxTLTIkIC8vJE5PTi1OTFMtMyQNCisJCQkJIEJsb2Nrc1BhY2thZ2UuTGl0ZXJhbHMuRUxFTUVOVF9QUk9QRVJUWV9QQVRIX19CQVNFX0VMRU1FTlQsDQorCQkJCSB0cnVlLA0KKwkJCQkgZmFsc2UsDQorCQkJCSB0cnVlLA0KKwkJCQkgbnVsbCwNCisJCQkJIG51bGwsDQorCQkJCSBudWxsKSk7DQorCX0NCisNCisJLyoqDQorCSAqIFRoaXMgYWRkcyBhIHByb3BlcnR5IGRlc2NyaXB0b3IgZm9yIHRoZSBQcm9wZXJ0eSBQYXRoIGZlYXR1cmUuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwcm90ZWN0ZWQgdm9pZCBhZGRQcm9wZXJ0eVBhdGhQcm9wZXJ0eURlc2NyaXB0b3IoT2JqZWN0IG9iamVjdCkgew0KKwkJaXRlbVByb3BlcnR5RGVzY3JpcHRvcnMuYWRkDQorCQkJKGNyZWF0ZUl0ZW1Qcm9wZXJ0eURlc2NyaXB0b3INCisJCQkJKCgoQ29tcG9zZWFibGVBZGFwdGVyRmFjdG9yeSlhZGFwdGVyRmFjdG9yeSkuZ2V0Um9vdEFkYXB0ZXJGYWN0b3J5KCksDQorCQkJCSBnZXRSZXNvdXJjZUxvY2F0b3IoKSwNCisJCQkJIGdldFN0cmluZygiX1VJX0VsZW1lbnRQcm9wZXJ0eVBhdGhfcHJvcGVydHlQYXRoX2ZlYXR1cmUiKSwgLy8kTk9OLU5MUy0xJA0KKwkJCQkgZ2V0U3RyaW5nKCJfVUlfUHJvcGVydHlEZXNjcmlwdG9yX2Rlc2NyaXB0aW9uIiwgIl9VSV9FbGVtZW50UHJvcGVydHlQYXRoX3Byb3BlcnR5UGF0aF9mZWF0dXJlIiwgIl9VSV9FbGVtZW50UHJvcGVydHlQYXRoX3R5cGUiKSwgLy8kTk9OLU5MUy0xJCAvLyROT04tTkxTLTIkIC8vJE5PTi1OTFMtMyQNCisJCQkJIEJsb2Nrc1BhY2thZ2UuTGl0ZXJhbHMuRUxFTUVOVF9QUk9QRVJUWV9QQVRIX19QUk9QRVJUWV9QQVRILA0KKwkJCQkgdHJ1ZSwNCisJCQkJIGZhbHNlLA0KKwkJCQkgdHJ1ZSwNCisJCQkJIG51bGwsDQorCQkJCSBudWxsLA0KKwkJCQkgbnVsbCkpOw0KKwl9DQorDQorCS8qKg0KKwkgKiBUaGlzIHJldHVybnMgdGhlIGxhYmVsIHRleHQgZm9yIHRoZSBhZGFwdGVkIGNsYXNzLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXB1YmxpYyBTdHJpbmcgZ2V0VGV4dChPYmplY3Qgb2JqZWN0KSB7DQorCQlyZXR1cm4gZ2V0U3RyaW5nKCJfVUlfRWxlbWVudFByb3BlcnR5UGF0aF90eXBlIik7IC8vJE5PTi1OTFMtMSQNCisJfQ0KKwkNCisNCisJLyoqDQorCSAqIFRoaXMgaGFuZGxlcyBtb2RlbCBub3RpZmljYXRpb25zIGJ5IGNhbGxpbmcge0BsaW5rICN1cGRhdGVDaGlsZHJlbn0gdG8gdXBkYXRlIGFueSBjYWNoZWQNCisJICogY2hpbGRyZW4gYW5kIGJ5IGNyZWF0aW5nIGEgdmlld2VyIG5vdGlmaWNhdGlvbiwgd2hpY2ggaXQgcGFzc2VzIHRvIHtAbGluayAjZmlyZU5vdGlmeUNoYW5nZWR9Lg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXB1YmxpYyB2b2lkIG5vdGlmeUNoYW5nZWQoTm90aWZpY2F0aW9uIG5vdGlmaWNhdGlvbikgew0KKwkJdXBkYXRlQ2hpbGRyZW4obm90aWZpY2F0aW9uKTsNCisJCXN1cGVyLm5vdGlmeUNoYW5nZWQobm90aWZpY2F0aW9uKTsNCisJfQ0KKw0KKwkvKioNCisJICogVGhpcyBhZGRzIHtAbGluayBvcmcuZWNsaXBzZS5lbWYuZWRpdC5jb21tYW5kLkNvbW1hbmRQYXJhbWV0ZXJ9cyBkZXNjcmliaW5nIHRoZSBjaGlsZHJlbg0KKwkgKiB0aGF0IGNhbiBiZSBjcmVhdGVkIHVuZGVyIHRoaXMgb2JqZWN0Lg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXByb3RlY3RlZCB2b2lkIGNvbGxlY3ROZXdDaGlsZERlc2NyaXB0b3JzKENvbGxlY3Rpb248T2JqZWN0PiBuZXdDaGlsZERlc2NyaXB0b3JzLCBPYmplY3Qgb2JqZWN0KSB7DQorCQlzdXBlci5jb2xsZWN0TmV3Q2hpbGREZXNjcmlwdG9ycyhuZXdDaGlsZERlc2NyaXB0b3JzLCBvYmplY3QpOw0KKwl9DQorDQorCS8qKg0KKwkgKiBSZXR1cm4gdGhlIHJlc291cmNlIGxvY2F0b3IgZm9yIHRoaXMgaXRlbSBwcm92aWRlcidzIHJlc291cmNlcy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgUmVzb3VyY2VMb2NhdG9yIGdldFJlc291cmNlTG9jYXRvcigpIHsNCisJCXJldHVybiBTeXNtbEVkaXRQbHVnaW4uSU5TVEFOQ0U7DQorCX0NCisNCit9DQpkaWZmIC0tZ2l0IGEvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZWRpdC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9ibG9ja3MvcHJvdmlkZXIvRW5kUGF0aE11bHRpcGxpY2l0eUl0ZW1Qcm92aWRlci5qYXZhIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZWRpdC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9ibG9ja3MvcHJvdmlkZXIvRW5kUGF0aE11bHRpcGxpY2l0eUl0ZW1Qcm92aWRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUyMmZmYTEKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5lZGl0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L2Jsb2Nrcy9wcm92aWRlci9FbmRQYXRoTXVsdGlwbGljaXR5SXRlbVByb3ZpZGVyLmphdmEKQEAgLTAsMCArMSwyMTAgQEAKKy8qKg0KKyAqIENvcHlyaWdodCAoYykgMjAxNSBDRUEgTElTVC4NCisgKiANCisgKiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KKyAqICBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCisgKiAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCisgKiAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgKi8NCitwYWNrYWdlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5ibG9ja3MucHJvdmlkZXI7DQorDQorDQoraW1wb3J0IGphdmEudXRpbC5Db2xsZWN0aW9uOw0KK2ltcG9ydCBqYXZhLnV0aWwuTGlzdDsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi5ub3RpZnkuQWRhcHRlckZhY3Rvcnk7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jb21tb24ubm90aWZ5Lk5vdGlmaWNhdGlvbjsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi51dGlsLlJlc291cmNlTG9jYXRvcjsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVkaXQucHJvdmlkZXIuQ29tcG9zZWFibGVBZGFwdGVyRmFjdG9yeTsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVkaXQucHJvdmlkZXIuSUVkaXRpbmdEb21haW5JdGVtUHJvdmlkZXI7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lZGl0LnByb3ZpZGVyLklJdGVtTGFiZWxQcm92aWRlcjsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVkaXQucHJvdmlkZXIuSUl0ZW1Qcm9wZXJ0eURlc2NyaXB0b3I7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lZGl0LnByb3ZpZGVyLklJdGVtUHJvcGVydHlTb3VyY2U7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lZGl0LnByb3ZpZGVyLklTdHJ1Y3R1cmVkSXRlbUNvbnRlbnRQcm92aWRlcjsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVkaXQucHJvdmlkZXIuSVRyZWVJdGVtQ29udGVudFByb3ZpZGVyOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWRpdC5wcm92aWRlci5JdGVtUHJvcGVydHlEZXNjcmlwdG9yOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWRpdC5wcm92aWRlci5JdGVtUHJvdmlkZXJBZGFwdGVyOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWRpdC5wcm92aWRlci5WaWV3ZXJOb3RpZmljYXRpb247DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5ibG9ja3MuQmxvY2tzUGFja2FnZTsNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmJsb2Nrcy5FbmRQYXRoTXVsdGlwbGljaXR5Ow0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucHJvdmlkZXIuU3lzbWxFZGl0UGx1Z2luOw0KKw0KKy8qKg0KKyAqIFRoaXMgaXMgdGhlIGl0ZW0gcHJvdmlkZXIgYWRhcHRlciBmb3IgYSB7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmJsb2Nrcy5FbmRQYXRoTXVsdGlwbGljaXR5fSBvYmplY3QuDQorICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisgKiBAZ2VuZXJhdGVkDQorICovDQorcHVibGljIGNsYXNzIEVuZFBhdGhNdWx0aXBsaWNpdHlJdGVtUHJvdmlkZXIgDQorCWV4dGVuZHMgSXRlbVByb3ZpZGVyQWRhcHRlcg0KKwlpbXBsZW1lbnRzDQorCQlJRWRpdGluZ0RvbWFpbkl0ZW1Qcm92aWRlciwNCisJCUlTdHJ1Y3R1cmVkSXRlbUNvbnRlbnRQcm92aWRlciwNCisJCUlUcmVlSXRlbUNvbnRlbnRQcm92aWRlciwNCisJCUlJdGVtTGFiZWxQcm92aWRlciwNCisJCUlJdGVtUHJvcGVydHlTb3VyY2Ugew0KKwkvKioNCisJICogVGhpcyBjb25zdHJ1Y3RzIGFuIGluc3RhbmNlIGZyb20gYSBmYWN0b3J5IGFuZCBhIG5vdGlmaWVyLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIEVuZFBhdGhNdWx0aXBsaWNpdHlJdGVtUHJvdmlkZXIoQWRhcHRlckZhY3RvcnkgYWRhcHRlckZhY3RvcnkpIHsNCisJCXN1cGVyKGFkYXB0ZXJGYWN0b3J5KTsNCisJfQ0KKw0KKwkvKioNCisJICogVGhpcyByZXR1cm5zIHRoZSBwcm9wZXJ0eSBkZXNjcmlwdG9ycyBmb3IgdGhlIGFkYXB0ZWQgY2xhc3MuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIExpc3Q8SUl0ZW1Qcm9wZXJ0eURlc2NyaXB0b3I+IGdldFByb3BlcnR5RGVzY3JpcHRvcnMoT2JqZWN0IG9iamVjdCkgew0KKwkJaWYgKGl0ZW1Qcm9wZXJ0eURlc2NyaXB0b3JzID09IG51bGwpIHsNCisJCQlzdXBlci5nZXRQcm9wZXJ0eURlc2NyaXB0b3JzKG9iamVjdCk7DQorDQorCQkJYWRkQmFzZV9Qcm9wZXJ0eVByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QpOw0KKwkJCWFkZExvd2VyUHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCk7DQorCQkJYWRkVXBwZXJQcm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0KTsNCisJCX0NCisJCXJldHVybiBpdGVtUHJvcGVydHlEZXNjcmlwdG9yczsNCisJfQ0KKw0KKwkvKioNCisJICogVGhpcyBhZGRzIGEgcHJvcGVydHkgZGVzY3JpcHRvciBmb3IgdGhlIEJhc2UgUHJvcGVydHkgZmVhdHVyZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXByb3RlY3RlZCB2b2lkIGFkZEJhc2VfUHJvcGVydHlQcm9wZXJ0eURlc2NyaXB0b3IoT2JqZWN0IG9iamVjdCkgew0KKwkJaXRlbVByb3BlcnR5RGVzY3JpcHRvcnMuYWRkDQorCQkJKGNyZWF0ZUl0ZW1Qcm9wZXJ0eURlc2NyaXB0b3INCisJCQkJKCgoQ29tcG9zZWFibGVBZGFwdGVyRmFjdG9yeSlhZGFwdGVyRmFjdG9yeSkuZ2V0Um9vdEFkYXB0ZXJGYWN0b3J5KCksDQorCQkJCSBnZXRSZXNvdXJjZUxvY2F0b3IoKSwNCisJCQkJIGdldFN0cmluZygiX1VJX0VuZFBhdGhNdWx0aXBsaWNpdHlfYmFzZV9Qcm9wZXJ0eV9mZWF0dXJlIiksIC8vJE5PTi1OTFMtMSQNCisJCQkJIGdldFN0cmluZygiX1VJX1Byb3BlcnR5RGVzY3JpcHRvcl9kZXNjcmlwdGlvbiIsICJfVUlfRW5kUGF0aE11bHRpcGxpY2l0eV9iYXNlX1Byb3BlcnR5X2ZlYXR1cmUiLCAiX1VJX0VuZFBhdGhNdWx0aXBsaWNpdHlfdHlwZSIpLCAvLyROT04tTkxTLTEkIC8vJE5PTi1OTFMtMiQgLy8kTk9OLU5MUy0zJA0KKwkJCQkgQmxvY2tzUGFja2FnZS5MaXRlcmFscy5FTkRfUEFUSF9NVUxUSVBMSUNJVFlfX0JBU0VfUFJPUEVSVFksDQorCQkJCSB0cnVlLA0KKwkJCQkgZmFsc2UsDQorCQkJCSB0cnVlLA0KKwkJCQkgbnVsbCwNCisJCQkJIG51bGwsDQorCQkJCSBudWxsKSk7DQorCX0NCisNCisJLyoqDQorCSAqIFRoaXMgYWRkcyBhIHByb3BlcnR5IGRlc2NyaXB0b3IgZm9yIHRoZSBMb3dlciBmZWF0dXJlLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHJvdGVjdGVkIHZvaWQgYWRkTG93ZXJQcm9wZXJ0eURlc2NyaXB0b3IoT2JqZWN0IG9iamVjdCkgew0KKwkJaXRlbVByb3BlcnR5RGVzY3JpcHRvcnMuYWRkDQorCQkJKGNyZWF0ZUl0ZW1Qcm9wZXJ0eURlc2NyaXB0b3INCisJCQkJKCgoQ29tcG9zZWFibGVBZGFwdGVyRmFjdG9yeSlhZGFwdGVyRmFjdG9yeSkuZ2V0Um9vdEFkYXB0ZXJGYWN0b3J5KCksDQorCQkJCSBnZXRSZXNvdXJjZUxvY2F0b3IoKSwNCisJCQkJIGdldFN0cmluZygiX1VJX0VuZFBhdGhNdWx0aXBsaWNpdHlfbG93ZXJfZmVhdHVyZSIpLCAvLyROT04tTkxTLTEkDQorCQkJCSBnZXRTdHJpbmcoIl9VSV9Qcm9wZXJ0eURlc2NyaXB0b3JfZGVzY3JpcHRpb24iLCAiX1VJX0VuZFBhdGhNdWx0aXBsaWNpdHlfbG93ZXJfZmVhdHVyZSIsICJfVUlfRW5kUGF0aE11bHRpcGxpY2l0eV90eXBlIiksIC8vJE5PTi1OTFMtMSQgLy8kTk9OLU5MUy0yJCAvLyROT04tTkxTLTMkDQorCQkJCSBCbG9ja3NQYWNrYWdlLkxpdGVyYWxzLkVORF9QQVRIX01VTFRJUExJQ0lUWV9fTE9XRVIsDQorCQkJCSB0cnVlLA0KKwkJCQkgZmFsc2UsDQorCQkJCSBmYWxzZSwNCisJCQkJIEl0ZW1Qcm9wZXJ0eURlc2NyaXB0b3IuSU5URUdSQUxfVkFMVUVfSU1BR0UsDQorCQkJCSBudWxsLA0KKwkJCQkgbnVsbCkpOw0KKwl9DQorDQorCS8qKg0KKwkgKiBUaGlzIGFkZHMgYSBwcm9wZXJ0eSBkZXNjcmlwdG9yIGZvciB0aGUgVXBwZXIgZmVhdHVyZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXByb3RlY3RlZCB2b2lkIGFkZFVwcGVyUHJvcGVydHlEZXNjcmlwdG9yKE9iamVjdCBvYmplY3QpIHsNCisJCWl0ZW1Qcm9wZXJ0eURlc2NyaXB0b3JzLmFkZA0KKwkJCShjcmVhdGVJdGVtUHJvcGVydHlEZXNjcmlwdG9yDQorCQkJCSgoKENvbXBvc2VhYmxlQWRhcHRlckZhY3RvcnkpYWRhcHRlckZhY3RvcnkpLmdldFJvb3RBZGFwdGVyRmFjdG9yeSgpLA0KKwkJCQkgZ2V0UmVzb3VyY2VMb2NhdG9yKCksDQorCQkJCSBnZXRTdHJpbmcoIl9VSV9FbmRQYXRoTXVsdGlwbGljaXR5X3VwcGVyX2ZlYXR1cmUiKSwgLy8kTk9OLU5MUy0xJA0KKwkJCQkgZ2V0U3RyaW5nKCJfVUlfUHJvcGVydHlEZXNjcmlwdG9yX2Rlc2NyaXB0aW9uIiwgIl9VSV9FbmRQYXRoTXVsdGlwbGljaXR5X3VwcGVyX2ZlYXR1cmUiLCAiX1VJX0VuZFBhdGhNdWx0aXBsaWNpdHlfdHlwZSIpLCAvLyROT04tTkxTLTEkIC8vJE5PTi1OTFMtMiQgLy8kTk9OLU5MUy0zJA0KKwkJCQkgQmxvY2tzUGFja2FnZS5MaXRlcmFscy5FTkRfUEFUSF9NVUxUSVBMSUNJVFlfX1VQUEVSLA0KKwkJCQkgdHJ1ZSwNCisJCQkJIGZhbHNlLA0KKwkJCQkgZmFsc2UsDQorCQkJCSBJdGVtUHJvcGVydHlEZXNjcmlwdG9yLklOVEVHUkFMX1ZBTFVFX0lNQUdFLA0KKwkJCQkgbnVsbCwNCisJCQkJIG51bGwpKTsNCisJfQ0KKw0KKwkvKioNCisJICogVGhpcyByZXR1cm5zIEVuZFBhdGhNdWx0aXBsaWNpdHkuZ2lmLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXB1YmxpYyBPYmplY3QgZ2V0SW1hZ2UoT2JqZWN0IG9iamVjdCkgew0KKwkJcmV0dXJuIG92ZXJsYXlJbWFnZShvYmplY3QsIGdldFJlc291cmNlTG9jYXRvcigpLmdldEltYWdlKCJmdWxsL29iajE2L0VuZFBhdGhNdWx0aXBsaWNpdHkiKSk7IC8vJE5PTi1OTFMtMSQNCisJfQ0KKw0KKwkvKioNCisJICogVGhpcyByZXR1cm5zIHRoZSBsYWJlbCB0ZXh0IGZvciB0aGUgYWRhcHRlZCBjbGFzcy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgU3RyaW5nIGdldFRleHQoT2JqZWN0IG9iamVjdCkgew0KKwkJRW5kUGF0aE11bHRpcGxpY2l0eSBlbmRQYXRoTXVsdGlwbGljaXR5ID0gKEVuZFBhdGhNdWx0aXBsaWNpdHkpb2JqZWN0Ow0KKwkJcmV0dXJuIGdldFN0cmluZygiX1VJX0VuZFBhdGhNdWx0aXBsaWNpdHlfdHlwZSIpICsgIiAiICsgZW5kUGF0aE11bHRpcGxpY2l0eS5nZXRMb3dlcigpOyAvLyROT04tTkxTLTEkIC8vJE5PTi1OTFMtMiQNCisJfQ0KKwkNCisNCisJLyoqDQorCSAqIFRoaXMgaGFuZGxlcyBtb2RlbCBub3RpZmljYXRpb25zIGJ5IGNhbGxpbmcge0BsaW5rICN1cGRhdGVDaGlsZHJlbn0gdG8gdXBkYXRlIGFueSBjYWNoZWQNCisJICogY2hpbGRyZW4gYW5kIGJ5IGNyZWF0aW5nIGEgdmlld2VyIG5vdGlmaWNhdGlvbiwgd2hpY2ggaXQgcGFzc2VzIHRvIHtAbGluayAjZmlyZU5vdGlmeUNoYW5nZWR9Lg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXB1YmxpYyB2b2lkIG5vdGlmeUNoYW5nZWQoTm90aWZpY2F0aW9uIG5vdGlmaWNhdGlvbikgew0KKwkJdXBkYXRlQ2hpbGRyZW4obm90aWZpY2F0aW9uKTsNCisNCisJCXN3aXRjaCAobm90aWZpY2F0aW9uLmdldEZlYXR1cmVJRChFbmRQYXRoTXVsdGlwbGljaXR5LmNsYXNzKSkgew0KKwkJCWNhc2UgQmxvY2tzUGFja2FnZS5FTkRfUEFUSF9NVUxUSVBMSUNJVFlfX0xPV0VSOg0KKwkJCWNhc2UgQmxvY2tzUGFja2FnZS5FTkRfUEFUSF9NVUxUSVBMSUNJVFlfX1VQUEVSOg0KKwkJCQlmaXJlTm90aWZ5Q2hhbmdlZChuZXcgVmlld2VyTm90aWZpY2F0aW9uKG5vdGlmaWNhdGlvbiwgbm90aWZpY2F0aW9uLmdldE5vdGlmaWVyKCksIGZhbHNlLCB0cnVlKSk7DQorCQkJCXJldHVybjsNCisJCX0NCisJCXN1cGVyLm5vdGlmeUNoYW5nZWQobm90aWZpY2F0aW9uKTsNCisJfQ0KKw0KKwkvKioNCisJICogVGhpcyBhZGRzIHtAbGluayBvcmcuZWNsaXBzZS5lbWYuZWRpdC5jb21tYW5kLkNvbW1hbmRQYXJhbWV0ZXJ9cyBkZXNjcmliaW5nIHRoZSBjaGlsZHJlbg0KKwkgKiB0aGF0IGNhbiBiZSBjcmVhdGVkIHVuZGVyIHRoaXMgb2JqZWN0Lg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXByb3RlY3RlZCB2b2lkIGNvbGxlY3ROZXdDaGlsZERlc2NyaXB0b3JzKENvbGxlY3Rpb248T2JqZWN0PiBuZXdDaGlsZERlc2NyaXB0b3JzLCBPYmplY3Qgb2JqZWN0KSB7DQorCQlzdXBlci5jb2xsZWN0TmV3Q2hpbGREZXNjcmlwdG9ycyhuZXdDaGlsZERlc2NyaXB0b3JzLCBvYmplY3QpOw0KKwl9DQorDQorCS8qKg0KKwkgKiBSZXR1cm4gdGhlIHJlc291cmNlIGxvY2F0b3IgZm9yIHRoaXMgaXRlbSBwcm92aWRlcidzIHJlc291cmNlcy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgUmVzb3VyY2VMb2NhdG9yIGdldFJlc291cmNlTG9jYXRvcigpIHsNCisJCXJldHVybiBTeXNtbEVkaXRQbHVnaW4uSU5TVEFOQ0U7DQorCX0NCisNCit9DQpkaWZmIC0tZ2l0IGEvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZWRpdC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9ibG9ja3MvcHJvdmlkZXIvTmVzdGVkQ29ubmVjdG9yRW5kSXRlbVByb3ZpZGVyLmphdmEgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5lZGl0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L2Jsb2Nrcy9wcm92aWRlci9OZXN0ZWRDb25uZWN0b3JFbmRJdGVtUHJvdmlkZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYmM0NzIyCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZWRpdC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9ibG9ja3MvcHJvdmlkZXIvTmVzdGVkQ29ubmVjdG9yRW5kSXRlbVByb3ZpZGVyLmphdmEKQEAgLTAsMCArMSwxMjYgQEAKKy8qKg0KKyAqIENvcHlyaWdodCAoYykgMjAxNSBDRUEgTElTVC4NCisgKiANCisgKiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KKyAqICBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCisgKiAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCisgKiAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgKi8NCitwYWNrYWdlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5ibG9ja3MucHJvdmlkZXI7DQorDQorDQoraW1wb3J0IGphdmEudXRpbC5Db2xsZWN0aW9uOw0KK2ltcG9ydCBqYXZhLnV0aWwuTGlzdDsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi5ub3RpZnkuQWRhcHRlckZhY3Rvcnk7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jb21tb24ubm90aWZ5Lk5vdGlmaWNhdGlvbjsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVkaXQucHJvdmlkZXIuQ29tcG9zZWFibGVBZGFwdGVyRmFjdG9yeTsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVkaXQucHJvdmlkZXIuSUl0ZW1Qcm9wZXJ0eURlc2NyaXB0b3I7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5ibG9ja3MuQmxvY2tzUGFja2FnZTsNCisNCisvKioNCisgKiBUaGlzIGlzIHRoZSBpdGVtIHByb3ZpZGVyIGFkYXB0ZXIgZm9yIGEge0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5ibG9ja3MuTmVzdGVkQ29ubmVjdG9yRW5kfSBvYmplY3QuDQorICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisgKiBAZ2VuZXJhdGVkDQorICovDQorcHVibGljIGNsYXNzIE5lc3RlZENvbm5lY3RvckVuZEl0ZW1Qcm92aWRlciBleHRlbmRzIEVsZW1lbnRQcm9wZXJ0eVBhdGhJdGVtUHJvdmlkZXIgew0KKwkvKioNCisJICogVGhpcyBjb25zdHJ1Y3RzIGFuIGluc3RhbmNlIGZyb20gYSBmYWN0b3J5IGFuZCBhIG5vdGlmaWVyLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIE5lc3RlZENvbm5lY3RvckVuZEl0ZW1Qcm92aWRlcihBZGFwdGVyRmFjdG9yeSBhZGFwdGVyRmFjdG9yeSkgew0KKwkJc3VwZXIoYWRhcHRlckZhY3RvcnkpOw0KKwl9DQorDQorCS8qKg0KKwkgKiBUaGlzIHJldHVybnMgdGhlIHByb3BlcnR5IGRlc2NyaXB0b3JzIGZvciB0aGUgYWRhcHRlZCBjbGFzcy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgTGlzdDxJSXRlbVByb3BlcnR5RGVzY3JpcHRvcj4gZ2V0UHJvcGVydHlEZXNjcmlwdG9ycyhPYmplY3Qgb2JqZWN0KSB7DQorCQlpZiAoaXRlbVByb3BlcnR5RGVzY3JpcHRvcnMgPT0gbnVsbCkgew0KKwkJCXN1cGVyLmdldFByb3BlcnR5RGVzY3JpcHRvcnMob2JqZWN0KTsNCisNCisJCQlhZGRCYXNlX0Nvbm5lY3RvckVuZFByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QpOw0KKwkJfQ0KKwkJcmV0dXJuIGl0ZW1Qcm9wZXJ0eURlc2NyaXB0b3JzOw0KKwl9DQorDQorCS8qKg0KKwkgKiBUaGlzIGFkZHMgYSBwcm9wZXJ0eSBkZXNjcmlwdG9yIGZvciB0aGUgQmFzZSBDb25uZWN0b3IgRW5kIGZlYXR1cmUuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwcm90ZWN0ZWQgdm9pZCBhZGRCYXNlX0Nvbm5lY3RvckVuZFByb3BlcnR5RGVzY3JpcHRvcihPYmplY3Qgb2JqZWN0KSB7DQorCQlpdGVtUHJvcGVydHlEZXNjcmlwdG9ycy5hZGQNCisJCQkoY3JlYXRlSXRlbVByb3BlcnR5RGVzY3JpcHRvcg0KKwkJCQkoKChDb21wb3NlYWJsZUFkYXB0ZXJGYWN0b3J5KWFkYXB0ZXJGYWN0b3J5KS5nZXRSb290QWRhcHRlckZhY3RvcnkoKSwNCisJCQkJIGdldFJlc291cmNlTG9jYXRvcigpLA0KKwkJCQkgZ2V0U3RyaW5nKCJfVUlfTmVzdGVkQ29ubmVjdG9yRW5kX2Jhc2VfQ29ubmVjdG9yRW5kX2ZlYXR1cmUiKSwgLy8kTk9OLU5MUy0xJA0KKwkJCQkgZ2V0U3RyaW5nKCJfVUlfUHJvcGVydHlEZXNjcmlwdG9yX2Rlc2NyaXB0aW9uIiwgIl9VSV9OZXN0ZWRDb25uZWN0b3JFbmRfYmFzZV9Db25uZWN0b3JFbmRfZmVhdHVyZSIsICJfVUlfTmVzdGVkQ29ubmVjdG9yRW5kX3R5cGUiKSwgLy8kTk9OLU5MUy0xJCAvLyROT04tTkxTLTIkIC8vJE5PTi1OTFMtMyQNCisJCQkJIEJsb2Nrc1BhY2thZ2UuTGl0ZXJhbHMuTkVTVEVEX0NPTk5FQ1RPUl9FTkRfX0JBU0VfQ09OTkVDVE9SX0VORCwNCisJCQkJIHRydWUsDQorCQkJCSBmYWxzZSwNCisJCQkJIHRydWUsDQorCQkJCSBudWxsLA0KKwkJCQkgbnVsbCwNCisJCQkJIG51bGwpKTsNCisJfQ0KKw0KKwkvKioNCisJICogVGhpcyByZXR1cm5zIE5lc3RlZENvbm5lY3RvckVuZC5naWYuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIE9iamVjdCBnZXRJbWFnZShPYmplY3Qgb2JqZWN0KSB7DQorCQlyZXR1cm4gb3ZlcmxheUltYWdlKG9iamVjdCwgZ2V0UmVzb3VyY2VMb2NhdG9yKCkuZ2V0SW1hZ2UoImZ1bGwvb2JqMTYvTmVzdGVkQ29ubmVjdG9yRW5kIikpOyAvLyROT04tTkxTLTEkDQorCX0NCisNCisJLyoqDQorCSAqIFRoaXMgcmV0dXJucyB0aGUgbGFiZWwgdGV4dCBmb3IgdGhlIGFkYXB0ZWQgY2xhc3MuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIFN0cmluZyBnZXRUZXh0KE9iamVjdCBvYmplY3QpIHsNCisJCXJldHVybiBnZXRTdHJpbmcoIl9VSV9OZXN0ZWRDb25uZWN0b3JFbmRfdHlwZSIpOyAvLyROT04tTkxTLTEkDQorCX0NCisJDQorDQorCS8qKg0KKwkgKiBUaGlzIGhhbmRsZXMgbW9kZWwgbm90aWZpY2F0aW9ucyBieSBjYWxsaW5nIHtAbGluayAjdXBkYXRlQ2hpbGRyZW59IHRvIHVwZGF0ZSBhbnkgY2FjaGVkDQorCSAqIGNoaWxkcmVuIGFuZCBieSBjcmVhdGluZyBhIHZpZXdlciBub3RpZmljYXRpb24sIHdoaWNoIGl0IHBhc3NlcyB0byB7QGxpbmsgI2ZpcmVOb3RpZnlDaGFuZ2VkfS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgdm9pZCBub3RpZnlDaGFuZ2VkKE5vdGlmaWNhdGlvbiBub3RpZmljYXRpb24pIHsNCisJCXVwZGF0ZUNoaWxkcmVuKG5vdGlmaWNhdGlvbik7DQorCQlzdXBlci5ub3RpZnlDaGFuZ2VkKG5vdGlmaWNhdGlvbik7DQorCX0NCisNCisJLyoqDQorCSAqIFRoaXMgYWRkcyB7QGxpbmsgb3JnLmVjbGlwc2UuZW1mLmVkaXQuY29tbWFuZC5Db21tYW5kUGFyYW1ldGVyfXMgZGVzY3JpYmluZyB0aGUgY2hpbGRyZW4NCisJICogdGhhdCBjYW4gYmUgY3JlYXRlZCB1bmRlciB0aGlzIG9iamVjdC4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwcm90ZWN0ZWQgdm9pZCBjb2xsZWN0TmV3Q2hpbGREZXNjcmlwdG9ycyhDb2xsZWN0aW9uPE9iamVjdD4gbmV3Q2hpbGREZXNjcmlwdG9ycywgT2JqZWN0IG9iamVjdCkgew0KKwkJc3VwZXIuY29sbGVjdE5ld0NoaWxkRGVzY3JpcHRvcnMobmV3Q2hpbGREZXNjcmlwdG9ycywgb2JqZWN0KTsNCisJfQ0KKw0KK30NCmRpZmYgLS1naXQgYS9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5lZGl0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L2Jsb2Nrcy9wcm92aWRlci9QYXJ0aWNpcGFudFByb3BlcnR5SXRlbVByb3ZpZGVyLmphdmEgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5lZGl0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L2Jsb2Nrcy9wcm92aWRlci9QYXJ0aWNpcGFudFByb3BlcnR5SXRlbVByb3ZpZGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2YyZmMyOQotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmVkaXQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvYmxvY2tzL3Byb3ZpZGVyL1BhcnRpY2lwYW50UHJvcGVydHlJdGVtUHJvdmlkZXIuamF2YQpAQCAtMCwwICsxLDE3NiBAQAorLyoqDQorICogQ29weXJpZ2h0IChjKSAyMDE1IENFQSBMSVNULg0KKyAqIA0KKyAqICBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQorICogIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KKyAqICB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KKyAqICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqLw0KK3BhY2thZ2Ugb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmJsb2Nrcy5wcm92aWRlcjsNCisNCisNCitpbXBvcnQgamF2YS51dGlsLkNvbGxlY3Rpb247DQoraW1wb3J0IGphdmEudXRpbC5MaXN0Ow0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY29tbW9uLm5vdGlmeS5BZGFwdGVyRmFjdG9yeTsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi5ub3RpZnkuTm90aWZpY2F0aW9uOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY29tbW9uLnV0aWwuUmVzb3VyY2VMb2NhdG9yOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWRpdC5wcm92aWRlci5Db21wb3NlYWJsZUFkYXB0ZXJGYWN0b3J5Ow0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWRpdC5wcm92aWRlci5JRWRpdGluZ0RvbWFpbkl0ZW1Qcm92aWRlcjsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVkaXQucHJvdmlkZXIuSUl0ZW1MYWJlbFByb3ZpZGVyOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWRpdC5wcm92aWRlci5JSXRlbVByb3BlcnR5RGVzY3JpcHRvcjsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVkaXQucHJvdmlkZXIuSUl0ZW1Qcm9wZXJ0eVNvdXJjZTsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVkaXQucHJvdmlkZXIuSVN0cnVjdHVyZWRJdGVtQ29udGVudFByb3ZpZGVyOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWRpdC5wcm92aWRlci5JVHJlZUl0ZW1Db250ZW50UHJvdmlkZXI7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lZGl0LnByb3ZpZGVyLkl0ZW1Qcm92aWRlckFkYXB0ZXI7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5ibG9ja3MuQmxvY2tzUGFja2FnZTsNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnByb3ZpZGVyLlN5c21sRWRpdFBsdWdpbjsNCisNCisvKioNCisgKiBUaGlzIGlzIHRoZSBpdGVtIHByb3ZpZGVyIGFkYXB0ZXIgZm9yIGEge0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5ibG9ja3MuUGFydGljaXBhbnRQcm9wZXJ0eX0gb2JqZWN0Lg0KKyAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorICogQGdlbmVyYXRlZA0KKyAqLw0KK3B1YmxpYyBjbGFzcyBQYXJ0aWNpcGFudFByb3BlcnR5SXRlbVByb3ZpZGVyIA0KKwlleHRlbmRzIEl0ZW1Qcm92aWRlckFkYXB0ZXINCisJaW1wbGVtZW50cw0KKwkJSUVkaXRpbmdEb21haW5JdGVtUHJvdmlkZXIsDQorCQlJU3RydWN0dXJlZEl0ZW1Db250ZW50UHJvdmlkZXIsDQorCQlJVHJlZUl0ZW1Db250ZW50UHJvdmlkZXIsDQorCQlJSXRlbUxhYmVsUHJvdmlkZXIsDQorCQlJSXRlbVByb3BlcnR5U291cmNlIHsNCisJLyoqDQorCSAqIFRoaXMgY29uc3RydWN0cyBhbiBpbnN0YW5jZSBmcm9tIGEgZmFjdG9yeSBhbmQgYSBub3RpZmllci4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBQYXJ0aWNpcGFudFByb3BlcnR5SXRlbVByb3ZpZGVyKEFkYXB0ZXJGYWN0b3J5IGFkYXB0ZXJGYWN0b3J5KSB7DQorCQlzdXBlcihhZGFwdGVyRmFjdG9yeSk7DQorCX0NCisNCisJLyoqDQorCSAqIFRoaXMgcmV0dXJucyB0aGUgcHJvcGVydHkgZGVzY3JpcHRvcnMgZm9yIHRoZSBhZGFwdGVkIGNsYXNzLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXB1YmxpYyBMaXN0PElJdGVtUHJvcGVydHlEZXNjcmlwdG9yPiBnZXRQcm9wZXJ0eURlc2NyaXB0b3JzKE9iamVjdCBvYmplY3QpIHsNCisJCWlmIChpdGVtUHJvcGVydHlEZXNjcmlwdG9ycyA9PSBudWxsKSB7DQorCQkJc3VwZXIuZ2V0UHJvcGVydHlEZXNjcmlwdG9ycyhvYmplY3QpOw0KKw0KKwkJCWFkZEJhc2VfUHJvcGVydHlQcm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0KTsNCisJCQlhZGRFbmRQcm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0KTsNCisJCX0NCisJCXJldHVybiBpdGVtUHJvcGVydHlEZXNjcmlwdG9yczsNCisJfQ0KKw0KKwkvKioNCisJICogVGhpcyBhZGRzIGEgcHJvcGVydHkgZGVzY3JpcHRvciBmb3IgdGhlIEJhc2UgUHJvcGVydHkgZmVhdHVyZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXByb3RlY3RlZCB2b2lkIGFkZEJhc2VfUHJvcGVydHlQcm9wZXJ0eURlc2NyaXB0b3IoT2JqZWN0IG9iamVjdCkgew0KKwkJaXRlbVByb3BlcnR5RGVzY3JpcHRvcnMuYWRkDQorCQkJKGNyZWF0ZUl0ZW1Qcm9wZXJ0eURlc2NyaXB0b3INCisJCQkJKCgoQ29tcG9zZWFibGVBZGFwdGVyRmFjdG9yeSlhZGFwdGVyRmFjdG9yeSkuZ2V0Um9vdEFkYXB0ZXJGYWN0b3J5KCksDQorCQkJCSBnZXRSZXNvdXJjZUxvY2F0b3IoKSwNCisJCQkJIGdldFN0cmluZygiX1VJX1BhcnRpY2lwYW50UHJvcGVydHlfYmFzZV9Qcm9wZXJ0eV9mZWF0dXJlIiksIC8vJE5PTi1OTFMtMSQNCisJCQkJIGdldFN0cmluZygiX1VJX1Byb3BlcnR5RGVzY3JpcHRvcl9kZXNjcmlwdGlvbiIsICJfVUlfUGFydGljaXBhbnRQcm9wZXJ0eV9iYXNlX1Byb3BlcnR5X2ZlYXR1cmUiLCAiX1VJX1BhcnRpY2lwYW50UHJvcGVydHlfdHlwZSIpLCAvLyROT04tTkxTLTEkIC8vJE5PTi1OTFMtMiQgLy8kTk9OLU5MUy0zJA0KKwkJCQkgQmxvY2tzUGFja2FnZS5MaXRlcmFscy5QQVJUSUNJUEFOVF9QUk9QRVJUWV9fQkFTRV9QUk9QRVJUWSwNCisJCQkJIHRydWUsDQorCQkJCSBmYWxzZSwNCisJCQkJIHRydWUsDQorCQkJCSBudWxsLA0KKwkJCQkgbnVsbCwNCisJCQkJIG51bGwpKTsNCisJfQ0KKw0KKwkvKioNCisJICogVGhpcyBhZGRzIGEgcHJvcGVydHkgZGVzY3JpcHRvciBmb3IgdGhlIEVuZCBmZWF0dXJlLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHJvdGVjdGVkIHZvaWQgYWRkRW5kUHJvcGVydHlEZXNjcmlwdG9yKE9iamVjdCBvYmplY3QpIHsNCisJCWl0ZW1Qcm9wZXJ0eURlc2NyaXB0b3JzLmFkZA0KKwkJCShjcmVhdGVJdGVtUHJvcGVydHlEZXNjcmlwdG9yDQorCQkJCSgoKENvbXBvc2VhYmxlQWRhcHRlckZhY3RvcnkpYWRhcHRlckZhY3RvcnkpLmdldFJvb3RBZGFwdGVyRmFjdG9yeSgpLA0KKwkJCQkgZ2V0UmVzb3VyY2VMb2NhdG9yKCksDQorCQkJCSBnZXRTdHJpbmcoIl9VSV9QYXJ0aWNpcGFudFByb3BlcnR5X2VuZF9mZWF0dXJlIiksIC8vJE5PTi1OTFMtMSQNCisJCQkJIGdldFN0cmluZygiX1VJX1Byb3BlcnR5RGVzY3JpcHRvcl9kZXNjcmlwdGlvbiIsICJfVUlfUGFydGljaXBhbnRQcm9wZXJ0eV9lbmRfZmVhdHVyZSIsICJfVUlfUGFydGljaXBhbnRQcm9wZXJ0eV90eXBlIiksIC8vJE5PTi1OTFMtMSQgLy8kTk9OLU5MUy0yJCAvLyROT04tTkxTLTMkDQorCQkJCSBCbG9ja3NQYWNrYWdlLkxpdGVyYWxzLlBBUlRJQ0lQQU5UX1BST1BFUlRZX19FTkQsDQorCQkJCSB0cnVlLA0KKwkJCQkgZmFsc2UsDQorCQkJCSB0cnVlLA0KKwkJCQkgbnVsbCwNCisJCQkJIG51bGwsDQorCQkJCSBudWxsKSk7DQorCX0NCisNCisJLyoqDQorCSAqIFRoaXMgcmV0dXJucyBQYXJ0aWNpcGFudFByb3BlcnR5LmdpZi4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgT2JqZWN0IGdldEltYWdlKE9iamVjdCBvYmplY3QpIHsNCisJCXJldHVybiBvdmVybGF5SW1hZ2Uob2JqZWN0LCBnZXRSZXNvdXJjZUxvY2F0b3IoKS5nZXRJbWFnZSgiZnVsbC9vYmoxNi9QYXJ0aWNpcGFudFByb3BlcnR5IikpOyAvLyROT04tTkxTLTEkDQorCX0NCisNCisJLyoqDQorCSAqIFRoaXMgcmV0dXJucyB0aGUgbGFiZWwgdGV4dCBmb3IgdGhlIGFkYXB0ZWQgY2xhc3MuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIFN0cmluZyBnZXRUZXh0KE9iamVjdCBvYmplY3QpIHsNCisJCXJldHVybiBnZXRTdHJpbmcoIl9VSV9QYXJ0aWNpcGFudFByb3BlcnR5X3R5cGUiKTsgLy8kTk9OLU5MUy0xJA0KKwl9DQorCQ0KKw0KKwkvKioNCisJICogVGhpcyBoYW5kbGVzIG1vZGVsIG5vdGlmaWNhdGlvbnMgYnkgY2FsbGluZyB7QGxpbmsgI3VwZGF0ZUNoaWxkcmVufSB0byB1cGRhdGUgYW55IGNhY2hlZA0KKwkgKiBjaGlsZHJlbiBhbmQgYnkgY3JlYXRpbmcgYSB2aWV3ZXIgbm90aWZpY2F0aW9uLCB3aGljaCBpdCBwYXNzZXMgdG8ge0BsaW5rICNmaXJlTm90aWZ5Q2hhbmdlZH0uDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIHZvaWQgbm90aWZ5Q2hhbmdlZChOb3RpZmljYXRpb24gbm90aWZpY2F0aW9uKSB7DQorCQl1cGRhdGVDaGlsZHJlbihub3RpZmljYXRpb24pOw0KKwkJc3VwZXIubm90aWZ5Q2hhbmdlZChub3RpZmljYXRpb24pOw0KKwl9DQorDQorCS8qKg0KKwkgKiBUaGlzIGFkZHMge0BsaW5rIG9yZy5lY2xpcHNlLmVtZi5lZGl0LmNvbW1hbmQuQ29tbWFuZFBhcmFtZXRlcn1zIGRlc2NyaWJpbmcgdGhlIGNoaWxkcmVuDQorCSAqIHRoYXQgY2FuIGJlIGNyZWF0ZWQgdW5kZXIgdGhpcyBvYmplY3QuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHJvdGVjdGVkIHZvaWQgY29sbGVjdE5ld0NoaWxkRGVzY3JpcHRvcnMoQ29sbGVjdGlvbjxPYmplY3Q+IG5ld0NoaWxkRGVzY3JpcHRvcnMsIE9iamVjdCBvYmplY3QpIHsNCisJCXN1cGVyLmNvbGxlY3ROZXdDaGlsZERlc2NyaXB0b3JzKG5ld0NoaWxkRGVzY3JpcHRvcnMsIG9iamVjdCk7DQorCX0NCisNCisJLyoqDQorCSAqIFJldHVybiB0aGUgcmVzb3VyY2UgbG9jYXRvciBmb3IgdGhpcyBpdGVtIHByb3ZpZGVyJ3MgcmVzb3VyY2VzLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXB1YmxpYyBSZXNvdXJjZUxvY2F0b3IgZ2V0UmVzb3VyY2VMb2NhdG9yKCkgew0KKwkJcmV0dXJuIFN5c21sRWRpdFBsdWdpbi5JTlNUQU5DRTsNCisJfQ0KKw0KK30NCmRpZmYgLS1naXQgYS9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5lZGl0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L2Jsb2Nrcy9wcm92aWRlci9Qcm9wZXJ0eVNwZWNpZmljVHlwZUl0ZW1Qcm92aWRlci5qYXZhIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZWRpdC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9ibG9ja3MvcHJvdmlkZXIvUHJvcGVydHlTcGVjaWZpY1R5cGVJdGVtUHJvdmlkZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45OGUyOGI2Ci0tLSAvZGV2L251bGwKKysrIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZWRpdC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9ibG9ja3MvcHJvdmlkZXIvUHJvcGVydHlTcGVjaWZpY1R5cGVJdGVtUHJvdmlkZXIuamF2YQpAQCAtMCwwICsxLDE1MyBAQAorLyoqDQorICogQ29weXJpZ2h0IChjKSAyMDE1IENFQSBMSVNULg0KKyAqIA0KKyAqICBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQorICogIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KKyAqICB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KKyAqICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqLw0KK3BhY2thZ2Ugb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmJsb2Nrcy5wcm92aWRlcjsNCisNCisNCitpbXBvcnQgamF2YS51dGlsLkNvbGxlY3Rpb247DQoraW1wb3J0IGphdmEudXRpbC5MaXN0Ow0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY29tbW9uLm5vdGlmeS5BZGFwdGVyRmFjdG9yeTsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi5ub3RpZnkuTm90aWZpY2F0aW9uOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY29tbW9uLnV0aWwuUmVzb3VyY2VMb2NhdG9yOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWRpdC5wcm92aWRlci5Db21wb3NlYWJsZUFkYXB0ZXJGYWN0b3J5Ow0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWRpdC5wcm92aWRlci5JRWRpdGluZ0RvbWFpbkl0ZW1Qcm92aWRlcjsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVkaXQucHJvdmlkZXIuSUl0ZW1MYWJlbFByb3ZpZGVyOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWRpdC5wcm92aWRlci5JSXRlbVByb3BlcnR5RGVzY3JpcHRvcjsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVkaXQucHJvdmlkZXIuSUl0ZW1Qcm9wZXJ0eVNvdXJjZTsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVkaXQucHJvdmlkZXIuSVN0cnVjdHVyZWRJdGVtQ29udGVudFByb3ZpZGVyOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWRpdC5wcm92aWRlci5JVHJlZUl0ZW1Db250ZW50UHJvdmlkZXI7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lZGl0LnByb3ZpZGVyLkl0ZW1Qcm92aWRlckFkYXB0ZXI7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5ibG9ja3MuQmxvY2tzUGFja2FnZTsNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnByb3ZpZGVyLlN5c21sRWRpdFBsdWdpbjsNCisNCisvKioNCisgKiBUaGlzIGlzIHRoZSBpdGVtIHByb3ZpZGVyIGFkYXB0ZXIgZm9yIGEge0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5ibG9ja3MuUHJvcGVydHlTcGVjaWZpY1R5cGV9IG9iamVjdC4NCisgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKyAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKyAqIEBnZW5lcmF0ZWQNCisgKi8NCitwdWJsaWMgY2xhc3MgUHJvcGVydHlTcGVjaWZpY1R5cGVJdGVtUHJvdmlkZXIgDQorCWV4dGVuZHMgSXRlbVByb3ZpZGVyQWRhcHRlcg0KKwlpbXBsZW1lbnRzDQorCQlJRWRpdGluZ0RvbWFpbkl0ZW1Qcm92aWRlciwNCisJCUlTdHJ1Y3R1cmVkSXRlbUNvbnRlbnRQcm92aWRlciwNCisJCUlUcmVlSXRlbUNvbnRlbnRQcm92aWRlciwNCisJCUlJdGVtTGFiZWxQcm92aWRlciwNCisJCUlJdGVtUHJvcGVydHlTb3VyY2Ugew0KKwkvKioNCisJICogVGhpcyBjb25zdHJ1Y3RzIGFuIGluc3RhbmNlIGZyb20gYSBmYWN0b3J5IGFuZCBhIG5vdGlmaWVyLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIFByb3BlcnR5U3BlY2lmaWNUeXBlSXRlbVByb3ZpZGVyKEFkYXB0ZXJGYWN0b3J5IGFkYXB0ZXJGYWN0b3J5KSB7DQorCQlzdXBlcihhZGFwdGVyRmFjdG9yeSk7DQorCX0NCisNCisJLyoqDQorCSAqIFRoaXMgcmV0dXJucyB0aGUgcHJvcGVydHkgZGVzY3JpcHRvcnMgZm9yIHRoZSBhZGFwdGVkIGNsYXNzLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXB1YmxpYyBMaXN0PElJdGVtUHJvcGVydHlEZXNjcmlwdG9yPiBnZXRQcm9wZXJ0eURlc2NyaXB0b3JzKE9iamVjdCBvYmplY3QpIHsNCisJCWlmIChpdGVtUHJvcGVydHlEZXNjcmlwdG9ycyA9PSBudWxsKSB7DQorCQkJc3VwZXIuZ2V0UHJvcGVydHlEZXNjcmlwdG9ycyhvYmplY3QpOw0KKw0KKwkJCWFkZEJhc2VfQ2xhc3NpZmllclByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QpOw0KKwkJfQ0KKwkJcmV0dXJuIGl0ZW1Qcm9wZXJ0eURlc2NyaXB0b3JzOw0KKwl9DQorDQorCS8qKg0KKwkgKiBUaGlzIGFkZHMgYSBwcm9wZXJ0eSBkZXNjcmlwdG9yIGZvciB0aGUgQmFzZSBDbGFzc2lmaWVyIGZlYXR1cmUuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwcm90ZWN0ZWQgdm9pZCBhZGRCYXNlX0NsYXNzaWZpZXJQcm9wZXJ0eURlc2NyaXB0b3IoT2JqZWN0IG9iamVjdCkgew0KKwkJaXRlbVByb3BlcnR5RGVzY3JpcHRvcnMuYWRkDQorCQkJKGNyZWF0ZUl0ZW1Qcm9wZXJ0eURlc2NyaXB0b3INCisJCQkJKCgoQ29tcG9zZWFibGVBZGFwdGVyRmFjdG9yeSlhZGFwdGVyRmFjdG9yeSkuZ2V0Um9vdEFkYXB0ZXJGYWN0b3J5KCksDQorCQkJCSBnZXRSZXNvdXJjZUxvY2F0b3IoKSwNCisJCQkJIGdldFN0cmluZygiX1VJX1Byb3BlcnR5U3BlY2lmaWNUeXBlX2Jhc2VfQ2xhc3NpZmllcl9mZWF0dXJlIiksIC8vJE5PTi1OTFMtMSQNCisJCQkJIGdldFN0cmluZygiX1VJX1Byb3BlcnR5RGVzY3JpcHRvcl9kZXNjcmlwdGlvbiIsICJfVUlfUHJvcGVydHlTcGVjaWZpY1R5cGVfYmFzZV9DbGFzc2lmaWVyX2ZlYXR1cmUiLCAiX1VJX1Byb3BlcnR5U3BlY2lmaWNUeXBlX3R5cGUiKSwgLy8kTk9OLU5MUy0xJCAvLyROT04tTkxTLTIkIC8vJE5PTi1OTFMtMyQNCisJCQkJIEJsb2Nrc1BhY2thZ2UuTGl0ZXJhbHMuUFJPUEVSVFlfU1BFQ0lGSUNfVFlQRV9fQkFTRV9DTEFTU0lGSUVSLA0KKwkJCQkgdHJ1ZSwNCisJCQkJIGZhbHNlLA0KKwkJCQkgdHJ1ZSwNCisJCQkJIG51bGwsDQorCQkJCSBudWxsLA0KKwkJCQkgbnVsbCkpOw0KKwl9DQorDQorCS8qKg0KKwkgKiBUaGlzIHJldHVybnMgUHJvcGVydHlTcGVjaWZpY1R5cGUuZ2lmLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXB1YmxpYyBPYmplY3QgZ2V0SW1hZ2UoT2JqZWN0IG9iamVjdCkgew0KKwkJcmV0dXJuIG92ZXJsYXlJbWFnZShvYmplY3QsIGdldFJlc291cmNlTG9jYXRvcigpLmdldEltYWdlKCJmdWxsL29iajE2L1Byb3BlcnR5U3BlY2lmaWNUeXBlIikpOyAvLyROT04tTkxTLTEkDQorCX0NCisNCisJLyoqDQorCSAqIFRoaXMgcmV0dXJucyB0aGUgbGFiZWwgdGV4dCBmb3IgdGhlIGFkYXB0ZWQgY2xhc3MuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIFN0cmluZyBnZXRUZXh0KE9iamVjdCBvYmplY3QpIHsNCisJCXJldHVybiBnZXRTdHJpbmcoIl9VSV9Qcm9wZXJ0eVNwZWNpZmljVHlwZV90eXBlIik7IC8vJE5PTi1OTFMtMSQNCisJfQ0KKwkNCisNCisJLyoqDQorCSAqIFRoaXMgaGFuZGxlcyBtb2RlbCBub3RpZmljYXRpb25zIGJ5IGNhbGxpbmcge0BsaW5rICN1cGRhdGVDaGlsZHJlbn0gdG8gdXBkYXRlIGFueSBjYWNoZWQNCisJICogY2hpbGRyZW4gYW5kIGJ5IGNyZWF0aW5nIGEgdmlld2VyIG5vdGlmaWNhdGlvbiwgd2hpY2ggaXQgcGFzc2VzIHRvIHtAbGluayAjZmlyZU5vdGlmeUNoYW5nZWR9Lg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXB1YmxpYyB2b2lkIG5vdGlmeUNoYW5nZWQoTm90aWZpY2F0aW9uIG5vdGlmaWNhdGlvbikgew0KKwkJdXBkYXRlQ2hpbGRyZW4obm90aWZpY2F0aW9uKTsNCisJCXN1cGVyLm5vdGlmeUNoYW5nZWQobm90aWZpY2F0aW9uKTsNCisJfQ0KKw0KKwkvKioNCisJICogVGhpcyBhZGRzIHtAbGluayBvcmcuZWNsaXBzZS5lbWYuZWRpdC5jb21tYW5kLkNvbW1hbmRQYXJhbWV0ZXJ9cyBkZXNjcmliaW5nIHRoZSBjaGlsZHJlbg0KKwkgKiB0aGF0IGNhbiBiZSBjcmVhdGVkIHVuZGVyIHRoaXMgb2JqZWN0Lg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXByb3RlY3RlZCB2b2lkIGNvbGxlY3ROZXdDaGlsZERlc2NyaXB0b3JzKENvbGxlY3Rpb248T2JqZWN0PiBuZXdDaGlsZERlc2NyaXB0b3JzLCBPYmplY3Qgb2JqZWN0KSB7DQorCQlzdXBlci5jb2xsZWN0TmV3Q2hpbGREZXNjcmlwdG9ycyhuZXdDaGlsZERlc2NyaXB0b3JzLCBvYmplY3QpOw0KKwl9DQorDQorCS8qKg0KKwkgKiBSZXR1cm4gdGhlIHJlc291cmNlIGxvY2F0b3IgZm9yIHRoaXMgaXRlbSBwcm92aWRlcidzIHJlc291cmNlcy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgUmVzb3VyY2VMb2NhdG9yIGdldFJlc291cmNlTG9jYXRvcigpIHsNCisJCXJldHVybiBTeXNtbEVkaXRQbHVnaW4uSU5TVEFOQ0U7DQorCX0NCisNCit9DQpkaWZmIC0tZ2l0IGEvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZWRpdC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9ibG9ja3MvcHJvdmlkZXIvU3lzTUxFZGl0UGx1Z2luLmphdmEgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5lZGl0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L2Jsb2Nrcy9wcm92aWRlci9TeXNNTEVkaXRQbHVnaW4uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNWJhOTZkCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZWRpdC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9ibG9ja3MvcHJvdmlkZXIvU3lzTUxFZGl0UGx1Z2luLmphdmEKQEAgLTAsMCArMSwxMDEgQEAKKy8qKg0KKyAqIENvcHlyaWdodCAoYykgMjAxNSBDRUEgTElTVC4NCisgKiANCisgKiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KKyAqICBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCisgKiAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCisgKiAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgKi8NCitwYWNrYWdlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5ibG9ja3MucHJvdmlkZXI7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jb21tb24uRU1GUGx1Z2luOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY29tbW9uLnV0aWwuUmVzb3VyY2VMb2NhdG9yOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUucHJvdmlkZXIuRWNvcmVFZGl0UGx1Z2luOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS51bWwyLnVtbC5lZGl0LlVNTEVkaXRQbHVnaW47DQorDQorLyoqDQorICogVGhpcyBpcyB0aGUgY2VudHJhbCBzaW5nbGV0b24gZm9yIHRoZSBTeXNNTCBlZGl0IHBsdWdpbi4NCisgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKyAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKyAqIEBnZW5lcmF0ZWQNCisgKi8NCitwdWJsaWMgZmluYWwgY2xhc3MgU3lzTUxFZGl0UGx1Z2luIGV4dGVuZHMgRU1GUGx1Z2luIHsNCisJLyoqDQorCSAqIEtlZXAgdHJhY2sgb2YgdGhlIHNpbmdsZXRvbi4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBzdGF0aWMgZmluYWwgU3lzTUxFZGl0UGx1Z2luIElOU1RBTkNFID0gbmV3IFN5c01MRWRpdFBsdWdpbigpOw0KKw0KKwkvKioNCisJICogS2VlcCB0cmFjayBvZiB0aGUgc2luZ2xldG9uLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHJpdmF0ZSBzdGF0aWMgSW1wbGVtZW50YXRpb24gcGx1Z2luOw0KKw0KKwkvKioNCisJICogQ3JlYXRlIHRoZSBpbnN0YW5jZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBTeXNNTEVkaXRQbHVnaW4oKSB7DQorCQlzdXBlcg0KKwkJICAobmV3IFJlc291cmNlTG9jYXRvciBbXSB7DQorCQkgICAgIEVjb3JlRWRpdFBsdWdpbi5JTlNUQU5DRSwNCisJCSAgICAgVU1MRWRpdFBsdWdpbi5JTlNUQU5DRSwNCisJCSAgIH0pOw0KKwl9DQorDQorCS8qKg0KKwkgKiBSZXR1cm5zIHRoZSBzaW5nbGV0b24gaW5zdGFuY2Ugb2YgdGhlIEVjbGlwc2UgcGx1Z2luLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHJldHVybiB0aGUgc2luZ2xldG9uIGluc3RhbmNlLg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIFJlc291cmNlTG9jYXRvciBnZXRQbHVnaW5SZXNvdXJjZUxvY2F0b3IoKSB7DQorCQlyZXR1cm4gcGx1Z2luOw0KKwl9DQorDQorCS8qKg0KKwkgKiBSZXR1cm5zIHRoZSBzaW5nbGV0b24gaW5zdGFuY2Ugb2YgdGhlIEVjbGlwc2UgcGx1Z2luLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHJldHVybiB0aGUgc2luZ2xldG9uIGluc3RhbmNlLg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgc3RhdGljIEltcGxlbWVudGF0aW9uIGdldFBsdWdpbigpIHsNCisJCXJldHVybiBwbHVnaW47DQorCX0NCisNCisJLyoqDQorCSAqIFRoZSBhY3R1YWwgaW1wbGVtZW50YXRpb24gb2YgdGhlIEVjbGlwc2UgPGI+UGx1Z2luPC9iPi4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBzdGF0aWMgY2xhc3MgSW1wbGVtZW50YXRpb24gZXh0ZW5kcyBFY2xpcHNlUGx1Z2luIHsNCisJCS8qKg0KKwkJICogQ3JlYXRlcyBhbiBpbnN0YW5jZS4NCisJCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJCSAqIEBnZW5lcmF0ZWQNCisJCSAqLw0KKwkJcHVibGljIEltcGxlbWVudGF0aW9uKCkgew0KKwkJCXN1cGVyKCk7DQorDQorCQkJLy8gUmVtZW1iZXIgdGhlIHN0YXRpYyBpbnN0YW5jZS4NCisJCQkvLw0KKwkJCXBsdWdpbiA9IHRoaXM7DQorCQl9DQorCX0NCisNCit9DQpkaWZmIC0tZ2l0IGEvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZWRpdC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9ibG9ja3MvcHJvdmlkZXIvVmFsdWVUeXBlSXRlbVByb3ZpZGVyLmphdmEgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5lZGl0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L2Jsb2Nrcy9wcm92aWRlci9WYWx1ZVR5cGVJdGVtUHJvdmlkZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZmRkMDc4Ci0tLSAvZGV2L251bGwKKysrIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZWRpdC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9ibG9ja3MvcHJvdmlkZXIvVmFsdWVUeXBlSXRlbVByb3ZpZGVyLmphdmEKQEAgLTAsMCArMSwxOTkgQEAKKy8qKg0KKyAqIENvcHlyaWdodCAoYykgMjAxNSBDRUEgTElTVC4NCisgKiANCisgKiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KKyAqICBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCisgKiAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCisgKiAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgKi8NCitwYWNrYWdlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5ibG9ja3MucHJvdmlkZXI7DQorDQorDQoraW1wb3J0IGphdmEudXRpbC5Db2xsZWN0aW9uOw0KK2ltcG9ydCBqYXZhLnV0aWwuTGlzdDsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi5ub3RpZnkuQWRhcHRlckZhY3Rvcnk7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jb21tb24ubm90aWZ5Lk5vdGlmaWNhdGlvbjsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi51dGlsLlJlc291cmNlTG9jYXRvcjsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVkaXQucHJvdmlkZXIuQ29tcG9zZWFibGVBZGFwdGVyRmFjdG9yeTsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVkaXQucHJvdmlkZXIuSUVkaXRpbmdEb21haW5JdGVtUHJvdmlkZXI7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lZGl0LnByb3ZpZGVyLklJdGVtTGFiZWxQcm92aWRlcjsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVkaXQucHJvdmlkZXIuSUl0ZW1Qcm9wZXJ0eURlc2NyaXB0b3I7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lZGl0LnByb3ZpZGVyLklJdGVtUHJvcGVydHlTb3VyY2U7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lZGl0LnByb3ZpZGVyLklTdHJ1Y3R1cmVkSXRlbUNvbnRlbnRQcm92aWRlcjsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVkaXQucHJvdmlkZXIuSVRyZWVJdGVtQ29udGVudFByb3ZpZGVyOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWRpdC5wcm92aWRlci5JdGVtUHJvdmlkZXJBZGFwdGVyOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYmxvY2tzLkJsb2Nrc1BhY2thZ2U7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5wcm92aWRlci5TeXNtbEVkaXRQbHVnaW47DQorDQorLyoqDQorICogVGhpcyBpcyB0aGUgaXRlbSBwcm92aWRlciBhZGFwdGVyIGZvciBhIHtAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYmxvY2tzLlZhbHVlVHlwZX0gb2JqZWN0Lg0KKyAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorICogQGdlbmVyYXRlZA0KKyAqLw0KK3B1YmxpYyBjbGFzcyBWYWx1ZVR5cGVJdGVtUHJvdmlkZXIgDQorCWV4dGVuZHMgSXRlbVByb3ZpZGVyQWRhcHRlcg0KKwlpbXBsZW1lbnRzDQorCQlJRWRpdGluZ0RvbWFpbkl0ZW1Qcm92aWRlciwNCisJCUlTdHJ1Y3R1cmVkSXRlbUNvbnRlbnRQcm92aWRlciwNCisJCUlUcmVlSXRlbUNvbnRlbnRQcm92aWRlciwNCisJCUlJdGVtTGFiZWxQcm92aWRlciwNCisJCUlJdGVtUHJvcGVydHlTb3VyY2Ugew0KKwkvKioNCisJICogVGhpcyBjb25zdHJ1Y3RzIGFuIGluc3RhbmNlIGZyb20gYSBmYWN0b3J5IGFuZCBhIG5vdGlmaWVyLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIFZhbHVlVHlwZUl0ZW1Qcm92aWRlcihBZGFwdGVyRmFjdG9yeSBhZGFwdGVyRmFjdG9yeSkgew0KKwkJc3VwZXIoYWRhcHRlckZhY3RvcnkpOw0KKwl9DQorDQorCS8qKg0KKwkgKiBUaGlzIHJldHVybnMgdGhlIHByb3BlcnR5IGRlc2NyaXB0b3JzIGZvciB0aGUgYWRhcHRlZCBjbGFzcy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgTGlzdDxJSXRlbVByb3BlcnR5RGVzY3JpcHRvcj4gZ2V0UHJvcGVydHlEZXNjcmlwdG9ycyhPYmplY3Qgb2JqZWN0KSB7DQorCQlpZiAoaXRlbVByb3BlcnR5RGVzY3JpcHRvcnMgPT0gbnVsbCkgew0KKwkJCXN1cGVyLmdldFByb3BlcnR5RGVzY3JpcHRvcnMob2JqZWN0KTsNCisNCisJCQlhZGRCYXNlX0RhdGFUeXBlUHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCk7DQorCQkJYWRkVW5pdFByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QpOw0KKwkJCWFkZFF1YW50aXR5S2luZFByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QpOw0KKwkJfQ0KKwkJcmV0dXJuIGl0ZW1Qcm9wZXJ0eURlc2NyaXB0b3JzOw0KKwl9DQorDQorCS8qKg0KKwkgKiBUaGlzIGFkZHMgYSBwcm9wZXJ0eSBkZXNjcmlwdG9yIGZvciB0aGUgQmFzZSBEYXRhIFR5cGUgZmVhdHVyZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXByb3RlY3RlZCB2b2lkIGFkZEJhc2VfRGF0YVR5cGVQcm9wZXJ0eURlc2NyaXB0b3IoT2JqZWN0IG9iamVjdCkgew0KKwkJaXRlbVByb3BlcnR5RGVzY3JpcHRvcnMuYWRkDQorCQkJKGNyZWF0ZUl0ZW1Qcm9wZXJ0eURlc2NyaXB0b3INCisJCQkJKCgoQ29tcG9zZWFibGVBZGFwdGVyRmFjdG9yeSlhZGFwdGVyRmFjdG9yeSkuZ2V0Um9vdEFkYXB0ZXJGYWN0b3J5KCksDQorCQkJCSBnZXRSZXNvdXJjZUxvY2F0b3IoKSwNCisJCQkJIGdldFN0cmluZygiX1VJX1ZhbHVlVHlwZV9iYXNlX0RhdGFUeXBlX2ZlYXR1cmUiKSwgLy8kTk9OLU5MUy0xJA0KKwkJCQkgZ2V0U3RyaW5nKCJfVUlfUHJvcGVydHlEZXNjcmlwdG9yX2Rlc2NyaXB0aW9uIiwgIl9VSV9WYWx1ZVR5cGVfYmFzZV9EYXRhVHlwZV9mZWF0dXJlIiwgIl9VSV9WYWx1ZVR5cGVfdHlwZSIpLCAvLyROT04tTkxTLTEkIC8vJE5PTi1OTFMtMiQgLy8kTk9OLU5MUy0zJA0KKwkJCQkgQmxvY2tzUGFja2FnZS5MaXRlcmFscy5WQUxVRV9UWVBFX19CQVNFX0RBVEFfVFlQRSwNCisJCQkJIHRydWUsDQorCQkJCSBmYWxzZSwNCisJCQkJIHRydWUsDQorCQkJCSBudWxsLA0KKwkJCQkgbnVsbCwNCisJCQkJIG51bGwpKTsNCisJfQ0KKw0KKwkvKioNCisJICogVGhpcyBhZGRzIGEgcHJvcGVydHkgZGVzY3JpcHRvciBmb3IgdGhlIFVuaXQgZmVhdHVyZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXByb3RlY3RlZCB2b2lkIGFkZFVuaXRQcm9wZXJ0eURlc2NyaXB0b3IoT2JqZWN0IG9iamVjdCkgew0KKwkJaXRlbVByb3BlcnR5RGVzY3JpcHRvcnMuYWRkDQorCQkJKGNyZWF0ZUl0ZW1Qcm9wZXJ0eURlc2NyaXB0b3INCisJCQkJKCgoQ29tcG9zZWFibGVBZGFwdGVyRmFjdG9yeSlhZGFwdGVyRmFjdG9yeSkuZ2V0Um9vdEFkYXB0ZXJGYWN0b3J5KCksDQorCQkJCSBnZXRSZXNvdXJjZUxvY2F0b3IoKSwNCisJCQkJIGdldFN0cmluZygiX1VJX1ZhbHVlVHlwZV91bml0X2ZlYXR1cmUiKSwgLy8kTk9OLU5MUy0xJA0KKwkJCQkgZ2V0U3RyaW5nKCJfVUlfUHJvcGVydHlEZXNjcmlwdG9yX2Rlc2NyaXB0aW9uIiwgIl9VSV9WYWx1ZVR5cGVfdW5pdF9mZWF0dXJlIiwgIl9VSV9WYWx1ZVR5cGVfdHlwZSIpLCAvLyROT04tTkxTLTEkIC8vJE5PTi1OTFMtMiQgLy8kTk9OLU5MUy0zJA0KKwkJCQkgQmxvY2tzUGFja2FnZS5MaXRlcmFscy5WQUxVRV9UWVBFX19VTklULA0KKwkJCQkgdHJ1ZSwNCisJCQkJIGZhbHNlLA0KKwkJCQkgdHJ1ZSwNCisJCQkJIG51bGwsDQorCQkJCSBudWxsLA0KKwkJCQkgbnVsbCkpOw0KKwl9DQorDQorCS8qKg0KKwkgKiBUaGlzIGFkZHMgYSBwcm9wZXJ0eSBkZXNjcmlwdG9yIGZvciB0aGUgUXVhbnRpdHkgS2luZCBmZWF0dXJlLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHJvdGVjdGVkIHZvaWQgYWRkUXVhbnRpdHlLaW5kUHJvcGVydHlEZXNjcmlwdG9yKE9iamVjdCBvYmplY3QpIHsNCisJCWl0ZW1Qcm9wZXJ0eURlc2NyaXB0b3JzLmFkZA0KKwkJCShjcmVhdGVJdGVtUHJvcGVydHlEZXNjcmlwdG9yDQorCQkJCSgoKENvbXBvc2VhYmxlQWRhcHRlckZhY3RvcnkpYWRhcHRlckZhY3RvcnkpLmdldFJvb3RBZGFwdGVyRmFjdG9yeSgpLA0KKwkJCQkgZ2V0UmVzb3VyY2VMb2NhdG9yKCksDQorCQkJCSBnZXRTdHJpbmcoIl9VSV9WYWx1ZVR5cGVfcXVhbnRpdHlLaW5kX2ZlYXR1cmUiKSwgLy8kTk9OLU5MUy0xJA0KKwkJCQkgZ2V0U3RyaW5nKCJfVUlfUHJvcGVydHlEZXNjcmlwdG9yX2Rlc2NyaXB0aW9uIiwgIl9VSV9WYWx1ZVR5cGVfcXVhbnRpdHlLaW5kX2ZlYXR1cmUiLCAiX1VJX1ZhbHVlVHlwZV90eXBlIiksIC8vJE5PTi1OTFMtMSQgLy8kTk9OLU5MUy0yJCAvLyROT04tTkxTLTMkDQorCQkJCSBCbG9ja3NQYWNrYWdlLkxpdGVyYWxzLlZBTFVFX1RZUEVfX1FVQU5USVRZX0tJTkQsDQorCQkJCSB0cnVlLA0KKwkJCQkgZmFsc2UsDQorCQkJCSB0cnVlLA0KKwkJCQkgbnVsbCwNCisJCQkJIG51bGwsDQorCQkJCSBudWxsKSk7DQorCX0NCisNCisJLyoqDQorCSAqIFRoaXMgcmV0dXJucyBWYWx1ZVR5cGUuZ2lmLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXB1YmxpYyBPYmplY3QgZ2V0SW1hZ2UoT2JqZWN0IG9iamVjdCkgew0KKwkJcmV0dXJuIG92ZXJsYXlJbWFnZShvYmplY3QsIGdldFJlc291cmNlTG9jYXRvcigpLmdldEltYWdlKCJmdWxsL29iajE2L1ZhbHVlVHlwZSIpKTsgLy8kTk9OLU5MUy0xJA0KKwl9DQorDQorCS8qKg0KKwkgKiBUaGlzIHJldHVybnMgdGhlIGxhYmVsIHRleHQgZm9yIHRoZSBhZGFwdGVkIGNsYXNzLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXB1YmxpYyBTdHJpbmcgZ2V0VGV4dChPYmplY3Qgb2JqZWN0KSB7DQorCQlyZXR1cm4gZ2V0U3RyaW5nKCJfVUlfVmFsdWVUeXBlX3R5cGUiKTsgLy8kTk9OLU5MUy0xJA0KKwl9DQorCQ0KKw0KKwkvKioNCisJICogVGhpcyBoYW5kbGVzIG1vZGVsIG5vdGlmaWNhdGlvbnMgYnkgY2FsbGluZyB7QGxpbmsgI3VwZGF0ZUNoaWxkcmVufSB0byB1cGRhdGUgYW55IGNhY2hlZA0KKwkgKiBjaGlsZHJlbiBhbmQgYnkgY3JlYXRpbmcgYSB2aWV3ZXIgbm90aWZpY2F0aW9uLCB3aGljaCBpdCBwYXNzZXMgdG8ge0BsaW5rICNmaXJlTm90aWZ5Q2hhbmdlZH0uDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIHZvaWQgbm90aWZ5Q2hhbmdlZChOb3RpZmljYXRpb24gbm90aWZpY2F0aW9uKSB7DQorCQl1cGRhdGVDaGlsZHJlbihub3RpZmljYXRpb24pOw0KKwkJc3VwZXIubm90aWZ5Q2hhbmdlZChub3RpZmljYXRpb24pOw0KKwl9DQorDQorCS8qKg0KKwkgKiBUaGlzIGFkZHMge0BsaW5rIG9yZy5lY2xpcHNlLmVtZi5lZGl0LmNvbW1hbmQuQ29tbWFuZFBhcmFtZXRlcn1zIGRlc2NyaWJpbmcgdGhlIGNoaWxkcmVuDQorCSAqIHRoYXQgY2FuIGJlIGNyZWF0ZWQgdW5kZXIgdGhpcyBvYmplY3QuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHJvdGVjdGVkIHZvaWQgY29sbGVjdE5ld0NoaWxkRGVzY3JpcHRvcnMoQ29sbGVjdGlvbjxPYmplY3Q+IG5ld0NoaWxkRGVzY3JpcHRvcnMsIE9iamVjdCBvYmplY3QpIHsNCisJCXN1cGVyLmNvbGxlY3ROZXdDaGlsZERlc2NyaXB0b3JzKG5ld0NoaWxkRGVzY3JpcHRvcnMsIG9iamVjdCk7DQorCX0NCisNCisJLyoqDQorCSAqIFJldHVybiB0aGUgcmVzb3VyY2UgbG9jYXRvciBmb3IgdGhpcyBpdGVtIHByb3ZpZGVyJ3MgcmVzb3VyY2VzLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXB1YmxpYyBSZXNvdXJjZUxvY2F0b3IgZ2V0UmVzb3VyY2VMb2NhdG9yKCkgew0KKwkJcmV0dXJuIFN5c21sRWRpdFBsdWdpbi5JTlNUQU5DRTsNCisJfQ0KKw0KK30NCmRpZmYgLS1naXQgYS9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5lZGl0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L2NvbnN0cmFpbnRibG9ja3MvcHJvdmlkZXIvQ29uc3RyYWludEJsb2NrSXRlbVByb3ZpZGVyLmphdmEgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5lZGl0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L2NvbnN0cmFpbnRibG9ja3MvcHJvdmlkZXIvQ29uc3RyYWludEJsb2NrSXRlbVByb3ZpZGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDQwNDExNwotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmVkaXQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvY29uc3RyYWludGJsb2Nrcy9wcm92aWRlci9Db25zdHJhaW50QmxvY2tJdGVtUHJvdmlkZXIuamF2YQpAQCAtMCwwICsxLDExNCBAQAorLyoqDQorICogQ29weXJpZ2h0IChjKSAyMDE1IENFQSBMSVNULg0KKyAqIA0KKyAqICBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQorICogIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KKyAqICB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KKyAqICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqLw0KK3BhY2thZ2Ugb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmNvbnN0cmFpbnRibG9ja3MucHJvdmlkZXI7DQorDQorDQoraW1wb3J0IGphdmEudXRpbC5Db2xsZWN0aW9uOw0KK2ltcG9ydCBqYXZhLnV0aWwuTGlzdDsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi5ub3RpZnkuQWRhcHRlckZhY3Rvcnk7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jb21tb24ubm90aWZ5Lk5vdGlmaWNhdGlvbjsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi51dGlsLlJlc291cmNlTG9jYXRvcjsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVkaXQucHJvdmlkZXIuSUl0ZW1Qcm9wZXJ0eURlc2NyaXB0b3I7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5ibG9ja3MucHJvdmlkZXIuQmxvY2tJdGVtUHJvdmlkZXI7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5jb25zdHJhaW50YmxvY2tzLkNvbnN0cmFpbnRCbG9jazsNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnByb3ZpZGVyLlN5c21sRWRpdFBsdWdpbjsNCisNCisvKioNCisgKiBUaGlzIGlzIHRoZSBpdGVtIHByb3ZpZGVyIGFkYXB0ZXIgZm9yIGEge0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5jb25zdHJhaW50YmxvY2tzLkNvbnN0cmFpbnRCbG9ja30gb2JqZWN0Lg0KKyAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorICogQGdlbmVyYXRlZA0KKyAqLw0KK3B1YmxpYyBjbGFzcyBDb25zdHJhaW50QmxvY2tJdGVtUHJvdmlkZXIgZXh0ZW5kcyBCbG9ja0l0ZW1Qcm92aWRlciB7DQorCS8qKg0KKwkgKiBUaGlzIGNvbnN0cnVjdHMgYW4gaW5zdGFuY2UgZnJvbSBhIGZhY3RvcnkgYW5kIGEgbm90aWZpZXIuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgQ29uc3RyYWludEJsb2NrSXRlbVByb3ZpZGVyKEFkYXB0ZXJGYWN0b3J5IGFkYXB0ZXJGYWN0b3J5KSB7DQorCQlzdXBlcihhZGFwdGVyRmFjdG9yeSk7DQorCX0NCisNCisJLyoqDQorCSAqIFRoaXMgcmV0dXJucyB0aGUgcHJvcGVydHkgZGVzY3JpcHRvcnMgZm9yIHRoZSBhZGFwdGVkIGNsYXNzLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXB1YmxpYyBMaXN0PElJdGVtUHJvcGVydHlEZXNjcmlwdG9yPiBnZXRQcm9wZXJ0eURlc2NyaXB0b3JzKE9iamVjdCBvYmplY3QpIHsNCisJCWlmIChpdGVtUHJvcGVydHlEZXNjcmlwdG9ycyA9PSBudWxsKSB7DQorCQkJc3VwZXIuZ2V0UHJvcGVydHlEZXNjcmlwdG9ycyhvYmplY3QpOw0KKw0KKwkJfQ0KKwkJcmV0dXJuIGl0ZW1Qcm9wZXJ0eURlc2NyaXB0b3JzOw0KKwl9DQorDQorCS8qKg0KKwkgKiBUaGlzIHJldHVybnMgQ29uc3RyYWludEJsb2NrLmdpZi4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgT2JqZWN0IGdldEltYWdlKE9iamVjdCBvYmplY3QpIHsNCisJCXJldHVybiBvdmVybGF5SW1hZ2Uob2JqZWN0LCBnZXRSZXNvdXJjZUxvY2F0b3IoKS5nZXRJbWFnZSgiZnVsbC9vYmoxNi9Db25zdHJhaW50QmxvY2siKSk7IC8vJE5PTi1OTFMtMSQNCisJfQ0KKw0KKwkvKioNCisJICogVGhpcyByZXR1cm5zIHRoZSBsYWJlbCB0ZXh0IGZvciB0aGUgYWRhcHRlZCBjbGFzcy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgU3RyaW5nIGdldFRleHQoT2JqZWN0IG9iamVjdCkgew0KKwkJQ29uc3RyYWludEJsb2NrIGNvbnN0cmFpbnRCbG9jayA9IChDb25zdHJhaW50QmxvY2spb2JqZWN0Ow0KKwkJcmV0dXJuIGdldFN0cmluZygiX1VJX0NvbnN0cmFpbnRCbG9ja190eXBlIikgKyAiICIgKyBjb25zdHJhaW50QmxvY2suaXNFbmNhcHN1bGF0ZWQoKTsgLy8kTk9OLU5MUy0xJCAvLyROT04tTkxTLTIkDQorCX0NCisJDQorDQorCS8qKg0KKwkgKiBUaGlzIGhhbmRsZXMgbW9kZWwgbm90aWZpY2F0aW9ucyBieSBjYWxsaW5nIHtAbGluayAjdXBkYXRlQ2hpbGRyZW59IHRvIHVwZGF0ZSBhbnkgY2FjaGVkDQorCSAqIGNoaWxkcmVuIGFuZCBieSBjcmVhdGluZyBhIHZpZXdlciBub3RpZmljYXRpb24sIHdoaWNoIGl0IHBhc3NlcyB0byB7QGxpbmsgI2ZpcmVOb3RpZnlDaGFuZ2VkfS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgdm9pZCBub3RpZnlDaGFuZ2VkKE5vdGlmaWNhdGlvbiBub3RpZmljYXRpb24pIHsNCisJCXVwZGF0ZUNoaWxkcmVuKG5vdGlmaWNhdGlvbik7DQorCQlzdXBlci5ub3RpZnlDaGFuZ2VkKG5vdGlmaWNhdGlvbik7DQorCX0NCisNCisJLyoqDQorCSAqIFRoaXMgYWRkcyB7QGxpbmsgb3JnLmVjbGlwc2UuZW1mLmVkaXQuY29tbWFuZC5Db21tYW5kUGFyYW1ldGVyfXMgZGVzY3JpYmluZyB0aGUgY2hpbGRyZW4NCisJICogdGhhdCBjYW4gYmUgY3JlYXRlZCB1bmRlciB0aGlzIG9iamVjdC4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwcm90ZWN0ZWQgdm9pZCBjb2xsZWN0TmV3Q2hpbGREZXNjcmlwdG9ycyhDb2xsZWN0aW9uPE9iamVjdD4gbmV3Q2hpbGREZXNjcmlwdG9ycywgT2JqZWN0IG9iamVjdCkgew0KKwkJc3VwZXIuY29sbGVjdE5ld0NoaWxkRGVzY3JpcHRvcnMobmV3Q2hpbGREZXNjcmlwdG9ycywgb2JqZWN0KTsNCisJfQ0KKw0KKwkvKioNCisJICogUmV0dXJuIHRoZSByZXNvdXJjZSBsb2NhdG9yIGZvciB0aGlzIGl0ZW0gcHJvdmlkZXIncyByZXNvdXJjZXMuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIFJlc291cmNlTG9jYXRvciBnZXRSZXNvdXJjZUxvY2F0b3IoKSB7DQorCQlyZXR1cm4gU3lzbWxFZGl0UGx1Z2luLklOU1RBTkNFOw0KKwl9DQorDQorfQ0KZGlmZiAtLWdpdCBhL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmVkaXQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvY29uc3RyYWludGJsb2Nrcy9wcm92aWRlci9Db25zdHJhaW50YmxvY2tzSXRlbVByb3ZpZGVyQWRhcHRlckZhY3RvcnkuamF2YSBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmVkaXQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvY29uc3RyYWludGJsb2Nrcy9wcm92aWRlci9Db25zdHJhaW50YmxvY2tzSXRlbVByb3ZpZGVyQWRhcHRlckZhY3RvcnkuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MzI2ZDVlCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZWRpdC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9jb25zdHJhaW50YmxvY2tzL3Byb3ZpZGVyL0NvbnN0cmFpbnRibG9ja3NJdGVtUHJvdmlkZXJBZGFwdGVyRmFjdG9yeS5qYXZhCkBAIC0wLDAgKzEsMjA1IEBACisvKioNCisgKiBDb3B5cmlnaHQgKGMpIDIwMTUgQ0VBIExJU1QuDQorICogDQorICogIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCisgKiAgYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQorICogIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQorICogIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICovDQorcGFja2FnZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuY29uc3RyYWludGJsb2Nrcy5wcm92aWRlcjsNCisNCitpbXBvcnQgamF2YS51dGlsLkFycmF5TGlzdDsNCitpbXBvcnQgamF2YS51dGlsLkNvbGxlY3Rpb247DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jb21tb24ubm90aWZ5LkFkYXB0ZXI7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jb21tb24ubm90aWZ5Lk5vdGlmaWNhdGlvbjsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi5ub3RpZnkuTm90aWZpZXI7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lZGl0LnByb3ZpZGVyLkNoYW5nZU5vdGlmaWVyOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWRpdC5wcm92aWRlci5Db21wb3NlYWJsZUFkYXB0ZXJGYWN0b3J5Ow0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWRpdC5wcm92aWRlci5Db21wb3NlZEFkYXB0ZXJGYWN0b3J5Ow0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWRpdC5wcm92aWRlci5JQ2hhbmdlTm90aWZpZXI7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lZGl0LnByb3ZpZGVyLklEaXNwb3NhYmxlOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWRpdC5wcm92aWRlci5JRWRpdGluZ0RvbWFpbkl0ZW1Qcm92aWRlcjsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVkaXQucHJvdmlkZXIuSUl0ZW1MYWJlbFByb3ZpZGVyOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWRpdC5wcm92aWRlci5JSXRlbVByb3BlcnR5U291cmNlOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWRpdC5wcm92aWRlci5JTm90aWZ5Q2hhbmdlZExpc3RlbmVyOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWRpdC5wcm92aWRlci5JU3RydWN0dXJlZEl0ZW1Db250ZW50UHJvdmlkZXI7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lZGl0LnByb3ZpZGVyLklUcmVlSXRlbUNvbnRlbnRQcm92aWRlcjsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmNvbnN0cmFpbnRibG9ja3MudXRpbC5Db25zdHJhaW50YmxvY2tzQWRhcHRlckZhY3Rvcnk7DQorDQorLyoqDQorICogVGhpcyBpcyB0aGUgZmFjdG9yeSB0aGF0IGlzIHVzZWQgdG8gcHJvdmlkZSB0aGUgaW50ZXJmYWNlcyBuZWVkZWQgdG8gc3VwcG9ydCBWaWV3ZXJzLg0KKyAqIFRoZSBhZGFwdGVycyBnZW5lcmF0ZWQgYnkgdGhpcyBmYWN0b3J5IGNvbnZlcnQgRU1GIGFkYXB0ZXIgbm90aWZpY2F0aW9ucyBpbnRvIGNhbGxzIHRvIHtAbGluayAjZmlyZU5vdGlmeUNoYW5nZWQgZmlyZU5vdGlmeUNoYW5nZWR9Lg0KKyAqIFRoZSBhZGFwdGVycyBhbHNvIHN1cHBvcnQgRWNsaXBzZSBwcm9wZXJ0eSBzaGVldHMuDQorICogTm90ZSB0aGF0IG1vc3Qgb2YgdGhlIGFkYXB0ZXJzIGFyZSBzaGFyZWQgYW1vbmcgbXVsdGlwbGUgaW5zdGFuY2VzLg0KKyAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorICogQGdlbmVyYXRlZA0KKyAqLw0KK3B1YmxpYyBjbGFzcyBDb25zdHJhaW50YmxvY2tzSXRlbVByb3ZpZGVyQWRhcHRlckZhY3RvcnkgZXh0ZW5kcyBDb25zdHJhaW50YmxvY2tzQWRhcHRlckZhY3RvcnkgaW1wbGVtZW50cyBDb21wb3NlYWJsZUFkYXB0ZXJGYWN0b3J5LCBJQ2hhbmdlTm90aWZpZXIsIElEaXNwb3NhYmxlIHsNCisJLyoqDQorCSAqIFRoaXMga2VlcHMgdHJhY2sgb2YgdGhlIHJvb3QgYWRhcHRlciBmYWN0b3J5IHRoYXQgZGVsZWdhdGVzIHRvIHRoaXMgYWRhcHRlciBmYWN0b3J5Lg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHJvdGVjdGVkIENvbXBvc2VkQWRhcHRlckZhY3RvcnkgcGFyZW50QWRhcHRlckZhY3Rvcnk7DQorDQorCS8qKg0KKwkgKiBUaGlzIGlzIHVzZWQgdG8gaW1wbGVtZW50IHtAbGluayBvcmcuZWNsaXBzZS5lbWYuZWRpdC5wcm92aWRlci5JQ2hhbmdlTm90aWZpZXJ9Lg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHJvdGVjdGVkIElDaGFuZ2VOb3RpZmllciBjaGFuZ2VOb3RpZmllciA9IG5ldyBDaGFuZ2VOb3RpZmllcigpOw0KKw0KKwkvKioNCisJICogVGhpcyBrZWVwcyB0cmFjayBvZiBhbGwgdGhlIHN1cHBvcnRlZCB0eXBlcyBjaGVja2VkIGJ5IHtAbGluayAjaXNGYWN0b3J5Rm9yVHlwZSBpc0ZhY3RvcnlGb3JUeXBlfS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXByb3RlY3RlZCBDb2xsZWN0aW9uPE9iamVjdD4gc3VwcG9ydGVkVHlwZXMgPSBuZXcgQXJyYXlMaXN0PE9iamVjdD4oKTsNCisNCisJLyoqDQorCSAqIFRoaXMgY29uc3RydWN0cyBhbiBpbnN0YW5jZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBDb25zdHJhaW50YmxvY2tzSXRlbVByb3ZpZGVyQWRhcHRlckZhY3RvcnkoKSB7DQorCQlzdXBwb3J0ZWRUeXBlcy5hZGQoSUVkaXRpbmdEb21haW5JdGVtUHJvdmlkZXIuY2xhc3MpOw0KKwkJc3VwcG9ydGVkVHlwZXMuYWRkKElTdHJ1Y3R1cmVkSXRlbUNvbnRlbnRQcm92aWRlci5jbGFzcyk7DQorCQlzdXBwb3J0ZWRUeXBlcy5hZGQoSVRyZWVJdGVtQ29udGVudFByb3ZpZGVyLmNsYXNzKTsNCisJCXN1cHBvcnRlZFR5cGVzLmFkZChJSXRlbUxhYmVsUHJvdmlkZXIuY2xhc3MpOw0KKwkJc3VwcG9ydGVkVHlwZXMuYWRkKElJdGVtUHJvcGVydHlTb3VyY2UuY2xhc3MpOw0KKwl9DQorDQorCS8qKg0KKwkgKiBUaGlzIGtlZXBzIHRyYWNrIG9mIHRoZSBvbmUgYWRhcHRlciB1c2VkIGZvciBhbGwge0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5jb25zdHJhaW50YmxvY2tzLkNvbnN0cmFpbnRCbG9ja30gaW5zdGFuY2VzLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHJvdGVjdGVkIENvbnN0cmFpbnRCbG9ja0l0ZW1Qcm92aWRlciBjb25zdHJhaW50QmxvY2tJdGVtUHJvdmlkZXI7DQorDQorCS8qKg0KKwkgKiBUaGlzIGNyZWF0ZXMgYW4gYWRhcHRlciBmb3IgYSB7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmNvbnN0cmFpbnRibG9ja3MuQ29uc3RyYWludEJsb2NrfS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgQWRhcHRlciBjcmVhdGVDb25zdHJhaW50QmxvY2tBZGFwdGVyKCkgew0KKwkJaWYgKGNvbnN0cmFpbnRCbG9ja0l0ZW1Qcm92aWRlciA9PSBudWxsKSB7DQorCQkJY29uc3RyYWludEJsb2NrSXRlbVByb3ZpZGVyID0gbmV3IENvbnN0cmFpbnRCbG9ja0l0ZW1Qcm92aWRlcih0aGlzKTsNCisJCX0NCisNCisJCXJldHVybiBjb25zdHJhaW50QmxvY2tJdGVtUHJvdmlkZXI7DQorCX0NCisNCisJLyoqDQorCSAqIFRoaXMgcmV0dXJucyB0aGUgcm9vdCBhZGFwdGVyIGZhY3RvcnkgdGhhdCBjb250YWlucyB0aGlzIGZhY3RvcnkuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgQ29tcG9zZWFibGVBZGFwdGVyRmFjdG9yeSBnZXRSb290QWRhcHRlckZhY3RvcnkoKSB7DQorCQlyZXR1cm4gcGFyZW50QWRhcHRlckZhY3RvcnkgPT0gbnVsbCA/IHRoaXMgOiBwYXJlbnRBZGFwdGVyRmFjdG9yeS5nZXRSb290QWRhcHRlckZhY3RvcnkoKTsNCisJfQ0KKw0KKwkvKioNCisJICogVGhpcyBzZXRzIHRoZSBjb21wb3NlZCBhZGFwdGVyIGZhY3RvcnkgdGhhdCBjb250YWlucyB0aGlzIGZhY3RvcnkuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgdm9pZCBzZXRQYXJlbnRBZGFwdGVyRmFjdG9yeShDb21wb3NlZEFkYXB0ZXJGYWN0b3J5IHBhcmVudEFkYXB0ZXJGYWN0b3J5KSB7DQorCQl0aGlzLnBhcmVudEFkYXB0ZXJGYWN0b3J5ID0gcGFyZW50QWRhcHRlckZhY3Rvcnk7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIGJvb2xlYW4gaXNGYWN0b3J5Rm9yVHlwZShPYmplY3QgdHlwZSkgew0KKwkJcmV0dXJuIHN1cHBvcnRlZFR5cGVzLmNvbnRhaW5zKHR5cGUpIHx8IHN1cGVyLmlzRmFjdG9yeUZvclR5cGUodHlwZSk7DQorCX0NCisNCisJLyoqDQorCSAqIFRoaXMgaW1wbGVtZW50YXRpb24gc3Vic3RpdHV0ZXMgdGhlIGZhY3RvcnkgaXRzZWxmIGFzIHRoZSBrZXkgZm9yIHRoZSBhZGFwdGVyLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXB1YmxpYyBBZGFwdGVyIGFkYXB0KE5vdGlmaWVyIG5vdGlmaWVyLCBPYmplY3QgdHlwZSkgew0KKwkJcmV0dXJuIHN1cGVyLmFkYXB0KG5vdGlmaWVyLCB0aGlzKTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgT2JqZWN0IGFkYXB0KE9iamVjdCBvYmplY3QsIE9iamVjdCB0eXBlKSB7DQorCQlpZiAoaXNGYWN0b3J5Rm9yVHlwZSh0eXBlKSkgew0KKwkJCU9iamVjdCBhZGFwdGVyID0gc3VwZXIuYWRhcHQob2JqZWN0LCB0eXBlKTsNCisJCQlpZiAoISh0eXBlIGluc3RhbmNlb2YgQ2xhc3M8Pz4pIHx8ICgoKENsYXNzPD8+KXR5cGUpLmlzSW5zdGFuY2UoYWRhcHRlcikpKSB7DQorCQkJCXJldHVybiBhZGFwdGVyOw0KKwkJCX0NCisJCX0NCisNCisJCXJldHVybiBudWxsOw0KKwl9DQorDQorCS8qKg0KKwkgKiBUaGlzIGFkZHMgYSBsaXN0ZW5lci4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyB2b2lkIGFkZExpc3RlbmVyKElOb3RpZnlDaGFuZ2VkTGlzdGVuZXIgbm90aWZ5Q2hhbmdlZExpc3RlbmVyKSB7DQorCQljaGFuZ2VOb3RpZmllci5hZGRMaXN0ZW5lcihub3RpZnlDaGFuZ2VkTGlzdGVuZXIpOw0KKwl9DQorDQorCS8qKg0KKwkgKiBUaGlzIHJlbW92ZXMgYSBsaXN0ZW5lci4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyB2b2lkIHJlbW92ZUxpc3RlbmVyKElOb3RpZnlDaGFuZ2VkTGlzdGVuZXIgbm90aWZ5Q2hhbmdlZExpc3RlbmVyKSB7DQorCQljaGFuZ2VOb3RpZmllci5yZW1vdmVMaXN0ZW5lcihub3RpZnlDaGFuZ2VkTGlzdGVuZXIpOw0KKwl9DQorDQorCS8qKg0KKwkgKiBUaGlzIGRlbGVnYXRlcyB0byB7QGxpbmsgI2NoYW5nZU5vdGlmaWVyfSBhbmQgdG8ge0BsaW5rICNwYXJlbnRBZGFwdGVyRmFjdG9yeX0uDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgdm9pZCBmaXJlTm90aWZ5Q2hhbmdlZChOb3RpZmljYXRpb24gbm90aWZpY2F0aW9uKSB7DQorCQljaGFuZ2VOb3RpZmllci5maXJlTm90aWZ5Q2hhbmdlZChub3RpZmljYXRpb24pOw0KKw0KKwkJaWYgKHBhcmVudEFkYXB0ZXJGYWN0b3J5ICE9IG51bGwpIHsNCisJCQlwYXJlbnRBZGFwdGVyRmFjdG9yeS5maXJlTm90aWZ5Q2hhbmdlZChub3RpZmljYXRpb24pOw0KKwkJfQ0KKwl9DQorDQorCS8qKg0KKwkgKiBUaGlzIGRpc3Bvc2VzIGFsbCBvZiB0aGUgaXRlbSBwcm92aWRlcnMgY3JlYXRlZCBieSB0aGlzIGZhY3RvcnkuIA0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIHZvaWQgZGlzcG9zZSgpIHsNCisJCWlmIChjb25zdHJhaW50QmxvY2tJdGVtUHJvdmlkZXIgIT0gbnVsbCkgY29uc3RyYWludEJsb2NrSXRlbVByb3ZpZGVyLmRpc3Bvc2UoKTsNCisJfQ0KKw0KK30NCmRpZmYgLS1naXQgYS9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5lZGl0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L2RlcHJlY2F0ZWRlbGVtZW50cy9wcm92aWRlci9BbGxvY2F0ZWRJdGVtUHJvdmlkZXIuamF2YSBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmVkaXQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvZGVwcmVjYXRlZGVsZW1lbnRzL3Byb3ZpZGVyL0FsbG9jYXRlZEl0ZW1Qcm92aWRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhmNjNkZWMKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5lZGl0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L2RlcHJlY2F0ZWRlbGVtZW50cy9wcm92aWRlci9BbGxvY2F0ZWRJdGVtUHJvdmlkZXIuamF2YQpAQCAtMCwwICsxLDE5NSBAQAorLyoqDQorICogQ29weXJpZ2h0IChjKSAyMDE1IENFQSBMSVNULg0KKyAqIA0KKyAqICBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQorICogIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KKyAqICB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KKyAqICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqLw0KK3BhY2thZ2Ugb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRlcHJlY2F0ZWRlbGVtZW50cy5wcm92aWRlcjsNCisNCisNCitpbXBvcnQgamF2YS51dGlsLkNvbGxlY3Rpb247DQoraW1wb3J0IGphdmEudXRpbC5MaXN0Ow0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY29tbW9uLm5vdGlmeS5BZGFwdGVyRmFjdG9yeTsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi5ub3RpZnkuTm90aWZpY2F0aW9uOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY29tbW9uLnV0aWwuUmVzb3VyY2VMb2NhdG9yOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWRpdC5wcm92aWRlci5Db21wb3NlYWJsZUFkYXB0ZXJGYWN0b3J5Ow0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWRpdC5wcm92aWRlci5JRWRpdGluZ0RvbWFpbkl0ZW1Qcm92aWRlcjsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVkaXQucHJvdmlkZXIuSUl0ZW1MYWJlbFByb3ZpZGVyOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWRpdC5wcm92aWRlci5JSXRlbVByb3BlcnR5RGVzY3JpcHRvcjsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVkaXQucHJvdmlkZXIuSUl0ZW1Qcm9wZXJ0eVNvdXJjZTsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVkaXQucHJvdmlkZXIuSVN0cnVjdHVyZWRJdGVtQ29udGVudFByb3ZpZGVyOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWRpdC5wcm92aWRlci5JVHJlZUl0ZW1Db250ZW50UHJvdmlkZXI7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lZGl0LnByb3ZpZGVyLkl0ZW1Qcm92aWRlckFkYXB0ZXI7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kZXByZWNhdGVkZWxlbWVudHMuRGVwcmVjYXRlZGVsZW1lbnRzUGFja2FnZTsNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnByb3ZpZGVyLlN5c21sRWRpdFBsdWdpbjsNCisNCisvKioNCisgKiBUaGlzIGlzIHRoZSBpdGVtIHByb3ZpZGVyIGFkYXB0ZXIgZm9yIGEge0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kZXByZWNhdGVkZWxlbWVudHMuQWxsb2NhdGVkfSBvYmplY3QuDQorICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisgKiBAZ2VuZXJhdGVkDQorICovDQorcHVibGljIGNsYXNzIEFsbG9jYXRlZEl0ZW1Qcm92aWRlciANCisJZXh0ZW5kcyBJdGVtUHJvdmlkZXJBZGFwdGVyDQorCWltcGxlbWVudHMNCisJCUlFZGl0aW5nRG9tYWluSXRlbVByb3ZpZGVyLA0KKwkJSVN0cnVjdHVyZWRJdGVtQ29udGVudFByb3ZpZGVyLA0KKwkJSVRyZWVJdGVtQ29udGVudFByb3ZpZGVyLA0KKwkJSUl0ZW1MYWJlbFByb3ZpZGVyLA0KKwkJSUl0ZW1Qcm9wZXJ0eVNvdXJjZSB7DQorCS8qKg0KKwkgKiBUaGlzIGNvbnN0cnVjdHMgYW4gaW5zdGFuY2UgZnJvbSBhIGZhY3RvcnkgYW5kIGEgbm90aWZpZXIuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgQWxsb2NhdGVkSXRlbVByb3ZpZGVyKEFkYXB0ZXJGYWN0b3J5IGFkYXB0ZXJGYWN0b3J5KSB7DQorCQlzdXBlcihhZGFwdGVyRmFjdG9yeSk7DQorCX0NCisNCisJLyoqDQorCSAqIFRoaXMgcmV0dXJucyB0aGUgcHJvcGVydHkgZGVzY3JpcHRvcnMgZm9yIHRoZSBhZGFwdGVkIGNsYXNzLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXB1YmxpYyBMaXN0PElJdGVtUHJvcGVydHlEZXNjcmlwdG9yPiBnZXRQcm9wZXJ0eURlc2NyaXB0b3JzKE9iamVjdCBvYmplY3QpIHsNCisJCWlmIChpdGVtUHJvcGVydHlEZXNjcmlwdG9ycyA9PSBudWxsKSB7DQorCQkJc3VwZXIuZ2V0UHJvcGVydHlEZXNjcmlwdG9ycyhvYmplY3QpOw0KKw0KKwkJCWFkZEJhc2VfTmFtZWRFbGVtZW50UHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCk7DQorCQkJYWRkQWxsb2NhdGVkRnJvbVByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QpOw0KKwkJCWFkZEFsbG9jYXRlZFRvUHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCk7DQorCQl9DQorCQlyZXR1cm4gaXRlbVByb3BlcnR5RGVzY3JpcHRvcnM7DQorCX0NCisNCisJLyoqDQorCSAqIFRoaXMgYWRkcyBhIHByb3BlcnR5IGRlc2NyaXB0b3IgZm9yIHRoZSBCYXNlIE5hbWVkIEVsZW1lbnQgZmVhdHVyZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXByb3RlY3RlZCB2b2lkIGFkZEJhc2VfTmFtZWRFbGVtZW50UHJvcGVydHlEZXNjcmlwdG9yKE9iamVjdCBvYmplY3QpIHsNCisJCWl0ZW1Qcm9wZXJ0eURlc2NyaXB0b3JzLmFkZA0KKwkJCShjcmVhdGVJdGVtUHJvcGVydHlEZXNjcmlwdG9yDQorCQkJCSgoKENvbXBvc2VhYmxlQWRhcHRlckZhY3RvcnkpYWRhcHRlckZhY3RvcnkpLmdldFJvb3RBZGFwdGVyRmFjdG9yeSgpLA0KKwkJCQkgZ2V0UmVzb3VyY2VMb2NhdG9yKCksDQorCQkJCSBnZXRTdHJpbmcoIl9VSV9BbGxvY2F0ZWRfYmFzZV9OYW1lZEVsZW1lbnRfZmVhdHVyZSIpLCAvLyROT04tTkxTLTEkDQorCQkJCSBnZXRTdHJpbmcoIl9VSV9Qcm9wZXJ0eURlc2NyaXB0b3JfZGVzY3JpcHRpb24iLCAiX1VJX0FsbG9jYXRlZF9iYXNlX05hbWVkRWxlbWVudF9mZWF0dXJlIiwgIl9VSV9BbGxvY2F0ZWRfdHlwZSIpLCAvLyROT04tTkxTLTEkIC8vJE5PTi1OTFMtMiQgLy8kTk9OLU5MUy0zJA0KKwkJCQkgRGVwcmVjYXRlZGVsZW1lbnRzUGFja2FnZS5MaXRlcmFscy5BTExPQ0FURURfX0JBU0VfTkFNRURfRUxFTUVOVCwNCisJCQkJIHRydWUsDQorCQkJCSBmYWxzZSwNCisJCQkJIHRydWUsDQorCQkJCSBudWxsLA0KKwkJCQkgbnVsbCwNCisJCQkJIG51bGwpKTsNCisJfQ0KKw0KKwkvKioNCisJICogVGhpcyBhZGRzIGEgcHJvcGVydHkgZGVzY3JpcHRvciBmb3IgdGhlIEFsbG9jYXRlZCBGcm9tIGZlYXR1cmUuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwcm90ZWN0ZWQgdm9pZCBhZGRBbGxvY2F0ZWRGcm9tUHJvcGVydHlEZXNjcmlwdG9yKE9iamVjdCBvYmplY3QpIHsNCisJCWl0ZW1Qcm9wZXJ0eURlc2NyaXB0b3JzLmFkZA0KKwkJCShjcmVhdGVJdGVtUHJvcGVydHlEZXNjcmlwdG9yDQorCQkJCSgoKENvbXBvc2VhYmxlQWRhcHRlckZhY3RvcnkpYWRhcHRlckZhY3RvcnkpLmdldFJvb3RBZGFwdGVyRmFjdG9yeSgpLA0KKwkJCQkgZ2V0UmVzb3VyY2VMb2NhdG9yKCksDQorCQkJCSBnZXRTdHJpbmcoIl9VSV9BbGxvY2F0ZWRfYWxsb2NhdGVkRnJvbV9mZWF0dXJlIiksIC8vJE5PTi1OTFMtMSQNCisJCQkJIGdldFN0cmluZygiX1VJX1Byb3BlcnR5RGVzY3JpcHRvcl9kZXNjcmlwdGlvbiIsICJfVUlfQWxsb2NhdGVkX2FsbG9jYXRlZEZyb21fZmVhdHVyZSIsICJfVUlfQWxsb2NhdGVkX3R5cGUiKSwgLy8kTk9OLU5MUy0xJCAvLyROT04tTkxTLTIkIC8vJE5PTi1OTFMtMyQNCisJCQkJIERlcHJlY2F0ZWRlbGVtZW50c1BhY2thZ2UuTGl0ZXJhbHMuQUxMT0NBVEVEX19BTExPQ0FURURfRlJPTSwNCisJCQkJIHRydWUsDQorCQkJCSBmYWxzZSwNCisJCQkJIHRydWUsDQorCQkJCSBudWxsLA0KKwkJCQkgbnVsbCwNCisJCQkJIG51bGwpKTsNCisJfQ0KKw0KKwkvKioNCisJICogVGhpcyBhZGRzIGEgcHJvcGVydHkgZGVzY3JpcHRvciBmb3IgdGhlIEFsbG9jYXRlZCBUbyBmZWF0dXJlLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHJvdGVjdGVkIHZvaWQgYWRkQWxsb2NhdGVkVG9Qcm9wZXJ0eURlc2NyaXB0b3IoT2JqZWN0IG9iamVjdCkgew0KKwkJaXRlbVByb3BlcnR5RGVzY3JpcHRvcnMuYWRkDQorCQkJKGNyZWF0ZUl0ZW1Qcm9wZXJ0eURlc2NyaXB0b3INCisJCQkJKCgoQ29tcG9zZWFibGVBZGFwdGVyRmFjdG9yeSlhZGFwdGVyRmFjdG9yeSkuZ2V0Um9vdEFkYXB0ZXJGYWN0b3J5KCksDQorCQkJCSBnZXRSZXNvdXJjZUxvY2F0b3IoKSwNCisJCQkJIGdldFN0cmluZygiX1VJX0FsbG9jYXRlZF9hbGxvY2F0ZWRUb19mZWF0dXJlIiksIC8vJE5PTi1OTFMtMSQNCisJCQkJIGdldFN0cmluZygiX1VJX1Byb3BlcnR5RGVzY3JpcHRvcl9kZXNjcmlwdGlvbiIsICJfVUlfQWxsb2NhdGVkX2FsbG9jYXRlZFRvX2ZlYXR1cmUiLCAiX1VJX0FsbG9jYXRlZF90eXBlIiksIC8vJE5PTi1OTFMtMSQgLy8kTk9OLU5MUy0yJCAvLyROT04tTkxTLTMkDQorCQkJCSBEZXByZWNhdGVkZWxlbWVudHNQYWNrYWdlLkxpdGVyYWxzLkFMTE9DQVRFRF9fQUxMT0NBVEVEX1RPLA0KKwkJCQkgdHJ1ZSwNCisJCQkJIGZhbHNlLA0KKwkJCQkgdHJ1ZSwNCisJCQkJIG51bGwsDQorCQkJCSBudWxsLA0KKwkJCQkgbnVsbCkpOw0KKwl9DQorDQorCS8qKg0KKwkgKiBUaGlzIHJldHVybnMgQWxsb2NhdGVkLmdpZi4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgT2JqZWN0IGdldEltYWdlKE9iamVjdCBvYmplY3QpIHsNCisJCXJldHVybiBvdmVybGF5SW1hZ2Uob2JqZWN0LCBnZXRSZXNvdXJjZUxvY2F0b3IoKS5nZXRJbWFnZSgiZnVsbC9vYmoxNi9BbGxvY2F0ZWQiKSk7IC8vJE5PTi1OTFMtMSQNCisJfQ0KKw0KKwkvKioNCisJICogVGhpcyByZXR1cm5zIHRoZSBsYWJlbCB0ZXh0IGZvciB0aGUgYWRhcHRlZCBjbGFzcy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgU3RyaW5nIGdldFRleHQoT2JqZWN0IG9iamVjdCkgew0KKwkJcmV0dXJuIGdldFN0cmluZygiX1VJX0FsbG9jYXRlZF90eXBlIik7IC8vJE5PTi1OTFMtMSQNCisJfQ0KKwkNCisNCisJLyoqDQorCSAqIFRoaXMgaGFuZGxlcyBtb2RlbCBub3RpZmljYXRpb25zIGJ5IGNhbGxpbmcge0BsaW5rICN1cGRhdGVDaGlsZHJlbn0gdG8gdXBkYXRlIGFueSBjYWNoZWQNCisJICogY2hpbGRyZW4gYW5kIGJ5IGNyZWF0aW5nIGEgdmlld2VyIG5vdGlmaWNhdGlvbiwgd2hpY2ggaXQgcGFzc2VzIHRvIHtAbGluayAjZmlyZU5vdGlmeUNoYW5nZWR9Lg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXB1YmxpYyB2b2lkIG5vdGlmeUNoYW5nZWQoTm90aWZpY2F0aW9uIG5vdGlmaWNhdGlvbikgew0KKwkJdXBkYXRlQ2hpbGRyZW4obm90aWZpY2F0aW9uKTsNCisJCXN1cGVyLm5vdGlmeUNoYW5nZWQobm90aWZpY2F0aW9uKTsNCisJfQ0KKw0KKwkvKioNCisJICogVGhpcyBhZGRzIHtAbGluayBvcmcuZWNsaXBzZS5lbWYuZWRpdC5jb21tYW5kLkNvbW1hbmRQYXJhbWV0ZXJ9cyBkZXNjcmliaW5nIHRoZSBjaGlsZHJlbg0KKwkgKiB0aGF0IGNhbiBiZSBjcmVhdGVkIHVuZGVyIHRoaXMgb2JqZWN0Lg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXByb3RlY3RlZCB2b2lkIGNvbGxlY3ROZXdDaGlsZERlc2NyaXB0b3JzKENvbGxlY3Rpb248T2JqZWN0PiBuZXdDaGlsZERlc2NyaXB0b3JzLCBPYmplY3Qgb2JqZWN0KSB7DQorCQlzdXBlci5jb2xsZWN0TmV3Q2hpbGREZXNjcmlwdG9ycyhuZXdDaGlsZERlc2NyaXB0b3JzLCBvYmplY3QpOw0KKwl9DQorDQorCS8qKg0KKwkgKiBSZXR1cm4gdGhlIHJlc291cmNlIGxvY2F0b3IgZm9yIHRoaXMgaXRlbSBwcm92aWRlcidzIHJlc291cmNlcy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgUmVzb3VyY2VMb2NhdG9yIGdldFJlc291cmNlTG9jYXRvcigpIHsNCisJCXJldHVybiBTeXNtbEVkaXRQbHVnaW4uSU5TVEFOQ0U7DQorCX0NCisNCit9DQpkaWZmIC0tZ2l0IGEvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZWRpdC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9kZXByZWNhdGVkZWxlbWVudHMvcHJvdmlkZXIvRGVwcmVjYXRlZEl0ZW1Qcm92aWRlci5qYXZhIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZWRpdC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9kZXByZWNhdGVkZWxlbWVudHMvcHJvdmlkZXIvRGVwcmVjYXRlZEl0ZW1Qcm92aWRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMwYzRjZjAKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5lZGl0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L2RlcHJlY2F0ZWRlbGVtZW50cy9wcm92aWRlci9EZXByZWNhdGVkSXRlbVByb3ZpZGVyLmphdmEKQEAgLTAsMCArMSwzMjEgQEAKKy8qKg0KKyAqIENvcHlyaWdodCAoYykgMjAxNSBDRUEgTElTVC4NCisgKiANCisgKiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KKyAqICBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCisgKiAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCisgKiAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgKi8NCitwYWNrYWdlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kZXByZWNhdGVkZWxlbWVudHMucHJvdmlkZXI7DQorDQorDQoraW1wb3J0IGphdmEudXRpbC5Db2xsZWN0aW9uOw0KK2ltcG9ydCBqYXZhLnV0aWwuTGlzdDsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi5ub3RpZnkuQWRhcHRlckZhY3Rvcnk7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jb21tb24ubm90aWZ5Lk5vdGlmaWNhdGlvbjsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi51dGlsLlJlc291cmNlTG9jYXRvcjsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVkaXQucHJvdmlkZXIuQ29tcG9zZWFibGVBZGFwdGVyRmFjdG9yeTsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVkaXQucHJvdmlkZXIuSUVkaXRpbmdEb21haW5JdGVtUHJvdmlkZXI7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lZGl0LnByb3ZpZGVyLklJdGVtTGFiZWxQcm92aWRlcjsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVkaXQucHJvdmlkZXIuSUl0ZW1Qcm9wZXJ0eURlc2NyaXB0b3I7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lZGl0LnByb3ZpZGVyLklJdGVtUHJvcGVydHlTb3VyY2U7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lZGl0LnByb3ZpZGVyLklTdHJ1Y3R1cmVkSXRlbUNvbnRlbnRQcm92aWRlcjsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVkaXQucHJvdmlkZXIuSVRyZWVJdGVtQ29udGVudFByb3ZpZGVyOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWRpdC5wcm92aWRlci5JdGVtUHJvcGVydHlEZXNjcmlwdG9yOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWRpdC5wcm92aWRlci5JdGVtUHJvdmlkZXJBZGFwdGVyOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWRpdC5wcm92aWRlci5WaWV3ZXJOb3RpZmljYXRpb247DQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kZXByZWNhdGVkZWxlbWVudHMuRGVwcmVjYXRlZGVsZW1lbnRzUGFja2FnZTsNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnByb3ZpZGVyLlN5c21sRWRpdFBsdWdpbjsNCisNCisvKioNCisgKiBUaGlzIGlzIHRoZSBpdGVtIHByb3ZpZGVyIGFkYXB0ZXIgZm9yIGEge0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kZXByZWNhdGVkZWxlbWVudHMuRGVwcmVjYXRlZH0gb2JqZWN0Lg0KKyAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorICogQGdlbmVyYXRlZA0KKyAqLw0KK3B1YmxpYyBjbGFzcyBEZXByZWNhdGVkSXRlbVByb3ZpZGVyIA0KKwlleHRlbmRzIEl0ZW1Qcm92aWRlckFkYXB0ZXINCisJaW1wbGVtZW50cw0KKwkJSUVkaXRpbmdEb21haW5JdGVtUHJvdmlkZXIsDQorCQlJU3RydWN0dXJlZEl0ZW1Db250ZW50UHJvdmlkZXIsDQorCQlJVHJlZUl0ZW1Db250ZW50UHJvdmlkZXIsDQorCQlJSXRlbUxhYmVsUHJvdmlkZXIsDQorCQlJSXRlbVByb3BlcnR5U291cmNlIHsNCisJLyoqDQorCSAqIFRoaXMgY29uc3RydWN0cyBhbiBpbnN0YW5jZSBmcm9tIGEgZmFjdG9yeSBhbmQgYSBub3RpZmllci4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBEZXByZWNhdGVkSXRlbVByb3ZpZGVyKEFkYXB0ZXJGYWN0b3J5IGFkYXB0ZXJGYWN0b3J5KSB7DQorCQlzdXBlcihhZGFwdGVyRmFjdG9yeSk7DQorCX0NCisNCisJLyoqDQorCSAqIFRoaXMgcmV0dXJucyB0aGUgcHJvcGVydHkgZGVzY3JpcHRvcnMgZm9yIHRoZSBhZGFwdGVkIGNsYXNzLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXB1YmxpYyBMaXN0PElJdGVtUHJvcGVydHlEZXNjcmlwdG9yPiBnZXRQcm9wZXJ0eURlc2NyaXB0b3JzKE9iamVjdCBvYmplY3QpIHsNCisJCWlmIChpdGVtUHJvcGVydHlEZXNjcmlwdG9ycyA9PSBudWxsKSB7DQorCQkJc3VwZXIuZ2V0UHJvcGVydHlEZXNjcmlwdG9ycyhvYmplY3QpOw0KKw0KKwkJCWFkZEJhc2VfVmFsdWVTcGVjaWZpY2F0aW9uUHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCk7DQorCQkJYWRkQmFzZV9Qcm9wZXJ0eVByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QpOw0KKwkJCWFkZEJhc2VfSW5zdGFuY2VTcGVjaWZpY2F0aW9uUHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCk7DQorCQkJYWRkQmFzZV9DbGFzc1Byb3BlcnR5RGVzY3JpcHRvcihvYmplY3QpOw0KKwkJCWFkZEJhc2VfQXNzb2NpYXRpb25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0KTsNCisJCQlhZGREZXByZWNhdGVkUmVhc29uUHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCk7DQorCQkJYWRkQmFzZV9HZW5lcmFsaXphdGlvblByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QpOw0KKwkJCWFkZEJhc2VfRGF0YVR5cGVQcm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0KTsNCisJCX0NCisJCXJldHVybiBpdGVtUHJvcGVydHlEZXNjcmlwdG9yczsNCisJfQ0KKw0KKwkvKioNCisJICogVGhpcyBhZGRzIGEgcHJvcGVydHkgZGVzY3JpcHRvciBmb3IgdGhlIEJhc2UgVmFsdWUgU3BlY2lmaWNhdGlvbiBmZWF0dXJlLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHJvdGVjdGVkIHZvaWQgYWRkQmFzZV9WYWx1ZVNwZWNpZmljYXRpb25Qcm9wZXJ0eURlc2NyaXB0b3IoT2JqZWN0IG9iamVjdCkgew0KKwkJaXRlbVByb3BlcnR5RGVzY3JpcHRvcnMuYWRkDQorCQkJKGNyZWF0ZUl0ZW1Qcm9wZXJ0eURlc2NyaXB0b3INCisJCQkJKCgoQ29tcG9zZWFibGVBZGFwdGVyRmFjdG9yeSlhZGFwdGVyRmFjdG9yeSkuZ2V0Um9vdEFkYXB0ZXJGYWN0b3J5KCksDQorCQkJCSBnZXRSZXNvdXJjZUxvY2F0b3IoKSwNCisJCQkJIGdldFN0cmluZygiX1VJX0RlcHJlY2F0ZWRfYmFzZV9WYWx1ZVNwZWNpZmljYXRpb25fZmVhdHVyZSIpLCAvLyROT04tTkxTLTEkDQorCQkJCSBnZXRTdHJpbmcoIl9VSV9Qcm9wZXJ0eURlc2NyaXB0b3JfZGVzY3JpcHRpb24iLCAiX1VJX0RlcHJlY2F0ZWRfYmFzZV9WYWx1ZVNwZWNpZmljYXRpb25fZmVhdHVyZSIsICJfVUlfRGVwcmVjYXRlZF90eXBlIiksIC8vJE5PTi1OTFMtMSQgLy8kTk9OLU5MUy0yJCAvLyROT04tTkxTLTMkDQorCQkJCSBEZXByZWNhdGVkZWxlbWVudHNQYWNrYWdlLkxpdGVyYWxzLkRFUFJFQ0FURURfX0JBU0VfVkFMVUVfU1BFQ0lGSUNBVElPTiwNCisJCQkJIHRydWUsDQorCQkJCSBmYWxzZSwNCisJCQkJIHRydWUsDQorCQkJCSBudWxsLA0KKwkJCQkgbnVsbCwNCisJCQkJIG51bGwpKTsNCisJfQ0KKw0KKwkvKioNCisJICogVGhpcyBhZGRzIGEgcHJvcGVydHkgZGVzY3JpcHRvciBmb3IgdGhlIEJhc2UgUHJvcGVydHkgZmVhdHVyZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXByb3RlY3RlZCB2b2lkIGFkZEJhc2VfUHJvcGVydHlQcm9wZXJ0eURlc2NyaXB0b3IoT2JqZWN0IG9iamVjdCkgew0KKwkJaXRlbVByb3BlcnR5RGVzY3JpcHRvcnMuYWRkDQorCQkJKGNyZWF0ZUl0ZW1Qcm9wZXJ0eURlc2NyaXB0b3INCisJCQkJKCgoQ29tcG9zZWFibGVBZGFwdGVyRmFjdG9yeSlhZGFwdGVyRmFjdG9yeSkuZ2V0Um9vdEFkYXB0ZXJGYWN0b3J5KCksDQorCQkJCSBnZXRSZXNvdXJjZUxvY2F0b3IoKSwNCisJCQkJIGdldFN0cmluZygiX1VJX0RlcHJlY2F0ZWRfYmFzZV9Qcm9wZXJ0eV9mZWF0dXJlIiksIC8vJE5PTi1OTFMtMSQNCisJCQkJIGdldFN0cmluZygiX1VJX1Byb3BlcnR5RGVzY3JpcHRvcl9kZXNjcmlwdGlvbiIsICJfVUlfRGVwcmVjYXRlZF9iYXNlX1Byb3BlcnR5X2ZlYXR1cmUiLCAiX1VJX0RlcHJlY2F0ZWRfdHlwZSIpLCAvLyROT04tTkxTLTEkIC8vJE5PTi1OTFMtMiQgLy8kTk9OLU5MUy0zJA0KKwkJCQkgRGVwcmVjYXRlZGVsZW1lbnRzUGFja2FnZS5MaXRlcmFscy5ERVBSRUNBVEVEX19CQVNFX1BST1BFUlRZLA0KKwkJCQkgdHJ1ZSwNCisJCQkJIGZhbHNlLA0KKwkJCQkgdHJ1ZSwNCisJCQkJIG51bGwsDQorCQkJCSBudWxsLA0KKwkJCQkgbnVsbCkpOw0KKwl9DQorDQorCS8qKg0KKwkgKiBUaGlzIGFkZHMgYSBwcm9wZXJ0eSBkZXNjcmlwdG9yIGZvciB0aGUgQmFzZSBJbnN0YW5jZSBTcGVjaWZpY2F0aW9uIGZlYXR1cmUuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwcm90ZWN0ZWQgdm9pZCBhZGRCYXNlX0luc3RhbmNlU3BlY2lmaWNhdGlvblByb3BlcnR5RGVzY3JpcHRvcihPYmplY3Qgb2JqZWN0KSB7DQorCQlpdGVtUHJvcGVydHlEZXNjcmlwdG9ycy5hZGQNCisJCQkoY3JlYXRlSXRlbVByb3BlcnR5RGVzY3JpcHRvcg0KKwkJCQkoKChDb21wb3NlYWJsZUFkYXB0ZXJGYWN0b3J5KWFkYXB0ZXJGYWN0b3J5KS5nZXRSb290QWRhcHRlckZhY3RvcnkoKSwNCisJCQkJIGdldFJlc291cmNlTG9jYXRvcigpLA0KKwkJCQkgZ2V0U3RyaW5nKCJfVUlfRGVwcmVjYXRlZF9iYXNlX0luc3RhbmNlU3BlY2lmaWNhdGlvbl9mZWF0dXJlIiksIC8vJE5PTi1OTFMtMSQNCisJCQkJIGdldFN0cmluZygiX1VJX1Byb3BlcnR5RGVzY3JpcHRvcl9kZXNjcmlwdGlvbiIsICJfVUlfRGVwcmVjYXRlZF9iYXNlX0luc3RhbmNlU3BlY2lmaWNhdGlvbl9mZWF0dXJlIiwgIl9VSV9EZXByZWNhdGVkX3R5cGUiKSwgLy8kTk9OLU5MUy0xJCAvLyROT04tTkxTLTIkIC8vJE5PTi1OTFMtMyQNCisJCQkJIERlcHJlY2F0ZWRlbGVtZW50c1BhY2thZ2UuTGl0ZXJhbHMuREVQUkVDQVRFRF9fQkFTRV9JTlNUQU5DRV9TUEVDSUZJQ0FUSU9OLA0KKwkJCQkgdHJ1ZSwNCisJCQkJIGZhbHNlLA0KKwkJCQkgdHJ1ZSwNCisJCQkJIG51bGwsDQorCQkJCSBudWxsLA0KKwkJCQkgbnVsbCkpOw0KKwl9DQorDQorCS8qKg0KKwkgKiBUaGlzIGFkZHMgYSBwcm9wZXJ0eSBkZXNjcmlwdG9yIGZvciB0aGUgQmFzZSBDbGFzcyBmZWF0dXJlLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHJvdGVjdGVkIHZvaWQgYWRkQmFzZV9DbGFzc1Byb3BlcnR5RGVzY3JpcHRvcihPYmplY3Qgb2JqZWN0KSB7DQorCQlpdGVtUHJvcGVydHlEZXNjcmlwdG9ycy5hZGQNCisJCQkoY3JlYXRlSXRlbVByb3BlcnR5RGVzY3JpcHRvcg0KKwkJCQkoKChDb21wb3NlYWJsZUFkYXB0ZXJGYWN0b3J5KWFkYXB0ZXJGYWN0b3J5KS5nZXRSb290QWRhcHRlckZhY3RvcnkoKSwNCisJCQkJIGdldFJlc291cmNlTG9jYXRvcigpLA0KKwkJCQkgZ2V0U3RyaW5nKCJfVUlfRGVwcmVjYXRlZF9iYXNlX0NsYXNzX2ZlYXR1cmUiKSwgLy8kTk9OLU5MUy0xJA0KKwkJCQkgZ2V0U3RyaW5nKCJfVUlfUHJvcGVydHlEZXNjcmlwdG9yX2Rlc2NyaXB0aW9uIiwgIl9VSV9EZXByZWNhdGVkX2Jhc2VfQ2xhc3NfZmVhdHVyZSIsICJfVUlfRGVwcmVjYXRlZF90eXBlIiksIC8vJE5PTi1OTFMtMSQgLy8kTk9OLU5MUy0yJCAvLyROT04tTkxTLTMkDQorCQkJCSBEZXByZWNhdGVkZWxlbWVudHNQYWNrYWdlLkxpdGVyYWxzLkRFUFJFQ0FURURfX0JBU0VfQ0xBU1MsDQorCQkJCSB0cnVlLA0KKwkJCQkgZmFsc2UsDQorCQkJCSB0cnVlLA0KKwkJCQkgbnVsbCwNCisJCQkJIG51bGwsDQorCQkJCSBudWxsKSk7DQorCX0NCisNCisJLyoqDQorCSAqIFRoaXMgYWRkcyBhIHByb3BlcnR5IGRlc2NyaXB0b3IgZm9yIHRoZSBCYXNlIEFzc29jaWF0aW9uIGZlYXR1cmUuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwcm90ZWN0ZWQgdm9pZCBhZGRCYXNlX0Fzc29jaWF0aW9uUHJvcGVydHlEZXNjcmlwdG9yKE9iamVjdCBvYmplY3QpIHsNCisJCWl0ZW1Qcm9wZXJ0eURlc2NyaXB0b3JzLmFkZA0KKwkJCShjcmVhdGVJdGVtUHJvcGVydHlEZXNjcmlwdG9yDQorCQkJCSgoKENvbXBvc2VhYmxlQWRhcHRlckZhY3RvcnkpYWRhcHRlckZhY3RvcnkpLmdldFJvb3RBZGFwdGVyRmFjdG9yeSgpLA0KKwkJCQkgZ2V0UmVzb3VyY2VMb2NhdG9yKCksDQorCQkJCSBnZXRTdHJpbmcoIl9VSV9EZXByZWNhdGVkX2Jhc2VfQXNzb2NpYXRpb25fZmVhdHVyZSIpLCAvLyROT04tTkxTLTEkDQorCQkJCSBnZXRTdHJpbmcoIl9VSV9Qcm9wZXJ0eURlc2NyaXB0b3JfZGVzY3JpcHRpb24iLCAiX1VJX0RlcHJlY2F0ZWRfYmFzZV9Bc3NvY2lhdGlvbl9mZWF0dXJlIiwgIl9VSV9EZXByZWNhdGVkX3R5cGUiKSwgLy8kTk9OLU5MUy0xJCAvLyROT04tTkxTLTIkIC8vJE5PTi1OTFMtMyQNCisJCQkJIERlcHJlY2F0ZWRlbGVtZW50c1BhY2thZ2UuTGl0ZXJhbHMuREVQUkVDQVRFRF9fQkFTRV9BU1NPQ0lBVElPTiwNCisJCQkJIHRydWUsDQorCQkJCSBmYWxzZSwNCisJCQkJIHRydWUsDQorCQkJCSBudWxsLA0KKwkJCQkgbnVsbCwNCisJCQkJIG51bGwpKTsNCisJfQ0KKw0KKwkvKioNCisJICogVGhpcyBhZGRzIGEgcHJvcGVydHkgZGVzY3JpcHRvciBmb3IgdGhlIERlcHJlY2F0ZWQgUmVhc29uIGZlYXR1cmUuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwcm90ZWN0ZWQgdm9pZCBhZGREZXByZWNhdGVkUmVhc29uUHJvcGVydHlEZXNjcmlwdG9yKE9iamVjdCBvYmplY3QpIHsNCisJCWl0ZW1Qcm9wZXJ0eURlc2NyaXB0b3JzLmFkZA0KKwkJCShjcmVhdGVJdGVtUHJvcGVydHlEZXNjcmlwdG9yDQorCQkJCSgoKENvbXBvc2VhYmxlQWRhcHRlckZhY3RvcnkpYWRhcHRlckZhY3RvcnkpLmdldFJvb3RBZGFwdGVyRmFjdG9yeSgpLA0KKwkJCQkgZ2V0UmVzb3VyY2VMb2NhdG9yKCksDQorCQkJCSBnZXRTdHJpbmcoIl9VSV9EZXByZWNhdGVkX2RlcHJlY2F0ZWRSZWFzb25fZmVhdHVyZSIpLCAvLyROT04tTkxTLTEkDQorCQkJCSBnZXRTdHJpbmcoIl9VSV9Qcm9wZXJ0eURlc2NyaXB0b3JfZGVzY3JpcHRpb24iLCAiX1VJX0RlcHJlY2F0ZWRfZGVwcmVjYXRlZFJlYXNvbl9mZWF0dXJlIiwgIl9VSV9EZXByZWNhdGVkX3R5cGUiKSwgLy8kTk9OLU5MUy0xJCAvLyROT04tTkxTLTIkIC8vJE5PTi1OTFMtMyQNCisJCQkJIERlcHJlY2F0ZWRlbGVtZW50c1BhY2thZ2UuTGl0ZXJhbHMuREVQUkVDQVRFRF9fREVQUkVDQVRFRF9SRUFTT04sDQorCQkJCSB0cnVlLA0KKwkJCQkgZmFsc2UsDQorCQkJCSBmYWxzZSwNCisJCQkJIEl0ZW1Qcm9wZXJ0eURlc2NyaXB0b3IuR0VORVJJQ19WQUxVRV9JTUFHRSwNCisJCQkJIG51bGwsDQorCQkJCSBudWxsKSk7DQorCX0NCisNCisJLyoqDQorCSAqIFRoaXMgYWRkcyBhIHByb3BlcnR5IGRlc2NyaXB0b3IgZm9yIHRoZSBCYXNlIEdlbmVyYWxpemF0aW9uIGZlYXR1cmUuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwcm90ZWN0ZWQgdm9pZCBhZGRCYXNlX0dlbmVyYWxpemF0aW9uUHJvcGVydHlEZXNjcmlwdG9yKE9iamVjdCBvYmplY3QpIHsNCisJCWl0ZW1Qcm9wZXJ0eURlc2NyaXB0b3JzLmFkZA0KKwkJCShjcmVhdGVJdGVtUHJvcGVydHlEZXNjcmlwdG9yDQorCQkJCSgoKENvbXBvc2VhYmxlQWRhcHRlckZhY3RvcnkpYWRhcHRlckZhY3RvcnkpLmdldFJvb3RBZGFwdGVyRmFjdG9yeSgpLA0KKwkJCQkgZ2V0UmVzb3VyY2VMb2NhdG9yKCksDQorCQkJCSBnZXRTdHJpbmcoIl9VSV9EZXByZWNhdGVkX2Jhc2VfR2VuZXJhbGl6YXRpb25fZmVhdHVyZSIpLCAvLyROT04tTkxTLTEkDQorCQkJCSBnZXRTdHJpbmcoIl9VSV9Qcm9wZXJ0eURlc2NyaXB0b3JfZGVzY3JpcHRpb24iLCAiX1VJX0RlcHJlY2F0ZWRfYmFzZV9HZW5lcmFsaXphdGlvbl9mZWF0dXJlIiwgIl9VSV9EZXByZWNhdGVkX3R5cGUiKSwgLy8kTk9OLU5MUy0xJCAvLyROT04tTkxTLTIkIC8vJE5PTi1OTFMtMyQNCisJCQkJIERlcHJlY2F0ZWRlbGVtZW50c1BhY2thZ2UuTGl0ZXJhbHMuREVQUkVDQVRFRF9fQkFTRV9HRU5FUkFMSVpBVElPTiwNCisJCQkJIHRydWUsDQorCQkJCSBmYWxzZSwNCisJCQkJIHRydWUsDQorCQkJCSBudWxsLA0KKwkJCQkgbnVsbCwNCisJCQkJIG51bGwpKTsNCisJfQ0KKw0KKwkvKioNCisJICogVGhpcyBhZGRzIGEgcHJvcGVydHkgZGVzY3JpcHRvciBmb3IgdGhlIEJhc2UgRGF0YSBUeXBlIGZlYXR1cmUuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwcm90ZWN0ZWQgdm9pZCBhZGRCYXNlX0RhdGFUeXBlUHJvcGVydHlEZXNjcmlwdG9yKE9iamVjdCBvYmplY3QpIHsNCisJCWl0ZW1Qcm9wZXJ0eURlc2NyaXB0b3JzLmFkZA0KKwkJCShjcmVhdGVJdGVtUHJvcGVydHlEZXNjcmlwdG9yDQorCQkJCSgoKENvbXBvc2VhYmxlQWRhcHRlckZhY3RvcnkpYWRhcHRlckZhY3RvcnkpLmdldFJvb3RBZGFwdGVyRmFjdG9yeSgpLA0KKwkJCQkgZ2V0UmVzb3VyY2VMb2NhdG9yKCksDQorCQkJCSBnZXRTdHJpbmcoIl9VSV9EZXByZWNhdGVkX2Jhc2VfRGF0YVR5cGVfZmVhdHVyZSIpLCAvLyROT04tTkxTLTEkDQorCQkJCSBnZXRTdHJpbmcoIl9VSV9Qcm9wZXJ0eURlc2NyaXB0b3JfZGVzY3JpcHRpb24iLCAiX1VJX0RlcHJlY2F0ZWRfYmFzZV9EYXRhVHlwZV9mZWF0dXJlIiwgIl9VSV9EZXByZWNhdGVkX3R5cGUiKSwgLy8kTk9OLU5MUy0xJCAvLyROT04tTkxTLTIkIC8vJE5PTi1OTFMtMyQNCisJCQkJIERlcHJlY2F0ZWRlbGVtZW50c1BhY2thZ2UuTGl0ZXJhbHMuREVQUkVDQVRFRF9fQkFTRV9EQVRBX1RZUEUsDQorCQkJCSB0cnVlLA0KKwkJCQkgZmFsc2UsDQorCQkJCSB0cnVlLA0KKwkJCQkgbnVsbCwNCisJCQkJIG51bGwsDQorCQkJCSBudWxsKSk7DQorCX0NCisNCisJLyoqDQorCSAqIFRoaXMgcmV0dXJucyBEZXByZWNhdGVkLmdpZi4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgT2JqZWN0IGdldEltYWdlKE9iamVjdCBvYmplY3QpIHsNCisJCXJldHVybiBvdmVybGF5SW1hZ2Uob2JqZWN0LCBnZXRSZXNvdXJjZUxvY2F0b3IoKS5nZXRJbWFnZSgiZnVsbC9vYmoxNi9EZXByZWNhdGVkIikpOyAvLyROT04tTkxTLTEkDQorCX0NCisNCisJLyoqDQorCSAqIFRoaXMgcmV0dXJucyB0aGUgbGFiZWwgdGV4dCBmb3IgdGhlIGFkYXB0ZWQgY2xhc3MuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIFN0cmluZyBnZXRUZXh0KE9iamVjdCBvYmplY3QpIHsNCisJCVN0cmluZyBsYWJlbCA9ICgob3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRlcHJlY2F0ZWRlbGVtZW50cy5EZXByZWNhdGVkKW9iamVjdCkuZ2V0RGVwcmVjYXRlZFJlYXNvbigpOw0KKwkJcmV0dXJuIGxhYmVsID09IG51bGwgfHwgbGFiZWwubGVuZ3RoKCkgPT0gMCA/DQorCQkJZ2V0U3RyaW5nKCJfVUlfRGVwcmVjYXRlZF90eXBlIikgOiAvLyROT04tTkxTLTEkDQorCQkJZ2V0U3RyaW5nKCJfVUlfRGVwcmVjYXRlZF90eXBlIikgKyAiICIgKyBsYWJlbDsgLy8kTk9OLU5MUy0xJCAvLyROT04tTkxTLTIkDQorCX0NCisJDQorDQorCS8qKg0KKwkgKiBUaGlzIGhhbmRsZXMgbW9kZWwgbm90aWZpY2F0aW9ucyBieSBjYWxsaW5nIHtAbGluayAjdXBkYXRlQ2hpbGRyZW59IHRvIHVwZGF0ZSBhbnkgY2FjaGVkDQorCSAqIGNoaWxkcmVuIGFuZCBieSBjcmVhdGluZyBhIHZpZXdlciBub3RpZmljYXRpb24sIHdoaWNoIGl0IHBhc3NlcyB0byB7QGxpbmsgI2ZpcmVOb3RpZnlDaGFuZ2VkfS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgdm9pZCBub3RpZnlDaGFuZ2VkKE5vdGlmaWNhdGlvbiBub3RpZmljYXRpb24pIHsNCisJCXVwZGF0ZUNoaWxkcmVuKG5vdGlmaWNhdGlvbik7DQorDQorCQlzd2l0Y2ggKG5vdGlmaWNhdGlvbi5nZXRGZWF0dXJlSUQob3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRlcHJlY2F0ZWRlbGVtZW50cy5EZXByZWNhdGVkLmNsYXNzKSkgew0KKwkJCWNhc2UgRGVwcmVjYXRlZGVsZW1lbnRzUGFja2FnZS5ERVBSRUNBVEVEX19ERVBSRUNBVEVEX1JFQVNPTjoNCisJCQkJZmlyZU5vdGlmeUNoYW5nZWQobmV3IFZpZXdlck5vdGlmaWNhdGlvbihub3RpZmljYXRpb24sIG5vdGlmaWNhdGlvbi5nZXROb3RpZmllcigpLCBmYWxzZSwgdHJ1ZSkpOw0KKwkJCQlyZXR1cm47DQorCQl9DQorCQlzdXBlci5ub3RpZnlDaGFuZ2VkKG5vdGlmaWNhdGlvbik7DQorCX0NCisNCisJLyoqDQorCSAqIFRoaXMgYWRkcyB7QGxpbmsgb3JnLmVjbGlwc2UuZW1mLmVkaXQuY29tbWFuZC5Db21tYW5kUGFyYW1ldGVyfXMgZGVzY3JpYmluZyB0aGUgY2hpbGRyZW4NCisJICogdGhhdCBjYW4gYmUgY3JlYXRlZCB1bmRlciB0aGlzIG9iamVjdC4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwcm90ZWN0ZWQgdm9pZCBjb2xsZWN0TmV3Q2hpbGREZXNjcmlwdG9ycyhDb2xsZWN0aW9uPE9iamVjdD4gbmV3Q2hpbGREZXNjcmlwdG9ycywgT2JqZWN0IG9iamVjdCkgew0KKwkJc3VwZXIuY29sbGVjdE5ld0NoaWxkRGVzY3JpcHRvcnMobmV3Q2hpbGREZXNjcmlwdG9ycywgb2JqZWN0KTsNCisJfQ0KKw0KKwkvKioNCisJICogUmV0dXJuIHRoZSByZXNvdXJjZSBsb2NhdG9yIGZvciB0aGlzIGl0ZW0gcHJvdmlkZXIncyByZXNvdXJjZXMuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIFJlc291cmNlTG9jYXRvciBnZXRSZXNvdXJjZUxvY2F0b3IoKSB7DQorCQlyZXR1cm4gU3lzbWxFZGl0UGx1Z2luLklOU1RBTkNFOw0KKwl9DQorDQorfQ0KZGlmZiAtLWdpdCBhL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmVkaXQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvZGVwcmVjYXRlZGVsZW1lbnRzL3Byb3ZpZGVyL0RlcHJlY2F0ZWRlbGVtZW50c0l0ZW1Qcm92aWRlckFkYXB0ZXJGYWN0b3J5LmphdmEgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5lZGl0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L2RlcHJlY2F0ZWRlbGVtZW50cy9wcm92aWRlci9EZXByZWNhdGVkZWxlbWVudHNJdGVtUHJvdmlkZXJBZGFwdGVyRmFjdG9yeS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZiZThmMWQKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5lZGl0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L2RlcHJlY2F0ZWRlbGVtZW50cy9wcm92aWRlci9EZXByZWNhdGVkZWxlbWVudHNJdGVtUHJvdmlkZXJBZGFwdGVyRmFjdG9yeS5qYXZhCkBAIC0wLDAgKzEsMzAxIEBACisvKioNCisgKiBDb3B5cmlnaHQgKGMpIDIwMTUgQ0VBIExJU1QuDQorICogDQorICogIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCisgKiAgYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQorICogIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQorICogIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICovDQorcGFja2FnZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGVwcmVjYXRlZGVsZW1lbnRzLnByb3ZpZGVyOw0KKw0KK2ltcG9ydCBqYXZhLnV0aWwuQXJyYXlMaXN0Ow0KK2ltcG9ydCBqYXZhLnV0aWwuQ29sbGVjdGlvbjsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi5ub3RpZnkuQWRhcHRlcjsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi5ub3RpZnkuTm90aWZpY2F0aW9uOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY29tbW9uLm5vdGlmeS5Ob3RpZmllcjsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVkaXQucHJvdmlkZXIuQ2hhbmdlTm90aWZpZXI7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lZGl0LnByb3ZpZGVyLkNvbXBvc2VhYmxlQWRhcHRlckZhY3Rvcnk7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lZGl0LnByb3ZpZGVyLkNvbXBvc2VkQWRhcHRlckZhY3Rvcnk7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lZGl0LnByb3ZpZGVyLklDaGFuZ2VOb3RpZmllcjsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVkaXQucHJvdmlkZXIuSURpc3Bvc2FibGU7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lZGl0LnByb3ZpZGVyLklFZGl0aW5nRG9tYWluSXRlbVByb3ZpZGVyOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWRpdC5wcm92aWRlci5JSXRlbUxhYmVsUHJvdmlkZXI7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lZGl0LnByb3ZpZGVyLklJdGVtUHJvcGVydHlTb3VyY2U7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lZGl0LnByb3ZpZGVyLklOb3RpZnlDaGFuZ2VkTGlzdGVuZXI7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lZGl0LnByb3ZpZGVyLklTdHJ1Y3R1cmVkSXRlbUNvbnRlbnRQcm92aWRlcjsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVkaXQucHJvdmlkZXIuSVRyZWVJdGVtQ29udGVudFByb3ZpZGVyOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGVwcmVjYXRlZGVsZW1lbnRzLnV0aWwuRGVwcmVjYXRlZGVsZW1lbnRzQWRhcHRlckZhY3Rvcnk7DQorDQorLyoqDQorICogVGhpcyBpcyB0aGUgZmFjdG9yeSB0aGF0IGlzIHVzZWQgdG8gcHJvdmlkZSB0aGUgaW50ZXJmYWNlcyBuZWVkZWQgdG8gc3VwcG9ydCBWaWV3ZXJzLg0KKyAqIFRoZSBhZGFwdGVycyBnZW5lcmF0ZWQgYnkgdGhpcyBmYWN0b3J5IGNvbnZlcnQgRU1GIGFkYXB0ZXIgbm90aWZpY2F0aW9ucyBpbnRvIGNhbGxzIHRvIHtAbGluayAjZmlyZU5vdGlmeUNoYW5nZWQgZmlyZU5vdGlmeUNoYW5nZWR9Lg0KKyAqIFRoZSBhZGFwdGVycyBhbHNvIHN1cHBvcnQgRWNsaXBzZSBwcm9wZXJ0eSBzaGVldHMuDQorICogTm90ZSB0aGF0IG1vc3Qgb2YgdGhlIGFkYXB0ZXJzIGFyZSBzaGFyZWQgYW1vbmcgbXVsdGlwbGUgaW5zdGFuY2VzLg0KKyAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorICogQGdlbmVyYXRlZA0KKyAqLw0KK3B1YmxpYyBjbGFzcyBEZXByZWNhdGVkZWxlbWVudHNJdGVtUHJvdmlkZXJBZGFwdGVyRmFjdG9yeSBleHRlbmRzIERlcHJlY2F0ZWRlbGVtZW50c0FkYXB0ZXJGYWN0b3J5IGltcGxlbWVudHMgQ29tcG9zZWFibGVBZGFwdGVyRmFjdG9yeSwgSUNoYW5nZU5vdGlmaWVyLCBJRGlzcG9zYWJsZSB7DQorCS8qKg0KKwkgKiBUaGlzIGtlZXBzIHRyYWNrIG9mIHRoZSByb290IGFkYXB0ZXIgZmFjdG9yeSB0aGF0IGRlbGVnYXRlcyB0byB0aGlzIGFkYXB0ZXIgZmFjdG9yeS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXByb3RlY3RlZCBDb21wb3NlZEFkYXB0ZXJGYWN0b3J5IHBhcmVudEFkYXB0ZXJGYWN0b3J5Ow0KKw0KKwkvKioNCisJICogVGhpcyBpcyB1c2VkIHRvIGltcGxlbWVudCB7QGxpbmsgb3JnLmVjbGlwc2UuZW1mLmVkaXQucHJvdmlkZXIuSUNoYW5nZU5vdGlmaWVyfS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXByb3RlY3RlZCBJQ2hhbmdlTm90aWZpZXIgY2hhbmdlTm90aWZpZXIgPSBuZXcgQ2hhbmdlTm90aWZpZXIoKTsNCisNCisJLyoqDQorCSAqIFRoaXMga2VlcHMgdHJhY2sgb2YgYWxsIHRoZSBzdXBwb3J0ZWQgdHlwZXMgY2hlY2tlZCBieSB7QGxpbmsgI2lzRmFjdG9yeUZvclR5cGUgaXNGYWN0b3J5Rm9yVHlwZX0uDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwcm90ZWN0ZWQgQ29sbGVjdGlvbjxPYmplY3Q+IHN1cHBvcnRlZFR5cGVzID0gbmV3IEFycmF5TGlzdDxPYmplY3Q+KCk7DQorDQorCS8qKg0KKwkgKiBUaGlzIGNvbnN0cnVjdHMgYW4gaW5zdGFuY2UuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgRGVwcmVjYXRlZGVsZW1lbnRzSXRlbVByb3ZpZGVyQWRhcHRlckZhY3RvcnkoKSB7DQorCQlzdXBwb3J0ZWRUeXBlcy5hZGQoSUVkaXRpbmdEb21haW5JdGVtUHJvdmlkZXIuY2xhc3MpOw0KKwkJc3VwcG9ydGVkVHlwZXMuYWRkKElTdHJ1Y3R1cmVkSXRlbUNvbnRlbnRQcm92aWRlci5jbGFzcyk7DQorCQlzdXBwb3J0ZWRUeXBlcy5hZGQoSVRyZWVJdGVtQ29udGVudFByb3ZpZGVyLmNsYXNzKTsNCisJCXN1cHBvcnRlZFR5cGVzLmFkZChJSXRlbUxhYmVsUHJvdmlkZXIuY2xhc3MpOw0KKwkJc3VwcG9ydGVkVHlwZXMuYWRkKElJdGVtUHJvcGVydHlTb3VyY2UuY2xhc3MpOw0KKwl9DQorDQorCS8qKg0KKwkgKiBUaGlzIGtlZXBzIHRyYWNrIG9mIHRoZSBvbmUgYWRhcHRlciB1c2VkIGZvciBhbGwge0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kZXByZWNhdGVkZWxlbWVudHMuRmxvd1BvcnR9IGluc3RhbmNlcy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXByb3RlY3RlZCBGbG93UG9ydEl0ZW1Qcm92aWRlciBmbG93UG9ydEl0ZW1Qcm92aWRlcjsNCisNCisJLyoqDQorCSAqIFRoaXMgY3JlYXRlcyBhbiBhZGFwdGVyIGZvciBhIHtAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGVwcmVjYXRlZGVsZW1lbnRzLkZsb3dQb3J0fS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgQWRhcHRlciBjcmVhdGVGbG93UG9ydEFkYXB0ZXIoKSB7DQorCQlpZiAoZmxvd1BvcnRJdGVtUHJvdmlkZXIgPT0gbnVsbCkgew0KKwkJCWZsb3dQb3J0SXRlbVByb3ZpZGVyID0gbmV3IEZsb3dQb3J0SXRlbVByb3ZpZGVyKHRoaXMpOw0KKwkJfQ0KKw0KKwkJcmV0dXJuIGZsb3dQb3J0SXRlbVByb3ZpZGVyOw0KKwl9DQorDQorCS8qKg0KKwkgKiBUaGlzIGtlZXBzIHRyYWNrIG9mIHRoZSBvbmUgYWRhcHRlciB1c2VkIGZvciBhbGwge0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kZXByZWNhdGVkZWxlbWVudHMuRmxvd1NwZWNpZmljYXRpb259IGluc3RhbmNlcy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXByb3RlY3RlZCBGbG93U3BlY2lmaWNhdGlvbkl0ZW1Qcm92aWRlciBmbG93U3BlY2lmaWNhdGlvbkl0ZW1Qcm92aWRlcjsNCisNCisJLyoqDQorCSAqIFRoaXMgY3JlYXRlcyBhbiBhZGFwdGVyIGZvciBhIHtAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGVwcmVjYXRlZGVsZW1lbnRzLkZsb3dTcGVjaWZpY2F0aW9ufS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgQWRhcHRlciBjcmVhdGVGbG93U3BlY2lmaWNhdGlvbkFkYXB0ZXIoKSB7DQorCQlpZiAoZmxvd1NwZWNpZmljYXRpb25JdGVtUHJvdmlkZXIgPT0gbnVsbCkgew0KKwkJCWZsb3dTcGVjaWZpY2F0aW9uSXRlbVByb3ZpZGVyID0gbmV3IEZsb3dTcGVjaWZpY2F0aW9uSXRlbVByb3ZpZGVyKHRoaXMpOw0KKwkJfQ0KKw0KKwkJcmV0dXJuIGZsb3dTcGVjaWZpY2F0aW9uSXRlbVByb3ZpZGVyOw0KKwl9DQorDQorCS8qKg0KKwkgKiBUaGlzIGtlZXBzIHRyYWNrIG9mIHRoZSBvbmUgYWRhcHRlciB1c2VkIGZvciBhbGwge0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kZXByZWNhdGVkZWxlbWVudHMuQWxsb2NhdGVkfSBpbnN0YW5jZXMuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwcm90ZWN0ZWQgQWxsb2NhdGVkSXRlbVByb3ZpZGVyIGFsbG9jYXRlZEl0ZW1Qcm92aWRlcjsNCisNCisJLyoqDQorCSAqIFRoaXMgY3JlYXRlcyBhbiBhZGFwdGVyIGZvciBhIHtAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGVwcmVjYXRlZGVsZW1lbnRzLkFsbG9jYXRlZH0uDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIEFkYXB0ZXIgY3JlYXRlQWxsb2NhdGVkQWRhcHRlcigpIHsNCisJCWlmIChhbGxvY2F0ZWRJdGVtUHJvdmlkZXIgPT0gbnVsbCkgew0KKwkJCWFsbG9jYXRlZEl0ZW1Qcm92aWRlciA9IG5ldyBBbGxvY2F0ZWRJdGVtUHJvdmlkZXIodGhpcyk7DQorCQl9DQorDQorCQlyZXR1cm4gYWxsb2NhdGVkSXRlbVByb3ZpZGVyOw0KKwl9DQorDQorCS8qKg0KKwkgKiBUaGlzIGtlZXBzIHRyYWNrIG9mIHRoZSBvbmUgYWRhcHRlciB1c2VkIGZvciBhbGwge0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kZXByZWNhdGVkZWxlbWVudHMuUmVxdWlyZW1lbnRSZWxhdGVkfSBpbnN0YW5jZXMuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwcm90ZWN0ZWQgUmVxdWlyZW1lbnRSZWxhdGVkSXRlbVByb3ZpZGVyIHJlcXVpcmVtZW50UmVsYXRlZEl0ZW1Qcm92aWRlcjsNCisNCisJLyoqDQorCSAqIFRoaXMgY3JlYXRlcyBhbiBhZGFwdGVyIGZvciBhIHtAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGVwcmVjYXRlZGVsZW1lbnRzLlJlcXVpcmVtZW50UmVsYXRlZH0uDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIEFkYXB0ZXIgY3JlYXRlUmVxdWlyZW1lbnRSZWxhdGVkQWRhcHRlcigpIHsNCisJCWlmIChyZXF1aXJlbWVudFJlbGF0ZWRJdGVtUHJvdmlkZXIgPT0gbnVsbCkgew0KKwkJCXJlcXVpcmVtZW50UmVsYXRlZEl0ZW1Qcm92aWRlciA9IG5ldyBSZXF1aXJlbWVudFJlbGF0ZWRJdGVtUHJvdmlkZXIodGhpcyk7DQorCQl9DQorDQorCQlyZXR1cm4gcmVxdWlyZW1lbnRSZWxhdGVkSXRlbVByb3ZpZGVyOw0KKwl9DQorDQorCS8qKg0KKwkgKiBUaGlzIGtlZXBzIHRyYWNrIG9mIHRoZSBvbmUgYWRhcHRlciB1c2VkIGZvciBhbGwge0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kZXByZWNhdGVkZWxlbWVudHMuRGVwcmVjYXRlZH0gaW5zdGFuY2VzLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHJvdGVjdGVkIERlcHJlY2F0ZWRJdGVtUHJvdmlkZXIgZGVwcmVjYXRlZEl0ZW1Qcm92aWRlcjsNCisNCisJLyoqDQorCSAqIFRoaXMgY3JlYXRlcyBhbiBhZGFwdGVyIGZvciBhIHtAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGVwcmVjYXRlZGVsZW1lbnRzLkRlcHJlY2F0ZWR9Lg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXB1YmxpYyBBZGFwdGVyIGNyZWF0ZURlcHJlY2F0ZWRBZGFwdGVyKCkgew0KKwkJaWYgKGRlcHJlY2F0ZWRJdGVtUHJvdmlkZXIgPT0gbnVsbCkgew0KKwkJCWRlcHJlY2F0ZWRJdGVtUHJvdmlkZXIgPSBuZXcgRGVwcmVjYXRlZEl0ZW1Qcm92aWRlcih0aGlzKTsNCisJCX0NCisNCisJCXJldHVybiBkZXByZWNhdGVkSXRlbVByb3ZpZGVyOw0KKwl9DQorDQorCS8qKg0KKwkgKiBUaGlzIHJldHVybnMgdGhlIHJvb3QgYWRhcHRlciBmYWN0b3J5IHRoYXQgY29udGFpbnMgdGhpcyBmYWN0b3J5Lg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIENvbXBvc2VhYmxlQWRhcHRlckZhY3RvcnkgZ2V0Um9vdEFkYXB0ZXJGYWN0b3J5KCkgew0KKwkJcmV0dXJuIHBhcmVudEFkYXB0ZXJGYWN0b3J5ID09IG51bGwgPyB0aGlzIDogcGFyZW50QWRhcHRlckZhY3RvcnkuZ2V0Um9vdEFkYXB0ZXJGYWN0b3J5KCk7DQorCX0NCisNCisJLyoqDQorCSAqIFRoaXMgc2V0cyB0aGUgY29tcG9zZWQgYWRhcHRlciBmYWN0b3J5IHRoYXQgY29udGFpbnMgdGhpcyBmYWN0b3J5Lg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIHZvaWQgc2V0UGFyZW50QWRhcHRlckZhY3RvcnkoQ29tcG9zZWRBZGFwdGVyRmFjdG9yeSBwYXJlbnRBZGFwdGVyRmFjdG9yeSkgew0KKwkJdGhpcy5wYXJlbnRBZGFwdGVyRmFjdG9yeSA9IHBhcmVudEFkYXB0ZXJGYWN0b3J5Ow0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXB1YmxpYyBib29sZWFuIGlzRmFjdG9yeUZvclR5cGUoT2JqZWN0IHR5cGUpIHsNCisJCXJldHVybiBzdXBwb3J0ZWRUeXBlcy5jb250YWlucyh0eXBlKSB8fCBzdXBlci5pc0ZhY3RvcnlGb3JUeXBlKHR5cGUpOw0KKwl9DQorDQorCS8qKg0KKwkgKiBUaGlzIGltcGxlbWVudGF0aW9uIHN1YnN0aXR1dGVzIHRoZSBmYWN0b3J5IGl0c2VsZiBhcyB0aGUga2V5IGZvciB0aGUgYWRhcHRlci4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgQWRhcHRlciBhZGFwdChOb3RpZmllciBub3RpZmllciwgT2JqZWN0IHR5cGUpIHsNCisJCXJldHVybiBzdXBlci5hZGFwdChub3RpZmllciwgdGhpcyk7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIE9iamVjdCBhZGFwdChPYmplY3Qgb2JqZWN0LCBPYmplY3QgdHlwZSkgew0KKwkJaWYgKGlzRmFjdG9yeUZvclR5cGUodHlwZSkpIHsNCisJCQlPYmplY3QgYWRhcHRlciA9IHN1cGVyLmFkYXB0KG9iamVjdCwgdHlwZSk7DQorCQkJaWYgKCEodHlwZSBpbnN0YW5jZW9mIENsYXNzPD8+KSB8fCAoKChDbGFzczw/Pil0eXBlKS5pc0luc3RhbmNlKGFkYXB0ZXIpKSkgew0KKwkJCQlyZXR1cm4gYWRhcHRlcjsNCisJCQl9DQorCQl9DQorDQorCQlyZXR1cm4gbnVsbDsNCisJfQ0KKw0KKwkvKioNCisJICogVGhpcyBhZGRzIGEgbGlzdGVuZXIuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgdm9pZCBhZGRMaXN0ZW5lcihJTm90aWZ5Q2hhbmdlZExpc3RlbmVyIG5vdGlmeUNoYW5nZWRMaXN0ZW5lcikgew0KKwkJY2hhbmdlTm90aWZpZXIuYWRkTGlzdGVuZXIobm90aWZ5Q2hhbmdlZExpc3RlbmVyKTsNCisJfQ0KKw0KKwkvKioNCisJICogVGhpcyByZW1vdmVzIGEgbGlzdGVuZXIuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgdm9pZCByZW1vdmVMaXN0ZW5lcihJTm90aWZ5Q2hhbmdlZExpc3RlbmVyIG5vdGlmeUNoYW5nZWRMaXN0ZW5lcikgew0KKwkJY2hhbmdlTm90aWZpZXIucmVtb3ZlTGlzdGVuZXIobm90aWZ5Q2hhbmdlZExpc3RlbmVyKTsNCisJfQ0KKw0KKwkvKioNCisJICogVGhpcyBkZWxlZ2F0ZXMgdG8ge0BsaW5rICNjaGFuZ2VOb3RpZmllcn0gYW5kIHRvIHtAbGluayAjcGFyZW50QWRhcHRlckZhY3Rvcnl9Lg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIHZvaWQgZmlyZU5vdGlmeUNoYW5nZWQoTm90aWZpY2F0aW9uIG5vdGlmaWNhdGlvbikgew0KKwkJY2hhbmdlTm90aWZpZXIuZmlyZU5vdGlmeUNoYW5nZWQobm90aWZpY2F0aW9uKTsNCisNCisJCWlmIChwYXJlbnRBZGFwdGVyRmFjdG9yeSAhPSBudWxsKSB7DQorCQkJcGFyZW50QWRhcHRlckZhY3RvcnkuZmlyZU5vdGlmeUNoYW5nZWQobm90aWZpY2F0aW9uKTsNCisJCX0NCisJfQ0KKw0KKwkvKioNCisJICogVGhpcyBkaXNwb3NlcyBhbGwgb2YgdGhlIGl0ZW0gcHJvdmlkZXJzIGNyZWF0ZWQgYnkgdGhpcyBmYWN0b3J5LiANCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyB2b2lkIGRpc3Bvc2UoKSB7DQorCQlpZiAoZmxvd1BvcnRJdGVtUHJvdmlkZXIgIT0gbnVsbCkgZmxvd1BvcnRJdGVtUHJvdmlkZXIuZGlzcG9zZSgpOw0KKwkJaWYgKGZsb3dTcGVjaWZpY2F0aW9uSXRlbVByb3ZpZGVyICE9IG51bGwpIGZsb3dTcGVjaWZpY2F0aW9uSXRlbVByb3ZpZGVyLmRpc3Bvc2UoKTsNCisJCWlmIChhbGxvY2F0ZWRJdGVtUHJvdmlkZXIgIT0gbnVsbCkgYWxsb2NhdGVkSXRlbVByb3ZpZGVyLmRpc3Bvc2UoKTsNCisJCWlmIChyZXF1aXJlbWVudFJlbGF0ZWRJdGVtUHJvdmlkZXIgIT0gbnVsbCkgcmVxdWlyZW1lbnRSZWxhdGVkSXRlbVByb3ZpZGVyLmRpc3Bvc2UoKTsNCisJCWlmIChkZXByZWNhdGVkSXRlbVByb3ZpZGVyICE9IG51bGwpIGRlcHJlY2F0ZWRJdGVtUHJvdmlkZXIuZGlzcG9zZSgpOw0KKwl9DQorDQorfQ0KZGlmZiAtLWdpdCBhL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmVkaXQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvZGVwcmVjYXRlZGVsZW1lbnRzL3Byb3ZpZGVyL0Zsb3dQb3J0SXRlbVByb3ZpZGVyLmphdmEgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5lZGl0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L2RlcHJlY2F0ZWRlbGVtZW50cy9wcm92aWRlci9GbG93UG9ydEl0ZW1Qcm92aWRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI1M2YwOWIKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5lZGl0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L2RlcHJlY2F0ZWRlbGVtZW50cy9wcm92aWRlci9GbG93UG9ydEl0ZW1Qcm92aWRlci5qYXZhCkBAIC0wLDAgKzEsMjEwIEBACisvKioNCisgKiBDb3B5cmlnaHQgKGMpIDIwMTUgQ0VBIExJU1QuDQorICogDQorICogIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCisgKiAgYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQorICogIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQorICogIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICovDQorcGFja2FnZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGVwcmVjYXRlZGVsZW1lbnRzLnByb3ZpZGVyOw0KKw0KKw0KK2ltcG9ydCBqYXZhLnV0aWwuQ29sbGVjdGlvbjsNCitpbXBvcnQgamF2YS51dGlsLkxpc3Q7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jb21tb24ubm90aWZ5LkFkYXB0ZXJGYWN0b3J5Ow0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY29tbW9uLm5vdGlmeS5Ob3RpZmljYXRpb247DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jb21tb24udXRpbC5SZXNvdXJjZUxvY2F0b3I7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lZGl0LnByb3ZpZGVyLkNvbXBvc2VhYmxlQWRhcHRlckZhY3Rvcnk7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lZGl0LnByb3ZpZGVyLklFZGl0aW5nRG9tYWluSXRlbVByb3ZpZGVyOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWRpdC5wcm92aWRlci5JSXRlbUxhYmVsUHJvdmlkZXI7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lZGl0LnByb3ZpZGVyLklJdGVtUHJvcGVydHlEZXNjcmlwdG9yOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWRpdC5wcm92aWRlci5JSXRlbVByb3BlcnR5U291cmNlOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWRpdC5wcm92aWRlci5JU3RydWN0dXJlZEl0ZW1Db250ZW50UHJvdmlkZXI7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lZGl0LnByb3ZpZGVyLklUcmVlSXRlbUNvbnRlbnRQcm92aWRlcjsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVkaXQucHJvdmlkZXIuSXRlbVByb3BlcnR5RGVzY3JpcHRvcjsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVkaXQucHJvdmlkZXIuSXRlbVByb3ZpZGVyQWRhcHRlcjsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVkaXQucHJvdmlkZXIuVmlld2VyTm90aWZpY2F0aW9uOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGVwcmVjYXRlZGVsZW1lbnRzLkRlcHJlY2F0ZWRlbGVtZW50c1BhY2thZ2U7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kZXByZWNhdGVkZWxlbWVudHMuRmxvd1BvcnQ7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5wb3J0YW5kZmxvd3MuRmxvd0RpcmVjdGlvbjsNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnByb3ZpZGVyLlN5c21sRWRpdFBsdWdpbjsNCisNCisvKioNCisgKiBUaGlzIGlzIHRoZSBpdGVtIHByb3ZpZGVyIGFkYXB0ZXIgZm9yIGEge0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kZXByZWNhdGVkZWxlbWVudHMuRmxvd1BvcnR9IG9iamVjdC4NCisgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKyAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKyAqIEBnZW5lcmF0ZWQNCisgKi8NCitwdWJsaWMgY2xhc3MgRmxvd1BvcnRJdGVtUHJvdmlkZXIgDQorCWV4dGVuZHMgSXRlbVByb3ZpZGVyQWRhcHRlcg0KKwlpbXBsZW1lbnRzDQorCQlJRWRpdGluZ0RvbWFpbkl0ZW1Qcm92aWRlciwNCisJCUlTdHJ1Y3R1cmVkSXRlbUNvbnRlbnRQcm92aWRlciwNCisJCUlUcmVlSXRlbUNvbnRlbnRQcm92aWRlciwNCisJCUlJdGVtTGFiZWxQcm92aWRlciwNCisJCUlJdGVtUHJvcGVydHlTb3VyY2Ugew0KKwkvKioNCisJICogVGhpcyBjb25zdHJ1Y3RzIGFuIGluc3RhbmNlIGZyb20gYSBmYWN0b3J5IGFuZCBhIG5vdGlmaWVyLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIEZsb3dQb3J0SXRlbVByb3ZpZGVyKEFkYXB0ZXJGYWN0b3J5IGFkYXB0ZXJGYWN0b3J5KSB7DQorCQlzdXBlcihhZGFwdGVyRmFjdG9yeSk7DQorCX0NCisNCisJLyoqDQorCSAqIFRoaXMgcmV0dXJucyB0aGUgcHJvcGVydHkgZGVzY3JpcHRvcnMgZm9yIHRoZSBhZGFwdGVkIGNsYXNzLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXB1YmxpYyBMaXN0PElJdGVtUHJvcGVydHlEZXNjcmlwdG9yPiBnZXRQcm9wZXJ0eURlc2NyaXB0b3JzKE9iamVjdCBvYmplY3QpIHsNCisJCWlmIChpdGVtUHJvcGVydHlEZXNjcmlwdG9ycyA9PSBudWxsKSB7DQorCQkJc3VwZXIuZ2V0UHJvcGVydHlEZXNjcmlwdG9ycyhvYmplY3QpOw0KKw0KKwkJCWFkZEJhc2VfUG9ydFByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QpOw0KKwkJCWFkZERpcmVjdGlvblByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QpOw0KKwkJCWFkZElzQXRvbWljUHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCk7DQorCQl9DQorCQlyZXR1cm4gaXRlbVByb3BlcnR5RGVzY3JpcHRvcnM7DQorCX0NCisNCisJLyoqDQorCSAqIFRoaXMgYWRkcyBhIHByb3BlcnR5IGRlc2NyaXB0b3IgZm9yIHRoZSBCYXNlIFBvcnQgZmVhdHVyZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXByb3RlY3RlZCB2b2lkIGFkZEJhc2VfUG9ydFByb3BlcnR5RGVzY3JpcHRvcihPYmplY3Qgb2JqZWN0KSB7DQorCQlpdGVtUHJvcGVydHlEZXNjcmlwdG9ycy5hZGQNCisJCQkoY3JlYXRlSXRlbVByb3BlcnR5RGVzY3JpcHRvcg0KKwkJCQkoKChDb21wb3NlYWJsZUFkYXB0ZXJGYWN0b3J5KWFkYXB0ZXJGYWN0b3J5KS5nZXRSb290QWRhcHRlckZhY3RvcnkoKSwNCisJCQkJIGdldFJlc291cmNlTG9jYXRvcigpLA0KKwkJCQkgZ2V0U3RyaW5nKCJfVUlfRmxvd1BvcnRfYmFzZV9Qb3J0X2ZlYXR1cmUiKSwgLy8kTk9OLU5MUy0xJA0KKwkJCQkgZ2V0U3RyaW5nKCJfVUlfUHJvcGVydHlEZXNjcmlwdG9yX2Rlc2NyaXB0aW9uIiwgIl9VSV9GbG93UG9ydF9iYXNlX1BvcnRfZmVhdHVyZSIsICJfVUlfRmxvd1BvcnRfdHlwZSIpLCAvLyROT04tTkxTLTEkIC8vJE5PTi1OTFMtMiQgLy8kTk9OLU5MUy0zJA0KKwkJCQkgRGVwcmVjYXRlZGVsZW1lbnRzUGFja2FnZS5MaXRlcmFscy5GTE9XX1BPUlRfX0JBU0VfUE9SVCwNCisJCQkJIHRydWUsDQorCQkJCSBmYWxzZSwNCisJCQkJIHRydWUsDQorCQkJCSBudWxsLA0KKwkJCQkgbnVsbCwNCisJCQkJIG51bGwpKTsNCisJfQ0KKw0KKwkvKioNCisJICogVGhpcyBhZGRzIGEgcHJvcGVydHkgZGVzY3JpcHRvciBmb3IgdGhlIERpcmVjdGlvbiBmZWF0dXJlLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHJvdGVjdGVkIHZvaWQgYWRkRGlyZWN0aW9uUHJvcGVydHlEZXNjcmlwdG9yKE9iamVjdCBvYmplY3QpIHsNCisJCWl0ZW1Qcm9wZXJ0eURlc2NyaXB0b3JzLmFkZA0KKwkJCShjcmVhdGVJdGVtUHJvcGVydHlEZXNjcmlwdG9yDQorCQkJCSgoKENvbXBvc2VhYmxlQWRhcHRlckZhY3RvcnkpYWRhcHRlckZhY3RvcnkpLmdldFJvb3RBZGFwdGVyRmFjdG9yeSgpLA0KKwkJCQkgZ2V0UmVzb3VyY2VMb2NhdG9yKCksDQorCQkJCSBnZXRTdHJpbmcoIl9VSV9GbG93UG9ydF9kaXJlY3Rpb25fZmVhdHVyZSIpLCAvLyROT04tTkxTLTEkDQorCQkJCSBnZXRTdHJpbmcoIl9VSV9Qcm9wZXJ0eURlc2NyaXB0b3JfZGVzY3JpcHRpb24iLCAiX1VJX0Zsb3dQb3J0X2RpcmVjdGlvbl9mZWF0dXJlIiwgIl9VSV9GbG93UG9ydF90eXBlIiksIC8vJE5PTi1OTFMtMSQgLy8kTk9OLU5MUy0yJCAvLyROT04tTkxTLTMkDQorCQkJCSBEZXByZWNhdGVkZWxlbWVudHNQYWNrYWdlLkxpdGVyYWxzLkZMT1dfUE9SVF9fRElSRUNUSU9OLA0KKwkJCQkgdHJ1ZSwNCisJCQkJIGZhbHNlLA0KKwkJCQkgZmFsc2UsDQorCQkJCSBJdGVtUHJvcGVydHlEZXNjcmlwdG9yLkdFTkVSSUNfVkFMVUVfSU1BR0UsDQorCQkJCSBudWxsLA0KKwkJCQkgbnVsbCkpOw0KKwl9DQorDQorCS8qKg0KKwkgKiBUaGlzIGFkZHMgYSBwcm9wZXJ0eSBkZXNjcmlwdG9yIGZvciB0aGUgSXMgQXRvbWljIGZlYXR1cmUuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwcm90ZWN0ZWQgdm9pZCBhZGRJc0F0b21pY1Byb3BlcnR5RGVzY3JpcHRvcihPYmplY3Qgb2JqZWN0KSB7DQorCQlpdGVtUHJvcGVydHlEZXNjcmlwdG9ycy5hZGQNCisJCQkoY3JlYXRlSXRlbVByb3BlcnR5RGVzY3JpcHRvcg0KKwkJCQkoKChDb21wb3NlYWJsZUFkYXB0ZXJGYWN0b3J5KWFkYXB0ZXJGYWN0b3J5KS5nZXRSb290QWRhcHRlckZhY3RvcnkoKSwNCisJCQkJIGdldFJlc291cmNlTG9jYXRvcigpLA0KKwkJCQkgZ2V0U3RyaW5nKCJfVUlfRmxvd1BvcnRfaXNBdG9taWNfZmVhdHVyZSIpLCAvLyROT04tTkxTLTEkDQorCQkJCSBnZXRTdHJpbmcoIl9VSV9Qcm9wZXJ0eURlc2NyaXB0b3JfZGVzY3JpcHRpb24iLCAiX1VJX0Zsb3dQb3J0X2lzQXRvbWljX2ZlYXR1cmUiLCAiX1VJX0Zsb3dQb3J0X3R5cGUiKSwgLy8kTk9OLU5MUy0xJCAvLyROT04tTkxTLTIkIC8vJE5PTi1OTFMtMyQNCisJCQkJIERlcHJlY2F0ZWRlbGVtZW50c1BhY2thZ2UuTGl0ZXJhbHMuRkxPV19QT1JUX19JU19BVE9NSUMsDQorCQkJCSB0cnVlLA0KKwkJCQkgZmFsc2UsDQorCQkJCSBmYWxzZSwNCisJCQkJIEl0ZW1Qcm9wZXJ0eURlc2NyaXB0b3IuQk9PTEVBTl9WQUxVRV9JTUFHRSwNCisJCQkJIG51bGwsDQorCQkJCSBudWxsKSk7DQorCX0NCisNCisJLyoqDQorCSAqIFRoaXMgcmV0dXJucyBGbG93UG9ydC5naWYuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIE9iamVjdCBnZXRJbWFnZShPYmplY3Qgb2JqZWN0KSB7DQorCQlyZXR1cm4gb3ZlcmxheUltYWdlKG9iamVjdCwgZ2V0UmVzb3VyY2VMb2NhdG9yKCkuZ2V0SW1hZ2UoImZ1bGwvb2JqMTYvRmxvd1BvcnQiKSk7IC8vJE5PTi1OTFMtMSQNCisJfQ0KKw0KKwkvKioNCisJICogVGhpcyByZXR1cm5zIHRoZSBsYWJlbCB0ZXh0IGZvciB0aGUgYWRhcHRlZCBjbGFzcy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgU3RyaW5nIGdldFRleHQoT2JqZWN0IG9iamVjdCkgew0KKwkJRmxvd0RpcmVjdGlvbiBsYWJlbFZhbHVlID0gKChGbG93UG9ydClvYmplY3QpLmdldERpcmVjdGlvbigpOw0KKwkJU3RyaW5nIGxhYmVsID0gbGFiZWxWYWx1ZSA9PSBudWxsID8gbnVsbCA6IGxhYmVsVmFsdWUudG9TdHJpbmcoKTsNCisJCXJldHVybiBsYWJlbCA9PSBudWxsIHx8IGxhYmVsLmxlbmd0aCgpID09IDAgPw0KKwkJCWdldFN0cmluZygiX1VJX0Zsb3dQb3J0X3R5cGUiKSA6IC8vJE5PTi1OTFMtMSQNCisJCQlnZXRTdHJpbmcoIl9VSV9GbG93UG9ydF90eXBlIikgKyAiICIgKyBsYWJlbDsgLy8kTk9OLU5MUy0xJCAvLyROT04tTkxTLTIkDQorCX0NCisJDQorDQorCS8qKg0KKwkgKiBUaGlzIGhhbmRsZXMgbW9kZWwgbm90aWZpY2F0aW9ucyBieSBjYWxsaW5nIHtAbGluayAjdXBkYXRlQ2hpbGRyZW59IHRvIHVwZGF0ZSBhbnkgY2FjaGVkDQorCSAqIGNoaWxkcmVuIGFuZCBieSBjcmVhdGluZyBhIHZpZXdlciBub3RpZmljYXRpb24sIHdoaWNoIGl0IHBhc3NlcyB0byB7QGxpbmsgI2ZpcmVOb3RpZnlDaGFuZ2VkfS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgdm9pZCBub3RpZnlDaGFuZ2VkKE5vdGlmaWNhdGlvbiBub3RpZmljYXRpb24pIHsNCisJCXVwZGF0ZUNoaWxkcmVuKG5vdGlmaWNhdGlvbik7DQorDQorCQlzd2l0Y2ggKG5vdGlmaWNhdGlvbi5nZXRGZWF0dXJlSUQoRmxvd1BvcnQuY2xhc3MpKSB7DQorCQkJY2FzZSBEZXByZWNhdGVkZWxlbWVudHNQYWNrYWdlLkZMT1dfUE9SVF9fRElSRUNUSU9OOg0KKwkJCWNhc2UgRGVwcmVjYXRlZGVsZW1lbnRzUGFja2FnZS5GTE9XX1BPUlRfX0lTX0FUT01JQzoNCisJCQkJZmlyZU5vdGlmeUNoYW5nZWQobmV3IFZpZXdlck5vdGlmaWNhdGlvbihub3RpZmljYXRpb24sIG5vdGlmaWNhdGlvbi5nZXROb3RpZmllcigpLCBmYWxzZSwgdHJ1ZSkpOw0KKwkJCQlyZXR1cm47DQorCQl9DQorCQlzdXBlci5ub3RpZnlDaGFuZ2VkKG5vdGlmaWNhdGlvbik7DQorCX0NCisNCisJLyoqDQorCSAqIFRoaXMgYWRkcyB7QGxpbmsgb3JnLmVjbGlwc2UuZW1mLmVkaXQuY29tbWFuZC5Db21tYW5kUGFyYW1ldGVyfXMgZGVzY3JpYmluZyB0aGUgY2hpbGRyZW4NCisJICogdGhhdCBjYW4gYmUgY3JlYXRlZCB1bmRlciB0aGlzIG9iamVjdC4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwcm90ZWN0ZWQgdm9pZCBjb2xsZWN0TmV3Q2hpbGREZXNjcmlwdG9ycyhDb2xsZWN0aW9uPE9iamVjdD4gbmV3Q2hpbGREZXNjcmlwdG9ycywgT2JqZWN0IG9iamVjdCkgew0KKwkJc3VwZXIuY29sbGVjdE5ld0NoaWxkRGVzY3JpcHRvcnMobmV3Q2hpbGREZXNjcmlwdG9ycywgb2JqZWN0KTsNCisJfQ0KKw0KKwkvKioNCisJICogUmV0dXJuIHRoZSByZXNvdXJjZSBsb2NhdG9yIGZvciB0aGlzIGl0ZW0gcHJvdmlkZXIncyByZXNvdXJjZXMuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIFJlc291cmNlTG9jYXRvciBnZXRSZXNvdXJjZUxvY2F0b3IoKSB7DQorCQlyZXR1cm4gU3lzbWxFZGl0UGx1Z2luLklOU1RBTkNFOw0KKwl9DQorDQorfQ0KZGlmZiAtLWdpdCBhL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmVkaXQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvZGVwcmVjYXRlZGVsZW1lbnRzL3Byb3ZpZGVyL0Zsb3dTcGVjaWZpY2F0aW9uSXRlbVByb3ZpZGVyLmphdmEgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5lZGl0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L2RlcHJlY2F0ZWRlbGVtZW50cy9wcm92aWRlci9GbG93U3BlY2lmaWNhdGlvbkl0ZW1Qcm92aWRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRiNTM4MmUKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5lZGl0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L2RlcHJlY2F0ZWRlbGVtZW50cy9wcm92aWRlci9GbG93U3BlY2lmaWNhdGlvbkl0ZW1Qcm92aWRlci5qYXZhCkBAIC0wLDAgKzEsMTQ5IEBACisvKioNCisgKiBDb3B5cmlnaHQgKGMpIDIwMTUgQ0VBIExJU1QuDQorICogDQorICogIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCisgKiAgYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQorICogIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQorICogIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICovDQorcGFja2FnZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGVwcmVjYXRlZGVsZW1lbnRzLnByb3ZpZGVyOw0KKw0KKw0KK2ltcG9ydCBqYXZhLnV0aWwuQ29sbGVjdGlvbjsNCitpbXBvcnQgamF2YS51dGlsLkxpc3Q7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jb21tb24ubm90aWZ5LkFkYXB0ZXJGYWN0b3J5Ow0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY29tbW9uLm5vdGlmeS5Ob3RpZmljYXRpb247DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jb21tb24udXRpbC5SZXNvdXJjZUxvY2F0b3I7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lZGl0LnByb3ZpZGVyLkNvbXBvc2VhYmxlQWRhcHRlckZhY3Rvcnk7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lZGl0LnByb3ZpZGVyLklFZGl0aW5nRG9tYWluSXRlbVByb3ZpZGVyOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWRpdC5wcm92aWRlci5JSXRlbUxhYmVsUHJvdmlkZXI7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lZGl0LnByb3ZpZGVyLklJdGVtUHJvcGVydHlEZXNjcmlwdG9yOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWRpdC5wcm92aWRlci5JSXRlbVByb3BlcnR5U291cmNlOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWRpdC5wcm92aWRlci5JU3RydWN0dXJlZEl0ZW1Db250ZW50UHJvdmlkZXI7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lZGl0LnByb3ZpZGVyLklUcmVlSXRlbUNvbnRlbnRQcm92aWRlcjsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVkaXQucHJvdmlkZXIuSXRlbVByb3ZpZGVyQWRhcHRlcjsNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRlcHJlY2F0ZWRlbGVtZW50cy5EZXByZWNhdGVkZWxlbWVudHNQYWNrYWdlOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucHJvdmlkZXIuU3lzbWxFZGl0UGx1Z2luOw0KKw0KKy8qKg0KKyAqIFRoaXMgaXMgdGhlIGl0ZW0gcHJvdmlkZXIgYWRhcHRlciBmb3IgYSB7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRlcHJlY2F0ZWRlbGVtZW50cy5GbG93U3BlY2lmaWNhdGlvbn0gb2JqZWN0Lg0KKyAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorICogQGdlbmVyYXRlZA0KKyAqLw0KK3B1YmxpYyBjbGFzcyBGbG93U3BlY2lmaWNhdGlvbkl0ZW1Qcm92aWRlciANCisJZXh0ZW5kcyBJdGVtUHJvdmlkZXJBZGFwdGVyDQorCWltcGxlbWVudHMNCisJCUlFZGl0aW5nRG9tYWluSXRlbVByb3ZpZGVyLA0KKwkJSVN0cnVjdHVyZWRJdGVtQ29udGVudFByb3ZpZGVyLA0KKwkJSVRyZWVJdGVtQ29udGVudFByb3ZpZGVyLA0KKwkJSUl0ZW1MYWJlbFByb3ZpZGVyLA0KKwkJSUl0ZW1Qcm9wZXJ0eVNvdXJjZSB7DQorCS8qKg0KKwkgKiBUaGlzIGNvbnN0cnVjdHMgYW4gaW5zdGFuY2UgZnJvbSBhIGZhY3RvcnkgYW5kIGEgbm90aWZpZXIuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgRmxvd1NwZWNpZmljYXRpb25JdGVtUHJvdmlkZXIoQWRhcHRlckZhY3RvcnkgYWRhcHRlckZhY3RvcnkpIHsNCisJCXN1cGVyKGFkYXB0ZXJGYWN0b3J5KTsNCisJfQ0KKw0KKwkvKioNCisJICogVGhpcyByZXR1cm5zIHRoZSBwcm9wZXJ0eSBkZXNjcmlwdG9ycyBmb3IgdGhlIGFkYXB0ZWQgY2xhc3MuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIExpc3Q8SUl0ZW1Qcm9wZXJ0eURlc2NyaXB0b3I+IGdldFByb3BlcnR5RGVzY3JpcHRvcnMoT2JqZWN0IG9iamVjdCkgew0KKwkJaWYgKGl0ZW1Qcm9wZXJ0eURlc2NyaXB0b3JzID09IG51bGwpIHsNCisJCQlzdXBlci5nZXRQcm9wZXJ0eURlc2NyaXB0b3JzKG9iamVjdCk7DQorDQorCQkJYWRkQmFzZV9JbnRlcmZhY2VQcm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0KTsNCisJCX0NCisJCXJldHVybiBpdGVtUHJvcGVydHlEZXNjcmlwdG9yczsNCisJfQ0KKw0KKwkvKioNCisJICogVGhpcyBhZGRzIGEgcHJvcGVydHkgZGVzY3JpcHRvciBmb3IgdGhlIEJhc2UgSW50ZXJmYWNlIGZlYXR1cmUuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwcm90ZWN0ZWQgdm9pZCBhZGRCYXNlX0ludGVyZmFjZVByb3BlcnR5RGVzY3JpcHRvcihPYmplY3Qgb2JqZWN0KSB7DQorCQlpdGVtUHJvcGVydHlEZXNjcmlwdG9ycy5hZGQNCisJCQkoY3JlYXRlSXRlbVByb3BlcnR5RGVzY3JpcHRvcg0KKwkJCQkoKChDb21wb3NlYWJsZUFkYXB0ZXJGYWN0b3J5KWFkYXB0ZXJGYWN0b3J5KS5nZXRSb290QWRhcHRlckZhY3RvcnkoKSwNCisJCQkJIGdldFJlc291cmNlTG9jYXRvcigpLA0KKwkJCQkgZ2V0U3RyaW5nKCJfVUlfRmxvd1NwZWNpZmljYXRpb25fYmFzZV9JbnRlcmZhY2VfZmVhdHVyZSIpLCAvLyROT04tTkxTLTEkDQorCQkJCSBnZXRTdHJpbmcoIl9VSV9Qcm9wZXJ0eURlc2NyaXB0b3JfZGVzY3JpcHRpb24iLCAiX1VJX0Zsb3dTcGVjaWZpY2F0aW9uX2Jhc2VfSW50ZXJmYWNlX2ZlYXR1cmUiLCAiX1VJX0Zsb3dTcGVjaWZpY2F0aW9uX3R5cGUiKSwgLy8kTk9OLU5MUy0xJCAvLyROT04tTkxTLTIkIC8vJE5PTi1OTFMtMyQNCisJCQkJIERlcHJlY2F0ZWRlbGVtZW50c1BhY2thZ2UuTGl0ZXJhbHMuRkxPV19TUEVDSUZJQ0FUSU9OX19CQVNFX0lOVEVSRkFDRSwNCisJCQkJIHRydWUsDQorCQkJCSBmYWxzZSwNCisJCQkJIHRydWUsDQorCQkJCSBudWxsLA0KKwkJCQkgbnVsbCwNCisJCQkJIG51bGwpKTsNCisJfQ0KKw0KKwkvKioNCisJICogVGhpcyByZXR1cm5zIEZsb3dTcGVjaWZpY2F0aW9uLmdpZi4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgT2JqZWN0IGdldEltYWdlKE9iamVjdCBvYmplY3QpIHsNCisJCXJldHVybiBvdmVybGF5SW1hZ2Uob2JqZWN0LCBnZXRSZXNvdXJjZUxvY2F0b3IoKS5nZXRJbWFnZSgiZnVsbC9vYmoxNi9GbG93U3BlY2lmaWNhdGlvbiIpKTsgLy8kTk9OLU5MUy0xJA0KKwl9DQorDQorCS8qKg0KKwkgKiBUaGlzIHJldHVybnMgdGhlIGxhYmVsIHRleHQgZm9yIHRoZSBhZGFwdGVkIGNsYXNzLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXB1YmxpYyBTdHJpbmcgZ2V0VGV4dChPYmplY3Qgb2JqZWN0KSB7DQorCQlyZXR1cm4gZ2V0U3RyaW5nKCJfVUlfRmxvd1NwZWNpZmljYXRpb25fdHlwZSIpOyAvLyROT04tTkxTLTEkDQorCX0NCisJDQorDQorCS8qKg0KKwkgKiBUaGlzIGhhbmRsZXMgbW9kZWwgbm90aWZpY2F0aW9ucyBieSBjYWxsaW5nIHtAbGluayAjdXBkYXRlQ2hpbGRyZW59IHRvIHVwZGF0ZSBhbnkgY2FjaGVkDQorCSAqIGNoaWxkcmVuIGFuZCBieSBjcmVhdGluZyBhIHZpZXdlciBub3RpZmljYXRpb24sIHdoaWNoIGl0IHBhc3NlcyB0byB7QGxpbmsgI2ZpcmVOb3RpZnlDaGFuZ2VkfS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgdm9pZCBub3RpZnlDaGFuZ2VkKE5vdGlmaWNhdGlvbiBub3RpZmljYXRpb24pIHsNCisJCXVwZGF0ZUNoaWxkcmVuKG5vdGlmaWNhdGlvbik7DQorCQlzdXBlci5ub3RpZnlDaGFuZ2VkKG5vdGlmaWNhdGlvbik7DQorCX0NCisNCisJLyoqDQorCSAqIFRoaXMgYWRkcyB7QGxpbmsgb3JnLmVjbGlwc2UuZW1mLmVkaXQuY29tbWFuZC5Db21tYW5kUGFyYW1ldGVyfXMgZGVzY3JpYmluZyB0aGUgY2hpbGRyZW4NCisJICogdGhhdCBjYW4gYmUgY3JlYXRlZCB1bmRlciB0aGlzIG9iamVjdC4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwcm90ZWN0ZWQgdm9pZCBjb2xsZWN0TmV3Q2hpbGREZXNjcmlwdG9ycyhDb2xsZWN0aW9uPE9iamVjdD4gbmV3Q2hpbGREZXNjcmlwdG9ycywgT2JqZWN0IG9iamVjdCkgew0KKwkJc3VwZXIuY29sbGVjdE5ld0NoaWxkRGVzY3JpcHRvcnMobmV3Q2hpbGREZXNjcmlwdG9ycywgb2JqZWN0KTsNCisJfQ0KKw0KKwkvKioNCisJICogUmV0dXJuIHRoZSByZXNvdXJjZSBsb2NhdG9yIGZvciB0aGlzIGl0ZW0gcHJvdmlkZXIncyByZXNvdXJjZXMuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIFJlc291cmNlTG9jYXRvciBnZXRSZXNvdXJjZUxvY2F0b3IoKSB7DQorCQlyZXR1cm4gU3lzbWxFZGl0UGx1Z2luLklOU1RBTkNFOw0KKwl9DQorDQorfQ0KZGlmZiAtLWdpdCBhL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmVkaXQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvZGVwcmVjYXRlZGVsZW1lbnRzL3Byb3ZpZGVyL1JlcXVpcmVtZW50UmVsYXRlZEl0ZW1Qcm92aWRlci5qYXZhIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZWRpdC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9kZXByZWNhdGVkZWxlbWVudHMvcHJvdmlkZXIvUmVxdWlyZW1lbnRSZWxhdGVkSXRlbVByb3ZpZGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTM0OGQ5OQotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmVkaXQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvZGVwcmVjYXRlZGVsZW1lbnRzL3Byb3ZpZGVyL1JlcXVpcmVtZW50UmVsYXRlZEl0ZW1Qcm92aWRlci5qYXZhCkBAIC0wLDAgKzEsMjQxIEBACisvKioNCisgKiBDb3B5cmlnaHQgKGMpIDIwMTUgQ0VBIExJU1QuDQorICogDQorICogIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCisgKiAgYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQorICogIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQorICogIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICovDQorcGFja2FnZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGVwcmVjYXRlZGVsZW1lbnRzLnByb3ZpZGVyOw0KKw0KKw0KK2ltcG9ydCBqYXZhLnV0aWwuQ29sbGVjdGlvbjsNCitpbXBvcnQgamF2YS51dGlsLkxpc3Q7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jb21tb24ubm90aWZ5LkFkYXB0ZXJGYWN0b3J5Ow0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY29tbW9uLm5vdGlmeS5Ob3RpZmljYXRpb247DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jb21tb24udXRpbC5SZXNvdXJjZUxvY2F0b3I7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lZGl0LnByb3ZpZGVyLkNvbXBvc2VhYmxlQWRhcHRlckZhY3Rvcnk7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lZGl0LnByb3ZpZGVyLklFZGl0aW5nRG9tYWluSXRlbVByb3ZpZGVyOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWRpdC5wcm92aWRlci5JSXRlbUxhYmVsUHJvdmlkZXI7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lZGl0LnByb3ZpZGVyLklJdGVtUHJvcGVydHlEZXNjcmlwdG9yOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWRpdC5wcm92aWRlci5JSXRlbVByb3BlcnR5U291cmNlOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWRpdC5wcm92aWRlci5JU3RydWN0dXJlZEl0ZW1Db250ZW50UHJvdmlkZXI7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lZGl0LnByb3ZpZGVyLklUcmVlSXRlbUNvbnRlbnRQcm92aWRlcjsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVkaXQucHJvdmlkZXIuSXRlbVByb3ZpZGVyQWRhcHRlcjsNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRlcHJlY2F0ZWRlbGVtZW50cy5EZXByZWNhdGVkZWxlbWVudHNQYWNrYWdlOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucHJvdmlkZXIuU3lzbWxFZGl0UGx1Z2luOw0KKw0KKy8qKg0KKyAqIFRoaXMgaXMgdGhlIGl0ZW0gcHJvdmlkZXIgYWRhcHRlciBmb3IgYSB7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRlcHJlY2F0ZWRlbGVtZW50cy5SZXF1aXJlbWVudFJlbGF0ZWR9IG9iamVjdC4NCisgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKyAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKyAqIEBnZW5lcmF0ZWQNCisgKi8NCitwdWJsaWMgY2xhc3MgUmVxdWlyZW1lbnRSZWxhdGVkSXRlbVByb3ZpZGVyIA0KKwlleHRlbmRzIEl0ZW1Qcm92aWRlckFkYXB0ZXINCisJaW1wbGVtZW50cw0KKwkJSUVkaXRpbmdEb21haW5JdGVtUHJvdmlkZXIsDQorCQlJU3RydWN0dXJlZEl0ZW1Db250ZW50UHJvdmlkZXIsDQorCQlJVHJlZUl0ZW1Db250ZW50UHJvdmlkZXIsDQorCQlJSXRlbUxhYmVsUHJvdmlkZXIsDQorCQlJSXRlbVByb3BlcnR5U291cmNlIHsNCisJLyoqDQorCSAqIFRoaXMgY29uc3RydWN0cyBhbiBpbnN0YW5jZSBmcm9tIGEgZmFjdG9yeSBhbmQgYSBub3RpZmllci4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBSZXF1aXJlbWVudFJlbGF0ZWRJdGVtUHJvdmlkZXIoQWRhcHRlckZhY3RvcnkgYWRhcHRlckZhY3RvcnkpIHsNCisJCXN1cGVyKGFkYXB0ZXJGYWN0b3J5KTsNCisJfQ0KKw0KKwkvKioNCisJICogVGhpcyByZXR1cm5zIHRoZSBwcm9wZXJ0eSBkZXNjcmlwdG9ycyBmb3IgdGhlIGFkYXB0ZWQgY2xhc3MuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIExpc3Q8SUl0ZW1Qcm9wZXJ0eURlc2NyaXB0b3I+IGdldFByb3BlcnR5RGVzY3JpcHRvcnMoT2JqZWN0IG9iamVjdCkgew0KKwkJaWYgKGl0ZW1Qcm9wZXJ0eURlc2NyaXB0b3JzID09IG51bGwpIHsNCisJCQlzdXBlci5nZXRQcm9wZXJ0eURlc2NyaXB0b3JzKG9iamVjdCk7DQorDQorCQkJYWRkQmFzZV9OYW1lZEVsZW1lbnRQcm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0KTsNCisJCQlhZGRUcmFjZWRGcm9tUHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCk7DQorCQkJYWRkU2F0aXNmaWVzUHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCk7DQorCQkJYWRkUmVmaW5lc1Byb3BlcnR5RGVzY3JpcHRvcihvYmplY3QpOw0KKwkJCWFkZFZlcmlmaWVzUHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCk7DQorCQl9DQorCQlyZXR1cm4gaXRlbVByb3BlcnR5RGVzY3JpcHRvcnM7DQorCX0NCisNCisJLyoqDQorCSAqIFRoaXMgYWRkcyBhIHByb3BlcnR5IGRlc2NyaXB0b3IgZm9yIHRoZSBCYXNlIE5hbWVkIEVsZW1lbnQgZmVhdHVyZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXByb3RlY3RlZCB2b2lkIGFkZEJhc2VfTmFtZWRFbGVtZW50UHJvcGVydHlEZXNjcmlwdG9yKE9iamVjdCBvYmplY3QpIHsNCisJCWl0ZW1Qcm9wZXJ0eURlc2NyaXB0b3JzLmFkZA0KKwkJCShjcmVhdGVJdGVtUHJvcGVydHlEZXNjcmlwdG9yDQorCQkJCSgoKENvbXBvc2VhYmxlQWRhcHRlckZhY3RvcnkpYWRhcHRlckZhY3RvcnkpLmdldFJvb3RBZGFwdGVyRmFjdG9yeSgpLA0KKwkJCQkgZ2V0UmVzb3VyY2VMb2NhdG9yKCksDQorCQkJCSBnZXRTdHJpbmcoIl9VSV9SZXF1aXJlbWVudFJlbGF0ZWRfYmFzZV9OYW1lZEVsZW1lbnRfZmVhdHVyZSIpLCAvLyROT04tTkxTLTEkDQorCQkJCSBnZXRTdHJpbmcoIl9VSV9Qcm9wZXJ0eURlc2NyaXB0b3JfZGVzY3JpcHRpb24iLCAiX1VJX1JlcXVpcmVtZW50UmVsYXRlZF9iYXNlX05hbWVkRWxlbWVudF9mZWF0dXJlIiwgIl9VSV9SZXF1aXJlbWVudFJlbGF0ZWRfdHlwZSIpLCAvLyROT04tTkxTLTEkIC8vJE5PTi1OTFMtMiQgLy8kTk9OLU5MUy0zJA0KKwkJCQkgRGVwcmVjYXRlZGVsZW1lbnRzUGFja2FnZS5MaXRlcmFscy5SRVFVSVJFTUVOVF9SRUxBVEVEX19CQVNFX05BTUVEX0VMRU1FTlQsDQorCQkJCSB0cnVlLA0KKwkJCQkgZmFsc2UsDQorCQkJCSB0cnVlLA0KKwkJCQkgbnVsbCwNCisJCQkJIG51bGwsDQorCQkJCSBudWxsKSk7DQorCX0NCisNCisJLyoqDQorCSAqIFRoaXMgYWRkcyBhIHByb3BlcnR5IGRlc2NyaXB0b3IgZm9yIHRoZSBUcmFjZWQgRnJvbSBmZWF0dXJlLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHJvdGVjdGVkIHZvaWQgYWRkVHJhY2VkRnJvbVByb3BlcnR5RGVzY3JpcHRvcihPYmplY3Qgb2JqZWN0KSB7DQorCQlpdGVtUHJvcGVydHlEZXNjcmlwdG9ycy5hZGQNCisJCQkoY3JlYXRlSXRlbVByb3BlcnR5RGVzY3JpcHRvcg0KKwkJCQkoKChDb21wb3NlYWJsZUFkYXB0ZXJGYWN0b3J5KWFkYXB0ZXJGYWN0b3J5KS5nZXRSb290QWRhcHRlckZhY3RvcnkoKSwNCisJCQkJIGdldFJlc291cmNlTG9jYXRvcigpLA0KKwkJCQkgZ2V0U3RyaW5nKCJfVUlfUmVxdWlyZW1lbnRSZWxhdGVkX1RyYWNlZEZyb21fZmVhdHVyZSIpLCAvLyROT04tTkxTLTEkDQorCQkJCSBnZXRTdHJpbmcoIl9VSV9Qcm9wZXJ0eURlc2NyaXB0b3JfZGVzY3JpcHRpb24iLCAiX1VJX1JlcXVpcmVtZW50UmVsYXRlZF9UcmFjZWRGcm9tX2ZlYXR1cmUiLCAiX1VJX1JlcXVpcmVtZW50UmVsYXRlZF90eXBlIiksIC8vJE5PTi1OTFMtMSQgLy8kTk9OLU5MUy0yJCAvLyROT04tTkxTLTMkDQorCQkJCSBEZXByZWNhdGVkZWxlbWVudHNQYWNrYWdlLkxpdGVyYWxzLlJFUVVJUkVNRU5UX1JFTEFURURfX1RSQUNFRF9GUk9NLA0KKwkJCQkgdHJ1ZSwNCisJCQkJIGZhbHNlLA0KKwkJCQkgdHJ1ZSwNCisJCQkJIG51bGwsDQorCQkJCSBudWxsLA0KKwkJCQkgbnVsbCkpOw0KKwl9DQorDQorCS8qKg0KKwkgKiBUaGlzIGFkZHMgYSBwcm9wZXJ0eSBkZXNjcmlwdG9yIGZvciB0aGUgU2F0aXNmaWVzIGZlYXR1cmUuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwcm90ZWN0ZWQgdm9pZCBhZGRTYXRpc2ZpZXNQcm9wZXJ0eURlc2NyaXB0b3IoT2JqZWN0IG9iamVjdCkgew0KKwkJaXRlbVByb3BlcnR5RGVzY3JpcHRvcnMuYWRkDQorCQkJKGNyZWF0ZUl0ZW1Qcm9wZXJ0eURlc2NyaXB0b3INCisJCQkJKCgoQ29tcG9zZWFibGVBZGFwdGVyRmFjdG9yeSlhZGFwdGVyRmFjdG9yeSkuZ2V0Um9vdEFkYXB0ZXJGYWN0b3J5KCksDQorCQkJCSBnZXRSZXNvdXJjZUxvY2F0b3IoKSwNCisJCQkJIGdldFN0cmluZygiX1VJX1JlcXVpcmVtZW50UmVsYXRlZF9TYXRpc2ZpZXNfZmVhdHVyZSIpLCAvLyROT04tTkxTLTEkDQorCQkJCSBnZXRTdHJpbmcoIl9VSV9Qcm9wZXJ0eURlc2NyaXB0b3JfZGVzY3JpcHRpb24iLCAiX1VJX1JlcXVpcmVtZW50UmVsYXRlZF9TYXRpc2ZpZXNfZmVhdHVyZSIsICJfVUlfUmVxdWlyZW1lbnRSZWxhdGVkX3R5cGUiKSwgLy8kTk9OLU5MUy0xJCAvLyROT04tTkxTLTIkIC8vJE5PTi1OTFMtMyQNCisJCQkJIERlcHJlY2F0ZWRlbGVtZW50c1BhY2thZ2UuTGl0ZXJhbHMuUkVRVUlSRU1FTlRfUkVMQVRFRF9fU0FUSVNGSUVTLA0KKwkJCQkgdHJ1ZSwNCisJCQkJIGZhbHNlLA0KKwkJCQkgdHJ1ZSwNCisJCQkJIG51bGwsDQorCQkJCSBudWxsLA0KKwkJCQkgbnVsbCkpOw0KKwl9DQorDQorCS8qKg0KKwkgKiBUaGlzIGFkZHMgYSBwcm9wZXJ0eSBkZXNjcmlwdG9yIGZvciB0aGUgUmVmaW5lcyBmZWF0dXJlLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHJvdGVjdGVkIHZvaWQgYWRkUmVmaW5lc1Byb3BlcnR5RGVzY3JpcHRvcihPYmplY3Qgb2JqZWN0KSB7DQorCQlpdGVtUHJvcGVydHlEZXNjcmlwdG9ycy5hZGQNCisJCQkoY3JlYXRlSXRlbVByb3BlcnR5RGVzY3JpcHRvcg0KKwkJCQkoKChDb21wb3NlYWJsZUFkYXB0ZXJGYWN0b3J5KWFkYXB0ZXJGYWN0b3J5KS5nZXRSb290QWRhcHRlckZhY3RvcnkoKSwNCisJCQkJIGdldFJlc291cmNlTG9jYXRvcigpLA0KKwkJCQkgZ2V0U3RyaW5nKCJfVUlfUmVxdWlyZW1lbnRSZWxhdGVkX1JlZmluZXNfZmVhdHVyZSIpLCAvLyROT04tTkxTLTEkDQorCQkJCSBnZXRTdHJpbmcoIl9VSV9Qcm9wZXJ0eURlc2NyaXB0b3JfZGVzY3JpcHRpb24iLCAiX1VJX1JlcXVpcmVtZW50UmVsYXRlZF9SZWZpbmVzX2ZlYXR1cmUiLCAiX1VJX1JlcXVpcmVtZW50UmVsYXRlZF90eXBlIiksIC8vJE5PTi1OTFMtMSQgLy8kTk9OLU5MUy0yJCAvLyROT04tTkxTLTMkDQorCQkJCSBEZXByZWNhdGVkZWxlbWVudHNQYWNrYWdlLkxpdGVyYWxzLlJFUVVJUkVNRU5UX1JFTEFURURfX1JFRklORVMsDQorCQkJCSB0cnVlLA0KKwkJCQkgZmFsc2UsDQorCQkJCSB0cnVlLA0KKwkJCQkgbnVsbCwNCisJCQkJIG51bGwsDQorCQkJCSBudWxsKSk7DQorCX0NCisNCisJLyoqDQorCSAqIFRoaXMgYWRkcyBhIHByb3BlcnR5IGRlc2NyaXB0b3IgZm9yIHRoZSBWZXJpZmllcyBmZWF0dXJlLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHJvdGVjdGVkIHZvaWQgYWRkVmVyaWZpZXNQcm9wZXJ0eURlc2NyaXB0b3IoT2JqZWN0IG9iamVjdCkgew0KKwkJaXRlbVByb3BlcnR5RGVzY3JpcHRvcnMuYWRkDQorCQkJKGNyZWF0ZUl0ZW1Qcm9wZXJ0eURlc2NyaXB0b3INCisJCQkJKCgoQ29tcG9zZWFibGVBZGFwdGVyRmFjdG9yeSlhZGFwdGVyRmFjdG9yeSkuZ2V0Um9vdEFkYXB0ZXJGYWN0b3J5KCksDQorCQkJCSBnZXRSZXNvdXJjZUxvY2F0b3IoKSwNCisJCQkJIGdldFN0cmluZygiX1VJX1JlcXVpcmVtZW50UmVsYXRlZF9WZXJpZmllc19mZWF0dXJlIiksIC8vJE5PTi1OTFMtMSQNCisJCQkJIGdldFN0cmluZygiX1VJX1Byb3BlcnR5RGVzY3JpcHRvcl9kZXNjcmlwdGlvbiIsICJfVUlfUmVxdWlyZW1lbnRSZWxhdGVkX1ZlcmlmaWVzX2ZlYXR1cmUiLCAiX1VJX1JlcXVpcmVtZW50UmVsYXRlZF90eXBlIiksIC8vJE5PTi1OTFMtMSQgLy8kTk9OLU5MUy0yJCAvLyROT04tTkxTLTMkDQorCQkJCSBEZXByZWNhdGVkZWxlbWVudHNQYWNrYWdlLkxpdGVyYWxzLlJFUVVJUkVNRU5UX1JFTEFURURfX1ZFUklGSUVTLA0KKwkJCQkgdHJ1ZSwNCisJCQkJIGZhbHNlLA0KKwkJCQkgdHJ1ZSwNCisJCQkJIG51bGwsDQorCQkJCSBudWxsLA0KKwkJCQkgbnVsbCkpOw0KKwl9DQorDQorCS8qKg0KKwkgKiBUaGlzIHJldHVybnMgUmVxdWlyZW1lbnRSZWxhdGVkLmdpZi4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgT2JqZWN0IGdldEltYWdlKE9iamVjdCBvYmplY3QpIHsNCisJCXJldHVybiBvdmVybGF5SW1hZ2Uob2JqZWN0LCBnZXRSZXNvdXJjZUxvY2F0b3IoKS5nZXRJbWFnZSgiZnVsbC9vYmoxNi9SZXF1aXJlbWVudFJlbGF0ZWQiKSk7IC8vJE5PTi1OTFMtMSQNCisJfQ0KKw0KKwkvKioNCisJICogVGhpcyByZXR1cm5zIHRoZSBsYWJlbCB0ZXh0IGZvciB0aGUgYWRhcHRlZCBjbGFzcy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgU3RyaW5nIGdldFRleHQoT2JqZWN0IG9iamVjdCkgew0KKwkJcmV0dXJuIGdldFN0cmluZygiX1VJX1JlcXVpcmVtZW50UmVsYXRlZF90eXBlIik7IC8vJE5PTi1OTFMtMSQNCisJfQ0KKwkNCisNCisJLyoqDQorCSAqIFRoaXMgaGFuZGxlcyBtb2RlbCBub3RpZmljYXRpb25zIGJ5IGNhbGxpbmcge0BsaW5rICN1cGRhdGVDaGlsZHJlbn0gdG8gdXBkYXRlIGFueSBjYWNoZWQNCisJICogY2hpbGRyZW4gYW5kIGJ5IGNyZWF0aW5nIGEgdmlld2VyIG5vdGlmaWNhdGlvbiwgd2hpY2ggaXQgcGFzc2VzIHRvIHtAbGluayAjZmlyZU5vdGlmeUNoYW5nZWR9Lg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXB1YmxpYyB2b2lkIG5vdGlmeUNoYW5nZWQoTm90aWZpY2F0aW9uIG5vdGlmaWNhdGlvbikgew0KKwkJdXBkYXRlQ2hpbGRyZW4obm90aWZpY2F0aW9uKTsNCisJCXN1cGVyLm5vdGlmeUNoYW5nZWQobm90aWZpY2F0aW9uKTsNCisJfQ0KKw0KKwkvKioNCisJICogVGhpcyBhZGRzIHtAbGluayBvcmcuZWNsaXBzZS5lbWYuZWRpdC5jb21tYW5kLkNvbW1hbmRQYXJhbWV0ZXJ9cyBkZXNjcmliaW5nIHRoZSBjaGlsZHJlbg0KKwkgKiB0aGF0IGNhbiBiZSBjcmVhdGVkIHVuZGVyIHRoaXMgb2JqZWN0Lg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXByb3RlY3RlZCB2b2lkIGNvbGxlY3ROZXdDaGlsZERlc2NyaXB0b3JzKENvbGxlY3Rpb248T2JqZWN0PiBuZXdDaGlsZERlc2NyaXB0b3JzLCBPYmplY3Qgb2JqZWN0KSB7DQorCQlzdXBlci5jb2xsZWN0TmV3Q2hpbGREZXNjcmlwdG9ycyhuZXdDaGlsZERlc2NyaXB0b3JzLCBvYmplY3QpOw0KKwl9DQorDQorCS8qKg0KKwkgKiBSZXR1cm4gdGhlIHJlc291cmNlIGxvY2F0b3IgZm9yIHRoaXMgaXRlbSBwcm92aWRlcidzIHJlc291cmNlcy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgUmVzb3VyY2VMb2NhdG9yIGdldFJlc291cmNlTG9jYXRvcigpIHsNCisJCXJldHVybiBTeXNtbEVkaXRQbHVnaW4uSU5TVEFOQ0U7DQorCX0NCisNCit9DQpkaWZmIC0tZ2l0IGEvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZWRpdC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9tb2RlbGVsZW1lbnRzL3Byb3ZpZGVyL0NvbmZvcm1JdGVtUHJvdmlkZXIuamF2YSBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmVkaXQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvbW9kZWxlbGVtZW50cy9wcm92aWRlci9Db25mb3JtSXRlbVByb3ZpZGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGY0MzMwNQotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmVkaXQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvbW9kZWxlbGVtZW50cy9wcm92aWRlci9Db25mb3JtSXRlbVByb3ZpZGVyLmphdmEKQEAgLTAsMCArMSwxNzIgQEAKKy8qKg0KKyAqIENvcHlyaWdodCAoYykgMjAxNSBDRUEgTElTVC4NCisgKiANCisgKiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KKyAqICBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCisgKiAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCisgKiAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgKi8NCitwYWNrYWdlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5tb2RlbGVsZW1lbnRzLnByb3ZpZGVyOw0KKw0KKw0KK2ltcG9ydCBqYXZhLnV0aWwuQ29sbGVjdGlvbjsNCitpbXBvcnQgamF2YS51dGlsLkxpc3Q7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jb21tb24ubm90aWZ5LkFkYXB0ZXJGYWN0b3J5Ow0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY29tbW9uLm5vdGlmeS5Ob3RpZmljYXRpb247DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jb21tb24udXRpbC5SZXNvdXJjZUxvY2F0b3I7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lZGl0LnByb3ZpZGVyLkNvbXBvc2VhYmxlQWRhcHRlckZhY3Rvcnk7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lZGl0LnByb3ZpZGVyLklFZGl0aW5nRG9tYWluSXRlbVByb3ZpZGVyOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWRpdC5wcm92aWRlci5JSXRlbUxhYmVsUHJvdmlkZXI7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lZGl0LnByb3ZpZGVyLklJdGVtUHJvcGVydHlEZXNjcmlwdG9yOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWRpdC5wcm92aWRlci5JSXRlbVByb3BlcnR5U291cmNlOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWRpdC5wcm92aWRlci5JU3RydWN0dXJlZEl0ZW1Db250ZW50UHJvdmlkZXI7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lZGl0LnByb3ZpZGVyLklUcmVlSXRlbUNvbnRlbnRQcm92aWRlcjsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVkaXQucHJvdmlkZXIuSXRlbVByb3ZpZGVyQWRhcHRlcjsNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0Lm1vZGVsZWxlbWVudHMuTW9kZWxlbGVtZW50c1BhY2thZ2U7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5wcm92aWRlci5TeXNtbEVkaXRQbHVnaW47DQorDQorLyoqDQorICogVGhpcyBpcyB0aGUgaXRlbSBwcm92aWRlciBhZGFwdGVyIGZvciBhIHtAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQubW9kZWxlbGVtZW50cy5Db25mb3JtfSBvYmplY3QuDQorICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisgKiBAZ2VuZXJhdGVkDQorICovDQorcHVibGljIGNsYXNzIENvbmZvcm1JdGVtUHJvdmlkZXIgDQorCWV4dGVuZHMgSXRlbVByb3ZpZGVyQWRhcHRlcg0KKwlpbXBsZW1lbnRzDQorCQlJRWRpdGluZ0RvbWFpbkl0ZW1Qcm92aWRlciwNCisJCUlTdHJ1Y3R1cmVkSXRlbUNvbnRlbnRQcm92aWRlciwNCisJCUlUcmVlSXRlbUNvbnRlbnRQcm92aWRlciwNCisJCUlJdGVtTGFiZWxQcm92aWRlciwNCisJCUlJdGVtUHJvcGVydHlTb3VyY2Ugew0KKwkvKioNCisJICogVGhpcyBjb25zdHJ1Y3RzIGFuIGluc3RhbmNlIGZyb20gYSBmYWN0b3J5IGFuZCBhIG5vdGlmaWVyLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIENvbmZvcm1JdGVtUHJvdmlkZXIoQWRhcHRlckZhY3RvcnkgYWRhcHRlckZhY3RvcnkpIHsNCisJCXN1cGVyKGFkYXB0ZXJGYWN0b3J5KTsNCisJfQ0KKw0KKwkvKioNCisJICogVGhpcyByZXR1cm5zIHRoZSBwcm9wZXJ0eSBkZXNjcmlwdG9ycyBmb3IgdGhlIGFkYXB0ZWQgY2xhc3MuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIExpc3Q8SUl0ZW1Qcm9wZXJ0eURlc2NyaXB0b3I+IGdldFByb3BlcnR5RGVzY3JpcHRvcnMoT2JqZWN0IG9iamVjdCkgew0KKwkJaWYgKGl0ZW1Qcm9wZXJ0eURlc2NyaXB0b3JzID09IG51bGwpIHsNCisJCQlzdXBlci5nZXRQcm9wZXJ0eURlc2NyaXB0b3JzKG9iamVjdCk7DQorDQorCQkJYWRkQmFzZV9EZXBlbmRlbmN5UHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCk7DQorCQkJYWRkQmFzZV9HZW5lcmFsaXphdGlvblByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QpOw0KKwkJfQ0KKwkJcmV0dXJuIGl0ZW1Qcm9wZXJ0eURlc2NyaXB0b3JzOw0KKwl9DQorDQorCS8qKg0KKwkgKiBUaGlzIGFkZHMgYSBwcm9wZXJ0eSBkZXNjcmlwdG9yIGZvciB0aGUgQmFzZSBEZXBlbmRlbmN5IGZlYXR1cmUuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwcm90ZWN0ZWQgdm9pZCBhZGRCYXNlX0RlcGVuZGVuY3lQcm9wZXJ0eURlc2NyaXB0b3IoT2JqZWN0IG9iamVjdCkgew0KKwkJaXRlbVByb3BlcnR5RGVzY3JpcHRvcnMuYWRkDQorCQkJKGNyZWF0ZUl0ZW1Qcm9wZXJ0eURlc2NyaXB0b3INCisJCQkJKCgoQ29tcG9zZWFibGVBZGFwdGVyRmFjdG9yeSlhZGFwdGVyRmFjdG9yeSkuZ2V0Um9vdEFkYXB0ZXJGYWN0b3J5KCksDQorCQkJCSBnZXRSZXNvdXJjZUxvY2F0b3IoKSwNCisJCQkJIGdldFN0cmluZygiX1VJX0NvbmZvcm1fYmFzZV9EZXBlbmRlbmN5X2ZlYXR1cmUiKSwgLy8kTk9OLU5MUy0xJA0KKwkJCQkgZ2V0U3RyaW5nKCJfVUlfUHJvcGVydHlEZXNjcmlwdG9yX2Rlc2NyaXB0aW9uIiwgIl9VSV9Db25mb3JtX2Jhc2VfRGVwZW5kZW5jeV9mZWF0dXJlIiwgIl9VSV9Db25mb3JtX3R5cGUiKSwgLy8kTk9OLU5MUy0xJCAvLyROT04tTkxTLTIkIC8vJE5PTi1OTFMtMyQNCisJCQkJIE1vZGVsZWxlbWVudHNQYWNrYWdlLkxpdGVyYWxzLkNPTkZPUk1fX0JBU0VfREVQRU5ERU5DWSwNCisJCQkJIHRydWUsDQorCQkJCSBmYWxzZSwNCisJCQkJIHRydWUsDQorCQkJCSBudWxsLA0KKwkJCQkgbnVsbCwNCisJCQkJIG51bGwpKTsNCisJfQ0KKw0KKwkvKioNCisJICogVGhpcyBhZGRzIGEgcHJvcGVydHkgZGVzY3JpcHRvciBmb3IgdGhlIEJhc2UgR2VuZXJhbGl6YXRpb24gZmVhdHVyZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXByb3RlY3RlZCB2b2lkIGFkZEJhc2VfR2VuZXJhbGl6YXRpb25Qcm9wZXJ0eURlc2NyaXB0b3IoT2JqZWN0IG9iamVjdCkgew0KKwkJaXRlbVByb3BlcnR5RGVzY3JpcHRvcnMuYWRkDQorCQkJKGNyZWF0ZUl0ZW1Qcm9wZXJ0eURlc2NyaXB0b3INCisJCQkJKCgoQ29tcG9zZWFibGVBZGFwdGVyRmFjdG9yeSlhZGFwdGVyRmFjdG9yeSkuZ2V0Um9vdEFkYXB0ZXJGYWN0b3J5KCksDQorCQkJCSBnZXRSZXNvdXJjZUxvY2F0b3IoKSwNCisJCQkJIGdldFN0cmluZygiX1VJX0NvbmZvcm1fYmFzZV9HZW5lcmFsaXphdGlvbl9mZWF0dXJlIiksIC8vJE5PTi1OTFMtMSQNCisJCQkJIGdldFN0cmluZygiX1VJX1Byb3BlcnR5RGVzY3JpcHRvcl9kZXNjcmlwdGlvbiIsICJfVUlfQ29uZm9ybV9iYXNlX0dlbmVyYWxpemF0aW9uX2ZlYXR1cmUiLCAiX1VJX0NvbmZvcm1fdHlwZSIpLCAvLyROT04tTkxTLTEkIC8vJE5PTi1OTFMtMiQgLy8kTk9OLU5MUy0zJA0KKwkJCQkgTW9kZWxlbGVtZW50c1BhY2thZ2UuTGl0ZXJhbHMuQ09ORk9STV9fQkFTRV9HRU5FUkFMSVpBVElPTiwNCisJCQkJIHRydWUsDQorCQkJCSBmYWxzZSwNCisJCQkJIHRydWUsDQorCQkJCSBudWxsLA0KKwkJCQkgbnVsbCwNCisJCQkJIG51bGwpKTsNCisJfQ0KKw0KKwkvKioNCisJICogVGhpcyByZXR1cm5zIENvbmZvcm0uZ2lmLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXB1YmxpYyBPYmplY3QgZ2V0SW1hZ2UoT2JqZWN0IG9iamVjdCkgew0KKwkJcmV0dXJuIG92ZXJsYXlJbWFnZShvYmplY3QsIGdldFJlc291cmNlTG9jYXRvcigpLmdldEltYWdlKCJmdWxsL29iajE2L0NvbmZvcm0iKSk7IC8vJE5PTi1OTFMtMSQNCisJfQ0KKw0KKwkvKioNCisJICogVGhpcyByZXR1cm5zIHRoZSBsYWJlbCB0ZXh0IGZvciB0aGUgYWRhcHRlZCBjbGFzcy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgU3RyaW5nIGdldFRleHQoT2JqZWN0IG9iamVjdCkgew0KKwkJcmV0dXJuIGdldFN0cmluZygiX1VJX0NvbmZvcm1fdHlwZSIpOyAvLyROT04tTkxTLTEkDQorCX0NCisJDQorDQorCS8qKg0KKwkgKiBUaGlzIGhhbmRsZXMgbW9kZWwgbm90aWZpY2F0aW9ucyBieSBjYWxsaW5nIHtAbGluayAjdXBkYXRlQ2hpbGRyZW59IHRvIHVwZGF0ZSBhbnkgY2FjaGVkDQorCSAqIGNoaWxkcmVuIGFuZCBieSBjcmVhdGluZyBhIHZpZXdlciBub3RpZmljYXRpb24sIHdoaWNoIGl0IHBhc3NlcyB0byB7QGxpbmsgI2ZpcmVOb3RpZnlDaGFuZ2VkfS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgdm9pZCBub3RpZnlDaGFuZ2VkKE5vdGlmaWNhdGlvbiBub3RpZmljYXRpb24pIHsNCisJCXVwZGF0ZUNoaWxkcmVuKG5vdGlmaWNhdGlvbik7DQorCQlzdXBlci5ub3RpZnlDaGFuZ2VkKG5vdGlmaWNhdGlvbik7DQorCX0NCisNCisJLyoqDQorCSAqIFRoaXMgYWRkcyB7QGxpbmsgb3JnLmVjbGlwc2UuZW1mLmVkaXQuY29tbWFuZC5Db21tYW5kUGFyYW1ldGVyfXMgZGVzY3JpYmluZyB0aGUgY2hpbGRyZW4NCisJICogdGhhdCBjYW4gYmUgY3JlYXRlZCB1bmRlciB0aGlzIG9iamVjdC4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwcm90ZWN0ZWQgdm9pZCBjb2xsZWN0TmV3Q2hpbGREZXNjcmlwdG9ycyhDb2xsZWN0aW9uPE9iamVjdD4gbmV3Q2hpbGREZXNjcmlwdG9ycywgT2JqZWN0IG9iamVjdCkgew0KKwkJc3VwZXIuY29sbGVjdE5ld0NoaWxkRGVzY3JpcHRvcnMobmV3Q2hpbGREZXNjcmlwdG9ycywgb2JqZWN0KTsNCisJfQ0KKw0KKwkvKioNCisJICogUmV0dXJuIHRoZSByZXNvdXJjZSBsb2NhdG9yIGZvciB0aGlzIGl0ZW0gcHJvdmlkZXIncyByZXNvdXJjZXMuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIFJlc291cmNlTG9jYXRvciBnZXRSZXNvdXJjZUxvY2F0b3IoKSB7DQorCQlyZXR1cm4gU3lzbWxFZGl0UGx1Z2luLklOU1RBTkNFOw0KKwl9DQorDQorfQ0KZGlmZiAtLWdpdCBhL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmVkaXQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvbW9kZWxlbGVtZW50cy9wcm92aWRlci9FbGVtZW50R3JvdXBJdGVtUHJvdmlkZXIuamF2YSBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmVkaXQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvbW9kZWxlbGVtZW50cy9wcm92aWRlci9FbGVtZW50R3JvdXBJdGVtUHJvdmlkZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZGJjYTVhCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZWRpdC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9tb2RlbGVsZW1lbnRzL3Byb3ZpZGVyL0VsZW1lbnRHcm91cEl0ZW1Qcm92aWRlci5qYXZhCkBAIC0wLDAgKzEsMjc4IEBACisvKioNCisgKiBDb3B5cmlnaHQgKGMpIDIwMTUgQ0VBIExJU1QuDQorICogDQorICogIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCisgKiAgYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQorICogIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQorICogIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICovDQorcGFja2FnZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQubW9kZWxlbGVtZW50cy5wcm92aWRlcjsNCisNCisNCitpbXBvcnQgamF2YS51dGlsLkNvbGxlY3Rpb247DQoraW1wb3J0IGphdmEudXRpbC5MaXN0Ow0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY29tbW9uLm5vdGlmeS5BZGFwdGVyRmFjdG9yeTsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi5ub3RpZnkuTm90aWZpY2F0aW9uOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY29tbW9uLnV0aWwuUmVzb3VyY2VMb2NhdG9yOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWRpdC5wcm92aWRlci5Db21wb3NlYWJsZUFkYXB0ZXJGYWN0b3J5Ow0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWRpdC5wcm92aWRlci5JRWRpdGluZ0RvbWFpbkl0ZW1Qcm92aWRlcjsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVkaXQucHJvdmlkZXIuSUl0ZW1MYWJlbFByb3ZpZGVyOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWRpdC5wcm92aWRlci5JSXRlbVByb3BlcnR5RGVzY3JpcHRvcjsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVkaXQucHJvdmlkZXIuSUl0ZW1Qcm9wZXJ0eVNvdXJjZTsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVkaXQucHJvdmlkZXIuSVN0cnVjdHVyZWRJdGVtQ29udGVudFByb3ZpZGVyOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWRpdC5wcm92aWRlci5JVHJlZUl0ZW1Db250ZW50UHJvdmlkZXI7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lZGl0LnByb3ZpZGVyLkl0ZW1Qcm9wZXJ0eURlc2NyaXB0b3I7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lZGl0LnByb3ZpZGVyLkl0ZW1Qcm92aWRlckFkYXB0ZXI7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lZGl0LnByb3ZpZGVyLlZpZXdlck5vdGlmaWNhdGlvbjsNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0Lm1vZGVsZWxlbWVudHMuRWxlbWVudEdyb3VwOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQubW9kZWxlbGVtZW50cy5Nb2RlbGVsZW1lbnRzUGFja2FnZTsNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnByb3ZpZGVyLlN5c21sRWRpdFBsdWdpbjsNCisNCisvKioNCisgKiBUaGlzIGlzIHRoZSBpdGVtIHByb3ZpZGVyIGFkYXB0ZXIgZm9yIGEge0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5tb2RlbGVsZW1lbnRzLkVsZW1lbnRHcm91cH0gb2JqZWN0Lg0KKyAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorICogQGdlbmVyYXRlZA0KKyAqLw0KK3B1YmxpYyBjbGFzcyBFbGVtZW50R3JvdXBJdGVtUHJvdmlkZXIgDQorCWV4dGVuZHMgSXRlbVByb3ZpZGVyQWRhcHRlcg0KKwlpbXBsZW1lbnRzDQorCQlJRWRpdGluZ0RvbWFpbkl0ZW1Qcm92aWRlciwNCisJCUlTdHJ1Y3R1cmVkSXRlbUNvbnRlbnRQcm92aWRlciwNCisJCUlUcmVlSXRlbUNvbnRlbnRQcm92aWRlciwNCisJCUlJdGVtTGFiZWxQcm92aWRlciwNCisJCUlJdGVtUHJvcGVydHlTb3VyY2Ugew0KKwkvKioNCisJICogVGhpcyBjb25zdHJ1Y3RzIGFuIGluc3RhbmNlIGZyb20gYSBmYWN0b3J5IGFuZCBhIG5vdGlmaWVyLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIEVsZW1lbnRHcm91cEl0ZW1Qcm92aWRlcihBZGFwdGVyRmFjdG9yeSBhZGFwdGVyRmFjdG9yeSkgew0KKwkJc3VwZXIoYWRhcHRlckZhY3RvcnkpOw0KKwl9DQorDQorCS8qKg0KKwkgKiBUaGlzIHJldHVybnMgdGhlIHByb3BlcnR5IGRlc2NyaXB0b3JzIGZvciB0aGUgYWRhcHRlZCBjbGFzcy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgTGlzdDxJSXRlbVByb3BlcnR5RGVzY3JpcHRvcj4gZ2V0UHJvcGVydHlEZXNjcmlwdG9ycyhPYmplY3Qgb2JqZWN0KSB7DQorCQlpZiAoaXRlbVByb3BlcnR5RGVzY3JpcHRvcnMgPT0gbnVsbCkgew0KKwkJCXN1cGVyLmdldFByb3BlcnR5RGVzY3JpcHRvcnMob2JqZWN0KTsNCisNCisJCQlhZGRCYXNlX0NvbW1lbnRQcm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0KTsNCisJCQlhZGROYW1lUHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCk7DQorCQkJYWRkQ3JpdGVyaW9uUHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCk7DQorCQkJYWRkU2l6ZVByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QpOw0KKwkJCWFkZE1lbWJlclByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QpOw0KKwkJCWFkZE9yZGVyZWRNZW1iZXJQcm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0KTsNCisJCX0NCisJCXJldHVybiBpdGVtUHJvcGVydHlEZXNjcmlwdG9yczsNCisJfQ0KKw0KKwkvKioNCisJICogVGhpcyBhZGRzIGEgcHJvcGVydHkgZGVzY3JpcHRvciBmb3IgdGhlIEJhc2UgQ29tbWVudCBmZWF0dXJlLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHJvdGVjdGVkIHZvaWQgYWRkQmFzZV9Db21tZW50UHJvcGVydHlEZXNjcmlwdG9yKE9iamVjdCBvYmplY3QpIHsNCisJCWl0ZW1Qcm9wZXJ0eURlc2NyaXB0b3JzLmFkZA0KKwkJCShjcmVhdGVJdGVtUHJvcGVydHlEZXNjcmlwdG9yDQorCQkJCSgoKENvbXBvc2VhYmxlQWRhcHRlckZhY3RvcnkpYWRhcHRlckZhY3RvcnkpLmdldFJvb3RBZGFwdGVyRmFjdG9yeSgpLA0KKwkJCQkgZ2V0UmVzb3VyY2VMb2NhdG9yKCksDQorCQkJCSBnZXRTdHJpbmcoIl9VSV9FbGVtZW50R3JvdXBfYmFzZV9Db21tZW50X2ZlYXR1cmUiKSwgLy8kTk9OLU5MUy0xJA0KKwkJCQkgZ2V0U3RyaW5nKCJfVUlfUHJvcGVydHlEZXNjcmlwdG9yX2Rlc2NyaXB0aW9uIiwgIl9VSV9FbGVtZW50R3JvdXBfYmFzZV9Db21tZW50X2ZlYXR1cmUiLCAiX1VJX0VsZW1lbnRHcm91cF90eXBlIiksIC8vJE5PTi1OTFMtMSQgLy8kTk9OLU5MUy0yJCAvLyROT04tTkxTLTMkDQorCQkJCSBNb2RlbGVsZW1lbnRzUGFja2FnZS5MaXRlcmFscy5FTEVNRU5UX0dST1VQX19CQVNFX0NPTU1FTlQsDQorCQkJCSB0cnVlLA0KKwkJCQkgZmFsc2UsDQorCQkJCSB0cnVlLA0KKwkJCQkgbnVsbCwNCisJCQkJIG51bGwsDQorCQkJCSBudWxsKSk7DQorCX0NCisNCisJLyoqDQorCSAqIFRoaXMgYWRkcyBhIHByb3BlcnR5IGRlc2NyaXB0b3IgZm9yIHRoZSBOYW1lIGZlYXR1cmUuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwcm90ZWN0ZWQgdm9pZCBhZGROYW1lUHJvcGVydHlEZXNjcmlwdG9yKE9iamVjdCBvYmplY3QpIHsNCisJCWl0ZW1Qcm9wZXJ0eURlc2NyaXB0b3JzLmFkZA0KKwkJCShjcmVhdGVJdGVtUHJvcGVydHlEZXNjcmlwdG9yDQorCQkJCSgoKENvbXBvc2VhYmxlQWRhcHRlckZhY3RvcnkpYWRhcHRlckZhY3RvcnkpLmdldFJvb3RBZGFwdGVyRmFjdG9yeSgpLA0KKwkJCQkgZ2V0UmVzb3VyY2VMb2NhdG9yKCksDQorCQkJCSBnZXRTdHJpbmcoIl9VSV9FbGVtZW50R3JvdXBfbmFtZV9mZWF0dXJlIiksIC8vJE5PTi1OTFMtMSQNCisJCQkJIGdldFN0cmluZygiX1VJX1Byb3BlcnR5RGVzY3JpcHRvcl9kZXNjcmlwdGlvbiIsICJfVUlfRWxlbWVudEdyb3VwX25hbWVfZmVhdHVyZSIsICJfVUlfRWxlbWVudEdyb3VwX3R5cGUiKSwgLy8kTk9OLU5MUy0xJCAvLyROT04tTkxTLTIkIC8vJE5PTi1OTFMtMyQNCisJCQkJIE1vZGVsZWxlbWVudHNQYWNrYWdlLkxpdGVyYWxzLkVMRU1FTlRfR1JPVVBfX05BTUUsDQorCQkJCSB0cnVlLA0KKwkJCQkgZmFsc2UsDQorCQkJCSBmYWxzZSwNCisJCQkJIEl0ZW1Qcm9wZXJ0eURlc2NyaXB0b3IuR0VORVJJQ19WQUxVRV9JTUFHRSwNCisJCQkJIG51bGwsDQorCQkJCSBudWxsKSk7DQorCX0NCisNCisJLyoqDQorCSAqIFRoaXMgYWRkcyBhIHByb3BlcnR5IGRlc2NyaXB0b3IgZm9yIHRoZSBDcml0ZXJpb24gZmVhdHVyZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXByb3RlY3RlZCB2b2lkIGFkZENyaXRlcmlvblByb3BlcnR5RGVzY3JpcHRvcihPYmplY3Qgb2JqZWN0KSB7DQorCQlpdGVtUHJvcGVydHlEZXNjcmlwdG9ycy5hZGQNCisJCQkoY3JlYXRlSXRlbVByb3BlcnR5RGVzY3JpcHRvcg0KKwkJCQkoKChDb21wb3NlYWJsZUFkYXB0ZXJGYWN0b3J5KWFkYXB0ZXJGYWN0b3J5KS5nZXRSb290QWRhcHRlckZhY3RvcnkoKSwNCisJCQkJIGdldFJlc291cmNlTG9jYXRvcigpLA0KKwkJCQkgZ2V0U3RyaW5nKCJfVUlfRWxlbWVudEdyb3VwX2NyaXRlcmlvbl9mZWF0dXJlIiksIC8vJE5PTi1OTFMtMSQNCisJCQkJIGdldFN0cmluZygiX1VJX1Byb3BlcnR5RGVzY3JpcHRvcl9kZXNjcmlwdGlvbiIsICJfVUlfRWxlbWVudEdyb3VwX2NyaXRlcmlvbl9mZWF0dXJlIiwgIl9VSV9FbGVtZW50R3JvdXBfdHlwZSIpLCAvLyROT04tTkxTLTEkIC8vJE5PTi1OTFMtMiQgLy8kTk9OLU5MUy0zJA0KKwkJCQkgTW9kZWxlbGVtZW50c1BhY2thZ2UuTGl0ZXJhbHMuRUxFTUVOVF9HUk9VUF9fQ1JJVEVSSU9OLA0KKwkJCQkgdHJ1ZSwNCisJCQkJIGZhbHNlLA0KKwkJCQkgZmFsc2UsDQorCQkJCSBJdGVtUHJvcGVydHlEZXNjcmlwdG9yLkdFTkVSSUNfVkFMVUVfSU1BR0UsDQorCQkJCSBudWxsLA0KKwkJCQkgbnVsbCkpOw0KKwl9DQorDQorCS8qKg0KKwkgKiBUaGlzIGFkZHMgYSBwcm9wZXJ0eSBkZXNjcmlwdG9yIGZvciB0aGUgU2l6ZSBmZWF0dXJlLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHJvdGVjdGVkIHZvaWQgYWRkU2l6ZVByb3BlcnR5RGVzY3JpcHRvcihPYmplY3Qgb2JqZWN0KSB7DQorCQlpdGVtUHJvcGVydHlEZXNjcmlwdG9ycy5hZGQNCisJCQkoY3JlYXRlSXRlbVByb3BlcnR5RGVzY3JpcHRvcg0KKwkJCQkoKChDb21wb3NlYWJsZUFkYXB0ZXJGYWN0b3J5KWFkYXB0ZXJGYWN0b3J5KS5nZXRSb290QWRhcHRlckZhY3RvcnkoKSwNCisJCQkJIGdldFJlc291cmNlTG9jYXRvcigpLA0KKwkJCQkgZ2V0U3RyaW5nKCJfVUlfRWxlbWVudEdyb3VwX3NpemVfZmVhdHVyZSIpLCAvLyROT04tTkxTLTEkDQorCQkJCSBnZXRTdHJpbmcoIl9VSV9Qcm9wZXJ0eURlc2NyaXB0b3JfZGVzY3JpcHRpb24iLCAiX1VJX0VsZW1lbnRHcm91cF9zaXplX2ZlYXR1cmUiLCAiX1VJX0VsZW1lbnRHcm91cF90eXBlIiksIC8vJE5PTi1OTFMtMSQgLy8kTk9OLU5MUy0yJCAvLyROT04tTkxTLTMkDQorCQkJCSBNb2RlbGVsZW1lbnRzUGFja2FnZS5MaXRlcmFscy5FTEVNRU5UX0dST1VQX19TSVpFLA0KKwkJCQkgdHJ1ZSwNCisJCQkJIGZhbHNlLA0KKwkJCQkgZmFsc2UsDQorCQkJCSBJdGVtUHJvcGVydHlEZXNjcmlwdG9yLklOVEVHUkFMX1ZBTFVFX0lNQUdFLA0KKwkJCQkgbnVsbCwNCisJCQkJIG51bGwpKTsNCisJfQ0KKw0KKwkvKioNCisJICogVGhpcyBhZGRzIGEgcHJvcGVydHkgZGVzY3JpcHRvciBmb3IgdGhlIE1lbWJlciBmZWF0dXJlLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHJvdGVjdGVkIHZvaWQgYWRkTWVtYmVyUHJvcGVydHlEZXNjcmlwdG9yKE9iamVjdCBvYmplY3QpIHsNCisJCWl0ZW1Qcm9wZXJ0eURlc2NyaXB0b3JzLmFkZA0KKwkJCShjcmVhdGVJdGVtUHJvcGVydHlEZXNjcmlwdG9yDQorCQkJCSgoKENvbXBvc2VhYmxlQWRhcHRlckZhY3RvcnkpYWRhcHRlckZhY3RvcnkpLmdldFJvb3RBZGFwdGVyRmFjdG9yeSgpLA0KKwkJCQkgZ2V0UmVzb3VyY2VMb2NhdG9yKCksDQorCQkJCSBnZXRTdHJpbmcoIl9VSV9FbGVtZW50R3JvdXBfbWVtYmVyX2ZlYXR1cmUiKSwgLy8kTk9OLU5MUy0xJA0KKwkJCQkgZ2V0U3RyaW5nKCJfVUlfUHJvcGVydHlEZXNjcmlwdG9yX2Rlc2NyaXB0aW9uIiwgIl9VSV9FbGVtZW50R3JvdXBfbWVtYmVyX2ZlYXR1cmUiLCAiX1VJX0VsZW1lbnRHcm91cF90eXBlIiksIC8vJE5PTi1OTFMtMSQgLy8kTk9OLU5MUy0yJCAvLyROT04tTkxTLTMkDQorCQkJCSBNb2RlbGVsZW1lbnRzUGFja2FnZS5MaXRlcmFscy5FTEVNRU5UX0dST1VQX19NRU1CRVIsDQorCQkJCSB0cnVlLA0KKwkJCQkgZmFsc2UsDQorCQkJCSB0cnVlLA0KKwkJCQkgbnVsbCwNCisJCQkJIG51bGwsDQorCQkJCSBudWxsKSk7DQorCX0NCisNCisJLyoqDQorCSAqIFRoaXMgYWRkcyBhIHByb3BlcnR5IGRlc2NyaXB0b3IgZm9yIHRoZSBPcmRlcmVkIE1lbWJlciBmZWF0dXJlLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHJvdGVjdGVkIHZvaWQgYWRkT3JkZXJlZE1lbWJlclByb3BlcnR5RGVzY3JpcHRvcihPYmplY3Qgb2JqZWN0KSB7DQorCQlpdGVtUHJvcGVydHlEZXNjcmlwdG9ycy5hZGQNCisJCQkoY3JlYXRlSXRlbVByb3BlcnR5RGVzY3JpcHRvcg0KKwkJCQkoKChDb21wb3NlYWJsZUFkYXB0ZXJGYWN0b3J5KWFkYXB0ZXJGYWN0b3J5KS5nZXRSb290QWRhcHRlckZhY3RvcnkoKSwNCisJCQkJIGdldFJlc291cmNlTG9jYXRvcigpLA0KKwkJCQkgZ2V0U3RyaW5nKCJfVUlfRWxlbWVudEdyb3VwX29yZGVyZWRNZW1iZXJfZmVhdHVyZSIpLCAvLyROT04tTkxTLTEkDQorCQkJCSBnZXRTdHJpbmcoIl9VSV9Qcm9wZXJ0eURlc2NyaXB0b3JfZGVzY3JpcHRpb24iLCAiX1VJX0VsZW1lbnRHcm91cF9vcmRlcmVkTWVtYmVyX2ZlYXR1cmUiLCAiX1VJX0VsZW1lbnRHcm91cF90eXBlIiksIC8vJE5PTi1OTFMtMSQgLy8kTk9OLU5MUy0yJCAvLyROT04tTkxTLTMkDQorCQkJCSBNb2RlbGVsZW1lbnRzUGFja2FnZS5MaXRlcmFscy5FTEVNRU5UX0dST1VQX19PUkRFUkVEX01FTUJFUiwNCisJCQkJIHRydWUsDQorCQkJCSBmYWxzZSwNCisJCQkJIHRydWUsDQorCQkJCSBudWxsLA0KKwkJCQkgbnVsbCwNCisJCQkJIG51bGwpKTsNCisJfQ0KKw0KKwkvKioNCisJICogVGhpcyByZXR1cm5zIEVsZW1lbnRHcm91cC5naWYuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIE9iamVjdCBnZXRJbWFnZShPYmplY3Qgb2JqZWN0KSB7DQorCQlyZXR1cm4gb3ZlcmxheUltYWdlKG9iamVjdCwgZ2V0UmVzb3VyY2VMb2NhdG9yKCkuZ2V0SW1hZ2UoImZ1bGwvb2JqMTYvRWxlbWVudEdyb3VwIikpOyAvLyROT04tTkxTLTEkDQorCX0NCisNCisJLyoqDQorCSAqIFRoaXMgcmV0dXJucyB0aGUgbGFiZWwgdGV4dCBmb3IgdGhlIGFkYXB0ZWQgY2xhc3MuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIFN0cmluZyBnZXRUZXh0KE9iamVjdCBvYmplY3QpIHsNCisJCVN0cmluZyBsYWJlbCA9ICgoRWxlbWVudEdyb3VwKW9iamVjdCkuZ2V0TmFtZSgpOw0KKwkJcmV0dXJuIGxhYmVsID09IG51bGwgfHwgbGFiZWwubGVuZ3RoKCkgPT0gMCA/DQorCQkJZ2V0U3RyaW5nKCJfVUlfRWxlbWVudEdyb3VwX3R5cGUiKSA6IC8vJE5PTi1OTFMtMSQNCisJCQlnZXRTdHJpbmcoIl9VSV9FbGVtZW50R3JvdXBfdHlwZSIpICsgIiAiICsgbGFiZWw7IC8vJE5PTi1OTFMtMSQgLy8kTk9OLU5MUy0yJA0KKwl9DQorCQ0KKw0KKwkvKioNCisJICogVGhpcyBoYW5kbGVzIG1vZGVsIG5vdGlmaWNhdGlvbnMgYnkgY2FsbGluZyB7QGxpbmsgI3VwZGF0ZUNoaWxkcmVufSB0byB1cGRhdGUgYW55IGNhY2hlZA0KKwkgKiBjaGlsZHJlbiBhbmQgYnkgY3JlYXRpbmcgYSB2aWV3ZXIgbm90aWZpY2F0aW9uLCB3aGljaCBpdCBwYXNzZXMgdG8ge0BsaW5rICNmaXJlTm90aWZ5Q2hhbmdlZH0uDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIHZvaWQgbm90aWZ5Q2hhbmdlZChOb3RpZmljYXRpb24gbm90aWZpY2F0aW9uKSB7DQorCQl1cGRhdGVDaGlsZHJlbihub3RpZmljYXRpb24pOw0KKw0KKwkJc3dpdGNoIChub3RpZmljYXRpb24uZ2V0RmVhdHVyZUlEKEVsZW1lbnRHcm91cC5jbGFzcykpIHsNCisJCQljYXNlIE1vZGVsZWxlbWVudHNQYWNrYWdlLkVMRU1FTlRfR1JPVVBfX05BTUU6DQorCQkJY2FzZSBNb2RlbGVsZW1lbnRzUGFja2FnZS5FTEVNRU5UX0dST1VQX19DUklURVJJT046DQorCQkJY2FzZSBNb2RlbGVsZW1lbnRzUGFja2FnZS5FTEVNRU5UX0dST1VQX19TSVpFOg0KKwkJCQlmaXJlTm90aWZ5Q2hhbmdlZChuZXcgVmlld2VyTm90aWZpY2F0aW9uKG5vdGlmaWNhdGlvbiwgbm90aWZpY2F0aW9uLmdldE5vdGlmaWVyKCksIGZhbHNlLCB0cnVlKSk7DQorCQkJCXJldHVybjsNCisJCX0NCisJCXN1cGVyLm5vdGlmeUNoYW5nZWQobm90aWZpY2F0aW9uKTsNCisJfQ0KKw0KKwkvKioNCisJICogVGhpcyBhZGRzIHtAbGluayBvcmcuZWNsaXBzZS5lbWYuZWRpdC5jb21tYW5kLkNvbW1hbmRQYXJhbWV0ZXJ9cyBkZXNjcmliaW5nIHRoZSBjaGlsZHJlbg0KKwkgKiB0aGF0IGNhbiBiZSBjcmVhdGVkIHVuZGVyIHRoaXMgb2JqZWN0Lg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXByb3RlY3RlZCB2b2lkIGNvbGxlY3ROZXdDaGlsZERlc2NyaXB0b3JzKENvbGxlY3Rpb248T2JqZWN0PiBuZXdDaGlsZERlc2NyaXB0b3JzLCBPYmplY3Qgb2JqZWN0KSB7DQorCQlzdXBlci5jb2xsZWN0TmV3Q2hpbGREZXNjcmlwdG9ycyhuZXdDaGlsZERlc2NyaXB0b3JzLCBvYmplY3QpOw0KKwl9DQorDQorCS8qKg0KKwkgKiBSZXR1cm4gdGhlIHJlc291cmNlIGxvY2F0b3IgZm9yIHRoaXMgaXRlbSBwcm92aWRlcidzIHJlc291cmNlcy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgUmVzb3VyY2VMb2NhdG9yIGdldFJlc291cmNlTG9jYXRvcigpIHsNCisJCXJldHVybiBTeXNtbEVkaXRQbHVnaW4uSU5TVEFOQ0U7DQorCX0NCisNCit9DQpkaWZmIC0tZ2l0IGEvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZWRpdC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9tb2RlbGVsZW1lbnRzL3Byb3ZpZGVyL0V4cG9zZUl0ZW1Qcm92aWRlci5qYXZhIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZWRpdC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9tb2RlbGVsZW1lbnRzL3Byb3ZpZGVyL0V4cG9zZUl0ZW1Qcm92aWRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIwMzRhMTQKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5lZGl0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L21vZGVsZWxlbWVudHMvcHJvdmlkZXIvRXhwb3NlSXRlbVByb3ZpZGVyLmphdmEKQEAgLTAsMCArMSwxNDkgQEAKKy8qKg0KKyAqIENvcHlyaWdodCAoYykgMjAxNSBDRUEgTElTVC4NCisgKiANCisgKiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KKyAqICBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCisgKiAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCisgKiAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgKi8NCitwYWNrYWdlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5tb2RlbGVsZW1lbnRzLnByb3ZpZGVyOw0KKw0KKw0KK2ltcG9ydCBqYXZhLnV0aWwuQ29sbGVjdGlvbjsNCitpbXBvcnQgamF2YS51dGlsLkxpc3Q7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jb21tb24ubm90aWZ5LkFkYXB0ZXJGYWN0b3J5Ow0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY29tbW9uLm5vdGlmeS5Ob3RpZmljYXRpb247DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jb21tb24udXRpbC5SZXNvdXJjZUxvY2F0b3I7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lZGl0LnByb3ZpZGVyLkNvbXBvc2VhYmxlQWRhcHRlckZhY3Rvcnk7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lZGl0LnByb3ZpZGVyLklFZGl0aW5nRG9tYWluSXRlbVByb3ZpZGVyOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWRpdC5wcm92aWRlci5JSXRlbUxhYmVsUHJvdmlkZXI7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lZGl0LnByb3ZpZGVyLklJdGVtUHJvcGVydHlEZXNjcmlwdG9yOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWRpdC5wcm92aWRlci5JSXRlbVByb3BlcnR5U291cmNlOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWRpdC5wcm92aWRlci5JU3RydWN0dXJlZEl0ZW1Db250ZW50UHJvdmlkZXI7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lZGl0LnByb3ZpZGVyLklUcmVlSXRlbUNvbnRlbnRQcm92aWRlcjsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVkaXQucHJvdmlkZXIuSXRlbVByb3ZpZGVyQWRhcHRlcjsNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0Lm1vZGVsZWxlbWVudHMuTW9kZWxlbGVtZW50c1BhY2thZ2U7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5wcm92aWRlci5TeXNtbEVkaXRQbHVnaW47DQorDQorLyoqDQorICogVGhpcyBpcyB0aGUgaXRlbSBwcm92aWRlciBhZGFwdGVyIGZvciBhIHtAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQubW9kZWxlbGVtZW50cy5FeHBvc2V9IG9iamVjdC4NCisgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKyAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKyAqIEBnZW5lcmF0ZWQNCisgKi8NCitwdWJsaWMgY2xhc3MgRXhwb3NlSXRlbVByb3ZpZGVyIA0KKwlleHRlbmRzIEl0ZW1Qcm92aWRlckFkYXB0ZXINCisJaW1wbGVtZW50cw0KKwkJSUVkaXRpbmdEb21haW5JdGVtUHJvdmlkZXIsDQorCQlJU3RydWN0dXJlZEl0ZW1Db250ZW50UHJvdmlkZXIsDQorCQlJVHJlZUl0ZW1Db250ZW50UHJvdmlkZXIsDQorCQlJSXRlbUxhYmVsUHJvdmlkZXIsDQorCQlJSXRlbVByb3BlcnR5U291cmNlIHsNCisJLyoqDQorCSAqIFRoaXMgY29uc3RydWN0cyBhbiBpbnN0YW5jZSBmcm9tIGEgZmFjdG9yeSBhbmQgYSBub3RpZmllci4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBFeHBvc2VJdGVtUHJvdmlkZXIoQWRhcHRlckZhY3RvcnkgYWRhcHRlckZhY3RvcnkpIHsNCisJCXN1cGVyKGFkYXB0ZXJGYWN0b3J5KTsNCisJfQ0KKw0KKwkvKioNCisJICogVGhpcyByZXR1cm5zIHRoZSBwcm9wZXJ0eSBkZXNjcmlwdG9ycyBmb3IgdGhlIGFkYXB0ZWQgY2xhc3MuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIExpc3Q8SUl0ZW1Qcm9wZXJ0eURlc2NyaXB0b3I+IGdldFByb3BlcnR5RGVzY3JpcHRvcnMoT2JqZWN0IG9iamVjdCkgew0KKwkJaWYgKGl0ZW1Qcm9wZXJ0eURlc2NyaXB0b3JzID09IG51bGwpIHsNCisJCQlzdXBlci5nZXRQcm9wZXJ0eURlc2NyaXB0b3JzKG9iamVjdCk7DQorDQorCQkJYWRkQmFzZV9EZXBlbmRlbmN5UHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCk7DQorCQl9DQorCQlyZXR1cm4gaXRlbVByb3BlcnR5RGVzY3JpcHRvcnM7DQorCX0NCisNCisJLyoqDQorCSAqIFRoaXMgYWRkcyBhIHByb3BlcnR5IGRlc2NyaXB0b3IgZm9yIHRoZSBCYXNlIERlcGVuZGVuY3kgZmVhdHVyZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXByb3RlY3RlZCB2b2lkIGFkZEJhc2VfRGVwZW5kZW5jeVByb3BlcnR5RGVzY3JpcHRvcihPYmplY3Qgb2JqZWN0KSB7DQorCQlpdGVtUHJvcGVydHlEZXNjcmlwdG9ycy5hZGQNCisJCQkoY3JlYXRlSXRlbVByb3BlcnR5RGVzY3JpcHRvcg0KKwkJCQkoKChDb21wb3NlYWJsZUFkYXB0ZXJGYWN0b3J5KWFkYXB0ZXJGYWN0b3J5KS5nZXRSb290QWRhcHRlckZhY3RvcnkoKSwNCisJCQkJIGdldFJlc291cmNlTG9jYXRvcigpLA0KKwkJCQkgZ2V0U3RyaW5nKCJfVUlfRXhwb3NlX2Jhc2VfRGVwZW5kZW5jeV9mZWF0dXJlIiksIC8vJE5PTi1OTFMtMSQNCisJCQkJIGdldFN0cmluZygiX1VJX1Byb3BlcnR5RGVzY3JpcHRvcl9kZXNjcmlwdGlvbiIsICJfVUlfRXhwb3NlX2Jhc2VfRGVwZW5kZW5jeV9mZWF0dXJlIiwgIl9VSV9FeHBvc2VfdHlwZSIpLCAvLyROT04tTkxTLTEkIC8vJE5PTi1OTFMtMiQgLy8kTk9OLU5MUy0zJA0KKwkJCQkgTW9kZWxlbGVtZW50c1BhY2thZ2UuTGl0ZXJhbHMuRVhQT1NFX19CQVNFX0RFUEVOREVOQ1ksDQorCQkJCSB0cnVlLA0KKwkJCQkgZmFsc2UsDQorCQkJCSB0cnVlLA0KKwkJCQkgbnVsbCwNCisJCQkJIG51bGwsDQorCQkJCSBudWxsKSk7DQorCX0NCisNCisJLyoqDQorCSAqIFRoaXMgcmV0dXJucyBFeHBvc2UuZ2lmLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXB1YmxpYyBPYmplY3QgZ2V0SW1hZ2UoT2JqZWN0IG9iamVjdCkgew0KKwkJcmV0dXJuIG92ZXJsYXlJbWFnZShvYmplY3QsIGdldFJlc291cmNlTG9jYXRvcigpLmdldEltYWdlKCJmdWxsL29iajE2L0V4cG9zZSIpKTsgLy8kTk9OLU5MUy0xJA0KKwl9DQorDQorCS8qKg0KKwkgKiBUaGlzIHJldHVybnMgdGhlIGxhYmVsIHRleHQgZm9yIHRoZSBhZGFwdGVkIGNsYXNzLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXB1YmxpYyBTdHJpbmcgZ2V0VGV4dChPYmplY3Qgb2JqZWN0KSB7DQorCQlyZXR1cm4gZ2V0U3RyaW5nKCJfVUlfRXhwb3NlX3R5cGUiKTsgLy8kTk9OLU5MUy0xJA0KKwl9DQorCQ0KKw0KKwkvKioNCisJICogVGhpcyBoYW5kbGVzIG1vZGVsIG5vdGlmaWNhdGlvbnMgYnkgY2FsbGluZyB7QGxpbmsgI3VwZGF0ZUNoaWxkcmVufSB0byB1cGRhdGUgYW55IGNhY2hlZA0KKwkgKiBjaGlsZHJlbiBhbmQgYnkgY3JlYXRpbmcgYSB2aWV3ZXIgbm90aWZpY2F0aW9uLCB3aGljaCBpdCBwYXNzZXMgdG8ge0BsaW5rICNmaXJlTm90aWZ5Q2hhbmdlZH0uDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIHZvaWQgbm90aWZ5Q2hhbmdlZChOb3RpZmljYXRpb24gbm90aWZpY2F0aW9uKSB7DQorCQl1cGRhdGVDaGlsZHJlbihub3RpZmljYXRpb24pOw0KKwkJc3VwZXIubm90aWZ5Q2hhbmdlZChub3RpZmljYXRpb24pOw0KKwl9DQorDQorCS8qKg0KKwkgKiBUaGlzIGFkZHMge0BsaW5rIG9yZy5lY2xpcHNlLmVtZi5lZGl0LmNvbW1hbmQuQ29tbWFuZFBhcmFtZXRlcn1zIGRlc2NyaWJpbmcgdGhlIGNoaWxkcmVuDQorCSAqIHRoYXQgY2FuIGJlIGNyZWF0ZWQgdW5kZXIgdGhpcyBvYmplY3QuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHJvdGVjdGVkIHZvaWQgY29sbGVjdE5ld0NoaWxkRGVzY3JpcHRvcnMoQ29sbGVjdGlvbjxPYmplY3Q+IG5ld0NoaWxkRGVzY3JpcHRvcnMsIE9iamVjdCBvYmplY3QpIHsNCisJCXN1cGVyLmNvbGxlY3ROZXdDaGlsZERlc2NyaXB0b3JzKG5ld0NoaWxkRGVzY3JpcHRvcnMsIG9iamVjdCk7DQorCX0NCisNCisJLyoqDQorCSAqIFJldHVybiB0aGUgcmVzb3VyY2UgbG9jYXRvciBmb3IgdGhpcyBpdGVtIHByb3ZpZGVyJ3MgcmVzb3VyY2VzLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXB1YmxpYyBSZXNvdXJjZUxvY2F0b3IgZ2V0UmVzb3VyY2VMb2NhdG9yKCkgew0KKwkJcmV0dXJuIFN5c21sRWRpdFBsdWdpbi5JTlNUQU5DRTsNCisJfQ0KKw0KK30NCmRpZmYgLS1naXQgYS9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5lZGl0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L21vZGVsZWxlbWVudHMvcHJvdmlkZXIvTW9kZWxlbGVtZW50c0l0ZW1Qcm92aWRlckFkYXB0ZXJGYWN0b3J5LmphdmEgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5lZGl0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L21vZGVsZWxlbWVudHMvcHJvdmlkZXIvTW9kZWxlbGVtZW50c0l0ZW1Qcm92aWRlckFkYXB0ZXJGYWN0b3J5LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjFjZjQ2ZgotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmVkaXQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvbW9kZWxlbGVtZW50cy9wcm92aWRlci9Nb2RlbGVsZW1lbnRzSXRlbVByb3ZpZGVyQWRhcHRlckZhY3RvcnkuamF2YQpAQCAtMCwwICsxLDM3MyBAQAorLyoqDQorICogQ29weXJpZ2h0IChjKSAyMDE1IENFQSBMSVNULg0KKyAqIA0KKyAqICBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQorICogIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KKyAqICB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KKyAqICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqLw0KK3BhY2thZ2Ugb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0Lm1vZGVsZWxlbWVudHMucHJvdmlkZXI7DQorDQoraW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7DQoraW1wb3J0IGphdmEudXRpbC5Db2xsZWN0aW9uOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY29tbW9uLm5vdGlmeS5BZGFwdGVyOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY29tbW9uLm5vdGlmeS5Ob3RpZmljYXRpb247DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jb21tb24ubm90aWZ5Lk5vdGlmaWVyOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWRpdC5wcm92aWRlci5DaGFuZ2VOb3RpZmllcjsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVkaXQucHJvdmlkZXIuQ29tcG9zZWFibGVBZGFwdGVyRmFjdG9yeTsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVkaXQucHJvdmlkZXIuQ29tcG9zZWRBZGFwdGVyRmFjdG9yeTsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVkaXQucHJvdmlkZXIuSUNoYW5nZU5vdGlmaWVyOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWRpdC5wcm92aWRlci5JRGlzcG9zYWJsZTsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVkaXQucHJvdmlkZXIuSUVkaXRpbmdEb21haW5JdGVtUHJvdmlkZXI7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lZGl0LnByb3ZpZGVyLklJdGVtTGFiZWxQcm92aWRlcjsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVkaXQucHJvdmlkZXIuSUl0ZW1Qcm9wZXJ0eVNvdXJjZTsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVkaXQucHJvdmlkZXIuSU5vdGlmeUNoYW5nZWRMaXN0ZW5lcjsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVkaXQucHJvdmlkZXIuSVN0cnVjdHVyZWRJdGVtQ29udGVudFByb3ZpZGVyOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWRpdC5wcm92aWRlci5JVHJlZUl0ZW1Db250ZW50UHJvdmlkZXI7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5tb2RlbGVsZW1lbnRzLnV0aWwuTW9kZWxlbGVtZW50c0FkYXB0ZXJGYWN0b3J5Ow0KKw0KKy8qKg0KKyAqIFRoaXMgaXMgdGhlIGZhY3RvcnkgdGhhdCBpcyB1c2VkIHRvIHByb3ZpZGUgdGhlIGludGVyZmFjZXMgbmVlZGVkIHRvIHN1cHBvcnQgVmlld2Vycy4NCisgKiBUaGUgYWRhcHRlcnMgZ2VuZXJhdGVkIGJ5IHRoaXMgZmFjdG9yeSBjb252ZXJ0IEVNRiBhZGFwdGVyIG5vdGlmaWNhdGlvbnMgaW50byBjYWxscyB0byB7QGxpbmsgI2ZpcmVOb3RpZnlDaGFuZ2VkIGZpcmVOb3RpZnlDaGFuZ2VkfS4NCisgKiBUaGUgYWRhcHRlcnMgYWxzbyBzdXBwb3J0IEVjbGlwc2UgcHJvcGVydHkgc2hlZXRzLg0KKyAqIE5vdGUgdGhhdCBtb3N0IG9mIHRoZSBhZGFwdGVycyBhcmUgc2hhcmVkIGFtb25nIG11bHRpcGxlIGluc3RhbmNlcy4NCisgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKyAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKyAqIEBnZW5lcmF0ZWQNCisgKi8NCitwdWJsaWMgY2xhc3MgTW9kZWxlbGVtZW50c0l0ZW1Qcm92aWRlckFkYXB0ZXJGYWN0b3J5IGV4dGVuZHMgTW9kZWxlbGVtZW50c0FkYXB0ZXJGYWN0b3J5IGltcGxlbWVudHMgQ29tcG9zZWFibGVBZGFwdGVyRmFjdG9yeSwgSUNoYW5nZU5vdGlmaWVyLCBJRGlzcG9zYWJsZSB7DQorCS8qKg0KKwkgKiBUaGlzIGtlZXBzIHRyYWNrIG9mIHRoZSByb290IGFkYXB0ZXIgZmFjdG9yeSB0aGF0IGRlbGVnYXRlcyB0byB0aGlzIGFkYXB0ZXIgZmFjdG9yeS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXByb3RlY3RlZCBDb21wb3NlZEFkYXB0ZXJGYWN0b3J5IHBhcmVudEFkYXB0ZXJGYWN0b3J5Ow0KKw0KKwkvKioNCisJICogVGhpcyBpcyB1c2VkIHRvIGltcGxlbWVudCB7QGxpbmsgb3JnLmVjbGlwc2UuZW1mLmVkaXQucHJvdmlkZXIuSUNoYW5nZU5vdGlmaWVyfS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXByb3RlY3RlZCBJQ2hhbmdlTm90aWZpZXIgY2hhbmdlTm90aWZpZXIgPSBuZXcgQ2hhbmdlTm90aWZpZXIoKTsNCisNCisJLyoqDQorCSAqIFRoaXMga2VlcHMgdHJhY2sgb2YgYWxsIHRoZSBzdXBwb3J0ZWQgdHlwZXMgY2hlY2tlZCBieSB7QGxpbmsgI2lzRmFjdG9yeUZvclR5cGUgaXNGYWN0b3J5Rm9yVHlwZX0uDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwcm90ZWN0ZWQgQ29sbGVjdGlvbjxPYmplY3Q+IHN1cHBvcnRlZFR5cGVzID0gbmV3IEFycmF5TGlzdDxPYmplY3Q+KCk7DQorDQorCS8qKg0KKwkgKiBUaGlzIGNvbnN0cnVjdHMgYW4gaW5zdGFuY2UuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgTW9kZWxlbGVtZW50c0l0ZW1Qcm92aWRlckFkYXB0ZXJGYWN0b3J5KCkgew0KKwkJc3VwcG9ydGVkVHlwZXMuYWRkKElFZGl0aW5nRG9tYWluSXRlbVByb3ZpZGVyLmNsYXNzKTsNCisJCXN1cHBvcnRlZFR5cGVzLmFkZChJU3RydWN0dXJlZEl0ZW1Db250ZW50UHJvdmlkZXIuY2xhc3MpOw0KKwkJc3VwcG9ydGVkVHlwZXMuYWRkKElUcmVlSXRlbUNvbnRlbnRQcm92aWRlci5jbGFzcyk7DQorCQlzdXBwb3J0ZWRUeXBlcy5hZGQoSUl0ZW1MYWJlbFByb3ZpZGVyLmNsYXNzKTsNCisJCXN1cHBvcnRlZFR5cGVzLmFkZChJSXRlbVByb3BlcnR5U291cmNlLmNsYXNzKTsNCisJfQ0KKw0KKwkvKioNCisJICogVGhpcyBrZWVwcyB0cmFjayBvZiB0aGUgb25lIGFkYXB0ZXIgdXNlZCBmb3IgYWxsIHtAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQubW9kZWxlbGVtZW50cy5SYXRpb25hbGV9IGluc3RhbmNlcy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXByb3RlY3RlZCBSYXRpb25hbGVJdGVtUHJvdmlkZXIgcmF0aW9uYWxlSXRlbVByb3ZpZGVyOw0KKw0KKwkvKioNCisJICogVGhpcyBjcmVhdGVzIGFuIGFkYXB0ZXIgZm9yIGEge0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5tb2RlbGVsZW1lbnRzLlJhdGlvbmFsZX0uDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIEFkYXB0ZXIgY3JlYXRlUmF0aW9uYWxlQWRhcHRlcigpIHsNCisJCWlmIChyYXRpb25hbGVJdGVtUHJvdmlkZXIgPT0gbnVsbCkgew0KKwkJCXJhdGlvbmFsZUl0ZW1Qcm92aWRlciA9IG5ldyBSYXRpb25hbGVJdGVtUHJvdmlkZXIodGhpcyk7DQorCQl9DQorDQorCQlyZXR1cm4gcmF0aW9uYWxlSXRlbVByb3ZpZGVyOw0KKwl9DQorDQorCS8qKg0KKwkgKiBUaGlzIGtlZXBzIHRyYWNrIG9mIHRoZSBvbmUgYWRhcHRlciB1c2VkIGZvciBhbGwge0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5tb2RlbGVsZW1lbnRzLlZpZXd9IGluc3RhbmNlcy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXByb3RlY3RlZCBWaWV3SXRlbVByb3ZpZGVyIHZpZXdJdGVtUHJvdmlkZXI7DQorDQorCS8qKg0KKwkgKiBUaGlzIGNyZWF0ZXMgYW4gYWRhcHRlciBmb3IgYSB7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0Lm1vZGVsZWxlbWVudHMuVmlld30uDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIEFkYXB0ZXIgY3JlYXRlVmlld0FkYXB0ZXIoKSB7DQorCQlpZiAodmlld0l0ZW1Qcm92aWRlciA9PSBudWxsKSB7DQorCQkJdmlld0l0ZW1Qcm92aWRlciA9IG5ldyBWaWV3SXRlbVByb3ZpZGVyKHRoaXMpOw0KKwkJfQ0KKw0KKwkJcmV0dXJuIHZpZXdJdGVtUHJvdmlkZXI7DQorCX0NCisNCisJLyoqDQorCSAqIFRoaXMga2VlcHMgdHJhY2sgb2YgdGhlIG9uZSBhZGFwdGVyIHVzZWQgZm9yIGFsbCB7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0Lm1vZGVsZWxlbWVudHMuVmlld1BvaW50fSBpbnN0YW5jZXMuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwcm90ZWN0ZWQgVmlld1BvaW50SXRlbVByb3ZpZGVyIHZpZXdQb2ludEl0ZW1Qcm92aWRlcjsNCisNCisJLyoqDQorCSAqIFRoaXMgY3JlYXRlcyBhbiBhZGFwdGVyIGZvciBhIHtAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQubW9kZWxlbGVtZW50cy5WaWV3UG9pbnR9Lg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXB1YmxpYyBBZGFwdGVyIGNyZWF0ZVZpZXdQb2ludEFkYXB0ZXIoKSB7DQorCQlpZiAodmlld1BvaW50SXRlbVByb3ZpZGVyID09IG51bGwpIHsNCisJCQl2aWV3UG9pbnRJdGVtUHJvdmlkZXIgPSBuZXcgVmlld1BvaW50SXRlbVByb3ZpZGVyKHRoaXMpOw0KKwkJfQ0KKw0KKwkJcmV0dXJuIHZpZXdQb2ludEl0ZW1Qcm92aWRlcjsNCisJfQ0KKw0KKwkvKioNCisJICogVGhpcyBrZWVwcyB0cmFjayBvZiB0aGUgb25lIGFkYXB0ZXIgdXNlZCBmb3IgYWxsIHtAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQubW9kZWxlbGVtZW50cy5TdGFrZWhvbGRlcn0gaW5zdGFuY2VzLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHJvdGVjdGVkIFN0YWtlaG9sZGVySXRlbVByb3ZpZGVyIHN0YWtlaG9sZGVySXRlbVByb3ZpZGVyOw0KKw0KKwkvKioNCisJICogVGhpcyBjcmVhdGVzIGFuIGFkYXB0ZXIgZm9yIGEge0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5tb2RlbGVsZW1lbnRzLlN0YWtlaG9sZGVyfS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgQWRhcHRlciBjcmVhdGVTdGFrZWhvbGRlckFkYXB0ZXIoKSB7DQorCQlpZiAoc3Rha2Vob2xkZXJJdGVtUHJvdmlkZXIgPT0gbnVsbCkgew0KKwkJCXN0YWtlaG9sZGVySXRlbVByb3ZpZGVyID0gbmV3IFN0YWtlaG9sZGVySXRlbVByb3ZpZGVyKHRoaXMpOw0KKwkJfQ0KKw0KKwkJcmV0dXJuIHN0YWtlaG9sZGVySXRlbVByb3ZpZGVyOw0KKwl9DQorDQorCS8qKg0KKwkgKiBUaGlzIGtlZXBzIHRyYWNrIG9mIHRoZSBvbmUgYWRhcHRlciB1c2VkIGZvciBhbGwge0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5tb2RlbGVsZW1lbnRzLkNvbmZvcm19IGluc3RhbmNlcy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXByb3RlY3RlZCBDb25mb3JtSXRlbVByb3ZpZGVyIGNvbmZvcm1JdGVtUHJvdmlkZXI7DQorDQorCS8qKg0KKwkgKiBUaGlzIGNyZWF0ZXMgYW4gYWRhcHRlciBmb3IgYSB7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0Lm1vZGVsZWxlbWVudHMuQ29uZm9ybX0uDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIEFkYXB0ZXIgY3JlYXRlQ29uZm9ybUFkYXB0ZXIoKSB7DQorCQlpZiAoY29uZm9ybUl0ZW1Qcm92aWRlciA9PSBudWxsKSB7DQorCQkJY29uZm9ybUl0ZW1Qcm92aWRlciA9IG5ldyBDb25mb3JtSXRlbVByb3ZpZGVyKHRoaXMpOw0KKwkJfQ0KKw0KKwkJcmV0dXJuIGNvbmZvcm1JdGVtUHJvdmlkZXI7DQorCX0NCisNCisJLyoqDQorCSAqIFRoaXMga2VlcHMgdHJhY2sgb2YgdGhlIG9uZSBhZGFwdGVyIHVzZWQgZm9yIGFsbCB7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0Lm1vZGVsZWxlbWVudHMuUHJvYmxlbX0gaW5zdGFuY2VzLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHJvdGVjdGVkIFByb2JsZW1JdGVtUHJvdmlkZXIgcHJvYmxlbUl0ZW1Qcm92aWRlcjsNCisNCisJLyoqDQorCSAqIFRoaXMgY3JlYXRlcyBhbiBhZGFwdGVyIGZvciBhIHtAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQubW9kZWxlbGVtZW50cy5Qcm9ibGVtfS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgQWRhcHRlciBjcmVhdGVQcm9ibGVtQWRhcHRlcigpIHsNCisJCWlmIChwcm9ibGVtSXRlbVByb3ZpZGVyID09IG51bGwpIHsNCisJCQlwcm9ibGVtSXRlbVByb3ZpZGVyID0gbmV3IFByb2JsZW1JdGVtUHJvdmlkZXIodGhpcyk7DQorCQl9DQorDQorCQlyZXR1cm4gcHJvYmxlbUl0ZW1Qcm92aWRlcjsNCisJfQ0KKw0KKwkvKioNCisJICogVGhpcyBrZWVwcyB0cmFjayBvZiB0aGUgb25lIGFkYXB0ZXIgdXNlZCBmb3IgYWxsIHtAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQubW9kZWxlbGVtZW50cy5FeHBvc2V9IGluc3RhbmNlcy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXByb3RlY3RlZCBFeHBvc2VJdGVtUHJvdmlkZXIgZXhwb3NlSXRlbVByb3ZpZGVyOw0KKw0KKwkvKioNCisJICogVGhpcyBjcmVhdGVzIGFuIGFkYXB0ZXIgZm9yIGEge0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5tb2RlbGVsZW1lbnRzLkV4cG9zZX0uDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIEFkYXB0ZXIgY3JlYXRlRXhwb3NlQWRhcHRlcigpIHsNCisJCWlmIChleHBvc2VJdGVtUHJvdmlkZXIgPT0gbnVsbCkgew0KKwkJCWV4cG9zZUl0ZW1Qcm92aWRlciA9IG5ldyBFeHBvc2VJdGVtUHJvdmlkZXIodGhpcyk7DQorCQl9DQorDQorCQlyZXR1cm4gZXhwb3NlSXRlbVByb3ZpZGVyOw0KKwl9DQorDQorCS8qKg0KKwkgKiBUaGlzIGtlZXBzIHRyYWNrIG9mIHRoZSBvbmUgYWRhcHRlciB1c2VkIGZvciBhbGwge0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5tb2RlbGVsZW1lbnRzLkVsZW1lbnRHcm91cH0gaW5zdGFuY2VzLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHJvdGVjdGVkIEVsZW1lbnRHcm91cEl0ZW1Qcm92aWRlciBlbGVtZW50R3JvdXBJdGVtUHJvdmlkZXI7DQorDQorCS8qKg0KKwkgKiBUaGlzIGNyZWF0ZXMgYW4gYWRhcHRlciBmb3IgYSB7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0Lm1vZGVsZWxlbWVudHMuRWxlbWVudEdyb3VwfS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgQWRhcHRlciBjcmVhdGVFbGVtZW50R3JvdXBBZGFwdGVyKCkgew0KKwkJaWYgKGVsZW1lbnRHcm91cEl0ZW1Qcm92aWRlciA9PSBudWxsKSB7DQorCQkJZWxlbWVudEdyb3VwSXRlbVByb3ZpZGVyID0gbmV3IEVsZW1lbnRHcm91cEl0ZW1Qcm92aWRlcih0aGlzKTsNCisJCX0NCisNCisJCXJldHVybiBlbGVtZW50R3JvdXBJdGVtUHJvdmlkZXI7DQorCX0NCisNCisJLyoqDQorCSAqIFRoaXMgcmV0dXJucyB0aGUgcm9vdCBhZGFwdGVyIGZhY3RvcnkgdGhhdCBjb250YWlucyB0aGlzIGZhY3RvcnkuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgQ29tcG9zZWFibGVBZGFwdGVyRmFjdG9yeSBnZXRSb290QWRhcHRlckZhY3RvcnkoKSB7DQorCQlyZXR1cm4gcGFyZW50QWRhcHRlckZhY3RvcnkgPT0gbnVsbCA/IHRoaXMgOiBwYXJlbnRBZGFwdGVyRmFjdG9yeS5nZXRSb290QWRhcHRlckZhY3RvcnkoKTsNCisJfQ0KKw0KKwkvKioNCisJICogVGhpcyBzZXRzIHRoZSBjb21wb3NlZCBhZGFwdGVyIGZhY3RvcnkgdGhhdCBjb250YWlucyB0aGlzIGZhY3RvcnkuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgdm9pZCBzZXRQYXJlbnRBZGFwdGVyRmFjdG9yeShDb21wb3NlZEFkYXB0ZXJGYWN0b3J5IHBhcmVudEFkYXB0ZXJGYWN0b3J5KSB7DQorCQl0aGlzLnBhcmVudEFkYXB0ZXJGYWN0b3J5ID0gcGFyZW50QWRhcHRlckZhY3Rvcnk7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIGJvb2xlYW4gaXNGYWN0b3J5Rm9yVHlwZShPYmplY3QgdHlwZSkgew0KKwkJcmV0dXJuIHN1cHBvcnRlZFR5cGVzLmNvbnRhaW5zKHR5cGUpIHx8IHN1cGVyLmlzRmFjdG9yeUZvclR5cGUodHlwZSk7DQorCX0NCisNCisJLyoqDQorCSAqIFRoaXMgaW1wbGVtZW50YXRpb24gc3Vic3RpdHV0ZXMgdGhlIGZhY3RvcnkgaXRzZWxmIGFzIHRoZSBrZXkgZm9yIHRoZSBhZGFwdGVyLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXB1YmxpYyBBZGFwdGVyIGFkYXB0KE5vdGlmaWVyIG5vdGlmaWVyLCBPYmplY3QgdHlwZSkgew0KKwkJcmV0dXJuIHN1cGVyLmFkYXB0KG5vdGlmaWVyLCB0aGlzKTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgT2JqZWN0IGFkYXB0KE9iamVjdCBvYmplY3QsIE9iamVjdCB0eXBlKSB7DQorCQlpZiAoaXNGYWN0b3J5Rm9yVHlwZSh0eXBlKSkgew0KKwkJCU9iamVjdCBhZGFwdGVyID0gc3VwZXIuYWRhcHQob2JqZWN0LCB0eXBlKTsNCisJCQlpZiAoISh0eXBlIGluc3RhbmNlb2YgQ2xhc3M8Pz4pIHx8ICgoKENsYXNzPD8+KXR5cGUpLmlzSW5zdGFuY2UoYWRhcHRlcikpKSB7DQorCQkJCXJldHVybiBhZGFwdGVyOw0KKwkJCX0NCisJCX0NCisNCisJCXJldHVybiBudWxsOw0KKwl9DQorDQorCS8qKg0KKwkgKiBUaGlzIGFkZHMgYSBsaXN0ZW5lci4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyB2b2lkIGFkZExpc3RlbmVyKElOb3RpZnlDaGFuZ2VkTGlzdGVuZXIgbm90aWZ5Q2hhbmdlZExpc3RlbmVyKSB7DQorCQljaGFuZ2VOb3RpZmllci5hZGRMaXN0ZW5lcihub3RpZnlDaGFuZ2VkTGlzdGVuZXIpOw0KKwl9DQorDQorCS8qKg0KKwkgKiBUaGlzIHJlbW92ZXMgYSBsaXN0ZW5lci4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyB2b2lkIHJlbW92ZUxpc3RlbmVyKElOb3RpZnlDaGFuZ2VkTGlzdGVuZXIgbm90aWZ5Q2hhbmdlZExpc3RlbmVyKSB7DQorCQljaGFuZ2VOb3RpZmllci5yZW1vdmVMaXN0ZW5lcihub3RpZnlDaGFuZ2VkTGlzdGVuZXIpOw0KKwl9DQorDQorCS8qKg0KKwkgKiBUaGlzIGRlbGVnYXRlcyB0byB7QGxpbmsgI2NoYW5nZU5vdGlmaWVyfSBhbmQgdG8ge0BsaW5rICNwYXJlbnRBZGFwdGVyRmFjdG9yeX0uDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgdm9pZCBmaXJlTm90aWZ5Q2hhbmdlZChOb3RpZmljYXRpb24gbm90aWZpY2F0aW9uKSB7DQorCQljaGFuZ2VOb3RpZmllci5maXJlTm90aWZ5Q2hhbmdlZChub3RpZmljYXRpb24pOw0KKw0KKwkJaWYgKHBhcmVudEFkYXB0ZXJGYWN0b3J5ICE9IG51bGwpIHsNCisJCQlwYXJlbnRBZGFwdGVyRmFjdG9yeS5maXJlTm90aWZ5Q2hhbmdlZChub3RpZmljYXRpb24pOw0KKwkJfQ0KKwl9DQorDQorCS8qKg0KKwkgKiBUaGlzIGRpc3Bvc2VzIGFsbCBvZiB0aGUgaXRlbSBwcm92aWRlcnMgY3JlYXRlZCBieSB0aGlzIGZhY3RvcnkuIA0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIHZvaWQgZGlzcG9zZSgpIHsNCisJCWlmIChyYXRpb25hbGVJdGVtUHJvdmlkZXIgIT0gbnVsbCkgcmF0aW9uYWxlSXRlbVByb3ZpZGVyLmRpc3Bvc2UoKTsNCisJCWlmICh2aWV3SXRlbVByb3ZpZGVyICE9IG51bGwpIHZpZXdJdGVtUHJvdmlkZXIuZGlzcG9zZSgpOw0KKwkJaWYgKHZpZXdQb2ludEl0ZW1Qcm92aWRlciAhPSBudWxsKSB2aWV3UG9pbnRJdGVtUHJvdmlkZXIuZGlzcG9zZSgpOw0KKwkJaWYgKHN0YWtlaG9sZGVySXRlbVByb3ZpZGVyICE9IG51bGwpIHN0YWtlaG9sZGVySXRlbVByb3ZpZGVyLmRpc3Bvc2UoKTsNCisJCWlmIChjb25mb3JtSXRlbVByb3ZpZGVyICE9IG51bGwpIGNvbmZvcm1JdGVtUHJvdmlkZXIuZGlzcG9zZSgpOw0KKwkJaWYgKHByb2JsZW1JdGVtUHJvdmlkZXIgIT0gbnVsbCkgcHJvYmxlbUl0ZW1Qcm92aWRlci5kaXNwb3NlKCk7DQorCQlpZiAoZXhwb3NlSXRlbVByb3ZpZGVyICE9IG51bGwpIGV4cG9zZUl0ZW1Qcm92aWRlci5kaXNwb3NlKCk7DQorCQlpZiAoZWxlbWVudEdyb3VwSXRlbVByb3ZpZGVyICE9IG51bGwpIGVsZW1lbnRHcm91cEl0ZW1Qcm92aWRlci5kaXNwb3NlKCk7DQorCX0NCisNCit9DQpkaWZmIC0tZ2l0IGEvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZWRpdC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9tb2RlbGVsZW1lbnRzL3Byb3ZpZGVyL1Byb2JsZW1JdGVtUHJvdmlkZXIuamF2YSBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmVkaXQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvbW9kZWxlbGVtZW50cy9wcm92aWRlci9Qcm9ibGVtSXRlbVByb3ZpZGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWNlZmE1OQotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmVkaXQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvbW9kZWxlbGVtZW50cy9wcm92aWRlci9Qcm9ibGVtSXRlbVByb3ZpZGVyLmphdmEKQEAgLTAsMCArMSwxNDkgQEAKKy8qKg0KKyAqIENvcHlyaWdodCAoYykgMjAxNSBDRUEgTElTVC4NCisgKiANCisgKiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KKyAqICBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCisgKiAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCisgKiAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgKi8NCitwYWNrYWdlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5tb2RlbGVsZW1lbnRzLnByb3ZpZGVyOw0KKw0KKw0KK2ltcG9ydCBqYXZhLnV0aWwuQ29sbGVjdGlvbjsNCitpbXBvcnQgamF2YS51dGlsLkxpc3Q7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jb21tb24ubm90aWZ5LkFkYXB0ZXJGYWN0b3J5Ow0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY29tbW9uLm5vdGlmeS5Ob3RpZmljYXRpb247DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jb21tb24udXRpbC5SZXNvdXJjZUxvY2F0b3I7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lZGl0LnByb3ZpZGVyLkNvbXBvc2VhYmxlQWRhcHRlckZhY3Rvcnk7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lZGl0LnByb3ZpZGVyLklFZGl0aW5nRG9tYWluSXRlbVByb3ZpZGVyOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWRpdC5wcm92aWRlci5JSXRlbUxhYmVsUHJvdmlkZXI7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lZGl0LnByb3ZpZGVyLklJdGVtUHJvcGVydHlEZXNjcmlwdG9yOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWRpdC5wcm92aWRlci5JSXRlbVByb3BlcnR5U291cmNlOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWRpdC5wcm92aWRlci5JU3RydWN0dXJlZEl0ZW1Db250ZW50UHJvdmlkZXI7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lZGl0LnByb3ZpZGVyLklUcmVlSXRlbUNvbnRlbnRQcm92aWRlcjsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVkaXQucHJvdmlkZXIuSXRlbVByb3ZpZGVyQWRhcHRlcjsNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0Lm1vZGVsZWxlbWVudHMuTW9kZWxlbGVtZW50c1BhY2thZ2U7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5wcm92aWRlci5TeXNtbEVkaXRQbHVnaW47DQorDQorLyoqDQorICogVGhpcyBpcyB0aGUgaXRlbSBwcm92aWRlciBhZGFwdGVyIGZvciBhIHtAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQubW9kZWxlbGVtZW50cy5Qcm9ibGVtfSBvYmplY3QuDQorICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisgKiBAZ2VuZXJhdGVkDQorICovDQorcHVibGljIGNsYXNzIFByb2JsZW1JdGVtUHJvdmlkZXIgDQorCWV4dGVuZHMgSXRlbVByb3ZpZGVyQWRhcHRlcg0KKwlpbXBsZW1lbnRzDQorCQlJRWRpdGluZ0RvbWFpbkl0ZW1Qcm92aWRlciwNCisJCUlTdHJ1Y3R1cmVkSXRlbUNvbnRlbnRQcm92aWRlciwNCisJCUlUcmVlSXRlbUNvbnRlbnRQcm92aWRlciwNCisJCUlJdGVtTGFiZWxQcm92aWRlciwNCisJCUlJdGVtUHJvcGVydHlTb3VyY2Ugew0KKwkvKioNCisJICogVGhpcyBjb25zdHJ1Y3RzIGFuIGluc3RhbmNlIGZyb20gYSBmYWN0b3J5IGFuZCBhIG5vdGlmaWVyLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIFByb2JsZW1JdGVtUHJvdmlkZXIoQWRhcHRlckZhY3RvcnkgYWRhcHRlckZhY3RvcnkpIHsNCisJCXN1cGVyKGFkYXB0ZXJGYWN0b3J5KTsNCisJfQ0KKw0KKwkvKioNCisJICogVGhpcyByZXR1cm5zIHRoZSBwcm9wZXJ0eSBkZXNjcmlwdG9ycyBmb3IgdGhlIGFkYXB0ZWQgY2xhc3MuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIExpc3Q8SUl0ZW1Qcm9wZXJ0eURlc2NyaXB0b3I+IGdldFByb3BlcnR5RGVzY3JpcHRvcnMoT2JqZWN0IG9iamVjdCkgew0KKwkJaWYgKGl0ZW1Qcm9wZXJ0eURlc2NyaXB0b3JzID09IG51bGwpIHsNCisJCQlzdXBlci5nZXRQcm9wZXJ0eURlc2NyaXB0b3JzKG9iamVjdCk7DQorDQorCQkJYWRkQmFzZV9Db21tZW50UHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCk7DQorCQl9DQorCQlyZXR1cm4gaXRlbVByb3BlcnR5RGVzY3JpcHRvcnM7DQorCX0NCisNCisJLyoqDQorCSAqIFRoaXMgYWRkcyBhIHByb3BlcnR5IGRlc2NyaXB0b3IgZm9yIHRoZSBCYXNlIENvbW1lbnQgZmVhdHVyZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXByb3RlY3RlZCB2b2lkIGFkZEJhc2VfQ29tbWVudFByb3BlcnR5RGVzY3JpcHRvcihPYmplY3Qgb2JqZWN0KSB7DQorCQlpdGVtUHJvcGVydHlEZXNjcmlwdG9ycy5hZGQNCisJCQkoY3JlYXRlSXRlbVByb3BlcnR5RGVzY3JpcHRvcg0KKwkJCQkoKChDb21wb3NlYWJsZUFkYXB0ZXJGYWN0b3J5KWFkYXB0ZXJGYWN0b3J5KS5nZXRSb290QWRhcHRlckZhY3RvcnkoKSwNCisJCQkJIGdldFJlc291cmNlTG9jYXRvcigpLA0KKwkJCQkgZ2V0U3RyaW5nKCJfVUlfUHJvYmxlbV9iYXNlX0NvbW1lbnRfZmVhdHVyZSIpLCAvLyROT04tTkxTLTEkDQorCQkJCSBnZXRTdHJpbmcoIl9VSV9Qcm9wZXJ0eURlc2NyaXB0b3JfZGVzY3JpcHRpb24iLCAiX1VJX1Byb2JsZW1fYmFzZV9Db21tZW50X2ZlYXR1cmUiLCAiX1VJX1Byb2JsZW1fdHlwZSIpLCAvLyROT04tTkxTLTEkIC8vJE5PTi1OTFMtMiQgLy8kTk9OLU5MUy0zJA0KKwkJCQkgTW9kZWxlbGVtZW50c1BhY2thZ2UuTGl0ZXJhbHMuUFJPQkxFTV9fQkFTRV9DT01NRU5ULA0KKwkJCQkgdHJ1ZSwNCisJCQkJIGZhbHNlLA0KKwkJCQkgdHJ1ZSwNCisJCQkJIG51bGwsDQorCQkJCSBudWxsLA0KKwkJCQkgbnVsbCkpOw0KKwl9DQorDQorCS8qKg0KKwkgKiBUaGlzIHJldHVybnMgUHJvYmxlbS5naWYuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIE9iamVjdCBnZXRJbWFnZShPYmplY3Qgb2JqZWN0KSB7DQorCQlyZXR1cm4gb3ZlcmxheUltYWdlKG9iamVjdCwgZ2V0UmVzb3VyY2VMb2NhdG9yKCkuZ2V0SW1hZ2UoImZ1bGwvb2JqMTYvUHJvYmxlbSIpKTsgLy8kTk9OLU5MUy0xJA0KKwl9DQorDQorCS8qKg0KKwkgKiBUaGlzIHJldHVybnMgdGhlIGxhYmVsIHRleHQgZm9yIHRoZSBhZGFwdGVkIGNsYXNzLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXB1YmxpYyBTdHJpbmcgZ2V0VGV4dChPYmplY3Qgb2JqZWN0KSB7DQorCQlyZXR1cm4gZ2V0U3RyaW5nKCJfVUlfUHJvYmxlbV90eXBlIik7IC8vJE5PTi1OTFMtMSQNCisJfQ0KKwkNCisNCisJLyoqDQorCSAqIFRoaXMgaGFuZGxlcyBtb2RlbCBub3RpZmljYXRpb25zIGJ5IGNhbGxpbmcge0BsaW5rICN1cGRhdGVDaGlsZHJlbn0gdG8gdXBkYXRlIGFueSBjYWNoZWQNCisJICogY2hpbGRyZW4gYW5kIGJ5IGNyZWF0aW5nIGEgdmlld2VyIG5vdGlmaWNhdGlvbiwgd2hpY2ggaXQgcGFzc2VzIHRvIHtAbGluayAjZmlyZU5vdGlmeUNoYW5nZWR9Lg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXB1YmxpYyB2b2lkIG5vdGlmeUNoYW5nZWQoTm90aWZpY2F0aW9uIG5vdGlmaWNhdGlvbikgew0KKwkJdXBkYXRlQ2hpbGRyZW4obm90aWZpY2F0aW9uKTsNCisJCXN1cGVyLm5vdGlmeUNoYW5nZWQobm90aWZpY2F0aW9uKTsNCisJfQ0KKw0KKwkvKioNCisJICogVGhpcyBhZGRzIHtAbGluayBvcmcuZWNsaXBzZS5lbWYuZWRpdC5jb21tYW5kLkNvbW1hbmRQYXJhbWV0ZXJ9cyBkZXNjcmliaW5nIHRoZSBjaGlsZHJlbg0KKwkgKiB0aGF0IGNhbiBiZSBjcmVhdGVkIHVuZGVyIHRoaXMgb2JqZWN0Lg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXByb3RlY3RlZCB2b2lkIGNvbGxlY3ROZXdDaGlsZERlc2NyaXB0b3JzKENvbGxlY3Rpb248T2JqZWN0PiBuZXdDaGlsZERlc2NyaXB0b3JzLCBPYmplY3Qgb2JqZWN0KSB7DQorCQlzdXBlci5jb2xsZWN0TmV3Q2hpbGREZXNjcmlwdG9ycyhuZXdDaGlsZERlc2NyaXB0b3JzLCBvYmplY3QpOw0KKwl9DQorDQorCS8qKg0KKwkgKiBSZXR1cm4gdGhlIHJlc291cmNlIGxvY2F0b3IgZm9yIHRoaXMgaXRlbSBwcm92aWRlcidzIHJlc291cmNlcy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgUmVzb3VyY2VMb2NhdG9yIGdldFJlc291cmNlTG9jYXRvcigpIHsNCisJCXJldHVybiBTeXNtbEVkaXRQbHVnaW4uSU5TVEFOQ0U7DQorCX0NCisNCit9DQpkaWZmIC0tZ2l0IGEvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZWRpdC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9tb2RlbGVsZW1lbnRzL3Byb3ZpZGVyL1JhdGlvbmFsZUl0ZW1Qcm92aWRlci5qYXZhIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZWRpdC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9tb2RlbGVsZW1lbnRzL3Byb3ZpZGVyL1JhdGlvbmFsZUl0ZW1Qcm92aWRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ1ZTU5MWUKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5lZGl0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L21vZGVsZWxlbWVudHMvcHJvdmlkZXIvUmF0aW9uYWxlSXRlbVByb3ZpZGVyLmphdmEKQEAgLTAsMCArMSwxNDkgQEAKKy8qKg0KKyAqIENvcHlyaWdodCAoYykgMjAxNSBDRUEgTElTVC4NCisgKiANCisgKiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KKyAqICBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCisgKiAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCisgKiAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgKi8NCitwYWNrYWdlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5tb2RlbGVsZW1lbnRzLnByb3ZpZGVyOw0KKw0KKw0KK2ltcG9ydCBqYXZhLnV0aWwuQ29sbGVjdGlvbjsNCitpbXBvcnQgamF2YS51dGlsLkxpc3Q7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jb21tb24ubm90aWZ5LkFkYXB0ZXJGYWN0b3J5Ow0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY29tbW9uLm5vdGlmeS5Ob3RpZmljYXRpb247DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jb21tb24udXRpbC5SZXNvdXJjZUxvY2F0b3I7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lZGl0LnByb3ZpZGVyLkNvbXBvc2VhYmxlQWRhcHRlckZhY3Rvcnk7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lZGl0LnByb3ZpZGVyLklFZGl0aW5nRG9tYWluSXRlbVByb3ZpZGVyOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWRpdC5wcm92aWRlci5JSXRlbUxhYmVsUHJvdmlkZXI7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lZGl0LnByb3ZpZGVyLklJdGVtUHJvcGVydHlEZXNjcmlwdG9yOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWRpdC5wcm92aWRlci5JSXRlbVByb3BlcnR5U291cmNlOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWRpdC5wcm92aWRlci5JU3RydWN0dXJlZEl0ZW1Db250ZW50UHJvdmlkZXI7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lZGl0LnByb3ZpZGVyLklUcmVlSXRlbUNvbnRlbnRQcm92aWRlcjsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVkaXQucHJvdmlkZXIuSXRlbVByb3ZpZGVyQWRhcHRlcjsNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0Lm1vZGVsZWxlbWVudHMuTW9kZWxlbGVtZW50c1BhY2thZ2U7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5wcm92aWRlci5TeXNtbEVkaXRQbHVnaW47DQorDQorLyoqDQorICogVGhpcyBpcyB0aGUgaXRlbSBwcm92aWRlciBhZGFwdGVyIGZvciBhIHtAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQubW9kZWxlbGVtZW50cy5SYXRpb25hbGV9IG9iamVjdC4NCisgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKyAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKyAqIEBnZW5lcmF0ZWQNCisgKi8NCitwdWJsaWMgY2xhc3MgUmF0aW9uYWxlSXRlbVByb3ZpZGVyIA0KKwlleHRlbmRzIEl0ZW1Qcm92aWRlckFkYXB0ZXINCisJaW1wbGVtZW50cw0KKwkJSUVkaXRpbmdEb21haW5JdGVtUHJvdmlkZXIsDQorCQlJU3RydWN0dXJlZEl0ZW1Db250ZW50UHJvdmlkZXIsDQorCQlJVHJlZUl0ZW1Db250ZW50UHJvdmlkZXIsDQorCQlJSXRlbUxhYmVsUHJvdmlkZXIsDQorCQlJSXRlbVByb3BlcnR5U291cmNlIHsNCisJLyoqDQorCSAqIFRoaXMgY29uc3RydWN0cyBhbiBpbnN0YW5jZSBmcm9tIGEgZmFjdG9yeSBhbmQgYSBub3RpZmllci4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBSYXRpb25hbGVJdGVtUHJvdmlkZXIoQWRhcHRlckZhY3RvcnkgYWRhcHRlckZhY3RvcnkpIHsNCisJCXN1cGVyKGFkYXB0ZXJGYWN0b3J5KTsNCisJfQ0KKw0KKwkvKioNCisJICogVGhpcyByZXR1cm5zIHRoZSBwcm9wZXJ0eSBkZXNjcmlwdG9ycyBmb3IgdGhlIGFkYXB0ZWQgY2xhc3MuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIExpc3Q8SUl0ZW1Qcm9wZXJ0eURlc2NyaXB0b3I+IGdldFByb3BlcnR5RGVzY3JpcHRvcnMoT2JqZWN0IG9iamVjdCkgew0KKwkJaWYgKGl0ZW1Qcm9wZXJ0eURlc2NyaXB0b3JzID09IG51bGwpIHsNCisJCQlzdXBlci5nZXRQcm9wZXJ0eURlc2NyaXB0b3JzKG9iamVjdCk7DQorDQorCQkJYWRkQmFzZV9Db21tZW50UHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCk7DQorCQl9DQorCQlyZXR1cm4gaXRlbVByb3BlcnR5RGVzY3JpcHRvcnM7DQorCX0NCisNCisJLyoqDQorCSAqIFRoaXMgYWRkcyBhIHByb3BlcnR5IGRlc2NyaXB0b3IgZm9yIHRoZSBCYXNlIENvbW1lbnQgZmVhdHVyZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXByb3RlY3RlZCB2b2lkIGFkZEJhc2VfQ29tbWVudFByb3BlcnR5RGVzY3JpcHRvcihPYmplY3Qgb2JqZWN0KSB7DQorCQlpdGVtUHJvcGVydHlEZXNjcmlwdG9ycy5hZGQNCisJCQkoY3JlYXRlSXRlbVByb3BlcnR5RGVzY3JpcHRvcg0KKwkJCQkoKChDb21wb3NlYWJsZUFkYXB0ZXJGYWN0b3J5KWFkYXB0ZXJGYWN0b3J5KS5nZXRSb290QWRhcHRlckZhY3RvcnkoKSwNCisJCQkJIGdldFJlc291cmNlTG9jYXRvcigpLA0KKwkJCQkgZ2V0U3RyaW5nKCJfVUlfUmF0aW9uYWxlX2Jhc2VfQ29tbWVudF9mZWF0dXJlIiksIC8vJE5PTi1OTFMtMSQNCisJCQkJIGdldFN0cmluZygiX1VJX1Byb3BlcnR5RGVzY3JpcHRvcl9kZXNjcmlwdGlvbiIsICJfVUlfUmF0aW9uYWxlX2Jhc2VfQ29tbWVudF9mZWF0dXJlIiwgIl9VSV9SYXRpb25hbGVfdHlwZSIpLCAvLyROT04tTkxTLTEkIC8vJE5PTi1OTFMtMiQgLy8kTk9OLU5MUy0zJA0KKwkJCQkgTW9kZWxlbGVtZW50c1BhY2thZ2UuTGl0ZXJhbHMuUkFUSU9OQUxFX19CQVNFX0NPTU1FTlQsDQorCQkJCSB0cnVlLA0KKwkJCQkgZmFsc2UsDQorCQkJCSB0cnVlLA0KKwkJCQkgbnVsbCwNCisJCQkJIG51bGwsDQorCQkJCSBudWxsKSk7DQorCX0NCisNCisJLyoqDQorCSAqIFRoaXMgcmV0dXJucyBSYXRpb25hbGUuZ2lmLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXB1YmxpYyBPYmplY3QgZ2V0SW1hZ2UoT2JqZWN0IG9iamVjdCkgew0KKwkJcmV0dXJuIG92ZXJsYXlJbWFnZShvYmplY3QsIGdldFJlc291cmNlTG9jYXRvcigpLmdldEltYWdlKCJmdWxsL29iajE2L1JhdGlvbmFsZSIpKTsgLy8kTk9OLU5MUy0xJA0KKwl9DQorDQorCS8qKg0KKwkgKiBUaGlzIHJldHVybnMgdGhlIGxhYmVsIHRleHQgZm9yIHRoZSBhZGFwdGVkIGNsYXNzLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXB1YmxpYyBTdHJpbmcgZ2V0VGV4dChPYmplY3Qgb2JqZWN0KSB7DQorCQlyZXR1cm4gZ2V0U3RyaW5nKCJfVUlfUmF0aW9uYWxlX3R5cGUiKTsgLy8kTk9OLU5MUy0xJA0KKwl9DQorCQ0KKw0KKwkvKioNCisJICogVGhpcyBoYW5kbGVzIG1vZGVsIG5vdGlmaWNhdGlvbnMgYnkgY2FsbGluZyB7QGxpbmsgI3VwZGF0ZUNoaWxkcmVufSB0byB1cGRhdGUgYW55IGNhY2hlZA0KKwkgKiBjaGlsZHJlbiBhbmQgYnkgY3JlYXRpbmcgYSB2aWV3ZXIgbm90aWZpY2F0aW9uLCB3aGljaCBpdCBwYXNzZXMgdG8ge0BsaW5rICNmaXJlTm90aWZ5Q2hhbmdlZH0uDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIHZvaWQgbm90aWZ5Q2hhbmdlZChOb3RpZmljYXRpb24gbm90aWZpY2F0aW9uKSB7DQorCQl1cGRhdGVDaGlsZHJlbihub3RpZmljYXRpb24pOw0KKwkJc3VwZXIubm90aWZ5Q2hhbmdlZChub3RpZmljYXRpb24pOw0KKwl9DQorDQorCS8qKg0KKwkgKiBUaGlzIGFkZHMge0BsaW5rIG9yZy5lY2xpcHNlLmVtZi5lZGl0LmNvbW1hbmQuQ29tbWFuZFBhcmFtZXRlcn1zIGRlc2NyaWJpbmcgdGhlIGNoaWxkcmVuDQorCSAqIHRoYXQgY2FuIGJlIGNyZWF0ZWQgdW5kZXIgdGhpcyBvYmplY3QuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHJvdGVjdGVkIHZvaWQgY29sbGVjdE5ld0NoaWxkRGVzY3JpcHRvcnMoQ29sbGVjdGlvbjxPYmplY3Q+IG5ld0NoaWxkRGVzY3JpcHRvcnMsIE9iamVjdCBvYmplY3QpIHsNCisJCXN1cGVyLmNvbGxlY3ROZXdDaGlsZERlc2NyaXB0b3JzKG5ld0NoaWxkRGVzY3JpcHRvcnMsIG9iamVjdCk7DQorCX0NCisNCisJLyoqDQorCSAqIFJldHVybiB0aGUgcmVzb3VyY2UgbG9jYXRvciBmb3IgdGhpcyBpdGVtIHByb3ZpZGVyJ3MgcmVzb3VyY2VzLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXB1YmxpYyBSZXNvdXJjZUxvY2F0b3IgZ2V0UmVzb3VyY2VMb2NhdG9yKCkgew0KKwkJcmV0dXJuIFN5c21sRWRpdFBsdWdpbi5JTlNUQU5DRTsNCisJfQ0KKw0KK30NCmRpZmYgLS1naXQgYS9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5lZGl0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L21vZGVsZWxlbWVudHMvcHJvdmlkZXIvU3Rha2Vob2xkZXJJdGVtUHJvdmlkZXIuamF2YSBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmVkaXQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvbW9kZWxlbGVtZW50cy9wcm92aWRlci9TdGFrZWhvbGRlckl0ZW1Qcm92aWRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdiZWUyNzEKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5lZGl0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L21vZGVsZWxlbWVudHMvcHJvdmlkZXIvU3Rha2Vob2xkZXJJdGVtUHJvdmlkZXIuamF2YQpAQCAtMCwwICsxLDE5NSBAQAorLyoqDQorICogQ29weXJpZ2h0IChjKSAyMDE1IENFQSBMSVNULg0KKyAqIA0KKyAqICBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQorICogIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KKyAqICB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KKyAqICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqLw0KK3BhY2thZ2Ugb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0Lm1vZGVsZWxlbWVudHMucHJvdmlkZXI7DQorDQorDQoraW1wb3J0IGphdmEudXRpbC5Db2xsZWN0aW9uOw0KK2ltcG9ydCBqYXZhLnV0aWwuTGlzdDsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi5ub3RpZnkuQWRhcHRlckZhY3Rvcnk7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jb21tb24ubm90aWZ5Lk5vdGlmaWNhdGlvbjsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi51dGlsLlJlc291cmNlTG9jYXRvcjsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVkaXQucHJvdmlkZXIuQ29tcG9zZWFibGVBZGFwdGVyRmFjdG9yeTsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVkaXQucHJvdmlkZXIuSUVkaXRpbmdEb21haW5JdGVtUHJvdmlkZXI7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lZGl0LnByb3ZpZGVyLklJdGVtTGFiZWxQcm92aWRlcjsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVkaXQucHJvdmlkZXIuSUl0ZW1Qcm9wZXJ0eURlc2NyaXB0b3I7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lZGl0LnByb3ZpZGVyLklJdGVtUHJvcGVydHlTb3VyY2U7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lZGl0LnByb3ZpZGVyLklTdHJ1Y3R1cmVkSXRlbUNvbnRlbnRQcm92aWRlcjsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVkaXQucHJvdmlkZXIuSVRyZWVJdGVtQ29udGVudFByb3ZpZGVyOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWRpdC5wcm92aWRlci5JdGVtUHJvdmlkZXJBZGFwdGVyOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQubW9kZWxlbGVtZW50cy5Nb2RlbGVsZW1lbnRzUGFja2FnZTsNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnByb3ZpZGVyLlN5c21sRWRpdFBsdWdpbjsNCisNCisvKioNCisgKiBUaGlzIGlzIHRoZSBpdGVtIHByb3ZpZGVyIGFkYXB0ZXIgZm9yIGEge0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5tb2RlbGVsZW1lbnRzLlN0YWtlaG9sZGVyfSBvYmplY3QuDQorICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisgKiBAZ2VuZXJhdGVkDQorICovDQorcHVibGljIGNsYXNzIFN0YWtlaG9sZGVySXRlbVByb3ZpZGVyIA0KKwlleHRlbmRzIEl0ZW1Qcm92aWRlckFkYXB0ZXINCisJaW1wbGVtZW50cw0KKwkJSUVkaXRpbmdEb21haW5JdGVtUHJvdmlkZXIsDQorCQlJU3RydWN0dXJlZEl0ZW1Db250ZW50UHJvdmlkZXIsDQorCQlJVHJlZUl0ZW1Db250ZW50UHJvdmlkZXIsDQorCQlJSXRlbUxhYmVsUHJvdmlkZXIsDQorCQlJSXRlbVByb3BlcnR5U291cmNlIHsNCisJLyoqDQorCSAqIFRoaXMgY29uc3RydWN0cyBhbiBpbnN0YW5jZSBmcm9tIGEgZmFjdG9yeSBhbmQgYSBub3RpZmllci4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBTdGFrZWhvbGRlckl0ZW1Qcm92aWRlcihBZGFwdGVyRmFjdG9yeSBhZGFwdGVyRmFjdG9yeSkgew0KKwkJc3VwZXIoYWRhcHRlckZhY3RvcnkpOw0KKwl9DQorDQorCS8qKg0KKwkgKiBUaGlzIHJldHVybnMgdGhlIHByb3BlcnR5IGRlc2NyaXB0b3JzIGZvciB0aGUgYWRhcHRlZCBjbGFzcy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgTGlzdDxJSXRlbVByb3BlcnR5RGVzY3JpcHRvcj4gZ2V0UHJvcGVydHlEZXNjcmlwdG9ycyhPYmplY3Qgb2JqZWN0KSB7DQorCQlpZiAoaXRlbVByb3BlcnR5RGVzY3JpcHRvcnMgPT0gbnVsbCkgew0KKwkJCXN1cGVyLmdldFByb3BlcnR5RGVzY3JpcHRvcnMob2JqZWN0KTsNCisNCisJCQlhZGRCYXNlX0NsYXNzaWZpZXJQcm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0KTsNCisJCQlhZGRDb25jZXJuUHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCk7DQorCQkJYWRkQ29uY2Vybkxpc3RQcm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0KTsNCisJCX0NCisJCXJldHVybiBpdGVtUHJvcGVydHlEZXNjcmlwdG9yczsNCisJfQ0KKw0KKwkvKioNCisJICogVGhpcyBhZGRzIGEgcHJvcGVydHkgZGVzY3JpcHRvciBmb3IgdGhlIEJhc2UgQ2xhc3NpZmllciBmZWF0dXJlLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHJvdGVjdGVkIHZvaWQgYWRkQmFzZV9DbGFzc2lmaWVyUHJvcGVydHlEZXNjcmlwdG9yKE9iamVjdCBvYmplY3QpIHsNCisJCWl0ZW1Qcm9wZXJ0eURlc2NyaXB0b3JzLmFkZA0KKwkJCShjcmVhdGVJdGVtUHJvcGVydHlEZXNjcmlwdG9yDQorCQkJCSgoKENvbXBvc2VhYmxlQWRhcHRlckZhY3RvcnkpYWRhcHRlckZhY3RvcnkpLmdldFJvb3RBZGFwdGVyRmFjdG9yeSgpLA0KKwkJCQkgZ2V0UmVzb3VyY2VMb2NhdG9yKCksDQorCQkJCSBnZXRTdHJpbmcoIl9VSV9TdGFrZWhvbGRlcl9iYXNlX0NsYXNzaWZpZXJfZmVhdHVyZSIpLCAvLyROT04tTkxTLTEkDQorCQkJCSBnZXRTdHJpbmcoIl9VSV9Qcm9wZXJ0eURlc2NyaXB0b3JfZGVzY3JpcHRpb24iLCAiX1VJX1N0YWtlaG9sZGVyX2Jhc2VfQ2xhc3NpZmllcl9mZWF0dXJlIiwgIl9VSV9TdGFrZWhvbGRlcl90eXBlIiksIC8vJE5PTi1OTFMtMSQgLy8kTk9OLU5MUy0yJCAvLyROT04tTkxTLTMkDQorCQkJCSBNb2RlbGVsZW1lbnRzUGFja2FnZS5MaXRlcmFscy5TVEFLRUhPTERFUl9fQkFTRV9DTEFTU0lGSUVSLA0KKwkJCQkgdHJ1ZSwNCisJCQkJIGZhbHNlLA0KKwkJCQkgdHJ1ZSwNCisJCQkJIG51bGwsDQorCQkJCSBudWxsLA0KKwkJCQkgbnVsbCkpOw0KKwl9DQorDQorCS8qKg0KKwkgKiBUaGlzIGFkZHMgYSBwcm9wZXJ0eSBkZXNjcmlwdG9yIGZvciB0aGUgQ29uY2VybiBmZWF0dXJlLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHJvdGVjdGVkIHZvaWQgYWRkQ29uY2VyblByb3BlcnR5RGVzY3JpcHRvcihPYmplY3Qgb2JqZWN0KSB7DQorCQlpdGVtUHJvcGVydHlEZXNjcmlwdG9ycy5hZGQNCisJCQkoY3JlYXRlSXRlbVByb3BlcnR5RGVzY3JpcHRvcg0KKwkJCQkoKChDb21wb3NlYWJsZUFkYXB0ZXJGYWN0b3J5KWFkYXB0ZXJGYWN0b3J5KS5nZXRSb290QWRhcHRlckZhY3RvcnkoKSwNCisJCQkJIGdldFJlc291cmNlTG9jYXRvcigpLA0KKwkJCQkgZ2V0U3RyaW5nKCJfVUlfU3Rha2Vob2xkZXJfY29uY2Vybl9mZWF0dXJlIiksIC8vJE5PTi1OTFMtMSQNCisJCQkJIGdldFN0cmluZygiX1VJX1Byb3BlcnR5RGVzY3JpcHRvcl9kZXNjcmlwdGlvbiIsICJfVUlfU3Rha2Vob2xkZXJfY29uY2Vybl9mZWF0dXJlIiwgIl9VSV9TdGFrZWhvbGRlcl90eXBlIiksIC8vJE5PTi1OTFMtMSQgLy8kTk9OLU5MUy0yJCAvLyROT04tTkxTLTMkDQorCQkJCSBNb2RlbGVsZW1lbnRzUGFja2FnZS5MaXRlcmFscy5TVEFLRUhPTERFUl9fQ09OQ0VSTiwNCisJCQkJIHRydWUsDQorCQkJCSBmYWxzZSwNCisJCQkJIHRydWUsDQorCQkJCSBudWxsLA0KKwkJCQkgbnVsbCwNCisJCQkJIG51bGwpKTsNCisJfQ0KKw0KKwkvKioNCisJICogVGhpcyBhZGRzIGEgcHJvcGVydHkgZGVzY3JpcHRvciBmb3IgdGhlIENvbmNlcm4gTGlzdCBmZWF0dXJlLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHJvdGVjdGVkIHZvaWQgYWRkQ29uY2Vybkxpc3RQcm9wZXJ0eURlc2NyaXB0b3IoT2JqZWN0IG9iamVjdCkgew0KKwkJaXRlbVByb3BlcnR5RGVzY3JpcHRvcnMuYWRkDQorCQkJKGNyZWF0ZUl0ZW1Qcm9wZXJ0eURlc2NyaXB0b3INCisJCQkJKCgoQ29tcG9zZWFibGVBZGFwdGVyRmFjdG9yeSlhZGFwdGVyRmFjdG9yeSkuZ2V0Um9vdEFkYXB0ZXJGYWN0b3J5KCksDQorCQkJCSBnZXRSZXNvdXJjZUxvY2F0b3IoKSwNCisJCQkJIGdldFN0cmluZygiX1VJX1N0YWtlaG9sZGVyX2NvbmNlcm5MaXN0X2ZlYXR1cmUiKSwgLy8kTk9OLU5MUy0xJA0KKwkJCQkgZ2V0U3RyaW5nKCJfVUlfUHJvcGVydHlEZXNjcmlwdG9yX2Rlc2NyaXB0aW9uIiwgIl9VSV9TdGFrZWhvbGRlcl9jb25jZXJuTGlzdF9mZWF0dXJlIiwgIl9VSV9TdGFrZWhvbGRlcl90eXBlIiksIC8vJE5PTi1OTFMtMSQgLy8kTk9OLU5MUy0yJCAvLyROT04tTkxTLTMkDQorCQkJCSBNb2RlbGVsZW1lbnRzUGFja2FnZS5MaXRlcmFscy5TVEFLRUhPTERFUl9fQ09OQ0VSTl9MSVNULA0KKwkJCQkgdHJ1ZSwNCisJCQkJIGZhbHNlLA0KKwkJCQkgdHJ1ZSwNCisJCQkJIG51bGwsDQorCQkJCSBudWxsLA0KKwkJCQkgbnVsbCkpOw0KKwl9DQorDQorCS8qKg0KKwkgKiBUaGlzIHJldHVybnMgU3Rha2Vob2xkZXIuZ2lmLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXB1YmxpYyBPYmplY3QgZ2V0SW1hZ2UoT2JqZWN0IG9iamVjdCkgew0KKwkJcmV0dXJuIG92ZXJsYXlJbWFnZShvYmplY3QsIGdldFJlc291cmNlTG9jYXRvcigpLmdldEltYWdlKCJmdWxsL29iajE2L1N0YWtlaG9sZGVyIikpOyAvLyROT04tTkxTLTEkDQorCX0NCisNCisJLyoqDQorCSAqIFRoaXMgcmV0dXJucyB0aGUgbGFiZWwgdGV4dCBmb3IgdGhlIGFkYXB0ZWQgY2xhc3MuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIFN0cmluZyBnZXRUZXh0KE9iamVjdCBvYmplY3QpIHsNCisJCXJldHVybiBnZXRTdHJpbmcoIl9VSV9TdGFrZWhvbGRlcl90eXBlIik7IC8vJE5PTi1OTFMtMSQNCisJfQ0KKwkNCisNCisJLyoqDQorCSAqIFRoaXMgaGFuZGxlcyBtb2RlbCBub3RpZmljYXRpb25zIGJ5IGNhbGxpbmcge0BsaW5rICN1cGRhdGVDaGlsZHJlbn0gdG8gdXBkYXRlIGFueSBjYWNoZWQNCisJICogY2hpbGRyZW4gYW5kIGJ5IGNyZWF0aW5nIGEgdmlld2VyIG5vdGlmaWNhdGlvbiwgd2hpY2ggaXQgcGFzc2VzIHRvIHtAbGluayAjZmlyZU5vdGlmeUNoYW5nZWR9Lg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXB1YmxpYyB2b2lkIG5vdGlmeUNoYW5nZWQoTm90aWZpY2F0aW9uIG5vdGlmaWNhdGlvbikgew0KKwkJdXBkYXRlQ2hpbGRyZW4obm90aWZpY2F0aW9uKTsNCisJCXN1cGVyLm5vdGlmeUNoYW5nZWQobm90aWZpY2F0aW9uKTsNCisJfQ0KKw0KKwkvKioNCisJICogVGhpcyBhZGRzIHtAbGluayBvcmcuZWNsaXBzZS5lbWYuZWRpdC5jb21tYW5kLkNvbW1hbmRQYXJhbWV0ZXJ9cyBkZXNjcmliaW5nIHRoZSBjaGlsZHJlbg0KKwkgKiB0aGF0IGNhbiBiZSBjcmVhdGVkIHVuZGVyIHRoaXMgb2JqZWN0Lg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXByb3RlY3RlZCB2b2lkIGNvbGxlY3ROZXdDaGlsZERlc2NyaXB0b3JzKENvbGxlY3Rpb248T2JqZWN0PiBuZXdDaGlsZERlc2NyaXB0b3JzLCBPYmplY3Qgb2JqZWN0KSB7DQorCQlzdXBlci5jb2xsZWN0TmV3Q2hpbGREZXNjcmlwdG9ycyhuZXdDaGlsZERlc2NyaXB0b3JzLCBvYmplY3QpOw0KKwl9DQorDQorCS8qKg0KKwkgKiBSZXR1cm4gdGhlIHJlc291cmNlIGxvY2F0b3IgZm9yIHRoaXMgaXRlbSBwcm92aWRlcidzIHJlc291cmNlcy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgUmVzb3VyY2VMb2NhdG9yIGdldFJlc291cmNlTG9jYXRvcigpIHsNCisJCXJldHVybiBTeXNtbEVkaXRQbHVnaW4uSU5TVEFOQ0U7DQorCX0NCisNCit9DQpkaWZmIC0tZ2l0IGEvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZWRpdC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9tb2RlbGVsZW1lbnRzL3Byb3ZpZGVyL1ZpZXdJdGVtUHJvdmlkZXIuamF2YSBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmVkaXQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvbW9kZWxlbGVtZW50cy9wcm92aWRlci9WaWV3SXRlbVByb3ZpZGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTQ5NTgyZgotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmVkaXQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvbW9kZWxlbGVtZW50cy9wcm92aWRlci9WaWV3SXRlbVByb3ZpZGVyLmphdmEKQEAgLTAsMCArMSwyMTggQEAKKy8qKg0KKyAqIENvcHlyaWdodCAoYykgMjAxNSBDRUEgTElTVC4NCisgKiANCisgKiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KKyAqICBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCisgKiAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCisgKiAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgKi8NCitwYWNrYWdlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5tb2RlbGVsZW1lbnRzLnByb3ZpZGVyOw0KKw0KKw0KK2ltcG9ydCBqYXZhLnV0aWwuQ29sbGVjdGlvbjsNCitpbXBvcnQgamF2YS51dGlsLkxpc3Q7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jb21tb24ubm90aWZ5LkFkYXB0ZXJGYWN0b3J5Ow0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY29tbW9uLm5vdGlmeS5Ob3RpZmljYXRpb247DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jb21tb24udXRpbC5SZXNvdXJjZUxvY2F0b3I7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lZGl0LnByb3ZpZGVyLkNvbXBvc2VhYmxlQWRhcHRlckZhY3Rvcnk7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lZGl0LnByb3ZpZGVyLklFZGl0aW5nRG9tYWluSXRlbVByb3ZpZGVyOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWRpdC5wcm92aWRlci5JSXRlbUxhYmVsUHJvdmlkZXI7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lZGl0LnByb3ZpZGVyLklJdGVtUHJvcGVydHlEZXNjcmlwdG9yOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWRpdC5wcm92aWRlci5JSXRlbVByb3BlcnR5U291cmNlOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWRpdC5wcm92aWRlci5JU3RydWN0dXJlZEl0ZW1Db250ZW50UHJvdmlkZXI7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lZGl0LnByb3ZpZGVyLklUcmVlSXRlbUNvbnRlbnRQcm92aWRlcjsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVkaXQucHJvdmlkZXIuSXRlbVByb3ZpZGVyQWRhcHRlcjsNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0Lm1vZGVsZWxlbWVudHMuTW9kZWxlbGVtZW50c1BhY2thZ2U7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5wcm92aWRlci5TeXNtbEVkaXRQbHVnaW47DQorDQorLyoqDQorICogVGhpcyBpcyB0aGUgaXRlbSBwcm92aWRlciBhZGFwdGVyIGZvciBhIHtAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQubW9kZWxlbGVtZW50cy5WaWV3fSBvYmplY3QuDQorICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisgKiBAZ2VuZXJhdGVkDQorICovDQorcHVibGljIGNsYXNzIFZpZXdJdGVtUHJvdmlkZXIgDQorCWV4dGVuZHMgSXRlbVByb3ZpZGVyQWRhcHRlcg0KKwlpbXBsZW1lbnRzDQorCQlJRWRpdGluZ0RvbWFpbkl0ZW1Qcm92aWRlciwNCisJCUlTdHJ1Y3R1cmVkSXRlbUNvbnRlbnRQcm92aWRlciwNCisJCUlUcmVlSXRlbUNvbnRlbnRQcm92aWRlciwNCisJCUlJdGVtTGFiZWxQcm92aWRlciwNCisJCUlJdGVtUHJvcGVydHlTb3VyY2Ugew0KKwkvKioNCisJICogVGhpcyBjb25zdHJ1Y3RzIGFuIGluc3RhbmNlIGZyb20gYSBmYWN0b3J5IGFuZCBhIG5vdGlmaWVyLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIFZpZXdJdGVtUHJvdmlkZXIoQWRhcHRlckZhY3RvcnkgYWRhcHRlckZhY3RvcnkpIHsNCisJCXN1cGVyKGFkYXB0ZXJGYWN0b3J5KTsNCisJfQ0KKw0KKwkvKioNCisJICogVGhpcyByZXR1cm5zIHRoZSBwcm9wZXJ0eSBkZXNjcmlwdG9ycyBmb3IgdGhlIGFkYXB0ZWQgY2xhc3MuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIExpc3Q8SUl0ZW1Qcm9wZXJ0eURlc2NyaXB0b3I+IGdldFByb3BlcnR5RGVzY3JpcHRvcnMoT2JqZWN0IG9iamVjdCkgew0KKwkJaWYgKGl0ZW1Qcm9wZXJ0eURlc2NyaXB0b3JzID09IG51bGwpIHsNCisJCQlzdXBlci5nZXRQcm9wZXJ0eURlc2NyaXB0b3JzKG9iamVjdCk7DQorDQorCQkJYWRkQmFzZV9QYWNrYWdlUHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCk7DQorCQkJYWRkVmlld1BvaW50UHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCk7DQorCQkJYWRkU3Rha2Vob2xkZXJQcm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0KTsNCisJCQlhZGRCYXNlX0NsYXNzUHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCk7DQorCQl9DQorCQlyZXR1cm4gaXRlbVByb3BlcnR5RGVzY3JpcHRvcnM7DQorCX0NCisNCisJLyoqDQorCSAqIFRoaXMgYWRkcyBhIHByb3BlcnR5IGRlc2NyaXB0b3IgZm9yIHRoZSBCYXNlIFBhY2thZ2UgZmVhdHVyZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXByb3RlY3RlZCB2b2lkIGFkZEJhc2VfUGFja2FnZVByb3BlcnR5RGVzY3JpcHRvcihPYmplY3Qgb2JqZWN0KSB7DQorCQlpdGVtUHJvcGVydHlEZXNjcmlwdG9ycy5hZGQNCisJCQkoY3JlYXRlSXRlbVByb3BlcnR5RGVzY3JpcHRvcg0KKwkJCQkoKChDb21wb3NlYWJsZUFkYXB0ZXJGYWN0b3J5KWFkYXB0ZXJGYWN0b3J5KS5nZXRSb290QWRhcHRlckZhY3RvcnkoKSwNCisJCQkJIGdldFJlc291cmNlTG9jYXRvcigpLA0KKwkJCQkgZ2V0U3RyaW5nKCJfVUlfVmlld19iYXNlX1BhY2thZ2VfZmVhdHVyZSIpLCAvLyROT04tTkxTLTEkDQorCQkJCSBnZXRTdHJpbmcoIl9VSV9Qcm9wZXJ0eURlc2NyaXB0b3JfZGVzY3JpcHRpb24iLCAiX1VJX1ZpZXdfYmFzZV9QYWNrYWdlX2ZlYXR1cmUiLCAiX1VJX1ZpZXdfdHlwZSIpLCAvLyROT04tTkxTLTEkIC8vJE5PTi1OTFMtMiQgLy8kTk9OLU5MUy0zJA0KKwkJCQkgTW9kZWxlbGVtZW50c1BhY2thZ2UuTGl0ZXJhbHMuVklFV19fQkFTRV9QQUNLQUdFLA0KKwkJCQkgdHJ1ZSwNCisJCQkJIGZhbHNlLA0KKwkJCQkgdHJ1ZSwNCisJCQkJIG51bGwsDQorCQkJCSBudWxsLA0KKwkJCQkgbnVsbCkpOw0KKwl9DQorDQorCS8qKg0KKwkgKiBUaGlzIGFkZHMgYSBwcm9wZXJ0eSBkZXNjcmlwdG9yIGZvciB0aGUgVmlldyBQb2ludCBmZWF0dXJlLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHJvdGVjdGVkIHZvaWQgYWRkVmlld1BvaW50UHJvcGVydHlEZXNjcmlwdG9yKE9iamVjdCBvYmplY3QpIHsNCisJCWl0ZW1Qcm9wZXJ0eURlc2NyaXB0b3JzLmFkZA0KKwkJCShjcmVhdGVJdGVtUHJvcGVydHlEZXNjcmlwdG9yDQorCQkJCSgoKENvbXBvc2VhYmxlQWRhcHRlckZhY3RvcnkpYWRhcHRlckZhY3RvcnkpLmdldFJvb3RBZGFwdGVyRmFjdG9yeSgpLA0KKwkJCQkgZ2V0UmVzb3VyY2VMb2NhdG9yKCksDQorCQkJCSBnZXRTdHJpbmcoIl9VSV9WaWV3X3ZpZXdQb2ludF9mZWF0dXJlIiksIC8vJE5PTi1OTFMtMSQNCisJCQkJIGdldFN0cmluZygiX1VJX1Byb3BlcnR5RGVzY3JpcHRvcl9kZXNjcmlwdGlvbiIsICJfVUlfVmlld192aWV3UG9pbnRfZmVhdHVyZSIsICJfVUlfVmlld190eXBlIiksIC8vJE5PTi1OTFMtMSQgLy8kTk9OLU5MUy0yJCAvLyROT04tTkxTLTMkDQorCQkJCSBNb2RlbGVsZW1lbnRzUGFja2FnZS5MaXRlcmFscy5WSUVXX19WSUVXX1BPSU5ULA0KKwkJCQkgdHJ1ZSwNCisJCQkJIGZhbHNlLA0KKwkJCQkgdHJ1ZSwNCisJCQkJIG51bGwsDQorCQkJCSBudWxsLA0KKwkJCQkgbnVsbCkpOw0KKwl9DQorDQorCS8qKg0KKwkgKiBUaGlzIGFkZHMgYSBwcm9wZXJ0eSBkZXNjcmlwdG9yIGZvciB0aGUgU3Rha2Vob2xkZXIgZmVhdHVyZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXByb3RlY3RlZCB2b2lkIGFkZFN0YWtlaG9sZGVyUHJvcGVydHlEZXNjcmlwdG9yKE9iamVjdCBvYmplY3QpIHsNCisJCWl0ZW1Qcm9wZXJ0eURlc2NyaXB0b3JzLmFkZA0KKwkJCShjcmVhdGVJdGVtUHJvcGVydHlEZXNjcmlwdG9yDQorCQkJCSgoKENvbXBvc2VhYmxlQWRhcHRlckZhY3RvcnkpYWRhcHRlckZhY3RvcnkpLmdldFJvb3RBZGFwdGVyRmFjdG9yeSgpLA0KKwkJCQkgZ2V0UmVzb3VyY2VMb2NhdG9yKCksDQorCQkJCSBnZXRTdHJpbmcoIl9VSV9WaWV3X3N0YWtlaG9sZGVyX2ZlYXR1cmUiKSwgLy8kTk9OLU5MUy0xJA0KKwkJCQkgZ2V0U3RyaW5nKCJfVUlfUHJvcGVydHlEZXNjcmlwdG9yX2Rlc2NyaXB0aW9uIiwgIl9VSV9WaWV3X3N0YWtlaG9sZGVyX2ZlYXR1cmUiLCAiX1VJX1ZpZXdfdHlwZSIpLCAvLyROT04tTkxTLTEkIC8vJE5PTi1OTFMtMiQgLy8kTk9OLU5MUy0zJA0KKwkJCQkgTW9kZWxlbGVtZW50c1BhY2thZ2UuTGl0ZXJhbHMuVklFV19fU1RBS0VIT0xERVIsDQorCQkJCSB0cnVlLA0KKwkJCQkgZmFsc2UsDQorCQkJCSB0cnVlLA0KKwkJCQkgbnVsbCwNCisJCQkJIG51bGwsDQorCQkJCSBudWxsKSk7DQorCX0NCisNCisJLyoqDQorCSAqIFRoaXMgYWRkcyBhIHByb3BlcnR5IGRlc2NyaXB0b3IgZm9yIHRoZSBCYXNlIENsYXNzIGZlYXR1cmUuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwcm90ZWN0ZWQgdm9pZCBhZGRCYXNlX0NsYXNzUHJvcGVydHlEZXNjcmlwdG9yKE9iamVjdCBvYmplY3QpIHsNCisJCWl0ZW1Qcm9wZXJ0eURlc2NyaXB0b3JzLmFkZA0KKwkJCShjcmVhdGVJdGVtUHJvcGVydHlEZXNjcmlwdG9yDQorCQkJCSgoKENvbXBvc2VhYmxlQWRhcHRlckZhY3RvcnkpYWRhcHRlckZhY3RvcnkpLmdldFJvb3RBZGFwdGVyRmFjdG9yeSgpLA0KKwkJCQkgZ2V0UmVzb3VyY2VMb2NhdG9yKCksDQorCQkJCSBnZXRTdHJpbmcoIl9VSV9WaWV3X2Jhc2VfQ2xhc3NfZmVhdHVyZSIpLCAvLyROT04tTkxTLTEkDQorCQkJCSBnZXRTdHJpbmcoIl9VSV9Qcm9wZXJ0eURlc2NyaXB0b3JfZGVzY3JpcHRpb24iLCAiX1VJX1ZpZXdfYmFzZV9DbGFzc19mZWF0dXJlIiwgIl9VSV9WaWV3X3R5cGUiKSwgLy8kTk9OLU5MUy0xJCAvLyROT04tTkxTLTIkIC8vJE5PTi1OTFMtMyQNCisJCQkJIE1vZGVsZWxlbWVudHNQYWNrYWdlLkxpdGVyYWxzLlZJRVdfX0JBU0VfQ0xBU1MsDQorCQkJCSB0cnVlLA0KKwkJCQkgZmFsc2UsDQorCQkJCSB0cnVlLA0KKwkJCQkgbnVsbCwNCisJCQkJIG51bGwsDQorCQkJCSBudWxsKSk7DQorCX0NCisNCisJLyoqDQorCSAqIFRoaXMgcmV0dXJucyBWaWV3LmdpZi4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgT2JqZWN0IGdldEltYWdlKE9iamVjdCBvYmplY3QpIHsNCisJCXJldHVybiBvdmVybGF5SW1hZ2Uob2JqZWN0LCBnZXRSZXNvdXJjZUxvY2F0b3IoKS5nZXRJbWFnZSgiZnVsbC9vYmoxNi9WaWV3IikpOyAvLyROT04tTkxTLTEkDQorCX0NCisNCisJLyoqDQorCSAqIFRoaXMgcmV0dXJucyB0aGUgbGFiZWwgdGV4dCBmb3IgdGhlIGFkYXB0ZWQgY2xhc3MuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIFN0cmluZyBnZXRUZXh0KE9iamVjdCBvYmplY3QpIHsNCisJCXJldHVybiBnZXRTdHJpbmcoIl9VSV9WaWV3X3R5cGUiKTsgLy8kTk9OLU5MUy0xJA0KKwl9DQorCQ0KKw0KKwkvKioNCisJICogVGhpcyBoYW5kbGVzIG1vZGVsIG5vdGlmaWNhdGlvbnMgYnkgY2FsbGluZyB7QGxpbmsgI3VwZGF0ZUNoaWxkcmVufSB0byB1cGRhdGUgYW55IGNhY2hlZA0KKwkgKiBjaGlsZHJlbiBhbmQgYnkgY3JlYXRpbmcgYSB2aWV3ZXIgbm90aWZpY2F0aW9uLCB3aGljaCBpdCBwYXNzZXMgdG8ge0BsaW5rICNmaXJlTm90aWZ5Q2hhbmdlZH0uDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIHZvaWQgbm90aWZ5Q2hhbmdlZChOb3RpZmljYXRpb24gbm90aWZpY2F0aW9uKSB7DQorCQl1cGRhdGVDaGlsZHJlbihub3RpZmljYXRpb24pOw0KKwkJc3VwZXIubm90aWZ5Q2hhbmdlZChub3RpZmljYXRpb24pOw0KKwl9DQorDQorCS8qKg0KKwkgKiBUaGlzIGFkZHMge0BsaW5rIG9yZy5lY2xpcHNlLmVtZi5lZGl0LmNvbW1hbmQuQ29tbWFuZFBhcmFtZXRlcn1zIGRlc2NyaWJpbmcgdGhlIGNoaWxkcmVuDQorCSAqIHRoYXQgY2FuIGJlIGNyZWF0ZWQgdW5kZXIgdGhpcyBvYmplY3QuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHJvdGVjdGVkIHZvaWQgY29sbGVjdE5ld0NoaWxkRGVzY3JpcHRvcnMoQ29sbGVjdGlvbjxPYmplY3Q+IG5ld0NoaWxkRGVzY3JpcHRvcnMsIE9iamVjdCBvYmplY3QpIHsNCisJCXN1cGVyLmNvbGxlY3ROZXdDaGlsZERlc2NyaXB0b3JzKG5ld0NoaWxkRGVzY3JpcHRvcnMsIG9iamVjdCk7DQorCX0NCisNCisJLyoqDQorCSAqIFJldHVybiB0aGUgcmVzb3VyY2UgbG9jYXRvciBmb3IgdGhpcyBpdGVtIHByb3ZpZGVyJ3MgcmVzb3VyY2VzLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXB1YmxpYyBSZXNvdXJjZUxvY2F0b3IgZ2V0UmVzb3VyY2VMb2NhdG9yKCkgew0KKwkJcmV0dXJuIFN5c21sRWRpdFBsdWdpbi5JTlNUQU5DRTsNCisJfQ0KKw0KK30NCmRpZmYgLS1naXQgYS9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5lZGl0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L21vZGVsZWxlbWVudHMvcHJvdmlkZXIvVmlld1BvaW50SXRlbVByb3ZpZGVyLmphdmEgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5lZGl0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L21vZGVsZWxlbWVudHMvcHJvdmlkZXIvVmlld1BvaW50SXRlbVByb3ZpZGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTNlNTM4YwotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmVkaXQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvbW9kZWxlbGVtZW50cy9wcm92aWRlci9WaWV3UG9pbnRJdGVtUHJvdmlkZXIuamF2YQpAQCAtMCwwICsxLDMyNSBAQAorLyoqDQorICogQ29weXJpZ2h0IChjKSAyMDE1IENFQSBMSVNULg0KKyAqIA0KKyAqICBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQorICogIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KKyAqICB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KKyAqICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqLw0KK3BhY2thZ2Ugb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0Lm1vZGVsZWxlbWVudHMucHJvdmlkZXI7DQorDQorDQoraW1wb3J0IGphdmEudXRpbC5Db2xsZWN0aW9uOw0KK2ltcG9ydCBqYXZhLnV0aWwuTGlzdDsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi5ub3RpZnkuQWRhcHRlckZhY3Rvcnk7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jb21tb24ubm90aWZ5Lk5vdGlmaWNhdGlvbjsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi51dGlsLlJlc291cmNlTG9jYXRvcjsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVkaXQucHJvdmlkZXIuQ29tcG9zZWFibGVBZGFwdGVyRmFjdG9yeTsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVkaXQucHJvdmlkZXIuSUVkaXRpbmdEb21haW5JdGVtUHJvdmlkZXI7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lZGl0LnByb3ZpZGVyLklJdGVtTGFiZWxQcm92aWRlcjsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVkaXQucHJvdmlkZXIuSUl0ZW1Qcm9wZXJ0eURlc2NyaXB0b3I7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lZGl0LnByb3ZpZGVyLklJdGVtUHJvcGVydHlTb3VyY2U7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lZGl0LnByb3ZpZGVyLklTdHJ1Y3R1cmVkSXRlbUNvbnRlbnRQcm92aWRlcjsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVkaXQucHJvdmlkZXIuSVRyZWVJdGVtQ29udGVudFByb3ZpZGVyOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWRpdC5wcm92aWRlci5JdGVtUHJvcGVydHlEZXNjcmlwdG9yOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWRpdC5wcm92aWRlci5JdGVtUHJvdmlkZXJBZGFwdGVyOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWRpdC5wcm92aWRlci5WaWV3ZXJOb3RpZmljYXRpb247DQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5tb2RlbGVsZW1lbnRzLk1vZGVsZWxlbWVudHNQYWNrYWdlOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQubW9kZWxlbGVtZW50cy5WaWV3UG9pbnQ7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5wcm92aWRlci5TeXNtbEVkaXRQbHVnaW47DQorDQorLyoqDQorICogVGhpcyBpcyB0aGUgaXRlbSBwcm92aWRlciBhZGFwdGVyIGZvciBhIHtAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQubW9kZWxlbGVtZW50cy5WaWV3UG9pbnR9IG9iamVjdC4NCisgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKyAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKyAqIEBnZW5lcmF0ZWQNCisgKi8NCitwdWJsaWMgY2xhc3MgVmlld1BvaW50SXRlbVByb3ZpZGVyIA0KKwlleHRlbmRzIEl0ZW1Qcm92aWRlckFkYXB0ZXINCisJaW1wbGVtZW50cw0KKwkJSUVkaXRpbmdEb21haW5JdGVtUHJvdmlkZXIsDQorCQlJU3RydWN0dXJlZEl0ZW1Db250ZW50UHJvdmlkZXIsDQorCQlJVHJlZUl0ZW1Db250ZW50UHJvdmlkZXIsDQorCQlJSXRlbUxhYmVsUHJvdmlkZXIsDQorCQlJSXRlbVByb3BlcnR5U291cmNlIHsNCisJLyoqDQorCSAqIFRoaXMgY29uc3RydWN0cyBhbiBpbnN0YW5jZSBmcm9tIGEgZmFjdG9yeSBhbmQgYSBub3RpZmllci4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBWaWV3UG9pbnRJdGVtUHJvdmlkZXIoQWRhcHRlckZhY3RvcnkgYWRhcHRlckZhY3RvcnkpIHsNCisJCXN1cGVyKGFkYXB0ZXJGYWN0b3J5KTsNCisJfQ0KKw0KKwkvKioNCisJICogVGhpcyByZXR1cm5zIHRoZSBwcm9wZXJ0eSBkZXNjcmlwdG9ycyBmb3IgdGhlIGFkYXB0ZWQgY2xhc3MuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIExpc3Q8SUl0ZW1Qcm9wZXJ0eURlc2NyaXB0b3I+IGdldFByb3BlcnR5RGVzY3JpcHRvcnMoT2JqZWN0IG9iamVjdCkgew0KKwkJaWYgKGl0ZW1Qcm9wZXJ0eURlc2NyaXB0b3JzID09IG51bGwpIHsNCisJCQlzdXBlci5nZXRQcm9wZXJ0eURlc2NyaXB0b3JzKG9iamVjdCk7DQorDQorCQkJYWRkQmFzZV9DbGFzc1Byb3BlcnR5RGVzY3JpcHRvcihvYmplY3QpOw0KKwkJCWFkZFN0YWtlaG9sZGVyUHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCk7DQorCQkJYWRkUHVycG9zZVByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QpOw0KKwkJCWFkZENvbmNlcm5MaXN0UHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCk7DQorCQkJYWRkTGFuZ3VhZ2VQcm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0KTsNCisJCQlhZGRNZXRob2RQcm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0KTsNCisJCQlhZGRQcmVzZW50YXRpb25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0KTsNCisJCQlhZGRDb25jZXJuUHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCk7DQorCQl9DQorCQlyZXR1cm4gaXRlbVByb3BlcnR5RGVzY3JpcHRvcnM7DQorCX0NCisNCisJLyoqDQorCSAqIFRoaXMgYWRkcyBhIHByb3BlcnR5IGRlc2NyaXB0b3IgZm9yIHRoZSBCYXNlIENsYXNzIGZlYXR1cmUuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwcm90ZWN0ZWQgdm9pZCBhZGRCYXNlX0NsYXNzUHJvcGVydHlEZXNjcmlwdG9yKE9iamVjdCBvYmplY3QpIHsNCisJCWl0ZW1Qcm9wZXJ0eURlc2NyaXB0b3JzLmFkZA0KKwkJCShjcmVhdGVJdGVtUHJvcGVydHlEZXNjcmlwdG9yDQorCQkJCSgoKENvbXBvc2VhYmxlQWRhcHRlckZhY3RvcnkpYWRhcHRlckZhY3RvcnkpLmdldFJvb3RBZGFwdGVyRmFjdG9yeSgpLA0KKwkJCQkgZ2V0UmVzb3VyY2VMb2NhdG9yKCksDQorCQkJCSBnZXRTdHJpbmcoIl9VSV9WaWV3UG9pbnRfYmFzZV9DbGFzc19mZWF0dXJlIiksIC8vJE5PTi1OTFMtMSQNCisJCQkJIGdldFN0cmluZygiX1VJX1Byb3BlcnR5RGVzY3JpcHRvcl9kZXNjcmlwdGlvbiIsICJfVUlfVmlld1BvaW50X2Jhc2VfQ2xhc3NfZmVhdHVyZSIsICJfVUlfVmlld1BvaW50X3R5cGUiKSwgLy8kTk9OLU5MUy0xJCAvLyROT04tTkxTLTIkIC8vJE5PTi1OTFMtMyQNCisJCQkJIE1vZGVsZWxlbWVudHNQYWNrYWdlLkxpdGVyYWxzLlZJRVdfUE9JTlRfX0JBU0VfQ0xBU1MsDQorCQkJCSB0cnVlLA0KKwkJCQkgZmFsc2UsDQorCQkJCSB0cnVlLA0KKwkJCQkgbnVsbCwNCisJCQkJIG51bGwsDQorCQkJCSBudWxsKSk7DQorCX0NCisNCisJLyoqDQorCSAqIFRoaXMgYWRkcyBhIHByb3BlcnR5IGRlc2NyaXB0b3IgZm9yIHRoZSBTdGFrZWhvbGRlciBmZWF0dXJlLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHJvdGVjdGVkIHZvaWQgYWRkU3Rha2Vob2xkZXJQcm9wZXJ0eURlc2NyaXB0b3IoT2JqZWN0IG9iamVjdCkgew0KKwkJaXRlbVByb3BlcnR5RGVzY3JpcHRvcnMuYWRkDQorCQkJKGNyZWF0ZUl0ZW1Qcm9wZXJ0eURlc2NyaXB0b3INCisJCQkJKCgoQ29tcG9zZWFibGVBZGFwdGVyRmFjdG9yeSlhZGFwdGVyRmFjdG9yeSkuZ2V0Um9vdEFkYXB0ZXJGYWN0b3J5KCksDQorCQkJCSBnZXRSZXNvdXJjZUxvY2F0b3IoKSwNCisJCQkJIGdldFN0cmluZygiX1VJX1ZpZXdQb2ludF9zdGFrZWhvbGRlcl9mZWF0dXJlIiksIC8vJE5PTi1OTFMtMSQNCisJCQkJIGdldFN0cmluZygiX1VJX1Byb3BlcnR5RGVzY3JpcHRvcl9kZXNjcmlwdGlvbiIsICJfVUlfVmlld1BvaW50X3N0YWtlaG9sZGVyX2ZlYXR1cmUiLCAiX1VJX1ZpZXdQb2ludF90eXBlIiksIC8vJE5PTi1OTFMtMSQgLy8kTk9OLU5MUy0yJCAvLyROT04tTkxTLTMkDQorCQkJCSBNb2RlbGVsZW1lbnRzUGFja2FnZS5MaXRlcmFscy5WSUVXX1BPSU5UX19TVEFLRUhPTERFUiwNCisJCQkJIHRydWUsDQorCQkJCSBmYWxzZSwNCisJCQkJIHRydWUsDQorCQkJCSBudWxsLA0KKwkJCQkgbnVsbCwNCisJCQkJIG51bGwpKTsNCisJfQ0KKw0KKwkvKioNCisJICogVGhpcyBhZGRzIGEgcHJvcGVydHkgZGVzY3JpcHRvciBmb3IgdGhlIFB1cnBvc2UgZmVhdHVyZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXByb3RlY3RlZCB2b2lkIGFkZFB1cnBvc2VQcm9wZXJ0eURlc2NyaXB0b3IoT2JqZWN0IG9iamVjdCkgew0KKwkJaXRlbVByb3BlcnR5RGVzY3JpcHRvcnMuYWRkDQorCQkJKGNyZWF0ZUl0ZW1Qcm9wZXJ0eURlc2NyaXB0b3INCisJCQkJKCgoQ29tcG9zZWFibGVBZGFwdGVyRmFjdG9yeSlhZGFwdGVyRmFjdG9yeSkuZ2V0Um9vdEFkYXB0ZXJGYWN0b3J5KCksDQorCQkJCSBnZXRSZXNvdXJjZUxvY2F0b3IoKSwNCisJCQkJIGdldFN0cmluZygiX1VJX1ZpZXdQb2ludF9wdXJwb3NlX2ZlYXR1cmUiKSwgLy8kTk9OLU5MUy0xJA0KKwkJCQkgZ2V0U3RyaW5nKCJfVUlfUHJvcGVydHlEZXNjcmlwdG9yX2Rlc2NyaXB0aW9uIiwgIl9VSV9WaWV3UG9pbnRfcHVycG9zZV9mZWF0dXJlIiwgIl9VSV9WaWV3UG9pbnRfdHlwZSIpLCAvLyROT04tTkxTLTEkIC8vJE5PTi1OTFMtMiQgLy8kTk9OLU5MUy0zJA0KKwkJCQkgTW9kZWxlbGVtZW50c1BhY2thZ2UuTGl0ZXJhbHMuVklFV19QT0lOVF9fUFVSUE9TRSwNCisJCQkJIHRydWUsDQorCQkJCSBmYWxzZSwNCisJCQkJIGZhbHNlLA0KKwkJCQkgSXRlbVByb3BlcnR5RGVzY3JpcHRvci5HRU5FUklDX1ZBTFVFX0lNQUdFLA0KKwkJCQkgbnVsbCwNCisJCQkJIG51bGwpKTsNCisJfQ0KKw0KKwkvKioNCisJICogVGhpcyBhZGRzIGEgcHJvcGVydHkgZGVzY3JpcHRvciBmb3IgdGhlIENvbmNlcm4gTGlzdCBmZWF0dXJlLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHJvdGVjdGVkIHZvaWQgYWRkQ29uY2Vybkxpc3RQcm9wZXJ0eURlc2NyaXB0b3IoT2JqZWN0IG9iamVjdCkgew0KKwkJaXRlbVByb3BlcnR5RGVzY3JpcHRvcnMuYWRkDQorCQkJKGNyZWF0ZUl0ZW1Qcm9wZXJ0eURlc2NyaXB0b3INCisJCQkJKCgoQ29tcG9zZWFibGVBZGFwdGVyRmFjdG9yeSlhZGFwdGVyRmFjdG9yeSkuZ2V0Um9vdEFkYXB0ZXJGYWN0b3J5KCksDQorCQkJCSBnZXRSZXNvdXJjZUxvY2F0b3IoKSwNCisJCQkJIGdldFN0cmluZygiX1VJX1ZpZXdQb2ludF9jb25jZXJuTGlzdF9mZWF0dXJlIiksIC8vJE5PTi1OTFMtMSQNCisJCQkJIGdldFN0cmluZygiX1VJX1Byb3BlcnR5RGVzY3JpcHRvcl9kZXNjcmlwdGlvbiIsICJfVUlfVmlld1BvaW50X2NvbmNlcm5MaXN0X2ZlYXR1cmUiLCAiX1VJX1ZpZXdQb2ludF90eXBlIiksIC8vJE5PTi1OTFMtMSQgLy8kTk9OLU5MUy0yJCAvLyROT04tTkxTLTMkDQorCQkJCSBNb2RlbGVsZW1lbnRzUGFja2FnZS5MaXRlcmFscy5WSUVXX1BPSU5UX19DT05DRVJOX0xJU1QsDQorCQkJCSB0cnVlLA0KKwkJCQkgZmFsc2UsDQorCQkJCSB0cnVlLA0KKwkJCQkgbnVsbCwNCisJCQkJIG51bGwsDQorCQkJCSBudWxsKSk7DQorCX0NCisNCisJLyoqDQorCSAqIFRoaXMgYWRkcyBhIHByb3BlcnR5IGRlc2NyaXB0b3IgZm9yIHRoZSBMYW5ndWFnZSBmZWF0dXJlLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHJvdGVjdGVkIHZvaWQgYWRkTGFuZ3VhZ2VQcm9wZXJ0eURlc2NyaXB0b3IoT2JqZWN0IG9iamVjdCkgew0KKwkJaXRlbVByb3BlcnR5RGVzY3JpcHRvcnMuYWRkDQorCQkJKGNyZWF0ZUl0ZW1Qcm9wZXJ0eURlc2NyaXB0b3INCisJCQkJKCgoQ29tcG9zZWFibGVBZGFwdGVyRmFjdG9yeSlhZGFwdGVyRmFjdG9yeSkuZ2V0Um9vdEFkYXB0ZXJGYWN0b3J5KCksDQorCQkJCSBnZXRSZXNvdXJjZUxvY2F0b3IoKSwNCisJCQkJIGdldFN0cmluZygiX1VJX1ZpZXdQb2ludF9sYW5ndWFnZV9mZWF0dXJlIiksIC8vJE5PTi1OTFMtMSQNCisJCQkJIGdldFN0cmluZygiX1VJX1Byb3BlcnR5RGVzY3JpcHRvcl9kZXNjcmlwdGlvbiIsICJfVUlfVmlld1BvaW50X2xhbmd1YWdlX2ZlYXR1cmUiLCAiX1VJX1ZpZXdQb2ludF90eXBlIiksIC8vJE5PTi1OTFMtMSQgLy8kTk9OLU5MUy0yJCAvLyROT04tTkxTLTMkDQorCQkJCSBNb2RlbGVsZW1lbnRzUGFja2FnZS5MaXRlcmFscy5WSUVXX1BPSU5UX19MQU5HVUFHRSwNCisJCQkJIHRydWUsDQorCQkJCSBmYWxzZSwNCisJCQkJIGZhbHNlLA0KKwkJCQkgSXRlbVByb3BlcnR5RGVzY3JpcHRvci5HRU5FUklDX1ZBTFVFX0lNQUdFLA0KKwkJCQkgbnVsbCwNCisJCQkJIG51bGwpKTsNCisJfQ0KKw0KKwkvKioNCisJICogVGhpcyBhZGRzIGEgcHJvcGVydHkgZGVzY3JpcHRvciBmb3IgdGhlIE1ldGhvZCBmZWF0dXJlLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHJvdGVjdGVkIHZvaWQgYWRkTWV0aG9kUHJvcGVydHlEZXNjcmlwdG9yKE9iamVjdCBvYmplY3QpIHsNCisJCWl0ZW1Qcm9wZXJ0eURlc2NyaXB0b3JzLmFkZA0KKwkJCShjcmVhdGVJdGVtUHJvcGVydHlEZXNjcmlwdG9yDQorCQkJCSgoKENvbXBvc2VhYmxlQWRhcHRlckZhY3RvcnkpYWRhcHRlckZhY3RvcnkpLmdldFJvb3RBZGFwdGVyRmFjdG9yeSgpLA0KKwkJCQkgZ2V0UmVzb3VyY2VMb2NhdG9yKCksDQorCQkJCSBnZXRTdHJpbmcoIl9VSV9WaWV3UG9pbnRfbWV0aG9kX2ZlYXR1cmUiKSwgLy8kTk9OLU5MUy0xJA0KKwkJCQkgZ2V0U3RyaW5nKCJfVUlfUHJvcGVydHlEZXNjcmlwdG9yX2Rlc2NyaXB0aW9uIiwgIl9VSV9WaWV3UG9pbnRfbWV0aG9kX2ZlYXR1cmUiLCAiX1VJX1ZpZXdQb2ludF90eXBlIiksIC8vJE5PTi1OTFMtMSQgLy8kTk9OLU5MUy0yJCAvLyROT04tTkxTLTMkDQorCQkJCSBNb2RlbGVsZW1lbnRzUGFja2FnZS5MaXRlcmFscy5WSUVXX1BPSU5UX19NRVRIT0QsDQorCQkJCSB0cnVlLA0KKwkJCQkgZmFsc2UsDQorCQkJCSB0cnVlLA0KKwkJCQkgbnVsbCwNCisJCQkJIG51bGwsDQorCQkJCSBudWxsKSk7DQorCX0NCisNCisJLyoqDQorCSAqIFRoaXMgYWRkcyBhIHByb3BlcnR5IGRlc2NyaXB0b3IgZm9yIHRoZSBQcmVzZW50YXRpb24gZmVhdHVyZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXByb3RlY3RlZCB2b2lkIGFkZFByZXNlbnRhdGlvblByb3BlcnR5RGVzY3JpcHRvcihPYmplY3Qgb2JqZWN0KSB7DQorCQlpdGVtUHJvcGVydHlEZXNjcmlwdG9ycy5hZGQNCisJCQkoY3JlYXRlSXRlbVByb3BlcnR5RGVzY3JpcHRvcg0KKwkJCQkoKChDb21wb3NlYWJsZUFkYXB0ZXJGYWN0b3J5KWFkYXB0ZXJGYWN0b3J5KS5nZXRSb290QWRhcHRlckZhY3RvcnkoKSwNCisJCQkJIGdldFJlc291cmNlTG9jYXRvcigpLA0KKwkJCQkgZ2V0U3RyaW5nKCJfVUlfVmlld1BvaW50X3ByZXNlbnRhdGlvbl9mZWF0dXJlIiksIC8vJE5PTi1OTFMtMSQNCisJCQkJIGdldFN0cmluZygiX1VJX1Byb3BlcnR5RGVzY3JpcHRvcl9kZXNjcmlwdGlvbiIsICJfVUlfVmlld1BvaW50X3ByZXNlbnRhdGlvbl9mZWF0dXJlIiwgIl9VSV9WaWV3UG9pbnRfdHlwZSIpLCAvLyROT04tTkxTLTEkIC8vJE5PTi1OTFMtMiQgLy8kTk9OLU5MUy0zJA0KKwkJCQkgTW9kZWxlbGVtZW50c1BhY2thZ2UuTGl0ZXJhbHMuVklFV19QT0lOVF9fUFJFU0VOVEFUSU9OLA0KKwkJCQkgdHJ1ZSwNCisJCQkJIGZhbHNlLA0KKwkJCQkgZmFsc2UsDQorCQkJCSBJdGVtUHJvcGVydHlEZXNjcmlwdG9yLkdFTkVSSUNfVkFMVUVfSU1BR0UsDQorCQkJCSBudWxsLA0KKwkJCQkgbnVsbCkpOw0KKwl9DQorDQorCS8qKg0KKwkgKiBUaGlzIGFkZHMgYSBwcm9wZXJ0eSBkZXNjcmlwdG9yIGZvciB0aGUgQ29uY2VybiBmZWF0dXJlLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHJvdGVjdGVkIHZvaWQgYWRkQ29uY2VyblByb3BlcnR5RGVzY3JpcHRvcihPYmplY3Qgb2JqZWN0KSB7DQorCQlpdGVtUHJvcGVydHlEZXNjcmlwdG9ycy5hZGQNCisJCQkoY3JlYXRlSXRlbVByb3BlcnR5RGVzY3JpcHRvcg0KKwkJCQkoKChDb21wb3NlYWJsZUFkYXB0ZXJGYWN0b3J5KWFkYXB0ZXJGYWN0b3J5KS5nZXRSb290QWRhcHRlckZhY3RvcnkoKSwNCisJCQkJIGdldFJlc291cmNlTG9jYXRvcigpLA0KKwkJCQkgZ2V0U3RyaW5nKCJfVUlfVmlld1BvaW50X2NvbmNlcm5fZmVhdHVyZSIpLCAvLyROT04tTkxTLTEkDQorCQkJCSBnZXRTdHJpbmcoIl9VSV9Qcm9wZXJ0eURlc2NyaXB0b3JfZGVzY3JpcHRpb24iLCAiX1VJX1ZpZXdQb2ludF9jb25jZXJuX2ZlYXR1cmUiLCAiX1VJX1ZpZXdQb2ludF90eXBlIiksIC8vJE5PTi1OTFMtMSQgLy8kTk9OLU5MUy0yJCAvLyROT04tTkxTLTMkDQorCQkJCSBNb2RlbGVsZW1lbnRzUGFja2FnZS5MaXRlcmFscy5WSUVXX1BPSU5UX19DT05DRVJOLA0KKwkJCQkgdHJ1ZSwNCisJCQkJIGZhbHNlLA0KKwkJCQkgZmFsc2UsDQorCQkJCSBJdGVtUHJvcGVydHlEZXNjcmlwdG9yLkdFTkVSSUNfVkFMVUVfSU1BR0UsDQorCQkJCSBudWxsLA0KKwkJCQkgbnVsbCkpOw0KKwl9DQorDQorCS8qKg0KKwkgKiBUaGlzIHJldHVybnMgVmlld1BvaW50LmdpZi4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgT2JqZWN0IGdldEltYWdlKE9iamVjdCBvYmplY3QpIHsNCisJCXJldHVybiBvdmVybGF5SW1hZ2Uob2JqZWN0LCBnZXRSZXNvdXJjZUxvY2F0b3IoKS5nZXRJbWFnZSgiZnVsbC9vYmoxNi9WaWV3UG9pbnQiKSk7IC8vJE5PTi1OTFMtMSQNCisJfQ0KKw0KKwkvKioNCisJICogVGhpcyByZXR1cm5zIHRoZSBsYWJlbCB0ZXh0IGZvciB0aGUgYWRhcHRlZCBjbGFzcy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgU3RyaW5nIGdldFRleHQoT2JqZWN0IG9iamVjdCkgew0KKwkJU3RyaW5nIGxhYmVsID0gKChWaWV3UG9pbnQpb2JqZWN0KS5nZXRQdXJwb3NlKCk7DQorCQlyZXR1cm4gbGFiZWwgPT0gbnVsbCB8fCBsYWJlbC5sZW5ndGgoKSA9PSAwID8NCisJCQlnZXRTdHJpbmcoIl9VSV9WaWV3UG9pbnRfdHlwZSIpIDogLy8kTk9OLU5MUy0xJA0KKwkJCWdldFN0cmluZygiX1VJX1ZpZXdQb2ludF90eXBlIikgKyAiICIgKyBsYWJlbDsgLy8kTk9OLU5MUy0xJCAvLyROT04tTkxTLTIkDQorCX0NCisJDQorDQorCS8qKg0KKwkgKiBUaGlzIGhhbmRsZXMgbW9kZWwgbm90aWZpY2F0aW9ucyBieSBjYWxsaW5nIHtAbGluayAjdXBkYXRlQ2hpbGRyZW59IHRvIHVwZGF0ZSBhbnkgY2FjaGVkDQorCSAqIGNoaWxkcmVuIGFuZCBieSBjcmVhdGluZyBhIHZpZXdlciBub3RpZmljYXRpb24sIHdoaWNoIGl0IHBhc3NlcyB0byB7QGxpbmsgI2ZpcmVOb3RpZnlDaGFuZ2VkfS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgdm9pZCBub3RpZnlDaGFuZ2VkKE5vdGlmaWNhdGlvbiBub3RpZmljYXRpb24pIHsNCisJCXVwZGF0ZUNoaWxkcmVuKG5vdGlmaWNhdGlvbik7DQorDQorCQlzd2l0Y2ggKG5vdGlmaWNhdGlvbi5nZXRGZWF0dXJlSUQoVmlld1BvaW50LmNsYXNzKSkgew0KKwkJCWNhc2UgTW9kZWxlbGVtZW50c1BhY2thZ2UuVklFV19QT0lOVF9fUFVSUE9TRToNCisJCQljYXNlIE1vZGVsZWxlbWVudHNQYWNrYWdlLlZJRVdfUE9JTlRfX0xBTkdVQUdFOg0KKwkJCWNhc2UgTW9kZWxlbGVtZW50c1BhY2thZ2UuVklFV19QT0lOVF9fUFJFU0VOVEFUSU9OOg0KKwkJCWNhc2UgTW9kZWxlbGVtZW50c1BhY2thZ2UuVklFV19QT0lOVF9fQ09OQ0VSTjoNCisJCQkJZmlyZU5vdGlmeUNoYW5nZWQobmV3IFZpZXdlck5vdGlmaWNhdGlvbihub3RpZmljYXRpb24sIG5vdGlmaWNhdGlvbi5nZXROb3RpZmllcigpLCBmYWxzZSwgdHJ1ZSkpOw0KKwkJCQlyZXR1cm47DQorCQl9DQorCQlzdXBlci5ub3RpZnlDaGFuZ2VkKG5vdGlmaWNhdGlvbik7DQorCX0NCisNCisJLyoqDQorCSAqIFRoaXMgYWRkcyB7QGxpbmsgb3JnLmVjbGlwc2UuZW1mLmVkaXQuY29tbWFuZC5Db21tYW5kUGFyYW1ldGVyfXMgZGVzY3JpYmluZyB0aGUgY2hpbGRyZW4NCisJICogdGhhdCBjYW4gYmUgY3JlYXRlZCB1bmRlciB0aGlzIG9iamVjdC4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwcm90ZWN0ZWQgdm9pZCBjb2xsZWN0TmV3Q2hpbGREZXNjcmlwdG9ycyhDb2xsZWN0aW9uPE9iamVjdD4gbmV3Q2hpbGREZXNjcmlwdG9ycywgT2JqZWN0IG9iamVjdCkgew0KKwkJc3VwZXIuY29sbGVjdE5ld0NoaWxkRGVzY3JpcHRvcnMobmV3Q2hpbGREZXNjcmlwdG9ycywgb2JqZWN0KTsNCisJfQ0KKw0KKwkvKioNCisJICogUmV0dXJuIHRoZSByZXNvdXJjZSBsb2NhdG9yIGZvciB0aGlzIGl0ZW0gcHJvdmlkZXIncyByZXNvdXJjZXMuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIFJlc291cmNlTG9jYXRvciBnZXRSZXNvdXJjZUxvY2F0b3IoKSB7DQorCQlyZXR1cm4gU3lzbWxFZGl0UGx1Z2luLklOU1RBTkNFOw0KKwl9DQorDQorfQ0KZGlmZiAtLWdpdCBhL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmVkaXQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvcG9ydGFuZGZsb3dzL3Byb3ZpZGVyL0FjY2VwdENoYW5nZVN0cnVjdHVyYWxGZWF0dXJlRXZlbnRBY3Rpb25JdGVtUHJvdmlkZXIuamF2YSBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmVkaXQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvcG9ydGFuZGZsb3dzL3Byb3ZpZGVyL0FjY2VwdENoYW5nZVN0cnVjdHVyYWxGZWF0dXJlRXZlbnRBY3Rpb25JdGVtUHJvdmlkZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jM2ZiNWVhCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZWRpdC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9wb3J0YW5kZmxvd3MvcHJvdmlkZXIvQWNjZXB0Q2hhbmdlU3RydWN0dXJhbEZlYXR1cmVFdmVudEFjdGlvbkl0ZW1Qcm92aWRlci5qYXZhCkBAIC0wLDAgKzEsMTQ5IEBACisvKioNCisgKiBDb3B5cmlnaHQgKGMpIDIwMTUgQ0VBIExJU1QuDQorICogDQorICogIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCisgKiAgYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQorICogIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQorICogIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICovDQorcGFja2FnZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucG9ydGFuZGZsb3dzLnByb3ZpZGVyOw0KKw0KKw0KK2ltcG9ydCBqYXZhLnV0aWwuQ29sbGVjdGlvbjsNCitpbXBvcnQgamF2YS51dGlsLkxpc3Q7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jb21tb24ubm90aWZ5LkFkYXB0ZXJGYWN0b3J5Ow0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY29tbW9uLm5vdGlmeS5Ob3RpZmljYXRpb247DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jb21tb24udXRpbC5SZXNvdXJjZUxvY2F0b3I7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lZGl0LnByb3ZpZGVyLkNvbXBvc2VhYmxlQWRhcHRlckZhY3Rvcnk7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lZGl0LnByb3ZpZGVyLklFZGl0aW5nRG9tYWluSXRlbVByb3ZpZGVyOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWRpdC5wcm92aWRlci5JSXRlbUxhYmVsUHJvdmlkZXI7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lZGl0LnByb3ZpZGVyLklJdGVtUHJvcGVydHlEZXNjcmlwdG9yOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWRpdC5wcm92aWRlci5JSXRlbVByb3BlcnR5U291cmNlOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWRpdC5wcm92aWRlci5JU3RydWN0dXJlZEl0ZW1Db250ZW50UHJvdmlkZXI7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lZGl0LnByb3ZpZGVyLklUcmVlSXRlbUNvbnRlbnRQcm92aWRlcjsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVkaXQucHJvdmlkZXIuSXRlbVByb3ZpZGVyQWRhcHRlcjsNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnBvcnRhbmRmbG93cy5Qb3J0YW5kZmxvd3NQYWNrYWdlOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucHJvdmlkZXIuU3lzbWxFZGl0UGx1Z2luOw0KKw0KKy8qKg0KKyAqIFRoaXMgaXMgdGhlIGl0ZW0gcHJvdmlkZXIgYWRhcHRlciBmb3IgYSB7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnBvcnRhbmRmbG93cy5BY2NlcHRDaGFuZ2VTdHJ1Y3R1cmFsRmVhdHVyZUV2ZW50QWN0aW9ufSBvYmplY3QuDQorICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisgKiBAZ2VuZXJhdGVkDQorICovDQorcHVibGljIGNsYXNzIEFjY2VwdENoYW5nZVN0cnVjdHVyYWxGZWF0dXJlRXZlbnRBY3Rpb25JdGVtUHJvdmlkZXIgDQorCWV4dGVuZHMgSXRlbVByb3ZpZGVyQWRhcHRlcg0KKwlpbXBsZW1lbnRzDQorCQlJRWRpdGluZ0RvbWFpbkl0ZW1Qcm92aWRlciwNCisJCUlTdHJ1Y3R1cmVkSXRlbUNvbnRlbnRQcm92aWRlciwNCisJCUlUcmVlSXRlbUNvbnRlbnRQcm92aWRlciwNCisJCUlJdGVtTGFiZWxQcm92aWRlciwNCisJCUlJdGVtUHJvcGVydHlTb3VyY2Ugew0KKwkvKioNCisJICogVGhpcyBjb25zdHJ1Y3RzIGFuIGluc3RhbmNlIGZyb20gYSBmYWN0b3J5IGFuZCBhIG5vdGlmaWVyLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIEFjY2VwdENoYW5nZVN0cnVjdHVyYWxGZWF0dXJlRXZlbnRBY3Rpb25JdGVtUHJvdmlkZXIoQWRhcHRlckZhY3RvcnkgYWRhcHRlckZhY3RvcnkpIHsNCisJCXN1cGVyKGFkYXB0ZXJGYWN0b3J5KTsNCisJfQ0KKw0KKwkvKioNCisJICogVGhpcyByZXR1cm5zIHRoZSBwcm9wZXJ0eSBkZXNjcmlwdG9ycyBmb3IgdGhlIGFkYXB0ZWQgY2xhc3MuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIExpc3Q8SUl0ZW1Qcm9wZXJ0eURlc2NyaXB0b3I+IGdldFByb3BlcnR5RGVzY3JpcHRvcnMoT2JqZWN0IG9iamVjdCkgew0KKwkJaWYgKGl0ZW1Qcm9wZXJ0eURlc2NyaXB0b3JzID09IG51bGwpIHsNCisJCQlzdXBlci5nZXRQcm9wZXJ0eURlc2NyaXB0b3JzKG9iamVjdCk7DQorDQorCQkJYWRkQmFzZV9BY2NlcHRFdmVudEFjdGlvblByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QpOw0KKwkJfQ0KKwkJcmV0dXJuIGl0ZW1Qcm9wZXJ0eURlc2NyaXB0b3JzOw0KKwl9DQorDQorCS8qKg0KKwkgKiBUaGlzIGFkZHMgYSBwcm9wZXJ0eSBkZXNjcmlwdG9yIGZvciB0aGUgQmFzZSBBY2NlcHQgRXZlbnQgQWN0aW9uIGZlYXR1cmUuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwcm90ZWN0ZWQgdm9pZCBhZGRCYXNlX0FjY2VwdEV2ZW50QWN0aW9uUHJvcGVydHlEZXNjcmlwdG9yKE9iamVjdCBvYmplY3QpIHsNCisJCWl0ZW1Qcm9wZXJ0eURlc2NyaXB0b3JzLmFkZA0KKwkJCShjcmVhdGVJdGVtUHJvcGVydHlEZXNjcmlwdG9yDQorCQkJCSgoKENvbXBvc2VhYmxlQWRhcHRlckZhY3RvcnkpYWRhcHRlckZhY3RvcnkpLmdldFJvb3RBZGFwdGVyRmFjdG9yeSgpLA0KKwkJCQkgZ2V0UmVzb3VyY2VMb2NhdG9yKCksDQorCQkJCSBnZXRTdHJpbmcoIl9VSV9BY2NlcHRDaGFuZ2VTdHJ1Y3R1cmFsRmVhdHVyZUV2ZW50QWN0aW9uX2Jhc2VfQWNjZXB0RXZlbnRBY3Rpb25fZmVhdHVyZSIpLCAvLyROT04tTkxTLTEkDQorCQkJCSBnZXRTdHJpbmcoIl9VSV9Qcm9wZXJ0eURlc2NyaXB0b3JfZGVzY3JpcHRpb24iLCAiX1VJX0FjY2VwdENoYW5nZVN0cnVjdHVyYWxGZWF0dXJlRXZlbnRBY3Rpb25fYmFzZV9BY2NlcHRFdmVudEFjdGlvbl9mZWF0dXJlIiwgIl9VSV9BY2NlcHRDaGFuZ2VTdHJ1Y3R1cmFsRmVhdHVyZUV2ZW50QWN0aW9uX3R5cGUiKSwgLy8kTk9OLU5MUy0xJCAvLyROT04tTkxTLTIkIC8vJE5PTi1OTFMtMyQNCisJCQkJIFBvcnRhbmRmbG93c1BhY2thZ2UuTGl0ZXJhbHMuQUNDRVBUX0NIQU5HRV9TVFJVQ1RVUkFMX0ZFQVRVUkVfRVZFTlRfQUNUSU9OX19CQVNFX0FDQ0VQVF9FVkVOVF9BQ1RJT04sDQorCQkJCSB0cnVlLA0KKwkJCQkgZmFsc2UsDQorCQkJCSB0cnVlLA0KKwkJCQkgbnVsbCwNCisJCQkJIG51bGwsDQorCQkJCSBudWxsKSk7DQorCX0NCisNCisJLyoqDQorCSAqIFRoaXMgcmV0dXJucyBBY2NlcHRDaGFuZ2VTdHJ1Y3R1cmFsRmVhdHVyZUV2ZW50QWN0aW9uLmdpZi4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgT2JqZWN0IGdldEltYWdlKE9iamVjdCBvYmplY3QpIHsNCisJCXJldHVybiBvdmVybGF5SW1hZ2Uob2JqZWN0LCBnZXRSZXNvdXJjZUxvY2F0b3IoKS5nZXRJbWFnZSgiZnVsbC9vYmoxNi9BY2NlcHRDaGFuZ2VTdHJ1Y3R1cmFsRmVhdHVyZUV2ZW50QWN0aW9uIikpOyAvLyROT04tTkxTLTEkDQorCX0NCisNCisJLyoqDQorCSAqIFRoaXMgcmV0dXJucyB0aGUgbGFiZWwgdGV4dCBmb3IgdGhlIGFkYXB0ZWQgY2xhc3MuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIFN0cmluZyBnZXRUZXh0KE9iamVjdCBvYmplY3QpIHsNCisJCXJldHVybiBnZXRTdHJpbmcoIl9VSV9BY2NlcHRDaGFuZ2VTdHJ1Y3R1cmFsRmVhdHVyZUV2ZW50QWN0aW9uX3R5cGUiKTsgLy8kTk9OLU5MUy0xJA0KKwl9DQorCQ0KKw0KKwkvKioNCisJICogVGhpcyBoYW5kbGVzIG1vZGVsIG5vdGlmaWNhdGlvbnMgYnkgY2FsbGluZyB7QGxpbmsgI3VwZGF0ZUNoaWxkcmVufSB0byB1cGRhdGUgYW55IGNhY2hlZA0KKwkgKiBjaGlsZHJlbiBhbmQgYnkgY3JlYXRpbmcgYSB2aWV3ZXIgbm90aWZpY2F0aW9uLCB3aGljaCBpdCBwYXNzZXMgdG8ge0BsaW5rICNmaXJlTm90aWZ5Q2hhbmdlZH0uDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIHZvaWQgbm90aWZ5Q2hhbmdlZChOb3RpZmljYXRpb24gbm90aWZpY2F0aW9uKSB7DQorCQl1cGRhdGVDaGlsZHJlbihub3RpZmljYXRpb24pOw0KKwkJc3VwZXIubm90aWZ5Q2hhbmdlZChub3RpZmljYXRpb24pOw0KKwl9DQorDQorCS8qKg0KKwkgKiBUaGlzIGFkZHMge0BsaW5rIG9yZy5lY2xpcHNlLmVtZi5lZGl0LmNvbW1hbmQuQ29tbWFuZFBhcmFtZXRlcn1zIGRlc2NyaWJpbmcgdGhlIGNoaWxkcmVuDQorCSAqIHRoYXQgY2FuIGJlIGNyZWF0ZWQgdW5kZXIgdGhpcyBvYmplY3QuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHJvdGVjdGVkIHZvaWQgY29sbGVjdE5ld0NoaWxkRGVzY3JpcHRvcnMoQ29sbGVjdGlvbjxPYmplY3Q+IG5ld0NoaWxkRGVzY3JpcHRvcnMsIE9iamVjdCBvYmplY3QpIHsNCisJCXN1cGVyLmNvbGxlY3ROZXdDaGlsZERlc2NyaXB0b3JzKG5ld0NoaWxkRGVzY3JpcHRvcnMsIG9iamVjdCk7DQorCX0NCisNCisJLyoqDQorCSAqIFJldHVybiB0aGUgcmVzb3VyY2UgbG9jYXRvciBmb3IgdGhpcyBpdGVtIHByb3ZpZGVyJ3MgcmVzb3VyY2VzLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXB1YmxpYyBSZXNvdXJjZUxvY2F0b3IgZ2V0UmVzb3VyY2VMb2NhdG9yKCkgew0KKwkJcmV0dXJuIFN5c21sRWRpdFBsdWdpbi5JTlNUQU5DRTsNCisJfQ0KKw0KK30NCmRpZmYgLS1naXQgYS9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5lZGl0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L3BvcnRhbmRmbG93cy9wcm92aWRlci9DaGFuZ2VTdHJ1Y3R1cmFsRmVhdHVyZUV2ZW50SXRlbVByb3ZpZGVyLmphdmEgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5lZGl0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L3BvcnRhbmRmbG93cy9wcm92aWRlci9DaGFuZ2VTdHJ1Y3R1cmFsRmVhdHVyZUV2ZW50SXRlbVByb3ZpZGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzc0OWIyOQotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmVkaXQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvcG9ydGFuZGZsb3dzL3Byb3ZpZGVyL0NoYW5nZVN0cnVjdHVyYWxGZWF0dXJlRXZlbnRJdGVtUHJvdmlkZXIuamF2YQpAQCAtMCwwICsxLDE3MiBAQAorLyoqDQorICogQ29weXJpZ2h0IChjKSAyMDE1IENFQSBMSVNULg0KKyAqIA0KKyAqICBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQorICogIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KKyAqICB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KKyAqICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqLw0KK3BhY2thZ2Ugb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnBvcnRhbmRmbG93cy5wcm92aWRlcjsNCisNCisNCitpbXBvcnQgamF2YS51dGlsLkNvbGxlY3Rpb247DQoraW1wb3J0IGphdmEudXRpbC5MaXN0Ow0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY29tbW9uLm5vdGlmeS5BZGFwdGVyRmFjdG9yeTsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi5ub3RpZnkuTm90aWZpY2F0aW9uOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY29tbW9uLnV0aWwuUmVzb3VyY2VMb2NhdG9yOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWRpdC5wcm92aWRlci5Db21wb3NlYWJsZUFkYXB0ZXJGYWN0b3J5Ow0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWRpdC5wcm92aWRlci5JRWRpdGluZ0RvbWFpbkl0ZW1Qcm92aWRlcjsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVkaXQucHJvdmlkZXIuSUl0ZW1MYWJlbFByb3ZpZGVyOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWRpdC5wcm92aWRlci5JSXRlbVByb3BlcnR5RGVzY3JpcHRvcjsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVkaXQucHJvdmlkZXIuSUl0ZW1Qcm9wZXJ0eVNvdXJjZTsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVkaXQucHJvdmlkZXIuSVN0cnVjdHVyZWRJdGVtQ29udGVudFByb3ZpZGVyOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWRpdC5wcm92aWRlci5JVHJlZUl0ZW1Db250ZW50UHJvdmlkZXI7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lZGl0LnByb3ZpZGVyLkl0ZW1Qcm92aWRlckFkYXB0ZXI7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5wb3J0YW5kZmxvd3MuUG9ydGFuZGZsb3dzUGFja2FnZTsNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnByb3ZpZGVyLlN5c21sRWRpdFBsdWdpbjsNCisNCisvKioNCisgKiBUaGlzIGlzIHRoZSBpdGVtIHByb3ZpZGVyIGFkYXB0ZXIgZm9yIGEge0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5wb3J0YW5kZmxvd3MuQ2hhbmdlU3RydWN0dXJhbEZlYXR1cmVFdmVudH0gb2JqZWN0Lg0KKyAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorICogQGdlbmVyYXRlZA0KKyAqLw0KK3B1YmxpYyBjbGFzcyBDaGFuZ2VTdHJ1Y3R1cmFsRmVhdHVyZUV2ZW50SXRlbVByb3ZpZGVyIA0KKwlleHRlbmRzIEl0ZW1Qcm92aWRlckFkYXB0ZXINCisJaW1wbGVtZW50cw0KKwkJSUVkaXRpbmdEb21haW5JdGVtUHJvdmlkZXIsDQorCQlJU3RydWN0dXJlZEl0ZW1Db250ZW50UHJvdmlkZXIsDQorCQlJVHJlZUl0ZW1Db250ZW50UHJvdmlkZXIsDQorCQlJSXRlbUxhYmVsUHJvdmlkZXIsDQorCQlJSXRlbVByb3BlcnR5U291cmNlIHsNCisJLyoqDQorCSAqIFRoaXMgY29uc3RydWN0cyBhbiBpbnN0YW5jZSBmcm9tIGEgZmFjdG9yeSBhbmQgYSBub3RpZmllci4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBDaGFuZ2VTdHJ1Y3R1cmFsRmVhdHVyZUV2ZW50SXRlbVByb3ZpZGVyKEFkYXB0ZXJGYWN0b3J5IGFkYXB0ZXJGYWN0b3J5KSB7DQorCQlzdXBlcihhZGFwdGVyRmFjdG9yeSk7DQorCX0NCisNCisJLyoqDQorCSAqIFRoaXMgcmV0dXJucyB0aGUgcHJvcGVydHkgZGVzY3JpcHRvcnMgZm9yIHRoZSBhZGFwdGVkIGNsYXNzLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXB1YmxpYyBMaXN0PElJdGVtUHJvcGVydHlEZXNjcmlwdG9yPiBnZXRQcm9wZXJ0eURlc2NyaXB0b3JzKE9iamVjdCBvYmplY3QpIHsNCisJCWlmIChpdGVtUHJvcGVydHlEZXNjcmlwdG9ycyA9PSBudWxsKSB7DQorCQkJc3VwZXIuZ2V0UHJvcGVydHlEZXNjcmlwdG9ycyhvYmplY3QpOw0KKw0KKwkJCWFkZEJhc2VfQ2hhbmdlRXZlbnRQcm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0KTsNCisJCQlhZGRTdHJ1Y3R1cmFsRmVhdHVyZVByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QpOw0KKwkJfQ0KKwkJcmV0dXJuIGl0ZW1Qcm9wZXJ0eURlc2NyaXB0b3JzOw0KKwl9DQorDQorCS8qKg0KKwkgKiBUaGlzIGFkZHMgYSBwcm9wZXJ0eSBkZXNjcmlwdG9yIGZvciB0aGUgQmFzZSBDaGFuZ2UgRXZlbnQgZmVhdHVyZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXByb3RlY3RlZCB2b2lkIGFkZEJhc2VfQ2hhbmdlRXZlbnRQcm9wZXJ0eURlc2NyaXB0b3IoT2JqZWN0IG9iamVjdCkgew0KKwkJaXRlbVByb3BlcnR5RGVzY3JpcHRvcnMuYWRkDQorCQkJKGNyZWF0ZUl0ZW1Qcm9wZXJ0eURlc2NyaXB0b3INCisJCQkJKCgoQ29tcG9zZWFibGVBZGFwdGVyRmFjdG9yeSlhZGFwdGVyRmFjdG9yeSkuZ2V0Um9vdEFkYXB0ZXJGYWN0b3J5KCksDQorCQkJCSBnZXRSZXNvdXJjZUxvY2F0b3IoKSwNCisJCQkJIGdldFN0cmluZygiX1VJX0NoYW5nZVN0cnVjdHVyYWxGZWF0dXJlRXZlbnRfYmFzZV9DaGFuZ2VFdmVudF9mZWF0dXJlIiksIC8vJE5PTi1OTFMtMSQNCisJCQkJIGdldFN0cmluZygiX1VJX1Byb3BlcnR5RGVzY3JpcHRvcl9kZXNjcmlwdGlvbiIsICJfVUlfQ2hhbmdlU3RydWN0dXJhbEZlYXR1cmVFdmVudF9iYXNlX0NoYW5nZUV2ZW50X2ZlYXR1cmUiLCAiX1VJX0NoYW5nZVN0cnVjdHVyYWxGZWF0dXJlRXZlbnRfdHlwZSIpLCAvLyROT04tTkxTLTEkIC8vJE5PTi1OTFMtMiQgLy8kTk9OLU5MUy0zJA0KKwkJCQkgUG9ydGFuZGZsb3dzUGFja2FnZS5MaXRlcmFscy5DSEFOR0VfU1RSVUNUVVJBTF9GRUFUVVJFX0VWRU5UX19CQVNFX0NIQU5HRV9FVkVOVCwNCisJCQkJIHRydWUsDQorCQkJCSBmYWxzZSwNCisJCQkJIHRydWUsDQorCQkJCSBudWxsLA0KKwkJCQkgbnVsbCwNCisJCQkJIG51bGwpKTsNCisJfQ0KKw0KKwkvKioNCisJICogVGhpcyBhZGRzIGEgcHJvcGVydHkgZGVzY3JpcHRvciBmb3IgdGhlIFN0cnVjdHVyYWwgRmVhdHVyZSBmZWF0dXJlLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHJvdGVjdGVkIHZvaWQgYWRkU3RydWN0dXJhbEZlYXR1cmVQcm9wZXJ0eURlc2NyaXB0b3IoT2JqZWN0IG9iamVjdCkgew0KKwkJaXRlbVByb3BlcnR5RGVzY3JpcHRvcnMuYWRkDQorCQkJKGNyZWF0ZUl0ZW1Qcm9wZXJ0eURlc2NyaXB0b3INCisJCQkJKCgoQ29tcG9zZWFibGVBZGFwdGVyRmFjdG9yeSlhZGFwdGVyRmFjdG9yeSkuZ2V0Um9vdEFkYXB0ZXJGYWN0b3J5KCksDQorCQkJCSBnZXRSZXNvdXJjZUxvY2F0b3IoKSwNCisJCQkJIGdldFN0cmluZygiX1VJX0NoYW5nZVN0cnVjdHVyYWxGZWF0dXJlRXZlbnRfc3RydWN0dXJhbEZlYXR1cmVfZmVhdHVyZSIpLCAvLyROT04tTkxTLTEkDQorCQkJCSBnZXRTdHJpbmcoIl9VSV9Qcm9wZXJ0eURlc2NyaXB0b3JfZGVzY3JpcHRpb24iLCAiX1VJX0NoYW5nZVN0cnVjdHVyYWxGZWF0dXJlRXZlbnRfc3RydWN0dXJhbEZlYXR1cmVfZmVhdHVyZSIsICJfVUlfQ2hhbmdlU3RydWN0dXJhbEZlYXR1cmVFdmVudF90eXBlIiksIC8vJE5PTi1OTFMtMSQgLy8kTk9OLU5MUy0yJCAvLyROT04tTkxTLTMkDQorCQkJCSBQb3J0YW5kZmxvd3NQYWNrYWdlLkxpdGVyYWxzLkNIQU5HRV9TVFJVQ1RVUkFMX0ZFQVRVUkVfRVZFTlRfX1NUUlVDVFVSQUxfRkVBVFVSRSwNCisJCQkJIHRydWUsDQorCQkJCSBmYWxzZSwNCisJCQkJIHRydWUsDQorCQkJCSBudWxsLA0KKwkJCQkgbnVsbCwNCisJCQkJIG51bGwpKTsNCisJfQ0KKw0KKwkvKioNCisJICogVGhpcyByZXR1cm5zIENoYW5nZVN0cnVjdHVyYWxGZWF0dXJlRXZlbnQuZ2lmLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXB1YmxpYyBPYmplY3QgZ2V0SW1hZ2UoT2JqZWN0IG9iamVjdCkgew0KKwkJcmV0dXJuIG92ZXJsYXlJbWFnZShvYmplY3QsIGdldFJlc291cmNlTG9jYXRvcigpLmdldEltYWdlKCJmdWxsL29iajE2L0NoYW5nZVN0cnVjdHVyYWxGZWF0dXJlRXZlbnQiKSk7IC8vJE5PTi1OTFMtMSQNCisJfQ0KKw0KKwkvKioNCisJICogVGhpcyByZXR1cm5zIHRoZSBsYWJlbCB0ZXh0IGZvciB0aGUgYWRhcHRlZCBjbGFzcy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgU3RyaW5nIGdldFRleHQoT2JqZWN0IG9iamVjdCkgew0KKwkJcmV0dXJuIGdldFN0cmluZygiX1VJX0NoYW5nZVN0cnVjdHVyYWxGZWF0dXJlRXZlbnRfdHlwZSIpOyAvLyROT04tTkxTLTEkDQorCX0NCisJDQorDQorCS8qKg0KKwkgKiBUaGlzIGhhbmRsZXMgbW9kZWwgbm90aWZpY2F0aW9ucyBieSBjYWxsaW5nIHtAbGluayAjdXBkYXRlQ2hpbGRyZW59IHRvIHVwZGF0ZSBhbnkgY2FjaGVkDQorCSAqIGNoaWxkcmVuIGFuZCBieSBjcmVhdGluZyBhIHZpZXdlciBub3RpZmljYXRpb24sIHdoaWNoIGl0IHBhc3NlcyB0byB7QGxpbmsgI2ZpcmVOb3RpZnlDaGFuZ2VkfS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgdm9pZCBub3RpZnlDaGFuZ2VkKE5vdGlmaWNhdGlvbiBub3RpZmljYXRpb24pIHsNCisJCXVwZGF0ZUNoaWxkcmVuKG5vdGlmaWNhdGlvbik7DQorCQlzdXBlci5ub3RpZnlDaGFuZ2VkKG5vdGlmaWNhdGlvbik7DQorCX0NCisNCisJLyoqDQorCSAqIFRoaXMgYWRkcyB7QGxpbmsgb3JnLmVjbGlwc2UuZW1mLmVkaXQuY29tbWFuZC5Db21tYW5kUGFyYW1ldGVyfXMgZGVzY3JpYmluZyB0aGUgY2hpbGRyZW4NCisJICogdGhhdCBjYW4gYmUgY3JlYXRlZCB1bmRlciB0aGlzIG9iamVjdC4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwcm90ZWN0ZWQgdm9pZCBjb2xsZWN0TmV3Q2hpbGREZXNjcmlwdG9ycyhDb2xsZWN0aW9uPE9iamVjdD4gbmV3Q2hpbGREZXNjcmlwdG9ycywgT2JqZWN0IG9iamVjdCkgew0KKwkJc3VwZXIuY29sbGVjdE5ld0NoaWxkRGVzY3JpcHRvcnMobmV3Q2hpbGREZXNjcmlwdG9ycywgb2JqZWN0KTsNCisJfQ0KKw0KKwkvKioNCisJICogUmV0dXJuIHRoZSByZXNvdXJjZSBsb2NhdG9yIGZvciB0aGlzIGl0ZW0gcHJvdmlkZXIncyByZXNvdXJjZXMuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIFJlc291cmNlTG9jYXRvciBnZXRSZXNvdXJjZUxvY2F0b3IoKSB7DQorCQlyZXR1cm4gU3lzbWxFZGl0UGx1Z2luLklOU1RBTkNFOw0KKwl9DQorDQorfQ0KZGlmZiAtLWdpdCBhL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmVkaXQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvcG9ydGFuZGZsb3dzL3Byb3ZpZGVyL0RpcmVjdGVkRmVhdHVyZUl0ZW1Qcm92aWRlci5qYXZhIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZWRpdC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9wb3J0YW5kZmxvd3MvcHJvdmlkZXIvRGlyZWN0ZWRGZWF0dXJlSXRlbVByb3ZpZGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGViZjVkNwotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmVkaXQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvcG9ydGFuZGZsb3dzL3Byb3ZpZGVyL0RpcmVjdGVkRmVhdHVyZUl0ZW1Qcm92aWRlci5qYXZhCkBAIC0wLDAgKzEsMTg2IEBACisvKioNCisgKiBDb3B5cmlnaHQgKGMpIDIwMTUgQ0VBIExJU1QuDQorICogDQorICogIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCisgKiAgYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQorICogIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQorICogIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICovDQorcGFja2FnZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucG9ydGFuZGZsb3dzLnByb3ZpZGVyOw0KKw0KKw0KK2ltcG9ydCBqYXZhLnV0aWwuQ29sbGVjdGlvbjsNCitpbXBvcnQgamF2YS51dGlsLkxpc3Q7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jb21tb24ubm90aWZ5LkFkYXB0ZXJGYWN0b3J5Ow0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY29tbW9uLm5vdGlmeS5Ob3RpZmljYXRpb247DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jb21tb24udXRpbC5SZXNvdXJjZUxvY2F0b3I7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lZGl0LnByb3ZpZGVyLkNvbXBvc2VhYmxlQWRhcHRlckZhY3Rvcnk7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lZGl0LnByb3ZpZGVyLklFZGl0aW5nRG9tYWluSXRlbVByb3ZpZGVyOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWRpdC5wcm92aWRlci5JSXRlbUxhYmVsUHJvdmlkZXI7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lZGl0LnByb3ZpZGVyLklJdGVtUHJvcGVydHlEZXNjcmlwdG9yOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWRpdC5wcm92aWRlci5JSXRlbVByb3BlcnR5U291cmNlOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWRpdC5wcm92aWRlci5JU3RydWN0dXJlZEl0ZW1Db250ZW50UHJvdmlkZXI7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lZGl0LnByb3ZpZGVyLklUcmVlSXRlbUNvbnRlbnRQcm92aWRlcjsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVkaXQucHJvdmlkZXIuSXRlbVByb3BlcnR5RGVzY3JpcHRvcjsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVkaXQucHJvdmlkZXIuSXRlbVByb3ZpZGVyQWRhcHRlcjsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVkaXQucHJvdmlkZXIuVmlld2VyTm90aWZpY2F0aW9uOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucG9ydGFuZGZsb3dzLkRpcmVjdGVkRmVhdHVyZTsNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnBvcnRhbmRmbG93cy5GZWF0dXJlRGlyZWN0aW9uOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucG9ydGFuZGZsb3dzLlBvcnRhbmRmbG93c1BhY2thZ2U7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5wcm92aWRlci5TeXNtbEVkaXRQbHVnaW47DQorDQorLyoqDQorICogVGhpcyBpcyB0aGUgaXRlbSBwcm92aWRlciBhZGFwdGVyIGZvciBhIHtAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucG9ydGFuZGZsb3dzLkRpcmVjdGVkRmVhdHVyZX0gb2JqZWN0Lg0KKyAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorICogQGdlbmVyYXRlZA0KKyAqLw0KK3B1YmxpYyBjbGFzcyBEaXJlY3RlZEZlYXR1cmVJdGVtUHJvdmlkZXIgDQorCWV4dGVuZHMgSXRlbVByb3ZpZGVyQWRhcHRlcg0KKwlpbXBsZW1lbnRzDQorCQlJRWRpdGluZ0RvbWFpbkl0ZW1Qcm92aWRlciwNCisJCUlTdHJ1Y3R1cmVkSXRlbUNvbnRlbnRQcm92aWRlciwNCisJCUlUcmVlSXRlbUNvbnRlbnRQcm92aWRlciwNCisJCUlJdGVtTGFiZWxQcm92aWRlciwNCisJCUlJdGVtUHJvcGVydHlTb3VyY2Ugew0KKwkvKioNCisJICogVGhpcyBjb25zdHJ1Y3RzIGFuIGluc3RhbmNlIGZyb20gYSBmYWN0b3J5IGFuZCBhIG5vdGlmaWVyLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIERpcmVjdGVkRmVhdHVyZUl0ZW1Qcm92aWRlcihBZGFwdGVyRmFjdG9yeSBhZGFwdGVyRmFjdG9yeSkgew0KKwkJc3VwZXIoYWRhcHRlckZhY3RvcnkpOw0KKwl9DQorDQorCS8qKg0KKwkgKiBUaGlzIHJldHVybnMgdGhlIHByb3BlcnR5IGRlc2NyaXB0b3JzIGZvciB0aGUgYWRhcHRlZCBjbGFzcy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgTGlzdDxJSXRlbVByb3BlcnR5RGVzY3JpcHRvcj4gZ2V0UHJvcGVydHlEZXNjcmlwdG9ycyhPYmplY3Qgb2JqZWN0KSB7DQorCQlpZiAoaXRlbVByb3BlcnR5RGVzY3JpcHRvcnMgPT0gbnVsbCkgew0KKwkJCXN1cGVyLmdldFByb3BlcnR5RGVzY3JpcHRvcnMob2JqZWN0KTsNCisNCisJCQlhZGRCYXNlX0ZlYXR1cmVQcm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0KTsNCisJCQlhZGRGZWF0dXJlRGlyZWN0aW9uUHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCk7DQorCQl9DQorCQlyZXR1cm4gaXRlbVByb3BlcnR5RGVzY3JpcHRvcnM7DQorCX0NCisNCisJLyoqDQorCSAqIFRoaXMgYWRkcyBhIHByb3BlcnR5IGRlc2NyaXB0b3IgZm9yIHRoZSBCYXNlIEZlYXR1cmUgZmVhdHVyZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXByb3RlY3RlZCB2b2lkIGFkZEJhc2VfRmVhdHVyZVByb3BlcnR5RGVzY3JpcHRvcihPYmplY3Qgb2JqZWN0KSB7DQorCQlpdGVtUHJvcGVydHlEZXNjcmlwdG9ycy5hZGQNCisJCQkoY3JlYXRlSXRlbVByb3BlcnR5RGVzY3JpcHRvcg0KKwkJCQkoKChDb21wb3NlYWJsZUFkYXB0ZXJGYWN0b3J5KWFkYXB0ZXJGYWN0b3J5KS5nZXRSb290QWRhcHRlckZhY3RvcnkoKSwNCisJCQkJIGdldFJlc291cmNlTG9jYXRvcigpLA0KKwkJCQkgZ2V0U3RyaW5nKCJfVUlfRGlyZWN0ZWRGZWF0dXJlX2Jhc2VfRmVhdHVyZV9mZWF0dXJlIiksIC8vJE5PTi1OTFMtMSQNCisJCQkJIGdldFN0cmluZygiX1VJX1Byb3BlcnR5RGVzY3JpcHRvcl9kZXNjcmlwdGlvbiIsICJfVUlfRGlyZWN0ZWRGZWF0dXJlX2Jhc2VfRmVhdHVyZV9mZWF0dXJlIiwgIl9VSV9EaXJlY3RlZEZlYXR1cmVfdHlwZSIpLCAvLyROT04tTkxTLTEkIC8vJE5PTi1OTFMtMiQgLy8kTk9OLU5MUy0zJA0KKwkJCQkgUG9ydGFuZGZsb3dzUGFja2FnZS5MaXRlcmFscy5ESVJFQ1RFRF9GRUFUVVJFX19CQVNFX0ZFQVRVUkUsDQorCQkJCSB0cnVlLA0KKwkJCQkgZmFsc2UsDQorCQkJCSB0cnVlLA0KKwkJCQkgbnVsbCwNCisJCQkJIG51bGwsDQorCQkJCSBudWxsKSk7DQorCX0NCisNCisJLyoqDQorCSAqIFRoaXMgYWRkcyBhIHByb3BlcnR5IGRlc2NyaXB0b3IgZm9yIHRoZSBGZWF0dXJlIERpcmVjdGlvbiBmZWF0dXJlLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHJvdGVjdGVkIHZvaWQgYWRkRmVhdHVyZURpcmVjdGlvblByb3BlcnR5RGVzY3JpcHRvcihPYmplY3Qgb2JqZWN0KSB7DQorCQlpdGVtUHJvcGVydHlEZXNjcmlwdG9ycy5hZGQNCisJCQkoY3JlYXRlSXRlbVByb3BlcnR5RGVzY3JpcHRvcg0KKwkJCQkoKChDb21wb3NlYWJsZUFkYXB0ZXJGYWN0b3J5KWFkYXB0ZXJGYWN0b3J5KS5nZXRSb290QWRhcHRlckZhY3RvcnkoKSwNCisJCQkJIGdldFJlc291cmNlTG9jYXRvcigpLA0KKwkJCQkgZ2V0U3RyaW5nKCJfVUlfRGlyZWN0ZWRGZWF0dXJlX2ZlYXR1cmVEaXJlY3Rpb25fZmVhdHVyZSIpLCAvLyROT04tTkxTLTEkDQorCQkJCSBnZXRTdHJpbmcoIl9VSV9Qcm9wZXJ0eURlc2NyaXB0b3JfZGVzY3JpcHRpb24iLCAiX1VJX0RpcmVjdGVkRmVhdHVyZV9mZWF0dXJlRGlyZWN0aW9uX2ZlYXR1cmUiLCAiX1VJX0RpcmVjdGVkRmVhdHVyZV90eXBlIiksIC8vJE5PTi1OTFMtMSQgLy8kTk9OLU5MUy0yJCAvLyROT04tTkxTLTMkDQorCQkJCSBQb3J0YW5kZmxvd3NQYWNrYWdlLkxpdGVyYWxzLkRJUkVDVEVEX0ZFQVRVUkVfX0ZFQVRVUkVfRElSRUNUSU9OLA0KKwkJCQkgdHJ1ZSwNCisJCQkJIGZhbHNlLA0KKwkJCQkgZmFsc2UsDQorCQkJCSBJdGVtUHJvcGVydHlEZXNjcmlwdG9yLkdFTkVSSUNfVkFMVUVfSU1BR0UsDQorCQkJCSBudWxsLA0KKwkJCQkgbnVsbCkpOw0KKwl9DQorDQorCS8qKg0KKwkgKiBUaGlzIHJldHVybnMgRGlyZWN0ZWRGZWF0dXJlLmdpZi4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgT2JqZWN0IGdldEltYWdlKE9iamVjdCBvYmplY3QpIHsNCisJCXJldHVybiBvdmVybGF5SW1hZ2Uob2JqZWN0LCBnZXRSZXNvdXJjZUxvY2F0b3IoKS5nZXRJbWFnZSgiZnVsbC9vYmoxNi9EaXJlY3RlZEZlYXR1cmUiKSk7IC8vJE5PTi1OTFMtMSQNCisJfQ0KKw0KKwkvKioNCisJICogVGhpcyByZXR1cm5zIHRoZSBsYWJlbCB0ZXh0IGZvciB0aGUgYWRhcHRlZCBjbGFzcy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgU3RyaW5nIGdldFRleHQoT2JqZWN0IG9iamVjdCkgew0KKwkJRmVhdHVyZURpcmVjdGlvbiBsYWJlbFZhbHVlID0gKChEaXJlY3RlZEZlYXR1cmUpb2JqZWN0KS5nZXRGZWF0dXJlRGlyZWN0aW9uKCk7DQorCQlTdHJpbmcgbGFiZWwgPSBsYWJlbFZhbHVlID09IG51bGwgPyBudWxsIDogbGFiZWxWYWx1ZS50b1N0cmluZygpOw0KKwkJcmV0dXJuIGxhYmVsID09IG51bGwgfHwgbGFiZWwubGVuZ3RoKCkgPT0gMCA/DQorCQkJZ2V0U3RyaW5nKCJfVUlfRGlyZWN0ZWRGZWF0dXJlX3R5cGUiKSA6IC8vJE5PTi1OTFMtMSQNCisJCQlnZXRTdHJpbmcoIl9VSV9EaXJlY3RlZEZlYXR1cmVfdHlwZSIpICsgIiAiICsgbGFiZWw7IC8vJE5PTi1OTFMtMSQgLy8kTk9OLU5MUy0yJA0KKwl9DQorCQ0KKw0KKwkvKioNCisJICogVGhpcyBoYW5kbGVzIG1vZGVsIG5vdGlmaWNhdGlvbnMgYnkgY2FsbGluZyB7QGxpbmsgI3VwZGF0ZUNoaWxkcmVufSB0byB1cGRhdGUgYW55IGNhY2hlZA0KKwkgKiBjaGlsZHJlbiBhbmQgYnkgY3JlYXRpbmcgYSB2aWV3ZXIgbm90aWZpY2F0aW9uLCB3aGljaCBpdCBwYXNzZXMgdG8ge0BsaW5rICNmaXJlTm90aWZ5Q2hhbmdlZH0uDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIHZvaWQgbm90aWZ5Q2hhbmdlZChOb3RpZmljYXRpb24gbm90aWZpY2F0aW9uKSB7DQorCQl1cGRhdGVDaGlsZHJlbihub3RpZmljYXRpb24pOw0KKw0KKwkJc3dpdGNoIChub3RpZmljYXRpb24uZ2V0RmVhdHVyZUlEKERpcmVjdGVkRmVhdHVyZS5jbGFzcykpIHsNCisJCQljYXNlIFBvcnRhbmRmbG93c1BhY2thZ2UuRElSRUNURURfRkVBVFVSRV9fRkVBVFVSRV9ESVJFQ1RJT046DQorCQkJCWZpcmVOb3RpZnlDaGFuZ2VkKG5ldyBWaWV3ZXJOb3RpZmljYXRpb24obm90aWZpY2F0aW9uLCBub3RpZmljYXRpb24uZ2V0Tm90aWZpZXIoKSwgZmFsc2UsIHRydWUpKTsNCisJCQkJcmV0dXJuOw0KKwkJfQ0KKwkJc3VwZXIubm90aWZ5Q2hhbmdlZChub3RpZmljYXRpb24pOw0KKwl9DQorDQorCS8qKg0KKwkgKiBUaGlzIGFkZHMge0BsaW5rIG9yZy5lY2xpcHNlLmVtZi5lZGl0LmNvbW1hbmQuQ29tbWFuZFBhcmFtZXRlcn1zIGRlc2NyaWJpbmcgdGhlIGNoaWxkcmVuDQorCSAqIHRoYXQgY2FuIGJlIGNyZWF0ZWQgdW5kZXIgdGhpcyBvYmplY3QuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHJvdGVjdGVkIHZvaWQgY29sbGVjdE5ld0NoaWxkRGVzY3JpcHRvcnMoQ29sbGVjdGlvbjxPYmplY3Q+IG5ld0NoaWxkRGVzY3JpcHRvcnMsIE9iamVjdCBvYmplY3QpIHsNCisJCXN1cGVyLmNvbGxlY3ROZXdDaGlsZERlc2NyaXB0b3JzKG5ld0NoaWxkRGVzY3JpcHRvcnMsIG9iamVjdCk7DQorCX0NCisNCisJLyoqDQorCSAqIFJldHVybiB0aGUgcmVzb3VyY2UgbG9jYXRvciBmb3IgdGhpcyBpdGVtIHByb3ZpZGVyJ3MgcmVzb3VyY2VzLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXB1YmxpYyBSZXNvdXJjZUxvY2F0b3IgZ2V0UmVzb3VyY2VMb2NhdG9yKCkgew0KKwkJcmV0dXJuIFN5c21sRWRpdFBsdWdpbi5JTlNUQU5DRTsNCisJfQ0KKw0KK30NCmRpZmYgLS1naXQgYS9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5lZGl0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L3BvcnRhbmRmbG93cy9wcm92aWRlci9GbG93UHJvcGVydHlJdGVtUHJvdmlkZXIuamF2YSBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmVkaXQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvcG9ydGFuZGZsb3dzL3Byb3ZpZGVyL0Zsb3dQcm9wZXJ0eUl0ZW1Qcm92aWRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJmN2ZhN2MKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5lZGl0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L3BvcnRhbmRmbG93cy9wcm92aWRlci9GbG93UHJvcGVydHlJdGVtUHJvdmlkZXIuamF2YQpAQCAtMCwwICsxLDE4NiBAQAorLyoqDQorICogQ29weXJpZ2h0IChjKSAyMDE1IENFQSBMSVNULg0KKyAqIA0KKyAqICBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQorICogIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KKyAqICB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KKyAqICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqLw0KK3BhY2thZ2Ugb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnBvcnRhbmRmbG93cy5wcm92aWRlcjsNCisNCisNCitpbXBvcnQgamF2YS51dGlsLkNvbGxlY3Rpb247DQoraW1wb3J0IGphdmEudXRpbC5MaXN0Ow0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY29tbW9uLm5vdGlmeS5BZGFwdGVyRmFjdG9yeTsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi5ub3RpZnkuTm90aWZpY2F0aW9uOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY29tbW9uLnV0aWwuUmVzb3VyY2VMb2NhdG9yOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWRpdC5wcm92aWRlci5Db21wb3NlYWJsZUFkYXB0ZXJGYWN0b3J5Ow0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWRpdC5wcm92aWRlci5JRWRpdGluZ0RvbWFpbkl0ZW1Qcm92aWRlcjsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVkaXQucHJvdmlkZXIuSUl0ZW1MYWJlbFByb3ZpZGVyOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWRpdC5wcm92aWRlci5JSXRlbVByb3BlcnR5RGVzY3JpcHRvcjsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVkaXQucHJvdmlkZXIuSUl0ZW1Qcm9wZXJ0eVNvdXJjZTsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVkaXQucHJvdmlkZXIuSVN0cnVjdHVyZWRJdGVtQ29udGVudFByb3ZpZGVyOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWRpdC5wcm92aWRlci5JVHJlZUl0ZW1Db250ZW50UHJvdmlkZXI7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lZGl0LnByb3ZpZGVyLkl0ZW1Qcm9wZXJ0eURlc2NyaXB0b3I7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lZGl0LnByb3ZpZGVyLkl0ZW1Qcm92aWRlckFkYXB0ZXI7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lZGl0LnByb3ZpZGVyLlZpZXdlck5vdGlmaWNhdGlvbjsNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnBvcnRhbmRmbG93cy5GbG93RGlyZWN0aW9uOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucG9ydGFuZGZsb3dzLkZsb3dQcm9wZXJ0eTsNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnBvcnRhbmRmbG93cy5Qb3J0YW5kZmxvd3NQYWNrYWdlOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucHJvdmlkZXIuU3lzbWxFZGl0UGx1Z2luOw0KKw0KKy8qKg0KKyAqIFRoaXMgaXMgdGhlIGl0ZW0gcHJvdmlkZXIgYWRhcHRlciBmb3IgYSB7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnBvcnRhbmRmbG93cy5GbG93UHJvcGVydHl9IG9iamVjdC4NCisgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKyAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKyAqIEBnZW5lcmF0ZWQNCisgKi8NCitwdWJsaWMgY2xhc3MgRmxvd1Byb3BlcnR5SXRlbVByb3ZpZGVyIA0KKwlleHRlbmRzIEl0ZW1Qcm92aWRlckFkYXB0ZXINCisJaW1wbGVtZW50cw0KKwkJSUVkaXRpbmdEb21haW5JdGVtUHJvdmlkZXIsDQorCQlJU3RydWN0dXJlZEl0ZW1Db250ZW50UHJvdmlkZXIsDQorCQlJVHJlZUl0ZW1Db250ZW50UHJvdmlkZXIsDQorCQlJSXRlbUxhYmVsUHJvdmlkZXIsDQorCQlJSXRlbVByb3BlcnR5U291cmNlIHsNCisJLyoqDQorCSAqIFRoaXMgY29uc3RydWN0cyBhbiBpbnN0YW5jZSBmcm9tIGEgZmFjdG9yeSBhbmQgYSBub3RpZmllci4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBGbG93UHJvcGVydHlJdGVtUHJvdmlkZXIoQWRhcHRlckZhY3RvcnkgYWRhcHRlckZhY3RvcnkpIHsNCisJCXN1cGVyKGFkYXB0ZXJGYWN0b3J5KTsNCisJfQ0KKw0KKwkvKioNCisJICogVGhpcyByZXR1cm5zIHRoZSBwcm9wZXJ0eSBkZXNjcmlwdG9ycyBmb3IgdGhlIGFkYXB0ZWQgY2xhc3MuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIExpc3Q8SUl0ZW1Qcm9wZXJ0eURlc2NyaXB0b3I+IGdldFByb3BlcnR5RGVzY3JpcHRvcnMoT2JqZWN0IG9iamVjdCkgew0KKwkJaWYgKGl0ZW1Qcm9wZXJ0eURlc2NyaXB0b3JzID09IG51bGwpIHsNCisJCQlzdXBlci5nZXRQcm9wZXJ0eURlc2NyaXB0b3JzKG9iamVjdCk7DQorDQorCQkJYWRkQmFzZV9Qcm9wZXJ0eVByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QpOw0KKwkJCWFkZERpcmVjdGlvblByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QpOw0KKwkJfQ0KKwkJcmV0dXJuIGl0ZW1Qcm9wZXJ0eURlc2NyaXB0b3JzOw0KKwl9DQorDQorCS8qKg0KKwkgKiBUaGlzIGFkZHMgYSBwcm9wZXJ0eSBkZXNjcmlwdG9yIGZvciB0aGUgQmFzZSBQcm9wZXJ0eSBmZWF0dXJlLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHJvdGVjdGVkIHZvaWQgYWRkQmFzZV9Qcm9wZXJ0eVByb3BlcnR5RGVzY3JpcHRvcihPYmplY3Qgb2JqZWN0KSB7DQorCQlpdGVtUHJvcGVydHlEZXNjcmlwdG9ycy5hZGQNCisJCQkoY3JlYXRlSXRlbVByb3BlcnR5RGVzY3JpcHRvcg0KKwkJCQkoKChDb21wb3NlYWJsZUFkYXB0ZXJGYWN0b3J5KWFkYXB0ZXJGYWN0b3J5KS5nZXRSb290QWRhcHRlckZhY3RvcnkoKSwNCisJCQkJIGdldFJlc291cmNlTG9jYXRvcigpLA0KKwkJCQkgZ2V0U3RyaW5nKCJfVUlfRmxvd1Byb3BlcnR5X2Jhc2VfUHJvcGVydHlfZmVhdHVyZSIpLCAvLyROT04tTkxTLTEkDQorCQkJCSBnZXRTdHJpbmcoIl9VSV9Qcm9wZXJ0eURlc2NyaXB0b3JfZGVzY3JpcHRpb24iLCAiX1VJX0Zsb3dQcm9wZXJ0eV9iYXNlX1Byb3BlcnR5X2ZlYXR1cmUiLCAiX1VJX0Zsb3dQcm9wZXJ0eV90eXBlIiksIC8vJE5PTi1OTFMtMSQgLy8kTk9OLU5MUy0yJCAvLyROT04tTkxTLTMkDQorCQkJCSBQb3J0YW5kZmxvd3NQYWNrYWdlLkxpdGVyYWxzLkZMT1dfUFJPUEVSVFlfX0JBU0VfUFJPUEVSVFksDQorCQkJCSB0cnVlLA0KKwkJCQkgZmFsc2UsDQorCQkJCSB0cnVlLA0KKwkJCQkgbnVsbCwNCisJCQkJIG51bGwsDQorCQkJCSBudWxsKSk7DQorCX0NCisNCisJLyoqDQorCSAqIFRoaXMgYWRkcyBhIHByb3BlcnR5IGRlc2NyaXB0b3IgZm9yIHRoZSBEaXJlY3Rpb24gZmVhdHVyZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXByb3RlY3RlZCB2b2lkIGFkZERpcmVjdGlvblByb3BlcnR5RGVzY3JpcHRvcihPYmplY3Qgb2JqZWN0KSB7DQorCQlpdGVtUHJvcGVydHlEZXNjcmlwdG9ycy5hZGQNCisJCQkoY3JlYXRlSXRlbVByb3BlcnR5RGVzY3JpcHRvcg0KKwkJCQkoKChDb21wb3NlYWJsZUFkYXB0ZXJGYWN0b3J5KWFkYXB0ZXJGYWN0b3J5KS5nZXRSb290QWRhcHRlckZhY3RvcnkoKSwNCisJCQkJIGdldFJlc291cmNlTG9jYXRvcigpLA0KKwkJCQkgZ2V0U3RyaW5nKCJfVUlfRmxvd1Byb3BlcnR5X2RpcmVjdGlvbl9mZWF0dXJlIiksIC8vJE5PTi1OTFMtMSQNCisJCQkJIGdldFN0cmluZygiX1VJX1Byb3BlcnR5RGVzY3JpcHRvcl9kZXNjcmlwdGlvbiIsICJfVUlfRmxvd1Byb3BlcnR5X2RpcmVjdGlvbl9mZWF0dXJlIiwgIl9VSV9GbG93UHJvcGVydHlfdHlwZSIpLCAvLyROT04tTkxTLTEkIC8vJE5PTi1OTFMtMiQgLy8kTk9OLU5MUy0zJA0KKwkJCQkgUG9ydGFuZGZsb3dzUGFja2FnZS5MaXRlcmFscy5GTE9XX1BST1BFUlRZX19ESVJFQ1RJT04sDQorCQkJCSB0cnVlLA0KKwkJCQkgZmFsc2UsDQorCQkJCSBmYWxzZSwNCisJCQkJIEl0ZW1Qcm9wZXJ0eURlc2NyaXB0b3IuR0VORVJJQ19WQUxVRV9JTUFHRSwNCisJCQkJIG51bGwsDQorCQkJCSBudWxsKSk7DQorCX0NCisNCisJLyoqDQorCSAqIFRoaXMgcmV0dXJucyBGbG93UHJvcGVydHkuZ2lmLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXB1YmxpYyBPYmplY3QgZ2V0SW1hZ2UoT2JqZWN0IG9iamVjdCkgew0KKwkJcmV0dXJuIG92ZXJsYXlJbWFnZShvYmplY3QsIGdldFJlc291cmNlTG9jYXRvcigpLmdldEltYWdlKCJmdWxsL29iajE2L0Zsb3dQcm9wZXJ0eSIpKTsgLy8kTk9OLU5MUy0xJA0KKwl9DQorDQorCS8qKg0KKwkgKiBUaGlzIHJldHVybnMgdGhlIGxhYmVsIHRleHQgZm9yIHRoZSBhZGFwdGVkIGNsYXNzLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXB1YmxpYyBTdHJpbmcgZ2V0VGV4dChPYmplY3Qgb2JqZWN0KSB7DQorCQlGbG93RGlyZWN0aW9uIGxhYmVsVmFsdWUgPSAoKEZsb3dQcm9wZXJ0eSlvYmplY3QpLmdldERpcmVjdGlvbigpOw0KKwkJU3RyaW5nIGxhYmVsID0gbGFiZWxWYWx1ZSA9PSBudWxsID8gbnVsbCA6IGxhYmVsVmFsdWUudG9TdHJpbmcoKTsNCisJCXJldHVybiBsYWJlbCA9PSBudWxsIHx8IGxhYmVsLmxlbmd0aCgpID09IDAgPw0KKwkJCWdldFN0cmluZygiX1VJX0Zsb3dQcm9wZXJ0eV90eXBlIikgOiAvLyROT04tTkxTLTEkDQorCQkJZ2V0U3RyaW5nKCJfVUlfRmxvd1Byb3BlcnR5X3R5cGUiKSArICIgIiArIGxhYmVsOyAvLyROT04tTkxTLTEkIC8vJE5PTi1OTFMtMiQNCisJfQ0KKwkNCisNCisJLyoqDQorCSAqIFRoaXMgaGFuZGxlcyBtb2RlbCBub3RpZmljYXRpb25zIGJ5IGNhbGxpbmcge0BsaW5rICN1cGRhdGVDaGlsZHJlbn0gdG8gdXBkYXRlIGFueSBjYWNoZWQNCisJICogY2hpbGRyZW4gYW5kIGJ5IGNyZWF0aW5nIGEgdmlld2VyIG5vdGlmaWNhdGlvbiwgd2hpY2ggaXQgcGFzc2VzIHRvIHtAbGluayAjZmlyZU5vdGlmeUNoYW5nZWR9Lg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXB1YmxpYyB2b2lkIG5vdGlmeUNoYW5nZWQoTm90aWZpY2F0aW9uIG5vdGlmaWNhdGlvbikgew0KKwkJdXBkYXRlQ2hpbGRyZW4obm90aWZpY2F0aW9uKTsNCisNCisJCXN3aXRjaCAobm90aWZpY2F0aW9uLmdldEZlYXR1cmVJRChGbG93UHJvcGVydHkuY2xhc3MpKSB7DQorCQkJY2FzZSBQb3J0YW5kZmxvd3NQYWNrYWdlLkZMT1dfUFJPUEVSVFlfX0RJUkVDVElPTjoNCisJCQkJZmlyZU5vdGlmeUNoYW5nZWQobmV3IFZpZXdlck5vdGlmaWNhdGlvbihub3RpZmljYXRpb24sIG5vdGlmaWNhdGlvbi5nZXROb3RpZmllcigpLCBmYWxzZSwgdHJ1ZSkpOw0KKwkJCQlyZXR1cm47DQorCQl9DQorCQlzdXBlci5ub3RpZnlDaGFuZ2VkKG5vdGlmaWNhdGlvbik7DQorCX0NCisNCisJLyoqDQorCSAqIFRoaXMgYWRkcyB7QGxpbmsgb3JnLmVjbGlwc2UuZW1mLmVkaXQuY29tbWFuZC5Db21tYW5kUGFyYW1ldGVyfXMgZGVzY3JpYmluZyB0aGUgY2hpbGRyZW4NCisJICogdGhhdCBjYW4gYmUgY3JlYXRlZCB1bmRlciB0aGlzIG9iamVjdC4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwcm90ZWN0ZWQgdm9pZCBjb2xsZWN0TmV3Q2hpbGREZXNjcmlwdG9ycyhDb2xsZWN0aW9uPE9iamVjdD4gbmV3Q2hpbGREZXNjcmlwdG9ycywgT2JqZWN0IG9iamVjdCkgew0KKwkJc3VwZXIuY29sbGVjdE5ld0NoaWxkRGVzY3JpcHRvcnMobmV3Q2hpbGREZXNjcmlwdG9ycywgb2JqZWN0KTsNCisJfQ0KKw0KKwkvKioNCisJICogUmV0dXJuIHRoZSByZXNvdXJjZSBsb2NhdG9yIGZvciB0aGlzIGl0ZW0gcHJvdmlkZXIncyByZXNvdXJjZXMuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIFJlc291cmNlTG9jYXRvciBnZXRSZXNvdXJjZUxvY2F0b3IoKSB7DQorCQlyZXR1cm4gU3lzbWxFZGl0UGx1Z2luLklOU1RBTkNFOw0KKwl9DQorDQorfQ0KZGlmZiAtLWdpdCBhL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmVkaXQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvcG9ydGFuZGZsb3dzL3Byb3ZpZGVyL0Z1bGxQb3J0SXRlbVByb3ZpZGVyLmphdmEgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5lZGl0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L3BvcnRhbmRmbG93cy9wcm92aWRlci9GdWxsUG9ydEl0ZW1Qcm92aWRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRkNDBjOTIKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5lZGl0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L3BvcnRhbmRmbG93cy9wcm92aWRlci9GdWxsUG9ydEl0ZW1Qcm92aWRlci5qYXZhCkBAIC0wLDAgKzEsMTQ5IEBACisvKioNCisgKiBDb3B5cmlnaHQgKGMpIDIwMTUgQ0VBIExJU1QuDQorICogDQorICogIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCisgKiAgYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQorICogIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQorICogIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICovDQorcGFja2FnZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucG9ydGFuZGZsb3dzLnByb3ZpZGVyOw0KKw0KKw0KK2ltcG9ydCBqYXZhLnV0aWwuQ29sbGVjdGlvbjsNCitpbXBvcnQgamF2YS51dGlsLkxpc3Q7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jb21tb24ubm90aWZ5LkFkYXB0ZXJGYWN0b3J5Ow0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY29tbW9uLm5vdGlmeS5Ob3RpZmljYXRpb247DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jb21tb24udXRpbC5SZXNvdXJjZUxvY2F0b3I7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lZGl0LnByb3ZpZGVyLkNvbXBvc2VhYmxlQWRhcHRlckZhY3Rvcnk7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lZGl0LnByb3ZpZGVyLklFZGl0aW5nRG9tYWluSXRlbVByb3ZpZGVyOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWRpdC5wcm92aWRlci5JSXRlbUxhYmVsUHJvdmlkZXI7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lZGl0LnByb3ZpZGVyLklJdGVtUHJvcGVydHlEZXNjcmlwdG9yOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWRpdC5wcm92aWRlci5JSXRlbVByb3BlcnR5U291cmNlOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWRpdC5wcm92aWRlci5JU3RydWN0dXJlZEl0ZW1Db250ZW50UHJvdmlkZXI7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lZGl0LnByb3ZpZGVyLklUcmVlSXRlbUNvbnRlbnRQcm92aWRlcjsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVkaXQucHJvdmlkZXIuSXRlbVByb3ZpZGVyQWRhcHRlcjsNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnBvcnRhbmRmbG93cy5Qb3J0YW5kZmxvd3NQYWNrYWdlOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucHJvdmlkZXIuU3lzbWxFZGl0UGx1Z2luOw0KKw0KKy8qKg0KKyAqIFRoaXMgaXMgdGhlIGl0ZW0gcHJvdmlkZXIgYWRhcHRlciBmb3IgYSB7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnBvcnRhbmRmbG93cy5GdWxsUG9ydH0gb2JqZWN0Lg0KKyAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorICogQGdlbmVyYXRlZA0KKyAqLw0KK3B1YmxpYyBjbGFzcyBGdWxsUG9ydEl0ZW1Qcm92aWRlciANCisJZXh0ZW5kcyBJdGVtUHJvdmlkZXJBZGFwdGVyDQorCWltcGxlbWVudHMNCisJCUlFZGl0aW5nRG9tYWluSXRlbVByb3ZpZGVyLA0KKwkJSVN0cnVjdHVyZWRJdGVtQ29udGVudFByb3ZpZGVyLA0KKwkJSVRyZWVJdGVtQ29udGVudFByb3ZpZGVyLA0KKwkJSUl0ZW1MYWJlbFByb3ZpZGVyLA0KKwkJSUl0ZW1Qcm9wZXJ0eVNvdXJjZSB7DQorCS8qKg0KKwkgKiBUaGlzIGNvbnN0cnVjdHMgYW4gaW5zdGFuY2UgZnJvbSBhIGZhY3RvcnkgYW5kIGEgbm90aWZpZXIuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgRnVsbFBvcnRJdGVtUHJvdmlkZXIoQWRhcHRlckZhY3RvcnkgYWRhcHRlckZhY3RvcnkpIHsNCisJCXN1cGVyKGFkYXB0ZXJGYWN0b3J5KTsNCisJfQ0KKw0KKwkvKioNCisJICogVGhpcyByZXR1cm5zIHRoZSBwcm9wZXJ0eSBkZXNjcmlwdG9ycyBmb3IgdGhlIGFkYXB0ZWQgY2xhc3MuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIExpc3Q8SUl0ZW1Qcm9wZXJ0eURlc2NyaXB0b3I+IGdldFByb3BlcnR5RGVzY3JpcHRvcnMoT2JqZWN0IG9iamVjdCkgew0KKwkJaWYgKGl0ZW1Qcm9wZXJ0eURlc2NyaXB0b3JzID09IG51bGwpIHsNCisJCQlzdXBlci5nZXRQcm9wZXJ0eURlc2NyaXB0b3JzKG9iamVjdCk7DQorDQorCQkJYWRkQmFzZV9Qb3J0UHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCk7DQorCQl9DQorCQlyZXR1cm4gaXRlbVByb3BlcnR5RGVzY3JpcHRvcnM7DQorCX0NCisNCisJLyoqDQorCSAqIFRoaXMgYWRkcyBhIHByb3BlcnR5IGRlc2NyaXB0b3IgZm9yIHRoZSBCYXNlIFBvcnQgZmVhdHVyZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXByb3RlY3RlZCB2b2lkIGFkZEJhc2VfUG9ydFByb3BlcnR5RGVzY3JpcHRvcihPYmplY3Qgb2JqZWN0KSB7DQorCQlpdGVtUHJvcGVydHlEZXNjcmlwdG9ycy5hZGQNCisJCQkoY3JlYXRlSXRlbVByb3BlcnR5RGVzY3JpcHRvcg0KKwkJCQkoKChDb21wb3NlYWJsZUFkYXB0ZXJGYWN0b3J5KWFkYXB0ZXJGYWN0b3J5KS5nZXRSb290QWRhcHRlckZhY3RvcnkoKSwNCisJCQkJIGdldFJlc291cmNlTG9jYXRvcigpLA0KKwkJCQkgZ2V0U3RyaW5nKCJfVUlfRnVsbFBvcnRfYmFzZV9Qb3J0X2ZlYXR1cmUiKSwgLy8kTk9OLU5MUy0xJA0KKwkJCQkgZ2V0U3RyaW5nKCJfVUlfUHJvcGVydHlEZXNjcmlwdG9yX2Rlc2NyaXB0aW9uIiwgIl9VSV9GdWxsUG9ydF9iYXNlX1BvcnRfZmVhdHVyZSIsICJfVUlfRnVsbFBvcnRfdHlwZSIpLCAvLyROT04tTkxTLTEkIC8vJE5PTi1OTFMtMiQgLy8kTk9OLU5MUy0zJA0KKwkJCQkgUG9ydGFuZGZsb3dzUGFja2FnZS5MaXRlcmFscy5GVUxMX1BPUlRfX0JBU0VfUE9SVCwNCisJCQkJIHRydWUsDQorCQkJCSBmYWxzZSwNCisJCQkJIHRydWUsDQorCQkJCSBudWxsLA0KKwkJCQkgbnVsbCwNCisJCQkJIG51bGwpKTsNCisJfQ0KKw0KKwkvKioNCisJICogVGhpcyByZXR1cm5zIEZ1bGxQb3J0LmdpZi4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgT2JqZWN0IGdldEltYWdlKE9iamVjdCBvYmplY3QpIHsNCisJCXJldHVybiBvdmVybGF5SW1hZ2Uob2JqZWN0LCBnZXRSZXNvdXJjZUxvY2F0b3IoKS5nZXRJbWFnZSgiZnVsbC9vYmoxNi9GdWxsUG9ydCIpKTsgLy8kTk9OLU5MUy0xJA0KKwl9DQorDQorCS8qKg0KKwkgKiBUaGlzIHJldHVybnMgdGhlIGxhYmVsIHRleHQgZm9yIHRoZSBhZGFwdGVkIGNsYXNzLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXB1YmxpYyBTdHJpbmcgZ2V0VGV4dChPYmplY3Qgb2JqZWN0KSB7DQorCQlyZXR1cm4gZ2V0U3RyaW5nKCJfVUlfRnVsbFBvcnRfdHlwZSIpOyAvLyROT04tTkxTLTEkDQorCX0NCisJDQorDQorCS8qKg0KKwkgKiBUaGlzIGhhbmRsZXMgbW9kZWwgbm90aWZpY2F0aW9ucyBieSBjYWxsaW5nIHtAbGluayAjdXBkYXRlQ2hpbGRyZW59IHRvIHVwZGF0ZSBhbnkgY2FjaGVkDQorCSAqIGNoaWxkcmVuIGFuZCBieSBjcmVhdGluZyBhIHZpZXdlciBub3RpZmljYXRpb24sIHdoaWNoIGl0IHBhc3NlcyB0byB7QGxpbmsgI2ZpcmVOb3RpZnlDaGFuZ2VkfS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgdm9pZCBub3RpZnlDaGFuZ2VkKE5vdGlmaWNhdGlvbiBub3RpZmljYXRpb24pIHsNCisJCXVwZGF0ZUNoaWxkcmVuKG5vdGlmaWNhdGlvbik7DQorCQlzdXBlci5ub3RpZnlDaGFuZ2VkKG5vdGlmaWNhdGlvbik7DQorCX0NCisNCisJLyoqDQorCSAqIFRoaXMgYWRkcyB7QGxpbmsgb3JnLmVjbGlwc2UuZW1mLmVkaXQuY29tbWFuZC5Db21tYW5kUGFyYW1ldGVyfXMgZGVzY3JpYmluZyB0aGUgY2hpbGRyZW4NCisJICogdGhhdCBjYW4gYmUgY3JlYXRlZCB1bmRlciB0aGlzIG9iamVjdC4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwcm90ZWN0ZWQgdm9pZCBjb2xsZWN0TmV3Q2hpbGREZXNjcmlwdG9ycyhDb2xsZWN0aW9uPE9iamVjdD4gbmV3Q2hpbGREZXNjcmlwdG9ycywgT2JqZWN0IG9iamVjdCkgew0KKwkJc3VwZXIuY29sbGVjdE5ld0NoaWxkRGVzY3JpcHRvcnMobmV3Q2hpbGREZXNjcmlwdG9ycywgb2JqZWN0KTsNCisJfQ0KKw0KKwkvKioNCisJICogUmV0dXJuIHRoZSByZXNvdXJjZSBsb2NhdG9yIGZvciB0aGlzIGl0ZW0gcHJvdmlkZXIncyByZXNvdXJjZXMuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIFJlc291cmNlTG9jYXRvciBnZXRSZXNvdXJjZUxvY2F0b3IoKSB7DQorCQlyZXR1cm4gU3lzbWxFZGl0UGx1Z2luLklOU1RBTkNFOw0KKwl9DQorDQorfQ0KZGlmZiAtLWdpdCBhL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmVkaXQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvcG9ydGFuZGZsb3dzL3Byb3ZpZGVyL0ludGVyZmFjZUJsb2NrSXRlbVByb3ZpZGVyLmphdmEgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5lZGl0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L3BvcnRhbmRmbG93cy9wcm92aWRlci9JbnRlcmZhY2VCbG9ja0l0ZW1Qcm92aWRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU1MDFlYjcKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5lZGl0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L3BvcnRhbmRmbG93cy9wcm92aWRlci9JbnRlcmZhY2VCbG9ja0l0ZW1Qcm92aWRlci5qYXZhCkBAIC0wLDAgKzEsMTE0IEBACisvKioNCisgKiBDb3B5cmlnaHQgKGMpIDIwMTUgQ0VBIExJU1QuDQorICogDQorICogIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCisgKiAgYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQorICogIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQorICogIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICovDQorcGFja2FnZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucG9ydGFuZGZsb3dzLnByb3ZpZGVyOw0KKw0KKw0KK2ltcG9ydCBqYXZhLnV0aWwuQ29sbGVjdGlvbjsNCitpbXBvcnQgamF2YS51dGlsLkxpc3Q7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jb21tb24ubm90aWZ5LkFkYXB0ZXJGYWN0b3J5Ow0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY29tbW9uLm5vdGlmeS5Ob3RpZmljYXRpb247DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jb21tb24udXRpbC5SZXNvdXJjZUxvY2F0b3I7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lZGl0LnByb3ZpZGVyLklJdGVtUHJvcGVydHlEZXNjcmlwdG9yOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYmxvY2tzLnByb3ZpZGVyLkJsb2NrSXRlbVByb3ZpZGVyOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucG9ydGFuZGZsb3dzLkludGVyZmFjZUJsb2NrOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucHJvdmlkZXIuU3lzbWxFZGl0UGx1Z2luOw0KKw0KKy8qKg0KKyAqIFRoaXMgaXMgdGhlIGl0ZW0gcHJvdmlkZXIgYWRhcHRlciBmb3IgYSB7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnBvcnRhbmRmbG93cy5JbnRlcmZhY2VCbG9ja30gb2JqZWN0Lg0KKyAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorICogQGdlbmVyYXRlZA0KKyAqLw0KK3B1YmxpYyBjbGFzcyBJbnRlcmZhY2VCbG9ja0l0ZW1Qcm92aWRlciBleHRlbmRzIEJsb2NrSXRlbVByb3ZpZGVyIHsNCisJLyoqDQorCSAqIFRoaXMgY29uc3RydWN0cyBhbiBpbnN0YW5jZSBmcm9tIGEgZmFjdG9yeSBhbmQgYSBub3RpZmllci4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBJbnRlcmZhY2VCbG9ja0l0ZW1Qcm92aWRlcihBZGFwdGVyRmFjdG9yeSBhZGFwdGVyRmFjdG9yeSkgew0KKwkJc3VwZXIoYWRhcHRlckZhY3RvcnkpOw0KKwl9DQorDQorCS8qKg0KKwkgKiBUaGlzIHJldHVybnMgdGhlIHByb3BlcnR5IGRlc2NyaXB0b3JzIGZvciB0aGUgYWRhcHRlZCBjbGFzcy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgTGlzdDxJSXRlbVByb3BlcnR5RGVzY3JpcHRvcj4gZ2V0UHJvcGVydHlEZXNjcmlwdG9ycyhPYmplY3Qgb2JqZWN0KSB7DQorCQlpZiAoaXRlbVByb3BlcnR5RGVzY3JpcHRvcnMgPT0gbnVsbCkgew0KKwkJCXN1cGVyLmdldFByb3BlcnR5RGVzY3JpcHRvcnMob2JqZWN0KTsNCisNCisJCX0NCisJCXJldHVybiBpdGVtUHJvcGVydHlEZXNjcmlwdG9yczsNCisJfQ0KKw0KKwkvKioNCisJICogVGhpcyByZXR1cm5zIEludGVyZmFjZUJsb2NrLmdpZi4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgT2JqZWN0IGdldEltYWdlKE9iamVjdCBvYmplY3QpIHsNCisJCXJldHVybiBvdmVybGF5SW1hZ2Uob2JqZWN0LCBnZXRSZXNvdXJjZUxvY2F0b3IoKS5nZXRJbWFnZSgiZnVsbC9vYmoxNi9JbnRlcmZhY2VCbG9jayIpKTsgLy8kTk9OLU5MUy0xJA0KKwl9DQorDQorCS8qKg0KKwkgKiBUaGlzIHJldHVybnMgdGhlIGxhYmVsIHRleHQgZm9yIHRoZSBhZGFwdGVkIGNsYXNzLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXB1YmxpYyBTdHJpbmcgZ2V0VGV4dChPYmplY3Qgb2JqZWN0KSB7DQorCQlJbnRlcmZhY2VCbG9jayBpbnRlcmZhY2VCbG9jayA9IChJbnRlcmZhY2VCbG9jaylvYmplY3Q7DQorCQlyZXR1cm4gZ2V0U3RyaW5nKCJfVUlfSW50ZXJmYWNlQmxvY2tfdHlwZSIpICsgIiAiICsgaW50ZXJmYWNlQmxvY2suaXNFbmNhcHN1bGF0ZWQoKTsgLy8kTk9OLU5MUy0xJCAvLyROT04tTkxTLTIkDQorCX0NCisJDQorDQorCS8qKg0KKwkgKiBUaGlzIGhhbmRsZXMgbW9kZWwgbm90aWZpY2F0aW9ucyBieSBjYWxsaW5nIHtAbGluayAjdXBkYXRlQ2hpbGRyZW59IHRvIHVwZGF0ZSBhbnkgY2FjaGVkDQorCSAqIGNoaWxkcmVuIGFuZCBieSBjcmVhdGluZyBhIHZpZXdlciBub3RpZmljYXRpb24sIHdoaWNoIGl0IHBhc3NlcyB0byB7QGxpbmsgI2ZpcmVOb3RpZnlDaGFuZ2VkfS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgdm9pZCBub3RpZnlDaGFuZ2VkKE5vdGlmaWNhdGlvbiBub3RpZmljYXRpb24pIHsNCisJCXVwZGF0ZUNoaWxkcmVuKG5vdGlmaWNhdGlvbik7DQorCQlzdXBlci5ub3RpZnlDaGFuZ2VkKG5vdGlmaWNhdGlvbik7DQorCX0NCisNCisJLyoqDQorCSAqIFRoaXMgYWRkcyB7QGxpbmsgb3JnLmVjbGlwc2UuZW1mLmVkaXQuY29tbWFuZC5Db21tYW5kUGFyYW1ldGVyfXMgZGVzY3JpYmluZyB0aGUgY2hpbGRyZW4NCisJICogdGhhdCBjYW4gYmUgY3JlYXRlZCB1bmRlciB0aGlzIG9iamVjdC4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwcm90ZWN0ZWQgdm9pZCBjb2xsZWN0TmV3Q2hpbGREZXNjcmlwdG9ycyhDb2xsZWN0aW9uPE9iamVjdD4gbmV3Q2hpbGREZXNjcmlwdG9ycywgT2JqZWN0IG9iamVjdCkgew0KKwkJc3VwZXIuY29sbGVjdE5ld0NoaWxkRGVzY3JpcHRvcnMobmV3Q2hpbGREZXNjcmlwdG9ycywgb2JqZWN0KTsNCisJfQ0KKw0KKwkvKioNCisJICogUmV0dXJuIHRoZSByZXNvdXJjZSBsb2NhdG9yIGZvciB0aGlzIGl0ZW0gcHJvdmlkZXIncyByZXNvdXJjZXMuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIFJlc291cmNlTG9jYXRvciBnZXRSZXNvdXJjZUxvY2F0b3IoKSB7DQorCQlyZXR1cm4gU3lzbWxFZGl0UGx1Z2luLklOU1RBTkNFOw0KKwl9DQorDQorfQ0KZGlmZiAtLWdpdCBhL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmVkaXQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvcG9ydGFuZGZsb3dzL3Byb3ZpZGVyL0ludm9jYXRpb25Pbk5lc3RlZFBvcnRBY3Rpb25JdGVtUHJvdmlkZXIuamF2YSBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmVkaXQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvcG9ydGFuZGZsb3dzL3Byb3ZpZGVyL0ludm9jYXRpb25Pbk5lc3RlZFBvcnRBY3Rpb25JdGVtUHJvdmlkZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MDZiNTI3Ci0tLSAvZGV2L251bGwKKysrIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZWRpdC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9wb3J0YW5kZmxvd3MvcHJvdmlkZXIvSW52b2NhdGlvbk9uTmVzdGVkUG9ydEFjdGlvbkl0ZW1Qcm92aWRlci5qYXZhCkBAIC0wLDAgKzEsMTYwIEBACisvKioNCisgKiBDb3B5cmlnaHQgKGMpIDIwMTUgQ0VBIExJU1QuDQorICogDQorICogIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCisgKiAgYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQorICogIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQorICogIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICovDQorcGFja2FnZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucG9ydGFuZGZsb3dzLnByb3ZpZGVyOw0KKw0KKw0KK2ltcG9ydCBqYXZhLnV0aWwuQ29sbGVjdGlvbjsNCitpbXBvcnQgamF2YS51dGlsLkxpc3Q7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jb21tb24ubm90aWZ5LkFkYXB0ZXJGYWN0b3J5Ow0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY29tbW9uLm5vdGlmeS5Ob3RpZmljYXRpb247DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jb21tb24udXRpbC5SZXNvdXJjZUxvY2F0b3I7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lZGl0LnByb3ZpZGVyLkNvbXBvc2VhYmxlQWRhcHRlckZhY3Rvcnk7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lZGl0LnByb3ZpZGVyLklJdGVtUHJvcGVydHlEZXNjcmlwdG9yOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYmxvY2tzLnByb3ZpZGVyLkVsZW1lbnRQcm9wZXJ0eVBhdGhJdGVtUHJvdmlkZXI7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5wb3J0YW5kZmxvd3MuUG9ydGFuZGZsb3dzUGFja2FnZTsNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnByb3ZpZGVyLlN5c21sRWRpdFBsdWdpbjsNCisNCisvKioNCisgKiBUaGlzIGlzIHRoZSBpdGVtIHByb3ZpZGVyIGFkYXB0ZXIgZm9yIGEge0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5wb3J0YW5kZmxvd3MuSW52b2NhdGlvbk9uTmVzdGVkUG9ydEFjdGlvbn0gb2JqZWN0Lg0KKyAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorICogQGdlbmVyYXRlZA0KKyAqLw0KK3B1YmxpYyBjbGFzcyBJbnZvY2F0aW9uT25OZXN0ZWRQb3J0QWN0aW9uSXRlbVByb3ZpZGVyIGV4dGVuZHMgRWxlbWVudFByb3BlcnR5UGF0aEl0ZW1Qcm92aWRlciB7DQorCS8qKg0KKwkgKiBUaGlzIGNvbnN0cnVjdHMgYW4gaW5zdGFuY2UgZnJvbSBhIGZhY3RvcnkgYW5kIGEgbm90aWZpZXIuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgSW52b2NhdGlvbk9uTmVzdGVkUG9ydEFjdGlvbkl0ZW1Qcm92aWRlcihBZGFwdGVyRmFjdG9yeSBhZGFwdGVyRmFjdG9yeSkgew0KKwkJc3VwZXIoYWRhcHRlckZhY3RvcnkpOw0KKwl9DQorDQorCS8qKg0KKwkgKiBUaGlzIHJldHVybnMgdGhlIHByb3BlcnR5IGRlc2NyaXB0b3JzIGZvciB0aGUgYWRhcHRlZCBjbGFzcy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgTGlzdDxJSXRlbVByb3BlcnR5RGVzY3JpcHRvcj4gZ2V0UHJvcGVydHlEZXNjcmlwdG9ycyhPYmplY3Qgb2JqZWN0KSB7DQorCQlpZiAoaXRlbVByb3BlcnR5RGVzY3JpcHRvcnMgPT0gbnVsbCkgew0KKwkJCXN1cGVyLmdldFByb3BlcnR5RGVzY3JpcHRvcnMob2JqZWN0KTsNCisNCisJCQlhZGRCYXNlX0ludm9jYXRpb25BY3Rpb25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0KTsNCisJCQlhZGRPbk5lc3RlZFBvcnRQcm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0KTsNCisJCX0NCisJCXJldHVybiBpdGVtUHJvcGVydHlEZXNjcmlwdG9yczsNCisJfQ0KKw0KKwkvKioNCisJICogVGhpcyBhZGRzIGEgcHJvcGVydHkgZGVzY3JpcHRvciBmb3IgdGhlIEJhc2UgSW52b2NhdGlvbiBBY3Rpb24gZmVhdHVyZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXByb3RlY3RlZCB2b2lkIGFkZEJhc2VfSW52b2NhdGlvbkFjdGlvblByb3BlcnR5RGVzY3JpcHRvcihPYmplY3Qgb2JqZWN0KSB7DQorCQlpdGVtUHJvcGVydHlEZXNjcmlwdG9ycy5hZGQNCisJCQkoY3JlYXRlSXRlbVByb3BlcnR5RGVzY3JpcHRvcg0KKwkJCQkoKChDb21wb3NlYWJsZUFkYXB0ZXJGYWN0b3J5KWFkYXB0ZXJGYWN0b3J5KS5nZXRSb290QWRhcHRlckZhY3RvcnkoKSwNCisJCQkJIGdldFJlc291cmNlTG9jYXRvcigpLA0KKwkJCQkgZ2V0U3RyaW5nKCJfVUlfSW52b2NhdGlvbk9uTmVzdGVkUG9ydEFjdGlvbl9iYXNlX0ludm9jYXRpb25BY3Rpb25fZmVhdHVyZSIpLCAvLyROT04tTkxTLTEkDQorCQkJCSBnZXRTdHJpbmcoIl9VSV9Qcm9wZXJ0eURlc2NyaXB0b3JfZGVzY3JpcHRpb24iLCAiX1VJX0ludm9jYXRpb25Pbk5lc3RlZFBvcnRBY3Rpb25fYmFzZV9JbnZvY2F0aW9uQWN0aW9uX2ZlYXR1cmUiLCAiX1VJX0ludm9jYXRpb25Pbk5lc3RlZFBvcnRBY3Rpb25fdHlwZSIpLCAvLyROT04tTkxTLTEkIC8vJE5PTi1OTFMtMiQgLy8kTk9OLU5MUy0zJA0KKwkJCQkgUG9ydGFuZGZsb3dzUGFja2FnZS5MaXRlcmFscy5JTlZPQ0FUSU9OX09OX05FU1RFRF9QT1JUX0FDVElPTl9fQkFTRV9JTlZPQ0FUSU9OX0FDVElPTiwNCisJCQkJIHRydWUsDQorCQkJCSBmYWxzZSwNCisJCQkJIHRydWUsDQorCQkJCSBudWxsLA0KKwkJCQkgbnVsbCwNCisJCQkJIG51bGwpKTsNCisJfQ0KKw0KKwkvKioNCisJICogVGhpcyBhZGRzIGEgcHJvcGVydHkgZGVzY3JpcHRvciBmb3IgdGhlIE9uIE5lc3RlZCBQb3J0IGZlYXR1cmUuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwcm90ZWN0ZWQgdm9pZCBhZGRPbk5lc3RlZFBvcnRQcm9wZXJ0eURlc2NyaXB0b3IoT2JqZWN0IG9iamVjdCkgew0KKwkJaXRlbVByb3BlcnR5RGVzY3JpcHRvcnMuYWRkDQorCQkJKGNyZWF0ZUl0ZW1Qcm9wZXJ0eURlc2NyaXB0b3INCisJCQkJKCgoQ29tcG9zZWFibGVBZGFwdGVyRmFjdG9yeSlhZGFwdGVyRmFjdG9yeSkuZ2V0Um9vdEFkYXB0ZXJGYWN0b3J5KCksDQorCQkJCSBnZXRSZXNvdXJjZUxvY2F0b3IoKSwNCisJCQkJIGdldFN0cmluZygiX1VJX0ludm9jYXRpb25Pbk5lc3RlZFBvcnRBY3Rpb25fb25OZXN0ZWRQb3J0X2ZlYXR1cmUiKSwgLy8kTk9OLU5MUy0xJA0KKwkJCQkgZ2V0U3RyaW5nKCJfVUlfUHJvcGVydHlEZXNjcmlwdG9yX2Rlc2NyaXB0aW9uIiwgIl9VSV9JbnZvY2F0aW9uT25OZXN0ZWRQb3J0QWN0aW9uX29uTmVzdGVkUG9ydF9mZWF0dXJlIiwgIl9VSV9JbnZvY2F0aW9uT25OZXN0ZWRQb3J0QWN0aW9uX3R5cGUiKSwgLy8kTk9OLU5MUy0xJCAvLyROT04tTkxTLTIkIC8vJE5PTi1OTFMtMyQNCisJCQkJIFBvcnRhbmRmbG93c1BhY2thZ2UuTGl0ZXJhbHMuSU5WT0NBVElPTl9PTl9ORVNURURfUE9SVF9BQ1RJT05fX09OX05FU1RFRF9QT1JULA0KKwkJCQkgdHJ1ZSwNCisJCQkJIGZhbHNlLA0KKwkJCQkgdHJ1ZSwNCisJCQkJIG51bGwsDQorCQkJCSBudWxsLA0KKwkJCQkgbnVsbCkpOw0KKwl9DQorDQorCS8qKg0KKwkgKiBUaGlzIHJldHVybnMgSW52b2NhdGlvbk9uTmVzdGVkUG9ydEFjdGlvbi5naWYuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIE9iamVjdCBnZXRJbWFnZShPYmplY3Qgb2JqZWN0KSB7DQorCQlyZXR1cm4gb3ZlcmxheUltYWdlKG9iamVjdCwgZ2V0UmVzb3VyY2VMb2NhdG9yKCkuZ2V0SW1hZ2UoImZ1bGwvb2JqMTYvSW52b2NhdGlvbk9uTmVzdGVkUG9ydEFjdGlvbiIpKTsgLy8kTk9OLU5MUy0xJA0KKwl9DQorDQorCS8qKg0KKwkgKiBUaGlzIHJldHVybnMgdGhlIGxhYmVsIHRleHQgZm9yIHRoZSBhZGFwdGVkIGNsYXNzLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXB1YmxpYyBTdHJpbmcgZ2V0VGV4dChPYmplY3Qgb2JqZWN0KSB7DQorCQlyZXR1cm4gZ2V0U3RyaW5nKCJfVUlfSW52b2NhdGlvbk9uTmVzdGVkUG9ydEFjdGlvbl90eXBlIik7IC8vJE5PTi1OTFMtMSQNCisJfQ0KKwkNCisNCisJLyoqDQorCSAqIFRoaXMgaGFuZGxlcyBtb2RlbCBub3RpZmljYXRpb25zIGJ5IGNhbGxpbmcge0BsaW5rICN1cGRhdGVDaGlsZHJlbn0gdG8gdXBkYXRlIGFueSBjYWNoZWQNCisJICogY2hpbGRyZW4gYW5kIGJ5IGNyZWF0aW5nIGEgdmlld2VyIG5vdGlmaWNhdGlvbiwgd2hpY2ggaXQgcGFzc2VzIHRvIHtAbGluayAjZmlyZU5vdGlmeUNoYW5nZWR9Lg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXB1YmxpYyB2b2lkIG5vdGlmeUNoYW5nZWQoTm90aWZpY2F0aW9uIG5vdGlmaWNhdGlvbikgew0KKwkJdXBkYXRlQ2hpbGRyZW4obm90aWZpY2F0aW9uKTsNCisJCXN1cGVyLm5vdGlmeUNoYW5nZWQobm90aWZpY2F0aW9uKTsNCisJfQ0KKw0KKwkvKioNCisJICogVGhpcyBhZGRzIHtAbGluayBvcmcuZWNsaXBzZS5lbWYuZWRpdC5jb21tYW5kLkNvbW1hbmRQYXJhbWV0ZXJ9cyBkZXNjcmliaW5nIHRoZSBjaGlsZHJlbg0KKwkgKiB0aGF0IGNhbiBiZSBjcmVhdGVkIHVuZGVyIHRoaXMgb2JqZWN0Lg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXByb3RlY3RlZCB2b2lkIGNvbGxlY3ROZXdDaGlsZERlc2NyaXB0b3JzKENvbGxlY3Rpb248T2JqZWN0PiBuZXdDaGlsZERlc2NyaXB0b3JzLCBPYmplY3Qgb2JqZWN0KSB7DQorCQlzdXBlci5jb2xsZWN0TmV3Q2hpbGREZXNjcmlwdG9ycyhuZXdDaGlsZERlc2NyaXB0b3JzLCBvYmplY3QpOw0KKwl9DQorDQorCS8qKg0KKwkgKiBSZXR1cm4gdGhlIHJlc291cmNlIGxvY2F0b3IgZm9yIHRoaXMgaXRlbSBwcm92aWRlcidzIHJlc291cmNlcy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgUmVzb3VyY2VMb2NhdG9yIGdldFJlc291cmNlTG9jYXRvcigpIHsNCisJCXJldHVybiBTeXNtbEVkaXRQbHVnaW4uSU5TVEFOQ0U7DQorCX0NCisNCit9DQpkaWZmIC0tZ2l0IGEvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZWRpdC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9wb3J0YW5kZmxvd3MvcHJvdmlkZXIvSXRlbUZsb3dJdGVtUHJvdmlkZXIuamF2YSBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmVkaXQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvcG9ydGFuZGZsb3dzL3Byb3ZpZGVyL0l0ZW1GbG93SXRlbVByb3ZpZGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmRjMjI3NQotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmVkaXQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvcG9ydGFuZGZsb3dzL3Byb3ZpZGVyL0l0ZW1GbG93SXRlbVByb3ZpZGVyLmphdmEKQEAgLTAsMCArMSwxNzIgQEAKKy8qKg0KKyAqIENvcHlyaWdodCAoYykgMjAxNSBDRUEgTElTVC4NCisgKiANCisgKiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KKyAqICBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCisgKiAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCisgKiAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgKi8NCitwYWNrYWdlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5wb3J0YW5kZmxvd3MucHJvdmlkZXI7DQorDQorDQoraW1wb3J0IGphdmEudXRpbC5Db2xsZWN0aW9uOw0KK2ltcG9ydCBqYXZhLnV0aWwuTGlzdDsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi5ub3RpZnkuQWRhcHRlckZhY3Rvcnk7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jb21tb24ubm90aWZ5Lk5vdGlmaWNhdGlvbjsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi51dGlsLlJlc291cmNlTG9jYXRvcjsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVkaXQucHJvdmlkZXIuQ29tcG9zZWFibGVBZGFwdGVyRmFjdG9yeTsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVkaXQucHJvdmlkZXIuSUVkaXRpbmdEb21haW5JdGVtUHJvdmlkZXI7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lZGl0LnByb3ZpZGVyLklJdGVtTGFiZWxQcm92aWRlcjsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVkaXQucHJvdmlkZXIuSUl0ZW1Qcm9wZXJ0eURlc2NyaXB0b3I7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lZGl0LnByb3ZpZGVyLklJdGVtUHJvcGVydHlTb3VyY2U7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lZGl0LnByb3ZpZGVyLklTdHJ1Y3R1cmVkSXRlbUNvbnRlbnRQcm92aWRlcjsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVkaXQucHJvdmlkZXIuSVRyZWVJdGVtQ29udGVudFByb3ZpZGVyOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWRpdC5wcm92aWRlci5JdGVtUHJvdmlkZXJBZGFwdGVyOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucG9ydGFuZGZsb3dzLlBvcnRhbmRmbG93c1BhY2thZ2U7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5wcm92aWRlci5TeXNtbEVkaXRQbHVnaW47DQorDQorLyoqDQorICogVGhpcyBpcyB0aGUgaXRlbSBwcm92aWRlciBhZGFwdGVyIGZvciBhIHtAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucG9ydGFuZGZsb3dzLkl0ZW1GbG93fSBvYmplY3QuDQorICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisgKiBAZ2VuZXJhdGVkDQorICovDQorcHVibGljIGNsYXNzIEl0ZW1GbG93SXRlbVByb3ZpZGVyIA0KKwlleHRlbmRzIEl0ZW1Qcm92aWRlckFkYXB0ZXINCisJaW1wbGVtZW50cw0KKwkJSUVkaXRpbmdEb21haW5JdGVtUHJvdmlkZXIsDQorCQlJU3RydWN0dXJlZEl0ZW1Db250ZW50UHJvdmlkZXIsDQorCQlJVHJlZUl0ZW1Db250ZW50UHJvdmlkZXIsDQorCQlJSXRlbUxhYmVsUHJvdmlkZXIsDQorCQlJSXRlbVByb3BlcnR5U291cmNlIHsNCisJLyoqDQorCSAqIFRoaXMgY29uc3RydWN0cyBhbiBpbnN0YW5jZSBmcm9tIGEgZmFjdG9yeSBhbmQgYSBub3RpZmllci4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBJdGVtRmxvd0l0ZW1Qcm92aWRlcihBZGFwdGVyRmFjdG9yeSBhZGFwdGVyRmFjdG9yeSkgew0KKwkJc3VwZXIoYWRhcHRlckZhY3RvcnkpOw0KKwl9DQorDQorCS8qKg0KKwkgKiBUaGlzIHJldHVybnMgdGhlIHByb3BlcnR5IGRlc2NyaXB0b3JzIGZvciB0aGUgYWRhcHRlZCBjbGFzcy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgTGlzdDxJSXRlbVByb3BlcnR5RGVzY3JpcHRvcj4gZ2V0UHJvcGVydHlEZXNjcmlwdG9ycyhPYmplY3Qgb2JqZWN0KSB7DQorCQlpZiAoaXRlbVByb3BlcnR5RGVzY3JpcHRvcnMgPT0gbnVsbCkgew0KKwkJCXN1cGVyLmdldFByb3BlcnR5RGVzY3JpcHRvcnMob2JqZWN0KTsNCisNCisJCQlhZGRCYXNlX0luZm9ybWF0aW9uRmxvd1Byb3BlcnR5RGVzY3JpcHRvcihvYmplY3QpOw0KKwkJCWFkZEl0ZW1Qcm9wZXJ0eVByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QpOw0KKwkJfQ0KKwkJcmV0dXJuIGl0ZW1Qcm9wZXJ0eURlc2NyaXB0b3JzOw0KKwl9DQorDQorCS8qKg0KKwkgKiBUaGlzIGFkZHMgYSBwcm9wZXJ0eSBkZXNjcmlwdG9yIGZvciB0aGUgQmFzZSBJbmZvcm1hdGlvbiBGbG93IGZlYXR1cmUuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwcm90ZWN0ZWQgdm9pZCBhZGRCYXNlX0luZm9ybWF0aW9uRmxvd1Byb3BlcnR5RGVzY3JpcHRvcihPYmplY3Qgb2JqZWN0KSB7DQorCQlpdGVtUHJvcGVydHlEZXNjcmlwdG9ycy5hZGQNCisJCQkoY3JlYXRlSXRlbVByb3BlcnR5RGVzY3JpcHRvcg0KKwkJCQkoKChDb21wb3NlYWJsZUFkYXB0ZXJGYWN0b3J5KWFkYXB0ZXJGYWN0b3J5KS5nZXRSb290QWRhcHRlckZhY3RvcnkoKSwNCisJCQkJIGdldFJlc291cmNlTG9jYXRvcigpLA0KKwkJCQkgZ2V0U3RyaW5nKCJfVUlfSXRlbUZsb3dfYmFzZV9JbmZvcm1hdGlvbkZsb3dfZmVhdHVyZSIpLCAvLyROT04tTkxTLTEkDQorCQkJCSBnZXRTdHJpbmcoIl9VSV9Qcm9wZXJ0eURlc2NyaXB0b3JfZGVzY3JpcHRpb24iLCAiX1VJX0l0ZW1GbG93X2Jhc2VfSW5mb3JtYXRpb25GbG93X2ZlYXR1cmUiLCAiX1VJX0l0ZW1GbG93X3R5cGUiKSwgLy8kTk9OLU5MUy0xJCAvLyROT04tTkxTLTIkIC8vJE5PTi1OTFMtMyQNCisJCQkJIFBvcnRhbmRmbG93c1BhY2thZ2UuTGl0ZXJhbHMuSVRFTV9GTE9XX19CQVNFX0lORk9STUFUSU9OX0ZMT1csDQorCQkJCSB0cnVlLA0KKwkJCQkgZmFsc2UsDQorCQkJCSB0cnVlLA0KKwkJCQkgbnVsbCwNCisJCQkJIG51bGwsDQorCQkJCSBudWxsKSk7DQorCX0NCisNCisJLyoqDQorCSAqIFRoaXMgYWRkcyBhIHByb3BlcnR5IGRlc2NyaXB0b3IgZm9yIHRoZSBJdGVtIFByb3BlcnR5IGZlYXR1cmUuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwcm90ZWN0ZWQgdm9pZCBhZGRJdGVtUHJvcGVydHlQcm9wZXJ0eURlc2NyaXB0b3IoT2JqZWN0IG9iamVjdCkgew0KKwkJaXRlbVByb3BlcnR5RGVzY3JpcHRvcnMuYWRkDQorCQkJKGNyZWF0ZUl0ZW1Qcm9wZXJ0eURlc2NyaXB0b3INCisJCQkJKCgoQ29tcG9zZWFibGVBZGFwdGVyRmFjdG9yeSlhZGFwdGVyRmFjdG9yeSkuZ2V0Um9vdEFkYXB0ZXJGYWN0b3J5KCksDQorCQkJCSBnZXRSZXNvdXJjZUxvY2F0b3IoKSwNCisJCQkJIGdldFN0cmluZygiX1VJX0l0ZW1GbG93X2l0ZW1Qcm9wZXJ0eV9mZWF0dXJlIiksIC8vJE5PTi1OTFMtMSQNCisJCQkJIGdldFN0cmluZygiX1VJX1Byb3BlcnR5RGVzY3JpcHRvcl9kZXNjcmlwdGlvbiIsICJfVUlfSXRlbUZsb3dfaXRlbVByb3BlcnR5X2ZlYXR1cmUiLCAiX1VJX0l0ZW1GbG93X3R5cGUiKSwgLy8kTk9OLU5MUy0xJCAvLyROT04tTkxTLTIkIC8vJE5PTi1OTFMtMyQNCisJCQkJIFBvcnRhbmRmbG93c1BhY2thZ2UuTGl0ZXJhbHMuSVRFTV9GTE9XX19JVEVNX1BST1BFUlRZLA0KKwkJCQkgdHJ1ZSwNCisJCQkJIGZhbHNlLA0KKwkJCQkgdHJ1ZSwNCisJCQkJIG51bGwsDQorCQkJCSBudWxsLA0KKwkJCQkgbnVsbCkpOw0KKwl9DQorDQorCS8qKg0KKwkgKiBUaGlzIHJldHVybnMgSXRlbUZsb3cuZ2lmLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXB1YmxpYyBPYmplY3QgZ2V0SW1hZ2UoT2JqZWN0IG9iamVjdCkgew0KKwkJcmV0dXJuIG92ZXJsYXlJbWFnZShvYmplY3QsIGdldFJlc291cmNlTG9jYXRvcigpLmdldEltYWdlKCJmdWxsL29iajE2L0l0ZW1GbG93IikpOyAvLyROT04tTkxTLTEkDQorCX0NCisNCisJLyoqDQorCSAqIFRoaXMgcmV0dXJucyB0aGUgbGFiZWwgdGV4dCBmb3IgdGhlIGFkYXB0ZWQgY2xhc3MuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIFN0cmluZyBnZXRUZXh0KE9iamVjdCBvYmplY3QpIHsNCisJCXJldHVybiBnZXRTdHJpbmcoIl9VSV9JdGVtRmxvd190eXBlIik7IC8vJE5PTi1OTFMtMSQNCisJfQ0KKwkNCisNCisJLyoqDQorCSAqIFRoaXMgaGFuZGxlcyBtb2RlbCBub3RpZmljYXRpb25zIGJ5IGNhbGxpbmcge0BsaW5rICN1cGRhdGVDaGlsZHJlbn0gdG8gdXBkYXRlIGFueSBjYWNoZWQNCisJICogY2hpbGRyZW4gYW5kIGJ5IGNyZWF0aW5nIGEgdmlld2VyIG5vdGlmaWNhdGlvbiwgd2hpY2ggaXQgcGFzc2VzIHRvIHtAbGluayAjZmlyZU5vdGlmeUNoYW5nZWR9Lg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXB1YmxpYyB2b2lkIG5vdGlmeUNoYW5nZWQoTm90aWZpY2F0aW9uIG5vdGlmaWNhdGlvbikgew0KKwkJdXBkYXRlQ2hpbGRyZW4obm90aWZpY2F0aW9uKTsNCisJCXN1cGVyLm5vdGlmeUNoYW5nZWQobm90aWZpY2F0aW9uKTsNCisJfQ0KKw0KKwkvKioNCisJICogVGhpcyBhZGRzIHtAbGluayBvcmcuZWNsaXBzZS5lbWYuZWRpdC5jb21tYW5kLkNvbW1hbmRQYXJhbWV0ZXJ9cyBkZXNjcmliaW5nIHRoZSBjaGlsZHJlbg0KKwkgKiB0aGF0IGNhbiBiZSBjcmVhdGVkIHVuZGVyIHRoaXMgb2JqZWN0Lg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXByb3RlY3RlZCB2b2lkIGNvbGxlY3ROZXdDaGlsZERlc2NyaXB0b3JzKENvbGxlY3Rpb248T2JqZWN0PiBuZXdDaGlsZERlc2NyaXB0b3JzLCBPYmplY3Qgb2JqZWN0KSB7DQorCQlzdXBlci5jb2xsZWN0TmV3Q2hpbGREZXNjcmlwdG9ycyhuZXdDaGlsZERlc2NyaXB0b3JzLCBvYmplY3QpOw0KKwl9DQorDQorCS8qKg0KKwkgKiBSZXR1cm4gdGhlIHJlc291cmNlIGxvY2F0b3IgZm9yIHRoaXMgaXRlbSBwcm92aWRlcidzIHJlc291cmNlcy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgUmVzb3VyY2VMb2NhdG9yIGdldFJlc291cmNlTG9jYXRvcigpIHsNCisJCXJldHVybiBTeXNtbEVkaXRQbHVnaW4uSU5TVEFOQ0U7DQorCX0NCisNCit9DQpkaWZmIC0tZ2l0IGEvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZWRpdC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9wb3J0YW5kZmxvd3MvcHJvdmlkZXIvUG9ydGFuZGZsb3dzSXRlbVByb3ZpZGVyQWRhcHRlckZhY3RvcnkuamF2YSBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmVkaXQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvcG9ydGFuZGZsb3dzL3Byb3ZpZGVyL1BvcnRhbmRmbG93c0l0ZW1Qcm92aWRlckFkYXB0ZXJGYWN0b3J5LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTkzYzZkMAotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmVkaXQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvcG9ydGFuZGZsb3dzL3Byb3ZpZGVyL1BvcnRhbmRmbG93c0l0ZW1Qcm92aWRlckFkYXB0ZXJGYWN0b3J5LmphdmEKQEAgLTAsMCArMSw0MjEgQEAKKy8qKg0KKyAqIENvcHlyaWdodCAoYykgMjAxNSBDRUEgTElTVC4NCisgKiANCisgKiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KKyAqICBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCisgKiAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCisgKiAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgKi8NCitwYWNrYWdlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5wb3J0YW5kZmxvd3MucHJvdmlkZXI7DQorDQoraW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7DQoraW1wb3J0IGphdmEudXRpbC5Db2xsZWN0aW9uOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY29tbW9uLm5vdGlmeS5BZGFwdGVyOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY29tbW9uLm5vdGlmeS5Ob3RpZmljYXRpb247DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jb21tb24ubm90aWZ5Lk5vdGlmaWVyOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWRpdC5wcm92aWRlci5DaGFuZ2VOb3RpZmllcjsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVkaXQucHJvdmlkZXIuQ29tcG9zZWFibGVBZGFwdGVyRmFjdG9yeTsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVkaXQucHJvdmlkZXIuQ29tcG9zZWRBZGFwdGVyRmFjdG9yeTsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVkaXQucHJvdmlkZXIuSUNoYW5nZU5vdGlmaWVyOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWRpdC5wcm92aWRlci5JRGlzcG9zYWJsZTsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVkaXQucHJvdmlkZXIuSUVkaXRpbmdEb21haW5JdGVtUHJvdmlkZXI7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lZGl0LnByb3ZpZGVyLklJdGVtTGFiZWxQcm92aWRlcjsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVkaXQucHJvdmlkZXIuSUl0ZW1Qcm9wZXJ0eVNvdXJjZTsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVkaXQucHJvdmlkZXIuSU5vdGlmeUNoYW5nZWRMaXN0ZW5lcjsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVkaXQucHJvdmlkZXIuSVN0cnVjdHVyZWRJdGVtQ29udGVudFByb3ZpZGVyOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWRpdC5wcm92aWRlci5JVHJlZUl0ZW1Db250ZW50UHJvdmlkZXI7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5wb3J0YW5kZmxvd3MudXRpbC5Qb3J0YW5kZmxvd3NBZGFwdGVyRmFjdG9yeTsNCisNCisvKioNCisgKiBUaGlzIGlzIHRoZSBmYWN0b3J5IHRoYXQgaXMgdXNlZCB0byBwcm92aWRlIHRoZSBpbnRlcmZhY2VzIG5lZWRlZCB0byBzdXBwb3J0IFZpZXdlcnMuDQorICogVGhlIGFkYXB0ZXJzIGdlbmVyYXRlZCBieSB0aGlzIGZhY3RvcnkgY29udmVydCBFTUYgYWRhcHRlciBub3RpZmljYXRpb25zIGludG8gY2FsbHMgdG8ge0BsaW5rICNmaXJlTm90aWZ5Q2hhbmdlZCBmaXJlTm90aWZ5Q2hhbmdlZH0uDQorICogVGhlIGFkYXB0ZXJzIGFsc28gc3VwcG9ydCBFY2xpcHNlIHByb3BlcnR5IHNoZWV0cy4NCisgKiBOb3RlIHRoYXQgbW9zdCBvZiB0aGUgYWRhcHRlcnMgYXJlIHNoYXJlZCBhbW9uZyBtdWx0aXBsZSBpbnN0YW5jZXMuDQorICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisgKiBAZ2VuZXJhdGVkDQorICovDQorcHVibGljIGNsYXNzIFBvcnRhbmRmbG93c0l0ZW1Qcm92aWRlckFkYXB0ZXJGYWN0b3J5IGV4dGVuZHMgUG9ydGFuZGZsb3dzQWRhcHRlckZhY3RvcnkgaW1wbGVtZW50cyBDb21wb3NlYWJsZUFkYXB0ZXJGYWN0b3J5LCBJQ2hhbmdlTm90aWZpZXIsIElEaXNwb3NhYmxlIHsNCisJLyoqDQorCSAqIFRoaXMga2VlcHMgdHJhY2sgb2YgdGhlIHJvb3QgYWRhcHRlciBmYWN0b3J5IHRoYXQgZGVsZWdhdGVzIHRvIHRoaXMgYWRhcHRlciBmYWN0b3J5Lg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHJvdGVjdGVkIENvbXBvc2VkQWRhcHRlckZhY3RvcnkgcGFyZW50QWRhcHRlckZhY3Rvcnk7DQorDQorCS8qKg0KKwkgKiBUaGlzIGlzIHVzZWQgdG8gaW1wbGVtZW50IHtAbGluayBvcmcuZWNsaXBzZS5lbWYuZWRpdC5wcm92aWRlci5JQ2hhbmdlTm90aWZpZXJ9Lg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHJvdGVjdGVkIElDaGFuZ2VOb3RpZmllciBjaGFuZ2VOb3RpZmllciA9IG5ldyBDaGFuZ2VOb3RpZmllcigpOw0KKw0KKwkvKioNCisJICogVGhpcyBrZWVwcyB0cmFjayBvZiBhbGwgdGhlIHN1cHBvcnRlZCB0eXBlcyBjaGVja2VkIGJ5IHtAbGluayAjaXNGYWN0b3J5Rm9yVHlwZSBpc0ZhY3RvcnlGb3JUeXBlfS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXByb3RlY3RlZCBDb2xsZWN0aW9uPE9iamVjdD4gc3VwcG9ydGVkVHlwZXMgPSBuZXcgQXJyYXlMaXN0PE9iamVjdD4oKTsNCisNCisJLyoqDQorCSAqIFRoaXMgY29uc3RydWN0cyBhbiBpbnN0YW5jZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBQb3J0YW5kZmxvd3NJdGVtUHJvdmlkZXJBZGFwdGVyRmFjdG9yeSgpIHsNCisJCXN1cHBvcnRlZFR5cGVzLmFkZChJRWRpdGluZ0RvbWFpbkl0ZW1Qcm92aWRlci5jbGFzcyk7DQorCQlzdXBwb3J0ZWRUeXBlcy5hZGQoSVN0cnVjdHVyZWRJdGVtQ29udGVudFByb3ZpZGVyLmNsYXNzKTsNCisJCXN1cHBvcnRlZFR5cGVzLmFkZChJVHJlZUl0ZW1Db250ZW50UHJvdmlkZXIuY2xhc3MpOw0KKwkJc3VwcG9ydGVkVHlwZXMuYWRkKElJdGVtTGFiZWxQcm92aWRlci5jbGFzcyk7DQorCQlzdXBwb3J0ZWRUeXBlcy5hZGQoSUl0ZW1Qcm9wZXJ0eVNvdXJjZS5jbGFzcyk7DQorCX0NCisNCisJLyoqDQorCSAqIFRoaXMga2VlcHMgdHJhY2sgb2YgdGhlIG9uZSBhZGFwdGVyIHVzZWQgZm9yIGFsbCB7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnBvcnRhbmRmbG93cy5JdGVtRmxvd30gaW5zdGFuY2VzLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHJvdGVjdGVkIEl0ZW1GbG93SXRlbVByb3ZpZGVyIGl0ZW1GbG93SXRlbVByb3ZpZGVyOw0KKw0KKwkvKioNCisJICogVGhpcyBjcmVhdGVzIGFuIGFkYXB0ZXIgZm9yIGEge0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5wb3J0YW5kZmxvd3MuSXRlbUZsb3d9Lg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXB1YmxpYyBBZGFwdGVyIGNyZWF0ZUl0ZW1GbG93QWRhcHRlcigpIHsNCisJCWlmIChpdGVtRmxvd0l0ZW1Qcm92aWRlciA9PSBudWxsKSB7DQorCQkJaXRlbUZsb3dJdGVtUHJvdmlkZXIgPSBuZXcgSXRlbUZsb3dJdGVtUHJvdmlkZXIodGhpcyk7DQorCQl9DQorDQorCQlyZXR1cm4gaXRlbUZsb3dJdGVtUHJvdmlkZXI7DQorCX0NCisNCisJLyoqDQorCSAqIFRoaXMga2VlcHMgdHJhY2sgb2YgdGhlIG9uZSBhZGFwdGVyIHVzZWQgZm9yIGFsbCB7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnBvcnRhbmRmbG93cy5GbG93UHJvcGVydHl9IGluc3RhbmNlcy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXByb3RlY3RlZCBGbG93UHJvcGVydHlJdGVtUHJvdmlkZXIgZmxvd1Byb3BlcnR5SXRlbVByb3ZpZGVyOw0KKw0KKwkvKioNCisJICogVGhpcyBjcmVhdGVzIGFuIGFkYXB0ZXIgZm9yIGEge0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5wb3J0YW5kZmxvd3MuRmxvd1Byb3BlcnR5fS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgQWRhcHRlciBjcmVhdGVGbG93UHJvcGVydHlBZGFwdGVyKCkgew0KKwkJaWYgKGZsb3dQcm9wZXJ0eUl0ZW1Qcm92aWRlciA9PSBudWxsKSB7DQorCQkJZmxvd1Byb3BlcnR5SXRlbVByb3ZpZGVyID0gbmV3IEZsb3dQcm9wZXJ0eUl0ZW1Qcm92aWRlcih0aGlzKTsNCisJCX0NCisNCisJCXJldHVybiBmbG93UHJvcGVydHlJdGVtUHJvdmlkZXI7DQorCX0NCisNCisJLyoqDQorCSAqIFRoaXMga2VlcHMgdHJhY2sgb2YgdGhlIG9uZSBhZGFwdGVyIHVzZWQgZm9yIGFsbCB7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnBvcnRhbmRmbG93cy5GdWxsUG9ydH0gaW5zdGFuY2VzLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHJvdGVjdGVkIEZ1bGxQb3J0SXRlbVByb3ZpZGVyIGZ1bGxQb3J0SXRlbVByb3ZpZGVyOw0KKw0KKwkvKioNCisJICogVGhpcyBjcmVhdGVzIGFuIGFkYXB0ZXIgZm9yIGEge0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5wb3J0YW5kZmxvd3MuRnVsbFBvcnR9Lg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXB1YmxpYyBBZGFwdGVyIGNyZWF0ZUZ1bGxQb3J0QWRhcHRlcigpIHsNCisJCWlmIChmdWxsUG9ydEl0ZW1Qcm92aWRlciA9PSBudWxsKSB7DQorCQkJZnVsbFBvcnRJdGVtUHJvdmlkZXIgPSBuZXcgRnVsbFBvcnRJdGVtUHJvdmlkZXIodGhpcyk7DQorCQl9DQorDQorCQlyZXR1cm4gZnVsbFBvcnRJdGVtUHJvdmlkZXI7DQorCX0NCisNCisJLyoqDQorCSAqIFRoaXMga2VlcHMgdHJhY2sgb2YgdGhlIG9uZSBhZGFwdGVyIHVzZWQgZm9yIGFsbCB7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnBvcnRhbmRmbG93cy5JbnRlcmZhY2VCbG9ja30gaW5zdGFuY2VzLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHJvdGVjdGVkIEludGVyZmFjZUJsb2NrSXRlbVByb3ZpZGVyIGludGVyZmFjZUJsb2NrSXRlbVByb3ZpZGVyOw0KKw0KKwkvKioNCisJICogVGhpcyBjcmVhdGVzIGFuIGFkYXB0ZXIgZm9yIGEge0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5wb3J0YW5kZmxvd3MuSW50ZXJmYWNlQmxvY2t9Lg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXB1YmxpYyBBZGFwdGVyIGNyZWF0ZUludGVyZmFjZUJsb2NrQWRhcHRlcigpIHsNCisJCWlmIChpbnRlcmZhY2VCbG9ja0l0ZW1Qcm92aWRlciA9PSBudWxsKSB7DQorCQkJaW50ZXJmYWNlQmxvY2tJdGVtUHJvdmlkZXIgPSBuZXcgSW50ZXJmYWNlQmxvY2tJdGVtUHJvdmlkZXIodGhpcyk7DQorCQl9DQorDQorCQlyZXR1cm4gaW50ZXJmYWNlQmxvY2tJdGVtUHJvdmlkZXI7DQorCX0NCisNCisJLyoqDQorCSAqIFRoaXMga2VlcHMgdHJhY2sgb2YgdGhlIG9uZSBhZGFwdGVyIHVzZWQgZm9yIGFsbCB7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnBvcnRhbmRmbG93cy5Qcm94eVBvcnR9IGluc3RhbmNlcy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXByb3RlY3RlZCBQcm94eVBvcnRJdGVtUHJvdmlkZXIgcHJveHlQb3J0SXRlbVByb3ZpZGVyOw0KKw0KKwkvKioNCisJICogVGhpcyBjcmVhdGVzIGFuIGFkYXB0ZXIgZm9yIGEge0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5wb3J0YW5kZmxvd3MuUHJveHlQb3J0fS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgQWRhcHRlciBjcmVhdGVQcm94eVBvcnRBZGFwdGVyKCkgew0KKwkJaWYgKHByb3h5UG9ydEl0ZW1Qcm92aWRlciA9PSBudWxsKSB7DQorCQkJcHJveHlQb3J0SXRlbVByb3ZpZGVyID0gbmV3IFByb3h5UG9ydEl0ZW1Qcm92aWRlcih0aGlzKTsNCisJCX0NCisNCisJCXJldHVybiBwcm94eVBvcnRJdGVtUHJvdmlkZXI7DQorCX0NCisNCisJLyoqDQorCSAqIFRoaXMga2VlcHMgdHJhY2sgb2YgdGhlIG9uZSBhZGFwdGVyIHVzZWQgZm9yIGFsbCB7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnBvcnRhbmRmbG93cy5BY2NlcHRDaGFuZ2VTdHJ1Y3R1cmFsRmVhdHVyZUV2ZW50QWN0aW9ufSBpbnN0YW5jZXMuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwcm90ZWN0ZWQgQWNjZXB0Q2hhbmdlU3RydWN0dXJhbEZlYXR1cmVFdmVudEFjdGlvbkl0ZW1Qcm92aWRlciBhY2NlcHRDaGFuZ2VTdHJ1Y3R1cmFsRmVhdHVyZUV2ZW50QWN0aW9uSXRlbVByb3ZpZGVyOw0KKw0KKwkvKioNCisJICogVGhpcyBjcmVhdGVzIGFuIGFkYXB0ZXIgZm9yIGEge0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5wb3J0YW5kZmxvd3MuQWNjZXB0Q2hhbmdlU3RydWN0dXJhbEZlYXR1cmVFdmVudEFjdGlvbn0uDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIEFkYXB0ZXIgY3JlYXRlQWNjZXB0Q2hhbmdlU3RydWN0dXJhbEZlYXR1cmVFdmVudEFjdGlvbkFkYXB0ZXIoKSB7DQorCQlpZiAoYWNjZXB0Q2hhbmdlU3RydWN0dXJhbEZlYXR1cmVFdmVudEFjdGlvbkl0ZW1Qcm92aWRlciA9PSBudWxsKSB7DQorCQkJYWNjZXB0Q2hhbmdlU3RydWN0dXJhbEZlYXR1cmVFdmVudEFjdGlvbkl0ZW1Qcm92aWRlciA9IG5ldyBBY2NlcHRDaGFuZ2VTdHJ1Y3R1cmFsRmVhdHVyZUV2ZW50QWN0aW9uSXRlbVByb3ZpZGVyKHRoaXMpOw0KKwkJfQ0KKw0KKwkJcmV0dXJuIGFjY2VwdENoYW5nZVN0cnVjdHVyYWxGZWF0dXJlRXZlbnRBY3Rpb25JdGVtUHJvdmlkZXI7DQorCX0NCisNCisJLyoqDQorCSAqIFRoaXMga2VlcHMgdHJhY2sgb2YgdGhlIG9uZSBhZGFwdGVyIHVzZWQgZm9yIGFsbCB7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnBvcnRhbmRmbG93cy5DaGFuZ2VTdHJ1Y3R1cmFsRmVhdHVyZUV2ZW50fSBpbnN0YW5jZXMuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwcm90ZWN0ZWQgQ2hhbmdlU3RydWN0dXJhbEZlYXR1cmVFdmVudEl0ZW1Qcm92aWRlciBjaGFuZ2VTdHJ1Y3R1cmFsRmVhdHVyZUV2ZW50SXRlbVByb3ZpZGVyOw0KKw0KKwkvKioNCisJICogVGhpcyBjcmVhdGVzIGFuIGFkYXB0ZXIgZm9yIGEge0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5wb3J0YW5kZmxvd3MuQ2hhbmdlU3RydWN0dXJhbEZlYXR1cmVFdmVudH0uDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIEFkYXB0ZXIgY3JlYXRlQ2hhbmdlU3RydWN0dXJhbEZlYXR1cmVFdmVudEFkYXB0ZXIoKSB7DQorCQlpZiAoY2hhbmdlU3RydWN0dXJhbEZlYXR1cmVFdmVudEl0ZW1Qcm92aWRlciA9PSBudWxsKSB7DQorCQkJY2hhbmdlU3RydWN0dXJhbEZlYXR1cmVFdmVudEl0ZW1Qcm92aWRlciA9IG5ldyBDaGFuZ2VTdHJ1Y3R1cmFsRmVhdHVyZUV2ZW50SXRlbVByb3ZpZGVyKHRoaXMpOw0KKwkJfQ0KKw0KKwkJcmV0dXJuIGNoYW5nZVN0cnVjdHVyYWxGZWF0dXJlRXZlbnRJdGVtUHJvdmlkZXI7DQorCX0NCisNCisJLyoqDQorCSAqIFRoaXMga2VlcHMgdHJhY2sgb2YgdGhlIG9uZSBhZGFwdGVyIHVzZWQgZm9yIGFsbCB7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnBvcnRhbmRmbG93cy5EaXJlY3RlZEZlYXR1cmV9IGluc3RhbmNlcy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXByb3RlY3RlZCBEaXJlY3RlZEZlYXR1cmVJdGVtUHJvdmlkZXIgZGlyZWN0ZWRGZWF0dXJlSXRlbVByb3ZpZGVyOw0KKw0KKwkvKioNCisJICogVGhpcyBjcmVhdGVzIGFuIGFkYXB0ZXIgZm9yIGEge0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5wb3J0YW5kZmxvd3MuRGlyZWN0ZWRGZWF0dXJlfS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgQWRhcHRlciBjcmVhdGVEaXJlY3RlZEZlYXR1cmVBZGFwdGVyKCkgew0KKwkJaWYgKGRpcmVjdGVkRmVhdHVyZUl0ZW1Qcm92aWRlciA9PSBudWxsKSB7DQorCQkJZGlyZWN0ZWRGZWF0dXJlSXRlbVByb3ZpZGVyID0gbmV3IERpcmVjdGVkRmVhdHVyZUl0ZW1Qcm92aWRlcih0aGlzKTsNCisJCX0NCisNCisJCXJldHVybiBkaXJlY3RlZEZlYXR1cmVJdGVtUHJvdmlkZXI7DQorCX0NCisNCisJLyoqDQorCSAqIFRoaXMga2VlcHMgdHJhY2sgb2YgdGhlIG9uZSBhZGFwdGVyIHVzZWQgZm9yIGFsbCB7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnBvcnRhbmRmbG93cy5JbnZvY2F0aW9uT25OZXN0ZWRQb3J0QWN0aW9ufSBpbnN0YW5jZXMuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwcm90ZWN0ZWQgSW52b2NhdGlvbk9uTmVzdGVkUG9ydEFjdGlvbkl0ZW1Qcm92aWRlciBpbnZvY2F0aW9uT25OZXN0ZWRQb3J0QWN0aW9uSXRlbVByb3ZpZGVyOw0KKw0KKwkvKioNCisJICogVGhpcyBjcmVhdGVzIGFuIGFkYXB0ZXIgZm9yIGEge0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5wb3J0YW5kZmxvd3MuSW52b2NhdGlvbk9uTmVzdGVkUG9ydEFjdGlvbn0uDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIEFkYXB0ZXIgY3JlYXRlSW52b2NhdGlvbk9uTmVzdGVkUG9ydEFjdGlvbkFkYXB0ZXIoKSB7DQorCQlpZiAoaW52b2NhdGlvbk9uTmVzdGVkUG9ydEFjdGlvbkl0ZW1Qcm92aWRlciA9PSBudWxsKSB7DQorCQkJaW52b2NhdGlvbk9uTmVzdGVkUG9ydEFjdGlvbkl0ZW1Qcm92aWRlciA9IG5ldyBJbnZvY2F0aW9uT25OZXN0ZWRQb3J0QWN0aW9uSXRlbVByb3ZpZGVyKHRoaXMpOw0KKwkJfQ0KKw0KKwkJcmV0dXJuIGludm9jYXRpb25Pbk5lc3RlZFBvcnRBY3Rpb25JdGVtUHJvdmlkZXI7DQorCX0NCisNCisJLyoqDQorCSAqIFRoaXMga2VlcHMgdHJhY2sgb2YgdGhlIG9uZSBhZGFwdGVyIHVzZWQgZm9yIGFsbCB7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnBvcnRhbmRmbG93cy5UcmlnZ2VyT25OZXN0ZWRQb3J0fSBpbnN0YW5jZXMuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwcm90ZWN0ZWQgVHJpZ2dlck9uTmVzdGVkUG9ydEl0ZW1Qcm92aWRlciB0cmlnZ2VyT25OZXN0ZWRQb3J0SXRlbVByb3ZpZGVyOw0KKw0KKwkvKioNCisJICogVGhpcyBjcmVhdGVzIGFuIGFkYXB0ZXIgZm9yIGEge0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5wb3J0YW5kZmxvd3MuVHJpZ2dlck9uTmVzdGVkUG9ydH0uDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIEFkYXB0ZXIgY3JlYXRlVHJpZ2dlck9uTmVzdGVkUG9ydEFkYXB0ZXIoKSB7DQorCQlpZiAodHJpZ2dlck9uTmVzdGVkUG9ydEl0ZW1Qcm92aWRlciA9PSBudWxsKSB7DQorCQkJdHJpZ2dlck9uTmVzdGVkUG9ydEl0ZW1Qcm92aWRlciA9IG5ldyBUcmlnZ2VyT25OZXN0ZWRQb3J0SXRlbVByb3ZpZGVyKHRoaXMpOw0KKwkJfQ0KKw0KKwkJcmV0dXJuIHRyaWdnZXJPbk5lc3RlZFBvcnRJdGVtUHJvdmlkZXI7DQorCX0NCisNCisJLyoqDQorCSAqIFRoaXMgcmV0dXJucyB0aGUgcm9vdCBhZGFwdGVyIGZhY3RvcnkgdGhhdCBjb250YWlucyB0aGlzIGZhY3RvcnkuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgQ29tcG9zZWFibGVBZGFwdGVyRmFjdG9yeSBnZXRSb290QWRhcHRlckZhY3RvcnkoKSB7DQorCQlyZXR1cm4gcGFyZW50QWRhcHRlckZhY3RvcnkgPT0gbnVsbCA/IHRoaXMgOiBwYXJlbnRBZGFwdGVyRmFjdG9yeS5nZXRSb290QWRhcHRlckZhY3RvcnkoKTsNCisJfQ0KKw0KKwkvKioNCisJICogVGhpcyBzZXRzIHRoZSBjb21wb3NlZCBhZGFwdGVyIGZhY3RvcnkgdGhhdCBjb250YWlucyB0aGlzIGZhY3RvcnkuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgdm9pZCBzZXRQYXJlbnRBZGFwdGVyRmFjdG9yeShDb21wb3NlZEFkYXB0ZXJGYWN0b3J5IHBhcmVudEFkYXB0ZXJGYWN0b3J5KSB7DQorCQl0aGlzLnBhcmVudEFkYXB0ZXJGYWN0b3J5ID0gcGFyZW50QWRhcHRlckZhY3Rvcnk7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIGJvb2xlYW4gaXNGYWN0b3J5Rm9yVHlwZShPYmplY3QgdHlwZSkgew0KKwkJcmV0dXJuIHN1cHBvcnRlZFR5cGVzLmNvbnRhaW5zKHR5cGUpIHx8IHN1cGVyLmlzRmFjdG9yeUZvclR5cGUodHlwZSk7DQorCX0NCisNCisJLyoqDQorCSAqIFRoaXMgaW1wbGVtZW50YXRpb24gc3Vic3RpdHV0ZXMgdGhlIGZhY3RvcnkgaXRzZWxmIGFzIHRoZSBrZXkgZm9yIHRoZSBhZGFwdGVyLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXB1YmxpYyBBZGFwdGVyIGFkYXB0KE5vdGlmaWVyIG5vdGlmaWVyLCBPYmplY3QgdHlwZSkgew0KKwkJcmV0dXJuIHN1cGVyLmFkYXB0KG5vdGlmaWVyLCB0aGlzKTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgT2JqZWN0IGFkYXB0KE9iamVjdCBvYmplY3QsIE9iamVjdCB0eXBlKSB7DQorCQlpZiAoaXNGYWN0b3J5Rm9yVHlwZSh0eXBlKSkgew0KKwkJCU9iamVjdCBhZGFwdGVyID0gc3VwZXIuYWRhcHQob2JqZWN0LCB0eXBlKTsNCisJCQlpZiAoISh0eXBlIGluc3RhbmNlb2YgQ2xhc3M8Pz4pIHx8ICgoKENsYXNzPD8+KXR5cGUpLmlzSW5zdGFuY2UoYWRhcHRlcikpKSB7DQorCQkJCXJldHVybiBhZGFwdGVyOw0KKwkJCX0NCisJCX0NCisNCisJCXJldHVybiBudWxsOw0KKwl9DQorDQorCS8qKg0KKwkgKiBUaGlzIGFkZHMgYSBsaXN0ZW5lci4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyB2b2lkIGFkZExpc3RlbmVyKElOb3RpZnlDaGFuZ2VkTGlzdGVuZXIgbm90aWZ5Q2hhbmdlZExpc3RlbmVyKSB7DQorCQljaGFuZ2VOb3RpZmllci5hZGRMaXN0ZW5lcihub3RpZnlDaGFuZ2VkTGlzdGVuZXIpOw0KKwl9DQorDQorCS8qKg0KKwkgKiBUaGlzIHJlbW92ZXMgYSBsaXN0ZW5lci4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyB2b2lkIHJlbW92ZUxpc3RlbmVyKElOb3RpZnlDaGFuZ2VkTGlzdGVuZXIgbm90aWZ5Q2hhbmdlZExpc3RlbmVyKSB7DQorCQljaGFuZ2VOb3RpZmllci5yZW1vdmVMaXN0ZW5lcihub3RpZnlDaGFuZ2VkTGlzdGVuZXIpOw0KKwl9DQorDQorCS8qKg0KKwkgKiBUaGlzIGRlbGVnYXRlcyB0byB7QGxpbmsgI2NoYW5nZU5vdGlmaWVyfSBhbmQgdG8ge0BsaW5rICNwYXJlbnRBZGFwdGVyRmFjdG9yeX0uDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgdm9pZCBmaXJlTm90aWZ5Q2hhbmdlZChOb3RpZmljYXRpb24gbm90aWZpY2F0aW9uKSB7DQorCQljaGFuZ2VOb3RpZmllci5maXJlTm90aWZ5Q2hhbmdlZChub3RpZmljYXRpb24pOw0KKw0KKwkJaWYgKHBhcmVudEFkYXB0ZXJGYWN0b3J5ICE9IG51bGwpIHsNCisJCQlwYXJlbnRBZGFwdGVyRmFjdG9yeS5maXJlTm90aWZ5Q2hhbmdlZChub3RpZmljYXRpb24pOw0KKwkJfQ0KKwl9DQorDQorCS8qKg0KKwkgKiBUaGlzIGRpc3Bvc2VzIGFsbCBvZiB0aGUgaXRlbSBwcm92aWRlcnMgY3JlYXRlZCBieSB0aGlzIGZhY3RvcnkuIA0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIHZvaWQgZGlzcG9zZSgpIHsNCisJCWlmIChpdGVtRmxvd0l0ZW1Qcm92aWRlciAhPSBudWxsKSBpdGVtRmxvd0l0ZW1Qcm92aWRlci5kaXNwb3NlKCk7DQorCQlpZiAoZmxvd1Byb3BlcnR5SXRlbVByb3ZpZGVyICE9IG51bGwpIGZsb3dQcm9wZXJ0eUl0ZW1Qcm92aWRlci5kaXNwb3NlKCk7DQorCQlpZiAoZnVsbFBvcnRJdGVtUHJvdmlkZXIgIT0gbnVsbCkgZnVsbFBvcnRJdGVtUHJvdmlkZXIuZGlzcG9zZSgpOw0KKwkJaWYgKGludGVyZmFjZUJsb2NrSXRlbVByb3ZpZGVyICE9IG51bGwpIGludGVyZmFjZUJsb2NrSXRlbVByb3ZpZGVyLmRpc3Bvc2UoKTsNCisJCWlmIChwcm94eVBvcnRJdGVtUHJvdmlkZXIgIT0gbnVsbCkgcHJveHlQb3J0SXRlbVByb3ZpZGVyLmRpc3Bvc2UoKTsNCisJCWlmIChhY2NlcHRDaGFuZ2VTdHJ1Y3R1cmFsRmVhdHVyZUV2ZW50QWN0aW9uSXRlbVByb3ZpZGVyICE9IG51bGwpIGFjY2VwdENoYW5nZVN0cnVjdHVyYWxGZWF0dXJlRXZlbnRBY3Rpb25JdGVtUHJvdmlkZXIuZGlzcG9zZSgpOw0KKwkJaWYgKGNoYW5nZVN0cnVjdHVyYWxGZWF0dXJlRXZlbnRJdGVtUHJvdmlkZXIgIT0gbnVsbCkgY2hhbmdlU3RydWN0dXJhbEZlYXR1cmVFdmVudEl0ZW1Qcm92aWRlci5kaXNwb3NlKCk7DQorCQlpZiAoZGlyZWN0ZWRGZWF0dXJlSXRlbVByb3ZpZGVyICE9IG51bGwpIGRpcmVjdGVkRmVhdHVyZUl0ZW1Qcm92aWRlci5kaXNwb3NlKCk7DQorCQlpZiAoaW52b2NhdGlvbk9uTmVzdGVkUG9ydEFjdGlvbkl0ZW1Qcm92aWRlciAhPSBudWxsKSBpbnZvY2F0aW9uT25OZXN0ZWRQb3J0QWN0aW9uSXRlbVByb3ZpZGVyLmRpc3Bvc2UoKTsNCisJCWlmICh0cmlnZ2VyT25OZXN0ZWRQb3J0SXRlbVByb3ZpZGVyICE9IG51bGwpIHRyaWdnZXJPbk5lc3RlZFBvcnRJdGVtUHJvdmlkZXIuZGlzcG9zZSgpOw0KKwl9DQorDQorfQ0KZGlmZiAtLWdpdCBhL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmVkaXQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvcG9ydGFuZGZsb3dzL3Byb3ZpZGVyL1Byb3h5UG9ydEl0ZW1Qcm92aWRlci5qYXZhIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZWRpdC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9wb3J0YW5kZmxvd3MvcHJvdmlkZXIvUHJveHlQb3J0SXRlbVByb3ZpZGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmEyNDY1MwotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmVkaXQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvcG9ydGFuZGZsb3dzL3Byb3ZpZGVyL1Byb3h5UG9ydEl0ZW1Qcm92aWRlci5qYXZhCkBAIC0wLDAgKzEsMTQ5IEBACisvKioNCisgKiBDb3B5cmlnaHQgKGMpIDIwMTUgQ0VBIExJU1QuDQorICogDQorICogIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCisgKiAgYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQorICogIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQorICogIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICovDQorcGFja2FnZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucG9ydGFuZGZsb3dzLnByb3ZpZGVyOw0KKw0KKw0KK2ltcG9ydCBqYXZhLnV0aWwuQ29sbGVjdGlvbjsNCitpbXBvcnQgamF2YS51dGlsLkxpc3Q7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jb21tb24ubm90aWZ5LkFkYXB0ZXJGYWN0b3J5Ow0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY29tbW9uLm5vdGlmeS5Ob3RpZmljYXRpb247DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jb21tb24udXRpbC5SZXNvdXJjZUxvY2F0b3I7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lZGl0LnByb3ZpZGVyLkNvbXBvc2VhYmxlQWRhcHRlckZhY3Rvcnk7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lZGl0LnByb3ZpZGVyLklFZGl0aW5nRG9tYWluSXRlbVByb3ZpZGVyOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWRpdC5wcm92aWRlci5JSXRlbUxhYmVsUHJvdmlkZXI7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lZGl0LnByb3ZpZGVyLklJdGVtUHJvcGVydHlEZXNjcmlwdG9yOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWRpdC5wcm92aWRlci5JSXRlbVByb3BlcnR5U291cmNlOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWRpdC5wcm92aWRlci5JU3RydWN0dXJlZEl0ZW1Db250ZW50UHJvdmlkZXI7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lZGl0LnByb3ZpZGVyLklUcmVlSXRlbUNvbnRlbnRQcm92aWRlcjsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVkaXQucHJvdmlkZXIuSXRlbVByb3ZpZGVyQWRhcHRlcjsNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnBvcnRhbmRmbG93cy5Qb3J0YW5kZmxvd3NQYWNrYWdlOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucHJvdmlkZXIuU3lzbWxFZGl0UGx1Z2luOw0KKw0KKy8qKg0KKyAqIFRoaXMgaXMgdGhlIGl0ZW0gcHJvdmlkZXIgYWRhcHRlciBmb3IgYSB7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnBvcnRhbmRmbG93cy5Qcm94eVBvcnR9IG9iamVjdC4NCisgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKyAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKyAqIEBnZW5lcmF0ZWQNCisgKi8NCitwdWJsaWMgY2xhc3MgUHJveHlQb3J0SXRlbVByb3ZpZGVyIA0KKwlleHRlbmRzIEl0ZW1Qcm92aWRlckFkYXB0ZXINCisJaW1wbGVtZW50cw0KKwkJSUVkaXRpbmdEb21haW5JdGVtUHJvdmlkZXIsDQorCQlJU3RydWN0dXJlZEl0ZW1Db250ZW50UHJvdmlkZXIsDQorCQlJVHJlZUl0ZW1Db250ZW50UHJvdmlkZXIsDQorCQlJSXRlbUxhYmVsUHJvdmlkZXIsDQorCQlJSXRlbVByb3BlcnR5U291cmNlIHsNCisJLyoqDQorCSAqIFRoaXMgY29uc3RydWN0cyBhbiBpbnN0YW5jZSBmcm9tIGEgZmFjdG9yeSBhbmQgYSBub3RpZmllci4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBQcm94eVBvcnRJdGVtUHJvdmlkZXIoQWRhcHRlckZhY3RvcnkgYWRhcHRlckZhY3RvcnkpIHsNCisJCXN1cGVyKGFkYXB0ZXJGYWN0b3J5KTsNCisJfQ0KKw0KKwkvKioNCisJICogVGhpcyByZXR1cm5zIHRoZSBwcm9wZXJ0eSBkZXNjcmlwdG9ycyBmb3IgdGhlIGFkYXB0ZWQgY2xhc3MuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIExpc3Q8SUl0ZW1Qcm9wZXJ0eURlc2NyaXB0b3I+IGdldFByb3BlcnR5RGVzY3JpcHRvcnMoT2JqZWN0IG9iamVjdCkgew0KKwkJaWYgKGl0ZW1Qcm9wZXJ0eURlc2NyaXB0b3JzID09IG51bGwpIHsNCisJCQlzdXBlci5nZXRQcm9wZXJ0eURlc2NyaXB0b3JzKG9iamVjdCk7DQorDQorCQkJYWRkQmFzZV9Qb3J0UHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCk7DQorCQl9DQorCQlyZXR1cm4gaXRlbVByb3BlcnR5RGVzY3JpcHRvcnM7DQorCX0NCisNCisJLyoqDQorCSAqIFRoaXMgYWRkcyBhIHByb3BlcnR5IGRlc2NyaXB0b3IgZm9yIHRoZSBCYXNlIFBvcnQgZmVhdHVyZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXByb3RlY3RlZCB2b2lkIGFkZEJhc2VfUG9ydFByb3BlcnR5RGVzY3JpcHRvcihPYmplY3Qgb2JqZWN0KSB7DQorCQlpdGVtUHJvcGVydHlEZXNjcmlwdG9ycy5hZGQNCisJCQkoY3JlYXRlSXRlbVByb3BlcnR5RGVzY3JpcHRvcg0KKwkJCQkoKChDb21wb3NlYWJsZUFkYXB0ZXJGYWN0b3J5KWFkYXB0ZXJGYWN0b3J5KS5nZXRSb290QWRhcHRlckZhY3RvcnkoKSwNCisJCQkJIGdldFJlc291cmNlTG9jYXRvcigpLA0KKwkJCQkgZ2V0U3RyaW5nKCJfVUlfUHJveHlQb3J0X2Jhc2VfUG9ydF9mZWF0dXJlIiksIC8vJE5PTi1OTFMtMSQNCisJCQkJIGdldFN0cmluZygiX1VJX1Byb3BlcnR5RGVzY3JpcHRvcl9kZXNjcmlwdGlvbiIsICJfVUlfUHJveHlQb3J0X2Jhc2VfUG9ydF9mZWF0dXJlIiwgIl9VSV9Qcm94eVBvcnRfdHlwZSIpLCAvLyROT04tTkxTLTEkIC8vJE5PTi1OTFMtMiQgLy8kTk9OLU5MUy0zJA0KKwkJCQkgUG9ydGFuZGZsb3dzUGFja2FnZS5MaXRlcmFscy5QUk9YWV9QT1JUX19CQVNFX1BPUlQsDQorCQkJCSB0cnVlLA0KKwkJCQkgZmFsc2UsDQorCQkJCSB0cnVlLA0KKwkJCQkgbnVsbCwNCisJCQkJIG51bGwsDQorCQkJCSBudWxsKSk7DQorCX0NCisNCisJLyoqDQorCSAqIFRoaXMgcmV0dXJucyBQcm94eVBvcnQuZ2lmLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXB1YmxpYyBPYmplY3QgZ2V0SW1hZ2UoT2JqZWN0IG9iamVjdCkgew0KKwkJcmV0dXJuIG92ZXJsYXlJbWFnZShvYmplY3QsIGdldFJlc291cmNlTG9jYXRvcigpLmdldEltYWdlKCJmdWxsL29iajE2L1Byb3h5UG9ydCIpKTsgLy8kTk9OLU5MUy0xJA0KKwl9DQorDQorCS8qKg0KKwkgKiBUaGlzIHJldHVybnMgdGhlIGxhYmVsIHRleHQgZm9yIHRoZSBhZGFwdGVkIGNsYXNzLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXB1YmxpYyBTdHJpbmcgZ2V0VGV4dChPYmplY3Qgb2JqZWN0KSB7DQorCQlyZXR1cm4gZ2V0U3RyaW5nKCJfVUlfUHJveHlQb3J0X3R5cGUiKTsgLy8kTk9OLU5MUy0xJA0KKwl9DQorCQ0KKw0KKwkvKioNCisJICogVGhpcyBoYW5kbGVzIG1vZGVsIG5vdGlmaWNhdGlvbnMgYnkgY2FsbGluZyB7QGxpbmsgI3VwZGF0ZUNoaWxkcmVufSB0byB1cGRhdGUgYW55IGNhY2hlZA0KKwkgKiBjaGlsZHJlbiBhbmQgYnkgY3JlYXRpbmcgYSB2aWV3ZXIgbm90aWZpY2F0aW9uLCB3aGljaCBpdCBwYXNzZXMgdG8ge0BsaW5rICNmaXJlTm90aWZ5Q2hhbmdlZH0uDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIHZvaWQgbm90aWZ5Q2hhbmdlZChOb3RpZmljYXRpb24gbm90aWZpY2F0aW9uKSB7DQorCQl1cGRhdGVDaGlsZHJlbihub3RpZmljYXRpb24pOw0KKwkJc3VwZXIubm90aWZ5Q2hhbmdlZChub3RpZmljYXRpb24pOw0KKwl9DQorDQorCS8qKg0KKwkgKiBUaGlzIGFkZHMge0BsaW5rIG9yZy5lY2xpcHNlLmVtZi5lZGl0LmNvbW1hbmQuQ29tbWFuZFBhcmFtZXRlcn1zIGRlc2NyaWJpbmcgdGhlIGNoaWxkcmVuDQorCSAqIHRoYXQgY2FuIGJlIGNyZWF0ZWQgdW5kZXIgdGhpcyBvYmplY3QuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHJvdGVjdGVkIHZvaWQgY29sbGVjdE5ld0NoaWxkRGVzY3JpcHRvcnMoQ29sbGVjdGlvbjxPYmplY3Q+IG5ld0NoaWxkRGVzY3JpcHRvcnMsIE9iamVjdCBvYmplY3QpIHsNCisJCXN1cGVyLmNvbGxlY3ROZXdDaGlsZERlc2NyaXB0b3JzKG5ld0NoaWxkRGVzY3JpcHRvcnMsIG9iamVjdCk7DQorCX0NCisNCisJLyoqDQorCSAqIFJldHVybiB0aGUgcmVzb3VyY2UgbG9jYXRvciBmb3IgdGhpcyBpdGVtIHByb3ZpZGVyJ3MgcmVzb3VyY2VzLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXB1YmxpYyBSZXNvdXJjZUxvY2F0b3IgZ2V0UmVzb3VyY2VMb2NhdG9yKCkgew0KKwkJcmV0dXJuIFN5c21sRWRpdFBsdWdpbi5JTlNUQU5DRTsNCisJfQ0KKw0KK30NCmRpZmYgLS1naXQgYS9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5lZGl0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L3BvcnRhbmRmbG93cy9wcm92aWRlci9UcmlnZ2VyT25OZXN0ZWRQb3J0SXRlbVByb3ZpZGVyLmphdmEgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5lZGl0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L3BvcnRhbmRmbG93cy9wcm92aWRlci9UcmlnZ2VyT25OZXN0ZWRQb3J0SXRlbVByb3ZpZGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjM3N2E2YQotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmVkaXQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvcG9ydGFuZGZsb3dzL3Byb3ZpZGVyL1RyaWdnZXJPbk5lc3RlZFBvcnRJdGVtUHJvdmlkZXIuamF2YQpAQCAtMCwwICsxLDE2MCBAQAorLyoqDQorICogQ29weXJpZ2h0IChjKSAyMDE1IENFQSBMSVNULg0KKyAqIA0KKyAqICBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQorICogIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KKyAqICB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KKyAqICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqLw0KK3BhY2thZ2Ugb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnBvcnRhbmRmbG93cy5wcm92aWRlcjsNCisNCisNCitpbXBvcnQgamF2YS51dGlsLkNvbGxlY3Rpb247DQoraW1wb3J0IGphdmEudXRpbC5MaXN0Ow0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY29tbW9uLm5vdGlmeS5BZGFwdGVyRmFjdG9yeTsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi5ub3RpZnkuTm90aWZpY2F0aW9uOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY29tbW9uLnV0aWwuUmVzb3VyY2VMb2NhdG9yOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWRpdC5wcm92aWRlci5Db21wb3NlYWJsZUFkYXB0ZXJGYWN0b3J5Ow0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWRpdC5wcm92aWRlci5JSXRlbVByb3BlcnR5RGVzY3JpcHRvcjsNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmJsb2Nrcy5wcm92aWRlci5FbGVtZW50UHJvcGVydHlQYXRoSXRlbVByb3ZpZGVyOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucG9ydGFuZGZsb3dzLlBvcnRhbmRmbG93c1BhY2thZ2U7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5wcm92aWRlci5TeXNtbEVkaXRQbHVnaW47DQorDQorLyoqDQorICogVGhpcyBpcyB0aGUgaXRlbSBwcm92aWRlciBhZGFwdGVyIGZvciBhIHtAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucG9ydGFuZGZsb3dzLlRyaWdnZXJPbk5lc3RlZFBvcnR9IG9iamVjdC4NCisgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKyAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKyAqIEBnZW5lcmF0ZWQNCisgKi8NCitwdWJsaWMgY2xhc3MgVHJpZ2dlck9uTmVzdGVkUG9ydEl0ZW1Qcm92aWRlciBleHRlbmRzIEVsZW1lbnRQcm9wZXJ0eVBhdGhJdGVtUHJvdmlkZXIgew0KKwkvKioNCisJICogVGhpcyBjb25zdHJ1Y3RzIGFuIGluc3RhbmNlIGZyb20gYSBmYWN0b3J5IGFuZCBhIG5vdGlmaWVyLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIFRyaWdnZXJPbk5lc3RlZFBvcnRJdGVtUHJvdmlkZXIoQWRhcHRlckZhY3RvcnkgYWRhcHRlckZhY3RvcnkpIHsNCisJCXN1cGVyKGFkYXB0ZXJGYWN0b3J5KTsNCisJfQ0KKw0KKwkvKioNCisJICogVGhpcyByZXR1cm5zIHRoZSBwcm9wZXJ0eSBkZXNjcmlwdG9ycyBmb3IgdGhlIGFkYXB0ZWQgY2xhc3MuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIExpc3Q8SUl0ZW1Qcm9wZXJ0eURlc2NyaXB0b3I+IGdldFByb3BlcnR5RGVzY3JpcHRvcnMoT2JqZWN0IG9iamVjdCkgew0KKwkJaWYgKGl0ZW1Qcm9wZXJ0eURlc2NyaXB0b3JzID09IG51bGwpIHsNCisJCQlzdXBlci5nZXRQcm9wZXJ0eURlc2NyaXB0b3JzKG9iamVjdCk7DQorDQorCQkJYWRkQmFzZV9UcmlnZ2VyUHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCk7DQorCQkJYWRkT25OZXN0ZWRQb3J0UHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCk7DQorCQl9DQorCQlyZXR1cm4gaXRlbVByb3BlcnR5RGVzY3JpcHRvcnM7DQorCX0NCisNCisJLyoqDQorCSAqIFRoaXMgYWRkcyBhIHByb3BlcnR5IGRlc2NyaXB0b3IgZm9yIHRoZSBCYXNlIFRyaWdnZXIgZmVhdHVyZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXByb3RlY3RlZCB2b2lkIGFkZEJhc2VfVHJpZ2dlclByb3BlcnR5RGVzY3JpcHRvcihPYmplY3Qgb2JqZWN0KSB7DQorCQlpdGVtUHJvcGVydHlEZXNjcmlwdG9ycy5hZGQNCisJCQkoY3JlYXRlSXRlbVByb3BlcnR5RGVzY3JpcHRvcg0KKwkJCQkoKChDb21wb3NlYWJsZUFkYXB0ZXJGYWN0b3J5KWFkYXB0ZXJGYWN0b3J5KS5nZXRSb290QWRhcHRlckZhY3RvcnkoKSwNCisJCQkJIGdldFJlc291cmNlTG9jYXRvcigpLA0KKwkJCQkgZ2V0U3RyaW5nKCJfVUlfVHJpZ2dlck9uTmVzdGVkUG9ydF9iYXNlX1RyaWdnZXJfZmVhdHVyZSIpLCAvLyROT04tTkxTLTEkDQorCQkJCSBnZXRTdHJpbmcoIl9VSV9Qcm9wZXJ0eURlc2NyaXB0b3JfZGVzY3JpcHRpb24iLCAiX1VJX1RyaWdnZXJPbk5lc3RlZFBvcnRfYmFzZV9UcmlnZ2VyX2ZlYXR1cmUiLCAiX1VJX1RyaWdnZXJPbk5lc3RlZFBvcnRfdHlwZSIpLCAvLyROT04tTkxTLTEkIC8vJE5PTi1OTFMtMiQgLy8kTk9OLU5MUy0zJA0KKwkJCQkgUG9ydGFuZGZsb3dzUGFja2FnZS5MaXRlcmFscy5UUklHR0VSX09OX05FU1RFRF9QT1JUX19CQVNFX1RSSUdHRVIsDQorCQkJCSB0cnVlLA0KKwkJCQkgZmFsc2UsDQorCQkJCSB0cnVlLA0KKwkJCQkgbnVsbCwNCisJCQkJIG51bGwsDQorCQkJCSBudWxsKSk7DQorCX0NCisNCisJLyoqDQorCSAqIFRoaXMgYWRkcyBhIHByb3BlcnR5IGRlc2NyaXB0b3IgZm9yIHRoZSBPbiBOZXN0ZWQgUG9ydCBmZWF0dXJlLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHJvdGVjdGVkIHZvaWQgYWRkT25OZXN0ZWRQb3J0UHJvcGVydHlEZXNjcmlwdG9yKE9iamVjdCBvYmplY3QpIHsNCisJCWl0ZW1Qcm9wZXJ0eURlc2NyaXB0b3JzLmFkZA0KKwkJCShjcmVhdGVJdGVtUHJvcGVydHlEZXNjcmlwdG9yDQorCQkJCSgoKENvbXBvc2VhYmxlQWRhcHRlckZhY3RvcnkpYWRhcHRlckZhY3RvcnkpLmdldFJvb3RBZGFwdGVyRmFjdG9yeSgpLA0KKwkJCQkgZ2V0UmVzb3VyY2VMb2NhdG9yKCksDQorCQkJCSBnZXRTdHJpbmcoIl9VSV9UcmlnZ2VyT25OZXN0ZWRQb3J0X29uTmVzdGVkUG9ydF9mZWF0dXJlIiksIC8vJE5PTi1OTFMtMSQNCisJCQkJIGdldFN0cmluZygiX1VJX1Byb3BlcnR5RGVzY3JpcHRvcl9kZXNjcmlwdGlvbiIsICJfVUlfVHJpZ2dlck9uTmVzdGVkUG9ydF9vbk5lc3RlZFBvcnRfZmVhdHVyZSIsICJfVUlfVHJpZ2dlck9uTmVzdGVkUG9ydF90eXBlIiksIC8vJE5PTi1OTFMtMSQgLy8kTk9OLU5MUy0yJCAvLyROT04tTkxTLTMkDQorCQkJCSBQb3J0YW5kZmxvd3NQYWNrYWdlLkxpdGVyYWxzLlRSSUdHRVJfT05fTkVTVEVEX1BPUlRfX09OX05FU1RFRF9QT1JULA0KKwkJCQkgdHJ1ZSwNCisJCQkJIGZhbHNlLA0KKwkJCQkgdHJ1ZSwNCisJCQkJIG51bGwsDQorCQkJCSBudWxsLA0KKwkJCQkgbnVsbCkpOw0KKwl9DQorDQorCS8qKg0KKwkgKiBUaGlzIHJldHVybnMgVHJpZ2dlck9uTmVzdGVkUG9ydC5naWYuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIE9iamVjdCBnZXRJbWFnZShPYmplY3Qgb2JqZWN0KSB7DQorCQlyZXR1cm4gb3ZlcmxheUltYWdlKG9iamVjdCwgZ2V0UmVzb3VyY2VMb2NhdG9yKCkuZ2V0SW1hZ2UoImZ1bGwvb2JqMTYvVHJpZ2dlck9uTmVzdGVkUG9ydCIpKTsgLy8kTk9OLU5MUy0xJA0KKwl9DQorDQorCS8qKg0KKwkgKiBUaGlzIHJldHVybnMgdGhlIGxhYmVsIHRleHQgZm9yIHRoZSBhZGFwdGVkIGNsYXNzLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXB1YmxpYyBTdHJpbmcgZ2V0VGV4dChPYmplY3Qgb2JqZWN0KSB7DQorCQlyZXR1cm4gZ2V0U3RyaW5nKCJfVUlfVHJpZ2dlck9uTmVzdGVkUG9ydF90eXBlIik7IC8vJE5PTi1OTFMtMSQNCisJfQ0KKwkNCisNCisJLyoqDQorCSAqIFRoaXMgaGFuZGxlcyBtb2RlbCBub3RpZmljYXRpb25zIGJ5IGNhbGxpbmcge0BsaW5rICN1cGRhdGVDaGlsZHJlbn0gdG8gdXBkYXRlIGFueSBjYWNoZWQNCisJICogY2hpbGRyZW4gYW5kIGJ5IGNyZWF0aW5nIGEgdmlld2VyIG5vdGlmaWNhdGlvbiwgd2hpY2ggaXQgcGFzc2VzIHRvIHtAbGluayAjZmlyZU5vdGlmeUNoYW5nZWR9Lg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXB1YmxpYyB2b2lkIG5vdGlmeUNoYW5nZWQoTm90aWZpY2F0aW9uIG5vdGlmaWNhdGlvbikgew0KKwkJdXBkYXRlQ2hpbGRyZW4obm90aWZpY2F0aW9uKTsNCisJCXN1cGVyLm5vdGlmeUNoYW5nZWQobm90aWZpY2F0aW9uKTsNCisJfQ0KKw0KKwkvKioNCisJICogVGhpcyBhZGRzIHtAbGluayBvcmcuZWNsaXBzZS5lbWYuZWRpdC5jb21tYW5kLkNvbW1hbmRQYXJhbWV0ZXJ9cyBkZXNjcmliaW5nIHRoZSBjaGlsZHJlbg0KKwkgKiB0aGF0IGNhbiBiZSBjcmVhdGVkIHVuZGVyIHRoaXMgb2JqZWN0Lg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXByb3RlY3RlZCB2b2lkIGNvbGxlY3ROZXdDaGlsZERlc2NyaXB0b3JzKENvbGxlY3Rpb248T2JqZWN0PiBuZXdDaGlsZERlc2NyaXB0b3JzLCBPYmplY3Qgb2JqZWN0KSB7DQorCQlzdXBlci5jb2xsZWN0TmV3Q2hpbGREZXNjcmlwdG9ycyhuZXdDaGlsZERlc2NyaXB0b3JzLCBvYmplY3QpOw0KKwl9DQorDQorCS8qKg0KKwkgKiBSZXR1cm4gdGhlIHJlc291cmNlIGxvY2F0b3IgZm9yIHRoaXMgaXRlbSBwcm92aWRlcidzIHJlc291cmNlcy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgUmVzb3VyY2VMb2NhdG9yIGdldFJlc291cmNlTG9jYXRvcigpIHsNCisJCXJldHVybiBTeXNtbEVkaXRQbHVnaW4uSU5TVEFOQ0U7DQorCX0NCisNCit9DQpkaWZmIC0tZ2l0IGEvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZWRpdC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9wcm92aWRlci9TeXNtbEVkaXRQbHVnaW4uamF2YSBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmVkaXQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvcHJvdmlkZXIvU3lzbWxFZGl0UGx1Z2luLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjJiYTYwMAotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmVkaXQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvcHJvdmlkZXIvU3lzbWxFZGl0UGx1Z2luLmphdmEKQEAgLTAsMCArMSwxMDEgQEAKKy8qKg0KKyAqIENvcHlyaWdodCAoYykgMjAxNSBDRUEgTElTVC4NCisgKiANCisgKiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KKyAqICBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCisgKiAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCisgKiAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgKi8NCitwYWNrYWdlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5wcm92aWRlcjsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi5FTUZQbHVnaW47DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jb21tb24udXRpbC5SZXNvdXJjZUxvY2F0b3I7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5wcm92aWRlci5FY29yZUVkaXRQbHVnaW47DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLnVtbDIudW1sLmVkaXQuVU1MRWRpdFBsdWdpbjsNCisNCisvKioNCisgKiBUaGlzIGlzIHRoZSBjZW50cmFsIHNpbmdsZXRvbiBmb3IgdGhlIFN5c01MIGVkaXQgcGx1Z2luLg0KKyAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorICogQGdlbmVyYXRlZA0KKyAqLw0KK3B1YmxpYyBmaW5hbCBjbGFzcyBTeXNtbEVkaXRQbHVnaW4gZXh0ZW5kcyBFTUZQbHVnaW4gew0KKwkvKioNCisJICogS2VlcCB0cmFjayBvZiB0aGUgc2luZ2xldG9uLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIHN0YXRpYyBmaW5hbCBTeXNtbEVkaXRQbHVnaW4gSU5TVEFOQ0UgPSBuZXcgU3lzbWxFZGl0UGx1Z2luKCk7DQorDQorCS8qKg0KKwkgKiBLZWVwIHRyYWNrIG9mIHRoZSBzaW5nbGV0b24uDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwcml2YXRlIHN0YXRpYyBJbXBsZW1lbnRhdGlvbiBwbHVnaW47DQorDQorCS8qKg0KKwkgKiBDcmVhdGUgdGhlIGluc3RhbmNlLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIFN5c21sRWRpdFBsdWdpbigpIHsNCisJCXN1cGVyDQorCQkgIChuZXcgUmVzb3VyY2VMb2NhdG9yIFtdIHsNCisJCSAgICAgRWNvcmVFZGl0UGx1Z2luLklOU1RBTkNFLA0KKwkJICAgICBVTUxFZGl0UGx1Z2luLklOU1RBTkNFLA0KKwkJICAgfSk7DQorCX0NCisNCisJLyoqDQorCSAqIFJldHVybnMgdGhlIHNpbmdsZXRvbiBpbnN0YW5jZSBvZiB0aGUgRWNsaXBzZSBwbHVnaW4uDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAcmV0dXJuIHRoZSBzaW5nbGV0b24gaW5zdGFuY2UuDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgUmVzb3VyY2VMb2NhdG9yIGdldFBsdWdpblJlc291cmNlTG9jYXRvcigpIHsNCisJCXJldHVybiBwbHVnaW47DQorCX0NCisNCisJLyoqDQorCSAqIFJldHVybnMgdGhlIHNpbmdsZXRvbiBpbnN0YW5jZSBvZiB0aGUgRWNsaXBzZSBwbHVnaW4uDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAcmV0dXJuIHRoZSBzaW5nbGV0b24gaW5zdGFuY2UuDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBzdGF0aWMgSW1wbGVtZW50YXRpb24gZ2V0UGx1Z2luKCkgew0KKwkJcmV0dXJuIHBsdWdpbjsNCisJfQ0KKw0KKwkvKioNCisJICogVGhlIGFjdHVhbCBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgRWNsaXBzZSA8Yj5QbHVnaW48L2I+Lg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIHN0YXRpYyBjbGFzcyBJbXBsZW1lbnRhdGlvbiBleHRlbmRzIEVjbGlwc2VQbHVnaW4gew0KKwkJLyoqDQorCQkgKiBDcmVhdGVzIGFuIGluc3RhbmNlLg0KKwkJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkJICogQGdlbmVyYXRlZA0KKwkJICovDQorCQlwdWJsaWMgSW1wbGVtZW50YXRpb24oKSB7DQorCQkJc3VwZXIoKTsNCisNCisJCQkvLyBSZW1lbWJlciB0aGUgc3RhdGljIGluc3RhbmNlLg0KKwkJCS8vDQorCQkJcGx1Z2luID0gdGhpczsNCisJCX0NCisJfQ0KKw0KK30NCmRpZmYgLS1naXQgYS9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5lZGl0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L3JlcXVpcmVtZW50cy9wcm92aWRlci9Db3B5SXRlbVByb3ZpZGVyLmphdmEgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5lZGl0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L3JlcXVpcmVtZW50cy9wcm92aWRlci9Db3B5SXRlbVByb3ZpZGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjY0ZjRjZAotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmVkaXQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvcmVxdWlyZW1lbnRzL3Byb3ZpZGVyL0NvcHlJdGVtUHJvdmlkZXIuamF2YQpAQCAtMCwwICsxLDEwMCBAQAorLyoqDQorICogQ29weXJpZ2h0IChjKSAyMDE1IENFQSBMSVNULg0KKyAqIA0KKyAqICBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQorICogIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KKyAqICB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KKyAqICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqLw0KK3BhY2thZ2Ugb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnJlcXVpcmVtZW50cy5wcm92aWRlcjsNCisNCisNCitpbXBvcnQgamF2YS51dGlsLkNvbGxlY3Rpb247DQoraW1wb3J0IGphdmEudXRpbC5MaXN0Ow0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY29tbW9uLm5vdGlmeS5BZGFwdGVyRmFjdG9yeTsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi5ub3RpZnkuTm90aWZpY2F0aW9uOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWRpdC5wcm92aWRlci5JSXRlbVByb3BlcnR5RGVzY3JpcHRvcjsNCisNCisvKioNCisgKiBUaGlzIGlzIHRoZSBpdGVtIHByb3ZpZGVyIGFkYXB0ZXIgZm9yIGEge0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5yZXF1aXJlbWVudHMuQ29weX0gb2JqZWN0Lg0KKyAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorICogQGdlbmVyYXRlZA0KKyAqLw0KK3B1YmxpYyBjbGFzcyBDb3B5SXRlbVByb3ZpZGVyIGV4dGVuZHMgVHJhY2VJdGVtUHJvdmlkZXIgew0KKwkvKioNCisJICogVGhpcyBjb25zdHJ1Y3RzIGFuIGluc3RhbmNlIGZyb20gYSBmYWN0b3J5IGFuZCBhIG5vdGlmaWVyLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIENvcHlJdGVtUHJvdmlkZXIoQWRhcHRlckZhY3RvcnkgYWRhcHRlckZhY3RvcnkpIHsNCisJCXN1cGVyKGFkYXB0ZXJGYWN0b3J5KTsNCisJfQ0KKw0KKwkvKioNCisJICogVGhpcyByZXR1cm5zIHRoZSBwcm9wZXJ0eSBkZXNjcmlwdG9ycyBmb3IgdGhlIGFkYXB0ZWQgY2xhc3MuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIExpc3Q8SUl0ZW1Qcm9wZXJ0eURlc2NyaXB0b3I+IGdldFByb3BlcnR5RGVzY3JpcHRvcnMoT2JqZWN0IG9iamVjdCkgew0KKwkJaWYgKGl0ZW1Qcm9wZXJ0eURlc2NyaXB0b3JzID09IG51bGwpIHsNCisJCQlzdXBlci5nZXRQcm9wZXJ0eURlc2NyaXB0b3JzKG9iamVjdCk7DQorDQorCQl9DQorCQlyZXR1cm4gaXRlbVByb3BlcnR5RGVzY3JpcHRvcnM7DQorCX0NCisNCisJLyoqDQorCSAqIFRoaXMgcmV0dXJucyBDb3B5LmdpZi4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgT2JqZWN0IGdldEltYWdlKE9iamVjdCBvYmplY3QpIHsNCisJCXJldHVybiBvdmVybGF5SW1hZ2Uob2JqZWN0LCBnZXRSZXNvdXJjZUxvY2F0b3IoKS5nZXRJbWFnZSgiZnVsbC9vYmoxNi9Db3B5IikpOyAvLyROT04tTkxTLTEkDQorCX0NCisNCisJLyoqDQorCSAqIFRoaXMgcmV0dXJucyB0aGUgbGFiZWwgdGV4dCBmb3IgdGhlIGFkYXB0ZWQgY2xhc3MuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIFN0cmluZyBnZXRUZXh0KE9iamVjdCBvYmplY3QpIHsNCisJCXJldHVybiBnZXRTdHJpbmcoIl9VSV9Db3B5X3R5cGUiKTsgLy8kTk9OLU5MUy0xJA0KKwl9DQorCQ0KKw0KKwkvKioNCisJICogVGhpcyBoYW5kbGVzIG1vZGVsIG5vdGlmaWNhdGlvbnMgYnkgY2FsbGluZyB7QGxpbmsgI3VwZGF0ZUNoaWxkcmVufSB0byB1cGRhdGUgYW55IGNhY2hlZA0KKwkgKiBjaGlsZHJlbiBhbmQgYnkgY3JlYXRpbmcgYSB2aWV3ZXIgbm90aWZpY2F0aW9uLCB3aGljaCBpdCBwYXNzZXMgdG8ge0BsaW5rICNmaXJlTm90aWZ5Q2hhbmdlZH0uDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIHZvaWQgbm90aWZ5Q2hhbmdlZChOb3RpZmljYXRpb24gbm90aWZpY2F0aW9uKSB7DQorCQl1cGRhdGVDaGlsZHJlbihub3RpZmljYXRpb24pOw0KKwkJc3VwZXIubm90aWZ5Q2hhbmdlZChub3RpZmljYXRpb24pOw0KKwl9DQorDQorCS8qKg0KKwkgKiBUaGlzIGFkZHMge0BsaW5rIG9yZy5lY2xpcHNlLmVtZi5lZGl0LmNvbW1hbmQuQ29tbWFuZFBhcmFtZXRlcn1zIGRlc2NyaWJpbmcgdGhlIGNoaWxkcmVuDQorCSAqIHRoYXQgY2FuIGJlIGNyZWF0ZWQgdW5kZXIgdGhpcyBvYmplY3QuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHJvdGVjdGVkIHZvaWQgY29sbGVjdE5ld0NoaWxkRGVzY3JpcHRvcnMoQ29sbGVjdGlvbjxPYmplY3Q+IG5ld0NoaWxkRGVzY3JpcHRvcnMsIE9iamVjdCBvYmplY3QpIHsNCisJCXN1cGVyLmNvbGxlY3ROZXdDaGlsZERlc2NyaXB0b3JzKG5ld0NoaWxkRGVzY3JpcHRvcnMsIG9iamVjdCk7DQorCX0NCisNCit9DQpkaWZmIC0tZ2l0IGEvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZWRpdC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9yZXF1aXJlbWVudHMvcHJvdmlkZXIvRGVyaXZlUmVxdEl0ZW1Qcm92aWRlci5qYXZhIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZWRpdC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9yZXF1aXJlbWVudHMvcHJvdmlkZXIvRGVyaXZlUmVxdEl0ZW1Qcm92aWRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQzY2QxZjAKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5lZGl0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L3JlcXVpcmVtZW50cy9wcm92aWRlci9EZXJpdmVSZXF0SXRlbVByb3ZpZGVyLmphdmEKQEAgLTAsMCArMSwxMDAgQEAKKy8qKg0KKyAqIENvcHlyaWdodCAoYykgMjAxNSBDRUEgTElTVC4NCisgKiANCisgKiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KKyAqICBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCisgKiAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCisgKiAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgKi8NCitwYWNrYWdlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5yZXF1aXJlbWVudHMucHJvdmlkZXI7DQorDQorDQoraW1wb3J0IGphdmEudXRpbC5Db2xsZWN0aW9uOw0KK2ltcG9ydCBqYXZhLnV0aWwuTGlzdDsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi5ub3RpZnkuQWRhcHRlckZhY3Rvcnk7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jb21tb24ubm90aWZ5Lk5vdGlmaWNhdGlvbjsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVkaXQucHJvdmlkZXIuSUl0ZW1Qcm9wZXJ0eURlc2NyaXB0b3I7DQorDQorLyoqDQorICogVGhpcyBpcyB0aGUgaXRlbSBwcm92aWRlciBhZGFwdGVyIGZvciBhIHtAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucmVxdWlyZW1lbnRzLkRlcml2ZVJlcXR9IG9iamVjdC4NCisgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKyAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKyAqIEBnZW5lcmF0ZWQNCisgKi8NCitwdWJsaWMgY2xhc3MgRGVyaXZlUmVxdEl0ZW1Qcm92aWRlciBleHRlbmRzIFRyYWNlSXRlbVByb3ZpZGVyIHsNCisJLyoqDQorCSAqIFRoaXMgY29uc3RydWN0cyBhbiBpbnN0YW5jZSBmcm9tIGEgZmFjdG9yeSBhbmQgYSBub3RpZmllci4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBEZXJpdmVSZXF0SXRlbVByb3ZpZGVyKEFkYXB0ZXJGYWN0b3J5IGFkYXB0ZXJGYWN0b3J5KSB7DQorCQlzdXBlcihhZGFwdGVyRmFjdG9yeSk7DQorCX0NCisNCisJLyoqDQorCSAqIFRoaXMgcmV0dXJucyB0aGUgcHJvcGVydHkgZGVzY3JpcHRvcnMgZm9yIHRoZSBhZGFwdGVkIGNsYXNzLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXB1YmxpYyBMaXN0PElJdGVtUHJvcGVydHlEZXNjcmlwdG9yPiBnZXRQcm9wZXJ0eURlc2NyaXB0b3JzKE9iamVjdCBvYmplY3QpIHsNCisJCWlmIChpdGVtUHJvcGVydHlEZXNjcmlwdG9ycyA9PSBudWxsKSB7DQorCQkJc3VwZXIuZ2V0UHJvcGVydHlEZXNjcmlwdG9ycyhvYmplY3QpOw0KKw0KKwkJfQ0KKwkJcmV0dXJuIGl0ZW1Qcm9wZXJ0eURlc2NyaXB0b3JzOw0KKwl9DQorDQorCS8qKg0KKwkgKiBUaGlzIHJldHVybnMgRGVyaXZlUmVxdC5naWYuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIE9iamVjdCBnZXRJbWFnZShPYmplY3Qgb2JqZWN0KSB7DQorCQlyZXR1cm4gb3ZlcmxheUltYWdlKG9iamVjdCwgZ2V0UmVzb3VyY2VMb2NhdG9yKCkuZ2V0SW1hZ2UoImZ1bGwvb2JqMTYvRGVyaXZlUmVxdCIpKTsgLy8kTk9OLU5MUy0xJA0KKwl9DQorDQorCS8qKg0KKwkgKiBUaGlzIHJldHVybnMgdGhlIGxhYmVsIHRleHQgZm9yIHRoZSBhZGFwdGVkIGNsYXNzLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXB1YmxpYyBTdHJpbmcgZ2V0VGV4dChPYmplY3Qgb2JqZWN0KSB7DQorCQlyZXR1cm4gZ2V0U3RyaW5nKCJfVUlfRGVyaXZlUmVxdF90eXBlIik7IC8vJE5PTi1OTFMtMSQNCisJfQ0KKwkNCisNCisJLyoqDQorCSAqIFRoaXMgaGFuZGxlcyBtb2RlbCBub3RpZmljYXRpb25zIGJ5IGNhbGxpbmcge0BsaW5rICN1cGRhdGVDaGlsZHJlbn0gdG8gdXBkYXRlIGFueSBjYWNoZWQNCisJICogY2hpbGRyZW4gYW5kIGJ5IGNyZWF0aW5nIGEgdmlld2VyIG5vdGlmaWNhdGlvbiwgd2hpY2ggaXQgcGFzc2VzIHRvIHtAbGluayAjZmlyZU5vdGlmeUNoYW5nZWR9Lg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXB1YmxpYyB2b2lkIG5vdGlmeUNoYW5nZWQoTm90aWZpY2F0aW9uIG5vdGlmaWNhdGlvbikgew0KKwkJdXBkYXRlQ2hpbGRyZW4obm90aWZpY2F0aW9uKTsNCisJCXN1cGVyLm5vdGlmeUNoYW5nZWQobm90aWZpY2F0aW9uKTsNCisJfQ0KKw0KKwkvKioNCisJICogVGhpcyBhZGRzIHtAbGluayBvcmcuZWNsaXBzZS5lbWYuZWRpdC5jb21tYW5kLkNvbW1hbmRQYXJhbWV0ZXJ9cyBkZXNjcmliaW5nIHRoZSBjaGlsZHJlbg0KKwkgKiB0aGF0IGNhbiBiZSBjcmVhdGVkIHVuZGVyIHRoaXMgb2JqZWN0Lg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXByb3RlY3RlZCB2b2lkIGNvbGxlY3ROZXdDaGlsZERlc2NyaXB0b3JzKENvbGxlY3Rpb248T2JqZWN0PiBuZXdDaGlsZERlc2NyaXB0b3JzLCBPYmplY3Qgb2JqZWN0KSB7DQorCQlzdXBlci5jb2xsZWN0TmV3Q2hpbGREZXNjcmlwdG9ycyhuZXdDaGlsZERlc2NyaXB0b3JzLCBvYmplY3QpOw0KKwl9DQorDQorfQ0KZGlmZiAtLWdpdCBhL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmVkaXQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvcmVxdWlyZW1lbnRzL3Byb3ZpZGVyL1JlZmluZUl0ZW1Qcm92aWRlci5qYXZhIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZWRpdC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9yZXF1aXJlbWVudHMvcHJvdmlkZXIvUmVmaW5lSXRlbVByb3ZpZGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmJmYTEwMAotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmVkaXQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvcmVxdWlyZW1lbnRzL3Byb3ZpZGVyL1JlZmluZUl0ZW1Qcm92aWRlci5qYXZhCkBAIC0wLDAgKzEsMTM3IEBACisvKioNCisgKiBDb3B5cmlnaHQgKGMpIDIwMTUgQ0VBIExJU1QuDQorICogDQorICogIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCisgKiAgYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQorICogIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQorICogIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICovDQorcGFja2FnZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucmVxdWlyZW1lbnRzLnByb3ZpZGVyOw0KKw0KKw0KK2ltcG9ydCBqYXZhLnV0aWwuQ29sbGVjdGlvbjsNCitpbXBvcnQgamF2YS51dGlsLkxpc3Q7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jb21tb24ubm90aWZ5LkFkYXB0ZXJGYWN0b3J5Ow0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY29tbW9uLm5vdGlmeS5Ob3RpZmljYXRpb247DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jb21tb24udXRpbC5SZXNvdXJjZUxvY2F0b3I7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lZGl0LnByb3ZpZGVyLkNvbXBvc2VhYmxlQWRhcHRlckZhY3Rvcnk7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lZGl0LnByb3ZpZGVyLklJdGVtUHJvcGVydHlEZXNjcmlwdG9yOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYmxvY2tzLnByb3ZpZGVyLkRpcmVjdGVkUmVsYXRpb25zaGlwUHJvcGVydHlQYXRoSXRlbVByb3ZpZGVyOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucHJvdmlkZXIuU3lzbWxFZGl0UGx1Z2luOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS51bWwyLnVtbC5wcm9maWxlLnN0YW5kYXJkLlN0YW5kYXJkUGFja2FnZTsNCisNCisvKioNCisgKiBUaGlzIGlzIHRoZSBpdGVtIHByb3ZpZGVyIGFkYXB0ZXIgZm9yIGEge0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5yZXF1aXJlbWVudHMuUmVmaW5lfSBvYmplY3QuDQorICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisgKiBAZ2VuZXJhdGVkDQorICovDQorcHVibGljIGNsYXNzIFJlZmluZUl0ZW1Qcm92aWRlciBleHRlbmRzIERpcmVjdGVkUmVsYXRpb25zaGlwUHJvcGVydHlQYXRoSXRlbVByb3ZpZGVyIHsNCisJLyoqDQorCSAqIFRoaXMgY29uc3RydWN0cyBhbiBpbnN0YW5jZSBmcm9tIGEgZmFjdG9yeSBhbmQgYSBub3RpZmllci4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBSZWZpbmVJdGVtUHJvdmlkZXIoQWRhcHRlckZhY3RvcnkgYWRhcHRlckZhY3RvcnkpIHsNCisJCXN1cGVyKGFkYXB0ZXJGYWN0b3J5KTsNCisJfQ0KKw0KKwkvKioNCisJICogVGhpcyByZXR1cm5zIHRoZSBwcm9wZXJ0eSBkZXNjcmlwdG9ycyBmb3IgdGhlIGFkYXB0ZWQgY2xhc3MuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIExpc3Q8SUl0ZW1Qcm9wZXJ0eURlc2NyaXB0b3I+IGdldFByb3BlcnR5RGVzY3JpcHRvcnMoT2JqZWN0IG9iamVjdCkgew0KKwkJaWYgKGl0ZW1Qcm9wZXJ0eURlc2NyaXB0b3JzID09IG51bGwpIHsNCisJCQlzdXBlci5nZXRQcm9wZXJ0eURlc2NyaXB0b3JzKG9iamVjdCk7DQorDQorCQkJYWRkQmFzZV9BYnN0cmFjdGlvblByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QpOw0KKwkJfQ0KKwkJcmV0dXJuIGl0ZW1Qcm9wZXJ0eURlc2NyaXB0b3JzOw0KKwl9DQorDQorCS8qKg0KKwkgKiBUaGlzIGFkZHMgYSBwcm9wZXJ0eSBkZXNjcmlwdG9yIGZvciB0aGUgQmFzZSBBYnN0cmFjdGlvbiBmZWF0dXJlLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHJvdGVjdGVkIHZvaWQgYWRkQmFzZV9BYnN0cmFjdGlvblByb3BlcnR5RGVzY3JpcHRvcihPYmplY3Qgb2JqZWN0KSB7DQorCQlpdGVtUHJvcGVydHlEZXNjcmlwdG9ycy5hZGQNCisJCQkoY3JlYXRlSXRlbVByb3BlcnR5RGVzY3JpcHRvcg0KKwkJCQkoKChDb21wb3NlYWJsZUFkYXB0ZXJGYWN0b3J5KWFkYXB0ZXJGYWN0b3J5KS5nZXRSb290QWRhcHRlckZhY3RvcnkoKSwNCisJCQkJIGdldFJlc291cmNlTG9jYXRvcigpLA0KKwkJCQkgZ2V0U3RyaW5nKCJfVUlfUmVmaW5lX2Jhc2VfQWJzdHJhY3Rpb25fZmVhdHVyZSIpLCAvLyROT04tTkxTLTEkDQorCQkJCSBnZXRTdHJpbmcoIl9VSV9Qcm9wZXJ0eURlc2NyaXB0b3JfZGVzY3JpcHRpb24iLCAiX1VJX1JlZmluZV9iYXNlX0Fic3RyYWN0aW9uX2ZlYXR1cmUiLCAiX1VJX1JlZmluZV90eXBlIiksIC8vJE5PTi1OTFMtMSQgLy8kTk9OLU5MUy0yJCAvLyROT04tTkxTLTMkDQorCQkJCSBTdGFuZGFyZFBhY2thZ2UuTGl0ZXJhbHMuUkVGSU5FX19CQVNFX0FCU1RSQUNUSU9OLA0KKwkJCQkgdHJ1ZSwNCisJCQkJIGZhbHNlLA0KKwkJCQkgdHJ1ZSwNCisJCQkJIG51bGwsDQorCQkJCSBudWxsLA0KKwkJCQkgbnVsbCkpOw0KKwl9DQorDQorCS8qKg0KKwkgKiBUaGlzIHJldHVybnMgUmVmaW5lLmdpZi4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgT2JqZWN0IGdldEltYWdlKE9iamVjdCBvYmplY3QpIHsNCisJCXJldHVybiBvdmVybGF5SW1hZ2Uob2JqZWN0LCBnZXRSZXNvdXJjZUxvY2F0b3IoKS5nZXRJbWFnZSgiZnVsbC9vYmoxNi9SZWZpbmUiKSk7IC8vJE5PTi1OTFMtMSQNCisJfQ0KKw0KKwkvKioNCisJICogVGhpcyByZXR1cm5zIHRoZSBsYWJlbCB0ZXh0IGZvciB0aGUgYWRhcHRlZCBjbGFzcy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgU3RyaW5nIGdldFRleHQoT2JqZWN0IG9iamVjdCkgew0KKwkJcmV0dXJuIGdldFN0cmluZygiX1VJX1JlZmluZV90eXBlIik7IC8vJE5PTi1OTFMtMSQNCisJfQ0KKwkNCisNCisJLyoqDQorCSAqIFRoaXMgaGFuZGxlcyBtb2RlbCBub3RpZmljYXRpb25zIGJ5IGNhbGxpbmcge0BsaW5rICN1cGRhdGVDaGlsZHJlbn0gdG8gdXBkYXRlIGFueSBjYWNoZWQNCisJICogY2hpbGRyZW4gYW5kIGJ5IGNyZWF0aW5nIGEgdmlld2VyIG5vdGlmaWNhdGlvbiwgd2hpY2ggaXQgcGFzc2VzIHRvIHtAbGluayAjZmlyZU5vdGlmeUNoYW5nZWR9Lg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXB1YmxpYyB2b2lkIG5vdGlmeUNoYW5nZWQoTm90aWZpY2F0aW9uIG5vdGlmaWNhdGlvbikgew0KKwkJdXBkYXRlQ2hpbGRyZW4obm90aWZpY2F0aW9uKTsNCisJCXN1cGVyLm5vdGlmeUNoYW5nZWQobm90aWZpY2F0aW9uKTsNCisJfQ0KKw0KKwkvKioNCisJICogVGhpcyBhZGRzIHtAbGluayBvcmcuZWNsaXBzZS5lbWYuZWRpdC5jb21tYW5kLkNvbW1hbmRQYXJhbWV0ZXJ9cyBkZXNjcmliaW5nIHRoZSBjaGlsZHJlbg0KKwkgKiB0aGF0IGNhbiBiZSBjcmVhdGVkIHVuZGVyIHRoaXMgb2JqZWN0Lg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXByb3RlY3RlZCB2b2lkIGNvbGxlY3ROZXdDaGlsZERlc2NyaXB0b3JzKENvbGxlY3Rpb248T2JqZWN0PiBuZXdDaGlsZERlc2NyaXB0b3JzLCBPYmplY3Qgb2JqZWN0KSB7DQorCQlzdXBlci5jb2xsZWN0TmV3Q2hpbGREZXNjcmlwdG9ycyhuZXdDaGlsZERlc2NyaXB0b3JzLCBvYmplY3QpOw0KKwl9DQorDQorCS8qKg0KKwkgKiBSZXR1cm4gdGhlIHJlc291cmNlIGxvY2F0b3IgZm9yIHRoaXMgaXRlbSBwcm92aWRlcidzIHJlc291cmNlcy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgUmVzb3VyY2VMb2NhdG9yIGdldFJlc291cmNlTG9jYXRvcigpIHsNCisJCXJldHVybiBTeXNtbEVkaXRQbHVnaW4uSU5TVEFOQ0U7DQorCX0NCisNCit9DQpkaWZmIC0tZ2l0IGEvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZWRpdC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9yZXF1aXJlbWVudHMvcHJvdmlkZXIvUmVxdWlyZW1lbnRJdGVtUHJvdmlkZXIuamF2YSBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmVkaXQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvcmVxdWlyZW1lbnRzL3Byb3ZpZGVyL1JlcXVpcmVtZW50SXRlbVByb3ZpZGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzNkNDJmMAotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmVkaXQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvcmVxdWlyZW1lbnRzL3Byb3ZpZGVyL1JlcXVpcmVtZW50SXRlbVByb3ZpZGVyLmphdmEKQEAgLTAsMCArMSwzNjkgQEAKKy8qKg0KKyAqIENvcHlyaWdodCAoYykgMjAxNSBDRUEgTElTVC4NCisgKiANCisgKiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KKyAqICBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCisgKiAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCisgKiAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgKi8NCitwYWNrYWdlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5yZXF1aXJlbWVudHMucHJvdmlkZXI7DQorDQorDQoraW1wb3J0IGphdmEudXRpbC5Db2xsZWN0aW9uOw0KK2ltcG9ydCBqYXZhLnV0aWwuTGlzdDsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi5ub3RpZnkuQWRhcHRlckZhY3Rvcnk7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jb21tb24ubm90aWZ5Lk5vdGlmaWNhdGlvbjsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi51dGlsLlJlc291cmNlTG9jYXRvcjsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVkaXQucHJvdmlkZXIuQ29tcG9zZWFibGVBZGFwdGVyRmFjdG9yeTsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVkaXQucHJvdmlkZXIuSUVkaXRpbmdEb21haW5JdGVtUHJvdmlkZXI7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lZGl0LnByb3ZpZGVyLklJdGVtTGFiZWxQcm92aWRlcjsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVkaXQucHJvdmlkZXIuSUl0ZW1Qcm9wZXJ0eURlc2NyaXB0b3I7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lZGl0LnByb3ZpZGVyLklJdGVtUHJvcGVydHlTb3VyY2U7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lZGl0LnByb3ZpZGVyLklTdHJ1Y3R1cmVkSXRlbUNvbnRlbnRQcm92aWRlcjsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVkaXQucHJvdmlkZXIuSVRyZWVJdGVtQ29udGVudFByb3ZpZGVyOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWRpdC5wcm92aWRlci5JdGVtUHJvcGVydHlEZXNjcmlwdG9yOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWRpdC5wcm92aWRlci5JdGVtUHJvdmlkZXJBZGFwdGVyOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWRpdC5wcm92aWRlci5WaWV3ZXJOb3RpZmljYXRpb247DQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5wcm92aWRlci5TeXNtbEVkaXRQbHVnaW47DQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5yZXF1aXJlbWVudHMuUmVxdWlyZW1lbnQ7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5yZXF1aXJlbWVudHMuUmVxdWlyZW1lbnRzUGFja2FnZTsNCisNCisvKioNCisgKiBUaGlzIGlzIHRoZSBpdGVtIHByb3ZpZGVyIGFkYXB0ZXIgZm9yIGEge0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5yZXF1aXJlbWVudHMuUmVxdWlyZW1lbnR9IG9iamVjdC4NCisgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKyAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKyAqIEBnZW5lcmF0ZWQNCisgKi8NCitwdWJsaWMgY2xhc3MgUmVxdWlyZW1lbnRJdGVtUHJvdmlkZXIgDQorCWV4dGVuZHMgSXRlbVByb3ZpZGVyQWRhcHRlcg0KKwlpbXBsZW1lbnRzDQorCQlJRWRpdGluZ0RvbWFpbkl0ZW1Qcm92aWRlciwNCisJCUlTdHJ1Y3R1cmVkSXRlbUNvbnRlbnRQcm92aWRlciwNCisJCUlUcmVlSXRlbUNvbnRlbnRQcm92aWRlciwNCisJCUlJdGVtTGFiZWxQcm92aWRlciwNCisJCUlJdGVtUHJvcGVydHlTb3VyY2Ugew0KKwkvKioNCisJICogVGhpcyBjb25zdHJ1Y3RzIGFuIGluc3RhbmNlIGZyb20gYSBmYWN0b3J5IGFuZCBhIG5vdGlmaWVyLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIFJlcXVpcmVtZW50SXRlbVByb3ZpZGVyKEFkYXB0ZXJGYWN0b3J5IGFkYXB0ZXJGYWN0b3J5KSB7DQorCQlzdXBlcihhZGFwdGVyRmFjdG9yeSk7DQorCX0NCisNCisJLyoqDQorCSAqIFRoaXMgcmV0dXJucyB0aGUgcHJvcGVydHkgZGVzY3JpcHRvcnMgZm9yIHRoZSBhZGFwdGVkIGNsYXNzLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXB1YmxpYyBMaXN0PElJdGVtUHJvcGVydHlEZXNjcmlwdG9yPiBnZXRQcm9wZXJ0eURlc2NyaXB0b3JzKE9iamVjdCBvYmplY3QpIHsNCisJCWlmIChpdGVtUHJvcGVydHlEZXNjcmlwdG9ycyA9PSBudWxsKSB7DQorCQkJc3VwZXIuZ2V0UHJvcGVydHlEZXNjcmlwdG9ycyhvYmplY3QpOw0KKw0KKwkJCWFkZEJhc2VfQ2xhc3NQcm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0KTsNCisJCQlhZGRUZXh0UHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCk7DQorCQkJYWRkSWRQcm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0KTsNCisJCQlhZGREZXJpdmVkUHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCk7DQorCQkJYWRkRGVyaXZlZEZyb21Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0KTsNCisJCQlhZGRTYXRpc2ZpZWRCeVByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QpOw0KKwkJCWFkZFJlZmluZWRCeVByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QpOw0KKwkJCWFkZFRyYWNlZFRvUHJvcGVydHlEZXNjcmlwdG9yKG9iamVjdCk7DQorCQkJYWRkVmVyaWZpZWRCeVByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QpOw0KKwkJCWFkZE1hc3RlclByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QpOw0KKwkJfQ0KKwkJcmV0dXJuIGl0ZW1Qcm9wZXJ0eURlc2NyaXB0b3JzOw0KKwl9DQorDQorCS8qKg0KKwkgKiBUaGlzIGFkZHMgYSBwcm9wZXJ0eSBkZXNjcmlwdG9yIGZvciB0aGUgQmFzZSBDbGFzcyBmZWF0dXJlLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHJvdGVjdGVkIHZvaWQgYWRkQmFzZV9DbGFzc1Byb3BlcnR5RGVzY3JpcHRvcihPYmplY3Qgb2JqZWN0KSB7DQorCQlpdGVtUHJvcGVydHlEZXNjcmlwdG9ycy5hZGQNCisJCQkoY3JlYXRlSXRlbVByb3BlcnR5RGVzY3JpcHRvcg0KKwkJCQkoKChDb21wb3NlYWJsZUFkYXB0ZXJGYWN0b3J5KWFkYXB0ZXJGYWN0b3J5KS5nZXRSb290QWRhcHRlckZhY3RvcnkoKSwNCisJCQkJIGdldFJlc291cmNlTG9jYXRvcigpLA0KKwkJCQkgZ2V0U3RyaW5nKCJfVUlfUmVxdWlyZW1lbnRfYmFzZV9DbGFzc19mZWF0dXJlIiksIC8vJE5PTi1OTFMtMSQNCisJCQkJIGdldFN0cmluZygiX1VJX1Byb3BlcnR5RGVzY3JpcHRvcl9kZXNjcmlwdGlvbiIsICJfVUlfUmVxdWlyZW1lbnRfYmFzZV9DbGFzc19mZWF0dXJlIiwgIl9VSV9SZXF1aXJlbWVudF90eXBlIiksIC8vJE5PTi1OTFMtMSQgLy8kTk9OLU5MUy0yJCAvLyROT04tTkxTLTMkDQorCQkJCSBSZXF1aXJlbWVudHNQYWNrYWdlLkxpdGVyYWxzLlJFUVVJUkVNRU5UX19CQVNFX0NMQVNTLA0KKwkJCQkgdHJ1ZSwNCisJCQkJIGZhbHNlLA0KKwkJCQkgdHJ1ZSwNCisJCQkJIG51bGwsDQorCQkJCSBudWxsLA0KKwkJCQkgbnVsbCkpOw0KKwl9DQorDQorCS8qKg0KKwkgKiBUaGlzIGFkZHMgYSBwcm9wZXJ0eSBkZXNjcmlwdG9yIGZvciB0aGUgVGV4dCBmZWF0dXJlLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHJvdGVjdGVkIHZvaWQgYWRkVGV4dFByb3BlcnR5RGVzY3JpcHRvcihPYmplY3Qgb2JqZWN0KSB7DQorCQlpdGVtUHJvcGVydHlEZXNjcmlwdG9ycy5hZGQNCisJCQkoY3JlYXRlSXRlbVByb3BlcnR5RGVzY3JpcHRvcg0KKwkJCQkoKChDb21wb3NlYWJsZUFkYXB0ZXJGYWN0b3J5KWFkYXB0ZXJGYWN0b3J5KS5nZXRSb290QWRhcHRlckZhY3RvcnkoKSwNCisJCQkJIGdldFJlc291cmNlTG9jYXRvcigpLA0KKwkJCQkgZ2V0U3RyaW5nKCJfVUlfUmVxdWlyZW1lbnRfdGV4dF9mZWF0dXJlIiksIC8vJE5PTi1OTFMtMSQNCisJCQkJIGdldFN0cmluZygiX1VJX1Byb3BlcnR5RGVzY3JpcHRvcl9kZXNjcmlwdGlvbiIsICJfVUlfUmVxdWlyZW1lbnRfdGV4dF9mZWF0dXJlIiwgIl9VSV9SZXF1aXJlbWVudF90eXBlIiksIC8vJE5PTi1OTFMtMSQgLy8kTk9OLU5MUy0yJCAvLyROT04tTkxTLTMkDQorCQkJCSBSZXF1aXJlbWVudHNQYWNrYWdlLkxpdGVyYWxzLlJFUVVJUkVNRU5UX19URVhULA0KKwkJCQkgdHJ1ZSwNCisJCQkJIGZhbHNlLA0KKwkJCQkgZmFsc2UsDQorCQkJCSBJdGVtUHJvcGVydHlEZXNjcmlwdG9yLkdFTkVSSUNfVkFMVUVfSU1BR0UsDQorCQkJCSBudWxsLA0KKwkJCQkgbnVsbCkpOw0KKwl9DQorDQorCS8qKg0KKwkgKiBUaGlzIGFkZHMgYSBwcm9wZXJ0eSBkZXNjcmlwdG9yIGZvciB0aGUgSWQgZmVhdHVyZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXByb3RlY3RlZCB2b2lkIGFkZElkUHJvcGVydHlEZXNjcmlwdG9yKE9iamVjdCBvYmplY3QpIHsNCisJCWl0ZW1Qcm9wZXJ0eURlc2NyaXB0b3JzLmFkZA0KKwkJCShjcmVhdGVJdGVtUHJvcGVydHlEZXNjcmlwdG9yDQorCQkJCSgoKENvbXBvc2VhYmxlQWRhcHRlckZhY3RvcnkpYWRhcHRlckZhY3RvcnkpLmdldFJvb3RBZGFwdGVyRmFjdG9yeSgpLA0KKwkJCQkgZ2V0UmVzb3VyY2VMb2NhdG9yKCksDQorCQkJCSBnZXRTdHJpbmcoIl9VSV9SZXF1aXJlbWVudF9pZF9mZWF0dXJlIiksIC8vJE5PTi1OTFMtMSQNCisJCQkJIGdldFN0cmluZygiX1VJX1Byb3BlcnR5RGVzY3JpcHRvcl9kZXNjcmlwdGlvbiIsICJfVUlfUmVxdWlyZW1lbnRfaWRfZmVhdHVyZSIsICJfVUlfUmVxdWlyZW1lbnRfdHlwZSIpLCAvLyROT04tTkxTLTEkIC8vJE5PTi1OTFMtMiQgLy8kTk9OLU5MUy0zJA0KKwkJCQkgUmVxdWlyZW1lbnRzUGFja2FnZS5MaXRlcmFscy5SRVFVSVJFTUVOVF9fSUQsDQorCQkJCSB0cnVlLA0KKwkJCQkgZmFsc2UsDQorCQkJCSBmYWxzZSwNCisJCQkJIEl0ZW1Qcm9wZXJ0eURlc2NyaXB0b3IuR0VORVJJQ19WQUxVRV9JTUFHRSwNCisJCQkJIG51bGwsDQorCQkJCSBudWxsKSk7DQorCX0NCisNCisJLyoqDQorCSAqIFRoaXMgYWRkcyBhIHByb3BlcnR5IGRlc2NyaXB0b3IgZm9yIHRoZSBEZXJpdmVkIGZlYXR1cmUuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwcm90ZWN0ZWQgdm9pZCBhZGREZXJpdmVkUHJvcGVydHlEZXNjcmlwdG9yKE9iamVjdCBvYmplY3QpIHsNCisJCWl0ZW1Qcm9wZXJ0eURlc2NyaXB0b3JzLmFkZA0KKwkJCShjcmVhdGVJdGVtUHJvcGVydHlEZXNjcmlwdG9yDQorCQkJCSgoKENvbXBvc2VhYmxlQWRhcHRlckZhY3RvcnkpYWRhcHRlckZhY3RvcnkpLmdldFJvb3RBZGFwdGVyRmFjdG9yeSgpLA0KKwkJCQkgZ2V0UmVzb3VyY2VMb2NhdG9yKCksDQorCQkJCSBnZXRTdHJpbmcoIl9VSV9SZXF1aXJlbWVudF9kZXJpdmVkX2ZlYXR1cmUiKSwgLy8kTk9OLU5MUy0xJA0KKwkJCQkgZ2V0U3RyaW5nKCJfVUlfUHJvcGVydHlEZXNjcmlwdG9yX2Rlc2NyaXB0aW9uIiwgIl9VSV9SZXF1aXJlbWVudF9kZXJpdmVkX2ZlYXR1cmUiLCAiX1VJX1JlcXVpcmVtZW50X3R5cGUiKSwgLy8kTk9OLU5MUy0xJCAvLyROT04tTkxTLTIkIC8vJE5PTi1OTFMtMyQNCisJCQkJIFJlcXVpcmVtZW50c1BhY2thZ2UuTGl0ZXJhbHMuUkVRVUlSRU1FTlRfX0RFUklWRUQsDQorCQkJCSB0cnVlLA0KKwkJCQkgZmFsc2UsDQorCQkJCSB0cnVlLA0KKwkJCQkgbnVsbCwNCisJCQkJIG51bGwsDQorCQkJCSBudWxsKSk7DQorCX0NCisNCisJLyoqDQorCSAqIFRoaXMgYWRkcyBhIHByb3BlcnR5IGRlc2NyaXB0b3IgZm9yIHRoZSBEZXJpdmVkIEZyb20gZmVhdHVyZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXByb3RlY3RlZCB2b2lkIGFkZERlcml2ZWRGcm9tUHJvcGVydHlEZXNjcmlwdG9yKE9iamVjdCBvYmplY3QpIHsNCisJCWl0ZW1Qcm9wZXJ0eURlc2NyaXB0b3JzLmFkZA0KKwkJCShjcmVhdGVJdGVtUHJvcGVydHlEZXNjcmlwdG9yDQorCQkJCSgoKENvbXBvc2VhYmxlQWRhcHRlckZhY3RvcnkpYWRhcHRlckZhY3RvcnkpLmdldFJvb3RBZGFwdGVyRmFjdG9yeSgpLA0KKwkJCQkgZ2V0UmVzb3VyY2VMb2NhdG9yKCksDQorCQkJCSBnZXRTdHJpbmcoIl9VSV9SZXF1aXJlbWVudF9kZXJpdmVkRnJvbV9mZWF0dXJlIiksIC8vJE5PTi1OTFMtMSQNCisJCQkJIGdldFN0cmluZygiX1VJX1Byb3BlcnR5RGVzY3JpcHRvcl9kZXNjcmlwdGlvbiIsICJfVUlfUmVxdWlyZW1lbnRfZGVyaXZlZEZyb21fZmVhdHVyZSIsICJfVUlfUmVxdWlyZW1lbnRfdHlwZSIpLCAvLyROT04tTkxTLTEkIC8vJE5PTi1OTFMtMiQgLy8kTk9OLU5MUy0zJA0KKwkJCQkgUmVxdWlyZW1lbnRzUGFja2FnZS5MaXRlcmFscy5SRVFVSVJFTUVOVF9fREVSSVZFRF9GUk9NLA0KKwkJCQkgdHJ1ZSwNCisJCQkJIGZhbHNlLA0KKwkJCQkgdHJ1ZSwNCisJCQkJIG51bGwsDQorCQkJCSBudWxsLA0KKwkJCQkgbnVsbCkpOw0KKwl9DQorDQorCS8qKg0KKwkgKiBUaGlzIGFkZHMgYSBwcm9wZXJ0eSBkZXNjcmlwdG9yIGZvciB0aGUgU2F0aXNmaWVkIEJ5IGZlYXR1cmUuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwcm90ZWN0ZWQgdm9pZCBhZGRTYXRpc2ZpZWRCeVByb3BlcnR5RGVzY3JpcHRvcihPYmplY3Qgb2JqZWN0KSB7DQorCQlpdGVtUHJvcGVydHlEZXNjcmlwdG9ycy5hZGQNCisJCQkoY3JlYXRlSXRlbVByb3BlcnR5RGVzY3JpcHRvcg0KKwkJCQkoKChDb21wb3NlYWJsZUFkYXB0ZXJGYWN0b3J5KWFkYXB0ZXJGYWN0b3J5KS5nZXRSb290QWRhcHRlckZhY3RvcnkoKSwNCisJCQkJIGdldFJlc291cmNlTG9jYXRvcigpLA0KKwkJCQkgZ2V0U3RyaW5nKCJfVUlfUmVxdWlyZW1lbnRfc2F0aXNmaWVkQnlfZmVhdHVyZSIpLCAvLyROT04tTkxTLTEkDQorCQkJCSBnZXRTdHJpbmcoIl9VSV9Qcm9wZXJ0eURlc2NyaXB0b3JfZGVzY3JpcHRpb24iLCAiX1VJX1JlcXVpcmVtZW50X3NhdGlzZmllZEJ5X2ZlYXR1cmUiLCAiX1VJX1JlcXVpcmVtZW50X3R5cGUiKSwgLy8kTk9OLU5MUy0xJCAvLyROT04tTkxTLTIkIC8vJE5PTi1OTFMtMyQNCisJCQkJIFJlcXVpcmVtZW50c1BhY2thZ2UuTGl0ZXJhbHMuUkVRVUlSRU1FTlRfX1NBVElTRklFRF9CWSwNCisJCQkJIHRydWUsDQorCQkJCSBmYWxzZSwNCisJCQkJIHRydWUsDQorCQkJCSBudWxsLA0KKwkJCQkgbnVsbCwNCisJCQkJIG51bGwpKTsNCisJfQ0KKw0KKwkvKioNCisJICogVGhpcyBhZGRzIGEgcHJvcGVydHkgZGVzY3JpcHRvciBmb3IgdGhlIFJlZmluZWQgQnkgZmVhdHVyZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXByb3RlY3RlZCB2b2lkIGFkZFJlZmluZWRCeVByb3BlcnR5RGVzY3JpcHRvcihPYmplY3Qgb2JqZWN0KSB7DQorCQlpdGVtUHJvcGVydHlEZXNjcmlwdG9ycy5hZGQNCisJCQkoY3JlYXRlSXRlbVByb3BlcnR5RGVzY3JpcHRvcg0KKwkJCQkoKChDb21wb3NlYWJsZUFkYXB0ZXJGYWN0b3J5KWFkYXB0ZXJGYWN0b3J5KS5nZXRSb290QWRhcHRlckZhY3RvcnkoKSwNCisJCQkJIGdldFJlc291cmNlTG9jYXRvcigpLA0KKwkJCQkgZ2V0U3RyaW5nKCJfVUlfUmVxdWlyZW1lbnRfcmVmaW5lZEJ5X2ZlYXR1cmUiKSwgLy8kTk9OLU5MUy0xJA0KKwkJCQkgZ2V0U3RyaW5nKCJfVUlfUHJvcGVydHlEZXNjcmlwdG9yX2Rlc2NyaXB0aW9uIiwgIl9VSV9SZXF1aXJlbWVudF9yZWZpbmVkQnlfZmVhdHVyZSIsICJfVUlfUmVxdWlyZW1lbnRfdHlwZSIpLCAvLyROT04tTkxTLTEkIC8vJE5PTi1OTFMtMiQgLy8kTk9OLU5MUy0zJA0KKwkJCQkgUmVxdWlyZW1lbnRzUGFja2FnZS5MaXRlcmFscy5SRVFVSVJFTUVOVF9fUkVGSU5FRF9CWSwNCisJCQkJIHRydWUsDQorCQkJCSBmYWxzZSwNCisJCQkJIHRydWUsDQorCQkJCSBudWxsLA0KKwkJCQkgbnVsbCwNCisJCQkJIG51bGwpKTsNCisJfQ0KKw0KKwkvKioNCisJICogVGhpcyBhZGRzIGEgcHJvcGVydHkgZGVzY3JpcHRvciBmb3IgdGhlIFRyYWNlZCBUbyBmZWF0dXJlLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHJvdGVjdGVkIHZvaWQgYWRkVHJhY2VkVG9Qcm9wZXJ0eURlc2NyaXB0b3IoT2JqZWN0IG9iamVjdCkgew0KKwkJaXRlbVByb3BlcnR5RGVzY3JpcHRvcnMuYWRkDQorCQkJKGNyZWF0ZUl0ZW1Qcm9wZXJ0eURlc2NyaXB0b3INCisJCQkJKCgoQ29tcG9zZWFibGVBZGFwdGVyRmFjdG9yeSlhZGFwdGVyRmFjdG9yeSkuZ2V0Um9vdEFkYXB0ZXJGYWN0b3J5KCksDQorCQkJCSBnZXRSZXNvdXJjZUxvY2F0b3IoKSwNCisJCQkJIGdldFN0cmluZygiX1VJX1JlcXVpcmVtZW50X3RyYWNlZFRvX2ZlYXR1cmUiKSwgLy8kTk9OLU5MUy0xJA0KKwkJCQkgZ2V0U3RyaW5nKCJfVUlfUHJvcGVydHlEZXNjcmlwdG9yX2Rlc2NyaXB0aW9uIiwgIl9VSV9SZXF1aXJlbWVudF90cmFjZWRUb19mZWF0dXJlIiwgIl9VSV9SZXF1aXJlbWVudF90eXBlIiksIC8vJE5PTi1OTFMtMSQgLy8kTk9OLU5MUy0yJCAvLyROT04tTkxTLTMkDQorCQkJCSBSZXF1aXJlbWVudHNQYWNrYWdlLkxpdGVyYWxzLlJFUVVJUkVNRU5UX19UUkFDRURfVE8sDQorCQkJCSB0cnVlLA0KKwkJCQkgZmFsc2UsDQorCQkJCSB0cnVlLA0KKwkJCQkgbnVsbCwNCisJCQkJIG51bGwsDQorCQkJCSBudWxsKSk7DQorCX0NCisNCisJLyoqDQorCSAqIFRoaXMgYWRkcyBhIHByb3BlcnR5IGRlc2NyaXB0b3IgZm9yIHRoZSBWZXJpZmllZCBCeSBmZWF0dXJlLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHJvdGVjdGVkIHZvaWQgYWRkVmVyaWZpZWRCeVByb3BlcnR5RGVzY3JpcHRvcihPYmplY3Qgb2JqZWN0KSB7DQorCQlpdGVtUHJvcGVydHlEZXNjcmlwdG9ycy5hZGQNCisJCQkoY3JlYXRlSXRlbVByb3BlcnR5RGVzY3JpcHRvcg0KKwkJCQkoKChDb21wb3NlYWJsZUFkYXB0ZXJGYWN0b3J5KWFkYXB0ZXJGYWN0b3J5KS5nZXRSb290QWRhcHRlckZhY3RvcnkoKSwNCisJCQkJIGdldFJlc291cmNlTG9jYXRvcigpLA0KKwkJCQkgZ2V0U3RyaW5nKCJfVUlfUmVxdWlyZW1lbnRfdmVyaWZpZWRCeV9mZWF0dXJlIiksIC8vJE5PTi1OTFMtMSQNCisJCQkJIGdldFN0cmluZygiX1VJX1Byb3BlcnR5RGVzY3JpcHRvcl9kZXNjcmlwdGlvbiIsICJfVUlfUmVxdWlyZW1lbnRfdmVyaWZpZWRCeV9mZWF0dXJlIiwgIl9VSV9SZXF1aXJlbWVudF90eXBlIiksIC8vJE5PTi1OTFMtMSQgLy8kTk9OLU5MUy0yJCAvLyROT04tTkxTLTMkDQorCQkJCSBSZXF1aXJlbWVudHNQYWNrYWdlLkxpdGVyYWxzLlJFUVVJUkVNRU5UX19WRVJJRklFRF9CWSwNCisJCQkJIHRydWUsDQorCQkJCSBmYWxzZSwNCisJCQkJIHRydWUsDQorCQkJCSBudWxsLA0KKwkJCQkgbnVsbCwNCisJCQkJIG51bGwpKTsNCisJfQ0KKw0KKwkvKioNCisJICogVGhpcyBhZGRzIGEgcHJvcGVydHkgZGVzY3JpcHRvciBmb3IgdGhlIE1hc3RlciBmZWF0dXJlLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHJvdGVjdGVkIHZvaWQgYWRkTWFzdGVyUHJvcGVydHlEZXNjcmlwdG9yKE9iamVjdCBvYmplY3QpIHsNCisJCWl0ZW1Qcm9wZXJ0eURlc2NyaXB0b3JzLmFkZA0KKwkJCShjcmVhdGVJdGVtUHJvcGVydHlEZXNjcmlwdG9yDQorCQkJCSgoKENvbXBvc2VhYmxlQWRhcHRlckZhY3RvcnkpYWRhcHRlckZhY3RvcnkpLmdldFJvb3RBZGFwdGVyRmFjdG9yeSgpLA0KKwkJCQkgZ2V0UmVzb3VyY2VMb2NhdG9yKCksDQorCQkJCSBnZXRTdHJpbmcoIl9VSV9SZXF1aXJlbWVudF9tYXN0ZXJfZmVhdHVyZSIpLCAvLyROT04tTkxTLTEkDQorCQkJCSBnZXRTdHJpbmcoIl9VSV9Qcm9wZXJ0eURlc2NyaXB0b3JfZGVzY3JpcHRpb24iLCAiX1VJX1JlcXVpcmVtZW50X21hc3Rlcl9mZWF0dXJlIiwgIl9VSV9SZXF1aXJlbWVudF90eXBlIiksIC8vJE5PTi1OTFMtMSQgLy8kTk9OLU5MUy0yJCAvLyROT04tTkxTLTMkDQorCQkJCSBSZXF1aXJlbWVudHNQYWNrYWdlLkxpdGVyYWxzLlJFUVVJUkVNRU5UX19NQVNURVIsDQorCQkJCSB0cnVlLA0KKwkJCQkgZmFsc2UsDQorCQkJCSB0cnVlLA0KKwkJCQkgbnVsbCwNCisJCQkJIG51bGwsDQorCQkJCSBudWxsKSk7DQorCX0NCisNCisJLyoqDQorCSAqIFRoaXMgcmV0dXJucyBSZXF1aXJlbWVudC5naWYuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIE9iamVjdCBnZXRJbWFnZShPYmplY3Qgb2JqZWN0KSB7DQorCQlyZXR1cm4gb3ZlcmxheUltYWdlKG9iamVjdCwgZ2V0UmVzb3VyY2VMb2NhdG9yKCkuZ2V0SW1hZ2UoImZ1bGwvb2JqMTYvUmVxdWlyZW1lbnQiKSk7IC8vJE5PTi1OTFMtMSQNCisJfQ0KKw0KKwkvKioNCisJICogVGhpcyByZXR1cm5zIHRoZSBsYWJlbCB0ZXh0IGZvciB0aGUgYWRhcHRlZCBjbGFzcy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgU3RyaW5nIGdldFRleHQoT2JqZWN0IG9iamVjdCkgew0KKwkJU3RyaW5nIGxhYmVsID0gKChSZXF1aXJlbWVudClvYmplY3QpLmdldElkKCk7DQorCQlyZXR1cm4gbGFiZWwgPT0gbnVsbCB8fCBsYWJlbC5sZW5ndGgoKSA9PSAwID8NCisJCQlnZXRTdHJpbmcoIl9VSV9SZXF1aXJlbWVudF90eXBlIikgOiAvLyROT04tTkxTLTEkDQorCQkJZ2V0U3RyaW5nKCJfVUlfUmVxdWlyZW1lbnRfdHlwZSIpICsgIiAiICsgbGFiZWw7IC8vJE5PTi1OTFMtMSQgLy8kTk9OLU5MUy0yJA0KKwl9DQorCQ0KKw0KKwkvKioNCisJICogVGhpcyBoYW5kbGVzIG1vZGVsIG5vdGlmaWNhdGlvbnMgYnkgY2FsbGluZyB7QGxpbmsgI3VwZGF0ZUNoaWxkcmVufSB0byB1cGRhdGUgYW55IGNhY2hlZA0KKwkgKiBjaGlsZHJlbiBhbmQgYnkgY3JlYXRpbmcgYSB2aWV3ZXIgbm90aWZpY2F0aW9uLCB3aGljaCBpdCBwYXNzZXMgdG8ge0BsaW5rICNmaXJlTm90aWZ5Q2hhbmdlZH0uDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIHZvaWQgbm90aWZ5Q2hhbmdlZChOb3RpZmljYXRpb24gbm90aWZpY2F0aW9uKSB7DQorCQl1cGRhdGVDaGlsZHJlbihub3RpZmljYXRpb24pOw0KKw0KKwkJc3dpdGNoIChub3RpZmljYXRpb24uZ2V0RmVhdHVyZUlEKFJlcXVpcmVtZW50LmNsYXNzKSkgew0KKwkJCWNhc2UgUmVxdWlyZW1lbnRzUGFja2FnZS5SRVFVSVJFTUVOVF9fVEVYVDoNCisJCQljYXNlIFJlcXVpcmVtZW50c1BhY2thZ2UuUkVRVUlSRU1FTlRfX0lEOg0KKwkJCQlmaXJlTm90aWZ5Q2hhbmdlZChuZXcgVmlld2VyTm90aWZpY2F0aW9uKG5vdGlmaWNhdGlvbiwgbm90aWZpY2F0aW9uLmdldE5vdGlmaWVyKCksIGZhbHNlLCB0cnVlKSk7DQorCQkJCXJldHVybjsNCisJCX0NCisJCXN1cGVyLm5vdGlmeUNoYW5nZWQobm90aWZpY2F0aW9uKTsNCisJfQ0KKw0KKwkvKioNCisJICogVGhpcyBhZGRzIHtAbGluayBvcmcuZWNsaXBzZS5lbWYuZWRpdC5jb21tYW5kLkNvbW1hbmRQYXJhbWV0ZXJ9cyBkZXNjcmliaW5nIHRoZSBjaGlsZHJlbg0KKwkgKiB0aGF0IGNhbiBiZSBjcmVhdGVkIHVuZGVyIHRoaXMgb2JqZWN0Lg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXByb3RlY3RlZCB2b2lkIGNvbGxlY3ROZXdDaGlsZERlc2NyaXB0b3JzKENvbGxlY3Rpb248T2JqZWN0PiBuZXdDaGlsZERlc2NyaXB0b3JzLCBPYmplY3Qgb2JqZWN0KSB7DQorCQlzdXBlci5jb2xsZWN0TmV3Q2hpbGREZXNjcmlwdG9ycyhuZXdDaGlsZERlc2NyaXB0b3JzLCBvYmplY3QpOw0KKwl9DQorDQorCS8qKg0KKwkgKiBSZXR1cm4gdGhlIHJlc291cmNlIGxvY2F0b3IgZm9yIHRoaXMgaXRlbSBwcm92aWRlcidzIHJlc291cmNlcy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgUmVzb3VyY2VMb2NhdG9yIGdldFJlc291cmNlTG9jYXRvcigpIHsNCisJCXJldHVybiBTeXNtbEVkaXRQbHVnaW4uSU5TVEFOQ0U7DQorCX0NCisNCit9DQpkaWZmIC0tZ2l0IGEvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZWRpdC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9yZXF1aXJlbWVudHMvcHJvdmlkZXIvUmVxdWlyZW1lbnRzSXRlbVByb3ZpZGVyQWRhcHRlckZhY3RvcnkuamF2YSBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmVkaXQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvcmVxdWlyZW1lbnRzL3Byb3ZpZGVyL1JlcXVpcmVtZW50c0l0ZW1Qcm92aWRlckFkYXB0ZXJGYWN0b3J5LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGYyNGJiNwotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmVkaXQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvcmVxdWlyZW1lbnRzL3Byb3ZpZGVyL1JlcXVpcmVtZW50c0l0ZW1Qcm92aWRlckFkYXB0ZXJGYWN0b3J5LmphdmEKQEAgLTAsMCArMSwzNzMgQEAKKy8qKg0KKyAqIENvcHlyaWdodCAoYykgMjAxNSBDRUEgTElTVC4NCisgKiANCisgKiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KKyAqICBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCisgKiAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCisgKiAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgKi8NCitwYWNrYWdlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5yZXF1aXJlbWVudHMucHJvdmlkZXI7DQorDQoraW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7DQoraW1wb3J0IGphdmEudXRpbC5Db2xsZWN0aW9uOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY29tbW9uLm5vdGlmeS5BZGFwdGVyOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY29tbW9uLm5vdGlmeS5Ob3RpZmljYXRpb247DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jb21tb24ubm90aWZ5Lk5vdGlmaWVyOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWRpdC5wcm92aWRlci5DaGFuZ2VOb3RpZmllcjsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVkaXQucHJvdmlkZXIuQ29tcG9zZWFibGVBZGFwdGVyRmFjdG9yeTsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVkaXQucHJvdmlkZXIuQ29tcG9zZWRBZGFwdGVyRmFjdG9yeTsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVkaXQucHJvdmlkZXIuSUNoYW5nZU5vdGlmaWVyOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWRpdC5wcm92aWRlci5JRGlzcG9zYWJsZTsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVkaXQucHJvdmlkZXIuSUVkaXRpbmdEb21haW5JdGVtUHJvdmlkZXI7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lZGl0LnByb3ZpZGVyLklJdGVtTGFiZWxQcm92aWRlcjsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVkaXQucHJvdmlkZXIuSUl0ZW1Qcm9wZXJ0eVNvdXJjZTsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVkaXQucHJvdmlkZXIuSU5vdGlmeUNoYW5nZWRMaXN0ZW5lcjsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVkaXQucHJvdmlkZXIuSVN0cnVjdHVyZWRJdGVtQ29udGVudFByb3ZpZGVyOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWRpdC5wcm92aWRlci5JVHJlZUl0ZW1Db250ZW50UHJvdmlkZXI7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5yZXF1aXJlbWVudHMudXRpbC5SZXF1aXJlbWVudHNBZGFwdGVyRmFjdG9yeTsNCisNCisvKioNCisgKiBUaGlzIGlzIHRoZSBmYWN0b3J5IHRoYXQgaXMgdXNlZCB0byBwcm92aWRlIHRoZSBpbnRlcmZhY2VzIG5lZWRlZCB0byBzdXBwb3J0IFZpZXdlcnMuDQorICogVGhlIGFkYXB0ZXJzIGdlbmVyYXRlZCBieSB0aGlzIGZhY3RvcnkgY29udmVydCBFTUYgYWRhcHRlciBub3RpZmljYXRpb25zIGludG8gY2FsbHMgdG8ge0BsaW5rICNmaXJlTm90aWZ5Q2hhbmdlZCBmaXJlTm90aWZ5Q2hhbmdlZH0uDQorICogVGhlIGFkYXB0ZXJzIGFsc28gc3VwcG9ydCBFY2xpcHNlIHByb3BlcnR5IHNoZWV0cy4NCisgKiBOb3RlIHRoYXQgbW9zdCBvZiB0aGUgYWRhcHRlcnMgYXJlIHNoYXJlZCBhbW9uZyBtdWx0aXBsZSBpbnN0YW5jZXMuDQorICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisgKiBAZ2VuZXJhdGVkDQorICovDQorcHVibGljIGNsYXNzIFJlcXVpcmVtZW50c0l0ZW1Qcm92aWRlckFkYXB0ZXJGYWN0b3J5IGV4dGVuZHMgUmVxdWlyZW1lbnRzQWRhcHRlckZhY3RvcnkgaW1wbGVtZW50cyBDb21wb3NlYWJsZUFkYXB0ZXJGYWN0b3J5LCBJQ2hhbmdlTm90aWZpZXIsIElEaXNwb3NhYmxlIHsNCisJLyoqDQorCSAqIFRoaXMga2VlcHMgdHJhY2sgb2YgdGhlIHJvb3QgYWRhcHRlciBmYWN0b3J5IHRoYXQgZGVsZWdhdGVzIHRvIHRoaXMgYWRhcHRlciBmYWN0b3J5Lg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHJvdGVjdGVkIENvbXBvc2VkQWRhcHRlckZhY3RvcnkgcGFyZW50QWRhcHRlckZhY3Rvcnk7DQorDQorCS8qKg0KKwkgKiBUaGlzIGlzIHVzZWQgdG8gaW1wbGVtZW50IHtAbGluayBvcmcuZWNsaXBzZS5lbWYuZWRpdC5wcm92aWRlci5JQ2hhbmdlTm90aWZpZXJ9Lg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHJvdGVjdGVkIElDaGFuZ2VOb3RpZmllciBjaGFuZ2VOb3RpZmllciA9IG5ldyBDaGFuZ2VOb3RpZmllcigpOw0KKw0KKwkvKioNCisJICogVGhpcyBrZWVwcyB0cmFjayBvZiBhbGwgdGhlIHN1cHBvcnRlZCB0eXBlcyBjaGVja2VkIGJ5IHtAbGluayAjaXNGYWN0b3J5Rm9yVHlwZSBpc0ZhY3RvcnlGb3JUeXBlfS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXByb3RlY3RlZCBDb2xsZWN0aW9uPE9iamVjdD4gc3VwcG9ydGVkVHlwZXMgPSBuZXcgQXJyYXlMaXN0PE9iamVjdD4oKTsNCisNCisJLyoqDQorCSAqIFRoaXMgY29uc3RydWN0cyBhbiBpbnN0YW5jZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBSZXF1aXJlbWVudHNJdGVtUHJvdmlkZXJBZGFwdGVyRmFjdG9yeSgpIHsNCisJCXN1cHBvcnRlZFR5cGVzLmFkZChJRWRpdGluZ0RvbWFpbkl0ZW1Qcm92aWRlci5jbGFzcyk7DQorCQlzdXBwb3J0ZWRUeXBlcy5hZGQoSVN0cnVjdHVyZWRJdGVtQ29udGVudFByb3ZpZGVyLmNsYXNzKTsNCisJCXN1cHBvcnRlZFR5cGVzLmFkZChJVHJlZUl0ZW1Db250ZW50UHJvdmlkZXIuY2xhc3MpOw0KKwkJc3VwcG9ydGVkVHlwZXMuYWRkKElJdGVtTGFiZWxQcm92aWRlci5jbGFzcyk7DQorCQlzdXBwb3J0ZWRUeXBlcy5hZGQoSUl0ZW1Qcm9wZXJ0eVNvdXJjZS5jbGFzcyk7DQorCX0NCisNCisJLyoqDQorCSAqIFRoaXMga2VlcHMgdHJhY2sgb2YgdGhlIG9uZSBhZGFwdGVyIHVzZWQgZm9yIGFsbCB7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnJlcXVpcmVtZW50cy5EZXJpdmVSZXF0fSBpbnN0YW5jZXMuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwcm90ZWN0ZWQgRGVyaXZlUmVxdEl0ZW1Qcm92aWRlciBkZXJpdmVSZXF0SXRlbVByb3ZpZGVyOw0KKw0KKwkvKioNCisJICogVGhpcyBjcmVhdGVzIGFuIGFkYXB0ZXIgZm9yIGEge0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5yZXF1aXJlbWVudHMuRGVyaXZlUmVxdH0uDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIEFkYXB0ZXIgY3JlYXRlRGVyaXZlUmVxdEFkYXB0ZXIoKSB7DQorCQlpZiAoZGVyaXZlUmVxdEl0ZW1Qcm92aWRlciA9PSBudWxsKSB7DQorCQkJZGVyaXZlUmVxdEl0ZW1Qcm92aWRlciA9IG5ldyBEZXJpdmVSZXF0SXRlbVByb3ZpZGVyKHRoaXMpOw0KKwkJfQ0KKw0KKwkJcmV0dXJuIGRlcml2ZVJlcXRJdGVtUHJvdmlkZXI7DQorCX0NCisNCisJLyoqDQorCSAqIFRoaXMga2VlcHMgdHJhY2sgb2YgdGhlIG9uZSBhZGFwdGVyIHVzZWQgZm9yIGFsbCB7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnJlcXVpcmVtZW50cy5UcmFjZX0gaW5zdGFuY2VzLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHJvdGVjdGVkIFRyYWNlSXRlbVByb3ZpZGVyIHRyYWNlSXRlbVByb3ZpZGVyOw0KKw0KKwkvKioNCisJICogVGhpcyBjcmVhdGVzIGFuIGFkYXB0ZXIgZm9yIGEge0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5yZXF1aXJlbWVudHMuVHJhY2V9Lg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXB1YmxpYyBBZGFwdGVyIGNyZWF0ZVRyYWNlQWRhcHRlcigpIHsNCisJCWlmICh0cmFjZUl0ZW1Qcm92aWRlciA9PSBudWxsKSB7DQorCQkJdHJhY2VJdGVtUHJvdmlkZXIgPSBuZXcgVHJhY2VJdGVtUHJvdmlkZXIodGhpcyk7DQorCQl9DQorDQorCQlyZXR1cm4gdHJhY2VJdGVtUHJvdmlkZXI7DQorCX0NCisNCisJLyoqDQorCSAqIFRoaXMga2VlcHMgdHJhY2sgb2YgdGhlIG9uZSBhZGFwdGVyIHVzZWQgZm9yIGFsbCB7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnJlcXVpcmVtZW50cy5SZXF1aXJlbWVudH0gaW5zdGFuY2VzLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHJvdGVjdGVkIFJlcXVpcmVtZW50SXRlbVByb3ZpZGVyIHJlcXVpcmVtZW50SXRlbVByb3ZpZGVyOw0KKw0KKwkvKioNCisJICogVGhpcyBjcmVhdGVzIGFuIGFkYXB0ZXIgZm9yIGEge0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5yZXF1aXJlbWVudHMuUmVxdWlyZW1lbnR9Lg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXB1YmxpYyBBZGFwdGVyIGNyZWF0ZVJlcXVpcmVtZW50QWRhcHRlcigpIHsNCisJCWlmIChyZXF1aXJlbWVudEl0ZW1Qcm92aWRlciA9PSBudWxsKSB7DQorCQkJcmVxdWlyZW1lbnRJdGVtUHJvdmlkZXIgPSBuZXcgUmVxdWlyZW1lbnRJdGVtUHJvdmlkZXIodGhpcyk7DQorCQl9DQorDQorCQlyZXR1cm4gcmVxdWlyZW1lbnRJdGVtUHJvdmlkZXI7DQorCX0NCisNCisJLyoqDQorCSAqIFRoaXMga2VlcHMgdHJhY2sgb2YgdGhlIG9uZSBhZGFwdGVyIHVzZWQgZm9yIGFsbCB7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnJlcXVpcmVtZW50cy5Db3B5fSBpbnN0YW5jZXMuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwcm90ZWN0ZWQgQ29weUl0ZW1Qcm92aWRlciBjb3B5SXRlbVByb3ZpZGVyOw0KKw0KKwkvKioNCisJICogVGhpcyBjcmVhdGVzIGFuIGFkYXB0ZXIgZm9yIGEge0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5yZXF1aXJlbWVudHMuQ29weX0uDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIEFkYXB0ZXIgY3JlYXRlQ29weUFkYXB0ZXIoKSB7DQorCQlpZiAoY29weUl0ZW1Qcm92aWRlciA9PSBudWxsKSB7DQorCQkJY29weUl0ZW1Qcm92aWRlciA9IG5ldyBDb3B5SXRlbVByb3ZpZGVyKHRoaXMpOw0KKwkJfQ0KKw0KKwkJcmV0dXJuIGNvcHlJdGVtUHJvdmlkZXI7DQorCX0NCisNCisJLyoqDQorCSAqIFRoaXMga2VlcHMgdHJhY2sgb2YgdGhlIG9uZSBhZGFwdGVyIHVzZWQgZm9yIGFsbCB7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnJlcXVpcmVtZW50cy5TYXRpc2Z5fSBpbnN0YW5jZXMuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwcm90ZWN0ZWQgU2F0aXNmeUl0ZW1Qcm92aWRlciBzYXRpc2Z5SXRlbVByb3ZpZGVyOw0KKw0KKwkvKioNCisJICogVGhpcyBjcmVhdGVzIGFuIGFkYXB0ZXIgZm9yIGEge0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5yZXF1aXJlbWVudHMuU2F0aXNmeX0uDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIEFkYXB0ZXIgY3JlYXRlU2F0aXNmeUFkYXB0ZXIoKSB7DQorCQlpZiAoc2F0aXNmeUl0ZW1Qcm92aWRlciA9PSBudWxsKSB7DQorCQkJc2F0aXNmeUl0ZW1Qcm92aWRlciA9IG5ldyBTYXRpc2Z5SXRlbVByb3ZpZGVyKHRoaXMpOw0KKwkJfQ0KKw0KKwkJcmV0dXJuIHNhdGlzZnlJdGVtUHJvdmlkZXI7DQorCX0NCisNCisJLyoqDQorCSAqIFRoaXMga2VlcHMgdHJhY2sgb2YgdGhlIG9uZSBhZGFwdGVyIHVzZWQgZm9yIGFsbCB7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnJlcXVpcmVtZW50cy5UZXN0Q2FzZX0gaW5zdGFuY2VzLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHJvdGVjdGVkIFRlc3RDYXNlSXRlbVByb3ZpZGVyIHRlc3RDYXNlSXRlbVByb3ZpZGVyOw0KKw0KKwkvKioNCisJICogVGhpcyBjcmVhdGVzIGFuIGFkYXB0ZXIgZm9yIGEge0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5yZXF1aXJlbWVudHMuVGVzdENhc2V9Lg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXB1YmxpYyBBZGFwdGVyIGNyZWF0ZVRlc3RDYXNlQWRhcHRlcigpIHsNCisJCWlmICh0ZXN0Q2FzZUl0ZW1Qcm92aWRlciA9PSBudWxsKSB7DQorCQkJdGVzdENhc2VJdGVtUHJvdmlkZXIgPSBuZXcgVGVzdENhc2VJdGVtUHJvdmlkZXIodGhpcyk7DQorCQl9DQorDQorCQlyZXR1cm4gdGVzdENhc2VJdGVtUHJvdmlkZXI7DQorCX0NCisNCisJLyoqDQorCSAqIFRoaXMga2VlcHMgdHJhY2sgb2YgdGhlIG9uZSBhZGFwdGVyIHVzZWQgZm9yIGFsbCB7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnJlcXVpcmVtZW50cy5WZXJpZnl9IGluc3RhbmNlcy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXByb3RlY3RlZCBWZXJpZnlJdGVtUHJvdmlkZXIgdmVyaWZ5SXRlbVByb3ZpZGVyOw0KKw0KKwkvKioNCisJICogVGhpcyBjcmVhdGVzIGFuIGFkYXB0ZXIgZm9yIGEge0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5yZXF1aXJlbWVudHMuVmVyaWZ5fS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgQWRhcHRlciBjcmVhdGVWZXJpZnlBZGFwdGVyKCkgew0KKwkJaWYgKHZlcmlmeUl0ZW1Qcm92aWRlciA9PSBudWxsKSB7DQorCQkJdmVyaWZ5SXRlbVByb3ZpZGVyID0gbmV3IFZlcmlmeUl0ZW1Qcm92aWRlcih0aGlzKTsNCisJCX0NCisNCisJCXJldHVybiB2ZXJpZnlJdGVtUHJvdmlkZXI7DQorCX0NCisNCisJLyoqDQorCSAqIFRoaXMga2VlcHMgdHJhY2sgb2YgdGhlIG9uZSBhZGFwdGVyIHVzZWQgZm9yIGFsbCB7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnJlcXVpcmVtZW50cy5SZWZpbmV9IGluc3RhbmNlcy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXByb3RlY3RlZCBSZWZpbmVJdGVtUHJvdmlkZXIgcmVmaW5lSXRlbVByb3ZpZGVyOw0KKw0KKwkvKioNCisJICogVGhpcyBjcmVhdGVzIGFuIGFkYXB0ZXIgZm9yIGEge0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5yZXF1aXJlbWVudHMuUmVmaW5lfS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgQWRhcHRlciBjcmVhdGVSZWZpbmVBZGFwdGVyKCkgew0KKwkJaWYgKHJlZmluZUl0ZW1Qcm92aWRlciA9PSBudWxsKSB7DQorCQkJcmVmaW5lSXRlbVByb3ZpZGVyID0gbmV3IFJlZmluZUl0ZW1Qcm92aWRlcih0aGlzKTsNCisJCX0NCisNCisJCXJldHVybiByZWZpbmVJdGVtUHJvdmlkZXI7DQorCX0NCisNCisJLyoqDQorCSAqIFRoaXMgcmV0dXJucyB0aGUgcm9vdCBhZGFwdGVyIGZhY3RvcnkgdGhhdCBjb250YWlucyB0aGlzIGZhY3RvcnkuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgQ29tcG9zZWFibGVBZGFwdGVyRmFjdG9yeSBnZXRSb290QWRhcHRlckZhY3RvcnkoKSB7DQorCQlyZXR1cm4gcGFyZW50QWRhcHRlckZhY3RvcnkgPT0gbnVsbCA/IHRoaXMgOiBwYXJlbnRBZGFwdGVyRmFjdG9yeS5nZXRSb290QWRhcHRlckZhY3RvcnkoKTsNCisJfQ0KKw0KKwkvKioNCisJICogVGhpcyBzZXRzIHRoZSBjb21wb3NlZCBhZGFwdGVyIGZhY3RvcnkgdGhhdCBjb250YWlucyB0aGlzIGZhY3RvcnkuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgdm9pZCBzZXRQYXJlbnRBZGFwdGVyRmFjdG9yeShDb21wb3NlZEFkYXB0ZXJGYWN0b3J5IHBhcmVudEFkYXB0ZXJGYWN0b3J5KSB7DQorCQl0aGlzLnBhcmVudEFkYXB0ZXJGYWN0b3J5ID0gcGFyZW50QWRhcHRlckZhY3Rvcnk7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIGJvb2xlYW4gaXNGYWN0b3J5Rm9yVHlwZShPYmplY3QgdHlwZSkgew0KKwkJcmV0dXJuIHN1cHBvcnRlZFR5cGVzLmNvbnRhaW5zKHR5cGUpIHx8IHN1cGVyLmlzRmFjdG9yeUZvclR5cGUodHlwZSk7DQorCX0NCisNCisJLyoqDQorCSAqIFRoaXMgaW1wbGVtZW50YXRpb24gc3Vic3RpdHV0ZXMgdGhlIGZhY3RvcnkgaXRzZWxmIGFzIHRoZSBrZXkgZm9yIHRoZSBhZGFwdGVyLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXB1YmxpYyBBZGFwdGVyIGFkYXB0KE5vdGlmaWVyIG5vdGlmaWVyLCBPYmplY3QgdHlwZSkgew0KKwkJcmV0dXJuIHN1cGVyLmFkYXB0KG5vdGlmaWVyLCB0aGlzKTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgT2JqZWN0IGFkYXB0KE9iamVjdCBvYmplY3QsIE9iamVjdCB0eXBlKSB7DQorCQlpZiAoaXNGYWN0b3J5Rm9yVHlwZSh0eXBlKSkgew0KKwkJCU9iamVjdCBhZGFwdGVyID0gc3VwZXIuYWRhcHQob2JqZWN0LCB0eXBlKTsNCisJCQlpZiAoISh0eXBlIGluc3RhbmNlb2YgQ2xhc3M8Pz4pIHx8ICgoKENsYXNzPD8+KXR5cGUpLmlzSW5zdGFuY2UoYWRhcHRlcikpKSB7DQorCQkJCXJldHVybiBhZGFwdGVyOw0KKwkJCX0NCisJCX0NCisNCisJCXJldHVybiBudWxsOw0KKwl9DQorDQorCS8qKg0KKwkgKiBUaGlzIGFkZHMgYSBsaXN0ZW5lci4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyB2b2lkIGFkZExpc3RlbmVyKElOb3RpZnlDaGFuZ2VkTGlzdGVuZXIgbm90aWZ5Q2hhbmdlZExpc3RlbmVyKSB7DQorCQljaGFuZ2VOb3RpZmllci5hZGRMaXN0ZW5lcihub3RpZnlDaGFuZ2VkTGlzdGVuZXIpOw0KKwl9DQorDQorCS8qKg0KKwkgKiBUaGlzIHJlbW92ZXMgYSBsaXN0ZW5lci4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyB2b2lkIHJlbW92ZUxpc3RlbmVyKElOb3RpZnlDaGFuZ2VkTGlzdGVuZXIgbm90aWZ5Q2hhbmdlZExpc3RlbmVyKSB7DQorCQljaGFuZ2VOb3RpZmllci5yZW1vdmVMaXN0ZW5lcihub3RpZnlDaGFuZ2VkTGlzdGVuZXIpOw0KKwl9DQorDQorCS8qKg0KKwkgKiBUaGlzIGRlbGVnYXRlcyB0byB7QGxpbmsgI2NoYW5nZU5vdGlmaWVyfSBhbmQgdG8ge0BsaW5rICNwYXJlbnRBZGFwdGVyRmFjdG9yeX0uDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgdm9pZCBmaXJlTm90aWZ5Q2hhbmdlZChOb3RpZmljYXRpb24gbm90aWZpY2F0aW9uKSB7DQorCQljaGFuZ2VOb3RpZmllci5maXJlTm90aWZ5Q2hhbmdlZChub3RpZmljYXRpb24pOw0KKw0KKwkJaWYgKHBhcmVudEFkYXB0ZXJGYWN0b3J5ICE9IG51bGwpIHsNCisJCQlwYXJlbnRBZGFwdGVyRmFjdG9yeS5maXJlTm90aWZ5Q2hhbmdlZChub3RpZmljYXRpb24pOw0KKwkJfQ0KKwl9DQorDQorCS8qKg0KKwkgKiBUaGlzIGRpc3Bvc2VzIGFsbCBvZiB0aGUgaXRlbSBwcm92aWRlcnMgY3JlYXRlZCBieSB0aGlzIGZhY3RvcnkuIA0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIHZvaWQgZGlzcG9zZSgpIHsNCisJCWlmIChkZXJpdmVSZXF0SXRlbVByb3ZpZGVyICE9IG51bGwpIGRlcml2ZVJlcXRJdGVtUHJvdmlkZXIuZGlzcG9zZSgpOw0KKwkJaWYgKHRyYWNlSXRlbVByb3ZpZGVyICE9IG51bGwpIHRyYWNlSXRlbVByb3ZpZGVyLmRpc3Bvc2UoKTsNCisJCWlmIChyZXF1aXJlbWVudEl0ZW1Qcm92aWRlciAhPSBudWxsKSByZXF1aXJlbWVudEl0ZW1Qcm92aWRlci5kaXNwb3NlKCk7DQorCQlpZiAoY29weUl0ZW1Qcm92aWRlciAhPSBudWxsKSBjb3B5SXRlbVByb3ZpZGVyLmRpc3Bvc2UoKTsNCisJCWlmIChzYXRpc2Z5SXRlbVByb3ZpZGVyICE9IG51bGwpIHNhdGlzZnlJdGVtUHJvdmlkZXIuZGlzcG9zZSgpOw0KKwkJaWYgKHRlc3RDYXNlSXRlbVByb3ZpZGVyICE9IG51bGwpIHRlc3RDYXNlSXRlbVByb3ZpZGVyLmRpc3Bvc2UoKTsNCisJCWlmICh2ZXJpZnlJdGVtUHJvdmlkZXIgIT0gbnVsbCkgdmVyaWZ5SXRlbVByb3ZpZGVyLmRpc3Bvc2UoKTsNCisJCWlmIChyZWZpbmVJdGVtUHJvdmlkZXIgIT0gbnVsbCkgcmVmaW5lSXRlbVByb3ZpZGVyLmRpc3Bvc2UoKTsNCisJfQ0KKw0KK30NCmRpZmYgLS1naXQgYS9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5lZGl0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L3JlcXVpcmVtZW50cy9wcm92aWRlci9TYXRpc2Z5SXRlbVByb3ZpZGVyLmphdmEgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5lZGl0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L3JlcXVpcmVtZW50cy9wcm92aWRlci9TYXRpc2Z5SXRlbVByb3ZpZGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGM0NDU4YgotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmVkaXQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvcmVxdWlyZW1lbnRzL3Byb3ZpZGVyL1NhdGlzZnlJdGVtUHJvdmlkZXIuamF2YQpAQCAtMCwwICsxLDEwMCBAQAorLyoqDQorICogQ29weXJpZ2h0IChjKSAyMDE1IENFQSBMSVNULg0KKyAqIA0KKyAqICBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQorICogIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KKyAqICB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KKyAqICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqLw0KK3BhY2thZ2Ugb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnJlcXVpcmVtZW50cy5wcm92aWRlcjsNCisNCisNCitpbXBvcnQgamF2YS51dGlsLkNvbGxlY3Rpb247DQoraW1wb3J0IGphdmEudXRpbC5MaXN0Ow0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY29tbW9uLm5vdGlmeS5BZGFwdGVyRmFjdG9yeTsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi5ub3RpZnkuTm90aWZpY2F0aW9uOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWRpdC5wcm92aWRlci5JSXRlbVByb3BlcnR5RGVzY3JpcHRvcjsNCisNCisvKioNCisgKiBUaGlzIGlzIHRoZSBpdGVtIHByb3ZpZGVyIGFkYXB0ZXIgZm9yIGEge0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5yZXF1aXJlbWVudHMuU2F0aXNmeX0gb2JqZWN0Lg0KKyAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorICogQGdlbmVyYXRlZA0KKyAqLw0KK3B1YmxpYyBjbGFzcyBTYXRpc2Z5SXRlbVByb3ZpZGVyIGV4dGVuZHMgVHJhY2VJdGVtUHJvdmlkZXIgew0KKwkvKioNCisJICogVGhpcyBjb25zdHJ1Y3RzIGFuIGluc3RhbmNlIGZyb20gYSBmYWN0b3J5IGFuZCBhIG5vdGlmaWVyLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIFNhdGlzZnlJdGVtUHJvdmlkZXIoQWRhcHRlckZhY3RvcnkgYWRhcHRlckZhY3RvcnkpIHsNCisJCXN1cGVyKGFkYXB0ZXJGYWN0b3J5KTsNCisJfQ0KKw0KKwkvKioNCisJICogVGhpcyByZXR1cm5zIHRoZSBwcm9wZXJ0eSBkZXNjcmlwdG9ycyBmb3IgdGhlIGFkYXB0ZWQgY2xhc3MuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIExpc3Q8SUl0ZW1Qcm9wZXJ0eURlc2NyaXB0b3I+IGdldFByb3BlcnR5RGVzY3JpcHRvcnMoT2JqZWN0IG9iamVjdCkgew0KKwkJaWYgKGl0ZW1Qcm9wZXJ0eURlc2NyaXB0b3JzID09IG51bGwpIHsNCisJCQlzdXBlci5nZXRQcm9wZXJ0eURlc2NyaXB0b3JzKG9iamVjdCk7DQorDQorCQl9DQorCQlyZXR1cm4gaXRlbVByb3BlcnR5RGVzY3JpcHRvcnM7DQorCX0NCisNCisJLyoqDQorCSAqIFRoaXMgcmV0dXJucyBTYXRpc2Z5LmdpZi4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgT2JqZWN0IGdldEltYWdlKE9iamVjdCBvYmplY3QpIHsNCisJCXJldHVybiBvdmVybGF5SW1hZ2Uob2JqZWN0LCBnZXRSZXNvdXJjZUxvY2F0b3IoKS5nZXRJbWFnZSgiZnVsbC9vYmoxNi9TYXRpc2Z5IikpOyAvLyROT04tTkxTLTEkDQorCX0NCisNCisJLyoqDQorCSAqIFRoaXMgcmV0dXJucyB0aGUgbGFiZWwgdGV4dCBmb3IgdGhlIGFkYXB0ZWQgY2xhc3MuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIFN0cmluZyBnZXRUZXh0KE9iamVjdCBvYmplY3QpIHsNCisJCXJldHVybiBnZXRTdHJpbmcoIl9VSV9TYXRpc2Z5X3R5cGUiKTsgLy8kTk9OLU5MUy0xJA0KKwl9DQorCQ0KKw0KKwkvKioNCisJICogVGhpcyBoYW5kbGVzIG1vZGVsIG5vdGlmaWNhdGlvbnMgYnkgY2FsbGluZyB7QGxpbmsgI3VwZGF0ZUNoaWxkcmVufSB0byB1cGRhdGUgYW55IGNhY2hlZA0KKwkgKiBjaGlsZHJlbiBhbmQgYnkgY3JlYXRpbmcgYSB2aWV3ZXIgbm90aWZpY2F0aW9uLCB3aGljaCBpdCBwYXNzZXMgdG8ge0BsaW5rICNmaXJlTm90aWZ5Q2hhbmdlZH0uDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIHZvaWQgbm90aWZ5Q2hhbmdlZChOb3RpZmljYXRpb24gbm90aWZpY2F0aW9uKSB7DQorCQl1cGRhdGVDaGlsZHJlbihub3RpZmljYXRpb24pOw0KKwkJc3VwZXIubm90aWZ5Q2hhbmdlZChub3RpZmljYXRpb24pOw0KKwl9DQorDQorCS8qKg0KKwkgKiBUaGlzIGFkZHMge0BsaW5rIG9yZy5lY2xpcHNlLmVtZi5lZGl0LmNvbW1hbmQuQ29tbWFuZFBhcmFtZXRlcn1zIGRlc2NyaWJpbmcgdGhlIGNoaWxkcmVuDQorCSAqIHRoYXQgY2FuIGJlIGNyZWF0ZWQgdW5kZXIgdGhpcyBvYmplY3QuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHJvdGVjdGVkIHZvaWQgY29sbGVjdE5ld0NoaWxkRGVzY3JpcHRvcnMoQ29sbGVjdGlvbjxPYmplY3Q+IG5ld0NoaWxkRGVzY3JpcHRvcnMsIE9iamVjdCBvYmplY3QpIHsNCisJCXN1cGVyLmNvbGxlY3ROZXdDaGlsZERlc2NyaXB0b3JzKG5ld0NoaWxkRGVzY3JpcHRvcnMsIG9iamVjdCk7DQorCX0NCisNCit9DQpkaWZmIC0tZ2l0IGEvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZWRpdC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9yZXF1aXJlbWVudHMvcHJvdmlkZXIvVGVzdENhc2VJdGVtUHJvdmlkZXIuamF2YSBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmVkaXQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvcmVxdWlyZW1lbnRzL3Byb3ZpZGVyL1Rlc3RDYXNlSXRlbVByb3ZpZGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWQ2ZTA0OQotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmVkaXQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvcmVxdWlyZW1lbnRzL3Byb3ZpZGVyL1Rlc3RDYXNlSXRlbVByb3ZpZGVyLmphdmEKQEAgLTAsMCArMSwxNzIgQEAKKy8qKg0KKyAqIENvcHlyaWdodCAoYykgMjAxNSBDRUEgTElTVC4NCisgKiANCisgKiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KKyAqICBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCisgKiAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCisgKiAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgKi8NCitwYWNrYWdlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5yZXF1aXJlbWVudHMucHJvdmlkZXI7DQorDQorDQoraW1wb3J0IGphdmEudXRpbC5Db2xsZWN0aW9uOw0KK2ltcG9ydCBqYXZhLnV0aWwuTGlzdDsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi5ub3RpZnkuQWRhcHRlckZhY3Rvcnk7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jb21tb24ubm90aWZ5Lk5vdGlmaWNhdGlvbjsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi51dGlsLlJlc291cmNlTG9jYXRvcjsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVkaXQucHJvdmlkZXIuQ29tcG9zZWFibGVBZGFwdGVyRmFjdG9yeTsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVkaXQucHJvdmlkZXIuSUVkaXRpbmdEb21haW5JdGVtUHJvdmlkZXI7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lZGl0LnByb3ZpZGVyLklJdGVtTGFiZWxQcm92aWRlcjsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVkaXQucHJvdmlkZXIuSUl0ZW1Qcm9wZXJ0eURlc2NyaXB0b3I7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lZGl0LnByb3ZpZGVyLklJdGVtUHJvcGVydHlTb3VyY2U7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lZGl0LnByb3ZpZGVyLklTdHJ1Y3R1cmVkSXRlbUNvbnRlbnRQcm92aWRlcjsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVkaXQucHJvdmlkZXIuSVRyZWVJdGVtQ29udGVudFByb3ZpZGVyOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWRpdC5wcm92aWRlci5JdGVtUHJvdmlkZXJBZGFwdGVyOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucHJvdmlkZXIuU3lzbWxFZGl0UGx1Z2luOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucmVxdWlyZW1lbnRzLlJlcXVpcmVtZW50c1BhY2thZ2U7DQorDQorLyoqDQorICogVGhpcyBpcyB0aGUgaXRlbSBwcm92aWRlciBhZGFwdGVyIGZvciBhIHtAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucmVxdWlyZW1lbnRzLlRlc3RDYXNlfSBvYmplY3QuDQorICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisgKiBAZ2VuZXJhdGVkDQorICovDQorcHVibGljIGNsYXNzIFRlc3RDYXNlSXRlbVByb3ZpZGVyIA0KKwlleHRlbmRzIEl0ZW1Qcm92aWRlckFkYXB0ZXINCisJaW1wbGVtZW50cw0KKwkJSUVkaXRpbmdEb21haW5JdGVtUHJvdmlkZXIsDQorCQlJU3RydWN0dXJlZEl0ZW1Db250ZW50UHJvdmlkZXIsDQorCQlJVHJlZUl0ZW1Db250ZW50UHJvdmlkZXIsDQorCQlJSXRlbUxhYmVsUHJvdmlkZXIsDQorCQlJSXRlbVByb3BlcnR5U291cmNlIHsNCisJLyoqDQorCSAqIFRoaXMgY29uc3RydWN0cyBhbiBpbnN0YW5jZSBmcm9tIGEgZmFjdG9yeSBhbmQgYSBub3RpZmllci4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBUZXN0Q2FzZUl0ZW1Qcm92aWRlcihBZGFwdGVyRmFjdG9yeSBhZGFwdGVyRmFjdG9yeSkgew0KKwkJc3VwZXIoYWRhcHRlckZhY3RvcnkpOw0KKwl9DQorDQorCS8qKg0KKwkgKiBUaGlzIHJldHVybnMgdGhlIHByb3BlcnR5IGRlc2NyaXB0b3JzIGZvciB0aGUgYWRhcHRlZCBjbGFzcy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgTGlzdDxJSXRlbVByb3BlcnR5RGVzY3JpcHRvcj4gZ2V0UHJvcGVydHlEZXNjcmlwdG9ycyhPYmplY3Qgb2JqZWN0KSB7DQorCQlpZiAoaXRlbVByb3BlcnR5RGVzY3JpcHRvcnMgPT0gbnVsbCkgew0KKwkJCXN1cGVyLmdldFByb3BlcnR5RGVzY3JpcHRvcnMob2JqZWN0KTsNCisNCisJCQlhZGRCYXNlX09wZXJhdGlvblByb3BlcnR5RGVzY3JpcHRvcihvYmplY3QpOw0KKwkJCWFkZEJhc2VfQmVoYXZpb3JQcm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0KTsNCisJCX0NCisJCXJldHVybiBpdGVtUHJvcGVydHlEZXNjcmlwdG9yczsNCisJfQ0KKw0KKwkvKioNCisJICogVGhpcyBhZGRzIGEgcHJvcGVydHkgZGVzY3JpcHRvciBmb3IgdGhlIEJhc2UgT3BlcmF0aW9uIGZlYXR1cmUuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwcm90ZWN0ZWQgdm9pZCBhZGRCYXNlX09wZXJhdGlvblByb3BlcnR5RGVzY3JpcHRvcihPYmplY3Qgb2JqZWN0KSB7DQorCQlpdGVtUHJvcGVydHlEZXNjcmlwdG9ycy5hZGQNCisJCQkoY3JlYXRlSXRlbVByb3BlcnR5RGVzY3JpcHRvcg0KKwkJCQkoKChDb21wb3NlYWJsZUFkYXB0ZXJGYWN0b3J5KWFkYXB0ZXJGYWN0b3J5KS5nZXRSb290QWRhcHRlckZhY3RvcnkoKSwNCisJCQkJIGdldFJlc291cmNlTG9jYXRvcigpLA0KKwkJCQkgZ2V0U3RyaW5nKCJfVUlfVGVzdENhc2VfYmFzZV9PcGVyYXRpb25fZmVhdHVyZSIpLCAvLyROT04tTkxTLTEkDQorCQkJCSBnZXRTdHJpbmcoIl9VSV9Qcm9wZXJ0eURlc2NyaXB0b3JfZGVzY3JpcHRpb24iLCAiX1VJX1Rlc3RDYXNlX2Jhc2VfT3BlcmF0aW9uX2ZlYXR1cmUiLCAiX1VJX1Rlc3RDYXNlX3R5cGUiKSwgLy8kTk9OLU5MUy0xJCAvLyROT04tTkxTLTIkIC8vJE5PTi1OTFMtMyQNCisJCQkJIFJlcXVpcmVtZW50c1BhY2thZ2UuTGl0ZXJhbHMuVEVTVF9DQVNFX19CQVNFX09QRVJBVElPTiwNCisJCQkJIHRydWUsDQorCQkJCSBmYWxzZSwNCisJCQkJIHRydWUsDQorCQkJCSBudWxsLA0KKwkJCQkgbnVsbCwNCisJCQkJIG51bGwpKTsNCisJfQ0KKw0KKwkvKioNCisJICogVGhpcyBhZGRzIGEgcHJvcGVydHkgZGVzY3JpcHRvciBmb3IgdGhlIEJhc2UgQmVoYXZpb3IgZmVhdHVyZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXByb3RlY3RlZCB2b2lkIGFkZEJhc2VfQmVoYXZpb3JQcm9wZXJ0eURlc2NyaXB0b3IoT2JqZWN0IG9iamVjdCkgew0KKwkJaXRlbVByb3BlcnR5RGVzY3JpcHRvcnMuYWRkDQorCQkJKGNyZWF0ZUl0ZW1Qcm9wZXJ0eURlc2NyaXB0b3INCisJCQkJKCgoQ29tcG9zZWFibGVBZGFwdGVyRmFjdG9yeSlhZGFwdGVyRmFjdG9yeSkuZ2V0Um9vdEFkYXB0ZXJGYWN0b3J5KCksDQorCQkJCSBnZXRSZXNvdXJjZUxvY2F0b3IoKSwNCisJCQkJIGdldFN0cmluZygiX1VJX1Rlc3RDYXNlX2Jhc2VfQmVoYXZpb3JfZmVhdHVyZSIpLCAvLyROT04tTkxTLTEkDQorCQkJCSBnZXRTdHJpbmcoIl9VSV9Qcm9wZXJ0eURlc2NyaXB0b3JfZGVzY3JpcHRpb24iLCAiX1VJX1Rlc3RDYXNlX2Jhc2VfQmVoYXZpb3JfZmVhdHVyZSIsICJfVUlfVGVzdENhc2VfdHlwZSIpLCAvLyROT04tTkxTLTEkIC8vJE5PTi1OTFMtMiQgLy8kTk9OLU5MUy0zJA0KKwkJCQkgUmVxdWlyZW1lbnRzUGFja2FnZS5MaXRlcmFscy5URVNUX0NBU0VfX0JBU0VfQkVIQVZJT1IsDQorCQkJCSB0cnVlLA0KKwkJCQkgZmFsc2UsDQorCQkJCSB0cnVlLA0KKwkJCQkgbnVsbCwNCisJCQkJIG51bGwsDQorCQkJCSBudWxsKSk7DQorCX0NCisNCisJLyoqDQorCSAqIFRoaXMgcmV0dXJucyBUZXN0Q2FzZS5naWYuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIE9iamVjdCBnZXRJbWFnZShPYmplY3Qgb2JqZWN0KSB7DQorCQlyZXR1cm4gb3ZlcmxheUltYWdlKG9iamVjdCwgZ2V0UmVzb3VyY2VMb2NhdG9yKCkuZ2V0SW1hZ2UoImZ1bGwvb2JqMTYvVGVzdENhc2UiKSk7IC8vJE5PTi1OTFMtMSQNCisJfQ0KKw0KKwkvKioNCisJICogVGhpcyByZXR1cm5zIHRoZSBsYWJlbCB0ZXh0IGZvciB0aGUgYWRhcHRlZCBjbGFzcy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgU3RyaW5nIGdldFRleHQoT2JqZWN0IG9iamVjdCkgew0KKwkJcmV0dXJuIGdldFN0cmluZygiX1VJX1Rlc3RDYXNlX3R5cGUiKTsgLy8kTk9OLU5MUy0xJA0KKwl9DQorCQ0KKw0KKwkvKioNCisJICogVGhpcyBoYW5kbGVzIG1vZGVsIG5vdGlmaWNhdGlvbnMgYnkgY2FsbGluZyB7QGxpbmsgI3VwZGF0ZUNoaWxkcmVufSB0byB1cGRhdGUgYW55IGNhY2hlZA0KKwkgKiBjaGlsZHJlbiBhbmQgYnkgY3JlYXRpbmcgYSB2aWV3ZXIgbm90aWZpY2F0aW9uLCB3aGljaCBpdCBwYXNzZXMgdG8ge0BsaW5rICNmaXJlTm90aWZ5Q2hhbmdlZH0uDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIHZvaWQgbm90aWZ5Q2hhbmdlZChOb3RpZmljYXRpb24gbm90aWZpY2F0aW9uKSB7DQorCQl1cGRhdGVDaGlsZHJlbihub3RpZmljYXRpb24pOw0KKwkJc3VwZXIubm90aWZ5Q2hhbmdlZChub3RpZmljYXRpb24pOw0KKwl9DQorDQorCS8qKg0KKwkgKiBUaGlzIGFkZHMge0BsaW5rIG9yZy5lY2xpcHNlLmVtZi5lZGl0LmNvbW1hbmQuQ29tbWFuZFBhcmFtZXRlcn1zIGRlc2NyaWJpbmcgdGhlIGNoaWxkcmVuDQorCSAqIHRoYXQgY2FuIGJlIGNyZWF0ZWQgdW5kZXIgdGhpcyBvYmplY3QuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHJvdGVjdGVkIHZvaWQgY29sbGVjdE5ld0NoaWxkRGVzY3JpcHRvcnMoQ29sbGVjdGlvbjxPYmplY3Q+IG5ld0NoaWxkRGVzY3JpcHRvcnMsIE9iamVjdCBvYmplY3QpIHsNCisJCXN1cGVyLmNvbGxlY3ROZXdDaGlsZERlc2NyaXB0b3JzKG5ld0NoaWxkRGVzY3JpcHRvcnMsIG9iamVjdCk7DQorCX0NCisNCisJLyoqDQorCSAqIFJldHVybiB0aGUgcmVzb3VyY2UgbG9jYXRvciBmb3IgdGhpcyBpdGVtIHByb3ZpZGVyJ3MgcmVzb3VyY2VzLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXB1YmxpYyBSZXNvdXJjZUxvY2F0b3IgZ2V0UmVzb3VyY2VMb2NhdG9yKCkgew0KKwkJcmV0dXJuIFN5c21sRWRpdFBsdWdpbi5JTlNUQU5DRTsNCisJfQ0KKw0KK30NCmRpZmYgLS1naXQgYS9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5lZGl0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L3JlcXVpcmVtZW50cy9wcm92aWRlci9UcmFjZUl0ZW1Qcm92aWRlci5qYXZhIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZWRpdC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9yZXF1aXJlbWVudHMvcHJvdmlkZXIvVHJhY2VJdGVtUHJvdmlkZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZTg3YTNlCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZWRpdC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9yZXF1aXJlbWVudHMvcHJvdmlkZXIvVHJhY2VJdGVtUHJvdmlkZXIuamF2YQpAQCAtMCwwICsxLDEzNyBAQAorLyoqDQorICogQ29weXJpZ2h0IChjKSAyMDE1IENFQSBMSVNULg0KKyAqIA0KKyAqICBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQorICogIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KKyAqICB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KKyAqICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqLw0KK3BhY2thZ2Ugb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnJlcXVpcmVtZW50cy5wcm92aWRlcjsNCisNCisNCitpbXBvcnQgamF2YS51dGlsLkNvbGxlY3Rpb247DQoraW1wb3J0IGphdmEudXRpbC5MaXN0Ow0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY29tbW9uLm5vdGlmeS5BZGFwdGVyRmFjdG9yeTsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi5ub3RpZnkuTm90aWZpY2F0aW9uOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY29tbW9uLnV0aWwuUmVzb3VyY2VMb2NhdG9yOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWRpdC5wcm92aWRlci5Db21wb3NlYWJsZUFkYXB0ZXJGYWN0b3J5Ow0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWRpdC5wcm92aWRlci5JSXRlbVByb3BlcnR5RGVzY3JpcHRvcjsNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmJsb2Nrcy5wcm92aWRlci5EaXJlY3RlZFJlbGF0aW9uc2hpcFByb3BlcnR5UGF0aEl0ZW1Qcm92aWRlcjsNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnByb3ZpZGVyLlN5c21sRWRpdFBsdWdpbjsNCitpbXBvcnQgb3JnLmVjbGlwc2UudW1sMi51bWwucHJvZmlsZS5zdGFuZGFyZC5TdGFuZGFyZFBhY2thZ2U7DQorDQorLyoqDQorICogVGhpcyBpcyB0aGUgaXRlbSBwcm92aWRlciBhZGFwdGVyIGZvciBhIHtAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucmVxdWlyZW1lbnRzLlRyYWNlfSBvYmplY3QuDQorICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisgKiBAZ2VuZXJhdGVkDQorICovDQorcHVibGljIGNsYXNzIFRyYWNlSXRlbVByb3ZpZGVyIGV4dGVuZHMgRGlyZWN0ZWRSZWxhdGlvbnNoaXBQcm9wZXJ0eVBhdGhJdGVtUHJvdmlkZXIgew0KKwkvKioNCisJICogVGhpcyBjb25zdHJ1Y3RzIGFuIGluc3RhbmNlIGZyb20gYSBmYWN0b3J5IGFuZCBhIG5vdGlmaWVyLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIFRyYWNlSXRlbVByb3ZpZGVyKEFkYXB0ZXJGYWN0b3J5IGFkYXB0ZXJGYWN0b3J5KSB7DQorCQlzdXBlcihhZGFwdGVyRmFjdG9yeSk7DQorCX0NCisNCisJLyoqDQorCSAqIFRoaXMgcmV0dXJucyB0aGUgcHJvcGVydHkgZGVzY3JpcHRvcnMgZm9yIHRoZSBhZGFwdGVkIGNsYXNzLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXB1YmxpYyBMaXN0PElJdGVtUHJvcGVydHlEZXNjcmlwdG9yPiBnZXRQcm9wZXJ0eURlc2NyaXB0b3JzKE9iamVjdCBvYmplY3QpIHsNCisJCWlmIChpdGVtUHJvcGVydHlEZXNjcmlwdG9ycyA9PSBudWxsKSB7DQorCQkJc3VwZXIuZ2V0UHJvcGVydHlEZXNjcmlwdG9ycyhvYmplY3QpOw0KKw0KKwkJCWFkZEJhc2VfQWJzdHJhY3Rpb25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqZWN0KTsNCisJCX0NCisJCXJldHVybiBpdGVtUHJvcGVydHlEZXNjcmlwdG9yczsNCisJfQ0KKw0KKwkvKioNCisJICogVGhpcyBhZGRzIGEgcHJvcGVydHkgZGVzY3JpcHRvciBmb3IgdGhlIEJhc2UgQWJzdHJhY3Rpb24gZmVhdHVyZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXByb3RlY3RlZCB2b2lkIGFkZEJhc2VfQWJzdHJhY3Rpb25Qcm9wZXJ0eURlc2NyaXB0b3IoT2JqZWN0IG9iamVjdCkgew0KKwkJaXRlbVByb3BlcnR5RGVzY3JpcHRvcnMuYWRkDQorCQkJKGNyZWF0ZUl0ZW1Qcm9wZXJ0eURlc2NyaXB0b3INCisJCQkJKCgoQ29tcG9zZWFibGVBZGFwdGVyRmFjdG9yeSlhZGFwdGVyRmFjdG9yeSkuZ2V0Um9vdEFkYXB0ZXJGYWN0b3J5KCksDQorCQkJCSBnZXRSZXNvdXJjZUxvY2F0b3IoKSwNCisJCQkJIGdldFN0cmluZygiX1VJX1RyYWNlX2Jhc2VfQWJzdHJhY3Rpb25fZmVhdHVyZSIpLCAvLyROT04tTkxTLTEkDQorCQkJCSBnZXRTdHJpbmcoIl9VSV9Qcm9wZXJ0eURlc2NyaXB0b3JfZGVzY3JpcHRpb24iLCAiX1VJX1RyYWNlX2Jhc2VfQWJzdHJhY3Rpb25fZmVhdHVyZSIsICJfVUlfVHJhY2VfdHlwZSIpLCAvLyROT04tTkxTLTEkIC8vJE5PTi1OTFMtMiQgLy8kTk9OLU5MUy0zJA0KKwkJCQkgU3RhbmRhcmRQYWNrYWdlLkxpdGVyYWxzLlRSQUNFX19CQVNFX0FCU1RSQUNUSU9OLA0KKwkJCQkgdHJ1ZSwNCisJCQkJIGZhbHNlLA0KKwkJCQkgdHJ1ZSwNCisJCQkJIG51bGwsDQorCQkJCSBudWxsLA0KKwkJCQkgbnVsbCkpOw0KKwl9DQorDQorCS8qKg0KKwkgKiBUaGlzIHJldHVybnMgVHJhY2UuZ2lmLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXB1YmxpYyBPYmplY3QgZ2V0SW1hZ2UoT2JqZWN0IG9iamVjdCkgew0KKwkJcmV0dXJuIG92ZXJsYXlJbWFnZShvYmplY3QsIGdldFJlc291cmNlTG9jYXRvcigpLmdldEltYWdlKCJmdWxsL29iajE2L1RyYWNlIikpOyAvLyROT04tTkxTLTEkDQorCX0NCisNCisJLyoqDQorCSAqIFRoaXMgcmV0dXJucyB0aGUgbGFiZWwgdGV4dCBmb3IgdGhlIGFkYXB0ZWQgY2xhc3MuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIFN0cmluZyBnZXRUZXh0KE9iamVjdCBvYmplY3QpIHsNCisJCXJldHVybiBnZXRTdHJpbmcoIl9VSV9UcmFjZV90eXBlIik7IC8vJE5PTi1OTFMtMSQNCisJfQ0KKwkNCisNCisJLyoqDQorCSAqIFRoaXMgaGFuZGxlcyBtb2RlbCBub3RpZmljYXRpb25zIGJ5IGNhbGxpbmcge0BsaW5rICN1cGRhdGVDaGlsZHJlbn0gdG8gdXBkYXRlIGFueSBjYWNoZWQNCisJICogY2hpbGRyZW4gYW5kIGJ5IGNyZWF0aW5nIGEgdmlld2VyIG5vdGlmaWNhdGlvbiwgd2hpY2ggaXQgcGFzc2VzIHRvIHtAbGluayAjZmlyZU5vdGlmeUNoYW5nZWR9Lg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXB1YmxpYyB2b2lkIG5vdGlmeUNoYW5nZWQoTm90aWZpY2F0aW9uIG5vdGlmaWNhdGlvbikgew0KKwkJdXBkYXRlQ2hpbGRyZW4obm90aWZpY2F0aW9uKTsNCisJCXN1cGVyLm5vdGlmeUNoYW5nZWQobm90aWZpY2F0aW9uKTsNCisJfQ0KKw0KKwkvKioNCisJICogVGhpcyBhZGRzIHtAbGluayBvcmcuZWNsaXBzZS5lbWYuZWRpdC5jb21tYW5kLkNvbW1hbmRQYXJhbWV0ZXJ9cyBkZXNjcmliaW5nIHRoZSBjaGlsZHJlbg0KKwkgKiB0aGF0IGNhbiBiZSBjcmVhdGVkIHVuZGVyIHRoaXMgb2JqZWN0Lg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXByb3RlY3RlZCB2b2lkIGNvbGxlY3ROZXdDaGlsZERlc2NyaXB0b3JzKENvbGxlY3Rpb248T2JqZWN0PiBuZXdDaGlsZERlc2NyaXB0b3JzLCBPYmplY3Qgb2JqZWN0KSB7DQorCQlzdXBlci5jb2xsZWN0TmV3Q2hpbGREZXNjcmlwdG9ycyhuZXdDaGlsZERlc2NyaXB0b3JzLCBvYmplY3QpOw0KKwl9DQorDQorCS8qKg0KKwkgKiBSZXR1cm4gdGhlIHJlc291cmNlIGxvY2F0b3IgZm9yIHRoaXMgaXRlbSBwcm92aWRlcidzIHJlc291cmNlcy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgUmVzb3VyY2VMb2NhdG9yIGdldFJlc291cmNlTG9jYXRvcigpIHsNCisJCXJldHVybiBTeXNtbEVkaXRQbHVnaW4uSU5TVEFOQ0U7DQorCX0NCisNCit9DQpkaWZmIC0tZ2l0IGEvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZWRpdC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9yZXF1aXJlbWVudHMvcHJvdmlkZXIvVmVyaWZ5SXRlbVByb3ZpZGVyLmphdmEgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5lZGl0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L3JlcXVpcmVtZW50cy9wcm92aWRlci9WZXJpZnlJdGVtUHJvdmlkZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kOWI3NWNhCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZWRpdC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9yZXF1aXJlbWVudHMvcHJvdmlkZXIvVmVyaWZ5SXRlbVByb3ZpZGVyLmphdmEKQEAgLTAsMCArMSwxMDAgQEAKKy8qKg0KKyAqIENvcHlyaWdodCAoYykgMjAxNSBDRUEgTElTVC4NCisgKiANCisgKiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KKyAqICBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCisgKiAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCisgKiAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgKi8NCitwYWNrYWdlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5yZXF1aXJlbWVudHMucHJvdmlkZXI7DQorDQorDQoraW1wb3J0IGphdmEudXRpbC5Db2xsZWN0aW9uOw0KK2ltcG9ydCBqYXZhLnV0aWwuTGlzdDsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi5ub3RpZnkuQWRhcHRlckZhY3Rvcnk7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jb21tb24ubm90aWZ5Lk5vdGlmaWNhdGlvbjsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVkaXQucHJvdmlkZXIuSUl0ZW1Qcm9wZXJ0eURlc2NyaXB0b3I7DQorDQorLyoqDQorICogVGhpcyBpcyB0aGUgaXRlbSBwcm92aWRlciBhZGFwdGVyIGZvciBhIHtAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucmVxdWlyZW1lbnRzLlZlcmlmeX0gb2JqZWN0Lg0KKyAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorICogQGdlbmVyYXRlZA0KKyAqLw0KK3B1YmxpYyBjbGFzcyBWZXJpZnlJdGVtUHJvdmlkZXIgZXh0ZW5kcyBUcmFjZUl0ZW1Qcm92aWRlciB7DQorCS8qKg0KKwkgKiBUaGlzIGNvbnN0cnVjdHMgYW4gaW5zdGFuY2UgZnJvbSBhIGZhY3RvcnkgYW5kIGEgbm90aWZpZXIuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgVmVyaWZ5SXRlbVByb3ZpZGVyKEFkYXB0ZXJGYWN0b3J5IGFkYXB0ZXJGYWN0b3J5KSB7DQorCQlzdXBlcihhZGFwdGVyRmFjdG9yeSk7DQorCX0NCisNCisJLyoqDQorCSAqIFRoaXMgcmV0dXJucyB0aGUgcHJvcGVydHkgZGVzY3JpcHRvcnMgZm9yIHRoZSBhZGFwdGVkIGNsYXNzLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXB1YmxpYyBMaXN0PElJdGVtUHJvcGVydHlEZXNjcmlwdG9yPiBnZXRQcm9wZXJ0eURlc2NyaXB0b3JzKE9iamVjdCBvYmplY3QpIHsNCisJCWlmIChpdGVtUHJvcGVydHlEZXNjcmlwdG9ycyA9PSBudWxsKSB7DQorCQkJc3VwZXIuZ2V0UHJvcGVydHlEZXNjcmlwdG9ycyhvYmplY3QpOw0KKw0KKwkJfQ0KKwkJcmV0dXJuIGl0ZW1Qcm9wZXJ0eURlc2NyaXB0b3JzOw0KKwl9DQorDQorCS8qKg0KKwkgKiBUaGlzIHJldHVybnMgVmVyaWZ5LmdpZi4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgT2JqZWN0IGdldEltYWdlKE9iamVjdCBvYmplY3QpIHsNCisJCXJldHVybiBvdmVybGF5SW1hZ2Uob2JqZWN0LCBnZXRSZXNvdXJjZUxvY2F0b3IoKS5nZXRJbWFnZSgiZnVsbC9vYmoxNi9WZXJpZnkiKSk7IC8vJE5PTi1OTFMtMSQNCisJfQ0KKw0KKwkvKioNCisJICogVGhpcyByZXR1cm5zIHRoZSBsYWJlbCB0ZXh0IGZvciB0aGUgYWRhcHRlZCBjbGFzcy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgU3RyaW5nIGdldFRleHQoT2JqZWN0IG9iamVjdCkgew0KKwkJcmV0dXJuIGdldFN0cmluZygiX1VJX1ZlcmlmeV90eXBlIik7IC8vJE5PTi1OTFMtMSQNCisJfQ0KKwkNCisNCisJLyoqDQorCSAqIFRoaXMgaGFuZGxlcyBtb2RlbCBub3RpZmljYXRpb25zIGJ5IGNhbGxpbmcge0BsaW5rICN1cGRhdGVDaGlsZHJlbn0gdG8gdXBkYXRlIGFueSBjYWNoZWQNCisJICogY2hpbGRyZW4gYW5kIGJ5IGNyZWF0aW5nIGEgdmlld2VyIG5vdGlmaWNhdGlvbiwgd2hpY2ggaXQgcGFzc2VzIHRvIHtAbGluayAjZmlyZU5vdGlmeUNoYW5nZWR9Lg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXB1YmxpYyB2b2lkIG5vdGlmeUNoYW5nZWQoTm90aWZpY2F0aW9uIG5vdGlmaWNhdGlvbikgew0KKwkJdXBkYXRlQ2hpbGRyZW4obm90aWZpY2F0aW9uKTsNCisJCXN1cGVyLm5vdGlmeUNoYW5nZWQobm90aWZpY2F0aW9uKTsNCisJfQ0KKw0KKwkvKioNCisJICogVGhpcyBhZGRzIHtAbGluayBvcmcuZWNsaXBzZS5lbWYuZWRpdC5jb21tYW5kLkNvbW1hbmRQYXJhbWV0ZXJ9cyBkZXNjcmliaW5nIHRoZSBjaGlsZHJlbg0KKwkgKiB0aGF0IGNhbiBiZSBjcmVhdGVkIHVuZGVyIHRoaXMgb2JqZWN0Lg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXByb3RlY3RlZCB2b2lkIGNvbGxlY3ROZXdDaGlsZERlc2NyaXB0b3JzKENvbGxlY3Rpb248T2JqZWN0PiBuZXdDaGlsZERlc2NyaXB0b3JzLCBPYmplY3Qgb2JqZWN0KSB7DQorCQlzdXBlci5jb2xsZWN0TmV3Q2hpbGREZXNjcmlwdG9ycyhuZXdDaGlsZERlc2NyaXB0b3JzLCBvYmplY3QpOw0KKwl9DQorDQorfQ0KZGlmZiAtLWdpdCBhL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmVkaXQvc3JjL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9lZGl0L3Byb3ZpZGVyL0lDb21wb3NhYmxlQWRhcHRlckZhY3RvcnkuamF2YSBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmVkaXQvc3JjL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9lZGl0L3Byb3ZpZGVyL0lDb21wb3NhYmxlQWRhcHRlckZhY3RvcnkuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZDQxNzJjCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZWRpdC9zcmMvb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L2VkaXQvcHJvdmlkZXIvSUNvbXBvc2FibGVBZGFwdGVyRmFjdG9yeS5qYXZhCkBAIC0wLDAgKzEsNDEgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyAqIENvcHlyaWdodCAoYykgMjAxMSBBdG9zLg0KKyAqDQorICoNCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQorICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCisgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqDQorICogQ29udHJpYnV0b3JzOg0KKyAqICAgQXRvcyAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbg0KKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCitwYWNrYWdlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5lZGl0LnByb3ZpZGVyOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY29tbW9uLm5vdGlmeS5BZGFwdGVyRmFjdG9yeTsNCisNCisNCisvKioNCisgKiBUaGUgcHVycG9zZSBvZiB0aGlzIGludGVyZmFjZSBpcyB0byBjcmVhdGUgY29tcG9zYWJsZSBhZGFwdGVyRmFjdG9yeSBidXQgaW4gYQ0KKyAqIHdheSBtdWNoIHNpbXBsZXIgdGhhbiBFTUYgZG9lcy4NCisgKg0KKyAqIEBhdXRob3IgIkFydGh1ciBEYXVzc3kgPGEgaHJlZj0ibWFpbHRvOmFydGh1ci5kYXVzc3lAYXRvcy5uZXQNCisgKiAgICAgICAgICI+YXJ0aHVyLmRhdXNzeUBhdG9zLm5ldDwvYT4iDQorICoNCisgKi8NCitwdWJsaWMgaW50ZXJmYWNlIElDb21wb3NhYmxlQWRhcHRlckZhY3Rvcnkgew0KKw0KKwkvKioNCisJICogUmV0dXJuIHRoZSByb290IG9mIHRoZSBhZGFwdGVyIGZhY3RvcnkNCisJICoNCisJICogQHJldHVybiB7QGxpbmsgQWRhcHRlckZhY3Rvcnl9DQorCSAqLw0KKwlwdWJsaWMgSVJvb3RBZGFwdGVyRmFjdG9yeSBnZXRJUm9vdEFkYXB0ZXJGYWN0b3J5KCk7DQorDQorCS8qKg0KKwkgKiBTZXQgdGhlIHJvb3QgQWRhcHRlckZhY3RvcnkNCisJICoNCisJICogQHBhcmFtIHJvb3QNCisJICovDQorCXB1YmxpYyB2b2lkIHNldFJvb3RBZGFwdGVyRmFjdG9yeShJUm9vdEFkYXB0ZXJGYWN0b3J5IHJvb3QpOw0KK30NCmRpZmYgLS1naXQgYS9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5lZGl0L3NyYy9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvZWRpdC9wcm92aWRlci9JUm9vdEFkYXB0ZXJGYWN0b3J5LmphdmEgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5lZGl0L3NyYy9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvZWRpdC9wcm92aWRlci9JUm9vdEFkYXB0ZXJGYWN0b3J5LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2MxYTM4OAotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmVkaXQvc3JjL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9lZGl0L3Byb3ZpZGVyL0lSb290QWRhcHRlckZhY3RvcnkuamF2YQpAQCAtMCwwICsxLDMxIEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisgKiBDb3B5cmlnaHQgKGMpIDIwMTEgQXRvcy4NCisgKg0KKyAqDQorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KKyAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQorICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgKg0KKyAqIENvbnRyaWJ1dG9yczoNCisgKiAgIEF0b3MgLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24NCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorcGFja2FnZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZWRpdC5wcm92aWRlcjsNCisNCisvKioNCisgKiBJbnRlcmZhY2VzIHdoaWNoIGhhcyB0byBiZSBpbXBsZW1lbnRlZCBieSBSb290IEFkYXB0ZXJGYWN0b3J5DQorICovDQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FQ2xhc3M7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lZGl0LnByb3ZpZGVyLkl0ZW1Qcm92aWRlckFkYXB0ZXI7DQorDQorcHVibGljIGludGVyZmFjZSBJUm9vdEFkYXB0ZXJGYWN0b3J5IHsNCisNCisJLyoqDQorCSAqIEdpdmUgYmFjayB0aGUgaXRlbVByb3ZpZGVyIHdoaWNoIGNvcnJlc3BvbmQgdG8gdGhlIGdpdmVuIEVDbGFzcyBJbiB0aGlzDQorCSAqIHByb2cgOiB1c2VkIHRvIGdldCBiYWNrIHRoZSBVTUwgSXRlbVByb3ZpZGVyIG9mIHRoZSBFQ2xhc3MNCisJICoNCisJICogQHBhcmFtIGVDbGFzcw0KKwkgKiBAcmV0dXJuDQorCSAqLw0KKwlwdWJsaWMgSXRlbVByb3ZpZGVyQWRhcHRlciBnZXRJdGVtUHJvdmlkZXIoRUNsYXNzIGVDbGFzcyk7DQorfQ0KZGlmZiAtLWdpdCBhL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmVkaXQvc3JjL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9lZGl0L3Byb3ZpZGVyL0lWaXNpYmlsaXR5T3ZlcmxheUltYWdlLmphdmEgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5lZGl0L3NyYy9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvZWRpdC9wcm92aWRlci9JVmlzaWJpbGl0eU92ZXJsYXlJbWFnZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgwYzExZTMKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5lZGl0L3NyYy9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvZWRpdC9wcm92aWRlci9JVmlzaWJpbGl0eU92ZXJsYXlJbWFnZS5qYXZhCkBAIC0wLDAgKzEsMjggQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyAqIENvcHlyaWdodCAoYykgMjAxMSBBdG9zLg0KKyAqDQorICoNCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQorICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCisgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqDQorICogQ29udHJpYnV0b3JzOg0KKyAqICAgQXRvcyAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbg0KKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCitwYWNrYWdlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5lZGl0LnByb3ZpZGVyOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWRpdC5wcm92aWRlci5Db21wb3NlZEltYWdlOw0KKw0KKy8qKg0KKyAqIEludGVyZmFjZSB0aGF0IGFsbG93IGFuIEl0ZW1Qcm92aWRlciB0byBjb21wb3NlIGFuIG92ZXJsYXkgdGhhdCBoYW5kbGUNCisgKiB2aXNpYmlsaXR5IGxvZ28NCisgKg0KKyAqIEBhdXRob3IgQXJ0aHVyIERhdXNzeSA8YQ0KKyAqICAgICAgICAgaHJlZj1tYWlsdG86YXJ0aHVyLmRhdXNzeUBhdG9zLm5ldD5hcnRodXIuZGF1c3N5QGF0b3MubmV0PC9hPg0KKyAqDQorICovDQorcHVibGljIGludGVyZmFjZSBJVmlzaWJpbGl0eU92ZXJsYXlJbWFnZSB7DQorDQorCUNvbXBvc2VkSW1hZ2UgY29tcG9zZVZpc2liaWxpdHlJbWFnZShPYmplY3Qgb2JqZWN0LCBDb21wb3NlZEltYWdlIGNvbXBvc2VkSW1hZ2UpOw0KK30NCmRpZmYgLS1naXQgYS9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5lZGl0L3NyYy9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvZWRpdC9wcm92aWRlci9TeXNNTEl0ZW1Qcm92aWRlckFkYXB0ZXIuamF2YSBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmVkaXQvc3JjL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9lZGl0L3Byb3ZpZGVyL1N5c01MSXRlbVByb3ZpZGVyQWRhcHRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBmNDkyYmYKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5lZGl0L3NyYy9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvZWRpdC9wcm92aWRlci9TeXNNTEl0ZW1Qcm92aWRlckFkYXB0ZXIuamF2YQpAQCAtMCwwICsxLDU0IEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisgKiBDb3B5cmlnaHQgKGMpIDIwMTEgQXRvcyBPcmlnaW4uDQorICoNCisgKg0KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCisgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCisgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICoNCisgKiBDb250cmlidXRvcnM6DQorICogICBBdG9zIE9yaWdpbiAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbg0KKyAqDQorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KK3BhY2thZ2Ugb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmVkaXQucHJvdmlkZXI7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jb21tb24ubm90aWZ5LkFkYXB0ZXJGYWN0b3J5Ow0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWRpdC5wcm92aWRlci5Db21wb3NlZEltYWdlOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWRpdC5wcm92aWRlci5JdGVtUHJvdmlkZXJBZGFwdGVyOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS51bWwyLnVtbC5OYW1lZEVsZW1lbnQ7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnVtbDIudW1sLmVkaXQuVU1MRWRpdFBsdWdpbjsNCisNCisvKioNCisgKiBFeHRlbmRzIG9yZy5lY2xpcHNlLmVtZi5lZGl0LnByb3ZpZGVyLkl0ZW1Qcm92aWRlckFkYXB0ZXIgaW4gb3JkZXIgdG8NCisgKiBpbXBsZW1lbnQgc3BlY2lmaWMgU3lzTUwgaXRlbVByb3ZpZGVyIGZvbmN0aW9ucw0KKyAqDQorICogQGF1dGhvciAiQXJ0aHVyIERhdXNzeSA8YSBocmVmPSJtYWlsdG86YXJ0aHVyLmRhdXNzeUBhdG9zLm5ldA0KKyAqICAgICAgICAgIj5hcnRodXIuZGF1c3N5QGF0b3MubmV0PC9hPiINCisgKg0KKyAqLw0KK3B1YmxpYyBjbGFzcyBTeXNNTEl0ZW1Qcm92aWRlckFkYXB0ZXIgZXh0ZW5kcyBJdGVtUHJvdmlkZXJBZGFwdGVyIGltcGxlbWVudHMgSVZpc2liaWxpdHlPdmVybGF5SW1hZ2Ugew0KKw0KKwlwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgRlVMTF9PVlIxNl9WSVNJQklMSVRZX0tJTkQgPSAiZnVsbC9vdnIxNi9WaXNpYmlsaXR5S2luZF8iOyAvLyROT04tTkxTLTEkDQorDQorCXB1YmxpYyBTeXNNTEl0ZW1Qcm92aWRlckFkYXB0ZXIoQWRhcHRlckZhY3RvcnkgYWRhcHRlckZhY3RvcnkpIHsNCisJCXN1cGVyKGFkYXB0ZXJGYWN0b3J5KTsNCisJfQ0KKw0KKwkvKioNCisJICogQ29tcG9zZSB0aGUgaW1hZ2Ugd2l0aCBzcGVjaWZpYyB2aXNpYmlsaXR5IGxvZ28gQ29waWVkIGZyb20gVU1MDQorCSAqIGltcGxlbWVudGF0aW9uDQorCSAqDQorCSAqIEBwYXJhbSBvYmplY3QNCisJICogQHBhcmFtIGNvbXBvc2VkSW1hZ2UNCisJICogQHJldHVybiB7QGxpbmsgQ29tcG9zZWRJbWFnZX0NCisJICovDQorCXB1YmxpYyBDb21wb3NlZEltYWdlIGNvbXBvc2VWaXNpYmlsaXR5SW1hZ2UoT2JqZWN0IG9iamVjdCwgQ29tcG9zZWRJbWFnZSBjb21wb3NlZEltYWdlKSB7DQorCQlOYW1lZEVsZW1lbnQgbmFtZWRFbGVtZW50ID0gKE5hbWVkRWxlbWVudCkgb2JqZWN0Ow0KKwkJaWYgKG5hbWVkRWxlbWVudC5pc1NldFZpc2liaWxpdHkoKSkgew0KKwkJCWNvbXBvc2VkSW1hZ2UuZ2V0SW1hZ2VzKCkuYWRkKFVNTEVkaXRQbHVnaW4uSU5TVEFOQ0UuZ2V0SW1hZ2UoRlVMTF9PVlIxNl9WSVNJQklMSVRZX0tJTkQNCisJCQkJCSsgbmFtZWRFbGVtZW50LmdldFZpc2liaWxpdHkoKS5nZXROYW1lKCkpKTsNCisJCX0NCisJCXJldHVybiBjb21wb3NlZEltYWdlOw0KKwl9DQorfQ0KZGlmZiAtLWdpdCBhL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnNlcnZpY2UudHlwZXMudGVzdHMvLmNsYXNzcGF0aCBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnNlcnZpY2UudHlwZXMudGVzdHMvLmNsYXNzcGF0aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZDFhNDMwCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuc2VydmljZS50eXBlcy50ZXN0cy8uY2xhc3NwYXRoCkBAIC0wLDAgKzEsNyBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4NCis8Y2xhc3NwYXRoPg0KKwk8Y2xhc3NwYXRoZW50cnkga2luZD0iY29uIiBwYXRoPSJvcmcuZWNsaXBzZS5qZHQubGF1bmNoaW5nLkpSRV9DT05UQUlORVIvb3JnLmVjbGlwc2UuamR0LmludGVybmFsLmRlYnVnLnVpLmxhdW5jaGVyLlN0YW5kYXJkVk1UeXBlL0oyU0UtMS41Ii8+DQorCTxjbGFzc3BhdGhlbnRyeSBraW5kPSJjb24iIHBhdGg9Im9yZy5lY2xpcHNlLnBkZS5jb3JlLnJlcXVpcmVkUGx1Z2lucyIvPg0KKwk8Y2xhc3NwYXRoZW50cnkga2luZD0ic3JjIiBwYXRoPSJzcmMiLz4NCisJPGNsYXNzcGF0aGVudHJ5IGtpbmQ9Im91dHB1dCIgcGF0aD0iYmluIi8+DQorPC9jbGFzc3BhdGg+DQpkaWZmIC0tZ2l0IGEvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuc2VydmljZS50eXBlcy50ZXN0cy8ucHJvamVjdCBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnNlcnZpY2UudHlwZXMudGVzdHMvLnByb2plY3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDI1M2MwZQotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnNlcnZpY2UudHlwZXMudGVzdHMvLnByb2plY3QKQEAgLTAsMCArMSwyOCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4NCis8cHJvamVjdERlc2NyaXB0aW9uPg0KKwk8bmFtZT5vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuc2VydmljZS50eXBlcy50ZXN0czwvbmFtZT4NCisJPGNvbW1lbnQ+PC9jb21tZW50Pg0KKwk8cHJvamVjdHM+DQorCTwvcHJvamVjdHM+DQorCTxidWlsZFNwZWM+DQorCQk8YnVpbGRDb21tYW5kPg0KKwkJCTxuYW1lPm9yZy5lY2xpcHNlLmpkdC5jb3JlLmphdmFidWlsZGVyPC9uYW1lPg0KKwkJCTxhcmd1bWVudHM+DQorCQkJPC9hcmd1bWVudHM+DQorCQk8L2J1aWxkQ29tbWFuZD4NCisJCTxidWlsZENvbW1hbmQ+DQorCQkJPG5hbWU+b3JnLmVjbGlwc2UucGRlLk1hbmlmZXN0QnVpbGRlcjwvbmFtZT4NCisJCQk8YXJndW1lbnRzPg0KKwkJCTwvYXJndW1lbnRzPg0KKwkJPC9idWlsZENvbW1hbmQ+DQorCQk8YnVpbGRDb21tYW5kPg0KKwkJCTxuYW1lPm9yZy5lY2xpcHNlLnBkZS5TY2hlbWFCdWlsZGVyPC9uYW1lPg0KKwkJCTxhcmd1bWVudHM+DQorCQkJPC9hcmd1bWVudHM+DQorCQk8L2J1aWxkQ29tbWFuZD4NCisJPC9idWlsZFNwZWM+DQorCTxuYXR1cmVzPg0KKwkJPG5hdHVyZT5vcmcuZWNsaXBzZS5wZGUuUGx1Z2luTmF0dXJlPC9uYXR1cmU+DQorCQk8bmF0dXJlPm9yZy5lY2xpcHNlLmpkdC5jb3JlLmphdmFuYXR1cmU8L25hdHVyZT4NCisJPC9uYXR1cmVzPg0KKzwvcHJvamVjdERlc2NyaXB0aW9uPg0KZGlmZiAtLWdpdCBhL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnNlcnZpY2UudHlwZXMudGVzdHMvLnNldHRpbmdzL29yZy5lY2xpcHNlLmpkdC5jb3JlLnByZWZzIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuc2VydmljZS50eXBlcy50ZXN0cy8uc2V0dGluZ3Mvb3JnLmVjbGlwc2UuamR0LmNvcmUucHJlZnMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDc1OTk0NwotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnNlcnZpY2UudHlwZXMudGVzdHMvLnNldHRpbmdzL29yZy5lY2xpcHNlLmpkdC5jb3JlLnByZWZzCkBAIC0wLDAgKzEsMjkxIEBACitlY2xpcHNlLnByZWZlcmVuY2VzLnZlcnNpb249MQ0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLmNvZGVnZW4uaW5saW5lSnNyQnl0ZWNvZGU9ZW5hYmxlZA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLmNvZGVnZW4udGFyZ2V0UGxhdGZvcm09MS41DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIuY29tcGxpYW5jZT0xLjUNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLmFzc2VydElkZW50aWZpZXI9ZXJyb3INCitvcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLmVudW1JZGVudGlmaWVyPWVycm9yDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIuc291cmNlPTEuNQ0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5hbGlnbl90eXBlX21lbWJlcnNfb25fY29sdW1ucz1mYWxzZQ0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5hbGlnbm1lbnRfZm9yX2FyZ3VtZW50c19pbl9hbGxvY2F0aW9uX2V4cHJlc3Npb249MTYNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuYWxpZ25tZW50X2Zvcl9hcmd1bWVudHNfaW5fYW5ub3RhdGlvbj0wDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmFsaWdubWVudF9mb3JfYXJndW1lbnRzX2luX2VudW1fY29uc3RhbnQ9MTYNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuYWxpZ25tZW50X2Zvcl9hcmd1bWVudHNfaW5fZXhwbGljaXRfY29uc3RydWN0b3JfY2FsbD0xNg0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5hbGlnbm1lbnRfZm9yX2FyZ3VtZW50c19pbl9tZXRob2RfaW52b2NhdGlvbj0xNg0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5hbGlnbm1lbnRfZm9yX2FyZ3VtZW50c19pbl9xdWFsaWZpZWRfYWxsb2NhdGlvbl9leHByZXNzaW9uPTE2DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmFsaWdubWVudF9mb3JfYXNzaWdubWVudD0wDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmFsaWdubWVudF9mb3JfYmluYXJ5X2V4cHJlc3Npb249MTYNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuYWxpZ25tZW50X2Zvcl9jb21wYWN0X2lmPTE2DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmFsaWdubWVudF9mb3JfY29uZGl0aW9uYWxfZXhwcmVzc2lvbj04MA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5hbGlnbm1lbnRfZm9yX2VudW1fY29uc3RhbnRzPTANCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuYWxpZ25tZW50X2Zvcl9leHByZXNzaW9uc19pbl9hcnJheV9pbml0aWFsaXplcj0xNg0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5hbGlnbm1lbnRfZm9yX21ldGhvZF9kZWNsYXJhdGlvbj0wDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmFsaWdubWVudF9mb3JfbXVsdGlwbGVfZmllbGRzPTE2DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmFsaWdubWVudF9mb3JfcGFyYW1ldGVyc19pbl9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbj0xNg0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5hbGlnbm1lbnRfZm9yX3BhcmFtZXRlcnNfaW5fbWV0aG9kX2RlY2xhcmF0aW9uPTE2DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmFsaWdubWVudF9mb3JfcmVzb3VyY2VzX2luX3RyeT04MA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5hbGlnbm1lbnRfZm9yX3NlbGVjdG9yX2luX21ldGhvZF9pbnZvY2F0aW9uPTE2DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmFsaWdubWVudF9mb3Jfc3VwZXJjbGFzc19pbl90eXBlX2RlY2xhcmF0aW9uPTE2DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmFsaWdubWVudF9mb3Jfc3VwZXJpbnRlcmZhY2VzX2luX2VudW1fZGVjbGFyYXRpb249MTYNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuYWxpZ25tZW50X2Zvcl9zdXBlcmludGVyZmFjZXNfaW5fdHlwZV9kZWNsYXJhdGlvbj0xNg0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5hbGlnbm1lbnRfZm9yX3Rocm93c19jbGF1c2VfaW5fY29uc3RydWN0b3JfZGVjbGFyYXRpb249MTYNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuYWxpZ25tZW50X2Zvcl90aHJvd3NfY2xhdXNlX2luX21ldGhvZF9kZWNsYXJhdGlvbj0xNg0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5hbGlnbm1lbnRfZm9yX3VuaW9uX3R5cGVfaW5fbXVsdGljYXRjaD0xNg0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5ibGFua19saW5lc19hZnRlcl9pbXBvcnRzPTENCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuYmxhbmtfbGluZXNfYWZ0ZXJfcGFja2FnZT0xDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmJsYW5rX2xpbmVzX2JlZm9yZV9maWVsZD0wDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmJsYW5rX2xpbmVzX2JlZm9yZV9maXJzdF9jbGFzc19ib2R5X2RlY2xhcmF0aW9uPTANCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuYmxhbmtfbGluZXNfYmVmb3JlX2ltcG9ydHM9MQ0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5ibGFua19saW5lc19iZWZvcmVfbWVtYmVyX3R5cGU9MQ0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5ibGFua19saW5lc19iZWZvcmVfbWV0aG9kPTENCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuYmxhbmtfbGluZXNfYmVmb3JlX25ld19jaHVuaz0xDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmJsYW5rX2xpbmVzX2JlZm9yZV9wYWNrYWdlPTANCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuYmxhbmtfbGluZXNfYmV0d2Vlbl9pbXBvcnRfZ3JvdXBzPTENCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuYmxhbmtfbGluZXNfYmV0d2Vlbl90eXBlX2RlY2xhcmF0aW9ucz0xDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmJyYWNlX3Bvc2l0aW9uX2Zvcl9hbm5vdGF0aW9uX3R5cGVfZGVjbGFyYXRpb249ZW5kX29mX2xpbmUNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuYnJhY2VfcG9zaXRpb25fZm9yX2Fub255bW91c190eXBlX2RlY2xhcmF0aW9uPWVuZF9vZl9saW5lDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmJyYWNlX3Bvc2l0aW9uX2Zvcl9hcnJheV9pbml0aWFsaXplcj1lbmRfb2ZfbGluZQ0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5icmFjZV9wb3NpdGlvbl9mb3JfYmxvY2s9ZW5kX29mX2xpbmUNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuYnJhY2VfcG9zaXRpb25fZm9yX2Jsb2NrX2luX2Nhc2U9ZW5kX29mX2xpbmUNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuYnJhY2VfcG9zaXRpb25fZm9yX2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uPWVuZF9vZl9saW5lDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmJyYWNlX3Bvc2l0aW9uX2Zvcl9lbnVtX2NvbnN0YW50PWVuZF9vZl9saW5lDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmJyYWNlX3Bvc2l0aW9uX2Zvcl9lbnVtX2RlY2xhcmF0aW9uPWVuZF9vZl9saW5lDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmJyYWNlX3Bvc2l0aW9uX2Zvcl9sYW1iZGFfYm9keT1lbmRfb2ZfbGluZQ0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5icmFjZV9wb3NpdGlvbl9mb3JfbWV0aG9kX2RlY2xhcmF0aW9uPWVuZF9vZl9saW5lDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmJyYWNlX3Bvc2l0aW9uX2Zvcl9zd2l0Y2g9ZW5kX29mX2xpbmUNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuYnJhY2VfcG9zaXRpb25fZm9yX3R5cGVfZGVjbGFyYXRpb249ZW5kX29mX2xpbmUNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuY29tbWVudC5jbGVhcl9ibGFua19saW5lc19pbl9ibG9ja19jb21tZW50PWZhbHNlDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmNvbW1lbnQuY2xlYXJfYmxhbmtfbGluZXNfaW5famF2YWRvY19jb21tZW50PWZhbHNlDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmNvbW1lbnQuZm9ybWF0X2Jsb2NrX2NvbW1lbnRzPXRydWUNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuY29tbWVudC5mb3JtYXRfaGVhZGVyPWZhbHNlDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmNvbW1lbnQuZm9ybWF0X2h0bWw9dHJ1ZQ0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5jb21tZW50LmZvcm1hdF9qYXZhZG9jX2NvbW1lbnRzPXRydWUNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuY29tbWVudC5mb3JtYXRfbGluZV9jb21tZW50cz10cnVlDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmNvbW1lbnQuZm9ybWF0X3NvdXJjZV9jb2RlPXRydWUNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuY29tbWVudC5pbmRlbnRfcGFyYW1ldGVyX2Rlc2NyaXB0aW9uPXRydWUNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuY29tbWVudC5pbmRlbnRfcm9vdF90YWdzPXRydWUNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuY29tbWVudC5pbnNlcnRfbmV3X2xpbmVfYmVmb3JlX3Jvb3RfdGFncz1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuY29tbWVudC5pbnNlcnRfbmV3X2xpbmVfZm9yX3BhcmFtZXRlcj1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuY29tbWVudC5saW5lX2xlbmd0aD0yNjANCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuY29tbWVudC5uZXdfbGluZXNfYXRfYmxvY2tfYm91bmRhcmllcz10cnVlDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmNvbW1lbnQubmV3X2xpbmVzX2F0X2phdmFkb2NfYm91bmRhcmllcz10cnVlDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmNvbW1lbnQucHJlc2VydmVfd2hpdGVfc3BhY2VfYmV0d2Vlbl9jb2RlX2FuZF9saW5lX2NvbW1lbnRzPWZhbHNlDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmNvbXBhY3RfZWxzZV9pZj10cnVlDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmNvbnRpbnVhdGlvbl9pbmRlbnRhdGlvbj0yDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmNvbnRpbnVhdGlvbl9pbmRlbnRhdGlvbl9mb3JfYXJyYXlfaW5pdGlhbGl6ZXI9Mg0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5kaXNhYmxpbmdfdGFnPUBmb3JtYXR0ZXJcOm9mZg0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5lbmFibGluZ190YWc9QGZvcm1hdHRlclw6b24NCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuZm9ybWF0X2d1YXJkaWFuX2NsYXVzZV9vbl9vbmVfbGluZT1mYWxzZQ0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5mb3JtYXRfbGluZV9jb21tZW50X3N0YXJ0aW5nX29uX2ZpcnN0X2NvbHVtbj10cnVlDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluZGVudF9ib2R5X2RlY2xhcmF0aW9uc19jb21wYXJlX3RvX2Fubm90YXRpb25fZGVjbGFyYXRpb25faGVhZGVyPXRydWUNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5kZW50X2JvZHlfZGVjbGFyYXRpb25zX2NvbXBhcmVfdG9fZW51bV9jb25zdGFudF9oZWFkZXI9dHJ1ZQ0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbmRlbnRfYm9keV9kZWNsYXJhdGlvbnNfY29tcGFyZV90b19lbnVtX2RlY2xhcmF0aW9uX2hlYWRlcj10cnVlDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluZGVudF9ib2R5X2RlY2xhcmF0aW9uc19jb21wYXJlX3RvX3R5cGVfaGVhZGVyPXRydWUNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5kZW50X2JyZWFrc19jb21wYXJlX3RvX2Nhc2VzPXRydWUNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5kZW50X2VtcHR5X2xpbmVzPWZhbHNlDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluZGVudF9zdGF0ZW1lbnRzX2NvbXBhcmVfdG9fYmxvY2s9dHJ1ZQ0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbmRlbnRfc3RhdGVtZW50c19jb21wYXJlX3RvX2JvZHk9dHJ1ZQ0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbmRlbnRfc3dpdGNoc3RhdGVtZW50c19jb21wYXJlX3RvX2Nhc2VzPXRydWUNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5kZW50X3N3aXRjaHN0YXRlbWVudHNfY29tcGFyZV90b19zd2l0Y2g9ZmFsc2UNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5kZW50YXRpb24uc2l6ZT00DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9uZXdfbGluZV9hZnRlcl9hbm5vdGF0aW9uX29uX2ZpZWxkPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfbmV3X2xpbmVfYWZ0ZXJfYW5ub3RhdGlvbl9vbl9sb2NhbF92YXJpYWJsZT1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X25ld19saW5lX2FmdGVyX2Fubm90YXRpb25fb25fbWV0aG9kPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfbmV3X2xpbmVfYWZ0ZXJfYW5ub3RhdGlvbl9vbl9wYWNrYWdlPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfbmV3X2xpbmVfYWZ0ZXJfYW5ub3RhdGlvbl9vbl9wYXJhbWV0ZXI9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfbmV3X2xpbmVfYWZ0ZXJfYW5ub3RhdGlvbl9vbl90eXBlPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfbmV3X2xpbmVfYWZ0ZXJfbGFiZWw9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfbmV3X2xpbmVfYWZ0ZXJfb3BlbmluZ19icmFjZV9pbl9hcnJheV9pbml0aWFsaXplcj1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9uZXdfbGluZV9hZnRlcl90eXBlX2Fubm90YXRpb249ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfbmV3X2xpbmVfYXRfZW5kX29mX2ZpbGVfaWZfbWlzc2luZz1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9uZXdfbGluZV9iZWZvcmVfY2F0Y2hfaW5fdHJ5X3N0YXRlbWVudD1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9uZXdfbGluZV9iZWZvcmVfY2xvc2luZ19icmFjZV9pbl9hcnJheV9pbml0aWFsaXplcj1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9uZXdfbGluZV9iZWZvcmVfZWxzZV9pbl9pZl9zdGF0ZW1lbnQ9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfbmV3X2xpbmVfYmVmb3JlX2ZpbmFsbHlfaW5fdHJ5X3N0YXRlbWVudD1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9uZXdfbGluZV9iZWZvcmVfd2hpbGVfaW5fZG9fc3RhdGVtZW50PWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X25ld19saW5lX2luX2VtcHR5X2Fubm90YXRpb25fZGVjbGFyYXRpb249aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9uZXdfbGluZV9pbl9lbXB0eV9hbm9ueW1vdXNfdHlwZV9kZWNsYXJhdGlvbj1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X25ld19saW5lX2luX2VtcHR5X2Jsb2NrPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfbmV3X2xpbmVfaW5fZW1wdHlfZW51bV9jb25zdGFudD1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X25ld19saW5lX2luX2VtcHR5X2VudW1fZGVjbGFyYXRpb249aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9uZXdfbGluZV9pbl9lbXB0eV9tZXRob2RfYm9keT1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X25ld19saW5lX2luX2VtcHR5X3R5cGVfZGVjbGFyYXRpb249aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9hbmRfaW5fdHlwZV9wYXJhbWV0ZXI9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9hc3NpZ25tZW50X29wZXJhdG9yPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfYXRfaW5fYW5ub3RhdGlvbj1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9hdF9pbl9hbm5vdGF0aW9uX3R5cGVfZGVjbGFyYXRpb249ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfYmluYXJ5X29wZXJhdG9yPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfY2xvc2luZ19hbmdsZV9icmFja2V0X2luX3R5cGVfYXJndW1lbnRzPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfY2xvc2luZ19hbmdsZV9icmFja2V0X2luX3R5cGVfcGFyYW1ldGVycz1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX2Nsb3NpbmdfYnJhY2VfaW5fYmxvY2s9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9jbG9zaW5nX3BhcmVuX2luX2Nhc3Q9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9jb2xvbl9pbl9hc3NlcnQ9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9jb2xvbl9pbl9jYXNlPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfY29sb25faW5fY29uZGl0aW9uYWw9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9jb2xvbl9pbl9mb3I9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9jb2xvbl9pbl9sYWJlbGVkX3N0YXRlbWVudD1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX2NvbW1hX2luX2FsbG9jYXRpb25fZXhwcmVzc2lvbj1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX2NvbW1hX2luX2Fubm90YXRpb249aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9jb21tYV9pbl9hcnJheV9pbml0aWFsaXplcj1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX2NvbW1hX2luX2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uX3BhcmFtZXRlcnM9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9jb21tYV9pbl9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbl90aHJvd3M9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9jb21tYV9pbl9lbnVtX2NvbnN0YW50X2FyZ3VtZW50cz1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX2NvbW1hX2luX2VudW1fZGVjbGFyYXRpb25zPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfY29tbWFfaW5fZXhwbGljaXRjb25zdHJ1Y3RvcmNhbGxfYXJndW1lbnRzPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfY29tbWFfaW5fZm9yX2luY3JlbWVudHM9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9jb21tYV9pbl9mb3JfaW5pdHM9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9jb21tYV9pbl9tZXRob2RfZGVjbGFyYXRpb25fcGFyYW1ldGVycz1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX2NvbW1hX2luX21ldGhvZF9kZWNsYXJhdGlvbl90aHJvd3M9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9jb21tYV9pbl9tZXRob2RfaW52b2NhdGlvbl9hcmd1bWVudHM9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9jb21tYV9pbl9tdWx0aXBsZV9maWVsZF9kZWNsYXJhdGlvbnM9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9jb21tYV9pbl9tdWx0aXBsZV9sb2NhbF9kZWNsYXJhdGlvbnM9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9jb21tYV9pbl9wYXJhbWV0ZXJpemVkX3R5cGVfcmVmZXJlbmNlPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfY29tbWFfaW5fc3VwZXJpbnRlcmZhY2VzPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfY29tbWFfaW5fdHlwZV9hcmd1bWVudHM9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9jb21tYV9pbl90eXBlX3BhcmFtZXRlcnM9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9lbGxpcHNpcz1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX2xhbWJkYV9hcnJvdz1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX29wZW5pbmdfYW5nbGVfYnJhY2tldF9pbl9wYXJhbWV0ZXJpemVkX3R5cGVfcmVmZXJlbmNlPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX29wZW5pbmdfYW5nbGVfYnJhY2tldF9pbl90eXBlX2FyZ3VtZW50cz1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9vcGVuaW5nX2FuZ2xlX2JyYWNrZXRfaW5fdHlwZV9wYXJhbWV0ZXJzPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX29wZW5pbmdfYnJhY2VfaW5fYXJyYXlfaW5pdGlhbGl6ZXI9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9vcGVuaW5nX2JyYWNrZXRfaW5fYXJyYXlfYWxsb2NhdGlvbl9leHByZXNzaW9uPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX29wZW5pbmdfYnJhY2tldF9pbl9hcnJheV9yZWZlcmVuY2U9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfb3BlbmluZ19wYXJlbl9pbl9hbm5vdGF0aW9uPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX29wZW5pbmdfcGFyZW5faW5fY2FzdD1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9vcGVuaW5nX3BhcmVuX2luX2NhdGNoPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX29wZW5pbmdfcGFyZW5faW5fY29uc3RydWN0b3JfZGVjbGFyYXRpb249ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfb3BlbmluZ19wYXJlbl9pbl9lbnVtX2NvbnN0YW50PWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX29wZW5pbmdfcGFyZW5faW5fZm9yPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX29wZW5pbmdfcGFyZW5faW5faWY9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfb3BlbmluZ19wYXJlbl9pbl9tZXRob2RfZGVjbGFyYXRpb249ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfb3BlbmluZ19wYXJlbl9pbl9tZXRob2RfaW52b2NhdGlvbj1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9vcGVuaW5nX3BhcmVuX2luX3BhcmVudGhlc2l6ZWRfZXhwcmVzc2lvbj1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9vcGVuaW5nX3BhcmVuX2luX3N3aXRjaD1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9vcGVuaW5nX3BhcmVuX2luX3N5bmNocm9uaXplZD1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9vcGVuaW5nX3BhcmVuX2luX3RyeT1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9vcGVuaW5nX3BhcmVuX2luX3doaWxlPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX3Bvc3RmaXhfb3BlcmF0b3I9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfcHJlZml4X29wZXJhdG9yPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX3F1ZXN0aW9uX2luX2NvbmRpdGlvbmFsPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfcXVlc3Rpb25faW5fd2lsZGNhcmQ9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfc2VtaWNvbG9uX2luX2Zvcj1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX3NlbWljb2xvbl9pbl90cnlfcmVzb3VyY2VzPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfdW5hcnlfb3BlcmF0b3I9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2FuZF9pbl90eXBlX3BhcmFtZXRlcj1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9hc3NpZ25tZW50X29wZXJhdG9yPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2F0X2luX2Fubm90YXRpb25fdHlwZV9kZWNsYXJhdGlvbj1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9iaW5hcnlfb3BlcmF0b3I9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfY2xvc2luZ19hbmdsZV9icmFja2V0X2luX3BhcmFtZXRlcml6ZWRfdHlwZV9yZWZlcmVuY2U9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2Nsb3NpbmdfYW5nbGVfYnJhY2tldF9pbl90eXBlX2FyZ3VtZW50cz1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfY2xvc2luZ19hbmdsZV9icmFja2V0X2luX3R5cGVfcGFyYW1ldGVycz1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfY2xvc2luZ19icmFjZV9pbl9hcnJheV9pbml0aWFsaXplcj1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9jbG9zaW5nX2JyYWNrZXRfaW5fYXJyYXlfYWxsb2NhdGlvbl9leHByZXNzaW9uPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9jbG9zaW5nX2JyYWNrZXRfaW5fYXJyYXlfcmVmZXJlbmNlPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9jbG9zaW5nX3BhcmVuX2luX2Fubm90YXRpb249ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2Nsb3NpbmdfcGFyZW5faW5fY2FzdD1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfY2xvc2luZ19wYXJlbl9pbl9jYXRjaD1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfY2xvc2luZ19wYXJlbl9pbl9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbj1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfY2xvc2luZ19wYXJlbl9pbl9lbnVtX2NvbnN0YW50PWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9jbG9zaW5nX3BhcmVuX2luX2Zvcj1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfY2xvc2luZ19wYXJlbl9pbl9pZj1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfY2xvc2luZ19wYXJlbl9pbl9tZXRob2RfZGVjbGFyYXRpb249ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2Nsb3NpbmdfcGFyZW5faW5fbWV0aG9kX2ludm9jYXRpb249ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2Nsb3NpbmdfcGFyZW5faW5fcGFyZW50aGVzaXplZF9leHByZXNzaW9uPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9jbG9zaW5nX3BhcmVuX2luX3N3aXRjaD1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfY2xvc2luZ19wYXJlbl9pbl9zeW5jaHJvbml6ZWQ9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2Nsb3NpbmdfcGFyZW5faW5fdHJ5PWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9jbG9zaW5nX3BhcmVuX2luX3doaWxlPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9jb2xvbl9pbl9hc3NlcnQ9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfY29sb25faW5fY2FzZT1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfY29sb25faW5fY29uZGl0aW9uYWw9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfY29sb25faW5fZGVmYXVsdD1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfY29sb25faW5fZm9yPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2NvbG9uX2luX2xhYmVsZWRfc3RhdGVtZW50PWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9jb21tYV9pbl9hbGxvY2F0aW9uX2V4cHJlc3Npb249ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2NvbW1hX2luX2Fubm90YXRpb249ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2NvbW1hX2luX2FycmF5X2luaXRpYWxpemVyPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9jb21tYV9pbl9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbl9wYXJhbWV0ZXJzPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9jb21tYV9pbl9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbl90aHJvd3M9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2NvbW1hX2luX2VudW1fY29uc3RhbnRfYXJndW1lbnRzPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9jb21tYV9pbl9lbnVtX2RlY2xhcmF0aW9ucz1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfY29tbWFfaW5fZXhwbGljaXRjb25zdHJ1Y3RvcmNhbGxfYXJndW1lbnRzPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9jb21tYV9pbl9mb3JfaW5jcmVtZW50cz1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfY29tbWFfaW5fZm9yX2luaXRzPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9jb21tYV9pbl9tZXRob2RfZGVjbGFyYXRpb25fcGFyYW1ldGVycz1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfY29tbWFfaW5fbWV0aG9kX2RlY2xhcmF0aW9uX3Rocm93cz1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfY29tbWFfaW5fbWV0aG9kX2ludm9jYXRpb25fYXJndW1lbnRzPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9jb21tYV9pbl9tdWx0aXBsZV9maWVsZF9kZWNsYXJhdGlvbnM9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2NvbW1hX2luX211bHRpcGxlX2xvY2FsX2RlY2xhcmF0aW9ucz1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfY29tbWFfaW5fcGFyYW1ldGVyaXplZF90eXBlX3JlZmVyZW5jZT1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfY29tbWFfaW5fc3VwZXJpbnRlcmZhY2VzPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9jb21tYV9pbl90eXBlX2FyZ3VtZW50cz1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfY29tbWFfaW5fdHlwZV9wYXJhbWV0ZXJzPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9lbGxpcHNpcz1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfbGFtYmRhX2Fycm93PWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX29wZW5pbmdfYW5nbGVfYnJhY2tldF9pbl9wYXJhbWV0ZXJpemVkX3R5cGVfcmVmZXJlbmNlPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9vcGVuaW5nX2FuZ2xlX2JyYWNrZXRfaW5fdHlwZV9hcmd1bWVudHM9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX29wZW5pbmdfYW5nbGVfYnJhY2tldF9pbl90eXBlX3BhcmFtZXRlcnM9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX29wZW5pbmdfYnJhY2VfaW5fYW5ub3RhdGlvbl90eXBlX2RlY2xhcmF0aW9uPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX29wZW5pbmdfYnJhY2VfaW5fYW5vbnltb3VzX3R5cGVfZGVjbGFyYXRpb249aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfb3BlbmluZ19icmFjZV9pbl9hcnJheV9pbml0aWFsaXplcj1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9vcGVuaW5nX2JyYWNlX2luX2Jsb2NrPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX29wZW5pbmdfYnJhY2VfaW5fY29uc3RydWN0b3JfZGVjbGFyYXRpb249aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfb3BlbmluZ19icmFjZV9pbl9lbnVtX2NvbnN0YW50PWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX29wZW5pbmdfYnJhY2VfaW5fZW51bV9kZWNsYXJhdGlvbj1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9vcGVuaW5nX2JyYWNlX2luX21ldGhvZF9kZWNsYXJhdGlvbj1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9vcGVuaW5nX2JyYWNlX2luX3N3aXRjaD1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9vcGVuaW5nX2JyYWNlX2luX3R5cGVfZGVjbGFyYXRpb249aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfb3BlbmluZ19icmFja2V0X2luX2FycmF5X2FsbG9jYXRpb25fZXhwcmVzc2lvbj1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfb3BlbmluZ19icmFja2V0X2luX2FycmF5X3JlZmVyZW5jZT1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfb3BlbmluZ19icmFja2V0X2luX2FycmF5X3R5cGVfcmVmZXJlbmNlPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9vcGVuaW5nX3BhcmVuX2luX2Fubm90YXRpb249ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX29wZW5pbmdfcGFyZW5faW5fYW5ub3RhdGlvbl90eXBlX21lbWJlcl9kZWNsYXJhdGlvbj1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfb3BlbmluZ19wYXJlbl9pbl9jYXRjaD1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9vcGVuaW5nX3BhcmVuX2luX2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9vcGVuaW5nX3BhcmVuX2luX2VudW1fY29uc3RhbnQ9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX29wZW5pbmdfcGFyZW5faW5fZm9yPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX29wZW5pbmdfcGFyZW5faW5faWY9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfb3BlbmluZ19wYXJlbl9pbl9tZXRob2RfZGVjbGFyYXRpb249ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX29wZW5pbmdfcGFyZW5faW5fbWV0aG9kX2ludm9jYXRpb249ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX29wZW5pbmdfcGFyZW5faW5fcGFyZW50aGVzaXplZF9leHByZXNzaW9uPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9vcGVuaW5nX3BhcmVuX2luX3N3aXRjaD1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9vcGVuaW5nX3BhcmVuX2luX3N5bmNocm9uaXplZD1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9vcGVuaW5nX3BhcmVuX2luX3RyeT1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9vcGVuaW5nX3BhcmVuX2luX3doaWxlPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX3BhcmVudGhlc2l6ZWRfZXhwcmVzc2lvbl9pbl9yZXR1cm49aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfcGFyZW50aGVzaXplZF9leHByZXNzaW9uX2luX3Rocm93PWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX3Bvc3RmaXhfb3BlcmF0b3I9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX3ByZWZpeF9vcGVyYXRvcj1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfcXVlc3Rpb25faW5fY29uZGl0aW9uYWw9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfcXVlc3Rpb25faW5fd2lsZGNhcmQ9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX3NlbWljb2xvbj1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfc2VtaWNvbG9uX2luX2Zvcj1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfc2VtaWNvbG9uX2luX3RyeV9yZXNvdXJjZXM9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX3VuYXJ5X29wZXJhdG9yPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JldHdlZW5fYnJhY2tldHNfaW5fYXJyYXlfdHlwZV9yZWZlcmVuY2U9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmV0d2Vlbl9lbXB0eV9icmFjZXNfaW5fYXJyYXlfaW5pdGlhbGl6ZXI9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmV0d2Vlbl9lbXB0eV9icmFja2V0c19pbl9hcnJheV9hbGxvY2F0aW9uX2V4cHJlc3Npb249ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmV0d2Vlbl9lbXB0eV9wYXJlbnNfaW5fYW5ub3RhdGlvbl90eXBlX21lbWJlcl9kZWNsYXJhdGlvbj1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZXR3ZWVuX2VtcHR5X3BhcmVuc19pbl9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbj1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZXR3ZWVuX2VtcHR5X3BhcmVuc19pbl9lbnVtX2NvbnN0YW50PWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JldHdlZW5fZW1wdHlfcGFyZW5zX2luX21ldGhvZF9kZWNsYXJhdGlvbj1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZXR3ZWVuX2VtcHR5X3BhcmVuc19pbl9tZXRob2RfaW52b2NhdGlvbj1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmpvaW5fbGluZXNfaW5fY29tbWVudHM9ZmFsc2UNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuam9pbl93cmFwcGVkX2xpbmVzPWZhbHNlDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmtlZXBfZWxzZV9zdGF0ZW1lbnRfb25fc2FtZV9saW5lPWZhbHNlDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmtlZXBfZW1wdHlfYXJyYXlfaW5pdGlhbGl6ZXJfb25fb25lX2xpbmU9ZmFsc2UNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIua2VlcF9pbXBsZV9pZl9vbl9vbmVfbGluZT1mYWxzZQ0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5rZWVwX3RoZW5fc3RhdGVtZW50X29uX3NhbWVfbGluZT1mYWxzZQ0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5saW5lU3BsaXQ9MjYwDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLm5ldmVyX2luZGVudF9ibG9ja19jb21tZW50c19vbl9maXJzdF9jb2x1bW49ZmFsc2UNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIubmV2ZXJfaW5kZW50X2xpbmVfY29tbWVudHNfb25fZmlyc3RfY29sdW1uPWZhbHNlDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLm51bWJlcl9vZl9ibGFua19saW5lc19hdF9iZWdpbm5pbmdfb2ZfbWV0aG9kX2JvZHk9MA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5udW1iZXJfb2ZfZW1wdHlfbGluZXNfdG9fcHJlc2VydmU9NQ0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5wdXRfZW1wdHlfc3RhdGVtZW50X29uX25ld19saW5lPXRydWUNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIudGFidWxhdGlvbi5jaGFyPXRhYg0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci50YWJ1bGF0aW9uLnNpemU9NA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci51c2Vfb25fb2ZmX3RhZ3M9ZmFsc2UNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIudXNlX3RhYnNfb25seV9mb3JfbGVhZGluZ19pbmRlbnRhdGlvbnM9ZmFsc2UNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIud3JhcF9iZWZvcmVfYmluYXJ5X29wZXJhdG9yPXRydWUNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIud3JhcF9iZWZvcmVfb3Jfb3BlcmF0b3JfbXVsdGljYXRjaD10cnVlDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLndyYXBfb3V0ZXJfZXhwcmVzc2lvbnNfd2hlbl9uZXN0ZWQ9dHJ1ZQ0KZGlmZiAtLWdpdCBhL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnNlcnZpY2UudHlwZXMudGVzdHMvLnNldHRpbmdzL29yZy5lY2xpcHNlLmpkdC51aS5wcmVmcyBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnNlcnZpY2UudHlwZXMudGVzdHMvLnNldHRpbmdzL29yZy5lY2xpcHNlLmpkdC51aS5wcmVmcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMWQ3MDRiCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuc2VydmljZS50eXBlcy50ZXN0cy8uc2V0dGluZ3Mvb3JnLmVjbGlwc2UuamR0LnVpLnByZWZzCkBAIC0wLDAgKzEsNjggQEAKK2NsZWFudXAuYWRkX2RlZmF1bHRfc2VyaWFsX3ZlcnNpb25faWQ9dHJ1ZQ0KK2NsZWFudXAuYWRkX2dlbmVyYXRlZF9zZXJpYWxfdmVyc2lvbl9pZD1mYWxzZQ0KK2NsZWFudXAuYWRkX21pc3NpbmdfYW5ub3RhdGlvbnM9dHJ1ZQ0KK2NsZWFudXAuYWRkX21pc3NpbmdfZGVwcmVjYXRlZF9hbm5vdGF0aW9ucz10cnVlDQorY2xlYW51cC5hZGRfbWlzc2luZ19tZXRob2RzPWZhbHNlDQorY2xlYW51cC5hZGRfbWlzc2luZ19ubHNfdGFncz1mYWxzZQ0KK2NsZWFudXAuYWRkX21pc3Npbmdfb3ZlcnJpZGVfYW5ub3RhdGlvbnM9dHJ1ZQ0KK2NsZWFudXAuYWRkX21pc3Npbmdfb3ZlcnJpZGVfYW5ub3RhdGlvbnNfaW50ZXJmYWNlX21ldGhvZHM9dHJ1ZQ0KK2NsZWFudXAuYWRkX3NlcmlhbF92ZXJzaW9uX2lkPWZhbHNlDQorY2xlYW51cC5hbHdheXNfdXNlX2Jsb2Nrcz10cnVlDQorY2xlYW51cC5hbHdheXNfdXNlX3BhcmVudGhlc2VzX2luX2V4cHJlc3Npb25zPWZhbHNlDQorY2xlYW51cC5hbHdheXNfdXNlX3RoaXNfZm9yX25vbl9zdGF0aWNfZmllbGRfYWNjZXNzPWZhbHNlDQorY2xlYW51cC5hbHdheXNfdXNlX3RoaXNfZm9yX25vbl9zdGF0aWNfbWV0aG9kX2FjY2Vzcz1mYWxzZQ0KK2NsZWFudXAuY29udmVydF9mdW5jdGlvbmFsX2ludGVyZmFjZXM9ZmFsc2UNCitjbGVhbnVwLmNvbnZlcnRfdG9fZW5oYW5jZWRfZm9yX2xvb3A9ZmFsc2UNCitjbGVhbnVwLmNvcnJlY3RfaW5kZW50YXRpb249ZmFsc2UNCitjbGVhbnVwLmZvcm1hdF9zb3VyY2VfY29kZT1mYWxzZQ0KK2NsZWFudXAuZm9ybWF0X3NvdXJjZV9jb2RlX2NoYW5nZXNfb25seT1mYWxzZQ0KK2NsZWFudXAuaW5zZXJ0X2luZmVycmVkX3R5cGVfYXJndW1lbnRzPWZhbHNlDQorY2xlYW51cC5tYWtlX2xvY2FsX3ZhcmlhYmxlX2ZpbmFsPXRydWUNCitjbGVhbnVwLm1ha2VfcGFyYW1ldGVyc19maW5hbD1mYWxzZQ0KK2NsZWFudXAubWFrZV9wcml2YXRlX2ZpZWxkc19maW5hbD10cnVlDQorY2xlYW51cC5tYWtlX3R5cGVfYWJzdHJhY3RfaWZfbWlzc2luZ19tZXRob2Q9ZmFsc2UNCitjbGVhbnVwLm1ha2VfdmFyaWFibGVfZGVjbGFyYXRpb25zX2ZpbmFsPWZhbHNlDQorY2xlYW51cC5uZXZlcl91c2VfYmxvY2tzPWZhbHNlDQorY2xlYW51cC5uZXZlcl91c2VfcGFyZW50aGVzZXNfaW5fZXhwcmVzc2lvbnM9dHJ1ZQ0KK2NsZWFudXAub3JnYW5pemVfaW1wb3J0cz1mYWxzZQ0KK2NsZWFudXAucXVhbGlmeV9zdGF0aWNfZmllbGRfYWNjZXNzZXNfd2l0aF9kZWNsYXJpbmdfY2xhc3M9ZmFsc2UNCitjbGVhbnVwLnF1YWxpZnlfc3RhdGljX21lbWJlcl9hY2Nlc3Nlc190aHJvdWdoX2luc3RhbmNlc193aXRoX2RlY2xhcmluZ19jbGFzcz10cnVlDQorY2xlYW51cC5xdWFsaWZ5X3N0YXRpY19tZW1iZXJfYWNjZXNzZXNfdGhyb3VnaF9zdWJ0eXBlc193aXRoX2RlY2xhcmluZ19jbGFzcz10cnVlDQorY2xlYW51cC5xdWFsaWZ5X3N0YXRpY19tZW1iZXJfYWNjZXNzZXNfd2l0aF9kZWNsYXJpbmdfY2xhc3M9dHJ1ZQ0KK2NsZWFudXAucXVhbGlmeV9zdGF0aWNfbWV0aG9kX2FjY2Vzc2VzX3dpdGhfZGVjbGFyaW5nX2NsYXNzPWZhbHNlDQorY2xlYW51cC5yZW1vdmVfcHJpdmF0ZV9jb25zdHJ1Y3RvcnM9dHJ1ZQ0KK2NsZWFudXAucmVtb3ZlX3JlZHVuZGFudF90eXBlX2FyZ3VtZW50cz10cnVlDQorY2xlYW51cC5yZW1vdmVfdHJhaWxpbmdfd2hpdGVzcGFjZXM9dHJ1ZQ0KK2NsZWFudXAucmVtb3ZlX3RyYWlsaW5nX3doaXRlc3BhY2VzX2FsbD10cnVlDQorY2xlYW51cC5yZW1vdmVfdHJhaWxpbmdfd2hpdGVzcGFjZXNfaWdub3JlX2VtcHR5PWZhbHNlDQorY2xlYW51cC5yZW1vdmVfdW5uZWNlc3NhcnlfY2FzdHM9dHJ1ZQ0KK2NsZWFudXAucmVtb3ZlX3VubmVjZXNzYXJ5X25sc190YWdzPXRydWUNCitjbGVhbnVwLnJlbW92ZV91bnVzZWRfaW1wb3J0cz10cnVlDQorY2xlYW51cC5yZW1vdmVfdW51c2VkX2xvY2FsX3ZhcmlhYmxlcz1mYWxzZQ0KK2NsZWFudXAucmVtb3ZlX3VudXNlZF9wcml2YXRlX2ZpZWxkcz10cnVlDQorY2xlYW51cC5yZW1vdmVfdW51c2VkX3ByaXZhdGVfbWVtYmVycz1mYWxzZQ0KK2NsZWFudXAucmVtb3ZlX3VudXNlZF9wcml2YXRlX21ldGhvZHM9dHJ1ZQ0KK2NsZWFudXAucmVtb3ZlX3VudXNlZF9wcml2YXRlX3R5cGVzPXRydWUNCitjbGVhbnVwLnNvcnRfbWVtYmVycz1mYWxzZQ0KK2NsZWFudXAuc29ydF9tZW1iZXJzX2FsbD1mYWxzZQ0KK2NsZWFudXAudXNlX2Fub255bW91c19jbGFzc19jcmVhdGlvbj1mYWxzZQ0KK2NsZWFudXAudXNlX2Jsb2Nrcz10cnVlDQorY2xlYW51cC51c2VfYmxvY2tzX29ubHlfZm9yX3JldHVybl9hbmRfdGhyb3c9ZmFsc2UNCitjbGVhbnVwLnVzZV9sYW1iZGE9dHJ1ZQ0KK2NsZWFudXAudXNlX3BhcmVudGhlc2VzX2luX2V4cHJlc3Npb25zPWZhbHNlDQorY2xlYW51cC51c2VfdGhpc19mb3Jfbm9uX3N0YXRpY19maWVsZF9hY2Nlc3M9ZmFsc2UNCitjbGVhbnVwLnVzZV90aGlzX2Zvcl9ub25fc3RhdGljX2ZpZWxkX2FjY2Vzc19vbmx5X2lmX25lY2Vzc2FyeT10cnVlDQorY2xlYW51cC51c2VfdGhpc19mb3Jfbm9uX3N0YXRpY19tZXRob2RfYWNjZXNzPWZhbHNlDQorY2xlYW51cC51c2VfdGhpc19mb3Jfbm9uX3N0YXRpY19tZXRob2RfYWNjZXNzX29ubHlfaWZfbmVjZXNzYXJ5PXRydWUNCitjbGVhbnVwLnVzZV90eXBlX2FyZ3VtZW50cz1mYWxzZQ0KK2NsZWFudXBfcHJvZmlsZT1fUGFweXJ1cw0KK2NsZWFudXBfc2V0dGluZ3NfdmVyc2lvbj0yDQorZWNsaXBzZS5wcmVmZXJlbmNlcy52ZXJzaW9uPTENCitmb3JtYXR0ZXJfcHJvZmlsZT1fUGFweXJ1cw0KK2Zvcm1hdHRlcl9zZXR0aW5nc192ZXJzaW9uPTEyDQorb3JnLmVjbGlwc2UuamR0LnVpLmlnbm9yZWxvd2VyY2FzZW5hbWVzPXRydWUNCitvcmcuZWNsaXBzZS5qZHQudWkuaW1wb3J0b3JkZXI9amF2YTtqYXZheDtvcmc7Y29tOw0KK29yZy5lY2xpcHNlLmpkdC51aS5qYXZhZG9jPXRydWUNCitvcmcuZWNsaXBzZS5qZHQudWkub25kZW1hbmR0aHJlc2hvbGQ9OTkNCitvcmcuZWNsaXBzZS5qZHQudWkuc3RhdGljb25kZW1hbmR0aHJlc2hvbGQ9OTkNCitvcmcuZWNsaXBzZS5qZHQudWkudGV4dC5jdXN0b21fY29kZV90ZW1wbGF0ZXM9PD94bWwgdmVyc2lvblw9IjEuMCIgZW5jb2RpbmdcPSJVVEYtOCIgc3RhbmRhbG9uZVw9Im5vIj8+PHRlbXBsYXRlcz48dGVtcGxhdGUgYXV0b2luc2VydFw9InRydWUiIGNvbnRleHRcPSJnZXR0ZXJjb21tZW50X2NvbnRleHQiIGRlbGV0ZWRcPSJmYWxzZSIgZGVzY3JpcHRpb25cPSJDb21tZW50IGZvciBnZXR0ZXIgbWV0aG9kIiBlbmFibGVkXD0idHJ1ZSIgaWRcPSJvcmcuZWNsaXBzZS5qZHQudWkudGV4dC5jb2RldGVtcGxhdGVzLmdldHRlcmNvbW1lbnQiIG5hbWVcPSJnZXR0ZXJjb21tZW50Ij4vKipcbiAqIEByZXR1cm4gdGhlICR7YmFyZV9maWVsZF9uYW1lfVxuICovPC90ZW1wbGF0ZT48dGVtcGxhdGUgYXV0b2luc2VydFw9InRydWUiIGNvbnRleHRcPSJzZXR0ZXJjb21tZW50X2NvbnRleHQiIGRlbGV0ZWRcPSJmYWxzZSIgZGVzY3JpcHRpb25cPSJDb21tZW50IGZvciBzZXR0ZXIgbWV0aG9kIiBlbmFibGVkXD0idHJ1ZSIgaWRcPSJvcmcuZWNsaXBzZS5qZHQudWkudGV4dC5jb2RldGVtcGxhdGVzLnNldHRlcmNvbW1lbnQiIG5hbWVcPSJzZXR0ZXJjb21tZW50Ij4vKipcbiAqIEBwYXJhbSAke3BhcmFtfSB0aGUgJHtiYXJlX2ZpZWxkX25hbWV9IHRvIHNldFxuICovPC90ZW1wbGF0ZT48dGVtcGxhdGUgYXV0b2luc2VydFw9ImZhbHNlIiBjb250ZXh0XD0iY29uc3RydWN0b3Jjb21tZW50X2NvbnRleHQiIGRlbGV0ZWRcPSJmYWxzZSIgZGVzY3JpcHRpb25cPSJDb21tZW50IGZvciBjcmVhdGVkIGNvbnN0cnVjdG9ycyIgZW5hYmxlZFw9InRydWUiIGlkXD0ib3JnLmVjbGlwc2UuamR0LnVpLnRleHQuY29kZXRlbXBsYXRlcy5jb25zdHJ1Y3RvcmNvbW1lbnQiIG5hbWVcPSJjb25zdHJ1Y3RvcmNvbW1lbnQiPi8qKlxuICogQ29uc3RydWN0b3IuXG4gKlxuICogJHt0YWdzfVxuICovPC90ZW1wbGF0ZT48dGVtcGxhdGUgYXV0b2luc2VydFw9ImZhbHNlIiBjb250ZXh0XD0iZmlsZWNvbW1lbnRfY29udGV4dCIgZGVsZXRlZFw9ImZhbHNlIiBkZXNjcmlwdGlvblw9IkNvbW1lbnQgZm9yIGNyZWF0ZWQgSmF2YSBmaWxlcyIgZW5hYmxlZFw9InRydWUiIGlkXD0ib3JnLmVjbGlwc2UuamR0LnVpLnRleHQuY29kZXRlbXBsYXRlcy5maWxlY29tbWVudCIgbmFtZVw9ImZpbGVjb21tZW50Ij4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAqIENvcHlyaWdodCAoYykgJHt5ZWFyfSBDRUEgTElTVCBhbmQgb3RoZXJzLlxuICogXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzXG4gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjBcbiAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0XG4gKiBodHRwXDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWxcbiAqXG4gKiBDb250cmlidXRvcnNcOlxuICogICBDRUEgTElTVCAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvblxuICogICBcbiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbjwvdGVtcGxhdGU+PHRlbXBsYXRlIGF1dG9pbnNlcnRcPSJ0cnVlIiBjb250ZXh0XD0idHlwZWNvbW1lbnRfY29udGV4dCIgZGVsZXRlZFw9ImZhbHNlIiBkZXNjcmlwdGlvblw9IkNvbW1lbnQgZm9yIGNyZWF0ZWQgdHlwZXMiIGVuYWJsZWRcPSJ0cnVlIiBpZFw9Im9yZy5lY2xpcHNlLmpkdC51aS50ZXh0LmNvZGV0ZW1wbGF0ZXMudHlwZWNvbW1lbnQiIG5hbWVcPSJ0eXBlY29tbWVudCI+LyoqXG4gKiBAYXV0aG9yICR7dXNlcn1cbiAqXG4gKiAke3RhZ3N9XG4gKi88L3RlbXBsYXRlPjx0ZW1wbGF0ZSBhdXRvaW5zZXJ0XD0idHJ1ZSIgY29udGV4dFw9ImZpZWxkY29tbWVudF9jb250ZXh0IiBkZWxldGVkXD0iZmFsc2UiIGRlc2NyaXB0aW9uXD0iQ29tbWVudCBmb3IgZmllbGRzIiBlbmFibGVkXD0idHJ1ZSIgaWRcPSJvcmcuZWNsaXBzZS5qZHQudWkudGV4dC5jb2RldGVtcGxhdGVzLmZpZWxkY29tbWVudCIgbmFtZVw9ImZpZWxkY29tbWVudCI+LyoqXG4gKiBcbiAqLzwvdGVtcGxhdGU+PHRlbXBsYXRlIGF1dG9pbnNlcnRcPSJ0cnVlIiBjb250ZXh0XD0ibWV0aG9kY29tbWVudF9jb250ZXh0IiBkZWxldGVkXD0iZmFsc2UiIGRlc2NyaXB0aW9uXD0iQ29tbWVudCBmb3Igbm9uLW92ZXJyaWRpbmcgbWV0aG9kcyIgZW5hYmxlZFw9InRydWUiIGlkXD0ib3JnLmVjbGlwc2UuamR0LnVpLnRleHQuY29kZXRlbXBsYXRlcy5tZXRob2Rjb21tZW50IiBuYW1lXD0ibWV0aG9kY29tbWVudCI+LyoqXG4gKiAke3RhZ3N9XG4gKi88L3RlbXBsYXRlPjx0ZW1wbGF0ZSBhdXRvaW5zZXJ0XD0iZmFsc2UiIGNvbnRleHRcPSJvdmVycmlkZWNvbW1lbnRfY29udGV4dCIgZGVsZXRlZFw9ImZhbHNlIiBkZXNjcmlwdGlvblw9IkNvbW1lbnQgZm9yIG92ZXJyaWRpbmcgbWV0aG9kcyIgZW5hYmxlZFw9InRydWUiIGlkXD0ib3JnLmVjbGlwc2UuamR0LnVpLnRleHQuY29kZXRlbXBsYXRlcy5vdmVycmlkZWNvbW1lbnQiIG5hbWVcPSJvdmVycmlkZWNvbW1lbnQiPi8qKlxuICogJHtzZWVfdG9fb3ZlcnJpZGRlbn1cbiAqXG4gKiAke3RhZ3N9XG4gKi88L3RlbXBsYXRlPjx0ZW1wbGF0ZSBhdXRvaW5zZXJ0XD0iZmFsc2UiIGNvbnRleHRcPSJkZWxlZ2F0ZWNvbW1lbnRfY29udGV4dCIgZGVsZXRlZFw9ImZhbHNlIiBkZXNjcmlwdGlvblw9IkNvbW1lbnQgZm9yIGRlbGVnYXRlIG1ldGhvZHMiIGVuYWJsZWRcPSJ0cnVlIiBpZFw9Im9yZy5lY2xpcHNlLmpkdC51aS50ZXh0LmNvZGV0ZW1wbGF0ZXMuZGVsZWdhdGVjb21tZW50IiBuYW1lXD0iZGVsZWdhdGVjb21tZW50Ij4vKipcbiAqICR7c2VlX3RvX3RhcmdldH1cbiAqXG4gKiAke3RhZ3N9XG4gKi88L3RlbXBsYXRlPjx0ZW1wbGF0ZSBhdXRvaW5zZXJ0XD0idHJ1ZSIgY29udGV4dFw9Im5ld3R5cGVfY29udGV4dCIgZGVsZXRlZFw9ImZhbHNlIiBkZXNjcmlwdGlvblw9Ik5ld2x5IGNyZWF0ZWQgZmlsZXMiIGVuYWJsZWRcPSJ0cnVlIiBpZFw9Im9yZy5lY2xpcHNlLmpkdC51aS50ZXh0LmNvZGV0ZW1wbGF0ZXMubmV3dHlwZSIgbmFtZVw9Im5ld3R5cGUiPiR7ZmlsZWNvbW1lbnR9XG4ke3BhY2thZ2VfZGVjbGFyYXRpb259XG5cbiR7dHlwZWNvbW1lbnR9XG4ke3R5cGVfZGVjbGFyYXRpb259PC90ZW1wbGF0ZT48dGVtcGxhdGUgYXV0b2luc2VydFw9InRydWUiIGNvbnRleHRcPSJjbGFzc2JvZHlfY29udGV4dCIgZGVsZXRlZFw9ImZhbHNlIiBkZXNjcmlwdGlvblw9IkNvZGUgaW4gbmV3IGNsYXNzIHR5cGUgYm9kaWVzIiBlbmFibGVkXD0idHJ1ZSIgaWRcPSJvcmcuZWNsaXBzZS5qZHQudWkudGV4dC5jb2RldGVtcGxhdGVzLmNsYXNzYm9keSIgbmFtZVw9ImNsYXNzYm9keSI+XG48L3RlbXBsYXRlPjx0ZW1wbGF0ZSBhdXRvaW5zZXJ0XD0idHJ1ZSIgY29udGV4dFw9ImludGVyZmFjZWJvZHlfY29udGV4dCIgZGVsZXRlZFw9ImZhbHNlIiBkZXNjcmlwdGlvblw9IkNvZGUgaW4gbmV3IGludGVyZmFjZSB0eXBlIGJvZGllcyIgZW5hYmxlZFw9InRydWUiIGlkXD0ib3JnLmVjbGlwc2UuamR0LnVpLnRleHQuY29kZXRlbXBsYXRlcy5pbnRlcmZhY2Vib2R5IiBuYW1lXD0iaW50ZXJmYWNlYm9keSI+XG48L3RlbXBsYXRlPjx0ZW1wbGF0ZSBhdXRvaW5zZXJ0XD0idHJ1ZSIgY29udGV4dFw9ImVudW1ib2R5X2NvbnRleHQiIGRlbGV0ZWRcPSJmYWxzZSIgZGVzY3JpcHRpb25cPSJDb2RlIGluIG5ldyBlbnVtIHR5cGUgYm9kaWVzIiBlbmFibGVkXD0idHJ1ZSIgaWRcPSJvcmcuZWNsaXBzZS5qZHQudWkudGV4dC5jb2RldGVtcGxhdGVzLmVudW1ib2R5IiBuYW1lXD0iZW51bWJvZHkiPlxuPC90ZW1wbGF0ZT48dGVtcGxhdGUgYXV0b2luc2VydFw9InRydWUiIGNvbnRleHRcPSJhbm5vdGF0aW9uYm9keV9jb250ZXh0IiBkZWxldGVkXD0iZmFsc2UiIGRlc2NyaXB0aW9uXD0iQ29kZSBpbiBuZXcgYW5ub3RhdGlvbiB0eXBlIGJvZGllcyIgZW5hYmxlZFw9InRydWUiIGlkXD0ib3JnLmVjbGlwc2UuamR0LnVpLnRleHQuY29kZXRlbXBsYXRlcy5hbm5vdGF0aW9uYm9keSIgbmFtZVw9ImFubm90YXRpb25ib2R5Ij5cbjwvdGVtcGxhdGU+PHRlbXBsYXRlIGF1dG9pbnNlcnRcPSJ0cnVlIiBjb250ZXh0XD0iY2F0Y2hibG9ja19jb250ZXh0IiBkZWxldGVkXD0iZmFsc2UiIGRlc2NyaXB0aW9uXD0iQ29kZSBpbiBuZXcgY2F0Y2ggYmxvY2tzIiBlbmFibGVkXD0idHJ1ZSIgaWRcPSJvcmcuZWNsaXBzZS5qZHQudWkudGV4dC5jb2RldGVtcGxhdGVzLmNhdGNoYmxvY2siIG5hbWVcPSJjYXRjaGJsb2NrIj4vLyAke3RvZG99IEF1dG8tZ2VuZXJhdGVkIGNhdGNoIGJsb2NrXG4ke2V4Y2VwdGlvbl92YXJ9LnByaW50U3RhY2tUcmFjZSgpOzwvdGVtcGxhdGU+PHRlbXBsYXRlIGF1dG9pbnNlcnRcPSJ0cnVlIiBjb250ZXh0XD0ibWV0aG9kYm9keV9jb250ZXh0IiBkZWxldGVkXD0iZmFsc2UiIGRlc2NyaXB0aW9uXD0iQ29kZSBpbiBjcmVhdGVkIG1ldGhvZCBzdHVicyIgZW5hYmxlZFw9InRydWUiIGlkXD0ib3JnLmVjbGlwc2UuamR0LnVpLnRleHQuY29kZXRlbXBsYXRlcy5tZXRob2Rib2R5IiBuYW1lXD0ibWV0aG9kYm9keSI+Ly8gJHt0b2RvfSBBdXRvLWdlbmVyYXRlZCBtZXRob2Qgc3R1YlxuJHtib2R5X3N0YXRlbWVudH08L3RlbXBsYXRlPjx0ZW1wbGF0ZSBhdXRvaW5zZXJ0XD0idHJ1ZSIgY29udGV4dFw9ImNvbnN0cnVjdG9yYm9keV9jb250ZXh0IiBkZWxldGVkXD0iZmFsc2UiIGRlc2NyaXB0aW9uXD0iQ29kZSBpbiBjcmVhdGVkIGNvbnN0cnVjdG9yIHN0dWJzIiBlbmFibGVkXD0idHJ1ZSIgaWRcPSJvcmcuZWNsaXBzZS5qZHQudWkudGV4dC5jb2RldGVtcGxhdGVzLmNvbnN0cnVjdG9yYm9keSIgbmFtZVw9ImNvbnN0cnVjdG9yYm9keSI+JHtib2R5X3N0YXRlbWVudH1cbi8vICR7dG9kb30gQXV0by1nZW5lcmF0ZWQgY29uc3RydWN0b3Igc3R1YjwvdGVtcGxhdGU+PHRlbXBsYXRlIGF1dG9pbnNlcnRcPSJ0cnVlIiBjb250ZXh0XD0iZ2V0dGVyYm9keV9jb250ZXh0IiBkZWxldGVkXD0iZmFsc2UiIGRlc2NyaXB0aW9uXD0iQ29kZSBpbiBjcmVhdGVkIGdldHRlcnMiIGVuYWJsZWRcPSJ0cnVlIiBpZFw9Im9yZy5lY2xpcHNlLmpkdC51aS50ZXh0LmNvZGV0ZW1wbGF0ZXMuZ2V0dGVyYm9keSIgbmFtZVw9ImdldHRlcmJvZHkiPnJldHVybiAke2ZpZWxkfTs8L3RlbXBsYXRlPjx0ZW1wbGF0ZSBhdXRvaW5zZXJ0XD0idHJ1ZSIgY29udGV4dFw9InNldHRlcmJvZHlfY29udGV4dCIgZGVsZXRlZFw9ImZhbHNlIiBkZXNjcmlwdGlvblw9IkNvZGUgaW4gY3JlYXRlZCBzZXR0ZXJzIiBlbmFibGVkXD0idHJ1ZSIgaWRcPSJvcmcuZWNsaXBzZS5qZHQudWkudGV4dC5jb2RldGVtcGxhdGVzLnNldHRlcmJvZHkiIG5hbWVcPSJzZXR0ZXJib2R5Ij4ke2ZpZWxkfSBcPSAke3BhcmFtfTs8L3RlbXBsYXRlPjwvdGVtcGxhdGVzPg0KZGlmZiAtLWdpdCBhL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnNlcnZpY2UudHlwZXMudGVzdHMvTUVUQS1JTkYvTUFOSUZFU1QuTUYgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5zZXJ2aWNlLnR5cGVzLnRlc3RzL01FVEEtSU5GL01BTklGRVNULk1GCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMzNjI4NTMKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5zZXJ2aWNlLnR5cGVzLnRlc3RzL01FVEEtSU5GL01BTklGRVNULk1GCkBAIC0wLDAgKzEsMTMgQEAKK01hbmlmZXN0LVZlcnNpb246IDEuMA0KK0ZyYWdtZW50LUhvc3Q6IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5zZXJ2aWNlLnR5cGVzO2J1bmRsZS12ZXJzaW9uPSIwLjcuMCINCitFeHBvcnQtUGFja2FnZTogb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnNlcnZpY2UudHlwZXMudGVzdHMNCitCdW5kbGUtVmVuZG9yOiAlcHJvdmlkZXJOYW1lDQorQnVuZGxlLVZlcnNpb246IDAuNy4wLnF1YWxpZmllcg0KK0J1bmRsZS1OYW1lOiAlcGx1Z2luTmFtZQ0KK0J1bmRsZS1Mb2NhbGl6YXRpb246IHBsdWdpbg0KK0J1bmRsZS1NYW5pZmVzdFZlcnNpb246IDINCitCdW5kbGUtU3ltYm9saWNOYW1lOiBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuc2VydmljZS50eXBlcy50ZXN0cw0KK0J1bmRsZS1SZXF1aXJlZEV4ZWN1dGlvbkVudmlyb25tZW50OiBKMlNFLTEuNQ0KK1JlcXVpcmUtQnVuZGxlOiBvcmcuanVuaXQsDQorIG9yZy5lY2xpcHNlLnBhcHlydXMuaW5mcmEuc2VydmljZXMuZWRpdA0KKw0KZGlmZiAtLWdpdCBhL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnNlcnZpY2UudHlwZXMudGVzdHMvYWJvdXQuaHRtbCBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnNlcnZpY2UudHlwZXMudGVzdHMvYWJvdXQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MmQ0OWJmCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuc2VydmljZS50eXBlcy50ZXN0cy9hYm91dC5odG1sCkBAIC0wLDAgKzEsMjggQEAKKzwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgWEhUTUwgMS4wIFN0cmljdC8vRU4iDQorICAgICJodHRwOi8vd3d3LnczLm9yZy9UUi94aHRtbDEvRFREL3hodG1sMS1zdHJpY3QuZHRkIj4NCis8aHRtbCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCI+DQorPGhlYWQ+DQorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9SVNPLTg4NTktMSIvPg0KKzx0aXRsZT5BYm91dDwvdGl0bGU+DQorPC9oZWFkPg0KKzxib2R5IGxhbmc9IkVOLVVTIj4NCis8aDI+QWJvdXQgVGhpcyBDb250ZW50PC9oMj4NCisgDQorPHA+SnVuZSA1LCAyMDA3PC9wPgkNCis8aDM+TGljZW5zZTwvaDM+DQorDQorPHA+VGhlIEVjbGlwc2UgRm91bmRhdGlvbiBtYWtlcyBhdmFpbGFibGUgYWxsIGNvbnRlbnQgaW4gdGhpcyBwbHVnLWluICgmcXVvdDtDb250ZW50JnF1b3Q7KS4gIFVubGVzcyBvdGhlcndpc2UgDQoraW5kaWNhdGVkIGJlbG93LCB0aGUgQ29udGVudCBpcyBwcm92aWRlZCB0byB5b3UgdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZQ0KK0VjbGlwc2UgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAxLjAgKCZxdW90O0VQTCZxdW90OykuICBBIGNvcHkgb2YgdGhlIEVQTCBpcyBhdmFpbGFibGUgDQorYXQgPGEgaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwiPmh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sPC9hPi4NCitGb3IgcHVycG9zZXMgb2YgdGhlIEVQTCwgJnF1b3Q7UHJvZ3JhbSZxdW90OyB3aWxsIG1lYW4gdGhlIENvbnRlbnQuPC9wPg0KKw0KKzxwPklmIHlvdSBkaWQgbm90IHJlY2VpdmUgdGhpcyBDb250ZW50IGRpcmVjdGx5IGZyb20gdGhlIEVjbGlwc2UgRm91bmRhdGlvbiwgdGhlIENvbnRlbnQgaXMgDQorYmVpbmcgcmVkaXN0cmlidXRlZCBieSBhbm90aGVyIHBhcnR5ICgmcXVvdDtSZWRpc3RyaWJ1dG9yJnF1b3Q7KSBhbmQgZGlmZmVyZW50IHRlcm1zIGFuZCBjb25kaXRpb25zIG1heQ0KK2FwcGx5IHRvIHlvdXIgdXNlIG9mIGFueSBvYmplY3QgY29kZSBpbiB0aGUgQ29udGVudC4gIENoZWNrIHRoZSBSZWRpc3RyaWJ1dG9yJ3MgbGljZW5zZSB0aGF0IHdhcyANCitwcm92aWRlZCB3aXRoIHRoZSBDb250ZW50LiAgSWYgbm8gc3VjaCBsaWNlbnNlIGV4aXN0cywgY29udGFjdCB0aGUgUmVkaXN0cmlidXRvci4gIFVubGVzcyBvdGhlcndpc2UNCitpbmRpY2F0ZWQgYmVsb3csIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgRVBMIHN0aWxsIGFwcGx5IHRvIGFueSBzb3VyY2UgY29kZSBpbiB0aGUgQ29udGVudA0KK2FuZCBzdWNoIHNvdXJjZSBjb2RlIG1heSBiZSBvYnRhaW5lZCBhdCA8YSBocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnLyI+aHR0cDovL3d3dy5lY2xpcHNlLm9yZzwvYT4uPC9wPg0KKw0KKzwvYm9keT4NCis8L2h0bWw+DQpkaWZmIC0tZ2l0IGEvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuc2VydmljZS50eXBlcy50ZXN0cy9idWlsZC5wcm9wZXJ0aWVzIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuc2VydmljZS50eXBlcy50ZXN0cy9idWlsZC5wcm9wZXJ0aWVzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFiMDhmODQKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5zZXJ2aWNlLnR5cGVzLnRlc3RzL2J1aWxkLnByb3BlcnRpZXMKQEAgLTAsMCArMSw3IEBACitzb3VyY2UuLiA9IHNyYy8NCitvdXRwdXQuLiA9IGJpbi8NCitiaW4uaW5jbHVkZXMgPSBNRVRBLUlORi8sXA0KKyAgICAgICAgICAgICAgIC4sXA0KKyAgICAgICAgICAgICAgIGFib3V0Lmh0bWwsXA0KKyAgICAgICAgICAgICAgIHBsdWdpbi5wcm9wZXJ0aWVzDQorc3JjLmluY2x1ZGVzID0gYWJvdXQuaHRtbA0KZGlmZiAtLWdpdCBhL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnNlcnZpY2UudHlwZXMudGVzdHMvcGx1Z2luLnByb3BlcnRpZXMgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5zZXJ2aWNlLnR5cGVzLnRlc3RzL3BsdWdpbi5wcm9wZXJ0aWVzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIwOWQ0MWEKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5zZXJ2aWNlLnR5cGVzLnRlc3RzL3BsdWdpbi5wcm9wZXJ0aWVzCkBAIC0wLDAgKzEsMTQgQEAKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KKyMgQ29weXJpZ2h0IChjKSAyMDExIENFQSBMSVNULg0KKyMgQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KKyMgYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQorIyB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KKyMgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisjDQorIyBDb250cmlidXRvcnM6DQorIw0KKyMgICAgIENFQSBMSVNUIC0gSW5pdGlhbCBBUEkgYW5kIEltcGxlbWVudGF0aW9uLg0KKyMNCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQorcGx1Z2luTmFtZT1QYXB5cnVzIFN5c01MIDEuNCBTZXJ2aWNlIFR5cGVzIFRlc3RzDQorcHJvdmlkZXJOYW1lPUVjbGlwc2UgTW9kZWxpbmcgUHJvamVjdA0KZGlmZiAtLWdpdCBhL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnNlcnZpY2UudHlwZXMudGVzdHMvcG9tLnhtbCBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnNlcnZpY2UudHlwZXMudGVzdHMvcG9tLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNDQ3NjhhCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuc2VydmljZS50eXBlcy50ZXN0cy9wb20ueG1sCkBAIC0wLDAgKzEsMTIgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+DQorPHByb2plY3QgeHNpOnNjaGVtYUxvY2F0aW9uPSJodHRwOi8vbWF2ZW4uYXBhY2hlLm9yZy9QT00vNC4wLjAgaHR0cDovL21hdmVuLmFwYWNoZS5vcmcveHNkL21hdmVuLTQuMC4wLnhzZCIgeG1sbnM9Imh0dHA6Ly9tYXZlbi5hcGFjaGUub3JnL1BPTS80LjAuMCINCisgICAgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSI+DQorICA8bW9kZWxWZXJzaW9uPjQuMC4wPC9tb2RlbFZlcnNpb24+DQorICA8cGFyZW50Pg0KKwkJPGFydGlmYWN0SWQ+b3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbC5jb3JlPC9hcnRpZmFjdElkPg0KKwkJPGdyb3VwSWQ+b3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDwvZ3JvdXBJZD4NCisJCTx2ZXJzaW9uPjAuNy4wLVNOQVBTSE9UPC92ZXJzaW9uPg0KKyAgPC9wYXJlbnQ+DQorICA8YXJ0aWZhY3RJZD5vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuc2VydmljZS50eXBlcy50ZXN0czwvYXJ0aWZhY3RJZD4NCisgIDxwYWNrYWdpbmc+ZWNsaXBzZS10ZXN0LXBsdWdpbjwvcGFja2FnaW5nPg0KKzwvcHJvamVjdD4NCmRpZmYgLS1naXQgYS9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5zZXJ2aWNlLnR5cGVzLnRlc3RzL3NyYy9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvc2VydmljZS90eXBlcy90ZXN0cy9BbGxUZXN0cy5qYXZhIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuc2VydmljZS50eXBlcy50ZXN0cy9zcmMvb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L3NlcnZpY2UvdHlwZXMvdGVzdHMvQWxsVGVzdHMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMTM5MjI4Ci0tLSAvZGV2L251bGwKKysrIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuc2VydmljZS50eXBlcy50ZXN0cy9zcmMvb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L3NlcnZpY2UvdHlwZXMvdGVzdHMvQWxsVGVzdHMuamF2YQpAQCAtMCwwICsxLDI3IEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisgKiBDb3B5cmlnaHQgKGMpIDIwMTUgQ0VBIExJU1QuDQorICoNCisgKiAgICANCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQorICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCisgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqDQorICogQ29udHJpYnV0b3JzOg0KKyAqICBCZW5vaXQgTWFnZ2kgKENFQSBMSVNUKSBiZW5vaXQubWFnZ2lAY2VhLmZyIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uDQorICogIA0KKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCitwYWNrYWdlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5zZXJ2aWNlLnR5cGVzLnRlc3RzOw0KKw0KK2ltcG9ydCBvcmcuanVuaXQucnVubmVyLlJ1bldpdGg7DQoraW1wb3J0IG9yZy5qdW5pdC5ydW5uZXJzLlN1aXRlOw0KK2ltcG9ydCBvcmcuanVuaXQucnVubmVycy5TdWl0ZS5TdWl0ZUNsYXNzZXM7DQorDQorLyoqDQorICogTWFpbiBUZXN0IHN1aXRlLg0KKyAqLw0KK0BSdW5XaXRoKFN1aXRlLmNsYXNzKQ0KK0BTdWl0ZUNsYXNzZXMoeyBTeXNNTDE0RWxlbWVudFR5cGVzVGVzdC5jbGFzcywgfSkgDQorcHVibGljIGNsYXNzIEFsbFRlc3RzIHsNCisNCit9DQpkaWZmIC0tZ2l0IGEvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuc2VydmljZS50eXBlcy50ZXN0cy9zcmMvb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L3NlcnZpY2UvdHlwZXMvdGVzdHMvU3lzTUwxNEVsZW1lbnRUeXBlc1Rlc3QuamF2YSBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnNlcnZpY2UudHlwZXMudGVzdHMvc3JjL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9zZXJ2aWNlL3R5cGVzL3Rlc3RzL1N5c01MMTRFbGVtZW50VHlwZXNUZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjcxNTFiMwotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnNlcnZpY2UudHlwZXMudGVzdHMvc3JjL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9zZXJ2aWNlL3R5cGVzL3Rlc3RzL1N5c01MMTRFbGVtZW50VHlwZXNUZXN0LmphdmEKQEAgLTAsMCArMSw0MjEgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyAqIENvcHlyaWdodCAoYykgMjAxNSBDRUEgTElTVC4NCisgKg0KKyAqICAgIA0KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCisgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCisgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICoNCisgKiBDb250cmlidXRvcnM6DQorICogIEJlbm9pdCBNYWdnaSAoQ0VBIExJU1QpIGJlbm9pdC5tYWdnaUBjZWEuZnIgLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24NCisgKiAgDQorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KK3BhY2thZ2Ugb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnNlcnZpY2UudHlwZXMudGVzdHM7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuaW5mcmEuZWxlbWVudHR5cGVzY29uZmlndXJhdGlvbnMuRWxlbWVudFR5cGVTZXRDb25maWd1cmF0aW9uOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLmluZnJhLmVsZW1lbnR0eXBlc2NvbmZpZ3VyYXRpb25zLnJlZ2lzdHJpZXMuRWxlbWVudFR5cGVTZXRDb25maWd1cmF0aW9uUmVnaXN0cnk7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuaW5mcmEuc2VydmljZXMuZWRpdC5zZXJ2aWNlLkVsZW1lbnRFZGl0U2VydmljZVV0aWxzOw0KK2ltcG9ydCBvcmcuanVuaXQuQXNzZXJ0Ow0KK2ltcG9ydCBvcmcuanVuaXQuQmVmb3JlQ2xhc3M7DQoraW1wb3J0IG9yZy5qdW5pdC5UZXN0Ow0KKw0KKw0KKy8qKg0KKyAqIFRoaXMgY2xhc3MgaXMgdG8gY2hlY2sgYW55IGNoYW5nZSBpbiB0aGUgU3lzTUwgMS40IGVsZW1lbnQgdHlwZSBpZA0KKyAqIChzaW5jZSB0aGUgaWRzIGNhbiBiZSB1c2VkIGEgc3BlY2lhbGl6YXRpb24gdGhleSBhcmUgcGFydCBvZiBwdWJsaWMgQVBJKQ0KKyAqDQorICovDQorcHVibGljIGNsYXNzIFN5c01MMTRFbGVtZW50VHlwZXNUZXN0IHsNCisNCisJQEJlZm9yZUNsYXNzDQorCXB1YmxpYyBzdGF0aWMgdm9pZCBsb2FkU3lzbWwxNERlZmludGlvbigpIHsNCisJCUVsZW1lbnRUeXBlU2V0Q29uZmlndXJhdGlvblJlZ2lzdHJ5IGluc3RhbmNlID0gRWxlbWVudFR5cGVTZXRDb25maWd1cmF0aW9uUmVnaXN0cnkuZ2V0SW5zdGFuY2UoKTsNCisJCUVsZW1lbnRUeXBlU2V0Q29uZmlndXJhdGlvbiBlbGVtZW50VHlwZVNldENvbmZpZ3VyYXRpb24gPSBpbnN0YW5jZS5nZXRFbGVtZW50VHlwZVNldENvbmZpZ3VyYXRpb25zKCkuZ2V0KCJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuc2VydmljZS50eXBlcy5lbGVtZW50VHlwZVNldCIpOw0KKwkJQXNzZXJ0LmFzc2VydE5vdE51bGwoIlRoZSBTeXNNTCAxLjQgZWxlbWVudCB0eXBlIHNldCBkZWZpbml0aW9uIGlzIG1pc3NpbmciLCBlbGVtZW50VHlwZVNldENvbmZpZ3VyYXRpb24pOw0KKwl9DQorCQ0KKw0KKyAgICBAVGVzdA0KKwlwdWJsaWMgdm9pZCB0ZXN0UmVnaXN0cnlDb250ZW50Rm9yVmFsdWVUeXBlKCkgew0KKwkJQXNzZXJ0LmFzc2VydFRydWUoIlZhbHVlVHlwZSBlbGVtZW50IHR5cGUgbm90IGZvdW5kIGluIFN5c01MIGVsZW1lbnQgdHlwZSBzZXQgIiwgRWxlbWVudEVkaXRTZXJ2aWNlVXRpbHMuZ2V0RWRpdFNlcnZpY2VQcm92aWRlcigpLmlzS25vd25FbGVtZW50VHlwZSgib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LlZhbHVlVHlwZSIpKTsNCisJfQ0KKw0KKyAgICBAVGVzdA0KKwlwdWJsaWMgdm9pZCB0ZXN0UmVnaXN0cnlDb250ZW50Rm9yRGlzdHJpYnV0ZWRQcm9wZXJ0eSgpIHsNCisJCUFzc2VydC5hc3NlcnRUcnVlKCJEaXN0cmlidXRlZFByb3BlcnR5IGVsZW1lbnQgdHlwZSBub3QgZm91bmQgaW4gU3lzTUwgZWxlbWVudCB0eXBlIHNldCAiLCBFbGVtZW50RWRpdFNlcnZpY2VVdGlscy5nZXRFZGl0U2VydmljZVByb3ZpZGVyKCkuaXNLbm93bkVsZW1lbnRUeXBlKCJvcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuRGlzdHJpYnV0ZWRQcm9wZXJ0eSIpKTsNCisJfQ0KKw0KKyAgICBAVGVzdA0KKwlwdWJsaWMgdm9pZCB0ZXN0UmVnaXN0cnlDb250ZW50Rm9yQ29ubmVjdG9yUHJvcGVydHkoKSB7DQorCQlBc3NlcnQuYXNzZXJ0VHJ1ZSgiQ29ubmVjdG9yUHJvcGVydHkgZWxlbWVudCB0eXBlIG5vdCBmb3VuZCBpbiBTeXNNTCBlbGVtZW50IHR5cGUgc2V0ICIsIEVsZW1lbnRFZGl0U2VydmljZVV0aWxzLmdldEVkaXRTZXJ2aWNlUHJvdmlkZXIoKS5pc0tub3duRWxlbWVudFR5cGUoIm9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5Db25uZWN0b3JQcm9wZXJ0eSIpKTsNCisJfQ0KKw0KKyAgICBAVGVzdA0KKwlwdWJsaWMgdm9pZCB0ZXN0UmVnaXN0cnlDb250ZW50Rm9yUGFydGljaXBhbnRQcm9wZXJ0eSgpIHsNCisJCUFzc2VydC5hc3NlcnRUcnVlKCJQYXJ0aWNpcGFudFByb3BlcnR5IGVsZW1lbnQgdHlwZSBub3QgZm91bmQgaW4gU3lzTUwgZWxlbWVudCB0eXBlIHNldCAiLCBFbGVtZW50RWRpdFNlcnZpY2VVdGlscy5nZXRFZGl0U2VydmljZVByb3ZpZGVyKCkuaXNLbm93bkVsZW1lbnRUeXBlKCJvcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuUGFydGljaXBhbnRQcm9wZXJ0eSIpKTsNCisJfQ0KKw0KKyAgICBAVGVzdA0KKwlwdWJsaWMgdm9pZCB0ZXN0UmVnaXN0cnlDb250ZW50Rm9yQmluZGluZ0Nvbm5lY3RvcigpIHsNCisJCUFzc2VydC5hc3NlcnRUcnVlKCJCaW5kaW5nQ29ubmVjdG9yIGVsZW1lbnQgdHlwZSBub3QgZm91bmQgaW4gU3lzTUwgZWxlbWVudCB0eXBlIHNldCAiLCBFbGVtZW50RWRpdFNlcnZpY2VVdGlscy5nZXRFZGl0U2VydmljZVByb3ZpZGVyKCkuaXNLbm93bkVsZW1lbnRUeXBlKCJvcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuQmluZGluZ0Nvbm5lY3RvciIpKTsNCisJfQ0KKw0KKyAgICBAVGVzdA0KKwlwdWJsaWMgdm9pZCB0ZXN0UmVnaXN0cnlDb250ZW50Rm9yQmxvY2soKSB7DQorCQlBc3NlcnQuYXNzZXJ0VHJ1ZSgiQmxvY2sgZWxlbWVudCB0eXBlIG5vdCBmb3VuZCBpbiBTeXNNTCBlbGVtZW50IHR5cGUgc2V0ICIsIEVsZW1lbnRFZGl0U2VydmljZVV0aWxzLmdldEVkaXRTZXJ2aWNlUHJvdmlkZXIoKS5pc0tub3duRWxlbWVudFR5cGUoIm9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5CbG9jayIpKTsNCisJfQ0KKw0KKyAgICBAVGVzdA0KKwlwdWJsaWMgdm9pZCB0ZXN0UmVnaXN0cnlDb250ZW50Rm9yUHJvcGVydHlTcGVjaWZpY1R5cGUoKSB7DQorCQlBc3NlcnQuYXNzZXJ0VHJ1ZSgiUHJvcGVydHlTcGVjaWZpY1R5cGUgZWxlbWVudCB0eXBlIG5vdCBmb3VuZCBpbiBTeXNNTCBlbGVtZW50IHR5cGUgc2V0ICIsIEVsZW1lbnRFZGl0U2VydmljZVV0aWxzLmdldEVkaXRTZXJ2aWNlUHJvdmlkZXIoKS5pc0tub3duRWxlbWVudFR5cGUoIm9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5Qcm9wZXJ0eVNwZWNpZmljVHlwZSIpKTsNCisJfQ0KKw0KKyAgICBAVGVzdA0KKwlwdWJsaWMgdm9pZCB0ZXN0UmVnaXN0cnlDb250ZW50Rm9yTmVzdGVkQ29ubmVjdG9yRW5kX0Nvbm5lY3RvckVuZCgpIHsNCisJCUFzc2VydC5hc3NlcnRUcnVlKCJOZXN0ZWRDb25uZWN0b3JFbmQgQ29ubmVjdG9yRW5kIGVsZW1lbnQgdHlwZSBub3QgZm91bmQgaW4gU3lzTUwgZWxlbWVudCB0eXBlIHNldCAiLCBFbGVtZW50RWRpdFNlcnZpY2VVdGlscy5nZXRFZGl0U2VydmljZVByb3ZpZGVyKCkuaXNLbm93bkVsZW1lbnRUeXBlKCJvcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuTmVzdGVkQ29ubmVjdG9yRW5kX0Nvbm5lY3RvckVuZCIpKTsNCisJfQ0KKw0KKyAgICBAVGVzdA0KKwlwdWJsaWMgdm9pZCB0ZXN0UmVnaXN0cnlDb250ZW50Rm9yTmVzdGVkQ29ubmVjdG9yRW5kX0VsZW1lbnQoKSB7DQorCQlBc3NlcnQuYXNzZXJ0VHJ1ZSgiTmVzdGVkQ29ubmVjdG9yRW5kIEVsZW1lbnQgZWxlbWVudCB0eXBlIG5vdCBmb3VuZCBpbiBTeXNNTCBlbGVtZW50IHR5cGUgc2V0ICIsIEVsZW1lbnRFZGl0U2VydmljZVV0aWxzLmdldEVkaXRTZXJ2aWNlUHJvdmlkZXIoKS5pc0tub3duRWxlbWVudFR5cGUoIm9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5OZXN0ZWRDb25uZWN0b3JFbmRfRWxlbWVudCIpKTsNCisJfQ0KKw0KKyAgICBAVGVzdA0KKwlwdWJsaWMgdm9pZCB0ZXN0UmVnaXN0cnlDb250ZW50Rm9yRGlyZWN0ZWRSZWxhdGlvbnNoaXBQcm9wZXJ0eVBhdGgoKSB7DQorCQlBc3NlcnQuYXNzZXJ0VHJ1ZSgiRGlyZWN0ZWRSZWxhdGlvbnNoaXBQcm9wZXJ0eVBhdGggZWxlbWVudCB0eXBlIG5vdCBmb3VuZCBpbiBTeXNNTCBlbGVtZW50IHR5cGUgc2V0ICIsIEVsZW1lbnRFZGl0U2VydmljZVV0aWxzLmdldEVkaXRTZXJ2aWNlUHJvdmlkZXIoKS5pc0tub3duRWxlbWVudFR5cGUoIm9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5EaXJlY3RlZFJlbGF0aW9uc2hpcFByb3BlcnR5UGF0aCIpKTsNCisJfQ0KKw0KKyAgICBAVGVzdA0KKwlwdWJsaWMgdm9pZCB0ZXN0UmVnaXN0cnlDb250ZW50Rm9yRWxlbWVudFByb3BlcnR5UGF0aCgpIHsNCisJCUFzc2VydC5hc3NlcnRUcnVlKCJFbGVtZW50UHJvcGVydHlQYXRoIGVsZW1lbnQgdHlwZSBub3QgZm91bmQgaW4gU3lzTUwgZWxlbWVudCB0eXBlIHNldCAiLCBFbGVtZW50RWRpdFNlcnZpY2VVdGlscy5nZXRFZGl0U2VydmljZVByb3ZpZGVyKCkuaXNLbm93bkVsZW1lbnRUeXBlKCJvcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuRWxlbWVudFByb3BlcnR5UGF0aCIpKTsNCisJfQ0KKw0KKyAgICBAVGVzdA0KKwlwdWJsaWMgdm9pZCB0ZXN0UmVnaXN0cnlDb250ZW50Rm9yRW5kUGF0aE11bHRpcGxpY2l0eSgpIHsNCisJCUFzc2VydC5hc3NlcnRUcnVlKCJFbmRQYXRoTXVsdGlwbGljaXR5IGVsZW1lbnQgdHlwZSBub3QgZm91bmQgaW4gU3lzTUwgZWxlbWVudCB0eXBlIHNldCAiLCBFbGVtZW50RWRpdFNlcnZpY2VVdGlscy5nZXRFZGl0U2VydmljZVByb3ZpZGVyKCkuaXNLbm93bkVsZW1lbnRUeXBlKCJvcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuRW5kUGF0aE11bHRpcGxpY2l0eSIpKTsNCisJfQ0KKw0KKyAgICBAVGVzdA0KKwlwdWJsaWMgdm9pZCB0ZXN0UmVnaXN0cnlDb250ZW50Rm9yQm91bmRSZWZlcmVuY2UoKSB7DQorCQlBc3NlcnQuYXNzZXJ0VHJ1ZSgiQm91bmRSZWZlcmVuY2UgZWxlbWVudCB0eXBlIG5vdCBmb3VuZCBpbiBTeXNNTCBlbGVtZW50IHR5cGUgc2V0ICIsIEVsZW1lbnRFZGl0U2VydmljZVV0aWxzLmdldEVkaXRTZXJ2aWNlUHJvdmlkZXIoKS5pc0tub3duRWxlbWVudFR5cGUoIm9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5Cb3VuZFJlZmVyZW5jZSIpKTsNCisJfQ0KKw0KKyAgICBAVGVzdA0KKwlwdWJsaWMgdm9pZCB0ZXN0UmVnaXN0cnlDb250ZW50Rm9yQWRqdW5jdFByb3BlcnR5KCkgew0KKwkJQXNzZXJ0LmFzc2VydFRydWUoIkFkanVuY3RQcm9wZXJ0eSBlbGVtZW50IHR5cGUgbm90IGZvdW5kIGluIFN5c01MIGVsZW1lbnQgdHlwZSBzZXQgIiwgRWxlbWVudEVkaXRTZXJ2aWNlVXRpbHMuZ2V0RWRpdFNlcnZpY2VQcm92aWRlcigpLmlzS25vd25FbGVtZW50VHlwZSgib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LkFkanVuY3RQcm9wZXJ0eSIpKTsNCisJfQ0KKw0KKyAgICBAVGVzdA0KKwlwdWJsaWMgdm9pZCB0ZXN0UmVnaXN0cnlDb250ZW50Rm9yQ2xhc3NpZmllckJlaGF2aW9yUHJvcGVydHkoKSB7DQorCQlBc3NlcnQuYXNzZXJ0VHJ1ZSgiQ2xhc3NpZmllckJlaGF2aW9yUHJvcGVydHkgZWxlbWVudCB0eXBlIG5vdCBmb3VuZCBpbiBTeXNNTCBlbGVtZW50IHR5cGUgc2V0ICIsIEVsZW1lbnRFZGl0U2VydmljZVV0aWxzLmdldEVkaXRTZXJ2aWNlUHJvdmlkZXIoKS5pc0tub3duRWxlbWVudFR5cGUoIm9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5DbGFzc2lmaWVyQmVoYXZpb3JQcm9wZXJ0eSIpKTsNCisJfQ0KKw0KKyAgICBAVGVzdA0KKwlwdWJsaWMgdm9pZCB0ZXN0UmVnaXN0cnlDb250ZW50Rm9ySXRlbUZsb3coKSB7DQorCQlBc3NlcnQuYXNzZXJ0VHJ1ZSgiSXRlbUZsb3cgZWxlbWVudCB0eXBlIG5vdCBmb3VuZCBpbiBTeXNNTCBlbGVtZW50IHR5cGUgc2V0ICIsIEVsZW1lbnRFZGl0U2VydmljZVV0aWxzLmdldEVkaXRTZXJ2aWNlUHJvdmlkZXIoKS5pc0tub3duRWxlbWVudFR5cGUoIm9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5JdGVtRmxvdyIpKTsNCisJfQ0KKw0KKyAgICBAVGVzdA0KKwlwdWJsaWMgdm9pZCB0ZXN0UmVnaXN0cnlDb250ZW50Rm9yRmxvd1Byb3BlcnR5KCkgew0KKwkJQXNzZXJ0LmFzc2VydFRydWUoIkZsb3dQcm9wZXJ0eSBlbGVtZW50IHR5cGUgbm90IGZvdW5kIGluIFN5c01MIGVsZW1lbnQgdHlwZSBzZXQgIiwgRWxlbWVudEVkaXRTZXJ2aWNlVXRpbHMuZ2V0RWRpdFNlcnZpY2VQcm92aWRlcigpLmlzS25vd25FbGVtZW50VHlwZSgib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LkZsb3dQcm9wZXJ0eSIpKTsNCisJfQ0KKw0KKyAgICBAVGVzdA0KKwlwdWJsaWMgdm9pZCB0ZXN0UmVnaXN0cnlDb250ZW50Rm9yRnVsbFBvcnQoKSB7DQorCQlBc3NlcnQuYXNzZXJ0VHJ1ZSgiRnVsbFBvcnQgZWxlbWVudCB0eXBlIG5vdCBmb3VuZCBpbiBTeXNNTCBlbGVtZW50IHR5cGUgc2V0ICIsIEVsZW1lbnRFZGl0U2VydmljZVV0aWxzLmdldEVkaXRTZXJ2aWNlUHJvdmlkZXIoKS5pc0tub3duRWxlbWVudFR5cGUoIm9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5GdWxsUG9ydCIpKTsNCisJfQ0KKw0KKyAgICBAVGVzdA0KKwlwdWJsaWMgdm9pZCB0ZXN0UmVnaXN0cnlDb250ZW50Rm9ySW50ZXJmYWNlQmxvY2soKSB7DQorCQlBc3NlcnQuYXNzZXJ0VHJ1ZSgiSW50ZXJmYWNlQmxvY2sgZWxlbWVudCB0eXBlIG5vdCBmb3VuZCBpbiBTeXNNTCBlbGVtZW50IHR5cGUgc2V0ICIsIEVsZW1lbnRFZGl0U2VydmljZVV0aWxzLmdldEVkaXRTZXJ2aWNlUHJvdmlkZXIoKS5pc0tub3duRWxlbWVudFR5cGUoIm9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5JbnRlcmZhY2VCbG9jayIpKTsNCisJfQ0KKw0KKyAgICBAVGVzdA0KKwlwdWJsaWMgdm9pZCB0ZXN0UmVnaXN0cnlDb250ZW50Rm9yUHJveHlQb3J0KCkgew0KKwkJQXNzZXJ0LmFzc2VydFRydWUoIlByb3h5UG9ydCBlbGVtZW50IHR5cGUgbm90IGZvdW5kIGluIFN5c01MIGVsZW1lbnQgdHlwZSBzZXQgIiwgRWxlbWVudEVkaXRTZXJ2aWNlVXRpbHMuZ2V0RWRpdFNlcnZpY2VQcm92aWRlcigpLmlzS25vd25FbGVtZW50VHlwZSgib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LlByb3h5UG9ydCIpKTsNCisJfQ0KKw0KKyAgICBAVGVzdA0KKwlwdWJsaWMgdm9pZCB0ZXN0UmVnaXN0cnlDb250ZW50Rm9yQWNjZXB0Q2hhbmdlU3RydWN0dXJhbEZlYXR1cmVFdmVudEFjdGlvbigpIHsNCisJCUFzc2VydC5hc3NlcnRUcnVlKCJBY2NlcHRDaGFuZ2VTdHJ1Y3R1cmFsRmVhdHVyZUV2ZW50QWN0aW9uIGVsZW1lbnQgdHlwZSBub3QgZm91bmQgaW4gU3lzTUwgZWxlbWVudCB0eXBlIHNldCAiLCBFbGVtZW50RWRpdFNlcnZpY2VVdGlscy5nZXRFZGl0U2VydmljZVByb3ZpZGVyKCkuaXNLbm93bkVsZW1lbnRUeXBlKCJvcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuQWNjZXB0Q2hhbmdlU3RydWN0dXJhbEZlYXR1cmVFdmVudEFjdGlvbiIpKTsNCisJfQ0KKw0KKyAgICBAVGVzdA0KKwlwdWJsaWMgdm9pZCB0ZXN0UmVnaXN0cnlDb250ZW50Rm9yQ2hhbmdlU3RydWN0dXJhbEZlYXR1cmVFdmVudCgpIHsNCisJCUFzc2VydC5hc3NlcnRUcnVlKCJDaGFuZ2VTdHJ1Y3R1cmFsRmVhdHVyZUV2ZW50IGVsZW1lbnQgdHlwZSBub3QgZm91bmQgaW4gU3lzTUwgZWxlbWVudCB0eXBlIHNldCAiLCBFbGVtZW50RWRpdFNlcnZpY2VVdGlscy5nZXRFZGl0U2VydmljZVByb3ZpZGVyKCkuaXNLbm93bkVsZW1lbnRUeXBlKCJvcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuQ2hhbmdlU3RydWN0dXJhbEZlYXR1cmVFdmVudCIpKTsNCisJfQ0KKw0KKyAgICBAVGVzdA0KKwlwdWJsaWMgdm9pZCB0ZXN0UmVnaXN0cnlDb250ZW50Rm9yRGlyZWN0ZWRGZWF0dXJlKCkgew0KKwkJQXNzZXJ0LmFzc2VydFRydWUoIkRpcmVjdGVkRmVhdHVyZSBlbGVtZW50IHR5cGUgbm90IGZvdW5kIGluIFN5c01MIGVsZW1lbnQgdHlwZSBzZXQgIiwgRWxlbWVudEVkaXRTZXJ2aWNlVXRpbHMuZ2V0RWRpdFNlcnZpY2VQcm92aWRlcigpLmlzS25vd25FbGVtZW50VHlwZSgib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LkRpcmVjdGVkRmVhdHVyZSIpKTsNCisJfQ0KKw0KKyAgICBAVGVzdA0KKwlwdWJsaWMgdm9pZCB0ZXN0UmVnaXN0cnlDb250ZW50Rm9ySW52b2NhdGlvbk9uTmVzdGVkUG9ydEFjdGlvbl9JbnZvY2F0aW9uQWN0aW9uKCkgew0KKwkJQXNzZXJ0LmFzc2VydFRydWUoIkludm9jYXRpb25Pbk5lc3RlZFBvcnRBY3Rpb24gSW52b2NhdGlvbkFjdGlvbiBlbGVtZW50IHR5cGUgbm90IGZvdW5kIGluIFN5c01MIGVsZW1lbnQgdHlwZSBzZXQgIiwgRWxlbWVudEVkaXRTZXJ2aWNlVXRpbHMuZ2V0RWRpdFNlcnZpY2VQcm92aWRlcigpLmlzS25vd25FbGVtZW50VHlwZSgib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0Lkludm9jYXRpb25Pbk5lc3RlZFBvcnRBY3Rpb25fSW52b2NhdGlvbkFjdGlvbiIpKTsNCisJfQ0KKw0KKyAgICBAVGVzdA0KKwlwdWJsaWMgdm9pZCB0ZXN0UmVnaXN0cnlDb250ZW50Rm9ySW52b2NhdGlvbk9uTmVzdGVkUG9ydEFjdGlvbl9FbGVtZW50KCkgew0KKwkJQXNzZXJ0LmFzc2VydFRydWUoIkludm9jYXRpb25Pbk5lc3RlZFBvcnRBY3Rpb24gRWxlbWVudCBlbGVtZW50IHR5cGUgbm90IGZvdW5kIGluIFN5c01MIGVsZW1lbnQgdHlwZSBzZXQgIiwgRWxlbWVudEVkaXRTZXJ2aWNlVXRpbHMuZ2V0RWRpdFNlcnZpY2VQcm92aWRlcigpLmlzS25vd25FbGVtZW50VHlwZSgib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0Lkludm9jYXRpb25Pbk5lc3RlZFBvcnRBY3Rpb25fRWxlbWVudCIpKTsNCisJfQ0KKw0KKyAgICBAVGVzdA0KKwlwdWJsaWMgdm9pZCB0ZXN0UmVnaXN0cnlDb250ZW50Rm9yVHJpZ2dlck9uTmVzdGVkUG9ydF9UcmlnZ2VyKCkgew0KKwkJQXNzZXJ0LmFzc2VydFRydWUoIlRyaWdnZXJPbk5lc3RlZFBvcnQgVHJpZ2dlciBlbGVtZW50IHR5cGUgbm90IGZvdW5kIGluIFN5c01MIGVsZW1lbnQgdHlwZSBzZXQgIiwgRWxlbWVudEVkaXRTZXJ2aWNlVXRpbHMuZ2V0RWRpdFNlcnZpY2VQcm92aWRlcigpLmlzS25vd25FbGVtZW50VHlwZSgib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LlRyaWdnZXJPbk5lc3RlZFBvcnRfVHJpZ2dlciIpKTsNCisJfQ0KKw0KKyAgICBAVGVzdA0KKwlwdWJsaWMgdm9pZCB0ZXN0UmVnaXN0cnlDb250ZW50Rm9yVHJpZ2dlck9uTmVzdGVkUG9ydF9FbGVtZW50KCkgew0KKwkJQXNzZXJ0LmFzc2VydFRydWUoIlRyaWdnZXJPbk5lc3RlZFBvcnQgRWxlbWVudCBlbGVtZW50IHR5cGUgbm90IGZvdW5kIGluIFN5c01MIGVsZW1lbnQgdHlwZSBzZXQgIiwgRWxlbWVudEVkaXRTZXJ2aWNlVXRpbHMuZ2V0RWRpdFNlcnZpY2VQcm92aWRlcigpLmlzS25vd25FbGVtZW50VHlwZSgib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LlRyaWdnZXJPbk5lc3RlZFBvcnRfRWxlbWVudCIpKTsNCisJfQ0KKw0KKyAgICBAVGVzdA0KKwlwdWJsaWMgdm9pZCB0ZXN0UmVnaXN0cnlDb250ZW50Rm9yT3ZlcndyaXRlKCkgew0KKwkJQXNzZXJ0LmFzc2VydFRydWUoIk92ZXJ3cml0ZSBlbGVtZW50IHR5cGUgbm90IGZvdW5kIGluIFN5c01MIGVsZW1lbnQgdHlwZSBzZXQgIiwgRWxlbWVudEVkaXRTZXJ2aWNlVXRpbHMuZ2V0RWRpdFNlcnZpY2VQcm92aWRlcigpLmlzS25vd25FbGVtZW50VHlwZSgib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0Lk92ZXJ3cml0ZSIpKTsNCisJfQ0KKw0KKyAgICBAVGVzdA0KKwlwdWJsaWMgdm9pZCB0ZXN0UmVnaXN0cnlDb250ZW50Rm9yQ29udHJvbE9wZXJhdG9yX0JlaGF2aW9yKCkgew0KKwkJQXNzZXJ0LmFzc2VydFRydWUoIkNvbnRyb2xPcGVyYXRvciBCZWhhdmlvciBlbGVtZW50IHR5cGUgbm90IGZvdW5kIGluIFN5c01MIGVsZW1lbnQgdHlwZSBzZXQgIiwgRWxlbWVudEVkaXRTZXJ2aWNlVXRpbHMuZ2V0RWRpdFNlcnZpY2VQcm92aWRlcigpLmlzS25vd25FbGVtZW50VHlwZSgib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LkNvbnRyb2xPcGVyYXRvcl9CZWhhdmlvciIpKTsNCisJfQ0KKw0KKyAgICBAVGVzdA0KKwlwdWJsaWMgdm9pZCB0ZXN0UmVnaXN0cnlDb250ZW50Rm9yQ29udHJvbE9wZXJhdG9yX09wZXJhdGlvbigpIHsNCisJCUFzc2VydC5hc3NlcnRUcnVlKCJDb250cm9sT3BlcmF0b3IgT3BlcmF0aW9uIGVsZW1lbnQgdHlwZSBub3QgZm91bmQgaW4gU3lzTUwgZWxlbWVudCB0eXBlIHNldCAiLCBFbGVtZW50RWRpdFNlcnZpY2VVdGlscy5nZXRFZGl0U2VydmljZVByb3ZpZGVyKCkuaXNLbm93bkVsZW1lbnRUeXBlKCJvcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuQ29udHJvbE9wZXJhdG9yX09wZXJhdGlvbiIpKTsNCisJfQ0KKw0KKyAgICBAVGVzdA0KKwlwdWJsaWMgdm9pZCB0ZXN0UmVnaXN0cnlDb250ZW50Rm9yUmF0ZV9BY3Rpdml0eUVkZ2UoKSB7DQorCQlBc3NlcnQuYXNzZXJ0VHJ1ZSgiUmF0ZSBBY3Rpdml0eUVkZ2UgZWxlbWVudCB0eXBlIG5vdCBmb3VuZCBpbiBTeXNNTCBlbGVtZW50IHR5cGUgc2V0ICIsIEVsZW1lbnRFZGl0U2VydmljZVV0aWxzLmdldEVkaXRTZXJ2aWNlUHJvdmlkZXIoKS5pc0tub3duRWxlbWVudFR5cGUoIm9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5SYXRlX0FjdGl2aXR5RWRnZSIpKTsNCisJfQ0KKw0KKyAgICBAVGVzdA0KKwlwdWJsaWMgdm9pZCB0ZXN0UmVnaXN0cnlDb250ZW50Rm9yUmF0ZV9QYXJhbWV0ZXIoKSB7DQorCQlBc3NlcnQuYXNzZXJ0VHJ1ZSgiUmF0ZSBQYXJhbWV0ZXIgZWxlbWVudCB0eXBlIG5vdCBmb3VuZCBpbiBTeXNNTCBlbGVtZW50IHR5cGUgc2V0ICIsIEVsZW1lbnRFZGl0U2VydmljZVV0aWxzLmdldEVkaXRTZXJ2aWNlUHJvdmlkZXIoKS5pc0tub3duRWxlbWVudFR5cGUoIm9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5SYXRlX1BhcmFtZXRlciIpKTsNCisJfQ0KKw0KKyAgICBAVGVzdA0KKwlwdWJsaWMgdm9pZCB0ZXN0UmVnaXN0cnlDb250ZW50Rm9yTm9CdWZmZXIoKSB7DQorCQlBc3NlcnQuYXNzZXJ0VHJ1ZSgiTm9CdWZmZXIgZWxlbWVudCB0eXBlIG5vdCBmb3VuZCBpbiBTeXNNTCBlbGVtZW50IHR5cGUgc2V0ICIsIEVsZW1lbnRFZGl0U2VydmljZVV0aWxzLmdldEVkaXRTZXJ2aWNlUHJvdmlkZXIoKS5pc0tub3duRWxlbWVudFR5cGUoIm9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5Ob0J1ZmZlciIpKTsNCisJfQ0KKw0KKyAgICBAVGVzdA0KKwlwdWJsaWMgdm9pZCB0ZXN0UmVnaXN0cnlDb250ZW50Rm9yRGlzY3JldGVfQWN0aXZpdHlFZGdlKCkgew0KKwkJQXNzZXJ0LmFzc2VydFRydWUoIkRpc2NyZXRlIEFjdGl2aXR5RWRnZSBlbGVtZW50IHR5cGUgbm90IGZvdW5kIGluIFN5c01MIGVsZW1lbnQgdHlwZSBzZXQgIiwgRWxlbWVudEVkaXRTZXJ2aWNlVXRpbHMuZ2V0RWRpdFNlcnZpY2VQcm92aWRlcigpLmlzS25vd25FbGVtZW50VHlwZSgib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LkRpc2NyZXRlX0FjdGl2aXR5RWRnZSIpKTsNCisJfQ0KKw0KKyAgICBAVGVzdA0KKwlwdWJsaWMgdm9pZCB0ZXN0UmVnaXN0cnlDb250ZW50Rm9yRGlzY3JldGVfUGFyYW1ldGVyKCkgew0KKwkJQXNzZXJ0LmFzc2VydFRydWUoIkRpc2NyZXRlIFBhcmFtZXRlciBlbGVtZW50IHR5cGUgbm90IGZvdW5kIGluIFN5c01MIGVsZW1lbnQgdHlwZSBzZXQgIiwgRWxlbWVudEVkaXRTZXJ2aWNlVXRpbHMuZ2V0RWRpdFNlcnZpY2VQcm92aWRlcigpLmlzS25vd25FbGVtZW50VHlwZSgib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LkRpc2NyZXRlX1BhcmFtZXRlciIpKTsNCisJfQ0KKw0KKyAgICBAVGVzdA0KKwlwdWJsaWMgdm9pZCB0ZXN0UmVnaXN0cnlDb250ZW50Rm9yQ29udGludW91c19BY3Rpdml0eUVkZ2UoKSB7DQorCQlBc3NlcnQuYXNzZXJ0VHJ1ZSgiQ29udGludW91cyBBY3Rpdml0eUVkZ2UgZWxlbWVudCB0eXBlIG5vdCBmb3VuZCBpbiBTeXNNTCBlbGVtZW50IHR5cGUgc2V0ICIsIEVsZW1lbnRFZGl0U2VydmljZVV0aWxzLmdldEVkaXRTZXJ2aWNlUHJvdmlkZXIoKS5pc0tub3duRWxlbWVudFR5cGUoIm9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5Db250aW51b3VzX0FjdGl2aXR5RWRnZSIpKTsNCisJfQ0KKw0KKyAgICBAVGVzdA0KKwlwdWJsaWMgdm9pZCB0ZXN0UmVnaXN0cnlDb250ZW50Rm9yQ29udGludW91c19QYXJhbWV0ZXIoKSB7DQorCQlBc3NlcnQuYXNzZXJ0VHJ1ZSgiQ29udGludW91cyBQYXJhbWV0ZXIgZWxlbWVudCB0eXBlIG5vdCBmb3VuZCBpbiBTeXNNTCBlbGVtZW50IHR5cGUgc2V0ICIsIEVsZW1lbnRFZGl0U2VydmljZVV0aWxzLmdldEVkaXRTZXJ2aWNlUHJvdmlkZXIoKS5pc0tub3duRWxlbWVudFR5cGUoIm9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5Db250aW51b3VzX1BhcmFtZXRlciIpKTsNCisJfQ0KKw0KKyAgICBAVGVzdA0KKwlwdWJsaWMgdm9pZCB0ZXN0UmVnaXN0cnlDb250ZW50Rm9yUHJvYmFiaWxpdHlfQWN0aXZpdHlFZGdlKCkgew0KKwkJQXNzZXJ0LmFzc2VydFRydWUoIlByb2JhYmlsaXR5IEFjdGl2aXR5RWRnZSBlbGVtZW50IHR5cGUgbm90IGZvdW5kIGluIFN5c01MIGVsZW1lbnQgdHlwZSBzZXQgIiwgRWxlbWVudEVkaXRTZXJ2aWNlVXRpbHMuZ2V0RWRpdFNlcnZpY2VQcm92aWRlcigpLmlzS25vd25FbGVtZW50VHlwZSgib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LlByb2JhYmlsaXR5X0FjdGl2aXR5RWRnZSIpKTsNCisJfQ0KKw0KKyAgICBAVGVzdA0KKwlwdWJsaWMgdm9pZCB0ZXN0UmVnaXN0cnlDb250ZW50Rm9yUHJvYmFiaWxpdHlfUGFyYW1ldGVyU2V0KCkgew0KKwkJQXNzZXJ0LmFzc2VydFRydWUoIlByb2JhYmlsaXR5IFBhcmFtZXRlclNldCBlbGVtZW50IHR5cGUgbm90IGZvdW5kIGluIFN5c01MIGVsZW1lbnQgdHlwZSBzZXQgIiwgRWxlbWVudEVkaXRTZXJ2aWNlVXRpbHMuZ2V0RWRpdFNlcnZpY2VQcm92aWRlcigpLmlzS25vd25FbGVtZW50VHlwZSgib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LlByb2JhYmlsaXR5X1BhcmFtZXRlclNldCIpKTsNCisJfQ0KKw0KKyAgICBAVGVzdA0KKwlwdWJsaWMgdm9pZCB0ZXN0UmVnaXN0cnlDb250ZW50Rm9yT3B0aW9uYWwoKSB7DQorCQlBc3NlcnQuYXNzZXJ0VHJ1ZSgiT3B0aW9uYWwgZWxlbWVudCB0eXBlIG5vdCBmb3VuZCBpbiBTeXNNTCBlbGVtZW50IHR5cGUgc2V0ICIsIEVsZW1lbnRFZGl0U2VydmljZVV0aWxzLmdldEVkaXRTZXJ2aWNlUHJvdmlkZXIoKS5pc0tub3duRWxlbWVudFR5cGUoIm9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5PcHRpb25hbCIpKTsNCisJfQ0KKw0KKyAgICBAVGVzdA0KKwlwdWJsaWMgdm9pZCB0ZXN0UmVnaXN0cnlDb250ZW50Rm9yUmF0aW9uYWxlKCkgew0KKwkJQXNzZXJ0LmFzc2VydFRydWUoIlJhdGlvbmFsZSBlbGVtZW50IHR5cGUgbm90IGZvdW5kIGluIFN5c01MIGVsZW1lbnQgdHlwZSBzZXQgIiwgRWxlbWVudEVkaXRTZXJ2aWNlVXRpbHMuZ2V0RWRpdFNlcnZpY2VQcm92aWRlcigpLmlzS25vd25FbGVtZW50VHlwZSgib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LlJhdGlvbmFsZSIpKTsNCisJfQ0KKw0KKyAgICBAVGVzdA0KKwlwdWJsaWMgdm9pZCB0ZXN0UmVnaXN0cnlDb250ZW50Rm9yVmlld19QYWNrYWdlKCkgew0KKwkJQXNzZXJ0LmFzc2VydFRydWUoIlZpZXcgUGFja2FnZSBlbGVtZW50IHR5cGUgbm90IGZvdW5kIGluIFN5c01MIGVsZW1lbnQgdHlwZSBzZXQgIiwgRWxlbWVudEVkaXRTZXJ2aWNlVXRpbHMuZ2V0RWRpdFNlcnZpY2VQcm92aWRlcigpLmlzS25vd25FbGVtZW50VHlwZSgib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LlZpZXdfUGFja2FnZSIpKTsNCisJfQ0KKw0KKyAgICBAVGVzdA0KKwlwdWJsaWMgdm9pZCB0ZXN0UmVnaXN0cnlDb250ZW50Rm9yVmlld19DbGFzcygpIHsNCisJCUFzc2VydC5hc3NlcnRUcnVlKCJWaWV3IENsYXNzIGVsZW1lbnQgdHlwZSBub3QgZm91bmQgaW4gU3lzTUwgZWxlbWVudCB0eXBlIHNldCAiLCBFbGVtZW50RWRpdFNlcnZpY2VVdGlscy5nZXRFZGl0U2VydmljZVByb3ZpZGVyKCkuaXNLbm93bkVsZW1lbnRUeXBlKCJvcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuVmlld19DbGFzcyIpKTsNCisJfQ0KKw0KKyAgICBAVGVzdA0KKwlwdWJsaWMgdm9pZCB0ZXN0UmVnaXN0cnlDb250ZW50Rm9yQ29uZm9ybV9EZXBlbmRlbmN5KCkgew0KKwkJQXNzZXJ0LmFzc2VydFRydWUoIkNvbmZvcm0gRGVwZW5kZW5jeSBlbGVtZW50IHR5cGUgbm90IGZvdW5kIGluIFN5c01MIGVsZW1lbnQgdHlwZSBzZXQgIiwgRWxlbWVudEVkaXRTZXJ2aWNlVXRpbHMuZ2V0RWRpdFNlcnZpY2VQcm92aWRlcigpLmlzS25vd25FbGVtZW50VHlwZSgib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LkNvbmZvcm1fRGVwZW5kZW5jeSIpKTsNCisJfQ0KKw0KKyAgICBAVGVzdA0KKwlwdWJsaWMgdm9pZCB0ZXN0UmVnaXN0cnlDb250ZW50Rm9yQ29uZm9ybV9HZW5lcmFsaXphdGlvbigpIHsNCisJCUFzc2VydC5hc3NlcnRUcnVlKCJDb25mb3JtIEdlbmVyYWxpemF0aW9uIGVsZW1lbnQgdHlwZSBub3QgZm91bmQgaW4gU3lzTUwgZWxlbWVudCB0eXBlIHNldCAiLCBFbGVtZW50RWRpdFNlcnZpY2VVdGlscy5nZXRFZGl0U2VydmljZVByb3ZpZGVyKCkuaXNLbm93bkVsZW1lbnRUeXBlKCJvcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuQ29uZm9ybV9HZW5lcmFsaXphdGlvbiIpKTsNCisJfQ0KKw0KKyAgICBAVGVzdA0KKwlwdWJsaWMgdm9pZCB0ZXN0UmVnaXN0cnlDb250ZW50Rm9yUHJvYmxlbSgpIHsNCisJCUFzc2VydC5hc3NlcnRUcnVlKCJQcm9ibGVtIGVsZW1lbnQgdHlwZSBub3QgZm91bmQgaW4gU3lzTUwgZWxlbWVudCB0eXBlIHNldCAiLCBFbGVtZW50RWRpdFNlcnZpY2VVdGlscy5nZXRFZGl0U2VydmljZVByb3ZpZGVyKCkuaXNLbm93bkVsZW1lbnRUeXBlKCJvcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuUHJvYmxlbSIpKTsNCisJfQ0KKw0KKyAgICBAVGVzdA0KKwlwdWJsaWMgdm9pZCB0ZXN0UmVnaXN0cnlDb250ZW50Rm9yVmlld1BvaW50KCkgew0KKwkJQXNzZXJ0LmFzc2VydFRydWUoIlZpZXdQb2ludCBlbGVtZW50IHR5cGUgbm90IGZvdW5kIGluIFN5c01MIGVsZW1lbnQgdHlwZSBzZXQgIiwgRWxlbWVudEVkaXRTZXJ2aWNlVXRpbHMuZ2V0RWRpdFNlcnZpY2VQcm92aWRlcigpLmlzS25vd25FbGVtZW50VHlwZSgib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LlZpZXdQb2ludCIpKTsNCisJfQ0KKw0KKyAgICBAVGVzdA0KKwlwdWJsaWMgdm9pZCB0ZXN0UmVnaXN0cnlDb250ZW50Rm9yU3Rha2Vob2xkZXIoKSB7DQorCQlBc3NlcnQuYXNzZXJ0VHJ1ZSgiU3Rha2Vob2xkZXIgZWxlbWVudCB0eXBlIG5vdCBmb3VuZCBpbiBTeXNNTCBlbGVtZW50IHR5cGUgc2V0ICIsIEVsZW1lbnRFZGl0U2VydmljZVV0aWxzLmdldEVkaXRTZXJ2aWNlUHJvdmlkZXIoKS5pc0tub3duRWxlbWVudFR5cGUoIm9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5TdGFrZWhvbGRlciIpKTsNCisJfQ0KKw0KKyAgICBAVGVzdA0KKwlwdWJsaWMgdm9pZCB0ZXN0UmVnaXN0cnlDb250ZW50Rm9yRXhwb3NlKCkgew0KKwkJQXNzZXJ0LmFzc2VydFRydWUoIkV4cG9zZSBlbGVtZW50IHR5cGUgbm90IGZvdW5kIGluIFN5c01MIGVsZW1lbnQgdHlwZSBzZXQgIiwgRWxlbWVudEVkaXRTZXJ2aWNlVXRpbHMuZ2V0RWRpdFNlcnZpY2VQcm92aWRlcigpLmlzS25vd25FbGVtZW50VHlwZSgib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LkV4cG9zZSIpKTsNCisJfQ0KKw0KKyAgICBAVGVzdA0KKwlwdWJsaWMgdm9pZCB0ZXN0UmVnaXN0cnlDb250ZW50Rm9yRWxlbWVudEdyb3VwKCkgew0KKwkJQXNzZXJ0LmFzc2VydFRydWUoIkVsZW1lbnRHcm91cCBlbGVtZW50IHR5cGUgbm90IGZvdW5kIGluIFN5c01MIGVsZW1lbnQgdHlwZSBzZXQgIiwgRWxlbWVudEVkaXRTZXJ2aWNlVXRpbHMuZ2V0RWRpdFNlcnZpY2VQcm92aWRlcigpLmlzS25vd25FbGVtZW50VHlwZSgib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LkVsZW1lbnRHcm91cCIpKTsNCisJfQ0KKw0KKyAgICBAVGVzdA0KKwlwdWJsaWMgdm9pZCB0ZXN0UmVnaXN0cnlDb250ZW50Rm9yQ29uc3RyYWludEJsb2NrKCkgew0KKwkJQXNzZXJ0LmFzc2VydFRydWUoIkNvbnN0cmFpbnRCbG9jayBlbGVtZW50IHR5cGUgbm90IGZvdW5kIGluIFN5c01MIGVsZW1lbnQgdHlwZSBzZXQgIiwgRWxlbWVudEVkaXRTZXJ2aWNlVXRpbHMuZ2V0RWRpdFNlcnZpY2VQcm92aWRlcigpLmlzS25vd25FbGVtZW50VHlwZSgib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LkNvbnN0cmFpbnRCbG9jayIpKTsNCisJfQ0KKw0KKyAgICBAVGVzdA0KKwlwdWJsaWMgdm9pZCB0ZXN0UmVnaXN0cnlDb250ZW50Rm9yQWxsb2NhdGVBY3Rpdml0eVBhcnRpdGlvbigpIHsNCisJCUFzc2VydC5hc3NlcnRUcnVlKCJBbGxvY2F0ZUFjdGl2aXR5UGFydGl0aW9uIGVsZW1lbnQgdHlwZSBub3QgZm91bmQgaW4gU3lzTUwgZWxlbWVudCB0eXBlIHNldCAiLCBFbGVtZW50RWRpdFNlcnZpY2VVdGlscy5nZXRFZGl0U2VydmljZVByb3ZpZGVyKCkuaXNLbm93bkVsZW1lbnRUeXBlKCJvcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuQWxsb2NhdGVBY3Rpdml0eVBhcnRpdGlvbiIpKTsNCisJfQ0KKw0KKyAgICBAVGVzdA0KKwlwdWJsaWMgdm9pZCB0ZXN0UmVnaXN0cnlDb250ZW50Rm9yQWxsb2NhdGVfQWJzdHJhY3Rpb24oKSB7DQorCQlBc3NlcnQuYXNzZXJ0VHJ1ZSgiQWxsb2NhdGUgQWJzdHJhY3Rpb24gZWxlbWVudCB0eXBlIG5vdCBmb3VuZCBpbiBTeXNNTCBlbGVtZW50IHR5cGUgc2V0ICIsIEVsZW1lbnRFZGl0U2VydmljZVV0aWxzLmdldEVkaXRTZXJ2aWNlUHJvdmlkZXIoKS5pc0tub3duRWxlbWVudFR5cGUoIm9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5BbGxvY2F0ZV9BYnN0cmFjdGlvbiIpKTsNCisJfQ0KKw0KKyAgICBAVGVzdA0KKwlwdWJsaWMgdm9pZCB0ZXN0UmVnaXN0cnlDb250ZW50Rm9yQWxsb2NhdGVfRGlyZWN0ZWRSZWxhdGlvbnNoaXAoKSB7DQorCQlBc3NlcnQuYXNzZXJ0VHJ1ZSgiQWxsb2NhdGUgRGlyZWN0ZWRSZWxhdGlvbnNoaXAgZWxlbWVudCB0eXBlIG5vdCBmb3VuZCBpbiBTeXNNTCBlbGVtZW50IHR5cGUgc2V0ICIsIEVsZW1lbnRFZGl0U2VydmljZVV0aWxzLmdldEVkaXRTZXJ2aWNlUHJvdmlkZXIoKS5pc0tub3duRWxlbWVudFR5cGUoIm9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5BbGxvY2F0ZV9EaXJlY3RlZFJlbGF0aW9uc2hpcCIpKTsNCisJfQ0KKw0KKyAgICBAVGVzdA0KKwlwdWJsaWMgdm9pZCB0ZXN0UmVnaXN0cnlDb250ZW50Rm9yRGVyaXZlUmVxdF9BYnN0cmFjdGlvbigpIHsNCisJCUFzc2VydC5hc3NlcnRUcnVlKCJEZXJpdmVSZXF0IEFic3RyYWN0aW9uIGVsZW1lbnQgdHlwZSBub3QgZm91bmQgaW4gU3lzTUwgZWxlbWVudCB0eXBlIHNldCAiLCBFbGVtZW50RWRpdFNlcnZpY2VVdGlscy5nZXRFZGl0U2VydmljZVByb3ZpZGVyKCkuaXNLbm93bkVsZW1lbnRUeXBlKCJvcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuRGVyaXZlUmVxdF9BYnN0cmFjdGlvbiIpKTsNCisJfQ0KKw0KKyAgICBAVGVzdA0KKwlwdWJsaWMgdm9pZCB0ZXN0UmVnaXN0cnlDb250ZW50Rm9yRGVyaXZlUmVxdF9EaXJlY3RlZFJlbGF0aW9uc2hpcCgpIHsNCisJCUFzc2VydC5hc3NlcnRUcnVlKCJEZXJpdmVSZXF0IERpcmVjdGVkUmVsYXRpb25zaGlwIGVsZW1lbnQgdHlwZSBub3QgZm91bmQgaW4gU3lzTUwgZWxlbWVudCB0eXBlIHNldCAiLCBFbGVtZW50RWRpdFNlcnZpY2VVdGlscy5nZXRFZGl0U2VydmljZVByb3ZpZGVyKCkuaXNLbm93bkVsZW1lbnRUeXBlKCJvcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuRGVyaXZlUmVxdF9EaXJlY3RlZFJlbGF0aW9uc2hpcCIpKTsNCisJfQ0KKw0KKyAgICBAVGVzdA0KKwlwdWJsaWMgdm9pZCB0ZXN0UmVnaXN0cnlDb250ZW50Rm9yQ29weV9BYnN0cmFjdGlvbigpIHsNCisJCUFzc2VydC5hc3NlcnRUcnVlKCJDb3B5IEFic3RyYWN0aW9uIGVsZW1lbnQgdHlwZSBub3QgZm91bmQgaW4gU3lzTUwgZWxlbWVudCB0eXBlIHNldCAiLCBFbGVtZW50RWRpdFNlcnZpY2VVdGlscy5nZXRFZGl0U2VydmljZVByb3ZpZGVyKCkuaXNLbm93bkVsZW1lbnRUeXBlKCJvcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuQ29weV9BYnN0cmFjdGlvbiIpKTsNCisJfQ0KKw0KKyAgICBAVGVzdA0KKwlwdWJsaWMgdm9pZCB0ZXN0UmVnaXN0cnlDb250ZW50Rm9yQ29weV9EaXJlY3RlZFJlbGF0aW9uc2hpcCgpIHsNCisJCUFzc2VydC5hc3NlcnRUcnVlKCJDb3B5IERpcmVjdGVkUmVsYXRpb25zaGlwIGVsZW1lbnQgdHlwZSBub3QgZm91bmQgaW4gU3lzTUwgZWxlbWVudCB0eXBlIHNldCAiLCBFbGVtZW50RWRpdFNlcnZpY2VVdGlscy5nZXRFZGl0U2VydmljZVByb3ZpZGVyKCkuaXNLbm93bkVsZW1lbnRUeXBlKCJvcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuQ29weV9EaXJlY3RlZFJlbGF0aW9uc2hpcCIpKTsNCisJfQ0KKw0KKyAgICBAVGVzdA0KKwlwdWJsaWMgdm9pZCB0ZXN0UmVnaXN0cnlDb250ZW50Rm9yU2F0aXNmeV9BYnN0cmFjdGlvbigpIHsNCisJCUFzc2VydC5hc3NlcnRUcnVlKCJTYXRpc2Z5IEFic3RyYWN0aW9uIGVsZW1lbnQgdHlwZSBub3QgZm91bmQgaW4gU3lzTUwgZWxlbWVudCB0eXBlIHNldCAiLCBFbGVtZW50RWRpdFNlcnZpY2VVdGlscy5nZXRFZGl0U2VydmljZVByb3ZpZGVyKCkuaXNLbm93bkVsZW1lbnRUeXBlKCJvcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuU2F0aXNmeV9BYnN0cmFjdGlvbiIpKTsNCisJfQ0KKw0KKyAgICBAVGVzdA0KKwlwdWJsaWMgdm9pZCB0ZXN0UmVnaXN0cnlDb250ZW50Rm9yU2F0aXNmeV9EaXJlY3RlZFJlbGF0aW9uc2hpcCgpIHsNCisJCUFzc2VydC5hc3NlcnRUcnVlKCJTYXRpc2Z5IERpcmVjdGVkUmVsYXRpb25zaGlwIGVsZW1lbnQgdHlwZSBub3QgZm91bmQgaW4gU3lzTUwgZWxlbWVudCB0eXBlIHNldCAiLCBFbGVtZW50RWRpdFNlcnZpY2VVdGlscy5nZXRFZGl0U2VydmljZVByb3ZpZGVyKCkuaXNLbm93bkVsZW1lbnRUeXBlKCJvcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuU2F0aXNmeV9EaXJlY3RlZFJlbGF0aW9uc2hpcCIpKTsNCisJfQ0KKw0KKyAgICBAVGVzdA0KKwlwdWJsaWMgdm9pZCB0ZXN0UmVnaXN0cnlDb250ZW50Rm9yVGVzdENhc2VfT3BlcmF0aW9uKCkgew0KKwkJQXNzZXJ0LmFzc2VydFRydWUoIlRlc3RDYXNlIE9wZXJhdGlvbiBlbGVtZW50IHR5cGUgbm90IGZvdW5kIGluIFN5c01MIGVsZW1lbnQgdHlwZSBzZXQgIiwgRWxlbWVudEVkaXRTZXJ2aWNlVXRpbHMuZ2V0RWRpdFNlcnZpY2VQcm92aWRlcigpLmlzS25vd25FbGVtZW50VHlwZSgib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LlRlc3RDYXNlX09wZXJhdGlvbiIpKTsNCisJfQ0KKw0KKyAgICBAVGVzdA0KKwlwdWJsaWMgdm9pZCB0ZXN0UmVnaXN0cnlDb250ZW50Rm9yVGVzdENhc2VfQmVoYXZpb3IoKSB7DQorCQlBc3NlcnQuYXNzZXJ0VHJ1ZSgiVGVzdENhc2UgQmVoYXZpb3IgZWxlbWVudCB0eXBlIG5vdCBmb3VuZCBpbiBTeXNNTCBlbGVtZW50IHR5cGUgc2V0ICIsIEVsZW1lbnRFZGl0U2VydmljZVV0aWxzLmdldEVkaXRTZXJ2aWNlUHJvdmlkZXIoKS5pc0tub3duRWxlbWVudFR5cGUoIm9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5UZXN0Q2FzZV9CZWhhdmlvciIpKTsNCisJfQ0KKw0KKyAgICBAVGVzdA0KKwlwdWJsaWMgdm9pZCB0ZXN0UmVnaXN0cnlDb250ZW50Rm9yUmVxdWlyZW1lbnQoKSB7DQorCQlBc3NlcnQuYXNzZXJ0VHJ1ZSgiUmVxdWlyZW1lbnQgZWxlbWVudCB0eXBlIG5vdCBmb3VuZCBpbiBTeXNNTCBlbGVtZW50IHR5cGUgc2V0ICIsIEVsZW1lbnRFZGl0U2VydmljZVV0aWxzLmdldEVkaXRTZXJ2aWNlUHJvdmlkZXIoKS5pc0tub3duRWxlbWVudFR5cGUoIm9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5SZXF1aXJlbWVudCIpKTsNCisJfQ0KKw0KKyAgICBAVGVzdA0KKwlwdWJsaWMgdm9pZCB0ZXN0UmVnaXN0cnlDb250ZW50Rm9yVmVyaWZ5X0Fic3RyYWN0aW9uKCkgew0KKwkJQXNzZXJ0LmFzc2VydFRydWUoIlZlcmlmeSBBYnN0cmFjdGlvbiBlbGVtZW50IHR5cGUgbm90IGZvdW5kIGluIFN5c01MIGVsZW1lbnQgdHlwZSBzZXQgIiwgRWxlbWVudEVkaXRTZXJ2aWNlVXRpbHMuZ2V0RWRpdFNlcnZpY2VQcm92aWRlcigpLmlzS25vd25FbGVtZW50VHlwZSgib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LlZlcmlmeV9BYnN0cmFjdGlvbiIpKTsNCisJfQ0KKw0KKyAgICBAVGVzdA0KKwlwdWJsaWMgdm9pZCB0ZXN0UmVnaXN0cnlDb250ZW50Rm9yVmVyaWZ5X0RpcmVjdGVkUmVsYXRpb25zaGlwKCkgew0KKwkJQXNzZXJ0LmFzc2VydFRydWUoIlZlcmlmeSBEaXJlY3RlZFJlbGF0aW9uc2hpcCBlbGVtZW50IHR5cGUgbm90IGZvdW5kIGluIFN5c01MIGVsZW1lbnQgdHlwZSBzZXQgIiwgRWxlbWVudEVkaXRTZXJ2aWNlVXRpbHMuZ2V0RWRpdFNlcnZpY2VQcm92aWRlcigpLmlzS25vd25FbGVtZW50VHlwZSgib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LlZlcmlmeV9EaXJlY3RlZFJlbGF0aW9uc2hpcCIpKTsNCisJfQ0KKw0KKyAgICBAVGVzdA0KKwlwdWJsaWMgdm9pZCB0ZXN0UmVnaXN0cnlDb250ZW50Rm9yVHJhY2VfQWJzdHJhY3Rpb24oKSB7DQorCQlBc3NlcnQuYXNzZXJ0VHJ1ZSgiVHJhY2UgQWJzdHJhY3Rpb24gZWxlbWVudCB0eXBlIG5vdCBmb3VuZCBpbiBTeXNNTCBlbGVtZW50IHR5cGUgc2V0ICIsIEVsZW1lbnRFZGl0U2VydmljZVV0aWxzLmdldEVkaXRTZXJ2aWNlUHJvdmlkZXIoKS5pc0tub3duRWxlbWVudFR5cGUoIm9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5UcmFjZV9BYnN0cmFjdGlvbiIpKTsNCisJfQ0KKw0KKyAgICBAVGVzdA0KKwlwdWJsaWMgdm9pZCB0ZXN0UmVnaXN0cnlDb250ZW50Rm9yVHJhY2VfRGlyZWN0ZWRSZWxhdGlvbnNoaXAoKSB7DQorCQlBc3NlcnQuYXNzZXJ0VHJ1ZSgiVHJhY2UgRGlyZWN0ZWRSZWxhdGlvbnNoaXAgZWxlbWVudCB0eXBlIG5vdCBmb3VuZCBpbiBTeXNNTCBlbGVtZW50IHR5cGUgc2V0ICIsIEVsZW1lbnRFZGl0U2VydmljZVV0aWxzLmdldEVkaXRTZXJ2aWNlUHJvdmlkZXIoKS5pc0tub3duRWxlbWVudFR5cGUoIm9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5UcmFjZV9EaXJlY3RlZFJlbGF0aW9uc2hpcCIpKTsNCisJfQ0KKw0KKyAgICBAVGVzdA0KKwlwdWJsaWMgdm9pZCB0ZXN0UmVnaXN0cnlDb250ZW50Rm9yUmVmaW5lX0Fic3RyYWN0aW9uKCkgew0KKwkJQXNzZXJ0LmFzc2VydFRydWUoIlJlZmluZSBBYnN0cmFjdGlvbiBlbGVtZW50IHR5cGUgbm90IGZvdW5kIGluIFN5c01MIGVsZW1lbnQgdHlwZSBzZXQgIiwgRWxlbWVudEVkaXRTZXJ2aWNlVXRpbHMuZ2V0RWRpdFNlcnZpY2VQcm92aWRlcigpLmlzS25vd25FbGVtZW50VHlwZSgib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LlJlZmluZV9BYnN0cmFjdGlvbiIpKTsNCisJfQ0KKw0KKyAgICBAVGVzdA0KKwlwdWJsaWMgdm9pZCB0ZXN0UmVnaXN0cnlDb250ZW50Rm9yUmVmaW5lX0RpcmVjdGVkUmVsYXRpb25zaGlwKCkgew0KKwkJQXNzZXJ0LmFzc2VydFRydWUoIlJlZmluZSBEaXJlY3RlZFJlbGF0aW9uc2hpcCBlbGVtZW50IHR5cGUgbm90IGZvdW5kIGluIFN5c01MIGVsZW1lbnQgdHlwZSBzZXQgIiwgRWxlbWVudEVkaXRTZXJ2aWNlVXRpbHMuZ2V0RWRpdFNlcnZpY2VQcm92aWRlcigpLmlzS25vd25FbGVtZW50VHlwZSgib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LlJlZmluZV9EaXJlY3RlZFJlbGF0aW9uc2hpcCIpKTsNCisJfQ0KKw0KKyAgICBAVGVzdA0KKwlwdWJsaWMgdm9pZCB0ZXN0UmVnaXN0cnlDb250ZW50Rm9yRmxvd1BvcnQoKSB7DQorCQlBc3NlcnQuYXNzZXJ0VHJ1ZSgiRmxvd1BvcnQgZWxlbWVudCB0eXBlIG5vdCBmb3VuZCBpbiBTeXNNTCBlbGVtZW50IHR5cGUgc2V0ICIsIEVsZW1lbnRFZGl0U2VydmljZVV0aWxzLmdldEVkaXRTZXJ2aWNlUHJvdmlkZXIoKS5pc0tub3duRWxlbWVudFR5cGUoIm9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5GbG93UG9ydCIpKTsNCisJfQ0KKw0KKyAgICBAVGVzdA0KKwlwdWJsaWMgdm9pZCB0ZXN0UmVnaXN0cnlDb250ZW50Rm9yRmxvd1NwZWNpZmljYXRpb24oKSB7DQorCQlBc3NlcnQuYXNzZXJ0VHJ1ZSgiRmxvd1NwZWNpZmljYXRpb24gZWxlbWVudCB0eXBlIG5vdCBmb3VuZCBpbiBTeXNNTCBlbGVtZW50IHR5cGUgc2V0ICIsIEVsZW1lbnRFZGl0U2VydmljZVV0aWxzLmdldEVkaXRTZXJ2aWNlUHJvdmlkZXIoKS5pc0tub3duRWxlbWVudFR5cGUoIm9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5GbG93U3BlY2lmaWNhdGlvbiIpKTsNCisJfQ0KKw0KKyAgICBAVGVzdA0KKwlwdWJsaWMgdm9pZCB0ZXN0UmVnaXN0cnlDb250ZW50Rm9yQWxsb2NhdGVkKCkgew0KKwkJQXNzZXJ0LmFzc2VydFRydWUoIkFsbG9jYXRlZCBlbGVtZW50IHR5cGUgbm90IGZvdW5kIGluIFN5c01MIGVsZW1lbnQgdHlwZSBzZXQgIiwgRWxlbWVudEVkaXRTZXJ2aWNlVXRpbHMuZ2V0RWRpdFNlcnZpY2VQcm92aWRlcigpLmlzS25vd25FbGVtZW50VHlwZSgib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LkFsbG9jYXRlZCIpKTsNCisJfQ0KKw0KKyAgICBAVGVzdA0KKwlwdWJsaWMgdm9pZCB0ZXN0UmVnaXN0cnlDb250ZW50Rm9yUmVxdWlyZW1lbnRSZWxhdGVkKCkgew0KKwkJQXNzZXJ0LmFzc2VydFRydWUoIlJlcXVpcmVtZW50UmVsYXRlZCBlbGVtZW50IHR5cGUgbm90IGZvdW5kIGluIFN5c01MIGVsZW1lbnQgdHlwZSBzZXQgIiwgRWxlbWVudEVkaXRTZXJ2aWNlVXRpbHMuZ2V0RWRpdFNlcnZpY2VQcm92aWRlcigpLmlzS25vd25FbGVtZW50VHlwZSgib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LlJlcXVpcmVtZW50UmVsYXRlZCIpKTsNCisJfQ0KKw0KKyAgICBAVGVzdA0KKwlwdWJsaWMgdm9pZCB0ZXN0UmVnaXN0cnlDb250ZW50Rm9yVW5pdCgpIHsNCisJCUFzc2VydC5hc3NlcnRUcnVlKCJVbml0IGVsZW1lbnQgdHlwZSBub3QgZm91bmQgaW4gU3lzTUwgZWxlbWVudCB0eXBlIHNldCAiLCBFbGVtZW50RWRpdFNlcnZpY2VVdGlscy5nZXRFZGl0U2VydmljZVByb3ZpZGVyKCkuaXNLbm93bkVsZW1lbnRUeXBlKCJvcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuVW5pdCIpKTsNCisJfQ0KKw0KKyAgICBAVGVzdA0KKwlwdWJsaWMgdm9pZCB0ZXN0UmVnaXN0cnlDb250ZW50Rm9yUXVhbnRpdHlLaW5kKCkgew0KKwkJQXNzZXJ0LmFzc2VydFRydWUoIlF1YW50aXR5S2luZCBlbGVtZW50IHR5cGUgbm90IGZvdW5kIGluIFN5c01MIGVsZW1lbnQgdHlwZSBzZXQgIiwgRWxlbWVudEVkaXRTZXJ2aWNlVXRpbHMuZ2V0RWRpdFNlcnZpY2VQcm92aWRlcigpLmlzS25vd25FbGVtZW50VHlwZSgib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LlF1YW50aXR5S2luZCIpKTsNCisJfQ0KKw0KKyAgICBAVGVzdA0KKwlwdWJsaWMgdm9pZCB0ZXN0UmVnaXN0cnlDb250ZW50Rm9yUGFydEFzc29jaWF0aW9uKCkgew0KKwkJQXNzZXJ0LmFzc2VydFRydWUoIlBhcnRBc3NvY2lhdGlvbiBlbGVtZW50IHR5cGUgbm90IGZvdW5kIGluIFN5c01MIGVsZW1lbnQgdHlwZSBzZXQgIiwgRWxlbWVudEVkaXRTZXJ2aWNlVXRpbHMuZ2V0RWRpdFNlcnZpY2VQcm92aWRlcigpLmlzS25vd25FbGVtZW50VHlwZSgib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LlBhcnRBc3NvY2lhdGlvbiIpKTsNCisJfQ0KKw0KKw0KKw0KK30NCmRpZmYgLS1naXQgYS9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5zZXJ2aWNlLnR5cGVzLy5jbGFzc3BhdGggYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5zZXJ2aWNlLnR5cGVzLy5jbGFzc3BhdGgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGE4ZjE2NgotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnNlcnZpY2UudHlwZXMvLmNsYXNzcGF0aApAQCAtMCwwICsxLDcgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+DQorPGNsYXNzcGF0aD4NCisJPGNsYXNzcGF0aGVudHJ5IGtpbmQ9ImNvbiIgcGF0aD0ib3JnLmVjbGlwc2UuamR0LmxhdW5jaGluZy5KUkVfQ09OVEFJTkVSL29yZy5lY2xpcHNlLmpkdC5pbnRlcm5hbC5kZWJ1Zy51aS5sYXVuY2hlci5TdGFuZGFyZFZNVHlwZS9KYXZhU0UtMS42Ii8+DQorCTxjbGFzc3BhdGhlbnRyeSBraW5kPSJjb24iIHBhdGg9Im9yZy5lY2xpcHNlLnBkZS5jb3JlLnJlcXVpcmVkUGx1Z2lucyIvPg0KKwk8Y2xhc3NwYXRoZW50cnkga2luZD0ic3JjIiBwYXRoPSJzcmMiLz4NCisJPGNsYXNzcGF0aGVudHJ5IGtpbmQ9Im91dHB1dCIgcGF0aD0iYmluIi8+DQorPC9jbGFzc3BhdGg+DQpkaWZmIC0tZ2l0IGEvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuc2VydmljZS50eXBlcy8ucHJvamVjdCBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnNlcnZpY2UudHlwZXMvLnByb2plY3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTMxN2JkNQotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnNlcnZpY2UudHlwZXMvLnByb2plY3QKQEAgLTAsMCArMSwyOCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4NCis8cHJvamVjdERlc2NyaXB0aW9uPg0KKwk8bmFtZT5vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuc2VydmljZS50eXBlczwvbmFtZT4NCisJPGNvbW1lbnQ+PC9jb21tZW50Pg0KKwk8cHJvamVjdHM+DQorCTwvcHJvamVjdHM+DQorCTxidWlsZFNwZWM+DQorCQk8YnVpbGRDb21tYW5kPg0KKwkJCTxuYW1lPm9yZy5lY2xpcHNlLmpkdC5jb3JlLmphdmFidWlsZGVyPC9uYW1lPg0KKwkJCTxhcmd1bWVudHM+DQorCQkJPC9hcmd1bWVudHM+DQorCQk8L2J1aWxkQ29tbWFuZD4NCisJCTxidWlsZENvbW1hbmQ+DQorCQkJPG5hbWU+b3JnLmVjbGlwc2UucGRlLk1hbmlmZXN0QnVpbGRlcjwvbmFtZT4NCisJCQk8YXJndW1lbnRzPg0KKwkJCTwvYXJndW1lbnRzPg0KKwkJPC9idWlsZENvbW1hbmQ+DQorCQk8YnVpbGRDb21tYW5kPg0KKwkJCTxuYW1lPm9yZy5lY2xpcHNlLnBkZS5TY2hlbWFCdWlsZGVyPC9uYW1lPg0KKwkJCTxhcmd1bWVudHM+DQorCQkJPC9hcmd1bWVudHM+DQorCQk8L2J1aWxkQ29tbWFuZD4NCisJPC9idWlsZFNwZWM+DQorCTxuYXR1cmVzPg0KKwkJPG5hdHVyZT5vcmcuZWNsaXBzZS5wZGUuUGx1Z2luTmF0dXJlPC9uYXR1cmU+DQorCQk8bmF0dXJlPm9yZy5lY2xpcHNlLmpkdC5jb3JlLmphdmFuYXR1cmU8L25hdHVyZT4NCisJPC9uYXR1cmVzPg0KKzwvcHJvamVjdERlc2NyaXB0aW9uPg0KZGlmZiAtLWdpdCBhL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnNlcnZpY2UudHlwZXMvLnNldHRpbmdzL29yZy5lY2xpcHNlLmpkdC5jb3JlLnByZWZzIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuc2VydmljZS50eXBlcy8uc2V0dGluZ3Mvb3JnLmVjbGlwc2UuamR0LmNvcmUucHJlZnMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDEwMjQ0ZAotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnNlcnZpY2UudHlwZXMvLnNldHRpbmdzL29yZy5lY2xpcHNlLmpkdC5jb3JlLnByZWZzCkBAIC0wLDAgKzEsMjkxIEBACitlY2xpcHNlLnByZWZlcmVuY2VzLnZlcnNpb249MQ0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLmNvZGVnZW4uaW5saW5lSnNyQnl0ZWNvZGU9ZW5hYmxlZA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLmNvZGVnZW4udGFyZ2V0UGxhdGZvcm09MS42DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIuY29tcGxpYW5jZT0xLjYNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLmFzc2VydElkZW50aWZpZXI9ZXJyb3INCitvcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLmVudW1JZGVudGlmaWVyPWVycm9yDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIuc291cmNlPTEuNg0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5hbGlnbl90eXBlX21lbWJlcnNfb25fY29sdW1ucz1mYWxzZQ0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5hbGlnbm1lbnRfZm9yX2FyZ3VtZW50c19pbl9hbGxvY2F0aW9uX2V4cHJlc3Npb249MTYNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuYWxpZ25tZW50X2Zvcl9hcmd1bWVudHNfaW5fYW5ub3RhdGlvbj0wDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmFsaWdubWVudF9mb3JfYXJndW1lbnRzX2luX2VudW1fY29uc3RhbnQ9MTYNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuYWxpZ25tZW50X2Zvcl9hcmd1bWVudHNfaW5fZXhwbGljaXRfY29uc3RydWN0b3JfY2FsbD0xNg0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5hbGlnbm1lbnRfZm9yX2FyZ3VtZW50c19pbl9tZXRob2RfaW52b2NhdGlvbj0xNg0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5hbGlnbm1lbnRfZm9yX2FyZ3VtZW50c19pbl9xdWFsaWZpZWRfYWxsb2NhdGlvbl9leHByZXNzaW9uPTE2DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmFsaWdubWVudF9mb3JfYXNzaWdubWVudD0wDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmFsaWdubWVudF9mb3JfYmluYXJ5X2V4cHJlc3Npb249MTYNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuYWxpZ25tZW50X2Zvcl9jb21wYWN0X2lmPTE2DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmFsaWdubWVudF9mb3JfY29uZGl0aW9uYWxfZXhwcmVzc2lvbj04MA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5hbGlnbm1lbnRfZm9yX2VudW1fY29uc3RhbnRzPTANCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuYWxpZ25tZW50X2Zvcl9leHByZXNzaW9uc19pbl9hcnJheV9pbml0aWFsaXplcj0xNg0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5hbGlnbm1lbnRfZm9yX21ldGhvZF9kZWNsYXJhdGlvbj0wDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmFsaWdubWVudF9mb3JfbXVsdGlwbGVfZmllbGRzPTE2DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmFsaWdubWVudF9mb3JfcGFyYW1ldGVyc19pbl9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbj0xNg0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5hbGlnbm1lbnRfZm9yX3BhcmFtZXRlcnNfaW5fbWV0aG9kX2RlY2xhcmF0aW9uPTE2DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmFsaWdubWVudF9mb3JfcmVzb3VyY2VzX2luX3RyeT04MA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5hbGlnbm1lbnRfZm9yX3NlbGVjdG9yX2luX21ldGhvZF9pbnZvY2F0aW9uPTE2DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmFsaWdubWVudF9mb3Jfc3VwZXJjbGFzc19pbl90eXBlX2RlY2xhcmF0aW9uPTE2DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmFsaWdubWVudF9mb3Jfc3VwZXJpbnRlcmZhY2VzX2luX2VudW1fZGVjbGFyYXRpb249MTYNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuYWxpZ25tZW50X2Zvcl9zdXBlcmludGVyZmFjZXNfaW5fdHlwZV9kZWNsYXJhdGlvbj0xNg0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5hbGlnbm1lbnRfZm9yX3Rocm93c19jbGF1c2VfaW5fY29uc3RydWN0b3JfZGVjbGFyYXRpb249MTYNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuYWxpZ25tZW50X2Zvcl90aHJvd3NfY2xhdXNlX2luX21ldGhvZF9kZWNsYXJhdGlvbj0xNg0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5hbGlnbm1lbnRfZm9yX3VuaW9uX3R5cGVfaW5fbXVsdGljYXRjaD0xNg0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5ibGFua19saW5lc19hZnRlcl9pbXBvcnRzPTENCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuYmxhbmtfbGluZXNfYWZ0ZXJfcGFja2FnZT0xDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmJsYW5rX2xpbmVzX2JlZm9yZV9maWVsZD0wDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmJsYW5rX2xpbmVzX2JlZm9yZV9maXJzdF9jbGFzc19ib2R5X2RlY2xhcmF0aW9uPTANCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuYmxhbmtfbGluZXNfYmVmb3JlX2ltcG9ydHM9MQ0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5ibGFua19saW5lc19iZWZvcmVfbWVtYmVyX3R5cGU9MQ0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5ibGFua19saW5lc19iZWZvcmVfbWV0aG9kPTENCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuYmxhbmtfbGluZXNfYmVmb3JlX25ld19jaHVuaz0xDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmJsYW5rX2xpbmVzX2JlZm9yZV9wYWNrYWdlPTANCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuYmxhbmtfbGluZXNfYmV0d2Vlbl9pbXBvcnRfZ3JvdXBzPTENCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuYmxhbmtfbGluZXNfYmV0d2Vlbl90eXBlX2RlY2xhcmF0aW9ucz0xDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmJyYWNlX3Bvc2l0aW9uX2Zvcl9hbm5vdGF0aW9uX3R5cGVfZGVjbGFyYXRpb249ZW5kX29mX2xpbmUNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuYnJhY2VfcG9zaXRpb25fZm9yX2Fub255bW91c190eXBlX2RlY2xhcmF0aW9uPWVuZF9vZl9saW5lDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmJyYWNlX3Bvc2l0aW9uX2Zvcl9hcnJheV9pbml0aWFsaXplcj1lbmRfb2ZfbGluZQ0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5icmFjZV9wb3NpdGlvbl9mb3JfYmxvY2s9ZW5kX29mX2xpbmUNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuYnJhY2VfcG9zaXRpb25fZm9yX2Jsb2NrX2luX2Nhc2U9ZW5kX29mX2xpbmUNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuYnJhY2VfcG9zaXRpb25fZm9yX2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uPWVuZF9vZl9saW5lDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmJyYWNlX3Bvc2l0aW9uX2Zvcl9lbnVtX2NvbnN0YW50PWVuZF9vZl9saW5lDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmJyYWNlX3Bvc2l0aW9uX2Zvcl9lbnVtX2RlY2xhcmF0aW9uPWVuZF9vZl9saW5lDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmJyYWNlX3Bvc2l0aW9uX2Zvcl9sYW1iZGFfYm9keT1lbmRfb2ZfbGluZQ0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5icmFjZV9wb3NpdGlvbl9mb3JfbWV0aG9kX2RlY2xhcmF0aW9uPWVuZF9vZl9saW5lDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmJyYWNlX3Bvc2l0aW9uX2Zvcl9zd2l0Y2g9ZW5kX29mX2xpbmUNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuYnJhY2VfcG9zaXRpb25fZm9yX3R5cGVfZGVjbGFyYXRpb249ZW5kX29mX2xpbmUNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuY29tbWVudC5jbGVhcl9ibGFua19saW5lc19pbl9ibG9ja19jb21tZW50PWZhbHNlDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmNvbW1lbnQuY2xlYXJfYmxhbmtfbGluZXNfaW5famF2YWRvY19jb21tZW50PWZhbHNlDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmNvbW1lbnQuZm9ybWF0X2Jsb2NrX2NvbW1lbnRzPXRydWUNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuY29tbWVudC5mb3JtYXRfaGVhZGVyPWZhbHNlDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmNvbW1lbnQuZm9ybWF0X2h0bWw9dHJ1ZQ0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5jb21tZW50LmZvcm1hdF9qYXZhZG9jX2NvbW1lbnRzPXRydWUNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuY29tbWVudC5mb3JtYXRfbGluZV9jb21tZW50cz10cnVlDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmNvbW1lbnQuZm9ybWF0X3NvdXJjZV9jb2RlPXRydWUNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuY29tbWVudC5pbmRlbnRfcGFyYW1ldGVyX2Rlc2NyaXB0aW9uPXRydWUNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuY29tbWVudC5pbmRlbnRfcm9vdF90YWdzPXRydWUNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuY29tbWVudC5pbnNlcnRfbmV3X2xpbmVfYmVmb3JlX3Jvb3RfdGFncz1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuY29tbWVudC5pbnNlcnRfbmV3X2xpbmVfZm9yX3BhcmFtZXRlcj1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuY29tbWVudC5saW5lX2xlbmd0aD0yNjANCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuY29tbWVudC5uZXdfbGluZXNfYXRfYmxvY2tfYm91bmRhcmllcz10cnVlDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmNvbW1lbnQubmV3X2xpbmVzX2F0X2phdmFkb2NfYm91bmRhcmllcz10cnVlDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmNvbW1lbnQucHJlc2VydmVfd2hpdGVfc3BhY2VfYmV0d2Vlbl9jb2RlX2FuZF9saW5lX2NvbW1lbnRzPWZhbHNlDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmNvbXBhY3RfZWxzZV9pZj10cnVlDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmNvbnRpbnVhdGlvbl9pbmRlbnRhdGlvbj0yDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmNvbnRpbnVhdGlvbl9pbmRlbnRhdGlvbl9mb3JfYXJyYXlfaW5pdGlhbGl6ZXI9Mg0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5kaXNhYmxpbmdfdGFnPUBmb3JtYXR0ZXJcOm9mZg0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5lbmFibGluZ190YWc9QGZvcm1hdHRlclw6b24NCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuZm9ybWF0X2d1YXJkaWFuX2NsYXVzZV9vbl9vbmVfbGluZT1mYWxzZQ0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5mb3JtYXRfbGluZV9jb21tZW50X3N0YXJ0aW5nX29uX2ZpcnN0X2NvbHVtbj10cnVlDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluZGVudF9ib2R5X2RlY2xhcmF0aW9uc19jb21wYXJlX3RvX2Fubm90YXRpb25fZGVjbGFyYXRpb25faGVhZGVyPXRydWUNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5kZW50X2JvZHlfZGVjbGFyYXRpb25zX2NvbXBhcmVfdG9fZW51bV9jb25zdGFudF9oZWFkZXI9dHJ1ZQ0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbmRlbnRfYm9keV9kZWNsYXJhdGlvbnNfY29tcGFyZV90b19lbnVtX2RlY2xhcmF0aW9uX2hlYWRlcj10cnVlDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluZGVudF9ib2R5X2RlY2xhcmF0aW9uc19jb21wYXJlX3RvX3R5cGVfaGVhZGVyPXRydWUNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5kZW50X2JyZWFrc19jb21wYXJlX3RvX2Nhc2VzPXRydWUNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5kZW50X2VtcHR5X2xpbmVzPWZhbHNlDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluZGVudF9zdGF0ZW1lbnRzX2NvbXBhcmVfdG9fYmxvY2s9dHJ1ZQ0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbmRlbnRfc3RhdGVtZW50c19jb21wYXJlX3RvX2JvZHk9dHJ1ZQ0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbmRlbnRfc3dpdGNoc3RhdGVtZW50c19jb21wYXJlX3RvX2Nhc2VzPXRydWUNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5kZW50X3N3aXRjaHN0YXRlbWVudHNfY29tcGFyZV90b19zd2l0Y2g9ZmFsc2UNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5kZW50YXRpb24uc2l6ZT00DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9uZXdfbGluZV9hZnRlcl9hbm5vdGF0aW9uX29uX2ZpZWxkPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfbmV3X2xpbmVfYWZ0ZXJfYW5ub3RhdGlvbl9vbl9sb2NhbF92YXJpYWJsZT1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X25ld19saW5lX2FmdGVyX2Fubm90YXRpb25fb25fbWV0aG9kPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfbmV3X2xpbmVfYWZ0ZXJfYW5ub3RhdGlvbl9vbl9wYWNrYWdlPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfbmV3X2xpbmVfYWZ0ZXJfYW5ub3RhdGlvbl9vbl9wYXJhbWV0ZXI9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfbmV3X2xpbmVfYWZ0ZXJfYW5ub3RhdGlvbl9vbl90eXBlPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfbmV3X2xpbmVfYWZ0ZXJfbGFiZWw9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfbmV3X2xpbmVfYWZ0ZXJfb3BlbmluZ19icmFjZV9pbl9hcnJheV9pbml0aWFsaXplcj1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9uZXdfbGluZV9hZnRlcl90eXBlX2Fubm90YXRpb249ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfbmV3X2xpbmVfYXRfZW5kX29mX2ZpbGVfaWZfbWlzc2luZz1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9uZXdfbGluZV9iZWZvcmVfY2F0Y2hfaW5fdHJ5X3N0YXRlbWVudD1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9uZXdfbGluZV9iZWZvcmVfY2xvc2luZ19icmFjZV9pbl9hcnJheV9pbml0aWFsaXplcj1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9uZXdfbGluZV9iZWZvcmVfZWxzZV9pbl9pZl9zdGF0ZW1lbnQ9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfbmV3X2xpbmVfYmVmb3JlX2ZpbmFsbHlfaW5fdHJ5X3N0YXRlbWVudD1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9uZXdfbGluZV9iZWZvcmVfd2hpbGVfaW5fZG9fc3RhdGVtZW50PWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X25ld19saW5lX2luX2VtcHR5X2Fubm90YXRpb25fZGVjbGFyYXRpb249aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9uZXdfbGluZV9pbl9lbXB0eV9hbm9ueW1vdXNfdHlwZV9kZWNsYXJhdGlvbj1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X25ld19saW5lX2luX2VtcHR5X2Jsb2NrPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfbmV3X2xpbmVfaW5fZW1wdHlfZW51bV9jb25zdGFudD1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X25ld19saW5lX2luX2VtcHR5X2VudW1fZGVjbGFyYXRpb249aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9uZXdfbGluZV9pbl9lbXB0eV9tZXRob2RfYm9keT1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X25ld19saW5lX2luX2VtcHR5X3R5cGVfZGVjbGFyYXRpb249aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9hbmRfaW5fdHlwZV9wYXJhbWV0ZXI9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9hc3NpZ25tZW50X29wZXJhdG9yPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfYXRfaW5fYW5ub3RhdGlvbj1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9hdF9pbl9hbm5vdGF0aW9uX3R5cGVfZGVjbGFyYXRpb249ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfYmluYXJ5X29wZXJhdG9yPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfY2xvc2luZ19hbmdsZV9icmFja2V0X2luX3R5cGVfYXJndW1lbnRzPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfY2xvc2luZ19hbmdsZV9icmFja2V0X2luX3R5cGVfcGFyYW1ldGVycz1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX2Nsb3NpbmdfYnJhY2VfaW5fYmxvY2s9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9jbG9zaW5nX3BhcmVuX2luX2Nhc3Q9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9jb2xvbl9pbl9hc3NlcnQ9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9jb2xvbl9pbl9jYXNlPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfY29sb25faW5fY29uZGl0aW9uYWw9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9jb2xvbl9pbl9mb3I9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9jb2xvbl9pbl9sYWJlbGVkX3N0YXRlbWVudD1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX2NvbW1hX2luX2FsbG9jYXRpb25fZXhwcmVzc2lvbj1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX2NvbW1hX2luX2Fubm90YXRpb249aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9jb21tYV9pbl9hcnJheV9pbml0aWFsaXplcj1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX2NvbW1hX2luX2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uX3BhcmFtZXRlcnM9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9jb21tYV9pbl9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbl90aHJvd3M9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9jb21tYV9pbl9lbnVtX2NvbnN0YW50X2FyZ3VtZW50cz1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX2NvbW1hX2luX2VudW1fZGVjbGFyYXRpb25zPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfY29tbWFfaW5fZXhwbGljaXRjb25zdHJ1Y3RvcmNhbGxfYXJndW1lbnRzPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfY29tbWFfaW5fZm9yX2luY3JlbWVudHM9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9jb21tYV9pbl9mb3JfaW5pdHM9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9jb21tYV9pbl9tZXRob2RfZGVjbGFyYXRpb25fcGFyYW1ldGVycz1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX2NvbW1hX2luX21ldGhvZF9kZWNsYXJhdGlvbl90aHJvd3M9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9jb21tYV9pbl9tZXRob2RfaW52b2NhdGlvbl9hcmd1bWVudHM9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9jb21tYV9pbl9tdWx0aXBsZV9maWVsZF9kZWNsYXJhdGlvbnM9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9jb21tYV9pbl9tdWx0aXBsZV9sb2NhbF9kZWNsYXJhdGlvbnM9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9jb21tYV9pbl9wYXJhbWV0ZXJpemVkX3R5cGVfcmVmZXJlbmNlPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfY29tbWFfaW5fc3VwZXJpbnRlcmZhY2VzPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfY29tbWFfaW5fdHlwZV9hcmd1bWVudHM9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9jb21tYV9pbl90eXBlX3BhcmFtZXRlcnM9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9lbGxpcHNpcz1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX2xhbWJkYV9hcnJvdz1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX29wZW5pbmdfYW5nbGVfYnJhY2tldF9pbl9wYXJhbWV0ZXJpemVkX3R5cGVfcmVmZXJlbmNlPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX29wZW5pbmdfYW5nbGVfYnJhY2tldF9pbl90eXBlX2FyZ3VtZW50cz1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9vcGVuaW5nX2FuZ2xlX2JyYWNrZXRfaW5fdHlwZV9wYXJhbWV0ZXJzPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX29wZW5pbmdfYnJhY2VfaW5fYXJyYXlfaW5pdGlhbGl6ZXI9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9vcGVuaW5nX2JyYWNrZXRfaW5fYXJyYXlfYWxsb2NhdGlvbl9leHByZXNzaW9uPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX29wZW5pbmdfYnJhY2tldF9pbl9hcnJheV9yZWZlcmVuY2U9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfb3BlbmluZ19wYXJlbl9pbl9hbm5vdGF0aW9uPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX29wZW5pbmdfcGFyZW5faW5fY2FzdD1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9vcGVuaW5nX3BhcmVuX2luX2NhdGNoPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX29wZW5pbmdfcGFyZW5faW5fY29uc3RydWN0b3JfZGVjbGFyYXRpb249ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfb3BlbmluZ19wYXJlbl9pbl9lbnVtX2NvbnN0YW50PWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX29wZW5pbmdfcGFyZW5faW5fZm9yPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX29wZW5pbmdfcGFyZW5faW5faWY9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfb3BlbmluZ19wYXJlbl9pbl9tZXRob2RfZGVjbGFyYXRpb249ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfb3BlbmluZ19wYXJlbl9pbl9tZXRob2RfaW52b2NhdGlvbj1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9vcGVuaW5nX3BhcmVuX2luX3BhcmVudGhlc2l6ZWRfZXhwcmVzc2lvbj1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9vcGVuaW5nX3BhcmVuX2luX3N3aXRjaD1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9vcGVuaW5nX3BhcmVuX2luX3N5bmNocm9uaXplZD1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9vcGVuaW5nX3BhcmVuX2luX3RyeT1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9vcGVuaW5nX3BhcmVuX2luX3doaWxlPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX3Bvc3RmaXhfb3BlcmF0b3I9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfcHJlZml4X29wZXJhdG9yPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX3F1ZXN0aW9uX2luX2NvbmRpdGlvbmFsPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfcXVlc3Rpb25faW5fd2lsZGNhcmQ9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfc2VtaWNvbG9uX2luX2Zvcj1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX3NlbWljb2xvbl9pbl90cnlfcmVzb3VyY2VzPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfdW5hcnlfb3BlcmF0b3I9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2FuZF9pbl90eXBlX3BhcmFtZXRlcj1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9hc3NpZ25tZW50X29wZXJhdG9yPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2F0X2luX2Fubm90YXRpb25fdHlwZV9kZWNsYXJhdGlvbj1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9iaW5hcnlfb3BlcmF0b3I9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfY2xvc2luZ19hbmdsZV9icmFja2V0X2luX3BhcmFtZXRlcml6ZWRfdHlwZV9yZWZlcmVuY2U9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2Nsb3NpbmdfYW5nbGVfYnJhY2tldF9pbl90eXBlX2FyZ3VtZW50cz1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfY2xvc2luZ19hbmdsZV9icmFja2V0X2luX3R5cGVfcGFyYW1ldGVycz1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfY2xvc2luZ19icmFjZV9pbl9hcnJheV9pbml0aWFsaXplcj1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9jbG9zaW5nX2JyYWNrZXRfaW5fYXJyYXlfYWxsb2NhdGlvbl9leHByZXNzaW9uPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9jbG9zaW5nX2JyYWNrZXRfaW5fYXJyYXlfcmVmZXJlbmNlPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9jbG9zaW5nX3BhcmVuX2luX2Fubm90YXRpb249ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2Nsb3NpbmdfcGFyZW5faW5fY2FzdD1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfY2xvc2luZ19wYXJlbl9pbl9jYXRjaD1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfY2xvc2luZ19wYXJlbl9pbl9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbj1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfY2xvc2luZ19wYXJlbl9pbl9lbnVtX2NvbnN0YW50PWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9jbG9zaW5nX3BhcmVuX2luX2Zvcj1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfY2xvc2luZ19wYXJlbl9pbl9pZj1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfY2xvc2luZ19wYXJlbl9pbl9tZXRob2RfZGVjbGFyYXRpb249ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2Nsb3NpbmdfcGFyZW5faW5fbWV0aG9kX2ludm9jYXRpb249ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2Nsb3NpbmdfcGFyZW5faW5fcGFyZW50aGVzaXplZF9leHByZXNzaW9uPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9jbG9zaW5nX3BhcmVuX2luX3N3aXRjaD1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfY2xvc2luZ19wYXJlbl9pbl9zeW5jaHJvbml6ZWQ9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2Nsb3NpbmdfcGFyZW5faW5fdHJ5PWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9jbG9zaW5nX3BhcmVuX2luX3doaWxlPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9jb2xvbl9pbl9hc3NlcnQ9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfY29sb25faW5fY2FzZT1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfY29sb25faW5fY29uZGl0aW9uYWw9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfY29sb25faW5fZGVmYXVsdD1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfY29sb25faW5fZm9yPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2NvbG9uX2luX2xhYmVsZWRfc3RhdGVtZW50PWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9jb21tYV9pbl9hbGxvY2F0aW9uX2V4cHJlc3Npb249ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2NvbW1hX2luX2Fubm90YXRpb249ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2NvbW1hX2luX2FycmF5X2luaXRpYWxpemVyPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9jb21tYV9pbl9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbl9wYXJhbWV0ZXJzPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9jb21tYV9pbl9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbl90aHJvd3M9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2NvbW1hX2luX2VudW1fY29uc3RhbnRfYXJndW1lbnRzPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9jb21tYV9pbl9lbnVtX2RlY2xhcmF0aW9ucz1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfY29tbWFfaW5fZXhwbGljaXRjb25zdHJ1Y3RvcmNhbGxfYXJndW1lbnRzPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9jb21tYV9pbl9mb3JfaW5jcmVtZW50cz1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfY29tbWFfaW5fZm9yX2luaXRzPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9jb21tYV9pbl9tZXRob2RfZGVjbGFyYXRpb25fcGFyYW1ldGVycz1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfY29tbWFfaW5fbWV0aG9kX2RlY2xhcmF0aW9uX3Rocm93cz1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfY29tbWFfaW5fbWV0aG9kX2ludm9jYXRpb25fYXJndW1lbnRzPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9jb21tYV9pbl9tdWx0aXBsZV9maWVsZF9kZWNsYXJhdGlvbnM9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2NvbW1hX2luX211bHRpcGxlX2xvY2FsX2RlY2xhcmF0aW9ucz1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfY29tbWFfaW5fcGFyYW1ldGVyaXplZF90eXBlX3JlZmVyZW5jZT1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfY29tbWFfaW5fc3VwZXJpbnRlcmZhY2VzPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9jb21tYV9pbl90eXBlX2FyZ3VtZW50cz1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfY29tbWFfaW5fdHlwZV9wYXJhbWV0ZXJzPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9lbGxpcHNpcz1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfbGFtYmRhX2Fycm93PWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX29wZW5pbmdfYW5nbGVfYnJhY2tldF9pbl9wYXJhbWV0ZXJpemVkX3R5cGVfcmVmZXJlbmNlPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9vcGVuaW5nX2FuZ2xlX2JyYWNrZXRfaW5fdHlwZV9hcmd1bWVudHM9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX29wZW5pbmdfYW5nbGVfYnJhY2tldF9pbl90eXBlX3BhcmFtZXRlcnM9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX29wZW5pbmdfYnJhY2VfaW5fYW5ub3RhdGlvbl90eXBlX2RlY2xhcmF0aW9uPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX29wZW5pbmdfYnJhY2VfaW5fYW5vbnltb3VzX3R5cGVfZGVjbGFyYXRpb249aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfb3BlbmluZ19icmFjZV9pbl9hcnJheV9pbml0aWFsaXplcj1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9vcGVuaW5nX2JyYWNlX2luX2Jsb2NrPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX29wZW5pbmdfYnJhY2VfaW5fY29uc3RydWN0b3JfZGVjbGFyYXRpb249aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfb3BlbmluZ19icmFjZV9pbl9lbnVtX2NvbnN0YW50PWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX29wZW5pbmdfYnJhY2VfaW5fZW51bV9kZWNsYXJhdGlvbj1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9vcGVuaW5nX2JyYWNlX2luX21ldGhvZF9kZWNsYXJhdGlvbj1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9vcGVuaW5nX2JyYWNlX2luX3N3aXRjaD1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9vcGVuaW5nX2JyYWNlX2luX3R5cGVfZGVjbGFyYXRpb249aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfb3BlbmluZ19icmFja2V0X2luX2FycmF5X2FsbG9jYXRpb25fZXhwcmVzc2lvbj1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfb3BlbmluZ19icmFja2V0X2luX2FycmF5X3JlZmVyZW5jZT1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfb3BlbmluZ19icmFja2V0X2luX2FycmF5X3R5cGVfcmVmZXJlbmNlPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9vcGVuaW5nX3BhcmVuX2luX2Fubm90YXRpb249ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX29wZW5pbmdfcGFyZW5faW5fYW5ub3RhdGlvbl90eXBlX21lbWJlcl9kZWNsYXJhdGlvbj1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfb3BlbmluZ19wYXJlbl9pbl9jYXRjaD1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9vcGVuaW5nX3BhcmVuX2luX2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9vcGVuaW5nX3BhcmVuX2luX2VudW1fY29uc3RhbnQ9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX29wZW5pbmdfcGFyZW5faW5fZm9yPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX29wZW5pbmdfcGFyZW5faW5faWY9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfb3BlbmluZ19wYXJlbl9pbl9tZXRob2RfZGVjbGFyYXRpb249ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX29wZW5pbmdfcGFyZW5faW5fbWV0aG9kX2ludm9jYXRpb249ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX29wZW5pbmdfcGFyZW5faW5fcGFyZW50aGVzaXplZF9leHByZXNzaW9uPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9vcGVuaW5nX3BhcmVuX2luX3N3aXRjaD1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9vcGVuaW5nX3BhcmVuX2luX3N5bmNocm9uaXplZD1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9vcGVuaW5nX3BhcmVuX2luX3RyeT1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9vcGVuaW5nX3BhcmVuX2luX3doaWxlPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX3BhcmVudGhlc2l6ZWRfZXhwcmVzc2lvbl9pbl9yZXR1cm49aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfcGFyZW50aGVzaXplZF9leHByZXNzaW9uX2luX3Rocm93PWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX3Bvc3RmaXhfb3BlcmF0b3I9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX3ByZWZpeF9vcGVyYXRvcj1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfcXVlc3Rpb25faW5fY29uZGl0aW9uYWw9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfcXVlc3Rpb25faW5fd2lsZGNhcmQ9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX3NlbWljb2xvbj1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfc2VtaWNvbG9uX2luX2Zvcj1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfc2VtaWNvbG9uX2luX3RyeV9yZXNvdXJjZXM9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX3VuYXJ5X29wZXJhdG9yPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JldHdlZW5fYnJhY2tldHNfaW5fYXJyYXlfdHlwZV9yZWZlcmVuY2U9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmV0d2Vlbl9lbXB0eV9icmFjZXNfaW5fYXJyYXlfaW5pdGlhbGl6ZXI9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmV0d2Vlbl9lbXB0eV9icmFja2V0c19pbl9hcnJheV9hbGxvY2F0aW9uX2V4cHJlc3Npb249ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmV0d2Vlbl9lbXB0eV9wYXJlbnNfaW5fYW5ub3RhdGlvbl90eXBlX21lbWJlcl9kZWNsYXJhdGlvbj1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZXR3ZWVuX2VtcHR5X3BhcmVuc19pbl9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbj1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZXR3ZWVuX2VtcHR5X3BhcmVuc19pbl9lbnVtX2NvbnN0YW50PWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JldHdlZW5fZW1wdHlfcGFyZW5zX2luX21ldGhvZF9kZWNsYXJhdGlvbj1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZXR3ZWVuX2VtcHR5X3BhcmVuc19pbl9tZXRob2RfaW52b2NhdGlvbj1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmpvaW5fbGluZXNfaW5fY29tbWVudHM9ZmFsc2UNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuam9pbl93cmFwcGVkX2xpbmVzPWZhbHNlDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmtlZXBfZWxzZV9zdGF0ZW1lbnRfb25fc2FtZV9saW5lPWZhbHNlDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmtlZXBfZW1wdHlfYXJyYXlfaW5pdGlhbGl6ZXJfb25fb25lX2xpbmU9ZmFsc2UNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIua2VlcF9pbXBsZV9pZl9vbl9vbmVfbGluZT1mYWxzZQ0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5rZWVwX3RoZW5fc3RhdGVtZW50X29uX3NhbWVfbGluZT1mYWxzZQ0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5saW5lU3BsaXQ9MjYwDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLm5ldmVyX2luZGVudF9ibG9ja19jb21tZW50c19vbl9maXJzdF9jb2x1bW49ZmFsc2UNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIubmV2ZXJfaW5kZW50X2xpbmVfY29tbWVudHNfb25fZmlyc3RfY29sdW1uPWZhbHNlDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLm51bWJlcl9vZl9ibGFua19saW5lc19hdF9iZWdpbm5pbmdfb2ZfbWV0aG9kX2JvZHk9MA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5udW1iZXJfb2ZfZW1wdHlfbGluZXNfdG9fcHJlc2VydmU9NQ0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5wdXRfZW1wdHlfc3RhdGVtZW50X29uX25ld19saW5lPXRydWUNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIudGFidWxhdGlvbi5jaGFyPXRhYg0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci50YWJ1bGF0aW9uLnNpemU9NA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci51c2Vfb25fb2ZmX3RhZ3M9ZmFsc2UNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIudXNlX3RhYnNfb25seV9mb3JfbGVhZGluZ19pbmRlbnRhdGlvbnM9ZmFsc2UNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIud3JhcF9iZWZvcmVfYmluYXJ5X29wZXJhdG9yPXRydWUNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIud3JhcF9iZWZvcmVfb3Jfb3BlcmF0b3JfbXVsdGljYXRjaD10cnVlDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLndyYXBfb3V0ZXJfZXhwcmVzc2lvbnNfd2hlbl9uZXN0ZWQ9dHJ1ZQ0KZGlmZiAtLWdpdCBhL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnNlcnZpY2UudHlwZXMvLnNldHRpbmdzL29yZy5lY2xpcHNlLmpkdC51aS5wcmVmcyBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnNlcnZpY2UudHlwZXMvLnNldHRpbmdzL29yZy5lY2xpcHNlLmpkdC51aS5wcmVmcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMWQ3MDRiCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuc2VydmljZS50eXBlcy8uc2V0dGluZ3Mvb3JnLmVjbGlwc2UuamR0LnVpLnByZWZzCkBAIC0wLDAgKzEsNjggQEAKK2NsZWFudXAuYWRkX2RlZmF1bHRfc2VyaWFsX3ZlcnNpb25faWQ9dHJ1ZQ0KK2NsZWFudXAuYWRkX2dlbmVyYXRlZF9zZXJpYWxfdmVyc2lvbl9pZD1mYWxzZQ0KK2NsZWFudXAuYWRkX21pc3NpbmdfYW5ub3RhdGlvbnM9dHJ1ZQ0KK2NsZWFudXAuYWRkX21pc3NpbmdfZGVwcmVjYXRlZF9hbm5vdGF0aW9ucz10cnVlDQorY2xlYW51cC5hZGRfbWlzc2luZ19tZXRob2RzPWZhbHNlDQorY2xlYW51cC5hZGRfbWlzc2luZ19ubHNfdGFncz1mYWxzZQ0KK2NsZWFudXAuYWRkX21pc3Npbmdfb3ZlcnJpZGVfYW5ub3RhdGlvbnM9dHJ1ZQ0KK2NsZWFudXAuYWRkX21pc3Npbmdfb3ZlcnJpZGVfYW5ub3RhdGlvbnNfaW50ZXJmYWNlX21ldGhvZHM9dHJ1ZQ0KK2NsZWFudXAuYWRkX3NlcmlhbF92ZXJzaW9uX2lkPWZhbHNlDQorY2xlYW51cC5hbHdheXNfdXNlX2Jsb2Nrcz10cnVlDQorY2xlYW51cC5hbHdheXNfdXNlX3BhcmVudGhlc2VzX2luX2V4cHJlc3Npb25zPWZhbHNlDQorY2xlYW51cC5hbHdheXNfdXNlX3RoaXNfZm9yX25vbl9zdGF0aWNfZmllbGRfYWNjZXNzPWZhbHNlDQorY2xlYW51cC5hbHdheXNfdXNlX3RoaXNfZm9yX25vbl9zdGF0aWNfbWV0aG9kX2FjY2Vzcz1mYWxzZQ0KK2NsZWFudXAuY29udmVydF9mdW5jdGlvbmFsX2ludGVyZmFjZXM9ZmFsc2UNCitjbGVhbnVwLmNvbnZlcnRfdG9fZW5oYW5jZWRfZm9yX2xvb3A9ZmFsc2UNCitjbGVhbnVwLmNvcnJlY3RfaW5kZW50YXRpb249ZmFsc2UNCitjbGVhbnVwLmZvcm1hdF9zb3VyY2VfY29kZT1mYWxzZQ0KK2NsZWFudXAuZm9ybWF0X3NvdXJjZV9jb2RlX2NoYW5nZXNfb25seT1mYWxzZQ0KK2NsZWFudXAuaW5zZXJ0X2luZmVycmVkX3R5cGVfYXJndW1lbnRzPWZhbHNlDQorY2xlYW51cC5tYWtlX2xvY2FsX3ZhcmlhYmxlX2ZpbmFsPXRydWUNCitjbGVhbnVwLm1ha2VfcGFyYW1ldGVyc19maW5hbD1mYWxzZQ0KK2NsZWFudXAubWFrZV9wcml2YXRlX2ZpZWxkc19maW5hbD10cnVlDQorY2xlYW51cC5tYWtlX3R5cGVfYWJzdHJhY3RfaWZfbWlzc2luZ19tZXRob2Q9ZmFsc2UNCitjbGVhbnVwLm1ha2VfdmFyaWFibGVfZGVjbGFyYXRpb25zX2ZpbmFsPWZhbHNlDQorY2xlYW51cC5uZXZlcl91c2VfYmxvY2tzPWZhbHNlDQorY2xlYW51cC5uZXZlcl91c2VfcGFyZW50aGVzZXNfaW5fZXhwcmVzc2lvbnM9dHJ1ZQ0KK2NsZWFudXAub3JnYW5pemVfaW1wb3J0cz1mYWxzZQ0KK2NsZWFudXAucXVhbGlmeV9zdGF0aWNfZmllbGRfYWNjZXNzZXNfd2l0aF9kZWNsYXJpbmdfY2xhc3M9ZmFsc2UNCitjbGVhbnVwLnF1YWxpZnlfc3RhdGljX21lbWJlcl9hY2Nlc3Nlc190aHJvdWdoX2luc3RhbmNlc193aXRoX2RlY2xhcmluZ19jbGFzcz10cnVlDQorY2xlYW51cC5xdWFsaWZ5X3N0YXRpY19tZW1iZXJfYWNjZXNzZXNfdGhyb3VnaF9zdWJ0eXBlc193aXRoX2RlY2xhcmluZ19jbGFzcz10cnVlDQorY2xlYW51cC5xdWFsaWZ5X3N0YXRpY19tZW1iZXJfYWNjZXNzZXNfd2l0aF9kZWNsYXJpbmdfY2xhc3M9dHJ1ZQ0KK2NsZWFudXAucXVhbGlmeV9zdGF0aWNfbWV0aG9kX2FjY2Vzc2VzX3dpdGhfZGVjbGFyaW5nX2NsYXNzPWZhbHNlDQorY2xlYW51cC5yZW1vdmVfcHJpdmF0ZV9jb25zdHJ1Y3RvcnM9dHJ1ZQ0KK2NsZWFudXAucmVtb3ZlX3JlZHVuZGFudF90eXBlX2FyZ3VtZW50cz10cnVlDQorY2xlYW51cC5yZW1vdmVfdHJhaWxpbmdfd2hpdGVzcGFjZXM9dHJ1ZQ0KK2NsZWFudXAucmVtb3ZlX3RyYWlsaW5nX3doaXRlc3BhY2VzX2FsbD10cnVlDQorY2xlYW51cC5yZW1vdmVfdHJhaWxpbmdfd2hpdGVzcGFjZXNfaWdub3JlX2VtcHR5PWZhbHNlDQorY2xlYW51cC5yZW1vdmVfdW5uZWNlc3NhcnlfY2FzdHM9dHJ1ZQ0KK2NsZWFudXAucmVtb3ZlX3VubmVjZXNzYXJ5X25sc190YWdzPXRydWUNCitjbGVhbnVwLnJlbW92ZV91bnVzZWRfaW1wb3J0cz10cnVlDQorY2xlYW51cC5yZW1vdmVfdW51c2VkX2xvY2FsX3ZhcmlhYmxlcz1mYWxzZQ0KK2NsZWFudXAucmVtb3ZlX3VudXNlZF9wcml2YXRlX2ZpZWxkcz10cnVlDQorY2xlYW51cC5yZW1vdmVfdW51c2VkX3ByaXZhdGVfbWVtYmVycz1mYWxzZQ0KK2NsZWFudXAucmVtb3ZlX3VudXNlZF9wcml2YXRlX21ldGhvZHM9dHJ1ZQ0KK2NsZWFudXAucmVtb3ZlX3VudXNlZF9wcml2YXRlX3R5cGVzPXRydWUNCitjbGVhbnVwLnNvcnRfbWVtYmVycz1mYWxzZQ0KK2NsZWFudXAuc29ydF9tZW1iZXJzX2FsbD1mYWxzZQ0KK2NsZWFudXAudXNlX2Fub255bW91c19jbGFzc19jcmVhdGlvbj1mYWxzZQ0KK2NsZWFudXAudXNlX2Jsb2Nrcz10cnVlDQorY2xlYW51cC51c2VfYmxvY2tzX29ubHlfZm9yX3JldHVybl9hbmRfdGhyb3c9ZmFsc2UNCitjbGVhbnVwLnVzZV9sYW1iZGE9dHJ1ZQ0KK2NsZWFudXAudXNlX3BhcmVudGhlc2VzX2luX2V4cHJlc3Npb25zPWZhbHNlDQorY2xlYW51cC51c2VfdGhpc19mb3Jfbm9uX3N0YXRpY19maWVsZF9hY2Nlc3M9ZmFsc2UNCitjbGVhbnVwLnVzZV90aGlzX2Zvcl9ub25fc3RhdGljX2ZpZWxkX2FjY2Vzc19vbmx5X2lmX25lY2Vzc2FyeT10cnVlDQorY2xlYW51cC51c2VfdGhpc19mb3Jfbm9uX3N0YXRpY19tZXRob2RfYWNjZXNzPWZhbHNlDQorY2xlYW51cC51c2VfdGhpc19mb3Jfbm9uX3N0YXRpY19tZXRob2RfYWNjZXNzX29ubHlfaWZfbmVjZXNzYXJ5PXRydWUNCitjbGVhbnVwLnVzZV90eXBlX2FyZ3VtZW50cz1mYWxzZQ0KK2NsZWFudXBfcHJvZmlsZT1fUGFweXJ1cw0KK2NsZWFudXBfc2V0dGluZ3NfdmVyc2lvbj0yDQorZWNsaXBzZS5wcmVmZXJlbmNlcy52ZXJzaW9uPTENCitmb3JtYXR0ZXJfcHJvZmlsZT1fUGFweXJ1cw0KK2Zvcm1hdHRlcl9zZXR0aW5nc192ZXJzaW9uPTEyDQorb3JnLmVjbGlwc2UuamR0LnVpLmlnbm9yZWxvd2VyY2FzZW5hbWVzPXRydWUNCitvcmcuZWNsaXBzZS5qZHQudWkuaW1wb3J0b3JkZXI9amF2YTtqYXZheDtvcmc7Y29tOw0KK29yZy5lY2xpcHNlLmpkdC51aS5qYXZhZG9jPXRydWUNCitvcmcuZWNsaXBzZS5qZHQudWkub25kZW1hbmR0aHJlc2hvbGQ9OTkNCitvcmcuZWNsaXBzZS5qZHQudWkuc3RhdGljb25kZW1hbmR0aHJlc2hvbGQ9OTkNCitvcmcuZWNsaXBzZS5qZHQudWkudGV4dC5jdXN0b21fY29kZV90ZW1wbGF0ZXM9PD94bWwgdmVyc2lvblw9IjEuMCIgZW5jb2RpbmdcPSJVVEYtOCIgc3RhbmRhbG9uZVw9Im5vIj8+PHRlbXBsYXRlcz48dGVtcGxhdGUgYXV0b2luc2VydFw9InRydWUiIGNvbnRleHRcPSJnZXR0ZXJjb21tZW50X2NvbnRleHQiIGRlbGV0ZWRcPSJmYWxzZSIgZGVzY3JpcHRpb25cPSJDb21tZW50IGZvciBnZXR0ZXIgbWV0aG9kIiBlbmFibGVkXD0idHJ1ZSIgaWRcPSJvcmcuZWNsaXBzZS5qZHQudWkudGV4dC5jb2RldGVtcGxhdGVzLmdldHRlcmNvbW1lbnQiIG5hbWVcPSJnZXR0ZXJjb21tZW50Ij4vKipcbiAqIEByZXR1cm4gdGhlICR7YmFyZV9maWVsZF9uYW1lfVxuICovPC90ZW1wbGF0ZT48dGVtcGxhdGUgYXV0b2luc2VydFw9InRydWUiIGNvbnRleHRcPSJzZXR0ZXJjb21tZW50X2NvbnRleHQiIGRlbGV0ZWRcPSJmYWxzZSIgZGVzY3JpcHRpb25cPSJDb21tZW50IGZvciBzZXR0ZXIgbWV0aG9kIiBlbmFibGVkXD0idHJ1ZSIgaWRcPSJvcmcuZWNsaXBzZS5qZHQudWkudGV4dC5jb2RldGVtcGxhdGVzLnNldHRlcmNvbW1lbnQiIG5hbWVcPSJzZXR0ZXJjb21tZW50Ij4vKipcbiAqIEBwYXJhbSAke3BhcmFtfSB0aGUgJHtiYXJlX2ZpZWxkX25hbWV9IHRvIHNldFxuICovPC90ZW1wbGF0ZT48dGVtcGxhdGUgYXV0b2luc2VydFw9ImZhbHNlIiBjb250ZXh0XD0iY29uc3RydWN0b3Jjb21tZW50X2NvbnRleHQiIGRlbGV0ZWRcPSJmYWxzZSIgZGVzY3JpcHRpb25cPSJDb21tZW50IGZvciBjcmVhdGVkIGNvbnN0cnVjdG9ycyIgZW5hYmxlZFw9InRydWUiIGlkXD0ib3JnLmVjbGlwc2UuamR0LnVpLnRleHQuY29kZXRlbXBsYXRlcy5jb25zdHJ1Y3RvcmNvbW1lbnQiIG5hbWVcPSJjb25zdHJ1Y3RvcmNvbW1lbnQiPi8qKlxuICogQ29uc3RydWN0b3IuXG4gKlxuICogJHt0YWdzfVxuICovPC90ZW1wbGF0ZT48dGVtcGxhdGUgYXV0b2luc2VydFw9ImZhbHNlIiBjb250ZXh0XD0iZmlsZWNvbW1lbnRfY29udGV4dCIgZGVsZXRlZFw9ImZhbHNlIiBkZXNjcmlwdGlvblw9IkNvbW1lbnQgZm9yIGNyZWF0ZWQgSmF2YSBmaWxlcyIgZW5hYmxlZFw9InRydWUiIGlkXD0ib3JnLmVjbGlwc2UuamR0LnVpLnRleHQuY29kZXRlbXBsYXRlcy5maWxlY29tbWVudCIgbmFtZVw9ImZpbGVjb21tZW50Ij4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAqIENvcHlyaWdodCAoYykgJHt5ZWFyfSBDRUEgTElTVCBhbmQgb3RoZXJzLlxuICogXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzXG4gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjBcbiAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0XG4gKiBodHRwXDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWxcbiAqXG4gKiBDb250cmlidXRvcnNcOlxuICogICBDRUEgTElTVCAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvblxuICogICBcbiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbjwvdGVtcGxhdGU+PHRlbXBsYXRlIGF1dG9pbnNlcnRcPSJ0cnVlIiBjb250ZXh0XD0idHlwZWNvbW1lbnRfY29udGV4dCIgZGVsZXRlZFw9ImZhbHNlIiBkZXNjcmlwdGlvblw9IkNvbW1lbnQgZm9yIGNyZWF0ZWQgdHlwZXMiIGVuYWJsZWRcPSJ0cnVlIiBpZFw9Im9yZy5lY2xpcHNlLmpkdC51aS50ZXh0LmNvZGV0ZW1wbGF0ZXMudHlwZWNvbW1lbnQiIG5hbWVcPSJ0eXBlY29tbWVudCI+LyoqXG4gKiBAYXV0aG9yICR7dXNlcn1cbiAqXG4gKiAke3RhZ3N9XG4gKi88L3RlbXBsYXRlPjx0ZW1wbGF0ZSBhdXRvaW5zZXJ0XD0idHJ1ZSIgY29udGV4dFw9ImZpZWxkY29tbWVudF9jb250ZXh0IiBkZWxldGVkXD0iZmFsc2UiIGRlc2NyaXB0aW9uXD0iQ29tbWVudCBmb3IgZmllbGRzIiBlbmFibGVkXD0idHJ1ZSIgaWRcPSJvcmcuZWNsaXBzZS5qZHQudWkudGV4dC5jb2RldGVtcGxhdGVzLmZpZWxkY29tbWVudCIgbmFtZVw9ImZpZWxkY29tbWVudCI+LyoqXG4gKiBcbiAqLzwvdGVtcGxhdGU+PHRlbXBsYXRlIGF1dG9pbnNlcnRcPSJ0cnVlIiBjb250ZXh0XD0ibWV0aG9kY29tbWVudF9jb250ZXh0IiBkZWxldGVkXD0iZmFsc2UiIGRlc2NyaXB0aW9uXD0iQ29tbWVudCBmb3Igbm9uLW92ZXJyaWRpbmcgbWV0aG9kcyIgZW5hYmxlZFw9InRydWUiIGlkXD0ib3JnLmVjbGlwc2UuamR0LnVpLnRleHQuY29kZXRlbXBsYXRlcy5tZXRob2Rjb21tZW50IiBuYW1lXD0ibWV0aG9kY29tbWVudCI+LyoqXG4gKiAke3RhZ3N9XG4gKi88L3RlbXBsYXRlPjx0ZW1wbGF0ZSBhdXRvaW5zZXJ0XD0iZmFsc2UiIGNvbnRleHRcPSJvdmVycmlkZWNvbW1lbnRfY29udGV4dCIgZGVsZXRlZFw9ImZhbHNlIiBkZXNjcmlwdGlvblw9IkNvbW1lbnQgZm9yIG92ZXJyaWRpbmcgbWV0aG9kcyIgZW5hYmxlZFw9InRydWUiIGlkXD0ib3JnLmVjbGlwc2UuamR0LnVpLnRleHQuY29kZXRlbXBsYXRlcy5vdmVycmlkZWNvbW1lbnQiIG5hbWVcPSJvdmVycmlkZWNvbW1lbnQiPi8qKlxuICogJHtzZWVfdG9fb3ZlcnJpZGRlbn1cbiAqXG4gKiAke3RhZ3N9XG4gKi88L3RlbXBsYXRlPjx0ZW1wbGF0ZSBhdXRvaW5zZXJ0XD0iZmFsc2UiIGNvbnRleHRcPSJkZWxlZ2F0ZWNvbW1lbnRfY29udGV4dCIgZGVsZXRlZFw9ImZhbHNlIiBkZXNjcmlwdGlvblw9IkNvbW1lbnQgZm9yIGRlbGVnYXRlIG1ldGhvZHMiIGVuYWJsZWRcPSJ0cnVlIiBpZFw9Im9yZy5lY2xpcHNlLmpkdC51aS50ZXh0LmNvZGV0ZW1wbGF0ZXMuZGVsZWdhdGVjb21tZW50IiBuYW1lXD0iZGVsZWdhdGVjb21tZW50Ij4vKipcbiAqICR7c2VlX3RvX3RhcmdldH1cbiAqXG4gKiAke3RhZ3N9XG4gKi88L3RlbXBsYXRlPjx0ZW1wbGF0ZSBhdXRvaW5zZXJ0XD0idHJ1ZSIgY29udGV4dFw9Im5ld3R5cGVfY29udGV4dCIgZGVsZXRlZFw9ImZhbHNlIiBkZXNjcmlwdGlvblw9Ik5ld2x5IGNyZWF0ZWQgZmlsZXMiIGVuYWJsZWRcPSJ0cnVlIiBpZFw9Im9yZy5lY2xpcHNlLmpkdC51aS50ZXh0LmNvZGV0ZW1wbGF0ZXMubmV3dHlwZSIgbmFtZVw9Im5ld3R5cGUiPiR7ZmlsZWNvbW1lbnR9XG4ke3BhY2thZ2VfZGVjbGFyYXRpb259XG5cbiR7dHlwZWNvbW1lbnR9XG4ke3R5cGVfZGVjbGFyYXRpb259PC90ZW1wbGF0ZT48dGVtcGxhdGUgYXV0b2luc2VydFw9InRydWUiIGNvbnRleHRcPSJjbGFzc2JvZHlfY29udGV4dCIgZGVsZXRlZFw9ImZhbHNlIiBkZXNjcmlwdGlvblw9IkNvZGUgaW4gbmV3IGNsYXNzIHR5cGUgYm9kaWVzIiBlbmFibGVkXD0idHJ1ZSIgaWRcPSJvcmcuZWNsaXBzZS5qZHQudWkudGV4dC5jb2RldGVtcGxhdGVzLmNsYXNzYm9keSIgbmFtZVw9ImNsYXNzYm9keSI+XG48L3RlbXBsYXRlPjx0ZW1wbGF0ZSBhdXRvaW5zZXJ0XD0idHJ1ZSIgY29udGV4dFw9ImludGVyZmFjZWJvZHlfY29udGV4dCIgZGVsZXRlZFw9ImZhbHNlIiBkZXNjcmlwdGlvblw9IkNvZGUgaW4gbmV3IGludGVyZmFjZSB0eXBlIGJvZGllcyIgZW5hYmxlZFw9InRydWUiIGlkXD0ib3JnLmVjbGlwc2UuamR0LnVpLnRleHQuY29kZXRlbXBsYXRlcy5pbnRlcmZhY2Vib2R5IiBuYW1lXD0iaW50ZXJmYWNlYm9keSI+XG48L3RlbXBsYXRlPjx0ZW1wbGF0ZSBhdXRvaW5zZXJ0XD0idHJ1ZSIgY29udGV4dFw9ImVudW1ib2R5X2NvbnRleHQiIGRlbGV0ZWRcPSJmYWxzZSIgZGVzY3JpcHRpb25cPSJDb2RlIGluIG5ldyBlbnVtIHR5cGUgYm9kaWVzIiBlbmFibGVkXD0idHJ1ZSIgaWRcPSJvcmcuZWNsaXBzZS5qZHQudWkudGV4dC5jb2RldGVtcGxhdGVzLmVudW1ib2R5IiBuYW1lXD0iZW51bWJvZHkiPlxuPC90ZW1wbGF0ZT48dGVtcGxhdGUgYXV0b2luc2VydFw9InRydWUiIGNvbnRleHRcPSJhbm5vdGF0aW9uYm9keV9jb250ZXh0IiBkZWxldGVkXD0iZmFsc2UiIGRlc2NyaXB0aW9uXD0iQ29kZSBpbiBuZXcgYW5ub3RhdGlvbiB0eXBlIGJvZGllcyIgZW5hYmxlZFw9InRydWUiIGlkXD0ib3JnLmVjbGlwc2UuamR0LnVpLnRleHQuY29kZXRlbXBsYXRlcy5hbm5vdGF0aW9uYm9keSIgbmFtZVw9ImFubm90YXRpb25ib2R5Ij5cbjwvdGVtcGxhdGU+PHRlbXBsYXRlIGF1dG9pbnNlcnRcPSJ0cnVlIiBjb250ZXh0XD0iY2F0Y2hibG9ja19jb250ZXh0IiBkZWxldGVkXD0iZmFsc2UiIGRlc2NyaXB0aW9uXD0iQ29kZSBpbiBuZXcgY2F0Y2ggYmxvY2tzIiBlbmFibGVkXD0idHJ1ZSIgaWRcPSJvcmcuZWNsaXBzZS5qZHQudWkudGV4dC5jb2RldGVtcGxhdGVzLmNhdGNoYmxvY2siIG5hbWVcPSJjYXRjaGJsb2NrIj4vLyAke3RvZG99IEF1dG8tZ2VuZXJhdGVkIGNhdGNoIGJsb2NrXG4ke2V4Y2VwdGlvbl92YXJ9LnByaW50U3RhY2tUcmFjZSgpOzwvdGVtcGxhdGU+PHRlbXBsYXRlIGF1dG9pbnNlcnRcPSJ0cnVlIiBjb250ZXh0XD0ibWV0aG9kYm9keV9jb250ZXh0IiBkZWxldGVkXD0iZmFsc2UiIGRlc2NyaXB0aW9uXD0iQ29kZSBpbiBjcmVhdGVkIG1ldGhvZCBzdHVicyIgZW5hYmxlZFw9InRydWUiIGlkXD0ib3JnLmVjbGlwc2UuamR0LnVpLnRleHQuY29kZXRlbXBsYXRlcy5tZXRob2Rib2R5IiBuYW1lXD0ibWV0aG9kYm9keSI+Ly8gJHt0b2RvfSBBdXRvLWdlbmVyYXRlZCBtZXRob2Qgc3R1YlxuJHtib2R5X3N0YXRlbWVudH08L3RlbXBsYXRlPjx0ZW1wbGF0ZSBhdXRvaW5zZXJ0XD0idHJ1ZSIgY29udGV4dFw9ImNvbnN0cnVjdG9yYm9keV9jb250ZXh0IiBkZWxldGVkXD0iZmFsc2UiIGRlc2NyaXB0aW9uXD0iQ29kZSBpbiBjcmVhdGVkIGNvbnN0cnVjdG9yIHN0dWJzIiBlbmFibGVkXD0idHJ1ZSIgaWRcPSJvcmcuZWNsaXBzZS5qZHQudWkudGV4dC5jb2RldGVtcGxhdGVzLmNvbnN0cnVjdG9yYm9keSIgbmFtZVw9ImNvbnN0cnVjdG9yYm9keSI+JHtib2R5X3N0YXRlbWVudH1cbi8vICR7dG9kb30gQXV0by1nZW5lcmF0ZWQgY29uc3RydWN0b3Igc3R1YjwvdGVtcGxhdGU+PHRlbXBsYXRlIGF1dG9pbnNlcnRcPSJ0cnVlIiBjb250ZXh0XD0iZ2V0dGVyYm9keV9jb250ZXh0IiBkZWxldGVkXD0iZmFsc2UiIGRlc2NyaXB0aW9uXD0iQ29kZSBpbiBjcmVhdGVkIGdldHRlcnMiIGVuYWJsZWRcPSJ0cnVlIiBpZFw9Im9yZy5lY2xpcHNlLmpkdC51aS50ZXh0LmNvZGV0ZW1wbGF0ZXMuZ2V0dGVyYm9keSIgbmFtZVw9ImdldHRlcmJvZHkiPnJldHVybiAke2ZpZWxkfTs8L3RlbXBsYXRlPjx0ZW1wbGF0ZSBhdXRvaW5zZXJ0XD0idHJ1ZSIgY29udGV4dFw9InNldHRlcmJvZHlfY29udGV4dCIgZGVsZXRlZFw9ImZhbHNlIiBkZXNjcmlwdGlvblw9IkNvZGUgaW4gY3JlYXRlZCBzZXR0ZXJzIiBlbmFibGVkXD0idHJ1ZSIgaWRcPSJvcmcuZWNsaXBzZS5qZHQudWkudGV4dC5jb2RldGVtcGxhdGVzLnNldHRlcmJvZHkiIG5hbWVcPSJzZXR0ZXJib2R5Ij4ke2ZpZWxkfSBcPSAke3BhcmFtfTs8L3RlbXBsYXRlPjwvdGVtcGxhdGVzPg0KZGlmZiAtLWdpdCBhL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnNlcnZpY2UudHlwZXMvTUVUQS1JTkYvTUFOSUZFU1QuTUYgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5zZXJ2aWNlLnR5cGVzL01FVEEtSU5GL01BTklGRVNULk1GCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVhY2VhNzIKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5zZXJ2aWNlLnR5cGVzL01FVEEtSU5GL01BTklGRVNULk1GCkBAIC0wLDAgKzEsMjAgQEAKK01hbmlmZXN0LVZlcnNpb246IDEuMA0KK0J1bmRsZS1NYW5pZmVzdFZlcnNpb246IDINCitCdW5kbGUtTmFtZTogJXBsdWdpbk5hbWUNCitCdW5kbGUtU3ltYm9saWNOYW1lOiBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuc2VydmljZS50eXBlcztzaW5nbGV0b246PXRydWUNCitCdW5kbGUtVmVyc2lvbjogMC43LjAucXVhbGlmaWVyDQorQnVuZGxlLUFjdGl2YXRvcjogb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnNlcnZpY2UudHlwZXMuQWN0aXZhdG9yDQorUmVxdWlyZS1CdW5kbGU6IG9yZy5lY2xpcHNlLnVpLA0KKyBvcmcuZWNsaXBzZS5wYXB5cnVzLmluZnJhLmVsZW1lbnR0eXBlc2NvbmZpZ3VyYXRpb25zO2J1bmRsZS12ZXJzaW9uPSIxLjEuMCIsDQorIG9yZy5lY2xpcHNlLmdtZi5ydW50aW1lLmVtZi50eXBlLmNvcmUsDQorIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNDtidW5kbGUtdmVyc2lvbj0iMC43LjAiLA0KKyBvcmcuZWNsaXBzZS5wYXB5cnVzLnVtbC5zZXJ2aWNlLnR5cGVzO2J1bmRsZS12ZXJzaW9uPSIxLjEuMCIsDQorIG9yZy5lY2xpcHNlLnBhcHlydXMudW1sLnRvb2xzLmVsZW1lbnR0eXBlc2NvbmZpZ3VyYXRpb25zO2J1bmRsZS12ZXJzaW9uPSIxLjEuMCINCitCdW5kbGUtUmVxdWlyZWRFeGVjdXRpb25FbnZpcm9ubWVudDogSmF2YVNFLTEuNg0KK0J1bmRsZS1BY3RpdmF0aW9uUG9saWN5OiBsYXp5DQorQnVuZGxlLVZlbmRvcjogJXByb3ZpZGVyTmFtZQ0KK0J1bmRsZS1EZXNjcmlwdGlvbjogJXBsdWdpbkRlc2NyaXB0aW9uDQorQnVuZGxlLUxvY2FsaXphdGlvbjogcGx1Z2luDQorRXhwb3J0LVBhY2thZ2U6IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5zZXJ2aWNlLnR5cGVzLA0KKyBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuc2VydmljZS50eXBlcy5hZHZpY2UsDQorIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5zZXJ2aWNlLnR5cGVzLnV0aWwNCmRpZmYgLS1naXQgYS9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5zZXJ2aWNlLnR5cGVzL2Fib3V0Lmh0bWwgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5zZXJ2aWNlLnR5cGVzL2Fib3V0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODJkNDliZgotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnNlcnZpY2UudHlwZXMvYWJvdXQuaHRtbApAQCAtMCwwICsxLDI4IEBACis8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIFhIVE1MIDEuMCBTdHJpY3QvL0VOIg0KKyAgICAiaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtc3RyaWN0LmR0ZCI+DQorPGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPg0KKzxoZWFkPg0KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PUlTTy04ODU5LTEiLz4NCis8dGl0bGU+QWJvdXQ8L3RpdGxlPg0KKzwvaGVhZD4NCis8Ym9keSBsYW5nPSJFTi1VUyI+DQorPGgyPkFib3V0IFRoaXMgQ29udGVudDwvaDI+DQorIA0KKzxwPkp1bmUgNSwgMjAwNzwvcD4JDQorPGgzPkxpY2Vuc2U8L2gzPg0KKw0KKzxwPlRoZSBFY2xpcHNlIEZvdW5kYXRpb24gbWFrZXMgYXZhaWxhYmxlIGFsbCBjb250ZW50IGluIHRoaXMgcGx1Zy1pbiAoJnF1b3Q7Q29udGVudCZxdW90OykuICBVbmxlc3Mgb3RoZXJ3aXNlIA0KK2luZGljYXRlZCBiZWxvdywgdGhlIENvbnRlbnQgaXMgcHJvdmlkZWQgdG8geW91IHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUNCitFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMS4wICgmcXVvdDtFUEwmcXVvdDspLiAgQSBjb3B5IG9mIHRoZSBFUEwgaXMgYXZhaWxhYmxlIA0KK2F0IDxhIGhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sIj5odHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbDwvYT4uDQorRm9yIHB1cnBvc2VzIG9mIHRoZSBFUEwsICZxdW90O1Byb2dyYW0mcXVvdDsgd2lsbCBtZWFuIHRoZSBDb250ZW50LjwvcD4NCisNCis8cD5JZiB5b3UgZGlkIG5vdCByZWNlaXZlIHRoaXMgQ29udGVudCBkaXJlY3RseSBmcm9tIHRoZSBFY2xpcHNlIEZvdW5kYXRpb24sIHRoZSBDb250ZW50IGlzIA0KK2JlaW5nIHJlZGlzdHJpYnV0ZWQgYnkgYW5vdGhlciBwYXJ0eSAoJnF1b3Q7UmVkaXN0cmlidXRvciZxdW90OykgYW5kIGRpZmZlcmVudCB0ZXJtcyBhbmQgY29uZGl0aW9ucyBtYXkNCithcHBseSB0byB5b3VyIHVzZSBvZiBhbnkgb2JqZWN0IGNvZGUgaW4gdGhlIENvbnRlbnQuICBDaGVjayB0aGUgUmVkaXN0cmlidXRvcidzIGxpY2Vuc2UgdGhhdCB3YXMgDQorcHJvdmlkZWQgd2l0aCB0aGUgQ29udGVudC4gIElmIG5vIHN1Y2ggbGljZW5zZSBleGlzdHMsIGNvbnRhY3QgdGhlIFJlZGlzdHJpYnV0b3IuICBVbmxlc3Mgb3RoZXJ3aXNlDQoraW5kaWNhdGVkIGJlbG93LCB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEVQTCBzdGlsbCBhcHBseSB0byBhbnkgc291cmNlIGNvZGUgaW4gdGhlIENvbnRlbnQNCithbmQgc3VjaCBzb3VyY2UgY29kZSBtYXkgYmUgb2J0YWluZWQgYXQgPGEgaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy8iPmh0dHA6Ly93d3cuZWNsaXBzZS5vcmc8L2E+LjwvcD4NCisNCis8L2JvZHk+DQorPC9odG1sPg0KZGlmZiAtLWdpdCBhL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnNlcnZpY2UudHlwZXMvYnVpbGQucHJvcGVydGllcyBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnNlcnZpY2UudHlwZXMvYnVpbGQucHJvcGVydGllcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45OWQ4ZTAyCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuc2VydmljZS50eXBlcy9idWlsZC5wcm9wZXJ0aWVzCkBAIC0wLDAgKzEsMTAgQEAKK3NvdXJjZS4uID0gc3JjLw0KK291dHB1dC4uID0gYmluLw0KK2Jpbi5pbmNsdWRlcyA9IE1FVEEtSU5GLyxcDQorICAgICAgICAgICAgICAgLixcDQorICAgICAgICAgICAgICAgbW9kZWwvLFwNCisgICAgICAgICAgICAgICBwbHVnaW4ucHJvcGVydGllcyxcDQorICAgICAgICAgICAgICAgcG9tLnhtbCxcDQorICAgICAgICAgICAgICAgcGx1Z2luLnhtbCxcDQorICAgICAgICAgICAgICAgYWJvdXQuaHRtbA0KK3NyYy5pbmNsdWRlcyA9IGFib3V0Lmh0bWwNCmRpZmYgLS1naXQgYS9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5zZXJ2aWNlLnR5cGVzL21vZGVsL1N5c01MMTQuZWxlbWVudHR5cGVzY29uZmlndXJhdGlvbnMgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5zZXJ2aWNlLnR5cGVzL21vZGVsL1N5c01MMTQuZWxlbWVudHR5cGVzY29uZmlndXJhdGlvbnMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzY1NTUwNwotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnNlcnZpY2UudHlwZXMvbW9kZWwvU3lzTUwxNC5lbGVtZW50dHlwZXNjb25maWd1cmF0aW9ucwpAQCAtMCwwICsxLDIzODQgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IkFTQ0lJIj8+DQorPGVsZW1lbnR0eXBlc2NvbmZpZ3VyYXRpb25zOkVsZW1lbnRUeXBlU2V0Q29uZmlndXJhdGlvbg0KKyAgICB4bWk6dmVyc2lvbj0iMi4wIg0KKyAgICB4bWxuczp4bWk9Imh0dHA6Ly93d3cub21nLm9yZy9YTUkiDQorICAgIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiDQorICAgIHhtbG5zOmFwcGx5c3RlcmVvdHlwZWFkdmljZWNvbmZpZ3VyYXRpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvcGFweXJ1cy9pbmZyYS9lbGVtZW50dHlwZXNjb25maWd1cmF0aW9ucy91bWwvYXBwbHlzdGVyZW90eXBlYWR2aWNlLzEuMCINCisgICAgeG1sbnM6ZWxlbWVudHR5cGVzY29uZmlndXJhdGlvbnM9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvcGFweXJ1cy9pbmZyYS9lbGVtZW50dHlwZXNjb25maWd1cmF0aW9ucy8xLjAiDQorICAgIHhtbG5zOnN0ZXJlb3R5cGVhcHBsaWNhdGlvbm1hdGNoZXJjb25maWd1cmF0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3BheXJ1cy9lbGVtZW50dHlwZXNjb25maWd1cmF0aW9ucy91bWwvc3RlcmVvdHlwZW1hdGNoZXJjb25maWd1cmF0aW9uIg0KKyAgICB4bWk6aWQ9Il9rNFNtZ0x3RkVlU3dOTEsyVzAySHdBIg0KKyAgICBuYW1lPSJTeXNNTCINCisgICAgaWRlbnRpZmllcj0ib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LmVsZW1lbnRUeXBlcyINCisgICAgbWV0YW1vZGVsTnNVUkk9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvdW1sMi81LjAuMC9VTUwiPg0KKyAgPGVsZW1lbnRUeXBlQ29uZmlndXJhdGlvbnMNCisgICAgICB4c2k6dHlwZT0iZWxlbWVudHR5cGVzY29uZmlndXJhdGlvbnM6U3BlY2lhbGl6YXRpb25UeXBlQ29uZmlndXJhdGlvbiINCisgICAgICB4bWk6aWQ9Il9rNFNtZ2J3RkVlU3dOTEsyVzAySHdBIg0KKyAgICAgIG5hbWU9IlZhbHVlVHlwZSINCisgICAgICBpZGVudGlmaWVyPSJvcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuVmFsdWVUeXBlIg0KKyAgICAgIGhpbnQ9IlVNTDo6RGF0YVR5cGUiPg0KKyAgICA8aWNvbkVudHJ5DQorICAgICAgICB4bWk6aWQ9Il9rNFNtZ3J3RkVlU3dOTEsyVzAySHdBIg0KKyAgICAgICAgaWNvblBhdGg9Ii9pY29ucy9mdWxsL29iajE2L0RhdGFUeXBlLmdpZiINCisgICAgICAgIGJ1bmRsZUlkPSJvcmcuZWNsaXBzZS51bWwyLnVtbC5lZGl0Ii8+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy51bWwuRGF0YVR5cGU8L3NwZWNpYWxpemVkVHlwZXNJRD4NCisgICAgPG1hdGNoZXJDb25maWd1cmF0aW9uDQorICAgICAgICB4c2k6dHlwZT0ic3RlcmVvdHlwZWFwcGxpY2F0aW9ubWF0Y2hlcmNvbmZpZ3VyYXRpb246U3RlcmVvdHlwZUFwcGxpY2F0aW9uTWF0Y2hlckNvbmZpZ3VyYXRpb24iDQorICAgICAgICB4bWk6aWQ9Il9rNFNtZzd3RkVlU3dOTEsyVzAySHdBIj4NCisgICAgICA8c3RlcmVvdHlwZXNRdWFsaWZpZWROYW1lcz5TeXNNTDo6QmxvY2tzOjpWYWx1ZVR5cGU8L3N0ZXJlb3R5cGVzUXVhbGlmaWVkTmFtZXM+DQorICAgIDwvbWF0Y2hlckNvbmZpZ3VyYXRpb24+DQorICA8L2VsZW1lbnRUeXBlQ29uZmlndXJhdGlvbnM+DQorICA8ZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucw0KKyAgICAgIHhzaTp0eXBlPSJlbGVtZW50dHlwZXNjb25maWd1cmF0aW9uczpTcGVjaWFsaXphdGlvblR5cGVDb25maWd1cmF0aW9uIg0KKyAgICAgIHhtaTppZD0iX2s0U21oTHdGRWVTd05MSzJXMDJId0EiDQorICAgICAgbmFtZT0iRGlzdHJpYnV0ZWRQcm9wZXJ0eSINCisgICAgICBpZGVudGlmaWVyPSJvcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuRGlzdHJpYnV0ZWRQcm9wZXJ0eSINCisgICAgICBoaW50PSJVTUw6OlByb3BlcnR5Ij4NCisgICAgPGljb25FbnRyeQ0KKyAgICAgICAgeG1pOmlkPSJfazRTbWhid0ZFZVN3TkxLMlcwMkh3QSINCisgICAgICAgIGljb25QYXRoPSIvaWNvbnMvZnVsbC9vYmoxNi9Qcm9wZXJ0eS5naWYiDQorICAgICAgICBidW5kbGVJZD0ib3JnLmVjbGlwc2UudW1sMi51bWwuZWRpdCIvPg0KKyAgICA8c3BlY2lhbGl6ZWRUeXBlc0lEPm9yZy5lY2xpcHNlLnBhcHlydXMudW1sLlByb3BlcnR5PC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICAgIDxtYXRjaGVyQ29uZmlndXJhdGlvbg0KKyAgICAgICAgeHNpOnR5cGU9InN0ZXJlb3R5cGVhcHBsaWNhdGlvbm1hdGNoZXJjb25maWd1cmF0aW9uOlN0ZXJlb3R5cGVBcHBsaWNhdGlvbk1hdGNoZXJDb25maWd1cmF0aW9uIg0KKyAgICAgICAgeG1pOmlkPSJfazRTbWhyd0ZFZVN3TkxLMlcwMkh3QSI+DQorICAgICAgPHN0ZXJlb3R5cGVzUXVhbGlmaWVkTmFtZXM+U3lzTUw6OkJsb2Nrczo6RGlzdHJpYnV0ZWRQcm9wZXJ0eTwvc3RlcmVvdHlwZXNRdWFsaWZpZWROYW1lcz4NCisgICAgPC9tYXRjaGVyQ29uZmlndXJhdGlvbj4NCisgIDwvZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucz4NCisgIDxlbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zDQorICAgICAgeHNpOnR5cGU9ImVsZW1lbnR0eXBlc2NvbmZpZ3VyYXRpb25zOlNwZWNpYWxpemF0aW9uVHlwZUNvbmZpZ3VyYXRpb24iDQorICAgICAgeG1pOmlkPSJfazRTbWg3d0ZFZVN3TkxLMlcwMkh3QSINCisgICAgICBuYW1lPSJDb25uZWN0b3JQcm9wZXJ0eSINCisgICAgICBpZGVudGlmaWVyPSJvcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuQ29ubmVjdG9yUHJvcGVydHkiDQorICAgICAgaGludD0iVU1MOjpQcm9wZXJ0eSI+DQorICAgIDxpY29uRW50cnkNCisgICAgICAgIHhtaTppZD0iX2s0U21pTHdGRWVTd05MSzJXMDJId0EiDQorICAgICAgICBpY29uUGF0aD0iL2ljb25zL2Z1bGwvb2JqMTYvUHJvcGVydHkuZ2lmIg0KKyAgICAgICAgYnVuZGxlSWQ9Im9yZy5lY2xpcHNlLnVtbDIudW1sLmVkaXQiLz4NCisgICAgPHNwZWNpYWxpemVkVHlwZXNJRD5vcmcuZWNsaXBzZS5wYXB5cnVzLnVtbC5Qcm9wZXJ0eTwvc3BlY2lhbGl6ZWRUeXBlc0lEPg0KKyAgICA8bWF0Y2hlckNvbmZpZ3VyYXRpb24NCisgICAgICAgIHhzaTp0eXBlPSJzdGVyZW90eXBlYXBwbGljYXRpb25tYXRjaGVyY29uZmlndXJhdGlvbjpTdGVyZW90eXBlQXBwbGljYXRpb25NYXRjaGVyQ29uZmlndXJhdGlvbiINCisgICAgICAgIHhtaTppZD0iX2s0U21pYndGRWVTd05MSzJXMDJId0EiPg0KKyAgICAgIDxzdGVyZW90eXBlc1F1YWxpZmllZE5hbWVzPlN5c01MOjpCbG9ja3M6OkNvbm5lY3RvclByb3BlcnR5PC9zdGVyZW90eXBlc1F1YWxpZmllZE5hbWVzPg0KKyAgICA8L21hdGNoZXJDb25maWd1cmF0aW9uPg0KKyAgPC9lbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zPg0KKyAgPGVsZW1lbnRUeXBlQ29uZmlndXJhdGlvbnMNCisgICAgICB4c2k6dHlwZT0iZWxlbWVudHR5cGVzY29uZmlndXJhdGlvbnM6U3BlY2lhbGl6YXRpb25UeXBlQ29uZmlndXJhdGlvbiINCisgICAgICB4bWk6aWQ9Il9rNFNtaXJ3RkVlU3dOTEsyVzAySHdBIg0KKyAgICAgIG5hbWU9IlBhcnRpY2lwYW50UHJvcGVydHkiDQorICAgICAgaWRlbnRpZmllcj0ib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LlBhcnRpY2lwYW50UHJvcGVydHkiDQorICAgICAgaGludD0iVU1MOjpQcm9wZXJ0eSI+DQorICAgIDxpY29uRW50cnkNCisgICAgICAgIHhtaTppZD0iX2s0U21pN3dGRWVTd05MSzJXMDJId0EiDQorICAgICAgICBpY29uUGF0aD0iL2ljb25zL2Z1bGwvb2JqMTYvUHJvcGVydHkuZ2lmIg0KKyAgICAgICAgYnVuZGxlSWQ9Im9yZy5lY2xpcHNlLnVtbDIudW1sLmVkaXQiLz4NCisgICAgPHNwZWNpYWxpemVkVHlwZXNJRD5vcmcuZWNsaXBzZS5wYXB5cnVzLnVtbC5Qcm9wZXJ0eTwvc3BlY2lhbGl6ZWRUeXBlc0lEPg0KKyAgICA8bWF0Y2hlckNvbmZpZ3VyYXRpb24NCisgICAgICAgIHhzaTp0eXBlPSJzdGVyZW90eXBlYXBwbGljYXRpb25tYXRjaGVyY29uZmlndXJhdGlvbjpTdGVyZW90eXBlQXBwbGljYXRpb25NYXRjaGVyQ29uZmlndXJhdGlvbiINCisgICAgICAgIHhtaTppZD0iX2s0U21qTHdGRWVTd05MSzJXMDJId0EiPg0KKyAgICAgIDxzdGVyZW90eXBlc1F1YWxpZmllZE5hbWVzPlN5c01MOjpCbG9ja3M6OlBhcnRpY2lwYW50UHJvcGVydHk8L3N0ZXJlb3R5cGVzUXVhbGlmaWVkTmFtZXM+DQorICAgIDwvbWF0Y2hlckNvbmZpZ3VyYXRpb24+DQorICA8L2VsZW1lbnRUeXBlQ29uZmlndXJhdGlvbnM+DQorICA8ZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucw0KKyAgICAgIHhzaTp0eXBlPSJlbGVtZW50dHlwZXNjb25maWd1cmF0aW9uczpTcGVjaWFsaXphdGlvblR5cGVDb25maWd1cmF0aW9uIg0KKyAgICAgIHhtaTppZD0iX2s0U21qYndGRWVTd05MSzJXMDJId0EiDQorICAgICAgbmFtZT0iQmluZGluZ0Nvbm5lY3RvciINCisgICAgICBpZGVudGlmaWVyPSJvcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuQmluZGluZ0Nvbm5lY3RvciINCisgICAgICBoaW50PSJVTUw6OkNvbm5lY3RvciI+DQorICAgIDxpY29uRW50cnkNCisgICAgICAgIHhtaTppZD0iX2s0U21qcndGRWVTd05MSzJXMDJId0EiDQorICAgICAgICBpY29uUGF0aD0iL2ljb25zL2Z1bGwvb2JqMTYvQ29ubmVjdG9yLmdpZiINCisgICAgICAgIGJ1bmRsZUlkPSJvcmcuZWNsaXBzZS51bWwyLnVtbC5lZGl0Ii8+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy51bWwuQ29ubmVjdG9yPC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICAgIDxtYXRjaGVyQ29uZmlndXJhdGlvbg0KKyAgICAgICAgeHNpOnR5cGU9InN0ZXJlb3R5cGVhcHBsaWNhdGlvbm1hdGNoZXJjb25maWd1cmF0aW9uOlN0ZXJlb3R5cGVBcHBsaWNhdGlvbk1hdGNoZXJDb25maWd1cmF0aW9uIg0KKyAgICAgICAgeG1pOmlkPSJfazRTbWo3d0ZFZVN3TkxLMlcwMkh3QSI+DQorICAgICAgPHN0ZXJlb3R5cGVzUXVhbGlmaWVkTmFtZXM+U3lzTUw6OkJsb2Nrczo6QmluZGluZ0Nvbm5lY3Rvcjwvc3RlcmVvdHlwZXNRdWFsaWZpZWROYW1lcz4NCisgICAgPC9tYXRjaGVyQ29uZmlndXJhdGlvbj4NCisgIDwvZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucz4NCisgIDxlbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zDQorICAgICAgeHNpOnR5cGU9ImVsZW1lbnR0eXBlc2NvbmZpZ3VyYXRpb25zOlNwZWNpYWxpemF0aW9uVHlwZUNvbmZpZ3VyYXRpb24iDQorICAgICAgeG1pOmlkPSJfazRTbWtMd0ZFZVN3TkxLMlcwMkh3QSINCisgICAgICBuYW1lPSJCbG9jayINCisgICAgICBpZGVudGlmaWVyPSJvcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuQmxvY2siDQorICAgICAgaGludD0iVU1MOjpDbGFzcyI+DQorICAgIDxpY29uRW50cnkNCisgICAgICAgIHhtaTppZD0iX2s0U21rYndGRWVTd05MSzJXMDJId0EiDQorICAgICAgICBpY29uUGF0aD0iL2ljb25zL2Z1bGwvb2JqMTYvQ2xhc3MuZ2lmIg0KKyAgICAgICAgYnVuZGxlSWQ9Im9yZy5lY2xpcHNlLnVtbDIudW1sLmVkaXQiLz4NCisgICAgPHNwZWNpYWxpemVkVHlwZXNJRD5vcmcuZWNsaXBzZS5wYXB5cnVzLnVtbC5DbGFzczwvc3BlY2lhbGl6ZWRUeXBlc0lEPg0KKyAgICA8bWF0Y2hlckNvbmZpZ3VyYXRpb24NCisgICAgICAgIHhzaTp0eXBlPSJzdGVyZW90eXBlYXBwbGljYXRpb25tYXRjaGVyY29uZmlndXJhdGlvbjpTdGVyZW90eXBlQXBwbGljYXRpb25NYXRjaGVyQ29uZmlndXJhdGlvbiINCisgICAgICAgIHhtaTppZD0iX2s0U21rcndGRWVTd05MSzJXMDJId0EiPg0KKyAgICAgIDxzdGVyZW90eXBlc1F1YWxpZmllZE5hbWVzPlN5c01MOjpCbG9ja3M6OkJsb2NrPC9zdGVyZW90eXBlc1F1YWxpZmllZE5hbWVzPg0KKyAgICA8L21hdGNoZXJDb25maWd1cmF0aW9uPg0KKyAgPC9lbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zPg0KKyAgPGVsZW1lbnRUeXBlQ29uZmlndXJhdGlvbnMNCisgICAgICB4c2k6dHlwZT0iZWxlbWVudHR5cGVzY29uZmlndXJhdGlvbnM6U3BlY2lhbGl6YXRpb25UeXBlQ29uZmlndXJhdGlvbiINCisgICAgICB4bWk6aWQ9Il9rNFNtazd3RkVlU3dOTEsyVzAySHdBIg0KKyAgICAgIG5hbWU9IlByb3BlcnR5U3BlY2lmaWNUeXBlIg0KKyAgICAgIGlkZW50aWZpZXI9Im9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5Qcm9wZXJ0eVNwZWNpZmljVHlwZSINCisgICAgICBoaW50PSJVTUw6OkNsYXNzaWZpZXIiPg0KKyAgICA8aWNvbkVudHJ5DQorICAgICAgICB4bWk6aWQ9Il9rNFNtbEx3RkVlU3dOTEsyVzAySHdBIg0KKyAgICAgICAgaWNvblBhdGg9Ii9pY29ucy9DbGFzc2lmaWVyLmdpZiINCisgICAgICAgIGJ1bmRsZUlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnVtbC5zZXJ2aWNlLnR5cGVzIi8+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy51bWwuQ2xhc3NpZmllcjwvc3BlY2lhbGl6ZWRUeXBlc0lEPg0KKyAgICA8bWF0Y2hlckNvbmZpZ3VyYXRpb24NCisgICAgICAgIHhzaTp0eXBlPSJzdGVyZW90eXBlYXBwbGljYXRpb25tYXRjaGVyY29uZmlndXJhdGlvbjpTdGVyZW90eXBlQXBwbGljYXRpb25NYXRjaGVyQ29uZmlndXJhdGlvbiINCisgICAgICAgIHhtaTppZD0iX2s0U21sYndGRWVTd05MSzJXMDJId0EiPg0KKyAgICAgIDxzdGVyZW90eXBlc1F1YWxpZmllZE5hbWVzPlN5c01MOjpCbG9ja3M6OlByb3BlcnR5U3BlY2lmaWNUeXBlPC9zdGVyZW90eXBlc1F1YWxpZmllZE5hbWVzPg0KKyAgICA8L21hdGNoZXJDb25maWd1cmF0aW9uPg0KKyAgPC9lbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zPg0KKyAgPGVsZW1lbnRUeXBlQ29uZmlndXJhdGlvbnMNCisgICAgICB4c2k6dHlwZT0iZWxlbWVudHR5cGVzY29uZmlndXJhdGlvbnM6U3BlY2lhbGl6YXRpb25UeXBlQ29uZmlndXJhdGlvbiINCisgICAgICB4bWk6aWQ9Il9rNFNtbHJ3RkVlU3dOTEsyVzAySHdBIg0KKyAgICAgIG5hbWU9Ik5lc3RlZENvbm5lY3RvckVuZCBDb25uZWN0b3JFbmQiDQorICAgICAgaWRlbnRpZmllcj0ib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0Lk5lc3RlZENvbm5lY3RvckVuZF9Db25uZWN0b3JFbmQiDQorICAgICAgaGludD0iVU1MOjpDb25uZWN0b3JFbmQiPg0KKyAgICA8aWNvbkVudHJ5DQorICAgICAgICB4bWk6aWQ9Il9rNFNtbDd3RkVlU3dOTEsyVzAySHdBIg0KKyAgICAgICAgaWNvblBhdGg9Ii9pY29ucy9mdWxsL29iajE2L0Nvbm5lY3RvckVuZC5naWYiDQorICAgICAgICBidW5kbGVJZD0ib3JnLmVjbGlwc2UudW1sMi51bWwuZWRpdCIvPg0KKyAgICA8c3BlY2lhbGl6ZWRUeXBlc0lEPm9yZy5lY2xpcHNlLnBhcHlydXMudW1sLkNvbm5lY3RvckVuZDwvc3BlY2lhbGl6ZWRUeXBlc0lEPg0KKyAgICA8bWF0Y2hlckNvbmZpZ3VyYXRpb24NCisgICAgICAgIHhzaTp0eXBlPSJzdGVyZW90eXBlYXBwbGljYXRpb25tYXRjaGVyY29uZmlndXJhdGlvbjpTdGVyZW90eXBlQXBwbGljYXRpb25NYXRjaGVyQ29uZmlndXJhdGlvbiINCisgICAgICAgIHhtaTppZD0iX2s0U21tTHdGRWVTd05MSzJXMDJId0EiPg0KKyAgICAgIDxzdGVyZW90eXBlc1F1YWxpZmllZE5hbWVzPlN5c01MOjpCbG9ja3M6Ok5lc3RlZENvbm5lY3RvckVuZDwvc3RlcmVvdHlwZXNRdWFsaWZpZWROYW1lcz4NCisgICAgPC9tYXRjaGVyQ29uZmlndXJhdGlvbj4NCisgIDwvZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucz4NCisgIDxlbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zDQorICAgICAgeHNpOnR5cGU9ImVsZW1lbnR0eXBlc2NvbmZpZ3VyYXRpb25zOlNwZWNpYWxpemF0aW9uVHlwZUNvbmZpZ3VyYXRpb24iDQorICAgICAgeG1pOmlkPSJfazRTbW1id0ZFZVN3TkxLMlcwMkh3QSINCisgICAgICBuYW1lPSJOZXN0ZWRDb25uZWN0b3JFbmQgRWxlbWVudCINCisgICAgICBpZGVudGlmaWVyPSJvcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuTmVzdGVkQ29ubmVjdG9yRW5kX0VsZW1lbnQiDQorICAgICAgaGludD0iVU1MOjpFbGVtZW50Ij4NCisgICAgPGljb25FbnRyeQ0KKyAgICAgICAgeG1pOmlkPSJfazRTbW1yd0ZFZVN3TkxLMlcwMkh3QSINCisgICAgICAgIGljb25QYXRoPSIvaWNvbnMvZnVsbC9vYmoxNi9FbGVtZW50LmdpZiINCisgICAgICAgIGJ1bmRsZUlkPSJvcmcuZWNsaXBzZS51bWwyLnVtbC5lZGl0Ii8+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy51bWwuRWxlbWVudDwvc3BlY2lhbGl6ZWRUeXBlc0lEPg0KKyAgICA8bWF0Y2hlckNvbmZpZ3VyYXRpb24NCisgICAgICAgIHhzaTp0eXBlPSJzdGVyZW90eXBlYXBwbGljYXRpb25tYXRjaGVyY29uZmlndXJhdGlvbjpTdGVyZW90eXBlQXBwbGljYXRpb25NYXRjaGVyQ29uZmlndXJhdGlvbiINCisgICAgICAgIHhtaTppZD0iX2s0U21tN3dGRWVTd05MSzJXMDJId0EiPg0KKyAgICAgIDxzdGVyZW90eXBlc1F1YWxpZmllZE5hbWVzPlN5c01MOjpCbG9ja3M6Ok5lc3RlZENvbm5lY3RvckVuZDwvc3RlcmVvdHlwZXNRdWFsaWZpZWROYW1lcz4NCisgICAgPC9tYXRjaGVyQ29uZmlndXJhdGlvbj4NCisgIDwvZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucz4NCisgIDxlbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zDQorICAgICAgeHNpOnR5cGU9ImVsZW1lbnR0eXBlc2NvbmZpZ3VyYXRpb25zOlNwZWNpYWxpemF0aW9uVHlwZUNvbmZpZ3VyYXRpb24iDQorICAgICAgeG1pOmlkPSJfazRTbW5Md0ZFZVN3TkxLMlcwMkh3QSINCisgICAgICBuYW1lPSJEaXJlY3RlZFJlbGF0aW9uc2hpcFByb3BlcnR5UGF0aCINCisgICAgICBpZGVudGlmaWVyPSJvcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuRGlyZWN0ZWRSZWxhdGlvbnNoaXBQcm9wZXJ0eVBhdGgiDQorICAgICAgaGludD0iVU1MOjpEaXJlY3RlZFJlbGF0aW9uc2hpcCI+DQorICAgIDxpY29uRW50cnkNCisgICAgICAgIHhtaTppZD0iX2s0U21uYndGRWVTd05MSzJXMDJId0EiDQorICAgICAgICBpY29uUGF0aD0iL2ljb25zL2Z1bGwvb2JqMTYvRGlyZWN0ZWRSZWxhdGlvbnNoaXAuZ2lmIg0KKyAgICAgICAgYnVuZGxlSWQ9Im9yZy5lY2xpcHNlLnVtbDIudW1sLmVkaXQiLz4NCisgICAgPHNwZWNpYWxpemVkVHlwZXNJRD5vcmcuZWNsaXBzZS5wYXB5cnVzLnVtbC5EaXJlY3RlZFJlbGF0aW9uc2hpcDwvc3BlY2lhbGl6ZWRUeXBlc0lEPg0KKyAgICA8bWF0Y2hlckNvbmZpZ3VyYXRpb24NCisgICAgICAgIHhzaTp0eXBlPSJzdGVyZW90eXBlYXBwbGljYXRpb25tYXRjaGVyY29uZmlndXJhdGlvbjpTdGVyZW90eXBlQXBwbGljYXRpb25NYXRjaGVyQ29uZmlndXJhdGlvbiINCisgICAgICAgIHhtaTppZD0iX2s0U21ucndGRWVTd05MSzJXMDJId0EiPg0KKyAgICAgIDxzdGVyZW90eXBlc1F1YWxpZmllZE5hbWVzPlN5c01MOjpCbG9ja3M6OkRpcmVjdGVkUmVsYXRpb25zaGlwUHJvcGVydHlQYXRoPC9zdGVyZW90eXBlc1F1YWxpZmllZE5hbWVzPg0KKyAgICA8L21hdGNoZXJDb25maWd1cmF0aW9uPg0KKyAgPC9lbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zPg0KKyAgPGVsZW1lbnRUeXBlQ29uZmlndXJhdGlvbnMNCisgICAgICB4c2k6dHlwZT0iZWxlbWVudHR5cGVzY29uZmlndXJhdGlvbnM6U3BlY2lhbGl6YXRpb25UeXBlQ29uZmlndXJhdGlvbiINCisgICAgICB4bWk6aWQ9Il9rNFNtbjd3RkVlU3dOTEsyVzAySHdBIg0KKyAgICAgIG5hbWU9IkVsZW1lbnRQcm9wZXJ0eVBhdGgiDQorICAgICAgaWRlbnRpZmllcj0ib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LkVsZW1lbnRQcm9wZXJ0eVBhdGgiDQorICAgICAgaGludD0iVU1MOjpFbGVtZW50Ij4NCisgICAgPGljb25FbnRyeQ0KKyAgICAgICAgeG1pOmlkPSJfazRTbW9Md0ZFZVN3TkxLMlcwMkh3QSINCisgICAgICAgIGljb25QYXRoPSIvaWNvbnMvZnVsbC9vYmoxNi9FbGVtZW50LmdpZiINCisgICAgICAgIGJ1bmRsZUlkPSJvcmcuZWNsaXBzZS51bWwyLnVtbC5lZGl0Ii8+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy51bWwuRWxlbWVudDwvc3BlY2lhbGl6ZWRUeXBlc0lEPg0KKyAgICA8bWF0Y2hlckNvbmZpZ3VyYXRpb24NCisgICAgICAgIHhzaTp0eXBlPSJzdGVyZW90eXBlYXBwbGljYXRpb25tYXRjaGVyY29uZmlndXJhdGlvbjpTdGVyZW90eXBlQXBwbGljYXRpb25NYXRjaGVyQ29uZmlndXJhdGlvbiINCisgICAgICAgIHhtaTppZD0iX2s0U21vYndGRWVTd05MSzJXMDJId0EiPg0KKyAgICAgIDxzdGVyZW90eXBlc1F1YWxpZmllZE5hbWVzPlN5c01MOjpCbG9ja3M6OkVsZW1lbnRQcm9wZXJ0eVBhdGg8L3N0ZXJlb3R5cGVzUXVhbGlmaWVkTmFtZXM+DQorICAgIDwvbWF0Y2hlckNvbmZpZ3VyYXRpb24+DQorICA8L2VsZW1lbnRUeXBlQ29uZmlndXJhdGlvbnM+DQorICA8ZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucw0KKyAgICAgIHhzaTp0eXBlPSJlbGVtZW50dHlwZXNjb25maWd1cmF0aW9uczpTcGVjaWFsaXphdGlvblR5cGVDb25maWd1cmF0aW9uIg0KKyAgICAgIHhtaTppZD0iX2s0U21vcndGRWVTd05MSzJXMDJId0EiDQorICAgICAgbmFtZT0iRW5kUGF0aE11bHRpcGxpY2l0eSINCisgICAgICBpZGVudGlmaWVyPSJvcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuRW5kUGF0aE11bHRpcGxpY2l0eSINCisgICAgICBoaW50PSJVTUw6OlByb3BlcnR5Ij4NCisgICAgPGljb25FbnRyeQ0KKyAgICAgICAgeG1pOmlkPSJfazRTbW83d0ZFZVN3TkxLMlcwMkh3QSINCisgICAgICAgIGljb25QYXRoPSIvaWNvbnMvZnVsbC9vYmoxNi9Qcm9wZXJ0eS5naWYiDQorICAgICAgICBidW5kbGVJZD0ib3JnLmVjbGlwc2UudW1sMi51bWwuZWRpdCIvPg0KKyAgICA8c3BlY2lhbGl6ZWRUeXBlc0lEPm9yZy5lY2xpcHNlLnBhcHlydXMudW1sLlByb3BlcnR5PC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICAgIDxtYXRjaGVyQ29uZmlndXJhdGlvbg0KKyAgICAgICAgeHNpOnR5cGU9InN0ZXJlb3R5cGVhcHBsaWNhdGlvbm1hdGNoZXJjb25maWd1cmF0aW9uOlN0ZXJlb3R5cGVBcHBsaWNhdGlvbk1hdGNoZXJDb25maWd1cmF0aW9uIg0KKyAgICAgICAgeG1pOmlkPSJfazRTbXBMd0ZFZVN3TkxLMlcwMkh3QSI+DQorICAgICAgPHN0ZXJlb3R5cGVzUXVhbGlmaWVkTmFtZXM+U3lzTUw6OkJsb2Nrczo6RW5kUGF0aE11bHRpcGxpY2l0eTwvc3RlcmVvdHlwZXNRdWFsaWZpZWROYW1lcz4NCisgICAgPC9tYXRjaGVyQ29uZmlndXJhdGlvbj4NCisgIDwvZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucz4NCisgIDxlbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zDQorICAgICAgeHNpOnR5cGU9ImVsZW1lbnR0eXBlc2NvbmZpZ3VyYXRpb25zOlNwZWNpYWxpemF0aW9uVHlwZUNvbmZpZ3VyYXRpb24iDQorICAgICAgeG1pOmlkPSJfazRTbXBid0ZFZVN3TkxLMlcwMkh3QSINCisgICAgICBuYW1lPSJCb3VuZFJlZmVyZW5jZSINCisgICAgICBpZGVudGlmaWVyPSJvcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuQm91bmRSZWZlcmVuY2UiDQorICAgICAgaGludD0iVU1MOjpQcm9wZXJ0eSI+DQorICAgIDxpY29uRW50cnkNCisgICAgICAgIHhtaTppZD0iX2s0U21wcndGRWVTd05MSzJXMDJId0EiDQorICAgICAgICBpY29uUGF0aD0iL2ljb25zL2Z1bGwvb2JqMTYvUHJvcGVydHkuZ2lmIg0KKyAgICAgICAgYnVuZGxlSWQ9Im9yZy5lY2xpcHNlLnVtbDIudW1sLmVkaXQiLz4NCisgICAgPHNwZWNpYWxpemVkVHlwZXNJRD5vcmcuZWNsaXBzZS5wYXB5cnVzLnVtbC5Qcm9wZXJ0eTwvc3BlY2lhbGl6ZWRUeXBlc0lEPg0KKyAgICA8bWF0Y2hlckNvbmZpZ3VyYXRpb24NCisgICAgICAgIHhzaTp0eXBlPSJzdGVyZW90eXBlYXBwbGljYXRpb25tYXRjaGVyY29uZmlndXJhdGlvbjpTdGVyZW90eXBlQXBwbGljYXRpb25NYXRjaGVyQ29uZmlndXJhdGlvbiINCisgICAgICAgIHhtaTppZD0iX2s0U21wN3dGRWVTd05MSzJXMDJId0EiPg0KKyAgICAgIDxzdGVyZW90eXBlc1F1YWxpZmllZE5hbWVzPlN5c01MOjpCbG9ja3M6OkJvdW5kUmVmZXJlbmNlPC9zdGVyZW90eXBlc1F1YWxpZmllZE5hbWVzPg0KKyAgICA8L21hdGNoZXJDb25maWd1cmF0aW9uPg0KKyAgPC9lbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zPg0KKyAgPGVsZW1lbnRUeXBlQ29uZmlndXJhdGlvbnMNCisgICAgICB4c2k6dHlwZT0iZWxlbWVudHR5cGVzY29uZmlndXJhdGlvbnM6U3BlY2lhbGl6YXRpb25UeXBlQ29uZmlndXJhdGlvbiINCisgICAgICB4bWk6aWQ9Il9rNFNtcUx3RkVlU3dOTEsyVzAySHdBIg0KKyAgICAgIG5hbWU9IkFkanVuY3RQcm9wZXJ0eSINCisgICAgICBpZGVudGlmaWVyPSJvcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuQWRqdW5jdFByb3BlcnR5Ig0KKyAgICAgIGhpbnQ9IlVNTDo6UHJvcGVydHkiPg0KKyAgICA8aWNvbkVudHJ5DQorICAgICAgICB4bWk6aWQ9Il9rNFNtcWJ3RkVlU3dOTEsyVzAySHdBIg0KKyAgICAgICAgaWNvblBhdGg9Ii9pY29ucy9mdWxsL29iajE2L1Byb3BlcnR5LmdpZiINCisgICAgICAgIGJ1bmRsZUlkPSJvcmcuZWNsaXBzZS51bWwyLnVtbC5lZGl0Ii8+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy51bWwuUHJvcGVydHk8L3NwZWNpYWxpemVkVHlwZXNJRD4NCisgICAgPG1hdGNoZXJDb25maWd1cmF0aW9uDQorICAgICAgICB4c2k6dHlwZT0ic3RlcmVvdHlwZWFwcGxpY2F0aW9ubWF0Y2hlcmNvbmZpZ3VyYXRpb246U3RlcmVvdHlwZUFwcGxpY2F0aW9uTWF0Y2hlckNvbmZpZ3VyYXRpb24iDQorICAgICAgICB4bWk6aWQ9Il9rNFNtcXJ3RkVlU3dOTEsyVzAySHdBIj4NCisgICAgICA8c3RlcmVvdHlwZXNRdWFsaWZpZWROYW1lcz5TeXNNTDo6QmxvY2tzOjpBZGp1bmN0UHJvcGVydHk8L3N0ZXJlb3R5cGVzUXVhbGlmaWVkTmFtZXM+DQorICAgIDwvbWF0Y2hlckNvbmZpZ3VyYXRpb24+DQorICA8L2VsZW1lbnRUeXBlQ29uZmlndXJhdGlvbnM+DQorICA8ZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucw0KKyAgICAgIHhzaTp0eXBlPSJlbGVtZW50dHlwZXNjb25maWd1cmF0aW9uczpTcGVjaWFsaXphdGlvblR5cGVDb25maWd1cmF0aW9uIg0KKyAgICAgIHhtaTppZD0iX2s0U21xN3dGRWVTd05MSzJXMDJId0EiDQorICAgICAgbmFtZT0iQ2xhc3NpZmllckJlaGF2aW9yUHJvcGVydHkiDQorICAgICAgaWRlbnRpZmllcj0ib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LkNsYXNzaWZpZXJCZWhhdmlvclByb3BlcnR5Ig0KKyAgICAgIGhpbnQ9IlVNTDo6UHJvcGVydHkiPg0KKyAgICA8aWNvbkVudHJ5DQorICAgICAgICB4bWk6aWQ9Il9rNFNtckx3RkVlU3dOTEsyVzAySHdBIg0KKyAgICAgICAgaWNvblBhdGg9Ii9pY29ucy9mdWxsL29iajE2L1Byb3BlcnR5LmdpZiINCisgICAgICAgIGJ1bmRsZUlkPSJvcmcuZWNsaXBzZS51bWwyLnVtbC5lZGl0Ii8+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy51bWwuUHJvcGVydHk8L3NwZWNpYWxpemVkVHlwZXNJRD4NCisgICAgPG1hdGNoZXJDb25maWd1cmF0aW9uDQorICAgICAgICB4c2k6dHlwZT0ic3RlcmVvdHlwZWFwcGxpY2F0aW9ubWF0Y2hlcmNvbmZpZ3VyYXRpb246U3RlcmVvdHlwZUFwcGxpY2F0aW9uTWF0Y2hlckNvbmZpZ3VyYXRpb24iDQorICAgICAgICB4bWk6aWQ9Il9rNFNtcmJ3RkVlU3dOTEsyVzAySHdBIj4NCisgICAgICA8c3RlcmVvdHlwZXNRdWFsaWZpZWROYW1lcz5TeXNNTDo6QmxvY2tzOjpDbGFzc2lmaWVyQmVoYXZpb3JQcm9wZXJ0eTwvc3RlcmVvdHlwZXNRdWFsaWZpZWROYW1lcz4NCisgICAgPC9tYXRjaGVyQ29uZmlndXJhdGlvbj4NCisgIDwvZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucz4NCisgIDxlbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zDQorICAgICAgeHNpOnR5cGU9ImVsZW1lbnR0eXBlc2NvbmZpZ3VyYXRpb25zOlNwZWNpYWxpemF0aW9uVHlwZUNvbmZpZ3VyYXRpb24iDQorICAgICAgeG1pOmlkPSJfazRTbXJyd0ZFZVN3TkxLMlcwMkh3QSINCisgICAgICBuYW1lPSJJdGVtRmxvdyINCisgICAgICBpZGVudGlmaWVyPSJvcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuSXRlbUZsb3ciDQorICAgICAgaGludD0iVU1MOjpJbmZvcm1hdGlvbkZsb3ciPg0KKyAgICA8aWNvbkVudHJ5DQorICAgICAgICB4bWk6aWQ9Il9rNFNtcjd3RkVlU3dOTEsyVzAySHdBIg0KKyAgICAgICAgaWNvblBhdGg9Ii9pY29ucy9mdWxsL29iajE2L0luZm9ybWF0aW9uRmxvdy5naWYiDQorICAgICAgICBidW5kbGVJZD0ib3JnLmVjbGlwc2UudW1sMi51bWwuZWRpdCIvPg0KKyAgICA8c3BlY2lhbGl6ZWRUeXBlc0lEPm9yZy5lY2xpcHNlLnBhcHlydXMudW1sLkluZm9ybWF0aW9uRmxvdzwvc3BlY2lhbGl6ZWRUeXBlc0lEPg0KKyAgICA8bWF0Y2hlckNvbmZpZ3VyYXRpb24NCisgICAgICAgIHhzaTp0eXBlPSJzdGVyZW90eXBlYXBwbGljYXRpb25tYXRjaGVyY29uZmlndXJhdGlvbjpTdGVyZW90eXBlQXBwbGljYXRpb25NYXRjaGVyQ29uZmlndXJhdGlvbiINCisgICAgICAgIHhtaTppZD0iX2s0U21zTHdGRWVTd05MSzJXMDJId0EiPg0KKyAgICAgIDxzdGVyZW90eXBlc1F1YWxpZmllZE5hbWVzPlN5c01MOjpQb3J0c2FuZEZsb3dzOjpJdGVtRmxvdzwvc3RlcmVvdHlwZXNRdWFsaWZpZWROYW1lcz4NCisgICAgPC9tYXRjaGVyQ29uZmlndXJhdGlvbj4NCisgIDwvZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucz4NCisgIDxlbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zDQorICAgICAgeHNpOnR5cGU9ImVsZW1lbnR0eXBlc2NvbmZpZ3VyYXRpb25zOlNwZWNpYWxpemF0aW9uVHlwZUNvbmZpZ3VyYXRpb24iDQorICAgICAgeG1pOmlkPSJfazRTbXNid0ZFZVN3TkxLMlcwMkh3QSINCisgICAgICBuYW1lPSJGbG93UHJvcGVydHkiDQorICAgICAgaWRlbnRpZmllcj0ib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LkZsb3dQcm9wZXJ0eSINCisgICAgICBoaW50PSJVTUw6OlByb3BlcnR5Ij4NCisgICAgPGljb25FbnRyeQ0KKyAgICAgICAgeG1pOmlkPSJfazRTbXNyd0ZFZVN3TkxLMlcwMkh3QSINCisgICAgICAgIGljb25QYXRoPSIvaWNvbnMvZnVsbC9vYmoxNi9Qcm9wZXJ0eS5naWYiDQorICAgICAgICBidW5kbGVJZD0ib3JnLmVjbGlwc2UudW1sMi51bWwuZWRpdCIvPg0KKyAgICA8c3BlY2lhbGl6ZWRUeXBlc0lEPm9yZy5lY2xpcHNlLnBhcHlydXMudW1sLlByb3BlcnR5PC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICAgIDxtYXRjaGVyQ29uZmlndXJhdGlvbg0KKyAgICAgICAgeHNpOnR5cGU9InN0ZXJlb3R5cGVhcHBsaWNhdGlvbm1hdGNoZXJjb25maWd1cmF0aW9uOlN0ZXJlb3R5cGVBcHBsaWNhdGlvbk1hdGNoZXJDb25maWd1cmF0aW9uIg0KKyAgICAgICAgeG1pOmlkPSJfazRTbXM3d0ZFZVN3TkxLMlcwMkh3QSI+DQorICAgICAgPHN0ZXJlb3R5cGVzUXVhbGlmaWVkTmFtZXM+U3lzTUw6OlBvcnRzYW5kRmxvd3M6OkZsb3dQcm9wZXJ0eTwvc3RlcmVvdHlwZXNRdWFsaWZpZWROYW1lcz4NCisgICAgPC9tYXRjaGVyQ29uZmlndXJhdGlvbj4NCisgIDwvZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucz4NCisgIDxlbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zDQorICAgICAgeHNpOnR5cGU9ImVsZW1lbnR0eXBlc2NvbmZpZ3VyYXRpb25zOlNwZWNpYWxpemF0aW9uVHlwZUNvbmZpZ3VyYXRpb24iDQorICAgICAgeG1pOmlkPSJfazRTbXRMd0ZFZVN3TkxLMlcwMkh3QSINCisgICAgICBuYW1lPSJGdWxsUG9ydCINCisgICAgICBpZGVudGlmaWVyPSJvcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuRnVsbFBvcnQiDQorICAgICAgaGludD0iVU1MOjpQb3J0Ij4NCisgICAgPGljb25FbnRyeQ0KKyAgICAgICAgeG1pOmlkPSJfazRTbXRid0ZFZVN3TkxLMlcwMkh3QSINCisgICAgICAgIGljb25QYXRoPSIvaWNvbnMvZnVsbC9vYmoxNi9Qb3J0LmdpZiINCisgICAgICAgIGJ1bmRsZUlkPSJvcmcuZWNsaXBzZS51bWwyLnVtbC5lZGl0Ii8+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy51bWwuUG9ydDwvc3BlY2lhbGl6ZWRUeXBlc0lEPg0KKyAgICA8bWF0Y2hlckNvbmZpZ3VyYXRpb24NCisgICAgICAgIHhzaTp0eXBlPSJzdGVyZW90eXBlYXBwbGljYXRpb25tYXRjaGVyY29uZmlndXJhdGlvbjpTdGVyZW90eXBlQXBwbGljYXRpb25NYXRjaGVyQ29uZmlndXJhdGlvbiINCisgICAgICAgIHhtaTppZD0iX2s0U210cndGRWVTd05MSzJXMDJId0EiPg0KKyAgICAgIDxzdGVyZW90eXBlc1F1YWxpZmllZE5hbWVzPlN5c01MOjpQb3J0c2FuZEZsb3dzOjpGdWxsUG9ydDwvc3RlcmVvdHlwZXNRdWFsaWZpZWROYW1lcz4NCisgICAgPC9tYXRjaGVyQ29uZmlndXJhdGlvbj4NCisgIDwvZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucz4NCisgIDxlbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zDQorICAgICAgeHNpOnR5cGU9ImVsZW1lbnR0eXBlc2NvbmZpZ3VyYXRpb25zOlNwZWNpYWxpemF0aW9uVHlwZUNvbmZpZ3VyYXRpb24iDQorICAgICAgeG1pOmlkPSJfazRTbXQ3d0ZFZVN3TkxLMlcwMkh3QSINCisgICAgICBuYW1lPSJJbnRlcmZhY2VCbG9jayINCisgICAgICBpZGVudGlmaWVyPSJvcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuSW50ZXJmYWNlQmxvY2siDQorICAgICAgaGludD0iVU1MOjpDbGFzcyI+DQorICAgIDxpY29uRW50cnkNCisgICAgICAgIHhtaTppZD0iX2s0U211THdGRWVTd05MSzJXMDJId0EiDQorICAgICAgICBpY29uUGF0aD0iL2ljb25zL2Z1bGwvb2JqMTYvQ2xhc3MuZ2lmIg0KKyAgICAgICAgYnVuZGxlSWQ9Im9yZy5lY2xpcHNlLnVtbDIudW1sLmVkaXQiLz4NCisgICAgPHNwZWNpYWxpemVkVHlwZXNJRD5vcmcuZWNsaXBzZS5wYXB5cnVzLnVtbC5DbGFzczwvc3BlY2lhbGl6ZWRUeXBlc0lEPg0KKyAgICA8bWF0Y2hlckNvbmZpZ3VyYXRpb24NCisgICAgICAgIHhzaTp0eXBlPSJzdGVyZW90eXBlYXBwbGljYXRpb25tYXRjaGVyY29uZmlndXJhdGlvbjpTdGVyZW90eXBlQXBwbGljYXRpb25NYXRjaGVyQ29uZmlndXJhdGlvbiINCisgICAgICAgIHhtaTppZD0iX2s0U211YndGRWVTd05MSzJXMDJId0EiPg0KKyAgICAgIDxzdGVyZW90eXBlc1F1YWxpZmllZE5hbWVzPlN5c01MOjpQb3J0c2FuZEZsb3dzOjpJbnRlcmZhY2VCbG9jazwvc3RlcmVvdHlwZXNRdWFsaWZpZWROYW1lcz4NCisgICAgPC9tYXRjaGVyQ29uZmlndXJhdGlvbj4NCisgIDwvZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucz4NCisgIDxlbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zDQorICAgICAgeHNpOnR5cGU9ImVsZW1lbnR0eXBlc2NvbmZpZ3VyYXRpb25zOlNwZWNpYWxpemF0aW9uVHlwZUNvbmZpZ3VyYXRpb24iDQorICAgICAgeG1pOmlkPSJfazRTbXVyd0ZFZVN3TkxLMlcwMkh3QSINCisgICAgICBuYW1lPSJQcm94eVBvcnQiDQorICAgICAgaWRlbnRpZmllcj0ib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LlByb3h5UG9ydCINCisgICAgICBoaW50PSJVTUw6OlBvcnQiPg0KKyAgICA8aWNvbkVudHJ5DQorICAgICAgICB4bWk6aWQ9Il9rNFNtdTd3RkVlU3dOTEsyVzAySHdBIg0KKyAgICAgICAgaWNvblBhdGg9Ii9pY29ucy9mdWxsL29iajE2L1BvcnQuZ2lmIg0KKyAgICAgICAgYnVuZGxlSWQ9Im9yZy5lY2xpcHNlLnVtbDIudW1sLmVkaXQiLz4NCisgICAgPHNwZWNpYWxpemVkVHlwZXNJRD5vcmcuZWNsaXBzZS5wYXB5cnVzLnVtbC5Qb3J0PC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICAgIDxtYXRjaGVyQ29uZmlndXJhdGlvbg0KKyAgICAgICAgeHNpOnR5cGU9InN0ZXJlb3R5cGVhcHBsaWNhdGlvbm1hdGNoZXJjb25maWd1cmF0aW9uOlN0ZXJlb3R5cGVBcHBsaWNhdGlvbk1hdGNoZXJDb25maWd1cmF0aW9uIg0KKyAgICAgICAgeG1pOmlkPSJfazRTbXZMd0ZFZVN3TkxLMlcwMkh3QSI+DQorICAgICAgPHN0ZXJlb3R5cGVzUXVhbGlmaWVkTmFtZXM+U3lzTUw6OlBvcnRzYW5kRmxvd3M6OlByb3h5UG9ydDwvc3RlcmVvdHlwZXNRdWFsaWZpZWROYW1lcz4NCisgICAgPC9tYXRjaGVyQ29uZmlndXJhdGlvbj4NCisgIDwvZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucz4NCisgIDxlbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zDQorICAgICAgeHNpOnR5cGU9ImVsZW1lbnR0eXBlc2NvbmZpZ3VyYXRpb25zOlNwZWNpYWxpemF0aW9uVHlwZUNvbmZpZ3VyYXRpb24iDQorICAgICAgeG1pOmlkPSJfazRTbXZid0ZFZVN3TkxLMlcwMkh3QSINCisgICAgICBuYW1lPSJBY2NlcHRDaGFuZ2VTdHJ1Y3R1cmFsRmVhdHVyZUV2ZW50QWN0aW9uIg0KKyAgICAgIGlkZW50aWZpZXI9Im9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5BY2NlcHRDaGFuZ2VTdHJ1Y3R1cmFsRmVhdHVyZUV2ZW50QWN0aW9uIg0KKyAgICAgIGhpbnQ9IlVNTDo6QWNjZXB0RXZlbnRBY3Rpb24iPg0KKyAgICA8aWNvbkVudHJ5DQorICAgICAgICB4bWk6aWQ9Il9rNFNtdnJ3RkVlU3dOTEsyVzAySHdBIg0KKyAgICAgICAgaWNvblBhdGg9Ii9pY29ucy9mdWxsL29iajE2L0FjY2VwdEV2ZW50QWN0aW9uLmdpZiINCisgICAgICAgIGJ1bmRsZUlkPSJvcmcuZWNsaXBzZS51bWwyLnVtbC5lZGl0Ii8+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy51bWwuQWNjZXB0RXZlbnRBY3Rpb248L3NwZWNpYWxpemVkVHlwZXNJRD4NCisgICAgPG1hdGNoZXJDb25maWd1cmF0aW9uDQorICAgICAgICB4c2k6dHlwZT0ic3RlcmVvdHlwZWFwcGxpY2F0aW9ubWF0Y2hlcmNvbmZpZ3VyYXRpb246U3RlcmVvdHlwZUFwcGxpY2F0aW9uTWF0Y2hlckNvbmZpZ3VyYXRpb24iDQorICAgICAgICB4bWk6aWQ9Il9rNFNtdjd3RkVlU3dOTEsyVzAySHdBIj4NCisgICAgICA8c3RlcmVvdHlwZXNRdWFsaWZpZWROYW1lcz5TeXNNTDo6UG9ydHNhbmRGbG93czo6QWNjZXB0Q2hhbmdlU3RydWN0dXJhbEZlYXR1cmVFdmVudEFjdGlvbjwvc3RlcmVvdHlwZXNRdWFsaWZpZWROYW1lcz4NCisgICAgPC9tYXRjaGVyQ29uZmlndXJhdGlvbj4NCisgIDwvZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucz4NCisgIDxlbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zDQorICAgICAgeHNpOnR5cGU9ImVsZW1lbnR0eXBlc2NvbmZpZ3VyYXRpb25zOlNwZWNpYWxpemF0aW9uVHlwZUNvbmZpZ3VyYXRpb24iDQorICAgICAgeG1pOmlkPSJfazRTbXdMd0ZFZVN3TkxLMlcwMkh3QSINCisgICAgICBuYW1lPSJDaGFuZ2VTdHJ1Y3R1cmFsRmVhdHVyZUV2ZW50Ig0KKyAgICAgIGlkZW50aWZpZXI9Im9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5DaGFuZ2VTdHJ1Y3R1cmFsRmVhdHVyZUV2ZW50Ig0KKyAgICAgIGhpbnQ9IlVNTDo6Q2hhbmdlRXZlbnQiPg0KKyAgICA8aWNvbkVudHJ5DQorICAgICAgICB4bWk6aWQ9Il9rNFNtd2J3RkVlU3dOTEsyVzAySHdBIg0KKyAgICAgICAgaWNvblBhdGg9Ii9pY29ucy9mdWxsL29iajE2L0NoYW5nZUV2ZW50LmdpZiINCisgICAgICAgIGJ1bmRsZUlkPSJvcmcuZWNsaXBzZS51bWwyLnVtbC5lZGl0Ii8+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy51bWwuQ2hhbmdlRXZlbnQ8L3NwZWNpYWxpemVkVHlwZXNJRD4NCisgICAgPG1hdGNoZXJDb25maWd1cmF0aW9uDQorICAgICAgICB4c2k6dHlwZT0ic3RlcmVvdHlwZWFwcGxpY2F0aW9ubWF0Y2hlcmNvbmZpZ3VyYXRpb246U3RlcmVvdHlwZUFwcGxpY2F0aW9uTWF0Y2hlckNvbmZpZ3VyYXRpb24iDQorICAgICAgICB4bWk6aWQ9Il9rNFNtd3J3RkVlU3dOTEsyVzAySHdBIj4NCisgICAgICA8c3RlcmVvdHlwZXNRdWFsaWZpZWROYW1lcz5TeXNNTDo6UG9ydHNhbmRGbG93czo6Q2hhbmdlU3RydWN0dXJhbEZlYXR1cmVFdmVudDwvc3RlcmVvdHlwZXNRdWFsaWZpZWROYW1lcz4NCisgICAgPC9tYXRjaGVyQ29uZmlndXJhdGlvbj4NCisgIDwvZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucz4NCisgIDxlbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zDQorICAgICAgeHNpOnR5cGU9ImVsZW1lbnR0eXBlc2NvbmZpZ3VyYXRpb25zOlNwZWNpYWxpemF0aW9uVHlwZUNvbmZpZ3VyYXRpb24iDQorICAgICAgeG1pOmlkPSJfazRTbXc3d0ZFZVN3TkxLMlcwMkh3QSINCisgICAgICBuYW1lPSJEaXJlY3RlZEZlYXR1cmUiDQorICAgICAgaWRlbnRpZmllcj0ib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LkRpcmVjdGVkRmVhdHVyZSINCisgICAgICBoaW50PSJVTUw6OkZlYXR1cmUiPg0KKyAgICA8aWNvbkVudHJ5DQorICAgICAgICB4bWk6aWQ9Il9rNFNteEx3RkVlU3dOTEsyVzAySHdBIg0KKyAgICAgICAgaWNvblBhdGg9Ii9pY29ucy9mdWxsL29iajE2L0ZlYXR1cmUuZ2lmIg0KKyAgICAgICAgYnVuZGxlSWQ9Im9yZy5lY2xpcHNlLnVtbDIudW1sLmVkaXQiLz4NCisgICAgPHNwZWNpYWxpemVkVHlwZXNJRD5vcmcuZWNsaXBzZS5wYXB5cnVzLnVtbC5GZWF0dXJlPC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICAgIDxtYXRjaGVyQ29uZmlndXJhdGlvbg0KKyAgICAgICAgeHNpOnR5cGU9InN0ZXJlb3R5cGVhcHBsaWNhdGlvbm1hdGNoZXJjb25maWd1cmF0aW9uOlN0ZXJlb3R5cGVBcHBsaWNhdGlvbk1hdGNoZXJDb25maWd1cmF0aW9uIg0KKyAgICAgICAgeG1pOmlkPSJfazRTbXhid0ZFZVN3TkxLMlcwMkh3QSI+DQorICAgICAgPHN0ZXJlb3R5cGVzUXVhbGlmaWVkTmFtZXM+U3lzTUw6OlBvcnRzYW5kRmxvd3M6OkRpcmVjdGVkRmVhdHVyZTwvc3RlcmVvdHlwZXNRdWFsaWZpZWROYW1lcz4NCisgICAgPC9tYXRjaGVyQ29uZmlndXJhdGlvbj4NCisgIDwvZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucz4NCisgIDxlbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zDQorICAgICAgeHNpOnR5cGU9ImVsZW1lbnR0eXBlc2NvbmZpZ3VyYXRpb25zOlNwZWNpYWxpemF0aW9uVHlwZUNvbmZpZ3VyYXRpb24iDQorICAgICAgeG1pOmlkPSJfazRTbXhyd0ZFZVN3TkxLMlcwMkh3QSINCisgICAgICBuYW1lPSJJbnZvY2F0aW9uT25OZXN0ZWRQb3J0QWN0aW9uIEludm9jYXRpb25BY3Rpb24iDQorICAgICAgaWRlbnRpZmllcj0ib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0Lkludm9jYXRpb25Pbk5lc3RlZFBvcnRBY3Rpb25fSW52b2NhdGlvbkFjdGlvbiINCisgICAgICBoaW50PSJVTUw6Okludm9jYXRpb25BY3Rpb24iPg0KKyAgICA8aWNvbkVudHJ5DQorICAgICAgICB4bWk6aWQ9Il9rNFNteDd3RkVlU3dOTEsyVzAySHdBIg0KKyAgICAgICAgaWNvblBhdGg9Ii9pY29ucy9mdWxsL29iajE2L0ludm9jYXRpb25BY3Rpb24uZ2lmIg0KKyAgICAgICAgYnVuZGxlSWQ9Im9yZy5lY2xpcHNlLnVtbDIudW1sLmVkaXQiLz4NCisgICAgPHNwZWNpYWxpemVkVHlwZXNJRD5vcmcuZWNsaXBzZS5wYXB5cnVzLnVtbC5JbnZvY2F0aW9uQWN0aW9uPC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICAgIDxtYXRjaGVyQ29uZmlndXJhdGlvbg0KKyAgICAgICAgeHNpOnR5cGU9InN0ZXJlb3R5cGVhcHBsaWNhdGlvbm1hdGNoZXJjb25maWd1cmF0aW9uOlN0ZXJlb3R5cGVBcHBsaWNhdGlvbk1hdGNoZXJDb25maWd1cmF0aW9uIg0KKyAgICAgICAgeG1pOmlkPSJfazRTbXlMd0ZFZVN3TkxLMlcwMkh3QSI+DQorICAgICAgPHN0ZXJlb3R5cGVzUXVhbGlmaWVkTmFtZXM+U3lzTUw6OlBvcnRzYW5kRmxvd3M6Okludm9jYXRpb25Pbk5lc3RlZFBvcnRBY3Rpb248L3N0ZXJlb3R5cGVzUXVhbGlmaWVkTmFtZXM+DQorICAgIDwvbWF0Y2hlckNvbmZpZ3VyYXRpb24+DQorICA8L2VsZW1lbnRUeXBlQ29uZmlndXJhdGlvbnM+DQorICA8ZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucw0KKyAgICAgIHhzaTp0eXBlPSJlbGVtZW50dHlwZXNjb25maWd1cmF0aW9uczpTcGVjaWFsaXphdGlvblR5cGVDb25maWd1cmF0aW9uIg0KKyAgICAgIHhtaTppZD0iX2s0U215YndGRWVTd05MSzJXMDJId0EiDQorICAgICAgbmFtZT0iSW52b2NhdGlvbk9uTmVzdGVkUG9ydEFjdGlvbiBFbGVtZW50Ig0KKyAgICAgIGlkZW50aWZpZXI9Im9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5JbnZvY2F0aW9uT25OZXN0ZWRQb3J0QWN0aW9uX0VsZW1lbnQiDQorICAgICAgaGludD0iVU1MOjpFbGVtZW50Ij4NCisgICAgPGljb25FbnRyeQ0KKyAgICAgICAgeG1pOmlkPSJfazRTbXlyd0ZFZVN3TkxLMlcwMkh3QSINCisgICAgICAgIGljb25QYXRoPSIvaWNvbnMvZnVsbC9vYmoxNi9FbGVtZW50LmdpZiINCisgICAgICAgIGJ1bmRsZUlkPSJvcmcuZWNsaXBzZS51bWwyLnVtbC5lZGl0Ii8+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy51bWwuRWxlbWVudDwvc3BlY2lhbGl6ZWRUeXBlc0lEPg0KKyAgICA8bWF0Y2hlckNvbmZpZ3VyYXRpb24NCisgICAgICAgIHhzaTp0eXBlPSJzdGVyZW90eXBlYXBwbGljYXRpb25tYXRjaGVyY29uZmlndXJhdGlvbjpTdGVyZW90eXBlQXBwbGljYXRpb25NYXRjaGVyQ29uZmlndXJhdGlvbiINCisgICAgICAgIHhtaTppZD0iX2s0U215N3dGRWVTd05MSzJXMDJId0EiPg0KKyAgICAgIDxzdGVyZW90eXBlc1F1YWxpZmllZE5hbWVzPlN5c01MOjpQb3J0c2FuZEZsb3dzOjpJbnZvY2F0aW9uT25OZXN0ZWRQb3J0QWN0aW9uPC9zdGVyZW90eXBlc1F1YWxpZmllZE5hbWVzPg0KKyAgICA8L21hdGNoZXJDb25maWd1cmF0aW9uPg0KKyAgPC9lbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zPg0KKyAgPGVsZW1lbnRUeXBlQ29uZmlndXJhdGlvbnMNCisgICAgICB4c2k6dHlwZT0iZWxlbWVudHR5cGVzY29uZmlndXJhdGlvbnM6U3BlY2lhbGl6YXRpb25UeXBlQ29uZmlndXJhdGlvbiINCisgICAgICB4bWk6aWQ9Il9rNFNtekx3RkVlU3dOTEsyVzAySHdBIg0KKyAgICAgIG5hbWU9IlRyaWdnZXJPbk5lc3RlZFBvcnQgVHJpZ2dlciINCisgICAgICBpZGVudGlmaWVyPSJvcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuVHJpZ2dlck9uTmVzdGVkUG9ydF9UcmlnZ2VyIg0KKyAgICAgIGhpbnQ9IlVNTDo6VHJpZ2dlciI+DQorICAgIDxpY29uRW50cnkNCisgICAgICAgIHhtaTppZD0iX2s0U216YndGRWVTd05MSzJXMDJId0EiDQorICAgICAgICBpY29uUGF0aD0iL2ljb25zL2Z1bGwvb2JqMTYvVHJpZ2dlci5naWYiDQorICAgICAgICBidW5kbGVJZD0ib3JnLmVjbGlwc2UudW1sMi51bWwuZWRpdCIvPg0KKyAgICA8c3BlY2lhbGl6ZWRUeXBlc0lEPm9yZy5lY2xpcHNlLnBhcHlydXMudW1sLlRyaWdnZXI8L3NwZWNpYWxpemVkVHlwZXNJRD4NCisgICAgPG1hdGNoZXJDb25maWd1cmF0aW9uDQorICAgICAgICB4c2k6dHlwZT0ic3RlcmVvdHlwZWFwcGxpY2F0aW9ubWF0Y2hlcmNvbmZpZ3VyYXRpb246U3RlcmVvdHlwZUFwcGxpY2F0aW9uTWF0Y2hlckNvbmZpZ3VyYXRpb24iDQorICAgICAgICB4bWk6aWQ9Il9rNFNtenJ3RkVlU3dOTEsyVzAySHdBIj4NCisgICAgICA8c3RlcmVvdHlwZXNRdWFsaWZpZWROYW1lcz5TeXNNTDo6UG9ydHNhbmRGbG93czo6VHJpZ2dlck9uTmVzdGVkUG9ydDwvc3RlcmVvdHlwZXNRdWFsaWZpZWROYW1lcz4NCisgICAgPC9tYXRjaGVyQ29uZmlndXJhdGlvbj4NCisgIDwvZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucz4NCisgIDxlbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zDQorICAgICAgeHNpOnR5cGU9ImVsZW1lbnR0eXBlc2NvbmZpZ3VyYXRpb25zOlNwZWNpYWxpemF0aW9uVHlwZUNvbmZpZ3VyYXRpb24iDQorICAgICAgeG1pOmlkPSJfazRTbXo3d0ZFZVN3TkxLMlcwMkh3QSINCisgICAgICBuYW1lPSJUcmlnZ2VyT25OZXN0ZWRQb3J0IEVsZW1lbnQiDQorICAgICAgaWRlbnRpZmllcj0ib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LlRyaWdnZXJPbk5lc3RlZFBvcnRfRWxlbWVudCINCisgICAgICBoaW50PSJVTUw6OkVsZW1lbnQiPg0KKyAgICA8aWNvbkVudHJ5DQorICAgICAgICB4bWk6aWQ9Il9rNFNtMEx3RkVlU3dOTEsyVzAySHdBIg0KKyAgICAgICAgaWNvblBhdGg9Ii9pY29ucy9mdWxsL29iajE2L0VsZW1lbnQuZ2lmIg0KKyAgICAgICAgYnVuZGxlSWQ9Im9yZy5lY2xpcHNlLnVtbDIudW1sLmVkaXQiLz4NCisgICAgPHNwZWNpYWxpemVkVHlwZXNJRD5vcmcuZWNsaXBzZS5wYXB5cnVzLnVtbC5FbGVtZW50PC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICAgIDxtYXRjaGVyQ29uZmlndXJhdGlvbg0KKyAgICAgICAgeHNpOnR5cGU9InN0ZXJlb3R5cGVhcHBsaWNhdGlvbm1hdGNoZXJjb25maWd1cmF0aW9uOlN0ZXJlb3R5cGVBcHBsaWNhdGlvbk1hdGNoZXJDb25maWd1cmF0aW9uIg0KKyAgICAgICAgeG1pOmlkPSJfazRTbTBid0ZFZVN3TkxLMlcwMkh3QSI+DQorICAgICAgPHN0ZXJlb3R5cGVzUXVhbGlmaWVkTmFtZXM+U3lzTUw6OlBvcnRzYW5kRmxvd3M6OlRyaWdnZXJPbk5lc3RlZFBvcnQ8L3N0ZXJlb3R5cGVzUXVhbGlmaWVkTmFtZXM+DQorICAgIDwvbWF0Y2hlckNvbmZpZ3VyYXRpb24+DQorICA8L2VsZW1lbnRUeXBlQ29uZmlndXJhdGlvbnM+DQorICA8ZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucw0KKyAgICAgIHhzaTp0eXBlPSJlbGVtZW50dHlwZXNjb25maWd1cmF0aW9uczpTcGVjaWFsaXphdGlvblR5cGVDb25maWd1cmF0aW9uIg0KKyAgICAgIHhtaTppZD0iX2s0U20wcndGRWVTd05MSzJXMDJId0EiDQorICAgICAgbmFtZT0iT3ZlcndyaXRlIg0KKyAgICAgIGlkZW50aWZpZXI9Im9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5PdmVyd3JpdGUiDQorICAgICAgaGludD0iVU1MOjpPYmplY3ROb2RlIj4NCisgICAgPGljb25FbnRyeQ0KKyAgICAgICAgeG1pOmlkPSJfazRTbTA3d0ZFZVN3TkxLMlcwMkh3QSINCisgICAgICAgIGljb25QYXRoPSIvaWNvbnMvZnVsbC9vYmoxNi9PYmplY3ROb2RlLmdpZiINCisgICAgICAgIGJ1bmRsZUlkPSJvcmcuZWNsaXBzZS51bWwyLnVtbC5lZGl0Ii8+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy51bWwuT2JqZWN0Tm9kZTwvc3BlY2lhbGl6ZWRUeXBlc0lEPg0KKyAgICA8bWF0Y2hlckNvbmZpZ3VyYXRpb24NCisgICAgICAgIHhzaTp0eXBlPSJzdGVyZW90eXBlYXBwbGljYXRpb25tYXRjaGVyY29uZmlndXJhdGlvbjpTdGVyZW90eXBlQXBwbGljYXRpb25NYXRjaGVyQ29uZmlndXJhdGlvbiINCisgICAgICAgIHhtaTppZD0iX2s0U20xTHdGRWVTd05MSzJXMDJId0EiPg0KKyAgICAgIDxzdGVyZW90eXBlc1F1YWxpZmllZE5hbWVzPlN5c01MOjpBY3Rpdml0aWVzOjpPdmVyd3JpdGU8L3N0ZXJlb3R5cGVzUXVhbGlmaWVkTmFtZXM+DQorICAgIDwvbWF0Y2hlckNvbmZpZ3VyYXRpb24+DQorICA8L2VsZW1lbnRUeXBlQ29uZmlndXJhdGlvbnM+DQorICA8ZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucw0KKyAgICAgIHhzaTp0eXBlPSJlbGVtZW50dHlwZXNjb25maWd1cmF0aW9uczpTcGVjaWFsaXphdGlvblR5cGVDb25maWd1cmF0aW9uIg0KKyAgICAgIHhtaTppZD0iX2s0U20xYndGRWVTd05MSzJXMDJId0EiDQorICAgICAgbmFtZT0iQ29udHJvbE9wZXJhdG9yIEJlaGF2aW9yIg0KKyAgICAgIGlkZW50aWZpZXI9Im9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5Db250cm9sT3BlcmF0b3JfQmVoYXZpb3IiDQorICAgICAgaGludD0iVU1MOjpCZWhhdmlvciI+DQorICAgIDxpY29uRW50cnkNCisgICAgICAgIHhtaTppZD0iX2s0U20xcndGRWVTd05MSzJXMDJId0EiDQorICAgICAgICBpY29uUGF0aD0iL2ljb25zL2Z1bGwvb2JqMTYvQmVoYXZpb3IuZ2lmIg0KKyAgICAgICAgYnVuZGxlSWQ9Im9yZy5lY2xpcHNlLnVtbDIudW1sLmVkaXQiLz4NCisgICAgPHNwZWNpYWxpemVkVHlwZXNJRD5vcmcuZWNsaXBzZS5wYXB5cnVzLnVtbC5CZWhhdmlvcjwvc3BlY2lhbGl6ZWRUeXBlc0lEPg0KKyAgICA8bWF0Y2hlckNvbmZpZ3VyYXRpb24NCisgICAgICAgIHhzaTp0eXBlPSJzdGVyZW90eXBlYXBwbGljYXRpb25tYXRjaGVyY29uZmlndXJhdGlvbjpTdGVyZW90eXBlQXBwbGljYXRpb25NYXRjaGVyQ29uZmlndXJhdGlvbiINCisgICAgICAgIHhtaTppZD0iX2s0U20xN3dGRWVTd05MSzJXMDJId0EiPg0KKyAgICAgIDxzdGVyZW90eXBlc1F1YWxpZmllZE5hbWVzPlN5c01MOjpBY3Rpdml0aWVzOjpDb250cm9sT3BlcmF0b3I8L3N0ZXJlb3R5cGVzUXVhbGlmaWVkTmFtZXM+DQorICAgIDwvbWF0Y2hlckNvbmZpZ3VyYXRpb24+DQorICA8L2VsZW1lbnRUeXBlQ29uZmlndXJhdGlvbnM+DQorICA8ZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucw0KKyAgICAgIHhzaTp0eXBlPSJlbGVtZW50dHlwZXNjb25maWd1cmF0aW9uczpTcGVjaWFsaXphdGlvblR5cGVDb25maWd1cmF0aW9uIg0KKyAgICAgIHhtaTppZD0iX2s0U20yTHdGRWVTd05MSzJXMDJId0EiDQorICAgICAgbmFtZT0iQ29udHJvbE9wZXJhdG9yIE9wZXJhdGlvbiINCisgICAgICBpZGVudGlmaWVyPSJvcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuQ29udHJvbE9wZXJhdG9yX09wZXJhdGlvbiINCisgICAgICBoaW50PSJVTUw6Ok9wZXJhdGlvbiI+DQorICAgIDxpY29uRW50cnkNCisgICAgICAgIHhtaTppZD0iX2s0U20yYndGRWVTd05MSzJXMDJId0EiDQorICAgICAgICBpY29uUGF0aD0iL2ljb25zL2Z1bGwvb2JqMTYvT3BlcmF0aW9uLmdpZiINCisgICAgICAgIGJ1bmRsZUlkPSJvcmcuZWNsaXBzZS51bWwyLnVtbC5lZGl0Ii8+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy51bWwuT3BlcmF0aW9uPC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICAgIDxtYXRjaGVyQ29uZmlndXJhdGlvbg0KKyAgICAgICAgeHNpOnR5cGU9InN0ZXJlb3R5cGVhcHBsaWNhdGlvbm1hdGNoZXJjb25maWd1cmF0aW9uOlN0ZXJlb3R5cGVBcHBsaWNhdGlvbk1hdGNoZXJDb25maWd1cmF0aW9uIg0KKyAgICAgICAgeG1pOmlkPSJfazRTbTJyd0ZFZVN3TkxLMlcwMkh3QSI+DQorICAgICAgPHN0ZXJlb3R5cGVzUXVhbGlmaWVkTmFtZXM+U3lzTUw6OkFjdGl2aXRpZXM6OkNvbnRyb2xPcGVyYXRvcjwvc3RlcmVvdHlwZXNRdWFsaWZpZWROYW1lcz4NCisgICAgPC9tYXRjaGVyQ29uZmlndXJhdGlvbj4NCisgIDwvZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucz4NCisgIDxlbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zDQorICAgICAgeHNpOnR5cGU9ImVsZW1lbnR0eXBlc2NvbmZpZ3VyYXRpb25zOlNwZWNpYWxpemF0aW9uVHlwZUNvbmZpZ3VyYXRpb24iDQorICAgICAgeG1pOmlkPSJfazRTbTI3d0ZFZVN3TkxLMlcwMkh3QSINCisgICAgICBuYW1lPSJSYXRlIEFjdGl2aXR5RWRnZSINCisgICAgICBpZGVudGlmaWVyPSJvcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuUmF0ZV9BY3Rpdml0eUVkZ2UiDQorICAgICAgaGludD0iVU1MOjpBY3Rpdml0eUVkZ2UiPg0KKyAgICA8aWNvbkVudHJ5DQorICAgICAgICB4bWk6aWQ9Il9rNFNtM0x3RkVlU3dOTEsyVzAySHdBIg0KKyAgICAgICAgaWNvblBhdGg9Ii9pY29ucy9mdWxsL29iajE2L0FjdGl2aXR5RWRnZS5naWYiDQorICAgICAgICBidW5kbGVJZD0ib3JnLmVjbGlwc2UudW1sMi51bWwuZWRpdCIvPg0KKyAgICA8c3BlY2lhbGl6ZWRUeXBlc0lEPm9yZy5lY2xpcHNlLnBhcHlydXMudW1sLkFjdGl2aXR5RWRnZTwvc3BlY2lhbGl6ZWRUeXBlc0lEPg0KKyAgICA8bWF0Y2hlckNvbmZpZ3VyYXRpb24NCisgICAgICAgIHhzaTp0eXBlPSJzdGVyZW90eXBlYXBwbGljYXRpb25tYXRjaGVyY29uZmlndXJhdGlvbjpTdGVyZW90eXBlQXBwbGljYXRpb25NYXRjaGVyQ29uZmlndXJhdGlvbiINCisgICAgICAgIHhtaTppZD0iX2s0U20zYndGRWVTd05MSzJXMDJId0EiPg0KKyAgICAgIDxzdGVyZW90eXBlc1F1YWxpZmllZE5hbWVzPlN5c01MOjpBY3Rpdml0aWVzOjpSYXRlPC9zdGVyZW90eXBlc1F1YWxpZmllZE5hbWVzPg0KKyAgICA8L21hdGNoZXJDb25maWd1cmF0aW9uPg0KKyAgPC9lbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zPg0KKyAgPGVsZW1lbnRUeXBlQ29uZmlndXJhdGlvbnMNCisgICAgICB4c2k6dHlwZT0iZWxlbWVudHR5cGVzY29uZmlndXJhdGlvbnM6U3BlY2lhbGl6YXRpb25UeXBlQ29uZmlndXJhdGlvbiINCisgICAgICB4bWk6aWQ9Il9rNFNtM3J3RkVlU3dOTEsyVzAySHdBIg0KKyAgICAgIG5hbWU9IlJhdGUgUGFyYW1ldGVyIg0KKyAgICAgIGlkZW50aWZpZXI9Im9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5SYXRlX1BhcmFtZXRlciINCisgICAgICBoaW50PSJVTUw6OlBhcmFtZXRlciI+DQorICAgIDxpY29uRW50cnkNCisgICAgICAgIHhtaTppZD0iX2s0U20zN3dGRWVTd05MSzJXMDJId0EiDQorICAgICAgICBpY29uUGF0aD0iL2ljb25zL2Z1bGwvb2JqMTYvUGFyYW1ldGVyLmdpZiINCisgICAgICAgIGJ1bmRsZUlkPSJvcmcuZWNsaXBzZS51bWwyLnVtbC5lZGl0Ii8+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy51bWwuUGFyYW1ldGVyPC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICAgIDxtYXRjaGVyQ29uZmlndXJhdGlvbg0KKyAgICAgICAgeHNpOnR5cGU9InN0ZXJlb3R5cGVhcHBsaWNhdGlvbm1hdGNoZXJjb25maWd1cmF0aW9uOlN0ZXJlb3R5cGVBcHBsaWNhdGlvbk1hdGNoZXJDb25maWd1cmF0aW9uIg0KKyAgICAgICAgeG1pOmlkPSJfazRTbTRMd0ZFZVN3TkxLMlcwMkh3QSI+DQorICAgICAgPHN0ZXJlb3R5cGVzUXVhbGlmaWVkTmFtZXM+U3lzTUw6OkFjdGl2aXRpZXM6OlJhdGU8L3N0ZXJlb3R5cGVzUXVhbGlmaWVkTmFtZXM+DQorICAgIDwvbWF0Y2hlckNvbmZpZ3VyYXRpb24+DQorICA8L2VsZW1lbnRUeXBlQ29uZmlndXJhdGlvbnM+DQorICA8ZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucw0KKyAgICAgIHhzaTp0eXBlPSJlbGVtZW50dHlwZXNjb25maWd1cmF0aW9uczpTcGVjaWFsaXphdGlvblR5cGVDb25maWd1cmF0aW9uIg0KKyAgICAgIHhtaTppZD0iX2s0U200YndGRWVTd05MSzJXMDJId0EiDQorICAgICAgbmFtZT0iTm9CdWZmZXIiDQorICAgICAgaWRlbnRpZmllcj0ib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0Lk5vQnVmZmVyIg0KKyAgICAgIGhpbnQ9IlVNTDo6T2JqZWN0Tm9kZSI+DQorICAgIDxpY29uRW50cnkNCisgICAgICAgIHhtaTppZD0iX2s0U200cndGRWVTd05MSzJXMDJId0EiDQorICAgICAgICBpY29uUGF0aD0iL2ljb25zL2Z1bGwvb2JqMTYvT2JqZWN0Tm9kZS5naWYiDQorICAgICAgICBidW5kbGVJZD0ib3JnLmVjbGlwc2UudW1sMi51bWwuZWRpdCIvPg0KKyAgICA8c3BlY2lhbGl6ZWRUeXBlc0lEPm9yZy5lY2xpcHNlLnBhcHlydXMudW1sLk9iamVjdE5vZGU8L3NwZWNpYWxpemVkVHlwZXNJRD4NCisgICAgPG1hdGNoZXJDb25maWd1cmF0aW9uDQorICAgICAgICB4c2k6dHlwZT0ic3RlcmVvdHlwZWFwcGxpY2F0aW9ubWF0Y2hlcmNvbmZpZ3VyYXRpb246U3RlcmVvdHlwZUFwcGxpY2F0aW9uTWF0Y2hlckNvbmZpZ3VyYXRpb24iDQorICAgICAgICB4bWk6aWQ9Il9rNFNtNDd3RkVlU3dOTEsyVzAySHdBIj4NCisgICAgICA8c3RlcmVvdHlwZXNRdWFsaWZpZWROYW1lcz5TeXNNTDo6QWN0aXZpdGllczo6Tm9CdWZmZXI8L3N0ZXJlb3R5cGVzUXVhbGlmaWVkTmFtZXM+DQorICAgIDwvbWF0Y2hlckNvbmZpZ3VyYXRpb24+DQorICA8L2VsZW1lbnRUeXBlQ29uZmlndXJhdGlvbnM+DQorICA8ZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucw0KKyAgICAgIHhzaTp0eXBlPSJlbGVtZW50dHlwZXNjb25maWd1cmF0aW9uczpTcGVjaWFsaXphdGlvblR5cGVDb25maWd1cmF0aW9uIg0KKyAgICAgIHhtaTppZD0iX2s0U201THdGRWVTd05MSzJXMDJId0EiDQorICAgICAgbmFtZT0iRGlzY3JldGUgQWN0aXZpdHlFZGdlIg0KKyAgICAgIGlkZW50aWZpZXI9Im9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5EaXNjcmV0ZV9BY3Rpdml0eUVkZ2UiDQorICAgICAgaGludD0iVU1MOjpBY3Rpdml0eUVkZ2UiPg0KKyAgICA8aWNvbkVudHJ5DQorICAgICAgICB4bWk6aWQ9Il9rNFNtNWJ3RkVlU3dOTEsyVzAySHdBIg0KKyAgICAgICAgaWNvblBhdGg9Ii9pY29ucy9mdWxsL29iajE2L0FjdGl2aXR5RWRnZS5naWYiDQorICAgICAgICBidW5kbGVJZD0ib3JnLmVjbGlwc2UudW1sMi51bWwuZWRpdCIvPg0KKyAgICA8c3BlY2lhbGl6ZWRUeXBlc0lEPm9yZy5lY2xpcHNlLnBhcHlydXMudW1sLkFjdGl2aXR5RWRnZTwvc3BlY2lhbGl6ZWRUeXBlc0lEPg0KKyAgICA8bWF0Y2hlckNvbmZpZ3VyYXRpb24NCisgICAgICAgIHhzaTp0eXBlPSJzdGVyZW90eXBlYXBwbGljYXRpb25tYXRjaGVyY29uZmlndXJhdGlvbjpTdGVyZW90eXBlQXBwbGljYXRpb25NYXRjaGVyQ29uZmlndXJhdGlvbiINCisgICAgICAgIHhtaTppZD0iX2s0U201cndGRWVTd05MSzJXMDJId0EiPg0KKyAgICAgIDxzdGVyZW90eXBlc1F1YWxpZmllZE5hbWVzPlN5c01MOjpBY3Rpdml0aWVzOjpEaXNjcmV0ZTwvc3RlcmVvdHlwZXNRdWFsaWZpZWROYW1lcz4NCisgICAgPC9tYXRjaGVyQ29uZmlndXJhdGlvbj4NCisgIDwvZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucz4NCisgIDxlbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zDQorICAgICAgeHNpOnR5cGU9ImVsZW1lbnR0eXBlc2NvbmZpZ3VyYXRpb25zOlNwZWNpYWxpemF0aW9uVHlwZUNvbmZpZ3VyYXRpb24iDQorICAgICAgeG1pOmlkPSJfazRTbTU3d0ZFZVN3TkxLMlcwMkh3QSINCisgICAgICBuYW1lPSJEaXNjcmV0ZSBQYXJhbWV0ZXIiDQorICAgICAgaWRlbnRpZmllcj0ib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LkRpc2NyZXRlX1BhcmFtZXRlciINCisgICAgICBoaW50PSJVTUw6OlBhcmFtZXRlciI+DQorICAgIDxpY29uRW50cnkNCisgICAgICAgIHhtaTppZD0iX2s0U202THdGRWVTd05MSzJXMDJId0EiDQorICAgICAgICBpY29uUGF0aD0iL2ljb25zL2Z1bGwvb2JqMTYvUGFyYW1ldGVyLmdpZiINCisgICAgICAgIGJ1bmRsZUlkPSJvcmcuZWNsaXBzZS51bWwyLnVtbC5lZGl0Ii8+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy51bWwuUGFyYW1ldGVyPC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICAgIDxtYXRjaGVyQ29uZmlndXJhdGlvbg0KKyAgICAgICAgeHNpOnR5cGU9InN0ZXJlb3R5cGVhcHBsaWNhdGlvbm1hdGNoZXJjb25maWd1cmF0aW9uOlN0ZXJlb3R5cGVBcHBsaWNhdGlvbk1hdGNoZXJDb25maWd1cmF0aW9uIg0KKyAgICAgICAgeG1pOmlkPSJfazRTbTZid0ZFZVN3TkxLMlcwMkh3QSI+DQorICAgICAgPHN0ZXJlb3R5cGVzUXVhbGlmaWVkTmFtZXM+U3lzTUw6OkFjdGl2aXRpZXM6OkRpc2NyZXRlPC9zdGVyZW90eXBlc1F1YWxpZmllZE5hbWVzPg0KKyAgICA8L21hdGNoZXJDb25maWd1cmF0aW9uPg0KKyAgPC9lbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zPg0KKyAgPGVsZW1lbnRUeXBlQ29uZmlndXJhdGlvbnMNCisgICAgICB4c2k6dHlwZT0iZWxlbWVudHR5cGVzY29uZmlndXJhdGlvbnM6U3BlY2lhbGl6YXRpb25UeXBlQ29uZmlndXJhdGlvbiINCisgICAgICB4bWk6aWQ9Il9rNFNtNnJ3RkVlU3dOTEsyVzAySHdBIg0KKyAgICAgIG5hbWU9IkNvbnRpbnVvdXMgQWN0aXZpdHlFZGdlIg0KKyAgICAgIGlkZW50aWZpZXI9Im9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5Db250aW51b3VzX0FjdGl2aXR5RWRnZSINCisgICAgICBoaW50PSJVTUw6OkFjdGl2aXR5RWRnZSI+DQorICAgIDxpY29uRW50cnkNCisgICAgICAgIHhtaTppZD0iX2s0U202N3dGRWVTd05MSzJXMDJId0EiDQorICAgICAgICBpY29uUGF0aD0iL2ljb25zL2Z1bGwvb2JqMTYvQWN0aXZpdHlFZGdlLmdpZiINCisgICAgICAgIGJ1bmRsZUlkPSJvcmcuZWNsaXBzZS51bWwyLnVtbC5lZGl0Ii8+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy51bWwuQWN0aXZpdHlFZGdlPC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICAgIDxtYXRjaGVyQ29uZmlndXJhdGlvbg0KKyAgICAgICAgeHNpOnR5cGU9InN0ZXJlb3R5cGVhcHBsaWNhdGlvbm1hdGNoZXJjb25maWd1cmF0aW9uOlN0ZXJlb3R5cGVBcHBsaWNhdGlvbk1hdGNoZXJDb25maWd1cmF0aW9uIg0KKyAgICAgICAgeG1pOmlkPSJfazRTbTdMd0ZFZVN3TkxLMlcwMkh3QSI+DQorICAgICAgPHN0ZXJlb3R5cGVzUXVhbGlmaWVkTmFtZXM+U3lzTUw6OkFjdGl2aXRpZXM6OkNvbnRpbnVvdXM8L3N0ZXJlb3R5cGVzUXVhbGlmaWVkTmFtZXM+DQorICAgIDwvbWF0Y2hlckNvbmZpZ3VyYXRpb24+DQorICA8L2VsZW1lbnRUeXBlQ29uZmlndXJhdGlvbnM+DQorICA8ZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucw0KKyAgICAgIHhzaTp0eXBlPSJlbGVtZW50dHlwZXNjb25maWd1cmF0aW9uczpTcGVjaWFsaXphdGlvblR5cGVDb25maWd1cmF0aW9uIg0KKyAgICAgIHhtaTppZD0iX2s0U203YndGRWVTd05MSzJXMDJId0EiDQorICAgICAgbmFtZT0iQ29udGludW91cyBQYXJhbWV0ZXIiDQorICAgICAgaWRlbnRpZmllcj0ib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LkNvbnRpbnVvdXNfUGFyYW1ldGVyIg0KKyAgICAgIGhpbnQ9IlVNTDo6UGFyYW1ldGVyIj4NCisgICAgPGljb25FbnRyeQ0KKyAgICAgICAgeG1pOmlkPSJfazRTbTdyd0ZFZVN3TkxLMlcwMkh3QSINCisgICAgICAgIGljb25QYXRoPSIvaWNvbnMvZnVsbC9vYmoxNi9QYXJhbWV0ZXIuZ2lmIg0KKyAgICAgICAgYnVuZGxlSWQ9Im9yZy5lY2xpcHNlLnVtbDIudW1sLmVkaXQiLz4NCisgICAgPHNwZWNpYWxpemVkVHlwZXNJRD5vcmcuZWNsaXBzZS5wYXB5cnVzLnVtbC5QYXJhbWV0ZXI8L3NwZWNpYWxpemVkVHlwZXNJRD4NCisgICAgPG1hdGNoZXJDb25maWd1cmF0aW9uDQorICAgICAgICB4c2k6dHlwZT0ic3RlcmVvdHlwZWFwcGxpY2F0aW9ubWF0Y2hlcmNvbmZpZ3VyYXRpb246U3RlcmVvdHlwZUFwcGxpY2F0aW9uTWF0Y2hlckNvbmZpZ3VyYXRpb24iDQorICAgICAgICB4bWk6aWQ9Il9rNFNtNzd3RkVlU3dOTEsyVzAySHdBIj4NCisgICAgICA8c3RlcmVvdHlwZXNRdWFsaWZpZWROYW1lcz5TeXNNTDo6QWN0aXZpdGllczo6Q29udGludW91czwvc3RlcmVvdHlwZXNRdWFsaWZpZWROYW1lcz4NCisgICAgPC9tYXRjaGVyQ29uZmlndXJhdGlvbj4NCisgIDwvZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucz4NCisgIDxlbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zDQorICAgICAgeHNpOnR5cGU9ImVsZW1lbnR0eXBlc2NvbmZpZ3VyYXRpb25zOlNwZWNpYWxpemF0aW9uVHlwZUNvbmZpZ3VyYXRpb24iDQorICAgICAgeG1pOmlkPSJfazRTbThMd0ZFZVN3TkxLMlcwMkh3QSINCisgICAgICBuYW1lPSJQcm9iYWJpbGl0eSBBY3Rpdml0eUVkZ2UiDQorICAgICAgaWRlbnRpZmllcj0ib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LlByb2JhYmlsaXR5X0FjdGl2aXR5RWRnZSINCisgICAgICBoaW50PSJVTUw6OkFjdGl2aXR5RWRnZSI+DQorICAgIDxpY29uRW50cnkNCisgICAgICAgIHhtaTppZD0iX2s0U204YndGRWVTd05MSzJXMDJId0EiDQorICAgICAgICBpY29uUGF0aD0iL2ljb25zL2Z1bGwvb2JqMTYvQWN0aXZpdHlFZGdlLmdpZiINCisgICAgICAgIGJ1bmRsZUlkPSJvcmcuZWNsaXBzZS51bWwyLnVtbC5lZGl0Ii8+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy51bWwuQWN0aXZpdHlFZGdlPC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICAgIDxtYXRjaGVyQ29uZmlndXJhdGlvbg0KKyAgICAgICAgeHNpOnR5cGU9InN0ZXJlb3R5cGVhcHBsaWNhdGlvbm1hdGNoZXJjb25maWd1cmF0aW9uOlN0ZXJlb3R5cGVBcHBsaWNhdGlvbk1hdGNoZXJDb25maWd1cmF0aW9uIg0KKyAgICAgICAgeG1pOmlkPSJfazRTbThyd0ZFZVN3TkxLMlcwMkh3QSI+DQorICAgICAgPHN0ZXJlb3R5cGVzUXVhbGlmaWVkTmFtZXM+U3lzTUw6OkFjdGl2aXRpZXM6OlByb2JhYmlsaXR5PC9zdGVyZW90eXBlc1F1YWxpZmllZE5hbWVzPg0KKyAgICA8L21hdGNoZXJDb25maWd1cmF0aW9uPg0KKyAgPC9lbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zPg0KKyAgPGVsZW1lbnRUeXBlQ29uZmlndXJhdGlvbnMNCisgICAgICB4c2k6dHlwZT0iZWxlbWVudHR5cGVzY29uZmlndXJhdGlvbnM6U3BlY2lhbGl6YXRpb25UeXBlQ29uZmlndXJhdGlvbiINCisgICAgICB4bWk6aWQ9Il9rNFNtODd3RkVlU3dOTEsyVzAySHdBIg0KKyAgICAgIG5hbWU9IlByb2JhYmlsaXR5IFBhcmFtZXRlclNldCINCisgICAgICBpZGVudGlmaWVyPSJvcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuUHJvYmFiaWxpdHlfUGFyYW1ldGVyU2V0Ig0KKyAgICAgIGhpbnQ9IlVNTDo6UGFyYW1ldGVyU2V0Ij4NCisgICAgPGljb25FbnRyeQ0KKyAgICAgICAgeG1pOmlkPSJfazRTbTlMd0ZFZVN3TkxLMlcwMkh3QSINCisgICAgICAgIGljb25QYXRoPSIvaWNvbnMvZnVsbC9vYmoxNi9QYXJhbWV0ZXJTZXQuZ2lmIg0KKyAgICAgICAgYnVuZGxlSWQ9Im9yZy5lY2xpcHNlLnVtbDIudW1sLmVkaXQiLz4NCisgICAgPHNwZWNpYWxpemVkVHlwZXNJRD5vcmcuZWNsaXBzZS5wYXB5cnVzLnVtbC5QYXJhbWV0ZXJTZXQ8L3NwZWNpYWxpemVkVHlwZXNJRD4NCisgICAgPG1hdGNoZXJDb25maWd1cmF0aW9uDQorICAgICAgICB4c2k6dHlwZT0ic3RlcmVvdHlwZWFwcGxpY2F0aW9ubWF0Y2hlcmNvbmZpZ3VyYXRpb246U3RlcmVvdHlwZUFwcGxpY2F0aW9uTWF0Y2hlckNvbmZpZ3VyYXRpb24iDQorICAgICAgICB4bWk6aWQ9Il9rNFNtOWJ3RkVlU3dOTEsyVzAySHdBIj4NCisgICAgICA8c3RlcmVvdHlwZXNRdWFsaWZpZWROYW1lcz5TeXNNTDo6QWN0aXZpdGllczo6UHJvYmFiaWxpdHk8L3N0ZXJlb3R5cGVzUXVhbGlmaWVkTmFtZXM+DQorICAgIDwvbWF0Y2hlckNvbmZpZ3VyYXRpb24+DQorICA8L2VsZW1lbnRUeXBlQ29uZmlndXJhdGlvbnM+DQorICA8ZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucw0KKyAgICAgIHhzaTp0eXBlPSJlbGVtZW50dHlwZXNjb25maWd1cmF0aW9uczpTcGVjaWFsaXphdGlvblR5cGVDb25maWd1cmF0aW9uIg0KKyAgICAgIHhtaTppZD0iX2s0U205cndGRWVTd05MSzJXMDJId0EiDQorICAgICAgbmFtZT0iT3B0aW9uYWwiDQorICAgICAgaWRlbnRpZmllcj0ib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0Lk9wdGlvbmFsIg0KKyAgICAgIGhpbnQ9IlVNTDo6UGFyYW1ldGVyIj4NCisgICAgPGljb25FbnRyeQ0KKyAgICAgICAgeG1pOmlkPSJfazRTbTk3d0ZFZVN3TkxLMlcwMkh3QSINCisgICAgICAgIGljb25QYXRoPSIvaWNvbnMvZnVsbC9vYmoxNi9QYXJhbWV0ZXIuZ2lmIg0KKyAgICAgICAgYnVuZGxlSWQ9Im9yZy5lY2xpcHNlLnVtbDIudW1sLmVkaXQiLz4NCisgICAgPHNwZWNpYWxpemVkVHlwZXNJRD5vcmcuZWNsaXBzZS5wYXB5cnVzLnVtbC5QYXJhbWV0ZXI8L3NwZWNpYWxpemVkVHlwZXNJRD4NCisgICAgPG1hdGNoZXJDb25maWd1cmF0aW9uDQorICAgICAgICB4c2k6dHlwZT0ic3RlcmVvdHlwZWFwcGxpY2F0aW9ubWF0Y2hlcmNvbmZpZ3VyYXRpb246U3RlcmVvdHlwZUFwcGxpY2F0aW9uTWF0Y2hlckNvbmZpZ3VyYXRpb24iDQorICAgICAgICB4bWk6aWQ9Il9rNFNtLUx3RkVlU3dOTEsyVzAySHdBIj4NCisgICAgICA8c3RlcmVvdHlwZXNRdWFsaWZpZWROYW1lcz5TeXNNTDo6QWN0aXZpdGllczo6T3B0aW9uYWw8L3N0ZXJlb3R5cGVzUXVhbGlmaWVkTmFtZXM+DQorICAgIDwvbWF0Y2hlckNvbmZpZ3VyYXRpb24+DQorICA8L2VsZW1lbnRUeXBlQ29uZmlndXJhdGlvbnM+DQorICA8ZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucw0KKyAgICAgIHhzaTp0eXBlPSJlbGVtZW50dHlwZXNjb25maWd1cmF0aW9uczpTcGVjaWFsaXphdGlvblR5cGVDb25maWd1cmF0aW9uIg0KKyAgICAgIHhtaTppZD0iX2s0U20tYndGRWVTd05MSzJXMDJId0EiDQorICAgICAgbmFtZT0iUmF0aW9uYWxlIg0KKyAgICAgIGlkZW50aWZpZXI9Im9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5SYXRpb25hbGUiDQorICAgICAgaGludD0iVU1MOjpDb21tZW50Ij4NCisgICAgPGljb25FbnRyeQ0KKyAgICAgICAgeG1pOmlkPSJfazRTbS1yd0ZFZVN3TkxLMlcwMkh3QSINCisgICAgICAgIGljb25QYXRoPSIvaWNvbnMvZnVsbC9vYmoxNi9Db21tZW50LmdpZiINCisgICAgICAgIGJ1bmRsZUlkPSJvcmcuZWNsaXBzZS51bWwyLnVtbC5lZGl0Ii8+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy51bWwuQ29tbWVudDwvc3BlY2lhbGl6ZWRUeXBlc0lEPg0KKyAgICA8bWF0Y2hlckNvbmZpZ3VyYXRpb24NCisgICAgICAgIHhzaTp0eXBlPSJzdGVyZW90eXBlYXBwbGljYXRpb25tYXRjaGVyY29uZmlndXJhdGlvbjpTdGVyZW90eXBlQXBwbGljYXRpb25NYXRjaGVyQ29uZmlndXJhdGlvbiINCisgICAgICAgIHhtaTppZD0iX2s0U20tN3dGRWVTd05MSzJXMDJId0EiPg0KKyAgICAgIDxzdGVyZW90eXBlc1F1YWxpZmllZE5hbWVzPlN5c01MOjpNb2RlbEVsZW1lbnRzOjpSYXRpb25hbGU8L3N0ZXJlb3R5cGVzUXVhbGlmaWVkTmFtZXM+DQorICAgIDwvbWF0Y2hlckNvbmZpZ3VyYXRpb24+DQorICA8L2VsZW1lbnRUeXBlQ29uZmlndXJhdGlvbnM+DQorICA8ZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucw0KKyAgICAgIHhzaTp0eXBlPSJlbGVtZW50dHlwZXNjb25maWd1cmF0aW9uczpTcGVjaWFsaXphdGlvblR5cGVDb25maWd1cmF0aW9uIg0KKyAgICAgIHhtaTppZD0iX2s0U21fTHdGRWVTd05MSzJXMDJId0EiDQorICAgICAgbmFtZT0iVmlldyBQYWNrYWdlIg0KKyAgICAgIGlkZW50aWZpZXI9Im9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5WaWV3X1BhY2thZ2UiDQorICAgICAgaGludD0iVU1MOjpQYWNrYWdlIj4NCisgICAgPGljb25FbnRyeQ0KKyAgICAgICAgeG1pOmlkPSJfazRTbV9id0ZFZVN3TkxLMlcwMkh3QSINCisgICAgICAgIGljb25QYXRoPSIvaWNvbnMvZnVsbC9vYmoxNi9QYWNrYWdlLmdpZiINCisgICAgICAgIGJ1bmRsZUlkPSJvcmcuZWNsaXBzZS51bWwyLnVtbC5lZGl0Ii8+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy51bWwuUGFja2FnZTwvc3BlY2lhbGl6ZWRUeXBlc0lEPg0KKyAgICA8bWF0Y2hlckNvbmZpZ3VyYXRpb24NCisgICAgICAgIHhzaTp0eXBlPSJzdGVyZW90eXBlYXBwbGljYXRpb25tYXRjaGVyY29uZmlndXJhdGlvbjpTdGVyZW90eXBlQXBwbGljYXRpb25NYXRjaGVyQ29uZmlndXJhdGlvbiINCisgICAgICAgIHhtaTppZD0iX2s0U21fcndGRWVTd05MSzJXMDJId0EiPg0KKyAgICAgIDxzdGVyZW90eXBlc1F1YWxpZmllZE5hbWVzPlN5c01MOjpNb2RlbEVsZW1lbnRzOjpWaWV3PC9zdGVyZW90eXBlc1F1YWxpZmllZE5hbWVzPg0KKyAgICA8L21hdGNoZXJDb25maWd1cmF0aW9uPg0KKyAgPC9lbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zPg0KKyAgPGVsZW1lbnRUeXBlQ29uZmlndXJhdGlvbnMNCisgICAgICB4c2k6dHlwZT0iZWxlbWVudHR5cGVzY29uZmlndXJhdGlvbnM6U3BlY2lhbGl6YXRpb25UeXBlQ29uZmlndXJhdGlvbiINCisgICAgICB4bWk6aWQ9Il9rNFNtXzd3RkVlU3dOTEsyVzAySHdBIg0KKyAgICAgIG5hbWU9IlZpZXcgQ2xhc3MiDQorICAgICAgaWRlbnRpZmllcj0ib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LlZpZXdfQ2xhc3MiDQorICAgICAgaGludD0iVU1MOjpDbGFzcyI+DQorICAgIDxpY29uRW50cnkNCisgICAgICAgIHhtaTppZD0iX2s0U25BTHdGRWVTd05MSzJXMDJId0EiDQorICAgICAgICBpY29uUGF0aD0iL2ljb25zL2Z1bGwvb2JqMTYvQ2xhc3MuZ2lmIg0KKyAgICAgICAgYnVuZGxlSWQ9Im9yZy5lY2xpcHNlLnVtbDIudW1sLmVkaXQiLz4NCisgICAgPHNwZWNpYWxpemVkVHlwZXNJRD5vcmcuZWNsaXBzZS5wYXB5cnVzLnVtbC5DbGFzczwvc3BlY2lhbGl6ZWRUeXBlc0lEPg0KKyAgICA8bWF0Y2hlckNvbmZpZ3VyYXRpb24NCisgICAgICAgIHhzaTp0eXBlPSJzdGVyZW90eXBlYXBwbGljYXRpb25tYXRjaGVyY29uZmlndXJhdGlvbjpTdGVyZW90eXBlQXBwbGljYXRpb25NYXRjaGVyQ29uZmlndXJhdGlvbiINCisgICAgICAgIHhtaTppZD0iX2s0U25BYndGRWVTd05MSzJXMDJId0EiPg0KKyAgICAgIDxzdGVyZW90eXBlc1F1YWxpZmllZE5hbWVzPlN5c01MOjpNb2RlbEVsZW1lbnRzOjpWaWV3PC9zdGVyZW90eXBlc1F1YWxpZmllZE5hbWVzPg0KKyAgICA8L21hdGNoZXJDb25maWd1cmF0aW9uPg0KKyAgPC9lbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zPg0KKyAgPGVsZW1lbnRUeXBlQ29uZmlndXJhdGlvbnMNCisgICAgICB4c2k6dHlwZT0iZWxlbWVudHR5cGVzY29uZmlndXJhdGlvbnM6U3BlY2lhbGl6YXRpb25UeXBlQ29uZmlndXJhdGlvbiINCisgICAgICB4bWk6aWQ9Il9rNFNuQXJ3RkVlU3dOTEsyVzAySHdBIg0KKyAgICAgIG5hbWU9IkNvbmZvcm0gRGVwZW5kZW5jeSINCisgICAgICBpZGVudGlmaWVyPSJvcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuQ29uZm9ybV9EZXBlbmRlbmN5Ig0KKyAgICAgIGhpbnQ9IlVNTDo6RGVwZW5kZW5jeSI+DQorICAgIDxpY29uRW50cnkNCisgICAgICAgIHhtaTppZD0iX2s0U25BN3dGRWVTd05MSzJXMDJId0EiDQorICAgICAgICBpY29uUGF0aD0iL2ljb25zL2Z1bGwvb2JqMTYvRGVwZW5kZW5jeS5naWYiDQorICAgICAgICBidW5kbGVJZD0ib3JnLmVjbGlwc2UudW1sMi51bWwuZWRpdCIvPg0KKyAgICA8c3BlY2lhbGl6ZWRUeXBlc0lEPm9yZy5lY2xpcHNlLnBhcHlydXMudW1sLkRlcGVuZGVuY3k8L3NwZWNpYWxpemVkVHlwZXNJRD4NCisgICAgPG1hdGNoZXJDb25maWd1cmF0aW9uDQorICAgICAgICB4c2k6dHlwZT0ic3RlcmVvdHlwZWFwcGxpY2F0aW9ubWF0Y2hlcmNvbmZpZ3VyYXRpb246U3RlcmVvdHlwZUFwcGxpY2F0aW9uTWF0Y2hlckNvbmZpZ3VyYXRpb24iDQorICAgICAgICB4bWk6aWQ9Il9rNFNuQkx3RkVlU3dOTEsyVzAySHdBIj4NCisgICAgICA8c3RlcmVvdHlwZXNRdWFsaWZpZWROYW1lcz5TeXNNTDo6TW9kZWxFbGVtZW50czo6Q29uZm9ybTwvc3RlcmVvdHlwZXNRdWFsaWZpZWROYW1lcz4NCisgICAgPC9tYXRjaGVyQ29uZmlndXJhdGlvbj4NCisgIDwvZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucz4NCisgIDxlbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zDQorICAgICAgeHNpOnR5cGU9ImVsZW1lbnR0eXBlc2NvbmZpZ3VyYXRpb25zOlNwZWNpYWxpemF0aW9uVHlwZUNvbmZpZ3VyYXRpb24iDQorICAgICAgeG1pOmlkPSJfazRTbkJid0ZFZVN3TkxLMlcwMkh3QSINCisgICAgICBuYW1lPSJDb25mb3JtIEdlbmVyYWxpemF0aW9uIg0KKyAgICAgIGlkZW50aWZpZXI9Im9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5Db25mb3JtX0dlbmVyYWxpemF0aW9uIg0KKyAgICAgIGhpbnQ9IlVNTDo6R2VuZXJhbGl6YXRpb24iPg0KKyAgICA8aWNvbkVudHJ5DQorICAgICAgICB4bWk6aWQ9Il9rNFNuQnJ3RkVlU3dOTEsyVzAySHdBIg0KKyAgICAgICAgaWNvblBhdGg9Ii9pY29ucy9mdWxsL29iajE2L0dlbmVyYWxpemF0aW9uLmdpZiINCisgICAgICAgIGJ1bmRsZUlkPSJvcmcuZWNsaXBzZS51bWwyLnVtbC5lZGl0Ii8+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy51bWwuR2VuZXJhbGl6YXRpb248L3NwZWNpYWxpemVkVHlwZXNJRD4NCisgICAgPG1hdGNoZXJDb25maWd1cmF0aW9uDQorICAgICAgICB4c2k6dHlwZT0ic3RlcmVvdHlwZWFwcGxpY2F0aW9ubWF0Y2hlcmNvbmZpZ3VyYXRpb246U3RlcmVvdHlwZUFwcGxpY2F0aW9uTWF0Y2hlckNvbmZpZ3VyYXRpb24iDQorICAgICAgICB4bWk6aWQ9Il9rNFNuQjd3RkVlU3dOTEsyVzAySHdBIj4NCisgICAgICA8c3RlcmVvdHlwZXNRdWFsaWZpZWROYW1lcz5TeXNNTDo6TW9kZWxFbGVtZW50czo6Q29uZm9ybTwvc3RlcmVvdHlwZXNRdWFsaWZpZWROYW1lcz4NCisgICAgPC9tYXRjaGVyQ29uZmlndXJhdGlvbj4NCisgIDwvZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucz4NCisgIDxlbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zDQorICAgICAgeHNpOnR5cGU9ImVsZW1lbnR0eXBlc2NvbmZpZ3VyYXRpb25zOlNwZWNpYWxpemF0aW9uVHlwZUNvbmZpZ3VyYXRpb24iDQorICAgICAgeG1pOmlkPSJfazRTbkNMd0ZFZVN3TkxLMlcwMkh3QSINCisgICAgICBuYW1lPSJQcm9ibGVtIg0KKyAgICAgIGlkZW50aWZpZXI9Im9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5Qcm9ibGVtIg0KKyAgICAgIGhpbnQ9IlVNTDo6Q29tbWVudCI+DQorICAgIDxpY29uRW50cnkNCisgICAgICAgIHhtaTppZD0iX2s0U25DYndGRWVTd05MSzJXMDJId0EiDQorICAgICAgICBpY29uUGF0aD0iL2ljb25zL2Z1bGwvb2JqMTYvQ29tbWVudC5naWYiDQorICAgICAgICBidW5kbGVJZD0ib3JnLmVjbGlwc2UudW1sMi51bWwuZWRpdCIvPg0KKyAgICA8c3BlY2lhbGl6ZWRUeXBlc0lEPm9yZy5lY2xpcHNlLnBhcHlydXMudW1sLkNvbW1lbnQ8L3NwZWNpYWxpemVkVHlwZXNJRD4NCisgICAgPG1hdGNoZXJDb25maWd1cmF0aW9uDQorICAgICAgICB4c2k6dHlwZT0ic3RlcmVvdHlwZWFwcGxpY2F0aW9ubWF0Y2hlcmNvbmZpZ3VyYXRpb246U3RlcmVvdHlwZUFwcGxpY2F0aW9uTWF0Y2hlckNvbmZpZ3VyYXRpb24iDQorICAgICAgICB4bWk6aWQ9Il9rNFNuQ3J3RkVlU3dOTEsyVzAySHdBIj4NCisgICAgICA8c3RlcmVvdHlwZXNRdWFsaWZpZWROYW1lcz5TeXNNTDo6TW9kZWxFbGVtZW50czo6UHJvYmxlbTwvc3RlcmVvdHlwZXNRdWFsaWZpZWROYW1lcz4NCisgICAgPC9tYXRjaGVyQ29uZmlndXJhdGlvbj4NCisgIDwvZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucz4NCisgIDxlbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zDQorICAgICAgeHNpOnR5cGU9ImVsZW1lbnR0eXBlc2NvbmZpZ3VyYXRpb25zOlNwZWNpYWxpemF0aW9uVHlwZUNvbmZpZ3VyYXRpb24iDQorICAgICAgeG1pOmlkPSJfazRTbkM3d0ZFZVN3TkxLMlcwMkh3QSINCisgICAgICBuYW1lPSJWaWV3UG9pbnQiDQorICAgICAgaWRlbnRpZmllcj0ib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LlZpZXdQb2ludCINCisgICAgICBoaW50PSJVTUw6OkNsYXNzIj4NCisgICAgPGljb25FbnRyeQ0KKyAgICAgICAgeG1pOmlkPSJfazRTbkRMd0ZFZVN3TkxLMlcwMkh3QSINCisgICAgICAgIGljb25QYXRoPSIvaWNvbnMvZnVsbC9vYmoxNi9DbGFzcy5naWYiDQorICAgICAgICBidW5kbGVJZD0ib3JnLmVjbGlwc2UudW1sMi51bWwuZWRpdCIvPg0KKyAgICA8c3BlY2lhbGl6ZWRUeXBlc0lEPm9yZy5lY2xpcHNlLnBhcHlydXMudW1sLkNsYXNzPC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICAgIDxtYXRjaGVyQ29uZmlndXJhdGlvbg0KKyAgICAgICAgeHNpOnR5cGU9InN0ZXJlb3R5cGVhcHBsaWNhdGlvbm1hdGNoZXJjb25maWd1cmF0aW9uOlN0ZXJlb3R5cGVBcHBsaWNhdGlvbk1hdGNoZXJDb25maWd1cmF0aW9uIg0KKyAgICAgICAgeG1pOmlkPSJfazRTbkRid0ZFZVN3TkxLMlcwMkh3QSI+DQorICAgICAgPHN0ZXJlb3R5cGVzUXVhbGlmaWVkTmFtZXM+U3lzTUw6Ok1vZGVsRWxlbWVudHM6OlZpZXdQb2ludDwvc3RlcmVvdHlwZXNRdWFsaWZpZWROYW1lcz4NCisgICAgPC9tYXRjaGVyQ29uZmlndXJhdGlvbj4NCisgIDwvZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucz4NCisgIDxlbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zDQorICAgICAgeHNpOnR5cGU9ImVsZW1lbnR0eXBlc2NvbmZpZ3VyYXRpb25zOlNwZWNpYWxpemF0aW9uVHlwZUNvbmZpZ3VyYXRpb24iDQorICAgICAgeG1pOmlkPSJfazRTbkRyd0ZFZVN3TkxLMlcwMkh3QSINCisgICAgICBuYW1lPSJTdGFrZWhvbGRlciINCisgICAgICBpZGVudGlmaWVyPSJvcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuU3Rha2Vob2xkZXIiDQorICAgICAgaGludD0iVU1MOjpDbGFzc2lmaWVyIj4NCisgICAgPGljb25FbnRyeQ0KKyAgICAgICAgeG1pOmlkPSJfazRTbkQ3d0ZFZVN3TkxLMlcwMkh3QSINCisgICAgICAgIGljb25QYXRoPSIvaWNvbnMvQ2xhc3NpZmllci5naWYiDQorICAgICAgICBidW5kbGVJZD0ib3JnLmVjbGlwc2UucGFweXJ1cy51bWwuc2VydmljZS50eXBlcyIvPg0KKyAgICA8c3BlY2lhbGl6ZWRUeXBlc0lEPm9yZy5lY2xpcHNlLnBhcHlydXMudW1sLkNsYXNzaWZpZXI8L3NwZWNpYWxpemVkVHlwZXNJRD4NCisgICAgPG1hdGNoZXJDb25maWd1cmF0aW9uDQorICAgICAgICB4c2k6dHlwZT0ic3RlcmVvdHlwZWFwcGxpY2F0aW9ubWF0Y2hlcmNvbmZpZ3VyYXRpb246U3RlcmVvdHlwZUFwcGxpY2F0aW9uTWF0Y2hlckNvbmZpZ3VyYXRpb24iDQorICAgICAgICB4bWk6aWQ9Il9rNFNuRUx3RkVlU3dOTEsyVzAySHdBIj4NCisgICAgICA8c3RlcmVvdHlwZXNRdWFsaWZpZWROYW1lcz5TeXNNTDo6TW9kZWxFbGVtZW50czo6U3Rha2Vob2xkZXI8L3N0ZXJlb3R5cGVzUXVhbGlmaWVkTmFtZXM+DQorICAgIDwvbWF0Y2hlckNvbmZpZ3VyYXRpb24+DQorICA8L2VsZW1lbnRUeXBlQ29uZmlndXJhdGlvbnM+DQorICA8ZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucw0KKyAgICAgIHhzaTp0eXBlPSJlbGVtZW50dHlwZXNjb25maWd1cmF0aW9uczpTcGVjaWFsaXphdGlvblR5cGVDb25maWd1cmF0aW9uIg0KKyAgICAgIHhtaTppZD0iX2s0U25FYndGRWVTd05MSzJXMDJId0EiDQorICAgICAgbmFtZT0iRXhwb3NlIg0KKyAgICAgIGlkZW50aWZpZXI9Im9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5FeHBvc2UiDQorICAgICAgaGludD0iVU1MOjpEZXBlbmRlbmN5Ij4NCisgICAgPGljb25FbnRyeQ0KKyAgICAgICAgeG1pOmlkPSJfazRTbkVyd0ZFZVN3TkxLMlcwMkh3QSINCisgICAgICAgIGljb25QYXRoPSIvaWNvbnMvZnVsbC9vYmoxNi9EZXBlbmRlbmN5LmdpZiINCisgICAgICAgIGJ1bmRsZUlkPSJvcmcuZWNsaXBzZS51bWwyLnVtbC5lZGl0Ii8+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy51bWwuRGVwZW5kZW5jeTwvc3BlY2lhbGl6ZWRUeXBlc0lEPg0KKyAgICA8bWF0Y2hlckNvbmZpZ3VyYXRpb24NCisgICAgICAgIHhzaTp0eXBlPSJzdGVyZW90eXBlYXBwbGljYXRpb25tYXRjaGVyY29uZmlndXJhdGlvbjpTdGVyZW90eXBlQXBwbGljYXRpb25NYXRjaGVyQ29uZmlndXJhdGlvbiINCisgICAgICAgIHhtaTppZD0iX2s0U25FN3dGRWVTd05MSzJXMDJId0EiPg0KKyAgICAgIDxzdGVyZW90eXBlc1F1YWxpZmllZE5hbWVzPlN5c01MOjpNb2RlbEVsZW1lbnRzOjpFeHBvc2U8L3N0ZXJlb3R5cGVzUXVhbGlmaWVkTmFtZXM+DQorICAgIDwvbWF0Y2hlckNvbmZpZ3VyYXRpb24+DQorICA8L2VsZW1lbnRUeXBlQ29uZmlndXJhdGlvbnM+DQorICA8ZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucw0KKyAgICAgIHhzaTp0eXBlPSJlbGVtZW50dHlwZXNjb25maWd1cmF0aW9uczpTcGVjaWFsaXphdGlvblR5cGVDb25maWd1cmF0aW9uIg0KKyAgICAgIHhtaTppZD0iX2s0U25GTHdGRWVTd05MSzJXMDJId0EiDQorICAgICAgbmFtZT0iRWxlbWVudEdyb3VwIg0KKyAgICAgIGlkZW50aWZpZXI9Im9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5FbGVtZW50R3JvdXAiDQorICAgICAgaGludD0iVU1MOjpDb21tZW50Ij4NCisgICAgPGljb25FbnRyeQ0KKyAgICAgICAgeG1pOmlkPSJfazRTbkZid0ZFZVN3TkxLMlcwMkh3QSINCisgICAgICAgIGljb25QYXRoPSIvaWNvbnMvZnVsbC9vYmoxNi9Db21tZW50LmdpZiINCisgICAgICAgIGJ1bmRsZUlkPSJvcmcuZWNsaXBzZS51bWwyLnVtbC5lZGl0Ii8+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy51bWwuQ29tbWVudDwvc3BlY2lhbGl6ZWRUeXBlc0lEPg0KKyAgICA8bWF0Y2hlckNvbmZpZ3VyYXRpb24NCisgICAgICAgIHhzaTp0eXBlPSJzdGVyZW90eXBlYXBwbGljYXRpb25tYXRjaGVyY29uZmlndXJhdGlvbjpTdGVyZW90eXBlQXBwbGljYXRpb25NYXRjaGVyQ29uZmlndXJhdGlvbiINCisgICAgICAgIHhtaTppZD0iX2s0U25GcndGRWVTd05MSzJXMDJId0EiPg0KKyAgICAgIDxzdGVyZW90eXBlc1F1YWxpZmllZE5hbWVzPlN5c01MOjpNb2RlbEVsZW1lbnRzOjpFbGVtZW50R3JvdXA8L3N0ZXJlb3R5cGVzUXVhbGlmaWVkTmFtZXM+DQorICAgIDwvbWF0Y2hlckNvbmZpZ3VyYXRpb24+DQorICA8L2VsZW1lbnRUeXBlQ29uZmlndXJhdGlvbnM+DQorICA8ZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucw0KKyAgICAgIHhzaTp0eXBlPSJlbGVtZW50dHlwZXNjb25maWd1cmF0aW9uczpTcGVjaWFsaXphdGlvblR5cGVDb25maWd1cmF0aW9uIg0KKyAgICAgIHhtaTppZD0iX2s0U25GN3dGRWVTd05MSzJXMDJId0EiDQorICAgICAgbmFtZT0iQ29uc3RyYWludEJsb2NrIg0KKyAgICAgIGlkZW50aWZpZXI9Im9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5Db25zdHJhaW50QmxvY2siDQorICAgICAgaGludD0iVU1MOjpDbGFzcyI+DQorICAgIDxpY29uRW50cnkNCisgICAgICAgIHhtaTppZD0iX2s0U25HTHdGRWVTd05MSzJXMDJId0EiDQorICAgICAgICBpY29uUGF0aD0iL2ljb25zL2Z1bGwvb2JqMTYvQ2xhc3MuZ2lmIg0KKyAgICAgICAgYnVuZGxlSWQ9Im9yZy5lY2xpcHNlLnVtbDIudW1sLmVkaXQiLz4NCisgICAgPHNwZWNpYWxpemVkVHlwZXNJRD5vcmcuZWNsaXBzZS5wYXB5cnVzLnVtbC5DbGFzczwvc3BlY2lhbGl6ZWRUeXBlc0lEPg0KKyAgICA8bWF0Y2hlckNvbmZpZ3VyYXRpb24NCisgICAgICAgIHhzaTp0eXBlPSJzdGVyZW90eXBlYXBwbGljYXRpb25tYXRjaGVyY29uZmlndXJhdGlvbjpTdGVyZW90eXBlQXBwbGljYXRpb25NYXRjaGVyQ29uZmlndXJhdGlvbiINCisgICAgICAgIHhtaTppZD0iX2s0U25HYndGRWVTd05MSzJXMDJId0EiPg0KKyAgICAgIDxzdGVyZW90eXBlc1F1YWxpZmllZE5hbWVzPlN5c01MOjpDb25zdHJhaW50QmxvY2tzOjpDb25zdHJhaW50QmxvY2s8L3N0ZXJlb3R5cGVzUXVhbGlmaWVkTmFtZXM+DQorICAgIDwvbWF0Y2hlckNvbmZpZ3VyYXRpb24+DQorICA8L2VsZW1lbnRUeXBlQ29uZmlndXJhdGlvbnM+DQorICA8ZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucw0KKyAgICAgIHhzaTp0eXBlPSJlbGVtZW50dHlwZXNjb25maWd1cmF0aW9uczpTcGVjaWFsaXphdGlvblR5cGVDb25maWd1cmF0aW9uIg0KKyAgICAgIHhtaTppZD0iX2s0U25HcndGRWVTd05MSzJXMDJId0EiDQorICAgICAgbmFtZT0iQWxsb2NhdGVBY3Rpdml0eVBhcnRpdGlvbiINCisgICAgICBpZGVudGlmaWVyPSJvcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuQWxsb2NhdGVBY3Rpdml0eVBhcnRpdGlvbiINCisgICAgICBoaW50PSJVTUw6OkFjdGl2aXR5UGFydGl0aW9uIj4NCisgICAgPGljb25FbnRyeQ0KKyAgICAgICAgeG1pOmlkPSJfazRTbkc3d0ZFZVN3TkxLMlcwMkh3QSINCisgICAgICAgIGljb25QYXRoPSIvaWNvbnMvZnVsbC9vYmoxNi9BY3Rpdml0eVBhcnRpdGlvbi5naWYiDQorICAgICAgICBidW5kbGVJZD0ib3JnLmVjbGlwc2UudW1sMi51bWwuZWRpdCIvPg0KKyAgICA8c3BlY2lhbGl6ZWRUeXBlc0lEPm9yZy5lY2xpcHNlLnBhcHlydXMudW1sLkFjdGl2aXR5UGFydGl0aW9uPC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICAgIDxtYXRjaGVyQ29uZmlndXJhdGlvbg0KKyAgICAgICAgeHNpOnR5cGU9InN0ZXJlb3R5cGVhcHBsaWNhdGlvbm1hdGNoZXJjb25maWd1cmF0aW9uOlN0ZXJlb3R5cGVBcHBsaWNhdGlvbk1hdGNoZXJDb25maWd1cmF0aW9uIg0KKyAgICAgICAgeG1pOmlkPSJfazRTbkhMd0ZFZVN3TkxLMlcwMkh3QSI+DQorICAgICAgPHN0ZXJlb3R5cGVzUXVhbGlmaWVkTmFtZXM+U3lzTUw6OkFsbG9jYXRpb25zOjpBbGxvY2F0ZUFjdGl2aXR5UGFydGl0aW9uPC9zdGVyZW90eXBlc1F1YWxpZmllZE5hbWVzPg0KKyAgICA8L21hdGNoZXJDb25maWd1cmF0aW9uPg0KKyAgPC9lbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zPg0KKyAgPGVsZW1lbnRUeXBlQ29uZmlndXJhdGlvbnMNCisgICAgICB4c2k6dHlwZT0iZWxlbWVudHR5cGVzY29uZmlndXJhdGlvbnM6U3BlY2lhbGl6YXRpb25UeXBlQ29uZmlndXJhdGlvbiINCisgICAgICB4bWk6aWQ9Il9rNFNuSGJ3RkVlU3dOTEsyVzAySHdBIg0KKyAgICAgIG5hbWU9IkFsbG9jYXRlIEFic3RyYWN0aW9uIg0KKyAgICAgIGlkZW50aWZpZXI9Im9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5BbGxvY2F0ZV9BYnN0cmFjdGlvbiINCisgICAgICBoaW50PSJVTUw6OkFic3RyYWN0aW9uIj4NCisgICAgPGljb25FbnRyeQ0KKyAgICAgICAgeG1pOmlkPSJfazRTbkhyd0ZFZVN3TkxLMlcwMkh3QSINCisgICAgICAgIGljb25QYXRoPSIvaWNvbnMvZnVsbC9vYmoxNi9BYnN0cmFjdGlvbi5naWYiDQorICAgICAgICBidW5kbGVJZD0ib3JnLmVjbGlwc2UudW1sMi51bWwuZWRpdCIvPg0KKyAgICA8c3BlY2lhbGl6ZWRUeXBlc0lEPm9yZy5lY2xpcHNlLnBhcHlydXMudW1sLkFic3RyYWN0aW9uPC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICAgIDxtYXRjaGVyQ29uZmlndXJhdGlvbg0KKyAgICAgICAgeHNpOnR5cGU9InN0ZXJlb3R5cGVhcHBsaWNhdGlvbm1hdGNoZXJjb25maWd1cmF0aW9uOlN0ZXJlb3R5cGVBcHBsaWNhdGlvbk1hdGNoZXJDb25maWd1cmF0aW9uIg0KKyAgICAgICAgeG1pOmlkPSJfazRTbkg3d0ZFZVN3TkxLMlcwMkh3QSI+DQorICAgICAgPHN0ZXJlb3R5cGVzUXVhbGlmaWVkTmFtZXM+U3lzTUw6OkFsbG9jYXRpb25zOjpBbGxvY2F0ZTwvc3RlcmVvdHlwZXNRdWFsaWZpZWROYW1lcz4NCisgICAgPC9tYXRjaGVyQ29uZmlndXJhdGlvbj4NCisgIDwvZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucz4NCisgIDxlbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zDQorICAgICAgeHNpOnR5cGU9ImVsZW1lbnR0eXBlc2NvbmZpZ3VyYXRpb25zOlNwZWNpYWxpemF0aW9uVHlwZUNvbmZpZ3VyYXRpb24iDQorICAgICAgeG1pOmlkPSJfazRTbklMd0ZFZVN3TkxLMlcwMkh3QSINCisgICAgICBuYW1lPSJBbGxvY2F0ZSBEaXJlY3RlZFJlbGF0aW9uc2hpcCINCisgICAgICBpZGVudGlmaWVyPSJvcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuQWxsb2NhdGVfRGlyZWN0ZWRSZWxhdGlvbnNoaXAiDQorICAgICAgaGludD0iVU1MOjpEaXJlY3RlZFJlbGF0aW9uc2hpcCI+DQorICAgIDxpY29uRW50cnkNCisgICAgICAgIHhtaTppZD0iX2s0U25JYndGRWVTd05MSzJXMDJId0EiDQorICAgICAgICBpY29uUGF0aD0iL2ljb25zL2Z1bGwvb2JqMTYvRGlyZWN0ZWRSZWxhdGlvbnNoaXAuZ2lmIg0KKyAgICAgICAgYnVuZGxlSWQ9Im9yZy5lY2xpcHNlLnVtbDIudW1sLmVkaXQiLz4NCisgICAgPHNwZWNpYWxpemVkVHlwZXNJRD5vcmcuZWNsaXBzZS5wYXB5cnVzLnVtbC5EaXJlY3RlZFJlbGF0aW9uc2hpcDwvc3BlY2lhbGl6ZWRUeXBlc0lEPg0KKyAgICA8bWF0Y2hlckNvbmZpZ3VyYXRpb24NCisgICAgICAgIHhzaTp0eXBlPSJzdGVyZW90eXBlYXBwbGljYXRpb25tYXRjaGVyY29uZmlndXJhdGlvbjpTdGVyZW90eXBlQXBwbGljYXRpb25NYXRjaGVyQ29uZmlndXJhdGlvbiINCisgICAgICAgIHhtaTppZD0iX2s0U25JcndGRWVTd05MSzJXMDJId0EiPg0KKyAgICAgIDxzdGVyZW90eXBlc1F1YWxpZmllZE5hbWVzPlN5c01MOjpBbGxvY2F0aW9uczo6QWxsb2NhdGU8L3N0ZXJlb3R5cGVzUXVhbGlmaWVkTmFtZXM+DQorICAgIDwvbWF0Y2hlckNvbmZpZ3VyYXRpb24+DQorICA8L2VsZW1lbnRUeXBlQ29uZmlndXJhdGlvbnM+DQorICA8ZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucw0KKyAgICAgIHhzaTp0eXBlPSJlbGVtZW50dHlwZXNjb25maWd1cmF0aW9uczpTcGVjaWFsaXphdGlvblR5cGVDb25maWd1cmF0aW9uIg0KKyAgICAgIHhtaTppZD0iX2s0U25JN3dGRWVTd05MSzJXMDJId0EiDQorICAgICAgbmFtZT0iRGVyaXZlUmVxdCBBYnN0cmFjdGlvbiINCisgICAgICBpZGVudGlmaWVyPSJvcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuRGVyaXZlUmVxdF9BYnN0cmFjdGlvbiINCisgICAgICBoaW50PSJVTUw6OkFic3RyYWN0aW9uIj4NCisgICAgPGljb25FbnRyeQ0KKyAgICAgICAgeG1pOmlkPSJfazRTbkpMd0ZFZVN3TkxLMlcwMkh3QSINCisgICAgICAgIGljb25QYXRoPSIvaWNvbnMvZnVsbC9vYmoxNi9BYnN0cmFjdGlvbi5naWYiDQorICAgICAgICBidW5kbGVJZD0ib3JnLmVjbGlwc2UudW1sMi51bWwuZWRpdCIvPg0KKyAgICA8c3BlY2lhbGl6ZWRUeXBlc0lEPm9yZy5lY2xpcHNlLnBhcHlydXMudW1sLkFic3RyYWN0aW9uPC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICAgIDxtYXRjaGVyQ29uZmlndXJhdGlvbg0KKyAgICAgICAgeHNpOnR5cGU9InN0ZXJlb3R5cGVhcHBsaWNhdGlvbm1hdGNoZXJjb25maWd1cmF0aW9uOlN0ZXJlb3R5cGVBcHBsaWNhdGlvbk1hdGNoZXJDb25maWd1cmF0aW9uIg0KKyAgICAgICAgeG1pOmlkPSJfazRTbkpid0ZFZVN3TkxLMlcwMkh3QSI+DQorICAgICAgPHN0ZXJlb3R5cGVzUXVhbGlmaWVkTmFtZXM+U3lzTUw6OlJlcXVpcmVtZW50czo6RGVyaXZlUmVxdDwvc3RlcmVvdHlwZXNRdWFsaWZpZWROYW1lcz4NCisgICAgPC9tYXRjaGVyQ29uZmlndXJhdGlvbj4NCisgIDwvZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucz4NCisgIDxlbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zDQorICAgICAgeHNpOnR5cGU9ImVsZW1lbnR0eXBlc2NvbmZpZ3VyYXRpb25zOlNwZWNpYWxpemF0aW9uVHlwZUNvbmZpZ3VyYXRpb24iDQorICAgICAgeG1pOmlkPSJfazRTbkpyd0ZFZVN3TkxLMlcwMkh3QSINCisgICAgICBuYW1lPSJEZXJpdmVSZXF0IERpcmVjdGVkUmVsYXRpb25zaGlwIg0KKyAgICAgIGlkZW50aWZpZXI9Im9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5EZXJpdmVSZXF0X0RpcmVjdGVkUmVsYXRpb25zaGlwIg0KKyAgICAgIGhpbnQ9IlVNTDo6RGlyZWN0ZWRSZWxhdGlvbnNoaXAiPg0KKyAgICA8aWNvbkVudHJ5DQorICAgICAgICB4bWk6aWQ9Il9rNFNuSjd3RkVlU3dOTEsyVzAySHdBIg0KKyAgICAgICAgaWNvblBhdGg9Ii9pY29ucy9mdWxsL29iajE2L0RpcmVjdGVkUmVsYXRpb25zaGlwLmdpZiINCisgICAgICAgIGJ1bmRsZUlkPSJvcmcuZWNsaXBzZS51bWwyLnVtbC5lZGl0Ii8+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy51bWwuRGlyZWN0ZWRSZWxhdGlvbnNoaXA8L3NwZWNpYWxpemVkVHlwZXNJRD4NCisgICAgPG1hdGNoZXJDb25maWd1cmF0aW9uDQorICAgICAgICB4c2k6dHlwZT0ic3RlcmVvdHlwZWFwcGxpY2F0aW9ubWF0Y2hlcmNvbmZpZ3VyYXRpb246U3RlcmVvdHlwZUFwcGxpY2F0aW9uTWF0Y2hlckNvbmZpZ3VyYXRpb24iDQorICAgICAgICB4bWk6aWQ9Il9rNFNuS0x3RkVlU3dOTEsyVzAySHdBIj4NCisgICAgICA8c3RlcmVvdHlwZXNRdWFsaWZpZWROYW1lcz5TeXNNTDo6UmVxdWlyZW1lbnRzOjpEZXJpdmVSZXF0PC9zdGVyZW90eXBlc1F1YWxpZmllZE5hbWVzPg0KKyAgICA8L21hdGNoZXJDb25maWd1cmF0aW9uPg0KKyAgPC9lbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zPg0KKyAgPGVsZW1lbnRUeXBlQ29uZmlndXJhdGlvbnMNCisgICAgICB4c2k6dHlwZT0iZWxlbWVudHR5cGVzY29uZmlndXJhdGlvbnM6U3BlY2lhbGl6YXRpb25UeXBlQ29uZmlndXJhdGlvbiINCisgICAgICB4bWk6aWQ9Il9rNFNuS2J3RkVlU3dOTEsyVzAySHdBIg0KKyAgICAgIG5hbWU9IkNvcHkgQWJzdHJhY3Rpb24iDQorICAgICAgaWRlbnRpZmllcj0ib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LkNvcHlfQWJzdHJhY3Rpb24iDQorICAgICAgaGludD0iVU1MOjpBYnN0cmFjdGlvbiI+DQorICAgIDxpY29uRW50cnkNCisgICAgICAgIHhtaTppZD0iX2s0U25LcndGRWVTd05MSzJXMDJId0EiDQorICAgICAgICBpY29uUGF0aD0iL2ljb25zL2Z1bGwvb2JqMTYvQWJzdHJhY3Rpb24uZ2lmIg0KKyAgICAgICAgYnVuZGxlSWQ9Im9yZy5lY2xpcHNlLnVtbDIudW1sLmVkaXQiLz4NCisgICAgPHNwZWNpYWxpemVkVHlwZXNJRD5vcmcuZWNsaXBzZS5wYXB5cnVzLnVtbC5BYnN0cmFjdGlvbjwvc3BlY2lhbGl6ZWRUeXBlc0lEPg0KKyAgICA8bWF0Y2hlckNvbmZpZ3VyYXRpb24NCisgICAgICAgIHhzaTp0eXBlPSJzdGVyZW90eXBlYXBwbGljYXRpb25tYXRjaGVyY29uZmlndXJhdGlvbjpTdGVyZW90eXBlQXBwbGljYXRpb25NYXRjaGVyQ29uZmlndXJhdGlvbiINCisgICAgICAgIHhtaTppZD0iX2s0U25LN3dGRWVTd05MSzJXMDJId0EiPg0KKyAgICAgIDxzdGVyZW90eXBlc1F1YWxpZmllZE5hbWVzPlN5c01MOjpSZXF1aXJlbWVudHM6OkNvcHk8L3N0ZXJlb3R5cGVzUXVhbGlmaWVkTmFtZXM+DQorICAgIDwvbWF0Y2hlckNvbmZpZ3VyYXRpb24+DQorICA8L2VsZW1lbnRUeXBlQ29uZmlndXJhdGlvbnM+DQorICA8ZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucw0KKyAgICAgIHhzaTp0eXBlPSJlbGVtZW50dHlwZXNjb25maWd1cmF0aW9uczpTcGVjaWFsaXphdGlvblR5cGVDb25maWd1cmF0aW9uIg0KKyAgICAgIHhtaTppZD0iX2s0U25MTHdGRWVTd05MSzJXMDJId0EiDQorICAgICAgbmFtZT0iQ29weSBEaXJlY3RlZFJlbGF0aW9uc2hpcCINCisgICAgICBpZGVudGlmaWVyPSJvcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuQ29weV9EaXJlY3RlZFJlbGF0aW9uc2hpcCINCisgICAgICBoaW50PSJVTUw6OkRpcmVjdGVkUmVsYXRpb25zaGlwIj4NCisgICAgPGljb25FbnRyeQ0KKyAgICAgICAgeG1pOmlkPSJfazRTbkxid0ZFZVN3TkxLMlcwMkh3QSINCisgICAgICAgIGljb25QYXRoPSIvaWNvbnMvZnVsbC9vYmoxNi9EaXJlY3RlZFJlbGF0aW9uc2hpcC5naWYiDQorICAgICAgICBidW5kbGVJZD0ib3JnLmVjbGlwc2UudW1sMi51bWwuZWRpdCIvPg0KKyAgICA8c3BlY2lhbGl6ZWRUeXBlc0lEPm9yZy5lY2xpcHNlLnBhcHlydXMudW1sLkRpcmVjdGVkUmVsYXRpb25zaGlwPC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICAgIDxtYXRjaGVyQ29uZmlndXJhdGlvbg0KKyAgICAgICAgeHNpOnR5cGU9InN0ZXJlb3R5cGVhcHBsaWNhdGlvbm1hdGNoZXJjb25maWd1cmF0aW9uOlN0ZXJlb3R5cGVBcHBsaWNhdGlvbk1hdGNoZXJDb25maWd1cmF0aW9uIg0KKyAgICAgICAgeG1pOmlkPSJfazRTbkxyd0ZFZVN3TkxLMlcwMkh3QSI+DQorICAgICAgPHN0ZXJlb3R5cGVzUXVhbGlmaWVkTmFtZXM+U3lzTUw6OlJlcXVpcmVtZW50czo6Q29weTwvc3RlcmVvdHlwZXNRdWFsaWZpZWROYW1lcz4NCisgICAgPC9tYXRjaGVyQ29uZmlndXJhdGlvbj4NCisgIDwvZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucz4NCisgIDxlbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zDQorICAgICAgeHNpOnR5cGU9ImVsZW1lbnR0eXBlc2NvbmZpZ3VyYXRpb25zOlNwZWNpYWxpemF0aW9uVHlwZUNvbmZpZ3VyYXRpb24iDQorICAgICAgeG1pOmlkPSJfazRTbkw3d0ZFZVN3TkxLMlcwMkh3QSINCisgICAgICBuYW1lPSJTYXRpc2Z5IEFic3RyYWN0aW9uIg0KKyAgICAgIGlkZW50aWZpZXI9Im9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5TYXRpc2Z5X0Fic3RyYWN0aW9uIg0KKyAgICAgIGhpbnQ9IlVNTDo6QWJzdHJhY3Rpb24iPg0KKyAgICA8aWNvbkVudHJ5DQorICAgICAgICB4bWk6aWQ9Il9rNFNuTUx3RkVlU3dOTEsyVzAySHdBIg0KKyAgICAgICAgaWNvblBhdGg9Ii9pY29ucy9mdWxsL29iajE2L0Fic3RyYWN0aW9uLmdpZiINCisgICAgICAgIGJ1bmRsZUlkPSJvcmcuZWNsaXBzZS51bWwyLnVtbC5lZGl0Ii8+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy51bWwuQWJzdHJhY3Rpb248L3NwZWNpYWxpemVkVHlwZXNJRD4NCisgICAgPG1hdGNoZXJDb25maWd1cmF0aW9uDQorICAgICAgICB4c2k6dHlwZT0ic3RlcmVvdHlwZWFwcGxpY2F0aW9ubWF0Y2hlcmNvbmZpZ3VyYXRpb246U3RlcmVvdHlwZUFwcGxpY2F0aW9uTWF0Y2hlckNvbmZpZ3VyYXRpb24iDQorICAgICAgICB4bWk6aWQ9Il9rNFNuTWJ3RkVlU3dOTEsyVzAySHdBIj4NCisgICAgICA8c3RlcmVvdHlwZXNRdWFsaWZpZWROYW1lcz5TeXNNTDo6UmVxdWlyZW1lbnRzOjpTYXRpc2Z5PC9zdGVyZW90eXBlc1F1YWxpZmllZE5hbWVzPg0KKyAgICA8L21hdGNoZXJDb25maWd1cmF0aW9uPg0KKyAgPC9lbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zPg0KKyAgPGVsZW1lbnRUeXBlQ29uZmlndXJhdGlvbnMNCisgICAgICB4c2k6dHlwZT0iZWxlbWVudHR5cGVzY29uZmlndXJhdGlvbnM6U3BlY2lhbGl6YXRpb25UeXBlQ29uZmlndXJhdGlvbiINCisgICAgICB4bWk6aWQ9Il9rNFNuTXJ3RkVlU3dOTEsyVzAySHdBIg0KKyAgICAgIG5hbWU9IlNhdGlzZnkgRGlyZWN0ZWRSZWxhdGlvbnNoaXAiDQorICAgICAgaWRlbnRpZmllcj0ib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LlNhdGlzZnlfRGlyZWN0ZWRSZWxhdGlvbnNoaXAiDQorICAgICAgaGludD0iVU1MOjpEaXJlY3RlZFJlbGF0aW9uc2hpcCI+DQorICAgIDxpY29uRW50cnkNCisgICAgICAgIHhtaTppZD0iX2s0U25NN3dGRWVTd05MSzJXMDJId0EiDQorICAgICAgICBpY29uUGF0aD0iL2ljb25zL2Z1bGwvb2JqMTYvRGlyZWN0ZWRSZWxhdGlvbnNoaXAuZ2lmIg0KKyAgICAgICAgYnVuZGxlSWQ9Im9yZy5lY2xpcHNlLnVtbDIudW1sLmVkaXQiLz4NCisgICAgPHNwZWNpYWxpemVkVHlwZXNJRD5vcmcuZWNsaXBzZS5wYXB5cnVzLnVtbC5EaXJlY3RlZFJlbGF0aW9uc2hpcDwvc3BlY2lhbGl6ZWRUeXBlc0lEPg0KKyAgICA8bWF0Y2hlckNvbmZpZ3VyYXRpb24NCisgICAgICAgIHhzaTp0eXBlPSJzdGVyZW90eXBlYXBwbGljYXRpb25tYXRjaGVyY29uZmlndXJhdGlvbjpTdGVyZW90eXBlQXBwbGljYXRpb25NYXRjaGVyQ29uZmlndXJhdGlvbiINCisgICAgICAgIHhtaTppZD0iX2s0U25OTHdGRWVTd05MSzJXMDJId0EiPg0KKyAgICAgIDxzdGVyZW90eXBlc1F1YWxpZmllZE5hbWVzPlN5c01MOjpSZXF1aXJlbWVudHM6OlNhdGlzZnk8L3N0ZXJlb3R5cGVzUXVhbGlmaWVkTmFtZXM+DQorICAgIDwvbWF0Y2hlckNvbmZpZ3VyYXRpb24+DQorICA8L2VsZW1lbnRUeXBlQ29uZmlndXJhdGlvbnM+DQorICA8ZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucw0KKyAgICAgIHhzaTp0eXBlPSJlbGVtZW50dHlwZXNjb25maWd1cmF0aW9uczpTcGVjaWFsaXphdGlvblR5cGVDb25maWd1cmF0aW9uIg0KKyAgICAgIHhtaTppZD0iX2s0U25OYndGRWVTd05MSzJXMDJId0EiDQorICAgICAgbmFtZT0iVGVzdENhc2UgT3BlcmF0aW9uIg0KKyAgICAgIGlkZW50aWZpZXI9Im9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5UZXN0Q2FzZV9PcGVyYXRpb24iDQorICAgICAgaGludD0iVU1MOjpPcGVyYXRpb24iPg0KKyAgICA8aWNvbkVudHJ5DQorICAgICAgICB4bWk6aWQ9Il9rNFNuTnJ3RkVlU3dOTEsyVzAySHdBIg0KKyAgICAgICAgaWNvblBhdGg9Ii9pY29ucy9mdWxsL29iajE2L09wZXJhdGlvbi5naWYiDQorICAgICAgICBidW5kbGVJZD0ib3JnLmVjbGlwc2UudW1sMi51bWwuZWRpdCIvPg0KKyAgICA8c3BlY2lhbGl6ZWRUeXBlc0lEPm9yZy5lY2xpcHNlLnBhcHlydXMudW1sLk9wZXJhdGlvbjwvc3BlY2lhbGl6ZWRUeXBlc0lEPg0KKyAgICA8bWF0Y2hlckNvbmZpZ3VyYXRpb24NCisgICAgICAgIHhzaTp0eXBlPSJzdGVyZW90eXBlYXBwbGljYXRpb25tYXRjaGVyY29uZmlndXJhdGlvbjpTdGVyZW90eXBlQXBwbGljYXRpb25NYXRjaGVyQ29uZmlndXJhdGlvbiINCisgICAgICAgIHhtaTppZD0iX2s0U25ON3dGRWVTd05MSzJXMDJId0EiPg0KKyAgICAgIDxzdGVyZW90eXBlc1F1YWxpZmllZE5hbWVzPlN5c01MOjpSZXF1aXJlbWVudHM6OlRlc3RDYXNlPC9zdGVyZW90eXBlc1F1YWxpZmllZE5hbWVzPg0KKyAgICA8L21hdGNoZXJDb25maWd1cmF0aW9uPg0KKyAgPC9lbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zPg0KKyAgPGVsZW1lbnRUeXBlQ29uZmlndXJhdGlvbnMNCisgICAgICB4c2k6dHlwZT0iZWxlbWVudHR5cGVzY29uZmlndXJhdGlvbnM6U3BlY2lhbGl6YXRpb25UeXBlQ29uZmlndXJhdGlvbiINCisgICAgICB4bWk6aWQ9Il9rNFNuT0x3RkVlU3dOTEsyVzAySHdBIg0KKyAgICAgIG5hbWU9IlRlc3RDYXNlIEJlaGF2aW9yIg0KKyAgICAgIGlkZW50aWZpZXI9Im9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5UZXN0Q2FzZV9CZWhhdmlvciINCisgICAgICBoaW50PSJVTUw6OkJlaGF2aW9yIj4NCisgICAgPGljb25FbnRyeQ0KKyAgICAgICAgeG1pOmlkPSJfazRTbk9id0ZFZVN3TkxLMlcwMkh3QSINCisgICAgICAgIGljb25QYXRoPSIvaWNvbnMvZnVsbC9vYmoxNi9CZWhhdmlvci5naWYiDQorICAgICAgICBidW5kbGVJZD0ib3JnLmVjbGlwc2UudW1sMi51bWwuZWRpdCIvPg0KKyAgICA8c3BlY2lhbGl6ZWRUeXBlc0lEPm9yZy5lY2xpcHNlLnBhcHlydXMudW1sLkJlaGF2aW9yPC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICAgIDxtYXRjaGVyQ29uZmlndXJhdGlvbg0KKyAgICAgICAgeHNpOnR5cGU9InN0ZXJlb3R5cGVhcHBsaWNhdGlvbm1hdGNoZXJjb25maWd1cmF0aW9uOlN0ZXJlb3R5cGVBcHBsaWNhdGlvbk1hdGNoZXJDb25maWd1cmF0aW9uIg0KKyAgICAgICAgeG1pOmlkPSJfazRTbk9yd0ZFZVN3TkxLMlcwMkh3QSI+DQorICAgICAgPHN0ZXJlb3R5cGVzUXVhbGlmaWVkTmFtZXM+U3lzTUw6OlJlcXVpcmVtZW50czo6VGVzdENhc2U8L3N0ZXJlb3R5cGVzUXVhbGlmaWVkTmFtZXM+DQorICAgIDwvbWF0Y2hlckNvbmZpZ3VyYXRpb24+DQorICA8L2VsZW1lbnRUeXBlQ29uZmlndXJhdGlvbnM+DQorICA8ZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucw0KKyAgICAgIHhzaTp0eXBlPSJlbGVtZW50dHlwZXNjb25maWd1cmF0aW9uczpTcGVjaWFsaXphdGlvblR5cGVDb25maWd1cmF0aW9uIg0KKyAgICAgIHhtaTppZD0iX2s0U25PN3dGRWVTd05MSzJXMDJId0EiDQorICAgICAgbmFtZT0iUmVxdWlyZW1lbnQiDQorICAgICAgaWRlbnRpZmllcj0ib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LlJlcXVpcmVtZW50Ig0KKyAgICAgIGhpbnQ9IlVNTDo6Q2xhc3MiPg0KKyAgICA8aWNvbkVudHJ5DQorICAgICAgICB4bWk6aWQ9Il9rNFNuUEx3RkVlU3dOTEsyVzAySHdBIg0KKyAgICAgICAgaWNvblBhdGg9Ii9pY29ucy9mdWxsL29iajE2L0NsYXNzLmdpZiINCisgICAgICAgIGJ1bmRsZUlkPSJvcmcuZWNsaXBzZS51bWwyLnVtbC5lZGl0Ii8+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy51bWwuQ2xhc3M8L3NwZWNpYWxpemVkVHlwZXNJRD4NCisgICAgPG1hdGNoZXJDb25maWd1cmF0aW9uDQorICAgICAgICB4c2k6dHlwZT0ic3RlcmVvdHlwZWFwcGxpY2F0aW9ubWF0Y2hlcmNvbmZpZ3VyYXRpb246U3RlcmVvdHlwZUFwcGxpY2F0aW9uTWF0Y2hlckNvbmZpZ3VyYXRpb24iDQorICAgICAgICB4bWk6aWQ9Il9rNFNuUGJ3RkVlU3dOTEsyVzAySHdBIj4NCisgICAgICA8c3RlcmVvdHlwZXNRdWFsaWZpZWROYW1lcz5TeXNNTDo6UmVxdWlyZW1lbnRzOjpSZXF1aXJlbWVudDwvc3RlcmVvdHlwZXNRdWFsaWZpZWROYW1lcz4NCisgICAgPC9tYXRjaGVyQ29uZmlndXJhdGlvbj4NCisgIDwvZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucz4NCisgIDxlbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zDQorICAgICAgeHNpOnR5cGU9ImVsZW1lbnR0eXBlc2NvbmZpZ3VyYXRpb25zOlNwZWNpYWxpemF0aW9uVHlwZUNvbmZpZ3VyYXRpb24iDQorICAgICAgeG1pOmlkPSJfazRTblByd0ZFZVN3TkxLMlcwMkh3QSINCisgICAgICBuYW1lPSJWZXJpZnkgQWJzdHJhY3Rpb24iDQorICAgICAgaWRlbnRpZmllcj0ib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LlZlcmlmeV9BYnN0cmFjdGlvbiINCisgICAgICBoaW50PSJVTUw6OkFic3RyYWN0aW9uIj4NCisgICAgPGljb25FbnRyeQ0KKyAgICAgICAgeG1pOmlkPSJfazRTblA3d0ZFZVN3TkxLMlcwMkh3QSINCisgICAgICAgIGljb25QYXRoPSIvaWNvbnMvZnVsbC9vYmoxNi9BYnN0cmFjdGlvbi5naWYiDQorICAgICAgICBidW5kbGVJZD0ib3JnLmVjbGlwc2UudW1sMi51bWwuZWRpdCIvPg0KKyAgICA8c3BlY2lhbGl6ZWRUeXBlc0lEPm9yZy5lY2xpcHNlLnBhcHlydXMudW1sLkFic3RyYWN0aW9uPC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICAgIDxtYXRjaGVyQ29uZmlndXJhdGlvbg0KKyAgICAgICAgeHNpOnR5cGU9InN0ZXJlb3R5cGVhcHBsaWNhdGlvbm1hdGNoZXJjb25maWd1cmF0aW9uOlN0ZXJlb3R5cGVBcHBsaWNhdGlvbk1hdGNoZXJDb25maWd1cmF0aW9uIg0KKyAgICAgICAgeG1pOmlkPSJfazRTblFMd0ZFZVN3TkxLMlcwMkh3QSI+DQorICAgICAgPHN0ZXJlb3R5cGVzUXVhbGlmaWVkTmFtZXM+U3lzTUw6OlJlcXVpcmVtZW50czo6VmVyaWZ5PC9zdGVyZW90eXBlc1F1YWxpZmllZE5hbWVzPg0KKyAgICA8L21hdGNoZXJDb25maWd1cmF0aW9uPg0KKyAgPC9lbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zPg0KKyAgPGVsZW1lbnRUeXBlQ29uZmlndXJhdGlvbnMNCisgICAgICB4c2k6dHlwZT0iZWxlbWVudHR5cGVzY29uZmlndXJhdGlvbnM6U3BlY2lhbGl6YXRpb25UeXBlQ29uZmlndXJhdGlvbiINCisgICAgICB4bWk6aWQ9Il9rNFNuUWJ3RkVlU3dOTEsyVzAySHdBIg0KKyAgICAgIG5hbWU9IlZlcmlmeSBEaXJlY3RlZFJlbGF0aW9uc2hpcCINCisgICAgICBpZGVudGlmaWVyPSJvcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuVmVyaWZ5X0RpcmVjdGVkUmVsYXRpb25zaGlwIg0KKyAgICAgIGhpbnQ9IlVNTDo6RGlyZWN0ZWRSZWxhdGlvbnNoaXAiPg0KKyAgICA8aWNvbkVudHJ5DQorICAgICAgICB4bWk6aWQ9Il9rNFNuUXJ3RkVlU3dOTEsyVzAySHdBIg0KKyAgICAgICAgaWNvblBhdGg9Ii9pY29ucy9mdWxsL29iajE2L0RpcmVjdGVkUmVsYXRpb25zaGlwLmdpZiINCisgICAgICAgIGJ1bmRsZUlkPSJvcmcuZWNsaXBzZS51bWwyLnVtbC5lZGl0Ii8+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy51bWwuRGlyZWN0ZWRSZWxhdGlvbnNoaXA8L3NwZWNpYWxpemVkVHlwZXNJRD4NCisgICAgPG1hdGNoZXJDb25maWd1cmF0aW9uDQorICAgICAgICB4c2k6dHlwZT0ic3RlcmVvdHlwZWFwcGxpY2F0aW9ubWF0Y2hlcmNvbmZpZ3VyYXRpb246U3RlcmVvdHlwZUFwcGxpY2F0aW9uTWF0Y2hlckNvbmZpZ3VyYXRpb24iDQorICAgICAgICB4bWk6aWQ9Il9rNFNuUTd3RkVlU3dOTEsyVzAySHdBIj4NCisgICAgICA8c3RlcmVvdHlwZXNRdWFsaWZpZWROYW1lcz5TeXNNTDo6UmVxdWlyZW1lbnRzOjpWZXJpZnk8L3N0ZXJlb3R5cGVzUXVhbGlmaWVkTmFtZXM+DQorICAgIDwvbWF0Y2hlckNvbmZpZ3VyYXRpb24+DQorICA8L2VsZW1lbnRUeXBlQ29uZmlndXJhdGlvbnM+DQorICA8ZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucw0KKyAgICAgIHhzaTp0eXBlPSJlbGVtZW50dHlwZXNjb25maWd1cmF0aW9uczpTcGVjaWFsaXphdGlvblR5cGVDb25maWd1cmF0aW9uIg0KKyAgICAgIHhtaTppZD0iX2s0U25STHdGRWVTd05MSzJXMDJId0EiDQorICAgICAgbmFtZT0iVHJhY2UgQWJzdHJhY3Rpb24iDQorICAgICAgaWRlbnRpZmllcj0ib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LlRyYWNlX0Fic3RyYWN0aW9uIg0KKyAgICAgIGhpbnQ9IlVNTDo6QWJzdHJhY3Rpb24iPg0KKyAgICA8aWNvbkVudHJ5DQorICAgICAgICB4bWk6aWQ9Il9rNFNuUmJ3RkVlU3dOTEsyVzAySHdBIg0KKyAgICAgICAgaWNvblBhdGg9Ii9pY29ucy9mdWxsL29iajE2L0Fic3RyYWN0aW9uLmdpZiINCisgICAgICAgIGJ1bmRsZUlkPSJvcmcuZWNsaXBzZS51bWwyLnVtbC5lZGl0Ii8+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy51bWwuQWJzdHJhY3Rpb248L3NwZWNpYWxpemVkVHlwZXNJRD4NCisgICAgPG1hdGNoZXJDb25maWd1cmF0aW9uDQorICAgICAgICB4c2k6dHlwZT0ic3RlcmVvdHlwZWFwcGxpY2F0aW9ubWF0Y2hlcmNvbmZpZ3VyYXRpb246U3RlcmVvdHlwZUFwcGxpY2F0aW9uTWF0Y2hlckNvbmZpZ3VyYXRpb24iDQorICAgICAgICB4bWk6aWQ9Il9rNFNuUnJ3RkVlU3dOTEsyVzAySHdBIj4NCisgICAgICA8c3RlcmVvdHlwZXNRdWFsaWZpZWROYW1lcz5TeXNNTDo6UmVxdWlyZW1lbnRzOjpUcmFjZTwvc3RlcmVvdHlwZXNRdWFsaWZpZWROYW1lcz4NCisgICAgPC9tYXRjaGVyQ29uZmlndXJhdGlvbj4NCisgIDwvZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucz4NCisgIDxlbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zDQorICAgICAgeHNpOnR5cGU9ImVsZW1lbnR0eXBlc2NvbmZpZ3VyYXRpb25zOlNwZWNpYWxpemF0aW9uVHlwZUNvbmZpZ3VyYXRpb24iDQorICAgICAgeG1pOmlkPSJfazRTblI3d0ZFZVN3TkxLMlcwMkh3QSINCisgICAgICBuYW1lPSJUcmFjZSBEaXJlY3RlZFJlbGF0aW9uc2hpcCINCisgICAgICBpZGVudGlmaWVyPSJvcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuVHJhY2VfRGlyZWN0ZWRSZWxhdGlvbnNoaXAiDQorICAgICAgaGludD0iVU1MOjpEaXJlY3RlZFJlbGF0aW9uc2hpcCI+DQorICAgIDxpY29uRW50cnkNCisgICAgICAgIHhtaTppZD0iX2s0U25TTHdGRWVTd05MSzJXMDJId0EiDQorICAgICAgICBpY29uUGF0aD0iL2ljb25zL2Z1bGwvb2JqMTYvRGlyZWN0ZWRSZWxhdGlvbnNoaXAuZ2lmIg0KKyAgICAgICAgYnVuZGxlSWQ9Im9yZy5lY2xpcHNlLnVtbDIudW1sLmVkaXQiLz4NCisgICAgPHNwZWNpYWxpemVkVHlwZXNJRD5vcmcuZWNsaXBzZS5wYXB5cnVzLnVtbC5EaXJlY3RlZFJlbGF0aW9uc2hpcDwvc3BlY2lhbGl6ZWRUeXBlc0lEPg0KKyAgICA8bWF0Y2hlckNvbmZpZ3VyYXRpb24NCisgICAgICAgIHhzaTp0eXBlPSJzdGVyZW90eXBlYXBwbGljYXRpb25tYXRjaGVyY29uZmlndXJhdGlvbjpTdGVyZW90eXBlQXBwbGljYXRpb25NYXRjaGVyQ29uZmlndXJhdGlvbiINCisgICAgICAgIHhtaTppZD0iX2s0U25TYndGRWVTd05MSzJXMDJId0EiPg0KKyAgICAgIDxzdGVyZW90eXBlc1F1YWxpZmllZE5hbWVzPlN5c01MOjpSZXF1aXJlbWVudHM6OlRyYWNlPC9zdGVyZW90eXBlc1F1YWxpZmllZE5hbWVzPg0KKyAgICA8L21hdGNoZXJDb25maWd1cmF0aW9uPg0KKyAgPC9lbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zPg0KKyAgPGVsZW1lbnRUeXBlQ29uZmlndXJhdGlvbnMNCisgICAgICB4c2k6dHlwZT0iZWxlbWVudHR5cGVzY29uZmlndXJhdGlvbnM6U3BlY2lhbGl6YXRpb25UeXBlQ29uZmlndXJhdGlvbiINCisgICAgICB4bWk6aWQ9Il9rNFNuU3J3RkVlU3dOTEsyVzAySHdBIg0KKyAgICAgIG5hbWU9IlJlZmluZSBBYnN0cmFjdGlvbiINCisgICAgICBpZGVudGlmaWVyPSJvcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuUmVmaW5lX0Fic3RyYWN0aW9uIg0KKyAgICAgIGhpbnQ9IlVNTDo6QWJzdHJhY3Rpb24iPg0KKyAgICA8aWNvbkVudHJ5DQorICAgICAgICB4bWk6aWQ9Il9rNFNuUzd3RkVlU3dOTEsyVzAySHdBIg0KKyAgICAgICAgaWNvblBhdGg9Ii9pY29ucy9mdWxsL29iajE2L0Fic3RyYWN0aW9uLmdpZiINCisgICAgICAgIGJ1bmRsZUlkPSJvcmcuZWNsaXBzZS51bWwyLnVtbC5lZGl0Ii8+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy51bWwuQWJzdHJhY3Rpb248L3NwZWNpYWxpemVkVHlwZXNJRD4NCisgICAgPG1hdGNoZXJDb25maWd1cmF0aW9uDQorICAgICAgICB4c2k6dHlwZT0ic3RlcmVvdHlwZWFwcGxpY2F0aW9ubWF0Y2hlcmNvbmZpZ3VyYXRpb246U3RlcmVvdHlwZUFwcGxpY2F0aW9uTWF0Y2hlckNvbmZpZ3VyYXRpb24iDQorICAgICAgICB4bWk6aWQ9Il9rNFNuVEx3RkVlU3dOTEsyVzAySHdBIj4NCisgICAgICA8c3RlcmVvdHlwZXNRdWFsaWZpZWROYW1lcz5TeXNNTDo6UmVxdWlyZW1lbnRzOjpSZWZpbmU8L3N0ZXJlb3R5cGVzUXVhbGlmaWVkTmFtZXM+DQorICAgIDwvbWF0Y2hlckNvbmZpZ3VyYXRpb24+DQorICA8L2VsZW1lbnRUeXBlQ29uZmlndXJhdGlvbnM+DQorICA8ZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucw0KKyAgICAgIHhzaTp0eXBlPSJlbGVtZW50dHlwZXNjb25maWd1cmF0aW9uczpTcGVjaWFsaXphdGlvblR5cGVDb25maWd1cmF0aW9uIg0KKyAgICAgIHhtaTppZD0iX2s0U25UYndGRWVTd05MSzJXMDJId0EiDQorICAgICAgbmFtZT0iUmVmaW5lIERpcmVjdGVkUmVsYXRpb25zaGlwIg0KKyAgICAgIGlkZW50aWZpZXI9Im9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5SZWZpbmVfRGlyZWN0ZWRSZWxhdGlvbnNoaXAiDQorICAgICAgaGludD0iVU1MOjpEaXJlY3RlZFJlbGF0aW9uc2hpcCI+DQorICAgIDxpY29uRW50cnkNCisgICAgICAgIHhtaTppZD0iX2s0U25UcndGRWVTd05MSzJXMDJId0EiDQorICAgICAgICBpY29uUGF0aD0iL2ljb25zL2Z1bGwvb2JqMTYvRGlyZWN0ZWRSZWxhdGlvbnNoaXAuZ2lmIg0KKyAgICAgICAgYnVuZGxlSWQ9Im9yZy5lY2xpcHNlLnVtbDIudW1sLmVkaXQiLz4NCisgICAgPHNwZWNpYWxpemVkVHlwZXNJRD5vcmcuZWNsaXBzZS5wYXB5cnVzLnVtbC5EaXJlY3RlZFJlbGF0aW9uc2hpcDwvc3BlY2lhbGl6ZWRUeXBlc0lEPg0KKyAgICA8bWF0Y2hlckNvbmZpZ3VyYXRpb24NCisgICAgICAgIHhzaTp0eXBlPSJzdGVyZW90eXBlYXBwbGljYXRpb25tYXRjaGVyY29uZmlndXJhdGlvbjpTdGVyZW90eXBlQXBwbGljYXRpb25NYXRjaGVyQ29uZmlndXJhdGlvbiINCisgICAgICAgIHhtaTppZD0iX2s0U25UN3dGRWVTd05MSzJXMDJId0EiPg0KKyAgICAgIDxzdGVyZW90eXBlc1F1YWxpZmllZE5hbWVzPlN5c01MOjpSZXF1aXJlbWVudHM6OlJlZmluZTwvc3RlcmVvdHlwZXNRdWFsaWZpZWROYW1lcz4NCisgICAgPC9tYXRjaGVyQ29uZmlndXJhdGlvbj4NCisgIDwvZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucz4NCisgIDxlbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zDQorICAgICAgeHNpOnR5cGU9ImVsZW1lbnR0eXBlc2NvbmZpZ3VyYXRpb25zOlNwZWNpYWxpemF0aW9uVHlwZUNvbmZpZ3VyYXRpb24iDQorICAgICAgeG1pOmlkPSJfazRTblVMd0ZFZVN3TkxLMlcwMkh3QSINCisgICAgICBuYW1lPSJGbG93UG9ydCINCisgICAgICBpZGVudGlmaWVyPSJvcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuRmxvd1BvcnQiDQorICAgICAgaGludD0iVU1MOjpQb3J0Ij4NCisgICAgPGljb25FbnRyeQ0KKyAgICAgICAgeG1pOmlkPSJfazRTblVid0ZFZVN3TkxLMlcwMkh3QSINCisgICAgICAgIGljb25QYXRoPSIvaWNvbnMvZnVsbC9vYmoxNi9Qb3J0LmdpZiINCisgICAgICAgIGJ1bmRsZUlkPSJvcmcuZWNsaXBzZS51bWwyLnVtbC5lZGl0Ii8+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy51bWwuUG9ydDwvc3BlY2lhbGl6ZWRUeXBlc0lEPg0KKyAgICA8bWF0Y2hlckNvbmZpZ3VyYXRpb24NCisgICAgICAgIHhzaTp0eXBlPSJzdGVyZW90eXBlYXBwbGljYXRpb25tYXRjaGVyY29uZmlndXJhdGlvbjpTdGVyZW90eXBlQXBwbGljYXRpb25NYXRjaGVyQ29uZmlndXJhdGlvbiINCisgICAgICAgIHhtaTppZD0iX2s0U25VcndGRWVTd05MSzJXMDJId0EiPg0KKyAgICAgIDxzdGVyZW90eXBlc1F1YWxpZmllZE5hbWVzPlN5c01MOjpEZXByZWNhdGVkRWxlbWVudHM6OkZsb3dQb3J0PC9zdGVyZW90eXBlc1F1YWxpZmllZE5hbWVzPg0KKyAgICA8L21hdGNoZXJDb25maWd1cmF0aW9uPg0KKyAgPC9lbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zPg0KKyAgPGVsZW1lbnRUeXBlQ29uZmlndXJhdGlvbnMNCisgICAgICB4c2k6dHlwZT0iZWxlbWVudHR5cGVzY29uZmlndXJhdGlvbnM6U3BlY2lhbGl6YXRpb25UeXBlQ29uZmlndXJhdGlvbiINCisgICAgICB4bWk6aWQ9Il9rNFNuVTd3RkVlU3dOTEsyVzAySHdBIg0KKyAgICAgIG5hbWU9IkZsb3dTcGVjaWZpY2F0aW9uIg0KKyAgICAgIGlkZW50aWZpZXI9Im9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5GbG93U3BlY2lmaWNhdGlvbiINCisgICAgICBoaW50PSJVTUw6OkludGVyZmFjZSI+DQorICAgIDxpY29uRW50cnkNCisgICAgICAgIHhtaTppZD0iX2s0U25WTHdGRWVTd05MSzJXMDJId0EiDQorICAgICAgICBpY29uUGF0aD0iL2ljb25zL2Z1bGwvb2JqMTYvSW50ZXJmYWNlLmdpZiINCisgICAgICAgIGJ1bmRsZUlkPSJvcmcuZWNsaXBzZS51bWwyLnVtbC5lZGl0Ii8+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy51bWwuSW50ZXJmYWNlPC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICAgIDxtYXRjaGVyQ29uZmlndXJhdGlvbg0KKyAgICAgICAgeHNpOnR5cGU9InN0ZXJlb3R5cGVhcHBsaWNhdGlvbm1hdGNoZXJjb25maWd1cmF0aW9uOlN0ZXJlb3R5cGVBcHBsaWNhdGlvbk1hdGNoZXJDb25maWd1cmF0aW9uIg0KKyAgICAgICAgeG1pOmlkPSJfazRTblZid0ZFZVN3TkxLMlcwMkh3QSI+DQorICAgICAgPHN0ZXJlb3R5cGVzUXVhbGlmaWVkTmFtZXM+U3lzTUw6OkRlcHJlY2F0ZWRFbGVtZW50czo6Rmxvd1NwZWNpZmljYXRpb248L3N0ZXJlb3R5cGVzUXVhbGlmaWVkTmFtZXM+DQorICAgIDwvbWF0Y2hlckNvbmZpZ3VyYXRpb24+DQorICA8L2VsZW1lbnRUeXBlQ29uZmlndXJhdGlvbnM+DQorICA8ZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucw0KKyAgICAgIHhzaTp0eXBlPSJlbGVtZW50dHlwZXNjb25maWd1cmF0aW9uczpTcGVjaWFsaXphdGlvblR5cGVDb25maWd1cmF0aW9uIg0KKyAgICAgIHhtaTppZD0iX2s0U25WcndGRWVTd05MSzJXMDJId0EiDQorICAgICAgbmFtZT0iQWxsb2NhdGVkIg0KKyAgICAgIGlkZW50aWZpZXI9Im9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5BbGxvY2F0ZWQiDQorICAgICAgaGludD0iVU1MOjpOYW1lZEVsZW1lbnQiPg0KKyAgICA8aWNvbkVudHJ5DQorICAgICAgICB4bWk6aWQ9Il9rNFNuVjd3RkVlU3dOTEsyVzAySHdBIg0KKyAgICAgICAgaWNvblBhdGg9Ii9pY29ucy9mdWxsL29iajE2L05hbWVkRWxlbWVudC5naWYiDQorICAgICAgICBidW5kbGVJZD0ib3JnLmVjbGlwc2UudW1sMi51bWwuZWRpdCIvPg0KKyAgICA8c3BlY2lhbGl6ZWRUeXBlc0lEPm9yZy5lY2xpcHNlLnBhcHlydXMudW1sLk5hbWVkRWxlbWVudDwvc3BlY2lhbGl6ZWRUeXBlc0lEPg0KKyAgICA8bWF0Y2hlckNvbmZpZ3VyYXRpb24NCisgICAgICAgIHhzaTp0eXBlPSJzdGVyZW90eXBlYXBwbGljYXRpb25tYXRjaGVyY29uZmlndXJhdGlvbjpTdGVyZW90eXBlQXBwbGljYXRpb25NYXRjaGVyQ29uZmlndXJhdGlvbiINCisgICAgICAgIHhtaTppZD0iX2s0U25XTHdGRWVTd05MSzJXMDJId0EiPg0KKyAgICAgIDxzdGVyZW90eXBlc1F1YWxpZmllZE5hbWVzPlN5c01MOjpEZXByZWNhdGVkRWxlbWVudHM6OkFsbG9jYXRlZDwvc3RlcmVvdHlwZXNRdWFsaWZpZWROYW1lcz4NCisgICAgPC9tYXRjaGVyQ29uZmlndXJhdGlvbj4NCisgIDwvZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucz4NCisgIDxlbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zDQorICAgICAgeHNpOnR5cGU9ImVsZW1lbnR0eXBlc2NvbmZpZ3VyYXRpb25zOlNwZWNpYWxpemF0aW9uVHlwZUNvbmZpZ3VyYXRpb24iDQorICAgICAgeG1pOmlkPSJfazRTbldid0ZFZVN3TkxLMlcwMkh3QSINCisgICAgICBuYW1lPSJSZXF1aXJlbWVudFJlbGF0ZWQiDQorICAgICAgaWRlbnRpZmllcj0ib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LlJlcXVpcmVtZW50UmVsYXRlZCINCisgICAgICBoaW50PSJVTUw6Ok5hbWVkRWxlbWVudCI+DQorICAgIDxpY29uRW50cnkNCisgICAgICAgIHhtaTppZD0iX2s0U25XcndGRWVTd05MSzJXMDJId0EiDQorICAgICAgICBpY29uUGF0aD0iL2ljb25zL2Z1bGwvb2JqMTYvTmFtZWRFbGVtZW50LmdpZiINCisgICAgICAgIGJ1bmRsZUlkPSJvcmcuZWNsaXBzZS51bWwyLnVtbC5lZGl0Ii8+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy51bWwuTmFtZWRFbGVtZW50PC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICAgIDxtYXRjaGVyQ29uZmlndXJhdGlvbg0KKyAgICAgICAgeHNpOnR5cGU9InN0ZXJlb3R5cGVhcHBsaWNhdGlvbm1hdGNoZXJjb25maWd1cmF0aW9uOlN0ZXJlb3R5cGVBcHBsaWNhdGlvbk1hdGNoZXJDb25maWd1cmF0aW9uIg0KKyAgICAgICAgeG1pOmlkPSJfazRTblc3d0ZFZVN3TkxLMlcwMkh3QSI+DQorICAgICAgPHN0ZXJlb3R5cGVzUXVhbGlmaWVkTmFtZXM+U3lzTUw6OkRlcHJlY2F0ZWRFbGVtZW50czo6UmVxdWlyZW1lbnRSZWxhdGVkPC9zdGVyZW90eXBlc1F1YWxpZmllZE5hbWVzPg0KKyAgICA8L21hdGNoZXJDb25maWd1cmF0aW9uPg0KKyAgPC9lbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zPg0KKyAgPGVsZW1lbnRUeXBlQ29uZmlndXJhdGlvbnMNCisgICAgICB4c2k6dHlwZT0iZWxlbWVudHR5cGVzY29uZmlndXJhdGlvbnM6U3BlY2lhbGl6YXRpb25UeXBlQ29uZmlndXJhdGlvbiINCisgICAgICB4bWk6aWQ9Il81Ui14d09nZUVlU1VRdlhoRVZRaDh3Ig0KKyAgICAgIG5hbWU9IlVuaXQiDQorICAgICAgaWRlbnRpZmllcj0ib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LlVuaXQiDQorICAgICAgaGludD0iVU1MOjpJbnN0YW5jZVNwZWNpZmljYXRpb24iPg0KKyAgICA8aWNvbkVudHJ5DQorICAgICAgICB4bWk6aWQ9Il9GaDZMZ1BKVkVlU3BWOFplV09xMTNRIg0KKyAgICAgICAgaWNvblBhdGg9Ii9pY29ucy9mdWxsL29iajE2L0luc3RhbmNlU3BlY2lmaWNhdGlvbi5naWYiDQorICAgICAgICBidW5kbGVJZD0ib3JnLmVjbGlwc2UudW1sMi51bWwuZWRpdCIvPg0KKyAgICA8c3BlY2lhbGl6ZWRUeXBlc0lEPm9yZy5lY2xpcHNlLnBhcHlydXMudW1sLkluc3RhbmNlU3BlY2lmaWNhdGlvbjwvc3BlY2lhbGl6ZWRUeXBlc0lEPg0KKyAgICA8ZWRpdEhlbHBlckFkdmljZUNvbmZpZ3VyYXRpb24NCisgICAgICAgIHhtaTppZD0iX284amhrT2pGRWVTVVF2WGhFVlFoOHciDQorICAgICAgICBuYW1lPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuc2VydmljZS50eXBlcy5hZHZpY2UuVW5pdEVkaXRIZWxwZXJBZHZpY2UiDQorICAgICAgICBkZXNjcmlwdGlvbj0iIg0KKyAgICAgICAgaWRlbnRpZmllcj0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnNlcnZpY2UudHlwZXMuYWR2aWNlLlVuaXRFZGl0SGVscGVyQWR2aWNlIg0KKyAgICAgICAgZWRpdEhlbHBlckFkdmljZUNsYXNzTmFtZT0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnNlcnZpY2UudHlwZXMuYWR2aWNlLlVuaXRFZGl0SGVscGVyQWR2aWNlIi8+DQorICA8L2VsZW1lbnRUeXBlQ29uZmlndXJhdGlvbnM+DQorICA8ZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucw0KKyAgICAgIHhzaTp0eXBlPSJlbGVtZW50dHlwZXNjb25maWd1cmF0aW9uczpTcGVjaWFsaXphdGlvblR5cGVDb25maWd1cmF0aW9uIg0KKyAgICAgIHhtaTppZD0iX21lYU84T2duRWVTVVF2WGhFVlFoOHciDQorICAgICAgbmFtZT0iUXVhbnRpdHlLaW5kIg0KKyAgICAgIGlkZW50aWZpZXI9Im9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5RdWFudGl0eUtpbmQiDQorICAgICAgaGludD0iVU1MOjpJbnN0YW5jZVNwZWNpZmljYXRpb24iPg0KKyAgICA8c3BlY2lhbGl6ZWRUeXBlc0lEPm9yZy5lY2xpcHNlLnBhcHlydXMudW1sLkluc3RhbmNlU3BlY2lmaWNhdGlvbjwvc3BlY2lhbGl6ZWRUeXBlc0lEPg0KKyAgICA8ZWRpdEhlbHBlckFkdmljZUNvbmZpZ3VyYXRpb24NCisgICAgICAgIHhtaTppZD0iX2U0TUtrT2pPRWVTV3dZM0VaQ3U5T0EiDQorICAgICAgICBuYW1lPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuc2VydmljZS50eXBlcy5hZHZpY2UuUXVhbnRpdHlLaW5kRWRpdEhlbHBlckFkdmljZSINCisgICAgICAgIGRlc2NyaXB0aW9uPSIiDQorICAgICAgICBpZGVudGlmaWVyPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuc2VydmljZS50eXBlcy5hZHZpY2UuUXVhbnRpdHlLaW5kRWRpdEhlbHBlckFkdmljZSINCisgICAgICAgIGVkaXRIZWxwZXJBZHZpY2VDbGFzc05hbWU9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5zZXJ2aWNlLnR5cGVzLmFkdmljZS5RdWFudGl0eUtpbmRFZGl0SGVscGVyQWR2aWNlIi8+DQorICA8L2VsZW1lbnRUeXBlQ29uZmlndXJhdGlvbnM+DQorICA8ZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucw0KKyAgICAgIHhzaTp0eXBlPSJlbGVtZW50dHlwZXNjb25maWd1cmF0aW9uczpTcGVjaWFsaXphdGlvblR5cGVDb25maWd1cmF0aW9uIg0KKyAgICAgIHhtaTppZD0iX09kU1E0T2dxRWVTVVF2WGhFVlFoOHciDQorICAgICAgbmFtZT0iUGFydEFzc29jaWF0aW9uIg0KKyAgICAgIGRlc2NyaXB0aW9uPSJDcmVhdGUgYSBQYXJ0QXNzb2NpYXRpb24iDQorICAgICAgaWRlbnRpZmllcj0ib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LlBhcnRBc3NvY2lhdGlvbiINCisgICAgICBoaW50PSJVTUw6OkFzc29jaWF0aW9uIj4NCisgICAgPGljb25FbnRyeQ0KKyAgICAgICAgeG1pOmlkPSJfSkVHc29QSmxFZVNwVjhaZVdPcTEzUSINCisgICAgICAgIGljb25QYXRoPSJpY29ucy9mdWxsL29iajE2L0Fzc29jaWF0aW9uX2NvbXBvc2l0ZS5naWYiDQorICAgICAgICBidW5kbGVJZD0ib3JnLmVjbGlwc2UudW1sMi51bWwuZWRpdCIvPg0KKyAgICA8c3BlY2lhbGl6ZWRUeXBlc0lEPm9yZy5lY2xpcHNlLnBhcHlydXMudW1sLkFzc29jaWF0aW9uPC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICAgIDxlZGl0SGVscGVyQWR2aWNlQ29uZmlndXJhdGlvbg0KKyAgICAgICAgeG1pOmlkPSJfYTZtYlFPZ3NFZVNVUXZYaEVWUWg4dyINCisgICAgICAgIG5hbWU9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5zZXJ2aWNlLnR5cGVzLmFkdmljZS5QYXJ0QXNzb2NpYXRpb25FZGl0SGVscGVyQWR2aWNlIg0KKyAgICAgICAgZGVzY3JpcHRpb249IiINCisgICAgICAgIGlkZW50aWZpZXI9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5zZXJ2aWNlLnR5cGVzLmFkdmljZS5QYXJ0QXNzb2NpYXRpb25FZGl0SGVscGVyQWR2aWNlIg0KKyAgICAgICAgZWRpdEhlbHBlckFkdmljZUNsYXNzTmFtZT0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnNlcnZpY2UudHlwZXMuYWR2aWNlLlBhcnRBc3NvY2lhdGlvbkVkaXRIZWxwZXJBZHZpY2UiLz4NCisgIDwvZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucz4NCisgIDxlbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zDQorICAgICAgeHNpOnR5cGU9ImVsZW1lbnR0eXBlc2NvbmZpZ3VyYXRpb25zOlNwZWNpYWxpemF0aW9uVHlwZUNvbmZpZ3VyYXRpb24iDQorICAgICAgeG1pOmlkPSJfRlpKVFFQSmtFZVNwVjhaZVdPcTEzUSINCisgICAgICBuYW1lPSJQYXJ0QXNzb2NpYXRpb24iDQorICAgICAgZGVzY3JpcHRpb249IkNyZWF0ZSBhIFBhcnRBc3NvY2lhdGlvbiINCisgICAgICBpZGVudGlmaWVyPSJvcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuU2hhcmVkQXNzb2NpYXRpb24iDQorICAgICAgaGludD0iVU1MOjpBc3NvY2lhdGlvbiI+DQorICAgIDxpY29uRW50cnkNCisgICAgICAgIHhtaTppZD0iXzlEb2tZUEprRWVTcFY4WmVXT3ExM1EiDQorICAgICAgICBpY29uUGF0aD0iaWNvbnMvZnVsbC9vYmoxNi9Bc3NvY2lhdGlvbl9zaGFyZWQuZ2lmIg0KKyAgICAgICAgYnVuZGxlSWQ9Im9yZy5lY2xpcHNlLnVtbDIudW1sLmVkaXQiLz4NCisgICAgPHNwZWNpYWxpemVkVHlwZXNJRD5vcmcuZWNsaXBzZS5wYXB5cnVzLnVtbC5Bc3NvY2lhdGlvbjwvc3BlY2lhbGl6ZWRUeXBlc0lEPg0KKyAgICA8ZWRpdEhlbHBlckFkdmljZUNvbmZpZ3VyYXRpb24NCisgICAgICAgIHhtaTppZD0iX0ZaSlRRZkprRWVTcFY4WmVXT3ExM1EiDQorICAgICAgICBuYW1lPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuc2VydmljZS50eXBlcy5hZHZpY2UuU2hhcmVkQXNzb2NpYXRpb25FZGl0SGVscGVyQWR2aWNlIg0KKyAgICAgICAgZGVzY3JpcHRpb249IiINCisgICAgICAgIGlkZW50aWZpZXI9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5zZXJ2aWNlLnR5cGVzLmFkdmljZS5TaGFyZWRBc3NvY2lhdGlvbkVkaXRIZWxwZXJBZHZpY2UiDQorICAgICAgICBlZGl0SGVscGVyQWR2aWNlQ2xhc3NOYW1lPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuc2VydmljZS50eXBlcy5hZHZpY2UuU2hhcmVkQXNzb2NpYXRpb25FZGl0SGVscGVyQWR2aWNlIi8+DQorICA8L2VsZW1lbnRUeXBlQ29uZmlndXJhdGlvbnM+DQorICA8ZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucw0KKyAgICAgIHhzaTp0eXBlPSJlbGVtZW50dHlwZXNjb25maWd1cmF0aW9uczpTcGVjaWFsaXphdGlvblR5cGVDb25maWd1cmF0aW9uIg0KKyAgICAgIHhtaTppZD0iX0lFRXNNUGU1RWVTeGt1ZUhjRncxbHciDQorICAgICAgbmFtZT0iQ29uc3RyYWludFByb3BlcnR5Ig0KKyAgICAgIGRlc2NyaXB0aW9uPSJDcmVhdGUgYSBjb25zdHJhaW50IFByb3BlcnR5Ig0KKyAgICAgIGlkZW50aWZpZXI9Im9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5Db25zdHJhaW50UHJvcGVydHkiDQorICAgICAgaGludD0iVU1MOjpQcm9wZXJ0eSI+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy51bWwuUHJvcGVydHk8L3NwZWNpYWxpemVkVHlwZXNJRD4NCisgICAgPGVkaXRIZWxwZXJBZHZpY2VDb25maWd1cmF0aW9uDQorICAgICAgICB4bWk6aWQ9Il85S2VMOFBmbEVlU3hrdWVIY0Z3MWx3Ig0KKyAgICAgICAgbmFtZT0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnNlcnZpY2UudHlwZXMuYWR2aWNlLkNvbnN0cmFpbnRQcm9wZXJ0eUVkaXRIZWxwZXJBZHZpY2UiDQorICAgICAgICBkZXNjcmlwdGlvbj0iIg0KKyAgICAgICAgaWRlbnRpZmllcj0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnNlcnZpY2UudHlwZXMuYWR2aWNlLkNvbnN0cmFpbnRQcm9wZXJ0eUVkaXRIZWxwZXJBZHZpY2UiDQorICAgICAgICBlZGl0SGVscGVyQWR2aWNlQ2xhc3NOYW1lPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuc2VydmljZS50eXBlcy5hZHZpY2UuQ29uc3RyYWludFByb3BlcnR5RWRpdEhlbHBlckFkdmljZSIvPg0KKyAgPC9lbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zPg0KKyAgPGVsZW1lbnRUeXBlQ29uZmlndXJhdGlvbnMNCisgICAgICB4c2k6dHlwZT0iZWxlbWVudHR5cGVzY29uZmlndXJhdGlvbnM6U3BlY2lhbGl6YXRpb25UeXBlQ29uZmlndXJhdGlvbiINCisgICAgICB4bWk6aWQ9Il8taTNUWUNDREVlV3A5ckoyZ213NTlBIg0KKyAgICAgIG5hbWU9IkNvbnN0cmFpbnRQcm9wZXJ0eSINCisgICAgICBkZXNjcmlwdGlvbj0iQ3JlYXRlIGFuIGFjdG9yIFBhcnQiDQorICAgICAgaWRlbnRpZmllcj0ib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LkFjdG9yUGFydCINCisgICAgICBoaW50PSJVTUw6OlByb3BlcnR5Ij4NCisgICAgPHNwZWNpYWxpemVkVHlwZXNJRD5vcmcuZWNsaXBzZS5wYXB5cnVzLnVtbC5Qcm9wZXJ0eTwvc3BlY2lhbGl6ZWRUeXBlc0lEPg0KKyAgICA8ZWRpdEhlbHBlckFkdmljZUNvbmZpZ3VyYXRpb24NCisgICAgICAgIHhtaTppZD0iXy1pM1RZU0NERWVXcDlySjJnbXc1OUEiDQorICAgICAgICBuYW1lPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuc2VydmljZS50eXBlcy5hZHZpY2UuQWN0b3JQYXJ0RWRpdEhlbHBlckFkdmljZSINCisgICAgICAgIGRlc2NyaXB0aW9uPSIiDQorICAgICAgICBpZGVudGlmaWVyPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuc2VydmljZS50eXBlcy5hZHZpY2UuQWN0b3JQYXJ0RWRpdEhlbHBlckFkdmljZSINCisgICAgICAgIGVkaXRIZWxwZXJBZHZpY2VDbGFzc05hbWU9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5zZXJ2aWNlLnR5cGVzLmFkdmljZS5BY3RvclBhcnRFZGl0SGVscGVyQWR2aWNlIi8+DQorICA8L2VsZW1lbnRUeXBlQ29uZmlndXJhdGlvbnM+DQorICA8YWR2aWNlQmluZGluZ3NDb25maWd1cmF0aW9ucw0KKyAgICAgIHhzaTp0eXBlPSJhcHBseXN0ZXJlb3R5cGVhZHZpY2Vjb25maWd1cmF0aW9uOkFwcGx5U3RlcmVvdHlwZUFkdmljZUNvbmZpZ3VyYXRpb24iDQorICAgICAgeG1pOmlkPSJfazRTbmNid0ZFZVN3TkxLMlcwMkh3QSINCisgICAgICBuYW1lPSJBcHBseSBWYWx1ZVR5cGUiDQorICAgICAgaWRlbnRpZmllcj0ib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LnZhbHVlVHlwZSINCisgICAgICB0YXJnZXQ9Il9rNFNtZ2J3RkVlU3dOTEsyVzAySHdBIj4NCisgICAgPHN0ZXJlb3R5cGVzVG9BcHBseQ0KKyAgICAgICAgeG1pOmlkPSJfazRTbmNyd0ZFZVN3TkxLMlcwMkh3QSINCisgICAgICAgIHN0ZXJlb3R5cGVRdWFsaWZpZWROYW1lPSJTeXNNTDo6QmxvY2tzOjpWYWx1ZVR5cGUiDQorICAgICAgICB1cGRhdGVOYW1lPSJ0cnVlIj4NCisgICAgICA8cmVxdWlyZWRQcm9maWxlcz5TeXNNTDwvcmVxdWlyZWRQcm9maWxlcz4NCisgICAgPC9zdGVyZW90eXBlc1RvQXBwbHk+DQorICA8L2FkdmljZUJpbmRpbmdzQ29uZmlndXJhdGlvbnM+DQorICA8YWR2aWNlQmluZGluZ3NDb25maWd1cmF0aW9ucw0KKyAgICAgIHhzaTp0eXBlPSJhcHBseXN0ZXJlb3R5cGVhZHZpY2Vjb25maWd1cmF0aW9uOkFwcGx5U3RlcmVvdHlwZUFkdmljZUNvbmZpZ3VyYXRpb24iDQorICAgICAgeG1pOmlkPSJfazRTbmM3d0ZFZVN3TkxLMlcwMkh3QSINCisgICAgICBuYW1lPSJBcHBseSBEaXN0cmlidXRlZFByb3BlcnR5Ig0KKyAgICAgIGlkZW50aWZpZXI9Im9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5kaXN0cmlidXRlZFByb3BlcnR5Ig0KKyAgICAgIHRhcmdldD0iX2s0U21oTHdGRWVTd05MSzJXMDJId0EiPg0KKyAgICA8c3RlcmVvdHlwZXNUb0FwcGx5DQorICAgICAgICB4bWk6aWQ9Il9rNFNuZEx3RkVlU3dOTEsyVzAySHdBIg0KKyAgICAgICAgc3RlcmVvdHlwZVF1YWxpZmllZE5hbWU9IlN5c01MOjpCbG9ja3M6OkRpc3RyaWJ1dGVkUHJvcGVydHkiDQorICAgICAgICB1cGRhdGVOYW1lPSJ0cnVlIj4NCisgICAgICA8cmVxdWlyZWRQcm9maWxlcz5TeXNNTDwvcmVxdWlyZWRQcm9maWxlcz4NCisgICAgPC9zdGVyZW90eXBlc1RvQXBwbHk+DQorICA8L2FkdmljZUJpbmRpbmdzQ29uZmlndXJhdGlvbnM+DQorICA8YWR2aWNlQmluZGluZ3NDb25maWd1cmF0aW9ucw0KKyAgICAgIHhzaTp0eXBlPSJhcHBseXN0ZXJlb3R5cGVhZHZpY2Vjb25maWd1cmF0aW9uOkFwcGx5U3RlcmVvdHlwZUFkdmljZUNvbmZpZ3VyYXRpb24iDQorICAgICAgeG1pOmlkPSJfazRTbmRid0ZFZVN3TkxLMlcwMkh3QSINCisgICAgICBuYW1lPSJBcHBseSBDb25uZWN0b3JQcm9wZXJ0eSINCisgICAgICBpZGVudGlmaWVyPSJvcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuY29ubmVjdG9yUHJvcGVydHkiDQorICAgICAgdGFyZ2V0PSJfazRTbWg3d0ZFZVN3TkxLMlcwMkh3QSI+DQorICAgIDxzdGVyZW90eXBlc1RvQXBwbHkNCisgICAgICAgIHhtaTppZD0iX2s0U25kcndGRWVTd05MSzJXMDJId0EiDQorICAgICAgICBzdGVyZW90eXBlUXVhbGlmaWVkTmFtZT0iU3lzTUw6OkJsb2Nrczo6Q29ubmVjdG9yUHJvcGVydHkiDQorICAgICAgICB1cGRhdGVOYW1lPSJ0cnVlIj4NCisgICAgICA8cmVxdWlyZWRQcm9maWxlcz5TeXNNTDwvcmVxdWlyZWRQcm9maWxlcz4NCisgICAgPC9zdGVyZW90eXBlc1RvQXBwbHk+DQorICA8L2FkdmljZUJpbmRpbmdzQ29uZmlndXJhdGlvbnM+DQorICA8YWR2aWNlQmluZGluZ3NDb25maWd1cmF0aW9ucw0KKyAgICAgIHhzaTp0eXBlPSJhcHBseXN0ZXJlb3R5cGVhZHZpY2Vjb25maWd1cmF0aW9uOkFwcGx5U3RlcmVvdHlwZUFkdmljZUNvbmZpZ3VyYXRpb24iDQorICAgICAgeG1pOmlkPSJfazRTbmQ3d0ZFZVN3TkxLMlcwMkh3QSINCisgICAgICBuYW1lPSJBcHBseSBQYXJ0aWNpcGFudFByb3BlcnR5Ig0KKyAgICAgIGlkZW50aWZpZXI9Im9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5wYXJ0aWNpcGFudFByb3BlcnR5Ig0KKyAgICAgIHRhcmdldD0iX2s0U21pcndGRWVTd05MSzJXMDJId0EiPg0KKyAgICA8c3RlcmVvdHlwZXNUb0FwcGx5DQorICAgICAgICB4bWk6aWQ9Il9rNFNuZUx3RkVlU3dOTEsyVzAySHdBIg0KKyAgICAgICAgc3RlcmVvdHlwZVF1YWxpZmllZE5hbWU9IlN5c01MOjpCbG9ja3M6OlBhcnRpY2lwYW50UHJvcGVydHkiDQorICAgICAgICB1cGRhdGVOYW1lPSJ0cnVlIj4NCisgICAgICA8cmVxdWlyZWRQcm9maWxlcz5TeXNNTDwvcmVxdWlyZWRQcm9maWxlcz4NCisgICAgPC9zdGVyZW90eXBlc1RvQXBwbHk+DQorICA8L2FkdmljZUJpbmRpbmdzQ29uZmlndXJhdGlvbnM+DQorICA8YWR2aWNlQmluZGluZ3NDb25maWd1cmF0aW9ucw0KKyAgICAgIHhzaTp0eXBlPSJhcHBseXN0ZXJlb3R5cGVhZHZpY2Vjb25maWd1cmF0aW9uOkFwcGx5U3RlcmVvdHlwZUFkdmljZUNvbmZpZ3VyYXRpb24iDQorICAgICAgeG1pOmlkPSJfazRTbmVid0ZFZVN3TkxLMlcwMkh3QSINCisgICAgICBuYW1lPSJBcHBseSBCaW5kaW5nQ29ubmVjdG9yIg0KKyAgICAgIGlkZW50aWZpZXI9Im9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5iaW5kaW5nQ29ubmVjdG9yIg0KKyAgICAgIHRhcmdldD0iX2s0U21qYndGRWVTd05MSzJXMDJId0EiPg0KKyAgICA8c3RlcmVvdHlwZXNUb0FwcGx5DQorICAgICAgICB4bWk6aWQ9Il9rNFNuZXJ3RkVlU3dOTEsyVzAySHdBIg0KKyAgICAgICAgc3RlcmVvdHlwZVF1YWxpZmllZE5hbWU9IlN5c01MOjpCbG9ja3M6OkJpbmRpbmdDb25uZWN0b3IiDQorICAgICAgICB1cGRhdGVOYW1lPSJ0cnVlIj4NCisgICAgICA8cmVxdWlyZWRQcm9maWxlcz5TeXNNTDwvcmVxdWlyZWRQcm9maWxlcz4NCisgICAgPC9zdGVyZW90eXBlc1RvQXBwbHk+DQorICA8L2FkdmljZUJpbmRpbmdzQ29uZmlndXJhdGlvbnM+DQorICA8YWR2aWNlQmluZGluZ3NDb25maWd1cmF0aW9ucw0KKyAgICAgIHhzaTp0eXBlPSJhcHBseXN0ZXJlb3R5cGVhZHZpY2Vjb25maWd1cmF0aW9uOkFwcGx5U3RlcmVvdHlwZUFkdmljZUNvbmZpZ3VyYXRpb24iDQorICAgICAgeG1pOmlkPSJfazRTbmU3d0ZFZVN3TkxLMlcwMkh3QSINCisgICAgICBuYW1lPSJBcHBseSBCbG9jayINCisgICAgICBpZGVudGlmaWVyPSJvcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuYmxvY2siDQorICAgICAgdGFyZ2V0PSJfazRTbWtMd0ZFZVN3TkxLMlcwMkh3QSI+DQorICAgIDxzdGVyZW90eXBlc1RvQXBwbHkNCisgICAgICAgIHhtaTppZD0iX2s0U25mTHdGRWVTd05MSzJXMDJId0EiDQorICAgICAgICBzdGVyZW90eXBlUXVhbGlmaWVkTmFtZT0iU3lzTUw6OkJsb2Nrczo6QmxvY2siDQorICAgICAgICB1cGRhdGVOYW1lPSJ0cnVlIj4NCisgICAgICA8cmVxdWlyZWRQcm9maWxlcz5TeXNNTDwvcmVxdWlyZWRQcm9maWxlcz4NCisgICAgPC9zdGVyZW90eXBlc1RvQXBwbHk+DQorICA8L2FkdmljZUJpbmRpbmdzQ29uZmlndXJhdGlvbnM+DQorICA8YWR2aWNlQmluZGluZ3NDb25maWd1cmF0aW9ucw0KKyAgICAgIHhzaTp0eXBlPSJhcHBseXN0ZXJlb3R5cGVhZHZpY2Vjb25maWd1cmF0aW9uOkFwcGx5U3RlcmVvdHlwZUFkdmljZUNvbmZpZ3VyYXRpb24iDQorICAgICAgeG1pOmlkPSJfazRTbmZid0ZFZVN3TkxLMlcwMkh3QSINCisgICAgICBuYW1lPSJBcHBseSBQcm9wZXJ0eVNwZWNpZmljVHlwZSINCisgICAgICBpZGVudGlmaWVyPSJvcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQucHJvcGVydHlTcGVjaWZpY1R5cGUiDQorICAgICAgdGFyZ2V0PSJfazRTbWs3d0ZFZVN3TkxLMlcwMkh3QSI+DQorICAgIDxzdGVyZW90eXBlc1RvQXBwbHkNCisgICAgICAgIHhtaTppZD0iX2s0U25mcndGRWVTd05MSzJXMDJId0EiDQorICAgICAgICBzdGVyZW90eXBlUXVhbGlmaWVkTmFtZT0iU3lzTUw6OkJsb2Nrczo6UHJvcGVydHlTcGVjaWZpY1R5cGUiDQorICAgICAgICB1cGRhdGVOYW1lPSJ0cnVlIj4NCisgICAgICA8cmVxdWlyZWRQcm9maWxlcz5TeXNNTDwvcmVxdWlyZWRQcm9maWxlcz4NCisgICAgPC9zdGVyZW90eXBlc1RvQXBwbHk+DQorICA8L2FkdmljZUJpbmRpbmdzQ29uZmlndXJhdGlvbnM+DQorICA8YWR2aWNlQmluZGluZ3NDb25maWd1cmF0aW9ucw0KKyAgICAgIHhzaTp0eXBlPSJhcHBseXN0ZXJlb3R5cGVhZHZpY2Vjb25maWd1cmF0aW9uOkFwcGx5U3RlcmVvdHlwZUFkdmljZUNvbmZpZ3VyYXRpb24iDQorICAgICAgeG1pOmlkPSJfazRTbmY3d0ZFZVN3TkxLMlcwMkh3QSINCisgICAgICBuYW1lPSJBcHBseSBOZXN0ZWRDb25uZWN0b3JFbmQiDQorICAgICAgaWRlbnRpZmllcj0ib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0Lm5lc3RlZENvbm5lY3RvckVuZCINCisgICAgICB0YXJnZXQ9Il9rNFNtbHJ3RkVlU3dOTEsyVzAySHdBIj4NCisgICAgPHN0ZXJlb3R5cGVzVG9BcHBseQ0KKyAgICAgICAgeG1pOmlkPSJfazRTbmdMd0ZFZVN3TkxLMlcwMkh3QSINCisgICAgICAgIHN0ZXJlb3R5cGVRdWFsaWZpZWROYW1lPSJTeXNNTDo6QmxvY2tzOjpOZXN0ZWRDb25uZWN0b3JFbmQiDQorICAgICAgICB1cGRhdGVOYW1lPSJ0cnVlIj4NCisgICAgICA8cmVxdWlyZWRQcm9maWxlcz5TeXNNTDwvcmVxdWlyZWRQcm9maWxlcz4NCisgICAgPC9zdGVyZW90eXBlc1RvQXBwbHk+DQorICA8L2FkdmljZUJpbmRpbmdzQ29uZmlndXJhdGlvbnM+DQorICA8YWR2aWNlQmluZGluZ3NDb25maWd1cmF0aW9ucw0KKyAgICAgIHhzaTp0eXBlPSJhcHBseXN0ZXJlb3R5cGVhZHZpY2Vjb25maWd1cmF0aW9uOkFwcGx5U3RlcmVvdHlwZUFkdmljZUNvbmZpZ3VyYXRpb24iDQorICAgICAgeG1pOmlkPSJfazRTbmdid0ZFZVN3TkxLMlcwMkh3QSINCisgICAgICBuYW1lPSJBcHBseSBOZXN0ZWRDb25uZWN0b3JFbmQiDQorICAgICAgaWRlbnRpZmllcj0ib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0Lm5lc3RlZENvbm5lY3RvckVuZCINCisgICAgICB0YXJnZXQ9Il9rNFNtbWJ3RkVlU3dOTEsyVzAySHdBIj4NCisgICAgPHN0ZXJlb3R5cGVzVG9BcHBseQ0KKyAgICAgICAgeG1pOmlkPSJfazRTbmdyd0ZFZVN3TkxLMlcwMkh3QSINCisgICAgICAgIHN0ZXJlb3R5cGVRdWFsaWZpZWROYW1lPSJTeXNNTDo6QmxvY2tzOjpOZXN0ZWRDb25uZWN0b3JFbmQiDQorICAgICAgICB1cGRhdGVOYW1lPSJ0cnVlIj4NCisgICAgICA8cmVxdWlyZWRQcm9maWxlcz5TeXNNTDwvcmVxdWlyZWRQcm9maWxlcz4NCisgICAgPC9zdGVyZW90eXBlc1RvQXBwbHk+DQorICA8L2FkdmljZUJpbmRpbmdzQ29uZmlndXJhdGlvbnM+DQorICA8YWR2aWNlQmluZGluZ3NDb25maWd1cmF0aW9ucw0KKyAgICAgIHhzaTp0eXBlPSJhcHBseXN0ZXJlb3R5cGVhZHZpY2Vjb25maWd1cmF0aW9uOkFwcGx5U3RlcmVvdHlwZUFkdmljZUNvbmZpZ3VyYXRpb24iDQorICAgICAgeG1pOmlkPSJfazRTbmc3d0ZFZVN3TkxLMlcwMkh3QSINCisgICAgICBuYW1lPSJBcHBseSBEaXJlY3RlZFJlbGF0aW9uc2hpcFByb3BlcnR5UGF0aCINCisgICAgICBpZGVudGlmaWVyPSJvcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuZGlyZWN0ZWRSZWxhdGlvbnNoaXBQcm9wZXJ0eVBhdGgiDQorICAgICAgdGFyZ2V0PSJfazRTbW5Md0ZFZVN3TkxLMlcwMkh3QSI+DQorICAgIDxzdGVyZW90eXBlc1RvQXBwbHkNCisgICAgICAgIHhtaTppZD0iX2s0U25oTHdGRWVTd05MSzJXMDJId0EiDQorICAgICAgICBzdGVyZW90eXBlUXVhbGlmaWVkTmFtZT0iU3lzTUw6OkJsb2Nrczo6RGlyZWN0ZWRSZWxhdGlvbnNoaXBQcm9wZXJ0eVBhdGgiDQorICAgICAgICB1cGRhdGVOYW1lPSJ0cnVlIj4NCisgICAgICA8cmVxdWlyZWRQcm9maWxlcz5TeXNNTDwvcmVxdWlyZWRQcm9maWxlcz4NCisgICAgPC9zdGVyZW90eXBlc1RvQXBwbHk+DQorICA8L2FkdmljZUJpbmRpbmdzQ29uZmlndXJhdGlvbnM+DQorICA8YWR2aWNlQmluZGluZ3NDb25maWd1cmF0aW9ucw0KKyAgICAgIHhzaTp0eXBlPSJhcHBseXN0ZXJlb3R5cGVhZHZpY2Vjb25maWd1cmF0aW9uOkFwcGx5U3RlcmVvdHlwZUFkdmljZUNvbmZpZ3VyYXRpb24iDQorICAgICAgeG1pOmlkPSJfazRTbmhid0ZFZVN3TkxLMlcwMkh3QSINCisgICAgICBuYW1lPSJBcHBseSBFbGVtZW50UHJvcGVydHlQYXRoIg0KKyAgICAgIGlkZW50aWZpZXI9Im9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5lbGVtZW50UHJvcGVydHlQYXRoIg0KKyAgICAgIHRhcmdldD0iX2s0U21uN3dGRWVTd05MSzJXMDJId0EiPg0KKyAgICA8c3RlcmVvdHlwZXNUb0FwcGx5DQorICAgICAgICB4bWk6aWQ9Il9rNFNuaHJ3RkVlU3dOTEsyVzAySHdBIg0KKyAgICAgICAgc3RlcmVvdHlwZVF1YWxpZmllZE5hbWU9IlN5c01MOjpCbG9ja3M6OkVsZW1lbnRQcm9wZXJ0eVBhdGgiDQorICAgICAgICB1cGRhdGVOYW1lPSJ0cnVlIj4NCisgICAgICA8cmVxdWlyZWRQcm9maWxlcz5TeXNNTDwvcmVxdWlyZWRQcm9maWxlcz4NCisgICAgPC9zdGVyZW90eXBlc1RvQXBwbHk+DQorICA8L2FkdmljZUJpbmRpbmdzQ29uZmlndXJhdGlvbnM+DQorICA8YWR2aWNlQmluZGluZ3NDb25maWd1cmF0aW9ucw0KKyAgICAgIHhzaTp0eXBlPSJhcHBseXN0ZXJlb3R5cGVhZHZpY2Vjb25maWd1cmF0aW9uOkFwcGx5U3RlcmVvdHlwZUFkdmljZUNvbmZpZ3VyYXRpb24iDQorICAgICAgeG1pOmlkPSJfazRTbmg3d0ZFZVN3TkxLMlcwMkh3QSINCisgICAgICBuYW1lPSJBcHBseSBFbmRQYXRoTXVsdGlwbGljaXR5Ig0KKyAgICAgIGlkZW50aWZpZXI9Im9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5lbmRQYXRoTXVsdGlwbGljaXR5Ig0KKyAgICAgIHRhcmdldD0iX2s0U21vcndGRWVTd05MSzJXMDJId0EiPg0KKyAgICA8c3RlcmVvdHlwZXNUb0FwcGx5DQorICAgICAgICB4bWk6aWQ9Il9rNFNuaUx3RkVlU3dOTEsyVzAySHdBIg0KKyAgICAgICAgc3RlcmVvdHlwZVF1YWxpZmllZE5hbWU9IlN5c01MOjpCbG9ja3M6OkVuZFBhdGhNdWx0aXBsaWNpdHkiDQorICAgICAgICB1cGRhdGVOYW1lPSJ0cnVlIj4NCisgICAgICA8cmVxdWlyZWRQcm9maWxlcz5TeXNNTDwvcmVxdWlyZWRQcm9maWxlcz4NCisgICAgPC9zdGVyZW90eXBlc1RvQXBwbHk+DQorICA8L2FkdmljZUJpbmRpbmdzQ29uZmlndXJhdGlvbnM+DQorICA8YWR2aWNlQmluZGluZ3NDb25maWd1cmF0aW9ucw0KKyAgICAgIHhzaTp0eXBlPSJhcHBseXN0ZXJlb3R5cGVhZHZpY2Vjb25maWd1cmF0aW9uOkFwcGx5U3RlcmVvdHlwZUFkdmljZUNvbmZpZ3VyYXRpb24iDQorICAgICAgeG1pOmlkPSJfazRTbmlid0ZFZVN3TkxLMlcwMkh3QSINCisgICAgICBuYW1lPSJBcHBseSBCb3VuZFJlZmVyZW5jZSINCisgICAgICBpZGVudGlmaWVyPSJvcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuYm91bmRSZWZlcmVuY2UiDQorICAgICAgdGFyZ2V0PSJfazRTbXBid0ZFZVN3TkxLMlcwMkh3QSI+DQorICAgIDxzdGVyZW90eXBlc1RvQXBwbHkNCisgICAgICAgIHhtaTppZD0iX2s0U25pcndGRWVTd05MSzJXMDJId0EiDQorICAgICAgICBzdGVyZW90eXBlUXVhbGlmaWVkTmFtZT0iU3lzTUw6OkJsb2Nrczo6Qm91bmRSZWZlcmVuY2UiDQorICAgICAgICB1cGRhdGVOYW1lPSJ0cnVlIj4NCisgICAgICA8cmVxdWlyZWRQcm9maWxlcz5TeXNNTDwvcmVxdWlyZWRQcm9maWxlcz4NCisgICAgPC9zdGVyZW90eXBlc1RvQXBwbHk+DQorICA8L2FkdmljZUJpbmRpbmdzQ29uZmlndXJhdGlvbnM+DQorICA8YWR2aWNlQmluZGluZ3NDb25maWd1cmF0aW9ucw0KKyAgICAgIHhzaTp0eXBlPSJhcHBseXN0ZXJlb3R5cGVhZHZpY2Vjb25maWd1cmF0aW9uOkFwcGx5U3RlcmVvdHlwZUFkdmljZUNvbmZpZ3VyYXRpb24iDQorICAgICAgeG1pOmlkPSJfazRTbmk3d0ZFZVN3TkxLMlcwMkh3QSINCisgICAgICBuYW1lPSJBcHBseSBBZGp1bmN0UHJvcGVydHkiDQorICAgICAgaWRlbnRpZmllcj0ib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LmFkanVuY3RQcm9wZXJ0eSINCisgICAgICB0YXJnZXQ9Il9rNFNtcUx3RkVlU3dOTEsyVzAySHdBIj4NCisgICAgPHN0ZXJlb3R5cGVzVG9BcHBseQ0KKyAgICAgICAgeG1pOmlkPSJfazRTbmpMd0ZFZVN3TkxLMlcwMkh3QSINCisgICAgICAgIHN0ZXJlb3R5cGVRdWFsaWZpZWROYW1lPSJTeXNNTDo6QmxvY2tzOjpBZGp1bmN0UHJvcGVydHkiDQorICAgICAgICB1cGRhdGVOYW1lPSJ0cnVlIj4NCisgICAgICA8cmVxdWlyZWRQcm9maWxlcz5TeXNNTDwvcmVxdWlyZWRQcm9maWxlcz4NCisgICAgPC9zdGVyZW90eXBlc1RvQXBwbHk+DQorICA8L2FkdmljZUJpbmRpbmdzQ29uZmlndXJhdGlvbnM+DQorICA8YWR2aWNlQmluZGluZ3NDb25maWd1cmF0aW9ucw0KKyAgICAgIHhzaTp0eXBlPSJhcHBseXN0ZXJlb3R5cGVhZHZpY2Vjb25maWd1cmF0aW9uOkFwcGx5U3RlcmVvdHlwZUFkdmljZUNvbmZpZ3VyYXRpb24iDQorICAgICAgeG1pOmlkPSJfazRTbmpid0ZFZVN3TkxLMlcwMkh3QSINCisgICAgICBuYW1lPSJBcHBseSBDbGFzc2lmaWVyQmVoYXZpb3JQcm9wZXJ0eSINCisgICAgICBpZGVudGlmaWVyPSJvcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuY2xhc3NpZmllckJlaGF2aW9yUHJvcGVydHkiDQorICAgICAgdGFyZ2V0PSJfazRTbXE3d0ZFZVN3TkxLMlcwMkh3QSI+DQorICAgIDxzdGVyZW90eXBlc1RvQXBwbHkNCisgICAgICAgIHhtaTppZD0iX2s0U25qcndGRWVTd05MSzJXMDJId0EiDQorICAgICAgICBzdGVyZW90eXBlUXVhbGlmaWVkTmFtZT0iU3lzTUw6OkJsb2Nrczo6Q2xhc3NpZmllckJlaGF2aW9yUHJvcGVydHkiDQorICAgICAgICB1cGRhdGVOYW1lPSJ0cnVlIj4NCisgICAgICA8cmVxdWlyZWRQcm9maWxlcz5TeXNNTDwvcmVxdWlyZWRQcm9maWxlcz4NCisgICAgPC9zdGVyZW90eXBlc1RvQXBwbHk+DQorICA8L2FkdmljZUJpbmRpbmdzQ29uZmlndXJhdGlvbnM+DQorICA8YWR2aWNlQmluZGluZ3NDb25maWd1cmF0aW9ucw0KKyAgICAgIHhzaTp0eXBlPSJhcHBseXN0ZXJlb3R5cGVhZHZpY2Vjb25maWd1cmF0aW9uOkFwcGx5U3RlcmVvdHlwZUFkdmljZUNvbmZpZ3VyYXRpb24iDQorICAgICAgeG1pOmlkPSJfazRTbmo3d0ZFZVN3TkxLMlcwMkh3QSINCisgICAgICBuYW1lPSJBcHBseSBJdGVtRmxvdyINCisgICAgICBpZGVudGlmaWVyPSJvcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuaXRlbUZsb3ciDQorICAgICAgdGFyZ2V0PSJfazRTbXJyd0ZFZVN3TkxLMlcwMkh3QSI+DQorICAgIDxzdGVyZW90eXBlc1RvQXBwbHkNCisgICAgICAgIHhtaTppZD0iX2s0U25rTHdGRWVTd05MSzJXMDJId0EiDQorICAgICAgICBzdGVyZW90eXBlUXVhbGlmaWVkTmFtZT0iU3lzTUw6OlBvcnRzYW5kRmxvd3M6Okl0ZW1GbG93Ig0KKyAgICAgICAgdXBkYXRlTmFtZT0idHJ1ZSI+DQorICAgICAgPHJlcXVpcmVkUHJvZmlsZXM+U3lzTUw8L3JlcXVpcmVkUHJvZmlsZXM+DQorICAgIDwvc3RlcmVvdHlwZXNUb0FwcGx5Pg0KKyAgPC9hZHZpY2VCaW5kaW5nc0NvbmZpZ3VyYXRpb25zPg0KKyAgPGFkdmljZUJpbmRpbmdzQ29uZmlndXJhdGlvbnMNCisgICAgICB4c2k6dHlwZT0iYXBwbHlzdGVyZW90eXBlYWR2aWNlY29uZmlndXJhdGlvbjpBcHBseVN0ZXJlb3R5cGVBZHZpY2VDb25maWd1cmF0aW9uIg0KKyAgICAgIHhtaTppZD0iX2s0U25rYndGRWVTd05MSzJXMDJId0EiDQorICAgICAgbmFtZT0iQXBwbHkgRmxvd1Byb3BlcnR5Ig0KKyAgICAgIGlkZW50aWZpZXI9Im9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5mbG93UHJvcGVydHkiDQorICAgICAgdGFyZ2V0PSJfazRTbXNid0ZFZVN3TkxLMlcwMkh3QSI+DQorICAgIDxzdGVyZW90eXBlc1RvQXBwbHkNCisgICAgICAgIHhtaTppZD0iX2s0U25rcndGRWVTd05MSzJXMDJId0EiDQorICAgICAgICBzdGVyZW90eXBlUXVhbGlmaWVkTmFtZT0iU3lzTUw6OlBvcnRzYW5kRmxvd3M6OkZsb3dQcm9wZXJ0eSINCisgICAgICAgIHVwZGF0ZU5hbWU9InRydWUiPg0KKyAgICAgIDxyZXF1aXJlZFByb2ZpbGVzPlN5c01MPC9yZXF1aXJlZFByb2ZpbGVzPg0KKyAgICA8L3N0ZXJlb3R5cGVzVG9BcHBseT4NCisgIDwvYWR2aWNlQmluZGluZ3NDb25maWd1cmF0aW9ucz4NCisgIDxhZHZpY2VCaW5kaW5nc0NvbmZpZ3VyYXRpb25zDQorICAgICAgeHNpOnR5cGU9ImFwcGx5c3RlcmVvdHlwZWFkdmljZWNvbmZpZ3VyYXRpb246QXBwbHlTdGVyZW90eXBlQWR2aWNlQ29uZmlndXJhdGlvbiINCisgICAgICB4bWk6aWQ9Il9rNFNuazd3RkVlU3dOTEsyVzAySHdBIg0KKyAgICAgIG5hbWU9IkFwcGx5IEZ1bGxQb3J0Ig0KKyAgICAgIGlkZW50aWZpZXI9Im9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5mdWxsUG9ydCINCisgICAgICB0YXJnZXQ9Il9rNFNtdEx3RkVlU3dOTEsyVzAySHdBIj4NCisgICAgPHN0ZXJlb3R5cGVzVG9BcHBseQ0KKyAgICAgICAgeG1pOmlkPSJfazRTbmxMd0ZFZVN3TkxLMlcwMkh3QSINCisgICAgICAgIHN0ZXJlb3R5cGVRdWFsaWZpZWROYW1lPSJTeXNNTDo6UG9ydHNhbmRGbG93czo6RnVsbFBvcnQiDQorICAgICAgICB1cGRhdGVOYW1lPSJ0cnVlIj4NCisgICAgICA8cmVxdWlyZWRQcm9maWxlcz5TeXNNTDwvcmVxdWlyZWRQcm9maWxlcz4NCisgICAgPC9zdGVyZW90eXBlc1RvQXBwbHk+DQorICA8L2FkdmljZUJpbmRpbmdzQ29uZmlndXJhdGlvbnM+DQorICA8YWR2aWNlQmluZGluZ3NDb25maWd1cmF0aW9ucw0KKyAgICAgIHhzaTp0eXBlPSJhcHBseXN0ZXJlb3R5cGVhZHZpY2Vjb25maWd1cmF0aW9uOkFwcGx5U3RlcmVvdHlwZUFkdmljZUNvbmZpZ3VyYXRpb24iDQorICAgICAgeG1pOmlkPSJfazRTbmxid0ZFZVN3TkxLMlcwMkh3QSINCisgICAgICBuYW1lPSJBcHBseSBJbnRlcmZhY2VCbG9jayINCisgICAgICBpZGVudGlmaWVyPSJvcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuaW50ZXJmYWNlQmxvY2siDQorICAgICAgdGFyZ2V0PSJfazRTbXQ3d0ZFZVN3TkxLMlcwMkh3QSI+DQorICAgIDxzdGVyZW90eXBlc1RvQXBwbHkNCisgICAgICAgIHhtaTppZD0iX2s0U25scndGRWVTd05MSzJXMDJId0EiDQorICAgICAgICBzdGVyZW90eXBlUXVhbGlmaWVkTmFtZT0iU3lzTUw6OlBvcnRzYW5kRmxvd3M6OkludGVyZmFjZUJsb2NrIg0KKyAgICAgICAgdXBkYXRlTmFtZT0idHJ1ZSI+DQorICAgICAgPHJlcXVpcmVkUHJvZmlsZXM+U3lzTUw8L3JlcXVpcmVkUHJvZmlsZXM+DQorICAgIDwvc3RlcmVvdHlwZXNUb0FwcGx5Pg0KKyAgPC9hZHZpY2VCaW5kaW5nc0NvbmZpZ3VyYXRpb25zPg0KKyAgPGFkdmljZUJpbmRpbmdzQ29uZmlndXJhdGlvbnMNCisgICAgICB4c2k6dHlwZT0iYXBwbHlzdGVyZW90eXBlYWR2aWNlY29uZmlndXJhdGlvbjpBcHBseVN0ZXJlb3R5cGVBZHZpY2VDb25maWd1cmF0aW9uIg0KKyAgICAgIHhtaTppZD0iX2s0U25sN3dGRWVTd05MSzJXMDJId0EiDQorICAgICAgbmFtZT0iQXBwbHkgUHJveHlQb3J0Ig0KKyAgICAgIGlkZW50aWZpZXI9Im9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5wcm94eVBvcnQiDQorICAgICAgdGFyZ2V0PSJfazRTbXVyd0ZFZVN3TkxLMlcwMkh3QSI+DQorICAgIDxzdGVyZW90eXBlc1RvQXBwbHkNCisgICAgICAgIHhtaTppZD0iX2s0U25tTHdGRWVTd05MSzJXMDJId0EiDQorICAgICAgICBzdGVyZW90eXBlUXVhbGlmaWVkTmFtZT0iU3lzTUw6OlBvcnRzYW5kRmxvd3M6OlByb3h5UG9ydCINCisgICAgICAgIHVwZGF0ZU5hbWU9InRydWUiPg0KKyAgICAgIDxyZXF1aXJlZFByb2ZpbGVzPlN5c01MPC9yZXF1aXJlZFByb2ZpbGVzPg0KKyAgICA8L3N0ZXJlb3R5cGVzVG9BcHBseT4NCisgIDwvYWR2aWNlQmluZGluZ3NDb25maWd1cmF0aW9ucz4NCisgIDxhZHZpY2VCaW5kaW5nc0NvbmZpZ3VyYXRpb25zDQorICAgICAgeHNpOnR5cGU9ImFwcGx5c3RlcmVvdHlwZWFkdmljZWNvbmZpZ3VyYXRpb246QXBwbHlTdGVyZW90eXBlQWR2aWNlQ29uZmlndXJhdGlvbiINCisgICAgICB4bWk6aWQ9Il9rNFNubWJ3RkVlU3dOTEsyVzAySHdBIg0KKyAgICAgIG5hbWU9IkFwcGx5IEFjY2VwdENoYW5nZVN0cnVjdHVyYWxGZWF0dXJlRXZlbnRBY3Rpb24iDQorICAgICAgaWRlbnRpZmllcj0ib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LmFjY2VwdENoYW5nZVN0cnVjdHVyYWxGZWF0dXJlRXZlbnRBY3Rpb24iDQorICAgICAgdGFyZ2V0PSJfazRTbXZid0ZFZVN3TkxLMlcwMkh3QSI+DQorICAgIDxzdGVyZW90eXBlc1RvQXBwbHkNCisgICAgICAgIHhtaTppZD0iX2s0U25tcndGRWVTd05MSzJXMDJId0EiDQorICAgICAgICBzdGVyZW90eXBlUXVhbGlmaWVkTmFtZT0iU3lzTUw6OlBvcnRzYW5kRmxvd3M6OkFjY2VwdENoYW5nZVN0cnVjdHVyYWxGZWF0dXJlRXZlbnRBY3Rpb24iDQorICAgICAgICB1cGRhdGVOYW1lPSJ0cnVlIj4NCisgICAgICA8cmVxdWlyZWRQcm9maWxlcz5TeXNNTDwvcmVxdWlyZWRQcm9maWxlcz4NCisgICAgPC9zdGVyZW90eXBlc1RvQXBwbHk+DQorICA8L2FkdmljZUJpbmRpbmdzQ29uZmlndXJhdGlvbnM+DQorICA8YWR2aWNlQmluZGluZ3NDb25maWd1cmF0aW9ucw0KKyAgICAgIHhzaTp0eXBlPSJhcHBseXN0ZXJlb3R5cGVhZHZpY2Vjb25maWd1cmF0aW9uOkFwcGx5U3RlcmVvdHlwZUFkdmljZUNvbmZpZ3VyYXRpb24iDQorICAgICAgeG1pOmlkPSJfazRTbm03d0ZFZVN3TkxLMlcwMkh3QSINCisgICAgICBuYW1lPSJBcHBseSBDaGFuZ2VTdHJ1Y3R1cmFsRmVhdHVyZUV2ZW50Ig0KKyAgICAgIGlkZW50aWZpZXI9Im9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5jaGFuZ2VTdHJ1Y3R1cmFsRmVhdHVyZUV2ZW50Ig0KKyAgICAgIHRhcmdldD0iX2s0U213THdGRWVTd05MSzJXMDJId0EiPg0KKyAgICA8c3RlcmVvdHlwZXNUb0FwcGx5DQorICAgICAgICB4bWk6aWQ9Il9rNFNubkx3RkVlU3dOTEsyVzAySHdBIg0KKyAgICAgICAgc3RlcmVvdHlwZVF1YWxpZmllZE5hbWU9IlN5c01MOjpQb3J0c2FuZEZsb3dzOjpDaGFuZ2VTdHJ1Y3R1cmFsRmVhdHVyZUV2ZW50Ig0KKyAgICAgICAgdXBkYXRlTmFtZT0idHJ1ZSI+DQorICAgICAgPHJlcXVpcmVkUHJvZmlsZXM+U3lzTUw8L3JlcXVpcmVkUHJvZmlsZXM+DQorICAgIDwvc3RlcmVvdHlwZXNUb0FwcGx5Pg0KKyAgPC9hZHZpY2VCaW5kaW5nc0NvbmZpZ3VyYXRpb25zPg0KKyAgPGFkdmljZUJpbmRpbmdzQ29uZmlndXJhdGlvbnMNCisgICAgICB4c2k6dHlwZT0iYXBwbHlzdGVyZW90eXBlYWR2aWNlY29uZmlndXJhdGlvbjpBcHBseVN0ZXJlb3R5cGVBZHZpY2VDb25maWd1cmF0aW9uIg0KKyAgICAgIHhtaTppZD0iX2s0U25uYndGRWVTd05MSzJXMDJId0EiDQorICAgICAgbmFtZT0iQXBwbHkgRGlyZWN0ZWRGZWF0dXJlIg0KKyAgICAgIGlkZW50aWZpZXI9Im9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5kaXJlY3RlZEZlYXR1cmUiDQorICAgICAgdGFyZ2V0PSJfazRTbXc3d0ZFZVN3TkxLMlcwMkh3QSI+DQorICAgIDxzdGVyZW90eXBlc1RvQXBwbHkNCisgICAgICAgIHhtaTppZD0iX2s0U25ucndGRWVTd05MSzJXMDJId0EiDQorICAgICAgICBzdGVyZW90eXBlUXVhbGlmaWVkTmFtZT0iU3lzTUw6OlBvcnRzYW5kRmxvd3M6OkRpcmVjdGVkRmVhdHVyZSINCisgICAgICAgIHVwZGF0ZU5hbWU9InRydWUiPg0KKyAgICAgIDxyZXF1aXJlZFByb2ZpbGVzPlN5c01MPC9yZXF1aXJlZFByb2ZpbGVzPg0KKyAgICA8L3N0ZXJlb3R5cGVzVG9BcHBseT4NCisgIDwvYWR2aWNlQmluZGluZ3NDb25maWd1cmF0aW9ucz4NCisgIDxhZHZpY2VCaW5kaW5nc0NvbmZpZ3VyYXRpb25zDQorICAgICAgeHNpOnR5cGU9ImFwcGx5c3RlcmVvdHlwZWFkdmljZWNvbmZpZ3VyYXRpb246QXBwbHlTdGVyZW90eXBlQWR2aWNlQ29uZmlndXJhdGlvbiINCisgICAgICB4bWk6aWQ9Il9rNFNubjd3RkVlU3dOTEsyVzAySHdBIg0KKyAgICAgIG5hbWU9IkFwcGx5IEludm9jYXRpb25Pbk5lc3RlZFBvcnRBY3Rpb24iDQorICAgICAgaWRlbnRpZmllcj0ib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0Lmludm9jYXRpb25Pbk5lc3RlZFBvcnRBY3Rpb24iDQorICAgICAgdGFyZ2V0PSJfazRTbXhyd0ZFZVN3TkxLMlcwMkh3QSI+DQorICAgIDxzdGVyZW90eXBlc1RvQXBwbHkNCisgICAgICAgIHhtaTppZD0iX2s0U25vTHdGRWVTd05MSzJXMDJId0EiDQorICAgICAgICBzdGVyZW90eXBlUXVhbGlmaWVkTmFtZT0iU3lzTUw6OlBvcnRzYW5kRmxvd3M6Okludm9jYXRpb25Pbk5lc3RlZFBvcnRBY3Rpb24iDQorICAgICAgICB1cGRhdGVOYW1lPSJ0cnVlIj4NCisgICAgICA8cmVxdWlyZWRQcm9maWxlcz5TeXNNTDwvcmVxdWlyZWRQcm9maWxlcz4NCisgICAgPC9zdGVyZW90eXBlc1RvQXBwbHk+DQorICA8L2FkdmljZUJpbmRpbmdzQ29uZmlndXJhdGlvbnM+DQorICA8YWR2aWNlQmluZGluZ3NDb25maWd1cmF0aW9ucw0KKyAgICAgIHhzaTp0eXBlPSJhcHBseXN0ZXJlb3R5cGVhZHZpY2Vjb25maWd1cmF0aW9uOkFwcGx5U3RlcmVvdHlwZUFkdmljZUNvbmZpZ3VyYXRpb24iDQorICAgICAgeG1pOmlkPSJfazRTbm9id0ZFZVN3TkxLMlcwMkh3QSINCisgICAgICBuYW1lPSJBcHBseSBJbnZvY2F0aW9uT25OZXN0ZWRQb3J0QWN0aW9uIg0KKyAgICAgIGlkZW50aWZpZXI9Im9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5pbnZvY2F0aW9uT25OZXN0ZWRQb3J0QWN0aW9uIg0KKyAgICAgIHRhcmdldD0iX2s0U215YndGRWVTd05MSzJXMDJId0EiPg0KKyAgICA8c3RlcmVvdHlwZXNUb0FwcGx5DQorICAgICAgICB4bWk6aWQ9Il9rNFNub3J3RkVlU3dOTEsyVzAySHdBIg0KKyAgICAgICAgc3RlcmVvdHlwZVF1YWxpZmllZE5hbWU9IlN5c01MOjpQb3J0c2FuZEZsb3dzOjpJbnZvY2F0aW9uT25OZXN0ZWRQb3J0QWN0aW9uIg0KKyAgICAgICAgdXBkYXRlTmFtZT0idHJ1ZSI+DQorICAgICAgPHJlcXVpcmVkUHJvZmlsZXM+U3lzTUw8L3JlcXVpcmVkUHJvZmlsZXM+DQorICAgIDwvc3RlcmVvdHlwZXNUb0FwcGx5Pg0KKyAgPC9hZHZpY2VCaW5kaW5nc0NvbmZpZ3VyYXRpb25zPg0KKyAgPGFkdmljZUJpbmRpbmdzQ29uZmlndXJhdGlvbnMNCisgICAgICB4c2k6dHlwZT0iYXBwbHlzdGVyZW90eXBlYWR2aWNlY29uZmlndXJhdGlvbjpBcHBseVN0ZXJlb3R5cGVBZHZpY2VDb25maWd1cmF0aW9uIg0KKyAgICAgIHhtaTppZD0iX2s0U25vN3dGRWVTd05MSzJXMDJId0EiDQorICAgICAgbmFtZT0iQXBwbHkgVHJpZ2dlck9uTmVzdGVkUG9ydCINCisgICAgICBpZGVudGlmaWVyPSJvcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQudHJpZ2dlck9uTmVzdGVkUG9ydCINCisgICAgICB0YXJnZXQ9Il9rNFNtekx3RkVlU3dOTEsyVzAySHdBIj4NCisgICAgPHN0ZXJlb3R5cGVzVG9BcHBseQ0KKyAgICAgICAgeG1pOmlkPSJfazRTbnBMd0ZFZVN3TkxLMlcwMkh3QSINCisgICAgICAgIHN0ZXJlb3R5cGVRdWFsaWZpZWROYW1lPSJTeXNNTDo6UG9ydHNhbmRGbG93czo6VHJpZ2dlck9uTmVzdGVkUG9ydCINCisgICAgICAgIHVwZGF0ZU5hbWU9InRydWUiPg0KKyAgICAgIDxyZXF1aXJlZFByb2ZpbGVzPlN5c01MPC9yZXF1aXJlZFByb2ZpbGVzPg0KKyAgICA8L3N0ZXJlb3R5cGVzVG9BcHBseT4NCisgIDwvYWR2aWNlQmluZGluZ3NDb25maWd1cmF0aW9ucz4NCisgIDxhZHZpY2VCaW5kaW5nc0NvbmZpZ3VyYXRpb25zDQorICAgICAgeHNpOnR5cGU9ImFwcGx5c3RlcmVvdHlwZWFkdmljZWNvbmZpZ3VyYXRpb246QXBwbHlTdGVyZW90eXBlQWR2aWNlQ29uZmlndXJhdGlvbiINCisgICAgICB4bWk6aWQ9Il9rNFNucGJ3RkVlU3dOTEsyVzAySHdBIg0KKyAgICAgIG5hbWU9IkFwcGx5IFRyaWdnZXJPbk5lc3RlZFBvcnQiDQorICAgICAgaWRlbnRpZmllcj0ib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LnRyaWdnZXJPbk5lc3RlZFBvcnQiDQorICAgICAgdGFyZ2V0PSJfazRTbXo3d0ZFZVN3TkxLMlcwMkh3QSI+DQorICAgIDxzdGVyZW90eXBlc1RvQXBwbHkNCisgICAgICAgIHhtaTppZD0iX2s0U25wcndGRWVTd05MSzJXMDJId0EiDQorICAgICAgICBzdGVyZW90eXBlUXVhbGlmaWVkTmFtZT0iU3lzTUw6OlBvcnRzYW5kRmxvd3M6OlRyaWdnZXJPbk5lc3RlZFBvcnQiDQorICAgICAgICB1cGRhdGVOYW1lPSJ0cnVlIj4NCisgICAgICA8cmVxdWlyZWRQcm9maWxlcz5TeXNNTDwvcmVxdWlyZWRQcm9maWxlcz4NCisgICAgPC9zdGVyZW90eXBlc1RvQXBwbHk+DQorICA8L2FkdmljZUJpbmRpbmdzQ29uZmlndXJhdGlvbnM+DQorICA8YWR2aWNlQmluZGluZ3NDb25maWd1cmF0aW9ucw0KKyAgICAgIHhzaTp0eXBlPSJhcHBseXN0ZXJlb3R5cGVhZHZpY2Vjb25maWd1cmF0aW9uOkFwcGx5U3RlcmVvdHlwZUFkdmljZUNvbmZpZ3VyYXRpb24iDQorICAgICAgeG1pOmlkPSJfazRTbnA3d0ZFZVN3TkxLMlcwMkh3QSINCisgICAgICBuYW1lPSJBcHBseSBPdmVyd3JpdGUiDQorICAgICAgaWRlbnRpZmllcj0ib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0Lm92ZXJ3cml0ZSINCisgICAgICB0YXJnZXQ9Il9rNFNtMHJ3RkVlU3dOTEsyVzAySHdBIj4NCisgICAgPHN0ZXJlb3R5cGVzVG9BcHBseQ0KKyAgICAgICAgeG1pOmlkPSJfazRTbnFMd0ZFZVN3TkxLMlcwMkh3QSINCisgICAgICAgIHN0ZXJlb3R5cGVRdWFsaWZpZWROYW1lPSJTeXNNTDo6QWN0aXZpdGllczo6T3ZlcndyaXRlIg0KKyAgICAgICAgdXBkYXRlTmFtZT0idHJ1ZSI+DQorICAgICAgPHJlcXVpcmVkUHJvZmlsZXM+U3lzTUw8L3JlcXVpcmVkUHJvZmlsZXM+DQorICAgIDwvc3RlcmVvdHlwZXNUb0FwcGx5Pg0KKyAgPC9hZHZpY2VCaW5kaW5nc0NvbmZpZ3VyYXRpb25zPg0KKyAgPGFkdmljZUJpbmRpbmdzQ29uZmlndXJhdGlvbnMNCisgICAgICB4c2k6dHlwZT0iYXBwbHlzdGVyZW90eXBlYWR2aWNlY29uZmlndXJhdGlvbjpBcHBseVN0ZXJlb3R5cGVBZHZpY2VDb25maWd1cmF0aW9uIg0KKyAgICAgIHhtaTppZD0iX2s0U25xYndGRWVTd05MSzJXMDJId0EiDQorICAgICAgbmFtZT0iQXBwbHkgQ29udHJvbE9wZXJhdG9yIg0KKyAgICAgIGlkZW50aWZpZXI9Im9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5jb250cm9sT3BlcmF0b3IiDQorICAgICAgdGFyZ2V0PSJfazRTbTFid0ZFZVN3TkxLMlcwMkh3QSI+DQorICAgIDxzdGVyZW90eXBlc1RvQXBwbHkNCisgICAgICAgIHhtaTppZD0iX2s0U25xcndGRWVTd05MSzJXMDJId0EiDQorICAgICAgICBzdGVyZW90eXBlUXVhbGlmaWVkTmFtZT0iU3lzTUw6OkFjdGl2aXRpZXM6OkNvbnRyb2xPcGVyYXRvciINCisgICAgICAgIHVwZGF0ZU5hbWU9InRydWUiPg0KKyAgICAgIDxyZXF1aXJlZFByb2ZpbGVzPlN5c01MPC9yZXF1aXJlZFByb2ZpbGVzPg0KKyAgICA8L3N0ZXJlb3R5cGVzVG9BcHBseT4NCisgIDwvYWR2aWNlQmluZGluZ3NDb25maWd1cmF0aW9ucz4NCisgIDxhZHZpY2VCaW5kaW5nc0NvbmZpZ3VyYXRpb25zDQorICAgICAgeHNpOnR5cGU9ImFwcGx5c3RlcmVvdHlwZWFkdmljZWNvbmZpZ3VyYXRpb246QXBwbHlTdGVyZW90eXBlQWR2aWNlQ29uZmlndXJhdGlvbiINCisgICAgICB4bWk6aWQ9Il9rNFNucTd3RkVlU3dOTEsyVzAySHdBIg0KKyAgICAgIG5hbWU9IkFwcGx5IENvbnRyb2xPcGVyYXRvciINCisgICAgICBpZGVudGlmaWVyPSJvcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuY29udHJvbE9wZXJhdG9yIg0KKyAgICAgIHRhcmdldD0iX2s0U20yTHdGRWVTd05MSzJXMDJId0EiPg0KKyAgICA8c3RlcmVvdHlwZXNUb0FwcGx5DQorICAgICAgICB4bWk6aWQ9Il9rNFNuckx3RkVlU3dOTEsyVzAySHdBIg0KKyAgICAgICAgc3RlcmVvdHlwZVF1YWxpZmllZE5hbWU9IlN5c01MOjpBY3Rpdml0aWVzOjpDb250cm9sT3BlcmF0b3IiDQorICAgICAgICB1cGRhdGVOYW1lPSJ0cnVlIj4NCisgICAgICA8cmVxdWlyZWRQcm9maWxlcz5TeXNNTDwvcmVxdWlyZWRQcm9maWxlcz4NCisgICAgPC9zdGVyZW90eXBlc1RvQXBwbHk+DQorICA8L2FkdmljZUJpbmRpbmdzQ29uZmlndXJhdGlvbnM+DQorICA8YWR2aWNlQmluZGluZ3NDb25maWd1cmF0aW9ucw0KKyAgICAgIHhzaTp0eXBlPSJhcHBseXN0ZXJlb3R5cGVhZHZpY2Vjb25maWd1cmF0aW9uOkFwcGx5U3RlcmVvdHlwZUFkdmljZUNvbmZpZ3VyYXRpb24iDQorICAgICAgeG1pOmlkPSJfazRTbnJid0ZFZVN3TkxLMlcwMkh3QSINCisgICAgICBuYW1lPSJBcHBseSBSYXRlIg0KKyAgICAgIGlkZW50aWZpZXI9Im9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5yYXRlIg0KKyAgICAgIHRhcmdldD0iX2s0U20yN3dGRWVTd05MSzJXMDJId0EiPg0KKyAgICA8c3RlcmVvdHlwZXNUb0FwcGx5DQorICAgICAgICB4bWk6aWQ9Il9rNFNucnJ3RkVlU3dOTEsyVzAySHdBIg0KKyAgICAgICAgc3RlcmVvdHlwZVF1YWxpZmllZE5hbWU9IlN5c01MOjpBY3Rpdml0aWVzOjpSYXRlIg0KKyAgICAgICAgdXBkYXRlTmFtZT0idHJ1ZSI+DQorICAgICAgPHJlcXVpcmVkUHJvZmlsZXM+U3lzTUw8L3JlcXVpcmVkUHJvZmlsZXM+DQorICAgIDwvc3RlcmVvdHlwZXNUb0FwcGx5Pg0KKyAgPC9hZHZpY2VCaW5kaW5nc0NvbmZpZ3VyYXRpb25zPg0KKyAgPGFkdmljZUJpbmRpbmdzQ29uZmlndXJhdGlvbnMNCisgICAgICB4c2k6dHlwZT0iYXBwbHlzdGVyZW90eXBlYWR2aWNlY29uZmlndXJhdGlvbjpBcHBseVN0ZXJlb3R5cGVBZHZpY2VDb25maWd1cmF0aW9uIg0KKyAgICAgIHhtaTppZD0iX2s0U25yN3dGRWVTd05MSzJXMDJId0EiDQorICAgICAgbmFtZT0iQXBwbHkgUmF0ZSINCisgICAgICBpZGVudGlmaWVyPSJvcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQucmF0ZSINCisgICAgICB0YXJnZXQ9Il9rNFNtM3J3RkVlU3dOTEsyVzAySHdBIj4NCisgICAgPHN0ZXJlb3R5cGVzVG9BcHBseQ0KKyAgICAgICAgeG1pOmlkPSJfazRTbnNMd0ZFZVN3TkxLMlcwMkh3QSINCisgICAgICAgIHN0ZXJlb3R5cGVRdWFsaWZpZWROYW1lPSJTeXNNTDo6QWN0aXZpdGllczo6UmF0ZSINCisgICAgICAgIHVwZGF0ZU5hbWU9InRydWUiPg0KKyAgICAgIDxyZXF1aXJlZFByb2ZpbGVzPlN5c01MPC9yZXF1aXJlZFByb2ZpbGVzPg0KKyAgICA8L3N0ZXJlb3R5cGVzVG9BcHBseT4NCisgIDwvYWR2aWNlQmluZGluZ3NDb25maWd1cmF0aW9ucz4NCisgIDxhZHZpY2VCaW5kaW5nc0NvbmZpZ3VyYXRpb25zDQorICAgICAgeHNpOnR5cGU9ImFwcGx5c3RlcmVvdHlwZWFkdmljZWNvbmZpZ3VyYXRpb246QXBwbHlTdGVyZW90eXBlQWR2aWNlQ29uZmlndXJhdGlvbiINCisgICAgICB4bWk6aWQ9Il9rNFNuc2J3RkVlU3dOTEsyVzAySHdBIg0KKyAgICAgIG5hbWU9IkFwcGx5IE5vQnVmZmVyIg0KKyAgICAgIGlkZW50aWZpZXI9Im9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5ub0J1ZmZlciINCisgICAgICB0YXJnZXQ9Il9rNFNtNGJ3RkVlU3dOTEsyVzAySHdBIj4NCisgICAgPHN0ZXJlb3R5cGVzVG9BcHBseQ0KKyAgICAgICAgeG1pOmlkPSJfazRTbnNyd0ZFZVN3TkxLMlcwMkh3QSINCisgICAgICAgIHN0ZXJlb3R5cGVRdWFsaWZpZWROYW1lPSJTeXNNTDo6QWN0aXZpdGllczo6Tm9CdWZmZXIiDQorICAgICAgICB1cGRhdGVOYW1lPSJ0cnVlIj4NCisgICAgICA8cmVxdWlyZWRQcm9maWxlcz5TeXNNTDwvcmVxdWlyZWRQcm9maWxlcz4NCisgICAgPC9zdGVyZW90eXBlc1RvQXBwbHk+DQorICA8L2FkdmljZUJpbmRpbmdzQ29uZmlndXJhdGlvbnM+DQorICA8YWR2aWNlQmluZGluZ3NDb25maWd1cmF0aW9ucw0KKyAgICAgIHhzaTp0eXBlPSJhcHBseXN0ZXJlb3R5cGVhZHZpY2Vjb25maWd1cmF0aW9uOkFwcGx5U3RlcmVvdHlwZUFkdmljZUNvbmZpZ3VyYXRpb24iDQorICAgICAgeG1pOmlkPSJfazRTbnM3d0ZFZVN3TkxLMlcwMkh3QSINCisgICAgICBuYW1lPSJBcHBseSBEaXNjcmV0ZSINCisgICAgICBpZGVudGlmaWVyPSJvcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuZGlzY3JldGUiDQorICAgICAgdGFyZ2V0PSJfazRTbTVMd0ZFZVN3TkxLMlcwMkh3QSI+DQorICAgIDxzdGVyZW90eXBlc1RvQXBwbHkNCisgICAgICAgIHhtaTppZD0iX2s0U250THdGRWVTd05MSzJXMDJId0EiDQorICAgICAgICBzdGVyZW90eXBlUXVhbGlmaWVkTmFtZT0iU3lzTUw6OkFjdGl2aXRpZXM6OkRpc2NyZXRlIg0KKyAgICAgICAgdXBkYXRlTmFtZT0idHJ1ZSI+DQorICAgICAgPHJlcXVpcmVkUHJvZmlsZXM+U3lzTUw8L3JlcXVpcmVkUHJvZmlsZXM+DQorICAgIDwvc3RlcmVvdHlwZXNUb0FwcGx5Pg0KKyAgPC9hZHZpY2VCaW5kaW5nc0NvbmZpZ3VyYXRpb25zPg0KKyAgPGFkdmljZUJpbmRpbmdzQ29uZmlndXJhdGlvbnMNCisgICAgICB4c2k6dHlwZT0iYXBwbHlzdGVyZW90eXBlYWR2aWNlY29uZmlndXJhdGlvbjpBcHBseVN0ZXJlb3R5cGVBZHZpY2VDb25maWd1cmF0aW9uIg0KKyAgICAgIHhtaTppZD0iX2s0U250YndGRWVTd05MSzJXMDJId0EiDQorICAgICAgbmFtZT0iQXBwbHkgRGlzY3JldGUiDQorICAgICAgaWRlbnRpZmllcj0ib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LmRpc2NyZXRlIg0KKyAgICAgIHRhcmdldD0iX2s0U201N3dGRWVTd05MSzJXMDJId0EiPg0KKyAgICA8c3RlcmVvdHlwZXNUb0FwcGx5DQorICAgICAgICB4bWk6aWQ9Il9rNFNudHJ3RkVlU3dOTEsyVzAySHdBIg0KKyAgICAgICAgc3RlcmVvdHlwZVF1YWxpZmllZE5hbWU9IlN5c01MOjpBY3Rpdml0aWVzOjpEaXNjcmV0ZSINCisgICAgICAgIHVwZGF0ZU5hbWU9InRydWUiPg0KKyAgICAgIDxyZXF1aXJlZFByb2ZpbGVzPlN5c01MPC9yZXF1aXJlZFByb2ZpbGVzPg0KKyAgICA8L3N0ZXJlb3R5cGVzVG9BcHBseT4NCisgIDwvYWR2aWNlQmluZGluZ3NDb25maWd1cmF0aW9ucz4NCisgIDxhZHZpY2VCaW5kaW5nc0NvbmZpZ3VyYXRpb25zDQorICAgICAgeHNpOnR5cGU9ImFwcGx5c3RlcmVvdHlwZWFkdmljZWNvbmZpZ3VyYXRpb246QXBwbHlTdGVyZW90eXBlQWR2aWNlQ29uZmlndXJhdGlvbiINCisgICAgICB4bWk6aWQ9Il9rNFNudDd3RkVlU3dOTEsyVzAySHdBIg0KKyAgICAgIG5hbWU9IkFwcGx5IENvbnRpbnVvdXMiDQorICAgICAgaWRlbnRpZmllcj0ib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LmNvbnRpbnVvdXMiDQorICAgICAgdGFyZ2V0PSJfazRTbTZyd0ZFZVN3TkxLMlcwMkh3QSI+DQorICAgIDxzdGVyZW90eXBlc1RvQXBwbHkNCisgICAgICAgIHhtaTppZD0iX2s0U251THdGRWVTd05MSzJXMDJId0EiDQorICAgICAgICBzdGVyZW90eXBlUXVhbGlmaWVkTmFtZT0iU3lzTUw6OkFjdGl2aXRpZXM6OkNvbnRpbnVvdXMiDQorICAgICAgICB1cGRhdGVOYW1lPSJ0cnVlIj4NCisgICAgICA8cmVxdWlyZWRQcm9maWxlcz5TeXNNTDwvcmVxdWlyZWRQcm9maWxlcz4NCisgICAgPC9zdGVyZW90eXBlc1RvQXBwbHk+DQorICA8L2FkdmljZUJpbmRpbmdzQ29uZmlndXJhdGlvbnM+DQorICA8YWR2aWNlQmluZGluZ3NDb25maWd1cmF0aW9ucw0KKyAgICAgIHhzaTp0eXBlPSJhcHBseXN0ZXJlb3R5cGVhZHZpY2Vjb25maWd1cmF0aW9uOkFwcGx5U3RlcmVvdHlwZUFkdmljZUNvbmZpZ3VyYXRpb24iDQorICAgICAgeG1pOmlkPSJfazRTbnVid0ZFZVN3TkxLMlcwMkh3QSINCisgICAgICBuYW1lPSJBcHBseSBDb250aW51b3VzIg0KKyAgICAgIGlkZW50aWZpZXI9Im9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5jb250aW51b3VzIg0KKyAgICAgIHRhcmdldD0iX2s0U203YndGRWVTd05MSzJXMDJId0EiPg0KKyAgICA8c3RlcmVvdHlwZXNUb0FwcGx5DQorICAgICAgICB4bWk6aWQ9Il9rNFNudXJ3RkVlU3dOTEsyVzAySHdBIg0KKyAgICAgICAgc3RlcmVvdHlwZVF1YWxpZmllZE5hbWU9IlN5c01MOjpBY3Rpdml0aWVzOjpDb250aW51b3VzIg0KKyAgICAgICAgdXBkYXRlTmFtZT0idHJ1ZSI+DQorICAgICAgPHJlcXVpcmVkUHJvZmlsZXM+U3lzTUw8L3JlcXVpcmVkUHJvZmlsZXM+DQorICAgIDwvc3RlcmVvdHlwZXNUb0FwcGx5Pg0KKyAgPC9hZHZpY2VCaW5kaW5nc0NvbmZpZ3VyYXRpb25zPg0KKyAgPGFkdmljZUJpbmRpbmdzQ29uZmlndXJhdGlvbnMNCisgICAgICB4c2k6dHlwZT0iYXBwbHlzdGVyZW90eXBlYWR2aWNlY29uZmlndXJhdGlvbjpBcHBseVN0ZXJlb3R5cGVBZHZpY2VDb25maWd1cmF0aW9uIg0KKyAgICAgIHhtaTppZD0iX2s0U251N3dGRWVTd05MSzJXMDJId0EiDQorICAgICAgbmFtZT0iQXBwbHkgUHJvYmFiaWxpdHkiDQorICAgICAgaWRlbnRpZmllcj0ib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LnByb2JhYmlsaXR5Ig0KKyAgICAgIHRhcmdldD0iX2s0U204THdGRWVTd05MSzJXMDJId0EiPg0KKyAgICA8c3RlcmVvdHlwZXNUb0FwcGx5DQorICAgICAgICB4bWk6aWQ9Il9rNFNudkx3RkVlU3dOTEsyVzAySHdBIg0KKyAgICAgICAgc3RlcmVvdHlwZVF1YWxpZmllZE5hbWU9IlN5c01MOjpBY3Rpdml0aWVzOjpQcm9iYWJpbGl0eSINCisgICAgICAgIHVwZGF0ZU5hbWU9InRydWUiPg0KKyAgICAgIDxyZXF1aXJlZFByb2ZpbGVzPlN5c01MPC9yZXF1aXJlZFByb2ZpbGVzPg0KKyAgICA8L3N0ZXJlb3R5cGVzVG9BcHBseT4NCisgIDwvYWR2aWNlQmluZGluZ3NDb25maWd1cmF0aW9ucz4NCisgIDxhZHZpY2VCaW5kaW5nc0NvbmZpZ3VyYXRpb25zDQorICAgICAgeHNpOnR5cGU9ImFwcGx5c3RlcmVvdHlwZWFkdmljZWNvbmZpZ3VyYXRpb246QXBwbHlTdGVyZW90eXBlQWR2aWNlQ29uZmlndXJhdGlvbiINCisgICAgICB4bWk6aWQ9Il9rNFNudmJ3RkVlU3dOTEsyVzAySHdBIg0KKyAgICAgIG5hbWU9IkFwcGx5IFByb2JhYmlsaXR5Ig0KKyAgICAgIGlkZW50aWZpZXI9Im9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5wcm9iYWJpbGl0eSINCisgICAgICB0YXJnZXQ9Il9rNFNtODd3RkVlU3dOTEsyVzAySHdBIj4NCisgICAgPHN0ZXJlb3R5cGVzVG9BcHBseQ0KKyAgICAgICAgeG1pOmlkPSJfazRTbnZyd0ZFZVN3TkxLMlcwMkh3QSINCisgICAgICAgIHN0ZXJlb3R5cGVRdWFsaWZpZWROYW1lPSJTeXNNTDo6QWN0aXZpdGllczo6UHJvYmFiaWxpdHkiDQorICAgICAgICB1cGRhdGVOYW1lPSJ0cnVlIj4NCisgICAgICA8cmVxdWlyZWRQcm9maWxlcz5TeXNNTDwvcmVxdWlyZWRQcm9maWxlcz4NCisgICAgPC9zdGVyZW90eXBlc1RvQXBwbHk+DQorICA8L2FkdmljZUJpbmRpbmdzQ29uZmlndXJhdGlvbnM+DQorICA8YWR2aWNlQmluZGluZ3NDb25maWd1cmF0aW9ucw0KKyAgICAgIHhzaTp0eXBlPSJhcHBseXN0ZXJlb3R5cGVhZHZpY2Vjb25maWd1cmF0aW9uOkFwcGx5U3RlcmVvdHlwZUFkdmljZUNvbmZpZ3VyYXRpb24iDQorICAgICAgeG1pOmlkPSJfazRTbnY3d0ZFZVN3TkxLMlcwMkh3QSINCisgICAgICBuYW1lPSJBcHBseSBPcHRpb25hbCINCisgICAgICBpZGVudGlmaWVyPSJvcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQub3B0aW9uYWwiDQorICAgICAgdGFyZ2V0PSJfazRTbTlyd0ZFZVN3TkxLMlcwMkh3QSI+DQorICAgIDxzdGVyZW90eXBlc1RvQXBwbHkNCisgICAgICAgIHhtaTppZD0iX2s0U253THdGRWVTd05MSzJXMDJId0EiDQorICAgICAgICBzdGVyZW90eXBlUXVhbGlmaWVkTmFtZT0iU3lzTUw6OkFjdGl2aXRpZXM6Ok9wdGlvbmFsIg0KKyAgICAgICAgdXBkYXRlTmFtZT0idHJ1ZSI+DQorICAgICAgPHJlcXVpcmVkUHJvZmlsZXM+U3lzTUw8L3JlcXVpcmVkUHJvZmlsZXM+DQorICAgIDwvc3RlcmVvdHlwZXNUb0FwcGx5Pg0KKyAgPC9hZHZpY2VCaW5kaW5nc0NvbmZpZ3VyYXRpb25zPg0KKyAgPGFkdmljZUJpbmRpbmdzQ29uZmlndXJhdGlvbnMNCisgICAgICB4c2k6dHlwZT0iYXBwbHlzdGVyZW90eXBlYWR2aWNlY29uZmlndXJhdGlvbjpBcHBseVN0ZXJlb3R5cGVBZHZpY2VDb25maWd1cmF0aW9uIg0KKyAgICAgIHhtaTppZD0iX2s0U253YndGRWVTd05MSzJXMDJId0EiDQorICAgICAgbmFtZT0iQXBwbHkgUmF0aW9uYWxlIg0KKyAgICAgIGlkZW50aWZpZXI9Im9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5yYXRpb25hbGUiDQorICAgICAgdGFyZ2V0PSJfazRTbS1id0ZFZVN3TkxLMlcwMkh3QSI+DQorICAgIDxzdGVyZW90eXBlc1RvQXBwbHkNCisgICAgICAgIHhtaTppZD0iX2s0U253cndGRWVTd05MSzJXMDJId0EiDQorICAgICAgICBzdGVyZW90eXBlUXVhbGlmaWVkTmFtZT0iU3lzTUw6Ok1vZGVsRWxlbWVudHM6OlJhdGlvbmFsZSINCisgICAgICAgIHVwZGF0ZU5hbWU9InRydWUiPg0KKyAgICAgIDxyZXF1aXJlZFByb2ZpbGVzPlN5c01MPC9yZXF1aXJlZFByb2ZpbGVzPg0KKyAgICA8L3N0ZXJlb3R5cGVzVG9BcHBseT4NCisgIDwvYWR2aWNlQmluZGluZ3NDb25maWd1cmF0aW9ucz4NCisgIDxhZHZpY2VCaW5kaW5nc0NvbmZpZ3VyYXRpb25zDQorICAgICAgeHNpOnR5cGU9ImFwcGx5c3RlcmVvdHlwZWFkdmljZWNvbmZpZ3VyYXRpb246QXBwbHlTdGVyZW90eXBlQWR2aWNlQ29uZmlndXJhdGlvbiINCisgICAgICB4bWk6aWQ9Il9rNFNudzd3RkVlU3dOTEsyVzAySHdBIg0KKyAgICAgIG5hbWU9IkFwcGx5IFZpZXciDQorICAgICAgaWRlbnRpZmllcj0ib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LnZpZXciDQorICAgICAgdGFyZ2V0PSJfazRTbV9Md0ZFZVN3TkxLMlcwMkh3QSI+DQorICAgIDxzdGVyZW90eXBlc1RvQXBwbHkNCisgICAgICAgIHhtaTppZD0iX2s0U254THdGRWVTd05MSzJXMDJId0EiDQorICAgICAgICBzdGVyZW90eXBlUXVhbGlmaWVkTmFtZT0iU3lzTUw6Ok1vZGVsRWxlbWVudHM6OlZpZXciDQorICAgICAgICB1cGRhdGVOYW1lPSJ0cnVlIj4NCisgICAgICA8cmVxdWlyZWRQcm9maWxlcz5TeXNNTDwvcmVxdWlyZWRQcm9maWxlcz4NCisgICAgPC9zdGVyZW90eXBlc1RvQXBwbHk+DQorICA8L2FkdmljZUJpbmRpbmdzQ29uZmlndXJhdGlvbnM+DQorICA8YWR2aWNlQmluZGluZ3NDb25maWd1cmF0aW9ucw0KKyAgICAgIHhzaTp0eXBlPSJhcHBseXN0ZXJlb3R5cGVhZHZpY2Vjb25maWd1cmF0aW9uOkFwcGx5U3RlcmVvdHlwZUFkdmljZUNvbmZpZ3VyYXRpb24iDQorICAgICAgeG1pOmlkPSJfazRTbnhid0ZFZVN3TkxLMlcwMkh3QSINCisgICAgICBuYW1lPSJBcHBseSBWaWV3Ig0KKyAgICAgIGlkZW50aWZpZXI9Im9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC52aWV3Ig0KKyAgICAgIHRhcmdldD0iX2s0U21fN3dGRWVTd05MSzJXMDJId0EiPg0KKyAgICA8c3RlcmVvdHlwZXNUb0FwcGx5DQorICAgICAgICB4bWk6aWQ9Il9rNFNueHJ3RkVlU3dOTEsyVzAySHdBIg0KKyAgICAgICAgc3RlcmVvdHlwZVF1YWxpZmllZE5hbWU9IlN5c01MOjpNb2RlbEVsZW1lbnRzOjpWaWV3Ig0KKyAgICAgICAgdXBkYXRlTmFtZT0idHJ1ZSI+DQorICAgICAgPHJlcXVpcmVkUHJvZmlsZXM+U3lzTUw8L3JlcXVpcmVkUHJvZmlsZXM+DQorICAgIDwvc3RlcmVvdHlwZXNUb0FwcGx5Pg0KKyAgPC9hZHZpY2VCaW5kaW5nc0NvbmZpZ3VyYXRpb25zPg0KKyAgPGFkdmljZUJpbmRpbmdzQ29uZmlndXJhdGlvbnMNCisgICAgICB4c2k6dHlwZT0iYXBwbHlzdGVyZW90eXBlYWR2aWNlY29uZmlndXJhdGlvbjpBcHBseVN0ZXJlb3R5cGVBZHZpY2VDb25maWd1cmF0aW9uIg0KKyAgICAgIHhtaTppZD0iX2s0U254N3dGRWVTd05MSzJXMDJId0EiDQorICAgICAgbmFtZT0iQXBwbHkgQ29uZm9ybSINCisgICAgICBpZGVudGlmaWVyPSJvcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuY29uZm9ybSINCisgICAgICB0YXJnZXQ9Il9rNFNuQXJ3RkVlU3dOTEsyVzAySHdBIj4NCisgICAgPHN0ZXJlb3R5cGVzVG9BcHBseQ0KKyAgICAgICAgeG1pOmlkPSJfazRTbnlMd0ZFZVN3TkxLMlcwMkh3QSINCisgICAgICAgIHN0ZXJlb3R5cGVRdWFsaWZpZWROYW1lPSJTeXNNTDo6TW9kZWxFbGVtZW50czo6Q29uZm9ybSINCisgICAgICAgIHVwZGF0ZU5hbWU9InRydWUiPg0KKyAgICAgIDxyZXF1aXJlZFByb2ZpbGVzPlN5c01MPC9yZXF1aXJlZFByb2ZpbGVzPg0KKyAgICA8L3N0ZXJlb3R5cGVzVG9BcHBseT4NCisgIDwvYWR2aWNlQmluZGluZ3NDb25maWd1cmF0aW9ucz4NCisgIDxhZHZpY2VCaW5kaW5nc0NvbmZpZ3VyYXRpb25zDQorICAgICAgeHNpOnR5cGU9ImFwcGx5c3RlcmVvdHlwZWFkdmljZWNvbmZpZ3VyYXRpb246QXBwbHlTdGVyZW90eXBlQWR2aWNlQ29uZmlndXJhdGlvbiINCisgICAgICB4bWk6aWQ9Il9rNFNueWJ3RkVlU3dOTEsyVzAySHdBIg0KKyAgICAgIG5hbWU9IkFwcGx5IENvbmZvcm0iDQorICAgICAgaWRlbnRpZmllcj0ib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LmNvbmZvcm0iDQorICAgICAgdGFyZ2V0PSJfazRTbkJid0ZFZVN3TkxLMlcwMkh3QSI+DQorICAgIDxzdGVyZW90eXBlc1RvQXBwbHkNCisgICAgICAgIHhtaTppZD0iX2s0U255cndGRWVTd05MSzJXMDJId0EiDQorICAgICAgICBzdGVyZW90eXBlUXVhbGlmaWVkTmFtZT0iU3lzTUw6Ok1vZGVsRWxlbWVudHM6OkNvbmZvcm0iDQorICAgICAgICB1cGRhdGVOYW1lPSJ0cnVlIj4NCisgICAgICA8cmVxdWlyZWRQcm9maWxlcz5TeXNNTDwvcmVxdWlyZWRQcm9maWxlcz4NCisgICAgPC9zdGVyZW90eXBlc1RvQXBwbHk+DQorICA8L2FkdmljZUJpbmRpbmdzQ29uZmlndXJhdGlvbnM+DQorICA8YWR2aWNlQmluZGluZ3NDb25maWd1cmF0aW9ucw0KKyAgICAgIHhzaTp0eXBlPSJhcHBseXN0ZXJlb3R5cGVhZHZpY2Vjb25maWd1cmF0aW9uOkFwcGx5U3RlcmVvdHlwZUFkdmljZUNvbmZpZ3VyYXRpb24iDQorICAgICAgeG1pOmlkPSJfazRTbnk3d0ZFZVN3TkxLMlcwMkh3QSINCisgICAgICBuYW1lPSJBcHBseSBQcm9ibGVtIg0KKyAgICAgIGlkZW50aWZpZXI9Im9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5wcm9ibGVtIg0KKyAgICAgIHRhcmdldD0iX2s0U25DTHdGRWVTd05MSzJXMDJId0EiPg0KKyAgICA8c3RlcmVvdHlwZXNUb0FwcGx5DQorICAgICAgICB4bWk6aWQ9Il9rNFNuekx3RkVlU3dOTEsyVzAySHdBIg0KKyAgICAgICAgc3RlcmVvdHlwZVF1YWxpZmllZE5hbWU9IlN5c01MOjpNb2RlbEVsZW1lbnRzOjpQcm9ibGVtIg0KKyAgICAgICAgdXBkYXRlTmFtZT0idHJ1ZSI+DQorICAgICAgPHJlcXVpcmVkUHJvZmlsZXM+U3lzTUw8L3JlcXVpcmVkUHJvZmlsZXM+DQorICAgIDwvc3RlcmVvdHlwZXNUb0FwcGx5Pg0KKyAgPC9hZHZpY2VCaW5kaW5nc0NvbmZpZ3VyYXRpb25zPg0KKyAgPGFkdmljZUJpbmRpbmdzQ29uZmlndXJhdGlvbnMNCisgICAgICB4c2k6dHlwZT0iYXBwbHlzdGVyZW90eXBlYWR2aWNlY29uZmlndXJhdGlvbjpBcHBseVN0ZXJlb3R5cGVBZHZpY2VDb25maWd1cmF0aW9uIg0KKyAgICAgIHhtaTppZD0iX2s0U256YndGRWVTd05MSzJXMDJId0EiDQorICAgICAgbmFtZT0iQXBwbHkgVmlld1BvaW50Ig0KKyAgICAgIGlkZW50aWZpZXI9Im9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC52aWV3UG9pbnQiDQorICAgICAgdGFyZ2V0PSJfazRTbkM3d0ZFZVN3TkxLMlcwMkh3QSI+DQorICAgIDxzdGVyZW90eXBlc1RvQXBwbHkNCisgICAgICAgIHhtaTppZD0iX2s0U256cndGRWVTd05MSzJXMDJId0EiDQorICAgICAgICBzdGVyZW90eXBlUXVhbGlmaWVkTmFtZT0iU3lzTUw6Ok1vZGVsRWxlbWVudHM6OlZpZXdQb2ludCINCisgICAgICAgIHVwZGF0ZU5hbWU9InRydWUiPg0KKyAgICAgIDxyZXF1aXJlZFByb2ZpbGVzPlN5c01MPC9yZXF1aXJlZFByb2ZpbGVzPg0KKyAgICA8L3N0ZXJlb3R5cGVzVG9BcHBseT4NCisgIDwvYWR2aWNlQmluZGluZ3NDb25maWd1cmF0aW9ucz4NCisgIDxhZHZpY2VCaW5kaW5nc0NvbmZpZ3VyYXRpb25zDQorICAgICAgeHNpOnR5cGU9ImFwcGx5c3RlcmVvdHlwZWFkdmljZWNvbmZpZ3VyYXRpb246QXBwbHlTdGVyZW90eXBlQWR2aWNlQ29uZmlndXJhdGlvbiINCisgICAgICB4bWk6aWQ9Il9rNFNuejd3RkVlU3dOTEsyVzAySHdBIg0KKyAgICAgIG5hbWU9IkFwcGx5IFN0YWtlaG9sZGVyIg0KKyAgICAgIGlkZW50aWZpZXI9Im9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5zdGFrZWhvbGRlciINCisgICAgICB0YXJnZXQ9Il9rNFNuRHJ3RkVlU3dOTEsyVzAySHdBIj4NCisgICAgPHN0ZXJlb3R5cGVzVG9BcHBseQ0KKyAgICAgICAgeG1pOmlkPSJfazRTbjBMd0ZFZVN3TkxLMlcwMkh3QSINCisgICAgICAgIHN0ZXJlb3R5cGVRdWFsaWZpZWROYW1lPSJTeXNNTDo6TW9kZWxFbGVtZW50czo6U3Rha2Vob2xkZXIiDQorICAgICAgICB1cGRhdGVOYW1lPSJ0cnVlIj4NCisgICAgICA8cmVxdWlyZWRQcm9maWxlcz5TeXNNTDwvcmVxdWlyZWRQcm9maWxlcz4NCisgICAgPC9zdGVyZW90eXBlc1RvQXBwbHk+DQorICA8L2FkdmljZUJpbmRpbmdzQ29uZmlndXJhdGlvbnM+DQorICA8YWR2aWNlQmluZGluZ3NDb25maWd1cmF0aW9ucw0KKyAgICAgIHhzaTp0eXBlPSJhcHBseXN0ZXJlb3R5cGVhZHZpY2Vjb25maWd1cmF0aW9uOkFwcGx5U3RlcmVvdHlwZUFkdmljZUNvbmZpZ3VyYXRpb24iDQorICAgICAgeG1pOmlkPSJfazRTbjBid0ZFZVN3TkxLMlcwMkh3QSINCisgICAgICBuYW1lPSJBcHBseSBFeHBvc2UiDQorICAgICAgaWRlbnRpZmllcj0ib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LmV4cG9zZSINCisgICAgICB0YXJnZXQ9Il9rNFNuRWJ3RkVlU3dOTEsyVzAySHdBIj4NCisgICAgPHN0ZXJlb3R5cGVzVG9BcHBseQ0KKyAgICAgICAgeG1pOmlkPSJfazRTbjByd0ZFZVN3TkxLMlcwMkh3QSINCisgICAgICAgIHN0ZXJlb3R5cGVRdWFsaWZpZWROYW1lPSJTeXNNTDo6TW9kZWxFbGVtZW50czo6RXhwb3NlIg0KKyAgICAgICAgdXBkYXRlTmFtZT0idHJ1ZSI+DQorICAgICAgPHJlcXVpcmVkUHJvZmlsZXM+U3lzTUw8L3JlcXVpcmVkUHJvZmlsZXM+DQorICAgIDwvc3RlcmVvdHlwZXNUb0FwcGx5Pg0KKyAgPC9hZHZpY2VCaW5kaW5nc0NvbmZpZ3VyYXRpb25zPg0KKyAgPGFkdmljZUJpbmRpbmdzQ29uZmlndXJhdGlvbnMNCisgICAgICB4c2k6dHlwZT0iYXBwbHlzdGVyZW90eXBlYWR2aWNlY29uZmlndXJhdGlvbjpBcHBseVN0ZXJlb3R5cGVBZHZpY2VDb25maWd1cmF0aW9uIg0KKyAgICAgIHhtaTppZD0iX2s0U24wN3dGRWVTd05MSzJXMDJId0EiDQorICAgICAgbmFtZT0iQXBwbHkgRWxlbWVudEdyb3VwIg0KKyAgICAgIGlkZW50aWZpZXI9Im9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5lbGVtZW50R3JvdXAiDQorICAgICAgdGFyZ2V0PSJfazRTbkZMd0ZFZVN3TkxLMlcwMkh3QSI+DQorICAgIDxzdGVyZW90eXBlc1RvQXBwbHkNCisgICAgICAgIHhtaTppZD0iX2s0U24xTHdGRWVTd05MSzJXMDJId0EiDQorICAgICAgICBzdGVyZW90eXBlUXVhbGlmaWVkTmFtZT0iU3lzTUw6Ok1vZGVsRWxlbWVudHM6OkVsZW1lbnRHcm91cCINCisgICAgICAgIHVwZGF0ZU5hbWU9InRydWUiPg0KKyAgICAgIDxyZXF1aXJlZFByb2ZpbGVzPlN5c01MPC9yZXF1aXJlZFByb2ZpbGVzPg0KKyAgICA8L3N0ZXJlb3R5cGVzVG9BcHBseT4NCisgIDwvYWR2aWNlQmluZGluZ3NDb25maWd1cmF0aW9ucz4NCisgIDxhZHZpY2VCaW5kaW5nc0NvbmZpZ3VyYXRpb25zDQorICAgICAgeHNpOnR5cGU9ImFwcGx5c3RlcmVvdHlwZWFkdmljZWNvbmZpZ3VyYXRpb246QXBwbHlTdGVyZW90eXBlQWR2aWNlQ29uZmlndXJhdGlvbiINCisgICAgICB4bWk6aWQ9Il9rNFNuMWJ3RkVlU3dOTEsyVzAySHdBIg0KKyAgICAgIG5hbWU9IkFwcGx5IENvbnN0cmFpbnRCbG9jayINCisgICAgICBpZGVudGlmaWVyPSJvcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuY29uc3RyYWludEJsb2NrIg0KKyAgICAgIHRhcmdldD0iX2s0U25GN3dGRWVTd05MSzJXMDJId0EiPg0KKyAgICA8c3RlcmVvdHlwZXNUb0FwcGx5DQorICAgICAgICB4bWk6aWQ9Il9rNFNuMXJ3RkVlU3dOTEsyVzAySHdBIg0KKyAgICAgICAgc3RlcmVvdHlwZVF1YWxpZmllZE5hbWU9IlN5c01MOjpDb25zdHJhaW50QmxvY2tzOjpDb25zdHJhaW50QmxvY2siPg0KKyAgICAgIDxyZXF1aXJlZFByb2ZpbGVzPlN5c01MPC9yZXF1aXJlZFByb2ZpbGVzPg0KKyAgICA8L3N0ZXJlb3R5cGVzVG9BcHBseT4NCisgIDwvYWR2aWNlQmluZGluZ3NDb25maWd1cmF0aW9ucz4NCisgIDxhZHZpY2VCaW5kaW5nc0NvbmZpZ3VyYXRpb25zDQorICAgICAgeHNpOnR5cGU9ImFwcGx5c3RlcmVvdHlwZWFkdmljZWNvbmZpZ3VyYXRpb246QXBwbHlTdGVyZW90eXBlQWR2aWNlQ29uZmlndXJhdGlvbiINCisgICAgICB4bWk6aWQ9Il9rNFNuMTd3RkVlU3dOTEsyVzAySHdBIg0KKyAgICAgIG5hbWU9IkFwcGx5IEFsbG9jYXRlQWN0aXZpdHlQYXJ0aXRpb24iDQorICAgICAgaWRlbnRpZmllcj0ib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LmFsbG9jYXRlQWN0aXZpdHlQYXJ0aXRpb24iDQorICAgICAgdGFyZ2V0PSJfazRTbkdyd0ZFZVN3TkxLMlcwMkh3QSI+DQorICAgIDxzdGVyZW90eXBlc1RvQXBwbHkNCisgICAgICAgIHhtaTppZD0iX2s0U24yTHdGRWVTd05MSzJXMDJId0EiDQorICAgICAgICBzdGVyZW90eXBlUXVhbGlmaWVkTmFtZT0iU3lzTUw6OkFsbG9jYXRpb25zOjpBbGxvY2F0ZUFjdGl2aXR5UGFydGl0aW9uIg0KKyAgICAgICAgdXBkYXRlTmFtZT0idHJ1ZSI+DQorICAgICAgPHJlcXVpcmVkUHJvZmlsZXM+U3lzTUw8L3JlcXVpcmVkUHJvZmlsZXM+DQorICAgIDwvc3RlcmVvdHlwZXNUb0FwcGx5Pg0KKyAgPC9hZHZpY2VCaW5kaW5nc0NvbmZpZ3VyYXRpb25zPg0KKyAgPGFkdmljZUJpbmRpbmdzQ29uZmlndXJhdGlvbnMNCisgICAgICB4c2k6dHlwZT0iYXBwbHlzdGVyZW90eXBlYWR2aWNlY29uZmlndXJhdGlvbjpBcHBseVN0ZXJlb3R5cGVBZHZpY2VDb25maWd1cmF0aW9uIg0KKyAgICAgIHhtaTppZD0iX2s0U24yYndGRWVTd05MSzJXMDJId0EiDQorICAgICAgbmFtZT0iQXBwbHkgQWxsb2NhdGUiDQorICAgICAgaWRlbnRpZmllcj0ib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LmFsbG9jYXRlIg0KKyAgICAgIHRhcmdldD0iX2s0U25IYndGRWVTd05MSzJXMDJId0EiPg0KKyAgICA8c3RlcmVvdHlwZXNUb0FwcGx5DQorICAgICAgICB4bWk6aWQ9Il9rNFNuMnJ3RkVlU3dOTEsyVzAySHdBIg0KKyAgICAgICAgc3RlcmVvdHlwZVF1YWxpZmllZE5hbWU9IlN5c01MOjpBbGxvY2F0aW9uczo6QWxsb2NhdGUiDQorICAgICAgICB1cGRhdGVOYW1lPSJ0cnVlIj4NCisgICAgICA8cmVxdWlyZWRQcm9maWxlcz5TeXNNTDwvcmVxdWlyZWRQcm9maWxlcz4NCisgICAgPC9zdGVyZW90eXBlc1RvQXBwbHk+DQorICA8L2FkdmljZUJpbmRpbmdzQ29uZmlndXJhdGlvbnM+DQorICA8YWR2aWNlQmluZGluZ3NDb25maWd1cmF0aW9ucw0KKyAgICAgIHhzaTp0eXBlPSJhcHBseXN0ZXJlb3R5cGVhZHZpY2Vjb25maWd1cmF0aW9uOkFwcGx5U3RlcmVvdHlwZUFkdmljZUNvbmZpZ3VyYXRpb24iDQorICAgICAgeG1pOmlkPSJfazRTbjI3d0ZFZVN3TkxLMlcwMkh3QSINCisgICAgICBuYW1lPSJBcHBseSBBbGxvY2F0ZSINCisgICAgICBpZGVudGlmaWVyPSJvcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuYWxsb2NhdGUiDQorICAgICAgdGFyZ2V0PSJfazRTbklMd0ZFZVN3TkxLMlcwMkh3QSI+DQorICAgIDxzdGVyZW90eXBlc1RvQXBwbHkNCisgICAgICAgIHhtaTppZD0iX2s0U24zTHdGRWVTd05MSzJXMDJId0EiDQorICAgICAgICBzdGVyZW90eXBlUXVhbGlmaWVkTmFtZT0iU3lzTUw6OkFsbG9jYXRpb25zOjpBbGxvY2F0ZSINCisgICAgICAgIHVwZGF0ZU5hbWU9InRydWUiPg0KKyAgICAgIDxyZXF1aXJlZFByb2ZpbGVzPlN5c01MPC9yZXF1aXJlZFByb2ZpbGVzPg0KKyAgICA8L3N0ZXJlb3R5cGVzVG9BcHBseT4NCisgIDwvYWR2aWNlQmluZGluZ3NDb25maWd1cmF0aW9ucz4NCisgIDxhZHZpY2VCaW5kaW5nc0NvbmZpZ3VyYXRpb25zDQorICAgICAgeHNpOnR5cGU9ImFwcGx5c3RlcmVvdHlwZWFkdmljZWNvbmZpZ3VyYXRpb246QXBwbHlTdGVyZW90eXBlQWR2aWNlQ29uZmlndXJhdGlvbiINCisgICAgICB4bWk6aWQ9Il9rNFNuM2J3RkVlU3dOTEsyVzAySHdBIg0KKyAgICAgIG5hbWU9IkFwcGx5IERlcml2ZVJlcXQiDQorICAgICAgaWRlbnRpZmllcj0ib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LmRlcml2ZVJlcXQiDQorICAgICAgdGFyZ2V0PSJfazRTbkk3d0ZFZVN3TkxLMlcwMkh3QSI+DQorICAgIDxzdGVyZW90eXBlc1RvQXBwbHkNCisgICAgICAgIHhtaTppZD0iX2s0U24zcndGRWVTd05MSzJXMDJId0EiDQorICAgICAgICBzdGVyZW90eXBlUXVhbGlmaWVkTmFtZT0iU3lzTUw6OlJlcXVpcmVtZW50czo6RGVyaXZlUmVxdCINCisgICAgICAgIHVwZGF0ZU5hbWU9InRydWUiPg0KKyAgICAgIDxyZXF1aXJlZFByb2ZpbGVzPlN5c01MPC9yZXF1aXJlZFByb2ZpbGVzPg0KKyAgICA8L3N0ZXJlb3R5cGVzVG9BcHBseT4NCisgIDwvYWR2aWNlQmluZGluZ3NDb25maWd1cmF0aW9ucz4NCisgIDxhZHZpY2VCaW5kaW5nc0NvbmZpZ3VyYXRpb25zDQorICAgICAgeHNpOnR5cGU9ImFwcGx5c3RlcmVvdHlwZWFkdmljZWNvbmZpZ3VyYXRpb246QXBwbHlTdGVyZW90eXBlQWR2aWNlQ29uZmlndXJhdGlvbiINCisgICAgICB4bWk6aWQ9Il9rNFNuMzd3RkVlU3dOTEsyVzAySHdBIg0KKyAgICAgIG5hbWU9IkFwcGx5IERlcml2ZVJlcXQiDQorICAgICAgaWRlbnRpZmllcj0ib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LmRlcml2ZVJlcXQiDQorICAgICAgdGFyZ2V0PSJfazRTbkpyd0ZFZVN3TkxLMlcwMkh3QSI+DQorICAgIDxzdGVyZW90eXBlc1RvQXBwbHkNCisgICAgICAgIHhtaTppZD0iX2s0U240THdGRWVTd05MSzJXMDJId0EiDQorICAgICAgICBzdGVyZW90eXBlUXVhbGlmaWVkTmFtZT0iU3lzTUw6OlJlcXVpcmVtZW50czo6RGVyaXZlUmVxdCINCisgICAgICAgIHVwZGF0ZU5hbWU9InRydWUiPg0KKyAgICAgIDxyZXF1aXJlZFByb2ZpbGVzPlN5c01MPC9yZXF1aXJlZFByb2ZpbGVzPg0KKyAgICA8L3N0ZXJlb3R5cGVzVG9BcHBseT4NCisgIDwvYWR2aWNlQmluZGluZ3NDb25maWd1cmF0aW9ucz4NCisgIDxhZHZpY2VCaW5kaW5nc0NvbmZpZ3VyYXRpb25zDQorICAgICAgeHNpOnR5cGU9ImFwcGx5c3RlcmVvdHlwZWFkdmljZWNvbmZpZ3VyYXRpb246QXBwbHlTdGVyZW90eXBlQWR2aWNlQ29uZmlndXJhdGlvbiINCisgICAgICB4bWk6aWQ9Il9rNFNuNGJ3RkVlU3dOTEsyVzAySHdBIg0KKyAgICAgIG5hbWU9IkFwcGx5IENvcHkiDQorICAgICAgaWRlbnRpZmllcj0ib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LmNvcHkiDQorICAgICAgdGFyZ2V0PSJfazRTbktid0ZFZVN3TkxLMlcwMkh3QSI+DQorICAgIDxzdGVyZW90eXBlc1RvQXBwbHkNCisgICAgICAgIHhtaTppZD0iX2s0U240cndGRWVTd05MSzJXMDJId0EiDQorICAgICAgICBzdGVyZW90eXBlUXVhbGlmaWVkTmFtZT0iU3lzTUw6OlJlcXVpcmVtZW50czo6Q29weSINCisgICAgICAgIHVwZGF0ZU5hbWU9InRydWUiPg0KKyAgICAgIDxyZXF1aXJlZFByb2ZpbGVzPlN5c01MPC9yZXF1aXJlZFByb2ZpbGVzPg0KKyAgICA8L3N0ZXJlb3R5cGVzVG9BcHBseT4NCisgIDwvYWR2aWNlQmluZGluZ3NDb25maWd1cmF0aW9ucz4NCisgIDxhZHZpY2VCaW5kaW5nc0NvbmZpZ3VyYXRpb25zDQorICAgICAgeHNpOnR5cGU9ImFwcGx5c3RlcmVvdHlwZWFkdmljZWNvbmZpZ3VyYXRpb246QXBwbHlTdGVyZW90eXBlQWR2aWNlQ29uZmlndXJhdGlvbiINCisgICAgICB4bWk6aWQ9Il9rNFNuNDd3RkVlU3dOTEsyVzAySHdBIg0KKyAgICAgIG5hbWU9IkFwcGx5IENvcHkiDQorICAgICAgaWRlbnRpZmllcj0ib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LmNvcHkiDQorICAgICAgdGFyZ2V0PSJfazRTbkxMd0ZFZVN3TkxLMlcwMkh3QSI+DQorICAgIDxzdGVyZW90eXBlc1RvQXBwbHkNCisgICAgICAgIHhtaTppZD0iX2s0U241THdGRWVTd05MSzJXMDJId0EiDQorICAgICAgICBzdGVyZW90eXBlUXVhbGlmaWVkTmFtZT0iU3lzTUw6OlJlcXVpcmVtZW50czo6Q29weSINCisgICAgICAgIHVwZGF0ZU5hbWU9InRydWUiPg0KKyAgICAgIDxyZXF1aXJlZFByb2ZpbGVzPlN5c01MPC9yZXF1aXJlZFByb2ZpbGVzPg0KKyAgICA8L3N0ZXJlb3R5cGVzVG9BcHBseT4NCisgIDwvYWR2aWNlQmluZGluZ3NDb25maWd1cmF0aW9ucz4NCisgIDxhZHZpY2VCaW5kaW5nc0NvbmZpZ3VyYXRpb25zDQorICAgICAgeHNpOnR5cGU9ImFwcGx5c3RlcmVvdHlwZWFkdmljZWNvbmZpZ3VyYXRpb246QXBwbHlTdGVyZW90eXBlQWR2aWNlQ29uZmlndXJhdGlvbiINCisgICAgICB4bWk6aWQ9Il9rNFNuNWJ3RkVlU3dOTEsyVzAySHdBIg0KKyAgICAgIG5hbWU9IkFwcGx5IFNhdGlzZnkiDQorICAgICAgaWRlbnRpZmllcj0ib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LnNhdGlzZnkiDQorICAgICAgdGFyZ2V0PSJfazRTbkw3d0ZFZVN3TkxLMlcwMkh3QSI+DQorICAgIDxzdGVyZW90eXBlc1RvQXBwbHkNCisgICAgICAgIHhtaTppZD0iX2s0U241cndGRWVTd05MSzJXMDJId0EiDQorICAgICAgICBzdGVyZW90eXBlUXVhbGlmaWVkTmFtZT0iU3lzTUw6OlJlcXVpcmVtZW50czo6U2F0aXNmeSINCisgICAgICAgIHVwZGF0ZU5hbWU9InRydWUiPg0KKyAgICAgIDxyZXF1aXJlZFByb2ZpbGVzPlN5c01MPC9yZXF1aXJlZFByb2ZpbGVzPg0KKyAgICA8L3N0ZXJlb3R5cGVzVG9BcHBseT4NCisgIDwvYWR2aWNlQmluZGluZ3NDb25maWd1cmF0aW9ucz4NCisgIDxhZHZpY2VCaW5kaW5nc0NvbmZpZ3VyYXRpb25zDQorICAgICAgeHNpOnR5cGU9ImFwcGx5c3RlcmVvdHlwZWFkdmljZWNvbmZpZ3VyYXRpb246QXBwbHlTdGVyZW90eXBlQWR2aWNlQ29uZmlndXJhdGlvbiINCisgICAgICB4bWk6aWQ9Il9rNFNuNTd3RkVlU3dOTEsyVzAySHdBIg0KKyAgICAgIG5hbWU9IkFwcGx5IFNhdGlzZnkiDQorICAgICAgaWRlbnRpZmllcj0ib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LnNhdGlzZnkiDQorICAgICAgdGFyZ2V0PSJfazRTbk1yd0ZFZVN3TkxLMlcwMkh3QSI+DQorICAgIDxzdGVyZW90eXBlc1RvQXBwbHkNCisgICAgICAgIHhtaTppZD0iX2s0U242THdGRWVTd05MSzJXMDJId0EiDQorICAgICAgICBzdGVyZW90eXBlUXVhbGlmaWVkTmFtZT0iU3lzTUw6OlJlcXVpcmVtZW50czo6U2F0aXNmeSINCisgICAgICAgIHVwZGF0ZU5hbWU9InRydWUiPg0KKyAgICAgIDxyZXF1aXJlZFByb2ZpbGVzPlN5c01MPC9yZXF1aXJlZFByb2ZpbGVzPg0KKyAgICA8L3N0ZXJlb3R5cGVzVG9BcHBseT4NCisgIDwvYWR2aWNlQmluZGluZ3NDb25maWd1cmF0aW9ucz4NCisgIDxhZHZpY2VCaW5kaW5nc0NvbmZpZ3VyYXRpb25zDQorICAgICAgeHNpOnR5cGU9ImFwcGx5c3RlcmVvdHlwZWFkdmljZWNvbmZpZ3VyYXRpb246QXBwbHlTdGVyZW90eXBlQWR2aWNlQ29uZmlndXJhdGlvbiINCisgICAgICB4bWk6aWQ9Il9rNFNuNmJ3RkVlU3dOTEsyVzAySHdBIg0KKyAgICAgIG5hbWU9IkFwcGx5IFRlc3RDYXNlIg0KKyAgICAgIGlkZW50aWZpZXI9Im9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC50ZXN0Q2FzZSINCisgICAgICB0YXJnZXQ9Il9rNFNuTmJ3RkVlU3dOTEsyVzAySHdBIj4NCisgICAgPHN0ZXJlb3R5cGVzVG9BcHBseQ0KKyAgICAgICAgeG1pOmlkPSJfazRTbjZyd0ZFZVN3TkxLMlcwMkh3QSINCisgICAgICAgIHN0ZXJlb3R5cGVRdWFsaWZpZWROYW1lPSJTeXNNTDo6UmVxdWlyZW1lbnRzOjpUZXN0Q2FzZSINCisgICAgICAgIHVwZGF0ZU5hbWU9InRydWUiPg0KKyAgICAgIDxyZXF1aXJlZFByb2ZpbGVzPlN5c01MPC9yZXF1aXJlZFByb2ZpbGVzPg0KKyAgICA8L3N0ZXJlb3R5cGVzVG9BcHBseT4NCisgIDwvYWR2aWNlQmluZGluZ3NDb25maWd1cmF0aW9ucz4NCisgIDxhZHZpY2VCaW5kaW5nc0NvbmZpZ3VyYXRpb25zDQorICAgICAgeHNpOnR5cGU9ImFwcGx5c3RlcmVvdHlwZWFkdmljZWNvbmZpZ3VyYXRpb246QXBwbHlTdGVyZW90eXBlQWR2aWNlQ29uZmlndXJhdGlvbiINCisgICAgICB4bWk6aWQ9Il9rNFNuNjd3RkVlU3dOTEsyVzAySHdBIg0KKyAgICAgIG5hbWU9IkFwcGx5IFRlc3RDYXNlIg0KKyAgICAgIGlkZW50aWZpZXI9Im9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC50ZXN0Q2FzZSINCisgICAgICB0YXJnZXQ9Il9rNFNuT0x3RkVlU3dOTEsyVzAySHdBIj4NCisgICAgPHN0ZXJlb3R5cGVzVG9BcHBseQ0KKyAgICAgICAgeG1pOmlkPSJfazRTbjdMd0ZFZVN3TkxLMlcwMkh3QSINCisgICAgICAgIHN0ZXJlb3R5cGVRdWFsaWZpZWROYW1lPSJTeXNNTDo6UmVxdWlyZW1lbnRzOjpUZXN0Q2FzZSINCisgICAgICAgIHVwZGF0ZU5hbWU9InRydWUiPg0KKyAgICAgIDxyZXF1aXJlZFByb2ZpbGVzPlN5c01MPC9yZXF1aXJlZFByb2ZpbGVzPg0KKyAgICA8L3N0ZXJlb3R5cGVzVG9BcHBseT4NCisgIDwvYWR2aWNlQmluZGluZ3NDb25maWd1cmF0aW9ucz4NCisgIDxhZHZpY2VCaW5kaW5nc0NvbmZpZ3VyYXRpb25zDQorICAgICAgeHNpOnR5cGU9ImFwcGx5c3RlcmVvdHlwZWFkdmljZWNvbmZpZ3VyYXRpb246QXBwbHlTdGVyZW90eXBlQWR2aWNlQ29uZmlndXJhdGlvbiINCisgICAgICB4bWk6aWQ9Il9rNFNuN2J3RkVlU3dOTEsyVzAySHdBIg0KKyAgICAgIG5hbWU9IkFwcGx5IFJlcXVpcmVtZW50Ig0KKyAgICAgIGlkZW50aWZpZXI9Im9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5yZXF1aXJlbWVudCINCisgICAgICB0YXJnZXQ9Il9rNFNuTzd3RkVlU3dOTEsyVzAySHdBIj4NCisgICAgPHN0ZXJlb3R5cGVzVG9BcHBseQ0KKyAgICAgICAgeG1pOmlkPSJfazRTbjdyd0ZFZVN3TkxLMlcwMkh3QSINCisgICAgICAgIHN0ZXJlb3R5cGVRdWFsaWZpZWROYW1lPSJTeXNNTDo6UmVxdWlyZW1lbnRzOjpSZXF1aXJlbWVudCINCisgICAgICAgIHVwZGF0ZU5hbWU9InRydWUiPg0KKyAgICAgIDxyZXF1aXJlZFByb2ZpbGVzPlN5c01MPC9yZXF1aXJlZFByb2ZpbGVzPg0KKyAgICA8L3N0ZXJlb3R5cGVzVG9BcHBseT4NCisgIDwvYWR2aWNlQmluZGluZ3NDb25maWd1cmF0aW9ucz4NCisgIDxhZHZpY2VCaW5kaW5nc0NvbmZpZ3VyYXRpb25zDQorICAgICAgeHNpOnR5cGU9ImFwcGx5c3RlcmVvdHlwZWFkdmljZWNvbmZpZ3VyYXRpb246QXBwbHlTdGVyZW90eXBlQWR2aWNlQ29uZmlndXJhdGlvbiINCisgICAgICB4bWk6aWQ9Il9rNFNuNzd3RkVlU3dOTEsyVzAySHdBIg0KKyAgICAgIG5hbWU9IkFwcGx5IFZlcmlmeSINCisgICAgICBpZGVudGlmaWVyPSJvcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQudmVyaWZ5Ig0KKyAgICAgIHRhcmdldD0iX2s0U25QcndGRWVTd05MSzJXMDJId0EiPg0KKyAgICA8c3RlcmVvdHlwZXNUb0FwcGx5DQorICAgICAgICB4bWk6aWQ9Il9rNFNuOEx3RkVlU3dOTEsyVzAySHdBIg0KKyAgICAgICAgc3RlcmVvdHlwZVF1YWxpZmllZE5hbWU9IlN5c01MOjpSZXF1aXJlbWVudHM6OlZlcmlmeSINCisgICAgICAgIHVwZGF0ZU5hbWU9InRydWUiPg0KKyAgICAgIDxyZXF1aXJlZFByb2ZpbGVzPlN5c01MPC9yZXF1aXJlZFByb2ZpbGVzPg0KKyAgICA8L3N0ZXJlb3R5cGVzVG9BcHBseT4NCisgIDwvYWR2aWNlQmluZGluZ3NDb25maWd1cmF0aW9ucz4NCisgIDxhZHZpY2VCaW5kaW5nc0NvbmZpZ3VyYXRpb25zDQorICAgICAgeHNpOnR5cGU9ImFwcGx5c3RlcmVvdHlwZWFkdmljZWNvbmZpZ3VyYXRpb246QXBwbHlTdGVyZW90eXBlQWR2aWNlQ29uZmlndXJhdGlvbiINCisgICAgICB4bWk6aWQ9Il9rNFNuOGJ3RkVlU3dOTEsyVzAySHdBIg0KKyAgICAgIG5hbWU9IkFwcGx5IFZlcmlmeSINCisgICAgICBpZGVudGlmaWVyPSJvcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQudmVyaWZ5Ig0KKyAgICAgIHRhcmdldD0iX2s0U25RYndGRWVTd05MSzJXMDJId0EiPg0KKyAgICA8c3RlcmVvdHlwZXNUb0FwcGx5DQorICAgICAgICB4bWk6aWQ9Il9rNFNuOHJ3RkVlU3dOTEsyVzAySHdBIg0KKyAgICAgICAgc3RlcmVvdHlwZVF1YWxpZmllZE5hbWU9IlN5c01MOjpSZXF1aXJlbWVudHM6OlZlcmlmeSINCisgICAgICAgIHVwZGF0ZU5hbWU9InRydWUiPg0KKyAgICAgIDxyZXF1aXJlZFByb2ZpbGVzPlN5c01MPC9yZXF1aXJlZFByb2ZpbGVzPg0KKyAgICA8L3N0ZXJlb3R5cGVzVG9BcHBseT4NCisgIDwvYWR2aWNlQmluZGluZ3NDb25maWd1cmF0aW9ucz4NCisgIDxhZHZpY2VCaW5kaW5nc0NvbmZpZ3VyYXRpb25zDQorICAgICAgeHNpOnR5cGU9ImFwcGx5c3RlcmVvdHlwZWFkdmljZWNvbmZpZ3VyYXRpb246QXBwbHlTdGVyZW90eXBlQWR2aWNlQ29uZmlndXJhdGlvbiINCisgICAgICB4bWk6aWQ9Il9rNFNuODd3RkVlU3dOTEsyVzAySHdBIg0KKyAgICAgIG5hbWU9IkFwcGx5IFRyYWNlIg0KKyAgICAgIGlkZW50aWZpZXI9Im9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC50cmFjZSINCisgICAgICB0YXJnZXQ9Il9rNFNuUkx3RkVlU3dOTEsyVzAySHdBIj4NCisgICAgPHN0ZXJlb3R5cGVzVG9BcHBseQ0KKyAgICAgICAgeG1pOmlkPSJfazRTbjlMd0ZFZVN3TkxLMlcwMkh3QSINCisgICAgICAgIHN0ZXJlb3R5cGVRdWFsaWZpZWROYW1lPSJTeXNNTDo6UmVxdWlyZW1lbnRzOjpUcmFjZSINCisgICAgICAgIHVwZGF0ZU5hbWU9InRydWUiPg0KKyAgICAgIDxyZXF1aXJlZFByb2ZpbGVzPlN5c01MPC9yZXF1aXJlZFByb2ZpbGVzPg0KKyAgICA8L3N0ZXJlb3R5cGVzVG9BcHBseT4NCisgIDwvYWR2aWNlQmluZGluZ3NDb25maWd1cmF0aW9ucz4NCisgIDxhZHZpY2VCaW5kaW5nc0NvbmZpZ3VyYXRpb25zDQorICAgICAgeHNpOnR5cGU9ImFwcGx5c3RlcmVvdHlwZWFkdmljZWNvbmZpZ3VyYXRpb246QXBwbHlTdGVyZW90eXBlQWR2aWNlQ29uZmlndXJhdGlvbiINCisgICAgICB4bWk6aWQ9Il9rNFNuOWJ3RkVlU3dOTEsyVzAySHdBIg0KKyAgICAgIG5hbWU9IkFwcGx5IFRyYWNlIg0KKyAgICAgIGlkZW50aWZpZXI9Im9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC50cmFjZSINCisgICAgICB0YXJnZXQ9Il9rNFNuUjd3RkVlU3dOTEsyVzAySHdBIj4NCisgICAgPHN0ZXJlb3R5cGVzVG9BcHBseQ0KKyAgICAgICAgeG1pOmlkPSJfazRTbjlyd0ZFZVN3TkxLMlcwMkh3QSINCisgICAgICAgIHN0ZXJlb3R5cGVRdWFsaWZpZWROYW1lPSJTeXNNTDo6UmVxdWlyZW1lbnRzOjpUcmFjZSINCisgICAgICAgIHVwZGF0ZU5hbWU9InRydWUiPg0KKyAgICAgIDxyZXF1aXJlZFByb2ZpbGVzPlN5c01MPC9yZXF1aXJlZFByb2ZpbGVzPg0KKyAgICA8L3N0ZXJlb3R5cGVzVG9BcHBseT4NCisgIDwvYWR2aWNlQmluZGluZ3NDb25maWd1cmF0aW9ucz4NCisgIDxhZHZpY2VCaW5kaW5nc0NvbmZpZ3VyYXRpb25zDQorICAgICAgeHNpOnR5cGU9ImFwcGx5c3RlcmVvdHlwZWFkdmljZWNvbmZpZ3VyYXRpb246QXBwbHlTdGVyZW90eXBlQWR2aWNlQ29uZmlndXJhdGlvbiINCisgICAgICB4bWk6aWQ9Il9rNFNuOTd3RkVlU3dOTEsyVzAySHdBIg0KKyAgICAgIG5hbWU9IkFwcGx5IFJlZmluZSINCisgICAgICBpZGVudGlmaWVyPSJvcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQucmVmaW5lIg0KKyAgICAgIHRhcmdldD0iX2s0U25TcndGRWVTd05MSzJXMDJId0EiPg0KKyAgICA8c3RlcmVvdHlwZXNUb0FwcGx5DQorICAgICAgICB4bWk6aWQ9Il9rNFNuLUx3RkVlU3dOTEsyVzAySHdBIg0KKyAgICAgICAgc3RlcmVvdHlwZVF1YWxpZmllZE5hbWU9IlN5c01MOjpSZXF1aXJlbWVudHM6OlJlZmluZSINCisgICAgICAgIHVwZGF0ZU5hbWU9InRydWUiPg0KKyAgICAgIDxyZXF1aXJlZFByb2ZpbGVzPlN5c01MPC9yZXF1aXJlZFByb2ZpbGVzPg0KKyAgICA8L3N0ZXJlb3R5cGVzVG9BcHBseT4NCisgIDwvYWR2aWNlQmluZGluZ3NDb25maWd1cmF0aW9ucz4NCisgIDxhZHZpY2VCaW5kaW5nc0NvbmZpZ3VyYXRpb25zDQorICAgICAgeHNpOnR5cGU9ImFwcGx5c3RlcmVvdHlwZWFkdmljZWNvbmZpZ3VyYXRpb246QXBwbHlTdGVyZW90eXBlQWR2aWNlQ29uZmlndXJhdGlvbiINCisgICAgICB4bWk6aWQ9Il9rNFNuLWJ3RkVlU3dOTEsyVzAySHdBIg0KKyAgICAgIG5hbWU9IkFwcGx5IFJlZmluZSINCisgICAgICBpZGVudGlmaWVyPSJvcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQucmVmaW5lIg0KKyAgICAgIHRhcmdldD0iX2s0U25UYndGRWVTd05MSzJXMDJId0EiPg0KKyAgICA8c3RlcmVvdHlwZXNUb0FwcGx5DQorICAgICAgICB4bWk6aWQ9Il9rNFNuLXJ3RkVlU3dOTEsyVzAySHdBIg0KKyAgICAgICAgc3RlcmVvdHlwZVF1YWxpZmllZE5hbWU9IlN5c01MOjpSZXF1aXJlbWVudHM6OlJlZmluZSINCisgICAgICAgIHVwZGF0ZU5hbWU9InRydWUiPg0KKyAgICAgIDxyZXF1aXJlZFByb2ZpbGVzPlN5c01MPC9yZXF1aXJlZFByb2ZpbGVzPg0KKyAgICA8L3N0ZXJlb3R5cGVzVG9BcHBseT4NCisgIDwvYWR2aWNlQmluZGluZ3NDb25maWd1cmF0aW9ucz4NCisgIDxhZHZpY2VCaW5kaW5nc0NvbmZpZ3VyYXRpb25zDQorICAgICAgeHNpOnR5cGU9ImFwcGx5c3RlcmVvdHlwZWFkdmljZWNvbmZpZ3VyYXRpb246QXBwbHlTdGVyZW90eXBlQWR2aWNlQ29uZmlndXJhdGlvbiINCisgICAgICB4bWk6aWQ9Il9rNFNuLTd3RkVlU3dOTEsyVzAySHdBIg0KKyAgICAgIG5hbWU9IkFwcGx5IEZsb3dQb3J0Ig0KKyAgICAgIGlkZW50aWZpZXI9Im9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5mbG93UG9ydCINCisgICAgICB0YXJnZXQ9Il9rNFNuVUx3RkVlU3dOTEsyVzAySHdBIj4NCisgICAgPHN0ZXJlb3R5cGVzVG9BcHBseQ0KKyAgICAgICAgeG1pOmlkPSJfazRTbl9Md0ZFZVN3TkxLMlcwMkh3QSINCisgICAgICAgIHN0ZXJlb3R5cGVRdWFsaWZpZWROYW1lPSJTeXNNTDo6RGVwcmVjYXRlZEVsZW1lbnRzOjpGbG93UG9ydCINCisgICAgICAgIHVwZGF0ZU5hbWU9InRydWUiPg0KKyAgICAgIDxyZXF1aXJlZFByb2ZpbGVzPlN5c01MPC9yZXF1aXJlZFByb2ZpbGVzPg0KKyAgICA8L3N0ZXJlb3R5cGVzVG9BcHBseT4NCisgIDwvYWR2aWNlQmluZGluZ3NDb25maWd1cmF0aW9ucz4NCisgIDxhZHZpY2VCaW5kaW5nc0NvbmZpZ3VyYXRpb25zDQorICAgICAgeHNpOnR5cGU9ImFwcGx5c3RlcmVvdHlwZWFkdmljZWNvbmZpZ3VyYXRpb246QXBwbHlTdGVyZW90eXBlQWR2aWNlQ29uZmlndXJhdGlvbiINCisgICAgICB4bWk6aWQ9Il9rNFNuX2J3RkVlU3dOTEsyVzAySHdBIg0KKyAgICAgIG5hbWU9IkFwcGx5IEZsb3dTcGVjaWZpY2F0aW9uIg0KKyAgICAgIGlkZW50aWZpZXI9Im9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5mbG93U3BlY2lmaWNhdGlvbiINCisgICAgICB0YXJnZXQ9Il9rNFNuVTd3RkVlU3dOTEsyVzAySHdBIj4NCisgICAgPHN0ZXJlb3R5cGVzVG9BcHBseQ0KKyAgICAgICAgeG1pOmlkPSJfazRTbl9yd0ZFZVN3TkxLMlcwMkh3QSINCisgICAgICAgIHN0ZXJlb3R5cGVRdWFsaWZpZWROYW1lPSJTeXNNTDo6RGVwcmVjYXRlZEVsZW1lbnRzOjpGbG93U3BlY2lmaWNhdGlvbiINCisgICAgICAgIHVwZGF0ZU5hbWU9InRydWUiPg0KKyAgICAgIDxyZXF1aXJlZFByb2ZpbGVzPlN5c01MPC9yZXF1aXJlZFByb2ZpbGVzPg0KKyAgICA8L3N0ZXJlb3R5cGVzVG9BcHBseT4NCisgIDwvYWR2aWNlQmluZGluZ3NDb25maWd1cmF0aW9ucz4NCisgIDxhZHZpY2VCaW5kaW5nc0NvbmZpZ3VyYXRpb25zDQorICAgICAgeHNpOnR5cGU9ImFwcGx5c3RlcmVvdHlwZWFkdmljZWNvbmZpZ3VyYXRpb246QXBwbHlTdGVyZW90eXBlQWR2aWNlQ29uZmlndXJhdGlvbiINCisgICAgICB4bWk6aWQ9Il9rNFNuXzd3RkVlU3dOTEsyVzAySHdBIg0KKyAgICAgIG5hbWU9IkFwcGx5IEFsbG9jYXRlZCINCisgICAgICBpZGVudGlmaWVyPSJvcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuYWxsb2NhdGVkIg0KKyAgICAgIHRhcmdldD0iX2s0U25WcndGRWVTd05MSzJXMDJId0EiPg0KKyAgICA8c3RlcmVvdHlwZXNUb0FwcGx5DQorICAgICAgICB4bWk6aWQ9Il9rNFNvQUx3RkVlU3dOTEsyVzAySHdBIg0KKyAgICAgICAgc3RlcmVvdHlwZVF1YWxpZmllZE5hbWU9IlN5c01MOjpEZXByZWNhdGVkRWxlbWVudHM6OkFsbG9jYXRlZCINCisgICAgICAgIHVwZGF0ZU5hbWU9InRydWUiPg0KKyAgICAgIDxyZXF1aXJlZFByb2ZpbGVzPlN5c01MPC9yZXF1aXJlZFByb2ZpbGVzPg0KKyAgICA8L3N0ZXJlb3R5cGVzVG9BcHBseT4NCisgIDwvYWR2aWNlQmluZGluZ3NDb25maWd1cmF0aW9ucz4NCisgIDxhZHZpY2VCaW5kaW5nc0NvbmZpZ3VyYXRpb25zDQorICAgICAgeHNpOnR5cGU9ImFwcGx5c3RlcmVvdHlwZWFkdmljZWNvbmZpZ3VyYXRpb246QXBwbHlTdGVyZW90eXBlQWR2aWNlQ29uZmlndXJhdGlvbiINCisgICAgICB4bWk6aWQ9Il9rNFNvQWJ3RkVlU3dOTEsyVzAySHdBIg0KKyAgICAgIG5hbWU9IkFwcGx5IFJlcXVpcmVtZW50UmVsYXRlZCINCisgICAgICBpZGVudGlmaWVyPSJvcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQucmVxdWlyZW1lbnRSZWxhdGVkIg0KKyAgICAgIHRhcmdldD0iX2s0U25XYndGRWVTd05MSzJXMDJId0EiPg0KKyAgICA8c3RlcmVvdHlwZXNUb0FwcGx5DQorICAgICAgICB4bWk6aWQ9Il9rNFNvQXJ3RkVlU3dOTEsyVzAySHdBIg0KKyAgICAgICAgc3RlcmVvdHlwZVF1YWxpZmllZE5hbWU9IlN5c01MOjpEZXByZWNhdGVkRWxlbWVudHM6OlJlcXVpcmVtZW50UmVsYXRlZCINCisgICAgICAgIHVwZGF0ZU5hbWU9InRydWUiPg0KKyAgICAgIDxyZXF1aXJlZFByb2ZpbGVzPlN5c01MPC9yZXF1aXJlZFByb2ZpbGVzPg0KKyAgICA8L3N0ZXJlb3R5cGVzVG9BcHBseT4NCisgIDwvYWR2aWNlQmluZGluZ3NDb25maWd1cmF0aW9ucz4NCisgIDxhZHZpY2VCaW5kaW5nc0NvbmZpZ3VyYXRpb25zDQorICAgICAgeHNpOnR5cGU9ImFwcGx5c3RlcmVvdHlwZWFkdmljZWNvbmZpZ3VyYXRpb246QXBwbHlTdGVyZW90eXBlQWR2aWNlQ29uZmlndXJhdGlvbiINCisgICAgICB4bWk6aWQ9Il9rNFNvQTd3RkVlU3dOTEsyVzAySHdBIg0KKyAgICAgIG5hbWU9IkFwcGx5IERlcHJlY2F0ZWQgdG8gRmxvdyBQb3J0Ig0KKyAgICAgIGlkZW50aWZpZXI9Im9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5kZXByZWNhdGVkLmZsb3dwb3J0Ig0KKyAgICAgIGVkaXRIZWxwZXJBZHZpY2VDbGFzc05hbWU9IiINCisgICAgICB0YXJnZXQ9Il9rNFNuVUx3RkVlU3dOTEsyVzAySHdBIj4NCisgICAgPHN0ZXJlb3R5cGVzVG9BcHBseQ0KKyAgICAgICAgeG1pOmlkPSJfazRTb0JMd0ZFZVN3TkxLMlcwMkh3QSINCisgICAgICAgIHN0ZXJlb3R5cGVRdWFsaWZpZWROYW1lPSJTeXNNTDo6RGVwcmVjYXRlZEVsZW1lbnRzOjpEZXByZWNhdGVkIj4NCisgICAgICA8cmVxdWlyZWRQcm9maWxlcz5TeXNNTDwvcmVxdWlyZWRQcm9maWxlcz4NCisgICAgPC9zdGVyZW90eXBlc1RvQXBwbHk+DQorICA8L2FkdmljZUJpbmRpbmdzQ29uZmlndXJhdGlvbnM+DQorICA8YWR2aWNlQmluZGluZ3NDb25maWd1cmF0aW9ucw0KKyAgICAgIHhzaTp0eXBlPSJhcHBseXN0ZXJlb3R5cGVhZHZpY2Vjb25maWd1cmF0aW9uOkFwcGx5U3RlcmVvdHlwZUFkdmljZUNvbmZpZ3VyYXRpb24iDQorICAgICAgeG1pOmlkPSJfazRTb0Jid0ZFZVN3TkxLMlcwMkh3QSINCisgICAgICBuYW1lPSJBcHBseSBEZXByZWNhdGVkIHRvIEZsb3cgU3BlY2lmaWNhdGlvbiINCisgICAgICBpZGVudGlmaWVyPSJvcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuZGVwcmVjYXRlZC5mbG93c3BlY2lmaWNhdGlvbiINCisgICAgICB0YXJnZXQ9Il9rNFNuVTd3RkVlU3dOTEsyVzAySHdBIj4NCisgICAgPHN0ZXJlb3R5cGVzVG9BcHBseQ0KKyAgICAgICAgeG1pOmlkPSJfazRTb0Jyd0ZFZVN3TkxLMlcwMkh3QSINCisgICAgICAgIHN0ZXJlb3R5cGVRdWFsaWZpZWROYW1lPSJTeXNNTDo6RGVwcmVjYXRlZEVsZW1lbnRzOjpEZXByZWNhdGVkIj4NCisgICAgICA8cmVxdWlyZWRQcm9maWxlcz5TeXNNTDwvcmVxdWlyZWRQcm9maWxlcz4NCisgICAgPC9zdGVyZW90eXBlc1RvQXBwbHk+DQorICA8L2FkdmljZUJpbmRpbmdzQ29uZmlndXJhdGlvbnM+DQorICA8YWR2aWNlQmluZGluZ3NDb25maWd1cmF0aW9ucw0KKyAgICAgIHhzaTp0eXBlPSJhcHBseXN0ZXJlb3R5cGVhZHZpY2Vjb25maWd1cmF0aW9uOkFwcGx5U3RlcmVvdHlwZUFkdmljZUNvbmZpZ3VyYXRpb24iDQorICAgICAgeG1pOmlkPSJfazRTb0I3d0ZFZVN3TkxLMlcwMkh3QSINCisgICAgICBuYW1lPSJBcHBseSBEZXByZWNhdGVkIHRvIEFsbG9jYXRlZCINCisgICAgICBpZGVudGlmaWVyPSJvcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuZGVwcmVjYXRlZC5hbGxvY2F0ZWQiDQorICAgICAgdGFyZ2V0PSJfazRTblZyd0ZFZVN3TkxLMlcwMkh3QSI+DQorICAgIDxzdGVyZW90eXBlc1RvQXBwbHkNCisgICAgICAgIHhtaTppZD0iX2s0U29DTHdGRWVTd05MSzJXMDJId0EiDQorICAgICAgICBzdGVyZW90eXBlUXVhbGlmaWVkTmFtZT0iU3lzTUw6OkRlcHJlY2F0ZWRFbGVtZW50czo6RGVwcmVjYXRlZCI+DQorICAgICAgPHJlcXVpcmVkUHJvZmlsZXM+U3lzTUw8L3JlcXVpcmVkUHJvZmlsZXM+DQorICAgIDwvc3RlcmVvdHlwZXNUb0FwcGx5Pg0KKyAgPC9hZHZpY2VCaW5kaW5nc0NvbmZpZ3VyYXRpb25zPg0KKyAgPGVsZW1lbnRUeXBlQ29uZmlndXJhdGlvbnMNCisgICAgICB4c2k6dHlwZT0iZWxlbWVudHR5cGVzY29uZmlndXJhdGlvbnM6U3BlY2lhbGl6YXRpb25UeXBlQ29uZmlndXJhdGlvbiINCisgICAgICB4bWk6aWQ9Il9kV25iQUNDeEVlV2otSUdOV2NOTDBRIg0KKyAgICAgIG5hbWU9IlZhbHVlIg0KKyAgICAgIGRlc2NyaXB0aW9uPSJDcmVhdGUgYSB2YWx1ZSINCisgICAgICBpZGVudGlmaWVyPSJvcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuVmFsdWUiDQorICAgICAgaGludD0iVU1MOjpQcm9wZXJ0eSI+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy51bWwuUHJvcGVydHk8L3NwZWNpYWxpemVkVHlwZXNJRD4NCisgICAgPGVkaXRIZWxwZXJBZHZpY2VDb25maWd1cmF0aW9uDQorICAgICAgICB4bWk6aWQ9Il9kV25iQVNDeEVlV2otSUdOV2NOTDBRIg0KKyAgICAgICAgbmFtZT0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnNlcnZpY2UudHlwZXMuYWR2aWNlLkFmdGVyQ29uZmlndXJlQ29tbWFuZEVkaXRIZWxwZXJBZHZpY2UiDQorICAgICAgICBkZXNjcmlwdGlvbj0iIg0KKyAgICAgICAgaWRlbnRpZmllcj0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnNlcnZpY2UudHlwZXMuYWR2aWNlLkFmdGVyQ29uZmlndXJlQ29tbWFuZEVkaXRIZWxwZXJBZHZpY2UiDQorICAgICAgICBlZGl0SGVscGVyQWR2aWNlQ2xhc3NOYW1lPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuc2VydmljZS50eXBlcy5hZHZpY2UuQWZ0ZXJDb25maWd1cmVDb21tYW5kRWRpdEhlbHBlckFkdmljZSIvPg0KKyAgPC9lbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zPg0KKyAgPGVsZW1lbnRUeXBlQ29uZmlndXJhdGlvbnMNCisgICAgICB4c2k6dHlwZT0iZWxlbWVudHR5cGVzY29uZmlndXJhdGlvbnM6U3BlY2lhbGl6YXRpb25UeXBlQ29uZmlndXJhdGlvbiINCisgICAgICB4bWk6aWQ9Il9uMUk4Y0NDLUVlV2otSUdOV2NOTDBRIg0KKyAgICAgIG5hbWU9IlJlZmVyZW5jZSINCisgICAgICBkZXNjcmlwdGlvbj0iQ3JlYXRlIGEgcmVmZXJlbmNlIg0KKyAgICAgIGlkZW50aWZpZXI9Im9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5SZWZlcmVuY2UiDQorICAgICAgaGludD0iVU1MOjpQcm9wZXJ0eSI+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy51bWwuUHJvcGVydHk8L3NwZWNpYWxpemVkVHlwZXNJRD4NCisgICAgPGVkaXRIZWxwZXJBZHZpY2VDb25maWd1cmF0aW9uDQorICAgICAgICB4bWk6aWQ9Il9uMUk4Y1NDLUVlV2otSUdOV2NOTDBRIg0KKyAgICAgICAgbmFtZT0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnNlcnZpY2UudHlwZXMuYWR2aWNlLkFmdGVyQ29uZmlndXJlQ29tbWFuZEVkaXRIZWxwZXJBZHZpY2UiDQorICAgICAgICBkZXNjcmlwdGlvbj0iIg0KKyAgICAgICAgaWRlbnRpZmllcj0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnNlcnZpY2UudHlwZXMuYWR2aWNlLkFmdGVyQ29uZmlndXJlQ29tbWFuZEVkaXRIZWxwZXJBZHZpY2UiDQorICAgICAgICBlZGl0SGVscGVyQWR2aWNlQ2xhc3NOYW1lPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuc2VydmljZS50eXBlcy5hZHZpY2UuQWZ0ZXJDb25maWd1cmVDb21tYW5kRWRpdEhlbHBlckFkdmljZSIvPg0KKyAgPC9lbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zPg0KKyAgPGVsZW1lbnRUeXBlQ29uZmlndXJhdGlvbnMNCisgICAgICB4c2k6dHlwZT0iZWxlbWVudHR5cGVzY29uZmlndXJhdGlvbnM6U3BlY2lhbGl6YXRpb25UeXBlQ29uZmlndXJhdGlvbiINCisgICAgICB4bWk6aWQ9Il9WSDc4MENER0VlV2otSUdOV2NOTDBRIg0KKyAgICAgIG5hbWU9IlBhcnQiDQorICAgICAgZGVzY3JpcHRpb249IkNyZWF0ZSBhIHBhcnQiDQorICAgICAgaWRlbnRpZmllcj0ib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LlBhcnQiDQorICAgICAgaGludD0iVU1MOjpQcm9wZXJ0eSI+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy51bWwuUHJvcGVydHk8L3NwZWNpYWxpemVkVHlwZXNJRD4NCisgICAgPGVkaXRIZWxwZXJBZHZpY2VDb25maWd1cmF0aW9uDQorICAgICAgICB4bWk6aWQ9Il9WSDc4MFNER0VlV2otSUdOV2NOTDBRIg0KKyAgICAgICAgbmFtZT0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnNlcnZpY2UudHlwZXMuYWR2aWNlLkFmdGVyQ29uZmlndXJlQ29tbWFuZEVkaXRIZWxwZXJBZHZpY2UiDQorICAgICAgICBkZXNjcmlwdGlvbj0iIg0KKyAgICAgICAgaWRlbnRpZmllcj0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnNlcnZpY2UudHlwZXMuYWR2aWNlLkFmdGVyQ29uZmlndXJlQ29tbWFuZEVkaXRIZWxwZXJBZHZpY2UiDQorICAgICAgICBlZGl0SGVscGVyQWR2aWNlQ2xhc3NOYW1lPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuc2VydmljZS50eXBlcy5hZHZpY2UuQWZ0ZXJDb25maWd1cmVDb21tYW5kRWRpdEhlbHBlckFkdmljZSIvPg0KKyAgPC9lbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zPiAgDQorPC9lbGVtZW50dHlwZXNjb25maWd1cmF0aW9uczpFbGVtZW50VHlwZVNldENvbmZpZ3VyYXRpb24+DQpkaWZmIC0tZ2l0IGEvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuc2VydmljZS50eXBlcy9wbHVnaW4ucHJvcGVydGllcyBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnNlcnZpY2UudHlwZXMvcGx1Z2luLnByb3BlcnRpZXMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTc1NTg5MAotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnNlcnZpY2UudHlwZXMvcGx1Z2luLnByb3BlcnRpZXMKQEAgLTAsMCArMSwxNSBAQAorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQorIyBDb3B5cmlnaHQgKGMpIDIwMTUgQ0VBIExJU1QuDQorIyBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQorIyBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCisjIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQorIyBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyMNCisjIENvbnRyaWJ1dG9yczoNCisjICAgICBQYXRyaWNrIFRlc3NpZXIgKENFQSBMSVNUKSBQYXRyaWNrLnRlc3NpZXJAY2VhLmZyIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uDQorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KK3BsdWdpbk5hbWU9b3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnNlcnZpY2UudHlwZXMNCitwbHVnaW5EZXNjcmlwdGlvbj1UaGlzIHBsdWctaW4gY29udGFpbnMgdGhlIFN5TUwgZWxlbWVudCB0eXBlcy4NCitwcm92aWRlck5hbWU9RWNsaXBzZSBNb2RlbGluZyBQcm9qZWN0DQorDQorDQpkaWZmIC0tZ2l0IGEvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuc2VydmljZS50eXBlcy9wbHVnaW4ueG1sIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuc2VydmljZS50eXBlcy9wbHVnaW4ueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY1YzQzOTgKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5zZXJ2aWNlLnR5cGVzL3BsdWdpbi54bWwKQEAgLTAsMCArMSwxMiBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4NCis8P2VjbGlwc2UgdmVyc2lvbj0iMy40Ij8+DQorPHBsdWdpbj4NCisgICA8ZXh0ZW5zaW9uDQorICAgICAgICAgcG9pbnQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuaW5mcmEuZWxlbWVudHR5cGVzY29uZmlndXJhdGlvbnMuZWxlbWVudFR5cGVTZXRDb25maWd1cmF0aW9uIj4NCisgICAgICA8ZWxlbWVudFR5cGVTZXQNCisgICAgICAgICAgICBpZD0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnNlcnZpY2UudHlwZXMuZWxlbWVudFR5cGVTZXQiDQorICAgICAgICAgICAgcGF0aD0ibW9kZWwvU3lzTUwxNC5lbGVtZW50dHlwZXNjb25maWd1cmF0aW9ucyI+DQorICAgICAgPC9lbGVtZW50VHlwZVNldD4NCisgICA8L2V4dGVuc2lvbj4NCisNCis8L3BsdWdpbj4NCmRpZmYgLS1naXQgYS9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5zZXJ2aWNlLnR5cGVzL3BvbS54bWwgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5zZXJ2aWNlLnR5cGVzL3BvbS54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjBjMjc1MQotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnNlcnZpY2UudHlwZXMvcG9tLnhtbApAQCAtMCwwICsxLDExIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/Pg0KKzxwcm9qZWN0Pg0KKwk8bW9kZWxWZXJzaW9uPjQuMC4wPC9tb2RlbFZlcnNpb24+DQorCTxwYXJlbnQ+DQorCQk8YXJ0aWZhY3RJZD5vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sLmNvcmU8L2FydGlmYWN0SWQ+DQorCQk8Z3JvdXBJZD5vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sPC9ncm91cElkPg0KKwkJPHZlcnNpb24+MC43LjAtU05BUFNIT1Q8L3ZlcnNpb24+DQorCTwvcGFyZW50Pg0KKwk8YXJ0aWZhY3RJZD5vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuc2VydmljZS50eXBlczwvYXJ0aWZhY3RJZD4NCisJPHBhY2thZ2luZz5lY2xpcHNlLXBsdWdpbjwvcGFja2FnaW5nPg0KKzwvcHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5zZXJ2aWNlLnR5cGVzL3NyYy9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvc2VydmljZS90eXBlcy9BY3RpdmF0b3IuamF2YSBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnNlcnZpY2UudHlwZXMvc3JjL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9zZXJ2aWNlL3R5cGVzL0FjdGl2YXRvci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZjNjRiMDYKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5zZXJ2aWNlLnR5cGVzL3NyYy9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvc2VydmljZS90eXBlcy9BY3RpdmF0b3IuamF2YQpAQCAtMCwwICsxLDYyIEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisgKiBDb3B5cmlnaHQgKGMpIDIwMTUgQ0VBIExJU1QgYW5kIG90aGVycy4NCisgKiANCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQorICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCisgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqDQorICogQ29udHJpYnV0b3JzOg0KKyAqICAgQ0VBIExJU1QgLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24NCisgKiAgIA0KKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCitwYWNrYWdlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5zZXJ2aWNlLnR5cGVzOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS51aS5wbHVnaW4uQWJzdHJhY3RVSVBsdWdpbjsNCitpbXBvcnQgb3JnLm9zZ2kuZnJhbWV3b3JrLkJ1bmRsZUNvbnRleHQ7DQorDQorLyoqDQorICogVGhlIGFjdGl2YXRvciBjbGFzcyBjb250cm9scyB0aGUgcGx1Zy1pbiBsaWZlIGN5Y2xlDQorICovDQorcHVibGljIGNsYXNzIEFjdGl2YXRvciBleHRlbmRzIEFic3RyYWN0VUlQbHVnaW4gew0KKw0KKwkvLyBUaGUgcGx1Zy1pbiBJRA0KKwlwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBQTFVHSU5fSUQgPSAib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnNlcnZpY2UudHlwZXMiOyAvLyROT04tTkxTLTEkDQorDQorCS8vIFRoZSBzaGFyZWQgaW5zdGFuY2UNCisJcHJpdmF0ZSBzdGF0aWMgQWN0aXZhdG9yIHBsdWdpbjsNCisJDQorCS8qKg0KKwkgKiBUaGUgY29uc3RydWN0b3INCisJICovDQorCXB1YmxpYyBBY3RpdmF0b3IoKSB7DQorCX0NCisNCisJLyoNCisJICogKG5vbi1KYXZhZG9jKQ0KKwkgKiBAc2VlIG9yZy5lY2xpcHNlLnVpLnBsdWdpbi5BYnN0cmFjdFVJUGx1Z2luI3N0YXJ0KG9yZy5vc2dpLmZyYW1ld29yay5CdW5kbGVDb250ZXh0KQ0KKwkgKi8NCisJcHVibGljIHZvaWQgc3RhcnQoQnVuZGxlQ29udGV4dCBjb250ZXh0KSB0aHJvd3MgRXhjZXB0aW9uIHsNCisJCXN1cGVyLnN0YXJ0KGNvbnRleHQpOw0KKwkJcGx1Z2luID0gdGhpczsNCisJfQ0KKw0KKwkvKg0KKwkgKiAobm9uLUphdmFkb2MpDQorCSAqIEBzZWUgb3JnLmVjbGlwc2UudWkucGx1Z2luLkFic3RyYWN0VUlQbHVnaW4jc3RvcChvcmcub3NnaS5mcmFtZXdvcmsuQnVuZGxlQ29udGV4dCkNCisJICovDQorCXB1YmxpYyB2b2lkIHN0b3AoQnVuZGxlQ29udGV4dCBjb250ZXh0KSB0aHJvd3MgRXhjZXB0aW9uIHsNCisJCXBsdWdpbiA9IG51bGw7DQorCQlzdXBlci5zdG9wKGNvbnRleHQpOw0KKwl9DQorDQorCS8qKg0KKwkgKiBSZXR1cm5zIHRoZSBzaGFyZWQgaW5zdGFuY2UNCisJICoNCisJICogQHJldHVybiB0aGUgc2hhcmVkIGluc3RhbmNlDQorCSAqLw0KKwlwdWJsaWMgc3RhdGljIEFjdGl2YXRvciBnZXREZWZhdWx0KCkgew0KKwkJcmV0dXJuIHBsdWdpbjsNCisJfQ0KKw0KK30NCmRpZmYgLS1naXQgYS9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5zZXJ2aWNlLnR5cGVzL3NyYy9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvc2VydmljZS90eXBlcy9hZHZpY2UvQWN0b3JQYXJ0RWRpdEhlbHBlckFkdmljZS5qYXZhIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuc2VydmljZS50eXBlcy9zcmMvb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L3NlcnZpY2UvdHlwZXMvYWR2aWNlL0FjdG9yUGFydEVkaXRIZWxwZXJBZHZpY2UuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mY2ZjOWU0Ci0tLSAvZGV2L251bGwKKysrIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuc2VydmljZS50eXBlcy9zcmMvb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L3NlcnZpY2UvdHlwZXMvYWR2aWNlL0FjdG9yUGFydEVkaXRIZWxwZXJBZHZpY2UuamF2YQpAQCAtMCwwICsxLDQ2IEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisgKiBDb3B5cmlnaHQgKGMpIDIwMTUgQ0VBIExJU1QuDQorICoNCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQorICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCisgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqDQorICogQ29udHJpYnV0b3JzOg0KKyAqICBCZW5vaXQgTWFnZ2kgKENFQSBMSVNUKSBiZW5vaXQubWFnZ2lAY2VhLmZyIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uDQorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KK3BhY2thZ2Ugb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnNlcnZpY2UudHlwZXMuYWR2aWNlOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5nbWYucnVudGltZS5jb21tb24uY29yZS5jb21tYW5kLklDb21tYW5kOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5nbWYucnVudGltZS5lbWYudHlwZS5jb3JlLmVkaXRoZWxwZXIuQWJzdHJhY3RFZGl0SGVscGVyQWR2aWNlOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5nbWYucnVudGltZS5lbWYudHlwZS5jb3JlLnJlcXVlc3RzLkNvbmZpZ3VyZVJlcXVlc3Q7DQorDQorLyoqDQorICogVGhlIEVkaXRIZWxwZXJBZHZpY2UgY2xhc3MgdXNlZCBmb3IgQWN0b3IgUGFydA0KKyAqDQorICovDQorcHVibGljIGNsYXNzIEFjdG9yUGFydEVkaXRIZWxwZXJBZHZpY2UgZXh0ZW5kcyBBYnN0cmFjdEVkaXRIZWxwZXJBZHZpY2Ugew0KKw0KKw0KKwkvKioNCisJICogUGFyYW1ldGVyIGlkIHVzZWQgdG8gcGFzcyB0aGUgY29tbWFuZCBmb3Igc2V0dGluZyB0aGUgdHlwZSBvZiB0aGUgcHJvcGVydHkNCisJICovDQorCXB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFNFVF9BQ1RPUl9JQ09NTUFORCA9ICJTRVRfQUNUT1JfSUNPTU1BTkQiOyAvLyROT04tTkxTLTEkDQorCQ0KKw0KKwkvKioNCisJICogQHNlZSBvcmcuZWNsaXBzZS5nbWYucnVudGltZS5lbWYudHlwZS5jb3JlLmVkaXRoZWxwZXIuQWJzdHJhY3RFZGl0SGVscGVyQWR2aWNlI2dldEFmdGVyQ29uZmlndXJlQ29tbWFuZChvcmcuZWNsaXBzZS5nbWYucnVudGltZS5lbWYudHlwZS5jb3JlLnJlcXVlc3RzLkNvbmZpZ3VyZVJlcXVlc3QpDQorCSAqDQorCSAqIEBwYXJhbSByZXF1ZXN0DQorCSAqIEByZXR1cm4NCisJICovDQorCUBPdmVycmlkZQ0KKwlwcm90ZWN0ZWQgSUNvbW1hbmQgZ2V0QWZ0ZXJDb25maWd1cmVDb21tYW5kKENvbmZpZ3VyZVJlcXVlc3QgcmVxdWVzdCkgew0KKwkJT2JqZWN0IHBhcmFtZXRlciA9IHJlcXVlc3QuZ2V0UGFyYW1ldGVyKFNFVF9BQ1RPUl9JQ09NTUFORCk7DQorDQorCQlpZiAocGFyYW1ldGVyIGluc3RhbmNlb2YgSUNvbW1hbmQpIHsNCisJCQlyZXR1cm4gKElDb21tYW5kKSBwYXJhbWV0ZXI7DQorCQl9DQorCQlyZXR1cm4gc3VwZXIuZ2V0QWZ0ZXJDb25maWd1cmVDb21tYW5kKHJlcXVlc3QpOw0KKwl9DQorfQ0KZGlmZiAtLWdpdCBhL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnNlcnZpY2UudHlwZXMvc3JjL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9zZXJ2aWNlL3R5cGVzL2FkdmljZS9BZnRlckNvbmZpZ3VyZUNvbW1hbmRFZGl0SGVscGVyQWR2aWNlLmphdmEgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5zZXJ2aWNlLnR5cGVzL3NyYy9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvc2VydmljZS90eXBlcy9hZHZpY2UvQWZ0ZXJDb25maWd1cmVDb21tYW5kRWRpdEhlbHBlckFkdmljZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRkYmI2MzEKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5zZXJ2aWNlLnR5cGVzL3NyYy9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvc2VydmljZS90eXBlcy9hZHZpY2UvQWZ0ZXJDb25maWd1cmVDb21tYW5kRWRpdEhlbHBlckFkdmljZS5qYXZhCkBAIC0wLDAgKzEsNDcgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyAqIENvcHlyaWdodCAoYykgMjAxNSBDRUEgTElTVC4NCisgKg0KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCisgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCisgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICoNCisgKiBDb250cmlidXRvcnM6DQorICogIEJlbm9pdCBNYWdnaSAoQ0VBIExJU1QpIGJlbm9pdC5tYWdnaUBjZWEuZnIgLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24NCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorcGFja2FnZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuc2VydmljZS50eXBlcy5hZHZpY2U7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLmdtZi5ydW50aW1lLmNvbW1vbi5jb3JlLmNvbW1hbmQuSUNvbW1hbmQ7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmdtZi5ydW50aW1lLmVtZi50eXBlLmNvcmUuZWRpdGhlbHBlci5BYnN0cmFjdEVkaXRIZWxwZXJBZHZpY2U7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmdtZi5ydW50aW1lLmVtZi50eXBlLmNvcmUucmVxdWVzdHMuQ29uZmlndXJlUmVxdWVzdDsNCisNCisvKioNCisgKiBUaGUgRWRpdEhlbHBlckFkdmljZSBjbGFzcyB1c2VkIGZvciBDb25zdHJhaW50UHJvcGVydHkNCisgKiBHZXQgdGhlIGNvbW1hbmQgZnJvbSBncmFwaGljYWwgZWxlbWVudCB0eXBlIHRvIHR5cGUgdGhlIHByb3BlcnR5IGJ5IGEgY29uc3RyYWludCBibG9jaw0KKyAqDQorICovDQorcHVibGljIGNsYXNzIEFmdGVyQ29uZmlndXJlQ29tbWFuZEVkaXRIZWxwZXJBZHZpY2UgZXh0ZW5kcyBBYnN0cmFjdEVkaXRIZWxwZXJBZHZpY2Ugew0KKw0KKw0KKwkvKioNCisJICogUGFyYW1ldGVyIGlkIHVzZWQgdG8gcGFzcyB0aGUgY29tbWFuZCBmb3Igc2V0dGluZyB0aGUgdHlwZSBvZiB0aGUgcHJvcGVydHkNCisJICovDQorCXB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEFGVEVSX0NPTkZJR1VSRV9DT01NQU5EID0gIkFGVEVSX0NPTkZJR1VSRV9DT01NQU5EIjsgLy8kTk9OLU5MUy0xJA0KKw0KKwkNCisJLyoqDQorCSAqIEBzZWUgb3JnLmVjbGlwc2UuZ21mLnJ1bnRpbWUuZW1mLnR5cGUuY29yZS5lZGl0aGVscGVyLkFic3RyYWN0RWRpdEhlbHBlckFkdmljZSNnZXRBZnRlckNvbmZpZ3VyZUNvbW1hbmQob3JnLmVjbGlwc2UuZ21mLnJ1bnRpbWUuZW1mLnR5cGUuY29yZS5yZXF1ZXN0cy5Db25maWd1cmVSZXF1ZXN0KQ0KKwkgKg0KKwkgKiBAcGFyYW0gcmVxdWVzdA0KKwkgKiBAcmV0dXJuDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHJvdGVjdGVkIElDb21tYW5kIGdldEFmdGVyQ29uZmlndXJlQ29tbWFuZChDb25maWd1cmVSZXF1ZXN0IHJlcXVlc3QpIHsNCisJCU9iamVjdCBwYXJhbWV0ZXIgPSByZXF1ZXN0LmdldFBhcmFtZXRlcihBRlRFUl9DT05GSUdVUkVfQ09NTUFORCk7DQorDQorCQlpZiAocGFyYW1ldGVyIGluc3RhbmNlb2YgSUNvbW1hbmQpIHsNCisJCQlyZXR1cm4gKElDb21tYW5kKSBwYXJhbWV0ZXI7DQorCQl9DQorCQlyZXR1cm4gc3VwZXIuZ2V0QWZ0ZXJDb25maWd1cmVDb21tYW5kKHJlcXVlc3QpOw0KKwl9DQorfQ0KZGlmZiAtLWdpdCBhL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnNlcnZpY2UudHlwZXMvc3JjL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9zZXJ2aWNlL3R5cGVzL2FkdmljZS9Db25zdHJhaW50UHJvcGVydHlFZGl0SGVscGVyQWR2aWNlLmphdmEgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5zZXJ2aWNlLnR5cGVzL3NyYy9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvc2VydmljZS90eXBlcy9hZHZpY2UvQ29uc3RyYWludFByb3BlcnR5RWRpdEhlbHBlckFkdmljZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYzNTE3ZDAKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5zZXJ2aWNlLnR5cGVzL3NyYy9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvc2VydmljZS90eXBlcy9hZHZpY2UvQ29uc3RyYWludFByb3BlcnR5RWRpdEhlbHBlckFkdmljZS5qYXZhCkBAIC0wLDAgKzEsNDcgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyAqIENvcHlyaWdodCAoYykgMjAxNSBDRUEgTElTVC4NCisgKg0KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCisgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCisgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICoNCisgKiBDb250cmlidXRvcnM6DQorICogIEJlbm9pdCBNYWdnaSAoQ0VBIExJU1QpIGJlbm9pdC5tYWdnaUBjZWEuZnIgLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24NCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorcGFja2FnZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuc2VydmljZS50eXBlcy5hZHZpY2U7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLmdtZi5ydW50aW1lLmNvbW1vbi5jb3JlLmNvbW1hbmQuSUNvbW1hbmQ7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmdtZi5ydW50aW1lLmVtZi50eXBlLmNvcmUuZWRpdGhlbHBlci5BYnN0cmFjdEVkaXRIZWxwZXJBZHZpY2U7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmdtZi5ydW50aW1lLmVtZi50eXBlLmNvcmUucmVxdWVzdHMuQ29uZmlndXJlUmVxdWVzdDsNCisNCisvKioNCisgKiBUaGUgRWRpdEhlbHBlckFkdmljZSBjbGFzcyB1c2VkIGZvciBDb25zdHJhaW50UHJvcGVydHkNCisgKiBHZXQgdGhlIGNvbW1hbmQgZnJvbSBncmFwaGljYWwgZWxlbWVudCB0eXBlIHRvIHR5cGUgdGhlIHByb3BlcnR5IGJ5IGEgY29uc3RyYWludCBibG9jaw0KKyAqDQorICovDQorcHVibGljIGNsYXNzIENvbnN0cmFpbnRQcm9wZXJ0eUVkaXRIZWxwZXJBZHZpY2UgZXh0ZW5kcyBBYnN0cmFjdEVkaXRIZWxwZXJBZHZpY2Ugew0KKw0KKw0KKwkvKioNCisJICogUGFyYW1ldGVyIGlkIHVzZWQgdG8gcGFzcyB0aGUgY29tbWFuZCBmb3Igc2V0dGluZyB0aGUgdHlwZSBvZiB0aGUgcHJvcGVydHkNCisJICovDQorCXB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFNFVF9DT05TVFJBSU5UX0lDT01NQU5EID0gIlNFVF9DT05TVFJBSU5UX0lDT01NQU5EIjsgLy8kTk9OLU5MUy0xJA0KKw0KKwkNCisJLyoqDQorCSAqIEBzZWUgb3JnLmVjbGlwc2UuZ21mLnJ1bnRpbWUuZW1mLnR5cGUuY29yZS5lZGl0aGVscGVyLkFic3RyYWN0RWRpdEhlbHBlckFkdmljZSNnZXRBZnRlckNvbmZpZ3VyZUNvbW1hbmQob3JnLmVjbGlwc2UuZ21mLnJ1bnRpbWUuZW1mLnR5cGUuY29yZS5yZXF1ZXN0cy5Db25maWd1cmVSZXF1ZXN0KQ0KKwkgKg0KKwkgKiBAcGFyYW0gcmVxdWVzdA0KKwkgKiBAcmV0dXJuDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHJvdGVjdGVkIElDb21tYW5kIGdldEFmdGVyQ29uZmlndXJlQ29tbWFuZChDb25maWd1cmVSZXF1ZXN0IHJlcXVlc3QpIHsNCisJCU9iamVjdCBwYXJhbWV0ZXIgPSByZXF1ZXN0LmdldFBhcmFtZXRlcihTRVRfQ09OU1RSQUlOVF9JQ09NTUFORCk7DQorDQorCQlpZiAocGFyYW1ldGVyIGluc3RhbmNlb2YgSUNvbW1hbmQpIHsNCisJCQlyZXR1cm4gKElDb21tYW5kKSBwYXJhbWV0ZXI7DQorCQl9DQorCQlyZXR1cm4gc3VwZXIuZ2V0QWZ0ZXJDb25maWd1cmVDb21tYW5kKHJlcXVlc3QpOw0KKwl9DQorfQ0KZGlmZiAtLWdpdCBhL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnNlcnZpY2UudHlwZXMvc3JjL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9zZXJ2aWNlL3R5cGVzL2FkdmljZS9QYXJ0QXNzb2NpYXRpb25FZGl0SGVscGVyQWR2aWNlLmphdmEgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5zZXJ2aWNlLnR5cGVzL3NyYy9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvc2VydmljZS90eXBlcy9hZHZpY2UvUGFydEFzc29jaWF0aW9uRWRpdEhlbHBlckFkdmljZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcwMzhhY2UKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5zZXJ2aWNlLnR5cGVzL3NyYy9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvc2VydmljZS90eXBlcy9hZHZpY2UvUGFydEFzc29jaWF0aW9uRWRpdEhlbHBlckFkdmljZS5qYXZhCkBAIC0wLDAgKzEsNTcgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyAqIENvcHlyaWdodCAoYykgMjAxNSBDRUEgTElTVC4NCisgKg0KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCisgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCisgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICoNCisgKiBDb250cmlidXRvcnM6DQorICogIEJlbm9pdCBNYWdnaSAoQ0VBIExJU1QpIGJlbm9pdC5tYWdnaUBjZWEuZnIgLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24NCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorcGFja2FnZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuc2VydmljZS50eXBlcy5hZHZpY2U7DQorDQorDQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUuY29tbWFuZHMuRXhlY3V0aW9uRXhjZXB0aW9uOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSUFkYXB0YWJsZTsNCitpbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklQcm9ncmVzc01vbml0b3I7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmdtZi5ydW50aW1lLmNvbW1vbi5jb3JlLmNvbW1hbmQuQ29tbWFuZFJlc3VsdDsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZ21mLnJ1bnRpbWUuY29tbW9uLmNvcmUuY29tbWFuZC5JQ29tbWFuZDsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZ21mLnJ1bnRpbWUuZW1mLnR5cGUuY29yZS5jb21tYW5kcy5Db25maWd1cmVFbGVtZW50Q29tbWFuZDsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZ21mLnJ1bnRpbWUuZW1mLnR5cGUuY29yZS5lZGl0aGVscGVyLkFic3RyYWN0RWRpdEhlbHBlckFkdmljZTsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZ21mLnJ1bnRpbWUuZW1mLnR5cGUuY29yZS5yZXF1ZXN0cy5Db25maWd1cmVSZXF1ZXN0Ow0KK2ltcG9ydCBvcmcuZWNsaXBzZS51bWwyLnVtbC5BZ2dyZWdhdGlvbktpbmQ7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnVtbDIudW1sLkFzc29jaWF0aW9uOw0KKw0KKw0KKy8qKg0KKyAqIFRoZSBoZWxwZXJhZHZpY2UgY2xhc3MgdXNlZCBmb3IgUGFydEFzc29jaWF0aW9uDQorICoNCisgKi8NCitwdWJsaWMgY2xhc3MgUGFydEFzc29jaWF0aW9uRWRpdEhlbHBlckFkdmljZSBleHRlbmRzIEFic3RyYWN0RWRpdEhlbHBlckFkdmljZSB7DQorDQorDQorCS8qKg0KKwkgKiBAc2VlIG9yZy5lY2xpcHNlLmdtZi5ydW50aW1lLmVtZi50eXBlLmNvcmUuZWRpdGhlbHBlci5BYnN0cmFjdEVkaXRIZWxwZXJBZHZpY2UjZ2V0QmVmb3JlQ29uZmlndXJlQ29tbWFuZChvcmcuZWNsaXBzZS5nbWYucnVudGltZS5lbWYudHlwZS5jb3JlLnJlcXVlc3RzLkNvbmZpZ3VyZVJlcXVlc3QpDQorCSAqDQorCSAqIEBwYXJhbSByZXF1ZXN0DQorCSAqIEByZXR1cm4NCisJICovDQorCUBPdmVycmlkZQ0KKwlwcm90ZWN0ZWQgSUNvbW1hbmQgZ2V0QmVmb3JlQ29uZmlndXJlQ29tbWFuZChDb25maWd1cmVSZXF1ZXN0IHJlcXVlc3QpIHsNCisJCWZpbmFsIEFzc29jaWF0aW9uIGFzc29jaWF0aW9uID0gKEFzc29jaWF0aW9uKSByZXF1ZXN0LmdldEVsZW1lbnRUb0NvbmZpZ3VyZSgpOw0KKwkJDQorCQlyZXR1cm4gbmV3IENvbmZpZ3VyZUVsZW1lbnRDb21tYW5kKHJlcXVlc3QpIHsNCisNCisJCQlAT3ZlcnJpZGUNCisJCQlwcm90ZWN0ZWQgQ29tbWFuZFJlc3VsdCBkb0V4ZWN1dGVXaXRoUmVzdWx0KElQcm9ncmVzc01vbml0b3IgcHJvZ3Jlc3NNb25pdG9yLCBJQWRhcHRhYmxlIGluZm8pIHRocm93cyBFeGVjdXRpb25FeGNlcHRpb24gew0KKw0KKwkJCQkvLyBGSVhNRSA6IHRoaXMga2luZCBvZiB0aGluZyBpcyBwcm9iYWJseSBwb3NzaWJsZSB3aXRoIGFuIGVsZW1lbnQgdHlwZSBjb25maWd1cmF0aW9uIG1vZGVsDQorCQkJCWFzc29jaWF0aW9uLmdldE1lbWJlckVuZHMoKS5nZXQoMCkuc2V0QWdncmVnYXRpb24oQWdncmVnYXRpb25LaW5kLkNPTVBPU0lURV9MSVRFUkFMKTsNCisJCQkJDQorCQkJCXJldHVybiBDb21tYW5kUmVzdWx0Lm5ld09LQ29tbWFuZFJlc3VsdChhc3NvY2lhdGlvbik7DQorCQkJfQ0KKwkJfTsNCisJfQ0KK30NCmRpZmYgLS1naXQgYS9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5zZXJ2aWNlLnR5cGVzL3NyYy9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvc2VydmljZS90eXBlcy9hZHZpY2UvUXVhbnRpdHlLaW5kRWRpdEhlbHBlckFkdmljZS5qYXZhIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuc2VydmljZS50eXBlcy9zcmMvb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L3NlcnZpY2UvdHlwZXMvYWR2aWNlL1F1YW50aXR5S2luZEVkaXRIZWxwZXJBZHZpY2UuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wOTg4YWRiCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuc2VydmljZS50eXBlcy9zcmMvb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L3NlcnZpY2UvdHlwZXMvYWR2aWNlL1F1YW50aXR5S2luZEVkaXRIZWxwZXJBZHZpY2UuamF2YQpAQCAtMCwwICsxLDExNyBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorICogQ29weXJpZ2h0IChjKSAyMDE1IENFQSBMSVNULg0KKyAqDQorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KKyAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQorICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgKg0KKyAqIENvbnRyaWJ1dG9yczoNCisgKiAgQmVub2l0IE1hZ2dpIChDRUEgTElTVCkgYmVub2l0Lm1hZ2dpQGNlYS5mciAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbg0KKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCisNCitwYWNrYWdlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5zZXJ2aWNlLnR5cGVzLmFkdmljZTsNCisNCisNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5jb21tYW5kcy5FeGVjdXRpb25FeGNlcHRpb247DQoraW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JQWRhcHRhYmxlOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSVByb2dyZXNzTW9uaXRvcjsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi51dGlsLkVMaXN0Ow0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY29tbW9uLnV0aWwuVVJJOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRU9iamVjdDsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLnJlc291cmNlLlJlc291cmNlOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUucmVzb3VyY2UuUmVzb3VyY2VTZXQ7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5yZXNvdXJjZS5pbXBsLlJlc291cmNlU2V0SW1wbDsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZ21mLnJ1bnRpbWUuY29tbW9uLmNvcmUuY29tbWFuZC5Db21tYW5kUmVzdWx0Ow0KK2ltcG9ydCBvcmcuZWNsaXBzZS5nbWYucnVudGltZS5jb21tb24uY29yZS5jb21tYW5kLklDb21tYW5kOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5nbWYucnVudGltZS5lbWYudHlwZS5jb3JlLmNvbW1hbmRzLkNvbmZpZ3VyZUVsZW1lbnRDb21tYW5kOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5nbWYucnVudGltZS5lbWYudHlwZS5jb3JlLmVkaXRoZWxwZXIuQWJzdHJhY3RFZGl0SGVscGVyQWR2aWNlOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5nbWYucnVudGltZS5lbWYudHlwZS5jb3JlLnJlcXVlc3RzLkNvbmZpZ3VyZVJlcXVlc3Q7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC51dGlsLlN5c21sUmVzb3VyY2U7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnVtbDIudW1sLkNsYXNzaWZpZXI7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnVtbDIudW1sLkluc3RhbmNlU3BlY2lmaWNhdGlvbjsNCitpbXBvcnQgb3JnLmVjbGlwc2UudW1sMi51bWwuUGFja2FnZTsNCitpbXBvcnQgb3JnLmVjbGlwc2UudW1sMi51bWwuUGFja2FnZWFibGVFbGVtZW50Ow0KK2ltcG9ydCBvcmcuZWNsaXBzZS51bWwyLnVtbC5Qcm9wZXJ0eTsNCitpbXBvcnQgb3JnLmVjbGlwc2UudW1sMi51bWwuU2xvdDsNCitpbXBvcnQgb3JnLmVjbGlwc2UudW1sMi51bWwuVU1MUGFja2FnZTsNCisNCisvKioNCisgKiBUaGUgaGVscGVyYWR2aWNlIGNsYXNzIHVzZWQgZm9yIFF1YW50aXR5S2luZC4NCisgKiAgLSBJbml0IHRoZSB0eXBlIG9mIHRoZSBpbnN0YW5jZSBzcGVjaWZpY2F0aW9uDQorICogIC0gY3JlYXRlIGFsbCBzbG90IGNvcnJlc3BvbmRpbmcgdG8gcXVhbnRpdHlLaW5kIGF0dHJpYnV0ZXMNCisgKg0KKyAqLw0KK3B1YmxpYyBjbGFzcyBRdWFudGl0eUtpbmRFZGl0SGVscGVyQWR2aWNlIGV4dGVuZHMgQWJzdHJhY3RFZGl0SGVscGVyQWR2aWNlIHsNCisNCisJLyoqDQorCSAqIA0KKwkgKi8NCisJcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIFVOSVRfQU5EX1FVQU5USVRZX0tJTkQgPSAiVW5pdEFuZFF1YW50aXR5S2luZCI7DQorDQorCS8qKg0KKwkgKiANCisJICovDQorCXByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBRVUFOVElUWV9LSU5EID0gIlF1YW50aXR5S2luZCI7DQorDQorCQ0KKwkNCisJLy8gVE9ETyA6IHRoaXMgbWV0aG9kIHNob3VsZCBiZSBwcm92aWRlZCBhcyBBUEkgaW4gYW4gdXBwZXIgbGV2ZWwgKGFscmVhZHkgZXhpc3QgPykNCisJcHJpdmF0ZSBDbGFzc2lmaWVyIGdldENsYXNzQnlOYW1lU3BhY2UoUmVzb3VyY2UgcmVzb3VyY2UsIFN0cmluZyBwYWNrYWdlTmFtZSwgU3RyaW5nIGNsYXNzaWZpZXJOYW1lKSB7DQorCQlFTGlzdDxFT2JqZWN0PiBjb250ZW50cyA9IHJlc291cmNlLmdldENvbnRlbnRzKCk7CQ0KKwkJZm9yIChFT2JqZWN0IGVPYmplY3QgOiBjb250ZW50cykgew0KKwkJCWlmIChlT2JqZWN0IGluc3RhbmNlb2YgUGFja2FnZSl7DQorCQkJCVBhY2thZ2UgcGtnID0gKFBhY2thZ2UpIGVPYmplY3Q7DQorCQkJCQ0KKwkJCQlQYWNrYWdlYWJsZUVsZW1lbnQgcGFja2FnZWRFbGVtZW50MiA9IHBrZy5nZXRQYWNrYWdlZEVsZW1lbnQocGFja2FnZU5hbWUpOw0KKwkJCQlQYWNrYWdlYWJsZUVsZW1lbnQgcGFja2FnZWRFbGVtZW50NCA9ICggKFBhY2thZ2UpIHBhY2thZ2VkRWxlbWVudDIpLmdldFBhY2thZ2VkRWxlbWVudChjbGFzc2lmaWVyTmFtZSk7DQorCQkJCXJldHVybiAoQ2xhc3NpZmllcikgcGFja2FnZWRFbGVtZW50NDsNCisJCQl9DQorCQl9DQorCQkNCisJCQ0KKwkJcmV0dXJuIG51bGw7DQorCQkNCisJfQkNCisNCisJLyoqDQorCSAqIEBzZWUgb3JnLmVjbGlwc2UuZ21mLnJ1bnRpbWUuZW1mLnR5cGUuY29yZS5lZGl0aGVscGVyLkFic3RyYWN0RWRpdEhlbHBlckFkdmljZSNnZXRCZWZvcmVDb25maWd1cmVDb21tYW5kKG9yZy5lY2xpcHNlLmdtZi5ydW50aW1lLmVtZi50eXBlLmNvcmUucmVxdWVzdHMuQ29uZmlndXJlUmVxdWVzdCkNCisJICoNCisJICogQHBhcmFtIHJlcXVlc3QNCisJICogQHJldHVybg0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXByb3RlY3RlZCBJQ29tbWFuZCBnZXRCZWZvcmVDb25maWd1cmVDb21tYW5kKENvbmZpZ3VyZVJlcXVlc3QgcmVxdWVzdCkgew0KKwkJZmluYWwgSW5zdGFuY2VTcGVjaWZpY2F0aW9uIGluc3RhbmNlU3BlY2lmaWNhdGlvbiA9IChJbnN0YW5jZVNwZWNpZmljYXRpb24pIHJlcXVlc3QuZ2V0RWxlbWVudFRvQ29uZmlndXJlKCk7DQorCQkNCisJCXJldHVybiBuZXcgQ29uZmlndXJlRWxlbWVudENvbW1hbmQocmVxdWVzdCkgew0KKw0KKw0KKwkJCUBPdmVycmlkZQ0KKwkJCXByb3RlY3RlZCBDb21tYW5kUmVzdWx0IGRvRXhlY3V0ZVdpdGhSZXN1bHQoSVByb2dyZXNzTW9uaXRvciBwcm9ncmVzc01vbml0b3IsIElBZGFwdGFibGUgaW5mbykgdGhyb3dzIEV4ZWN1dGlvbkV4Y2VwdGlvbiB7DQorCQkJCQ0KKwkJCQkvLyBnZXQgc3lzbWwgbGlicmFyeQ0KKwkJCQlSZXNvdXJjZVNldCByc2V0ID0gbmV3IFJlc291cmNlU2V0SW1wbCgpOw0KKwkJCQlVUkkgY3JlYXRlVVJJID0gVVJJLmNyZWF0ZVVSSShTeXNtbFJlc291cmNlLkxJQlJBUllfUEFUSCk7DQorCQkJCVJlc291cmNlIHJlcyA9IHJzZXQuZ2V0UmVzb3VyY2UoY3JlYXRlVVJJLHRydWUpOw0KKwkJCQlDbGFzc2lmaWVyIHF1YW50aXR5S2luZENsYXNzaWZpZXIgPSBnZXRDbGFzc0J5TmFtZVNwYWNlKHJlcywgVU5JVF9BTkRfUVVBTlRJVFlfS0lORCwgUVVBTlRJVFlfS0lORCk7DQorCQkJCQ0KKwkJCQkvLyBzZXQgY2xhc3NpZmllciB0byB1bml0DQorCQkJCWluc3RhbmNlU3BlY2lmaWNhdGlvbi5nZXRDbGFzc2lmaWVycygpLmFkZChxdWFudGl0eUtpbmRDbGFzc2lmaWVyKTsNCisJCQkJDQorCQkJCUVMaXN0PFByb3BlcnR5PiBhdHRyaWJ1dGVzID0gcXVhbnRpdHlLaW5kQ2xhc3NpZmllci5nZXRBdHRyaWJ1dGVzKCk7DQorCQkJCQ0KKwkJCQlmb3IgKFByb3BlcnR5IHByb3BlcnR5IDogYXR0cmlidXRlcykgew0KKwkJCQkJU2xvdCBzbG90ID0gaW5zdGFuY2VTcGVjaWZpY2F0aW9uLmNyZWF0ZVNsb3QoKTsNCisJCQkJCXNsb3QuY3JlYXRlVmFsdWUocHJvcGVydHkuZ2V0TmFtZSgpLCBwcm9wZXJ0eS5nZXRUeXBlKCksIFVNTFBhY2thZ2UuZUlOU1RBTkNFLmdldExpdGVyYWxTdHJpbmcoKSk7DQorCQkJCQlzbG90LnNldERlZmluaW5nRmVhdHVyZShwcm9wZXJ0eSk7DQorCQkJCX0NCisJCQ0KKwkJCQlyZXR1cm4gQ29tbWFuZFJlc3VsdC5uZXdPS0NvbW1hbmRSZXN1bHQoaW5zdGFuY2VTcGVjaWZpY2F0aW9uKTsNCisJCQl9DQorCQl9Ow0KKwkJDQorCX0NCisNCit9DQpkaWZmIC0tZ2l0IGEvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuc2VydmljZS50eXBlcy9zcmMvb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L3NlcnZpY2UvdHlwZXMvYWR2aWNlL1NoYXJlZEFzc29jaWF0aW9uRWRpdEhlbHBlckFkdmljZS5qYXZhIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuc2VydmljZS50eXBlcy9zcmMvb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L3NlcnZpY2UvdHlwZXMvYWR2aWNlL1NoYXJlZEFzc29jaWF0aW9uRWRpdEhlbHBlckFkdmljZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcxODEzNzkKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5zZXJ2aWNlLnR5cGVzL3NyYy9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvc2VydmljZS90eXBlcy9hZHZpY2UvU2hhcmVkQXNzb2NpYXRpb25FZGl0SGVscGVyQWR2aWNlLmphdmEKQEAgLTAsMCArMSw1NyBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorICogQ29weXJpZ2h0IChjKSAyMDE1IENFQSBMSVNULg0KKyAqDQorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KKyAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQorICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgKg0KKyAqIENvbnRyaWJ1dG9yczoNCisgKiAgQmVub2l0IE1hZ2dpIChDRUEgTElTVCkgYmVub2l0Lm1hZ2dpQGNlYS5mciAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbg0KKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCitwYWNrYWdlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5zZXJ2aWNlLnR5cGVzLmFkdmljZTsNCisNCisNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5jb21tYW5kcy5FeGVjdXRpb25FeGNlcHRpb247DQoraW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JQWRhcHRhYmxlOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSVByb2dyZXNzTW9uaXRvcjsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZ21mLnJ1bnRpbWUuY29tbW9uLmNvcmUuY29tbWFuZC5Db21tYW5kUmVzdWx0Ow0KK2ltcG9ydCBvcmcuZWNsaXBzZS5nbWYucnVudGltZS5jb21tb24uY29yZS5jb21tYW5kLklDb21tYW5kOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5nbWYucnVudGltZS5lbWYudHlwZS5jb3JlLmNvbW1hbmRzLkNvbmZpZ3VyZUVsZW1lbnRDb21tYW5kOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5nbWYucnVudGltZS5lbWYudHlwZS5jb3JlLmVkaXRoZWxwZXIuQWJzdHJhY3RFZGl0SGVscGVyQWR2aWNlOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5nbWYucnVudGltZS5lbWYudHlwZS5jb3JlLnJlcXVlc3RzLkNvbmZpZ3VyZVJlcXVlc3Q7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnVtbDIudW1sLkFnZ3JlZ2F0aW9uS2luZDsNCitpbXBvcnQgb3JnLmVjbGlwc2UudW1sMi51bWwuQXNzb2NpYXRpb247DQorDQorDQorLyoqDQorICogVGhlIGhlbHBlcmFkdmljZSBjbGFzcyB1c2VkIGZvciBTaGFyZWRBc3NvY2lhdGlvbg0KKyAqDQorICovDQorcHVibGljIGNsYXNzIFNoYXJlZEFzc29jaWF0aW9uRWRpdEhlbHBlckFkdmljZSBleHRlbmRzIEFic3RyYWN0RWRpdEhlbHBlckFkdmljZSB7DQorDQorDQorCS8qKg0KKwkgKiBAc2VlIG9yZy5lY2xpcHNlLmdtZi5ydW50aW1lLmVtZi50eXBlLmNvcmUuZWRpdGhlbHBlci5BYnN0cmFjdEVkaXRIZWxwZXJBZHZpY2UjZ2V0QmVmb3JlQ29uZmlndXJlQ29tbWFuZChvcmcuZWNsaXBzZS5nbWYucnVudGltZS5lbWYudHlwZS5jb3JlLnJlcXVlc3RzLkNvbmZpZ3VyZVJlcXVlc3QpDQorCSAqDQorCSAqIEBwYXJhbSByZXF1ZXN0DQorCSAqIEByZXR1cm4NCisJICovDQorCUBPdmVycmlkZQ0KKwlwcm90ZWN0ZWQgSUNvbW1hbmQgZ2V0QmVmb3JlQ29uZmlndXJlQ29tbWFuZChDb25maWd1cmVSZXF1ZXN0IHJlcXVlc3QpIHsNCisJCWZpbmFsIEFzc29jaWF0aW9uIGFzc29jaWF0aW9uID0gKEFzc29jaWF0aW9uKSByZXF1ZXN0LmdldEVsZW1lbnRUb0NvbmZpZ3VyZSgpOw0KKwkJDQorCQlyZXR1cm4gbmV3IENvbmZpZ3VyZUVsZW1lbnRDb21tYW5kKHJlcXVlc3QpIHsNCisNCisJCQlAT3ZlcnJpZGUNCisJCQlwcm90ZWN0ZWQgQ29tbWFuZFJlc3VsdCBkb0V4ZWN1dGVXaXRoUmVzdWx0KElQcm9ncmVzc01vbml0b3IgcHJvZ3Jlc3NNb25pdG9yLCBJQWRhcHRhYmxlIGluZm8pIHRocm93cyBFeGVjdXRpb25FeGNlcHRpb24gew0KKw0KKwkJCQkvLyBGSVhNRSA6IHRoaXMga2luZCBvZiB0aGluZyBpcyBwcm9iYWJseSBwb3NzaWJsZSB3aXRoIGFuIGVsZW1lbnQgdHlwZSBjb25maWd1cmF0aW9uIG1vZGVsDQorCQkJCWFzc29jaWF0aW9uLmdldE1lbWJlckVuZHMoKS5nZXQoMCkuc2V0QWdncmVnYXRpb24oQWdncmVnYXRpb25LaW5kLlNIQVJFRF9MSVRFUkFMKTsNCisJCQkJDQorCQkJCXJldHVybiBDb21tYW5kUmVzdWx0Lm5ld09LQ29tbWFuZFJlc3VsdChhc3NvY2lhdGlvbik7DQorCQkJfQ0KKwkJfTsNCisJfQ0KK30NCmRpZmYgLS1naXQgYS9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5zZXJ2aWNlLnR5cGVzL3NyYy9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvc2VydmljZS90eXBlcy9hZHZpY2UvVW5pdEVkaXRIZWxwZXJBZHZpY2UuamF2YSBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnNlcnZpY2UudHlwZXMvc3JjL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9zZXJ2aWNlL3R5cGVzL2FkdmljZS9Vbml0RWRpdEhlbHBlckFkdmljZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYxY2Q3MWMKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5zZXJ2aWNlLnR5cGVzL3NyYy9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvc2VydmljZS90eXBlcy9hZHZpY2UvVW5pdEVkaXRIZWxwZXJBZHZpY2UuamF2YQpAQCAtMCwwICsxLDEwOCBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorICogQ29weXJpZ2h0IChjKSAyMDE0IENFQSBMSVNULg0KKyAqDQorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KKyAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQorICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgKg0KKyAqIENvbnRyaWJ1dG9yczoNCisgKiAgQmVub2l0IE1hZ2dpIChDRUEgTElTVCkgYmVub2l0Lm1hZ2dpQGNlYS5mciAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbg0KKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCitwYWNrYWdlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5zZXJ2aWNlLnR5cGVzLmFkdmljZTsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5jb21tYW5kcy5FeGVjdXRpb25FeGNlcHRpb247DQoraW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JQWRhcHRhYmxlOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSVByb2dyZXNzTW9uaXRvcjsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi51dGlsLkVMaXN0Ow0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY29tbW9uLnV0aWwuVVJJOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRU9iamVjdDsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLnJlc291cmNlLlJlc291cmNlOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUucmVzb3VyY2UuUmVzb3VyY2VTZXQ7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5yZXNvdXJjZS5pbXBsLlJlc291cmNlU2V0SW1wbDsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZ21mLnJ1bnRpbWUuY29tbW9uLmNvcmUuY29tbWFuZC5Db21tYW5kUmVzdWx0Ow0KK2ltcG9ydCBvcmcuZWNsaXBzZS5nbWYucnVudGltZS5jb21tb24uY29yZS5jb21tYW5kLklDb21tYW5kOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5nbWYucnVudGltZS5lbWYudHlwZS5jb3JlLmNvbW1hbmRzLkNvbmZpZ3VyZUVsZW1lbnRDb21tYW5kOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5nbWYucnVudGltZS5lbWYudHlwZS5jb3JlLmVkaXRoZWxwZXIuQWJzdHJhY3RFZGl0SGVscGVyQWR2aWNlOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5nbWYucnVudGltZS5lbWYudHlwZS5jb3JlLnJlcXVlc3RzLkNvbmZpZ3VyZVJlcXVlc3Q7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC51dGlsLlN5c21sUmVzb3VyY2U7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnVtbDIudW1sLkNsYXNzaWZpZXI7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnVtbDIudW1sLkluc3RhbmNlU3BlY2lmaWNhdGlvbjsNCitpbXBvcnQgb3JnLmVjbGlwc2UudW1sMi51bWwuUGFja2FnZTsNCitpbXBvcnQgb3JnLmVjbGlwc2UudW1sMi51bWwuUGFja2FnZWFibGVFbGVtZW50Ow0KK2ltcG9ydCBvcmcuZWNsaXBzZS51bWwyLnVtbC5Qcm9wZXJ0eTsNCitpbXBvcnQgb3JnLmVjbGlwc2UudW1sMi51bWwuU2xvdDsNCitpbXBvcnQgb3JnLmVjbGlwc2UudW1sMi51bWwuVU1MUGFja2FnZTsNCisNCisvKioNCisgKiBUaGUgaGVscGVyIGFkdmljZSBjbGFzcyB1c2VkIGZvciBVbml0Lg0KKyAqICAtIEluaXQgdGhlIHR5cGUgb2YgdGhlIGluc3RhbmNlIHNwZWNpZmljYXRpb24NCisgKiAgLSBjcmVhdGUgYWxsIHNsb3QgY29ycmVzcG9uZGluZyB0byBVbml0IGF0dHJpYnV0ZXMNCisgKg0KKyAqLw0KK3B1YmxpYyBjbGFzcyBVbml0RWRpdEhlbHBlckFkdmljZSBleHRlbmRzIEFic3RyYWN0RWRpdEhlbHBlckFkdmljZSB7DQorDQorCS8qKg0KKwkgKiANCisJICovDQorCXByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBVTklUID0gIlVuaXQiOw0KKwkvKioNCisJICogDQorCSAqLw0KKwlwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgVU5JVF9BTkRfUVVBTlRJVFlfS0lORCA9ICJVbml0QW5kUXVhbnRpdHlLaW5kIjsNCisNCisNCisJLy8gVE9ETyA6IHRoaXMgbWV0aG9kIHNob3VsZCBiZSBwcm92aWRlZCBhcyBBUEkgaW4gYW4gdXBwZXIgbGV2ZWwgKGFscmVhZHkgZXhpc3QgPykNCisJcHJpdmF0ZSBDbGFzc2lmaWVyIGdldENsYXNzQnlOYW1lU3BhY2UoUmVzb3VyY2UgcmVzb3VyY2UsIFN0cmluZyBwYWNrYWdlTmFtZSwgU3RyaW5nIGNsYXNzaWZpZXJOYW1lKSB7DQorDQorCQlFTGlzdDxFT2JqZWN0PiBjb250ZW50cyA9IHJlc291cmNlLmdldENvbnRlbnRzKCk7DQorCQkNCisJCWZvciAoRU9iamVjdCBlT2JqZWN0IDogY29udGVudHMpIHsNCisJCQlpZiAoZU9iamVjdCBpbnN0YW5jZW9mIFBhY2thZ2Upew0KKwkJCQlQYWNrYWdlIHBrZyA9IChQYWNrYWdlKSBlT2JqZWN0Ow0KKwkJCQkNCisJCQkJUGFja2FnZWFibGVFbGVtZW50IHBhY2thZ2VkRWxlbWVudDIgPSBwa2cuZ2V0UGFja2FnZWRFbGVtZW50KHBhY2thZ2VOYW1lKTsNCisJCQkJUGFja2FnZWFibGVFbGVtZW50IHBhY2thZ2VkRWxlbWVudDQgPSAoIChQYWNrYWdlKSBwYWNrYWdlZEVsZW1lbnQyKS5nZXRQYWNrYWdlZEVsZW1lbnQoY2xhc3NpZmllck5hbWUpOw0KKwkJCQlyZXR1cm4gKENsYXNzaWZpZXIpIHBhY2thZ2VkRWxlbWVudDQ7DQorCQkJfQ0KKwkJfQ0KKwkJcmV0dXJuIG51bGw7DQorCX0JDQorDQorDQorCS8qKg0KKwkgKiBAc2VlIG9yZy5lY2xpcHNlLmdtZi5ydW50aW1lLmVtZi50eXBlLmNvcmUuZWRpdGhlbHBlci5BYnN0cmFjdEVkaXRIZWxwZXJBZHZpY2UjZ2V0QmVmb3JlQ29uZmlndXJlQ29tbWFuZChvcmcuZWNsaXBzZS5nbWYucnVudGltZS5lbWYudHlwZS5jb3JlLnJlcXVlc3RzLkNvbmZpZ3VyZVJlcXVlc3QpDQorCSAqDQorCSAqIEBwYXJhbSByZXF1ZXN0DQorCSAqIEByZXR1cm4NCisJICovDQorCUBPdmVycmlkZQ0KKwlwcm90ZWN0ZWQgSUNvbW1hbmQgZ2V0QmVmb3JlQ29uZmlndXJlQ29tbWFuZChDb25maWd1cmVSZXF1ZXN0IHJlcXVlc3QpIHsNCisJCWZpbmFsIEluc3RhbmNlU3BlY2lmaWNhdGlvbiBpbnN0YW5jZVNwZWNpZmljYXRpb24gPSAoSW5zdGFuY2VTcGVjaWZpY2F0aW9uKSByZXF1ZXN0LmdldEVsZW1lbnRUb0NvbmZpZ3VyZSgpOw0KKwkJDQorCQlyZXR1cm4gbmV3IENvbmZpZ3VyZUVsZW1lbnRDb21tYW5kKHJlcXVlc3QpIHsNCisJCQlAT3ZlcnJpZGUNCisJCQlwcm90ZWN0ZWQgQ29tbWFuZFJlc3VsdCBkb0V4ZWN1dGVXaXRoUmVzdWx0KElQcm9ncmVzc01vbml0b3IgcHJvZ3Jlc3NNb25pdG9yLCBJQWRhcHRhYmxlIGluZm8pIHRocm93cyBFeGVjdXRpb25FeGNlcHRpb24gew0KKwkJCQkvLyBnZXQgc3lzbWwgbGlicmFyeQ0KKwkJCQkNCisJCQkJUmVzb3VyY2VTZXQgcnNldCA9IG5ldyBSZXNvdXJjZVNldEltcGwoKTsNCisJCQkJVVJJIGNyZWF0ZVVSSSA9IFVSSS5jcmVhdGVVUkkoU3lzbWxSZXNvdXJjZS5MSUJSQVJZX1BBVEgpOw0KKwkJCQlSZXNvdXJjZSByZXMgPSByc2V0LmdldFJlc291cmNlKGNyZWF0ZVVSSSx0cnVlKTsNCisNCisJCQkJQ2xhc3NpZmllciB1bml0Q2xhc3NpZmllciA9IGdldENsYXNzQnlOYW1lU3BhY2UocmVzLCBVTklUX0FORF9RVUFOVElUWV9LSU5ELCBVTklUKTsNCisJCQkJDQorCQkJCS8vIHNldCBjbGFzc2lmaWVyIHRvIHVuaXQNCisJCQkJaW5zdGFuY2VTcGVjaWZpY2F0aW9uLmdldENsYXNzaWZpZXJzKCkuYWRkKHVuaXRDbGFzc2lmaWVyKTsNCisJCQkJRUxpc3Q8UHJvcGVydHk+IGF0dHJpYnV0ZXMgPSB1bml0Q2xhc3NpZmllci5nZXRBdHRyaWJ1dGVzKCk7DQorCQkJCQ0KKwkJCQlmb3IgKFByb3BlcnR5IHByb3BlcnR5IDogYXR0cmlidXRlcykgew0KKwkJCQkJU2xvdCBzbG90ID0gaW5zdGFuY2VTcGVjaWZpY2F0aW9uLmNyZWF0ZVNsb3QoKTsNCisJCQkJCXNsb3QuY3JlYXRlVmFsdWUocHJvcGVydHkuZ2V0TmFtZSgpLCBwcm9wZXJ0eS5nZXRUeXBlKCksIFVNTFBhY2thZ2UuZUlOU1RBTkNFLmdldExpdGVyYWxTdHJpbmcoKSk7DQorCQkJCQlzbG90LnNldERlZmluaW5nRmVhdHVyZShwcm9wZXJ0eSk7DQorCQkJCX0JCQkJDQorCQkJCQ0KKwkJCQlyZXR1cm4gQ29tbWFuZFJlc3VsdC5uZXdPS0NvbW1hbmRSZXN1bHQoaW5zdGFuY2VTcGVjaWZpY2F0aW9uKTsNCisJCQl9DQorCQl9Ow0KKwl9DQorfQ0KZGlmZiAtLWdpdCBhL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnNlcnZpY2UudHlwZXMvc3JjL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9zZXJ2aWNlL3R5cGVzL3V0aWwvU3lzbWxTZXJ2aWNlVHlwZVV0aWwuamF2YSBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnNlcnZpY2UudHlwZXMvc3JjL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9zZXJ2aWNlL3R5cGVzL3V0aWwvU3lzbWxTZXJ2aWNlVHlwZVV0aWwuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMzJmMDI4Ci0tLSAvZGV2L251bGwKKysrIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuc2VydmljZS50eXBlcy9zcmMvb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L3NlcnZpY2UvdHlwZXMvdXRpbC9TeXNtbFNlcnZpY2VUeXBlVXRpbC5qYXZhCkBAIC0wLDAgKzEsMTc1IEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisgKiBDb3B5cmlnaHQgKGMpIDIwMTUgQ0VBIExJU1QgYW5kIG90aGVycy4NCisgKiANCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQorICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCisgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqDQorICogQ29udHJpYnV0b3JzOg0KKyAqICBCZW5vaXQgTWFnZ2kgKENFQSBMSVNUKSBiZW5vaXQubWFnZ2lAY2VhLmZyIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uDQorICogICANCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorDQorcGFja2FnZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuc2VydmljZS50eXBlcy51dGlsOw0KKw0KKy8qKg0KKyAqIExpc3QgYWxsIFN5c21sIDEuNCBlbGVtZW50IHR5cGUgaWRzDQorICoNCisgKi8NCitwdWJsaWMgY2xhc3MgU3lzbWxTZXJ2aWNlVHlwZVV0aWwgew0KKw0KKwlwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBPUkdfRUNMSVBTRV9QQVBZUlVTX1NZU01MMTRfVkFMVUVUWVBFPSAib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LlZhbHVlVHlwZSI7IC8vJE5PTi1OTFMtMSQNCisJICAgDQorCXB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIE9SR19FQ0xJUFNFX1BBUFlSVVNfU1lTTUwxNF9ESVNUUklCVVRFRFBST1BFUlRZPSAib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LkRpc3RyaWJ1dGVkUHJvcGVydHkiOyAvLyROT04tTkxTLTEkDQorDQorCXB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIE9SR19FQ0xJUFNFX1BBUFlSVVNfU1lTTUwxNF9DT05ORUNUT1JQUk9QRVJUWT0gIm9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5Db25uZWN0b3JQcm9wZXJ0eSI7IC8vJE5PTi1OTFMtMSQNCisNCisJcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgT1JHX0VDTElQU0VfUEFQWVJVU19TWVNNTDE0X1BBUlRJQ0lQQU5UUFJPUEVSVFk9ICJvcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuUGFydGljaXBhbnRQcm9wZXJ0eSI7IC8vJE5PTi1OTFMtMSQNCisNCisJcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgT1JHX0VDTElQU0VfUEFQWVJVU19TWVNNTDE0X0JJTkRJTkdDT05ORUNUT1I9ICJvcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuQmluZGluZ0Nvbm5lY3RvciI7IC8vJE5PTi1OTFMtMSQNCisNCisJcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgT1JHX0VDTElQU0VfUEFQWVJVU19TWVNNTDE0X0JMT0NLPSAib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LkJsb2NrIjsgLy8kTk9OLU5MUy0xJA0KKw0KKwlwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBPUkdfRUNMSVBTRV9QQVBZUlVTX1NZU01MMTRfUFJPUEVSVFlTUEVDSUZJQ1RZUEU9ICJvcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuUHJvcGVydHlTcGVjaWZpY1R5cGUiOyAvLyROT04tTkxTLTEkDQorDQorCXB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIE9SR19FQ0xJUFNFX1BBUFlSVVNfU1lTTUwxNF9ORVNURURDT05ORUNUT1JFTkRfQ09OTkVDVE9SRU5EPSAib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0Lk5lc3RlZENvbm5lY3RvckVuZF9Db25uZWN0b3JFbmQiOyAvLyROT04tTkxTLTEkDQorDQorCXB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIE9SR19FQ0xJUFNFX1BBUFlSVVNfU1lTTUwxNF9ORVNURURDT05ORUNUT1JFTkRfRUxFTUVOVD0gIm9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5OZXN0ZWRDb25uZWN0b3JFbmRfRWxlbWVudCI7IC8vJE5PTi1OTFMtMSQNCisNCisJcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgT1JHX0VDTElQU0VfUEFQWVJVU19TWVNNTDE0X0RJUkVDVEVEUkVMQVRJT05TSElQUFJPUEVSVFlQQVRIPSAib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LkRpcmVjdGVkUmVsYXRpb25zaGlwUHJvcGVydHlQYXRoIjsgLy8kTk9OLU5MUy0xJA0KKw0KKwlwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBPUkdfRUNMSVBTRV9QQVBZUlVTX1NZU01MMTRfRUxFTUVOVFBST1BFUlRZUEFUSD0gIm9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5FbGVtZW50UHJvcGVydHlQYXRoIjsgLy8kTk9OLU5MUy0xJA0KKw0KKwlwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBPUkdfRUNMSVBTRV9QQVBZUlVTX1NZU01MMTRfRU5EUEFUSE1VTFRJUExJQ0lUWT0gIm9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5FbmRQYXRoTXVsdGlwbGljaXR5IjsgLy8kTk9OLU5MUy0xJA0KKw0KKwlwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBPUkdfRUNMSVBTRV9QQVBZUlVTX1NZU01MMTRfQk9VTkRSRUZFUkVOQ0U9ICJvcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuQm91bmRSZWZlcmVuY2UiOyAvLyROT04tTkxTLTEkDQorDQorCXB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIE9SR19FQ0xJUFNFX1BBUFlSVVNfU1lTTUwxNF9BREpVTkNUUFJPUEVSVFk9ICJvcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuQWRqdW5jdFByb3BlcnR5IjsgLy8kTk9OLU5MUy0xJA0KKw0KKwlwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBPUkdfRUNMSVBTRV9QQVBZUlVTX1NZU01MMTRfQ0xBU1NJRklFUkJFSEFWSU9SUFJPUEVSVFk9ICJvcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuQ2xhc3NpZmllckJlaGF2aW9yUHJvcGVydHkiOyAvLyROT04tTkxTLTEkDQorDQorCXB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIE9SR19FQ0xJUFNFX1BBUFlSVVNfU1lTTUwxNF9JVEVNRkxPVz0gIm9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5JdGVtRmxvdyI7IC8vJE5PTi1OTFMtMSQNCisNCisJcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgT1JHX0VDTElQU0VfUEFQWVJVU19TWVNNTDE0X0ZMT1dQUk9QRVJUWT0gIm9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5GbG93UHJvcGVydHkiOyAvLyROT04tTkxTLTEkDQorDQorCXB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIE9SR19FQ0xJUFNFX1BBUFlSVVNfU1lTTUwxNF9GVUxMUE9SVD0gIm9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5GdWxsUG9ydCI7IC8vJE5PTi1OTFMtMSQNCisNCisJcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgT1JHX0VDTElQU0VfUEFQWVJVU19TWVNNTDE0X0lOVEVSRkFDRUJMT0NLPSAib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LkludGVyZmFjZUJsb2NrIjsgLy8kTk9OLU5MUy0xJA0KKw0KKwlwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBPUkdfRUNMSVBTRV9QQVBZUlVTX1NZU01MMTRfUFJPWFlQT1JUPSAib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LlByb3h5UG9ydCI7IC8vJE5PTi1OTFMtMSQNCisNCisJcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgT1JHX0VDTElQU0VfUEFQWVJVU19TWVNNTDE0X0FDQ0VQVENIQU5HRVNUUlVDVFVSQUxGRUFUVVJFRVZFTlRBQ1RJT049ICJvcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuQWNjZXB0Q2hhbmdlU3RydWN0dXJhbEZlYXR1cmVFdmVudEFjdGlvbiI7IC8vJE5PTi1OTFMtMSQNCisNCisJcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgT1JHX0VDTElQU0VfUEFQWVJVU19TWVNNTDE0X0NIQU5HRVNUUlVDVFVSQUxGRUFUVVJFRVZFTlQ9ICJvcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuQ2hhbmdlU3RydWN0dXJhbEZlYXR1cmVFdmVudCI7IC8vJE5PTi1OTFMtMSQNCisNCisJcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgT1JHX0VDTElQU0VfUEFQWVJVU19TWVNNTDE0X0RJUkVDVEVERkVBVFVSRT0gIm9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5EaXJlY3RlZEZlYXR1cmUiOyAvLyROT04tTkxTLTEkDQorDQorCXB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIE9SR19FQ0xJUFNFX1BBUFlSVVNfU1lTTUwxNF9JTlZPQ0FUSU9OT05ORVNURURQT1JUQUNUSU9OX0lOVk9DQVRJT05BQ1RJT049ICJvcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuSW52b2NhdGlvbk9uTmVzdGVkUG9ydEFjdGlvbl9JbnZvY2F0aW9uQWN0aW9uIjsgLy8kTk9OLU5MUy0xJA0KKw0KKwlwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBPUkdfRUNMSVBTRV9QQVBZUlVTX1NZU01MMTRfSU5WT0NBVElPTk9OTkVTVEVEUE9SVEFDVElPTl9FTEVNRU5UPSAib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0Lkludm9jYXRpb25Pbk5lc3RlZFBvcnRBY3Rpb25fRWxlbWVudCI7IC8vJE5PTi1OTFMtMSQNCisNCisJcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgT1JHX0VDTElQU0VfUEFQWVJVU19TWVNNTDE0X1RSSUdHRVJPTk5FU1RFRFBPUlRfVFJJR0dFUj0gIm9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5UcmlnZ2VyT25OZXN0ZWRQb3J0X1RyaWdnZXIiOyAvLyROT04tTkxTLTEkDQorDQorCXB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIE9SR19FQ0xJUFNFX1BBUFlSVVNfU1lTTUwxNF9UUklHR0VST05ORVNURURQT1JUX0VMRU1FTlQ9ICJvcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuVHJpZ2dlck9uTmVzdGVkUG9ydF9FbGVtZW50IjsgLy8kTk9OLU5MUy0xJA0KKw0KKwlwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBPUkdfRUNMSVBTRV9QQVBZUlVTX1NZU01MMTRfT1ZFUldSSVRFPSAib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0Lk92ZXJ3cml0ZSI7IC8vJE5PTi1OTFMtMSQNCisNCisJcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgT1JHX0VDTElQU0VfUEFQWVJVU19TWVNNTDE0X0NPTlRST0xPUEVSQVRPUl9CRUhBVklPUj0gIm9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5Db250cm9sT3BlcmF0b3JfQmVoYXZpb3IiOyAvLyROT04tTkxTLTEkDQorDQorCXB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIE9SR19FQ0xJUFNFX1BBUFlSVVNfU1lTTUwxNF9DT05UUk9MT1BFUkFUT1JfT1BFUkFUSU9OPSAib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LkNvbnRyb2xPcGVyYXRvcl9PcGVyYXRpb24iOyAvLyROT04tTkxTLTEkDQorDQorCXB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIE9SR19FQ0xJUFNFX1BBUFlSVVNfU1lTTUwxNF9SQVRFX0FDVElWSVRZRURHRT0gIm9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5SYXRlX0FjdGl2aXR5RWRnZSI7IC8vJE5PTi1OTFMtMSQNCisNCisJcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgT1JHX0VDTElQU0VfUEFQWVJVU19TWVNNTDE0X1JBVEVfUEFSQU1FVEVSPSAib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LlJhdGVfUGFyYW1ldGVyIjsgLy8kTk9OLU5MUy0xJA0KKw0KKwlwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBPUkdfRUNMSVBTRV9QQVBZUlVTX1NZU01MMTRfTk9CVUZGRVI9ICJvcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuTm9CdWZmZXIiOyAvLyROT04tTkxTLTEkDQorDQorCXB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIE9SR19FQ0xJUFNFX1BBUFlSVVNfU1lTTUwxNF9ESVNDUkVURV9BQ1RJVklUWUVER0U9ICJvcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuRGlzY3JldGVfQWN0aXZpdHlFZGdlIjsgLy8kTk9OLU5MUy0xJA0KKw0KKwlwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBPUkdfRUNMSVBTRV9QQVBZUlVTX1NZU01MMTRfRElTQ1JFVEVfUEFSQU1FVEVSPSAib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LkRpc2NyZXRlX1BhcmFtZXRlciI7IC8vJE5PTi1OTFMtMSQNCisNCisJcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgT1JHX0VDTElQU0VfUEFQWVJVU19TWVNNTDE0X0NPTlRJTlVPVVNfQUNUSVZJVFlFREdFPSAib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LkNvbnRpbnVvdXNfQWN0aXZpdHlFZGdlIjsgLy8kTk9OLU5MUy0xJA0KKw0KKwlwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBPUkdfRUNMSVBTRV9QQVBZUlVTX1NZU01MMTRfQ09OVElOVU9VU19QQVJBTUVURVI9ICJvcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuQ29udGludW91c19QYXJhbWV0ZXIiOyAvLyROT04tTkxTLTEkDQorDQorCXB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIE9SR19FQ0xJUFNFX1BBUFlSVVNfU1lTTUwxNF9QUk9CQUJJTElUWV9BQ1RJVklUWUVER0U9ICJvcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuUHJvYmFiaWxpdHlfQWN0aXZpdHlFZGdlIjsgLy8kTk9OLU5MUy0xJA0KKw0KKwlwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBPUkdfRUNMSVBTRV9QQVBZUlVTX1NZU01MMTRfUFJPQkFCSUxJVFlfUEFSQU1FVEVSU0VUPSAib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LlByb2JhYmlsaXR5X1BhcmFtZXRlclNldCI7IC8vJE5PTi1OTFMtMSQNCisNCisJcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgT1JHX0VDTElQU0VfUEFQWVJVU19TWVNNTDE0X09QVElPTkFMPSAib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0Lk9wdGlvbmFsIjsgLy8kTk9OLU5MUy0xJA0KKw0KKwlwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBPUkdfRUNMSVBTRV9QQVBZUlVTX1NZU01MMTRfUkFUSU9OQUxFPSAib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LlJhdGlvbmFsZSI7IC8vJE5PTi1OTFMtMSQNCisNCisJcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgT1JHX0VDTElQU0VfUEFQWVJVU19TWVNNTDE0X1ZJRVdfUEFDS0FHRT0gIm9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5WaWV3X1BhY2thZ2UiOyAvLyROT04tTkxTLTEkDQorDQorCXB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIE9SR19FQ0xJUFNFX1BBUFlSVVNfU1lTTUwxNF9WSUVXX0NMQVNTPSAib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LlZpZXdfQ2xhc3MiOyAvLyROT04tTkxTLTEkDQorDQorCXB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIE9SR19FQ0xJUFNFX1BBUFlSVVNfU1lTTUwxNF9DT05GT1JNX0RFUEVOREVOQ1k9ICJvcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuQ29uZm9ybV9EZXBlbmRlbmN5IjsgLy8kTk9OLU5MUy0xJA0KKw0KKwlwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBPUkdfRUNMSVBTRV9QQVBZUlVTX1NZU01MMTRfQ09ORk9STV9HRU5FUkFMSVpBVElPTj0gIm9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5Db25mb3JtX0dlbmVyYWxpemF0aW9uIjsgLy8kTk9OLU5MUy0xJA0KKw0KKwlwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBPUkdfRUNMSVBTRV9QQVBZUlVTX1NZU01MMTRfUFJPQkxFTT0gIm9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5Qcm9ibGVtIjsgLy8kTk9OLU5MUy0xJA0KKw0KKwlwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBPUkdfRUNMSVBTRV9QQVBZUlVTX1NZU01MMTRfVklFV1BPSU5UPSAib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LlZpZXdQb2ludCI7IC8vJE5PTi1OTFMtMSQNCisNCisJcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgT1JHX0VDTElQU0VfUEFQWVJVU19TWVNNTDE0X1NUQUtFSE9MREVSPSAib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LlN0YWtlaG9sZGVyIjsgLy8kTk9OLU5MUy0xJA0KKw0KKwlwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBPUkdfRUNMSVBTRV9QQVBZUlVTX1NZU01MMTRfRVhQT1NFPSAib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LkV4cG9zZSI7IC8vJE5PTi1OTFMtMSQNCisNCisJcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgT1JHX0VDTElQU0VfUEFQWVJVU19TWVNNTDE0X0VMRU1FTlRHUk9VUD0gIm9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5FbGVtZW50R3JvdXAiOyAvLyROT04tTkxTLTEkDQorDQorCXB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIE9SR19FQ0xJUFNFX1BBUFlSVVNfU1lTTUwxNF9DT05TVFJBSU5UQkxPQ0s9ICJvcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuQ29uc3RyYWludEJsb2NrIjsgLy8kTk9OLU5MUy0xJA0KKw0KKwlwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBPUkdfRUNMSVBTRV9QQVBZUlVTX1NZU01MMTRfQUxMT0NBVEVBQ1RJVklUWVBBUlRJVElPTj0gIm9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5BbGxvY2F0ZUFjdGl2aXR5UGFydGl0aW9uIjsgLy8kTk9OLU5MUy0xJA0KKw0KKwlwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBPUkdfRUNMSVBTRV9QQVBZUlVTX1NZU01MMTRfQUxMT0NBVEVfQUJTVFJBQ1RJT049ICJvcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuQWxsb2NhdGVfQWJzdHJhY3Rpb24iOyAvLyROT04tTkxTLTEkDQorDQorCXB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIE9SR19FQ0xJUFNFX1BBUFlSVVNfU1lTTUwxNF9BTExPQ0FURV9ESVJFQ1RFRFJFTEFUSU9OU0hJUD0gIm9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5BbGxvY2F0ZV9EaXJlY3RlZFJlbGF0aW9uc2hpcCI7IC8vJE5PTi1OTFMtMSQNCisNCisJcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgT1JHX0VDTElQU0VfUEFQWVJVU19TWVNNTDE0X0RFUklWRVJFUVRfQUJTVFJBQ1RJT049ICJvcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuRGVyaXZlUmVxdF9BYnN0cmFjdGlvbiI7IC8vJE5PTi1OTFMtMSQNCisNCisJcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgT1JHX0VDTElQU0VfUEFQWVJVU19TWVNNTDE0X0RFUklWRVJFUVRfRElSRUNURURSRUxBVElPTlNISVA9ICJvcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuRGVyaXZlUmVxdF9EaXJlY3RlZFJlbGF0aW9uc2hpcCI7IC8vJE5PTi1OTFMtMSQNCisNCisJcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgT1JHX0VDTElQU0VfUEFQWVJVU19TWVNNTDE0X0NPUFlfQUJTVFJBQ1RJT049ICJvcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuQ29weV9BYnN0cmFjdGlvbiI7IC8vJE5PTi1OTFMtMSQNCisNCisJcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgT1JHX0VDTElQU0VfUEFQWVJVU19TWVNNTDE0X0NPUFlfRElSRUNURURSRUxBVElPTlNISVA9ICJvcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuQ29weV9EaXJlY3RlZFJlbGF0aW9uc2hpcCI7IC8vJE5PTi1OTFMtMSQNCisNCisJcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgT1JHX0VDTElQU0VfUEFQWVJVU19TWVNNTDE0X1NBVElTRllfQUJTVFJBQ1RJT049ICJvcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuU2F0aXNmeV9BYnN0cmFjdGlvbiI7IC8vJE5PTi1OTFMtMSQNCisNCisJcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgT1JHX0VDTElQU0VfUEFQWVJVU19TWVNNTDE0X1NBVElTRllfRElSRUNURURSRUxBVElPTlNISVA9ICJvcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuU2F0aXNmeV9EaXJlY3RlZFJlbGF0aW9uc2hpcCI7IC8vJE5PTi1OTFMtMSQNCisNCisJcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgT1JHX0VDTElQU0VfUEFQWVJVU19TWVNNTDE0X1RFU1RDQVNFX09QRVJBVElPTj0gIm9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5UZXN0Q2FzZV9PcGVyYXRpb24iOyAvLyROT04tTkxTLTEkDQorDQorCXB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIE9SR19FQ0xJUFNFX1BBUFlSVVNfU1lTTUwxNF9URVNUQ0FTRV9CRUhBVklPUj0gIm9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5UZXN0Q2FzZV9CZWhhdmlvciI7IC8vJE5PTi1OTFMtMSQNCisNCisJcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgT1JHX0VDTElQU0VfUEFQWVJVU19TWVNNTDE0X1JFUVVJUkVNRU5UPSAib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LlJlcXVpcmVtZW50IjsgLy8kTk9OLU5MUy0xJA0KKw0KKwlwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBPUkdfRUNMSVBTRV9QQVBZUlVTX1NZU01MMTRfVkVSSUZZX0FCU1RSQUNUSU9OPSAib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LlZlcmlmeV9BYnN0cmFjdGlvbiI7IC8vJE5PTi1OTFMtMSQNCisNCisJcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgT1JHX0VDTElQU0VfUEFQWVJVU19TWVNNTDE0X1ZFUklGWV9ESVJFQ1RFRFJFTEFUSU9OU0hJUD0gIm9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5WZXJpZnlfRGlyZWN0ZWRSZWxhdGlvbnNoaXAiOyAvLyROT04tTkxTLTEkDQorDQorCXB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIE9SR19FQ0xJUFNFX1BBUFlSVVNfU1lTTUwxNF9UUkFDRV9BQlNUUkFDVElPTj0gIm9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5UcmFjZV9BYnN0cmFjdGlvbiI7IC8vJE5PTi1OTFMtMSQNCisNCisJcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgT1JHX0VDTElQU0VfUEFQWVJVU19TWVNNTDE0X1RSQUNFX0RJUkVDVEVEUkVMQVRJT05TSElQPSAib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LlRyYWNlX0RpcmVjdGVkUmVsYXRpb25zaGlwIjsgLy8kTk9OLU5MUy0xJA0KKw0KKwlwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBPUkdfRUNMSVBTRV9QQVBZUlVTX1NZU01MMTRfUkVGSU5FX0FCU1RSQUNUSU9OPSAib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LlJlZmluZV9BYnN0cmFjdGlvbiI7IC8vJE5PTi1OTFMtMSQNCisNCisJcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgT1JHX0VDTElQU0VfUEFQWVJVU19TWVNNTDE0X1JFRklORV9ESVJFQ1RFRFJFTEFUSU9OU0hJUD0gIm9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5SZWZpbmVfRGlyZWN0ZWRSZWxhdGlvbnNoaXAiOyAvLyROT04tTkxTLTEkDQorDQorCXB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIE9SR19FQ0xJUFNFX1BBUFlSVVNfU1lTTUwxNF9GTE9XUE9SVD0gIm9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5GbG93UG9ydCI7IC8vJE5PTi1OTFMtMSQNCisNCisJcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgT1JHX0VDTElQU0VfUEFQWVJVU19TWVNNTDE0X0ZMT1dTUEVDSUZJQ0FUSU9OPSAib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LkZsb3dTcGVjaWZpY2F0aW9uIjsgLy8kTk9OLU5MUy0xJA0KKw0KKwlwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBPUkdfRUNMSVBTRV9QQVBZUlVTX1NZU01MMTRfQUxMT0NBVEVEPSAib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LkFsbG9jYXRlZCI7IC8vJE5PTi1OTFMtMSQNCisNCisJcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgT1JHX0VDTElQU0VfUEFQWVJVU19TWVNNTDE0X1JFUVVJUkVNRU5UUkVMQVRFRD0gIm9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5SZXF1aXJlbWVudFJlbGF0ZWQiOyAvLyROT04tTkxTLTEkDQorDQorCXB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIE9SR19FQ0xJUFNFX1BBUFlSVVNfU1lTTUwxNF9VTklUPSAib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LlVuaXQiOyAvLyROT04tTkxTLTEkDQorDQorCXB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIE9SR19FQ0xJUFNFX1BBUFlSVVNfU1lTTUwxNF9RVUFOVElUWUtJTkQ9ICJvcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuUXVhbnRpdHlLaW5kIjsgLy8kTk9OLU5MUy0xJA0KKw0KKwlwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBPUkdfRUNMSVBTRV9QQVBZUlVTX1NZU01MMTRfUEFSVEFTU09DSUFUSU9OPSAib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LlBhcnRBc3NvY2lhdGlvbiI7IC8vJE5PTi1OTFMtMSQNCisNCisJDQorfQ0KZGlmZiAtLWdpdCBhL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0Ly5jbGFzc3BhdGggYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC8uY2xhc3NwYXRoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc0MDU2YWIKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC8uY2xhc3NwYXRoCkBAIC0wLDAgKzEsOCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4NCis8Y2xhc3NwYXRoPg0KKwk8Y2xhc3NwYXRoZW50cnkga2luZD0ic3JjIiBwYXRoPSJzcmMtZ2VuIi8+DQorCTxjbGFzc3BhdGhlbnRyeSBraW5kPSJjb24iIHBhdGg9Im9yZy5lY2xpcHNlLmpkdC5sYXVuY2hpbmcuSlJFX0NPTlRBSU5FUi9vcmcuZWNsaXBzZS5qZHQuaW50ZXJuYWwuZGVidWcudWkubGF1bmNoZXIuU3RhbmRhcmRWTVR5cGUvSmF2YVNFLTEuNiIvPg0KKwk8Y2xhc3NwYXRoZW50cnkga2luZD0iY29uIiBwYXRoPSJvcmcuZWNsaXBzZS5wZGUuY29yZS5yZXF1aXJlZFBsdWdpbnMiLz4NCisJPGNsYXNzcGF0aGVudHJ5IGtpbmQ9InNyYyIgcGF0aD0ic3JjIi8+DQorCTxjbGFzc3BhdGhlbnRyeSBraW5kPSJvdXRwdXQiIHBhdGg9ImJpbiIvPg0KKzwvY2xhc3NwYXRoPg0KZGlmZiAtLWdpdCBhL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0Ly5wcm9qZWN0IGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQvLnByb2plY3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjg1MDA0NwotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0Ly5wcm9qZWN0CkBAIC0wLDAgKzEsMjggQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+DQorPHByb2plY3REZXNjcmlwdGlvbj4NCisJPG5hbWU+b3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0PC9uYW1lPg0KKwk8Y29tbWVudD48L2NvbW1lbnQ+DQorCTxwcm9qZWN0cz4NCisJPC9wcm9qZWN0cz4NCisJPGJ1aWxkU3BlYz4NCisJCTxidWlsZENvbW1hbmQ+DQorCQkJPG5hbWU+b3JnLmVjbGlwc2UuamR0LmNvcmUuamF2YWJ1aWxkZXI8L25hbWU+DQorCQkJPGFyZ3VtZW50cz4NCisJCQk8L2FyZ3VtZW50cz4NCisJCTwvYnVpbGRDb21tYW5kPg0KKwkJPGJ1aWxkQ29tbWFuZD4NCisJCQk8bmFtZT5vcmcuZWNsaXBzZS5wZGUuTWFuaWZlc3RCdWlsZGVyPC9uYW1lPg0KKwkJCTxhcmd1bWVudHM+DQorCQkJPC9hcmd1bWVudHM+DQorCQk8L2J1aWxkQ29tbWFuZD4NCisJCTxidWlsZENvbW1hbmQ+DQorCQkJPG5hbWU+b3JnLmVjbGlwc2UucGRlLlNjaGVtYUJ1aWxkZXI8L25hbWU+DQorCQkJPGFyZ3VtZW50cz4NCisJCQk8L2FyZ3VtZW50cz4NCisJCTwvYnVpbGRDb21tYW5kPg0KKwk8L2J1aWxkU3BlYz4NCisJPG5hdHVyZXM+DQorCQk8bmF0dXJlPm9yZy5lY2xpcHNlLnBkZS5QbHVnaW5OYXR1cmU8L25hdHVyZT4NCisJCTxuYXR1cmU+b3JnLmVjbGlwc2UuamR0LmNvcmUuamF2YW5hdHVyZTwvbmF0dXJlPg0KKwk8L25hdHVyZXM+DQorPC9wcm9qZWN0RGVzY3JpcHRpb24+DQpkaWZmIC0tZ2l0IGEvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQvLnNldHRpbmdzL29yZy5lY2xpcHNlLmpkdC5jb3JlLnByZWZzIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQvLnNldHRpbmdzL29yZy5lY2xpcHNlLmpkdC5jb3JlLnByZWZzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQxMDI0NGQKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC8uc2V0dGluZ3Mvb3JnLmVjbGlwc2UuamR0LmNvcmUucHJlZnMKQEAgLTAsMCArMSwyOTEgQEAKK2VjbGlwc2UucHJlZmVyZW5jZXMudmVyc2lvbj0xDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIuY29kZWdlbi5pbmxpbmVKc3JCeXRlY29kZT1lbmFibGVkDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIuY29kZWdlbi50YXJnZXRQbGF0Zm9ybT0xLjYNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5jb21wbGlhbmNlPTEuNg0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0uYXNzZXJ0SWRlbnRpZmllcj1lcnJvcg0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0uZW51bUlkZW50aWZpZXI9ZXJyb3INCitvcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5zb3VyY2U9MS42DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmFsaWduX3R5cGVfbWVtYmVyc19vbl9jb2x1bW5zPWZhbHNlDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmFsaWdubWVudF9mb3JfYXJndW1lbnRzX2luX2FsbG9jYXRpb25fZXhwcmVzc2lvbj0xNg0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5hbGlnbm1lbnRfZm9yX2FyZ3VtZW50c19pbl9hbm5vdGF0aW9uPTANCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuYWxpZ25tZW50X2Zvcl9hcmd1bWVudHNfaW5fZW51bV9jb25zdGFudD0xNg0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5hbGlnbm1lbnRfZm9yX2FyZ3VtZW50c19pbl9leHBsaWNpdF9jb25zdHJ1Y3Rvcl9jYWxsPTE2DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmFsaWdubWVudF9mb3JfYXJndW1lbnRzX2luX21ldGhvZF9pbnZvY2F0aW9uPTE2DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmFsaWdubWVudF9mb3JfYXJndW1lbnRzX2luX3F1YWxpZmllZF9hbGxvY2F0aW9uX2V4cHJlc3Npb249MTYNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuYWxpZ25tZW50X2Zvcl9hc3NpZ25tZW50PTANCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuYWxpZ25tZW50X2Zvcl9iaW5hcnlfZXhwcmVzc2lvbj0xNg0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5hbGlnbm1lbnRfZm9yX2NvbXBhY3RfaWY9MTYNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuYWxpZ25tZW50X2Zvcl9jb25kaXRpb25hbF9leHByZXNzaW9uPTgwDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmFsaWdubWVudF9mb3JfZW51bV9jb25zdGFudHM9MA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5hbGlnbm1lbnRfZm9yX2V4cHJlc3Npb25zX2luX2FycmF5X2luaXRpYWxpemVyPTE2DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmFsaWdubWVudF9mb3JfbWV0aG9kX2RlY2xhcmF0aW9uPTANCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuYWxpZ25tZW50X2Zvcl9tdWx0aXBsZV9maWVsZHM9MTYNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuYWxpZ25tZW50X2Zvcl9wYXJhbWV0ZXJzX2luX2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uPTE2DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmFsaWdubWVudF9mb3JfcGFyYW1ldGVyc19pbl9tZXRob2RfZGVjbGFyYXRpb249MTYNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuYWxpZ25tZW50X2Zvcl9yZXNvdXJjZXNfaW5fdHJ5PTgwDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmFsaWdubWVudF9mb3Jfc2VsZWN0b3JfaW5fbWV0aG9kX2ludm9jYXRpb249MTYNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuYWxpZ25tZW50X2Zvcl9zdXBlcmNsYXNzX2luX3R5cGVfZGVjbGFyYXRpb249MTYNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuYWxpZ25tZW50X2Zvcl9zdXBlcmludGVyZmFjZXNfaW5fZW51bV9kZWNsYXJhdGlvbj0xNg0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5hbGlnbm1lbnRfZm9yX3N1cGVyaW50ZXJmYWNlc19pbl90eXBlX2RlY2xhcmF0aW9uPTE2DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmFsaWdubWVudF9mb3JfdGhyb3dzX2NsYXVzZV9pbl9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbj0xNg0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5hbGlnbm1lbnRfZm9yX3Rocm93c19jbGF1c2VfaW5fbWV0aG9kX2RlY2xhcmF0aW9uPTE2DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmFsaWdubWVudF9mb3JfdW5pb25fdHlwZV9pbl9tdWx0aWNhdGNoPTE2DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmJsYW5rX2xpbmVzX2FmdGVyX2ltcG9ydHM9MQ0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5ibGFua19saW5lc19hZnRlcl9wYWNrYWdlPTENCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuYmxhbmtfbGluZXNfYmVmb3JlX2ZpZWxkPTANCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuYmxhbmtfbGluZXNfYmVmb3JlX2ZpcnN0X2NsYXNzX2JvZHlfZGVjbGFyYXRpb249MA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5ibGFua19saW5lc19iZWZvcmVfaW1wb3J0cz0xDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmJsYW5rX2xpbmVzX2JlZm9yZV9tZW1iZXJfdHlwZT0xDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmJsYW5rX2xpbmVzX2JlZm9yZV9tZXRob2Q9MQ0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5ibGFua19saW5lc19iZWZvcmVfbmV3X2NodW5rPTENCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuYmxhbmtfbGluZXNfYmVmb3JlX3BhY2thZ2U9MA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5ibGFua19saW5lc19iZXR3ZWVuX2ltcG9ydF9ncm91cHM9MQ0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5ibGFua19saW5lc19iZXR3ZWVuX3R5cGVfZGVjbGFyYXRpb25zPTENCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuYnJhY2VfcG9zaXRpb25fZm9yX2Fubm90YXRpb25fdHlwZV9kZWNsYXJhdGlvbj1lbmRfb2ZfbGluZQ0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5icmFjZV9wb3NpdGlvbl9mb3JfYW5vbnltb3VzX3R5cGVfZGVjbGFyYXRpb249ZW5kX29mX2xpbmUNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuYnJhY2VfcG9zaXRpb25fZm9yX2FycmF5X2luaXRpYWxpemVyPWVuZF9vZl9saW5lDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmJyYWNlX3Bvc2l0aW9uX2Zvcl9ibG9jaz1lbmRfb2ZfbGluZQ0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5icmFjZV9wb3NpdGlvbl9mb3JfYmxvY2tfaW5fY2FzZT1lbmRfb2ZfbGluZQ0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5icmFjZV9wb3NpdGlvbl9mb3JfY29uc3RydWN0b3JfZGVjbGFyYXRpb249ZW5kX29mX2xpbmUNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuYnJhY2VfcG9zaXRpb25fZm9yX2VudW1fY29uc3RhbnQ9ZW5kX29mX2xpbmUNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuYnJhY2VfcG9zaXRpb25fZm9yX2VudW1fZGVjbGFyYXRpb249ZW5kX29mX2xpbmUNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuYnJhY2VfcG9zaXRpb25fZm9yX2xhbWJkYV9ib2R5PWVuZF9vZl9saW5lDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmJyYWNlX3Bvc2l0aW9uX2Zvcl9tZXRob2RfZGVjbGFyYXRpb249ZW5kX29mX2xpbmUNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuYnJhY2VfcG9zaXRpb25fZm9yX3N3aXRjaD1lbmRfb2ZfbGluZQ0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5icmFjZV9wb3NpdGlvbl9mb3JfdHlwZV9kZWNsYXJhdGlvbj1lbmRfb2ZfbGluZQ0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5jb21tZW50LmNsZWFyX2JsYW5rX2xpbmVzX2luX2Jsb2NrX2NvbW1lbnQ9ZmFsc2UNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuY29tbWVudC5jbGVhcl9ibGFua19saW5lc19pbl9qYXZhZG9jX2NvbW1lbnQ9ZmFsc2UNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuY29tbWVudC5mb3JtYXRfYmxvY2tfY29tbWVudHM9dHJ1ZQ0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5jb21tZW50LmZvcm1hdF9oZWFkZXI9ZmFsc2UNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuY29tbWVudC5mb3JtYXRfaHRtbD10cnVlDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmNvbW1lbnQuZm9ybWF0X2phdmFkb2NfY29tbWVudHM9dHJ1ZQ0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5jb21tZW50LmZvcm1hdF9saW5lX2NvbW1lbnRzPXRydWUNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuY29tbWVudC5mb3JtYXRfc291cmNlX2NvZGU9dHJ1ZQ0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5jb21tZW50LmluZGVudF9wYXJhbWV0ZXJfZGVzY3JpcHRpb249dHJ1ZQ0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5jb21tZW50LmluZGVudF9yb290X3RhZ3M9dHJ1ZQ0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5jb21tZW50Lmluc2VydF9uZXdfbGluZV9iZWZvcmVfcm9vdF90YWdzPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5jb21tZW50Lmluc2VydF9uZXdfbGluZV9mb3JfcGFyYW1ldGVyPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5jb21tZW50LmxpbmVfbGVuZ3RoPTI2MA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5jb21tZW50Lm5ld19saW5lc19hdF9ibG9ja19ib3VuZGFyaWVzPXRydWUNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuY29tbWVudC5uZXdfbGluZXNfYXRfamF2YWRvY19ib3VuZGFyaWVzPXRydWUNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuY29tbWVudC5wcmVzZXJ2ZV93aGl0ZV9zcGFjZV9iZXR3ZWVuX2NvZGVfYW5kX2xpbmVfY29tbWVudHM9ZmFsc2UNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuY29tcGFjdF9lbHNlX2lmPXRydWUNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuY29udGludWF0aW9uX2luZGVudGF0aW9uPTINCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuY29udGludWF0aW9uX2luZGVudGF0aW9uX2Zvcl9hcnJheV9pbml0aWFsaXplcj0yDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmRpc2FibGluZ190YWc9QGZvcm1hdHRlclw6b2ZmDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmVuYWJsaW5nX3RhZz1AZm9ybWF0dGVyXDpvbg0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5mb3JtYXRfZ3VhcmRpYW5fY2xhdXNlX29uX29uZV9saW5lPWZhbHNlDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmZvcm1hdF9saW5lX2NvbW1lbnRfc3RhcnRpbmdfb25fZmlyc3RfY29sdW1uPXRydWUNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5kZW50X2JvZHlfZGVjbGFyYXRpb25zX2NvbXBhcmVfdG9fYW5ub3RhdGlvbl9kZWNsYXJhdGlvbl9oZWFkZXI9dHJ1ZQ0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbmRlbnRfYm9keV9kZWNsYXJhdGlvbnNfY29tcGFyZV90b19lbnVtX2NvbnN0YW50X2hlYWRlcj10cnVlDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluZGVudF9ib2R5X2RlY2xhcmF0aW9uc19jb21wYXJlX3RvX2VudW1fZGVjbGFyYXRpb25faGVhZGVyPXRydWUNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5kZW50X2JvZHlfZGVjbGFyYXRpb25zX2NvbXBhcmVfdG9fdHlwZV9oZWFkZXI9dHJ1ZQ0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbmRlbnRfYnJlYWtzX2NvbXBhcmVfdG9fY2FzZXM9dHJ1ZQ0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbmRlbnRfZW1wdHlfbGluZXM9ZmFsc2UNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5kZW50X3N0YXRlbWVudHNfY29tcGFyZV90b19ibG9jaz10cnVlDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluZGVudF9zdGF0ZW1lbnRzX2NvbXBhcmVfdG9fYm9keT10cnVlDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluZGVudF9zd2l0Y2hzdGF0ZW1lbnRzX2NvbXBhcmVfdG9fY2FzZXM9dHJ1ZQ0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbmRlbnRfc3dpdGNoc3RhdGVtZW50c19jb21wYXJlX3RvX3N3aXRjaD1mYWxzZQ0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbmRlbnRhdGlvbi5zaXplPTQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X25ld19saW5lX2FmdGVyX2Fubm90YXRpb25fb25fZmllbGQ9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9uZXdfbGluZV9hZnRlcl9hbm5vdGF0aW9uX29uX2xvY2FsX3ZhcmlhYmxlPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfbmV3X2xpbmVfYWZ0ZXJfYW5ub3RhdGlvbl9vbl9tZXRob2Q9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9uZXdfbGluZV9hZnRlcl9hbm5vdGF0aW9uX29uX3BhY2thZ2U9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9uZXdfbGluZV9hZnRlcl9hbm5vdGF0aW9uX29uX3BhcmFtZXRlcj1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9uZXdfbGluZV9hZnRlcl9hbm5vdGF0aW9uX29uX3R5cGU9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9uZXdfbGluZV9hZnRlcl9sYWJlbD1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9uZXdfbGluZV9hZnRlcl9vcGVuaW5nX2JyYWNlX2luX2FycmF5X2luaXRpYWxpemVyPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X25ld19saW5lX2FmdGVyX3R5cGVfYW5ub3RhdGlvbj1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9uZXdfbGluZV9hdF9lbmRfb2ZfZmlsZV9pZl9taXNzaW5nPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X25ld19saW5lX2JlZm9yZV9jYXRjaF9pbl90cnlfc3RhdGVtZW50PWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X25ld19saW5lX2JlZm9yZV9jbG9zaW5nX2JyYWNlX2luX2FycmF5X2luaXRpYWxpemVyPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X25ld19saW5lX2JlZm9yZV9lbHNlX2luX2lmX3N0YXRlbWVudD1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9uZXdfbGluZV9iZWZvcmVfZmluYWxseV9pbl90cnlfc3RhdGVtZW50PWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X25ld19saW5lX2JlZm9yZV93aGlsZV9pbl9kb19zdGF0ZW1lbnQ9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfbmV3X2xpbmVfaW5fZW1wdHlfYW5ub3RhdGlvbl9kZWNsYXJhdGlvbj1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X25ld19saW5lX2luX2VtcHR5X2Fub255bW91c190eXBlX2RlY2xhcmF0aW9uPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfbmV3X2xpbmVfaW5fZW1wdHlfYmxvY2s9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9uZXdfbGluZV9pbl9lbXB0eV9lbnVtX2NvbnN0YW50PWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfbmV3X2xpbmVfaW5fZW1wdHlfZW51bV9kZWNsYXJhdGlvbj1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X25ld19saW5lX2luX2VtcHR5X21ldGhvZF9ib2R5PWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfbmV3X2xpbmVfaW5fZW1wdHlfdHlwZV9kZWNsYXJhdGlvbj1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX2FuZF9pbl90eXBlX3BhcmFtZXRlcj1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX2Fzc2lnbm1lbnRfb3BlcmF0b3I9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9hdF9pbl9hbm5vdGF0aW9uPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX2F0X2luX2Fubm90YXRpb25fdHlwZV9kZWNsYXJhdGlvbj1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9iaW5hcnlfb3BlcmF0b3I9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9jbG9zaW5nX2FuZ2xlX2JyYWNrZXRfaW5fdHlwZV9hcmd1bWVudHM9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9jbG9zaW5nX2FuZ2xlX2JyYWNrZXRfaW5fdHlwZV9wYXJhbWV0ZXJzPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfY2xvc2luZ19icmFjZV9pbl9ibG9jaz1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX2Nsb3NpbmdfcGFyZW5faW5fY2FzdD1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX2NvbG9uX2luX2Fzc2VydD1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX2NvbG9uX2luX2Nhc2U9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9jb2xvbl9pbl9jb25kaXRpb25hbD1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX2NvbG9uX2luX2Zvcj1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX2NvbG9uX2luX2xhYmVsZWRfc3RhdGVtZW50PWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfY29tbWFfaW5fYWxsb2NhdGlvbl9leHByZXNzaW9uPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfY29tbWFfaW5fYW5ub3RhdGlvbj1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX2NvbW1hX2luX2FycmF5X2luaXRpYWxpemVyPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfY29tbWFfaW5fY29uc3RydWN0b3JfZGVjbGFyYXRpb25fcGFyYW1ldGVycz1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX2NvbW1hX2luX2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uX3Rocm93cz1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX2NvbW1hX2luX2VudW1fY29uc3RhbnRfYXJndW1lbnRzPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfY29tbWFfaW5fZW51bV9kZWNsYXJhdGlvbnM9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9jb21tYV9pbl9leHBsaWNpdGNvbnN0cnVjdG9yY2FsbF9hcmd1bWVudHM9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9jb21tYV9pbl9mb3JfaW5jcmVtZW50cz1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX2NvbW1hX2luX2Zvcl9pbml0cz1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX2NvbW1hX2luX21ldGhvZF9kZWNsYXJhdGlvbl9wYXJhbWV0ZXJzPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfY29tbWFfaW5fbWV0aG9kX2RlY2xhcmF0aW9uX3Rocm93cz1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX2NvbW1hX2luX21ldGhvZF9pbnZvY2F0aW9uX2FyZ3VtZW50cz1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX2NvbW1hX2luX211bHRpcGxlX2ZpZWxkX2RlY2xhcmF0aW9ucz1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX2NvbW1hX2luX211bHRpcGxlX2xvY2FsX2RlY2xhcmF0aW9ucz1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX2NvbW1hX2luX3BhcmFtZXRlcml6ZWRfdHlwZV9yZWZlcmVuY2U9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9jb21tYV9pbl9zdXBlcmludGVyZmFjZXM9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9jb21tYV9pbl90eXBlX2FyZ3VtZW50cz1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX2NvbW1hX2luX3R5cGVfcGFyYW1ldGVycz1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX2VsbGlwc2lzPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfbGFtYmRhX2Fycm93PWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfb3BlbmluZ19hbmdsZV9icmFja2V0X2luX3BhcmFtZXRlcml6ZWRfdHlwZV9yZWZlcmVuY2U9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfb3BlbmluZ19hbmdsZV9icmFja2V0X2luX3R5cGVfYXJndW1lbnRzPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX29wZW5pbmdfYW5nbGVfYnJhY2tldF9pbl90eXBlX3BhcmFtZXRlcnM9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfb3BlbmluZ19icmFjZV9pbl9hcnJheV9pbml0aWFsaXplcj1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX29wZW5pbmdfYnJhY2tldF9pbl9hcnJheV9hbGxvY2F0aW9uX2V4cHJlc3Npb249ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfb3BlbmluZ19icmFja2V0X2luX2FycmF5X3JlZmVyZW5jZT1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9vcGVuaW5nX3BhcmVuX2luX2Fubm90YXRpb249ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfb3BlbmluZ19wYXJlbl9pbl9jYXN0PWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX29wZW5pbmdfcGFyZW5faW5fY2F0Y2g9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfb3BlbmluZ19wYXJlbl9pbl9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbj1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9vcGVuaW5nX3BhcmVuX2luX2VudW1fY29uc3RhbnQ9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfb3BlbmluZ19wYXJlbl9pbl9mb3I9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfb3BlbmluZ19wYXJlbl9pbl9pZj1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9vcGVuaW5nX3BhcmVuX2luX21ldGhvZF9kZWNsYXJhdGlvbj1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9vcGVuaW5nX3BhcmVuX2luX21ldGhvZF9pbnZvY2F0aW9uPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX29wZW5pbmdfcGFyZW5faW5fcGFyZW50aGVzaXplZF9leHByZXNzaW9uPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX29wZW5pbmdfcGFyZW5faW5fc3dpdGNoPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX29wZW5pbmdfcGFyZW5faW5fc3luY2hyb25pemVkPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX29wZW5pbmdfcGFyZW5faW5fdHJ5PWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX29wZW5pbmdfcGFyZW5faW5fd2hpbGU9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfcG9zdGZpeF9vcGVyYXRvcj1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9wcmVmaXhfb3BlcmF0b3I9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfcXVlc3Rpb25faW5fY29uZGl0aW9uYWw9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9xdWVzdGlvbl9pbl93aWxkY2FyZD1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9zZW1pY29sb25faW5fZm9yPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfc2VtaWNvbG9uX2luX3RyeV9yZXNvdXJjZXM9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl91bmFyeV9vcGVyYXRvcj1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfYW5kX2luX3R5cGVfcGFyYW1ldGVyPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2Fzc2lnbm1lbnRfb3BlcmF0b3I9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfYXRfaW5fYW5ub3RhdGlvbl90eXBlX2RlY2xhcmF0aW9uPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2JpbmFyeV9vcGVyYXRvcj1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9jbG9zaW5nX2FuZ2xlX2JyYWNrZXRfaW5fcGFyYW1ldGVyaXplZF90eXBlX3JlZmVyZW5jZT1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfY2xvc2luZ19hbmdsZV9icmFja2V0X2luX3R5cGVfYXJndW1lbnRzPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9jbG9zaW5nX2FuZ2xlX2JyYWNrZXRfaW5fdHlwZV9wYXJhbWV0ZXJzPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9jbG9zaW5nX2JyYWNlX2luX2FycmF5X2luaXRpYWxpemVyPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2Nsb3NpbmdfYnJhY2tldF9pbl9hcnJheV9hbGxvY2F0aW9uX2V4cHJlc3Npb249ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2Nsb3NpbmdfYnJhY2tldF9pbl9hcnJheV9yZWZlcmVuY2U9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2Nsb3NpbmdfcGFyZW5faW5fYW5ub3RhdGlvbj1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfY2xvc2luZ19wYXJlbl9pbl9jYXN0PWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9jbG9zaW5nX3BhcmVuX2luX2NhdGNoPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9jbG9zaW5nX3BhcmVuX2luX2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9jbG9zaW5nX3BhcmVuX2luX2VudW1fY29uc3RhbnQ9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2Nsb3NpbmdfcGFyZW5faW5fZm9yPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9jbG9zaW5nX3BhcmVuX2luX2lmPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9jbG9zaW5nX3BhcmVuX2luX21ldGhvZF9kZWNsYXJhdGlvbj1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfY2xvc2luZ19wYXJlbl9pbl9tZXRob2RfaW52b2NhdGlvbj1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfY2xvc2luZ19wYXJlbl9pbl9wYXJlbnRoZXNpemVkX2V4cHJlc3Npb249ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2Nsb3NpbmdfcGFyZW5faW5fc3dpdGNoPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9jbG9zaW5nX3BhcmVuX2luX3N5bmNocm9uaXplZD1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfY2xvc2luZ19wYXJlbl9pbl90cnk9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2Nsb3NpbmdfcGFyZW5faW5fd2hpbGU9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2NvbG9uX2luX2Fzc2VydD1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9jb2xvbl9pbl9jYXNlPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9jb2xvbl9pbl9jb25kaXRpb25hbD1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9jb2xvbl9pbl9kZWZhdWx0PWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9jb2xvbl9pbl9mb3I9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfY29sb25faW5fbGFiZWxlZF9zdGF0ZW1lbnQ9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2NvbW1hX2luX2FsbG9jYXRpb25fZXhwcmVzc2lvbj1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfY29tbWFfaW5fYW5ub3RhdGlvbj1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfY29tbWFfaW5fYXJyYXlfaW5pdGlhbGl6ZXI9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2NvbW1hX2luX2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uX3BhcmFtZXRlcnM9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2NvbW1hX2luX2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uX3Rocm93cz1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfY29tbWFfaW5fZW51bV9jb25zdGFudF9hcmd1bWVudHM9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2NvbW1hX2luX2VudW1fZGVjbGFyYXRpb25zPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9jb21tYV9pbl9leHBsaWNpdGNvbnN0cnVjdG9yY2FsbF9hcmd1bWVudHM9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2NvbW1hX2luX2Zvcl9pbmNyZW1lbnRzPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9jb21tYV9pbl9mb3JfaW5pdHM9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2NvbW1hX2luX21ldGhvZF9kZWNsYXJhdGlvbl9wYXJhbWV0ZXJzPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9jb21tYV9pbl9tZXRob2RfZGVjbGFyYXRpb25fdGhyb3dzPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9jb21tYV9pbl9tZXRob2RfaW52b2NhdGlvbl9hcmd1bWVudHM9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2NvbW1hX2luX211bHRpcGxlX2ZpZWxkX2RlY2xhcmF0aW9ucz1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfY29tbWFfaW5fbXVsdGlwbGVfbG9jYWxfZGVjbGFyYXRpb25zPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9jb21tYV9pbl9wYXJhbWV0ZXJpemVkX3R5cGVfcmVmZXJlbmNlPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9jb21tYV9pbl9zdXBlcmludGVyZmFjZXM9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2NvbW1hX2luX3R5cGVfYXJndW1lbnRzPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9jb21tYV9pbl90eXBlX3BhcmFtZXRlcnM9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2VsbGlwc2lzPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9sYW1iZGFfYXJyb3c9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfb3BlbmluZ19hbmdsZV9icmFja2V0X2luX3BhcmFtZXRlcml6ZWRfdHlwZV9yZWZlcmVuY2U9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX29wZW5pbmdfYW5nbGVfYnJhY2tldF9pbl90eXBlX2FyZ3VtZW50cz1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfb3BlbmluZ19hbmdsZV9icmFja2V0X2luX3R5cGVfcGFyYW1ldGVycz1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfb3BlbmluZ19icmFjZV9pbl9hbm5vdGF0aW9uX3R5cGVfZGVjbGFyYXRpb249aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfb3BlbmluZ19icmFjZV9pbl9hbm9ueW1vdXNfdHlwZV9kZWNsYXJhdGlvbj1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9vcGVuaW5nX2JyYWNlX2luX2FycmF5X2luaXRpYWxpemVyPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX29wZW5pbmdfYnJhY2VfaW5fYmxvY2s9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfb3BlbmluZ19icmFjZV9pbl9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbj1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9vcGVuaW5nX2JyYWNlX2luX2VudW1fY29uc3RhbnQ9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfb3BlbmluZ19icmFjZV9pbl9lbnVtX2RlY2xhcmF0aW9uPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX29wZW5pbmdfYnJhY2VfaW5fbWV0aG9kX2RlY2xhcmF0aW9uPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX29wZW5pbmdfYnJhY2VfaW5fc3dpdGNoPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX29wZW5pbmdfYnJhY2VfaW5fdHlwZV9kZWNsYXJhdGlvbj1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9vcGVuaW5nX2JyYWNrZXRfaW5fYXJyYXlfYWxsb2NhdGlvbl9leHByZXNzaW9uPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9vcGVuaW5nX2JyYWNrZXRfaW5fYXJyYXlfcmVmZXJlbmNlPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9vcGVuaW5nX2JyYWNrZXRfaW5fYXJyYXlfdHlwZV9yZWZlcmVuY2U9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX29wZW5pbmdfcGFyZW5faW5fYW5ub3RhdGlvbj1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfb3BlbmluZ19wYXJlbl9pbl9hbm5vdGF0aW9uX3R5cGVfbWVtYmVyX2RlY2xhcmF0aW9uPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9vcGVuaW5nX3BhcmVuX2luX2NhdGNoPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX29wZW5pbmdfcGFyZW5faW5fY29uc3RydWN0b3JfZGVjbGFyYXRpb249ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX29wZW5pbmdfcGFyZW5faW5fZW51bV9jb25zdGFudD1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfb3BlbmluZ19wYXJlbl9pbl9mb3I9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfb3BlbmluZ19wYXJlbl9pbl9pZj1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9vcGVuaW5nX3BhcmVuX2luX21ldGhvZF9kZWNsYXJhdGlvbj1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfb3BlbmluZ19wYXJlbl9pbl9tZXRob2RfaW52b2NhdGlvbj1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfb3BlbmluZ19wYXJlbl9pbl9wYXJlbnRoZXNpemVkX2V4cHJlc3Npb249ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX29wZW5pbmdfcGFyZW5faW5fc3dpdGNoPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX29wZW5pbmdfcGFyZW5faW5fc3luY2hyb25pemVkPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX29wZW5pbmdfcGFyZW5faW5fdHJ5PWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX29wZW5pbmdfcGFyZW5faW5fd2hpbGU9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfcGFyZW50aGVzaXplZF9leHByZXNzaW9uX2luX3JldHVybj1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9wYXJlbnRoZXNpemVkX2V4cHJlc3Npb25faW5fdGhyb3c9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfcG9zdGZpeF9vcGVyYXRvcj1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfcHJlZml4X29wZXJhdG9yPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9xdWVzdGlvbl9pbl9jb25kaXRpb25hbD1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9xdWVzdGlvbl9pbl93aWxkY2FyZD1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfc2VtaWNvbG9uPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9zZW1pY29sb25faW5fZm9yPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9zZW1pY29sb25faW5fdHJ5X3Jlc291cmNlcz1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfdW5hcnlfb3BlcmF0b3I9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmV0d2Vlbl9icmFja2V0c19pbl9hcnJheV90eXBlX3JlZmVyZW5jZT1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZXR3ZWVuX2VtcHR5X2JyYWNlc19pbl9hcnJheV9pbml0aWFsaXplcj1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZXR3ZWVuX2VtcHR5X2JyYWNrZXRzX2luX2FycmF5X2FsbG9jYXRpb25fZXhwcmVzc2lvbj1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZXR3ZWVuX2VtcHR5X3BhcmVuc19pbl9hbm5vdGF0aW9uX3R5cGVfbWVtYmVyX2RlY2xhcmF0aW9uPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JldHdlZW5fZW1wdHlfcGFyZW5zX2luX2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JldHdlZW5fZW1wdHlfcGFyZW5zX2luX2VudW1fY29uc3RhbnQ9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmV0d2Vlbl9lbXB0eV9wYXJlbnNfaW5fbWV0aG9kX2RlY2xhcmF0aW9uPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JldHdlZW5fZW1wdHlfcGFyZW5zX2luX21ldGhvZF9pbnZvY2F0aW9uPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuam9pbl9saW5lc19pbl9jb21tZW50cz1mYWxzZQ0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5qb2luX3dyYXBwZWRfbGluZXM9ZmFsc2UNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIua2VlcF9lbHNlX3N0YXRlbWVudF9vbl9zYW1lX2xpbmU9ZmFsc2UNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIua2VlcF9lbXB0eV9hcnJheV9pbml0aWFsaXplcl9vbl9vbmVfbGluZT1mYWxzZQ0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5rZWVwX2ltcGxlX2lmX29uX29uZV9saW5lPWZhbHNlDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmtlZXBfdGhlbl9zdGF0ZW1lbnRfb25fc2FtZV9saW5lPWZhbHNlDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmxpbmVTcGxpdD0yNjANCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIubmV2ZXJfaW5kZW50X2Jsb2NrX2NvbW1lbnRzX29uX2ZpcnN0X2NvbHVtbj1mYWxzZQ0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5uZXZlcl9pbmRlbnRfbGluZV9jb21tZW50c19vbl9maXJzdF9jb2x1bW49ZmFsc2UNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIubnVtYmVyX29mX2JsYW5rX2xpbmVzX2F0X2JlZ2lubmluZ19vZl9tZXRob2RfYm9keT0wDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLm51bWJlcl9vZl9lbXB0eV9saW5lc190b19wcmVzZXJ2ZT01DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLnB1dF9lbXB0eV9zdGF0ZW1lbnRfb25fbmV3X2xpbmU9dHJ1ZQ0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci50YWJ1bGF0aW9uLmNoYXI9dGFiDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLnRhYnVsYXRpb24uc2l6ZT00DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLnVzZV9vbl9vZmZfdGFncz1mYWxzZQ0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci51c2VfdGFic19vbmx5X2Zvcl9sZWFkaW5nX2luZGVudGF0aW9ucz1mYWxzZQ0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci53cmFwX2JlZm9yZV9iaW5hcnlfb3BlcmF0b3I9dHJ1ZQ0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci53cmFwX2JlZm9yZV9vcl9vcGVyYXRvcl9tdWx0aWNhdGNoPXRydWUNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIud3JhcF9vdXRlcl9leHByZXNzaW9uc193aGVuX25lc3RlZD10cnVlDQpkaWZmIC0tZ2l0IGEvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQvLnNldHRpbmdzL29yZy5lY2xpcHNlLmpkdC51aS5wcmVmcyBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0Ly5zZXR0aW5ncy9vcmcuZWNsaXBzZS5qZHQudWkucHJlZnMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDFkNzA0YgotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0Ly5zZXR0aW5ncy9vcmcuZWNsaXBzZS5qZHQudWkucHJlZnMKQEAgLTAsMCArMSw2OCBAQAorY2xlYW51cC5hZGRfZGVmYXVsdF9zZXJpYWxfdmVyc2lvbl9pZD10cnVlDQorY2xlYW51cC5hZGRfZ2VuZXJhdGVkX3NlcmlhbF92ZXJzaW9uX2lkPWZhbHNlDQorY2xlYW51cC5hZGRfbWlzc2luZ19hbm5vdGF0aW9ucz10cnVlDQorY2xlYW51cC5hZGRfbWlzc2luZ19kZXByZWNhdGVkX2Fubm90YXRpb25zPXRydWUNCitjbGVhbnVwLmFkZF9taXNzaW5nX21ldGhvZHM9ZmFsc2UNCitjbGVhbnVwLmFkZF9taXNzaW5nX25sc190YWdzPWZhbHNlDQorY2xlYW51cC5hZGRfbWlzc2luZ19vdmVycmlkZV9hbm5vdGF0aW9ucz10cnVlDQorY2xlYW51cC5hZGRfbWlzc2luZ19vdmVycmlkZV9hbm5vdGF0aW9uc19pbnRlcmZhY2VfbWV0aG9kcz10cnVlDQorY2xlYW51cC5hZGRfc2VyaWFsX3ZlcnNpb25faWQ9ZmFsc2UNCitjbGVhbnVwLmFsd2F5c191c2VfYmxvY2tzPXRydWUNCitjbGVhbnVwLmFsd2F5c191c2VfcGFyZW50aGVzZXNfaW5fZXhwcmVzc2lvbnM9ZmFsc2UNCitjbGVhbnVwLmFsd2F5c191c2VfdGhpc19mb3Jfbm9uX3N0YXRpY19maWVsZF9hY2Nlc3M9ZmFsc2UNCitjbGVhbnVwLmFsd2F5c191c2VfdGhpc19mb3Jfbm9uX3N0YXRpY19tZXRob2RfYWNjZXNzPWZhbHNlDQorY2xlYW51cC5jb252ZXJ0X2Z1bmN0aW9uYWxfaW50ZXJmYWNlcz1mYWxzZQ0KK2NsZWFudXAuY29udmVydF90b19lbmhhbmNlZF9mb3JfbG9vcD1mYWxzZQ0KK2NsZWFudXAuY29ycmVjdF9pbmRlbnRhdGlvbj1mYWxzZQ0KK2NsZWFudXAuZm9ybWF0X3NvdXJjZV9jb2RlPWZhbHNlDQorY2xlYW51cC5mb3JtYXRfc291cmNlX2NvZGVfY2hhbmdlc19vbmx5PWZhbHNlDQorY2xlYW51cC5pbnNlcnRfaW5mZXJyZWRfdHlwZV9hcmd1bWVudHM9ZmFsc2UNCitjbGVhbnVwLm1ha2VfbG9jYWxfdmFyaWFibGVfZmluYWw9dHJ1ZQ0KK2NsZWFudXAubWFrZV9wYXJhbWV0ZXJzX2ZpbmFsPWZhbHNlDQorY2xlYW51cC5tYWtlX3ByaXZhdGVfZmllbGRzX2ZpbmFsPXRydWUNCitjbGVhbnVwLm1ha2VfdHlwZV9hYnN0cmFjdF9pZl9taXNzaW5nX21ldGhvZD1mYWxzZQ0KK2NsZWFudXAubWFrZV92YXJpYWJsZV9kZWNsYXJhdGlvbnNfZmluYWw9ZmFsc2UNCitjbGVhbnVwLm5ldmVyX3VzZV9ibG9ja3M9ZmFsc2UNCitjbGVhbnVwLm5ldmVyX3VzZV9wYXJlbnRoZXNlc19pbl9leHByZXNzaW9ucz10cnVlDQorY2xlYW51cC5vcmdhbml6ZV9pbXBvcnRzPWZhbHNlDQorY2xlYW51cC5xdWFsaWZ5X3N0YXRpY19maWVsZF9hY2Nlc3Nlc193aXRoX2RlY2xhcmluZ19jbGFzcz1mYWxzZQ0KK2NsZWFudXAucXVhbGlmeV9zdGF0aWNfbWVtYmVyX2FjY2Vzc2VzX3Rocm91Z2hfaW5zdGFuY2VzX3dpdGhfZGVjbGFyaW5nX2NsYXNzPXRydWUNCitjbGVhbnVwLnF1YWxpZnlfc3RhdGljX21lbWJlcl9hY2Nlc3Nlc190aHJvdWdoX3N1YnR5cGVzX3dpdGhfZGVjbGFyaW5nX2NsYXNzPXRydWUNCitjbGVhbnVwLnF1YWxpZnlfc3RhdGljX21lbWJlcl9hY2Nlc3Nlc193aXRoX2RlY2xhcmluZ19jbGFzcz10cnVlDQorY2xlYW51cC5xdWFsaWZ5X3N0YXRpY19tZXRob2RfYWNjZXNzZXNfd2l0aF9kZWNsYXJpbmdfY2xhc3M9ZmFsc2UNCitjbGVhbnVwLnJlbW92ZV9wcml2YXRlX2NvbnN0cnVjdG9ycz10cnVlDQorY2xlYW51cC5yZW1vdmVfcmVkdW5kYW50X3R5cGVfYXJndW1lbnRzPXRydWUNCitjbGVhbnVwLnJlbW92ZV90cmFpbGluZ193aGl0ZXNwYWNlcz10cnVlDQorY2xlYW51cC5yZW1vdmVfdHJhaWxpbmdfd2hpdGVzcGFjZXNfYWxsPXRydWUNCitjbGVhbnVwLnJlbW92ZV90cmFpbGluZ193aGl0ZXNwYWNlc19pZ25vcmVfZW1wdHk9ZmFsc2UNCitjbGVhbnVwLnJlbW92ZV91bm5lY2Vzc2FyeV9jYXN0cz10cnVlDQorY2xlYW51cC5yZW1vdmVfdW5uZWNlc3NhcnlfbmxzX3RhZ3M9dHJ1ZQ0KK2NsZWFudXAucmVtb3ZlX3VudXNlZF9pbXBvcnRzPXRydWUNCitjbGVhbnVwLnJlbW92ZV91bnVzZWRfbG9jYWxfdmFyaWFibGVzPWZhbHNlDQorY2xlYW51cC5yZW1vdmVfdW51c2VkX3ByaXZhdGVfZmllbGRzPXRydWUNCitjbGVhbnVwLnJlbW92ZV91bnVzZWRfcHJpdmF0ZV9tZW1iZXJzPWZhbHNlDQorY2xlYW51cC5yZW1vdmVfdW51c2VkX3ByaXZhdGVfbWV0aG9kcz10cnVlDQorY2xlYW51cC5yZW1vdmVfdW51c2VkX3ByaXZhdGVfdHlwZXM9dHJ1ZQ0KK2NsZWFudXAuc29ydF9tZW1iZXJzPWZhbHNlDQorY2xlYW51cC5zb3J0X21lbWJlcnNfYWxsPWZhbHNlDQorY2xlYW51cC51c2VfYW5vbnltb3VzX2NsYXNzX2NyZWF0aW9uPWZhbHNlDQorY2xlYW51cC51c2VfYmxvY2tzPXRydWUNCitjbGVhbnVwLnVzZV9ibG9ja3Nfb25seV9mb3JfcmV0dXJuX2FuZF90aHJvdz1mYWxzZQ0KK2NsZWFudXAudXNlX2xhbWJkYT10cnVlDQorY2xlYW51cC51c2VfcGFyZW50aGVzZXNfaW5fZXhwcmVzc2lvbnM9ZmFsc2UNCitjbGVhbnVwLnVzZV90aGlzX2Zvcl9ub25fc3RhdGljX2ZpZWxkX2FjY2Vzcz1mYWxzZQ0KK2NsZWFudXAudXNlX3RoaXNfZm9yX25vbl9zdGF0aWNfZmllbGRfYWNjZXNzX29ubHlfaWZfbmVjZXNzYXJ5PXRydWUNCitjbGVhbnVwLnVzZV90aGlzX2Zvcl9ub25fc3RhdGljX21ldGhvZF9hY2Nlc3M9ZmFsc2UNCitjbGVhbnVwLnVzZV90aGlzX2Zvcl9ub25fc3RhdGljX21ldGhvZF9hY2Nlc3Nfb25seV9pZl9uZWNlc3Nhcnk9dHJ1ZQ0KK2NsZWFudXAudXNlX3R5cGVfYXJndW1lbnRzPWZhbHNlDQorY2xlYW51cF9wcm9maWxlPV9QYXB5cnVzDQorY2xlYW51cF9zZXR0aW5nc192ZXJzaW9uPTINCitlY2xpcHNlLnByZWZlcmVuY2VzLnZlcnNpb249MQ0KK2Zvcm1hdHRlcl9wcm9maWxlPV9QYXB5cnVzDQorZm9ybWF0dGVyX3NldHRpbmdzX3ZlcnNpb249MTINCitvcmcuZWNsaXBzZS5qZHQudWkuaWdub3JlbG93ZXJjYXNlbmFtZXM9dHJ1ZQ0KK29yZy5lY2xpcHNlLmpkdC51aS5pbXBvcnRvcmRlcj1qYXZhO2phdmF4O29yZztjb207DQorb3JnLmVjbGlwc2UuamR0LnVpLmphdmFkb2M9dHJ1ZQ0KK29yZy5lY2xpcHNlLmpkdC51aS5vbmRlbWFuZHRocmVzaG9sZD05OQ0KK29yZy5lY2xpcHNlLmpkdC51aS5zdGF0aWNvbmRlbWFuZHRocmVzaG9sZD05OQ0KK29yZy5lY2xpcHNlLmpkdC51aS50ZXh0LmN1c3RvbV9jb2RlX3RlbXBsYXRlcz08P3htbCB2ZXJzaW9uXD0iMS4wIiBlbmNvZGluZ1w9IlVURi04IiBzdGFuZGFsb25lXD0ibm8iPz48dGVtcGxhdGVzPjx0ZW1wbGF0ZSBhdXRvaW5zZXJ0XD0idHJ1ZSIgY29udGV4dFw9ImdldHRlcmNvbW1lbnRfY29udGV4dCIgZGVsZXRlZFw9ImZhbHNlIiBkZXNjcmlwdGlvblw9IkNvbW1lbnQgZm9yIGdldHRlciBtZXRob2QiIGVuYWJsZWRcPSJ0cnVlIiBpZFw9Im9yZy5lY2xpcHNlLmpkdC51aS50ZXh0LmNvZGV0ZW1wbGF0ZXMuZ2V0dGVyY29tbWVudCIgbmFtZVw9ImdldHRlcmNvbW1lbnQiPi8qKlxuICogQHJldHVybiB0aGUgJHtiYXJlX2ZpZWxkX25hbWV9XG4gKi88L3RlbXBsYXRlPjx0ZW1wbGF0ZSBhdXRvaW5zZXJ0XD0idHJ1ZSIgY29udGV4dFw9InNldHRlcmNvbW1lbnRfY29udGV4dCIgZGVsZXRlZFw9ImZhbHNlIiBkZXNjcmlwdGlvblw9IkNvbW1lbnQgZm9yIHNldHRlciBtZXRob2QiIGVuYWJsZWRcPSJ0cnVlIiBpZFw9Im9yZy5lY2xpcHNlLmpkdC51aS50ZXh0LmNvZGV0ZW1wbGF0ZXMuc2V0dGVyY29tbWVudCIgbmFtZVw9InNldHRlcmNvbW1lbnQiPi8qKlxuICogQHBhcmFtICR7cGFyYW19IHRoZSAke2JhcmVfZmllbGRfbmFtZX0gdG8gc2V0XG4gKi88L3RlbXBsYXRlPjx0ZW1wbGF0ZSBhdXRvaW5zZXJ0XD0iZmFsc2UiIGNvbnRleHRcPSJjb25zdHJ1Y3RvcmNvbW1lbnRfY29udGV4dCIgZGVsZXRlZFw9ImZhbHNlIiBkZXNjcmlwdGlvblw9IkNvbW1lbnQgZm9yIGNyZWF0ZWQgY29uc3RydWN0b3JzIiBlbmFibGVkXD0idHJ1ZSIgaWRcPSJvcmcuZWNsaXBzZS5qZHQudWkudGV4dC5jb2RldGVtcGxhdGVzLmNvbnN0cnVjdG9yY29tbWVudCIgbmFtZVw9ImNvbnN0cnVjdG9yY29tbWVudCI+LyoqXG4gKiBDb25zdHJ1Y3Rvci5cbiAqXG4gKiAke3RhZ3N9XG4gKi88L3RlbXBsYXRlPjx0ZW1wbGF0ZSBhdXRvaW5zZXJ0XD0iZmFsc2UiIGNvbnRleHRcPSJmaWxlY29tbWVudF9jb250ZXh0IiBkZWxldGVkXD0iZmFsc2UiIGRlc2NyaXB0aW9uXD0iQ29tbWVudCBmb3IgY3JlYXRlZCBKYXZhIGZpbGVzIiBlbmFibGVkXD0idHJ1ZSIgaWRcPSJvcmcuZWNsaXBzZS5qZHQudWkudGV4dC5jb2RldGVtcGxhdGVzLmZpbGVjb21tZW50IiBuYW1lXD0iZmlsZWNvbW1lbnQiPi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICogQ29weXJpZ2h0IChjKSAke3llYXJ9IENFQSBMSVNUIGFuZCBvdGhlcnMuXG4gKiBcbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHNcbiAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMFxuICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXRcbiAqIGh0dHBcOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbFxuICpcbiAqIENvbnRyaWJ1dG9yc1w6XG4gKiAgIENFQSBMSVNUIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uXG4gKiAgIFxuICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuPC90ZW1wbGF0ZT48dGVtcGxhdGUgYXV0b2luc2VydFw9InRydWUiIGNvbnRleHRcPSJ0eXBlY29tbWVudF9jb250ZXh0IiBkZWxldGVkXD0iZmFsc2UiIGRlc2NyaXB0aW9uXD0iQ29tbWVudCBmb3IgY3JlYXRlZCB0eXBlcyIgZW5hYmxlZFw9InRydWUiIGlkXD0ib3JnLmVjbGlwc2UuamR0LnVpLnRleHQuY29kZXRlbXBsYXRlcy50eXBlY29tbWVudCIgbmFtZVw9InR5cGVjb21tZW50Ij4vKipcbiAqIEBhdXRob3IgJHt1c2VyfVxuICpcbiAqICR7dGFnc31cbiAqLzwvdGVtcGxhdGU+PHRlbXBsYXRlIGF1dG9pbnNlcnRcPSJ0cnVlIiBjb250ZXh0XD0iZmllbGRjb21tZW50X2NvbnRleHQiIGRlbGV0ZWRcPSJmYWxzZSIgZGVzY3JpcHRpb25cPSJDb21tZW50IGZvciBmaWVsZHMiIGVuYWJsZWRcPSJ0cnVlIiBpZFw9Im9yZy5lY2xpcHNlLmpkdC51aS50ZXh0LmNvZGV0ZW1wbGF0ZXMuZmllbGRjb21tZW50IiBuYW1lXD0iZmllbGRjb21tZW50Ij4vKipcbiAqIFxuICovPC90ZW1wbGF0ZT48dGVtcGxhdGUgYXV0b2luc2VydFw9InRydWUiIGNvbnRleHRcPSJtZXRob2Rjb21tZW50X2NvbnRleHQiIGRlbGV0ZWRcPSJmYWxzZSIgZGVzY3JpcHRpb25cPSJDb21tZW50IGZvciBub24tb3ZlcnJpZGluZyBtZXRob2RzIiBlbmFibGVkXD0idHJ1ZSIgaWRcPSJvcmcuZWNsaXBzZS5qZHQudWkudGV4dC5jb2RldGVtcGxhdGVzLm1ldGhvZGNvbW1lbnQiIG5hbWVcPSJtZXRob2Rjb21tZW50Ij4vKipcbiAqICR7dGFnc31cbiAqLzwvdGVtcGxhdGU+PHRlbXBsYXRlIGF1dG9pbnNlcnRcPSJmYWxzZSIgY29udGV4dFw9Im92ZXJyaWRlY29tbWVudF9jb250ZXh0IiBkZWxldGVkXD0iZmFsc2UiIGRlc2NyaXB0aW9uXD0iQ29tbWVudCBmb3Igb3ZlcnJpZGluZyBtZXRob2RzIiBlbmFibGVkXD0idHJ1ZSIgaWRcPSJvcmcuZWNsaXBzZS5qZHQudWkudGV4dC5jb2RldGVtcGxhdGVzLm92ZXJyaWRlY29tbWVudCIgbmFtZVw9Im92ZXJyaWRlY29tbWVudCI+LyoqXG4gKiAke3NlZV90b19vdmVycmlkZGVufVxuICpcbiAqICR7dGFnc31cbiAqLzwvdGVtcGxhdGU+PHRlbXBsYXRlIGF1dG9pbnNlcnRcPSJmYWxzZSIgY29udGV4dFw9ImRlbGVnYXRlY29tbWVudF9jb250ZXh0IiBkZWxldGVkXD0iZmFsc2UiIGRlc2NyaXB0aW9uXD0iQ29tbWVudCBmb3IgZGVsZWdhdGUgbWV0aG9kcyIgZW5hYmxlZFw9InRydWUiIGlkXD0ib3JnLmVjbGlwc2UuamR0LnVpLnRleHQuY29kZXRlbXBsYXRlcy5kZWxlZ2F0ZWNvbW1lbnQiIG5hbWVcPSJkZWxlZ2F0ZWNvbW1lbnQiPi8qKlxuICogJHtzZWVfdG9fdGFyZ2V0fVxuICpcbiAqICR7dGFnc31cbiAqLzwvdGVtcGxhdGU+PHRlbXBsYXRlIGF1dG9pbnNlcnRcPSJ0cnVlIiBjb250ZXh0XD0ibmV3dHlwZV9jb250ZXh0IiBkZWxldGVkXD0iZmFsc2UiIGRlc2NyaXB0aW9uXD0iTmV3bHkgY3JlYXRlZCBmaWxlcyIgZW5hYmxlZFw9InRydWUiIGlkXD0ib3JnLmVjbGlwc2UuamR0LnVpLnRleHQuY29kZXRlbXBsYXRlcy5uZXd0eXBlIiBuYW1lXD0ibmV3dHlwZSI+JHtmaWxlY29tbWVudH1cbiR7cGFja2FnZV9kZWNsYXJhdGlvbn1cblxuJHt0eXBlY29tbWVudH1cbiR7dHlwZV9kZWNsYXJhdGlvbn08L3RlbXBsYXRlPjx0ZW1wbGF0ZSBhdXRvaW5zZXJ0XD0idHJ1ZSIgY29udGV4dFw9ImNsYXNzYm9keV9jb250ZXh0IiBkZWxldGVkXD0iZmFsc2UiIGRlc2NyaXB0aW9uXD0iQ29kZSBpbiBuZXcgY2xhc3MgdHlwZSBib2RpZXMiIGVuYWJsZWRcPSJ0cnVlIiBpZFw9Im9yZy5lY2xpcHNlLmpkdC51aS50ZXh0LmNvZGV0ZW1wbGF0ZXMuY2xhc3Nib2R5IiBuYW1lXD0iY2xhc3Nib2R5Ij5cbjwvdGVtcGxhdGU+PHRlbXBsYXRlIGF1dG9pbnNlcnRcPSJ0cnVlIiBjb250ZXh0XD0iaW50ZXJmYWNlYm9keV9jb250ZXh0IiBkZWxldGVkXD0iZmFsc2UiIGRlc2NyaXB0aW9uXD0iQ29kZSBpbiBuZXcgaW50ZXJmYWNlIHR5cGUgYm9kaWVzIiBlbmFibGVkXD0idHJ1ZSIgaWRcPSJvcmcuZWNsaXBzZS5qZHQudWkudGV4dC5jb2RldGVtcGxhdGVzLmludGVyZmFjZWJvZHkiIG5hbWVcPSJpbnRlcmZhY2Vib2R5Ij5cbjwvdGVtcGxhdGU+PHRlbXBsYXRlIGF1dG9pbnNlcnRcPSJ0cnVlIiBjb250ZXh0XD0iZW51bWJvZHlfY29udGV4dCIgZGVsZXRlZFw9ImZhbHNlIiBkZXNjcmlwdGlvblw9IkNvZGUgaW4gbmV3IGVudW0gdHlwZSBib2RpZXMiIGVuYWJsZWRcPSJ0cnVlIiBpZFw9Im9yZy5lY2xpcHNlLmpkdC51aS50ZXh0LmNvZGV0ZW1wbGF0ZXMuZW51bWJvZHkiIG5hbWVcPSJlbnVtYm9keSI+XG48L3RlbXBsYXRlPjx0ZW1wbGF0ZSBhdXRvaW5zZXJ0XD0idHJ1ZSIgY29udGV4dFw9ImFubm90YXRpb25ib2R5X2NvbnRleHQiIGRlbGV0ZWRcPSJmYWxzZSIgZGVzY3JpcHRpb25cPSJDb2RlIGluIG5ldyBhbm5vdGF0aW9uIHR5cGUgYm9kaWVzIiBlbmFibGVkXD0idHJ1ZSIgaWRcPSJvcmcuZWNsaXBzZS5qZHQudWkudGV4dC5jb2RldGVtcGxhdGVzLmFubm90YXRpb25ib2R5IiBuYW1lXD0iYW5ub3RhdGlvbmJvZHkiPlxuPC90ZW1wbGF0ZT48dGVtcGxhdGUgYXV0b2luc2VydFw9InRydWUiIGNvbnRleHRcPSJjYXRjaGJsb2NrX2NvbnRleHQiIGRlbGV0ZWRcPSJmYWxzZSIgZGVzY3JpcHRpb25cPSJDb2RlIGluIG5ldyBjYXRjaCBibG9ja3MiIGVuYWJsZWRcPSJ0cnVlIiBpZFw9Im9yZy5lY2xpcHNlLmpkdC51aS50ZXh0LmNvZGV0ZW1wbGF0ZXMuY2F0Y2hibG9jayIgbmFtZVw9ImNhdGNoYmxvY2siPi8vICR7dG9kb30gQXV0by1nZW5lcmF0ZWQgY2F0Y2ggYmxvY2tcbiR7ZXhjZXB0aW9uX3Zhcn0ucHJpbnRTdGFja1RyYWNlKCk7PC90ZW1wbGF0ZT48dGVtcGxhdGUgYXV0b2luc2VydFw9InRydWUiIGNvbnRleHRcPSJtZXRob2Rib2R5X2NvbnRleHQiIGRlbGV0ZWRcPSJmYWxzZSIgZGVzY3JpcHRpb25cPSJDb2RlIGluIGNyZWF0ZWQgbWV0aG9kIHN0dWJzIiBlbmFibGVkXD0idHJ1ZSIgaWRcPSJvcmcuZWNsaXBzZS5qZHQudWkudGV4dC5jb2RldGVtcGxhdGVzLm1ldGhvZGJvZHkiIG5hbWVcPSJtZXRob2Rib2R5Ij4vLyAke3RvZG99IEF1dG8tZ2VuZXJhdGVkIG1ldGhvZCBzdHViXG4ke2JvZHlfc3RhdGVtZW50fTwvdGVtcGxhdGU+PHRlbXBsYXRlIGF1dG9pbnNlcnRcPSJ0cnVlIiBjb250ZXh0XD0iY29uc3RydWN0b3Jib2R5X2NvbnRleHQiIGRlbGV0ZWRcPSJmYWxzZSIgZGVzY3JpcHRpb25cPSJDb2RlIGluIGNyZWF0ZWQgY29uc3RydWN0b3Igc3R1YnMiIGVuYWJsZWRcPSJ0cnVlIiBpZFw9Im9yZy5lY2xpcHNlLmpkdC51aS50ZXh0LmNvZGV0ZW1wbGF0ZXMuY29uc3RydWN0b3Jib2R5IiBuYW1lXD0iY29uc3RydWN0b3Jib2R5Ij4ke2JvZHlfc3RhdGVtZW50fVxuLy8gJHt0b2RvfSBBdXRvLWdlbmVyYXRlZCBjb25zdHJ1Y3RvciBzdHViPC90ZW1wbGF0ZT48dGVtcGxhdGUgYXV0b2luc2VydFw9InRydWUiIGNvbnRleHRcPSJnZXR0ZXJib2R5X2NvbnRleHQiIGRlbGV0ZWRcPSJmYWxzZSIgZGVzY3JpcHRpb25cPSJDb2RlIGluIGNyZWF0ZWQgZ2V0dGVycyIgZW5hYmxlZFw9InRydWUiIGlkXD0ib3JnLmVjbGlwc2UuamR0LnVpLnRleHQuY29kZXRlbXBsYXRlcy5nZXR0ZXJib2R5IiBuYW1lXD0iZ2V0dGVyYm9keSI+cmV0dXJuICR7ZmllbGR9OzwvdGVtcGxhdGU+PHRlbXBsYXRlIGF1dG9pbnNlcnRcPSJ0cnVlIiBjb250ZXh0XD0ic2V0dGVyYm9keV9jb250ZXh0IiBkZWxldGVkXD0iZmFsc2UiIGRlc2NyaXB0aW9uXD0iQ29kZSBpbiBjcmVhdGVkIHNldHRlcnMiIGVuYWJsZWRcPSJ0cnVlIiBpZFw9Im9yZy5lY2xpcHNlLmpkdC51aS50ZXh0LmNvZGV0ZW1wbGF0ZXMuc2V0dGVyYm9keSIgbmFtZVw9InNldHRlcmJvZHkiPiR7ZmllbGR9IFw9ICR7cGFyYW19OzwvdGVtcGxhdGU+PC90ZW1wbGF0ZXM+DQpkaWZmIC0tZ2l0IGEvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQvTUVUQS1JTkYvTUFOSUZFU1QuTUYgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC9NRVRBLUlORi9NQU5JRkVTVC5NRgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNjcxNDljCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQvTUVUQS1JTkYvTUFOSUZFU1QuTUYKQEAgLTAsMCArMSw0MyBAQAorTWFuaWZlc3QtVmVyc2lvbjogMS4wDQorQnVuZGxlLU1hbmlmZXN0VmVyc2lvbjogMg0KK0J1bmRsZS1OYW1lOiAlcGx1Z2luTmFtZQ0KK0J1bmRsZS1TeW1ib2xpY05hbWU6IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNDtzaW5nbGV0b246PXRydWUNCitCdW5kbGUtVmVyc2lvbjogMC43LjAucXVhbGlmaWVyDQorQnVuZGxlLUNsYXNzUGF0aDogLg0KK0J1bmRsZS1BY3RpdmF0b3I6IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5BY3RpdmF0b3INCitSZXF1aXJlLUJ1bmRsZTogb3JnLmVjbGlwc2UudWksDQorIG9yZy5lY2xpcHNlLmNvcmUucnVudGltZSwNCisgb3JnLmVjbGlwc2UuZW1mLmVjb3JlO3Zpc2liaWxpdHk6PXJlZXhwb3J0LA0KKyBvcmcuZWNsaXBzZS51bWwyLnVtbC5wcm9maWxlLnN0YW5kYXJkO3Zpc2liaWxpdHk6PXJlZXhwb3J0LA0KKyBvcmcuZWNsaXBzZS51bWwyLnR5cGVzO3Zpc2liaWxpdHk6PXJlZXhwb3J0LA0KKyBvcmcuZWNsaXBzZS51bWwyLnVtbDt2aXNpYmlsaXR5Oj1yZWV4cG9ydA0KK0J1bmRsZS1SZXF1aXJlZEV4ZWN1dGlvbkVudmlyb25tZW50OiBKYXZhU0UtMS42DQorRXhwb3J0LVBhY2thZ2U6IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5hY3Rpdml0aWVzLA0KKyBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYWN0aXZpdGllcy5pbnRlcm5hbC5pbXBsLA0KKyBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYWN0aXZpdGllcy51dGlsLA0KKyBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYWxsb2NhdGlvbnMsDQorIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5hbGxvY2F0aW9ucy5pbnRlcm5hbC5pbXBsLA0KKyBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYWxsb2NhdGlvbnMudXRpbCwNCisgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmJsb2NrcywNCisgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmJsb2Nrcy5pbnRlcm5hbC5pbXBsLA0KKyBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYmxvY2tzLnV0aWwsDQorIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5jb25zdHJhaW50YmxvY2tzLA0KKyBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuY29uc3RyYWludGJsb2Nrcy5pbnRlcm5hbC5pbXBsLA0KKyBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuY29uc3RyYWludGJsb2Nrcy51dGlsLA0KKyBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGVwcmVjYXRlZGVsZW1lbnRzLA0KKyBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGVwcmVjYXRlZGVsZW1lbnRzLmludGVybmFsLmltcGwsDQorIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kZXByZWNhdGVkZWxlbWVudHMudXRpbCwNCisgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0Lm1vZGVsZWxlbWVudHMsDQorIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5tb2RlbGVsZW1lbnRzLmludGVybmFsLmltcGwsDQorIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5tb2RlbGVsZW1lbnRzLnV0aWwsDQorIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5wb3J0YW5kZmxvd3MsDQorIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5wb3J0YW5kZmxvd3MuaW50ZXJuYWwuaW1wbCwNCisgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnBvcnRhbmRmbG93cy51dGlsLA0KKyBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucmVxdWlyZW1lbnRzLA0KKyBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucmVxdWlyZW1lbnRzLmludGVybmFsLmltcGwsDQorIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5yZXF1aXJlbWVudHMudXRpbCwNCisgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnV0aWwNCitCdW5kbGUtQWN0aXZhdGlvblBvbGljeTogbGF6eQ0KK0J1bmRsZS1Mb2NhbGl6YXRpb246IHBsdWdpbg0KK0J1bmRsZS1EZXNjcmlwdGlvbjogJXBsdWdpbkRlc2NyaXB0aW9uDQorQnVuZGxlLVZlbmRvcjogJXByb3ZpZGVyTmFtZQ0KZGlmZiAtLWdpdCBhL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0L2Fib3V0Lmh0bWwgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC9hYm91dC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgyZDQ5YmYKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC9hYm91dC5odG1sCkBAIC0wLDAgKzEsMjggQEAKKzwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgWEhUTUwgMS4wIFN0cmljdC8vRU4iDQorICAgICJodHRwOi8vd3d3LnczLm9yZy9UUi94aHRtbDEvRFREL3hodG1sMS1zdHJpY3QuZHRkIj4NCis8aHRtbCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCI+DQorPGhlYWQ+DQorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9SVNPLTg4NTktMSIvPg0KKzx0aXRsZT5BYm91dDwvdGl0bGU+DQorPC9oZWFkPg0KKzxib2R5IGxhbmc9IkVOLVVTIj4NCis8aDI+QWJvdXQgVGhpcyBDb250ZW50PC9oMj4NCisgDQorPHA+SnVuZSA1LCAyMDA3PC9wPgkNCis8aDM+TGljZW5zZTwvaDM+DQorDQorPHA+VGhlIEVjbGlwc2UgRm91bmRhdGlvbiBtYWtlcyBhdmFpbGFibGUgYWxsIGNvbnRlbnQgaW4gdGhpcyBwbHVnLWluICgmcXVvdDtDb250ZW50JnF1b3Q7KS4gIFVubGVzcyBvdGhlcndpc2UgDQoraW5kaWNhdGVkIGJlbG93LCB0aGUgQ29udGVudCBpcyBwcm92aWRlZCB0byB5b3UgdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZQ0KK0VjbGlwc2UgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAxLjAgKCZxdW90O0VQTCZxdW90OykuICBBIGNvcHkgb2YgdGhlIEVQTCBpcyBhdmFpbGFibGUgDQorYXQgPGEgaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwiPmh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sPC9hPi4NCitGb3IgcHVycG9zZXMgb2YgdGhlIEVQTCwgJnF1b3Q7UHJvZ3JhbSZxdW90OyB3aWxsIG1lYW4gdGhlIENvbnRlbnQuPC9wPg0KKw0KKzxwPklmIHlvdSBkaWQgbm90IHJlY2VpdmUgdGhpcyBDb250ZW50IGRpcmVjdGx5IGZyb20gdGhlIEVjbGlwc2UgRm91bmRhdGlvbiwgdGhlIENvbnRlbnQgaXMgDQorYmVpbmcgcmVkaXN0cmlidXRlZCBieSBhbm90aGVyIHBhcnR5ICgmcXVvdDtSZWRpc3RyaWJ1dG9yJnF1b3Q7KSBhbmQgZGlmZmVyZW50IHRlcm1zIGFuZCBjb25kaXRpb25zIG1heQ0KK2FwcGx5IHRvIHlvdXIgdXNlIG9mIGFueSBvYmplY3QgY29kZSBpbiB0aGUgQ29udGVudC4gIENoZWNrIHRoZSBSZWRpc3RyaWJ1dG9yJ3MgbGljZW5zZSB0aGF0IHdhcyANCitwcm92aWRlZCB3aXRoIHRoZSBDb250ZW50LiAgSWYgbm8gc3VjaCBsaWNlbnNlIGV4aXN0cywgY29udGFjdCB0aGUgUmVkaXN0cmlidXRvci4gIFVubGVzcyBvdGhlcndpc2UNCitpbmRpY2F0ZWQgYmVsb3csIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgRVBMIHN0aWxsIGFwcGx5IHRvIGFueSBzb3VyY2UgY29kZSBpbiB0aGUgQ29udGVudA0KK2FuZCBzdWNoIHNvdXJjZSBjb2RlIG1heSBiZSBvYnRhaW5lZCBhdCA8YSBocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnLyI+aHR0cDovL3d3dy5lY2xpcHNlLm9yZzwvYT4uPC9wPg0KKw0KKzwvYm9keT4NCis8L2h0bWw+DQpkaWZmIC0tZ2l0IGEvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQvYnVpbGQucHJvcGVydGllcyBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0L2J1aWxkLnByb3BlcnRpZXMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWFhOTc1MgotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0L2J1aWxkLnByb3BlcnRpZXMKQEAgLTAsMCArMSwxMyBAQAorIw0KKw0KK2Jpbi5pbmNsdWRlcyA9IC4sXA0KKyAgICAgICAgICAgICAgIG1vZGVsLyxcDQorICAgICAgICAgICAgICAgTUVUQS1JTkYvLFwNCisgICAgICAgICAgICAgICBwbHVnaW4ueG1sLFwNCisgICAgICAgICAgICAgICBwbHVnaW4ucHJvcGVydGllcyxcDQorICAgICAgICAgICAgICAgYWJvdXQuaHRtbA0KK2phcnMuY29tcGlsZS5vcmRlciA9IC4NCitzb3VyY2UuLiA9IHNyYy8sXA0KKyAgICAgICAgICAgc3JjLWdlbi8NCitvdXRwdXQuLiA9IGJpbi8NCitzcmMuaW5jbHVkZXMgPSBhYm91dC5odG1sDQpkaWZmIC0tZ2l0IGEvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQvZG9jL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kaSBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0L2RvYy9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODYzNGQ0YwotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0L2RvYy9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGkKQEAgLTAsMCArMSwyIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/Pg0KKzx4bWk6WE1JIHhtaTp2ZXJzaW9uPSIyLjAiIHhtbG5zOnhtaT0iaHR0cDovL3d3dy5vbWcub3JnL1hNSSIvPg0KZGlmZiAtLWdpdCBhL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0L2RvYy9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQubm90YXRpb24gYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC9kb2Mvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0Lm5vdGF0aW9uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFlOGI1MDAKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC9kb2Mvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0Lm5vdGF0aW9uCkBAIC0wLDAgKzEsMTM4IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/Pg0KKzx4bWk6WE1JIHhtaTp2ZXJzaW9uPSIyLjAiIHhtbG5zOnhtaT0iaHR0cDovL3d3dy5vbWcub3JnL1hNSSIgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIgeG1sbnM6Y29uZmlndXJhdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9wYXB5cnVzL2luZnJhL3ZpZXdwb2ludHMvY29uZmlndXJhdGlvbiIgeG1sbnM6Y3NzPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3BhcHlydXMvaW5mcmEvZ21mZGlhZy9jc3MiIHhtbG5zOmVjb3JlPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2VtZi8yMDAyL0Vjb3JlIiB4bWxuczpuYXR0YWJsZT0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9wYXB5cnVzL25hdHRhYmxlL21vZGVsIiB4bWxuczpuYXR0YWJsZWF4aXM9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvcGFweXJ1cy9uYXR0YWJsZS9tb2RlbC90YWJsZS9uYXR0YWJsZWF4aXMiIHhtbG5zOm5hdHRhYmxlYXhpc2NvbmZpZ3VyYXRpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvcGFweXJ1cy9uYXR0YWJsZS9tb2RlbC90YWJsZS9uYXR0YWJsZWF4aXNjb25maWd1cmF0aW9uIiB4bWxuczpuYXR0YWJsZWF4aXNwcm92aWRlcj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9wYXB5cnVzL25hdHRhYmxlL21vZGVsL3RhYmxlL25hdHRhYmxlYXhpc3Byb3ZpZGVyIiB4bWxuczpuYXR0YWJsZWNvbmZpZ3VyYXRpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvcGFweXJ1cy9uYXR0YWJsZS9tb2RlbC9uYXR0YWJsZWNvbmZpZ3VyYXRpb24iIHhtbG5zOm5vdGF0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2dtZi9ydW50aW1lLzEuMC4yL25vdGF0aW9uIiB4bWxuczpzdHlsZT0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9wYXB5cnVzL2luZnJhL3ZpZXdwb2ludHMvcG9saWN5L3N0eWxlIiB4bWxuczp1bWw9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvdW1sMi81LjAuMC9VTUwiIHhzaTpzY2hlbWFMb2NhdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9wYXB5cnVzL25hdHRhYmxlL21vZGVsL3RhYmxlL25hdHRhYmxlYXhpcyBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3BhcHlydXMvbmF0dGFibGUvbW9kZWwjLy9uYXR0YWJsZWF4aXMgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9wYXB5cnVzL25hdHRhYmxlL21vZGVsL3RhYmxlL25hdHRhYmxlYXhpc2NvbmZpZ3VyYXRpb24gaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9wYXB5cnVzL25hdHRhYmxlL21vZGVsIy8vbmF0dGFibGVheGlzY29uZmlndXJhdGlvbiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3BhcHlydXMvbmF0dGFibGUvbW9kZWwvdGFibGUvbmF0dGFibGVheGlzcHJvdmlkZXIgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9wYXB5cnVzL25hdHRhYmxlL21vZGVsIy8vbmF0dGFibGVheGlzcHJvdmlkZXIgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9wYXB5cnVzL25hdHRhYmxlL21vZGVsL25hdHRhYmxlY29uZmlndXJhdGlvbiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3BhcHlydXMvbmF0dGFibGUvbW9kZWwjLy9uYXR0YWJsZWNvbmZpZ3VyYXRpb24iPg0KKyAgPG5vdGF0aW9uOkRpYWdyYW0geG1pOmlkPSJfUHpFS29Kc1RFZVN1NnBmTGtuS0U0QSIgdHlwZT0iUGFweXJ1c1VNTENsYXNzRGlhZ3JhbSIgbmFtZT0iT3ZlcnZpZXciIG1lYXN1cmVtZW50VW5pdD0iUGl4ZWwiPg0KKyAgICA8Y2hpbGRyZW4geG1pOnR5cGU9Im5vdGF0aW9uOlNoYXBlIiB4bWk6aWQ9Il9QekVLb1pzVEVlU3U2cGZMa25LRTRBIiB0eXBlPSIyMDA1Ij4NCisgICAgICA8ZUFubm90YXRpb25zIHhtaTp0eXBlPSJlY29yZTpFQW5ub3RhdGlvbiIgeG1pOmlkPSJfaGluaEVKdk5FZVNwbUlOTmxjakFCUSIgc291cmNlPSJQYXB5cnVzSHlwZXJMaW5rX1BhZ2UiIHJlZmVyZW5jZXM9Il9hZWJoSUpzVEVlU3U2cGZMa25LRTRBIj4NCisgICAgICAgIDxkZXRhaWxzIHhtaTp0eXBlPSJlY29yZTpFU3RyaW5nVG9TdHJpbmdNYXBFbnRyeSIgeG1pOmlkPSJfaGluaEVadk5FZVNwbUlOTmxjakFCUSIga2V5PSJ0b29sdGlwX3RleHQiIHZhbHVlPSJSZXF1aXJlbWVudHMiLz4NCisgICAgICAgIDxkZXRhaWxzIHhtaTp0eXBlPSJlY29yZTpFU3RyaW5nVG9TdHJpbmdNYXBFbnRyeSIgeG1pOmlkPSJfaGluaEVwdk5FZVNwbUlOTmxjakFCUSIga2V5PSJwYWdlTmFtZSIgdmFsdWU9IlBhcHlydXNIeXBlckxpbmtfUGFnZSIvPg0KKyAgICAgICAgPGRldGFpbHMgeG1pOnR5cGU9ImVjb3JlOkVTdHJpbmdUb1N0cmluZ01hcEVudHJ5IiB4bWk6aWQ9Il9oaW5oRTV2TkVlU3BtSU5ObGNqQUJRIiBrZXk9ImlzX2RlZmF1bHRfbmF2aWdhdGlvbiIgdmFsdWU9InRydWUiLz4NCisgICAgICA8L2VBbm5vdGF0aW9ucz4NCisgICAgICA8Y2hpbGRyZW4geG1pOnR5cGU9Im5vdGF0aW9uOkRlY29yYXRpb25Ob2RlIiB4bWk6aWQ9Il9QekVLb3BzVEVlU3U2cGZMa25LRTRBIiB0eXBlPSI1MDIwIi8+DQorICAgICAgPGNoaWxkcmVuIHhtaTp0eXBlPSJub3RhdGlvbjpEZWNvcmF0aW9uTm9kZSIgeG1pOmlkPSJfUHpFS281c1RFZVN1NnBmTGtuS0U0QSIgdHlwZT0iNzAwOSI+DQorICAgICAgICA8c3R5bGVzIHhtaTp0eXBlPSJub3RhdGlvbjpUaXRsZVN0eWxlIiB4bWk6aWQ9Il9QekVLcEpzVEVlU3U2cGZMa25LRTRBIi8+DQorICAgICAgICA8bGF5b3V0Q29uc3RyYWludCB4bWk6dHlwZT0ibm90YXRpb246Qm91bmRzIiB4bWk6aWQ9Il9QekVLcFpzVEVlU3U2cGZMa25LRTRBIi8+DQorICAgICAgPC9jaGlsZHJlbj4NCisgICAgICA8ZWxlbWVudCB4bWk6dHlwZT0idW1sOk1vZGVsIiBocmVmPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQudW1sI19QeTZab3BzVEVlU3U2cGZMa25LRTRBIi8+DQorICAgICAgPGxheW91dENvbnN0cmFpbnQgeG1pOnR5cGU9Im5vdGF0aW9uOkJvdW5kcyIgeG1pOmlkPSJfUHpFS3Bwc1RFZVN1NnBmTGtuS0U0QSIgeD0iMjAxIiB5PSIzOCIvPg0KKyAgICA8L2NoaWxkcmVuPg0KKyAgICA8Y2hpbGRyZW4geG1pOnR5cGU9Im5vdGF0aW9uOlNoYXBlIiB4bWk6aWQ9Il9QekVLcDVzVEVlU3U2cGZMa25LRTRBIiB0eXBlPSIyMDA1Ij4NCisgICAgICA8Y2hpbGRyZW4geG1pOnR5cGU9Im5vdGF0aW9uOkRlY29yYXRpb25Ob2RlIiB4bWk6aWQ9Il9QekVLcUpzVEVlU3U2cGZMa25LRTRBIiB0eXBlPSI1MDIwIi8+DQorICAgICAgPGNoaWxkcmVuIHhtaTp0eXBlPSJub3RhdGlvbjpEZWNvcmF0aW9uTm9kZSIgeG1pOmlkPSJfUHpFS3Fac1RFZVN1NnBmTGtuS0U0QSIgdHlwZT0iNzAwOSI+DQorICAgICAgICA8c3R5bGVzIHhtaTp0eXBlPSJub3RhdGlvbjpUaXRsZVN0eWxlIiB4bWk6aWQ9Il9QekVLcXBzVEVlU3U2cGZMa25LRTRBIi8+DQorICAgICAgICA8bGF5b3V0Q29uc3RyYWludCB4bWk6dHlwZT0ibm90YXRpb246Qm91bmRzIiB4bWk6aWQ9Il9QekVLcTVzVEVlU3U2cGZMa25LRTRBIi8+DQorICAgICAgPC9jaGlsZHJlbj4NCisgICAgICA8ZWxlbWVudCB4bWk6dHlwZT0idW1sOk1vZGVsIiBocmVmPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQudW1sI19QeTZabzVzVEVlU3U2cGZMa25LRTRBIi8+DQorICAgICAgPGxheW91dENvbnN0cmFpbnQgeG1pOnR5cGU9Im5vdGF0aW9uOkJvdW5kcyIgeG1pOmlkPSJfUHpFS3JKc1RFZVN1NnBmTGtuS0U0QSIgeD0iMjA0IiB5PSIxNzMiLz4NCisgICAgPC9jaGlsZHJlbj4NCisgICAgPGNoaWxkcmVuIHhtaTp0eXBlPSJub3RhdGlvbjpTaGFwZSIgeG1pOmlkPSJfUHpFS3Jac1RFZVN1NnBmTGtuS0U0QSIgdHlwZT0iMjAwNSI+DQorICAgICAgPGNoaWxkcmVuIHhtaTp0eXBlPSJub3RhdGlvbjpEZWNvcmF0aW9uTm9kZSIgeG1pOmlkPSJfUHpFS3Jwc1RFZVN1NnBmTGtuS0U0QSIgdHlwZT0iNTAyMCIvPg0KKyAgICAgIDxjaGlsZHJlbiB4bWk6dHlwZT0ibm90YXRpb246RGVjb3JhdGlvbk5vZGUiIHhtaTppZD0iX1B6RUtyNXNURWVTdTZwZkxrbktFNEEiIHR5cGU9IjcwMDkiPg0KKyAgICAgICAgPHN0eWxlcyB4bWk6dHlwZT0ibm90YXRpb246VGl0bGVTdHlsZSIgeG1pOmlkPSJfUHpFS3NKc1RFZVN1NnBmTGtuS0U0QSIvPg0KKyAgICAgICAgPGxheW91dENvbnN0cmFpbnQgeG1pOnR5cGU9Im5vdGF0aW9uOkJvdW5kcyIgeG1pOmlkPSJfUHpFS3Nac1RFZVN1NnBmTGtuS0U0QSIvPg0KKyAgICAgIDwvY2hpbGRyZW4+DQorICAgICAgPGVsZW1lbnQgeG1pOnR5cGU9InVtbDpNb2RlbCIgaHJlZj0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnVtbCNfUHk2WnBwc1RFZVN1NnBmTGtuS0U0QSIvPg0KKyAgICAgIDxsYXlvdXRDb25zdHJhaW50IHhtaTp0eXBlPSJub3RhdGlvbjpCb3VuZHMiIHhtaTppZD0iX1B6RUtzcHNURWVTdTZwZkxrbktFNEEiIHg9IjIwNiIgeT0iMzI5Ii8+DQorICAgIDwvY2hpbGRyZW4+DQorICAgIDxjaGlsZHJlbiB4bWk6dHlwZT0ibm90YXRpb246U2hhcGUiIHhtaTppZD0iX1B6RUtzNXNURWVTdTZwZkxrbktFNEEiIHR5cGU9IjIwMDUiPg0KKyAgICAgIDxjaGlsZHJlbiB4bWk6dHlwZT0ibm90YXRpb246RGVjb3JhdGlvbk5vZGUiIHhtaTppZD0iX1B6RUt0SnNURWVTdTZwZkxrbktFNEEiIHR5cGU9IjUwMjAiLz4NCisgICAgICA8Y2hpbGRyZW4geG1pOnR5cGU9Im5vdGF0aW9uOkRlY29yYXRpb25Ob2RlIiB4bWk6aWQ9Il9QekVLdFpzVEVlU3U2cGZMa25LRTRBIiB0eXBlPSI3MDA5Ij4NCisgICAgICAgIDxzdHlsZXMgeG1pOnR5cGU9Im5vdGF0aW9uOlRpdGxlU3R5bGUiIHhtaTppZD0iX1B6RUt0cHNURWVTdTZwZkxrbktFNEEiLz4NCisgICAgICAgIDxsYXlvdXRDb25zdHJhaW50IHhtaTp0eXBlPSJub3RhdGlvbjpCb3VuZHMiIHhtaTppZD0iX1B6RUt0NXNURWVTdTZwZkxrbktFNEEiLz4NCisgICAgICA8L2NoaWxkcmVuPg0KKyAgICAgIDxlbGVtZW50IHhtaTp0eXBlPSJ1bWw6TW9kZWwiIGhyZWY9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC51bWwjX1B5NlpxSnNURWVTdTZwZkxrbktFNEEiLz4NCisgICAgICA8bGF5b3V0Q29uc3RyYWludCB4bWk6dHlwZT0ibm90YXRpb246Qm91bmRzIiB4bWk6aWQ9Il9QekVLdUpzVEVlU3U2cGZMa25LRTRBIiB4PSI2MzMiIHk9IjE5MyIvPg0KKyAgICA8L2NoaWxkcmVuPg0KKyAgICA8c3R5bGVzIHhtaTp0eXBlPSJub3RhdGlvbjpEaWFncmFtU3R5bGUiIHhtaTppZD0iX1B6RUt1WnNURWVTdTZwZkxrbktFNEEiLz4NCisgICAgPHN0eWxlcyB4bWk6dHlwZT0ic3R5bGU6UGFweXJ1c1ZpZXdTdHlsZSIgeG1pOmlkPSJfUHpFS3Vwc1RFZVN1NnBmTGtuS0U0QSI+DQorICAgICAgPG93bmVyIHhtaTp0eXBlPSJ1bWw6TW9kZWwiIGhyZWY9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC51bWwjX1B5NlpvSnNURWVTdTZwZkxrbktFNEEiLz4NCisgICAgICA8Y29uZmlndXJhdGlvbiB4bWk6dHlwZT0iY29uZmlndXJhdGlvbjpQYXB5cnVzRGlhZ3JhbSIgaHJlZj0icGxhdGZvcm06L3BsdWdpbi9vcmcuZWNsaXBzZS5wYXB5cnVzLmluZnJhLnZpZXdwb2ludHMucG9saWN5L2J1aWx0aW4vZGVmYXVsdC5jb25maWd1cmF0aW9uI183d0xtcE54aEVlT3FIdlJ5aU44N2hBIi8+DQorICAgIDwvc3R5bGVzPg0KKyAgICA8c3R5bGVzIHhtaTp0eXBlPSJub3RhdGlvbjpTdHJpbmdWYWx1ZVN0eWxlIiB4bWk6aWQ9Il9aOHNCb0NZZUVlV3RuNmhqbXR1ZnVnIiBuYW1lPSJkaWFncmFtX2NvbXBhdGliaWxpdHlfdmVyc2lvbiIgc3RyaW5nVmFsdWU9IjEuMS4wIi8+DQorICAgIDxlbGVtZW50IHhtaTp0eXBlPSJ1bWw6TW9kZWwiIGhyZWY9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC51bWwjX1B5NlpvSnNURWVTdTZwZkxrbktFNEEiLz4NCisgICAgPGVkZ2VzIHhtaTp0eXBlPSJub3RhdGlvbjpDb25uZWN0b3IiIHhtaTppZD0iX1B6RUt1NXNURWVTdTZwZkxrbktFNEEiIHR5cGU9IjQwMDYiIHNvdXJjZT0iX1B6RUtwNXNURWVTdTZwZkxrbktFNEEiIHRhcmdldD0iX1B6RUtvWnNURWVTdTZwZkxrbktFNEEiPg0KKyAgICAgIDxjaGlsZHJlbiB4bWk6dHlwZT0ibm90YXRpb246RGVjb3JhdGlvbk5vZGUiIHhtaTppZD0iX1B6RUt2SnNURWVTdTZwZkxrbktFNEEiIHZpc2libGU9ImZhbHNlIiB0eXBlPSI2MDE0Ij4NCisgICAgICAgIDxsYXlvdXRDb25zdHJhaW50IHhtaTp0eXBlPSJub3RhdGlvbjpMb2NhdGlvbiIgeG1pOmlkPSJfUHpFS3Zac1RFZVN1NnBmTGtuS0U0QSIgeT0iNDAiLz4NCisgICAgICA8L2NoaWxkcmVuPg0KKyAgICAgIDxjaGlsZHJlbiB4bWk6dHlwZT0ibm90YXRpb246RGVjb3JhdGlvbk5vZGUiIHhtaTppZD0iX1B6RUt2cHNURWVTdTZwZkxrbktFNEEiIHZpc2libGU9ImZhbHNlIiB0eXBlPSI2MDE1Ij4NCisgICAgICAgIDxsYXlvdXRDb25zdHJhaW50IHhtaTp0eXBlPSJub3RhdGlvbjpMb2NhdGlvbiIgeG1pOmlkPSJfUHpFS3Y1c1RFZVN1NnBmTGtuS0U0QSIgeT0iNjAiLz4NCisgICAgICA8L2NoaWxkcmVuPg0KKyAgICAgIDxzdHlsZXMgeG1pOnR5cGU9Im5vdGF0aW9uOkZvbnRTdHlsZSIgeG1pOmlkPSJfUHpFS3dKc1RFZVN1NnBmTGtuS0U0QSIvPg0KKyAgICAgIDxlbGVtZW50IHhtaTp0eXBlPSJ1bWw6QWJzdHJhY3Rpb24iIGhyZWY9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC51bWwjX1B5NlpwSnNURWVTdTZwZkxrbktFNEEiLz4NCisgICAgICA8YmVuZHBvaW50cyB4bWk6dHlwZT0ibm90YXRpb246UmVsYXRpdmVCZW5kcG9pbnRzIiB4bWk6aWQ9Il9QekVLd1pzVEVlU3U2cGZMa25LRTRBIiBwb2ludHM9IlstMiwgLTEwLCA4LCA0OF0kWy0yNywgLTQ1LCAtMTcsIDEzXSIvPg0KKyAgICAgIDxzb3VyY2VBbmNob3IgeG1pOnR5cGU9Im5vdGF0aW9uOklkZW50aXR5QW5jaG9yIiB4bWk6aWQ9Il9QekVLd3BzVEVlU3U2cGZMa25LRTRBIiBpZD0iKDAuMzA1LDAuMSkiLz4NCisgICAgICA8dGFyZ2V0QW5jaG9yIHhtaTp0eXBlPSJub3RhdGlvbjpJZGVudGl0eUFuY2hvciIgeG1pOmlkPSJfUHpFS3c1c1RFZVN1NnBmTGtuS0U0QSIgaWQ9IigwLjI3LDAuODcpIi8+DQorICAgIDwvZWRnZXM+DQorICAgIDxlZGdlcyB4bWk6dHlwZT0ibm90YXRpb246Q29ubmVjdG9yIiB4bWk6aWQ9Il9QekVLeEpzVEVlU3U2cGZMa25LRTRBIiB0eXBlPSI0MDA2IiBzb3VyY2U9Il9QekVLclpzVEVlU3U2cGZMa25LRTRBIiB0YXJnZXQ9Il9QekVLcDVzVEVlU3U2cGZMa25LRTRBIj4NCisgICAgICA8Y2hpbGRyZW4geG1pOnR5cGU9Im5vdGF0aW9uOkRlY29yYXRpb25Ob2RlIiB4bWk6aWQ9Il9QekVLeFpzVEVlU3U2cGZMa25LRTRBIiB2aXNpYmxlPSJmYWxzZSIgdHlwZT0iNjAxNCI+DQorICAgICAgICA8bGF5b3V0Q29uc3RyYWludCB4bWk6dHlwZT0ibm90YXRpb246TG9jYXRpb24iIHhtaTppZD0iX1B6RUt4cHNURWVTdTZwZkxrbktFNEEiIHk9IjQwIi8+DQorICAgICAgPC9jaGlsZHJlbj4NCisgICAgICA8Y2hpbGRyZW4geG1pOnR5cGU9Im5vdGF0aW9uOkRlY29yYXRpb25Ob2RlIiB4bWk6aWQ9Il9QekVLeDVzVEVlU3U2cGZMa25LRTRBIiB2aXNpYmxlPSJmYWxzZSIgdHlwZT0iNjAxNSI+DQorICAgICAgICA8bGF5b3V0Q29uc3RyYWludCB4bWk6dHlwZT0ibm90YXRpb246TG9jYXRpb24iIHhtaTppZD0iX1B6RUt5SnNURWVTdTZwZkxrbktFNEEiIHk9IjYwIi8+DQorICAgICAgPC9jaGlsZHJlbj4NCisgICAgICA8c3R5bGVzIHhtaTp0eXBlPSJub3RhdGlvbjpGb250U3R5bGUiIHhtaTppZD0iX1B6RUt5WnNURWVTdTZwZkxrbktFNEEiLz4NCisgICAgICA8ZWxlbWVudCB4bWk6dHlwZT0idW1sOkFic3RyYWN0aW9uIiBocmVmPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQudW1sI19QeTZacDVzVEVlU3U2cGZMa25LRTRBIi8+DQorICAgICAgPGJlbmRwb2ludHMgeG1pOnR5cGU9Im5vdGF0aW9uOlJlbGF0aXZlQmVuZHBvaW50cyIgeG1pOmlkPSJfUHpFS3lwc1RFZVN1NnBmTGtuS0U0QSIgcG9pbnRzPSJbLTksIC0xNiwgMCwgNjddJFstMjQsIC03MiwgLTE1LCAxMV0iLz4NCisgICAgICA8c291cmNlQW5jaG9yIHhtaTp0eXBlPSJub3RhdGlvbjpJZGVudGl0eUFuY2hvciIgeG1pOmlkPSJfUHpFS3k1c1RFZVN1NnBmTGtuS0U0QSIgaWQ9IigwLjI3LDAuMTYpIi8+DQorICAgICAgPHRhcmdldEFuY2hvciB4bWk6dHlwZT0ibm90YXRpb246SWRlbnRpdHlBbmNob3IiIHhtaTppZD0iX1B6RUt6SnNURWVTdTZwZkxrbktFNEEiIGlkPSIoMC4yMzUsMC44OSkiLz4NCisgICAgPC9lZGdlcz4NCisgICAgPGVkZ2VzIHhtaTp0eXBlPSJub3RhdGlvbjpDb25uZWN0b3IiIHhtaTppZD0iX1B6RUt6WnNURWVTdTZwZkxrbktFNEEiIHR5cGU9IjQwMDgiIHNvdXJjZT0iX1B6RUtzNXNURWVTdTZwZkxrbktFNEEiIHRhcmdldD0iX1B6RUtwNXNURWVTdTZwZkxrbktFNEEiPg0KKyAgICAgIDxjaGlsZHJlbiB4bWk6dHlwZT0ibm90YXRpb246RGVjb3JhdGlvbk5vZGUiIHhtaTppZD0iX1B6RUt6cHNURWVTdTZwZkxrbktFNEEiIHZpc2libGU9ImZhbHNlIiB0eXBlPSI2MDI2Ij4NCisgICAgICAgIDxsYXlvdXRDb25zdHJhaW50IHhtaTp0eXBlPSJub3RhdGlvbjpMb2NhdGlvbiIgeG1pOmlkPSJfUHpFS3o1c1RFZVN1NnBmTGtuS0U0QSIgeT0iNDAiLz4NCisgICAgICA8L2NoaWxkcmVuPg0KKyAgICAgIDxjaGlsZHJlbiB4bWk6dHlwZT0ibm90YXRpb246RGVjb3JhdGlvbk5vZGUiIHhtaTppZD0iX1B6RUswSnNURWVTdTZwZkxrbktFNEEiIHZpc2libGU9ImZhbHNlIiB0eXBlPSI2MDI3Ij4NCisgICAgICAgIDxsYXlvdXRDb25zdHJhaW50IHhtaTp0eXBlPSJub3RhdGlvbjpMb2NhdGlvbiIgeG1pOmlkPSJfUHpFSzBac1RFZVN1NnBmTGtuS0U0QSIgeT0iNjAiLz4NCisgICAgICA8L2NoaWxkcmVuPg0KKyAgICAgIDxzdHlsZXMgeG1pOnR5cGU9Im5vdGF0aW9uOkZvbnRTdHlsZSIgeG1pOmlkPSJfUHpFSzBwc1RFZVN1NnBmTGtuS0U0QSIvPg0KKyAgICAgIDxlbGVtZW50IHhtaTp0eXBlPSJ1bWw6RGVwZW5kZW5jeSIgaHJlZj0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnVtbCNfUHk2WnFac1RFZVN1NnBmTGtuS0U0QSIvPg0KKyAgICAgIDxiZW5kcG9pbnRzIHhtaTp0eXBlPSJub3RhdGlvbjpSZWxhdGl2ZUJlbmRwb2ludHMiIHhtaTppZD0iX1B6RUswNXNURWVTdTZwZkxrbktFNEEiIHBvaW50cz0iWy00NiwgLTIwLCAyNjUsIDExM10kWy0yNzUsIC0xMzUsIDM2LCAtMl0iLz4NCisgICAgICA8c291cmNlQW5jaG9yIHhtaTp0eXBlPSJub3RhdGlvbjpJZGVudGl0eUFuY2hvciIgeG1pOmlkPSJfUHpFSzFKc1RFZVN1NnBmTGtuS0U0QSIgaWQ9IigwLjAsMC40NSkiLz4NCisgICAgICA8dGFyZ2V0QW5jaG9yIHhtaTp0eXBlPSJub3RhdGlvbjpJZGVudGl0eUFuY2hvciIgeG1pOmlkPSJfUHpFSzFac1RFZVN1NnBmTGtuS0U0QSIgaWQ9IigxLjAsMC42NSkiLz4NCisgICAgPC9lZGdlcz4NCisgICAgPGVkZ2VzIHhtaTp0eXBlPSJub3RhdGlvbjpDb25uZWN0b3IiIHhtaTppZD0iX1B6RUsxcHNURWVTdTZwZkxrbktFNEEiIHR5cGU9IjQwMDgiIHNvdXJjZT0iX1B6RUtzNXNURWVTdTZwZkxrbktFNEEiIHRhcmdldD0iX1B6RUtyWnNURWVTdTZwZkxrbktFNEEiPg0KKyAgICAgIDxjaGlsZHJlbiB4bWk6dHlwZT0ibm90YXRpb246RGVjb3JhdGlvbk5vZGUiIHhtaTppZD0iX1B6RUsxNXNURWVTdTZwZkxrbktFNEEiIHZpc2libGU9ImZhbHNlIiB0eXBlPSI2MDI2Ij4NCisgICAgICAgIDxsYXlvdXRDb25zdHJhaW50IHhtaTp0eXBlPSJub3RhdGlvbjpMb2NhdGlvbiIgeG1pOmlkPSJfUHpFSzJKc1RFZVN1NnBmTGtuS0U0QSIgeT0iNDAiLz4NCisgICAgICA8L2NoaWxkcmVuPg0KKyAgICAgIDxjaGlsZHJlbiB4bWk6dHlwZT0ibm90YXRpb246RGVjb3JhdGlvbk5vZGUiIHhtaTppZD0iX1B6RUsyWnNURWVTdTZwZkxrbktFNEEiIHZpc2libGU9ImZhbHNlIiB0eXBlPSI2MDI3Ij4NCisgICAgICAgIDxsYXlvdXRDb25zdHJhaW50IHhtaTp0eXBlPSJub3RhdGlvbjpMb2NhdGlvbiIgeG1pOmlkPSJfUHpFSzJwc1RFZVN1NnBmTGtuS0U0QSIgeT0iNjAiLz4NCisgICAgICA8L2NoaWxkcmVuPg0KKyAgICAgIDxzdHlsZXMgeG1pOnR5cGU9Im5vdGF0aW9uOkZvbnRTdHlsZSIgeG1pOmlkPSJfUHpFSzI1c1RFZVN1NnBmTGtuS0U0QSIvPg0KKyAgICAgIDxlbGVtZW50IHhtaTp0eXBlPSJ1bWw6RGVwZW5kZW5jeSIgaHJlZj0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnVtbCNfUHk2WnFwc1RFZVN1NnBmTGtuS0U0QSIvPg0KKyAgICAgIDxiZW5kcG9pbnRzIHhtaTp0eXBlPSJub3RhdGlvbjpSZWxhdGl2ZUJlbmRwb2ludHMiIHhtaTppZD0iX1B6RUszSnNURWVTdTZwZkxrbktFNEEiIHBvaW50cz0iWy00MCwgMSwgMjYyLCAtMTJdJFstMjY3LCAyMCwgMzUsIDddIi8+DQorICAgICAgPHNvdXJjZUFuY2hvciB4bWk6dHlwZT0ibm90YXRpb246SWRlbnRpdHlBbmNob3IiIHhtaTppZD0iX1B6RUszWnNURWVTdTZwZkxrbktFNEEiIGlkPSIoMC4wLDAuNjkpIi8+DQorICAgICAgPHRhcmdldEFuY2hvciB4bWk6dHlwZT0ibm90YXRpb246SWRlbnRpdHlBbmNob3IiIHhtaTppZD0iX1B6RUszcHNURWVTdTZwZkxrbktFNEEiIGlkPSIoMS4wLDAuNjQpIi8+DQorICAgIDwvZWRnZXM+DQorICAgIDxlZGdlcyB4bWk6dHlwZT0ibm90YXRpb246Q29ubmVjdG9yIiB4bWk6aWQ9Il9kQUtac0NZZUVlV3RuNmhqbXR1ZnVnIiB0eXBlPSI0MDA4IiBzb3VyY2U9Il9QekVLczVzVEVlU3U2cGZMa25LRTRBIiB0YXJnZXQ9Il9QekVLb1pzVEVlU3U2cGZMa25LRTRBIj4NCisgICAgICA8Y2hpbGRyZW4geG1pOnR5cGU9Im5vdGF0aW9uOkRlY29yYXRpb25Ob2RlIiB4bWk6aWQ9Il9kQU0xOENZZUVlV3RuNmhqbXR1ZnVnIiB0eXBlPSI2MDI2Ij4NCisgICAgICAgIDxsYXlvdXRDb25zdHJhaW50IHhtaTp0eXBlPSJub3RhdGlvbjpMb2NhdGlvbiIgeG1pOmlkPSJfZEFNMThTWWVFZVd0bjZoam10dWZ1ZyIgeT0iNDAiLz4NCisgICAgICA8L2NoaWxkcmVuPg0KKyAgICAgIDxjaGlsZHJlbiB4bWk6dHlwZT0ibm90YXRpb246RGVjb3JhdGlvbk5vZGUiIHhtaTppZD0iX2RBTmRBQ1llRWVXdG42aGptdHVmdWciIHR5cGU9IjYwMjciPg0KKyAgICAgICAgPGxheW91dENvbnN0cmFpbnQgeG1pOnR5cGU9Im5vdGF0aW9uOkxvY2F0aW9uIiB4bWk6aWQ9Il9kQU5kQVNZZUVlV3RuNmhqbXR1ZnVnIiB5PSI2MCIvPg0KKyAgICAgIDwvY2hpbGRyZW4+DQorICAgICAgPHN0eWxlcyB4bWk6dHlwZT0ibm90YXRpb246Rm9udFN0eWxlIiB4bWk6aWQ9Il9kQUtac1NZZUVlV3RuNmhqbXR1ZnVnIi8+DQorICAgICAgPGVsZW1lbnQgeG1pOnR5cGU9InVtbDpEZXBlbmRlbmN5IiBocmVmPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQudW1sI19jX2dTWUNZZUVlV3RuNmhqbXR1ZnVnIi8+DQorICAgICAgPGJlbmRwb2ludHMgeG1pOnR5cGU9Im5vdGF0aW9uOlJlbGF0aXZlQmVuZHBvaW50cyIgeG1pOmlkPSJfZEFLWnNpWWVFZVd0bjZoam10dWZ1ZyIgcG9pbnRzPSJbLTEyLCAtMTAsIDI2OSwgMjMyXSRbLTI1OSwgLTI0MSwgMjIsIDFdIi8+DQorICAgICAgPHNvdXJjZUFuY2hvciB4bWk6dHlwZT0ibm90YXRpb246SWRlbnRpdHlBbmNob3IiIHhtaTppZD0iX2RBLVNBQ1llRWVXdG42aGptdHVmdWciIGlkPSIoMC4wLDAuMSkiLz4NCisgICAgICA8dGFyZ2V0QW5jaG9yIHhtaTp0eXBlPSJub3RhdGlvbjpJZGVudGl0eUFuY2hvciIgeG1pOmlkPSJfZEEtNUVDWWVFZVd0bjZoam10dWZ1ZyIgaWQ9IigxLjAsMC43MikiLz4NCisgICAgPC9lZGdlcz4NCisgIDwvbm90YXRpb246RGlhZ3JhbT4NCisgIDxuYXR0YWJsZTpUYWJsZSB4bWk6aWQ9Il9hZWJoSUpzVEVlU3U2cGZMa25LRTRBIiBuYW1lPSJSZXF1aXJlbWVudHMiIGN1cnJlbnRSb3dBeGlzUHJvdmlkZXI9Il9hZWJoSlpzVEVlU3U2cGZMa25LRTRBIiBjdXJyZW50Q29sdW1uQXhpc1Byb3ZpZGVyPSJfYWViaElac1RFZVN1NnBmTGtuS0U0QSI+DQorICAgIDxjb250ZXh0IHhtaTp0eXBlPSJ1bWw6TW9kZWwiIGhyZWY9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC51bWwjX1B5NlpvcHNURWVTdTZwZkxrbktFNEEiLz4NCisgICAgPG93bmVyIHhtaTp0eXBlPSJ1bWw6TW9kZWwiIGhyZWY9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC51bWwjX1B5NlpvcHNURWVTdTZwZkxrbktFNEEiLz4NCisgICAgPHByb3RvdHlwZSB4bWk6dHlwZT0iY29uZmlndXJhdGlvbjpQYXB5cnVzU3luY1RhYmxlIiBocmVmPSJwbGF0Zm9ybTovcGx1Z2luL29yZy5lY2xpcHNlLnBhcHlydXMuaW5mcmEudmlld3BvaW50cy5wb2xpY3kvYnVpbHRpbi9kZWZhdWx0LmNvbmZpZ3VyYXRpb24jXzd3TmIzdHhoRWVPcUh2UnlpTjg3aEEiLz4NCisgICAgPHRhYmxlQ29uZmlndXJhdGlvbiB4bWk6dHlwZT0ibmF0dGFibGVjb25maWd1cmF0aW9uOlRhYmxlQ29uZmlndXJhdGlvbiIgaHJlZj0icGxhdGZvcm06L3BsdWdpbi9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sLm5hdHRhYmxlLnJlcXVpcmVtZW50LmNvbmZpZy9jb25maWdzL3JlcXVpcmVtZW50Lm5hdHRhYmxlY29uZmlndXJhdGlvbiMvIi8+DQorICAgIDxjb2x1bW5BeGlzUHJvdmlkZXJzSGlzdG9yeSB4bWk6dHlwZT0ibmF0dGFibGVheGlzcHJvdmlkZXI6U2xhdmVPYmplY3RBeGlzUHJvdmlkZXIiIHhtaTppZD0iX2FlYmhJWnNURWVTdTZwZkxrbktFNEEiIGRlc2NyaXB0aW9uPSJQcm92aWRlcyB0aGUgY29sdW1ucyBvZiB0aGUgdGFibGVzIHdpdGggYSBkZWZhdWx0IGNvbmZpZ3VyYXRpb24iIG5hbWU9IlJlcXVpcmVtZW50cyBGZWF0dXJlIENvbHVtbnMgUHJvdmlkZXIiPg0KKyAgICAgIDxheGlzIHhtaTp0eXBlPSJuYXR0YWJsZWF4aXM6RmVhdHVyZUlkQXhpcyIgeG1pOmlkPSJfYWViaElwc1RFZVN1NnBmTGtuS0U0QSIgZWxlbWVudD0icHJvcGVydHlfb2Zfc3RlcmVvdHlwZTovU3lzTUw6OlJlcXVpcmVtZW50czo6UmVxdWlyZW1lbnQ6OmlkIj4NCisgICAgICAgIDxtYW5hZ2VyIHhtaTp0eXBlPSJuYXR0YWJsZWF4aXNjb25maWd1cmF0aW9uOkF4aXNNYW5hZ2VyUmVwcmVzZW50YXRpb24iIGhyZWY9InBsYXRmb3JtOi9wbHVnaW4vb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbC5uYXR0YWJsZS5yZXF1aXJlbWVudC5jb25maWcvY29uZmlncy9yZXF1aXJlbWVudC5uYXR0YWJsZWNvbmZpZ3VyYXRpb24jLy9AY29sdW1uSGVhZGVyQXhpc0NvbmZpZ3VyYXRpb24vQGF4aXNNYW5hZ2Vycy4xIi8+DQorICAgICAgPC9heGlzPg0KKyAgICAgIDxheGlzIHhtaTp0eXBlPSJuYXR0YWJsZWF4aXM6RVN0cnVjdHVyYWxGZWF0dXJlQXhpcyIgeG1pOmlkPSJfYWViaEk1c1RFZVN1NnBmTGtuS0U0QSI+DQorICAgICAgICA8bWFuYWdlciB4bWk6dHlwZT0ibmF0dGFibGVheGlzY29uZmlndXJhdGlvbjpBeGlzTWFuYWdlclJlcHJlc2VudGF0aW9uIiBocmVmPSJwbGF0Zm9ybTovcGx1Z2luL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwubmF0dGFibGUucmVxdWlyZW1lbnQuY29uZmlnL2NvbmZpZ3MvcmVxdWlyZW1lbnQubmF0dGFibGVjb25maWd1cmF0aW9uIy8vQGNvbHVtbkhlYWRlckF4aXNDb25maWd1cmF0aW9uL0BheGlzTWFuYWdlcnMuMCIvPg0KKyAgICAgICAgPGVsZW1lbnQgeG1pOnR5cGU9ImVjb3JlOkVBdHRyaWJ1dGUiIGhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvdW1sMi81LjAuMC9VTUwjLy9OYW1lZEVsZW1lbnQvbmFtZSIvPg0KKyAgICAgIDwvYXhpcz4NCisgICAgICA8YXhpcyB4bWk6dHlwZT0ibmF0dGFibGVheGlzOkZlYXR1cmVJZEF4aXMiIHhtaTppZD0iX2FlYmhKSnNURWVTdTZwZkxrbktFNEEiIGVsZW1lbnQ9InByb3BlcnR5X29mX3N0ZXJlb3R5cGU6L1N5c01MOjpSZXF1aXJlbWVudHM6OlJlcXVpcmVtZW50Ojp0ZXh0Ij4NCisgICAgICAgIDxtYW5hZ2VyIHhtaTp0eXBlPSJuYXR0YWJsZWF4aXNjb25maWd1cmF0aW9uOkF4aXNNYW5hZ2VyUmVwcmVzZW50YXRpb24iIGhyZWY9InBsYXRmb3JtOi9wbHVnaW4vb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbC5uYXR0YWJsZS5yZXF1aXJlbWVudC5jb25maWcvY29uZmlncy9yZXF1aXJlbWVudC5uYXR0YWJsZWNvbmZpZ3VyYXRpb24jLy9AY29sdW1uSGVhZGVyQXhpc0NvbmZpZ3VyYXRpb24vQGF4aXNNYW5hZ2Vycy4xIi8+DQorICAgICAgPC9heGlzPg0KKyAgICA8L2NvbHVtbkF4aXNQcm92aWRlcnNIaXN0b3J5Pg0KKyAgICA8cm93QXhpc1Byb3ZpZGVyc0hpc3RvcnkgeG1pOnR5cGU9Im5hdHRhYmxlYXhpc3Byb3ZpZGVyOk1hc3Rlck9iamVjdEF4aXNQcm92aWRlciIgeG1pOmlkPSJfYWViaEpac1RFZVN1NnBmTGtuS0U0QSIgZGVzY3JpcHRpb249IlByb3ZpZGVzIHRoZSByZXF1aXJlbWVudHMgZGlyZWN0bHkgb3duZWQgYnkgdGhlIGNvbnRleHQgb2YgdGhlIHRhYmxlIiBuYW1lPSJSZXF1aXJlbWVudCBBeGlzIFByb3ZpZGVyIiBkaXNjb25uZWN0U2xhdmU9InRydWUiLz4NCisgIDwvbmF0dGFibGU6VGFibGU+DQorICA8Y3NzOk1vZGVsU3R5bGVTaGVldHMgeG1pOmlkPSJfMjVHeThKdk1FZVNwbUlOTmxjakFCUSIvPg0KKzwveG1pOlhNST4NCmRpZmYgLS1naXQgYS9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC9kb2Mvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnVtbCBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0L2RvYy9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQudW1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBhZDc3MDAKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC9kb2Mvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnVtbApAQCAtMCwwICsxLDU2IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/Pg0KKzx4bWk6WE1JIHhtaTp2ZXJzaW9uPSIyMDEzMTAwMSIgeG1sbnM6eG1pPSJodHRwOi8vd3d3Lm9tZy5vcmcvc3BlYy9YTUkvMjAxMzEwMDEiIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIHhtbG5zOlJlcXVpcmVtZW50cz0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9wYXB5cnVzLzAuNy4wL1N5c01ML1JlcXVpcmVtZW50cyIgeG1sbnM6ZWNvcmU9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvZW1mLzIwMDIvRWNvcmUiIHhtbG5zOnVtbD0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy91bWwyLzUuMC4wL1VNTCIgeHNpOnNjaGVtYUxvY2F0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3BhcHlydXMvMC43LjAvU3lzTUwvUmVxdWlyZW1lbnRzIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvcGFweXJ1cy8wLjcuMC9TeXNNTCMvL3JlcXVpcmVtZW50cyI+DQorICA8dW1sOk1vZGVsIHhtaTppZD0iX1B5NlpvSnNURWVTdTZwZkxrbktFNEEiIG5hbWU9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNCI+DQorICAgIDxwYWNrYWdlSW1wb3J0IHhtaTp0eXBlPSJ1bWw6UGFja2FnZUltcG9ydCIgeG1pOmlkPSJfUHk2Wm9ac1RFZVN1NnBmTGtuS0U0QSI+DQorICAgICAgPGltcG9ydGVkUGFja2FnZSB4bWk6dHlwZT0idW1sOk1vZGVsIiBocmVmPSJwYXRobWFwOi8vVU1MX0xJQlJBUklFUy9VTUxQcmltaXRpdmVUeXBlcy5saWJyYXJ5LnVtbCNfMCIvPg0KKyAgICA8L3BhY2thZ2VJbXBvcnQ+DQorICAgIDxwYWNrYWdlZEVsZW1lbnQgeG1pOnR5cGU9InVtbDpNb2RlbCIgeG1pOmlkPSJfUHk2Wm9wc1RFZVN1NnBmTGtuS0U0QSIgbmFtZT0iUmVxdWlyZW1lbnRzIj4NCisgICAgICA8cGFja2FnZWRFbGVtZW50IHhtaTp0eXBlPSJ1bWw6Q2xhc3MiIHhtaTppZD0iX1BUaVEwSnNsRWVTdTZwZkxrbktFNEEiIG5hbWU9IkRlcml2ZWRQcm9wZXJ0aWVzIi8+DQorICAgICAgPHBhY2thZ2VkRWxlbWVudCB4bWk6dHlwZT0idW1sOkNsYXNzIiB4bWk6aWQ9Il9uZ1Y4b0pzeEVlU1lhSVp1V09CbFlRIiBuYW1lPSJTZXJ2aWNlUmVnaXN0cnlDYWxsIi8+DQorICAgICAgPHBhY2thZ2VkRWxlbWVudCB4bWk6dHlwZT0idW1sOkNsYXNzIiB4bWk6aWQ9Il9LbDdwZ0pzMkVlU1lhSVp1V09CbFlRIiBuYW1lPSJBc3NvY2lhdGlvbiI+DQorICAgICAgICA8bmVzdGVkQ2xhc3NpZmllciB4bWk6dHlwZT0idW1sOkNsYXNzIiB4bWk6aWQ9Il9TSTh2QUpzMkVlU1lhSVp1V09CbFlRIiBuYW1lPSJBc3NvY2lhdGlvbiBtdXN0IGhhdmUgMiBhc3NvY2lhdGlvbiBlbmRzIi8+DQorICAgICAgICA8bmVzdGVkQ2xhc3NpZmllciB4bWk6dHlwZT0idW1sOkNsYXNzIiB4bWk6aWQ9Il9nUV9ud0pzMkVlU1lhSVp1V09CbFlRIiBuYW1lPSJPcHRpb25hbE5hbWUgIi8+DQorICAgICAgICA8bmVzdGVkQ2xhc3NpZmllciB4bWk6dHlwZT0idW1sOkNsYXNzIiB4bWk6aWQ9Il9FVU9sY0pzM0VlU1lhSVp1V09CbFlRIiBuYW1lPSJBIHByb3BlcnR5IG11c3QgcmVmZXJlbmNlIGEgcHJvcGVydHkiLz4NCisgICAgICA8L3BhY2thZ2VkRWxlbWVudD4NCisgICAgICA8cGFja2FnZWRFbGVtZW50IHhtaTp0eXBlPSJ1bWw6Q2xhc3MiIHhtaTppZD0iX3p4a084SnMzRWVTWWFJWnVXT0JsWVEiIG5hbWU9ImNvbm5lY3RvciBlbmQgb2YgYmluZGluZ2Nvbm5lY3RvciIvPg0KKyAgICAgIDxwYWNrYWdlZEVsZW1lbnQgeG1pOnR5cGU9InVtbDpDbGFzcyIgeG1pOmlkPSJfcDhWWXdKdERFZVNZYUladVdPQmxZUSIgbmFtZT0iQ29ubmVjdG9yRW5kIj4NCisgICAgICAgIDxuZXN0ZWRDbGFzc2lmaWVyIHhtaTp0eXBlPSJ1bWw6Q2xhc3MiIHhtaTppZD0iX0JXZnlrSnRERWVTWWFJWnVXT0JsWVEiIG5hbWU9Ik5lc3RlZENvbm5lY3RvciBhdXRvbWF0aWNhbGx5IGNyZWF0ZWQiLz4NCisgICAgICAgIDxuZXN0ZWRDbGFzc2lmaWVyIHhtaTp0eXBlPSJ1bWw6Q2xhc3MiIHhtaTppZD0iX0RsWEJZSnRFRWVTNWxNa2FEb2pQSmciIG5hbWU9IkZpcnN0IHByb3BlcnR5IGluIHByb3BlcnR5UGF0aCIvPg0KKyAgICAgICAgPG5lc3RlZENsYXNzaWZpZXIgeG1pOnR5cGU9InVtbDpDbGFzcyIgeG1pOmlkPSJfTldMYk1KdEVFZVM1bE1rYURvalBKZyIgbmFtZT0iTGFzdCBwcm9wZXJ0eSBvZiBwcm9wZXJ0eSBwYXRoIi8+DQorICAgICAgICA8bmVzdGVkQ2xhc3NpZmllciB4bWk6dHlwZT0idW1sOkNsYXNzIiB4bWk6aWQ9Il9uM3NnSUp0R0VlUzVsTWthRG9qUEpnIiBuYW1lPSJ0YWtlIGluIGFjY291bnQgcHJvcGVydHkgaXMgZW5jYXBzdWxhdGVkIG9mIHRoZSBibG9jayIvPg0KKyAgICAgIDwvcGFja2FnZWRFbGVtZW50Pg0KKyAgICAgIDxwYWNrYWdlZEVsZW1lbnQgeG1pOnR5cGU9InVtbDpDbGFzcyIgeG1pOmlkPSJfSGxPS0lKdjlFZVMxU2M5c2ctbnRWdyIgbmFtZT0iRGlzcGxheU9yaWVudGVkSWNvblBvcnQiLz4NCisgICAgPC9wYWNrYWdlZEVsZW1lbnQ+DQorICAgIDxwYWNrYWdlZEVsZW1lbnQgeG1pOnR5cGU9InVtbDpNb2RlbCIgeG1pOmlkPSJfUHk2Wm81c1RFZVN1NnBmTGtuS0U0QSIgbmFtZT0iVXNlQ2FzZXMiPg0KKyAgICAgIDxwYWNrYWdlZEVsZW1lbnQgeG1pOnR5cGU9InVtbDpBYnN0cmFjdGlvbiIgeG1pOmlkPSJfUHk2WnBKc1RFZVN1NnBmTGtuS0U0QSIgbmFtZT0idXNlQ2FzZXNBYnN0cmFjdGlvbiIgY2xpZW50PSJfUHk2Wm81c1RFZVN1NnBmTGtuS0U0QSIgc3VwcGxpZXI9Il9QeTZab3BzVEVlU3U2cGZMa25LRTRBIi8+DQorICAgICAgPHBhY2thZ2VkRWxlbWVudCB4bWk6dHlwZT0idW1sOkNvbXBvbmVudCIgeG1pOmlkPSJfUHk2WnBac1RFZVN1NnBmTGtuS0U0QSIgbmFtZT0iTXlTeXN0ZW0iLz4NCisgICAgPC9wYWNrYWdlZEVsZW1lbnQ+DQorICAgIDxwYWNrYWdlZEVsZW1lbnQgeG1pOnR5cGU9InVtbDpNb2RlbCIgeG1pOmlkPSJfUHk2WnBwc1RFZVN1NnBmTGtuS0U0QSIgbmFtZT0iRGVzaWduIj4NCisgICAgICA8cGFja2FnZWRFbGVtZW50IHhtaTp0eXBlPSJ1bWw6QWJzdHJhY3Rpb24iIHhtaTppZD0iX1B5NlpwNXNURWVTdTZwZkxrbktFNEEiIG5hbWU9IkRlc2lnbkFic3RyYWN0aW9uIiBjbGllbnQ9Il9QeTZacHBzVEVlU3U2cGZMa25LRTRBIiBzdXBwbGllcj0iX1B5NlpvNXNURWVTdTZwZkxrbktFNEEiLz4NCisgICAgPC9wYWNrYWdlZEVsZW1lbnQ+DQorICAgIDxwYWNrYWdlZEVsZW1lbnQgeG1pOnR5cGU9InVtbDpNb2RlbCIgeG1pOmlkPSJfUHk2WnFKc1RFZVN1NnBmTGtuS0U0QSIgbmFtZT0iVGVzdCI+DQorICAgICAgPHBhY2thZ2VkRWxlbWVudCB4bWk6dHlwZT0idW1sOkRlcGVuZGVuY3kiIHhtaTppZD0iX1B5NlpxWnNURWVTdTZwZkxrbktFNEEiIG5hbWU9IkRlcGVuZGVuY3kxIiBjbGllbnQ9Il9QeTZacUpzVEVlU3U2cGZMa25LRTRBIiBzdXBwbGllcj0iX1B5NlpvNXNURWVTdTZwZkxrbktFNEEiLz4NCisgICAgICA8cGFja2FnZWRFbGVtZW50IHhtaTp0eXBlPSJ1bWw6RGVwZW5kZW5jeSIgeG1pOmlkPSJfUHk2WnFwc1RFZVN1NnBmTGtuS0U0QSIgbmFtZT0iRGVwZW5kZW5jeTIiIGNsaWVudD0iX1B5NlpxSnNURWVTdTZwZkxrbktFNEEiIHN1cHBsaWVyPSJfUHk2WnBwc1RFZVN1NnBmTGtuS0U0QSIvPg0KKyAgICAgIDxwYWNrYWdlZEVsZW1lbnQgeG1pOnR5cGU9InVtbDpEZXBlbmRlbmN5IiB4bWk6aWQ9Il9jX2dTWUNZZUVlV3RuNmhqbXR1ZnVnIiBjbGllbnQ9Il9QeTZacUpzVEVlU3U2cGZMa25LRTRBIiBzdXBwbGllcj0iX1B5NlpvcHNURWVTdTZwZkxrbktFNEEiLz4NCisgICAgPC9wYWNrYWdlZEVsZW1lbnQ+DQorICAgIDxwcm9maWxlQXBwbGljYXRpb24geG1pOnR5cGU9InVtbDpQcm9maWxlQXBwbGljYXRpb24iIHhtaTppZD0iX1B5NlpzWnNURWVTdTZwZkxrbktFNEEiPg0KKyAgICAgIDxlQW5ub3RhdGlvbnMgeG1pOnR5cGU9ImVjb3JlOkVBbm5vdGF0aW9uIiB4bWk6aWQ9Il9QeTZac3BzVEVlU3U2cGZMa25LRTRBIiBzb3VyY2U9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvdW1sMi8yLjAuMC9VTUwiPg0KKyAgICAgICAgPHJlZmVyZW5jZXMgeG1pOnR5cGU9ImVjb3JlOkVQYWNrYWdlIiBocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3BhcHlydXMvMC43LjAvU3lzTUwjLy9yZXF1aXJlbWVudHMiLz4NCisgICAgICA8L2VBbm5vdGF0aW9ucz4NCisgICAgICA8YXBwbGllZFByb2ZpbGUgeG1pOnR5cGU9InVtbDpQcm9maWxlIiBocmVmPSJwYXRobWFwOi8vU3lzTUxfUFJPRklMRVMvU3lzTUwucHJvZmlsZS51bWwjX09PSkM0TFg4RWR1Rm1xUXNyTkI5bHciLz4NCisgICAgPC9wcm9maWxlQXBwbGljYXRpb24+DQorICA8L3VtbDpNb2RlbD4NCisgIDxSZXF1aXJlbWVudHM6UmVxdWlyZW1lbnQgeG1pOmlkPSJfUFRyYXdKc2xFZVN1NnBmTGtuS0U0QSIgdGV4dD0iQWxsIGRlcml2ZWQgcHJvcGVydGllcyBtdXN0IGJlIGNhbGN1bGF0ZWQgYW5kIHVwZGF0ZWQuIGNvbmNlcm4sIG1ldGhvZCB2aWV3cG9pbnQmI3hEOyYjeEE7dmlld3BvaW50IGFuZCBzdGFrZWhvbGRlciBmb3IgVmlldyYjeEQ7JiN4QTtjb25jZXJuIGZyb20gc3Rha2Vob2xkZXImI3hEOyYjeEE7Y3JpdGVyaW9uIHNpemUsIG1lbWJlciBmcm9tIEVsZW1lbnQgZ3JvdXAmI3hEOyYjeEE7YmluZGluZ3BhdGggZnJvbSBCb3VuZFJlZmVyZW5jZSYjeEQ7JiN4QTtkZXJpdmVkLGRlcml2ZWRmcm9tLCBzYXRpc2Z5YnksIHJlZmluZWRieSwgdHJhY2VkdG8sIHZlcmlmaWVkYnkgbWFzdGVyIGZvcm0gcmVxdWlyZW1lbnQmI3hEOyYjeEE7JiN4RDsmI3hBOyYjeEQ7JiN4QTtpc2F0b21pYyBmcm9tIEZsb3dQb3J0IiBpZD0iUmVxXzAwMSIgYmFzZV9DbGFzcz0iX1BUaVEwSnNsRWVTdTZwZkxrbktFNEEiLz4NCisgIDxSZXF1aXJlbWVudHM6UmVxdWlyZW1lbnQgeG1pOmlkPSJfbmdmdG9Kc3hFZVNZYUladVdPQmxZUSIgdGV4dD0idGVzdGlmIHRoZSBzZXJ2aWNlIHJlZ2lzdHJ5IG9mIFN5c01MIGNhbiBiZSBjYWwgZm9yIGFsbCBTeXNNTEVsZW1lbnQiIGlkPSJSZXFfMDAyIiBiYXNlX0NsYXNzPSJfbmdWOG9Kc3hFZVNZYUladVdPQmxZUSIvPg0KKyAgPFJlcXVpcmVtZW50czpSZXF1aXJlbWVudCB4bWk6aWQ9Il9LbDdwZ1pzMkVlU1lhSVp1V09CbFlRIiB0ZXh0PSJBc3NvY2lhdGlvbiBpbiBzeXNNTCBhcmUgc3BlY2lmaWMiIGlkPSJSZXFfMDAzIiBiYXNlX0NsYXNzPSJfS2w3cGdKczJFZVNZYUladVdPQmxZUSIvPg0KKyAgPFJlcXVpcmVtZW50czpSZXF1aXJlbWVudCB4bWk6aWQ9Il9TSkY0OEpzMkVlU1lhSVp1V09CbFlRIiB0ZXh0PSJGb3IgYW4gYXNzb2NpYXRpb24gaW4gd2hpY2ggYm90aCBlbmRzIGFyZSB0eXBlZCBieSBibG9ja3MsIHRoZSBudW1iZXIgb2YgZW5kcyBtdXN0IGJlIGV4YWN0bHkgdHdvLiAocDUwKSIgaWQ9IlJlcV8wMDQuMDAxIiBiYXNlX0NsYXNzPSJfU0k4dkFKczJFZVNZYUladVdPQmxZUSIvPg0KKyAgPFJlcXVpcmVtZW50czpSZXF1aXJlbWVudCB4bWk6aWQ9Il9nUV9ud1pzMkVlU1lhSVp1V09CbFlRIiB0ZXh0PSJJbiB0aGUgVU1MIG1ldGFtb2RlbCBvbiB3aGljaCBTeXNNTCBpcyBidWlsdCwgYW55IGluc3RhbmNlIG9mIHRoZSBQcm9wZXJ0eSBtZXRhY2xhc3MgdGhhdCBpcyB0eXBlZCBieSBhIGJsb2NrIChhIENsYXNzIHdpdGggdGhlIMKrYmxvY2vCuyBzdGVyZW90eXBlIGFwcGxpZWQpIGFuZCB3aGljaCBpcyBvd25lZCBieSBhbiBBc3NvY2lhdGlvbiBtYXkgbm90IGhhdmUgYSBuYW1lIGFuZCBtYXkgbm90IGJlIGRlZmluZWQgYXMgYSBuYXZpZ2FibGUgb3duZWQgZW5kIG9mIHRoZSBhc3NvY2lhdGlvbi4gcDUwIiBpZD0iUmVxXzAwNC4wMDIiIGJhc2VfQ2xhc3M9Il9nUV9ud0pzMkVlU1lhSVp1V09CbFlRIi8+DQorICA8UmVxdWlyZW1lbnRzOlJlcXVpcmVtZW50IHhtaTppZD0iX0VVT2xjWnMzRWVTWWFJWnVXT0JsWVEiIHRleHQ9IkluIHRoZSBVTUwgbWV0YW1vZGVsIG9uIHdoaWNoIFN5c01MIGlzIGJ1aWx0LCBhIFByb3BlcnR5IHRoYXQgaXMgdHlwZWQgYnkgYSBibG9jayBtdXN0IGJlIGRlZmluZWQgYXMgYW4gZW5kIG9mIGFuIGFzc29jaWF0aW9uIiBpZD0iUmVxXzAwNC4wMDMiIGJhc2VfQ2xhc3M9Il9FVU9sY0pzM0VlU1lhSVp1V09CbFlRIi8+DQorICA8UmVxdWlyZW1lbnRzOlJlcXVpcmVtZW50IHhtaTppZD0iX3p4a084WnMzRWVTWWFJWnVXT0JsWVEiIHRleHQ9IlRoZSB0d28gZW5kcyBvZiBhIGJpbmRpbmcgY29ubmVjdG9yIG11c3QgaGF2ZSBlaXRoZXIgdGhlIHNhbWUgdHlwZSBvciB0eXBlcyB0aGF0IGFyZSBjb21wYXRpYmxlIHNvIHRoYXQgZXF1YWxpdHkgb2YgdGhlaXIgdmFsdWVzIGNhbiBiZSBkZWZpbmVkLiBwNDgiIGlkPSJSZXFfMDA1IiBiYXNlX0NsYXNzPSJfenhrTzhKczNFZVNZYUladVdPQmxZUSIvPg0KKyAgPFJlcXVpcmVtZW50czpSZXF1aXJlbWVudCB4bWk6aWQ9Il9CV2Z5a1p0REVlU1lhSVp1V09CbFlRIiB0ZXh0PSJDb25uZWN0b3JzIG1heSBiZSBkcmF3biB0aGF0IGNyb3NzIHRoZSBib3VuZGFyaWVzIG9mIG5lc3RlZCBwcm9wZXJ0aWVzIHRvIGNvbm5lY3QgdG8gcHJvcGVydGllcyB3aXRoaW4gdGhlbS4gVGhlIGNvbm5lY3RvciBpcyBvd25lZCBieSB0aGUgbW9zdCBpbW1lZGlhdGUgYmxvY2sgdGhhdCBvd25zIGJvdGggZW5kcyBvZiB0aGUgY29ubmVjdG9yLiBBIE5lc3RlZENvbm5lY3RvckVuZCBzdGVyZW90eXBlIG9mIGEgVU1MIENvbm5lY3RvckVuZCBpcyBhdXRvbWF0aWNhbGx5IGFwcGxpZWQgdG8gYW55IGNvbm5lY3RvciBlbmQgdGhhdCBpcyBuZXN0ZWQgbW9yZSB0aGFuIG9uZSBsZXZlbCBkZWVwIHdpdGhpbiBhIGNvbnRhaW5pbmcgY29udGV4dC4iIGlkPSJSZXFfMDA2LjAwMSIgYmFzZV9DbGFzcz0iX0JXZnlrSnRERWVTWWFJWnVXT0JsWVEiLz4NCisgIDxSZXF1aXJlbWVudHM6UmVxdWlyZW1lbnQgeG1pOmlkPSJfcDhWWXdadERFZVNZYUladVdPQmxZUSIgdGV4dD0iUGFweXJ1cyBtdXN0IG1hbmFnZSBTeXNNTCBjb25uZWN0b3IgZW5kcyIgaWQ9IlJlcV8wMDYiIGJhc2VfQ2xhc3M9Il9wOFZZd0p0REVlU1lhSVp1V09CbFlRIi8+DQorICA8UmVxdWlyZW1lbnRzOlJlcXVpcmVtZW50IHhtaTppZD0iX0RsZ3lZSnRFRWVTNWxNa2FEb2pQSmciIHRleHQ9IlRoZSBmaXJzdCBwcm9wZXJ0eSBpbiBwcm9wZXJ0eVBhdGggbXVzdCBiZSBvd25lZCBieSB0aGUgYmxvY2sgdGhhdCBvd25zIHRoZSBjb25uZWN0b3IsIG9yIG9uZSBvZiB0aGUgYmxvY2vigJlzIGdlbmVyYWxpemF0aW9ucy4iIGlkPSJSZXFfMDA2LjAwMiIgYmFzZV9DbGFzcz0iX0RsWEJZSnRFRWVTNWxNa2FEb2pQSmciLz4NCisgIDxSZXF1aXJlbWVudHM6UmVxdWlyZW1lbnQgeG1pOmlkPSJfTldMYk1adEVFZVM1bE1rYURvalBKZyIgdGV4dD0iVGhlIHR5cGUgb2YgdGhlIHByb3BlcnR5IGF0IHRoZSBsYXN0IHBvc2l0aW9uIG9mIHRoZSBwcm9wZXJ0eVBhdGggbGlzdCBtdXN0IG93biBvciBpbmhlcml0IHRoZSByb2xlIHByb3BlcnR5IG9mIHRoZSBzdGVyZW90eXBlZCIgaWQ9IlJlcV8wMDYuMDAzIiBiYXNlX0NsYXNzPSJfTldMYk1KdEVFZVM1bE1rYURvalBKZyIvPg0KKyAgPFJlcXVpcmVtZW50czpSZXF1aXJlbWVudCB4bWk6aWQ9Il9uM3NnSVp0R0VlUzVsTWthRG9qUEpnIiB0ZXh0PSJpc0VuY2Fwc3VsYXRlZDogQm9vbGVhbiBbMC4uMV0sIElmIHRydWUsIHRoZW4gdGhlIGJsb2NrIGlzIHRyZWF0ZWQgYXMgYSBibGFjayBib3g7IGEgcGFydCB0eXBlZCBieSB0aGlzIGJsYWNrIGJveCBjYW4gb25seSBiZSBjb25uZWN0ZWQgdmlhIGl0cyBwb3J0cyBvciBkaXJlY3RseSB0byBpdHMgb3V0ZXIgYm91bmRhcnkuIElmIGZhbHNlLCBvciBpZiBhIHZhbHVlIGlzIG5vdCBwcmVzZW50LCB0aGVuIGNvbm5lY3Rpb25zIGNhbiBiZSBlc3RhYmxpc2hlZCB0byAuIHA1MGVsZW1lbnRzIG9mIGl0cyBpbnRlcm5hbCBzdHJ1Y3R1cmUgdmlhIGRlZXAtbmVzdGVkIGNvbm5lY3RvciBlbmRzLiIgaWQ9IlJlcV8wMDYuMDA0IiBiYXNlX0NsYXNzPSJfbjNzZ0lKdEdFZVM1bE1rYURvalBKZyIvPg0KKyAgPFJlcXVpcmVtZW50czpSZXF1aXJlbWVudCB4bWk6aWQ9Il9IbFJOY0p2OUVlUzFTYzlzZy1udFZ3IiB0ZXh0PSJQYXB5cnVzIHNob3VsZCBjaGFuZ2UgdGhlIGljb24gdG8gYWx3YXlzIGhhdmUgdGhlIGFycm93IG9mIGEgcG9ydCBvcnRob2dvbmFsIHRvIGl0cyBibG9jayIgaWQ9IlJlcV8wMDciIGJhc2VfQ2xhc3M9Il9IbE9LSUp2OUVlUzFTYzlzZy1udFZ3Ii8+DQorPC94bWk6WE1JPg0KZGlmZiAtLWdpdCBhL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0L2ljb25zL1N5c01MTGlicmFyeS5naWYgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC9pY29ucy9TeXNNTExpYnJhcnkuZ2lmCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJmOGJkZDUKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC9pY29ucy9TeXNNTExpYnJhcnkuZ2lmCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0L2ljb25zL1N5c01MUHJvZmlsZS5naWYgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC9pY29ucy9TeXNNTFByb2ZpbGUuZ2lmCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ4YzM4MzQKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC9pY29ucy9TeXNNTFByb2ZpbGUuZ2lmCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0L21vZGVsL1N5TUxMaWJyYXJpZXMuZGkgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC9tb2RlbC9TeU1MTGlicmFyaWVzLmRpCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg2MzRkNGMKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC9tb2RlbC9TeU1MTGlicmFyaWVzLmRpCkBAIC0wLDAgKzEsMiBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4NCis8eG1pOlhNSSB4bWk6dmVyc2lvbj0iMi4wIiB4bWxuczp4bWk9Imh0dHA6Ly93d3cub21nLm9yZy9YTUkiLz4NCmRpZmYgLS1naXQgYS9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC9tb2RlbC9TeU1MTGlicmFyaWVzLm5vdGF0aW9uIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQvbW9kZWwvU3lNTExpYnJhcmllcy5ub3RhdGlvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMzU4MmI5Ci0tLSAvZGV2L251bGwKKysrIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQvbW9kZWwvU3lNTExpYnJhcmllcy5ub3RhdGlvbgpAQCAtMCwwICsxLDkgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+DQorPG5vdGF0aW9uOkRpYWdyYW0geG1pOnZlcnNpb249IjIuMCIgeG1sbnM6eG1pPSJodHRwOi8vd3d3Lm9tZy5vcmcvWE1JIiB4bWxuczpub3RhdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9nbWYvcnVudGltZS8xLjAuMi9ub3RhdGlvbiIgeG1sbnM6c3R5bGU9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvcGFweXJ1cy9pbmZyYS92aWV3cG9pbnRzL3BvbGljeS9zdHlsZSIgeG1sbnM6dW1sPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3VtbDIvNS4wLjAvVU1MIiB4bWk6aWQ9Il9RcVFMOEpzQUVlU0VScmVBb184WVRBIiB0eXBlPSJQYXB5cnVzVU1MQ2xhc3NEaWFncmFtIiBuYW1lPSJOZXdEaWFncmFtIiBtZWFzdXJlbWVudFVuaXQ9IlBpeGVsIj4NCisgIDxzdHlsZXMgeG1pOnR5cGU9Im5vdGF0aW9uOlN0cmluZ1ZhbHVlU3R5bGUiIHhtaTppZD0iX1FxUUw4WnNBRWVTRVJyZUFvXzhZVEEiIG5hbWU9ImRpYWdyYW1fY29tcGF0aWJpbGl0eV92ZXJzaW9uIiBzdHJpbmdWYWx1ZT0iMS4wLjAiLz4NCisgIDxzdHlsZXMgeG1pOnR5cGU9Im5vdGF0aW9uOkRpYWdyYW1TdHlsZSIgeG1pOmlkPSJfUXFRTDhwc0FFZVNFUnJlQW9fOFlUQSIvPg0KKyAgPHN0eWxlcyB4bWk6dHlwZT0ic3R5bGU6UGFweXJ1c1ZpZXdTdHlsZSIgeG1pOmlkPSJfUXFRTDg1c0FFZVNFUnJlQW9fOFlUQSI+DQorICAgIDxvd25lciB4bWk6dHlwZT0idW1sOlBhY2thZ2UiIGhyZWY9IlN5TUxMaWJyYXJpZXMudW1sI1N5c01MTGlicmFyaWVzIi8+DQorICA8L3N0eWxlcz4NCisgIDxlbGVtZW50IHhtaTp0eXBlPSJ1bWw6UGFja2FnZSIgaHJlZj0iU3lNTExpYnJhcmllcy51bWwjU3lzTUxMaWJyYXJpZXMiLz4NCis8L25vdGF0aW9uOkRpYWdyYW0+DQpkaWZmIC0tZ2l0IGEvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQvbW9kZWwvU3lNTExpYnJhcmllcy51bWwgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC9tb2RlbC9TeU1MTGlicmFyaWVzLnVtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mOTg2MmM4Ci0tLSAvZGV2L251bGwKKysrIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQvbW9kZWwvU3lNTExpYnJhcmllcy51bWwKQEAgLTAsMCArMSwxOTQgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+DQorPHhtaTpYTUkgeG1pOnZlcnNpb249IjIwMTMxMDAxIiB4bWxuczp4bWk9Imh0dHA6Ly93d3cub21nLm9yZy9zcGVjL1hNSS8yMDEzMTAwMSIgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIgeG1sbnM6U3lzTUwuQmxvY2tzPSJodHRwOi8vL1N5c01ML0Jsb2Nrcy5lY29yZSIgeG1sbnM6ZWNvcmU9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvZW1mLzIwMDIvRWNvcmUiIHhtbG5zOnVtbD0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy91bWwyLzUuMC4wL1VNTCIgeHNpOnNjaGVtYUxvY2F0aW9uPSJodHRwOi8vL1N5c01ML0Jsb2Nrcy5lY29yZSBTeXNNTC5wcm9maWxlLnVtbCNQcm9maWxlRGVmaW5pdGlvbi1TeXNNTC1CbG9ja3MiPg0KKyAgPHVtbDpQYWNrYWdlIHhtaTppZD0iU3lzTUxMaWJyYXJpZXMiIG5hbWU9IlN5c01MTGlicmFyaWVzIiBVUkk9Imh0dHA6Ly93d3cub21nLm9yZy9zcGVjL1N5c01MLzIwMTMxMjAxL1N5c01MIj4NCisgICAgPHBhY2thZ2VkRWxlbWVudCB4bWk6dHlwZT0idW1sOlBhY2thZ2UiIHhtaTppZD0iU3lzTUxMaWJyYXJpZXMtUHJpbWl0aXZlVmFsdWVUeXBlcyIgbmFtZT0iUHJpbWl0aXZlVmFsdWVUeXBlcyIgVVJJPSIiPg0KKyAgICAgIDxwYWNrYWdlZEVsZW1lbnQgeG1pOnR5cGU9InVtbDpQcmltaXRpdmVUeXBlIiB4bWk6aWQ9IlN5c01MTGlicmFyaWVzLVByaW1pdGl2ZVZhbHVlVHlwZXMtQm9vbGVhbiIgbmFtZT0iQm9vbGVhbiIvPg0KKyAgICAgIDxwYWNrYWdlZEVsZW1lbnQgeG1pOnR5cGU9InVtbDpQcmltaXRpdmVUeXBlIiB4bWk6aWQ9IlN5c01MTGlicmFyaWVzLVByaW1pdGl2ZVZhbHVlVHlwZXMtQ29tcGxleCIgbmFtZT0iQ29tcGxleCI+DQorICAgICAgICA8b3duZWRDb21tZW50IHhtaTppZD0iU3lzTUxMaWJyYXJpZXMtUHJpbWl0aXZlVmFsdWVUeXBlcy1Db21wbGV4LW93bmVkQ29tbWVudCIgYW5ub3RhdGVkRWxlbWVudD0iU3lzTUxMaWJyYXJpZXMtUHJpbWl0aXZlVmFsdWVUeXBlcy1Db21wbGV4Ij4NCisgICAgICAgICAgPGJvZHk+QSBDb21wbGV4IHZhbHVlIHR5cGUgcmVwcmVzZW50cyB0aGUgbWF0aGVtYXRpY2FsIGNvbmNlcHQgb2YgYSBjb21wbGV4IG51bWJlci4gQSBjb21wbGV4IG51bWJlciBjb25zaXN0cyBvZiBhIHJlYWwgcGFydCBkZWZpbmVkIGJ5IGEgcmVhbCBudW1iZXIsIGFuZCBhbiBpbWFnaW5hcnkgcGFydCBkZWZpbmVkIGJ5IGEgcmVhbCBudW1iZXIgbXVsdGlwbGllZCBieSB0aGUgc3F1YXJlIHJvb3Qgb2YgLTEuIENvbXBsZXggbnVtYmVycyBhcmUgdXNlZCB0byBleHByZXNzIHNvbHV0aW9ucyB0byB2YXJpb3VzIGZvcm1zIG9mIG1hdGhlbWF0aWNhbCBlcXVhdGlvbnMuPC9ib2R5Pg0KKyAgICAgICAgPC9vd25lZENvbW1lbnQ+DQorICAgICAgICA8Z2VuZXJhbGl6YXRpb24geG1pOmlkPSJTeXNNTExpYnJhcmllcy1QcmltaXRpdmVWYWx1ZVR5cGVzLUNvbXBsZXgtZ2VuZXJhbGl6YXRpb24iIGdlbmVyYWw9IlN5c01MTGlicmFyaWVzLVByaW1pdGl2ZVZhbHVlVHlwZXMtTnVtYmVyIi8+DQorICAgICAgICA8b3duZWRBdHRyaWJ1dGUgeG1pOmlkPSJTeXNNTExpYnJhcmllcy1QcmltaXRpdmVWYWx1ZVR5cGVzLUNvbXBsZXgtcmVhbFBhcnQiIG5hbWU9InJlYWxQYXJ0IiB2aXNpYmlsaXR5PSJwdWJsaWMiIHR5cGU9IlN5c01MTGlicmFyaWVzLVByaW1pdGl2ZVZhbHVlVHlwZXMtUmVhbCI+DQorICAgICAgICAgIDxvd25lZENvbW1lbnQgeG1pOmlkPSJTeXNNTExpYnJhcmllcy1QcmltaXRpdmVWYWx1ZVR5cGVzLUNvbXBsZXgtcmVhbFBhcnQtb3duZWRDb21tZW50IiBhbm5vdGF0ZWRFbGVtZW50PSJTeXNNTExpYnJhcmllcy1QcmltaXRpdmVWYWx1ZVR5cGVzLUNvbXBsZXgtcmVhbFBhcnQiPg0KKyAgICAgICAgICAgIDxib2R5PkEgcmVhbCBudW1iZXIgdXNlZCB0byBleHByZXNzIHRoZSByZWFsIHBhcnQgb2YgYSBjb21wbGV4IG51bWJlci48L2JvZHk+DQorICAgICAgICAgIDwvb3duZWRDb21tZW50Pg0KKyAgICAgICAgPC9vd25lZEF0dHJpYnV0ZT4NCisgICAgICAgIDxvd25lZEF0dHJpYnV0ZSB4bWk6aWQ9IlN5c01MTGlicmFyaWVzLVByaW1pdGl2ZVZhbHVlVHlwZXMtQ29tcGxleC1pbWFnaW5hcnlQYXJ0IiBuYW1lPSJpbWFnaW5hcnlQYXJ0IiB2aXNpYmlsaXR5PSJwdWJsaWMiIHR5cGU9IlN5c01MTGlicmFyaWVzLVByaW1pdGl2ZVZhbHVlVHlwZXMtUmVhbCI+DQorICAgICAgICAgIDxvd25lZENvbW1lbnQgeG1pOmlkPSJTeXNNTExpYnJhcmllcy1QcmltaXRpdmVWYWx1ZVR5cGVzLUNvbXBsZXgtaW1hZ2luYXJ5UGFydC1vd25lZENvbW1lbnQiIGFubm90YXRlZEVsZW1lbnQ9IlN5c01MTGlicmFyaWVzLVByaW1pdGl2ZVZhbHVlVHlwZXMtQ29tcGxleC1pbWFnaW5hcnlQYXJ0Ij4NCisgICAgICAgICAgICA8Ym9keT5BIHJlYWwgbnVtYmVyIHVzZWQgdG8gZXhwcmVzcyB0aGUgaW1hZ2luYXJ5IHBhcnQgb2YgYSBjb21wbGV4IG51bWJlci48L2JvZHk+DQorICAgICAgICAgIDwvb3duZWRDb21tZW50Pg0KKyAgICAgICAgPC9vd25lZEF0dHJpYnV0ZT4NCisgICAgICA8L3BhY2thZ2VkRWxlbWVudD4NCisgICAgICA8cGFja2FnZWRFbGVtZW50IHhtaTp0eXBlPSJ1bWw6UHJpbWl0aXZlVHlwZSIgeG1pOmlkPSJTeXNNTExpYnJhcmllcy1QcmltaXRpdmVWYWx1ZVR5cGVzLUludGVnZXIiIG5hbWU9IkludGVnZXIiPg0KKyAgICAgICAgPGdlbmVyYWxpemF0aW9uIHhtaTppZD0iU3lzTUxMaWJyYXJpZXMtUHJpbWl0aXZlVmFsdWVUeXBlcy1JbnRlZ2VyLWdlbmVyYWxpemF0aW9uIiBnZW5lcmFsPSJTeXNNTExpYnJhcmllcy1QcmltaXRpdmVWYWx1ZVR5cGVzLU51bWJlciIvPg0KKyAgICAgIDwvcGFja2FnZWRFbGVtZW50Pg0KKyAgICAgIDxwYWNrYWdlZEVsZW1lbnQgeG1pOnR5cGU9InVtbDpQcmltaXRpdmVUeXBlIiB4bWk6aWQ9IlN5c01MTGlicmFyaWVzLVByaW1pdGl2ZVZhbHVlVHlwZXMtTnVtYmVyIiBuYW1lPSJOdW1iZXIiIGlzQWJzdHJhY3Q9InRydWUiLz4NCisgICAgICA8cGFja2FnZWRFbGVtZW50IHhtaTp0eXBlPSJ1bWw6UHJpbWl0aXZlVHlwZSIgeG1pOmlkPSJTeXNNTExpYnJhcmllcy1QcmltaXRpdmVWYWx1ZVR5cGVzLVJlYWwiIG5hbWU9IlJlYWwiPg0KKyAgICAgICAgPG93bmVkQ29tbWVudCB4bWk6aWQ9IlN5c01MTGlicmFyaWVzLVByaW1pdGl2ZVZhbHVlVHlwZXMtUmVhbC1vd25lZENvbW1lbnQiIGFubm90YXRlZEVsZW1lbnQ9IlN5c01MTGlicmFyaWVzLVByaW1pdGl2ZVZhbHVlVHlwZXMtUmVhbCI+DQorICAgICAgICAgIDxib2R5PkEgUmVhbCB2YWx1ZSB0eXBlIHJlcHJlc2VudHMgdGhlIG1hdGhlbWF0aWNhbCBjb25jZXB0IG9mIGEgcmVhbCBudW1iZXIuIEEgUmVhbCB2YWx1ZSB0eXBlIG1heSBiZSB1c2VkIHRvIHR5cGUgdmFsdWVzIHRoYXQgaG9sZCBjb250aW51b3VzIHF1YW50aXRpZXMsIHdpdGhvdXQgY29tbWl0dGluZyBhIHNwZWNpZmljIHJlcHJlc2VudGF0aW9uIHN1Y2ggYXMgYSBmbG9hdGluZyBwb2ludCBkYXRhIHR5cGUgd2l0aCByZXN0cmljdGlvbnMgb24gcHJlY2lzaW9uIGFuZCBzY2FsZS48L2JvZHk+DQorICAgICAgICA8L293bmVkQ29tbWVudD4NCisgICAgICAgIDxnZW5lcmFsaXphdGlvbiB4bWk6aWQ9IlN5c01MTGlicmFyaWVzLVByaW1pdGl2ZVZhbHVlVHlwZXMtUmVhbC1nZW5lcmFsaXphdGlvbiIgZ2VuZXJhbD0iU3lzTUxMaWJyYXJpZXMtUHJpbWl0aXZlVmFsdWVUeXBlcy1OdW1iZXIiLz4NCisgICAgICA8L3BhY2thZ2VkRWxlbWVudD4NCisgICAgICA8cGFja2FnZWRFbGVtZW50IHhtaTp0eXBlPSJ1bWw6UHJpbWl0aXZlVHlwZSIgeG1pOmlkPSJTeXNNTExpYnJhcmllcy1QcmltaXRpdmVWYWx1ZVR5cGVzLVN0cmluZyIgbmFtZT0iU3RyaW5nIi8+DQorICAgICAgPHBhY2thZ2VkRWxlbWVudCB4bWk6dHlwZT0idW1sOlBhY2thZ2UiIHhtaTppZD0iU3lzTUxMaWJyYXJpZXMtUHJpbWl0aXZlVmFsdWVUeXBlcy1EZXByZWNhdGVkIiBuYW1lPSJEZXByZWNhdGVkIiBVUkk9IiI+DQorICAgICAgICA8cGFja2FnZWRFbGVtZW50IHhtaTp0eXBlPSJ1bWw6UHJpbWl0aXZlVHlwZSIgeG1pOmlkPSJTeXNNTExpYnJhcmllcy1QcmltaXRpdmVWYWx1ZVR5cGVzLURlcHJlY2F0ZWQtVW5saW1pdGVkTmF0dXJhbCIgbmFtZT0iVW5saW1pdGVkTmF0dXJhbCI+DQorICAgICAgICAgIDxnZW5lcmFsaXphdGlvbiB4bWk6aWQ9IlN5c01MTGlicmFyaWVzLVByaW1pdGl2ZVZhbHVlVHlwZXMtRGVwcmVjYXRlZC1VbmxpbWl0ZWROYXR1cmFsLWdlbmVyYWxpemF0aW9uIiBnZW5lcmFsPSJTeXNNTExpYnJhcmllcy1QcmltaXRpdmVWYWx1ZVR5cGVzLU51bWJlciIvPg0KKyAgICAgICAgPC9wYWNrYWdlZEVsZW1lbnQ+DQorICAgICAgPC9wYWNrYWdlZEVsZW1lbnQ+DQorICAgIDwvcGFja2FnZWRFbGVtZW50Pg0KKyAgICA8cGFja2FnZWRFbGVtZW50IHhtaTp0eXBlPSJ1bWw6UGFja2FnZSIgeG1pOmlkPSJTeXNNTExpYnJhcmllcy1Db250cm9sVmFsdWVzIiBuYW1lPSJDb250cm9sVmFsdWVzIiBVUkk9IiI+DQorICAgICAgPHBhY2thZ2VkRWxlbWVudCB4bWk6dHlwZT0idW1sOkVudW1lcmF0aW9uIiB4bWk6aWQ9IlN5c01MTGlicmFyaWVzLUNvbnRyb2xWYWx1ZXMtQ29udHJvbFZhbHVlIiBuYW1lPSJDb250cm9sVmFsdWUiPg0KKyAgICAgICAgPG93bmVkQ29tbWVudCB4bWk6aWQ9IlN5c01MTGlicmFyaWVzLUNvbnRyb2xWYWx1ZXMtQ29udHJvbFZhbHVlLW93bmVkQ29tbWVudCIgYW5ub3RhdGVkRWxlbWVudD0iU3lzTUxMaWJyYXJpZXMtQ29udHJvbFZhbHVlcy1Db250cm9sVmFsdWUiPg0KKyAgICAgICAgICA8Ym9keT5UaGUgQ29udHJvbFZhbHVlIGVudW1lcmF0aW9uIGlzIGEgdHlwZSBmb3IgdHJlYXRpbmcgY29udHJvbCB2YWx1ZXMgYXMgZGF0YSBhbmQgZm9yIFVNTCBjb250cm9sIHBpbnMuIEl0IGNhbiBiZSB1c2VkIGFzIHRoZSB0eXBlIG9mIGJlaGF2aW9yIGFuZCBvcGVyYXRpb24gcGFyYW1ldGVycywgb2JqZWN0IG5vZGVzLCBhbmQgYXR0cmlidXRlcywgYW5kIHNvIG9uLiBUaGUgcG9zc2libGUgcnVudGltZSB2YWx1ZXMgYXJlIGdpdmVuIGFzIGVudW1lcmF0aW9uIGxpdGVyYWxzLiBNb2RlbGVycyBjYW4gZXh0ZW5kIHRoZSBlbnVtZXJhdGlvbiB3aXRoIGFkZGl0aW9uYWwgbGl0ZXJhbHMsIHN1Y2ggYXMgc3VzcGVuZCwgcmVzdW1lLCB3aXRoIHRoZWlyIG93biBzZW1hbnRpY3MuPC9ib2R5Pg0KKyAgICAgICAgPC9vd25lZENvbW1lbnQ+DQorICAgICAgICA8b3duZWRMaXRlcmFsIHhtaTppZD0iU3lzTUxMaWJyYXJpZXMtQ29udHJvbFZhbHVlcy1Db250cm9sVmFsdWUtZGlzYWJsZSIgbmFtZT0iZGlzYWJsZSI+DQorICAgICAgICAgIDxvd25lZENvbW1lbnQgeG1pOmlkPSJTeXNNTExpYnJhcmllcy1Db250cm9sVmFsdWVzLUNvbnRyb2xWYWx1ZS1kaXNhYmxlLW93bmVkQ29tbWVudCIgYW5ub3RhdGVkRWxlbWVudD0iU3lzTUxMaWJyYXJpZXMtQ29udHJvbFZhbHVlcy1Db250cm9sVmFsdWUtZGlzYWJsZSI+DQorICAgICAgICAgICAgPGJvZHk+VGhlIGRpc2FibGUgbGl0ZXJhbCBtZWFucyBhIHRlcm1pbmF0aW9uIG9mIGFuIGV4ZWN1dGluZyBiZWhhdmlvciB0aGF0IGNhbiBvbmx5IGJlIHN0YXJ0ZWQgYWdhaW4gZnJvbSB0aGUgYmVnaW5uaW5nIChjb21wYXJlIHRvIHN1c3BlbmQpLjwvYm9keT4NCisgICAgICAgICAgPC9vd25lZENvbW1lbnQ+DQorICAgICAgICA8L293bmVkTGl0ZXJhbD4NCisgICAgICAgIDxvd25lZExpdGVyYWwgeG1pOmlkPSJTeXNNTExpYnJhcmllcy1Db250cm9sVmFsdWVzLUNvbnRyb2xWYWx1ZS1lbmFibGUiIG5hbWU9ImVuYWJsZSI+DQorICAgICAgICAgIDxvd25lZENvbW1lbnQgeG1pOmlkPSJTeXNNTExpYnJhcmllcy1Db250cm9sVmFsdWVzLUNvbnRyb2xWYWx1ZS1lbmFibGUtb3duZWRDb21tZW50IiBhbm5vdGF0ZWRFbGVtZW50PSJTeXNNTExpYnJhcmllcy1Db250cm9sVmFsdWVzLUNvbnRyb2xWYWx1ZS1lbmFibGUiPg0KKyAgICAgICAgICAgIDxib2R5PlRoZSBlbmFibGUgbGl0ZXJhbCBtZWFucyB0byBzdGFydCBhIG5ldyBleGVjdXRpb24gb2YgYSBiZWhhdmlvciAoY29tcGFyZSB0byByZXN1bWUpLjwvYm9keT4NCisgICAgICAgICAgPC9vd25lZENvbW1lbnQ+DQorICAgICAgICA8L293bmVkTGl0ZXJhbD4NCisgICAgICA8L3BhY2thZ2VkRWxlbWVudD4NCisgICAgPC9wYWNrYWdlZEVsZW1lbnQ+DQorICAgIDxwYWNrYWdlZEVsZW1lbnQgeG1pOnR5cGU9InVtbDpQYWNrYWdlIiB4bWk6aWQ9IlN5c01MTGlicmFyaWVzLVVuaXRBbmRRdWFudGl0eUtpbmQiIG5hbWU9IlVuaXRBbmRRdWFudGl0eUtpbmQiIFVSST0iIj4NCisgICAgICA8cGFja2FnZWRFbGVtZW50IHhtaTp0eXBlPSJ1bWw6UGFja2FnZSIgeG1pOmlkPSJTeXNNTExpYnJhcmllcy1Vbml0QW5kUXVhbnRpdHlLaW5kLURlcHJlY2F0ZWQiIG5hbWU9IkRlcHJlY2F0ZWQiIFVSST0iIj4NCisgICAgICAgIDxwYWNrYWdlZEVsZW1lbnQgeG1pOnR5cGU9InVtbDpDbGFzcyIgeG1pOmlkPSJTeXNNTExpYnJhcmllcy1Vbml0QW5kUXVhbnRpdHlLaW5kLURlcHJlY2F0ZWQtU2NhbGVWYWx1ZURlZmluaXRpb24iIG5hbWU9IlNjYWxlVmFsdWVEZWZpbml0aW9uIj4NCisgICAgICAgICAgPG93bmVkQXR0cmlidXRlIHhtaTppZD0iU3lzTUxMaWJyYXJpZXMtVW5pdEFuZFF1YW50aXR5S2luZC1EZXByZWNhdGVkLVNjYWxlVmFsdWVEZWZpbml0aW9uLWRlc2NyaXB0aW9uIiBuYW1lPSJkZXNjcmlwdGlvbiIgdmlzaWJpbGl0eT0icHVibGljIiBhZ2dyZWdhdGlvbj0iY29tcG9zaXRlIj4NCisgICAgICAgICAgICA8dHlwZSB4bWk6dHlwZT0idW1sOlByaW1pdGl2ZVR5cGUiIGhyZWY9InBhdGhtYXA6Ly9VTUxfTElCUkFSSUVTL1VNTFByaW1pdGl2ZVR5cGVzLmxpYnJhcnkudW1sI1N0cmluZyIvPg0KKyAgICAgICAgICAgIDxsb3dlclZhbHVlIHhtaTp0eXBlPSJ1bWw6TGl0ZXJhbEludGVnZXIiIHhtaTppZD0iU3lzTUxMaWJyYXJpZXMtVW5pdEFuZFF1YW50aXR5S2luZC1EZXByZWNhdGVkLVNjYWxlVmFsdWVEZWZpbml0aW9uLWRlc2NyaXB0aW9uLWxvd2VyVmFsdWUiIG5hbWU9IiIgdmFsdWU9IjEiLz4NCisgICAgICAgICAgICA8dXBwZXJWYWx1ZSB4bWk6dHlwZT0idW1sOkxpdGVyYWxVbmxpbWl0ZWROYXR1cmFsIiB4bWk6aWQ9IlN5c01MTGlicmFyaWVzLVVuaXRBbmRRdWFudGl0eUtpbmQtRGVwcmVjYXRlZC1TY2FsZVZhbHVlRGVmaW5pdGlvbi1kZXNjcmlwdGlvbi11cHBlclZhbHVlIiBuYW1lPSIiIHZhbHVlPSIxIi8+DQorICAgICAgICAgIDwvb3duZWRBdHRyaWJ1dGU+DQorICAgICAgICAgIDxvd25lZEF0dHJpYnV0ZSB4bWk6aWQ9IlN5c01MTGlicmFyaWVzLVVuaXRBbmRRdWFudGl0eUtpbmQtRGVwcmVjYXRlZC1TY2FsZVZhbHVlRGVmaW5pdGlvbi12YWx1ZSIgbmFtZT0idmFsdWUiIHZpc2liaWxpdHk9InB1YmxpYyIgdHlwZT0iU3lzTUxMaWJyYXJpZXMtUHJpbWl0aXZlVmFsdWVUeXBlcy1OdW1iZXIiIGFnZ3JlZ2F0aW9uPSJjb21wb3NpdGUiPg0KKyAgICAgICAgICAgIDxsb3dlclZhbHVlIHhtaTp0eXBlPSJ1bWw6TGl0ZXJhbEludGVnZXIiIHhtaTppZD0iU3lzTUxMaWJyYXJpZXMtVW5pdEFuZFF1YW50aXR5S2luZC1EZXByZWNhdGVkLVNjYWxlVmFsdWVEZWZpbml0aW9uLXZhbHVlLWxvd2VyVmFsdWUiIG5hbWU9IiIgdmFsdWU9IjEiLz4NCisgICAgICAgICAgICA8dXBwZXJWYWx1ZSB4bWk6dHlwZT0idW1sOkxpdGVyYWxVbmxpbWl0ZWROYXR1cmFsIiB4bWk6aWQ9IlN5c01MTGlicmFyaWVzLVVuaXRBbmRRdWFudGl0eUtpbmQtRGVwcmVjYXRlZC1TY2FsZVZhbHVlRGVmaW5pdGlvbi12YWx1ZS11cHBlclZhbHVlIiBuYW1lPSIiIHZhbHVlPSIxIi8+DQorICAgICAgICAgIDwvb3duZWRBdHRyaWJ1dGU+DQorICAgICAgICA8L3BhY2thZ2VkRWxlbWVudD4NCisgICAgICAgIDxwYWNrYWdlZEVsZW1lbnQgeG1pOnR5cGU9InVtbDpDbGFzcyIgeG1pOmlkPSJTeXNNTExpYnJhcmllcy1Vbml0QW5kUXVhbnRpdHlLaW5kLURlcHJlY2F0ZWQtU2NhbGUiIG5hbWU9IlNjYWxlIj4NCisgICAgICAgICAgPG93bmVkUnVsZSB4bWk6aWQ9IlN5c01MTGlicmFyaWVzLVVuaXRBbmRRdWFudGl0eUtpbmQtRGVwcmVjYXRlZC1TY2FsZS1tdXN0SGF2ZVF1YW50aXR5S2luZCIgbmFtZT0ibXVzdEhhdmVRdWFudGl0eUtpbmQiIGNvbnN0cmFpbmVkRWxlbWVudD0iU3lzTUxMaWJyYXJpZXMtVW5pdEFuZFF1YW50aXR5S2luZC1EZXByZWNhdGVkLVNjYWxlIj4NCisgICAgICAgICAgICA8c3BlY2lmaWNhdGlvbiB4bWk6dHlwZT0idW1sOk9wYXF1ZUV4cHJlc3Npb24iIHhtaTppZD0iU3lzTUxMaWJyYXJpZXMtVW5pdEFuZFF1YW50aXR5S2luZC1EZXByZWNhdGVkLVNjYWxlLW11c3RIYXZlUXVhbnRpdHlLaW5kLXNwZWNpZmljYXRpb24iIG5hbWU9IiI+DQorICAgICAgICAgICAgICA8bGFuZ3VhZ2U+T0NMMi4wPC9sYW5ndWFnZT4NCisgICAgICAgICAgICAgIDxib2R5PnVuaXQtPmlzRW1wdHkoKSBvciB1bml0LnF1YW50aXR5S2luZD1zZWxmLnF1YW50aXR5S2luZDwvYm9keT4NCisgICAgICAgICAgICA8L3NwZWNpZmljYXRpb24+DQorICAgICAgICAgIDwvb3duZWRSdWxlPg0KKyAgICAgICAgICA8b3duZWRBdHRyaWJ1dGUgeG1pOmlkPSJTeXNNTExpYnJhcmllcy1Vbml0QW5kUXVhbnRpdHlLaW5kLURlcHJlY2F0ZWQtU2NhbGUtdmFsdWVEZWZpbml0aW9uIiBuYW1lPSJ2YWx1ZURlZmluaXRpb24iIHZpc2liaWxpdHk9InB1YmxpYyIgdHlwZT0iU3lzTUxMaWJyYXJpZXMtVW5pdEFuZFF1YW50aXR5S2luZC1EZXByZWNhdGVkLVNjYWxlVmFsdWVEZWZpbml0aW9uIiBpc09yZGVyZWQ9InRydWUiIGFzc29jaWF0aW9uPSJTeXNNTExpYnJhcmllcy1Vbml0QW5kUXVhbnRpdHlLaW5kLURlcHJlY2F0ZWQtQV9zY2FsZV92YWx1ZURlZmluaXRpb24iPg0KKyAgICAgICAgICAgIDxsb3dlclZhbHVlIHhtaTp0eXBlPSJ1bWw6TGl0ZXJhbEludGVnZXIiIHhtaTppZD0iU3lzTUxMaWJyYXJpZXMtVW5pdEFuZFF1YW50aXR5S2luZC1EZXByZWNhdGVkLVNjYWxlLXZhbHVlRGVmaW5pdGlvbi1sb3dlclZhbHVlIiBuYW1lPSIiLz4NCisgICAgICAgICAgICA8dXBwZXJWYWx1ZSB4bWk6dHlwZT0idW1sOkxpdGVyYWxVbmxpbWl0ZWROYXR1cmFsIiB4bWk6aWQ9IlN5c01MTGlicmFyaWVzLVVuaXRBbmRRdWFudGl0eUtpbmQtRGVwcmVjYXRlZC1TY2FsZS12YWx1ZURlZmluaXRpb24tdXBwZXJWYWx1ZSIgbmFtZT0iIiB2YWx1ZT0iKiIvPg0KKyAgICAgICAgICA8L293bmVkQXR0cmlidXRlPg0KKyAgICAgICAgICA8b3duZWRBdHRyaWJ1dGUgeG1pOmlkPSJTeXNNTExpYnJhcmllcy1Vbml0QW5kUXVhbnRpdHlLaW5kLURlcHJlY2F0ZWQtU2NhbGUtdW5pdCIgbmFtZT0idW5pdCIgdmlzaWJpbGl0eT0icHVibGljIiB0eXBlPSJTeXNNTExpYnJhcmllcy1Vbml0QW5kUXVhbnRpdHlLaW5kLVVuaXQiIGFzc29jaWF0aW9uPSJTeXNNTExpYnJhcmllcy1Vbml0QW5kUXVhbnRpdHlLaW5kLURlcHJlY2F0ZWQtQV9zY2FsZV91bml0Ij4NCisgICAgICAgICAgICA8bG93ZXJWYWx1ZSB4bWk6dHlwZT0idW1sOkxpdGVyYWxJbnRlZ2VyIiB4bWk6aWQ9IlN5c01MTGlicmFyaWVzLVVuaXRBbmRRdWFudGl0eUtpbmQtRGVwcmVjYXRlZC1TY2FsZS11bml0LWxvd2VyVmFsdWUiIG5hbWU9IiIvPg0KKyAgICAgICAgICAgIDx1cHBlclZhbHVlIHhtaTp0eXBlPSJ1bWw6TGl0ZXJhbFVubGltaXRlZE5hdHVyYWwiIHhtaTppZD0iU3lzTUxMaWJyYXJpZXMtVW5pdEFuZFF1YW50aXR5S2luZC1EZXByZWNhdGVkLVNjYWxlLXVuaXQtdXBwZXJWYWx1ZSIgbmFtZT0iIiB2YWx1ZT0iMSIvPg0KKyAgICAgICAgICA8L293bmVkQXR0cmlidXRlPg0KKyAgICAgICAgPC9wYWNrYWdlZEVsZW1lbnQ+DQorICAgICAgICA8cGFja2FnZWRFbGVtZW50IHhtaTp0eXBlPSJ1bWw6QXNzb2NpYXRpb24iIHhtaTppZD0iU3lzTUxMaWJyYXJpZXMtVW5pdEFuZFF1YW50aXR5S2luZC1EZXByZWNhdGVkLUFfc2NhbGVfdW5pdCIgbmFtZT0iQV9zY2FsZV91bml0IiBtZW1iZXJFbmQ9IlN5c01MTGlicmFyaWVzLVVuaXRBbmRRdWFudGl0eUtpbmQtRGVwcmVjYXRlZC1BX3NjYWxlX3VuaXQtc2NhbGUgU3lzTUxMaWJyYXJpZXMtVW5pdEFuZFF1YW50aXR5S2luZC1EZXByZWNhdGVkLVNjYWxlLXVuaXQiPg0KKyAgICAgICAgICA8b3duZWRFbmQgeG1pOmlkPSJTeXNNTExpYnJhcmllcy1Vbml0QW5kUXVhbnRpdHlLaW5kLURlcHJlY2F0ZWQtQV9zY2FsZV91bml0LXNjYWxlIiBuYW1lPSJzY2FsZSIgdmlzaWJpbGl0eT0icHVibGljIiB0eXBlPSJTeXNNTExpYnJhcmllcy1Vbml0QW5kUXVhbnRpdHlLaW5kLURlcHJlY2F0ZWQtU2NhbGUiIGFzc29jaWF0aW9uPSJTeXNNTExpYnJhcmllcy1Vbml0QW5kUXVhbnRpdHlLaW5kLURlcHJlY2F0ZWQtQV9zY2FsZV91bml0Ij4NCisgICAgICAgICAgICA8bG93ZXJWYWx1ZSB4bWk6dHlwZT0idW1sOkxpdGVyYWxJbnRlZ2VyIiB4bWk6aWQ9IlN5c01MTGlicmFyaWVzLVVuaXRBbmRRdWFudGl0eUtpbmQtRGVwcmVjYXRlZC1BX3NjYWxlX3VuaXQtc2NhbGUtbG93ZXJWYWx1ZSIgbmFtZT0iIi8+DQorICAgICAgICAgICAgPHVwcGVyVmFsdWUgeG1pOnR5cGU9InVtbDpMaXRlcmFsVW5saW1pdGVkTmF0dXJhbCIgeG1pOmlkPSJTeXNNTExpYnJhcmllcy1Vbml0QW5kUXVhbnRpdHlLaW5kLURlcHJlY2F0ZWQtQV9zY2FsZV91bml0LXNjYWxlLXVwcGVyVmFsdWUiIG5hbWU9IiIgdmFsdWU9IioiLz4NCisgICAgICAgICAgPC9vd25lZEVuZD4NCisgICAgICAgIDwvcGFja2FnZWRFbGVtZW50Pg0KKyAgICAgICAgPHBhY2thZ2VkRWxlbWVudCB4bWk6dHlwZT0idW1sOkFzc29jaWF0aW9uIiB4bWk6aWQ9IlN5c01MTGlicmFyaWVzLVVuaXRBbmRRdWFudGl0eUtpbmQtRGVwcmVjYXRlZC1BX3NjYWxlX3ZhbHVlRGVmaW5pdGlvbiIgbmFtZT0iQV9zY2FsZV92YWx1ZURlZmluaXRpb24iIG1lbWJlckVuZD0iU3lzTUxMaWJyYXJpZXMtVW5pdEFuZFF1YW50aXR5S2luZC1EZXByZWNhdGVkLUFfc2NhbGVfdmFsdWVEZWZpbml0aW9uLXNjYWxlIFN5c01MTGlicmFyaWVzLVVuaXRBbmRRdWFudGl0eUtpbmQtRGVwcmVjYXRlZC1TY2FsZS12YWx1ZURlZmluaXRpb24iPg0KKyAgICAgICAgICA8b3duZWRFbmQgeG1pOmlkPSJTeXNNTExpYnJhcmllcy1Vbml0QW5kUXVhbnRpdHlLaW5kLURlcHJlY2F0ZWQtQV9zY2FsZV92YWx1ZURlZmluaXRpb24tc2NhbGUiIG5hbWU9InNjYWxlIiB2aXNpYmlsaXR5PSJwdWJsaWMiIHR5cGU9IlN5c01MTGlicmFyaWVzLVVuaXRBbmRRdWFudGl0eUtpbmQtRGVwcmVjYXRlZC1TY2FsZSIgYXNzb2NpYXRpb249IlN5c01MTGlicmFyaWVzLVVuaXRBbmRRdWFudGl0eUtpbmQtRGVwcmVjYXRlZC1BX3NjYWxlX3ZhbHVlRGVmaW5pdGlvbiI+DQorICAgICAgICAgICAgPGxvd2VyVmFsdWUgeG1pOnR5cGU9InVtbDpMaXRlcmFsSW50ZWdlciIgeG1pOmlkPSJTeXNNTExpYnJhcmllcy1Vbml0QW5kUXVhbnRpdHlLaW5kLURlcHJlY2F0ZWQtQV9zY2FsZV92YWx1ZURlZmluaXRpb24tc2NhbGUtbG93ZXJWYWx1ZSIgbmFtZT0iIiB2YWx1ZT0iMSIvPg0KKyAgICAgICAgICAgIDx1cHBlclZhbHVlIHhtaTp0eXBlPSJ1bWw6TGl0ZXJhbFVubGltaXRlZE5hdHVyYWwiIHhtaTppZD0iU3lzTUxMaWJyYXJpZXMtVW5pdEFuZFF1YW50aXR5S2luZC1EZXByZWNhdGVkLUFfc2NhbGVfdmFsdWVEZWZpbml0aW9uLXNjYWxlLXVwcGVyVmFsdWUiIG5hbWU9IiIgdmFsdWU9IjEiLz4NCisgICAgICAgICAgPC9vd25lZEVuZD4NCisgICAgICAgIDwvcGFja2FnZWRFbGVtZW50Pg0KKyAgICAgICAgPHBhY2thZ2VkRWxlbWVudCB4bWk6dHlwZT0idW1sOkFzc29jaWF0aW9uIiB4bWk6aWQ9IlN5c01MTGlicmFyaWVzLVVuaXRBbmRRdWFudGl0eUtpbmQtRGVwcmVjYXRlZC1BX3F1YW50aXR5S2luZF9zY2FsZSIgbmFtZT0iQV9xdWFudGl0eUtpbmRfc2NhbGUiIG1lbWJlckVuZD0iU3lzTUxMaWJyYXJpZXMtVW5pdEFuZFF1YW50aXR5S2luZC1RdWFudGl0eUtpbmQtc2NhbGUgU3lzTUxMaWJyYXJpZXMtVW5pdEFuZFF1YW50aXR5S2luZC1EZXByZWNhdGVkLUFfcXVhbnRpdHlLaW5kX3NjYWxlLXF1YW50aXR5S2luZCI+DQorICAgICAgICAgIDxvd25lZEVuZCB4bWk6aWQ9IlN5c01MTGlicmFyaWVzLVVuaXRBbmRRdWFudGl0eUtpbmQtRGVwcmVjYXRlZC1BX3F1YW50aXR5S2luZF9zY2FsZS1xdWFudGl0eUtpbmQiIG5hbWU9InF1YW50aXR5S2luZCIgdmlzaWJpbGl0eT0icHVibGljIiB0eXBlPSJTeXNNTExpYnJhcmllcy1Vbml0QW5kUXVhbnRpdHlLaW5kLVF1YW50aXR5S2luZCIgYXNzb2NpYXRpb249IlN5c01MTGlicmFyaWVzLVVuaXRBbmRRdWFudGl0eUtpbmQtRGVwcmVjYXRlZC1BX3F1YW50aXR5S2luZF9zY2FsZSI+DQorICAgICAgICAgICAgPGxvd2VyVmFsdWUgeG1pOnR5cGU9InVtbDpMaXRlcmFsSW50ZWdlciIgeG1pOmlkPSJTeXNNTExpYnJhcmllcy1Vbml0QW5kUXVhbnRpdHlLaW5kLURlcHJlY2F0ZWQtQV9xdWFudGl0eUtpbmRfc2NhbGUtcXVhbnRpdHlLaW5kLWxvd2VyVmFsdWUiIG5hbWU9IiIgdmFsdWU9IjEiLz4NCisgICAgICAgICAgICA8dXBwZXJWYWx1ZSB4bWk6dHlwZT0idW1sOkxpdGVyYWxVbmxpbWl0ZWROYXR1cmFsIiB4bWk6aWQ9IlN5c01MTGlicmFyaWVzLVVuaXRBbmRRdWFudGl0eUtpbmQtRGVwcmVjYXRlZC1BX3F1YW50aXR5S2luZF9zY2FsZS1xdWFudGl0eUtpbmQtdXBwZXJWYWx1ZSIgbmFtZT0iIiB2YWx1ZT0iMSIvPg0KKyAgICAgICAgICA8L293bmVkRW5kPg0KKyAgICAgICAgPC9wYWNrYWdlZEVsZW1lbnQ+DQorICAgICAgPC9wYWNrYWdlZEVsZW1lbnQ+DQorICAgICAgPHBhY2thZ2VkRWxlbWVudCB4bWk6dHlwZT0idW1sOkNsYXNzIiB4bWk6aWQ9IlN5c01MTGlicmFyaWVzLVVuaXRBbmRRdWFudGl0eUtpbmQtVW5pdCIgbmFtZT0iVW5pdCI+DQorICAgICAgICA8b3duZWRBdHRyaWJ1dGUgeG1pOmlkPSJTeXNNTExpYnJhcmllcy1Vbml0QW5kUXVhbnRpdHlLaW5kLVVuaXQtbmFtZSIgbmFtZT0ibmFtZSIgdmlzaWJpbGl0eT0icHVibGljIiBhZ2dyZWdhdGlvbj0iY29tcG9zaXRlIj4NCisgICAgICAgICAgPHR5cGUgeG1pOnR5cGU9InVtbDpQcmltaXRpdmVUeXBlIiBocmVmPSJwYXRobWFwOi8vVU1MX0xJQlJBUklFUy9VTUxQcmltaXRpdmVUeXBlcy5saWJyYXJ5LnVtbCNTdHJpbmciLz4NCisgICAgICAgICAgPGxvd2VyVmFsdWUgeG1pOnR5cGU9InVtbDpMaXRlcmFsSW50ZWdlciIgeG1pOmlkPSJTeXNNTExpYnJhcmllcy1Vbml0QW5kUXVhbnRpdHlLaW5kLVVuaXQtbmFtZS1sb3dlclZhbHVlIiBuYW1lPSIiLz4NCisgICAgICAgICAgPHVwcGVyVmFsdWUgeG1pOnR5cGU9InVtbDpMaXRlcmFsVW5saW1pdGVkTmF0dXJhbCIgeG1pOmlkPSJTeXNNTExpYnJhcmllcy1Vbml0QW5kUXVhbnRpdHlLaW5kLVVuaXQtbmFtZS11cHBlclZhbHVlIiBuYW1lPSIiIHZhbHVlPSIxIi8+DQorICAgICAgICA8L293bmVkQXR0cmlidXRlPg0KKyAgICAgICAgPG93bmVkQXR0cmlidXRlIHhtaTppZD0iU3lzTUxMaWJyYXJpZXMtVW5pdEFuZFF1YW50aXR5S2luZC1Vbml0LXN5bWJvbCIgbmFtZT0ic3ltYm9sIiB2aXNpYmlsaXR5PSJwdWJsaWMiIGFnZ3JlZ2F0aW9uPSJjb21wb3NpdGUiPg0KKyAgICAgICAgICA8dHlwZSB4bWk6dHlwZT0idW1sOlByaW1pdGl2ZVR5cGUiIGhyZWY9InBhdGhtYXA6Ly9VTUxfTElCUkFSSUVTL1VNTFByaW1pdGl2ZVR5cGVzLmxpYnJhcnkudW1sI1N0cmluZyIvPg0KKyAgICAgICAgICA8bG93ZXJWYWx1ZSB4bWk6dHlwZT0idW1sOkxpdGVyYWxJbnRlZ2VyIiB4bWk6aWQ9IlN5c01MTGlicmFyaWVzLVVuaXRBbmRRdWFudGl0eUtpbmQtVW5pdC1zeW1ib2wtbG93ZXJWYWx1ZSIgbmFtZT0iIi8+DQorICAgICAgICAgIDx1cHBlclZhbHVlIHhtaTp0eXBlPSJ1bWw6TGl0ZXJhbFVubGltaXRlZE5hdHVyYWwiIHhtaTppZD0iU3lzTUxMaWJyYXJpZXMtVW5pdEFuZFF1YW50aXR5S2luZC1Vbml0LXN5bWJvbC11cHBlclZhbHVlIiBuYW1lPSIiIHZhbHVlPSIxIi8+DQorICAgICAgICA8L293bmVkQXR0cmlidXRlPg0KKyAgICAgICAgPG93bmVkQXR0cmlidXRlIHhtaTppZD0iU3lzTUxMaWJyYXJpZXMtVW5pdEFuZFF1YW50aXR5S2luZC1Vbml0LWRlc2NyaXB0aW9uIiBuYW1lPSJkZXNjcmlwdGlvbiIgdmlzaWJpbGl0eT0icHVibGljIiBhZ2dyZWdhdGlvbj0iY29tcG9zaXRlIj4NCisgICAgICAgICAgPHR5cGUgeG1pOnR5cGU9InVtbDpQcmltaXRpdmVUeXBlIiBocmVmPSJwYXRobWFwOi8vVU1MX0xJQlJBUklFUy9VTUxQcmltaXRpdmVUeXBlcy5saWJyYXJ5LnVtbCNTdHJpbmciLz4NCisgICAgICAgICAgPGxvd2VyVmFsdWUgeG1pOnR5cGU9InVtbDpMaXRlcmFsSW50ZWdlciIgeG1pOmlkPSJTeXNNTExpYnJhcmllcy1Vbml0QW5kUXVhbnRpdHlLaW5kLVVuaXQtZGVzY3JpcHRpb24tbG93ZXJWYWx1ZSIgbmFtZT0iIi8+DQorICAgICAgICAgIDx1cHBlclZhbHVlIHhtaTp0eXBlPSJ1bWw6TGl0ZXJhbFVubGltaXRlZE5hdHVyYWwiIHhtaTppZD0iU3lzTUxMaWJyYXJpZXMtVW5pdEFuZFF1YW50aXR5S2luZC1Vbml0LWRlc2NyaXB0aW9uLXVwcGVyVmFsdWUiIG5hbWU9IiIgdmFsdWU9IjEiLz4NCisgICAgICAgIDwvb3duZWRBdHRyaWJ1dGU+DQorICAgICAgICA8b3duZWRBdHRyaWJ1dGUgeG1pOmlkPSJTeXNNTExpYnJhcmllcy1Vbml0QW5kUXVhbnRpdHlLaW5kLVVuaXQtZGVmaW5pdGlvblVSSSIgbmFtZT0iZGVmaW5pdGlvblVSSSIgdmlzaWJpbGl0eT0icHVibGljIiBhZ2dyZWdhdGlvbj0iY29tcG9zaXRlIj4NCisgICAgICAgICAgPHR5cGUgeG1pOnR5cGU9InVtbDpQcmltaXRpdmVUeXBlIiBocmVmPSJwYXRobWFwOi8vVU1MX0xJQlJBUklFUy9VTUxQcmltaXRpdmVUeXBlcy5saWJyYXJ5LnVtbCNTdHJpbmciLz4NCisgICAgICAgICAgPGxvd2VyVmFsdWUgeG1pOnR5cGU9InVtbDpMaXRlcmFsSW50ZWdlciIgeG1pOmlkPSJTeXNNTExpYnJhcmllcy1Vbml0QW5kUXVhbnRpdHlLaW5kLVVuaXQtZGVmaW5pdGlvblVSSS1sb3dlclZhbHVlIiBuYW1lPSIiLz4NCisgICAgICAgICAgPHVwcGVyVmFsdWUgeG1pOnR5cGU9InVtbDpMaXRlcmFsVW5saW1pdGVkTmF0dXJhbCIgeG1pOmlkPSJTeXNNTExpYnJhcmllcy1Vbml0QW5kUXVhbnRpdHlLaW5kLVVuaXQtZGVmaW5pdGlvblVSSS11cHBlclZhbHVlIiBuYW1lPSIiIHZhbHVlPSIxIi8+DQorICAgICAgICA8L293bmVkQXR0cmlidXRlPg0KKyAgICAgICAgPG93bmVkQXR0cmlidXRlIHhtaTppZD0iU3lzTUxMaWJyYXJpZXMtVW5pdEFuZFF1YW50aXR5S2luZC1Vbml0LXF1YW50aXR5S2luZCIgbmFtZT0icXVhbnRpdHlLaW5kIiB2aXNpYmlsaXR5PSJwdWJsaWMiIHR5cGU9IlN5c01MTGlicmFyaWVzLVVuaXRBbmRRdWFudGl0eUtpbmQtUXVhbnRpdHlLaW5kIiBhc3NvY2lhdGlvbj0iU3lzTUxMaWJyYXJpZXMtVW5pdEFuZFF1YW50aXR5S2luZC1BX3F1YW50aXR5S2luZF91bml0Ij4NCisgICAgICAgICAgPGxvd2VyVmFsdWUgeG1pOnR5cGU9InVtbDpMaXRlcmFsSW50ZWdlciIgeG1pOmlkPSJTeXNNTExpYnJhcmllcy1Vbml0QW5kUXVhbnRpdHlLaW5kLVVuaXQtcXVhbnRpdHlLaW5kLWxvd2VyVmFsdWUiIG5hbWU9IiIvPg0KKyAgICAgICAgICA8dXBwZXJWYWx1ZSB4bWk6dHlwZT0idW1sOkxpdGVyYWxVbmxpbWl0ZWROYXR1cmFsIiB4bWk6aWQ9IlN5c01MTGlicmFyaWVzLVVuaXRBbmRRdWFudGl0eUtpbmQtVW5pdC1xdWFudGl0eUtpbmQtdXBwZXJWYWx1ZSIgbmFtZT0iIiB2YWx1ZT0iKiIvPg0KKyAgICAgICAgPC9vd25lZEF0dHJpYnV0ZT4NCisgICAgICA8L3BhY2thZ2VkRWxlbWVudD4NCisgICAgICA8cGFja2FnZWRFbGVtZW50IHhtaTp0eXBlPSJ1bWw6Q2xhc3MiIHhtaTppZD0iU3lzTUxMaWJyYXJpZXMtVW5pdEFuZFF1YW50aXR5S2luZC1RdWFudGl0eUtpbmQiIG5hbWU9IlF1YW50aXR5S2luZCI+DQorICAgICAgICA8b3duZWRBdHRyaWJ1dGUgeG1pOmlkPSJTeXNNTExpYnJhcmllcy1Vbml0QW5kUXVhbnRpdHlLaW5kLVF1YW50aXR5S2luZC1zY2FsZSIgbmFtZT0ic2NhbGUiIHZpc2liaWxpdHk9InB1YmxpYyIgdHlwZT0iU3lzTUxMaWJyYXJpZXMtVW5pdEFuZFF1YW50aXR5S2luZC1EZXByZWNhdGVkLVNjYWxlIiBhc3NvY2lhdGlvbj0iU3lzTUxMaWJyYXJpZXMtVW5pdEFuZFF1YW50aXR5S2luZC1EZXByZWNhdGVkLUFfcXVhbnRpdHlLaW5kX3NjYWxlIj4NCisgICAgICAgICAgPGxvd2VyVmFsdWUgeG1pOnR5cGU9InVtbDpMaXRlcmFsSW50ZWdlciIgeG1pOmlkPSJTeXNNTExpYnJhcmllcy1Vbml0QW5kUXVhbnRpdHlLaW5kLVF1YW50aXR5S2luZC1zY2FsZS1sb3dlclZhbHVlIiBuYW1lPSIiLz4NCisgICAgICAgICAgPHVwcGVyVmFsdWUgeG1pOnR5cGU9InVtbDpMaXRlcmFsVW5saW1pdGVkTmF0dXJhbCIgeG1pOmlkPSJTeXNNTExpYnJhcmllcy1Vbml0QW5kUXVhbnRpdHlLaW5kLVF1YW50aXR5S2luZC1zY2FsZS11cHBlclZhbHVlIiBuYW1lPSIiIHZhbHVlPSIxIi8+DQorICAgICAgICA8L293bmVkQXR0cmlidXRlPg0KKyAgICAgICAgPG93bmVkQXR0cmlidXRlIHhtaTppZD0iU3lzTUxMaWJyYXJpZXMtVW5pdEFuZFF1YW50aXR5S2luZC1RdWFudGl0eUtpbmQtbmFtZSIgbmFtZT0ibmFtZSIgdmlzaWJpbGl0eT0icHVibGljIiBhZ2dyZWdhdGlvbj0iY29tcG9zaXRlIj4NCisgICAgICAgICAgPHR5cGUgeG1pOnR5cGU9InVtbDpQcmltaXRpdmVUeXBlIiBocmVmPSJwYXRobWFwOi8vVU1MX0xJQlJBUklFUy9VTUxQcmltaXRpdmVUeXBlcy5saWJyYXJ5LnVtbCNTdHJpbmciLz4NCisgICAgICAgICAgPGxvd2VyVmFsdWUgeG1pOnR5cGU9InVtbDpMaXRlcmFsSW50ZWdlciIgeG1pOmlkPSJTeXNNTExpYnJhcmllcy1Vbml0QW5kUXVhbnRpdHlLaW5kLVF1YW50aXR5S2luZC1uYW1lLWxvd2VyVmFsdWUiIG5hbWU9IiIvPg0KKyAgICAgICAgICA8dXBwZXJWYWx1ZSB4bWk6dHlwZT0idW1sOkxpdGVyYWxVbmxpbWl0ZWROYXR1cmFsIiB4bWk6aWQ9IlN5c01MTGlicmFyaWVzLVVuaXRBbmRRdWFudGl0eUtpbmQtUXVhbnRpdHlLaW5kLW5hbWUtdXBwZXJWYWx1ZSIgbmFtZT0iIiB2YWx1ZT0iMSIvPg0KKyAgICAgICAgPC9vd25lZEF0dHJpYnV0ZT4NCisgICAgICAgIDxvd25lZEF0dHJpYnV0ZSB4bWk6aWQ9IlN5c01MTGlicmFyaWVzLVVuaXRBbmRRdWFudGl0eUtpbmQtUXVhbnRpdHlLaW5kLXN5bWJvbCIgbmFtZT0ic3ltYm9sIiB2aXNpYmlsaXR5PSJwdWJsaWMiIGFnZ3JlZ2F0aW9uPSJjb21wb3NpdGUiPg0KKyAgICAgICAgICA8dHlwZSB4bWk6dHlwZT0idW1sOlByaW1pdGl2ZVR5cGUiIGhyZWY9InBhdGhtYXA6Ly9VTUxfTElCUkFSSUVTL1VNTFByaW1pdGl2ZVR5cGVzLmxpYnJhcnkudW1sI1N0cmluZyIvPg0KKyAgICAgICAgICA8bG93ZXJWYWx1ZSB4bWk6dHlwZT0idW1sOkxpdGVyYWxJbnRlZ2VyIiB4bWk6aWQ9IlN5c01MTGlicmFyaWVzLVVuaXRBbmRRdWFudGl0eUtpbmQtUXVhbnRpdHlLaW5kLXN5bWJvbC1sb3dlclZhbHVlIiBuYW1lPSIiLz4NCisgICAgICAgICAgPHVwcGVyVmFsdWUgeG1pOnR5cGU9InVtbDpMaXRlcmFsVW5saW1pdGVkTmF0dXJhbCIgeG1pOmlkPSJTeXNNTExpYnJhcmllcy1Vbml0QW5kUXVhbnRpdHlLaW5kLVF1YW50aXR5S2luZC1zeW1ib2wtdXBwZXJWYWx1ZSIgbmFtZT0iIiB2YWx1ZT0iMSIvPg0KKyAgICAgICAgPC9vd25lZEF0dHJpYnV0ZT4NCisgICAgICAgIDxvd25lZEF0dHJpYnV0ZSB4bWk6aWQ9IlN5c01MTGlicmFyaWVzLVVuaXRBbmRRdWFudGl0eUtpbmQtUXVhbnRpdHlLaW5kLWRlc2NyaXB0aW9uIiBuYW1lPSJkZXNjcmlwdGlvbiIgdmlzaWJpbGl0eT0icHVibGljIiBhZ2dyZWdhdGlvbj0iY29tcG9zaXRlIj4NCisgICAgICAgICAgPHR5cGUgeG1pOnR5cGU9InVtbDpQcmltaXRpdmVUeXBlIiBocmVmPSJwYXRobWFwOi8vVU1MX0xJQlJBUklFUy9VTUxQcmltaXRpdmVUeXBlcy5saWJyYXJ5LnVtbCNTdHJpbmciLz4NCisgICAgICAgICAgPGxvd2VyVmFsdWUgeG1pOnR5cGU9InVtbDpMaXRlcmFsSW50ZWdlciIgeG1pOmlkPSJTeXNNTExpYnJhcmllcy1Vbml0QW5kUXVhbnRpdHlLaW5kLVF1YW50aXR5S2luZC1kZXNjcmlwdGlvbi1sb3dlclZhbHVlIiBuYW1lPSIiLz4NCisgICAgICAgICAgPHVwcGVyVmFsdWUgeG1pOnR5cGU9InVtbDpMaXRlcmFsVW5saW1pdGVkTmF0dXJhbCIgeG1pOmlkPSJTeXNNTExpYnJhcmllcy1Vbml0QW5kUXVhbnRpdHlLaW5kLVF1YW50aXR5S2luZC1kZXNjcmlwdGlvbi11cHBlclZhbHVlIiBuYW1lPSIiIHZhbHVlPSIxIi8+DQorICAgICAgICA8L293bmVkQXR0cmlidXRlPg0KKyAgICAgICAgPG93bmVkQXR0cmlidXRlIHhtaTppZD0iU3lzTUxMaWJyYXJpZXMtVW5pdEFuZFF1YW50aXR5S2luZC1RdWFudGl0eUtpbmQtZGVmaW5pdGlvblVSSSIgbmFtZT0iZGVmaW5pdGlvblVSSSIgdmlzaWJpbGl0eT0icHVibGljIiBhZ2dyZWdhdGlvbj0iY29tcG9zaXRlIj4NCisgICAgICAgICAgPHR5cGUgeG1pOnR5cGU9InVtbDpQcmltaXRpdmVUeXBlIiBocmVmPSJwYXRobWFwOi8vVU1MX0xJQlJBUklFUy9VTUxQcmltaXRpdmVUeXBlcy5saWJyYXJ5LnVtbCNTdHJpbmciLz4NCisgICAgICAgICAgPGxvd2VyVmFsdWUgeG1pOnR5cGU9InVtbDpMaXRlcmFsSW50ZWdlciIgeG1pOmlkPSJTeXNNTExpYnJhcmllcy1Vbml0QW5kUXVhbnRpdHlLaW5kLVF1YW50aXR5S2luZC1kZWZpbml0aW9uVVJJLWxvd2VyVmFsdWUiIG5hbWU9IiIvPg0KKyAgICAgICAgICA8dXBwZXJWYWx1ZSB4bWk6dHlwZT0idW1sOkxpdGVyYWxVbmxpbWl0ZWROYXR1cmFsIiB4bWk6aWQ9IlN5c01MTGlicmFyaWVzLVVuaXRBbmRRdWFudGl0eUtpbmQtUXVhbnRpdHlLaW5kLWRlZmluaXRpb25VUkktdXBwZXJWYWx1ZSIgbmFtZT0iIiB2YWx1ZT0iMSIvPg0KKyAgICAgICAgPC9vd25lZEF0dHJpYnV0ZT4NCisgICAgICA8L3BhY2thZ2VkRWxlbWVudD4NCisgICAgICA8cGFja2FnZWRFbGVtZW50IHhtaTp0eXBlPSJ1bWw6QXNzb2NpYXRpb24iIHhtaTppZD0iU3lzTUxMaWJyYXJpZXMtVW5pdEFuZFF1YW50aXR5S2luZC1BX3F1YW50aXR5S2luZF91bml0IiBuYW1lPSJBX3F1YW50aXR5S2luZF91bml0IiBtZW1iZXJFbmQ9IlN5c01MTGlicmFyaWVzLVVuaXRBbmRRdWFudGl0eUtpbmQtVW5pdC1xdWFudGl0eUtpbmQgU3lzTUxMaWJyYXJpZXMtVW5pdEFuZFF1YW50aXR5S2luZC1BX3F1YW50aXR5S2luZF91bml0LXVuaXQiPg0KKyAgICAgICAgPG93bmVkRW5kIHhtaTppZD0iU3lzTUxMaWJyYXJpZXMtVW5pdEFuZFF1YW50aXR5S2luZC1BX3F1YW50aXR5S2luZF91bml0LXVuaXQiIG5hbWU9InVuaXQiIHZpc2liaWxpdHk9InB1YmxpYyIgdHlwZT0iU3lzTUxMaWJyYXJpZXMtVW5pdEFuZFF1YW50aXR5S2luZC1Vbml0IiBhc3NvY2lhdGlvbj0iU3lzTUxMaWJyYXJpZXMtVW5pdEFuZFF1YW50aXR5S2luZC1BX3F1YW50aXR5S2luZF91bml0Ij4NCisgICAgICAgICAgPGxvd2VyVmFsdWUgeG1pOnR5cGU9InVtbDpMaXRlcmFsSW50ZWdlciIgeG1pOmlkPSJTeXNNTExpYnJhcmllcy1Vbml0QW5kUXVhbnRpdHlLaW5kLUFfcXVhbnRpdHlLaW5kX3VuaXQtdW5pdC1sb3dlclZhbHVlIiBuYW1lPSIiLz4NCisgICAgICAgICAgPHVwcGVyVmFsdWUgeG1pOnR5cGU9InVtbDpMaXRlcmFsVW5saW1pdGVkTmF0dXJhbCIgeG1pOmlkPSJTeXNNTExpYnJhcmllcy1Vbml0QW5kUXVhbnRpdHlLaW5kLUFfcXVhbnRpdHlLaW5kX3VuaXQtdW5pdC11cHBlclZhbHVlIiBuYW1lPSIiIHZhbHVlPSIqIi8+DQorICAgICAgICA8L293bmVkRW5kPg0KKyAgICAgIDwvcGFja2FnZWRFbGVtZW50Pg0KKyAgICA8L3BhY2thZ2VkRWxlbWVudD4NCisgICAgPHBhY2thZ2VkRWxlbWVudCB4bWk6dHlwZT0idW1sOlBhY2thZ2UiIHhtaTppZD0iU3lzTUxMaWJyYXJpZXMtUmVxdWlyZW1lbnRzIiBuYW1lPSJSZXF1aXJlbWVudHMiIFVSST0iIj4NCisgICAgICA8cGFja2FnZWRFbGVtZW50IHhtaTp0eXBlPSJ1bWw6RW51bWVyYXRpb24iIHhtaTppZD0iU3lzTUxMaWJyYXJpZXMtUmVxdWlyZW1lbnRzLVZlcmRpY3RLaW5kIiBuYW1lPSJWZXJkaWN0S2luZCI+DQorICAgICAgICA8b3duZWRDb21tZW50IHhtaTppZD0iU3lzTUxMaWJyYXJpZXMtUmVxdWlyZW1lbnRzLVZlcmRpY3RLaW5kLW93bmVkQ29tbWVudCIgYW5ub3RhdGVkRWxlbWVudD0iU3lzTUxMaWJyYXJpZXMtUmVxdWlyZW1lbnRzLVZlcmRpY3RLaW5kIj4NCisgICAgICAgICAgPGJvZHk+VHlwZSBvZiBhIHJldHVybiBwYXJhbWV0ZXIgb2YgYSBUZXN0Q2FzZSBtdXN0IGJlIFZlcmRpY3RLaW5kLCBjb25zaXN0ZW50IHdpdGggdGhlIFVNTCBUZXN0aW5nIFByb2ZpbGUuPC9ib2R5Pg0KKyAgICAgICAgPC9vd25lZENvbW1lbnQ+DQorICAgICAgICA8b3duZWRMaXRlcmFsIHhtaTppZD0iU3lzTUxMaWJyYXJpZXMtUmVxdWlyZW1lbnRzLVZlcmRpY3RLaW5kLXBhc3MiIG5hbWU9InBhc3MiLz4NCisgICAgICAgIDxvd25lZExpdGVyYWwgeG1pOmlkPSJTeXNNTExpYnJhcmllcy1SZXF1aXJlbWVudHMtVmVyZGljdEtpbmQtZmFpbCIgbmFtZT0iZmFpbCIvPg0KKyAgICAgICAgPG93bmVkTGl0ZXJhbCB4bWk6aWQ9IlN5c01MTGlicmFyaWVzLVJlcXVpcmVtZW50cy1WZXJkaWN0S2luZC1pbmNvbmNsdXNpdmUiIG5hbWU9ImluY29uY2x1c2l2ZSIvPg0KKyAgICAgICAgPG93bmVkTGl0ZXJhbCB4bWk6aWQ9IlN5c01MTGlicmFyaWVzLVJlcXVpcmVtZW50cy1WZXJkaWN0S2luZC1lcnJvciIgbmFtZT0iZXJyb3IiLz4NCisgICAgICA8L3BhY2thZ2VkRWxlbWVudD4NCisgICAgPC9wYWNrYWdlZEVsZW1lbnQ+DQorICAgIDxwcm9maWxlQXBwbGljYXRpb24geG1pOmlkPSJTeXNNTExpYnJhcmllcy1wcm9maWxlQXBwbGljYXRpb24iPg0KKyAgICAgIDxlQW5ub3RhdGlvbnMgeG1pOmlkPSJTeXNNTExpYnJhcmllcy1wcm9maWxlQXBwbGljYXRpb24tZUFubm90YXRpb25zIiBzb3VyY2U9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvdW1sMi8yLjAuMC9VTUwiPg0KKyAgICAgICAgPHJlZmVyZW5jZXMgeG1pOnR5cGU9ImVjb3JlOkVQYWNrYWdlIiBocmVmPSJTeXNNTC5wcm9maWxlLnVtbCNQcm9maWxlRGVmaW5pdGlvbi1TeXNNTCIvPg0KKyAgICAgIDwvZUFubm90YXRpb25zPg0KKyAgICAgIDxhcHBsaWVkUHJvZmlsZSBocmVmPSJTeXNNTC5wcm9maWxlLnVtbCNTeXNNTCIvPg0KKyAgICA8L3Byb2ZpbGVBcHBsaWNhdGlvbj4NCisgIDwvdW1sOlBhY2thZ2U+DQorICA8U3lzTUwuQmxvY2tzOlZhbHVlVHlwZSB4bWk6aWQ9IlN5c01MTGlicmFyaWVzLUNvbnRyb2xWYWx1ZXMtQ29udHJvbFZhbHVlLVZhbHVlVHlwZUFwcGxpY2F0aW9uIiBiYXNlX0RhdGFUeXBlPSJTeXNNTExpYnJhcmllcy1Db250cm9sVmFsdWVzLUNvbnRyb2xWYWx1ZSIvPg0KKyAgPFN5c01MLkJsb2NrczpWYWx1ZVR5cGUgeG1pOmlkPSJTeXNNTExpYnJhcmllcy1QcmltaXRpdmVWYWx1ZVR5cGVzLUJvb2xlYW4tVmFsdWVUeXBlQXBwbGljYXRpb24iIGJhc2VfRGF0YVR5cGU9IlN5c01MTGlicmFyaWVzLVByaW1pdGl2ZVZhbHVlVHlwZXMtQm9vbGVhbiIvPg0KKyAgPFN5c01MLkJsb2NrczpWYWx1ZVR5cGUgeG1pOmlkPSJTeXNNTExpYnJhcmllcy1QcmltaXRpdmVWYWx1ZVR5cGVzLUNvbXBsZXgtVmFsdWVUeXBlQXBwbGljYXRpb24iIGJhc2VfRGF0YVR5cGU9IlN5c01MTGlicmFyaWVzLVByaW1pdGl2ZVZhbHVlVHlwZXMtQ29tcGxleCIvPg0KKyAgPFN5c01MLkJsb2NrczpWYWx1ZVR5cGUgeG1pOmlkPSJTeXNNTExpYnJhcmllcy1QcmltaXRpdmVWYWx1ZVR5cGVzLUludGVnZXItVmFsdWVUeXBlQXBwbGljYXRpb24iIGJhc2VfRGF0YVR5cGU9IlN5c01MTGlicmFyaWVzLVByaW1pdGl2ZVZhbHVlVHlwZXMtSW50ZWdlciIvPg0KKyAgPFN5c01MLkJsb2NrczpWYWx1ZVR5cGUgeG1pOmlkPSJTeXNNTExpYnJhcmllcy1QcmltaXRpdmVWYWx1ZVR5cGVzLU51bWJlci1WYWx1ZVR5cGVBcHBsaWNhdGlvbiIgYmFzZV9EYXRhVHlwZT0iU3lzTUxMaWJyYXJpZXMtUHJpbWl0aXZlVmFsdWVUeXBlcy1OdW1iZXIiLz4NCisgIDxTeXNNTC5CbG9ja3M6VmFsdWVUeXBlIHhtaTppZD0iU3lzTUxMaWJyYXJpZXMtUHJpbWl0aXZlVmFsdWVUeXBlcy1SZWFsLVZhbHVlVHlwZUFwcGxpY2F0aW9uIiBiYXNlX0RhdGFUeXBlPSJTeXNNTExpYnJhcmllcy1QcmltaXRpdmVWYWx1ZVR5cGVzLVJlYWwiLz4NCisgIDxTeXNNTC5CbG9ja3M6VmFsdWVUeXBlIHhtaTppZD0iU3lzTUxMaWJyYXJpZXMtUHJpbWl0aXZlVmFsdWVUeXBlcy1TdHJpbmctVmFsdWVUeXBlQXBwbGljYXRpb24iIGJhc2VfRGF0YVR5cGU9IlN5c01MTGlicmFyaWVzLVByaW1pdGl2ZVZhbHVlVHlwZXMtU3RyaW5nIi8+DQorICA8U3lzTUwuQmxvY2tzOlZhbHVlVHlwZSB4bWk6aWQ9IlN5c01MTGlicmFyaWVzLVJlcXVpcmVtZW50cy1WZXJkaWN0S2luZC1WYWx1ZVR5cGVBcHBsaWNhdGlvbiIgYmFzZV9EYXRhVHlwZT0iU3lzTUxMaWJyYXJpZXMtUmVxdWlyZW1lbnRzLVZlcmRpY3RLaW5kIi8+DQorICA8U3lzTUwuQmxvY2tzOkJsb2NrIHhtaTppZD0iU3lzTUxMaWJyYXJpZXMtVW5pdEFuZFF1YW50aXR5S2luZC1EZXByZWNhdGVkLVNjYWxlVmFsdWVEZWZpbml0aW9uLUJsb2NrQXBwbGljYXRpb24iIGJhc2VfQ2xhc3M9IlN5c01MTGlicmFyaWVzLVVuaXRBbmRRdWFudGl0eUtpbmQtRGVwcmVjYXRlZC1TY2FsZVZhbHVlRGVmaW5pdGlvbiIvPg0KKyAgPFN5c01MLkJsb2NrczpCbG9jayB4bWk6aWQ9IlN5c01MTGlicmFyaWVzLVVuaXRBbmRRdWFudGl0eUtpbmQtRGVwcmVjYXRlZC1TY2FsZS1CbG9ja0FwcGxpY2F0aW9uIiBiYXNlX0NsYXNzPSJTeXNNTExpYnJhcmllcy1Vbml0QW5kUXVhbnRpdHlLaW5kLURlcHJlY2F0ZWQtU2NhbGUiLz4NCisgIDxTeXNNTC5CbG9ja3M6QmxvY2sgeG1pOmlkPSJTeXNNTExpYnJhcmllcy1Vbml0QW5kUXVhbnRpdHlLaW5kLVVuaXQtQmxvY2tBcHBsaWNhdGlvbiIgYmFzZV9DbGFzcz0iU3lzTUxMaWJyYXJpZXMtVW5pdEFuZFF1YW50aXR5S2luZC1Vbml0Ii8+DQorICA8U3lzTUwuQmxvY2tzOkJsb2NrIHhtaTppZD0iU3lzTUxMaWJyYXJpZXMtVW5pdEFuZFF1YW50aXR5S2luZC1RdWFudGl0eUtpbmQtQmxvY2tBcHBsaWNhdGlvbiIgYmFzZV9DbGFzcz0iU3lzTUxMaWJyYXJpZXMtVW5pdEFuZFF1YW50aXR5S2luZC1RdWFudGl0eUtpbmQiLz4NCisgIA0KKzwveG1pOlhNST4NCmRpZmYgLS1naXQgYS9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC9tb2RlbC9TeXNNTC5wcm9maWxlLmRpIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQvbW9kZWwvU3lzTUwucHJvZmlsZS5kaQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NjM0ZDRjCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQvbW9kZWwvU3lzTUwucHJvZmlsZS5kaQpAQCAtMCwwICsxLDIgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+DQorPHhtaTpYTUkgeG1pOnZlcnNpb249IjIuMCIgeG1sbnM6eG1pPSJodHRwOi8vd3d3Lm9tZy5vcmcvWE1JIi8+DQpkaWZmIC0tZ2l0IGEvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQvbW9kZWwvU3lzTUwucHJvZmlsZS5nZW5tb2RlbCBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0L21vZGVsL1N5c01MLnByb2ZpbGUuZ2VubW9kZWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmMyNzFiMgotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0L21vZGVsL1N5c01MLnByb2ZpbGUuZ2VubW9kZWwKQEAgLTAsMCArMSw0MjEgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+DQorPGdlbm1vZGVsOkdlbk1vZGVsIHhtaTp2ZXJzaW9uPSIyLjAiIHhtbG5zOnhtaT0iaHR0cDovL3d3dy5vbWcub3JnL1hNSSIgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSINCisgICAgeG1sbnM6ZWNvcmU9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvZW1mLzIwMDIvRWNvcmUiIHhtbG5zOmdlbm1vZGVsPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3VtbDIvMi4yLjAvR2VuTW9kZWwiDQorICAgIGNvcHlyaWdodFRleHQ9IkNvcHlyaWdodCAoYykgMjAxNSBDRUEgTElTVC4mI3hEOyYjeEE7JiN4RDsmI3hBOyBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzJiN4RDsmI3hBOyBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjAmI3hEOyYjeEE7IHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0JiN4RDsmI3hBOyBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbCINCisgICAgbW9kZWxEaXJlY3Rvcnk9Ii9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQvc3JjLWdlbiIgZWRpdERpcmVjdG9yeT0iL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5lZGl0L3NyYy1nZW4iDQorICAgIGVkaXRvckRpcmVjdG9yeT0iL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5lZGl0b3Ivc3JjLWdlbiIgbW9kZWxQbHVnaW5JRD0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0Ig0KKyAgICBtb2RlbE5hbWU9IlN5c01MIiBlZGl0UGx1Z2luQ2xhc3M9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5wcm92aWRlci5TeXNtbEVkaXRQbHVnaW4iDQorICAgIG5vbk5MU01hcmtlcnM9InRydWUiIHJvb3RFeHRlbmRzQ2xhc3M9Im9yZy5lY2xpcHNlLmVtZi5lY29yZS5pbXBsLk1pbmltYWxFT2JqZWN0SW1wbCRDb250YWluZXIiDQorICAgIHRlc3RzRGlyZWN0b3J5PSIvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnRlc3RzL3NyYy1nZW4iIGltcG9ydGVySUQ9Im9yZy5lY2xpcHNlLnVtbDIudW1sLmVjb3JlLmltcG9ydGVyIg0KKyAgICBjb21wbGlhbmNlTGV2ZWw9IjYuMCIgY29weXJpZ2h0RmllbGRzPSJmYWxzZSIgdXNlZEdlblBhY2thZ2VzPSIuLi8uLi9vcmcuZWNsaXBzZS5lbWYuZWNvcmUvbW9kZWwvRWNvcmUuZ2VubW9kZWwjLy9lY29yZSAuLi8uLi9vcmcuZWNsaXBzZS51bWwyLnVtbC5wcm9maWxlLnN0YW5kYXJkL21vZGVsL1N0YW5kYXJkLmdlbm1vZGVsIy8vc3RhbmRhcmQgLi4vLi4vb3JnLmVjbGlwc2UudW1sMi50eXBlcy9tb2RlbC9UeXBlcy5nZW5tb2RlbCMvL3R5cGVzIC4uLy4uL29yZy5lY2xpcHNlLnVtbDIudW1sL21vZGVsL1VNTC5nZW5tb2RlbCMvL3VtbCINCisgICAgb3BlcmF0aW9uUmVmbGVjdGlvbj0idHJ1ZSIgaW1wb3J0T3JnYW5pemluZz0idHJ1ZSI+DQorICA8Z2VuQW5ub3RhdGlvbnMgc291cmNlPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2VtZi8yMDAyL0dlbk1vZGVsL2ltcG9ydGVyL29yZy5lY2xpcHNlLnVtbDIudW1sLmVjb3JlLmltcG9ydGVyIj4NCisgICAgPGRldGFpbHMga2V5PSJPUFBPU0lURV9ST0xFX05BTUVTIiB2YWx1ZT0iSUdOT1JFIi8+DQorICAgIDxkZXRhaWxzIGtleT0iRFVQTElDQVRFX0ZFQVRVUkVTIiB2YWx1ZT0iRElTQ0FSRCIvPg0KKyAgICA8ZGV0YWlscyBrZXk9IkFOTk9UQVRJT05fREVUQUlMUyIgdmFsdWU9IlBST0NFU1MiLz4NCisgICAgPGRldGFpbHMga2V5PSJQUk9QRVJUWV9ERUZBVUxUX0VYUFJFU1NJT05TIiB2YWx1ZT0iSUdOT1JFIi8+DQorICAgIDxkZXRhaWxzIGtleT0iRFVQTElDQVRFX0ZFQVRVUkVfSU5IRVJJVEFOQ0UiIHZhbHVlPSJESVNDQVJEIi8+DQorICAgIDxkZXRhaWxzIGtleT0iQ09NTUVOVFMiIHZhbHVlPSJQUk9DRVNTIi8+DQorICAgIDxkZXRhaWxzIGtleT0iREVSSVZFRF9GRUFUVVJFUyIgdmFsdWU9IlBST0NFU1MiLz4NCisgICAgPGRldGFpbHMga2V5PSJTVVBFUl9DTEFTU19PUkRFUiIgdmFsdWU9IlBST0NFU1MiLz4NCisgICAgPGRldGFpbHMga2V5PSJEVVBMSUNBVEVfT1BFUkFUSU9OX0lOSEVSSVRBTkNFIiB2YWx1ZT0iRElTQ0FSRCIvPg0KKyAgICA8ZGV0YWlscyBrZXk9IlJFREVGSU5JTkdfT1BFUkFUSU9OUyIgdmFsdWU9IlJFUE9SVCIvPg0KKyAgICA8ZGV0YWlscyBrZXk9IklOVkFSSUFOVF9DT05TVFJBSU5UUyIgdmFsdWU9IlBST0NFU1MiLz4NCisgICAgPGRldGFpbHMga2V5PSJVTklPTl9QUk9QRVJUSUVTIiB2YWx1ZT0iUkVQT1JUIi8+DQorICAgIDxkZXRhaWxzIGtleT0iRFVQTElDQVRFX09QRVJBVElPTlMiIHZhbHVlPSJESVNDQVJEIi8+DQorICAgIDxkZXRhaWxzIGtleT0iTk9OX0FQSV9JTlZBUklBTlRTIiB2YWx1ZT0iSUdOT1JFIi8+DQorICAgIDxkZXRhaWxzIGtleT0iQ0FNRUxfQ0FTRV9OQU1FUyIgdmFsdWU9IklHTk9SRSIvPg0KKyAgICA8ZGV0YWlscyBrZXk9IlNVQlNFVFRJTkdfUFJPUEVSVElFUyIgdmFsdWU9IlJFUE9SVCIvPg0KKyAgICA8ZGV0YWlscyBrZXk9Ik9QRVJBVElPTl9CT0RJRVMiIHZhbHVlPSJJR05PUkUiLz4NCisgICAgPGRldGFpbHMga2V5PSJFQ09SRV9UQUdHRURfVkFMVUVTIiB2YWx1ZT0iUFJPQ0VTUyIvPg0KKyAgICA8ZGV0YWlscyBrZXk9IlVOVFlQRURfUFJPUEVSVElFUyIgdmFsdWU9IlJFUE9SVCIvPg0KKyAgICA8ZGV0YWlscyBrZXk9IlJFREVGSU5JTkdfUFJPUEVSVElFUyIgdmFsdWU9IlJFUE9SVCIvPg0KKyAgICA8ZGV0YWlscyBrZXk9IklOVk9DQVRJT05fREVMRUdBVEVTIiB2YWx1ZT0iSUdOT1JFIi8+DQorICAgIDxkZXRhaWxzIGtleT0iVkFMSURBVElPTl9ERUxFR0FURVMiIHZhbHVlPSJJR05PUkUiLz4NCisgIDwvZ2VuQW5ub3RhdGlvbnM+DQorICA8Zm9yZWlnbk1vZGVsPlN5c01MLnByb2ZpbGUudW1sPC9mb3JlaWduTW9kZWw+DQorICA8Z2VuUGFja2FnZXMgeHNpOnR5cGU9Imdlbm1vZGVsOkdlblBhY2thZ2UiIHByZWZpeD0ic3lzbWwiIGJhc2VQYWNrYWdlPSJvcmcuZWNsaXBzZS5wYXB5cnVzIg0KKyAgICAgIGRpc3Bvc2FibGVQcm92aWRlckZhY3Rvcnk9InRydWUiIGNsYXNzUGFja2FnZVN1ZmZpeD0iaW50ZXJuYWwuaW1wbCIgZWNvcmVQYWNrYWdlPSJzeXNtbC5lY29yZSMvIj4NCisgICAgPG5lc3RlZEdlblBhY2thZ2VzIHhzaTp0eXBlPSJnZW5tb2RlbDpHZW5QYWNrYWdlIiBwcmVmaXg9IkJsb2NrcyIgYmFzZVBhY2thZ2U9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNCINCisgICAgICAgIGRpc3Bvc2FibGVQcm92aWRlckZhY3Rvcnk9InRydWUiIGNsYXNzUGFja2FnZVN1ZmZpeD0iaW50ZXJuYWwuaW1wbCIgZWNvcmVQYWNrYWdlPSJzeXNtbC5lY29yZSMvL2Jsb2NrcyI+DQorICAgICAgPGdlbkNsYXNzZXMgeHNpOnR5cGU9Imdlbm1vZGVsOkdlbkNsYXNzIiBlY29yZUNsYXNzPSJzeXNtbC5lY29yZSMvL2Jsb2Nrcy9WYWx1ZVR5cGUiPg0KKyAgICAgICAgPGdlbkZlYXR1cmVzIHhzaTp0eXBlPSJnZW5tb2RlbDpHZW5GZWF0dXJlIiBub3RpZnk9ImZhbHNlIiBjcmVhdGVDaGlsZD0iZmFsc2UiDQorICAgICAgICAgICAgcHJvcGVydHlTb3J0Q2hvaWNlcz0idHJ1ZSIgZWNvcmVGZWF0dXJlPSJlY29yZTpFUmVmZXJlbmNlIHN5c21sLmVjb3JlIy8vYmxvY2tzL1ZhbHVlVHlwZS9iYXNlX0RhdGFUeXBlIi8+DQorICAgICAgICA8Z2VuRmVhdHVyZXMgeHNpOnR5cGU9Imdlbm1vZGVsOkdlbkZlYXR1cmUiIG5vdGlmeT0iZmFsc2UiIGNyZWF0ZUNoaWxkPSJmYWxzZSINCisgICAgICAgICAgICBwcm9wZXJ0eVNvcnRDaG9pY2VzPSJ0cnVlIiBlY29yZUZlYXR1cmU9ImVjb3JlOkVSZWZlcmVuY2Ugc3lzbWwuZWNvcmUjLy9ibG9ja3MvVmFsdWVUeXBlL3VuaXQiLz4NCisgICAgICAgIDxnZW5GZWF0dXJlcyB4c2k6dHlwZT0iZ2VubW9kZWw6R2VuRmVhdHVyZSIgbm90aWZ5PSJmYWxzZSIgY3JlYXRlQ2hpbGQ9ImZhbHNlIg0KKyAgICAgICAgICAgIHByb3BlcnR5U29ydENob2ljZXM9InRydWUiIGVjb3JlRmVhdHVyZT0iZWNvcmU6RVJlZmVyZW5jZSBzeXNtbC5lY29yZSMvL2Jsb2Nrcy9WYWx1ZVR5cGUvcXVhbnRpdHlLaW5kIi8+DQorICAgICAgPC9nZW5DbGFzc2VzPg0KKyAgICAgIDxnZW5DbGFzc2VzIHhzaTp0eXBlPSJnZW5tb2RlbDpHZW5DbGFzcyIgZWNvcmVDbGFzcz0ic3lzbWwuZWNvcmUjLy9ibG9ja3MvRGlzdHJpYnV0ZWRQcm9wZXJ0eSI+DQorICAgICAgICA8Z2VuRmVhdHVyZXMgeHNpOnR5cGU9Imdlbm1vZGVsOkdlbkZlYXR1cmUiIG5vdGlmeT0iZmFsc2UiIGNyZWF0ZUNoaWxkPSJmYWxzZSINCisgICAgICAgICAgICBwcm9wZXJ0eVNvcnRDaG9pY2VzPSJ0cnVlIiBlY29yZUZlYXR1cmU9ImVjb3JlOkVSZWZlcmVuY2Ugc3lzbWwuZWNvcmUjLy9ibG9ja3MvRGlzdHJpYnV0ZWRQcm9wZXJ0eS9iYXNlX1Byb3BlcnR5Ii8+DQorICAgICAgPC9nZW5DbGFzc2VzPg0KKyAgICAgIDxnZW5DbGFzc2VzIHhzaTp0eXBlPSJnZW5tb2RlbDpHZW5DbGFzcyIgZWNvcmVDbGFzcz0ic3lzbWwuZWNvcmUjLy9ibG9ja3MvQ29ubmVjdG9yUHJvcGVydHkiPg0KKyAgICAgICAgPGdlbkZlYXR1cmVzIHhzaTp0eXBlPSJnZW5tb2RlbDpHZW5GZWF0dXJlIiBub3RpZnk9ImZhbHNlIiBjcmVhdGVDaGlsZD0iZmFsc2UiDQorICAgICAgICAgICAgcHJvcGVydHlTb3J0Q2hvaWNlcz0idHJ1ZSIgZWNvcmVGZWF0dXJlPSJlY29yZTpFUmVmZXJlbmNlIHN5c21sLmVjb3JlIy8vYmxvY2tzL0Nvbm5lY3RvclByb3BlcnR5L2Jhc2VfUHJvcGVydHkiLz4NCisgICAgICAgIDxnZW5GZWF0dXJlcyB4c2k6dHlwZT0iZ2VubW9kZWw6R2VuRmVhdHVyZSIgbm90aWZ5PSJmYWxzZSIgY3JlYXRlQ2hpbGQ9ImZhbHNlIg0KKyAgICAgICAgICAgIHByb3BlcnR5U29ydENob2ljZXM9InRydWUiIGVjb3JlRmVhdHVyZT0iZWNvcmU6RVJlZmVyZW5jZSBzeXNtbC5lY29yZSMvL2Jsb2Nrcy9Db25uZWN0b3JQcm9wZXJ0eS9jb25uZWN0b3IiLz4NCisgICAgICA8L2dlbkNsYXNzZXM+DQorICAgICAgPGdlbkNsYXNzZXMgeHNpOnR5cGU9Imdlbm1vZGVsOkdlbkNsYXNzIiBlY29yZUNsYXNzPSJzeXNtbC5lY29yZSMvL2Jsb2Nrcy9QYXJ0aWNpcGFudFByb3BlcnR5Ij4NCisgICAgICAgIDxnZW5GZWF0dXJlcyB4c2k6dHlwZT0iZ2VubW9kZWw6R2VuRmVhdHVyZSIgbm90aWZ5PSJmYWxzZSIgY3JlYXRlQ2hpbGQ9ImZhbHNlIg0KKyAgICAgICAgICAgIHByb3BlcnR5U29ydENob2ljZXM9InRydWUiIGVjb3JlRmVhdHVyZT0iZWNvcmU6RVJlZmVyZW5jZSBzeXNtbC5lY29yZSMvL2Jsb2Nrcy9QYXJ0aWNpcGFudFByb3BlcnR5L2Jhc2VfUHJvcGVydHkiLz4NCisgICAgICAgIDxnZW5GZWF0dXJlcyB4c2k6dHlwZT0iZ2VubW9kZWw6R2VuRmVhdHVyZSIgbm90aWZ5PSJmYWxzZSIgY3JlYXRlQ2hpbGQ9ImZhbHNlIg0KKyAgICAgICAgICAgIHByb3BlcnR5U29ydENob2ljZXM9InRydWUiIGVjb3JlRmVhdHVyZT0iZWNvcmU6RVJlZmVyZW5jZSBzeXNtbC5lY29yZSMvL2Jsb2Nrcy9QYXJ0aWNpcGFudFByb3BlcnR5L2VuZCIvPg0KKyAgICAgIDwvZ2VuQ2xhc3Nlcz4NCisgICAgICA8Z2VuQ2xhc3NlcyB4c2k6dHlwZT0iZ2VubW9kZWw6R2VuQ2xhc3MiIGVjb3JlQ2xhc3M9InN5c21sLmVjb3JlIy8vYmxvY2tzL0JpbmRpbmdDb25uZWN0b3IiPg0KKyAgICAgICAgPGdlbkZlYXR1cmVzIHhzaTp0eXBlPSJnZW5tb2RlbDpHZW5GZWF0dXJlIiBub3RpZnk9ImZhbHNlIiBjcmVhdGVDaGlsZD0iZmFsc2UiDQorICAgICAgICAgICAgcHJvcGVydHlTb3J0Q2hvaWNlcz0idHJ1ZSIgZWNvcmVGZWF0dXJlPSJlY29yZTpFUmVmZXJlbmNlIHN5c21sLmVjb3JlIy8vYmxvY2tzL0JpbmRpbmdDb25uZWN0b3IvYmFzZV9Db25uZWN0b3IiLz4NCisgICAgICA8L2dlbkNsYXNzZXM+DQorICAgICAgPGdlbkNsYXNzZXMgeHNpOnR5cGU9Imdlbm1vZGVsOkdlbkNsYXNzIiBlY29yZUNsYXNzPSJzeXNtbC5lY29yZSMvL2Jsb2Nrcy9CbG9jayI+DQorICAgICAgICA8Z2VuRmVhdHVyZXMgeHNpOnR5cGU9Imdlbm1vZGVsOkdlbkZlYXR1cmUiIG5vdGlmeT0iZmFsc2UiIGNyZWF0ZUNoaWxkPSJmYWxzZSINCisgICAgICAgICAgICBwcm9wZXJ0eVNvcnRDaG9pY2VzPSJ0cnVlIiBlY29yZUZlYXR1cmU9ImVjb3JlOkVSZWZlcmVuY2Ugc3lzbWwuZWNvcmUjLy9ibG9ja3MvQmxvY2svYmFzZV9DbGFzcyIvPg0KKyAgICAgICAgPGdlbkZlYXR1cmVzIHhzaTp0eXBlPSJnZW5tb2RlbDpHZW5GZWF0dXJlIiBjcmVhdGVDaGlsZD0iZmFsc2UiIGVjb3JlRmVhdHVyZT0iZWNvcmU6RUF0dHJpYnV0ZSBzeXNtbC5lY29yZSMvL2Jsb2Nrcy9CbG9jay9pc0VuY2Fwc3VsYXRlZCIvPg0KKyAgICAgIDwvZ2VuQ2xhc3Nlcz4NCisgICAgICA8Z2VuQ2xhc3NlcyB4c2k6dHlwZT0iZ2VubW9kZWw6R2VuQ2xhc3MiIGVjb3JlQ2xhc3M9InN5c21sLmVjb3JlIy8vYmxvY2tzL1Byb3BlcnR5U3BlY2lmaWNUeXBlIj4NCisgICAgICAgIDxnZW5GZWF0dXJlcyB4c2k6dHlwZT0iZ2VubW9kZWw6R2VuRmVhdHVyZSIgbm90aWZ5PSJmYWxzZSIgY3JlYXRlQ2hpbGQ9ImZhbHNlIg0KKyAgICAgICAgICAgIHByb3BlcnR5U29ydENob2ljZXM9InRydWUiIGVjb3JlRmVhdHVyZT0iZWNvcmU6RVJlZmVyZW5jZSBzeXNtbC5lY29yZSMvL2Jsb2Nrcy9Qcm9wZXJ0eVNwZWNpZmljVHlwZS9iYXNlX0NsYXNzaWZpZXIiLz4NCisgICAgICA8L2dlbkNsYXNzZXM+DQorICAgICAgPGdlbkNsYXNzZXMgeHNpOnR5cGU9Imdlbm1vZGVsOkdlbkNsYXNzIiBlY29yZUNsYXNzPSJzeXNtbC5lY29yZSMvL2Jsb2Nrcy9OZXN0ZWRDb25uZWN0b3JFbmQiPg0KKyAgICAgICAgPGdlbkZlYXR1cmVzIHhzaTp0eXBlPSJnZW5tb2RlbDpHZW5GZWF0dXJlIiBub3RpZnk9ImZhbHNlIiBjcmVhdGVDaGlsZD0iZmFsc2UiDQorICAgICAgICAgICAgcHJvcGVydHlTb3J0Q2hvaWNlcz0idHJ1ZSIgZWNvcmVGZWF0dXJlPSJlY29yZTpFUmVmZXJlbmNlIHN5c21sLmVjb3JlIy8vYmxvY2tzL05lc3RlZENvbm5lY3RvckVuZC9iYXNlX0Nvbm5lY3RvckVuZCIvPg0KKyAgICAgIDwvZ2VuQ2xhc3Nlcz4NCisgICAgICA8Z2VuQ2xhc3NlcyB4c2k6dHlwZT0iZ2VubW9kZWw6R2VuQ2xhc3MiIGltYWdlPSJmYWxzZSIgZWNvcmVDbGFzcz0ic3lzbWwuZWNvcmUjLy9ibG9ja3MvRWxlbWVudFByb3BlcnR5UGF0aCI+DQorICAgICAgICA8Z2VuRmVhdHVyZXMgeHNpOnR5cGU9Imdlbm1vZGVsOkdlbkZlYXR1cmUiIG5vdGlmeT0iZmFsc2UiIGNyZWF0ZUNoaWxkPSJmYWxzZSINCisgICAgICAgICAgICBwcm9wZXJ0eVNvcnRDaG9pY2VzPSJ0cnVlIiBlY29yZUZlYXR1cmU9ImVjb3JlOkVSZWZlcmVuY2Ugc3lzbWwuZWNvcmUjLy9ibG9ja3MvRWxlbWVudFByb3BlcnR5UGF0aC9iYXNlX0VsZW1lbnQiLz4NCisgICAgICAgIDxnZW5GZWF0dXJlcyB4c2k6dHlwZT0iZ2VubW9kZWw6R2VuRmVhdHVyZSIgbm90aWZ5PSJmYWxzZSIgY3JlYXRlQ2hpbGQ9ImZhbHNlIg0KKyAgICAgICAgICAgIHByb3BlcnR5U29ydENob2ljZXM9InRydWUiIGVjb3JlRmVhdHVyZT0iZWNvcmU6RVJlZmVyZW5jZSBzeXNtbC5lY29yZSMvL2Jsb2Nrcy9FbGVtZW50UHJvcGVydHlQYXRoL3Byb3BlcnR5UGF0aCIvPg0KKyAgICAgIDwvZ2VuQ2xhc3Nlcz4NCisgICAgICA8Z2VuQ2xhc3NlcyB4c2k6dHlwZT0iZ2VubW9kZWw6R2VuQ2xhc3MiIGltYWdlPSJmYWxzZSIgZWNvcmVDbGFzcz0ic3lzbWwuZWNvcmUjLy9ibG9ja3MvRGlyZWN0ZWRSZWxhdGlvbnNoaXBQcm9wZXJ0eVBhdGgiPg0KKyAgICAgICAgPGdlbkZlYXR1cmVzIHhzaTp0eXBlPSJnZW5tb2RlbDpHZW5GZWF0dXJlIiBub3RpZnk9ImZhbHNlIiBjcmVhdGVDaGlsZD0iZmFsc2UiDQorICAgICAgICAgICAgcHJvcGVydHlTb3J0Q2hvaWNlcz0idHJ1ZSIgZWNvcmVGZWF0dXJlPSJlY29yZTpFUmVmZXJlbmNlIHN5c21sLmVjb3JlIy8vYmxvY2tzL0RpcmVjdGVkUmVsYXRpb25zaGlwUHJvcGVydHlQYXRoL2Jhc2VfRGlyZWN0ZWRSZWxhdGlvbnNoaXAiLz4NCisgICAgICAgIDxnZW5GZWF0dXJlcyB4c2k6dHlwZT0iZ2VubW9kZWw6R2VuRmVhdHVyZSIgbm90aWZ5PSJmYWxzZSIgY3JlYXRlQ2hpbGQ9ImZhbHNlIg0KKyAgICAgICAgICAgIHByb3BlcnR5U29ydENob2ljZXM9InRydWUiIGVjb3JlRmVhdHVyZT0iZWNvcmU6RVJlZmVyZW5jZSBzeXNtbC5lY29yZSMvL2Jsb2Nrcy9EaXJlY3RlZFJlbGF0aW9uc2hpcFByb3BlcnR5UGF0aC9zb3VyY2VQcm9wZXJ0eVBhdGgiLz4NCisgICAgICAgIDxnZW5GZWF0dXJlcyB4c2k6dHlwZT0iZ2VubW9kZWw6R2VuRmVhdHVyZSIgbm90aWZ5PSJmYWxzZSIgY3JlYXRlQ2hpbGQ9ImZhbHNlIg0KKyAgICAgICAgICAgIHByb3BlcnR5U29ydENob2ljZXM9InRydWUiIGVjb3JlRmVhdHVyZT0iZWNvcmU6RVJlZmVyZW5jZSBzeXNtbC5lY29yZSMvL2Jsb2Nrcy9EaXJlY3RlZFJlbGF0aW9uc2hpcFByb3BlcnR5UGF0aC90YXJnZXRQcm9wZXJ0eVBhdGgiLz4NCisgICAgICAgIDxnZW5GZWF0dXJlcyB4c2k6dHlwZT0iZ2VubW9kZWw6R2VuRmVhdHVyZSIgbm90aWZ5PSJmYWxzZSIgY3JlYXRlQ2hpbGQ9ImZhbHNlIg0KKyAgICAgICAgICAgIHByb3BlcnR5U29ydENob2ljZXM9InRydWUiIGVjb3JlRmVhdHVyZT0iZWNvcmU6RVJlZmVyZW5jZSBzeXNtbC5lY29yZSMvL2Jsb2Nrcy9EaXJlY3RlZFJlbGF0aW9uc2hpcFByb3BlcnR5UGF0aC9zb3VyY2VDb250ZXh0Ii8+DQorICAgICAgICA8Z2VuRmVhdHVyZXMgeHNpOnR5cGU9Imdlbm1vZGVsOkdlbkZlYXR1cmUiIG5vdGlmeT0iZmFsc2UiIGNyZWF0ZUNoaWxkPSJmYWxzZSINCisgICAgICAgICAgICBwcm9wZXJ0eVNvcnRDaG9pY2VzPSJ0cnVlIiBlY29yZUZlYXR1cmU9ImVjb3JlOkVSZWZlcmVuY2Ugc3lzbWwuZWNvcmUjLy9ibG9ja3MvRGlyZWN0ZWRSZWxhdGlvbnNoaXBQcm9wZXJ0eVBhdGgvdGFyZ2V0Q29udGV4dCIvPg0KKyAgICAgIDwvZ2VuQ2xhc3Nlcz4NCisgICAgICA8Z2VuQ2xhc3NlcyB4c2k6dHlwZT0iZ2VubW9kZWw6R2VuQ2xhc3MiIGVjb3JlQ2xhc3M9InN5c21sLmVjb3JlIy8vYmxvY2tzL0VuZFBhdGhNdWx0aXBsaWNpdHkiPg0KKyAgICAgICAgPGdlbkZlYXR1cmVzIHhzaTp0eXBlPSJnZW5tb2RlbDpHZW5GZWF0dXJlIiBub3RpZnk9ImZhbHNlIiBjcmVhdGVDaGlsZD0iZmFsc2UiDQorICAgICAgICAgICAgcHJvcGVydHlTb3J0Q2hvaWNlcz0idHJ1ZSIgZWNvcmVGZWF0dXJlPSJlY29yZTpFUmVmZXJlbmNlIHN5c21sLmVjb3JlIy8vYmxvY2tzL0VuZFBhdGhNdWx0aXBsaWNpdHkvYmFzZV9Qcm9wZXJ0eSIvPg0KKyAgICAgICAgPGdlbkZlYXR1cmVzIHhzaTp0eXBlPSJnZW5tb2RlbDpHZW5GZWF0dXJlIiBjcmVhdGVDaGlsZD0iZmFsc2UiIGVjb3JlRmVhdHVyZT0iZWNvcmU6RUF0dHJpYnV0ZSBzeXNtbC5lY29yZSMvL2Jsb2Nrcy9FbmRQYXRoTXVsdGlwbGljaXR5L2xvd2VyIi8+DQorICAgICAgICA8Z2VuRmVhdHVyZXMgeHNpOnR5cGU9Imdlbm1vZGVsOkdlbkZlYXR1cmUiIGNyZWF0ZUNoaWxkPSJmYWxzZSIgZWNvcmVGZWF0dXJlPSJlY29yZTpFQXR0cmlidXRlIHN5c21sLmVjb3JlIy8vYmxvY2tzL0VuZFBhdGhNdWx0aXBsaWNpdHkvdXBwZXIiLz4NCisgICAgICA8L2dlbkNsYXNzZXM+DQorICAgICAgPGdlbkNsYXNzZXMgeHNpOnR5cGU9Imdlbm1vZGVsOkdlbkNsYXNzIiBlY29yZUNsYXNzPSJzeXNtbC5lY29yZSMvL2Jsb2Nrcy9Cb3VuZFJlZmVyZW5jZSI+DQorICAgICAgICA8Z2VuRmVhdHVyZXMgeHNpOnR5cGU9Imdlbm1vZGVsOkdlbkZlYXR1cmUiIG5vdGlmeT0iZmFsc2UiIGNyZWF0ZUNoaWxkPSJmYWxzZSINCisgICAgICAgICAgICBwcm9wZXJ0eVNvcnRDaG9pY2VzPSJ0cnVlIiBlY29yZUZlYXR1cmU9ImVjb3JlOkVSZWZlcmVuY2Ugc3lzbWwuZWNvcmUjLy9ibG9ja3MvQm91bmRSZWZlcmVuY2UvYm91bmRFbmQiLz4NCisgICAgICAgIDxnZW5GZWF0dXJlcyB4c2k6dHlwZT0iZ2VubW9kZWw6R2VuRmVhdHVyZSIgbm90aWZ5PSJmYWxzZSIgY3JlYXRlQ2hpbGQ9ImZhbHNlIg0KKyAgICAgICAgICAgIHByb3BlcnR5U29ydENob2ljZXM9InRydWUiIGVjb3JlRmVhdHVyZT0iZWNvcmU6RVJlZmVyZW5jZSBzeXNtbC5lY29yZSMvL2Jsb2Nrcy9Cb3VuZFJlZmVyZW5jZS9iaW5kaW5nUGF0aCIvPg0KKyAgICAgIDwvZ2VuQ2xhc3Nlcz4NCisgICAgICA8Z2VuQ2xhc3NlcyB4c2k6dHlwZT0iZ2VubW9kZWw6R2VuQ2xhc3MiIGVjb3JlQ2xhc3M9InN5c21sLmVjb3JlIy8vYmxvY2tzL0FkanVuY3RQcm9wZXJ0eSI+DQorICAgICAgICA8Z2VuRmVhdHVyZXMgeHNpOnR5cGU9Imdlbm1vZGVsOkdlbkZlYXR1cmUiIG5vdGlmeT0iZmFsc2UiIGNyZWF0ZUNoaWxkPSJmYWxzZSINCisgICAgICAgICAgICBwcm9wZXJ0eVNvcnRDaG9pY2VzPSJ0cnVlIiBlY29yZUZlYXR1cmU9ImVjb3JlOkVSZWZlcmVuY2Ugc3lzbWwuZWNvcmUjLy9ibG9ja3MvQWRqdW5jdFByb3BlcnR5L2Jhc2VfUHJvcGVydHkiLz4NCisgICAgICAgIDxnZW5GZWF0dXJlcyB4c2k6dHlwZT0iZ2VubW9kZWw6R2VuRmVhdHVyZSIgbm90aWZ5PSJmYWxzZSIgY3JlYXRlQ2hpbGQ9ImZhbHNlIg0KKyAgICAgICAgICAgIHByb3BlcnR5U29ydENob2ljZXM9InRydWUiIGVjb3JlRmVhdHVyZT0iZWNvcmU6RVJlZmVyZW5jZSBzeXNtbC5lY29yZSMvL2Jsb2Nrcy9BZGp1bmN0UHJvcGVydHkvcHJpbmNpcGFsIi8+DQorICAgICAgPC9nZW5DbGFzc2VzPg0KKyAgICAgIDxnZW5DbGFzc2VzIHhzaTp0eXBlPSJnZW5tb2RlbDpHZW5DbGFzcyIgZWNvcmVDbGFzcz0ic3lzbWwuZWNvcmUjLy9ibG9ja3MvQ2xhc3NpZmllckJlaGF2aW9yUHJvcGVydHkiPg0KKyAgICAgICAgPGdlbkZlYXR1cmVzIHhzaTp0eXBlPSJnZW5tb2RlbDpHZW5GZWF0dXJlIiBub3RpZnk9ImZhbHNlIiBjcmVhdGVDaGlsZD0iZmFsc2UiDQorICAgICAgICAgICAgcHJvcGVydHlTb3J0Q2hvaWNlcz0idHJ1ZSIgZWNvcmVGZWF0dXJlPSJlY29yZTpFUmVmZXJlbmNlIHN5c21sLmVjb3JlIy8vYmxvY2tzL0NsYXNzaWZpZXJCZWhhdmlvclByb3BlcnR5L2Jhc2VfUHJvcGVydHkiLz4NCisgICAgICA8L2dlbkNsYXNzZXM+DQorICAgIDwvbmVzdGVkR2VuUGFja2FnZXM+DQorICAgIDxuZXN0ZWRHZW5QYWNrYWdlcyB4c2k6dHlwZT0iZ2VubW9kZWw6R2VuUGFja2FnZSIgcHJlZml4PSJQb3J0YW5kZmxvd3MiIGJhc2VQYWNrYWdlPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQiDQorICAgICAgICBkaXNwb3NhYmxlUHJvdmlkZXJGYWN0b3J5PSJ0cnVlIiBjbGFzc1BhY2thZ2VTdWZmaXg9ImludGVybmFsLmltcGwiIGVjb3JlUGFja2FnZT0ic3lzbWwuZWNvcmUjLy9wb3J0YW5kZmxvd3MiPg0KKyAgICAgIDxnZW5FbnVtcyB4c2k6dHlwZT0iZ2VubW9kZWw6R2VuRW51bSIgdHlwZVNhZmVFbnVtQ29tcGF0aWJsZT0iZmFsc2UiIGVjb3JlRW51bT0ic3lzbWwuZWNvcmUjLy9wb3J0YW5kZmxvd3MvRmxvd0RpcmVjdGlvbiI+DQorICAgICAgICA8Z2VuRW51bUxpdGVyYWxzIHhzaTp0eXBlPSJnZW5tb2RlbDpHZW5FbnVtTGl0ZXJhbCIgZWNvcmVFbnVtTGl0ZXJhbD0ic3lzbWwuZWNvcmUjLy9wb3J0YW5kZmxvd3MvRmxvd0RpcmVjdGlvbi9pbiIvPg0KKyAgICAgICAgPGdlbkVudW1MaXRlcmFscyB4c2k6dHlwZT0iZ2VubW9kZWw6R2VuRW51bUxpdGVyYWwiIGVjb3JlRW51bUxpdGVyYWw9InN5c21sLmVjb3JlIy8vcG9ydGFuZGZsb3dzL0Zsb3dEaXJlY3Rpb24vb3V0Ii8+DQorICAgICAgICA8Z2VuRW51bUxpdGVyYWxzIHhzaTp0eXBlPSJnZW5tb2RlbDpHZW5FbnVtTGl0ZXJhbCIgZWNvcmVFbnVtTGl0ZXJhbD0ic3lzbWwuZWNvcmUjLy9wb3J0YW5kZmxvd3MvRmxvd0RpcmVjdGlvbi9pbm91dCIvPg0KKyAgICAgIDwvZ2VuRW51bXM+DQorICAgICAgPGdlbkVudW1zIHhzaTp0eXBlPSJnZW5tb2RlbDpHZW5FbnVtIiB0eXBlU2FmZUVudW1Db21wYXRpYmxlPSJmYWxzZSIgZWNvcmVFbnVtPSJzeXNtbC5lY29yZSMvL3BvcnRhbmRmbG93cy9GZWF0dXJlRGlyZWN0aW9uIj4NCisgICAgICAgIDxnZW5FbnVtTGl0ZXJhbHMgeHNpOnR5cGU9Imdlbm1vZGVsOkdlbkVudW1MaXRlcmFsIiBlY29yZUVudW1MaXRlcmFsPSJzeXNtbC5lY29yZSMvL3BvcnRhbmRmbG93cy9GZWF0dXJlRGlyZWN0aW9uL3Byb3ZpZGVkIi8+DQorICAgICAgICA8Z2VuRW51bUxpdGVyYWxzIHhzaTp0eXBlPSJnZW5tb2RlbDpHZW5FbnVtTGl0ZXJhbCIgZWNvcmVFbnVtTGl0ZXJhbD0ic3lzbWwuZWNvcmUjLy9wb3J0YW5kZmxvd3MvRmVhdHVyZURpcmVjdGlvbi9yZXF1aXJlZCIvPg0KKyAgICAgICAgPGdlbkVudW1MaXRlcmFscyB4c2k6dHlwZT0iZ2VubW9kZWw6R2VuRW51bUxpdGVyYWwiIGVjb3JlRW51bUxpdGVyYWw9InN5c21sLmVjb3JlIy8vcG9ydGFuZGZsb3dzL0ZlYXR1cmVEaXJlY3Rpb24vcHJvdmlkZWRSZXF1aXJlZCIvPg0KKyAgICAgIDwvZ2VuRW51bXM+DQorICAgICAgPGdlbkNsYXNzZXMgeHNpOnR5cGU9Imdlbm1vZGVsOkdlbkNsYXNzIiBlY29yZUNsYXNzPSJzeXNtbC5lY29yZSMvL3BvcnRhbmRmbG93cy9JdGVtRmxvdyI+DQorICAgICAgICA8Z2VuRmVhdHVyZXMgeHNpOnR5cGU9Imdlbm1vZGVsOkdlbkZlYXR1cmUiIG5vdGlmeT0iZmFsc2UiIGNyZWF0ZUNoaWxkPSJmYWxzZSINCisgICAgICAgICAgICBwcm9wZXJ0eVNvcnRDaG9pY2VzPSJ0cnVlIiBlY29yZUZlYXR1cmU9ImVjb3JlOkVSZWZlcmVuY2Ugc3lzbWwuZWNvcmUjLy9wb3J0YW5kZmxvd3MvSXRlbUZsb3cvYmFzZV9JbmZvcm1hdGlvbkZsb3ciLz4NCisgICAgICAgIDxnZW5GZWF0dXJlcyB4c2k6dHlwZT0iZ2VubW9kZWw6R2VuRmVhdHVyZSIgbm90aWZ5PSJmYWxzZSIgY3JlYXRlQ2hpbGQ9ImZhbHNlIg0KKyAgICAgICAgICAgIHByb3BlcnR5U29ydENob2ljZXM9InRydWUiIGVjb3JlRmVhdHVyZT0iZWNvcmU6RVJlZmVyZW5jZSBzeXNtbC5lY29yZSMvL3BvcnRhbmRmbG93cy9JdGVtRmxvdy9pdGVtUHJvcGVydHkiLz4NCisgICAgICA8L2dlbkNsYXNzZXM+DQorICAgICAgPGdlbkNsYXNzZXMgeHNpOnR5cGU9Imdlbm1vZGVsOkdlbkNsYXNzIiBlY29yZUNsYXNzPSJzeXNtbC5lY29yZSMvL3BvcnRhbmRmbG93cy9GbG93UHJvcGVydHkiPg0KKyAgICAgICAgPGdlbkZlYXR1cmVzIHhzaTp0eXBlPSJnZW5tb2RlbDpHZW5GZWF0dXJlIiBub3RpZnk9ImZhbHNlIiBjcmVhdGVDaGlsZD0iZmFsc2UiDQorICAgICAgICAgICAgcHJvcGVydHlTb3J0Q2hvaWNlcz0idHJ1ZSIgZWNvcmVGZWF0dXJlPSJlY29yZTpFUmVmZXJlbmNlIHN5c21sLmVjb3JlIy8vcG9ydGFuZGZsb3dzL0Zsb3dQcm9wZXJ0eS9iYXNlX1Byb3BlcnR5Ii8+DQorICAgICAgICA8Z2VuRmVhdHVyZXMgeHNpOnR5cGU9Imdlbm1vZGVsOkdlbkZlYXR1cmUiIGNyZWF0ZUNoaWxkPSJmYWxzZSIgZWNvcmVGZWF0dXJlPSJlY29yZTpFQXR0cmlidXRlIHN5c21sLmVjb3JlIy8vcG9ydGFuZGZsb3dzL0Zsb3dQcm9wZXJ0eS9kaXJlY3Rpb24iLz4NCisgICAgICA8L2dlbkNsYXNzZXM+DQorICAgICAgPGdlbkNsYXNzZXMgeHNpOnR5cGU9Imdlbm1vZGVsOkdlbkNsYXNzIiBlY29yZUNsYXNzPSJzeXNtbC5lY29yZSMvL3BvcnRhbmRmbG93cy9GdWxsUG9ydCI+DQorICAgICAgICA8Z2VuRmVhdHVyZXMgeHNpOnR5cGU9Imdlbm1vZGVsOkdlbkZlYXR1cmUiIG5vdGlmeT0iZmFsc2UiIGNyZWF0ZUNoaWxkPSJmYWxzZSINCisgICAgICAgICAgICBwcm9wZXJ0eVNvcnRDaG9pY2VzPSJ0cnVlIiBlY29yZUZlYXR1cmU9ImVjb3JlOkVSZWZlcmVuY2Ugc3lzbWwuZWNvcmUjLy9wb3J0YW5kZmxvd3MvRnVsbFBvcnQvYmFzZV9Qb3J0Ii8+DQorICAgICAgPC9nZW5DbGFzc2VzPg0KKyAgICAgIDxnZW5DbGFzc2VzIHhzaTp0eXBlPSJnZW5tb2RlbDpHZW5DbGFzcyIgZWNvcmVDbGFzcz0ic3lzbWwuZWNvcmUjLy9wb3J0YW5kZmxvd3MvSW50ZXJmYWNlQmxvY2siLz4NCisgICAgICA8Z2VuQ2xhc3NlcyB4c2k6dHlwZT0iZ2VubW9kZWw6R2VuQ2xhc3MiIGVjb3JlQ2xhc3M9InN5c21sLmVjb3JlIy8vcG9ydGFuZGZsb3dzL1Byb3h5UG9ydCI+DQorICAgICAgICA8Z2VuRmVhdHVyZXMgeHNpOnR5cGU9Imdlbm1vZGVsOkdlbkZlYXR1cmUiIG5vdGlmeT0iZmFsc2UiIGNyZWF0ZUNoaWxkPSJmYWxzZSINCisgICAgICAgICAgICBwcm9wZXJ0eVNvcnRDaG9pY2VzPSJ0cnVlIiBlY29yZUZlYXR1cmU9ImVjb3JlOkVSZWZlcmVuY2Ugc3lzbWwuZWNvcmUjLy9wb3J0YW5kZmxvd3MvUHJveHlQb3J0L2Jhc2VfUG9ydCIvPg0KKyAgICAgIDwvZ2VuQ2xhc3Nlcz4NCisgICAgICA8Z2VuQ2xhc3NlcyB4c2k6dHlwZT0iZ2VubW9kZWw6R2VuQ2xhc3MiIGVjb3JlQ2xhc3M9InN5c21sLmVjb3JlIy8vcG9ydGFuZGZsb3dzL0FjY2VwdENoYW5nZVN0cnVjdHVyYWxGZWF0dXJlRXZlbnRBY3Rpb24iPg0KKyAgICAgICAgPGdlbkZlYXR1cmVzIHhzaTp0eXBlPSJnZW5tb2RlbDpHZW5GZWF0dXJlIiBub3RpZnk9ImZhbHNlIiBjcmVhdGVDaGlsZD0iZmFsc2UiDQorICAgICAgICAgICAgcHJvcGVydHlTb3J0Q2hvaWNlcz0idHJ1ZSIgZWNvcmVGZWF0dXJlPSJlY29yZTpFUmVmZXJlbmNlIHN5c21sLmVjb3JlIy8vcG9ydGFuZGZsb3dzL0FjY2VwdENoYW5nZVN0cnVjdHVyYWxGZWF0dXJlRXZlbnRBY3Rpb24vYmFzZV9BY2NlcHRFdmVudEFjdGlvbiIvPg0KKyAgICAgIDwvZ2VuQ2xhc3Nlcz4NCisgICAgICA8Z2VuQ2xhc3NlcyB4c2k6dHlwZT0iZ2VubW9kZWw6R2VuQ2xhc3MiIGVjb3JlQ2xhc3M9InN5c21sLmVjb3JlIy8vcG9ydGFuZGZsb3dzL0NoYW5nZVN0cnVjdHVyYWxGZWF0dXJlRXZlbnQiPg0KKyAgICAgICAgPGdlbkZlYXR1cmVzIHhzaTp0eXBlPSJnZW5tb2RlbDpHZW5GZWF0dXJlIiBub3RpZnk9ImZhbHNlIiBjcmVhdGVDaGlsZD0iZmFsc2UiDQorICAgICAgICAgICAgcHJvcGVydHlTb3J0Q2hvaWNlcz0idHJ1ZSIgZWNvcmVGZWF0dXJlPSJlY29yZTpFUmVmZXJlbmNlIHN5c21sLmVjb3JlIy8vcG9ydGFuZGZsb3dzL0NoYW5nZVN0cnVjdHVyYWxGZWF0dXJlRXZlbnQvYmFzZV9DaGFuZ2VFdmVudCIvPg0KKyAgICAgICAgPGdlbkZlYXR1cmVzIHhzaTp0eXBlPSJnZW5tb2RlbDpHZW5GZWF0dXJlIiBub3RpZnk9ImZhbHNlIiBjcmVhdGVDaGlsZD0iZmFsc2UiDQorICAgICAgICAgICAgcHJvcGVydHlTb3J0Q2hvaWNlcz0idHJ1ZSIgZWNvcmVGZWF0dXJlPSJlY29yZTpFUmVmZXJlbmNlIHN5c21sLmVjb3JlIy8vcG9ydGFuZGZsb3dzL0NoYW5nZVN0cnVjdHVyYWxGZWF0dXJlRXZlbnQvc3RydWN0dXJhbEZlYXR1cmUiLz4NCisgICAgICA8L2dlbkNsYXNzZXM+DQorICAgICAgPGdlbkNsYXNzZXMgeHNpOnR5cGU9Imdlbm1vZGVsOkdlbkNsYXNzIiBlY29yZUNsYXNzPSJzeXNtbC5lY29yZSMvL3BvcnRhbmRmbG93cy9EaXJlY3RlZEZlYXR1cmUiPg0KKyAgICAgICAgPGdlbkZlYXR1cmVzIHhzaTp0eXBlPSJnZW5tb2RlbDpHZW5GZWF0dXJlIiBub3RpZnk9ImZhbHNlIiBjcmVhdGVDaGlsZD0iZmFsc2UiDQorICAgICAgICAgICAgcHJvcGVydHlTb3J0Q2hvaWNlcz0idHJ1ZSIgZWNvcmVGZWF0dXJlPSJlY29yZTpFUmVmZXJlbmNlIHN5c21sLmVjb3JlIy8vcG9ydGFuZGZsb3dzL0RpcmVjdGVkRmVhdHVyZS9iYXNlX0ZlYXR1cmUiLz4NCisgICAgICAgIDxnZW5GZWF0dXJlcyB4c2k6dHlwZT0iZ2VubW9kZWw6R2VuRmVhdHVyZSIgY3JlYXRlQ2hpbGQ9ImZhbHNlIiBlY29yZUZlYXR1cmU9ImVjb3JlOkVBdHRyaWJ1dGUgc3lzbWwuZWNvcmUjLy9wb3J0YW5kZmxvd3MvRGlyZWN0ZWRGZWF0dXJlL2ZlYXR1cmVEaXJlY3Rpb24iLz4NCisgICAgICA8L2dlbkNsYXNzZXM+DQorICAgICAgPGdlbkNsYXNzZXMgeHNpOnR5cGU9Imdlbm1vZGVsOkdlbkNsYXNzIiBlY29yZUNsYXNzPSJzeXNtbC5lY29yZSMvL3BvcnRhbmRmbG93cy9JbnZvY2F0aW9uT25OZXN0ZWRQb3J0QWN0aW9uIj4NCisgICAgICAgIDxnZW5GZWF0dXJlcyB4c2k6dHlwZT0iZ2VubW9kZWw6R2VuRmVhdHVyZSIgbm90aWZ5PSJmYWxzZSIgY3JlYXRlQ2hpbGQ9ImZhbHNlIg0KKyAgICAgICAgICAgIHByb3BlcnR5U29ydENob2ljZXM9InRydWUiIGVjb3JlRmVhdHVyZT0iZWNvcmU6RVJlZmVyZW5jZSBzeXNtbC5lY29yZSMvL3BvcnRhbmRmbG93cy9JbnZvY2F0aW9uT25OZXN0ZWRQb3J0QWN0aW9uL2Jhc2VfSW52b2NhdGlvbkFjdGlvbiIvPg0KKyAgICAgICAgPGdlbkZlYXR1cmVzIHhzaTp0eXBlPSJnZW5tb2RlbDpHZW5GZWF0dXJlIiBub3RpZnk9ImZhbHNlIiBjcmVhdGVDaGlsZD0iZmFsc2UiDQorICAgICAgICAgICAgcHJvcGVydHlTb3J0Q2hvaWNlcz0idHJ1ZSIgZWNvcmVGZWF0dXJlPSJlY29yZTpFUmVmZXJlbmNlIHN5c21sLmVjb3JlIy8vcG9ydGFuZGZsb3dzL0ludm9jYXRpb25Pbk5lc3RlZFBvcnRBY3Rpb24vb25OZXN0ZWRQb3J0Ii8+DQorICAgICAgPC9nZW5DbGFzc2VzPg0KKyAgICAgIDxnZW5DbGFzc2VzIHhzaTp0eXBlPSJnZW5tb2RlbDpHZW5DbGFzcyIgZWNvcmVDbGFzcz0ic3lzbWwuZWNvcmUjLy9wb3J0YW5kZmxvd3MvVHJpZ2dlck9uTmVzdGVkUG9ydCI+DQorICAgICAgICA8Z2VuRmVhdHVyZXMgeHNpOnR5cGU9Imdlbm1vZGVsOkdlbkZlYXR1cmUiIG5vdGlmeT0iZmFsc2UiIGNyZWF0ZUNoaWxkPSJmYWxzZSINCisgICAgICAgICAgICBwcm9wZXJ0eVNvcnRDaG9pY2VzPSJ0cnVlIiBlY29yZUZlYXR1cmU9ImVjb3JlOkVSZWZlcmVuY2Ugc3lzbWwuZWNvcmUjLy9wb3J0YW5kZmxvd3MvVHJpZ2dlck9uTmVzdGVkUG9ydC9iYXNlX1RyaWdnZXIiLz4NCisgICAgICAgIDxnZW5GZWF0dXJlcyB4c2k6dHlwZT0iZ2VubW9kZWw6R2VuRmVhdHVyZSIgbm90aWZ5PSJmYWxzZSIgY3JlYXRlQ2hpbGQ9ImZhbHNlIg0KKyAgICAgICAgICAgIHByb3BlcnR5U29ydENob2ljZXM9InRydWUiIGVjb3JlRmVhdHVyZT0iZWNvcmU6RVJlZmVyZW5jZSBzeXNtbC5lY29yZSMvL3BvcnRhbmRmbG93cy9UcmlnZ2VyT25OZXN0ZWRQb3J0L29uTmVzdGVkUG9ydCIvPg0KKyAgICAgIDwvZ2VuQ2xhc3Nlcz4NCisgICAgPC9uZXN0ZWRHZW5QYWNrYWdlcz4NCisgICAgPG5lc3RlZEdlblBhY2thZ2VzIHhzaTp0eXBlPSJnZW5tb2RlbDpHZW5QYWNrYWdlIiBwcmVmaXg9IkFjdGl2aXRpZXMiIGJhc2VQYWNrYWdlPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQiDQorICAgICAgICBkaXNwb3NhYmxlUHJvdmlkZXJGYWN0b3J5PSJ0cnVlIiBjbGFzc1BhY2thZ2VTdWZmaXg9ImludGVybmFsLmltcGwiIGVjb3JlUGFja2FnZT0ic3lzbWwuZWNvcmUjLy9hY3Rpdml0aWVzIj4NCisgICAgICA8Z2VuQ2xhc3NlcyB4c2k6dHlwZT0iZ2VubW9kZWw6R2VuQ2xhc3MiIGVjb3JlQ2xhc3M9InN5c21sLmVjb3JlIy8vYWN0aXZpdGllcy9PdmVyd3JpdGUiPg0KKyAgICAgICAgPGdlbkZlYXR1cmVzIHhzaTp0eXBlPSJnZW5tb2RlbDpHZW5GZWF0dXJlIiBub3RpZnk9ImZhbHNlIiBjcmVhdGVDaGlsZD0iZmFsc2UiDQorICAgICAgICAgICAgcHJvcGVydHlTb3J0Q2hvaWNlcz0idHJ1ZSIgZWNvcmVGZWF0dXJlPSJlY29yZTpFUmVmZXJlbmNlIHN5c21sLmVjb3JlIy8vYWN0aXZpdGllcy9PdmVyd3JpdGUvYmFzZV9PYmplY3ROb2RlIi8+DQorICAgICAgPC9nZW5DbGFzc2VzPg0KKyAgICAgIDxnZW5DbGFzc2VzIHhzaTp0eXBlPSJnZW5tb2RlbDpHZW5DbGFzcyIgZWNvcmVDbGFzcz0ic3lzbWwuZWNvcmUjLy9hY3Rpdml0aWVzL0NvbnRyb2xPcGVyYXRvciI+DQorICAgICAgICA8Z2VuRmVhdHVyZXMgeHNpOnR5cGU9Imdlbm1vZGVsOkdlbkZlYXR1cmUiIG5vdGlmeT0iZmFsc2UiIGNyZWF0ZUNoaWxkPSJmYWxzZSINCisgICAgICAgICAgICBwcm9wZXJ0eVNvcnRDaG9pY2VzPSJ0cnVlIiBlY29yZUZlYXR1cmU9ImVjb3JlOkVSZWZlcmVuY2Ugc3lzbWwuZWNvcmUjLy9hY3Rpdml0aWVzL0NvbnRyb2xPcGVyYXRvci9iYXNlX0JlaGF2aW9yIi8+DQorICAgICAgICA8Z2VuRmVhdHVyZXMgeHNpOnR5cGU9Imdlbm1vZGVsOkdlbkZlYXR1cmUiIG5vdGlmeT0iZmFsc2UiIGNyZWF0ZUNoaWxkPSJmYWxzZSINCisgICAgICAgICAgICBwcm9wZXJ0eVNvcnRDaG9pY2VzPSJ0cnVlIiBlY29yZUZlYXR1cmU9ImVjb3JlOkVSZWZlcmVuY2Ugc3lzbWwuZWNvcmUjLy9hY3Rpdml0aWVzL0NvbnRyb2xPcGVyYXRvci9iYXNlX09wZXJhdGlvbiIvPg0KKyAgICAgIDwvZ2VuQ2xhc3Nlcz4NCisgICAgICA8Z2VuQ2xhc3NlcyB4c2k6dHlwZT0iZ2VubW9kZWw6R2VuQ2xhc3MiIGVjb3JlQ2xhc3M9InN5c21sLmVjb3JlIy8vYWN0aXZpdGllcy9SYXRlIj4NCisgICAgICAgIDxnZW5GZWF0dXJlcyB4c2k6dHlwZT0iZ2VubW9kZWw6R2VuRmVhdHVyZSIgbm90aWZ5PSJmYWxzZSIgY3JlYXRlQ2hpbGQ9ImZhbHNlIg0KKyAgICAgICAgICAgIHByb3BlcnR5U29ydENob2ljZXM9InRydWUiIGVjb3JlRmVhdHVyZT0iZWNvcmU6RVJlZmVyZW5jZSBzeXNtbC5lY29yZSMvL2FjdGl2aXRpZXMvUmF0ZS9yYXRlIi8+DQorICAgICAgICA8Z2VuRmVhdHVyZXMgeHNpOnR5cGU9Imdlbm1vZGVsOkdlbkZlYXR1cmUiIG5vdGlmeT0iZmFsc2UiIGNyZWF0ZUNoaWxkPSJmYWxzZSINCisgICAgICAgICAgICBwcm9wZXJ0eVNvcnRDaG9pY2VzPSJ0cnVlIiBlY29yZUZlYXR1cmU9ImVjb3JlOkVSZWZlcmVuY2Ugc3lzbWwuZWNvcmUjLy9hY3Rpdml0aWVzL1JhdGUvYmFzZV9BY3Rpdml0eUVkZ2UiLz4NCisgICAgICAgIDxnZW5GZWF0dXJlcyB4c2k6dHlwZT0iZ2VubW9kZWw6R2VuRmVhdHVyZSIgbm90aWZ5PSJmYWxzZSIgY3JlYXRlQ2hpbGQ9ImZhbHNlIg0KKyAgICAgICAgICAgIHByb3BlcnR5U29ydENob2ljZXM9InRydWUiIGVjb3JlRmVhdHVyZT0iZWNvcmU6RVJlZmVyZW5jZSBzeXNtbC5lY29yZSMvL2FjdGl2aXRpZXMvUmF0ZS9iYXNlX09iamVjdE5vZGUiLz4NCisgICAgICAgIDxnZW5GZWF0dXJlcyB4c2k6dHlwZT0iZ2VubW9kZWw6R2VuRmVhdHVyZSIgbm90aWZ5PSJmYWxzZSIgY3JlYXRlQ2hpbGQ9ImZhbHNlIg0KKyAgICAgICAgICAgIHByb3BlcnR5U29ydENob2ljZXM9InRydWUiIGVjb3JlRmVhdHVyZT0iZWNvcmU6RVJlZmVyZW5jZSBzeXNtbC5lY29yZSMvL2FjdGl2aXRpZXMvUmF0ZS9iYXNlX1BhcmFtZXRlciIvPg0KKyAgICAgIDwvZ2VuQ2xhc3Nlcz4NCisgICAgICA8Z2VuQ2xhc3NlcyB4c2k6dHlwZT0iZ2VubW9kZWw6R2VuQ2xhc3MiIGVjb3JlQ2xhc3M9InN5c21sLmVjb3JlIy8vYWN0aXZpdGllcy9Ob0J1ZmZlciI+DQorICAgICAgICA8Z2VuRmVhdHVyZXMgeHNpOnR5cGU9Imdlbm1vZGVsOkdlbkZlYXR1cmUiIG5vdGlmeT0iZmFsc2UiIGNyZWF0ZUNoaWxkPSJmYWxzZSINCisgICAgICAgICAgICBwcm9wZXJ0eVNvcnRDaG9pY2VzPSJ0cnVlIiBlY29yZUZlYXR1cmU9ImVjb3JlOkVSZWZlcmVuY2Ugc3lzbWwuZWNvcmUjLy9hY3Rpdml0aWVzL05vQnVmZmVyL2Jhc2VfT2JqZWN0Tm9kZSIvPg0KKyAgICAgIDwvZ2VuQ2xhc3Nlcz4NCisgICAgICA8Z2VuQ2xhc3NlcyB4c2k6dHlwZT0iZ2VubW9kZWw6R2VuQ2xhc3MiIGVjb3JlQ2xhc3M9InN5c21sLmVjb3JlIy8vYWN0aXZpdGllcy9EaXNjcmV0ZSIvPg0KKyAgICAgIDxnZW5DbGFzc2VzIHhzaTp0eXBlPSJnZW5tb2RlbDpHZW5DbGFzcyIgZWNvcmVDbGFzcz0ic3lzbWwuZWNvcmUjLy9hY3Rpdml0aWVzL0NvbnRpbnVvdXMiLz4NCisgICAgICA8Z2VuQ2xhc3NlcyB4c2k6dHlwZT0iZ2VubW9kZWw6R2VuQ2xhc3MiIGVjb3JlQ2xhc3M9InN5c21sLmVjb3JlIy8vYWN0aXZpdGllcy9Qcm9iYWJpbGl0eSI+DQorICAgICAgICA8Z2VuRmVhdHVyZXMgeHNpOnR5cGU9Imdlbm1vZGVsOkdlbkZlYXR1cmUiIG5vdGlmeT0iZmFsc2UiIGNyZWF0ZUNoaWxkPSJmYWxzZSINCisgICAgICAgICAgICBwcm9wZXJ0eVNvcnRDaG9pY2VzPSJ0cnVlIiBlY29yZUZlYXR1cmU9ImVjb3JlOkVSZWZlcmVuY2Ugc3lzbWwuZWNvcmUjLy9hY3Rpdml0aWVzL1Byb2JhYmlsaXR5L2Jhc2VfQWN0aXZpdHlFZGdlIi8+DQorICAgICAgICA8Z2VuRmVhdHVyZXMgeHNpOnR5cGU9Imdlbm1vZGVsOkdlbkZlYXR1cmUiIG5vdGlmeT0iZmFsc2UiIGNyZWF0ZUNoaWxkPSJmYWxzZSINCisgICAgICAgICAgICBwcm9wZXJ0eVNvcnRDaG9pY2VzPSJ0cnVlIiBlY29yZUZlYXR1cmU9ImVjb3JlOkVSZWZlcmVuY2Ugc3lzbWwuZWNvcmUjLy9hY3Rpdml0aWVzL1Byb2JhYmlsaXR5L2Jhc2VfUGFyYW1ldGVyU2V0Ii8+DQorICAgICAgICA8Z2VuRmVhdHVyZXMgeHNpOnR5cGU9Imdlbm1vZGVsOkdlbkZlYXR1cmUiIG5vdGlmeT0iZmFsc2UiIGNyZWF0ZUNoaWxkPSJmYWxzZSINCisgICAgICAgICAgICBwcm9wZXJ0eVNvcnRDaG9pY2VzPSJ0cnVlIiBlY29yZUZlYXR1cmU9ImVjb3JlOkVSZWZlcmVuY2Ugc3lzbWwuZWNvcmUjLy9hY3Rpdml0aWVzL1Byb2JhYmlsaXR5L3Byb2JhYmlsaXR5Ii8+DQorICAgICAgPC9nZW5DbGFzc2VzPg0KKyAgICAgIDxnZW5DbGFzc2VzIHhzaTp0eXBlPSJnZW5tb2RlbDpHZW5DbGFzcyIgZWNvcmVDbGFzcz0ic3lzbWwuZWNvcmUjLy9hY3Rpdml0aWVzL09wdGlvbmFsIj4NCisgICAgICAgIDxnZW5GZWF0dXJlcyB4c2k6dHlwZT0iZ2VubW9kZWw6R2VuRmVhdHVyZSIgbm90aWZ5PSJmYWxzZSIgY3JlYXRlQ2hpbGQ9ImZhbHNlIg0KKyAgICAgICAgICAgIHByb3BlcnR5U29ydENob2ljZXM9InRydWUiIGVjb3JlRmVhdHVyZT0iZWNvcmU6RVJlZmVyZW5jZSBzeXNtbC5lY29yZSMvL2FjdGl2aXRpZXMvT3B0aW9uYWwvYmFzZV9QYXJhbWV0ZXIiLz4NCisgICAgICA8L2dlbkNsYXNzZXM+DQorICAgIDwvbmVzdGVkR2VuUGFja2FnZXM+DQorICAgIDxuZXN0ZWRHZW5QYWNrYWdlcyB4c2k6dHlwZT0iZ2VubW9kZWw6R2VuUGFja2FnZSIgcHJlZml4PSJNb2RlbGVsZW1lbnRzIiBiYXNlUGFja2FnZT0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0Ig0KKyAgICAgICAgZGlzcG9zYWJsZVByb3ZpZGVyRmFjdG9yeT0idHJ1ZSIgY2xhc3NQYWNrYWdlU3VmZml4PSJpbnRlcm5hbC5pbXBsIiBlY29yZVBhY2thZ2U9InN5c21sLmVjb3JlIy8vbW9kZWxlbGVtZW50cyI+DQorICAgICAgPGdlbkNsYXNzZXMgeHNpOnR5cGU9Imdlbm1vZGVsOkdlbkNsYXNzIiBlY29yZUNsYXNzPSJzeXNtbC5lY29yZSMvL21vZGVsZWxlbWVudHMvUmF0aW9uYWxlIj4NCisgICAgICAgIDxnZW5GZWF0dXJlcyB4c2k6dHlwZT0iZ2VubW9kZWw6R2VuRmVhdHVyZSIgbm90aWZ5PSJmYWxzZSIgY3JlYXRlQ2hpbGQ9ImZhbHNlIg0KKyAgICAgICAgICAgIHByb3BlcnR5U29ydENob2ljZXM9InRydWUiIGVjb3JlRmVhdHVyZT0iZWNvcmU6RVJlZmVyZW5jZSBzeXNtbC5lY29yZSMvL21vZGVsZWxlbWVudHMvUmF0aW9uYWxlL2Jhc2VfQ29tbWVudCIvPg0KKyAgICAgIDwvZ2VuQ2xhc3Nlcz4NCisgICAgICA8Z2VuQ2xhc3NlcyB4c2k6dHlwZT0iZ2VubW9kZWw6R2VuQ2xhc3MiIGVjb3JlQ2xhc3M9InN5c21sLmVjb3JlIy8vbW9kZWxlbGVtZW50cy9WaWV3Ij4NCisgICAgICAgIDxnZW5GZWF0dXJlcyB4c2k6dHlwZT0iZ2VubW9kZWw6R2VuRmVhdHVyZSIgbm90aWZ5PSJmYWxzZSIgY3JlYXRlQ2hpbGQ9ImZhbHNlIg0KKyAgICAgICAgICAgIHByb3BlcnR5U29ydENob2ljZXM9InRydWUiIGVjb3JlRmVhdHVyZT0iZWNvcmU6RVJlZmVyZW5jZSBzeXNtbC5lY29yZSMvL21vZGVsZWxlbWVudHMvVmlldy9iYXNlX1BhY2thZ2UiLz4NCisgICAgICAgIDxnZW5GZWF0dXJlcyB4c2k6dHlwZT0iZ2VubW9kZWw6R2VuRmVhdHVyZSIgbm90aWZ5PSJmYWxzZSIgY3JlYXRlQ2hpbGQ9ImZhbHNlIg0KKyAgICAgICAgICAgIHByb3BlcnR5U29ydENob2ljZXM9InRydWUiIGVjb3JlRmVhdHVyZT0iZWNvcmU6RVJlZmVyZW5jZSBzeXNtbC5lY29yZSMvL21vZGVsZWxlbWVudHMvVmlldy92aWV3UG9pbnQiLz4NCisgICAgICAgIDxnZW5GZWF0dXJlcyB4c2k6dHlwZT0iZ2VubW9kZWw6R2VuRmVhdHVyZSIgbm90aWZ5PSJmYWxzZSIgY3JlYXRlQ2hpbGQ9ImZhbHNlIg0KKyAgICAgICAgICAgIHByb3BlcnR5U29ydENob2ljZXM9InRydWUiIGVjb3JlRmVhdHVyZT0iZWNvcmU6RVJlZmVyZW5jZSBzeXNtbC5lY29yZSMvL21vZGVsZWxlbWVudHMvVmlldy9zdGFrZWhvbGRlciIvPg0KKyAgICAgICAgPGdlbkZlYXR1cmVzIHhzaTp0eXBlPSJnZW5tb2RlbDpHZW5GZWF0dXJlIiBub3RpZnk9ImZhbHNlIiBjcmVhdGVDaGlsZD0iZmFsc2UiDQorICAgICAgICAgICAgcHJvcGVydHlTb3J0Q2hvaWNlcz0idHJ1ZSIgZWNvcmVGZWF0dXJlPSJlY29yZTpFUmVmZXJlbmNlIHN5c21sLmVjb3JlIy8vbW9kZWxlbGVtZW50cy9WaWV3L2Jhc2VfQ2xhc3MiLz4NCisgICAgICA8L2dlbkNsYXNzZXM+DQorICAgICAgPGdlbkNsYXNzZXMgeHNpOnR5cGU9Imdlbm1vZGVsOkdlbkNsYXNzIiBlY29yZUNsYXNzPSJzeXNtbC5lY29yZSMvL21vZGVsZWxlbWVudHMvVmlld1BvaW50Ij4NCisgICAgICAgIDxnZW5GZWF0dXJlcyB4c2k6dHlwZT0iZ2VubW9kZWw6R2VuRmVhdHVyZSIgbm90aWZ5PSJmYWxzZSIgY3JlYXRlQ2hpbGQ9ImZhbHNlIg0KKyAgICAgICAgICAgIHByb3BlcnR5U29ydENob2ljZXM9InRydWUiIGVjb3JlRmVhdHVyZT0iZWNvcmU6RVJlZmVyZW5jZSBzeXNtbC5lY29yZSMvL21vZGVsZWxlbWVudHMvVmlld1BvaW50L2Jhc2VfQ2xhc3MiLz4NCisgICAgICAgIDxnZW5GZWF0dXJlcyB4c2k6dHlwZT0iZ2VubW9kZWw6R2VuRmVhdHVyZSIgbm90aWZ5PSJmYWxzZSIgY3JlYXRlQ2hpbGQ9ImZhbHNlIg0KKyAgICAgICAgICAgIHByb3BlcnR5U29ydENob2ljZXM9InRydWUiIGVjb3JlRmVhdHVyZT0iZWNvcmU6RVJlZmVyZW5jZSBzeXNtbC5lY29yZSMvL21vZGVsZWxlbWVudHMvVmlld1BvaW50L3N0YWtlaG9sZGVyIi8+DQorICAgICAgICA8Z2VuRmVhdHVyZXMgeHNpOnR5cGU9Imdlbm1vZGVsOkdlbkZlYXR1cmUiIGNyZWF0ZUNoaWxkPSJmYWxzZSIgZWNvcmVGZWF0dXJlPSJlY29yZTpFQXR0cmlidXRlIHN5c21sLmVjb3JlIy8vbW9kZWxlbGVtZW50cy9WaWV3UG9pbnQvcHVycG9zZSIvPg0KKyAgICAgICAgPGdlbkZlYXR1cmVzIHhzaTp0eXBlPSJnZW5tb2RlbDpHZW5GZWF0dXJlIiBub3RpZnk9ImZhbHNlIiBjcmVhdGVDaGlsZD0iZmFsc2UiDQorICAgICAgICAgICAgcHJvcGVydHlTb3J0Q2hvaWNlcz0idHJ1ZSIgZWNvcmVGZWF0dXJlPSJlY29yZTpFUmVmZXJlbmNlIHN5c21sLmVjb3JlIy8vbW9kZWxlbGVtZW50cy9WaWV3UG9pbnQvY29uY2Vybkxpc3QiLz4NCisgICAgICAgIDxnZW5GZWF0dXJlcyB4c2k6dHlwZT0iZ2VubW9kZWw6R2VuRmVhdHVyZSIgY3JlYXRlQ2hpbGQ9ImZhbHNlIiBlY29yZUZlYXR1cmU9ImVjb3JlOkVBdHRyaWJ1dGUgc3lzbWwuZWNvcmUjLy9tb2RlbGVsZW1lbnRzL1ZpZXdQb2ludC9sYW5ndWFnZSIvPg0KKyAgICAgICAgPGdlbkZlYXR1cmVzIHhzaTp0eXBlPSJnZW5tb2RlbDpHZW5GZWF0dXJlIiBub3RpZnk9ImZhbHNlIiBjcmVhdGVDaGlsZD0iZmFsc2UiDQorICAgICAgICAgICAgcHJvcGVydHlTb3J0Q2hvaWNlcz0idHJ1ZSIgZWNvcmVGZWF0dXJlPSJlY29yZTpFUmVmZXJlbmNlIHN5c21sLmVjb3JlIy8vbW9kZWxlbGVtZW50cy9WaWV3UG9pbnQvbWV0aG9kIi8+DQorICAgICAgICA8Z2VuRmVhdHVyZXMgeHNpOnR5cGU9Imdlbm1vZGVsOkdlbkZlYXR1cmUiIGNyZWF0ZUNoaWxkPSJmYWxzZSIgZWNvcmVGZWF0dXJlPSJlY29yZTpFQXR0cmlidXRlIHN5c21sLmVjb3JlIy8vbW9kZWxlbGVtZW50cy9WaWV3UG9pbnQvcHJlc2VudGF0aW9uIi8+DQorICAgICAgICA8Z2VuRmVhdHVyZXMgeHNpOnR5cGU9Imdlbm1vZGVsOkdlbkZlYXR1cmUiIGNyZWF0ZUNoaWxkPSJmYWxzZSIgZWNvcmVGZWF0dXJlPSJlY29yZTpFQXR0cmlidXRlIHN5c21sLmVjb3JlIy8vbW9kZWxlbGVtZW50cy9WaWV3UG9pbnQvY29uY2VybiIvPg0KKyAgICAgIDwvZ2VuQ2xhc3Nlcz4NCisgICAgICA8Z2VuQ2xhc3NlcyB4c2k6dHlwZT0iZ2VubW9kZWw6R2VuQ2xhc3MiIGVjb3JlQ2xhc3M9InN5c21sLmVjb3JlIy8vbW9kZWxlbGVtZW50cy9TdGFrZWhvbGRlciI+DQorICAgICAgICA8Z2VuRmVhdHVyZXMgeHNpOnR5cGU9Imdlbm1vZGVsOkdlbkZlYXR1cmUiIG5vdGlmeT0iZmFsc2UiIGNyZWF0ZUNoaWxkPSJmYWxzZSINCisgICAgICAgICAgICBwcm9wZXJ0eVNvcnRDaG9pY2VzPSJ0cnVlIiBlY29yZUZlYXR1cmU9ImVjb3JlOkVSZWZlcmVuY2Ugc3lzbWwuZWNvcmUjLy9tb2RlbGVsZW1lbnRzL1N0YWtlaG9sZGVyL2Jhc2VfQ2xhc3NpZmllciIvPg0KKyAgICAgICAgPGdlbkZlYXR1cmVzIHhzaTp0eXBlPSJnZW5tb2RlbDpHZW5GZWF0dXJlIiBub3RpZnk9ImZhbHNlIiBjcmVhdGVDaGlsZD0iZmFsc2UiDQorICAgICAgICAgICAgcHJvcGVydHlTb3J0Q2hvaWNlcz0idHJ1ZSIgZWNvcmVGZWF0dXJlPSJlY29yZTpFUmVmZXJlbmNlIHN5c21sLmVjb3JlIy8vbW9kZWxlbGVtZW50cy9TdGFrZWhvbGRlci9jb25jZXJuIi8+DQorICAgICAgICA8Z2VuRmVhdHVyZXMgeHNpOnR5cGU9Imdlbm1vZGVsOkdlbkZlYXR1cmUiIG5vdGlmeT0iZmFsc2UiIGNyZWF0ZUNoaWxkPSJmYWxzZSINCisgICAgICAgICAgICBwcm9wZXJ0eVNvcnRDaG9pY2VzPSJ0cnVlIiBlY29yZUZlYXR1cmU9ImVjb3JlOkVSZWZlcmVuY2Ugc3lzbWwuZWNvcmUjLy9tb2RlbGVsZW1lbnRzL1N0YWtlaG9sZGVyL2NvbmNlcm5MaXN0Ii8+DQorICAgICAgPC9nZW5DbGFzc2VzPg0KKyAgICAgIDxnZW5DbGFzc2VzIHhzaTp0eXBlPSJnZW5tb2RlbDpHZW5DbGFzcyIgZWNvcmVDbGFzcz0ic3lzbWwuZWNvcmUjLy9tb2RlbGVsZW1lbnRzL0NvbmZvcm0iPg0KKyAgICAgICAgPGdlbkZlYXR1cmVzIHhzaTp0eXBlPSJnZW5tb2RlbDpHZW5GZWF0dXJlIiBub3RpZnk9ImZhbHNlIiBjcmVhdGVDaGlsZD0iZmFsc2UiDQorICAgICAgICAgICAgcHJvcGVydHlTb3J0Q2hvaWNlcz0idHJ1ZSIgZWNvcmVGZWF0dXJlPSJlY29yZTpFUmVmZXJlbmNlIHN5c21sLmVjb3JlIy8vbW9kZWxlbGVtZW50cy9Db25mb3JtL2Jhc2VfRGVwZW5kZW5jeSIvPg0KKyAgICAgICAgPGdlbkZlYXR1cmVzIHhzaTp0eXBlPSJnZW5tb2RlbDpHZW5GZWF0dXJlIiBub3RpZnk9ImZhbHNlIiBjcmVhdGVDaGlsZD0iZmFsc2UiDQorICAgICAgICAgICAgcHJvcGVydHlTb3J0Q2hvaWNlcz0idHJ1ZSIgZWNvcmVGZWF0dXJlPSJlY29yZTpFUmVmZXJlbmNlIHN5c21sLmVjb3JlIy8vbW9kZWxlbGVtZW50cy9Db25mb3JtL2Jhc2VfR2VuZXJhbGl6YXRpb24iLz4NCisgICAgICA8L2dlbkNsYXNzZXM+DQorICAgICAgPGdlbkNsYXNzZXMgeHNpOnR5cGU9Imdlbm1vZGVsOkdlbkNsYXNzIiBlY29yZUNsYXNzPSJzeXNtbC5lY29yZSMvL21vZGVsZWxlbWVudHMvUHJvYmxlbSI+DQorICAgICAgICA8Z2VuRmVhdHVyZXMgeHNpOnR5cGU9Imdlbm1vZGVsOkdlbkZlYXR1cmUiIG5vdGlmeT0iZmFsc2UiIGNyZWF0ZUNoaWxkPSJmYWxzZSINCisgICAgICAgICAgICBwcm9wZXJ0eVNvcnRDaG9pY2VzPSJ0cnVlIiBlY29yZUZlYXR1cmU9ImVjb3JlOkVSZWZlcmVuY2Ugc3lzbWwuZWNvcmUjLy9tb2RlbGVsZW1lbnRzL1Byb2JsZW0vYmFzZV9Db21tZW50Ii8+DQorICAgICAgPC9nZW5DbGFzc2VzPg0KKyAgICAgIDxnZW5DbGFzc2VzIHhzaTp0eXBlPSJnZW5tb2RlbDpHZW5DbGFzcyIgZWNvcmVDbGFzcz0ic3lzbWwuZWNvcmUjLy9tb2RlbGVsZW1lbnRzL0V4cG9zZSI+DQorICAgICAgICA8Z2VuRmVhdHVyZXMgeHNpOnR5cGU9Imdlbm1vZGVsOkdlbkZlYXR1cmUiIG5vdGlmeT0iZmFsc2UiIGNyZWF0ZUNoaWxkPSJmYWxzZSINCisgICAgICAgICAgICBwcm9wZXJ0eVNvcnRDaG9pY2VzPSJ0cnVlIiBlY29yZUZlYXR1cmU9ImVjb3JlOkVSZWZlcmVuY2Ugc3lzbWwuZWNvcmUjLy9tb2RlbGVsZW1lbnRzL0V4cG9zZS9iYXNlX0RlcGVuZGVuY3kiLz4NCisgICAgICA8L2dlbkNsYXNzZXM+DQorICAgICAgPGdlbkNsYXNzZXMgeHNpOnR5cGU9Imdlbm1vZGVsOkdlbkNsYXNzIiBlY29yZUNsYXNzPSJzeXNtbC5lY29yZSMvL21vZGVsZWxlbWVudHMvRWxlbWVudEdyb3VwIj4NCisgICAgICAgIDxnZW5GZWF0dXJlcyB4c2k6dHlwZT0iZ2VubW9kZWw6R2VuRmVhdHVyZSIgbm90aWZ5PSJmYWxzZSIgY3JlYXRlQ2hpbGQ9ImZhbHNlIg0KKyAgICAgICAgICAgIHByb3BlcnR5U29ydENob2ljZXM9InRydWUiIGVjb3JlRmVhdHVyZT0iZWNvcmU6RVJlZmVyZW5jZSBzeXNtbC5lY29yZSMvL21vZGVsZWxlbWVudHMvRWxlbWVudEdyb3VwL2Jhc2VfQ29tbWVudCIvPg0KKyAgICAgICAgPGdlbkZlYXR1cmVzIHhzaTp0eXBlPSJnZW5tb2RlbDpHZW5GZWF0dXJlIiBjcmVhdGVDaGlsZD0iZmFsc2UiIGVjb3JlRmVhdHVyZT0iZWNvcmU6RUF0dHJpYnV0ZSBzeXNtbC5lY29yZSMvL21vZGVsZWxlbWVudHMvRWxlbWVudEdyb3VwL25hbWUiLz4NCisgICAgICAgIDxnZW5GZWF0dXJlcyB4c2k6dHlwZT0iZ2VubW9kZWw6R2VuRmVhdHVyZSIgY3JlYXRlQ2hpbGQ9ImZhbHNlIiBlY29yZUZlYXR1cmU9ImVjb3JlOkVBdHRyaWJ1dGUgc3lzbWwuZWNvcmUjLy9tb2RlbGVsZW1lbnRzL0VsZW1lbnRHcm91cC9jcml0ZXJpb24uMSIvPg0KKyAgICAgICAgPGdlbkZlYXR1cmVzIHhzaTp0eXBlPSJnZW5tb2RlbDpHZW5GZWF0dXJlIiBjcmVhdGVDaGlsZD0iZmFsc2UiIGVjb3JlRmVhdHVyZT0iZWNvcmU6RUF0dHJpYnV0ZSBzeXNtbC5lY29yZSMvL21vZGVsZWxlbWVudHMvRWxlbWVudEdyb3VwL3NpemUuMSIvPg0KKyAgICAgICAgPGdlbkZlYXR1cmVzIHhzaTp0eXBlPSJnZW5tb2RlbDpHZW5GZWF0dXJlIiBub3RpZnk9ImZhbHNlIiBjcmVhdGVDaGlsZD0iZmFsc2UiDQorICAgICAgICAgICAgcHJvcGVydHlTb3J0Q2hvaWNlcz0idHJ1ZSIgZWNvcmVGZWF0dXJlPSJlY29yZTpFUmVmZXJlbmNlIHN5c21sLmVjb3JlIy8vbW9kZWxlbGVtZW50cy9FbGVtZW50R3JvdXAvbWVtYmVyLjEiLz4NCisgICAgICAgIDxnZW5GZWF0dXJlcyB4c2k6dHlwZT0iZ2VubW9kZWw6R2VuRmVhdHVyZSIgbm90aWZ5PSJmYWxzZSIgY3JlYXRlQ2hpbGQ9ImZhbHNlIg0KKyAgICAgICAgICAgIHByb3BlcnR5U29ydENob2ljZXM9InRydWUiIGVjb3JlRmVhdHVyZT0iZWNvcmU6RVJlZmVyZW5jZSBzeXNtbC5lY29yZSMvL21vZGVsZWxlbWVudHMvRWxlbWVudEdyb3VwL29yZGVyZWRNZW1iZXIiLz4NCisgICAgICAgIDxnZW5PcGVyYXRpb25zIHhzaTp0eXBlPSJnZW5tb2RlbDpHZW5PcGVyYXRpb24iIGVjb3JlT3BlcmF0aW9uPSJzeXNtbC5lY29yZSMvL21vZGVsZWxlbWVudHMvRWxlbWVudEdyb3VwL2NyaXRlcmlvbiIvPg0KKyAgICAgICAgPGdlbk9wZXJhdGlvbnMgeHNpOnR5cGU9Imdlbm1vZGVsOkdlbk9wZXJhdGlvbiIgZWNvcmVPcGVyYXRpb249InN5c21sLmVjb3JlIy8vbW9kZWxlbGVtZW50cy9FbGVtZW50R3JvdXAvc2l6ZSIvPg0KKyAgICAgICAgPGdlbk9wZXJhdGlvbnMgeHNpOnR5cGU9Imdlbm1vZGVsOkdlbk9wZXJhdGlvbiIgZWNvcmVPcGVyYXRpb249InN5c21sLmVjb3JlIy8vbW9kZWxlbGVtZW50cy9FbGVtZW50R3JvdXAvbWVtYmVyIi8+DQorICAgICAgICA8Z2VuT3BlcmF0aW9ucyB4c2k6dHlwZT0iZ2VubW9kZWw6R2VuT3BlcmF0aW9uIiBlY29yZU9wZXJhdGlvbj0ic3lzbWwuZWNvcmUjLy9tb2RlbGVsZW1lbnRzL0VsZW1lbnRHcm91cC9hbGxHcm91cHMiPg0KKyAgICAgICAgICA8Z2VuUGFyYW1ldGVycyB4c2k6dHlwZT0iZ2VubW9kZWw6R2VuUGFyYW1ldGVyIiBlY29yZVBhcmFtZXRlcj0ic3lzbWwuZWNvcmUjLy9tb2RlbGVsZW1lbnRzL0VsZW1lbnRHcm91cC9hbGxHcm91cHMvZSIvPg0KKyAgICAgICAgPC9nZW5PcGVyYXRpb25zPg0KKyAgICAgIDwvZ2VuQ2xhc3Nlcz4NCisgICAgICA8bmVzdGVkR2VuUGFja2FnZXMgeHNpOnR5cGU9Imdlbm1vZGVsOkdlblBhY2thZ2UiIHByZWZpeD0iRGVwcmVjYXRlZCIgYmFzZVBhY2thZ2U9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5tb2RlbGVsZW1lbnRzIg0KKyAgICAgICAgICBkaXNwb3NhYmxlUHJvdmlkZXJGYWN0b3J5PSJ0cnVlIiBlY29yZVBhY2thZ2U9InN5c21sLmVjb3JlIy8vbW9kZWxlbGVtZW50cy9EZXByZWNhdGVkIi8+DQorICAgIDwvbmVzdGVkR2VuUGFja2FnZXM+DQorICAgIDxuZXN0ZWRHZW5QYWNrYWdlcyB4c2k6dHlwZT0iZ2VubW9kZWw6R2VuUGFja2FnZSIgcHJlZml4PSJDb25zdHJhaW50YmxvY2tzIiBiYXNlUGFja2FnZT0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0Ig0KKyAgICAgICAgZGlzcG9zYWJsZVByb3ZpZGVyRmFjdG9yeT0idHJ1ZSIgY2xhc3NQYWNrYWdlU3VmZml4PSJpbnRlcm5hbC5pbXBsIiBlY29yZVBhY2thZ2U9InN5c21sLmVjb3JlIy8vY29uc3RyYWludGJsb2NrcyI+DQorICAgICAgPGdlbkNsYXNzZXMgeHNpOnR5cGU9Imdlbm1vZGVsOkdlbkNsYXNzIiBlY29yZUNsYXNzPSJzeXNtbC5lY29yZSMvL2NvbnN0cmFpbnRibG9ja3MvQ29uc3RyYWludEJsb2NrIi8+DQorICAgIDwvbmVzdGVkR2VuUGFja2FnZXM+DQorICAgIDxuZXN0ZWRHZW5QYWNrYWdlcyB4c2k6dHlwZT0iZ2VubW9kZWw6R2VuUGFja2FnZSIgcHJlZml4PSJBbGxvY2F0aW9ucyIgYmFzZVBhY2thZ2U9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNCINCisgICAgICAgIGRpc3Bvc2FibGVQcm92aWRlckZhY3Rvcnk9InRydWUiIGNsYXNzUGFja2FnZVN1ZmZpeD0iaW50ZXJuYWwuaW1wbCIgZWNvcmVQYWNrYWdlPSJzeXNtbC5lY29yZSMvL2FsbG9jYXRpb25zIj4NCisgICAgICA8Z2VuQ2xhc3NlcyB4c2k6dHlwZT0iZ2VubW9kZWw6R2VuQ2xhc3MiIGVjb3JlQ2xhc3M9InN5c21sLmVjb3JlIy8vYWxsb2NhdGlvbnMvQWxsb2NhdGVBY3Rpdml0eVBhcnRpdGlvbiI+DQorICAgICAgICA8Z2VuRmVhdHVyZXMgeHNpOnR5cGU9Imdlbm1vZGVsOkdlbkZlYXR1cmUiIG5vdGlmeT0iZmFsc2UiIGNyZWF0ZUNoaWxkPSJmYWxzZSINCisgICAgICAgICAgICBwcm9wZXJ0eVNvcnRDaG9pY2VzPSJ0cnVlIiBlY29yZUZlYXR1cmU9ImVjb3JlOkVSZWZlcmVuY2Ugc3lzbWwuZWNvcmUjLy9hbGxvY2F0aW9ucy9BbGxvY2F0ZUFjdGl2aXR5UGFydGl0aW9uL2Jhc2VfQWN0aXZpdHlQYXJ0aXRpb24iLz4NCisgICAgICA8L2dlbkNsYXNzZXM+DQorICAgICAgPGdlbkNsYXNzZXMgeHNpOnR5cGU9Imdlbm1vZGVsOkdlbkNsYXNzIiBlY29yZUNsYXNzPSJzeXNtbC5lY29yZSMvL2FsbG9jYXRpb25zL0FsbG9jYXRlIj4NCisgICAgICAgIDxnZW5GZWF0dXJlcyB4c2k6dHlwZT0iZ2VubW9kZWw6R2VuRmVhdHVyZSIgbm90aWZ5PSJmYWxzZSIgY3JlYXRlQ2hpbGQ9ImZhbHNlIg0KKyAgICAgICAgICAgIHByb3BlcnR5U29ydENob2ljZXM9InRydWUiIGVjb3JlRmVhdHVyZT0iZWNvcmU6RVJlZmVyZW5jZSBzeXNtbC5lY29yZSMvL2FsbG9jYXRpb25zL0FsbG9jYXRlL2Jhc2VfQWJzdHJhY3Rpb24iLz4NCisgICAgICAgIDxnZW5PcGVyYXRpb25zIHhzaTp0eXBlPSJnZW5tb2RlbDpHZW5PcGVyYXRpb24iIGVjb3JlT3BlcmF0aW9uPSJzeXNtbC5lY29yZSMvL2FsbG9jYXRpb25zL0FsbG9jYXRlL2dldEFsbG9jYXRlZEZyb20iPg0KKyAgICAgICAgICA8Z2VuUGFyYW1ldGVycyB4c2k6dHlwZT0iZ2VubW9kZWw6R2VuUGFyYW1ldGVyIiBlY29yZVBhcmFtZXRlcj0ic3lzbWwuZWNvcmUjLy9hbGxvY2F0aW9ucy9BbGxvY2F0ZS9nZXRBbGxvY2F0ZWRGcm9tL3JlZiIvPg0KKyAgICAgICAgPC9nZW5PcGVyYXRpb25zPg0KKyAgICAgICAgPGdlbk9wZXJhdGlvbnMgeHNpOnR5cGU9Imdlbm1vZGVsOkdlbk9wZXJhdGlvbiIgZWNvcmVPcGVyYXRpb249InN5c21sLmVjb3JlIy8vYWxsb2NhdGlvbnMvQWxsb2NhdGUvZ2V0QWxsb2NhdGVkVG8iPg0KKyAgICAgICAgICA8Z2VuUGFyYW1ldGVycyB4c2k6dHlwZT0iZ2VubW9kZWw6R2VuUGFyYW1ldGVyIiBlY29yZVBhcmFtZXRlcj0ic3lzbWwuZWNvcmUjLy9hbGxvY2F0aW9ucy9BbGxvY2F0ZS9nZXRBbGxvY2F0ZWRUby9yZWYiLz4NCisgICAgICAgIDwvZ2VuT3BlcmF0aW9ucz4NCisgICAgICA8L2dlbkNsYXNzZXM+DQorICAgIDwvbmVzdGVkR2VuUGFja2FnZXM+DQorICAgIDxuZXN0ZWRHZW5QYWNrYWdlcyB4c2k6dHlwZT0iZ2VubW9kZWw6R2VuUGFja2FnZSIgcHJlZml4PSJSZXF1aXJlbWVudHMiIGJhc2VQYWNrYWdlPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQiDQorICAgICAgICBkaXNwb3NhYmxlUHJvdmlkZXJGYWN0b3J5PSJ0cnVlIiBjbGFzc1BhY2thZ2VTdWZmaXg9ImludGVybmFsLmltcGwiIGVjb3JlUGFja2FnZT0ic3lzbWwuZWNvcmUjLy9yZXF1aXJlbWVudHMiPg0KKyAgICAgIDxnZW5DbGFzc2VzIHhzaTp0eXBlPSJnZW5tb2RlbDpHZW5DbGFzcyIgZWNvcmVDbGFzcz0ic3lzbWwuZWNvcmUjLy9yZXF1aXJlbWVudHMvRGVyaXZlUmVxdCIvPg0KKyAgICAgIDxnZW5DbGFzc2VzIHhzaTp0eXBlPSJnZW5tb2RlbDpHZW5DbGFzcyIgZWNvcmVDbGFzcz0ic3lzbWwuZWNvcmUjLy9yZXF1aXJlbWVudHMvVHJhY2UiPg0KKyAgICAgICAgPGdlbk9wZXJhdGlvbnMgeHNpOnR5cGU9Imdlbm1vZGVsOkdlbk9wZXJhdGlvbiIgZWNvcmVPcGVyYXRpb249InN5c21sLmVjb3JlIy8vcmVxdWlyZW1lbnRzL1RyYWNlL2dldFRyYWNlZEZyb20iPg0KKyAgICAgICAgICA8Z2VuUGFyYW1ldGVycyB4c2k6dHlwZT0iZ2VubW9kZWw6R2VuUGFyYW1ldGVyIiBlY29yZVBhcmFtZXRlcj0ic3lzbWwuZWNvcmUjLy9yZXF1aXJlbWVudHMvVHJhY2UvZ2V0VHJhY2VkRnJvbS9yZWYiLz4NCisgICAgICAgIDwvZ2VuT3BlcmF0aW9ucz4NCisgICAgICA8L2dlbkNsYXNzZXM+DQorICAgICAgPGdlbkNsYXNzZXMgeHNpOnR5cGU9Imdlbm1vZGVsOkdlbkNsYXNzIiBlY29yZUNsYXNzPSJzeXNtbC5lY29yZSMvL3JlcXVpcmVtZW50cy9SZXF1aXJlbWVudCI+DQorICAgICAgICA8Z2VuRmVhdHVyZXMgeHNpOnR5cGU9Imdlbm1vZGVsOkdlbkZlYXR1cmUiIG5vdGlmeT0iZmFsc2UiIGNyZWF0ZUNoaWxkPSJmYWxzZSINCisgICAgICAgICAgICBwcm9wZXJ0eVNvcnRDaG9pY2VzPSJ0cnVlIiBlY29yZUZlYXR1cmU9ImVjb3JlOkVSZWZlcmVuY2Ugc3lzbWwuZWNvcmUjLy9yZXF1aXJlbWVudHMvUmVxdWlyZW1lbnQvYmFzZV9DbGFzcyIvPg0KKyAgICAgICAgPGdlbkZlYXR1cmVzIHhzaTp0eXBlPSJnZW5tb2RlbDpHZW5GZWF0dXJlIiBjcmVhdGVDaGlsZD0iZmFsc2UiIGVjb3JlRmVhdHVyZT0iZWNvcmU6RUF0dHJpYnV0ZSBzeXNtbC5lY29yZSMvL3JlcXVpcmVtZW50cy9SZXF1aXJlbWVudC90ZXh0Ii8+DQorICAgICAgICA8Z2VuRmVhdHVyZXMgeHNpOnR5cGU9Imdlbm1vZGVsOkdlbkZlYXR1cmUiIGNyZWF0ZUNoaWxkPSJmYWxzZSIgZWNvcmVGZWF0dXJlPSJlY29yZTpFQXR0cmlidXRlIHN5c21sLmVjb3JlIy8vcmVxdWlyZW1lbnRzL1JlcXVpcmVtZW50L2lkIi8+DQorICAgICAgICA8Z2VuRmVhdHVyZXMgeHNpOnR5cGU9Imdlbm1vZGVsOkdlbkZlYXR1cmUiIG5vdGlmeT0iZmFsc2UiIGNyZWF0ZUNoaWxkPSJmYWxzZSINCisgICAgICAgICAgICBwcm9wZXJ0eVNvcnRDaG9pY2VzPSJ0cnVlIiBlY29yZUZlYXR1cmU9ImVjb3JlOkVSZWZlcmVuY2Ugc3lzbWwuZWNvcmUjLy9yZXF1aXJlbWVudHMvUmVxdWlyZW1lbnQvZGVyaXZlZCIvPg0KKyAgICAgICAgPGdlbkZlYXR1cmVzIHhzaTp0eXBlPSJnZW5tb2RlbDpHZW5GZWF0dXJlIiBub3RpZnk9ImZhbHNlIiBjcmVhdGVDaGlsZD0iZmFsc2UiDQorICAgICAgICAgICAgcHJvcGVydHlTb3J0Q2hvaWNlcz0idHJ1ZSIgZWNvcmVGZWF0dXJlPSJlY29yZTpFUmVmZXJlbmNlIHN5c21sLmVjb3JlIy8vcmVxdWlyZW1lbnRzL1JlcXVpcmVtZW50L2Rlcml2ZWRGcm9tIi8+DQorICAgICAgICA8Z2VuRmVhdHVyZXMgeHNpOnR5cGU9Imdlbm1vZGVsOkdlbkZlYXR1cmUiIG5vdGlmeT0iZmFsc2UiIGNyZWF0ZUNoaWxkPSJmYWxzZSINCisgICAgICAgICAgICBwcm9wZXJ0eVNvcnRDaG9pY2VzPSJ0cnVlIiBlY29yZUZlYXR1cmU9ImVjb3JlOkVSZWZlcmVuY2Ugc3lzbWwuZWNvcmUjLy9yZXF1aXJlbWVudHMvUmVxdWlyZW1lbnQvc2F0aXNmaWVkQnkiLz4NCisgICAgICAgIDxnZW5GZWF0dXJlcyB4c2k6dHlwZT0iZ2VubW9kZWw6R2VuRmVhdHVyZSIgbm90aWZ5PSJmYWxzZSIgY3JlYXRlQ2hpbGQ9ImZhbHNlIg0KKyAgICAgICAgICAgIHByb3BlcnR5U29ydENob2ljZXM9InRydWUiIGVjb3JlRmVhdHVyZT0iZWNvcmU6RVJlZmVyZW5jZSBzeXNtbC5lY29yZSMvL3JlcXVpcmVtZW50cy9SZXF1aXJlbWVudC9yZWZpbmVkQnkiLz4NCisgICAgICAgIDxnZW5GZWF0dXJlcyB4c2k6dHlwZT0iZ2VubW9kZWw6R2VuRmVhdHVyZSIgbm90aWZ5PSJmYWxzZSIgY3JlYXRlQ2hpbGQ9ImZhbHNlIg0KKyAgICAgICAgICAgIHByb3BlcnR5U29ydENob2ljZXM9InRydWUiIGVjb3JlRmVhdHVyZT0iZWNvcmU6RVJlZmVyZW5jZSBzeXNtbC5lY29yZSMvL3JlcXVpcmVtZW50cy9SZXF1aXJlbWVudC90cmFjZWRUbyIvPg0KKyAgICAgICAgPGdlbkZlYXR1cmVzIHhzaTp0eXBlPSJnZW5tb2RlbDpHZW5GZWF0dXJlIiBub3RpZnk9ImZhbHNlIiBjcmVhdGVDaGlsZD0iZmFsc2UiDQorICAgICAgICAgICAgcHJvcGVydHlTb3J0Q2hvaWNlcz0idHJ1ZSIgZWNvcmVGZWF0dXJlPSJlY29yZTpFUmVmZXJlbmNlIHN5c21sLmVjb3JlIy8vcmVxdWlyZW1lbnRzL1JlcXVpcmVtZW50L3ZlcmlmaWVkQnkiLz4NCisgICAgICAgIDxnZW5GZWF0dXJlcyB4c2k6dHlwZT0iZ2VubW9kZWw6R2VuRmVhdHVyZSIgbm90aWZ5PSJmYWxzZSIgY3JlYXRlQ2hpbGQ9ImZhbHNlIg0KKyAgICAgICAgICAgIHByb3BlcnR5U29ydENob2ljZXM9InRydWUiIGVjb3JlRmVhdHVyZT0iZWNvcmU6RVJlZmVyZW5jZSBzeXNtbC5lY29yZSMvL3JlcXVpcmVtZW50cy9SZXF1aXJlbWVudC9tYXN0ZXIiLz4NCisgICAgICA8L2dlbkNsYXNzZXM+DQorICAgICAgPGdlbkNsYXNzZXMgeHNpOnR5cGU9Imdlbm1vZGVsOkdlbkNsYXNzIiBlY29yZUNsYXNzPSJzeXNtbC5lY29yZSMvL3JlcXVpcmVtZW50cy9Db3B5Ii8+DQorICAgICAgPGdlbkNsYXNzZXMgeHNpOnR5cGU9Imdlbm1vZGVsOkdlbkNsYXNzIiBlY29yZUNsYXNzPSJzeXNtbC5lY29yZSMvL3JlcXVpcmVtZW50cy9TYXRpc2Z5Ij4NCisgICAgICAgIDxnZW5PcGVyYXRpb25zIHhzaTp0eXBlPSJnZW5tb2RlbDpHZW5PcGVyYXRpb24iIGVjb3JlT3BlcmF0aW9uPSJzeXNtbC5lY29yZSMvL3JlcXVpcmVtZW50cy9TYXRpc2Z5L2dldFNhdGlzZmllcyI+DQorICAgICAgICAgIDxnZW5QYXJhbWV0ZXJzIHhzaTp0eXBlPSJnZW5tb2RlbDpHZW5QYXJhbWV0ZXIiIGVjb3JlUGFyYW1ldGVyPSJzeXNtbC5lY29yZSMvL3JlcXVpcmVtZW50cy9TYXRpc2Z5L2dldFNhdGlzZmllcy9yZWYiLz4NCisgICAgICAgIDwvZ2VuT3BlcmF0aW9ucz4NCisgICAgICA8L2dlbkNsYXNzZXM+DQorICAgICAgPGdlbkNsYXNzZXMgeHNpOnR5cGU9Imdlbm1vZGVsOkdlbkNsYXNzIiBlY29yZUNsYXNzPSJzeXNtbC5lY29yZSMvL3JlcXVpcmVtZW50cy9UZXN0Q2FzZSI+DQorICAgICAgICA8Z2VuRmVhdHVyZXMgeHNpOnR5cGU9Imdlbm1vZGVsOkdlbkZlYXR1cmUiIG5vdGlmeT0iZmFsc2UiIGNyZWF0ZUNoaWxkPSJmYWxzZSINCisgICAgICAgICAgICBwcm9wZXJ0eVNvcnRDaG9pY2VzPSJ0cnVlIiBlY29yZUZlYXR1cmU9ImVjb3JlOkVSZWZlcmVuY2Ugc3lzbWwuZWNvcmUjLy9yZXF1aXJlbWVudHMvVGVzdENhc2UvYmFzZV9PcGVyYXRpb24iLz4NCisgICAgICAgIDxnZW5GZWF0dXJlcyB4c2k6dHlwZT0iZ2VubW9kZWw6R2VuRmVhdHVyZSIgbm90aWZ5PSJmYWxzZSIgY3JlYXRlQ2hpbGQ9ImZhbHNlIg0KKyAgICAgICAgICAgIHByb3BlcnR5U29ydENob2ljZXM9InRydWUiIGVjb3JlRmVhdHVyZT0iZWNvcmU6RVJlZmVyZW5jZSBzeXNtbC5lY29yZSMvL3JlcXVpcmVtZW50cy9UZXN0Q2FzZS9iYXNlX0JlaGF2aW9yIi8+DQorICAgICAgPC9nZW5DbGFzc2VzPg0KKyAgICAgIDxnZW5DbGFzc2VzIHhzaTp0eXBlPSJnZW5tb2RlbDpHZW5DbGFzcyIgZWNvcmVDbGFzcz0ic3lzbWwuZWNvcmUjLy9yZXF1aXJlbWVudHMvVmVyaWZ5Ij4NCisgICAgICAgIDxnZW5PcGVyYXRpb25zIHhzaTp0eXBlPSJnZW5tb2RlbDpHZW5PcGVyYXRpb24iIGVjb3JlT3BlcmF0aW9uPSJzeXNtbC5lY29yZSMvL3JlcXVpcmVtZW50cy9WZXJpZnkvZ2V0VmVyaWZpZXMiPg0KKyAgICAgICAgICA8Z2VuUGFyYW1ldGVycyB4c2k6dHlwZT0iZ2VubW9kZWw6R2VuUGFyYW1ldGVyIiBlY29yZVBhcmFtZXRlcj0ic3lzbWwuZWNvcmUjLy9yZXF1aXJlbWVudHMvVmVyaWZ5L2dldFZlcmlmaWVzL3JlZiIvPg0KKyAgICAgICAgPC9nZW5PcGVyYXRpb25zPg0KKyAgICAgIDwvZ2VuQ2xhc3Nlcz4NCisgICAgICA8Z2VuQ2xhc3NlcyB4c2k6dHlwZT0iZ2VubW9kZWw6R2VuQ2xhc3MiIGVjb3JlQ2xhc3M9InN5c21sLmVjb3JlIy8vcmVxdWlyZW1lbnRzL1JlZmluZSI+DQorICAgICAgICA8Z2VuT3BlcmF0aW9ucyB4c2k6dHlwZT0iZ2VubW9kZWw6R2VuT3BlcmF0aW9uIiBlY29yZU9wZXJhdGlvbj0ic3lzbWwuZWNvcmUjLy9yZXF1aXJlbWVudHMvUmVmaW5lL2dldFJlZmluZXMiPg0KKyAgICAgICAgICA8Z2VuUGFyYW1ldGVycyB4c2k6dHlwZT0iZ2VubW9kZWw6R2VuUGFyYW1ldGVyIiBlY29yZVBhcmFtZXRlcj0ic3lzbWwuZWNvcmUjLy9yZXF1aXJlbWVudHMvUmVmaW5lL2dldFJlZmluZXMvcmVmIi8+DQorICAgICAgICA8L2dlbk9wZXJhdGlvbnM+DQorICAgICAgPC9nZW5DbGFzc2VzPg0KKyAgICA8L25lc3RlZEdlblBhY2thZ2VzPg0KKyAgICA8bmVzdGVkR2VuUGFja2FnZXMgeHNpOnR5cGU9Imdlbm1vZGVsOkdlblBhY2thZ2UiIHByZWZpeD0iRGVwcmVjYXRlZGVsZW1lbnRzIg0KKyAgICAgICAgYmFzZVBhY2thZ2U9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNCIgZGlzcG9zYWJsZVByb3ZpZGVyRmFjdG9yeT0idHJ1ZSINCisgICAgICAgIGNsYXNzUGFja2FnZVN1ZmZpeD0iaW50ZXJuYWwuaW1wbCIgZWNvcmVQYWNrYWdlPSJzeXNtbC5lY29yZSMvL2RlcHJlY2F0ZWRlbGVtZW50cyINCisgICAgICAgIHB1YmxpY2F0aW9uTG9jYXRpb249IiI+DQorICAgICAgPGdlbkNsYXNzZXMgeHNpOnR5cGU9Imdlbm1vZGVsOkdlbkNsYXNzIiBlY29yZUNsYXNzPSJzeXNtbC5lY29yZSMvL2RlcHJlY2F0ZWRlbGVtZW50cy9GbG93UG9ydCI+DQorICAgICAgICA8Z2VuRmVhdHVyZXMgeHNpOnR5cGU9Imdlbm1vZGVsOkdlbkZlYXR1cmUiIG5vdGlmeT0iZmFsc2UiIGNyZWF0ZUNoaWxkPSJmYWxzZSINCisgICAgICAgICAgICBwcm9wZXJ0eVNvcnRDaG9pY2VzPSJ0cnVlIiBlY29yZUZlYXR1cmU9ImVjb3JlOkVSZWZlcmVuY2Ugc3lzbWwuZWNvcmUjLy9kZXByZWNhdGVkZWxlbWVudHMvRmxvd1BvcnQvYmFzZV9Qb3J0Ii8+DQorICAgICAgICA8Z2VuRmVhdHVyZXMgeHNpOnR5cGU9Imdlbm1vZGVsOkdlbkZlYXR1cmUiIGNyZWF0ZUNoaWxkPSJmYWxzZSIgZWNvcmVGZWF0dXJlPSJlY29yZTpFQXR0cmlidXRlIHN5c21sLmVjb3JlIy8vZGVwcmVjYXRlZGVsZW1lbnRzL0Zsb3dQb3J0L2RpcmVjdGlvbiIvPg0KKyAgICAgICAgPGdlbkZlYXR1cmVzIHhzaTp0eXBlPSJnZW5tb2RlbDpHZW5GZWF0dXJlIiBjcmVhdGVDaGlsZD0iZmFsc2UiIGVjb3JlRmVhdHVyZT0iZWNvcmU6RUF0dHJpYnV0ZSBzeXNtbC5lY29yZSMvL2RlcHJlY2F0ZWRlbGVtZW50cy9GbG93UG9ydC9pc0F0b21pYyIvPg0KKyAgICAgIDwvZ2VuQ2xhc3Nlcz4NCisgICAgICA8Z2VuQ2xhc3NlcyB4c2k6dHlwZT0iZ2VubW9kZWw6R2VuQ2xhc3MiIGVjb3JlQ2xhc3M9InN5c21sLmVjb3JlIy8vZGVwcmVjYXRlZGVsZW1lbnRzL0Zsb3dTcGVjaWZpY2F0aW9uIj4NCisgICAgICAgIDxnZW5GZWF0dXJlcyB4c2k6dHlwZT0iZ2VubW9kZWw6R2VuRmVhdHVyZSIgbm90aWZ5PSJmYWxzZSIgY3JlYXRlQ2hpbGQ9ImZhbHNlIg0KKyAgICAgICAgICAgIHByb3BlcnR5U29ydENob2ljZXM9InRydWUiIGVjb3JlRmVhdHVyZT0iZWNvcmU6RVJlZmVyZW5jZSBzeXNtbC5lY29yZSMvL2RlcHJlY2F0ZWRlbGVtZW50cy9GbG93U3BlY2lmaWNhdGlvbi9iYXNlX0ludGVyZmFjZSIvPg0KKyAgICAgIDwvZ2VuQ2xhc3Nlcz4NCisgICAgICA8Z2VuQ2xhc3NlcyB4c2k6dHlwZT0iZ2VubW9kZWw6R2VuQ2xhc3MiIGVjb3JlQ2xhc3M9InN5c21sLmVjb3JlIy8vZGVwcmVjYXRlZGVsZW1lbnRzL0FsbG9jYXRlZCI+DQorICAgICAgICA8Z2VuRmVhdHVyZXMgeHNpOnR5cGU9Imdlbm1vZGVsOkdlbkZlYXR1cmUiIG5vdGlmeT0iZmFsc2UiIGNyZWF0ZUNoaWxkPSJmYWxzZSINCisgICAgICAgICAgICBwcm9wZXJ0eVNvcnRDaG9pY2VzPSJ0cnVlIiBlY29yZUZlYXR1cmU9ImVjb3JlOkVSZWZlcmVuY2Ugc3lzbWwuZWNvcmUjLy9kZXByZWNhdGVkZWxlbWVudHMvQWxsb2NhdGVkL2Jhc2VfTmFtZWRFbGVtZW50Ii8+DQorICAgICAgICA8Z2VuRmVhdHVyZXMgeHNpOnR5cGU9Imdlbm1vZGVsOkdlbkZlYXR1cmUiIG5vdGlmeT0iZmFsc2UiIGNyZWF0ZUNoaWxkPSJmYWxzZSINCisgICAgICAgICAgICBwcm9wZXJ0eVNvcnRDaG9pY2VzPSJ0cnVlIiBlY29yZUZlYXR1cmU9ImVjb3JlOkVSZWZlcmVuY2Ugc3lzbWwuZWNvcmUjLy9kZXByZWNhdGVkZWxlbWVudHMvQWxsb2NhdGVkL2FsbG9jYXRlZEZyb20iLz4NCisgICAgICAgIDxnZW5GZWF0dXJlcyB4c2k6dHlwZT0iZ2VubW9kZWw6R2VuRmVhdHVyZSIgbm90aWZ5PSJmYWxzZSIgY3JlYXRlQ2hpbGQ9ImZhbHNlIg0KKyAgICAgICAgICAgIHByb3BlcnR5U29ydENob2ljZXM9InRydWUiIGVjb3JlRmVhdHVyZT0iZWNvcmU6RVJlZmVyZW5jZSBzeXNtbC5lY29yZSMvL2RlcHJlY2F0ZWRlbGVtZW50cy9BbGxvY2F0ZWQvYWxsb2NhdGVkVG8iLz4NCisgICAgICA8L2dlbkNsYXNzZXM+DQorICAgICAgPGdlbkNsYXNzZXMgeHNpOnR5cGU9Imdlbm1vZGVsOkdlbkNsYXNzIiBlY29yZUNsYXNzPSJzeXNtbC5lY29yZSMvL2RlcHJlY2F0ZWRlbGVtZW50cy9SZXF1aXJlbWVudFJlbGF0ZWQiPg0KKyAgICAgICAgPGdlbkZlYXR1cmVzIHhzaTp0eXBlPSJnZW5tb2RlbDpHZW5GZWF0dXJlIiBub3RpZnk9ImZhbHNlIiBjcmVhdGVDaGlsZD0iZmFsc2UiDQorICAgICAgICAgICAgcHJvcGVydHlTb3J0Q2hvaWNlcz0idHJ1ZSIgZWNvcmVGZWF0dXJlPSJlY29yZTpFUmVmZXJlbmNlIHN5c21sLmVjb3JlIy8vZGVwcmVjYXRlZGVsZW1lbnRzL1JlcXVpcmVtZW50UmVsYXRlZC9iYXNlX05hbWVkRWxlbWVudCIvPg0KKyAgICAgICAgPGdlbkZlYXR1cmVzIHhzaTp0eXBlPSJnZW5tb2RlbDpHZW5GZWF0dXJlIiBub3RpZnk9ImZhbHNlIiBjcmVhdGVDaGlsZD0iZmFsc2UiDQorICAgICAgICAgICAgcHJvcGVydHlTb3J0Q2hvaWNlcz0idHJ1ZSIgZWNvcmVGZWF0dXJlPSJlY29yZTpFUmVmZXJlbmNlIHN5c21sLmVjb3JlIy8vZGVwcmVjYXRlZGVsZW1lbnRzL1JlcXVpcmVtZW50UmVsYXRlZC9UcmFjZWRGcm9tIi8+DQorICAgICAgICA8Z2VuRmVhdHVyZXMgeHNpOnR5cGU9Imdlbm1vZGVsOkdlbkZlYXR1cmUiIG5vdGlmeT0iZmFsc2UiIGNyZWF0ZUNoaWxkPSJmYWxzZSINCisgICAgICAgICAgICBwcm9wZXJ0eVNvcnRDaG9pY2VzPSJ0cnVlIiBlY29yZUZlYXR1cmU9ImVjb3JlOkVSZWZlcmVuY2Ugc3lzbWwuZWNvcmUjLy9kZXByZWNhdGVkZWxlbWVudHMvUmVxdWlyZW1lbnRSZWxhdGVkL1NhdGlzZmllcyIvPg0KKyAgICAgICAgPGdlbkZlYXR1cmVzIHhzaTp0eXBlPSJnZW5tb2RlbDpHZW5GZWF0dXJlIiBub3RpZnk9ImZhbHNlIiBjcmVhdGVDaGlsZD0iZmFsc2UiDQorICAgICAgICAgICAgcHJvcGVydHlTb3J0Q2hvaWNlcz0idHJ1ZSIgZWNvcmVGZWF0dXJlPSJlY29yZTpFUmVmZXJlbmNlIHN5c21sLmVjb3JlIy8vZGVwcmVjYXRlZGVsZW1lbnRzL1JlcXVpcmVtZW50UmVsYXRlZC9SZWZpbmVzIi8+DQorICAgICAgICA8Z2VuRmVhdHVyZXMgeHNpOnR5cGU9Imdlbm1vZGVsOkdlbkZlYXR1cmUiIG5vdGlmeT0iZmFsc2UiIGNyZWF0ZUNoaWxkPSJmYWxzZSINCisgICAgICAgICAgICBwcm9wZXJ0eVNvcnRDaG9pY2VzPSJ0cnVlIiBlY29yZUZlYXR1cmU9ImVjb3JlOkVSZWZlcmVuY2Ugc3lzbWwuZWNvcmUjLy9kZXByZWNhdGVkZWxlbWVudHMvUmVxdWlyZW1lbnRSZWxhdGVkL1ZlcmlmaWVzIi8+DQorICAgICAgPC9nZW5DbGFzc2VzPg0KKyAgICAgIDxnZW5DbGFzc2VzIHhzaTp0eXBlPSJnZW5tb2RlbDpHZW5DbGFzcyIgZWNvcmVDbGFzcz0ic3lzbWwuZWNvcmUjLy9kZXByZWNhdGVkZWxlbWVudHMvRGVwcmVjYXRlZCI+DQorICAgICAgICA8Z2VuRmVhdHVyZXMgeHNpOnR5cGU9Imdlbm1vZGVsOkdlbkZlYXR1cmUiIG5vdGlmeT0iZmFsc2UiIGNyZWF0ZUNoaWxkPSJmYWxzZSINCisgICAgICAgICAgICBwcm9wZXJ0eVNvcnRDaG9pY2VzPSJ0cnVlIiBlY29yZUZlYXR1cmU9ImVjb3JlOkVSZWZlcmVuY2Ugc3lzbWwuZWNvcmUjLy9kZXByZWNhdGVkZWxlbWVudHMvRGVwcmVjYXRlZC9iYXNlX1ZhbHVlU3BlY2lmaWNhdGlvbiIvPg0KKyAgICAgICAgPGdlbkZlYXR1cmVzIHhzaTp0eXBlPSJnZW5tb2RlbDpHZW5GZWF0dXJlIiBub3RpZnk9ImZhbHNlIiBjcmVhdGVDaGlsZD0iZmFsc2UiDQorICAgICAgICAgICAgcHJvcGVydHlTb3J0Q2hvaWNlcz0idHJ1ZSIgZWNvcmVGZWF0dXJlPSJlY29yZTpFUmVmZXJlbmNlIHN5c21sLmVjb3JlIy8vZGVwcmVjYXRlZGVsZW1lbnRzL0RlcHJlY2F0ZWQvYmFzZV9Qcm9wZXJ0eSIvPg0KKyAgICAgICAgPGdlbkZlYXR1cmVzIHhzaTp0eXBlPSJnZW5tb2RlbDpHZW5GZWF0dXJlIiBub3RpZnk9ImZhbHNlIiBjcmVhdGVDaGlsZD0iZmFsc2UiDQorICAgICAgICAgICAgcHJvcGVydHlTb3J0Q2hvaWNlcz0idHJ1ZSIgZWNvcmVGZWF0dXJlPSJlY29yZTpFUmVmZXJlbmNlIHN5c21sLmVjb3JlIy8vZGVwcmVjYXRlZGVsZW1lbnRzL0RlcHJlY2F0ZWQvYmFzZV9JbnN0YW5jZVNwZWNpZmljYXRpb24iLz4NCisgICAgICAgIDxnZW5GZWF0dXJlcyB4c2k6dHlwZT0iZ2VubW9kZWw6R2VuRmVhdHVyZSIgbm90aWZ5PSJmYWxzZSIgY3JlYXRlQ2hpbGQ9ImZhbHNlIg0KKyAgICAgICAgICAgIHByb3BlcnR5U29ydENob2ljZXM9InRydWUiIGVjb3JlRmVhdHVyZT0iZWNvcmU6RVJlZmVyZW5jZSBzeXNtbC5lY29yZSMvL2RlcHJlY2F0ZWRlbGVtZW50cy9EZXByZWNhdGVkL2Jhc2VfQ2xhc3MiLz4NCisgICAgICAgIDxnZW5GZWF0dXJlcyB4c2k6dHlwZT0iZ2VubW9kZWw6R2VuRmVhdHVyZSIgbm90aWZ5PSJmYWxzZSIgY3JlYXRlQ2hpbGQ9ImZhbHNlIg0KKyAgICAgICAgICAgIHByb3BlcnR5U29ydENob2ljZXM9InRydWUiIGVjb3JlRmVhdHVyZT0iZWNvcmU6RVJlZmVyZW5jZSBzeXNtbC5lY29yZSMvL2RlcHJlY2F0ZWRlbGVtZW50cy9EZXByZWNhdGVkL2Jhc2VfQXNzb2NpYXRpb24iLz4NCisgICAgICAgIDxnZW5GZWF0dXJlcyB4c2k6dHlwZT0iZ2VubW9kZWw6R2VuRmVhdHVyZSIgY3JlYXRlQ2hpbGQ9ImZhbHNlIiBlY29yZUZlYXR1cmU9ImVjb3JlOkVBdHRyaWJ1dGUgc3lzbWwuZWNvcmUjLy9kZXByZWNhdGVkZWxlbWVudHMvRGVwcmVjYXRlZC9kZXByZWNhdGVkUmVhc29uIi8+DQorICAgICAgICA8Z2VuRmVhdHVyZXMgeHNpOnR5cGU9Imdlbm1vZGVsOkdlbkZlYXR1cmUiIG5vdGlmeT0iZmFsc2UiIGNyZWF0ZUNoaWxkPSJmYWxzZSINCisgICAgICAgICAgICBwcm9wZXJ0eVNvcnRDaG9pY2VzPSJ0cnVlIiBlY29yZUZlYXR1cmU9ImVjb3JlOkVSZWZlcmVuY2Ugc3lzbWwuZWNvcmUjLy9kZXByZWNhdGVkZWxlbWVudHMvRGVwcmVjYXRlZC9iYXNlX0dlbmVyYWxpemF0aW9uIi8+DQorICAgICAgICA8Z2VuRmVhdHVyZXMgeHNpOnR5cGU9Imdlbm1vZGVsOkdlbkZlYXR1cmUiIG5vdGlmeT0iZmFsc2UiIGNyZWF0ZUNoaWxkPSJmYWxzZSINCisgICAgICAgICAgICBwcm9wZXJ0eVNvcnRDaG9pY2VzPSJ0cnVlIiBlY29yZUZlYXR1cmU9ImVjb3JlOkVSZWZlcmVuY2Ugc3lzbWwuZWNvcmUjLy9kZXByZWNhdGVkZWxlbWVudHMvRGVwcmVjYXRlZC9iYXNlX0RhdGFUeXBlIi8+DQorICAgICAgPC9nZW5DbGFzc2VzPg0KKyAgICA8L25lc3RlZEdlblBhY2thZ2VzPg0KKyAgPC9nZW5QYWNrYWdlcz4NCis8L2dlbm1vZGVsOkdlbk1vZGVsPg0KZGlmZiAtLWdpdCBhL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0L21vZGVsL1N5c01MLnByb2ZpbGUubm90YXRpb24gYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC9tb2RlbC9TeXNNTC5wcm9maWxlLm5vdGF0aW9uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFjMzM3NTIKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC9tb2RlbC9TeXNNTC5wcm9maWxlLm5vdGF0aW9uCkBAIC0wLDAgKzEsMjE4NSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4NCis8eG1pOlhNSSB4bWk6dmVyc2lvbj0iMi4wIiB4bWxuczp4bWk9Imh0dHA6Ly93d3cub21nLm9yZy9YTUkiIHhtbG5zOmNzcz0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9wYXB5cnVzL2luZnJhL2dtZmRpYWcvY3NzIiB4bWxuczplY29yZT0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9lbWYvMjAwMi9FY29yZSIgeG1sbnM6bm90YXRpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvZ21mL3J1bnRpbWUvMS4wLjIvbm90YXRpb24iIHhtbG5zOnN0eWxlPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3BhcHlydXMvaW5mcmEvdmlld3BvaW50cy9wb2xpY3kvc3R5bGUiIHhtbG5zOnVtbD0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy91bWwyLzUuMC4wL1VNTCI+DQorICA8bm90YXRpb246RGlhZ3JhbSB4bWk6aWQ9Il9icEVhY0pnQkVlU0Z0TG9WZTItc29RIiB0eXBlPSJQYXB5cnVzVU1MUHJvZmlsZURpYWdyYW0iIG5hbWU9Ik92ZXJ2aWV3IiBtZWFzdXJlbWVudFVuaXQ9IlBpeGVsIj4NCisgICAgPHN0eWxlcyB4bWk6dHlwZT0ibm90YXRpb246U3RyaW5nVmFsdWVTdHlsZSIgeG1pOmlkPSJfYnBFYWNaZ0JFZVNGdExvVmUyLXNvUSIgbmFtZT0iZGlhZ3JhbV9jb21wYXRpYmlsaXR5X3ZlcnNpb24iIHN0cmluZ1ZhbHVlPSIxLjAuMCIvPg0KKyAgICA8c3R5bGVzIHhtaTp0eXBlPSJub3RhdGlvbjpEaWFncmFtU3R5bGUiIHhtaTppZD0iX2JwRWFjcGdCRWVTRnRMb1ZlMi1zb1EiLz4NCisgICAgPHN0eWxlcyB4bWk6dHlwZT0ic3R5bGU6UGFweXJ1c1ZpZXdTdHlsZSIgeG1pOmlkPSJfYnBFYWM1Z0JFZVNGdExvVmUyLXNvUSI+DQorICAgICAgPG93bmVyIHhtaTp0eXBlPSJ1bWw6UHJvZmlsZSIgaHJlZj0iU3lzTUwucHJvZmlsZS51bWwjU3lzTUwiLz4NCisgICAgPC9zdHlsZXM+DQorICAgIDxlbGVtZW50IHhtaTp0eXBlPSJ1bWw6UHJvZmlsZSIgaHJlZj0iU3lzTUwucHJvZmlsZS51bWwjU3lzTUwiLz4NCisgIDwvbm90YXRpb246RGlhZ3JhbT4NCisgIDxub3RhdGlvbjpEaWFncmFtIHhtaTppZD0iX1dDV05FSmdDRWVTRnRMb1ZlMi1zb1EiIHR5cGU9IlBhcHlydXNVTUxQcm9maWxlRGlhZ3JhbSIgbmFtZT0iYmxvY2sgZGlhZ3JhbSIgbWVhc3VyZW1lbnRVbml0PSJQaXhlbCI+DQorICAgIDxjaGlsZHJlbiB4bWk6dHlwZT0ibm90YXRpb246U2hhcGUiIHhtaTppZD0iX1lYYjFJSmdDRWVTRnRMb1ZlMi1zb1EiIHR5cGU9IjEwMzEiPg0KKyAgICAgIDxjaGlsZHJlbiB4bWk6dHlwZT0ibm90YXRpb246RGVjb3JhdGlvbk5vZGUiIHhtaTppZD0iX1lYY2NNSmdDRWVTRnRMb1ZlMi1zb1EiIHR5cGU9IjEwODQiLz4NCisgICAgICA8ZWxlbWVudCB4bWk6dHlwZT0idW1sOkNsYXNzIiBocmVmPSJwYXRobWFwOi8vVU1MX01FVEFNT0RFTFMvVU1MLm1ldGFtb2RlbC51bWwjRGF0YVR5cGUiLz4NCisgICAgICA8bGF5b3V0Q29uc3RyYWludCB4bWk6dHlwZT0ibm90YXRpb246Qm91bmRzIiB4bWk6aWQ9Il9ZWGIxSVpnQ0VlU0Z0TG9WZTItc29RIiB4PSI4ODAiLz4NCisgICAgPC9jaGlsZHJlbj4NCisgICAgPGNoaWxkcmVuIHhtaTp0eXBlPSJub3RhdGlvbjpTaGFwZSIgeG1pOmlkPSJfWXhUR29KZ0NFZVNGdExvVmUyLXNvUSIgdHlwZT0iMTAyNiI+DQorICAgICAgPGNoaWxkcmVuIHhtaTp0eXBlPSJub3RhdGlvbjpEZWNvcmF0aW9uTm9kZSIgeG1pOmlkPSJfWXhUR29wZ0NFZVNGdExvVmUyLXNvUSIgdHlwZT0iMTAzNCIvPg0KKyAgICAgIDxjaGlsZHJlbiB4bWk6dHlwZT0ibm90YXRpb246QmFzaWNDb21wYXJ0bWVudCIgeG1pOmlkPSJfWXhUdHNKZ0NFZVNGdExvVmUyLXNvUSIgdHlwZT0iMTA3MSI+DQorICAgICAgICA8Y2hpbGRyZW4geG1pOnR5cGU9Im5vdGF0aW9uOlNoYXBlIiB4bWk6aWQ9Il84blAyUUpnQ0VlU0Z0TG9WZTItc29RIiB0eXBlPSIzMDAyIj4NCisgICAgICAgICAgPGVsZW1lbnQgeG1pOnR5cGU9InVtbDpQcm9wZXJ0eSIgaHJlZj0iU3lzTUwucHJvZmlsZS51bWwjU3lzTUwtQmxvY2tzLUNvbm5lY3RvclByb3BlcnR5LWNvbm5lY3RvciIvPg0KKyAgICAgICAgICA8bGF5b3V0Q29uc3RyYWludCB4bWk6dHlwZT0ibm90YXRpb246TG9jYXRpb24iIHhtaTppZD0iXzhuUDJRWmdDRWVTRnRMb1ZlMi1zb1EiLz4NCisgICAgICAgIDwvY2hpbGRyZW4+DQorICAgICAgICA8c3R5bGVzIHhtaTp0eXBlPSJub3RhdGlvbjpUaXRsZVN0eWxlIiB4bWk6aWQ9Il9ZeFR0c1pnQ0VlU0Z0TG9WZTItc29RIi8+DQorICAgICAgICA8c3R5bGVzIHhtaTp0eXBlPSJub3RhdGlvbjpTb3J0aW5nU3R5bGUiIHhtaTppZD0iX1l4VHRzcGdDRWVTRnRMb1ZlMi1zb1EiLz4NCisgICAgICAgIDxzdHlsZXMgeG1pOnR5cGU9Im5vdGF0aW9uOkZpbHRlcmluZ1N0eWxlIiB4bWk6aWQ9Il9ZeFR0czVnQ0VlU0Z0TG9WZTItc29RIi8+DQorICAgICAgICA8bGF5b3V0Q29uc3RyYWludCB4bWk6dHlwZT0ibm90YXRpb246Qm91bmRzIiB4bWk6aWQ9Il9ZeFR0dEpnQ0VlU0Z0TG9WZTItc29RIi8+DQorICAgICAgPC9jaGlsZHJlbj4NCisgICAgICA8Y2hpbGRyZW4geG1pOnR5cGU9Im5vdGF0aW9uOkJhc2ljQ29tcGFydG1lbnQiIHhtaTppZD0iX1l4VHR0WmdDRWVTRnRMb1ZlMi1zb1EiIHZpc2libGU9ImZhbHNlIiB0eXBlPSIxMDE5Ij4NCisgICAgICAgIDxzdHlsZXMgeG1pOnR5cGU9Im5vdGF0aW9uOlRpdGxlU3R5bGUiIHhtaTppZD0iX1l4VHR0cGdDRWVTRnRMb1ZlMi1zb1EiLz4NCisgICAgICAgIDxzdHlsZXMgeG1pOnR5cGU9Im5vdGF0aW9uOlNvcnRpbmdTdHlsZSIgeG1pOmlkPSJfWXhUdHQ1Z0NFZVNGdExvVmUyLXNvUSIvPg0KKyAgICAgICAgPHN0eWxlcyB4bWk6dHlwZT0ibm90YXRpb246RmlsdGVyaW5nU3R5bGUiIHhtaTppZD0iX1l4VHR1SmdDRWVTRnRMb1ZlMi1zb1EiLz4NCisgICAgICAgIDxsYXlvdXRDb25zdHJhaW50IHhtaTp0eXBlPSJub3RhdGlvbjpCb3VuZHMiIHhtaTppZD0iX1l4VHR1WmdDRWVTRnRMb1ZlMi1zb1EiLz4NCisgICAgICA8L2NoaWxkcmVuPg0KKyAgICAgIDxlbGVtZW50IHhtaTp0eXBlPSJ1bWw6U3RlcmVvdHlwZSIgaHJlZj0iU3lzTUwucHJvZmlsZS51bWwjU3lzTUwtQmxvY2tzLUNvbm5lY3RvclByb3BlcnR5Ii8+DQorICAgICAgPGxheW91dENvbnN0cmFpbnQgeG1pOnR5cGU9Im5vdGF0aW9uOkJvdW5kcyIgeG1pOmlkPSJfWXhUR29aZ0NFZVNGdExvVmUyLXNvUSIgeD0iNzAwIiB5PSIyMDAiIGhlaWdodD0iNjEiLz4NCisgICAgPC9jaGlsZHJlbj4NCisgICAgPGNoaWxkcmVuIHhtaTp0eXBlPSJub3RhdGlvbjpTaGFwZSIgeG1pOmlkPSJfWXhoSkVKZ0NFZVNGdExvVmUyLXNvUSIgdHlwZT0iMTAzMSI+DQorICAgICAgPGNoaWxkcmVuIHhtaTp0eXBlPSJub3RhdGlvbjpEZWNvcmF0aW9uTm9kZSIgeG1pOmlkPSJfWXhoSkVwZ0NFZVNGdExvVmUyLXNvUSIgdHlwZT0iMTA4NCIvPg0KKyAgICAgIDxlbGVtZW50IHhtaTp0eXBlPSJ1bWw6Q2xhc3MiIGhyZWY9InBhdGhtYXA6Ly9VTUxfTUVUQU1PREVMUy9VTUwubWV0YW1vZGVsLnVtbCNQcm9wZXJ0eSIvPg0KKyAgICAgIDxsYXlvdXRDb25zdHJhaW50IHhtaTp0eXBlPSJub3RhdGlvbjpCb3VuZHMiIHhtaTppZD0iX1l4aEpFWmdDRWVTRnRMb1ZlMi1zb1EiIHg9IjQwMCIgeT0iMjAiIHdpZHRoPSI0MjEiLz4NCisgICAgPC9jaGlsZHJlbj4NCisgICAgPGNoaWxkcmVuIHhtaTp0eXBlPSJub3RhdGlvbjpTaGFwZSIgeG1pOmlkPSJfYTMzS2dKZ0NFZVNGdExvVmUyLXNvUSIgdHlwZT0iMTAyNiI+DQorICAgICAgPGNoaWxkcmVuIHhtaTp0eXBlPSJub3RhdGlvbjpEZWNvcmF0aW9uTm9kZSIgeG1pOmlkPSJfYTMzeGtKZ0NFZVNGdExvVmUyLXNvUSIgdHlwZT0iMTAzNCIvPg0KKyAgICAgIDxjaGlsZHJlbiB4bWk6dHlwZT0ibm90YXRpb246QmFzaWNDb21wYXJ0bWVudCIgeG1pOmlkPSJfYTMzeGtaZ0NFZVNGdExvVmUyLXNvUSIgdHlwZT0iMTA3MSI+DQorICAgICAgICA8Y2hpbGRyZW4geG1pOnR5cGU9Im5vdGF0aW9uOlNoYXBlIiB4bWk6aWQ9Il9pLTBEZ0pnQ0VlU0Z0TG9WZTItc29RIiB0eXBlPSIzMDAyIj4NCisgICAgICAgICAgPGVsZW1lbnQgeG1pOnR5cGU9InVtbDpQcm9wZXJ0eSIgaHJlZj0iU3lzTUwucHJvZmlsZS51bWwjU3lzTUwtQmxvY2tzLUJsb2NrLWlzRW5jYXBzdWxhdGVkIi8+DQorICAgICAgICAgIDxsYXlvdXRDb25zdHJhaW50IHhtaTp0eXBlPSJub3RhdGlvbjpMb2NhdGlvbiIgeG1pOmlkPSJfaS0wRGdaZ0NFZVNGdExvVmUyLXNvUSIvPg0KKyAgICAgICAgPC9jaGlsZHJlbj4NCisgICAgICAgIDxzdHlsZXMgeG1pOnR5cGU9Im5vdGF0aW9uOlRpdGxlU3R5bGUiIHhtaTppZD0iX2EzM3hrcGdDRWVTRnRMb1ZlMi1zb1EiLz4NCisgICAgICAgIDxzdHlsZXMgeG1pOnR5cGU9Im5vdGF0aW9uOlNvcnRpbmdTdHlsZSIgeG1pOmlkPSJfYTMzeGs1Z0NFZVNGdExvVmUyLXNvUSIvPg0KKyAgICAgICAgPHN0eWxlcyB4bWk6dHlwZT0ibm90YXRpb246RmlsdGVyaW5nU3R5bGUiIHhtaTppZD0iX2EzM3hsSmdDRWVTRnRMb1ZlMi1zb1EiLz4NCisgICAgICAgIDxsYXlvdXRDb25zdHJhaW50IHhtaTp0eXBlPSJub3RhdGlvbjpCb3VuZHMiIHhtaTppZD0iX2EzM3hsWmdDRWVTRnRMb1ZlMi1zb1EiLz4NCisgICAgICA8L2NoaWxkcmVuPg0KKyAgICAgIDxjaGlsZHJlbiB4bWk6dHlwZT0ibm90YXRpb246QmFzaWNDb21wYXJ0bWVudCIgeG1pOmlkPSJfYTMzeGxwZ0NFZVNGdExvVmUyLXNvUSIgdmlzaWJsZT0iZmFsc2UiIHR5cGU9IjEwMTkiPg0KKyAgICAgICAgPHN0eWxlcyB4bWk6dHlwZT0ibm90YXRpb246VGl0bGVTdHlsZSIgeG1pOmlkPSJfYTMzeGw1Z0NFZVNGdExvVmUyLXNvUSIvPg0KKyAgICAgICAgPHN0eWxlcyB4bWk6dHlwZT0ibm90YXRpb246U29ydGluZ1N0eWxlIiB4bWk6aWQ9Il9hMzN4bUpnQ0VlU0Z0TG9WZTItc29RIi8+DQorICAgICAgICA8c3R5bGVzIHhtaTp0eXBlPSJub3RhdGlvbjpGaWx0ZXJpbmdTdHlsZSIgeG1pOmlkPSJfYTMzeG1aZ0NFZVNGdExvVmUyLXNvUSIvPg0KKyAgICAgICAgPGxheW91dENvbnN0cmFpbnQgeG1pOnR5cGU9Im5vdGF0aW9uOkJvdW5kcyIgeG1pOmlkPSJfYTMzeG1wZ0NFZVNGdExvVmUyLXNvUSIvPg0KKyAgICAgIDwvY2hpbGRyZW4+DQorICAgICAgPGVsZW1lbnQgeG1pOnR5cGU9InVtbDpTdGVyZW90eXBlIiBocmVmPSJTeXNNTC5wcm9maWxlLnVtbCNTeXNNTC1CbG9ja3MtQmxvY2siLz4NCisgICAgICA8bGF5b3V0Q29uc3RyYWludCB4bWk6dHlwZT0ibm90YXRpb246Qm91bmRzIiB4bWk6aWQ9Il9hMzNLZ1pnQ0VlU0Z0TG9WZTItc29RIiB4PSI4MCIgeT0iMjAwIiBoZWlnaHQ9IjYxIi8+DQorICAgIDwvY2hpbGRyZW4+DQorICAgIDxjaGlsZHJlbiB4bWk6dHlwZT0ibm90YXRpb246U2hhcGUiIHhtaTppZD0iX2E0QmlrSmdDRWVTRnRMb1ZlMi1zb1EiIHR5cGU9IjEwMzEiPg0KKyAgICAgIDxjaGlsZHJlbiB4bWk6dHlwZT0ibm90YXRpb246RGVjb3JhdGlvbk5vZGUiIHhtaTppZD0iX2E0Q0pvSmdDRWVTRnRMb1ZlMi1zb1EiIHR5cGU9IjEwODQiLz4NCisgICAgICA8ZWxlbWVudCB4bWk6dHlwZT0idW1sOkNsYXNzIiBocmVmPSJwYXRobWFwOi8vVU1MX01FVEFNT0RFTFMvVU1MLm1ldGFtb2RlbC51bWwjQ2xhc3MiLz4NCisgICAgICA8bGF5b3V0Q29uc3RyYWludCB4bWk6dHlwZT0ibm90YXRpb246Qm91bmRzIiB4bWk6aWQ9Il9hNEJpa1pnQ0VlU0Z0TG9WZTItc29RIiB4PSI4MCIgeT0iMjAiIHdpZHRoPSIyMDYiIGhlaWdodD0iNDEiLz4NCisgICAgPC9jaGlsZHJlbj4NCisgICAgPGNoaWxkcmVuIHhtaTp0eXBlPSJub3RhdGlvbjpTaGFwZSIgeG1pOmlkPSJfYTRZdThKZ0NFZVNGdExvVmUyLXNvUSIgdHlwZT0iMTAzMSI+DQorICAgICAgPGNoaWxkcmVuIHhtaTp0eXBlPSJub3RhdGlvbjpEZWNvcmF0aW9uTm9kZSIgeG1pOmlkPSJfYTRZdThwZ0NFZVNGdExvVmUyLXNvUSIgdHlwZT0iMTA4NCIvPg0KKyAgICAgIDxlbGVtZW50IHhtaTp0eXBlPSJ1bWw6Q2xhc3MiIGhyZWY9InBhdGhtYXA6Ly9VTUxfTUVUQU1PREVMUy9VTUwubWV0YW1vZGVsLnVtbCNDb25uZWN0b3IiLz4NCisgICAgICA8bGF5b3V0Q29uc3RyYWludCB4bWk6dHlwZT0ibm90YXRpb246Qm91bmRzIiB4bWk6aWQ9Il9hNFl1OFpnQ0VlU0Z0TG9WZTItc29RIiB4PSI5NDAiIHk9IjEwMCIvPg0KKyAgICA8L2NoaWxkcmVuPg0KKyAgICA8Y2hpbGRyZW4geG1pOnR5cGU9Im5vdGF0aW9uOlNoYXBlIiB4bWk6aWQ9Il9hNG1LVUpnQ0VlU0Z0TG9WZTItc29RIiB0eXBlPSIxMDI2Ij4NCisgICAgICA8Y2hpbGRyZW4geG1pOnR5cGU9Im5vdGF0aW9uOkRlY29yYXRpb25Ob2RlIiB4bWk6aWQ9Il9hNG1LVXBnQ0VlU0Z0TG9WZTItc29RIiB0eXBlPSIxMDM0Ii8+DQorICAgICAgPGNoaWxkcmVuIHhtaTp0eXBlPSJub3RhdGlvbjpCYXNpY0NvbXBhcnRtZW50IiB4bWk6aWQ9Il9hNG14WUpnQ0VlU0Z0TG9WZTItc29RIiB2aXNpYmxlPSJmYWxzZSIgdHlwZT0iMTA3MSI+DQorICAgICAgICA8c3R5bGVzIHhtaTp0eXBlPSJub3RhdGlvbjpUaXRsZVN0eWxlIiB4bWk6aWQ9Il9hNG14WVpnQ0VlU0Z0TG9WZTItc29RIi8+DQorICAgICAgICA8c3R5bGVzIHhtaTp0eXBlPSJub3RhdGlvbjpTb3J0aW5nU3R5bGUiIHhtaTppZD0iX2E0bXhZcGdDRWVTRnRMb1ZlMi1zb1EiLz4NCisgICAgICAgIDxzdHlsZXMgeG1pOnR5cGU9Im5vdGF0aW9uOkZpbHRlcmluZ1N0eWxlIiB4bWk6aWQ9Il9hNG14WTVnQ0VlU0Z0TG9WZTItc29RIi8+DQorICAgICAgICA8bGF5b3V0Q29uc3RyYWludCB4bWk6dHlwZT0ibm90YXRpb246Qm91bmRzIiB4bWk6aWQ9Il9hNG14WkpnQ0VlU0Z0TG9WZTItc29RIi8+DQorICAgICAgPC9jaGlsZHJlbj4NCisgICAgICA8Y2hpbGRyZW4geG1pOnR5cGU9Im5vdGF0aW9uOkJhc2ljQ29tcGFydG1lbnQiIHhtaTppZD0iX2E0bXhaWmdDRWVTRnRMb1ZlMi1zb1EiIHZpc2libGU9ImZhbHNlIiB0eXBlPSIxMDE5Ij4NCisgICAgICAgIDxzdHlsZXMgeG1pOnR5cGU9Im5vdGF0aW9uOlRpdGxlU3R5bGUiIHhtaTppZD0iX2E0bXhacGdDRWVTRnRMb1ZlMi1zb1EiLz4NCisgICAgICAgIDxzdHlsZXMgeG1pOnR5cGU9Im5vdGF0aW9uOlNvcnRpbmdTdHlsZSIgeG1pOmlkPSJfYTRteFo1Z0NFZVNGdExvVmUyLXNvUSIvPg0KKyAgICAgICAgPHN0eWxlcyB4bWk6dHlwZT0ibm90YXRpb246RmlsdGVyaW5nU3R5bGUiIHhtaTppZD0iX2E0bXhhSmdDRWVTRnRMb1ZlMi1zb1EiLz4NCisgICAgICAgIDxsYXlvdXRDb25zdHJhaW50IHhtaTp0eXBlPSJub3RhdGlvbjpCb3VuZHMiIHhtaTppZD0iX2E0bXhhWmdDRWVTRnRMb1ZlMi1zb1EiLz4NCisgICAgICA8L2NoaWxkcmVuPg0KKyAgICAgIDxlbGVtZW50IHhtaTp0eXBlPSJ1bWw6U3RlcmVvdHlwZSIgaHJlZj0iU3lzTUwucHJvZmlsZS51bWwjU3lzTUwtQmxvY2tzLURpc3RyaWJ1dGVkUHJvcGVydHkiLz4NCisgICAgICA8bGF5b3V0Q29uc3RyYWludCB4bWk6dHlwZT0ibm90YXRpb246Qm91bmRzIiB4bWk6aWQ9Il9hNG1LVVpnQ0VlU0Z0TG9WZTItc29RIiB4PSIzODAiIHk9IjIwMCIgd2lkdGg9IjEyMSIgaGVpZ2h0PSI2MSIvPg0KKyAgICA8L2NoaWxkcmVuPg0KKyAgICA8Y2hpbGRyZW4geG1pOnR5cGU9Im5vdGF0aW9uOlNoYXBlIiB4bWk6aWQ9Il9hNDJCOEpnQ0VlU0Z0TG9WZTItc29RIiB0eXBlPSIxMDI2Ij4NCisgICAgICA8Y2hpbGRyZW4geG1pOnR5cGU9Im5vdGF0aW9uOkRlY29yYXRpb25Ob2RlIiB4bWk6aWQ9Il9hNDJwQUpnQ0VlU0Z0TG9WZTItc29RIiB0eXBlPSIxMDM0Ii8+DQorICAgICAgPGNoaWxkcmVuIHhtaTp0eXBlPSJub3RhdGlvbjpCYXNpY0NvbXBhcnRtZW50IiB4bWk6aWQ9Il9hNDJwQVpnQ0VlU0Z0TG9WZTItc29RIiB0eXBlPSIxMDcxIj4NCisgICAgICAgIDxjaGlsZHJlbiB4bWk6dHlwZT0ibm90YXRpb246U2hhcGUiIHhtaTppZD0iXzJ3Rk9rSmdDRWVTRnRMb1ZlMi1zb1EiIHR5cGU9IjMwMDIiPg0KKyAgICAgICAgICA8ZWxlbWVudCB4bWk6dHlwZT0idW1sOlByb3BlcnR5IiBocmVmPSJTeXNNTC5wcm9maWxlLnVtbCNTeXNNTC1CbG9ja3MtUGFydGljaXBhbnRQcm9wZXJ0eS1lbmQiLz4NCisgICAgICAgICAgPGxheW91dENvbnN0cmFpbnQgeG1pOnR5cGU9Im5vdGF0aW9uOkxvY2F0aW9uIiB4bWk6aWQ9Il8yd0ZPa1pnQ0VlU0Z0TG9WZTItc29RIi8+DQorICAgICAgICA8L2NoaWxkcmVuPg0KKyAgICAgICAgPHN0eWxlcyB4bWk6dHlwZT0ibm90YXRpb246VGl0bGVTdHlsZSIgeG1pOmlkPSJfYTQycEFwZ0NFZVNGdExvVmUyLXNvUSIvPg0KKyAgICAgICAgPHN0eWxlcyB4bWk6dHlwZT0ibm90YXRpb246U29ydGluZ1N0eWxlIiB4bWk6aWQ9Il9hNDJwQTVnQ0VlU0Z0TG9WZTItc29RIi8+DQorICAgICAgICA8c3R5bGVzIHhtaTp0eXBlPSJub3RhdGlvbjpGaWx0ZXJpbmdTdHlsZSIgeG1pOmlkPSJfYTQycEJKZ0NFZVNGdExvVmUyLXNvUSIvPg0KKyAgICAgICAgPGxheW91dENvbnN0cmFpbnQgeG1pOnR5cGU9Im5vdGF0aW9uOkJvdW5kcyIgeG1pOmlkPSJfYTQycEJaZ0NFZVNGdExvVmUyLXNvUSIvPg0KKyAgICAgIDwvY2hpbGRyZW4+DQorICAgICAgPGNoaWxkcmVuIHhtaTp0eXBlPSJub3RhdGlvbjpCYXNpY0NvbXBhcnRtZW50IiB4bWk6aWQ9Il9hNDJwQnBnQ0VlU0Z0TG9WZTItc29RIiB2aXNpYmxlPSJmYWxzZSIgdHlwZT0iMTAxOSI+DQorICAgICAgICA8c3R5bGVzIHhtaTp0eXBlPSJub3RhdGlvbjpUaXRsZVN0eWxlIiB4bWk6aWQ9Il9hNDJwQjVnQ0VlU0Z0TG9WZTItc29RIi8+DQorICAgICAgICA8c3R5bGVzIHhtaTp0eXBlPSJub3RhdGlvbjpTb3J0aW5nU3R5bGUiIHhtaTppZD0iX2E0MnBDSmdDRWVTRnRMb1ZlMi1zb1EiLz4NCisgICAgICAgIDxzdHlsZXMgeG1pOnR5cGU9Im5vdGF0aW9uOkZpbHRlcmluZ1N0eWxlIiB4bWk6aWQ9Il9hNDJwQ1pnQ0VlU0Z0TG9WZTItc29RIi8+DQorICAgICAgICA8bGF5b3V0Q29uc3RyYWludCB4bWk6dHlwZT0ibm90YXRpb246Qm91bmRzIiB4bWk6aWQ9Il9hNDJwQ3BnQ0VlU0Z0TG9WZTItc29RIi8+DQorICAgICAgPC9jaGlsZHJlbj4NCisgICAgICA8ZWxlbWVudCB4bWk6dHlwZT0idW1sOlN0ZXJlb3R5cGUiIGhyZWY9IlN5c01MLnByb2ZpbGUudW1sI1N5c01MLUJsb2Nrcy1QYXJ0aWNpcGFudFByb3BlcnR5Ii8+DQorICAgICAgPGxheW91dENvbnN0cmFpbnQgeG1pOnR5cGU9Im5vdGF0aW9uOkJvdW5kcyIgeG1pOmlkPSJfYTQyQjhaZ0NFZVNGdExvVmUyLXNvUSIgeD0iNTQwIiB5PSIyMDAiIGhlaWdodD0iNjEiLz4NCisgICAgPC9jaGlsZHJlbj4NCisgICAgPGNoaWxkcmVuIHhtaTp0eXBlPSJub3RhdGlvbjpTaGFwZSIgeG1pOmlkPSJfYTVRNHNKZ0NFZVNGdExvVmUyLXNvUSIgdHlwZT0iMTAzMSI+DQorICAgICAgPGNoaWxkcmVuIHhtaTp0eXBlPSJub3RhdGlvbjpEZWNvcmF0aW9uTm9kZSIgeG1pOmlkPSJfYTVSZndKZ0NFZVNGdExvVmUyLXNvUSIgdHlwZT0iMTA4NCIvPg0KKyAgICAgIDxlbGVtZW50IHhtaTp0eXBlPSJ1bWw6Q2xhc3MiIGhyZWY9InBhdGhtYXA6Ly9VTUxfTUVUQU1PREVMUy9VTUwubWV0YW1vZGVsLnVtbCNDbGFzc2lmaWVyIi8+DQorICAgICAgPGxheW91dENvbnN0cmFpbnQgeG1pOnR5cGU9Im5vdGF0aW9uOkJvdW5kcyIgeG1pOmlkPSJfYTVRNHNaZ0NFZVNGdExvVmUyLXNvUSIgeD0iMTAwMCIgeT0iMTYwIi8+DQorICAgIDwvY2hpbGRyZW4+DQorICAgIDxjaGlsZHJlbiB4bWk6dHlwZT0ibm90YXRpb246U2hhcGUiIHhtaTppZD0iX2E1cDZRSmdDRWVTRnRMb1ZlMi1zb1EiIHR5cGU9IjEwMzEiPg0KKyAgICAgIDxjaGlsZHJlbiB4bWk6dHlwZT0ibm90YXRpb246RGVjb3JhdGlvbk5vZGUiIHhtaTppZD0iX2E1cWhVSmdDRWVTRnRMb1ZlMi1zb1EiIHR5cGU9IjEwODQiLz4NCisgICAgICA8ZWxlbWVudCB4bWk6dHlwZT0idW1sOkNsYXNzIiBocmVmPSJwYXRobWFwOi8vVU1MX01FVEFNT0RFTFMvVU1MLm1ldGFtb2RlbC51bWwjQ29ubmVjdG9yRW5kIi8+DQorICAgICAgPGxheW91dENvbnN0cmFpbnQgeG1pOnR5cGU9Im5vdGF0aW9uOkJvdW5kcyIgeG1pOmlkPSJfYTVwNlFaZ0NFZVNGdExvVmUyLXNvUSIgeD0iMTAzMCIgeT0iMTkwIi8+DQorICAgIDwvY2hpbGRyZW4+DQorICAgIDxjaGlsZHJlbiB4bWk6dHlwZT0ibm90YXRpb246U2hhcGUiIHhtaTppZD0iX2E2QkdvSmdDRWVTRnRMb1ZlMi1zb1EiIHR5cGU9IjEwMzEiPg0KKyAgICAgIDxjaGlsZHJlbiB4bWk6dHlwZT0ibm90YXRpb246RGVjb3JhdGlvbk5vZGUiIHhtaTppZD0iX2E2QnRzSmdDRWVTRnRMb1ZlMi1zb1EiIHR5cGU9IjEwODQiLz4NCisgICAgICA8ZWxlbWVudCB4bWk6dHlwZT0idW1sOkNsYXNzIiBocmVmPSJwYXRobWFwOi8vVU1MX01FVEFNT0RFTFMvVU1MLm1ldGFtb2RlbC51bWwjRGlyZWN0ZWRSZWxhdGlvbnNoaXAiLz4NCisgICAgICA8bGF5b3V0Q29uc3RyYWludCB4bWk6dHlwZT0ibm90YXRpb246Qm91bmRzIiB4bWk6aWQ9Il9hNkJHb1pnQ0VlU0Z0TG9WZTItc29RIiB4PSIxMDYwIiB5PSIyMjAiLz4NCisgICAgPC9jaGlsZHJlbj4NCisgICAgPGNoaWxkcmVuIHhtaTp0eXBlPSJub3RhdGlvbjpTaGFwZSIgeG1pOmlkPSJfYTZiOVlKZ0NFZVNGdExvVmUyLXNvUSIgdHlwZT0iMTAzMSI+DQorICAgICAgPGNoaWxkcmVuIHhtaTp0eXBlPSJub3RhdGlvbjpEZWNvcmF0aW9uTm9kZSIgeG1pOmlkPSJfYTZiOVlwZ0NFZVNGdExvVmUyLXNvUSIgdHlwZT0iMTA4NCIvPg0KKyAgICAgIDxlbGVtZW50IHhtaTp0eXBlPSJ1bWw6Q2xhc3MiIGhyZWY9InBhdGhtYXA6Ly9VTUxfTUVUQU1PREVMUy9VTUwubWV0YW1vZGVsLnVtbCNFbGVtZW50Ii8+DQorICAgICAgPGxheW91dENvbnN0cmFpbnQgeG1pOnR5cGU9Im5vdGF0aW9uOkJvdW5kcyIgeG1pOmlkPSJfYTZiOVlaZ0NFZVNGdExvVmUyLXNvUSIgeD0iMTA5MCIgeT0iMjUwIi8+DQorICAgIDwvY2hpbGRyZW4+DQorICAgIDxjaGlsZHJlbiB4bWk6dHlwZT0ibm90YXRpb246U2hhcGUiIHhtaTppZD0iX0VGMjg0SmdERWVTRnRMb1ZlMi1zb1EiIHR5cGU9IjEwMzEiPg0KKyAgICAgIDxjaGlsZHJlbiB4bWk6dHlwZT0ibm90YXRpb246RGVjb3JhdGlvbk5vZGUiIHhtaTppZD0iX0VGM2o4SmdERWVTRnRMb1ZlMi1zb1EiIHR5cGU9IjEwODQiLz4NCisgICAgICA8ZWxlbWVudCB4bWk6dHlwZT0idW1sOkNsYXNzIiBocmVmPSJwYXRobWFwOi8vVU1MX01FVEFNT0RFTFMvVU1MLm1ldGFtb2RlbC51bWwjUHJvcGVydHkiLz4NCisgICAgICA8bGF5b3V0Q29uc3RyYWludCB4bWk6dHlwZT0ibm90YXRpb246Qm91bmRzIiB4bWk6aWQ9Il9FRjI4NFpnREVlU0Z0TG9WZTItc29RIiB4PSIxMDIwIiB5PSI0MCIvPg0KKyAgICA8L2NoaWxkcmVuPg0KKyAgICA8c3R5bGVzIHhtaTp0eXBlPSJub3RhdGlvbjpTdHJpbmdWYWx1ZVN0eWxlIiB4bWk6aWQ9Il9XQ1dORVpnQ0VlU0Z0TG9WZTItc29RIiBuYW1lPSJkaWFncmFtX2NvbXBhdGliaWxpdHlfdmVyc2lvbiIgc3RyaW5nVmFsdWU9IjEuMC4wIi8+DQorICAgIDxzdHlsZXMgeG1pOnR5cGU9Im5vdGF0aW9uOkRpYWdyYW1TdHlsZSIgeG1pOmlkPSJfV0NXTkVwZ0NFZVNGdExvVmUyLXNvUSIvPg0KKyAgICA8c3R5bGVzIHhtaTp0eXBlPSJzdHlsZTpQYXB5cnVzVmlld1N0eWxlIiB4bWk6aWQ9Il9XQ1dORTVnQ0VlU0Z0TG9WZTItc29RIj4NCisgICAgICA8b3duZXIgeG1pOnR5cGU9InVtbDpQYWNrYWdlIiBocmVmPSJTeXNNTC5wcm9maWxlLnVtbCNTeXNNTC1CbG9ja3MiLz4NCisgICAgPC9zdHlsZXM+DQorICAgIDxlbGVtZW50IHhtaTp0eXBlPSJ1bWw6UGFja2FnZSIgaHJlZj0iU3lzTUwucHJvZmlsZS51bWwjU3lzTUwtQmxvY2tzIi8+DQorICAgIDxlZGdlcyB4bWk6dHlwZT0ibm90YXRpb246Q29ubmVjdG9yIiB4bWk6aWQ9Il9ZeHE2RUpnQ0VlU0Z0TG9WZTItc29RIiB0eXBlPSIxMDEzIiBzb3VyY2U9Il9ZeFRHb0pnQ0VlU0Z0TG9WZTItc29RIiB0YXJnZXQ9Il9ZeGhKRUpnQ0VlU0Z0TG9WZTItc29RIj4NCisgICAgICA8c3R5bGVzIHhtaTp0eXBlPSJub3RhdGlvbjpGb250U3R5bGUiIHhtaTppZD0iX1l4cTZFWmdDRWVTRnRMb1ZlMi1zb1EiLz4NCisgICAgICA8ZWxlbWVudCB4bWk6dHlwZT0idW1sOkV4dGVuc2lvbiIgaHJlZj0iU3lzTUwucHJvZmlsZS51bWwjU3lzTUwtQmxvY2tzLUVfZXh0ZW5zaW9uX0Nvbm5lY3RvclByb3BlcnR5X2Jhc2VfUHJvcGVydHkiLz4NCisgICAgICA8YmVuZHBvaW50cyB4bWk6dHlwZT0ibm90YXRpb246UmVsYXRpdmVCZW5kcG9pbnRzIiB4bWk6aWQ9Il9ZeHE2RXBnQ0VlU0Z0TG9WZTItc29RIiBwb2ludHM9IlswLCAwLCAwLCAwXSRbMCwgMCwgMCwgMF0iLz4NCisgICAgICA8c291cmNlQW5jaG9yIHhtaTp0eXBlPSJub3RhdGlvbjpJZGVudGl0eUFuY2hvciIgeG1pOmlkPSJfcTdlWUVKZ0NFZVNGdExvVmUyLXNvUSIgaWQ9IigwLjE3ODIxNzgyMTc4MjE3ODIsMC4wKSIvPg0KKyAgICAgIDx0YXJnZXRBbmNob3IgeG1pOnR5cGU9Im5vdGF0aW9uOklkZW50aXR5QW5jaG9yIiB4bWk6aWQ9Il9xN2VZRVpnQ0VlU0Z0TG9WZTItc29RIiBpZD0iKDAuODA3NjAwOTUwMTE4NzY0OSwwLjgpIi8+DQorICAgIDwvZWRnZXM+DQorICAgIDxlZGdlcyB4bWk6dHlwZT0ibm90YXRpb246Q29ubmVjdG9yIiB4bWk6aWQ9Il9hNEkzVUpnQ0VlU0Z0TG9WZTItc29RIiB0eXBlPSIxMDEzIiBzb3VyY2U9Il9hMzNLZ0pnQ0VlU0Z0TG9WZTItc29RIiB0YXJnZXQ9Il9hNEJpa0pnQ0VlU0Z0TG9WZTItc29RIj4NCisgICAgICA8c3R5bGVzIHhtaTp0eXBlPSJub3RhdGlvbjpGb250U3R5bGUiIHhtaTppZD0iX2E0SmVZSmdDRWVTRnRMb1ZlMi1zb1EiLz4NCisgICAgICA8ZWxlbWVudCB4bWk6dHlwZT0idW1sOkV4dGVuc2lvbiIgaHJlZj0iU3lzTUwucHJvZmlsZS51bWwjU3lzTUwtQmxvY2tzLUVfZXh0ZW5zaW9uX0Jsb2NrX2Jhc2VfQ2xhc3MiLz4NCisgICAgICA8YmVuZHBvaW50cyB4bWk6dHlwZT0ibm90YXRpb246UmVsYXRpdmVCZW5kcG9pbnRzIiB4bWk6aWQ9Il9hNEplWVpnQ0VlU0Z0TG9WZTItc29RIiBwb2ludHM9IlswLCAwLCAwLCAwXSRbMCwgMCwgMCwgMF0iLz4NCisgICAgICA8c291cmNlQW5jaG9yIHhtaTp0eXBlPSJub3RhdGlvbjpJZGVudGl0eUFuY2hvciIgeG1pOmlkPSJfY1pJd0FKZ0NFZVNGdExvVmUyLXNvUSIgaWQ9IigwLjUwMjUxMjU2MjgxNDA3MDMsMC4wKSIvPg0KKyAgICAgIDx0YXJnZXRBbmNob3IgeG1pOnR5cGU9Im5vdGF0aW9uOklkZW50aXR5QW5jaG9yIiB4bWk6aWQ9Il9jWkpYRUpnQ0VlU0Z0TG9WZTItc29RIiBpZD0iKDAuNDQ2NjAxOTQxNzQ3NTcyODQsMS4wKSIvPg0KKyAgICA8L2VkZ2VzPg0KKyAgICA8ZWRnZXMgeG1pOnR5cGU9Im5vdGF0aW9uOkNvbm5lY3RvciIgeG1pOmlkPSJfYTR3aVlKZ0NFZVNGdExvVmUyLXNvUSIgdHlwZT0iMTAxMyIgc291cmNlPSJfYTRtS1VKZ0NFZVNGdExvVmUyLXNvUSIgdGFyZ2V0PSJfWXhoSkVKZ0NFZVNGdExvVmUyLXNvUSI+DQorICAgICAgPHN0eWxlcyB4bWk6dHlwZT0ibm90YXRpb246Rm9udFN0eWxlIiB4bWk6aWQ9Il9hNHdpWVpnQ0VlU0Z0TG9WZTItc29RIi8+DQorICAgICAgPGVsZW1lbnQgeG1pOnR5cGU9InVtbDpFeHRlbnNpb24iIGhyZWY9IlN5c01MLnByb2ZpbGUudW1sI1N5c01MLUJsb2Nrcy1FX2V4dGVuc2lvbl9EaXN0cmlidXRlZFByb3BlcnR5X2Jhc2VfUHJvcGVydHkiLz4NCisgICAgICA8YmVuZHBvaW50cyB4bWk6dHlwZT0ibm90YXRpb246UmVsYXRpdmVCZW5kcG9pbnRzIiB4bWk6aWQ9Il9hNHdpWXBnQ0VlU0Z0TG9WZTItc29RIiBwb2ludHM9IlswLCAwLCAtNjAzLCAtNjJdJFs1NTMsIDU2LCAtNTAsIC02XSIvPg0KKyAgICAgIDxzb3VyY2VBbmNob3IgeG1pOnR5cGU9Im5vdGF0aW9uOklkZW50aXR5QW5jaG9yIiB4bWk6aWQ9Il9xU2lJd0pnQ0VlU0Z0TG9WZTItc29RIiBpZD0iKDAuNTUzMzk4MDU4MjUyNDI3MiwwLjApIi8+DQorICAgICAgPHRhcmdldEFuY2hvciB4bWk6dHlwZT0ibm90YXRpb246SWRlbnRpdHlBbmNob3IiIHhtaTppZD0iX3FTaUl3WmdDRWVTRnRMb1ZlMi1zb1EiIGlkPSIoMC4wOTUwMTE4NzY0ODQ1NjA1NywwLjgpIi8+DQorICAgIDwvZWRnZXM+DQorICAgIDxlZGdlcyB4bWk6dHlwZT0ibm90YXRpb246Q29ubmVjdG9yIiB4bWk6aWQ9Il9hNF95OEpnQ0VlU0Z0TG9WZTItc29RIiB0eXBlPSIxMDEzIiBzb3VyY2U9Il9hNDJCOEpnQ0VlU0Z0TG9WZTItc29RIiB0YXJnZXQ9Il9ZeGhKRUpnQ0VlU0Z0TG9WZTItc29RIj4NCisgICAgICA8c3R5bGVzIHhtaTp0eXBlPSJub3RhdGlvbjpGb250U3R5bGUiIHhtaTppZD0iX2E0X3k4WmdDRWVTRnRMb1ZlMi1zb1EiLz4NCisgICAgICA8ZWxlbWVudCB4bWk6dHlwZT0idW1sOkV4dGVuc2lvbiIgaHJlZj0iU3lzTUwucHJvZmlsZS51bWwjU3lzTUwtQmxvY2tzLUVfZXh0ZW5zaW9uX1BhcnRpY2lwYW50UHJvcGVydHlfYmFzZV9Qcm9wZXJ0eSIvPg0KKyAgICAgIDxiZW5kcG9pbnRzIHhtaTp0eXBlPSJub3RhdGlvbjpSZWxhdGl2ZUJlbmRwb2ludHMiIHhtaTppZD0iX2E0X3k4cGdDRWVTRnRMb1ZlMi1zb1EiIHBvaW50cz0iWzAsIDAsIC02MDMsIC02Ml0kWzU1MywgNTYsIC01MCwgLTZdIi8+DQorICAgICAgPHNvdXJjZUFuY2hvciB4bWk6dHlwZT0ibm90YXRpb246SWRlbnRpdHlBbmNob3IiIHhtaTppZD0iX3E3Z05RSmdDRWVTRnRMb1ZlMi1zb1EiIGlkPSIoMC40NTgwMTUyNjcxNzU1NzI1LDAuMCkiLz4NCisgICAgICA8dGFyZ2V0QW5jaG9yIHhtaTp0eXBlPSJub3RhdGlvbjpJZGVudGl0eUFuY2hvciIgeG1pOmlkPSJfcTdnMFVKZ0NFZVNGdExvVmUyLXNvUSIgaWQ9IigwLjQ3NTA1OTM4MjQyMjgwMjgsMC44KSIvPg0KKyAgICA8L2VkZ2VzPg0KKyAgPC9ub3RhdGlvbjpEaWFncmFtPg0KKyAgPG5vdGF0aW9uOkRpYWdyYW0geG1pOmlkPSJfY2ltWWtKZ0RFZVNGdExvVmUyLXNvUSIgdHlwZT0iUGFweXJ1c1VNTFByb2ZpbGVEaWFncmFtIiBuYW1lPSJWYWx1ZVR5cGUiIG1lYXN1cmVtZW50VW5pdD0iUGl4ZWwiPg0KKyAgICA8Y2hpbGRyZW4geG1pOnR5cGU9Im5vdGF0aW9uOlNoYXBlIiB4bWk6aWQ9Il9lNThxY0pnREVlU0Z0TG9WZTItc29RIiB0eXBlPSIxMDI2Ij4NCisgICAgICA8Y2hpbGRyZW4geG1pOnR5cGU9Im5vdGF0aW9uOkRlY29yYXRpb25Ob2RlIiB4bWk6aWQ9Il9lNTlSZ0pnREVlU0Z0TG9WZTItc29RIiB0eXBlPSIxMDM0Ii8+DQorICAgICAgPGNoaWxkcmVuIHhtaTp0eXBlPSJub3RhdGlvbjpCYXNpY0NvbXBhcnRtZW50IiB4bWk6aWQ9Il9lNTlSZ1pnREVlU0Z0TG9WZTItc29RIiB0eXBlPSIxMDcxIj4NCisgICAgICAgIDxzdHlsZXMgeG1pOnR5cGU9Im5vdGF0aW9uOlRpdGxlU3R5bGUiIHhtaTppZD0iX2U1OVJncGdERWVTRnRMb1ZlMi1zb1EiLz4NCisgICAgICAgIDxzdHlsZXMgeG1pOnR5cGU9Im5vdGF0aW9uOlNvcnRpbmdTdHlsZSIgeG1pOmlkPSJfZTU5Umc1Z0RFZVNGdExvVmUyLXNvUSIvPg0KKyAgICAgICAgPHN0eWxlcyB4bWk6dHlwZT0ibm90YXRpb246RmlsdGVyaW5nU3R5bGUiIHhtaTppZD0iX2U1OVJoSmdERWVTRnRMb1ZlMi1zb1EiLz4NCisgICAgICAgIDxsYXlvdXRDb25zdHJhaW50IHhtaTp0eXBlPSJub3RhdGlvbjpCb3VuZHMiIHhtaTppZD0iX2U1OVJoWmdERWVTRnRMb1ZlMi1zb1EiLz4NCisgICAgICA8L2NoaWxkcmVuPg0KKyAgICAgIDxjaGlsZHJlbiB4bWk6dHlwZT0ibm90YXRpb246QmFzaWNDb21wYXJ0bWVudCIgeG1pOmlkPSJfZTU5NGtKZ0RFZVNGdExvVmUyLXNvUSIgdHlwZT0iMTAxOSI+DQorICAgICAgICA8c3R5bGVzIHhtaTp0eXBlPSJub3RhdGlvbjpUaXRsZVN0eWxlIiB4bWk6aWQ9Il9lNTk0a1pnREVlU0Z0TG9WZTItc29RIi8+DQorICAgICAgICA8c3R5bGVzIHhtaTp0eXBlPSJub3RhdGlvbjpTb3J0aW5nU3R5bGUiIHhtaTppZD0iX2U1OTRrcGdERWVTRnRMb1ZlMi1zb1EiLz4NCisgICAgICAgIDxzdHlsZXMgeG1pOnR5cGU9Im5vdGF0aW9uOkZpbHRlcmluZ1N0eWxlIiB4bWk6aWQ9Il9lNTk0azVnREVlU0Z0TG9WZTItc29RIi8+DQorICAgICAgICA8bGF5b3V0Q29uc3RyYWludCB4bWk6dHlwZT0ibm90YXRpb246Qm91bmRzIiB4bWk6aWQ9Il9lNTk0bEpnREVlU0Z0TG9WZTItc29RIi8+DQorICAgICAgPC9jaGlsZHJlbj4NCisgICAgICA8ZWxlbWVudCB4bWk6dHlwZT0idW1sOlN0ZXJlb3R5cGUiIGhyZWY9IlN5c01MLnByb2ZpbGUudW1sI1N5c01MLUJsb2Nrcy1WYWx1ZVR5cGUiLz4NCisgICAgICA8bGF5b3V0Q29uc3RyYWludCB4bWk6dHlwZT0ibm90YXRpb246Qm91bmRzIiB4bWk6aWQ9Il9lNThxY1pnREVlU0Z0TG9WZTItc29RIiB4PSIyNjAiIHk9IjE0MCIgaGVpZ2h0PSIyODEiLz4NCisgICAgPC9jaGlsZHJlbj4NCisgICAgPGNoaWxkcmVuIHhtaTp0eXBlPSJub3RhdGlvbjpTaGFwZSIgeG1pOmlkPSJfZnNydThKZ0RFZVNGdExvVmUyLXNvUSIgdHlwZT0iMTAzMSI+DQorICAgICAgPGNoaWxkcmVuIHhtaTp0eXBlPSJub3RhdGlvbjpEZWNvcmF0aW9uTm9kZSIgeG1pOmlkPSJfZnNydThwZ0RFZVNGdExvVmUyLXNvUSIgdHlwZT0iMTA4NCIvPg0KKyAgICAgIDxlbGVtZW50IHhtaTp0eXBlPSJ1bWw6Q2xhc3MiIGhyZWY9InBhdGhtYXA6Ly9VTUxfTUVUQU1PREVMUy9VTUwubWV0YW1vZGVsLnVtbCNEYXRhVHlwZSIvPg0KKyAgICAgIDxsYXlvdXRDb25zdHJhaW50IHhtaTp0eXBlPSJub3RhdGlvbjpCb3VuZHMiIHhtaTppZD0iX2ZzcnU4WmdERWVTRnRMb1ZlMi1zb1EiIHg9IjI2MCIgeT0iMjAiLz4NCisgICAgPC9jaGlsZHJlbj4NCisgICAgPGNoaWxkcmVuIHhtaTp0eXBlPSJub3RhdGlvbjpTaGFwZSIgeG1pOmlkPSJfalluMU1KZ0RFZVNGdExvVmUyLXNvUSIgdHlwZT0iMTAzMSI+DQorICAgICAgPGNoaWxkcmVuIHhtaTp0eXBlPSJub3RhdGlvbjpEZWNvcmF0aW9uTm9kZSIgeG1pOmlkPSJfall2SjhKZ0RFZVNGdExvVmUyLXNvUSIgdHlwZT0iMTA4NCIvPg0KKyAgICAgIDxlbGVtZW50IHhtaTp0eXBlPSJ1bWw6Q2xhc3MiIGhyZWY9InBhdGhtYXA6Ly9VTUxfTUVUQU1PREVMUy9VTUwubWV0YW1vZGVsLnVtbCNJbnN0YW5jZVNwZWNpZmljYXRpb24iLz4NCisgICAgICA8bGF5b3V0Q29uc3RyYWludCB4bWk6dHlwZT0ibm90YXRpb246Qm91bmRzIiB4bWk6aWQ9Il9qWW4xTVpnREVlU0Z0TG9WZTItc29RIiB4PSI0ODAiIHk9IjI0MCIvPg0KKyAgICA8L2NoaWxkcmVuPg0KKyAgICA8c3R5bGVzIHhtaTp0eXBlPSJub3RhdGlvbjpTdHJpbmdWYWx1ZVN0eWxlIiB4bWk6aWQ9Il9jaW1Za1pnREVlU0Z0TG9WZTItc29RIiBuYW1lPSJkaWFncmFtX2NvbXBhdGliaWxpdHlfdmVyc2lvbiIgc3RyaW5nVmFsdWU9IjEuMC4wIi8+DQorICAgIDxzdHlsZXMgeG1pOnR5cGU9Im5vdGF0aW9uOkRpYWdyYW1TdHlsZSIgeG1pOmlkPSJfY2ltWWtwZ0RFZVNGdExvVmUyLXNvUSIvPg0KKyAgICA8c3R5bGVzIHhtaTp0eXBlPSJzdHlsZTpQYXB5cnVzVmlld1N0eWxlIiB4bWk6aWQ9Il9jaW1ZazVnREVlU0Z0TG9WZTItc29RIj4NCisgICAgICA8b3duZXIgeG1pOnR5cGU9InVtbDpQYWNrYWdlIiBocmVmPSJTeXNNTC5wcm9maWxlLnVtbCNTeXNNTC1CbG9ja3MiLz4NCisgICAgPC9zdHlsZXM+DQorICAgIDxlbGVtZW50IHhtaTp0eXBlPSJ1bWw6UGFja2FnZSIgaHJlZj0iU3lzTUwucHJvZmlsZS51bWwjU3lzTUwtQmxvY2tzIi8+DQorICAgIDxlZGdlcyB4bWk6dHlwZT0ibm90YXRpb246Q29ubmVjdG9yIiB4bWk6aWQ9Il9mczBSMEpnREVlU0Z0TG9WZTItc29RIiB0eXBlPSIxMDEzIiBzb3VyY2U9Il9lNThxY0pnREVlU0Z0TG9WZTItc29RIiB0YXJnZXQ9Il9mc3J1OEpnREVlU0Z0TG9WZTItc29RIj4NCisgICAgICA8c3R5bGVzIHhtaTp0eXBlPSJub3RhdGlvbjpGb250U3R5bGUiIHhtaTppZD0iX2ZzMFIwWmdERWVTRnRMb1ZlMi1zb1EiLz4NCisgICAgICA8ZWxlbWVudCB4bWk6dHlwZT0idW1sOkV4dGVuc2lvbiIgaHJlZj0iU3lzTUwucHJvZmlsZS51bWwjU3lzTUwtQmxvY2tzLUVfZXh0ZW5zaW9uX1ZhbHVlVHlwZV9iYXNlX0RhdGFUeXBlIi8+DQorICAgICAgPGJlbmRwb2ludHMgeG1pOnR5cGU9Im5vdGF0aW9uOlJlbGF0aXZlQmVuZHBvaW50cyIgeG1pOmlkPSJfZnMwUjBwZ0RFZVNGdExvVmUyLXNvUSIgcG9pbnRzPSJbLTUwLCAtNTAsIDI5MCwgMjg1XSRbLTM0MCwgLTMzNSwgMCwgMF0iLz4NCisgICAgICA8c291cmNlQW5jaG9yIHhtaTp0eXBlPSJub3RhdGlvbjpJZGVudGl0eUFuY2hvciIgeG1pOmlkPSJfZ0NDNjhKZ0RFZVNGdExvVmUyLXNvUSIgaWQ9IigwLjUyLDAuMCkiLz4NCisgICAgICA8dGFyZ2V0QW5jaG9yIHhtaTp0eXBlPSJub3RhdGlvbjpJZGVudGl0eUFuY2hvciIgeG1pOmlkPSJfZ0NDNjhaZ0RFZVNGdExvVmUyLXNvUSIgaWQ9IigwLjUyLDEuMCkiLz4NCisgICAgPC9lZGdlcz4NCisgICAgPGVkZ2VzIHhtaTp0eXBlPSJub3RhdGlvbjpDb25uZWN0b3IiIHhtaTppZD0iX2paQmQwSmdERWVTRnRMb1ZlMi1zb1EiIHR5cGU9IjQwMDEiIHNvdXJjZT0iX2U1OHFjSmdERWVTRnRMb1ZlMi1zb1EiIHRhcmdldD0iX2pZbjFNSmdERWVTRnRMb1ZlMi1zb1EiIHJvdXRpbmc9IlJlY3RpbGluZWFyIj4NCisgICAgICA8Y2hpbGRyZW4geG1pOnR5cGU9Im5vdGF0aW9uOkRlY29yYXRpb25Ob2RlIiB4bWk6aWQ9Il9qWkJkMDVnREVlU0Z0TG9WZTItc29RIiB2aXNpYmxlPSJmYWxzZSIgdHlwZT0iNjAwMSI+DQorICAgICAgICA8bGF5b3V0Q29uc3RyYWludCB4bWk6dHlwZT0ibm90YXRpb246TG9jYXRpb24iIHhtaTppZD0iX2paQmQxSmdERWVTRnRMb1ZlMi1zb1EiIHk9IjYwIi8+DQorICAgICAgPC9jaGlsZHJlbj4NCisgICAgICA8Y2hpbGRyZW4geG1pOnR5cGU9Im5vdGF0aW9uOkRlY29yYXRpb25Ob2RlIiB4bWk6aWQ9Il9qWkNFNEpnREVlU0Z0TG9WZTItc29RIiB2aXNpYmxlPSJmYWxzZSIgdHlwZT0iNjAwMiI+DQorICAgICAgICA8bGF5b3V0Q29uc3RyYWludCB4bWk6dHlwZT0ibm90YXRpb246TG9jYXRpb24iIHhtaTppZD0iX2paQ0U0WmdERWVTRnRMb1ZlMi1zb1EiIHk9IjIwIi8+DQorICAgICAgPC9jaGlsZHJlbj4NCisgICAgICA8Y2hpbGRyZW4geG1pOnR5cGU9Im5vdGF0aW9uOkRlY29yYXRpb25Ob2RlIiB4bWk6aWQ9Il9qWkNyOEpnREVlU0Z0TG9WZTItc29RIiB0eXBlPSI2MDAzIj4NCisgICAgICAgIDxsYXlvdXRDb25zdHJhaW50IHhtaTp0eXBlPSJub3RhdGlvbjpMb2NhdGlvbiIgeG1pOmlkPSJfalpDcjhaZ0RFZVNGdExvVmUyLXNvUSIgeT0iMjAiLz4NCisgICAgICA8L2NoaWxkcmVuPg0KKyAgICAgIDxjaGlsZHJlbiB4bWk6dHlwZT0ibm90YXRpb246RGVjb3JhdGlvbk5vZGUiIHhtaTppZD0iX2paQ3I4cGdERWVTRnRMb1ZlMi1zb1EiIHZpc2libGU9ImZhbHNlIiB0eXBlPSI2MDA1Ij4NCisgICAgICAgIDxsYXlvdXRDb25zdHJhaW50IHhtaTp0eXBlPSJub3RhdGlvbjpMb2NhdGlvbiIgeG1pOmlkPSJfalpDcjg1Z0RFZVNGdExvVmUyLXNvUSIgeT0iLTIwIi8+DQorICAgICAgPC9jaGlsZHJlbj4NCisgICAgICA8Y2hpbGRyZW4geG1pOnR5cGU9Im5vdGF0aW9uOkRlY29yYXRpb25Ob2RlIiB4bWk6aWQ9Il9qWkRUQUpnREVlU0Z0TG9WZTItc29RIiB0eXBlPSI2MDMzIj4NCisgICAgICAgIDxlQW5ub3RhdGlvbnMgeG1pOnR5cGU9ImVjb3JlOkVBbm5vdGF0aW9uIiB4bWk6aWQ9Il96eG9yQUpnREVlU0Z0TG9WZTItc29RIiBzb3VyY2U9IlBhcHlydXNDU1NGb3JjZVZhbHVlIj4NCisgICAgICAgICAgPGRldGFpbHMgeG1pOnR5cGU9ImVjb3JlOkVTdHJpbmdUb1N0cmluZ01hcEVudHJ5IiB4bWk6aWQ9Il96eHBTRUpnREVlU0Z0TG9WZTItc29RIiBrZXk9InZpc2libGUiIHZhbHVlPSJ0cnVlIi8+DQorICAgICAgICA8L2VBbm5vdGF0aW9ucz4NCisgICAgICAgIDxsYXlvdXRDb25zdHJhaW50IHhtaTp0eXBlPSJub3RhdGlvbjpMb2NhdGlvbiIgeG1pOmlkPSJfalpEVEFaZ0RFZVNGdExvVmUyLXNvUSIgeT0iMjAiLz4NCisgICAgICA8L2NoaWxkcmVuPg0KKyAgICAgIDxjaGlsZHJlbiB4bWk6dHlwZT0ibm90YXRpb246RGVjb3JhdGlvbk5vZGUiIHhtaTppZD0iX2paRDZFSmdERWVTRnRMb1ZlMi1zb1EiIHR5cGU9IjYwMzQiPg0KKyAgICAgICAgPGxheW91dENvbnN0cmFpbnQgeG1pOnR5cGU9Im5vdGF0aW9uOkxvY2F0aW9uIiB4bWk6aWQ9Il9qWkQ2RVpnREVlU0Z0TG9WZTItc29RIiB4PSIyMSIgeT0iLTEzIi8+DQorICAgICAgPC9jaGlsZHJlbj4NCisgICAgICA8c3R5bGVzIHhtaTp0eXBlPSJub3RhdGlvbjpGb250U3R5bGUiIHhtaTppZD0iX2paQmQwWmdERWVTRnRMb1ZlMi1zb1EiLz4NCisgICAgICA8ZWxlbWVudCB4bWk6dHlwZT0idW1sOkFzc29jaWF0aW9uIiBocmVmPSJTeXNNTC5wcm9maWxlLnVtbCNTeXNNTC1CbG9ja3MtQV92YWx1ZVR5cGVfdW5pdCIvPg0KKyAgICAgIDxiZW5kcG9pbnRzIHhtaTp0eXBlPSJub3RhdGlvbjpSZWxhdGl2ZUJlbmRwb2ludHMiIHhtaTppZD0iX2paQmQwcGdERWVTRnRMb1ZlMi1zb1EiIHBvaW50cz0iWzAsIDMyLCAtMTgwLCA0MF0kWzE3NiwgMzIsIC00LCA0MF0kWzE3NiwgMiwgLTQsIDEwXSIvPg0KKyAgICAgIDxzb3VyY2VBbmNob3IgeG1pOnR5cGU9Im5vdGF0aW9uOklkZW50aXR5QW5jaG9yIiB4bWk6aWQ9Il9rUjE4TUpnREVlU0Z0TG9WZTItc29RIiBpZD0iKDEuMCwwLjUyNjY5MDM5MTQ1OTA3NDcpIi8+DQorICAgICAgPHRhcmdldEFuY2hvciB4bWk6dHlwZT0ibm90YXRpb246SWRlbnRpdHlBbmNob3IiIHhtaTppZD0iX2tSMThNWmdERWVTRnRMb1ZlMi1zb1EiIGlkPSIoMC41MzU3MTQyODU3MTQyODU3LDAuOCkiLz4NCisgICAgPC9lZGdlcz4NCisgICAgPGVkZ2VzIHhtaTp0eXBlPSJub3RhdGlvbjpDb25uZWN0b3IiIHhtaTppZD0iX2p5cUYwSmdERWVTRnRMb1ZlMi1zb1EiIHR5cGU9IjQwMDEiIHNvdXJjZT0iX2U1OHFjSmdERWVTRnRMb1ZlMi1zb1EiIHRhcmdldD0iX2pZbjFNSmdERWVTRnRMb1ZlMi1zb1EiIHJvdXRpbmc9IlJlY3RpbGluZWFyIj4NCisgICAgICA8Y2hpbGRyZW4geG1pOnR5cGU9Im5vdGF0aW9uOkRlY29yYXRpb25Ob2RlIiB4bWk6aWQ9Il9qeXFzNEpnREVlU0Z0TG9WZTItc29RIiB2aXNpYmxlPSJmYWxzZSIgdHlwZT0iNjAwMSI+DQorICAgICAgICA8bGF5b3V0Q29uc3RyYWludCB4bWk6dHlwZT0ibm90YXRpb246TG9jYXRpb24iIHhtaTppZD0iX2p5clQ4SmdERWVTRnRMb1ZlMi1zb1EiIHk9IjYwIi8+DQorICAgICAgPC9jaGlsZHJlbj4NCisgICAgICA8Y2hpbGRyZW4geG1pOnR5cGU9Im5vdGF0aW9uOkRlY29yYXRpb25Ob2RlIiB4bWk6aWQ9Il9qeXJUOFpnREVlU0Z0TG9WZTItc29RIiB2aXNpYmxlPSJmYWxzZSIgdHlwZT0iNjAwMiI+DQorICAgICAgICA8bGF5b3V0Q29uc3RyYWludCB4bWk6dHlwZT0ibm90YXRpb246TG9jYXRpb24iIHhtaTppZD0iX2p5cjdBSmdERWVTRnRMb1ZlMi1zb1EiIHg9IjkwIiB5PSItMzMiLz4NCisgICAgICA8L2NoaWxkcmVuPg0KKyAgICAgIDxjaGlsZHJlbiB4bWk6dHlwZT0ibm90YXRpb246RGVjb3JhdGlvbk5vZGUiIHhtaTppZD0iX2p5cjdBWmdERWVTRnRMb1ZlMi1zb1EiIHR5cGU9IjYwMDMiPg0KKyAgICAgICAgPGxheW91dENvbnN0cmFpbnQgeG1pOnR5cGU9Im5vdGF0aW9uOkxvY2F0aW9uIiB4bWk6aWQ9Il9qeXI3QXBnREVlU0Z0TG9WZTItc29RIiB4PSItMTciIHk9Ii02MSIvPg0KKyAgICAgIDwvY2hpbGRyZW4+DQorICAgICAgPGNoaWxkcmVuIHhtaTp0eXBlPSJub3RhdGlvbjpEZWNvcmF0aW9uTm9kZSIgeG1pOmlkPSJfanlzaUVKZ0RFZVNGdExvVmUyLXNvUSIgdmlzaWJsZT0iZmFsc2UiIHR5cGU9IjYwMDUiPg0KKyAgICAgICAgPGxheW91dENvbnN0cmFpbnQgeG1pOnR5cGU9Im5vdGF0aW9uOkxvY2F0aW9uIiB4bWk6aWQ9Il9qeXNpRVpnREVlU0Z0TG9WZTItc29RIiB5PSItMjAiLz4NCisgICAgICA8L2NoaWxkcmVuPg0KKyAgICAgIDxjaGlsZHJlbiB4bWk6dHlwZT0ibm90YXRpb246RGVjb3JhdGlvbk5vZGUiIHhtaTppZD0iX2p5dEpJSmdERWVTRnRMb1ZlMi1zb1EiIHR5cGU9IjYwMzMiPg0KKyAgICAgICAgPGVBbm5vdGF0aW9ucyB4bWk6dHlwZT0iZWNvcmU6RUFubm90YXRpb24iIHhtaTppZD0iXzF1QVJFSmdERWVTRnRMb1ZlMi1zb1EiIHNvdXJjZT0iUGFweXJ1c0NTU0ZvcmNlVmFsdWUiPg0KKyAgICAgICAgICA8ZGV0YWlscyB4bWk6dHlwZT0iZWNvcmU6RVN0cmluZ1RvU3RyaW5nTWFwRW50cnkiIHhtaTppZD0iXzF1QVJFWmdERWVTRnRMb1ZlMi1zb1EiIGtleT0idmlzaWJsZSIgdmFsdWU9InRydWUiLz4NCisgICAgICAgIDwvZUFubm90YXRpb25zPg0KKyAgICAgICAgPGxheW91dENvbnN0cmFpbnQgeG1pOnR5cGU9Im5vdGF0aW9uOkxvY2F0aW9uIiB4bWk6aWQ9Il9qeXRKSVpnREVlU0Z0TG9WZTItc29RIiB5PSIyMCIvPg0KKyAgICAgIDwvY2hpbGRyZW4+DQorICAgICAgPGNoaWxkcmVuIHhtaTp0eXBlPSJub3RhdGlvbjpEZWNvcmF0aW9uTm9kZSIgeG1pOmlkPSJfanl0d01KZ0RFZVNGdExvVmUyLXNvUSIgdHlwZT0iNjAzNCI+DQorICAgICAgICA8bGF5b3V0Q29uc3RyYWludCB4bWk6dHlwZT0ibm90YXRpb246TG9jYXRpb24iIHhtaTppZD0iX2p5dHdNWmdERWVTRnRMb1ZlMi1zb1EiIHk9Ii0yMCIvPg0KKyAgICAgIDwvY2hpbGRyZW4+DQorICAgICAgPHN0eWxlcyB4bWk6dHlwZT0ibm90YXRpb246Rm9udFN0eWxlIiB4bWk6aWQ9Il9qeXFGMFpnREVlU0Z0TG9WZTItc29RIi8+DQorICAgICAgPGVsZW1lbnQgeG1pOnR5cGU9InVtbDpBc3NvY2lhdGlvbiIgaHJlZj0iU3lzTUwucHJvZmlsZS51bWwjU3lzTUwtQmxvY2tzLUFfdmFsdWVUeXBlX3F1YW50aXR5S2luZCIvPg0KKyAgICAgIDxiZW5kcG9pbnRzIHhtaTp0eXBlPSJub3RhdGlvbjpSZWxhdGl2ZUJlbmRwb2ludHMiIHhtaTppZD0iX2p5cUYwcGdERWVTRnRMb1ZlMi1zb1EiIHBvaW50cz0iWzAsIC0xMDgsIC0xMjAsIC04MV0kWzE4MCwgLTEwOCwgNjAsIC04MV0kWzE4MCwgLTQ4LCA2MCwgLTIxXSIvPg0KKyAgICAgIDxzb3VyY2VBbmNob3IgeG1pOnR5cGU9Im5vdGF0aW9uOklkZW50aXR5QW5jaG9yIiB4bWk6aWQ9Il9rUjFWSUpnREVlU0Z0TG9WZTItc29RIiBpZD0iKDEuMCwwLjUyNjY5MDM5MTQ1OTA3NDcpIi8+DQorICAgICAgPHRhcmdldEFuY2hvciB4bWk6dHlwZT0ibm90YXRpb246SWRlbnRpdHlBbmNob3IiIHhtaTppZD0iX2tSMVZJWmdERWVTRnRMb1ZlMi1zb1EiIGlkPSIoMC4wLDAuNDIpIi8+DQorICAgIDwvZWRnZXM+DQorICA8L25vdGF0aW9uOkRpYWdyYW0+DQorICA8bm90YXRpb246RGlhZ3JhbSB4bWk6aWQ9Il83RXpXb0pnREVlU0Z0TG9WZTItc29RIiB0eXBlPSJQYXB5cnVzVU1MUHJvZmlsZURpYWdyYW0iIG5hbWU9IlByb3BlcnR5IHBhdGgiIG1lYXN1cmVtZW50VW5pdD0iUGl4ZWwiPg0KKyAgICA8Y2hpbGRyZW4geG1pOnR5cGU9Im5vdGF0aW9uOlNoYXBlIiB4bWk6aWQ9Il9RRjFnY0pnRUVlU0Z0TG9WZTItc29RIiB0eXBlPSIxMDI2Ij4NCisgICAgICA8Y2hpbGRyZW4geG1pOnR5cGU9Im5vdGF0aW9uOkRlY29yYXRpb25Ob2RlIiB4bWk6aWQ9Il9RRjJIZ0pnRUVlU0Z0TG9WZTItc29RIiB0eXBlPSIxMDM0Ii8+DQorICAgICAgPGNoaWxkcmVuIHhtaTp0eXBlPSJub3RhdGlvbjpCYXNpY0NvbXBhcnRtZW50IiB4bWk6aWQ9Il9RRjJIZ1pnRUVlU0Z0TG9WZTItc29RIiB2aXNpYmxlPSJmYWxzZSIgdHlwZT0iMTA3MSI+DQorICAgICAgICA8c3R5bGVzIHhtaTp0eXBlPSJub3RhdGlvbjpUaXRsZVN0eWxlIiB4bWk6aWQ9Il9RRjJIZ3BnRUVlU0Z0TG9WZTItc29RIi8+DQorICAgICAgICA8c3R5bGVzIHhtaTp0eXBlPSJub3RhdGlvbjpTb3J0aW5nU3R5bGUiIHhtaTppZD0iX1FGMkhnNWdFRWVTRnRMb1ZlMi1zb1EiLz4NCisgICAgICAgIDxzdHlsZXMgeG1pOnR5cGU9Im5vdGF0aW9uOkZpbHRlcmluZ1N0eWxlIiB4bWk6aWQ9Il9RRjJIaEpnRUVlU0Z0TG9WZTItc29RIi8+DQorICAgICAgICA8bGF5b3V0Q29uc3RyYWludCB4bWk6dHlwZT0ibm90YXRpb246Qm91bmRzIiB4bWk6aWQ9Il9RRjJIaFpnRUVlU0Z0TG9WZTItc29RIi8+DQorICAgICAgPC9jaGlsZHJlbj4NCisgICAgICA8Y2hpbGRyZW4geG1pOnR5cGU9Im5vdGF0aW9uOkJhc2ljQ29tcGFydG1lbnQiIHhtaTppZD0iX1FGMkhocGdFRWVTRnRMb1ZlMi1zb1EiIHZpc2libGU9ImZhbHNlIiB0eXBlPSIxMDE5Ij4NCisgICAgICAgIDxzdHlsZXMgeG1pOnR5cGU9Im5vdGF0aW9uOlRpdGxlU3R5bGUiIHhtaTppZD0iX1FGMkhoNWdFRWVTRnRMb1ZlMi1zb1EiLz4NCisgICAgICAgIDxzdHlsZXMgeG1pOnR5cGU9Im5vdGF0aW9uOlNvcnRpbmdTdHlsZSIgeG1pOmlkPSJfUUYySGlKZ0VFZVNGdExvVmUyLXNvUSIvPg0KKyAgICAgICAgPHN0eWxlcyB4bWk6dHlwZT0ibm90YXRpb246RmlsdGVyaW5nU3R5bGUiIHhtaTppZD0iX1FGMkhpWmdFRWVTRnRMb1ZlMi1zb1EiLz4NCisgICAgICAgIDxsYXlvdXRDb25zdHJhaW50IHhtaTp0eXBlPSJub3RhdGlvbjpCb3VuZHMiIHhtaTppZD0iX1FGMkhpcGdFRWVTRnRMb1ZlMi1zb1EiLz4NCisgICAgICA8L2NoaWxkcmVuPg0KKyAgICAgIDxlbGVtZW50IHhtaTp0eXBlPSJ1bWw6U3RlcmVvdHlwZSIgaHJlZj0iU3lzTUwucHJvZmlsZS51bWwjU3lzTUwtQmxvY2tzLUVsZW1lbnRQcm9wZXJ0eVBhdGgiLz4NCisgICAgICA8bGF5b3V0Q29uc3RyYWludCB4bWk6dHlwZT0ibm90YXRpb246Qm91bmRzIiB4bWk6aWQ9Il9RRjFnY1pnRUVlU0Z0TG9WZTItc29RIiB4PSIyODAiIHk9IjEyMCIgd2lkdGg9IjI0MSIgaGVpZ2h0PSI0MSIvPg0KKyAgICA8L2NoaWxkcmVuPg0KKyAgICA8Y2hpbGRyZW4geG1pOnR5cGU9Im5vdGF0aW9uOlNoYXBlIiB4bWk6aWQ9Il9RR0Fma0pnRUVlU0Z0TG9WZTItc29RIiB0eXBlPSIxMDMxIj4NCisgICAgICA8Y2hpbGRyZW4geG1pOnR5cGU9Im5vdGF0aW9uOkRlY29yYXRpb25Ob2RlIiB4bWk6aWQ9Il9RR0Fma3BnRUVlU0Z0TG9WZTItc29RIiB0eXBlPSIxMDg0Ii8+DQorICAgICAgPGVsZW1lbnQgeG1pOnR5cGU9InVtbDpDbGFzcyIgaHJlZj0icGF0aG1hcDovL1VNTF9NRVRBTU9ERUxTL1VNTC5tZXRhbW9kZWwudW1sI0VsZW1lbnQiLz4NCisgICAgICA8bGF5b3V0Q29uc3RyYWludCB4bWk6dHlwZT0ibm90YXRpb246Qm91bmRzIiB4bWk6aWQ9Il9RR0Fma1pnRUVlU0Z0TG9WZTItc29RIiB4PSIyODAiIHk9IjIwIiB3aWR0aD0iMjQxIi8+DQorICAgIDwvY2hpbGRyZW4+DQorICAgIDxjaGlsZHJlbiB4bWk6dHlwZT0ibm90YXRpb246U2hhcGUiIHhtaTppZD0iX2E0VGtnSmdFRWVTRnRMb1ZlMi1zb1EiIHR5cGU9IjEwMzEiPg0KKyAgICAgIDxjaGlsZHJlbiB4bWk6dHlwZT0ibm90YXRpb246RGVjb3JhdGlvbk5vZGUiIHhtaTppZD0iX2E0VUxrSmdFRWVTRnRMb1ZlMi1zb1EiIHR5cGU9IjEwODQiLz4NCisgICAgICA8ZWxlbWVudCB4bWk6dHlwZT0idW1sOkNsYXNzIiBocmVmPSJwYXRobWFwOi8vVU1MX01FVEFNT0RFTFMvVU1MLm1ldGFtb2RlbC51bWwjUHJvcGVydHkiLz4NCisgICAgICA8bGF5b3V0Q29uc3RyYWludCB4bWk6dHlwZT0ibm90YXRpb246Qm91bmRzIiB4bWk6aWQ9Il9hNFRrZ1pnRUVlU0Z0TG9WZTItc29RIiB4PSI2NjAiIHk9IjEyMCIgd2lkdGg9IjI0MSIvPg0KKyAgICA8L2NoaWxkcmVuPg0KKyAgICA8Y2hpbGRyZW4geG1pOnR5cGU9Im5vdGF0aW9uOlNoYXBlIiB4bWk6aWQ9Il9hNGQ4a0pnRUVlU0Z0TG9WZTItc29RIiB0eXBlPSIxMDI2Ij4NCisgICAgICA8Y2hpbGRyZW4geG1pOnR5cGU9Im5vdGF0aW9uOkRlY29yYXRpb25Ob2RlIiB4bWk6aWQ9Il9hNGQ4a3BnRUVlU0Z0TG9WZTItc29RIiB0eXBlPSIxMDM0Ii8+DQorICAgICAgPGNoaWxkcmVuIHhtaTp0eXBlPSJub3RhdGlvbjpCYXNpY0NvbXBhcnRtZW50IiB4bWk6aWQ9Il9hNGQ4azVnRUVlU0Z0TG9WZTItc29RIiB2aXNpYmxlPSJmYWxzZSIgdHlwZT0iMTA3MSI+DQorICAgICAgICA8c3R5bGVzIHhtaTp0eXBlPSJub3RhdGlvbjpUaXRsZVN0eWxlIiB4bWk6aWQ9Il9hNGQ4bEpnRUVlU0Z0TG9WZTItc29RIi8+DQorICAgICAgICA8c3R5bGVzIHhtaTp0eXBlPSJub3RhdGlvbjpTb3J0aW5nU3R5bGUiIHhtaTppZD0iX2E0ZDhsWmdFRWVTRnRMb1ZlMi1zb1EiLz4NCisgICAgICAgIDxzdHlsZXMgeG1pOnR5cGU9Im5vdGF0aW9uOkZpbHRlcmluZ1N0eWxlIiB4bWk6aWQ9Il9hNGQ4bHBnRUVlU0Z0TG9WZTItc29RIi8+DQorICAgICAgICA8bGF5b3V0Q29uc3RyYWludCB4bWk6dHlwZT0ibm90YXRpb246Qm91bmRzIiB4bWk6aWQ9Il9hNGQ4bDVnRUVlU0Z0TG9WZTItc29RIi8+DQorICAgICAgPC9jaGlsZHJlbj4NCisgICAgICA8Y2hpbGRyZW4geG1pOnR5cGU9Im5vdGF0aW9uOkJhc2ljQ29tcGFydG1lbnQiIHhtaTppZD0iX2E0ZWpvSmdFRWVTRnRMb1ZlMi1zb1EiIHZpc2libGU9ImZhbHNlIiB0eXBlPSIxMDE5Ij4NCisgICAgICAgIDxzdHlsZXMgeG1pOnR5cGU9Im5vdGF0aW9uOlRpdGxlU3R5bGUiIHhtaTppZD0iX2E0ZWpvWmdFRWVTRnRMb1ZlMi1zb1EiLz4NCisgICAgICAgIDxzdHlsZXMgeG1pOnR5cGU9Im5vdGF0aW9uOlNvcnRpbmdTdHlsZSIgeG1pOmlkPSJfYTRlam9wZ0VFZVNGdExvVmUyLXNvUSIvPg0KKyAgICAgICAgPHN0eWxlcyB4bWk6dHlwZT0ibm90YXRpb246RmlsdGVyaW5nU3R5bGUiIHhtaTppZD0iX2E0ZWpvNWdFRWVTRnRMb1ZlMi1zb1EiLz4NCisgICAgICAgIDxsYXlvdXRDb25zdHJhaW50IHhtaTp0eXBlPSJub3RhdGlvbjpCb3VuZHMiIHhtaTppZD0iX2E0ZWpwSmdFRWVTRnRMb1ZlMi1zb1EiLz4NCisgICAgICA8L2NoaWxkcmVuPg0KKyAgICAgIDxlbGVtZW50IHhtaTp0eXBlPSJ1bWw6U3RlcmVvdHlwZSIgaHJlZj0iU3lzTUwucHJvZmlsZS51bWwjU3lzTUwtQmxvY2tzLURpcmVjdGVkUmVsYXRpb25zaGlwUHJvcGVydHlQYXRoIi8+DQorICAgICAgPGxheW91dENvbnN0cmFpbnQgeG1pOnR5cGU9Im5vdGF0aW9uOkJvdW5kcyIgeG1pOmlkPSJfYTRkOGtaZ0VFZVNGdExvVmUyLXNvUSIgeD0iMjgwIiB5PSIzNjAiIHdpZHRoPSIyNDEiIGhlaWdodD0iMTgxIi8+DQorICAgIDwvY2hpbGRyZW4+DQorICAgIDxjaGlsZHJlbiB4bWk6dHlwZT0ibm90YXRpb246U2hhcGUiIHhtaTppZD0iX2VoUjJVSmdFRWVTRnRMb1ZlMi1zb1EiIHR5cGU9IjEwMzEiPg0KKyAgICAgIDxjaGlsZHJlbiB4bWk6dHlwZT0ibm90YXRpb246RGVjb3JhdGlvbk5vZGUiIHhtaTppZD0iX2VoU2RZSmdFRWVTRnRMb1ZlMi1zb1EiIHR5cGU9IjEwODQiLz4NCisgICAgICA8ZWxlbWVudCB4bWk6dHlwZT0idW1sOkNsYXNzIiBocmVmPSJwYXRobWFwOi8vVU1MX01FVEFNT0RFTFMvVU1MLm1ldGFtb2RlbC51bWwjQ2xhc3NpZmllciIvPg0KKyAgICAgIDxsYXlvdXRDb25zdHJhaW50IHhtaTp0eXBlPSJub3RhdGlvbjpCb3VuZHMiIHhtaTppZD0iX2VoUjJVWmdFRWVTRnRMb1ZlMi1zb1EiIHg9Ijc0MCIgeT0iNDQwIiB3aWR0aD0iMjQxIiBoZWlnaHQ9IjEwMSIvPg0KKyAgICA8L2NoaWxkcmVuPg0KKyAgICA8Y2hpbGRyZW4geG1pOnR5cGU9Im5vdGF0aW9uOlNoYXBlIiB4bWk6aWQ9Il92QzZjb0pnRUVlU0Z0TG9WZTItc29RIiB0eXBlPSIxMDMxIj4NCisgICAgICA8Y2hpbGRyZW4geG1pOnR5cGU9Im5vdGF0aW9uOkRlY29yYXRpb25Ob2RlIiB4bWk6aWQ9Il92QzdEc0pnRUVlU0Z0TG9WZTItc29RIiB0eXBlPSIxMDg0Ii8+DQorICAgICAgPGVsZW1lbnQgeG1pOnR5cGU9InVtbDpDbGFzcyIgaHJlZj0icGF0aG1hcDovL1VNTF9NRVRBTU9ERUxTL1VNTC5tZXRhbW9kZWwudW1sI0RpcmVjdGVkUmVsYXRpb25zaGlwIi8+DQorICAgICAgPGxheW91dENvbnN0cmFpbnQgeG1pOnR5cGU9Im5vdGF0aW9uOkJvdW5kcyIgeG1pOmlkPSJfdkM2Y29aZ0VFZVNGdExvVmUyLXNvUSIgeD0iMjgwIiB5PSIyNDAiIHdpZHRoPSIyNDEiLz4NCisgICAgPC9jaGlsZHJlbj4NCisgICAgPHN0eWxlcyB4bWk6dHlwZT0ibm90YXRpb246U3RyaW5nVmFsdWVTdHlsZSIgeG1pOmlkPSJfN0V6V29aZ0RFZVNGdExvVmUyLXNvUSIgbmFtZT0iZGlhZ3JhbV9jb21wYXRpYmlsaXR5X3ZlcnNpb24iIHN0cmluZ1ZhbHVlPSIxLjAuMCIvPg0KKyAgICA8c3R5bGVzIHhtaTp0eXBlPSJub3RhdGlvbjpEaWFncmFtU3R5bGUiIHhtaTppZD0iXzdFeldvcGdERWVTRnRMb1ZlMi1zb1EiLz4NCisgICAgPHN0eWxlcyB4bWk6dHlwZT0ic3R5bGU6UGFweXJ1c1ZpZXdTdHlsZSIgeG1pOmlkPSJfN0V6V281Z0RFZVNGdExvVmUyLXNvUSI+DQorICAgICAgPG93bmVyIHhtaTp0eXBlPSJ1bWw6UGFja2FnZSIgaHJlZj0iU3lzTUwucHJvZmlsZS51bWwjU3lzTUwtQmxvY2tzIi8+DQorICAgIDwvc3R5bGVzPg0KKyAgICA8ZWxlbWVudCB4bWk6dHlwZT0idW1sOlBhY2thZ2UiIGhyZWY9IlN5c01MLnByb2ZpbGUudW1sI1N5c01MLUJsb2NrcyIvPg0KKyAgICA8ZWRnZXMgeG1pOnR5cGU9Im5vdGF0aW9uOkNvbm5lY3RvciIgeG1pOmlkPSJfUUdGX0lKZ0VFZVNGdExvVmUyLXNvUSIgdHlwZT0iMTAxMyIgc291cmNlPSJfUUYxZ2NKZ0VFZVNGdExvVmUyLXNvUSIgdGFyZ2V0PSJfUUdBZmtKZ0VFZVNGdExvVmUyLXNvUSI+DQorICAgICAgPHN0eWxlcyB4bWk6dHlwZT0ibm90YXRpb246Rm9udFN0eWxlIiB4bWk6aWQ9Il9RR0ZfSVpnRUVlU0Z0TG9WZTItc29RIi8+DQorICAgICAgPGVsZW1lbnQgeG1pOnR5cGU9InVtbDpFeHRlbnNpb24iIGhyZWY9IlN5c01MLnByb2ZpbGUudW1sI1N5c01MLUJsb2Nrcy1FX2V4dGVuc2lvbl9FbGVtZW50UHJvcGVydHlQYXRoX2Jhc2VfRWxlbWVudCIvPg0KKyAgICAgIDxiZW5kcG9pbnRzIHhtaTp0eXBlPSJub3RhdGlvbjpSZWxhdGl2ZUJlbmRwb2ludHMiIHhtaTppZD0iX1FHRl9JcGdFRWVTRnRMb1ZlMi1zb1EiIHBvaW50cz0iWzAsIDAsIDAsIDBdJFswLCAwLCAwLCAwXSIvPg0KKyAgICAgIDxzb3VyY2VBbmNob3IgeG1pOnR5cGU9Im5vdGF0aW9uOklkZW50aXR5QW5jaG9yIiB4bWk6aWQ9Il9Ralh4QUpnRUVlU0Z0TG9WZTItc29RIiBpZD0iKDAuNTA0NDI0Nzc4NzYxMDYyLDAuMCkiLz4NCisgICAgICA8dGFyZ2V0QW5jaG9yIHhtaTp0eXBlPSJub3RhdGlvbjpJZGVudGl0eUFuY2hvciIgeG1pOmlkPSJfUWpZWUVKZ0VFZVNGdExvVmUyLXNvUSIgaWQ9IigwLjQ5NzkyNTMxMTIwMzMxOTUsMC44KSIvPg0KKyAgICA8L2VkZ2VzPg0KKyAgICA8ZWRnZXMgeG1pOnR5cGU9Im5vdGF0aW9uOkNvbm5lY3RvciIgeG1pOmlkPSJfdkRDX2dKZ0VFZVNGdExvVmUyLXNvUSIgdHlwZT0iMTAxMyIgc291cmNlPSJfYTRkOGtKZ0VFZVNGdExvVmUyLXNvUSIgdGFyZ2V0PSJfdkM2Y29KZ0VFZVNGdExvVmUyLXNvUSI+DQorICAgICAgPHN0eWxlcyB4bWk6dHlwZT0ibm90YXRpb246Rm9udFN0eWxlIiB4bWk6aWQ9Il92RENfZ1pnRUVlU0Z0TG9WZTItc29RIi8+DQorICAgICAgPGVsZW1lbnQgeG1pOnR5cGU9InVtbDpFeHRlbnNpb24iIGhyZWY9IlN5c01MLnByb2ZpbGUudW1sI1N5c01MLUJsb2Nrcy1FX2V4dGVuc2lvbl9EaXJlY3RlZFJlbGF0aW9uc2hpcFByb3BlcnR5UGF0aF9iYXNlX0RpcmVjdGVkUmVsYXRpb25zaGlwIi8+DQorICAgICAgPGJlbmRwb2ludHMgeG1pOnR5cGU9Im5vdGF0aW9uOlJlbGF0aXZlQmVuZHBvaW50cyIgeG1pOmlkPSJfdkRDX2dwZ0VFZVNGdExvVmUyLXNvUSIgcG9pbnRzPSJbLTQ2LCAtNTAsIDMyNCwgMzYwXSRbLTM3MCwgLTQxMCwgMCwgMF0iLz4NCisgICAgICA8c291cmNlQW5jaG9yIHhtaTp0eXBlPSJub3RhdGlvbjpJZGVudGl0eUFuY2hvciIgeG1pOmlkPSJfdm91ZmNKZ0VFZVNGdExvVmUyLXNvUSIgaWQ9IigwLjU1NjAxNjU5NzUxMDM3MzUsMC4wKSIvPg0KKyAgICAgIDx0YXJnZXRBbmNob3IgeG1pOnR5cGU9Im5vdGF0aW9uOklkZW50aXR5QW5jaG9yIiB4bWk6aWQ9Il92b3VmY1pnRUVlU0Z0TG9WZTItc29RIiBpZD0iKDAuNTU2MDE2NTk3NTEwMzczNSwxLjApIi8+DQorICAgIDwvZWRnZXM+DQorICAgIDxlZGdlcyB4bWk6dHlwZT0ibm90YXRpb246Q29ubmVjdG9yIiB4bWk6aWQ9Il85RjNJRUpnR0VlU0Z0TG9WZTItc29RIiB0eXBlPSI0MDAxIiBzb3VyY2U9Il9RRjFnY0pnRUVlU0Z0TG9WZTItc29RIiB0YXJnZXQ9Il9hNFRrZ0pnRUVlU0Z0TG9WZTItc29RIj4NCisgICAgICA8Y2hpbGRyZW4geG1pOnR5cGU9Im5vdGF0aW9uOkRlY29yYXRpb25Ob2RlIiB4bWk6aWQ9Il85RjN2SUpnR0VlU0Z0TG9WZTItc29RIiB0eXBlPSI2MDAxIj4NCisgICAgICAgIDxsYXlvdXRDb25zdHJhaW50IHhtaTp0eXBlPSJub3RhdGlvbjpMb2NhdGlvbiIgeG1pOmlkPSJfOUY0V01KZ0dFZVNGdExvVmUyLXNvUSIgeT0iNjAiLz4NCisgICAgICA8L2NoaWxkcmVuPg0KKyAgICAgIDxjaGlsZHJlbiB4bWk6dHlwZT0ibm90YXRpb246RGVjb3JhdGlvbk5vZGUiIHhtaTppZD0iXzlGNFdNWmdHRWVTRnRMb1ZlMi1zb1EiIHR5cGU9IjYwMDIiPg0KKyAgICAgICAgPGxheW91dENvbnN0cmFpbnQgeG1pOnR5cGU9Im5vdGF0aW9uOkxvY2F0aW9uIiB4bWk6aWQ9Il85RjRXTXBnR0VlU0Z0TG9WZTItc29RIiB5PSIyMCIvPg0KKyAgICAgIDwvY2hpbGRyZW4+DQorICAgICAgPGNoaWxkcmVuIHhtaTp0eXBlPSJub3RhdGlvbjpEZWNvcmF0aW9uTm9kZSIgeG1pOmlkPSJfOUY0OVFKZ0dFZVNGdExvVmUyLXNvUSIgdHlwZT0iNjAwMyI+DQorICAgICAgICA8bGF5b3V0Q29uc3RyYWludCB4bWk6dHlwZT0ibm90YXRpb246TG9jYXRpb24iIHhtaTppZD0iXzlGNDlRWmdHRWVTRnRMb1ZlMi1zb1EiIHg9Ii0yMiIgeT0iMjUiLz4NCisgICAgICA8L2NoaWxkcmVuPg0KKyAgICAgIDxjaGlsZHJlbiB4bWk6dHlwZT0ibm90YXRpb246RGVjb3JhdGlvbk5vZGUiIHhtaTppZD0iXzlGNDlRcGdHRWVTRnRMb1ZlMi1zb1EiIHR5cGU9IjYwMDUiPg0KKyAgICAgICAgPGxheW91dENvbnN0cmFpbnQgeG1pOnR5cGU9Im5vdGF0aW9uOkxvY2F0aW9uIiB4bWk6aWQ9Il85RjVrVUpnR0VlU0Z0TG9WZTItc29RIiB5PSItMjAiLz4NCisgICAgICA8L2NoaWxkcmVuPg0KKyAgICAgIDxjaGlsZHJlbiB4bWk6dHlwZT0ibm90YXRpb246RGVjb3JhdGlvbk5vZGUiIHhtaTppZD0iXzlGNWtVWmdHRWVTRnRMb1ZlMi1zb1EiIHR5cGU9IjYwMzMiPg0KKyAgICAgICAgPGxheW91dENvbnN0cmFpbnQgeG1pOnR5cGU9Im5vdGF0aW9uOkxvY2F0aW9uIiB4bWk6aWQ9Il85RjVrVXBnR0VlU0Z0TG9WZTItc29RIiB5PSIyMCIvPg0KKyAgICAgIDwvY2hpbGRyZW4+DQorICAgICAgPGNoaWxkcmVuIHhtaTp0eXBlPSJub3RhdGlvbjpEZWNvcmF0aW9uTm9kZSIgeG1pOmlkPSJfOUY2TFlKZ0dFZVNGdExvVmUyLXNvUSIgdHlwZT0iNjAzNCI+DQorICAgICAgICA8bGF5b3V0Q29uc3RyYWludCB4bWk6dHlwZT0ibm90YXRpb246TG9jYXRpb24iIHhtaTppZD0iXzlGNkxZWmdHRWVTRnRMb1ZlMi1zb1EiIHk9Ii0yMCIvPg0KKyAgICAgIDwvY2hpbGRyZW4+DQorICAgICAgPHN0eWxlcyB4bWk6dHlwZT0ibm90YXRpb246Rm9udFN0eWxlIiB4bWk6aWQ9Il85RjNJRVpnR0VlU0Z0TG9WZTItc29RIi8+DQorICAgICAgPGVsZW1lbnQgeG1pOnR5cGU9InVtbDpBc3NvY2lhdGlvbiIgaHJlZj0iU3lzTUwucHJvZmlsZS51bWwjU3lzTUwtQmxvY2tzLUFfZWxlbWVudFByb3BlcnR5UGF0aF9wcm9wZXJ0eVBhdGgiLz4NCisgICAgICA8YmVuZHBvaW50cyB4bWk6dHlwZT0ibm90YXRpb246UmVsYXRpdmVCZW5kcG9pbnRzIiB4bWk6aWQ9Il85RjNJRXBnR0VlU0Z0TG9WZTItc29RIiBwb2ludHM9IlsxMjEsIDUsIC0yNTksIDBdJFsyNjAsIDAsIC0xMjAsIC01XSIvPg0KKyAgICA8L2VkZ2VzPg0KKyAgICA8ZWRnZXMgeG1pOnR5cGU9Im5vdGF0aW9uOkNvbm5lY3RvciIgeG1pOmlkPSJfR21VeHNKZ0hFZVNGdExvVmUyLXNvUSIgdHlwZT0iNDAwMSIgc291cmNlPSJfZWhSMlVKZ0VFZVNGdExvVmUyLXNvUSIgdGFyZ2V0PSJfYTRkOGtKZ0VFZVNGdExvVmUyLXNvUSI+DQorICAgICAgPGNoaWxkcmVuIHhtaTp0eXBlPSJub3RhdGlvbjpEZWNvcmF0aW9uTm9kZSIgeG1pOmlkPSJfR21WWXdKZ0hFZVNGdExvVmUyLXNvUSIgdHlwZT0iNjAwMSI+DQorICAgICAgICA8bGF5b3V0Q29uc3RyYWludCB4bWk6dHlwZT0ibm90YXRpb246TG9jYXRpb24iIHhtaTppZD0iX0dtVll3WmdIRWVTRnRMb1ZlMi1zb1EiIHk9IjYwIi8+DQorICAgICAgPC9jaGlsZHJlbj4NCisgICAgICA8Y2hpbGRyZW4geG1pOnR5cGU9Im5vdGF0aW9uOkRlY29yYXRpb25Ob2RlIiB4bWk6aWQ9Il9HbVZfMEpnSEVlU0Z0TG9WZTItc29RIiB0eXBlPSI2MDAyIj4NCisgICAgICAgIDxsYXlvdXRDb25zdHJhaW50IHhtaTp0eXBlPSJub3RhdGlvbjpMb2NhdGlvbiIgeG1pOmlkPSJfR21WXzBaZ0hFZVNGdExvVmUyLXNvUSIgeT0iMjAiLz4NCisgICAgICA8L2NoaWxkcmVuPg0KKyAgICAgIDxjaGlsZHJlbiB4bWk6dHlwZT0ibm90YXRpb246RGVjb3JhdGlvbk5vZGUiIHhtaTppZD0iX0dtVl8wcGdIRWVTRnRMb1ZlMi1zb1EiIHZpc2libGU9ImZhbHNlIiB0eXBlPSI2MDAzIj4NCisgICAgICAgIDxsYXlvdXRDb25zdHJhaW50IHhtaTp0eXBlPSJub3RhdGlvbjpMb2NhdGlvbiIgeG1pOmlkPSJfR21XbTRKZ0hFZVNGdExvVmUyLXNvUSIgeD0iLTU3IiB5PSI2MyIvPg0KKyAgICAgIDwvY2hpbGRyZW4+DQorICAgICAgPGNoaWxkcmVuIHhtaTp0eXBlPSJub3RhdGlvbjpEZWNvcmF0aW9uTm9kZSIgeG1pOmlkPSJfR21XbTRaZ0hFZVNGdExvVmUyLXNvUSIgdHlwZT0iNjAwNSI+DQorICAgICAgICA8ZUFubm90YXRpb25zIHhtaTp0eXBlPSJlY29yZTpFQW5ub3RhdGlvbiIgeG1pOmlkPSJfd1F2YVVKZ0hFZVNGdExvVmUyLXNvUSIgc291cmNlPSJQYXB5cnVzQ1NTRm9yY2VWYWx1ZSI+DQorICAgICAgICAgIDxkZXRhaWxzIHhtaTp0eXBlPSJlY29yZTpFU3RyaW5nVG9TdHJpbmdNYXBFbnRyeSIgeG1pOmlkPSJfd1F2YVVaZ0hFZVNGdExvVmUyLXNvUSIga2V5PSJ2aXNpYmxlIiB2YWx1ZT0idHJ1ZSIvPg0KKyAgICAgICAgPC9lQW5ub3RhdGlvbnM+DQorICAgICAgICA8bGF5b3V0Q29uc3RyYWludCB4bWk6dHlwZT0ibm90YXRpb246TG9jYXRpb24iIHhtaTppZD0iX0dtV200cGdIRWVTRnRMb1ZlMi1zb1EiIHk9Ii0yMCIvPg0KKyAgICAgIDwvY2hpbGRyZW4+DQorICAgICAgPGNoaWxkcmVuIHhtaTp0eXBlPSJub3RhdGlvbjpEZWNvcmF0aW9uTm9kZSIgeG1pOmlkPSJfR21YTjhKZ0hFZVNGdExvVmUyLXNvUSIgdHlwZT0iNjAzMyI+DQorICAgICAgICA8bGF5b3V0Q29uc3RyYWludCB4bWk6dHlwZT0ibm90YXRpb246TG9jYXRpb24iIHhtaTppZD0iX0dtWE44WmdIRWVTRnRMb1ZlMi1zb1EiIHk9IjIwIi8+DQorICAgICAgPC9jaGlsZHJlbj4NCisgICAgICA8Y2hpbGRyZW4geG1pOnR5cGU9Im5vdGF0aW9uOkRlY29yYXRpb25Ob2RlIiB4bWk6aWQ9Il9HbVhOOHBnSEVlU0Z0TG9WZTItc29RIiB0eXBlPSI2MDM0Ij4NCisgICAgICAgIDxsYXlvdXRDb25zdHJhaW50IHhtaTp0eXBlPSJub3RhdGlvbjpMb2NhdGlvbiIgeG1pOmlkPSJfR21YTjg1Z0hFZVNGdExvVmUyLXNvUSIgeT0iLTIwIi8+DQorICAgICAgPC9jaGlsZHJlbj4NCisgICAgICA8c3R5bGVzIHhtaTp0eXBlPSJub3RhdGlvbjpGb250U3R5bGUiIHhtaTppZD0iX0dtVXhzWmdIRWVTRnRMb1ZlMi1zb1EiLz4NCisgICAgICA8ZWxlbWVudCB4bWk6dHlwZT0idW1sOkFzc29jaWF0aW9uIiBocmVmPSJTeXNNTC5wcm9maWxlLnVtbCNTeXNNTC1CbG9ja3MtQV9kaXJlY3RlZFJlbGF0aW9uc2hpcFByb3BlcnR5UGF0aF9zb3VyY2VDb250ZXh0Ii8+DQorICAgICAgPGJlbmRwb2ludHMgeG1pOnR5cGU9Im5vdGF0aW9uOlJlbGF0aXZlQmVuZHBvaW50cyIgeG1pOmlkPSJfR21VeHNwZ0hFZVNGdExvVmUyLXNvUSIgcG9pbnRzPSJbLTEyMCwgLTEzLCAyNjAsIDI3XSRbLTI1OSwgLTI3LCAxMjEsIDEzXSIvPg0KKyAgICAgIDxzb3VyY2VBbmNob3IgeG1pOnR5cGU9Im5vdGF0aW9uOklkZW50aXR5QW5jaG9yIiB4bWk6aWQ9Il9HN1pDd0pnSEVlU0Z0TG9WZTItc29RIiBpZD0iKDAuMCwwLjI5NzAyOTcwMjk3MDI5NykiLz4NCisgICAgICA8dGFyZ2V0QW5jaG9yIHhtaTp0eXBlPSJub3RhdGlvbjpJZGVudGl0eUFuY2hvciIgeG1pOmlkPSJfRzdaQ3daZ0hFZVNGdExvVmUyLXNvUSIgaWQ9IigxLjAsMC42MDc3MzQ4MDY2Mjk4MzQzKSIvPg0KKyAgICA8L2VkZ2VzPg0KKyAgICA8ZWRnZXMgeG1pOnR5cGU9Im5vdGF0aW9uOkNvbm5lY3RvciIgeG1pOmlkPSJfb3J4TkFKZ0hFZVNGdExvVmUyLXNvUSIgdHlwZT0iNDAwMSIgc291cmNlPSJfYTRUa2dKZ0VFZVNGdExvVmUyLXNvUSIgdGFyZ2V0PSJfYTRkOGtKZ0VFZVNGdExvVmUyLXNvUSI+DQorICAgICAgPGNoaWxkcmVuIHhtaTp0eXBlPSJub3RhdGlvbjpEZWNvcmF0aW9uTm9kZSIgeG1pOmlkPSJfb3J5YklKZ0hFZVNGdExvVmUyLXNvUSIgdHlwZT0iNjAwMSI+DQorICAgICAgICA8bGF5b3V0Q29uc3RyYWludCB4bWk6dHlwZT0ibm90YXRpb246TG9jYXRpb24iIHhtaTppZD0iX29yeWJJWmdIRWVTRnRMb1ZlMi1zb1EiIHk9IjYwIi8+DQorICAgICAgPC9jaGlsZHJlbj4NCisgICAgICA8Y2hpbGRyZW4geG1pOnR5cGU9Im5vdGF0aW9uOkRlY29yYXRpb25Ob2RlIiB4bWk6aWQ9Il9vcnliSXBnSEVlU0Z0TG9WZTItc29RIiB0eXBlPSI2MDAyIj4NCisgICAgICAgIDxsYXlvdXRDb25zdHJhaW50IHhtaTp0eXBlPSJub3RhdGlvbjpMb2NhdGlvbiIgeG1pOmlkPSJfb3J6Q01KZ0hFZVNGdExvVmUyLXNvUSIgeT0iMjAiLz4NCisgICAgICA8L2NoaWxkcmVuPg0KKyAgICAgIDxjaGlsZHJlbiB4bWk6dHlwZT0ibm90YXRpb246RGVjb3JhdGlvbk5vZGUiIHhtaTppZD0iX29yekNNWmdIRWVTRnRMb1ZlMi1zb1EiIHZpc2libGU9ImZhbHNlIiB0eXBlPSI2MDAzIj4NCisgICAgICAgIDxsYXlvdXRDb25zdHJhaW50IHhtaTp0eXBlPSJub3RhdGlvbjpMb2NhdGlvbiIgeG1pOmlkPSJfb3J6Q01wZ0hFZVNGdExvVmUyLXNvUSIgeT0iMjAiLz4NCisgICAgICA8L2NoaWxkcmVuPg0KKyAgICAgIDxjaGlsZHJlbiB4bWk6dHlwZT0ibm90YXRpb246RGVjb3JhdGlvbk5vZGUiIHhtaTppZD0iX29yenBRSmdIRWVTRnRMb1ZlMi1zb1EiIHR5cGU9IjYwMDUiPg0KKyAgICAgICAgPGVBbm5vdGF0aW9ucyB4bWk6dHlwZT0iZWNvcmU6RUFubm90YXRpb24iIHhtaTppZD0iX3NXWnJzSmdIRWVTRnRMb1ZlMi1zb1EiIHNvdXJjZT0iUGFweXJ1c0NTU0ZvcmNlVmFsdWUiPg0KKyAgICAgICAgICA8ZGV0YWlscyB4bWk6dHlwZT0iZWNvcmU6RVN0cmluZ1RvU3RyaW5nTWFwRW50cnkiIHhtaTppZD0iX3NXYVN3SmdIRWVTRnRMb1ZlMi1zb1EiIGtleT0idmlzaWJsZSIgdmFsdWU9InRydWUiLz4NCisgICAgICAgIDwvZUFubm90YXRpb25zPg0KKyAgICAgICAgPGxheW91dENvbnN0cmFpbnQgeG1pOnR5cGU9Im5vdGF0aW9uOkxvY2F0aW9uIiB4bWk6aWQ9Il9vcnpwUVpnSEVlU0Z0TG9WZTItc29RIiB4PSIzIiB5PSItNzkiLz4NCisgICAgICA8L2NoaWxkcmVuPg0KKyAgICAgIDxjaGlsZHJlbiB4bWk6dHlwZT0ibm90YXRpb246RGVjb3JhdGlvbk5vZGUiIHhtaTppZD0iX29yMFFVSmdIRWVTRnRMb1ZlMi1zb1EiIHR5cGU9IjYwMzMiPg0KKyAgICAgICAgPGxheW91dENvbnN0cmFpbnQgeG1pOnR5cGU9Im5vdGF0aW9uOkxvY2F0aW9uIiB4bWk6aWQ9Il9vcjBRVVpnSEVlU0Z0TG9WZTItc29RIiB5PSIyMCIvPg0KKyAgICAgIDwvY2hpbGRyZW4+DQorICAgICAgPGNoaWxkcmVuIHhtaTp0eXBlPSJub3RhdGlvbjpEZWNvcmF0aW9uTm9kZSIgeG1pOmlkPSJfb3IwUVVwZ0hFZVNGdExvVmUyLXNvUSIgdHlwZT0iNjAzNCI+DQorICAgICAgICA8bGF5b3V0Q29uc3RyYWludCB4bWk6dHlwZT0ibm90YXRpb246TG9jYXRpb24iIHhtaTppZD0iX29yMDNZSmdIRWVTRnRMb1ZlMi1zb1EiIHk9Ii0yMCIvPg0KKyAgICAgIDwvY2hpbGRyZW4+DQorICAgICAgPHN0eWxlcyB4bWk6dHlwZT0ibm90YXRpb246Rm9udFN0eWxlIiB4bWk6aWQ9Il9vcnhOQVpnSEVlU0Z0TG9WZTItc29RIi8+DQorICAgICAgPGVsZW1lbnQgeG1pOnR5cGU9InVtbDpBc3NvY2lhdGlvbiIgaHJlZj0iU3lzTUwucHJvZmlsZS51bWwjU3lzTUwtQmxvY2tzLUFfZGlyZWN0ZWRSZWxhdGlvbnNoaXBQcm9wZXJ0eVBhdGhfc291cmNlUHJvcGVydHlQYXRoIi8+DQorICAgICAgPGJlbmRwb2ludHMgeG1pOnR5cGU9Im5vdGF0aW9uOlJlbGF0aXZlQmVuZHBvaW50cyIgeG1pOmlkPSJfb3J4MEVKZ0hFZVNGdExvVmUyLXNvUSIgcG9pbnRzPSJbMTAwLCAyNSwgNDgwLCAtMjgwXSRbMTAwLCAyNTUsIDQ4MCwgLTUwXSRbLTI1OSwgMjU1LCAxMjEsIC01MF0iLz4NCisgICAgPC9lZGdlcz4NCisgICAgPGVkZ2VzIHhtaTp0eXBlPSJub3RhdGlvbjpDb25uZWN0b3IiIHhtaTppZD0iX3pRNVlvSmdIRWVTRnRMb1ZlMi1zb1EiIHR5cGU9IjQwMDEiIHNvdXJjZT0iX2VoUjJVSmdFRWVTRnRMb1ZlMi1zb1EiIHRhcmdldD0iX2E0ZDhrSmdFRWVTRnRMb1ZlMi1zb1EiPg0KKyAgICAgIDxjaGlsZHJlbiB4bWk6dHlwZT0ibm90YXRpb246RGVjb3JhdGlvbk5vZGUiIHhtaTppZD0iX3pRNV9zSmdIRWVTRnRMb1ZlMi1zb1EiIHR5cGU9IjYwMDEiPg0KKyAgICAgICAgPGxheW91dENvbnN0cmFpbnQgeG1pOnR5cGU9Im5vdGF0aW9uOkxvY2F0aW9uIiB4bWk6aWQ9Il96UTZtd0pnSEVlU0Z0TG9WZTItc29RIiB5PSI2MCIvPg0KKyAgICAgIDwvY2hpbGRyZW4+DQorICAgICAgPGNoaWxkcmVuIHhtaTp0eXBlPSJub3RhdGlvbjpEZWNvcmF0aW9uTm9kZSIgeG1pOmlkPSJfelE2bXdaZ0hFZVNGdExvVmUyLXNvUSIgdHlwZT0iNjAwMiI+DQorICAgICAgICA8bGF5b3V0Q29uc3RyYWludCB4bWk6dHlwZT0ibm90YXRpb246TG9jYXRpb24iIHhtaTppZD0iX3pRNm13cGdIRWVTRnRMb1ZlMi1zb1EiIHk9IjIwIi8+DQorICAgICAgPC9jaGlsZHJlbj4NCisgICAgICA8Y2hpbGRyZW4geG1pOnR5cGU9Im5vdGF0aW9uOkRlY29yYXRpb25Ob2RlIiB4bWk6aWQ9Il96UTdOMEpnSEVlU0Z0TG9WZTItc29RIiB2aXNpYmxlPSJmYWxzZSIgdHlwZT0iNjAwMyI+DQorICAgICAgICA8bGF5b3V0Q29uc3RyYWludCB4bWk6dHlwZT0ibm90YXRpb246TG9jYXRpb24iIHhtaTppZD0iX3pRN04wWmdIRWVTRnRMb1ZlMi1zb1EiIHk9IjIwIi8+DQorICAgICAgPC9jaGlsZHJlbj4NCisgICAgICA8Y2hpbGRyZW4geG1pOnR5cGU9Im5vdGF0aW9uOkRlY29yYXRpb25Ob2RlIiB4bWk6aWQ9Il96UTcwNEpnSEVlU0Z0TG9WZTItc29RIiB0eXBlPSI2MDA1Ij4NCisgICAgICAgIDxlQW5ub3RhdGlvbnMgeG1pOnR5cGU9ImVjb3JlOkVBbm5vdGF0aW9uIiB4bWk6aWQ9Il8zSWswMEpnSEVlU0Z0TG9WZTItc29RIiBzb3VyY2U9IlBhcHlydXNDU1NGb3JjZVZhbHVlIj4NCisgICAgICAgICAgPGRldGFpbHMgeG1pOnR5cGU9ImVjb3JlOkVTdHJpbmdUb1N0cmluZ01hcEVudHJ5IiB4bWk6aWQ9Il8zSWxiNEpnSEVlU0Z0TG9WZTItc29RIiBrZXk9InZpc2libGUiIHZhbHVlPSJ0cnVlIi8+DQorICAgICAgICA8L2VBbm5vdGF0aW9ucz4NCisgICAgICAgIDxsYXlvdXRDb25zdHJhaW50IHhtaTp0eXBlPSJub3RhdGlvbjpMb2NhdGlvbiIgeG1pOmlkPSJfelE3MDRaZ0hFZVNGdExvVmUyLXNvUSIgeT0iLTIwIi8+DQorICAgICAgPC9jaGlsZHJlbj4NCisgICAgICA8Y2hpbGRyZW4geG1pOnR5cGU9Im5vdGF0aW9uOkRlY29yYXRpb25Ob2RlIiB4bWk6aWQ9Il96UTcwNHBnSEVlU0Z0TG9WZTItc29RIiB0eXBlPSI2MDMzIj4NCisgICAgICAgIDxsYXlvdXRDb25zdHJhaW50IHhtaTp0eXBlPSJub3RhdGlvbjpMb2NhdGlvbiIgeG1pOmlkPSJfelE4YjhKZ0hFZVNGdExvVmUyLXNvUSIgeT0iMjAiLz4NCisgICAgICA8L2NoaWxkcmVuPg0KKyAgICAgIDxjaGlsZHJlbiB4bWk6dHlwZT0ibm90YXRpb246RGVjb3JhdGlvbk5vZGUiIHhtaTppZD0iX3pROGI4WmdIRWVTRnRMb1ZlMi1zb1EiIHR5cGU9IjYwMzQiPg0KKyAgICAgICAgPGxheW91dENvbnN0cmFpbnQgeG1pOnR5cGU9Im5vdGF0aW9uOkxvY2F0aW9uIiB4bWk6aWQ9Il96UThiOHBnSEVlU0Z0TG9WZTItc29RIiB5PSItMjAiLz4NCisgICAgICA8L2NoaWxkcmVuPg0KKyAgICAgIDxzdHlsZXMgeG1pOnR5cGU9Im5vdGF0aW9uOkZvbnRTdHlsZSIgeG1pOmlkPSJfelE1WW9aZ0hFZVNGdExvVmUyLXNvUSIvPg0KKyAgICAgIDxlbGVtZW50IHhtaTp0eXBlPSJ1bWw6QXNzb2NpYXRpb24iIGhyZWY9IlN5c01MLnByb2ZpbGUudW1sI1N5c01MLUJsb2Nrcy1BX2RpcmVjdGVkUmVsYXRpb25zaGlwUHJvcGVydHlQYXRoX3RhcmdldENvbnRleHQiLz4NCisgICAgICA8YmVuZHBvaW50cyB4bWk6dHlwZT0ibm90YXRpb246UmVsYXRpdmVCZW5kcG9pbnRzIiB4bWk6aWQ9Il96UTVZb3BnSEVlU0Z0TG9WZTItc29RIiBwb2ludHM9IlstMTIwLCAzMCwgMzQwLCA3MF0kWy0zMzksIDMwLCAxMjEsIDcwXSIvPg0KKyAgICA8L2VkZ2VzPg0KKyAgICA8ZWRnZXMgeG1pOnR5cGU9Im5vdGF0aW9uOkNvbm5lY3RvciIgeG1pOmlkPSJfNTk3UlVKZ0hFZVNGdExvVmUyLXNvUSIgdHlwZT0iNDAwMSIgc291cmNlPSJfYTRUa2dKZ0VFZVNGdExvVmUyLXNvUSIgdGFyZ2V0PSJfYTRkOGtKZ0VFZVNGdExvVmUyLXNvUSI+DQorICAgICAgPGNoaWxkcmVuIHhtaTp0eXBlPSJub3RhdGlvbjpEZWNvcmF0aW9uTm9kZSIgeG1pOmlkPSJfNTk3NFlKZ0hFZVNGdExvVmUyLXNvUSIgdHlwZT0iNjAwMSI+DQorICAgICAgICA8bGF5b3V0Q29uc3RyYWludCB4bWk6dHlwZT0ibm90YXRpb246TG9jYXRpb24iIHhtaTppZD0iXzU5NzRZWmdIRWVTRnRMb1ZlMi1zb1EiIHk9IjYwIi8+DQorICAgICAgPC9jaGlsZHJlbj4NCisgICAgICA8Y2hpbGRyZW4geG1pOnR5cGU9Im5vdGF0aW9uOkRlY29yYXRpb25Ob2RlIiB4bWk6aWQ9Il81OThmY0pnSEVlU0Z0TG9WZTItc29RIiB0eXBlPSI2MDAyIj4NCisgICAgICAgIDxsYXlvdXRDb25zdHJhaW50IHhtaTp0eXBlPSJub3RhdGlvbjpMb2NhdGlvbiIgeG1pOmlkPSJfNTk4ZmNaZ0hFZVNGdExvVmUyLXNvUSIgeT0iMjAiLz4NCisgICAgICA8L2NoaWxkcmVuPg0KKyAgICAgIDxjaGlsZHJlbiB4bWk6dHlwZT0ibm90YXRpb246RGVjb3JhdGlvbk5vZGUiIHhtaTppZD0iXzU5OUdnSmdIRWVTRnRMb1ZlMi1zb1EiIHZpc2libGU9ImZhbHNlIiB0eXBlPSI2MDAzIj4NCisgICAgICAgIDxsYXlvdXRDb25zdHJhaW50IHhtaTp0eXBlPSJub3RhdGlvbjpMb2NhdGlvbiIgeG1pOmlkPSJfNTk5R2daZ0hFZVNGdExvVmUyLXNvUSIgeT0iMjAiLz4NCisgICAgICA8L2NoaWxkcmVuPg0KKyAgICAgIDxjaGlsZHJlbiB4bWk6dHlwZT0ibm90YXRpb246RGVjb3JhdGlvbk5vZGUiIHhtaTppZD0iXzU5OUdncGdIRWVTRnRMb1ZlMi1zb1EiIHR5cGU9IjYwMDUiPg0KKyAgICAgICAgPGVBbm5vdGF0aW9ucyB4bWk6dHlwZT0iZWNvcmU6RUFubm90YXRpb24iIHhtaTppZD0iXy1KTHcwSmdIRWVTRnRMb1ZlMi1zb1EiIHNvdXJjZT0iUGFweXJ1c0NTU0ZvcmNlVmFsdWUiPg0KKyAgICAgICAgICA8ZGV0YWlscyB4bWk6dHlwZT0iZWNvcmU6RVN0cmluZ1RvU3RyaW5nTWFwRW50cnkiIHhtaTppZD0iXy1KTVg0SmdIRWVTRnRMb1ZlMi1zb1EiIGtleT0idmlzaWJsZSIgdmFsdWU9InRydWUiLz4NCisgICAgICAgIDwvZUFubm90YXRpb25zPg0KKyAgICAgICAgPGxheW91dENvbnN0cmFpbnQgeG1pOnR5cGU9Im5vdGF0aW9uOkxvY2F0aW9uIiB4bWk6aWQ9Il81OTl0a0pnSEVlU0Z0TG9WZTItc29RIiB4PSItMjUiIHk9IjgzIi8+DQorICAgICAgPC9jaGlsZHJlbj4NCisgICAgICA8Y2hpbGRyZW4geG1pOnR5cGU9Im5vdGF0aW9uOkRlY29yYXRpb25Ob2RlIiB4bWk6aWQ9Il81OTl0a1pnSEVlU0Z0TG9WZTItc29RIiB0eXBlPSI2MDMzIj4NCisgICAgICAgIDxsYXlvdXRDb25zdHJhaW50IHhtaTp0eXBlPSJub3RhdGlvbjpMb2NhdGlvbiIgeG1pOmlkPSJfNTk5dGtwZ0hFZVNGdExvVmUyLXNvUSIgeT0iMjAiLz4NCisgICAgICA8L2NoaWxkcmVuPg0KKyAgICAgIDxjaGlsZHJlbiB4bWk6dHlwZT0ibm90YXRpb246RGVjb3JhdGlvbk5vZGUiIHhtaTppZD0iXzU5LVVvSmdIRWVTRnRMb1ZlMi1zb1EiIHR5cGU9IjYwMzQiPg0KKyAgICAgICAgPGxheW91dENvbnN0cmFpbnQgeG1pOnR5cGU9Im5vdGF0aW9uOkxvY2F0aW9uIiB4bWk6aWQ9Il81OS1Vb1pnSEVlU0Z0TG9WZTItc29RIiB4PSI4IiB5PSIxMyIvPg0KKyAgICAgIDwvY2hpbGRyZW4+DQorICAgICAgPHN0eWxlcyB4bWk6dHlwZT0ibm90YXRpb246Rm9udFN0eWxlIiB4bWk6aWQ9Il81OTdSVVpnSEVlU0Z0TG9WZTItc29RIi8+DQorICAgICAgPGVsZW1lbnQgeG1pOnR5cGU9InVtbDpBc3NvY2lhdGlvbiIgaHJlZj0iU3lzTUwucHJvZmlsZS51bWwjU3lzTUwtQmxvY2tzLUFfZGlyZWN0ZWRSZWxhdGlvbnNoaXBQcm9wZXJ0eVBhdGhfdGFyZ2V0UHJvcGVydHlQYXRoIi8+DQorICAgICAgPGJlbmRwb2ludHMgeG1pOnR5cGU9Im5vdGF0aW9uOlJlbGF0aXZlQmVuZHBvaW50cyIgeG1pOmlkPSJfNTk3UlVwZ0hFZVNGdExvVmUyLXNvUSIgcG9pbnRzPSJbODAsIDI1LCA0NjAsIC0yODBdJFs4MCwgMjM1LCA0NjAsIC03MF0kWy0yNTksIDIzNSwgMTIxLCAtNzBdIi8+DQorICAgIDwvZWRnZXM+DQorICA8L25vdGF0aW9uOkRpYWdyYW0+DQorICA8Y3NzOk1vZGVsU3R5bGVTaGVldHMgeG1pOmlkPSJfSmxOMm9KZ0ZFZVNGdExvVmUyLXNvUSI+DQorICAgIDxzdHlsZXNoZWV0cyB4bWk6dHlwZT0iY3NzOkVtYmVkZGVkU3R5bGVTaGVldCIgeG1pOmlkPSJfVXhXLThKZ0ZFZVNGdExvVmUyLXNvUSIgbGFiZWw9ImNzc1Byb2ZpbGUiIGNvbnRlbnQ9IkV4dGVuc2lvbiB7JiN4RDsmI3hBO3JvdXRpbmc6IFJlY3RpbGluZWFyOyYjeEQ7JiN4QTt9JiN4RDsmI3hBO0Fzc29jaWF0aW9ueyYjeEQ7JiN4QTtyb3V0aW5nOiBSZWN0aWxpbmVhcjsmI3hEOyYjeEE7fSYjeEQ7JiN4QTtHZW5lcmFsaXphdGlvbnsmI3hEOyYjeEE7cm91dGluZzogUmVjdGlsaW5lYXI7JiN4RDsmI3hBO30mI3hEOyYjeEE7JiN4RDsmI3hBO0Fzc29jaWF0aW9uID4gTGFiZWw6c291cmNlTXVsdGlwbGljaXR5IHsmI3hEOyYjeEE7JiN4OTt2aXNpYmxlOnRydWU7JiN4RDsmI3hBO30mI3hEOyYjeEE7JiN4RDsmI3hBO0Fzc29jaWF0aW9uID4gTGFiZWw6dGFyZ2V0TXVsdGlwbGljaXR5IHsmI3hEOyYjeEE7JiN4OTt2aXNpYmxlOnRydWU7JiN4RDsmI3hBO30mI3hEOyYjeEE7JiN4RDsmI3hBO0Fzc29jaWF0aW9uID4gTGFiZWw6c291cmNlUm9sZSB7JiN4RDsmI3hBO3Zpc2libGU6ZmFsc2U7JiN4OTsmI3hEOyYjeEE7JiN4RDsmI3hBO30mI3hEOyYjeEE7JiN4RDsmI3hBO0Fzc29jaWF0aW9uID4gTGFiZWw6dGFyZ2V0Um9sZSB7JiN4RDsmI3hBOyYjeDk7bWFza0xhYmVsOiBuYW1lOyYjeEQ7JiN4QTt9JiN4RDsmI3hBOyYjeEQ7JiN4QTtBc3NvY2lhdGlvbiA+IExhYmVsOm5hbWUgeyYjeEQ7JiN4QTsmI3g5O3Zpc2libGU6ZmFsc2U7JiN4RDsmI3hBO30mI3hEOyYjeEE7Ii8+DQorICA8L2NzczpNb2RlbFN0eWxlU2hlZXRzPg0KKyAgPG5vdGF0aW9uOkRpYWdyYW0geG1pOmlkPSJfRUVlRGdKZ0lFZVNGdExvVmUyLXNvUSIgdHlwZT0iUGFweXJ1c1VNTFByb2ZpbGVEaWFncmFtIiBuYW1lPSJuZXN0ZWRDb25uZWN0b3IiIG1lYXN1cmVtZW50VW5pdD0iUGl4ZWwiPg0KKyAgICA8Y2hpbGRyZW4geG1pOnR5cGU9Im5vdGF0aW9uOlNoYXBlIiB4bWk6aWQ9Il9JWmFxZ0pnSUVlU0Z0TG9WZTItc29RIiB0eXBlPSIxMDI2Ij4NCisgICAgICA8Y2hpbGRyZW4geG1pOnR5cGU9Im5vdGF0aW9uOkRlY29yYXRpb25Ob2RlIiB4bWk6aWQ9Il9JWmJSa1pnSUVlU0Z0TG9WZTItc29RIiB0eXBlPSIxMDM0Ii8+DQorICAgICAgPGNoaWxkcmVuIHhtaTp0eXBlPSJub3RhdGlvbjpCYXNpY0NvbXBhcnRtZW50IiB4bWk6aWQ9Il9JWmI0b0pnSUVlU0Z0TG9WZTItc29RIiB2aXNpYmxlPSJmYWxzZSIgdHlwZT0iMTA3MSI+DQorICAgICAgICA8c3R5bGVzIHhtaTp0eXBlPSJub3RhdGlvbjpUaXRsZVN0eWxlIiB4bWk6aWQ9Il9JWmI0b1pnSUVlU0Z0TG9WZTItc29RIi8+DQorICAgICAgICA8c3R5bGVzIHhtaTp0eXBlPSJub3RhdGlvbjpTb3J0aW5nU3R5bGUiIHhtaTppZD0iX0laYjRvcGdJRWVTRnRMb1ZlMi1zb1EiLz4NCisgICAgICAgIDxzdHlsZXMgeG1pOnR5cGU9Im5vdGF0aW9uOkZpbHRlcmluZ1N0eWxlIiB4bWk6aWQ9Il9JWmI0bzVnSUVlU0Z0TG9WZTItc29RIi8+DQorICAgICAgICA8bGF5b3V0Q29uc3RyYWludCB4bWk6dHlwZT0ibm90YXRpb246Qm91bmRzIiB4bWk6aWQ9Il9JWmI0cEpnSUVlU0Z0TG9WZTItc29RIi8+DQorICAgICAgPC9jaGlsZHJlbj4NCisgICAgICA8Y2hpbGRyZW4geG1pOnR5cGU9Im5vdGF0aW9uOkJhc2ljQ29tcGFydG1lbnQiIHhtaTppZD0iX0laYjRwWmdJRWVTRnRMb1ZlMi1zb1EiIHZpc2libGU9ImZhbHNlIiB0eXBlPSIxMDE5Ij4NCisgICAgICAgIDxzdHlsZXMgeG1pOnR5cGU9Im5vdGF0aW9uOlRpdGxlU3R5bGUiIHhtaTppZD0iX0laYjRwcGdJRWVTRnRMb1ZlMi1zb1EiLz4NCisgICAgICAgIDxzdHlsZXMgeG1pOnR5cGU9Im5vdGF0aW9uOlNvcnRpbmdTdHlsZSIgeG1pOmlkPSJfSVpiNHA1Z0lFZVNGdExvVmUyLXNvUSIvPg0KKyAgICAgICAgPHN0eWxlcyB4bWk6dHlwZT0ibm90YXRpb246RmlsdGVyaW5nU3R5bGUiIHhtaTppZD0iX0laYjRxSmdJRWVTRnRMb1ZlMi1zb1EiLz4NCisgICAgICAgIDxsYXlvdXRDb25zdHJhaW50IHhtaTp0eXBlPSJub3RhdGlvbjpCb3VuZHMiIHhtaTppZD0iX0laYjRxWmdJRWVTRnRMb1ZlMi1zb1EiLz4NCisgICAgICA8L2NoaWxkcmVuPg0KKyAgICAgIDxlbGVtZW50IHhtaTp0eXBlPSJ1bWw6U3RlcmVvdHlwZSIgaHJlZj0iU3lzTUwucHJvZmlsZS51bWwjU3lzTUwtQmxvY2tzLUJpbmRpbmdDb25uZWN0b3IiLz4NCisgICAgICA8bGF5b3V0Q29uc3RyYWludCB4bWk6dHlwZT0ibm90YXRpb246Qm91bmRzIiB4bWk6aWQ9Il9JWmJSa0pnSUVlU0Z0TG9WZTItc29RIiB4PSIyMjAiIHk9IjIyMCIgd2lkdGg9IjEyMSIvPg0KKyAgICA8L2NoaWxkcmVuPg0KKyAgICA8Y2hpbGRyZW4geG1pOnR5cGU9Im5vdGF0aW9uOlNoYXBlIiB4bWk6aWQ9Il9JWmxDa0pnSUVlU0Z0TG9WZTItc29RIiB0eXBlPSIxMDMxIj4NCisgICAgICA8Y2hpbGRyZW4geG1pOnR5cGU9Im5vdGF0aW9uOkRlY29yYXRpb25Ob2RlIiB4bWk6aWQ9Il9JWmxDa3BnSUVlU0Z0TG9WZTItc29RIiB0eXBlPSIxMDg0Ii8+DQorICAgICAgPGVsZW1lbnQgeG1pOnR5cGU9InVtbDpDbGFzcyIgaHJlZj0icGF0aG1hcDovL1VNTF9NRVRBTU9ERUxTL1VNTC5tZXRhbW9kZWwudW1sI0Nvbm5lY3RvciIvPg0KKyAgICAgIDxsYXlvdXRDb25zdHJhaW50IHhtaTp0eXBlPSJub3RhdGlvbjpCb3VuZHMiIHhtaTppZD0iX0labENrWmdJRWVTRnRMb1ZlMi1zb1EiIHg9IjIyMCIgeT0iMTE3IiB3aWR0aD0iMTIxIi8+DQorICAgIDwvY2hpbGRyZW4+DQorICAgIDxjaGlsZHJlbiB4bWk6dHlwZT0ibm90YXRpb246U2hhcGUiIHhtaTppZD0iX0tLSkJRSmdJRWVTRnRMb1ZlMi1zb1EiIHR5cGU9IjEwMjYiPg0KKyAgICAgIDxjaGlsZHJlbiB4bWk6dHlwZT0ibm90YXRpb246RGVjb3JhdGlvbk5vZGUiIHhtaTppZD0iX0tLSm9VSmdJRWVTRnRMb1ZlMi1zb1EiIHR5cGU9IjEwMzQiLz4NCisgICAgICA8Y2hpbGRyZW4geG1pOnR5cGU9Im5vdGF0aW9uOkJhc2ljQ29tcGFydG1lbnQiIHhtaTppZD0iX0tLSm9VWmdJRWVTRnRMb1ZlMi1zb1EiIHZpc2libGU9ImZhbHNlIiB0eXBlPSIxMDcxIj4NCisgICAgICAgIDxzdHlsZXMgeG1pOnR5cGU9Im5vdGF0aW9uOlRpdGxlU3R5bGUiIHhtaTppZD0iX0tLSm9VcGdJRWVTRnRMb1ZlMi1zb1EiLz4NCisgICAgICAgIDxzdHlsZXMgeG1pOnR5cGU9Im5vdGF0aW9uOlNvcnRpbmdTdHlsZSIgeG1pOmlkPSJfS0tKb1U1Z0lFZVNGdExvVmUyLXNvUSIvPg0KKyAgICAgICAgPHN0eWxlcyB4bWk6dHlwZT0ibm90YXRpb246RmlsdGVyaW5nU3R5bGUiIHhtaTppZD0iX0tLSm9WSmdJRWVTRnRMb1ZlMi1zb1EiLz4NCisgICAgICAgIDxsYXlvdXRDb25zdHJhaW50IHhtaTp0eXBlPSJub3RhdGlvbjpCb3VuZHMiIHhtaTppZD0iX0tLSm9WWmdJRWVTRnRMb1ZlMi1zb1EiLz4NCisgICAgICA8L2NoaWxkcmVuPg0KKyAgICAgIDxjaGlsZHJlbiB4bWk6dHlwZT0ibm90YXRpb246QmFzaWNDb21wYXJ0bWVudCIgeG1pOmlkPSJfS0tKb1ZwZ0lFZVNGdExvVmUyLXNvUSIgdmlzaWJsZT0iZmFsc2UiIHR5cGU9IjEwMTkiPg0KKyAgICAgICAgPHN0eWxlcyB4bWk6dHlwZT0ibm90YXRpb246VGl0bGVTdHlsZSIgeG1pOmlkPSJfS0tKb1Y1Z0lFZVNGdExvVmUyLXNvUSIvPg0KKyAgICAgICAgPHN0eWxlcyB4bWk6dHlwZT0ibm90YXRpb246U29ydGluZ1N0eWxlIiB4bWk6aWQ9Il9LS0pvV0pnSUVlU0Z0TG9WZTItc29RIi8+DQorICAgICAgICA8c3R5bGVzIHhtaTp0eXBlPSJub3RhdGlvbjpGaWx0ZXJpbmdTdHlsZSIgeG1pOmlkPSJfS0tKb1daZ0lFZVNGdExvVmUyLXNvUSIvPg0KKyAgICAgICAgPGxheW91dENvbnN0cmFpbnQgeG1pOnR5cGU9Im5vdGF0aW9uOkJvdW5kcyIgeG1pOmlkPSJfS0tKb1dwZ0lFZVNGdExvVmUyLXNvUSIvPg0KKyAgICAgIDwvY2hpbGRyZW4+DQorICAgICAgPGVsZW1lbnQgeG1pOnR5cGU9InVtbDpTdGVyZW90eXBlIiBocmVmPSJTeXNNTC5wcm9maWxlLnVtbCNTeXNNTC1CbG9ja3MtTmVzdGVkQ29ubmVjdG9yRW5kIi8+DQorICAgICAgPGxheW91dENvbnN0cmFpbnQgeG1pOnR5cGU9Im5vdGF0aW9uOkJvdW5kcyIgeG1pOmlkPSJfS0tKQlFaZ0lFZVNGdExvVmUyLXNvUSIgeD0iNjYwIiB5PSIyMjAiIHdpZHRoPSIxMzQiLz4NCisgICAgPC9jaGlsZHJlbj4NCisgICAgPGNoaWxkcmVuIHhtaTp0eXBlPSJub3RhdGlvbjpTaGFwZSIgeG1pOmlkPSJfS0tSa0lKZ0lFZVNGdExvVmUyLXNvUSIgdHlwZT0iMTAzMSI+DQorICAgICAgPGNoaWxkcmVuIHhtaTp0eXBlPSJub3RhdGlvbjpEZWNvcmF0aW9uTm9kZSIgeG1pOmlkPSJfS0tSa0lwZ0lFZVNGdExvVmUyLXNvUSIgdHlwZT0iMTA4NCIvPg0KKyAgICAgIDxlbGVtZW50IHhtaTp0eXBlPSJ1bWw6Q2xhc3MiIGhyZWY9InBhdGhtYXA6Ly9VTUxfTUVUQU1PREVMUy9VTUwubWV0YW1vZGVsLnVtbCNDb25uZWN0b3JFbmQiLz4NCisgICAgICA8bGF5b3V0Q29uc3RyYWludCB4bWk6dHlwZT0ibm90YXRpb246Qm91bmRzIiB4bWk6aWQ9Il9LS1JrSVpnSUVlU0Z0TG9WZTItc29RIiB4PSI2NjAiIHk9IjEwMCIgd2lkdGg9IjEyMCIvPg0KKyAgICA8L2NoaWxkcmVuPg0KKyAgICA8Y2hpbGRyZW4geG1pOnR5cGU9Im5vdGF0aW9uOlNoYXBlIiB4bWk6aWQ9Il9Wdk5tOEpnSUVlU0Z0TG9WZTItc29RIiB0eXBlPSIxMDI2Ij4NCisgICAgICA8Y2hpbGRyZW4geG1pOnR5cGU9Im5vdGF0aW9uOkRlY29yYXRpb25Ob2RlIiB4bWk6aWQ9Il9Wdk9PQUpnSUVlU0Z0TG9WZTItc29RIiB0eXBlPSIxMDM0Ii8+DQorICAgICAgPGNoaWxkcmVuIHhtaTp0eXBlPSJub3RhdGlvbjpCYXNpY0NvbXBhcnRtZW50IiB4bWk6aWQ9Il9Wdk9PQVpnSUVlU0Z0TG9WZTItc29RIiB0eXBlPSIxMDcxIj4NCisgICAgICAgIDxzdHlsZXMgeG1pOnR5cGU9Im5vdGF0aW9uOlRpdGxlU3R5bGUiIHhtaTppZD0iX1Z2T09BcGdJRWVTRnRMb1ZlMi1zb1EiLz4NCisgICAgICAgIDxzdHlsZXMgeG1pOnR5cGU9Im5vdGF0aW9uOlNvcnRpbmdTdHlsZSIgeG1pOmlkPSJfVnZPT0E1Z0lFZVNGdExvVmUyLXNvUSIvPg0KKyAgICAgICAgPHN0eWxlcyB4bWk6dHlwZT0ibm90YXRpb246RmlsdGVyaW5nU3R5bGUiIHhtaTppZD0iX1Z2T09CSmdJRWVTRnRMb1ZlMi1zb1EiLz4NCisgICAgICAgIDxsYXlvdXRDb25zdHJhaW50IHhtaTp0eXBlPSJub3RhdGlvbjpCb3VuZHMiIHhtaTppZD0iX1Z2T09CWmdJRWVTRnRMb1ZlMi1zb1EiLz4NCisgICAgICA8L2NoaWxkcmVuPg0KKyAgICAgIDxjaGlsZHJlbiB4bWk6dHlwZT0ibm90YXRpb246QmFzaWNDb21wYXJ0bWVudCIgeG1pOmlkPSJfVnZPMUVKZ0lFZVNGdExvVmUyLXNvUSIgdHlwZT0iMTAxOSI+DQorICAgICAgICA8c3R5bGVzIHhtaTp0eXBlPSJub3RhdGlvbjpUaXRsZVN0eWxlIiB4bWk6aWQ9Il9Wdk8xRVpnSUVlU0Z0TG9WZTItc29RIi8+DQorICAgICAgICA8c3R5bGVzIHhtaTp0eXBlPSJub3RhdGlvbjpTb3J0aW5nU3R5bGUiIHhtaTppZD0iX1Z2TzFFcGdJRWVTRnRMb1ZlMi1zb1EiLz4NCisgICAgICAgIDxzdHlsZXMgeG1pOnR5cGU9Im5vdGF0aW9uOkZpbHRlcmluZ1N0eWxlIiB4bWk6aWQ9Il9Wdk8xRTVnSUVlU0Z0TG9WZTItc29RIi8+DQorICAgICAgICA8bGF5b3V0Q29uc3RyYWludCB4bWk6dHlwZT0ibm90YXRpb246Qm91bmRzIiB4bWk6aWQ9Il9Wdk8xRkpnSUVlU0Z0TG9WZTItc29RIi8+DQorICAgICAgPC9jaGlsZHJlbj4NCisgICAgICA8ZWxlbWVudCB4bWk6dHlwZT0idW1sOlN0ZXJlb3R5cGUiIGhyZWY9IlN5c01MLnByb2ZpbGUudW1sI1N5c01MLUJsb2Nrcy1FbGVtZW50UHJvcGVydHlQYXRoIi8+DQorICAgICAgPGxheW91dENvbnN0cmFpbnQgeG1pOnR5cGU9Im5vdGF0aW9uOkJvdW5kcyIgeG1pOmlkPSJfVnZObThaZ0lFZVNGdExvVmUyLXNvUSIgeD0iODYwIiB5PSIxMDAiLz4NCisgICAgPC9jaGlsZHJlbj4NCisgICAgPHN0eWxlcyB4bWk6dHlwZT0ibm90YXRpb246U3RyaW5nVmFsdWVTdHlsZSIgeG1pOmlkPSJfRUVlRGdaZ0lFZVNGdExvVmUyLXNvUSIgbmFtZT0iZGlhZ3JhbV9jb21wYXRpYmlsaXR5X3ZlcnNpb24iIHN0cmluZ1ZhbHVlPSIxLjAuMCIvPg0KKyAgICA8c3R5bGVzIHhtaTp0eXBlPSJub3RhdGlvbjpEaWFncmFtU3R5bGUiIHhtaTppZD0iX0VFZURncGdJRWVTRnRMb1ZlMi1zb1EiLz4NCisgICAgPHN0eWxlcyB4bWk6dHlwZT0ic3R5bGU6UGFweXJ1c1ZpZXdTdHlsZSIgeG1pOmlkPSJfRUVlRGc1Z0lFZVNGdExvVmUyLXNvUSI+DQorICAgICAgPG93bmVyIHhtaTp0eXBlPSJ1bWw6UGFja2FnZSIgaHJlZj0iU3lzTUwucHJvZmlsZS51bWwjU3lzTUwtQmxvY2tzIi8+DQorICAgIDwvc3R5bGVzPg0KKyAgICA8ZWxlbWVudCB4bWk6dHlwZT0idW1sOlBhY2thZ2UiIGhyZWY9IlN5c01MLnByb2ZpbGUudW1sI1N5c01MLUJsb2NrcyIvPg0KKyAgICA8ZWRnZXMgeG1pOnR5cGU9Im5vdGF0aW9uOkNvbm5lY3RvciIgeG1pOmlkPSJfSVpySk1KZ0lFZVNGdExvVmUyLXNvUSIgdHlwZT0iMTAxMyIgc291cmNlPSJfSVphcWdKZ0lFZVNGdExvVmUyLXNvUSIgdGFyZ2V0PSJfSVpsQ2tKZ0lFZVNGdExvVmUyLXNvUSI+DQorICAgICAgPHN0eWxlcyB4bWk6dHlwZT0ibm90YXRpb246Rm9udFN0eWxlIiB4bWk6aWQ9Il9JWnJKTVpnSUVlU0Z0TG9WZTItc29RIi8+DQorICAgICAgPGVsZW1lbnQgeG1pOnR5cGU9InVtbDpFeHRlbnNpb24iIGhyZWY9IlN5c01MLnByb2ZpbGUudW1sI1N5c01MLUJsb2Nrcy1FX2V4dGVuc2lvbl9CaW5kaW5nQ29ubmVjdG9yX2Jhc2VfQ29ubmVjdG9yIi8+DQorICAgICAgPGJlbmRwb2ludHMgeG1pOnR5cGU9Im5vdGF0aW9uOlJlbGF0aXZlQmVuZHBvaW50cyIgeG1pOmlkPSJfSVpySk1wZ0lFZVNGdExvVmUyLXNvUSIgcG9pbnRzPSJbMCwgMCwgMCwgMF0kWzAsIDAsIDAsIDBdIi8+DQorICAgICAgPHNvdXJjZUFuY2hvciB4bWk6dHlwZT0ibm90YXRpb246SWRlbnRpdHlBbmNob3IiIHhtaTppZD0iX040Qm9RSmdJRWVTRnRMb1ZlMi1zb1EiIGlkPSIoMC40NywwLjApIi8+DQorICAgICAgPHRhcmdldEFuY2hvciB4bWk6dHlwZT0ibm90YXRpb246SWRlbnRpdHlBbmNob3IiIHhtaTppZD0iX040Qm9RWmdJRWVTRnRMb1ZlMi1zb1EiIGlkPSIoMC41MiwxLjApIi8+DQorICAgIDwvZWRnZXM+DQorICAgIDxlZGdlcyB4bWk6dHlwZT0ibm90YXRpb246Q29ubmVjdG9yIiB4bWk6aWQ9Il9LS1djb0pnSUVlU0Z0TG9WZTItc29RIiB0eXBlPSIxMDEzIiBzb3VyY2U9Il9LS0pCUUpnSUVlU0Z0TG9WZTItc29RIiB0YXJnZXQ9Il9LS1JrSUpnSUVlU0Z0TG9WZTItc29RIj4NCisgICAgICA8c3R5bGVzIHhtaTp0eXBlPSJub3RhdGlvbjpGb250U3R5bGUiIHhtaTppZD0iX0tLV2NvWmdJRWVTRnRMb1ZlMi1zb1EiLz4NCisgICAgICA8ZWxlbWVudCB4bWk6dHlwZT0idW1sOkV4dGVuc2lvbiIgaHJlZj0iU3lzTUwucHJvZmlsZS51bWwjU3lzTUwtQmxvY2tzLUVfZXh0ZW5zaW9uX05lc3RlZENvbm5lY3RvckVuZF9iYXNlX0Nvbm5lY3RvckVuZCIvPg0KKyAgICAgIDxiZW5kcG9pbnRzIHhtaTp0eXBlPSJub3RhdGlvbjpSZWxhdGl2ZUJlbmRwb2ludHMiIHhtaTppZD0iX0tLV2NvcGdJRWVTRnRMb1ZlMi1zb1EiIHBvaW50cz0iWzAsIDAsIDAsIDBdJFswLCAwLCAwLCAwXSIvPg0KKyAgICAgIDxzb3VyY2VBbmNob3IgeG1pOnR5cGU9Im5vdGF0aW9uOklkZW50aXR5QW5jaG9yIiB4bWk6aWQ9Il9LdVB6NEpnSUVlU0Z0TG9WZTItc29RIiBpZD0iKDAuNDkxMjI4MDcwMTc1NDM4NTcsMC4wKSIvPg0KKyAgICAgIDx0YXJnZXRBbmNob3IgeG1pOnR5cGU9Im5vdGF0aW9uOklkZW50aXR5QW5jaG9yIiB4bWk6aWQ9Il9LdVB6NFpnSUVlU0Z0TG9WZTItc29RIiBpZD0iKDAuNTYsMS4wKSIvPg0KKyAgICA8L2VkZ2VzPg0KKyAgICA8ZWRnZXMgeG1pOnR5cGU9Im5vdGF0aW9uOkNvbm5lY3RvciIgeG1pOmlkPSJfVzRUOUFKZ0lFZVNGdExvVmUyLXNvUSIgdHlwZT0iNDAwMiIgc291cmNlPSJfS0tKQlFKZ0lFZVNGdExvVmUyLXNvUSIgdGFyZ2V0PSJfVnZObThKZ0lFZVNGdExvVmUyLXNvUSI+DQorICAgICAgPGNoaWxkcmVuIHhtaTp0eXBlPSJub3RhdGlvbjpEZWNvcmF0aW9uTm9kZSIgeG1pOmlkPSJfVzRVa0VKZ0lFZVNGdExvVmUyLXNvUSIgdHlwZT0iNjAwNyI+DQorICAgICAgICA8bGF5b3V0Q29uc3RyYWludCB4bWk6dHlwZT0ibm90YXRpb246TG9jYXRpb24iIHhtaTppZD0iX1c0VWtFWmdJRWVTRnRMb1ZlMi1zb1EiIHk9IjYwIi8+DQorICAgICAgPC9jaGlsZHJlbj4NCisgICAgICA8c3R5bGVzIHhtaTp0eXBlPSJub3RhdGlvbjpGb250U3R5bGUiIHhtaTppZD0iX1c0VDlBWmdJRWVTRnRMb1ZlMi1zb1EiLz4NCisgICAgICA8ZWxlbWVudCB4bWk6dHlwZT0idW1sOkdlbmVyYWxpemF0aW9uIiBocmVmPSJTeXNNTC5wcm9maWxlLnVtbCNTeXNNTC1CbG9ja3MtTmVzdGVkQ29ubmVjdG9yRW5kLWdlbmVyYWxpemF0aW9uIi8+DQorICAgICAgPGJlbmRwb2ludHMgeG1pOnR5cGU9Im5vdGF0aW9uOlJlbGF0aXZlQmVuZHBvaW50cyIgeG1pOmlkPSJfVzRUOUFwZ0lFZVNGdExvVmUyLXNvUSIgcG9pbnRzPSJbNTcsIC00LCAtMTIyLCAxMTZdJFsxNzksIC0xMCwgMCwgMTEwXSRbMTc5LCAtNzAsIDAsIDUwXSIvPg0KKyAgICA8L2VkZ2VzPg0KKyAgPC9ub3RhdGlvbjpEaWFncmFtPg0KKyAgPG5vdGF0aW9uOkRpYWdyYW0geG1pOmlkPSJfamNhOTBKZ0lFZVNGdExvVmUyLXNvUSIgdHlwZT0iUGFweXJ1c1VNTFByb2ZpbGVEaWFncmFtIiBuYW1lPSJQcm9wZXJ0eVNwZWNpZmljVHlwZSIgbWVhc3VyZW1lbnRVbml0PSJQaXhlbCI+DQorICAgIDxjaGlsZHJlbiB4bWk6dHlwZT0ibm90YXRpb246U2hhcGUiIHhtaTppZD0iX21LS1djSmdJRWVTRnRMb1ZlMi1zb1EiIHR5cGU9IjEwMjYiPg0KKyAgICAgIDxjaGlsZHJlbiB4bWk6dHlwZT0ibm90YXRpb246RGVjb3JhdGlvbk5vZGUiIHhtaTppZD0iX21LSzlnSmdJRWVTRnRMb1ZlMi1zb1EiIHR5cGU9IjEwMzQiLz4NCisgICAgICA8Y2hpbGRyZW4geG1pOnR5cGU9Im5vdGF0aW9uOkJhc2ljQ29tcGFydG1lbnQiIHhtaTppZD0iX21LSzlnWmdJRWVTRnRMb1ZlMi1zb1EiIHZpc2libGU9ImZhbHNlIiB0eXBlPSIxMDcxIj4NCisgICAgICAgIDxzdHlsZXMgeG1pOnR5cGU9Im5vdGF0aW9uOlRpdGxlU3R5bGUiIHhtaTppZD0iX21LSzlncGdJRWVTRnRMb1ZlMi1zb1EiLz4NCisgICAgICAgIDxzdHlsZXMgeG1pOnR5cGU9Im5vdGF0aW9uOlNvcnRpbmdTdHlsZSIgeG1pOmlkPSJfbUtLOWc1Z0lFZVNGdExvVmUyLXNvUSIvPg0KKyAgICAgICAgPHN0eWxlcyB4bWk6dHlwZT0ibm90YXRpb246RmlsdGVyaW5nU3R5bGUiIHhtaTppZD0iX21LSzloSmdJRWVTRnRMb1ZlMi1zb1EiLz4NCisgICAgICAgIDxsYXlvdXRDb25zdHJhaW50IHhtaTp0eXBlPSJub3RhdGlvbjpCb3VuZHMiIHhtaTppZD0iX21LSzloWmdJRWVTRnRMb1ZlMi1zb1EiLz4NCisgICAgICA8L2NoaWxkcmVuPg0KKyAgICAgIDxjaGlsZHJlbiB4bWk6dHlwZT0ibm90YXRpb246QmFzaWNDb21wYXJ0bWVudCIgeG1pOmlkPSJfbUtMa2tKZ0lFZVNGdExvVmUyLXNvUSIgdmlzaWJsZT0iZmFsc2UiIHR5cGU9IjEwMTkiPg0KKyAgICAgICAgPHN0eWxlcyB4bWk6dHlwZT0ibm90YXRpb246VGl0bGVTdHlsZSIgeG1pOmlkPSJfbUtMa2taZ0lFZVNGdExvVmUyLXNvUSIvPg0KKyAgICAgICAgPHN0eWxlcyB4bWk6dHlwZT0ibm90YXRpb246U29ydGluZ1N0eWxlIiB4bWk6aWQ9Il9tS0xra3BnSUVlU0Z0TG9WZTItc29RIi8+DQorICAgICAgICA8c3R5bGVzIHhtaTp0eXBlPSJub3RhdGlvbjpGaWx0ZXJpbmdTdHlsZSIgeG1pOmlkPSJfbUtMa2s1Z0lFZVNGdExvVmUyLXNvUSIvPg0KKyAgICAgICAgPGxheW91dENvbnN0cmFpbnQgeG1pOnR5cGU9Im5vdGF0aW9uOkJvdW5kcyIgeG1pOmlkPSJfbUtMa2xKZ0lFZVNGdExvVmUyLXNvUSIvPg0KKyAgICAgIDwvY2hpbGRyZW4+DQorICAgICAgPGVsZW1lbnQgeG1pOnR5cGU9InVtbDpTdGVyZW90eXBlIiBocmVmPSJTeXNNTC5wcm9maWxlLnVtbCNTeXNNTC1CbG9ja3MtUHJvcGVydHlTcGVjaWZpY1R5cGUiLz4NCisgICAgICA8bGF5b3V0Q29uc3RyYWludCB4bWk6dHlwZT0ibm90YXRpb246Qm91bmRzIiB4bWk6aWQ9Il9tS0tXY1pnSUVlU0Z0TG9WZTItc29RIiB4PSI0NzgiIHk9IjIyOCIvPg0KKyAgICA8L2NoaWxkcmVuPg0KKyAgICA8Y2hpbGRyZW4geG1pOnR5cGU9Im5vdGF0aW9uOlNoYXBlIiB4bWk6aWQ9Il9tMXBqY0pnSUVlU0Z0TG9WZTItc29RIiB0eXBlPSIxMDMxIj4NCisgICAgICA8Y2hpbGRyZW4geG1pOnR5cGU9Im5vdGF0aW9uOkRlY29yYXRpb25Ob2RlIiB4bWk6aWQ9Il9tMXFLZ0pnSUVlU0Z0TG9WZTItc29RIiB0eXBlPSIxMDg0Ii8+DQorICAgICAgPGVsZW1lbnQgeG1pOnR5cGU9InVtbDpDbGFzcyIgaHJlZj0icGF0aG1hcDovL1VNTF9NRVRBTU9ERUxTL1VNTC5tZXRhbW9kZWwudW1sI0NsYXNzaWZpZXIiLz4NCisgICAgICA8bGF5b3V0Q29uc3RyYWludCB4bWk6dHlwZT0ibm90YXRpb246Qm91bmRzIiB4bWk6aWQ9Il9tMXBqY1pnSUVlU0Z0TG9WZTItc29RIiB4PSI0ODAiIHk9IjQwIi8+DQorICAgIDwvY2hpbGRyZW4+DQorICAgIDxzdHlsZXMgeG1pOnR5cGU9Im5vdGF0aW9uOlN0cmluZ1ZhbHVlU3R5bGUiIHhtaTppZD0iX2pjYTkwWmdJRWVTRnRMb1ZlMi1zb1EiIG5hbWU9ImRpYWdyYW1fY29tcGF0aWJpbGl0eV92ZXJzaW9uIiBzdHJpbmdWYWx1ZT0iMS4wLjAiLz4NCisgICAgPHN0eWxlcyB4bWk6dHlwZT0ibm90YXRpb246RGlhZ3JhbVN0eWxlIiB4bWk6aWQ9Il9qY2E5MHBnSUVlU0Z0TG9WZTItc29RIi8+DQorICAgIDxzdHlsZXMgeG1pOnR5cGU9InN0eWxlOlBhcHlydXNWaWV3U3R5bGUiIHhtaTppZD0iX2pjYTkwNWdJRWVTRnRMb1ZlMi1zb1EiPg0KKyAgICAgIDxvd25lciB4bWk6dHlwZT0idW1sOlBhY2thZ2UiIGhyZWY9IlN5c01MLnByb2ZpbGUudW1sI1N5c01MLUJsb2NrcyIvPg0KKyAgICA8L3N0eWxlcz4NCisgICAgPGVsZW1lbnQgeG1pOnR5cGU9InVtbDpQYWNrYWdlIiBocmVmPSJTeXNNTC5wcm9maWxlLnVtbCNTeXNNTC1CbG9ja3MiLz4NCisgICAgPGVkZ2VzIHhtaTp0eXBlPSJub3RhdGlvbjpDb25uZWN0b3IiIHhtaTppZD0iX20xMGlrSmdJRWVTRnRMb1ZlMi1zb1EiIHR5cGU9IjEwMTMiIHNvdXJjZT0iX21LS1djSmdJRWVTRnRMb1ZlMi1zb1EiIHRhcmdldD0iX20xcGpjSmdJRWVTRnRMb1ZlMi1zb1EiPg0KKyAgICAgIDxzdHlsZXMgeG1pOnR5cGU9Im5vdGF0aW9uOkZvbnRTdHlsZSIgeG1pOmlkPSJfbTEwaWtaZ0lFZVNGdExvVmUyLXNvUSIvPg0KKyAgICAgIDxlbGVtZW50IHhtaTp0eXBlPSJ1bWw6RXh0ZW5zaW9uIiBocmVmPSJTeXNNTC5wcm9maWxlLnVtbCNTeXNNTC1CbG9ja3MtRV9leHRlbnNpb25fUHJvcGVydHlTcGVjaWZpY1R5cGVfYmFzZV9DbGFzc2lmaWVyIi8+DQorICAgICAgPGJlbmRwb2ludHMgeG1pOnR5cGU9Im5vdGF0aW9uOlJlbGF0aXZlQmVuZHBvaW50cyIgeG1pOmlkPSJfbTEwaWtwZ0lFZVNGdExvVmUyLXNvUSIgcG9pbnRzPSJbMjYsIDAsIDQ2LCAxMzhdJFsyNiwgLTEzOCwgNDYsIDBdIi8+DQorICAgICAgPHNvdXJjZUFuY2hvciB4bWk6dHlwZT0ibm90YXRpb246SWRlbnRpdHlBbmNob3IiIHhtaTppZD0iX25Jd3NzSmdJRWVTRnRMb1ZlMi1zb1EiIGlkPSIoMC4zMTg1ODQwNzA3OTY0NjAyLDAuMCkiLz4NCisgICAgICA8dGFyZ2V0QW5jaG9yIHhtaTp0eXBlPSJub3RhdGlvbjpJZGVudGl0eUFuY2hvciIgeG1pOmlkPSJfbkl4VHdKZ0lFZVNGdExvVmUyLXNvUSIgaWQ9IigwLjE0LDEuMCkiLz4NCisgICAgPC9lZGdlcz4NCisgIDwvbm90YXRpb246RGlhZ3JhbT4NCisgIDxub3RhdGlvbjpEaWFncmFtIHhtaTppZD0iX3V1VXY0SmdJRWVTRnRMb1ZlMi1zb1EiIHR5cGU9IlBhcHlydXNVTUxQcm9maWxlRGlhZ3JhbSIgbmFtZT0iQm91bmRSZWZlcmVuY2UiIG1lYXN1cmVtZW50VW5pdD0iUGl4ZWwiPg0KKyAgICA8Y2hpbGRyZW4geG1pOnR5cGU9Im5vdGF0aW9uOlNoYXBlIiB4bWk6aWQ9Il93NDJHc0pnSUVlU0Z0TG9WZTItc29RIiB0eXBlPSIxMDI2Ij4NCisgICAgICA8Y2hpbGRyZW4geG1pOnR5cGU9Im5vdGF0aW9uOkRlY29yYXRpb25Ob2RlIiB4bWk6aWQ9Il93NDJHc3BnSUVlU0Z0TG9WZTItc29RIiB0eXBlPSIxMDM0Ii8+DQorICAgICAgPGNoaWxkcmVuIHhtaTp0eXBlPSJub3RhdGlvbjpCYXNpY0NvbXBhcnRtZW50IiB4bWk6aWQ9Il93NDJHczVnSUVlU0Z0TG9WZTItc29RIiB0eXBlPSIxMDcxIj4NCisgICAgICAgIDxjaGlsZHJlbiB4bWk6dHlwZT0ibm90YXRpb246U2hhcGUiIHhtaTppZD0iX3p3S1NFSmdJRWVTRnRMb1ZlMi1zb1EiIHR5cGU9IjMwMDIiPg0KKyAgICAgICAgICA8ZWxlbWVudCB4bWk6dHlwZT0idW1sOlByb3BlcnR5IiBocmVmPSJTeXNNTC5wcm9maWxlLnVtbCNTeXNNTC1CbG9ja3MtRW5kUGF0aE11bHRpcGxpY2l0eS1sb3dlciIvPg0KKyAgICAgICAgICA8bGF5b3V0Q29uc3RyYWludCB4bWk6dHlwZT0ibm90YXRpb246TG9jYXRpb24iIHhtaTppZD0iX3p3S1NFWmdJRWVTRnRMb1ZlMi1zb1EiLz4NCisgICAgICAgIDwvY2hpbGRyZW4+DQorICAgICAgICA8Y2hpbGRyZW4geG1pOnR5cGU9Im5vdGF0aW9uOlNoYXBlIiB4bWk6aWQ9Il8wVFVwZ0pnSUVlU0Z0TG9WZTItc29RIiB0eXBlPSIzMDAyIj4NCisgICAgICAgICAgPGVsZW1lbnQgeG1pOnR5cGU9InVtbDpQcm9wZXJ0eSIgaHJlZj0iU3lzTUwucHJvZmlsZS51bWwjU3lzTUwtQmxvY2tzLUVuZFBhdGhNdWx0aXBsaWNpdHktdXBwZXIiLz4NCisgICAgICAgICAgPGxheW91dENvbnN0cmFpbnQgeG1pOnR5cGU9Im5vdGF0aW9uOkxvY2F0aW9uIiB4bWk6aWQ9Il8wVFVwZ1pnSUVlU0Z0TG9WZTItc29RIi8+DQorICAgICAgICA8L2NoaWxkcmVuPg0KKyAgICAgICAgPHN0eWxlcyB4bWk6dHlwZT0ibm90YXRpb246VGl0bGVTdHlsZSIgeG1pOmlkPSJfdzQyR3RKZ0lFZVNGdExvVmUyLXNvUSIvPg0KKyAgICAgICAgPHN0eWxlcyB4bWk6dHlwZT0ibm90YXRpb246U29ydGluZ1N0eWxlIiB4bWk6aWQ9Il93NDJHdFpnSUVlU0Z0TG9WZTItc29RIi8+DQorICAgICAgICA8c3R5bGVzIHhtaTp0eXBlPSJub3RhdGlvbjpGaWx0ZXJpbmdTdHlsZSIgeG1pOmlkPSJfdzQyR3RwZ0lFZVNGdExvVmUyLXNvUSIvPg0KKyAgICAgICAgPGxheW91dENvbnN0cmFpbnQgeG1pOnR5cGU9Im5vdGF0aW9uOkJvdW5kcyIgeG1pOmlkPSJfdzQyR3Q1Z0lFZVNGdExvVmUyLXNvUSIvPg0KKyAgICAgIDwvY2hpbGRyZW4+DQorICAgICAgPGNoaWxkcmVuIHhtaTp0eXBlPSJub3RhdGlvbjpCYXNpY0NvbXBhcnRtZW50IiB4bWk6aWQ9Il93NDJ0d0pnSUVlU0Z0TG9WZTItc29RIiB2aXNpYmxlPSJmYWxzZSIgdHlwZT0iMTAxOSI+DQorICAgICAgICA8c3R5bGVzIHhtaTp0eXBlPSJub3RhdGlvbjpUaXRsZVN0eWxlIiB4bWk6aWQ9Il93NDJ0d1pnSUVlU0Z0TG9WZTItc29RIi8+DQorICAgICAgICA8c3R5bGVzIHhtaTp0eXBlPSJub3RhdGlvbjpTb3J0aW5nU3R5bGUiIHhtaTppZD0iX3c0MnR3cGdJRWVTRnRMb1ZlMi1zb1EiLz4NCisgICAgICAgIDxzdHlsZXMgeG1pOnR5cGU9Im5vdGF0aW9uOkZpbHRlcmluZ1N0eWxlIiB4bWk6aWQ9Il93NDJ0dzVnSUVlU0Z0TG9WZTItc29RIi8+DQorICAgICAgICA8bGF5b3V0Q29uc3RyYWludCB4bWk6dHlwZT0ibm90YXRpb246Qm91bmRzIiB4bWk6aWQ9Il93NDJ0eEpnSUVlU0Z0TG9WZTItc29RIi8+DQorICAgICAgPC9jaGlsZHJlbj4NCisgICAgICA8ZWxlbWVudCB4bWk6dHlwZT0idW1sOlN0ZXJlb3R5cGUiIGhyZWY9IlN5c01MLnByb2ZpbGUudW1sI1N5c01MLUJsb2Nrcy1FbmRQYXRoTXVsdGlwbGljaXR5Ii8+DQorICAgICAgPGxheW91dENvbnN0cmFpbnQgeG1pOnR5cGU9Im5vdGF0aW9uOkJvdW5kcyIgeG1pOmlkPSJfdzQyR3NaZ0lFZVNGdExvVmUyLXNvUSIgeD0iNDIzIiB5PSIyMTQiIGhlaWdodD0iODciLz4NCisgICAgPC9jaGlsZHJlbj4NCisgICAgPGNoaWxkcmVuIHhtaTp0eXBlPSJub3RhdGlvbjpTaGFwZSIgeG1pOmlkPSJfeUtRRU1KZ0lFZVNGdExvVmUyLXNvUSIgdHlwZT0iMTAzMSI+DQorICAgICAgPGNoaWxkcmVuIHhtaTp0eXBlPSJub3RhdGlvbjpEZWNvcmF0aW9uTm9kZSIgeG1pOmlkPSJfeUtRclFKZ0lFZVNGdExvVmUyLXNvUSIgdHlwZT0iMTA4NCIvPg0KKyAgICAgIDxlbGVtZW50IHhtaTp0eXBlPSJ1bWw6Q2xhc3MiIGhyZWY9InBhdGhtYXA6Ly9VTUxfTUVUQU1PREVMUy9VTUwubWV0YW1vZGVsLnVtbCNQcm9wZXJ0eSIvPg0KKyAgICAgIDxsYXlvdXRDb25zdHJhaW50IHhtaTp0eXBlPSJub3RhdGlvbjpCb3VuZHMiIHhtaTppZD0iX3lLUUVNWmdJRWVTRnRMb1ZlMi1zb1EiIHg9IjQyMCIgeT0iMTIwIiB3aWR0aD0iMjAxIi8+DQorICAgIDwvY2hpbGRyZW4+DQorICAgIDxjaGlsZHJlbiB4bWk6dHlwZT0ibm90YXRpb246U2hhcGUiIHhtaTppZD0iX0lqa1BrSmdKRWVTRnRMb1ZlMi1zb1EiIHR5cGU9IjEwMjYiPg0KKyAgICAgIDxjaGlsZHJlbiB4bWk6dHlwZT0ibm90YXRpb246RGVjb3JhdGlvbk5vZGUiIHhtaTppZD0iX0lqazJvSmdKRWVTRnRMb1ZlMi1zb1EiIHR5cGU9IjEwMzQiLz4NCisgICAgICA8Y2hpbGRyZW4geG1pOnR5cGU9Im5vdGF0aW9uOkJhc2ljQ29tcGFydG1lbnQiIHhtaTppZD0iX0lqazJvWmdKRWVTRnRMb1ZlMi1zb1EiIHR5cGU9IjEwNzEiPg0KKyAgICAgICAgPGVBbm5vdGF0aW9ucyB4bWk6dHlwZT0iZWNvcmU6RUFubm90YXRpb24iIHhtaTppZD0iX1NQTFpRSmdKRWVTRnRMb1ZlMi1zb1EiIHNvdXJjZT0iUGFweXJ1c0NTU0ZvcmNlVmFsdWUiPg0KKyAgICAgICAgICA8ZGV0YWlscyB4bWk6dHlwZT0iZWNvcmU6RVN0cmluZ1RvU3RyaW5nTWFwRW50cnkiIHhtaTppZD0iX1NQTFpRWmdKRWVTRnRMb1ZlMi1zb1EiIGtleT0idmlzaWJsZSIgdmFsdWU9InRydWUiLz4NCisgICAgICAgIDwvZUFubm90YXRpb25zPg0KKyAgICAgICAgPGNoaWxkcmVuIHhtaTp0eXBlPSJub3RhdGlvbjpTaGFwZSIgeG1pOmlkPSJfTk1DMmtKZ0pFZVNGdExvVmUyLXNvUSIgdHlwZT0iMzAwMiI+DQorICAgICAgICAgIDxlbGVtZW50IHhtaTp0eXBlPSJ1bWw6UHJvcGVydHkiIGhyZWY9IlN5c01MLnByb2ZpbGUudW1sI1N5c01MLUJsb2Nrcy1Cb3VuZFJlZmVyZW5jZS1iaW5kaW5nUGF0aCIvPg0KKyAgICAgICAgICA8bGF5b3V0Q29uc3RyYWludCB4bWk6dHlwZT0ibm90YXRpb246TG9jYXRpb24iIHhtaTppZD0iX05NQzJrWmdKRWVTRnRMb1ZlMi1zb1EiLz4NCisgICAgICAgIDwvY2hpbGRyZW4+DQorICAgICAgICA8Y2hpbGRyZW4geG1pOnR5cGU9Im5vdGF0aW9uOlNoYXBlIiB4bWk6aWQ9Il9PdFdSUUpnSkVlU0Z0TG9WZTItc29RIiB0eXBlPSIzMDAyIj4NCisgICAgICAgICAgPGVsZW1lbnQgeG1pOnR5cGU9InVtbDpQcm9wZXJ0eSIgaHJlZj0iU3lzTUwucHJvZmlsZS51bWwjU3lzTUwtQmxvY2tzLUJvdW5kUmVmZXJlbmNlLWJvdW5kRW5kIi8+DQorICAgICAgICAgIDxsYXlvdXRDb25zdHJhaW50IHhtaTp0eXBlPSJub3RhdGlvbjpMb2NhdGlvbiIgeG1pOmlkPSJfT3RXUlFaZ0pFZVNGdExvVmUyLXNvUSIvPg0KKyAgICAgICAgPC9jaGlsZHJlbj4NCisgICAgICAgIDxzdHlsZXMgeG1pOnR5cGU9Im5vdGF0aW9uOlRpdGxlU3R5bGUiIHhtaTppZD0iX0lqazJvcGdKRWVTRnRMb1ZlMi1zb1EiLz4NCisgICAgICAgIDxzdHlsZXMgeG1pOnR5cGU9Im5vdGF0aW9uOlNvcnRpbmdTdHlsZSIgeG1pOmlkPSJfSWprMm81Z0pFZVNGdExvVmUyLXNvUSIvPg0KKyAgICAgICAgPHN0eWxlcyB4bWk6dHlwZT0ibm90YXRpb246RmlsdGVyaW5nU3R5bGUiIHhtaTppZD0iX0lqazJwSmdKRWVTRnRMb1ZlMi1zb1EiLz4NCisgICAgICAgIDxsYXlvdXRDb25zdHJhaW50IHhtaTp0eXBlPSJub3RhdGlvbjpCb3VuZHMiIHhtaTppZD0iX0lqazJwWmdKRWVTRnRMb1ZlMi1zb1EiLz4NCisgICAgICA8L2NoaWxkcmVuPg0KKyAgICAgIDxjaGlsZHJlbiB4bWk6dHlwZT0ibm90YXRpb246QmFzaWNDb21wYXJ0bWVudCIgeG1pOmlkPSJfSWprMnBwZ0pFZVNGdExvVmUyLXNvUSIgdmlzaWJsZT0iZmFsc2UiIHR5cGU9IjEwMTkiPg0KKyAgICAgICAgPHN0eWxlcyB4bWk6dHlwZT0ibm90YXRpb246VGl0bGVTdHlsZSIgeG1pOmlkPSJfSWprMnA1Z0pFZVNGdExvVmUyLXNvUSIvPg0KKyAgICAgICAgPHN0eWxlcyB4bWk6dHlwZT0ibm90YXRpb246U29ydGluZ1N0eWxlIiB4bWk6aWQ9Il9JamsycUpnSkVlU0Z0TG9WZTItc29RIi8+DQorICAgICAgICA8c3R5bGVzIHhtaTp0eXBlPSJub3RhdGlvbjpGaWx0ZXJpbmdTdHlsZSIgeG1pOmlkPSJfSWprMnFaZ0pFZVNGdExvVmUyLXNvUSIvPg0KKyAgICAgICAgPGxheW91dENvbnN0cmFpbnQgeG1pOnR5cGU9Im5vdGF0aW9uOkJvdW5kcyIgeG1pOmlkPSJfSWprMnFwZ0pFZVNGdExvVmUyLXNvUSIvPg0KKyAgICAgIDwvY2hpbGRyZW4+DQorICAgICAgPGVsZW1lbnQgeG1pOnR5cGU9InVtbDpTdGVyZW90eXBlIiBocmVmPSJTeXNNTC5wcm9maWxlLnVtbCNTeXNNTC1CbG9ja3MtQm91bmRSZWZlcmVuY2UiLz4NCisgICAgICA8bGF5b3V0Q29uc3RyYWludCB4bWk6dHlwZT0ibm90YXRpb246Qm91bmRzIiB4bWk6aWQ9Il9JamtQa1pnSkVlU0Z0TG9WZTItc29RIiB4PSI0MjAiIHk9IjM0MCIgd2lkdGg9IjIwMSIgaGVpZ2h0PSI4MSIvPg0KKyAgICA8L2NoaWxkcmVuPg0KKyAgICA8c3R5bGVzIHhtaTp0eXBlPSJub3RhdGlvbjpTdHJpbmdWYWx1ZVN0eWxlIiB4bWk6aWQ9Il91dVV2NFpnSUVlU0Z0TG9WZTItc29RIiBuYW1lPSJkaWFncmFtX2NvbXBhdGliaWxpdHlfdmVyc2lvbiIgc3RyaW5nVmFsdWU9IjEuMC4wIi8+DQorICAgIDxzdHlsZXMgeG1pOnR5cGU9Im5vdGF0aW9uOkRpYWdyYW1TdHlsZSIgeG1pOmlkPSJfdXVVdjRwZ0lFZVNGdExvVmUyLXNvUSIvPg0KKyAgICA8c3R5bGVzIHhtaTp0eXBlPSJzdHlsZTpQYXB5cnVzVmlld1N0eWxlIiB4bWk6aWQ9Il91dVV2NDVnSUVlU0Z0TG9WZTItc29RIj4NCisgICAgICA8b3duZXIgeG1pOnR5cGU9InVtbDpQYWNrYWdlIiBocmVmPSJTeXNNTC5wcm9maWxlLnVtbCNTeXNNTC1CbG9ja3MiLz4NCisgICAgPC9zdHlsZXM+DQorICAgIDxlbGVtZW50IHhtaTp0eXBlPSJ1bWw6UGFja2FnZSIgaHJlZj0iU3lzTUwucHJvZmlsZS51bWwjU3lzTUwtQmxvY2tzIi8+DQorICAgIDxlZGdlcyB4bWk6dHlwZT0ibm90YXRpb246Q29ubmVjdG9yIiB4bWk6aWQ9Il95S1hZOEpnSUVlU0Z0TG9WZTItc29RIiB0eXBlPSIxMDEzIiBzb3VyY2U9Il93NDJHc0pnSUVlU0Z0TG9WZTItc29RIiB0YXJnZXQ9Il95S1FFTUpnSUVlU0Z0TG9WZTItc29RIj4NCisgICAgICA8c3R5bGVzIHhtaTp0eXBlPSJub3RhdGlvbjpGb250U3R5bGUiIHhtaTppZD0iX3lLWFk4WmdJRWVTRnRMb1ZlMi1zb1EiLz4NCisgICAgICA8ZWxlbWVudCB4bWk6dHlwZT0idW1sOkV4dGVuc2lvbiIgaHJlZj0iU3lzTUwucHJvZmlsZS51bWwjU3lzTUwtQmxvY2tzLUVfZXh0ZW5zaW9uX0VuZFBhdGhNdWx0aXBsaWNpdHlfYmFzZV9Qcm9wZXJ0eSIvPg0KKyAgICAgIDxiZW5kcG9pbnRzIHhtaTp0eXBlPSJub3RhdGlvbjpSZWxhdGl2ZUJlbmRwb2ludHMiIHhtaTppZD0iX3lLWFk4cGdJRWVTRnRMb1ZlMi1zb1EiIHBvaW50cz0iWzUzLCAwLCA0OCwgMTI0XSRbNTMsIC0xMjQsIDQ4LCAwXSIvPg0KKyAgICAgIDxzb3VyY2VBbmNob3IgeG1pOnR5cGU9Im5vdGF0aW9uOklkZW50aXR5QW5jaG9yIiB4bWk6aWQ9Il95aXNaWUpnSUVlU0Z0TG9WZTItc29RIiBpZD0iKDAuNDg1LDAuMCkiLz4NCisgICAgICA8dGFyZ2V0QW5jaG9yIHhtaTp0eXBlPSJub3RhdGlvbjpJZGVudGl0eUFuY2hvciIgeG1pOmlkPSJfeWl0QWNKZ0lFZVNGdExvVmUyLXNvUSIgaWQ9IigwLjQ5NzUxMjQzNzgxMDk0NTMsMS4wKSIvPg0KKyAgICA8L2VkZ2VzPg0KKyAgICA8ZWRnZXMgeG1pOnR5cGU9Im5vdGF0aW9uOkNvbm5lY3RvciIgeG1pOmlkPSJfSWp1bm9KZ0pFZVNGdExvVmUyLXNvUSIgdHlwZT0iNDAwMiIgc291cmNlPSJfSWprUGtKZ0pFZVNGdExvVmUyLXNvUSIgdGFyZ2V0PSJfdzQyR3NKZ0lFZVNGdExvVmUyLXNvUSI+DQorICAgICAgPGNoaWxkcmVuIHhtaTp0eXBlPSJub3RhdGlvbjpEZWNvcmF0aW9uTm9kZSIgeG1pOmlkPSJfSWp1bm81Z0pFZVNGdExvVmUyLXNvUSIgdHlwZT0iNjAwNyI+DQorICAgICAgICA8bGF5b3V0Q29uc3RyYWludCB4bWk6dHlwZT0ibm90YXRpb246TG9jYXRpb24iIHhtaTppZD0iX0lqdk9zSmdKRWVTRnRMb1ZlMi1zb1EiIHk9IjYwIi8+DQorICAgICAgPC9jaGlsZHJlbj4NCisgICAgICA8c3R5bGVzIHhtaTp0eXBlPSJub3RhdGlvbjpGb250U3R5bGUiIHhtaTppZD0iX0lqdW5vWmdKRWVTRnRMb1ZlMi1zb1EiLz4NCisgICAgICA8ZWxlbWVudCB4bWk6dHlwZT0idW1sOkdlbmVyYWxpemF0aW9uIiBocmVmPSJTeXNNTC5wcm9maWxlLnVtbCNTeXNNTC1CbG9ja3MtQm91bmRSZWZlcmVuY2UtZ2VuZXJhbGl6YXRpb24iLz4NCisgICAgICA8YmVuZHBvaW50cyB4bWk6dHlwZT0ibm90YXRpb246UmVsYXRpdmVCZW5kcG9pbnRzIiB4bWk6aWQ9Il9JanVub3BnSkVlU0Z0TG9WZTItc29RIiBwb2ludHM9IlszNiwgMCwgNjgsIDM5XSRbMzYsIC0zOSwgNjgsIDBdIi8+DQorICAgICAgPHNvdXJjZUFuY2hvciB4bWk6dHlwZT0ibm90YXRpb246SWRlbnRpdHlBbmNob3IiIHhtaTppZD0iX0k1cWJZSmdKRWVTRnRMb1ZlMi1zb1EiIGlkPSIoMC4zMiwwLjApIi8+DQorICAgICAgPHRhcmdldEFuY2hvciB4bWk6dHlwZT0ibm90YXRpb246SWRlbnRpdHlBbmNob3IiIHhtaTppZD0iX0k1cWJZWmdKRWVTRnRMb1ZlMi1zb1EiIGlkPSIoMC4xNDUsMS4wKSIvPg0KKyAgICA8L2VkZ2VzPg0KKyAgPC9ub3RhdGlvbjpEaWFncmFtPg0KKyAgPG5vdGF0aW9uOkRpYWdyYW0geG1pOmlkPSJfWEt2N1lKZ0pFZVNGdExvVmUyLXNvUSIgdHlwZT0iUGFweXJ1c1VNTFByb2ZpbGVEaWFncmFtIiBuYW1lPSJBZGp1bmN0UHJvcGVydGllcyIgbWVhc3VyZW1lbnRVbml0PSJQaXhlbCI+DQorICAgIDxjaGlsZHJlbiB4bWk6dHlwZT0ibm90YXRpb246U2hhcGUiIHhtaTppZD0iX1otcTBnSmdKRWVTRnRMb1ZlMi1zb1EiIHR5cGU9IjEwMjYiPg0KKyAgICAgIDxjaGlsZHJlbiB4bWk6dHlwZT0ibm90YXRpb246RGVjb3JhdGlvbk5vZGUiIHhtaTppZD0iX1otcTBncGdKRWVTRnRMb1ZlMi1zb1EiIHR5cGU9IjEwMzQiLz4NCisgICAgICA8Y2hpbGRyZW4geG1pOnR5cGU9Im5vdGF0aW9uOkJhc2ljQ29tcGFydG1lbnQiIHhtaTppZD0iX1otcTBnNWdKRWVTRnRMb1ZlMi1zb1EiIHZpc2libGU9ImZhbHNlIiB0eXBlPSIxMDcxIj4NCisgICAgICAgIDxzdHlsZXMgeG1pOnR5cGU9Im5vdGF0aW9uOlRpdGxlU3R5bGUiIHhtaTppZD0iX1otcTBoSmdKRWVTRnRMb1ZlMi1zb1EiLz4NCisgICAgICAgIDxzdHlsZXMgeG1pOnR5cGU9Im5vdGF0aW9uOlNvcnRpbmdTdHlsZSIgeG1pOmlkPSJfWi1xMGhaZ0pFZVNGdExvVmUyLXNvUSIvPg0KKyAgICAgICAgPHN0eWxlcyB4bWk6dHlwZT0ibm90YXRpb246RmlsdGVyaW5nU3R5bGUiIHhtaTppZD0iX1otcTBocGdKRWVTRnRMb1ZlMi1zb1EiLz4NCisgICAgICAgIDxsYXlvdXRDb25zdHJhaW50IHhtaTp0eXBlPSJub3RhdGlvbjpCb3VuZHMiIHhtaTppZD0iX1otcTBoNWdKRWVTRnRMb1ZlMi1zb1EiLz4NCisgICAgICA8L2NoaWxkcmVuPg0KKyAgICAgIDxjaGlsZHJlbiB4bWk6dHlwZT0ibm90YXRpb246QmFzaWNDb21wYXJ0bWVudCIgeG1pOmlkPSJfWi1yYmtKZ0pFZVNGdExvVmUyLXNvUSIgdmlzaWJsZT0iZmFsc2UiIHR5cGU9IjEwMTkiPg0KKyAgICAgICAgPHN0eWxlcyB4bWk6dHlwZT0ibm90YXRpb246VGl0bGVTdHlsZSIgeG1pOmlkPSJfWi1yYmtaZ0pFZVNGdExvVmUyLXNvUSIvPg0KKyAgICAgICAgPHN0eWxlcyB4bWk6dHlwZT0ibm90YXRpb246U29ydGluZ1N0eWxlIiB4bWk6aWQ9Il9aLXJia3BnSkVlU0Z0TG9WZTItc29RIi8+DQorICAgICAgICA8c3R5bGVzIHhtaTp0eXBlPSJub3RhdGlvbjpGaWx0ZXJpbmdTdHlsZSIgeG1pOmlkPSJfWi1yYms1Z0pFZVNGdExvVmUyLXNvUSIvPg0KKyAgICAgICAgPGxheW91dENvbnN0cmFpbnQgeG1pOnR5cGU9Im5vdGF0aW9uOkJvdW5kcyIgeG1pOmlkPSJfWi1yYmxKZ0pFZVNGdExvVmUyLXNvUSIvPg0KKyAgICAgIDwvY2hpbGRyZW4+DQorICAgICAgPGVsZW1lbnQgeG1pOnR5cGU9InVtbDpTdGVyZW90eXBlIiBocmVmPSJTeXNNTC5wcm9maWxlLnVtbCNTeXNNTC1CbG9ja3MtQWRqdW5jdFByb3BlcnR5Ii8+DQorICAgICAgPGxheW91dENvbnN0cmFpbnQgeG1pOnR5cGU9Im5vdGF0aW9uOkJvdW5kcyIgeG1pOmlkPSJfWi1xMGdaZ0pFZVNGdExvVmUyLXNvUSIgeD0iMjYwIiB5PSIyODAiIHdpZHRoPSIxNDUiIGhlaWdodD0iNTYiLz4NCisgICAgPC9jaGlsZHJlbj4NCisgICAgPGNoaWxkcmVuIHhtaTp0eXBlPSJub3RhdGlvbjpTaGFwZSIgeG1pOmlkPSJfYWRmZWdKZ0pFZVNGdExvVmUyLXNvUSIgdHlwZT0iMTAzMSI+DQorICAgICAgPGNoaWxkcmVuIHhtaTp0eXBlPSJub3RhdGlvbjpEZWNvcmF0aW9uTm9kZSIgeG1pOmlkPSJfYWRmZWdwZ0pFZVNGdExvVmUyLXNvUSIgdHlwZT0iMTA4NCIvPg0KKyAgICAgIDxlbGVtZW50IHhtaTp0eXBlPSJ1bWw6Q2xhc3MiIGhyZWY9InBhdGhtYXA6Ly9VTUxfTUVUQU1PREVMUy9VTUwubWV0YW1vZGVsLnVtbCNQcm9wZXJ0eSIvPg0KKyAgICAgIDxsYXlvdXRDb25zdHJhaW50IHhtaTp0eXBlPSJub3RhdGlvbjpCb3VuZHMiIHhtaTppZD0iX2FkZmVnWmdKRWVTRnRMb1ZlMi1zb1EiIHg9IjEwMCIgeT0iMTYwIiB3aWR0aD0iMzAxIi8+DQorICAgIDwvY2hpbGRyZW4+DQorICAgIDxjaGlsZHJlbiB4bWk6dHlwZT0ibm90YXRpb246U2hhcGUiIHhtaTppZD0iX2hyTE5NSmdKRWVTRnRMb1ZlMi1zb1EiIHR5cGU9IjEwMzEiPg0KKyAgICAgIDxjaGlsZHJlbiB4bWk6dHlwZT0ibm90YXRpb246RGVjb3JhdGlvbk5vZGUiIHhtaTppZD0iX2hyTDBRSmdKRWVTRnRMb1ZlMi1zb1EiIHR5cGU9IjEwODQiLz4NCisgICAgICA8ZWxlbWVudCB4bWk6dHlwZT0idW1sOkNsYXNzIiBocmVmPSJwYXRobWFwOi8vVU1MX01FVEFNT0RFTFMvVU1MLm1ldGFtb2RlbC51bWwjRWxlbWVudCIvPg0KKyAgICAgIDxsYXlvdXRDb25zdHJhaW50IHhtaTp0eXBlPSJub3RhdGlvbjpCb3VuZHMiIHhtaTppZD0iX2hyTE5NWmdKRWVTRnRMb1ZlMi1zb1EiIHg9IjYwMCIgeT0iMjgwIi8+DQorICAgIDwvY2hpbGRyZW4+DQorICAgIDxjaGlsZHJlbiB4bWk6dHlwZT0ibm90YXRpb246U2hhcGUiIHhtaTppZD0iX3Q4SGFZSmdKRWVTRnRMb1ZlMi1zb1EiIHR5cGU9IjEwMjYiPg0KKyAgICAgIDxjaGlsZHJlbiB4bWk6dHlwZT0ibm90YXRpb246RGVjb3JhdGlvbk5vZGUiIHhtaTppZD0iX3Q4SUJjSmdKRWVTRnRMb1ZlMi1zb1EiIHR5cGU9IjEwMzQiLz4NCisgICAgICA8Y2hpbGRyZW4geG1pOnR5cGU9Im5vdGF0aW9uOkJhc2ljQ29tcGFydG1lbnQiIHhtaTppZD0iX3Q4SUJjWmdKRWVTRnRMb1ZlMi1zb1EiIHZpc2libGU9ImZhbHNlIiB0eXBlPSIxMDcxIj4NCisgICAgICAgIDxzdHlsZXMgeG1pOnR5cGU9Im5vdGF0aW9uOlRpdGxlU3R5bGUiIHhtaTppZD0iX3Q4SUJjcGdKRWVTRnRMb1ZlMi1zb1EiLz4NCisgICAgICAgIDxzdHlsZXMgeG1pOnR5cGU9Im5vdGF0aW9uOlNvcnRpbmdTdHlsZSIgeG1pOmlkPSJfdDhJQmM1Z0pFZVNGdExvVmUyLXNvUSIvPg0KKyAgICAgICAgPHN0eWxlcyB4bWk6dHlwZT0ibm90YXRpb246RmlsdGVyaW5nU3R5bGUiIHhtaTppZD0iX3Q4SUJkSmdKRWVTRnRMb1ZlMi1zb1EiLz4NCisgICAgICAgIDxsYXlvdXRDb25zdHJhaW50IHhtaTp0eXBlPSJub3RhdGlvbjpCb3VuZHMiIHhtaTppZD0iX3Q4SUJkWmdKRWVTRnRMb1ZlMi1zb1EiLz4NCisgICAgICA8L2NoaWxkcmVuPg0KKyAgICAgIDxjaGlsZHJlbiB4bWk6dHlwZT0ibm90YXRpb246QmFzaWNDb21wYXJ0bWVudCIgeG1pOmlkPSJfdDhJQmRwZ0pFZVNGdExvVmUyLXNvUSIgdmlzaWJsZT0iZmFsc2UiIHR5cGU9IjEwMTkiPg0KKyAgICAgICAgPHN0eWxlcyB4bWk6dHlwZT0ibm90YXRpb246VGl0bGVTdHlsZSIgeG1pOmlkPSJfdDhJQmQ1Z0pFZVNGdExvVmUyLXNvUSIvPg0KKyAgICAgICAgPHN0eWxlcyB4bWk6dHlwZT0ibm90YXRpb246U29ydGluZ1N0eWxlIiB4bWk6aWQ9Il90OElCZUpnSkVlU0Z0TG9WZTItc29RIi8+DQorICAgICAgICA8c3R5bGVzIHhtaTp0eXBlPSJub3RhdGlvbjpGaWx0ZXJpbmdTdHlsZSIgeG1pOmlkPSJfdDhJQmVaZ0pFZVNGdExvVmUyLXNvUSIvPg0KKyAgICAgICAgPGxheW91dENvbnN0cmFpbnQgeG1pOnR5cGU9Im5vdGF0aW9uOkJvdW5kcyIgeG1pOmlkPSJfdDhJQmVwZ0pFZVNGdExvVmUyLXNvUSIvPg0KKyAgICAgIDwvY2hpbGRyZW4+DQorICAgICAgPGVsZW1lbnQgeG1pOnR5cGU9InVtbDpTdGVyZW90eXBlIiBocmVmPSJTeXNNTC5wcm9maWxlLnVtbCNTeXNNTC1CbG9ja3MtQ2xhc3NpZmllckJlaGF2aW9yUHJvcGVydHkiLz4NCisgICAgICA8bGF5b3V0Q29uc3RyYWludCB4bWk6dHlwZT0ibm90YXRpb246Qm91bmRzIiB4bWk6aWQ9Il90OEhhWVpnSkVlU0Z0TG9WZTItc29RIiB4PSI4MCIgeT0iMjgwIiB3aWR0aD0iMTU4IiBoZWlnaHQ9IjYxIi8+DQorICAgIDwvY2hpbGRyZW4+DQorICAgIDxzdHlsZXMgeG1pOnR5cGU9Im5vdGF0aW9uOlN0cmluZ1ZhbHVlU3R5bGUiIHhtaTppZD0iX1hLdjdZWmdKRWVTRnRMb1ZlMi1zb1EiIG5hbWU9ImRpYWdyYW1fY29tcGF0aWJpbGl0eV92ZXJzaW9uIiBzdHJpbmdWYWx1ZT0iMS4wLjAiLz4NCisgICAgPHN0eWxlcyB4bWk6dHlwZT0ibm90YXRpb246RGlhZ3JhbVN0eWxlIiB4bWk6aWQ9Il9YS3Y3WXBnSkVlU0Z0TG9WZTItc29RIi8+DQorICAgIDxzdHlsZXMgeG1pOnR5cGU9InN0eWxlOlBhcHlydXNWaWV3U3R5bGUiIHhtaTppZD0iX1hLdjdZNWdKRWVTRnRMb1ZlMi1zb1EiPg0KKyAgICAgIDxvd25lciB4bWk6dHlwZT0idW1sOlBhY2thZ2UiIGhyZWY9IlN5c01MLnByb2ZpbGUudW1sI1N5c01MLUJsb2NrcyIvPg0KKyAgICA8L3N0eWxlcz4NCisgICAgPGVsZW1lbnQgeG1pOnR5cGU9InVtbDpQYWNrYWdlIiBocmVmPSJTeXNNTC5wcm9maWxlLnVtbCNTeXNNTC1CbG9ja3MiLz4NCisgICAgPGVkZ2VzIHhtaTp0eXBlPSJub3RhdGlvbjpDb25uZWN0b3IiIHhtaTppZD0iX2Fkb0JZSmdKRWVTRnRMb1ZlMi1zb1EiIHR5cGU9IjEwMTMiIHNvdXJjZT0iX1otcTBnSmdKRWVTRnRMb1ZlMi1zb1EiIHRhcmdldD0iX2FkZmVnSmdKRWVTRnRMb1ZlMi1zb1EiPg0KKyAgICAgIDxzdHlsZXMgeG1pOnR5cGU9Im5vdGF0aW9uOkZvbnRTdHlsZSIgeG1pOmlkPSJfYWRvQllaZ0pFZVNGdExvVmUyLXNvUSIvPg0KKyAgICAgIDxlbGVtZW50IHhtaTp0eXBlPSJ1bWw6RXh0ZW5zaW9uIiBocmVmPSJTeXNNTC5wcm9maWxlLnVtbCNTeXNNTC1CbG9ja3MtRV9leHRlbnNpb25fQWRqdW5jdFByb3BlcnR5X2Jhc2VfUHJvcGVydHkiLz4NCisgICAgICA8YmVuZHBvaW50cyB4bWk6dHlwZT0ibm90YXRpb246UmVsYXRpdmVCZW5kcG9pbnRzIiB4bWk6aWQ9Il9hZG9CWXBnSkVlU0Z0TG9WZTItc29RIiBwb2ludHM9Ils3LCAwLCAxMTYsIDcwXSRbNywgLTcwLCAxMTYsIDBdIi8+DQorICAgICAgPHNvdXJjZUFuY2hvciB4bWk6dHlwZT0ibm90YXRpb246SWRlbnRpdHlBbmNob3IiIHhtaTppZD0iX2tkRXRFSmdKRWVTRnRMb1ZlMi1zb1EiIGlkPSIoMC4zNjU1MTcyNDEzNzkzMTAzNSwwLjApIi8+DQorICAgICAgPHRhcmdldEFuY2hvciB4bWk6dHlwZT0ibm90YXRpb246SWRlbnRpdHlBbmNob3IiIHhtaTppZD0iX2tkRXRFWmdKRWVTRnRMb1ZlMi1zb1EiIGlkPSIoMC4zNDc2MTkwNDc2MTkwNDc2LDEuMCkiLz4NCisgICAgPC9lZGdlcz4NCisgICAgPGVkZ2VzIHhtaTp0eXBlPSJub3RhdGlvbjpDb25uZWN0b3IiIHhtaTppZD0iX2hyU2g4SmdKRWVTRnRMb1ZlMi1zb1EiIHR5cGU9IjQwMDEiIHNvdXJjZT0iX2hyTE5NSmdKRWVTRnRMb1ZlMi1zb1EiIHRhcmdldD0iX1otcTBnSmdKRWVTRnRMb1ZlMi1zb1EiPg0KKyAgICAgIDxjaGlsZHJlbiB4bWk6dHlwZT0ibm90YXRpb246RGVjb3JhdGlvbk5vZGUiIHhtaTppZD0iX2hyU2g4NWdKRWVTRnRMb1ZlMi1zb1EiIHR5cGU9IjYwMDEiPg0KKyAgICAgICAgPGxheW91dENvbnN0cmFpbnQgeG1pOnR5cGU9Im5vdGF0aW9uOkxvY2F0aW9uIiB4bWk6aWQ9Il9oclNoOUpnSkVlU0Z0TG9WZTItc29RIiB5PSI2MCIvPg0KKyAgICAgIDwvY2hpbGRyZW4+DQorICAgICAgPGNoaWxkcmVuIHhtaTp0eXBlPSJub3RhdGlvbjpEZWNvcmF0aW9uTm9kZSIgeG1pOmlkPSJfaHJUSkFKZ0pFZVNGdExvVmUyLXNvUSIgdHlwZT0iNjAwMiI+DQorICAgICAgICA8bGF5b3V0Q29uc3RyYWludCB4bWk6dHlwZT0ibm90YXRpb246TG9jYXRpb24iIHhtaTppZD0iX2hyVEpBWmdKRWVTRnRMb1ZlMi1zb1EiIHk9IjIwIi8+DQorICAgICAgPC9jaGlsZHJlbj4NCisgICAgICA8Y2hpbGRyZW4geG1pOnR5cGU9Im5vdGF0aW9uOkRlY29yYXRpb25Ob2RlIiB4bWk6aWQ9Il9oclRKQXBnSkVlU0Z0TG9WZTItc29RIiB2aXNpYmxlPSJmYWxzZSIgdHlwZT0iNjAwMyI+DQorICAgICAgICA8bGF5b3V0Q29uc3RyYWludCB4bWk6dHlwZT0ibm90YXRpb246TG9jYXRpb24iIHhtaTppZD0iX2hyVHdFSmdKRWVTRnRMb1ZlMi1zb1EiIHk9IjIwIi8+DQorICAgICAgPC9jaGlsZHJlbj4NCisgICAgICA8Y2hpbGRyZW4geG1pOnR5cGU9Im5vdGF0aW9uOkRlY29yYXRpb25Ob2RlIiB4bWk6aWQ9Il9oclR3RVpnSkVlU0Z0TG9WZTItc29RIiB0eXBlPSI2MDA1Ij4NCisgICAgICAgIDxlQW5ub3RhdGlvbnMgeG1pOnR5cGU9ImVjb3JlOkVBbm5vdGF0aW9uIiB4bWk6aWQ9Il9uWl9LSUpnSkVlU0Z0TG9WZTItc29RIiBzb3VyY2U9IlBhcHlydXNDU1NGb3JjZVZhbHVlIj4NCisgICAgICAgICAgPGRldGFpbHMgeG1pOnR5cGU9ImVjb3JlOkVTdHJpbmdUb1N0cmluZ01hcEVudHJ5IiB4bWk6aWQ9Il9uWl94TUpnSkVlU0Z0TG9WZTItc29RIiBrZXk9InZpc2libGUiIHZhbHVlPSJ0cnVlIi8+DQorICAgICAgICA8L2VBbm5vdGF0aW9ucz4NCisgICAgICAgIDxsYXlvdXRDb25zdHJhaW50IHhtaTp0eXBlPSJub3RhdGlvbjpMb2NhdGlvbiIgeG1pOmlkPSJfaHJUd0VwZ0pFZVNGdExvVmUyLXNvUSIgeT0iLTIwIi8+DQorICAgICAgPC9jaGlsZHJlbj4NCisgICAgICA8Y2hpbGRyZW4geG1pOnR5cGU9Im5vdGF0aW9uOkRlY29yYXRpb25Ob2RlIiB4bWk6aWQ9Il9oclVYSUpnSkVlU0Z0TG9WZTItc29RIiB0eXBlPSI2MDMzIj4NCisgICAgICAgIDxsYXlvdXRDb25zdHJhaW50IHhtaTp0eXBlPSJub3RhdGlvbjpMb2NhdGlvbiIgeG1pOmlkPSJfaHJVWElaZ0pFZVNGdExvVmUyLXNvUSIgeT0iMjAiLz4NCisgICAgICA8L2NoaWxkcmVuPg0KKyAgICAgIDxjaGlsZHJlbiB4bWk6dHlwZT0ibm90YXRpb246RGVjb3JhdGlvbk5vZGUiIHhtaTppZD0iX2hyVVhJcGdKRWVTRnRMb1ZlMi1zb1EiIHR5cGU9IjYwMzQiPg0KKyAgICAgICAgPGxheW91dENvbnN0cmFpbnQgeG1pOnR5cGU9Im5vdGF0aW9uOkxvY2F0aW9uIiB4bWk6aWQ9Il9oclVYSTVnSkVlU0Z0TG9WZTItc29RIiB5PSItMjAiLz4NCisgICAgICA8L2NoaWxkcmVuPg0KKyAgICAgIDxzdHlsZXMgeG1pOnR5cGU9Im5vdGF0aW9uOkZvbnRTdHlsZSIgeG1pOmlkPSJfaHJTaDhaZ0pFZVNGdExvVmUyLXNvUSIvPg0KKyAgICAgIDxlbGVtZW50IHhtaTp0eXBlPSJ1bWw6QXNzb2NpYXRpb24iIGhyZWY9IlN5c01MLnByb2ZpbGUudW1sI1N5c01MLUJsb2Nrcy1BX2FkanVuY3RQcm9wZXJ0eV9wcmluY2lwYWwiLz4NCisgICAgICA8YmVuZHBvaW50cyB4bWk6dHlwZT0ibm90YXRpb246UmVsYXRpdmVCZW5kcG9pbnRzIiB4bWk6aWQ9Il9oclNoOHBnSkVlU0Z0TG9WZTItc29RIiBwb2ludHM9IlswLCAyMCwgMTk1LCAyMF0kWy0xOTUsIDIwLCAwLCAyMF0iLz4NCisgICAgICA8c291cmNlQW5jaG9yIHhtaTp0eXBlPSJub3RhdGlvbjpJZGVudGl0eUFuY2hvciIgeG1pOmlkPSJfa0piX1lKZ0pFZVNGdExvVmUyLXNvUSIgaWQ9IigwLjAsMC4wKSIvPg0KKyAgICAgIDx0YXJnZXRBbmNob3IgeG1pOnR5cGU9Im5vdGF0aW9uOklkZW50aXR5QW5jaG9yIiB4bWk6aWQ9Il9rSmJfWVpnSkVlU0Z0TG9WZTItc29RIiBpZD0iKDEuMCwwLjApIi8+DQorICAgIDwvZWRnZXM+DQorICAgIDxlZGdlcyB4bWk6dHlwZT0ibm90YXRpb246Q29ubmVjdG9yIiB4bWk6aWQ9Il90OFJ5Y0pnSkVlU0Z0TG9WZTItc29RIiB0eXBlPSIxMDEzIiBzb3VyY2U9Il90OEhhWUpnSkVlU0Z0TG9WZTItc29RIiB0YXJnZXQ9Il9hZGZlZ0pnSkVlU0Z0TG9WZTItc29RIj4NCisgICAgICA8c3R5bGVzIHhtaTp0eXBlPSJub3RhdGlvbjpGb250U3R5bGUiIHhtaTppZD0iX3Q4UnljWmdKRWVTRnRMb1ZlMi1zb1EiLz4NCisgICAgICA8ZWxlbWVudCB4bWk6dHlwZT0idW1sOkV4dGVuc2lvbiIgaHJlZj0iU3lzTUwucHJvZmlsZS51bWwjU3lzTUwtQmxvY2tzLUVfZXh0ZW5zaW9uX0NsYXNzaWZpZXJCZWhhdmlvclByb3BlcnR5X2Jhc2VfUHJvcGVydHkiLz4NCisgICAgICA8YmVuZHBvaW50cyB4bWk6dHlwZT0ibm90YXRpb246UmVsYXRpdmVCZW5kcG9pbnRzIiB4bWk6aWQ9Il90OFJ5Y3BnSkVlU0Z0TG9WZTItc29RIiBwb2ludHM9IlstNDksIDAsIDAsIDcwXSRbLTQ5LCAtNzAsIDAsIDBdIi8+DQorICAgICAgPHNvdXJjZUFuY2hvciB4bWk6dHlwZT0ibm90YXRpb246SWRlbnRpdHlBbmNob3IiIHhtaTppZD0iX3ZCa21rSmdKRWVTRnRMb1ZlMi1zb1EiIGlkPSIoMC45NjM3NjgxMTU5NDIwMjg5LDAuMCkiLz4NCisgICAgICA8dGFyZ2V0QW5jaG9yIHhtaTp0eXBlPSJub3RhdGlvbjpJZGVudGl0eUFuY2hvciIgeG1pOmlkPSJfdkJsTm9KZ0pFZVNGdExvVmUyLXNvUSIgaWQ9IigwLjI3NjE5MDQ3NjE5MDQ3NjIsMS4wKSIvPg0KKyAgICA8L2VkZ2VzPg0KKyAgPC9ub3RhdGlvbjpEaWFncmFtPg0KKyAgPG5vdGF0aW9uOkRpYWdyYW0geG1pOmlkPSJfbjhzY1VKZ09FZVNGdExvVmUyLXNvUSIgdHlwZT0iUGFweXJ1c1VNTFByb2ZpbGVEaWFncmFtIiBuYW1lPSJQb3J0IiBtZWFzdXJlbWVudFVuaXQ9IlBpeGVsIj4NCisgICAgPGNoaWxkcmVuIHhtaTp0eXBlPSJub3RhdGlvbjpTaGFwZSIgeG1pOmlkPSJfczNCQlFKZ09FZVNGdExvVmUyLXNvUSIgdHlwZT0iMTAyNiI+DQorICAgICAgPGNoaWxkcmVuIHhtaTp0eXBlPSJub3RhdGlvbjpEZWNvcmF0aW9uTm9kZSIgeG1pOmlkPSJfczNCb1VKZ09FZVNGdExvVmUyLXNvUSIgdHlwZT0iMTAzNCIvPg0KKyAgICAgIDxjaGlsZHJlbiB4bWk6dHlwZT0ibm90YXRpb246QmFzaWNDb21wYXJ0bWVudCIgeG1pOmlkPSJfczNCb1VaZ09FZVNGdExvVmUyLXNvUSIgdmlzaWJsZT0iZmFsc2UiIHR5cGU9IjEwNzEiPg0KKyAgICAgICAgPHN0eWxlcyB4bWk6dHlwZT0ibm90YXRpb246VGl0bGVTdHlsZSIgeG1pOmlkPSJfczNCb1VwZ09FZVNGdExvVmUyLXNvUSIvPg0KKyAgICAgICAgPHN0eWxlcyB4bWk6dHlwZT0ibm90YXRpb246U29ydGluZ1N0eWxlIiB4bWk6aWQ9Il9zM0JvVTVnT0VlU0Z0TG9WZTItc29RIi8+DQorICAgICAgICA8c3R5bGVzIHhtaTp0eXBlPSJub3RhdGlvbjpGaWx0ZXJpbmdTdHlsZSIgeG1pOmlkPSJfczNCb1ZKZ09FZVNGdExvVmUyLXNvUSIvPg0KKyAgICAgICAgPGxheW91dENvbnN0cmFpbnQgeG1pOnR5cGU9Im5vdGF0aW9uOkJvdW5kcyIgeG1pOmlkPSJfczNCb1ZaZ09FZVNGdExvVmUyLXNvUSIvPg0KKyAgICAgIDwvY2hpbGRyZW4+DQorICAgICAgPGNoaWxkcmVuIHhtaTp0eXBlPSJub3RhdGlvbjpCYXNpY0NvbXBhcnRtZW50IiB4bWk6aWQ9Il9zM0JvVnBnT0VlU0Z0TG9WZTItc29RIiB2aXNpYmxlPSJmYWxzZSIgdHlwZT0iMTAxOSI+DQorICAgICAgICA8c3R5bGVzIHhtaTp0eXBlPSJub3RhdGlvbjpUaXRsZVN0eWxlIiB4bWk6aWQ9Il9zM0JvVjVnT0VlU0Z0TG9WZTItc29RIi8+DQorICAgICAgICA8c3R5bGVzIHhtaTp0eXBlPSJub3RhdGlvbjpTb3J0aW5nU3R5bGUiIHhtaTppZD0iX3MzQm9XSmdPRWVTRnRMb1ZlMi1zb1EiLz4NCisgICAgICAgIDxzdHlsZXMgeG1pOnR5cGU9Im5vdGF0aW9uOkZpbHRlcmluZ1N0eWxlIiB4bWk6aWQ9Il9zM0JvV1pnT0VlU0Z0TG9WZTItc29RIi8+DQorICAgICAgICA8bGF5b3V0Q29uc3RyYWludCB4bWk6dHlwZT0ibm90YXRpb246Qm91bmRzIiB4bWk6aWQ9Il9zM0JvV3BnT0VlU0Z0TG9WZTItc29RIi8+DQorICAgICAgPC9jaGlsZHJlbj4NCisgICAgICA8ZWxlbWVudCB4bWk6dHlwZT0idW1sOlN0ZXJlb3R5cGUiIGhyZWY9IlN5c01MLnByb2ZpbGUudW1sI1N5c01MLVBvcnRzX3UwMDI2Rmxvd3MtRnVsbFBvcnQiLz4NCisgICAgICA8bGF5b3V0Q29uc3RyYWludCB4bWk6dHlwZT0ibm90YXRpb246Qm91bmRzIiB4bWk6aWQ9Il9zM0JCUVpnT0VlU0Z0TG9WZTItc29RIiB4PSIzMjAiIHk9IjE0MCIgaGVpZ2h0PSI2MSIvPg0KKyAgICA8L2NoaWxkcmVuPg0KKyAgICA8Y2hpbGRyZW4geG1pOnR5cGU9Im5vdGF0aW9uOlNoYXBlIiB4bWk6aWQ9Il9zM0t5UUpnT0VlU0Z0TG9WZTItc29RIiB0eXBlPSIxMDMxIj4NCisgICAgICA8Y2hpbGRyZW4geG1pOnR5cGU9Im5vdGF0aW9uOkRlY29yYXRpb25Ob2RlIiB4bWk6aWQ9Il9zM0t5UXBnT0VlU0Z0TG9WZTItc29RIiB0eXBlPSIxMDg0Ii8+DQorICAgICAgPGVsZW1lbnQgeG1pOnR5cGU9InVtbDpDbGFzcyIgaHJlZj0icGF0aG1hcDovL1VNTF9NRVRBTU9ERUxTL1VNTC5tZXRhbW9kZWwudW1sI1BvcnQiLz4NCisgICAgICA8bGF5b3V0Q29uc3RyYWludCB4bWk6dHlwZT0ibm90YXRpb246Qm91bmRzIiB4bWk6aWQ9Il9zM0t5UVpnT0VlU0Z0TG9WZTItc29RIiB4PSI4MCIgeT0iNDAiIHdpZHRoPSIzNDAiLz4NCisgICAgPC9jaGlsZHJlbj4NCisgICAgPGNoaWxkcmVuIHhtaTp0eXBlPSJub3RhdGlvbjpTaGFwZSIgeG1pOmlkPSJfdmJnWFFKZ09FZVNGdExvVmUyLXNvUSIgdHlwZT0iMTAyNiI+DQorICAgICAgPGNoaWxkcmVuIHhtaTp0eXBlPSJub3RhdGlvbjpEZWNvcmF0aW9uTm9kZSIgeG1pOmlkPSJfdmJnWFFwZ09FZVNGdExvVmUyLXNvUSIgdHlwZT0iMTAzNCIvPg0KKyAgICAgIDxjaGlsZHJlbiB4bWk6dHlwZT0ibm90YXRpb246QmFzaWNDb21wYXJ0bWVudCIgeG1pOmlkPSJfdmJnLVVKZ09FZVNGdExvVmUyLXNvUSIgdmlzaWJsZT0iZmFsc2UiIHR5cGU9IjEwNzEiPg0KKyAgICAgICAgPHN0eWxlcyB4bWk6dHlwZT0ibm90YXRpb246VGl0bGVTdHlsZSIgeG1pOmlkPSJfdmJnLVVaZ09FZVNGdExvVmUyLXNvUSIvPg0KKyAgICAgICAgPHN0eWxlcyB4bWk6dHlwZT0ibm90YXRpb246U29ydGluZ1N0eWxlIiB4bWk6aWQ9Il92YmctVXBnT0VlU0Z0TG9WZTItc29RIi8+DQorICAgICAgICA8c3R5bGVzIHhtaTp0eXBlPSJub3RhdGlvbjpGaWx0ZXJpbmdTdHlsZSIgeG1pOmlkPSJfdmJnLVU1Z09FZVNGdExvVmUyLXNvUSIvPg0KKyAgICAgICAgPGxheW91dENvbnN0cmFpbnQgeG1pOnR5cGU9Im5vdGF0aW9uOkJvdW5kcyIgeG1pOmlkPSJfdmJnLVZKZ09FZVNGdExvVmUyLXNvUSIvPg0KKyAgICAgIDwvY2hpbGRyZW4+DQorICAgICAgPGNoaWxkcmVuIHhtaTp0eXBlPSJub3RhdGlvbjpCYXNpY0NvbXBhcnRtZW50IiB4bWk6aWQ9Il92YmctVlpnT0VlU0Z0TG9WZTItc29RIiB2aXNpYmxlPSJmYWxzZSIgdHlwZT0iMTAxOSI+DQorICAgICAgICA8c3R5bGVzIHhtaTp0eXBlPSJub3RhdGlvbjpUaXRsZVN0eWxlIiB4bWk6aWQ9Il92YmctVnBnT0VlU0Z0TG9WZTItc29RIi8+DQorICAgICAgICA8c3R5bGVzIHhtaTp0eXBlPSJub3RhdGlvbjpTb3J0aW5nU3R5bGUiIHhtaTppZD0iX3ZiZy1WNWdPRWVTRnRMb1ZlMi1zb1EiLz4NCisgICAgICAgIDxzdHlsZXMgeG1pOnR5cGU9Im5vdGF0aW9uOkZpbHRlcmluZ1N0eWxlIiB4bWk6aWQ9Il92YmctV0pnT0VlU0Z0TG9WZTItc29RIi8+DQorICAgICAgICA8bGF5b3V0Q29uc3RyYWludCB4bWk6dHlwZT0ibm90YXRpb246Qm91bmRzIiB4bWk6aWQ9Il92YmctV1pnT0VlU0Z0TG9WZTItc29RIi8+DQorICAgICAgPC9jaGlsZHJlbj4NCisgICAgICA8ZWxlbWVudCB4bWk6dHlwZT0idW1sOlN0ZXJlb3R5cGUiIGhyZWY9IlN5c01MLnByb2ZpbGUudW1sI1N5c01MLVBvcnRzX3UwMDI2Rmxvd3MtUHJveHlQb3J0Ii8+DQorICAgICAgPGxheW91dENvbnN0cmFpbnQgeG1pOnR5cGU9Im5vdGF0aW9uOkJvdW5kcyIgeG1pOmlkPSJfdmJnWFFaZ09FZVNGdExvVmUyLXNvUSIgeD0iMTAwIiB5PSIxNDAiIGhlaWdodD0iNjEiLz4NCisgICAgPC9jaGlsZHJlbj4NCisgICAgPGNoaWxkcmVuIHhtaTp0eXBlPSJub3RhdGlvbjpTaGFwZSIgeG1pOmlkPSJfMzhYbEVKZ09FZVNGdExvVmUyLXNvUSIgdHlwZT0iMTAyNiI+DQorICAgICAgPGNoaWxkcmVuIHhtaTp0eXBlPSJub3RhdGlvbjpEZWNvcmF0aW9uTm9kZSIgeG1pOmlkPSJfMzhYbEVwZ09FZVNGdExvVmUyLXNvUSIgdHlwZT0iMTAzNCIvPg0KKyAgICAgIDxjaGlsZHJlbiB4bWk6dHlwZT0ibm90YXRpb246QmFzaWNDb21wYXJ0bWVudCIgeG1pOmlkPSJfMzhZTUlKZ09FZVNGdExvVmUyLXNvUSIgdHlwZT0iMTA3MSI+DQorICAgICAgICA8Y2hpbGRyZW4geG1pOnR5cGU9Im5vdGF0aW9uOlNoYXBlIiB4bWk6aWQ9Il83TDBqb0pnT0VlU0Z0TG9WZTItc29RIiB0eXBlPSIzMDAyIj4NCisgICAgICAgICAgPGVsZW1lbnQgeG1pOnR5cGU9InVtbDpQcm9wZXJ0eSIgaHJlZj0iU3lzTUwucHJvZmlsZS51bWwjU3lzTUwtUG9ydHNfdTAwMjZGbG93cy1GbG93UHJvcGVydHktZGlyZWN0aW9uIi8+DQorICAgICAgICAgIDxsYXlvdXRDb25zdHJhaW50IHhtaTp0eXBlPSJub3RhdGlvbjpMb2NhdGlvbiIgeG1pOmlkPSJfN0wwam9aZ09FZVNGdExvVmUyLXNvUSIvPg0KKyAgICAgICAgPC9jaGlsZHJlbj4NCisgICAgICAgIDxzdHlsZXMgeG1pOnR5cGU9Im5vdGF0aW9uOlRpdGxlU3R5bGUiIHhtaTppZD0iXzM4WU1JWmdPRWVTRnRMb1ZlMi1zb1EiLz4NCisgICAgICAgIDxzdHlsZXMgeG1pOnR5cGU9Im5vdGF0aW9uOlNvcnRpbmdTdHlsZSIgeG1pOmlkPSJfMzhZTUlwZ09FZVNGdExvVmUyLXNvUSIvPg0KKyAgICAgICAgPHN0eWxlcyB4bWk6dHlwZT0ibm90YXRpb246RmlsdGVyaW5nU3R5bGUiIHhtaTppZD0iXzM4WU1JNWdPRWVTRnRMb1ZlMi1zb1EiLz4NCisgICAgICAgIDxsYXlvdXRDb25zdHJhaW50IHhtaTp0eXBlPSJub3RhdGlvbjpCb3VuZHMiIHhtaTppZD0iXzM4WU1KSmdPRWVTRnRMb1ZlMi1zb1EiLz4NCisgICAgICA8L2NoaWxkcmVuPg0KKyAgICAgIDxjaGlsZHJlbiB4bWk6dHlwZT0ibm90YXRpb246QmFzaWNDb21wYXJ0bWVudCIgeG1pOmlkPSJfMzhZTUpaZ09FZVNGdExvVmUyLXNvUSIgdmlzaWJsZT0iZmFsc2UiIHR5cGU9IjEwMTkiPg0KKyAgICAgICAgPHN0eWxlcyB4bWk6dHlwZT0ibm90YXRpb246VGl0bGVTdHlsZSIgeG1pOmlkPSJfMzhZTUpwZ09FZVNGdExvVmUyLXNvUSIvPg0KKyAgICAgICAgPHN0eWxlcyB4bWk6dHlwZT0ibm90YXRpb246U29ydGluZ1N0eWxlIiB4bWk6aWQ9Il8zOFlNSjVnT0VlU0Z0TG9WZTItc29RIi8+DQorICAgICAgICA8c3R5bGVzIHhtaTp0eXBlPSJub3RhdGlvbjpGaWx0ZXJpbmdTdHlsZSIgeG1pOmlkPSJfMzhZTUtKZ09FZVNGdExvVmUyLXNvUSIvPg0KKyAgICAgICAgPGxheW91dENvbnN0cmFpbnQgeG1pOnR5cGU9Im5vdGF0aW9uOkJvdW5kcyIgeG1pOmlkPSJfMzhZTUtaZ09FZVNGdExvVmUyLXNvUSIvPg0KKyAgICAgIDwvY2hpbGRyZW4+DQorICAgICAgPGVsZW1lbnQgeG1pOnR5cGU9InVtbDpTdGVyZW90eXBlIiBocmVmPSJTeXNNTC5wcm9maWxlLnVtbCNTeXNNTC1Qb3J0c191MDAyNkZsb3dzLUZsb3dQcm9wZXJ0eSIvPg0KKyAgICAgIDxsYXlvdXRDb25zdHJhaW50IHhtaTp0eXBlPSJub3RhdGlvbjpCb3VuZHMiIHhtaTppZD0iXzM4WGxFWmdPRWVTRnRMb1ZlMi1zb1EiIHg9IjYwMCIgeT0iMTQwIiBoZWlnaHQ9IjYxIi8+DQorICAgIDwvY2hpbGRyZW4+DQorICAgIDxjaGlsZHJlbiB4bWk6dHlwZT0ibm90YXRpb246U2hhcGUiIHhtaTppZD0iXzM4Zmc0SmdPRWVTRnRMb1ZlMi1zb1EiIHR5cGU9IjEwMzEiPg0KKyAgICAgIDxjaGlsZHJlbiB4bWk6dHlwZT0ibm90YXRpb246RGVjb3JhdGlvbk5vZGUiIHhtaTppZD0iXzM4Zmc0cGdPRWVTRnRMb1ZlMi1zb1EiIHR5cGU9IjEwODQiLz4NCisgICAgICA8ZWxlbWVudCB4bWk6dHlwZT0idW1sOkNsYXNzIiBocmVmPSJwYXRobWFwOi8vVU1MX01FVEFNT0RFTFMvVU1MLm1ldGFtb2RlbC51bWwjUHJvcGVydHkiLz4NCisgICAgICA8bGF5b3V0Q29uc3RyYWludCB4bWk6dHlwZT0ibm90YXRpb246Qm91bmRzIiB4bWk6aWQ9Il8zOGZnNFpnT0VlU0Z0TG9WZTItc29RIiB4PSI2MDAiIHk9IjQwIiB3aWR0aD0iMTgxIi8+DQorICAgIDwvY2hpbGRyZW4+DQorICAgIDxjaGlsZHJlbiB4bWk6dHlwZT0ibm90YXRpb246U2hhcGUiIHhtaTppZD0iX0h0blFRSmdQRWVTRnRMb1ZlMi1zb1EiIHR5cGU9IjEwMjYiPg0KKyAgICAgIDxjaGlsZHJlbiB4bWk6dHlwZT0ibm90YXRpb246RGVjb3JhdGlvbk5vZGUiIHhtaTppZD0iX0h0bjNVSmdQRWVTRnRMb1ZlMi1zb1EiIHR5cGU9IjEwMzQiLz4NCisgICAgICA8Y2hpbGRyZW4geG1pOnR5cGU9Im5vdGF0aW9uOkJhc2ljQ29tcGFydG1lbnQiIHhtaTppZD0iX0h0bjNVWmdQRWVTRnRMb1ZlMi1zb1EiIHZpc2libGU9ImZhbHNlIiB0eXBlPSIxMDcxIj4NCisgICAgICAgIDxzdHlsZXMgeG1pOnR5cGU9Im5vdGF0aW9uOlRpdGxlU3R5bGUiIHhtaTppZD0iX0h0bjNVcGdQRWVTRnRMb1ZlMi1zb1EiLz4NCisgICAgICAgIDxzdHlsZXMgeG1pOnR5cGU9Im5vdGF0aW9uOlNvcnRpbmdTdHlsZSIgeG1pOmlkPSJfSHRuM1U1Z1BFZVNGdExvVmUyLXNvUSIvPg0KKyAgICAgICAgPHN0eWxlcyB4bWk6dHlwZT0ibm90YXRpb246RmlsdGVyaW5nU3R5bGUiIHhtaTppZD0iX0h0bjNWSmdQRWVTRnRMb1ZlMi1zb1EiLz4NCisgICAgICAgIDxsYXlvdXRDb25zdHJhaW50IHhtaTp0eXBlPSJub3RhdGlvbjpCb3VuZHMiIHhtaTppZD0iX0h0bjNWWmdQRWVTRnRMb1ZlMi1zb1EiLz4NCisgICAgICA8L2NoaWxkcmVuPg0KKyAgICAgIDxjaGlsZHJlbiB4bWk6dHlwZT0ibm90YXRpb246QmFzaWNDb21wYXJ0bWVudCIgeG1pOmlkPSJfSHRuM1ZwZ1BFZVNGdExvVmUyLXNvUSIgdmlzaWJsZT0iZmFsc2UiIHR5cGU9IjEwMTkiPg0KKyAgICAgICAgPHN0eWxlcyB4bWk6dHlwZT0ibm90YXRpb246VGl0bGVTdHlsZSIgeG1pOmlkPSJfSHRuM1Y1Z1BFZVNGdExvVmUyLXNvUSIvPg0KKyAgICAgICAgPHN0eWxlcyB4bWk6dHlwZT0ibm90YXRpb246U29ydGluZ1N0eWxlIiB4bWk6aWQ9Il9IdG4zV0pnUEVlU0Z0TG9WZTItc29RIi8+DQorICAgICAgICA8c3R5bGVzIHhtaTp0eXBlPSJub3RhdGlvbjpGaWx0ZXJpbmdTdHlsZSIgeG1pOmlkPSJfSHRuM1daZ1BFZVNGdExvVmUyLXNvUSIvPg0KKyAgICAgICAgPGxheW91dENvbnN0cmFpbnQgeG1pOnR5cGU9Im5vdGF0aW9uOkJvdW5kcyIgeG1pOmlkPSJfSHRuM1dwZ1BFZVNGdExvVmUyLXNvUSIvPg0KKyAgICAgIDwvY2hpbGRyZW4+DQorICAgICAgPGVsZW1lbnQgeG1pOnR5cGU9InVtbDpTdGVyZW90eXBlIiBocmVmPSJTeXNNTC5wcm9maWxlLnVtbCNTeXNNTC1Qb3J0c191MDAyNkZsb3dzLUludGVyZmFjZUJsb2NrIi8+DQorICAgICAgPGxheW91dENvbnN0cmFpbnQgeG1pOnR5cGU9Im5vdGF0aW9uOkJvdW5kcyIgeG1pOmlkPSJfSHRuUVFaZ1BFZVNGdExvVmUyLXNvUSIgeD0iMjAwIiB5PSI0MjAiIGhlaWdodD0iNjEiLz4NCisgICAgPC9jaGlsZHJlbj4NCisgICAgPGNoaWxkcmVuIHhtaTp0eXBlPSJub3RhdGlvbjpTaGFwZSIgeG1pOmlkPSJfSHR5MmNKZ1BFZVNGdExvVmUyLXNvUSIgdHlwZT0iMTAyNiI+DQorICAgICAgPGNoaWxkcmVuIHhtaTp0eXBlPSJub3RhdGlvbjpEZWNvcmF0aW9uTm9kZSIgeG1pOmlkPSJfSHR5MmNwZ1BFZVNGdExvVmUyLXNvUSIgdHlwZT0iMTAzNCIvPg0KKyAgICAgIDxjaGlsZHJlbiB4bWk6dHlwZT0ibm90YXRpb246QmFzaWNDb21wYXJ0bWVudCIgeG1pOmlkPSJfSHR6ZGdKZ1BFZVNGdExvVmUyLXNvUSIgdmlzaWJsZT0iZmFsc2UiIHR5cGU9IjEwNzEiPg0KKyAgICAgICAgPHN0eWxlcyB4bWk6dHlwZT0ibm90YXRpb246VGl0bGVTdHlsZSIgeG1pOmlkPSJfSHR6ZGdaZ1BFZVNGdExvVmUyLXNvUSIvPg0KKyAgICAgICAgPHN0eWxlcyB4bWk6dHlwZT0ibm90YXRpb246U29ydGluZ1N0eWxlIiB4bWk6aWQ9Il9IdHpkZ3BnUEVlU0Z0TG9WZTItc29RIi8+DQorICAgICAgICA8c3R5bGVzIHhtaTp0eXBlPSJub3RhdGlvbjpGaWx0ZXJpbmdTdHlsZSIgeG1pOmlkPSJfSHR6ZGc1Z1BFZVNGdExvVmUyLXNvUSIvPg0KKyAgICAgICAgPGxheW91dENvbnN0cmFpbnQgeG1pOnR5cGU9Im5vdGF0aW9uOkJvdW5kcyIgeG1pOmlkPSJfSHR6ZGhKZ1BFZVNGdExvVmUyLXNvUSIvPg0KKyAgICAgIDwvY2hpbGRyZW4+DQorICAgICAgPGNoaWxkcmVuIHhtaTp0eXBlPSJub3RhdGlvbjpCYXNpY0NvbXBhcnRtZW50IiB4bWk6aWQ9Il9IdHpkaFpnUEVlU0Z0TG9WZTItc29RIiB2aXNpYmxlPSJmYWxzZSIgdHlwZT0iMTAxOSI+DQorICAgICAgICA8c3R5bGVzIHhtaTp0eXBlPSJub3RhdGlvbjpUaXRsZVN0eWxlIiB4bWk6aWQ9Il9IdHpkaHBnUEVlU0Z0TG9WZTItc29RIi8+DQorICAgICAgICA8c3R5bGVzIHhtaTp0eXBlPSJub3RhdGlvbjpTb3J0aW5nU3R5bGUiIHhtaTppZD0iX0h0emRoNWdQRWVTRnRMb1ZlMi1zb1EiLz4NCisgICAgICAgIDxzdHlsZXMgeG1pOnR5cGU9Im5vdGF0aW9uOkZpbHRlcmluZ1N0eWxlIiB4bWk6aWQ9Il9IdHpkaUpnUEVlU0Z0TG9WZTItc29RIi8+DQorICAgICAgICA8bGF5b3V0Q29uc3RyYWludCB4bWk6dHlwZT0ibm90YXRpb246Qm91bmRzIiB4bWk6aWQ9Il9IdHpkaVpnUEVlU0Z0TG9WZTItc29RIi8+DQorICAgICAgPC9jaGlsZHJlbj4NCisgICAgICA8ZWxlbWVudCB4bWk6dHlwZT0idW1sOlN0ZXJlb3R5cGUiIGhyZWY9IlN5c01MLnByb2ZpbGUudW1sI1N5c01MLUJsb2Nrcy1CbG9jayIvPg0KKyAgICAgIDxsYXlvdXRDb25zdHJhaW50IHhtaTp0eXBlPSJub3RhdGlvbjpCb3VuZHMiIHhtaTppZD0iX0h0eTJjWmdQRWVTRnRMb1ZlMi1zb1EiIHg9IjIwMCIgeT0iMjgwIiBoZWlnaHQ9IjYwIi8+DQorICAgIDwvY2hpbGRyZW4+DQorICAgIDxjaGlsZHJlbiB4bWk6dHlwZT0ibm90YXRpb246U2hhcGUiIHhtaTppZD0iX09HZ3NBSmdQRWVTRnRMb1ZlMi1zb1EiIHR5cGU9IjIwMDYiPg0KKyAgICAgIDxjaGlsZHJlbiB4bWk6dHlwZT0ibm90YXRpb246RGVjb3JhdGlvbk5vZGUiIHhtaTppZD0iX09HaDZJSmdQRWVTRnRMb1ZlMi1zb1EiIHR5cGU9IjUwMjMiLz4NCisgICAgICA8Y2hpbGRyZW4geG1pOnR5cGU9Im5vdGF0aW9uOkJhc2ljQ29tcGFydG1lbnQiIHhtaTppZD0iX09HaDZJWmdQRWVTRnRMb1ZlMi1zb1EiIHR5cGU9IjEwNjMiPg0KKyAgICAgICAgPGNoaWxkcmVuIHhtaTp0eXBlPSJub3RhdGlvbjpTaGFwZSIgeG1pOmlkPSJfUGFOdmtKZ1BFZVNGdExvVmUyLXNvUSIgdHlwZT0iMTAzNyI+DQorICAgICAgICAgIDxlbGVtZW50IHhtaTp0eXBlPSJ1bWw6RW51bWVyYXRpb25MaXRlcmFsIiBocmVmPSJTeXNNTC5wcm9maWxlLnVtbCNTeXNNTC1Qb3J0c191MDAyNkZsb3dzLUZsb3dEaXJlY3Rpb24taW4iLz4NCisgICAgICAgICAgPGxheW91dENvbnN0cmFpbnQgeG1pOnR5cGU9Im5vdGF0aW9uOkxvY2F0aW9uIiB4bWk6aWQ9Il9QYU52a1pnUEVlU0Z0TG9WZTItc29RIi8+DQorICAgICAgICA8L2NoaWxkcmVuPg0KKyAgICAgICAgPGNoaWxkcmVuIHhtaTp0eXBlPSJub3RhdGlvbjpTaGFwZSIgeG1pOmlkPSJfUGFTb0VKZ1BFZVNGdExvVmUyLXNvUSIgdHlwZT0iMTAzNyI+DQorICAgICAgICAgIDxlbGVtZW50IHhtaTp0eXBlPSJ1bWw6RW51bWVyYXRpb25MaXRlcmFsIiBocmVmPSJTeXNNTC5wcm9maWxlLnVtbCNTeXNNTC1Qb3J0c191MDAyNkZsb3dzLUZsb3dEaXJlY3Rpb24taW5vdXQiLz4NCisgICAgICAgICAgPGxheW91dENvbnN0cmFpbnQgeG1pOnR5cGU9Im5vdGF0aW9uOkxvY2F0aW9uIiB4bWk6aWQ9Il9QYVNvRVpnUEVlU0Z0TG9WZTItc29RIi8+DQorICAgICAgICA8L2NoaWxkcmVuPg0KKyAgICAgICAgPGNoaWxkcmVuIHhtaTp0eXBlPSJub3RhdGlvbjpTaGFwZSIgeG1pOmlkPSJfUGFUMk1KZ1BFZVNGdExvVmUyLXNvUSIgdHlwZT0iMTAzNyI+DQorICAgICAgICAgIDxlbGVtZW50IHhtaTp0eXBlPSJ1bWw6RW51bWVyYXRpb25MaXRlcmFsIiBocmVmPSJTeXNNTC5wcm9maWxlLnVtbCNTeXNNTC1Qb3J0c191MDAyNkZsb3dzLUZsb3dEaXJlY3Rpb24tb3V0Ii8+DQorICAgICAgICAgIDxsYXlvdXRDb25zdHJhaW50IHhtaTp0eXBlPSJub3RhdGlvbjpMb2NhdGlvbiIgeG1pOmlkPSJfUGFUMk1aZ1BFZVNGdExvVmUyLXNvUSIvPg0KKyAgICAgICAgPC9jaGlsZHJlbj4NCisgICAgICAgIDxzdHlsZXMgeG1pOnR5cGU9Im5vdGF0aW9uOlRpdGxlU3R5bGUiIHhtaTppZD0iX09HaDZJcGdQRWVTRnRMb1ZlMi1zb1EiLz4NCisgICAgICAgIDxzdHlsZXMgeG1pOnR5cGU9Im5vdGF0aW9uOlNvcnRpbmdTdHlsZSIgeG1pOmlkPSJfT0doNkk1Z1BFZVNGdExvVmUyLXNvUSIvPg0KKyAgICAgICAgPHN0eWxlcyB4bWk6dHlwZT0ibm90YXRpb246RmlsdGVyaW5nU3R5bGUiIHhtaTppZD0iX09HaDZKSmdQRWVTRnRMb1ZlMi1zb1EiLz4NCisgICAgICAgIDxsYXlvdXRDb25zdHJhaW50IHhtaTp0eXBlPSJub3RhdGlvbjpCb3VuZHMiIHhtaTppZD0iX09HaDZKWmdQRWVTRnRMb1ZlMi1zb1EiLz4NCisgICAgICA8L2NoaWxkcmVuPg0KKyAgICAgIDxlbGVtZW50IHhtaTp0eXBlPSJ1bWw6RW51bWVyYXRpb24iIGhyZWY9IlN5c01MLnByb2ZpbGUudW1sI1N5c01MLVBvcnRzX3UwMDI2Rmxvd3MtRmxvd0RpcmVjdGlvbiIvPg0KKyAgICAgIDxsYXlvdXRDb25zdHJhaW50IHhtaTp0eXBlPSJub3RhdGlvbjpCb3VuZHMiIHhtaTppZD0iX09HZ3NBWmdQRWVTRnRMb1ZlMi1zb1EiIHg9IjYwMCIgeT0iMjYwIi8+DQorICAgIDwvY2hpbGRyZW4+DQorICAgIDxzdHlsZXMgeG1pOnR5cGU9Im5vdGF0aW9uOlN0cmluZ1ZhbHVlU3R5bGUiIHhtaTppZD0iX244c2NVWmdPRWVTRnRMb1ZlMi1zb1EiIG5hbWU9ImRpYWdyYW1fY29tcGF0aWJpbGl0eV92ZXJzaW9uIiBzdHJpbmdWYWx1ZT0iMS4wLjAiLz4NCisgICAgPHN0eWxlcyB4bWk6dHlwZT0ibm90YXRpb246RGlhZ3JhbVN0eWxlIiB4bWk6aWQ9Il9uOHNjVXBnT0VlU0Z0TG9WZTItc29RIi8+DQorICAgIDxzdHlsZXMgeG1pOnR5cGU9InN0eWxlOlBhcHlydXNWaWV3U3R5bGUiIHhtaTppZD0iX244c2NVNWdPRWVTRnRMb1ZlMi1zb1EiPg0KKyAgICAgIDxvd25lciB4bWk6dHlwZT0idW1sOlBhY2thZ2UiIGhyZWY9IlN5c01MLnByb2ZpbGUudW1sI1N5c01MLVBvcnRzX3UwMDI2Rmxvd3MiLz4NCisgICAgPC9zdHlsZXM+DQorICAgIDxlbGVtZW50IHhtaTp0eXBlPSJ1bWw6UGFja2FnZSIgaHJlZj0iU3lzTUwucHJvZmlsZS51bWwjU3lzTUwtUG9ydHNfdTAwMjZGbG93cyIvPg0KKyAgICA8ZWRnZXMgeG1pOnR5cGU9Im5vdGF0aW9uOkNvbm5lY3RvciIgeG1pOmlkPSJfczNRUjBKZ09FZVNGdExvVmUyLXNvUSIgdHlwZT0iMTAxMyIgc291cmNlPSJfczNCQlFKZ09FZVNGdExvVmUyLXNvUSIgdGFyZ2V0PSJfczNLeVFKZ09FZVNGdExvVmUyLXNvUSI+DQorICAgICAgPHN0eWxlcyB4bWk6dHlwZT0ibm90YXRpb246Rm9udFN0eWxlIiB4bWk6aWQ9Il9zM1FSMFpnT0VlU0Z0TG9WZTItc29RIi8+DQorICAgICAgPGVsZW1lbnQgeG1pOnR5cGU9InVtbDpFeHRlbnNpb24iIGhyZWY9IlN5c01MLnByb2ZpbGUudW1sI1N5c01MLVBvcnRzX3UwMDI2Rmxvd3MtRV9leHRlbnNpb25fRnVsbFBvcnRfYmFzZV9Qb3J0Ii8+DQorICAgICAgPGJlbmRwb2ludHMgeG1pOnR5cGU9Im5vdGF0aW9uOlJlbGF0aXZlQmVuZHBvaW50cyIgeG1pOmlkPSJfczNRUjBwZ09FZVNGdExvVmUyLXNvUSIgcG9pbnRzPSJbLTEzLCAwLCAxMjQsIDUwXSRbLTEzLCAtNTAsIDEyNCwgMF0iLz4NCisgICAgICA8c291cmNlQW5jaG9yIHhtaTp0eXBlPSJub3RhdGlvbjpJZGVudGl0eUFuY2hvciIgeG1pOmlkPSJfdFBWYW9KZ09FZVNGdExvVmUyLXNvUSIgaWQ9IigwLjUzLDAuMCkiLz4NCisgICAgICA8dGFyZ2V0QW5jaG9yIHhtaTp0eXBlPSJub3RhdGlvbjpJZGVudGl0eUFuY2hvciIgeG1pOmlkPSJfdFBWYW9aZ09FZVNGdExvVmUyLXNvUSIgaWQ9IigwLjQ1ODgyMzUyOTQxMTc2NDcsMS4wKSIvPg0KKyAgICA8L2VkZ2VzPg0KKyAgICA8ZWRnZXMgeG1pOnR5cGU9Im5vdGF0aW9uOkNvbm5lY3RvciIgeG1pOmlkPSJfdmJxSVFKZ09FZVNGdExvVmUyLXNvUSIgdHlwZT0iMTAxMyIgc291cmNlPSJfdmJnWFFKZ09FZVNGdExvVmUyLXNvUSIgdGFyZ2V0PSJfczNLeVFKZ09FZVNGdExvVmUyLXNvUSI+DQorICAgICAgPHN0eWxlcyB4bWk6dHlwZT0ibm90YXRpb246Rm9udFN0eWxlIiB4bWk6aWQ9Il92YnFJUVpnT0VlU0Z0TG9WZTItc29RIi8+DQorICAgICAgPGVsZW1lbnQgeG1pOnR5cGU9InVtbDpFeHRlbnNpb24iIGhyZWY9IlN5c01MLnByb2ZpbGUudW1sI1N5c01MLVBvcnRzX3UwMDI2Rmxvd3MtRV9leHRlbnNpb25fUHJveHlQb3J0X2Jhc2VfUG9ydCIvPg0KKyAgICAgIDxiZW5kcG9pbnRzIHhtaTp0eXBlPSJub3RhdGlvbjpSZWxhdGl2ZUJlbmRwb2ludHMiIHhtaTppZD0iX3ZicUlRcGdPRWVTRnRMb1ZlMi1zb1EiIHBvaW50cz0iWzAsIDAsIC0yNTAsIC02NV0kWzE1MywgNDAsIC05NywgLTI1XSIvPg0KKyAgICAgIDxzb3VyY2VBbmNob3IgeG1pOnR5cGU9Im5vdGF0aW9uOklkZW50aXR5QW5jaG9yIiB4bWk6aWQ9Il92M09wOEpnT0VlU0Z0TG9WZTItc29RIiBpZD0iKDAuNTEsMC4wKSIvPg0KKyAgICAgIDx0YXJnZXRBbmNob3IgeG1pOnR5cGU9Im5vdGF0aW9uOklkZW50aXR5QW5jaG9yIiB4bWk6aWQ9Il92M09wOFpnT0VlU0Z0TG9WZTItc29RIiBpZD0iKDAuMjA4ODIzNTI5NDExNzY0NywxLjApIi8+DQorICAgIDwvZWRnZXM+DQorICAgIDxlZGdlcyB4bWk6dHlwZT0ibm90YXRpb246Q29ubmVjdG9yIiB4bWk6aWQ9Il8zOGtaWUpnT0VlU0Z0TG9WZTItc29RIiB0eXBlPSIxMDEzIiBzb3VyY2U9Il8zOFhsRUpnT0VlU0Z0TG9WZTItc29RIiB0YXJnZXQ9Il8zOGZnNEpnT0VlU0Z0TG9WZTItc29RIj4NCisgICAgICA8c3R5bGVzIHhtaTp0eXBlPSJub3RhdGlvbjpGb250U3R5bGUiIHhtaTppZD0iXzM4a1pZWmdPRWVTRnRMb1ZlMi1zb1EiLz4NCisgICAgICA8ZWxlbWVudCB4bWk6dHlwZT0idW1sOkV4dGVuc2lvbiIgaHJlZj0iU3lzTUwucHJvZmlsZS51bWwjU3lzTUwtUG9ydHNfdTAwMjZGbG93cy1FX2V4dGVuc2lvbl9GbG93UHJvcGVydHlfYmFzZV9Qcm9wZXJ0eSIvPg0KKyAgICAgIDxiZW5kcG9pbnRzIHhtaTp0eXBlPSJub3RhdGlvbjpSZWxhdGl2ZUJlbmRwb2ludHMiIHhtaTppZD0iXzM4a1pZcGdPRWVTRnRMb1ZlMi1zb1EiIHBvaW50cz0iWzEyLCAwLCAtMzIsIDUwXSRbMTIsIC01MCwgLTMyLCAwXSIvPg0KKyAgICAgIDxzb3VyY2VBbmNob3IgeG1pOnR5cGU9Im5vdGF0aW9uOklkZW50aXR5QW5jaG9yIiB4bWk6aWQ9Il80V2M1QUpnT0VlU0Z0TG9WZTItc29RIiBpZD0iKDAuMzcsMC4wKSIvPg0KKyAgICAgIDx0YXJnZXRBbmNob3IgeG1pOnR5cGU9Im5vdGF0aW9uOklkZW50aXR5QW5jaG9yIiB4bWk6aWQ9Il80V2RnRUpnT0VlU0Z0TG9WZTItc29RIiBpZD0iKDAuNjIsMS4wKSIvPg0KKyAgICA8L2VkZ2VzPg0KKyAgICA8ZWRnZXMgeG1pOnR5cGU9Im5vdGF0aW9uOkNvbm5lY3RvciIgeG1pOmlkPSJfSHQ3WlVKZ1BFZVNGdExvVmUyLXNvUSIgdHlwZT0iNDAwMiIgc291cmNlPSJfSHRuUVFKZ1BFZVNGdExvVmUyLXNvUSIgdGFyZ2V0PSJfSHR5MmNKZ1BFZVNGdExvVmUyLXNvUSI+DQorICAgICAgPGNoaWxkcmVuIHhtaTp0eXBlPSJub3RhdGlvbjpEZWNvcmF0aW9uTm9kZSIgeG1pOmlkPSJfSHQ4QVlKZ1BFZVNGdExvVmUyLXNvUSIgdHlwZT0iNjAwNyI+DQorICAgICAgICA8bGF5b3V0Q29uc3RyYWludCB4bWk6dHlwZT0ibm90YXRpb246TG9jYXRpb24iIHhtaTppZD0iX0h0OEFZWmdQRWVTRnRMb1ZlMi1zb1EiIHk9IjYwIi8+DQorICAgICAgPC9jaGlsZHJlbj4NCisgICAgICA8c3R5bGVzIHhtaTp0eXBlPSJub3RhdGlvbjpGb250U3R5bGUiIHhtaTppZD0iX0h0N1pVWmdQRWVTRnRMb1ZlMi1zb1EiLz4NCisgICAgICA8ZWxlbWVudCB4bWk6dHlwZT0idW1sOkdlbmVyYWxpemF0aW9uIiBocmVmPSJTeXNNTC5wcm9maWxlLnVtbCNTeXNNTC1Qb3J0c191MDAyNkZsb3dzLUludGVyZmFjZUJsb2NrLWdlbmVyYWxpemF0aW9uIi8+DQorICAgICAgPGJlbmRwb2ludHMgeG1pOnR5cGU9Im5vdGF0aW9uOlJlbGF0aXZlQmVuZHBvaW50cyIgeG1pOmlkPSJfSHQ3WlVwZ1BFZVNGdExvVmUyLXNvUSIgcG9pbnRzPSJbLTQ3LCAwLCAyOCwgODBdJFstNDcsIC04MCwgMjgsIDBdIi8+DQorICAgICAgPHNvdXJjZUFuY2hvciB4bWk6dHlwZT0ibm90YXRpb246SWRlbnRpdHlBbmNob3IiIHhtaTppZD0iX0lKVmk4SmdQRWVTRnRMb1ZlMi1zb1EiIGlkPSIoMC44NywwLjApIi8+DQorICAgICAgPHRhcmdldEFuY2hvciB4bWk6dHlwZT0ibm90YXRpb246SWRlbnRpdHlBbmNob3IiIHhtaTppZD0iX0lKVmk4WmdQRWVTRnRMb1ZlMi1zb1EiIGlkPSIoMC4xMiwxLjApIi8+DQorICAgIDwvZWRnZXM+DQorICA8L25vdGF0aW9uOkRpYWdyYW0+DQorICA8bm90YXRpb246RGlhZ3JhbSB4bWk6aWQ9Il9WT0tyTUpnUEVlU0Z0TG9WZTItc29RIiB0eXBlPSJQYXB5cnVzVU1MUHJvZmlsZURpYWdyYW0iIG5hbWU9IkFjdGlvbnMgb24gbmVzdGVkIHBvcnQiIG1lYXN1cmVtZW50VW5pdD0iUGl4ZWwiPg0KKyAgICA8Y2hpbGRyZW4geG1pOnR5cGU9Im5vdGF0aW9uOlNoYXBlIiB4bWk6aWQ9Il9aYmF1d0pnUEVlU0Z0TG9WZTItc29RIiB0eXBlPSIxMDI2Ij4NCisgICAgICA8Y2hpbGRyZW4geG1pOnR5cGU9Im5vdGF0aW9uOkRlY29yYXRpb25Ob2RlIiB4bWk6aWQ9Il9aYmF1d3BnUEVlU0Z0TG9WZTItc29RIiB0eXBlPSIxMDM0Ii8+DQorICAgICAgPGNoaWxkcmVuIHhtaTp0eXBlPSJub3RhdGlvbjpCYXNpY0NvbXBhcnRtZW50IiB4bWk6aWQ9Il9aYmF1dzVnUEVlU0Z0TG9WZTItc29RIiB0eXBlPSIxMDcxIj4NCisgICAgICAgIDxzdHlsZXMgeG1pOnR5cGU9Im5vdGF0aW9uOlRpdGxlU3R5bGUiIHhtaTppZD0iX1piYXV4SmdQRWVTRnRMb1ZlMi1zb1EiLz4NCisgICAgICAgIDxzdHlsZXMgeG1pOnR5cGU9Im5vdGF0aW9uOlNvcnRpbmdTdHlsZSIgeG1pOmlkPSJfWmJhdXhaZ1BFZVNGdExvVmUyLXNvUSIvPg0KKyAgICAgICAgPHN0eWxlcyB4bWk6dHlwZT0ibm90YXRpb246RmlsdGVyaW5nU3R5bGUiIHhtaTppZD0iX1piYXV4cGdQRWVTRnRMb1ZlMi1zb1EiLz4NCisgICAgICAgIDxsYXlvdXRDb25zdHJhaW50IHhtaTp0eXBlPSJub3RhdGlvbjpCb3VuZHMiIHhtaTppZD0iX1piYXV4NWdQRWVTRnRMb1ZlMi1zb1EiLz4NCisgICAgICA8L2NoaWxkcmVuPg0KKyAgICAgIDxjaGlsZHJlbiB4bWk6dHlwZT0ibm90YXRpb246QmFzaWNDb21wYXJ0bWVudCIgeG1pOmlkPSJfWmJiVjBKZ1BFZVNGdExvVmUyLXNvUSIgdHlwZT0iMTAxOSI+DQorICAgICAgICA8c3R5bGVzIHhtaTp0eXBlPSJub3RhdGlvbjpUaXRsZVN0eWxlIiB4bWk6aWQ9Il9aYmJWMFpnUEVlU0Z0TG9WZTItc29RIi8+DQorICAgICAgICA8c3R5bGVzIHhtaTp0eXBlPSJub3RhdGlvbjpTb3J0aW5nU3R5bGUiIHhtaTppZD0iX1piYlYwcGdQRWVTRnRMb1ZlMi1zb1EiLz4NCisgICAgICAgIDxzdHlsZXMgeG1pOnR5cGU9Im5vdGF0aW9uOkZpbHRlcmluZ1N0eWxlIiB4bWk6aWQ9Il9aYmJWMDVnUEVlU0Z0TG9WZTItc29RIi8+DQorICAgICAgICA8bGF5b3V0Q29uc3RyYWludCB4bWk6dHlwZT0ibm90YXRpb246Qm91bmRzIiB4bWk6aWQ9Il9aYmJWMUpnUEVlU0Z0TG9WZTItc29RIi8+DQorICAgICAgPC9jaGlsZHJlbj4NCisgICAgICA8ZWxlbWVudCB4bWk6dHlwZT0idW1sOlN0ZXJlb3R5cGUiIGhyZWY9IlN5c01MLnByb2ZpbGUudW1sI1N5c01MLVBvcnRzX3UwMDI2Rmxvd3MtSW52b2NhdGlvbk9uTmVzdGVkUG9ydEFjdGlvbiIvPg0KKyAgICAgIDxsYXlvdXRDb25zdHJhaW50IHhtaTp0eXBlPSJub3RhdGlvbjpCb3VuZHMiIHhtaTppZD0iX1piYXV3WmdQRWVTRnRMb1ZlMi1zb1EiIHg9IjI0MCIgeT0iMTYwIi8+DQorICAgIDwvY2hpbGRyZW4+DQorICAgIDxjaGlsZHJlbiB4bWk6dHlwZT0ibm90YXRpb246U2hhcGUiIHhtaTppZD0iX2FvX1ZJSmdQRWVTRnRMb1ZlMi1zb1EiIHR5cGU9IjEwMjYiPg0KKyAgICAgIDxjaGlsZHJlbiB4bWk6dHlwZT0ibm90YXRpb246RGVjb3JhdGlvbk5vZGUiIHhtaTppZD0iX2FvXzhNSmdQRWVTRnRMb1ZlMi1zb1EiIHR5cGU9IjEwMzQiLz4NCisgICAgICA8Y2hpbGRyZW4geG1pOnR5cGU9Im5vdGF0aW9uOkJhc2ljQ29tcGFydG1lbnQiIHhtaTppZD0iX2FvXzhNWmdQRWVTRnRMb1ZlMi1zb1EiIHZpc2libGU9ImZhbHNlIiB0eXBlPSIxMDcxIj4NCisgICAgICAgIDxzdHlsZXMgeG1pOnR5cGU9Im5vdGF0aW9uOlRpdGxlU3R5bGUiIHhtaTppZD0iX2FvXzhNcGdQRWVTRnRMb1ZlMi1zb1EiLz4NCisgICAgICAgIDxzdHlsZXMgeG1pOnR5cGU9Im5vdGF0aW9uOlNvcnRpbmdTdHlsZSIgeG1pOmlkPSJfYW9fOE01Z1BFZVNGdExvVmUyLXNvUSIvPg0KKyAgICAgICAgPHN0eWxlcyB4bWk6dHlwZT0ibm90YXRpb246RmlsdGVyaW5nU3R5bGUiIHhtaTppZD0iX2FvXzhOSmdQRWVTRnRMb1ZlMi1zb1EiLz4NCisgICAgICAgIDxsYXlvdXRDb25zdHJhaW50IHhtaTp0eXBlPSJub3RhdGlvbjpCb3VuZHMiIHhtaTppZD0iX2FvXzhOWmdQRWVTRnRMb1ZlMi1zb1EiLz4NCisgICAgICA8L2NoaWxkcmVuPg0KKyAgICAgIDxjaGlsZHJlbiB4bWk6dHlwZT0ibm90YXRpb246QmFzaWNDb21wYXJ0bWVudCIgeG1pOmlkPSJfYW9fOE5wZ1BFZVNGdExvVmUyLXNvUSIgdmlzaWJsZT0iZmFsc2UiIHR5cGU9IjEwMTkiPg0KKyAgICAgICAgPHN0eWxlcyB4bWk6dHlwZT0ibm90YXRpb246VGl0bGVTdHlsZSIgeG1pOmlkPSJfYW9fOE41Z1BFZVNGdExvVmUyLXNvUSIvPg0KKyAgICAgICAgPHN0eWxlcyB4bWk6dHlwZT0ibm90YXRpb246U29ydGluZ1N0eWxlIiB4bWk6aWQ9Il9hb184T0pnUEVlU0Z0TG9WZTItc29RIi8+DQorICAgICAgICA8c3R5bGVzIHhtaTp0eXBlPSJub3RhdGlvbjpGaWx0ZXJpbmdTdHlsZSIgeG1pOmlkPSJfYW9fOE9aZ1BFZVNGdExvVmUyLXNvUSIvPg0KKyAgICAgICAgPGxheW91dENvbnN0cmFpbnQgeG1pOnR5cGU9Im5vdGF0aW9uOkJvdW5kcyIgeG1pOmlkPSJfYW9fOE9wZ1BFZVNGdExvVmUyLXNvUSIvPg0KKyAgICAgIDwvY2hpbGRyZW4+DQorICAgICAgPGVsZW1lbnQgeG1pOnR5cGU9InVtbDpTdGVyZW90eXBlIiBocmVmPSJTeXNNTC5wcm9maWxlLnVtbCNTeXNNTC1CbG9ja3MtRWxlbWVudFByb3BlcnR5UGF0aCIvPg0KKyAgICAgIDxsYXlvdXRDb25zdHJhaW50IHhtaTp0eXBlPSJub3RhdGlvbjpCb3VuZHMiIHhtaTppZD0iX2FvX1ZJWmdQRWVTRnRMb1ZlMi1zb1EiIHg9IjU4MCIgeT0iNDAiIHdpZHRoPSIxNTMiIGhlaWdodD0iNDEiLz4NCisgICAgPC9jaGlsZHJlbj4NCisgICAgPGNoaWxkcmVuIHhtaTp0eXBlPSJub3RhdGlvbjpTaGFwZSIgeG1pOmlkPSJfY1NjbVFKZ1BFZVNGdExvVmUyLXNvUSIgdHlwZT0iMTAzMSI+DQorICAgICAgPGNoaWxkcmVuIHhtaTp0eXBlPSJub3RhdGlvbjpEZWNvcmF0aW9uTm9kZSIgeG1pOmlkPSJfY1NjbVFwZ1BFZVNGdExvVmUyLXNvUSIgdHlwZT0iMTA4NCIvPg0KKyAgICAgIDxlbGVtZW50IHhtaTp0eXBlPSJ1bWw6Q2xhc3MiIGhyZWY9InBhdGhtYXA6Ly9VTUxfTUVUQU1PREVMUy9VTUwubWV0YW1vZGVsLnVtbCNJbnZvY2F0aW9uQWN0aW9uIi8+DQorICAgICAgPGxheW91dENvbnN0cmFpbnQgeG1pOnR5cGU9Im5vdGF0aW9uOkJvdW5kcyIgeG1pOmlkPSJfY1NjbVFaZ1BFZVNGdExvVmUyLXNvUSIgeD0iMjIwIiB5PSI0MCIvPg0KKyAgICA8L2NoaWxkcmVuPg0KKyAgICA8Y2hpbGRyZW4geG1pOnR5cGU9Im5vdGF0aW9uOlNoYXBlIiB4bWk6aWQ9Il9kN0gwUUpnUEVlU0Z0TG9WZTItc29RIiB0eXBlPSIxMDMxIj4NCisgICAgICA8Y2hpbGRyZW4geG1pOnR5cGU9Im5vdGF0aW9uOkRlY29yYXRpb25Ob2RlIiB4bWk6aWQ9Il9kN0liVUpnUEVlU0Z0TG9WZTItc29RIiB0eXBlPSIxMDg0Ii8+DQorICAgICAgPGVsZW1lbnQgeG1pOnR5cGU9InVtbDpDbGFzcyIgaHJlZj0icGF0aG1hcDovL1VNTF9NRVRBTU9ERUxTL1VNTC5tZXRhbW9kZWwudW1sI1BvcnQiLz4NCisgICAgICA8bGF5b3V0Q29uc3RyYWludCB4bWk6dHlwZT0ibm90YXRpb246Qm91bmRzIiB4bWk6aWQ9Il9kN0gwUVpnUEVlU0Z0TG9WZTItc29RIiB4PSI2MjAiIHk9IjE4MCIvPg0KKyAgICA8L2NoaWxkcmVuPg0KKyAgICA8Y2hpbGRyZW4geG1pOnR5cGU9Im5vdGF0aW9uOlNoYXBlIiB4bWk6aWQ9Il9nV3NlMEpnUEVlU0Z0TG9WZTItc29RIiB0eXBlPSIxMDI2Ij4NCisgICAgICA8Y2hpbGRyZW4geG1pOnR5cGU9Im5vdGF0aW9uOkRlY29yYXRpb25Ob2RlIiB4bWk6aWQ9Il9nV3RGNEpnUEVlU0Z0TG9WZTItc29RIiB0eXBlPSIxMDM0Ii8+DQorICAgICAgPGNoaWxkcmVuIHhtaTp0eXBlPSJub3RhdGlvbjpCYXNpY0NvbXBhcnRtZW50IiB4bWk6aWQ9Il9nV3RGNFpnUEVlU0Z0TG9WZTItc29RIiB0eXBlPSIxMDcxIj4NCisgICAgICAgIDxzdHlsZXMgeG1pOnR5cGU9Im5vdGF0aW9uOlRpdGxlU3R5bGUiIHhtaTppZD0iX2dXdEY0cGdQRWVTRnRMb1ZlMi1zb1EiLz4NCisgICAgICAgIDxzdHlsZXMgeG1pOnR5cGU9Im5vdGF0aW9uOlNvcnRpbmdTdHlsZSIgeG1pOmlkPSJfZ1d0RjQ1Z1BFZVNGdExvVmUyLXNvUSIvPg0KKyAgICAgICAgPHN0eWxlcyB4bWk6dHlwZT0ibm90YXRpb246RmlsdGVyaW5nU3R5bGUiIHhtaTppZD0iX2dXdEY1SmdQRWVTRnRMb1ZlMi1zb1EiLz4NCisgICAgICAgIDxsYXlvdXRDb25zdHJhaW50IHhtaTp0eXBlPSJub3RhdGlvbjpCb3VuZHMiIHhtaTppZD0iX2dXdEY1WmdQRWVTRnRMb1ZlMi1zb1EiLz4NCisgICAgICA8L2NoaWxkcmVuPg0KKyAgICAgIDxjaGlsZHJlbiB4bWk6dHlwZT0ibm90YXRpb246QmFzaWNDb21wYXJ0bWVudCIgeG1pOmlkPSJfZ1d0RjVwZ1BFZVNGdExvVmUyLXNvUSIgdHlwZT0iMTAxOSI+DQorICAgICAgICA8c3R5bGVzIHhtaTp0eXBlPSJub3RhdGlvbjpUaXRsZVN0eWxlIiB4bWk6aWQ9Il9nV3RGNTVnUEVlU0Z0TG9WZTItc29RIi8+DQorICAgICAgICA8c3R5bGVzIHhtaTp0eXBlPSJub3RhdGlvbjpTb3J0aW5nU3R5bGUiIHhtaTppZD0iX2dXdEY2SmdQRWVTRnRMb1ZlMi1zb1EiLz4NCisgICAgICAgIDxzdHlsZXMgeG1pOnR5cGU9Im5vdGF0aW9uOkZpbHRlcmluZ1N0eWxlIiB4bWk6aWQ9Il9nV3RGNlpnUEVlU0Z0TG9WZTItc29RIi8+DQorICAgICAgICA8bGF5b3V0Q29uc3RyYWludCB4bWk6dHlwZT0ibm90YXRpb246Qm91bmRzIiB4bWk6aWQ9Il9nV3RGNnBnUEVlU0Z0TG9WZTItc29RIi8+DQorICAgICAgPC9jaGlsZHJlbj4NCisgICAgICA8ZWxlbWVudCB4bWk6dHlwZT0idW1sOlN0ZXJlb3R5cGUiIGhyZWY9IlN5c01MLnByb2ZpbGUudW1sI1N5c01MLVBvcnRzX3UwMDI2Rmxvd3MtVHJpZ2dlck9uTmVzdGVkUG9ydCIvPg0KKyAgICAgIDxsYXlvdXRDb25zdHJhaW50IHhtaTp0eXBlPSJub3RhdGlvbjpCb3VuZHMiIHhtaTppZD0iX2dXc2UwWmdQRWVTRnRMb1ZlMi1zb1EiIHg9Ijg4MCIgeT0iMTYwIi8+DQorICAgIDwvY2hpbGRyZW4+DQorICAgIDxjaGlsZHJlbiB4bWk6dHlwZT0ibm90YXRpb246U2hhcGUiIHhtaTppZD0iX2k0RG9VSmdQRWVTRnRMb1ZlMi1zb1EiIHR5cGU9IjEwMzEiPg0KKyAgICAgIDxjaGlsZHJlbiB4bWk6dHlwZT0ibm90YXRpb246RGVjb3JhdGlvbk5vZGUiIHhtaTppZD0iX2k0RVBZSmdQRWVTRnRMb1ZlMi1zb1EiIHR5cGU9IjEwODQiLz4NCisgICAgICA8ZWxlbWVudCB4bWk6dHlwZT0idW1sOkNsYXNzIiBocmVmPSJwYXRobWFwOi8vVU1MX01FVEFNT0RFTFMvVU1MLm1ldGFtb2RlbC51bWwjVHJpZ2dlciIvPg0KKyAgICAgIDxsYXlvdXRDb25zdHJhaW50IHhtaTp0eXBlPSJub3RhdGlvbjpCb3VuZHMiIHhtaTppZD0iX2k0RG9VWmdQRWVTRnRMb1ZlMi1zb1EiIHg9IjkwMCIgeT0iNDAiLz4NCisgICAgPC9jaGlsZHJlbj4NCisgICAgPHN0eWxlcyB4bWk6dHlwZT0ibm90YXRpb246U3RyaW5nVmFsdWVTdHlsZSIgeG1pOmlkPSJfVk9Lck1aZ1BFZVNGdExvVmUyLXNvUSIgbmFtZT0iZGlhZ3JhbV9jb21wYXRpYmlsaXR5X3ZlcnNpb24iIHN0cmluZ1ZhbHVlPSIxLjAuMCIvPg0KKyAgICA8c3R5bGVzIHhtaTp0eXBlPSJub3RhdGlvbjpEaWFncmFtU3R5bGUiIHhtaTppZD0iX1ZPS3JNcGdQRWVTRnRMb1ZlMi1zb1EiLz4NCisgICAgPHN0eWxlcyB4bWk6dHlwZT0ic3R5bGU6UGFweXJ1c1ZpZXdTdHlsZSIgeG1pOmlkPSJfVk9Lck01Z1BFZVNGdExvVmUyLXNvUSI+DQorICAgICAgPG93bmVyIHhtaTp0eXBlPSJ1bWw6UGFja2FnZSIgaHJlZj0iU3lzTUwucHJvZmlsZS51bWwjU3lzTUwtUG9ydHNfdTAwMjZGbG93cyIvPg0KKyAgICA8L3N0eWxlcz4NCisgICAgPGVsZW1lbnQgeG1pOnR5cGU9InVtbDpQYWNrYWdlIiBocmVmPSJTeXNNTC5wcm9maWxlLnVtbCNTeXNNTC1Qb3J0c191MDAyNkZsb3dzIi8+DQorICAgIDxlZGdlcyB4bWk6dHlwZT0ibm90YXRpb246Q29ubmVjdG9yIiB4bWk6aWQ9Il9hcEpHSUpnUEVlU0Z0TG9WZTItc29RIiB0eXBlPSI0MDAyIiBzb3VyY2U9Il9aYmF1d0pnUEVlU0Z0TG9WZTItc29RIiB0YXJnZXQ9Il9hb19WSUpnUEVlU0Z0TG9WZTItc29RIiByb3V0aW5nPSJUcmVlIj4NCisgICAgICA8Y2hpbGRyZW4geG1pOnR5cGU9Im5vdGF0aW9uOkRlY29yYXRpb25Ob2RlIiB4bWk6aWQ9Il9hcEp0TUpnUEVlU0Z0TG9WZTItc29RIiB0eXBlPSI2MDA3Ij4NCisgICAgICAgIDxsYXlvdXRDb25zdHJhaW50IHhtaTp0eXBlPSJub3RhdGlvbjpMb2NhdGlvbiIgeG1pOmlkPSJfYXBKdE1aZ1BFZVNGdExvVmUyLXNvUSIgeT0iNjAiLz4NCisgICAgICA8L2NoaWxkcmVuPg0KKyAgICAgIDxzdHlsZXMgeG1pOnR5cGU9Im5vdGF0aW9uOkZvbnRTdHlsZSIgeG1pOmlkPSJfYXBKR0laZ1BFZVNGdExvVmUyLXNvUSIvPg0KKyAgICAgIDxlbGVtZW50IHhtaTp0eXBlPSJ1bWw6R2VuZXJhbGl6YXRpb24iIGhyZWY9IlN5c01MLnByb2ZpbGUudW1sI1N5c01MLVBvcnRzX3UwMDI2Rmxvd3MtSW52b2NhdGlvbk9uTmVzdGVkUG9ydEFjdGlvbi1nZW5lcmFsaXphdGlvbiIvPg0KKyAgICAgIDxiZW5kcG9pbnRzIHhtaTp0eXBlPSJub3RhdGlvbjpSZWxhdGl2ZUJlbmRwb2ludHMiIHhtaTppZD0iX2FwSkdJcGdQRWVTRnRMb1ZlMi1zb1EiIHBvaW50cz0iWy01NiwgLTUwLCAyNjcsIDI0M10kWy0zMjMsIC0yOTMsIDAsIDBdIi8+DQorICAgICAgPHNvdXJjZUFuY2hvciB4bWk6dHlwZT0ibm90YXRpb246SWRlbnRpdHlBbmNob3IiIHhtaTppZD0iX2JIYVdnSmdQRWVTRnRMb1ZlMi1zb1EiIGlkPSIoMC44NDkzOTc1OTAzNjE0NDU4LDAuMCkiLz4NCisgICAgICA8dGFyZ2V0QW5jaG9yIHhtaTp0eXBlPSJub3RhdGlvbjpJZGVudGl0eUFuY2hvciIgeG1pOmlkPSJfYkhhV2daZ1BFZVNGdExvVmUyLXNvUSIgaWQ9IigwLjQ5NjczMjAyNjE0Mzc5MDg2LDEuMCkiLz4NCisgICAgPC9lZGdlcz4NCisgICAgPGVkZ2VzIHhtaTp0eXBlPSJub3RhdGlvbjpDb25uZWN0b3IiIHhtaTppZD0iX2NTajdBSmdQRWVTRnRMb1ZlMi1zb1EiIHR5cGU9IjEwMTMiIHNvdXJjZT0iX1piYXV3SmdQRWVTRnRMb1ZlMi1zb1EiIHRhcmdldD0iX2NTY21RSmdQRWVTRnRMb1ZlMi1zb1EiPg0KKyAgICAgIDxzdHlsZXMgeG1pOnR5cGU9Im5vdGF0aW9uOkZvbnRTdHlsZSIgeG1pOmlkPSJfY1NqN0FaZ1BFZVNGdExvVmUyLXNvUSIvPg0KKyAgICAgIDxlbGVtZW50IHhtaTp0eXBlPSJ1bWw6RXh0ZW5zaW9uIiBocmVmPSJTeXNNTC5wcm9maWxlLnVtbCNTeXNNTC1Qb3J0c191MDAyNkZsb3dzLUVfZXh0ZW5zaW9uX0ludm9jYXRpb25Pbk5lc3RlZFBvcnRBY3Rpb25fYmFzZV9JbnZvY2F0aW9uQWN0aW9uIi8+DQorICAgICAgPGJlbmRwb2ludHMgeG1pOnR5cGU9Im5vdGF0aW9uOlJlbGF0aXZlQmVuZHBvaW50cyIgeG1pOmlkPSJfY1NqN0FwZ1BFZVNGdExvVmUyLXNvUSIgcG9pbnRzPSJbLTU2LCAtNTAsIDI2NywgMjQzXSRbLTMyMywgLTI5MywgMCwgMF0iLz4NCisgICAgICA8c291cmNlQW5jaG9yIHhtaTp0eXBlPSJub3RhdGlvbjpJZGVudGl0eUFuY2hvciIgeG1pOmlkPSJfbnJ1TG9KZ1BFZVNGdExvVmUyLXNvUSIgaWQ9IigwLjE2ODY3NDY5ODc5NTE4MDcsMC4wKSIvPg0KKyAgICAgIDx0YXJnZXRBbmNob3IgeG1pOnR5cGU9Im5vdGF0aW9uOklkZW50aXR5QW5jaG9yIiB4bWk6aWQ9Il9ucnVMb1pnUEVlU0Z0TG9WZTItc29RIiBpZD0iKDAuNDgsMS4wKSIvPg0KKyAgICA8L2VkZ2VzPg0KKyAgICA8ZWRnZXMgeG1pOnR5cGU9Im5vdGF0aW9uOkNvbm5lY3RvciIgeG1pOmlkPSJfZDdQd0VKZ1BFZVNGdExvVmUyLXNvUSIgdHlwZT0iNDAwMSIgc291cmNlPSJfWmJhdXdKZ1BFZVNGdExvVmUyLXNvUSIgdGFyZ2V0PSJfZDdIMFFKZ1BFZVNGdExvVmUyLXNvUSI+DQorICAgICAgPGNoaWxkcmVuIHhtaTp0eXBlPSJub3RhdGlvbjpEZWNvcmF0aW9uTm9kZSIgeG1pOmlkPSJfZDdRWElKZ1BFZVNGdExvVmUyLXNvUSIgdHlwZT0iNjAwMSI+DQorICAgICAgICA8bGF5b3V0Q29uc3RyYWludCB4bWk6dHlwZT0ibm90YXRpb246TG9jYXRpb24iIHhtaTppZD0iX2Q3UVhJWmdQRWVTRnRMb1ZlMi1zb1EiIHk9IjYwIi8+DQorICAgICAgPC9jaGlsZHJlbj4NCisgICAgICA8Y2hpbGRyZW4geG1pOnR5cGU9Im5vdGF0aW9uOkRlY29yYXRpb25Ob2RlIiB4bWk6aWQ9Il9kN1EtTUpnUEVlU0Z0TG9WZTItc29RIiB0eXBlPSI2MDAyIj4NCisgICAgICAgIDxsYXlvdXRDb25zdHJhaW50IHhtaTp0eXBlPSJub3RhdGlvbjpMb2NhdGlvbiIgeG1pOmlkPSJfZDdRLU1aZ1BFZVNGdExvVmUyLXNvUSIgeT0iMjAiLz4NCisgICAgICA8L2NoaWxkcmVuPg0KKyAgICAgIDxjaGlsZHJlbiB4bWk6dHlwZT0ibm90YXRpb246RGVjb3JhdGlvbk5vZGUiIHhtaTppZD0iX2Q3US1NcGdQRWVTRnRMb1ZlMi1zb1EiIHR5cGU9IjYwMDMiPg0KKyAgICAgICAgPGxheW91dENvbnN0cmFpbnQgeG1pOnR5cGU9Im5vdGF0aW9uOkxvY2F0aW9uIiB4bWk6aWQ9Il9kN1EtTTVnUEVlU0Z0TG9WZTItc29RIiB4PSItOCIgeT0iNyIvPg0KKyAgICAgIDwvY2hpbGRyZW4+DQorICAgICAgPGNoaWxkcmVuIHhtaTp0eXBlPSJub3RhdGlvbjpEZWNvcmF0aW9uTm9kZSIgeG1pOmlkPSJfZDdSbFFKZ1BFZVNGdExvVmUyLXNvUSIgdHlwZT0iNjAwNSI+DQorICAgICAgICA8bGF5b3V0Q29uc3RyYWludCB4bWk6dHlwZT0ibm90YXRpb246TG9jYXRpb24iIHhtaTppZD0iX2Q3UmxRWmdQRWVTRnRMb1ZlMi1zb1EiIHk9Ii0yMCIvPg0KKyAgICAgIDwvY2hpbGRyZW4+DQorICAgICAgPGNoaWxkcmVuIHhtaTp0eXBlPSJub3RhdGlvbjpEZWNvcmF0aW9uTm9kZSIgeG1pOmlkPSJfZDdSbFFwZ1BFZVNGdExvVmUyLXNvUSIgdHlwZT0iNjAzMyI+DQorICAgICAgICA8bGF5b3V0Q29uc3RyYWludCB4bWk6dHlwZT0ibm90YXRpb246TG9jYXRpb24iIHhtaTppZD0iX2Q3U01VSmdQRWVTRnRMb1ZlMi1zb1EiIHk9IjIwIi8+DQorICAgICAgPC9jaGlsZHJlbj4NCisgICAgICA8Y2hpbGRyZW4geG1pOnR5cGU9Im5vdGF0aW9uOkRlY29yYXRpb25Ob2RlIiB4bWk6aWQ9Il9kN1NNVVpnUEVlU0Z0TG9WZTItc29RIiB0eXBlPSI2MDM0Ij4NCisgICAgICAgIDxsYXlvdXRDb25zdHJhaW50IHhtaTp0eXBlPSJub3RhdGlvbjpMb2NhdGlvbiIgeG1pOmlkPSJfZDdTTVVwZ1BFZVNGdExvVmUyLXNvUSIgeT0iLTIwIi8+DQorICAgICAgPC9jaGlsZHJlbj4NCisgICAgICA8c3R5bGVzIHhtaTp0eXBlPSJub3RhdGlvbjpGb250U3R5bGUiIHhtaTppZD0iX2Q3UHdFWmdQRWVTRnRMb1ZlMi1zb1EiLz4NCisgICAgICA8ZWxlbWVudCB4bWk6dHlwZT0idW1sOkFzc29jaWF0aW9uIiBocmVmPSJTeXNNTC5wcm9maWxlLnVtbCNTeXNNTC1Qb3J0c191MDAyNkZsb3dzLUFfaW52b2NhdGlvbk9uTmVzdGVkUG9ydEFjdGlvbl9vbk5lc3RlZFBvcnQiLz4NCisgICAgICA8YmVuZHBvaW50cyB4bWk6dHlwZT0ibm90YXRpb246UmVsYXRpdmVCZW5kcG9pbnRzIiB4bWk6aWQ9Il9kN1B3RXBnUEVlU0Z0TG9WZTItc29RIiBwb2ludHM9IlswLCAtNDksIC0yMTQsIDEzXSRbMjE0LCAtNDksIDAsIDEzXSIvPg0KKyAgICAgIDxzb3VyY2VBbmNob3IgeG1pOnR5cGU9Im5vdGF0aW9uOklkZW50aXR5QW5jaG9yIiB4bWk6aWQ9Il9uNjdzVUpnUEVlU0Z0TG9WZTItc29RIiBpZD0iKDEuMCwwLjg5KSIvPg0KKyAgICAgIDx0YXJnZXRBbmNob3IgeG1pOnR5cGU9Im5vdGF0aW9uOklkZW50aXR5QW5jaG9yIiB4bWk6aWQ9Il9uNjdzVVpnUEVlU0Z0TG9WZTItc29RIiBpZD0iKDAuMCwwLjE0KSIvPg0KKyAgICA8L2VkZ2VzPg0KKyAgICA8ZWRnZXMgeG1pOnR5cGU9Im5vdGF0aW9uOkNvbm5lY3RvciIgeG1pOmlkPSJfZy1tTVVKZ1BFZVNGdExvVmUyLXNvUSIgdHlwZT0iNDAwMiIgc291cmNlPSJfZ1dzZTBKZ1BFZVNGdExvVmUyLXNvUSIgdGFyZ2V0PSJfYW9fVklKZ1BFZVNGdExvVmUyLXNvUSIgcm91dGluZz0iVHJlZSI+DQorICAgICAgPGNoaWxkcmVuIHhtaTp0eXBlPSJub3RhdGlvbjpEZWNvcmF0aW9uTm9kZSIgeG1pOmlkPSJfZy1tTVU1Z1BFZVNGdExvVmUyLXNvUSIgdHlwZT0iNjAwNyI+DQorICAgICAgICA8bGF5b3V0Q29uc3RyYWludCB4bWk6dHlwZT0ibm90YXRpb246TG9jYXRpb24iIHhtaTppZD0iX2ctbXpZSmdQRWVTRnRMb1ZlMi1zb1EiIHk9IjYwIi8+DQorICAgICAgPC9jaGlsZHJlbj4NCisgICAgICA8c3R5bGVzIHhtaTp0eXBlPSJub3RhdGlvbjpGb250U3R5bGUiIHhtaTppZD0iX2ctbU1VWmdQRWVTRnRMb1ZlMi1zb1EiLz4NCisgICAgICA8ZWxlbWVudCB4bWk6dHlwZT0idW1sOkdlbmVyYWxpemF0aW9uIiBocmVmPSJTeXNNTC5wcm9maWxlLnVtbCNTeXNNTC1Qb3J0c191MDAyNkZsb3dzLVRyaWdnZXJPbk5lc3RlZFBvcnQtZ2VuZXJhbGl6YXRpb24iLz4NCisgICAgICA8YmVuZHBvaW50cyB4bWk6dHlwZT0ibm90YXRpb246UmVsYXRpdmVCZW5kcG9pbnRzIiB4bWk6aWQ9Il9nLW1NVXBnUEVlU0Z0TG9WZTItc29RIiBwb2ludHM9IlstNTcsIC00NCwgMjA1LCAxNTZdJFstMjA1LCAtMTU3LCA1NywgNDNdIi8+DQorICAgICAgPHNvdXJjZUFuY2hvciB4bWk6dHlwZT0ibm90YXRpb246SWRlbnRpdHlBbmNob3IiIHhtaTppZD0iX29OZU4wSmdQRWVTRnRMb1ZlMi1zb1EiIGlkPSIoMC41LDAuMCkiLz4NCisgICAgICA8dGFyZ2V0QW5jaG9yIHhtaTp0eXBlPSJub3RhdGlvbjpJZGVudGl0eUFuY2hvciIgeG1pOmlkPSJfb05lTjBaZ1BFZVNGdExvVmUyLXNvUSIgaWQ9IigwLjQ5NjczMjAyNjE0Mzc5MDg2LDEuMCkiLz4NCisgICAgPC9lZGdlcz4NCisgICAgPGVkZ2VzIHhtaTp0eXBlPSJub3RhdGlvbjpDb25uZWN0b3IiIHhtaTppZD0iX2g2dkVjSmdQRWVTRnRMb1ZlMi1zb1EiIHR5cGU9IjQwMDEiIHNvdXJjZT0iX2dXc2UwSmdQRWVTRnRMb1ZlMi1zb1EiIHRhcmdldD0iX2Q3SDBRSmdQRWVTRnRMb1ZlMi1zb1EiPg0KKyAgICAgIDxjaGlsZHJlbiB4bWk6dHlwZT0ibm90YXRpb246RGVjb3JhdGlvbk5vZGUiIHhtaTppZD0iX2g2dkVjNWdQRWVTRnRMb1ZlMi1zb1EiIHR5cGU9IjYwMDEiPg0KKyAgICAgICAgPGxheW91dENvbnN0cmFpbnQgeG1pOnR5cGU9Im5vdGF0aW9uOkxvY2F0aW9uIiB4bWk6aWQ9Il9oNnZFZEpnUEVlU0Z0TG9WZTItc29RIiB5PSI2MCIvPg0KKyAgICAgIDwvY2hpbGRyZW4+DQorICAgICAgPGNoaWxkcmVuIHhtaTp0eXBlPSJub3RhdGlvbjpEZWNvcmF0aW9uTm9kZSIgeG1pOmlkPSJfaDZ2cmdKZ1BFZVNGdExvVmUyLXNvUSIgdHlwZT0iNjAwMiI+DQorICAgICAgICA8bGF5b3V0Q29uc3RyYWludCB4bWk6dHlwZT0ibm90YXRpb246TG9jYXRpb24iIHhtaTppZD0iX2g2dnJnWmdQRWVTRnRMb1ZlMi1zb1EiIHk9IjIwIi8+DQorICAgICAgPC9jaGlsZHJlbj4NCisgICAgICA8Y2hpbGRyZW4geG1pOnR5cGU9Im5vdGF0aW9uOkRlY29yYXRpb25Ob2RlIiB4bWk6aWQ9Il9oNndTa0pnUEVlU0Z0TG9WZTItc29RIiB0eXBlPSI2MDAzIj4NCisgICAgICAgIDxsYXlvdXRDb25zdHJhaW50IHhtaTp0eXBlPSJub3RhdGlvbjpMb2NhdGlvbiIgeG1pOmlkPSJfaDZ3U2taZ1BFZVNGdExvVmUyLXNvUSIgeD0iLTE2IiB5PSIxMyIvPg0KKyAgICAgIDwvY2hpbGRyZW4+DQorICAgICAgPGNoaWxkcmVuIHhtaTp0eXBlPSJub3RhdGlvbjpEZWNvcmF0aW9uTm9kZSIgeG1pOmlkPSJfaDZ3U2twZ1BFZVNGdExvVmUyLXNvUSIgdHlwZT0iNjAwNSI+DQorICAgICAgICA8bGF5b3V0Q29uc3RyYWludCB4bWk6dHlwZT0ibm90YXRpb246TG9jYXRpb24iIHhtaTppZD0iX2g2d1NrNWdQRWVTRnRMb1ZlMi1zb1EiIHk9Ii0yMCIvPg0KKyAgICAgIDwvY2hpbGRyZW4+DQorICAgICAgPGNoaWxkcmVuIHhtaTp0eXBlPSJub3RhdGlvbjpEZWNvcmF0aW9uTm9kZSIgeG1pOmlkPSJfaDZ3NW9KZ1BFZVNGdExvVmUyLXNvUSIgdHlwZT0iNjAzMyI+DQorICAgICAgICA8bGF5b3V0Q29uc3RyYWludCB4bWk6dHlwZT0ibm90YXRpb246TG9jYXRpb24iIHhtaTppZD0iX2g2dzVvWmdQRWVTRnRMb1ZlMi1zb1EiIHk9IjIwIi8+DQorICAgICAgPC9jaGlsZHJlbj4NCisgICAgICA8Y2hpbGRyZW4geG1pOnR5cGU9Im5vdGF0aW9uOkRlY29yYXRpb25Ob2RlIiB4bWk6aWQ9Il9oNnc1b3BnUEVlU0Z0TG9WZTItc29RIiB0eXBlPSI2MDM0Ij4NCisgICAgICAgIDxsYXlvdXRDb25zdHJhaW50IHhtaTp0eXBlPSJub3RhdGlvbjpMb2NhdGlvbiIgeG1pOmlkPSJfaDZ3NW81Z1BFZVNGdExvVmUyLXNvUSIgeT0iLTIwIi8+DQorICAgICAgPC9jaGlsZHJlbj4NCisgICAgICA8c3R5bGVzIHhtaTp0eXBlPSJub3RhdGlvbjpGb250U3R5bGUiIHhtaTppZD0iX2g2dkVjWmdQRWVTRnRMb1ZlMi1zb1EiLz4NCisgICAgICA8ZWxlbWVudCB4bWk6dHlwZT0idW1sOkFzc29jaWF0aW9uIiBocmVmPSJTeXNNTC5wcm9maWxlLnVtbCNTeXNNTC1Qb3J0c191MDAyNkZsb3dzLUFfdHJpZ2dlck9uTmVzdGVkUG9ydF9vbk5lc3RlZFBvcnQiLz4NCisgICAgICA8YmVuZHBvaW50cyB4bWk6dHlwZT0ibm90YXRpb246UmVsYXRpdmVCZW5kcG9pbnRzIiB4bWk6aWQ9Il9oNnZFY3BnUEVlU0Z0TG9WZTItc29RIiBwb2ludHM9IlswLCAtNDUsIDE2MCwgMTZdJFstMTYwLCAtNDUsIDAsIDE2XSIvPg0KKyAgICAgIDxzb3VyY2VBbmNob3IgeG1pOnR5cGU9Im5vdGF0aW9uOklkZW50aXR5QW5jaG9yIiB4bWk6aWQ9Il9vTmUwNEpnUEVlU0Z0TG9WZTItc29RIiBpZD0iKDAuMCwwLjg1KSIvPg0KKyAgICAgIDx0YXJnZXRBbmNob3IgeG1pOnR5cGU9Im5vdGF0aW9uOklkZW50aXR5QW5jaG9yIiB4bWk6aWQ9Il9vTmUwNFpnUEVlU0Z0TG9WZTItc29RIiBpZD0iKDEuMCwwLjA4KSIvPg0KKyAgICA8L2VkZ2VzPg0KKyAgICA8ZWRnZXMgeG1pOnR5cGU9Im5vdGF0aW9uOkNvbm5lY3RvciIgeG1pOmlkPSJfaTRMa0lKZ1BFZVNGdExvVmUyLXNvUSIgdHlwZT0iMTAxMyIgc291cmNlPSJfZ1dzZTBKZ1BFZVNGdExvVmUyLXNvUSIgdGFyZ2V0PSJfaTREb1VKZ1BFZVNGdExvVmUyLXNvUSI+DQorICAgICAgPHN0eWxlcyB4bWk6dHlwZT0ibm90YXRpb246Rm9udFN0eWxlIiB4bWk6aWQ9Il9pNExrSVpnUEVlU0Z0TG9WZTItc29RIi8+DQorICAgICAgPGVsZW1lbnQgeG1pOnR5cGU9InVtbDpFeHRlbnNpb24iIGhyZWY9IlN5c01MLnByb2ZpbGUudW1sI1N5c01MLVBvcnRzX3UwMDI2Rmxvd3MtRV9leHRlbnNpb25fVHJpZ2dlck9uTmVzdGVkUG9ydF9iYXNlX1RyaWdnZXIiLz4NCisgICAgICA8YmVuZHBvaW50cyB4bWk6dHlwZT0ibm90YXRpb246UmVsYXRpdmVCZW5kcG9pbnRzIiB4bWk6aWQ9Il9pNExrSXBnUEVlU0Z0TG9WZTItc29RIiBwb2ludHM9Ils0NSwgMCwgNDUsIDE1MF0kWzQ1LCAtMTUwLCA0NSwgMF0iLz4NCisgICAgICA8c291cmNlQW5jaG9yIHhtaTp0eXBlPSJub3RhdGlvbjpJZGVudGl0eUFuY2hvciIgeG1pOmlkPSJfalVZX0FKZ1BFZVNGdExvVmUyLXNvUSIgaWQ9IigwLjMwNzAxNzU0Mzg1OTY0OTEzLDAuMCkiLz4NCisgICAgICA8dGFyZ2V0QW5jaG9yIHhtaTp0eXBlPSJub3RhdGlvbjpJZGVudGl0eUFuY2hvciIgeG1pOmlkPSJfalVZX0FaZ1BFZVNGdExvVmUyLXNvUSIgaWQ9IigwLjE1LDEuMCkiLz4NCisgICAgPC9lZGdlcz4NCisgIDwvbm90YXRpb246RGlhZ3JhbT4NCisgIDxub3RhdGlvbjpEaWFncmFtIHhtaTppZD0iXzI2bHRFSmdRRWVTRnRMb1ZlMi1zb1EiIHR5cGU9IlBhcHlydXNVTUxQcm9maWxlRGlhZ3JhbSIgbmFtZT0iUHJvcGVydHkgVmFsdWUgQ2hhbmdlIEV2ZW50IiBtZWFzdXJlbWVudFVuaXQ9IlBpeGVsIj4NCisgICAgPGNoaWxkcmVuIHhtaTp0eXBlPSJub3RhdGlvbjpTaGFwZSIgeG1pOmlkPSJfNklXQ2dKZ1FFZVNGdExvVmUyLXNvUSIgdHlwZT0iMTAyNiI+DQorICAgICAgPGNoaWxkcmVuIHhtaTp0eXBlPSJub3RhdGlvbjpEZWNvcmF0aW9uTm9kZSIgeG1pOmlkPSJfNklXQ2dwZ1FFZVNGdExvVmUyLXNvUSIgdHlwZT0iMTAzNCIvPg0KKyAgICAgIDxjaGlsZHJlbiB4bWk6dHlwZT0ibm90YXRpb246QmFzaWNDb21wYXJ0bWVudCIgeG1pOmlkPSJfNklXcGtKZ1FFZVNGdExvVmUyLXNvUSIgdmlzaWJsZT0iZmFsc2UiIHR5cGU9IjEwNzEiPg0KKyAgICAgICAgPHN0eWxlcyB4bWk6dHlwZT0ibm90YXRpb246VGl0bGVTdHlsZSIgeG1pOmlkPSJfNklXcGtaZ1FFZVNGdExvVmUyLXNvUSIvPg0KKyAgICAgICAgPHN0eWxlcyB4bWk6dHlwZT0ibm90YXRpb246U29ydGluZ1N0eWxlIiB4bWk6aWQ9Il82SVdwa3BnUUVlU0Z0TG9WZTItc29RIi8+DQorICAgICAgICA8c3R5bGVzIHhtaTp0eXBlPSJub3RhdGlvbjpGaWx0ZXJpbmdTdHlsZSIgeG1pOmlkPSJfNklXcGs1Z1FFZVNGdExvVmUyLXNvUSIvPg0KKyAgICAgICAgPGxheW91dENvbnN0cmFpbnQgeG1pOnR5cGU9Im5vdGF0aW9uOkJvdW5kcyIgeG1pOmlkPSJfNklXcGxKZ1FFZVNGdExvVmUyLXNvUSIvPg0KKyAgICAgIDwvY2hpbGRyZW4+DQorICAgICAgPGNoaWxkcmVuIHhtaTp0eXBlPSJub3RhdGlvbjpCYXNpY0NvbXBhcnRtZW50IiB4bWk6aWQ9Il82SVdwbFpnUUVlU0Z0TG9WZTItc29RIiB2aXNpYmxlPSJmYWxzZSIgdHlwZT0iMTAxOSI+DQorICAgICAgICA8c3R5bGVzIHhtaTp0eXBlPSJub3RhdGlvbjpUaXRsZVN0eWxlIiB4bWk6aWQ9Il82SVdwbHBnUUVlU0Z0TG9WZTItc29RIi8+DQorICAgICAgICA8c3R5bGVzIHhtaTp0eXBlPSJub3RhdGlvbjpTb3J0aW5nU3R5bGUiIHhtaTppZD0iXzZJV3BsNWdRRWVTRnRMb1ZlMi1zb1EiLz4NCisgICAgICAgIDxzdHlsZXMgeG1pOnR5cGU9Im5vdGF0aW9uOkZpbHRlcmluZ1N0eWxlIiB4bWk6aWQ9Il82SVdwbUpnUUVlU0Z0TG9WZTItc29RIi8+DQorICAgICAgICA8bGF5b3V0Q29uc3RyYWludCB4bWk6dHlwZT0ibm90YXRpb246Qm91bmRzIiB4bWk6aWQ9Il82SVdwbVpnUUVlU0Z0TG9WZTItc29RIi8+DQorICAgICAgPC9jaGlsZHJlbj4NCisgICAgICA8ZWxlbWVudCB4bWk6dHlwZT0idW1sOlN0ZXJlb3R5cGUiIGhyZWY9IlN5c01MLnByb2ZpbGUudW1sI1N5c01MLVBvcnRzX3UwMDI2Rmxvd3MtQ2hhbmdlU3RydWN0dXJhbEZlYXR1cmVFdmVudCIvPg0KKyAgICAgIDxsYXlvdXRDb25zdHJhaW50IHhtaTp0eXBlPSJub3RhdGlvbjpCb3VuZHMiIHhtaTppZD0iXzZJV0NnWmdRRWVTRnRMb1ZlMi1zb1EiIHg9IjI0MCIgeT0iMjIwIiB3aWR0aD0iMTgxIiBoZWlnaHQ9IjQxIi8+DQorICAgIDwvY2hpbGRyZW4+DQorICAgIDxjaGlsZHJlbiB4bWk6dHlwZT0ibm90YXRpb246U2hhcGUiIHhtaTppZD0iXzdGcF9VSmdRRWVTRnRMb1ZlMi1zb1EiIHR5cGU9IjEwMzEiPg0KKyAgICAgIDxjaGlsZHJlbiB4bWk6dHlwZT0ibm90YXRpb246RGVjb3JhdGlvbk5vZGUiIHhtaTppZD0iXzdGcW1ZSmdRRWVTRnRMb1ZlMi1zb1EiIHR5cGU9IjEwODQiLz4NCisgICAgICA8ZWxlbWVudCB4bWk6dHlwZT0idW1sOkNsYXNzIiBocmVmPSJwYXRobWFwOi8vVU1MX01FVEFNT0RFTFMvVU1MLm1ldGFtb2RlbC51bWwjU3RydWN0dXJhbEZlYXR1cmUiLz4NCisgICAgICA8bGF5b3V0Q29uc3RyYWludCB4bWk6dHlwZT0ibm90YXRpb246Qm91bmRzIiB4bWk6aWQ9Il83RnBfVVpnUUVlU0Z0TG9WZTItc29RIiB4PSI1NjAiIHk9IjIyMCIgd2lkdGg9IjE0MSIvPg0KKyAgICA8L2NoaWxkcmVuPg0KKyAgICA8Y2hpbGRyZW4geG1pOnR5cGU9Im5vdGF0aW9uOlNoYXBlIiB4bWk6aWQ9Il83dDBMZ0pnUUVlU0Z0TG9WZTItc29RIiB0eXBlPSIxMDMxIj4NCisgICAgICA8Y2hpbGRyZW4geG1pOnR5cGU9Im5vdGF0aW9uOkRlY29yYXRpb25Ob2RlIiB4bWk6aWQ9Il83dDBMZ3BnUUVlU0Z0TG9WZTItc29RIiB0eXBlPSIxMDg0Ii8+DQorICAgICAgPGVsZW1lbnQgeG1pOnR5cGU9InVtbDpDbGFzcyIgaHJlZj0icGF0aG1hcDovL1VNTF9NRVRBTU9ERUxTL1VNTC5tZXRhbW9kZWwudW1sI0NoYW5nZUV2ZW50Ii8+DQorICAgICAgPGxheW91dENvbnN0cmFpbnQgeG1pOnR5cGU9Im5vdGF0aW9uOkJvdW5kcyIgeG1pOmlkPSJfN3QwTGdaZ1FFZVNGdExvVmUyLXNvUSIgeD0iMjQwIiB5PSIxMjAiIHdpZHRoPSIxODEiLz4NCisgICAgPC9jaGlsZHJlbj4NCisgICAgPGNoaWxkcmVuIHhtaTp0eXBlPSJub3RhdGlvbjpTaGFwZSIgeG1pOmlkPSJfOVBwS29KZ1FFZVNGdExvVmUyLXNvUSIgdHlwZT0iMTAyNiI+DQorICAgICAgPGNoaWxkcmVuIHhtaTp0eXBlPSJub3RhdGlvbjpEZWNvcmF0aW9uTm9kZSIgeG1pOmlkPSJfOVBweHNKZ1FFZVNGdExvVmUyLXNvUSIgdHlwZT0iMTAzNCIvPg0KKyAgICAgIDxjaGlsZHJlbiB4bWk6dHlwZT0ibm90YXRpb246QmFzaWNDb21wYXJ0bWVudCIgeG1pOmlkPSJfOVBweHNaZ1FFZVNGdExvVmUyLXNvUSIgdmlzaWJsZT0iZmFsc2UiIHR5cGU9IjEwNzEiPg0KKyAgICAgICAgPHN0eWxlcyB4bWk6dHlwZT0ibm90YXRpb246VGl0bGVTdHlsZSIgeG1pOmlkPSJfOVBweHNwZ1FFZVNGdExvVmUyLXNvUSIvPg0KKyAgICAgICAgPHN0eWxlcyB4bWk6dHlwZT0ibm90YXRpb246U29ydGluZ1N0eWxlIiB4bWk6aWQ9Il85UHB4czVnUUVlU0Z0TG9WZTItc29RIi8+DQorICAgICAgICA8c3R5bGVzIHhtaTp0eXBlPSJub3RhdGlvbjpGaWx0ZXJpbmdTdHlsZSIgeG1pOmlkPSJfOVBweHRKZ1FFZVNGdExvVmUyLXNvUSIvPg0KKyAgICAgICAgPGxheW91dENvbnN0cmFpbnQgeG1pOnR5cGU9Im5vdGF0aW9uOkJvdW5kcyIgeG1pOmlkPSJfOVBweHRaZ1FFZVNGdExvVmUyLXNvUSIvPg0KKyAgICAgIDwvY2hpbGRyZW4+DQorICAgICAgPGNoaWxkcmVuIHhtaTp0eXBlPSJub3RhdGlvbjpCYXNpY0NvbXBhcnRtZW50IiB4bWk6aWQ9Il85UHB4dHBnUUVlU0Z0TG9WZTItc29RIiB2aXNpYmxlPSJmYWxzZSIgdHlwZT0iMTAxOSI+DQorICAgICAgICA8c3R5bGVzIHhtaTp0eXBlPSJub3RhdGlvbjpUaXRsZVN0eWxlIiB4bWk6aWQ9Il85UHB4dDVnUUVlU0Z0TG9WZTItc29RIi8+DQorICAgICAgICA8c3R5bGVzIHhtaTp0eXBlPSJub3RhdGlvbjpTb3J0aW5nU3R5bGUiIHhtaTppZD0iXzlQcHh1SmdRRWVTRnRMb1ZlMi1zb1EiLz4NCisgICAgICAgIDxzdHlsZXMgeG1pOnR5cGU9Im5vdGF0aW9uOkZpbHRlcmluZ1N0eWxlIiB4bWk6aWQ9Il85UHB4dVpnUUVlU0Z0TG9WZTItc29RIi8+DQorICAgICAgICA8bGF5b3V0Q29uc3RyYWludCB4bWk6dHlwZT0ibm90YXRpb246Qm91bmRzIiB4bWk6aWQ9Il85UHB4dXBnUUVlU0Z0TG9WZTItc29RIi8+DQorICAgICAgPC9jaGlsZHJlbj4NCisgICAgICA8ZWxlbWVudCB4bWk6dHlwZT0idW1sOlN0ZXJlb3R5cGUiIGhyZWY9IlN5c01MLnByb2ZpbGUudW1sI1N5c01MLVBvcnRzX3UwMDI2Rmxvd3MtQWNjZXB0Q2hhbmdlU3RydWN0dXJhbEZlYXR1cmVFdmVudEFjdGlvbiIvPg0KKyAgICAgIDxsYXlvdXRDb25zdHJhaW50IHhtaTp0eXBlPSJub3RhdGlvbjpCb3VuZHMiIHhtaTppZD0iXzlQcEtvWmdRRWVTRnRMb1ZlMi1zb1EiIHg9IjgyMCIgeT0iMjIwIiB3aWR0aD0iMjYxIi8+DQorICAgIDwvY2hpbGRyZW4+DQorICAgIDxjaGlsZHJlbiB4bWk6dHlwZT0ibm90YXRpb246U2hhcGUiIHhtaTppZD0iXzlQeEdjSmdRRWVTRnRMb1ZlMi1zb1EiIHR5cGU9IjEwMzEiPg0KKyAgICAgIDxjaGlsZHJlbiB4bWk6dHlwZT0ibm90YXRpb246RGVjb3JhdGlvbk5vZGUiIHhtaTppZD0iXzlQeEdjcGdRRWVTRnRMb1ZlMi1zb1EiIHR5cGU9IjEwODQiLz4NCisgICAgICA8ZWxlbWVudCB4bWk6dHlwZT0idW1sOkNsYXNzIiBocmVmPSJwYXRobWFwOi8vVU1MX01FVEFNT0RFTFMvVU1MLm1ldGFtb2RlbC51bWwjQWNjZXB0RXZlbnRBY3Rpb24iLz4NCisgICAgICA8bGF5b3V0Q29uc3RyYWludCB4bWk6dHlwZT0ibm90YXRpb246Qm91bmRzIiB4bWk6aWQ9Il85UHhHY1pnUUVlU0Z0TG9WZTItc29RIiB4PSI4MjAiIHk9IjEyMCIgd2lkdGg9IjI2MSIvPg0KKyAgICA8L2NoaWxkcmVuPg0KKyAgICA8c3R5bGVzIHhtaTp0eXBlPSJub3RhdGlvbjpTdHJpbmdWYWx1ZVN0eWxlIiB4bWk6aWQ9Il8yNmx0RVpnUUVlU0Z0TG9WZTItc29RIiBuYW1lPSJkaWFncmFtX2NvbXBhdGliaWxpdHlfdmVyc2lvbiIgc3RyaW5nVmFsdWU9IjEuMC4wIi8+DQorICAgIDxzdHlsZXMgeG1pOnR5cGU9Im5vdGF0aW9uOkRpYWdyYW1TdHlsZSIgeG1pOmlkPSJfMjZsdEVwZ1FFZVNGdExvVmUyLXNvUSIvPg0KKyAgICA8c3R5bGVzIHhtaTp0eXBlPSJzdHlsZTpQYXB5cnVzVmlld1N0eWxlIiB4bWk6aWQ9Il8yNmx0RTVnUUVlU0Z0TG9WZTItc29RIj4NCisgICAgICA8b3duZXIgeG1pOnR5cGU9InVtbDpQYWNrYWdlIiBocmVmPSJTeXNNTC5wcm9maWxlLnVtbCNTeXNNTC1Qb3J0c191MDAyNkZsb3dzIi8+DQorICAgIDwvc3R5bGVzPg0KKyAgICA8ZWxlbWVudCB4bWk6dHlwZT0idW1sOlBhY2thZ2UiIGhyZWY9IlN5c01MLnByb2ZpbGUudW1sI1N5c01MLVBvcnRzX3UwMDI2Rmxvd3MiLz4NCisgICAgPGVkZ2VzIHhtaTp0eXBlPSJub3RhdGlvbjpDb25uZWN0b3IiIHhtaTppZD0iXzdGeDdJSmdRRWVTRnRMb1ZlMi1zb1EiIHR5cGU9IjQwMDEiIHNvdXJjZT0iXzZJV0NnSmdRRWVTRnRMb1ZlMi1zb1EiIHRhcmdldD0iXzdGcF9VSmdRRWVTRnRMb1ZlMi1zb1EiPg0KKyAgICAgIDxjaGlsZHJlbiB4bWk6dHlwZT0ibm90YXRpb246RGVjb3JhdGlvbk5vZGUiIHhtaTppZD0iXzdGeWlNSmdRRWVTRnRMb1ZlMi1zb1EiIHR5cGU9IjYwMDEiPg0KKyAgICAgICAgPGxheW91dENvbnN0cmFpbnQgeG1pOnR5cGU9Im5vdGF0aW9uOkxvY2F0aW9uIiB4bWk6aWQ9Il83RnlpTVpnUUVlU0Z0TG9WZTItc29RIiB5PSI2MCIvPg0KKyAgICAgIDwvY2hpbGRyZW4+DQorICAgICAgPGNoaWxkcmVuIHhtaTp0eXBlPSJub3RhdGlvbjpEZWNvcmF0aW9uTm9kZSIgeG1pOmlkPSJfN0Z6SlFKZ1FFZVNGdExvVmUyLXNvUSIgdHlwZT0iNjAwMiI+DQorICAgICAgICA8bGF5b3V0Q29uc3RyYWludCB4bWk6dHlwZT0ibm90YXRpb246TG9jYXRpb24iIHhtaTppZD0iXzdGekpRWmdRRWVTRnRMb1ZlMi1zb1EiIHk9IjIwIi8+DQorICAgICAgPC9jaGlsZHJlbj4NCisgICAgICA8Y2hpbGRyZW4geG1pOnR5cGU9Im5vdGF0aW9uOkRlY29yYXRpb25Ob2RlIiB4bWk6aWQ9Il83RnpKUXBnUUVlU0Z0TG9WZTItc29RIiB0eXBlPSI2MDAzIj4NCisgICAgICAgIDxsYXlvdXRDb25zdHJhaW50IHhtaTp0eXBlPSJub3RhdGlvbjpMb2NhdGlvbiIgeG1pOmlkPSJfN0Z6SlE1Z1FFZVNGdExvVmUyLXNvUSIgeT0iMjAiLz4NCisgICAgICA8L2NoaWxkcmVuPg0KKyAgICAgIDxjaGlsZHJlbiB4bWk6dHlwZT0ibm90YXRpb246RGVjb3JhdGlvbk5vZGUiIHhtaTppZD0iXzdGendVSmdRRWVTRnRMb1ZlMi1zb1EiIHR5cGU9IjYwMDUiPg0KKyAgICAgICAgPGxheW91dENvbnN0cmFpbnQgeG1pOnR5cGU9Im5vdGF0aW9uOkxvY2F0aW9uIiB4bWk6aWQ9Il83Rnp3VVpnUUVlU0Z0TG9WZTItc29RIiB5PSItMjAiLz4NCisgICAgICA8L2NoaWxkcmVuPg0KKyAgICAgIDxjaGlsZHJlbiB4bWk6dHlwZT0ibm90YXRpb246RGVjb3JhdGlvbk5vZGUiIHhtaTppZD0iXzdGendVcGdRRWVTRnRMb1ZlMi1zb1EiIHR5cGU9IjYwMzMiPg0KKyAgICAgICAgPGxheW91dENvbnN0cmFpbnQgeG1pOnR5cGU9Im5vdGF0aW9uOkxvY2F0aW9uIiB4bWk6aWQ9Il83RjBYWUpnUUVlU0Z0TG9WZTItc29RIiB5PSIyMCIvPg0KKyAgICAgIDwvY2hpbGRyZW4+DQorICAgICAgPGNoaWxkcmVuIHhtaTp0eXBlPSJub3RhdGlvbjpEZWNvcmF0aW9uTm9kZSIgeG1pOmlkPSJfN0YwWFlaZ1FFZVNGdExvVmUyLXNvUSIgdHlwZT0iNjAzNCI+DQorICAgICAgICA8bGF5b3V0Q29uc3RyYWludCB4bWk6dHlwZT0ibm90YXRpb246TG9jYXRpb24iIHhtaTppZD0iXzdGMFhZcGdRRWVTRnRMb1ZlMi1zb1EiIHk9Ii0yMCIvPg0KKyAgICAgIDwvY2hpbGRyZW4+DQorICAgICAgPHN0eWxlcyB4bWk6dHlwZT0ibm90YXRpb246Rm9udFN0eWxlIiB4bWk6aWQ9Il83Rng3SVpnUUVlU0Z0TG9WZTItc29RIi8+DQorICAgICAgPGVsZW1lbnQgeG1pOnR5cGU9InVtbDpBc3NvY2lhdGlvbiIgaHJlZj0iU3lzTUwucHJvZmlsZS51bWwjU3lzTUwtUG9ydHNfdTAwMjZGbG93cy1BX2NoYW5nZVN0cnVjdHVyYWxGZWF0dXJlRXZlbnRfc3RydWN0dXJhbEZlYXR1cmUiLz4NCisgICAgICA8YmVuZHBvaW50cyB4bWk6dHlwZT0ibm90YXRpb246UmVsYXRpdmVCZW5kcG9pbnRzIiB4bWk6aWQ9Il83Rng3SXBnUUVlU0Z0TG9WZTItc29RIiBwb2ludHM9IlswLCAxNywgLTEzOSwgMTddJFsxMzksIDE3LCAwLCAxN10iLz4NCisgICAgICA8c291cmNlQW5jaG9yIHhtaTp0eXBlPSJub3RhdGlvbjpJZGVudGl0eUFuY2hvciIgeG1pOmlkPSJfX08wMElaZ1FFZVNGdExvVmUyLXNvUSIgaWQ9IigxLjAsMC4wNzMxNzA3MzE3MDczMTcwNykiLz4NCisgICAgICA8dGFyZ2V0QW5jaG9yIHhtaTp0eXBlPSJub3RhdGlvbjpJZGVudGl0eUFuY2hvciIgeG1pOmlkPSJfX08wMElwZ1FFZVNGdExvVmUyLXNvUSIgaWQ9IigwLjAsMC4wNikiLz4NCisgICAgPC9lZGdlcz4NCisgICAgPGVkZ2VzIHhtaTp0eXBlPSJub3RhdGlvbjpDb25uZWN0b3IiIHhtaTppZD0iXzd0NlNJSmdRRWVTRnRMb1ZlMi1zb1EiIHR5cGU9IjEwMTMiIHNvdXJjZT0iXzZJV0NnSmdRRWVTRnRMb1ZlMi1zb1EiIHRhcmdldD0iXzd0MExnSmdRRWVTRnRMb1ZlMi1zb1EiPg0KKyAgICAgIDxzdHlsZXMgeG1pOnR5cGU9Im5vdGF0aW9uOkZvbnRTdHlsZSIgeG1pOmlkPSJfN3Q2U0laZ1FFZVNGdExvVmUyLXNvUSIvPg0KKyAgICAgIDxlbGVtZW50IHhtaTp0eXBlPSJ1bWw6RXh0ZW5zaW9uIiBocmVmPSJTeXNNTC5wcm9maWxlLnVtbCNTeXNNTC1Qb3J0c191MDAyNkZsb3dzLUVfZXh0ZW5zaW9uX0NoYW5nZVN0cnVjdHVyYWxGZWF0dXJlRXZlbnRfYmFzZV9DaGFuZ2VFdmVudCIvPg0KKyAgICAgIDxiZW5kcG9pbnRzIHhtaTp0eXBlPSJub3RhdGlvbjpSZWxhdGl2ZUJlbmRwb2ludHMiIHhtaTppZD0iXzd0NlNJcGdRRWVTRnRMb1ZlMi1zb1EiIHBvaW50cz0iWy00MSwgLTUwLCAyNjksIDMyN10kWy0zMTAsIC0zNzcsIDAsIDBdIi8+DQorICAgICAgPHNvdXJjZUFuY2hvciB4bWk6dHlwZT0ibm90YXRpb246SWRlbnRpdHlBbmNob3IiIHhtaTppZD0iX19PME5FSmdRRWVTRnRMb1ZlMi1zb1EiIGlkPSIoMC4zMTA1NTkwMDYyMTExODAxLDAuMCkiLz4NCisgICAgICA8dGFyZ2V0QW5jaG9yIHhtaTp0eXBlPSJub3RhdGlvbjpJZGVudGl0eUFuY2hvciIgeG1pOmlkPSJfX08wMElKZ1FFZVNGdExvVmUyLXNvUSIgaWQ9IigwLjUsMS4wKSIvPg0KKyAgICA8L2VkZ2VzPg0KKyAgICA8ZWRnZXMgeG1pOnR5cGU9Im5vdGF0aW9uOkNvbm5lY3RvciIgeG1pOmlkPSJfOVAxLThKZ1FFZVNGdExvVmUyLXNvUSIgdHlwZT0iMTAxMyIgc291cmNlPSJfOVBwS29KZ1FFZVNGdExvVmUyLXNvUSIgdGFyZ2V0PSJfOVB4R2NKZ1FFZVNGdExvVmUyLXNvUSI+DQorICAgICAgPHN0eWxlcyB4bWk6dHlwZT0ibm90YXRpb246Rm9udFN0eWxlIiB4bWk6aWQ9Il85UDEtOFpnUUVlU0Z0TG9WZTItc29RIi8+DQorICAgICAgPGVsZW1lbnQgeG1pOnR5cGU9InVtbDpFeHRlbnNpb24iIGhyZWY9IlN5c01MLnByb2ZpbGUudW1sI1N5c01MLVBvcnRzX3UwMDI2Rmxvd3MtRV9leHRlbnNpb25fQWNjZXB0Q2hhbmdlU3RydWN0dXJhbEZlYXR1cmVFdmVudEFjdGlvbl9iYXNlX0FjY2VwdEV2ZW50QWN0aW9uIi8+DQorICAgICAgPGJlbmRwb2ludHMgeG1pOnR5cGU9Im5vdGF0aW9uOlJlbGF0aXZlQmVuZHBvaW50cyIgeG1pOmlkPSJfOVAxLThwZ1FFZVNGdExvVmUyLXNvUSIgcG9pbnRzPSJbOSwgMCwgLTE0NSwgNTBdJFs5LCAtNTAsIC0xNDUsIDBdIi8+DQorICAgICAgPHNvdXJjZUFuY2hvciB4bWk6dHlwZT0ibm90YXRpb246SWRlbnRpdHlBbmNob3IiIHhtaTppZD0iX0RMMkRVSmdSRWVTRnRMb1ZlMi1zb1EiIGlkPSIoMC4zNDkyNjQ3MDU4ODIzNTI5LDAuMCkiLz4NCisgICAgICA8dGFyZ2V0QW5jaG9yIHhtaTp0eXBlPSJub3RhdGlvbjpJZGVudGl0eUFuY2hvciIgeG1pOmlkPSJfREwyRFVaZ1JFZVNGdExvVmUyLXNvUSIgaWQ9IigwLjk0MDU5NDA1OTQwNTk0MDUsMS4wKSIvPg0KKyAgICA8L2VkZ2VzPg0KKyAgPC9ub3RhdGlvbjpEaWFncmFtPg0KKyAgPG5vdGF0aW9uOkRpYWdyYW0geG1pOmlkPSJfT0lld0FKZ1JFZVNGdExvVmUyLXNvUSIgdHlwZT0iUGFweXJ1c1VNTFByb2ZpbGVEaWFncmFtIiBuYW1lPSJQcm92aWRlZCByZXF1aXJlZCBmZWF0dXJlIiBtZWFzdXJlbWVudFVuaXQ9IlBpeGVsIj4NCisgICAgPGNoaWxkcmVuIHhtaTp0eXBlPSJub3RhdGlvbjpTaGFwZSIgeG1pOmlkPSJfUmdlbWtKZ1JFZVNGdExvVmUyLXNvUSIgdHlwZT0iMTAyNiI+DQorICAgICAgPGNoaWxkcmVuIHhtaTp0eXBlPSJub3RhdGlvbjpEZWNvcmF0aW9uTm9kZSIgeG1pOmlkPSJfUmdmTm9KZ1JFZVNGdExvVmUyLXNvUSIgdHlwZT0iMTAzNCIvPg0KKyAgICAgIDxjaGlsZHJlbiB4bWk6dHlwZT0ibm90YXRpb246QmFzaWNDb21wYXJ0bWVudCIgeG1pOmlkPSJfUmdmTm9aZ1JFZVNGdExvVmUyLXNvUSIgdHlwZT0iMTA3MSI+DQorICAgICAgICA8Y2hpbGRyZW4geG1pOnR5cGU9Im5vdGF0aW9uOlNoYXBlIiB4bWk6aWQ9Il9ZQ0h1b0pnUkVlU0Z0TG9WZTItc29RIiB0eXBlPSIzMDAyIj4NCisgICAgICAgICAgPGVsZW1lbnQgeG1pOnR5cGU9InVtbDpQcm9wZXJ0eSIgaHJlZj0iU3lzTUwucHJvZmlsZS51bWwjU3lzTUwtUG9ydHNfdTAwMjZGbG93cy1EaXJlY3RlZEZlYXR1cmUtZmVhdHVyZURpcmVjdGlvbiIvPg0KKyAgICAgICAgICA8bGF5b3V0Q29uc3RyYWludCB4bWk6dHlwZT0ibm90YXRpb246TG9jYXRpb24iIHhtaTppZD0iX1lDSHVvWmdSRWVTRnRMb1ZlMi1zb1EiLz4NCisgICAgICAgIDwvY2hpbGRyZW4+DQorICAgICAgICA8c3R5bGVzIHhtaTp0eXBlPSJub3RhdGlvbjpUaXRsZVN0eWxlIiB4bWk6aWQ9Il9SZ2ZOb3BnUkVlU0Z0TG9WZTItc29RIi8+DQorICAgICAgICA8c3R5bGVzIHhtaTp0eXBlPSJub3RhdGlvbjpTb3J0aW5nU3R5bGUiIHhtaTppZD0iX1JnZk5vNWdSRWVTRnRMb1ZlMi1zb1EiLz4NCisgICAgICAgIDxzdHlsZXMgeG1pOnR5cGU9Im5vdGF0aW9uOkZpbHRlcmluZ1N0eWxlIiB4bWk6aWQ9Il9SZ2ZOcEpnUkVlU0Z0TG9WZTItc29RIi8+DQorICAgICAgICA8bGF5b3V0Q29uc3RyYWludCB4bWk6dHlwZT0ibm90YXRpb246Qm91bmRzIiB4bWk6aWQ9Il9SZ2ZOcFpnUkVlU0Z0TG9WZTItc29RIi8+DQorICAgICAgPC9jaGlsZHJlbj4NCisgICAgICA8Y2hpbGRyZW4geG1pOnR5cGU9Im5vdGF0aW9uOkJhc2ljQ29tcGFydG1lbnQiIHhtaTppZD0iX1JnZk5wcGdSRWVTRnRMb1ZlMi1zb1EiIHZpc2libGU9ImZhbHNlIiB0eXBlPSIxMDE5Ij4NCisgICAgICAgIDxzdHlsZXMgeG1pOnR5cGU9Im5vdGF0aW9uOlRpdGxlU3R5bGUiIHhtaTppZD0iX1JnZk5wNWdSRWVTRnRMb1ZlMi1zb1EiLz4NCisgICAgICAgIDxzdHlsZXMgeG1pOnR5cGU9Im5vdGF0aW9uOlNvcnRpbmdTdHlsZSIgeG1pOmlkPSJfUmdmTnFKZ1JFZVNGdExvVmUyLXNvUSIvPg0KKyAgICAgICAgPHN0eWxlcyB4bWk6dHlwZT0ibm90YXRpb246RmlsdGVyaW5nU3R5bGUiIHhtaTppZD0iX1JnZk5xWmdSRWVTRnRMb1ZlMi1zb1EiLz4NCisgICAgICAgIDxsYXlvdXRDb25zdHJhaW50IHhtaTp0eXBlPSJub3RhdGlvbjpCb3VuZHMiIHhtaTppZD0iX1JnZk5xcGdSRWVTRnRMb1ZlMi1zb1EiLz4NCisgICAgICA8L2NoaWxkcmVuPg0KKyAgICAgIDxlbGVtZW50IHhtaTp0eXBlPSJ1bWw6U3RlcmVvdHlwZSIgaHJlZj0iU3lzTUwucHJvZmlsZS51bWwjU3lzTUwtUG9ydHNfdTAwMjZGbG93cy1EaXJlY3RlZEZlYXR1cmUiLz4NCisgICAgICA8bGF5b3V0Q29uc3RyYWludCB4bWk6dHlwZT0ibm90YXRpb246Qm91bmRzIiB4bWk6aWQ9Il9SZ2Vta1pnUkVlU0Z0TG9WZTItc29RIiB4PSIyMjAiIHk9IjE2MCIgaGVpZ2h0PSI4MSIvPg0KKyAgICA8L2NoaWxkcmVuPg0KKyAgICA8Y2hpbGRyZW4geG1pOnR5cGU9Im5vdGF0aW9uOlNoYXBlIiB4bWk6aWQ9Il9TR0YxRUpnUkVlU0Z0TG9WZTItc29RIiB0eXBlPSIxMDMxIj4NCisgICAgICA8Y2hpbGRyZW4geG1pOnR5cGU9Im5vdGF0aW9uOkRlY29yYXRpb25Ob2RlIiB4bWk6aWQ9Il9TR0djSUpnUkVlU0Z0TG9WZTItc29RIiB0eXBlPSIxMDg0Ii8+DQorICAgICAgPGVsZW1lbnQgeG1pOnR5cGU9InVtbDpDbGFzcyIgaHJlZj0icGF0aG1hcDovL1VNTF9NRVRBTU9ERUxTL1VNTC5tZXRhbW9kZWwudW1sI0ZlYXR1cmUiLz4NCisgICAgICA8bGF5b3V0Q29uc3RyYWludCB4bWk6dHlwZT0ibm90YXRpb246Qm91bmRzIiB4bWk6aWQ9Il9TR0YxRVpnUkVlU0Z0TG9WZTItc29RIiB4PSIyMjAiIHk9IjYwIiB3aWR0aD0iMjQxIi8+DQorICAgIDwvY2hpbGRyZW4+DQorICAgIDxjaGlsZHJlbiB4bWk6dHlwZT0ibm90YXRpb246U2hhcGUiIHhtaTppZD0iX1pzeDVvSmdSRWVTRnRMb1ZlMi1zb1EiIHR5cGU9IjIwMDYiPg0KKyAgICAgIDxjaGlsZHJlbiB4bWk6dHlwZT0ibm90YXRpb246RGVjb3JhdGlvbk5vZGUiIHhtaTppZD0iX1pzeWdzSmdSRWVTRnRMb1ZlMi1zb1EiIHR5cGU9IjUwMjMiLz4NCisgICAgICA8Y2hpbGRyZW4geG1pOnR5cGU9Im5vdGF0aW9uOkJhc2ljQ29tcGFydG1lbnQiIHhtaTppZD0iX1pzeWdzWmdSRWVTRnRMb1ZlMi1zb1EiIHR5cGU9IjEwNjMiPg0KKyAgICAgICAgPGNoaWxkcmVuIHhtaTp0eXBlPSJub3RhdGlvbjpTaGFwZSIgeG1pOmlkPSJfZEROcDhKZ1JFZVNGdExvVmUyLXNvUSIgdHlwZT0iMTAzNyI+DQorICAgICAgICAgIDxlbGVtZW50IHhtaTp0eXBlPSJ1bWw6RW51bWVyYXRpb25MaXRlcmFsIiBocmVmPSJTeXNNTC5wcm9maWxlLnVtbCNTeXNNTC1Qb3J0c191MDAyNkZsb3dzLUZlYXR1cmVEaXJlY3Rpb24tcHJvdmlkZWQiLz4NCisgICAgICAgICAgPGxheW91dENvbnN0cmFpbnQgeG1pOnR5cGU9Im5vdGF0aW9uOkxvY2F0aW9uIiB4bWk6aWQ9Il9kRE5wOFpnUkVlU0Z0TG9WZTItc29RIi8+DQorICAgICAgICA8L2NoaWxkcmVuPg0KKyAgICAgICAgPGNoaWxkcmVuIHhtaTp0eXBlPSJub3RhdGlvbjpTaGFwZSIgeG1pOmlkPSJfZERQZklKZ1JFZVNGdExvVmUyLXNvUSIgdHlwZT0iMTAzNyI+DQorICAgICAgICAgIDxlbGVtZW50IHhtaTp0eXBlPSJ1bWw6RW51bWVyYXRpb25MaXRlcmFsIiBocmVmPSJTeXNNTC5wcm9maWxlLnVtbCNTeXNNTC1Qb3J0c191MDAyNkZsb3dzLUZlYXR1cmVEaXJlY3Rpb24tcHJvdmlkZWRSZXF1aXJlZCIvPg0KKyAgICAgICAgICA8bGF5b3V0Q29uc3RyYWludCB4bWk6dHlwZT0ibm90YXRpb246TG9jYXRpb24iIHhtaTppZD0iX2REUGZJWmdSRWVTRnRMb1ZlMi1zb1EiLz4NCisgICAgICAgIDwvY2hpbGRyZW4+DQorICAgICAgICA8Y2hpbGRyZW4geG1pOnR5cGU9Im5vdGF0aW9uOlNoYXBlIiB4bWk6aWQ9Il9kRFJVVUpnUkVlU0Z0TG9WZTItc29RIiB0eXBlPSIxMDM3Ij4NCisgICAgICAgICAgPGVsZW1lbnQgeG1pOnR5cGU9InVtbDpFbnVtZXJhdGlvbkxpdGVyYWwiIGhyZWY9IlN5c01MLnByb2ZpbGUudW1sI1N5c01MLVBvcnRzX3UwMDI2Rmxvd3MtRmVhdHVyZURpcmVjdGlvbi1yZXF1aXJlZCIvPg0KKyAgICAgICAgICA8bGF5b3V0Q29uc3RyYWludCB4bWk6dHlwZT0ibm90YXRpb246TG9jYXRpb24iIHhtaTppZD0iX2REUlVVWmdSRWVTRnRMb1ZlMi1zb1EiLz4NCisgICAgICAgIDwvY2hpbGRyZW4+DQorICAgICAgICA8c3R5bGVzIHhtaTp0eXBlPSJub3RhdGlvbjpUaXRsZVN0eWxlIiB4bWk6aWQ9Il9ac3lnc3BnUkVlU0Z0TG9WZTItc29RIi8+DQorICAgICAgICA8c3R5bGVzIHhtaTp0eXBlPSJub3RhdGlvbjpTb3J0aW5nU3R5bGUiIHhtaTppZD0iX1pzeWdzNWdSRWVTRnRMb1ZlMi1zb1EiLz4NCisgICAgICAgIDxzdHlsZXMgeG1pOnR5cGU9Im5vdGF0aW9uOkZpbHRlcmluZ1N0eWxlIiB4bWk6aWQ9Il9ac3lndEpnUkVlU0Z0TG9WZTItc29RIi8+DQorICAgICAgICA8bGF5b3V0Q29uc3RyYWludCB4bWk6dHlwZT0ibm90YXRpb246Qm91bmRzIiB4bWk6aWQ9Il9ac3lndFpnUkVlU0Z0TG9WZTItc29RIi8+DQorICAgICAgPC9jaGlsZHJlbj4NCisgICAgICA8ZWxlbWVudCB4bWk6dHlwZT0idW1sOkVudW1lcmF0aW9uIiBocmVmPSJTeXNNTC5wcm9maWxlLnVtbCNTeXNNTC1Qb3J0c191MDAyNkZsb3dzLUZlYXR1cmVEaXJlY3Rpb24iLz4NCisgICAgICA8bGF5b3V0Q29uc3RyYWludCB4bWk6dHlwZT0ibm90YXRpb246Qm91bmRzIiB4bWk6aWQ9Il9ac3g1b1pnUkVlU0Z0TG9WZTItc29RIiB4PSI2OTYiIHk9IjEwMyIvPg0KKyAgICA8L2NoaWxkcmVuPg0KKyAgICA8c3R5bGVzIHhtaTp0eXBlPSJub3RhdGlvbjpTdHJpbmdWYWx1ZVN0eWxlIiB4bWk6aWQ9Il9PSWV3QVpnUkVlU0Z0TG9WZTItc29RIiBuYW1lPSJkaWFncmFtX2NvbXBhdGliaWxpdHlfdmVyc2lvbiIgc3RyaW5nVmFsdWU9IjEuMC4wIi8+DQorICAgIDxzdHlsZXMgeG1pOnR5cGU9Im5vdGF0aW9uOkRpYWdyYW1TdHlsZSIgeG1pOmlkPSJfT0lld0FwZ1JFZVNGdExvVmUyLXNvUSIvPg0KKyAgICA8c3R5bGVzIHhtaTp0eXBlPSJzdHlsZTpQYXB5cnVzVmlld1N0eWxlIiB4bWk6aWQ9Il9PSWV3QTVnUkVlU0Z0TG9WZTItc29RIj4NCisgICAgICA8b3duZXIgeG1pOnR5cGU9InVtbDpQYWNrYWdlIiBocmVmPSJTeXNNTC5wcm9maWxlLnVtbCNTeXNNTC1Qb3J0c191MDAyNkZsb3dzIi8+DQorICAgIDwvc3R5bGVzPg0KKyAgICA8ZWxlbWVudCB4bWk6dHlwZT0idW1sOlBhY2thZ2UiIGhyZWY9IlN5c01MLnByb2ZpbGUudW1sI1N5c01MLVBvcnRzX3UwMDI2Rmxvd3MiLz4NCisgICAgPGVkZ2VzIHhtaTp0eXBlPSJub3RhdGlvbjpDb25uZWN0b3IiIHhtaTppZD0iX1NHTDdzSmdSRWVTRnRMb1ZlMi1zb1EiIHR5cGU9IjEwMTMiIHNvdXJjZT0iX1JnZW1rSmdSRWVTRnRMb1ZlMi1zb1EiIHRhcmdldD0iX1NHRjFFSmdSRWVTRnRMb1ZlMi1zb1EiPg0KKyAgICAgIDxzdHlsZXMgeG1pOnR5cGU9Im5vdGF0aW9uOkZvbnRTdHlsZSIgeG1pOmlkPSJfU0dMN3NaZ1JFZVNGdExvVmUyLXNvUSIvPg0KKyAgICAgIDxlbGVtZW50IHhtaTp0eXBlPSJ1bWw6RXh0ZW5zaW9uIiBocmVmPSJTeXNNTC5wcm9maWxlLnVtbCNTeXNNTC1Qb3J0c191MDAyNkZsb3dzLUVfZXh0ZW5zaW9uX0RpcmVjdGVkRmVhdHVyZV9iYXNlX0ZlYXR1cmUiLz4NCisgICAgICA8YmVuZHBvaW50cyB4bWk6dHlwZT0ibm90YXRpb246UmVsYXRpdmVCZW5kcG9pbnRzIiB4bWk6aWQ9Il9TR0w3c3BnUkVlU0Z0TG9WZTItc29RIiBwb2ludHM9IlstNDYsIC01MCwgMjQ3LCAyNzFdJFstMjkzLCAtMzIxLCAwLCAwXSIvPg0KKyAgICAgIDxzb3VyY2VBbmNob3IgeG1pOnR5cGU9Im5vdGF0aW9uOklkZW50aXR5QW5jaG9yIiB4bWk6aWQ9Il9TZEpxTUpnUkVlU0Z0TG9WZTItc29RIiBpZD0iKDAuNSwwLjApIi8+DQorICAgICAgPHRhcmdldEFuY2hvciB4bWk6dHlwZT0ibm90YXRpb246SWRlbnRpdHlBbmNob3IiIHhtaTppZD0iX1NkSnFNWmdSRWVTRnRMb1ZlMi1zb1EiIGlkPSIoMC41LDEuMCkiLz4NCisgICAgPC9lZGdlcz4NCisgIDwvbm90YXRpb246RGlhZ3JhbT4NCisgIDxub3RhdGlvbjpEaWFncmFtIHhtaTppZD0iX2tqeFJVSmdSRWVTRnRMb1ZlMi1zb1EiIHR5cGU9IlBhcHlydXNVTUxQcm9maWxlRGlhZ3JhbSIgbmFtZT0iQ29uc3RyYWludCBibG9jayIgbWVhc3VyZW1lbnRVbml0PSJQaXhlbCI+DQorICAgIDxjaGlsZHJlbiB4bWk6dHlwZT0ibm90YXRpb246U2hhcGUiIHhtaTppZD0iX2xnRDZjSmdSRWVTRnRMb1ZlMi1zb1EiIHR5cGU9IjEwMjYiPg0KKyAgICAgIDxjaGlsZHJlbiB4bWk6dHlwZT0ibm90YXRpb246RGVjb3JhdGlvbk5vZGUiIHhtaTppZD0iX2xnRWhnSmdSRWVTRnRMb1ZlMi1zb1EiIHR5cGU9IjEwMzQiLz4NCisgICAgICA8Y2hpbGRyZW4geG1pOnR5cGU9Im5vdGF0aW9uOkJhc2ljQ29tcGFydG1lbnQiIHhtaTppZD0iX2xnRWhnWmdSRWVTRnRMb1ZlMi1zb1EiIHZpc2libGU9ImZhbHNlIiB0eXBlPSIxMDcxIj4NCisgICAgICAgIDxzdHlsZXMgeG1pOnR5cGU9Im5vdGF0aW9uOlRpdGxlU3R5bGUiIHhtaTppZD0iX2xnRWhncGdSRWVTRnRMb1ZlMi1zb1EiLz4NCisgICAgICAgIDxzdHlsZXMgeG1pOnR5cGU9Im5vdGF0aW9uOlNvcnRpbmdTdHlsZSIgeG1pOmlkPSJfbGdFaGc1Z1JFZVNGdExvVmUyLXNvUSIvPg0KKyAgICAgICAgPHN0eWxlcyB4bWk6dHlwZT0ibm90YXRpb246RmlsdGVyaW5nU3R5bGUiIHhtaTppZD0iX2xnRWhoSmdSRWVTRnRMb1ZlMi1zb1EiLz4NCisgICAgICAgIDxsYXlvdXRDb25zdHJhaW50IHhtaTp0eXBlPSJub3RhdGlvbjpCb3VuZHMiIHhtaTppZD0iX2xnRWhoWmdSRWVTRnRMb1ZlMi1zb1EiLz4NCisgICAgICA8L2NoaWxkcmVuPg0KKyAgICAgIDxjaGlsZHJlbiB4bWk6dHlwZT0ibm90YXRpb246QmFzaWNDb21wYXJ0bWVudCIgeG1pOmlkPSJfbGdFaGhwZ1JFZVNGdExvVmUyLXNvUSIgdmlzaWJsZT0iZmFsc2UiIHR5cGU9IjEwMTkiPg0KKyAgICAgICAgPHN0eWxlcyB4bWk6dHlwZT0ibm90YXRpb246VGl0bGVTdHlsZSIgeG1pOmlkPSJfbGdFaGg1Z1JFZVNGdExvVmUyLXNvUSIvPg0KKyAgICAgICAgPHN0eWxlcyB4bWk6dHlwZT0ibm90YXRpb246U29ydGluZ1N0eWxlIiB4bWk6aWQ9Il9sZ0VoaUpnUkVlU0Z0TG9WZTItc29RIi8+DQorICAgICAgICA8c3R5bGVzIHhtaTp0eXBlPSJub3RhdGlvbjpGaWx0ZXJpbmdTdHlsZSIgeG1pOmlkPSJfbGdFaGlaZ1JFZVNGdExvVmUyLXNvUSIvPg0KKyAgICAgICAgPGxheW91dENvbnN0cmFpbnQgeG1pOnR5cGU9Im5vdGF0aW9uOkJvdW5kcyIgeG1pOmlkPSJfbGdFaGlwZ1JFZVNGdExvVmUyLXNvUSIvPg0KKyAgICAgIDwvY2hpbGRyZW4+DQorICAgICAgPGVsZW1lbnQgeG1pOnR5cGU9InVtbDpTdGVyZW90eXBlIiBocmVmPSJTeXNNTC5wcm9maWxlLnVtbCNTeXNNTC1Db25zdHJhaW50QmxvY2tzLUNvbnN0cmFpbnRCbG9jayIvPg0KKyAgICAgIDxsYXlvdXRDb25zdHJhaW50IHhtaTp0eXBlPSJub3RhdGlvbjpCb3VuZHMiIHhtaTppZD0iX2xnRDZjWmdSRWVTRnRMb1ZlMi1zb1EiIHg9IjI2MSIgeT0iMjA2IiBoZWlnaHQ9IjU0Ii8+DQorICAgIDwvY2hpbGRyZW4+DQorICAgIDxjaGlsZHJlbiB4bWk6dHlwZT0ibm90YXRpb246U2hhcGUiIHhtaTppZD0iX21BRTNRSmdSRWVTRnRMb1ZlMi1zb1EiIHR5cGU9IjEwMjYiPg0KKyAgICAgIDxjaGlsZHJlbiB4bWk6dHlwZT0ibm90YXRpb246RGVjb3JhdGlvbk5vZGUiIHhtaTppZD0iX21BRmVVSmdSRWVTRnRMb1ZlMi1zb1EiIHR5cGU9IjEwMzQiLz4NCisgICAgICA8Y2hpbGRyZW4geG1pOnR5cGU9Im5vdGF0aW9uOkJhc2ljQ29tcGFydG1lbnQiIHhtaTppZD0iX21BRmVVWmdSRWVTRnRMb1ZlMi1zb1EiIHZpc2libGU9ImZhbHNlIiB0eXBlPSIxMDcxIj4NCisgICAgICAgIDxzdHlsZXMgeG1pOnR5cGU9Im5vdGF0aW9uOlRpdGxlU3R5bGUiIHhtaTppZD0iX21BRmVVcGdSRWVTRnRMb1ZlMi1zb1EiLz4NCisgICAgICAgIDxzdHlsZXMgeG1pOnR5cGU9Im5vdGF0aW9uOlNvcnRpbmdTdHlsZSIgeG1pOmlkPSJfbUFGZVU1Z1JFZVNGdExvVmUyLXNvUSIvPg0KKyAgICAgICAgPHN0eWxlcyB4bWk6dHlwZT0ibm90YXRpb246RmlsdGVyaW5nU3R5bGUiIHhtaTppZD0iX21BRmVWSmdSRWVTRnRMb1ZlMi1zb1EiLz4NCisgICAgICAgIDxsYXlvdXRDb25zdHJhaW50IHhtaTp0eXBlPSJub3RhdGlvbjpCb3VuZHMiIHhtaTppZD0iX21BRmVWWmdSRWVTRnRMb1ZlMi1zb1EiLz4NCisgICAgICA8L2NoaWxkcmVuPg0KKyAgICAgIDxjaGlsZHJlbiB4bWk6dHlwZT0ibm90YXRpb246QmFzaWNDb21wYXJ0bWVudCIgeG1pOmlkPSJfbUFGZVZwZ1JFZVNGdExvVmUyLXNvUSIgdmlzaWJsZT0iZmFsc2UiIHR5cGU9IjEwMTkiPg0KKyAgICAgICAgPHN0eWxlcyB4bWk6dHlwZT0ibm90YXRpb246VGl0bGVTdHlsZSIgeG1pOmlkPSJfbUFGZVY1Z1JFZVNGdExvVmUyLXNvUSIvPg0KKyAgICAgICAgPHN0eWxlcyB4bWk6dHlwZT0ibm90YXRpb246U29ydGluZ1N0eWxlIiB4bWk6aWQ9Il9tQUZlV0pnUkVlU0Z0TG9WZTItc29RIi8+DQorICAgICAgICA8c3R5bGVzIHhtaTp0eXBlPSJub3RhdGlvbjpGaWx0ZXJpbmdTdHlsZSIgeG1pOmlkPSJfbUFGZVdaZ1JFZVNGdExvVmUyLXNvUSIvPg0KKyAgICAgICAgPGxheW91dENvbnN0cmFpbnQgeG1pOnR5cGU9Im5vdGF0aW9uOkJvdW5kcyIgeG1pOmlkPSJfbUFGZVdwZ1JFZVNGdExvVmUyLXNvUSIvPg0KKyAgICAgIDwvY2hpbGRyZW4+DQorICAgICAgPGVsZW1lbnQgeG1pOnR5cGU9InVtbDpTdGVyZW90eXBlIiBocmVmPSJTeXNNTC5wcm9maWxlLnVtbCNTeXNNTC1CbG9ja3MtQmxvY2siLz4NCisgICAgICA8bGF5b3V0Q29uc3RyYWludCB4bWk6dHlwZT0ibm90YXRpb246Qm91bmRzIiB4bWk6aWQ9Il9tQUUzUVpnUkVlU0Z0TG9WZTItc29RIiB4PSIyNjUiIHk9IjcwIiBoZWlnaHQ9IjU0Ii8+DQorICAgIDwvY2hpbGRyZW4+DQorICAgIDxzdHlsZXMgeG1pOnR5cGU9Im5vdGF0aW9uOlN0cmluZ1ZhbHVlU3R5bGUiIHhtaTppZD0iX2tqeFJVWmdSRWVTRnRMb1ZlMi1zb1EiIG5hbWU9ImRpYWdyYW1fY29tcGF0aWJpbGl0eV92ZXJzaW9uIiBzdHJpbmdWYWx1ZT0iMS4wLjAiLz4NCisgICAgPHN0eWxlcyB4bWk6dHlwZT0ibm90YXRpb246RGlhZ3JhbVN0eWxlIiB4bWk6aWQ9Il9ranhSVXBnUkVlU0Z0TG9WZTItc29RIi8+DQorICAgIDxzdHlsZXMgeG1pOnR5cGU9InN0eWxlOlBhcHlydXNWaWV3U3R5bGUiIHhtaTppZD0iX2tqeFJVNWdSRWVTRnRMb1ZlMi1zb1EiPg0KKyAgICAgIDxvd25lciB4bWk6dHlwZT0idW1sOlBhY2thZ2UiIGhyZWY9IlN5c01MLnByb2ZpbGUudW1sI1N5c01MLUNvbnN0cmFpbnRCbG9ja3MiLz4NCisgICAgPC9zdHlsZXM+DQorICAgIDxlbGVtZW50IHhtaTp0eXBlPSJ1bWw6UGFja2FnZSIgaHJlZj0iU3lzTUwucHJvZmlsZS51bWwjU3lzTUwtQ29uc3RyYWludEJsb2NrcyIvPg0KKyAgICA8ZWRnZXMgeG1pOnR5cGU9Im5vdGF0aW9uOkNvbm5lY3RvciIgeG1pOmlkPSJfbUFPQk1KZ1JFZVNGdExvVmUyLXNvUSIgdHlwZT0iNDAwMiIgc291cmNlPSJfbGdENmNKZ1JFZVNGdExvVmUyLXNvUSIgdGFyZ2V0PSJfbUFFM1FKZ1JFZVNGdExvVmUyLXNvUSI+DQorICAgICAgPGNoaWxkcmVuIHhtaTp0eXBlPSJub3RhdGlvbjpEZWNvcmF0aW9uTm9kZSIgeG1pOmlkPSJfbUFPb1FKZ1JFZVNGdExvVmUyLXNvUSIgdHlwZT0iNjAwNyI+DQorICAgICAgICA8bGF5b3V0Q29uc3RyYWludCB4bWk6dHlwZT0ibm90YXRpb246TG9jYXRpb24iIHhtaTppZD0iX21BT29RWmdSRWVTRnRMb1ZlMi1zb1EiIHk9IjYwIi8+DQorICAgICAgPC9jaGlsZHJlbj4NCisgICAgICA8c3R5bGVzIHhtaTp0eXBlPSJub3RhdGlvbjpGb250U3R5bGUiIHhtaTppZD0iX21BT0JNWmdSRWVTRnRMb1ZlMi1zb1EiLz4NCisgICAgICA8ZWxlbWVudCB4bWk6dHlwZT0idW1sOkdlbmVyYWxpemF0aW9uIiBocmVmPSJTeXNNTC5wcm9maWxlLnVtbCNTeXNNTC1Db25zdHJhaW50QmxvY2tzLUNvbnN0cmFpbnRCbG9jay1nZW5lcmFsaXphdGlvbiIvPg0KKyAgICAgIDxiZW5kcG9pbnRzIHhtaTp0eXBlPSJub3RhdGlvbjpSZWxhdGl2ZUJlbmRwb2ludHMiIHhtaTppZD0iX21BT0JNcGdSRWVTRnRMb1ZlMi1zb1EiIHBvaW50cz0iWzI3LCAwLCAwLCA4Ml0kWzI3LCAtODIsIDAsIDBdIi8+DQorICAgICAgPHNvdXJjZUFuY2hvciB4bWk6dHlwZT0ibm90YXRpb246SWRlbnRpdHlBbmNob3IiIHhtaTppZD0iX21VcUFJSmdSRWVTRnRMb1ZlMi1zb1EiIGlkPSIoMC4xMywwLjApIi8+DQorICAgICAgPHRhcmdldEFuY2hvciB4bWk6dHlwZT0ibm90YXRpb246SWRlbnRpdHlBbmNob3IiIHhtaTppZD0iX21VcW5NSmdSRWVTRnRMb1ZlMi1zb1EiIGlkPSIoMC4zNiwxLjApIi8+DQorICAgIDwvZWRnZXM+DQorICA8L25vdGF0aW9uOkRpYWdyYW0+DQorICA8bm90YXRpb246RGlhZ3JhbSB4bWk6aWQ9Il9UZnJNUUpnVEVlU0Z0TG9WZTItc29RIiB0eXBlPSJQYXB5cnVzVU1MUHJvZmlsZURpYWdyYW0iIG5hbWU9ImFjdGl2aXR5IGV4dGVuc2lvbiIgbWVhc3VyZW1lbnRVbml0PSJQaXhlbCI+DQorICAgIDxjaGlsZHJlbiB4bWk6dHlwZT0ibm90YXRpb246U2hhcGUiIHhtaTppZD0iX1lBejFJSmdURWVTRnRMb1ZlMi1zb1EiIHR5cGU9IjEwMjYiPg0KKyAgICAgIDxjaGlsZHJlbiB4bWk6dHlwZT0ibm90YXRpb246RGVjb3JhdGlvbk5vZGUiIHhtaTppZD0iX1lBejFJcGdURWVTRnRMb1ZlMi1zb1EiIHR5cGU9IjEwMzQiLz4NCisgICAgICA8Y2hpbGRyZW4geG1pOnR5cGU9Im5vdGF0aW9uOkJhc2ljQ29tcGFydG1lbnQiIHhtaTppZD0iX1lBejFJNWdURWVTRnRMb1ZlMi1zb1EiIHZpc2libGU9ImZhbHNlIiB0eXBlPSIxMDcxIj4NCisgICAgICAgIDxzdHlsZXMgeG1pOnR5cGU9Im5vdGF0aW9uOlRpdGxlU3R5bGUiIHhtaTppZD0iX1lBejFKSmdURWVTRnRMb1ZlMi1zb1EiLz4NCisgICAgICAgIDxzdHlsZXMgeG1pOnR5cGU9Im5vdGF0aW9uOlNvcnRpbmdTdHlsZSIgeG1pOmlkPSJfWUF6MUpaZ1RFZVNGdExvVmUyLXNvUSIvPg0KKyAgICAgICAgPHN0eWxlcyB4bWk6dHlwZT0ibm90YXRpb246RmlsdGVyaW5nU3R5bGUiIHhtaTppZD0iX1lBejFKcGdURWVTRnRMb1ZlMi1zb1EiLz4NCisgICAgICAgIDxsYXlvdXRDb25zdHJhaW50IHhtaTp0eXBlPSJub3RhdGlvbjpCb3VuZHMiIHhtaTppZD0iX1lBejFKNWdURWVTRnRMb1ZlMi1zb1EiLz4NCisgICAgICA8L2NoaWxkcmVuPg0KKyAgICAgIDxjaGlsZHJlbiB4bWk6dHlwZT0ibm90YXRpb246QmFzaWNDb21wYXJ0bWVudCIgeG1pOmlkPSJfWUF6MUtKZ1RFZVNGdExvVmUyLXNvUSIgdmlzaWJsZT0iZmFsc2UiIHR5cGU9IjEwMTkiPg0KKyAgICAgICAgPHN0eWxlcyB4bWk6dHlwZT0ibm90YXRpb246VGl0bGVTdHlsZSIgeG1pOmlkPSJfWUF6MUtaZ1RFZVNGdExvVmUyLXNvUSIvPg0KKyAgICAgICAgPHN0eWxlcyB4bWk6dHlwZT0ibm90YXRpb246U29ydGluZ1N0eWxlIiB4bWk6aWQ9Il9ZQXoxS3BnVEVlU0Z0TG9WZTItc29RIi8+DQorICAgICAgICA8c3R5bGVzIHhtaTp0eXBlPSJub3RhdGlvbjpGaWx0ZXJpbmdTdHlsZSIgeG1pOmlkPSJfWUF6MUs1Z1RFZVNGdExvVmUyLXNvUSIvPg0KKyAgICAgICAgPGxheW91dENvbnN0cmFpbnQgeG1pOnR5cGU9Im5vdGF0aW9uOkJvdW5kcyIgeG1pOmlkPSJfWUF6MUxKZ1RFZVNGdExvVmUyLXNvUSIvPg0KKyAgICAgIDwvY2hpbGRyZW4+DQorICAgICAgPGVsZW1lbnQgeG1pOnR5cGU9InVtbDpTdGVyZW90eXBlIiBocmVmPSJTeXNNTC5wcm9maWxlLnVtbCNTeXNNTC1BY3Rpdml0aWVzLU9wdGlvbmFsIi8+DQorICAgICAgPGxheW91dENvbnN0cmFpbnQgeG1pOnR5cGU9Im5vdGF0aW9uOkJvdW5kcyIgeG1pOmlkPSJfWUF6MUlaZ1RFZVNGdExvVmUyLXNvUSIgeD0iMTQ0IiB5PSIxODgiIGhlaWdodD0iNzMiLz4NCisgICAgPC9jaGlsZHJlbj4NCisgICAgPGNoaWxkcmVuIHhtaTp0eXBlPSJub3RhdGlvbjpTaGFwZSIgeG1pOmlkPSJfWUE5bUlKZ1RFZVNGdExvVmUyLXNvUSIgdHlwZT0iMTAzMSI+DQorICAgICAgPGNoaWxkcmVuIHhtaTp0eXBlPSJub3RhdGlvbjpEZWNvcmF0aW9uTm9kZSIgeG1pOmlkPSJfWUE5bUlwZ1RFZVNGdExvVmUyLXNvUSIgdHlwZT0iMTA4NCIvPg0KKyAgICAgIDxlbGVtZW50IHhtaTp0eXBlPSJ1bWw6Q2xhc3MiIGhyZWY9InBhdGhtYXA6Ly9VTUxfTUVUQU1PREVMUy9VTUwubWV0YW1vZGVsLnVtbCNQYXJhbWV0ZXIiLz4NCisgICAgICA8bGF5b3V0Q29uc3RyYWludCB4bWk6dHlwZT0ibm90YXRpb246Qm91bmRzIiB4bWk6aWQ9Il9ZQTltSVpnVEVlU0Z0TG9WZTItc29RIiB4PSIxNDAiIHk9IjYwIiB3aWR0aD0iMjYxIi8+DQorICAgIDwvY2hpbGRyZW4+DQorICAgIDxjaGlsZHJlbiB4bWk6dHlwZT0ibm90YXRpb246U2hhcGUiIHhtaTppZD0iX2Ftem5BSmdURWVTRnRMb1ZlMi1zb1EiIHR5cGU9IjEwMjYiPg0KKyAgICAgIDxjaGlsZHJlbiB4bWk6dHlwZT0ibm90YXRpb246RGVjb3JhdGlvbk5vZGUiIHhtaTppZD0iX2Ftem5BcGdURWVTRnRMb1ZlMi1zb1EiIHR5cGU9IjEwMzQiLz4NCisgICAgICA8Y2hpbGRyZW4geG1pOnR5cGU9Im5vdGF0aW9uOkJhc2ljQ29tcGFydG1lbnQiIHhtaTppZD0iX2FtME9FSmdURWVTRnRMb1ZlMi1zb1EiIHR5cGU9IjEwNzEiPg0KKyAgICAgICAgPGNoaWxkcmVuIHhtaTp0eXBlPSJub3RhdGlvbjpTaGFwZSIgeG1pOmlkPSJfeEp0elFKZ1RFZVNGdExvVmUyLXNvUSIgdHlwZT0iMzAwMiI+DQorICAgICAgICAgIDxlbGVtZW50IHhtaTp0eXBlPSJ1bWw6UHJvcGVydHkiIGhyZWY9IlN5c01MLnByb2ZpbGUudW1sI1N5c01MLUFjdGl2aXRpZXMtUmF0ZS1yYXRlIi8+DQorICAgICAgICAgIDxsYXlvdXRDb25zdHJhaW50IHhtaTp0eXBlPSJub3RhdGlvbjpMb2NhdGlvbiIgeG1pOmlkPSJfeEp0elFaZ1RFZVNGdExvVmUyLXNvUSIvPg0KKyAgICAgICAgPC9jaGlsZHJlbj4NCisgICAgICAgIDxzdHlsZXMgeG1pOnR5cGU9Im5vdGF0aW9uOlRpdGxlU3R5bGUiIHhtaTppZD0iX2FtME9FWmdURWVTRnRMb1ZlMi1zb1EiLz4NCisgICAgICAgIDxzdHlsZXMgeG1pOnR5cGU9Im5vdGF0aW9uOlNvcnRpbmdTdHlsZSIgeG1pOmlkPSJfYW0wT0VwZ1RFZVNGdExvVmUyLXNvUSIvPg0KKyAgICAgICAgPHN0eWxlcyB4bWk6dHlwZT0ibm90YXRpb246RmlsdGVyaW5nU3R5bGUiIHhtaTppZD0iX2FtME9FNWdURWVTRnRMb1ZlMi1zb1EiLz4NCisgICAgICAgIDxsYXlvdXRDb25zdHJhaW50IHhtaTp0eXBlPSJub3RhdGlvbjpCb3VuZHMiIHhtaTppZD0iX2FtME9GSmdURWVTRnRMb1ZlMi1zb1EiLz4NCisgICAgICA8L2NoaWxkcmVuPg0KKyAgICAgIDxjaGlsZHJlbiB4bWk6dHlwZT0ibm90YXRpb246QmFzaWNDb21wYXJ0bWVudCIgeG1pOmlkPSJfYW0wT0ZaZ1RFZVNGdExvVmUyLXNvUSIgdmlzaWJsZT0iZmFsc2UiIHR5cGU9IjEwMTkiPg0KKyAgICAgICAgPHN0eWxlcyB4bWk6dHlwZT0ibm90YXRpb246VGl0bGVTdHlsZSIgeG1pOmlkPSJfYW0wT0ZwZ1RFZVNGdExvVmUyLXNvUSIvPg0KKyAgICAgICAgPHN0eWxlcyB4bWk6dHlwZT0ibm90YXRpb246U29ydGluZ1N0eWxlIiB4bWk6aWQ9Il9hbTBPRjVnVEVlU0Z0TG9WZTItc29RIi8+DQorICAgICAgICA8c3R5bGVzIHhtaTp0eXBlPSJub3RhdGlvbjpGaWx0ZXJpbmdTdHlsZSIgeG1pOmlkPSJfYW0wT0dKZ1RFZVNGdExvVmUyLXNvUSIvPg0KKyAgICAgICAgPGxheW91dENvbnN0cmFpbnQgeG1pOnR5cGU9Im5vdGF0aW9uOkJvdW5kcyIgeG1pOmlkPSJfYW0wT0daZ1RFZVNGdExvVmUyLXNvUSIvPg0KKyAgICAgIDwvY2hpbGRyZW4+DQorICAgICAgPGVsZW1lbnQgeG1pOnR5cGU9InVtbDpTdGVyZW90eXBlIiBocmVmPSJTeXNNTC5wcm9maWxlLnVtbCNTeXNNTC1BY3Rpdml0aWVzLVJhdGUiLz4NCisgICAgICA8bGF5b3V0Q29uc3RyYWludCB4bWk6dHlwZT0ibm90YXRpb246Qm91bmRzIiB4bWk6aWQ9Il9hbXpuQVpnVEVlU0Z0TG9WZTItc29RIiB4PSIzMDAiIHk9IjE4MCIgaGVpZ2h0PSI4MSIvPg0KKyAgICA8L2NoaWxkcmVuPg0KKyAgICA8Y2hpbGRyZW4geG1pOnR5cGU9Im5vdGF0aW9uOlNoYXBlIiB4bWk6aWQ9Il9jdDdFZ0pnVEVlU0Z0TG9WZTItc29RIiB0eXBlPSIxMDI2Ij4NCisgICAgICA8Y2hpbGRyZW4geG1pOnR5cGU9Im5vdGF0aW9uOkRlY29yYXRpb25Ob2RlIiB4bWk6aWQ9Il9jdDdFZ3BnVEVlU0Z0TG9WZTItc29RIiB0eXBlPSIxMDM0Ii8+DQorICAgICAgPGNoaWxkcmVuIHhtaTp0eXBlPSJub3RhdGlvbjpCYXNpY0NvbXBhcnRtZW50IiB4bWk6aWQ9Il9jdDdFZzVnVEVlU0Z0TG9WZTItc29RIiB0eXBlPSIxMDcxIj4NCisgICAgICAgIDxjaGlsZHJlbiB4bWk6dHlwZT0ibm90YXRpb246U2hhcGUiIHhtaTppZD0iX3pxWkFRSmdURWVTRnRMb1ZlMi1zb1EiIHR5cGU9IjMwMDIiPg0KKyAgICAgICAgICA8ZWxlbWVudCB4bWk6dHlwZT0idW1sOlByb3BlcnR5IiBocmVmPSJTeXNNTC5wcm9maWxlLnVtbCNTeXNNTC1BY3Rpdml0aWVzLVByb2JhYmlsaXR5LXByb2JhYmlsaXR5Ii8+DQorICAgICAgICAgIDxsYXlvdXRDb25zdHJhaW50IHhtaTp0eXBlPSJub3RhdGlvbjpMb2NhdGlvbiIgeG1pOmlkPSJfenFaQVFaZ1RFZVNGdExvVmUyLXNvUSIvPg0KKyAgICAgICAgPC9jaGlsZHJlbj4NCisgICAgICAgIDxzdHlsZXMgeG1pOnR5cGU9Im5vdGF0aW9uOlRpdGxlU3R5bGUiIHhtaTppZD0iX2N0N0VoSmdURWVTRnRMb1ZlMi1zb1EiLz4NCisgICAgICAgIDxzdHlsZXMgeG1pOnR5cGU9Im5vdGF0aW9uOlNvcnRpbmdTdHlsZSIgeG1pOmlkPSJfY3Q3RWhaZ1RFZVNGdExvVmUyLXNvUSIvPg0KKyAgICAgICAgPHN0eWxlcyB4bWk6dHlwZT0ibm90YXRpb246RmlsdGVyaW5nU3R5bGUiIHhtaTppZD0iX2N0N0VocGdURWVTRnRMb1ZlMi1zb1EiLz4NCisgICAgICAgIDxsYXlvdXRDb25zdHJhaW50IHhtaTp0eXBlPSJub3RhdGlvbjpCb3VuZHMiIHhtaTppZD0iX2N0N0VoNWdURWVTRnRMb1ZlMi1zb1EiLz4NCisgICAgICA8L2NoaWxkcmVuPg0KKyAgICAgIDxjaGlsZHJlbiB4bWk6dHlwZT0ibm90YXRpb246QmFzaWNDb21wYXJ0bWVudCIgeG1pOmlkPSJfY3Q3RWlKZ1RFZVNGdExvVmUyLXNvUSIgdmlzaWJsZT0iZmFsc2UiIHR5cGU9IjEwMTkiPg0KKyAgICAgICAgPHN0eWxlcyB4bWk6dHlwZT0ibm90YXRpb246VGl0bGVTdHlsZSIgeG1pOmlkPSJfY3Q3RWlaZ1RFZVNGdExvVmUyLXNvUSIvPg0KKyAgICAgICAgPHN0eWxlcyB4bWk6dHlwZT0ibm90YXRpb246U29ydGluZ1N0eWxlIiB4bWk6aWQ9Il9jdDdFaXBnVEVlU0Z0TG9WZTItc29RIi8+DQorICAgICAgICA8c3R5bGVzIHhtaTp0eXBlPSJub3RhdGlvbjpGaWx0ZXJpbmdTdHlsZSIgeG1pOmlkPSJfY3Q3RWk1Z1RFZVNGdExvVmUyLXNvUSIvPg0KKyAgICAgICAgPGxheW91dENvbnN0cmFpbnQgeG1pOnR5cGU9Im5vdGF0aW9uOkJvdW5kcyIgeG1pOmlkPSJfY3Q3RWpKZ1RFZVNGdExvVmUyLXNvUSIvPg0KKyAgICAgIDwvY2hpbGRyZW4+DQorICAgICAgPGVsZW1lbnQgeG1pOnR5cGU9InVtbDpTdGVyZW90eXBlIiBocmVmPSJTeXNNTC5wcm9maWxlLnVtbCNTeXNNTC1BY3Rpdml0aWVzLVByb2JhYmlsaXR5Ii8+DQorICAgICAgPGxheW91dENvbnN0cmFpbnQgeG1pOnR5cGU9Im5vdGF0aW9uOkJvdW5kcyIgeG1pOmlkPSJfY3Q3RWdaZ1RFZVNGdExvVmUyLXNvUSIgeD0iNjAwIiB5PSIxODAiIGhlaWdodD0iODEiLz4NCisgICAgPC9jaGlsZHJlbj4NCisgICAgPGNoaWxkcmVuIHhtaTp0eXBlPSJub3RhdGlvbjpTaGFwZSIgeG1pOmlkPSJfaXk5SkVKZ1RFZVNGdExvVmUyLXNvUSIgdHlwZT0iMTAzMSI+DQorICAgICAgPGNoaWxkcmVuIHhtaTp0eXBlPSJub3RhdGlvbjpEZWNvcmF0aW9uTm9kZSIgeG1pOmlkPSJfaXk5SkVwZ1RFZVNGdExvVmUyLXNvUSIgdHlwZT0iMTA4NCIvPg0KKyAgICAgIDxlbGVtZW50IHhtaTp0eXBlPSJ1bWw6Q2xhc3MiIGhyZWY9InBhdGhtYXA6Ly9VTUxfTUVUQU1PREVMUy9VTUwubWV0YW1vZGVsLnVtbCNBY3Rpdml0eUVkZ2UiLz4NCisgICAgICA8bGF5b3V0Q29uc3RyYWludCB4bWk6dHlwZT0ibm90YXRpb246Qm91bmRzIiB4bWk6aWQ9Il9peTlKRVpnVEVlU0Z0TG9WZTItc29RIiB4PSI0NjAiIHk9IjYwIiB3aWR0aD0iMjAxIi8+DQorICAgIDwvY2hpbGRyZW4+DQorICAgIDxjaGlsZHJlbiB4bWk6dHlwZT0ibm90YXRpb246U2hhcGUiIHhtaTppZD0iX2xZWmhVSmdURWVTRnRMb1ZlMi1zb1EiIHR5cGU9IjEwMzEiPg0KKyAgICAgIDxjaGlsZHJlbiB4bWk6dHlwZT0ibm90YXRpb246RGVjb3JhdGlvbk5vZGUiIHhtaTppZD0iX2xZWmhVcGdURWVTRnRMb1ZlMi1zb1EiIHR5cGU9IjEwODQiLz4NCisgICAgICA8ZWxlbWVudCB4bWk6dHlwZT0idW1sOkNsYXNzIiBocmVmPSJwYXRobWFwOi8vVU1MX01FVEFNT0RFTFMvVU1MLm1ldGFtb2RlbC51bWwjUGFyYW1ldGVyU2V0Ii8+DQorICAgICAgPGxheW91dENvbnN0cmFpbnQgeG1pOnR5cGU9Im5vdGF0aW9uOkJvdW5kcyIgeG1pOmlkPSJfbFlaaFVaZ1RFZVNGdExvVmUyLXNvUSIgeD0iNzAwIiB5PSI2MCIvPg0KKyAgICA8L2NoaWxkcmVuPg0KKyAgICA8Y2hpbGRyZW4geG1pOnR5cGU9Im5vdGF0aW9uOlNoYXBlIiB4bWk6aWQ9Il9mUk5yTUpnVUVlU0Z0TG9WZTItc29RIiB0eXBlPSIxMDI2Ij4NCisgICAgICA8Y2hpbGRyZW4geG1pOnR5cGU9Im5vdGF0aW9uOkRlY29yYXRpb25Ob2RlIiB4bWk6aWQ9Il9mUk9TUUpnVUVlU0Z0TG9WZTItc29RIiB0eXBlPSIxMDM0Ii8+DQorICAgICAgPGNoaWxkcmVuIHhtaTp0eXBlPSJub3RhdGlvbjpCYXNpY0NvbXBhcnRtZW50IiB4bWk6aWQ9Il9mUk9TUVpnVUVlU0Z0TG9WZTItc29RIiB2aXNpYmxlPSJmYWxzZSIgdHlwZT0iMTA3MSI+DQorICAgICAgICA8c3R5bGVzIHhtaTp0eXBlPSJub3RhdGlvbjpUaXRsZVN0eWxlIiB4bWk6aWQ9Il9mUk9TUXBnVUVlU0Z0TG9WZTItc29RIi8+DQorICAgICAgICA8c3R5bGVzIHhtaTp0eXBlPSJub3RhdGlvbjpTb3J0aW5nU3R5bGUiIHhtaTppZD0iX2ZST1NRNWdVRWVTRnRMb1ZlMi1zb1EiLz4NCisgICAgICAgIDxzdHlsZXMgeG1pOnR5cGU9Im5vdGF0aW9uOkZpbHRlcmluZ1N0eWxlIiB4bWk6aWQ9Il9mUk9TUkpnVUVlU0Z0TG9WZTItc29RIi8+DQorICAgICAgICA8bGF5b3V0Q29uc3RyYWludCB4bWk6dHlwZT0ibm90YXRpb246Qm91bmRzIiB4bWk6aWQ9Il9mUk9TUlpnVUVlU0Z0TG9WZTItc29RIi8+DQorICAgICAgPC9jaGlsZHJlbj4NCisgICAgICA8Y2hpbGRyZW4geG1pOnR5cGU9Im5vdGF0aW9uOkJhc2ljQ29tcGFydG1lbnQiIHhtaTppZD0iX2ZST1NScGdVRWVTRnRMb1ZlMi1zb1EiIHZpc2libGU9ImZhbHNlIiB0eXBlPSIxMDE5Ij4NCisgICAgICAgIDxzdHlsZXMgeG1pOnR5cGU9Im5vdGF0aW9uOlRpdGxlU3R5bGUiIHhtaTppZD0iX2ZST1NSNWdVRWVTRnRMb1ZlMi1zb1EiLz4NCisgICAgICAgIDxzdHlsZXMgeG1pOnR5cGU9Im5vdGF0aW9uOlNvcnRpbmdTdHlsZSIgeG1pOmlkPSJfZlJPU1NKZ1VFZVNGdExvVmUyLXNvUSIvPg0KKyAgICAgICAgPHN0eWxlcyB4bWk6dHlwZT0ibm90YXRpb246RmlsdGVyaW5nU3R5bGUiIHhtaTppZD0iX2ZST1NTWmdVRWVTRnRMb1ZlMi1zb1EiLz4NCisgICAgICAgIDxsYXlvdXRDb25zdHJhaW50IHhtaTp0eXBlPSJub3RhdGlvbjpCb3VuZHMiIHhtaTppZD0iX2ZST1NTcGdVRWVTRnRMb1ZlMi1zb1EiLz4NCisgICAgICA8L2NoaWxkcmVuPg0KKyAgICAgIDxlbGVtZW50IHhtaTp0eXBlPSJ1bWw6U3RlcmVvdHlwZSIgaHJlZj0iU3lzTUwucHJvZmlsZS51bWwjU3lzTUwtQWN0aXZpdGllcy1EaXNjcmV0ZSIvPg0KKyAgICAgIDxsYXlvdXRDb25zdHJhaW50IHhtaTp0eXBlPSJub3RhdGlvbjpCb3VuZHMiIHhtaTppZD0iX2ZSTnJNWmdVRWVTRnRMb1ZlMi1zb1EiIHg9IjM4MCIgeT0iMzIwIiBoZWlnaHQ9IjYxIi8+DQorICAgIDwvY2hpbGRyZW4+DQorICAgIDxjaGlsZHJlbiB4bWk6dHlwZT0ibm90YXRpb246U2hhcGUiIHhtaTppZD0iX2Yzb3lBSmdVRWVTRnRMb1ZlMi1zb1EiIHR5cGU9IjEwMjYiPg0KKyAgICAgIDxjaGlsZHJlbiB4bWk6dHlwZT0ibm90YXRpb246RGVjb3JhdGlvbk5vZGUiIHhtaTppZD0iX2YzcFpFSmdVRWVTRnRMb1ZlMi1zb1EiIHR5cGU9IjEwMzQiLz4NCisgICAgICA8Y2hpbGRyZW4geG1pOnR5cGU9Im5vdGF0aW9uOkJhc2ljQ29tcGFydG1lbnQiIHhtaTppZD0iX2YzcFpFWmdVRWVTRnRMb1ZlMi1zb1EiIHZpc2libGU9ImZhbHNlIiB0eXBlPSIxMDcxIj4NCisgICAgICAgIDxzdHlsZXMgeG1pOnR5cGU9Im5vdGF0aW9uOlRpdGxlU3R5bGUiIHhtaTppZD0iX2YzcFpFcGdVRWVTRnRMb1ZlMi1zb1EiLz4NCisgICAgICAgIDxzdHlsZXMgeG1pOnR5cGU9Im5vdGF0aW9uOlNvcnRpbmdTdHlsZSIgeG1pOmlkPSJfZjNwWkU1Z1VFZVNGdExvVmUyLXNvUSIvPg0KKyAgICAgICAgPHN0eWxlcyB4bWk6dHlwZT0ibm90YXRpb246RmlsdGVyaW5nU3R5bGUiIHhtaTppZD0iX2YzcFpGSmdVRWVTRnRMb1ZlMi1zb1EiLz4NCisgICAgICAgIDxsYXlvdXRDb25zdHJhaW50IHhtaTp0eXBlPSJub3RhdGlvbjpCb3VuZHMiIHhtaTppZD0iX2YzcFpGWmdVRWVTRnRMb1ZlMi1zb1EiLz4NCisgICAgICA8L2NoaWxkcmVuPg0KKyAgICAgIDxjaGlsZHJlbiB4bWk6dHlwZT0ibm90YXRpb246QmFzaWNDb21wYXJ0bWVudCIgeG1pOmlkPSJfZjNwWkZwZ1VFZVNGdExvVmUyLXNvUSIgdmlzaWJsZT0iZmFsc2UiIHR5cGU9IjEwMTkiPg0KKyAgICAgICAgPHN0eWxlcyB4bWk6dHlwZT0ibm90YXRpb246VGl0bGVTdHlsZSIgeG1pOmlkPSJfZjNwWkY1Z1VFZVNGdExvVmUyLXNvUSIvPg0KKyAgICAgICAgPHN0eWxlcyB4bWk6dHlwZT0ibm90YXRpb246U29ydGluZ1N0eWxlIiB4bWk6aWQ9Il9mM3BaR0pnVUVlU0Z0TG9WZTItc29RIi8+DQorICAgICAgICA8c3R5bGVzIHhtaTp0eXBlPSJub3RhdGlvbjpGaWx0ZXJpbmdTdHlsZSIgeG1pOmlkPSJfZjNwWkdaZ1VFZVNGdExvVmUyLXNvUSIvPg0KKyAgICAgICAgPGxheW91dENvbnN0cmFpbnQgeG1pOnR5cGU9Im5vdGF0aW9uOkJvdW5kcyIgeG1pOmlkPSJfZjNwWkdwZ1VFZVNGdExvVmUyLXNvUSIvPg0KKyAgICAgIDwvY2hpbGRyZW4+DQorICAgICAgPGVsZW1lbnQgeG1pOnR5cGU9InVtbDpTdGVyZW90eXBlIiBocmVmPSJTeXNNTC5wcm9maWxlLnVtbCNTeXNNTC1BY3Rpdml0aWVzLUNvbnRpbnVvdXMiLz4NCisgICAgICA8bGF5b3V0Q29uc3RyYWludCB4bWk6dHlwZT0ibm90YXRpb246Qm91bmRzIiB4bWk6aWQ9Il9mM295QVpnVUVlU0Z0TG9WZTItc29RIiB4PSIyNDAiIHk9IjMyMCIgaGVpZ2h0PSI2MSIvPg0KKyAgICA8L2NoaWxkcmVuPg0KKyAgICA8Y2hpbGRyZW4geG1pOnR5cGU9Im5vdGF0aW9uOlNoYXBlIiB4bWk6aWQ9Il95LWVnQUpnVUVlU0Z0TG9WZTItc29RIiB0eXBlPSIxMDI2Ij4NCisgICAgICA8Y2hpbGRyZW4geG1pOnR5cGU9Im5vdGF0aW9uOkRlY29yYXRpb25Ob2RlIiB4bWk6aWQ9Il95LWZIRUpnVUVlU0Z0TG9WZTItc29RIiB0eXBlPSIxMDM0Ii8+DQorICAgICAgPGNoaWxkcmVuIHhtaTp0eXBlPSJub3RhdGlvbjpCYXNpY0NvbXBhcnRtZW50IiB4bWk6aWQ9Il95LWZIRVpnVUVlU0Z0TG9WZTItc29RIiB2aXNpYmxlPSJmYWxzZSIgdHlwZT0iMTA3MSI+DQorICAgICAgICA8c3R5bGVzIHhtaTp0eXBlPSJub3RhdGlvbjpUaXRsZVN0eWxlIiB4bWk6aWQ9Il95LWZIRXBnVUVlU0Z0TG9WZTItc29RIi8+DQorICAgICAgICA8c3R5bGVzIHhtaTp0eXBlPSJub3RhdGlvbjpTb3J0aW5nU3R5bGUiIHhtaTppZD0iX3ktZkhFNWdVRWVTRnRMb1ZlMi1zb1EiLz4NCisgICAgICAgIDxzdHlsZXMgeG1pOnR5cGU9Im5vdGF0aW9uOkZpbHRlcmluZ1N0eWxlIiB4bWk6aWQ9Il95LWZIRkpnVUVlU0Z0TG9WZTItc29RIi8+DQorICAgICAgICA8bGF5b3V0Q29uc3RyYWludCB4bWk6dHlwZT0ibm90YXRpb246Qm91bmRzIiB4bWk6aWQ9Il95LWZIRlpnVUVlU0Z0TG9WZTItc29RIi8+DQorICAgICAgPC9jaGlsZHJlbj4NCisgICAgICA8Y2hpbGRyZW4geG1pOnR5cGU9Im5vdGF0aW9uOkJhc2ljQ29tcGFydG1lbnQiIHhtaTppZD0iX3ktZkhGcGdVRWVTRnRMb1ZlMi1zb1EiIHZpc2libGU9ImZhbHNlIiB0eXBlPSIxMDE5Ij4NCisgICAgICAgIDxzdHlsZXMgeG1pOnR5cGU9Im5vdGF0aW9uOlRpdGxlU3R5bGUiIHhtaTppZD0iX3ktZkhGNWdVRWVTRnRMb1ZlMi1zb1EiLz4NCisgICAgICAgIDxzdHlsZXMgeG1pOnR5cGU9Im5vdGF0aW9uOlNvcnRpbmdTdHlsZSIgeG1pOmlkPSJfeS1mSEdKZ1VFZVNGdExvVmUyLXNvUSIvPg0KKyAgICAgICAgPHN0eWxlcyB4bWk6dHlwZT0ibm90YXRpb246RmlsdGVyaW5nU3R5bGUiIHhtaTppZD0iX3ktZkhHWmdVRWVTRnRMb1ZlMi1zb1EiLz4NCisgICAgICAgIDxsYXlvdXRDb25zdHJhaW50IHhtaTp0eXBlPSJub3RhdGlvbjpCb3VuZHMiIHhtaTppZD0iX3ktZkhHcGdVRWVTRnRMb1ZlMi1zb1EiLz4NCisgICAgICA8L2NoaWxkcmVuPg0KKyAgICAgIDxlbGVtZW50IHhtaTp0eXBlPSJ1bWw6U3RlcmVvdHlwZSIgaHJlZj0iU3lzTUwucHJvZmlsZS51bWwjU3lzTUwtQWN0aXZpdGllcy1Ob0J1ZmZlciIvPg0KKyAgICAgIDxsYXlvdXRDb25zdHJhaW50IHhtaTp0eXBlPSJub3RhdGlvbjpCb3VuZHMiIHhtaTppZD0iX3ktZWdBWmdVRWVTRnRMb1ZlMi1zb1EiIHg9Ijg4MCIgeT0iMTgwIiBoZWlnaHQ9IjYxIi8+DQorICAgIDwvY2hpbGRyZW4+DQorICAgIDxjaGlsZHJlbiB4bWk6dHlwZT0ibm90YXRpb246U2hhcGUiIHhtaTppZD0iX3ktbzRFSmdVRWVTRnRMb1ZlMi1zb1EiIHR5cGU9IjEwMzEiPg0KKyAgICAgIDxjaGlsZHJlbiB4bWk6dHlwZT0ibm90YXRpb246RGVjb3JhdGlvbk5vZGUiIHhtaTppZD0iX3ktcGZJSmdVRWVTRnRMb1ZlMi1zb1EiIHR5cGU9IjEwODQiLz4NCisgICAgICA8ZWxlbWVudCB4bWk6dHlwZT0idW1sOkNsYXNzIiBocmVmPSJwYXRobWFwOi8vVU1MX01FVEFNT0RFTFMvVU1MLm1ldGFtb2RlbC51bWwjT2JqZWN0Tm9kZSIvPg0KKyAgICAgIDxsYXlvdXRDb25zdHJhaW50IHhtaTp0eXBlPSJub3RhdGlvbjpCb3VuZHMiIHhtaTppZD0iX3ktbzRFWmdVRWVTRnRMb1ZlMi1zb1EiIHg9Ijg4MCIgeT0iNjAiIHdpZHRoPSIyNDEiLz4NCisgICAgPC9jaGlsZHJlbj4NCisgICAgPGNoaWxkcmVuIHhtaTp0eXBlPSJub3RhdGlvbjpTaGFwZSIgeG1pOmlkPSJfNHA5Y0lKZ1VFZVNGdExvVmUyLXNvUSIgdHlwZT0iMTAyNiI+DQorICAgICAgPGNoaWxkcmVuIHhtaTp0eXBlPSJub3RhdGlvbjpEZWNvcmF0aW9uTm9kZSIgeG1pOmlkPSJfNHAtRE1KZ1VFZVNGdExvVmUyLXNvUSIgdHlwZT0iMTAzNCIvPg0KKyAgICAgIDxjaGlsZHJlbiB4bWk6dHlwZT0ibm90YXRpb246QmFzaWNDb21wYXJ0bWVudCIgeG1pOmlkPSJfNHAtRE1aZ1VFZVNGdExvVmUyLXNvUSIgdmlzaWJsZT0iZmFsc2UiIHR5cGU9IjEwNzEiPg0KKyAgICAgICAgPHN0eWxlcyB4bWk6dHlwZT0ibm90YXRpb246VGl0bGVTdHlsZSIgeG1pOmlkPSJfNHAtRE1wZ1VFZVNGdExvVmUyLXNvUSIvPg0KKyAgICAgICAgPHN0eWxlcyB4bWk6dHlwZT0ibm90YXRpb246U29ydGluZ1N0eWxlIiB4bWk6aWQ9Il80cC1ETTVnVUVlU0Z0TG9WZTItc29RIi8+DQorICAgICAgICA8c3R5bGVzIHhtaTp0eXBlPSJub3RhdGlvbjpGaWx0ZXJpbmdTdHlsZSIgeG1pOmlkPSJfNHAtRE5KZ1VFZVNGdExvVmUyLXNvUSIvPg0KKyAgICAgICAgPGxheW91dENvbnN0cmFpbnQgeG1pOnR5cGU9Im5vdGF0aW9uOkJvdW5kcyIgeG1pOmlkPSJfNHAtRE5aZ1VFZVNGdExvVmUyLXNvUSIvPg0KKyAgICAgIDwvY2hpbGRyZW4+DQorICAgICAgPGNoaWxkcmVuIHhtaTp0eXBlPSJub3RhdGlvbjpCYXNpY0NvbXBhcnRtZW50IiB4bWk6aWQ9Il80cC1ETnBnVUVlU0Z0TG9WZTItc29RIiB2aXNpYmxlPSJmYWxzZSIgdHlwZT0iMTAxOSI+DQorICAgICAgICA8c3R5bGVzIHhtaTp0eXBlPSJub3RhdGlvbjpUaXRsZVN0eWxlIiB4bWk6aWQ9Il80cC1ETjVnVUVlU0Z0TG9WZTItc29RIi8+DQorICAgICAgICA8c3R5bGVzIHhtaTp0eXBlPSJub3RhdGlvbjpTb3J0aW5nU3R5bGUiIHhtaTppZD0iXzRwLURPSmdVRWVTRnRMb1ZlMi1zb1EiLz4NCisgICAgICAgIDxzdHlsZXMgeG1pOnR5cGU9Im5vdGF0aW9uOkZpbHRlcmluZ1N0eWxlIiB4bWk6aWQ9Il80cC1ET1pnVUVlU0Z0TG9WZTItc29RIi8+DQorICAgICAgICA8bGF5b3V0Q29uc3RyYWludCB4bWk6dHlwZT0ibm90YXRpb246Qm91bmRzIiB4bWk6aWQ9Il80cC1ET3BnVUVlU0Z0TG9WZTItc29RIi8+DQorICAgICAgPC9jaGlsZHJlbj4NCisgICAgICA8ZWxlbWVudCB4bWk6dHlwZT0idW1sOlN0ZXJlb3R5cGUiIGhyZWY9IlN5c01MLnByb2ZpbGUudW1sI1N5c01MLUFjdGl2aXRpZXMtT3ZlcndyaXRlIi8+DQorICAgICAgPGxheW91dENvbnN0cmFpbnQgeG1pOnR5cGU9Im5vdGF0aW9uOkJvdW5kcyIgeG1pOmlkPSJfNHA5Y0laZ1VFZVNGdExvVmUyLXNvUSIgeD0iMTAyMCIgeT0iMTgwIiBoZWlnaHQ9IjYxIi8+DQorICAgIDwvY2hpbGRyZW4+DQorICAgIDxzdHlsZXMgeG1pOnR5cGU9Im5vdGF0aW9uOlN0cmluZ1ZhbHVlU3R5bGUiIHhtaTppZD0iX1Rmck1RWmdURWVTRnRMb1ZlMi1zb1EiIG5hbWU9ImRpYWdyYW1fY29tcGF0aWJpbGl0eV92ZXJzaW9uIiBzdHJpbmdWYWx1ZT0iMS4wLjAiLz4NCisgICAgPHN0eWxlcyB4bWk6dHlwZT0ibm90YXRpb246RGlhZ3JhbVN0eWxlIiB4bWk6aWQ9Il9UZnJNUXBnVEVlU0Z0TG9WZTItc29RIi8+DQorICAgIDxzdHlsZXMgeG1pOnR5cGU9InN0eWxlOlBhcHlydXNWaWV3U3R5bGUiIHhtaTppZD0iX1Rmck1RNWdURWVTRnRMb1ZlMi1zb1EiPg0KKyAgICAgIDxvd25lciB4bWk6dHlwZT0idW1sOlBhY2thZ2UiIGhyZWY9IlN5c01MLnByb2ZpbGUudW1sI1N5c01MLUFjdGl2aXRpZXMiLz4NCisgICAgPC9zdHlsZXM+DQorICAgIDxlbGVtZW50IHhtaTp0eXBlPSJ1bWw6UGFja2FnZSIgaHJlZj0iU3lzTUwucHJvZmlsZS51bWwjU3lzTUwtQWN0aXZpdGllcyIvPg0KKyAgICA8ZWRnZXMgeG1pOnR5cGU9Im5vdGF0aW9uOkNvbm5lY3RvciIgeG1pOmlkPSJfWUE5bUtaZ1RFZVNGdExvVmUyLXNvUSIgdHlwZT0iMTAxMyIgc291cmNlPSJfWUF6MUlKZ1RFZVNGdExvVmUyLXNvUSIgdGFyZ2V0PSJfWUE5bUlKZ1RFZVNGdExvVmUyLXNvUSI+DQorICAgICAgPHN0eWxlcyB4bWk6dHlwZT0ibm90YXRpb246Rm9udFN0eWxlIiB4bWk6aWQ9Il9ZQTltS3BnVEVlU0Z0TG9WZTItc29RIi8+DQorICAgICAgPGVsZW1lbnQgeG1pOnR5cGU9InVtbDpFeHRlbnNpb24iIGhyZWY9IlN5c01MLnByb2ZpbGUudW1sI1N5c01MLUFjdGl2aXRpZXMtRV9leHRlbnNpb25fT3B0aW9uYWxfYmFzZV9QYXJhbWV0ZXIiLz4NCisgICAgICA8YmVuZHBvaW50cyB4bWk6dHlwZT0ibm90YXRpb246UmVsYXRpdmVCZW5kcG9pbnRzIiB4bWk6aWQ9Il9ZQTltSzVnVEVlU0Z0TG9WZTItc29RIiBwb2ludHM9Ils4LCAwLCAtNzUsIDc4XSRbOCwgLTc4LCAtNzUsIDBdIi8+DQorICAgICAgPHNvdXJjZUFuY2hvciB4bWk6dHlwZT0ibm90YXRpb246SWRlbnRpdHlBbmNob3IiIHhtaTppZD0iX1lWNEdNSmdURWVTRnRMb1ZlMi1zb1EiIGlkPSIoMC40OCwwLjApIi8+DQorICAgICAgPHRhcmdldEFuY2hvciB4bWk6dHlwZT0ibm90YXRpb246SWRlbnRpdHlBbmNob3IiIHhtaTppZD0iX1lWNEdNWmdURWVTRnRMb1ZlMi1zb1EiIGlkPSIoMC41MiwxLjApIi8+DQorICAgIDwvZWRnZXM+DQorICAgIDxlZGdlcyB4bWk6dHlwZT0ibm90YXRpb246Q29ubmVjdG9yIiB4bWk6aWQ9Il9hbThKNEpnVEVlU0Z0TG9WZTItc29RIiB0eXBlPSIxMDEzIiBzb3VyY2U9Il9hbXpuQUpnVEVlU0Z0TG9WZTItc29RIiB0YXJnZXQ9Il9ZQTltSUpnVEVlU0Z0TG9WZTItc29RIj4NCisgICAgICA8c3R5bGVzIHhtaTp0eXBlPSJub3RhdGlvbjpGb250U3R5bGUiIHhtaTppZD0iX2FtOEo0WmdURWVTRnRMb1ZlMi1zb1EiLz4NCisgICAgICA8ZWxlbWVudCB4bWk6dHlwZT0idW1sOkV4dGVuc2lvbiIgaHJlZj0iU3lzTUwucHJvZmlsZS51bWwjU3lzTUwtQWN0aXZpdGllcy1FX2V4dGVuc2lvbl9SYXRlX2Jhc2VfUGFyYW1ldGVyIi8+DQorICAgICAgPGJlbmRwb2ludHMgeG1pOnR5cGU9Im5vdGF0aW9uOlJlbGF0aXZlQmVuZHBvaW50cyIgeG1pOmlkPSJfYW04SjRwZ1RFZVNGdExvVmUyLXNvUSIgcG9pbnRzPSJbMjAsIC04LCAtNywgNzBdJFsyMCwgLTc4LCAtNywgMF0iLz4NCisgICAgICA8c291cmNlQW5jaG9yIHhtaTp0eXBlPSJub3RhdGlvbjpJZGVudGl0eUFuY2hvciIgeG1pOmlkPSJfZFB2WUlKZ1RFZVNGdExvVmUyLXNvUSIgaWQ9IigwLjAsMC4xKSIvPg0KKyAgICAgIDx0YXJnZXRBbmNob3IgeG1pOnR5cGU9Im5vdGF0aW9uOklkZW50aXR5QW5jaG9yIiB4bWk6aWQ9Il9kUHZZSVpnVEVlU0Z0TG9WZTItc29RIiBpZD0iKDAuNzIsMS4wKSIvPg0KKyAgICA8L2VkZ2VzPg0KKyAgICA8ZWRnZXMgeG1pOnR5cGU9Im5vdGF0aW9uOkNvbm5lY3RvciIgeG1pOmlkPSJfaXpHVEJwZ1RFZVNGdExvVmUyLXNvUSIgdHlwZT0iMTAxMyIgc291cmNlPSJfYW16bkFKZ1RFZVNGdExvVmUyLXNvUSIgdGFyZ2V0PSJfaXk5SkVKZ1RFZVNGdExvVmUyLXNvUSI+DQorICAgICAgPHN0eWxlcyB4bWk6dHlwZT0ibm90YXRpb246Rm9udFN0eWxlIiB4bWk6aWQ9Il9pekdUQjVnVEVlU0Z0TG9WZTItc29RIi8+DQorICAgICAgPGVsZW1lbnQgeG1pOnR5cGU9InVtbDpFeHRlbnNpb24iIGhyZWY9IlN5c01MLnByb2ZpbGUudW1sI1N5c01MLUFjdGl2aXRpZXMtRV9leHRlbnNpb25fUmF0ZV9iYXNlX0FjdGl2aXR5RWRnZSIvPg0KKyAgICAgIDxiZW5kcG9pbnRzIHhtaTp0eXBlPSJub3RhdGlvbjpSZWxhdGl2ZUJlbmRwb2ludHMiIHhtaTppZD0iX2l6R1RDSmdURWVTRnRMb1ZlMi1zb1EiIHBvaW50cz0iWy01MCwgLTMzLCAzMDAsIDE5N10kWy0zNTAsIC0yMzAsIDAsIDBdIi8+DQorICAgICAgPHNvdXJjZUFuY2hvciB4bWk6dHlwZT0ibm90YXRpb246SWRlbnRpdHlBbmNob3IiIHhtaTppZD0iX2pKb2pzSmdURWVTRnRMb1ZlMi1zb1EiIGlkPSIoMC44LDAuMCkiLz4NCisgICAgICA8dGFyZ2V0QW5jaG9yIHhtaTp0eXBlPSJub3RhdGlvbjpJZGVudGl0eUFuY2hvciIgeG1pOmlkPSJfakpvanNaZ1RFZVNGdExvVmUyLXNvUSIgaWQ9IigwLjAzLDEuMCkiLz4NCisgICAgPC9lZGdlcz4NCisgICAgPGVkZ2VzIHhtaTp0eXBlPSJub3RhdGlvbjpDb25uZWN0b3IiIHhtaTppZD0iX2o3OV9rSmdURWVTRnRMb1ZlMi1zb1EiIHR5cGU9IjEwMTMiIHNvdXJjZT0iX2N0N0VnSmdURWVTRnRMb1ZlMi1zb1EiIHRhcmdldD0iX2l5OUpFSmdURWVTRnRMb1ZlMi1zb1EiPg0KKyAgICAgIDxzdHlsZXMgeG1pOnR5cGU9Im5vdGF0aW9uOkZvbnRTdHlsZSIgeG1pOmlkPSJfajc5X2taZ1RFZVNGdExvVmUyLXNvUSIvPg0KKyAgICAgIDxlbGVtZW50IHhtaTp0eXBlPSJ1bWw6RXh0ZW5zaW9uIiBocmVmPSJTeXNNTC5wcm9maWxlLnVtbCNTeXNNTC1BY3Rpdml0aWVzLUVfZXh0ZW5zaW9uX1Byb2JhYmlsaXR5X2Jhc2VfQWN0aXZpdHlFZGdlIi8+DQorICAgICAgPGJlbmRwb2ludHMgeG1pOnR5cGU9Im5vdGF0aW9uOlJlbGF0aXZlQmVuZHBvaW50cyIgeG1pOmlkPSJfajc5X2twZ1RFZVNGdExvVmUyLXNvUSIgcG9pbnRzPSJbLTUwLCAtMzgsIDE2MywgMTIyXSRbLTE4MCwgLTEzNSwgMzMsIDI1XSIvPg0KKyAgICAgIDxzb3VyY2VBbmNob3IgeG1pOnR5cGU9Im5vdGF0aW9uOklkZW50aXR5QW5jaG9yIiB4bWk6aWQ9Il9tcTFaa0pnVEVlU0Z0TG9WZTItc29RIiBpZD0iKDAuMCwwLjApIi8+DQorICAgICAgPHRhcmdldEFuY2hvciB4bWk6dHlwZT0ibm90YXRpb246SWRlbnRpdHlBbmNob3IiIHhtaTppZD0iX21xMVprWmdURWVTRnRMb1ZlMi1zb1EiIGlkPSIoMC43MywxLjApIi8+DQorICAgIDwvZWRnZXM+DQorICAgIDxlZGdlcyB4bWk6dHlwZT0ibm90YXRpb246Q29ubmVjdG9yIiB4bWk6aWQ9Il9sWVpoV1pnVEVlU0Z0TG9WZTItc29RIiB0eXBlPSIxMDEzIiBzb3VyY2U9Il9jdDdFZ0pnVEVlU0Z0TG9WZTItc29RIiB0YXJnZXQ9Il9sWVpoVUpnVEVlU0Z0TG9WZTItc29RIj4NCisgICAgICA8c3R5bGVzIHhtaTp0eXBlPSJub3RhdGlvbjpGb250U3R5bGUiIHhtaTppZD0iX2xZWmhXcGdURWVTRnRMb1ZlMi1zb1EiLz4NCisgICAgICA8ZWxlbWVudCB4bWk6dHlwZT0idW1sOkV4dGVuc2lvbiIgaHJlZj0iU3lzTUwucHJvZmlsZS51bWwjU3lzTUwtQWN0aXZpdGllcy1FX2V4dGVuc2lvbl9Qcm9iYWJpbGl0eV9iYXNlX1BhcmFtZXRlclNldCIvPg0KKyAgICAgIDxiZW5kcG9pbnRzIHhtaTp0eXBlPSJub3RhdGlvbjpSZWxhdGl2ZUJlbmRwb2ludHMiIHhtaTppZD0iX2xZWmhXNWdURWVTRnRMb1ZlMi1zb1EiIHBvaW50cz0iWzc3LCAwLCA0OSwgNzBdJFs3NywgLTcwLCA0OSwgMF0iLz4NCisgICAgICA8c291cmNlQW5jaG9yIHhtaTp0eXBlPSJub3RhdGlvbjpJZGVudGl0eUFuY2hvciIgeG1pOmlkPSJfbHRZUzBKZ1RFZVNGdExvVmUyLXNvUSIgaWQ9IigwLjM4LDAuMCkiLz4NCisgICAgICA8dGFyZ2V0QW5jaG9yIHhtaTp0eXBlPSJub3RhdGlvbjpJZGVudGl0eUFuY2hvciIgeG1pOmlkPSJfbHRZUzBaZ1RFZVNGdExvVmUyLXNvUSIgaWQ9IigwLjExLDEuMCkiLz4NCisgICAgPC9lZGdlcz4NCisgICAgPGVkZ2VzIHhtaTp0eXBlPSJub3RhdGlvbjpDb25uZWN0b3IiIHhtaTppZD0iX2ZSWGNNSmdVRWVTRnRMb1ZlMi1zb1EiIHR5cGU9IjQwMDIiIHNvdXJjZT0iX2ZSTnJNSmdVRWVTRnRMb1ZlMi1zb1EiIHRhcmdldD0iX2Ftem5BSmdURWVTRnRMb1ZlMi1zb1EiIHJvdXRpbmc9IlRyZWUiPg0KKyAgICAgIDxjaGlsZHJlbiB4bWk6dHlwZT0ibm90YXRpb246RGVjb3JhdGlvbk5vZGUiIHhtaTppZD0iX2ZSWGNNNWdVRWVTRnRMb1ZlMi1zb1EiIHR5cGU9IjYwMDciPg0KKyAgICAgICAgPGxheW91dENvbnN0cmFpbnQgeG1pOnR5cGU9Im5vdGF0aW9uOkxvY2F0aW9uIiB4bWk6aWQ9Il9mUllEUUpnVUVlU0Z0TG9WZTItc29RIiB4PSItNzEiIHk9IjYiLz4NCisgICAgICA8L2NoaWxkcmVuPg0KKyAgICAgIDxzdHlsZXMgeG1pOnR5cGU9Im5vdGF0aW9uOkZvbnRTdHlsZSIgeG1pOmlkPSJfZlJYY01aZ1VFZVNGdExvVmUyLXNvUSIvPg0KKyAgICAgIDxlbGVtZW50IHhtaTp0eXBlPSJ1bWw6R2VuZXJhbGl6YXRpb24iIGhyZWY9IlN5c01MLnByb2ZpbGUudW1sI1N5c01MLUFjdGl2aXRpZXMtRGlzY3JldGUtZ2VuZXJhbGl6YXRpb24iLz4NCisgICAgICA8YmVuZHBvaW50cyB4bWk6dHlwZT0ibm90YXRpb246UmVsYXRpdmVCZW5kcG9pbnRzIiB4bWk6aWQ9Il9mUlhjTXBnVUVlU0Z0TG9WZTItc29RIiBwb2ludHM9IlszNywgMCwgNzAsIDk5XSRbMzcsIC02NywgNzAsIDMyXSRbMzcsIC02NywgNzAsIDMyXSRbMzcsIC05OSwgNzAsIDBdIi8+DQorICAgICAgPHNvdXJjZUFuY2hvciB4bWk6dHlwZT0ibm90YXRpb246SWRlbnRpdHlBbmNob3IiIHhtaTppZD0iX2ctUWIwSmdVRWVTRnRMb1ZlMi1zb1EiIGlkPSIoMC42LDAuMCkiLz4NCisgICAgICA8dGFyZ2V0QW5jaG9yIHhtaTp0eXBlPSJub3RhdGlvbjpJZGVudGl0eUFuY2hvciIgeG1pOmlkPSJfZy1SQzRKZ1VFZVNGdExvVmUyLXNvUSIgaWQ9IigwLjcwNzA3MDcwNzA3MDcwNzEsMS4wKSIvPg0KKyAgICA8L2VkZ2VzPg0KKyAgICA8ZWRnZXMgeG1pOnR5cGU9Im5vdGF0aW9uOkNvbm5lY3RvciIgeG1pOmlkPSJfZjN3dDBKZ1VFZVNGdExvVmUyLXNvUSIgdHlwZT0iNDAwMiIgc291cmNlPSJfZjNveUFKZ1VFZVNGdExvVmUyLXNvUSIgdGFyZ2V0PSJfYW16bkFKZ1RFZVNGdExvVmUyLXNvUSIgcm91dGluZz0iVHJlZSI+DQorICAgICAgPGNoaWxkcmVuIHhtaTp0eXBlPSJub3RhdGlvbjpEZWNvcmF0aW9uTm9kZSIgeG1pOmlkPSJfZjN4VTRKZ1VFZVNGdExvVmUyLXNvUSIgdHlwZT0iNjAwNyI+DQorICAgICAgICA8bGF5b3V0Q29uc3RyYWludCB4bWk6dHlwZT0ibm90YXRpb246TG9jYXRpb24iIHhtaTppZD0iX2YzeFU0WmdVRWVTRnRMb1ZlMi1zb1EiIHk9IjYwIi8+DQorICAgICAgPC9jaGlsZHJlbj4NCisgICAgICA8c3R5bGVzIHhtaTp0eXBlPSJub3RhdGlvbjpGb250U3R5bGUiIHhtaTppZD0iX2Yzd3QwWmdVRWVTRnRMb1ZlMi1zb1EiLz4NCisgICAgICA8ZWxlbWVudCB4bWk6dHlwZT0idW1sOkdlbmVyYWxpemF0aW9uIiBocmVmPSJTeXNNTC5wcm9maWxlLnVtbCNTeXNNTC1BY3Rpdml0aWVzLUNvbnRpbnVvdXMtZ2VuZXJhbGl6YXRpb24iLz4NCisgICAgICA8YmVuZHBvaW50cyB4bWk6dHlwZT0ibm90YXRpb246UmVsYXRpdmVCZW5kcG9pbnRzIiB4bWk6aWQ9Il9mM3d0MHBnVUVlU0Z0TG9WZTItc29RIiBwb2ludHM9IlsyMCwgMCwgMjAsIDk5XSRbMjAsIC02NywgMjAsIDMyXSRbMjAsIC02NywgMjAsIDMyXSRbMjAsIC05OSwgMjAsIDBdIi8+DQorICAgICAgPHNvdXJjZUFuY2hvciB4bWk6dHlwZT0ibm90YXRpb246SWRlbnRpdHlBbmNob3IiIHhtaTppZD0iX2dmaWZnSmdVRWVTRnRMb1ZlMi1zb1EiIGlkPSIoMC44LDAuMCkiLz4NCisgICAgICA8dGFyZ2V0QW5jaG9yIHhtaTp0eXBlPSJub3RhdGlvbjpJZGVudGl0eUFuY2hvciIgeG1pOmlkPSJfZ2ZpZmdaZ1VFZVNGdExvVmUyLXNvUSIgaWQ9IigwLjEwMTAxMDEwMTAxMDEwMTAxLDEuMCkiLz4NCisgICAgPC9lZGdlcz4NCisgICAgPGVkZ2VzIHhtaTp0eXBlPSJub3RhdGlvbjpDb25uZWN0b3IiIHhtaTppZD0iX3kteUNBSmdVRWVTRnRMb1ZlMi1zb1EiIHR5cGU9IjEwMTMiIHNvdXJjZT0iX3ktZWdBSmdVRWVTRnRMb1ZlMi1zb1EiIHRhcmdldD0iX3ktbzRFSmdVRWVTRnRMb1ZlMi1zb1EiPg0KKyAgICAgIDxzdHlsZXMgeG1pOnR5cGU9Im5vdGF0aW9uOkZvbnRTdHlsZSIgeG1pOmlkPSJfeS15Q0FaZ1VFZVNGdExvVmUyLXNvUSIvPg0KKyAgICAgIDxlbGVtZW50IHhtaTp0eXBlPSJ1bWw6RXh0ZW5zaW9uIiBocmVmPSJTeXNNTC5wcm9maWxlLnVtbCNTeXNNTC1BY3Rpdml0aWVzLUVfZXh0ZW5zaW9uX05vQnVmZmVyX2Jhc2VfT2JqZWN0Tm9kZSIvPg0KKyAgICAgIDxiZW5kcG9pbnRzIHhtaTp0eXBlPSJub3RhdGlvbjpSZWxhdGl2ZUJlbmRwb2ludHMiIHhtaTppZD0iX3kteUNBcGdVRWVTRnRMb1ZlMi1zb1EiIHBvaW50cz0iWzcsIDAsIC02NywgNzBdJFs3LCAtNzAsIC02NywgMF0iLz4NCisgICAgICA8c291cmNlQW5jaG9yIHhtaTp0eXBlPSJub3RhdGlvbjpJZGVudGl0eUFuY2hvciIgeG1pOmlkPSJfeldVWVFKZ1VFZVNGdExvVmUyLXNvUSIgaWQ9IigwLjUzLDAuMCkiLz4NCisgICAgICA8dGFyZ2V0QW5jaG9yIHhtaTp0eXBlPSJub3RhdGlvbjpJZGVudGl0eUFuY2hvciIgeG1pOmlkPSJfeldVWVFaZ1VFZVNGdExvVmUyLXNvUSIgaWQ9IigwLjUzLDEuMCkiLz4NCisgICAgPC9lZGdlcz4NCisgICAgPGVkZ2VzIHhtaTp0eXBlPSJub3RhdGlvbjpDb25uZWN0b3IiIHhtaTppZD0iXzRxR21FSmdVRWVTRnRMb1ZlMi1zb1EiIHR5cGU9IjEwMTMiIHNvdXJjZT0iXzRwOWNJSmdVRWVTRnRMb1ZlMi1zb1EiIHRhcmdldD0iX3ktbzRFSmdVRWVTRnRMb1ZlMi1zb1EiPg0KKyAgICAgIDxzdHlsZXMgeG1pOnR5cGU9Im5vdGF0aW9uOkZvbnRTdHlsZSIgeG1pOmlkPSJfNHFHbUVaZ1VFZVNGdExvVmUyLXNvUSIvPg0KKyAgICAgIDxlbGVtZW50IHhtaTp0eXBlPSJ1bWw6RXh0ZW5zaW9uIiBocmVmPSJTeXNNTC5wcm9maWxlLnVtbCNTeXNNTC1BY3Rpdml0aWVzLUVfZXh0ZW5zaW9uX092ZXJ3cml0ZV9iYXNlX09iamVjdE5vZGUiLz4NCisgICAgICA8YmVuZHBvaW50cyB4bWk6dHlwZT0ibm90YXRpb246UmVsYXRpdmVCZW5kcG9pbnRzIiB4bWk6aWQ9Il80cUdtRXBnVUVlU0Z0TG9WZTItc29RIiBwb2ludHM9Ils0MCwgLTYsIC00OCwgNzBdJFs0MCwgLTc2LCAtNDgsIDBdIi8+DQorICAgICAgPHNvdXJjZUFuY2hvciB4bWk6dHlwZT0ibm90YXRpb246SWRlbnRpdHlBbmNob3IiIHhtaTppZD0iXzVQLTZVSmdVRWVTRnRMb1ZlMi1zb1EiIGlkPSIoMC4wLDAuMSkiLz4NCisgICAgICA8dGFyZ2V0QW5jaG9yIHhtaTp0eXBlPSJub3RhdGlvbjpJZGVudGl0eUFuY2hvciIgeG1pOmlkPSJfNVBfaFlKZ1VFZVNGdExvVmUyLXNvUSIgaWQ9IigwLjk1LDEuMCkiLz4NCisgICAgPC9lZGdlcz4NCisgIDwvbm90YXRpb246RGlhZ3JhbT4NCisgIDxub3RhdGlvbjpEaWFncmFtIHhtaTppZD0iX2dmS1BNSm84RWVTRnRMb1ZlMi1zb1EiIHR5cGU9IlBhcHlydXNVTUxQcm9maWxlRGlhZ3JhbSIgbmFtZT0iQWxsb2NhdGlvbiBEaWFncmFtIiBtZWFzdXJlbWVudFVuaXQ9IlBpeGVsIj4NCisgICAgPGNoaWxkcmVuIHhtaTp0eXBlPSJub3RhdGlvbjpTaGFwZSIgeG1pOmlkPSJfZzJYMVVKbzhFZVNGdExvVmUyLXNvUSIgdHlwZT0iMTAyNiI+DQorICAgICAgPGNoaWxkcmVuIHhtaTp0eXBlPSJub3RhdGlvbjpEZWNvcmF0aW9uTm9kZSIgeG1pOmlkPSJfZzJYMVVwbzhFZVNGdExvVmUyLXNvUSIgdHlwZT0iMTAzNCIvPg0KKyAgICAgIDxjaGlsZHJlbiB4bWk6dHlwZT0ibm90YXRpb246QmFzaWNDb21wYXJ0bWVudCIgeG1pOmlkPSJfZzJYMVU1bzhFZVNGdExvVmUyLXNvUSIgdmlzaWJsZT0iZmFsc2UiIHR5cGU9IjEwNzEiPg0KKyAgICAgICAgPHN0eWxlcyB4bWk6dHlwZT0ibm90YXRpb246VGl0bGVTdHlsZSIgeG1pOmlkPSJfZzJYMVZKbzhFZVNGdExvVmUyLXNvUSIvPg0KKyAgICAgICAgPHN0eWxlcyB4bWk6dHlwZT0ibm90YXRpb246U29ydGluZ1N0eWxlIiB4bWk6aWQ9Il9nMlgxVlpvOEVlU0Z0TG9WZTItc29RIi8+DQorICAgICAgICA8c3R5bGVzIHhtaTp0eXBlPSJub3RhdGlvbjpGaWx0ZXJpbmdTdHlsZSIgeG1pOmlkPSJfZzJYMVZwbzhFZVNGdExvVmUyLXNvUSIvPg0KKyAgICAgICAgPGxheW91dENvbnN0cmFpbnQgeG1pOnR5cGU9Im5vdGF0aW9uOkJvdW5kcyIgeG1pOmlkPSJfZzJYMVY1bzhFZVNGdExvVmUyLXNvUSIvPg0KKyAgICAgIDwvY2hpbGRyZW4+DQorICAgICAgPGNoaWxkcmVuIHhtaTp0eXBlPSJub3RhdGlvbjpCYXNpY0NvbXBhcnRtZW50IiB4bWk6aWQ9Il9nMlgxV0pvOEVlU0Z0TG9WZTItc29RIiB2aXNpYmxlPSJmYWxzZSIgdHlwZT0iMTAxOSI+DQorICAgICAgICA8c3R5bGVzIHhtaTp0eXBlPSJub3RhdGlvbjpUaXRsZVN0eWxlIiB4bWk6aWQ9Il9nMlgxV1pvOEVlU0Z0TG9WZTItc29RIi8+DQorICAgICAgICA8c3R5bGVzIHhtaTp0eXBlPSJub3RhdGlvbjpTb3J0aW5nU3R5bGUiIHhtaTppZD0iX2cyWDFXcG84RWVTRnRMb1ZlMi1zb1EiLz4NCisgICAgICAgIDxzdHlsZXMgeG1pOnR5cGU9Im5vdGF0aW9uOkZpbHRlcmluZ1N0eWxlIiB4bWk6aWQ9Il9nMlgxVzVvOEVlU0Z0TG9WZTItc29RIi8+DQorICAgICAgICA8bGF5b3V0Q29uc3RyYWludCB4bWk6dHlwZT0ibm90YXRpb246Qm91bmRzIiB4bWk6aWQ9Il9nMlgxWEpvOEVlU0Z0TG9WZTItc29RIi8+DQorICAgICAgPC9jaGlsZHJlbj4NCisgICAgICA8ZWxlbWVudCB4bWk6dHlwZT0idW1sOlN0ZXJlb3R5cGUiIGhyZWY9IlN5c01MLnByb2ZpbGUudW1sI1N5c01MLUFsbG9jYXRpb25zLUFsbG9jYXRlIi8+DQorICAgICAgPGxheW91dENvbnN0cmFpbnQgeG1pOnR5cGU9Im5vdGF0aW9uOkJvdW5kcyIgeG1pOmlkPSJfZzJYMVVabzhFZVNGdExvVmUyLXNvUSIgeD0iNDAiIHk9IjE2MCIgd2lkdGg9IjM2MSIgaGVpZ2h0PSI0MSIvPg0KKyAgICA8L2NoaWxkcmVuPg0KKyAgICA8Y2hpbGRyZW4geG1pOnR5cGU9Im5vdGF0aW9uOlNoYXBlIiB4bWk6aWQ9Il9nMmdfUTVvOEVlU0Z0TG9WZTItc29RIiB0eXBlPSIxMDMxIj4NCisgICAgICA8Y2hpbGRyZW4geG1pOnR5cGU9Im5vdGF0aW9uOkRlY29yYXRpb25Ob2RlIiB4bWk6aWQ9Il9nMmdfUlpvOEVlU0Z0TG9WZTItc29RIiB0eXBlPSIxMDg0Ii8+DQorICAgICAgPGVsZW1lbnQgeG1pOnR5cGU9InVtbDpDbGFzcyIgaHJlZj0icGF0aG1hcDovL1VNTF9NRVRBTU9ERUxTL1VNTC5tZXRhbW9kZWwudW1sI0Fic3RyYWN0aW9uIi8+DQorICAgICAgPGxheW91dENvbnN0cmFpbnQgeG1pOnR5cGU9Im5vdGF0aW9uOkJvdW5kcyIgeG1pOmlkPSJfZzJnX1JKbzhFZVNGdExvVmUyLXNvUSIgeD0iMzAwIiB5PSI0MCIvPg0KKyAgICA8L2NoaWxkcmVuPg0KKyAgICA8Y2hpbGRyZW4geG1pOnR5cGU9Im5vdGF0aW9uOlNoYXBlIiB4bWk6aWQ9Il9oS0FqQUpvOEVlU0Z0TG9WZTItc29RIiB0eXBlPSIxMDI2Ij4NCisgICAgICA8Y2hpbGRyZW4geG1pOnR5cGU9Im5vdGF0aW9uOkRlY29yYXRpb25Ob2RlIiB4bWk6aWQ9Il9oS0FqQXBvOEVlU0Z0TG9WZTItc29RIiB0eXBlPSIxMDM0Ii8+DQorICAgICAgPGNoaWxkcmVuIHhtaTp0eXBlPSJub3RhdGlvbjpCYXNpY0NvbXBhcnRtZW50IiB4bWk6aWQ9Il9oS0FqQTVvOEVlU0Z0TG9WZTItc29RIiB2aXNpYmxlPSJmYWxzZSIgdHlwZT0iMTA3MSI+DQorICAgICAgICA8c3R5bGVzIHhtaTp0eXBlPSJub3RhdGlvbjpUaXRsZVN0eWxlIiB4bWk6aWQ9Il9oS0FqQkpvOEVlU0Z0TG9WZTItc29RIi8+DQorICAgICAgICA8c3R5bGVzIHhtaTp0eXBlPSJub3RhdGlvbjpTb3J0aW5nU3R5bGUiIHhtaTppZD0iX2hLQWpCWm84RWVTRnRMb1ZlMi1zb1EiLz4NCisgICAgICAgIDxzdHlsZXMgeG1pOnR5cGU9Im5vdGF0aW9uOkZpbHRlcmluZ1N0eWxlIiB4bWk6aWQ9Il9oS0FqQnBvOEVlU0Z0TG9WZTItc29RIi8+DQorICAgICAgICA8bGF5b3V0Q29uc3RyYWludCB4bWk6dHlwZT0ibm90YXRpb246Qm91bmRzIiB4bWk6aWQ9Il9oS0FqQjVvOEVlU0Z0TG9WZTItc29RIi8+DQorICAgICAgPC9jaGlsZHJlbj4NCisgICAgICA8Y2hpbGRyZW4geG1pOnR5cGU9Im5vdGF0aW9uOkJhc2ljQ29tcGFydG1lbnQiIHhtaTppZD0iX2hLQWpDSm84RWVTRnRMb1ZlMi1zb1EiIHZpc2libGU9ImZhbHNlIiB0eXBlPSIxMDE5Ij4NCisgICAgICAgIDxzdHlsZXMgeG1pOnR5cGU9Im5vdGF0aW9uOlRpdGxlU3R5bGUiIHhtaTppZD0iX2hLQWpDWm84RWVTRnRMb1ZlMi1zb1EiLz4NCisgICAgICAgIDxzdHlsZXMgeG1pOnR5cGU9Im5vdGF0aW9uOlNvcnRpbmdTdHlsZSIgeG1pOmlkPSJfaEtBakNwbzhFZVNGdExvVmUyLXNvUSIvPg0KKyAgICAgICAgPHN0eWxlcyB4bWk6dHlwZT0ibm90YXRpb246RmlsdGVyaW5nU3R5bGUiIHhtaTppZD0iX2hLQWpDNW84RWVTRnRMb1ZlMi1zb1EiLz4NCisgICAgICAgIDxsYXlvdXRDb25zdHJhaW50IHhtaTp0eXBlPSJub3RhdGlvbjpCb3VuZHMiIHhtaTppZD0iX2hLQWpESm84RWVTRnRMb1ZlMi1zb1EiLz4NCisgICAgICA8L2NoaWxkcmVuPg0KKyAgICAgIDxlbGVtZW50IHhtaTp0eXBlPSJ1bWw6U3RlcmVvdHlwZSIgaHJlZj0iU3lzTUwucHJvZmlsZS51bWwjU3lzTUwtQWxsb2NhdGlvbnMtQWxsb2NhdGVBY3Rpdml0eVBhcnRpdGlvbiIvPg0KKyAgICAgIDxsYXlvdXRDb25zdHJhaW50IHhtaTp0eXBlPSJub3RhdGlvbjpCb3VuZHMiIHhtaTppZD0iX2hLQWpBWm84RWVTRnRMb1ZlMi1zb1EiIHg9IjU0MCIgeT0iMTQwIiB3aWR0aD0iMTQxIiBoZWlnaHQ9IjYxIi8+DQorICAgIDwvY2hpbGRyZW4+DQorICAgIDxjaGlsZHJlbiB4bWk6dHlwZT0ibm90YXRpb246U2hhcGUiIHhtaTppZD0iX2hLS1VBNW84RWVTRnRMb1ZlMi1zb1EiIHR5cGU9IjEwMzEiPg0KKyAgICAgIDxjaGlsZHJlbiB4bWk6dHlwZT0ibm90YXRpb246RGVjb3JhdGlvbk5vZGUiIHhtaTppZD0iX2hLS1VCWm84RWVTRnRMb1ZlMi1zb1EiIHR5cGU9IjEwODQiLz4NCisgICAgICA8ZWxlbWVudCB4bWk6dHlwZT0idW1sOkNsYXNzIiBocmVmPSJwYXRobWFwOi8vVU1MX01FVEFNT0RFTFMvVU1MLm1ldGFtb2RlbC51bWwjQWN0aXZpdHlQYXJ0aXRpb24iLz4NCisgICAgICA8bGF5b3V0Q29uc3RyYWludCB4bWk6dHlwZT0ibm90YXRpb246Qm91bmRzIiB4bWk6aWQ9Il9oS0tVQkpvOEVlU0Z0TG9WZTItc29RIiB4PSI1NDAiIHk9IjQwIiB3aWR0aD0iMTQxIi8+DQorICAgIDwvY2hpbGRyZW4+DQorICAgIDxjaGlsZHJlbiB4bWk6dHlwZT0ibm90YXRpb246U2hhcGUiIHhtaTppZD0iX2xrcGlVSm84RWVTRnRMb1ZlMi1zb1EiIHR5cGU9IjEwMjYiPg0KKyAgICAgIDxjaGlsZHJlbiB4bWk6dHlwZT0ibm90YXRpb246RGVjb3JhdGlvbk5vZGUiIHhtaTppZD0iX2xrcGlVcG84RWVTRnRMb1ZlMi1zb1EiIHR5cGU9IjEwMzQiLz4NCisgICAgICA8Y2hpbGRyZW4geG1pOnR5cGU9Im5vdGF0aW9uOkJhc2ljQ29tcGFydG1lbnQiIHhtaTppZD0iX2xrcGlVNW84RWVTRnRMb1ZlMi1zb1EiIHZpc2libGU9ImZhbHNlIiB0eXBlPSIxMDcxIj4NCisgICAgICAgIDxzdHlsZXMgeG1pOnR5cGU9Im5vdGF0aW9uOlRpdGxlU3R5bGUiIHhtaTppZD0iX2xrcGlWSm84RWVTRnRMb1ZlMi1zb1EiLz4NCisgICAgICAgIDxzdHlsZXMgeG1pOnR5cGU9Im5vdGF0aW9uOlNvcnRpbmdTdHlsZSIgeG1pOmlkPSJfbGtwaVZabzhFZVNGdExvVmUyLXNvUSIvPg0KKyAgICAgICAgPHN0eWxlcyB4bWk6dHlwZT0ibm90YXRpb246RmlsdGVyaW5nU3R5bGUiIHhtaTppZD0iX2xrcGlWcG84RWVTRnRMb1ZlMi1zb1EiLz4NCisgICAgICAgIDxsYXlvdXRDb25zdHJhaW50IHhtaTp0eXBlPSJub3RhdGlvbjpCb3VuZHMiIHhtaTppZD0iX2xrcGlWNW84RWVTRnRMb1ZlMi1zb1EiLz4NCisgICAgICA8L2NoaWxkcmVuPg0KKyAgICAgIDxjaGlsZHJlbiB4bWk6dHlwZT0ibm90YXRpb246QmFzaWNDb21wYXJ0bWVudCIgeG1pOmlkPSJfbGtwaVdKbzhFZVNGdExvVmUyLXNvUSIgdmlzaWJsZT0iZmFsc2UiIHR5cGU9IjEwMTkiPg0KKyAgICAgICAgPHN0eWxlcyB4bWk6dHlwZT0ibm90YXRpb246VGl0bGVTdHlsZSIgeG1pOmlkPSJfbGtwaVdabzhFZVNGdExvVmUyLXNvUSIvPg0KKyAgICAgICAgPHN0eWxlcyB4bWk6dHlwZT0ibm90YXRpb246U29ydGluZ1N0eWxlIiB4bWk6aWQ9Il9sa3BpV3BvOEVlU0Z0TG9WZTItc29RIi8+DQorICAgICAgICA8c3R5bGVzIHhtaTp0eXBlPSJub3RhdGlvbjpGaWx0ZXJpbmdTdHlsZSIgeG1pOmlkPSJfbGtwaVc1bzhFZVNGdExvVmUyLXNvUSIvPg0KKyAgICAgICAgPGxheW91dENvbnN0cmFpbnQgeG1pOnR5cGU9Im5vdGF0aW9uOkJvdW5kcyIgeG1pOmlkPSJfbGtwaVhKbzhFZVNGdExvVmUyLXNvUSIvPg0KKyAgICAgIDwvY2hpbGRyZW4+DQorICAgICAgPGVsZW1lbnQgeG1pOnR5cGU9InVtbDpTdGVyZW90eXBlIiBocmVmPSJTeXNNTC5wcm9maWxlLnVtbCNTeXNNTC1CbG9ja3MtRGlyZWN0ZWRSZWxhdGlvbnNoaXBQcm9wZXJ0eVBhdGgiLz4NCisgICAgICA8bGF5b3V0Q29uc3RyYWludCB4bWk6dHlwZT0ibm90YXRpb246Qm91bmRzIiB4bWk6aWQ9Il9sa3BpVVpvOEVlU0Z0TG9WZTItc29RIiB4PSI0MCIgeT0iNDAiIHdpZHRoPSIyMDAiIGhlaWdodD0iNjEiLz4NCisgICAgPC9jaGlsZHJlbj4NCisgICAgPHN0eWxlcyB4bWk6dHlwZT0ibm90YXRpb246U3RyaW5nVmFsdWVTdHlsZSIgeG1pOmlkPSJfZ2ZLUE1abzhFZVNGdExvVmUyLXNvUSIgbmFtZT0iZGlhZ3JhbV9jb21wYXRpYmlsaXR5X3ZlcnNpb24iIHN0cmluZ1ZhbHVlPSIxLjAuMCIvPg0KKyAgICA8c3R5bGVzIHhtaTp0eXBlPSJub3RhdGlvbjpEaWFncmFtU3R5bGUiIHhtaTppZD0iX2dmS1BNcG84RWVTRnRMb1ZlMi1zb1EiLz4NCisgICAgPHN0eWxlcyB4bWk6dHlwZT0ic3R5bGU6UGFweXJ1c1ZpZXdTdHlsZSIgeG1pOmlkPSJfZ2ZLUE01bzhFZVNGdExvVmUyLXNvUSI+DQorICAgICAgPG93bmVyIHhtaTp0eXBlPSJ1bWw6UGFja2FnZSIgaHJlZj0iU3lzTUwucHJvZmlsZS51bWwjU3lzTUwtQWxsb2NhdGlvbnMiLz4NCisgICAgPC9zdHlsZXM+DQorICAgIDxlbGVtZW50IHhtaTp0eXBlPSJ1bWw6UGFja2FnZSIgaHJlZj0iU3lzTUwucHJvZmlsZS51bWwjU3lzTUwtQWxsb2NhdGlvbnMiLz4NCisgICAgPGVkZ2VzIHhtaTp0eXBlPSJub3RhdGlvbjpDb25uZWN0b3IiIHhtaTppZD0iX2cycXdRSm84RWVTRnRMb1ZlMi1zb1EiIHR5cGU9IjEwMTMiIHNvdXJjZT0iX2cyWDFVSm84RWVTRnRMb1ZlMi1zb1EiIHRhcmdldD0iX2cyZ19RNW84RWVTRnRMb1ZlMi1zb1EiPg0KKyAgICAgIDxzdHlsZXMgeG1pOnR5cGU9Im5vdGF0aW9uOkZvbnRTdHlsZSIgeG1pOmlkPSJfZzJxd1FabzhFZVNGdExvVmUyLXNvUSIvPg0KKyAgICAgIDxlbGVtZW50IHhtaTp0eXBlPSJ1bWw6RXh0ZW5zaW9uIiBocmVmPSJTeXNNTC5wcm9maWxlLnVtbCNTeXNNTC1BbGxvY2F0aW9ucy1FX2V4dGVuc2lvbl9BbGxvY2F0ZV9iYXNlX0Fic3RyYWN0aW9uIi8+DQorICAgICAgPGJlbmRwb2ludHMgeG1pOnR5cGU9Im5vdGF0aW9uOlJlbGF0aXZlQmVuZHBvaW50cyIgeG1pOmlkPSJfZzJxd1FwbzhFZVNGdExvVmUyLXNvUSIgcG9pbnRzPSJbMTQyLCAwLCAtMTYsIDcwXSRbMTQyLCAtNzAsIC0xNiwgMF0iLz4NCisgICAgICA8c291cmNlQW5jaG9yIHhtaTp0eXBlPSJub3RhdGlvbjpJZGVudGl0eUFuY2hvciIgeG1pOmlkPSJfa0xxV0lKbzhFZVNGdExvVmUyLXNvUSIgaWQ9IigwLjQ0LDAuMCkiLz4NCisgICAgICA8dGFyZ2V0QW5jaG9yIHhtaTp0eXBlPSJub3RhdGlvbjpJZGVudGl0eUFuY2hvciIgeG1pOmlkPSJfa0xxV0labzhFZVNGdExvVmUyLXNvUSIgaWQ9IigwLjU2LDEuMCkiLz4NCisgICAgPC9lZGdlcz4NCisgICAgPGVkZ2VzIHhtaTp0eXBlPSJub3RhdGlvbjpDb25uZWN0b3IiIHhtaTppZD0iX2hLS1VESm84RWVTRnRMb1ZlMi1zb1EiIHR5cGU9IjEwMTMiIHNvdXJjZT0iX2hLQWpBSm84RWVTRnRMb1ZlMi1zb1EiIHRhcmdldD0iX2hLS1VBNW84RWVTRnRMb1ZlMi1zb1EiPg0KKyAgICAgIDxzdHlsZXMgeG1pOnR5cGU9Im5vdGF0aW9uOkZvbnRTdHlsZSIgeG1pOmlkPSJfaEtLVURabzhFZVNGdExvVmUyLXNvUSIvPg0KKyAgICAgIDxlbGVtZW50IHhtaTp0eXBlPSJ1bWw6RXh0ZW5zaW9uIiBocmVmPSJTeXNNTC5wcm9maWxlLnVtbCNTeXNNTC1BbGxvY2F0aW9ucy1FX2V4dGVuc2lvbl9BbGxvY2F0ZUFjdGl2aXR5UGFydGl0aW9uX2Jhc2VfQWN0aXZpdHlQYXJ0aXRpb24iLz4NCisgICAgICA8YmVuZHBvaW50cyB4bWk6dHlwZT0ibm90YXRpb246UmVsYXRpdmVCZW5kcG9pbnRzIiB4bWk6aWQ9Il9oS0tVRHBvOEVlU0Z0TG9WZTItc29RIiBwb2ludHM9IlswLCAwLCAwLCA1MF0kWzAsIC01MCwgMCwgMF0iLz4NCisgICAgICA8c291cmNlQW5jaG9yIHhtaTp0eXBlPSJub3RhdGlvbjpJZGVudGl0eUFuY2hvciIgeG1pOmlkPSJfazFLbUlKbzhFZVNGdExvVmUyLXNvUSIgaWQ9IigwLjQyNTUzMTkxNDg5MzYxNywwLjApIi8+DQorICAgICAgPHRhcmdldEFuY2hvciB4bWk6dHlwZT0ibm90YXRpb246SWRlbnRpdHlBbmNob3IiIHhtaTppZD0iX2sxS21JWm84RWVTRnRMb1ZlMi1zb1EiIGlkPSIoMC40MjU1MzE5MTQ4OTM2MTcsMS4wKSIvPg0KKyAgICA8L2VkZ2VzPg0KKyAgICA8ZWRnZXMgeG1pOnR5cGU9Im5vdGF0aW9uOkNvbm5lY3RvciIgeG1pOmlkPSJfbGtwaVlKbzhFZVNGdExvVmUyLXNvUSIgdHlwZT0iNDAwMiIgc291cmNlPSJfZzJYMVVKbzhFZVNGdExvVmUyLXNvUSIgdGFyZ2V0PSJfbGtwaVVKbzhFZVNGdExvVmUyLXNvUSI+DQorICAgICAgPGNoaWxkcmVuIHhtaTp0eXBlPSJub3RhdGlvbjpEZWNvcmF0aW9uTm9kZSIgeG1pOmlkPSJfbGtwaVk1bzhFZVNGdExvVmUyLXNvUSIgdHlwZT0iNjAwNyI+DQorICAgICAgICA8bGF5b3V0Q29uc3RyYWludCB4bWk6dHlwZT0ibm90YXRpb246TG9jYXRpb24iIHhtaTppZD0iX2xrcGlaSm84RWVTRnRMb1ZlMi1zb1EiIHk9IjYwIi8+DQorICAgICAgPC9jaGlsZHJlbj4NCisgICAgICA8c3R5bGVzIHhtaTp0eXBlPSJub3RhdGlvbjpGb250U3R5bGUiIHhtaTppZD0iX2xrcGlZWm84RWVTRnRMb1ZlMi1zb1EiLz4NCisgICAgICA8ZWxlbWVudCB4bWk6dHlwZT0idW1sOkdlbmVyYWxpemF0aW9uIiBocmVmPSJTeXNNTC5wcm9maWxlLnVtbCNTeXNNTC1BbGxvY2F0aW9ucy1BbGxvY2F0ZS1nZW5lcmFsaXphdGlvbiIvPg0KKyAgICAgIDxiZW5kcG9pbnRzIHhtaTp0eXBlPSJub3RhdGlvbjpSZWxhdGl2ZUJlbmRwb2ludHMiIHhtaTppZD0iX2xrcGlZcG84RWVTRnRMb1ZlMi1zb1EiIHBvaW50cz0iWzM3LCAwLCAtNzAsIDU5XSRbMzcsIC01OSwgLTcwLCAwXSIvPg0KKyAgICAgIDxzb3VyY2VBbmNob3IgeG1pOnR5cGU9Im5vdGF0aW9uOklkZW50aXR5QW5jaG9yIiB4bWk6aWQ9Il90eHRxWUpvOEVlU0Z0TG9WZTItc29RIiBpZD0iKDAuMTIsMC4wKSIvPg0KKyAgICAgIDx0YXJnZXRBbmNob3IgeG1pOnR5cGU9Im5vdGF0aW9uOklkZW50aXR5QW5jaG9yIiB4bWk6aWQ9Il90eHRxWVpvOEVlU0Z0TG9WZTItc29RIiBpZD0iKDAuNzUsMS4wKSIvPg0KKyAgICA8L2VkZ2VzPg0KKyAgPC9ub3RhdGlvbjpEaWFncmFtPg0KKyAgPG5vdGF0aW9uOkRpYWdyYW0geG1pOmlkPSJfNXZiWmtKbzhFZVNGdExvVmUyLXNvUSIgdHlwZT0iUGFweXJ1c1VNTFByb2ZpbGVEaWFncmFtIiBuYW1lPSJSZXF1aXJlbWVudHMiIG1lYXN1cmVtZW50VW5pdD0iUGl4ZWwiPg0KKyAgICA8Y2hpbGRyZW4geG1pOnR5cGU9Im5vdGF0aW9uOlNoYXBlIiB4bWk6aWQ9Il9DYzlLWUpvOUVlU0Z0TG9WZTItc29RIiB0eXBlPSIxMDI2Ij4NCisgICAgICA8Y2hpbGRyZW4geG1pOnR5cGU9Im5vdGF0aW9uOkRlY29yYXRpb25Ob2RlIiB4bWk6aWQ9Il9DYzlLWXBvOUVlU0Z0TG9WZTItc29RIiB0eXBlPSIxMDM0Ii8+DQorICAgICAgPGNoaWxkcmVuIHhtaTp0eXBlPSJub3RhdGlvbjpCYXNpY0NvbXBhcnRtZW50IiB4bWk6aWQ9Il9DYzlLWTVvOUVlU0Z0TG9WZTItc29RIiB2aXNpYmxlPSJmYWxzZSIgdHlwZT0iMTA3MSI+DQorICAgICAgICA8c3R5bGVzIHhtaTp0eXBlPSJub3RhdGlvbjpUaXRsZVN0eWxlIiB4bWk6aWQ9Il9DYzlLWkpvOUVlU0Z0TG9WZTItc29RIi8+DQorICAgICAgICA8c3R5bGVzIHhtaTp0eXBlPSJub3RhdGlvbjpTb3J0aW5nU3R5bGUiIHhtaTppZD0iX0NjOUtaWm85RWVTRnRMb1ZlMi1zb1EiLz4NCisgICAgICAgIDxzdHlsZXMgeG1pOnR5cGU9Im5vdGF0aW9uOkZpbHRlcmluZ1N0eWxlIiB4bWk6aWQ9Il9DYzlLWnBvOUVlU0Z0TG9WZTItc29RIi8+DQorICAgICAgICA8bGF5b3V0Q29uc3RyYWludCB4bWk6dHlwZT0ibm90YXRpb246Qm91bmRzIiB4bWk6aWQ9Il9DYzlLWjVvOUVlU0Z0TG9WZTItc29RIi8+DQorICAgICAgPC9jaGlsZHJlbj4NCisgICAgICA8Y2hpbGRyZW4geG1pOnR5cGU9Im5vdGF0aW9uOkJhc2ljQ29tcGFydG1lbnQiIHhtaTppZD0iX0NjOUthSm85RWVTRnRMb1ZlMi1zb1EiIHZpc2libGU9ImZhbHNlIiB0eXBlPSIxMDE5Ij4NCisgICAgICAgIDxzdHlsZXMgeG1pOnR5cGU9Im5vdGF0aW9uOlRpdGxlU3R5bGUiIHhtaTppZD0iX0NjOUthWm85RWVTRnRMb1ZlMi1zb1EiLz4NCisgICAgICAgIDxzdHlsZXMgeG1pOnR5cGU9Im5vdGF0aW9uOlNvcnRpbmdTdHlsZSIgeG1pOmlkPSJfQ2M5S2FwbzlFZVNGdExvVmUyLXNvUSIvPg0KKyAgICAgICAgPHN0eWxlcyB4bWk6dHlwZT0ibm90YXRpb246RmlsdGVyaW5nU3R5bGUiIHhtaTppZD0iX0NjOUthNW85RWVTRnRMb1ZlMi1zb1EiLz4NCisgICAgICAgIDxsYXlvdXRDb25zdHJhaW50IHhtaTp0eXBlPSJub3RhdGlvbjpCb3VuZHMiIHhtaTppZD0iX0NjOUtiSm85RWVTRnRMb1ZlMi1zb1EiLz4NCisgICAgICA8L2NoaWxkcmVuPg0KKyAgICAgIDxlbGVtZW50IHhtaTp0eXBlPSJ1bWw6U3RlcmVvdHlwZSIgaHJlZj0iU3lzTUwucHJvZmlsZS51bWwjU3lzTUwtUmVxdWlyZW1lbnRzLVRyYWNlIi8+DQorICAgICAgPGxheW91dENvbnN0cmFpbnQgeG1pOnR5cGU9Im5vdGF0aW9uOkJvdW5kcyIgeG1pOmlkPSJfQ2M5S1labzlFZVNGdExvVmUyLXNvUSIgeD0iNDIwIiB5PSIxMjAiIHdpZHRoPSIzNDEiIGhlaWdodD0iNDEiLz4NCisgICAgPC9jaGlsZHJlbj4NCisgICAgPGNoaWxkcmVuIHhtaTp0eXBlPSJub3RhdGlvbjpTaGFwZSIgeG1pOmlkPSJfQ2M5S2NKbzlFZVNGdExvVmUyLXNvUSIgdHlwZT0iMTAyNiI+DQorICAgICAgPGNoaWxkcmVuIHhtaTp0eXBlPSJub3RhdGlvbjpEZWNvcmF0aW9uTm9kZSIgeG1pOmlkPSJfQ2RHVVVKbzlFZVNGdExvVmUyLXNvUSIgdHlwZT0iMTAzNCIvPg0KKyAgICAgIDxjaGlsZHJlbiB4bWk6dHlwZT0ibm90YXRpb246QmFzaWNDb21wYXJ0bWVudCIgeG1pOmlkPSJfQ2RHVVVabzlFZVNGdExvVmUyLXNvUSIgdmlzaWJsZT0iZmFsc2UiIHR5cGU9IjEwNzEiPg0KKyAgICAgICAgPHN0eWxlcyB4bWk6dHlwZT0ibm90YXRpb246VGl0bGVTdHlsZSIgeG1pOmlkPSJfQ2RHVVVwbzlFZVNGdExvVmUyLXNvUSIvPg0KKyAgICAgICAgPHN0eWxlcyB4bWk6dHlwZT0ibm90YXRpb246U29ydGluZ1N0eWxlIiB4bWk6aWQ9Il9DZEdVVTVvOUVlU0Z0TG9WZTItc29RIi8+DQorICAgICAgICA8c3R5bGVzIHhtaTp0eXBlPSJub3RhdGlvbjpGaWx0ZXJpbmdTdHlsZSIgeG1pOmlkPSJfQ2RHVVZKbzlFZVNGdExvVmUyLXNvUSIvPg0KKyAgICAgICAgPGxheW91dENvbnN0cmFpbnQgeG1pOnR5cGU9Im5vdGF0aW9uOkJvdW5kcyIgeG1pOmlkPSJfQ2RHVVZabzlFZVNGdExvVmUyLXNvUSIvPg0KKyAgICAgIDwvY2hpbGRyZW4+DQorICAgICAgPGNoaWxkcmVuIHhtaTp0eXBlPSJub3RhdGlvbjpCYXNpY0NvbXBhcnRtZW50IiB4bWk6aWQ9Il9DZEdVVnBvOUVlU0Z0TG9WZTItc29RIiB2aXNpYmxlPSJmYWxzZSIgdHlwZT0iMTAxOSI+DQorICAgICAgICA8c3R5bGVzIHhtaTp0eXBlPSJub3RhdGlvbjpUaXRsZVN0eWxlIiB4bWk6aWQ9Il9DZEdVVjVvOUVlU0Z0TG9WZTItc29RIi8+DQorICAgICAgICA8c3R5bGVzIHhtaTp0eXBlPSJub3RhdGlvbjpTb3J0aW5nU3R5bGUiIHhtaTppZD0iX0NkR1VXSm85RWVTRnRMb1ZlMi1zb1EiLz4NCisgICAgICAgIDxzdHlsZXMgeG1pOnR5cGU9Im5vdGF0aW9uOkZpbHRlcmluZ1N0eWxlIiB4bWk6aWQ9Il9DZEdVV1pvOUVlU0Z0TG9WZTItc29RIi8+DQorICAgICAgICA8bGF5b3V0Q29uc3RyYWludCB4bWk6dHlwZT0ibm90YXRpb246Qm91bmRzIiB4bWk6aWQ9Il9DZEdVV3BvOUVlU0Z0TG9WZTItc29RIi8+DQorICAgICAgPC9jaGlsZHJlbj4NCisgICAgICA8ZWxlbWVudCB4bWk6dHlwZT0idW1sOlN0ZXJlb3R5cGUiIGhyZWY9InBhdGhtYXA6Ly9VTUxfUFJPRklMRVMvU3RhbmRhcmQucHJvZmlsZS51bWwjVHJhY2UiLz4NCisgICAgICA8bGF5b3V0Q29uc3RyYWludCB4bWk6dHlwZT0ibm90YXRpb246Qm91bmRzIiB4bWk6aWQ9Il9DYzlLY1pvOUVlU0Z0TG9WZTItc29RIiB4PSI0MjAiIHk9IjIwIiBoZWlnaHQ9IjQxIi8+DQorICAgIDwvY2hpbGRyZW4+DQorICAgIDxjaGlsZHJlbiB4bWk6dHlwZT0ibm90YXRpb246U2hhcGUiIHhtaTppZD0iX0M3VWhZSm85RWVTRnRMb1ZlMi1zb1EiIHR5cGU9IjEwMjYiPg0KKyAgICAgIDxjaGlsZHJlbiB4bWk6dHlwZT0ibm90YXRpb246RGVjb3JhdGlvbk5vZGUiIHhtaTppZD0iX0M3VWhZcG85RWVTRnRMb1ZlMi1zb1EiIHR5cGU9IjEwMzQiLz4NCisgICAgICA8Y2hpbGRyZW4geG1pOnR5cGU9Im5vdGF0aW9uOkJhc2ljQ29tcGFydG1lbnQiIHhtaTppZD0iX0M3VWhZNW85RWVTRnRMb1ZlMi1zb1EiIHZpc2libGU9ImZhbHNlIiB0eXBlPSIxMDcxIj4NCisgICAgICAgIDxzdHlsZXMgeG1pOnR5cGU9Im5vdGF0aW9uOlRpdGxlU3R5bGUiIHhtaTppZD0iX0M3VWhaSm85RWVTRnRMb1ZlMi1zb1EiLz4NCisgICAgICAgIDxzdHlsZXMgeG1pOnR5cGU9Im5vdGF0aW9uOlNvcnRpbmdTdHlsZSIgeG1pOmlkPSJfQzdVaFpabzlFZVNGdExvVmUyLXNvUSIvPg0KKyAgICAgICAgPHN0eWxlcyB4bWk6dHlwZT0ibm90YXRpb246RmlsdGVyaW5nU3R5bGUiIHhtaTppZD0iX0M3VWhacG85RWVTRnRMb1ZlMi1zb1EiLz4NCisgICAgICAgIDxsYXlvdXRDb25zdHJhaW50IHhtaTp0eXBlPSJub3RhdGlvbjpCb3VuZHMiIHhtaTppZD0iX0M3VWhaNW85RWVTRnRMb1ZlMi1zb1EiLz4NCisgICAgICA8L2NoaWxkcmVuPg0KKyAgICAgIDxjaGlsZHJlbiB4bWk6dHlwZT0ibm90YXRpb246QmFzaWNDb21wYXJ0bWVudCIgeG1pOmlkPSJfQzdVaGFKbzlFZVNGdExvVmUyLXNvUSIgdmlzaWJsZT0iZmFsc2UiIHR5cGU9IjEwMTkiPg0KKyAgICAgICAgPHN0eWxlcyB4bWk6dHlwZT0ibm90YXRpb246VGl0bGVTdHlsZSIgeG1pOmlkPSJfQzdVaGFabzlFZVNGdExvVmUyLXNvUSIvPg0KKyAgICAgICAgPHN0eWxlcyB4bWk6dHlwZT0ibm90YXRpb246U29ydGluZ1N0eWxlIiB4bWk6aWQ9Il9DN1VoYXBvOUVlU0Z0TG9WZTItc29RIi8+DQorICAgICAgICA8c3R5bGVzIHhtaTp0eXBlPSJub3RhdGlvbjpGaWx0ZXJpbmdTdHlsZSIgeG1pOmlkPSJfQzdVaGE1bzlFZVNGdExvVmUyLXNvUSIvPg0KKyAgICAgICAgPGxheW91dENvbnN0cmFpbnQgeG1pOnR5cGU9Im5vdGF0aW9uOkJvdW5kcyIgeG1pOmlkPSJfQzdVaGJKbzlFZVNGdExvVmUyLXNvUSIvPg0KKyAgICAgIDwvY2hpbGRyZW4+DQorICAgICAgPGVsZW1lbnQgeG1pOnR5cGU9InVtbDpTdGVyZW90eXBlIiBocmVmPSJTeXNNTC5wcm9maWxlLnVtbCNTeXNNTC1CbG9ja3MtRGlyZWN0ZWRSZWxhdGlvbnNoaXBQcm9wZXJ0eVBhdGgiLz4NCisgICAgICA8bGF5b3V0Q29uc3RyYWludCB4bWk6dHlwZT0ibm90YXRpb246Qm91bmRzIiB4bWk6aWQ9Il9DN1VoWVpvOUVlU0Z0TG9WZTItc29RIiB4PSI1NjAiIHk9IjIwIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjQxIi8+DQorICAgIDwvY2hpbGRyZW4+DQorICAgIDxjaGlsZHJlbiB4bWk6dHlwZT0ibm90YXRpb246U2hhcGUiIHhtaTppZD0iX1hqNGcwSm85RWVTRnRMb1ZlMi1zb1EiIHR5cGU9IjEwMjYiPg0KKyAgICAgIDxjaGlsZHJlbiB4bWk6dHlwZT0ibm90YXRpb246RGVjb3JhdGlvbk5vZGUiIHhtaTppZD0iX1hqNGcwcG85RWVTRnRMb1ZlMi1zb1EiIHR5cGU9IjEwMzQiLz4NCisgICAgICA8Y2hpbGRyZW4geG1pOnR5cGU9Im5vdGF0aW9uOkJhc2ljQ29tcGFydG1lbnQiIHhtaTppZD0iX1hqNGcwNW85RWVTRnRMb1ZlMi1zb1EiIHZpc2libGU9ImZhbHNlIiB0eXBlPSIxMDcxIj4NCisgICAgICAgIDxzdHlsZXMgeG1pOnR5cGU9Im5vdGF0aW9uOlRpdGxlU3R5bGUiIHhtaTppZD0iX1hqNGcxSm85RWVTRnRMb1ZlMi1zb1EiLz4NCisgICAgICAgIDxzdHlsZXMgeG1pOnR5cGU9Im5vdGF0aW9uOlNvcnRpbmdTdHlsZSIgeG1pOmlkPSJfWGo0ZzFabzlFZVNGdExvVmUyLXNvUSIvPg0KKyAgICAgICAgPHN0eWxlcyB4bWk6dHlwZT0ibm90YXRpb246RmlsdGVyaW5nU3R5bGUiIHhtaTppZD0iX1hqNGcxcG85RWVTRnRMb1ZlMi1zb1EiLz4NCisgICAgICAgIDxsYXlvdXRDb25zdHJhaW50IHhtaTp0eXBlPSJub3RhdGlvbjpCb3VuZHMiIHhtaTppZD0iX1hqNGcxNW85RWVTRnRMb1ZlMi1zb1EiLz4NCisgICAgICA8L2NoaWxkcmVuPg0KKyAgICAgIDxjaGlsZHJlbiB4bWk6dHlwZT0ibm90YXRpb246QmFzaWNDb21wYXJ0bWVudCIgeG1pOmlkPSJfWGo0ZzJKbzlFZVNGdExvVmUyLXNvUSIgdmlzaWJsZT0iZmFsc2UiIHR5cGU9IjEwMTkiPg0KKyAgICAgICAgPHN0eWxlcyB4bWk6dHlwZT0ibm90YXRpb246VGl0bGVTdHlsZSIgeG1pOmlkPSJfWGo0ZzJabzlFZVNGdExvVmUyLXNvUSIvPg0KKyAgICAgICAgPHN0eWxlcyB4bWk6dHlwZT0ibm90YXRpb246U29ydGluZ1N0eWxlIiB4bWk6aWQ9Il9YajRnMnBvOUVlU0Z0TG9WZTItc29RIi8+DQorICAgICAgICA8c3R5bGVzIHhtaTp0eXBlPSJub3RhdGlvbjpGaWx0ZXJpbmdTdHlsZSIgeG1pOmlkPSJfWGo0ZzI1bzlFZVNGdExvVmUyLXNvUSIvPg0KKyAgICAgICAgPGxheW91dENvbnN0cmFpbnQgeG1pOnR5cGU9Im5vdGF0aW9uOkJvdW5kcyIgeG1pOmlkPSJfWGo0ZzNKbzlFZVNGdExvVmUyLXNvUSIvPg0KKyAgICAgIDwvY2hpbGRyZW4+DQorICAgICAgPGVsZW1lbnQgeG1pOnR5cGU9InVtbDpTdGVyZW90eXBlIiBocmVmPSJTeXNNTC5wcm9maWxlLnVtbCNTeXNNTC1SZXF1aXJlbWVudHMtRGVyaXZlUmVxdCIvPg0KKyAgICAgIDxsYXlvdXRDb25zdHJhaW50IHhtaTp0eXBlPSJub3RhdGlvbjpCb3VuZHMiIHhtaTppZD0iX1hqNGcwWm85RWVTRnRMb1ZlMi1zb1EiIHg9IjM4MCIgeT0iMjIwIiBoZWlnaHQ9IjQxIi8+DQorICAgIDwvY2hpbGRyZW4+DQorICAgIDxjaGlsZHJlbiB4bWk6dHlwZT0ibm90YXRpb246U2hhcGUiIHhtaTppZD0iX1ppRUV3Sm85RWVTRnRMb1ZlMi1zb1EiIHR5cGU9IjEwMjYiPg0KKyAgICAgIDxjaGlsZHJlbiB4bWk6dHlwZT0ibm90YXRpb246RGVjb3JhdGlvbk5vZGUiIHhtaTppZD0iX1ppRUV3cG85RWVTRnRMb1ZlMi1zb1EiIHR5cGU9IjEwMzQiLz4NCisgICAgICA8Y2hpbGRyZW4geG1pOnR5cGU9Im5vdGF0aW9uOkJhc2ljQ29tcGFydG1lbnQiIHhtaTppZD0iX1ppRUV3NW85RWVTRnRMb1ZlMi1zb1EiIHZpc2libGU9ImZhbHNlIiB0eXBlPSIxMDcxIj4NCisgICAgICAgIDxzdHlsZXMgeG1pOnR5cGU9Im5vdGF0aW9uOlRpdGxlU3R5bGUiIHhtaTppZD0iX1ppRUV4Sm85RWVTRnRMb1ZlMi1zb1EiLz4NCisgICAgICAgIDxzdHlsZXMgeG1pOnR5cGU9Im5vdGF0aW9uOlNvcnRpbmdTdHlsZSIgeG1pOmlkPSJfWmlFRXhabzlFZVNGdExvVmUyLXNvUSIvPg0KKyAgICAgICAgPHN0eWxlcyB4bWk6dHlwZT0ibm90YXRpb246RmlsdGVyaW5nU3R5bGUiIHhtaTppZD0iX1ppRUV4cG85RWVTRnRMb1ZlMi1zb1EiLz4NCisgICAgICAgIDxsYXlvdXRDb25zdHJhaW50IHhtaTp0eXBlPSJub3RhdGlvbjpCb3VuZHMiIHhtaTppZD0iX1ppRUV4NW85RWVTRnRMb1ZlMi1zb1EiLz4NCisgICAgICA8L2NoaWxkcmVuPg0KKyAgICAgIDxjaGlsZHJlbiB4bWk6dHlwZT0ibm90YXRpb246QmFzaWNDb21wYXJ0bWVudCIgeG1pOmlkPSJfWmlFRXlKbzlFZVNGdExvVmUyLXNvUSIgdmlzaWJsZT0iZmFsc2UiIHR5cGU9IjEwMTkiPg0KKyAgICAgICAgPHN0eWxlcyB4bWk6dHlwZT0ibm90YXRpb246VGl0bGVTdHlsZSIgeG1pOmlkPSJfWmlFRXlabzlFZVNGdExvVmUyLXNvUSIvPg0KKyAgICAgICAgPHN0eWxlcyB4bWk6dHlwZT0ibm90YXRpb246U29ydGluZ1N0eWxlIiB4bWk6aWQ9Il9aaUVFeXBvOUVlU0Z0TG9WZTItc29RIi8+DQorICAgICAgICA8c3R5bGVzIHhtaTp0eXBlPSJub3RhdGlvbjpGaWx0ZXJpbmdTdHlsZSIgeG1pOmlkPSJfWmlFRXk1bzlFZVNGdExvVmUyLXNvUSIvPg0KKyAgICAgICAgPGxheW91dENvbnN0cmFpbnQgeG1pOnR5cGU9Im5vdGF0aW9uOkJvdW5kcyIgeG1pOmlkPSJfWmlFRXpKbzlFZVNGdExvVmUyLXNvUSIvPg0KKyAgICAgIDwvY2hpbGRyZW4+DQorICAgICAgPGVsZW1lbnQgeG1pOnR5cGU9InVtbDpTdGVyZW90eXBlIiBocmVmPSJTeXNNTC5wcm9maWxlLnVtbCNTeXNNTC1SZXF1aXJlbWVudHMtVmVyaWZ5Ii8+DQorICAgICAgPGxheW91dENvbnN0cmFpbnQgeG1pOnR5cGU9Im5vdGF0aW9uOkJvdW5kcyIgeG1pOmlkPSJfWmlFRXdabzlFZVNGdExvVmUyLXNvUSIgeD0iNTQwIiB5PSIyMjAiIGhlaWdodD0iNDEiLz4NCisgICAgPC9jaGlsZHJlbj4NCisgICAgPGNoaWxkcmVuIHhtaTp0eXBlPSJub3RhdGlvbjpTaGFwZSIgeG1pOmlkPSJfY24zX0lKbzlFZVNGdExvVmUyLXNvUSIgdHlwZT0iMTAyNiI+DQorICAgICAgPGNoaWxkcmVuIHhtaTp0eXBlPSJub3RhdGlvbjpEZWNvcmF0aW9uTm9kZSIgeG1pOmlkPSJfY24zX0lwbzlFZVNGdExvVmUyLXNvUSIgdHlwZT0iMTAzNCIvPg0KKyAgICAgIDxjaGlsZHJlbiB4bWk6dHlwZT0ibm90YXRpb246QmFzaWNDb21wYXJ0bWVudCIgeG1pOmlkPSJfY24zX0k1bzlFZVNGdExvVmUyLXNvUSIgdmlzaWJsZT0iZmFsc2UiIHR5cGU9IjEwNzEiPg0KKyAgICAgICAgPHN0eWxlcyB4bWk6dHlwZT0ibm90YXRpb246VGl0bGVTdHlsZSIgeG1pOmlkPSJfY24zX0pKbzlFZVNGdExvVmUyLXNvUSIvPg0KKyAgICAgICAgPHN0eWxlcyB4bWk6dHlwZT0ibm90YXRpb246U29ydGluZ1N0eWxlIiB4bWk6aWQ9Il9jbjNfSlpvOUVlU0Z0TG9WZTItc29RIi8+DQorICAgICAgICA8c3R5bGVzIHhtaTp0eXBlPSJub3RhdGlvbjpGaWx0ZXJpbmdTdHlsZSIgeG1pOmlkPSJfY24zX0pwbzlFZVNGdExvVmUyLXNvUSIvPg0KKyAgICAgICAgPGxheW91dENvbnN0cmFpbnQgeG1pOnR5cGU9Im5vdGF0aW9uOkJvdW5kcyIgeG1pOmlkPSJfY24zX0o1bzlFZVNGdExvVmUyLXNvUSIvPg0KKyAgICAgIDwvY2hpbGRyZW4+DQorICAgICAgPGNoaWxkcmVuIHhtaTp0eXBlPSJub3RhdGlvbjpCYXNpY0NvbXBhcnRtZW50IiB4bWk6aWQ9Il9jbjNfS0pvOUVlU0Z0TG9WZTItc29RIiB2aXNpYmxlPSJmYWxzZSIgdHlwZT0iMTAxOSI+DQorICAgICAgICA8c3R5bGVzIHhtaTp0eXBlPSJub3RhdGlvbjpUaXRsZVN0eWxlIiB4bWk6aWQ9Il9jbjNfS1pvOUVlU0Z0TG9WZTItc29RIi8+DQorICAgICAgICA8c3R5bGVzIHhtaTp0eXBlPSJub3RhdGlvbjpTb3J0aW5nU3R5bGUiIHhtaTppZD0iX2NuM19LcG85RWVTRnRMb1ZlMi1zb1EiLz4NCisgICAgICAgIDxzdHlsZXMgeG1pOnR5cGU9Im5vdGF0aW9uOkZpbHRlcmluZ1N0eWxlIiB4bWk6aWQ9Il9jbjNfSzVvOUVlU0Z0TG9WZTItc29RIi8+DQorICAgICAgICA8bGF5b3V0Q29uc3RyYWludCB4bWk6dHlwZT0ibm90YXRpb246Qm91bmRzIiB4bWk6aWQ9Il9jbjNfTEpvOUVlU0Z0TG9WZTItc29RIi8+DQorICAgICAgPC9jaGlsZHJlbj4NCisgICAgICA8ZWxlbWVudCB4bWk6dHlwZT0idW1sOlN0ZXJlb3R5cGUiIGhyZWY9IlN5c01MLnByb2ZpbGUudW1sI1N5c01MLVJlcXVpcmVtZW50cy1Db3B5Ii8+DQorICAgICAgPGxheW91dENvbnN0cmFpbnQgeG1pOnR5cGU9Im5vdGF0aW9uOkJvdW5kcyIgeG1pOmlkPSJfY24zX0labzlFZVNGdExvVmUyLXNvUSIgeD0iNjgwIiB5PSIyMjAiIGhlaWdodD0iNDEiLz4NCisgICAgPC9jaGlsZHJlbj4NCisgICAgPGNoaWxkcmVuIHhtaTp0eXBlPSJub3RhdGlvbjpTaGFwZSIgeG1pOmlkPSJfZGh4YmtKbzlFZVNGdExvVmUyLXNvUSIgdHlwZT0iMTAyNiI+DQorICAgICAgPGNoaWxkcmVuIHhtaTp0eXBlPSJub3RhdGlvbjpEZWNvcmF0aW9uTm9kZSIgeG1pOmlkPSJfZGh4YmtwbzlFZVNGdExvVmUyLXNvUSIgdHlwZT0iMTAzNCIvPg0KKyAgICAgIDxjaGlsZHJlbiB4bWk6dHlwZT0ibm90YXRpb246QmFzaWNDb21wYXJ0bWVudCIgeG1pOmlkPSJfZGh4Yms1bzlFZVNGdExvVmUyLXNvUSIgdmlzaWJsZT0iZmFsc2UiIHR5cGU9IjEwNzEiPg0KKyAgICAgICAgPHN0eWxlcyB4bWk6dHlwZT0ibm90YXRpb246VGl0bGVTdHlsZSIgeG1pOmlkPSJfZGh4YmxKbzlFZVNGdExvVmUyLXNvUSIvPg0KKyAgICAgICAgPHN0eWxlcyB4bWk6dHlwZT0ibm90YXRpb246U29ydGluZ1N0eWxlIiB4bWk6aWQ9Il9kaHhibFpvOUVlU0Z0TG9WZTItc29RIi8+DQorICAgICAgICA8c3R5bGVzIHhtaTp0eXBlPSJub3RhdGlvbjpGaWx0ZXJpbmdTdHlsZSIgeG1pOmlkPSJfZGh4YmxwbzlFZVNGdExvVmUyLXNvUSIvPg0KKyAgICAgICAgPGxheW91dENvbnN0cmFpbnQgeG1pOnR5cGU9Im5vdGF0aW9uOkJvdW5kcyIgeG1pOmlkPSJfZGh4Ymw1bzlFZVNGdExvVmUyLXNvUSIvPg0KKyAgICAgIDwvY2hpbGRyZW4+DQorICAgICAgPGNoaWxkcmVuIHhtaTp0eXBlPSJub3RhdGlvbjpCYXNpY0NvbXBhcnRtZW50IiB4bWk6aWQ9Il9kaHhibUpvOUVlU0Z0TG9WZTItc29RIiB2aXNpYmxlPSJmYWxzZSIgdHlwZT0iMTAxOSI+DQorICAgICAgICA8c3R5bGVzIHhtaTp0eXBlPSJub3RhdGlvbjpUaXRsZVN0eWxlIiB4bWk6aWQ9Il9kaHhibVpvOUVlU0Z0TG9WZTItc29RIi8+DQorICAgICAgICA8c3R5bGVzIHhtaTp0eXBlPSJub3RhdGlvbjpTb3J0aW5nU3R5bGUiIHhtaTppZD0iX2RoeGJtcG85RWVTRnRMb1ZlMi1zb1EiLz4NCisgICAgICAgIDxzdHlsZXMgeG1pOnR5cGU9Im5vdGF0aW9uOkZpbHRlcmluZ1N0eWxlIiB4bWk6aWQ9Il9kaHhibTVvOUVlU0Z0TG9WZTItc29RIi8+DQorICAgICAgICA8bGF5b3V0Q29uc3RyYWludCB4bWk6dHlwZT0ibm90YXRpb246Qm91bmRzIiB4bWk6aWQ9Il9kaHhibkpvOUVlU0Z0TG9WZTItc29RIi8+DQorICAgICAgPC9jaGlsZHJlbj4NCisgICAgICA8ZWxlbWVudCB4bWk6dHlwZT0idW1sOlN0ZXJlb3R5cGUiIGhyZWY9IlN5c01MLnByb2ZpbGUudW1sI1N5c01MLVJlcXVpcmVtZW50cy1TYXRpc2Z5Ii8+DQorICAgICAgPGxheW91dENvbnN0cmFpbnQgeG1pOnR5cGU9Im5vdGF0aW9uOkJvdW5kcyIgeG1pOmlkPSJfZGh4YmtabzlFZVNGdExvVmUyLXNvUSIgeD0iODIwIiB5PSIyMjAiIGhlaWdodD0iNDEiLz4NCisgICAgPC9jaGlsZHJlbj4NCisgICAgPGNoaWxkcmVuIHhtaTp0eXBlPSJub3RhdGlvbjpTaGFwZSIgeG1pOmlkPSJfeFhTMGdKbzlFZVNGdExvVmUyLXNvUSIgdHlwZT0iMTAyNiI+DQorICAgICAgPGNoaWxkcmVuIHhtaTp0eXBlPSJub3RhdGlvbjpEZWNvcmF0aW9uTm9kZSIgeG1pOmlkPSJfeFhTMGdwbzlFZVNGdExvVmUyLXNvUSIgdHlwZT0iMTAzNCIvPg0KKyAgICAgIDxjaGlsZHJlbiB4bWk6dHlwZT0ibm90YXRpb246QmFzaWNDb21wYXJ0bWVudCIgeG1pOmlkPSJfeFhTMGc1bzlFZVNGdExvVmUyLXNvUSIgdHlwZT0iMTA3MSI+DQorICAgICAgICA8Y2hpbGRyZW4geG1pOnR5cGU9Im5vdGF0aW9uOlNoYXBlIiB4bWk6aWQ9Il8wRVpUOEpvOUVlU0Z0TG9WZTItc29RIiB0eXBlPSIzMDAyIj4NCisgICAgICAgICAgPGVsZW1lbnQgeG1pOnR5cGU9InVtbDpQcm9wZXJ0eSIgaHJlZj0iU3lzTUwucHJvZmlsZS51bWwjU3lzTUwtUmVxdWlyZW1lbnRzLVJlcXVpcmVtZW50LUlkIi8+DQorICAgICAgICAgIDxsYXlvdXRDb25zdHJhaW50IHhtaTp0eXBlPSJub3RhdGlvbjpMb2NhdGlvbiIgeG1pOmlkPSJfMEVaVDhabzlFZVNGdExvVmUyLXNvUSIvPg0KKyAgICAgICAgPC9jaGlsZHJlbj4NCisgICAgICAgIDxjaGlsZHJlbiB4bWk6dHlwZT0ibm90YXRpb246U2hhcGUiIHhtaTppZD0iXzBqenowSm85RWVTRnRMb1ZlMi1zb1EiIHR5cGU9IjMwMDIiPg0KKyAgICAgICAgICA8ZWxlbWVudCB4bWk6dHlwZT0idW1sOlByb3BlcnR5IiBocmVmPSJTeXNNTC5wcm9maWxlLnVtbCNTeXNNTC1SZXF1aXJlbWVudHMtUmVxdWlyZW1lbnQtVGV4dCIvPg0KKyAgICAgICAgICA8bGF5b3V0Q29uc3RyYWludCB4bWk6dHlwZT0ibm90YXRpb246TG9jYXRpb24iIHhtaTppZD0iXzBqenowWm85RWVTRnRMb1ZlMi1zb1EiLz4NCisgICAgICAgIDwvY2hpbGRyZW4+DQorICAgICAgICA8Y2hpbGRyZW4geG1pOnR5cGU9Im5vdGF0aW9uOlNoYXBlIiB4bWk6aWQ9Il8xbjBPZ0pvOUVlU0Z0TG9WZTItc29RIiB0eXBlPSIzMDAyIj4NCisgICAgICAgICAgPGVsZW1lbnQgeG1pOnR5cGU9InVtbDpQcm9wZXJ0eSIgaHJlZj0iU3lzTUwucHJvZmlsZS51bWwjU3lzTUwtUmVxdWlyZW1lbnRzLVJlcXVpcmVtZW50LURlcml2ZWQiLz4NCisgICAgICAgICAgPGxheW91dENvbnN0cmFpbnQgeG1pOnR5cGU9Im5vdGF0aW9uOkxvY2F0aW9uIiB4bWk6aWQ9Il8xbjBPZ1pvOUVlU0Z0TG9WZTItc29RIi8+DQorICAgICAgICA8L2NoaWxkcmVuPg0KKyAgICAgICAgPGNoaWxkcmVuIHhtaTp0eXBlPSJub3RhdGlvbjpTaGFwZSIgeG1pOmlkPSJfMW4wT2dwbzlFZVNGdExvVmUyLXNvUSIgdHlwZT0iMzAwMiI+DQorICAgICAgICAgIDxlbGVtZW50IHhtaTp0eXBlPSJ1bWw6UHJvcGVydHkiIGhyZWY9IlN5c01MLnByb2ZpbGUudW1sI1N5c01MLVJlcXVpcmVtZW50cy1SZXF1aXJlbWVudC1EZXJpdmVkRnJvbSIvPg0KKyAgICAgICAgICA8bGF5b3V0Q29uc3RyYWludCB4bWk6dHlwZT0ibm90YXRpb246TG9jYXRpb24iIHhtaTppZD0iXzFuME9nNW85RWVTRnRMb1ZlMi1zb1EiLz4NCisgICAgICAgIDwvY2hpbGRyZW4+DQorICAgICAgICA8Y2hpbGRyZW4geG1pOnR5cGU9Im5vdGF0aW9uOlNoYXBlIiB4bWk6aWQ9Il8xbjBPaEpvOUVlU0Z0TG9WZTItc29RIiB0eXBlPSIzMDAyIj4NCisgICAgICAgICAgPGVsZW1lbnQgeG1pOnR5cGU9InVtbDpQcm9wZXJ0eSIgaHJlZj0iU3lzTUwucHJvZmlsZS51bWwjU3lzTUwtUmVxdWlyZW1lbnRzLVJlcXVpcmVtZW50LU1hc3RlciIvPg0KKyAgICAgICAgICA8bGF5b3V0Q29uc3RyYWludCB4bWk6dHlwZT0ibm90YXRpb246TG9jYXRpb24iIHhtaTppZD0iXzFuME9oWm85RWVTRnRMb1ZlMi1zb1EiLz4NCisgICAgICAgIDwvY2hpbGRyZW4+DQorICAgICAgICA8Y2hpbGRyZW4geG1pOnR5cGU9Im5vdGF0aW9uOlNoYXBlIiB4bWk6aWQ9Il8xbjlfZ0pvOUVlU0Z0TG9WZTItc29RIiB0eXBlPSIzMDAyIj4NCisgICAgICAgICAgPGVsZW1lbnQgeG1pOnR5cGU9InVtbDpQcm9wZXJ0eSIgaHJlZj0iU3lzTUwucHJvZmlsZS51bWwjU3lzTUwtUmVxdWlyZW1lbnRzLVJlcXVpcmVtZW50LVJlZmluZWRCeSIvPg0KKyAgICAgICAgICA8bGF5b3V0Q29uc3RyYWludCB4bWk6dHlwZT0ibm90YXRpb246TG9jYXRpb24iIHhtaTppZD0iXzFuOV9nWm85RWVTRnRMb1ZlMi1zb1EiLz4NCisgICAgICAgIDwvY2hpbGRyZW4+DQorICAgICAgICA8Y2hpbGRyZW4geG1pOnR5cGU9Im5vdGF0aW9uOlNoYXBlIiB4bWk6aWQ9Il8xbjlfZ3BvOUVlU0Z0TG9WZTItc29RIiB0eXBlPSIzMDAyIj4NCisgICAgICAgICAgPGVsZW1lbnQgeG1pOnR5cGU9InVtbDpQcm9wZXJ0eSIgaHJlZj0iU3lzTUwucHJvZmlsZS51bWwjU3lzTUwtUmVxdWlyZW1lbnRzLVJlcXVpcmVtZW50LVNhdGlzZmllZEJ5Ii8+DQorICAgICAgICAgIDxsYXlvdXRDb25zdHJhaW50IHhtaTp0eXBlPSJub3RhdGlvbjpMb2NhdGlvbiIgeG1pOmlkPSJfMW45X2c1bzlFZVNGdExvVmUyLXNvUSIvPg0KKyAgICAgICAgPC9jaGlsZHJlbj4NCisgICAgICAgIDxjaGlsZHJlbiB4bWk6dHlwZT0ibm90YXRpb246U2hhcGUiIHhtaTppZD0iXzFuOV9oSm85RWVTRnRMb1ZlMi1zb1EiIHR5cGU9IjMwMDIiPg0KKyAgICAgICAgICA8ZWxlbWVudCB4bWk6dHlwZT0idW1sOlByb3BlcnR5IiBocmVmPSJTeXNNTC5wcm9maWxlLnVtbCNTeXNNTC1SZXF1aXJlbWVudHMtUmVxdWlyZW1lbnQtVHJhY2VkVG8iLz4NCisgICAgICAgICAgPGxheW91dENvbnN0cmFpbnQgeG1pOnR5cGU9Im5vdGF0aW9uOkxvY2F0aW9uIiB4bWk6aWQ9Il8xbjlfaFpvOUVlU0Z0TG9WZTItc29RIi8+DQorICAgICAgICA8L2NoaWxkcmVuPg0KKyAgICAgICAgPGNoaWxkcmVuIHhtaTp0eXBlPSJub3RhdGlvbjpTaGFwZSIgeG1pOmlkPSJfMW45X2hwbzlFZVNGdExvVmUyLXNvUSIgdHlwZT0iMzAwMiI+DQorICAgICAgICAgIDxlbGVtZW50IHhtaTp0eXBlPSJ1bWw6UHJvcGVydHkiIGhyZWY9IlN5c01MLnByb2ZpbGUudW1sI1N5c01MLVJlcXVpcmVtZW50cy1SZXF1aXJlbWVudC1WZXJpZmllZEJ5Ii8+DQorICAgICAgICAgIDxsYXlvdXRDb25zdHJhaW50IHhtaTp0eXBlPSJub3RhdGlvbjpMb2NhdGlvbiIgeG1pOmlkPSJfMW45X2g1bzlFZVNGdExvVmUyLXNvUSIvPg0KKyAgICAgICAgPC9jaGlsZHJlbj4NCisgICAgICAgIDxzdHlsZXMgeG1pOnR5cGU9Im5vdGF0aW9uOlRpdGxlU3R5bGUiIHhtaTppZD0iX3hYUzBoSm85RWVTRnRMb1ZlMi1zb1EiLz4NCisgICAgICAgIDxzdHlsZXMgeG1pOnR5cGU9Im5vdGF0aW9uOlNvcnRpbmdTdHlsZSIgeG1pOmlkPSJfeFhTMGhabzlFZVNGdExvVmUyLXNvUSIvPg0KKyAgICAgICAgPHN0eWxlcyB4bWk6dHlwZT0ibm90YXRpb246RmlsdGVyaW5nU3R5bGUiIHhtaTppZD0iX3hYUzBocG85RWVTRnRMb1ZlMi1zb1EiLz4NCisgICAgICAgIDxsYXlvdXRDb25zdHJhaW50IHhtaTp0eXBlPSJub3RhdGlvbjpCb3VuZHMiIHhtaTppZD0iX3hYUzBoNW85RWVTRnRMb1ZlMi1zb1EiLz4NCisgICAgICA8L2NoaWxkcmVuPg0KKyAgICAgIDxjaGlsZHJlbiB4bWk6dHlwZT0ibm90YXRpb246QmFzaWNDb21wYXJ0bWVudCIgeG1pOmlkPSJfeFhTMGlKbzlFZVNGdExvVmUyLXNvUSIgdmlzaWJsZT0iZmFsc2UiIHR5cGU9IjEwMTkiPg0KKyAgICAgICAgPHN0eWxlcyB4bWk6dHlwZT0ibm90YXRpb246VGl0bGVTdHlsZSIgeG1pOmlkPSJfeFhTMGlabzlFZVNGdExvVmUyLXNvUSIvPg0KKyAgICAgICAgPHN0eWxlcyB4bWk6dHlwZT0ibm90YXRpb246U29ydGluZ1N0eWxlIiB4bWk6aWQ9Il94WFMwaXBvOUVlU0Z0TG9WZTItc29RIi8+DQorICAgICAgICA8c3R5bGVzIHhtaTp0eXBlPSJub3RhdGlvbjpGaWx0ZXJpbmdTdHlsZSIgeG1pOmlkPSJfeFhTMGk1bzlFZVNGdExvVmUyLXNvUSIvPg0KKyAgICAgICAgPGxheW91dENvbnN0cmFpbnQgeG1pOnR5cGU9Im5vdGF0aW9uOkJvdW5kcyIgeG1pOmlkPSJfeFhTMGpKbzlFZVNGdExvVmUyLXNvUSIvPg0KKyAgICAgIDwvY2hpbGRyZW4+DQorICAgICAgPGVsZW1lbnQgeG1pOnR5cGU9InVtbDpTdGVyZW90eXBlIiBocmVmPSJTeXNNTC5wcm9maWxlLnVtbCNTeXNNTC1SZXF1aXJlbWVudHMtUmVxdWlyZW1lbnQiLz4NCisgICAgICA8bGF5b3V0Q29uc3RyYWludCB4bWk6dHlwZT0ibm90YXRpb246Qm91bmRzIiB4bWk6aWQ9Il94WFMwZ1pvOUVlU0Z0TG9WZTItc29RIiB4PSI4MCIgeT0iMjYwIi8+DQorICAgIDwvY2hpbGRyZW4+DQorICAgIDxjaGlsZHJlbiB4bWk6dHlwZT0ibm90YXRpb246U2hhcGUiIHhtaTppZD0iX3hmTGxNSm85RWVTRnRMb1ZlMi1zb1EiIHR5cGU9IjEwMzEiPg0KKyAgICAgIDxjaGlsZHJlbiB4bWk6dHlwZT0ibm90YXRpb246RGVjb3JhdGlvbk5vZGUiIHhtaTppZD0iX3hmTGxNcG85RWVTRnRMb1ZlMi1zb1EiIHR5cGU9IjEwODQiLz4NCisgICAgICA8ZWxlbWVudCB4bWk6dHlwZT0idW1sOkNsYXNzIiBocmVmPSJwYXRobWFwOi8vVU1MX01FVEFNT0RFTFMvVU1MLm1ldGFtb2RlbC51bWwjQ2xhc3MiLz4NCisgICAgICA8bGF5b3V0Q29uc3RyYWludCB4bWk6dHlwZT0ibm90YXRpb246Qm91bmRzIiB4bWk6aWQ9Il94ZkxsTVpvOUVlU0Z0TG9WZTItc29RIiB4PSI4MCIgeT0iMTQwIiB3aWR0aD0iMjIxIi8+DQorICAgIDwvY2hpbGRyZW4+DQorICAgIDxjaGlsZHJlbiB4bWk6dHlwZT0ibm90YXRpb246U2hhcGUiIHhtaTppZD0iX1VRUHdZSm8tRWVTRnRMb1ZlMi1zb1EiIHR5cGU9IjEwMjYiPg0KKyAgICAgIDxjaGlsZHJlbiB4bWk6dHlwZT0ibm90YXRpb246RGVjb3JhdGlvbk5vZGUiIHhtaTppZD0iX1VRUHdZcG8tRWVTRnRMb1ZlMi1zb1EiIHR5cGU9IjEwMzQiLz4NCisgICAgICA8Y2hpbGRyZW4geG1pOnR5cGU9Im5vdGF0aW9uOkJhc2ljQ29tcGFydG1lbnQiIHhtaTppZD0iX1VRUHdZNW8tRWVTRnRMb1ZlMi1zb1EiIHZpc2libGU9ImZhbHNlIiB0eXBlPSIxMDcxIj4NCisgICAgICAgIDxzdHlsZXMgeG1pOnR5cGU9Im5vdGF0aW9uOlRpdGxlU3R5bGUiIHhtaTppZD0iX1VRUHdaSm8tRWVTRnRMb1ZlMi1zb1EiLz4NCisgICAgICAgIDxzdHlsZXMgeG1pOnR5cGU9Im5vdGF0aW9uOlNvcnRpbmdTdHlsZSIgeG1pOmlkPSJfVVFQd1paby1FZVNGdExvVmUyLXNvUSIvPg0KKyAgICAgICAgPHN0eWxlcyB4bWk6dHlwZT0ibm90YXRpb246RmlsdGVyaW5nU3R5bGUiIHhtaTppZD0iX1VRUHdacG8tRWVTRnRMb1ZlMi1zb1EiLz4NCisgICAgICAgIDxsYXlvdXRDb25zdHJhaW50IHhtaTp0eXBlPSJub3RhdGlvbjpCb3VuZHMiIHhtaTppZD0iX1VRUHdaNW8tRWVTRnRMb1ZlMi1zb1EiLz4NCisgICAgICA8L2NoaWxkcmVuPg0KKyAgICAgIDxjaGlsZHJlbiB4bWk6dHlwZT0ibm90YXRpb246QmFzaWNDb21wYXJ0bWVudCIgeG1pOmlkPSJfVVFQd2FKby1FZVNGdExvVmUyLXNvUSIgdmlzaWJsZT0iZmFsc2UiIHR5cGU9IjEwMTkiPg0KKyAgICAgICAgPHN0eWxlcyB4bWk6dHlwZT0ibm90YXRpb246VGl0bGVTdHlsZSIgeG1pOmlkPSJfVVFQd2Faby1FZVNGdExvVmUyLXNvUSIvPg0KKyAgICAgICAgPHN0eWxlcyB4bWk6dHlwZT0ibm90YXRpb246U29ydGluZ1N0eWxlIiB4bWk6aWQ9Il9VUVB3YXBvLUVlU0Z0TG9WZTItc29RIi8+DQorICAgICAgICA8c3R5bGVzIHhtaTp0eXBlPSJub3RhdGlvbjpGaWx0ZXJpbmdTdHlsZSIgeG1pOmlkPSJfVVFQd2E1by1FZVNGdExvVmUyLXNvUSIvPg0KKyAgICAgICAgPGxheW91dENvbnN0cmFpbnQgeG1pOnR5cGU9Im5vdGF0aW9uOkJvdW5kcyIgeG1pOmlkPSJfVVFQd2JKby1FZVNGdExvVmUyLXNvUSIvPg0KKyAgICAgIDwvY2hpbGRyZW4+DQorICAgICAgPGVsZW1lbnQgeG1pOnR5cGU9InVtbDpTdGVyZW90eXBlIiBocmVmPSJTeXNNTC5wcm9maWxlLnVtbCNTeXNNTC1SZXF1aXJlbWVudHMtVGVzdENhc2UiLz4NCisgICAgICA8bGF5b3V0Q29uc3RyYWludCB4bWk6dHlwZT0ibm90YXRpb246Qm91bmRzIiB4bWk6aWQ9Il9VUVB3WVpvLUVlU0Z0TG9WZTItc29RIiB4PSI0NDkiIHk9IjQyMiIgd2lkdGg9IjIzMiIgaGVpZ2h0PSIzOSIvPg0KKyAgICA8L2NoaWxkcmVuPg0KKyAgICA8Y2hpbGRyZW4geG1pOnR5cGU9Im5vdGF0aW9uOlNoYXBlIiB4bWk6aWQ9Il9VUVpoWTVvLUVlU0Z0TG9WZTItc29RIiB0eXBlPSIxMDMxIj4NCisgICAgICA8Y2hpbGRyZW4geG1pOnR5cGU9Im5vdGF0aW9uOkRlY29yYXRpb25Ob2RlIiB4bWk6aWQ9Il9VUVpoWlpvLUVlU0Z0TG9WZTItc29RIiB0eXBlPSIxMDg0Ii8+DQorICAgICAgPGVsZW1lbnQgeG1pOnR5cGU9InVtbDpDbGFzcyIgaHJlZj0icGF0aG1hcDovL1VNTF9NRVRBTU9ERUxTL1VNTC5tZXRhbW9kZWwudW1sI0JlaGF2aW9yIi8+DQorICAgICAgPGxheW91dENvbnN0cmFpbnQgeG1pOnR5cGU9Im5vdGF0aW9uOkJvdW5kcyIgeG1pOmlkPSJfVVFaaFpKby1FZVNGdExvVmUyLXNvUSIgeD0iNDQwIiB5PSIzMDAiLz4NCisgICAgPC9jaGlsZHJlbj4NCisgICAgPGNoaWxkcmVuIHhtaTp0eXBlPSJub3RhdGlvbjpTaGFwZSIgeG1pOmlkPSJfVnpXaDRKby1FZVNGdExvVmUyLXNvUSIgdHlwZT0iMTAzMSI+DQorICAgICAgPGNoaWxkcmVuIHhtaTp0eXBlPSJub3RhdGlvbjpEZWNvcmF0aW9uTm9kZSIgeG1pOmlkPSJfVnpXaDRwby1FZVNGdExvVmUyLXNvUSIgdHlwZT0iMTA4NCIvPg0KKyAgICAgIDxlbGVtZW50IHhtaTp0eXBlPSJ1bWw6Q2xhc3MiIGhyZWY9InBhdGhtYXA6Ly9VTUxfTUVUQU1PREVMUy9VTUwubWV0YW1vZGVsLnVtbCNPcGVyYXRpb24iLz4NCisgICAgICA8bGF5b3V0Q29uc3RyYWludCB4bWk6dHlwZT0ibm90YXRpb246Qm91bmRzIiB4bWk6aWQ9Il9WeldoNFpvLUVlU0Z0TG9WZTItc29RIiB4PSI1ODAiIHk9IjMwMCIvPg0KKyAgICA8L2NoaWxkcmVuPg0KKyAgICA8Y2hpbGRyZW4geG1pOnR5cGU9Im5vdGF0aW9uOlNoYXBlIiB4bWk6aWQ9Il9kZFQ4NEpvLUVlU0Z0TG9WZTItc29RIiB0eXBlPSIxMDI2Ij4NCisgICAgICA8Y2hpbGRyZW4geG1pOnR5cGU9Im5vdGF0aW9uOkRlY29yYXRpb25Ob2RlIiB4bWk6aWQ9Il9kZFQ4NHBvLUVlU0Z0TG9WZTItc29RIiB0eXBlPSIxMDM0Ii8+DQorICAgICAgPGNoaWxkcmVuIHhtaTp0eXBlPSJub3RhdGlvbjpCYXNpY0NvbXBhcnRtZW50IiB4bWk6aWQ9Il9kZFQ4NDVvLUVlU0Z0TG9WZTItc29RIiB2aXNpYmxlPSJmYWxzZSIgdHlwZT0iMTA3MSI+DQorICAgICAgICA8c3R5bGVzIHhtaTp0eXBlPSJub3RhdGlvbjpUaXRsZVN0eWxlIiB4bWk6aWQ9Il9kZFQ4NUpvLUVlU0Z0TG9WZTItc29RIi8+DQorICAgICAgICA8c3R5bGVzIHhtaTp0eXBlPSJub3RhdGlvbjpTb3J0aW5nU3R5bGUiIHhtaTppZD0iX2RkVDg1Wm8tRWVTRnRMb1ZlMi1zb1EiLz4NCisgICAgICAgIDxzdHlsZXMgeG1pOnR5cGU9Im5vdGF0aW9uOkZpbHRlcmluZ1N0eWxlIiB4bWk6aWQ9Il9kZFQ4NXBvLUVlU0Z0TG9WZTItc29RIi8+DQorICAgICAgICA8bGF5b3V0Q29uc3RyYWludCB4bWk6dHlwZT0ibm90YXRpb246Qm91bmRzIiB4bWk6aWQ9Il9kZFQ4NTVvLUVlU0Z0TG9WZTItc29RIi8+DQorICAgICAgPC9jaGlsZHJlbj4NCisgICAgICA8Y2hpbGRyZW4geG1pOnR5cGU9Im5vdGF0aW9uOkJhc2ljQ29tcGFydG1lbnQiIHhtaTppZD0iX2RkVDg2Sm8tRWVTRnRMb1ZlMi1zb1EiIHZpc2libGU9ImZhbHNlIiB0eXBlPSIxMDE5Ij4NCisgICAgICAgIDxzdHlsZXMgeG1pOnR5cGU9Im5vdGF0aW9uOlRpdGxlU3R5bGUiIHhtaTppZD0iX2RkVDg2Wm8tRWVTRnRMb1ZlMi1zb1EiLz4NCisgICAgICAgIDxzdHlsZXMgeG1pOnR5cGU9Im5vdGF0aW9uOlNvcnRpbmdTdHlsZSIgeG1pOmlkPSJfZGRUODZwby1FZVNGdExvVmUyLXNvUSIvPg0KKyAgICAgICAgPHN0eWxlcyB4bWk6dHlwZT0ibm90YXRpb246RmlsdGVyaW5nU3R5bGUiIHhtaTppZD0iX2RkVDg2NW8tRWVTRnRMb1ZlMi1zb1EiLz4NCisgICAgICAgIDxsYXlvdXRDb25zdHJhaW50IHhtaTp0eXBlPSJub3RhdGlvbjpCb3VuZHMiIHhtaTppZD0iX2RkVDg3Sm8tRWVTRnRMb1ZlMi1zb1EiLz4NCisgICAgICA8L2NoaWxkcmVuPg0KKyAgICAgIDxlbGVtZW50IHhtaTp0eXBlPSJ1bWw6U3RlcmVvdHlwZSIgaHJlZj0iU3lzTUwucHJvZmlsZS51bWwjU3lzTUwtUmVxdWlyZW1lbnRzLVJlZmluZSIvPg0KKyAgICAgIDxsYXlvdXRDb25zdHJhaW50IHhtaTp0eXBlPSJub3RhdGlvbjpCb3VuZHMiIHhtaTppZD0iX2RkVDg0Wm8tRWVTRnRMb1ZlMi1zb1EiIHg9Ijk2MCIgeT0iMjIwIiB3aWR0aD0iMjAxIiBoZWlnaHQ9IjQxIi8+DQorICAgIDwvY2hpbGRyZW4+DQorICAgIDxjaGlsZHJlbiB4bWk6dHlwZT0ibm90YXRpb246U2hhcGUiIHhtaTppZD0iX2RkZEcwNW8tRWVTRnRMb1ZlMi1zb1EiIHR5cGU9IjEwMjYiPg0KKyAgICAgIDxjaGlsZHJlbiB4bWk6dHlwZT0ibm90YXRpb246RGVjb3JhdGlvbk5vZGUiIHhtaTppZD0iX2RkZEcxWm8tRWVTRnRMb1ZlMi1zb1EiIHR5cGU9IjEwMzQiLz4NCisgICAgICA8Y2hpbGRyZW4geG1pOnR5cGU9Im5vdGF0aW9uOkJhc2ljQ29tcGFydG1lbnQiIHhtaTppZD0iX2RkZEcxcG8tRWVTRnRMb1ZlMi1zb1EiIHZpc2libGU9ImZhbHNlIiB0eXBlPSIxMDcxIj4NCisgICAgICAgIDxzdHlsZXMgeG1pOnR5cGU9Im5vdGF0aW9uOlRpdGxlU3R5bGUiIHhtaTppZD0iX2RkZEcxNW8tRWVTRnRMb1ZlMi1zb1EiLz4NCisgICAgICAgIDxzdHlsZXMgeG1pOnR5cGU9Im5vdGF0aW9uOlNvcnRpbmdTdHlsZSIgeG1pOmlkPSJfZGRkRzJKby1FZVNGdExvVmUyLXNvUSIvPg0KKyAgICAgICAgPHN0eWxlcyB4bWk6dHlwZT0ibm90YXRpb246RmlsdGVyaW5nU3R5bGUiIHhtaTppZD0iX2RkZEcyWm8tRWVTRnRMb1ZlMi1zb1EiLz4NCisgICAgICAgIDxsYXlvdXRDb25zdHJhaW50IHhtaTp0eXBlPSJub3RhdGlvbjpCb3VuZHMiIHhtaTppZD0iX2RkZEcycG8tRWVTRnRMb1ZlMi1zb1EiLz4NCisgICAgICA8L2NoaWxkcmVuPg0KKyAgICAgIDxjaGlsZHJlbiB4bWk6dHlwZT0ibm90YXRpb246QmFzaWNDb21wYXJ0bWVudCIgeG1pOmlkPSJfZGRkRzI1by1FZVNGdExvVmUyLXNvUSIgdmlzaWJsZT0iZmFsc2UiIHR5cGU9IjEwMTkiPg0KKyAgICAgICAgPHN0eWxlcyB4bWk6dHlwZT0ibm90YXRpb246VGl0bGVTdHlsZSIgeG1pOmlkPSJfZGRkRzNKby1FZVNGdExvVmUyLXNvUSIvPg0KKyAgICAgICAgPHN0eWxlcyB4bWk6dHlwZT0ibm90YXRpb246U29ydGluZ1N0eWxlIiB4bWk6aWQ9Il9kZGRHM1pvLUVlU0Z0TG9WZTItc29RIi8+DQorICAgICAgICA8c3R5bGVzIHhtaTp0eXBlPSJub3RhdGlvbjpGaWx0ZXJpbmdTdHlsZSIgeG1pOmlkPSJfZGRkRzNwby1FZVNGdExvVmUyLXNvUSIvPg0KKyAgICAgICAgPGxheW91dENvbnN0cmFpbnQgeG1pOnR5cGU9Im5vdGF0aW9uOkJvdW5kcyIgeG1pOmlkPSJfZGRkRzM1by1FZVNGdExvVmUyLXNvUSIvPg0KKyAgICAgIDwvY2hpbGRyZW4+DQorICAgICAgPGVsZW1lbnQgeG1pOnR5cGU9InVtbDpTdGVyZW90eXBlIiBocmVmPSJwYXRobWFwOi8vVU1MX1BST0ZJTEVTL1N0YW5kYXJkLnByb2ZpbGUudW1sI1JlZmluZSIvPg0KKyAgICAgIDxsYXlvdXRDb25zdHJhaW50IHhtaTp0eXBlPSJub3RhdGlvbjpCb3VuZHMiIHhtaTppZD0iX2RkZEcxSm8tRWVTRnRMb1ZlMi1zb1EiIHg9IjEwNDAiIHk9IjIwIiBoZWlnaHQ9IjQxIi8+DQorICAgIDwvY2hpbGRyZW4+DQorICAgIDxzdHlsZXMgeG1pOnR5cGU9Im5vdGF0aW9uOlN0cmluZ1ZhbHVlU3R5bGUiIHhtaTppZD0iXzV2YlprWm84RWVTRnRMb1ZlMi1zb1EiIG5hbWU9ImRpYWdyYW1fY29tcGF0aWJpbGl0eV92ZXJzaW9uIiBzdHJpbmdWYWx1ZT0iMS4wLjAiLz4NCisgICAgPHN0eWxlcyB4bWk6dHlwZT0ibm90YXRpb246RGlhZ3JhbVN0eWxlIiB4bWk6aWQ9Il81dmJaa3BvOEVlU0Z0TG9WZTItc29RIi8+DQorICAgIDxzdHlsZXMgeG1pOnR5cGU9InN0eWxlOlBhcHlydXNWaWV3U3R5bGUiIHhtaTppZD0iXzV2YlprNW84RWVTRnRMb1ZlMi1zb1EiPg0KKyAgICAgIDxvd25lciB4bWk6dHlwZT0idW1sOlBhY2thZ2UiIGhyZWY9IlN5c01MLnByb2ZpbGUudW1sI1N5c01MLVJlcXVpcmVtZW50cyIvPg0KKyAgICA8L3N0eWxlcz4NCisgICAgPGVsZW1lbnQgeG1pOnR5cGU9InVtbDpQYWNrYWdlIiBocmVmPSJTeXNNTC5wcm9maWxlLnVtbCNTeXNNTC1SZXF1aXJlbWVudHMiLz4NCisgICAgPGVkZ2VzIHhtaTp0eXBlPSJub3RhdGlvbjpDb25uZWN0b3IiIHhtaTppZD0iX0NkR1VYcG85RWVTRnRMb1ZlMi1zb1EiIHR5cGU9IjQwMDIiIHNvdXJjZT0iX0NjOUtZSm85RWVTRnRMb1ZlMi1zb1EiIHRhcmdldD0iX0NjOUtjSm85RWVTRnRMb1ZlMi1zb1EiPg0KKyAgICAgIDxjaGlsZHJlbiB4bWk6dHlwZT0ibm90YXRpb246RGVjb3JhdGlvbk5vZGUiIHhtaTppZD0iX0NkR1VZWm85RWVTRnRMb1ZlMi1zb1EiIHR5cGU9IjYwMDciPg0KKyAgICAgICAgPGxheW91dENvbnN0cmFpbnQgeG1pOnR5cGU9Im5vdGF0aW9uOkxvY2F0aW9uIiB4bWk6aWQ9Il9DZEdVWXBvOUVlU0Z0TG9WZTItc29RIiB5PSI2MCIvPg0KKyAgICAgIDwvY2hpbGRyZW4+DQorICAgICAgPHN0eWxlcyB4bWk6dHlwZT0ibm90YXRpb246Rm9udFN0eWxlIiB4bWk6aWQ9Il9DZEdVWDVvOUVlU0Z0TG9WZTItc29RIi8+DQorICAgICAgPGVsZW1lbnQgeG1pOnR5cGU9InVtbDpHZW5lcmFsaXphdGlvbiIgaHJlZj0iU3lzTUwucHJvZmlsZS51bWwjU3lzTUwtUmVxdWlyZW1lbnRzLVRyYWNlLWdlbmVyYWxpemF0aW9uMSIvPg0KKyAgICAgIDxiZW5kcG9pbnRzIHhtaTp0eXBlPSJub3RhdGlvbjpSZWxhdGl2ZUJlbmRwb2ludHMiIHhtaTppZD0iX0NkR1VZSm85RWVTRnRMb1ZlMi1zb1EiIHBvaW50cz0iWzMsIDAsIC00OCwgNTldJFszLCAtNTksIC00OCwgMF0iLz4NCisgICAgICA8c291cmNlQW5jaG9yIHhtaTp0eXBlPSJub3RhdGlvbjpJZGVudGl0eUFuY2hvciIgeG1pOmlkPSJfRXN2YnNKbzlFZVNGdExvVmUyLXNvUSIgaWQ9IigwLjExLDAuMCkiLz4NCisgICAgICA8dGFyZ2V0QW5jaG9yIHhtaTp0eXBlPSJub3RhdGlvbjpJZGVudGl0eUFuY2hvciIgeG1pOmlkPSJfRXN2YnNabzlFZVNGdExvVmUyLXNvUSIgaWQ9IigwLjg4LDEuMCkiLz4NCisgICAgPC9lZGdlcz4NCisgICAgPGVkZ2VzIHhtaTp0eXBlPSJub3RhdGlvbjpDb25uZWN0b3IiIHhtaTppZD0iX0M3ZVNZNW85RWVTRnRMb1ZlMi1zb1EiIHR5cGU9IjQwMDIiIHNvdXJjZT0iX0NjOUtZSm85RWVTRnRMb1ZlMi1zb1EiIHRhcmdldD0iX0M3VWhZSm85RWVTRnRMb1ZlMi1zb1EiPg0KKyAgICAgIDxjaGlsZHJlbiB4bWk6dHlwZT0ibm90YXRpb246RGVjb3JhdGlvbk5vZGUiIHhtaTppZD0iX0M3ZVNacG85RWVTRnRMb1ZlMi1zb1EiIHR5cGU9IjYwMDciPg0KKyAgICAgICAgPGxheW91dENvbnN0cmFpbnQgeG1pOnR5cGU9Im5vdGF0aW9uOkxvY2F0aW9uIiB4bWk6aWQ9Il9DN2VTWjVvOUVlU0Z0TG9WZTItc29RIiB5PSI2MCIvPg0KKyAgICAgIDwvY2hpbGRyZW4+DQorICAgICAgPHN0eWxlcyB4bWk6dHlwZT0ibm90YXRpb246Rm9udFN0eWxlIiB4bWk6aWQ9Il9DN2VTWkpvOUVlU0Z0TG9WZTItc29RIi8+DQorICAgICAgPGVsZW1lbnQgeG1pOnR5cGU9InVtbDpHZW5lcmFsaXphdGlvbiIgaHJlZj0iU3lzTUwucHJvZmlsZS51bWwjU3lzTUwtUmVxdWlyZW1lbnRzLVRyYWNlLWdlbmVyYWxpemF0aW9uMiIvPg0KKyAgICAgIDxiZW5kcG9pbnRzIHhtaTp0eXBlPSJub3RhdGlvbjpSZWxhdGl2ZUJlbmRwb2ludHMiIHhtaTppZD0iX0M3ZVNaWm85RWVTRnRMb1ZlMi1zb1EiIHBvaW50cz0iWy05NiwgMCwgMTksIDU5XSRbLTk2LCAtNTksIDE5LCAwXSIvPg0KKyAgICAgIDxzb3VyY2VBbmNob3IgeG1pOnR5cGU9Im5vdGF0aW9uOklkZW50aXR5QW5jaG9yIiB4bWk6aWQ9Il9EUUpoNEpvOUVlU0Z0TG9WZTItc29RIiBpZD0iKDAuOTI4NzQxMDkyNjM2NTc5NiwwLjApIi8+DQorICAgICAgPHRhcmdldEFuY2hvciB4bWk6dHlwZT0ibm90YXRpb246SWRlbnRpdHlBbmNob3IiIHhtaTppZD0iX0RRVFM0Sm85RWVTRnRMb1ZlMi1zb1EiIGlkPSIoMC4zMDUsMS4wKSIvPg0KKyAgICA8L2VkZ2VzPg0KKyAgICA8ZWRnZXMgeG1pOnR5cGU9Im5vdGF0aW9uOkNvbm5lY3RvciIgeG1pOmlkPSJfWGtCcXdabzlFZVNGdExvVmUyLXNvUSIgdHlwZT0iNDAwMiIgc291cmNlPSJfWGo0ZzBKbzlFZVNGdExvVmUyLXNvUSIgdGFyZ2V0PSJfQ2M5S1lKbzlFZVNGdExvVmUyLXNvUSIgcm91dGluZz0iVHJlZSI+DQorICAgICAgPGNoaWxkcmVuIHhtaTp0eXBlPSJub3RhdGlvbjpEZWNvcmF0aW9uTm9kZSIgeG1pOmlkPSJfWGtCcXhKbzlFZVNGdExvVmUyLXNvUSIgdHlwZT0iNjAwNyI+DQorICAgICAgICA8bGF5b3V0Q29uc3RyYWludCB4bWk6dHlwZT0ibm90YXRpb246TG9jYXRpb24iIHhtaTppZD0iX1hrQnF4Wm85RWVTRnRMb1ZlMi1zb1EiIHg9Ii0yMCIgeT0iLTYiLz4NCisgICAgICA8L2NoaWxkcmVuPg0KKyAgICAgIDxzdHlsZXMgeG1pOnR5cGU9Im5vdGF0aW9uOkZvbnRTdHlsZSIgeG1pOmlkPSJfWGtCcXdwbzlFZVNGdExvVmUyLXNvUSIvPg0KKyAgICAgIDxlbGVtZW50IHhtaTp0eXBlPSJ1bWw6R2VuZXJhbGl6YXRpb24iIGhyZWY9IlN5c01MLnByb2ZpbGUudW1sI1N5c01MLVJlcXVpcmVtZW50cy1EZXJpdmVSZXF0LWdlbmVyYWxpemF0aW9uIi8+DQorICAgICAgPGJlbmRwb2ludHMgeG1pOnR5cGU9Im5vdGF0aW9uOlJlbGF0aXZlQmVuZHBvaW50cyIgeG1pOmlkPSJfWGtCcXc1bzlFZVNGdExvVmUyLXNvUSIgcG9pbnRzPSJbLTYwLCAtNCwgLTkwLCA1OV0kWy02MCwgLTMxLCAtOTAsIDMyXSRbMTEwLCAtMzEsIDgwLCAzMl0kWzExMCwgLTYzLCA4MCwgMF0iLz4NCisgICAgICA8c291cmNlQW5jaG9yIHhtaTp0eXBlPSJub3RhdGlvbjpJZGVudGl0eUFuY2hvciIgeG1pOmlkPSJfZVIwX2dKbzlFZVNGdExvVmUyLXNvUSIgaWQ9IigxLjAsMC4wOTc1NjA5NzU2MDk3NTYxKSIvPg0KKyAgICAgIDx0YXJnZXRBbmNob3IgeG1pOnR5cGU9Im5vdGF0aW9uOklkZW50aXR5QW5jaG9yIiB4bWk6aWQ9Il9lUi1KY0pvOUVlU0Z0TG9WZTItc29RIiBpZD0iKDAuMjYzOTI5NjE4NzY4MzI4NDMsMS4wKSIvPg0KKyAgICA8L2VkZ2VzPg0KKyAgICA8ZWRnZXMgeG1pOnR5cGU9Im5vdGF0aW9uOkNvbm5lY3RvciIgeG1pOmlkPSJfWmlOT3M1bzlFZVNGdExvVmUyLXNvUSIgdHlwZT0iNDAwMiIgc291cmNlPSJfWmlFRXdKbzlFZVNGdExvVmUyLXNvUSIgdGFyZ2V0PSJfQ2M5S1lKbzlFZVNGdExvVmUyLXNvUSIgcm91dGluZz0iVHJlZSI+DQorICAgICAgPGVBbm5vdGF0aW9ucyB4bWk6dHlwZT0iZWNvcmU6RUFubm90YXRpb24iIHhtaTppZD0iX3NnRjFBSm85RWVTRnRMb1ZlMi1zb1EiIHNvdXJjZT0iUGFweXJ1c0NTU0ZvcmNlVmFsdWUiPg0KKyAgICAgICAgPGRldGFpbHMgeG1pOnR5cGU9ImVjb3JlOkVTdHJpbmdUb1N0cmluZ01hcEVudHJ5IiB4bWk6aWQ9Il9zZ0YxQVpvOUVlU0Z0TG9WZTItc29RIiBrZXk9InJvdXRpbmciIHZhbHVlPSJ0cnVlIi8+DQorICAgICAgPC9lQW5ub3RhdGlvbnM+DQorICAgICAgPGNoaWxkcmVuIHhtaTp0eXBlPSJub3RhdGlvbjpEZWNvcmF0aW9uTm9kZSIgeG1pOmlkPSJfWmlOT3RwbzlFZVNGdExvVmUyLXNvUSIgdHlwZT0iNjAwNyI+DQorICAgICAgICA8bGF5b3V0Q29uc3RyYWludCB4bWk6dHlwZT0ibm90YXRpb246TG9jYXRpb24iIHhtaTppZD0iX1ppTk90NW85RWVTRnRMb1ZlMi1zb1EiIHk9IjYwIi8+DQorICAgICAgPC9jaGlsZHJlbj4NCisgICAgICA8c3R5bGVzIHhtaTp0eXBlPSJub3RhdGlvbjpGb250U3R5bGUiIHhtaTppZD0iX1ppTk90Sm85RWVTRnRMb1ZlMi1zb1EiLz4NCisgICAgICA8ZWxlbWVudCB4bWk6dHlwZT0idW1sOkdlbmVyYWxpemF0aW9uIiBocmVmPSJTeXNNTC5wcm9maWxlLnVtbCNTeXNNTC1SZXF1aXJlbWVudHMtVmVyaWZ5LWdlbmVyYWxpemF0aW9uIi8+DQorICAgICAgPGJlbmRwb2ludHMgeG1pOnR5cGU9Im5vdGF0aW9uOlJlbGF0aXZlQmVuZHBvaW50cyIgeG1pOmlkPSJfWmlOT3RabzlFZVNGdExvVmUyLXNvUSIgcG9pbnRzPSJbMTMsIDAsIDEzLCA1OV0kWzEzLCAwLCAxMywgNTldJFsxMywgMCwgMTMsIDU5XSRbMTMsIC01OSwgMTMsIDBdIi8+DQorICAgICAgPHNvdXJjZUFuY2hvciB4bWk6dHlwZT0ibm90YXRpb246SWRlbnRpdHlBbmNob3IiIHhtaTppZD0iX2VtMFlFSm85RWVTRnRMb1ZlMi1zb1EiIGlkPSIoMC4wNywwLjApIi8+DQorICAgICAgPHRhcmdldEFuY2hvciB4bWk6dHlwZT0ibm90YXRpb246SWRlbnRpdHlBbmNob3IiIHhtaTppZD0iX2VtMFlFWm85RWVTRnRMb1ZlMi1zb1EiIGlkPSIoMC4zNzI0MzQwMTc1OTUzMDc5LDEuMCkiLz4NCisgICAgPC9lZGdlcz4NCisgICAgPGVkZ2VzIHhtaTp0eXBlPSJub3RhdGlvbjpDb25uZWN0b3IiIHhtaTppZD0iX2NuM19NSm85RWVTRnRMb1ZlMi1zb1EiIHR5cGU9IjQwMDIiIHNvdXJjZT0iX2NuM19JSm85RWVTRnRMb1ZlMi1zb1EiIHRhcmdldD0iX0NjOUtZSm85RWVTRnRMb1ZlMi1zb1EiIHJvdXRpbmc9IlRyZWUiPg0KKyAgICAgIDxjaGlsZHJlbiB4bWk6dHlwZT0ibm90YXRpb246RGVjb3JhdGlvbk5vZGUiIHhtaTppZD0iX2NuM19NNW85RWVTRnRMb1ZlMi1zb1EiIHR5cGU9IjYwMDciPg0KKyAgICAgICAgPGxheW91dENvbnN0cmFpbnQgeG1pOnR5cGU9Im5vdGF0aW9uOkxvY2F0aW9uIiB4bWk6aWQ9Il9jbjNfTkpvOUVlU0Z0TG9WZTItc29RIiB5PSI2MCIvPg0KKyAgICAgIDwvY2hpbGRyZW4+DQorICAgICAgPHN0eWxlcyB4bWk6dHlwZT0ibm90YXRpb246Rm9udFN0eWxlIiB4bWk6aWQ9Il9jbjNfTVpvOUVlU0Z0TG9WZTItc29RIi8+DQorICAgICAgPGVsZW1lbnQgeG1pOnR5cGU9InVtbDpHZW5lcmFsaXphdGlvbiIgaHJlZj0iU3lzTUwucHJvZmlsZS51bWwjU3lzTUwtUmVxdWlyZW1lbnRzLUNvcHktZ2VuZXJhbGl6YXRpb24iLz4NCisgICAgICA8YmVuZHBvaW50cyB4bWk6dHlwZT0ibm90YXRpb246UmVsYXRpdmVCZW5kcG9pbnRzIiB4bWk6aWQ9Il9jbjNfTXBvOUVlU0Z0TG9WZTItc29RIiBwb2ludHM9Ils0MCwgLTgsIDEwMywgNTldJFs0MCwgLTM1LCAxMDMsIDMyXSRbLTkwLCAtMzUsIC0yNywgMzJdJFstOTAsIC02NywgLTI3LCAwXSIvPg0KKyAgICAgIDxzb3VyY2VBbmNob3IgeG1pOnR5cGU9Im5vdGF0aW9uOklkZW50aXR5QW5jaG9yIiB4bWk6aWQ9Il9lMzdXTUpvOUVlU0Z0TG9WZTItc29RIiBpZD0iKDAuMCwwLjIxKSIvPg0KKyAgICAgIDx0YXJnZXRBbmNob3IgeG1pOnR5cGU9Im5vdGF0aW9uOklkZW50aXR5QW5jaG9yIiB4bWk6aWQ9Il9lMzdXTVpvOUVlU0Z0TG9WZTItc29RIiBpZD0iKDAuNTc3NzEyNjA5OTcwNjc0NSwxLjApIi8+DQorICAgIDwvZWRnZXM+DQorICAgIDxlZGdlcyB4bWk6dHlwZT0ibm90YXRpb246Q29ubmVjdG9yIiB4bWk6aWQ9Il9kaHhib0pvOUVlU0Z0TG9WZTItc29RIiB0eXBlPSI0MDAyIiBzb3VyY2U9Il9kaHhia0pvOUVlU0Z0TG9WZTItc29RIiB0YXJnZXQ9Il9DYzlLWUpvOUVlU0Z0TG9WZTItc29RIiByb3V0aW5nPSJUcmVlIj4NCisgICAgICA8Y2hpbGRyZW4geG1pOnR5cGU9Im5vdGF0aW9uOkRlY29yYXRpb25Ob2RlIiB4bWk6aWQ9Il9kaHhibzVvOUVlU0Z0TG9WZTItc29RIiB0eXBlPSI2MDA3Ij4NCisgICAgICAgIDxsYXlvdXRDb25zdHJhaW50IHhtaTp0eXBlPSJub3RhdGlvbjpMb2NhdGlvbiIgeG1pOmlkPSJfZGh4YnBKbzlFZVNGdExvVmUyLXNvUSIgeT0iNjAiLz4NCisgICAgICA8L2NoaWxkcmVuPg0KKyAgICAgIDxzdHlsZXMgeG1pOnR5cGU9Im5vdGF0aW9uOkZvbnRTdHlsZSIgeG1pOmlkPSJfZGh4Ym9abzlFZVNGdExvVmUyLXNvUSIvPg0KKyAgICAgIDxlbGVtZW50IHhtaTp0eXBlPSJ1bWw6R2VuZXJhbGl6YXRpb24iIGhyZWY9IlN5c01MLnByb2ZpbGUudW1sI1N5c01MLVJlcXVpcmVtZW50cy1TYXRpc2Z5LWdlbmVyYWxpemF0aW9uIi8+DQorICAgICAgPGJlbmRwb2ludHMgeG1pOnR5cGU9Im5vdGF0aW9uOlJlbGF0aXZlQmVuZHBvaW50cyIgeG1pOmlkPSJfZGh4Ym9wbzlFZVNGdExvVmUyLXNvUSIgcG9pbnRzPSJbNDAsIC0xMywgMTczLCA1OV0kWzQwLCAtNDAsIDE3MywgMzJdJFstMjMwLCAtNDAsIC05NywgMzJdJFstMjMwLCAtNzIsIC05NywgMF0iLz4NCisgICAgICA8c291cmNlQW5jaG9yIHhtaTp0eXBlPSJub3RhdGlvbjpJZGVudGl0eUFuY2hvciIgeG1pOmlkPSJfZktHRVFKbzlFZVNGdExvVmUyLXNvUSIgaWQ9IigwLjAsMC4zMikiLz4NCisgICAgICA8dGFyZ2V0QW5jaG9yIHhtaTp0eXBlPSJub3RhdGlvbjpJZGVudGl0eUFuY2hvciIgeG1pOmlkPSJfZktHRVFabzlFZVNGdExvVmUyLXNvUSIgaWQ9IigwLjc4Mjk5MTIwMjM0NjA0MSwxLjApIi8+DQorICAgIDwvZWRnZXM+DQorICAgIDxlZGdlcyB4bWk6dHlwZT0ibm90YXRpb246Q29ubmVjdG9yIiB4bWk6aWQ9Il94ZlZXTnBvOUVlU0Z0TG9WZTItc29RIiB0eXBlPSIxMDEzIiBzb3VyY2U9Il94WFMwZ0pvOUVlU0Z0TG9WZTItc29RIiB0YXJnZXQ9Il94ZkxsTUpvOUVlU0Z0TG9WZTItc29RIj4NCisgICAgICA8c3R5bGVzIHhtaTp0eXBlPSJub3RhdGlvbjpGb250U3R5bGUiIHhtaTppZD0iX3hmVldONW85RWVTRnRMb1ZlMi1zb1EiLz4NCisgICAgICA8ZWxlbWVudCB4bWk6dHlwZT0idW1sOkV4dGVuc2lvbiIgaHJlZj0iU3lzTUwucHJvZmlsZS51bWwjU3lzTUwtUmVxdWlyZW1lbnRzLUVfZXh0ZW5zaW9uX1JlcXVpcmVtZW50X2Jhc2VfQ2xhc3MiLz4NCisgICAgICA8YmVuZHBvaW50cyB4bWk6dHlwZT0ibm90YXRpb246UmVsYXRpdmVCZW5kcG9pbnRzIiB4bWk6aWQ9Il94ZlZXT0pvOUVlU0Z0TG9WZTItc29RIiBwb2ludHM9IlstMzMsIDAsIDYxLCA3MF0kWy0zMywgLTcwLCA2MSwgMF0iLz4NCisgICAgICA8c291cmNlQW5jaG9yIHhtaTp0eXBlPSJub3RhdGlvbjpJZGVudGl0eUFuY2hvciIgeG1pOmlkPSJfM2I3M2dKbzlFZVNGdExvVmUyLXNvUSIgaWQ9IigwLjY0MjUzMzkzNjY1MTU4MzgsMC4wKSIvPg0KKyAgICAgIDx0YXJnZXRBbmNob3IgeG1pOnR5cGU9Im5vdGF0aW9uOklkZW50aXR5QW5jaG9yIiB4bWk6aWQ9Il8zYjczZ1pvOUVlU0Z0TG9WZTItc29RIiBpZD0iKDAuMTgsMS4wKSIvPg0KKyAgICA8L2VkZ2VzPg0KKyAgICA8ZWRnZXMgeG1pOnR5cGU9Im5vdGF0aW9uOkNvbm5lY3RvciIgeG1pOmlkPSJfVVFpclZwby1FZVNGdExvVmUyLXNvUSIgdHlwZT0iMTAxMyIgc291cmNlPSJfVVFQd1lKby1FZVNGdExvVmUyLXNvUSIgdGFyZ2V0PSJfVVFaaFk1by1FZVNGdExvVmUyLXNvUSI+DQorICAgICAgPHN0eWxlcyB4bWk6dHlwZT0ibm90YXRpb246Rm9udFN0eWxlIiB4bWk6aWQ9Il9VUWlyVjVvLUVlU0Z0TG9WZTItc29RIi8+DQorICAgICAgPGVsZW1lbnQgeG1pOnR5cGU9InVtbDpFeHRlbnNpb24iIGhyZWY9IlN5c01MLnByb2ZpbGUudW1sI1N5c01MLVJlcXVpcmVtZW50cy1FX2V4dGVuc2lvbl9UZXN0Q2FzZV9iYXNlX0JlaGF2aW9yIi8+DQorICAgICAgPGJlbmRwb2ludHMgeG1pOnR5cGU9Im5vdGF0aW9uOlJlbGF0aXZlQmVuZHBvaW50cyIgeG1pOmlkPSJfVVFpcldKby1FZVNGdExvVmUyLXNvUSIgcG9pbnRzPSJbLTUzLCAwLCA2LCA3Ml0kWy01MywgLTcyLCA2LCAwXSIvPg0KKyAgICAgIDxzb3VyY2VBbmNob3IgeG1pOnR5cGU9Im5vdGF0aW9uOklkZW50aXR5QW5jaG9yIiB4bWk6aWQ9Il9WYlFLOEpvLUVlU0Z0TG9WZTItc29RIiBpZD0iKDAuNDUsMC4wKSIvPg0KKyAgICAgIDx0YXJnZXRBbmNob3IgeG1pOnR5cGU9Im5vdGF0aW9uOklkZW50aXR5QW5jaG9yIiB4bWk6aWQ9Il9WYlFLOFpvLUVlU0Z0TG9WZTItc29RIiBpZD0iKDAuNTQsMS4wKSIvPg0KKyAgICA8L2VkZ2VzPg0KKyAgICA8ZWRnZXMgeG1pOnR5cGU9Im5vdGF0aW9uOkNvbm5lY3RvciIgeG1pOmlkPSJfVnpnUzVwby1FZVNGdExvVmUyLXNvUSIgdHlwZT0iMTAxMyIgc291cmNlPSJfVVFQd1lKby1FZVNGdExvVmUyLXNvUSIgdGFyZ2V0PSJfVnpXaDRKby1FZVNGdExvVmUyLXNvUSI+DQorICAgICAgPHN0eWxlcyB4bWk6dHlwZT0ibm90YXRpb246Rm9udFN0eWxlIiB4bWk6aWQ9Il9WemdTNTVvLUVlU0Z0TG9WZTItc29RIi8+DQorICAgICAgPGVsZW1lbnQgeG1pOnR5cGU9InVtbDpFeHRlbnNpb24iIGhyZWY9IlN5c01MLnByb2ZpbGUudW1sI1N5c01MLVJlcXVpcmVtZW50cy1FX2V4dGVuc2lvbl9UZXN0Q2FzZV9iYXNlX09wZXJhdGlvbiIvPg0KKyAgICAgIDxiZW5kcG9pbnRzIHhtaTp0eXBlPSJub3RhdGlvbjpSZWxhdGl2ZUJlbmRwb2ludHMiIHhtaTppZD0iX1Z6Z1M2Sm8tRWVTRnRMb1ZlMi1zb1EiIHBvaW50cz0iWy0xNywgMCwgNTcsIDcyXSRbLTE3LCAtNzIsIDU3LCAwXSIvPg0KKyAgICAgIDxzb3VyY2VBbmNob3IgeG1pOnR5cGU9Im5vdGF0aW9uOklkZW50aXR5QW5jaG9yIiB4bWk6aWQ9Il9XSjF2UUpvLUVlU0Z0TG9WZTItc29RIiBpZD0iKDAuOSwwLjApIi8+DQorICAgICAgPHRhcmdldEFuY2hvciB4bWk6dHlwZT0ibm90YXRpb246SWRlbnRpdHlBbmNob3IiIHhtaTppZD0iX1dKMXZRWm8tRWVTRnRMb1ZlMi1zb1EiIGlkPSIoMC4wMywxLjApIi8+DQorICAgIDwvZWRnZXM+DQorICAgIDxlZGdlcyB4bWk6dHlwZT0ibm90YXRpb246Q29ubmVjdG9yIiB4bWk6aWQ9Il9kZG0zMDVvLUVlU0Z0TG9WZTItc29RIiB0eXBlPSI0MDAyIiBzb3VyY2U9Il9kZFQ4NEpvLUVlU0Z0TG9WZTItc29RIiB0YXJnZXQ9Il9kZGRHMDVvLUVlU0Z0TG9WZTItc29RIj4NCisgICAgICA8Y2hpbGRyZW4geG1pOnR5cGU9Im5vdGF0aW9uOkRlY29yYXRpb25Ob2RlIiB4bWk6aWQ9Il9kZG0zMXBvLUVlU0Z0TG9WZTItc29RIiB0eXBlPSI2MDA3Ij4NCisgICAgICAgIDxsYXlvdXRDb25zdHJhaW50IHhtaTp0eXBlPSJub3RhdGlvbjpMb2NhdGlvbiIgeG1pOmlkPSJfZGRtMzE1by1FZVNGdExvVmUyLXNvUSIgeT0iNjAiLz4NCisgICAgICA8L2NoaWxkcmVuPg0KKyAgICAgIDxzdHlsZXMgeG1pOnR5cGU9Im5vdGF0aW9uOkZvbnRTdHlsZSIgeG1pOmlkPSJfZGRtMzFKby1FZVNGdExvVmUyLXNvUSIvPg0KKyAgICAgIDxlbGVtZW50IHhtaTp0eXBlPSJ1bWw6R2VuZXJhbGl6YXRpb24iIGhyZWY9IlN5c01MLnByb2ZpbGUudW1sI1N5c01MLVJlcXVpcmVtZW50cy1SZWZpbmUtZ2VuZXJhbGl6YXRpb24xIi8+DQorICAgICAgPGJlbmRwb2ludHMgeG1pOnR5cGU9Im5vdGF0aW9uOlJlbGF0aXZlQmVuZHBvaW50cyIgeG1pOmlkPSJfZGRtMzFaby1FZVNGdExvVmUyLXNvUSIgcG9pbnRzPSJbLTQ2LCAwLCAyNSwgMTM5XSRbLTQ2LCAtMTM5LCAyNSwgMF0iLz4NCisgICAgICA8c291cmNlQW5jaG9yIHhtaTp0eXBlPSJub3RhdGlvbjpJZGVudGl0eUFuY2hvciIgeG1pOmlkPSJfZXZjNk1Kby1FZVNGdExvVmUyLXNvUSIgaWQ9IigwLjU5NzAxNDkyNTM3MzEzNDMsMC4wKSIvPg0KKyAgICAgIDx0YXJnZXRBbmNob3IgeG1pOnR5cGU9Im5vdGF0aW9uOklkZW50aXR5QW5jaG9yIiB4bWk6aWQ9Il9ldmM2TVpvLUVlU0Z0TG9WZTItc29RIiBpZD0iKDAuNCwxLjApIi8+DQorICAgIDwvZWRnZXM+DQorICAgIDxlZGdlcyB4bWk6dHlwZT0ibm90YXRpb246Q29ubmVjdG9yIiB4bWk6aWQ9Il9kN1hLMEpvLUVlU0Z0TG9WZTItc29RIiB0eXBlPSI0MDAyIiBzb3VyY2U9Il9kZFQ4NEpvLUVlU0Z0TG9WZTItc29RIiB0YXJnZXQ9Il9DN1VoWUpvOUVlU0Z0TG9WZTItc29RIj4NCisgICAgICA8Y2hpbGRyZW4geG1pOnR5cGU9Im5vdGF0aW9uOkRlY29yYXRpb25Ob2RlIiB4bWk6aWQ9Il9kN1hLMDVvLUVlU0Z0TG9WZTItc29RIiB0eXBlPSI2MDA3Ij4NCisgICAgICAgIDxsYXlvdXRDb25zdHJhaW50IHhtaTp0eXBlPSJub3RhdGlvbjpMb2NhdGlvbiIgeG1pOmlkPSJfZDdYSzFKby1FZVNGdExvVmUyLXNvUSIgeT0iNjAiLz4NCisgICAgICA8L2NoaWxkcmVuPg0KKyAgICAgIDxzdHlsZXMgeG1pOnR5cGU9Im5vdGF0aW9uOkZvbnRTdHlsZSIgeG1pOmlkPSJfZDdYSzBaby1FZVNGdExvVmUyLXNvUSIvPg0KKyAgICAgIDxlbGVtZW50IHhtaTp0eXBlPSJ1bWw6R2VuZXJhbGl6YXRpb24iIGhyZWY9IlN5c01MLnByb2ZpbGUudW1sI1N5c01MLVJlcXVpcmVtZW50cy1SZWZpbmUtZ2VuZXJhbGl6YXRpb24yIi8+DQorICAgICAgPGJlbmRwb2ludHMgeG1pOnR5cGU9Im5vdGF0aW9uOlJlbGF0aXZlQmVuZHBvaW50cyIgeG1pOmlkPSJfZDdYSzBwby1FZVNGdExvVmUyLXNvUSIgcG9pbnRzPSJbMjAsIC02LCAyODMsIDEzOV0kWzIwLCAtMTA2LCAyODMsIDM5XSRbLTMwMCwgLTEwNiwgLTM3LCAzOV0kWy0zMDAsIC0xNDUsIC0zNywgMF0iLz4NCisgICAgICA8c291cmNlQW5jaG9yIHhtaTp0eXBlPSJub3RhdGlvbjpJZGVudGl0eUFuY2hvciIgeG1pOmlkPSJfZXZjNk1wby1FZVNGdExvVmUyLXNvUSIgaWQ9IigwLjA5OTUwMjQ4NzU2MjE4OTA2LDAuMCkiLz4NCisgICAgICA8dGFyZ2V0QW5jaG9yIHhtaTp0eXBlPSJub3RhdGlvbjpJZGVudGl0eUFuY2hvciIgeG1pOmlkPSJfZXZjNk01by1FZVNGdExvVmUyLXNvUSIgaWQ9IigwLjUsMS4wKSIvPg0KKyAgICA8L2VkZ2VzPg0KKyAgPC9ub3RhdGlvbjpEaWFncmFtPg0KKyAgPG5vdGF0aW9uOkRpYWdyYW0geG1pOmlkPSJfZDNVTThKcHRFZVNGdExvVmUyLXNvUSIgdHlwZT0iUGFweXJ1c1VNTFByb2ZpbGVEaWFncmFtIiBuYW1lPSJkZXByZWNhdGVkIGVsZW1lbnRzIiBtZWFzdXJlbWVudFVuaXQ9IlBpeGVsIj4NCisgICAgPGNoaWxkcmVuIHhtaTp0eXBlPSJub3RhdGlvbjpTaGFwZSIgeG1pOmlkPSJfaVAtUFFKcHRFZVNGdExvVmUyLXNvUSIgdHlwZT0iMTAyNiI+DQorICAgICAgPGNoaWxkcmVuIHhtaTp0eXBlPSJub3RhdGlvbjpEZWNvcmF0aW9uTm9kZSIgeG1pOmlkPSJfaVAtUFFwcHRFZVNGdExvVmUyLXNvUSIgdHlwZT0iMTAzNCIvPg0KKyAgICAgIDxjaGlsZHJlbiB4bWk6dHlwZT0ibm90YXRpb246QmFzaWNDb21wYXJ0bWVudCIgeG1pOmlkPSJfaVAtUFE1cHRFZVNGdExvVmUyLXNvUSIgdHlwZT0iMTA3MSI+DQorICAgICAgICA8Y2hpbGRyZW4geG1pOnR5cGU9Im5vdGF0aW9uOlNoYXBlIiB4bWk6aWQ9Il94SmZCTUpwdEVlU0Z0TG9WZTItc29RIiB0eXBlPSIzMDAyIj4NCisgICAgICAgICAgPGVsZW1lbnQgeG1pOnR5cGU9InVtbDpQcm9wZXJ0eSIgaHJlZj0iU3lzTUwucHJvZmlsZS51bWwjU3lzTUwtRGVwcmVjYXRlZEVsZW1lbnRzLUZsb3dQb3J0LWlzQXRvbWljIi8+DQorICAgICAgICAgIDxsYXlvdXRDb25zdHJhaW50IHhtaTp0eXBlPSJub3RhdGlvbjpMb2NhdGlvbiIgeG1pOmlkPSJfeEpmQk1acHRFZVNGdExvVmUyLXNvUSIvPg0KKyAgICAgICAgPC9jaGlsZHJlbj4NCisgICAgICAgIDxjaGlsZHJlbiB4bWk6dHlwZT0ibm90YXRpb246U2hhcGUiIHhtaTppZD0iX3htTUxVSnB0RWVTRnRMb1ZlMi1zb1EiIHR5cGU9IjMwMDIiPg0KKyAgICAgICAgICA8ZWxlbWVudCB4bWk6dHlwZT0idW1sOlByb3BlcnR5IiBocmVmPSJTeXNNTC5wcm9maWxlLnVtbCNTeXNNTC1EZXByZWNhdGVkRWxlbWVudHMtRmxvd1BvcnQtZGlyZWN0aW9uIi8+DQorICAgICAgICAgIDxsYXlvdXRDb25zdHJhaW50IHhtaTp0eXBlPSJub3RhdGlvbjpMb2NhdGlvbiIgeG1pOmlkPSJfeG1NTFVacHRFZVNGdExvVmUyLXNvUSIvPg0KKyAgICAgICAgPC9jaGlsZHJlbj4NCisgICAgICAgIDxzdHlsZXMgeG1pOnR5cGU9Im5vdGF0aW9uOlRpdGxlU3R5bGUiIHhtaTppZD0iX2lQLVBSSnB0RWVTRnRMb1ZlMi1zb1EiLz4NCisgICAgICAgIDxzdHlsZXMgeG1pOnR5cGU9Im5vdGF0aW9uOlNvcnRpbmdTdHlsZSIgeG1pOmlkPSJfaVAtUFJacHRFZVNGdExvVmUyLXNvUSIvPg0KKyAgICAgICAgPHN0eWxlcyB4bWk6dHlwZT0ibm90YXRpb246RmlsdGVyaW5nU3R5bGUiIHhtaTppZD0iX2lQLVBScHB0RWVTRnRMb1ZlMi1zb1EiLz4NCisgICAgICAgIDxsYXlvdXRDb25zdHJhaW50IHhtaTp0eXBlPSJub3RhdGlvbjpCb3VuZHMiIHhtaTppZD0iX2lQLVBSNXB0RWVTRnRMb1ZlMi1zb1EiLz4NCisgICAgICA8L2NoaWxkcmVuPg0KKyAgICAgIDxjaGlsZHJlbiB4bWk6dHlwZT0ibm90YXRpb246QmFzaWNDb21wYXJ0bWVudCIgeG1pOmlkPSJfaVAtUFNKcHRFZVNGdExvVmUyLXNvUSIgdmlzaWJsZT0iZmFsc2UiIHR5cGU9IjEwMTkiPg0KKyAgICAgICAgPHN0eWxlcyB4bWk6dHlwZT0ibm90YXRpb246VGl0bGVTdHlsZSIgeG1pOmlkPSJfaVAtUFNacHRFZVNGdExvVmUyLXNvUSIvPg0KKyAgICAgICAgPHN0eWxlcyB4bWk6dHlwZT0ibm90YXRpb246U29ydGluZ1N0eWxlIiB4bWk6aWQ9Il9pUC1QU3BwdEVlU0Z0TG9WZTItc29RIi8+DQorICAgICAgICA8c3R5bGVzIHhtaTp0eXBlPSJub3RhdGlvbjpGaWx0ZXJpbmdTdHlsZSIgeG1pOmlkPSJfaVAtUFM1cHRFZVNGdExvVmUyLXNvUSIvPg0KKyAgICAgICAgPGxheW91dENvbnN0cmFpbnQgeG1pOnR5cGU9Im5vdGF0aW9uOkJvdW5kcyIgeG1pOmlkPSJfaVAtUFRKcHRFZVNGdExvVmUyLXNvUSIvPg0KKyAgICAgIDwvY2hpbGRyZW4+DQorICAgICAgPGVsZW1lbnQgeG1pOnR5cGU9InVtbDpTdGVyZW90eXBlIiBocmVmPSJTeXNNTC5wcm9maWxlLnVtbCNTeXNNTC1EZXByZWNhdGVkRWxlbWVudHMtRmxvd1BvcnQiLz4NCisgICAgICA8bGF5b3V0Q29uc3RyYWludCB4bWk6dHlwZT0ibm90YXRpb246Qm91bmRzIiB4bWk6aWQ9Il9pUC1QUVpwdEVlU0Z0TG9WZTItc29RIiB4PSI0MCIgeT0iMTgwIi8+DQorICAgIDwvY2hpbGRyZW4+DQorICAgIDxjaGlsZHJlbiB4bWk6dHlwZT0ibm90YXRpb246U2hhcGUiIHhtaTppZD0iX2lRSUFRSnB0RWVTRnRMb1ZlMi1zb1EiIHR5cGU9IjEwMzEiPg0KKyAgICAgIDxjaGlsZHJlbiB4bWk6dHlwZT0ibm90YXRpb246RGVjb3JhdGlvbk5vZGUiIHhtaTppZD0iX2lRSUFRcHB0RWVTRnRMb1ZlMi1zb1EiIHR5cGU9IjEwODQiLz4NCisgICAgICA8ZWxlbWVudCB4bWk6dHlwZT0idW1sOkNsYXNzIiBocmVmPSJwYXRobWFwOi8vVU1MX01FVEFNT0RFTFMvVU1MLm1ldGFtb2RlbC51bWwjUG9ydCIvPg0KKyAgICAgIDxsYXlvdXRDb25zdHJhaW50IHhtaTp0eXBlPSJub3RhdGlvbjpCb3VuZHMiIHhtaTppZD0iX2lRSUFRWnB0RWVTRnRMb1ZlMi1zb1EiIHg9IjQwIiB5PSI0MCIgd2lkdGg9IjE4MSIvPg0KKyAgICA8L2NoaWxkcmVuPg0KKyAgICA8Y2hpbGRyZW4geG1pOnR5cGU9Im5vdGF0aW9uOlNoYXBlIiB4bWk6aWQ9Il9rV01VNEpwdEVlU0Z0TG9WZTItc29RIiB0eXBlPSIxMDI2Ij4NCisgICAgICA8Y2hpbGRyZW4geG1pOnR5cGU9Im5vdGF0aW9uOkRlY29yYXRpb25Ob2RlIiB4bWk6aWQ9Il9rV01VNHBwdEVlU0Z0TG9WZTItc29RIiB0eXBlPSIxMDM0Ii8+DQorICAgICAgPGNoaWxkcmVuIHhtaTp0eXBlPSJub3RhdGlvbjpCYXNpY0NvbXBhcnRtZW50IiB4bWk6aWQ9Il9rV01VNDVwdEVlU0Z0TG9WZTItc29RIiB2aXNpYmxlPSJmYWxzZSIgdHlwZT0iMTA3MSI+DQorICAgICAgICA8c3R5bGVzIHhtaTp0eXBlPSJub3RhdGlvbjpUaXRsZVN0eWxlIiB4bWk6aWQ9Il9rV01VNUpwdEVlU0Z0TG9WZTItc29RIi8+DQorICAgICAgICA8c3R5bGVzIHhtaTp0eXBlPSJub3RhdGlvbjpTb3J0aW5nU3R5bGUiIHhtaTppZD0iX2tXTVU1WnB0RWVTRnRMb1ZlMi1zb1EiLz4NCisgICAgICAgIDxzdHlsZXMgeG1pOnR5cGU9Im5vdGF0aW9uOkZpbHRlcmluZ1N0eWxlIiB4bWk6aWQ9Il9rV01VNXBwdEVlU0Z0TG9WZTItc29RIi8+DQorICAgICAgICA8bGF5b3V0Q29uc3RyYWludCB4bWk6dHlwZT0ibm90YXRpb246Qm91bmRzIiB4bWk6aWQ9Il9rV01VNTVwdEVlU0Z0TG9WZTItc29RIi8+DQorICAgICAgPC9jaGlsZHJlbj4NCisgICAgICA8Y2hpbGRyZW4geG1pOnR5cGU9Im5vdGF0aW9uOkJhc2ljQ29tcGFydG1lbnQiIHhtaTppZD0iX2tXTVU2SnB0RWVTRnRMb1ZlMi1zb1EiIHZpc2libGU9ImZhbHNlIiB0eXBlPSIxMDE5Ij4NCisgICAgICAgIDxzdHlsZXMgeG1pOnR5cGU9Im5vdGF0aW9uOlRpdGxlU3R5bGUiIHhtaTppZD0iX2tXTVU2WnB0RWVTRnRMb1ZlMi1zb1EiLz4NCisgICAgICAgIDxzdHlsZXMgeG1pOnR5cGU9Im5vdGF0aW9uOlNvcnRpbmdTdHlsZSIgeG1pOmlkPSJfa1dNVTZwcHRFZVNGdExvVmUyLXNvUSIvPg0KKyAgICAgICAgPHN0eWxlcyB4bWk6dHlwZT0ibm90YXRpb246RmlsdGVyaW5nU3R5bGUiIHhtaTppZD0iX2tXTVU2NXB0RWVTRnRMb1ZlMi1zb1EiLz4NCisgICAgICAgIDxsYXlvdXRDb25zdHJhaW50IHhtaTp0eXBlPSJub3RhdGlvbjpCb3VuZHMiIHhtaTppZD0iX2tXTVU3SnB0RWVTRnRMb1ZlMi1zb1EiLz4NCisgICAgICA8L2NoaWxkcmVuPg0KKyAgICAgIDxlbGVtZW50IHhtaTp0eXBlPSJ1bWw6U3RlcmVvdHlwZSIgaHJlZj0iU3lzTUwucHJvZmlsZS51bWwjU3lzTUwtRGVwcmVjYXRlZEVsZW1lbnRzLUZsb3dTcGVjaWZpY2F0aW9uIi8+DQorICAgICAgPGxheW91dENvbnN0cmFpbnQgeG1pOnR5cGU9Im5vdGF0aW9uOkJvdW5kcyIgeG1pOmlkPSJfa1dNVTRacHRFZVNGdExvVmUyLXNvUSIgeD0iMjgwIiB5PSIxODAiIHdpZHRoPSIxMjEiIGhlaWdodD0iNjEiLz4NCisgICAgPC9jaGlsZHJlbj4NCisgICAgPGNoaWxkcmVuIHhtaTp0eXBlPSJub3RhdGlvbjpTaGFwZSIgeG1pOmlkPSJfa1dXRjQ1cHRFZVNGdExvVmUyLXNvUSIgdHlwZT0iMTAzMSI+DQorICAgICAgPGNoaWxkcmVuIHhtaTp0eXBlPSJub3RhdGlvbjpEZWNvcmF0aW9uTm9kZSIgeG1pOmlkPSJfa1dXRjVacHRFZVNGdExvVmUyLXNvUSIgdHlwZT0iMTA4NCIvPg0KKyAgICAgIDxlbGVtZW50IHhtaTp0eXBlPSJ1bWw6Q2xhc3MiIGhyZWY9InBhdGhtYXA6Ly9VTUxfTUVUQU1PREVMUy9VTUwubWV0YW1vZGVsLnVtbCNJbnRlcmZhY2UiLz4NCisgICAgICA8bGF5b3V0Q29uc3RyYWludCB4bWk6dHlwZT0ibm90YXRpb246Qm91bmRzIiB4bWk6aWQ9Il9rV1dGNUpwdEVlU0Z0TG9WZTItc29RIiB4PSIyODAiIHk9IjQwIiB3aWR0aD0iMTIxIi8+DQorICAgIDwvY2hpbGRyZW4+DQorICAgIDxjaGlsZHJlbiB4bWk6dHlwZT0ibm90YXRpb246U2hhcGUiIHhtaTppZD0iX3I3WDlrSnB0RWVTRnRMb1ZlMi1zb1EiIHR5cGU9IjEwMjYiPg0KKyAgICAgIDxjaGlsZHJlbiB4bWk6dHlwZT0ibm90YXRpb246RGVjb3JhdGlvbk5vZGUiIHhtaTppZD0iX3I3WDlrcHB0RWVTRnRMb1ZlMi1zb1EiIHR5cGU9IjEwMzQiLz4NCisgICAgICA8Y2hpbGRyZW4geG1pOnR5cGU9Im5vdGF0aW9uOkJhc2ljQ29tcGFydG1lbnQiIHhtaTppZD0iX3I3WDlrNXB0RWVTRnRMb1ZlMi1zb1EiIHR5cGU9IjEwNzEiPg0KKyAgICAgICAgPGNoaWxkcmVuIHhtaTp0eXBlPSJub3RhdGlvbjpTaGFwZSIgeG1pOmlkPSJfQ2syRTBKcHVFZVNGdExvVmUyLXNvUSIgdHlwZT0iMzAwMiI+DQorICAgICAgICAgIDxlbGVtZW50IHhtaTp0eXBlPSJ1bWw6UHJvcGVydHkiIGhyZWY9IlN5c01MLnByb2ZpbGUudW1sI1N5c01MLURlcHJlY2F0ZWRFbGVtZW50cy1EZXByZWNhdGVkLWRlcHJlY2F0ZWRSZWFzb24iLz4NCisgICAgICAgICAgPGxheW91dENvbnN0cmFpbnQgeG1pOnR5cGU9Im5vdGF0aW9uOkxvY2F0aW9uIiB4bWk6aWQ9Il9DazJFMFpwdUVlU0Z0TG9WZTItc29RIi8+DQorICAgICAgICA8L2NoaWxkcmVuPg0KKyAgICAgICAgPHN0eWxlcyB4bWk6dHlwZT0ibm90YXRpb246VGl0bGVTdHlsZSIgeG1pOmlkPSJfcjdYOWxKcHRFZVNGdExvVmUyLXNvUSIvPg0KKyAgICAgICAgPHN0eWxlcyB4bWk6dHlwZT0ibm90YXRpb246U29ydGluZ1N0eWxlIiB4bWk6aWQ9Il9yN1g5bFpwdEVlU0Z0TG9WZTItc29RIi8+DQorICAgICAgICA8c3R5bGVzIHhtaTp0eXBlPSJub3RhdGlvbjpGaWx0ZXJpbmdTdHlsZSIgeG1pOmlkPSJfcjdYOWxwcHRFZVNGdExvVmUyLXNvUSIvPg0KKyAgICAgICAgPGxheW91dENvbnN0cmFpbnQgeG1pOnR5cGU9Im5vdGF0aW9uOkJvdW5kcyIgeG1pOmlkPSJfcjdYOWw1cHRFZVNGdExvVmUyLXNvUSIvPg0KKyAgICAgIDwvY2hpbGRyZW4+DQorICAgICAgPGNoaWxkcmVuIHhtaTp0eXBlPSJub3RhdGlvbjpCYXNpY0NvbXBhcnRtZW50IiB4bWk6aWQ9Il9yN1g5bUpwdEVlU0Z0TG9WZTItc29RIiB2aXNpYmxlPSJmYWxzZSIgdHlwZT0iMTAxOSI+DQorICAgICAgICA8c3R5bGVzIHhtaTp0eXBlPSJub3RhdGlvbjpUaXRsZVN0eWxlIiB4bWk6aWQ9Il9yN1g5bVpwdEVlU0Z0TG9WZTItc29RIi8+DQorICAgICAgICA8c3R5bGVzIHhtaTp0eXBlPSJub3RhdGlvbjpTb3J0aW5nU3R5bGUiIHhtaTppZD0iX3I3WDltcHB0RWVTRnRMb1ZlMi1zb1EiLz4NCisgICAgICAgIDxzdHlsZXMgeG1pOnR5cGU9Im5vdGF0aW9uOkZpbHRlcmluZ1N0eWxlIiB4bWk6aWQ9Il9yN1g5bTVwdEVlU0Z0TG9WZTItc29RIi8+DQorICAgICAgICA8bGF5b3V0Q29uc3RyYWludCB4bWk6dHlwZT0ibm90YXRpb246Qm91bmRzIiB4bWk6aWQ9Il9yN1g5bkpwdEVlU0Z0TG9WZTItc29RIi8+DQorICAgICAgPC9jaGlsZHJlbj4NCisgICAgICA8ZWxlbWVudCB4bWk6dHlwZT0idW1sOlN0ZXJlb3R5cGUiIGhyZWY9IlN5c01MLnByb2ZpbGUudW1sI1N5c01MLURlcHJlY2F0ZWRFbGVtZW50cy1EZXByZWNhdGVkIi8+DQorICAgICAgPGxheW91dENvbnN0cmFpbnQgeG1pOnR5cGU9Im5vdGF0aW9uOkJvdW5kcyIgeG1pOmlkPSJfcjdYOWtacHRFZVNGdExvVmUyLXNvUSIgeD0iODIwIiB5PSIyNDAiIGhlaWdodD0iODEiLz4NCisgICAgPC9jaGlsZHJlbj4NCisgICAgPGNoaWxkcmVuIHhtaTp0eXBlPSJub3RhdGlvbjpTaGFwZSIgeG1pOmlkPSJfcjdodWtKcHRFZVNGdExvVmUyLXNvUSIgdHlwZT0iMTAzMSI+DQorICAgICAgPGNoaWxkcmVuIHhtaTp0eXBlPSJub3RhdGlvbjpEZWNvcmF0aW9uTm9kZSIgeG1pOmlkPSJfcjdodWtwcHRFZVNGdExvVmUyLXNvUSIgdHlwZT0iMTA4NCIvPg0KKyAgICAgIDxlbGVtZW50IHhtaTp0eXBlPSJ1bWw6Q2xhc3MiIGhyZWY9InBhdGhtYXA6Ly9VTUxfTUVUQU1PREVMUy9VTUwubWV0YW1vZGVsLnVtbCNDbGFzcyIvPg0KKyAgICAgIDxsYXlvdXRDb25zdHJhaW50IHhtaTp0eXBlPSJub3RhdGlvbjpCb3VuZHMiIHhtaTppZD0iX3I3aHVrWnB0RWVTRnRMb1ZlMi1zb1EiIHg9Ijg4MCIgeT0iNDAiLz4NCisgICAgPC9jaGlsZHJlbj4NCisgICAgPGNoaWxkcmVuIHhtaTp0eXBlPSJub3RhdGlvbjpTaGFwZSIgeG1pOmlkPSJfMGJzWTBKcHRFZVNGdExvVmUyLXNvUSIgdHlwZT0iMTAyNiI+DQorICAgICAgPGNoaWxkcmVuIHhtaTp0eXBlPSJub3RhdGlvbjpEZWNvcmF0aW9uTm9kZSIgeG1pOmlkPSJfMGJzWTBwcHRFZVNGdExvVmUyLXNvUSIgdHlwZT0iMTAzNCIvPg0KKyAgICAgIDxjaGlsZHJlbiB4bWk6dHlwZT0ibm90YXRpb246QmFzaWNDb21wYXJ0bWVudCIgeG1pOmlkPSJfMGJzWTA1cHRFZVNGdExvVmUyLXNvUSIgdHlwZT0iMTA3MSI+DQorICAgICAgICA8Y2hpbGRyZW4geG1pOnR5cGU9Im5vdGF0aW9uOlNoYXBlIiB4bWk6aWQ9Il8wenBsMEpwdEVlU0Z0TG9WZTItc29RIiB0eXBlPSIzMDAyIj4NCisgICAgICAgICAgPGVsZW1lbnQgeG1pOnR5cGU9InVtbDpQcm9wZXJ0eSIgaHJlZj0iU3lzTUwucHJvZmlsZS51bWwjU3lzTUwtRGVwcmVjYXRlZEVsZW1lbnRzLUFsbG9jYXRlZC1hbGxvY2F0ZWRGcm9tIi8+DQorICAgICAgICAgIDxsYXlvdXRDb25zdHJhaW50IHhtaTp0eXBlPSJub3RhdGlvbjpMb2NhdGlvbiIgeG1pOmlkPSJfMHpwbDBacHRFZVNGdExvVmUyLXNvUSIvPg0KKyAgICAgICAgPC9jaGlsZHJlbj4NCisgICAgICAgIDxjaGlsZHJlbiB4bWk6dHlwZT0ibm90YXRpb246U2hhcGUiIHhtaTppZD0iXzFMQVY0SnB0RWVTRnRMb1ZlMi1zb1EiIHR5cGU9IjMwMDIiPg0KKyAgICAgICAgICA8ZWxlbWVudCB4bWk6dHlwZT0idW1sOlByb3BlcnR5IiBocmVmPSJTeXNNTC5wcm9maWxlLnVtbCNTeXNNTC1EZXByZWNhdGVkRWxlbWVudHMtQWxsb2NhdGVkLWFsbG9jYXRlZFRvIi8+DQorICAgICAgICAgIDxsYXlvdXRDb25zdHJhaW50IHhtaTp0eXBlPSJub3RhdGlvbjpMb2NhdGlvbiIgeG1pOmlkPSJfMUxBVjRacHRFZVNGdExvVmUyLXNvUSIvPg0KKyAgICAgICAgPC9jaGlsZHJlbj4NCisgICAgICAgIDxzdHlsZXMgeG1pOnR5cGU9Im5vdGF0aW9uOlRpdGxlU3R5bGUiIHhtaTppZD0iXzBic1kxSnB0RWVTRnRMb1ZlMi1zb1EiLz4NCisgICAgICAgIDxzdHlsZXMgeG1pOnR5cGU9Im5vdGF0aW9uOlNvcnRpbmdTdHlsZSIgeG1pOmlkPSJfMGJzWTFacHRFZVNGdExvVmUyLXNvUSIvPg0KKyAgICAgICAgPHN0eWxlcyB4bWk6dHlwZT0ibm90YXRpb246RmlsdGVyaW5nU3R5bGUiIHhtaTppZD0iXzBic1kxcHB0RWVTRnRMb1ZlMi1zb1EiLz4NCisgICAgICAgIDxsYXlvdXRDb25zdHJhaW50IHhtaTp0eXBlPSJub3RhdGlvbjpCb3VuZHMiIHhtaTppZD0iXzBic1kxNXB0RWVTRnRMb1ZlMi1zb1EiLz4NCisgICAgICA8L2NoaWxkcmVuPg0KKyAgICAgIDxjaGlsZHJlbiB4bWk6dHlwZT0ibm90YXRpb246QmFzaWNDb21wYXJ0bWVudCIgeG1pOmlkPSJfMGJzWTJKcHRFZVNGdExvVmUyLXNvUSIgdmlzaWJsZT0iZmFsc2UiIHR5cGU9IjEwMTkiPg0KKyAgICAgICAgPHN0eWxlcyB4bWk6dHlwZT0ibm90YXRpb246VGl0bGVTdHlsZSIgeG1pOmlkPSJfMGJzWTJacHRFZVNGdExvVmUyLXNvUSIvPg0KKyAgICAgICAgPHN0eWxlcyB4bWk6dHlwZT0ibm90YXRpb246U29ydGluZ1N0eWxlIiB4bWk6aWQ9Il8wYnNZMnBwdEVlU0Z0TG9WZTItc29RIi8+DQorICAgICAgICA8c3R5bGVzIHhtaTp0eXBlPSJub3RhdGlvbjpGaWx0ZXJpbmdTdHlsZSIgeG1pOmlkPSJfMGJzWTI1cHRFZVNGdExvVmUyLXNvUSIvPg0KKyAgICAgICAgPGxheW91dENvbnN0cmFpbnQgeG1pOnR5cGU9Im5vdGF0aW9uOkJvdW5kcyIgeG1pOmlkPSJfMGJzWTNKcHRFZVNGdExvVmUyLXNvUSIvPg0KKyAgICAgIDwvY2hpbGRyZW4+DQorICAgICAgPGVsZW1lbnQgeG1pOnR5cGU9InVtbDpTdGVyZW90eXBlIiBocmVmPSJTeXNNTC5wcm9maWxlLnVtbCNTeXNNTC1EZXByZWNhdGVkRWxlbWVudHMtQWxsb2NhdGVkIi8+DQorICAgICAgPGxheW91dENvbnN0cmFpbnQgeG1pOnR5cGU9Im5vdGF0aW9uOkJvdW5kcyIgeG1pOmlkPSJfMGJzWTBacHRFZVNGdExvVmUyLXNvUSIgeD0iNDQwIiB5PSIxODAiIGhlaWdodD0iODEiLz4NCisgICAgPC9jaGlsZHJlbj4NCisgICAgPGNoaWxkcmVuIHhtaTp0eXBlPSJub3RhdGlvbjpTaGFwZSIgeG1pOmlkPSJfOHNWWlVKcHRFZVNGdExvVmUyLXNvUSIgdHlwZT0iMTAzMSI+DQorICAgICAgPGNoaWxkcmVuIHhtaTp0eXBlPSJub3RhdGlvbjpEZWNvcmF0aW9uTm9kZSIgeG1pOmlkPSJfOHNWWlVwcHRFZVNGdExvVmUyLXNvUSIgdHlwZT0iMTA4NCIvPg0KKyAgICAgIDxlbGVtZW50IHhtaTp0eXBlPSJ1bWw6Q2xhc3MiIGhyZWY9InBhdGhtYXA6Ly9VTUxfTUVUQU1PREVMUy9VTUwubWV0YW1vZGVsLnVtbCNBc3NvY2lhdGlvbiIvPg0KKyAgICAgIDxsYXlvdXRDb25zdHJhaW50IHhtaTp0eXBlPSJub3RhdGlvbjpCb3VuZHMiIHhtaTppZD0iXzhzVlpVWnB0RWVTRnRMb1ZlMi1zb1EiIHg9Ijc0MCIgeT0iNDAiLz4NCisgICAgPC9jaGlsZHJlbj4NCisgICAgPGNoaWxkcmVuIHhtaTp0eXBlPSJub3RhdGlvbjpTaGFwZSIgeG1pOmlkPSJfLUhacElKcHRFZVNGdExvVmUyLXNvUSIgdHlwZT0iMTAzMSI+DQorICAgICAgPGNoaWxkcmVuIHhtaTp0eXBlPSJub3RhdGlvbjpEZWNvcmF0aW9uTm9kZSIgeG1pOmlkPSJfLUhacElwcHRFZVNGdExvVmUyLXNvUSIgdHlwZT0iMTA4NCIvPg0KKyAgICAgIDxlbGVtZW50IHhtaTp0eXBlPSJ1bWw6Q2xhc3MiIGhyZWY9InBhdGhtYXA6Ly9VTUxfTUVUQU1PREVMUy9VTUwubWV0YW1vZGVsLnVtbCNHZW5lcmFsaXphdGlvbiIvPg0KKyAgICAgIDxsYXlvdXRDb25zdHJhaW50IHhtaTp0eXBlPSJub3RhdGlvbjpCb3VuZHMiIHhtaTppZD0iXy1IWnBJWnB0RWVTRnRMb1ZlMi1zb1EiIHg9IjYyMCIgeT0iNDAiLz4NCisgICAgPC9jaGlsZHJlbj4NCisgICAgPGNoaWxkcmVuIHhtaTp0eXBlPSJub3RhdGlvbjpTaGFwZSIgeG1pOmlkPSJfLTA4cm9KcHRFZVNGdExvVmUyLXNvUSIgdHlwZT0iMTAzMSI+DQorICAgICAgPGNoaWxkcmVuIHhtaTp0eXBlPSJub3RhdGlvbjpEZWNvcmF0aW9uTm9kZSIgeG1pOmlkPSJfLTA4cm9wcHRFZVNGdExvVmUyLXNvUSIgdHlwZT0iMTA4NCIvPg0KKyAgICAgIDxlbGVtZW50IHhtaTp0eXBlPSJ1bWw6Q2xhc3MiIGhyZWY9InBhdGhtYXA6Ly9VTUxfTUVUQU1PREVMUy9VTUwubWV0YW1vZGVsLnVtbCNJbnN0YW5jZVNwZWNpZmljYXRpb24iLz4NCisgICAgICA8bGF5b3V0Q29uc3RyYWludCB4bWk6dHlwZT0ibm90YXRpb246Qm91bmRzIiB4bWk6aWQ9Il8tMDhyb1pwdEVlU0Z0TG9WZTItc29RIiB4PSIxMjYwIiB5PSI0MCIvPg0KKyAgICA8L2NoaWxkcmVuPg0KKyAgICA8Y2hpbGRyZW4geG1pOnR5cGU9Im5vdGF0aW9uOlNoYXBlIiB4bWk6aWQ9Il9fdWI0WUpwdEVlU0Z0TG9WZTItc29RIiB0eXBlPSIxMDMxIj4NCisgICAgICA8Y2hpbGRyZW4geG1pOnR5cGU9Im5vdGF0aW9uOkRlY29yYXRpb25Ob2RlIiB4bWk6aWQ9Il9fdWI0WXBwdEVlU0Z0TG9WZTItc29RIiB0eXBlPSIxMDg0Ii8+DQorICAgICAgPGVsZW1lbnQgeG1pOnR5cGU9InVtbDpDbGFzcyIgaHJlZj0icGF0aG1hcDovL1VNTF9NRVRBTU9ERUxTL1VNTC5tZXRhbW9kZWwudW1sI1Byb3BlcnR5Ii8+DQorICAgICAgPGxheW91dENvbnN0cmFpbnQgeG1pOnR5cGU9Im5vdGF0aW9uOkJvdW5kcyIgeG1pOmlkPSJfX3ViNFlacHRFZVNGdExvVmUyLXNvUSIgeD0iMTE0MCIgeT0iNDAiLz4NCisgICAgPC9jaGlsZHJlbj4NCisgICAgPGNoaWxkcmVuIHhtaTp0eXBlPSJub3RhdGlvbjpTaGFwZSIgeG1pOmlkPSJfQU5aRlFKcHVFZVNGdExvVmUyLXNvUSIgdHlwZT0iMTAzMSI+DQorICAgICAgPGNoaWxkcmVuIHhtaTp0eXBlPSJub3RhdGlvbjpEZWNvcmF0aW9uTm9kZSIgeG1pOmlkPSJfQU5aRlFwcHVFZVNGdExvVmUyLXNvUSIgdHlwZT0iMTA4NCIvPg0KKyAgICAgIDxlbGVtZW50IHhtaTp0eXBlPSJ1bWw6Q2xhc3MiIGhyZWY9InBhdGhtYXA6Ly9VTUxfTUVUQU1PREVMUy9VTUwubWV0YW1vZGVsLnVtbCNWYWx1ZVNwZWNpZmljYXRpb24iLz4NCisgICAgICA8bGF5b3V0Q29uc3RyYWludCB4bWk6dHlwZT0ibm90YXRpb246Qm91bmRzIiB4bWk6aWQ9Il9BTlpGUVpwdUVlU0Z0TG9WZTItc29RIiB4PSIxMDIwIiB5PSI0MCIvPg0KKyAgICA8L2NoaWxkcmVuPg0KKyAgICA8Y2hpbGRyZW4geG1pOnR5cGU9Im5vdGF0aW9uOlNoYXBlIiB4bWk6aWQ9Il9BdWtmc0pwdUVlU0Z0TG9WZTItc29RIiB0eXBlPSIxMDMxIj4NCisgICAgICA8Y2hpbGRyZW4geG1pOnR5cGU9Im5vdGF0aW9uOkRlY29yYXRpb25Ob2RlIiB4bWk6aWQ9Il9BdWtmc3BwdUVlU0Z0TG9WZTItc29RIiB0eXBlPSIxMDg0Ii8+DQorICAgICAgPGVsZW1lbnQgeG1pOnR5cGU9InVtbDpDbGFzcyIgaHJlZj0icGF0aG1hcDovL1VNTF9NRVRBTU9ERUxTL1VNTC5tZXRhbW9kZWwudW1sI05hbWVkRWxlbWVudCIvPg0KKyAgICAgIDxsYXlvdXRDb25zdHJhaW50IHhtaTp0eXBlPSJub3RhdGlvbjpCb3VuZHMiIHhtaTppZD0iX0F1a2ZzWnB1RWVTRnRMb1ZlMi1zb1EiIHg9IjUwMCIgeT0iNDAiLz4NCisgICAgPC9jaGlsZHJlbj4NCisgICAgPHN0eWxlcyB4bWk6dHlwZT0ibm90YXRpb246U3RyaW5nVmFsdWVTdHlsZSIgeG1pOmlkPSJfZDNVTThacHRFZVNGdExvVmUyLXNvUSIgbmFtZT0iZGlhZ3JhbV9jb21wYXRpYmlsaXR5X3ZlcnNpb24iIHN0cmluZ1ZhbHVlPSIxLjAuMCIvPg0KKyAgICA8c3R5bGVzIHhtaTp0eXBlPSJub3RhdGlvbjpEaWFncmFtU3R5bGUiIHhtaTppZD0iX2QzVU04cHB0RWVTRnRMb1ZlMi1zb1EiLz4NCisgICAgPHN0eWxlcyB4bWk6dHlwZT0ic3R5bGU6UGFweXJ1c1ZpZXdTdHlsZSIgeG1pOmlkPSJfZDNVTTg1cHRFZVNGdExvVmUyLXNvUSI+DQorICAgICAgPG93bmVyIHhtaTp0eXBlPSJ1bWw6UGFja2FnZSIgaHJlZj0iU3lzTUwucHJvZmlsZS51bWwjU3lzTUwtRGVwcmVjYXRlZEVsZW1lbnRzIi8+DQorICAgIDwvc3R5bGVzPg0KKyAgICA8ZWxlbWVudCB4bWk6dHlwZT0idW1sOlBhY2thZ2UiIGhyZWY9IlN5c01MLnByb2ZpbGUudW1sI1N5c01MLURlcHJlY2F0ZWRFbGVtZW50cyIvPg0KKyAgICA8ZWRnZXMgeG1pOnR5cGU9Im5vdGF0aW9uOkNvbm5lY3RvciIgeG1pOmlkPSJfaVFJQVNacHRFZVNGdExvVmUyLXNvUSIgdHlwZT0iMTAxMyIgc291cmNlPSJfaVAtUFFKcHRFZVNGdExvVmUyLXNvUSIgdGFyZ2V0PSJfaVFJQVFKcHRFZVNGdExvVmUyLXNvUSI+DQorICAgICAgPHN0eWxlcyB4bWk6dHlwZT0ibm90YXRpb246Rm9udFN0eWxlIiB4bWk6aWQ9Il9pUUlBU3BwdEVlU0Z0TG9WZTItc29RIi8+DQorICAgICAgPGVsZW1lbnQgeG1pOnR5cGU9InVtbDpFeHRlbnNpb24iIGhyZWY9IlN5c01MLnByb2ZpbGUudW1sI1N5c01MLURlcHJlY2F0ZWRFbGVtZW50cy1FX2V4dGVuc2lvbl9GbG93UG9ydF9iYXNlX1BvcnQiLz4NCisgICAgICA8YmVuZHBvaW50cyB4bWk6dHlwZT0ibm90YXRpb246UmVsYXRpdmVCZW5kcG9pbnRzIiB4bWk6aWQ9Il9pUUlBUzVwdEVlU0Z0TG9WZTItc29RIiBwb2ludHM9IlstMTcsIDAsIC0xNCwgOTBdJFstMTcsIC05MCwgLTE0LCAwXSIvPg0KKyAgICAgIDxzb3VyY2VBbmNob3IgeG1pOnR5cGU9Im5vdGF0aW9uOklkZW50aXR5QW5jaG9yIiB4bWk6aWQ9Il9rdGMtVUpwdEVlU0Z0TG9WZTItc29RIiBpZD0iKDAuNDQ2MjM2NTU5MTM5Nzg0OTQsMC4wKSIvPg0KKyAgICAgIDx0YXJnZXRBbmNob3IgeG1pOnR5cGU9Im5vdGF0aW9uOklkZW50aXR5QW5jaG9yIiB4bWk6aWQ9Il9rdGMtVVpwdEVlU0Z0TG9WZTItc29RIiBpZD0iKDAuNDU4NTYzNTM1OTExNjAyMiwxLjApIi8+DQorICAgIDwvZWRnZXM+DQorICAgIDxlZGdlcyB4bWk6dHlwZT0ibm90YXRpb246Q29ubmVjdG9yIiB4bWk6aWQ9Il9rV1dGN0pwdEVlU0Z0TG9WZTItc29RIiB0eXBlPSIxMDEzIiBzb3VyY2U9Il9rV01VNEpwdEVlU0Z0TG9WZTItc29RIiB0YXJnZXQ9Il9rV1dGNDVwdEVlU0Z0TG9WZTItc29RIj4NCisgICAgICA8c3R5bGVzIHhtaTp0eXBlPSJub3RhdGlvbjpGb250U3R5bGUiIHhtaTppZD0iX2tXV0Y3WnB0RWVTRnRMb1ZlMi1zb1EiLz4NCisgICAgICA8ZWxlbWVudCB4bWk6dHlwZT0idW1sOkV4dGVuc2lvbiIgaHJlZj0iU3lzTUwucHJvZmlsZS51bWwjU3lzTUwtRGVwcmVjYXRlZEVsZW1lbnRzLUVfZXh0ZW5zaW9uX0Zsb3dTcGVjaWZpY2F0aW9uX2Jhc2VfSW50ZXJmYWNlIi8+DQorICAgICAgPGJlbmRwb2ludHMgeG1pOnR5cGU9Im5vdGF0aW9uOlJlbGF0aXZlQmVuZHBvaW50cyIgeG1pOmlkPSJfa1dXRjdwcHRFZVNGdExvVmUyLXNvUSIgcG9pbnRzPSJbNywgMCwgLTYsIDkwXSRbNywgLTkwLCAtNiwgMF0iLz4NCisgICAgICA8c291cmNlQW5jaG9yIHhtaTp0eXBlPSJub3RhdGlvbjpJZGVudGl0eUFuY2hvciIgeG1pOmlkPSJfazhXVjhKcHRFZVNGdExvVmUyLXNvUSIgaWQ9IigwLjQ0LDAuMCkiLz4NCisgICAgICA8dGFyZ2V0QW5jaG9yIHhtaTp0eXBlPSJub3RhdGlvbjpJZGVudGl0eUFuY2hvciIgeG1pOmlkPSJfazhXVjhacHRFZVNGdExvVmUyLXNvUSIgaWQ9IigwLjU1LDEuMCkiLz4NCisgICAgPC9lZGdlcz4NCisgICAgPGVkZ2VzIHhtaTp0eXBlPSJub3RhdGlvbjpDb25uZWN0b3IiIHhtaTppZD0iX3I3aHVtWnB0RWVTRnRMb1ZlMi1zb1EiIHR5cGU9IjEwMTMiIHNvdXJjZT0iX3I3WDlrSnB0RWVTRnRMb1ZlMi1zb1EiIHRhcmdldD0iX3I3aHVrSnB0RWVTRnRMb1ZlMi1zb1EiPg0KKyAgICAgIDxzdHlsZXMgeG1pOnR5cGU9Im5vdGF0aW9uOkZvbnRTdHlsZSIgeG1pOmlkPSJfcjdodW1wcHRFZVNGdExvVmUyLXNvUSIvPg0KKyAgICAgIDxlbGVtZW50IHhtaTp0eXBlPSJ1bWw6RXh0ZW5zaW9uIiBocmVmPSJTeXNNTC5wcm9maWxlLnVtbCNTeXNNTC1EZXByZWNhdGVkRWxlbWVudHMtRV9iYXNlX0NsYXNzX2V4dGVuc2lvbl9EZXByZWNhdGVkIi8+DQorICAgICAgPGJlbmRwb2ludHMgeG1pOnR5cGU9Im5vdGF0aW9uOlJlbGF0aXZlQmVuZHBvaW50cyIgeG1pOmlkPSJfcjdodW01cHRFZVNGdExvVmUyLXNvUSIgcG9pbnRzPSJbMiwgMCwgLTgsIDE1MF0kWzIsIC03NSwgLTgsIDc1XSRbMTAsIC03NSwgMCwgNzVdJFsxMCwgLTE1MCwgMCwgMF0iLz4NCisgICAgICA8c291cmNlQW5jaG9yIHhtaTp0eXBlPSJub3RhdGlvbjpJZGVudGl0eUFuY2hvciIgeG1pOmlkPSJfc1lZcHNKcHRFZVNGdExvVmUyLXNvUSIgaWQ9IigwLjUwNTE1NDYzOTE3NTI1NzcsMC4wKSIvPg0KKyAgICAgIDx0YXJnZXRBbmNob3IgeG1pOnR5cGU9Im5vdGF0aW9uOklkZW50aXR5QW5jaG9yIiB4bWk6aWQ9Il9zWVlwc1pwdEVlU0Z0TG9WZTItc29RIiBpZD0iKDAuNDgsMS4wKSIvPg0KKyAgICA8L2VkZ2VzPg0KKyAgICA8ZWRnZXMgeG1pOnR5cGU9Im5vdGF0aW9uOkNvbm5lY3RvciIgeG1pOmlkPSJfOHNmS1ZwcHRFZVNGdExvVmUyLXNvUSIgdHlwZT0iMTAxMyIgc291cmNlPSJfcjdYOWtKcHRFZVNGdExvVmUyLXNvUSIgdGFyZ2V0PSJfOHNWWlVKcHRFZVNGdExvVmUyLXNvUSI+DQorICAgICAgPHN0eWxlcyB4bWk6dHlwZT0ibm90YXRpb246Rm9udFN0eWxlIiB4bWk6aWQ9Il84c2ZLVjVwdEVlU0Z0TG9WZTItc29RIi8+DQorICAgICAgPGVsZW1lbnQgeG1pOnR5cGU9InVtbDpFeHRlbnNpb24iIGhyZWY9IlN5c01MLnByb2ZpbGUudW1sI1N5c01MLURlcHJlY2F0ZWRFbGVtZW50cy1FX2Jhc2VfQXNzb2NpYXRpb25fZXh0ZW5zaW9uX0RlcHJlY2F0ZWQiLz4NCisgICAgICA8YmVuZHBvaW50cyB4bWk6dHlwZT0ibm90YXRpb246UmVsYXRpdmVCZW5kcG9pbnRzIiB4bWk6aWQ9Il84c2ZLV0pwdEVlU0Z0TG9WZTItc29RIiBwb2ludHM9IlsxMDAsIDAsIDgwLCAxNTBdJFsxMDAsIC03NSwgODAsIDc1XSRbMjAsIC03NSwgMCwgNzVdJFsyMCwgLTE1MCwgMCwgMF0iLz4NCisgICAgICA8c291cmNlQW5jaG9yIHhtaTp0eXBlPSJub3RhdGlvbjpJZGVudGl0eUFuY2hvciIgeG1pOmlkPSJfRGNWdGhKcHVFZVNGdExvVmUyLXNvUSIgaWQ9IigwLjAsMC4wKSIvPg0KKyAgICAgIDx0YXJnZXRBbmNob3IgeG1pOnR5cGU9Im5vdGF0aW9uOklkZW50aXR5QW5jaG9yIiB4bWk6aWQ9Il9EY1Z0aFpwdUVlU0Z0TG9WZTItc29RIiBpZD0iKDEuMCwxLjApIi8+DQorICAgIDwvZWRnZXM+DQorICAgIDxlZGdlcyB4bWk6dHlwZT0ibm90YXRpb246Q29ubmVjdG9yIiB4bWk6aWQ9Il8tSFpwS1pwdEVlU0Z0TG9WZTItc29RIiB0eXBlPSIxMDEzIiBzb3VyY2U9Il9yN1g5a0pwdEVlU0Z0TG9WZTItc29RIiB0YXJnZXQ9Il8tSFpwSUpwdEVlU0Z0TG9WZTItc29RIj4NCisgICAgICA8c3R5bGVzIHhtaTp0eXBlPSJub3RhdGlvbjpGb250U3R5bGUiIHhtaTppZD0iXy1IWnBLcHB0RWVTRnRMb1ZlMi1zb1EiLz4NCisgICAgICA8ZWxlbWVudCB4bWk6dHlwZT0idW1sOkV4dGVuc2lvbiIgaHJlZj0iU3lzTUwucHJvZmlsZS51bWwjU3lzTUwtRGVwcmVjYXRlZEVsZW1lbnRzLUVfYmFzZV9HZW5lcmFsaXphdGlvbl9leHRlbnNpb25fRGVwcmVjYXRlZCIvPg0KKyAgICAgIDxiZW5kcG9pbnRzIHhtaTp0eXBlPSJub3RhdGlvbjpSZWxhdGl2ZUJlbmRwb2ludHMiIHhtaTppZD0iXy1IWnBLNXB0RWVTRnRMb1ZlMi1zb1EiIHBvaW50cz0iWzgwLCAwLCAyMDgsIDE1MF0kWzgwLCAtNzUsIDIwOCwgNzVdJFstMTI4LCAtNzUsIDAsIDc1XSRbLTEyOCwgLTE1MCwgMCwgMF0iLz4NCisgICAgICA8c291cmNlQW5jaG9yIHhtaTp0eXBlPSJub3RhdGlvbjpJZGVudGl0eUFuY2hvciIgeG1pOmlkPSJfRGNWdGhwcHVFZVNGdExvVmUyLXNvUSIgaWQ9IigwLjEwMzA5Mjc4MzUwNTE1NDYzLDAuMCkiLz4NCisgICAgICA8dGFyZ2V0QW5jaG9yIHhtaTp0eXBlPSJub3RhdGlvbjpJZGVudGl0eUFuY2hvciIgeG1pOmlkPSJfRGNWdGg1cHVFZVNGdExvVmUyLXNvUSIgaWQ9IigwLjkyLDEuMCkiLz4NCisgICAgPC9lZGdlcz4NCisgICAgPGVkZ2VzIHhtaTp0eXBlPSJub3RhdGlvbjpDb25uZWN0b3IiIHhtaTppZD0iXy0xR2NvSnB0RWVTRnRMb1ZlMi1zb1EiIHR5cGU9IjEwMTMiIHNvdXJjZT0iX3I3WDlrSnB0RWVTRnRMb1ZlMi1zb1EiIHRhcmdldD0iXy0wOHJvSnB0RWVTRnRMb1ZlMi1zb1EiPg0KKyAgICAgIDxzdHlsZXMgeG1pOnR5cGU9Im5vdGF0aW9uOkZvbnRTdHlsZSIgeG1pOmlkPSJfLTFHY29acHRFZVNGdExvVmUyLXNvUSIvPg0KKyAgICAgIDxlbGVtZW50IHhtaTp0eXBlPSJ1bWw6RXh0ZW5zaW9uIiBocmVmPSJTeXNNTC5wcm9maWxlLnVtbCNTeXNNTC1EZXByZWNhdGVkRWxlbWVudHMtRV9iYXNlX0luc3RhbmNlU3BlY2lmaWNhdGlvbl9leHRlbnNpb25fRGVwcmVjYXRlZCIvPg0KKyAgICAgIDxiZW5kcG9pbnRzIHhtaTp0eXBlPSJub3RhdGlvbjpSZWxhdGl2ZUJlbmRwb2ludHMiIHhtaTppZD0iXy0xR2NvcHB0RWVTRnRMb1ZlMi1zb1EiIHBvaW50cz0iWzkzLCAwLCAtNDQ5LCAxNTBdJFs5MywgLTc1LCAtNDQ5LCA3NV0kWzU0MiwgLTc1LCAwLCA3NV0kWzU0MiwgLTE1MCwgMCwgMF0iLz4NCisgICAgICA8c291cmNlQW5jaG9yIHhtaTp0eXBlPSJub3RhdGlvbjpJZGVudGl0eUFuY2hvciIgeG1pOmlkPSJfRGNWdGlKcHVFZVNGdExvVmUyLXNvUSIgaWQ9IigwLjAzNjA4MjQ3NDIyNjgwNDEyLDAuMCkiLz4NCisgICAgICA8dGFyZ2V0QW5jaG9yIHhtaTp0eXBlPSJub3RhdGlvbjpJZGVudGl0eUFuY2hvciIgeG1pOmlkPSJfRGNWdGlacHVFZVNGdExvVmUyLXNvUSIgaWQ9IigwLjk3MzIxNDI4NTcxNDI4NTcsMS4wKSIvPg0KKyAgICA8L2VkZ2VzPg0KKyAgICA8ZWRnZXMgeG1pOnR5cGU9Im5vdGF0aW9uOkNvbm5lY3RvciIgeG1pOmlkPSJfX3VsQ1ZwcHRFZVNGdExvVmUyLXNvUSIgdHlwZT0iMTAxMyIgc291cmNlPSJfcjdYOWtKcHRFZVNGdExvVmUyLXNvUSIgdGFyZ2V0PSJfX3ViNFlKcHRFZVNGdExvVmUyLXNvUSI+DQorICAgICAgPHN0eWxlcyB4bWk6dHlwZT0ibm90YXRpb246Rm9udFN0eWxlIiB4bWk6aWQ9Il9fdWxDVjVwdEVlU0Z0TG9WZTItc29RIi8+DQorICAgICAgPGVsZW1lbnQgeG1pOnR5cGU9InVtbDpFeHRlbnNpb24iIGhyZWY9IlN5c01MLnByb2ZpbGUudW1sI1N5c01MLURlcHJlY2F0ZWRFbGVtZW50cy1FX2Jhc2VfUHJvcGVydHlfZXh0ZW5zaW9uX0RlcHJlY2F0ZWQiLz4NCisgICAgICA8YmVuZHBvaW50cyB4bWk6dHlwZT0ibm90YXRpb246UmVsYXRpdmVCZW5kcG9pbnRzIiB4bWk6aWQ9Il9fdWxDV0pwdEVlU0Z0TG9WZTItc29RIiBwb2ludHM9Ils4OSwgMCwgLTMxNiwgMTUwXSRbODksIC03NSwgLTMxNiwgNzVdJFs0MDUsIC03NSwgMCwgNzVdJFs0MDUsIC0xNTAsIDAsIDBdIi8+DQorICAgICAgPHNvdXJjZUFuY2hvciB4bWk6dHlwZT0ibm90YXRpb246SWRlbnRpdHlBbmNob3IiIHhtaTppZD0iX0RjVnRncHB1RWVTRnRMb1ZlMi1zb1EiIGlkPSIoMC4wNTY3MDEwMzA5Mjc4MzUwNSwwLjApIi8+DQorICAgICAgPHRhcmdldEFuY2hvciB4bWk6dHlwZT0ibm90YXRpb246SWRlbnRpdHlBbmNob3IiIHhtaTppZD0iX0RjVnRnNXB1RWVTRnRMb1ZlMi1zb1EiIGlkPSIoMC45NiwxLjApIi8+DQorICAgIDwvZWRnZXM+DQorICAgIDxlZGdlcyB4bWk6dHlwZT0ibm90YXRpb246Q29ubmVjdG9yIiB4bWk6aWQ9Il9BTlpGU1pwdUVlU0Z0TG9WZTItc29RIiB0eXBlPSIxMDEzIiBzb3VyY2U9Il9yN1g5a0pwdEVlU0Z0TG9WZTItc29RIiB0YXJnZXQ9Il9BTlpGUUpwdUVlU0Z0TG9WZTItc29RIj4NCisgICAgICA8c3R5bGVzIHhtaTp0eXBlPSJub3RhdGlvbjpGb250U3R5bGUiIHhtaTppZD0iX0FOWkZTcHB1RWVTRnRMb1ZlMi1zb1EiLz4NCisgICAgICA8ZWxlbWVudCB4bWk6dHlwZT0idW1sOkV4dGVuc2lvbiIgaHJlZj0iU3lzTUwucHJvZmlsZS51bWwjU3lzTUwtRGVwcmVjYXRlZEVsZW1lbnRzLUVfYmFzZV9WYWx1ZVNwZWNpZmljYXRpb25fZXh0ZW5zaW9uX0RlcHJlY2F0ZWQiLz4NCisgICAgICA8YmVuZHBvaW50cyB4bWk6dHlwZT0ibm90YXRpb246UmVsYXRpdmVCZW5kcG9pbnRzIiB4bWk6aWQ9Il9BTlpGUzVwdUVlU0Z0TG9WZTItc29RIiBwb2ludHM9Ils3OSwgMCwgLTE5MiwgMTUwXSRbNzksIC03NSwgLTE5MiwgNzVdJFsyNzEsIC03NSwgMCwgNzVdJFsyNzEsIC0xNTAsIDAsIDBdIi8+DQorICAgICAgPHNvdXJjZUFuY2hvciB4bWk6dHlwZT0ibm90YXRpb246SWRlbnRpdHlBbmNob3IiIHhtaTppZD0iX0RjVnRnSnB1RWVTRnRMb1ZlMi1zb1EiIGlkPSIoMC4xMDgyNDc0MjI2ODA0MTIzOCwwLjApIi8+DQorICAgICAgPHRhcmdldEFuY2hvciB4bWk6dHlwZT0ibm90YXRpb246SWRlbnRpdHlBbmNob3IiIHhtaTppZD0iX0RjVnRnWnB1RWVTRnRMb1ZlMi1zb1EiIGlkPSIoMC45MiwxLjApIi8+DQorICAgIDwvZWRnZXM+DQorICAgIDxlZGdlcyB4bWk6dHlwZT0ibm90YXRpb246Q29ubmVjdG9yIiB4bWk6aWQ9Il9BdXVRc0pwdUVlU0Z0TG9WZTItc29RIiB0eXBlPSIxMDEzIiBzb3VyY2U9Il8wYnNZMEpwdEVlU0Z0TG9WZTItc29RIiB0YXJnZXQ9Il9BdWtmc0pwdUVlU0Z0TG9WZTItc29RIj4NCisgICAgICA8c3R5bGVzIHhtaTp0eXBlPSJub3RhdGlvbjpGb250U3R5bGUiIHhtaTppZD0iX0F1dVFzWnB1RWVTRnRMb1ZlMi1zb1EiLz4NCisgICAgICA8ZWxlbWVudCB4bWk6dHlwZT0idW1sOkV4dGVuc2lvbiIgaHJlZj0iU3lzTUwucHJvZmlsZS51bWwjU3lzTUwtRGVwcmVjYXRlZEVsZW1lbnRzLUVfZXh0ZW5zaW9uX0FsbG9jYXRlZF9iYXNlX05hbWVkRWxlbWVudCIvPg0KKyAgICAgIDxiZW5kcG9pbnRzIHhtaTp0eXBlPSJub3RhdGlvbjpSZWxhdGl2ZUJlbmRwb2ludHMiIHhtaTppZD0iX0F1dVFzcHB1RWVTRnRMb1ZlMi1zb1EiIHBvaW50cz0iWy0xMTQsIDAsIDQ1LCA5MF0kWy0xMTQsIC05MCwgNDUsIDBdIi8+DQorICAgICAgPHNvdXJjZUFuY2hvciB4bWk6dHlwZT0ibm90YXRpb246SWRlbnRpdHlBbmNob3IiIHhtaTppZD0iX0VNbjY4SnB1RWVTRnRMb1ZlMi1zb1EiIGlkPSIoMC41LDAuMCkiLz4NCisgICAgICA8dGFyZ2V0QW5jaG9yIHhtaTp0eXBlPSJub3RhdGlvbjpJZGVudGl0eUFuY2hvciIgeG1pOmlkPSJfRU1uNjhacHVFZVNGdExvVmUyLXNvUSIgaWQ9IigwLjYsMS4wKSIvPg0KKyAgICA8L2VkZ2VzPg0KKyAgPC9ub3RhdGlvbjpEaWFncmFtPg0KKzwveG1pOlhNST4NCmRpZmYgLS1naXQgYS9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC9tb2RlbC9TeXNNTC5wcm9maWxlLnVtbCBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0L21vZGVsL1N5c01MLnByb2ZpbGUudW1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI2M2Q4MTgKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC9tb2RlbC9TeXNNTC5wcm9maWxlLnVtbApAQCAtMCwwICsxLDIzNTkgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+DQorPHhtaTpYTUkgeG1pOnZlcnNpb249IjIwMTMxMDAxIiB4bWxuczp4bWk9Imh0dHA6Ly93d3cub21nLm9yZy9zcGVjL1hNSS8yMDEzMTAwMSIgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIgeG1sbnM6RWNvcmU9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvdW1sMi9zY2hlbWFzL0Vjb3JlLzUiIHhtbG5zOmVjb3JlPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2VtZi8yMDAyL0Vjb3JlIiB4bWxuczp1bWw9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvdW1sMi81LjAuMC9VTUwiIHhzaTpzY2hlbWFMb2NhdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy91bWwyL3NjaGVtYXMvRWNvcmUvNSBwYXRobWFwOi8vVU1MX1BST0ZJTEVTL0Vjb3JlLnByb2ZpbGUudW1sI196MU9GY0hqcUVkeThTNENyOFJjX05BIj4NCisgIDx1bWw6UHJvZmlsZSB4bWk6aWQ9IlN5c01MIiBuYW1lPSJTeXNNTCIgVVJJPSJodHRwOi8vd3d3Lm9tZy5vcmcvc3BlYy9TeXNNTC8yMDEzMTIwMS9TeXNNTCIgbWV0YW1vZGVsUmVmZXJlbmNlPSJTeXNNTC1wYWNrYWdlSW1wb3J0MSI+DQorICAgIDxlQW5ub3RhdGlvbnMgeG1pOmlkPSJQcm9maWxlRGVmaW5pdGlvbiIgc291cmNlPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3VtbDIvMi4wLjAvVU1MIj4NCisgICAgICA8Y29udGVudHMgeG1pOnR5cGU9ImVjb3JlOkVQYWNrYWdlIiB4bWk6aWQ9IlByb2ZpbGVEZWZpbml0aW9uLVN5c01MIiBuYW1lPSJTeXNNTCIgbnNVUkk9Imh0dHA6Ly93d3cub21nLm9yZy9zcGVjL1N5c01MLzIwMTMxMjAxL1N5c01MIiBuc1ByZWZpeD0iU3lzTUwiPg0KKyAgICAgICAgPGVTdWJwYWNrYWdlcyB4bWk6aWQ9IlByb2ZpbGVEZWZpbml0aW9uLVN5c01MLUJsb2NrcyIgbmFtZT0iQmxvY2tzIiBuc1VSST0iaHR0cDovLy9TeXNNTC9CbG9ja3MuZWNvcmUiIG5zUHJlZml4PSJTeXNNTC5CbG9ja3MiPg0KKyAgICAgICAgICA8ZUFubm90YXRpb25zIHhtaTppZD0iUHJvZmlsZURlZmluaXRpb24tU3lzTUwtQmxvY2tzLWVBbm5vdGF0aW9ucyIgc291cmNlPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3VtbDIvNC4wLjAvVU1MIiByZWZlcmVuY2VzPSJTeXNNTC1CbG9ja3MiLz4NCisgICAgICAgICAgPGVDbGFzc2lmaWVycyB4bWk6dHlwZT0iZWNvcmU6RUNsYXNzIiB4bWk6aWQ9IlByb2ZpbGVEZWZpbml0aW9uLVN5c01MLUJsb2Nrcy1WYWx1ZVR5cGUiIG5hbWU9IlZhbHVlVHlwZSI+DQorICAgICAgICAgICAgPGVBbm5vdGF0aW9ucyB4bWk6aWQ9IlByb2ZpbGVEZWZpbml0aW9uLVN5c01MLUJsb2Nrcy1WYWx1ZVR5cGUtZUFubm90YXRpb25zMSIgc291cmNlPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3VtbDIvMi4wLjAvVU1MIiByZWZlcmVuY2VzPSJTeXNNTC1CbG9ja3MtVmFsdWVUeXBlIi8+DQorICAgICAgICAgICAgPGVBbm5vdGF0aW9ucyB4bWk6aWQ9IlByb2ZpbGVEZWZpbml0aW9uLVN5c01MLUJsb2Nrcy1WYWx1ZVR5cGUtZUFubm90YXRpb25zMiIgc291cmNlPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2VtZi8yMDAyL0dlbk1vZGVsIj4NCisgICAgICAgICAgICAgIDxkZXRhaWxzIHhtaTppZD0iUHJvZmlsZURlZmluaXRpb24tU3lzTUwtQmxvY2tzLVZhbHVlVHlwZS1lQW5ub3RhdGlvbnMyLWRldGFpbHMiIGtleT0iZG9jdW1lbnRhdGlvbiIgdmFsdWU9IkEgVmFsdWVUeXBlIGRlZmluZXMgdHlwZXMgb2YgdmFsdWVzIHRoYXQgbWF5IGJlIHVzZWQgdG8gZXhwcmVzcyBpbmZvcm1hdGlvbiBhYm91dCBhIHN5c3RlbSwgYnV0IGNhbm5vdCBiZSBpZGVudGlmaWVkIGFzIHRoZSB0YXJnZXQgb2YgYW55IHJlZmVyZW5jZS4gU2luY2UgYSB2YWx1ZSBjYW5ub3QgYmUgaWRlbnRpZmllZCBleGNlcHQgYnkgbWVhbnMgb2YgdGhlIHZhbHVlIGl0c2VsZiwgZWFjaCBzdWNoIHZhbHVlIHdpdGhpbiBhIG1vZGVsIGlzIGluZGVwZW5kZW50IG9mIGFueSBvdGhlciwgdW5sZXNzIG90aGVyIGZvcm1zIG9mIGNvbnN0cmFpbnRzIGFyZSBpbXBvc2VkLiBWYWx1ZSB0eXBlcyBtYXkgYmUgdXNlZCB0byB0eXBlIHByb3BlcnRpZXMsIG9wZXJhdGlvbiBwYXJhbWV0ZXJzLCBvciBwb3RlbnRpYWxseSBvdGhlciBlbGVtZW50cyB3aXRoaW4gU3lzTUwuIFN5c01MIGRlZmluZXMgVmFsdWVUeXBlIGFzIGEgc3RlcmVvdHlwZSBvZiBVTUwgRGF0YVR5cGUgdG8gZXN0YWJsaXNoIGEgbW9yZSBuZXV0cmFsIHRlcm0gZm9yIHN5c3RlbSB2YWx1ZXMgdGhhdCBtYXkgbmV2ZXIgYmUgZ2l2ZW4gYSBjb25jcmV0ZSBkYXRhIHJlcHJlc2VudGF0aW9uLiIvPg0KKyAgICAgICAgICAgIDwvZUFubm90YXRpb25zPg0KKyAgICAgICAgICAgIDxlU3RydWN0dXJhbEZlYXR1cmVzIHhtaTp0eXBlPSJlY29yZTpFUmVmZXJlbmNlIiB4bWk6aWQ9IlByb2ZpbGVEZWZpbml0aW9uLVN5c01MLUJsb2Nrcy1WYWx1ZVR5cGUtYmFzZV9EYXRhVHlwZSIgbmFtZT0iYmFzZV9EYXRhVHlwZSIgb3JkZXJlZD0iZmFsc2UiPg0KKyAgICAgICAgICAgICAgPGVUeXBlIHhtaTp0eXBlPSJlY29yZTpFQ2xhc3MiIGhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvdW1sMi81LjAuMC9VTUwjLy9EYXRhVHlwZSIvPg0KKyAgICAgICAgICAgIDwvZVN0cnVjdHVyYWxGZWF0dXJlcz4NCisgICAgICAgICAgICA8ZVN0cnVjdHVyYWxGZWF0dXJlcyB4bWk6dHlwZT0iZWNvcmU6RVJlZmVyZW5jZSIgeG1pOmlkPSJQcm9maWxlRGVmaW5pdGlvbi1TeXNNTC1CbG9ja3MtVmFsdWVUeXBlLXVuaXQiIG5hbWU9InVuaXQiIG9yZGVyZWQ9ImZhbHNlIj4NCisgICAgICAgICAgICAgIDxlQW5ub3RhdGlvbnMgeG1pOmlkPSJQcm9maWxlRGVmaW5pdGlvbi1TeXNNTC1CbG9ja3MtVmFsdWVUeXBlLXVuaXQtZUFubm90YXRpb25zMSIgc291cmNlPSJodHRwOi8vc2NoZW1hLm9tZy5vcmcvc3BlYy9NT0YvMi4wL2Vtb2YueG1sI1Byb3BlcnR5Lm9wcG9zaXRlUm9sZU5hbWUiPg0KKyAgICAgICAgICAgICAgICA8ZGV0YWlscyB4bWk6aWQ9IlByb2ZpbGVEZWZpbml0aW9uLVN5c01MLUJsb2Nrcy1WYWx1ZVR5cGUtdW5pdC1lQW5ub3RhdGlvbnMxLWRldGFpbHMiIGtleT0iYm9keSIgdmFsdWU9InZhbHVlVHlwZSIvPg0KKyAgICAgICAgICAgICAgPC9lQW5ub3RhdGlvbnM+DQorICAgICAgICAgICAgICA8ZUFubm90YXRpb25zIHhtaTppZD0iUHJvZmlsZURlZmluaXRpb24tU3lzTUwtQmxvY2tzLVZhbHVlVHlwZS11bml0LWVBbm5vdGF0aW9uczIiIHNvdXJjZT0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9lbWYvMjAwMi9HZW5Nb2RlbCI+DQorICAgICAgICAgICAgICAgIDxkZXRhaWxzIHhtaTppZD0iUHJvZmlsZURlZmluaXRpb24tU3lzTUwtQmxvY2tzLVZhbHVlVHlwZS11bml0LWVBbm5vdGF0aW9uczItZGV0YWlscyIga2V5PSJkb2N1bWVudGF0aW9uIiB2YWx1ZT0iQSBxdWFudGl0eSBpbiB0ZXJtcyBvZiB3aGljaCB0aGUgbWFnbml0dWRlcyBvZiBvdGhlciBxdWFudGl0aWVzIHRoYXQgaGF2ZSB0aGUgc2FtZSBkaW1lbnNpb24gY2FuIGJlIHN0YXRlZCwgYXMgaWRlbnRpZmllZCBieSBhbiBpbnN0YW5jZSBvZiB0aGUgVW5pdCBzdGVyZW90eXBlLiIvPg0KKyAgICAgICAgICAgICAgPC9lQW5ub3RhdGlvbnM+DQorICAgICAgICAgICAgICA8ZVR5cGUgeG1pOnR5cGU9ImVjb3JlOkVDbGFzcyIgaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy91bWwyLzUuMC4wL1VNTCMvL0luc3RhbmNlU3BlY2lmaWNhdGlvbiIvPg0KKyAgICAgICAgICAgIDwvZVN0cnVjdHVyYWxGZWF0dXJlcz4NCisgICAgICAgICAgICA8ZVN0cnVjdHVyYWxGZWF0dXJlcyB4bWk6dHlwZT0iZWNvcmU6RVJlZmVyZW5jZSIgeG1pOmlkPSJQcm9maWxlRGVmaW5pdGlvbi1TeXNNTC1CbG9ja3MtVmFsdWVUeXBlLXF1YW50aXR5S2luZCIgbmFtZT0icXVhbnRpdHlLaW5kIiBvcmRlcmVkPSJmYWxzZSI+DQorICAgICAgICAgICAgICA8ZUFubm90YXRpb25zIHhtaTppZD0iUHJvZmlsZURlZmluaXRpb24tU3lzTUwtQmxvY2tzLVZhbHVlVHlwZS1xdWFudGl0eUtpbmQtZUFubm90YXRpb25zMSIgc291cmNlPSJodHRwOi8vc2NoZW1hLm9tZy5vcmcvc3BlYy9NT0YvMi4wL2Vtb2YueG1sI1Byb3BlcnR5Lm9wcG9zaXRlUm9sZU5hbWUiPg0KKyAgICAgICAgICAgICAgICA8ZGV0YWlscyB4bWk6aWQ9IlByb2ZpbGVEZWZpbml0aW9uLVN5c01MLUJsb2Nrcy1WYWx1ZVR5cGUtcXVhbnRpdHlLaW5kLWVBbm5vdGF0aW9uczEtZGV0YWlscyIga2V5PSJib2R5IiB2YWx1ZT0idmFsdWVUeXBlIi8+DQorICAgICAgICAgICAgICA8L2VBbm5vdGF0aW9ucz4NCisgICAgICAgICAgICAgIDxlQW5ub3RhdGlvbnMgeG1pOmlkPSJQcm9maWxlRGVmaW5pdGlvbi1TeXNNTC1CbG9ja3MtVmFsdWVUeXBlLXF1YW50aXR5S2luZC1lQW5ub3RhdGlvbnMyIiBzb3VyY2U9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvZW1mLzIwMDIvR2VuTW9kZWwiPg0KKyAgICAgICAgICAgICAgICA8ZGV0YWlscyB4bWk6aWQ9IlByb2ZpbGVEZWZpbml0aW9uLVN5c01MLUJsb2Nrcy1WYWx1ZVR5cGUtcXVhbnRpdHlLaW5kLWVBbm5vdGF0aW9uczItZGV0YWlscyIga2V5PSJkb2N1bWVudGF0aW9uIiB2YWx1ZT0iQSBraW5kIG9mIHF1YW50aXR5IHRoYXQgbWF5IGJlIHN0YXRlZCBieSBtZWFucyBvZiBkZWZpbmVkIHVuaXRzLCBhcyBpZGVudGlmaWVkIGJ5IGFuIGluc3RhbmNlIG9mIHRoZSBEaW1lbnNpb24gc3RlcmVvdHlwZS4gQSB2YWx1ZSB0eXBlIG1heSBvcHRpb25hbGx5IHNwZWNpZnkgYSBkaW1lbnNpb24gd2l0aG91dCBhbnkgdW5pdC4gU3VjaCBhIHZhbHVlIGhhcyBubyBjb25jcmV0ZSByZXByZXNlbnRhdGlvbiwgYnV0IG1heSBiZSB1c2VkIHRvIGV4cHJlc3MgYSB2YWx1ZSBpbiBhbiBhYnN0cmFjdCBmb3JtIGluZGVwZW5kZW50IG9mIGFueSBzcGVjaWZpYyB1bml0cy4iLz4NCisgICAgICAgICAgICAgIDwvZUFubm90YXRpb25zPg0KKyAgICAgICAgICAgICAgPGVUeXBlIHhtaTp0eXBlPSJlY29yZTpFQ2xhc3MiIGhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvdW1sMi81LjAuMC9VTUwjLy9JbnN0YW5jZVNwZWNpZmljYXRpb24iLz4NCisgICAgICAgICAgICA8L2VTdHJ1Y3R1cmFsRmVhdHVyZXM+DQorICAgICAgICAgIDwvZUNsYXNzaWZpZXJzPg0KKyAgICAgICAgICA8ZUNsYXNzaWZpZXJzIHhtaTp0eXBlPSJlY29yZTpFQ2xhc3MiIHhtaTppZD0iUHJvZmlsZURlZmluaXRpb24tU3lzTUwtQmxvY2tzLURpc3RyaWJ1dGVkUHJvcGVydHkiIG5hbWU9IkRpc3RyaWJ1dGVkUHJvcGVydHkiPg0KKyAgICAgICAgICAgIDxlQW5ub3RhdGlvbnMgeG1pOmlkPSJQcm9maWxlRGVmaW5pdGlvbi1TeXNNTC1CbG9ja3MtRGlzdHJpYnV0ZWRQcm9wZXJ0eS1lQW5ub3RhdGlvbnMxIiBzb3VyY2U9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvdW1sMi8yLjAuMC9VTUwiIHJlZmVyZW5jZXM9IlN5c01MLUJsb2Nrcy1EaXN0cmlidXRlZFByb3BlcnR5Ii8+DQorICAgICAgICAgICAgPGVBbm5vdGF0aW9ucyB4bWk6aWQ9IlByb2ZpbGVEZWZpbml0aW9uLVN5c01MLUJsb2Nrcy1EaXN0cmlidXRlZFByb3BlcnR5LWVBbm5vdGF0aW9uczIiIHNvdXJjZT0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9lbWYvMjAwMi9HZW5Nb2RlbCI+DQorICAgICAgICAgICAgICA8ZGV0YWlscyB4bWk6aWQ9IlByb2ZpbGVEZWZpbml0aW9uLVN5c01MLUJsb2Nrcy1EaXN0cmlidXRlZFByb3BlcnR5LWVBbm5vdGF0aW9uczItZGV0YWlscyIga2V5PSJkb2N1bWVudGF0aW9uIiB2YWx1ZT0iRGlzdHJpYnV0ZWRQcm9wZXJ0eSBpcyBhIHN0ZXJlb3R5cGUgb2YgUHJvcGVydHkgdXNlZCB0byBhcHBseSBhIHByb2JhYmlsaXR5IGRpc3RyaWJ1dGlvbiB0byB0aGUgdmFsdWVzIG9mIHRoZSBwcm9wZXJ0eS4gU3BlY2lmaWMgZGlzdHJpYnV0aW9ucyBzaG91bGQgYmUgZGVmaW5lZCBhcyBzdWJjbGFzc2VzIG9mIHRoZSBEaXN0cmlidXRlZFByb3BlcnR5IHN0ZXJlb3R5cGUgd2l0aCB0aGUgb3BlcmFuZHMgb2YgdGhlIGRpc3RyaWJ1dGlvbnMgcmVwcmVzZW50ZWQgYnkgcHJvcGVydGllcyBvZiB0aG9zZSBzdGVyZW90eXBlIHN1YmNsYXNzZXMuIi8+DQorICAgICAgICAgICAgPC9lQW5ub3RhdGlvbnM+DQorICAgICAgICAgICAgPGVTdHJ1Y3R1cmFsRmVhdHVyZXMgeG1pOnR5cGU9ImVjb3JlOkVSZWZlcmVuY2UiIHhtaTppZD0iUHJvZmlsZURlZmluaXRpb24tU3lzTUwtQmxvY2tzLURpc3RyaWJ1dGVkUHJvcGVydHktYmFzZV9Qcm9wZXJ0eSIgbmFtZT0iYmFzZV9Qcm9wZXJ0eSIgb3JkZXJlZD0iZmFsc2UiPg0KKyAgICAgICAgICAgICAgPGVUeXBlIHhtaTp0eXBlPSJlY29yZTpFQ2xhc3MiIGhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvdW1sMi81LjAuMC9VTUwjLy9Qcm9wZXJ0eSIvPg0KKyAgICAgICAgICAgIDwvZVN0cnVjdHVyYWxGZWF0dXJlcz4NCisgICAgICAgICAgPC9lQ2xhc3NpZmllcnM+DQorICAgICAgICAgIDxlQ2xhc3NpZmllcnMgeG1pOnR5cGU9ImVjb3JlOkVDbGFzcyIgeG1pOmlkPSJQcm9maWxlRGVmaW5pdGlvbi1TeXNNTC1CbG9ja3MtQ29ubmVjdG9yUHJvcGVydHkiIG5hbWU9IkNvbm5lY3RvclByb3BlcnR5Ij4NCisgICAgICAgICAgICA8ZUFubm90YXRpb25zIHhtaTppZD0iUHJvZmlsZURlZmluaXRpb24tU3lzTUwtQmxvY2tzLUNvbm5lY3RvclByb3BlcnR5LWVBbm5vdGF0aW9uczEiIHNvdXJjZT0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy91bWwyLzIuMC4wL1VNTCIgcmVmZXJlbmNlcz0iU3lzTUwtQmxvY2tzLUNvbm5lY3RvclByb3BlcnR5Ii8+DQorICAgICAgICAgICAgPGVBbm5vdGF0aW9ucyB4bWk6aWQ9IlByb2ZpbGVEZWZpbml0aW9uLVN5c01MLUJsb2Nrcy1Db25uZWN0b3JQcm9wZXJ0eS1lQW5ub3RhdGlvbnMyIiBzb3VyY2U9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvZW1mLzIwMDIvR2VuTW9kZWwiPg0KKyAgICAgICAgICAgICAgPGRldGFpbHMgeG1pOmlkPSJQcm9maWxlRGVmaW5pdGlvbi1TeXNNTC1CbG9ja3MtQ29ubmVjdG9yUHJvcGVydHktZUFubm90YXRpb25zMi1kZXRhaWxzIiBrZXk9ImRvY3VtZW50YXRpb24iIHZhbHVlPSJDb25uZWN0b3JzIGNhbiBiZSB0eXBlZCBieSBhc3NvY2lhdGlvbiBjbGFzc2VzIHRoYXQgYXJlIHN0ZXJlb3R5cGVkIGJ5IEJsb2NrIChhc3NvY2lhdGlvbiBibG9ja3MpLiBUaGVzZSBjb25uZWN0b3JzIHNwZWNpZnkgaW5zdGFuY2VzIChsaW5rcykgb2YgdGhlIGFzc29jaWF0aW9uIGJsb2NrIHRoYXQgZXhpc3QgZHVlIHRvIGluc3RhbnRpYXRpb24gb2YgdGhlIGJsb2NrIG93bmluZyBvciBpbmhlcml0aW5nIHRoZSBjb25uZWN0b3IuIFRoZSB2YWx1ZSBvZiBhIGNvbm5lY3RvciBwcm9wZXJ0eSBvbiBhbiBpbnN0YW5jZSBvZiBhIGJsb2NrIHdpbGwgYmUgZXhhY3RseSB0aG9zZSBsaW5rIG9iamVjdHMgdGhhdCBhcmUgaW5zdGFuY2VzIG9mIHRoZSBhc3NvY2lhdGlvbiBibG9jayB0eXBpbmcgdGhlIGNvbm5lY3RvciByZWZlcnJlZCB0byBieSB0aGUgY29ubmVjdG9yIHByb3BlcnR5LiIvPg0KKyAgICAgICAgICAgIDwvZUFubm90YXRpb25zPg0KKyAgICAgICAgICAgIDxlU3RydWN0dXJhbEZlYXR1cmVzIHhtaTp0eXBlPSJlY29yZTpFUmVmZXJlbmNlIiB4bWk6aWQ9IlByb2ZpbGVEZWZpbml0aW9uLVN5c01MLUJsb2Nrcy1Db25uZWN0b3JQcm9wZXJ0eS1iYXNlX1Byb3BlcnR5IiBuYW1lPSJiYXNlX1Byb3BlcnR5IiBvcmRlcmVkPSJmYWxzZSI+DQorICAgICAgICAgICAgICA8ZVR5cGUgeG1pOnR5cGU9ImVjb3JlOkVDbGFzcyIgaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy91bWwyLzUuMC4wL1VNTCMvL1Byb3BlcnR5Ii8+DQorICAgICAgICAgICAgPC9lU3RydWN0dXJhbEZlYXR1cmVzPg0KKyAgICAgICAgICAgIDxlU3RydWN0dXJhbEZlYXR1cmVzIHhtaTp0eXBlPSJlY29yZTpFUmVmZXJlbmNlIiB4bWk6aWQ9IlByb2ZpbGVEZWZpbml0aW9uLVN5c01MLUJsb2Nrcy1Db25uZWN0b3JQcm9wZXJ0eS1jb25uZWN0b3IiIG5hbWU9ImNvbm5lY3RvciIgb3JkZXJlZD0iZmFsc2UiIGxvd2VyQm91bmQ9IjEiPg0KKyAgICAgICAgICAgICAgPGVBbm5vdGF0aW9ucyB4bWk6aWQ9IlByb2ZpbGVEZWZpbml0aW9uLVN5c01MLUJsb2Nrcy1Db25uZWN0b3JQcm9wZXJ0eS1jb25uZWN0b3ItZUFubm90YXRpb25zIiBzb3VyY2U9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvZW1mLzIwMDIvR2VuTW9kZWwiPg0KKyAgICAgICAgICAgICAgICA8ZGV0YWlscyB4bWk6aWQ9IlByb2ZpbGVEZWZpbml0aW9uLVN5c01MLUJsb2Nrcy1Db25uZWN0b3JQcm9wZXJ0eS1jb25uZWN0b3ItZUFubm90YXRpb25zLWRldGFpbHMiIGtleT0iZG9jdW1lbnRhdGlvbiIgdmFsdWU9IkEgY29ubmVjdG9yIG9mIHRoZSBibG9jayBvd25pbmcgdGhlIHByb3BlcnR5IG9uIHdoaWNoIHRoZSBzdGVyZW90eXBlIGlzIGFwcGxpZWQuIi8+DQorICAgICAgICAgICAgICA8L2VBbm5vdGF0aW9ucz4NCisgICAgICAgICAgICAgIDxlVHlwZSB4bWk6dHlwZT0iZWNvcmU6RUNsYXNzIiBocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3VtbDIvNS4wLjAvVU1MIy8vQ29ubmVjdG9yIi8+DQorICAgICAgICAgICAgPC9lU3RydWN0dXJhbEZlYXR1cmVzPg0KKyAgICAgICAgICA8L2VDbGFzc2lmaWVycz4NCisgICAgICAgICAgPGVDbGFzc2lmaWVycyB4bWk6dHlwZT0iZWNvcmU6RUNsYXNzIiB4bWk6aWQ9IlByb2ZpbGVEZWZpbml0aW9uLVN5c01MLUJsb2Nrcy1QYXJ0aWNpcGFudFByb3BlcnR5IiBuYW1lPSJQYXJ0aWNpcGFudFByb3BlcnR5Ij4NCisgICAgICAgICAgICA8ZUFubm90YXRpb25zIHhtaTppZD0iUHJvZmlsZURlZmluaXRpb24tU3lzTUwtQmxvY2tzLVBhcnRpY2lwYW50UHJvcGVydHktZUFubm90YXRpb25zMSIgc291cmNlPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3VtbDIvMi4wLjAvVU1MIiByZWZlcmVuY2VzPSJTeXNNTC1CbG9ja3MtUGFydGljaXBhbnRQcm9wZXJ0eSIvPg0KKyAgICAgICAgICAgIDxlQW5ub3RhdGlvbnMgeG1pOmlkPSJQcm9maWxlRGVmaW5pdGlvbi1TeXNNTC1CbG9ja3MtUGFydGljaXBhbnRQcm9wZXJ0eS1lQW5ub3RhdGlvbnMyIiBzb3VyY2U9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvZW1mLzIwMDIvR2VuTW9kZWwiPg0KKyAgICAgICAgICAgICAgPGRldGFpbHMgeG1pOmlkPSJQcm9maWxlRGVmaW5pdGlvbi1TeXNNTC1CbG9ja3MtUGFydGljaXBhbnRQcm9wZXJ0eS1lQW5ub3RhdGlvbnMyLWRldGFpbHMiIGtleT0iZG9jdW1lbnRhdGlvbiIgdmFsdWU9IlRoZSBCbG9jayBzdGVyZW90eXBlIGV4dGVuZHMgQ2xhc3MsIHNvIGl0IGNhbiBiZSBhcHBsaWVkIHRvIGFueSBzcGVjaWFsaXphdGlvbiBvZiBDbGFzcywgaW5jbHVkaW5nIEFzc29jaWF0aW9uIENsYXNzZXMuIFRoZXNlIGFyZSBpbmZvcm1hbGx5IGNhbGxlZCDigJxhc3NvY2lhdGlvbiBibG9ja3Mu4oCdIEFuIGFzc29jaWF0aW9uIGJsb2NrIGNhbiBvd24gcHJvcGVydGllcyBhbmQgY29ubmVjdG9ycywgbGlrZSBhbnkgb3RoZXIgYmxvY2suIEVhY2ggaW5zdGFuY2Ugb2YgYW4gYXNzb2NpYXRpb24gYmxvY2sgY2FuIGxpbmsgdG9nZXRoZXIgaW5zdGFuY2VzIG9mIHRoZSBlbmQgY2xhc3NpZmllcnMgb2YgdGhlIGFzc29jaWF0aW9uLiBUbyByZWZlciB0byBsaW5rZWQgb2JqZWN0cyBhbmQgdmFsdWVzIG9mIGFuIGluc3RhbmNlIG9mIGFuIGFzc29jaWF0aW9uIGJsb2NrLCBpdCBpcyBuZWNlc3NhcnkgZm9yIHRoZSBtb2RlbGVyIHRvIHNwZWNpZnkgd2hpY2ggKHBhcnRpY2lwYW50KSBwcm9wZXJ0aWVzIG9mIHRoZSBhc3NvY2lhdGlvbiBibG9jayBpZGVudGlmeSB0aGUgaW5zdGFuY2VzIGJlaW5nIGxpbmtlZCBhdCB3aGljaCBlbmQgb2YgdGhlIGFzc29jaWF0aW9uLiBUaGUgdmFsdWUgb2YgYSBwYXJ0aWNpcGFudCBwcm9wZXJ0eSBvbiBhbiBpbnN0YW5jZSAobGluaykgb2YgdGhlIGFzc29jaWF0aW9uIGJsb2NrIGlzIHRoZSB2YWx1ZSBvciBvYmplY3QgYXQgdGhlIGVuZCBvZiB0aGUgbGluayBjb3JyZXNwb25kaW5nIHRvIHRoaXMgZW5kIG9mIHRoZSBhc3NvY2lhdGlvbi4iLz4NCisgICAgICAgICAgICA8L2VBbm5vdGF0aW9ucz4NCisgICAgICAgICAgICA8ZVN0cnVjdHVyYWxGZWF0dXJlcyB4bWk6dHlwZT0iZWNvcmU6RVJlZmVyZW5jZSIgeG1pOmlkPSJQcm9maWxlRGVmaW5pdGlvbi1TeXNNTC1CbG9ja3MtUGFydGljaXBhbnRQcm9wZXJ0eS1iYXNlX1Byb3BlcnR5IiBuYW1lPSJiYXNlX1Byb3BlcnR5IiBvcmRlcmVkPSJmYWxzZSI+DQorICAgICAgICAgICAgICA8ZVR5cGUgeG1pOnR5cGU9ImVjb3JlOkVDbGFzcyIgaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy91bWwyLzUuMC4wL1VNTCMvL1Byb3BlcnR5Ii8+DQorICAgICAgICAgICAgPC9lU3RydWN0dXJhbEZlYXR1cmVzPg0KKyAgICAgICAgICAgIDxlU3RydWN0dXJhbEZlYXR1cmVzIHhtaTp0eXBlPSJlY29yZTpFUmVmZXJlbmNlIiB4bWk6aWQ9IlByb2ZpbGVEZWZpbml0aW9uLVN5c01MLUJsb2Nrcy1QYXJ0aWNpcGFudFByb3BlcnR5LWVuZCIgbmFtZT0iZW5kIiBvcmRlcmVkPSJmYWxzZSIgbG93ZXJCb3VuZD0iMSI+DQorICAgICAgICAgICAgICA8ZUFubm90YXRpb25zIHhtaTppZD0iUHJvZmlsZURlZmluaXRpb24tU3lzTUwtQmxvY2tzLVBhcnRpY2lwYW50UHJvcGVydHktZW5kLWVBbm5vdGF0aW9ucyIgc291cmNlPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2VtZi8yMDAyL0dlbk1vZGVsIj4NCisgICAgICAgICAgICAgICAgPGRldGFpbHMgeG1pOmlkPSJQcm9maWxlRGVmaW5pdGlvbi1TeXNNTC1CbG9ja3MtUGFydGljaXBhbnRQcm9wZXJ0eS1lbmQtZUFubm90YXRpb25zLWRldGFpbHMiIGtleT0iZG9jdW1lbnRhdGlvbiIgdmFsdWU9IkEgbWVtYmVyIGVuZCBvZiB0aGUgYXNzb2NpYXRpb24gYmxvY2sgb3duaW5nIHRoZSBwcm9wZXJ0eSBvbiB3aGljaCB0aGUgc3RlcmVvdHlwZSBpcyBhcHBsaWVkLiIvPg0KKyAgICAgICAgICAgICAgPC9lQW5ub3RhdGlvbnM+DQorICAgICAgICAgICAgICA8ZVR5cGUgeG1pOnR5cGU9ImVjb3JlOkVDbGFzcyIgaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy91bWwyLzUuMC4wL1VNTCMvL1Byb3BlcnR5Ii8+DQorICAgICAgICAgICAgPC9lU3RydWN0dXJhbEZlYXR1cmVzPg0KKyAgICAgICAgICA8L2VDbGFzc2lmaWVycz4NCisgICAgICAgICAgPGVDbGFzc2lmaWVycyB4bWk6dHlwZT0iZWNvcmU6RUNsYXNzIiB4bWk6aWQ9IlByb2ZpbGVEZWZpbml0aW9uLVN5c01MLUJsb2Nrcy1CaW5kaW5nQ29ubmVjdG9yIiBuYW1lPSJCaW5kaW5nQ29ubmVjdG9yIj4NCisgICAgICAgICAgICA8ZUFubm90YXRpb25zIHhtaTppZD0iUHJvZmlsZURlZmluaXRpb24tU3lzTUwtQmxvY2tzLUJpbmRpbmdDb25uZWN0b3ItZUFubm90YXRpb25zMSIgc291cmNlPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3VtbDIvMi4wLjAvVU1MIiByZWZlcmVuY2VzPSJTeXNNTC1CbG9ja3MtQmluZGluZ0Nvbm5lY3RvciIvPg0KKyAgICAgICAgICAgIDxlQW5ub3RhdGlvbnMgeG1pOmlkPSJQcm9maWxlRGVmaW5pdGlvbi1TeXNNTC1CbG9ja3MtQmluZGluZ0Nvbm5lY3Rvci1lQW5ub3RhdGlvbnMyIiBzb3VyY2U9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvZW1mLzIwMDIvR2VuTW9kZWwiPg0KKyAgICAgICAgICAgICAgPGRldGFpbHMgeG1pOmlkPSJQcm9maWxlRGVmaW5pdGlvbi1TeXNNTC1CbG9ja3MtQmluZGluZ0Nvbm5lY3Rvci1lQW5ub3RhdGlvbnMyLWRldGFpbHMiIGtleT0iZG9jdW1lbnRhdGlvbiIgdmFsdWU9IkEgQmluZGluZyBDb25uZWN0b3IgaXMgYSBjb25uZWN0b3Igd2hpY2ggc3BlY2lmaWVzIHRoYXQgdGhlIHByb3BlcnRpZXMgYXQgYm90aCBlbmRzIG9mIHRoZSBjb25uZWN0b3IgaGF2ZSBlcXVhbCB2YWx1ZXMuIElmIHRoZSBwcm9wZXJ0aWVzIGF0IHRoZSBlbmRzIG9mIGEgYmluZGluZyBjb25uZWN0b3IgYXJlIHR5cGVkIGJ5IGEgRGF0YVR5cGUgb3IgVmFsdWVUeXBlLCB0aGUgY29ubmVjdG9yIHNwZWNpZmllcyB0aGF0IHRoZSBpbnN0YW5jZXMgb2YgdGhlIHByb3BlcnRpZXMgbXVzdCBob2xkIGVxdWFsIHZhbHVlcywgcmVjdXJzaXZlbHkgdGhyb3VnaCBhbnkgbmVzdGVkIHByb3BlcnRpZXMgd2l0aGluIHRoZSBjb25uZWN0ZWQgcHJvcGVydGllcy4gSWYgdGhlIHByb3BlcnRpZXMgYXQgdGhlIGVuZHMgb2YgYSBiaW5kaW5nIGNvbm5lY3RvciBhcmUgdHlwZWQgYnkgYSBCbG9jaywgdGhlIGNvbm5lY3RvciBzcGVjaWZpZXMgdGhhdCB0aGUgaW5zdGFuY2VzIG9mIHRoZSBwcm9wZXJ0aWVzIG11c3QgcmVmZXIgdG8gdGhlIHNhbWUgYmxvY2sgaW5zdGFuY2UuIEFzIHdpdGggYW55IGNvbm5lY3RvciBvd25lZCBieSBhIFN5c01MIEJsb2NrLCB0aGUgZW5kcyBvZiBhIGJpbmRpbmcgY29ubmVjdG9yIG1heSBiZSBuZXN0ZWQgd2l0aGluIGEgbXVsdGktbGV2ZWwgcGF0aCBvZiBwcm9wZXJ0aWVzIGFjY2Vzc2libGUgZnJvbSB0aGUgb3duaW5nIGJsb2NrLiBUaGUgTmVzdGVkQ29ubmVjdG9yRW5kIHN0ZXJlb3R5cGUgaXMgdXNlZCB0byByZXByZXNlbnQgc3VjaCBuZXN0ZWQgZW5kcyBqdXN0IGFzIGZvciBuZXN0ZWQgZW5kcyBvZiBvdGhlciBTeXNNTCBjb25uZWN0b3JzLiIvPg0KKyAgICAgICAgICAgIDwvZUFubm90YXRpb25zPg0KKyAgICAgICAgICAgIDxlU3RydWN0dXJhbEZlYXR1cmVzIHhtaTp0eXBlPSJlY29yZTpFUmVmZXJlbmNlIiB4bWk6aWQ9IlByb2ZpbGVEZWZpbml0aW9uLVN5c01MLUJsb2Nrcy1CaW5kaW5nQ29ubmVjdG9yLWJhc2VfQ29ubmVjdG9yIiBuYW1lPSJiYXNlX0Nvbm5lY3RvciIgb3JkZXJlZD0iZmFsc2UiPg0KKyAgICAgICAgICAgICAgPGVUeXBlIHhtaTp0eXBlPSJlY29yZTpFQ2xhc3MiIGhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvdW1sMi81LjAuMC9VTUwjLy9Db25uZWN0b3IiLz4NCisgICAgICAgICAgICA8L2VTdHJ1Y3R1cmFsRmVhdHVyZXM+DQorICAgICAgICAgIDwvZUNsYXNzaWZpZXJzPg0KKyAgICAgICAgICA8ZUNsYXNzaWZpZXJzIHhtaTp0eXBlPSJlY29yZTpFQ2xhc3MiIHhtaTppZD0iUHJvZmlsZURlZmluaXRpb24tU3lzTUwtQmxvY2tzLUJsb2NrIiBuYW1lPSJCbG9jayI+DQorICAgICAgICAgICAgPGVBbm5vdGF0aW9ucyB4bWk6aWQ9IlByb2ZpbGVEZWZpbml0aW9uLVN5c01MLUJsb2Nrcy1CbG9jay1lQW5ub3RhdGlvbnMxIiBzb3VyY2U9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvdW1sMi8yLjAuMC9VTUwiIHJlZmVyZW5jZXM9IlN5c01MLUJsb2Nrcy1CbG9jayIvPg0KKyAgICAgICAgICAgIDxlQW5ub3RhdGlvbnMgeG1pOmlkPSJQcm9maWxlRGVmaW5pdGlvbi1TeXNNTC1CbG9ja3MtQmxvY2stZUFubm90YXRpb25zMiIgc291cmNlPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2VtZi8yMDAyL0dlbk1vZGVsIj4NCisgICAgICAgICAgICAgIDxkZXRhaWxzIHhtaTppZD0iUHJvZmlsZURlZmluaXRpb24tU3lzTUwtQmxvY2tzLUJsb2NrLWVBbm5vdGF0aW9uczItZGV0YWlscyIga2V5PSJkb2N1bWVudGF0aW9uIiB2YWx1ZT0iQSBCbG9jayBpcyBhIG1vZHVsYXIgdW5pdCB0aGF0IGRlc2NyaWJlcyB0aGUgc3RydWN0dXJlIG9mIGEgc3lzdGVtIG9yIGVsZW1lbnQuIEl0IG1heSBpbmNsdWRlIGJvdGggc3RydWN0dXJhbCBhbmQgYmVoYXZpb3JhbCBmZWF0dXJlcywgc3VjaCBhcyBwcm9wZXJ0aWVzIGFuZCBvcGVyYXRpb25zLCB0aGF0IHJlcHJlc2VudCB0aGUgc3RhdGUgb2YgdGhlIHN5c3RlbSBhbmQgYmVoYXZpb3IgdGhhdCB0aGUgc3lzdGVtIG1heSBleGhpYml0LiBTb21lIG9mIHRoZXNlIHByb3BlcnRpZXMgbWF5IGhvbGQgcGFydHMgb2YgYSBzeXN0ZW0sIHdoaWNoIGNhbiBhbHNvIGJlIGRlc2NyaWJlZCBieSBibG9ja3MuIEEgYmxvY2sgbWF5IGluY2x1ZGUgYSBzdHJ1Y3R1cmUgb2YgY29ubmVjdG9ycyBiZXR3ZWVuIGl0cyBwcm9wZXJ0aWVzIHRvIGluZGljYXRlIGhvdyBpdHMgcGFydHMgb3Igb3RoZXIgcHJvcGVydGllcyByZWxhdGUgdG8gb25lIGFub3RoZXIuIFN5c01MIGJsb2NrcyBwcm92aWRlIGEgZ2VuZXJhbC1wdXJwb3NlIGNhcGFiaWxpdHkgdG8gZGVzY3JpYmUgdGhlIGFyY2hpdGVjdHVyZSBvZiBhIHN5c3RlbS4gVGhleSBwcm92aWRlIHRoZSBhYmlsaXR5IHRvIHJlcHJlc2VudCBhIHN5c3RlbSBoaWVyYXJjaHksIGluIHdoaWNoIGEgc3lzdGVtIGF0IG9uZSBsZXZlbCBpcyBjb21wb3NlZCBvZiBzeXN0ZW1zIGF0IGEgbW9yZSBiYXNpYyBsZXZlbC4gVGhleSBjYW4gZGVzY3JpYmUgbm90IG9ubHkgdGhlIGNvbm5lY3Rpdml0eSByZWxhdGlvbnNoaXBzIGJldHdlZW4gdGhlIHN5c3RlbXMgYXQgYW55IGxldmVsLCBidXQgYWxzbyBxdWFudGl0YXRpdmUgdmFsdWVzIG9yIG90aGVyIGluZm9ybWF0aW9uIGFib3V0IGEgc3lzdGVtLiBTeXNNTCBkb2VzIG5vdCByZXN0cmljdCB0aGUga2luZCBvZiBzeXN0ZW0gb3Igc3lzdGVtIGVsZW1lbnQgdGhhdCBtYXkgYmUgZGVzY3JpYmVkIGJ5IGEgYmxvY2suIEFueSByZXVzYWJsZSBmb3JtIG9mIGRlc2NyaXB0aW9uIHRoYXQgbWF5IGJlIGFwcGxpZWQgdG8gYSBzeXN0ZW0gb3IgYSBzZXQgb2Ygc3lzdGVtIGNoYXJhY3RlcmlzdGljcyBtYXkgYmUgZGVzY3JpYmVkIGJ5IGEgYmxvY2suIFN1Y2ggcmV1c2FibGUgZGVzY3JpcHRpb25zLCBmb3IgZXhhbXBsZSwgbWF5IGJlIGFwcGxpZWQgdG8gcHVyZWx5IGNvbmNlcHR1YWwgYXNwZWN0cyBvZiBhIHN5c3RlbSBkZXNpZ24sIHN1Y2ggYXMgcmVsYXRpb25zaGlwcyB0aGF0IGhvbGQgYmV0d2VlbiBwYXJ0cyBvciBwcm9wZXJ0aWVzIG9mIGEgc3lzdGVtLiBDb25uZWN0b3JzIG93bmVkIGJ5IFN5c01MIGJsb2NrcyBtYXkgYmUgdXNlZCB0byBkZWZpbmUgcmVsYXRpb25zaGlwcyBiZXR3ZWVuIHBhcnRzIG9yIG90aGVyIHByb3BlcnRpZXMgb2YgdGhlIHNhbWUgY29udGFpbmluZyBibG9jay4gVGhlIHR5cGUgb2YgYSBjb25uZWN0b3Igb3IgaXRzIGNvbm5lY3RlZCBlbmRzIG1heSBzcGVjaWZ5IHRoZSBzZW1hbnRpYyBpbnRlcnByZXRhdGlvbiBvZiBhIHNwZWNpZmljIGNvbm5lY3Rvci4iLz4NCisgICAgICAgICAgICA8L2VBbm5vdGF0aW9ucz4NCisgICAgICAgICAgICA8ZVN0cnVjdHVyYWxGZWF0dXJlcyB4bWk6dHlwZT0iZWNvcmU6RVJlZmVyZW5jZSIgeG1pOmlkPSJQcm9maWxlRGVmaW5pdGlvbi1TeXNNTC1CbG9ja3MtQmxvY2stYmFzZV9DbGFzcyIgbmFtZT0iYmFzZV9DbGFzcyIgb3JkZXJlZD0iZmFsc2UiPg0KKyAgICAgICAgICAgICAgPGVUeXBlIHhtaTp0eXBlPSJlY29yZTpFQ2xhc3MiIGhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvdW1sMi81LjAuMC9VTUwjLy9DbGFzcyIvPg0KKyAgICAgICAgICAgIDwvZVN0cnVjdHVyYWxGZWF0dXJlcz4NCisgICAgICAgICAgICA8ZVN0cnVjdHVyYWxGZWF0dXJlcyB4bWk6dHlwZT0iZWNvcmU6RUF0dHJpYnV0ZSIgeG1pOmlkPSJQcm9maWxlRGVmaW5pdGlvbi1TeXNNTC1CbG9ja3MtQmxvY2staXNFbmNhcHN1bGF0ZWQiIG5hbWU9ImlzRW5jYXBzdWxhdGVkIiBvcmRlcmVkPSJmYWxzZSI+DQorICAgICAgICAgICAgICA8ZUFubm90YXRpb25zIHhtaTppZD0iUHJvZmlsZURlZmluaXRpb24tU3lzTUwtQmxvY2tzLUJsb2NrLWlzRW5jYXBzdWxhdGVkLWVBbm5vdGF0aW9ucyIgc291cmNlPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2VtZi8yMDAyL0dlbk1vZGVsIj4NCisgICAgICAgICAgICAgICAgPGRldGFpbHMgeG1pOmlkPSJQcm9maWxlRGVmaW5pdGlvbi1TeXNNTC1CbG9ja3MtQmxvY2staXNFbmNhcHN1bGF0ZWQtZUFubm90YXRpb25zLWRldGFpbHMiIGtleT0iZG9jdW1lbnRhdGlvbiIgdmFsdWU9IklmIHRydWUsIHRoZW4gdGhlIGJsb2NrIGlzIHRyZWF0ZWQgYXMgYSBibGFjayBib3g7IGEgcGFydCB0eXBlZCBieSB0aGlzIGJsYWNrIGJveCBjYW4gb25seSBiZSBjb25uZWN0ZWQgdmlhIGl0cyBwb3J0cyBvciBkaXJlY3RseSB0byBpdHMgb3V0ZXIgYm91bmRhcnkuIElmIGZhbHNlLCBvciBpZiBhIHZhbHVlIGlzIG5vdCBwcmVzZW50LCB0aGVuIGNvbm5lY3Rpb25zIGNhbiBiZSBlc3RhYmxpc2hlZCB0byBlbGVtZW50cyBvZiBpdHMgaW50ZXJuYWwgc3RydWN0dXJlIHZpYSBkZWVwLW5lc3RlZCBjb25uZWN0b3IgZW5kcy4iLz4NCisgICAgICAgICAgICAgIDwvZUFubm90YXRpb25zPg0KKyAgICAgICAgICAgICAgPGVUeXBlIHhtaTp0eXBlPSJlY29yZTpFRGF0YVR5cGUiIGhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvdW1sMi81LjAuMC9UeXBlcyMvL0Jvb2xlYW4iLz4NCisgICAgICAgICAgICA8L2VTdHJ1Y3R1cmFsRmVhdHVyZXM+DQorICAgICAgICAgIDwvZUNsYXNzaWZpZXJzPg0KKyAgICAgICAgICA8ZUNsYXNzaWZpZXJzIHhtaTp0eXBlPSJlY29yZTpFQ2xhc3MiIHhtaTppZD0iUHJvZmlsZURlZmluaXRpb24tU3lzTUwtQmxvY2tzLVByb3BlcnR5U3BlY2lmaWNUeXBlIiBuYW1lPSJQcm9wZXJ0eVNwZWNpZmljVHlwZSI+DQorICAgICAgICAgICAgPGVBbm5vdGF0aW9ucyB4bWk6aWQ9IlByb2ZpbGVEZWZpbml0aW9uLVN5c01MLUJsb2Nrcy1Qcm9wZXJ0eVNwZWNpZmljVHlwZS1lQW5ub3RhdGlvbnMxIiBzb3VyY2U9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvdW1sMi8yLjAuMC9VTUwiIHJlZmVyZW5jZXM9IlN5c01MLUJsb2Nrcy1Qcm9wZXJ0eVNwZWNpZmljVHlwZSIvPg0KKyAgICAgICAgICAgIDxlQW5ub3RhdGlvbnMgeG1pOmlkPSJQcm9maWxlRGVmaW5pdGlvbi1TeXNNTC1CbG9ja3MtUHJvcGVydHlTcGVjaWZpY1R5cGUtZUFubm90YXRpb25zMiIgc291cmNlPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2VtZi8yMDAyL0dlbk1vZGVsIj4NCisgICAgICAgICAgICAgIDxkZXRhaWxzIHhtaTppZD0iUHJvZmlsZURlZmluaXRpb24tU3lzTUwtQmxvY2tzLVByb3BlcnR5U3BlY2lmaWNUeXBlLWVBbm5vdGF0aW9uczItZGV0YWlscyIga2V5PSJkb2N1bWVudGF0aW9uIiB2YWx1ZT0iVGhlIFByb3BlcnR5U3BlY2lmaWNUeXBlIHN0ZXJlb3R5cGUgc2hvdWxkIGF1dG9tYXRpY2FsbHkgYmUgYXBwbGllZCB0byB0aGUgY2xhc3NpZmllciB3aGljaCB0eXBlcyBhIHByb3BlcnR5IHdpdGggYSBwcm9wZXJ0eXNwZWNpZmljIHR5cGUuIFRoaXMgY2xhc3NpZmllciBjYW4gY29udGFpbiBkZWZpbml0aW9ucyBvZiBuZXcgb3IgcmVkZWZpbmVkIGZlYXR1cmVzIHdoaWNoIGV4dGVuZCB0aGUgb3JpZ2luYWwgY2xhc3NpZmllciByZWZlcmVuY2VkIGJ5IHRoZSBwcm9wZXJ0eS1zcGVjaWZpYyB0eXBlLiIvPg0KKyAgICAgICAgICAgIDwvZUFubm90YXRpb25zPg0KKyAgICAgICAgICAgIDxlU3RydWN0dXJhbEZlYXR1cmVzIHhtaTp0eXBlPSJlY29yZTpFUmVmZXJlbmNlIiB4bWk6aWQ9IlByb2ZpbGVEZWZpbml0aW9uLVN5c01MLUJsb2Nrcy1Qcm9wZXJ0eVNwZWNpZmljVHlwZS1iYXNlX0NsYXNzaWZpZXIiIG5hbWU9ImJhc2VfQ2xhc3NpZmllciIgb3JkZXJlZD0iZmFsc2UiPg0KKyAgICAgICAgICAgICAgPGVUeXBlIHhtaTp0eXBlPSJlY29yZTpFQ2xhc3MiIGhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvdW1sMi81LjAuMC9VTUwjLy9DbGFzc2lmaWVyIi8+DQorICAgICAgICAgICAgPC9lU3RydWN0dXJhbEZlYXR1cmVzPg0KKyAgICAgICAgICA8L2VDbGFzc2lmaWVycz4NCisgICAgICAgICAgPGVDbGFzc2lmaWVycyB4bWk6dHlwZT0iZWNvcmU6RUNsYXNzIiB4bWk6aWQ9IlByb2ZpbGVEZWZpbml0aW9uLVN5c01MLUJsb2Nrcy1OZXN0ZWRDb25uZWN0b3JFbmQiIG5hbWU9Ik5lc3RlZENvbm5lY3RvckVuZCIgZVN1cGVyVHlwZXM9IlByb2ZpbGVEZWZpbml0aW9uLVN5c01MLUJsb2Nrcy1FbGVtZW50UHJvcGVydHlQYXRoIj4NCisgICAgICAgICAgICA8ZUFubm90YXRpb25zIHhtaTppZD0iUHJvZmlsZURlZmluaXRpb24tU3lzTUwtQmxvY2tzLU5lc3RlZENvbm5lY3RvckVuZC1lQW5ub3RhdGlvbnMxIiBzb3VyY2U9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvdW1sMi8yLjAuMC9VTUwiIHJlZmVyZW5jZXM9IlN5c01MLUJsb2Nrcy1OZXN0ZWRDb25uZWN0b3JFbmQiLz4NCisgICAgICAgICAgICA8ZUFubm90YXRpb25zIHhtaTppZD0iUHJvZmlsZURlZmluaXRpb24tU3lzTUwtQmxvY2tzLU5lc3RlZENvbm5lY3RvckVuZC1lQW5ub3RhdGlvbnMyIiBzb3VyY2U9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvZW1mLzIwMDIvR2VuTW9kZWwiPg0KKyAgICAgICAgICAgICAgPGRldGFpbHMgeG1pOmlkPSJQcm9maWxlRGVmaW5pdGlvbi1TeXNNTC1CbG9ja3MtTmVzdGVkQ29ubmVjdG9yRW5kLWVBbm5vdGF0aW9uczItZGV0YWlscyIga2V5PSJkb2N1bWVudGF0aW9uIiB2YWx1ZT0iVGhlIE5lc3RlZENvbm5lY3RvckVuZCBzdGVyZW90eXBlIG9mIFVNTCBDb25uZWN0b3JFbmQgZXh0ZW5kcyBhIFVNTCBDb25uZWN0b3JFbmQgc28gdGhhdCB0aGUgY29ubmVjdGVkIHByb3BlcnR5IG1heSBiZSBpZGVudGlmaWVkIGJ5IGEgbXVsdGktbGV2ZWwgcGF0aCBvZiBhY2Nlc3NpYmxlIHByb3BlcnRpZXMgZnJvbSB0aGUgYmxvY2sgdGhhdCBvd25zIHRoZSBjb25uZWN0b3IuIi8+DQorICAgICAgICAgICAgPC9lQW5ub3RhdGlvbnM+DQorICAgICAgICAgICAgPGVTdHJ1Y3R1cmFsRmVhdHVyZXMgeG1pOnR5cGU9ImVjb3JlOkVSZWZlcmVuY2UiIHhtaTppZD0iUHJvZmlsZURlZmluaXRpb24tU3lzTUwtQmxvY2tzLU5lc3RlZENvbm5lY3RvckVuZC1iYXNlX0Nvbm5lY3RvckVuZCIgbmFtZT0iYmFzZV9Db25uZWN0b3JFbmQiIG9yZGVyZWQ9ImZhbHNlIj4NCisgICAgICAgICAgICAgIDxlQW5ub3RhdGlvbnMgeG1pOmlkPSJQcm9maWxlRGVmaW5pdGlvbi1TeXNNTC1CbG9ja3MtTmVzdGVkQ29ubmVjdG9yRW5kLWJhc2VfQ29ubmVjdG9yRW5kLWVBbm5vdGF0aW9ucyIgc291cmNlPSJyZWRlZmluZXMiIHJlZmVyZW5jZXM9IlByb2ZpbGVEZWZpbml0aW9uLVN5c01MLUJsb2Nrcy1FbGVtZW50UHJvcGVydHlQYXRoLWJhc2VfRWxlbWVudCIvPg0KKyAgICAgICAgICAgICAgPGVUeXBlIHhtaTp0eXBlPSJlY29yZTpFQ2xhc3MiIGhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvdW1sMi81LjAuMC9VTUwjLy9Db25uZWN0b3JFbmQiLz4NCisgICAgICAgICAgICA8L2VTdHJ1Y3R1cmFsRmVhdHVyZXM+DQorICAgICAgICAgIDwvZUNsYXNzaWZpZXJzPg0KKyAgICAgICAgICA8ZUNsYXNzaWZpZXJzIHhtaTp0eXBlPSJlY29yZTpFQ2xhc3MiIHhtaTppZD0iUHJvZmlsZURlZmluaXRpb24tU3lzTUwtQmxvY2tzLUVsZW1lbnRQcm9wZXJ0eVBhdGgiIG5hbWU9IkVsZW1lbnRQcm9wZXJ0eVBhdGgiIGFic3RyYWN0PSJ0cnVlIj4NCisgICAgICAgICAgICA8ZUFubm90YXRpb25zIHhtaTppZD0iUHJvZmlsZURlZmluaXRpb24tU3lzTUwtQmxvY2tzLUVsZW1lbnRQcm9wZXJ0eVBhdGgtZUFubm90YXRpb25zIiBzb3VyY2U9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvdW1sMi8yLjAuMC9VTUwiIHJlZmVyZW5jZXM9IlN5c01MLUJsb2Nrcy1FbGVtZW50UHJvcGVydHlQYXRoIi8+DQorICAgICAgICAgICAgPGVTdHJ1Y3R1cmFsRmVhdHVyZXMgeG1pOnR5cGU9ImVjb3JlOkVSZWZlcmVuY2UiIHhtaTppZD0iUHJvZmlsZURlZmluaXRpb24tU3lzTUwtQmxvY2tzLUVsZW1lbnRQcm9wZXJ0eVBhdGgtYmFzZV9FbGVtZW50IiBuYW1lPSJiYXNlX0VsZW1lbnQiIG9yZGVyZWQ9ImZhbHNlIj4NCisgICAgICAgICAgICAgIDxlVHlwZSB4bWk6dHlwZT0iZWNvcmU6RUNsYXNzIiBocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3VtbDIvNS4wLjAvVU1MIy8vRWxlbWVudCIvPg0KKyAgICAgICAgICAgIDwvZVN0cnVjdHVyYWxGZWF0dXJlcz4NCisgICAgICAgICAgICA8ZVN0cnVjdHVyYWxGZWF0dXJlcyB4bWk6dHlwZT0iZWNvcmU6RVJlZmVyZW5jZSIgeG1pOmlkPSJQcm9maWxlRGVmaW5pdGlvbi1TeXNNTC1CbG9ja3MtRWxlbWVudFByb3BlcnR5UGF0aC1wcm9wZXJ0eVBhdGgiIG5hbWU9InByb3BlcnR5UGF0aCIgdW5pcXVlPSJmYWxzZSIgbG93ZXJCb3VuZD0iMSIgdXBwZXJCb3VuZD0iLTEiPg0KKyAgICAgICAgICAgICAgPGVBbm5vdGF0aW9ucyB4bWk6aWQ9IlByb2ZpbGVEZWZpbml0aW9uLVN5c01MLUJsb2Nrcy1FbGVtZW50UHJvcGVydHlQYXRoLXByb3BlcnR5UGF0aC1lQW5ub3RhdGlvbnMxIiBzb3VyY2U9Imh0dHA6Ly9zY2hlbWEub21nLm9yZy9zcGVjL01PRi8yLjAvZW1vZi54bWwjUHJvcGVydHkub3Bwb3NpdGVSb2xlTmFtZSI+DQorICAgICAgICAgICAgICAgIDxkZXRhaWxzIHhtaTppZD0iUHJvZmlsZURlZmluaXRpb24tU3lzTUwtQmxvY2tzLUVsZW1lbnRQcm9wZXJ0eVBhdGgtcHJvcGVydHlQYXRoLWVBbm5vdGF0aW9uczEtZGV0YWlscyIga2V5PSJib2R5IiB2YWx1ZT0iZWxlbWVudFByb3BlcnR5UGF0aCIvPg0KKyAgICAgICAgICAgICAgPC9lQW5ub3RhdGlvbnM+DQorICAgICAgICAgICAgICA8ZUFubm90YXRpb25zIHhtaTppZD0iUHJvZmlsZURlZmluaXRpb24tU3lzTUwtQmxvY2tzLUVsZW1lbnRQcm9wZXJ0eVBhdGgtcHJvcGVydHlQYXRoLWVBbm5vdGF0aW9uczIiIHNvdXJjZT0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9lbWYvMjAwMi9HZW5Nb2RlbCI+DQorICAgICAgICAgICAgICAgIDxkZXRhaWxzIHhtaTppZD0iUHJvZmlsZURlZmluaXRpb24tU3lzTUwtQmxvY2tzLUVsZW1lbnRQcm9wZXJ0eVBhdGgtcHJvcGVydHlQYXRoLWVBbm5vdGF0aW9uczItZGV0YWlscyIga2V5PSJkb2N1bWVudGF0aW9uIiB2YWx1ZT0iVGhlIHByb3BlcnR5UGF0aCBsaXN0IG9mIHRoZSBOZXN0ZWRDb25uZWN0b3JFbmQgc3RlcmVvdHlwZSBtdXN0IGlkZW50aWZ5IGEgcGF0aCBvZiBjb250YWluaW5nIHByb3BlcnRpZXMgdGhhdCBpZGVudGlmeSB0aGUgY29ubmVjdGVkIHByb3BlcnR5IGluIHRoZSBjb250ZXh0IG9mIHRoZSBibG9jayB0aGF0IG93bnMgdGhlIGNvbm5lY3Rvci4gVGhlIG9yZGVyaW5nIG9mIHByb3BlcnRpZXMgaXMgZnJvbSBhIHByb3BlcnR5IG9mIHRoZSBibG9jayB0aGF0IG93bnMgdGhlIGNvbm5lY3RvciwgdGhyb3VnaCBhIHByb3BlcnR5IG9mIGVhY2ggaW50ZXJtZWRpYXRlIGJsb2NrIHRoYXQgdHlwZXMgdGhlIHByZWNlZGluZyBwcm9wZXJ0eSwgdW50aWwgYSBwcm9wZXJ0eSBpcyByZWFjaGVkIHRoYXQgY29udGFpbnMgYSBjb25uZWN0b3IgZW5kIHByb3BlcnR5IHdpdGhpbiBpdHMgdHlwZS4gVGhlIGNvbm5lY3RvciBlbmQgcHJvcGVydHkgaXMgbm90IGluY2x1ZGVkIGluIHRoZSBwcm9wZXJ0eVBhdGggbGlzdCwgYnV0IGluc3RlYWQgaXMgaGVsZCBieSB0aGUgcm9sZSBwcm9wZXJ0eSBvZiB0aGUgVU1MIENvbm5lY3RvckVuZCBtZXRhY2xhc3MuIi8+DQorICAgICAgICAgICAgICA8L2VBbm5vdGF0aW9ucz4NCisgICAgICAgICAgICAgIDxlVHlwZSB4bWk6dHlwZT0iZWNvcmU6RUNsYXNzIiBocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3VtbDIvNS4wLjAvVU1MIy8vUHJvcGVydHkiLz4NCisgICAgICAgICAgICA8L2VTdHJ1Y3R1cmFsRmVhdHVyZXM+DQorICAgICAgICAgIDwvZUNsYXNzaWZpZXJzPg0KKyAgICAgICAgICA8ZUNsYXNzaWZpZXJzIHhtaTp0eXBlPSJlY29yZTpFQ2xhc3MiIHhtaTppZD0iUHJvZmlsZURlZmluaXRpb24tU3lzTUwtQmxvY2tzLURpcmVjdGVkUmVsYXRpb25zaGlwUHJvcGVydHlQYXRoIiBuYW1lPSJEaXJlY3RlZFJlbGF0aW9uc2hpcFByb3BlcnR5UGF0aCIgYWJzdHJhY3Q9InRydWUiPg0KKyAgICAgICAgICAgIDxlQW5ub3RhdGlvbnMgeG1pOmlkPSJQcm9maWxlRGVmaW5pdGlvbi1TeXNNTC1CbG9ja3MtRGlyZWN0ZWRSZWxhdGlvbnNoaXBQcm9wZXJ0eVBhdGgtZUFubm90YXRpb25zIiBzb3VyY2U9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvdW1sMi8yLjAuMC9VTUwiIHJlZmVyZW5jZXM9IlN5c01MLUJsb2Nrcy1EaXJlY3RlZFJlbGF0aW9uc2hpcFByb3BlcnR5UGF0aCIvPg0KKyAgICAgICAgICAgIDxlU3RydWN0dXJhbEZlYXR1cmVzIHhtaTp0eXBlPSJlY29yZTpFUmVmZXJlbmNlIiB4bWk6aWQ9IlByb2ZpbGVEZWZpbml0aW9uLVN5c01MLUJsb2Nrcy1EaXJlY3RlZFJlbGF0aW9uc2hpcFByb3BlcnR5UGF0aC1iYXNlX0RpcmVjdGVkUmVsYXRpb25zaGlwIiBuYW1lPSJiYXNlX0RpcmVjdGVkUmVsYXRpb25zaGlwIiBvcmRlcmVkPSJmYWxzZSI+DQorICAgICAgICAgICAgICA8ZVR5cGUgeG1pOnR5cGU9ImVjb3JlOkVDbGFzcyIgaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy91bWwyLzUuMC4wL1VNTCMvL0RpcmVjdGVkUmVsYXRpb25zaGlwIi8+DQorICAgICAgICAgICAgPC9lU3RydWN0dXJhbEZlYXR1cmVzPg0KKyAgICAgICAgICAgIDxlU3RydWN0dXJhbEZlYXR1cmVzIHhtaTp0eXBlPSJlY29yZTpFUmVmZXJlbmNlIiB4bWk6aWQ9IlByb2ZpbGVEZWZpbml0aW9uLVN5c01MLUJsb2Nrcy1EaXJlY3RlZFJlbGF0aW9uc2hpcFByb3BlcnR5UGF0aC1zb3VyY2VQcm9wZXJ0eVBhdGgiIG5hbWU9InNvdXJjZVByb3BlcnR5UGF0aCIgdW5pcXVlPSJmYWxzZSIgdXBwZXJCb3VuZD0iLTEiPg0KKyAgICAgICAgICAgICAgPGVBbm5vdGF0aW9ucyB4bWk6aWQ9IlByb2ZpbGVEZWZpbml0aW9uLVN5c01MLUJsb2Nrcy1EaXJlY3RlZFJlbGF0aW9uc2hpcFByb3BlcnR5UGF0aC1zb3VyY2VQcm9wZXJ0eVBhdGgtZUFubm90YXRpb25zIiBzb3VyY2U9Imh0dHA6Ly9zY2hlbWEub21nLm9yZy9zcGVjL01PRi8yLjAvZW1vZi54bWwjUHJvcGVydHkub3Bwb3NpdGVSb2xlTmFtZSI+DQorICAgICAgICAgICAgICAgIDxkZXRhaWxzIHhtaTppZD0iUHJvZmlsZURlZmluaXRpb24tU3lzTUwtQmxvY2tzLURpcmVjdGVkUmVsYXRpb25zaGlwUHJvcGVydHlQYXRoLXNvdXJjZVByb3BlcnR5UGF0aC1lQW5ub3RhdGlvbnMtZGV0YWlscyIga2V5PSJib2R5IiB2YWx1ZT0iZGlyZWN0ZWRSZWxhdGlvbnNoaXBQcm9wZXJ0eVBhdGgiLz4NCisgICAgICAgICAgICAgIDwvZUFubm90YXRpb25zPg0KKyAgICAgICAgICAgICAgPGVUeXBlIHhtaTp0eXBlPSJlY29yZTpFQ2xhc3MiIGhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvdW1sMi81LjAuMC9VTUwjLy9Qcm9wZXJ0eSIvPg0KKyAgICAgICAgICAgIDwvZVN0cnVjdHVyYWxGZWF0dXJlcz4NCisgICAgICAgICAgICA8ZVN0cnVjdHVyYWxGZWF0dXJlcyB4bWk6dHlwZT0iZWNvcmU6RVJlZmVyZW5jZSIgeG1pOmlkPSJQcm9maWxlRGVmaW5pdGlvbi1TeXNNTC1CbG9ja3MtRGlyZWN0ZWRSZWxhdGlvbnNoaXBQcm9wZXJ0eVBhdGgtdGFyZ2V0UHJvcGVydHlQYXRoIiBuYW1lPSJ0YXJnZXRQcm9wZXJ0eVBhdGgiIHVuaXF1ZT0iZmFsc2UiIHVwcGVyQm91bmQ9Ii0xIj4NCisgICAgICAgICAgICAgIDxlQW5ub3RhdGlvbnMgeG1pOmlkPSJQcm9maWxlRGVmaW5pdGlvbi1TeXNNTC1CbG9ja3MtRGlyZWN0ZWRSZWxhdGlvbnNoaXBQcm9wZXJ0eVBhdGgtdGFyZ2V0UHJvcGVydHlQYXRoLWVBbm5vdGF0aW9ucyIgc291cmNlPSJodHRwOi8vc2NoZW1hLm9tZy5vcmcvc3BlYy9NT0YvMi4wL2Vtb2YueG1sI1Byb3BlcnR5Lm9wcG9zaXRlUm9sZU5hbWUiPg0KKyAgICAgICAgICAgICAgICA8ZGV0YWlscyB4bWk6aWQ9IlByb2ZpbGVEZWZpbml0aW9uLVN5c01MLUJsb2Nrcy1EaXJlY3RlZFJlbGF0aW9uc2hpcFByb3BlcnR5UGF0aC10YXJnZXRQcm9wZXJ0eVBhdGgtZUFubm90YXRpb25zLWRldGFpbHMiIGtleT0iYm9keSIgdmFsdWU9ImRpcmVjdGVkUmVsYXRpb25zaGlwUHJvcGVydHlQYXRoIi8+DQorICAgICAgICAgICAgICA8L2VBbm5vdGF0aW9ucz4NCisgICAgICAgICAgICAgIDxlVHlwZSB4bWk6dHlwZT0iZWNvcmU6RUNsYXNzIiBocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3VtbDIvNS4wLjAvVU1MIy8vUHJvcGVydHkiLz4NCisgICAgICAgICAgICA8L2VTdHJ1Y3R1cmFsRmVhdHVyZXM+DQorICAgICAgICAgICAgPGVTdHJ1Y3R1cmFsRmVhdHVyZXMgeG1pOnR5cGU9ImVjb3JlOkVSZWZlcmVuY2UiIHhtaTppZD0iUHJvZmlsZURlZmluaXRpb24tU3lzTUwtQmxvY2tzLURpcmVjdGVkUmVsYXRpb25zaGlwUHJvcGVydHlQYXRoLXNvdXJjZUNvbnRleHQiIG5hbWU9InNvdXJjZUNvbnRleHQiIG9yZGVyZWQ9ImZhbHNlIj4NCisgICAgICAgICAgICAgIDxlQW5ub3RhdGlvbnMgeG1pOmlkPSJQcm9maWxlRGVmaW5pdGlvbi1TeXNNTC1CbG9ja3MtRGlyZWN0ZWRSZWxhdGlvbnNoaXBQcm9wZXJ0eVBhdGgtc291cmNlQ29udGV4dC1lQW5ub3RhdGlvbnMiIHNvdXJjZT0iaHR0cDovL3NjaGVtYS5vbWcub3JnL3NwZWMvTU9GLzIuMC9lbW9mLnhtbCNQcm9wZXJ0eS5vcHBvc2l0ZVJvbGVOYW1lIj4NCisgICAgICAgICAgICAgICAgPGRldGFpbHMgeG1pOmlkPSJQcm9maWxlRGVmaW5pdGlvbi1TeXNNTC1CbG9ja3MtRGlyZWN0ZWRSZWxhdGlvbnNoaXBQcm9wZXJ0eVBhdGgtc291cmNlQ29udGV4dC1lQW5ub3RhdGlvbnMtZGV0YWlscyIga2V5PSJib2R5IiB2YWx1ZT0iZGlyZWN0ZWRSZWxhdGlvbnNoaXBQcm9wZXJ0eVBhdGgiLz4NCisgICAgICAgICAgICAgIDwvZUFubm90YXRpb25zPg0KKyAgICAgICAgICAgICAgPGVUeXBlIHhtaTp0eXBlPSJlY29yZTpFQ2xhc3MiIGhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvdW1sMi81LjAuMC9VTUwjLy9DbGFzc2lmaWVyIi8+DQorICAgICAgICAgICAgPC9lU3RydWN0dXJhbEZlYXR1cmVzPg0KKyAgICAgICAgICAgIDxlU3RydWN0dXJhbEZlYXR1cmVzIHhtaTp0eXBlPSJlY29yZTpFUmVmZXJlbmNlIiB4bWk6aWQ9IlByb2ZpbGVEZWZpbml0aW9uLVN5c01MLUJsb2Nrcy1EaXJlY3RlZFJlbGF0aW9uc2hpcFByb3BlcnR5UGF0aC10YXJnZXRDb250ZXh0IiBuYW1lPSJ0YXJnZXRDb250ZXh0IiBvcmRlcmVkPSJmYWxzZSI+DQorICAgICAgICAgICAgICA8ZUFubm90YXRpb25zIHhtaTppZD0iUHJvZmlsZURlZmluaXRpb24tU3lzTUwtQmxvY2tzLURpcmVjdGVkUmVsYXRpb25zaGlwUHJvcGVydHlQYXRoLXRhcmdldENvbnRleHQtZUFubm90YXRpb25zIiBzb3VyY2U9Imh0dHA6Ly9zY2hlbWEub21nLm9yZy9zcGVjL01PRi8yLjAvZW1vZi54bWwjUHJvcGVydHkub3Bwb3NpdGVSb2xlTmFtZSI+DQorICAgICAgICAgICAgICAgIDxkZXRhaWxzIHhtaTppZD0iUHJvZmlsZURlZmluaXRpb24tU3lzTUwtQmxvY2tzLURpcmVjdGVkUmVsYXRpb25zaGlwUHJvcGVydHlQYXRoLXRhcmdldENvbnRleHQtZUFubm90YXRpb25zLWRldGFpbHMiIGtleT0iYm9keSIgdmFsdWU9ImRpcmVjdGVkUmVsYXRpb25zaGlwUHJvcGVydHlQYXRoIi8+DQorICAgICAgICAgICAgICA8L2VBbm5vdGF0aW9ucz4NCisgICAgICAgICAgICAgIDxlVHlwZSB4bWk6dHlwZT0iZWNvcmU6RUNsYXNzIiBocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3VtbDIvNS4wLjAvVU1MIy8vQ2xhc3NpZmllciIvPg0KKyAgICAgICAgICAgIDwvZVN0cnVjdHVyYWxGZWF0dXJlcz4NCisgICAgICAgICAgPC9lQ2xhc3NpZmllcnM+DQorICAgICAgICAgIDxlQ2xhc3NpZmllcnMgeG1pOnR5cGU9ImVjb3JlOkVDbGFzcyIgeG1pOmlkPSJQcm9maWxlRGVmaW5pdGlvbi1TeXNNTC1CbG9ja3MtRW5kUGF0aE11bHRpcGxpY2l0eSIgbmFtZT0iRW5kUGF0aE11bHRpcGxpY2l0eSI+DQorICAgICAgICAgICAgPGVBbm5vdGF0aW9ucyB4bWk6aWQ9IlByb2ZpbGVEZWZpbml0aW9uLVN5c01MLUJsb2Nrcy1FbmRQYXRoTXVsdGlwbGljaXR5LWVBbm5vdGF0aW9ucyIgc291cmNlPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3VtbDIvMi4wLjAvVU1MIiByZWZlcmVuY2VzPSJTeXNNTC1CbG9ja3MtRW5kUGF0aE11bHRpcGxpY2l0eSIvPg0KKyAgICAgICAgICAgIDxlU3RydWN0dXJhbEZlYXR1cmVzIHhtaTp0eXBlPSJlY29yZTpFUmVmZXJlbmNlIiB4bWk6aWQ9IlByb2ZpbGVEZWZpbml0aW9uLVN5c01MLUJsb2Nrcy1FbmRQYXRoTXVsdGlwbGljaXR5LWJhc2VfUHJvcGVydHkiIG5hbWU9ImJhc2VfUHJvcGVydHkiIG9yZGVyZWQ9ImZhbHNlIj4NCisgICAgICAgICAgICAgIDxlVHlwZSB4bWk6dHlwZT0iZWNvcmU6RUNsYXNzIiBocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3VtbDIvNS4wLjAvVU1MIy8vUHJvcGVydHkiLz4NCisgICAgICAgICAgICA8L2VTdHJ1Y3R1cmFsRmVhdHVyZXM+DQorICAgICAgICAgICAgPGVTdHJ1Y3R1cmFsRmVhdHVyZXMgeG1pOnR5cGU9ImVjb3JlOkVBdHRyaWJ1dGUiIHhtaTppZD0iUHJvZmlsZURlZmluaXRpb24tU3lzTUwtQmxvY2tzLUVuZFBhdGhNdWx0aXBsaWNpdHktbG93ZXIiIG5hbWU9Imxvd2VyIiBvcmRlcmVkPSJmYWxzZSIgZGVmYXVsdFZhbHVlTGl0ZXJhbD0iMCI+DQorICAgICAgICAgICAgICA8ZUFubm90YXRpb25zIHhtaTppZD0iUHJvZmlsZURlZmluaXRpb24tU3lzTUwtQmxvY2tzLUVuZFBhdGhNdWx0aXBsaWNpdHktbG93ZXItZUFubm90YXRpb25zIiBzb3VyY2U9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvZW1mLzIwMDIvR2VuTW9kZWwiPg0KKyAgICAgICAgICAgICAgICA8ZGV0YWlscyB4bWk6aWQ9IlByb2ZpbGVEZWZpbml0aW9uLVN5c01MLUJsb2Nrcy1FbmRQYXRoTXVsdGlwbGljaXR5LWxvd2VyLWVBbm5vdGF0aW9ucy1kZXRhaWxzIiBrZXk9ImRvY3VtZW50YXRpb24iIHZhbHVlPSJHaXZlcyB0aGUgbWluaW11bSBudW1iZXIgb2YgdmFsdWVzIG9mIHRoZSBwcm9wZXJ0eSBhdCB0aGUgZW5kIG9mIHRoZSByZWxhdGVkIGJpbmRpbmdQYXRoLCBmb3IgZWFjaCBvYmplY3QgcmVhY2hlZCBieSBuYXZpZ2F0aW9uIGFsb25nIHRoZSBiaW5kaW5nUGF0aCBmcm9tIGFuIGluc3RhbmNlIG9mIHRoZSBibG9jayBvd25pbmcgdGhlIHByb3BlcnR5IHRvIHdoaWNoIEVuZFBhdGhNdWx0aXBsaWNpdHkgaXMgYXBwbGllZCIvPg0KKyAgICAgICAgICAgICAgPC9lQW5ub3RhdGlvbnM+DQorICAgICAgICAgICAgICA8ZVR5cGUgeG1pOnR5cGU9ImVjb3JlOkVEYXRhVHlwZSIgaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy91bWwyLzUuMC4wL1R5cGVzIy8vSW50ZWdlciIvPg0KKyAgICAgICAgICAgIDwvZVN0cnVjdHVyYWxGZWF0dXJlcz4NCisgICAgICAgICAgICA8ZVN0cnVjdHVyYWxGZWF0dXJlcyB4bWk6dHlwZT0iZWNvcmU6RUF0dHJpYnV0ZSIgeG1pOmlkPSJQcm9maWxlRGVmaW5pdGlvbi1TeXNNTC1CbG9ja3MtRW5kUGF0aE11bHRpcGxpY2l0eS11cHBlciIgbmFtZT0idXBwZXIiIG9yZGVyZWQ9ImZhbHNlIiBkZWZhdWx0VmFsdWVMaXRlcmFsPSItMSI+DQorICAgICAgICAgICAgICA8ZUFubm90YXRpb25zIHhtaTppZD0iUHJvZmlsZURlZmluaXRpb24tU3lzTUwtQmxvY2tzLUVuZFBhdGhNdWx0aXBsaWNpdHktdXBwZXItZUFubm90YXRpb25zIiBzb3VyY2U9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvZW1mLzIwMDIvR2VuTW9kZWwiPg0KKyAgICAgICAgICAgICAgICA8ZGV0YWlscyB4bWk6aWQ9IlByb2ZpbGVEZWZpbml0aW9uLVN5c01MLUJsb2Nrcy1FbmRQYXRoTXVsdGlwbGljaXR5LXVwcGVyLWVBbm5vdGF0aW9ucy1kZXRhaWxzIiBrZXk9ImRvY3VtZW50YXRpb24iIHZhbHVlPSJHaXZlcyB0aGUgbWF4aW11bSBudW1iZXIgb2YgdmFsdWVzIG9mIHRoZSBwcm9wZXJ0eSBhdCB0aGUgZW5kIG9mIHRoZSByZWxhdGVkIGJpbmRpbmdQYXRoLCBmb3IgZWFjaCBvYmplY3QgcmVhY2hlZCBieSBuYXZpZ2F0aW9uIGFsb25nIHRoZSBiaW5kaW5nUGF0aCBmcm9tIGFuIGluc3RhbmNlIG9mIHRoZSBibG9jayBvd25pbmcgdGhlIHByb3BlcnR5IHRvIHdoaWNoIEVuZFBhdGhNdWx0aXBsaWNpdHkgaXMgYXBwbGllZC4iLz4NCisgICAgICAgICAgICAgIDwvZUFubm90YXRpb25zPg0KKyAgICAgICAgICAgICAgPGVUeXBlIHhtaTp0eXBlPSJlY29yZTpFRGF0YVR5cGUiIGhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvdW1sMi81LjAuMC9UeXBlcyMvL1VubGltaXRlZE5hdHVyYWwiLz4NCisgICAgICAgICAgICA8L2VTdHJ1Y3R1cmFsRmVhdHVyZXM+DQorICAgICAgICAgIDwvZUNsYXNzaWZpZXJzPg0KKyAgICAgICAgICA8ZUNsYXNzaWZpZXJzIHhtaTp0eXBlPSJlY29yZTpFQ2xhc3MiIHhtaTppZD0iUHJvZmlsZURlZmluaXRpb24tU3lzTUwtQmxvY2tzLUJvdW5kUmVmZXJlbmNlIiBuYW1lPSJCb3VuZFJlZmVyZW5jZSIgZVN1cGVyVHlwZXM9IlByb2ZpbGVEZWZpbml0aW9uLVN5c01MLUJsb2Nrcy1FbmRQYXRoTXVsdGlwbGljaXR5Ij4NCisgICAgICAgICAgICA8ZUFubm90YXRpb25zIHhtaTppZD0iUHJvZmlsZURlZmluaXRpb24tU3lzTUwtQmxvY2tzLUJvdW5kUmVmZXJlbmNlLWVBbm5vdGF0aW9ucyIgc291cmNlPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3VtbDIvMi4wLjAvVU1MIiByZWZlcmVuY2VzPSJTeXNNTC1CbG9ja3MtQm91bmRSZWZlcmVuY2UiLz4NCisgICAgICAgICAgICA8ZVN0cnVjdHVyYWxGZWF0dXJlcyB4bWk6dHlwZT0iZWNvcmU6RVJlZmVyZW5jZSIgeG1pOmlkPSJQcm9maWxlRGVmaW5pdGlvbi1TeXNNTC1CbG9ja3MtQm91bmRSZWZlcmVuY2UtYm91bmRFbmQiIG5hbWU9ImJvdW5kRW5kIiBvcmRlcmVkPSJmYWxzZSIgbG93ZXJCb3VuZD0iMSI+DQorICAgICAgICAgICAgICA8ZUFubm90YXRpb25zIHhtaTppZD0iUHJvZmlsZURlZmluaXRpb24tU3lzTUwtQmxvY2tzLUJvdW5kUmVmZXJlbmNlLWJvdW5kRW5kLWVBbm5vdGF0aW9ucyIgc291cmNlPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2VtZi8yMDAyL0dlbk1vZGVsIj4NCisgICAgICAgICAgICAgICAgPGRldGFpbHMgeG1pOmlkPSJQcm9maWxlRGVmaW5pdGlvbi1TeXNNTC1CbG9ja3MtQm91bmRSZWZlcmVuY2UtYm91bmRFbmQtZUFubm90YXRpb25zLWRldGFpbHMiIGtleT0iZG9jdW1lbnRhdGlvbiIgdmFsdWU9IkdpdmVzIGEgY29ubmVjdG9yIGVuZCBvZiBhIGJpbmRpbmcgY29ubmVjdG9yIG9wcG9zaXRlIHRvIHRoZSBlbmQgbGlua2VkIHRvIHRoZSBzdGVyZW90eXBlZCBwcm9wZXJ0eSwgb3IgbGlua2VkIHRvIGEgcHJvcGVydHkgdGhhdCBnZW5lcmFsaXplcyB0aGUgc3RlcmVvdHlwZWQgb25lIHRocm91Z2ggcmVkZWZpbml0aW9uLiIvPg0KKyAgICAgICAgICAgICAgPC9lQW5ub3RhdGlvbnM+DQorICAgICAgICAgICAgICA8ZVR5cGUgeG1pOnR5cGU9ImVjb3JlOkVDbGFzcyIgaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy91bWwyLzUuMC4wL1VNTCMvL0Nvbm5lY3RvckVuZCIvPg0KKyAgICAgICAgICAgIDwvZVN0cnVjdHVyYWxGZWF0dXJlcz4NCisgICAgICAgICAgICA8ZVN0cnVjdHVyYWxGZWF0dXJlcyB4bWk6dHlwZT0iZWNvcmU6RVJlZmVyZW5jZSIgeG1pOmlkPSJQcm9maWxlRGVmaW5pdGlvbi1TeXNNTC1CbG9ja3MtQm91bmRSZWZlcmVuY2UtYmluZGluZ1BhdGgiIG5hbWU9ImJpbmRpbmdQYXRoIiB1bmlxdWU9ImZhbHNlIiBsb3dlckJvdW5kPSIxIiB1cHBlckJvdW5kPSItMSIgdm9sYXRpbGU9InRydWUiIHRyYW5zaWVudD0idHJ1ZSIgZGVyaXZlZD0idHJ1ZSI+DQorICAgICAgICAgICAgICA8ZUFubm90YXRpb25zIHhtaTppZD0iUHJvZmlsZURlZmluaXRpb24tU3lzTUwtQmxvY2tzLUJvdW5kUmVmZXJlbmNlLWJpbmRpbmdQYXRoLWVBbm5vdGF0aW9ucyIgc291cmNlPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2VtZi8yMDAyL0dlbk1vZGVsIj4NCisgICAgICAgICAgICAgICAgPGRldGFpbHMgeG1pOmlkPSJQcm9maWxlRGVmaW5pdGlvbi1TeXNNTC1CbG9ja3MtQm91bmRSZWZlcmVuY2UtYmluZGluZ1BhdGgtZUFubm90YXRpb25zLWRldGFpbHMiIGtleT0iZG9jdW1lbnRhdGlvbiIgdmFsdWU9IkdpdmVzIHRoZSBwcm9wZXJ0eVBhdGggb2YgdGhlIE5lc3RlZENvbm5lY3RvckVuZCBhcHBsaWVkLCBpZiBhbnksIHRvIHRoZSBib3VuZEVuZCwgYXBwZW5kZWQgdG8gdGhlIHJvbGUgb2YgdGhlIGJvdW5kRW5kLiAiLz4NCisgICAgICAgICAgICAgIDwvZUFubm90YXRpb25zPg0KKyAgICAgICAgICAgICAgPGVUeXBlIHhtaTp0eXBlPSJlY29yZTpFQ2xhc3MiIGhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvdW1sMi81LjAuMC9VTUwjLy9Qcm9wZXJ0eSIvPg0KKyAgICAgICAgICAgIDwvZVN0cnVjdHVyYWxGZWF0dXJlcz4NCisgICAgICAgICAgPC9lQ2xhc3NpZmllcnM+DQorICAgICAgICAgIDxlQ2xhc3NpZmllcnMgeG1pOnR5cGU9ImVjb3JlOkVDbGFzcyIgeG1pOmlkPSJQcm9maWxlRGVmaW5pdGlvbi1TeXNNTC1CbG9ja3MtQWRqdW5jdFByb3BlcnR5IiBuYW1lPSJBZGp1bmN0UHJvcGVydHkiPg0KKyAgICAgICAgICAgIDxlQW5ub3RhdGlvbnMgeG1pOmlkPSJQcm9maWxlRGVmaW5pdGlvbi1TeXNNTC1CbG9ja3MtQWRqdW5jdFByb3BlcnR5LWVBbm5vdGF0aW9uczEiIHNvdXJjZT0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy91bWwyLzIuMC4wL1VNTCIgcmVmZXJlbmNlcz0iU3lzTUwtQmxvY2tzLUFkanVuY3RQcm9wZXJ0eSIvPg0KKyAgICAgICAgICAgIDxlQW5ub3RhdGlvbnMgeG1pOmlkPSJQcm9maWxlRGVmaW5pdGlvbi1TeXNNTC1CbG9ja3MtQWRqdW5jdFByb3BlcnR5LWVBbm5vdGF0aW9uczIiIHNvdXJjZT0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9lbWYvMjAwMi9HZW5Nb2RlbCI+DQorICAgICAgICAgICAgICA8ZGV0YWlscyB4bWk6aWQ9IlByb2ZpbGVEZWZpbml0aW9uLVN5c01MLUJsb2Nrcy1BZGp1bmN0UHJvcGVydHktZUFubm90YXRpb25zMi1kZXRhaWxzIiBrZXk9ImRvY3VtZW50YXRpb24iIHZhbHVlPSJUaGUgQWRqdW5jdFByb3BlcnR5IHN0ZXJlb3R5cGUgY2FuIGJlIGFwcGxpZWQgdG8gcHJvcGVydGllcyB0byBjb25zdHJhaW4gdGhlaXIgdmFsdWVzIHRvIHRoZSB2YWx1ZXMgb2YgY29ubmVjdG9ycyB0eXBlZCBieSBhc3NvY2lhdGlvbiBibG9ja3MsIGNhbGwgYWN0aW9ucywgb2JqZWN0IG5vZGVzLCB2YXJpYWJsZXMsIG9yIHBhcmFtZXRlcnMsIGludGVyYWN0aW9uIHVzZXMsIGFuZCBzdWJtYWNoaW5lIHN0YXRlcy4gIFRoZSB2YWx1ZXMgb2YgY29ubmVjdG9ycyB0eXBlZCBieSBhc3NvY2lhdGlvbiBibG9ja3MgYXJlIHRoZSBpbnN0YW5jZXMgb2YgdGhlIGFzc29jaWF0aW9uIGJsb2NrIHR5cGluZyBhIGNvbm5lY3RvciBpbiB0aGUgYmxvY2sgaGF2aW5nIHRoZSBzdGVyZW90eXBlZCBwcm9wZXJ0eS4gIFRoZSB2YWx1ZXMgb2YgY2FsbCBhY3Rpb25zIGFyZSB0aGUgZXhlY3V0aW9ucyBvZiBiZWhhdmlvcnMgaW52b2tlZCBieSB0aGUgYmVoYXZpb3IgaGF2aW5nIHRoZSBjYWxsIGFjdGlvbiBhbmQgdGhlIHN0ZXJlb3R5cGVkIHByb3BlcnR5IChzZWUgU3ViY2xhdXNlIDExLjMuMS4xLjEgZm9yIG1vcmUgYWJvdXQgdGhpcyB1c2Ugb2YgdGhlIHN0ZXJlb3R5cGUpLiAgVGhlIHZhbHVlcyBvZiBvYmplY3Qgbm9kZXMgYXJlIHRoZSB2YWx1ZXMgb2YgdG9rZW5zIGluIHRoZSBvYmplY3Qgbm9kZXMgb2YgdGhlIGJlaGF2aW9yIGhhdmluZyB0aGUgc3RlcmVvdHlwZWQgcHJvcGVydHkgKHNlZSBTdWJjbGF1c2UgMTEuMy4xLjQuMSBmb3IgbW9yZSBhYm91dCB0aGlzIHVzZSBvZiB0aGUgc3RlcmVvdHlwZSkuICBUaGUgdmFsdWVzIG9mIHZhcmlhYmxlcyBhcmUgdGhvc2UgYXNzaWduZWQgYnkgZXhlY3V0aW9ucyBvZiBhY3Rpdml0aWVzIHRoYXQgaGF2ZSB0aGUgc3RlcmVvdHlwZWQgcHJvcGVydHkuICBUaGUgdmFsdWVzIG9mIHBhcmFtZXRlcnMgYXJlIHRob3NlIGFzc2lnbmVkIGJ5IGV4ZWN1dGlvbnMgb2YgYmVoYXZpb3JzIHRoYXQgaGF2ZSB0aGUgc3RlcmVvdHlwZWQgcHJvcGVydHkuICBUaGUga2V5d29yZCDCq2FkanVuY3TCuyBiZWZvcmUgYSBwcm9wZXJ0eSBuYW1lIGluZGljYXRlcyB0aGUgcHJvcGVydHkgaXMgc3RlcmVvdHlwZWQgYnkgQWRqdW5jdFByb3BlcnR5LiIvPg0KKyAgICAgICAgICAgIDwvZUFubm90YXRpb25zPg0KKyAgICAgICAgICAgIDxlU3RydWN0dXJhbEZlYXR1cmVzIHhtaTp0eXBlPSJlY29yZTpFUmVmZXJlbmNlIiB4bWk6aWQ9IlByb2ZpbGVEZWZpbml0aW9uLVN5c01MLUJsb2Nrcy1BZGp1bmN0UHJvcGVydHktYmFzZV9Qcm9wZXJ0eSIgbmFtZT0iYmFzZV9Qcm9wZXJ0eSIgb3JkZXJlZD0iZmFsc2UiPg0KKyAgICAgICAgICAgICAgPGVUeXBlIHhtaTp0eXBlPSJlY29yZTpFQ2xhc3MiIGhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvdW1sMi81LjAuMC9VTUwjLy9Qcm9wZXJ0eSIvPg0KKyAgICAgICAgICAgIDwvZVN0cnVjdHVyYWxGZWF0dXJlcz4NCisgICAgICAgICAgICA8ZVN0cnVjdHVyYWxGZWF0dXJlcyB4bWk6dHlwZT0iZWNvcmU6RVJlZmVyZW5jZSIgeG1pOmlkPSJQcm9maWxlRGVmaW5pdGlvbi1TeXNNTC1CbG9ja3MtQWRqdW5jdFByb3BlcnR5LXByaW5jaXBhbCIgbmFtZT0icHJpbmNpcGFsIiBvcmRlcmVkPSJmYWxzZSIgbG93ZXJCb3VuZD0iMSI+DQorICAgICAgICAgICAgICA8ZUFubm90YXRpb25zIHhtaTppZD0iUHJvZmlsZURlZmluaXRpb24tU3lzTUwtQmxvY2tzLUFkanVuY3RQcm9wZXJ0eS1wcmluY2lwYWwtZUFubm90YXRpb25zMSIgc291cmNlPSJodHRwOi8vc2NoZW1hLm9tZy5vcmcvc3BlYy9NT0YvMi4wL2Vtb2YueG1sI1Byb3BlcnR5Lm9wcG9zaXRlUm9sZU5hbWUiPg0KKyAgICAgICAgICAgICAgICA8ZGV0YWlscyB4bWk6aWQ9IlByb2ZpbGVEZWZpbml0aW9uLVN5c01MLUJsb2Nrcy1BZGp1bmN0UHJvcGVydHktcHJpbmNpcGFsLWVBbm5vdGF0aW9uczEtZGV0YWlscyIga2V5PSJib2R5IiB2YWx1ZT0iYWRqdW5jdFByb3BlcnR5Ii8+DQorICAgICAgICAgICAgICA8L2VBbm5vdGF0aW9ucz4NCisgICAgICAgICAgICAgIDxlQW5ub3RhdGlvbnMgeG1pOmlkPSJQcm9maWxlRGVmaW5pdGlvbi1TeXNNTC1CbG9ja3MtQWRqdW5jdFByb3BlcnR5LXByaW5jaXBhbC1lQW5ub3RhdGlvbnMyIiBzb3VyY2U9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvZW1mLzIwMDIvR2VuTW9kZWwiPg0KKyAgICAgICAgICAgICAgICA8ZGV0YWlscyB4bWk6aWQ9IlByb2ZpbGVEZWZpbml0aW9uLVN5c01MLUJsb2Nrcy1BZGp1bmN0UHJvcGVydHktcHJpbmNpcGFsLWVBbm5vdGF0aW9uczItZGV0YWlscyIga2V5PSJkb2N1bWVudGF0aW9uIiB2YWx1ZT0iR2l2ZXMgdGhlIGVsZW1lbnQgdGhhdCBkZXRlcm1pbmVzIHRoZSB2YWx1ZXMgb2YgdGhlIHByb3BlcnR5LiAgTXVzdCBiZSBhIGNvbm5lY3RvciwgY2FsbCBhY3Rpb24sIG9iamVjdCBub2RlLCB2YXJpYWJsZSwgb3IgcGFyYW1ldGVyLiIvPg0KKyAgICAgICAgICAgICAgPC9lQW5ub3RhdGlvbnM+DQorICAgICAgICAgICAgICA8ZVR5cGUgeG1pOnR5cGU9ImVjb3JlOkVDbGFzcyIgaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy91bWwyLzUuMC4wL1VNTCMvL0VsZW1lbnQiLz4NCisgICAgICAgICAgICA8L2VTdHJ1Y3R1cmFsRmVhdHVyZXM+DQorICAgICAgICAgIDwvZUNsYXNzaWZpZXJzPg0KKyAgICAgICAgICA8ZUNsYXNzaWZpZXJzIHhtaTp0eXBlPSJlY29yZTpFQ2xhc3MiIHhtaTppZD0iUHJvZmlsZURlZmluaXRpb24tU3lzTUwtQmxvY2tzLUNsYXNzaWZpZXJCZWhhdmlvclByb3BlcnR5IiBuYW1lPSJDbGFzc2lmaWVyQmVoYXZpb3JQcm9wZXJ0eSI+DQorICAgICAgICAgICAgPGVBbm5vdGF0aW9ucyB4bWk6aWQ9IlByb2ZpbGVEZWZpbml0aW9uLVN5c01MLUJsb2Nrcy1DbGFzc2lmaWVyQmVoYXZpb3JQcm9wZXJ0eS1lQW5ub3RhdGlvbnMxIiBzb3VyY2U9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvdW1sMi8yLjAuMC9VTUwiIHJlZmVyZW5jZXM9IlN5c01MLUJsb2Nrcy1DbGFzc2lmaWVyQmVoYXZpb3JQcm9wZXJ0eSIvPg0KKyAgICAgICAgICAgIDxlQW5ub3RhdGlvbnMgeG1pOmlkPSJQcm9maWxlRGVmaW5pdGlvbi1TeXNNTC1CbG9ja3MtQ2xhc3NpZmllckJlaGF2aW9yUHJvcGVydHktZUFubm90YXRpb25zMiIgc291cmNlPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2VtZi8yMDAyL0dlbk1vZGVsIj4NCisgICAgICAgICAgICAgIDxkZXRhaWxzIHhtaTppZD0iUHJvZmlsZURlZmluaXRpb24tU3lzTUwtQmxvY2tzLUNsYXNzaWZpZXJCZWhhdmlvclByb3BlcnR5LWVBbm5vdGF0aW9uczItZGV0YWlscyIga2V5PSJkb2N1bWVudGF0aW9uIiB2YWx1ZT0iVGhlIENsYXNzaWZpZXJCZWhhdmlvclByb3BlcnR5IHN0ZXJlb3R5cGUgY2FuIGJlIGFwcGxpZWQgdG8gcHJvcGVydGllcyB0byBjb25zdHJhaW4gdGhlaXIgdmFsdWVzIHRvIGJlIHRoZSBleGVjdXRpb25zIG9mIGNsYXNzaWZpZXIgYmVoYXZpb3JzLiAgVGhlIHZhbHVlIG9mIHByb3BlcnRpZXMgd2l0aCBDbGFzc2lmaWVyQmVoYXZpb3JQcm9wZXJ0eSAgYXBwbGllZCBhcmUgdGhlIGV4ZWN1dGlvbnMgb2YgY2xhc3NpZmllciBiZWhhdmlvcnMgaW52b2tlZCBieSBpbnN0YW50aWF0aW9uIG9mIHRoZSBibG9jayB0aGF0IG93bnMgdGhlIHN0ZXJlb3R5cGVkIHByb3BlcnR5IG9yIG9uZSBvZiBpdHMgc3BlY2lhbGl6YXRpb25zLiIvPg0KKyAgICAgICAgICAgIDwvZUFubm90YXRpb25zPg0KKyAgICAgICAgICAgIDxlU3RydWN0dXJhbEZlYXR1cmVzIHhtaTp0eXBlPSJlY29yZTpFUmVmZXJlbmNlIiB4bWk6aWQ9IlByb2ZpbGVEZWZpbml0aW9uLVN5c01MLUJsb2Nrcy1DbGFzc2lmaWVyQmVoYXZpb3JQcm9wZXJ0eS1iYXNlX1Byb3BlcnR5IiBuYW1lPSJiYXNlX1Byb3BlcnR5IiBvcmRlcmVkPSJmYWxzZSI+DQorICAgICAgICAgICAgICA8ZVR5cGUgeG1pOnR5cGU9ImVjb3JlOkVDbGFzcyIgaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy91bWwyLzUuMC4wL1VNTCMvL1Byb3BlcnR5Ii8+DQorICAgICAgICAgICAgPC9lU3RydWN0dXJhbEZlYXR1cmVzPg0KKyAgICAgICAgICA8L2VDbGFzc2lmaWVycz4NCisgICAgICAgIDwvZVN1YnBhY2thZ2VzPg0KKyAgICAgICAgPGVTdWJwYWNrYWdlcyB4bWk6aWQ9IlByb2ZpbGVEZWZpbml0aW9uLVN5c01MLVBvcnRzRmxvd3MiIG5hbWU9IlBvcnRzRmxvd3MiIG5zVVJJPSJodHRwOi8vL1N5c01ML1BvcnRzRmxvd3MuZWNvcmUiIG5zUHJlZml4PSJTeXNNTC5Qb3J0c0Zsb3dzIj4NCisgICAgICAgICAgPGVBbm5vdGF0aW9ucyB4bWk6aWQ9IlByb2ZpbGVEZWZpbml0aW9uLVN5c01MLVBvcnRzRmxvd3MtZUFubm90YXRpb25zMSIgc291cmNlPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3VtbDIvMi4wLjAvVU1MIj4NCisgICAgICAgICAgICA8ZGV0YWlscyB4bWk6aWQ9IlByb2ZpbGVEZWZpbml0aW9uLVN5c01MLVBvcnRzRmxvd3MtZUFubm90YXRpb25zMS1kZXRhaWxzIiBrZXk9Im9yaWdpbmFsTmFtZSIgdmFsdWU9IlBvcnRzJmFtcDtGbG93cyIvPg0KKyAgICAgICAgICA8L2VBbm5vdGF0aW9ucz4NCisgICAgICAgICAgPGVBbm5vdGF0aW9ucyB4bWk6aWQ9IlByb2ZpbGVEZWZpbml0aW9uLVN5c01MLVBvcnRzRmxvd3MtZUFubm90YXRpb25zMiIgc291cmNlPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3VtbDIvNC4wLjAvVU1MIiByZWZlcmVuY2VzPSJTeXNNTC1Qb3J0c191MDAyNkZsb3dzIi8+DQorICAgICAgICAgIDxlQ2xhc3NpZmllcnMgeG1pOnR5cGU9ImVjb3JlOkVDbGFzcyIgeG1pOmlkPSJQcm9maWxlRGVmaW5pdGlvbi1TeXNNTC1Qb3J0c0Zsb3dzLUl0ZW1GbG93IiBuYW1lPSJJdGVtRmxvdyI+DQorICAgICAgICAgICAgPGVBbm5vdGF0aW9ucyB4bWk6aWQ9IlByb2ZpbGVEZWZpbml0aW9uLVN5c01MLVBvcnRzRmxvd3MtSXRlbUZsb3ctZUFubm90YXRpb25zMSIgc291cmNlPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3VtbDIvMi4wLjAvVU1MIiByZWZlcmVuY2VzPSJTeXNNTC1Qb3J0c191MDAyNkZsb3dzLUl0ZW1GbG93Ii8+DQorICAgICAgICAgICAgPGVBbm5vdGF0aW9ucyB4bWk6aWQ9IlByb2ZpbGVEZWZpbml0aW9uLVN5c01MLVBvcnRzRmxvd3MtSXRlbUZsb3ctZUFubm90YXRpb25zMiIgc291cmNlPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2VtZi8yMDAyL0dlbk1vZGVsIj4NCisgICAgICAgICAgICAgIDxkZXRhaWxzIHhtaTppZD0iUHJvZmlsZURlZmluaXRpb24tU3lzTUwtUG9ydHNGbG93cy1JdGVtRmxvdy1lQW5ub3RhdGlvbnMyLWRldGFpbHMiIGtleT0iZG9jdW1lbnRhdGlvbiIgdmFsdWU9IkFuIEl0ZW1GbG93IGRlc2NyaWJlcyB0aGUgZmxvdyBvZiBpdGVtcyBhY3Jvc3MgYSBjb25uZWN0b3Igb3IgYW4gYXNzb2NpYXRpb24uIEl0IG1heSBjb25zdHJhaW4gdGhlIGl0ZW0gZXhjaGFuZ2UgYmV0d2VlbiBibG9ja3MsIGJsb2NrIHVzYWdlcywgb3IgZmxvdyBwb3J0cyBhcyBzcGVjaWZpZWQgYnkgdGhlaXIgZmxvdyBwcm9wZXJ0aWVzLiBGb3IgZXhhbXBsZSwgYSBwdW1wIGNvbm5lY3RlZCB0byBhIHRhbms6IHRoZSBwdW1wIGhhcyBhbiDigJxvdXTigJ0gZmxvdyBwcm9wZXJ0eSBvZiB0eXBlIExpcXVpZCBhbmQgdGhlIHRhbmsgaGFzIGFuIOKAnGlu4oCdIEZsb3dQcm9wZXJ0eSBvZiB0eXBlIExpcXVpZC4gVG8gc2lnbmlmeSB0aGF0IG9ubHkgd2F0ZXIgZmxvd3MgYmV0d2VlbiB0aGUgcHVtcCBhbmQgdGhlIHRhbmssIHdlIGNhbiBzcGVjaWZ5IGFuIEl0ZW1GbG93IG9mIHR5cGUgV2F0ZXIgb24gdGhlIGNvbm5lY3Rvci4iLz4NCisgICAgICAgICAgICA8L2VBbm5vdGF0aW9ucz4NCisgICAgICAgICAgICA8ZVN0cnVjdHVyYWxGZWF0dXJlcyB4bWk6dHlwZT0iZWNvcmU6RVJlZmVyZW5jZSIgeG1pOmlkPSJQcm9maWxlRGVmaW5pdGlvbi1TeXNNTC1Qb3J0c0Zsb3dzLUl0ZW1GbG93LWJhc2VfSW5mb3JtYXRpb25GbG93IiBuYW1lPSJiYXNlX0luZm9ybWF0aW9uRmxvdyIgb3JkZXJlZD0iZmFsc2UiPg0KKyAgICAgICAgICAgICAgPGVUeXBlIHhtaTp0eXBlPSJlY29yZTpFQ2xhc3MiIGhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvdW1sMi81LjAuMC9VTUwjLy9JbmZvcm1hdGlvbkZsb3ciLz4NCisgICAgICAgICAgICA8L2VTdHJ1Y3R1cmFsRmVhdHVyZXM+DQorICAgICAgICAgICAgPGVTdHJ1Y3R1cmFsRmVhdHVyZXMgeG1pOnR5cGU9ImVjb3JlOkVSZWZlcmVuY2UiIHhtaTppZD0iUHJvZmlsZURlZmluaXRpb24tU3lzTUwtUG9ydHNGbG93cy1JdGVtRmxvdy1pdGVtUHJvcGVydHkiIG5hbWU9Iml0ZW1Qcm9wZXJ0eSIgb3JkZXJlZD0iZmFsc2UiPg0KKyAgICAgICAgICAgICAgPGVBbm5vdGF0aW9ucyB4bWk6aWQ9IlByb2ZpbGVEZWZpbml0aW9uLVN5c01MLVBvcnRzRmxvd3MtSXRlbUZsb3ctaXRlbVByb3BlcnR5LWVBbm5vdGF0aW9ucyIgc291cmNlPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2VtZi8yMDAyL0dlbk1vZGVsIj4NCisgICAgICAgICAgICAgICAgPGRldGFpbHMgeG1pOmlkPSJQcm9maWxlRGVmaW5pdGlvbi1TeXNNTC1Qb3J0c0Zsb3dzLUl0ZW1GbG93LWl0ZW1Qcm9wZXJ0eS1lQW5ub3RhdGlvbnMtZGV0YWlscyIga2V5PSJkb2N1bWVudGF0aW9uIiB2YWx1ZT0iQW4gb3B0aW9uYWwgcHJvcGVydHkgdGhhdCByZWxhdGVzIHRoZSBmbG93aW5nIGl0ZW0gdG8gdGhlIGluc3RhbmNlcyBvZiB0aGUgY29ubmVjdG9y4oCZcyBlbmNsb3NpbmcgYmxvY2suIFRoaXMgcHJvcGVydHkgaXMgYXBwbGljYWJsZSBvbmx5IGZvciBpdGVtIGZsb3dzIGFzc2lnbmVkIHRvIGNvbm5lY3RvcnMuIFRoZSBtdWx0aXBsaWNpdHkgaXMgemVybyBpZiB0aGUgaXRlbSBmbG93IGlzIGFzc2lnbmVkIHRvIGFuIEFzc29jaWF0aW9uLiIvPg0KKyAgICAgICAgICAgICAgPC9lQW5ub3RhdGlvbnM+DQorICAgICAgICAgICAgICA8ZVR5cGUgeG1pOnR5cGU9ImVjb3JlOkVDbGFzcyIgaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy91bWwyLzUuMC4wL1VNTCMvL1Byb3BlcnR5Ii8+DQorICAgICAgICAgICAgPC9lU3RydWN0dXJhbEZlYXR1cmVzPg0KKyAgICAgICAgICA8L2VDbGFzc2lmaWVycz4NCisgICAgICAgICAgPGVDbGFzc2lmaWVycyB4bWk6dHlwZT0iZWNvcmU6RUNsYXNzIiB4bWk6aWQ9IlByb2ZpbGVEZWZpbml0aW9uLVN5c01MLVBvcnRzRmxvd3MtRmxvd1Byb3BlcnR5IiBuYW1lPSJGbG93UHJvcGVydHkiPg0KKyAgICAgICAgICAgIDxlQW5ub3RhdGlvbnMgeG1pOmlkPSJQcm9maWxlRGVmaW5pdGlvbi1TeXNNTC1Qb3J0c0Zsb3dzLUZsb3dQcm9wZXJ0eS1lQW5ub3RhdGlvbnMxIiBzb3VyY2U9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvdW1sMi8yLjAuMC9VTUwiIHJlZmVyZW5jZXM9IlN5c01MLVBvcnRzX3UwMDI2Rmxvd3MtRmxvd1Byb3BlcnR5Ii8+DQorICAgICAgICAgICAgPGVBbm5vdGF0aW9ucyB4bWk6aWQ9IlByb2ZpbGVEZWZpbml0aW9uLVN5c01MLVBvcnRzRmxvd3MtRmxvd1Byb3BlcnR5LWVBbm5vdGF0aW9uczIiIHNvdXJjZT0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9lbWYvMjAwMi9HZW5Nb2RlbCI+DQorICAgICAgICAgICAgICA8ZGV0YWlscyB4bWk6aWQ9IlByb2ZpbGVEZWZpbml0aW9uLVN5c01MLVBvcnRzRmxvd3MtRmxvd1Byb3BlcnR5LWVBbm5vdGF0aW9uczItZGV0YWlscyIga2V5PSJkb2N1bWVudGF0aW9uIiB2YWx1ZT0iQSBGbG93UHJvcGVydHkgc2lnbmlmaWVzIGEgc2luZ2xlIGZsb3cgZWxlbWVudCB0aGF0IGNhbiBmbG93IHRvL2Zyb20gYSBibG9jay4gQSBmbG93IHByb3BlcnR54oCZcyB2YWx1ZXMgYXJlIGVpdGhlciByZWNlaXZlZCBmcm9tIG9yIHRyYW5zbWl0dGVkIHRvIGFuIGV4dGVybmFsIGJsb2NrLiBGbG93IHByb3BlcnRpZXMgYXJlIGRlZmluZWQgZGlyZWN0bHkgb24gYmxvY2tzIG9yIGZsb3cgc3BlY2lmaWNhdGlvbnMgdGhhdCBhcmUgdGhvc2Ugc3BlY2lmaWNhdGlvbnMgd2hpY2ggdHlwZSB0aGUgZmxvdyBwb3J0cy4gRmxvdyBwcm9wZXJ0aWVzIGVuYWJsZSBpdGVtIGZsb3dzIGFjcm9zcyBjb25uZWN0b3JzIGNvbm5lY3RpbmcgcGFydHMgb2YgdGhlIGNvcnJlc3BvbmRpbmcgYmxvY2sgdHlwZXMsIGVpdGhlciBkaXJlY3RseSAoaW4gY2FzZSBvZiB0aGUgcHJvcGVydHkgaXMgZGVmaW5lZCBvbiB0aGUgYmxvY2spIG9yIHZpYSBmbG93UG9ydHMuIEZvciBCbG9jaywgRGF0YSBUeXBlLCBhbmQgVmFsdWUgVHlwZSBwcm9wZXJ0aWVzLCBzZXR0aW5nIGFuIOKAnG91dOKAnSBGbG93UHJvcGVydHkgdmFsdWUgb2YgYSBibG9jayB1c2FnZSBvbiBvbmUgZW5kIG9mIGEgY29ubmVjdG9yIHdpbGwgcmVzdWx0IGluIGFzc2lnbmluZyB0aGUgc2FtZSB2YWx1ZSBvZiBhbiDigJxpbuKAnSBGbG93UHJvcGVydHkgb2YgYSBibG9jayB1c2FnZSBhdCB0aGUgb3RoZXIgZW5kIG9mIHRoZSBjb25uZWN0b3IsIHByb3ZpZGVkIHRoZSBmbG93IHByb3BlcnRpZXMgYXJlIG1hdGNoZWQuIEZsb3cgcHJvcGVydGllcyBvZiB0eXBlIFNpZ25hbCBpbXBseSBzZW5kaW5nIGFuZC9vciByZWNlaXZpbmcgb2YgYSBzaWduYWwgdXNhZ2UuIEFuIOKAnG91dOKAnSBGbG93UHJvcGVydHkgb2YgdHlwZSBTaWduYWwgbWVhbnMgdGhhdCB0aGUgb3duaW5nIEJsb2NrIG1heSBicm9hZGNhc3QgdGhlIHNpZ25hbCB2aWEgY29ubmVjdG9ycyBhbmQgYW4g4oCcaW7igJ0gRmxvd1Byb3BlcnR5IG1lYW5zIHRoYXQgdGhlIG93bmluZyBibG9jayBpcyBhYmxlIHRvIHJlY2VpdmUgdGhlIFNpZ25hbC4iLz4NCisgICAgICAgICAgICA8L2VBbm5vdGF0aW9ucz4NCisgICAgICAgICAgICA8ZVN0cnVjdHVyYWxGZWF0dXJlcyB4bWk6dHlwZT0iZWNvcmU6RVJlZmVyZW5jZSIgeG1pOmlkPSJQcm9maWxlRGVmaW5pdGlvbi1TeXNNTC1Qb3J0c0Zsb3dzLUZsb3dQcm9wZXJ0eS1iYXNlX1Byb3BlcnR5IiBuYW1lPSJiYXNlX1Byb3BlcnR5IiBvcmRlcmVkPSJmYWxzZSI+DQorICAgICAgICAgICAgICA8ZVR5cGUgeG1pOnR5cGU9ImVjb3JlOkVDbGFzcyIgaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy91bWwyLzUuMC4wL1VNTCMvL1Byb3BlcnR5Ii8+DQorICAgICAgICAgICAgPC9lU3RydWN0dXJhbEZlYXR1cmVzPg0KKyAgICAgICAgICAgIDxlU3RydWN0dXJhbEZlYXR1cmVzIHhtaTp0eXBlPSJlY29yZTpFQXR0cmlidXRlIiB4bWk6aWQ9IlByb2ZpbGVEZWZpbml0aW9uLVN5c01MLVBvcnRzRmxvd3MtRmxvd1Byb3BlcnR5LWRpcmVjdGlvbiIgbmFtZT0iZGlyZWN0aW9uIiBvcmRlcmVkPSJmYWxzZSIgbG93ZXJCb3VuZD0iMSIgZVR5cGU9IlByb2ZpbGVEZWZpbml0aW9uLVN5c01MLVBvcnRzRmxvd3MtRmxvd0RpcmVjdGlvbiIgZGVmYXVsdFZhbHVlTGl0ZXJhbD0iaW5vdXQiPg0KKyAgICAgICAgICAgICAgPGVBbm5vdGF0aW9ucyB4bWk6aWQ9IlByb2ZpbGVEZWZpbml0aW9uLVN5c01MLVBvcnRzRmxvd3MtRmxvd1Byb3BlcnR5LWRpcmVjdGlvbi1lQW5ub3RhdGlvbnMiIHNvdXJjZT0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9lbWYvMjAwMi9HZW5Nb2RlbCI+DQorICAgICAgICAgICAgICAgIDxkZXRhaWxzIHhtaTppZD0iUHJvZmlsZURlZmluaXRpb24tU3lzTUwtUG9ydHNGbG93cy1GbG93UHJvcGVydHktZGlyZWN0aW9uLWVBbm5vdGF0aW9ucy1kZXRhaWxzIiBrZXk9ImRvY3VtZW50YXRpb24iIHZhbHVlPSJTcGVjaWZpZXMgaWYgdGhlIHByb3BlcnR5IHZhbHVlIGlzIHJlY2VpdmVkIGZyb20gYW4gZXh0ZXJuYWwgYmxvY2sgKGRpcmVjdGlvbj3igJxpbuKAnSksIHRyYW5zbWl0dGVkIHRvIGFuIGV4dGVybmFsIEJsb2NrIChkaXJlY3Rpb2494oCcb3V04oCdKSBvciBib3RoIChkaXJlY3Rpb2494oCcaW5vdXTigJ0pLiIvPg0KKyAgICAgICAgICAgICAgPC9lQW5ub3RhdGlvbnM+DQorICAgICAgICAgICAgPC9lU3RydWN0dXJhbEZlYXR1cmVzPg0KKyAgICAgICAgICA8L2VDbGFzc2lmaWVycz4NCisgICAgICAgICAgPGVDbGFzc2lmaWVycyB4bWk6dHlwZT0iZWNvcmU6RUVudW0iIHhtaTppZD0iUHJvZmlsZURlZmluaXRpb24tU3lzTUwtUG9ydHNGbG93cy1GbG93RGlyZWN0aW9uIiBuYW1lPSJGbG93RGlyZWN0aW9uIj4NCisgICAgICAgICAgICA8ZUFubm90YXRpb25zIHhtaTppZD0iUHJvZmlsZURlZmluaXRpb24tU3lzTUwtUG9ydHNGbG93cy1GbG93RGlyZWN0aW9uLWVBbm5vdGF0aW9uczEiIHNvdXJjZT0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy91bWwyLzIuMC4wL1VNTCIgcmVmZXJlbmNlcz0iU3lzTUwtUG9ydHNfdTAwMjZGbG93cy1GbG93RGlyZWN0aW9uIi8+DQorICAgICAgICAgICAgPGVBbm5vdGF0aW9ucyB4bWk6aWQ9IlByb2ZpbGVEZWZpbml0aW9uLVN5c01MLVBvcnRzRmxvd3MtRmxvd0RpcmVjdGlvbi1lQW5ub3RhdGlvbnMyIiBzb3VyY2U9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvZW1mLzIwMDIvR2VuTW9kZWwiPg0KKyAgICAgICAgICAgICAgPGRldGFpbHMgeG1pOmlkPSJQcm9maWxlRGVmaW5pdGlvbi1TeXNNTC1Qb3J0c0Zsb3dzLUZsb3dEaXJlY3Rpb24tZUFubm90YXRpb25zMi1kZXRhaWxzIiBrZXk9ImRvY3VtZW50YXRpb24iIHZhbHVlPSJGbG93RGlyZWN0aW9uIGlzIGFuIGVudW1lcmF0aW9uIHR5cGUgdGhhdCBkZWZpbmVzIGxpdGVyYWxzIHVzZWQgZm9yIHNwZWNpZnlpbmcgaW5wdXQgYW5kIG91dHB1dCBkaXJlY3Rpb25zLiBGbG93RGlyZWN0aW9uIGlzIHVzZWQgYnkgZmxvdyBwcm9wZXJ0aWVzIHRvIGluZGljYXRlIGlmIGEgcHJvcGVydHkgaXMgYW4gaW5wdXQgb3IgYW4gb3V0cHV0IHdpdGggcmVzcGVjdCB0byBpdHMgb3duZXIuIi8+DQorICAgICAgICAgICAgPC9lQW5ub3RhdGlvbnM+DQorICAgICAgICAgICAgPGVMaXRlcmFscyB4bWk6aWQ9IlByb2ZpbGVEZWZpbml0aW9uLVN5c01MLVBvcnRzRmxvd3MtRmxvd0RpcmVjdGlvbi1pbiIgbmFtZT0iaW4iPg0KKyAgICAgICAgICAgICAgPGVBbm5vdGF0aW9ucyB4bWk6aWQ9IlByb2ZpbGVEZWZpbml0aW9uLVN5c01MLVBvcnRzRmxvd3MtRmxvd0RpcmVjdGlvbi1pbi1lQW5ub3RhdGlvbnMiIHNvdXJjZT0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9lbWYvMjAwMi9HZW5Nb2RlbCI+DQorICAgICAgICAgICAgICAgIDxkZXRhaWxzIHhtaTppZD0iUHJvZmlsZURlZmluaXRpb24tU3lzTUwtUG9ydHNGbG93cy1GbG93RGlyZWN0aW9uLWluLWVBbm5vdGF0aW9ucy1kZXRhaWxzIiBrZXk9ImRvY3VtZW50YXRpb24iIHZhbHVlPSJJbmRpY2F0ZXMgdGhhdCB0aGUgZmxvdyBwcm9wZXJ0eSBpcyBpbnB1dCB0byB0aGUgb3duaW5nIGJsb2NrLiIvPg0KKyAgICAgICAgICAgICAgPC9lQW5ub3RhdGlvbnM+DQorICAgICAgICAgICAgPC9lTGl0ZXJhbHM+DQorICAgICAgICAgICAgPGVMaXRlcmFscyB4bWk6aWQ9IlByb2ZpbGVEZWZpbml0aW9uLVN5c01MLVBvcnRzRmxvd3MtRmxvd0RpcmVjdGlvbi1vdXQiIG5hbWU9Im91dCIgdmFsdWU9IjEiPg0KKyAgICAgICAgICAgICAgPGVBbm5vdGF0aW9ucyB4bWk6aWQ9IlByb2ZpbGVEZWZpbml0aW9uLVN5c01MLVBvcnRzRmxvd3MtRmxvd0RpcmVjdGlvbi1vdXQtZUFubm90YXRpb25zIiBzb3VyY2U9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvZW1mLzIwMDIvR2VuTW9kZWwiPg0KKyAgICAgICAgICAgICAgICA8ZGV0YWlscyB4bWk6aWQ9IlByb2ZpbGVEZWZpbml0aW9uLVN5c01MLVBvcnRzRmxvd3MtRmxvd0RpcmVjdGlvbi1vdXQtZUFubm90YXRpb25zLWRldGFpbHMiIGtleT0iZG9jdW1lbnRhdGlvbiIgdmFsdWU9IkluZGljYXRlcyB0aGF0IHRoZSBmbG93IHByb3BlcnR5IGlzIGFuIG91dHB1dCBvZiB0aGUgb3duaW5nIGJsb2NrLiIvPg0KKyAgICAgICAgICAgICAgPC9lQW5ub3RhdGlvbnM+DQorICAgICAgICAgICAgPC9lTGl0ZXJhbHM+DQorICAgICAgICAgICAgPGVMaXRlcmFscyB4bWk6aWQ9IlByb2ZpbGVEZWZpbml0aW9uLVN5c01MLVBvcnRzRmxvd3MtRmxvd0RpcmVjdGlvbi1pbm91dCIgbmFtZT0iaW5vdXQiIHZhbHVlPSIyIj4NCisgICAgICAgICAgICAgIDxlQW5ub3RhdGlvbnMgeG1pOmlkPSJQcm9maWxlRGVmaW5pdGlvbi1TeXNNTC1Qb3J0c0Zsb3dzLUZsb3dEaXJlY3Rpb24taW5vdXQtZUFubm90YXRpb25zIiBzb3VyY2U9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvZW1mLzIwMDIvR2VuTW9kZWwiPg0KKyAgICAgICAgICAgICAgICA8ZGV0YWlscyB4bWk6aWQ9IlByb2ZpbGVEZWZpbml0aW9uLVN5c01MLVBvcnRzRmxvd3MtRmxvd0RpcmVjdGlvbi1pbm91dC1lQW5ub3RhdGlvbnMtZGV0YWlscyIga2V5PSJkb2N1bWVudGF0aW9uIiB2YWx1ZT0iSW5kaWNhdGVzIHRoYXQgdGhlIGZsb3cgcHJvcGVydHkgaXMgYm90aCBhbiBpbnB1dCBhbmQgYW4gb3V0cHV0IG9mIHRoZSBvd25pbmcgYmxvY2suIi8+DQorICAgICAgICAgICAgICA8L2VBbm5vdGF0aW9ucz4NCisgICAgICAgICAgICA8L2VMaXRlcmFscz4NCisgICAgICAgICAgPC9lQ2xhc3NpZmllcnM+DQorICAgICAgICAgIDxlQ2xhc3NpZmllcnMgeG1pOnR5cGU9ImVjb3JlOkVDbGFzcyIgeG1pOmlkPSJQcm9maWxlRGVmaW5pdGlvbi1TeXNNTC1Qb3J0c0Zsb3dzLUZ1bGxQb3J0IiBuYW1lPSJGdWxsUG9ydCI+DQorICAgICAgICAgICAgPGVBbm5vdGF0aW9ucyB4bWk6aWQ9IlByb2ZpbGVEZWZpbml0aW9uLVN5c01MLVBvcnRzRmxvd3MtRnVsbFBvcnQtZUFubm90YXRpb25zIiBzb3VyY2U9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvdW1sMi8yLjAuMC9VTUwiIHJlZmVyZW5jZXM9IlN5c01MLVBvcnRzX3UwMDI2Rmxvd3MtRnVsbFBvcnQiLz4NCisgICAgICAgICAgICA8ZVN0cnVjdHVyYWxGZWF0dXJlcyB4bWk6dHlwZT0iZWNvcmU6RVJlZmVyZW5jZSIgeG1pOmlkPSJQcm9maWxlRGVmaW5pdGlvbi1TeXNNTC1Qb3J0c0Zsb3dzLUZ1bGxQb3J0LWJhc2VfUG9ydCIgbmFtZT0iYmFzZV9Qb3J0IiBvcmRlcmVkPSJmYWxzZSI+DQorICAgICAgICAgICAgICA8ZVR5cGUgeG1pOnR5cGU9ImVjb3JlOkVDbGFzcyIgaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy91bWwyLzUuMC4wL1VNTCMvL1BvcnQiLz4NCisgICAgICAgICAgICA8L2VTdHJ1Y3R1cmFsRmVhdHVyZXM+DQorICAgICAgICAgIDwvZUNsYXNzaWZpZXJzPg0KKyAgICAgICAgICA8ZUNsYXNzaWZpZXJzIHhtaTp0eXBlPSJlY29yZTpFQ2xhc3MiIHhtaTppZD0iUHJvZmlsZURlZmluaXRpb24tU3lzTUwtUG9ydHNGbG93cy1JbnRlcmZhY2VCbG9jayIgbmFtZT0iSW50ZXJmYWNlQmxvY2siIGVTdXBlclR5cGVzPSJQcm9maWxlRGVmaW5pdGlvbi1TeXNNTC1CbG9ja3MtQmxvY2siPg0KKyAgICAgICAgICAgIDxlQW5ub3RhdGlvbnMgeG1pOmlkPSJQcm9maWxlRGVmaW5pdGlvbi1TeXNNTC1Qb3J0c0Zsb3dzLUludGVyZmFjZUJsb2NrLWVBbm5vdGF0aW9ucyIgc291cmNlPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3VtbDIvMi4wLjAvVU1MIiByZWZlcmVuY2VzPSJTeXNNTC1Qb3J0c191MDAyNkZsb3dzLUludGVyZmFjZUJsb2NrIi8+DQorICAgICAgICAgIDwvZUNsYXNzaWZpZXJzPg0KKyAgICAgICAgICA8ZUNsYXNzaWZpZXJzIHhtaTp0eXBlPSJlY29yZTpFQ2xhc3MiIHhtaTppZD0iUHJvZmlsZURlZmluaXRpb24tU3lzTUwtUG9ydHNGbG93cy1Qcm94eVBvcnQiIG5hbWU9IlByb3h5UG9ydCI+DQorICAgICAgICAgICAgPGVBbm5vdGF0aW9ucyB4bWk6aWQ9IlByb2ZpbGVEZWZpbml0aW9uLVN5c01MLVBvcnRzRmxvd3MtUHJveHlQb3J0LWVBbm5vdGF0aW9ucyIgc291cmNlPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3VtbDIvMi4wLjAvVU1MIiByZWZlcmVuY2VzPSJTeXNNTC1Qb3J0c191MDAyNkZsb3dzLVByb3h5UG9ydCIvPg0KKyAgICAgICAgICAgIDxlU3RydWN0dXJhbEZlYXR1cmVzIHhtaTp0eXBlPSJlY29yZTpFUmVmZXJlbmNlIiB4bWk6aWQ9IlByb2ZpbGVEZWZpbml0aW9uLVN5c01MLVBvcnRzRmxvd3MtUHJveHlQb3J0LWJhc2VfUG9ydCIgbmFtZT0iYmFzZV9Qb3J0IiBvcmRlcmVkPSJmYWxzZSI+DQorICAgICAgICAgICAgICA8ZVR5cGUgeG1pOnR5cGU9ImVjb3JlOkVDbGFzcyIgaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy91bWwyLzUuMC4wL1VNTCMvL1BvcnQiLz4NCisgICAgICAgICAgICA8L2VTdHJ1Y3R1cmFsRmVhdHVyZXM+DQorICAgICAgICAgIDwvZUNsYXNzaWZpZXJzPg0KKyAgICAgICAgICA8ZUNsYXNzaWZpZXJzIHhtaTp0eXBlPSJlY29yZTpFRW51bSIgeG1pOmlkPSJQcm9maWxlRGVmaW5pdGlvbi1TeXNNTC1Qb3J0c0Zsb3dzLUZlYXR1cmVEaXJlY3Rpb24iIG5hbWU9IkZlYXR1cmVEaXJlY3Rpb24iPg0KKyAgICAgICAgICAgIDxlQW5ub3RhdGlvbnMgeG1pOmlkPSJQcm9maWxlRGVmaW5pdGlvbi1TeXNNTC1Qb3J0c0Zsb3dzLUZlYXR1cmVEaXJlY3Rpb24tZUFubm90YXRpb25zIiBzb3VyY2U9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvdW1sMi8yLjAuMC9VTUwiIHJlZmVyZW5jZXM9IlN5c01MLVBvcnRzX3UwMDI2Rmxvd3MtRmVhdHVyZURpcmVjdGlvbiIvPg0KKyAgICAgICAgICAgIDxlTGl0ZXJhbHMgeG1pOmlkPSJQcm9maWxlRGVmaW5pdGlvbi1TeXNNTC1Qb3J0c0Zsb3dzLUZlYXR1cmVEaXJlY3Rpb24tcHJvdmlkZWQiIG5hbWU9InByb3ZpZGVkIi8+DQorICAgICAgICAgICAgPGVMaXRlcmFscyB4bWk6aWQ9IlByb2ZpbGVEZWZpbml0aW9uLVN5c01MLVBvcnRzRmxvd3MtRmVhdHVyZURpcmVjdGlvbi1yZXF1aXJlZCIgbmFtZT0icmVxdWlyZWQiIHZhbHVlPSIxIi8+DQorICAgICAgICAgICAgPGVMaXRlcmFscyB4bWk6aWQ9IlByb2ZpbGVEZWZpbml0aW9uLVN5c01MLVBvcnRzRmxvd3MtRmVhdHVyZURpcmVjdGlvbi1wcm92aWRlZFJlcXVpcmVkIiBuYW1lPSJwcm92aWRlZFJlcXVpcmVkIiB2YWx1ZT0iMiIvPg0KKyAgICAgICAgICA8L2VDbGFzc2lmaWVycz4NCisgICAgICAgICAgPGVDbGFzc2lmaWVycyB4bWk6dHlwZT0iZWNvcmU6RUNsYXNzIiB4bWk6aWQ9IlByb2ZpbGVEZWZpbml0aW9uLVN5c01MLVBvcnRzRmxvd3MtQWNjZXB0Q2hhbmdlU3RydWN0dXJhbEZlYXR1cmVFdmVudEFjdGlvbiIgbmFtZT0iQWNjZXB0Q2hhbmdlU3RydWN0dXJhbEZlYXR1cmVFdmVudEFjdGlvbiI+DQorICAgICAgICAgICAgPGVBbm5vdGF0aW9ucyB4bWk6aWQ9IlByb2ZpbGVEZWZpbml0aW9uLVN5c01MLVBvcnRzRmxvd3MtQWNjZXB0Q2hhbmdlU3RydWN0dXJhbEZlYXR1cmVFdmVudEFjdGlvbi1lQW5ub3RhdGlvbnMiIHNvdXJjZT0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy91bWwyLzIuMC4wL1VNTCIgcmVmZXJlbmNlcz0iU3lzTUwtUG9ydHNfdTAwMjZGbG93cy1BY2NlcHRDaGFuZ2VTdHJ1Y3R1cmFsRmVhdHVyZUV2ZW50QWN0aW9uIi8+DQorICAgICAgICAgICAgPGVTdHJ1Y3R1cmFsRmVhdHVyZXMgeG1pOnR5cGU9ImVjb3JlOkVSZWZlcmVuY2UiIHhtaTppZD0iUHJvZmlsZURlZmluaXRpb24tU3lzTUwtUG9ydHNGbG93cy1BY2NlcHRDaGFuZ2VTdHJ1Y3R1cmFsRmVhdHVyZUV2ZW50QWN0aW9uLWJhc2VfQWNjZXB0RXZlbnRBY3Rpb24iIG5hbWU9ImJhc2VfQWNjZXB0RXZlbnRBY3Rpb24iIG9yZGVyZWQ9ImZhbHNlIj4NCisgICAgICAgICAgICAgIDxlVHlwZSB4bWk6dHlwZT0iZWNvcmU6RUNsYXNzIiBocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3VtbDIvNS4wLjAvVU1MIy8vQWNjZXB0RXZlbnRBY3Rpb24iLz4NCisgICAgICAgICAgICA8L2VTdHJ1Y3R1cmFsRmVhdHVyZXM+DQorICAgICAgICAgIDwvZUNsYXNzaWZpZXJzPg0KKyAgICAgICAgICA8ZUNsYXNzaWZpZXJzIHhtaTp0eXBlPSJlY29yZTpFQ2xhc3MiIHhtaTppZD0iUHJvZmlsZURlZmluaXRpb24tU3lzTUwtUG9ydHNGbG93cy1DaGFuZ2VTdHJ1Y3R1cmFsRmVhdHVyZUV2ZW50IiBuYW1lPSJDaGFuZ2VTdHJ1Y3R1cmFsRmVhdHVyZUV2ZW50Ij4NCisgICAgICAgICAgICA8ZUFubm90YXRpb25zIHhtaTppZD0iUHJvZmlsZURlZmluaXRpb24tU3lzTUwtUG9ydHNGbG93cy1DaGFuZ2VTdHJ1Y3R1cmFsRmVhdHVyZUV2ZW50LWVBbm5vdGF0aW9ucyIgc291cmNlPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3VtbDIvMi4wLjAvVU1MIiByZWZlcmVuY2VzPSJTeXNNTC1Qb3J0c191MDAyNkZsb3dzLUNoYW5nZVN0cnVjdHVyYWxGZWF0dXJlRXZlbnQiLz4NCisgICAgICAgICAgICA8ZVN0cnVjdHVyYWxGZWF0dXJlcyB4bWk6dHlwZT0iZWNvcmU6RVJlZmVyZW5jZSIgeG1pOmlkPSJQcm9maWxlRGVmaW5pdGlvbi1TeXNNTC1Qb3J0c0Zsb3dzLUNoYW5nZVN0cnVjdHVyYWxGZWF0dXJlRXZlbnQtYmFzZV9DaGFuZ2VFdmVudCIgbmFtZT0iYmFzZV9DaGFuZ2VFdmVudCIgb3JkZXJlZD0iZmFsc2UiPg0KKyAgICAgICAgICAgICAgPGVUeXBlIHhtaTp0eXBlPSJlY29yZTpFQ2xhc3MiIGhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvdW1sMi81LjAuMC9VTUwjLy9DaGFuZ2VFdmVudCIvPg0KKyAgICAgICAgICAgIDwvZVN0cnVjdHVyYWxGZWF0dXJlcz4NCisgICAgICAgICAgICA8ZVN0cnVjdHVyYWxGZWF0dXJlcyB4bWk6dHlwZT0iZWNvcmU6RVJlZmVyZW5jZSIgeG1pOmlkPSJQcm9maWxlRGVmaW5pdGlvbi1TeXNNTC1Qb3J0c0Zsb3dzLUNoYW5nZVN0cnVjdHVyYWxGZWF0dXJlRXZlbnQtc3RydWN0dXJhbEZlYXR1cmUiIG5hbWU9InN0cnVjdHVyYWxGZWF0dXJlIiBvcmRlcmVkPSJmYWxzZSIgbG93ZXJCb3VuZD0iMSI+DQorICAgICAgICAgICAgICA8ZUFubm90YXRpb25zIHhtaTppZD0iUHJvZmlsZURlZmluaXRpb24tU3lzTUwtUG9ydHNGbG93cy1DaGFuZ2VTdHJ1Y3R1cmFsRmVhdHVyZUV2ZW50LXN0cnVjdHVyYWxGZWF0dXJlLWVBbm5vdGF0aW9ucyIgc291cmNlPSJodHRwOi8vc2NoZW1hLm9tZy5vcmcvc3BlYy9NT0YvMi4wL2Vtb2YueG1sI1Byb3BlcnR5Lm9wcG9zaXRlUm9sZU5hbWUiPg0KKyAgICAgICAgICAgICAgICA8ZGV0YWlscyB4bWk6aWQ9IlByb2ZpbGVEZWZpbml0aW9uLVN5c01MLVBvcnRzRmxvd3MtQ2hhbmdlU3RydWN0dXJhbEZlYXR1cmVFdmVudC1zdHJ1Y3R1cmFsRmVhdHVyZS1lQW5ub3RhdGlvbnMtZGV0YWlscyIga2V5PSJib2R5IiB2YWx1ZT0iY2hhbmdlU3RydWN0dXJhbEZlYXR1cmVFdmVudCIvPg0KKyAgICAgICAgICAgICAgPC9lQW5ub3RhdGlvbnM+DQorICAgICAgICAgICAgICA8ZVR5cGUgeG1pOnR5cGU9ImVjb3JlOkVDbGFzcyIgaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy91bWwyLzUuMC4wL1VNTCMvL1N0cnVjdHVyYWxGZWF0dXJlIi8+DQorICAgICAgICAgICAgPC9lU3RydWN0dXJhbEZlYXR1cmVzPg0KKyAgICAgICAgICA8L2VDbGFzc2lmaWVycz4NCisgICAgICAgICAgPGVDbGFzc2lmaWVycyB4bWk6dHlwZT0iZWNvcmU6RUNsYXNzIiB4bWk6aWQ9IlByb2ZpbGVEZWZpbml0aW9uLVN5c01MLVBvcnRzRmxvd3MtRGlyZWN0ZWRGZWF0dXJlIiBuYW1lPSJEaXJlY3RlZEZlYXR1cmUiPg0KKyAgICAgICAgICAgIDxlQW5ub3RhdGlvbnMgeG1pOmlkPSJQcm9maWxlRGVmaW5pdGlvbi1TeXNNTC1Qb3J0c0Zsb3dzLURpcmVjdGVkRmVhdHVyZS1lQW5ub3RhdGlvbnMiIHNvdXJjZT0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy91bWwyLzIuMC4wL1VNTCIgcmVmZXJlbmNlcz0iU3lzTUwtUG9ydHNfdTAwMjZGbG93cy1EaXJlY3RlZEZlYXR1cmUiLz4NCisgICAgICAgICAgICA8ZVN0cnVjdHVyYWxGZWF0dXJlcyB4bWk6dHlwZT0iZWNvcmU6RVJlZmVyZW5jZSIgeG1pOmlkPSJQcm9maWxlRGVmaW5pdGlvbi1TeXNNTC1Qb3J0c0Zsb3dzLURpcmVjdGVkRmVhdHVyZS1iYXNlX0ZlYXR1cmUiIG5hbWU9ImJhc2VfRmVhdHVyZSIgb3JkZXJlZD0iZmFsc2UiPg0KKyAgICAgICAgICAgICAgPGVUeXBlIHhtaTp0eXBlPSJlY29yZTpFQ2xhc3MiIGhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvdW1sMi81LjAuMC9VTUwjLy9GZWF0dXJlIi8+DQorICAgICAgICAgICAgPC9lU3RydWN0dXJhbEZlYXR1cmVzPg0KKyAgICAgICAgICAgIDxlU3RydWN0dXJhbEZlYXR1cmVzIHhtaTp0eXBlPSJlY29yZTpFQXR0cmlidXRlIiB4bWk6aWQ9IlByb2ZpbGVEZWZpbml0aW9uLVN5c01MLVBvcnRzRmxvd3MtRGlyZWN0ZWRGZWF0dXJlLWZlYXR1cmVEaXJlY3Rpb24iIG5hbWU9ImZlYXR1cmVEaXJlY3Rpb24iIG9yZGVyZWQ9ImZhbHNlIiBsb3dlckJvdW5kPSIxIiBlVHlwZT0iUHJvZmlsZURlZmluaXRpb24tU3lzTUwtUG9ydHNGbG93cy1GZWF0dXJlRGlyZWN0aW9uIi8+DQorICAgICAgICAgIDwvZUNsYXNzaWZpZXJzPg0KKyAgICAgICAgICA8ZUNsYXNzaWZpZXJzIHhtaTp0eXBlPSJlY29yZTpFQ2xhc3MiIHhtaTppZD0iUHJvZmlsZURlZmluaXRpb24tU3lzTUwtUG9ydHNGbG93cy1JbnZvY2F0aW9uT25OZXN0ZWRQb3J0QWN0aW9uIiBuYW1lPSJJbnZvY2F0aW9uT25OZXN0ZWRQb3J0QWN0aW9uIiBlU3VwZXJUeXBlcz0iUHJvZmlsZURlZmluaXRpb24tU3lzTUwtQmxvY2tzLUVsZW1lbnRQcm9wZXJ0eVBhdGgiPg0KKyAgICAgICAgICAgIDxlQW5ub3RhdGlvbnMgeG1pOmlkPSJQcm9maWxlRGVmaW5pdGlvbi1TeXNNTC1Qb3J0c0Zsb3dzLUludm9jYXRpb25Pbk5lc3RlZFBvcnRBY3Rpb24tZUFubm90YXRpb25zIiBzb3VyY2U9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvdW1sMi8yLjAuMC9VTUwiIHJlZmVyZW5jZXM9IlN5c01MLVBvcnRzX3UwMDI2Rmxvd3MtSW52b2NhdGlvbk9uTmVzdGVkUG9ydEFjdGlvbiIvPg0KKyAgICAgICAgICAgIDxlU3RydWN0dXJhbEZlYXR1cmVzIHhtaTp0eXBlPSJlY29yZTpFUmVmZXJlbmNlIiB4bWk6aWQ9IlByb2ZpbGVEZWZpbml0aW9uLVN5c01MLVBvcnRzRmxvd3MtSW52b2NhdGlvbk9uTmVzdGVkUG9ydEFjdGlvbi1iYXNlX0ludm9jYXRpb25BY3Rpb24iIG5hbWU9ImJhc2VfSW52b2NhdGlvbkFjdGlvbiIgb3JkZXJlZD0iZmFsc2UiPg0KKyAgICAgICAgICAgICAgPGVBbm5vdGF0aW9ucyB4bWk6aWQ9IlByb2ZpbGVEZWZpbml0aW9uLVN5c01MLVBvcnRzRmxvd3MtSW52b2NhdGlvbk9uTmVzdGVkUG9ydEFjdGlvbi1iYXNlX0ludm9jYXRpb25BY3Rpb24tZUFubm90YXRpb25zIiBzb3VyY2U9InJlZGVmaW5lcyIgcmVmZXJlbmNlcz0iUHJvZmlsZURlZmluaXRpb24tU3lzTUwtQmxvY2tzLUVsZW1lbnRQcm9wZXJ0eVBhdGgtYmFzZV9FbGVtZW50Ii8+DQorICAgICAgICAgICAgICA8ZVR5cGUgeG1pOnR5cGU9ImVjb3JlOkVDbGFzcyIgaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy91bWwyLzUuMC4wL1VNTCMvL0ludm9jYXRpb25BY3Rpb24iLz4NCisgICAgICAgICAgICA8L2VTdHJ1Y3R1cmFsRmVhdHVyZXM+DQorICAgICAgICAgICAgPGVTdHJ1Y3R1cmFsRmVhdHVyZXMgeG1pOnR5cGU9ImVjb3JlOkVSZWZlcmVuY2UiIHhtaTppZD0iUHJvZmlsZURlZmluaXRpb24tU3lzTUwtUG9ydHNGbG93cy1JbnZvY2F0aW9uT25OZXN0ZWRQb3J0QWN0aW9uLW9uTmVzdGVkUG9ydCIgbmFtZT0ib25OZXN0ZWRQb3J0IiB1bmlxdWU9ImZhbHNlIiBsb3dlckJvdW5kPSIxIiB1cHBlckJvdW5kPSItMSI+DQorICAgICAgICAgICAgICA8ZUFubm90YXRpb25zIHhtaTppZD0iUHJvZmlsZURlZmluaXRpb24tU3lzTUwtUG9ydHNGbG93cy1JbnZvY2F0aW9uT25OZXN0ZWRQb3J0QWN0aW9uLW9uTmVzdGVkUG9ydC1lQW5ub3RhdGlvbnMxIiBzb3VyY2U9Imh0dHA6Ly9zY2hlbWEub21nLm9yZy9zcGVjL01PRi8yLjAvZW1vZi54bWwjUHJvcGVydHkub3Bwb3NpdGVSb2xlTmFtZSI+DQorICAgICAgICAgICAgICAgIDxkZXRhaWxzIHhtaTppZD0iUHJvZmlsZURlZmluaXRpb24tU3lzTUwtUG9ydHNGbG93cy1JbnZvY2F0aW9uT25OZXN0ZWRQb3J0QWN0aW9uLW9uTmVzdGVkUG9ydC1lQW5ub3RhdGlvbnMxLWRldGFpbHMiIGtleT0iYm9keSIgdmFsdWU9Imludm9jYXRpb25Pbk5lc3RlZFBvcnRBY3Rpb24iLz4NCisgICAgICAgICAgICAgIDwvZUFubm90YXRpb25zPg0KKyAgICAgICAgICAgICAgPGVBbm5vdGF0aW9ucyB4bWk6aWQ9IlByb2ZpbGVEZWZpbml0aW9uLVN5c01MLVBvcnRzRmxvd3MtSW52b2NhdGlvbk9uTmVzdGVkUG9ydEFjdGlvbi1vbk5lc3RlZFBvcnQtZUFubm90YXRpb25zMiIgc291cmNlPSJyZWRlZmluZXMiIHJlZmVyZW5jZXM9IlByb2ZpbGVEZWZpbml0aW9uLVN5c01MLUJsb2Nrcy1FbGVtZW50UHJvcGVydHlQYXRoLXByb3BlcnR5UGF0aCIvPg0KKyAgICAgICAgICAgICAgPGVUeXBlIHhtaTp0eXBlPSJlY29yZTpFQ2xhc3MiIGhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvdW1sMi81LjAuMC9VTUwjLy9Qb3J0Ii8+DQorICAgICAgICAgICAgPC9lU3RydWN0dXJhbEZlYXR1cmVzPg0KKyAgICAgICAgICA8L2VDbGFzc2lmaWVycz4NCisgICAgICAgICAgPGVDbGFzc2lmaWVycyB4bWk6dHlwZT0iZWNvcmU6RUNsYXNzIiB4bWk6aWQ9IlByb2ZpbGVEZWZpbml0aW9uLVN5c01MLVBvcnRzRmxvd3MtVHJpZ2dlck9uTmVzdGVkUG9ydCIgbmFtZT0iVHJpZ2dlck9uTmVzdGVkUG9ydCIgZVN1cGVyVHlwZXM9IlByb2ZpbGVEZWZpbml0aW9uLVN5c01MLUJsb2Nrcy1FbGVtZW50UHJvcGVydHlQYXRoIj4NCisgICAgICAgICAgICA8ZUFubm90YXRpb25zIHhtaTppZD0iUHJvZmlsZURlZmluaXRpb24tU3lzTUwtUG9ydHNGbG93cy1UcmlnZ2VyT25OZXN0ZWRQb3J0LWVBbm5vdGF0aW9ucyIgc291cmNlPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3VtbDIvMi4wLjAvVU1MIiByZWZlcmVuY2VzPSJTeXNNTC1Qb3J0c191MDAyNkZsb3dzLVRyaWdnZXJPbk5lc3RlZFBvcnQiLz4NCisgICAgICAgICAgICA8ZVN0cnVjdHVyYWxGZWF0dXJlcyB4bWk6dHlwZT0iZWNvcmU6RVJlZmVyZW5jZSIgeG1pOmlkPSJQcm9maWxlRGVmaW5pdGlvbi1TeXNNTC1Qb3J0c0Zsb3dzLVRyaWdnZXJPbk5lc3RlZFBvcnQtYmFzZV9UcmlnZ2VyIiBuYW1lPSJiYXNlX1RyaWdnZXIiIG9yZGVyZWQ9ImZhbHNlIiBsb3dlckJvdW5kPSIxIj4NCisgICAgICAgICAgICAgIDxlQW5ub3RhdGlvbnMgeG1pOmlkPSJQcm9maWxlRGVmaW5pdGlvbi1TeXNNTC1Qb3J0c0Zsb3dzLVRyaWdnZXJPbk5lc3RlZFBvcnQtYmFzZV9UcmlnZ2VyLWVBbm5vdGF0aW9ucyIgc291cmNlPSJyZWRlZmluZXMiIHJlZmVyZW5jZXM9IlByb2ZpbGVEZWZpbml0aW9uLVN5c01MLUJsb2Nrcy1FbGVtZW50UHJvcGVydHlQYXRoLWJhc2VfRWxlbWVudCIvPg0KKyAgICAgICAgICAgICAgPGVUeXBlIHhtaTp0eXBlPSJlY29yZTpFQ2xhc3MiIGhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvdW1sMi81LjAuMC9VTUwjLy9UcmlnZ2VyIi8+DQorICAgICAgICAgICAgPC9lU3RydWN0dXJhbEZlYXR1cmVzPg0KKyAgICAgICAgICAgIDxlU3RydWN0dXJhbEZlYXR1cmVzIHhtaTp0eXBlPSJlY29yZTpFUmVmZXJlbmNlIiB4bWk6aWQ9IlByb2ZpbGVEZWZpbml0aW9uLVN5c01MLVBvcnRzRmxvd3MtVHJpZ2dlck9uTmVzdGVkUG9ydC1vbk5lc3RlZFBvcnQiIG5hbWU9Im9uTmVzdGVkUG9ydCIgdW5pcXVlPSJmYWxzZSIgbG93ZXJCb3VuZD0iMSIgdXBwZXJCb3VuZD0iLTEiPg0KKyAgICAgICAgICAgICAgPGVBbm5vdGF0aW9ucyB4bWk6aWQ9IlByb2ZpbGVEZWZpbml0aW9uLVN5c01MLVBvcnRzRmxvd3MtVHJpZ2dlck9uTmVzdGVkUG9ydC1vbk5lc3RlZFBvcnQtZUFubm90YXRpb25zMSIgc291cmNlPSJodHRwOi8vc2NoZW1hLm9tZy5vcmcvc3BlYy9NT0YvMi4wL2Vtb2YueG1sI1Byb3BlcnR5Lm9wcG9zaXRlUm9sZU5hbWUiPg0KKyAgICAgICAgICAgICAgICA8ZGV0YWlscyB4bWk6aWQ9IlByb2ZpbGVEZWZpbml0aW9uLVN5c01MLVBvcnRzRmxvd3MtVHJpZ2dlck9uTmVzdGVkUG9ydC1vbk5lc3RlZFBvcnQtZUFubm90YXRpb25zMS1kZXRhaWxzIiBrZXk9ImJvZHkiIHZhbHVlPSJ0cmlnZ2VyT25OZXN0ZWRQb3J0Ii8+DQorICAgICAgICAgICAgICA8L2VBbm5vdGF0aW9ucz4NCisgICAgICAgICAgICAgIDxlQW5ub3RhdGlvbnMgeG1pOmlkPSJQcm9maWxlRGVmaW5pdGlvbi1TeXNNTC1Qb3J0c0Zsb3dzLVRyaWdnZXJPbk5lc3RlZFBvcnQtb25OZXN0ZWRQb3J0LWVBbm5vdGF0aW9uczIiIHNvdXJjZT0icmVkZWZpbmVzIiByZWZlcmVuY2VzPSJQcm9maWxlRGVmaW5pdGlvbi1TeXNNTC1CbG9ja3MtRWxlbWVudFByb3BlcnR5UGF0aC1wcm9wZXJ0eVBhdGgiLz4NCisgICAgICAgICAgICAgIDxlVHlwZSB4bWk6dHlwZT0iZWNvcmU6RUNsYXNzIiBocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3VtbDIvNS4wLjAvVU1MIy8vUG9ydCIvPg0KKyAgICAgICAgICAgIDwvZVN0cnVjdHVyYWxGZWF0dXJlcz4NCisgICAgICAgICAgPC9lQ2xhc3NpZmllcnM+DQorICAgICAgICA8L2VTdWJwYWNrYWdlcz4NCisgICAgICAgIDxlU3VicGFja2FnZXMgeG1pOmlkPSJQcm9maWxlRGVmaW5pdGlvbi1TeXNNTC1BY3Rpdml0aWVzIiBuYW1lPSJBY3Rpdml0aWVzIiBuc1VSST0iaHR0cDovLy9TeXNNTC9BY3Rpdml0aWVzLmVjb3JlIiBuc1ByZWZpeD0iU3lzTUwuQWN0aXZpdGllcyI+DQorICAgICAgICAgIDxlQW5ub3RhdGlvbnMgeG1pOmlkPSJQcm9maWxlRGVmaW5pdGlvbi1TeXNNTC1BY3Rpdml0aWVzLWVBbm5vdGF0aW9ucyIgc291cmNlPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3VtbDIvNC4wLjAvVU1MIiByZWZlcmVuY2VzPSJTeXNNTC1BY3Rpdml0aWVzIi8+DQorICAgICAgICAgIDxlQ2xhc3NpZmllcnMgeG1pOnR5cGU9ImVjb3JlOkVDbGFzcyIgeG1pOmlkPSJQcm9maWxlRGVmaW5pdGlvbi1TeXNNTC1BY3Rpdml0aWVzLU92ZXJ3cml0ZSIgbmFtZT0iT3ZlcndyaXRlIj4NCisgICAgICAgICAgICA8ZUFubm90YXRpb25zIHhtaTppZD0iUHJvZmlsZURlZmluaXRpb24tU3lzTUwtQWN0aXZpdGllcy1PdmVyd3JpdGUtZUFubm90YXRpb25zMSIgc291cmNlPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3VtbDIvMi4wLjAvVU1MIiByZWZlcmVuY2VzPSJTeXNNTC1BY3Rpdml0aWVzLU92ZXJ3cml0ZSIvPg0KKyAgICAgICAgICAgIDxlQW5ub3RhdGlvbnMgeG1pOmlkPSJQcm9maWxlRGVmaW5pdGlvbi1TeXNNTC1BY3Rpdml0aWVzLU92ZXJ3cml0ZS1lQW5ub3RhdGlvbnMyIiBzb3VyY2U9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvZW1mLzIwMDIvR2VuTW9kZWwiPg0KKyAgICAgICAgICAgICAgPGRldGFpbHMgeG1pOmlkPSJQcm9maWxlRGVmaW5pdGlvbi1TeXNNTC1BY3Rpdml0aWVzLU92ZXJ3cml0ZS1lQW5ub3RhdGlvbnMyLWRldGFpbHMiIGtleT0iZG9jdW1lbnRhdGlvbiIgdmFsdWU9IldoZW4gdGhlIMKrb3ZlcndyaXRlwrsgc3RlcmVvdHlwZSBpcyBhcHBsaWVkIHRvIG9iamVjdCBub2RlcywgYSB0b2tlbiBhcnJpdmluZyBhdCBhIGZ1bGwgb2JqZWN0IG5vZGUgcmVwbGFjZXMgdGhlIG9uZXMgYWxyZWFkeSB0aGVyZSAoYSBmdWxsIG9iamVjdCBub2RlIGhhcyBhcyBtYW55IHRva2VucyBhcyBhbGxvd2VkIGJ5IGl0cyB1cHBlciBib3VuZCkuIFRoaXMgaXMgdHlwaWNhbGx5IHVzZWQgb24gYW4gaW5wdXQgcGluIHdpdGggYW4gdXBwZXIgYm91bmQgb2YgMSB0byBlbnN1cmUgdGhhdCBzdGFsZSBkYXRhIGlzIG92ZXJyaWRkZW4gYXQgYW4gaW5wdXQgcGluLiBGb3IgdXBwZXIgYm91bmRzIGdyZWF0ZXIgdGhhbiBvbmUsIHRoZSB0b2tlbiByZXBsYWNlZCBpcyB0aGUgb25lIHRoYXQgd291bGQgYmUgdGhlIGxhc3QgdG8gYmUgc2VsZWN0ZWQgYWNjb3JkaW5nIHRvIHRoZSBvcmRlcmluZyBraW5kIGZvciB0aGUgbm9kZS4gRm9yIEZJRk8gb3JkZXJpbmcsIHRoaXMgaXMgdGhlIG1vc3QgcmVjZW50bHkgYWRkZWQgdG9rZW4sIGZvciBMSUZPIGl0IGlzIHRoZSBsZWFzdCByZWNlbnRseSBhZGRlZCB0b2tlbi4gQSBudWxsIHRva2VuIHJlbW92ZXMgYWxsIHRoZSB0b2tlbnMgYWxyZWFkeSB0aGVyZS4gVGhlIG51bWJlciBvZiB0b2tlbnMgcmVwbGFjZWQgaXMgZXF1YWwgdG8gdGhlIHdlaWdodCBvZiB0aGUgaW5jb21pbmcgZWRnZSwgd2hpY2ggZGVmYXVsdHMgdG8gMS4gRm9yIG9iamVjdCBub2RlcyB0aGF0IGFyZSB0aGUgdGFyZ2V0IG9mIGNvbnRpbnVvdXMgZmxvd3MsIMKrb3ZlcndyaXRlwrsgYW5kIMKrbm9idWZmZXLCuyBoYXZlIHRoZSBzYW1lIGVmZmVjdC4gVGhlIHN0ZXJlb3R5cGUgZG9lcyBub3Qgb3ZlcnJpZGUgVU1MIHRva2VuIG9mZmVyaW5nIHNlbWFudGljcywganVzdCBpbmRpY2F0ZXMgd2hhdCBoYXBwZW5zIHRvIHRoZSB0b2tlbiB3aGVuIGl0IGlzIGFjY2VwdGVkLiBXaGVuIHRoZSBzdGVyZW90eXBlIGlzIG5vdCBhcHBsaWVkLCB0aGUgc2VtYW50aWNzIGlzIGFzIGluIFVNTCwgc3BlY2lmaWNhbGx5LCB0b2tlbnMgYXJyaXZpbmcgYXQgb2JqZWN0IG5vZGVzIGRvIG5vdCByZXBsYWNlIG9uZXMgdGhhdCBhcmUgYWxyZWFkeSB0aGVyZS4iLz4NCisgICAgICAgICAgICA8L2VBbm5vdGF0aW9ucz4NCisgICAgICAgICAgICA8ZVN0cnVjdHVyYWxGZWF0dXJlcyB4bWk6dHlwZT0iZWNvcmU6RVJlZmVyZW5jZSIgeG1pOmlkPSJQcm9maWxlRGVmaW5pdGlvbi1TeXNNTC1BY3Rpdml0aWVzLU92ZXJ3cml0ZS1iYXNlX09iamVjdE5vZGUiIG5hbWU9ImJhc2VfT2JqZWN0Tm9kZSIgb3JkZXJlZD0iZmFsc2UiPg0KKyAgICAgICAgICAgICAgPGVUeXBlIHhtaTp0eXBlPSJlY29yZTpFQ2xhc3MiIGhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvdW1sMi81LjAuMC9VTUwjLy9PYmplY3ROb2RlIi8+DQorICAgICAgICAgICAgPC9lU3RydWN0dXJhbEZlYXR1cmVzPg0KKyAgICAgICAgICA8L2VDbGFzc2lmaWVycz4NCisgICAgICAgICAgPGVDbGFzc2lmaWVycyB4bWk6dHlwZT0iZWNvcmU6RUNsYXNzIiB4bWk6aWQ9IlByb2ZpbGVEZWZpbml0aW9uLVN5c01MLUFjdGl2aXRpZXMtQ29udHJvbE9wZXJhdG9yIiBuYW1lPSJDb250cm9sT3BlcmF0b3IiPg0KKyAgICAgICAgICAgIDxlQW5ub3RhdGlvbnMgeG1pOmlkPSJQcm9maWxlRGVmaW5pdGlvbi1TeXNNTC1BY3Rpdml0aWVzLUNvbnRyb2xPcGVyYXRvci1lQW5ub3RhdGlvbnMxIiBzb3VyY2U9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvdW1sMi8yLjAuMC9VTUwiIHJlZmVyZW5jZXM9IlN5c01MLUFjdGl2aXRpZXMtQ29udHJvbE9wZXJhdG9yIi8+DQorICAgICAgICAgICAgPGVBbm5vdGF0aW9ucyB4bWk6aWQ9IlByb2ZpbGVEZWZpbml0aW9uLVN5c01MLUFjdGl2aXRpZXMtQ29udHJvbE9wZXJhdG9yLWVBbm5vdGF0aW9uczIiIHNvdXJjZT0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9lbWYvMjAwMi9HZW5Nb2RlbCI+DQorICAgICAgICAgICAgICA8ZGV0YWlscyB4bWk6aWQ9IlByb2ZpbGVEZWZpbml0aW9uLVN5c01MLUFjdGl2aXRpZXMtQ29udHJvbE9wZXJhdG9yLWVBbm5vdGF0aW9uczItZGV0YWlscyIga2V5PSJkb2N1bWVudGF0aW9uIiB2YWx1ZT0iQSBjb250cm9sIG9wZXJhdG9yIGlzIGEgYmVoYXZpb3IgdGhhdCBpcyBpbnRlbmRlZCB0byByZXByZXNlbnQgYW4gYXJiaXRyYXJpbHkgY29tcGxleCBsb2dpY2FsIG9wZXJhdG9yIHRoYXQgY2FuIGJlIHVzZWQgdG8gZW5hYmxlIGFuZCBkaXNhYmxlIG90aGVyIGFjdGlvbnMuIFdoZW4gdGhpcyBzdGVyZW90eXBlIGlzIGFwcGxpZWQgdG8gYmVoYXZpb3JzLCB0aGUgYmVoYXZpb3IgdGFrZXMgY29udHJvbCB2YWx1ZXMgYXMgaW5wdXRzIG9yIHByb3ZpZGVzIHRoZW0gYXMgb3V0cHV0cywgdGhhdCBpcywgaXQgdHJlYXRzIGNvbnRyb2wgYXMgZGF0YS4gV2hlbiB0aGlzIHN0ZXJlb3R5cGUgaXMgbm90IGFwcGxpZWQsIHRoZSBiZWhhdmlvciBtYXkgbm90IGhhdmUgYSBwYXJhbWV0ZXIgdHlwZWQgYnkgQ29udHJvbFZhbHVlLiBUaGlzIHN0ZXJlb3R5cGUgYWxzbyBhcHBsaWVzIHRvIG9wZXJhdGlvbnMgd2l0aCB0aGUgc2FtZSBzZW1hbnRpY3MuIi8+DQorICAgICAgICAgICAgPC9lQW5ub3RhdGlvbnM+DQorICAgICAgICAgICAgPGVTdHJ1Y3R1cmFsRmVhdHVyZXMgeG1pOnR5cGU9ImVjb3JlOkVSZWZlcmVuY2UiIHhtaTppZD0iUHJvZmlsZURlZmluaXRpb24tU3lzTUwtQWN0aXZpdGllcy1Db250cm9sT3BlcmF0b3ItYmFzZV9CZWhhdmlvciIgbmFtZT0iYmFzZV9CZWhhdmlvciIgb3JkZXJlZD0iZmFsc2UiPg0KKyAgICAgICAgICAgICAgPGVUeXBlIHhtaTp0eXBlPSJlY29yZTpFQ2xhc3MiIGhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvdW1sMi81LjAuMC9VTUwjLy9CZWhhdmlvciIvPg0KKyAgICAgICAgICAgIDwvZVN0cnVjdHVyYWxGZWF0dXJlcz4NCisgICAgICAgICAgICA8ZVN0cnVjdHVyYWxGZWF0dXJlcyB4bWk6dHlwZT0iZWNvcmU6RVJlZmVyZW5jZSIgeG1pOmlkPSJQcm9maWxlRGVmaW5pdGlvbi1TeXNNTC1BY3Rpdml0aWVzLUNvbnRyb2xPcGVyYXRvci1iYXNlX09wZXJhdGlvbiIgbmFtZT0iYmFzZV9PcGVyYXRpb24iIG9yZGVyZWQ9ImZhbHNlIj4NCisgICAgICAgICAgICAgIDxlVHlwZSB4bWk6dHlwZT0iZWNvcmU6RUNsYXNzIiBocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3VtbDIvNS4wLjAvVU1MIy8vT3BlcmF0aW9uIi8+DQorICAgICAgICAgICAgPC9lU3RydWN0dXJhbEZlYXR1cmVzPg0KKyAgICAgICAgICA8L2VDbGFzc2lmaWVycz4NCisgICAgICAgICAgPGVDbGFzc2lmaWVycyB4bWk6dHlwZT0iZWNvcmU6RUNsYXNzIiB4bWk6aWQ9IlByb2ZpbGVEZWZpbml0aW9uLVN5c01MLUFjdGl2aXRpZXMtUmF0ZSIgbmFtZT0iUmF0ZSI+DQorICAgICAgICAgICAgPGVBbm5vdGF0aW9ucyB4bWk6aWQ9IlByb2ZpbGVEZWZpbml0aW9uLVN5c01MLUFjdGl2aXRpZXMtUmF0ZS1lQW5ub3RhdGlvbnMxIiBzb3VyY2U9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvdW1sMi8yLjAuMC9VTUwiIHJlZmVyZW5jZXM9IlN5c01MLUFjdGl2aXRpZXMtUmF0ZSIvPg0KKyAgICAgICAgICAgIDxlQW5ub3RhdGlvbnMgeG1pOmlkPSJQcm9maWxlRGVmaW5pdGlvbi1TeXNNTC1BY3Rpdml0aWVzLVJhdGUtZUFubm90YXRpb25zMiIgc291cmNlPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2VtZi8yMDAyL0dlbk1vZGVsIj4NCisgICAgICAgICAgICAgIDxkZXRhaWxzIHhtaTppZD0iUHJvZmlsZURlZmluaXRpb24tU3lzTUwtQWN0aXZpdGllcy1SYXRlLWVBbm5vdGF0aW9uczItZGV0YWlscyIga2V5PSJkb2N1bWVudGF0aW9uIiB2YWx1ZT0iV2hlbiB0aGUgwqtyYXRlwrsgc3RlcmVvdHlwZSBpcyBhcHBsaWVkIHRvIGFuIGFjdGl2aXR5IGVkZ2UsIGl0IHNwZWNpZmllcyB0aGUgZXhwZWN0ZWQgdmFsdWUgb2YgdGhlIG51bWJlciBvZiBvYmplY3RzIGFuZCB2YWx1ZXMgdGhhdCB0cmF2ZXJzZSB0aGUgZWRnZSBwZXIgdGltZSBpbnRlcnZhbCwgdGhhdCBpcywgdGhlIGV4cGVjdGVkIHZhbHVlIHJhdGUgYXQgd2hpY2ggdGhleSBsZWF2ZSB0aGUgc291cmNlIG5vZGUgYW5kIGFycml2ZSBhdCB0aGUgdGFyZ2V0IG5vZGUuIEl0IGRvZXMgbm90IHJlZmVyIHRvIHRoZSByYXRlIGF0IHdoaWNoIGEgdmFsdWUgY2hhbmdlcyBvdmVyIHRpbWUuIFdoZW4gdGhlIHN0ZXJlb3R5cGUgaXMgYXBwbGllZCB0byBhIHBhcmFtZXRlciwgdGhlIHBhcmFtZXRlciBtdXN0IGJlIHN0cmVhbWluZywgYW5kIHRoZSBzdGVyZW90eXBlIGdpdmVzIHRoZSBudW1iZXIgb2Ygb2JqZWN0cyBvciB2YWx1ZXMgdGhhdCBmbG93IGluIG9yIG91dCBvZiB0aGUgcGFyYW1ldGVyIHBlciB0aW1lIGludGVydmFsIHdoaWxlIHRoZSBiZWhhdmlvciBvciBvcGVyYXRpb24gaXMgZXhlY3V0aW5nLiBTdHJlYW1pbmcgaXMgYSBjaGFyYWN0ZXJpc3RpYyBvZiBVTUwgYmVoYXZpb3IgcGFyYW1ldGVycyB0aGF0IHN1cHBvcnRzIHRoZSBpbnB1dCBhbmQgb3V0cHV0IG9mIGl0ZW1zIHdoaWxlIGEgYmVoYXZpb3IgaXMgZXhlY3V0aW5nLCByYXRoZXIgdGhhbiBvbmx5IHdoZW4gdGhlIGJlaGF2aW9yIHN0YXJ0cyBhbmQgc3RvcHMuIFRoZSBmbG93IG1heSBiZSBjb250aW51b3VzIG9yIGRpc2NyZXRlLiBUaGUgwqtyYXRlwrsgc3RlcmVvdHlwZSBoYXMgYSByYXRlIHByb3BlcnR5IG9mIHR5cGUgSW5zdGFuY2VTcGVjaWZpY2F0aW9uLiBUaGUgdmFsdWVzIG9mIHRoaXMgcHJvcGVydHkgbXVzdCBiZSBpbnN0YW5jZXMgb2YgY2xhc3NpZmllcnMgc3RlcmVvdHlwZWQgYnkgwqt2YWx1ZVR5cGXCuyBvciDCq2Rpc3RyaWJ1dGlvbkRlZmluaXRpb27Cuy4gSW4gcGFydGljdWxhciwgdGhlIGRlbm9taW5hdG9yIGZvciB1bml0cyB1c2VkIGluIHRoZSByYXRlIHByb3BlcnR5IG11c3QgYmUgdGltZSB1bml0cy4iLz4NCisgICAgICAgICAgICA8L2VBbm5vdGF0aW9ucz4NCisgICAgICAgICAgICA8ZVN0cnVjdHVyYWxGZWF0dXJlcyB4bWk6dHlwZT0iZWNvcmU6RVJlZmVyZW5jZSIgeG1pOmlkPSJQcm9maWxlRGVmaW5pdGlvbi1TeXNNTC1BY3Rpdml0aWVzLVJhdGUtcmF0ZSIgbmFtZT0icmF0ZSIgb3JkZXJlZD0iZmFsc2UiIGxvd2VyQm91bmQ9IjEiPg0KKyAgICAgICAgICAgICAgPGVUeXBlIHhtaTp0eXBlPSJlY29yZTpFQ2xhc3MiIGhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvdW1sMi81LjAuMC9VTUwjLy9JbnN0YW5jZVNwZWNpZmljYXRpb24iLz4NCisgICAgICAgICAgICA8L2VTdHJ1Y3R1cmFsRmVhdHVyZXM+DQorICAgICAgICAgICAgPGVTdHJ1Y3R1cmFsRmVhdHVyZXMgeG1pOnR5cGU9ImVjb3JlOkVSZWZlcmVuY2UiIHhtaTppZD0iUHJvZmlsZURlZmluaXRpb24tU3lzTUwtQWN0aXZpdGllcy1SYXRlLWJhc2VfQWN0aXZpdHlFZGdlIiBuYW1lPSJiYXNlX0FjdGl2aXR5RWRnZSIgb3JkZXJlZD0iZmFsc2UiPg0KKyAgICAgICAgICAgICAgPGVUeXBlIHhtaTp0eXBlPSJlY29yZTpFQ2xhc3MiIGhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvdW1sMi81LjAuMC9VTUwjLy9BY3Rpdml0eUVkZ2UiLz4NCisgICAgICAgICAgICA8L2VTdHJ1Y3R1cmFsRmVhdHVyZXM+DQorICAgICAgICAgICAgPGVTdHJ1Y3R1cmFsRmVhdHVyZXMgeG1pOnR5cGU9ImVjb3JlOkVSZWZlcmVuY2UiIHhtaTppZD0iUHJvZmlsZURlZmluaXRpb24tU3lzTUwtQWN0aXZpdGllcy1SYXRlLWJhc2VfT2JqZWN0Tm9kZSIgbmFtZT0iYmFzZV9PYmplY3ROb2RlIiBvcmRlcmVkPSJmYWxzZSI+DQorICAgICAgICAgICAgICA8ZVR5cGUgeG1pOnR5cGU9ImVjb3JlOkVDbGFzcyIgaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy91bWwyLzUuMC4wL1VNTCMvL09iamVjdE5vZGUiLz4NCisgICAgICAgICAgICA8L2VTdHJ1Y3R1cmFsRmVhdHVyZXM+DQorICAgICAgICAgICAgPGVTdHJ1Y3R1cmFsRmVhdHVyZXMgeG1pOnR5cGU9ImVjb3JlOkVSZWZlcmVuY2UiIHhtaTppZD0iUHJvZmlsZURlZmluaXRpb24tU3lzTUwtQWN0aXZpdGllcy1SYXRlLWJhc2VfUGFyYW1ldGVyIiBuYW1lPSJiYXNlX1BhcmFtZXRlciIgb3JkZXJlZD0iZmFsc2UiPg0KKyAgICAgICAgICAgICAgPGVUeXBlIHhtaTp0eXBlPSJlY29yZTpFQ2xhc3MiIGhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvdW1sMi81LjAuMC9VTUwjLy9QYXJhbWV0ZXIiLz4NCisgICAgICAgICAgICA8L2VTdHJ1Y3R1cmFsRmVhdHVyZXM+DQorICAgICAgICAgIDwvZUNsYXNzaWZpZXJzPg0KKyAgICAgICAgICA8ZUNsYXNzaWZpZXJzIHhtaTp0eXBlPSJlY29yZTpFQ2xhc3MiIHhtaTppZD0iUHJvZmlsZURlZmluaXRpb24tU3lzTUwtQWN0aXZpdGllcy1Ob0J1ZmZlciIgbmFtZT0iTm9CdWZmZXIiPg0KKyAgICAgICAgICAgIDxlQW5ub3RhdGlvbnMgeG1pOmlkPSJQcm9maWxlRGVmaW5pdGlvbi1TeXNNTC1BY3Rpdml0aWVzLU5vQnVmZmVyLWVBbm5vdGF0aW9uczEiIHNvdXJjZT0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy91bWwyLzIuMC4wL1VNTCIgcmVmZXJlbmNlcz0iU3lzTUwtQWN0aXZpdGllcy1Ob0J1ZmZlciIvPg0KKyAgICAgICAgICAgIDxlQW5ub3RhdGlvbnMgeG1pOmlkPSJQcm9maWxlRGVmaW5pdGlvbi1TeXNNTC1BY3Rpdml0aWVzLU5vQnVmZmVyLWVBbm5vdGF0aW9uczIiIHNvdXJjZT0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9lbWYvMjAwMi9HZW5Nb2RlbCI+DQorICAgICAgICAgICAgICA8ZGV0YWlscyB4bWk6aWQ9IlByb2ZpbGVEZWZpbml0aW9uLVN5c01MLUFjdGl2aXRpZXMtTm9CdWZmZXItZUFubm90YXRpb25zMi1kZXRhaWxzIiBrZXk9ImRvY3VtZW50YXRpb24iIHZhbHVlPSJXaGVuIHRoaXMgc3RlcmVvdHlwZSBpcyBhcHBsaWVkIHRvIG9iamVjdCBub2RlcywgdG9rZW5zIGFycml2aW5nIGF0IHRoZSBub2RlIGFyZSBkaXNjYXJkZWQgaWYgdGhleSBhcmUgcmVmdXNlZCBieSBvdXRnb2luZyBlZGdlcywgb3IgcmVmdXNlZCBieSBhY3Rpb25zIGZvciBvYmplY3Qgbm9kZXMgdGhhdCBhcmUgaW5wdXQgcGlucy4gVGhpcyBpcyB0eXBpY2FsbHkgdXNlZCB3aXRoIGZhc3Qgb3IgY29udGludW91c2x5IGZsb3dpbmcgZGF0YSB2YWx1ZXMsIHRvIHByZXZlbnQgYnVmZmVyIG92ZXJydW4sIG9yIHRvIG1vZGVsIHRyYW5zaWVudCB2YWx1ZXMsIHN1Y2ggYXMgZWxlY3RyaWNhbCBzaWduYWxzLiBGb3Igb2JqZWN0IG5vZGVzIHRoYXQgYXJlIHRoZSB0YXJnZXQgb2YgY29udGludW91cyBmbG93cywgwqtub2J1ZmZlcsK7IGFuZCDCq292ZXJ3cml0ZcK7IGhhdmUgdGhlIHNhbWUgZWZmZWN0LiBUaGUgc3RlcmVvdHlwZSBkb2VzIG5vdCBvdmVycmlkZSBVTUwgdG9rZW4gb2ZmZXJpbmcgc2VtYW50aWNzOyBpdCBqdXN0IGluZGljYXRlcyB3aGF0IGhhcHBlbnMgdG8gdGhlIHRva2VuIHdoZW4gaXQgaXMgYWNjZXB0ZWQuIFdoZW4gdGhlIHN0ZXJlb3R5cGUgaXMgbm90IGFwcGxpZWQsIHRoZSBzZW1hbnRpY3MgYXJlIGFzIGluIFVNTCwgc3BlY2lmaWNhbGx5LCB0b2tlbnMgYXJyaXZpbmcgYXQgYW4gb2JqZWN0IG5vZGUgdGhhdCBhcmUgcmVmdXNlZCBieSBvdXRnb2luZyBlZGdlcywgb3IgYWN0aW9uIGZvciBpbnB1dCBwaW5zLCBhcmUgaGVsZCB1bnRpbCB0aGV5IGNhbiBsZWF2ZSB0aGUgb2JqZWN0IG5vZGUuIi8+DQorICAgICAgICAgICAgPC9lQW5ub3RhdGlvbnM+DQorICAgICAgICAgICAgPGVTdHJ1Y3R1cmFsRmVhdHVyZXMgeG1pOnR5cGU9ImVjb3JlOkVSZWZlcmVuY2UiIHhtaTppZD0iUHJvZmlsZURlZmluaXRpb24tU3lzTUwtQWN0aXZpdGllcy1Ob0J1ZmZlci1iYXNlX09iamVjdE5vZGUiIG5hbWU9ImJhc2VfT2JqZWN0Tm9kZSIgb3JkZXJlZD0iZmFsc2UiPg0KKyAgICAgICAgICAgICAgPGVUeXBlIHhtaTp0eXBlPSJlY29yZTpFQ2xhc3MiIGhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvdW1sMi81LjAuMC9VTUwjLy9PYmplY3ROb2RlIi8+DQorICAgICAgICAgICAgPC9lU3RydWN0dXJhbEZlYXR1cmVzPg0KKyAgICAgICAgICA8L2VDbGFzc2lmaWVycz4NCisgICAgICAgICAgPGVDbGFzc2lmaWVycyB4bWk6dHlwZT0iZWNvcmU6RUNsYXNzIiB4bWk6aWQ9IlByb2ZpbGVEZWZpbml0aW9uLVN5c01MLUFjdGl2aXRpZXMtRGlzY3JldGUiIG5hbWU9IkRpc2NyZXRlIiBlU3VwZXJUeXBlcz0iUHJvZmlsZURlZmluaXRpb24tU3lzTUwtQWN0aXZpdGllcy1SYXRlIj4NCisgICAgICAgICAgICA8ZUFubm90YXRpb25zIHhtaTppZD0iUHJvZmlsZURlZmluaXRpb24tU3lzTUwtQWN0aXZpdGllcy1EaXNjcmV0ZS1lQW5ub3RhdGlvbnMxIiBzb3VyY2U9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvdW1sMi8yLjAuMC9VTUwiIHJlZmVyZW5jZXM9IlN5c01MLUFjdGl2aXRpZXMtRGlzY3JldGUiLz4NCisgICAgICAgICAgICA8ZUFubm90YXRpb25zIHhtaTppZD0iUHJvZmlsZURlZmluaXRpb24tU3lzTUwtQWN0aXZpdGllcy1EaXNjcmV0ZS1lQW5ub3RhdGlvbnMyIiBzb3VyY2U9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvZW1mLzIwMDIvR2VuTW9kZWwiPg0KKyAgICAgICAgICAgICAgPGRldGFpbHMgeG1pOmlkPSJQcm9maWxlRGVmaW5pdGlvbi1TeXNNTC1BY3Rpdml0aWVzLURpc2NyZXRlLWVBbm5vdGF0aW9uczItZGV0YWlscyIga2V5PSJkb2N1bWVudGF0aW9uIiB2YWx1ZT0iRGlzY3JldGUgcmF0ZSBpcyBhIHNwZWNpYWwgY2FzZSBvZiByYXRlIG9mIGZsb3cgKHNlZSBSYXRlKSB3aGVyZSB0aGUgaW5jcmVtZW50IG9mIHRpbWUgYmV0d2VlbiBpdGVtcyBpcyBub24temVyby4iLz4NCisgICAgICAgICAgICA8L2VBbm5vdGF0aW9ucz4NCisgICAgICAgICAgPC9lQ2xhc3NpZmllcnM+DQorICAgICAgICAgIDxlQ2xhc3NpZmllcnMgeG1pOnR5cGU9ImVjb3JlOkVDbGFzcyIgeG1pOmlkPSJQcm9maWxlRGVmaW5pdGlvbi1TeXNNTC1BY3Rpdml0aWVzLUNvbnRpbnVvdXMiIG5hbWU9IkNvbnRpbnVvdXMiIGVTdXBlclR5cGVzPSJQcm9maWxlRGVmaW5pdGlvbi1TeXNNTC1BY3Rpdml0aWVzLVJhdGUiPg0KKyAgICAgICAgICAgIDxlQW5ub3RhdGlvbnMgeG1pOmlkPSJQcm9maWxlRGVmaW5pdGlvbi1TeXNNTC1BY3Rpdml0aWVzLUNvbnRpbnVvdXMtZUFubm90YXRpb25zMSIgc291cmNlPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3VtbDIvMi4wLjAvVU1MIiByZWZlcmVuY2VzPSJTeXNNTC1BY3Rpdml0aWVzLUNvbnRpbnVvdXMiLz4NCisgICAgICAgICAgICA8ZUFubm90YXRpb25zIHhtaTppZD0iUHJvZmlsZURlZmluaXRpb24tU3lzTUwtQWN0aXZpdGllcy1Db250aW51b3VzLWVBbm5vdGF0aW9uczIiIHNvdXJjZT0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9lbWYvMjAwMi9HZW5Nb2RlbCI+DQorICAgICAgICAgICAgICA8ZGV0YWlscyB4bWk6aWQ9IlByb2ZpbGVEZWZpbml0aW9uLVN5c01MLUFjdGl2aXRpZXMtQ29udGludW91cy1lQW5ub3RhdGlvbnMyLWRldGFpbHMiIGtleT0iZG9jdW1lbnRhdGlvbiIgdmFsdWU9IkNvbnRpbnVvdXMgcmF0ZSBpcyBhIHNwZWNpYWwgY2FzZSBvZiByYXRlIG9mIGZsb3cgKHNlZSBSYXRlKSB3aGVyZSB0aGUgaW5jcmVtZW50IG9mIHRpbWUgYmV0d2VlbiBpdGVtcyBhcHByb2FjaGVzIHplcm8uIEl0IGlzIGludGVuZGVkIHRvIHJlcHJlc2VudCBjb250aW51b3VzIGZsb3dzIHRoYXQgbWF5IGNvcnJlc3BvbmQgdG8gd2F0ZXIgZmxvd2luZyB0aHJvdWdoIGEgcGlwZSwgYSB0aW1lIGNvbnRpbnVvdXMgc2lnbmFsLCBvciBjb250aW51b3VzIGVuZXJneSBmbG93LiBJdCBpcyBpbmRlcGVuZGVudCBmcm9tIFVNTCBzdHJlYW1pbmcuIEEgc3RyZWFtaW5nIHBhcmFtZXRlciBtYXkgb3IgbWF5IG5vdCBhcHBseSB0byBjb250aW51b3VzIGZsb3csIGFuZCBhIGNvbnRpbnVvdXMgZmxvdyBtYXkgb3IgbWF5IG5vdCBhcHBseSB0byBzdHJlYW1pbmcgcGFyYW1ldGVycy4iLz4NCisgICAgICAgICAgICA8L2VBbm5vdGF0aW9ucz4NCisgICAgICAgICAgPC9lQ2xhc3NpZmllcnM+DQorICAgICAgICAgIDxlQ2xhc3NpZmllcnMgeG1pOnR5cGU9ImVjb3JlOkVDbGFzcyIgeG1pOmlkPSJQcm9maWxlRGVmaW5pdGlvbi1TeXNNTC1BY3Rpdml0aWVzLVByb2JhYmlsaXR5IiBuYW1lPSJQcm9iYWJpbGl0eSI+DQorICAgICAgICAgICAgPGVBbm5vdGF0aW9ucyB4bWk6aWQ9IlByb2ZpbGVEZWZpbml0aW9uLVN5c01MLUFjdGl2aXRpZXMtUHJvYmFiaWxpdHktZUFubm90YXRpb25zMSIgc291cmNlPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3VtbDIvMi4wLjAvVU1MIiByZWZlcmVuY2VzPSJTeXNNTC1BY3Rpdml0aWVzLVByb2JhYmlsaXR5Ii8+DQorICAgICAgICAgICAgPGVBbm5vdGF0aW9ucyB4bWk6aWQ9IlByb2ZpbGVEZWZpbml0aW9uLVN5c01MLUFjdGl2aXRpZXMtUHJvYmFiaWxpdHktZUFubm90YXRpb25zMiIgc291cmNlPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2VtZi8yMDAyL0dlbk1vZGVsIj4NCisgICAgICAgICAgICAgIDxkZXRhaWxzIHhtaTppZD0iUHJvZmlsZURlZmluaXRpb24tU3lzTUwtQWN0aXZpdGllcy1Qcm9iYWJpbGl0eS1lQW5ub3RhdGlvbnMyLWRldGFpbHMiIGtleT0iZG9jdW1lbnRhdGlvbiIgdmFsdWU9IldoZW4gdGhlIMKrcHJvYmFiaWxpdHnCuyBzdGVyZW90eXBlIGlzIGFwcGxpZWQgdG8gZWRnZXMgY29taW5nIG91dCBvZiBkZWNpc2lvbiBub2RlcyBhbmQgb2JqZWN0IG5vZGVzLCBpdCBwcm92aWRlcyBhbiBleHByZXNzaW9uIGZvciB0aGUgcHJvYmFiaWxpdHkgdGhhdCB0aGUgZWRnZSB3aWxsIGJlIHRyYXZlcnNlZC4gVGhlc2UgbXVzdCBiZSBiZXR3ZWVuIHplcm8gYW5kIG9uZSBpbmNsdXNpdmUsIGFuZCBhZGQgdXAgdG8gb25lIGZvciBlZGdlcyB3aXRoIHNhbWUgc291cmNlIGF0IHRoZSB0aW1lIHRoZSBwcm9iYWJpbGl0aWVzIGFyZSB1c2VkLiYjeEE7V2hlbiB0aGUgwqtwcm9iYWJpbGl0ecK7IHN0ZXJlb3R5cGUgaXMgYXBwbGllZCB0byBvdXRwdXQgcGFyYW1ldGVyIHNldHMsIGl0IGdpdmVzIHRoZSBwcm9iYWJpbGl0eSB0aGUgcGFyYW1ldGVyIHNldCB3aWxsIGJlIGdpdmVuIHZhbHVlcyBhdCBydW50aW1lLiBUaGVzZSBtdXN0IGJlIGJldHdlZW4gemVybyBhbmQgb25lIGluY2x1c2l2ZSwgYW5kIGFkZCB1cCB0byBvbmUgZm9yIG91dHB1dCBwYXJhbWV0ZXIgc2V0cyBvZiB0aGUgc2FtZSBiZWhhdmlvciBhdCB0aGUgdGltZSB0aGUgcHJvYmFiaWxpdGllcyBhcmUgdXNlZC4iLz4NCisgICAgICAgICAgICA8L2VBbm5vdGF0aW9ucz4NCisgICAgICAgICAgICA8ZVN0cnVjdHVyYWxGZWF0dXJlcyB4bWk6dHlwZT0iZWNvcmU6RVJlZmVyZW5jZSIgeG1pOmlkPSJQcm9maWxlRGVmaW5pdGlvbi1TeXNNTC1BY3Rpdml0aWVzLVByb2JhYmlsaXR5LWJhc2VfQWN0aXZpdHlFZGdlIiBuYW1lPSJiYXNlX0FjdGl2aXR5RWRnZSIgb3JkZXJlZD0iZmFsc2UiPg0KKyAgICAgICAgICAgICAgPGVUeXBlIHhtaTp0eXBlPSJlY29yZTpFQ2xhc3MiIGhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvdW1sMi81LjAuMC9VTUwjLy9BY3Rpdml0eUVkZ2UiLz4NCisgICAgICAgICAgICA8L2VTdHJ1Y3R1cmFsRmVhdHVyZXM+DQorICAgICAgICAgICAgPGVTdHJ1Y3R1cmFsRmVhdHVyZXMgeG1pOnR5cGU9ImVjb3JlOkVSZWZlcmVuY2UiIHhtaTppZD0iUHJvZmlsZURlZmluaXRpb24tU3lzTUwtQWN0aXZpdGllcy1Qcm9iYWJpbGl0eS1iYXNlX1BhcmFtZXRlclNldCIgbmFtZT0iYmFzZV9QYXJhbWV0ZXJTZXQiIG9yZGVyZWQ9ImZhbHNlIj4NCisgICAgICAgICAgICAgIDxlVHlwZSB4bWk6dHlwZT0iZWNvcmU6RUNsYXNzIiBocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3VtbDIvNS4wLjAvVU1MIy8vUGFyYW1ldGVyU2V0Ii8+DQorICAgICAgICAgICAgPC9lU3RydWN0dXJhbEZlYXR1cmVzPg0KKyAgICAgICAgICAgIDxlU3RydWN0dXJhbEZlYXR1cmVzIHhtaTp0eXBlPSJlY29yZTpFQXR0cmlidXRlIiB4bWk6aWQ9IlByb2ZpbGVEZWZpbml0aW9uLVN5c01MLUFjdGl2aXRpZXMtUHJvYmFiaWxpdHktcHJvYmFiaWxpdHkiIG5hbWU9InByb2JhYmlsaXR5IiBvcmRlcmVkPSJmYWxzZSIgbG93ZXJCb3VuZD0iMSI+DQorICAgICAgICAgICAgICA8ZVR5cGUgeG1pOnR5cGU9ImVjb3JlOkVEYXRhVHlwZSIgaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy91bWwyLzUuMC4wL1R5cGVzIy8vU3RyaW5nIi8+DQorICAgICAgICAgICAgPC9lU3RydWN0dXJhbEZlYXR1cmVzPg0KKyAgICAgICAgICA8L2VDbGFzc2lmaWVycz4NCisgICAgICAgICAgPGVDbGFzc2lmaWVycyB4bWk6dHlwZT0iZWNvcmU6RUNsYXNzIiB4bWk6aWQ9IlByb2ZpbGVEZWZpbml0aW9uLVN5c01MLUFjdGl2aXRpZXMtT3B0aW9uYWwiIG5hbWU9Ik9wdGlvbmFsIj4NCisgICAgICAgICAgICA8ZUFubm90YXRpb25zIHhtaTppZD0iUHJvZmlsZURlZmluaXRpb24tU3lzTUwtQWN0aXZpdGllcy1PcHRpb25hbC1lQW5ub3RhdGlvbnMxIiBzb3VyY2U9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvdW1sMi8yLjAuMC9VTUwiIHJlZmVyZW5jZXM9IlN5c01MLUFjdGl2aXRpZXMtT3B0aW9uYWwiLz4NCisgICAgICAgICAgICA8ZUFubm90YXRpb25zIHhtaTppZD0iUHJvZmlsZURlZmluaXRpb24tU3lzTUwtQWN0aXZpdGllcy1PcHRpb25hbC1lQW5ub3RhdGlvbnMyIiBzb3VyY2U9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvZW1mLzIwMDIvR2VuTW9kZWwiPg0KKyAgICAgICAgICAgICAgPGRldGFpbHMgeG1pOmlkPSJQcm9maWxlRGVmaW5pdGlvbi1TeXNNTC1BY3Rpdml0aWVzLU9wdGlvbmFsLWVBbm5vdGF0aW9uczItZGV0YWlscyIga2V5PSJkb2N1bWVudGF0aW9uIiB2YWx1ZT0iV2hlbiB0aGUgwqtvcHRpb25hbMK7IHN0ZXJlb3R5cGUgaXMgYXBwbGllZCB0byBwYXJhbWV0ZXJzLCB0aGUgbG93ZXIgbXVsdGlwbGljaXR5IG11c3QgYmUgZXF1YWwgdG8gemVyby4gVGhpcyBtZWFucyB0aGUgcGFyYW1ldGVyIGlzIG5vdCByZXF1aXJlZCB0byBoYXZlIGEgdmFsdWUgZm9yIHRoZSBhY3Rpdml0eSBvciBhbnkgYmVoYXZpb3IgdG8gYmVnaW4gb3IgZW5kIGV4ZWN1dGlvbi4gT3RoZXJ3aXNlLCB0aGUgbG93ZXIgbXVsdGlwbGljaXR5IG11c3QgYmUgZ3JlYXRlciB0aGFuIHplcm8sIHdoaWNoIGlzIGNhbGxlZCDigJxyZXF1aXJlZC7igJ0iLz4NCisgICAgICAgICAgICA8L2VBbm5vdGF0aW9ucz4NCisgICAgICAgICAgICA8ZVN0cnVjdHVyYWxGZWF0dXJlcyB4bWk6dHlwZT0iZWNvcmU6RVJlZmVyZW5jZSIgeG1pOmlkPSJQcm9maWxlRGVmaW5pdGlvbi1TeXNNTC1BY3Rpdml0aWVzLU9wdGlvbmFsLWJhc2VfUGFyYW1ldGVyIiBuYW1lPSJiYXNlX1BhcmFtZXRlciIgb3JkZXJlZD0iZmFsc2UiPg0KKyAgICAgICAgICAgICAgPGVUeXBlIHhtaTp0eXBlPSJlY29yZTpFQ2xhc3MiIGhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvdW1sMi81LjAuMC9VTUwjLy9QYXJhbWV0ZXIiLz4NCisgICAgICAgICAgICA8L2VTdHJ1Y3R1cmFsRmVhdHVyZXM+DQorICAgICAgICAgIDwvZUNsYXNzaWZpZXJzPg0KKyAgICAgICAgPC9lU3VicGFja2FnZXM+DQorICAgICAgICA8ZVN1YnBhY2thZ2VzIHhtaTppZD0iUHJvZmlsZURlZmluaXRpb24tU3lzTUwtTW9kZWxFbGVtZW50cyIgbmFtZT0iTW9kZWxFbGVtZW50cyIgbnNVUkk9Imh0dHA6Ly8vU3lzTUwvTW9kZWxFbGVtZW50cy5lY29yZSIgbnNQcmVmaXg9IlN5c01MLk1vZGVsRWxlbWVudHMiPg0KKyAgICAgICAgICA8ZUFubm90YXRpb25zIHhtaTppZD0iUHJvZmlsZURlZmluaXRpb24tU3lzTUwtTW9kZWxFbGVtZW50cy1lQW5ub3RhdGlvbnMiIHNvdXJjZT0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy91bWwyLzQuMC4wL1VNTCIgcmVmZXJlbmNlcz0iU3lzTUwtTW9kZWxFbGVtZW50cyIvPg0KKyAgICAgICAgICA8ZUNsYXNzaWZpZXJzIHhtaTp0eXBlPSJlY29yZTpFQ2xhc3MiIHhtaTppZD0iUHJvZmlsZURlZmluaXRpb24tU3lzTUwtTW9kZWxFbGVtZW50cy1SYXRpb25hbGUiIG5hbWU9IlJhdGlvbmFsZSI+DQorICAgICAgICAgICAgPGVBbm5vdGF0aW9ucyB4bWk6aWQ9IlByb2ZpbGVEZWZpbml0aW9uLVN5c01MLU1vZGVsRWxlbWVudHMtUmF0aW9uYWxlLWVBbm5vdGF0aW9uczEiIHNvdXJjZT0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy91bWwyLzIuMC4wL1VNTCIgcmVmZXJlbmNlcz0iU3lzTUwtTW9kZWxFbGVtZW50cy1SYXRpb25hbGUiLz4NCisgICAgICAgICAgICA8ZUFubm90YXRpb25zIHhtaTppZD0iUHJvZmlsZURlZmluaXRpb24tU3lzTUwtTW9kZWxFbGVtZW50cy1SYXRpb25hbGUtZUFubm90YXRpb25zMiIgc291cmNlPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2VtZi8yMDAyL0dlbk1vZGVsIj4NCisgICAgICAgICAgICAgIDxkZXRhaWxzIHhtaTppZD0iUHJvZmlsZURlZmluaXRpb24tU3lzTUwtTW9kZWxFbGVtZW50cy1SYXRpb25hbGUtZUFubm90YXRpb25zMi1kZXRhaWxzIiBrZXk9ImRvY3VtZW50YXRpb24iIHZhbHVlPSJBIFJhdGlvbmFsZSBkb2N1bWVudHMgdGhlIGp1c3RpZmljYXRpb24gZm9yIGRlY2lzaW9ucyBhbmQgdGhlIHJlcXVpcmVtZW50cywgZGVzaWduLCBhbmQgb3RoZXIgZGVjaXNpb25zLiBBIFJhdGlvbmFsZSBjYW4gYmUgYXR0YWNoZWQgdG8gYW55IG1vZGVsIGVsZW1lbnQgaW5jbHVkaW5nIHJlbGF0aW9uc2hpcHMuIEl0IGFsbG93cyB0aGUgdXNlciwgZm9yIGV4YW1wbGUsIHRvIHNwZWNpZnkgYSByYXRpb25hbGUgdGhhdCBtYXkgcmVmZXJlbmNlIG1vcmUgZGV0YWlsZWQgZG9jdW1lbnRhdGlvbiBzdWNoIGFzIGEgdHJhZGUgc3R1ZHkgb3IgYW5hbHlzaXMgcmVwb3J0LiBSYXRpb25hbGUgaXMgYSBzdGVyZW90eXBlIG9mIGNvbW1lbnQgYW5kIG1heSBiZSBhdHRhY2hlZCB0byBhbnkgb3RoZXIgbW9kZWwgZWxlbWVudCBpbiB0aGUgc2FtZSBtYW5uZXIgYXMgYSBjb21tZW50LiIvPg0KKyAgICAgICAgICAgIDwvZUFubm90YXRpb25zPg0KKyAgICAgICAgICAgIDxlU3RydWN0dXJhbEZlYXR1cmVzIHhtaTp0eXBlPSJlY29yZTpFUmVmZXJlbmNlIiB4bWk6aWQ9IlByb2ZpbGVEZWZpbml0aW9uLVN5c01MLU1vZGVsRWxlbWVudHMtUmF0aW9uYWxlLWJhc2VfQ29tbWVudCIgbmFtZT0iYmFzZV9Db21tZW50IiBvcmRlcmVkPSJmYWxzZSI+DQorICAgICAgICAgICAgICA8ZVR5cGUgeG1pOnR5cGU9ImVjb3JlOkVDbGFzcyIgaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy91bWwyLzUuMC4wL1VNTCMvL0NvbW1lbnQiLz4NCisgICAgICAgICAgICA8L2VTdHJ1Y3R1cmFsRmVhdHVyZXM+DQorICAgICAgICAgIDwvZUNsYXNzaWZpZXJzPg0KKyAgICAgICAgICA8ZUNsYXNzaWZpZXJzIHhtaTp0eXBlPSJlY29yZTpFQ2xhc3MiIHhtaTppZD0iUHJvZmlsZURlZmluaXRpb24tU3lzTUwtTW9kZWxFbGVtZW50cy1WaWV3IiBuYW1lPSJWaWV3Ij4NCisgICAgICAgICAgICA8ZUFubm90YXRpb25zIHhtaTppZD0iUHJvZmlsZURlZmluaXRpb24tU3lzTUwtTW9kZWxFbGVtZW50cy1WaWV3LWVBbm5vdGF0aW9uczEiIHNvdXJjZT0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy91bWwyLzIuMC4wL1VNTCIgcmVmZXJlbmNlcz0iU3lzTUwtTW9kZWxFbGVtZW50cy1WaWV3Ii8+DQorICAgICAgICAgICAgPGVBbm5vdGF0aW9ucyB4bWk6aWQ9IlByb2ZpbGVEZWZpbml0aW9uLVN5c01MLU1vZGVsRWxlbWVudHMtVmlldy1lQW5ub3RhdGlvbnMyIiBzb3VyY2U9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvZW1mLzIwMDIvR2VuTW9kZWwiPg0KKyAgICAgICAgICAgICAgPGRldGFpbHMgeG1pOmlkPSJQcm9maWxlRGVmaW5pdGlvbi1TeXNNTC1Nb2RlbEVsZW1lbnRzLVZpZXctZUFubm90YXRpb25zMi1kZXRhaWxzIiBrZXk9ImRvY3VtZW50YXRpb24iIHZhbHVlPSJBIFZpZXcgaXMgYSByZXByZXNlbnRhdGlvbiBvZiBhIHdob2xlIHN5c3RlbSBvciBzdWJzeXN0ZW0gZnJvbSB0aGUgcGVyc3BlY3RpdmUgb2YgYSBzaW5nbGUgdmlld3BvaW50LiBWaWV3cyBhcmUgYWxsb3dlZCB0byBpbXBvcnQgb3RoZXIgZWxlbWVudHMgaW5jbHVkaW5nIG90aGVyIHBhY2thZ2VzIGFuZCBvdGhlciB2aWV3cyB0aGF0IGNvbmZvcm0gdG8gdGhlIHZpZXdwb2ludC4iLz4NCisgICAgICAgICAgICA8L2VBbm5vdGF0aW9ucz4NCisgICAgICAgICAgICA8ZVN0cnVjdHVyYWxGZWF0dXJlcyB4bWk6dHlwZT0iZWNvcmU6RVJlZmVyZW5jZSIgeG1pOmlkPSJQcm9maWxlRGVmaW5pdGlvbi1TeXNNTC1Nb2RlbEVsZW1lbnRzLVZpZXctYmFzZV9QYWNrYWdlIiBuYW1lPSJiYXNlX1BhY2thZ2UiIG9yZGVyZWQ9ImZhbHNlIj4NCisgICAgICAgICAgICAgIDxlVHlwZSB4bWk6dHlwZT0iZWNvcmU6RUNsYXNzIiBocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3VtbDIvNS4wLjAvVU1MIy8vUGFja2FnZSIvPg0KKyAgICAgICAgICAgIDwvZVN0cnVjdHVyYWxGZWF0dXJlcz4NCisgICAgICAgICAgICA8ZVN0cnVjdHVyYWxGZWF0dXJlcyB4bWk6dHlwZT0iZWNvcmU6RVJlZmVyZW5jZSIgeG1pOmlkPSJQcm9maWxlRGVmaW5pdGlvbi1TeXNNTC1Nb2RlbEVsZW1lbnRzLVZpZXctdmlld1BvaW50IiBuYW1lPSJ2aWV3UG9pbnQiIG9yZGVyZWQ9ImZhbHNlIiBsb3dlckJvdW5kPSIxIiBlVHlwZT0iUHJvZmlsZURlZmluaXRpb24tU3lzTUwtTW9kZWxFbGVtZW50cy1WaWV3cG9pbnQiIHZvbGF0aWxlPSJ0cnVlIiB0cmFuc2llbnQ9InRydWUiIGRlcml2ZWQ9InRydWUiPg0KKyAgICAgICAgICAgICAgPGVBbm5vdGF0aW9ucyB4bWk6aWQ9IlByb2ZpbGVEZWZpbml0aW9uLVN5c01MLU1vZGVsRWxlbWVudHMtVmlldy12aWV3UG9pbnQtZUFubm90YXRpb25zIiBzb3VyY2U9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvZW1mLzIwMDIvR2VuTW9kZWwiPg0KKyAgICAgICAgICAgICAgICA8ZGV0YWlscyB4bWk6aWQ9IlByb2ZpbGVEZWZpbml0aW9uLVN5c01MLU1vZGVsRWxlbWVudHMtVmlldy12aWV3UG9pbnQtZUFubm90YXRpb25zLWRldGFpbHMiIGtleT0iZG9jdW1lbnRhdGlvbiIgdmFsdWU9IlRoZSB2aWV3cG9pbnQgZm9yIHRoaXMgVmlldywgZGVyaXZlZCBmcm9tIHRoZSBzdXBwbGllciBvZiB0aGUgwqtjb25mb3JtwrsgZGVwZW5kZW5jeSB3aG9zZSBjbGllbnQgaXMgdGhpcyBWaWV3LiIvPg0KKyAgICAgICAgICAgICAgPC9lQW5ub3RhdGlvbnM+DQorICAgICAgICAgICAgPC9lU3RydWN0dXJhbEZlYXR1cmVzPg0KKyAgICAgICAgICAgIDxlU3RydWN0dXJhbEZlYXR1cmVzIHhtaTp0eXBlPSJlY29yZTpFUmVmZXJlbmNlIiB4bWk6aWQ9IlByb2ZpbGVEZWZpbml0aW9uLVN5c01MLU1vZGVsRWxlbWVudHMtVmlldy1zdGFrZWhvbGRlciIgbmFtZT0ic3Rha2Vob2xkZXIiIG9yZGVyZWQ9ImZhbHNlIiBsb3dlckJvdW5kPSIxIiB1cHBlckJvdW5kPSItMSIgZVR5cGU9IlByb2ZpbGVEZWZpbml0aW9uLVN5c01MLU1vZGVsRWxlbWVudHMtU3Rha2Vob2xkZXIiIHZvbGF0aWxlPSJ0cnVlIiB0cmFuc2llbnQ9InRydWUiIGRlcml2ZWQ9InRydWUiLz4NCisgICAgICAgICAgICA8ZVN0cnVjdHVyYWxGZWF0dXJlcyB4bWk6dHlwZT0iZWNvcmU6RVJlZmVyZW5jZSIgeG1pOmlkPSJQcm9maWxlRGVmaW5pdGlvbi1TeXNNTC1Nb2RlbEVsZW1lbnRzLVZpZXctYmFzZV9DbGFzcyIgbmFtZT0iYmFzZV9DbGFzcyIgb3JkZXJlZD0iZmFsc2UiPg0KKyAgICAgICAgICAgICAgPGVUeXBlIHhtaTp0eXBlPSJlY29yZTpFQ2xhc3MiIGhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvdW1sMi81LjAuMC9VTUwjLy9DbGFzcyIvPg0KKyAgICAgICAgICAgIDwvZVN0cnVjdHVyYWxGZWF0dXJlcz4NCisgICAgICAgICAgPC9lQ2xhc3NpZmllcnM+DQorICAgICAgICAgIDxlQ2xhc3NpZmllcnMgeG1pOnR5cGU9ImVjb3JlOkVDbGFzcyIgeG1pOmlkPSJQcm9maWxlRGVmaW5pdGlvbi1TeXNNTC1Nb2RlbEVsZW1lbnRzLVZpZXdwb2ludCIgbmFtZT0iVmlld3BvaW50Ij4NCisgICAgICAgICAgICA8ZUFubm90YXRpb25zIHhtaTppZD0iUHJvZmlsZURlZmluaXRpb24tU3lzTUwtTW9kZWxFbGVtZW50cy1WaWV3cG9pbnQtZUFubm90YXRpb25zMSIgc291cmNlPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3VtbDIvMi4wLjAvVU1MIiByZWZlcmVuY2VzPSJTeXNNTC1Nb2RlbEVsZW1lbnRzLVZpZXdwb2ludCIvPg0KKyAgICAgICAgICAgIDxlQW5ub3RhdGlvbnMgeG1pOmlkPSJQcm9maWxlRGVmaW5pdGlvbi1TeXNNTC1Nb2RlbEVsZW1lbnRzLVZpZXdwb2ludC1lQW5ub3RhdGlvbnMyIiBzb3VyY2U9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvZW1mLzIwMDIvR2VuTW9kZWwiPg0KKyAgICAgICAgICAgICAgPGRldGFpbHMgeG1pOmlkPSJQcm9maWxlRGVmaW5pdGlvbi1TeXNNTC1Nb2RlbEVsZW1lbnRzLVZpZXdwb2ludC1lQW5ub3RhdGlvbnMyLWRldGFpbHMiIGtleT0iZG9jdW1lbnRhdGlvbiIgdmFsdWU9IkEgVmlld3BvaW50IGlzIGEgc3BlY2lmaWNhdGlvbiBvZiB0aGUgY29udmVudGlvbnMgYW5kIHJ1bGVzIGZvciBjb25zdHJ1Y3RpbmcgYW5kIHVzaW5nIGEgdmlldyBmb3IgdGhlIHB1cnBvc2Ugb2YgYWRkcmVzc2luZyBhIHNldCBvZiBzdGFrZWhvbGRlciBjb25jZXJucy4gVGhlIGxhbmd1YWdlcyBhbmQgbWV0aG9kcyBmb3Igc3BlY2lmeWluZyBhIHZpZXcgbWF5IHJlZmVyZW5jZSBsYW5ndWFnZXMgYW5kIG1ldGhvZHMgaW4gYW5vdGhlciB2aWV3cG9pbnQuIFRoZXkgc3BlY2lmeSB0aGUgZWxlbWVudHMgZXhwZWN0ZWQgdG8gYmUgcmVwcmVzZW50ZWQgaW4gdGhlIHZpZXcsIGFuZCBtYXkgYmUgZm9ybWFsbHkgb3IgaW5mb3JtYWxseSBkZWZpbmVkLiBGb3IgZXhhbXBsZSwgdGhlIHNlY3VyaXR5IHZpZXdwb2ludCBtYXkgcmVxdWlyZSB0aGUgc2VjdXJpdHkgcmVxdWlyZW1lbnRzLCBzZWN1cml0eSBmdW5jdGlvbmFsIGFuZCBwaHlzaWNhbCBhcmNoaXRlY3R1cmUsIGFuZCBzZWN1cml0eSB0ZXN0IGNhc2VzLiIvPg0KKyAgICAgICAgICAgIDwvZUFubm90YXRpb25zPg0KKyAgICAgICAgICAgIDxlU3RydWN0dXJhbEZlYXR1cmVzIHhtaTp0eXBlPSJlY29yZTpFUmVmZXJlbmNlIiB4bWk6aWQ9IlByb2ZpbGVEZWZpbml0aW9uLVN5c01MLU1vZGVsRWxlbWVudHMtVmlld3BvaW50LWJhc2VfQ2xhc3MiIG5hbWU9ImJhc2VfQ2xhc3MiIG9yZGVyZWQ9ImZhbHNlIj4NCisgICAgICAgICAgICAgIDxlVHlwZSB4bWk6dHlwZT0iZWNvcmU6RUNsYXNzIiBocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3VtbDIvNS4wLjAvVU1MIy8vQ2xhc3MiLz4NCisgICAgICAgICAgICA8L2VTdHJ1Y3R1cmFsRmVhdHVyZXM+DQorICAgICAgICAgICAgPGVTdHJ1Y3R1cmFsRmVhdHVyZXMgeG1pOnR5cGU9ImVjb3JlOkVSZWZlcmVuY2UiIHhtaTppZD0iUHJvZmlsZURlZmluaXRpb24tU3lzTUwtTW9kZWxFbGVtZW50cy1WaWV3cG9pbnQtc3Rha2Vob2xkZXIiIG5hbWU9InN0YWtlaG9sZGVyIiBvcmRlcmVkPSJmYWxzZSIgbG93ZXJCb3VuZD0iMSIgdXBwZXJCb3VuZD0iLTEiIGVUeXBlPSJQcm9maWxlRGVmaW5pdGlvbi1TeXNNTC1Nb2RlbEVsZW1lbnRzLVN0YWtlaG9sZGVyIj4NCisgICAgICAgICAgICAgIDxlQW5ub3RhdGlvbnMgeG1pOmlkPSJQcm9maWxlRGVmaW5pdGlvbi1TeXNNTC1Nb2RlbEVsZW1lbnRzLVZpZXdwb2ludC1zdGFrZWhvbGRlci1lQW5ub3RhdGlvbnMiIHNvdXJjZT0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9lbWYvMjAwMi9HZW5Nb2RlbCI+DQorICAgICAgICAgICAgICAgIDxkZXRhaWxzIHhtaTppZD0iUHJvZmlsZURlZmluaXRpb24tU3lzTUwtTW9kZWxFbGVtZW50cy1WaWV3cG9pbnQtc3Rha2Vob2xkZXItZUFubm90YXRpb25zLWRldGFpbHMiIGtleT0iZG9jdW1lbnRhdGlvbiIgdmFsdWU9IlNldCBvZiBzdGFrZWhvbGRlcnMuIi8+DQorICAgICAgICAgICAgICA8L2VBbm5vdGF0aW9ucz4NCisgICAgICAgICAgICA8L2VTdHJ1Y3R1cmFsRmVhdHVyZXM+DQorICAgICAgICAgICAgPGVTdHJ1Y3R1cmFsRmVhdHVyZXMgeG1pOnR5cGU9ImVjb3JlOkVBdHRyaWJ1dGUiIHhtaTppZD0iUHJvZmlsZURlZmluaXRpb24tU3lzTUwtTW9kZWxFbGVtZW50cy1WaWV3cG9pbnQtcHVycG9zZSIgbmFtZT0icHVycG9zZSIgb3JkZXJlZD0iZmFsc2UiIGxvd2VyQm91bmQ9IjEiPg0KKyAgICAgICAgICAgICAgPGVBbm5vdGF0aW9ucyB4bWk6aWQ9IlByb2ZpbGVEZWZpbml0aW9uLVN5c01MLU1vZGVsRWxlbWVudHMtVmlld3BvaW50LXB1cnBvc2UtZUFubm90YXRpb25zIiBzb3VyY2U9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvZW1mLzIwMDIvR2VuTW9kZWwiPg0KKyAgICAgICAgICAgICAgICA8ZGV0YWlscyB4bWk6aWQ9IlByb2ZpbGVEZWZpbml0aW9uLVN5c01MLU1vZGVsRWxlbWVudHMtVmlld3BvaW50LXB1cnBvc2UtZUFubm90YXRpb25zLWRldGFpbHMiIGtleT0iZG9jdW1lbnRhdGlvbiIgdmFsdWU9IlRoZSBwdXJwb3NlIGFkZHJlc3NlcyB0aGUgc3Rha2Vob2xkZXIgY29uY2VybnMuIi8+DQorICAgICAgICAgICAgICA8L2VBbm5vdGF0aW9ucz4NCisgICAgICAgICAgICAgIDxlVHlwZSB4bWk6dHlwZT0iZWNvcmU6RURhdGFUeXBlIiBocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3VtbDIvNS4wLjAvVHlwZXMjLy9TdHJpbmciLz4NCisgICAgICAgICAgICA8L2VTdHJ1Y3R1cmFsRmVhdHVyZXM+DQorICAgICAgICAgICAgPGVTdHJ1Y3R1cmFsRmVhdHVyZXMgeG1pOnR5cGU9ImVjb3JlOkVSZWZlcmVuY2UiIHhtaTppZD0iUHJvZmlsZURlZmluaXRpb24tU3lzTUwtTW9kZWxFbGVtZW50cy1WaWV3cG9pbnQtY29uY2Vybkxpc3QiIG5hbWU9ImNvbmNlcm5MaXN0IiBvcmRlcmVkPSJmYWxzZSIgbG93ZXJCb3VuZD0iMSIgdXBwZXJCb3VuZD0iLTEiPg0KKyAgICAgICAgICAgICAgPGVBbm5vdGF0aW9ucyB4bWk6aWQ9IlByb2ZpbGVEZWZpbml0aW9uLVN5c01MLU1vZGVsRWxlbWVudHMtVmlld3BvaW50LWNvbmNlcm5MaXN0LWVBbm5vdGF0aW9ucyIgc291cmNlPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2VtZi8yMDAyL0dlbk1vZGVsIj4NCisgICAgICAgICAgICAgICAgPGRldGFpbHMgeG1pOmlkPSJQcm9maWxlRGVmaW5pdGlvbi1TeXNNTC1Nb2RlbEVsZW1lbnRzLVZpZXdwb2ludC1jb25jZXJuTGlzdC1lQW5ub3RhdGlvbnMtZGV0YWlscyIga2V5PSJkb2N1bWVudGF0aW9uIiB2YWx1ZT0iVGhlIGludGVyZXN0IG9mIHRoZSBzdGFrZWhvbGRlcnMuIi8+DQorICAgICAgICAgICAgICA8L2VBbm5vdGF0aW9ucz4NCisgICAgICAgICAgICAgIDxlVHlwZSB4bWk6dHlwZT0iZWNvcmU6RUNsYXNzIiBocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3VtbDIvNS4wLjAvVU1MIy8vQ29tbWVudCIvPg0KKyAgICAgICAgICAgIDwvZVN0cnVjdHVyYWxGZWF0dXJlcz4NCisgICAgICAgICAgICA8ZVN0cnVjdHVyYWxGZWF0dXJlcyB4bWk6dHlwZT0iZWNvcmU6RUF0dHJpYnV0ZSIgeG1pOmlkPSJQcm9maWxlRGVmaW5pdGlvbi1TeXNNTC1Nb2RlbEVsZW1lbnRzLVZpZXdwb2ludC1sYW5ndWFnZSIgbmFtZT0ibGFuZ3VhZ2UiIG9yZGVyZWQ9ImZhbHNlIiBsb3dlckJvdW5kPSIxIiB1cHBlckJvdW5kPSItMSI+DQorICAgICAgICAgICAgICA8ZUFubm90YXRpb25zIHhtaTppZD0iUHJvZmlsZURlZmluaXRpb24tU3lzTUwtTW9kZWxFbGVtZW50cy1WaWV3cG9pbnQtbGFuZ3VhZ2UtZUFubm90YXRpb25zIiBzb3VyY2U9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvZW1mLzIwMDIvR2VuTW9kZWwiPg0KKyAgICAgICAgICAgICAgICA8ZGV0YWlscyB4bWk6aWQ9IlByb2ZpbGVEZWZpbml0aW9uLVN5c01MLU1vZGVsRWxlbWVudHMtVmlld3BvaW50LWxhbmd1YWdlLWVBbm5vdGF0aW9ucy1kZXRhaWxzIiBrZXk9ImRvY3VtZW50YXRpb24iIHZhbHVlPSJUaGUgbGFuZ3VhZ2VzIHVzZWQgdG8gY29uc3RydWN0IHRoZSB2aWV3cG9pbnQuIi8+DQorICAgICAgICAgICAgICA8L2VBbm5vdGF0aW9ucz4NCisgICAgICAgICAgICAgIDxlVHlwZSB4bWk6dHlwZT0iZWNvcmU6RURhdGFUeXBlIiBocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3VtbDIvNS4wLjAvVHlwZXMjLy9TdHJpbmciLz4NCisgICAgICAgICAgICA8L2VTdHJ1Y3R1cmFsRmVhdHVyZXM+DQorICAgICAgICAgICAgPGVTdHJ1Y3R1cmFsRmVhdHVyZXMgeG1pOnR5cGU9ImVjb3JlOkVSZWZlcmVuY2UiIHhtaTppZD0iUHJvZmlsZURlZmluaXRpb24tU3lzTUwtTW9kZWxFbGVtZW50cy1WaWV3cG9pbnQtbWV0aG9kIiBuYW1lPSJtZXRob2QiIG9yZGVyZWQ9ImZhbHNlIiBsb3dlckJvdW5kPSIxIiB1cHBlckJvdW5kPSItMSIgdm9sYXRpbGU9InRydWUiIHRyYW5zaWVudD0idHJ1ZSIgZGVyaXZlZD0idHJ1ZSI+DQorICAgICAgICAgICAgICA8ZUFubm90YXRpb25zIHhtaTppZD0iUHJvZmlsZURlZmluaXRpb24tU3lzTUwtTW9kZWxFbGVtZW50cy1WaWV3cG9pbnQtbWV0aG9kLWVBbm5vdGF0aW9ucyIgc291cmNlPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2VtZi8yMDAyL0dlbk1vZGVsIj4NCisgICAgICAgICAgICAgICAgPGRldGFpbHMgeG1pOmlkPSJQcm9maWxlRGVmaW5pdGlvbi1TeXNNTC1Nb2RlbEVsZW1lbnRzLVZpZXdwb2ludC1tZXRob2QtZUFubm90YXRpb25zLWRldGFpbHMiIGtleT0iZG9jdW1lbnRhdGlvbiIgdmFsdWU9IlRoZSBtZXRob2RzIHVzZWQgdG8gY29uc3RydWN0IHRoZSB2aWV3cyBmb3IgdGhpcyB2aWV3cG9pbnQuIi8+DQorICAgICAgICAgICAgICA8L2VBbm5vdGF0aW9ucz4NCisgICAgICAgICAgICAgIDxlVHlwZSB4bWk6dHlwZT0iZWNvcmU6RUNsYXNzIiBocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3VtbDIvNS4wLjAvVU1MIy8vQmVoYXZpb3IiLz4NCisgICAgICAgICAgICA8L2VTdHJ1Y3R1cmFsRmVhdHVyZXM+DQorICAgICAgICAgICAgPGVTdHJ1Y3R1cmFsRmVhdHVyZXMgeG1pOnR5cGU9ImVjb3JlOkVBdHRyaWJ1dGUiIHhtaTppZD0iUHJvZmlsZURlZmluaXRpb24tU3lzTUwtTW9kZWxFbGVtZW50cy1WaWV3cG9pbnQtcHJlc2VudGF0aW9uIiBuYW1lPSJwcmVzZW50YXRpb24iIG9yZGVyZWQ9ImZhbHNlIiBsb3dlckJvdW5kPSIxIiB1cHBlckJvdW5kPSItMSI+DQorICAgICAgICAgICAgICA8ZVR5cGUgeG1pOnR5cGU9ImVjb3JlOkVEYXRhVHlwZSIgaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy91bWwyLzUuMC4wL1R5cGVzIy8vU3RyaW5nIi8+DQorICAgICAgICAgICAgPC9lU3RydWN0dXJhbEZlYXR1cmVzPg0KKyAgICAgICAgICAgIDxlU3RydWN0dXJhbEZlYXR1cmVzIHhtaTp0eXBlPSJlY29yZTpFQXR0cmlidXRlIiB4bWk6aWQ9IlByb2ZpbGVEZWZpbml0aW9uLVN5c01MLU1vZGVsRWxlbWVudHMtVmlld3BvaW50LWNvbmNlcm4iIG5hbWU9ImNvbmNlcm4iIG9yZGVyZWQ9ImZhbHNlIiBsb3dlckJvdW5kPSIxIiB1cHBlckJvdW5kPSItMSIgdm9sYXRpbGU9InRydWUiIHRyYW5zaWVudD0idHJ1ZSIgZGVyaXZlZD0idHJ1ZSI+DQorICAgICAgICAgICAgICA8ZVR5cGUgeG1pOnR5cGU9ImVjb3JlOkVEYXRhVHlwZSIgaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy91bWwyLzUuMC4wL1R5cGVzIy8vU3RyaW5nIi8+DQorICAgICAgICAgICAgPC9lU3RydWN0dXJhbEZlYXR1cmVzPg0KKyAgICAgICAgICA8L2VDbGFzc2lmaWVycz4NCisgICAgICAgICAgPGVDbGFzc2lmaWVycyB4bWk6dHlwZT0iZWNvcmU6RUNsYXNzIiB4bWk6aWQ9IlByb2ZpbGVEZWZpbml0aW9uLVN5c01MLU1vZGVsRWxlbWVudHMtU3Rha2Vob2xkZXIiIG5hbWU9IlN0YWtlaG9sZGVyIj4NCisgICAgICAgICAgICA8ZUFubm90YXRpb25zIHhtaTppZD0iUHJvZmlsZURlZmluaXRpb24tU3lzTUwtTW9kZWxFbGVtZW50cy1TdGFrZWhvbGRlci1lQW5ub3RhdGlvbnMiIHNvdXJjZT0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy91bWwyLzIuMC4wL1VNTCIgcmVmZXJlbmNlcz0iU3lzTUwtTW9kZWxFbGVtZW50cy1TdGFrZWhvbGRlciIvPg0KKyAgICAgICAgICAgIDxlU3RydWN0dXJhbEZlYXR1cmVzIHhtaTp0eXBlPSJlY29yZTpFUmVmZXJlbmNlIiB4bWk6aWQ9IlByb2ZpbGVEZWZpbml0aW9uLVN5c01MLU1vZGVsRWxlbWVudHMtU3Rha2Vob2xkZXItYmFzZV9DbGFzc2lmaWVyIiBuYW1lPSJiYXNlX0NsYXNzaWZpZXIiIG9yZGVyZWQ9ImZhbHNlIj4NCisgICAgICAgICAgICAgIDxlVHlwZSB4bWk6dHlwZT0iZWNvcmU6RUNsYXNzIiBocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3VtbDIvNS4wLjAvVU1MIy8vQ2xhc3NpZmllciIvPg0KKyAgICAgICAgICAgIDwvZVN0cnVjdHVyYWxGZWF0dXJlcz4NCisgICAgICAgICAgICA8ZVN0cnVjdHVyYWxGZWF0dXJlcyB4bWk6dHlwZT0iZWNvcmU6RVJlZmVyZW5jZSIgeG1pOmlkPSJQcm9maWxlRGVmaW5pdGlvbi1TeXNNTC1Nb2RlbEVsZW1lbnRzLVN0YWtlaG9sZGVyLWNvbmNlcm4iIG5hbWU9ImNvbmNlcm4iIG9yZGVyZWQ9ImZhbHNlIiBsb3dlckJvdW5kPSIxIiB1cHBlckJvdW5kPSItMSI+DQorICAgICAgICAgICAgICA8ZVR5cGUgeG1pOnR5cGU9ImVjb3JlOkVDbGFzcyIgaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy91bWwyLzUuMC4wL1VNTCMvL0NvbW1lbnQiLz4NCisgICAgICAgICAgICA8L2VTdHJ1Y3R1cmFsRmVhdHVyZXM+DQorICAgICAgICAgICAgPGVTdHJ1Y3R1cmFsRmVhdHVyZXMgeG1pOnR5cGU9ImVjb3JlOkVSZWZlcmVuY2UiIHhtaTppZD0iUHJvZmlsZURlZmluaXRpb24tU3lzTUwtTW9kZWxFbGVtZW50cy1TdGFrZWhvbGRlci1jb25jZXJuTGlzdCIgbmFtZT0iY29uY2Vybkxpc3QiIG9yZGVyZWQ9ImZhbHNlIiBsb3dlckJvdW5kPSIxIiB2b2xhdGlsZT0idHJ1ZSIgdHJhbnNpZW50PSJ0cnVlIiBkZXJpdmVkPSJ0cnVlIj4NCisgICAgICAgICAgICAgIDxlVHlwZSB4bWk6dHlwZT0iZWNvcmU6RUNsYXNzIiBocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3VtbDIvNS4wLjAvVU1MIy8vQ29tbWVudCIvPg0KKyAgICAgICAgICAgIDwvZVN0cnVjdHVyYWxGZWF0dXJlcz4NCisgICAgICAgICAgPC9lQ2xhc3NpZmllcnM+DQorICAgICAgICAgIDxlQ2xhc3NpZmllcnMgeG1pOnR5cGU9ImVjb3JlOkVDbGFzcyIgeG1pOmlkPSJQcm9maWxlRGVmaW5pdGlvbi1TeXNNTC1Nb2RlbEVsZW1lbnRzLUNvbmZvcm0iIG5hbWU9IkNvbmZvcm0iPg0KKyAgICAgICAgICAgIDxlQW5ub3RhdGlvbnMgeG1pOmlkPSJQcm9maWxlRGVmaW5pdGlvbi1TeXNNTC1Nb2RlbEVsZW1lbnRzLUNvbmZvcm0tZUFubm90YXRpb25zMSIgc291cmNlPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3VtbDIvMi4wLjAvVU1MIiByZWZlcmVuY2VzPSJTeXNNTC1Nb2RlbEVsZW1lbnRzLUNvbmZvcm0iLz4NCisgICAgICAgICAgICA8ZUFubm90YXRpb25zIHhtaTppZD0iUHJvZmlsZURlZmluaXRpb24tU3lzTUwtTW9kZWxFbGVtZW50cy1Db25mb3JtLWVBbm5vdGF0aW9uczIiIHNvdXJjZT0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9lbWYvMjAwMi9HZW5Nb2RlbCI+DQorICAgICAgICAgICAgICA8ZGV0YWlscyB4bWk6aWQ9IlByb2ZpbGVEZWZpbml0aW9uLVN5c01MLU1vZGVsRWxlbWVudHMtQ29uZm9ybS1lQW5ub3RhdGlvbnMyLWRldGFpbHMiIGtleT0iZG9jdW1lbnRhdGlvbiIgdmFsdWU9IkEgQ29uZm9ybSByZWxhdGlvbnNoaXAgaXMgYSBkZXBlbmRlbmN5IGJldHdlZW4gYSB2aWV3IGFuZCBhIHZpZXdwb2ludC4gVGhlIHZpZXcgY29uZm9ybXMgdG8gdGhlIHNwZWNpZmllZCBydWxlcyBhbmQgY29udmVudGlvbnMgZGV0YWlsZWQgaW4gdGhlIHZpZXdwb2ludC4gQ29uZm9ybSBpcyBhIHNwZWNpYWxpemF0aW9uIG9mIHRoZSBVTUwgZGVwZW5kZW5jeSwgYW5kIGFzIHdpdGggb3RoZXIgZGVwZW5kZW5jaWVzIHRoZSBhcnJvdyBkaXJlY3Rpb24gcG9pbnRzIGZyb20gdGhlIChjbGllbnQvc291cmNlKSB0byB0aGUgKHN1cHBsaWVyL3RhcmdldCkuIi8+DQorICAgICAgICAgICAgPC9lQW5ub3RhdGlvbnM+DQorICAgICAgICAgICAgPGVTdHJ1Y3R1cmFsRmVhdHVyZXMgeG1pOnR5cGU9ImVjb3JlOkVSZWZlcmVuY2UiIHhtaTppZD0iUHJvZmlsZURlZmluaXRpb24tU3lzTUwtTW9kZWxFbGVtZW50cy1Db25mb3JtLWJhc2VfRGVwZW5kZW5jeSIgbmFtZT0iYmFzZV9EZXBlbmRlbmN5IiBvcmRlcmVkPSJmYWxzZSI+DQorICAgICAgICAgICAgICA8ZVR5cGUgeG1pOnR5cGU9ImVjb3JlOkVDbGFzcyIgaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy91bWwyLzUuMC4wL1VNTCMvL0RlcGVuZGVuY3kiLz4NCisgICAgICAgICAgICA8L2VTdHJ1Y3R1cmFsRmVhdHVyZXM+DQorICAgICAgICAgICAgPGVTdHJ1Y3R1cmFsRmVhdHVyZXMgeG1pOnR5cGU9ImVjb3JlOkVSZWZlcmVuY2UiIHhtaTppZD0iUHJvZmlsZURlZmluaXRpb24tU3lzTUwtTW9kZWxFbGVtZW50cy1Db25mb3JtLWJhc2VfR2VuZXJhbGl6YXRpb24iIG5hbWU9ImJhc2VfR2VuZXJhbGl6YXRpb24iIG9yZGVyZWQ9ImZhbHNlIj4NCisgICAgICAgICAgICAgIDxlVHlwZSB4bWk6dHlwZT0iZWNvcmU6RUNsYXNzIiBocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3VtbDIvNS4wLjAvVU1MIy8vR2VuZXJhbGl6YXRpb24iLz4NCisgICAgICAgICAgICA8L2VTdHJ1Y3R1cmFsRmVhdHVyZXM+DQorICAgICAgICAgIDwvZUNsYXNzaWZpZXJzPg0KKyAgICAgICAgICA8ZUNsYXNzaWZpZXJzIHhtaTp0eXBlPSJlY29yZTpFQ2xhc3MiIHhtaTppZD0iUHJvZmlsZURlZmluaXRpb24tU3lzTUwtTW9kZWxFbGVtZW50cy1Qcm9ibGVtIiBuYW1lPSJQcm9ibGVtIj4NCisgICAgICAgICAgICA8ZUFubm90YXRpb25zIHhtaTppZD0iUHJvZmlsZURlZmluaXRpb24tU3lzTUwtTW9kZWxFbGVtZW50cy1Qcm9ibGVtLWVBbm5vdGF0aW9uczEiIHNvdXJjZT0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy91bWwyLzIuMC4wL1VNTCIgcmVmZXJlbmNlcz0iU3lzTUwtTW9kZWxFbGVtZW50cy1Qcm9ibGVtIi8+DQorICAgICAgICAgICAgPGVBbm5vdGF0aW9ucyB4bWk6aWQ9IlByb2ZpbGVEZWZpbml0aW9uLVN5c01MLU1vZGVsRWxlbWVudHMtUHJvYmxlbS1lQW5ub3RhdGlvbnMyIiBzb3VyY2U9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvZW1mLzIwMDIvR2VuTW9kZWwiPg0KKyAgICAgICAgICAgICAgPGRldGFpbHMgeG1pOmlkPSJQcm9maWxlRGVmaW5pdGlvbi1TeXNNTC1Nb2RlbEVsZW1lbnRzLVByb2JsZW0tZUFubm90YXRpb25zMi1kZXRhaWxzIiBrZXk9ImRvY3VtZW50YXRpb24iIHZhbHVlPSJBIFByb2JsZW0gZG9jdW1lbnRzIGEgZGVmaWNpZW5jeSwgbGltaXRhdGlvbiwgb3IgZmFpbHVyZSBvZiBvbmUgb3IgbW9yZSBtb2RlbCBlbGVtZW50cyB0byBzYXRpc2Z5IGEgcmVxdWlyZW1lbnQgb3IgbmVlZCwgb3Igb3RoZXIgdW5kZXNpcmVkIG91dGNvbWUuIEl0IG1heSBiZSB1c2VkIHRvIGNhcHR1cmUgcHJvYmxlbXMgaWRlbnRpZmllZCBkdXJpbmcgYW5hbHlzaXMsIGRlc2lnbiwgdmVyaWZpY2F0aW9uLCBvciBtYW51ZmFjdHVyZSBhbmQgYXNzb2NpYXRlIHRoZSBwcm9ibGVtIHdpdGggdGhlIHJlbGV2YW50IG1vZGVsIGVsZW1lbnRzLiBQcm9ibGVtIGlzIGEgc3RlcmVvdHlwZSBvZiBjb21tZW50IGFuZCBtYXkgYmUgYXR0YWNoZWQgdG8gYW55IG90aGVyIG1vZGVsIGVsZW1lbnQgaW4gdGhlIHNhbWUgbWFubmVyIGFzIGEgY29tbWVudC4iLz4NCisgICAgICAgICAgICA8L2VBbm5vdGF0aW9ucz4NCisgICAgICAgICAgICA8ZVN0cnVjdHVyYWxGZWF0dXJlcyB4bWk6dHlwZT0iZWNvcmU6RVJlZmVyZW5jZSIgeG1pOmlkPSJQcm9maWxlRGVmaW5pdGlvbi1TeXNNTC1Nb2RlbEVsZW1lbnRzLVByb2JsZW0tYmFzZV9Db21tZW50IiBuYW1lPSJiYXNlX0NvbW1lbnQiIG9yZGVyZWQ9ImZhbHNlIj4NCisgICAgICAgICAgICAgIDxlVHlwZSB4bWk6dHlwZT0iZWNvcmU6RUNsYXNzIiBocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3VtbDIvNS4wLjAvVU1MIy8vQ29tbWVudCIvPg0KKyAgICAgICAgICAgIDwvZVN0cnVjdHVyYWxGZWF0dXJlcz4NCisgICAgICAgICAgPC9lQ2xhc3NpZmllcnM+DQorICAgICAgICAgIDxlQ2xhc3NpZmllcnMgeG1pOnR5cGU9ImVjb3JlOkVDbGFzcyIgeG1pOmlkPSJQcm9maWxlRGVmaW5pdGlvbi1TeXNNTC1Nb2RlbEVsZW1lbnRzLUV4cG9zZSIgbmFtZT0iRXhwb3NlIj4NCisgICAgICAgICAgICA8ZUFubm90YXRpb25zIHhtaTppZD0iUHJvZmlsZURlZmluaXRpb24tU3lzTUwtTW9kZWxFbGVtZW50cy1FeHBvc2UtZUFubm90YXRpb25zIiBzb3VyY2U9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvdW1sMi8yLjAuMC9VTUwiIHJlZmVyZW5jZXM9IlN5c01MLU1vZGVsRWxlbWVudHMtRXhwb3NlIi8+DQorICAgICAgICAgICAgPGVTdHJ1Y3R1cmFsRmVhdHVyZXMgeG1pOnR5cGU9ImVjb3JlOkVSZWZlcmVuY2UiIHhtaTppZD0iUHJvZmlsZURlZmluaXRpb24tU3lzTUwtTW9kZWxFbGVtZW50cy1FeHBvc2UtYmFzZV9EZXBlbmRlbmN5IiBuYW1lPSJiYXNlX0RlcGVuZGVuY3kiIG9yZGVyZWQ9ImZhbHNlIj4NCisgICAgICAgICAgICAgIDxlVHlwZSB4bWk6dHlwZT0iZWNvcmU6RUNsYXNzIiBocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3VtbDIvNS4wLjAvVU1MIy8vRGVwZW5kZW5jeSIvPg0KKyAgICAgICAgICAgIDwvZVN0cnVjdHVyYWxGZWF0dXJlcz4NCisgICAgICAgICAgPC9lQ2xhc3NpZmllcnM+DQorICAgICAgICAgIDxlQ2xhc3NpZmllcnMgeG1pOnR5cGU9ImVjb3JlOkVDbGFzcyIgeG1pOmlkPSJQcm9maWxlRGVmaW5pdGlvbi1TeXNNTC1Nb2RlbEVsZW1lbnRzLUVsZW1lbnRHcm91cCIgbmFtZT0iRWxlbWVudEdyb3VwIj4NCisgICAgICAgICAgICA8ZUFubm90YXRpb25zIHhtaTppZD0iUHJvZmlsZURlZmluaXRpb24tU3lzTUwtTW9kZWxFbGVtZW50cy1FbGVtZW50R3JvdXAtZUFubm90YXRpb25zMSIgc291cmNlPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3VtbDIvMi4wLjAvVU1MIiByZWZlcmVuY2VzPSJTeXNNTC1Nb2RlbEVsZW1lbnRzLUVsZW1lbnRHcm91cCIvPg0KKyAgICAgICAgICAgIDxlQW5ub3RhdGlvbnMgeG1pOmlkPSJQcm9maWxlRGVmaW5pdGlvbi1TeXNNTC1Nb2RlbEVsZW1lbnRzLUVsZW1lbnRHcm91cC1lQW5ub3RhdGlvbnMyIiBzb3VyY2U9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvZW1mLzIwMDIvR2VuTW9kZWwiPg0KKyAgICAgICAgICAgICAgPGRldGFpbHMgeG1pOmlkPSJQcm9maWxlRGVmaW5pdGlvbi1TeXNNTC1Nb2RlbEVsZW1lbnRzLUVsZW1lbnRHcm91cC1lQW5ub3RhdGlvbnMyLWRldGFpbHMiIGtleT0iZG9jdW1lbnRhdGlvbiIgdmFsdWU9IlRoZSBFbGVtZW50R3JvdXAgc3RlcmVvdHlwZSBwcm92aWRlcyBhIGxpZ2h0d2VpZ2h0IG1lY2hhbmlzbSBmb3IgZ3JvdXBpbmcgdmFyaW91cyBhbmQgcG9zc2libHkgaGV0ZXJvZ2VuZW91cyBtb2RlbCBlbGVtZW50cyBieSBleHRlbmRpbmcgdGhlIGNhcGFiaWxpdHkgb2YgY29tbWVudHMgdG8gcmVmZXIgdG8gbXVsdGlwbGUgYW5ub3RhdGVkIGVsZW1lbnRzLiBGb3IgZXhhbXBsZSwgaXQgY2FuIGdyb3VwIGVsZW1lbnRzIHRoYXQgYXJlIGFzc29jaWF0ZWQgd2l0aCBhIHBhcnRpY3VsYXIgcmVsZWFzZSBvZiB0aGUgbW9kZWwsIGhhdmUgYSBjZXJ0YWluIHJpc2sgbGV2ZWwsIG9yIGFyZSBhc3NvY2lhdGVkIHdpdGggYSBsZWdhY3kgZGVzaWduLiIvPg0KKyAgICAgICAgICAgIDwvZUFubm90YXRpb25zPg0KKyAgICAgICAgICAgIDxlT3BlcmF0aW9ucyB4bWk6aWQ9IlByb2ZpbGVEZWZpbml0aW9uLVN5c01MLU1vZGVsRWxlbWVudHMtRWxlbWVudEdyb3VwLWNyaXRlcmlvbjEiIG5hbWU9ImNyaXRlcmlvbiIgb3JkZXJlZD0iZmFsc2UiPg0KKyAgICAgICAgICAgICAgPGVBbm5vdGF0aW9ucyB4bWk6aWQ9IlByb2ZpbGVEZWZpbml0aW9uLVN5c01MLU1vZGVsRWxlbWVudHMtRWxlbWVudEdyb3VwLWNyaXRlcmlvbjEtZUFubm90YXRpb25zIiBzb3VyY2U9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvZW1mLzIwMDIvR2VuTW9kZWwiPg0KKyAgICAgICAgICAgICAgICA8ZGV0YWlscyB4bWk6aWQ9IlByb2ZpbGVEZWZpbml0aW9uLVN5c01MLU1vZGVsRWxlbWVudHMtRWxlbWVudEdyb3VwLWNyaXRlcmlvbjEtZUFubm90YXRpb25zLWRldGFpbHMiIGtleT0iZG9jdW1lbnRhdGlvbiIgdmFsdWU9IlNwZWNpZmllcyB0aGUgcmF0aW9uYWxlIGZvciBiZWluZyBtZW1iZXIgb2YgdGhlIGdyb3VwLiBBZGRpbmcgYW4gZWxlbWVudCB0byB0aGUgZ3JvdXAgYXNzZXJ0cyB0aGF0IHRoZSBjcml0ZXJpb24mI3hBO2FwcGxpZXMgdG8gdGhpcyBlbGVtZW50LiYjeEE7RGVyaXZlZCBmcm9tIENvbW1lbnQ6OmJvZHkuIi8+DQorICAgICAgICAgICAgICA8L2VBbm5vdGF0aW9ucz4NCisgICAgICAgICAgICAgIDxlVHlwZSB4bWk6dHlwZT0iZWNvcmU6RURhdGFUeXBlIiBocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3VtbDIvNS4wLjAvVHlwZXMjLy9TdHJpbmciLz4NCisgICAgICAgICAgICA8L2VPcGVyYXRpb25zPg0KKyAgICAgICAgICAgIDxlT3BlcmF0aW9ucyB4bWk6aWQ9IlByb2ZpbGVEZWZpbml0aW9uLVN5c01MLU1vZGVsRWxlbWVudHMtRWxlbWVudEdyb3VwLXNpemUxIiBuYW1lPSJzaXplIiBvcmRlcmVkPSJmYWxzZSIgbG93ZXJCb3VuZD0iMSI+DQorICAgICAgICAgICAgICA8ZUFubm90YXRpb25zIHhtaTppZD0iUHJvZmlsZURlZmluaXRpb24tU3lzTUwtTW9kZWxFbGVtZW50cy1FbGVtZW50R3JvdXAtc2l6ZTEtZUFubm90YXRpb25zIiBzb3VyY2U9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvZW1mLzIwMDIvR2VuTW9kZWwiPg0KKyAgICAgICAgICAgICAgICA8ZGV0YWlscyB4bWk6aWQ9IlByb2ZpbGVEZWZpbml0aW9uLVN5c01MLU1vZGVsRWxlbWVudHMtRWxlbWVudEdyb3VwLXNpemUxLWVBbm5vdGF0aW9ucy1kZXRhaWxzIiBrZXk9ImRvY3VtZW50YXRpb24iIHZhbHVlPSJOdW1iZXIgb2YgbWVtYmVycyBpbiB0aGUgZ3JvdXAuIERlcml2ZWQuIi8+DQorICAgICAgICAgICAgICA8L2VBbm5vdGF0aW9ucz4NCisgICAgICAgICAgICAgIDxlVHlwZSB4bWk6dHlwZT0iZWNvcmU6RURhdGFUeXBlIiBocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3VtbDIvNS4wLjAvVHlwZXMjLy9JbnRlZ2VyIi8+DQorICAgICAgICAgICAgPC9lT3BlcmF0aW9ucz4NCisgICAgICAgICAgICA8ZU9wZXJhdGlvbnMgeG1pOmlkPSJQcm9maWxlRGVmaW5pdGlvbi1TeXNNTC1Nb2RlbEVsZW1lbnRzLUVsZW1lbnRHcm91cC1tZW1iZXIxIiBuYW1lPSJtZW1iZXIiIG9yZGVyZWQ9ImZhbHNlIiB1cHBlckJvdW5kPSItMSI+DQorICAgICAgICAgICAgICA8ZVR5cGUgeG1pOnR5cGU9ImVjb3JlOkVDbGFzcyIgaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy91bWwyLzUuMC4wL1VNTCMvL0VsZW1lbnQiLz4NCisgICAgICAgICAgICA8L2VPcGVyYXRpb25zPg0KKyAgICAgICAgICAgIDxlT3BlcmF0aW9ucyB4bWk6aWQ9IlByb2ZpbGVEZWZpbml0aW9uLVN5c01MLU1vZGVsRWxlbWVudHMtRWxlbWVudEdyb3VwLWFsbEdyb3VwcyIgbmFtZT0iYWxsR3JvdXBzIiBvcmRlcmVkPSJmYWxzZSIgdXBwZXJCb3VuZD0iLTEiIGVUeXBlPSJQcm9maWxlRGVmaW5pdGlvbi1TeXNNTC1Nb2RlbEVsZW1lbnRzLUVsZW1lbnRHcm91cCI+DQorICAgICAgICAgICAgICA8ZVBhcmFtZXRlcnMgeG1pOmlkPSJQcm9maWxlRGVmaW5pdGlvbi1TeXNNTC1Nb2RlbEVsZW1lbnRzLUVsZW1lbnRHcm91cC1hbGxHcm91cHMtZSIgbmFtZT0iZSIgb3JkZXJlZD0iZmFsc2UiIGxvd2VyQm91bmQ9IjEiPg0KKyAgICAgICAgICAgICAgICA8ZVR5cGUgeG1pOnR5cGU9ImVjb3JlOkVDbGFzcyIgaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy91bWwyLzUuMC4wL1VNTCMvL0VsZW1lbnQiLz4NCisgICAgICAgICAgICAgIDwvZVBhcmFtZXRlcnM+DQorICAgICAgICAgICAgPC9lT3BlcmF0aW9ucz4NCisgICAgICAgICAgICA8ZVN0cnVjdHVyYWxGZWF0dXJlcyB4bWk6dHlwZT0iZWNvcmU6RVJlZmVyZW5jZSIgeG1pOmlkPSJQcm9maWxlRGVmaW5pdGlvbi1TeXNNTC1Nb2RlbEVsZW1lbnRzLUVsZW1lbnRHcm91cC1iYXNlX0NvbW1lbnQiIG5hbWU9ImJhc2VfQ29tbWVudCIgb3JkZXJlZD0iZmFsc2UiPg0KKyAgICAgICAgICAgICAgPGVUeXBlIHhtaTp0eXBlPSJlY29yZTpFQ2xhc3MiIGhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvdW1sMi81LjAuMC9VTUwjLy9Db21tZW50Ii8+DQorICAgICAgICAgICAgPC9lU3RydWN0dXJhbEZlYXR1cmVzPg0KKyAgICAgICAgICAgIDxlU3RydWN0dXJhbEZlYXR1cmVzIHhtaTp0eXBlPSJlY29yZTpFQXR0cmlidXRlIiB4bWk6aWQ9IlByb2ZpbGVEZWZpbml0aW9uLVN5c01MLU1vZGVsRWxlbWVudHMtRWxlbWVudEdyb3VwLW5hbWUiIG5hbWU9Im5hbWUiIG9yZGVyZWQ9ImZhbHNlIiBsb3dlckJvdW5kPSIxIj4NCisgICAgICAgICAgICAgIDxlVHlwZSB4bWk6dHlwZT0iZWNvcmU6RURhdGFUeXBlIiBocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3VtbDIvNS4wLjAvVHlwZXMjLy9TdHJpbmciLz4NCisgICAgICAgICAgICA8L2VTdHJ1Y3R1cmFsRmVhdHVyZXM+DQorICAgICAgICAgICAgPGVTdHJ1Y3R1cmFsRmVhdHVyZXMgeG1pOnR5cGU9ImVjb3JlOkVBdHRyaWJ1dGUiIHhtaTppZD0iUHJvZmlsZURlZmluaXRpb24tU3lzTUwtTW9kZWxFbGVtZW50cy1FbGVtZW50R3JvdXAtY3JpdGVyaW9uMiIgbmFtZT0iY3JpdGVyaW9uIiBvcmRlcmVkPSJmYWxzZSIgbG93ZXJCb3VuZD0iMSIgdm9sYXRpbGU9InRydWUiIHRyYW5zaWVudD0idHJ1ZSIgZGVyaXZlZD0idHJ1ZSI+DQorICAgICAgICAgICAgICA8ZVR5cGUgeG1pOnR5cGU9ImVjb3JlOkVEYXRhVHlwZSIgaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy91bWwyLzUuMC4wL1R5cGVzIy8vU3RyaW5nIi8+DQorICAgICAgICAgICAgPC9lU3RydWN0dXJhbEZlYXR1cmVzPg0KKyAgICAgICAgICAgIDxlU3RydWN0dXJhbEZlYXR1cmVzIHhtaTp0eXBlPSJlY29yZTpFQXR0cmlidXRlIiB4bWk6aWQ9IlByb2ZpbGVEZWZpbml0aW9uLVN5c01MLU1vZGVsRWxlbWVudHMtRWxlbWVudEdyb3VwLXNpemUyIiBuYW1lPSJzaXplIiBvcmRlcmVkPSJmYWxzZSIgbG93ZXJCb3VuZD0iMSIgdm9sYXRpbGU9InRydWUiIHRyYW5zaWVudD0idHJ1ZSIgZGVyaXZlZD0idHJ1ZSI+DQorICAgICAgICAgICAgICA8ZVR5cGUgeG1pOnR5cGU9ImVjb3JlOkVEYXRhVHlwZSIgaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy91bWwyLzUuMC4wL1R5cGVzIy8vSW50ZWdlciIvPg0KKyAgICAgICAgICAgIDwvZVN0cnVjdHVyYWxGZWF0dXJlcz4NCisgICAgICAgICAgICA8ZVN0cnVjdHVyYWxGZWF0dXJlcyB4bWk6dHlwZT0iZWNvcmU6RVJlZmVyZW5jZSIgeG1pOmlkPSJQcm9maWxlRGVmaW5pdGlvbi1TeXNNTC1Nb2RlbEVsZW1lbnRzLUVsZW1lbnRHcm91cC1tZW1iZXIyIiBuYW1lPSJtZW1iZXIiIG9yZGVyZWQ9ImZhbHNlIiB1cHBlckJvdW5kPSItMSIgdm9sYXRpbGU9InRydWUiIHRyYW5zaWVudD0idHJ1ZSIgZGVyaXZlZD0idHJ1ZSI+DQorICAgICAgICAgICAgICA8ZUFubm90YXRpb25zIHhtaTppZD0iUHJvZmlsZURlZmluaXRpb24tU3lzTUwtTW9kZWxFbGVtZW50cy1FbGVtZW50R3JvdXAtbWVtYmVyMi1lQW5ub3RhdGlvbnMiIHNvdXJjZT0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9lbWYvMjAwMi9HZW5Nb2RlbCI+DQorICAgICAgICAgICAgICAgIDxkZXRhaWxzIHhtaTppZD0iUHJvZmlsZURlZmluaXRpb24tU3lzTUwtTW9kZWxFbGVtZW50cy1FbGVtZW50R3JvdXAtbWVtYmVyMi1lQW5ub3RhdGlvbnMtZGV0YWlscyIga2V5PSJkb2N1bWVudGF0aW9uIiB2YWx1ZT0iU2V0IHNwZWNpZnlpbmcgdGhlIG1lbWJlcnMgb2YgdGhlIGdyb3VwLiYjeEE7RGVyaXZlZCBmcm9tIENvbW1lbnQ6OmFubm90YXRlZEVsZW1lbnQuIi8+DQorICAgICAgICAgICAgICA8L2VBbm5vdGF0aW9ucz4NCisgICAgICAgICAgICAgIDxlVHlwZSB4bWk6dHlwZT0iZWNvcmU6RUNsYXNzIiBocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3VtbDIvNS4wLjAvVU1MIy8vRWxlbWVudCIvPg0KKyAgICAgICAgICAgIDwvZVN0cnVjdHVyYWxGZWF0dXJlcz4NCisgICAgICAgICAgICA8ZVN0cnVjdHVyYWxGZWF0dXJlcyB4bWk6dHlwZT0iZWNvcmU6RVJlZmVyZW5jZSIgeG1pOmlkPSJQcm9maWxlRGVmaW5pdGlvbi1TeXNNTC1Nb2RlbEVsZW1lbnRzLUVsZW1lbnRHcm91cC1vcmRlcmVkTWVtYmVyIiBuYW1lPSJvcmRlcmVkTWVtYmVyIiB1cHBlckJvdW5kPSItMSI+DQorICAgICAgICAgICAgICA8ZUFubm90YXRpb25zIHhtaTppZD0iUHJvZmlsZURlZmluaXRpb24tU3lzTUwtTW9kZWxFbGVtZW50cy1FbGVtZW50R3JvdXAtb3JkZXJlZE1lbWJlci1lQW5ub3RhdGlvbnMxIiBzb3VyY2U9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvZW1mLzIwMDIvR2VuTW9kZWwiPg0KKyAgICAgICAgICAgICAgICA8ZGV0YWlscyB4bWk6aWQ9IlByb2ZpbGVEZWZpbml0aW9uLVN5c01MLU1vZGVsRWxlbWVudHMtRWxlbWVudEdyb3VwLW9yZGVyZWRNZW1iZXItZUFubm90YXRpb25zMS1kZXRhaWxzIiBrZXk9ImRvY3VtZW50YXRpb24iIHZhbHVlPSJPcmdhbml6ZSBtZW1iZXIgYWNjb3JkaW5nIHRvIGFuIGFyYml0cmFyeSBvcmRlci4gT3B0aW9uYWwuIi8+DQorICAgICAgICAgICAgICA8L2VBbm5vdGF0aW9ucz4NCisgICAgICAgICAgICAgIDxlQW5ub3RhdGlvbnMgeG1pOmlkPSJQcm9maWxlRGVmaW5pdGlvbi1TeXNNTC1Nb2RlbEVsZW1lbnRzLUVsZW1lbnRHcm91cC1vcmRlcmVkTWVtYmVyLWVBbm5vdGF0aW9uczIiIHNvdXJjZT0ic3Vic2V0cyIgcmVmZXJlbmNlcz0iUHJvZmlsZURlZmluaXRpb24tU3lzTUwtTW9kZWxFbGVtZW50cy1FbGVtZW50R3JvdXAtbWVtYmVyMiIvPg0KKyAgICAgICAgICAgICAgPGVUeXBlIHhtaTp0eXBlPSJlY29yZTpFQ2xhc3MiIGhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvdW1sMi81LjAuMC9VTUwjLy9FbGVtZW50Ii8+DQorICAgICAgICAgICAgPC9lU3RydWN0dXJhbEZlYXR1cmVzPg0KKyAgICAgICAgICA8L2VDbGFzc2lmaWVycz4NCisgICAgICAgICAgPGVTdWJwYWNrYWdlcyB4bWk6aWQ9IlByb2ZpbGVEZWZpbml0aW9uLVN5c01MLU1vZGVsRWxlbWVudHMtRGVwcmVjYXRlZCIgbmFtZT0iRGVwcmVjYXRlZCIgbnNVUkk9Imh0dHA6Ly8vU3lzTUwvTW9kZWxFbGVtZW50cy9EZXByZWNhdGVkLmVjb3JlIiBuc1ByZWZpeD0iU3lzTUwuTW9kZWxFbGVtZW50cy5EZXByZWNhdGVkIj4NCisgICAgICAgICAgICA8ZUFubm90YXRpb25zIHhtaTppZD0iUHJvZmlsZURlZmluaXRpb24tU3lzTUwtTW9kZWxFbGVtZW50cy1EZXByZWNhdGVkLWVBbm5vdGF0aW9ucyIgc291cmNlPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3VtbDIvNC4wLjAvVU1MIiByZWZlcmVuY2VzPSJTeXNNTC1Nb2RlbEVsZW1lbnRzLURlcHJlY2F0ZWQiLz4NCisgICAgICAgICAgPC9lU3VicGFja2FnZXM+DQorICAgICAgICA8L2VTdWJwYWNrYWdlcz4NCisgICAgICAgIDxlU3VicGFja2FnZXMgeG1pOmlkPSJQcm9maWxlRGVmaW5pdGlvbi1TeXNNTC1Db25zdHJhaW50QmxvY2tzIiBuYW1lPSJDb25zdHJhaW50QmxvY2tzIiBuc1VSST0iaHR0cDovLy9TeXNNTC9Db25zdHJhaW50QmxvY2tzLmVjb3JlIiBuc1ByZWZpeD0iU3lzTUwuQ29uc3RyYWludEJsb2NrcyI+DQorICAgICAgICAgIDxlQW5ub3RhdGlvbnMgeG1pOmlkPSJQcm9maWxlRGVmaW5pdGlvbi1TeXNNTC1Db25zdHJhaW50QmxvY2tzLWVBbm5vdGF0aW9ucyIgc291cmNlPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3VtbDIvNC4wLjAvVU1MIiByZWZlcmVuY2VzPSJTeXNNTC1Db25zdHJhaW50QmxvY2tzIi8+DQorICAgICAgICAgIDxlQ2xhc3NpZmllcnMgeG1pOnR5cGU9ImVjb3JlOkVDbGFzcyIgeG1pOmlkPSJQcm9maWxlRGVmaW5pdGlvbi1TeXNNTC1Db25zdHJhaW50QmxvY2tzLUNvbnN0cmFpbnRCbG9jayIgbmFtZT0iQ29uc3RyYWludEJsb2NrIiBlU3VwZXJUeXBlcz0iUHJvZmlsZURlZmluaXRpb24tU3lzTUwtQmxvY2tzLUJsb2NrIj4NCisgICAgICAgICAgICA8ZUFubm90YXRpb25zIHhtaTppZD0iUHJvZmlsZURlZmluaXRpb24tU3lzTUwtQ29uc3RyYWludEJsb2Nrcy1Db25zdHJhaW50QmxvY2stZUFubm90YXRpb25zMSIgc291cmNlPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3VtbDIvMi4wLjAvVU1MIiByZWZlcmVuY2VzPSJTeXNNTC1Db25zdHJhaW50QmxvY2tzLUNvbnN0cmFpbnRCbG9jayIvPg0KKyAgICAgICAgICAgIDxlQW5ub3RhdGlvbnMgeG1pOmlkPSJQcm9maWxlRGVmaW5pdGlvbi1TeXNNTC1Db25zdHJhaW50QmxvY2tzLUNvbnN0cmFpbnRCbG9jay1lQW5ub3RhdGlvbnMyIiBzb3VyY2U9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvZW1mLzIwMDIvR2VuTW9kZWwiPg0KKyAgICAgICAgICAgICAgPGRldGFpbHMgeG1pOmlkPSJQcm9maWxlRGVmaW5pdGlvbi1TeXNNTC1Db25zdHJhaW50QmxvY2tzLUNvbnN0cmFpbnRCbG9jay1lQW5ub3RhdGlvbnMyLWRldGFpbHMiIGtleT0iZG9jdW1lbnRhdGlvbiIgdmFsdWU9IkEgY29uc3RyYWludCBibG9jayBpcyBhIGJsb2NrIHRoYXQgcGFja2FnZXMgdGhlIHN0YXRlbWVudCBvZiBhIGNvbnN0cmFpbnQgc28gaXQgbWF5IGJlIGFwcGxpZWQgaW4gYSByZXVzYWJsZSB3YXkgdG8gY29uc3RyYWluIHByb3BlcnRpZXMgb2Ygb3RoZXIgYmxvY2tzLiBBIGNvbnN0cmFpbnQgYmxvY2sgdHlwaWNhbGx5IGRlZmluZXMgb25lIG9yIG1vcmUgY29uc3RyYWludCBwYXJhbWV0ZXJzLCB3aGljaCBhcmUgYm91bmQgdG8gcHJvcGVydGllcyBvZiBvdGhlciBibG9ja3MgaW4gYSBzdXJyb3VuZGluZyBjb250ZXh0IHdoZXJlIHRoZSBjb25zdHJhaW50IGlzIHVzZWQuIEJpbmRpbmcgY29ubmVjdG9ycywgYXMgZGVmaW5lZCBpbiBDaGFwdGVyIDg6IEJsb2NrcywgYXJlIHVzZWQgdG8gYmluZCBlYWNoIHBhcmFtZXRlciBvZiB0aGUgY29uc3RyYWludCBibG9jayB0byBhIHByb3BlcnR5IGluIHRoZSBzdXJyb3VuZGluZyBjb250ZXh0LiBBbGwgcHJvcGVydGllcyBvZiBhIGNvbnN0cmFpbnQgYmxvY2sgYXJlIGNvbnN0cmFpbnQgcGFyYW1ldGVycywgd2l0aCB0aGUgZXhjZXB0aW9uIG9mIGNvbnN0cmFpbnQgcHJvcGVydGllcyB0aGF0IGhvbGQgaW50ZXJuYWxseSBuZXN0ZWQgdXNhZ2VzIG9mIG90aGVyIGNvbnN0cmFpbnQgYmxvY2tzLiIvPg0KKyAgICAgICAgICAgIDwvZUFubm90YXRpb25zPg0KKyAgICAgICAgICA8L2VDbGFzc2lmaWVycz4NCisgICAgICAgIDwvZVN1YnBhY2thZ2VzPg0KKyAgICAgICAgPGVTdWJwYWNrYWdlcyB4bWk6aWQ9IlByb2ZpbGVEZWZpbml0aW9uLVN5c01MLUFsbG9jYXRpb25zIiBuYW1lPSJBbGxvY2F0aW9ucyIgbnNVUkk9Imh0dHA6Ly8vU3lzTUwvQWxsb2NhdGlvbnMuZWNvcmUiIG5zUHJlZml4PSJTeXNNTC5BbGxvY2F0aW9ucyI+DQorICAgICAgICAgIDxlQW5ub3RhdGlvbnMgeG1pOmlkPSJQcm9maWxlRGVmaW5pdGlvbi1TeXNNTC1BbGxvY2F0aW9ucy1lQW5ub3RhdGlvbnMiIHNvdXJjZT0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy91bWwyLzQuMC4wL1VNTCIgcmVmZXJlbmNlcz0iU3lzTUwtQWxsb2NhdGlvbnMiLz4NCisgICAgICAgICAgPGVDbGFzc2lmaWVycyB4bWk6dHlwZT0iZWNvcmU6RUNsYXNzIiB4bWk6aWQ9IlByb2ZpbGVEZWZpbml0aW9uLVN5c01MLUFsbG9jYXRpb25zLUFsbG9jYXRlQWN0aXZpdHlQYXJ0aXRpb24iIG5hbWU9IkFsbG9jYXRlQWN0aXZpdHlQYXJ0aXRpb24iPg0KKyAgICAgICAgICAgIDxlQW5ub3RhdGlvbnMgeG1pOmlkPSJQcm9maWxlRGVmaW5pdGlvbi1TeXNNTC1BbGxvY2F0aW9ucy1BbGxvY2F0ZUFjdGl2aXR5UGFydGl0aW9uLWVBbm5vdGF0aW9uczEiIHNvdXJjZT0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy91bWwyLzIuMC4wL1VNTCIgcmVmZXJlbmNlcz0iU3lzTUwtQWxsb2NhdGlvbnMtQWxsb2NhdGVBY3Rpdml0eVBhcnRpdGlvbiIvPg0KKyAgICAgICAgICAgIDxlQW5ub3RhdGlvbnMgeG1pOmlkPSJQcm9maWxlRGVmaW5pdGlvbi1TeXNNTC1BbGxvY2F0aW9ucy1BbGxvY2F0ZUFjdGl2aXR5UGFydGl0aW9uLWVBbm5vdGF0aW9uczIiIHNvdXJjZT0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9lbWYvMjAwMi9HZW5Nb2RlbCI+DQorICAgICAgICAgICAgICA8ZGV0YWlscyB4bWk6aWQ9IlByb2ZpbGVEZWZpbml0aW9uLVN5c01MLUFsbG9jYXRpb25zLUFsbG9jYXRlQWN0aXZpdHlQYXJ0aXRpb24tZUFubm90YXRpb25zMi1kZXRhaWxzIiBrZXk9ImRvY3VtZW50YXRpb24iIHZhbHVlPSJBbGxvY2F0ZUFjdGl2aXR5UGFydGl0aW9uIGlzIHVzZWQgdG8gZGVwaWN0IGFuIMKrYWxsb2NhdGXCuyByZWxhdGlvbnNoaXAgb24gYW4gQWN0aXZpdHkgZGlhZ3JhbS4gVGhlIEFsbG9jYXRlQWN0aXZpdHlQYXJ0aXRpb24gaXMgYSBzdGFuZGFyZCBVTUwyOjpBY3Rpdml0eVBhcnRpdGlvbiwgd2l0aCBtb2RpZmllZCBjb25zdHJhaW50cyBhcyBzdGF0ZWQgaW4gdGhlIHBhcmFncmFwaCBiZWxvdy4iLz4NCisgICAgICAgICAgICA8L2VBbm5vdGF0aW9ucz4NCisgICAgICAgICAgICA8ZVN0cnVjdHVyYWxGZWF0dXJlcyB4bWk6dHlwZT0iZWNvcmU6RVJlZmVyZW5jZSIgeG1pOmlkPSJQcm9maWxlRGVmaW5pdGlvbi1TeXNNTC1BbGxvY2F0aW9ucy1BbGxvY2F0ZUFjdGl2aXR5UGFydGl0aW9uLWJhc2VfQWN0aXZpdHlQYXJ0aXRpb24iIG5hbWU9ImJhc2VfQWN0aXZpdHlQYXJ0aXRpb24iIG9yZGVyZWQ9ImZhbHNlIj4NCisgICAgICAgICAgICAgIDxlVHlwZSB4bWk6dHlwZT0iZWNvcmU6RUNsYXNzIiBocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3VtbDIvNS4wLjAvVU1MIy8vQWN0aXZpdHlQYXJ0aXRpb24iLz4NCisgICAgICAgICAgICA8L2VTdHJ1Y3R1cmFsRmVhdHVyZXM+DQorICAgICAgICAgIDwvZUNsYXNzaWZpZXJzPg0KKyAgICAgICAgICA8ZUNsYXNzaWZpZXJzIHhtaTp0eXBlPSJlY29yZTpFQ2xhc3MiIHhtaTppZD0iUHJvZmlsZURlZmluaXRpb24tU3lzTUwtQWxsb2NhdGlvbnMtQWxsb2NhdGUiIG5hbWU9IkFsbG9jYXRlIiBlU3VwZXJUeXBlcz0iUHJvZmlsZURlZmluaXRpb24tU3lzTUwtQmxvY2tzLURpcmVjdGVkUmVsYXRpb25zaGlwUHJvcGVydHlQYXRoIj4NCisgICAgICAgICAgICA8ZUFubm90YXRpb25zIHhtaTppZD0iUHJvZmlsZURlZmluaXRpb24tU3lzTUwtQWxsb2NhdGlvbnMtQWxsb2NhdGUtZUFubm90YXRpb25zMSIgc291cmNlPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3VtbDIvMi4wLjAvVU1MIiByZWZlcmVuY2VzPSJTeXNNTC1BbGxvY2F0aW9ucy1BbGxvY2F0ZSIvPg0KKyAgICAgICAgICAgIDxlQW5ub3RhdGlvbnMgeG1pOmlkPSJQcm9maWxlRGVmaW5pdGlvbi1TeXNNTC1BbGxvY2F0aW9ucy1BbGxvY2F0ZS1lQW5ub3RhdGlvbnMyIiBzb3VyY2U9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvZW1mLzIwMDIvR2VuTW9kZWwiPg0KKyAgICAgICAgICAgICAgPGRldGFpbHMgeG1pOmlkPSJQcm9maWxlRGVmaW5pdGlvbi1TeXNNTC1BbGxvY2F0aW9ucy1BbGxvY2F0ZS1lQW5ub3RhdGlvbnMyLWRldGFpbHMiIGtleT0iZG9jdW1lbnRhdGlvbiIgdmFsdWU9IkFsbG9jYXRlIGlzIGEgZGVwZW5kZW5jeSBiYXNlZCBvbiBVTUw6OmFic3RyYWN0aW9uLiBJdCBpcyBhIG1lY2hhbmlzbSBmb3IgYXNzb2NpYXRpbmcgZWxlbWVudHMgb2YgZGlmZmVyZW50IHR5cGVzLCBvciBpbiBkaWZmZXJlbnQgaGllcmFyY2hpZXMsIGF0IGFuIGFic3RyYWN0IGxldmVsLiBBbGxvY2F0ZSBpcyB1c2VkIGZvciBhc3Nlc3NpbmcgdXNlciBtb2RlbCBjb25zaXN0ZW5jeSBhbmQgZGlyZWN0aW5nIGZ1dHVyZSBkZXNpZ24gYWN0aXZpdHkuIEl0IGlzIGV4cGVjdGVkIHRoYXQgYW4gwqthbGxvY2F0ZcK7IHJlbGF0aW9uc2hpcCBiZXR3ZWVuIG1vZGVsIGVsZW1lbnRzIGlzIGEgcHJlY3Vyc29yIHRvIGEgbW9yZSBjb25jcmV0ZSByZWxhdGlvbnNoaXAgYmV0d2VlbiB0aGUgZWxlbWVudHMsIHRoZWlyIHByb3BlcnRpZXMsIG9wZXJhdGlvbnMsIGF0dHJpYnV0ZXMsIG9yIHN1Yi1jbGFzc2VzLiIvPg0KKyAgICAgICAgICAgIDwvZUFubm90YXRpb25zPg0KKyAgICAgICAgICAgIDxlT3BlcmF0aW9ucyB4bWk6aWQ9IlByb2ZpbGVEZWZpbml0aW9uLVN5c01MLUFsbG9jYXRpb25zLUFsbG9jYXRlLWdldEFsbG9jYXRlZEZyb20iIG5hbWU9ImdldEFsbG9jYXRlZEZyb20iIG9yZGVyZWQ9ImZhbHNlIiBsb3dlckJvdW5kPSIxIiB1cHBlckJvdW5kPSItMSI+DQorICAgICAgICAgICAgICA8ZVR5cGUgeG1pOnR5cGU9ImVjb3JlOkVDbGFzcyIgaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy91bWwyLzUuMC4wL1VNTCMvL05hbWVkRWxlbWVudCIvPg0KKyAgICAgICAgICAgICAgPGVQYXJhbWV0ZXJzIHhtaTppZD0iUHJvZmlsZURlZmluaXRpb24tU3lzTUwtQWxsb2NhdGlvbnMtQWxsb2NhdGUtZ2V0QWxsb2NhdGVkRnJvbS1yZWYiIG5hbWU9InJlZiIgb3JkZXJlZD0iZmFsc2UiIGxvd2VyQm91bmQ9IjEiPg0KKyAgICAgICAgICAgICAgICA8ZVR5cGUgeG1pOnR5cGU9ImVjb3JlOkVDbGFzcyIgaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy91bWwyLzUuMC4wL1VNTCMvL05hbWVkRWxlbWVudCIvPg0KKyAgICAgICAgICAgICAgPC9lUGFyYW1ldGVycz4NCisgICAgICAgICAgICA8L2VPcGVyYXRpb25zPg0KKyAgICAgICAgICAgIDxlT3BlcmF0aW9ucyB4bWk6aWQ9IlByb2ZpbGVEZWZpbml0aW9uLVN5c01MLUFsbG9jYXRpb25zLUFsbG9jYXRlLWdldEFsbG9jYXRlZFRvIiBuYW1lPSJnZXRBbGxvY2F0ZWRUbyIgb3JkZXJlZD0iZmFsc2UiIGxvd2VyQm91bmQ9IjEiIHVwcGVyQm91bmQ9Ii0xIj4NCisgICAgICAgICAgICAgIDxlVHlwZSB4bWk6dHlwZT0iZWNvcmU6RUNsYXNzIiBocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3VtbDIvNS4wLjAvVU1MIy8vTmFtZWRFbGVtZW50Ii8+DQorICAgICAgICAgICAgICA8ZVBhcmFtZXRlcnMgeG1pOmlkPSJQcm9maWxlRGVmaW5pdGlvbi1TeXNNTC1BbGxvY2F0aW9ucy1BbGxvY2F0ZS1nZXRBbGxvY2F0ZWRUby1yZWYiIG5hbWU9InJlZiIgb3JkZXJlZD0iZmFsc2UiIGxvd2VyQm91bmQ9IjEiPg0KKyAgICAgICAgICAgICAgICA8ZVR5cGUgeG1pOnR5cGU9ImVjb3JlOkVDbGFzcyIgaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy91bWwyLzUuMC4wL1VNTCMvL05hbWVkRWxlbWVudCIvPg0KKyAgICAgICAgICAgICAgPC9lUGFyYW1ldGVycz4NCisgICAgICAgICAgICA8L2VPcGVyYXRpb25zPg0KKyAgICAgICAgICAgIDxlU3RydWN0dXJhbEZlYXR1cmVzIHhtaTp0eXBlPSJlY29yZTpFUmVmZXJlbmNlIiB4bWk6aWQ9IlByb2ZpbGVEZWZpbml0aW9uLVN5c01MLUFsbG9jYXRpb25zLUFsbG9jYXRlLWJhc2VfQWJzdHJhY3Rpb24iIG5hbWU9ImJhc2VfQWJzdHJhY3Rpb24iIG9yZGVyZWQ9ImZhbHNlIj4NCisgICAgICAgICAgICAgIDxlQW5ub3RhdGlvbnMgeG1pOmlkPSJQcm9maWxlRGVmaW5pdGlvbi1TeXNNTC1BbGxvY2F0aW9ucy1BbGxvY2F0ZS1iYXNlX0Fic3RyYWN0aW9uLWVBbm5vdGF0aW9ucyIgc291cmNlPSJyZWRlZmluZXMiIHJlZmVyZW5jZXM9IlByb2ZpbGVEZWZpbml0aW9uLVN5c01MLUJsb2Nrcy1EaXJlY3RlZFJlbGF0aW9uc2hpcFByb3BlcnR5UGF0aC1iYXNlX0RpcmVjdGVkUmVsYXRpb25zaGlwIi8+DQorICAgICAgICAgICAgICA8ZVR5cGUgeG1pOnR5cGU9ImVjb3JlOkVDbGFzcyIgaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy91bWwyLzUuMC4wL1VNTCMvL0Fic3RyYWN0aW9uIi8+DQorICAgICAgICAgICAgPC9lU3RydWN0dXJhbEZlYXR1cmVzPg0KKyAgICAgICAgICA8L2VDbGFzc2lmaWVycz4NCisgICAgICAgIDwvZVN1YnBhY2thZ2VzPg0KKyAgICAgICAgPGVTdWJwYWNrYWdlcyB4bWk6aWQ9IlByb2ZpbGVEZWZpbml0aW9uLVN5c01MLVJlcXVpcmVtZW50cyIgbmFtZT0iUmVxdWlyZW1lbnRzIiBuc1VSST0iaHR0cDovLy9TeXNNTC9SZXF1aXJlbWVudHMuZWNvcmUiIG5zUHJlZml4PSJTeXNNTC5SZXF1aXJlbWVudHMiPg0KKyAgICAgICAgICA8ZUFubm90YXRpb25zIHhtaTppZD0iUHJvZmlsZURlZmluaXRpb24tU3lzTUwtUmVxdWlyZW1lbnRzLWVBbm5vdGF0aW9ucyIgc291cmNlPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3VtbDIvNC4wLjAvVU1MIiByZWZlcmVuY2VzPSJTeXNNTC1SZXF1aXJlbWVudHMiLz4NCisgICAgICAgICAgPGVDbGFzc2lmaWVycyB4bWk6dHlwZT0iZWNvcmU6RUNsYXNzIiB4bWk6aWQ9IlByb2ZpbGVEZWZpbml0aW9uLVN5c01MLVJlcXVpcmVtZW50cy1EZXJpdmVSZXF0IiBuYW1lPSJEZXJpdmVSZXF0IiBlU3VwZXJUeXBlcz0iUHJvZmlsZURlZmluaXRpb24tU3lzTUwtUmVxdWlyZW1lbnRzLVRyYWNlIj4NCisgICAgICAgICAgICA8ZUFubm90YXRpb25zIHhtaTppZD0iUHJvZmlsZURlZmluaXRpb24tU3lzTUwtUmVxdWlyZW1lbnRzLURlcml2ZVJlcXQtZUFubm90YXRpb25zMSIgc291cmNlPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3VtbDIvMi4wLjAvVU1MIiByZWZlcmVuY2VzPSJTeXNNTC1SZXF1aXJlbWVudHMtRGVyaXZlUmVxdCIvPg0KKyAgICAgICAgICAgIDxlQW5ub3RhdGlvbnMgeG1pOmlkPSJQcm9maWxlRGVmaW5pdGlvbi1TeXNNTC1SZXF1aXJlbWVudHMtRGVyaXZlUmVxdC1lQW5ub3RhdGlvbnMyIiBzb3VyY2U9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvZW1mLzIwMDIvR2VuTW9kZWwiPg0KKyAgICAgICAgICAgICAgPGRldGFpbHMgeG1pOmlkPSJQcm9maWxlRGVmaW5pdGlvbi1TeXNNTC1SZXF1aXJlbWVudHMtRGVyaXZlUmVxdC1lQW5ub3RhdGlvbnMyLWRldGFpbHMiIGtleT0iZG9jdW1lbnRhdGlvbiIgdmFsdWU9IkEgRGVyaXZlUmVxdCByZWxhdGlvbnNoaXAgaXMgYSBkZXBlbmRlbmN5IGJldHdlZW4gdHdvIHJlcXVpcmVtZW50cyBpbiB3aGljaCBhIGNsaWVudCByZXF1aXJlbWVudCBjYW4gYmUgZGVyaXZlZCBmcm9tIHRoZSBzdXBwbGllciByZXF1aXJlbWVudC4gQXMgd2l0aCBvdGhlciBkZXBlbmRlbmNpZXMsIHRoZSBhcnJvdyBkaXJlY3Rpb24gcG9pbnRzIGZyb20gdGhlIGRlcml2ZWQgKGNsaWVudCkgcmVxdWlyZW1lbnQgdG8gdGhlIChzdXBwbGllcikgcmVxdWlyZW1lbnQgZnJvbSB3aGljaCBpdCBpcyBkZXJpdmVkLiIvPg0KKyAgICAgICAgICAgIDwvZUFubm90YXRpb25zPg0KKyAgICAgICAgICA8L2VDbGFzc2lmaWVycz4NCisgICAgICAgICAgPGVDbGFzc2lmaWVycyB4bWk6dHlwZT0iZWNvcmU6RUNsYXNzIiB4bWk6aWQ9IlByb2ZpbGVEZWZpbml0aW9uLVN5c01MLVJlcXVpcmVtZW50cy1UcmFjZSIgbmFtZT0iVHJhY2UiPg0KKyAgICAgICAgICAgIDxlQW5ub3RhdGlvbnMgeG1pOmlkPSJQcm9maWxlRGVmaW5pdGlvbi1TeXNNTC1SZXF1aXJlbWVudHMtVHJhY2UtZUFubm90YXRpb25zIiBzb3VyY2U9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvdW1sMi8yLjAuMC9VTUwiIHJlZmVyZW5jZXM9IlN5c01MLVJlcXVpcmVtZW50cy1UcmFjZSIvPg0KKyAgICAgICAgICAgIDxlU3VwZXJUeXBlcyBocmVmPSIjUHJvZmlsZURlZmluaXRpb24tU3lzTUwtQmxvY2tzLURpcmVjdGVkUmVsYXRpb25zaGlwUHJvcGVydHlQYXRoIi8+DQorICAgICAgICAgICAgPGVTdXBlclR5cGVzIGhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvdW1sMi81LjAuMC9VTUwvUHJvZmlsZS9TdGFuZGFyZCMvL1RyYWNlIi8+DQorICAgICAgICAgICAgPGVPcGVyYXRpb25zIHhtaTppZD0iUHJvZmlsZURlZmluaXRpb24tU3lzTUwtUmVxdWlyZW1lbnRzLVRyYWNlLWdldFRyYWNlZEZyb20iIG5hbWU9ImdldFRyYWNlZEZyb20iIG9yZGVyZWQ9ImZhbHNlIiBsb3dlckJvdW5kPSIxIiB1cHBlckJvdW5kPSItMSIgZVR5cGU9IlByb2ZpbGVEZWZpbml0aW9uLVN5c01MLVJlcXVpcmVtZW50cy1SZXF1aXJlbWVudCI+DQorICAgICAgICAgICAgICA8ZVBhcmFtZXRlcnMgeG1pOmlkPSJQcm9maWxlRGVmaW5pdGlvbi1TeXNNTC1SZXF1aXJlbWVudHMtVHJhY2UtZ2V0VHJhY2VkRnJvbS1yZWYiIG5hbWU9InJlZiIgb3JkZXJlZD0iZmFsc2UiIGxvd2VyQm91bmQ9IjEiPg0KKyAgICAgICAgICAgICAgICA8ZVR5cGUgeG1pOnR5cGU9ImVjb3JlOkVDbGFzcyIgaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy91bWwyLzUuMC4wL1VNTCMvL05hbWVkRWxlbWVudCIvPg0KKyAgICAgICAgICAgICAgPC9lUGFyYW1ldGVycz4NCisgICAgICAgICAgICA8L2VPcGVyYXRpb25zPg0KKyAgICAgICAgICA8L2VDbGFzc2lmaWVycz4NCisgICAgICAgICAgPGVDbGFzc2lmaWVycyB4bWk6dHlwZT0iZWNvcmU6RUNsYXNzIiB4bWk6aWQ9IlByb2ZpbGVEZWZpbml0aW9uLVN5c01MLVJlcXVpcmVtZW50cy1SZXF1aXJlbWVudCIgbmFtZT0iUmVxdWlyZW1lbnQiPg0KKyAgICAgICAgICAgIDxlQW5ub3RhdGlvbnMgeG1pOmlkPSJQcm9maWxlRGVmaW5pdGlvbi1TeXNNTC1SZXF1aXJlbWVudHMtUmVxdWlyZW1lbnQtZUFubm90YXRpb25zMSIgc291cmNlPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3VtbDIvMi4wLjAvVU1MIiByZWZlcmVuY2VzPSJTeXNNTC1SZXF1aXJlbWVudHMtUmVxdWlyZW1lbnQiLz4NCisgICAgICAgICAgICA8ZUFubm90YXRpb25zIHhtaTppZD0iUHJvZmlsZURlZmluaXRpb24tU3lzTUwtUmVxdWlyZW1lbnRzLVJlcXVpcmVtZW50LWVBbm5vdGF0aW9uczIiIHNvdXJjZT0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9lbWYvMjAwMi9HZW5Nb2RlbCI+DQorICAgICAgICAgICAgICA8ZGV0YWlscyB4bWk6aWQ9IlByb2ZpbGVEZWZpbml0aW9uLVN5c01MLVJlcXVpcmVtZW50cy1SZXF1aXJlbWVudC1lQW5ub3RhdGlvbnMyLWRldGFpbHMiIGtleT0iZG9jdW1lbnRhdGlvbiIgdmFsdWU9IkEgcmVxdWlyZW1lbnQgc3BlY2lmaWVzIGEgY2FwYWJpbGl0eSBvciBjb25kaXRpb24gdGhhdCBtdXN0IChvciBzaG91bGQpIGJlIHNhdGlzZmllZC4gQSByZXF1aXJlbWVudCBtYXkgc3BlY2lmeSBhIGZ1bmN0aW9uIHRoYXQgYSBzeXN0ZW0gbXVzdCBwZXJmb3JtIG9yIGEgcGVyZm9ybWFuY2UgY29uZGl0aW9uIHRoYXQgYSBzeXN0ZW0gbXVzdCBzYXRpc2Z5LiBSZXF1aXJlbWVudHMgYXJlIHVzZWQgdG8gZXN0YWJsaXNoIGEgY29udHJhY3QgYmV0d2VlbiB0aGUgY3VzdG9tZXIgKG9yIG90aGVyIHN0YWtlaG9sZGVyKSBhbmQgdGhvc2UgcmVzcG9uc2libGUgZm9yIGRlc2lnbmluZyBhbmQgaW1wbGVtZW50aW5nIHRoZSBzeXN0ZW0uIi8+DQorICAgICAgICAgICAgPC9lQW5ub3RhdGlvbnM+DQorICAgICAgICAgICAgPGVTdHJ1Y3R1cmFsRmVhdHVyZXMgeG1pOnR5cGU9ImVjb3JlOkVSZWZlcmVuY2UiIHhtaTppZD0iUHJvZmlsZURlZmluaXRpb24tU3lzTUwtUmVxdWlyZW1lbnRzLVJlcXVpcmVtZW50LWJhc2VfQ2xhc3MiIG5hbWU9ImJhc2VfQ2xhc3MiIG9yZGVyZWQ9ImZhbHNlIj4NCisgICAgICAgICAgICAgIDxlVHlwZSB4bWk6dHlwZT0iZWNvcmU6RUNsYXNzIiBocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3VtbDIvNS4wLjAvVU1MIy8vQ2xhc3MiLz4NCisgICAgICAgICAgICA8L2VTdHJ1Y3R1cmFsRmVhdHVyZXM+DQorICAgICAgICAgICAgPGVTdHJ1Y3R1cmFsRmVhdHVyZXMgeG1pOnR5cGU9ImVjb3JlOkVBdHRyaWJ1dGUiIHhtaTppZD0iUHJvZmlsZURlZmluaXRpb24tU3lzTUwtUmVxdWlyZW1lbnRzLVJlcXVpcmVtZW50LVRleHQiIG5hbWU9IlRleHQiIG9yZGVyZWQ9ImZhbHNlIiBsb3dlckJvdW5kPSIxIiBkZWZhdWx0VmFsdWVMaXRlcmFsPSIiPg0KKyAgICAgICAgICAgICAgPGVBbm5vdGF0aW9ucyB4bWk6aWQ9IlByb2ZpbGVEZWZpbml0aW9uLVN5c01MLVJlcXVpcmVtZW50cy1SZXF1aXJlbWVudC1UZXh0LWVBbm5vdGF0aW9ucyIgc291cmNlPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2VtZi8yMDAyL0dlbk1vZGVsIj4NCisgICAgICAgICAgICAgICAgPGRldGFpbHMgeG1pOmlkPSJQcm9maWxlRGVmaW5pdGlvbi1TeXNNTC1SZXF1aXJlbWVudHMtUmVxdWlyZW1lbnQtVGV4dC1lQW5ub3RhdGlvbnMtZGV0YWlscyIga2V5PSJkb2N1bWVudGF0aW9uIiB2YWx1ZT0iVGhlIHRleHR1YWwgcmVwcmVzZW50YXRpb24gb3IgYSByZWZlcmVuY2UgdG8gdGhlIHRleHR1YWwgcmVwcmVzZW50YXRpb24gb2YgdGhlIHJlcXVpcmVtZW50LiIvPg0KKyAgICAgICAgICAgICAgPC9lQW5ub3RhdGlvbnM+DQorICAgICAgICAgICAgICA8ZVR5cGUgeG1pOnR5cGU9ImVjb3JlOkVEYXRhVHlwZSIgaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy91bWwyLzUuMC4wL1R5cGVzIy8vU3RyaW5nIi8+DQorICAgICAgICAgICAgPC9lU3RydWN0dXJhbEZlYXR1cmVzPg0KKyAgICAgICAgICAgIDxlU3RydWN0dXJhbEZlYXR1cmVzIHhtaTp0eXBlPSJlY29yZTpFQXR0cmlidXRlIiB4bWk6aWQ9IlByb2ZpbGVEZWZpbml0aW9uLVN5c01MLVJlcXVpcmVtZW50cy1SZXF1aXJlbWVudC1JZCIgbmFtZT0iSWQiIG9yZGVyZWQ9ImZhbHNlIiBsb3dlckJvdW5kPSIxIiBkZWZhdWx0VmFsdWVMaXRlcmFsPSIiPg0KKyAgICAgICAgICAgICAgPGVBbm5vdGF0aW9ucyB4bWk6aWQ9IlByb2ZpbGVEZWZpbml0aW9uLVN5c01MLVJlcXVpcmVtZW50cy1SZXF1aXJlbWVudC1JZC1lQW5ub3RhdGlvbnMiIHNvdXJjZT0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9lbWYvMjAwMi9HZW5Nb2RlbCI+DQorICAgICAgICAgICAgICAgIDxkZXRhaWxzIHhtaTppZD0iUHJvZmlsZURlZmluaXRpb24tU3lzTUwtUmVxdWlyZW1lbnRzLVJlcXVpcmVtZW50LUlkLWVBbm5vdGF0aW9ucy1kZXRhaWxzIiBrZXk9ImRvY3VtZW50YXRpb24iIHZhbHVlPSJUaGUgdW5pcXVlIGlkIG9mIHRoZSByZXF1aXJlbWVudC4iLz4NCisgICAgICAgICAgICAgIDwvZUFubm90YXRpb25zPg0KKyAgICAgICAgICAgICAgPGVUeXBlIHhtaTp0eXBlPSJlY29yZTpFRGF0YVR5cGUiIGhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvdW1sMi81LjAuMC9UeXBlcyMvL1N0cmluZyIvPg0KKyAgICAgICAgICAgIDwvZVN0cnVjdHVyYWxGZWF0dXJlcz4NCisgICAgICAgICAgICA8ZVN0cnVjdHVyYWxGZWF0dXJlcyB4bWk6dHlwZT0iZWNvcmU6RVJlZmVyZW5jZSIgeG1pOmlkPSJQcm9maWxlRGVmaW5pdGlvbi1TeXNNTC1SZXF1aXJlbWVudHMtUmVxdWlyZW1lbnQtRGVyaXZlZCIgbmFtZT0iRGVyaXZlZCIgb3JkZXJlZD0iZmFsc2UiIGxvd2VyQm91bmQ9IjEiIHVwcGVyQm91bmQ9Ii0xIiBlVHlwZT0iUHJvZmlsZURlZmluaXRpb24tU3lzTUwtUmVxdWlyZW1lbnRzLVJlcXVpcmVtZW50IiB2b2xhdGlsZT0idHJ1ZSIgdHJhbnNpZW50PSJ0cnVlIiBkZXJpdmVkPSJ0cnVlIj4NCisgICAgICAgICAgICAgIDxlQW5ub3RhdGlvbnMgeG1pOmlkPSJQcm9maWxlRGVmaW5pdGlvbi1TeXNNTC1SZXF1aXJlbWVudHMtUmVxdWlyZW1lbnQtRGVyaXZlZC1lQW5ub3RhdGlvbnMiIHNvdXJjZT0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9lbWYvMjAwMi9HZW5Nb2RlbCI+DQorICAgICAgICAgICAgICAgIDxkZXRhaWxzIHhtaTppZD0iUHJvZmlsZURlZmluaXRpb24tU3lzTUwtUmVxdWlyZW1lbnRzLVJlcXVpcmVtZW50LURlcml2ZWQtZUFubm90YXRpb25zLWRldGFpbHMiIGtleT0iZG9jdW1lbnRhdGlvbiIgdmFsdWU9IkRlcml2ZWQgZnJvbSBhbGwgcmVxdWlyZW1lbnRzIHRoYXQgYXJlIHRoZSBjbGllbnQgb2YgYSDCq2Rlcml2ZVJlcXTCuyByZWxhdGlvbnNoaXAgZm9yIHdoaWNoIHRoaXMgcmVxdWlyZW1lbnQgaXMgYSBzdXBwbGllci4iLz4NCisgICAgICAgICAgICAgIDwvZUFubm90YXRpb25zPg0KKyAgICAgICAgICAgIDwvZVN0cnVjdHVyYWxGZWF0dXJlcz4NCisgICAgICAgICAgICA8ZVN0cnVjdHVyYWxGZWF0dXJlcyB4bWk6dHlwZT0iZWNvcmU6RVJlZmVyZW5jZSIgeG1pOmlkPSJQcm9maWxlRGVmaW5pdGlvbi1TeXNNTC1SZXF1aXJlbWVudHMtUmVxdWlyZW1lbnQtRGVyaXZlZEZyb20iIG5hbWU9IkRlcml2ZWRGcm9tIiBvcmRlcmVkPSJmYWxzZSIgbG93ZXJCb3VuZD0iMSIgdXBwZXJCb3VuZD0iLTEiIGVUeXBlPSJQcm9maWxlRGVmaW5pdGlvbi1TeXNNTC1SZXF1aXJlbWVudHMtUmVxdWlyZW1lbnQiIHZvbGF0aWxlPSJ0cnVlIiB0cmFuc2llbnQ9InRydWUiIGRlcml2ZWQ9InRydWUiPg0KKyAgICAgICAgICAgICAgPGVBbm5vdGF0aW9ucyB4bWk6aWQ9IlByb2ZpbGVEZWZpbml0aW9uLVN5c01MLVJlcXVpcmVtZW50cy1SZXF1aXJlbWVudC1EZXJpdmVkRnJvbS1lQW5ub3RhdGlvbnMiIHNvdXJjZT0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9lbWYvMjAwMi9HZW5Nb2RlbCI+DQorICAgICAgICAgICAgICAgIDxkZXRhaWxzIHhtaTppZD0iUHJvZmlsZURlZmluaXRpb24tU3lzTUwtUmVxdWlyZW1lbnRzLVJlcXVpcmVtZW50LURlcml2ZWRGcm9tLWVBbm5vdGF0aW9ucy1kZXRhaWxzIiBrZXk9ImRvY3VtZW50YXRpb24iIHZhbHVlPSJEZXJpdmVkIGZyb20gYWxsIHJlcXVpcmVtZW50cyB0aGF0IGFyZSB0aGUgc3VwcGxpZXIgb2YgYSDCq2Rlcml2ZVJlcXTCuyByZWxhdGlvbnNoaXAgZm9yIHdoaWNoIHRoaXMgcmVxdWlyZW1lbnQgaXMgYSBjbGllbnQuIi8+DQorICAgICAgICAgICAgICA8L2VBbm5vdGF0aW9ucz4NCisgICAgICAgICAgICA8L2VTdHJ1Y3R1cmFsRmVhdHVyZXM+DQorICAgICAgICAgICAgPGVTdHJ1Y3R1cmFsRmVhdHVyZXMgeG1pOnR5cGU9ImVjb3JlOkVSZWZlcmVuY2UiIHhtaTppZD0iUHJvZmlsZURlZmluaXRpb24tU3lzTUwtUmVxdWlyZW1lbnRzLVJlcXVpcmVtZW50LVNhdGlzZmllZEJ5IiBuYW1lPSJTYXRpc2ZpZWRCeSIgb3JkZXJlZD0iZmFsc2UiIGxvd2VyQm91bmQ9IjEiIHVwcGVyQm91bmQ9Ii0xIiB2b2xhdGlsZT0idHJ1ZSIgdHJhbnNpZW50PSJ0cnVlIiBkZXJpdmVkPSJ0cnVlIj4NCisgICAgICAgICAgICAgIDxlQW5ub3RhdGlvbnMgeG1pOmlkPSJQcm9maWxlRGVmaW5pdGlvbi1TeXNNTC1SZXF1aXJlbWVudHMtUmVxdWlyZW1lbnQtU2F0aXNmaWVkQnktZUFubm90YXRpb25zIiBzb3VyY2U9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvZW1mLzIwMDIvR2VuTW9kZWwiPg0KKyAgICAgICAgICAgICAgICA8ZGV0YWlscyB4bWk6aWQ9IlByb2ZpbGVEZWZpbml0aW9uLVN5c01MLVJlcXVpcmVtZW50cy1SZXF1aXJlbWVudC1TYXRpc2ZpZWRCeS1lQW5ub3RhdGlvbnMtZGV0YWlscyIga2V5PSJkb2N1bWVudGF0aW9uIiB2YWx1ZT0iRGVyaXZlZCBmcm9tIGFsbCBlbGVtZW50cyB0aGF0IGFyZSB0aGUgY2xpZW50IG9mIGEgwqtzYXRpc2Z5wrsgcmVsYXRpb25zaGlwIGZvciB3aGljaCB0aGlzIHJlcXVpcmVtZW50IGlzIGEgc3VwcGxpZXIuIi8+DQorICAgICAgICAgICAgICA8L2VBbm5vdGF0aW9ucz4NCisgICAgICAgICAgICAgIDxlVHlwZSB4bWk6dHlwZT0iZWNvcmU6RUNsYXNzIiBocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3VtbDIvNS4wLjAvVU1MIy8vTmFtZWRFbGVtZW50Ii8+DQorICAgICAgICAgICAgPC9lU3RydWN0dXJhbEZlYXR1cmVzPg0KKyAgICAgICAgICAgIDxlU3RydWN0dXJhbEZlYXR1cmVzIHhtaTp0eXBlPSJlY29yZTpFUmVmZXJlbmNlIiB4bWk6aWQ9IlByb2ZpbGVEZWZpbml0aW9uLVN5c01MLVJlcXVpcmVtZW50cy1SZXF1aXJlbWVudC1SZWZpbmVkQnkiIG5hbWU9IlJlZmluZWRCeSIgb3JkZXJlZD0iZmFsc2UiIGxvd2VyQm91bmQ9IjEiIHVwcGVyQm91bmQ9Ii0xIiB2b2xhdGlsZT0idHJ1ZSIgdHJhbnNpZW50PSJ0cnVlIiBkZXJpdmVkPSJ0cnVlIj4NCisgICAgICAgICAgICAgIDxlQW5ub3RhdGlvbnMgeG1pOmlkPSJQcm9maWxlRGVmaW5pdGlvbi1TeXNNTC1SZXF1aXJlbWVudHMtUmVxdWlyZW1lbnQtUmVmaW5lZEJ5LWVBbm5vdGF0aW9ucyIgc291cmNlPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2VtZi8yMDAyL0dlbk1vZGVsIj4NCisgICAgICAgICAgICAgICAgPGRldGFpbHMgeG1pOmlkPSJQcm9maWxlRGVmaW5pdGlvbi1TeXNNTC1SZXF1aXJlbWVudHMtUmVxdWlyZW1lbnQtUmVmaW5lZEJ5LWVBbm5vdGF0aW9ucy1kZXRhaWxzIiBrZXk9ImRvY3VtZW50YXRpb24iIHZhbHVlPSJEZXJpdmVkIGZyb20gYWxsIGVsZW1lbnRzIHRoYXQgYXJlIHRoZSBjbGllbnQgb2YgYSDCq3JlZmluZcK7IHJlbGF0aW9uc2hpcCBmb3Igd2hpY2ggdGhpcyByZXF1aXJlbWVudCBpcyBhIHN1cHBsaWVyLiIvPg0KKyAgICAgICAgICAgICAgPC9lQW5ub3RhdGlvbnM+DQorICAgICAgICAgICAgICA8ZVR5cGUgeG1pOnR5cGU9ImVjb3JlOkVDbGFzcyIgaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy91bWwyLzUuMC4wL1VNTCMvL05hbWVkRWxlbWVudCIvPg0KKyAgICAgICAgICAgIDwvZVN0cnVjdHVyYWxGZWF0dXJlcz4NCisgICAgICAgICAgICA8ZVN0cnVjdHVyYWxGZWF0dXJlcyB4bWk6dHlwZT0iZWNvcmU6RVJlZmVyZW5jZSIgeG1pOmlkPSJQcm9maWxlRGVmaW5pdGlvbi1TeXNNTC1SZXF1aXJlbWVudHMtUmVxdWlyZW1lbnQtVHJhY2VkVG8iIG5hbWU9IlRyYWNlZFRvIiBvcmRlcmVkPSJmYWxzZSIgbG93ZXJCb3VuZD0iMSIgdXBwZXJCb3VuZD0iLTEiIHZvbGF0aWxlPSJ0cnVlIiB0cmFuc2llbnQ9InRydWUiIGRlcml2ZWQ9InRydWUiPg0KKyAgICAgICAgICAgICAgPGVBbm5vdGF0aW9ucyB4bWk6aWQ9IlByb2ZpbGVEZWZpbml0aW9uLVN5c01MLVJlcXVpcmVtZW50cy1SZXF1aXJlbWVudC1UcmFjZWRUby1lQW5ub3RhdGlvbnMiIHNvdXJjZT0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9lbWYvMjAwMi9HZW5Nb2RlbCI+DQorICAgICAgICAgICAgICAgIDxkZXRhaWxzIHhtaTppZD0iUHJvZmlsZURlZmluaXRpb24tU3lzTUwtUmVxdWlyZW1lbnRzLVJlcXVpcmVtZW50LVRyYWNlZFRvLWVBbm5vdGF0aW9ucy1kZXRhaWxzIiBrZXk9ImRvY3VtZW50YXRpb24iIHZhbHVlPSJEZXJpdmVkIGZyb20gYWxsIGVsZW1lbnRzIHRoYXQgYXJlIHRoZSBjbGllbnQgb2YgYSDCq3RyYWNlwrsgcmVsYXRpb25zaGlwIGZvciB3aGljaCB0aGlzIHJlcXVpcmVtZW50IGlzIGEgc3VwcGxpZXIuIi8+DQorICAgICAgICAgICAgICA8L2VBbm5vdGF0aW9ucz4NCisgICAgICAgICAgICAgIDxlVHlwZSB4bWk6dHlwZT0iZWNvcmU6RUNsYXNzIiBocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3VtbDIvNS4wLjAvVU1MIy8vTmFtZWRFbGVtZW50Ii8+DQorICAgICAgICAgICAgPC9lU3RydWN0dXJhbEZlYXR1cmVzPg0KKyAgICAgICAgICAgIDxlU3RydWN0dXJhbEZlYXR1cmVzIHhtaTp0eXBlPSJlY29yZTpFUmVmZXJlbmNlIiB4bWk6aWQ9IlByb2ZpbGVEZWZpbml0aW9uLVN5c01MLVJlcXVpcmVtZW50cy1SZXF1aXJlbWVudC1WZXJpZmllZEJ5IiBuYW1lPSJWZXJpZmllZEJ5IiBvcmRlcmVkPSJmYWxzZSIgdXBwZXJCb3VuZD0iLTEiIHZvbGF0aWxlPSJ0cnVlIiB0cmFuc2llbnQ9InRydWUiIGRlcml2ZWQ9InRydWUiPg0KKyAgICAgICAgICAgICAgPGVBbm5vdGF0aW9ucyB4bWk6aWQ9IlByb2ZpbGVEZWZpbml0aW9uLVN5c01MLVJlcXVpcmVtZW50cy1SZXF1aXJlbWVudC1WZXJpZmllZEJ5LWVBbm5vdGF0aW9ucyIgc291cmNlPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2VtZi8yMDAyL0dlbk1vZGVsIj4NCisgICAgICAgICAgICAgICAgPGRldGFpbHMgeG1pOmlkPSJQcm9maWxlRGVmaW5pdGlvbi1TeXNNTC1SZXF1aXJlbWVudHMtUmVxdWlyZW1lbnQtVmVyaWZpZWRCeS1lQW5ub3RhdGlvbnMtZGV0YWlscyIga2V5PSJkb2N1bWVudGF0aW9uIiB2YWx1ZT0iRGVyaXZlZCBmcm9tIGFsbCBlbGVtZW50cyB0aGF0IGFyZSB0aGUgY2xpZW50IG9mIGEgwqt2ZXJpZnnCuyByZWxhdGlvbnNoaXAgZm9yIHdoaWNoIHRoaXMgcmVxdWlyZW1lbnQgaXMgYSBzdXBwbGllci4iLz4NCisgICAgICAgICAgICAgIDwvZUFubm90YXRpb25zPg0KKyAgICAgICAgICAgICAgPGVUeXBlIHhtaTp0eXBlPSJlY29yZTpFQ2xhc3MiIGhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvdW1sMi81LjAuMC9VTUwjLy9OYW1lZEVsZW1lbnQiLz4NCisgICAgICAgICAgICA8L2VTdHJ1Y3R1cmFsRmVhdHVyZXM+DQorICAgICAgICAgICAgPGVTdHJ1Y3R1cmFsRmVhdHVyZXMgeG1pOnR5cGU9ImVjb3JlOkVSZWZlcmVuY2UiIHhtaTppZD0iUHJvZmlsZURlZmluaXRpb24tU3lzTUwtUmVxdWlyZW1lbnRzLVJlcXVpcmVtZW50LU1hc3RlciIgbmFtZT0iTWFzdGVyIiBvcmRlcmVkPSJmYWxzZSIgbG93ZXJCb3VuZD0iMSIgZVR5cGU9IlByb2ZpbGVEZWZpbml0aW9uLVN5c01MLVJlcXVpcmVtZW50cy1SZXF1aXJlbWVudCIgdm9sYXRpbGU9InRydWUiIHRyYW5zaWVudD0idHJ1ZSIgZGVyaXZlZD0idHJ1ZSI+DQorICAgICAgICAgICAgICA8ZUFubm90YXRpb25zIHhtaTppZD0iUHJvZmlsZURlZmluaXRpb24tU3lzTUwtUmVxdWlyZW1lbnRzLVJlcXVpcmVtZW50LU1hc3Rlci1lQW5ub3RhdGlvbnMiIHNvdXJjZT0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9lbWYvMjAwMi9HZW5Nb2RlbCI+DQorICAgICAgICAgICAgICAgIDxkZXRhaWxzIHhtaTppZD0iUHJvZmlsZURlZmluaXRpb24tU3lzTUwtUmVxdWlyZW1lbnRzLVJlcXVpcmVtZW50LU1hc3Rlci1lQW5ub3RhdGlvbnMtZGV0YWlscyIga2V5PSJkb2N1bWVudGF0aW9uIiB2YWx1ZT0iVGhpcyBpcyBhIGRlcml2ZWQgcHJvcGVydHkgdGhhdCBsaXN0cyB0aGUgbWFzdGVyIHJlcXVpcmVtZW50IGZvciB0aGlzIHNsYXZlIHJlcXVpcmVtZW50LiBUaGUgbWFzdGVyIGF0dHJpYnV0ZSBpcyBkZXJpdmVkIGZyb20gdGhlIHN1cHBsaWVyIG9mIHRoZSBDb3B5IGRlcGVuZGVuY3kgdGhhdCBoYXMgdGhpcyByZXF1aXJlbWVudCBhcyB0aGUgc2xhdmUuIi8+DQorICAgICAgICAgICAgICA8L2VBbm5vdGF0aW9ucz4NCisgICAgICAgICAgICA8L2VTdHJ1Y3R1cmFsRmVhdHVyZXM+DQorICAgICAgICAgIDwvZUNsYXNzaWZpZXJzPg0KKyAgICAgICAgICA8ZUNsYXNzaWZpZXJzIHhtaTp0eXBlPSJlY29yZTpFQ2xhc3MiIHhtaTppZD0iUHJvZmlsZURlZmluaXRpb24tU3lzTUwtUmVxdWlyZW1lbnRzLUNvcHkiIG5hbWU9IkNvcHkiIGVTdXBlclR5cGVzPSJQcm9maWxlRGVmaW5pdGlvbi1TeXNNTC1SZXF1aXJlbWVudHMtVHJhY2UiPg0KKyAgICAgICAgICAgIDxlQW5ub3RhdGlvbnMgeG1pOmlkPSJQcm9maWxlRGVmaW5pdGlvbi1TeXNNTC1SZXF1aXJlbWVudHMtQ29weS1lQW5ub3RhdGlvbnMxIiBzb3VyY2U9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvdW1sMi8yLjAuMC9VTUwiIHJlZmVyZW5jZXM9IlN5c01MLVJlcXVpcmVtZW50cy1Db3B5Ii8+DQorICAgICAgICAgICAgPGVBbm5vdGF0aW9ucyB4bWk6aWQ9IlByb2ZpbGVEZWZpbml0aW9uLVN5c01MLVJlcXVpcmVtZW50cy1Db3B5LWVBbm5vdGF0aW9uczIiIHNvdXJjZT0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9lbWYvMjAwMi9HZW5Nb2RlbCI+DQorICAgICAgICAgICAgICA8ZGV0YWlscyB4bWk6aWQ9IlByb2ZpbGVEZWZpbml0aW9uLVN5c01MLVJlcXVpcmVtZW50cy1Db3B5LWVBbm5vdGF0aW9uczItZGV0YWlscyIga2V5PSJkb2N1bWVudGF0aW9uIiB2YWx1ZT0iQSBDb3B5IHJlbGF0aW9uc2hpcCBpcyBhIGRlcGVuZGVuY3kgYmV0d2VlbiBhIHN1cHBsaWVyIHJlcXVpcmVtZW50IGFuZCBhIGNsaWVudCByZXF1aXJlbWVudCB0aGF0IHNwZWNpZmllcyB0aGF0IHRoZSB0ZXh0IG9mIHRoZSBjbGllbnQgcmVxdWlyZW1lbnQgaXMgYSByZWFkLW9ubHkgY29weSBvZiB0aGUgdGV4dCBvZiB0aGUgc3VwcGxpZXIgcmVxdWlyZW1lbnQuIi8+DQorICAgICAgICAgICAgPC9lQW5ub3RhdGlvbnM+DQorICAgICAgICAgIDwvZUNsYXNzaWZpZXJzPg0KKyAgICAgICAgICA8ZUNsYXNzaWZpZXJzIHhtaTp0eXBlPSJlY29yZTpFQ2xhc3MiIHhtaTppZD0iUHJvZmlsZURlZmluaXRpb24tU3lzTUwtUmVxdWlyZW1lbnRzLVNhdGlzZnkiIG5hbWU9IlNhdGlzZnkiIGVTdXBlclR5cGVzPSJQcm9maWxlRGVmaW5pdGlvbi1TeXNNTC1SZXF1aXJlbWVudHMtVHJhY2UiPg0KKyAgICAgICAgICAgIDxlQW5ub3RhdGlvbnMgeG1pOmlkPSJQcm9maWxlRGVmaW5pdGlvbi1TeXNNTC1SZXF1aXJlbWVudHMtU2F0aXNmeS1lQW5ub3RhdGlvbnMxIiBzb3VyY2U9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvdW1sMi8yLjAuMC9VTUwiIHJlZmVyZW5jZXM9IlN5c01MLVJlcXVpcmVtZW50cy1TYXRpc2Z5Ii8+DQorICAgICAgICAgICAgPGVBbm5vdGF0aW9ucyB4bWk6aWQ9IlByb2ZpbGVEZWZpbml0aW9uLVN5c01MLVJlcXVpcmVtZW50cy1TYXRpc2Z5LWVBbm5vdGF0aW9uczIiIHNvdXJjZT0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9lbWYvMjAwMi9HZW5Nb2RlbCI+DQorICAgICAgICAgICAgICA8ZGV0YWlscyB4bWk6aWQ9IlByb2ZpbGVEZWZpbml0aW9uLVN5c01MLVJlcXVpcmVtZW50cy1TYXRpc2Z5LWVBbm5vdGF0aW9uczItZGV0YWlscyIga2V5PSJkb2N1bWVudGF0aW9uIiB2YWx1ZT0iQSBTYXRpc2Z5IHJlbGF0aW9uc2hpcCBpcyBhIGRlcGVuZGVuY3kgYmV0d2VlbiBhIHJlcXVpcmVtZW50IGFuZCBhIG1vZGVsIGVsZW1lbnQgdGhhdCBmdWxmaWxscyB0aGUgcmVxdWlyZW1lbnQuIEFzIHdpdGggb3RoZXIgZGVwZW5kZW5jaWVzLCB0aGUgYXJyb3cgZGlyZWN0aW9uIHBvaW50cyBmcm9tIHRoZSBzYXRpc2Z5aW5nIChjbGllbnQpIG1vZGVsIGVsZW1lbnQgdG8gdGhlIChzdXBwbGllcikgcmVxdWlyZW1lbnQgdGhhdCBpcyBzYXRpc2ZpZWQuIi8+DQorICAgICAgICAgICAgPC9lQW5ub3RhdGlvbnM+DQorICAgICAgICAgICAgPGVPcGVyYXRpb25zIHhtaTppZD0iUHJvZmlsZURlZmluaXRpb24tU3lzTUwtUmVxdWlyZW1lbnRzLVNhdGlzZnktZ2V0U2F0aXNmaWVzIiBuYW1lPSJnZXRTYXRpc2ZpZXMiIG9yZGVyZWQ9ImZhbHNlIiBsb3dlckJvdW5kPSIxIiB1cHBlckJvdW5kPSItMSIgZVR5cGU9IlByb2ZpbGVEZWZpbml0aW9uLVN5c01MLVJlcXVpcmVtZW50cy1SZXF1aXJlbWVudCI+DQorICAgICAgICAgICAgICA8ZVBhcmFtZXRlcnMgeG1pOmlkPSJQcm9maWxlRGVmaW5pdGlvbi1TeXNNTC1SZXF1aXJlbWVudHMtU2F0aXNmeS1nZXRTYXRpc2ZpZXMtcmVmIiBuYW1lPSJyZWYiIG9yZGVyZWQ9ImZhbHNlIiBsb3dlckJvdW5kPSIxIj4NCisgICAgICAgICAgICAgICAgPGVUeXBlIHhtaTp0eXBlPSJlY29yZTpFQ2xhc3MiIGhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvdW1sMi81LjAuMC9VTUwjLy9OYW1lZEVsZW1lbnQiLz4NCisgICAgICAgICAgICAgIDwvZVBhcmFtZXRlcnM+DQorICAgICAgICAgICAgPC9lT3BlcmF0aW9ucz4NCisgICAgICAgICAgPC9lQ2xhc3NpZmllcnM+DQorICAgICAgICAgIDxlQ2xhc3NpZmllcnMgeG1pOnR5cGU9ImVjb3JlOkVDbGFzcyIgeG1pOmlkPSJQcm9maWxlRGVmaW5pdGlvbi1TeXNNTC1SZXF1aXJlbWVudHMtVGVzdENhc2UiIG5hbWU9IlRlc3RDYXNlIj4NCisgICAgICAgICAgICA8ZUFubm90YXRpb25zIHhtaTppZD0iUHJvZmlsZURlZmluaXRpb24tU3lzTUwtUmVxdWlyZW1lbnRzLVRlc3RDYXNlLWVBbm5vdGF0aW9uczEiIHNvdXJjZT0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy91bWwyLzIuMC4wL1VNTCIgcmVmZXJlbmNlcz0iU3lzTUwtUmVxdWlyZW1lbnRzLVRlc3RDYXNlIi8+DQorICAgICAgICAgICAgPGVBbm5vdGF0aW9ucyB4bWk6aWQ9IlByb2ZpbGVEZWZpbml0aW9uLVN5c01MLVJlcXVpcmVtZW50cy1UZXN0Q2FzZS1lQW5ub3RhdGlvbnMyIiBzb3VyY2U9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvZW1mLzIwMDIvR2VuTW9kZWwiPg0KKyAgICAgICAgICAgICAgPGRldGFpbHMgeG1pOmlkPSJQcm9maWxlRGVmaW5pdGlvbi1TeXNNTC1SZXF1aXJlbWVudHMtVGVzdENhc2UtZUFubm90YXRpb25zMi1kZXRhaWxzIiBrZXk9ImRvY3VtZW50YXRpb24iIHZhbHVlPSJBIHRlc3QgY2FzZSBpcyBhIG1ldGhvZCBmb3IgdmVyaWZ5aW5nIGEgcmVxdWlyZW1lbnQgaXMgc2F0aXNmaWVkLiIvPg0KKyAgICAgICAgICAgIDwvZUFubm90YXRpb25zPg0KKyAgICAgICAgICAgIDxlU3RydWN0dXJhbEZlYXR1cmVzIHhtaTp0eXBlPSJlY29yZTpFUmVmZXJlbmNlIiB4bWk6aWQ9IlByb2ZpbGVEZWZpbml0aW9uLVN5c01MLVJlcXVpcmVtZW50cy1UZXN0Q2FzZS1iYXNlX09wZXJhdGlvbiIgbmFtZT0iYmFzZV9PcGVyYXRpb24iIG9yZGVyZWQ9ImZhbHNlIj4NCisgICAgICAgICAgICAgIDxlVHlwZSB4bWk6dHlwZT0iZWNvcmU6RUNsYXNzIiBocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3VtbDIvNS4wLjAvVU1MIy8vT3BlcmF0aW9uIi8+DQorICAgICAgICAgICAgPC9lU3RydWN0dXJhbEZlYXR1cmVzPg0KKyAgICAgICAgICAgIDxlU3RydWN0dXJhbEZlYXR1cmVzIHhtaTp0eXBlPSJlY29yZTpFUmVmZXJlbmNlIiB4bWk6aWQ9IlByb2ZpbGVEZWZpbml0aW9uLVN5c01MLVJlcXVpcmVtZW50cy1UZXN0Q2FzZS1iYXNlX0JlaGF2aW9yIiBuYW1lPSJiYXNlX0JlaGF2aW9yIiBvcmRlcmVkPSJmYWxzZSI+DQorICAgICAgICAgICAgICA8ZVR5cGUgeG1pOnR5cGU9ImVjb3JlOkVDbGFzcyIgaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy91bWwyLzUuMC4wL1VNTCMvL0JlaGF2aW9yIi8+DQorICAgICAgICAgICAgPC9lU3RydWN0dXJhbEZlYXR1cmVzPg0KKyAgICAgICAgICA8L2VDbGFzc2lmaWVycz4NCisgICAgICAgICAgPGVDbGFzc2lmaWVycyB4bWk6dHlwZT0iZWNvcmU6RUNsYXNzIiB4bWk6aWQ9IlByb2ZpbGVEZWZpbml0aW9uLVN5c01MLVJlcXVpcmVtZW50cy1WZXJpZnkiIG5hbWU9IlZlcmlmeSIgZVN1cGVyVHlwZXM9IlByb2ZpbGVEZWZpbml0aW9uLVN5c01MLVJlcXVpcmVtZW50cy1UcmFjZSI+DQorICAgICAgICAgICAgPGVBbm5vdGF0aW9ucyB4bWk6aWQ9IlByb2ZpbGVEZWZpbml0aW9uLVN5c01MLVJlcXVpcmVtZW50cy1WZXJpZnktZUFubm90YXRpb25zMSIgc291cmNlPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3VtbDIvMi4wLjAvVU1MIiByZWZlcmVuY2VzPSJTeXNNTC1SZXF1aXJlbWVudHMtVmVyaWZ5Ii8+DQorICAgICAgICAgICAgPGVBbm5vdGF0aW9ucyB4bWk6aWQ9IlByb2ZpbGVEZWZpbml0aW9uLVN5c01MLVJlcXVpcmVtZW50cy1WZXJpZnktZUFubm90YXRpb25zMiIgc291cmNlPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2VtZi8yMDAyL0dlbk1vZGVsIj4NCisgICAgICAgICAgICAgIDxkZXRhaWxzIHhtaTppZD0iUHJvZmlsZURlZmluaXRpb24tU3lzTUwtUmVxdWlyZW1lbnRzLVZlcmlmeS1lQW5ub3RhdGlvbnMyLWRldGFpbHMiIGtleT0iZG9jdW1lbnRhdGlvbiIgdmFsdWU9IkEgVmVyaWZ5IHJlbGF0aW9uc2hpcCBpcyBhIGRlcGVuZGVuY3kgYmV0d2VlbiBhIHJlcXVpcmVtZW50IGFuZCBhIHRlc3QgY2FzZSBvciBvdGhlciBtb2RlbCBlbGVtZW50IHRoYXQgY2FuIGRldGVybWluZSB3aGV0aGVyIGEgc3lzdGVtIGZ1bGZpbGxzIHRoZSByZXF1aXJlbWVudC4gQXMgd2l0aCBvdGhlciBkZXBlbmRlbmNpZXMsIHRoZSBhcnJvdyBkaXJlY3Rpb24gcG9pbnRzIGZyb20gdGhlIChjbGllbnQpIGVsZW1lbnQgdG8gdGhlIChzdXBwbGllcikgcmVxdWlyZW1lbnQuIi8+DQorICAgICAgICAgICAgPC9lQW5ub3RhdGlvbnM+DQorICAgICAgICAgICAgPGVPcGVyYXRpb25zIHhtaTppZD0iUHJvZmlsZURlZmluaXRpb24tU3lzTUwtUmVxdWlyZW1lbnRzLVZlcmlmeS1nZXRWZXJpZmllcyIgbmFtZT0iZ2V0VmVyaWZpZXMiIG9yZGVyZWQ9ImZhbHNlIiBsb3dlckJvdW5kPSIxIiB1cHBlckJvdW5kPSItMSIgZVR5cGU9IlByb2ZpbGVEZWZpbml0aW9uLVN5c01MLVJlcXVpcmVtZW50cy1SZXF1aXJlbWVudCI+DQorICAgICAgICAgICAgICA8ZVBhcmFtZXRlcnMgeG1pOmlkPSJQcm9maWxlRGVmaW5pdGlvbi1TeXNNTC1SZXF1aXJlbWVudHMtVmVyaWZ5LWdldFZlcmlmaWVzLXJlZiIgbmFtZT0icmVmIiBvcmRlcmVkPSJmYWxzZSIgbG93ZXJCb3VuZD0iMSI+DQorICAgICAgICAgICAgICAgIDxlVHlwZSB4bWk6dHlwZT0iZWNvcmU6RUNsYXNzIiBocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3VtbDIvNS4wLjAvVU1MIy8vTmFtZWRFbGVtZW50Ii8+DQorICAgICAgICAgICAgICA8L2VQYXJhbWV0ZXJzPg0KKyAgICAgICAgICAgIDwvZU9wZXJhdGlvbnM+DQorICAgICAgICAgIDwvZUNsYXNzaWZpZXJzPg0KKyAgICAgICAgICA8ZUNsYXNzaWZpZXJzIHhtaTp0eXBlPSJlY29yZTpFQ2xhc3MiIHhtaTppZD0iUHJvZmlsZURlZmluaXRpb24tU3lzTUwtUmVxdWlyZW1lbnRzLVJlZmluZSIgbmFtZT0iUmVmaW5lIj4NCisgICAgICAgICAgICA8ZUFubm90YXRpb25zIHhtaTppZD0iUHJvZmlsZURlZmluaXRpb24tU3lzTUwtUmVxdWlyZW1lbnRzLVJlZmluZS1lQW5ub3RhdGlvbnMiIHNvdXJjZT0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy91bWwyLzIuMC4wL1VNTCIgcmVmZXJlbmNlcz0iU3lzTUwtUmVxdWlyZW1lbnRzLVJlZmluZSIvPg0KKyAgICAgICAgICAgIDxlU3VwZXJUeXBlcyBocmVmPSIjUHJvZmlsZURlZmluaXRpb24tU3lzTUwtQmxvY2tzLURpcmVjdGVkUmVsYXRpb25zaGlwUHJvcGVydHlQYXRoIi8+DQorICAgICAgICAgICAgPGVTdXBlclR5cGVzIGhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvdW1sMi81LjAuMC9VTUwvUHJvZmlsZS9TdGFuZGFyZCMvL1JlZmluZSIvPg0KKyAgICAgICAgICAgIDxlT3BlcmF0aW9ucyB4bWk6aWQ9IlByb2ZpbGVEZWZpbml0aW9uLVN5c01MLVJlcXVpcmVtZW50cy1SZWZpbmUtZ2V0UmVmaW5lcyIgbmFtZT0iZ2V0UmVmaW5lcyIgb3JkZXJlZD0iZmFsc2UiIGxvd2VyQm91bmQ9IjEiIHVwcGVyQm91bmQ9Ii0xIiBlVHlwZT0iUHJvZmlsZURlZmluaXRpb24tU3lzTUwtUmVxdWlyZW1lbnRzLVJlcXVpcmVtZW50Ij4NCisgICAgICAgICAgICAgIDxlUGFyYW1ldGVycyB4bWk6aWQ9IlByb2ZpbGVEZWZpbml0aW9uLVN5c01MLVJlcXVpcmVtZW50cy1SZWZpbmUtZ2V0UmVmaW5lcy1yZWYiIG5hbWU9InJlZiIgb3JkZXJlZD0iZmFsc2UiIGxvd2VyQm91bmQ9IjEiPg0KKyAgICAgICAgICAgICAgICA8ZVR5cGUgeG1pOnR5cGU9ImVjb3JlOkVDbGFzcyIgaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy91bWwyLzUuMC4wL1VNTCMvL05hbWVkRWxlbWVudCIvPg0KKyAgICAgICAgICAgICAgPC9lUGFyYW1ldGVycz4NCisgICAgICAgICAgICA8L2VPcGVyYXRpb25zPg0KKyAgICAgICAgICA8L2VDbGFzc2lmaWVycz4NCisgICAgICAgIDwvZVN1YnBhY2thZ2VzPg0KKyAgICAgICAgPGVTdWJwYWNrYWdlcyB4bWk6aWQ9IlByb2ZpbGVEZWZpbml0aW9uLVN5c01MLURlcHJlY2F0ZWRFbGVtZW50cyIgbmFtZT0iRGVwcmVjYXRlZEVsZW1lbnRzIiBuc1VSST0iaHR0cDovLy9TeXNNTC9EZXByZWNhdGVkRWxlbWVudHMuZWNvcmUiIG5zUHJlZml4PSJTeXNNTC5EZXByZWNhdGVkRWxlbWVudHMiPg0KKyAgICAgICAgICA8ZUFubm90YXRpb25zIHhtaTppZD0iUHJvZmlsZURlZmluaXRpb24tU3lzTUwtRGVwcmVjYXRlZEVsZW1lbnRzLWVBbm5vdGF0aW9ucyIgc291cmNlPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3VtbDIvNC4wLjAvVU1MIiByZWZlcmVuY2VzPSJTeXNNTC1EZXByZWNhdGVkRWxlbWVudHMiLz4NCisgICAgICAgICAgPGVDbGFzc2lmaWVycyB4bWk6dHlwZT0iZWNvcmU6RUNsYXNzIiB4bWk6aWQ9IlByb2ZpbGVEZWZpbml0aW9uLVN5c01MLURlcHJlY2F0ZWRFbGVtZW50cy1GbG93UG9ydCIgbmFtZT0iRmxvd1BvcnQiPg0KKyAgICAgICAgICAgIDxlQW5ub3RhdGlvbnMgeG1pOmlkPSJQcm9maWxlRGVmaW5pdGlvbi1TeXNNTC1EZXByZWNhdGVkRWxlbWVudHMtRmxvd1BvcnQtZUFubm90YXRpb25zMSIgc291cmNlPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3VtbDIvMi4wLjAvVU1MIiByZWZlcmVuY2VzPSJTeXNNTC1EZXByZWNhdGVkRWxlbWVudHMtRmxvd1BvcnQiLz4NCisgICAgICAgICAgICA8ZUFubm90YXRpb25zIHhtaTppZD0iUHJvZmlsZURlZmluaXRpb24tU3lzTUwtRGVwcmVjYXRlZEVsZW1lbnRzLUZsb3dQb3J0LWVBbm5vdGF0aW9uczIiIHNvdXJjZT0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9lbWYvMjAwMi9HZW5Nb2RlbCI+DQorICAgICAgICAgICAgICA8ZGV0YWlscyB4bWk6aWQ9IlByb2ZpbGVEZWZpbml0aW9uLVN5c01MLURlcHJlY2F0ZWRFbGVtZW50cy1GbG93UG9ydC1lQW5ub3RhdGlvbnMyLWRldGFpbHMiIGtleT0iZG9jdW1lbnRhdGlvbiIgdmFsdWU9IkEgRmxvd1BvcnQgaXMgYW4gaW50ZXJhY3Rpb24gcG9pbnQgdGhyb3VnaCB3aGljaCBpbnB1dCBhbmQvb3Igb3V0cHV0IG9mIGl0ZW1zIHN1Y2ggYXMgZGF0YSwgbWF0ZXJpYWwsIG9yIGVuZXJneSBtYXkgZmxvdy4gVGhpcyBlbmFibGVzIHRoZSBvd25pbmcgYmxvY2sgdG8gZGVjbGFyZSB3aGljaCBpdGVtcyBpdCBtYXkgZXhjaGFuZ2Ugd2l0aCBpdHMgZW52aXJvbm1lbnQgYW5kIHRoZSBpbnRlcmFjdGlvbiBwb2ludHMgdGhyb3VnaCB3aGljaCB0aGUgZXhjaGFuZ2UgaXMgbWFkZS4gV2UgZGlzdGluZ3Vpc2ggYmV0d2VlbiBhdG9taWMgZmxvdyBwb3J0IGFuZCBhIG5vbmF0b21pYyBmbG93IHBvcnQuIEF0b21pYyBmbG93IHBvcnRzIHJlbGF5IGl0ZW1zIHRoYXQgYXJlIGNsYXNzaWZpZWQgYnkgYSBzaW5nbGUgQmxvY2ssIFZhbHVlVHlwZSwgRGF0YVR5cGUsIG9yIFNpZ25hbCBjbGFzc2lmaWVyLiBBIG5vbmF0b21pYyBmbG93IHBvcnQgcmVsYXlzIGl0ZW1zIG9mIHNldmVyYWwgdHlwZXMgYXMgc3BlY2lmaWVkIGJ5IGEgRmxvd1NwZWNpZmljYXRpb24uIEZsb3cgcG9ydHMgYW5kIGFzc29jaWF0ZWQgZmxvdyBzcGVjaWZpY2F0aW9ucyBkZWZpbmUg4oCcd2hhdCBjYW4gZmxvd+KAnSBiZXR3ZWVuIHRoZSBibG9jayBhbmQgaXRzIGVudmlyb25tZW50LCB3aGVyZWFzIGl0ZW0gZmxvd3Mgc3BlY2lmeSDigJx3aGF0IGRvZXMgZmxvd+KAnSBpbiBhIHNwZWNpZmljIHVzYWdlIGNvbnRleHQuIEZsb3cgcG9ydHMgcmVsYXkgaXRlbXMgdG8gdGhlaXIgb3duaW5nIGJsb2NrIG9yIHRvIGEgY29ubmVjdG9yIHRoYXQgY29ubmVjdHMgdGhlbSB3aXRoIHRoZWlyIG93bmVy4oCZcyBpbnRlcm5hbCBwYXJ0cyAoaW50ZXJuYWwgY29ubmVjdG9yKS4iLz4NCisgICAgICAgICAgICA8L2VBbm5vdGF0aW9ucz4NCisgICAgICAgICAgICA8ZVN0cnVjdHVyYWxGZWF0dXJlcyB4bWk6dHlwZT0iZWNvcmU6RVJlZmVyZW5jZSIgeG1pOmlkPSJQcm9maWxlRGVmaW5pdGlvbi1TeXNNTC1EZXByZWNhdGVkRWxlbWVudHMtRmxvd1BvcnQtYmFzZV9Qb3J0IiBuYW1lPSJiYXNlX1BvcnQiIG9yZGVyZWQ9ImZhbHNlIiBsb3dlckJvdW5kPSIxIj4NCisgICAgICAgICAgICAgIDxlVHlwZSB4bWk6dHlwZT0iZWNvcmU6RUNsYXNzIiBocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3VtbDIvNS4wLjAvVU1MIy8vUG9ydCIvPg0KKyAgICAgICAgICAgIDwvZVN0cnVjdHVyYWxGZWF0dXJlcz4NCisgICAgICAgICAgICA8ZVN0cnVjdHVyYWxGZWF0dXJlcyB4bWk6dHlwZT0iZWNvcmU6RUF0dHJpYnV0ZSIgeG1pOmlkPSJQcm9maWxlRGVmaW5pdGlvbi1TeXNNTC1EZXByZWNhdGVkRWxlbWVudHMtRmxvd1BvcnQtZGlyZWN0aW9uIiBuYW1lPSJkaXJlY3Rpb24iIG9yZGVyZWQ9ImZhbHNlIiBsb3dlckJvdW5kPSIxIiBlVHlwZT0iUHJvZmlsZURlZmluaXRpb24tU3lzTUwtUG9ydHNGbG93cy1GbG93RGlyZWN0aW9uIiBkZWZhdWx0VmFsdWVMaXRlcmFsPSJpbm91dCI+DQorICAgICAgICAgICAgICA8ZUFubm90YXRpb25zIHhtaTppZD0iUHJvZmlsZURlZmluaXRpb24tU3lzTUwtRGVwcmVjYXRlZEVsZW1lbnRzLUZsb3dQb3J0LWRpcmVjdGlvbi1lQW5ub3RhdGlvbnMiIHNvdXJjZT0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9lbWYvMjAwMi9HZW5Nb2RlbCI+DQorICAgICAgICAgICAgICAgIDxkZXRhaWxzIHhtaTppZD0iUHJvZmlsZURlZmluaXRpb24tU3lzTUwtRGVwcmVjYXRlZEVsZW1lbnRzLUZsb3dQb3J0LWRpcmVjdGlvbi1lQW5ub3RhdGlvbnMtZGV0YWlscyIga2V5PSJkb2N1bWVudGF0aW9uIiB2YWx1ZT0iSW5kaWNhdGVzIHRoZSBkaXJlY3Rpb24gaW4gd2hpY2ggYW4gYXRvbWljIGZsb3cgcG9ydCByZWxheXMgaXRzIGl0ZW1zLiBJZiB0aGUgZGlyZWN0aW9uIGlzIHNldCB0byDigJxpbizigJ0gdGhlbiB0aGUgaXRlbXMgYXJlIHJlbGF5ZWQgZnJvbSBhbiBleHRlcm5hbCBjb25uZWN0b3IgdmlhIHRoZSBmbG93IHBvcnQgaW50byB0aGUgZmxvdyBwb3J04oCZcyBvd25lciAob3Igb25lIG9mIGl0cyBwYXJ0cykuIElmIHRoZSBkaXJlY3Rpb24gaXMgc2V0IHRvIOKAnG91dCzigJ0gdGhlbiB0aGUgaXRlbXMgYXJlIHJlbGF5ZWQgZnJvbSB0aGUgZmxvdyBwb3J04oCZcyBvd25lciwgdmlhIHRoZSBmbG93IHBvcnQsIHRocm91Z2ggYW4gZXh0ZXJuYWwgY29ubmVjdG9yIGF0dGFjaGVkIHRvIHRoZSBmbG93IHBvcnQuIElmIHRoZSBkaXJlY3Rpb24gaXMgc2V0IHRvIOKAnGlub3V0LOKAnSB0aGVuIGl0ZW1zIGNhbiBmbG93IGJvdGggd2F5cy4gQnkgZGVmYXVsdCwgdGhlIHZhbHVlIGlzIGlub3V0LiIvPg0KKyAgICAgICAgICAgICAgPC9lQW5ub3RhdGlvbnM+DQorICAgICAgICAgICAgPC9lU3RydWN0dXJhbEZlYXR1cmVzPg0KKyAgICAgICAgICAgIDxlU3RydWN0dXJhbEZlYXR1cmVzIHhtaTp0eXBlPSJlY29yZTpFQXR0cmlidXRlIiB4bWk6aWQ9IlByb2ZpbGVEZWZpbml0aW9uLVN5c01MLURlcHJlY2F0ZWRFbGVtZW50cy1GbG93UG9ydC1pc0F0b21pYyIgbmFtZT0iaXNBdG9taWMiIG9yZGVyZWQ9ImZhbHNlIiBsb3dlckJvdW5kPSIxIiB2b2xhdGlsZT0idHJ1ZSIgdHJhbnNpZW50PSJ0cnVlIiBkZXJpdmVkPSJ0cnVlIj4NCisgICAgICAgICAgICAgIDxlQW5ub3RhdGlvbnMgeG1pOmlkPSJQcm9maWxlRGVmaW5pdGlvbi1TeXNNTC1EZXByZWNhdGVkRWxlbWVudHMtRmxvd1BvcnQtaXNBdG9taWMtZUFubm90YXRpb25zIiBzb3VyY2U9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvZW1mLzIwMDIvR2VuTW9kZWwiPg0KKyAgICAgICAgICAgICAgICA8ZGV0YWlscyB4bWk6aWQ9IlByb2ZpbGVEZWZpbml0aW9uLVN5c01MLURlcHJlY2F0ZWRFbGVtZW50cy1GbG93UG9ydC1pc0F0b21pYy1lQW5ub3RhdGlvbnMtZGV0YWlscyIga2V5PSJkb2N1bWVudGF0aW9uIiB2YWx1ZT0iVGhpcyBpcyBhIGRlcml2ZWQgYXR0cmlidXRlIChkZXJpdmVkIGZyb20gdGhlIGZsb3cgcG9ydOKAmXMgdHlwZSkuIEZvciBhIGZsb3cgcG9ydCB0eXBlZCBieSBhIGZsb3cgc3BlY2lmaWNhdGlvbiB0aGUgdmFsdWUgb2YgdGhpcyBhdHRyaWJ1dGUgaXMgRmFsc2UsIG90aGVyd2lzZSB0aGUgdmFsdWUgaXMgVHJ1ZS4iLz4NCisgICAgICAgICAgICAgIDwvZUFubm90YXRpb25zPg0KKyAgICAgICAgICAgICAgPGVUeXBlIHhtaTp0eXBlPSJlY29yZTpFRGF0YVR5cGUiIGhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvdW1sMi81LjAuMC9UeXBlcyMvL0Jvb2xlYW4iLz4NCisgICAgICAgICAgICA8L2VTdHJ1Y3R1cmFsRmVhdHVyZXM+DQorICAgICAgICAgIDwvZUNsYXNzaWZpZXJzPg0KKyAgICAgICAgICA8ZUNsYXNzaWZpZXJzIHhtaTp0eXBlPSJlY29yZTpFQ2xhc3MiIHhtaTppZD0iUHJvZmlsZURlZmluaXRpb24tU3lzTUwtRGVwcmVjYXRlZEVsZW1lbnRzLUZsb3dTcGVjaWZpY2F0aW9uIiBuYW1lPSJGbG93U3BlY2lmaWNhdGlvbiI+DQorICAgICAgICAgICAgPGVBbm5vdGF0aW9ucyB4bWk6aWQ9IlByb2ZpbGVEZWZpbml0aW9uLVN5c01MLURlcHJlY2F0ZWRFbGVtZW50cy1GbG93U3BlY2lmaWNhdGlvbi1lQW5ub3RhdGlvbnMxIiBzb3VyY2U9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvdW1sMi8yLjAuMC9VTUwiIHJlZmVyZW5jZXM9IlN5c01MLURlcHJlY2F0ZWRFbGVtZW50cy1GbG93U3BlY2lmaWNhdGlvbiIvPg0KKyAgICAgICAgICAgIDxlQW5ub3RhdGlvbnMgeG1pOmlkPSJQcm9maWxlRGVmaW5pdGlvbi1TeXNNTC1EZXByZWNhdGVkRWxlbWVudHMtRmxvd1NwZWNpZmljYXRpb24tZUFubm90YXRpb25zMiIgc291cmNlPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2VtZi8yMDAyL0dlbk1vZGVsIj4NCisgICAgICAgICAgICAgIDxkZXRhaWxzIHhtaTppZD0iUHJvZmlsZURlZmluaXRpb24tU3lzTUwtRGVwcmVjYXRlZEVsZW1lbnRzLUZsb3dTcGVjaWZpY2F0aW9uLWVBbm5vdGF0aW9uczItZGV0YWlscyIga2V5PSJkb2N1bWVudGF0aW9uIiB2YWx1ZT0iQSBGbG93U3BlY2lmaWNhdGlvbiBzcGVjaWZpZXMgaW5wdXRzIGFuZCBvdXRwdXRzIGFzIGEgc2V0IG9mIGZsb3cgcHJvcGVydGllcy4gQSBmbG93IHNwZWNpZmljYXRpb24gaXMgdXNlZCBieSBmbG93IHBvcnRzIHRvIHNwZWNpZnkgd2hhdCBpdGVtcyBjYW4gZmxvdyB2aWEgdGhlIHBvcnQuIi8+DQorICAgICAgICAgICAgPC9lQW5ub3RhdGlvbnM+DQorICAgICAgICAgICAgPGVTdHJ1Y3R1cmFsRmVhdHVyZXMgeG1pOnR5cGU9ImVjb3JlOkVSZWZlcmVuY2UiIHhtaTppZD0iUHJvZmlsZURlZmluaXRpb24tU3lzTUwtRGVwcmVjYXRlZEVsZW1lbnRzLUZsb3dTcGVjaWZpY2F0aW9uLWJhc2VfSW50ZXJmYWNlIiBuYW1lPSJiYXNlX0ludGVyZmFjZSIgb3JkZXJlZD0iZmFsc2UiIGxvd2VyQm91bmQ9IjEiPg0KKyAgICAgICAgICAgICAgPGVUeXBlIHhtaTp0eXBlPSJlY29yZTpFQ2xhc3MiIGhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvdW1sMi81LjAuMC9VTUwjLy9JbnRlcmZhY2UiLz4NCisgICAgICAgICAgICA8L2VTdHJ1Y3R1cmFsRmVhdHVyZXM+DQorICAgICAgICAgIDwvZUNsYXNzaWZpZXJzPg0KKyAgICAgICAgICA8ZUNsYXNzaWZpZXJzIHhtaTp0eXBlPSJlY29yZTpFQ2xhc3MiIHhtaTppZD0iUHJvZmlsZURlZmluaXRpb24tU3lzTUwtRGVwcmVjYXRlZEVsZW1lbnRzLUFsbG9jYXRlZCIgbmFtZT0iQWxsb2NhdGVkIj4NCisgICAgICAgICAgICA8ZUFubm90YXRpb25zIHhtaTppZD0iUHJvZmlsZURlZmluaXRpb24tU3lzTUwtRGVwcmVjYXRlZEVsZW1lbnRzLUFsbG9jYXRlZC1lQW5ub3RhdGlvbnMxIiBzb3VyY2U9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvdW1sMi8yLjAuMC9VTUwiIHJlZmVyZW5jZXM9IlN5c01MLURlcHJlY2F0ZWRFbGVtZW50cy1BbGxvY2F0ZWQiLz4NCisgICAgICAgICAgICA8ZUFubm90YXRpb25zIHhtaTppZD0iUHJvZmlsZURlZmluaXRpb24tU3lzTUwtRGVwcmVjYXRlZEVsZW1lbnRzLUFsbG9jYXRlZC1lQW5ub3RhdGlvbnMyIiBzb3VyY2U9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvZW1mLzIwMDIvR2VuTW9kZWwiPg0KKyAgICAgICAgICAgICAgPGRldGFpbHMgeG1pOmlkPSJQcm9maWxlRGVmaW5pdGlvbi1TeXNNTC1EZXByZWNhdGVkRWxlbWVudHMtQWxsb2NhdGVkLWVBbm5vdGF0aW9uczItZGV0YWlscyIga2V5PSJkb2N1bWVudGF0aW9uIiB2YWx1ZT0iwqthbGxvY2F0ZWTCuyBpcyBhIHN0ZXJlb3R5cGUgdGhhdCBhcHBsaWVzIHRvIGFueSBOYW1lZEVsZW1lbnQgdGhhdCBoYXMgYXQgbGVhc3Qgb25lIGFsbG9jYXRpb24gcmVsYXRpb25zaGlwIHdpdGggYW5vdGhlciBOYW1lZEVsZW1lbnQuIMKrYWxsb2NhdGVkwrsgZWxlbWVudHMgbWF5IGJlIGRlc2lnbmF0ZWQgYnkgZWl0aGVyIHRoZSAvZnJvbSBvciAvdG8gZW5kIG9mIGFuIMKrYWxsb2NhdGXCuyBkZXBlbmRlbmN5LiBUaGUgwqthbGxvY2F0ZWTCuyBzdGVyZW90eXBlIHByb3ZpZGVzIGEgbWVjaGFuaXNtIGZvciBhIHBhcnRpY3VsYXIgbW9kZWwgZWxlbWVudCB0byBjb252ZW5pZW50bHkgcmV0YWluIGFuZCBkaXNwbGF5IHRoZSBlbGVtZW50IGF0IHRoZSBvcHBvc2l0ZSBlbmQgb2YgYW55IMKrYWxsb2NhdGXCuyBkZXBlbmRlbmN5LiBUaGlzIHN0ZXJlb3R5cGUgcHJvdmlkZXMgZm9yIHRoZSBwcm9wZXJ0aWVzIOKAnGFsbG9jYXRlZEZyb23igJ0gYW5kIOKAnGFsbG9jYXRlZFRvLOKAnSB3aGljaCBhcmUgZGVyaXZlZCBmcm9tIHRoZSDCq2FsbG9jYXRlwrsgZGVwZW5kZW5jeS4iLz4NCisgICAgICAgICAgICA8L2VBbm5vdGF0aW9ucz4NCisgICAgICAgICAgICA8ZVN0cnVjdHVyYWxGZWF0dXJlcyB4bWk6dHlwZT0iZWNvcmU6RVJlZmVyZW5jZSIgeG1pOmlkPSJQcm9maWxlRGVmaW5pdGlvbi1TeXNNTC1EZXByZWNhdGVkRWxlbWVudHMtQWxsb2NhdGVkLWJhc2VfTmFtZWRFbGVtZW50IiBuYW1lPSJiYXNlX05hbWVkRWxlbWVudCIgb3JkZXJlZD0iZmFsc2UiIGxvd2VyQm91bmQ9IjEiPg0KKyAgICAgICAgICAgICAgPGVUeXBlIHhtaTp0eXBlPSJlY29yZTpFQ2xhc3MiIGhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvdW1sMi81LjAuMC9VTUwjLy9OYW1lZEVsZW1lbnQiLz4NCisgICAgICAgICAgICA8L2VTdHJ1Y3R1cmFsRmVhdHVyZXM+DQorICAgICAgICAgICAgPGVTdHJ1Y3R1cmFsRmVhdHVyZXMgeG1pOnR5cGU9ImVjb3JlOkVSZWZlcmVuY2UiIHhtaTppZD0iUHJvZmlsZURlZmluaXRpb24tU3lzTUwtRGVwcmVjYXRlZEVsZW1lbnRzLUFsbG9jYXRlZC1hbGxvY2F0ZWRGcm9tIiBuYW1lPSJhbGxvY2F0ZWRGcm9tIiBvcmRlcmVkPSJmYWxzZSIgbG93ZXJCb3VuZD0iMSIgdXBwZXJCb3VuZD0iLTEiIHZvbGF0aWxlPSJ0cnVlIiB0cmFuc2llbnQ9InRydWUiIGRlcml2ZWQ9InRydWUiPg0KKyAgICAgICAgICAgICAgPGVBbm5vdGF0aW9ucyB4bWk6aWQ9IlByb2ZpbGVEZWZpbml0aW9uLVN5c01MLURlcHJlY2F0ZWRFbGVtZW50cy1BbGxvY2F0ZWQtYWxsb2NhdGVkRnJvbS1lQW5ub3RhdGlvbnMiIHNvdXJjZT0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9lbWYvMjAwMi9HZW5Nb2RlbCI+DQorICAgICAgICAgICAgICAgIDxkZXRhaWxzIHhtaTppZD0iUHJvZmlsZURlZmluaXRpb24tU3lzTUwtRGVwcmVjYXRlZEVsZW1lbnRzLUFsbG9jYXRlZC1hbGxvY2F0ZWRGcm9tLWVBbm5vdGF0aW9ucy1kZXRhaWxzIiBrZXk9ImRvY3VtZW50YXRpb24iIHZhbHVlPSJSZXZlcnNlIG9mIGFsbG9jYXRlZFRvOiB0aGUgZWxlbWVudCB0eXBlcyBhbmQgbmFtZXMgb2YgdGhlIHNldCBvZiBlbGVtZW50cyB0aGF0IGFyZSBjbGllbnRzIChmcm9tKSBvZiBhbiDCq2FsbG9jYXRlwrsgd2hvc2Ugc3VwcGxpZXIgaXMgZXh0ZW5kZWQgYnkgdGhpcyBzdGVyZW90eXBlIChpbnN0YW5jZSkuIFRoZSBzYW1lIGNoYXJhY3RlcmlzdGljcyBhcHBseSBhcyB0byAvYWxsb2NhdGVkVG8uIEVhY2ggYWxsb2NhdGVkRnJvbSBwcm9wZXJ0eSB3aWxsIGJlIGV4cHJlc3NlZCBhcyDCq2VsZW1lbnRUeXBlwrsgRWxlbWVudE5hbWUuIi8+DQorICAgICAgICAgICAgICA8L2VBbm5vdGF0aW9ucz4NCisgICAgICAgICAgICAgIDxlVHlwZSB4bWk6dHlwZT0iZWNvcmU6RUNsYXNzIiBocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3VtbDIvNS4wLjAvVU1MIy8vTmFtZWRFbGVtZW50Ii8+DQorICAgICAgICAgICAgPC9lU3RydWN0dXJhbEZlYXR1cmVzPg0KKyAgICAgICAgICAgIDxlU3RydWN0dXJhbEZlYXR1cmVzIHhtaTp0eXBlPSJlY29yZTpFUmVmZXJlbmNlIiB4bWk6aWQ9IlByb2ZpbGVEZWZpbml0aW9uLVN5c01MLURlcHJlY2F0ZWRFbGVtZW50cy1BbGxvY2F0ZWQtYWxsb2NhdGVkVG8iIG5hbWU9ImFsbG9jYXRlZFRvIiBvcmRlcmVkPSJmYWxzZSIgbG93ZXJCb3VuZD0iMSIgdXBwZXJCb3VuZD0iLTEiIHZvbGF0aWxlPSJ0cnVlIiB0cmFuc2llbnQ9InRydWUiIGRlcml2ZWQ9InRydWUiPg0KKyAgICAgICAgICAgICAgPGVBbm5vdGF0aW9ucyB4bWk6aWQ9IlByb2ZpbGVEZWZpbml0aW9uLVN5c01MLURlcHJlY2F0ZWRFbGVtZW50cy1BbGxvY2F0ZWQtYWxsb2NhdGVkVG8tZUFubm90YXRpb25zIiBzb3VyY2U9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvZW1mLzIwMDIvR2VuTW9kZWwiPg0KKyAgICAgICAgICAgICAgICA8ZGV0YWlscyB4bWk6aWQ9IlByb2ZpbGVEZWZpbml0aW9uLVN5c01MLURlcHJlY2F0ZWRFbGVtZW50cy1BbGxvY2F0ZWQtYWxsb2NhdGVkVG8tZUFubm90YXRpb25zLWRldGFpbHMiIGtleT0iZG9jdW1lbnRhdGlvbiIgdmFsdWU9IlRoZSBlbGVtZW50IHR5cGVzIGFuZCBuYW1lcyBvZiB0aGUgc2V0IG9mIGVsZW1lbnRzIHRoYXQgYXJlIHN1cHBsaWVycyAo4oCcdG/igJ0gZW5kIG9mIHRoZSBjb25jcmV0ZSBzeW50YXgpIG9mIGFuIMKrYWxsb2NhdGXCuyB3aG9zZSBjbGllbnQgaXMgZXh0ZW5kZWQgYnkgdGhpcyBzdGVyZW90eXBlIChpbnN0YW5jZSkuIFRoaXMgcHJvcGVydHkgaXMgdGhlIHVuaW9uIG9mIGFsbCBzdXBwbGllcnMgdG8gd2hpY2ggdGhpcyBpbnN0YW5jZSBpcyB0aGUgY2xpZW50LCBpLmUuLCB0aGVyZSBtYXkgYmUgbW9yZSB0aGFuIG9uZSAvYWxsb2NhdGVkVG8gcHJvcGVydHkgcGVyIGFsbG9jYXRlZCBtb2RlbCBlbGVtZW50LiBFYWNoIGFsbG9jYXRlZFRvIHByb3BlcnR5IHdpbGwgYmUgZXhwcmVzc2VkIGFzIMKrZWxlbWVudFR5cGXCuyBFbGVtZW50TmFtZS4iLz4NCisgICAgICAgICAgICAgIDwvZUFubm90YXRpb25zPg0KKyAgICAgICAgICAgICAgPGVUeXBlIHhtaTp0eXBlPSJlY29yZTpFQ2xhc3MiIGhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvdW1sMi81LjAuMC9VTUwjLy9OYW1lZEVsZW1lbnQiLz4NCisgICAgICAgICAgICA8L2VTdHJ1Y3R1cmFsRmVhdHVyZXM+DQorICAgICAgICAgIDwvZUNsYXNzaWZpZXJzPg0KKyAgICAgICAgICA8ZUNsYXNzaWZpZXJzIHhtaTp0eXBlPSJlY29yZTpFQ2xhc3MiIHhtaTppZD0iUHJvZmlsZURlZmluaXRpb24tU3lzTUwtRGVwcmVjYXRlZEVsZW1lbnRzLVJlcXVpcmVtZW50UmVsYXRlZCIgbmFtZT0iUmVxdWlyZW1lbnRSZWxhdGVkIj4NCisgICAgICAgICAgICA8ZUFubm90YXRpb25zIHhtaTppZD0iUHJvZmlsZURlZmluaXRpb24tU3lzTUwtRGVwcmVjYXRlZEVsZW1lbnRzLVJlcXVpcmVtZW50UmVsYXRlZC1lQW5ub3RhdGlvbnMxIiBzb3VyY2U9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvdW1sMi8yLjAuMC9VTUwiIHJlZmVyZW5jZXM9IlN5c01MLURlcHJlY2F0ZWRFbGVtZW50cy1SZXF1aXJlbWVudFJlbGF0ZWQiLz4NCisgICAgICAgICAgICA8ZUFubm90YXRpb25zIHhtaTppZD0iUHJvZmlsZURlZmluaXRpb24tU3lzTUwtRGVwcmVjYXRlZEVsZW1lbnRzLVJlcXVpcmVtZW50UmVsYXRlZC1lQW5ub3RhdGlvbnMyIiBzb3VyY2U9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvZW1mLzIwMDIvR2VuTW9kZWwiPg0KKyAgICAgICAgICAgICAgPGRldGFpbHMgeG1pOmlkPSJQcm9maWxlRGVmaW5pdGlvbi1TeXNNTC1EZXByZWNhdGVkRWxlbWVudHMtUmVxdWlyZW1lbnRSZWxhdGVkLWVBbm5vdGF0aW9uczItZGV0YWlscyIga2V5PSJkb2N1bWVudGF0aW9uIiB2YWx1ZT0iVGhpcyBzdGVyZW90eXBlIGlzIHVzZWQgdG8gYWRkIHByb3BlcnRpZXMgdG8gdGhvc2UgZWxlbWVudHMgdGhhdCBhcmUgcmVsYXRlZCB0byByZXF1aXJlbWVudHMgdmlhIHRoZSB2YXJpb3VzIGRlcGVuZGVuY2llcy4iLz4NCisgICAgICAgICAgICA8L2VBbm5vdGF0aW9ucz4NCisgICAgICAgICAgICA8ZVN0cnVjdHVyYWxGZWF0dXJlcyB4bWk6dHlwZT0iZWNvcmU6RVJlZmVyZW5jZSIgeG1pOmlkPSJQcm9maWxlRGVmaW5pdGlvbi1TeXNNTC1EZXByZWNhdGVkRWxlbWVudHMtUmVxdWlyZW1lbnRSZWxhdGVkLWJhc2VfTmFtZWRFbGVtZW50IiBuYW1lPSJiYXNlX05hbWVkRWxlbWVudCIgb3JkZXJlZD0iZmFsc2UiIGxvd2VyQm91bmQ9IjEiPg0KKyAgICAgICAgICAgICAgPGVUeXBlIHhtaTp0eXBlPSJlY29yZTpFQ2xhc3MiIGhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvdW1sMi81LjAuMC9VTUwjLy9OYW1lZEVsZW1lbnQiLz4NCisgICAgICAgICAgICA8L2VTdHJ1Y3R1cmFsRmVhdHVyZXM+DQorICAgICAgICAgICAgPGVTdHJ1Y3R1cmFsRmVhdHVyZXMgeG1pOnR5cGU9ImVjb3JlOkVSZWZlcmVuY2UiIHhtaTppZD0iUHJvZmlsZURlZmluaXRpb24tU3lzTUwtRGVwcmVjYXRlZEVsZW1lbnRzLVJlcXVpcmVtZW50UmVsYXRlZC1UcmFjZWRGcm9tIiBuYW1lPSJUcmFjZWRGcm9tIiBvcmRlcmVkPSJmYWxzZSIgbG93ZXJCb3VuZD0iMSIgdXBwZXJCb3VuZD0iLTEiIGVUeXBlPSJQcm9maWxlRGVmaW5pdGlvbi1TeXNNTC1SZXF1aXJlbWVudHMtUmVxdWlyZW1lbnQiIHZvbGF0aWxlPSJ0cnVlIiB0cmFuc2llbnQ9InRydWUiIGRlcml2ZWQ9InRydWUiPg0KKyAgICAgICAgICAgICAgPGVBbm5vdGF0aW9ucyB4bWk6aWQ9IlByb2ZpbGVEZWZpbml0aW9uLVN5c01MLURlcHJlY2F0ZWRFbGVtZW50cy1SZXF1aXJlbWVudFJlbGF0ZWQtVHJhY2VkRnJvbS1lQW5ub3RhdGlvbnMiIHNvdXJjZT0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9lbWYvMjAwMi9HZW5Nb2RlbCI+DQorICAgICAgICAgICAgICAgIDxkZXRhaWxzIHhtaTppZD0iUHJvZmlsZURlZmluaXRpb24tU3lzTUwtRGVwcmVjYXRlZEVsZW1lbnRzLVJlcXVpcmVtZW50UmVsYXRlZC1UcmFjZWRGcm9tLWVBbm5vdGF0aW9ucy1kZXRhaWxzIiBrZXk9ImRvY3VtZW50YXRpb24iIHZhbHVlPSJEZXJpdmVkIGZyb20gYWxsIHJlcXVpcmVtZW50cyB0aGF0IGFyZSB0aGUgc3VwcGxpZXIgb2YgYSDCq3RyYWNlwrsgcmVsYXRpb25zaGlwIGZvciB3aGljaCB0aGlzIGVsZW1lbnQgaXMgYSBjbGllbnQuIi8+DQorICAgICAgICAgICAgICA8L2VBbm5vdGF0aW9ucz4NCisgICAgICAgICAgICA8L2VTdHJ1Y3R1cmFsRmVhdHVyZXM+DQorICAgICAgICAgICAgPGVTdHJ1Y3R1cmFsRmVhdHVyZXMgeG1pOnR5cGU9ImVjb3JlOkVSZWZlcmVuY2UiIHhtaTppZD0iUHJvZmlsZURlZmluaXRpb24tU3lzTUwtRGVwcmVjYXRlZEVsZW1lbnRzLVJlcXVpcmVtZW50UmVsYXRlZC1TYXRpc2ZpZXMiIG5hbWU9IlNhdGlzZmllcyIgb3JkZXJlZD0iZmFsc2UiIGxvd2VyQm91bmQ9IjEiIHVwcGVyQm91bmQ9Ii0xIiBlVHlwZT0iUHJvZmlsZURlZmluaXRpb24tU3lzTUwtUmVxdWlyZW1lbnRzLVJlcXVpcmVtZW50IiB2b2xhdGlsZT0idHJ1ZSIgdHJhbnNpZW50PSJ0cnVlIiBkZXJpdmVkPSJ0cnVlIj4NCisgICAgICAgICAgICAgIDxlQW5ub3RhdGlvbnMgeG1pOmlkPSJQcm9maWxlRGVmaW5pdGlvbi1TeXNNTC1EZXByZWNhdGVkRWxlbWVudHMtUmVxdWlyZW1lbnRSZWxhdGVkLVNhdGlzZmllcy1lQW5ub3RhdGlvbnMiIHNvdXJjZT0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9lbWYvMjAwMi9HZW5Nb2RlbCI+DQorICAgICAgICAgICAgICAgIDxkZXRhaWxzIHhtaTppZD0iUHJvZmlsZURlZmluaXRpb24tU3lzTUwtRGVwcmVjYXRlZEVsZW1lbnRzLVJlcXVpcmVtZW50UmVsYXRlZC1TYXRpc2ZpZXMtZUFubm90YXRpb25zLWRldGFpbHMiIGtleT0iZG9jdW1lbnRhdGlvbiIgdmFsdWU9IkRlcml2ZWQgZnJvbSBhbGwgcmVxdWlyZW1lbnRzIHRoYXQgYXJlIHRoZSBzdXBwbGllciBvZiBhIMKrc2F0aXNmecK7IHJlbGF0aW9uc2hpcCBmb3Igd2hpY2ggdGhpcyBlbGVtZW50IGlzIGEgY2xpZW50LiIvPg0KKyAgICAgICAgICAgICAgPC9lQW5ub3RhdGlvbnM+DQorICAgICAgICAgICAgPC9lU3RydWN0dXJhbEZlYXR1cmVzPg0KKyAgICAgICAgICAgIDxlU3RydWN0dXJhbEZlYXR1cmVzIHhtaTp0eXBlPSJlY29yZTpFUmVmZXJlbmNlIiB4bWk6aWQ9IlByb2ZpbGVEZWZpbml0aW9uLVN5c01MLURlcHJlY2F0ZWRFbGVtZW50cy1SZXF1aXJlbWVudFJlbGF0ZWQtUmVmaW5lcyIgbmFtZT0iUmVmaW5lcyIgb3JkZXJlZD0iZmFsc2UiIGxvd2VyQm91bmQ9IjEiIHVwcGVyQm91bmQ9Ii0xIiBlVHlwZT0iUHJvZmlsZURlZmluaXRpb24tU3lzTUwtUmVxdWlyZW1lbnRzLVJlcXVpcmVtZW50IiB2b2xhdGlsZT0idHJ1ZSIgdHJhbnNpZW50PSJ0cnVlIiBkZXJpdmVkPSJ0cnVlIj4NCisgICAgICAgICAgICAgIDxlQW5ub3RhdGlvbnMgeG1pOmlkPSJQcm9maWxlRGVmaW5pdGlvbi1TeXNNTC1EZXByZWNhdGVkRWxlbWVudHMtUmVxdWlyZW1lbnRSZWxhdGVkLVJlZmluZXMtZUFubm90YXRpb25zIiBzb3VyY2U9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvZW1mLzIwMDIvR2VuTW9kZWwiPg0KKyAgICAgICAgICAgICAgICA8ZGV0YWlscyB4bWk6aWQ9IlByb2ZpbGVEZWZpbml0aW9uLVN5c01MLURlcHJlY2F0ZWRFbGVtZW50cy1SZXF1aXJlbWVudFJlbGF0ZWQtUmVmaW5lcy1lQW5ub3RhdGlvbnMtZGV0YWlscyIga2V5PSJkb2N1bWVudGF0aW9uIiB2YWx1ZT0iRGVyaXZlZCBmcm9tIGFsbCByZXF1aXJlbWVudHMgdGhhdCBhcmUgdGhlIHN1cHBsaWVyIG9mIGEgwqtyZWZpbmXCuyByZWxhdGlvbnNoaXAgZm9yIHdoaWNoIHRoaXMgZWxlbWVudCBpcyBhIGNsaWVudC4iLz4NCisgICAgICAgICAgICAgIDwvZUFubm90YXRpb25zPg0KKyAgICAgICAgICAgIDwvZVN0cnVjdHVyYWxGZWF0dXJlcz4NCisgICAgICAgICAgICA8ZVN0cnVjdHVyYWxGZWF0dXJlcyB4bWk6dHlwZT0iZWNvcmU6RVJlZmVyZW5jZSIgeG1pOmlkPSJQcm9maWxlRGVmaW5pdGlvbi1TeXNNTC1EZXByZWNhdGVkRWxlbWVudHMtUmVxdWlyZW1lbnRSZWxhdGVkLVZlcmlmaWVzIiBuYW1lPSJWZXJpZmllcyIgb3JkZXJlZD0iZmFsc2UiIGxvd2VyQm91bmQ9IjEiIHVwcGVyQm91bmQ9Ii0xIiBlVHlwZT0iUHJvZmlsZURlZmluaXRpb24tU3lzTUwtUmVxdWlyZW1lbnRzLVJlcXVpcmVtZW50IiB2b2xhdGlsZT0idHJ1ZSIgdHJhbnNpZW50PSJ0cnVlIiBkZXJpdmVkPSJ0cnVlIj4NCisgICAgICAgICAgICAgIDxlQW5ub3RhdGlvbnMgeG1pOmlkPSJQcm9maWxlRGVmaW5pdGlvbi1TeXNNTC1EZXByZWNhdGVkRWxlbWVudHMtUmVxdWlyZW1lbnRSZWxhdGVkLVZlcmlmaWVzLWVBbm5vdGF0aW9ucyIgc291cmNlPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2VtZi8yMDAyL0dlbk1vZGVsIj4NCisgICAgICAgICAgICAgICAgPGRldGFpbHMgeG1pOmlkPSJQcm9maWxlRGVmaW5pdGlvbi1TeXNNTC1EZXByZWNhdGVkRWxlbWVudHMtUmVxdWlyZW1lbnRSZWxhdGVkLVZlcmlmaWVzLWVBbm5vdGF0aW9ucy1kZXRhaWxzIiBrZXk9ImRvY3VtZW50YXRpb24iIHZhbHVlPSJEZXJpdmVkIGZyb20gYWxsIHJlcXVpcmVtZW50cyB0aGF0IGFyZSB0aGUgc3VwcGxpZXIgb2YgYSDCq3ZlcmlmecK7IHJlbGF0aW9uc2hpcCBmb3Igd2hpY2ggdGhpcyBlbGVtZW50IGlzIGEgY2xpZW50LiIvPg0KKyAgICAgICAgICAgICAgPC9lQW5ub3RhdGlvbnM+DQorICAgICAgICAgICAgPC9lU3RydWN0dXJhbEZlYXR1cmVzPg0KKyAgICAgICAgICA8L2VDbGFzc2lmaWVycz4NCisgICAgICAgICAgPGVDbGFzc2lmaWVycyB4bWk6dHlwZT0iZWNvcmU6RUNsYXNzIiB4bWk6aWQ9IlByb2ZpbGVEZWZpbml0aW9uLVN5c01MLURlcHJlY2F0ZWRFbGVtZW50cy1EZXByZWNhdGVkIiBuYW1lPSJEZXByZWNhdGVkIj4NCisgICAgICAgICAgICA8ZUFubm90YXRpb25zIHhtaTppZD0iUHJvZmlsZURlZmluaXRpb24tU3lzTUwtRGVwcmVjYXRlZEVsZW1lbnRzLURlcHJlY2F0ZWQtZUFubm90YXRpb25zIiBzb3VyY2U9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvdW1sMi8yLjAuMC9VTUwiIHJlZmVyZW5jZXM9IlN5c01MLURlcHJlY2F0ZWRFbGVtZW50cy1EZXByZWNhdGVkIi8+DQorICAgICAgICAgICAgPGVTdHJ1Y3R1cmFsRmVhdHVyZXMgeG1pOnR5cGU9ImVjb3JlOkVSZWZlcmVuY2UiIHhtaTppZD0iUHJvZmlsZURlZmluaXRpb24tU3lzTUwtRGVwcmVjYXRlZEVsZW1lbnRzLURlcHJlY2F0ZWQtYmFzZV9WYWx1ZVNwZWNpZmljYXRpb24iIG5hbWU9ImJhc2VfVmFsdWVTcGVjaWZpY2F0aW9uIiBvcmRlcmVkPSJmYWxzZSIgbG93ZXJCb3VuZD0iMSI+DQorICAgICAgICAgICAgICA8ZVR5cGUgeG1pOnR5cGU9ImVjb3JlOkVDbGFzcyIgaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy91bWwyLzUuMC4wL1VNTCMvL1ZhbHVlU3BlY2lmaWNhdGlvbiIvPg0KKyAgICAgICAgICAgIDwvZVN0cnVjdHVyYWxGZWF0dXJlcz4NCisgICAgICAgICAgICA8ZVN0cnVjdHVyYWxGZWF0dXJlcyB4bWk6dHlwZT0iZWNvcmU6RVJlZmVyZW5jZSIgeG1pOmlkPSJQcm9maWxlRGVmaW5pdGlvbi1TeXNNTC1EZXByZWNhdGVkRWxlbWVudHMtRGVwcmVjYXRlZC1iYXNlX1Byb3BlcnR5IiBuYW1lPSJiYXNlX1Byb3BlcnR5IiBvcmRlcmVkPSJmYWxzZSIgbG93ZXJCb3VuZD0iMSI+DQorICAgICAgICAgICAgICA8ZVR5cGUgeG1pOnR5cGU9ImVjb3JlOkVDbGFzcyIgaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy91bWwyLzUuMC4wL1VNTCMvL1Byb3BlcnR5Ii8+DQorICAgICAgICAgICAgPC9lU3RydWN0dXJhbEZlYXR1cmVzPg0KKyAgICAgICAgICAgIDxlU3RydWN0dXJhbEZlYXR1cmVzIHhtaTp0eXBlPSJlY29yZTpFUmVmZXJlbmNlIiB4bWk6aWQ9IlByb2ZpbGVEZWZpbml0aW9uLVN5c01MLURlcHJlY2F0ZWRFbGVtZW50cy1EZXByZWNhdGVkLWJhc2VfSW5zdGFuY2VTcGVjaWZpY2F0aW9uIiBuYW1lPSJiYXNlX0luc3RhbmNlU3BlY2lmaWNhdGlvbiIgb3JkZXJlZD0iZmFsc2UiIGxvd2VyQm91bmQ9IjEiPg0KKyAgICAgICAgICAgICAgPGVUeXBlIHhtaTp0eXBlPSJlY29yZTpFQ2xhc3MiIGhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvdW1sMi81LjAuMC9VTUwjLy9JbnN0YW5jZVNwZWNpZmljYXRpb24iLz4NCisgICAgICAgICAgICA8L2VTdHJ1Y3R1cmFsRmVhdHVyZXM+DQorICAgICAgICAgICAgPGVTdHJ1Y3R1cmFsRmVhdHVyZXMgeG1pOnR5cGU9ImVjb3JlOkVSZWZlcmVuY2UiIHhtaTppZD0iUHJvZmlsZURlZmluaXRpb24tU3lzTUwtRGVwcmVjYXRlZEVsZW1lbnRzLURlcHJlY2F0ZWQtYmFzZV9DbGFzcyIgbmFtZT0iYmFzZV9DbGFzcyIgb3JkZXJlZD0iZmFsc2UiIGxvd2VyQm91bmQ9IjEiPg0KKyAgICAgICAgICAgICAgPGVUeXBlIHhtaTp0eXBlPSJlY29yZTpFQ2xhc3MiIGhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvdW1sMi81LjAuMC9VTUwjLy9DbGFzcyIvPg0KKyAgICAgICAgICAgIDwvZVN0cnVjdHVyYWxGZWF0dXJlcz4NCisgICAgICAgICAgICA8ZVN0cnVjdHVyYWxGZWF0dXJlcyB4bWk6dHlwZT0iZWNvcmU6RVJlZmVyZW5jZSIgeG1pOmlkPSJQcm9maWxlRGVmaW5pdGlvbi1TeXNNTC1EZXByZWNhdGVkRWxlbWVudHMtRGVwcmVjYXRlZC1iYXNlX0Fzc29jaWF0aW9uIiBuYW1lPSJiYXNlX0Fzc29jaWF0aW9uIiBvcmRlcmVkPSJmYWxzZSIgbG93ZXJCb3VuZD0iMSI+DQorICAgICAgICAgICAgICA8ZVR5cGUgeG1pOnR5cGU9ImVjb3JlOkVDbGFzcyIgaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy91bWwyLzUuMC4wL1VNTCMvL0Fzc29jaWF0aW9uIi8+DQorICAgICAgICAgICAgPC9lU3RydWN0dXJhbEZlYXR1cmVzPg0KKyAgICAgICAgICAgIDxlU3RydWN0dXJhbEZlYXR1cmVzIHhtaTp0eXBlPSJlY29yZTpFQXR0cmlidXRlIiB4bWk6aWQ9IlByb2ZpbGVEZWZpbml0aW9uLVN5c01MLURlcHJlY2F0ZWRFbGVtZW50cy1EZXByZWNhdGVkLWRlcHJlY2F0ZWRSZWFzb24iIG5hbWU9ImRlcHJlY2F0ZWRSZWFzb24iIG9yZGVyZWQ9ImZhbHNlIiBsb3dlckJvdW5kPSIxIj4NCisgICAgICAgICAgICAgIDxlVHlwZSB4bWk6dHlwZT0iZWNvcmU6RURhdGFUeXBlIiBocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3VtbDIvNS4wLjAvVHlwZXMjLy9TdHJpbmciLz4NCisgICAgICAgICAgICA8L2VTdHJ1Y3R1cmFsRmVhdHVyZXM+DQorICAgICAgICAgICAgPGVTdHJ1Y3R1cmFsRmVhdHVyZXMgeG1pOnR5cGU9ImVjb3JlOkVSZWZlcmVuY2UiIHhtaTppZD0iUHJvZmlsZURlZmluaXRpb24tU3lzTUwtRGVwcmVjYXRlZEVsZW1lbnRzLURlcHJlY2F0ZWQtYmFzZV9HZW5lcmFsaXphdGlvbiIgbmFtZT0iYmFzZV9HZW5lcmFsaXphdGlvbiIgb3JkZXJlZD0iZmFsc2UiIGxvd2VyQm91bmQ9IjEiPg0KKyAgICAgICAgICAgICAgPGVUeXBlIHhtaTp0eXBlPSJlY29yZTpFQ2xhc3MiIGhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvdW1sMi81LjAuMC9VTUwjLy9HZW5lcmFsaXphdGlvbiIvPg0KKyAgICAgICAgICAgIDwvZVN0cnVjdHVyYWxGZWF0dXJlcz4NCisgICAgICAgICAgICA8ZVN0cnVjdHVyYWxGZWF0dXJlcyB4bWk6dHlwZT0iZWNvcmU6RVJlZmVyZW5jZSIgeG1pOmlkPSJQcm9maWxlRGVmaW5pdGlvbi1TeXNNTC1EZXByZWNhdGVkRWxlbWVudHMtRGVwcmVjYXRlZC1iYXNlX0RhdGFUeXBlIiBuYW1lPSJiYXNlX0RhdGFUeXBlIiBvcmRlcmVkPSJmYWxzZSIgbG93ZXJCb3VuZD0iMSI+DQorICAgICAgICAgICAgICA8ZVR5cGUgeG1pOnR5cGU9ImVjb3JlOkVDbGFzcyIgaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy91bWwyLzUuMC4wL1VNTCMvL0RhdGFUeXBlIi8+DQorICAgICAgICAgICAgPC9lU3RydWN0dXJhbEZlYXR1cmVzPg0KKyAgICAgICAgICA8L2VDbGFzc2lmaWVycz4NCisgICAgICAgIDwvZVN1YnBhY2thZ2VzPg0KKyAgICAgIDwvY29udGVudHM+DQorICAgIDwvZUFubm90YXRpb25zPg0KKyAgICA8cGFja2FnZUltcG9ydCB4bWk6aWQ9IlN5c01MLXBhY2thZ2VJbXBvcnQxIj4NCisgICAgICA8aW1wb3J0ZWRQYWNrYWdlIHhtaTp0eXBlPSJ1bWw6TW9kZWwiIGhyZWY9InBhdGhtYXA6Ly9VTUxfTUVUQU1PREVMUy9VTUwubWV0YW1vZGVsLnVtbCNfMCIvPg0KKyAgICA8L3BhY2thZ2VJbXBvcnQ+DQorICAgIDxwYWNrYWdlSW1wb3J0IHhtaTppZD0iU3lzTUwtcGFja2FnZUltcG9ydDIiPg0KKyAgICAgIDxpbXBvcnRlZFBhY2thZ2UgeG1pOnR5cGU9InVtbDpQcm9maWxlIiBocmVmPSJwYXRobWFwOi8vVU1MX1BST0ZJTEVTL1N0YW5kYXJkLnByb2ZpbGUudW1sI18wIi8+DQorICAgIDwvcGFja2FnZUltcG9ydD4NCisgICAgPHBhY2thZ2VJbXBvcnQgeG1pOmlkPSJTeXNNTC1wYWNrYWdlSW1wb3J0MyI+DQorICAgICAgPGltcG9ydGVkUGFja2FnZSB4bWk6dHlwZT0idW1sOk1vZGVsIiBocmVmPSJwYXRobWFwOi8vVU1MX0xJQlJBUklFUy9VTUxQcmltaXRpdmVUeXBlcy5saWJyYXJ5LnVtbCNfMCIvPg0KKyAgICA8L3BhY2thZ2VJbXBvcnQ+DQorICAgIDxwYWNrYWdlZEVsZW1lbnQgeG1pOnR5cGU9InVtbDpQYWNrYWdlIiB4bWk6aWQ9IlN5c01MLUJsb2NrcyIgbmFtZT0iQmxvY2tzIiBVUkk9IiI+DQorICAgICAgPHBhY2thZ2VkRWxlbWVudCB4bWk6dHlwZT0idW1sOkV4dGVuc2lvbiIgeG1pOmlkPSJTeXNNTC1CbG9ja3MtRV9leHRlbnNpb25fVmFsdWVUeXBlX2Jhc2VfRGF0YVR5cGUiIG5hbWU9IkVfZXh0ZW5zaW9uX1ZhbHVlVHlwZV9iYXNlX0RhdGFUeXBlIiBtZW1iZXJFbmQ9IlN5c01MLUJsb2Nrcy1FX2V4dGVuc2lvbl9WYWx1ZVR5cGVfYmFzZV9EYXRhVHlwZS1leHRlbnNpb25fVmFsdWVUeXBlIFN5c01MLUJsb2Nrcy1WYWx1ZVR5cGUtYmFzZV9EYXRhVHlwZSIgbmF2aWdhYmxlT3duZWRFbmQ9IlN5c01MLUJsb2Nrcy1FX2V4dGVuc2lvbl9WYWx1ZVR5cGVfYmFzZV9EYXRhVHlwZS1leHRlbnNpb25fVmFsdWVUeXBlIj4NCisgICAgICAgIDxvd25lZEVuZCB4bWk6dHlwZT0idW1sOkV4dGVuc2lvbkVuZCIgeG1pOmlkPSJTeXNNTC1CbG9ja3MtRV9leHRlbnNpb25fVmFsdWVUeXBlX2Jhc2VfRGF0YVR5cGUtZXh0ZW5zaW9uX1ZhbHVlVHlwZSIgbmFtZT0iZXh0ZW5zaW9uX1ZhbHVlVHlwZSIgdmlzaWJpbGl0eT0icHVibGljIiB0eXBlPSJTeXNNTC1CbG9ja3MtVmFsdWVUeXBlIiBhZ2dyZWdhdGlvbj0iY29tcG9zaXRlIiBhc3NvY2lhdGlvbj0iU3lzTUwtQmxvY2tzLUVfZXh0ZW5zaW9uX1ZhbHVlVHlwZV9iYXNlX0RhdGFUeXBlIj4NCisgICAgICAgICAgPGxvd2VyVmFsdWUgeG1pOnR5cGU9InVtbDpMaXRlcmFsSW50ZWdlciIgeG1pOmlkPSJTeXNNTC1CbG9ja3MtRV9leHRlbnNpb25fVmFsdWVUeXBlX2Jhc2VfRGF0YVR5cGUtZXh0ZW5zaW9uX1ZhbHVlVHlwZS1sb3dlclZhbHVlIiBuYW1lPSIiLz4NCisgICAgICAgICAgPHVwcGVyVmFsdWUgeG1pOnR5cGU9InVtbDpMaXRlcmFsSW50ZWdlciIgeG1pOmlkPSJTeXNNTC1CbG9ja3MtRV9leHRlbnNpb25fVmFsdWVUeXBlX2Jhc2VfRGF0YVR5cGUtZXh0ZW5zaW9uX1ZhbHVlVHlwZS11cHBlclZhbHVlIiBuYW1lPSIiIHZhbHVlPSIxIi8+DQorICAgICAgICA8L293bmVkRW5kPg0KKyAgICAgIDwvcGFja2FnZWRFbGVtZW50Pg0KKyAgICAgIDxwYWNrYWdlZEVsZW1lbnQgeG1pOnR5cGU9InVtbDpFeHRlbnNpb24iIHhtaTppZD0iU3lzTUwtQmxvY2tzLUVfZXh0ZW5zaW9uX0Nvbm5lY3RvclByb3BlcnR5X2Jhc2VfUHJvcGVydHkiIG5hbWU9IkVfZXh0ZW5zaW9uX0Nvbm5lY3RvclByb3BlcnR5X2Jhc2VfUHJvcGVydHkiIG1lbWJlckVuZD0iU3lzTUwtQmxvY2tzLUVfZXh0ZW5zaW9uX0Nvbm5lY3RvclByb3BlcnR5X2Jhc2VfUHJvcGVydHktZXh0ZW5zaW9uX0Nvbm5lY3RvclByb3BlcnR5IFN5c01MLUJsb2Nrcy1Db25uZWN0b3JQcm9wZXJ0eS1iYXNlX1Byb3BlcnR5IiBuYXZpZ2FibGVPd25lZEVuZD0iU3lzTUwtQmxvY2tzLUVfZXh0ZW5zaW9uX0Nvbm5lY3RvclByb3BlcnR5X2Jhc2VfUHJvcGVydHktZXh0ZW5zaW9uX0Nvbm5lY3RvclByb3BlcnR5Ij4NCisgICAgICAgIDxvd25lZEVuZCB4bWk6dHlwZT0idW1sOkV4dGVuc2lvbkVuZCIgeG1pOmlkPSJTeXNNTC1CbG9ja3MtRV9leHRlbnNpb25fQ29ubmVjdG9yUHJvcGVydHlfYmFzZV9Qcm9wZXJ0eS1leHRlbnNpb25fQ29ubmVjdG9yUHJvcGVydHkiIG5hbWU9ImV4dGVuc2lvbl9Db25uZWN0b3JQcm9wZXJ0eSIgdmlzaWJpbGl0eT0icHVibGljIiB0eXBlPSJTeXNNTC1CbG9ja3MtQ29ubmVjdG9yUHJvcGVydHkiIGFnZ3JlZ2F0aW9uPSJjb21wb3NpdGUiIGFzc29jaWF0aW9uPSJTeXNNTC1CbG9ja3MtRV9leHRlbnNpb25fQ29ubmVjdG9yUHJvcGVydHlfYmFzZV9Qcm9wZXJ0eSI+DQorICAgICAgICAgIDxsb3dlclZhbHVlIHhtaTp0eXBlPSJ1bWw6TGl0ZXJhbEludGVnZXIiIHhtaTppZD0iU3lzTUwtQmxvY2tzLUVfZXh0ZW5zaW9uX0Nvbm5lY3RvclByb3BlcnR5X2Jhc2VfUHJvcGVydHktZXh0ZW5zaW9uX0Nvbm5lY3RvclByb3BlcnR5LWxvd2VyVmFsdWUiIG5hbWU9IiIvPg0KKyAgICAgICAgICA8dXBwZXJWYWx1ZSB4bWk6dHlwZT0idW1sOkxpdGVyYWxVbmxpbWl0ZWROYXR1cmFsIiB4bWk6aWQ9IlN5c01MLUJsb2Nrcy1FX2V4dGVuc2lvbl9Db25uZWN0b3JQcm9wZXJ0eV9iYXNlX1Byb3BlcnR5LWV4dGVuc2lvbl9Db25uZWN0b3JQcm9wZXJ0eS11cHBlclZhbHVlIiBuYW1lPSIiIHZhbHVlPSIxIi8+DQorICAgICAgICA8L293bmVkRW5kPg0KKyAgICAgIDwvcGFja2FnZWRFbGVtZW50Pg0KKyAgICAgIDxwYWNrYWdlZEVsZW1lbnQgeG1pOnR5cGU9InVtbDpTdGVyZW90eXBlIiB4bWk6aWQ9IlN5c01MLUJsb2Nrcy1WYWx1ZVR5cGUiIG5hbWU9IlZhbHVlVHlwZSI+DQorICAgICAgICA8b3duZWRDb21tZW50IHhtaTppZD0iU3lzTUwtQmxvY2tzLVZhbHVlVHlwZS1vd25lZENvbW1lbnQiIGFubm90YXRlZEVsZW1lbnQ9IlN5c01MLUJsb2Nrcy1WYWx1ZVR5cGUiPg0KKyAgICAgICAgICA8Ym9keT5BIFZhbHVlVHlwZSBkZWZpbmVzIHR5cGVzIG9mIHZhbHVlcyB0aGF0IG1heSBiZSB1c2VkIHRvIGV4cHJlc3MgaW5mb3JtYXRpb24gYWJvdXQgYSBzeXN0ZW0sIGJ1dCBjYW5ub3QgYmUgaWRlbnRpZmllZCBhcyB0aGUgdGFyZ2V0IG9mIGFueSByZWZlcmVuY2UuIFNpbmNlIGEgdmFsdWUgY2Fubm90IGJlIGlkZW50aWZpZWQgZXhjZXB0IGJ5IG1lYW5zIG9mIHRoZSB2YWx1ZSBpdHNlbGYsIGVhY2ggc3VjaCB2YWx1ZSB3aXRoaW4gYSBtb2RlbCBpcyBpbmRlcGVuZGVudCBvZiBhbnkgb3RoZXIsIHVubGVzcyBvdGhlciBmb3JtcyBvZiBjb25zdHJhaW50cyBhcmUgaW1wb3NlZC4gVmFsdWUgdHlwZXMgbWF5IGJlIHVzZWQgdG8gdHlwZSBwcm9wZXJ0aWVzLCBvcGVyYXRpb24gcGFyYW1ldGVycywgb3IgcG90ZW50aWFsbHkgb3RoZXIgZWxlbWVudHMgd2l0aGluIFN5c01MLiBTeXNNTCBkZWZpbmVzIFZhbHVlVHlwZSBhcyBhIHN0ZXJlb3R5cGUgb2YgVU1MIERhdGFUeXBlIHRvIGVzdGFibGlzaCBhIG1vcmUgbmV1dHJhbCB0ZXJtIGZvciBzeXN0ZW0gdmFsdWVzIHRoYXQgbWF5IG5ldmVyIGJlIGdpdmVuIGEgY29uY3JldGUgZGF0YSByZXByZXNlbnRhdGlvbi48L2JvZHk+DQorICAgICAgICA8L293bmVkQ29tbWVudD4NCisgICAgICAgIDxvd25lZEF0dHJpYnV0ZSB4bWk6aWQ9IlN5c01MLUJsb2Nrcy1WYWx1ZVR5cGUtYmFzZV9EYXRhVHlwZSIgbmFtZT0iYmFzZV9EYXRhVHlwZSIgdmlzaWJpbGl0eT0icHVibGljIiBhc3NvY2lhdGlvbj0iU3lzTUwtQmxvY2tzLUVfZXh0ZW5zaW9uX1ZhbHVlVHlwZV9iYXNlX0RhdGFUeXBlIj4NCisgICAgICAgICAgPHR5cGUgeG1pOnR5cGU9InVtbDpDbGFzcyIgaHJlZj0icGF0aG1hcDovL1VNTF9NRVRBTU9ERUxTL1VNTC5tZXRhbW9kZWwudW1sI0RhdGFUeXBlIi8+DQorICAgICAgICAgIDxsb3dlclZhbHVlIHhtaTp0eXBlPSJ1bWw6TGl0ZXJhbEludGVnZXIiIHhtaTppZD0iU3lzTUwtQmxvY2tzLVZhbHVlVHlwZS1iYXNlX0RhdGFUeXBlLWxvd2VyVmFsdWUiIG5hbWU9IiIvPg0KKyAgICAgICAgICA8dXBwZXJWYWx1ZSB4bWk6dHlwZT0idW1sOkxpdGVyYWxVbmxpbWl0ZWROYXR1cmFsIiB4bWk6aWQ9IlN5c01MLUJsb2Nrcy1WYWx1ZVR5cGUtYmFzZV9EYXRhVHlwZS11cHBlclZhbHVlIiBuYW1lPSIiIHZhbHVlPSIxIi8+DQorICAgICAgICA8L293bmVkQXR0cmlidXRlPg0KKyAgICAgICAgPG93bmVkQXR0cmlidXRlIHhtaTppZD0iU3lzTUwtQmxvY2tzLVZhbHVlVHlwZS11bml0IiBuYW1lPSJ1bml0IiB2aXNpYmlsaXR5PSJwdWJsaWMiIGFzc29jaWF0aW9uPSJTeXNNTC1CbG9ja3MtQV92YWx1ZVR5cGVfdW5pdCI+DQorICAgICAgICAgIDxvd25lZENvbW1lbnQgeG1pOmlkPSJTeXNNTC1CbG9ja3MtVmFsdWVUeXBlLXVuaXQtb3duZWRDb21tZW50IiBhbm5vdGF0ZWRFbGVtZW50PSJTeXNNTC1CbG9ja3MtVmFsdWVUeXBlLXVuaXQiPg0KKyAgICAgICAgICAgIDxib2R5PkEgcXVhbnRpdHkgaW4gdGVybXMgb2Ygd2hpY2ggdGhlIG1hZ25pdHVkZXMgb2Ygb3RoZXIgcXVhbnRpdGllcyB0aGF0IGhhdmUgdGhlIHNhbWUgZGltZW5zaW9uIGNhbiBiZSBzdGF0ZWQsIGFzIGlkZW50aWZpZWQgYnkgYW4gaW5zdGFuY2Ugb2YgdGhlIFVuaXQgc3RlcmVvdHlwZS48L2JvZHk+DQorICAgICAgICAgIDwvb3duZWRDb21tZW50Pg0KKyAgICAgICAgICA8dHlwZSB4bWk6dHlwZT0idW1sOkNsYXNzIiBocmVmPSJwYXRobWFwOi8vVU1MX01FVEFNT0RFTFMvVU1MLm1ldGFtb2RlbC51bWwjSW5zdGFuY2VTcGVjaWZpY2F0aW9uIi8+DQorICAgICAgICAgIDxsb3dlclZhbHVlIHhtaTp0eXBlPSJ1bWw6TGl0ZXJhbEludGVnZXIiIHhtaTppZD0iU3lzTUwtQmxvY2tzLVZhbHVlVHlwZS11bml0LWxvd2VyVmFsdWUiIG5hbWU9IiIvPg0KKyAgICAgICAgICA8dXBwZXJWYWx1ZSB4bWk6dHlwZT0idW1sOkxpdGVyYWxVbmxpbWl0ZWROYXR1cmFsIiB4bWk6aWQ9IlN5c01MLUJsb2Nrcy1WYWx1ZVR5cGUtdW5pdC11cHBlclZhbHVlIiBuYW1lPSIiIHZhbHVlPSIxIi8+DQorICAgICAgICA8L293bmVkQXR0cmlidXRlPg0KKyAgICAgICAgPG93bmVkQXR0cmlidXRlIHhtaTppZD0iU3lzTUwtQmxvY2tzLVZhbHVlVHlwZS1xdWFudGl0eUtpbmQiIG5hbWU9InF1YW50aXR5S2luZCIgdmlzaWJpbGl0eT0icHVibGljIiBhc3NvY2lhdGlvbj0iU3lzTUwtQmxvY2tzLUFfdmFsdWVUeXBlX3F1YW50aXR5S2luZCI+DQorICAgICAgICAgIDxvd25lZENvbW1lbnQgeG1pOmlkPSJTeXNNTC1CbG9ja3MtVmFsdWVUeXBlLXF1YW50aXR5S2luZC1vd25lZENvbW1lbnQiIGFubm90YXRlZEVsZW1lbnQ9IlN5c01MLUJsb2Nrcy1WYWx1ZVR5cGUtcXVhbnRpdHlLaW5kIj4NCisgICAgICAgICAgICA8Ym9keT5BIGtpbmQgb2YgcXVhbnRpdHkgdGhhdCBtYXkgYmUgc3RhdGVkIGJ5IG1lYW5zIG9mIGRlZmluZWQgdW5pdHMsIGFzIGlkZW50aWZpZWQgYnkgYW4gaW5zdGFuY2Ugb2YgdGhlIERpbWVuc2lvbiBzdGVyZW90eXBlLiBBIHZhbHVlIHR5cGUgbWF5IG9wdGlvbmFsbHkgc3BlY2lmeSBhIGRpbWVuc2lvbiB3aXRob3V0IGFueSB1bml0LiBTdWNoIGEgdmFsdWUgaGFzIG5vIGNvbmNyZXRlIHJlcHJlc2VudGF0aW9uLCBidXQgbWF5IGJlIHVzZWQgdG8gZXhwcmVzcyBhIHZhbHVlIGluIGFuIGFic3RyYWN0IGZvcm0gaW5kZXBlbmRlbnQgb2YgYW55IHNwZWNpZmljIHVuaXRzLjwvYm9keT4NCisgICAgICAgICAgPC9vd25lZENvbW1lbnQ+DQorICAgICAgICAgIDx0eXBlIHhtaTp0eXBlPSJ1bWw6Q2xhc3MiIGhyZWY9InBhdGhtYXA6Ly9VTUxfTUVUQU1PREVMUy9VTUwubWV0YW1vZGVsLnVtbCNJbnN0YW5jZVNwZWNpZmljYXRpb24iLz4NCisgICAgICAgICAgPGxvd2VyVmFsdWUgeG1pOnR5cGU9InVtbDpMaXRlcmFsSW50ZWdlciIgeG1pOmlkPSJTeXNNTC1CbG9ja3MtVmFsdWVUeXBlLXF1YW50aXR5S2luZC1sb3dlclZhbHVlIiBuYW1lPSIiLz4NCisgICAgICAgICAgPHVwcGVyVmFsdWUgeG1pOnR5cGU9InVtbDpMaXRlcmFsVW5saW1pdGVkTmF0dXJhbCIgeG1pOmlkPSJTeXNNTC1CbG9ja3MtVmFsdWVUeXBlLXF1YW50aXR5S2luZC11cHBlclZhbHVlIiBuYW1lPSIiIHZhbHVlPSIxIi8+DQorICAgICAgICA8L293bmVkQXR0cmlidXRlPg0KKyAgICAgIDwvcGFja2FnZWRFbGVtZW50Pg0KKyAgICAgIDxwYWNrYWdlZEVsZW1lbnQgeG1pOnR5cGU9InVtbDpFeHRlbnNpb24iIHhtaTppZD0iU3lzTUwtQmxvY2tzLUVfZXh0ZW5zaW9uX0Jsb2NrX2Jhc2VfQ2xhc3MiIG5hbWU9IkVfZXh0ZW5zaW9uX0Jsb2NrX2Jhc2VfQ2xhc3MiIG1lbWJlckVuZD0iU3lzTUwtQmxvY2tzLUVfZXh0ZW5zaW9uX0Jsb2NrX2Jhc2VfQ2xhc3MtZXh0ZW5zaW9uX0Jsb2NrIFN5c01MLUJsb2Nrcy1CbG9jay1iYXNlX0NsYXNzIiBuYXZpZ2FibGVPd25lZEVuZD0iU3lzTUwtQmxvY2tzLUVfZXh0ZW5zaW9uX0Jsb2NrX2Jhc2VfQ2xhc3MtZXh0ZW5zaW9uX0Jsb2NrIj4NCisgICAgICAgIDxvd25lZEVuZCB4bWk6dHlwZT0idW1sOkV4dGVuc2lvbkVuZCIgeG1pOmlkPSJTeXNNTC1CbG9ja3MtRV9leHRlbnNpb25fQmxvY2tfYmFzZV9DbGFzcy1leHRlbnNpb25fQmxvY2siIG5hbWU9ImV4dGVuc2lvbl9CbG9jayIgdmlzaWJpbGl0eT0icHVibGljIiB0eXBlPSJTeXNNTC1CbG9ja3MtQmxvY2siIGFnZ3JlZ2F0aW9uPSJjb21wb3NpdGUiIGFzc29jaWF0aW9uPSJTeXNNTC1CbG9ja3MtRV9leHRlbnNpb25fQmxvY2tfYmFzZV9DbGFzcyI+DQorICAgICAgICAgIDxsb3dlclZhbHVlIHhtaTp0eXBlPSJ1bWw6TGl0ZXJhbEludGVnZXIiIHhtaTppZD0iU3lzTUwtQmxvY2tzLUVfZXh0ZW5zaW9uX0Jsb2NrX2Jhc2VfQ2xhc3MtZXh0ZW5zaW9uX0Jsb2NrLWxvd2VyVmFsdWUiIG5hbWU9IiIvPg0KKyAgICAgICAgICA8dXBwZXJWYWx1ZSB4bWk6dHlwZT0idW1sOkxpdGVyYWxJbnRlZ2VyIiB4bWk6aWQ9IlN5c01MLUJsb2Nrcy1FX2V4dGVuc2lvbl9CbG9ja19iYXNlX0NsYXNzLWV4dGVuc2lvbl9CbG9jay11cHBlclZhbHVlIiBuYW1lPSIiIHZhbHVlPSIxIi8+DQorICAgICAgICA8L293bmVkRW5kPg0KKyAgICAgIDwvcGFja2FnZWRFbGVtZW50Pg0KKyAgICAgIDxwYWNrYWdlZEVsZW1lbnQgeG1pOnR5cGU9InVtbDpFeHRlbnNpb24iIHhtaTppZD0iU3lzTUwtQmxvY2tzLUVfZXh0ZW5zaW9uX0JpbmRpbmdDb25uZWN0b3JfYmFzZV9Db25uZWN0b3IiIG5hbWU9IkVfZXh0ZW5zaW9uX0JpbmRpbmdDb25uZWN0b3JfYmFzZV9Db25uZWN0b3IiIG1lbWJlckVuZD0iU3lzTUwtQmxvY2tzLUVfZXh0ZW5zaW9uX0JpbmRpbmdDb25uZWN0b3JfYmFzZV9Db25uZWN0b3ItZXh0ZW5zaW9uX0JpbmRpbmdDb25uZWN0b3IgU3lzTUwtQmxvY2tzLUJpbmRpbmdDb25uZWN0b3ItYmFzZV9Db25uZWN0b3IiIG5hdmlnYWJsZU93bmVkRW5kPSJTeXNNTC1CbG9ja3MtRV9leHRlbnNpb25fQmluZGluZ0Nvbm5lY3Rvcl9iYXNlX0Nvbm5lY3Rvci1leHRlbnNpb25fQmluZGluZ0Nvbm5lY3RvciI+DQorICAgICAgICA8b3duZWRFbmQgeG1pOnR5cGU9InVtbDpFeHRlbnNpb25FbmQiIHhtaTppZD0iU3lzTUwtQmxvY2tzLUVfZXh0ZW5zaW9uX0JpbmRpbmdDb25uZWN0b3JfYmFzZV9Db25uZWN0b3ItZXh0ZW5zaW9uX0JpbmRpbmdDb25uZWN0b3IiIG5hbWU9ImV4dGVuc2lvbl9CaW5kaW5nQ29ubmVjdG9yIiB2aXNpYmlsaXR5PSJwdWJsaWMiIHR5cGU9IlN5c01MLUJsb2Nrcy1CaW5kaW5nQ29ubmVjdG9yIiBhZ2dyZWdhdGlvbj0iY29tcG9zaXRlIiBhc3NvY2lhdGlvbj0iU3lzTUwtQmxvY2tzLUVfZXh0ZW5zaW9uX0JpbmRpbmdDb25uZWN0b3JfYmFzZV9Db25uZWN0b3IiPg0KKyAgICAgICAgICA8bG93ZXJWYWx1ZSB4bWk6dHlwZT0idW1sOkxpdGVyYWxJbnRlZ2VyIiB4bWk6aWQ9IlN5c01MLUJsb2Nrcy1FX2V4dGVuc2lvbl9CaW5kaW5nQ29ubmVjdG9yX2Jhc2VfQ29ubmVjdG9yLWV4dGVuc2lvbl9CaW5kaW5nQ29ubmVjdG9yLWxvd2VyVmFsdWUiIG5hbWU9IiIvPg0KKyAgICAgICAgICA8dXBwZXJWYWx1ZSB4bWk6dHlwZT0idW1sOkxpdGVyYWxVbmxpbWl0ZWROYXR1cmFsIiB4bWk6aWQ9IlN5c01MLUJsb2Nrcy1FX2V4dGVuc2lvbl9CaW5kaW5nQ29ubmVjdG9yX2Jhc2VfQ29ubmVjdG9yLWV4dGVuc2lvbl9CaW5kaW5nQ29ubmVjdG9yLXVwcGVyVmFsdWUiIG5hbWU9IiIgdmFsdWU9IjEiLz4NCisgICAgICAgIDwvb3duZWRFbmQ+DQorICAgICAgPC9wYWNrYWdlZEVsZW1lbnQ+DQorICAgICAgPHBhY2thZ2VkRWxlbWVudCB4bWk6dHlwZT0idW1sOlN0ZXJlb3R5cGUiIHhtaTppZD0iU3lzTUwtQmxvY2tzLURpc3RyaWJ1dGVkUHJvcGVydHkiIG5hbWU9IkRpc3RyaWJ1dGVkUHJvcGVydHkiPg0KKyAgICAgICAgPG93bmVkQ29tbWVudCB4bWk6aWQ9IlN5c01MLUJsb2Nrcy1EaXN0cmlidXRlZFByb3BlcnR5LW93bmVkQ29tbWVudCIgYW5ub3RhdGVkRWxlbWVudD0iU3lzTUwtQmxvY2tzLURpc3RyaWJ1dGVkUHJvcGVydHkiPg0KKyAgICAgICAgICA8Ym9keT5EaXN0cmlidXRlZFByb3BlcnR5IGlzIGEgc3RlcmVvdHlwZSBvZiBQcm9wZXJ0eSB1c2VkIHRvIGFwcGx5IGEgcHJvYmFiaWxpdHkgZGlzdHJpYnV0aW9uIHRvIHRoZSB2YWx1ZXMgb2YgdGhlIHByb3BlcnR5LiBTcGVjaWZpYyBkaXN0cmlidXRpb25zIHNob3VsZCBiZSBkZWZpbmVkIGFzIHN1YmNsYXNzZXMgb2YgdGhlIERpc3RyaWJ1dGVkUHJvcGVydHkgc3RlcmVvdHlwZSB3aXRoIHRoZSBvcGVyYW5kcyBvZiB0aGUgZGlzdHJpYnV0aW9ucyByZXByZXNlbnRlZCBieSBwcm9wZXJ0aWVzIG9mIHRob3NlIHN0ZXJlb3R5cGUgc3ViY2xhc3Nlcy48L2JvZHk+DQorICAgICAgICA8L293bmVkQ29tbWVudD4NCisgICAgICAgIDxvd25lZEF0dHJpYnV0ZSB4bWk6aWQ9IlN5c01MLUJsb2Nrcy1EaXN0cmlidXRlZFByb3BlcnR5LWJhc2VfUHJvcGVydHkiIG5hbWU9ImJhc2VfUHJvcGVydHkiIHZpc2liaWxpdHk9InB1YmxpYyIgYXNzb2NpYXRpb249IlN5c01MLUJsb2Nrcy1FX2V4dGVuc2lvbl9EaXN0cmlidXRlZFByb3BlcnR5X2Jhc2VfUHJvcGVydHkiPg0KKyAgICAgICAgICA8dHlwZSB4bWk6dHlwZT0idW1sOkNsYXNzIiBocmVmPSJwYXRobWFwOi8vVU1MX01FVEFNT0RFTFMvVU1MLm1ldGFtb2RlbC51bWwjUHJvcGVydHkiLz4NCisgICAgICAgICAgPGxvd2VyVmFsdWUgeG1pOnR5cGU9InVtbDpMaXRlcmFsSW50ZWdlciIgeG1pOmlkPSJTeXNNTC1CbG9ja3MtRGlzdHJpYnV0ZWRQcm9wZXJ0eS1iYXNlX1Byb3BlcnR5LWxvd2VyVmFsdWUiIG5hbWU9IiIvPg0KKyAgICAgICAgICA8dXBwZXJWYWx1ZSB4bWk6dHlwZT0idW1sOkxpdGVyYWxVbmxpbWl0ZWROYXR1cmFsIiB4bWk6aWQ9IlN5c01MLUJsb2Nrcy1EaXN0cmlidXRlZFByb3BlcnR5LWJhc2VfUHJvcGVydHktdXBwZXJWYWx1ZSIgbmFtZT0iIiB2YWx1ZT0iMSIvPg0KKyAgICAgICAgPC9vd25lZEF0dHJpYnV0ZT4NCisgICAgICA8L3BhY2thZ2VkRWxlbWVudD4NCisgICAgICA8cGFja2FnZWRFbGVtZW50IHhtaTp0eXBlPSJ1bWw6U3RlcmVvdHlwZSIgeG1pOmlkPSJTeXNNTC1CbG9ja3MtQ29ubmVjdG9yUHJvcGVydHkiIG5hbWU9IkNvbm5lY3RvclByb3BlcnR5Ij4NCisgICAgICAgIDxvd25lZENvbW1lbnQgeG1pOmlkPSJTeXNNTC1CbG9ja3MtQ29ubmVjdG9yUHJvcGVydHktb3duZWRDb21tZW50IiBhbm5vdGF0ZWRFbGVtZW50PSJTeXNNTC1CbG9ja3MtQ29ubmVjdG9yUHJvcGVydHkiPg0KKyAgICAgICAgICA8Ym9keT5Db25uZWN0b3JzIGNhbiBiZSB0eXBlZCBieSBhc3NvY2lhdGlvbiBjbGFzc2VzIHRoYXQgYXJlIHN0ZXJlb3R5cGVkIGJ5IEJsb2NrIChhc3NvY2lhdGlvbiBibG9ja3MpLiBUaGVzZSBjb25uZWN0b3JzIHNwZWNpZnkgaW5zdGFuY2VzIChsaW5rcykgb2YgdGhlIGFzc29jaWF0aW9uIGJsb2NrIHRoYXQgZXhpc3QgZHVlIHRvIGluc3RhbnRpYXRpb24gb2YgdGhlIGJsb2NrIG93bmluZyBvciBpbmhlcml0aW5nIHRoZSBjb25uZWN0b3IuIFRoZSB2YWx1ZSBvZiBhIGNvbm5lY3RvciBwcm9wZXJ0eSBvbiBhbiBpbnN0YW5jZSBvZiBhIGJsb2NrIHdpbGwgYmUgZXhhY3RseSB0aG9zZSBsaW5rIG9iamVjdHMgdGhhdCBhcmUgaW5zdGFuY2VzIG9mIHRoZSBhc3NvY2lhdGlvbiBibG9jayB0eXBpbmcgdGhlIGNvbm5lY3RvciByZWZlcnJlZCB0byBieSB0aGUgY29ubmVjdG9yIHByb3BlcnR5LjwvYm9keT4NCisgICAgICAgIDwvb3duZWRDb21tZW50Pg0KKyAgICAgICAgPG93bmVkQXR0cmlidXRlIHhtaTppZD0iU3lzTUwtQmxvY2tzLUNvbm5lY3RvclByb3BlcnR5LWJhc2VfUHJvcGVydHkiIG5hbWU9ImJhc2VfUHJvcGVydHkiIHZpc2liaWxpdHk9InB1YmxpYyIgYXNzb2NpYXRpb249IlN5c01MLUJsb2Nrcy1FX2V4dGVuc2lvbl9Db25uZWN0b3JQcm9wZXJ0eV9iYXNlX1Byb3BlcnR5Ij4NCisgICAgICAgICAgPHR5cGUgeG1pOnR5cGU9InVtbDpDbGFzcyIgaHJlZj0icGF0aG1hcDovL1VNTF9NRVRBTU9ERUxTL1VNTC5tZXRhbW9kZWwudW1sI1Byb3BlcnR5Ii8+DQorICAgICAgICAgIDxsb3dlclZhbHVlIHhtaTp0eXBlPSJ1bWw6TGl0ZXJhbEludGVnZXIiIHhtaTppZD0iU3lzTUwtQmxvY2tzLUNvbm5lY3RvclByb3BlcnR5LWJhc2VfUHJvcGVydHktbG93ZXJWYWx1ZSIgbmFtZT0iIi8+DQorICAgICAgICAgIDx1cHBlclZhbHVlIHhtaTp0eXBlPSJ1bWw6TGl0ZXJhbFVubGltaXRlZE5hdHVyYWwiIHhtaTppZD0iU3lzTUwtQmxvY2tzLUNvbm5lY3RvclByb3BlcnR5LWJhc2VfUHJvcGVydHktdXBwZXJWYWx1ZSIgbmFtZT0iIiB2YWx1ZT0iMSIvPg0KKyAgICAgICAgPC9vd25lZEF0dHJpYnV0ZT4NCisgICAgICAgIDxvd25lZEF0dHJpYnV0ZSB4bWk6aWQ9IlN5c01MLUJsb2Nrcy1Db25uZWN0b3JQcm9wZXJ0eS1jb25uZWN0b3IiIG5hbWU9ImNvbm5lY3RvciIgdmlzaWJpbGl0eT0icHVibGljIj4NCisgICAgICAgICAgPG93bmVkQ29tbWVudCB4bWk6aWQ9IlN5c01MLUJsb2Nrcy1Db25uZWN0b3JQcm9wZXJ0eS1jb25uZWN0b3Itb3duZWRDb21tZW50IiBhbm5vdGF0ZWRFbGVtZW50PSJTeXNNTC1CbG9ja3MtQ29ubmVjdG9yUHJvcGVydHktY29ubmVjdG9yIj4NCisgICAgICAgICAgICA8Ym9keT5BIGNvbm5lY3RvciBvZiB0aGUgYmxvY2sgb3duaW5nIHRoZSBwcm9wZXJ0eSBvbiB3aGljaCB0aGUgc3RlcmVvdHlwZSBpcyBhcHBsaWVkLjwvYm9keT4NCisgICAgICAgICAgPC9vd25lZENvbW1lbnQ+DQorICAgICAgICAgIDx0eXBlIHhtaTp0eXBlPSJ1bWw6Q2xhc3MiIGhyZWY9InBhdGhtYXA6Ly9VTUxfTUVUQU1PREVMUy9VTUwubWV0YW1vZGVsLnVtbCNDb25uZWN0b3IiLz4NCisgICAgICAgICAgPGxvd2VyVmFsdWUgeG1pOnR5cGU9InVtbDpMaXRlcmFsSW50ZWdlciIgeG1pOmlkPSJTeXNNTC1CbG9ja3MtQ29ubmVjdG9yUHJvcGVydHktY29ubmVjdG9yLWxvd2VyVmFsdWUiIG5hbWU9IiIgdmFsdWU9IjEiLz4NCisgICAgICAgICAgPHVwcGVyVmFsdWUgeG1pOnR5cGU9InVtbDpMaXRlcmFsVW5saW1pdGVkTmF0dXJhbCIgeG1pOmlkPSJTeXNNTC1CbG9ja3MtQ29ubmVjdG9yUHJvcGVydHktY29ubmVjdG9yLXVwcGVyVmFsdWUiIG5hbWU9IiIgdmFsdWU9IjEiLz4NCisgICAgICAgIDwvb3duZWRBdHRyaWJ1dGU+DQorICAgICAgPC9wYWNrYWdlZEVsZW1lbnQ+DQorICAgICAgPHBhY2thZ2VkRWxlbWVudCB4bWk6dHlwZT0idW1sOkV4dGVuc2lvbiIgeG1pOmlkPSJTeXNNTC1CbG9ja3MtRV9leHRlbnNpb25fRGlzdHJpYnV0ZWRQcm9wZXJ0eV9iYXNlX1Byb3BlcnR5IiBuYW1lPSJFX2V4dGVuc2lvbl9EaXN0cmlidXRlZFByb3BlcnR5X2Jhc2VfUHJvcGVydHkiIG1lbWJlckVuZD0iU3lzTUwtQmxvY2tzLUVfZXh0ZW5zaW9uX0Rpc3RyaWJ1dGVkUHJvcGVydHlfYmFzZV9Qcm9wZXJ0eS1leHRlbnNpb25fRGlzdHJpYnV0ZWRQcm9wZXJ0eSBTeXNNTC1CbG9ja3MtRGlzdHJpYnV0ZWRQcm9wZXJ0eS1iYXNlX1Byb3BlcnR5IiBuYXZpZ2FibGVPd25lZEVuZD0iU3lzTUwtQmxvY2tzLUVfZXh0ZW5zaW9uX0Rpc3RyaWJ1dGVkUHJvcGVydHlfYmFzZV9Qcm9wZXJ0eS1leHRlbnNpb25fRGlzdHJpYnV0ZWRQcm9wZXJ0eSI+DQorICAgICAgICA8b3duZWRFbmQgeG1pOnR5cGU9InVtbDpFeHRlbnNpb25FbmQiIHhtaTppZD0iU3lzTUwtQmxvY2tzLUVfZXh0ZW5zaW9uX0Rpc3RyaWJ1dGVkUHJvcGVydHlfYmFzZV9Qcm9wZXJ0eS1leHRlbnNpb25fRGlzdHJpYnV0ZWRQcm9wZXJ0eSIgbmFtZT0iZXh0ZW5zaW9uX0Rpc3RyaWJ1dGVkUHJvcGVydHkiIHZpc2liaWxpdHk9InB1YmxpYyIgdHlwZT0iU3lzTUwtQmxvY2tzLURpc3RyaWJ1dGVkUHJvcGVydHkiIGFnZ3JlZ2F0aW9uPSJjb21wb3NpdGUiIGFzc29jaWF0aW9uPSJTeXNNTC1CbG9ja3MtRV9leHRlbnNpb25fRGlzdHJpYnV0ZWRQcm9wZXJ0eV9iYXNlX1Byb3BlcnR5Ij4NCisgICAgICAgICAgPGxvd2VyVmFsdWUgeG1pOnR5cGU9InVtbDpMaXRlcmFsSW50ZWdlciIgeG1pOmlkPSJTeXNNTC1CbG9ja3MtRV9leHRlbnNpb25fRGlzdHJpYnV0ZWRQcm9wZXJ0eV9iYXNlX1Byb3BlcnR5LWV4dGVuc2lvbl9EaXN0cmlidXRlZFByb3BlcnR5LWxvd2VyVmFsdWUiIG5hbWU9IiIvPg0KKyAgICAgICAgICA8dXBwZXJWYWx1ZSB4bWk6dHlwZT0idW1sOkxpdGVyYWxJbnRlZ2VyIiB4bWk6aWQ9IlN5c01MLUJsb2Nrcy1FX2V4dGVuc2lvbl9EaXN0cmlidXRlZFByb3BlcnR5X2Jhc2VfUHJvcGVydHktZXh0ZW5zaW9uX0Rpc3RyaWJ1dGVkUHJvcGVydHktdXBwZXJWYWx1ZSIgbmFtZT0iIiB2YWx1ZT0iMSIvPg0KKyAgICAgICAgPC9vd25lZEVuZD4NCisgICAgICA8L3BhY2thZ2VkRWxlbWVudD4NCisgICAgICA8cGFja2FnZWRFbGVtZW50IHhtaTp0eXBlPSJ1bWw6U3RlcmVvdHlwZSIgeG1pOmlkPSJTeXNNTC1CbG9ja3MtUGFydGljaXBhbnRQcm9wZXJ0eSIgbmFtZT0iUGFydGljaXBhbnRQcm9wZXJ0eSI+DQorICAgICAgICA8b3duZWRDb21tZW50IHhtaTppZD0iU3lzTUwtQmxvY2tzLVBhcnRpY2lwYW50UHJvcGVydHktb3duZWRDb21tZW50IiBhbm5vdGF0ZWRFbGVtZW50PSJTeXNNTC1CbG9ja3MtUGFydGljaXBhbnRQcm9wZXJ0eSI+DQorICAgICAgICAgIDxib2R5PlRoZSBCbG9jayBzdGVyZW90eXBlIGV4dGVuZHMgQ2xhc3MsIHNvIGl0IGNhbiBiZSBhcHBsaWVkIHRvIGFueSBzcGVjaWFsaXphdGlvbiBvZiBDbGFzcywgaW5jbHVkaW5nIEFzc29jaWF0aW9uIENsYXNzZXMuIFRoZXNlIGFyZSBpbmZvcm1hbGx5IGNhbGxlZCDigJxhc3NvY2lhdGlvbiBibG9ja3Mu4oCdIEFuIGFzc29jaWF0aW9uIGJsb2NrIGNhbiBvd24gcHJvcGVydGllcyBhbmQgY29ubmVjdG9ycywgbGlrZSBhbnkgb3RoZXIgYmxvY2suIEVhY2ggaW5zdGFuY2Ugb2YgYW4gYXNzb2NpYXRpb24gYmxvY2sgY2FuIGxpbmsgdG9nZXRoZXIgaW5zdGFuY2VzIG9mIHRoZSBlbmQgY2xhc3NpZmllcnMgb2YgdGhlIGFzc29jaWF0aW9uLiBUbyByZWZlciB0byBsaW5rZWQgb2JqZWN0cyBhbmQgdmFsdWVzIG9mIGFuIGluc3RhbmNlIG9mIGFuIGFzc29jaWF0aW9uIGJsb2NrLCBpdCBpcyBuZWNlc3NhcnkgZm9yIHRoZSBtb2RlbGVyIHRvIHNwZWNpZnkgd2hpY2ggKHBhcnRpY2lwYW50KSBwcm9wZXJ0aWVzIG9mIHRoZSBhc3NvY2lhdGlvbiBibG9jayBpZGVudGlmeSB0aGUgaW5zdGFuY2VzIGJlaW5nIGxpbmtlZCBhdCB3aGljaCBlbmQgb2YgdGhlIGFzc29jaWF0aW9uLiBUaGUgdmFsdWUgb2YgYSBwYXJ0aWNpcGFudCBwcm9wZXJ0eSBvbiBhbiBpbnN0YW5jZSAobGluaykgb2YgdGhlIGFzc29jaWF0aW9uIGJsb2NrIGlzIHRoZSB2YWx1ZSBvciBvYmplY3QgYXQgdGhlIGVuZCBvZiB0aGUgbGluayBjb3JyZXNwb25kaW5nIHRvIHRoaXMgZW5kIG9mIHRoZSBhc3NvY2lhdGlvbi48L2JvZHk+DQorICAgICAgICA8L293bmVkQ29tbWVudD4NCisgICAgICAgIDxvd25lZEF0dHJpYnV0ZSB4bWk6aWQ9IlN5c01MLUJsb2Nrcy1QYXJ0aWNpcGFudFByb3BlcnR5LWJhc2VfUHJvcGVydHkiIG5hbWU9ImJhc2VfUHJvcGVydHkiIHZpc2liaWxpdHk9InB1YmxpYyIgYXNzb2NpYXRpb249IlN5c01MLUJsb2Nrcy1FX2V4dGVuc2lvbl9QYXJ0aWNpcGFudFByb3BlcnR5X2Jhc2VfUHJvcGVydHkiPg0KKyAgICAgICAgICA8dHlwZSB4bWk6dHlwZT0idW1sOkNsYXNzIiBocmVmPSJwYXRobWFwOi8vVU1MX01FVEFNT0RFTFMvVU1MLm1ldGFtb2RlbC51bWwjUHJvcGVydHkiLz4NCisgICAgICAgICAgPGxvd2VyVmFsdWUgeG1pOnR5cGU9InVtbDpMaXRlcmFsSW50ZWdlciIgeG1pOmlkPSJTeXNNTC1CbG9ja3MtUGFydGljaXBhbnRQcm9wZXJ0eS1iYXNlX1Byb3BlcnR5LWxvd2VyVmFsdWUiIG5hbWU9IiIvPg0KKyAgICAgICAgICA8dXBwZXJWYWx1ZSB4bWk6dHlwZT0idW1sOkxpdGVyYWxVbmxpbWl0ZWROYXR1cmFsIiB4bWk6aWQ9IlN5c01MLUJsb2Nrcy1QYXJ0aWNpcGFudFByb3BlcnR5LWJhc2VfUHJvcGVydHktdXBwZXJWYWx1ZSIgbmFtZT0iIiB2YWx1ZT0iMSIvPg0KKyAgICAgICAgPC9vd25lZEF0dHJpYnV0ZT4NCisgICAgICAgIDxvd25lZEF0dHJpYnV0ZSB4bWk6aWQ9IlN5c01MLUJsb2Nrcy1QYXJ0aWNpcGFudFByb3BlcnR5LWVuZCIgbmFtZT0iZW5kIiB2aXNpYmlsaXR5PSJwdWJsaWMiPg0KKyAgICAgICAgICA8b3duZWRDb21tZW50IHhtaTppZD0iU3lzTUwtQmxvY2tzLVBhcnRpY2lwYW50UHJvcGVydHktZW5kLW93bmVkQ29tbWVudCIgYW5ub3RhdGVkRWxlbWVudD0iU3lzTUwtQmxvY2tzLVBhcnRpY2lwYW50UHJvcGVydHktZW5kIj4NCisgICAgICAgICAgICA8Ym9keT5BIG1lbWJlciBlbmQgb2YgdGhlIGFzc29jaWF0aW9uIGJsb2NrIG93bmluZyB0aGUgcHJvcGVydHkgb24gd2hpY2ggdGhlIHN0ZXJlb3R5cGUgaXMgYXBwbGllZC48L2JvZHk+DQorICAgICAgICAgIDwvb3duZWRDb21tZW50Pg0KKyAgICAgICAgICA8dHlwZSB4bWk6dHlwZT0idW1sOkNsYXNzIiBocmVmPSJwYXRobWFwOi8vVU1MX01FVEFNT0RFTFMvVU1MLm1ldGFtb2RlbC51bWwjUHJvcGVydHkiLz4NCisgICAgICAgICAgPGxvd2VyVmFsdWUgeG1pOnR5cGU9InVtbDpMaXRlcmFsSW50ZWdlciIgeG1pOmlkPSJTeXNNTC1CbG9ja3MtUGFydGljaXBhbnRQcm9wZXJ0eS1lbmQtbG93ZXJWYWx1ZSIgbmFtZT0iIiB2YWx1ZT0iMSIvPg0KKyAgICAgICAgICA8dXBwZXJWYWx1ZSB4bWk6dHlwZT0idW1sOkxpdGVyYWxVbmxpbWl0ZWROYXR1cmFsIiB4bWk6aWQ9IlN5c01MLUJsb2Nrcy1QYXJ0aWNpcGFudFByb3BlcnR5LWVuZC11cHBlclZhbHVlIiBuYW1lPSIiIHZhbHVlPSIxIi8+DQorICAgICAgICA8L293bmVkQXR0cmlidXRlPg0KKyAgICAgIDwvcGFja2FnZWRFbGVtZW50Pg0KKyAgICAgIDxwYWNrYWdlZEVsZW1lbnQgeG1pOnR5cGU9InVtbDpTdGVyZW90eXBlIiB4bWk6aWQ9IlN5c01MLUJsb2Nrcy1CaW5kaW5nQ29ubmVjdG9yIiBuYW1lPSJCaW5kaW5nQ29ubmVjdG9yIj4NCisgICAgICAgIDxvd25lZENvbW1lbnQgeG1pOmlkPSJTeXNNTC1CbG9ja3MtQmluZGluZ0Nvbm5lY3Rvci1vd25lZENvbW1lbnQiIGFubm90YXRlZEVsZW1lbnQ9IlN5c01MLUJsb2Nrcy1CaW5kaW5nQ29ubmVjdG9yIj4NCisgICAgICAgICAgPGJvZHk+QSBCaW5kaW5nIENvbm5lY3RvciBpcyBhIGNvbm5lY3RvciB3aGljaCBzcGVjaWZpZXMgdGhhdCB0aGUgcHJvcGVydGllcyBhdCBib3RoIGVuZHMgb2YgdGhlIGNvbm5lY3RvciBoYXZlIGVxdWFsIHZhbHVlcy4gSWYgdGhlIHByb3BlcnRpZXMgYXQgdGhlIGVuZHMgb2YgYSBiaW5kaW5nIGNvbm5lY3RvciBhcmUgdHlwZWQgYnkgYSBEYXRhVHlwZSBvciBWYWx1ZVR5cGUsIHRoZSBjb25uZWN0b3Igc3BlY2lmaWVzIHRoYXQgdGhlIGluc3RhbmNlcyBvZiB0aGUgcHJvcGVydGllcyBtdXN0IGhvbGQgZXF1YWwgdmFsdWVzLCByZWN1cnNpdmVseSB0aHJvdWdoIGFueSBuZXN0ZWQgcHJvcGVydGllcyB3aXRoaW4gdGhlIGNvbm5lY3RlZCBwcm9wZXJ0aWVzLiBJZiB0aGUgcHJvcGVydGllcyBhdCB0aGUgZW5kcyBvZiBhIGJpbmRpbmcgY29ubmVjdG9yIGFyZSB0eXBlZCBieSBhIEJsb2NrLCB0aGUgY29ubmVjdG9yIHNwZWNpZmllcyB0aGF0IHRoZSBpbnN0YW5jZXMgb2YgdGhlIHByb3BlcnRpZXMgbXVzdCByZWZlciB0byB0aGUgc2FtZSBibG9jayBpbnN0YW5jZS4gQXMgd2l0aCBhbnkgY29ubmVjdG9yIG93bmVkIGJ5IGEgU3lzTUwgQmxvY2ssIHRoZSBlbmRzIG9mIGEgYmluZGluZyBjb25uZWN0b3IgbWF5IGJlIG5lc3RlZCB3aXRoaW4gYSBtdWx0aS1sZXZlbCBwYXRoIG9mIHByb3BlcnRpZXMgYWNjZXNzaWJsZSBmcm9tIHRoZSBvd25pbmcgYmxvY2suIFRoZSBOZXN0ZWRDb25uZWN0b3JFbmQgc3RlcmVvdHlwZSBpcyB1c2VkIHRvIHJlcHJlc2VudCBzdWNoIG5lc3RlZCBlbmRzIGp1c3QgYXMgZm9yIG5lc3RlZCBlbmRzIG9mIG90aGVyIFN5c01MIGNvbm5lY3RvcnMuPC9ib2R5Pg0KKyAgICAgICAgPC9vd25lZENvbW1lbnQ+DQorICAgICAgICA8b3duZWRBdHRyaWJ1dGUgeG1pOmlkPSJTeXNNTC1CbG9ja3MtQmluZGluZ0Nvbm5lY3Rvci1iYXNlX0Nvbm5lY3RvciIgbmFtZT0iYmFzZV9Db25uZWN0b3IiIHZpc2liaWxpdHk9InB1YmxpYyIgYXNzb2NpYXRpb249IlN5c01MLUJsb2Nrcy1FX2V4dGVuc2lvbl9CaW5kaW5nQ29ubmVjdG9yX2Jhc2VfQ29ubmVjdG9yIj4NCisgICAgICAgICAgPHR5cGUgeG1pOnR5cGU9InVtbDpDbGFzcyIgaHJlZj0icGF0aG1hcDovL1VNTF9NRVRBTU9ERUxTL1VNTC5tZXRhbW9kZWwudW1sI0Nvbm5lY3RvciIvPg0KKyAgICAgICAgICA8bG93ZXJWYWx1ZSB4bWk6dHlwZT0idW1sOkxpdGVyYWxJbnRlZ2VyIiB4bWk6aWQ9IlN5c01MLUJsb2Nrcy1CaW5kaW5nQ29ubmVjdG9yLWJhc2VfQ29ubmVjdG9yLWxvd2VyVmFsdWUiIG5hbWU9IiIvPg0KKyAgICAgICAgICA8dXBwZXJWYWx1ZSB4bWk6dHlwZT0idW1sOkxpdGVyYWxVbmxpbWl0ZWROYXR1cmFsIiB4bWk6aWQ9IlN5c01MLUJsb2Nrcy1CaW5kaW5nQ29ubmVjdG9yLWJhc2VfQ29ubmVjdG9yLXVwcGVyVmFsdWUiIG5hbWU9IiIgdmFsdWU9IjEiLz4NCisgICAgICAgIDwvb3duZWRBdHRyaWJ1dGU+DQorICAgICAgPC9wYWNrYWdlZEVsZW1lbnQ+DQorICAgICAgPHBhY2thZ2VkRWxlbWVudCB4bWk6dHlwZT0idW1sOlN0ZXJlb3R5cGUiIHhtaTppZD0iU3lzTUwtQmxvY2tzLUJsb2NrIiBuYW1lPSJCbG9jayI+DQorICAgICAgICA8b3duZWRDb21tZW50IHhtaTppZD0iU3lzTUwtQmxvY2tzLUJsb2NrLW93bmVkQ29tbWVudCIgYW5ub3RhdGVkRWxlbWVudD0iU3lzTUwtQmxvY2tzLUJsb2NrIj4NCisgICAgICAgICAgPGJvZHk+QSBCbG9jayBpcyBhIG1vZHVsYXIgdW5pdCB0aGF0IGRlc2NyaWJlcyB0aGUgc3RydWN0dXJlIG9mIGEgc3lzdGVtIG9yIGVsZW1lbnQuIEl0IG1heSBpbmNsdWRlIGJvdGggc3RydWN0dXJhbCBhbmQgYmVoYXZpb3JhbCBmZWF0dXJlcywgc3VjaCBhcyBwcm9wZXJ0aWVzIGFuZCBvcGVyYXRpb25zLCB0aGF0IHJlcHJlc2VudCB0aGUgc3RhdGUgb2YgdGhlIHN5c3RlbSBhbmQgYmVoYXZpb3IgdGhhdCB0aGUgc3lzdGVtIG1heSBleGhpYml0LiBTb21lIG9mIHRoZXNlIHByb3BlcnRpZXMgbWF5IGhvbGQgcGFydHMgb2YgYSBzeXN0ZW0sIHdoaWNoIGNhbiBhbHNvIGJlIGRlc2NyaWJlZCBieSBibG9ja3MuIEEgYmxvY2sgbWF5IGluY2x1ZGUgYSBzdHJ1Y3R1cmUgb2YgY29ubmVjdG9ycyBiZXR3ZWVuIGl0cyBwcm9wZXJ0aWVzIHRvIGluZGljYXRlIGhvdyBpdHMgcGFydHMgb3Igb3RoZXIgcHJvcGVydGllcyByZWxhdGUgdG8gb25lIGFub3RoZXIuIFN5c01MIGJsb2NrcyBwcm92aWRlIGEgZ2VuZXJhbC1wdXJwb3NlIGNhcGFiaWxpdHkgdG8gZGVzY3JpYmUgdGhlIGFyY2hpdGVjdHVyZSBvZiBhIHN5c3RlbS4gVGhleSBwcm92aWRlIHRoZSBhYmlsaXR5IHRvIHJlcHJlc2VudCBhIHN5c3RlbSBoaWVyYXJjaHksIGluIHdoaWNoIGEgc3lzdGVtIGF0IG9uZSBsZXZlbCBpcyBjb21wb3NlZCBvZiBzeXN0ZW1zIGF0IGEgbW9yZSBiYXNpYyBsZXZlbC4gVGhleSBjYW4gZGVzY3JpYmUgbm90IG9ubHkgdGhlIGNvbm5lY3Rpdml0eSByZWxhdGlvbnNoaXBzIGJldHdlZW4gdGhlIHN5c3RlbXMgYXQgYW55IGxldmVsLCBidXQgYWxzbyBxdWFudGl0YXRpdmUgdmFsdWVzIG9yIG90aGVyIGluZm9ybWF0aW9uIGFib3V0IGEgc3lzdGVtLiBTeXNNTCBkb2VzIG5vdCByZXN0cmljdCB0aGUga2luZCBvZiBzeXN0ZW0gb3Igc3lzdGVtIGVsZW1lbnQgdGhhdCBtYXkgYmUgZGVzY3JpYmVkIGJ5IGEgYmxvY2suIEFueSByZXVzYWJsZSBmb3JtIG9mIGRlc2NyaXB0aW9uIHRoYXQgbWF5IGJlIGFwcGxpZWQgdG8gYSBzeXN0ZW0gb3IgYSBzZXQgb2Ygc3lzdGVtIGNoYXJhY3RlcmlzdGljcyBtYXkgYmUgZGVzY3JpYmVkIGJ5IGEgYmxvY2suIFN1Y2ggcmV1c2FibGUgZGVzY3JpcHRpb25zLCBmb3IgZXhhbXBsZSwgbWF5IGJlIGFwcGxpZWQgdG8gcHVyZWx5IGNvbmNlcHR1YWwgYXNwZWN0cyBvZiBhIHN5c3RlbSBkZXNpZ24sIHN1Y2ggYXMgcmVsYXRpb25zaGlwcyB0aGF0IGhvbGQgYmV0d2VlbiBwYXJ0cyBvciBwcm9wZXJ0aWVzIG9mIGEgc3lzdGVtLiBDb25uZWN0b3JzIG93bmVkIGJ5IFN5c01MIGJsb2NrcyBtYXkgYmUgdXNlZCB0byBkZWZpbmUgcmVsYXRpb25zaGlwcyBiZXR3ZWVuIHBhcnRzIG9yIG90aGVyIHByb3BlcnRpZXMgb2YgdGhlIHNhbWUgY29udGFpbmluZyBibG9jay4gVGhlIHR5cGUgb2YgYSBjb25uZWN0b3Igb3IgaXRzIGNvbm5lY3RlZCBlbmRzIG1heSBzcGVjaWZ5IHRoZSBzZW1hbnRpYyBpbnRlcnByZXRhdGlvbiBvZiBhIHNwZWNpZmljIGNvbm5lY3Rvci48L2JvZHk+DQorICAgICAgICA8L293bmVkQ29tbWVudD4NCisgICAgICAgIDxvd25lZEF0dHJpYnV0ZSB4bWk6aWQ9IlN5c01MLUJsb2Nrcy1CbG9jay1iYXNlX0NsYXNzIiBuYW1lPSJiYXNlX0NsYXNzIiB2aXNpYmlsaXR5PSJwdWJsaWMiIGFzc29jaWF0aW9uPSJTeXNNTC1CbG9ja3MtRV9leHRlbnNpb25fQmxvY2tfYmFzZV9DbGFzcyI+DQorICAgICAgICAgIDx0eXBlIHhtaTp0eXBlPSJ1bWw6Q2xhc3MiIGhyZWY9InBhdGhtYXA6Ly9VTUxfTUVUQU1PREVMUy9VTUwubWV0YW1vZGVsLnVtbCNDbGFzcyIvPg0KKyAgICAgICAgICA8bG93ZXJWYWx1ZSB4bWk6dHlwZT0idW1sOkxpdGVyYWxJbnRlZ2VyIiB4bWk6aWQ9IlN5c01MLUJsb2Nrcy1CbG9jay1iYXNlX0NsYXNzLWxvd2VyVmFsdWUiIG5hbWU9IiIvPg0KKyAgICAgICAgICA8dXBwZXJWYWx1ZSB4bWk6dHlwZT0idW1sOkxpdGVyYWxVbmxpbWl0ZWROYXR1cmFsIiB4bWk6aWQ9IlN5c01MLUJsb2Nrcy1CbG9jay1iYXNlX0NsYXNzLXVwcGVyVmFsdWUiIG5hbWU9IiIgdmFsdWU9IjEiLz4NCisgICAgICAgIDwvb3duZWRBdHRyaWJ1dGU+DQorICAgICAgICA8b3duZWRBdHRyaWJ1dGUgeG1pOmlkPSJTeXNNTC1CbG9ja3MtQmxvY2staXNFbmNhcHN1bGF0ZWQiIG5hbWU9ImlzRW5jYXBzdWxhdGVkIiB2aXNpYmlsaXR5PSJwdWJsaWMiPg0KKyAgICAgICAgICA8b3duZWRDb21tZW50IHhtaTppZD0iU3lzTUwtQmxvY2tzLUJsb2NrLWlzRW5jYXBzdWxhdGVkLW93bmVkQ29tbWVudCIgYW5ub3RhdGVkRWxlbWVudD0iU3lzTUwtQmxvY2tzLUJsb2NrLWlzRW5jYXBzdWxhdGVkIj4NCisgICAgICAgICAgICA8Ym9keT5JZiB0cnVlLCB0aGVuIHRoZSBibG9jayBpcyB0cmVhdGVkIGFzIGEgYmxhY2sgYm94OyBhIHBhcnQgdHlwZWQgYnkgdGhpcyBibGFjayBib3ggY2FuIG9ubHkgYmUgY29ubmVjdGVkIHZpYSBpdHMgcG9ydHMgb3IgZGlyZWN0bHkgdG8gaXRzIG91dGVyIGJvdW5kYXJ5LiBJZiBmYWxzZSwgb3IgaWYgYSB2YWx1ZSBpcyBub3QgcHJlc2VudCwgdGhlbiBjb25uZWN0aW9ucyBjYW4gYmUgZXN0YWJsaXNoZWQgdG8gZWxlbWVudHMgb2YgaXRzIGludGVybmFsIHN0cnVjdHVyZSB2aWEgZGVlcC1uZXN0ZWQgY29ubmVjdG9yIGVuZHMuPC9ib2R5Pg0KKyAgICAgICAgICA8L293bmVkQ29tbWVudD4NCisgICAgICAgICAgPHR5cGUgeG1pOnR5cGU9InVtbDpQcmltaXRpdmVUeXBlIiBocmVmPSJwYXRobWFwOi8vVU1MX0xJQlJBUklFUy9VTUxQcmltaXRpdmVUeXBlcy5saWJyYXJ5LnVtbCNCb29sZWFuIi8+DQorICAgICAgICAgIDxsb3dlclZhbHVlIHhtaTp0eXBlPSJ1bWw6TGl0ZXJhbEludGVnZXIiIHhtaTppZD0iU3lzTUwtQmxvY2tzLUJsb2NrLWlzRW5jYXBzdWxhdGVkLWxvd2VyVmFsdWUiIG5hbWU9IiIvPg0KKyAgICAgICAgICA8dXBwZXJWYWx1ZSB4bWk6dHlwZT0idW1sOkxpdGVyYWxVbmxpbWl0ZWROYXR1cmFsIiB4bWk6aWQ9IlN5c01MLUJsb2Nrcy1CbG9jay1pc0VuY2Fwc3VsYXRlZC11cHBlclZhbHVlIiBuYW1lPSIiIHZhbHVlPSIxIi8+DQorICAgICAgICA8L293bmVkQXR0cmlidXRlPg0KKyAgICAgIDwvcGFja2FnZWRFbGVtZW50Pg0KKyAgICAgIDxwYWNrYWdlZEVsZW1lbnQgeG1pOnR5cGU9InVtbDpFeHRlbnNpb24iIHhtaTppZD0iU3lzTUwtQmxvY2tzLUVfZXh0ZW5zaW9uX1BhcnRpY2lwYW50UHJvcGVydHlfYmFzZV9Qcm9wZXJ0eSIgbmFtZT0iRV9leHRlbnNpb25fUGFydGljaXBhbnRQcm9wZXJ0eV9iYXNlX1Byb3BlcnR5IiBtZW1iZXJFbmQ9IlN5c01MLUJsb2Nrcy1FX2V4dGVuc2lvbl9QYXJ0aWNpcGFudFByb3BlcnR5X2Jhc2VfUHJvcGVydHktZXh0ZW5zaW9uX1BhcnRpY2lwYW50UHJvcGVydHkgU3lzTUwtQmxvY2tzLVBhcnRpY2lwYW50UHJvcGVydHktYmFzZV9Qcm9wZXJ0eSIgbmF2aWdhYmxlT3duZWRFbmQ9IlN5c01MLUJsb2Nrcy1FX2V4dGVuc2lvbl9QYXJ0aWNpcGFudFByb3BlcnR5X2Jhc2VfUHJvcGVydHktZXh0ZW5zaW9uX1BhcnRpY2lwYW50UHJvcGVydHkiPg0KKyAgICAgICAgPG93bmVkRW5kIHhtaTp0eXBlPSJ1bWw6RXh0ZW5zaW9uRW5kIiB4bWk6aWQ9IlN5c01MLUJsb2Nrcy1FX2V4dGVuc2lvbl9QYXJ0aWNpcGFudFByb3BlcnR5X2Jhc2VfUHJvcGVydHktZXh0ZW5zaW9uX1BhcnRpY2lwYW50UHJvcGVydHkiIG5hbWU9ImV4dGVuc2lvbl9QYXJ0aWNpcGFudFByb3BlcnR5IiB2aXNpYmlsaXR5PSJwdWJsaWMiIHR5cGU9IlN5c01MLUJsb2Nrcy1QYXJ0aWNpcGFudFByb3BlcnR5IiBhZ2dyZWdhdGlvbj0iY29tcG9zaXRlIiBhc3NvY2lhdGlvbj0iU3lzTUwtQmxvY2tzLUVfZXh0ZW5zaW9uX1BhcnRpY2lwYW50UHJvcGVydHlfYmFzZV9Qcm9wZXJ0eSI+DQorICAgICAgICAgIDxsb3dlclZhbHVlIHhtaTp0eXBlPSJ1bWw6TGl0ZXJhbEludGVnZXIiIHhtaTppZD0iU3lzTUwtQmxvY2tzLUVfZXh0ZW5zaW9uX1BhcnRpY2lwYW50UHJvcGVydHlfYmFzZV9Qcm9wZXJ0eS1leHRlbnNpb25fUGFydGljaXBhbnRQcm9wZXJ0eS1sb3dlclZhbHVlIiBuYW1lPSIiLz4NCisgICAgICAgICAgPHVwcGVyVmFsdWUgeG1pOnR5cGU9InVtbDpMaXRlcmFsVW5saW1pdGVkTmF0dXJhbCIgeG1pOmlkPSJTeXNNTC1CbG9ja3MtRV9leHRlbnNpb25fUGFydGljaXBhbnRQcm9wZXJ0eV9iYXNlX1Byb3BlcnR5LWV4dGVuc2lvbl9QYXJ0aWNpcGFudFByb3BlcnR5LXVwcGVyVmFsdWUiIG5hbWU9IiIgdmFsdWU9IjEiLz4NCisgICAgICAgIDwvb3duZWRFbmQ+DQorICAgICAgPC9wYWNrYWdlZEVsZW1lbnQ+DQorICAgICAgPHBhY2thZ2VkRWxlbWVudCB4bWk6dHlwZT0idW1sOlN0ZXJlb3R5cGUiIHhtaTppZD0iU3lzTUwtQmxvY2tzLVByb3BlcnR5U3BlY2lmaWNUeXBlIiBuYW1lPSJQcm9wZXJ0eVNwZWNpZmljVHlwZSI+DQorICAgICAgICA8b3duZWRDb21tZW50IHhtaTppZD0iU3lzTUwtQmxvY2tzLVByb3BlcnR5U3BlY2lmaWNUeXBlLW93bmVkQ29tbWVudCIgYW5ub3RhdGVkRWxlbWVudD0iU3lzTUwtQmxvY2tzLVByb3BlcnR5U3BlY2lmaWNUeXBlIj4NCisgICAgICAgICAgPGJvZHk+VGhlIFByb3BlcnR5U3BlY2lmaWNUeXBlIHN0ZXJlb3R5cGUgc2hvdWxkIGF1dG9tYXRpY2FsbHkgYmUgYXBwbGllZCB0byB0aGUgY2xhc3NpZmllciB3aGljaCB0eXBlcyBhIHByb3BlcnR5IHdpdGggYSBwcm9wZXJ0eXNwZWNpZmljIHR5cGUuIFRoaXMgY2xhc3NpZmllciBjYW4gY29udGFpbiBkZWZpbml0aW9ucyBvZiBuZXcgb3IgcmVkZWZpbmVkIGZlYXR1cmVzIHdoaWNoIGV4dGVuZCB0aGUgb3JpZ2luYWwgY2xhc3NpZmllciByZWZlcmVuY2VkIGJ5IHRoZSBwcm9wZXJ0eS1zcGVjaWZpYyB0eXBlLjwvYm9keT4NCisgICAgICAgIDwvb3duZWRDb21tZW50Pg0KKyAgICAgICAgPG93bmVkQXR0cmlidXRlIHhtaTppZD0iU3lzTUwtQmxvY2tzLVByb3BlcnR5U3BlY2lmaWNUeXBlLWJhc2VfQ2xhc3NpZmllciIgbmFtZT0iYmFzZV9DbGFzc2lmaWVyIiB2aXNpYmlsaXR5PSJwdWJsaWMiIGFzc29jaWF0aW9uPSJTeXNNTC1CbG9ja3MtRV9leHRlbnNpb25fUHJvcGVydHlTcGVjaWZpY1R5cGVfYmFzZV9DbGFzc2lmaWVyIj4NCisgICAgICAgICAgPHR5cGUgeG1pOnR5cGU9InVtbDpDbGFzcyIgaHJlZj0icGF0aG1hcDovL1VNTF9NRVRBTU9ERUxTL1VNTC5tZXRhbW9kZWwudW1sI0NsYXNzaWZpZXIiLz4NCisgICAgICAgICAgPGxvd2VyVmFsdWUgeG1pOnR5cGU9InVtbDpMaXRlcmFsSW50ZWdlciIgeG1pOmlkPSJTeXNNTC1CbG9ja3MtUHJvcGVydHlTcGVjaWZpY1R5cGUtYmFzZV9DbGFzc2lmaWVyLWxvd2VyVmFsdWUiIG5hbWU9IiIvPg0KKyAgICAgICAgICA8dXBwZXJWYWx1ZSB4bWk6dHlwZT0idW1sOkxpdGVyYWxVbmxpbWl0ZWROYXR1cmFsIiB4bWk6aWQ9IlN5c01MLUJsb2Nrcy1Qcm9wZXJ0eVNwZWNpZmljVHlwZS1iYXNlX0NsYXNzaWZpZXItdXBwZXJWYWx1ZSIgbmFtZT0iIiB2YWx1ZT0iMSIvPg0KKyAgICAgICAgPC9vd25lZEF0dHJpYnV0ZT4NCisgICAgICA8L3BhY2thZ2VkRWxlbWVudD4NCisgICAgICA8cGFja2FnZWRFbGVtZW50IHhtaTp0eXBlPSJ1bWw6RXh0ZW5zaW9uIiB4bWk6aWQ9IlN5c01MLUJsb2Nrcy1FX2V4dGVuc2lvbl9Qcm9wZXJ0eVNwZWNpZmljVHlwZV9iYXNlX0NsYXNzaWZpZXIiIG5hbWU9IkVfZXh0ZW5zaW9uX1Byb3BlcnR5U3BlY2lmaWNUeXBlX2Jhc2VfQ2xhc3NpZmllciIgbWVtYmVyRW5kPSJTeXNNTC1CbG9ja3MtRV9leHRlbnNpb25fUHJvcGVydHlTcGVjaWZpY1R5cGVfYmFzZV9DbGFzc2lmaWVyLWV4dGVuc2lvbl9Qcm9wZXJ0eVNwZWNpZmljVHlwZSBTeXNNTC1CbG9ja3MtUHJvcGVydHlTcGVjaWZpY1R5cGUtYmFzZV9DbGFzc2lmaWVyIiBuYXZpZ2FibGVPd25lZEVuZD0iU3lzTUwtQmxvY2tzLUVfZXh0ZW5zaW9uX1Byb3BlcnR5U3BlY2lmaWNUeXBlX2Jhc2VfQ2xhc3NpZmllci1leHRlbnNpb25fUHJvcGVydHlTcGVjaWZpY1R5cGUiPg0KKyAgICAgICAgPG93bmVkRW5kIHhtaTp0eXBlPSJ1bWw6RXh0ZW5zaW9uRW5kIiB4bWk6aWQ9IlN5c01MLUJsb2Nrcy1FX2V4dGVuc2lvbl9Qcm9wZXJ0eVNwZWNpZmljVHlwZV9iYXNlX0NsYXNzaWZpZXItZXh0ZW5zaW9uX1Byb3BlcnR5U3BlY2lmaWNUeXBlIiBuYW1lPSJleHRlbnNpb25fUHJvcGVydHlTcGVjaWZpY1R5cGUiIHZpc2liaWxpdHk9InB1YmxpYyIgdHlwZT0iU3lzTUwtQmxvY2tzLVByb3BlcnR5U3BlY2lmaWNUeXBlIiBhZ2dyZWdhdGlvbj0iY29tcG9zaXRlIiBhc3NvY2lhdGlvbj0iU3lzTUwtQmxvY2tzLUVfZXh0ZW5zaW9uX1Byb3BlcnR5U3BlY2lmaWNUeXBlX2Jhc2VfQ2xhc3NpZmllciI+DQorICAgICAgICAgIDxsb3dlclZhbHVlIHhtaTp0eXBlPSJ1bWw6TGl0ZXJhbEludGVnZXIiIHhtaTppZD0iU3lzTUwtQmxvY2tzLUVfZXh0ZW5zaW9uX1Byb3BlcnR5U3BlY2lmaWNUeXBlX2Jhc2VfQ2xhc3NpZmllci1leHRlbnNpb25fUHJvcGVydHlTcGVjaWZpY1R5cGUtbG93ZXJWYWx1ZSIgbmFtZT0iIi8+DQorICAgICAgICAgIDx1cHBlclZhbHVlIHhtaTp0eXBlPSJ1bWw6TGl0ZXJhbFVubGltaXRlZE5hdHVyYWwiIHhtaTppZD0iU3lzTUwtQmxvY2tzLUVfZXh0ZW5zaW9uX1Byb3BlcnR5U3BlY2lmaWNUeXBlX2Jhc2VfQ2xhc3NpZmllci1leHRlbnNpb25fUHJvcGVydHlTcGVjaWZpY1R5cGUtdXBwZXJWYWx1ZSIgbmFtZT0iIiB2YWx1ZT0iMSIvPg0KKyAgICAgICAgPC9vd25lZEVuZD4NCisgICAgICA8L3BhY2thZ2VkRWxlbWVudD4NCisgICAgICA8cGFja2FnZWRFbGVtZW50IHhtaTp0eXBlPSJ1bWw6RXh0ZW5zaW9uIiB4bWk6aWQ9IlN5c01MLUJsb2Nrcy1FX2V4dGVuc2lvbl9OZXN0ZWRDb25uZWN0b3JFbmRfYmFzZV9Db25uZWN0b3JFbmQiIG5hbWU9IkVfZXh0ZW5zaW9uX05lc3RlZENvbm5lY3RvckVuZF9iYXNlX0Nvbm5lY3RvckVuZCIgbWVtYmVyRW5kPSJTeXNNTC1CbG9ja3MtRV9leHRlbnNpb25fTmVzdGVkQ29ubmVjdG9yRW5kX2Jhc2VfQ29ubmVjdG9yRW5kLWV4dGVuc2lvbl9OZXN0ZWRDb25uZWN0b3JFbmQgU3lzTUwtQmxvY2tzLU5lc3RlZENvbm5lY3RvckVuZC1iYXNlX0Nvbm5lY3RvckVuZCIgbmF2aWdhYmxlT3duZWRFbmQ9IlN5c01MLUJsb2Nrcy1FX2V4dGVuc2lvbl9OZXN0ZWRDb25uZWN0b3JFbmRfYmFzZV9Db25uZWN0b3JFbmQtZXh0ZW5zaW9uX05lc3RlZENvbm5lY3RvckVuZCI+DQorICAgICAgICA8b3duZWRFbmQgeG1pOnR5cGU9InVtbDpFeHRlbnNpb25FbmQiIHhtaTppZD0iU3lzTUwtQmxvY2tzLUVfZXh0ZW5zaW9uX05lc3RlZENvbm5lY3RvckVuZF9iYXNlX0Nvbm5lY3RvckVuZC1leHRlbnNpb25fTmVzdGVkQ29ubmVjdG9yRW5kIiBuYW1lPSJleHRlbnNpb25fTmVzdGVkQ29ubmVjdG9yRW5kIiB2aXNpYmlsaXR5PSJwdWJsaWMiIHR5cGU9IlN5c01MLUJsb2Nrcy1OZXN0ZWRDb25uZWN0b3JFbmQiIGFnZ3JlZ2F0aW9uPSJjb21wb3NpdGUiIGFzc29jaWF0aW9uPSJTeXNNTC1CbG9ja3MtRV9leHRlbnNpb25fTmVzdGVkQ29ubmVjdG9yRW5kX2Jhc2VfQ29ubmVjdG9yRW5kIj4NCisgICAgICAgICAgPGxvd2VyVmFsdWUgeG1pOnR5cGU9InVtbDpMaXRlcmFsSW50ZWdlciIgeG1pOmlkPSJTeXNNTC1CbG9ja3MtRV9leHRlbnNpb25fTmVzdGVkQ29ubmVjdG9yRW5kX2Jhc2VfQ29ubmVjdG9yRW5kLWV4dGVuc2lvbl9OZXN0ZWRDb25uZWN0b3JFbmQtbG93ZXJWYWx1ZSIgbmFtZT0iIi8+DQorICAgICAgICAgIDx1cHBlclZhbHVlIHhtaTp0eXBlPSJ1bWw6TGl0ZXJhbEludGVnZXIiIHhtaTppZD0iU3lzTUwtQmxvY2tzLUVfZXh0ZW5zaW9uX05lc3RlZENvbm5lY3RvckVuZF9iYXNlX0Nvbm5lY3RvckVuZC1leHRlbnNpb25fTmVzdGVkQ29ubmVjdG9yRW5kLXVwcGVyVmFsdWUiIG5hbWU9IiIgdmFsdWU9IjEiLz4NCisgICAgICAgIDwvb3duZWRFbmQ+DQorICAgICAgPC9wYWNrYWdlZEVsZW1lbnQ+DQorICAgICAgPHBhY2thZ2VkRWxlbWVudCB4bWk6dHlwZT0idW1sOlN0ZXJlb3R5cGUiIHhtaTppZD0iU3lzTUwtQmxvY2tzLU5lc3RlZENvbm5lY3RvckVuZCIgbmFtZT0iTmVzdGVkQ29ubmVjdG9yRW5kIj4NCisgICAgICAgIDxvd25lZENvbW1lbnQgeG1pOmlkPSJTeXNNTC1CbG9ja3MtTmVzdGVkQ29ubmVjdG9yRW5kLW93bmVkQ29tbWVudCIgYW5ub3RhdGVkRWxlbWVudD0iU3lzTUwtQmxvY2tzLU5lc3RlZENvbm5lY3RvckVuZCI+DQorICAgICAgICAgIDxib2R5PlRoZSBOZXN0ZWRDb25uZWN0b3JFbmQgc3RlcmVvdHlwZSBvZiBVTUwgQ29ubmVjdG9yRW5kIGV4dGVuZHMgYSBVTUwgQ29ubmVjdG9yRW5kIHNvIHRoYXQgdGhlIGNvbm5lY3RlZCBwcm9wZXJ0eSBtYXkgYmUgaWRlbnRpZmllZCBieSBhIG11bHRpLWxldmVsIHBhdGggb2YgYWNjZXNzaWJsZSBwcm9wZXJ0aWVzIGZyb20gdGhlIGJsb2NrIHRoYXQgb3ducyB0aGUgY29ubmVjdG9yLjwvYm9keT4NCisgICAgICAgIDwvb3duZWRDb21tZW50Pg0KKyAgICAgICAgPGdlbmVyYWxpemF0aW9uIHhtaTppZD0iU3lzTUwtQmxvY2tzLU5lc3RlZENvbm5lY3RvckVuZC1nZW5lcmFsaXphdGlvbiIgZ2VuZXJhbD0iU3lzTUwtQmxvY2tzLUVsZW1lbnRQcm9wZXJ0eVBhdGgiLz4NCisgICAgICAgIDxvd25lZEF0dHJpYnV0ZSB4bWk6aWQ9IlN5c01MLUJsb2Nrcy1OZXN0ZWRDb25uZWN0b3JFbmQtYmFzZV9Db25uZWN0b3JFbmQiIG5hbWU9ImJhc2VfQ29ubmVjdG9yRW5kIiB2aXNpYmlsaXR5PSJwdWJsaWMiIHJlZGVmaW5lZFByb3BlcnR5PSJTeXNNTC1CbG9ja3MtRWxlbWVudFByb3BlcnR5UGF0aC1iYXNlX0VsZW1lbnQiIGFzc29jaWF0aW9uPSJTeXNNTC1CbG9ja3MtRV9leHRlbnNpb25fTmVzdGVkQ29ubmVjdG9yRW5kX2Jhc2VfQ29ubmVjdG9yRW5kIj4NCisgICAgICAgICAgPHR5cGUgeG1pOnR5cGU9InVtbDpDbGFzcyIgaHJlZj0icGF0aG1hcDovL1VNTF9NRVRBTU9ERUxTL1VNTC5tZXRhbW9kZWwudW1sI0Nvbm5lY3RvckVuZCIvPg0KKyAgICAgICAgICA8bG93ZXJWYWx1ZSB4bWk6dHlwZT0idW1sOkxpdGVyYWxJbnRlZ2VyIiB4bWk6aWQ9IlN5c01MLUJsb2Nrcy1OZXN0ZWRDb25uZWN0b3JFbmQtYmFzZV9Db25uZWN0b3JFbmQtbG93ZXJWYWx1ZSIgbmFtZT0iIi8+DQorICAgICAgICAgIDx1cHBlclZhbHVlIHhtaTp0eXBlPSJ1bWw6TGl0ZXJhbFVubGltaXRlZE5hdHVyYWwiIHhtaTppZD0iU3lzTUwtQmxvY2tzLU5lc3RlZENvbm5lY3RvckVuZC1iYXNlX0Nvbm5lY3RvckVuZC11cHBlclZhbHVlIiBuYW1lPSIiIHZhbHVlPSIxIi8+DQorICAgICAgICA8L293bmVkQXR0cmlidXRlPg0KKyAgICAgIDwvcGFja2FnZWRFbGVtZW50Pg0KKyAgICAgIDxwYWNrYWdlZEVsZW1lbnQgeG1pOnR5cGU9InVtbDpBc3NvY2lhdGlvbiIgeG1pOmlkPSJTeXNNTC1CbG9ja3MtQV92YWx1ZVR5cGVfdW5pdCIgbmFtZT0iQV92YWx1ZVR5cGVfdW5pdCIgbWVtYmVyRW5kPSJTeXNNTC1CbG9ja3MtQV92YWx1ZVR5cGVfdW5pdC12YWx1ZVR5cGUgU3lzTUwtQmxvY2tzLVZhbHVlVHlwZS11bml0Ij4NCisgICAgICAgIDxvd25lZEVuZCB4bWk6aWQ9IlN5c01MLUJsb2Nrcy1BX3ZhbHVlVHlwZV91bml0LXZhbHVlVHlwZSIgbmFtZT0idmFsdWVUeXBlIiB2aXNpYmlsaXR5PSJwdWJsaWMiIHR5cGU9IlN5c01MLUJsb2Nrcy1WYWx1ZVR5cGUiIGFzc29jaWF0aW9uPSJTeXNNTC1CbG9ja3MtQV92YWx1ZVR5cGVfdW5pdCI+DQorICAgICAgICAgIDxsb3dlclZhbHVlIHhtaTp0eXBlPSJ1bWw6TGl0ZXJhbEludGVnZXIiIHhtaTppZD0iU3lzTUwtQmxvY2tzLUFfdmFsdWVUeXBlX3VuaXQtdmFsdWVUeXBlLWxvd2VyVmFsdWUiIG5hbWU9IiIvPg0KKyAgICAgICAgICA8dXBwZXJWYWx1ZSB4bWk6dHlwZT0idW1sOkxpdGVyYWxVbmxpbWl0ZWROYXR1cmFsIiB4bWk6aWQ9IlN5c01MLUJsb2Nrcy1BX3ZhbHVlVHlwZV91bml0LXZhbHVlVHlwZS11cHBlclZhbHVlIiBuYW1lPSIiIHZhbHVlPSIqIi8+DQorICAgICAgICA8L293bmVkRW5kPg0KKyAgICAgIDwvcGFja2FnZWRFbGVtZW50Pg0KKyAgICAgIDxwYWNrYWdlZEVsZW1lbnQgeG1pOnR5cGU9InVtbDpBc3NvY2lhdGlvbiIgeG1pOmlkPSJTeXNNTC1CbG9ja3MtQV92YWx1ZVR5cGVfcXVhbnRpdHlLaW5kIiBuYW1lPSJBX3ZhbHVlVHlwZV9xdWFudGl0eUtpbmQiIG1lbWJlckVuZD0iU3lzTUwtQmxvY2tzLUFfdmFsdWVUeXBlX3F1YW50aXR5S2luZC12YWx1ZVR5cGUgU3lzTUwtQmxvY2tzLVZhbHVlVHlwZS1xdWFudGl0eUtpbmQiPg0KKyAgICAgICAgPG93bmVkRW5kIHhtaTppZD0iU3lzTUwtQmxvY2tzLUFfdmFsdWVUeXBlX3F1YW50aXR5S2luZC12YWx1ZVR5cGUiIG5hbWU9InZhbHVlVHlwZSIgdmlzaWJpbGl0eT0icHVibGljIiB0eXBlPSJTeXNNTC1CbG9ja3MtVmFsdWVUeXBlIiBhc3NvY2lhdGlvbj0iU3lzTUwtQmxvY2tzLUFfdmFsdWVUeXBlX3F1YW50aXR5S2luZCI+DQorICAgICAgICAgIDxsb3dlclZhbHVlIHhtaTp0eXBlPSJ1bWw6TGl0ZXJhbEludGVnZXIiIHhtaTppZD0iU3lzTUwtQmxvY2tzLUFfdmFsdWVUeXBlX3F1YW50aXR5S2luZC12YWx1ZVR5cGUtbG93ZXJWYWx1ZSIgbmFtZT0iIi8+DQorICAgICAgICAgIDx1cHBlclZhbHVlIHhtaTp0eXBlPSJ1bWw6TGl0ZXJhbFVubGltaXRlZE5hdHVyYWwiIHhtaTppZD0iU3lzTUwtQmxvY2tzLUFfdmFsdWVUeXBlX3F1YW50aXR5S2luZC12YWx1ZVR5cGUtdXBwZXJWYWx1ZSIgbmFtZT0iIiB2YWx1ZT0iKiIvPg0KKyAgICAgICAgPC9vd25lZEVuZD4NCisgICAgICA8L3BhY2thZ2VkRWxlbWVudD4NCisgICAgICA8cGFja2FnZWRFbGVtZW50IHhtaTp0eXBlPSJ1bWw6U3RlcmVvdHlwZSIgeG1pOmlkPSJTeXNNTC1CbG9ja3MtRGlyZWN0ZWRSZWxhdGlvbnNoaXBQcm9wZXJ0eVBhdGgiIG5hbWU9IkRpcmVjdGVkUmVsYXRpb25zaGlwUHJvcGVydHlQYXRoIiBpc0Fic3RyYWN0PSJ0cnVlIj4NCisgICAgICAgIDxvd25lZEF0dHJpYnV0ZSB4bWk6aWQ9IlN5c01MLUJsb2Nrcy1EaXJlY3RlZFJlbGF0aW9uc2hpcFByb3BlcnR5UGF0aC1iYXNlX0RpcmVjdGVkUmVsYXRpb25zaGlwIiBuYW1lPSJiYXNlX0RpcmVjdGVkUmVsYXRpb25zaGlwIiB2aXNpYmlsaXR5PSJwdWJsaWMiIGFzc29jaWF0aW9uPSJTeXNNTC1CbG9ja3MtRV9leHRlbnNpb25fRGlyZWN0ZWRSZWxhdGlvbnNoaXBQcm9wZXJ0eVBhdGhfYmFzZV9EaXJlY3RlZFJlbGF0aW9uc2hpcCI+DQorICAgICAgICAgIDx0eXBlIHhtaTp0eXBlPSJ1bWw6Q2xhc3MiIGhyZWY9InBhdGhtYXA6Ly9VTUxfTUVUQU1PREVMUy9VTUwubWV0YW1vZGVsLnVtbCNEaXJlY3RlZFJlbGF0aW9uc2hpcCIvPg0KKyAgICAgICAgICA8bG93ZXJWYWx1ZSB4bWk6dHlwZT0idW1sOkxpdGVyYWxJbnRlZ2VyIiB4bWk6aWQ9IlN5c01MLUJsb2Nrcy1EaXJlY3RlZFJlbGF0aW9uc2hpcFByb3BlcnR5UGF0aC1iYXNlX0RpcmVjdGVkUmVsYXRpb25zaGlwLWxvd2VyVmFsdWUiIG5hbWU9IiIvPg0KKyAgICAgICAgICA8dXBwZXJWYWx1ZSB4bWk6dHlwZT0idW1sOkxpdGVyYWxVbmxpbWl0ZWROYXR1cmFsIiB4bWk6aWQ9IlN5c01MLUJsb2Nrcy1EaXJlY3RlZFJlbGF0aW9uc2hpcFByb3BlcnR5UGF0aC1iYXNlX0RpcmVjdGVkUmVsYXRpb25zaGlwLXVwcGVyVmFsdWUiIG5hbWU9IiIgdmFsdWU9IjEiLz4NCisgICAgICAgIDwvb3duZWRBdHRyaWJ1dGU+DQorICAgICAgICA8b3duZWRBdHRyaWJ1dGUgeG1pOmlkPSJTeXNNTC1CbG9ja3MtRGlyZWN0ZWRSZWxhdGlvbnNoaXBQcm9wZXJ0eVBhdGgtc291cmNlUHJvcGVydHlQYXRoIiBuYW1lPSJzb3VyY2VQcm9wZXJ0eVBhdGgiIHZpc2liaWxpdHk9InB1YmxpYyIgaXNPcmRlcmVkPSJ0cnVlIiBpc1VuaXF1ZT0iZmFsc2UiIGFzc29jaWF0aW9uPSJTeXNNTC1CbG9ja3MtQV9kaXJlY3RlZFJlbGF0aW9uc2hpcFByb3BlcnR5UGF0aF9zb3VyY2VQcm9wZXJ0eVBhdGgiPg0KKyAgICAgICAgICA8dHlwZSB4bWk6dHlwZT0idW1sOkNsYXNzIiBocmVmPSJwYXRobWFwOi8vVU1MX01FVEFNT0RFTFMvVU1MLm1ldGFtb2RlbC51bWwjUHJvcGVydHkiLz4NCisgICAgICAgICAgPGxvd2VyVmFsdWUgeG1pOnR5cGU9InVtbDpMaXRlcmFsSW50ZWdlciIgeG1pOmlkPSJTeXNNTC1CbG9ja3MtRGlyZWN0ZWRSZWxhdGlvbnNoaXBQcm9wZXJ0eVBhdGgtc291cmNlUHJvcGVydHlQYXRoLWxvd2VyVmFsdWUiIG5hbWU9IiIvPg0KKyAgICAgICAgICA8dXBwZXJWYWx1ZSB4bWk6dHlwZT0idW1sOkxpdGVyYWxVbmxpbWl0ZWROYXR1cmFsIiB4bWk6aWQ9IlN5c01MLUJsb2Nrcy1EaXJlY3RlZFJlbGF0aW9uc2hpcFByb3BlcnR5UGF0aC1zb3VyY2VQcm9wZXJ0eVBhdGgtdXBwZXJWYWx1ZSIgbmFtZT0iIiB2YWx1ZT0iKiIvPg0KKyAgICAgICAgPC9vd25lZEF0dHJpYnV0ZT4NCisgICAgICAgIDxvd25lZEF0dHJpYnV0ZSB4bWk6aWQ9IlN5c01MLUJsb2Nrcy1EaXJlY3RlZFJlbGF0aW9uc2hpcFByb3BlcnR5UGF0aC10YXJnZXRQcm9wZXJ0eVBhdGgiIG5hbWU9InRhcmdldFByb3BlcnR5UGF0aCIgdmlzaWJpbGl0eT0icHVibGljIiBpc09yZGVyZWQ9InRydWUiIGlzVW5pcXVlPSJmYWxzZSIgYXNzb2NpYXRpb249IlN5c01MLUJsb2Nrcy1BX2RpcmVjdGVkUmVsYXRpb25zaGlwUHJvcGVydHlQYXRoX3RhcmdldFByb3BlcnR5UGF0aCI+DQorICAgICAgICAgIDx0eXBlIHhtaTp0eXBlPSJ1bWw6Q2xhc3MiIGhyZWY9InBhdGhtYXA6Ly9VTUxfTUVUQU1PREVMUy9VTUwubWV0YW1vZGVsLnVtbCNQcm9wZXJ0eSIvPg0KKyAgICAgICAgICA8bG93ZXJWYWx1ZSB4bWk6dHlwZT0idW1sOkxpdGVyYWxJbnRlZ2VyIiB4bWk6aWQ9IlN5c01MLUJsb2Nrcy1EaXJlY3RlZFJlbGF0aW9uc2hpcFByb3BlcnR5UGF0aC10YXJnZXRQcm9wZXJ0eVBhdGgtbG93ZXJWYWx1ZSIgbmFtZT0iIi8+DQorICAgICAgICAgIDx1cHBlclZhbHVlIHhtaTp0eXBlPSJ1bWw6TGl0ZXJhbFVubGltaXRlZE5hdHVyYWwiIHhtaTppZD0iU3lzTUwtQmxvY2tzLURpcmVjdGVkUmVsYXRpb25zaGlwUHJvcGVydHlQYXRoLXRhcmdldFByb3BlcnR5UGF0aC11cHBlclZhbHVlIiBuYW1lPSIiIHZhbHVlPSIqIi8+DQorICAgICAgICA8L293bmVkQXR0cmlidXRlPg0KKyAgICAgICAgPG93bmVkQXR0cmlidXRlIHhtaTppZD0iU3lzTUwtQmxvY2tzLURpcmVjdGVkUmVsYXRpb25zaGlwUHJvcGVydHlQYXRoLXNvdXJjZUNvbnRleHQiIG5hbWU9InNvdXJjZUNvbnRleHQiIHZpc2liaWxpdHk9InB1YmxpYyIgYXNzb2NpYXRpb249IlN5c01MLUJsb2Nrcy1BX2RpcmVjdGVkUmVsYXRpb25zaGlwUHJvcGVydHlQYXRoX3NvdXJjZUNvbnRleHQiPg0KKyAgICAgICAgICA8dHlwZSB4bWk6dHlwZT0idW1sOkNsYXNzIiBocmVmPSJwYXRobWFwOi8vVU1MX01FVEFNT0RFTFMvVU1MLm1ldGFtb2RlbC51bWwjQ2xhc3NpZmllciIvPg0KKyAgICAgICAgICA8bG93ZXJWYWx1ZSB4bWk6dHlwZT0idW1sOkxpdGVyYWxJbnRlZ2VyIiB4bWk6aWQ9IlN5c01MLUJsb2Nrcy1EaXJlY3RlZFJlbGF0aW9uc2hpcFByb3BlcnR5UGF0aC1zb3VyY2VDb250ZXh0LWxvd2VyVmFsdWUiIG5hbWU9IiIvPg0KKyAgICAgICAgICA8dXBwZXJWYWx1ZSB4bWk6dHlwZT0idW1sOkxpdGVyYWxVbmxpbWl0ZWROYXR1cmFsIiB4bWk6aWQ9IlN5c01MLUJsb2Nrcy1EaXJlY3RlZFJlbGF0aW9uc2hpcFByb3BlcnR5UGF0aC1zb3VyY2VDb250ZXh0LXVwcGVyVmFsdWUiIG5hbWU9IiIgdmFsdWU9IjEiLz4NCisgICAgICAgIDwvb3duZWRBdHRyaWJ1dGU+DQorICAgICAgICA8b3duZWRBdHRyaWJ1dGUgeG1pOmlkPSJTeXNNTC1CbG9ja3MtRGlyZWN0ZWRSZWxhdGlvbnNoaXBQcm9wZXJ0eVBhdGgtdGFyZ2V0Q29udGV4dCIgbmFtZT0idGFyZ2V0Q29udGV4dCIgdmlzaWJpbGl0eT0icHVibGljIiBhc3NvY2lhdGlvbj0iU3lzTUwtQmxvY2tzLUFfZGlyZWN0ZWRSZWxhdGlvbnNoaXBQcm9wZXJ0eVBhdGhfdGFyZ2V0Q29udGV4dCI+DQorICAgICAgICAgIDx0eXBlIHhtaTp0eXBlPSJ1bWw6Q2xhc3MiIGhyZWY9InBhdGhtYXA6Ly9VTUxfTUVUQU1PREVMUy9VTUwubWV0YW1vZGVsLnVtbCNDbGFzc2lmaWVyIi8+DQorICAgICAgICAgIDxsb3dlclZhbHVlIHhtaTp0eXBlPSJ1bWw6TGl0ZXJhbEludGVnZXIiIHhtaTppZD0iU3lzTUwtQmxvY2tzLURpcmVjdGVkUmVsYXRpb25zaGlwUHJvcGVydHlQYXRoLXRhcmdldENvbnRleHQtbG93ZXJWYWx1ZSIgbmFtZT0iIi8+DQorICAgICAgICAgIDx1cHBlclZhbHVlIHhtaTp0eXBlPSJ1bWw6TGl0ZXJhbFVubGltaXRlZE5hdHVyYWwiIHhtaTppZD0iU3lzTUwtQmxvY2tzLURpcmVjdGVkUmVsYXRpb25zaGlwUHJvcGVydHlQYXRoLXRhcmdldENvbnRleHQtdXBwZXJWYWx1ZSIgbmFtZT0iIiB2YWx1ZT0iMSIvPg0KKyAgICAgICAgPC9vd25lZEF0dHJpYnV0ZT4NCisgICAgICA8L3BhY2thZ2VkRWxlbWVudD4NCisgICAgICA8cGFja2FnZWRFbGVtZW50IHhtaTp0eXBlPSJ1bWw6RXh0ZW5zaW9uIiB4bWk6aWQ9IlN5c01MLUJsb2Nrcy1FX2V4dGVuc2lvbl9EaXJlY3RlZFJlbGF0aW9uc2hpcFByb3BlcnR5UGF0aF9iYXNlX0RpcmVjdGVkUmVsYXRpb25zaGlwIiBuYW1lPSJFX2V4dGVuc2lvbl9EaXJlY3RlZFJlbGF0aW9uc2hpcFByb3BlcnR5UGF0aF9iYXNlX0RpcmVjdGVkUmVsYXRpb25zaGlwIiBtZW1iZXJFbmQ9IlN5c01MLUJsb2Nrcy1EaXJlY3RlZFJlbGF0aW9uc2hpcFByb3BlcnR5UGF0aC1iYXNlX0RpcmVjdGVkUmVsYXRpb25zaGlwIFN5c01MLUJsb2Nrcy1FX2V4dGVuc2lvbl9EaXJlY3RlZFJlbGF0aW9uc2hpcFByb3BlcnR5UGF0aF9iYXNlX0RpcmVjdGVkUmVsYXRpb25zaGlwLWV4dGVuc2lvbl9EaXJlY3RlZFJlbGF0aW9uc2hpcFByb3BlcnR5UGF0aCIgbmF2aWdhYmxlT3duZWRFbmQ9IlN5c01MLUJsb2Nrcy1FX2V4dGVuc2lvbl9EaXJlY3RlZFJlbGF0aW9uc2hpcFByb3BlcnR5UGF0aF9iYXNlX0RpcmVjdGVkUmVsYXRpb25zaGlwLWV4dGVuc2lvbl9EaXJlY3RlZFJlbGF0aW9uc2hpcFByb3BlcnR5UGF0aCI+DQorICAgICAgICA8b3duZWRFbmQgeG1pOnR5cGU9InVtbDpFeHRlbnNpb25FbmQiIHhtaTppZD0iU3lzTUwtQmxvY2tzLUVfZXh0ZW5zaW9uX0RpcmVjdGVkUmVsYXRpb25zaGlwUHJvcGVydHlQYXRoX2Jhc2VfRGlyZWN0ZWRSZWxhdGlvbnNoaXAtZXh0ZW5zaW9uX0RpcmVjdGVkUmVsYXRpb25zaGlwUHJvcGVydHlQYXRoIiBuYW1lPSJleHRlbnNpb25fRGlyZWN0ZWRSZWxhdGlvbnNoaXBQcm9wZXJ0eVBhdGgiIHZpc2liaWxpdHk9InB1YmxpYyIgdHlwZT0iU3lzTUwtQmxvY2tzLURpcmVjdGVkUmVsYXRpb25zaGlwUHJvcGVydHlQYXRoIiBhZ2dyZWdhdGlvbj0iY29tcG9zaXRlIiBhc3NvY2lhdGlvbj0iU3lzTUwtQmxvY2tzLUVfZXh0ZW5zaW9uX0RpcmVjdGVkUmVsYXRpb25zaGlwUHJvcGVydHlQYXRoX2Jhc2VfRGlyZWN0ZWRSZWxhdGlvbnNoaXAiPg0KKyAgICAgICAgICA8bG93ZXJWYWx1ZSB4bWk6dHlwZT0idW1sOkxpdGVyYWxJbnRlZ2VyIiB4bWk6aWQ9IlN5c01MLUJsb2Nrcy1FX2V4dGVuc2lvbl9EaXJlY3RlZFJlbGF0aW9uc2hpcFByb3BlcnR5UGF0aF9iYXNlX0RpcmVjdGVkUmVsYXRpb25zaGlwLWV4dGVuc2lvbl9EaXJlY3RlZFJlbGF0aW9uc2hpcFByb3BlcnR5UGF0aC1sb3dlclZhbHVlIiBuYW1lPSIiLz4NCisgICAgICAgICAgPHVwcGVyVmFsdWUgeG1pOnR5cGU9InVtbDpMaXRlcmFsVW5saW1pdGVkTmF0dXJhbCIgeG1pOmlkPSJTeXNNTC1CbG9ja3MtRV9leHRlbnNpb25fRGlyZWN0ZWRSZWxhdGlvbnNoaXBQcm9wZXJ0eVBhdGhfYmFzZV9EaXJlY3RlZFJlbGF0aW9uc2hpcC1leHRlbnNpb25fRGlyZWN0ZWRSZWxhdGlvbnNoaXBQcm9wZXJ0eVBhdGgtdXBwZXJWYWx1ZSIgbmFtZT0iIiB2YWx1ZT0iMSIvPg0KKyAgICAgICAgPC9vd25lZEVuZD4NCisgICAgICA8L3BhY2thZ2VkRWxlbWVudD4NCisgICAgICA8cGFja2FnZWRFbGVtZW50IHhtaTp0eXBlPSJ1bWw6U3RlcmVvdHlwZSIgeG1pOmlkPSJTeXNNTC1CbG9ja3MtRWxlbWVudFByb3BlcnR5UGF0aCIgbmFtZT0iRWxlbWVudFByb3BlcnR5UGF0aCIgaXNBYnN0cmFjdD0idHJ1ZSI+DQorICAgICAgICA8b3duZWRBdHRyaWJ1dGUgeG1pOmlkPSJTeXNNTC1CbG9ja3MtRWxlbWVudFByb3BlcnR5UGF0aC1iYXNlX0VsZW1lbnQiIG5hbWU9ImJhc2VfRWxlbWVudCIgdmlzaWJpbGl0eT0icHVibGljIiBhc3NvY2lhdGlvbj0iU3lzTUwtQmxvY2tzLUVfZXh0ZW5zaW9uX0VsZW1lbnRQcm9wZXJ0eVBhdGhfYmFzZV9FbGVtZW50Ij4NCisgICAgICAgICAgPHR5cGUgeG1pOnR5cGU9InVtbDpDbGFzcyIgaHJlZj0icGF0aG1hcDovL1VNTF9NRVRBTU9ERUxTL1VNTC5tZXRhbW9kZWwudW1sI0VsZW1lbnQiLz4NCisgICAgICAgICAgPGxvd2VyVmFsdWUgeG1pOnR5cGU9InVtbDpMaXRlcmFsSW50ZWdlciIgeG1pOmlkPSJTeXNNTC1CbG9ja3MtRWxlbWVudFByb3BlcnR5UGF0aC1iYXNlX0VsZW1lbnQtbG93ZXJWYWx1ZSIgbmFtZT0iIi8+DQorICAgICAgICAgIDx1cHBlclZhbHVlIHhtaTp0eXBlPSJ1bWw6TGl0ZXJhbFVubGltaXRlZE5hdHVyYWwiIHhtaTppZD0iU3lzTUwtQmxvY2tzLUVsZW1lbnRQcm9wZXJ0eVBhdGgtYmFzZV9FbGVtZW50LXVwcGVyVmFsdWUiIG5hbWU9IiIgdmFsdWU9IjEiLz4NCisgICAgICAgIDwvb3duZWRBdHRyaWJ1dGU+DQorICAgICAgICA8b3duZWRBdHRyaWJ1dGUgeG1pOmlkPSJTeXNNTC1CbG9ja3MtRWxlbWVudFByb3BlcnR5UGF0aC1wcm9wZXJ0eVBhdGgiIG5hbWU9InByb3BlcnR5UGF0aCIgdmlzaWJpbGl0eT0icHVibGljIiBpc09yZGVyZWQ9InRydWUiIGlzVW5pcXVlPSJmYWxzZSIgYXNzb2NpYXRpb249IlN5c01MLUJsb2Nrcy1BX2VsZW1lbnRQcm9wZXJ0eVBhdGhfcHJvcGVydHlQYXRoIj4NCisgICAgICAgICAgPG93bmVkQ29tbWVudCB4bWk6aWQ9IlN5c01MLUJsb2Nrcy1FbGVtZW50UHJvcGVydHlQYXRoLXByb3BlcnR5UGF0aC1vd25lZENvbW1lbnQiIGFubm90YXRlZEVsZW1lbnQ9IlN5c01MLUJsb2Nrcy1FbGVtZW50UHJvcGVydHlQYXRoLXByb3BlcnR5UGF0aCI+DQorICAgICAgICAgICAgPGJvZHk+VGhlIHByb3BlcnR5UGF0aCBsaXN0IG9mIHRoZSBOZXN0ZWRDb25uZWN0b3JFbmQgc3RlcmVvdHlwZSBtdXN0IGlkZW50aWZ5IGEgcGF0aCBvZiBjb250YWluaW5nIHByb3BlcnRpZXMgdGhhdCBpZGVudGlmeSB0aGUgY29ubmVjdGVkIHByb3BlcnR5IGluIHRoZSBjb250ZXh0IG9mIHRoZSBibG9jayB0aGF0IG93bnMgdGhlIGNvbm5lY3Rvci4gVGhlIG9yZGVyaW5nIG9mIHByb3BlcnRpZXMgaXMgZnJvbSBhIHByb3BlcnR5IG9mIHRoZSBibG9jayB0aGF0IG93bnMgdGhlIGNvbm5lY3RvciwgdGhyb3VnaCBhIHByb3BlcnR5IG9mIGVhY2ggaW50ZXJtZWRpYXRlIGJsb2NrIHRoYXQgdHlwZXMgdGhlIHByZWNlZGluZyBwcm9wZXJ0eSwgdW50aWwgYSBwcm9wZXJ0eSBpcyByZWFjaGVkIHRoYXQgY29udGFpbnMgYSBjb25uZWN0b3IgZW5kIHByb3BlcnR5IHdpdGhpbiBpdHMgdHlwZS4gVGhlIGNvbm5lY3RvciBlbmQgcHJvcGVydHkgaXMgbm90IGluY2x1ZGVkIGluIHRoZSBwcm9wZXJ0eVBhdGggbGlzdCwgYnV0IGluc3RlYWQgaXMgaGVsZCBieSB0aGUgcm9sZSBwcm9wZXJ0eSBvZiB0aGUgVU1MIENvbm5lY3RvckVuZCBtZXRhY2xhc3MuPC9ib2R5Pg0KKyAgICAgICAgICA8L293bmVkQ29tbWVudD4NCisgICAgICAgICAgPHR5cGUgeG1pOnR5cGU9InVtbDpDbGFzcyIgaHJlZj0icGF0aG1hcDovL1VNTF9NRVRBTU9ERUxTL1VNTC5tZXRhbW9kZWwudW1sI1Byb3BlcnR5Ii8+DQorICAgICAgICAgIDxsb3dlclZhbHVlIHhtaTp0eXBlPSJ1bWw6TGl0ZXJhbEludGVnZXIiIHhtaTppZD0iU3lzTUwtQmxvY2tzLUVsZW1lbnRQcm9wZXJ0eVBhdGgtcHJvcGVydHlQYXRoLWxvd2VyVmFsdWUiIG5hbWU9IiIgdmFsdWU9IjEiLz4NCisgICAgICAgICAgPHVwcGVyVmFsdWUgeG1pOnR5cGU9InVtbDpMaXRlcmFsVW5saW1pdGVkTmF0dXJhbCIgeG1pOmlkPSJTeXNNTC1CbG9ja3MtRWxlbWVudFByb3BlcnR5UGF0aC1wcm9wZXJ0eVBhdGgtdXBwZXJWYWx1ZSIgbmFtZT0iIiB2YWx1ZT0iKiIvPg0KKyAgICAgICAgPC9vd25lZEF0dHJpYnV0ZT4NCisgICAgICA8L3BhY2thZ2VkRWxlbWVudD4NCisgICAgICA8cGFja2FnZWRFbGVtZW50IHhtaTp0eXBlPSJ1bWw6RXh0ZW5zaW9uIiB4bWk6aWQ9IlN5c01MLUJsb2Nrcy1FX2V4dGVuc2lvbl9FbGVtZW50UHJvcGVydHlQYXRoX2Jhc2VfRWxlbWVudCIgbmFtZT0iRV9leHRlbnNpb25fRWxlbWVudFByb3BlcnR5UGF0aF9iYXNlX0VsZW1lbnQiIG1lbWJlckVuZD0iU3lzTUwtQmxvY2tzLUVsZW1lbnRQcm9wZXJ0eVBhdGgtYmFzZV9FbGVtZW50IFN5c01MLUJsb2Nrcy1FX2V4dGVuc2lvbl9FbGVtZW50UHJvcGVydHlQYXRoX2Jhc2VfRWxlbWVudC1leHRlbnNpb25fRWxlbWVudFByb3BlcnR5UGF0aCIgbmF2aWdhYmxlT3duZWRFbmQ9IlN5c01MLUJsb2Nrcy1FX2V4dGVuc2lvbl9FbGVtZW50UHJvcGVydHlQYXRoX2Jhc2VfRWxlbWVudC1leHRlbnNpb25fRWxlbWVudFByb3BlcnR5UGF0aCI+DQorICAgICAgICA8b3duZWRFbmQgeG1pOnR5cGU9InVtbDpFeHRlbnNpb25FbmQiIHhtaTppZD0iU3lzTUwtQmxvY2tzLUVfZXh0ZW5zaW9uX0VsZW1lbnRQcm9wZXJ0eVBhdGhfYmFzZV9FbGVtZW50LWV4dGVuc2lvbl9FbGVtZW50UHJvcGVydHlQYXRoIiBuYW1lPSJleHRlbnNpb25fRWxlbWVudFByb3BlcnR5UGF0aCIgdmlzaWJpbGl0eT0icHVibGljIiB0eXBlPSJTeXNNTC1CbG9ja3MtRWxlbWVudFByb3BlcnR5UGF0aCIgYWdncmVnYXRpb249ImNvbXBvc2l0ZSIgYXNzb2NpYXRpb249IlN5c01MLUJsb2Nrcy1FX2V4dGVuc2lvbl9FbGVtZW50UHJvcGVydHlQYXRoX2Jhc2VfRWxlbWVudCI+DQorICAgICAgICAgIDxsb3dlclZhbHVlIHhtaTp0eXBlPSJ1bWw6TGl0ZXJhbEludGVnZXIiIHhtaTppZD0iU3lzTUwtQmxvY2tzLUVfZXh0ZW5zaW9uX0VsZW1lbnRQcm9wZXJ0eVBhdGhfYmFzZV9FbGVtZW50LWV4dGVuc2lvbl9FbGVtZW50UHJvcGVydHlQYXRoLWxvd2VyVmFsdWUiIG5hbWU9IiIvPg0KKyAgICAgICAgICA8dXBwZXJWYWx1ZSB4bWk6dHlwZT0idW1sOkxpdGVyYWxVbmxpbWl0ZWROYXR1cmFsIiB4bWk6aWQ9IlN5c01MLUJsb2Nrcy1FX2V4dGVuc2lvbl9FbGVtZW50UHJvcGVydHlQYXRoX2Jhc2VfRWxlbWVudC1leHRlbnNpb25fRWxlbWVudFByb3BlcnR5UGF0aC11cHBlclZhbHVlIiBuYW1lPSIiIHZhbHVlPSIxIi8+DQorICAgICAgICA8L293bmVkRW5kPg0KKyAgICAgIDwvcGFja2FnZWRFbGVtZW50Pg0KKyAgICAgIDxwYWNrYWdlZEVsZW1lbnQgeG1pOnR5cGU9InVtbDpBc3NvY2lhdGlvbiIgeG1pOmlkPSJTeXNNTC1CbG9ja3MtQV9kaXJlY3RlZFJlbGF0aW9uc2hpcFByb3BlcnR5UGF0aF9zb3VyY2VQcm9wZXJ0eVBhdGgiIG5hbWU9IkFfZGlyZWN0ZWRSZWxhdGlvbnNoaXBQcm9wZXJ0eVBhdGhfc291cmNlUHJvcGVydHlQYXRoIiBtZW1iZXJFbmQ9IlN5c01MLUJsb2Nrcy1EaXJlY3RlZFJlbGF0aW9uc2hpcFByb3BlcnR5UGF0aC1zb3VyY2VQcm9wZXJ0eVBhdGggU3lzTUwtQmxvY2tzLUFfZGlyZWN0ZWRSZWxhdGlvbnNoaXBQcm9wZXJ0eVBhdGhfc291cmNlUHJvcGVydHlQYXRoLWRpcmVjdGVkUmVsYXRpb25zaGlwUHJvcGVydHlQYXRoIj4NCisgICAgICAgIDxvd25lZEVuZCB4bWk6aWQ9IlN5c01MLUJsb2Nrcy1BX2RpcmVjdGVkUmVsYXRpb25zaGlwUHJvcGVydHlQYXRoX3NvdXJjZVByb3BlcnR5UGF0aC1kaXJlY3RlZFJlbGF0aW9uc2hpcFByb3BlcnR5UGF0aCIgbmFtZT0iZGlyZWN0ZWRSZWxhdGlvbnNoaXBQcm9wZXJ0eVBhdGgiIHZpc2liaWxpdHk9InB1YmxpYyIgdHlwZT0iU3lzTUwtQmxvY2tzLURpcmVjdGVkUmVsYXRpb25zaGlwUHJvcGVydHlQYXRoIiBhc3NvY2lhdGlvbj0iU3lzTUwtQmxvY2tzLUFfZGlyZWN0ZWRSZWxhdGlvbnNoaXBQcm9wZXJ0eVBhdGhfc291cmNlUHJvcGVydHlQYXRoIj4NCisgICAgICAgICAgPGxvd2VyVmFsdWUgeG1pOnR5cGU9InVtbDpMaXRlcmFsSW50ZWdlciIgeG1pOmlkPSJfeC15UWdKZ0hFZVNGdExvVmUyLXNvUSIvPg0KKyAgICAgICAgICA8dXBwZXJWYWx1ZSB4bWk6dHlwZT0idW1sOkxpdGVyYWxVbmxpbWl0ZWROYXR1cmFsIiB4bWk6aWQ9IlN5c01MLUJsb2Nrcy1BX2RpcmVjdGVkUmVsYXRpb25zaGlwUHJvcGVydHlQYXRoX3NvdXJjZVByb3BlcnR5UGF0aC1kaXJlY3RlZFJlbGF0aW9uc2hpcFByb3BlcnR5UGF0aC11cHBlclZhbHVlIiBuYW1lPSIiIHZhbHVlPSIqIi8+DQorICAgICAgICA8L293bmVkRW5kPg0KKyAgICAgIDwvcGFja2FnZWRFbGVtZW50Pg0KKyAgICAgIDxwYWNrYWdlZEVsZW1lbnQgeG1pOnR5cGU9InVtbDpBc3NvY2lhdGlvbiIgeG1pOmlkPSJTeXNNTC1CbG9ja3MtQV9kaXJlY3RlZFJlbGF0aW9uc2hpcFByb3BlcnR5UGF0aF90YXJnZXRQcm9wZXJ0eVBhdGgiIG5hbWU9IkFfZGlyZWN0ZWRSZWxhdGlvbnNoaXBQcm9wZXJ0eVBhdGhfdGFyZ2V0UHJvcGVydHlQYXRoIiBtZW1iZXJFbmQ9IlN5c01MLUJsb2Nrcy1EaXJlY3RlZFJlbGF0aW9uc2hpcFByb3BlcnR5UGF0aC10YXJnZXRQcm9wZXJ0eVBhdGggU3lzTUwtQmxvY2tzLUFfZGlyZWN0ZWRSZWxhdGlvbnNoaXBQcm9wZXJ0eVBhdGhfdGFyZ2V0UHJvcGVydHlQYXRoLWRpcmVjdGVkUmVsYXRpb25zaGlwUHJvcGVydHlQYXRoIj4NCisgICAgICAgIDxvd25lZEVuZCB4bWk6aWQ9IlN5c01MLUJsb2Nrcy1BX2RpcmVjdGVkUmVsYXRpb25zaGlwUHJvcGVydHlQYXRoX3RhcmdldFByb3BlcnR5UGF0aC1kaXJlY3RlZFJlbGF0aW9uc2hpcFByb3BlcnR5UGF0aCIgbmFtZT0iZGlyZWN0ZWRSZWxhdGlvbnNoaXBQcm9wZXJ0eVBhdGgiIHZpc2liaWxpdHk9InB1YmxpYyIgdHlwZT0iU3lzTUwtQmxvY2tzLURpcmVjdGVkUmVsYXRpb25zaGlwUHJvcGVydHlQYXRoIiBhc3NvY2lhdGlvbj0iU3lzTUwtQmxvY2tzLUFfZGlyZWN0ZWRSZWxhdGlvbnNoaXBQcm9wZXJ0eVBhdGhfdGFyZ2V0UHJvcGVydHlQYXRoIj4NCisgICAgICAgICAgPGxvd2VyVmFsdWUgeG1pOnR5cGU9InVtbDpMaXRlcmFsSW50ZWdlciIgeG1pOmlkPSJfQW9CS3dKZ0lFZVNGdExvVmUyLXNvUSIvPg0KKyAgICAgICAgICA8dXBwZXJWYWx1ZSB4bWk6dHlwZT0idW1sOkxpdGVyYWxVbmxpbWl0ZWROYXR1cmFsIiB4bWk6aWQ9IlN5c01MLUJsb2Nrcy1BX2RpcmVjdGVkUmVsYXRpb25zaGlwUHJvcGVydHlQYXRoX3RhcmdldFByb3BlcnR5UGF0aC1kaXJlY3RlZFJlbGF0aW9uc2hpcFByb3BlcnR5UGF0aC11cHBlclZhbHVlIiBuYW1lPSIiIHZhbHVlPSIqIi8+DQorICAgICAgICA8L293bmVkRW5kPg0KKyAgICAgIDwvcGFja2FnZWRFbGVtZW50Pg0KKyAgICAgIDxwYWNrYWdlZEVsZW1lbnQgeG1pOnR5cGU9InVtbDpBc3NvY2lhdGlvbiIgeG1pOmlkPSJTeXNNTC1CbG9ja3MtQV9kaXJlY3RlZFJlbGF0aW9uc2hpcFByb3BlcnR5UGF0aF9zb3VyY2VDb250ZXh0IiBuYW1lPSJBX2RpcmVjdGVkUmVsYXRpb25zaGlwUHJvcGVydHlQYXRoX3NvdXJjZUNvbnRleHQiIG1lbWJlckVuZD0iU3lzTUwtQmxvY2tzLURpcmVjdGVkUmVsYXRpb25zaGlwUHJvcGVydHlQYXRoLXNvdXJjZUNvbnRleHQgU3lzTUwtQmxvY2tzLUFfZGlyZWN0ZWRSZWxhdGlvbnNoaXBQcm9wZXJ0eVBhdGhfc291cmNlQ29udGV4dC1kaXJlY3RlZFJlbGF0aW9uc2hpcFByb3BlcnR5UGF0aCI+DQorICAgICAgICA8b3duZWRFbmQgeG1pOmlkPSJTeXNNTC1CbG9ja3MtQV9kaXJlY3RlZFJlbGF0aW9uc2hpcFByb3BlcnR5UGF0aF9zb3VyY2VDb250ZXh0LWRpcmVjdGVkUmVsYXRpb25zaGlwUHJvcGVydHlQYXRoIiBuYW1lPSJkaXJlY3RlZFJlbGF0aW9uc2hpcFByb3BlcnR5UGF0aCIgdmlzaWJpbGl0eT0icHVibGljIiB0eXBlPSJTeXNNTC1CbG9ja3MtRGlyZWN0ZWRSZWxhdGlvbnNoaXBQcm9wZXJ0eVBhdGgiIGFzc29jaWF0aW9uPSJTeXNNTC1CbG9ja3MtQV9kaXJlY3RlZFJlbGF0aW9uc2hpcFByb3BlcnR5UGF0aF9zb3VyY2VDb250ZXh0Ij4NCisgICAgICAgICAgPGxvd2VyVmFsdWUgeG1pOnR5cGU9InVtbDpMaXRlcmFsSW50ZWdlciIgeG1pOmlkPSJfbjFxRVlKZ0hFZVNGdExvVmUyLXNvUSIvPg0KKyAgICAgICAgICA8dXBwZXJWYWx1ZSB4bWk6dHlwZT0idW1sOkxpdGVyYWxVbmxpbWl0ZWROYXR1cmFsIiB4bWk6aWQ9IlN5c01MLUJsb2Nrcy1BX2RpcmVjdGVkUmVsYXRpb25zaGlwUHJvcGVydHlQYXRoX3NvdXJjZUNvbnRleHQtZGlyZWN0ZWRSZWxhdGlvbnNoaXBQcm9wZXJ0eVBhdGgtdXBwZXJWYWx1ZSIgbmFtZT0iIiB2YWx1ZT0iKiIvPg0KKyAgICAgICAgPC9vd25lZEVuZD4NCisgICAgICA8L3BhY2thZ2VkRWxlbWVudD4NCisgICAgICA8cGFja2FnZWRFbGVtZW50IHhtaTp0eXBlPSJ1bWw6QXNzb2NpYXRpb24iIHhtaTppZD0iU3lzTUwtQmxvY2tzLUFfZGlyZWN0ZWRSZWxhdGlvbnNoaXBQcm9wZXJ0eVBhdGhfdGFyZ2V0Q29udGV4dCIgbmFtZT0iQV9kaXJlY3RlZFJlbGF0aW9uc2hpcFByb3BlcnR5UGF0aF90YXJnZXRDb250ZXh0IiBtZW1iZXJFbmQ9IlN5c01MLUJsb2Nrcy1EaXJlY3RlZFJlbGF0aW9uc2hpcFByb3BlcnR5UGF0aC10YXJnZXRDb250ZXh0IFN5c01MLUJsb2Nrcy1BX2RpcmVjdGVkUmVsYXRpb25zaGlwUHJvcGVydHlQYXRoX3RhcmdldENvbnRleHQtZGlyZWN0ZWRSZWxhdGlvbnNoaXBQcm9wZXJ0eVBhdGgiPg0KKyAgICAgICAgPG93bmVkRW5kIHhtaTppZD0iU3lzTUwtQmxvY2tzLUFfZGlyZWN0ZWRSZWxhdGlvbnNoaXBQcm9wZXJ0eVBhdGhfdGFyZ2V0Q29udGV4dC1kaXJlY3RlZFJlbGF0aW9uc2hpcFByb3BlcnR5UGF0aCIgbmFtZT0iZGlyZWN0ZWRSZWxhdGlvbnNoaXBQcm9wZXJ0eVBhdGgiIHZpc2liaWxpdHk9InB1YmxpYyIgdHlwZT0iU3lzTUwtQmxvY2tzLURpcmVjdGVkUmVsYXRpb25zaGlwUHJvcGVydHlQYXRoIiBhc3NvY2lhdGlvbj0iU3lzTUwtQmxvY2tzLUFfZGlyZWN0ZWRSZWxhdGlvbnNoaXBQcm9wZXJ0eVBhdGhfdGFyZ2V0Q29udGV4dCI+DQorICAgICAgICAgIDxsb3dlclZhbHVlIHhtaTp0eXBlPSJ1bWw6TGl0ZXJhbEludGVnZXIiIHhtaTppZD0iXzVOa0xZSmdIRWVTRnRMb1ZlMi1zb1EiLz4NCisgICAgICAgICAgPHVwcGVyVmFsdWUgeG1pOnR5cGU9InVtbDpMaXRlcmFsVW5saW1pdGVkTmF0dXJhbCIgeG1pOmlkPSJTeXNNTC1CbG9ja3MtQV9kaXJlY3RlZFJlbGF0aW9uc2hpcFByb3BlcnR5UGF0aF90YXJnZXRDb250ZXh0LWRpcmVjdGVkUmVsYXRpb25zaGlwUHJvcGVydHlQYXRoLXVwcGVyVmFsdWUiIG5hbWU9IiIgdmFsdWU9IioiLz4NCisgICAgICAgIDwvb3duZWRFbmQ+DQorICAgICAgPC9wYWNrYWdlZEVsZW1lbnQ+DQorICAgICAgPHBhY2thZ2VkRWxlbWVudCB4bWk6dHlwZT0idW1sOkFzc29jaWF0aW9uIiB4bWk6aWQ9IlN5c01MLUJsb2Nrcy1BX2VsZW1lbnRQcm9wZXJ0eVBhdGhfcHJvcGVydHlQYXRoIiBuYW1lPSJBX2VsZW1lbnRQcm9wZXJ0eVBhdGhfcHJvcGVydHlQYXRoIiBtZW1iZXJFbmQ9IlN5c01MLUJsb2Nrcy1BX2VsZW1lbnRQcm9wZXJ0eVBhdGhfcHJvcGVydHlQYXRoLWVsZW1lbnRQcm9wZXJ0eVBhdGggU3lzTUwtQmxvY2tzLUVsZW1lbnRQcm9wZXJ0eVBhdGgtcHJvcGVydHlQYXRoIj4NCisgICAgICAgIDxvd25lZEVuZCB4bWk6aWQ9IlN5c01MLUJsb2Nrcy1BX2VsZW1lbnRQcm9wZXJ0eVBhdGhfcHJvcGVydHlQYXRoLWVsZW1lbnRQcm9wZXJ0eVBhdGgiIG5hbWU9ImVsZW1lbnRQcm9wZXJ0eVBhdGgiIHZpc2liaWxpdHk9InB1YmxpYyIgdHlwZT0iU3lzTUwtQmxvY2tzLUVsZW1lbnRQcm9wZXJ0eVBhdGgiIGFzc29jaWF0aW9uPSJTeXNNTC1CbG9ja3MtQV9lbGVtZW50UHJvcGVydHlQYXRoX3Byb3BlcnR5UGF0aCI+DQorICAgICAgICAgIDxsb3dlclZhbHVlIHhtaTp0eXBlPSJ1bWw6TGl0ZXJhbEludGVnZXIiIHhtaTppZD0iX1JPUHlvSmdIRWVTRnRMb1ZlMi1zb1EiLz4NCisgICAgICAgICAgPHVwcGVyVmFsdWUgeG1pOnR5cGU9InVtbDpMaXRlcmFsVW5saW1pdGVkTmF0dXJhbCIgeG1pOmlkPSJTeXNNTC1CbG9ja3MtQV9lbGVtZW50UHJvcGVydHlQYXRoX3Byb3BlcnR5UGF0aC1lbGVtZW50UHJvcGVydHlQYXRoLXVwcGVyVmFsdWUiIG5hbWU9IiIgdmFsdWU9IioiLz4NCisgICAgICAgIDwvb3duZWRFbmQ+DQorICAgICAgPC9wYWNrYWdlZEVsZW1lbnQ+DQorICAgICAgPHBhY2thZ2VkRWxlbWVudCB4bWk6dHlwZT0idW1sOlN0ZXJlb3R5cGUiIHhtaTppZD0iU3lzTUwtQmxvY2tzLUVuZFBhdGhNdWx0aXBsaWNpdHkiIG5hbWU9IkVuZFBhdGhNdWx0aXBsaWNpdHkiPg0KKyAgICAgICAgPG93bmVkQXR0cmlidXRlIHhtaTppZD0iU3lzTUwtQmxvY2tzLUVuZFBhdGhNdWx0aXBsaWNpdHktYmFzZV9Qcm9wZXJ0eSIgbmFtZT0iYmFzZV9Qcm9wZXJ0eSIgdmlzaWJpbGl0eT0icHVibGljIiBhc3NvY2lhdGlvbj0iU3lzTUwtQmxvY2tzLUVfZXh0ZW5zaW9uX0VuZFBhdGhNdWx0aXBsaWNpdHlfYmFzZV9Qcm9wZXJ0eSI+DQorICAgICAgICAgIDx0eXBlIHhtaTp0eXBlPSJ1bWw6Q2xhc3MiIGhyZWY9InBhdGhtYXA6Ly9VTUxfTUVUQU1PREVMUy9VTUwubWV0YW1vZGVsLnVtbCNQcm9wZXJ0eSIvPg0KKyAgICAgICAgICA8bG93ZXJWYWx1ZSB4bWk6dHlwZT0idW1sOkxpdGVyYWxJbnRlZ2VyIiB4bWk6aWQ9IlN5c01MLUJsb2Nrcy1FbmRQYXRoTXVsdGlwbGljaXR5LWJhc2VfUHJvcGVydHktbG93ZXJWYWx1ZSIgbmFtZT0iIi8+DQorICAgICAgICAgIDx1cHBlclZhbHVlIHhtaTp0eXBlPSJ1bWw6TGl0ZXJhbFVubGltaXRlZE5hdHVyYWwiIHhtaTppZD0iU3lzTUwtQmxvY2tzLUVuZFBhdGhNdWx0aXBsaWNpdHktYmFzZV9Qcm9wZXJ0eS11cHBlclZhbHVlIiBuYW1lPSIiIHZhbHVlPSIxIi8+DQorICAgICAgICA8L293bmVkQXR0cmlidXRlPg0KKyAgICAgICAgPG93bmVkQXR0cmlidXRlIHhtaTppZD0iU3lzTUwtQmxvY2tzLUVuZFBhdGhNdWx0aXBsaWNpdHktbG93ZXIiIG5hbWU9Imxvd2VyIiB2aXNpYmlsaXR5PSJwdWJsaWMiPg0KKyAgICAgICAgICA8b3duZWRDb21tZW50IHhtaTppZD0iU3lzTUwtQmxvY2tzLUVuZFBhdGhNdWx0aXBsaWNpdHktbG93ZXItb3duZWRDb21tZW50IiBhbm5vdGF0ZWRFbGVtZW50PSJTeXNNTC1CbG9ja3MtRW5kUGF0aE11bHRpcGxpY2l0eS1sb3dlciI+DQorICAgICAgICAgICAgPGJvZHk+R2l2ZXMgdGhlIG1pbmltdW0gbnVtYmVyIG9mIHZhbHVlcyBvZiB0aGUgcHJvcGVydHkgYXQgdGhlIGVuZCBvZiB0aGUgcmVsYXRlZCBiaW5kaW5nUGF0aCwgZm9yIGVhY2ggb2JqZWN0IHJlYWNoZWQgYnkgbmF2aWdhdGlvbiBhbG9uZyB0aGUgYmluZGluZ1BhdGggZnJvbSBhbiBpbnN0YW5jZSBvZiB0aGUgYmxvY2sgb3duaW5nIHRoZSBwcm9wZXJ0eSB0byB3aGljaCBFbmRQYXRoTXVsdGlwbGljaXR5IGlzIGFwcGxpZWQ8L2JvZHk+DQorICAgICAgICAgIDwvb3duZWRDb21tZW50Pg0KKyAgICAgICAgICA8dHlwZSB4bWk6dHlwZT0idW1sOlByaW1pdGl2ZVR5cGUiIGhyZWY9InBhdGhtYXA6Ly9VTUxfTElCUkFSSUVTL1VNTFByaW1pdGl2ZVR5cGVzLmxpYnJhcnkudW1sI0ludGVnZXIiLz4NCisgICAgICAgICAgPGxvd2VyVmFsdWUgeG1pOnR5cGU9InVtbDpMaXRlcmFsSW50ZWdlciIgeG1pOmlkPSJTeXNNTC1CbG9ja3MtRW5kUGF0aE11bHRpcGxpY2l0eS1sb3dlci1sb3dlclZhbHVlIiBuYW1lPSIiLz4NCisgICAgICAgICAgPHVwcGVyVmFsdWUgeG1pOnR5cGU9InVtbDpMaXRlcmFsVW5saW1pdGVkTmF0dXJhbCIgeG1pOmlkPSJTeXNNTC1CbG9ja3MtRW5kUGF0aE11bHRpcGxpY2l0eS1sb3dlci11cHBlclZhbHVlIiBuYW1lPSIiIHZhbHVlPSIxIi8+DQorICAgICAgICAgIDxkZWZhdWx0VmFsdWUgeG1pOnR5cGU9InVtbDpMaXRlcmFsSW50ZWdlciIgeG1pOmlkPSJTeXNNTC1CbG9ja3MtRW5kUGF0aE11bHRpcGxpY2l0eS1sb3dlci1kZWZhdWx0VmFsdWUiIG5hbWU9IiIvPg0KKyAgICAgICAgPC9vd25lZEF0dHJpYnV0ZT4NCisgICAgICAgIDxvd25lZEF0dHJpYnV0ZSB4bWk6aWQ9IlN5c01MLUJsb2Nrcy1FbmRQYXRoTXVsdGlwbGljaXR5LXVwcGVyIiBuYW1lPSJ1cHBlciIgdmlzaWJpbGl0eT0icHVibGljIj4NCisgICAgICAgICAgPG93bmVkQ29tbWVudCB4bWk6aWQ9IlN5c01MLUJsb2Nrcy1FbmRQYXRoTXVsdGlwbGljaXR5LXVwcGVyLW93bmVkQ29tbWVudCIgYW5ub3RhdGVkRWxlbWVudD0iU3lzTUwtQmxvY2tzLUVuZFBhdGhNdWx0aXBsaWNpdHktdXBwZXIiPg0KKyAgICAgICAgICAgIDxib2R5PkdpdmVzIHRoZSBtYXhpbXVtIG51bWJlciBvZiB2YWx1ZXMgb2YgdGhlIHByb3BlcnR5IGF0IHRoZSBlbmQgb2YgdGhlIHJlbGF0ZWQgYmluZGluZ1BhdGgsIGZvciBlYWNoIG9iamVjdCByZWFjaGVkIGJ5IG5hdmlnYXRpb24gYWxvbmcgdGhlIGJpbmRpbmdQYXRoIGZyb20gYW4gaW5zdGFuY2Ugb2YgdGhlIGJsb2NrIG93bmluZyB0aGUgcHJvcGVydHkgdG8gd2hpY2ggRW5kUGF0aE11bHRpcGxpY2l0eSBpcyBhcHBsaWVkLjwvYm9keT4NCisgICAgICAgICAgPC9vd25lZENvbW1lbnQ+DQorICAgICAgICAgIDx0eXBlIHhtaTp0eXBlPSJ1bWw6UHJpbWl0aXZlVHlwZSIgaHJlZj0icGF0aG1hcDovL1VNTF9MSUJSQVJJRVMvVU1MUHJpbWl0aXZlVHlwZXMubGlicmFyeS51bWwjVW5saW1pdGVkTmF0dXJhbCIvPg0KKyAgICAgICAgICA8bG93ZXJWYWx1ZSB4bWk6dHlwZT0idW1sOkxpdGVyYWxJbnRlZ2VyIiB4bWk6aWQ9IlN5c01MLUJsb2Nrcy1FbmRQYXRoTXVsdGlwbGljaXR5LXVwcGVyLWxvd2VyVmFsdWUiIG5hbWU9IiIvPg0KKyAgICAgICAgICA8dXBwZXJWYWx1ZSB4bWk6dHlwZT0idW1sOkxpdGVyYWxVbmxpbWl0ZWROYXR1cmFsIiB4bWk6aWQ9IlN5c01MLUJsb2Nrcy1FbmRQYXRoTXVsdGlwbGljaXR5LXVwcGVyLXVwcGVyVmFsdWUiIG5hbWU9IiIgdmFsdWU9IjEiLz4NCisgICAgICAgICAgPGRlZmF1bHRWYWx1ZSB4bWk6dHlwZT0idW1sOkxpdGVyYWxVbmxpbWl0ZWROYXR1cmFsIiB4bWk6aWQ9IlN5c01MLUJsb2Nrcy1FbmRQYXRoTXVsdGlwbGljaXR5LXVwcGVyLWRlZmF1bHRWYWx1ZSIgbmFtZT0iIiB2YWx1ZT0iKiIvPg0KKyAgICAgICAgPC9vd25lZEF0dHJpYnV0ZT4NCisgICAgICA8L3BhY2thZ2VkRWxlbWVudD4NCisgICAgICA8cGFja2FnZWRFbGVtZW50IHhtaTp0eXBlPSJ1bWw6RXh0ZW5zaW9uIiB4bWk6aWQ9IlN5c01MLUJsb2Nrcy1FX2V4dGVuc2lvbl9FbmRQYXRoTXVsdGlwbGljaXR5X2Jhc2VfUHJvcGVydHkiIG5hbWU9IkVfZXh0ZW5zaW9uX0VuZFBhdGhNdWx0aXBsaWNpdHlfYmFzZV9Qcm9wZXJ0eSIgbWVtYmVyRW5kPSJTeXNNTC1CbG9ja3MtRW5kUGF0aE11bHRpcGxpY2l0eS1iYXNlX1Byb3BlcnR5IFN5c01MLUJsb2Nrcy1FX2V4dGVuc2lvbl9FbmRQYXRoTXVsdGlwbGljaXR5X2Jhc2VfUHJvcGVydHktZXh0ZW5zaW9uX0VuZFBhdGhNdWx0aXBsaWNpdHkiIG5hdmlnYWJsZU93bmVkRW5kPSJTeXNNTC1CbG9ja3MtRV9leHRlbnNpb25fRW5kUGF0aE11bHRpcGxpY2l0eV9iYXNlX1Byb3BlcnR5LWV4dGVuc2lvbl9FbmRQYXRoTXVsdGlwbGljaXR5Ij4NCisgICAgICAgIDxvd25lZEVuZCB4bWk6dHlwZT0idW1sOkV4dGVuc2lvbkVuZCIgeG1pOmlkPSJTeXNNTC1CbG9ja3MtRV9leHRlbnNpb25fRW5kUGF0aE11bHRpcGxpY2l0eV9iYXNlX1Byb3BlcnR5LWV4dGVuc2lvbl9FbmRQYXRoTXVsdGlwbGljaXR5IiBuYW1lPSJleHRlbnNpb25fRW5kUGF0aE11bHRpcGxpY2l0eSIgdmlzaWJpbGl0eT0icHVibGljIiB0eXBlPSJTeXNNTC1CbG9ja3MtRW5kUGF0aE11bHRpcGxpY2l0eSIgYWdncmVnYXRpb249ImNvbXBvc2l0ZSIgYXNzb2NpYXRpb249IlN5c01MLUJsb2Nrcy1FX2V4dGVuc2lvbl9FbmRQYXRoTXVsdGlwbGljaXR5X2Jhc2VfUHJvcGVydHkiPg0KKyAgICAgICAgICA8bG93ZXJWYWx1ZSB4bWk6dHlwZT0idW1sOkxpdGVyYWxJbnRlZ2VyIiB4bWk6aWQ9IlN5c01MLUJsb2Nrcy1FX2V4dGVuc2lvbl9FbmRQYXRoTXVsdGlwbGljaXR5X2Jhc2VfUHJvcGVydHktZXh0ZW5zaW9uX0VuZFBhdGhNdWx0aXBsaWNpdHktbG93ZXJWYWx1ZSIgbmFtZT0iIi8+DQorICAgICAgICAgIDx1cHBlclZhbHVlIHhtaTp0eXBlPSJ1bWw6TGl0ZXJhbEludGVnZXIiIHhtaTppZD0iU3lzTUwtQmxvY2tzLUVfZXh0ZW5zaW9uX0VuZFBhdGhNdWx0aXBsaWNpdHlfYmFzZV9Qcm9wZXJ0eS1leHRlbnNpb25fRW5kUGF0aE11bHRpcGxpY2l0eS11cHBlclZhbHVlIiBuYW1lPSIiIHZhbHVlPSIxIi8+DQorICAgICAgICA8L293bmVkRW5kPg0KKyAgICAgIDwvcGFja2FnZWRFbGVtZW50Pg0KKyAgICAgIDxwYWNrYWdlZEVsZW1lbnQgeG1pOnR5cGU9InVtbDpTdGVyZW90eXBlIiB4bWk6aWQ9IlN5c01MLUJsb2Nrcy1Cb3VuZFJlZmVyZW5jZSIgbmFtZT0iQm91bmRSZWZlcmVuY2UiPg0KKyAgICAgICAgPGdlbmVyYWxpemF0aW9uIHhtaTppZD0iU3lzTUwtQmxvY2tzLUJvdW5kUmVmZXJlbmNlLWdlbmVyYWxpemF0aW9uIiBnZW5lcmFsPSJTeXNNTC1CbG9ja3MtRW5kUGF0aE11bHRpcGxpY2l0eSIvPg0KKyAgICAgICAgPG93bmVkQXR0cmlidXRlIHhtaTppZD0iU3lzTUwtQmxvY2tzLUJvdW5kUmVmZXJlbmNlLWJvdW5kRW5kIiBuYW1lPSJib3VuZEVuZCIgdmlzaWJpbGl0eT0icHVibGljIj4NCisgICAgICAgICAgPG93bmVkQ29tbWVudCB4bWk6aWQ9IlN5c01MLUJsb2Nrcy1Cb3VuZFJlZmVyZW5jZS1ib3VuZEVuZC1vd25lZENvbW1lbnQiIGFubm90YXRlZEVsZW1lbnQ9IlN5c01MLUJsb2Nrcy1Cb3VuZFJlZmVyZW5jZS1ib3VuZEVuZCI+DQorICAgICAgICAgICAgPGJvZHk+R2l2ZXMgYSBjb25uZWN0b3IgZW5kIG9mIGEgYmluZGluZyBjb25uZWN0b3Igb3Bwb3NpdGUgdG8gdGhlIGVuZCBsaW5rZWQgdG8gdGhlIHN0ZXJlb3R5cGVkIHByb3BlcnR5LCBvciBsaW5rZWQgdG8gYSBwcm9wZXJ0eSB0aGF0IGdlbmVyYWxpemVzIHRoZSBzdGVyZW90eXBlZCBvbmUgdGhyb3VnaCByZWRlZmluaXRpb24uPC9ib2R5Pg0KKyAgICAgICAgICA8L293bmVkQ29tbWVudD4NCisgICAgICAgICAgPHR5cGUgeG1pOnR5cGU9InVtbDpDbGFzcyIgaHJlZj0icGF0aG1hcDovL1VNTF9NRVRBTU9ERUxTL1VNTC5tZXRhbW9kZWwudW1sI0Nvbm5lY3RvckVuZCIvPg0KKyAgICAgICAgICA8bG93ZXJWYWx1ZSB4bWk6dHlwZT0idW1sOkxpdGVyYWxJbnRlZ2VyIiB4bWk6aWQ9IlN5c01MLUJsb2Nrcy1Cb3VuZFJlZmVyZW5jZS1ib3VuZEVuZC1sb3dlclZhbHVlIiBuYW1lPSIiIHZhbHVlPSIxIi8+DQorICAgICAgICAgIDx1cHBlclZhbHVlIHhtaTp0eXBlPSJ1bWw6TGl0ZXJhbFVubGltaXRlZE5hdHVyYWwiIHhtaTppZD0iU3lzTUwtQmxvY2tzLUJvdW5kUmVmZXJlbmNlLWJvdW5kRW5kLXVwcGVyVmFsdWUiIG5hbWU9IiIgdmFsdWU9IjEiLz4NCisgICAgICAgIDwvb3duZWRBdHRyaWJ1dGU+DQorICAgICAgICA8b3duZWRBdHRyaWJ1dGUgeG1pOmlkPSJTeXNNTC1CbG9ja3MtQm91bmRSZWZlcmVuY2UtYmluZGluZ1BhdGgiIG5hbWU9ImJpbmRpbmdQYXRoIiB2aXNpYmlsaXR5PSJwdWJsaWMiIGlzT3JkZXJlZD0idHJ1ZSIgaXNVbmlxdWU9ImZhbHNlIiBpc0Rlcml2ZWQ9InRydWUiPg0KKyAgICAgICAgICA8b3duZWRDb21tZW50IHhtaTppZD0iU3lzTUwtQmxvY2tzLUJvdW5kUmVmZXJlbmNlLWJpbmRpbmdQYXRoLW93bmVkQ29tbWVudCIgYW5ub3RhdGVkRWxlbWVudD0iU3lzTUwtQmxvY2tzLUJvdW5kUmVmZXJlbmNlLWJpbmRpbmdQYXRoIj4NCisgICAgICAgICAgICA8Ym9keT5HaXZlcyB0aGUgcHJvcGVydHlQYXRoIG9mIHRoZSBOZXN0ZWRDb25uZWN0b3JFbmQgYXBwbGllZCwgaWYgYW55LCB0byB0aGUgYm91bmRFbmQsIGFwcGVuZGVkIHRvIHRoZSByb2xlIG9mIHRoZSBib3VuZEVuZC4gPC9ib2R5Pg0KKyAgICAgICAgICA8L293bmVkQ29tbWVudD4NCisgICAgICAgICAgPHR5cGUgeG1pOnR5cGU9InVtbDpDbGFzcyIgaHJlZj0icGF0aG1hcDovL1VNTF9NRVRBTU9ERUxTL1VNTC5tZXRhbW9kZWwudW1sI1Byb3BlcnR5Ii8+DQorICAgICAgICAgIDxsb3dlclZhbHVlIHhtaTp0eXBlPSJ1bWw6TGl0ZXJhbEludGVnZXIiIHhtaTppZD0iU3lzTUwtQmxvY2tzLUJvdW5kUmVmZXJlbmNlLWJpbmRpbmdQYXRoLWxvd2VyVmFsdWUiIG5hbWU9IiIgdmFsdWU9IjEiLz4NCisgICAgICAgICAgPHVwcGVyVmFsdWUgeG1pOnR5cGU9InVtbDpMaXRlcmFsVW5saW1pdGVkTmF0dXJhbCIgeG1pOmlkPSJTeXNNTC1CbG9ja3MtQm91bmRSZWZlcmVuY2UtYmluZGluZ1BhdGgtdXBwZXJWYWx1ZSIgbmFtZT0iIiB2YWx1ZT0iKiIvPg0KKyAgICAgICAgPC9vd25lZEF0dHJpYnV0ZT4NCisgICAgICA8L3BhY2thZ2VkRWxlbWVudD4NCisgICAgICA8cGFja2FnZWRFbGVtZW50IHhtaTp0eXBlPSJ1bWw6U3RlcmVvdHlwZSIgeG1pOmlkPSJTeXNNTC1CbG9ja3MtQWRqdW5jdFByb3BlcnR5IiBuYW1lPSJBZGp1bmN0UHJvcGVydHkiPg0KKyAgICAgICAgPG93bmVkQ29tbWVudCB4bWk6aWQ9IlN5c01MLUJsb2Nrcy1BZGp1bmN0UHJvcGVydHktb3duZWRDb21tZW50IiBhbm5vdGF0ZWRFbGVtZW50PSJTeXNNTC1CbG9ja3MtQWRqdW5jdFByb3BlcnR5Ij4NCisgICAgICAgICAgPGJvZHk+VGhlIEFkanVuY3RQcm9wZXJ0eSBzdGVyZW90eXBlIGNhbiBiZSBhcHBsaWVkIHRvIHByb3BlcnRpZXMgdG8gY29uc3RyYWluIHRoZWlyIHZhbHVlcyB0byB0aGUgdmFsdWVzIG9mIGNvbm5lY3RvcnMgdHlwZWQgYnkgYXNzb2NpYXRpb24gYmxvY2tzLCBjYWxsIGFjdGlvbnMsIG9iamVjdCBub2RlcywgdmFyaWFibGVzLCBvciBwYXJhbWV0ZXJzLCBpbnRlcmFjdGlvbiB1c2VzLCBhbmQgc3VibWFjaGluZSBzdGF0ZXMuICBUaGUgdmFsdWVzIG9mIGNvbm5lY3RvcnMgdHlwZWQgYnkgYXNzb2NpYXRpb24gYmxvY2tzIGFyZSB0aGUgaW5zdGFuY2VzIG9mIHRoZSBhc3NvY2lhdGlvbiBibG9jayB0eXBpbmcgYSBjb25uZWN0b3IgaW4gdGhlIGJsb2NrIGhhdmluZyB0aGUgc3RlcmVvdHlwZWQgcHJvcGVydHkuICBUaGUgdmFsdWVzIG9mIGNhbGwgYWN0aW9ucyBhcmUgdGhlIGV4ZWN1dGlvbnMgb2YgYmVoYXZpb3JzIGludm9rZWQgYnkgdGhlIGJlaGF2aW9yIGhhdmluZyB0aGUgY2FsbCBhY3Rpb24gYW5kIHRoZSBzdGVyZW90eXBlZCBwcm9wZXJ0eSAoc2VlIFN1YmNsYXVzZSAxMS4zLjEuMS4xIGZvciBtb3JlIGFib3V0IHRoaXMgdXNlIG9mIHRoZSBzdGVyZW90eXBlKS4gIFRoZSB2YWx1ZXMgb2Ygb2JqZWN0IG5vZGVzIGFyZSB0aGUgdmFsdWVzIG9mIHRva2VucyBpbiB0aGUgb2JqZWN0IG5vZGVzIG9mIHRoZSBiZWhhdmlvciBoYXZpbmcgdGhlIHN0ZXJlb3R5cGVkIHByb3BlcnR5IChzZWUgU3ViY2xhdXNlIDExLjMuMS40LjEgZm9yIG1vcmUgYWJvdXQgdGhpcyB1c2Ugb2YgdGhlIHN0ZXJlb3R5cGUpLiAgVGhlIHZhbHVlcyBvZiB2YXJpYWJsZXMgYXJlIHRob3NlIGFzc2lnbmVkIGJ5IGV4ZWN1dGlvbnMgb2YgYWN0aXZpdGllcyB0aGF0IGhhdmUgdGhlIHN0ZXJlb3R5cGVkIHByb3BlcnR5LiAgVGhlIHZhbHVlcyBvZiBwYXJhbWV0ZXJzIGFyZSB0aG9zZSBhc3NpZ25lZCBieSBleGVjdXRpb25zIG9mIGJlaGF2aW9ycyB0aGF0IGhhdmUgdGhlIHN0ZXJlb3R5cGVkIHByb3BlcnR5LiAgVGhlIGtleXdvcmQgwqthZGp1bmN0wrsgYmVmb3JlIGEgcHJvcGVydHkgbmFtZSBpbmRpY2F0ZXMgdGhlIHByb3BlcnR5IGlzIHN0ZXJlb3R5cGVkIGJ5IEFkanVuY3RQcm9wZXJ0eS48L2JvZHk+DQorICAgICAgICA8L293bmVkQ29tbWVudD4NCisgICAgICAgIDxvd25lZEF0dHJpYnV0ZSB4bWk6aWQ9IlN5c01MLUJsb2Nrcy1BZGp1bmN0UHJvcGVydHktYmFzZV9Qcm9wZXJ0eSIgbmFtZT0iYmFzZV9Qcm9wZXJ0eSIgdmlzaWJpbGl0eT0icHVibGljIiBhc3NvY2lhdGlvbj0iU3lzTUwtQmxvY2tzLUVfZXh0ZW5zaW9uX0FkanVuY3RQcm9wZXJ0eV9iYXNlX1Byb3BlcnR5Ij4NCisgICAgICAgICAgPHR5cGUgeG1pOnR5cGU9InVtbDpDbGFzcyIgaHJlZj0icGF0aG1hcDovL1VNTF9NRVRBTU9ERUxTL1VNTC5tZXRhbW9kZWwudW1sI1Byb3BlcnR5Ii8+DQorICAgICAgICAgIDxsb3dlclZhbHVlIHhtaTp0eXBlPSJ1bWw6TGl0ZXJhbEludGVnZXIiIHhtaTppZD0iU3lzTUwtQmxvY2tzLUFkanVuY3RQcm9wZXJ0eS1iYXNlX1Byb3BlcnR5LWxvd2VyVmFsdWUiIG5hbWU9IiIvPg0KKyAgICAgICAgICA8dXBwZXJWYWx1ZSB4bWk6dHlwZT0idW1sOkxpdGVyYWxVbmxpbWl0ZWROYXR1cmFsIiB4bWk6aWQ9IlN5c01MLUJsb2Nrcy1BZGp1bmN0UHJvcGVydHktYmFzZV9Qcm9wZXJ0eS11cHBlclZhbHVlIiBuYW1lPSIiIHZhbHVlPSIxIi8+DQorICAgICAgICA8L293bmVkQXR0cmlidXRlPg0KKyAgICAgICAgPG93bmVkQXR0cmlidXRlIHhtaTppZD0iU3lzTUwtQmxvY2tzLUFkanVuY3RQcm9wZXJ0eS1wcmluY2lwYWwiIG5hbWU9InByaW5jaXBhbCIgdmlzaWJpbGl0eT0icHVibGljIiBhc3NvY2lhdGlvbj0iU3lzTUwtQmxvY2tzLUFfYWRqdW5jdFByb3BlcnR5X3ByaW5jaXBhbCI+DQorICAgICAgICAgIDxvd25lZENvbW1lbnQgeG1pOmlkPSJTeXNNTC1CbG9ja3MtQWRqdW5jdFByb3BlcnR5LXByaW5jaXBhbC1vd25lZENvbW1lbnQiIGFubm90YXRlZEVsZW1lbnQ9IlN5c01MLUJsb2Nrcy1BZGp1bmN0UHJvcGVydHktcHJpbmNpcGFsIj4NCisgICAgICAgICAgICA8Ym9keT5HaXZlcyB0aGUgZWxlbWVudCB0aGF0IGRldGVybWluZXMgdGhlIHZhbHVlcyBvZiB0aGUgcHJvcGVydHkuICBNdXN0IGJlIGEgY29ubmVjdG9yLCBjYWxsIGFjdGlvbiwgb2JqZWN0IG5vZGUsIHZhcmlhYmxlLCBvciBwYXJhbWV0ZXIuPC9ib2R5Pg0KKyAgICAgICAgICA8L293bmVkQ29tbWVudD4NCisgICAgICAgICAgPHR5cGUgeG1pOnR5cGU9InVtbDpDbGFzcyIgaHJlZj0icGF0aG1hcDovL1VNTF9NRVRBTU9ERUxTL1VNTC5tZXRhbW9kZWwudW1sI0VsZW1lbnQiLz4NCisgICAgICAgICAgPGxvd2VyVmFsdWUgeG1pOnR5cGU9InVtbDpMaXRlcmFsSW50ZWdlciIgeG1pOmlkPSJTeXNNTC1CbG9ja3MtQWRqdW5jdFByb3BlcnR5LXByaW5jaXBhbC1sb3dlclZhbHVlIiBuYW1lPSIiIHZhbHVlPSIxIi8+DQorICAgICAgICAgIDx1cHBlclZhbHVlIHhtaTp0eXBlPSJ1bWw6TGl0ZXJhbFVubGltaXRlZE5hdHVyYWwiIHhtaTppZD0iU3lzTUwtQmxvY2tzLUFkanVuY3RQcm9wZXJ0eS1wcmluY2lwYWwtdXBwZXJWYWx1ZSIgbmFtZT0iIiB2YWx1ZT0iMSIvPg0KKyAgICAgICAgPC9vd25lZEF0dHJpYnV0ZT4NCisgICAgICA8L3BhY2thZ2VkRWxlbWVudD4NCisgICAgICA8cGFja2FnZWRFbGVtZW50IHhtaTp0eXBlPSJ1bWw6RXh0ZW5zaW9uIiB4bWk6aWQ9IlN5c01MLUJsb2Nrcy1FX2V4dGVuc2lvbl9BZGp1bmN0UHJvcGVydHlfYmFzZV9Qcm9wZXJ0eSIgbmFtZT0iRV9leHRlbnNpb25fQWRqdW5jdFByb3BlcnR5X2Jhc2VfUHJvcGVydHkiIG1lbWJlckVuZD0iU3lzTUwtQmxvY2tzLUFkanVuY3RQcm9wZXJ0eS1iYXNlX1Byb3BlcnR5IFN5c01MLUJsb2Nrcy1FX2V4dGVuc2lvbl9BZGp1bmN0UHJvcGVydHlfYmFzZV9Qcm9wZXJ0eS1leHRlbnNpb25fQWRqdW5jdFByb3BlcnR5IiBuYXZpZ2FibGVPd25lZEVuZD0iU3lzTUwtQmxvY2tzLUVfZXh0ZW5zaW9uX0FkanVuY3RQcm9wZXJ0eV9iYXNlX1Byb3BlcnR5LWV4dGVuc2lvbl9BZGp1bmN0UHJvcGVydHkiPg0KKyAgICAgICAgPG93bmVkRW5kIHhtaTp0eXBlPSJ1bWw6RXh0ZW5zaW9uRW5kIiB4bWk6aWQ9IlN5c01MLUJsb2Nrcy1FX2V4dGVuc2lvbl9BZGp1bmN0UHJvcGVydHlfYmFzZV9Qcm9wZXJ0eS1leHRlbnNpb25fQWRqdW5jdFByb3BlcnR5IiBuYW1lPSJleHRlbnNpb25fQWRqdW5jdFByb3BlcnR5IiB2aXNpYmlsaXR5PSJwdWJsaWMiIHR5cGU9IlN5c01MLUJsb2Nrcy1BZGp1bmN0UHJvcGVydHkiIGFnZ3JlZ2F0aW9uPSJjb21wb3NpdGUiIGFzc29jaWF0aW9uPSJTeXNNTC1CbG9ja3MtRV9leHRlbnNpb25fQWRqdW5jdFByb3BlcnR5X2Jhc2VfUHJvcGVydHkiLz4NCisgICAgICA8L3BhY2thZ2VkRWxlbWVudD4NCisgICAgICA8cGFja2FnZWRFbGVtZW50IHhtaTp0eXBlPSJ1bWw6U3RlcmVvdHlwZSIgeG1pOmlkPSJTeXNNTC1CbG9ja3MtQ2xhc3NpZmllckJlaGF2aW9yUHJvcGVydHkiIG5hbWU9IkNsYXNzaWZpZXJCZWhhdmlvclByb3BlcnR5Ij4NCisgICAgICAgIDxvd25lZENvbW1lbnQgeG1pOmlkPSJTeXNNTC1CbG9ja3MtQ2xhc3NpZmllckJlaGF2aW9yUHJvcGVydHktb3duZWRDb21tZW50IiBhbm5vdGF0ZWRFbGVtZW50PSJTeXNNTC1CbG9ja3MtQ2xhc3NpZmllckJlaGF2aW9yUHJvcGVydHkiPg0KKyAgICAgICAgICA8Ym9keT5UaGUgQ2xhc3NpZmllckJlaGF2aW9yUHJvcGVydHkgc3RlcmVvdHlwZSBjYW4gYmUgYXBwbGllZCB0byBwcm9wZXJ0aWVzIHRvIGNvbnN0cmFpbiB0aGVpciB2YWx1ZXMgdG8gYmUgdGhlIGV4ZWN1dGlvbnMgb2YgY2xhc3NpZmllciBiZWhhdmlvcnMuICBUaGUgdmFsdWUgb2YgcHJvcGVydGllcyB3aXRoIENsYXNzaWZpZXJCZWhhdmlvclByb3BlcnR5ICBhcHBsaWVkIGFyZSB0aGUgZXhlY3V0aW9ucyBvZiBjbGFzc2lmaWVyIGJlaGF2aW9ycyBpbnZva2VkIGJ5IGluc3RhbnRpYXRpb24gb2YgdGhlIGJsb2NrIHRoYXQgb3ducyB0aGUgc3RlcmVvdHlwZWQgcHJvcGVydHkgb3Igb25lIG9mIGl0cyBzcGVjaWFsaXphdGlvbnMuPC9ib2R5Pg0KKyAgICAgICAgPC9vd25lZENvbW1lbnQ+DQorICAgICAgICA8b3duZWRBdHRyaWJ1dGUgeG1pOmlkPSJTeXNNTC1CbG9ja3MtQ2xhc3NpZmllckJlaGF2aW9yUHJvcGVydHktYmFzZV9Qcm9wZXJ0eSIgbmFtZT0iYmFzZV9Qcm9wZXJ0eSIgdmlzaWJpbGl0eT0icHVibGljIiBhc3NvY2lhdGlvbj0iU3lzTUwtQmxvY2tzLUVfZXh0ZW5zaW9uX0NsYXNzaWZpZXJCZWhhdmlvclByb3BlcnR5X2Jhc2VfUHJvcGVydHkiPg0KKyAgICAgICAgICA8dHlwZSB4bWk6dHlwZT0idW1sOkNsYXNzIiBocmVmPSJwYXRobWFwOi8vVU1MX01FVEFNT0RFTFMvVU1MLm1ldGFtb2RlbC51bWwjUHJvcGVydHkiLz4NCisgICAgICAgICAgPGxvd2VyVmFsdWUgeG1pOnR5cGU9InVtbDpMaXRlcmFsSW50ZWdlciIgeG1pOmlkPSJTeXNNTC1CbG9ja3MtQ2xhc3NpZmllckJlaGF2aW9yUHJvcGVydHktYmFzZV9Qcm9wZXJ0eS1sb3dlclZhbHVlIiBuYW1lPSIiLz4NCisgICAgICAgICAgPHVwcGVyVmFsdWUgeG1pOnR5cGU9InVtbDpMaXRlcmFsVW5saW1pdGVkTmF0dXJhbCIgeG1pOmlkPSJTeXNNTC1CbG9ja3MtQ2xhc3NpZmllckJlaGF2aW9yUHJvcGVydHktYmFzZV9Qcm9wZXJ0eS11cHBlclZhbHVlIiBuYW1lPSIiIHZhbHVlPSIxIi8+DQorICAgICAgICA8L293bmVkQXR0cmlidXRlPg0KKyAgICAgIDwvcGFja2FnZWRFbGVtZW50Pg0KKyAgICAgIDxwYWNrYWdlZEVsZW1lbnQgeG1pOnR5cGU9InVtbDpFeHRlbnNpb24iIHhtaTppZD0iU3lzTUwtQmxvY2tzLUVfZXh0ZW5zaW9uX0NsYXNzaWZpZXJCZWhhdmlvclByb3BlcnR5X2Jhc2VfUHJvcGVydHkiIG5hbWU9IkVfZXh0ZW5zaW9uX0NsYXNzaWZpZXJCZWhhdmlvclByb3BlcnR5X2Jhc2VfUHJvcGVydHkiIG1lbWJlckVuZD0iU3lzTUwtQmxvY2tzLUNsYXNzaWZpZXJCZWhhdmlvclByb3BlcnR5LWJhc2VfUHJvcGVydHkgU3lzTUwtQmxvY2tzLUVfZXh0ZW5zaW9uX0NsYXNzaWZpZXJCZWhhdmlvclByb3BlcnR5X2Jhc2VfUHJvcGVydHktZXh0ZW5zaW9uX0NsYXNzaWZpZXJCZWhhdmlvclByb3BlcnR5IiBuYXZpZ2FibGVPd25lZEVuZD0iU3lzTUwtQmxvY2tzLUVfZXh0ZW5zaW9uX0NsYXNzaWZpZXJCZWhhdmlvclByb3BlcnR5X2Jhc2VfUHJvcGVydHktZXh0ZW5zaW9uX0NsYXNzaWZpZXJCZWhhdmlvclByb3BlcnR5Ij4NCisgICAgICAgIDxvd25lZEVuZCB4bWk6dHlwZT0idW1sOkV4dGVuc2lvbkVuZCIgeG1pOmlkPSJTeXNNTC1CbG9ja3MtRV9leHRlbnNpb25fQ2xhc3NpZmllckJlaGF2aW9yUHJvcGVydHlfYmFzZV9Qcm9wZXJ0eS1leHRlbnNpb25fQ2xhc3NpZmllckJlaGF2aW9yUHJvcGVydHkiIG5hbWU9ImV4dGVuc2lvbl9DbGFzc2lmaWVyQmVoYXZpb3JQcm9wZXJ0eSIgdmlzaWJpbGl0eT0icHVibGljIiB0eXBlPSJTeXNNTC1CbG9ja3MtQ2xhc3NpZmllckJlaGF2aW9yUHJvcGVydHkiIGFnZ3JlZ2F0aW9uPSJjb21wb3NpdGUiIGFzc29jaWF0aW9uPSJTeXNNTC1CbG9ja3MtRV9leHRlbnNpb25fQ2xhc3NpZmllckJlaGF2aW9yUHJvcGVydHlfYmFzZV9Qcm9wZXJ0eSIvPg0KKyAgICAgIDwvcGFja2FnZWRFbGVtZW50Pg0KKyAgICAgIDxwYWNrYWdlZEVsZW1lbnQgeG1pOnR5cGU9InVtbDpBc3NvY2lhdGlvbiIgeG1pOmlkPSJTeXNNTC1CbG9ja3MtQV9hZGp1bmN0UHJvcGVydHlfcHJpbmNpcGFsIiBuYW1lPSJBX2FkanVuY3RQcm9wZXJ0eV9wcmluY2lwYWwiIG1lbWJlckVuZD0iU3lzTUwtQmxvY2tzLUFkanVuY3RQcm9wZXJ0eS1wcmluY2lwYWwgU3lzTUwtQmxvY2tzLUFfYWRqdW5jdFByb3BlcnR5X3ByaW5jaXBhbC1hZGp1bmN0UHJvcGVydHkiPg0KKyAgICAgICAgPG93bmVkRW5kIHhtaTppZD0iU3lzTUwtQmxvY2tzLUFfYWRqdW5jdFByb3BlcnR5X3ByaW5jaXBhbC1hZGp1bmN0UHJvcGVydHkiIG5hbWU9ImFkanVuY3RQcm9wZXJ0eSIgdmlzaWJpbGl0eT0icHVibGljIiB0eXBlPSJTeXNNTC1CbG9ja3MtQWRqdW5jdFByb3BlcnR5IiBhc3NvY2lhdGlvbj0iU3lzTUwtQmxvY2tzLUFfYWRqdW5jdFByb3BlcnR5X3ByaW5jaXBhbCI+DQorICAgICAgICAgIDxsb3dlclZhbHVlIHhtaTp0eXBlPSJ1bWw6TGl0ZXJhbEludGVnZXIiIHhtaTppZD0iX3FNSzk0SmdKRWVTRnRMb1ZlMi1zb1EiLz4NCisgICAgICAgICAgPHVwcGVyVmFsdWUgeG1pOnR5cGU9InVtbDpMaXRlcmFsVW5saW1pdGVkTmF0dXJhbCIgeG1pOmlkPSJTeXNNTC1CbG9ja3MtQV9hZGp1bmN0UHJvcGVydHlfcHJpbmNpcGFsLWFkanVuY3RQcm9wZXJ0eS11cHBlclZhbHVlIiBuYW1lPSIiIHZhbHVlPSIqIi8+DQorICAgICAgICA8L293bmVkRW5kPg0KKyAgICAgIDwvcGFja2FnZWRFbGVtZW50Pg0KKyAgICA8L3BhY2thZ2VkRWxlbWVudD4NCisgICAgPHBhY2thZ2VkRWxlbWVudCB4bWk6dHlwZT0idW1sOlBhY2thZ2UiIHhtaTppZD0iU3lzTUwtUG9ydHNfdTAwMjZGbG93cyIgbmFtZT0iUG9ydHNhbmRGbG93cyIgVVJJPSIiPg0KKyAgICAgIDxwYWNrYWdlSW1wb3J0IHhtaTppZD0iU3lzTUwtUG9ydHNfdTAwMjZGbG93cy1wYWNrYWdlSW1wb3J0IiBpbXBvcnRlZFBhY2thZ2U9IlN5c01MLUJsb2NrcyIvPg0KKyAgICAgIDxwYWNrYWdlZEVsZW1lbnQgeG1pOnR5cGU9InVtbDpFeHRlbnNpb24iIHhtaTppZD0iU3lzTUwtUG9ydHNfdTAwMjZGbG93cy1FX2V4dGVuc2lvbl9JdGVtRmxvd19iYXNlX0luZm9ybWF0aW9uRmxvdyIgbmFtZT0iRV9leHRlbnNpb25fSXRlbUZsb3dfYmFzZV9JbmZvcm1hdGlvbkZsb3ciIG1lbWJlckVuZD0iU3lzTUwtUG9ydHNfdTAwMjZGbG93cy1FX2V4dGVuc2lvbl9JdGVtRmxvd19iYXNlX0luZm9ybWF0aW9uRmxvdy1leHRlbnNpb25fSXRlbUZsb3cgU3lzTUwtUG9ydHNfdTAwMjZGbG93cy1JdGVtRmxvdy1iYXNlX0luZm9ybWF0aW9uRmxvdyIgbmF2aWdhYmxlT3duZWRFbmQ9IlN5c01MLVBvcnRzX3UwMDI2Rmxvd3MtRV9leHRlbnNpb25fSXRlbUZsb3dfYmFzZV9JbmZvcm1hdGlvbkZsb3ctZXh0ZW5zaW9uX0l0ZW1GbG93Ij4NCisgICAgICAgIDxvd25lZEVuZCB4bWk6dHlwZT0idW1sOkV4dGVuc2lvbkVuZCIgeG1pOmlkPSJTeXNNTC1Qb3J0c191MDAyNkZsb3dzLUVfZXh0ZW5zaW9uX0l0ZW1GbG93X2Jhc2VfSW5mb3JtYXRpb25GbG93LWV4dGVuc2lvbl9JdGVtRmxvdyIgbmFtZT0iZXh0ZW5zaW9uX0l0ZW1GbG93IiB2aXNpYmlsaXR5PSJwdWJsaWMiIHR5cGU9IlN5c01MLVBvcnRzX3UwMDI2Rmxvd3MtSXRlbUZsb3ciIGFnZ3JlZ2F0aW9uPSJjb21wb3NpdGUiIGFzc29jaWF0aW9uPSJTeXNNTC1Qb3J0c191MDAyNkZsb3dzLUVfZXh0ZW5zaW9uX0l0ZW1GbG93X2Jhc2VfSW5mb3JtYXRpb25GbG93Ij4NCisgICAgICAgICAgPGxvd2VyVmFsdWUgeG1pOnR5cGU9InVtbDpMaXRlcmFsSW50ZWdlciIgeG1pOmlkPSJTeXNNTC1Qb3J0c191MDAyNkZsb3dzLUVfZXh0ZW5zaW9uX0l0ZW1GbG93X2Jhc2VfSW5mb3JtYXRpb25GbG93LWV4dGVuc2lvbl9JdGVtRmxvdy1sb3dlclZhbHVlIiBuYW1lPSIiLz4NCisgICAgICAgICAgPHVwcGVyVmFsdWUgeG1pOnR5cGU9InVtbDpMaXRlcmFsSW50ZWdlciIgeG1pOmlkPSJTeXNNTC1Qb3J0c191MDAyNkZsb3dzLUVfZXh0ZW5zaW9uX0l0ZW1GbG93X2Jhc2VfSW5mb3JtYXRpb25GbG93LWV4dGVuc2lvbl9JdGVtRmxvdy11cHBlclZhbHVlIiBuYW1lPSIiIHZhbHVlPSIxIi8+DQorICAgICAgICA8L293bmVkRW5kPg0KKyAgICAgIDwvcGFja2FnZWRFbGVtZW50Pg0KKyAgICAgIDxwYWNrYWdlZEVsZW1lbnQgeG1pOnR5cGU9InVtbDpTdGVyZW90eXBlIiB4bWk6aWQ9IlN5c01MLVBvcnRzX3UwMDI2Rmxvd3MtSXRlbUZsb3ciIG5hbWU9Ikl0ZW1GbG93Ij4NCisgICAgICAgIDxvd25lZENvbW1lbnQgeG1pOmlkPSJTeXNNTC1Qb3J0c191MDAyNkZsb3dzLUl0ZW1GbG93LW93bmVkQ29tbWVudCIgYW5ub3RhdGVkRWxlbWVudD0iU3lzTUwtUG9ydHNfdTAwMjZGbG93cy1JdGVtRmxvdyI+DQorICAgICAgICAgIDxib2R5PkFuIEl0ZW1GbG93IGRlc2NyaWJlcyB0aGUgZmxvdyBvZiBpdGVtcyBhY3Jvc3MgYSBjb25uZWN0b3Igb3IgYW4gYXNzb2NpYXRpb24uIEl0IG1heSBjb25zdHJhaW4gdGhlIGl0ZW0gZXhjaGFuZ2UgYmV0d2VlbiBibG9ja3MsIGJsb2NrIHVzYWdlcywgb3IgZmxvdyBwb3J0cyBhcyBzcGVjaWZpZWQgYnkgdGhlaXIgZmxvdyBwcm9wZXJ0aWVzLiBGb3IgZXhhbXBsZSwgYSBwdW1wIGNvbm5lY3RlZCB0byBhIHRhbms6IHRoZSBwdW1wIGhhcyBhbiDigJxvdXTigJ0gZmxvdyBwcm9wZXJ0eSBvZiB0eXBlIExpcXVpZCBhbmQgdGhlIHRhbmsgaGFzIGFuIOKAnGlu4oCdIEZsb3dQcm9wZXJ0eSBvZiB0eXBlIExpcXVpZC4gVG8gc2lnbmlmeSB0aGF0IG9ubHkgd2F0ZXIgZmxvd3MgYmV0d2VlbiB0aGUgcHVtcCBhbmQgdGhlIHRhbmssIHdlIGNhbiBzcGVjaWZ5IGFuIEl0ZW1GbG93IG9mIHR5cGUgV2F0ZXIgb24gdGhlIGNvbm5lY3Rvci48L2JvZHk+DQorICAgICAgICA8L293bmVkQ29tbWVudD4NCisgICAgICAgIDxvd25lZEF0dHJpYnV0ZSB4bWk6aWQ9IlN5c01MLVBvcnRzX3UwMDI2Rmxvd3MtSXRlbUZsb3ctYmFzZV9JbmZvcm1hdGlvbkZsb3ciIG5hbWU9ImJhc2VfSW5mb3JtYXRpb25GbG93IiB2aXNpYmlsaXR5PSJwdWJsaWMiIGFzc29jaWF0aW9uPSJTeXNNTC1Qb3J0c191MDAyNkZsb3dzLUVfZXh0ZW5zaW9uX0l0ZW1GbG93X2Jhc2VfSW5mb3JtYXRpb25GbG93Ij4NCisgICAgICAgICAgPHR5cGUgeG1pOnR5cGU9InVtbDpDbGFzcyIgaHJlZj0icGF0aG1hcDovL1VNTF9NRVRBTU9ERUxTL1VNTC5tZXRhbW9kZWwudW1sI0luZm9ybWF0aW9uRmxvdyIvPg0KKyAgICAgICAgICA8bG93ZXJWYWx1ZSB4bWk6dHlwZT0idW1sOkxpdGVyYWxJbnRlZ2VyIiB4bWk6aWQ9IlN5c01MLVBvcnRzX3UwMDI2Rmxvd3MtSXRlbUZsb3ctYmFzZV9JbmZvcm1hdGlvbkZsb3ctbG93ZXJWYWx1ZSIgbmFtZT0iIi8+DQorICAgICAgICAgIDx1cHBlclZhbHVlIHhtaTp0eXBlPSJ1bWw6TGl0ZXJhbFVubGltaXRlZE5hdHVyYWwiIHhtaTppZD0iU3lzTUwtUG9ydHNfdTAwMjZGbG93cy1JdGVtRmxvdy1iYXNlX0luZm9ybWF0aW9uRmxvdy11cHBlclZhbHVlIiBuYW1lPSIiIHZhbHVlPSIxIi8+DQorICAgICAgICA8L293bmVkQXR0cmlidXRlPg0KKyAgICAgICAgPG93bmVkQXR0cmlidXRlIHhtaTppZD0iU3lzTUwtUG9ydHNfdTAwMjZGbG93cy1JdGVtRmxvdy1pdGVtUHJvcGVydHkiIG5hbWU9Iml0ZW1Qcm9wZXJ0eSIgdmlzaWJpbGl0eT0icHVibGljIj4NCisgICAgICAgICAgPG93bmVkQ29tbWVudCB4bWk6aWQ9IlN5c01MLVBvcnRzX3UwMDI2Rmxvd3MtSXRlbUZsb3ctaXRlbVByb3BlcnR5LW93bmVkQ29tbWVudCIgYW5ub3RhdGVkRWxlbWVudD0iU3lzTUwtUG9ydHNfdTAwMjZGbG93cy1JdGVtRmxvdy1pdGVtUHJvcGVydHkiPg0KKyAgICAgICAgICAgIDxib2R5PkFuIG9wdGlvbmFsIHByb3BlcnR5IHRoYXQgcmVsYXRlcyB0aGUgZmxvd2luZyBpdGVtIHRvIHRoZSBpbnN0YW5jZXMgb2YgdGhlIGNvbm5lY3RvcuKAmXMgZW5jbG9zaW5nIGJsb2NrLiBUaGlzIHByb3BlcnR5IGlzIGFwcGxpY2FibGUgb25seSBmb3IgaXRlbSBmbG93cyBhc3NpZ25lZCB0byBjb25uZWN0b3JzLiBUaGUgbXVsdGlwbGljaXR5IGlzIHplcm8gaWYgdGhlIGl0ZW0gZmxvdyBpcyBhc3NpZ25lZCB0byBhbiBBc3NvY2lhdGlvbi48L2JvZHk+DQorICAgICAgICAgIDwvb3duZWRDb21tZW50Pg0KKyAgICAgICAgICA8dHlwZSB4bWk6dHlwZT0idW1sOkNsYXNzIiBocmVmPSJwYXRobWFwOi8vVU1MX01FVEFNT0RFTFMvVU1MLm1ldGFtb2RlbC51bWwjUHJvcGVydHkiLz4NCisgICAgICAgICAgPGxvd2VyVmFsdWUgeG1pOnR5cGU9InVtbDpMaXRlcmFsSW50ZWdlciIgeG1pOmlkPSJTeXNNTC1Qb3J0c191MDAyNkZsb3dzLUl0ZW1GbG93LWl0ZW1Qcm9wZXJ0eS1sb3dlclZhbHVlIiBuYW1lPSIiLz4NCisgICAgICAgICAgPHVwcGVyVmFsdWUgeG1pOnR5cGU9InVtbDpMaXRlcmFsVW5saW1pdGVkTmF0dXJhbCIgeG1pOmlkPSJTeXNNTC1Qb3J0c191MDAyNkZsb3dzLUl0ZW1GbG93LWl0ZW1Qcm9wZXJ0eS11cHBlclZhbHVlIiBuYW1lPSIiIHZhbHVlPSIxIi8+DQorICAgICAgICA8L293bmVkQXR0cmlidXRlPg0KKyAgICAgIDwvcGFja2FnZWRFbGVtZW50Pg0KKyAgICAgIDxwYWNrYWdlZEVsZW1lbnQgeG1pOnR5cGU9InVtbDpFeHRlbnNpb24iIHhtaTppZD0iU3lzTUwtUG9ydHNfdTAwMjZGbG93cy1FX2V4dGVuc2lvbl9GbG93UHJvcGVydHlfYmFzZV9Qcm9wZXJ0eSIgbmFtZT0iRV9leHRlbnNpb25fRmxvd1Byb3BlcnR5X2Jhc2VfUHJvcGVydHkiIG1lbWJlckVuZD0iU3lzTUwtUG9ydHNfdTAwMjZGbG93cy1FX2V4dGVuc2lvbl9GbG93UHJvcGVydHlfYmFzZV9Qcm9wZXJ0eS1leHRlbnNpb25fRmxvd1Byb3BlcnR5IFN5c01MLVBvcnRzX3UwMDI2Rmxvd3MtRmxvd1Byb3BlcnR5LWJhc2VfUHJvcGVydHkiIG5hdmlnYWJsZU93bmVkRW5kPSJTeXNNTC1Qb3J0c191MDAyNkZsb3dzLUVfZXh0ZW5zaW9uX0Zsb3dQcm9wZXJ0eV9iYXNlX1Byb3BlcnR5LWV4dGVuc2lvbl9GbG93UHJvcGVydHkiPg0KKyAgICAgICAgPG93bmVkRW5kIHhtaTp0eXBlPSJ1bWw6RXh0ZW5zaW9uRW5kIiB4bWk6aWQ9IlN5c01MLVBvcnRzX3UwMDI2Rmxvd3MtRV9leHRlbnNpb25fRmxvd1Byb3BlcnR5X2Jhc2VfUHJvcGVydHktZXh0ZW5zaW9uX0Zsb3dQcm9wZXJ0eSIgbmFtZT0iZXh0ZW5zaW9uX0Zsb3dQcm9wZXJ0eSIgdmlzaWJpbGl0eT0icHVibGljIiB0eXBlPSJTeXNNTC1Qb3J0c191MDAyNkZsb3dzLUZsb3dQcm9wZXJ0eSIgYWdncmVnYXRpb249ImNvbXBvc2l0ZSIgYXNzb2NpYXRpb249IlN5c01MLVBvcnRzX3UwMDI2Rmxvd3MtRV9leHRlbnNpb25fRmxvd1Byb3BlcnR5X2Jhc2VfUHJvcGVydHkiPg0KKyAgICAgICAgICA8bG93ZXJWYWx1ZSB4bWk6dHlwZT0idW1sOkxpdGVyYWxJbnRlZ2VyIiB4bWk6aWQ9IlN5c01MLVBvcnRzX3UwMDI2Rmxvd3MtRV9leHRlbnNpb25fRmxvd1Byb3BlcnR5X2Jhc2VfUHJvcGVydHktZXh0ZW5zaW9uX0Zsb3dQcm9wZXJ0eS1sb3dlclZhbHVlIiBuYW1lPSIiLz4NCisgICAgICAgICAgPHVwcGVyVmFsdWUgeG1pOnR5cGU9InVtbDpMaXRlcmFsSW50ZWdlciIgeG1pOmlkPSJTeXNNTC1Qb3J0c191MDAyNkZsb3dzLUVfZXh0ZW5zaW9uX0Zsb3dQcm9wZXJ0eV9iYXNlX1Byb3BlcnR5LWV4dGVuc2lvbl9GbG93UHJvcGVydHktdXBwZXJWYWx1ZSIgbmFtZT0iIiB2YWx1ZT0iMSIvPg0KKyAgICAgICAgPC9vd25lZEVuZD4NCisgICAgICA8L3BhY2thZ2VkRWxlbWVudD4NCisgICAgICA8cGFja2FnZWRFbGVtZW50IHhtaTp0eXBlPSJ1bWw6U3RlcmVvdHlwZSIgeG1pOmlkPSJTeXNNTC1Qb3J0c191MDAyNkZsb3dzLUZsb3dQcm9wZXJ0eSIgbmFtZT0iRmxvd1Byb3BlcnR5Ij4NCisgICAgICAgIDxvd25lZENvbW1lbnQgeG1pOmlkPSJTeXNNTC1Qb3J0c191MDAyNkZsb3dzLUZsb3dQcm9wZXJ0eS1vd25lZENvbW1lbnQiIGFubm90YXRlZEVsZW1lbnQ9IlN5c01MLVBvcnRzX3UwMDI2Rmxvd3MtRmxvd1Byb3BlcnR5Ij4NCisgICAgICAgICAgPGJvZHk+QSBGbG93UHJvcGVydHkgc2lnbmlmaWVzIGEgc2luZ2xlIGZsb3cgZWxlbWVudCB0aGF0IGNhbiBmbG93IHRvL2Zyb20gYSBibG9jay4gQSBmbG93IHByb3BlcnR54oCZcyB2YWx1ZXMgYXJlIGVpdGhlciByZWNlaXZlZCBmcm9tIG9yIHRyYW5zbWl0dGVkIHRvIGFuIGV4dGVybmFsIGJsb2NrLiBGbG93IHByb3BlcnRpZXMgYXJlIGRlZmluZWQgZGlyZWN0bHkgb24gYmxvY2tzIG9yIGZsb3cgc3BlY2lmaWNhdGlvbnMgdGhhdCBhcmUgdGhvc2Ugc3BlY2lmaWNhdGlvbnMgd2hpY2ggdHlwZSB0aGUgZmxvdyBwb3J0cy4gRmxvdyBwcm9wZXJ0aWVzIGVuYWJsZSBpdGVtIGZsb3dzIGFjcm9zcyBjb25uZWN0b3JzIGNvbm5lY3RpbmcgcGFydHMgb2YgdGhlIGNvcnJlc3BvbmRpbmcgYmxvY2sgdHlwZXMsIGVpdGhlciBkaXJlY3RseSAoaW4gY2FzZSBvZiB0aGUgcHJvcGVydHkgaXMgZGVmaW5lZCBvbiB0aGUgYmxvY2spIG9yIHZpYSBmbG93UG9ydHMuIEZvciBCbG9jaywgRGF0YSBUeXBlLCBhbmQgVmFsdWUgVHlwZSBwcm9wZXJ0aWVzLCBzZXR0aW5nIGFuIOKAnG91dOKAnSBGbG93UHJvcGVydHkgdmFsdWUgb2YgYSBibG9jayB1c2FnZSBvbiBvbmUgZW5kIG9mIGEgY29ubmVjdG9yIHdpbGwgcmVzdWx0IGluIGFzc2lnbmluZyB0aGUgc2FtZSB2YWx1ZSBvZiBhbiDigJxpbuKAnSBGbG93UHJvcGVydHkgb2YgYSBibG9jayB1c2FnZSBhdCB0aGUgb3RoZXIgZW5kIG9mIHRoZSBjb25uZWN0b3IsIHByb3ZpZGVkIHRoZSBmbG93IHByb3BlcnRpZXMgYXJlIG1hdGNoZWQuIEZsb3cgcHJvcGVydGllcyBvZiB0eXBlIFNpZ25hbCBpbXBseSBzZW5kaW5nIGFuZC9vciByZWNlaXZpbmcgb2YgYSBzaWduYWwgdXNhZ2UuIEFuIOKAnG91dOKAnSBGbG93UHJvcGVydHkgb2YgdHlwZSBTaWduYWwgbWVhbnMgdGhhdCB0aGUgb3duaW5nIEJsb2NrIG1heSBicm9hZGNhc3QgdGhlIHNpZ25hbCB2aWEgY29ubmVjdG9ycyBhbmQgYW4g4oCcaW7igJ0gRmxvd1Byb3BlcnR5IG1lYW5zIHRoYXQgdGhlIG93bmluZyBibG9jayBpcyBhYmxlIHRvIHJlY2VpdmUgdGhlIFNpZ25hbC48L2JvZHk+DQorICAgICAgICA8L293bmVkQ29tbWVudD4NCisgICAgICAgIDxvd25lZEF0dHJpYnV0ZSB4bWk6aWQ9IlN5c01MLVBvcnRzX3UwMDI2Rmxvd3MtRmxvd1Byb3BlcnR5LWJhc2VfUHJvcGVydHkiIG5hbWU9ImJhc2VfUHJvcGVydHkiIHZpc2liaWxpdHk9InB1YmxpYyIgYXNzb2NpYXRpb249IlN5c01MLVBvcnRzX3UwMDI2Rmxvd3MtRV9leHRlbnNpb25fRmxvd1Byb3BlcnR5X2Jhc2VfUHJvcGVydHkiPg0KKyAgICAgICAgICA8dHlwZSB4bWk6dHlwZT0idW1sOkNsYXNzIiBocmVmPSJwYXRobWFwOi8vVU1MX01FVEFNT0RFTFMvVU1MLm1ldGFtb2RlbC51bWwjUHJvcGVydHkiLz4NCisgICAgICAgICAgPGxvd2VyVmFsdWUgeG1pOnR5cGU9InVtbDpMaXRlcmFsSW50ZWdlciIgeG1pOmlkPSJTeXNNTC1Qb3J0c191MDAyNkZsb3dzLUZsb3dQcm9wZXJ0eS1iYXNlX1Byb3BlcnR5LWxvd2VyVmFsdWUiIG5hbWU9IiIvPg0KKyAgICAgICAgICA8dXBwZXJWYWx1ZSB4bWk6dHlwZT0idW1sOkxpdGVyYWxVbmxpbWl0ZWROYXR1cmFsIiB4bWk6aWQ9IlN5c01MLVBvcnRzX3UwMDI2Rmxvd3MtRmxvd1Byb3BlcnR5LWJhc2VfUHJvcGVydHktdXBwZXJWYWx1ZSIgbmFtZT0iIiB2YWx1ZT0iMSIvPg0KKyAgICAgICAgPC9vd25lZEF0dHJpYnV0ZT4NCisgICAgICAgIDxvd25lZEF0dHJpYnV0ZSB4bWk6aWQ9IlN5c01MLVBvcnRzX3UwMDI2Rmxvd3MtRmxvd1Byb3BlcnR5LWRpcmVjdGlvbiIgbmFtZT0iZGlyZWN0aW9uIiB2aXNpYmlsaXR5PSJwdWJsaWMiIHR5cGU9IlN5c01MLVBvcnRzX3UwMDI2Rmxvd3MtRmxvd0RpcmVjdGlvbiI+DQorICAgICAgICAgIDxvd25lZENvbW1lbnQgeG1pOmlkPSJTeXNNTC1Qb3J0c191MDAyNkZsb3dzLUZsb3dQcm9wZXJ0eS1kaXJlY3Rpb24tb3duZWRDb21tZW50IiBhbm5vdGF0ZWRFbGVtZW50PSJTeXNNTC1Qb3J0c191MDAyNkZsb3dzLUZsb3dQcm9wZXJ0eS1kaXJlY3Rpb24iPg0KKyAgICAgICAgICAgIDxib2R5PlNwZWNpZmllcyBpZiB0aGUgcHJvcGVydHkgdmFsdWUgaXMgcmVjZWl2ZWQgZnJvbSBhbiBleHRlcm5hbCBibG9jayAoZGlyZWN0aW9uPeKAnGlu4oCdKSwgdHJhbnNtaXR0ZWQgdG8gYW4gZXh0ZXJuYWwgQmxvY2sgKGRpcmVjdGlvbj3igJxvdXTigJ0pIG9yIGJvdGggKGRpcmVjdGlvbj3igJxpbm91dOKAnSkuPC9ib2R5Pg0KKyAgICAgICAgICA8L293bmVkQ29tbWVudD4NCisgICAgICAgICAgPGxvd2VyVmFsdWUgeG1pOnR5cGU9InVtbDpMaXRlcmFsSW50ZWdlciIgeG1pOmlkPSJTeXNNTC1Qb3J0c191MDAyNkZsb3dzLUZsb3dQcm9wZXJ0eS1kaXJlY3Rpb24tbG93ZXJWYWx1ZSIgbmFtZT0iIiB2YWx1ZT0iMSIvPg0KKyAgICAgICAgICA8dXBwZXJWYWx1ZSB4bWk6dHlwZT0idW1sOkxpdGVyYWxVbmxpbWl0ZWROYXR1cmFsIiB4bWk6aWQ9IlN5c01MLVBvcnRzX3UwMDI2Rmxvd3MtRmxvd1Byb3BlcnR5LWRpcmVjdGlvbi11cHBlclZhbHVlIiBuYW1lPSIiIHZhbHVlPSIxIi8+DQorICAgICAgICAgIDxkZWZhdWx0VmFsdWUgeG1pOnR5cGU9InVtbDpJbnN0YW5jZVZhbHVlIiB4bWk6aWQ9IlN5c01MLVBvcnRzX3UwMDI2Rmxvd3MtRmxvd1Byb3BlcnR5LWRpcmVjdGlvbi1kZWZhdWx0VmFsdWUiIG5hbWU9IiIgaW5zdGFuY2U9IlN5c01MLVBvcnRzX3UwMDI2Rmxvd3MtRmxvd0RpcmVjdGlvbi1pbm91dCIvPg0KKyAgICAgICAgPC9vd25lZEF0dHJpYnV0ZT4NCisgICAgICA8L3BhY2thZ2VkRWxlbWVudD4NCisgICAgICA8cGFja2FnZWRFbGVtZW50IHhtaTp0eXBlPSJ1bWw6RW51bWVyYXRpb24iIHhtaTppZD0iU3lzTUwtUG9ydHNfdTAwMjZGbG93cy1GbG93RGlyZWN0aW9uIiBuYW1lPSJGbG93RGlyZWN0aW9uIj4NCisgICAgICAgIDxvd25lZENvbW1lbnQgeG1pOmlkPSJTeXNNTC1Qb3J0c191MDAyNkZsb3dzLUZsb3dEaXJlY3Rpb24tb3duZWRDb21tZW50IiBhbm5vdGF0ZWRFbGVtZW50PSJTeXNNTC1Qb3J0c191MDAyNkZsb3dzLUZsb3dEaXJlY3Rpb24iPg0KKyAgICAgICAgICA8Ym9keT5GbG93RGlyZWN0aW9uIGlzIGFuIGVudW1lcmF0aW9uIHR5cGUgdGhhdCBkZWZpbmVzIGxpdGVyYWxzIHVzZWQgZm9yIHNwZWNpZnlpbmcgaW5wdXQgYW5kIG91dHB1dCBkaXJlY3Rpb25zLiBGbG93RGlyZWN0aW9uIGlzIHVzZWQgYnkgZmxvdyBwcm9wZXJ0aWVzIHRvIGluZGljYXRlIGlmIGEgcHJvcGVydHkgaXMgYW4gaW5wdXQgb3IgYW4gb3V0cHV0IHdpdGggcmVzcGVjdCB0byBpdHMgb3duZXIuPC9ib2R5Pg0KKyAgICAgICAgPC9vd25lZENvbW1lbnQ+DQorICAgICAgICA8b3duZWRMaXRlcmFsIHhtaTppZD0iU3lzTUwtUG9ydHNfdTAwMjZGbG93cy1GbG93RGlyZWN0aW9uLWluIiBuYW1lPSJpbiI+DQorICAgICAgICAgIDxvd25lZENvbW1lbnQgeG1pOmlkPSJTeXNNTC1Qb3J0c191MDAyNkZsb3dzLUZsb3dEaXJlY3Rpb24taW4tb3duZWRDb21tZW50IiBhbm5vdGF0ZWRFbGVtZW50PSJTeXNNTC1Qb3J0c191MDAyNkZsb3dzLUZsb3dEaXJlY3Rpb24taW4iPg0KKyAgICAgICAgICAgIDxib2R5PkluZGljYXRlcyB0aGF0IHRoZSBmbG93IHByb3BlcnR5IGlzIGlucHV0IHRvIHRoZSBvd25pbmcgYmxvY2suPC9ib2R5Pg0KKyAgICAgICAgICA8L293bmVkQ29tbWVudD4NCisgICAgICAgIDwvb3duZWRMaXRlcmFsPg0KKyAgICAgICAgPG93bmVkTGl0ZXJhbCB4bWk6aWQ9IlN5c01MLVBvcnRzX3UwMDI2Rmxvd3MtRmxvd0RpcmVjdGlvbi1vdXQiIG5hbWU9Im91dCI+DQorICAgICAgICAgIDxvd25lZENvbW1lbnQgeG1pOmlkPSJTeXNNTC1Qb3J0c191MDAyNkZsb3dzLUZsb3dEaXJlY3Rpb24tb3V0LW93bmVkQ29tbWVudCIgYW5ub3RhdGVkRWxlbWVudD0iU3lzTUwtUG9ydHNfdTAwMjZGbG93cy1GbG93RGlyZWN0aW9uLW91dCI+DQorICAgICAgICAgICAgPGJvZHk+SW5kaWNhdGVzIHRoYXQgdGhlIGZsb3cgcHJvcGVydHkgaXMgYW4gb3V0cHV0IG9mIHRoZSBvd25pbmcgYmxvY2suPC9ib2R5Pg0KKyAgICAgICAgICA8L293bmVkQ29tbWVudD4NCisgICAgICAgIDwvb3duZWRMaXRlcmFsPg0KKyAgICAgICAgPG93bmVkTGl0ZXJhbCB4bWk6aWQ9IlN5c01MLVBvcnRzX3UwMDI2Rmxvd3MtRmxvd0RpcmVjdGlvbi1pbm91dCIgbmFtZT0iaW5vdXQiPg0KKyAgICAgICAgICA8b3duZWRDb21tZW50IHhtaTppZD0iU3lzTUwtUG9ydHNfdTAwMjZGbG93cy1GbG93RGlyZWN0aW9uLWlub3V0LW93bmVkQ29tbWVudCIgYW5ub3RhdGVkRWxlbWVudD0iU3lzTUwtUG9ydHNfdTAwMjZGbG93cy1GbG93RGlyZWN0aW9uLWlub3V0Ij4NCisgICAgICAgICAgICA8Ym9keT5JbmRpY2F0ZXMgdGhhdCB0aGUgZmxvdyBwcm9wZXJ0eSBpcyBib3RoIGFuIGlucHV0IGFuZCBhbiBvdXRwdXQgb2YgdGhlIG93bmluZyBibG9jay48L2JvZHk+DQorICAgICAgICAgIDwvb3duZWRDb21tZW50Pg0KKyAgICAgICAgPC9vd25lZExpdGVyYWw+DQorICAgICAgPC9wYWNrYWdlZEVsZW1lbnQ+DQorICAgICAgPHBhY2thZ2VkRWxlbWVudCB4bWk6dHlwZT0idW1sOlN0ZXJlb3R5cGUiIHhtaTppZD0iU3lzTUwtUG9ydHNfdTAwMjZGbG93cy1GdWxsUG9ydCIgbmFtZT0iRnVsbFBvcnQiPg0KKyAgICAgICAgPG93bmVkQXR0cmlidXRlIHhtaTppZD0iU3lzTUwtUG9ydHNfdTAwMjZGbG93cy1GdWxsUG9ydC1iYXNlX1BvcnQiIG5hbWU9ImJhc2VfUG9ydCIgdmlzaWJpbGl0eT0icHVibGljIiBhc3NvY2lhdGlvbj0iU3lzTUwtUG9ydHNfdTAwMjZGbG93cy1FX2V4dGVuc2lvbl9GdWxsUG9ydF9iYXNlX1BvcnQiPg0KKyAgICAgICAgICA8dHlwZSB4bWk6dHlwZT0idW1sOkNsYXNzIiBocmVmPSJwYXRobWFwOi8vVU1MX01FVEFNT0RFTFMvVU1MLm1ldGFtb2RlbC51bWwjUG9ydCIvPg0KKyAgICAgICAgICA8bG93ZXJWYWx1ZSB4bWk6dHlwZT0idW1sOkxpdGVyYWxJbnRlZ2VyIiB4bWk6aWQ9IlN5c01MLVBvcnRzX3UwMDI2Rmxvd3MtRnVsbFBvcnQtYmFzZV9Qb3J0LWxvd2VyVmFsdWUiIG5hbWU9IiIvPg0KKyAgICAgICAgICA8dXBwZXJWYWx1ZSB4bWk6dHlwZT0idW1sOkxpdGVyYWxVbmxpbWl0ZWROYXR1cmFsIiB4bWk6aWQ9IlN5c01MLVBvcnRzX3UwMDI2Rmxvd3MtRnVsbFBvcnQtYmFzZV9Qb3J0LXVwcGVyVmFsdWUiIG5hbWU9IiIgdmFsdWU9IjEiLz4NCisgICAgICAgIDwvb3duZWRBdHRyaWJ1dGU+DQorICAgICAgPC9wYWNrYWdlZEVsZW1lbnQ+DQorICAgICAgPHBhY2thZ2VkRWxlbWVudCB4bWk6dHlwZT0idW1sOkV4dGVuc2lvbiIgeG1pOmlkPSJTeXNNTC1Qb3J0c191MDAyNkZsb3dzLUVfZXh0ZW5zaW9uX0Z1bGxQb3J0X2Jhc2VfUG9ydCIgbmFtZT0iRV9leHRlbnNpb25fRnVsbFBvcnRfYmFzZV9Qb3J0IiBtZW1iZXJFbmQ9IlN5c01MLVBvcnRzX3UwMDI2Rmxvd3MtRnVsbFBvcnQtYmFzZV9Qb3J0IFN5c01MLVBvcnRzX3UwMDI2Rmxvd3MtRV9leHRlbnNpb25fRnVsbFBvcnRfYmFzZV9Qb3J0LWV4dGVuc2lvbl9GdWxsUG9ydCIgbmF2aWdhYmxlT3duZWRFbmQ9IlN5c01MLVBvcnRzX3UwMDI2Rmxvd3MtRV9leHRlbnNpb25fRnVsbFBvcnRfYmFzZV9Qb3J0LWV4dGVuc2lvbl9GdWxsUG9ydCI+DQorICAgICAgICA8b3duZWRFbmQgeG1pOnR5cGU9InVtbDpFeHRlbnNpb25FbmQiIHhtaTppZD0iU3lzTUwtUG9ydHNfdTAwMjZGbG93cy1FX2V4dGVuc2lvbl9GdWxsUG9ydF9iYXNlX1BvcnQtZXh0ZW5zaW9uX0Z1bGxQb3J0IiBuYW1lPSJleHRlbnNpb25fRnVsbFBvcnQiIHZpc2liaWxpdHk9InB1YmxpYyIgdHlwZT0iU3lzTUwtUG9ydHNfdTAwMjZGbG93cy1GdWxsUG9ydCIgYWdncmVnYXRpb249ImNvbXBvc2l0ZSIgYXNzb2NpYXRpb249IlN5c01MLVBvcnRzX3UwMDI2Rmxvd3MtRV9leHRlbnNpb25fRnVsbFBvcnRfYmFzZV9Qb3J0Ij4NCisgICAgICAgICAgPGxvd2VyVmFsdWUgeG1pOnR5cGU9InVtbDpMaXRlcmFsSW50ZWdlciIgeG1pOmlkPSJTeXNNTC1Qb3J0c191MDAyNkZsb3dzLUVfZXh0ZW5zaW9uX0Z1bGxQb3J0X2Jhc2VfUG9ydC1leHRlbnNpb25fRnVsbFBvcnQtbG93ZXJWYWx1ZSIgbmFtZT0iIi8+DQorICAgICAgICAgIDx1cHBlclZhbHVlIHhtaTp0eXBlPSJ1bWw6TGl0ZXJhbFVubGltaXRlZE5hdHVyYWwiIHhtaTppZD0iU3lzTUwtUG9ydHNfdTAwMjZGbG93cy1FX2V4dGVuc2lvbl9GdWxsUG9ydF9iYXNlX1BvcnQtZXh0ZW5zaW9uX0Z1bGxQb3J0LXVwcGVyVmFsdWUiIG5hbWU9IiIgdmFsdWU9IjEiLz4NCisgICAgICAgIDwvb3duZWRFbmQ+DQorICAgICAgPC9wYWNrYWdlZEVsZW1lbnQ+DQorICAgICAgPHBhY2thZ2VkRWxlbWVudCB4bWk6dHlwZT0idW1sOlN0ZXJlb3R5cGUiIHhtaTppZD0iU3lzTUwtUG9ydHNfdTAwMjZGbG93cy1JbnRlcmZhY2VCbG9jayIgbmFtZT0iSW50ZXJmYWNlQmxvY2siPg0KKyAgICAgICAgPGdlbmVyYWxpemF0aW9uIHhtaTppZD0iU3lzTUwtUG9ydHNfdTAwMjZGbG93cy1JbnRlcmZhY2VCbG9jay1nZW5lcmFsaXphdGlvbiIgZ2VuZXJhbD0iU3lzTUwtQmxvY2tzLUJsb2NrIi8+DQorICAgICAgPC9wYWNrYWdlZEVsZW1lbnQ+DQorICAgICAgPHBhY2thZ2VkRWxlbWVudCB4bWk6dHlwZT0idW1sOlN0ZXJlb3R5cGUiIHhtaTppZD0iU3lzTUwtUG9ydHNfdTAwMjZGbG93cy1Qcm94eVBvcnQiIG5hbWU9IlByb3h5UG9ydCI+DQorICAgICAgICA8b3duZWRBdHRyaWJ1dGUgeG1pOmlkPSJTeXNNTC1Qb3J0c191MDAyNkZsb3dzLVByb3h5UG9ydC1iYXNlX1BvcnQiIG5hbWU9ImJhc2VfUG9ydCIgdmlzaWJpbGl0eT0icHVibGljIiBhc3NvY2lhdGlvbj0iU3lzTUwtUG9ydHNfdTAwMjZGbG93cy1FX2V4dGVuc2lvbl9Qcm94eVBvcnRfYmFzZV9Qb3J0Ij4NCisgICAgICAgICAgPHR5cGUgeG1pOnR5cGU9InVtbDpDbGFzcyIgaHJlZj0icGF0aG1hcDovL1VNTF9NRVRBTU9ERUxTL1VNTC5tZXRhbW9kZWwudW1sI1BvcnQiLz4NCisgICAgICAgICAgPGxvd2VyVmFsdWUgeG1pOnR5cGU9InVtbDpMaXRlcmFsSW50ZWdlciIgeG1pOmlkPSJTeXNNTC1Qb3J0c191MDAyNkZsb3dzLVByb3h5UG9ydC1iYXNlX1BvcnQtbG93ZXJWYWx1ZSIgbmFtZT0iIi8+DQorICAgICAgICAgIDx1cHBlclZhbHVlIHhtaTp0eXBlPSJ1bWw6TGl0ZXJhbFVubGltaXRlZE5hdHVyYWwiIHhtaTppZD0iU3lzTUwtUG9ydHNfdTAwMjZGbG93cy1Qcm94eVBvcnQtYmFzZV9Qb3J0LXVwcGVyVmFsdWUiIG5hbWU9IiIgdmFsdWU9IjEiLz4NCisgICAgICAgIDwvb3duZWRBdHRyaWJ1dGU+DQorICAgICAgPC9wYWNrYWdlZEVsZW1lbnQ+DQorICAgICAgPHBhY2thZ2VkRWxlbWVudCB4bWk6dHlwZT0idW1sOkV4dGVuc2lvbiIgeG1pOmlkPSJTeXNNTC1Qb3J0c191MDAyNkZsb3dzLUVfZXh0ZW5zaW9uX1Byb3h5UG9ydF9iYXNlX1BvcnQiIG5hbWU9IkVfZXh0ZW5zaW9uX1Byb3h5UG9ydF9iYXNlX1BvcnQiIG1lbWJlckVuZD0iU3lzTUwtUG9ydHNfdTAwMjZGbG93cy1Qcm94eVBvcnQtYmFzZV9Qb3J0IFN5c01MLVBvcnRzX3UwMDI2Rmxvd3MtRV9leHRlbnNpb25fUHJveHlQb3J0X2Jhc2VfUG9ydC1leHRlbnNpb25fUHJveFBvcnQiIG5hdmlnYWJsZU93bmVkRW5kPSJTeXNNTC1Qb3J0c191MDAyNkZsb3dzLUVfZXh0ZW5zaW9uX1Byb3h5UG9ydF9iYXNlX1BvcnQtZXh0ZW5zaW9uX1Byb3hQb3J0Ij4NCisgICAgICAgIDxvd25lZEVuZCB4bWk6dHlwZT0idW1sOkV4dGVuc2lvbkVuZCIgeG1pOmlkPSJTeXNNTC1Qb3J0c191MDAyNkZsb3dzLUVfZXh0ZW5zaW9uX1Byb3h5UG9ydF9iYXNlX1BvcnQtZXh0ZW5zaW9uX1Byb3hQb3J0IiBuYW1lPSJleHRlbnNpb25fUHJveFBvcnQiIHZpc2liaWxpdHk9InB1YmxpYyIgdHlwZT0iU3lzTUwtUG9ydHNfdTAwMjZGbG93cy1Qcm94eVBvcnQiIGFnZ3JlZ2F0aW9uPSJjb21wb3NpdGUiIGFzc29jaWF0aW9uPSJTeXNNTC1Qb3J0c191MDAyNkZsb3dzLUVfZXh0ZW5zaW9uX1Byb3h5UG9ydF9iYXNlX1BvcnQiPg0KKyAgICAgICAgICA8bG93ZXJWYWx1ZSB4bWk6dHlwZT0idW1sOkxpdGVyYWxJbnRlZ2VyIiB4bWk6aWQ9IlN5c01MLVBvcnRzX3UwMDI2Rmxvd3MtRV9leHRlbnNpb25fUHJveHlQb3J0X2Jhc2VfUG9ydC1leHRlbnNpb25fUHJveFBvcnQtbG93ZXJWYWx1ZSIgbmFtZT0iIi8+DQorICAgICAgICAgIDx1cHBlclZhbHVlIHhtaTp0eXBlPSJ1bWw6TGl0ZXJhbFVubGltaXRlZE5hdHVyYWwiIHhtaTppZD0iU3lzTUwtUG9ydHNfdTAwMjZGbG93cy1FX2V4dGVuc2lvbl9Qcm94eVBvcnRfYmFzZV9Qb3J0LWV4dGVuc2lvbl9Qcm94UG9ydC11cHBlclZhbHVlIiBuYW1lPSIiIHZhbHVlPSIxIi8+DQorICAgICAgICA8L293bmVkRW5kPg0KKyAgICAgIDwvcGFja2FnZWRFbGVtZW50Pg0KKyAgICAgIDxwYWNrYWdlZEVsZW1lbnQgeG1pOnR5cGU9InVtbDpFbnVtZXJhdGlvbiIgeG1pOmlkPSJTeXNNTC1Qb3J0c191MDAyNkZsb3dzLUZlYXR1cmVEaXJlY3Rpb24iIG5hbWU9IkZlYXR1cmVEaXJlY3Rpb24iPg0KKyAgICAgICAgPG93bmVkTGl0ZXJhbCB4bWk6aWQ9IlN5c01MLVBvcnRzX3UwMDI2Rmxvd3MtRmVhdHVyZURpcmVjdGlvbi1wcm92aWRlZCIgbmFtZT0icHJvdmlkZWQiLz4NCisgICAgICAgIDxvd25lZExpdGVyYWwgeG1pOmlkPSJTeXNNTC1Qb3J0c191MDAyNkZsb3dzLUZlYXR1cmVEaXJlY3Rpb24tcmVxdWlyZWQiIG5hbWU9InJlcXVpcmVkIi8+DQorICAgICAgICA8b3duZWRMaXRlcmFsIHhtaTppZD0iU3lzTUwtUG9ydHNfdTAwMjZGbG93cy1GZWF0dXJlRGlyZWN0aW9uLXByb3ZpZGVkUmVxdWlyZWQiIG5hbWU9InByb3ZpZGVkUmVxdWlyZWQiLz4NCisgICAgICA8L3BhY2thZ2VkRWxlbWVudD4NCisgICAgICA8cGFja2FnZWRFbGVtZW50IHhtaTp0eXBlPSJ1bWw6U3RlcmVvdHlwZSIgeG1pOmlkPSJTeXNNTC1Qb3J0c191MDAyNkZsb3dzLUFjY2VwdENoYW5nZVN0cnVjdHVyYWxGZWF0dXJlRXZlbnRBY3Rpb24iIG5hbWU9IkFjY2VwdENoYW5nZVN0cnVjdHVyYWxGZWF0dXJlRXZlbnRBY3Rpb24iPg0KKyAgICAgICAgPG93bmVkQXR0cmlidXRlIHhtaTppZD0iU3lzTUwtUG9ydHNfdTAwMjZGbG93cy1BY2NlcHRDaGFuZ2VTdHJ1Y3R1cmFsRmVhdHVyZUV2ZW50QWN0aW9uLWJhc2VfQWNjZXB0RXZlbnRBY3Rpb24iIG5hbWU9ImJhc2VfQWNjZXB0RXZlbnRBY3Rpb24iIHZpc2liaWxpdHk9InB1YmxpYyIgYXNzb2NpYXRpb249IlN5c01MLVBvcnRzX3UwMDI2Rmxvd3MtRV9leHRlbnNpb25fQWNjZXB0Q2hhbmdlU3RydWN0dXJhbEZlYXR1cmVFdmVudEFjdGlvbl9iYXNlX0FjY2VwdEV2ZW50QWN0aW9uIj4NCisgICAgICAgICAgPHR5cGUgeG1pOnR5cGU9InVtbDpDbGFzcyIgaHJlZj0icGF0aG1hcDovL1VNTF9NRVRBTU9ERUxTL1VNTC5tZXRhbW9kZWwudW1sI0FjY2VwdEV2ZW50QWN0aW9uIi8+DQorICAgICAgICAgIDxsb3dlclZhbHVlIHhtaTp0eXBlPSJ1bWw6TGl0ZXJhbEludGVnZXIiIHhtaTppZD0iU3lzTUwtUG9ydHNfdTAwMjZGbG93cy1BY2NlcHRDaGFuZ2VTdHJ1Y3R1cmFsRmVhdHVyZUV2ZW50QWN0aW9uLWJhc2VfQWNjZXB0RXZlbnRBY3Rpb24tbG93ZXJWYWx1ZSIgbmFtZT0iIi8+DQorICAgICAgICAgIDx1cHBlclZhbHVlIHhtaTp0eXBlPSJ1bWw6TGl0ZXJhbFVubGltaXRlZE5hdHVyYWwiIHhtaTppZD0iU3lzTUwtUG9ydHNfdTAwMjZGbG93cy1BY2NlcHRDaGFuZ2VTdHJ1Y3R1cmFsRmVhdHVyZUV2ZW50QWN0aW9uLWJhc2VfQWNjZXB0RXZlbnRBY3Rpb24tdXBwZXJWYWx1ZSIgbmFtZT0iIiB2YWx1ZT0iMSIvPg0KKyAgICAgICAgPC9vd25lZEF0dHJpYnV0ZT4NCisgICAgICA8L3BhY2thZ2VkRWxlbWVudD4NCisgICAgICA8cGFja2FnZWRFbGVtZW50IHhtaTp0eXBlPSJ1bWw6RXh0ZW5zaW9uIiB4bWk6aWQ9IlN5c01MLVBvcnRzX3UwMDI2Rmxvd3MtRV9leHRlbnNpb25fQWNjZXB0Q2hhbmdlU3RydWN0dXJhbEZlYXR1cmVFdmVudEFjdGlvbl9iYXNlX0FjY2VwdEV2ZW50QWN0aW9uIiBuYW1lPSJFX2V4dGVuc2lvbl9BY2NlcHRDaGFuZ2VTdHJ1Y3R1cmFsRmVhdHVyZUV2ZW50QWN0aW9uX2Jhc2VfQWNjZXB0RXZlbnRBY3Rpb24iIG1lbWJlckVuZD0iU3lzTUwtUG9ydHNfdTAwMjZGbG93cy1BY2NlcHRDaGFuZ2VTdHJ1Y3R1cmFsRmVhdHVyZUV2ZW50QWN0aW9uLWJhc2VfQWNjZXB0RXZlbnRBY3Rpb24gU3lzTUwtUG9ydHNfdTAwMjZGbG93cy1FX2V4dGVuc2lvbl9BY2NlcHRDaGFuZ2VTdHJ1Y3R1cmFsRmVhdHVyZUV2ZW50QWN0aW9uX2Jhc2VfQWNjZXB0RXZlbnRBY3Rpb24tZXh0ZW5zaW9uX0FjY2VwdENoYW5nZVN0cnVjdHVyYWxGZWF0dXJlRXZlbnRBY3Rpb24iIG5hdmlnYWJsZU93bmVkRW5kPSJTeXNNTC1Qb3J0c191MDAyNkZsb3dzLUVfZXh0ZW5zaW9uX0FjY2VwdENoYW5nZVN0cnVjdHVyYWxGZWF0dXJlRXZlbnRBY3Rpb25fYmFzZV9BY2NlcHRFdmVudEFjdGlvbi1leHRlbnNpb25fQWNjZXB0Q2hhbmdlU3RydWN0dXJhbEZlYXR1cmVFdmVudEFjdGlvbiI+DQorICAgICAgICA8b3duZWRFbmQgeG1pOnR5cGU9InVtbDpFeHRlbnNpb25FbmQiIHhtaTppZD0iU3lzTUwtUG9ydHNfdTAwMjZGbG93cy1FX2V4dGVuc2lvbl9BY2NlcHRDaGFuZ2VTdHJ1Y3R1cmFsRmVhdHVyZUV2ZW50QWN0aW9uX2Jhc2VfQWNjZXB0RXZlbnRBY3Rpb24tZXh0ZW5zaW9uX0FjY2VwdENoYW5nZVN0cnVjdHVyYWxGZWF0dXJlRXZlbnRBY3Rpb24iIG5hbWU9ImV4dGVuc2lvbl9BY2NlcHRDaGFuZ2VTdHJ1Y3R1cmFsRmVhdHVyZUV2ZW50QWN0aW9uIiB2aXNpYmlsaXR5PSJwdWJsaWMiIHR5cGU9IlN5c01MLVBvcnRzX3UwMDI2Rmxvd3MtQWNjZXB0Q2hhbmdlU3RydWN0dXJhbEZlYXR1cmVFdmVudEFjdGlvbiIgYWdncmVnYXRpb249ImNvbXBvc2l0ZSIgYXNzb2NpYXRpb249IlN5c01MLVBvcnRzX3UwMDI2Rmxvd3MtRV9leHRlbnNpb25fQWNjZXB0Q2hhbmdlU3RydWN0dXJhbEZlYXR1cmVFdmVudEFjdGlvbl9iYXNlX0FjY2VwdEV2ZW50QWN0aW9uIj4NCisgICAgICAgICAgPGxvd2VyVmFsdWUgeG1pOnR5cGU9InVtbDpMaXRlcmFsSW50ZWdlciIgeG1pOmlkPSJTeXNNTC1Qb3J0c191MDAyNkZsb3dzLUVfZXh0ZW5zaW9uX0FjY2VwdENoYW5nZVN0cnVjdHVyYWxGZWF0dXJlRXZlbnRBY3Rpb25fYmFzZV9BY2NlcHRFdmVudEFjdGlvbi1leHRlbnNpb25fQWNjZXB0Q2hhbmdlU3RydWN0dXJhbEZlYXR1cmVFdmVudEFjdGlvbi1sb3dlclZhbHVlIiBuYW1lPSIiLz4NCisgICAgICAgICAgPHVwcGVyVmFsdWUgeG1pOnR5cGU9InVtbDpMaXRlcmFsVW5saW1pdGVkTmF0dXJhbCIgeG1pOmlkPSJTeXNNTC1Qb3J0c191MDAyNkZsb3dzLUVfZXh0ZW5zaW9uX0FjY2VwdENoYW5nZVN0cnVjdHVyYWxGZWF0dXJlRXZlbnRBY3Rpb25fYmFzZV9BY2NlcHRFdmVudEFjdGlvbi1leHRlbnNpb25fQWNjZXB0Q2hhbmdlU3RydWN0dXJhbEZlYXR1cmVFdmVudEFjdGlvbi11cHBlclZhbHVlIiBuYW1lPSIiIHZhbHVlPSIxIi8+DQorICAgICAgICA8L293bmVkRW5kPg0KKyAgICAgIDwvcGFja2FnZWRFbGVtZW50Pg0KKyAgICAgIDxwYWNrYWdlZEVsZW1lbnQgeG1pOnR5cGU9InVtbDpTdGVyZW90eXBlIiB4bWk6aWQ9IlN5c01MLVBvcnRzX3UwMDI2Rmxvd3MtQ2hhbmdlU3RydWN0dXJhbEZlYXR1cmVFdmVudCIgbmFtZT0iQ2hhbmdlU3RydWN0dXJhbEZlYXR1cmVFdmVudCI+DQorICAgICAgICA8b3duZWRBdHRyaWJ1dGUgeG1pOmlkPSJTeXNNTC1Qb3J0c191MDAyNkZsb3dzLUNoYW5nZVN0cnVjdHVyYWxGZWF0dXJlRXZlbnQtYmFzZV9DaGFuZ2VFdmVudCIgbmFtZT0iYmFzZV9DaGFuZ2VFdmVudCIgdmlzaWJpbGl0eT0icHVibGljIiBhc3NvY2lhdGlvbj0iU3lzTUwtUG9ydHNfdTAwMjZGbG93cy1FX2V4dGVuc2lvbl9DaGFuZ2VTdHJ1Y3R1cmFsRmVhdHVyZUV2ZW50X2Jhc2VfQ2hhbmdlRXZlbnQiPg0KKyAgICAgICAgICA8dHlwZSB4bWk6dHlwZT0idW1sOkNsYXNzIiBocmVmPSJwYXRobWFwOi8vVU1MX01FVEFNT0RFTFMvVU1MLm1ldGFtb2RlbC51bWwjQ2hhbmdlRXZlbnQiLz4NCisgICAgICAgICAgPGxvd2VyVmFsdWUgeG1pOnR5cGU9InVtbDpMaXRlcmFsSW50ZWdlciIgeG1pOmlkPSJTeXNNTC1Qb3J0c191MDAyNkZsb3dzLUNoYW5nZVN0cnVjdHVyYWxGZWF0dXJlRXZlbnQtYmFzZV9DaGFuZ2VFdmVudC1sb3dlclZhbHVlIiBuYW1lPSIiLz4NCisgICAgICAgICAgPHVwcGVyVmFsdWUgeG1pOnR5cGU9InVtbDpMaXRlcmFsVW5saW1pdGVkTmF0dXJhbCIgeG1pOmlkPSJTeXNNTC1Qb3J0c191MDAyNkZsb3dzLUNoYW5nZVN0cnVjdHVyYWxGZWF0dXJlRXZlbnQtYmFzZV9DaGFuZ2VFdmVudC11cHBlclZhbHVlIiBuYW1lPSIiIHZhbHVlPSIxIi8+DQorICAgICAgICA8L293bmVkQXR0cmlidXRlPg0KKyAgICAgICAgPG93bmVkQXR0cmlidXRlIHhtaTppZD0iU3lzTUwtUG9ydHNfdTAwMjZGbG93cy1DaGFuZ2VTdHJ1Y3R1cmFsRmVhdHVyZUV2ZW50LXN0cnVjdHVyYWxGZWF0dXJlIiBuYW1lPSJzdHJ1Y3R1cmFsRmVhdHVyZSIgdmlzaWJpbGl0eT0icHVibGljIiBhc3NvY2lhdGlvbj0iU3lzTUwtUG9ydHNfdTAwMjZGbG93cy1BX2NoYW5nZVN0cnVjdHVyYWxGZWF0dXJlRXZlbnRfc3RydWN0dXJhbEZlYXR1cmUiPg0KKyAgICAgICAgICA8dHlwZSB4bWk6dHlwZT0idW1sOkNsYXNzIiBocmVmPSJwYXRobWFwOi8vVU1MX01FVEFNT0RFTFMvVU1MLm1ldGFtb2RlbC51bWwjU3RydWN0dXJhbEZlYXR1cmUiLz4NCisgICAgICAgICAgPGxvd2VyVmFsdWUgeG1pOnR5cGU9InVtbDpMaXRlcmFsSW50ZWdlciIgeG1pOmlkPSJTeXNNTC1Qb3J0c191MDAyNkZsb3dzLUNoYW5nZVN0cnVjdHVyYWxGZWF0dXJlRXZlbnQtc3RydWN0dXJhbEZlYXR1cmUtbG93ZXJWYWx1ZSIgbmFtZT0iIiB2YWx1ZT0iMSIvPg0KKyAgICAgICAgICA8dXBwZXJWYWx1ZSB4bWk6dHlwZT0idW1sOkxpdGVyYWxVbmxpbWl0ZWROYXR1cmFsIiB4bWk6aWQ9IlN5c01MLVBvcnRzX3UwMDI2Rmxvd3MtQ2hhbmdlU3RydWN0dXJhbEZlYXR1cmVFdmVudC1zdHJ1Y3R1cmFsRmVhdHVyZS11cHBlclZhbHVlIiBuYW1lPSIiIHZhbHVlPSIxIi8+DQorICAgICAgICA8L293bmVkQXR0cmlidXRlPg0KKyAgICAgIDwvcGFja2FnZWRFbGVtZW50Pg0KKyAgICAgIDxwYWNrYWdlZEVsZW1lbnQgeG1pOnR5cGU9InVtbDpFeHRlbnNpb24iIHhtaTppZD0iU3lzTUwtUG9ydHNfdTAwMjZGbG93cy1FX2V4dGVuc2lvbl9DaGFuZ2VTdHJ1Y3R1cmFsRmVhdHVyZUV2ZW50X2Jhc2VfQ2hhbmdlRXZlbnQiIG5hbWU9IkVfZXh0ZW5zaW9uX0NoYW5nZVN0cnVjdHVyYWxGZWF0dXJlRXZlbnRfYmFzZV9DaGFuZ2VFdmVudCIgbWVtYmVyRW5kPSJTeXNNTC1Qb3J0c191MDAyNkZsb3dzLUNoYW5nZVN0cnVjdHVyYWxGZWF0dXJlRXZlbnQtYmFzZV9DaGFuZ2VFdmVudCBTeXNNTC1Qb3J0c191MDAyNkZsb3dzLUVfZXh0ZW5zaW9uX0NoYW5nZVN0cnVjdHVyYWxGZWF0dXJlRXZlbnRfYmFzZV9DaGFuZ2VFdmVudC1leHRlbnNpb25fQ2hhbmdlU3RydWN0dXJhbEZlYXR1cmVFdmVudCIgbmF2aWdhYmxlT3duZWRFbmQ9IlN5c01MLVBvcnRzX3UwMDI2Rmxvd3MtRV9leHRlbnNpb25fQ2hhbmdlU3RydWN0dXJhbEZlYXR1cmVFdmVudF9iYXNlX0NoYW5nZUV2ZW50LWV4dGVuc2lvbl9DaGFuZ2VTdHJ1Y3R1cmFsRmVhdHVyZUV2ZW50Ij4NCisgICAgICAgIDxvd25lZEVuZCB4bWk6dHlwZT0idW1sOkV4dGVuc2lvbkVuZCIgeG1pOmlkPSJTeXNNTC1Qb3J0c191MDAyNkZsb3dzLUVfZXh0ZW5zaW9uX0NoYW5nZVN0cnVjdHVyYWxGZWF0dXJlRXZlbnRfYmFzZV9DaGFuZ2VFdmVudC1leHRlbnNpb25fQ2hhbmdlU3RydWN0dXJhbEZlYXR1cmVFdmVudCIgbmFtZT0iZXh0ZW5zaW9uX0NoYW5nZVN0cnVjdHVyYWxGZWF0dXJlRXZlbnQiIHZpc2liaWxpdHk9InB1YmxpYyIgdHlwZT0iU3lzTUwtUG9ydHNfdTAwMjZGbG93cy1DaGFuZ2VTdHJ1Y3R1cmFsRmVhdHVyZUV2ZW50IiBhZ2dyZWdhdGlvbj0iY29tcG9zaXRlIiBhc3NvY2lhdGlvbj0iU3lzTUwtUG9ydHNfdTAwMjZGbG93cy1FX2V4dGVuc2lvbl9DaGFuZ2VTdHJ1Y3R1cmFsRmVhdHVyZUV2ZW50X2Jhc2VfQ2hhbmdlRXZlbnQiPg0KKyAgICAgICAgICA8bG93ZXJWYWx1ZSB4bWk6dHlwZT0idW1sOkxpdGVyYWxJbnRlZ2VyIiB4bWk6aWQ9IlN5c01MLVBvcnRzX3UwMDI2Rmxvd3MtRV9leHRlbnNpb25fQ2hhbmdlU3RydWN0dXJhbEZlYXR1cmVFdmVudF9iYXNlX0NoYW5nZUV2ZW50LWV4dGVuc2lvbl9DaGFuZ2VTdHJ1Y3R1cmFsRmVhdHVyZUV2ZW50LWxvd2VyVmFsdWUiIG5hbWU9IiIvPg0KKyAgICAgICAgICA8dXBwZXJWYWx1ZSB4bWk6dHlwZT0idW1sOkxpdGVyYWxVbmxpbWl0ZWROYXR1cmFsIiB4bWk6aWQ9IlN5c01MLVBvcnRzX3UwMDI2Rmxvd3MtRV9leHRlbnNpb25fQ2hhbmdlU3RydWN0dXJhbEZlYXR1cmVFdmVudF9iYXNlX0NoYW5nZUV2ZW50LWV4dGVuc2lvbl9DaGFuZ2VTdHJ1Y3R1cmFsRmVhdHVyZUV2ZW50LXVwcGVyVmFsdWUiIG5hbWU9IiIgdmFsdWU9IjEiLz4NCisgICAgICAgIDwvb3duZWRFbmQ+DQorICAgICAgPC9wYWNrYWdlZEVsZW1lbnQ+DQorICAgICAgPHBhY2thZ2VkRWxlbWVudCB4bWk6dHlwZT0idW1sOlN0ZXJlb3R5cGUiIHhtaTppZD0iU3lzTUwtUG9ydHNfdTAwMjZGbG93cy1EaXJlY3RlZEZlYXR1cmUiIG5hbWU9IkRpcmVjdGVkRmVhdHVyZSI+DQorICAgICAgICA8b3duZWRBdHRyaWJ1dGUgeG1pOmlkPSJTeXNNTC1Qb3J0c191MDAyNkZsb3dzLURpcmVjdGVkRmVhdHVyZS1iYXNlX0ZlYXR1cmUiIG5hbWU9ImJhc2VfRmVhdHVyZSIgdmlzaWJpbGl0eT0icHVibGljIiBhc3NvY2lhdGlvbj0iU3lzTUwtUG9ydHNfdTAwMjZGbG93cy1FX2V4dGVuc2lvbl9EaXJlY3RlZEZlYXR1cmVfYmFzZV9GZWF0dXJlIj4NCisgICAgICAgICAgPHR5cGUgeG1pOnR5cGU9InVtbDpDbGFzcyIgaHJlZj0icGF0aG1hcDovL1VNTF9NRVRBTU9ERUxTL1VNTC5tZXRhbW9kZWwudW1sI0ZlYXR1cmUiLz4NCisgICAgICAgICAgPGxvd2VyVmFsdWUgeG1pOnR5cGU9InVtbDpMaXRlcmFsSW50ZWdlciIgeG1pOmlkPSJTeXNNTC1Qb3J0c191MDAyNkZsb3dzLURpcmVjdGVkRmVhdHVyZS1iYXNlX0ZlYXR1cmUtbG93ZXJWYWx1ZSIgbmFtZT0iIi8+DQorICAgICAgICAgIDx1cHBlclZhbHVlIHhtaTp0eXBlPSJ1bWw6TGl0ZXJhbFVubGltaXRlZE5hdHVyYWwiIHhtaTppZD0iU3lzTUwtUG9ydHNfdTAwMjZGbG93cy1EaXJlY3RlZEZlYXR1cmUtYmFzZV9GZWF0dXJlLXVwcGVyVmFsdWUiIG5hbWU9IiIgdmFsdWU9IjEiLz4NCisgICAgICAgIDwvb3duZWRBdHRyaWJ1dGU+DQorICAgICAgICA8b3duZWRBdHRyaWJ1dGUgeG1pOmlkPSJTeXNNTC1Qb3J0c191MDAyNkZsb3dzLURpcmVjdGVkRmVhdHVyZS1mZWF0dXJlRGlyZWN0aW9uIiBuYW1lPSJmZWF0dXJlRGlyZWN0aW9uIiB2aXNpYmlsaXR5PSJwdWJsaWMiIHR5cGU9IlN5c01MLVBvcnRzX3UwMDI2Rmxvd3MtRmVhdHVyZURpcmVjdGlvbiIvPg0KKyAgICAgIDwvcGFja2FnZWRFbGVtZW50Pg0KKyAgICAgIDxwYWNrYWdlZEVsZW1lbnQgeG1pOnR5cGU9InVtbDpFeHRlbnNpb24iIHhtaTppZD0iU3lzTUwtUG9ydHNfdTAwMjZGbG93cy1FX2V4dGVuc2lvbl9EaXJlY3RlZEZlYXR1cmVfYmFzZV9GZWF0dXJlIiBuYW1lPSJFX2V4dGVuc2lvbl9EaXJlY3RlZEZlYXR1cmVfYmFzZV9GZWF0dXJlIiBtZW1iZXJFbmQ9IlN5c01MLVBvcnRzX3UwMDI2Rmxvd3MtRGlyZWN0ZWRGZWF0dXJlLWJhc2VfRmVhdHVyZSBTeXNNTC1Qb3J0c191MDAyNkZsb3dzLUVfZXh0ZW5zaW9uX0RpcmVjdGVkRmVhdHVyZV9iYXNlX0ZlYXR1cmUtZXh0ZW5zaW9uX0RpcmVjdGVkRmVhdHVyZSIgbmF2aWdhYmxlT3duZWRFbmQ9IlN5c01MLVBvcnRzX3UwMDI2Rmxvd3MtRV9leHRlbnNpb25fRGlyZWN0ZWRGZWF0dXJlX2Jhc2VfRmVhdHVyZS1leHRlbnNpb25fRGlyZWN0ZWRGZWF0dXJlIj4NCisgICAgICAgIDxvd25lZEVuZCB4bWk6dHlwZT0idW1sOkV4dGVuc2lvbkVuZCIgeG1pOmlkPSJTeXNNTC1Qb3J0c191MDAyNkZsb3dzLUVfZXh0ZW5zaW9uX0RpcmVjdGVkRmVhdHVyZV9iYXNlX0ZlYXR1cmUtZXh0ZW5zaW9uX0RpcmVjdGVkRmVhdHVyZSIgbmFtZT0iZXh0ZW5zaW9uX0RpcmVjdGVkRmVhdHVyZSIgdmlzaWJpbGl0eT0icHVibGljIiB0eXBlPSJTeXNNTC1Qb3J0c191MDAyNkZsb3dzLURpcmVjdGVkRmVhdHVyZSIgYWdncmVnYXRpb249ImNvbXBvc2l0ZSIgYXNzb2NpYXRpb249IlN5c01MLVBvcnRzX3UwMDI2Rmxvd3MtRV9leHRlbnNpb25fRGlyZWN0ZWRGZWF0dXJlX2Jhc2VfRmVhdHVyZSI+DQorICAgICAgICAgIDxsb3dlclZhbHVlIHhtaTp0eXBlPSJ1bWw6TGl0ZXJhbEludGVnZXIiIHhtaTppZD0iU3lzTUwtUG9ydHNfdTAwMjZGbG93cy1FX2V4dGVuc2lvbl9EaXJlY3RlZEZlYXR1cmVfYmFzZV9GZWF0dXJlLWV4dGVuc2lvbl9EaXJlY3RlZEZlYXR1cmUtbG93ZXJWYWx1ZSIgbmFtZT0iIi8+DQorICAgICAgICAgIDx1cHBlclZhbHVlIHhtaTp0eXBlPSJ1bWw6TGl0ZXJhbFVubGltaXRlZE5hdHVyYWwiIHhtaTppZD0iU3lzTUwtUG9ydHNfdTAwMjZGbG93cy1FX2V4dGVuc2lvbl9EaXJlY3RlZEZlYXR1cmVfYmFzZV9GZWF0dXJlLWV4dGVuc2lvbl9EaXJlY3RlZEZlYXR1cmUtdXBwZXJWYWx1ZSIgbmFtZT0iIiB2YWx1ZT0iMSIvPg0KKyAgICAgICAgPC9vd25lZEVuZD4NCisgICAgICA8L3BhY2thZ2VkRWxlbWVudD4NCisgICAgICA8cGFja2FnZWRFbGVtZW50IHhtaTp0eXBlPSJ1bWw6U3RlcmVvdHlwZSIgeG1pOmlkPSJTeXNNTC1Qb3J0c191MDAyNkZsb3dzLUludm9jYXRpb25Pbk5lc3RlZFBvcnRBY3Rpb24iIG5hbWU9Ikludm9jYXRpb25Pbk5lc3RlZFBvcnRBY3Rpb24iPg0KKyAgICAgICAgPGdlbmVyYWxpemF0aW9uIHhtaTppZD0iU3lzTUwtUG9ydHNfdTAwMjZGbG93cy1JbnZvY2F0aW9uT25OZXN0ZWRQb3J0QWN0aW9uLWdlbmVyYWxpemF0aW9uIiBnZW5lcmFsPSJTeXNNTC1CbG9ja3MtRWxlbWVudFByb3BlcnR5UGF0aCIvPg0KKyAgICAgICAgPG93bmVkQXR0cmlidXRlIHhtaTppZD0iU3lzTUwtUG9ydHNfdTAwMjZGbG93cy1JbnZvY2F0aW9uT25OZXN0ZWRQb3J0QWN0aW9uLWJhc2VfSW52b2NhdGlvbkFjdGlvbiIgbmFtZT0iYmFzZV9JbnZvY2F0aW9uQWN0aW9uIiB2aXNpYmlsaXR5PSJwdWJsaWMiIHJlZGVmaW5lZFByb3BlcnR5PSJTeXNNTC1CbG9ja3MtRWxlbWVudFByb3BlcnR5UGF0aC1iYXNlX0VsZW1lbnQiIGFzc29jaWF0aW9uPSJTeXNNTC1Qb3J0c191MDAyNkZsb3dzLUVfZXh0ZW5zaW9uX0ludm9jYXRpb25Pbk5lc3RlZFBvcnRBY3Rpb25fYmFzZV9JbnZvY2F0aW9uQWN0aW9uIj4NCisgICAgICAgICAgPHR5cGUgeG1pOnR5cGU9InVtbDpDbGFzcyIgaHJlZj0icGF0aG1hcDovL1VNTF9NRVRBTU9ERUxTL1VNTC5tZXRhbW9kZWwudW1sI0ludm9jYXRpb25BY3Rpb24iLz4NCisgICAgICAgICAgPGxvd2VyVmFsdWUgeG1pOnR5cGU9InVtbDpMaXRlcmFsSW50ZWdlciIgeG1pOmlkPSJTeXNNTC1Qb3J0c191MDAyNkZsb3dzLUludm9jYXRpb25Pbk5lc3RlZFBvcnRBY3Rpb24tYmFzZV9JbnZvY2F0aW9uQWN0aW9uLWxvd2VyVmFsdWUiIG5hbWU9IiIvPg0KKyAgICAgICAgICA8dXBwZXJWYWx1ZSB4bWk6dHlwZT0idW1sOkxpdGVyYWxVbmxpbWl0ZWROYXR1cmFsIiB4bWk6aWQ9IlN5c01MLVBvcnRzX3UwMDI2Rmxvd3MtSW52b2NhdGlvbk9uTmVzdGVkUG9ydEFjdGlvbi1iYXNlX0ludm9jYXRpb25BY3Rpb24tdXBwZXJWYWx1ZSIgbmFtZT0iIiB2YWx1ZT0iMSIvPg0KKyAgICAgICAgPC9vd25lZEF0dHJpYnV0ZT4NCisgICAgICAgIDxvd25lZEF0dHJpYnV0ZSB4bWk6aWQ9IlN5c01MLVBvcnRzX3UwMDI2Rmxvd3MtSW52b2NhdGlvbk9uTmVzdGVkUG9ydEFjdGlvbi1vbk5lc3RlZFBvcnQiIG5hbWU9Im9uTmVzdGVkUG9ydCIgdmlzaWJpbGl0eT0icHVibGljIiBpc09yZGVyZWQ9InRydWUiIGlzVW5pcXVlPSJmYWxzZSIgcmVkZWZpbmVkUHJvcGVydHk9IlN5c01MLUJsb2Nrcy1FbGVtZW50UHJvcGVydHlQYXRoLXByb3BlcnR5UGF0aCIgYXNzb2NpYXRpb249IlN5c01MLVBvcnRzX3UwMDI2Rmxvd3MtQV9pbnZvY2F0aW9uT25OZXN0ZWRQb3J0QWN0aW9uX29uTmVzdGVkUG9ydCI+DQorICAgICAgICAgIDx0eXBlIHhtaTp0eXBlPSJ1bWw6Q2xhc3MiIGhyZWY9InBhdGhtYXA6Ly9VTUxfTUVUQU1PREVMUy9VTUwubWV0YW1vZGVsLnVtbCNQb3J0Ii8+DQorICAgICAgICAgIDxsb3dlclZhbHVlIHhtaTp0eXBlPSJ1bWw6TGl0ZXJhbEludGVnZXIiIHhtaTppZD0iU3lzTUwtUG9ydHNfdTAwMjZGbG93cy1JbnZvY2F0aW9uT25OZXN0ZWRQb3J0QWN0aW9uLW9uTmVzdGVkUG9ydC1sb3dlclZhbHVlIiBuYW1lPSIiIHZhbHVlPSIxIi8+DQorICAgICAgICAgIDx1cHBlclZhbHVlIHhtaTp0eXBlPSJ1bWw6TGl0ZXJhbFVubGltaXRlZE5hdHVyYWwiIHhtaTppZD0iU3lzTUwtUG9ydHNfdTAwMjZGbG93cy1JbnZvY2F0aW9uT25OZXN0ZWRQb3J0QWN0aW9uLW9uTmVzdGVkUG9ydC11cHBlclZhbHVlIiBuYW1lPSIiIHZhbHVlPSIqIi8+DQorICAgICAgICA8L293bmVkQXR0cmlidXRlPg0KKyAgICAgIDwvcGFja2FnZWRFbGVtZW50Pg0KKyAgICAgIDxwYWNrYWdlZEVsZW1lbnQgeG1pOnR5cGU9InVtbDpFeHRlbnNpb24iIHhtaTppZD0iU3lzTUwtUG9ydHNfdTAwMjZGbG93cy1FX2V4dGVuc2lvbl9JbnZvY2F0aW9uT25OZXN0ZWRQb3J0QWN0aW9uX2Jhc2VfSW52b2NhdGlvbkFjdGlvbiIgbmFtZT0iRV9leHRlbnNpb25fSW52b2NhdGlvbk9uTmVzdGVkUG9ydEFjdGlvbl9iYXNlX0ludm9jYXRpb25BY3Rpb24iIG1lbWJlckVuZD0iU3lzTUwtUG9ydHNfdTAwMjZGbG93cy1JbnZvY2F0aW9uT25OZXN0ZWRQb3J0QWN0aW9uLWJhc2VfSW52b2NhdGlvbkFjdGlvbiBTeXNNTC1Qb3J0c191MDAyNkZsb3dzLUVfZXh0ZW5zaW9uX0ludm9jYXRpb25Pbk5lc3RlZFBvcnRBY3Rpb25fYmFzZV9JbnZvY2F0aW9uQWN0aW9uLWV4dGVuc2lvbl9JbnZvY2F0aW9uT25OZXN0ZWRQb3J0QWN0aW9uIiBuYXZpZ2FibGVPd25lZEVuZD0iU3lzTUwtUG9ydHNfdTAwMjZGbG93cy1FX2V4dGVuc2lvbl9JbnZvY2F0aW9uT25OZXN0ZWRQb3J0QWN0aW9uX2Jhc2VfSW52b2NhdGlvbkFjdGlvbi1leHRlbnNpb25fSW52b2NhdGlvbk9uTmVzdGVkUG9ydEFjdGlvbiI+DQorICAgICAgICA8b3duZWRFbmQgeG1pOnR5cGU9InVtbDpFeHRlbnNpb25FbmQiIHhtaTppZD0iU3lzTUwtUG9ydHNfdTAwMjZGbG93cy1FX2V4dGVuc2lvbl9JbnZvY2F0aW9uT25OZXN0ZWRQb3J0QWN0aW9uX2Jhc2VfSW52b2NhdGlvbkFjdGlvbi1leHRlbnNpb25fSW52b2NhdGlvbk9uTmVzdGVkUG9ydEFjdGlvbiIgbmFtZT0iZXh0ZW5zaW9uX0ludm9jYXRpb25Pbk5lc3RlZFBvcnRBY3Rpb24iIHZpc2liaWxpdHk9InB1YmxpYyIgdHlwZT0iU3lzTUwtUG9ydHNfdTAwMjZGbG93cy1JbnZvY2F0aW9uT25OZXN0ZWRQb3J0QWN0aW9uIiBhZ2dyZWdhdGlvbj0iY29tcG9zaXRlIiBhc3NvY2lhdGlvbj0iU3lzTUwtUG9ydHNfdTAwMjZGbG93cy1FX2V4dGVuc2lvbl9JbnZvY2F0aW9uT25OZXN0ZWRQb3J0QWN0aW9uX2Jhc2VfSW52b2NhdGlvbkFjdGlvbiI+DQorICAgICAgICAgIDxsb3dlclZhbHVlIHhtaTp0eXBlPSJ1bWw6TGl0ZXJhbEludGVnZXIiIHhtaTppZD0iU3lzTUwtUG9ydHNfdTAwMjZGbG93cy1FX2V4dGVuc2lvbl9JbnZvY2F0aW9uT25OZXN0ZWRQb3J0QWN0aW9uX2Jhc2VfSW52b2NhdGlvbkFjdGlvbi1leHRlbnNpb25fSW52b2NhdGlvbk9uTmVzdGVkUG9ydEFjdGlvbi1sb3dlclZhbHVlIiBuYW1lPSIiLz4NCisgICAgICAgICAgPHVwcGVyVmFsdWUgeG1pOnR5cGU9InVtbDpMaXRlcmFsVW5saW1pdGVkTmF0dXJhbCIgeG1pOmlkPSJTeXNNTC1Qb3J0c191MDAyNkZsb3dzLUVfZXh0ZW5zaW9uX0ludm9jYXRpb25Pbk5lc3RlZFBvcnRBY3Rpb25fYmFzZV9JbnZvY2F0aW9uQWN0aW9uLWV4dGVuc2lvbl9JbnZvY2F0aW9uT25OZXN0ZWRQb3J0QWN0aW9uLXVwcGVyVmFsdWUiIG5hbWU9IiIgdmFsdWU9IjEiLz4NCisgICAgICAgIDwvb3duZWRFbmQ+DQorICAgICAgPC9wYWNrYWdlZEVsZW1lbnQ+DQorICAgICAgPHBhY2thZ2VkRWxlbWVudCB4bWk6dHlwZT0idW1sOlN0ZXJlb3R5cGUiIHhtaTppZD0iU3lzTUwtUG9ydHNfdTAwMjZGbG93cy1UcmlnZ2VyT25OZXN0ZWRQb3J0IiBuYW1lPSJUcmlnZ2VyT25OZXN0ZWRQb3J0Ij4NCisgICAgICAgIDxnZW5lcmFsaXphdGlvbiB4bWk6aWQ9IlN5c01MLVBvcnRzX3UwMDI2Rmxvd3MtVHJpZ2dlck9uTmVzdGVkUG9ydC1nZW5lcmFsaXphdGlvbiIgZ2VuZXJhbD0iU3lzTUwtQmxvY2tzLUVsZW1lbnRQcm9wZXJ0eVBhdGgiLz4NCisgICAgICAgIDxvd25lZEF0dHJpYnV0ZSB4bWk6aWQ9IlN5c01MLVBvcnRzX3UwMDI2Rmxvd3MtVHJpZ2dlck9uTmVzdGVkUG9ydC1iYXNlX1RyaWdnZXIiIG5hbWU9ImJhc2VfVHJpZ2dlciIgdmlzaWJpbGl0eT0icHVibGljIiByZWRlZmluZWRQcm9wZXJ0eT0iU3lzTUwtQmxvY2tzLUVsZW1lbnRQcm9wZXJ0eVBhdGgtYmFzZV9FbGVtZW50IiBhc3NvY2lhdGlvbj0iU3lzTUwtUG9ydHNfdTAwMjZGbG93cy1FX2V4dGVuc2lvbl9UcmlnZ2VyT25OZXN0ZWRQb3J0X2Jhc2VfVHJpZ2dlciI+DQorICAgICAgICAgIDx0eXBlIHhtaTp0eXBlPSJ1bWw6Q2xhc3MiIGhyZWY9InBhdGhtYXA6Ly9VTUxfTUVUQU1PREVMUy9VTUwubWV0YW1vZGVsLnVtbCNUcmlnZ2VyIi8+DQorICAgICAgICA8L293bmVkQXR0cmlidXRlPg0KKyAgICAgICAgPG93bmVkQXR0cmlidXRlIHhtaTppZD0iU3lzTUwtUG9ydHNfdTAwMjZGbG93cy1UcmlnZ2VyT25OZXN0ZWRQb3J0LW9uTmVzdGVkUG9ydCIgbmFtZT0ib25OZXN0ZWRQb3J0IiB2aXNpYmlsaXR5PSJwdWJsaWMiIGlzT3JkZXJlZD0idHJ1ZSIgaXNVbmlxdWU9ImZhbHNlIiByZWRlZmluZWRQcm9wZXJ0eT0iU3lzTUwtQmxvY2tzLUVsZW1lbnRQcm9wZXJ0eVBhdGgtcHJvcGVydHlQYXRoIiBhc3NvY2lhdGlvbj0iU3lzTUwtUG9ydHNfdTAwMjZGbG93cy1BX3RyaWdnZXJPbk5lc3RlZFBvcnRfb25OZXN0ZWRQb3J0Ij4NCisgICAgICAgICAgPHR5cGUgeG1pOnR5cGU9InVtbDpDbGFzcyIgaHJlZj0icGF0aG1hcDovL1VNTF9NRVRBTU9ERUxTL1VNTC5tZXRhbW9kZWwudW1sI1BvcnQiLz4NCisgICAgICAgICAgPGxvd2VyVmFsdWUgeG1pOnR5cGU9InVtbDpMaXRlcmFsSW50ZWdlciIgeG1pOmlkPSJTeXNNTC1Qb3J0c191MDAyNkZsb3dzLVRyaWdnZXJPbk5lc3RlZFBvcnQtb25OZXN0ZWRQb3J0LWxvd2VyVmFsdWUiIG5hbWU9IiIgdmFsdWU9IjEiLz4NCisgICAgICAgICAgPHVwcGVyVmFsdWUgeG1pOnR5cGU9InVtbDpMaXRlcmFsVW5saW1pdGVkTmF0dXJhbCIgeG1pOmlkPSJTeXNNTC1Qb3J0c191MDAyNkZsb3dzLVRyaWdnZXJPbk5lc3RlZFBvcnQtb25OZXN0ZWRQb3J0LXVwcGVyVmFsdWUiIG5hbWU9IiIgdmFsdWU9IioiLz4NCisgICAgICAgIDwvb3duZWRBdHRyaWJ1dGU+DQorICAgICAgPC9wYWNrYWdlZEVsZW1lbnQ+DQorICAgICAgPHBhY2thZ2VkRWxlbWVudCB4bWk6dHlwZT0idW1sOkV4dGVuc2lvbiIgeG1pOmlkPSJTeXNNTC1Qb3J0c191MDAyNkZsb3dzLUVfZXh0ZW5zaW9uX1RyaWdnZXJPbk5lc3RlZFBvcnRfYmFzZV9UcmlnZ2VyIiBuYW1lPSJFX2V4dGVuc2lvbl9UcmlnZ2VyT25OZXN0ZWRQb3J0X2Jhc2VfVHJpZ2dlciIgbWVtYmVyRW5kPSJTeXNNTC1Qb3J0c191MDAyNkZsb3dzLVRyaWdnZXJPbk5lc3RlZFBvcnQtYmFzZV9UcmlnZ2VyIFN5c01MLVBvcnRzX3UwMDI2Rmxvd3MtRV9leHRlbnNpb25fVHJpZ2dlck9uTmVzdGVkUG9ydF9iYXNlX1RyaWdnZXItZXh0ZW5zaW9uX1RyaWdnZXJPbk5lc3RlZFBvcnQiIG5hdmlnYWJsZU93bmVkRW5kPSJTeXNNTC1Qb3J0c191MDAyNkZsb3dzLUVfZXh0ZW5zaW9uX1RyaWdnZXJPbk5lc3RlZFBvcnRfYmFzZV9UcmlnZ2VyLWV4dGVuc2lvbl9UcmlnZ2VyT25OZXN0ZWRQb3J0Ij4NCisgICAgICAgIDxvd25lZEVuZCB4bWk6dHlwZT0idW1sOkV4dGVuc2lvbkVuZCIgeG1pOmlkPSJTeXNNTC1Qb3J0c191MDAyNkZsb3dzLUVfZXh0ZW5zaW9uX1RyaWdnZXJPbk5lc3RlZFBvcnRfYmFzZV9UcmlnZ2VyLWV4dGVuc2lvbl9UcmlnZ2VyT25OZXN0ZWRQb3J0IiBuYW1lPSJleHRlbnNpb25fVHJpZ2dlck9uTmVzdGVkUG9ydCIgdmlzaWJpbGl0eT0icHVibGljIiB0eXBlPSJTeXNNTC1Qb3J0c191MDAyNkZsb3dzLVRyaWdnZXJPbk5lc3RlZFBvcnQiIGFnZ3JlZ2F0aW9uPSJjb21wb3NpdGUiIGFzc29jaWF0aW9uPSJTeXNNTC1Qb3J0c191MDAyNkZsb3dzLUVfZXh0ZW5zaW9uX1RyaWdnZXJPbk5lc3RlZFBvcnRfYmFzZV9UcmlnZ2VyIj4NCisgICAgICAgICAgPGxvd2VyVmFsdWUgeG1pOnR5cGU9InVtbDpMaXRlcmFsSW50ZWdlciIgeG1pOmlkPSJTeXNNTC1Qb3J0c191MDAyNkZsb3dzLUVfZXh0ZW5zaW9uX1RyaWdnZXJPbk5lc3RlZFBvcnRfYmFzZV9UcmlnZ2VyLWV4dGVuc2lvbl9UcmlnZ2VyT25OZXN0ZWRQb3J0LWxvd2VyVmFsdWUiIG5hbWU9IiIvPg0KKyAgICAgICAgICA8dXBwZXJWYWx1ZSB4bWk6dHlwZT0idW1sOkxpdGVyYWxVbmxpbWl0ZWROYXR1cmFsIiB4bWk6aWQ9IlN5c01MLVBvcnRzX3UwMDI2Rmxvd3MtRV9leHRlbnNpb25fVHJpZ2dlck9uTmVzdGVkUG9ydF9iYXNlX1RyaWdnZXItZXh0ZW5zaW9uX1RyaWdnZXJPbk5lc3RlZFBvcnQtdXBwZXJWYWx1ZSIgbmFtZT0iIiB2YWx1ZT0iMSIvPg0KKyAgICAgICAgPC9vd25lZEVuZD4NCisgICAgICA8L3BhY2thZ2VkRWxlbWVudD4NCisgICAgICA8cGFja2FnZWRFbGVtZW50IHhtaTp0eXBlPSJ1bWw6QXNzb2NpYXRpb24iIHhtaTppZD0iU3lzTUwtUG9ydHNfdTAwMjZGbG93cy1BX2NoYW5nZVN0cnVjdHVyYWxGZWF0dXJlRXZlbnRfc3RydWN0dXJhbEZlYXR1cmUiIG5hbWU9IkFfY2hhbmdlU3RydWN0dXJhbEZlYXR1cmVFdmVudF9zdHJ1Y3R1cmFsRmVhdHVyZSIgbWVtYmVyRW5kPSJTeXNNTC1Qb3J0c191MDAyNkZsb3dzLUFfY2hhbmdlU3RydWN0dXJhbEZlYXR1cmVFdmVudF9zdHJ1Y3R1cmFsRmVhdHVyZS1jaGFuZ2VTdHJ1Y3R1cmFsRmVhdHVyZUV2ZW50IFN5c01MLVBvcnRzX3UwMDI2Rmxvd3MtQ2hhbmdlU3RydWN0dXJhbEZlYXR1cmVFdmVudC1zdHJ1Y3R1cmFsRmVhdHVyZSI+DQorICAgICAgICA8b3duZWRFbmQgeG1pOmlkPSJTeXNNTC1Qb3J0c191MDAyNkZsb3dzLUFfY2hhbmdlU3RydWN0dXJhbEZlYXR1cmVFdmVudF9zdHJ1Y3R1cmFsRmVhdHVyZS1jaGFuZ2VTdHJ1Y3R1cmFsRmVhdHVyZUV2ZW50IiBuYW1lPSJjaGFuZ2VTdHJ1Y3R1cmFsRmVhdHVyZUV2ZW50IiB2aXNpYmlsaXR5PSJwdWJsaWMiIHR5cGU9IlN5c01MLVBvcnRzX3UwMDI2Rmxvd3MtQ2hhbmdlU3RydWN0dXJhbEZlYXR1cmVFdmVudCIgYXNzb2NpYXRpb249IlN5c01MLVBvcnRzX3UwMDI2Rmxvd3MtQV9jaGFuZ2VTdHJ1Y3R1cmFsRmVhdHVyZUV2ZW50X3N0cnVjdHVyYWxGZWF0dXJlIj4NCisgICAgICAgICAgPGxvd2VyVmFsdWUgeG1pOnR5cGU9InVtbDpMaXRlcmFsSW50ZWdlciIgeG1pOmlkPSJTeXNNTC1Qb3J0c191MDAyNkZsb3dzLUFfY2hhbmdlU3RydWN0dXJhbEZlYXR1cmVFdmVudF9zdHJ1Y3R1cmFsRmVhdHVyZS1jaGFuZ2VTdHJ1Y3R1cmFsRmVhdHVyZUV2ZW50LWxvd2VyVmFsdWUiIG5hbWU9IiIvPg0KKyAgICAgICAgICA8dXBwZXJWYWx1ZSB4bWk6dHlwZT0idW1sOkxpdGVyYWxVbmxpbWl0ZWROYXR1cmFsIiB4bWk6aWQ9IlN5c01MLVBvcnRzX3UwMDI2Rmxvd3MtQV9jaGFuZ2VTdHJ1Y3R1cmFsRmVhdHVyZUV2ZW50X3N0cnVjdHVyYWxGZWF0dXJlLWNoYW5nZVN0cnVjdHVyYWxGZWF0dXJlRXZlbnQtdXBwZXJWYWx1ZSIgbmFtZT0iIiB2YWx1ZT0iKiIvPg0KKyAgICAgICAgPC9vd25lZEVuZD4NCisgICAgICA8L3BhY2thZ2VkRWxlbWVudD4NCisgICAgICA8cGFja2FnZWRFbGVtZW50IHhtaTp0eXBlPSJ1bWw6QXNzb2NpYXRpb24iIHhtaTppZD0iU3lzTUwtUG9ydHNfdTAwMjZGbG93cy1BX2ludm9jYXRpb25Pbk5lc3RlZFBvcnRBY3Rpb25fb25OZXN0ZWRQb3J0IiBuYW1lPSJBX2ludm9jYXRpb25Pbk5lc3RlZFBvcnRBY3Rpb25fb25OZXN0ZWRQb3J0IiBtZW1iZXJFbmQ9IlN5c01MLVBvcnRzX3UwMDI2Rmxvd3MtQV9pbnZvY2F0aW9uT25OZXN0ZWRQb3J0QWN0aW9uX29uTmVzdGVkUG9ydC1pbnZvY2F0aW9uT25OZXN0ZWRQb3J0QWN0aW9uIFN5c01MLVBvcnRzX3UwMDI2Rmxvd3MtSW52b2NhdGlvbk9uTmVzdGVkUG9ydEFjdGlvbi1vbk5lc3RlZFBvcnQiPg0KKyAgICAgICAgPG93bmVkRW5kIHhtaTppZD0iU3lzTUwtUG9ydHNfdTAwMjZGbG93cy1BX2ludm9jYXRpb25Pbk5lc3RlZFBvcnRBY3Rpb25fb25OZXN0ZWRQb3J0LWludm9jYXRpb25Pbk5lc3RlZFBvcnRBY3Rpb24iIG5hbWU9Imludm9jYXRpb25Pbk5lc3RlZFBvcnRBY3Rpb24iIHZpc2liaWxpdHk9InB1YmxpYyIgdHlwZT0iU3lzTUwtUG9ydHNfdTAwMjZGbG93cy1JbnZvY2F0aW9uT25OZXN0ZWRQb3J0QWN0aW9uIiBhc3NvY2lhdGlvbj0iU3lzTUwtUG9ydHNfdTAwMjZGbG93cy1BX2ludm9jYXRpb25Pbk5lc3RlZFBvcnRBY3Rpb25fb25OZXN0ZWRQb3J0Ij4NCisgICAgICAgICAgPGxvd2VyVmFsdWUgeG1pOnR5cGU9InVtbDpMaXRlcmFsSW50ZWdlciIgeG1pOmlkPSJfdTdGVlVKZ1BFZVNGdExvVmUyLXNvUSIvPg0KKyAgICAgICAgICA8dXBwZXJWYWx1ZSB4bWk6dHlwZT0idW1sOkxpdGVyYWxVbmxpbWl0ZWROYXR1cmFsIiB4bWk6aWQ9IlN5c01MLVBvcnRzX3UwMDI2Rmxvd3MtQV9pbnZvY2F0aW9uT25OZXN0ZWRQb3J0QWN0aW9uX29uTmVzdGVkUG9ydC1pbnZvY2F0aW9uT25OZXN0ZWRQb3J0QWN0aW9uLXVwcGVyVmFsdWUiIG5hbWU9IiIgdmFsdWU9IioiLz4NCisgICAgICAgIDwvb3duZWRFbmQ+DQorICAgICAgPC9wYWNrYWdlZEVsZW1lbnQ+DQorICAgICAgPHBhY2thZ2VkRWxlbWVudCB4bWk6dHlwZT0idW1sOkFzc29jaWF0aW9uIiB4bWk6aWQ9IlN5c01MLVBvcnRzX3UwMDI2Rmxvd3MtQV90cmlnZ2VyT25OZXN0ZWRQb3J0X29uTmVzdGVkUG9ydCIgbmFtZT0iQV90cmlnZ2VyT25OZXN0ZWRQb3J0X29uTmVzdGVkUG9ydCIgbWVtYmVyRW5kPSJTeXNNTC1Qb3J0c191MDAyNkZsb3dzLUFfdHJpZ2dlck9uTmVzdGVkUG9ydF9vbk5lc3RlZFBvcnQtdHJpZ2dlck9uTmVzdGVkUG9ydCBTeXNNTC1Qb3J0c191MDAyNkZsb3dzLVRyaWdnZXJPbk5lc3RlZFBvcnQtb25OZXN0ZWRQb3J0Ij4NCisgICAgICAgIDxvd25lZEVuZCB4bWk6aWQ9IlN5c01MLVBvcnRzX3UwMDI2Rmxvd3MtQV90cmlnZ2VyT25OZXN0ZWRQb3J0X29uTmVzdGVkUG9ydC10cmlnZ2VyT25OZXN0ZWRQb3J0IiBuYW1lPSJ0cmlnZ2VyT25OZXN0ZWRQb3J0IiB2aXNpYmlsaXR5PSJwdWJsaWMiIHR5cGU9IlN5c01MLVBvcnRzX3UwMDI2Rmxvd3MtVHJpZ2dlck9uTmVzdGVkUG9ydCIgYXNzb2NpYXRpb249IlN5c01MLVBvcnRzX3UwMDI2Rmxvd3MtQV90cmlnZ2VyT25OZXN0ZWRQb3J0X29uTmVzdGVkUG9ydCI+DQorICAgICAgICAgIDxsb3dlclZhbHVlIHhtaTp0eXBlPSJ1bWw6TGl0ZXJhbEludGVnZXIiIHhtaTppZD0iX3R0MFE4SmdQRWVTRnRMb1ZlMi1zb1EiLz4NCisgICAgICAgICAgPHVwcGVyVmFsdWUgeG1pOnR5cGU9InVtbDpMaXRlcmFsVW5saW1pdGVkTmF0dXJhbCIgeG1pOmlkPSJTeXNNTC1Qb3J0c191MDAyNkZsb3dzLUFfdHJpZ2dlck9uTmVzdGVkUG9ydF9vbk5lc3RlZFBvcnQtdHJpZ2dlck9uTmVzdGVkUG9ydC11cHBlclZhbHVlIiBuYW1lPSIiIHZhbHVlPSIqIi8+DQorICAgICAgICA8L293bmVkRW5kPg0KKyAgICAgIDwvcGFja2FnZWRFbGVtZW50Pg0KKyAgICA8L3BhY2thZ2VkRWxlbWVudD4NCisgICAgPHBhY2thZ2VkRWxlbWVudCB4bWk6dHlwZT0idW1sOlBhY2thZ2UiIHhtaTppZD0iU3lzTUwtQWN0aXZpdGllcyIgbmFtZT0iQWN0aXZpdGllcyIgVVJJPSIiPg0KKyAgICAgIDxwYWNrYWdlZEVsZW1lbnQgeG1pOnR5cGU9InVtbDpFeHRlbnNpb24iIHhtaTppZD0iU3lzTUwtQWN0aXZpdGllcy1FX2V4dGVuc2lvbl9Ob0J1ZmZlcl9iYXNlX09iamVjdE5vZGUiIG5hbWU9IkVfZXh0ZW5zaW9uX05vQnVmZmVyX2Jhc2VfT2JqZWN0Tm9kZSIgbWVtYmVyRW5kPSJTeXNNTC1BY3Rpdml0aWVzLUVfZXh0ZW5zaW9uX05vQnVmZmVyX2Jhc2VfT2JqZWN0Tm9kZS1leHRlbnNpb25fTm9CdWZmZXIgU3lzTUwtQWN0aXZpdGllcy1Ob0J1ZmZlci1iYXNlX09iamVjdE5vZGUiIG5hdmlnYWJsZU93bmVkRW5kPSJTeXNNTC1BY3Rpdml0aWVzLUVfZXh0ZW5zaW9uX05vQnVmZmVyX2Jhc2VfT2JqZWN0Tm9kZS1leHRlbnNpb25fTm9CdWZmZXIiPg0KKyAgICAgICAgPG93bmVkRW5kIHhtaTp0eXBlPSJ1bWw6RXh0ZW5zaW9uRW5kIiB4bWk6aWQ9IlN5c01MLUFjdGl2aXRpZXMtRV9leHRlbnNpb25fTm9CdWZmZXJfYmFzZV9PYmplY3ROb2RlLWV4dGVuc2lvbl9Ob0J1ZmZlciIgbmFtZT0iZXh0ZW5zaW9uX05vQnVmZmVyIiB2aXNpYmlsaXR5PSJwdWJsaWMiIHR5cGU9IlN5c01MLUFjdGl2aXRpZXMtTm9CdWZmZXIiIGFnZ3JlZ2F0aW9uPSJjb21wb3NpdGUiIGFzc29jaWF0aW9uPSJTeXNNTC1BY3Rpdml0aWVzLUVfZXh0ZW5zaW9uX05vQnVmZmVyX2Jhc2VfT2JqZWN0Tm9kZSI+DQorICAgICAgICAgIDxsb3dlclZhbHVlIHhtaTp0eXBlPSJ1bWw6TGl0ZXJhbEludGVnZXIiIHhtaTppZD0iU3lzTUwtQWN0aXZpdGllcy1FX2V4dGVuc2lvbl9Ob0J1ZmZlcl9iYXNlX09iamVjdE5vZGUtZXh0ZW5zaW9uX05vQnVmZmVyLWxvd2VyVmFsdWUiIG5hbWU9IiIvPg0KKyAgICAgICAgICA8dXBwZXJWYWx1ZSB4bWk6dHlwZT0idW1sOkxpdGVyYWxJbnRlZ2VyIiB4bWk6aWQ9IlN5c01MLUFjdGl2aXRpZXMtRV9leHRlbnNpb25fTm9CdWZmZXJfYmFzZV9PYmplY3ROb2RlLWV4dGVuc2lvbl9Ob0J1ZmZlci11cHBlclZhbHVlIiBuYW1lPSIiIHZhbHVlPSIxIi8+DQorICAgICAgICA8L293bmVkRW5kPg0KKyAgICAgIDwvcGFja2FnZWRFbGVtZW50Pg0KKyAgICAgIDxwYWNrYWdlZEVsZW1lbnQgeG1pOnR5cGU9InVtbDpFeHRlbnNpb24iIHhtaTppZD0iU3lzTUwtQWN0aXZpdGllcy1FX2V4dGVuc2lvbl9SYXRlX2Jhc2VfQWN0aXZpdHlFZGdlIiBuYW1lPSJFX2V4dGVuc2lvbl9SYXRlX2Jhc2VfQWN0aXZpdHlFZGdlIiBtZW1iZXJFbmQ9IlN5c01MLUFjdGl2aXRpZXMtRV9leHRlbnNpb25fUmF0ZV9iYXNlX0FjdGl2aXR5RWRnZS1leHRlbnNpb25fUmF0ZSBTeXNNTC1BY3Rpdml0aWVzLVJhdGUtYmFzZV9BY3Rpdml0eUVkZ2UiIG5hdmlnYWJsZU93bmVkRW5kPSJTeXNNTC1BY3Rpdml0aWVzLUVfZXh0ZW5zaW9uX1JhdGVfYmFzZV9BY3Rpdml0eUVkZ2UtZXh0ZW5zaW9uX1JhdGUiPg0KKyAgICAgICAgPG93bmVkRW5kIHhtaTp0eXBlPSJ1bWw6RXh0ZW5zaW9uRW5kIiB4bWk6aWQ9IlN5c01MLUFjdGl2aXRpZXMtRV9leHRlbnNpb25fUmF0ZV9iYXNlX0FjdGl2aXR5RWRnZS1leHRlbnNpb25fUmF0ZSIgbmFtZT0iZXh0ZW5zaW9uX1JhdGUiIHZpc2liaWxpdHk9InB1YmxpYyIgdHlwZT0iU3lzTUwtQWN0aXZpdGllcy1SYXRlIiBhZ2dyZWdhdGlvbj0iY29tcG9zaXRlIiBhc3NvY2lhdGlvbj0iU3lzTUwtQWN0aXZpdGllcy1FX2V4dGVuc2lvbl9SYXRlX2Jhc2VfQWN0aXZpdHlFZGdlIj4NCisgICAgICAgICAgPGxvd2VyVmFsdWUgeG1pOnR5cGU9InVtbDpMaXRlcmFsSW50ZWdlciIgeG1pOmlkPSJTeXNNTC1BY3Rpdml0aWVzLUVfZXh0ZW5zaW9uX1JhdGVfYmFzZV9BY3Rpdml0eUVkZ2UtZXh0ZW5zaW9uX1JhdGUtbG93ZXJWYWx1ZSIgbmFtZT0iIi8+DQorICAgICAgICAgIDx1cHBlclZhbHVlIHhtaTp0eXBlPSJ1bWw6TGl0ZXJhbEludGVnZXIiIHhtaTppZD0iU3lzTUwtQWN0aXZpdGllcy1FX2V4dGVuc2lvbl9SYXRlX2Jhc2VfQWN0aXZpdHlFZGdlLWV4dGVuc2lvbl9SYXRlLXVwcGVyVmFsdWUiIG5hbWU9IiIgdmFsdWU9IjEiLz4NCisgICAgICAgIDwvb3duZWRFbmQ+DQorICAgICAgPC9wYWNrYWdlZEVsZW1lbnQ+DQorICAgICAgPHBhY2thZ2VkRWxlbWVudCB4bWk6dHlwZT0idW1sOlN0ZXJlb3R5cGUiIHhtaTppZD0iU3lzTUwtQWN0aXZpdGllcy1PdmVyd3JpdGUiIG5hbWU9Ik92ZXJ3cml0ZSI+DQorICAgICAgICA8b3duZWRDb21tZW50IHhtaTppZD0iU3lzTUwtQWN0aXZpdGllcy1PdmVyd3JpdGUtb3duZWRDb21tZW50IiBhbm5vdGF0ZWRFbGVtZW50PSJTeXNNTC1BY3Rpdml0aWVzLU92ZXJ3cml0ZSI+DQorICAgICAgICAgIDxib2R5PldoZW4gdGhlIMKrb3ZlcndyaXRlwrsgc3RlcmVvdHlwZSBpcyBhcHBsaWVkIHRvIG9iamVjdCBub2RlcywgYSB0b2tlbiBhcnJpdmluZyBhdCBhIGZ1bGwgb2JqZWN0IG5vZGUgcmVwbGFjZXMgdGhlIG9uZXMgYWxyZWFkeSB0aGVyZSAoYSBmdWxsIG9iamVjdCBub2RlIGhhcyBhcyBtYW55IHRva2VucyBhcyBhbGxvd2VkIGJ5IGl0cyB1cHBlciBib3VuZCkuIFRoaXMgaXMgdHlwaWNhbGx5IHVzZWQgb24gYW4gaW5wdXQgcGluIHdpdGggYW4gdXBwZXIgYm91bmQgb2YgMSB0byBlbnN1cmUgdGhhdCBzdGFsZSBkYXRhIGlzIG92ZXJyaWRkZW4gYXQgYW4gaW5wdXQgcGluLiBGb3IgdXBwZXIgYm91bmRzIGdyZWF0ZXIgdGhhbiBvbmUsIHRoZSB0b2tlbiByZXBsYWNlZCBpcyB0aGUgb25lIHRoYXQgd291bGQgYmUgdGhlIGxhc3QgdG8gYmUgc2VsZWN0ZWQgYWNjb3JkaW5nIHRvIHRoZSBvcmRlcmluZyBraW5kIGZvciB0aGUgbm9kZS4gRm9yIEZJRk8gb3JkZXJpbmcsIHRoaXMgaXMgdGhlIG1vc3QgcmVjZW50bHkgYWRkZWQgdG9rZW4sIGZvciBMSUZPIGl0IGlzIHRoZSBsZWFzdCByZWNlbnRseSBhZGRlZCB0b2tlbi4gQSBudWxsIHRva2VuIHJlbW92ZXMgYWxsIHRoZSB0b2tlbnMgYWxyZWFkeSB0aGVyZS4gVGhlIG51bWJlciBvZiB0b2tlbnMgcmVwbGFjZWQgaXMgZXF1YWwgdG8gdGhlIHdlaWdodCBvZiB0aGUgaW5jb21pbmcgZWRnZSwgd2hpY2ggZGVmYXVsdHMgdG8gMS4gRm9yIG9iamVjdCBub2RlcyB0aGF0IGFyZSB0aGUgdGFyZ2V0IG9mIGNvbnRpbnVvdXMgZmxvd3MsIMKrb3ZlcndyaXRlwrsgYW5kIMKrbm9idWZmZXLCuyBoYXZlIHRoZSBzYW1lIGVmZmVjdC4gVGhlIHN0ZXJlb3R5cGUgZG9lcyBub3Qgb3ZlcnJpZGUgVU1MIHRva2VuIG9mZmVyaW5nIHNlbWFudGljcywganVzdCBpbmRpY2F0ZXMgd2hhdCBoYXBwZW5zIHRvIHRoZSB0b2tlbiB3aGVuIGl0IGlzIGFjY2VwdGVkLiBXaGVuIHRoZSBzdGVyZW90eXBlIGlzIG5vdCBhcHBsaWVkLCB0aGUgc2VtYW50aWNzIGlzIGFzIGluIFVNTCwgc3BlY2lmaWNhbGx5LCB0b2tlbnMgYXJyaXZpbmcgYXQgb2JqZWN0IG5vZGVzIGRvIG5vdCByZXBsYWNlIG9uZXMgdGhhdCBhcmUgYWxyZWFkeSB0aGVyZS48L2JvZHk+DQorICAgICAgICA8L293bmVkQ29tbWVudD4NCisgICAgICAgIDxvd25lZEF0dHJpYnV0ZSB4bWk6aWQ9IlN5c01MLUFjdGl2aXRpZXMtT3ZlcndyaXRlLWJhc2VfT2JqZWN0Tm9kZSIgbmFtZT0iYmFzZV9PYmplY3ROb2RlIiB2aXNpYmlsaXR5PSJwdWJsaWMiIGFzc29jaWF0aW9uPSJTeXNNTC1BY3Rpdml0aWVzLUVfZXh0ZW5zaW9uX092ZXJ3cml0ZV9iYXNlX09iamVjdE5vZGUiPg0KKyAgICAgICAgICA8dHlwZSB4bWk6dHlwZT0idW1sOkNsYXNzIiBocmVmPSJwYXRobWFwOi8vVU1MX01FVEFNT0RFTFMvVU1MLm1ldGFtb2RlbC51bWwjT2JqZWN0Tm9kZSIvPg0KKyAgICAgICAgICA8bG93ZXJWYWx1ZSB4bWk6dHlwZT0idW1sOkxpdGVyYWxJbnRlZ2VyIiB4bWk6aWQ9IlN5c01MLUFjdGl2aXRpZXMtT3ZlcndyaXRlLWJhc2VfT2JqZWN0Tm9kZS1sb3dlclZhbHVlIiBuYW1lPSIiLz4NCisgICAgICAgICAgPHVwcGVyVmFsdWUgeG1pOnR5cGU9InVtbDpMaXRlcmFsVW5saW1pdGVkTmF0dXJhbCIgeG1pOmlkPSJTeXNNTC1BY3Rpdml0aWVzLU92ZXJ3cml0ZS1iYXNlX09iamVjdE5vZGUtdXBwZXJWYWx1ZSIgbmFtZT0iIiB2YWx1ZT0iMSIvPg0KKyAgICAgICAgPC9vd25lZEF0dHJpYnV0ZT4NCisgICAgICA8L3BhY2thZ2VkRWxlbWVudD4NCisgICAgICA8cGFja2FnZWRFbGVtZW50IHhtaTp0eXBlPSJ1bWw6U3RlcmVvdHlwZSIgeG1pOmlkPSJTeXNNTC1BY3Rpdml0aWVzLUNvbnRyb2xPcGVyYXRvciIgbmFtZT0iQ29udHJvbE9wZXJhdG9yIj4NCisgICAgICAgIDxvd25lZENvbW1lbnQgeG1pOmlkPSJTeXNNTC1BY3Rpdml0aWVzLUNvbnRyb2xPcGVyYXRvci1vd25lZENvbW1lbnQiIGFubm90YXRlZEVsZW1lbnQ9IlN5c01MLUFjdGl2aXRpZXMtQ29udHJvbE9wZXJhdG9yIj4NCisgICAgICAgICAgPGJvZHk+QSBjb250cm9sIG9wZXJhdG9yIGlzIGEgYmVoYXZpb3IgdGhhdCBpcyBpbnRlbmRlZCB0byByZXByZXNlbnQgYW4gYXJiaXRyYXJpbHkgY29tcGxleCBsb2dpY2FsIG9wZXJhdG9yIHRoYXQgY2FuIGJlIHVzZWQgdG8gZW5hYmxlIGFuZCBkaXNhYmxlIG90aGVyIGFjdGlvbnMuIFdoZW4gdGhpcyBzdGVyZW90eXBlIGlzIGFwcGxpZWQgdG8gYmVoYXZpb3JzLCB0aGUgYmVoYXZpb3IgdGFrZXMgY29udHJvbCB2YWx1ZXMgYXMgaW5wdXRzIG9yIHByb3ZpZGVzIHRoZW0gYXMgb3V0cHV0cywgdGhhdCBpcywgaXQgdHJlYXRzIGNvbnRyb2wgYXMgZGF0YS4gV2hlbiB0aGlzIHN0ZXJlb3R5cGUgaXMgbm90IGFwcGxpZWQsIHRoZSBiZWhhdmlvciBtYXkgbm90IGhhdmUgYSBwYXJhbWV0ZXIgdHlwZWQgYnkgQ29udHJvbFZhbHVlLiBUaGlzIHN0ZXJlb3R5cGUgYWxzbyBhcHBsaWVzIHRvIG9wZXJhdGlvbnMgd2l0aCB0aGUgc2FtZSBzZW1hbnRpY3MuPC9ib2R5Pg0KKyAgICAgICAgPC9vd25lZENvbW1lbnQ+DQorICAgICAgICA8b3duZWRBdHRyaWJ1dGUgeG1pOmlkPSJTeXNNTC1BY3Rpdml0aWVzLUNvbnRyb2xPcGVyYXRvci1iYXNlX0JlaGF2aW9yIiBuYW1lPSJiYXNlX0JlaGF2aW9yIiB2aXNpYmlsaXR5PSJwdWJsaWMiIGFzc29jaWF0aW9uPSJTeXNNTC1BY3Rpdml0aWVzLUVfZXh0ZW5zaW9uX0NvbnRyb2xPcGVyYXRvcl9iYXNlX0JlaGF2aW9yIj4NCisgICAgICAgICAgPHR5cGUgeG1pOnR5cGU9InVtbDpDbGFzcyIgaHJlZj0icGF0aG1hcDovL1VNTF9NRVRBTU9ERUxTL1VNTC5tZXRhbW9kZWwudW1sI0JlaGF2aW9yIi8+DQorICAgICAgICAgIDxsb3dlclZhbHVlIHhtaTp0eXBlPSJ1bWw6TGl0ZXJhbEludGVnZXIiIHhtaTppZD0iU3lzTUwtQWN0aXZpdGllcy1Db250cm9sT3BlcmF0b3ItYmFzZV9CZWhhdmlvci1sb3dlclZhbHVlIiBuYW1lPSIiLz4NCisgICAgICAgICAgPHVwcGVyVmFsdWUgeG1pOnR5cGU9InVtbDpMaXRlcmFsVW5saW1pdGVkTmF0dXJhbCIgeG1pOmlkPSJTeXNNTC1BY3Rpdml0aWVzLUNvbnRyb2xPcGVyYXRvci1iYXNlX0JlaGF2aW9yLXVwcGVyVmFsdWUiIG5hbWU9IiIgdmFsdWU9IjEiLz4NCisgICAgICAgIDwvb3duZWRBdHRyaWJ1dGU+DQorICAgICAgICA8b3duZWRBdHRyaWJ1dGUgeG1pOmlkPSJTeXNNTC1BY3Rpdml0aWVzLUNvbnRyb2xPcGVyYXRvci1iYXNlX09wZXJhdGlvbiIgbmFtZT0iYmFzZV9PcGVyYXRpb24iIHZpc2liaWxpdHk9InB1YmxpYyIgYXNzb2NpYXRpb249IlN5c01MLUFjdGl2aXRpZXMtRV9leHRlbnNpb25fQ29udHJvbE9wZXJhdG9yX2Jhc2VfT3BlcmF0aW9uIj4NCisgICAgICAgICAgPHR5cGUgeG1pOnR5cGU9InVtbDpDbGFzcyIgaHJlZj0icGF0aG1hcDovL1VNTF9NRVRBTU9ERUxTL1VNTC5tZXRhbW9kZWwudW1sI09wZXJhdGlvbiIvPg0KKyAgICAgICAgICA8bG93ZXJWYWx1ZSB4bWk6dHlwZT0idW1sOkxpdGVyYWxJbnRlZ2VyIiB4bWk6aWQ9IlN5c01MLUFjdGl2aXRpZXMtQ29udHJvbE9wZXJhdG9yLWJhc2VfT3BlcmF0aW9uLWxvd2VyVmFsdWUiIG5hbWU9IiIvPg0KKyAgICAgICAgICA8dXBwZXJWYWx1ZSB4bWk6dHlwZT0idW1sOkxpdGVyYWxVbmxpbWl0ZWROYXR1cmFsIiB4bWk6aWQ9IlN5c01MLUFjdGl2aXRpZXMtQ29udHJvbE9wZXJhdG9yLWJhc2VfT3BlcmF0aW9uLXVwcGVyVmFsdWUiIG5hbWU9IiIgdmFsdWU9IjEiLz4NCisgICAgICAgIDwvb3duZWRBdHRyaWJ1dGU+DQorICAgICAgPC9wYWNrYWdlZEVsZW1lbnQ+DQorICAgICAgPHBhY2thZ2VkRWxlbWVudCB4bWk6dHlwZT0idW1sOkV4dGVuc2lvbiIgeG1pOmlkPSJTeXNNTC1BY3Rpdml0aWVzLUVfZXh0ZW5zaW9uX0NvbnRyb2xPcGVyYXRvcl9iYXNlX0JlaGF2aW9yIiBuYW1lPSJFX2V4dGVuc2lvbl9Db250cm9sT3BlcmF0b3JfYmFzZV9CZWhhdmlvciIgbWVtYmVyRW5kPSJTeXNNTC1BY3Rpdml0aWVzLUVfZXh0ZW5zaW9uX0NvbnRyb2xPcGVyYXRvcl9iYXNlX0JlaGF2aW9yLWV4dGVuc2lvbl9Db250cm9sT3BlcmF0b3IgU3lzTUwtQWN0aXZpdGllcy1Db250cm9sT3BlcmF0b3ItYmFzZV9CZWhhdmlvciIgbmF2aWdhYmxlT3duZWRFbmQ9IlN5c01MLUFjdGl2aXRpZXMtRV9leHRlbnNpb25fQ29udHJvbE9wZXJhdG9yX2Jhc2VfQmVoYXZpb3ItZXh0ZW5zaW9uX0NvbnRyb2xPcGVyYXRvciI+DQorICAgICAgICA8b3duZWRFbmQgeG1pOnR5cGU9InVtbDpFeHRlbnNpb25FbmQiIHhtaTppZD0iU3lzTUwtQWN0aXZpdGllcy1FX2V4dGVuc2lvbl9Db250cm9sT3BlcmF0b3JfYmFzZV9CZWhhdmlvci1leHRlbnNpb25fQ29udHJvbE9wZXJhdG9yIiBuYW1lPSJleHRlbnNpb25fQ29udHJvbE9wZXJhdG9yIiB2aXNpYmlsaXR5PSJwdWJsaWMiIHR5cGU9IlN5c01MLUFjdGl2aXRpZXMtQ29udHJvbE9wZXJhdG9yIiBhZ2dyZWdhdGlvbj0iY29tcG9zaXRlIiBhc3NvY2lhdGlvbj0iU3lzTUwtQWN0aXZpdGllcy1FX2V4dGVuc2lvbl9Db250cm9sT3BlcmF0b3JfYmFzZV9CZWhhdmlvciI+DQorICAgICAgICAgIDxsb3dlclZhbHVlIHhtaTp0eXBlPSJ1bWw6TGl0ZXJhbEludGVnZXIiIHhtaTppZD0iU3lzTUwtQWN0aXZpdGllcy1FX2V4dGVuc2lvbl9Db250cm9sT3BlcmF0b3JfYmFzZV9CZWhhdmlvci1leHRlbnNpb25fQ29udHJvbE9wZXJhdG9yLWxvd2VyVmFsdWUiIG5hbWU9IiIvPg0KKyAgICAgICAgICA8dXBwZXJWYWx1ZSB4bWk6dHlwZT0idW1sOkxpdGVyYWxJbnRlZ2VyIiB4bWk6aWQ9IlN5c01MLUFjdGl2aXRpZXMtRV9leHRlbnNpb25fQ29udHJvbE9wZXJhdG9yX2Jhc2VfQmVoYXZpb3ItZXh0ZW5zaW9uX0NvbnRyb2xPcGVyYXRvci11cHBlclZhbHVlIiBuYW1lPSIiIHZhbHVlPSIxIi8+DQorICAgICAgICA8L293bmVkRW5kPg0KKyAgICAgIDwvcGFja2FnZWRFbGVtZW50Pg0KKyAgICAgIDxwYWNrYWdlZEVsZW1lbnQgeG1pOnR5cGU9InVtbDpTdGVyZW90eXBlIiB4bWk6aWQ9IlN5c01MLUFjdGl2aXRpZXMtUmF0ZSIgbmFtZT0iUmF0ZSI+DQorICAgICAgICA8b3duZWRDb21tZW50IHhtaTppZD0iU3lzTUwtQWN0aXZpdGllcy1SYXRlLW93bmVkQ29tbWVudCIgYW5ub3RhdGVkRWxlbWVudD0iU3lzTUwtQWN0aXZpdGllcy1SYXRlIj4NCisgICAgICAgICAgPGJvZHk+V2hlbiB0aGUgwqtyYXRlwrsgc3RlcmVvdHlwZSBpcyBhcHBsaWVkIHRvIGFuIGFjdGl2aXR5IGVkZ2UsIGl0IHNwZWNpZmllcyB0aGUgZXhwZWN0ZWQgdmFsdWUgb2YgdGhlIG51bWJlciBvZiBvYmplY3RzIGFuZCB2YWx1ZXMgdGhhdCB0cmF2ZXJzZSB0aGUgZWRnZSBwZXIgdGltZSBpbnRlcnZhbCwgdGhhdCBpcywgdGhlIGV4cGVjdGVkIHZhbHVlIHJhdGUgYXQgd2hpY2ggdGhleSBsZWF2ZSB0aGUgc291cmNlIG5vZGUgYW5kIGFycml2ZSBhdCB0aGUgdGFyZ2V0IG5vZGUuIEl0IGRvZXMgbm90IHJlZmVyIHRvIHRoZSByYXRlIGF0IHdoaWNoIGEgdmFsdWUgY2hhbmdlcyBvdmVyIHRpbWUuIFdoZW4gdGhlIHN0ZXJlb3R5cGUgaXMgYXBwbGllZCB0byBhIHBhcmFtZXRlciwgdGhlIHBhcmFtZXRlciBtdXN0IGJlIHN0cmVhbWluZywgYW5kIHRoZSBzdGVyZW90eXBlIGdpdmVzIHRoZSBudW1iZXIgb2Ygb2JqZWN0cyBvciB2YWx1ZXMgdGhhdCBmbG93IGluIG9yIG91dCBvZiB0aGUgcGFyYW1ldGVyIHBlciB0aW1lIGludGVydmFsIHdoaWxlIHRoZSBiZWhhdmlvciBvciBvcGVyYXRpb24gaXMgZXhlY3V0aW5nLiBTdHJlYW1pbmcgaXMgYSBjaGFyYWN0ZXJpc3RpYyBvZiBVTUwgYmVoYXZpb3IgcGFyYW1ldGVycyB0aGF0IHN1cHBvcnRzIHRoZSBpbnB1dCBhbmQgb3V0cHV0IG9mIGl0ZW1zIHdoaWxlIGEgYmVoYXZpb3IgaXMgZXhlY3V0aW5nLCByYXRoZXIgdGhhbiBvbmx5IHdoZW4gdGhlIGJlaGF2aW9yIHN0YXJ0cyBhbmQgc3RvcHMuIFRoZSBmbG93IG1heSBiZSBjb250aW51b3VzIG9yIGRpc2NyZXRlLiBUaGUgwqtyYXRlwrsgc3RlcmVvdHlwZSBoYXMgYSByYXRlIHByb3BlcnR5IG9mIHR5cGUgSW5zdGFuY2VTcGVjaWZpY2F0aW9uLiBUaGUgdmFsdWVzIG9mIHRoaXMgcHJvcGVydHkgbXVzdCBiZSBpbnN0YW5jZXMgb2YgY2xhc3NpZmllcnMgc3RlcmVvdHlwZWQgYnkgwqt2YWx1ZVR5cGXCuyBvciDCq2Rpc3RyaWJ1dGlvbkRlZmluaXRpb27Cuy4gSW4gcGFydGljdWxhciwgdGhlIGRlbm9taW5hdG9yIGZvciB1bml0cyB1c2VkIGluIHRoZSByYXRlIHByb3BlcnR5IG11c3QgYmUgdGltZSB1bml0cy48L2JvZHk+DQorICAgICAgICA8L293bmVkQ29tbWVudD4NCisgICAgICAgIDxvd25lZEF0dHJpYnV0ZSB4bWk6aWQ9IlN5c01MLUFjdGl2aXRpZXMtUmF0ZS1yYXRlIiBuYW1lPSJyYXRlIiB2aXNpYmlsaXR5PSJwdWJsaWMiPg0KKyAgICAgICAgICA8dHlwZSB4bWk6dHlwZT0idW1sOkNsYXNzIiBocmVmPSJwYXRobWFwOi8vVU1MX01FVEFNT0RFTFMvVU1MLm1ldGFtb2RlbC51bWwjSW5zdGFuY2VTcGVjaWZpY2F0aW9uIi8+DQorICAgICAgICA8L293bmVkQXR0cmlidXRlPg0KKyAgICAgICAgPG93bmVkQXR0cmlidXRlIHhtaTppZD0iU3lzTUwtQWN0aXZpdGllcy1SYXRlLWJhc2VfQWN0aXZpdHlFZGdlIiBuYW1lPSJiYXNlX0FjdGl2aXR5RWRnZSIgdmlzaWJpbGl0eT0icHVibGljIiBhc3NvY2lhdGlvbj0iU3lzTUwtQWN0aXZpdGllcy1FX2V4dGVuc2lvbl9SYXRlX2Jhc2VfQWN0aXZpdHlFZGdlIj4NCisgICAgICAgICAgPHR5cGUgeG1pOnR5cGU9InVtbDpDbGFzcyIgaHJlZj0icGF0aG1hcDovL1VNTF9NRVRBTU9ERUxTL1VNTC5tZXRhbW9kZWwudW1sI0FjdGl2aXR5RWRnZSIvPg0KKyAgICAgICAgICA8bG93ZXJWYWx1ZSB4bWk6dHlwZT0idW1sOkxpdGVyYWxJbnRlZ2VyIiB4bWk6aWQ9IlN5c01MLUFjdGl2aXRpZXMtUmF0ZS1iYXNlX0FjdGl2aXR5RWRnZS1sb3dlclZhbHVlIiBuYW1lPSIiLz4NCisgICAgICAgICAgPHVwcGVyVmFsdWUgeG1pOnR5cGU9InVtbDpMaXRlcmFsVW5saW1pdGVkTmF0dXJhbCIgeG1pOmlkPSJTeXNNTC1BY3Rpdml0aWVzLVJhdGUtYmFzZV9BY3Rpdml0eUVkZ2UtdXBwZXJWYWx1ZSIgbmFtZT0iIiB2YWx1ZT0iMSIvPg0KKyAgICAgICAgPC9vd25lZEF0dHJpYnV0ZT4NCisgICAgICAgIDxvd25lZEF0dHJpYnV0ZSB4bWk6aWQ9IlN5c01MLUFjdGl2aXRpZXMtUmF0ZS1iYXNlX09iamVjdE5vZGUiIG5hbWU9ImJhc2VfT2JqZWN0Tm9kZSIgdmlzaWJpbGl0eT0icHVibGljIj4NCisgICAgICAgICAgPHR5cGUgeG1pOnR5cGU9InVtbDpDbGFzcyIgaHJlZj0icGF0aG1hcDovL1VNTF9NRVRBTU9ERUxTL1VNTC5tZXRhbW9kZWwudW1sI09iamVjdE5vZGUiLz4NCisgICAgICAgICAgPGxvd2VyVmFsdWUgeG1pOnR5cGU9InVtbDpMaXRlcmFsSW50ZWdlciIgeG1pOmlkPSJTeXNNTC1BY3Rpdml0aWVzLVJhdGUtYmFzZV9PYmplY3ROb2RlLWxvd2VyVmFsdWUiIG5hbWU9IiIvPg0KKyAgICAgICAgICA8dXBwZXJWYWx1ZSB4bWk6dHlwZT0idW1sOkxpdGVyYWxVbmxpbWl0ZWROYXR1cmFsIiB4bWk6aWQ9IlN5c01MLUFjdGl2aXRpZXMtUmF0ZS1iYXNlX09iamVjdE5vZGUtdXBwZXJWYWx1ZSIgbmFtZT0iIiB2YWx1ZT0iMSIvPg0KKyAgICAgICAgPC9vd25lZEF0dHJpYnV0ZT4NCisgICAgICAgIDxvd25lZEF0dHJpYnV0ZSB4bWk6aWQ9IlN5c01MLUFjdGl2aXRpZXMtUmF0ZS1iYXNlX1BhcmFtZXRlciIgbmFtZT0iYmFzZV9QYXJhbWV0ZXIiIHZpc2liaWxpdHk9InB1YmxpYyIgYXNzb2NpYXRpb249IlN5c01MLUFjdGl2aXRpZXMtRV9leHRlbnNpb25fUmF0ZV9iYXNlX1BhcmFtZXRlciI+DQorICAgICAgICAgIDx0eXBlIHhtaTp0eXBlPSJ1bWw6Q2xhc3MiIGhyZWY9InBhdGhtYXA6Ly9VTUxfTUVUQU1PREVMUy9VTUwubWV0YW1vZGVsLnVtbCNQYXJhbWV0ZXIiLz4NCisgICAgICAgICAgPGxvd2VyVmFsdWUgeG1pOnR5cGU9InVtbDpMaXRlcmFsSW50ZWdlciIgeG1pOmlkPSJTeXNNTC1BY3Rpdml0aWVzLVJhdGUtYmFzZV9QYXJhbWV0ZXItbG93ZXJWYWx1ZSIgbmFtZT0iIi8+DQorICAgICAgICAgIDx1cHBlclZhbHVlIHhtaTp0eXBlPSJ1bWw6TGl0ZXJhbFVubGltaXRlZE5hdHVyYWwiIHhtaTppZD0iU3lzTUwtQWN0aXZpdGllcy1SYXRlLWJhc2VfUGFyYW1ldGVyLXVwcGVyVmFsdWUiIG5hbWU9IiIgdmFsdWU9IjEiLz4NCisgICAgICAgIDwvb3duZWRBdHRyaWJ1dGU+DQorICAgICAgPC9wYWNrYWdlZEVsZW1lbnQ+DQorICAgICAgPHBhY2thZ2VkRWxlbWVudCB4bWk6dHlwZT0idW1sOlN0ZXJlb3R5cGUiIHhtaTppZD0iU3lzTUwtQWN0aXZpdGllcy1Ob0J1ZmZlciIgbmFtZT0iTm9CdWZmZXIiPg0KKyAgICAgICAgPG93bmVkQ29tbWVudCB4bWk6aWQ9IlN5c01MLUFjdGl2aXRpZXMtTm9CdWZmZXItb3duZWRDb21tZW50IiBhbm5vdGF0ZWRFbGVtZW50PSJTeXNNTC1BY3Rpdml0aWVzLU5vQnVmZmVyIj4NCisgICAgICAgICAgPGJvZHk+V2hlbiB0aGlzIHN0ZXJlb3R5cGUgaXMgYXBwbGllZCB0byBvYmplY3Qgbm9kZXMsIHRva2VucyBhcnJpdmluZyBhdCB0aGUgbm9kZSBhcmUgZGlzY2FyZGVkIGlmIHRoZXkgYXJlIHJlZnVzZWQgYnkgb3V0Z29pbmcgZWRnZXMsIG9yIHJlZnVzZWQgYnkgYWN0aW9ucyBmb3Igb2JqZWN0IG5vZGVzIHRoYXQgYXJlIGlucHV0IHBpbnMuIFRoaXMgaXMgdHlwaWNhbGx5IHVzZWQgd2l0aCBmYXN0IG9yIGNvbnRpbnVvdXNseSBmbG93aW5nIGRhdGEgdmFsdWVzLCB0byBwcmV2ZW50IGJ1ZmZlciBvdmVycnVuLCBvciB0byBtb2RlbCB0cmFuc2llbnQgdmFsdWVzLCBzdWNoIGFzIGVsZWN0cmljYWwgc2lnbmFscy4gRm9yIG9iamVjdCBub2RlcyB0aGF0IGFyZSB0aGUgdGFyZ2V0IG9mIGNvbnRpbnVvdXMgZmxvd3MsIMKrbm9idWZmZXLCuyBhbmQgwqtvdmVyd3JpdGXCuyBoYXZlIHRoZSBzYW1lIGVmZmVjdC4gVGhlIHN0ZXJlb3R5cGUgZG9lcyBub3Qgb3ZlcnJpZGUgVU1MIHRva2VuIG9mZmVyaW5nIHNlbWFudGljczsgaXQganVzdCBpbmRpY2F0ZXMgd2hhdCBoYXBwZW5zIHRvIHRoZSB0b2tlbiB3aGVuIGl0IGlzIGFjY2VwdGVkLiBXaGVuIHRoZSBzdGVyZW90eXBlIGlzIG5vdCBhcHBsaWVkLCB0aGUgc2VtYW50aWNzIGFyZSBhcyBpbiBVTUwsIHNwZWNpZmljYWxseSwgdG9rZW5zIGFycml2aW5nIGF0IGFuIG9iamVjdCBub2RlIHRoYXQgYXJlIHJlZnVzZWQgYnkgb3V0Z29pbmcgZWRnZXMsIG9yIGFjdGlvbiBmb3IgaW5wdXQgcGlucywgYXJlIGhlbGQgdW50aWwgdGhleSBjYW4gbGVhdmUgdGhlIG9iamVjdCBub2RlLjwvYm9keT4NCisgICAgICAgIDwvb3duZWRDb21tZW50Pg0KKyAgICAgICAgPG93bmVkQXR0cmlidXRlIHhtaTppZD0iU3lzTUwtQWN0aXZpdGllcy1Ob0J1ZmZlci1iYXNlX09iamVjdE5vZGUiIG5hbWU9ImJhc2VfT2JqZWN0Tm9kZSIgdmlzaWJpbGl0eT0icHVibGljIiBhc3NvY2lhdGlvbj0iU3lzTUwtQWN0aXZpdGllcy1FX2V4dGVuc2lvbl9Ob0J1ZmZlcl9iYXNlX09iamVjdE5vZGUiPg0KKyAgICAgICAgICA8dHlwZSB4bWk6dHlwZT0idW1sOkNsYXNzIiBocmVmPSJwYXRobWFwOi8vVU1MX01FVEFNT0RFTFMvVU1MLm1ldGFtb2RlbC51bWwjT2JqZWN0Tm9kZSIvPg0KKyAgICAgICAgICA8bG93ZXJWYWx1ZSB4bWk6dHlwZT0idW1sOkxpdGVyYWxJbnRlZ2VyIiB4bWk6aWQ9IlN5c01MLUFjdGl2aXRpZXMtTm9CdWZmZXItYmFzZV9PYmplY3ROb2RlLWxvd2VyVmFsdWUiIG5hbWU9IiIvPg0KKyAgICAgICAgICA8dXBwZXJWYWx1ZSB4bWk6dHlwZT0idW1sOkxpdGVyYWxVbmxpbWl0ZWROYXR1cmFsIiB4bWk6aWQ9IlN5c01MLUFjdGl2aXRpZXMtTm9CdWZmZXItYmFzZV9PYmplY3ROb2RlLXVwcGVyVmFsdWUiIG5hbWU9IiIgdmFsdWU9IjEiLz4NCisgICAgICAgIDwvb3duZWRBdHRyaWJ1dGU+DQorICAgICAgPC9wYWNrYWdlZEVsZW1lbnQ+DQorICAgICAgPHBhY2thZ2VkRWxlbWVudCB4bWk6dHlwZT0idW1sOlN0ZXJlb3R5cGUiIHhtaTppZD0iU3lzTUwtQWN0aXZpdGllcy1EaXNjcmV0ZSIgbmFtZT0iRGlzY3JldGUiPg0KKyAgICAgICAgPG93bmVkQ29tbWVudCB4bWk6aWQ9IlN5c01MLUFjdGl2aXRpZXMtRGlzY3JldGUtb3duZWRDb21tZW50IiBhbm5vdGF0ZWRFbGVtZW50PSJTeXNNTC1BY3Rpdml0aWVzLURpc2NyZXRlIj4NCisgICAgICAgICAgPGJvZHk+RGlzY3JldGUgcmF0ZSBpcyBhIHNwZWNpYWwgY2FzZSBvZiByYXRlIG9mIGZsb3cgKHNlZSBSYXRlKSB3aGVyZSB0aGUgaW5jcmVtZW50IG9mIHRpbWUgYmV0d2VlbiBpdGVtcyBpcyBub24temVyby48L2JvZHk+DQorICAgICAgICA8L293bmVkQ29tbWVudD4NCisgICAgICAgIDxnZW5lcmFsaXphdGlvbiB4bWk6aWQ9IlN5c01MLUFjdGl2aXRpZXMtRGlzY3JldGUtZ2VuZXJhbGl6YXRpb24iIGdlbmVyYWw9IlN5c01MLUFjdGl2aXRpZXMtUmF0ZSIgaXNTdWJzdGl0dXRhYmxlPSJmYWxzZSIvPg0KKyAgICAgIDwvcGFja2FnZWRFbGVtZW50Pg0KKyAgICAgIDxwYWNrYWdlZEVsZW1lbnQgeG1pOnR5cGU9InVtbDpTdGVyZW90eXBlIiB4bWk6aWQ9IlN5c01MLUFjdGl2aXRpZXMtQ29udGludW91cyIgbmFtZT0iQ29udGludW91cyI+DQorICAgICAgICA8b3duZWRDb21tZW50IHhtaTppZD0iU3lzTUwtQWN0aXZpdGllcy1Db250aW51b3VzLW93bmVkQ29tbWVudCIgYW5ub3RhdGVkRWxlbWVudD0iU3lzTUwtQWN0aXZpdGllcy1Db250aW51b3VzIj4NCisgICAgICAgICAgPGJvZHk+Q29udGludW91cyByYXRlIGlzIGEgc3BlY2lhbCBjYXNlIG9mIHJhdGUgb2YgZmxvdyAoc2VlIFJhdGUpIHdoZXJlIHRoZSBpbmNyZW1lbnQgb2YgdGltZSBiZXR3ZWVuIGl0ZW1zIGFwcHJvYWNoZXMgemVyby4gSXQgaXMgaW50ZW5kZWQgdG8gcmVwcmVzZW50IGNvbnRpbnVvdXMgZmxvd3MgdGhhdCBtYXkgY29ycmVzcG9uZCB0byB3YXRlciBmbG93aW5nIHRocm91Z2ggYSBwaXBlLCBhIHRpbWUgY29udGludW91cyBzaWduYWwsIG9yIGNvbnRpbnVvdXMgZW5lcmd5IGZsb3cuIEl0IGlzIGluZGVwZW5kZW50IGZyb20gVU1MIHN0cmVhbWluZy4gQSBzdHJlYW1pbmcgcGFyYW1ldGVyIG1heSBvciBtYXkgbm90IGFwcGx5IHRvIGNvbnRpbnVvdXMgZmxvdywgYW5kIGEgY29udGludW91cyBmbG93IG1heSBvciBtYXkgbm90IGFwcGx5IHRvIHN0cmVhbWluZyBwYXJhbWV0ZXJzLjwvYm9keT4NCisgICAgICAgIDwvb3duZWRDb21tZW50Pg0KKyAgICAgICAgPGdlbmVyYWxpemF0aW9uIHhtaTppZD0iU3lzTUwtQWN0aXZpdGllcy1Db250aW51b3VzLWdlbmVyYWxpemF0aW9uIiBnZW5lcmFsPSJTeXNNTC1BY3Rpdml0aWVzLVJhdGUiIGlzU3Vic3RpdHV0YWJsZT0iZmFsc2UiLz4NCisgICAgICA8L3BhY2thZ2VkRWxlbWVudD4NCisgICAgICA8cGFja2FnZWRFbGVtZW50IHhtaTp0eXBlPSJ1bWw6RXh0ZW5zaW9uIiB4bWk6aWQ9IlN5c01MLUFjdGl2aXRpZXMtRV9leHRlbnNpb25fUHJvYmFiaWxpdHlfYmFzZV9QYXJhbWV0ZXJTZXQiIG5hbWU9IkVfZXh0ZW5zaW9uX1Byb2JhYmlsaXR5X2Jhc2VfUGFyYW1ldGVyU2V0IiBtZW1iZXJFbmQ9IlN5c01MLUFjdGl2aXRpZXMtRV9leHRlbnNpb25fUHJvYmFiaWxpdHlfYmFzZV9QYXJhbWV0ZXJTZXQtZXh0ZW5zaW9uX1Byb2JhYmlsaXR5IFN5c01MLUFjdGl2aXRpZXMtUHJvYmFiaWxpdHktYmFzZV9QYXJhbWV0ZXJTZXQiIG5hdmlnYWJsZU93bmVkRW5kPSJTeXNNTC1BY3Rpdml0aWVzLUVfZXh0ZW5zaW9uX1Byb2JhYmlsaXR5X2Jhc2VfUGFyYW1ldGVyU2V0LWV4dGVuc2lvbl9Qcm9iYWJpbGl0eSI+DQorICAgICAgICA8b3duZWRFbmQgeG1pOnR5cGU9InVtbDpFeHRlbnNpb25FbmQiIHhtaTppZD0iU3lzTUwtQWN0aXZpdGllcy1FX2V4dGVuc2lvbl9Qcm9iYWJpbGl0eV9iYXNlX1BhcmFtZXRlclNldC1leHRlbnNpb25fUHJvYmFiaWxpdHkiIG5hbWU9ImV4dGVuc2lvbl9Qcm9iYWJpbGl0eSIgdmlzaWJpbGl0eT0icHVibGljIiB0eXBlPSJTeXNNTC1BY3Rpdml0aWVzLVByb2JhYmlsaXR5IiBhZ2dyZWdhdGlvbj0iY29tcG9zaXRlIiBhc3NvY2lhdGlvbj0iU3lzTUwtQWN0aXZpdGllcy1FX2V4dGVuc2lvbl9Qcm9iYWJpbGl0eV9iYXNlX1BhcmFtZXRlclNldCI+DQorICAgICAgICAgIDxsb3dlclZhbHVlIHhtaTp0eXBlPSJ1bWw6TGl0ZXJhbEludGVnZXIiIHhtaTppZD0iU3lzTUwtQWN0aXZpdGllcy1FX2V4dGVuc2lvbl9Qcm9iYWJpbGl0eV9iYXNlX1BhcmFtZXRlclNldC1leHRlbnNpb25fUHJvYmFiaWxpdHktbG93ZXJWYWx1ZSIgbmFtZT0iIi8+DQorICAgICAgICAgIDx1cHBlclZhbHVlIHhtaTp0eXBlPSJ1bWw6TGl0ZXJhbEludGVnZXIiIHhtaTppZD0iU3lzTUwtQWN0aXZpdGllcy1FX2V4dGVuc2lvbl9Qcm9iYWJpbGl0eV9iYXNlX1BhcmFtZXRlclNldC1leHRlbnNpb25fUHJvYmFiaWxpdHktdXBwZXJWYWx1ZSIgbmFtZT0iIiB2YWx1ZT0iMSIvPg0KKyAgICAgICAgPC9vd25lZEVuZD4NCisgICAgICA8L3BhY2thZ2VkRWxlbWVudD4NCisgICAgICA8cGFja2FnZWRFbGVtZW50IHhtaTp0eXBlPSJ1bWw6RXh0ZW5zaW9uIiB4bWk6aWQ9IlN5c01MLUFjdGl2aXRpZXMtRV9leHRlbnNpb25fT3ZlcndyaXRlX2Jhc2VfT2JqZWN0Tm9kZSIgbmFtZT0iRV9leHRlbnNpb25fT3ZlcndyaXRlX2Jhc2VfT2JqZWN0Tm9kZSIgbWVtYmVyRW5kPSJTeXNNTC1BY3Rpdml0aWVzLUVfZXh0ZW5zaW9uX092ZXJ3cml0ZV9iYXNlX09iamVjdE5vZGUtZXh0ZW5zaW9uX092ZXJ3cml0ZSBTeXNNTC1BY3Rpdml0aWVzLU92ZXJ3cml0ZS1iYXNlX09iamVjdE5vZGUiIG5hdmlnYWJsZU93bmVkRW5kPSJTeXNNTC1BY3Rpdml0aWVzLUVfZXh0ZW5zaW9uX092ZXJ3cml0ZV9iYXNlX09iamVjdE5vZGUtZXh0ZW5zaW9uX092ZXJ3cml0ZSI+DQorICAgICAgICA8b3duZWRFbmQgeG1pOnR5cGU9InVtbDpFeHRlbnNpb25FbmQiIHhtaTppZD0iU3lzTUwtQWN0aXZpdGllcy1FX2V4dGVuc2lvbl9PdmVyd3JpdGVfYmFzZV9PYmplY3ROb2RlLWV4dGVuc2lvbl9PdmVyd3JpdGUiIG5hbWU9ImV4dGVuc2lvbl9PdmVyd3JpdGUiIHZpc2liaWxpdHk9InB1YmxpYyIgdHlwZT0iU3lzTUwtQWN0aXZpdGllcy1PdmVyd3JpdGUiIGFnZ3JlZ2F0aW9uPSJjb21wb3NpdGUiIGFzc29jaWF0aW9uPSJTeXNNTC1BY3Rpdml0aWVzLUVfZXh0ZW5zaW9uX092ZXJ3cml0ZV9iYXNlX09iamVjdE5vZGUiPg0KKyAgICAgICAgICA8bG93ZXJWYWx1ZSB4bWk6dHlwZT0idW1sOkxpdGVyYWxJbnRlZ2VyIiB4bWk6aWQ9IlN5c01MLUFjdGl2aXRpZXMtRV9leHRlbnNpb25fT3ZlcndyaXRlX2Jhc2VfT2JqZWN0Tm9kZS1leHRlbnNpb25fT3ZlcndyaXRlLWxvd2VyVmFsdWUiIG5hbWU9IiIvPg0KKyAgICAgICAgICA8dXBwZXJWYWx1ZSB4bWk6dHlwZT0idW1sOkxpdGVyYWxJbnRlZ2VyIiB4bWk6aWQ9IlN5c01MLUFjdGl2aXRpZXMtRV9leHRlbnNpb25fT3ZlcndyaXRlX2Jhc2VfT2JqZWN0Tm9kZS1leHRlbnNpb25fT3ZlcndyaXRlLXVwcGVyVmFsdWUiIG5hbWU9IiIgdmFsdWU9IjEiLz4NCisgICAgICAgIDwvb3duZWRFbmQ+DQorICAgICAgPC9wYWNrYWdlZEVsZW1lbnQ+DQorICAgICAgPHBhY2thZ2VkRWxlbWVudCB4bWk6dHlwZT0idW1sOkV4dGVuc2lvbiIgeG1pOmlkPSJTeXNNTC1BY3Rpdml0aWVzLUVfZXh0ZW5zaW9uX0NvbnRyb2xPcGVyYXRvcl9iYXNlX09wZXJhdGlvbiIgbmFtZT0iRV9leHRlbnNpb25fQ29udHJvbE9wZXJhdG9yX2Jhc2VfT3BlcmF0aW9uIiBtZW1iZXJFbmQ9IlN5c01MLUFjdGl2aXRpZXMtRV9leHRlbnNpb25fQ29udHJvbE9wZXJhdG9yX2Jhc2VfT3BlcmF0aW9uLWV4dGVuc2lvbl9Db250cm9sT3BlcmF0b3IgU3lzTUwtQWN0aXZpdGllcy1Db250cm9sT3BlcmF0b3ItYmFzZV9PcGVyYXRpb24iIG5hdmlnYWJsZU93bmVkRW5kPSJTeXNNTC1BY3Rpdml0aWVzLUVfZXh0ZW5zaW9uX0NvbnRyb2xPcGVyYXRvcl9iYXNlX09wZXJhdGlvbi1leHRlbnNpb25fQ29udHJvbE9wZXJhdG9yIj4NCisgICAgICAgIDxvd25lZEVuZCB4bWk6dHlwZT0idW1sOkV4dGVuc2lvbkVuZCIgeG1pOmlkPSJTeXNNTC1BY3Rpdml0aWVzLUVfZXh0ZW5zaW9uX0NvbnRyb2xPcGVyYXRvcl9iYXNlX09wZXJhdGlvbi1leHRlbnNpb25fQ29udHJvbE9wZXJhdG9yIiBuYW1lPSJleHRlbnNpb25fQ29udHJvbE9wZXJhdG9yIiB2aXNpYmlsaXR5PSJwdWJsaWMiIHR5cGU9IlN5c01MLUFjdGl2aXRpZXMtQ29udHJvbE9wZXJhdG9yIiBhZ2dyZWdhdGlvbj0iY29tcG9zaXRlIiBhc3NvY2lhdGlvbj0iU3lzTUwtQWN0aXZpdGllcy1FX2V4dGVuc2lvbl9Db250cm9sT3BlcmF0b3JfYmFzZV9PcGVyYXRpb24iPg0KKyAgICAgICAgICA8bG93ZXJWYWx1ZSB4bWk6dHlwZT0idW1sOkxpdGVyYWxJbnRlZ2VyIiB4bWk6aWQ9IlN5c01MLUFjdGl2aXRpZXMtRV9leHRlbnNpb25fQ29udHJvbE9wZXJhdG9yX2Jhc2VfT3BlcmF0aW9uLWV4dGVuc2lvbl9Db250cm9sT3BlcmF0b3ItbG93ZXJWYWx1ZSIgbmFtZT0iIi8+DQorICAgICAgICAgIDx1cHBlclZhbHVlIHhtaTp0eXBlPSJ1bWw6TGl0ZXJhbEludGVnZXIiIHhtaTppZD0iU3lzTUwtQWN0aXZpdGllcy1FX2V4dGVuc2lvbl9Db250cm9sT3BlcmF0b3JfYmFzZV9PcGVyYXRpb24tZXh0ZW5zaW9uX0NvbnRyb2xPcGVyYXRvci11cHBlclZhbHVlIiBuYW1lPSIiIHZhbHVlPSIxIi8+DQorICAgICAgICA8L293bmVkRW5kPg0KKyAgICAgIDwvcGFja2FnZWRFbGVtZW50Pg0KKyAgICAgIDxwYWNrYWdlZEVsZW1lbnQgeG1pOnR5cGU9InVtbDpFeHRlbnNpb24iIHhtaTppZD0iU3lzTUwtQWN0aXZpdGllcy1FX2V4dGVuc2lvbl9SYXRlX2Jhc2VfUGFyYW1ldGVyIiBuYW1lPSJFX2V4dGVuc2lvbl9SYXRlX2Jhc2VfUGFyYW1ldGVyIiBtZW1iZXJFbmQ9IlN5c01MLUFjdGl2aXRpZXMtRV9leHRlbnNpb25fUmF0ZV9iYXNlX1BhcmFtZXRlci1leHRlbnNpb25fUmF0ZSBTeXNNTC1BY3Rpdml0aWVzLVJhdGUtYmFzZV9QYXJhbWV0ZXIiIG5hdmlnYWJsZU93bmVkRW5kPSJTeXNNTC1BY3Rpdml0aWVzLUVfZXh0ZW5zaW9uX1JhdGVfYmFzZV9QYXJhbWV0ZXItZXh0ZW5zaW9uX1JhdGUiPg0KKyAgICAgICAgPG93bmVkRW5kIHhtaTp0eXBlPSJ1bWw6RXh0ZW5zaW9uRW5kIiB4bWk6aWQ9IlN5c01MLUFjdGl2aXRpZXMtRV9leHRlbnNpb25fUmF0ZV9iYXNlX1BhcmFtZXRlci1leHRlbnNpb25fUmF0ZSIgbmFtZT0iZXh0ZW5zaW9uX1JhdGUiIHZpc2liaWxpdHk9InB1YmxpYyIgdHlwZT0iU3lzTUwtQWN0aXZpdGllcy1SYXRlIiBhZ2dyZWdhdGlvbj0iY29tcG9zaXRlIiBhc3NvY2lhdGlvbj0iU3lzTUwtQWN0aXZpdGllcy1FX2V4dGVuc2lvbl9SYXRlX2Jhc2VfUGFyYW1ldGVyIj4NCisgICAgICAgICAgPGxvd2VyVmFsdWUgeG1pOnR5cGU9InVtbDpMaXRlcmFsSW50ZWdlciIgeG1pOmlkPSJTeXNNTC1BY3Rpdml0aWVzLUVfZXh0ZW5zaW9uX1JhdGVfYmFzZV9QYXJhbWV0ZXItZXh0ZW5zaW9uX1JhdGUtbG93ZXJWYWx1ZSIgbmFtZT0iIi8+DQorICAgICAgICAgIDx1cHBlclZhbHVlIHhtaTp0eXBlPSJ1bWw6TGl0ZXJhbFVubGltaXRlZE5hdHVyYWwiIHhtaTppZD0iU3lzTUwtQWN0aXZpdGllcy1FX2V4dGVuc2lvbl9SYXRlX2Jhc2VfUGFyYW1ldGVyLWV4dGVuc2lvbl9SYXRlLXVwcGVyVmFsdWUiIG5hbWU9IiIgdmFsdWU9IjEiLz4NCisgICAgICAgIDwvb3duZWRFbmQ+DQorICAgICAgPC9wYWNrYWdlZEVsZW1lbnQ+DQorICAgICAgPHBhY2thZ2VkRWxlbWVudCB4bWk6dHlwZT0idW1sOkV4dGVuc2lvbiIgeG1pOmlkPSJTeXNNTC1BY3Rpdml0aWVzLUVfZXh0ZW5zaW9uX1Byb2JhYmlsaXR5X2Jhc2VfQWN0aXZpdHlFZGdlIiBuYW1lPSJFX2V4dGVuc2lvbl9Qcm9iYWJpbGl0eV9iYXNlX0FjdGl2aXR5RWRnZSIgbWVtYmVyRW5kPSJTeXNNTC1BY3Rpdml0aWVzLUVfZXh0ZW5zaW9uX1Byb2JhYmlsaXR5X2Jhc2VfQWN0aXZpdHlFZGdlLWV4dGVuc2lvbl9Qcm9iYWJpbGl0eSBTeXNNTC1BY3Rpdml0aWVzLVByb2JhYmlsaXR5LWJhc2VfQWN0aXZpdHlFZGdlIiBuYXZpZ2FibGVPd25lZEVuZD0iU3lzTUwtQWN0aXZpdGllcy1FX2V4dGVuc2lvbl9Qcm9iYWJpbGl0eV9iYXNlX0FjdGl2aXR5RWRnZS1leHRlbnNpb25fUHJvYmFiaWxpdHkiPg0KKyAgICAgICAgPG93bmVkRW5kIHhtaTp0eXBlPSJ1bWw6RXh0ZW5zaW9uRW5kIiB4bWk6aWQ9IlN5c01MLUFjdGl2aXRpZXMtRV9leHRlbnNpb25fUHJvYmFiaWxpdHlfYmFzZV9BY3Rpdml0eUVkZ2UtZXh0ZW5zaW9uX1Byb2JhYmlsaXR5IiBuYW1lPSJleHRlbnNpb25fUHJvYmFiaWxpdHkiIHZpc2liaWxpdHk9InB1YmxpYyIgdHlwZT0iU3lzTUwtQWN0aXZpdGllcy1Qcm9iYWJpbGl0eSIgYWdncmVnYXRpb249ImNvbXBvc2l0ZSIgYXNzb2NpYXRpb249IlN5c01MLUFjdGl2aXRpZXMtRV9leHRlbnNpb25fUHJvYmFiaWxpdHlfYmFzZV9BY3Rpdml0eUVkZ2UiPg0KKyAgICAgICAgICA8bG93ZXJWYWx1ZSB4bWk6dHlwZT0idW1sOkxpdGVyYWxJbnRlZ2VyIiB4bWk6aWQ9IlN5c01MLUFjdGl2aXRpZXMtRV9leHRlbnNpb25fUHJvYmFiaWxpdHlfYmFzZV9BY3Rpdml0eUVkZ2UtZXh0ZW5zaW9uX1Byb2JhYmlsaXR5LWxvd2VyVmFsdWUiIG5hbWU9IiIvPg0KKyAgICAgICAgICA8dXBwZXJWYWx1ZSB4bWk6dHlwZT0idW1sOkxpdGVyYWxJbnRlZ2VyIiB4bWk6aWQ9IlN5c01MLUFjdGl2aXRpZXMtRV9leHRlbnNpb25fUHJvYmFiaWxpdHlfYmFzZV9BY3Rpdml0eUVkZ2UtZXh0ZW5zaW9uX1Byb2JhYmlsaXR5LXVwcGVyVmFsdWUiIG5hbWU9IiIgdmFsdWU9IjEiLz4NCisgICAgICAgIDwvb3duZWRFbmQ+DQorICAgICAgPC9wYWNrYWdlZEVsZW1lbnQ+DQorICAgICAgPHBhY2thZ2VkRWxlbWVudCB4bWk6dHlwZT0idW1sOlN0ZXJlb3R5cGUiIHhtaTppZD0iU3lzTUwtQWN0aXZpdGllcy1Qcm9iYWJpbGl0eSIgbmFtZT0iUHJvYmFiaWxpdHkiPg0KKyAgICAgICAgPG93bmVkQ29tbWVudCB4bWk6aWQ9IlN5c01MLUFjdGl2aXRpZXMtUHJvYmFiaWxpdHktb3duZWRDb21tZW50IiBhbm5vdGF0ZWRFbGVtZW50PSJTeXNNTC1BY3Rpdml0aWVzLVByb2JhYmlsaXR5Ij4NCisgICAgICAgICAgPGJvZHk+V2hlbiB0aGUgwqtwcm9iYWJpbGl0ecK7IHN0ZXJlb3R5cGUgaXMgYXBwbGllZCB0byBlZGdlcyBjb21pbmcgb3V0IG9mIGRlY2lzaW9uIG5vZGVzIGFuZCBvYmplY3Qgbm9kZXMsIGl0IHByb3ZpZGVzIGFuIGV4cHJlc3Npb24gZm9yIHRoZSBwcm9iYWJpbGl0eSB0aGF0IHRoZSBlZGdlIHdpbGwgYmUgdHJhdmVyc2VkLiBUaGVzZSBtdXN0IGJlIGJldHdlZW4gemVybyBhbmQgb25lIGluY2x1c2l2ZSwgYW5kIGFkZCB1cCB0byBvbmUgZm9yIGVkZ2VzIHdpdGggc2FtZSBzb3VyY2UgYXQgdGhlIHRpbWUgdGhlIHByb2JhYmlsaXRpZXMgYXJlIHVzZWQuDQorV2hlbiB0aGUgwqtwcm9iYWJpbGl0ecK7IHN0ZXJlb3R5cGUgaXMgYXBwbGllZCB0byBvdXRwdXQgcGFyYW1ldGVyIHNldHMsIGl0IGdpdmVzIHRoZSBwcm9iYWJpbGl0eSB0aGUgcGFyYW1ldGVyIHNldCB3aWxsIGJlIGdpdmVuIHZhbHVlcyBhdCBydW50aW1lLiBUaGVzZSBtdXN0IGJlIGJldHdlZW4gemVybyBhbmQgb25lIGluY2x1c2l2ZSwgYW5kIGFkZCB1cCB0byBvbmUgZm9yIG91dHB1dCBwYXJhbWV0ZXIgc2V0cyBvZiB0aGUgc2FtZSBiZWhhdmlvciBhdCB0aGUgdGltZSB0aGUgcHJvYmFiaWxpdGllcyBhcmUgdXNlZC48L2JvZHk+DQorICAgICAgICA8L293bmVkQ29tbWVudD4NCisgICAgICAgIDxvd25lZEF0dHJpYnV0ZSB4bWk6aWQ9IlN5c01MLUFjdGl2aXRpZXMtUHJvYmFiaWxpdHktYmFzZV9BY3Rpdml0eUVkZ2UiIG5hbWU9ImJhc2VfQWN0aXZpdHlFZGdlIiB2aXNpYmlsaXR5PSJwdWJsaWMiIGFzc29jaWF0aW9uPSJTeXNNTC1BY3Rpdml0aWVzLUVfZXh0ZW5zaW9uX1Byb2JhYmlsaXR5X2Jhc2VfQWN0aXZpdHlFZGdlIj4NCisgICAgICAgICAgPHR5cGUgeG1pOnR5cGU9InVtbDpDbGFzcyIgaHJlZj0icGF0aG1hcDovL1VNTF9NRVRBTU9ERUxTL1VNTC5tZXRhbW9kZWwudW1sI0FjdGl2aXR5RWRnZSIvPg0KKyAgICAgICAgICA8bG93ZXJWYWx1ZSB4bWk6dHlwZT0idW1sOkxpdGVyYWxJbnRlZ2VyIiB4bWk6aWQ9IlN5c01MLUFjdGl2aXRpZXMtUHJvYmFiaWxpdHktYmFzZV9BY3Rpdml0eUVkZ2UtbG93ZXJWYWx1ZSIgbmFtZT0iIi8+DQorICAgICAgICAgIDx1cHBlclZhbHVlIHhtaTp0eXBlPSJ1bWw6TGl0ZXJhbFVubGltaXRlZE5hdHVyYWwiIHhtaTppZD0iU3lzTUwtQWN0aXZpdGllcy1Qcm9iYWJpbGl0eS1iYXNlX0FjdGl2aXR5RWRnZS11cHBlclZhbHVlIiBuYW1lPSIiIHZhbHVlPSIxIi8+DQorICAgICAgICA8L293bmVkQXR0cmlidXRlPg0KKyAgICAgICAgPG93bmVkQXR0cmlidXRlIHhtaTppZD0iU3lzTUwtQWN0aXZpdGllcy1Qcm9iYWJpbGl0eS1iYXNlX1BhcmFtZXRlclNldCIgbmFtZT0iYmFzZV9QYXJhbWV0ZXJTZXQiIHZpc2liaWxpdHk9InB1YmxpYyIgYXNzb2NpYXRpb249IlN5c01MLUFjdGl2aXRpZXMtRV9leHRlbnNpb25fUHJvYmFiaWxpdHlfYmFzZV9QYXJhbWV0ZXJTZXQiPg0KKyAgICAgICAgICA8dHlwZSB4bWk6dHlwZT0idW1sOkNsYXNzIiBocmVmPSJwYXRobWFwOi8vVU1MX01FVEFNT0RFTFMvVU1MLm1ldGFtb2RlbC51bWwjUGFyYW1ldGVyU2V0Ii8+DQorICAgICAgICAgIDxsb3dlclZhbHVlIHhtaTp0eXBlPSJ1bWw6TGl0ZXJhbEludGVnZXIiIHhtaTppZD0iU3lzTUwtQWN0aXZpdGllcy1Qcm9iYWJpbGl0eS1iYXNlX1BhcmFtZXRlclNldC1sb3dlclZhbHVlIiBuYW1lPSIiLz4NCisgICAgICAgICAgPHVwcGVyVmFsdWUgeG1pOnR5cGU9InVtbDpMaXRlcmFsVW5saW1pdGVkTmF0dXJhbCIgeG1pOmlkPSJTeXNNTC1BY3Rpdml0aWVzLVByb2JhYmlsaXR5LWJhc2VfUGFyYW1ldGVyU2V0LXVwcGVyVmFsdWUiIG5hbWU9IiIgdmFsdWU9IjEiLz4NCisgICAgICAgIDwvb3duZWRBdHRyaWJ1dGU+DQorICAgICAgICA8b3duZWRBdHRyaWJ1dGUgeG1pOmlkPSJTeXNNTC1BY3Rpdml0aWVzLVByb2JhYmlsaXR5LXByb2JhYmlsaXR5IiBuYW1lPSJwcm9iYWJpbGl0eSIgdmlzaWJpbGl0eT0icHVibGljIj4NCisgICAgICAgICAgPHR5cGUgeG1pOnR5cGU9InVtbDpDbGFzcyIgaHJlZj0icGF0aG1hcDovL1VNTF9NRVRBTU9ERUxTL1VNTC5tZXRhbW9kZWwudW1sI1ZhbHVlU3BlY2lmaWNhdGlvbiIvPg0KKyAgICAgICAgPC9vd25lZEF0dHJpYnV0ZT4NCisgICAgICA8L3BhY2thZ2VkRWxlbWVudD4NCisgICAgICA8cGFja2FnZWRFbGVtZW50IHhtaTp0eXBlPSJ1bWw6U3RlcmVvdHlwZSIgeG1pOmlkPSJTeXNNTC1BY3Rpdml0aWVzLU9wdGlvbmFsIiBuYW1lPSJPcHRpb25hbCI+DQorICAgICAgICA8b3duZWRDb21tZW50IHhtaTppZD0iU3lzTUwtQWN0aXZpdGllcy1PcHRpb25hbC1vd25lZENvbW1lbnQiIGFubm90YXRlZEVsZW1lbnQ9IlN5c01MLUFjdGl2aXRpZXMtT3B0aW9uYWwiPg0KKyAgICAgICAgICA8Ym9keT5XaGVuIHRoZSDCq29wdGlvbmFswrsgc3RlcmVvdHlwZSBpcyBhcHBsaWVkIHRvIHBhcmFtZXRlcnMsIHRoZSBsb3dlciBtdWx0aXBsaWNpdHkgbXVzdCBiZSBlcXVhbCB0byB6ZXJvLiBUaGlzIG1lYW5zIHRoZSBwYXJhbWV0ZXIgaXMgbm90IHJlcXVpcmVkIHRvIGhhdmUgYSB2YWx1ZSBmb3IgdGhlIGFjdGl2aXR5IG9yIGFueSBiZWhhdmlvciB0byBiZWdpbiBvciBlbmQgZXhlY3V0aW9uLiBPdGhlcndpc2UsIHRoZSBsb3dlciBtdWx0aXBsaWNpdHkgbXVzdCBiZSBncmVhdGVyIHRoYW4gemVybywgd2hpY2ggaXMgY2FsbGVkIOKAnHJlcXVpcmVkLuKAnTwvYm9keT4NCisgICAgICAgIDwvb3duZWRDb21tZW50Pg0KKyAgICAgICAgPG93bmVkQXR0cmlidXRlIHhtaTppZD0iU3lzTUwtQWN0aXZpdGllcy1PcHRpb25hbC1iYXNlX1BhcmFtZXRlciIgbmFtZT0iYmFzZV9QYXJhbWV0ZXIiIHZpc2liaWxpdHk9InB1YmxpYyIgYXNzb2NpYXRpb249IlN5c01MLUFjdGl2aXRpZXMtRV9leHRlbnNpb25fT3B0aW9uYWxfYmFzZV9QYXJhbWV0ZXIiPg0KKyAgICAgICAgICA8dHlwZSB4bWk6dHlwZT0idW1sOkNsYXNzIiBocmVmPSJwYXRobWFwOi8vVU1MX01FVEFNT0RFTFMvVU1MLm1ldGFtb2RlbC51bWwjUGFyYW1ldGVyIi8+DQorICAgICAgICAgIDxsb3dlclZhbHVlIHhtaTp0eXBlPSJ1bWw6TGl0ZXJhbEludGVnZXIiIHhtaTppZD0iU3lzTUwtQWN0aXZpdGllcy1PcHRpb25hbC1iYXNlX1BhcmFtZXRlci1sb3dlclZhbHVlIiBuYW1lPSIiLz4NCisgICAgICAgICAgPHVwcGVyVmFsdWUgeG1pOnR5cGU9InVtbDpMaXRlcmFsVW5saW1pdGVkTmF0dXJhbCIgeG1pOmlkPSJTeXNNTC1BY3Rpdml0aWVzLU9wdGlvbmFsLWJhc2VfUGFyYW1ldGVyLXVwcGVyVmFsdWUiIG5hbWU9IiIgdmFsdWU9IjEiLz4NCisgICAgICAgIDwvb3duZWRBdHRyaWJ1dGU+DQorICAgICAgPC9wYWNrYWdlZEVsZW1lbnQ+DQorICAgICAgPHBhY2thZ2VkRWxlbWVudCB4bWk6dHlwZT0idW1sOkV4dGVuc2lvbiIgeG1pOmlkPSJTeXNNTC1BY3Rpdml0aWVzLUVfZXh0ZW5zaW9uX09wdGlvbmFsX2Jhc2VfUGFyYW1ldGVyIiBuYW1lPSJFX2V4dGVuc2lvbl9PcHRpb25hbF9iYXNlX1BhcmFtZXRlciIgbWVtYmVyRW5kPSJTeXNNTC1BY3Rpdml0aWVzLUVfZXh0ZW5zaW9uX09wdGlvbmFsX2Jhc2VfUGFyYW1ldGVyLWV4dGVuc2lvbl9PcHRpb25hbCBTeXNNTC1BY3Rpdml0aWVzLU9wdGlvbmFsLWJhc2VfUGFyYW1ldGVyIiBuYXZpZ2FibGVPd25lZEVuZD0iU3lzTUwtQWN0aXZpdGllcy1FX2V4dGVuc2lvbl9PcHRpb25hbF9iYXNlX1BhcmFtZXRlci1leHRlbnNpb25fT3B0aW9uYWwiPg0KKyAgICAgICAgPG93bmVkRW5kIHhtaTp0eXBlPSJ1bWw6RXh0ZW5zaW9uRW5kIiB4bWk6aWQ9IlN5c01MLUFjdGl2aXRpZXMtRV9leHRlbnNpb25fT3B0aW9uYWxfYmFzZV9QYXJhbWV0ZXItZXh0ZW5zaW9uX09wdGlvbmFsIiBuYW1lPSJleHRlbnNpb25fT3B0aW9uYWwiIHZpc2liaWxpdHk9InB1YmxpYyIgdHlwZT0iU3lzTUwtQWN0aXZpdGllcy1PcHRpb25hbCIgYWdncmVnYXRpb249ImNvbXBvc2l0ZSIgYXNzb2NpYXRpb249IlN5c01MLUFjdGl2aXRpZXMtRV9leHRlbnNpb25fT3B0aW9uYWxfYmFzZV9QYXJhbWV0ZXIiPg0KKyAgICAgICAgICA8bG93ZXJWYWx1ZSB4bWk6dHlwZT0idW1sOkxpdGVyYWxJbnRlZ2VyIiB4bWk6aWQ9IlN5c01MLUFjdGl2aXRpZXMtRV9leHRlbnNpb25fT3B0aW9uYWxfYmFzZV9QYXJhbWV0ZXItZXh0ZW5zaW9uX09wdGlvbmFsLWxvd2VyVmFsdWUiIG5hbWU9IiIvPg0KKyAgICAgICAgICA8dXBwZXJWYWx1ZSB4bWk6dHlwZT0idW1sOkxpdGVyYWxJbnRlZ2VyIiB4bWk6aWQ9IlN5c01MLUFjdGl2aXRpZXMtRV9leHRlbnNpb25fT3B0aW9uYWxfYmFzZV9QYXJhbWV0ZXItZXh0ZW5zaW9uX09wdGlvbmFsLXVwcGVyVmFsdWUiIG5hbWU9IiIgdmFsdWU9IjEiLz4NCisgICAgICAgIDwvb3duZWRFbmQ+DQorICAgICAgPC9wYWNrYWdlZEVsZW1lbnQ+DQorICAgIDwvcGFja2FnZWRFbGVtZW50Pg0KKyAgICA8cGFja2FnZWRFbGVtZW50IHhtaTp0eXBlPSJ1bWw6UGFja2FnZSIgeG1pOmlkPSJTeXNNTC1Nb2RlbEVsZW1lbnRzIiBuYW1lPSJNb2RlbEVsZW1lbnRzIiBVUkk9IiI+DQorICAgICAgPHBhY2thZ2VkRWxlbWVudCB4bWk6dHlwZT0idW1sOlN0ZXJlb3R5cGUiIHhtaTppZD0iU3lzTUwtTW9kZWxFbGVtZW50cy1SYXRpb25hbGUiIG5hbWU9IlJhdGlvbmFsZSI+DQorICAgICAgICA8b3duZWRDb21tZW50IHhtaTppZD0iU3lzTUwtTW9kZWxFbGVtZW50cy1SYXRpb25hbGUtb3duZWRDb21tZW50IiBhbm5vdGF0ZWRFbGVtZW50PSJTeXNNTC1Nb2RlbEVsZW1lbnRzLVJhdGlvbmFsZSI+DQorICAgICAgICAgIDxib2R5PkEgUmF0aW9uYWxlIGRvY3VtZW50cyB0aGUganVzdGlmaWNhdGlvbiBmb3IgZGVjaXNpb25zIGFuZCB0aGUgcmVxdWlyZW1lbnRzLCBkZXNpZ24sIGFuZCBvdGhlciBkZWNpc2lvbnMuIEEgUmF0aW9uYWxlIGNhbiBiZSBhdHRhY2hlZCB0byBhbnkgbW9kZWwgZWxlbWVudCBpbmNsdWRpbmcgcmVsYXRpb25zaGlwcy4gSXQgYWxsb3dzIHRoZSB1c2VyLCBmb3IgZXhhbXBsZSwgdG8gc3BlY2lmeSBhIHJhdGlvbmFsZSB0aGF0IG1heSByZWZlcmVuY2UgbW9yZSBkZXRhaWxlZCBkb2N1bWVudGF0aW9uIHN1Y2ggYXMgYSB0cmFkZSBzdHVkeSBvciBhbmFseXNpcyByZXBvcnQuIFJhdGlvbmFsZSBpcyBhIHN0ZXJlb3R5cGUgb2YgY29tbWVudCBhbmQgbWF5IGJlIGF0dGFjaGVkIHRvIGFueSBvdGhlciBtb2RlbCBlbGVtZW50IGluIHRoZSBzYW1lIG1hbm5lciBhcyBhIGNvbW1lbnQuPC9ib2R5Pg0KKyAgICAgICAgPC9vd25lZENvbW1lbnQ+DQorICAgICAgICA8b3duZWRBdHRyaWJ1dGUgeG1pOmlkPSJTeXNNTC1Nb2RlbEVsZW1lbnRzLVJhdGlvbmFsZS1iYXNlX0NvbW1lbnQiIG5hbWU9ImJhc2VfQ29tbWVudCIgdmlzaWJpbGl0eT0icHVibGljIiBhc3NvY2lhdGlvbj0iU3lzTUwtTW9kZWxFbGVtZW50cy1FX2V4dGVuc2lvbl9SYXRpb25hbGVfYmFzZV9Db21tZW50Ij4NCisgICAgICAgICAgPHR5cGUgeG1pOnR5cGU9InVtbDpDbGFzcyIgaHJlZj0icGF0aG1hcDovL1VNTF9NRVRBTU9ERUxTL1VNTC5tZXRhbW9kZWwudW1sI0NvbW1lbnQiLz4NCisgICAgICAgICAgPGxvd2VyVmFsdWUgeG1pOnR5cGU9InVtbDpMaXRlcmFsSW50ZWdlciIgeG1pOmlkPSJTeXNNTC1Nb2RlbEVsZW1lbnRzLVJhdGlvbmFsZS1iYXNlX0NvbW1lbnQtbG93ZXJWYWx1ZSIgbmFtZT0iIi8+DQorICAgICAgICAgIDx1cHBlclZhbHVlIHhtaTp0eXBlPSJ1bWw6TGl0ZXJhbFVubGltaXRlZE5hdHVyYWwiIHhtaTppZD0iU3lzTUwtTW9kZWxFbGVtZW50cy1SYXRpb25hbGUtYmFzZV9Db21tZW50LXVwcGVyVmFsdWUiIG5hbWU9IiIgdmFsdWU9IjEiLz4NCisgICAgICAgIDwvb3duZWRBdHRyaWJ1dGU+DQorICAgICAgPC9wYWNrYWdlZEVsZW1lbnQ+DQorICAgICAgPHBhY2thZ2VkRWxlbWVudCB4bWk6dHlwZT0idW1sOlN0ZXJlb3R5cGUiIHhtaTppZD0iU3lzTUwtTW9kZWxFbGVtZW50cy1WaWV3IiBuYW1lPSJWaWV3Ij4NCisgICAgICAgIDxvd25lZENvbW1lbnQgeG1pOmlkPSJTeXNNTC1Nb2RlbEVsZW1lbnRzLVZpZXctb3duZWRDb21tZW50IiBhbm5vdGF0ZWRFbGVtZW50PSJTeXNNTC1Nb2RlbEVsZW1lbnRzLVZpZXciPg0KKyAgICAgICAgICA8Ym9keT5BIFZpZXcgaXMgYSByZXByZXNlbnRhdGlvbiBvZiBhIHdob2xlIHN5c3RlbSBvciBzdWJzeXN0ZW0gZnJvbSB0aGUgcGVyc3BlY3RpdmUgb2YgYSBzaW5nbGUgdmlld3BvaW50LiBWaWV3cyBhcmUgYWxsb3dlZCB0byBpbXBvcnQgb3RoZXIgZWxlbWVudHMgaW5jbHVkaW5nIG90aGVyIHBhY2thZ2VzIGFuZCBvdGhlciB2aWV3cyB0aGF0IGNvbmZvcm0gdG8gdGhlIHZpZXdwb2ludC48L2JvZHk+DQorICAgICAgICA8L293bmVkQ29tbWVudD4NCisgICAgICAgIDxvd25lZEF0dHJpYnV0ZSB4bWk6aWQ9IlN5c01MLU1vZGVsRWxlbWVudHMtVmlldy1iYXNlX1BhY2thZ2UiIG5hbWU9ImJhc2VfUGFja2FnZSIgdmlzaWJpbGl0eT0icHVibGljIiBhc3NvY2lhdGlvbj0iU3lzTUwtTW9kZWxFbGVtZW50cy1EZXByZWNhdGVkLUVfZXh0ZW5zaW9uX1ZpZXdfYmFzZV9QYWNrYWdlIj4NCisgICAgICAgICAgPHR5cGUgeG1pOnR5cGU9InVtbDpDbGFzcyIgaHJlZj0icGF0aG1hcDovL1VNTF9NRVRBTU9ERUxTL1VNTC5tZXRhbW9kZWwudW1sI1BhY2thZ2UiLz4NCisgICAgICAgICAgPGxvd2VyVmFsdWUgeG1pOnR5cGU9InVtbDpMaXRlcmFsSW50ZWdlciIgeG1pOmlkPSJTeXNNTC1Nb2RlbEVsZW1lbnRzLVZpZXctYmFzZV9QYWNrYWdlLWxvd2VyVmFsdWUiIG5hbWU9IiIvPg0KKyAgICAgICAgICA8dXBwZXJWYWx1ZSB4bWk6dHlwZT0idW1sOkxpdGVyYWxVbmxpbWl0ZWROYXR1cmFsIiB4bWk6aWQ9IlN5c01MLU1vZGVsRWxlbWVudHMtVmlldy1iYXNlX1BhY2thZ2UtdXBwZXJWYWx1ZSIgbmFtZT0iIiB2YWx1ZT0iMSIvPg0KKyAgICAgICAgPC9vd25lZEF0dHJpYnV0ZT4NCisgICAgICAgIDxvd25lZEF0dHJpYnV0ZSB4bWk6aWQ9IlN5c01MLU1vZGVsRWxlbWVudHMtVmlldy12aWV3UG9pbnQiIG5hbWU9InZpZXdQb2ludCIgdmlzaWJpbGl0eT0icHVibGljIiB0eXBlPSJTeXNNTC1Nb2RlbEVsZW1lbnRzLVZpZXdwb2ludCIgaXNEZXJpdmVkPSJ0cnVlIj4NCisgICAgICAgICAgPG93bmVkQ29tbWVudCB4bWk6aWQ9IlN5c01MLU1vZGVsRWxlbWVudHMtVmlldy12aWV3UG9pbnQtb3duZWRDb21tZW50IiBhbm5vdGF0ZWRFbGVtZW50PSJTeXNNTC1Nb2RlbEVsZW1lbnRzLVZpZXctdmlld1BvaW50Ij4NCisgICAgICAgICAgICA8Ym9keT5UaGUgdmlld3BvaW50IGZvciB0aGlzIFZpZXcsIGRlcml2ZWQgZnJvbSB0aGUgc3VwcGxpZXIgb2YgdGhlIMKrY29uZm9ybcK7IGRlcGVuZGVuY3kgd2hvc2UgY2xpZW50IGlzIHRoaXMgVmlldy48L2JvZHk+DQorICAgICAgICAgIDwvb3duZWRDb21tZW50Pg0KKyAgICAgICAgICA8bG93ZXJWYWx1ZSB4bWk6dHlwZT0idW1sOkxpdGVyYWxJbnRlZ2VyIiB4bWk6aWQ9IlN5c01MLU1vZGVsRWxlbWVudHMtVmlldy12aWV3UG9pbnQtbG93ZXJWYWx1ZSIgbmFtZT0iIiB2YWx1ZT0iMSIvPg0KKyAgICAgICAgICA8dXBwZXJWYWx1ZSB4bWk6dHlwZT0idW1sOkxpdGVyYWxVbmxpbWl0ZWROYXR1cmFsIiB4bWk6aWQ9IlN5c01MLU1vZGVsRWxlbWVudHMtVmlldy12aWV3UG9pbnQtdXBwZXJWYWx1ZSIgbmFtZT0iIiB2YWx1ZT0iMSIvPg0KKyAgICAgICAgPC9vd25lZEF0dHJpYnV0ZT4NCisgICAgICAgIDxvd25lZEF0dHJpYnV0ZSB4bWk6aWQ9IlN5c01MLU1vZGVsRWxlbWVudHMtVmlldy1zdGFrZWhvbGRlciIgbmFtZT0ic3Rha2Vob2xkZXIiIHZpc2liaWxpdHk9InB1YmxpYyIgdHlwZT0iU3lzTUwtTW9kZWxFbGVtZW50cy1TdGFrZWhvbGRlciIgaXNEZXJpdmVkPSJ0cnVlIj4NCisgICAgICAgICAgPGxvd2VyVmFsdWUgeG1pOnR5cGU9InVtbDpMaXRlcmFsVW5saW1pdGVkTmF0dXJhbCIgeG1pOmlkPSJTeXNNTC1Nb2RlbEVsZW1lbnRzLVZpZXctc3Rha2Vob2xkZXItbG93ZXJWYWx1ZSIgbmFtZT0iIi8+DQorICAgICAgICAgIDx1cHBlclZhbHVlIHhtaTp0eXBlPSJ1bWw6TGl0ZXJhbFVubGltaXRlZE5hdHVyYWwiIHhtaTppZD0iU3lzTUwtTW9kZWxFbGVtZW50cy1WaWV3LXN0YWtlaG9sZGVyLXVwcGVyVmFsdWUiIG5hbWU9IiIgdmFsdWU9IioiLz4NCisgICAgICAgIDwvb3duZWRBdHRyaWJ1dGU+DQorICAgICAgICA8b3duZWRBdHRyaWJ1dGUgeG1pOmlkPSJTeXNNTC1Nb2RlbEVsZW1lbnRzLVZpZXctYmFzZV9DbGFzcyIgbmFtZT0iYmFzZV9DbGFzcyIgdmlzaWJpbGl0eT0icHVibGljIiBhc3NvY2lhdGlvbj0iU3lzTUwtTW9kZWxFbGVtZW50cy1FX2V4dGVuc2lvbl9WaWV3X2Jhc2VfQ2xhc3MiPg0KKyAgICAgICAgICA8dHlwZSB4bWk6dHlwZT0idW1sOkNsYXNzIiBocmVmPSJwYXRobWFwOi8vVU1MX01FVEFNT0RFTFMvVU1MLm1ldGFtb2RlbC51bWwjQ2xhc3MiLz4NCisgICAgICAgICAgPGxvd2VyVmFsdWUgeG1pOnR5cGU9InVtbDpMaXRlcmFsSW50ZWdlciIgeG1pOmlkPSJTeXNNTC1Nb2RlbEVsZW1lbnRzLVZpZXctYmFzZV9DbGFzcy1sb3dlclZhbHVlIiBuYW1lPSIiLz4NCisgICAgICAgICAgPHVwcGVyVmFsdWUgeG1pOnR5cGU9InVtbDpMaXRlcmFsVW5saW1pdGVkTmF0dXJhbCIgeG1pOmlkPSJTeXNNTC1Nb2RlbEVsZW1lbnRzLVZpZXctYmFzZV9DbGFzcy11cHBlclZhbHVlIiBuYW1lPSIiIHZhbHVlPSIxIi8+DQorICAgICAgICA8L293bmVkQXR0cmlidXRlPg0KKyAgICAgIDwvcGFja2FnZWRFbGVtZW50Pg0KKyAgICAgIDxwYWNrYWdlZEVsZW1lbnQgeG1pOnR5cGU9InVtbDpTdGVyZW90eXBlIiB4bWk6aWQ9IlN5c01MLU1vZGVsRWxlbWVudHMtQ29uZm9ybSIgbmFtZT0iQ29uZm9ybSI+DQorICAgICAgICA8b3duZWRDb21tZW50IHhtaTppZD0iU3lzTUwtTW9kZWxFbGVtZW50cy1Db25mb3JtLW93bmVkQ29tbWVudCIgYW5ub3RhdGVkRWxlbWVudD0iU3lzTUwtTW9kZWxFbGVtZW50cy1Db25mb3JtIj4NCisgICAgICAgICAgPGJvZHk+QSBDb25mb3JtIHJlbGF0aW9uc2hpcCBpcyBhIGRlcGVuZGVuY3kgYmV0d2VlbiBhIHZpZXcgYW5kIGEgdmlld3BvaW50LiBUaGUgdmlldyBjb25mb3JtcyB0byB0aGUgc3BlY2lmaWVkIHJ1bGVzIGFuZCBjb252ZW50aW9ucyBkZXRhaWxlZCBpbiB0aGUgdmlld3BvaW50LiBDb25mb3JtIGlzIGEgc3BlY2lhbGl6YXRpb24gb2YgdGhlIFVNTCBkZXBlbmRlbmN5LCBhbmQgYXMgd2l0aCBvdGhlciBkZXBlbmRlbmNpZXMgdGhlIGFycm93IGRpcmVjdGlvbiBwb2ludHMgZnJvbSB0aGUgKGNsaWVudC9zb3VyY2UpIHRvIHRoZSAoc3VwcGxpZXIvdGFyZ2V0KS48L2JvZHk+DQorICAgICAgICA8L293bmVkQ29tbWVudD4NCisgICAgICAgIDxvd25lZEF0dHJpYnV0ZSB4bWk6aWQ9IlN5c01MLU1vZGVsRWxlbWVudHMtQ29uZm9ybS1iYXNlX0RlcGVuZGVuY3kiIG5hbWU9ImJhc2VfRGVwZW5kZW5jeSIgdmlzaWJpbGl0eT0icHVibGljIiBhc3NvY2lhdGlvbj0iU3lzTUwtTW9kZWxFbGVtZW50cy1EZXByZWNhdGVkLUVfZXh0ZW5zaW9uX0NvbmZvcm1fYmFzZV9EZXBlbmRlbmN5Ij4NCisgICAgICAgICAgPHR5cGUgeG1pOnR5cGU9InVtbDpDbGFzcyIgaHJlZj0icGF0aG1hcDovL1VNTF9NRVRBTU9ERUxTL1VNTC5tZXRhbW9kZWwudW1sI0RlcGVuZGVuY3kiLz4NCisgICAgICAgICAgPGxvd2VyVmFsdWUgeG1pOnR5cGU9InVtbDpMaXRlcmFsSW50ZWdlciIgeG1pOmlkPSJTeXNNTC1Nb2RlbEVsZW1lbnRzLUNvbmZvcm0tYmFzZV9EZXBlbmRlbmN5LWxvd2VyVmFsdWUiIG5hbWU9IiIvPg0KKyAgICAgICAgICA8dXBwZXJWYWx1ZSB4bWk6dHlwZT0idW1sOkxpdGVyYWxVbmxpbWl0ZWROYXR1cmFsIiB4bWk6aWQ9IlN5c01MLU1vZGVsRWxlbWVudHMtQ29uZm9ybS1iYXNlX0RlcGVuZGVuY3ktdXBwZXJWYWx1ZSIgbmFtZT0iIiB2YWx1ZT0iMSIvPg0KKyAgICAgICAgPC9vd25lZEF0dHJpYnV0ZT4NCisgICAgICAgIDxvd25lZEF0dHJpYnV0ZSB4bWk6aWQ9IlN5c01MLU1vZGVsRWxlbWVudHMtQ29uZm9ybS1iYXNlX0dlbmVyYWxpemF0aW9uIiBuYW1lPSJiYXNlX0dlbmVyYWxpemF0aW9uIiB2aXNpYmlsaXR5PSJwdWJsaWMiIGFzc29jaWF0aW9uPSJTeXNNTC1Nb2RlbEVsZW1lbnRzLUVfZXh0ZW5zaW9uX0NvbmZvcm1fYmFzZV9HZW5lcmFsaXphdGlvbiI+DQorICAgICAgICAgIDx0eXBlIHhtaTp0eXBlPSJ1bWw6Q2xhc3MiIGhyZWY9InBhdGhtYXA6Ly9VTUxfTUVUQU1PREVMUy9VTUwubWV0YW1vZGVsLnVtbCNHZW5lcmFsaXphdGlvbiIvPg0KKyAgICAgICAgICA8bG93ZXJWYWx1ZSB4bWk6dHlwZT0idW1sOkxpdGVyYWxJbnRlZ2VyIiB4bWk6aWQ9IlN5c01MLU1vZGVsRWxlbWVudHMtQ29uZm9ybS1iYXNlX0dlbmVyYWxpemF0aW9uLWxvd2VyVmFsdWUiIG5hbWU9IiIvPg0KKyAgICAgICAgICA8dXBwZXJWYWx1ZSB4bWk6dHlwZT0idW1sOkxpdGVyYWxVbmxpbWl0ZWROYXR1cmFsIiB4bWk6aWQ9IlN5c01MLU1vZGVsRWxlbWVudHMtQ29uZm9ybS1iYXNlX0dlbmVyYWxpemF0aW9uLXVwcGVyVmFsdWUiIG5hbWU9IiIgdmFsdWU9IjEiLz4NCisgICAgICAgIDwvb3duZWRBdHRyaWJ1dGU+DQorICAgICAgPC9wYWNrYWdlZEVsZW1lbnQ+DQorICAgICAgPHBhY2thZ2VkRWxlbWVudCB4bWk6dHlwZT0idW1sOlN0ZXJlb3R5cGUiIHhtaTppZD0iU3lzTUwtTW9kZWxFbGVtZW50cy1Qcm9ibGVtIiBuYW1lPSJQcm9ibGVtIj4NCisgICAgICAgIDxvd25lZENvbW1lbnQgeG1pOmlkPSJTeXNNTC1Nb2RlbEVsZW1lbnRzLVByb2JsZW0tb3duZWRDb21tZW50IiBhbm5vdGF0ZWRFbGVtZW50PSJTeXNNTC1Nb2RlbEVsZW1lbnRzLVByb2JsZW0iPg0KKyAgICAgICAgICA8Ym9keT5BIFByb2JsZW0gZG9jdW1lbnRzIGEgZGVmaWNpZW5jeSwgbGltaXRhdGlvbiwgb3IgZmFpbHVyZSBvZiBvbmUgb3IgbW9yZSBtb2RlbCBlbGVtZW50cyB0byBzYXRpc2Z5IGEgcmVxdWlyZW1lbnQgb3IgbmVlZCwgb3Igb3RoZXIgdW5kZXNpcmVkIG91dGNvbWUuIEl0IG1heSBiZSB1c2VkIHRvIGNhcHR1cmUgcHJvYmxlbXMgaWRlbnRpZmllZCBkdXJpbmcgYW5hbHlzaXMsIGRlc2lnbiwgdmVyaWZpY2F0aW9uLCBvciBtYW51ZmFjdHVyZSBhbmQgYXNzb2NpYXRlIHRoZSBwcm9ibGVtIHdpdGggdGhlIHJlbGV2YW50IG1vZGVsIGVsZW1lbnRzLiBQcm9ibGVtIGlzIGEgc3RlcmVvdHlwZSBvZiBjb21tZW50IGFuZCBtYXkgYmUgYXR0YWNoZWQgdG8gYW55IG90aGVyIG1vZGVsIGVsZW1lbnQgaW4gdGhlIHNhbWUgbWFubmVyIGFzIGEgY29tbWVudC48L2JvZHk+DQorICAgICAgICA8L293bmVkQ29tbWVudD4NCisgICAgICAgIDxvd25lZEF0dHJpYnV0ZSB4bWk6aWQ9IlN5c01MLU1vZGVsRWxlbWVudHMtUHJvYmxlbS1iYXNlX0NvbW1lbnQiIG5hbWU9ImJhc2VfQ29tbWVudCIgdmlzaWJpbGl0eT0icHVibGljIiBhc3NvY2lhdGlvbj0iU3lzTUwtTW9kZWxFbGVtZW50cy1FX2V4dGVuc2lvbl9Qcm9ibGVtX2Jhc2VfQ29tbWVudCI+DQorICAgICAgICAgIDx0eXBlIHhtaTp0eXBlPSJ1bWw6Q2xhc3MiIGhyZWY9InBhdGhtYXA6Ly9VTUxfTUVUQU1PREVMUy9VTUwubWV0YW1vZGVsLnVtbCNDb21tZW50Ii8+DQorICAgICAgICAgIDxsb3dlclZhbHVlIHhtaTp0eXBlPSJ1bWw6TGl0ZXJhbEludGVnZXIiIHhtaTppZD0iU3lzTUwtTW9kZWxFbGVtZW50cy1Qcm9ibGVtLWJhc2VfQ29tbWVudC1sb3dlclZhbHVlIiBuYW1lPSIiLz4NCisgICAgICAgICAgPHVwcGVyVmFsdWUgeG1pOnR5cGU9InVtbDpMaXRlcmFsVW5saW1pdGVkTmF0dXJhbCIgeG1pOmlkPSJTeXNNTC1Nb2RlbEVsZW1lbnRzLVByb2JsZW0tYmFzZV9Db21tZW50LXVwcGVyVmFsdWUiIG5hbWU9IiIgdmFsdWU9IjEiLz4NCisgICAgICAgIDwvb3duZWRBdHRyaWJ1dGU+DQorICAgICAgPC9wYWNrYWdlZEVsZW1lbnQ+DQorICAgICAgPHBhY2thZ2VkRWxlbWVudCB4bWk6dHlwZT0idW1sOlN0ZXJlb3R5cGUiIHhtaTppZD0iU3lzTUwtTW9kZWxFbGVtZW50cy1WaWV3cG9pbnQiIG5hbWU9IlZpZXdQb2ludCI+DQorICAgICAgICA8b3duZWRDb21tZW50IHhtaTppZD0iU3lzTUwtTW9kZWxFbGVtZW50cy1WaWV3cG9pbnQtb3duZWRDb21tZW50IiBhbm5vdGF0ZWRFbGVtZW50PSJTeXNNTC1Nb2RlbEVsZW1lbnRzLVZpZXdwb2ludCI+DQorICAgICAgICAgIDxib2R5PkEgVmlld3BvaW50IGlzIGEgc3BlY2lmaWNhdGlvbiBvZiB0aGUgY29udmVudGlvbnMgYW5kIHJ1bGVzIGZvciBjb25zdHJ1Y3RpbmcgYW5kIHVzaW5nIGEgdmlldyBmb3IgdGhlIHB1cnBvc2Ugb2YgYWRkcmVzc2luZyBhIHNldCBvZiBzdGFrZWhvbGRlciBjb25jZXJucy4gVGhlIGxhbmd1YWdlcyBhbmQgbWV0aG9kcyBmb3Igc3BlY2lmeWluZyBhIHZpZXcgbWF5IHJlZmVyZW5jZSBsYW5ndWFnZXMgYW5kIG1ldGhvZHMgaW4gYW5vdGhlciB2aWV3cG9pbnQuIFRoZXkgc3BlY2lmeSB0aGUgZWxlbWVudHMgZXhwZWN0ZWQgdG8gYmUgcmVwcmVzZW50ZWQgaW4gdGhlIHZpZXcsIGFuZCBtYXkgYmUgZm9ybWFsbHkgb3IgaW5mb3JtYWxseSBkZWZpbmVkLiBGb3IgZXhhbXBsZSwgdGhlIHNlY3VyaXR5IHZpZXdwb2ludCBtYXkgcmVxdWlyZSB0aGUgc2VjdXJpdHkgcmVxdWlyZW1lbnRzLCBzZWN1cml0eSBmdW5jdGlvbmFsIGFuZCBwaHlzaWNhbCBhcmNoaXRlY3R1cmUsIGFuZCBzZWN1cml0eSB0ZXN0IGNhc2VzLjwvYm9keT4NCisgICAgICAgIDwvb3duZWRDb21tZW50Pg0KKyAgICAgICAgPG93bmVkQXR0cmlidXRlIHhtaTppZD0iU3lzTUwtTW9kZWxFbGVtZW50cy1WaWV3cG9pbnQtYmFzZV9DbGFzcyIgbmFtZT0iYmFzZV9DbGFzcyIgdmlzaWJpbGl0eT0icHVibGljIiBhc3NvY2lhdGlvbj0iU3lzTUwtTW9kZWxFbGVtZW50cy1FX2V4dGVuc2lvbl9WaWV3cG9pbnRfYmFzZV9DbGFzcyI+DQorICAgICAgICAgIDx0eXBlIHhtaTp0eXBlPSJ1bWw6Q2xhc3MiIGhyZWY9InBhdGhtYXA6Ly9VTUxfTUVUQU1PREVMUy9VTUwubWV0YW1vZGVsLnVtbCNDbGFzcyIvPg0KKyAgICAgICAgICA8bG93ZXJWYWx1ZSB4bWk6dHlwZT0idW1sOkxpdGVyYWxJbnRlZ2VyIiB4bWk6aWQ9IlN5c01MLU1vZGVsRWxlbWVudHMtVmlld3BvaW50LWJhc2VfQ2xhc3MtbG93ZXJWYWx1ZSIgbmFtZT0iIi8+DQorICAgICAgICAgIDx1cHBlclZhbHVlIHhtaTp0eXBlPSJ1bWw6TGl0ZXJhbFVubGltaXRlZE5hdHVyYWwiIHhtaTppZD0iU3lzTUwtTW9kZWxFbGVtZW50cy1WaWV3cG9pbnQtYmFzZV9DbGFzcy11cHBlclZhbHVlIiBuYW1lPSIiIHZhbHVlPSIxIi8+DQorICAgICAgICA8L293bmVkQXR0cmlidXRlPg0KKyAgICAgICAgPG93bmVkQXR0cmlidXRlIHhtaTppZD0iU3lzTUwtTW9kZWxFbGVtZW50cy1WaWV3cG9pbnQtc3Rha2Vob2xkZXIiIG5hbWU9InN0YWtlaG9sZGVyIiB2aXNpYmlsaXR5PSJwdWJsaWMiIHR5cGU9IlN5c01MLU1vZGVsRWxlbWVudHMtU3Rha2Vob2xkZXIiPg0KKyAgICAgICAgICA8b3duZWRDb21tZW50IHhtaTppZD0iU3lzTUwtTW9kZWxFbGVtZW50cy1WaWV3cG9pbnQtc3Rha2Vob2xkZXItb3duZWRDb21tZW50IiBhbm5vdGF0ZWRFbGVtZW50PSJTeXNNTC1Nb2RlbEVsZW1lbnRzLVZpZXdwb2ludC1zdGFrZWhvbGRlciI+DQorICAgICAgICAgICAgPGJvZHk+U2V0IG9mIHN0YWtlaG9sZGVycy48L2JvZHk+DQorICAgICAgICAgIDwvb3duZWRDb21tZW50Pg0KKyAgICAgICAgICA8bG93ZXJWYWx1ZSB4bWk6dHlwZT0idW1sOkxpdGVyYWxTdHJpbmciIHhtaTppZD0iU3lzTUwtTW9kZWxFbGVtZW50cy1WaWV3cG9pbnQtc3Rha2Vob2xkZXItbG93ZXJWYWx1ZSIgbmFtZT0iIiB2YWx1ZT0iKiIvPg0KKyAgICAgICAgICA8dXBwZXJWYWx1ZSB4bWk6dHlwZT0idW1sOkxpdGVyYWxVbmxpbWl0ZWROYXR1cmFsIiB4bWk6aWQ9IlN5c01MLU1vZGVsRWxlbWVudHMtVmlld3BvaW50LXN0YWtlaG9sZGVyLXVwcGVyVmFsdWUiIG5hbWU9IiIgdmFsdWU9IioiLz4NCisgICAgICAgIDwvb3duZWRBdHRyaWJ1dGU+DQorICAgICAgICA8b3duZWRBdHRyaWJ1dGUgeG1pOmlkPSJTeXNNTC1Nb2RlbEVsZW1lbnRzLVZpZXdwb2ludC1wdXJwb3NlIiBuYW1lPSJwdXJwb3NlIiB2aXNpYmlsaXR5PSJwdWJsaWMiPg0KKyAgICAgICAgICA8b3duZWRDb21tZW50IHhtaTppZD0iU3lzTUwtTW9kZWxFbGVtZW50cy1WaWV3cG9pbnQtcHVycG9zZS1vd25lZENvbW1lbnQiIGFubm90YXRlZEVsZW1lbnQ9IlN5c01MLU1vZGVsRWxlbWVudHMtVmlld3BvaW50LXB1cnBvc2UiPg0KKyAgICAgICAgICAgIDxib2R5PlRoZSBwdXJwb3NlIGFkZHJlc3NlcyB0aGUgc3Rha2Vob2xkZXIgY29uY2VybnMuPC9ib2R5Pg0KKyAgICAgICAgICA8L293bmVkQ29tbWVudD4NCisgICAgICAgICAgPHR5cGUgeG1pOnR5cGU9InVtbDpQcmltaXRpdmVUeXBlIiBocmVmPSJwYXRobWFwOi8vVU1MX0xJQlJBUklFUy9VTUxQcmltaXRpdmVUeXBlcy5saWJyYXJ5LnVtbCNTdHJpbmciLz4NCisgICAgICAgIDwvb3duZWRBdHRyaWJ1dGU+DQorICAgICAgICA8b3duZWRBdHRyaWJ1dGUgeG1pOmlkPSJTeXNNTC1Nb2RlbEVsZW1lbnRzLVZpZXdwb2ludC1jb25jZXJuTGlzdCIgbmFtZT0iY29uY2Vybkxpc3QiIHZpc2liaWxpdHk9InB1YmxpYyI+DQorICAgICAgICAgIDxvd25lZENvbW1lbnQgeG1pOmlkPSJTeXNNTC1Nb2RlbEVsZW1lbnRzLVZpZXdwb2ludC1jb25jZXJuTGlzdC1vd25lZENvbW1lbnQiIGFubm90YXRlZEVsZW1lbnQ9IlN5c01MLU1vZGVsRWxlbWVudHMtVmlld3BvaW50LWNvbmNlcm5MaXN0Ij4NCisgICAgICAgICAgICA8Ym9keT5UaGUgaW50ZXJlc3Qgb2YgdGhlIHN0YWtlaG9sZGVycy48L2JvZHk+DQorICAgICAgICAgIDwvb3duZWRDb21tZW50Pg0KKyAgICAgICAgICA8dHlwZSB4bWk6dHlwZT0idW1sOkNsYXNzIiBocmVmPSJwYXRobWFwOi8vVU1MX01FVEFNT0RFTFMvVU1MLm1ldGFtb2RlbC51bWwjQ29tbWVudCIvPg0KKyAgICAgICAgICA8bG93ZXJWYWx1ZSB4bWk6dHlwZT0idW1sOkxpdGVyYWxTdHJpbmciIHhtaTppZD0iU3lzTUwtTW9kZWxFbGVtZW50cy1WaWV3cG9pbnQtY29uY2Vybkxpc3QtbG93ZXJWYWx1ZSIgbmFtZT0iIiB2YWx1ZT0iKiIvPg0KKyAgICAgICAgICA8dXBwZXJWYWx1ZSB4bWk6dHlwZT0idW1sOkxpdGVyYWxVbmxpbWl0ZWROYXR1cmFsIiB4bWk6aWQ9IlN5c01MLU1vZGVsRWxlbWVudHMtVmlld3BvaW50LWNvbmNlcm5MaXN0LXVwcGVyVmFsdWUiIG5hbWU9IiIgdmFsdWU9IioiLz4NCisgICAgICAgIDwvb3duZWRBdHRyaWJ1dGU+DQorICAgICAgICA8b3duZWRBdHRyaWJ1dGUgeG1pOmlkPSJTeXNNTC1Nb2RlbEVsZW1lbnRzLVZpZXdwb2ludC1sYW5ndWFnZSIgbmFtZT0ibGFuZ3VhZ2UiIHZpc2liaWxpdHk9InB1YmxpYyI+DQorICAgICAgICAgIDxvd25lZENvbW1lbnQgeG1pOmlkPSJTeXNNTC1Nb2RlbEVsZW1lbnRzLVZpZXdwb2ludC1sYW5ndWFnZS1vd25lZENvbW1lbnQiIGFubm90YXRlZEVsZW1lbnQ9IlN5c01MLU1vZGVsRWxlbWVudHMtVmlld3BvaW50LWxhbmd1YWdlIj4NCisgICAgICAgICAgICA8Ym9keT5UaGUgbGFuZ3VhZ2VzIHVzZWQgdG8gY29uc3RydWN0IHRoZSB2aWV3cG9pbnQuPC9ib2R5Pg0KKyAgICAgICAgICA8L293bmVkQ29tbWVudD4NCisgICAgICAgICAgPHR5cGUgeG1pOnR5cGU9InVtbDpQcmltaXRpdmVUeXBlIiBocmVmPSJwYXRobWFwOi8vVU1MX0xJQlJBUklFUy9VTUxQcmltaXRpdmVUeXBlcy5saWJyYXJ5LnVtbCNTdHJpbmciLz4NCisgICAgICAgICAgPGxvd2VyVmFsdWUgeG1pOnR5cGU9InVtbDpMaXRlcmFsU3RyaW5nIiB4bWk6aWQ9IlN5c01MLU1vZGVsRWxlbWVudHMtVmlld3BvaW50LWxhbmd1YWdlLWxvd2VyVmFsdWUiIG5hbWU9IiIgdmFsdWU9IioiLz4NCisgICAgICAgICAgPHVwcGVyVmFsdWUgeG1pOnR5cGU9InVtbDpMaXRlcmFsVW5saW1pdGVkTmF0dXJhbCIgeG1pOmlkPSJTeXNNTC1Nb2RlbEVsZW1lbnRzLVZpZXdwb2ludC1sYW5ndWFnZS11cHBlclZhbHVlIiBuYW1lPSIiIHZhbHVlPSIqIi8+DQorICAgICAgICA8L293bmVkQXR0cmlidXRlPg0KKyAgICAgICAgPG93bmVkQXR0cmlidXRlIHhtaTppZD0iU3lzTUwtTW9kZWxFbGVtZW50cy1WaWV3cG9pbnQtbWV0aG9kIiBuYW1lPSJtZXRob2QiIHZpc2liaWxpdHk9InB1YmxpYyIgaXNEZXJpdmVkPSJ0cnVlIj4NCisgICAgICAgICAgPG93bmVkQ29tbWVudCB4bWk6aWQ9IlN5c01MLU1vZGVsRWxlbWVudHMtVmlld3BvaW50LW1ldGhvZC1vd25lZENvbW1lbnQiIGFubm90YXRlZEVsZW1lbnQ9IlN5c01MLU1vZGVsRWxlbWVudHMtVmlld3BvaW50LW1ldGhvZCI+DQorICAgICAgICAgICAgPGJvZHk+VGhlIG1ldGhvZHMgdXNlZCB0byBjb25zdHJ1Y3QgdGhlIHZpZXdzIGZvciB0aGlzIHZpZXdwb2ludC48L2JvZHk+DQorICAgICAgICAgIDwvb3duZWRDb21tZW50Pg0KKyAgICAgICAgICA8dHlwZSB4bWk6dHlwZT0idW1sOkNsYXNzIiBocmVmPSJwYXRobWFwOi8vVU1MX01FVEFNT0RFTFMvVU1MLm1ldGFtb2RlbC51bWwjQmVoYXZpb3IiLz4NCisgICAgICAgICAgPGxvd2VyVmFsdWUgeG1pOnR5cGU9InVtbDpMaXRlcmFsU3RyaW5nIiB4bWk6aWQ9IlN5c01MLU1vZGVsRWxlbWVudHMtVmlld3BvaW50LW1ldGhvZC1sb3dlclZhbHVlIiBuYW1lPSIiIHZhbHVlPSIqIi8+DQorICAgICAgICAgIDx1cHBlclZhbHVlIHhtaTp0eXBlPSJ1bWw6TGl0ZXJhbFVubGltaXRlZE5hdHVyYWwiIHhtaTppZD0iU3lzTUwtTW9kZWxFbGVtZW50cy1WaWV3cG9pbnQtbWV0aG9kLXVwcGVyVmFsdWUiIG5hbWU9IiIgdmFsdWU9IioiLz4NCisgICAgICAgIDwvb3duZWRBdHRyaWJ1dGU+DQorICAgICAgICA8b3duZWRBdHRyaWJ1dGUgeG1pOmlkPSJTeXNNTC1Nb2RlbEVsZW1lbnRzLVZpZXdwb2ludC1wcmVzZW50YXRpb24iIG5hbWU9InByZXNlbnRhdGlvbiIgdmlzaWJpbGl0eT0icHVibGljIj4NCisgICAgICAgICAgPHR5cGUgeG1pOnR5cGU9InVtbDpQcmltaXRpdmVUeXBlIiBocmVmPSJwYXRobWFwOi8vVU1MX0xJQlJBUklFUy9VTUxQcmltaXRpdmVUeXBlcy5saWJyYXJ5LnVtbCNTdHJpbmciLz4NCisgICAgICAgICAgPGxvd2VyVmFsdWUgeG1pOnR5cGU9InVtbDpMaXRlcmFsVW5saW1pdGVkTmF0dXJhbCIgeG1pOmlkPSJTeXNNTC1Nb2RlbEVsZW1lbnRzLVZpZXdwb2ludC1wcmVzZW50YXRpb24tbG93ZXJWYWx1ZSIgbmFtZT0iIi8+DQorICAgICAgICAgIDx1cHBlclZhbHVlIHhtaTp0eXBlPSJ1bWw6TGl0ZXJhbFVubGltaXRlZE5hdHVyYWwiIHhtaTppZD0iU3lzTUwtTW9kZWxFbGVtZW50cy1WaWV3cG9pbnQtcHJlc2VudGF0aW9uLXVwcGVyVmFsdWUiIG5hbWU9IiIgdmFsdWU9IioiLz4NCisgICAgICAgIDwvb3duZWRBdHRyaWJ1dGU+DQorICAgICAgICA8b3duZWRBdHRyaWJ1dGUgeG1pOmlkPSJTeXNNTC1Nb2RlbEVsZW1lbnRzLVZpZXdwb2ludC1jb25jZXJuIiBuYW1lPSJjb25jZXJuIiB2aXNpYmlsaXR5PSJwdWJsaWMiIGlzRGVyaXZlZD0idHJ1ZSI+DQorICAgICAgICAgIDx0eXBlIHhtaTp0eXBlPSJ1bWw6UHJpbWl0aXZlVHlwZSIgaHJlZj0icGF0aG1hcDovL1VNTF9MSUJSQVJJRVMvVU1MUHJpbWl0aXZlVHlwZXMubGlicmFyeS51bWwjU3RyaW5nIi8+DQorICAgICAgICAgIDxsb3dlclZhbHVlIHhtaTp0eXBlPSJ1bWw6TGl0ZXJhbFVubGltaXRlZE5hdHVyYWwiIHhtaTppZD0iU3lzTUwtTW9kZWxFbGVtZW50cy1WaWV3cG9pbnQtY29uY2Vybi1sb3dlclZhbHVlIiBuYW1lPSIiLz4NCisgICAgICAgICAgPHVwcGVyVmFsdWUgeG1pOnR5cGU9InVtbDpMaXRlcmFsVW5saW1pdGVkTmF0dXJhbCIgeG1pOmlkPSJTeXNNTC1Nb2RlbEVsZW1lbnRzLVZpZXdwb2ludC1jb25jZXJuLXVwcGVyVmFsdWUiIG5hbWU9IiIgdmFsdWU9IioiLz4NCisgICAgICAgIDwvb3duZWRBdHRyaWJ1dGU+DQorICAgICAgPC9wYWNrYWdlZEVsZW1lbnQ+DQorICAgICAgPHBhY2thZ2VkRWxlbWVudCB4bWk6dHlwZT0idW1sOkV4dGVuc2lvbiIgeG1pOmlkPSJTeXNNTC1Nb2RlbEVsZW1lbnRzLUVfZXh0ZW5zaW9uX1Byb2JsZW1fYmFzZV9Db21tZW50IiBuYW1lPSJFX2V4dGVuc2lvbl9Qcm9ibGVtX2Jhc2VfQ29tbWVudCIgbWVtYmVyRW5kPSJTeXNNTC1Nb2RlbEVsZW1lbnRzLUVfZXh0ZW5zaW9uX1Byb2JsZW1fYmFzZV9Db21tZW50LWV4dGVuc2lvbl9Qcm9ibGVtIFN5c01MLU1vZGVsRWxlbWVudHMtUHJvYmxlbS1iYXNlX0NvbW1lbnQiIG5hdmlnYWJsZU93bmVkRW5kPSJTeXNNTC1Nb2RlbEVsZW1lbnRzLUVfZXh0ZW5zaW9uX1Byb2JsZW1fYmFzZV9Db21tZW50LWV4dGVuc2lvbl9Qcm9ibGVtIj4NCisgICAgICAgIDxvd25lZEVuZCB4bWk6dHlwZT0idW1sOkV4dGVuc2lvbkVuZCIgeG1pOmlkPSJTeXNNTC1Nb2RlbEVsZW1lbnRzLUVfZXh0ZW5zaW9uX1Byb2JsZW1fYmFzZV9Db21tZW50LWV4dGVuc2lvbl9Qcm9ibGVtIiBuYW1lPSJleHRlbnNpb25fUHJvYmxlbSIgdmlzaWJpbGl0eT0icHVibGljIiB0eXBlPSJTeXNNTC1Nb2RlbEVsZW1lbnRzLVByb2JsZW0iIGFnZ3JlZ2F0aW9uPSJjb21wb3NpdGUiIGFzc29jaWF0aW9uPSJTeXNNTC1Nb2RlbEVsZW1lbnRzLUVfZXh0ZW5zaW9uX1Byb2JsZW1fYmFzZV9Db21tZW50Ij4NCisgICAgICAgICAgPGxvd2VyVmFsdWUgeG1pOnR5cGU9InVtbDpMaXRlcmFsSW50ZWdlciIgeG1pOmlkPSJTeXNNTC1Nb2RlbEVsZW1lbnRzLUVfZXh0ZW5zaW9uX1Byb2JsZW1fYmFzZV9Db21tZW50LWV4dGVuc2lvbl9Qcm9ibGVtLWxvd2VyVmFsdWUiIG5hbWU9IiIvPg0KKyAgICAgICAgICA8dXBwZXJWYWx1ZSB4bWk6dHlwZT0idW1sOkxpdGVyYWxJbnRlZ2VyIiB4bWk6aWQ9IlN5c01MLU1vZGVsRWxlbWVudHMtRV9leHRlbnNpb25fUHJvYmxlbV9iYXNlX0NvbW1lbnQtZXh0ZW5zaW9uX1Byb2JsZW0tdXBwZXJWYWx1ZSIgbmFtZT0iIiB2YWx1ZT0iMSIvPg0KKyAgICAgICAgPC9vd25lZEVuZD4NCisgICAgICA8L3BhY2thZ2VkRWxlbWVudD4NCisgICAgICA8cGFja2FnZWRFbGVtZW50IHhtaTp0eXBlPSJ1bWw6RXh0ZW5zaW9uIiB4bWk6aWQ9IlN5c01MLU1vZGVsRWxlbWVudHMtRV9leHRlbnNpb25fVmlld3BvaW50X2Jhc2VfQ2xhc3MiIG5hbWU9IkVfZXh0ZW5zaW9uX1ZpZXdwb2ludF9iYXNlX0NsYXNzIiBtZW1iZXJFbmQ9IlN5c01MLU1vZGVsRWxlbWVudHMtRV9leHRlbnNpb25fVmlld3BvaW50X2Jhc2VfQ2xhc3MtZXh0ZW5zaW9uX1ZpZXdwb2ludCBTeXNNTC1Nb2RlbEVsZW1lbnRzLVZpZXdwb2ludC1iYXNlX0NsYXNzIiBuYXZpZ2FibGVPd25lZEVuZD0iU3lzTUwtTW9kZWxFbGVtZW50cy1FX2V4dGVuc2lvbl9WaWV3cG9pbnRfYmFzZV9DbGFzcy1leHRlbnNpb25fVmlld3BvaW50Ij4NCisgICAgICAgIDxvd25lZEVuZCB4bWk6dHlwZT0idW1sOkV4dGVuc2lvbkVuZCIgeG1pOmlkPSJTeXNNTC1Nb2RlbEVsZW1lbnRzLUVfZXh0ZW5zaW9uX1ZpZXdwb2ludF9iYXNlX0NsYXNzLWV4dGVuc2lvbl9WaWV3cG9pbnQiIG5hbWU9ImV4dGVuc2lvbl9WaWV3cG9pbnQiIHZpc2liaWxpdHk9InB1YmxpYyIgdHlwZT0iU3lzTUwtTW9kZWxFbGVtZW50cy1WaWV3cG9pbnQiIGFnZ3JlZ2F0aW9uPSJjb21wb3NpdGUiIGFzc29jaWF0aW9uPSJTeXNNTC1Nb2RlbEVsZW1lbnRzLUVfZXh0ZW5zaW9uX1ZpZXdwb2ludF9iYXNlX0NsYXNzIj4NCisgICAgICAgICAgPGxvd2VyVmFsdWUgeG1pOnR5cGU9InVtbDpMaXRlcmFsSW50ZWdlciIgeG1pOmlkPSJTeXNNTC1Nb2RlbEVsZW1lbnRzLUVfZXh0ZW5zaW9uX1ZpZXdwb2ludF9iYXNlX0NsYXNzLWV4dGVuc2lvbl9WaWV3cG9pbnQtbG93ZXJWYWx1ZSIgbmFtZT0iIi8+DQorICAgICAgICAgIDx1cHBlclZhbHVlIHhtaTp0eXBlPSJ1bWw6TGl0ZXJhbEludGVnZXIiIHhtaTppZD0iU3lzTUwtTW9kZWxFbGVtZW50cy1FX2V4dGVuc2lvbl9WaWV3cG9pbnRfYmFzZV9DbGFzcy1leHRlbnNpb25fVmlld3BvaW50LXVwcGVyVmFsdWUiIG5hbWU9IiIgdmFsdWU9IjEiLz4NCisgICAgICAgIDwvb3duZWRFbmQ+DQorICAgICAgPC9wYWNrYWdlZEVsZW1lbnQ+DQorICAgICAgPHBhY2thZ2VkRWxlbWVudCB4bWk6dHlwZT0idW1sOkV4dGVuc2lvbiIgeG1pOmlkPSJTeXNNTC1Nb2RlbEVsZW1lbnRzLUVfZXh0ZW5zaW9uX1JhdGlvbmFsZV9iYXNlX0NvbW1lbnQiIG5hbWU9IkVfZXh0ZW5zaW9uX1JhdGlvbmFsZV9iYXNlX0NvbW1lbnQiIG1lbWJlckVuZD0iU3lzTUwtTW9kZWxFbGVtZW50cy1FX2V4dGVuc2lvbl9SYXRpb25hbGVfYmFzZV9Db21tZW50LWV4dGVuc2lvbl9SYXRpb25hbGUgU3lzTUwtTW9kZWxFbGVtZW50cy1SYXRpb25hbGUtYmFzZV9Db21tZW50IiBuYXZpZ2FibGVPd25lZEVuZD0iU3lzTUwtTW9kZWxFbGVtZW50cy1FX2V4dGVuc2lvbl9SYXRpb25hbGVfYmFzZV9Db21tZW50LWV4dGVuc2lvbl9SYXRpb25hbGUiPg0KKyAgICAgICAgPG93bmVkRW5kIHhtaTp0eXBlPSJ1bWw6RXh0ZW5zaW9uRW5kIiB4bWk6aWQ9IlN5c01MLU1vZGVsRWxlbWVudHMtRV9leHRlbnNpb25fUmF0aW9uYWxlX2Jhc2VfQ29tbWVudC1leHRlbnNpb25fUmF0aW9uYWxlIiBuYW1lPSJleHRlbnNpb25fUmF0aW9uYWxlIiB2aXNpYmlsaXR5PSJwdWJsaWMiIHR5cGU9IlN5c01MLU1vZGVsRWxlbWVudHMtUmF0aW9uYWxlIiBhZ2dyZWdhdGlvbj0iY29tcG9zaXRlIiBhc3NvY2lhdGlvbj0iU3lzTUwtTW9kZWxFbGVtZW50cy1FX2V4dGVuc2lvbl9SYXRpb25hbGVfYmFzZV9Db21tZW50Ij4NCisgICAgICAgICAgPGxvd2VyVmFsdWUgeG1pOnR5cGU9InVtbDpMaXRlcmFsSW50ZWdlciIgeG1pOmlkPSJTeXNNTC1Nb2RlbEVsZW1lbnRzLUVfZXh0ZW5zaW9uX1JhdGlvbmFsZV9iYXNlX0NvbW1lbnQtZXh0ZW5zaW9uX1JhdGlvbmFsZS1sb3dlclZhbHVlIiBuYW1lPSIiLz4NCisgICAgICAgICAgPHVwcGVyVmFsdWUgeG1pOnR5cGU9InVtbDpMaXRlcmFsSW50ZWdlciIgeG1pOmlkPSJTeXNNTC1Nb2RlbEVsZW1lbnRzLUVfZXh0ZW5zaW9uX1JhdGlvbmFsZV9iYXNlX0NvbW1lbnQtZXh0ZW5zaW9uX1JhdGlvbmFsZS11cHBlclZhbHVlIiBuYW1lPSIiIHZhbHVlPSIxIi8+DQorICAgICAgICA8L293bmVkRW5kPg0KKyAgICAgIDwvcGFja2FnZWRFbGVtZW50Pg0KKyAgICAgIDxwYWNrYWdlZEVsZW1lbnQgeG1pOnR5cGU9InVtbDpTdGVyZW90eXBlIiB4bWk6aWQ9IlN5c01MLU1vZGVsRWxlbWVudHMtU3Rha2Vob2xkZXIiIG5hbWU9IlN0YWtlaG9sZGVyIj4NCisgICAgICAgIDxvd25lZEF0dHJpYnV0ZSB4bWk6aWQ9IlN5c01MLU1vZGVsRWxlbWVudHMtU3Rha2Vob2xkZXItYmFzZV9DbGFzc2lmaWVyIiBuYW1lPSJiYXNlX0NsYXNzaWZpZXIiIHZpc2liaWxpdHk9InB1YmxpYyIgYXNzb2NpYXRpb249IlN5c01MLU1vZGVsRWxlbWVudHMtRV9leHRlbnNpb25fU3Rha2Vob2xkZXJfYmFzZV9DbGFzc2lmaWVyIj4NCisgICAgICAgICAgPHR5cGUgeG1pOnR5cGU9InVtbDpDbGFzcyIgaHJlZj0icGF0aG1hcDovL1VNTF9NRVRBTU9ERUxTL1VNTC5tZXRhbW9kZWwudW1sI0NsYXNzaWZpZXIiLz4NCisgICAgICAgICAgPGxvd2VyVmFsdWUgeG1pOnR5cGU9InVtbDpMaXRlcmFsSW50ZWdlciIgeG1pOmlkPSJTeXNNTC1Nb2RlbEVsZW1lbnRzLVN0YWtlaG9sZGVyLWJhc2VfQ2xhc3NpZmllci1sb3dlclZhbHVlIiBuYW1lPSIiLz4NCisgICAgICAgICAgPHVwcGVyVmFsdWUgeG1pOnR5cGU9InVtbDpMaXRlcmFsVW5saW1pdGVkTmF0dXJhbCIgeG1pOmlkPSJTeXNNTC1Nb2RlbEVsZW1lbnRzLVN0YWtlaG9sZGVyLWJhc2VfQ2xhc3NpZmllci11cHBlclZhbHVlIiBuYW1lPSIiIHZhbHVlPSIxIi8+DQorICAgICAgICA8L293bmVkQXR0cmlidXRlPg0KKyAgICAgICAgPG93bmVkQXR0cmlidXRlIHhtaTppZD0iU3lzTUwtTW9kZWxFbGVtZW50cy1TdGFrZWhvbGRlci1jb25jZXJuIiBuYW1lPSJjb25jZXJuIiB2aXNpYmlsaXR5PSJwdWJsaWMiPg0KKyAgICAgICAgICA8dHlwZSB4bWk6dHlwZT0idW1sOkNsYXNzIiBocmVmPSJwYXRobWFwOi8vVU1MX01FVEFNT0RFTFMvVU1MLm1ldGFtb2RlbC51bWwjQ29tbWVudCIvPg0KKyAgICAgICAgICA8bG93ZXJWYWx1ZSB4bWk6dHlwZT0idW1sOkxpdGVyYWxVbmxpbWl0ZWROYXR1cmFsIiB4bWk6aWQ9IlN5c01MLU1vZGVsRWxlbWVudHMtU3Rha2Vob2xkZXItY29uY2Vybi1sb3dlclZhbHVlIiBuYW1lPSIiLz4NCisgICAgICAgICAgPHVwcGVyVmFsdWUgeG1pOnR5cGU9InVtbDpMaXRlcmFsVW5saW1pdGVkTmF0dXJhbCIgeG1pOmlkPSJTeXNNTC1Nb2RlbEVsZW1lbnRzLVN0YWtlaG9sZGVyLWNvbmNlcm4tdXBwZXJWYWx1ZSIgbmFtZT0iIiB2YWx1ZT0iKiIvPg0KKyAgICAgICAgPC9vd25lZEF0dHJpYnV0ZT4NCisgICAgICAgIDxvd25lZEF0dHJpYnV0ZSB4bWk6aWQ9IlN5c01MLU1vZGVsRWxlbWVudHMtU3Rha2Vob2xkZXItY29uY2Vybkxpc3QiIG5hbWU9ImNvbmNlcm5MaXN0IiB2aXNpYmlsaXR5PSJwdWJsaWMiIGlzRGVyaXZlZD0idHJ1ZSI+DQorICAgICAgICAgIDx0eXBlIHhtaTp0eXBlPSJ1bWw6Q2xhc3MiIGhyZWY9InBhdGhtYXA6Ly9VTUxfTUVUQU1PREVMUy9VTUwubWV0YW1vZGVsLnVtbCNDb21tZW50Ii8+DQorICAgICAgICA8L293bmVkQXR0cmlidXRlPg0KKyAgICAgIDwvcGFja2FnZWRFbGVtZW50Pg0KKyAgICAgIDxwYWNrYWdlZEVsZW1lbnQgeG1pOnR5cGU9InVtbDpTdGVyZW90eXBlIiB4bWk6aWQ9IlN5c01MLU1vZGVsRWxlbWVudHMtRXhwb3NlIiBuYW1lPSJFeHBvc2UiPg0KKyAgICAgICAgPG93bmVkQXR0cmlidXRlIHhtaTppZD0iU3lzTUwtTW9kZWxFbGVtZW50cy1FeHBvc2UtYmFzZV9EZXBlbmRlbmN5IiBuYW1lPSJiYXNlX0RlcGVuZGVuY3kiIHZpc2liaWxpdHk9InB1YmxpYyIgYXNzb2NpYXRpb249IlN5c01MLU1vZGVsRWxlbWVudHMtRV9leHRlbnNpb25fRXhwb3NlX2Jhc2VfRGVwZW5kZW5jeSI+DQorICAgICAgICAgIDx0eXBlIHhtaTp0eXBlPSJ1bWw6Q2xhc3MiIGhyZWY9InBhdGhtYXA6Ly9VTUxfTUVUQU1PREVMUy9VTUwubWV0YW1vZGVsLnVtbCNEZXBlbmRlbmN5Ii8+DQorICAgICAgICAgIDxsb3dlclZhbHVlIHhtaTp0eXBlPSJ1bWw6TGl0ZXJhbEludGVnZXIiIHhtaTppZD0iU3lzTUwtTW9kZWxFbGVtZW50cy1FeHBvc2UtYmFzZV9EZXBlbmRlbmN5LWxvd2VyVmFsdWUiIG5hbWU9IiIvPg0KKyAgICAgICAgICA8dXBwZXJWYWx1ZSB4bWk6dHlwZT0idW1sOkxpdGVyYWxVbmxpbWl0ZWROYXR1cmFsIiB4bWk6aWQ9IlN5c01MLU1vZGVsRWxlbWVudHMtRXhwb3NlLWJhc2VfRGVwZW5kZW5jeS11cHBlclZhbHVlIiBuYW1lPSIiIHZhbHVlPSIxIi8+DQorICAgICAgICA8L293bmVkQXR0cmlidXRlPg0KKyAgICAgIDwvcGFja2FnZWRFbGVtZW50Pg0KKyAgICAgIDxwYWNrYWdlZEVsZW1lbnQgeG1pOnR5cGU9InVtbDpFeHRlbnNpb24iIHhtaTppZD0iU3lzTUwtTW9kZWxFbGVtZW50cy1FX2V4dGVuc2lvbl9TdGFrZWhvbGRlcl9iYXNlX0NsYXNzaWZpZXIiIG5hbWU9IkVfZXh0ZW5zaW9uX1N0YWtlaG9sZGVyX2Jhc2VfQ2xhc3NpZmllciIgbWVtYmVyRW5kPSJTeXNNTC1Nb2RlbEVsZW1lbnRzLVN0YWtlaG9sZGVyLWJhc2VfQ2xhc3NpZmllciBTeXNNTC1Nb2RlbEVsZW1lbnRzLUVfZXh0ZW5zaW9uX1N0YWtlaG9sZGVyX2Jhc2VfQ2xhc3NpZmllci1leHRlbnNpb25fU3Rha2Vob2xkZXIiIG5hdmlnYWJsZU93bmVkRW5kPSJTeXNNTC1Nb2RlbEVsZW1lbnRzLUVfZXh0ZW5zaW9uX1N0YWtlaG9sZGVyX2Jhc2VfQ2xhc3NpZmllci1leHRlbnNpb25fU3Rha2Vob2xkZXIiPg0KKyAgICAgICAgPG93bmVkRW5kIHhtaTp0eXBlPSJ1bWw6RXh0ZW5zaW9uRW5kIiB4bWk6aWQ9IlN5c01MLU1vZGVsRWxlbWVudHMtRV9leHRlbnNpb25fU3Rha2Vob2xkZXJfYmFzZV9DbGFzc2lmaWVyLWV4dGVuc2lvbl9TdGFrZWhvbGRlciIgbmFtZT0iZXh0ZW5zaW9uX1N0YWtlaG9sZGVyIiB2aXNpYmlsaXR5PSJwdWJsaWMiIHR5cGU9IlN5c01MLU1vZGVsRWxlbWVudHMtU3Rha2Vob2xkZXIiIGFnZ3JlZ2F0aW9uPSJjb21wb3NpdGUiIGFzc29jaWF0aW9uPSJTeXNNTC1Nb2RlbEVsZW1lbnRzLUVfZXh0ZW5zaW9uX1N0YWtlaG9sZGVyX2Jhc2VfQ2xhc3NpZmllciI+DQorICAgICAgICAgIDxsb3dlclZhbHVlIHhtaTp0eXBlPSJ1bWw6TGl0ZXJhbEludGVnZXIiIHhtaTppZD0iU3lzTUwtTW9kZWxFbGVtZW50cy1FX2V4dGVuc2lvbl9TdGFrZWhvbGRlcl9iYXNlX0NsYXNzaWZpZXItZXh0ZW5zaW9uX1N0YWtlaG9sZGVyLWxvd2VyVmFsdWUiIG5hbWU9IiIvPg0KKyAgICAgICAgICA8dXBwZXJWYWx1ZSB4bWk6dHlwZT0idW1sOkxpdGVyYWxJbnRlZ2VyIiB4bWk6aWQ9IlN5c01MLU1vZGVsRWxlbWVudHMtRV9leHRlbnNpb25fU3Rha2Vob2xkZXJfYmFzZV9DbGFzc2lmaWVyLWV4dGVuc2lvbl9TdGFrZWhvbGRlci11cHBlclZhbHVlIiBuYW1lPSIiIHZhbHVlPSIxIi8+DQorICAgICAgICA8L293bmVkRW5kPg0KKyAgICAgIDwvcGFja2FnZWRFbGVtZW50Pg0KKyAgICAgIDxwYWNrYWdlZEVsZW1lbnQgeG1pOnR5cGU9InVtbDpFeHRlbnNpb24iIHhtaTppZD0iU3lzTUwtTW9kZWxFbGVtZW50cy1FX2V4dGVuc2lvbl9FeHBvc2VfYmFzZV9EZXBlbmRlbmN5IiBuYW1lPSJFX2V4dGVuc2lvbl9FeHBvc2VfYmFzZV9EZXBlbmRlbmN5IiBtZW1iZXJFbmQ9IlN5c01MLU1vZGVsRWxlbWVudHMtRXhwb3NlLWJhc2VfRGVwZW5kZW5jeSBTeXNNTC1Nb2RlbEVsZW1lbnRzLUVfZXh0ZW5zaW9uX0V4cG9zZV9iYXNlX0RlcGVuZGVuY3ktZXh0ZW5zaW9uX0V4cG9zZSIgbmF2aWdhYmxlT3duZWRFbmQ9IlN5c01MLU1vZGVsRWxlbWVudHMtRV9leHRlbnNpb25fRXhwb3NlX2Jhc2VfRGVwZW5kZW5jeS1leHRlbnNpb25fRXhwb3NlIj4NCisgICAgICAgIDxvd25lZEVuZCB4bWk6dHlwZT0idW1sOkV4dGVuc2lvbkVuZCIgeG1pOmlkPSJTeXNNTC1Nb2RlbEVsZW1lbnRzLUVfZXh0ZW5zaW9uX0V4cG9zZV9iYXNlX0RlcGVuZGVuY3ktZXh0ZW5zaW9uX0V4cG9zZSIgbmFtZT0iZXh0ZW5zaW9uX0V4cG9zZSIgdmlzaWJpbGl0eT0icHVibGljIiB0eXBlPSJTeXNNTC1Nb2RlbEVsZW1lbnRzLUV4cG9zZSIgYWdncmVnYXRpb249ImNvbXBvc2l0ZSIgYXNzb2NpYXRpb249IlN5c01MLU1vZGVsRWxlbWVudHMtRV9leHRlbnNpb25fRXhwb3NlX2Jhc2VfRGVwZW5kZW5jeSI+DQorICAgICAgICAgIDxsb3dlclZhbHVlIHhtaTp0eXBlPSJ1bWw6TGl0ZXJhbEludGVnZXIiIHhtaTppZD0iU3lzTUwtTW9kZWxFbGVtZW50cy1FX2V4dGVuc2lvbl9FeHBvc2VfYmFzZV9EZXBlbmRlbmN5LWV4dGVuc2lvbl9FeHBvc2UtbG93ZXJWYWx1ZSIgbmFtZT0iIi8+DQorICAgICAgICAgIDx1cHBlclZhbHVlIHhtaTp0eXBlPSJ1bWw6TGl0ZXJhbFVubGltaXRlZE5hdHVyYWwiIHhtaTppZD0iU3lzTUwtTW9kZWxFbGVtZW50cy1FX2V4dGVuc2lvbl9FeHBvc2VfYmFzZV9EZXBlbmRlbmN5LWV4dGVuc2lvbl9FeHBvc2UtdXBwZXJWYWx1ZSIgbmFtZT0iIiB2YWx1ZT0iMSIvPg0KKyAgICAgICAgPC9vd25lZEVuZD4NCisgICAgICA8L3BhY2thZ2VkRWxlbWVudD4NCisgICAgICA8cGFja2FnZWRFbGVtZW50IHhtaTp0eXBlPSJ1bWw6RXh0ZW5zaW9uIiB4bWk6aWQ9IlN5c01MLU1vZGVsRWxlbWVudHMtRV9leHRlbnNpb25fQ29uZm9ybV9iYXNlX0dlbmVyYWxpemF0aW9uIiBuYW1lPSJFX2V4dGVuc2lvbl9Db25mb3JtX2Jhc2VfR2VuZXJhbGl6YXRpb24iIG1lbWJlckVuZD0iU3lzTUwtTW9kZWxFbGVtZW50cy1Db25mb3JtLWJhc2VfR2VuZXJhbGl6YXRpb24gU3lzTUwtTW9kZWxFbGVtZW50cy1FX2V4dGVuc2lvbl9Db25mb3JtX2Jhc2VfR2VuZXJhbGl6YXRpb24tZXh0ZW5zaW9uX0NvbmZvcm0iIG5hdmlnYWJsZU93bmVkRW5kPSJTeXNNTC1Nb2RlbEVsZW1lbnRzLUVfZXh0ZW5zaW9uX0NvbmZvcm1fYmFzZV9HZW5lcmFsaXphdGlvbi1leHRlbnNpb25fQ29uZm9ybSI+DQorICAgICAgICA8b3duZWRFbmQgeG1pOnR5cGU9InVtbDpFeHRlbnNpb25FbmQiIHhtaTppZD0iU3lzTUwtTW9kZWxFbGVtZW50cy1FX2V4dGVuc2lvbl9Db25mb3JtX2Jhc2VfR2VuZXJhbGl6YXRpb24tZXh0ZW5zaW9uX0NvbmZvcm0iIG5hbWU9ImV4dGVuc2lvbl9Db25mb3JtIiB2aXNpYmlsaXR5PSJwdWJsaWMiIHR5cGU9IlN5c01MLU1vZGVsRWxlbWVudHMtQ29uZm9ybSIgYWdncmVnYXRpb249ImNvbXBvc2l0ZSIgYXNzb2NpYXRpb249IlN5c01MLU1vZGVsRWxlbWVudHMtRV9leHRlbnNpb25fQ29uZm9ybV9iYXNlX0dlbmVyYWxpemF0aW9uIj4NCisgICAgICAgICAgPGxvd2VyVmFsdWUgeG1pOnR5cGU9InVtbDpMaXRlcmFsSW50ZWdlciIgeG1pOmlkPSJTeXNNTC1Nb2RlbEVsZW1lbnRzLUVfZXh0ZW5zaW9uX0NvbmZvcm1fYmFzZV9HZW5lcmFsaXphdGlvbi1leHRlbnNpb25fQ29uZm9ybS1sb3dlclZhbHVlIiBuYW1lPSIiLz4NCisgICAgICAgICAgPHVwcGVyVmFsdWUgeG1pOnR5cGU9InVtbDpMaXRlcmFsVW5saW1pdGVkTmF0dXJhbCIgeG1pOmlkPSJTeXNNTC1Nb2RlbEVsZW1lbnRzLUVfZXh0ZW5zaW9uX0NvbmZvcm1fYmFzZV9HZW5lcmFsaXphdGlvbi1leHRlbnNpb25fQ29uZm9ybS11cHBlclZhbHVlIiBuYW1lPSIiIHZhbHVlPSIxIi8+DQorICAgICAgICA8L293bmVkRW5kPg0KKyAgICAgIDwvcGFja2FnZWRFbGVtZW50Pg0KKyAgICAgIDxwYWNrYWdlZEVsZW1lbnQgeG1pOnR5cGU9InVtbDpFeHRlbnNpb24iIHhtaTppZD0iU3lzTUwtTW9kZWxFbGVtZW50cy1FX2V4dGVuc2lvbl9WaWV3X2Jhc2VfQ2xhc3MiIG5hbWU9IkVfZXh0ZW5zaW9uX1ZpZXdfYmFzZV9DbGFzcyIgbWVtYmVyRW5kPSJTeXNNTC1Nb2RlbEVsZW1lbnRzLVZpZXctYmFzZV9DbGFzcyBTeXNNTC1Nb2RlbEVsZW1lbnRzLUVfZXh0ZW5zaW9uX1ZpZXdfYmFzZV9DbGFzcy1leHRlbnNpb25fVmlldyIgbmF2aWdhYmxlT3duZWRFbmQ9IlN5c01MLU1vZGVsRWxlbWVudHMtRV9leHRlbnNpb25fVmlld19iYXNlX0NsYXNzLWV4dGVuc2lvbl9WaWV3Ij4NCisgICAgICAgIDxvd25lZEVuZCB4bWk6dHlwZT0idW1sOkV4dGVuc2lvbkVuZCIgeG1pOmlkPSJTeXNNTC1Nb2RlbEVsZW1lbnRzLUVfZXh0ZW5zaW9uX1ZpZXdfYmFzZV9DbGFzcy1leHRlbnNpb25fVmlldyIgbmFtZT0iZXh0ZW5zaW9uX1ZpZXciIHZpc2liaWxpdHk9InB1YmxpYyIgdHlwZT0iU3lzTUwtTW9kZWxFbGVtZW50cy1WaWV3IiBhZ2dyZWdhdGlvbj0iY29tcG9zaXRlIiBhc3NvY2lhdGlvbj0iU3lzTUwtTW9kZWxFbGVtZW50cy1FX2V4dGVuc2lvbl9WaWV3X2Jhc2VfQ2xhc3MiPg0KKyAgICAgICAgICA8bG93ZXJWYWx1ZSB4bWk6dHlwZT0idW1sOkxpdGVyYWxJbnRlZ2VyIiB4bWk6aWQ9IlN5c01MLU1vZGVsRWxlbWVudHMtRV9leHRlbnNpb25fVmlld19iYXNlX0NsYXNzLWV4dGVuc2lvbl9WaWV3LWxvd2VyVmFsdWUiIG5hbWU9IiIvPg0KKyAgICAgICAgICA8dXBwZXJWYWx1ZSB4bWk6dHlwZT0idW1sOkxpdGVyYWxVbmxpbWl0ZWROYXR1cmFsIiB4bWk6aWQ9IlN5c01MLU1vZGVsRWxlbWVudHMtRV9leHRlbnNpb25fVmlld19iYXNlX0NsYXNzLWV4dGVuc2lvbl9WaWV3LXVwcGVyVmFsdWUiIG5hbWU9IiIgdmFsdWU9IjEiLz4NCisgICAgICAgIDwvb3duZWRFbmQ+DQorICAgICAgPC9wYWNrYWdlZEVsZW1lbnQ+DQorICAgICAgPHBhY2thZ2VkRWxlbWVudCB4bWk6dHlwZT0idW1sOlN0ZXJlb3R5cGUiIHhtaTppZD0iU3lzTUwtTW9kZWxFbGVtZW50cy1FbGVtZW50R3JvdXAiIG5hbWU9IkVsZW1lbnRHcm91cCI+DQorICAgICAgICA8b3duZWRDb21tZW50IHhtaTppZD0iU3lzTUwtTW9kZWxFbGVtZW50cy1FbGVtZW50R3JvdXAtb3duZWRDb21tZW50IiBhbm5vdGF0ZWRFbGVtZW50PSJTeXNNTC1Nb2RlbEVsZW1lbnRzLUVsZW1lbnRHcm91cCI+DQorICAgICAgICAgIDxib2R5PlRoZSBFbGVtZW50R3JvdXAgc3RlcmVvdHlwZSBwcm92aWRlcyBhIGxpZ2h0d2VpZ2h0IG1lY2hhbmlzbSBmb3IgZ3JvdXBpbmcgdmFyaW91cyBhbmQgcG9zc2libHkgaGV0ZXJvZ2VuZW91cyBtb2RlbCBlbGVtZW50cyBieSBleHRlbmRpbmcgdGhlIGNhcGFiaWxpdHkgb2YgY29tbWVudHMgdG8gcmVmZXIgdG8gbXVsdGlwbGUgYW5ub3RhdGVkIGVsZW1lbnRzLiBGb3IgZXhhbXBsZSwgaXQgY2FuIGdyb3VwIGVsZW1lbnRzIHRoYXQgYXJlIGFzc29jaWF0ZWQgd2l0aCBhIHBhcnRpY3VsYXIgcmVsZWFzZSBvZiB0aGUgbW9kZWwsIGhhdmUgYSBjZXJ0YWluIHJpc2sgbGV2ZWwsIG9yIGFyZSBhc3NvY2lhdGVkIHdpdGggYSBsZWdhY3kgZGVzaWduLjwvYm9keT4NCisgICAgICAgIDwvb3duZWRDb21tZW50Pg0KKyAgICAgICAgPG93bmVkQXR0cmlidXRlIHhtaTppZD0iU3lzTUwtTW9kZWxFbGVtZW50cy1FbGVtZW50R3JvdXAtYmFzZV9Db21tZW50IiBuYW1lPSJiYXNlX0NvbW1lbnQiIHZpc2liaWxpdHk9InB1YmxpYyIgYXNzb2NpYXRpb249IlN5c01MLU1vZGVsRWxlbWVudHMtRV9leHRlbnNpb25fRWxlbWVudEdyb3VwX2Jhc2VfQ29tbWVudCI+DQorICAgICAgICAgIDx0eXBlIHhtaTp0eXBlPSJ1bWw6Q2xhc3MiIGhyZWY9InBhdGhtYXA6Ly9VTUxfTUVUQU1PREVMUy9VTUwubWV0YW1vZGVsLnVtbCNDb21tZW50Ii8+DQorICAgICAgICAgIDxsb3dlclZhbHVlIHhtaTp0eXBlPSJ1bWw6TGl0ZXJhbEludGVnZXIiIHhtaTppZD0iU3lzTUwtTW9kZWxFbGVtZW50cy1FbGVtZW50R3JvdXAtYmFzZV9Db21tZW50LWxvd2VyVmFsdWUiIG5hbWU9IiIvPg0KKyAgICAgICAgICA8dXBwZXJWYWx1ZSB4bWk6dHlwZT0idW1sOkxpdGVyYWxVbmxpbWl0ZWROYXR1cmFsIiB4bWk6aWQ9IlN5c01MLU1vZGVsRWxlbWVudHMtRWxlbWVudEdyb3VwLWJhc2VfQ29tbWVudC11cHBlclZhbHVlIiBuYW1lPSIiIHZhbHVlPSIxIi8+DQorICAgICAgICA8L293bmVkQXR0cmlidXRlPg0KKyAgICAgICAgPG93bmVkQXR0cmlidXRlIHhtaTppZD0iU3lzTUwtTW9kZWxFbGVtZW50cy1FbGVtZW50R3JvdXAtbmFtZSIgbmFtZT0ibmFtZSIgdmlzaWJpbGl0eT0icHVibGljIj4NCisgICAgICAgICAgPHR5cGUgeG1pOnR5cGU9InVtbDpQcmltaXRpdmVUeXBlIiBocmVmPSJwYXRobWFwOi8vVU1MX0xJQlJBUklFUy9VTUxQcmltaXRpdmVUeXBlcy5saWJyYXJ5LnVtbCNTdHJpbmciLz4NCisgICAgICAgIDwvb3duZWRBdHRyaWJ1dGU+DQorICAgICAgICA8b3duZWRBdHRyaWJ1dGUgeG1pOmlkPSJTeXNNTC1Nb2RlbEVsZW1lbnRzLUVsZW1lbnRHcm91cC1jcml0ZXJpb24xIiBuYW1lPSJjcml0ZXJpb24iIHZpc2liaWxpdHk9InB1YmxpYyIgaXNEZXJpdmVkPSJ0cnVlIj4NCisgICAgICAgICAgPG93bmVkQ29tbWVudCB4bWk6aWQ9IlN5c01MLU1vZGVsRWxlbWVudHMtRWxlbWVudEdyb3VwLWNyaXRlcmlvbjEtb3duZWRDb21tZW50IiBhbm5vdGF0ZWRFbGVtZW50PSJTeXNNTC1Nb2RlbEVsZW1lbnRzLUVsZW1lbnRHcm91cC1jcml0ZXJpb24yIj4NCisgICAgICAgICAgICA8Ym9keT5TcGVjaWZpZXMgdGhlIHJhdGlvbmFsZSBmb3IgYmVpbmcgbWVtYmVyIG9mIHRoZSBncm91cC4gQWRkaW5nIGFuIGVsZW1lbnQgdG8gdGhlIGdyb3VwIGFzc2VydHMgdGhhdCB0aGUgY3JpdGVyaW9uDQorYXBwbGllcyB0byB0aGlzIGVsZW1lbnQuDQorRGVyaXZlZCBmcm9tIENvbW1lbnQ6OmJvZHkuPC9ib2R5Pg0KKyAgICAgICAgICA8L293bmVkQ29tbWVudD4NCisgICAgICAgICAgPHR5cGUgeG1pOnR5cGU9InVtbDpQcmltaXRpdmVUeXBlIiBocmVmPSJwYXRobWFwOi8vVU1MX0xJQlJBUklFUy9VTUxQcmltaXRpdmVUeXBlcy5saWJyYXJ5LnVtbCNTdHJpbmciLz4NCisgICAgICAgIDwvb3duZWRBdHRyaWJ1dGU+DQorICAgICAgICA8b3duZWRBdHRyaWJ1dGUgeG1pOmlkPSJTeXNNTC1Nb2RlbEVsZW1lbnRzLUVsZW1lbnRHcm91cC1zaXplMSIgbmFtZT0ic2l6ZSIgdmlzaWJpbGl0eT0icHVibGljIiBpc0Rlcml2ZWQ9InRydWUiPg0KKyAgICAgICAgICA8b3duZWRDb21tZW50IHhtaTppZD0iU3lzTUwtTW9kZWxFbGVtZW50cy1FbGVtZW50R3JvdXAtc2l6ZTEtb3duZWRDb21tZW50IiBhbm5vdGF0ZWRFbGVtZW50PSJTeXNNTC1Nb2RlbEVsZW1lbnRzLUVsZW1lbnRHcm91cC1zaXplMiI+DQorICAgICAgICAgICAgPGJvZHk+TnVtYmVyIG9mIG1lbWJlcnMgaW4gdGhlIGdyb3VwLiBEZXJpdmVkLjwvYm9keT4NCisgICAgICAgICAgPC9vd25lZENvbW1lbnQ+DQorICAgICAgICAgIDx0eXBlIHhtaTp0eXBlPSJ1bWw6UHJpbWl0aXZlVHlwZSIgaHJlZj0icGF0aG1hcDovL1VNTF9MSUJSQVJJRVMvVU1MUHJpbWl0aXZlVHlwZXMubGlicmFyeS51bWwjSW50ZWdlciIvPg0KKyAgICAgICAgPC9vd25lZEF0dHJpYnV0ZT4NCisgICAgICAgIDxvd25lZEF0dHJpYnV0ZSB4bWk6aWQ9IlN5c01MLU1vZGVsRWxlbWVudHMtRWxlbWVudEdyb3VwLW1lbWJlcjEiIG5hbWU9Im1lbWJlciIgdmlzaWJpbGl0eT0icHVibGljIiBpc0Rlcml2ZWQ9InRydWUiPg0KKyAgICAgICAgICA8b3duZWRDb21tZW50IHhtaTppZD0iU3lzTUwtTW9kZWxFbGVtZW50cy1FbGVtZW50R3JvdXAtbWVtYmVyMS1vd25lZENvbW1lbnQiIGFubm90YXRlZEVsZW1lbnQ9IlN5c01MLU1vZGVsRWxlbWVudHMtRWxlbWVudEdyb3VwLW1lbWJlcjEiPg0KKyAgICAgICAgICAgIDxib2R5PlNldCBzcGVjaWZ5aW5nIHRoZSBtZW1iZXJzIG9mIHRoZSBncm91cC4NCitEZXJpdmVkIGZyb20gQ29tbWVudDo6YW5ub3RhdGVkRWxlbWVudC48L2JvZHk+DQorICAgICAgICAgIDwvb3duZWRDb21tZW50Pg0KKyAgICAgICAgICA8dHlwZSB4bWk6dHlwZT0idW1sOkNsYXNzIiBocmVmPSJwYXRobWFwOi8vVU1MX01FVEFNT0RFTFMvVU1MLm1ldGFtb2RlbC51bWwjRWxlbWVudCIvPg0KKyAgICAgICAgICA8bG93ZXJWYWx1ZSB4bWk6dHlwZT0idW1sOkxpdGVyYWxJbnRlZ2VyIiB4bWk6aWQ9IlN5c01MLU1vZGVsRWxlbWVudHMtRWxlbWVudEdyb3VwLW1lbWJlcjEtbG93ZXJWYWx1ZSIgbmFtZT0iIi8+DQorICAgICAgICAgIDx1cHBlclZhbHVlIHhtaTp0eXBlPSJ1bWw6TGl0ZXJhbFVubGltaXRlZE5hdHVyYWwiIHhtaTppZD0iU3lzTUwtTW9kZWxFbGVtZW50cy1FbGVtZW50R3JvdXAtbWVtYmVyMS11cHBlclZhbHVlIiBuYW1lPSIiIHZhbHVlPSIqIi8+DQorICAgICAgICA8L293bmVkQXR0cmlidXRlPg0KKyAgICAgICAgPG93bmVkQXR0cmlidXRlIHhtaTppZD0iU3lzTUwtTW9kZWxFbGVtZW50cy1FbGVtZW50R3JvdXAtb3JkZXJlZE1lbWJlciIgbmFtZT0ib3JkZXJlZE1lbWJlciIgdmlzaWJpbGl0eT0icHVibGljIiBpc09yZGVyZWQ9InRydWUiIHN1YnNldHRlZFByb3BlcnR5PSJTeXNNTC1Nb2RlbEVsZW1lbnRzLUVsZW1lbnRHcm91cC1tZW1iZXIxIj4NCisgICAgICAgICAgPG93bmVkQ29tbWVudCB4bWk6aWQ9IlN5c01MLU1vZGVsRWxlbWVudHMtRWxlbWVudEdyb3VwLW9yZGVyZWRNZW1iZXItb3duZWRDb21tZW50IiBhbm5vdGF0ZWRFbGVtZW50PSJTeXNNTC1Nb2RlbEVsZW1lbnRzLUVsZW1lbnRHcm91cC1vcmRlcmVkTWVtYmVyIj4NCisgICAgICAgICAgICA8Ym9keT5Pcmdhbml6ZSBtZW1iZXIgYWNjb3JkaW5nIHRvIGFuIGFyYml0cmFyeSBvcmRlci4gT3B0aW9uYWwuPC9ib2R5Pg0KKyAgICAgICAgICA8L293bmVkQ29tbWVudD4NCisgICAgICAgICAgPHR5cGUgeG1pOnR5cGU9InVtbDpDbGFzcyIgaHJlZj0icGF0aG1hcDovL1VNTF9NRVRBTU9ERUxTL1VNTC5tZXRhbW9kZWwudW1sI0VsZW1lbnQiLz4NCisgICAgICAgICAgPGxvd2VyVmFsdWUgeG1pOnR5cGU9InVtbDpMaXRlcmFsSW50ZWdlciIgeG1pOmlkPSJTeXNNTC1Nb2RlbEVsZW1lbnRzLUVsZW1lbnRHcm91cC1vcmRlcmVkTWVtYmVyLWxvd2VyVmFsdWUiIG5hbWU9IiIvPg0KKyAgICAgICAgICA8dXBwZXJWYWx1ZSB4bWk6dHlwZT0idW1sOkxpdGVyYWxVbmxpbWl0ZWROYXR1cmFsIiB4bWk6aWQ9IlN5c01MLU1vZGVsRWxlbWVudHMtRWxlbWVudEdyb3VwLW9yZGVyZWRNZW1iZXItdXBwZXJWYWx1ZSIgbmFtZT0iIiB2YWx1ZT0iKiIvPg0KKyAgICAgICAgPC9vd25lZEF0dHJpYnV0ZT4NCisgICAgICAgIDxvd25lZE9wZXJhdGlvbiB4bWk6aWQ9IlN5c01MLU1vZGVsRWxlbWVudHMtRWxlbWVudEdyb3VwLW1lbWJlcjIiIG5hbWU9Im1lbWJlciIgdmlzaWJpbGl0eT0icHVibGljIiBpc1F1ZXJ5PSJ0cnVlIj4NCisgICAgICAgICAgPG93bmVkUGFyYW1ldGVyIHhtaTppZD0iU3lzTUwtTW9kZWxFbGVtZW50cy1FbGVtZW50R3JvdXAtbWVtYmVyMi1yZXN1bHQiIG5hbWU9InJlc3VsdCIgdmlzaWJpbGl0eT0icHVibGljIiBkaXJlY3Rpb249InJldHVybiI+DQorICAgICAgICAgICAgPHR5cGUgeG1pOnR5cGU9InVtbDpDbGFzcyIgaHJlZj0icGF0aG1hcDovL1VNTF9NRVRBTU9ERUxTL1VNTC5tZXRhbW9kZWwudW1sI0VsZW1lbnQiLz4NCisgICAgICAgICAgICA8bG93ZXJWYWx1ZSB4bWk6dHlwZT0idW1sOkxpdGVyYWxJbnRlZ2VyIiB4bWk6aWQ9IlN5c01MLU1vZGVsRWxlbWVudHMtRWxlbWVudEdyb3VwLW1lbWJlcjItcmVzdWx0LWxvd2VyVmFsdWUiIG5hbWU9IiIvPg0KKyAgICAgICAgICAgIDx1cHBlclZhbHVlIHhtaTp0eXBlPSJ1bWw6TGl0ZXJhbFVubGltaXRlZE5hdHVyYWwiIHhtaTppZD0iU3lzTUwtTW9kZWxFbGVtZW50cy1FbGVtZW50R3JvdXAtbWVtYmVyMi1yZXN1bHQtdXBwZXJWYWx1ZSIgbmFtZT0iIiB2YWx1ZT0iKiIvPg0KKyAgICAgICAgICA8L293bmVkUGFyYW1ldGVyPg0KKyAgICAgICAgPC9vd25lZE9wZXJhdGlvbj4NCisgICAgICAgIDxvd25lZE9wZXJhdGlvbiB4bWk6aWQ9IlN5c01MLU1vZGVsRWxlbWVudHMtRWxlbWVudEdyb3VwLWFsbEdyb3VwcyIgbmFtZT0iYWxsR3JvdXBzIiB2aXNpYmlsaXR5PSJwdWJsaWMiIGlzU3RhdGljPSJ0cnVlIiBpc1F1ZXJ5PSJ0cnVlIj4NCisgICAgICAgICAgPG93bmVkUGFyYW1ldGVyIHhtaTppZD0iU3lzTUwtTW9kZWxFbGVtZW50cy1FbGVtZW50R3JvdXAtYWxsR3JvdXBzLWUiIG5hbWU9ImUiIHZpc2liaWxpdHk9InB1YmxpYyI+DQorICAgICAgICAgICAgPHR5cGUgeG1pOnR5cGU9InVtbDpDbGFzcyIgaHJlZj0icGF0aG1hcDovL1VNTF9NRVRBTU9ERUxTL1VNTC5tZXRhbW9kZWwudW1sI0VsZW1lbnQiLz4NCisgICAgICAgICAgPC9vd25lZFBhcmFtZXRlcj4NCisgICAgICAgICAgPG93bmVkUGFyYW1ldGVyIHhtaTppZD0iU3lzTUwtTW9kZWxFbGVtZW50cy1FbGVtZW50R3JvdXAtYWxsR3JvdXBzLXJlc3VsdCIgbmFtZT0icmVzdWx0IiB2aXNpYmlsaXR5PSJwdWJsaWMiIHR5cGU9IlN5c01MLU1vZGVsRWxlbWVudHMtRWxlbWVudEdyb3VwIiBkaXJlY3Rpb249InJldHVybiI+DQorICAgICAgICAgICAgPGxvd2VyVmFsdWUgeG1pOnR5cGU9InVtbDpMaXRlcmFsSW50ZWdlciIgeG1pOmlkPSJTeXNNTC1Nb2RlbEVsZW1lbnRzLUVsZW1lbnRHcm91cC1hbGxHcm91cHMtcmVzdWx0LWxvd2VyVmFsdWUiIG5hbWU9IiIvPg0KKyAgICAgICAgICAgIDx1cHBlclZhbHVlIHhtaTp0eXBlPSJ1bWw6TGl0ZXJhbFVubGltaXRlZE5hdHVyYWwiIHhtaTppZD0iU3lzTUwtTW9kZWxFbGVtZW50cy1FbGVtZW50R3JvdXAtYWxsR3JvdXBzLXJlc3VsdC11cHBlclZhbHVlIiBuYW1lPSIiIHZhbHVlPSIqIi8+DQorICAgICAgICAgIDwvb3duZWRQYXJhbWV0ZXI+DQorICAgICAgICA8L293bmVkT3BlcmF0aW9uPg0KKyAgICAgICAgPG93bmVkT3BlcmF0aW9uIHhtaTppZD0iU3lzTUwtTW9kZWxFbGVtZW50cy1FbGVtZW50R3JvdXAtY3JpdGVyaW9uMiIgbmFtZT0iY3JpdGVyaW9uIiB2aXNpYmlsaXR5PSJwdWJsaWMiIGlzUXVlcnk9InRydWUiPg0KKyAgICAgICAgICA8b3duZWRQYXJhbWV0ZXIgeG1pOmlkPSJTeXNNTC1Nb2RlbEVsZW1lbnRzLUVsZW1lbnRHcm91cC1jcml0ZXJpb24yLXJlc3VsdCIgbmFtZT0icmVzdWx0IiB2aXNpYmlsaXR5PSJwdWJsaWMiIGRpcmVjdGlvbj0icmV0dXJuIj4NCisgICAgICAgICAgICA8dHlwZSB4bWk6dHlwZT0idW1sOlByaW1pdGl2ZVR5cGUiIGhyZWY9InBhdGhtYXA6Ly9VTUxfTElCUkFSSUVTL1VNTFByaW1pdGl2ZVR5cGVzLmxpYnJhcnkudW1sI1N0cmluZyIvPg0KKyAgICAgICAgICAgIDxsb3dlclZhbHVlIHhtaTp0eXBlPSJ1bWw6TGl0ZXJhbEludGVnZXIiIHhtaTppZD0iU3lzTUwtTW9kZWxFbGVtZW50cy1FbGVtZW50R3JvdXAtY3JpdGVyaW9uMi1yZXN1bHQtbG93ZXJWYWx1ZSIgbmFtZT0iIi8+DQorICAgICAgICAgICAgPHVwcGVyVmFsdWUgeG1pOnR5cGU9InVtbDpMaXRlcmFsVW5saW1pdGVkTmF0dXJhbCIgeG1pOmlkPSJTeXNNTC1Nb2RlbEVsZW1lbnRzLUVsZW1lbnRHcm91cC1jcml0ZXJpb24yLXJlc3VsdC11cHBlclZhbHVlIiBuYW1lPSIiIHZhbHVlPSIxIi8+DQorICAgICAgICAgIDwvb3duZWRQYXJhbWV0ZXI+DQorICAgICAgICA8L293bmVkT3BlcmF0aW9uPg0KKyAgICAgICAgPG93bmVkT3BlcmF0aW9uIHhtaTppZD0iU3lzTUwtTW9kZWxFbGVtZW50cy1FbGVtZW50R3JvdXAtc2l6ZTIiIG5hbWU9InNpemUiIHZpc2liaWxpdHk9InB1YmxpYyIgaXNRdWVyeT0idHJ1ZSI+DQorICAgICAgICAgIDxvd25lZFBhcmFtZXRlciB4bWk6aWQ9IlN5c01MLU1vZGVsRWxlbWVudHMtRWxlbWVudEdyb3VwLXNpemUyLXJlc3VsdCIgbmFtZT0icmVzdWx0IiB2aXNpYmlsaXR5PSJwdWJsaWMiIGRpcmVjdGlvbj0icmV0dXJuIj4NCisgICAgICAgICAgICA8dHlwZSB4bWk6dHlwZT0idW1sOlByaW1pdGl2ZVR5cGUiIGhyZWY9InBhdGhtYXA6Ly9VTUxfTElCUkFSSUVTL1VNTFByaW1pdGl2ZVR5cGVzLmxpYnJhcnkudW1sI0ludGVnZXIiLz4NCisgICAgICAgICAgICA8bG93ZXJWYWx1ZSB4bWk6dHlwZT0idW1sOkxpdGVyYWxJbnRlZ2VyIiB4bWk6aWQ9IlN5c01MLU1vZGVsRWxlbWVudHMtRWxlbWVudEdyb3VwLXNpemUyLXJlc3VsdC1sb3dlclZhbHVlIiBuYW1lPSIiIHZhbHVlPSIxIi8+DQorICAgICAgICAgICAgPHVwcGVyVmFsdWUgeG1pOnR5cGU9InVtbDpMaXRlcmFsVW5saW1pdGVkTmF0dXJhbCIgeG1pOmlkPSJTeXNNTC1Nb2RlbEVsZW1lbnRzLUVsZW1lbnRHcm91cC1zaXplMi1yZXN1bHQtdXBwZXJWYWx1ZSIgbmFtZT0iIiB2YWx1ZT0iMSIvPg0KKyAgICAgICAgICA8L293bmVkUGFyYW1ldGVyPg0KKyAgICAgICAgPC9vd25lZE9wZXJhdGlvbj4NCisgICAgICA8L3BhY2thZ2VkRWxlbWVudD4NCisgICAgICA8cGFja2FnZWRFbGVtZW50IHhtaTp0eXBlPSJ1bWw6RXh0ZW5zaW9uIiB4bWk6aWQ9IlN5c01MLU1vZGVsRWxlbWVudHMtRV9leHRlbnNpb25fRWxlbWVudEdyb3VwX2Jhc2VfQ29tbWVudCIgbmFtZT0iRV9leHRlbnNpb25fRWxlbWVudEdyb3VwX2Jhc2VfQ29tbWVudCIgbWVtYmVyRW5kPSJTeXNNTC1Nb2RlbEVsZW1lbnRzLUVsZW1lbnRHcm91cC1iYXNlX0NvbW1lbnQgU3lzTUwtTW9kZWxFbGVtZW50cy1FX2V4dGVuc2lvbl9FbGVtZW50R3JvdXBfYmFzZV9Db21tZW50LWV4dGVuc2lvbl9FbGVtZW50R3JvdXAiIG5hdmlnYWJsZU93bmVkRW5kPSJTeXNNTC1Nb2RlbEVsZW1lbnRzLUVfZXh0ZW5zaW9uX0VsZW1lbnRHcm91cF9iYXNlX0NvbW1lbnQtZXh0ZW5zaW9uX0VsZW1lbnRHcm91cCI+DQorICAgICAgICA8b3duZWRFbmQgeG1pOnR5cGU9InVtbDpFeHRlbnNpb25FbmQiIHhtaTppZD0iU3lzTUwtTW9kZWxFbGVtZW50cy1FX2V4dGVuc2lvbl9FbGVtZW50R3JvdXBfYmFzZV9Db21tZW50LWV4dGVuc2lvbl9FbGVtZW50R3JvdXAiIG5hbWU9ImV4dGVuc2lvbl9FbGVtZW50R3JvdXAiIHZpc2liaWxpdHk9InB1YmxpYyIgdHlwZT0iU3lzTUwtTW9kZWxFbGVtZW50cy1FbGVtZW50R3JvdXAiIGFnZ3JlZ2F0aW9uPSJjb21wb3NpdGUiIGFzc29jaWF0aW9uPSJTeXNNTC1Nb2RlbEVsZW1lbnRzLUVfZXh0ZW5zaW9uX0VsZW1lbnRHcm91cF9iYXNlX0NvbW1lbnQiPg0KKyAgICAgICAgICA8bG93ZXJWYWx1ZSB4bWk6dHlwZT0idW1sOkxpdGVyYWxJbnRlZ2VyIiB4bWk6aWQ9IlN5c01MLU1vZGVsRWxlbWVudHMtRV9leHRlbnNpb25fRWxlbWVudEdyb3VwX2Jhc2VfQ29tbWVudC1leHRlbnNpb25fRWxlbWVudEdyb3VwLWxvd2VyVmFsdWUiIG5hbWU9IiIvPg0KKyAgICAgICAgICA8dXBwZXJWYWx1ZSB4bWk6dHlwZT0idW1sOkxpdGVyYWxVbmxpbWl0ZWROYXR1cmFsIiB4bWk6aWQ9IlN5c01MLU1vZGVsRWxlbWVudHMtRV9leHRlbnNpb25fRWxlbWVudEdyb3VwX2Jhc2VfQ29tbWVudC1leHRlbnNpb25fRWxlbWVudEdyb3VwLXVwcGVyVmFsdWUiIG5hbWU9IiIgdmFsdWU9IjEiLz4NCisgICAgICAgIDwvb3duZWRFbmQ+DQorICAgICAgPC9wYWNrYWdlZEVsZW1lbnQ+DQorICAgICAgPHBhY2thZ2VkRWxlbWVudCB4bWk6dHlwZT0idW1sOlBhY2thZ2UiIHhtaTppZD0iU3lzTUwtTW9kZWxFbGVtZW50cy1EZXByZWNhdGVkIiBuYW1lPSJEZXByZWNhdGVkIiBVUkk9IiI+DQorICAgICAgICA8cGFja2FnZWRFbGVtZW50IHhtaTp0eXBlPSJ1bWw6RXh0ZW5zaW9uIiB4bWk6aWQ9IlN5c01MLU1vZGVsRWxlbWVudHMtRGVwcmVjYXRlZC1FX2V4dGVuc2lvbl9WaWV3X2Jhc2VfUGFja2FnZSIgbmFtZT0iRV9leHRlbnNpb25fVmlld19iYXNlX1BhY2thZ2UiIG1lbWJlckVuZD0iU3lzTUwtTW9kZWxFbGVtZW50cy1EZXByZWNhdGVkLUVfZXh0ZW5zaW9uX1ZpZXdfYmFzZV9QYWNrYWdlLWV4dGVuc2lvbl9WaWV3IFN5c01MLU1vZGVsRWxlbWVudHMtVmlldy1iYXNlX1BhY2thZ2UiIG5hdmlnYWJsZU93bmVkRW5kPSJTeXNNTC1Nb2RlbEVsZW1lbnRzLURlcHJlY2F0ZWQtRV9leHRlbnNpb25fVmlld19iYXNlX1BhY2thZ2UtZXh0ZW5zaW9uX1ZpZXciPg0KKyAgICAgICAgICA8b3duZWRFbmQgeG1pOnR5cGU9InVtbDpFeHRlbnNpb25FbmQiIHhtaTppZD0iU3lzTUwtTW9kZWxFbGVtZW50cy1EZXByZWNhdGVkLUVfZXh0ZW5zaW9uX1ZpZXdfYmFzZV9QYWNrYWdlLWV4dGVuc2lvbl9WaWV3IiBuYW1lPSJleHRlbnNpb25fVmlldyIgdmlzaWJpbGl0eT0icHVibGljIiB0eXBlPSJTeXNNTC1Nb2RlbEVsZW1lbnRzLVZpZXciIGFnZ3JlZ2F0aW9uPSJjb21wb3NpdGUiIGFzc29jaWF0aW9uPSJTeXNNTC1Nb2RlbEVsZW1lbnRzLURlcHJlY2F0ZWQtRV9leHRlbnNpb25fVmlld19iYXNlX1BhY2thZ2UiPg0KKyAgICAgICAgICAgIDxsb3dlclZhbHVlIHhtaTp0eXBlPSJ1bWw6TGl0ZXJhbEludGVnZXIiIHhtaTppZD0iU3lzTUwtTW9kZWxFbGVtZW50cy1EZXByZWNhdGVkLUVfZXh0ZW5zaW9uX1ZpZXdfYmFzZV9QYWNrYWdlLWV4dGVuc2lvbl9WaWV3LWxvd2VyVmFsdWUiIG5hbWU9IiIvPg0KKyAgICAgICAgICAgIDx1cHBlclZhbHVlIHhtaTp0eXBlPSJ1bWw6TGl0ZXJhbEludGVnZXIiIHhtaTppZD0iU3lzTUwtTW9kZWxFbGVtZW50cy1EZXByZWNhdGVkLUVfZXh0ZW5zaW9uX1ZpZXdfYmFzZV9QYWNrYWdlLWV4dGVuc2lvbl9WaWV3LXVwcGVyVmFsdWUiIG5hbWU9IiIgdmFsdWU9IjEiLz4NCisgICAgICAgICAgPC9vd25lZEVuZD4NCisgICAgICAgIDwvcGFja2FnZWRFbGVtZW50Pg0KKyAgICAgICAgPHBhY2thZ2VkRWxlbWVudCB4bWk6dHlwZT0idW1sOkV4dGVuc2lvbiIgeG1pOmlkPSJTeXNNTC1Nb2RlbEVsZW1lbnRzLURlcHJlY2F0ZWQtRV9leHRlbnNpb25fQ29uZm9ybV9iYXNlX0RlcGVuZGVuY3kiIG5hbWU9IkVfZXh0ZW5zaW9uX0NvbmZvcm1fYmFzZV9EZXBlbmRlbmN5IiBtZW1iZXJFbmQ9IlN5c01MLU1vZGVsRWxlbWVudHMtRGVwcmVjYXRlZC1FX2V4dGVuc2lvbl9Db25mb3JtX2Jhc2VfRGVwZW5kZW5jeS1leHRlbnNpb25fQ29uZm9ybSBTeXNNTC1Nb2RlbEVsZW1lbnRzLUNvbmZvcm0tYmFzZV9EZXBlbmRlbmN5IiBuYXZpZ2FibGVPd25lZEVuZD0iU3lzTUwtTW9kZWxFbGVtZW50cy1EZXByZWNhdGVkLUVfZXh0ZW5zaW9uX0NvbmZvcm1fYmFzZV9EZXBlbmRlbmN5LWV4dGVuc2lvbl9Db25mb3JtIj4NCisgICAgICAgICAgPG93bmVkRW5kIHhtaTp0eXBlPSJ1bWw6RXh0ZW5zaW9uRW5kIiB4bWk6aWQ9IlN5c01MLU1vZGVsRWxlbWVudHMtRGVwcmVjYXRlZC1FX2V4dGVuc2lvbl9Db25mb3JtX2Jhc2VfRGVwZW5kZW5jeS1leHRlbnNpb25fQ29uZm9ybSIgbmFtZT0iZXh0ZW5zaW9uX0NvbmZvcm0iIHZpc2liaWxpdHk9InB1YmxpYyIgdHlwZT0iU3lzTUwtTW9kZWxFbGVtZW50cy1Db25mb3JtIiBhZ2dyZWdhdGlvbj0iY29tcG9zaXRlIiBhc3NvY2lhdGlvbj0iU3lzTUwtTW9kZWxFbGVtZW50cy1EZXByZWNhdGVkLUVfZXh0ZW5zaW9uX0NvbmZvcm1fYmFzZV9EZXBlbmRlbmN5Ij4NCisgICAgICAgICAgICA8bG93ZXJWYWx1ZSB4bWk6dHlwZT0idW1sOkxpdGVyYWxJbnRlZ2VyIiB4bWk6aWQ9IlN5c01MLU1vZGVsRWxlbWVudHMtRGVwcmVjYXRlZC1FX2V4dGVuc2lvbl9Db25mb3JtX2Jhc2VfRGVwZW5kZW5jeS1leHRlbnNpb25fQ29uZm9ybS1sb3dlclZhbHVlIiBuYW1lPSIiLz4NCisgICAgICAgICAgICA8dXBwZXJWYWx1ZSB4bWk6dHlwZT0idW1sOkxpdGVyYWxJbnRlZ2VyIiB4bWk6aWQ9IlN5c01MLU1vZGVsRWxlbWVudHMtRGVwcmVjYXRlZC1FX2V4dGVuc2lvbl9Db25mb3JtX2Jhc2VfRGVwZW5kZW5jeS1leHRlbnNpb25fQ29uZm9ybS11cHBlclZhbHVlIiBuYW1lPSIiIHZhbHVlPSIxIi8+DQorICAgICAgICAgIDwvb3duZWRFbmQ+DQorICAgICAgICA8L3BhY2thZ2VkRWxlbWVudD4NCisgICAgICA8L3BhY2thZ2VkRWxlbWVudD4NCisgICAgPC9wYWNrYWdlZEVsZW1lbnQ+DQorICAgIDxwYWNrYWdlZEVsZW1lbnQgeG1pOnR5cGU9InVtbDpQYWNrYWdlIiB4bWk6aWQ9IlN5c01MLUNvbnN0cmFpbnRCbG9ja3MiIG5hbWU9IkNvbnN0cmFpbnRCbG9ja3MiIFVSST0iIj4NCisgICAgICA8cGFja2FnZUltcG9ydCB4bWk6aWQ9IlN5c01MLUNvbnN0cmFpbnRCbG9ja3MtcGFja2FnZUltcG9ydCIgaW1wb3J0ZWRQYWNrYWdlPSJTeXNNTC1CbG9ja3MiLz4NCisgICAgICA8cGFja2FnZWRFbGVtZW50IHhtaTp0eXBlPSJ1bWw6U3RlcmVvdHlwZSIgeG1pOmlkPSJTeXNNTC1Db25zdHJhaW50QmxvY2tzLUNvbnN0cmFpbnRCbG9jayIgbmFtZT0iQ29uc3RyYWludEJsb2NrIj4NCisgICAgICAgIDxvd25lZENvbW1lbnQgeG1pOmlkPSJTeXNNTC1Db25zdHJhaW50QmxvY2tzLUNvbnN0cmFpbnRCbG9jay1vd25lZENvbW1lbnQiIGFubm90YXRlZEVsZW1lbnQ9IlN5c01MLUNvbnN0cmFpbnRCbG9ja3MtQ29uc3RyYWludEJsb2NrIj4NCisgICAgICAgICAgPGJvZHk+QSBjb25zdHJhaW50IGJsb2NrIGlzIGEgYmxvY2sgdGhhdCBwYWNrYWdlcyB0aGUgc3RhdGVtZW50IG9mIGEgY29uc3RyYWludCBzbyBpdCBtYXkgYmUgYXBwbGllZCBpbiBhIHJldXNhYmxlIHdheSB0byBjb25zdHJhaW4gcHJvcGVydGllcyBvZiBvdGhlciBibG9ja3MuIEEgY29uc3RyYWludCBibG9jayB0eXBpY2FsbHkgZGVmaW5lcyBvbmUgb3IgbW9yZSBjb25zdHJhaW50IHBhcmFtZXRlcnMsIHdoaWNoIGFyZSBib3VuZCB0byBwcm9wZXJ0aWVzIG9mIG90aGVyIGJsb2NrcyBpbiBhIHN1cnJvdW5kaW5nIGNvbnRleHQgd2hlcmUgdGhlIGNvbnN0cmFpbnQgaXMgdXNlZC4gQmluZGluZyBjb25uZWN0b3JzLCBhcyBkZWZpbmVkIGluIENoYXB0ZXIgODogQmxvY2tzLCBhcmUgdXNlZCB0byBiaW5kIGVhY2ggcGFyYW1ldGVyIG9mIHRoZSBjb25zdHJhaW50IGJsb2NrIHRvIGEgcHJvcGVydHkgaW4gdGhlIHN1cnJvdW5kaW5nIGNvbnRleHQuIEFsbCBwcm9wZXJ0aWVzIG9mIGEgY29uc3RyYWludCBibG9jayBhcmUgY29uc3RyYWludCBwYXJhbWV0ZXJzLCB3aXRoIHRoZSBleGNlcHRpb24gb2YgY29uc3RyYWludCBwcm9wZXJ0aWVzIHRoYXQgaG9sZCBpbnRlcm5hbGx5IG5lc3RlZCB1c2FnZXMgb2Ygb3RoZXIgY29uc3RyYWludCBibG9ja3MuPC9ib2R5Pg0KKyAgICAgICAgPC9vd25lZENvbW1lbnQ+DQorICAgICAgICA8Z2VuZXJhbGl6YXRpb24geG1pOmlkPSJTeXNNTC1Db25zdHJhaW50QmxvY2tzLUNvbnN0cmFpbnRCbG9jay1nZW5lcmFsaXphdGlvbiIgZ2VuZXJhbD0iU3lzTUwtQmxvY2tzLUJsb2NrIiBpc1N1YnN0aXR1dGFibGU9ImZhbHNlIi8+DQorICAgICAgPC9wYWNrYWdlZEVsZW1lbnQ+DQorICAgIDwvcGFja2FnZWRFbGVtZW50Pg0KKyAgICA8cGFja2FnZWRFbGVtZW50IHhtaTp0eXBlPSJ1bWw6UGFja2FnZSIgeG1pOmlkPSJTeXNNTC1BbGxvY2F0aW9ucyIgbmFtZT0iQWxsb2NhdGlvbnMiIFVSST0iIj4NCisgICAgICA8cGFja2FnZWRFbGVtZW50IHhtaTp0eXBlPSJ1bWw6RXh0ZW5zaW9uIiB4bWk6aWQ9IlN5c01MLUFsbG9jYXRpb25zLUVfZXh0ZW5zaW9uX0FsbG9jYXRlX2Jhc2VfQWJzdHJhY3Rpb24iIG5hbWU9IkVfZXh0ZW5zaW9uX0FsbG9jYXRlX2Jhc2VfQWJzdHJhY3Rpb24iIG1lbWJlckVuZD0iU3lzTUwtQWxsb2NhdGlvbnMtRV9leHRlbnNpb25fQWxsb2NhdGVfYmFzZV9BYnN0cmFjdGlvbi1leHRlbnNpb25fQWxsb2NhdGUgU3lzTUwtQWxsb2NhdGlvbnMtQWxsb2NhdGUtYmFzZV9BYnN0cmFjdGlvbiIgbmF2aWdhYmxlT3duZWRFbmQ9IlN5c01MLUFsbG9jYXRpb25zLUVfZXh0ZW5zaW9uX0FsbG9jYXRlX2Jhc2VfQWJzdHJhY3Rpb24tZXh0ZW5zaW9uX0FsbG9jYXRlIj4NCisgICAgICAgIDxvd25lZEVuZCB4bWk6dHlwZT0idW1sOkV4dGVuc2lvbkVuZCIgeG1pOmlkPSJTeXNNTC1BbGxvY2F0aW9ucy1FX2V4dGVuc2lvbl9BbGxvY2F0ZV9iYXNlX0Fic3RyYWN0aW9uLWV4dGVuc2lvbl9BbGxvY2F0ZSIgbmFtZT0iZXh0ZW5zaW9uX0FsbG9jYXRlIiB2aXNpYmlsaXR5PSJwdWJsaWMiIHR5cGU9IlN5c01MLUFsbG9jYXRpb25zLUFsbG9jYXRlIiBhZ2dyZWdhdGlvbj0iY29tcG9zaXRlIiBhc3NvY2lhdGlvbj0iU3lzTUwtQWxsb2NhdGlvbnMtRV9leHRlbnNpb25fQWxsb2NhdGVfYmFzZV9BYnN0cmFjdGlvbiI+DQorICAgICAgICAgIDxsb3dlclZhbHVlIHhtaTp0eXBlPSJ1bWw6TGl0ZXJhbEludGVnZXIiIHhtaTppZD0iU3lzTUwtQWxsb2NhdGlvbnMtRV9leHRlbnNpb25fQWxsb2NhdGVfYmFzZV9BYnN0cmFjdGlvbi1leHRlbnNpb25fQWxsb2NhdGUtbG93ZXJWYWx1ZSIgbmFtZT0iIi8+DQorICAgICAgICAgIDx1cHBlclZhbHVlIHhtaTp0eXBlPSJ1bWw6TGl0ZXJhbEludGVnZXIiIHhtaTppZD0iU3lzTUwtQWxsb2NhdGlvbnMtRV9leHRlbnNpb25fQWxsb2NhdGVfYmFzZV9BYnN0cmFjdGlvbi1leHRlbnNpb25fQWxsb2NhdGUtdXBwZXJWYWx1ZSIgbmFtZT0iIiB2YWx1ZT0iMSIvPg0KKyAgICAgICAgPC9vd25lZEVuZD4NCisgICAgICA8L3BhY2thZ2VkRWxlbWVudD4NCisgICAgICA8cGFja2FnZWRFbGVtZW50IHhtaTp0eXBlPSJ1bWw6RXh0ZW5zaW9uIiB4bWk6aWQ9IlN5c01MLUFsbG9jYXRpb25zLUVfZXh0ZW5zaW9uX0FsbG9jYXRlQWN0aXZpdHlQYXJ0aXRpb25fYmFzZV9BY3Rpdml0eVBhcnRpdGlvbiIgbmFtZT0iRV9leHRlbnNpb25fQWxsb2NhdGVBY3Rpdml0eVBhcnRpdGlvbl9iYXNlX0FjdGl2aXR5UGFydGl0aW9uIiBtZW1iZXJFbmQ9IlN5c01MLUFsbG9jYXRpb25zLUVfZXh0ZW5zaW9uX0FsbG9jYXRlQWN0aXZpdHlQYXJ0aXRpb25fYmFzZV9BY3Rpdml0eVBhcnRpdGlvbi1leHRlbnNpb25fQWxsb2NhdGVBY3Rpdml0eVBhcnRpdGlvbiBTeXNNTC1BbGxvY2F0aW9ucy1BbGxvY2F0ZUFjdGl2aXR5UGFydGl0aW9uLWJhc2VfQWN0aXZpdHlQYXJ0aXRpb24iIG5hdmlnYWJsZU93bmVkRW5kPSJTeXNNTC1BbGxvY2F0aW9ucy1FX2V4dGVuc2lvbl9BbGxvY2F0ZUFjdGl2aXR5UGFydGl0aW9uX2Jhc2VfQWN0aXZpdHlQYXJ0aXRpb24tZXh0ZW5zaW9uX0FsbG9jYXRlQWN0aXZpdHlQYXJ0aXRpb24iPg0KKyAgICAgICAgPG93bmVkRW5kIHhtaTp0eXBlPSJ1bWw6RXh0ZW5zaW9uRW5kIiB4bWk6aWQ9IlN5c01MLUFsbG9jYXRpb25zLUVfZXh0ZW5zaW9uX0FsbG9jYXRlQWN0aXZpdHlQYXJ0aXRpb25fYmFzZV9BY3Rpdml0eVBhcnRpdGlvbi1leHRlbnNpb25fQWxsb2NhdGVBY3Rpdml0eVBhcnRpdGlvbiIgbmFtZT0iZXh0ZW5zaW9uX0FsbG9jYXRlQWN0aXZpdHlQYXJ0aXRpb24iIHZpc2liaWxpdHk9InB1YmxpYyIgdHlwZT0iU3lzTUwtQWxsb2NhdGlvbnMtQWxsb2NhdGVBY3Rpdml0eVBhcnRpdGlvbiIgYWdncmVnYXRpb249ImNvbXBvc2l0ZSIgYXNzb2NpYXRpb249IlN5c01MLUFsbG9jYXRpb25zLUVfZXh0ZW5zaW9uX0FsbG9jYXRlQWN0aXZpdHlQYXJ0aXRpb25fYmFzZV9BY3Rpdml0eVBhcnRpdGlvbiI+DQorICAgICAgICAgIDxsb3dlclZhbHVlIHhtaTp0eXBlPSJ1bWw6TGl0ZXJhbEludGVnZXIiIHhtaTppZD0iU3lzTUwtQWxsb2NhdGlvbnMtRV9leHRlbnNpb25fQWxsb2NhdGVBY3Rpdml0eVBhcnRpdGlvbl9iYXNlX0FjdGl2aXR5UGFydGl0aW9uLWV4dGVuc2lvbl9BbGxvY2F0ZUFjdGl2aXR5UGFydGl0aW9uLWxvd2VyVmFsdWUiIG5hbWU9IiIvPg0KKyAgICAgICAgICA8dXBwZXJWYWx1ZSB4bWk6dHlwZT0idW1sOkxpdGVyYWxJbnRlZ2VyIiB4bWk6aWQ9IlN5c01MLUFsbG9jYXRpb25zLUVfZXh0ZW5zaW9uX0FsbG9jYXRlQWN0aXZpdHlQYXJ0aXRpb25fYmFzZV9BY3Rpdml0eVBhcnRpdGlvbi1leHRlbnNpb25fQWxsb2NhdGVBY3Rpdml0eVBhcnRpdGlvbi11cHBlclZhbHVlIiBuYW1lPSIiIHZhbHVlPSIxIi8+DQorICAgICAgICA8L293bmVkRW5kPg0KKyAgICAgIDwvcGFja2FnZWRFbGVtZW50Pg0KKyAgICAgIDxwYWNrYWdlZEVsZW1lbnQgeG1pOnR5cGU9InVtbDpTdGVyZW90eXBlIiB4bWk6aWQ9IlN5c01MLUFsbG9jYXRpb25zLUFsbG9jYXRlQWN0aXZpdHlQYXJ0aXRpb24iIG5hbWU9IkFsbG9jYXRlQWN0aXZpdHlQYXJ0aXRpb24iPg0KKyAgICAgICAgPG93bmVkQ29tbWVudCB4bWk6aWQ9IlN5c01MLUFsbG9jYXRpb25zLUFsbG9jYXRlQWN0aXZpdHlQYXJ0aXRpb24tb3duZWRDb21tZW50IiBhbm5vdGF0ZWRFbGVtZW50PSJTeXNNTC1BbGxvY2F0aW9ucy1BbGxvY2F0ZUFjdGl2aXR5UGFydGl0aW9uIj4NCisgICAgICAgICAgPGJvZHk+QWxsb2NhdGVBY3Rpdml0eVBhcnRpdGlvbiBpcyB1c2VkIHRvIGRlcGljdCBhbiDCq2FsbG9jYXRlwrsgcmVsYXRpb25zaGlwIG9uIGFuIEFjdGl2aXR5IGRpYWdyYW0uIFRoZSBBbGxvY2F0ZUFjdGl2aXR5UGFydGl0aW9uIGlzIGEgc3RhbmRhcmQgVU1MMjo6QWN0aXZpdHlQYXJ0aXRpb24sIHdpdGggbW9kaWZpZWQgY29uc3RyYWludHMgYXMgc3RhdGVkIGluIHRoZSBwYXJhZ3JhcGggYmVsb3cuPC9ib2R5Pg0KKyAgICAgICAgPC9vd25lZENvbW1lbnQ+DQorICAgICAgICA8b3duZWRBdHRyaWJ1dGUgeG1pOmlkPSJTeXNNTC1BbGxvY2F0aW9ucy1BbGxvY2F0ZUFjdGl2aXR5UGFydGl0aW9uLWJhc2VfQWN0aXZpdHlQYXJ0aXRpb24iIG5hbWU9ImJhc2VfQWN0aXZpdHlQYXJ0aXRpb24iIHZpc2liaWxpdHk9InB1YmxpYyIgYXNzb2NpYXRpb249IlN5c01MLUFsbG9jYXRpb25zLUVfZXh0ZW5zaW9uX0FsbG9jYXRlQWN0aXZpdHlQYXJ0aXRpb25fYmFzZV9BY3Rpdml0eVBhcnRpdGlvbiI+DQorICAgICAgICAgIDx0eXBlIHhtaTp0eXBlPSJ1bWw6Q2xhc3MiIGhyZWY9InBhdGhtYXA6Ly9VTUxfTUVUQU1PREVMUy9VTUwubWV0YW1vZGVsLnVtbCNBY3Rpdml0eVBhcnRpdGlvbiIvPg0KKyAgICAgICAgICA8bG93ZXJWYWx1ZSB4bWk6dHlwZT0idW1sOkxpdGVyYWxJbnRlZ2VyIiB4bWk6aWQ9IlN5c01MLUFsbG9jYXRpb25zLUFsbG9jYXRlQWN0aXZpdHlQYXJ0aXRpb24tYmFzZV9BY3Rpdml0eVBhcnRpdGlvbi1sb3dlclZhbHVlIiBuYW1lPSIiLz4NCisgICAgICAgICAgPHVwcGVyVmFsdWUgeG1pOnR5cGU9InVtbDpMaXRlcmFsVW5saW1pdGVkTmF0dXJhbCIgeG1pOmlkPSJTeXNNTC1BbGxvY2F0aW9ucy1BbGxvY2F0ZUFjdGl2aXR5UGFydGl0aW9uLWJhc2VfQWN0aXZpdHlQYXJ0aXRpb24tdXBwZXJWYWx1ZSIgbmFtZT0iIiB2YWx1ZT0iMSIvPg0KKyAgICAgICAgPC9vd25lZEF0dHJpYnV0ZT4NCisgICAgICA8L3BhY2thZ2VkRWxlbWVudD4NCisgICAgICA8cGFja2FnZWRFbGVtZW50IHhtaTp0eXBlPSJ1bWw6U3RlcmVvdHlwZSIgeG1pOmlkPSJTeXNNTC1BbGxvY2F0aW9ucy1BbGxvY2F0ZSIgbmFtZT0iQWxsb2NhdGUiPg0KKyAgICAgICAgPG93bmVkQ29tbWVudCB4bWk6aWQ9IlN5c01MLUFsbG9jYXRpb25zLUFsbG9jYXRlLW93bmVkQ29tbWVudCIgYW5ub3RhdGVkRWxlbWVudD0iU3lzTUwtQWxsb2NhdGlvbnMtQWxsb2NhdGUiPg0KKyAgICAgICAgICA8Ym9keT5BbGxvY2F0ZSBpcyBhIGRlcGVuZGVuY3kgYmFzZWQgb24gVU1MOjphYnN0cmFjdGlvbi4gSXQgaXMgYSBtZWNoYW5pc20gZm9yIGFzc29jaWF0aW5nIGVsZW1lbnRzIG9mIGRpZmZlcmVudCB0eXBlcywgb3IgaW4gZGlmZmVyZW50IGhpZXJhcmNoaWVzLCBhdCBhbiBhYnN0cmFjdCBsZXZlbC4gQWxsb2NhdGUgaXMgdXNlZCBmb3IgYXNzZXNzaW5nIHVzZXIgbW9kZWwgY29uc2lzdGVuY3kgYW5kIGRpcmVjdGluZyBmdXR1cmUgZGVzaWduIGFjdGl2aXR5LiBJdCBpcyBleHBlY3RlZCB0aGF0IGFuIMKrYWxsb2NhdGXCuyByZWxhdGlvbnNoaXAgYmV0d2VlbiBtb2RlbCBlbGVtZW50cyBpcyBhIHByZWN1cnNvciB0byBhIG1vcmUgY29uY3JldGUgcmVsYXRpb25zaGlwIGJldHdlZW4gdGhlIGVsZW1lbnRzLCB0aGVpciBwcm9wZXJ0aWVzLCBvcGVyYXRpb25zLCBhdHRyaWJ1dGVzLCBvciBzdWItY2xhc3Nlcy48L2JvZHk+DQorICAgICAgICA8L293bmVkQ29tbWVudD4NCisgICAgICAgIDxnZW5lcmFsaXphdGlvbiB4bWk6aWQ9IlN5c01MLUFsbG9jYXRpb25zLUFsbG9jYXRlLWdlbmVyYWxpemF0aW9uIiBnZW5lcmFsPSJTeXNNTC1CbG9ja3MtRGlyZWN0ZWRSZWxhdGlvbnNoaXBQcm9wZXJ0eVBhdGgiLz4NCisgICAgICAgIDxvd25lZEF0dHJpYnV0ZSB4bWk6aWQ9IlN5c01MLUFsbG9jYXRpb25zLUFsbG9jYXRlLWJhc2VfQWJzdHJhY3Rpb24iIG5hbWU9ImJhc2VfQWJzdHJhY3Rpb24iIHZpc2liaWxpdHk9InB1YmxpYyIgcmVkZWZpbmVkUHJvcGVydHk9IlN5c01MLUJsb2Nrcy1EaXJlY3RlZFJlbGF0aW9uc2hpcFByb3BlcnR5UGF0aC1iYXNlX0RpcmVjdGVkUmVsYXRpb25zaGlwIiBhc3NvY2lhdGlvbj0iU3lzTUwtQWxsb2NhdGlvbnMtRV9leHRlbnNpb25fQWxsb2NhdGVfYmFzZV9BYnN0cmFjdGlvbiI+DQorICAgICAgICAgIDx0eXBlIHhtaTp0eXBlPSJ1bWw6Q2xhc3MiIGhyZWY9InBhdGhtYXA6Ly9VTUxfTUVUQU1PREVMUy9VTUwubWV0YW1vZGVsLnVtbCNBYnN0cmFjdGlvbiIvPg0KKyAgICAgICAgICA8bG93ZXJWYWx1ZSB4bWk6dHlwZT0idW1sOkxpdGVyYWxJbnRlZ2VyIiB4bWk6aWQ9IlN5c01MLUFsbG9jYXRpb25zLUFsbG9jYXRlLWJhc2VfQWJzdHJhY3Rpb24tbG93ZXJWYWx1ZSIgbmFtZT0iIi8+DQorICAgICAgICAgIDx1cHBlclZhbHVlIHhtaTp0eXBlPSJ1bWw6TGl0ZXJhbFVubGltaXRlZE5hdHVyYWwiIHhtaTppZD0iU3lzTUwtQWxsb2NhdGlvbnMtQWxsb2NhdGUtYmFzZV9BYnN0cmFjdGlvbi11cHBlclZhbHVlIiBuYW1lPSIiIHZhbHVlPSIxIi8+DQorICAgICAgICA8L293bmVkQXR0cmlidXRlPg0KKyAgICAgICAgPG93bmVkT3BlcmF0aW9uIHhtaTppZD0iU3lzTUwtQWxsb2NhdGlvbnMtQWxsb2NhdGUtZ2V0QWxsb2NhdGVkRnJvbSIgbmFtZT0iZ2V0QWxsb2NhdGVkRnJvbSIgdmlzaWJpbGl0eT0icHVibGljIiBpc1N0YXRpYz0idHJ1ZSIgaXNRdWVyeT0idHJ1ZSI+DQorICAgICAgICAgIDxvd25lZFBhcmFtZXRlciB4bWk6aWQ9IlN5c01MLUFsbG9jYXRpb25zLUFsbG9jYXRlLWdldEFsbG9jYXRlZEZyb20tcmVzdWx0IiBuYW1lPSJyZXN1bHQiIHZpc2liaWxpdHk9InB1YmxpYyIgZGlyZWN0aW9uPSJyZXR1cm4iPg0KKyAgICAgICAgICAgIDx0eXBlIHhtaTp0eXBlPSJ1bWw6Q2xhc3MiIGhyZWY9InBhdGhtYXA6Ly9VTUxfTUVUQU1PREVMUy9VTUwubWV0YW1vZGVsLnVtbCNOYW1lZEVsZW1lbnQiLz4NCisgICAgICAgICAgICA8bG93ZXJWYWx1ZSB4bWk6dHlwZT0idW1sOkxpdGVyYWxVbmxpbWl0ZWROYXR1cmFsIiB4bWk6aWQ9IlN5c01MLUFsbG9jYXRpb25zLUFsbG9jYXRlLWdldEFsbG9jYXRlZEZyb20tcmVzdWx0LWxvd2VyVmFsdWUiIG5hbWU9IiIvPg0KKyAgICAgICAgICAgIDx1cHBlclZhbHVlIHhtaTp0eXBlPSJ1bWw6TGl0ZXJhbFVubGltaXRlZE5hdHVyYWwiIHhtaTppZD0iU3lzTUwtQWxsb2NhdGlvbnMtQWxsb2NhdGUtZ2V0QWxsb2NhdGVkRnJvbS1yZXN1bHQtdXBwZXJWYWx1ZSIgbmFtZT0iIiB2YWx1ZT0iKiIvPg0KKyAgICAgICAgICA8L293bmVkUGFyYW1ldGVyPg0KKyAgICAgICAgICA8b3duZWRQYXJhbWV0ZXIgeG1pOmlkPSJTeXNNTC1BbGxvY2F0aW9ucy1BbGxvY2F0ZS1nZXRBbGxvY2F0ZWRGcm9tLXJlZiIgbmFtZT0icmVmIiB2aXNpYmlsaXR5PSJwdWJsaWMiPg0KKyAgICAgICAgICAgIDx0eXBlIHhtaTp0eXBlPSJ1bWw6Q2xhc3MiIGhyZWY9InBhdGhtYXA6Ly9VTUxfTUVUQU1PREVMUy9VTUwubWV0YW1vZGVsLnVtbCNOYW1lZEVsZW1lbnQiLz4NCisgICAgICAgICAgICA8bG93ZXJWYWx1ZSB4bWk6dHlwZT0idW1sOkxpdGVyYWxJbnRlZ2VyIiB4bWk6aWQ9IlN5c01MLUFsbG9jYXRpb25zLUFsbG9jYXRlLWdldEFsbG9jYXRlZEZyb20tcmVmLWxvd2VyVmFsdWUiIG5hbWU9IiIgdmFsdWU9IjEiLz4NCisgICAgICAgICAgICA8dXBwZXJWYWx1ZSB4bWk6dHlwZT0idW1sOkxpdGVyYWxVbmxpbWl0ZWROYXR1cmFsIiB4bWk6aWQ9IlN5c01MLUFsbG9jYXRpb25zLUFsbG9jYXRlLWdldEFsbG9jYXRlZEZyb20tcmVmLXVwcGVyVmFsdWUiIG5hbWU9IiIgdmFsdWU9IjEiLz4NCisgICAgICAgICAgPC9vd25lZFBhcmFtZXRlcj4NCisgICAgICAgIDwvb3duZWRPcGVyYXRpb24+DQorICAgICAgICA8b3duZWRPcGVyYXRpb24geG1pOmlkPSJTeXNNTC1BbGxvY2F0aW9ucy1BbGxvY2F0ZS1nZXRBbGxvY2F0ZWRUbyIgbmFtZT0iZ2V0QWxsb2NhdGVkVG8iIHZpc2liaWxpdHk9InB1YmxpYyIgaXNTdGF0aWM9InRydWUiIGlzUXVlcnk9InRydWUiPg0KKyAgICAgICAgICA8b3duZWRQYXJhbWV0ZXIgeG1pOmlkPSJTeXNNTC1BbGxvY2F0aW9ucy1BbGxvY2F0ZS1nZXRBbGxvY2F0ZWRUby1yZXN1bHQiIG5hbWU9InJlc3VsdCIgdmlzaWJpbGl0eT0icHVibGljIiBkaXJlY3Rpb249InJldHVybiI+DQorICAgICAgICAgICAgPHR5cGUgeG1pOnR5cGU9InVtbDpDbGFzcyIgaHJlZj0icGF0aG1hcDovL1VNTF9NRVRBTU9ERUxTL1VNTC5tZXRhbW9kZWwudW1sI05hbWVkRWxlbWVudCIvPg0KKyAgICAgICAgICAgIDxsb3dlclZhbHVlIHhtaTp0eXBlPSJ1bWw6TGl0ZXJhbFVubGltaXRlZE5hdHVyYWwiIHhtaTppZD0iU3lzTUwtQWxsb2NhdGlvbnMtQWxsb2NhdGUtZ2V0QWxsb2NhdGVkVG8tcmVzdWx0LWxvd2VyVmFsdWUiIG5hbWU9IiIvPg0KKyAgICAgICAgICAgIDx1cHBlclZhbHVlIHhtaTp0eXBlPSJ1bWw6TGl0ZXJhbFVubGltaXRlZE5hdHVyYWwiIHhtaTppZD0iU3lzTUwtQWxsb2NhdGlvbnMtQWxsb2NhdGUtZ2V0QWxsb2NhdGVkVG8tcmVzdWx0LXVwcGVyVmFsdWUiIG5hbWU9IiIgdmFsdWU9IioiLz4NCisgICAgICAgICAgPC9vd25lZFBhcmFtZXRlcj4NCisgICAgICAgICAgPG93bmVkUGFyYW1ldGVyIHhtaTppZD0iU3lzTUwtQWxsb2NhdGlvbnMtQWxsb2NhdGUtZ2V0QWxsb2NhdGVkVG8tcmVmIiBuYW1lPSJyZWYiIHZpc2liaWxpdHk9InB1YmxpYyI+DQorICAgICAgICAgICAgPHR5cGUgeG1pOnR5cGU9InVtbDpDbGFzcyIgaHJlZj0icGF0aG1hcDovL1VNTF9NRVRBTU9ERUxTL1VNTC5tZXRhbW9kZWwudW1sI05hbWVkRWxlbWVudCIvPg0KKyAgICAgICAgICAgIDxsb3dlclZhbHVlIHhtaTp0eXBlPSJ1bWw6TGl0ZXJhbEludGVnZXIiIHhtaTppZD0iU3lzTUwtQWxsb2NhdGlvbnMtQWxsb2NhdGUtZ2V0QWxsb2NhdGVkVG8tcmVmLWxvd2VyVmFsdWUiIG5hbWU9IiIgdmFsdWU9IjEiLz4NCisgICAgICAgICAgICA8dXBwZXJWYWx1ZSB4bWk6dHlwZT0idW1sOkxpdGVyYWxVbmxpbWl0ZWROYXR1cmFsIiB4bWk6aWQ9IlN5c01MLUFsbG9jYXRpb25zLUFsbG9jYXRlLWdldEFsbG9jYXRlZFRvLXJlZi11cHBlclZhbHVlIiBuYW1lPSIiIHZhbHVlPSIxIi8+DQorICAgICAgICAgIDwvb3duZWRQYXJhbWV0ZXI+DQorICAgICAgICA8L293bmVkT3BlcmF0aW9uPg0KKyAgICAgIDwvcGFja2FnZWRFbGVtZW50Pg0KKyAgICA8L3BhY2thZ2VkRWxlbWVudD4NCisgICAgPHBhY2thZ2VkRWxlbWVudCB4bWk6dHlwZT0idW1sOlBhY2thZ2UiIHhtaTppZD0iU3lzTUwtUmVxdWlyZW1lbnRzIiBuYW1lPSJSZXF1aXJlbWVudHMiIFVSST0iIj4NCisgICAgICA8cGFja2FnZWRFbGVtZW50IHhtaTp0eXBlPSJ1bWw6U3RlcmVvdHlwZSIgeG1pOmlkPSJTeXNNTC1SZXF1aXJlbWVudHMtRGVyaXZlUmVxdCIgbmFtZT0iRGVyaXZlUmVxdCI+DQorICAgICAgICA8b3duZWRDb21tZW50IHhtaTppZD0iU3lzTUwtUmVxdWlyZW1lbnRzLURlcml2ZVJlcXQtb3duZWRDb21tZW50IiBhbm5vdGF0ZWRFbGVtZW50PSJTeXNNTC1SZXF1aXJlbWVudHMtRGVyaXZlUmVxdCI+DQorICAgICAgICAgIDxib2R5PkEgRGVyaXZlUmVxdCByZWxhdGlvbnNoaXAgaXMgYSBkZXBlbmRlbmN5IGJldHdlZW4gdHdvIHJlcXVpcmVtZW50cyBpbiB3aGljaCBhIGNsaWVudCByZXF1aXJlbWVudCBjYW4gYmUgZGVyaXZlZCBmcm9tIHRoZSBzdXBwbGllciByZXF1aXJlbWVudC4gQXMgd2l0aCBvdGhlciBkZXBlbmRlbmNpZXMsIHRoZSBhcnJvdyBkaXJlY3Rpb24gcG9pbnRzIGZyb20gdGhlIGRlcml2ZWQgKGNsaWVudCkgcmVxdWlyZW1lbnQgdG8gdGhlIChzdXBwbGllcikgcmVxdWlyZW1lbnQgZnJvbSB3aGljaCBpdCBpcyBkZXJpdmVkLjwvYm9keT4NCisgICAgICAgIDwvb3duZWRDb21tZW50Pg0KKyAgICAgICAgPGdlbmVyYWxpemF0aW9uIHhtaTppZD0iU3lzTUwtUmVxdWlyZW1lbnRzLURlcml2ZVJlcXQtZ2VuZXJhbGl6YXRpb24iIGdlbmVyYWw9IlN5c01MLVJlcXVpcmVtZW50cy1UcmFjZSIgaXNTdWJzdGl0dXRhYmxlPSJmYWxzZSIvPg0KKyAgICAgIDwvcGFja2FnZWRFbGVtZW50Pg0KKyAgICAgIDxwYWNrYWdlZEVsZW1lbnQgeG1pOnR5cGU9InVtbDpTdGVyZW90eXBlIiB4bWk6aWQ9IlN5c01MLVJlcXVpcmVtZW50cy1Db3B5IiBuYW1lPSJDb3B5Ij4NCisgICAgICAgIDxvd25lZENvbW1lbnQgeG1pOmlkPSJTeXNNTC1SZXF1aXJlbWVudHMtQ29weS1vd25lZENvbW1lbnQiIGFubm90YXRlZEVsZW1lbnQ9IlN5c01MLVJlcXVpcmVtZW50cy1Db3B5Ij4NCisgICAgICAgICAgPGJvZHk+QSBDb3B5IHJlbGF0aW9uc2hpcCBpcyBhIGRlcGVuZGVuY3kgYmV0d2VlbiBhIHN1cHBsaWVyIHJlcXVpcmVtZW50IGFuZCBhIGNsaWVudCByZXF1aXJlbWVudCB0aGF0IHNwZWNpZmllcyB0aGF0IHRoZSB0ZXh0IG9mIHRoZSBjbGllbnQgcmVxdWlyZW1lbnQgaXMgYSByZWFkLW9ubHkgY29weSBvZiB0aGUgdGV4dCBvZiB0aGUgc3VwcGxpZXIgcmVxdWlyZW1lbnQuPC9ib2R5Pg0KKyAgICAgICAgPC9vd25lZENvbW1lbnQ+DQorICAgICAgICA8Z2VuZXJhbGl6YXRpb24geG1pOmlkPSJTeXNNTC1SZXF1aXJlbWVudHMtQ29weS1nZW5lcmFsaXphdGlvbiIgZ2VuZXJhbD0iU3lzTUwtUmVxdWlyZW1lbnRzLVRyYWNlIiBpc1N1YnN0aXR1dGFibGU9ImZhbHNlIi8+DQorICAgICAgPC9wYWNrYWdlZEVsZW1lbnQ+DQorICAgICAgPHBhY2thZ2VkRWxlbWVudCB4bWk6dHlwZT0idW1sOlN0ZXJlb3R5cGUiIHhtaTppZD0iU3lzTUwtUmVxdWlyZW1lbnRzLVNhdGlzZnkiIG5hbWU9IlNhdGlzZnkiPg0KKyAgICAgICAgPG93bmVkQ29tbWVudCB4bWk6aWQ9IlN5c01MLVJlcXVpcmVtZW50cy1TYXRpc2Z5LW93bmVkQ29tbWVudCIgYW5ub3RhdGVkRWxlbWVudD0iU3lzTUwtUmVxdWlyZW1lbnRzLVNhdGlzZnkiPg0KKyAgICAgICAgICA8Ym9keT5BIFNhdGlzZnkgcmVsYXRpb25zaGlwIGlzIGEgZGVwZW5kZW5jeSBiZXR3ZWVuIGEgcmVxdWlyZW1lbnQgYW5kIGEgbW9kZWwgZWxlbWVudCB0aGF0IGZ1bGZpbGxzIHRoZSByZXF1aXJlbWVudC4gQXMgd2l0aCBvdGhlciBkZXBlbmRlbmNpZXMsIHRoZSBhcnJvdyBkaXJlY3Rpb24gcG9pbnRzIGZyb20gdGhlIHNhdGlzZnlpbmcgKGNsaWVudCkgbW9kZWwgZWxlbWVudCB0byB0aGUgKHN1cHBsaWVyKSByZXF1aXJlbWVudCB0aGF0IGlzIHNhdGlzZmllZC48L2JvZHk+DQorICAgICAgICA8L293bmVkQ29tbWVudD4NCisgICAgICAgIDxnZW5lcmFsaXphdGlvbiB4bWk6aWQ9IlN5c01MLVJlcXVpcmVtZW50cy1TYXRpc2Z5LWdlbmVyYWxpemF0aW9uIiBnZW5lcmFsPSJTeXNNTC1SZXF1aXJlbWVudHMtVHJhY2UiLz4NCisgICAgICAgIDxvd25lZE9wZXJhdGlvbiB4bWk6aWQ9IlN5c01MLVJlcXVpcmVtZW50cy1TYXRpc2Z5LWdldFNhdGlzZmllcyIgbmFtZT0iZ2V0U2F0aXNmaWVzIiB2aXNpYmlsaXR5PSJwdWJsaWMiIGlzU3RhdGljPSJ0cnVlIiBpc1F1ZXJ5PSJ0cnVlIj4NCisgICAgICAgICAgPG93bmVkUGFyYW1ldGVyIHhtaTppZD0iU3lzTUwtUmVxdWlyZW1lbnRzLVNhdGlzZnktZ2V0U2F0aXNmaWVzLXJlc3VsdCIgbmFtZT0icmVzdWx0IiB2aXNpYmlsaXR5PSJwdWJsaWMiIHR5cGU9IlN5c01MLVJlcXVpcmVtZW50cy1SZXF1aXJlbWVudCIgZGlyZWN0aW9uPSJyZXR1cm4iPg0KKyAgICAgICAgICAgIDxsb3dlclZhbHVlIHhtaTp0eXBlPSJ1bWw6TGl0ZXJhbFVubGltaXRlZE5hdHVyYWwiIHhtaTppZD0iU3lzTUwtUmVxdWlyZW1lbnRzLVNhdGlzZnktZ2V0U2F0aXNmaWVzLXJlc3VsdC1sb3dlclZhbHVlIiBuYW1lPSIiLz4NCisgICAgICAgICAgICA8dXBwZXJWYWx1ZSB4bWk6dHlwZT0idW1sOkxpdGVyYWxVbmxpbWl0ZWROYXR1cmFsIiB4bWk6aWQ9IlN5c01MLVJlcXVpcmVtZW50cy1TYXRpc2Z5LWdldFNhdGlzZmllcy1yZXN1bHQtdXBwZXJWYWx1ZSIgbmFtZT0iIiB2YWx1ZT0iKiIvPg0KKyAgICAgICAgICA8L293bmVkUGFyYW1ldGVyPg0KKyAgICAgICAgICA8b3duZWRQYXJhbWV0ZXIgeG1pOmlkPSJTeXNNTC1SZXF1aXJlbWVudHMtU2F0aXNmeS1nZXRTYXRpc2ZpZXMtcmVmIiBuYW1lPSJyZWYiIHZpc2liaWxpdHk9InB1YmxpYyI+DQorICAgICAgICAgICAgPHR5cGUgeG1pOnR5cGU9InVtbDpDbGFzcyIgaHJlZj0icGF0aG1hcDovL1VNTF9NRVRBTU9ERUxTL1VNTC5tZXRhbW9kZWwudW1sI05hbWVkRWxlbWVudCIvPg0KKyAgICAgICAgICAgIDxsb3dlclZhbHVlIHhtaTp0eXBlPSJ1bWw6TGl0ZXJhbEludGVnZXIiIHhtaTppZD0iU3lzTUwtUmVxdWlyZW1lbnRzLVNhdGlzZnktZ2V0U2F0aXNmaWVzLXJlZi1sb3dlclZhbHVlIiBuYW1lPSIiIHZhbHVlPSIxIi8+DQorICAgICAgICAgICAgPHVwcGVyVmFsdWUgeG1pOnR5cGU9InVtbDpMaXRlcmFsVW5saW1pdGVkTmF0dXJhbCIgeG1pOmlkPSJTeXNNTC1SZXF1aXJlbWVudHMtU2F0aXNmeS1nZXRTYXRpc2ZpZXMtcmVmLXVwcGVyVmFsdWUiIG5hbWU9IiIgdmFsdWU9IjEiLz4NCisgICAgICAgICAgPC9vd25lZFBhcmFtZXRlcj4NCisgICAgICAgIDwvb3duZWRPcGVyYXRpb24+DQorICAgICAgPC9wYWNrYWdlZEVsZW1lbnQ+DQorICAgICAgPHBhY2thZ2VkRWxlbWVudCB4bWk6dHlwZT0idW1sOkV4dGVuc2lvbiIgeG1pOmlkPSJTeXNNTC1SZXF1aXJlbWVudHMtRV9leHRlbnNpb25fVGVzdENhc2VfYmFzZV9PcGVyYXRpb24iIG5hbWU9IkVfZXh0ZW5zaW9uX1Rlc3RDYXNlX2Jhc2VfT3BlcmF0aW9uIiBtZW1iZXJFbmQ9IlN5c01MLVJlcXVpcmVtZW50cy1FX2V4dGVuc2lvbl9UZXN0Q2FzZV9iYXNlX09wZXJhdGlvbi1leHRlbnNpb25fVGVzdENhc2UgU3lzTUwtUmVxdWlyZW1lbnRzLVRlc3RDYXNlLWJhc2VfT3BlcmF0aW9uIiBuYXZpZ2FibGVPd25lZEVuZD0iU3lzTUwtUmVxdWlyZW1lbnRzLUVfZXh0ZW5zaW9uX1Rlc3RDYXNlX2Jhc2VfT3BlcmF0aW9uLWV4dGVuc2lvbl9UZXN0Q2FzZSI+DQorICAgICAgICA8b3duZWRFbmQgeG1pOnR5cGU9InVtbDpFeHRlbnNpb25FbmQiIHhtaTppZD0iU3lzTUwtUmVxdWlyZW1lbnRzLUVfZXh0ZW5zaW9uX1Rlc3RDYXNlX2Jhc2VfT3BlcmF0aW9uLWV4dGVuc2lvbl9UZXN0Q2FzZSIgbmFtZT0iZXh0ZW5zaW9uX1Rlc3RDYXNlIiB2aXNpYmlsaXR5PSJwdWJsaWMiIHR5cGU9IlN5c01MLVJlcXVpcmVtZW50cy1UZXN0Q2FzZSIgYWdncmVnYXRpb249ImNvbXBvc2l0ZSIgYXNzb2NpYXRpb249IlN5c01MLVJlcXVpcmVtZW50cy1FX2V4dGVuc2lvbl9UZXN0Q2FzZV9iYXNlX09wZXJhdGlvbiI+DQorICAgICAgICAgIDxsb3dlclZhbHVlIHhtaTp0eXBlPSJ1bWw6TGl0ZXJhbEludGVnZXIiIHhtaTppZD0iU3lzTUwtUmVxdWlyZW1lbnRzLUVfZXh0ZW5zaW9uX1Rlc3RDYXNlX2Jhc2VfT3BlcmF0aW9uLWV4dGVuc2lvbl9UZXN0Q2FzZS1sb3dlclZhbHVlIiBuYW1lPSIiLz4NCisgICAgICAgICAgPHVwcGVyVmFsdWUgeG1pOnR5cGU9InVtbDpMaXRlcmFsSW50ZWdlciIgeG1pOmlkPSJTeXNNTC1SZXF1aXJlbWVudHMtRV9leHRlbnNpb25fVGVzdENhc2VfYmFzZV9PcGVyYXRpb24tZXh0ZW5zaW9uX1Rlc3RDYXNlLXVwcGVyVmFsdWUiIG5hbWU9IiIgdmFsdWU9IjEiLz4NCisgICAgICAgIDwvb3duZWRFbmQ+DQorICAgICAgPC9wYWNrYWdlZEVsZW1lbnQ+DQorICAgICAgPHBhY2thZ2VkRWxlbWVudCB4bWk6dHlwZT0idW1sOlN0ZXJlb3R5cGUiIHhtaTppZD0iU3lzTUwtUmVxdWlyZW1lbnRzLVRlc3RDYXNlIiBuYW1lPSJUZXN0Q2FzZSI+DQorICAgICAgICA8b3duZWRDb21tZW50IHhtaTppZD0iU3lzTUwtUmVxdWlyZW1lbnRzLVRlc3RDYXNlLW93bmVkQ29tbWVudCIgYW5ub3RhdGVkRWxlbWVudD0iU3lzTUwtUmVxdWlyZW1lbnRzLVRlc3RDYXNlIj4NCisgICAgICAgICAgPGJvZHk+QSB0ZXN0IGNhc2UgaXMgYSBtZXRob2QgZm9yIHZlcmlmeWluZyBhIHJlcXVpcmVtZW50IGlzIHNhdGlzZmllZC48L2JvZHk+DQorICAgICAgICA8L293bmVkQ29tbWVudD4NCisgICAgICAgIDxvd25lZEF0dHJpYnV0ZSB4bWk6aWQ9IlN5c01MLVJlcXVpcmVtZW50cy1UZXN0Q2FzZS1iYXNlX09wZXJhdGlvbiIgbmFtZT0iYmFzZV9PcGVyYXRpb24iIHZpc2liaWxpdHk9InB1YmxpYyIgYXNzb2NpYXRpb249IlN5c01MLVJlcXVpcmVtZW50cy1FX2V4dGVuc2lvbl9UZXN0Q2FzZV9iYXNlX09wZXJhdGlvbiI+DQorICAgICAgICAgIDx0eXBlIHhtaTp0eXBlPSJ1bWw6Q2xhc3MiIGhyZWY9InBhdGhtYXA6Ly9VTUxfTUVUQU1PREVMUy9VTUwubWV0YW1vZGVsLnVtbCNPcGVyYXRpb24iLz4NCisgICAgICAgICAgPGxvd2VyVmFsdWUgeG1pOnR5cGU9InVtbDpMaXRlcmFsSW50ZWdlciIgeG1pOmlkPSJTeXNNTC1SZXF1aXJlbWVudHMtVGVzdENhc2UtYmFzZV9PcGVyYXRpb24tbG93ZXJWYWx1ZSIgbmFtZT0iIi8+DQorICAgICAgICAgIDx1cHBlclZhbHVlIHhtaTp0eXBlPSJ1bWw6TGl0ZXJhbFVubGltaXRlZE5hdHVyYWwiIHhtaTppZD0iU3lzTUwtUmVxdWlyZW1lbnRzLVRlc3RDYXNlLWJhc2VfT3BlcmF0aW9uLXVwcGVyVmFsdWUiIG5hbWU9IiIgdmFsdWU9IjEiLz4NCisgICAgICAgIDwvb3duZWRBdHRyaWJ1dGU+DQorICAgICAgICA8b3duZWRBdHRyaWJ1dGUgeG1pOmlkPSJTeXNNTC1SZXF1aXJlbWVudHMtVGVzdENhc2UtYmFzZV9CZWhhdmlvciIgbmFtZT0iYmFzZV9CZWhhdmlvciIgdmlzaWJpbGl0eT0icHVibGljIiBhc3NvY2lhdGlvbj0iU3lzTUwtUmVxdWlyZW1lbnRzLUVfZXh0ZW5zaW9uX1Rlc3RDYXNlX2Jhc2VfQmVoYXZpb3IiPg0KKyAgICAgICAgICA8dHlwZSB4bWk6dHlwZT0idW1sOkNsYXNzIiBocmVmPSJwYXRobWFwOi8vVU1MX01FVEFNT0RFTFMvVU1MLm1ldGFtb2RlbC51bWwjQmVoYXZpb3IiLz4NCisgICAgICAgICAgPGxvd2VyVmFsdWUgeG1pOnR5cGU9InVtbDpMaXRlcmFsSW50ZWdlciIgeG1pOmlkPSJTeXNNTC1SZXF1aXJlbWVudHMtVGVzdENhc2UtYmFzZV9CZWhhdmlvci1sb3dlclZhbHVlIiBuYW1lPSIiLz4NCisgICAgICAgICAgPHVwcGVyVmFsdWUgeG1pOnR5cGU9InVtbDpMaXRlcmFsVW5saW1pdGVkTmF0dXJhbCIgeG1pOmlkPSJTeXNNTC1SZXF1aXJlbWVudHMtVGVzdENhc2UtYmFzZV9CZWhhdmlvci11cHBlclZhbHVlIiBuYW1lPSIiIHZhbHVlPSIxIi8+DQorICAgICAgICA8L293bmVkQXR0cmlidXRlPg0KKyAgICAgIDwvcGFja2FnZWRFbGVtZW50Pg0KKyAgICAgIDxwYWNrYWdlZEVsZW1lbnQgeG1pOnR5cGU9InVtbDpTdGVyZW90eXBlIiB4bWk6aWQ9IlN5c01MLVJlcXVpcmVtZW50cy1SZXF1aXJlbWVudCIgbmFtZT0iUmVxdWlyZW1lbnQiPg0KKyAgICAgICAgPG93bmVkQ29tbWVudCB4bWk6aWQ9IlN5c01MLVJlcXVpcmVtZW50cy1SZXF1aXJlbWVudC1vd25lZENvbW1lbnQiIGFubm90YXRlZEVsZW1lbnQ9IlN5c01MLVJlcXVpcmVtZW50cy1SZXF1aXJlbWVudCI+DQorICAgICAgICAgIDxib2R5PkEgcmVxdWlyZW1lbnQgc3BlY2lmaWVzIGEgY2FwYWJpbGl0eSBvciBjb25kaXRpb24gdGhhdCBtdXN0IChvciBzaG91bGQpIGJlIHNhdGlzZmllZC4gQSByZXF1aXJlbWVudCBtYXkgc3BlY2lmeSBhIGZ1bmN0aW9uIHRoYXQgYSBzeXN0ZW0gbXVzdCBwZXJmb3JtIG9yIGEgcGVyZm9ybWFuY2UgY29uZGl0aW9uIHRoYXQgYSBzeXN0ZW0gbXVzdCBzYXRpc2Z5LiBSZXF1aXJlbWVudHMgYXJlIHVzZWQgdG8gZXN0YWJsaXNoIGEgY29udHJhY3QgYmV0d2VlbiB0aGUgY3VzdG9tZXIgKG9yIG90aGVyIHN0YWtlaG9sZGVyKSBhbmQgdGhvc2UgcmVzcG9uc2libGUgZm9yIGRlc2lnbmluZyBhbmQgaW1wbGVtZW50aW5nIHRoZSBzeXN0ZW0uPC9ib2R5Pg0KKyAgICAgICAgPC9vd25lZENvbW1lbnQ+DQorICAgICAgICA8b3duZWRBdHRyaWJ1dGUgeG1pOmlkPSJTeXNNTC1SZXF1aXJlbWVudHMtUmVxdWlyZW1lbnQtYmFzZV9DbGFzcyIgbmFtZT0iYmFzZV9DbGFzcyIgdmlzaWJpbGl0eT0icHVibGljIiBhc3NvY2lhdGlvbj0iU3lzTUwtUmVxdWlyZW1lbnRzLUVfZXh0ZW5zaW9uX1JlcXVpcmVtZW50X2Jhc2VfQ2xhc3MiPg0KKyAgICAgICAgICA8dHlwZSB4bWk6dHlwZT0idW1sOkNsYXNzIiBocmVmPSJwYXRobWFwOi8vVU1MX01FVEFNT0RFTFMvVU1MLm1ldGFtb2RlbC51bWwjQ2xhc3MiLz4NCisgICAgICAgICAgPGxvd2VyVmFsdWUgeG1pOnR5cGU9InVtbDpMaXRlcmFsSW50ZWdlciIgeG1pOmlkPSJTeXNNTC1SZXF1aXJlbWVudHMtUmVxdWlyZW1lbnQtYmFzZV9DbGFzcy1sb3dlclZhbHVlIiBuYW1lPSIiLz4NCisgICAgICAgICAgPHVwcGVyVmFsdWUgeG1pOnR5cGU9InVtbDpMaXRlcmFsVW5saW1pdGVkTmF0dXJhbCIgeG1pOmlkPSJTeXNNTC1SZXF1aXJlbWVudHMtUmVxdWlyZW1lbnQtYmFzZV9DbGFzcy11cHBlclZhbHVlIiBuYW1lPSIiIHZhbHVlPSIxIi8+DQorICAgICAgICA8L293bmVkQXR0cmlidXRlPg0KKyAgICAgICAgPG93bmVkQXR0cmlidXRlIHhtaTppZD0iU3lzTUwtUmVxdWlyZW1lbnRzLVJlcXVpcmVtZW50LVRleHQiIG5hbWU9InRleHQiIHZpc2liaWxpdHk9InB1YmxpYyI+DQorICAgICAgICAgIDxvd25lZENvbW1lbnQgeG1pOmlkPSJTeXNNTC1SZXF1aXJlbWVudHMtUmVxdWlyZW1lbnQtVGV4dC1vd25lZENvbW1lbnQiIGFubm90YXRlZEVsZW1lbnQ9IlN5c01MLVJlcXVpcmVtZW50cy1SZXF1aXJlbWVudC1UZXh0Ij4NCisgICAgICAgICAgICA8Ym9keT5UaGUgdGV4dHVhbCByZXByZXNlbnRhdGlvbiBvciBhIHJlZmVyZW5jZSB0byB0aGUgdGV4dHVhbCByZXByZXNlbnRhdGlvbiBvZiB0aGUgcmVxdWlyZW1lbnQuPC9ib2R5Pg0KKyAgICAgICAgICA8L293bmVkQ29tbWVudD4NCisgICAgICAgICAgPHR5cGUgeG1pOnR5cGU9InVtbDpQcmltaXRpdmVUeXBlIiBocmVmPSJwYXRobWFwOi8vVU1MX0xJQlJBUklFUy9VTUxQcmltaXRpdmVUeXBlcy5saWJyYXJ5LnVtbCNTdHJpbmciLz4NCisgICAgICAgICAgPGxvd2VyVmFsdWUgeG1pOnR5cGU9InVtbDpMaXRlcmFsSW50ZWdlciIgeG1pOmlkPSJTeXNNTC1SZXF1aXJlbWVudHMtUmVxdWlyZW1lbnQtVGV4dC1sb3dlclZhbHVlIiBuYW1lPSIiIHZhbHVlPSIxIi8+DQorICAgICAgICAgIDx1cHBlclZhbHVlIHhtaTp0eXBlPSJ1bWw6TGl0ZXJhbFVubGltaXRlZE5hdHVyYWwiIHhtaTppZD0iU3lzTUwtUmVxdWlyZW1lbnRzLVJlcXVpcmVtZW50LVRleHQtdXBwZXJWYWx1ZSIgbmFtZT0iIiB2YWx1ZT0iMSIvPg0KKyAgICAgICAgICA8ZGVmYXVsdFZhbHVlIHhtaTp0eXBlPSJ1bWw6TGl0ZXJhbFN0cmluZyIgeG1pOmlkPSJTeXNNTC1SZXF1aXJlbWVudHMtUmVxdWlyZW1lbnQtVGV4dC1kZWZhdWx0VmFsdWUiIG5hbWU9IiIgdmFsdWU9IiIvPg0KKyAgICAgICAgPC9vd25lZEF0dHJpYnV0ZT4NCisgICAgICAgIDxvd25lZEF0dHJpYnV0ZSB4bWk6aWQ9IlN5c01MLVJlcXVpcmVtZW50cy1SZXF1aXJlbWVudC1JZCIgbmFtZT0iaWQiIHZpc2liaWxpdHk9InB1YmxpYyI+DQorICAgICAgICAgIDxvd25lZENvbW1lbnQgeG1pOmlkPSJTeXNNTC1SZXF1aXJlbWVudHMtUmVxdWlyZW1lbnQtSWQtb3duZWRDb21tZW50IiBhbm5vdGF0ZWRFbGVtZW50PSJTeXNNTC1SZXF1aXJlbWVudHMtUmVxdWlyZW1lbnQtSWQiPg0KKyAgICAgICAgICAgIDxib2R5PlRoZSB1bmlxdWUgaWQgb2YgdGhlIHJlcXVpcmVtZW50LjwvYm9keT4NCisgICAgICAgICAgPC9vd25lZENvbW1lbnQ+DQorICAgICAgICAgIDx0eXBlIHhtaTp0eXBlPSJ1bWw6UHJpbWl0aXZlVHlwZSIgaHJlZj0icGF0aG1hcDovL1VNTF9MSUJSQVJJRVMvVU1MUHJpbWl0aXZlVHlwZXMubGlicmFyeS51bWwjU3RyaW5nIi8+DQorICAgICAgICAgIDxsb3dlclZhbHVlIHhtaTp0eXBlPSJ1bWw6TGl0ZXJhbEludGVnZXIiIHhtaTppZD0iU3lzTUwtUmVxdWlyZW1lbnRzLVJlcXVpcmVtZW50LUlkLWxvd2VyVmFsdWUiIG5hbWU9IiIgdmFsdWU9IjEiLz4NCisgICAgICAgICAgPHVwcGVyVmFsdWUgeG1pOnR5cGU9InVtbDpMaXRlcmFsVW5saW1pdGVkTmF0dXJhbCIgeG1pOmlkPSJTeXNNTC1SZXF1aXJlbWVudHMtUmVxdWlyZW1lbnQtSWQtdXBwZXJWYWx1ZSIgbmFtZT0iIiB2YWx1ZT0iMSIvPg0KKyAgICAgICAgICA8ZGVmYXVsdFZhbHVlIHhtaTp0eXBlPSJ1bWw6TGl0ZXJhbFN0cmluZyIgeG1pOmlkPSJTeXNNTC1SZXF1aXJlbWVudHMtUmVxdWlyZW1lbnQtSWQtZGVmYXVsdFZhbHVlIiBuYW1lPSIiIHZhbHVlPSIiLz4NCisgICAgICAgIDwvb3duZWRBdHRyaWJ1dGU+DQorICAgICAgICA8b3duZWRBdHRyaWJ1dGUgeG1pOmlkPSJTeXNNTC1SZXF1aXJlbWVudHMtUmVxdWlyZW1lbnQtRGVyaXZlZCIgbmFtZT0iZGVyaXZlZCIgdmlzaWJpbGl0eT0icHVibGljIiB0eXBlPSJTeXNNTC1SZXF1aXJlbWVudHMtUmVxdWlyZW1lbnQiIGlzRGVyaXZlZD0idHJ1ZSI+DQorICAgICAgICAgIDxvd25lZENvbW1lbnQgeG1pOmlkPSJTeXNNTC1SZXF1aXJlbWVudHMtUmVxdWlyZW1lbnQtRGVyaXZlZC1vd25lZENvbW1lbnQiIGFubm90YXRlZEVsZW1lbnQ9IlN5c01MLVJlcXVpcmVtZW50cy1SZXF1aXJlbWVudC1EZXJpdmVkIj4NCisgICAgICAgICAgICA8Ym9keT5EZXJpdmVkIGZyb20gYWxsIHJlcXVpcmVtZW50cyB0aGF0IGFyZSB0aGUgY2xpZW50IG9mIGEgwqtkZXJpdmVSZXF0wrsgcmVsYXRpb25zaGlwIGZvciB3aGljaCB0aGlzIHJlcXVpcmVtZW50IGlzIGEgc3VwcGxpZXIuPC9ib2R5Pg0KKyAgICAgICAgICA8L293bmVkQ29tbWVudD4NCisgICAgICAgICAgPGxvd2VyVmFsdWUgeG1pOnR5cGU9InVtbDpMaXRlcmFsSW50ZWdlciIgeG1pOmlkPSJfS1VjMW9Kby1FZVNGdExvVmUyLXNvUSIvPg0KKyAgICAgICAgICA8dXBwZXJWYWx1ZSB4bWk6dHlwZT0idW1sOkxpdGVyYWxVbmxpbWl0ZWROYXR1cmFsIiB4bWk6aWQ9IlN5c01MLVJlcXVpcmVtZW50cy1SZXF1aXJlbWVudC1EZXJpdmVkLXVwcGVyVmFsdWUiIG5hbWU9IiIgdmFsdWU9IioiLz4NCisgICAgICAgIDwvb3duZWRBdHRyaWJ1dGU+DQorICAgICAgICA8b3duZWRBdHRyaWJ1dGUgeG1pOmlkPSJTeXNNTC1SZXF1aXJlbWVudHMtUmVxdWlyZW1lbnQtRGVyaXZlZEZyb20iIG5hbWU9ImRlcml2ZWRGcm9tIiB2aXNpYmlsaXR5PSJwdWJsaWMiIHR5cGU9IlN5c01MLVJlcXVpcmVtZW50cy1SZXF1aXJlbWVudCIgaXNEZXJpdmVkPSJ0cnVlIj4NCisgICAgICAgICAgPG93bmVkQ29tbWVudCB4bWk6aWQ9IlN5c01MLVJlcXVpcmVtZW50cy1SZXF1aXJlbWVudC1EZXJpdmVkRnJvbS1vd25lZENvbW1lbnQiIGFubm90YXRlZEVsZW1lbnQ9IlN5c01MLVJlcXVpcmVtZW50cy1SZXF1aXJlbWVudC1EZXJpdmVkRnJvbSI+DQorICAgICAgICAgICAgPGJvZHk+RGVyaXZlZCBmcm9tIGFsbCByZXF1aXJlbWVudHMgdGhhdCBhcmUgdGhlIHN1cHBsaWVyIG9mIGEgwqtkZXJpdmVSZXF0wrsgcmVsYXRpb25zaGlwIGZvciB3aGljaCB0aGlzIHJlcXVpcmVtZW50IGlzIGEgY2xpZW50LjwvYm9keT4NCisgICAgICAgICAgPC9vd25lZENvbW1lbnQ+DQorICAgICAgICAgIDxsb3dlclZhbHVlIHhtaTp0eXBlPSJ1bWw6TGl0ZXJhbEludGVnZXIiIHhtaTppZD0iX0s4TUxFSm8tRWVTRnRMb1ZlMi1zb1EiLz4NCisgICAgICAgICAgPHVwcGVyVmFsdWUgeG1pOnR5cGU9InVtbDpMaXRlcmFsVW5saW1pdGVkTmF0dXJhbCIgeG1pOmlkPSJTeXNNTC1SZXF1aXJlbWVudHMtUmVxdWlyZW1lbnQtRGVyaXZlZEZyb20tdXBwZXJWYWx1ZSIgbmFtZT0iIiB2YWx1ZT0iKiIvPg0KKyAgICAgICAgPC9vd25lZEF0dHJpYnV0ZT4NCisgICAgICAgIDxvd25lZEF0dHJpYnV0ZSB4bWk6aWQ9IlN5c01MLVJlcXVpcmVtZW50cy1SZXF1aXJlbWVudC1TYXRpc2ZpZWRCeSIgbmFtZT0ic2F0aXNmaWVkQnkiIHZpc2liaWxpdHk9InB1YmxpYyIgaXNEZXJpdmVkPSJ0cnVlIj4NCisgICAgICAgICAgPG93bmVkQ29tbWVudCB4bWk6aWQ9IlN5c01MLVJlcXVpcmVtZW50cy1SZXF1aXJlbWVudC1TYXRpc2ZpZWRCeS1vd25lZENvbW1lbnQiIGFubm90YXRlZEVsZW1lbnQ9IlN5c01MLVJlcXVpcmVtZW50cy1SZXF1aXJlbWVudC1TYXRpc2ZpZWRCeSI+DQorICAgICAgICAgICAgPGJvZHk+RGVyaXZlZCBmcm9tIGFsbCBlbGVtZW50cyB0aGF0IGFyZSB0aGUgY2xpZW50IG9mIGEgwqtzYXRpc2Z5wrsgcmVsYXRpb25zaGlwIGZvciB3aGljaCB0aGlzIHJlcXVpcmVtZW50IGlzIGEgc3VwcGxpZXIuPC9ib2R5Pg0KKyAgICAgICAgICA8L293bmVkQ29tbWVudD4NCisgICAgICAgICAgPHR5cGUgeG1pOnR5cGU9InVtbDpDbGFzcyIgaHJlZj0icGF0aG1hcDovL1VNTF9NRVRBTU9ERUxTL1VNTC5tZXRhbW9kZWwudW1sI05hbWVkRWxlbWVudCIvPg0KKyAgICAgICAgICA8bG93ZXJWYWx1ZSB4bWk6dHlwZT0idW1sOkxpdGVyYWxJbnRlZ2VyIiB4bWk6aWQ9Il9NU3pZc0pvLUVlU0Z0TG9WZTItc29RIi8+DQorICAgICAgICAgIDx1cHBlclZhbHVlIHhtaTp0eXBlPSJ1bWw6TGl0ZXJhbFVubGltaXRlZE5hdHVyYWwiIHhtaTppZD0iU3lzTUwtUmVxdWlyZW1lbnRzLVJlcXVpcmVtZW50LVNhdGlzZmllZEJ5LXVwcGVyVmFsdWUiIG5hbWU9IiIgdmFsdWU9IioiLz4NCisgICAgICAgIDwvb3duZWRBdHRyaWJ1dGU+DQorICAgICAgICA8b3duZWRBdHRyaWJ1dGUgeG1pOmlkPSJTeXNNTC1SZXF1aXJlbWVudHMtUmVxdWlyZW1lbnQtUmVmaW5lZEJ5IiBuYW1lPSJyZWZpbmVkQnkiIHZpc2liaWxpdHk9InB1YmxpYyIgaXNEZXJpdmVkPSJ0cnVlIj4NCisgICAgICAgICAgPG93bmVkQ29tbWVudCB4bWk6aWQ9IlN5c01MLVJlcXVpcmVtZW50cy1SZXF1aXJlbWVudC1SZWZpbmVkQnktb3duZWRDb21tZW50IiBhbm5vdGF0ZWRFbGVtZW50PSJTeXNNTC1SZXF1aXJlbWVudHMtUmVxdWlyZW1lbnQtUmVmaW5lZEJ5Ij4NCisgICAgICAgICAgICA8Ym9keT5EZXJpdmVkIGZyb20gYWxsIGVsZW1lbnRzIHRoYXQgYXJlIHRoZSBjbGllbnQgb2YgYSDCq3JlZmluZcK7IHJlbGF0aW9uc2hpcCBmb3Igd2hpY2ggdGhpcyByZXF1aXJlbWVudCBpcyBhIHN1cHBsaWVyLjwvYm9keT4NCisgICAgICAgICAgPC9vd25lZENvbW1lbnQ+DQorICAgICAgICAgIDx0eXBlIHhtaTp0eXBlPSJ1bWw6Q2xhc3MiIGhyZWY9InBhdGhtYXA6Ly9VTUxfTUVUQU1PREVMUy9VTUwubWV0YW1vZGVsLnVtbCNOYW1lZEVsZW1lbnQiLz4NCisgICAgICAgICAgPGxvd2VyVmFsdWUgeG1pOnR5cGU9InVtbDpMaXRlcmFsSW50ZWdlciIgeG1pOmlkPSJfTG8yY3dKby1FZVNGdExvVmUyLXNvUSIvPg0KKyAgICAgICAgICA8dXBwZXJWYWx1ZSB4bWk6dHlwZT0idW1sOkxpdGVyYWxVbmxpbWl0ZWROYXR1cmFsIiB4bWk6aWQ9IlN5c01MLVJlcXVpcmVtZW50cy1SZXF1aXJlbWVudC1SZWZpbmVkQnktdXBwZXJWYWx1ZSIgbmFtZT0iIiB2YWx1ZT0iKiIvPg0KKyAgICAgICAgPC9vd25lZEF0dHJpYnV0ZT4NCisgICAgICAgIDxvd25lZEF0dHJpYnV0ZSB4bWk6aWQ9IlN5c01MLVJlcXVpcmVtZW50cy1SZXF1aXJlbWVudC1UcmFjZWRUbyIgbmFtZT0idHJhY2VkVG8iIHZpc2liaWxpdHk9InB1YmxpYyIgaXNEZXJpdmVkPSJ0cnVlIj4NCisgICAgICAgICAgPG93bmVkQ29tbWVudCB4bWk6aWQ9IlN5c01MLVJlcXVpcmVtZW50cy1SZXF1aXJlbWVudC1UcmFjZWRUby1vd25lZENvbW1lbnQiIGFubm90YXRlZEVsZW1lbnQ9IlN5c01MLVJlcXVpcmVtZW50cy1SZXF1aXJlbWVudC1UcmFjZWRUbyI+DQorICAgICAgICAgICAgPGJvZHk+RGVyaXZlZCBmcm9tIGFsbCBlbGVtZW50cyB0aGF0IGFyZSB0aGUgY2xpZW50IG9mIGEgwqt0cmFjZcK7IHJlbGF0aW9uc2hpcCBmb3Igd2hpY2ggdGhpcyByZXF1aXJlbWVudCBpcyBhIHN1cHBsaWVyLjwvYm9keT4NCisgICAgICAgICAgPC9vd25lZENvbW1lbnQ+DQorICAgICAgICAgIDx0eXBlIHhtaTp0eXBlPSJ1bWw6Q2xhc3MiIGhyZWY9InBhdGhtYXA6Ly9VTUxfTUVUQU1PREVMUy9VTUwubWV0YW1vZGVsLnVtbCNOYW1lZEVsZW1lbnQiLz4NCisgICAgICAgICAgPGxvd2VyVmFsdWUgeG1pOnR5cGU9InVtbDpMaXRlcmFsSW50ZWdlciIgeG1pOmlkPSJfTkVObmdKby1FZVNGdExvVmUyLXNvUSIvPg0KKyAgICAgICAgICA8dXBwZXJWYWx1ZSB4bWk6dHlwZT0idW1sOkxpdGVyYWxVbmxpbWl0ZWROYXR1cmFsIiB4bWk6aWQ9IlN5c01MLVJlcXVpcmVtZW50cy1SZXF1aXJlbWVudC1UcmFjZWRUby11cHBlclZhbHVlIiBuYW1lPSIiIHZhbHVlPSIqIi8+DQorICAgICAgICA8L293bmVkQXR0cmlidXRlPg0KKyAgICAgICAgPG93bmVkQXR0cmlidXRlIHhtaTppZD0iU3lzTUwtUmVxdWlyZW1lbnRzLVJlcXVpcmVtZW50LVZlcmlmaWVkQnkiIG5hbWU9InZlcmlmaWVkQnkiIHZpc2liaWxpdHk9InB1YmxpYyIgaXNEZXJpdmVkPSJ0cnVlIj4NCisgICAgICAgICAgPG93bmVkQ29tbWVudCB4bWk6aWQ9IlN5c01MLVJlcXVpcmVtZW50cy1SZXF1aXJlbWVudC1WZXJpZmllZEJ5LW93bmVkQ29tbWVudCIgYW5ub3RhdGVkRWxlbWVudD0iU3lzTUwtUmVxdWlyZW1lbnRzLVJlcXVpcmVtZW50LVZlcmlmaWVkQnkiPg0KKyAgICAgICAgICAgIDxib2R5PkRlcml2ZWQgZnJvbSBhbGwgZWxlbWVudHMgdGhhdCBhcmUgdGhlIGNsaWVudCBvZiBhIMKrdmVyaWZ5wrsgcmVsYXRpb25zaGlwIGZvciB3aGljaCB0aGlzIHJlcXVpcmVtZW50IGlzIGEgc3VwcGxpZXIuPC9ib2R5Pg0KKyAgICAgICAgICA8L293bmVkQ29tbWVudD4NCisgICAgICAgICAgPHR5cGUgeG1pOnR5cGU9InVtbDpDbGFzcyIgaHJlZj0icGF0aG1hcDovL1VNTF9NRVRBTU9ERUxTL1VNTC5tZXRhbW9kZWwudW1sI05hbWVkRWxlbWVudCIvPg0KKyAgICAgICAgICA8bG93ZXJWYWx1ZSB4bWk6dHlwZT0idW1sOkxpdGVyYWxJbnRlZ2VyIiB4bWk6aWQ9IlN5c01MLVJlcXVpcmVtZW50cy1SZXF1aXJlbWVudC1WZXJpZmllZEJ5LWxvd2VyVmFsdWUiIG5hbWU9IiIvPg0KKyAgICAgICAgICA8dXBwZXJWYWx1ZSB4bWk6dHlwZT0idW1sOkxpdGVyYWxVbmxpbWl0ZWROYXR1cmFsIiB4bWk6aWQ9IlN5c01MLVJlcXVpcmVtZW50cy1SZXF1aXJlbWVudC1WZXJpZmllZEJ5LXVwcGVyVmFsdWUiIG5hbWU9IiIgdmFsdWU9IioiLz4NCisgICAgICAgIDwvb3duZWRBdHRyaWJ1dGU+DQorICAgICAgICA8b3duZWRBdHRyaWJ1dGUgeG1pOmlkPSJTeXNNTC1SZXF1aXJlbWVudHMtUmVxdWlyZW1lbnQtTWFzdGVyIiBuYW1lPSJtYXN0ZXIiIHZpc2liaWxpdHk9InB1YmxpYyIgdHlwZT0iU3lzTUwtUmVxdWlyZW1lbnRzLVJlcXVpcmVtZW50IiBpc0Rlcml2ZWQ9InRydWUiPg0KKyAgICAgICAgICA8b3duZWRDb21tZW50IHhtaTppZD0iU3lzTUwtUmVxdWlyZW1lbnRzLVJlcXVpcmVtZW50LU1hc3Rlci1vd25lZENvbW1lbnQiIGFubm90YXRlZEVsZW1lbnQ9IlN5c01MLVJlcXVpcmVtZW50cy1SZXF1aXJlbWVudC1NYXN0ZXIiPg0KKyAgICAgICAgICAgIDxib2R5PlRoaXMgaXMgYSBkZXJpdmVkIHByb3BlcnR5IHRoYXQgbGlzdHMgdGhlIG1hc3RlciByZXF1aXJlbWVudCBmb3IgdGhpcyBzbGF2ZSByZXF1aXJlbWVudC4gVGhlIG1hc3RlciBhdHRyaWJ1dGUgaXMgZGVyaXZlZCBmcm9tIHRoZSBzdXBwbGllciBvZiB0aGUgQ29weSBkZXBlbmRlbmN5IHRoYXQgaGFzIHRoaXMgcmVxdWlyZW1lbnQgYXMgdGhlIHNsYXZlLjwvYm9keT4NCisgICAgICAgICAgPC9vd25lZENvbW1lbnQ+DQorICAgICAgICAgIDxsb3dlclZhbHVlIHhtaTp0eXBlPSJ1bWw6TGl0ZXJhbEludGVnZXIiIHhtaTppZD0iX1BVU3p3Sm8tRWVTRnRMb1ZlMi1zb1EiLz4NCisgICAgICAgICAgPHVwcGVyVmFsdWUgeG1pOnR5cGU9InVtbDpMaXRlcmFsVW5saW1pdGVkTmF0dXJhbCIgeG1pOmlkPSJfUFVTendaby1FZVNGdExvVmUyLXNvUSIgdmFsdWU9IjEiLz4NCisgICAgICAgIDwvb3duZWRBdHRyaWJ1dGU+DQorICAgICAgPC9wYWNrYWdlZEVsZW1lbnQ+DQorICAgICAgPHBhY2thZ2VkRWxlbWVudCB4bWk6dHlwZT0idW1sOkV4dGVuc2lvbiIgeG1pOmlkPSJTeXNNTC1SZXF1aXJlbWVudHMtRV9leHRlbnNpb25fUmVxdWlyZW1lbnRfYmFzZV9DbGFzcyIgbmFtZT0iRV9leHRlbnNpb25fUmVxdWlyZW1lbnRfYmFzZV9DbGFzcyIgbWVtYmVyRW5kPSJTeXNNTC1SZXF1aXJlbWVudHMtRV9leHRlbnNpb25fUmVxdWlyZW1lbnRfYmFzZV9DbGFzcy1leHRlbnNpb25fUmVxdWlyZW1lbnQgU3lzTUwtUmVxdWlyZW1lbnRzLVJlcXVpcmVtZW50LWJhc2VfQ2xhc3MiIG5hdmlnYWJsZU93bmVkRW5kPSJTeXNNTC1SZXF1aXJlbWVudHMtRV9leHRlbnNpb25fUmVxdWlyZW1lbnRfYmFzZV9DbGFzcy1leHRlbnNpb25fUmVxdWlyZW1lbnQiPg0KKyAgICAgICAgPG93bmVkRW5kIHhtaTp0eXBlPSJ1bWw6RXh0ZW5zaW9uRW5kIiB4bWk6aWQ9IlN5c01MLVJlcXVpcmVtZW50cy1FX2V4dGVuc2lvbl9SZXF1aXJlbWVudF9iYXNlX0NsYXNzLWV4dGVuc2lvbl9SZXF1aXJlbWVudCIgbmFtZT0iZXh0ZW5zaW9uX1JlcXVpcmVtZW50IiB2aXNpYmlsaXR5PSJwdWJsaWMiIHR5cGU9IlN5c01MLVJlcXVpcmVtZW50cy1SZXF1aXJlbWVudCIgYWdncmVnYXRpb249ImNvbXBvc2l0ZSIgYXNzb2NpYXRpb249IlN5c01MLVJlcXVpcmVtZW50cy1FX2V4dGVuc2lvbl9SZXF1aXJlbWVudF9iYXNlX0NsYXNzIj4NCisgICAgICAgICAgPGxvd2VyVmFsdWUgeG1pOnR5cGU9InVtbDpMaXRlcmFsSW50ZWdlciIgeG1pOmlkPSJTeXNNTC1SZXF1aXJlbWVudHMtRV9leHRlbnNpb25fUmVxdWlyZW1lbnRfYmFzZV9DbGFzcy1leHRlbnNpb25fUmVxdWlyZW1lbnQtbG93ZXJWYWx1ZSIgbmFtZT0iIi8+DQorICAgICAgICAgIDx1cHBlclZhbHVlIHhtaTp0eXBlPSJ1bWw6TGl0ZXJhbEludGVnZXIiIHhtaTppZD0iU3lzTUwtUmVxdWlyZW1lbnRzLUVfZXh0ZW5zaW9uX1JlcXVpcmVtZW50X2Jhc2VfQ2xhc3MtZXh0ZW5zaW9uX1JlcXVpcmVtZW50LXVwcGVyVmFsdWUiIG5hbWU9IiIgdmFsdWU9IjEiLz4NCisgICAgICAgIDwvb3duZWRFbmQ+DQorICAgICAgPC9wYWNrYWdlZEVsZW1lbnQ+DQorICAgICAgPHBhY2thZ2VkRWxlbWVudCB4bWk6dHlwZT0idW1sOlN0ZXJlb3R5cGUiIHhtaTppZD0iU3lzTUwtUmVxdWlyZW1lbnRzLVZlcmlmeSIgbmFtZT0iVmVyaWZ5Ij4NCisgICAgICAgIDxvd25lZENvbW1lbnQgeG1pOmlkPSJTeXNNTC1SZXF1aXJlbWVudHMtVmVyaWZ5LW93bmVkQ29tbWVudCIgYW5ub3RhdGVkRWxlbWVudD0iU3lzTUwtUmVxdWlyZW1lbnRzLVZlcmlmeSI+DQorICAgICAgICAgIDxib2R5PkEgVmVyaWZ5IHJlbGF0aW9uc2hpcCBpcyBhIGRlcGVuZGVuY3kgYmV0d2VlbiBhIHJlcXVpcmVtZW50IGFuZCBhIHRlc3QgY2FzZSBvciBvdGhlciBtb2RlbCBlbGVtZW50IHRoYXQgY2FuIGRldGVybWluZSB3aGV0aGVyIGEgc3lzdGVtIGZ1bGZpbGxzIHRoZSByZXF1aXJlbWVudC4gQXMgd2l0aCBvdGhlciBkZXBlbmRlbmNpZXMsIHRoZSBhcnJvdyBkaXJlY3Rpb24gcG9pbnRzIGZyb20gdGhlIChjbGllbnQpIGVsZW1lbnQgdG8gdGhlIChzdXBwbGllcikgcmVxdWlyZW1lbnQuPC9ib2R5Pg0KKyAgICAgICAgPC9vd25lZENvbW1lbnQ+DQorICAgICAgICA8Z2VuZXJhbGl6YXRpb24geG1pOmlkPSJTeXNNTC1SZXF1aXJlbWVudHMtVmVyaWZ5LWdlbmVyYWxpemF0aW9uIiBnZW5lcmFsPSJTeXNNTC1SZXF1aXJlbWVudHMtVHJhY2UiIGlzU3Vic3RpdHV0YWJsZT0iZmFsc2UiLz4NCisgICAgICAgIDxvd25lZE9wZXJhdGlvbiB4bWk6aWQ9IlN5c01MLVJlcXVpcmVtZW50cy1WZXJpZnktZ2V0VmVyaWZpZXMiIG5hbWU9ImdldFZlcmlmaWVzIiB2aXNpYmlsaXR5PSJwdWJsaWMiIGlzU3RhdGljPSJ0cnVlIiBpc1F1ZXJ5PSJ0cnVlIj4NCisgICAgICAgICAgPG93bmVkUGFyYW1ldGVyIHhtaTppZD0iU3lzTUwtUmVxdWlyZW1lbnRzLVZlcmlmeS1nZXRWZXJpZmllcy1yZXN1bHQiIG5hbWU9InJlc3VsdCIgdmlzaWJpbGl0eT0icHVibGljIiB0eXBlPSJTeXNNTC1SZXF1aXJlbWVudHMtUmVxdWlyZW1lbnQiIGRpcmVjdGlvbj0icmV0dXJuIj4NCisgICAgICAgICAgICA8bG93ZXJWYWx1ZSB4bWk6dHlwZT0idW1sOkxpdGVyYWxVbmxpbWl0ZWROYXR1cmFsIiB4bWk6aWQ9IlN5c01MLVJlcXVpcmVtZW50cy1WZXJpZnktZ2V0VmVyaWZpZXMtcmVzdWx0LWxvd2VyVmFsdWUiIG5hbWU9IiIvPg0KKyAgICAgICAgICAgIDx1cHBlclZhbHVlIHhtaTp0eXBlPSJ1bWw6TGl0ZXJhbFVubGltaXRlZE5hdHVyYWwiIHhtaTppZD0iU3lzTUwtUmVxdWlyZW1lbnRzLVZlcmlmeS1nZXRWZXJpZmllcy1yZXN1bHQtdXBwZXJWYWx1ZSIgbmFtZT0iIiB2YWx1ZT0iKiIvPg0KKyAgICAgICAgICA8L293bmVkUGFyYW1ldGVyPg0KKyAgICAgICAgICA8b3duZWRQYXJhbWV0ZXIgeG1pOmlkPSJTeXNNTC1SZXF1aXJlbWVudHMtVmVyaWZ5LWdldFZlcmlmaWVzLXJlZiIgbmFtZT0icmVmIiB2aXNpYmlsaXR5PSJwdWJsaWMiPg0KKyAgICAgICAgICAgIDx0eXBlIHhtaTp0eXBlPSJ1bWw6Q2xhc3MiIGhyZWY9InBhdGhtYXA6Ly9VTUxfTUVUQU1PREVMUy9VTUwubWV0YW1vZGVsLnVtbCNOYW1lZEVsZW1lbnQiLz4NCisgICAgICAgICAgICA8bG93ZXJWYWx1ZSB4bWk6dHlwZT0idW1sOkxpdGVyYWxJbnRlZ2VyIiB4bWk6aWQ9IlN5c01MLVJlcXVpcmVtZW50cy1WZXJpZnktZ2V0VmVyaWZpZXMtcmVmLWxvd2VyVmFsdWUiIG5hbWU9IiIgdmFsdWU9IjEiLz4NCisgICAgICAgICAgICA8dXBwZXJWYWx1ZSB4bWk6dHlwZT0idW1sOkxpdGVyYWxVbmxpbWl0ZWROYXR1cmFsIiB4bWk6aWQ9IlN5c01MLVJlcXVpcmVtZW50cy1WZXJpZnktZ2V0VmVyaWZpZXMtcmVmLXVwcGVyVmFsdWUiIG5hbWU9IiIgdmFsdWU9IjEiLz4NCisgICAgICAgICAgPC9vd25lZFBhcmFtZXRlcj4NCisgICAgICAgIDwvb3duZWRPcGVyYXRpb24+DQorICAgICAgPC9wYWNrYWdlZEVsZW1lbnQ+DQorICAgICAgPHBhY2thZ2VkRWxlbWVudCB4bWk6dHlwZT0idW1sOkV4dGVuc2lvbiIgeG1pOmlkPSJTeXNNTC1SZXF1aXJlbWVudHMtRV9leHRlbnNpb25fVGVzdENhc2VfYmFzZV9CZWhhdmlvciIgbmFtZT0iRV9leHRlbnNpb25fVGVzdENhc2VfYmFzZV9CZWhhdmlvciIgbWVtYmVyRW5kPSJTeXNNTC1SZXF1aXJlbWVudHMtRV9leHRlbnNpb25fVGVzdENhc2VfYmFzZV9CZWhhdmlvci1leHRlbnNpb25fVGVzdENhc2UgU3lzTUwtUmVxdWlyZW1lbnRzLVRlc3RDYXNlLWJhc2VfQmVoYXZpb3IiIG5hdmlnYWJsZU93bmVkRW5kPSJTeXNNTC1SZXF1aXJlbWVudHMtRV9leHRlbnNpb25fVGVzdENhc2VfYmFzZV9CZWhhdmlvci1leHRlbnNpb25fVGVzdENhc2UiPg0KKyAgICAgICAgPG93bmVkRW5kIHhtaTp0eXBlPSJ1bWw6RXh0ZW5zaW9uRW5kIiB4bWk6aWQ9IlN5c01MLVJlcXVpcmVtZW50cy1FX2V4dGVuc2lvbl9UZXN0Q2FzZV9iYXNlX0JlaGF2aW9yLWV4dGVuc2lvbl9UZXN0Q2FzZSIgbmFtZT0iZXh0ZW5zaW9uX1Rlc3RDYXNlIiB2aXNpYmlsaXR5PSJwdWJsaWMiIHR5cGU9IlN5c01MLVJlcXVpcmVtZW50cy1UZXN0Q2FzZSIgYWdncmVnYXRpb249ImNvbXBvc2l0ZSIgYXNzb2NpYXRpb249IlN5c01MLVJlcXVpcmVtZW50cy1FX2V4dGVuc2lvbl9UZXN0Q2FzZV9iYXNlX0JlaGF2aW9yIj4NCisgICAgICAgICAgPGxvd2VyVmFsdWUgeG1pOnR5cGU9InVtbDpMaXRlcmFsSW50ZWdlciIgeG1pOmlkPSJTeXNNTC1SZXF1aXJlbWVudHMtRV9leHRlbnNpb25fVGVzdENhc2VfYmFzZV9CZWhhdmlvci1leHRlbnNpb25fVGVzdENhc2UtbG93ZXJWYWx1ZSIgbmFtZT0iIi8+DQorICAgICAgICAgIDx1cHBlclZhbHVlIHhtaTp0eXBlPSJ1bWw6TGl0ZXJhbEludGVnZXIiIHhtaTppZD0iU3lzTUwtUmVxdWlyZW1lbnRzLUVfZXh0ZW5zaW9uX1Rlc3RDYXNlX2Jhc2VfQmVoYXZpb3ItZXh0ZW5zaW9uX1Rlc3RDYXNlLXVwcGVyVmFsdWUiIG5hbWU9IiIgdmFsdWU9IjEiLz4NCisgICAgICAgIDwvb3duZWRFbmQ+DQorICAgICAgPC9wYWNrYWdlZEVsZW1lbnQ+DQorICAgICAgPHBhY2thZ2VkRWxlbWVudCB4bWk6dHlwZT0idW1sOlN0ZXJlb3R5cGUiIHhtaTppZD0iU3lzTUwtUmVxdWlyZW1lbnRzLVRyYWNlIiBuYW1lPSJUcmFjZSI+DQorICAgICAgICA8Z2VuZXJhbGl6YXRpb24geG1pOmlkPSJTeXNNTC1SZXF1aXJlbWVudHMtVHJhY2UtZ2VuZXJhbGl6YXRpb24xIj4NCisgICAgICAgICAgPGdlbmVyYWwgeG1pOnR5cGU9InVtbDpTdGVyZW90eXBlIiBocmVmPSJwYXRobWFwOi8vVU1MX1BST0ZJTEVTL1N0YW5kYXJkLnByb2ZpbGUudW1sI1RyYWNlIi8+DQorICAgICAgICA8L2dlbmVyYWxpemF0aW9uPg0KKyAgICAgICAgPGdlbmVyYWxpemF0aW9uIHhtaTppZD0iU3lzTUwtUmVxdWlyZW1lbnRzLVRyYWNlLWdlbmVyYWxpemF0aW9uMiIgZ2VuZXJhbD0iU3lzTUwtQmxvY2tzLURpcmVjdGVkUmVsYXRpb25zaGlwUHJvcGVydHlQYXRoIi8+DQorICAgICAgICA8b3duZWRPcGVyYXRpb24geG1pOmlkPSJTeXNNTC1SZXF1aXJlbWVudHMtVHJhY2UtZ2V0VHJhY2VkRnJvbSIgbmFtZT0iZ2V0VHJhY2VkRnJvbSIgdmlzaWJpbGl0eT0icHVibGljIiBpc1N0YXRpYz0idHJ1ZSIgaXNRdWVyeT0idHJ1ZSI+DQorICAgICAgICAgIDxvd25lZFBhcmFtZXRlciB4bWk6aWQ9IlN5c01MLVJlcXVpcmVtZW50cy1UcmFjZS1nZXRUcmFjZWRGcm9tLXJlc3VsdCIgbmFtZT0icmVzdWx0IiB2aXNpYmlsaXR5PSJwdWJsaWMiIHR5cGU9IlN5c01MLVJlcXVpcmVtZW50cy1SZXF1aXJlbWVudCIgZGlyZWN0aW9uPSJyZXR1cm4iPg0KKyAgICAgICAgICAgIDxsb3dlclZhbHVlIHhtaTp0eXBlPSJ1bWw6TGl0ZXJhbFVubGltaXRlZE5hdHVyYWwiIHhtaTppZD0iU3lzTUwtUmVxdWlyZW1lbnRzLVRyYWNlLWdldFRyYWNlZEZyb20tcmVzdWx0LWxvd2VyVmFsdWUiIG5hbWU9IiIvPg0KKyAgICAgICAgICAgIDx1cHBlclZhbHVlIHhtaTp0eXBlPSJ1bWw6TGl0ZXJhbFVubGltaXRlZE5hdHVyYWwiIHhtaTppZD0iU3lzTUwtUmVxdWlyZW1lbnRzLVRyYWNlLWdldFRyYWNlZEZyb20tcmVzdWx0LXVwcGVyVmFsdWUiIG5hbWU9IiIgdmFsdWU9IioiLz4NCisgICAgICAgICAgPC9vd25lZFBhcmFtZXRlcj4NCisgICAgICAgICAgPG93bmVkUGFyYW1ldGVyIHhtaTppZD0iU3lzTUwtUmVxdWlyZW1lbnRzLVRyYWNlLWdldFRyYWNlZEZyb20tcmVmIiBuYW1lPSJyZWYiIHZpc2liaWxpdHk9InB1YmxpYyI+DQorICAgICAgICAgICAgPHR5cGUgeG1pOnR5cGU9InVtbDpDbGFzcyIgaHJlZj0icGF0aG1hcDovL1VNTF9NRVRBTU9ERUxTL1VNTC5tZXRhbW9kZWwudW1sI05hbWVkRWxlbWVudCIvPg0KKyAgICAgICAgICAgIDxsb3dlclZhbHVlIHhtaTp0eXBlPSJ1bWw6TGl0ZXJhbEludGVnZXIiIHhtaTppZD0iU3lzTUwtUmVxdWlyZW1lbnRzLVRyYWNlLWdldFRyYWNlZEZyb20tcmVmLWxvd2VyVmFsdWUiIG5hbWU9IiIgdmFsdWU9IjEiLz4NCisgICAgICAgICAgICA8dXBwZXJWYWx1ZSB4bWk6dHlwZT0idW1sOkxpdGVyYWxVbmxpbWl0ZWROYXR1cmFsIiB4bWk6aWQ9IlN5c01MLVJlcXVpcmVtZW50cy1UcmFjZS1nZXRUcmFjZWRGcm9tLXJlZi11cHBlclZhbHVlIiBuYW1lPSIiIHZhbHVlPSIxIi8+DQorICAgICAgICAgIDwvb3duZWRQYXJhbWV0ZXI+DQorICAgICAgICA8L293bmVkT3BlcmF0aW9uPg0KKyAgICAgIDwvcGFja2FnZWRFbGVtZW50Pg0KKyAgICAgIDxwYWNrYWdlZEVsZW1lbnQgeG1pOnR5cGU9InVtbDpTdGVyZW90eXBlIiB4bWk6aWQ9IlN5c01MLVJlcXVpcmVtZW50cy1SZWZpbmUiIG5hbWU9IlJlZmluZSI+DQorICAgICAgICA8Z2VuZXJhbGl6YXRpb24geG1pOmlkPSJTeXNNTC1SZXF1aXJlbWVudHMtUmVmaW5lLWdlbmVyYWxpemF0aW9uMSI+DQorICAgICAgICAgIDxnZW5lcmFsIHhtaTp0eXBlPSJ1bWw6U3RlcmVvdHlwZSIgaHJlZj0icGF0aG1hcDovL1VNTF9QUk9GSUxFUy9TdGFuZGFyZC5wcm9maWxlLnVtbCNSZWZpbmUiLz4NCisgICAgICAgIDwvZ2VuZXJhbGl6YXRpb24+DQorICAgICAgICA8Z2VuZXJhbGl6YXRpb24geG1pOmlkPSJTeXNNTC1SZXF1aXJlbWVudHMtUmVmaW5lLWdlbmVyYWxpemF0aW9uMiIgZ2VuZXJhbD0iU3lzTUwtQmxvY2tzLURpcmVjdGVkUmVsYXRpb25zaGlwUHJvcGVydHlQYXRoIi8+DQorICAgICAgICA8b3duZWRPcGVyYXRpb24geG1pOmlkPSJTeXNNTC1SZXF1aXJlbWVudHMtUmVmaW5lLWdldFJlZmluZXMiIG5hbWU9ImdldFJlZmluZXMiIHZpc2liaWxpdHk9InB1YmxpYyIgaXNTdGF0aWM9InRydWUiIGlzUXVlcnk9InRydWUiPg0KKyAgICAgICAgICA8b3duZWRQYXJhbWV0ZXIgeG1pOmlkPSJTeXNNTC1SZXF1aXJlbWVudHMtUmVmaW5lLWdldFJlZmluZXMtcmVzdWx0IiBuYW1lPSJyZXN1bHQiIHZpc2liaWxpdHk9InB1YmxpYyIgdHlwZT0iU3lzTUwtUmVxdWlyZW1lbnRzLVJlcXVpcmVtZW50IiBkaXJlY3Rpb249InJldHVybiI+DQorICAgICAgICAgICAgPGxvd2VyVmFsdWUgeG1pOnR5cGU9InVtbDpMaXRlcmFsVW5saW1pdGVkTmF0dXJhbCIgeG1pOmlkPSJTeXNNTC1SZXF1aXJlbWVudHMtUmVmaW5lLWdldFJlZmluZXMtcmVzdWx0LWxvd2VyVmFsdWUiIG5hbWU9IiIvPg0KKyAgICAgICAgICAgIDx1cHBlclZhbHVlIHhtaTp0eXBlPSJ1bWw6TGl0ZXJhbFVubGltaXRlZE5hdHVyYWwiIHhtaTppZD0iU3lzTUwtUmVxdWlyZW1lbnRzLVJlZmluZS1nZXRSZWZpbmVzLXJlc3VsdC11cHBlclZhbHVlIiBuYW1lPSIiIHZhbHVlPSIqIi8+DQorICAgICAgICAgIDwvb3duZWRQYXJhbWV0ZXI+DQorICAgICAgICAgIDxvd25lZFBhcmFtZXRlciB4bWk6aWQ9IlN5c01MLVJlcXVpcmVtZW50cy1SZWZpbmUtZ2V0UmVmaW5lcy1yZWYiIG5hbWU9InJlZiIgdmlzaWJpbGl0eT0icHVibGljIj4NCisgICAgICAgICAgICA8dHlwZSB4bWk6dHlwZT0idW1sOkNsYXNzIiBocmVmPSJwYXRobWFwOi8vVU1MX01FVEFNT0RFTFMvVU1MLm1ldGFtb2RlbC51bWwjTmFtZWRFbGVtZW50Ii8+DQorICAgICAgICAgICAgPGxvd2VyVmFsdWUgeG1pOnR5cGU9InVtbDpMaXRlcmFsSW50ZWdlciIgeG1pOmlkPSJTeXNNTC1SZXF1aXJlbWVudHMtUmVmaW5lLWdldFJlZmluZXMtcmVmLWxvd2VyVmFsdWUiIG5hbWU9IiIgdmFsdWU9IjEiLz4NCisgICAgICAgICAgICA8dXBwZXJWYWx1ZSB4bWk6dHlwZT0idW1sOkxpdGVyYWxVbmxpbWl0ZWROYXR1cmFsIiB4bWk6aWQ9IlN5c01MLVJlcXVpcmVtZW50cy1SZWZpbmUtZ2V0UmVmaW5lcy1yZWYtdXBwZXJWYWx1ZSIgbmFtZT0iIiB2YWx1ZT0iMSIvPg0KKyAgICAgICAgICA8L293bmVkUGFyYW1ldGVyPg0KKyAgICAgICAgPC9vd25lZE9wZXJhdGlvbj4NCisgICAgICA8L3BhY2thZ2VkRWxlbWVudD4NCisgICAgPC9wYWNrYWdlZEVsZW1lbnQ+DQorICAgIDxwYWNrYWdlZEVsZW1lbnQgeG1pOnR5cGU9InVtbDpQYWNrYWdlIiB4bWk6aWQ9IlN5c01MLURlcHJlY2F0ZWRFbGVtZW50cyIgbmFtZT0iRGVwcmVjYXRlZEVsZW1lbnRzIiBVUkk9IiI+DQorICAgICAgPHBhY2thZ2VkRWxlbWVudCB4bWk6dHlwZT0idW1sOlN0ZXJlb3R5cGUiIHhtaTppZD0iU3lzTUwtRGVwcmVjYXRlZEVsZW1lbnRzLUZsb3dQb3J0IiBuYW1lPSJGbG93UG9ydCI+DQorICAgICAgICA8b3duZWRDb21tZW50IHhtaTppZD0iU3lzTUwtRGVwcmVjYXRlZEVsZW1lbnRzLUZsb3dQb3J0LW93bmVkQ29tbWVudCIgYW5ub3RhdGVkRWxlbWVudD0iU3lzTUwtRGVwcmVjYXRlZEVsZW1lbnRzLUZsb3dQb3J0Ij4NCisgICAgICAgICAgPGJvZHk+QSBGbG93UG9ydCBpcyBhbiBpbnRlcmFjdGlvbiBwb2ludCB0aHJvdWdoIHdoaWNoIGlucHV0IGFuZC9vciBvdXRwdXQgb2YgaXRlbXMgc3VjaCBhcyBkYXRhLCBtYXRlcmlhbCwgb3IgZW5lcmd5IG1heSBmbG93LiBUaGlzIGVuYWJsZXMgdGhlIG93bmluZyBibG9jayB0byBkZWNsYXJlIHdoaWNoIGl0ZW1zIGl0IG1heSBleGNoYW5nZSB3aXRoIGl0cyBlbnZpcm9ubWVudCBhbmQgdGhlIGludGVyYWN0aW9uIHBvaW50cyB0aHJvdWdoIHdoaWNoIHRoZSBleGNoYW5nZSBpcyBtYWRlLiBXZSBkaXN0aW5ndWlzaCBiZXR3ZWVuIGF0b21pYyBmbG93IHBvcnQgYW5kIGEgbm9uYXRvbWljIGZsb3cgcG9ydC4gQXRvbWljIGZsb3cgcG9ydHMgcmVsYXkgaXRlbXMgdGhhdCBhcmUgY2xhc3NpZmllZCBieSBhIHNpbmdsZSBCbG9jaywgVmFsdWVUeXBlLCBEYXRhVHlwZSwgb3IgU2lnbmFsIGNsYXNzaWZpZXIuIEEgbm9uYXRvbWljIGZsb3cgcG9ydCByZWxheXMgaXRlbXMgb2Ygc2V2ZXJhbCB0eXBlcyBhcyBzcGVjaWZpZWQgYnkgYSBGbG93U3BlY2lmaWNhdGlvbi4gRmxvdyBwb3J0cyBhbmQgYXNzb2NpYXRlZCBmbG93IHNwZWNpZmljYXRpb25zIGRlZmluZSDigJx3aGF0IGNhbiBmbG934oCdIGJldHdlZW4gdGhlIGJsb2NrIGFuZCBpdHMgZW52aXJvbm1lbnQsIHdoZXJlYXMgaXRlbSBmbG93cyBzcGVjaWZ5IOKAnHdoYXQgZG9lcyBmbG934oCdIGluIGEgc3BlY2lmaWMgdXNhZ2UgY29udGV4dC4gRmxvdyBwb3J0cyByZWxheSBpdGVtcyB0byB0aGVpciBvd25pbmcgYmxvY2sgb3IgdG8gYSBjb25uZWN0b3IgdGhhdCBjb25uZWN0cyB0aGVtIHdpdGggdGhlaXIgb3duZXLigJlzIGludGVybmFsIHBhcnRzIChpbnRlcm5hbCBjb25uZWN0b3IpLjwvYm9keT4NCisgICAgICAgIDwvb3duZWRDb21tZW50Pg0KKyAgICAgICAgPG93bmVkQXR0cmlidXRlIHhtaTppZD0iU3lzTUwtRGVwcmVjYXRlZEVsZW1lbnRzLUZsb3dQb3J0LWJhc2VfUG9ydCIgbmFtZT0iYmFzZV9Qb3J0IiB2aXNpYmlsaXR5PSJwdWJsaWMiIGFzc29jaWF0aW9uPSJTeXNNTC1EZXByZWNhdGVkRWxlbWVudHMtRV9leHRlbnNpb25fRmxvd1BvcnRfYmFzZV9Qb3J0Ij4NCisgICAgICAgICAgPHR5cGUgeG1pOnR5cGU9InVtbDpDbGFzcyIgaHJlZj0icGF0aG1hcDovL1VNTF9NRVRBTU9ERUxTL1VNTC5tZXRhbW9kZWwudW1sI1BvcnQiLz4NCisgICAgICAgIDwvb3duZWRBdHRyaWJ1dGU+DQorICAgICAgICA8b3duZWRBdHRyaWJ1dGUgeG1pOmlkPSJTeXNNTC1EZXByZWNhdGVkRWxlbWVudHMtRmxvd1BvcnQtZGlyZWN0aW9uIiBuYW1lPSJkaXJlY3Rpb24iIHZpc2liaWxpdHk9InB1YmxpYyIgdHlwZT0iU3lzTUwtUG9ydHNfdTAwMjZGbG93cy1GbG93RGlyZWN0aW9uIj4NCisgICAgICAgICAgPG93bmVkQ29tbWVudCB4bWk6aWQ9IlN5c01MLURlcHJlY2F0ZWRFbGVtZW50cy1GbG93UG9ydC1kaXJlY3Rpb24tb3duZWRDb21tZW50IiBhbm5vdGF0ZWRFbGVtZW50PSJTeXNNTC1EZXByZWNhdGVkRWxlbWVudHMtRmxvd1BvcnQtZGlyZWN0aW9uIj4NCisgICAgICAgICAgICA8Ym9keT5JbmRpY2F0ZXMgdGhlIGRpcmVjdGlvbiBpbiB3aGljaCBhbiBhdG9taWMgZmxvdyBwb3J0IHJlbGF5cyBpdHMgaXRlbXMuIElmIHRoZSBkaXJlY3Rpb24gaXMgc2V0IHRvIOKAnGluLOKAnSB0aGVuIHRoZSBpdGVtcyBhcmUgcmVsYXllZCBmcm9tIGFuIGV4dGVybmFsIGNvbm5lY3RvciB2aWEgdGhlIGZsb3cgcG9ydCBpbnRvIHRoZSBmbG93IHBvcnTigJlzIG93bmVyIChvciBvbmUgb2YgaXRzIHBhcnRzKS4gSWYgdGhlIGRpcmVjdGlvbiBpcyBzZXQgdG8g4oCcb3V0LOKAnSB0aGVuIHRoZSBpdGVtcyBhcmUgcmVsYXllZCBmcm9tIHRoZSBmbG93IHBvcnTigJlzIG93bmVyLCB2aWEgdGhlIGZsb3cgcG9ydCwgdGhyb3VnaCBhbiBleHRlcm5hbCBjb25uZWN0b3IgYXR0YWNoZWQgdG8gdGhlIGZsb3cgcG9ydC4gSWYgdGhlIGRpcmVjdGlvbiBpcyBzZXQgdG8g4oCcaW5vdXQs4oCdIHRoZW4gaXRlbXMgY2FuIGZsb3cgYm90aCB3YXlzLiBCeSBkZWZhdWx0LCB0aGUgdmFsdWUgaXMgaW5vdXQuPC9ib2R5Pg0KKyAgICAgICAgICA8L293bmVkQ29tbWVudD4NCisgICAgICAgICAgPGxvd2VyVmFsdWUgeG1pOnR5cGU9InVtbDpMaXRlcmFsSW50ZWdlciIgeG1pOmlkPSJTeXNNTC1EZXByZWNhdGVkRWxlbWVudHMtRmxvd1BvcnQtZGlyZWN0aW9uLWxvd2VyVmFsdWUiIG5hbWU9IiIgdmFsdWU9IjEiLz4NCisgICAgICAgICAgPHVwcGVyVmFsdWUgeG1pOnR5cGU9InVtbDpMaXRlcmFsVW5saW1pdGVkTmF0dXJhbCIgeG1pOmlkPSJTeXNNTC1EZXByZWNhdGVkRWxlbWVudHMtRmxvd1BvcnQtZGlyZWN0aW9uLXVwcGVyVmFsdWUiIG5hbWU9IiIgdmFsdWU9IjEiLz4NCisgICAgICAgICAgPGRlZmF1bHRWYWx1ZSB4bWk6dHlwZT0idW1sOkluc3RhbmNlVmFsdWUiIHhtaTppZD0iU3lzTUwtRGVwcmVjYXRlZEVsZW1lbnRzLUZsb3dQb3J0LWRpcmVjdGlvbi1kZWZhdWx0VmFsdWUiIG5hbWU9IiIgaW5zdGFuY2U9IlN5c01MLVBvcnRzX3UwMDI2Rmxvd3MtRmxvd0RpcmVjdGlvbi1pbm91dCIvPg0KKyAgICAgICAgPC9vd25lZEF0dHJpYnV0ZT4NCisgICAgICAgIDxvd25lZEF0dHJpYnV0ZSB4bWk6aWQ9IlN5c01MLURlcHJlY2F0ZWRFbGVtZW50cy1GbG93UG9ydC1pc0F0b21pYyIgbmFtZT0iaXNBdG9taWMiIHZpc2liaWxpdHk9InB1YmxpYyIgaXNEZXJpdmVkPSJ0cnVlIj4NCisgICAgICAgICAgPG93bmVkQ29tbWVudCB4bWk6aWQ9IlN5c01MLURlcHJlY2F0ZWRFbGVtZW50cy1GbG93UG9ydC1pc0F0b21pYy1vd25lZENvbW1lbnQiIGFubm90YXRlZEVsZW1lbnQ9IlN5c01MLURlcHJlY2F0ZWRFbGVtZW50cy1GbG93UG9ydC1pc0F0b21pYyI+DQorICAgICAgICAgICAgPGJvZHk+VGhpcyBpcyBhIGRlcml2ZWQgYXR0cmlidXRlIChkZXJpdmVkIGZyb20gdGhlIGZsb3cgcG9ydOKAmXMgdHlwZSkuIEZvciBhIGZsb3cgcG9ydCB0eXBlZCBieSBhIGZsb3cgc3BlY2lmaWNhdGlvbiB0aGUgdmFsdWUgb2YgdGhpcyBhdHRyaWJ1dGUgaXMgRmFsc2UsIG90aGVyd2lzZSB0aGUgdmFsdWUgaXMgVHJ1ZS48L2JvZHk+DQorICAgICAgICAgIDwvb3duZWRDb21tZW50Pg0KKyAgICAgICAgICA8dHlwZSB4bWk6dHlwZT0idW1sOlByaW1pdGl2ZVR5cGUiIGhyZWY9InBhdGhtYXA6Ly9VTUxfTElCUkFSSUVTL1VNTFByaW1pdGl2ZVR5cGVzLmxpYnJhcnkudW1sI0Jvb2xlYW4iLz4NCisgICAgICAgIDwvb3duZWRBdHRyaWJ1dGU+DQorICAgICAgPC9wYWNrYWdlZEVsZW1lbnQ+DQorICAgICAgPHBhY2thZ2VkRWxlbWVudCB4bWk6dHlwZT0idW1sOkV4dGVuc2lvbiIgeG1pOmlkPSJTeXNNTC1EZXByZWNhdGVkRWxlbWVudHMtRV9leHRlbnNpb25fRmxvd1BvcnRfYmFzZV9Qb3J0IiBuYW1lPSJFX2V4dGVuc2lvbl9GbG93UG9ydF9iYXNlX1BvcnQiIG1lbWJlckVuZD0iU3lzTUwtRGVwcmVjYXRlZEVsZW1lbnRzLUVfZXh0ZW5zaW9uX0Zsb3dQb3J0X2Jhc2VfUG9ydC1leHRlbnNpb25fIFN5c01MLURlcHJlY2F0ZWRFbGVtZW50cy1GbG93UG9ydC1iYXNlX1BvcnQiIG5hdmlnYWJsZU93bmVkRW5kPSJTeXNNTC1EZXByZWNhdGVkRWxlbWVudHMtRV9leHRlbnNpb25fRmxvd1BvcnRfYmFzZV9Qb3J0LWV4dGVuc2lvbl8iPg0KKyAgICAgICAgPG93bmVkRW5kIHhtaTp0eXBlPSJ1bWw6RXh0ZW5zaW9uRW5kIiB4bWk6aWQ9IlN5c01MLURlcHJlY2F0ZWRFbGVtZW50cy1FX2V4dGVuc2lvbl9GbG93UG9ydF9iYXNlX1BvcnQtZXh0ZW5zaW9uXyIgbmFtZT0iZXh0ZW5zaW9uXyIgdmlzaWJpbGl0eT0icHVibGljIiB0eXBlPSJTeXNNTC1EZXByZWNhdGVkRWxlbWVudHMtRmxvd1BvcnQiIGFnZ3JlZ2F0aW9uPSJjb21wb3NpdGUiIGFzc29jaWF0aW9uPSJTeXNNTC1EZXByZWNhdGVkRWxlbWVudHMtRV9leHRlbnNpb25fRmxvd1BvcnRfYmFzZV9Qb3J0Ij4NCisgICAgICAgICAgPGxvd2VyVmFsdWUgeG1pOnR5cGU9InVtbDpMaXRlcmFsSW50ZWdlciIgeG1pOmlkPSJTeXNNTC1EZXByZWNhdGVkRWxlbWVudHMtRV9leHRlbnNpb25fRmxvd1BvcnRfYmFzZV9Qb3J0LWV4dGVuc2lvbl8tbG93ZXJWYWx1ZSIgbmFtZT0iIi8+DQorICAgICAgICAgIDx1cHBlclZhbHVlIHhtaTp0eXBlPSJ1bWw6TGl0ZXJhbEludGVnZXIiIHhtaTppZD0iU3lzTUwtRGVwcmVjYXRlZEVsZW1lbnRzLUVfZXh0ZW5zaW9uX0Zsb3dQb3J0X2Jhc2VfUG9ydC1leHRlbnNpb25fLXVwcGVyVmFsdWUiIG5hbWU9IiIgdmFsdWU9IjEiLz4NCisgICAgICAgIDwvb3duZWRFbmQ+DQorICAgICAgPC9wYWNrYWdlZEVsZW1lbnQ+DQorICAgICAgPHBhY2thZ2VkRWxlbWVudCB4bWk6dHlwZT0idW1sOlN0ZXJlb3R5cGUiIHhtaTppZD0iU3lzTUwtRGVwcmVjYXRlZEVsZW1lbnRzLUZsb3dTcGVjaWZpY2F0aW9uIiBuYW1lPSJGbG93U3BlY2lmaWNhdGlvbiI+DQorICAgICAgICA8b3duZWRDb21tZW50IHhtaTppZD0iU3lzTUwtRGVwcmVjYXRlZEVsZW1lbnRzLUZsb3dTcGVjaWZpY2F0aW9uLW93bmVkQ29tbWVudCIgYW5ub3RhdGVkRWxlbWVudD0iU3lzTUwtRGVwcmVjYXRlZEVsZW1lbnRzLUZsb3dTcGVjaWZpY2F0aW9uIj4NCisgICAgICAgICAgPGJvZHk+QSBGbG93U3BlY2lmaWNhdGlvbiBzcGVjaWZpZXMgaW5wdXRzIGFuZCBvdXRwdXRzIGFzIGEgc2V0IG9mIGZsb3cgcHJvcGVydGllcy4gQSBmbG93IHNwZWNpZmljYXRpb24gaXMgdXNlZCBieSBmbG93IHBvcnRzIHRvIHNwZWNpZnkgd2hhdCBpdGVtcyBjYW4gZmxvdyB2aWEgdGhlIHBvcnQuPC9ib2R5Pg0KKyAgICAgICAgPC9vd25lZENvbW1lbnQ+DQorICAgICAgICA8b3duZWRBdHRyaWJ1dGUgeG1pOmlkPSJTeXNNTC1EZXByZWNhdGVkRWxlbWVudHMtRmxvd1NwZWNpZmljYXRpb24tYmFzZV9JbnRlcmZhY2UiIG5hbWU9ImJhc2VfSW50ZXJmYWNlIiB2aXNpYmlsaXR5PSJwdWJsaWMiIGFzc29jaWF0aW9uPSJTeXNNTC1EZXByZWNhdGVkRWxlbWVudHMtRV9leHRlbnNpb25fRmxvd1NwZWNpZmljYXRpb25fYmFzZV9JbnRlcmZhY2UiPg0KKyAgICAgICAgICA8dHlwZSB4bWk6dHlwZT0idW1sOkNsYXNzIiBocmVmPSJwYXRobWFwOi8vVU1MX01FVEFNT0RFTFMvVU1MLm1ldGFtb2RlbC51bWwjSW50ZXJmYWNlIi8+DQorICAgICAgICA8L293bmVkQXR0cmlidXRlPg0KKyAgICAgIDwvcGFja2FnZWRFbGVtZW50Pg0KKyAgICAgIDxwYWNrYWdlZEVsZW1lbnQgeG1pOnR5cGU9InVtbDpFeHRlbnNpb24iIHhtaTppZD0iU3lzTUwtRGVwcmVjYXRlZEVsZW1lbnRzLUVfZXh0ZW5zaW9uX0Zsb3dTcGVjaWZpY2F0aW9uX2Jhc2VfSW50ZXJmYWNlIiBuYW1lPSJFX2V4dGVuc2lvbl9GbG93U3BlY2lmaWNhdGlvbl9iYXNlX0ludGVyZmFjZSIgbWVtYmVyRW5kPSJTeXNNTC1EZXByZWNhdGVkRWxlbWVudHMtRV9leHRlbnNpb25fRmxvd1NwZWNpZmljYXRpb25fYmFzZV9JbnRlcmZhY2UtZXh0ZW5zaW9uXyBTeXNNTC1EZXByZWNhdGVkRWxlbWVudHMtRmxvd1NwZWNpZmljYXRpb24tYmFzZV9JbnRlcmZhY2UiIG5hdmlnYWJsZU93bmVkRW5kPSJTeXNNTC1EZXByZWNhdGVkRWxlbWVudHMtRV9leHRlbnNpb25fRmxvd1NwZWNpZmljYXRpb25fYmFzZV9JbnRlcmZhY2UtZXh0ZW5zaW9uXyI+DQorICAgICAgICA8b3duZWRFbmQgeG1pOnR5cGU9InVtbDpFeHRlbnNpb25FbmQiIHhtaTppZD0iU3lzTUwtRGVwcmVjYXRlZEVsZW1lbnRzLUVfZXh0ZW5zaW9uX0Zsb3dTcGVjaWZpY2F0aW9uX2Jhc2VfSW50ZXJmYWNlLWV4dGVuc2lvbl8iIG5hbWU9ImV4dGVuc2lvbl8iIHZpc2liaWxpdHk9InB1YmxpYyIgdHlwZT0iU3lzTUwtRGVwcmVjYXRlZEVsZW1lbnRzLUZsb3dTcGVjaWZpY2F0aW9uIiBhZ2dyZWdhdGlvbj0iY29tcG9zaXRlIiBhc3NvY2lhdGlvbj0iU3lzTUwtRGVwcmVjYXRlZEVsZW1lbnRzLUVfZXh0ZW5zaW9uX0Zsb3dTcGVjaWZpY2F0aW9uX2Jhc2VfSW50ZXJmYWNlIj4NCisgICAgICAgICAgPGxvd2VyVmFsdWUgeG1pOnR5cGU9InVtbDpMaXRlcmFsSW50ZWdlciIgeG1pOmlkPSJTeXNNTC1EZXByZWNhdGVkRWxlbWVudHMtRV9leHRlbnNpb25fRmxvd1NwZWNpZmljYXRpb25fYmFzZV9JbnRlcmZhY2UtZXh0ZW5zaW9uXy1sb3dlclZhbHVlIiBuYW1lPSIiLz4NCisgICAgICAgICAgPHVwcGVyVmFsdWUgeG1pOnR5cGU9InVtbDpMaXRlcmFsSW50ZWdlciIgeG1pOmlkPSJTeXNNTC1EZXByZWNhdGVkRWxlbWVudHMtRV9leHRlbnNpb25fRmxvd1NwZWNpZmljYXRpb25fYmFzZV9JbnRlcmZhY2UtZXh0ZW5zaW9uXy11cHBlclZhbHVlIiBuYW1lPSIiIHZhbHVlPSIxIi8+DQorICAgICAgICA8L293bmVkRW5kPg0KKyAgICAgIDwvcGFja2FnZWRFbGVtZW50Pg0KKyAgICAgIDxwYWNrYWdlZEVsZW1lbnQgeG1pOnR5cGU9InVtbDpTdGVyZW90eXBlIiB4bWk6aWQ9IlN5c01MLURlcHJlY2F0ZWRFbGVtZW50cy1BbGxvY2F0ZWQiIG5hbWU9IkFsbG9jYXRlZCI+DQorICAgICAgICA8b3duZWRDb21tZW50IHhtaTppZD0iU3lzTUwtRGVwcmVjYXRlZEVsZW1lbnRzLUFsbG9jYXRlZC1vd25lZENvbW1lbnQiIGFubm90YXRlZEVsZW1lbnQ9IlN5c01MLURlcHJlY2F0ZWRFbGVtZW50cy1BbGxvY2F0ZWQiPg0KKyAgICAgICAgICA8Ym9keT7Cq2FsbG9jYXRlZMK7IGlzIGEgc3RlcmVvdHlwZSB0aGF0IGFwcGxpZXMgdG8gYW55IE5hbWVkRWxlbWVudCB0aGF0IGhhcyBhdCBsZWFzdCBvbmUgYWxsb2NhdGlvbiByZWxhdGlvbnNoaXAgd2l0aCBhbm90aGVyIE5hbWVkRWxlbWVudC4gwqthbGxvY2F0ZWTCuyBlbGVtZW50cyBtYXkgYmUgZGVzaWduYXRlZCBieSBlaXRoZXIgdGhlIC9mcm9tIG9yIC90byBlbmQgb2YgYW4gwqthbGxvY2F0ZcK7IGRlcGVuZGVuY3kuIFRoZSDCq2FsbG9jYXRlZMK7IHN0ZXJlb3R5cGUgcHJvdmlkZXMgYSBtZWNoYW5pc20gZm9yIGEgcGFydGljdWxhciBtb2RlbCBlbGVtZW50IHRvIGNvbnZlbmllbnRseSByZXRhaW4gYW5kIGRpc3BsYXkgdGhlIGVsZW1lbnQgYXQgdGhlIG9wcG9zaXRlIGVuZCBvZiBhbnkgwqthbGxvY2F0ZcK7IGRlcGVuZGVuY3kuIFRoaXMgc3RlcmVvdHlwZSBwcm92aWRlcyBmb3IgdGhlIHByb3BlcnRpZXMg4oCcYWxsb2NhdGVkRnJvbeKAnSBhbmQg4oCcYWxsb2NhdGVkVG8s4oCdIHdoaWNoIGFyZSBkZXJpdmVkIGZyb20gdGhlIMKrYWxsb2NhdGXCuyBkZXBlbmRlbmN5LjwvYm9keT4NCisgICAgICAgIDwvb3duZWRDb21tZW50Pg0KKyAgICAgICAgPG93bmVkQXR0cmlidXRlIHhtaTppZD0iU3lzTUwtRGVwcmVjYXRlZEVsZW1lbnRzLUFsbG9jYXRlZC1iYXNlX05hbWVkRWxlbWVudCIgbmFtZT0iYmFzZV9OYW1lZEVsZW1lbnQiIHZpc2liaWxpdHk9InB1YmxpYyIgYXNzb2NpYXRpb249IlN5c01MLURlcHJlY2F0ZWRFbGVtZW50cy1FX2V4dGVuc2lvbl9BbGxvY2F0ZWRfYmFzZV9OYW1lZEVsZW1lbnQiPg0KKyAgICAgICAgICA8dHlwZSB4bWk6dHlwZT0idW1sOkNsYXNzIiBocmVmPSJwYXRobWFwOi8vVU1MX01FVEFNT0RFTFMvVU1MLm1ldGFtb2RlbC51bWwjTmFtZWRFbGVtZW50Ii8+DQorICAgICAgICA8L293bmVkQXR0cmlidXRlPg0KKyAgICAgICAgPG93bmVkQXR0cmlidXRlIHhtaTppZD0iU3lzTUwtRGVwcmVjYXRlZEVsZW1lbnRzLUFsbG9jYXRlZC1hbGxvY2F0ZWRGcm9tIiBuYW1lPSJhbGxvY2F0ZWRGcm9tIiB2aXNpYmlsaXR5PSJwdWJsaWMiIGlzRGVyaXZlZD0idHJ1ZSI+DQorICAgICAgICAgIDxvd25lZENvbW1lbnQgeG1pOmlkPSJTeXNNTC1EZXByZWNhdGVkRWxlbWVudHMtQWxsb2NhdGVkLWFsbG9jYXRlZEZyb20tb3duZWRDb21tZW50IiBhbm5vdGF0ZWRFbGVtZW50PSJTeXNNTC1EZXByZWNhdGVkRWxlbWVudHMtQWxsb2NhdGVkLWFsbG9jYXRlZEZyb20iPg0KKyAgICAgICAgICAgIDxib2R5PlJldmVyc2Ugb2YgYWxsb2NhdGVkVG86IHRoZSBlbGVtZW50IHR5cGVzIGFuZCBuYW1lcyBvZiB0aGUgc2V0IG9mIGVsZW1lbnRzIHRoYXQgYXJlIGNsaWVudHMgKGZyb20pIG9mIGFuIMKrYWxsb2NhdGXCuyB3aG9zZSBzdXBwbGllciBpcyBleHRlbmRlZCBieSB0aGlzIHN0ZXJlb3R5cGUgKGluc3RhbmNlKS4gVGhlIHNhbWUgY2hhcmFjdGVyaXN0aWNzIGFwcGx5IGFzIHRvIC9hbGxvY2F0ZWRUby4gRWFjaCBhbGxvY2F0ZWRGcm9tIHByb3BlcnR5IHdpbGwgYmUgZXhwcmVzc2VkIGFzIMKrZWxlbWVudFR5cGXCuyBFbGVtZW50TmFtZS48L2JvZHk+DQorICAgICAgICAgIDwvb3duZWRDb21tZW50Pg0KKyAgICAgICAgICA8dHlwZSB4bWk6dHlwZT0idW1sOkNsYXNzIiBocmVmPSJwYXRobWFwOi8vVU1MX01FVEFNT0RFTFMvVU1MLm1ldGFtb2RlbC51bWwjTmFtZWRFbGVtZW50Ii8+DQorICAgICAgICAgIDxsb3dlclZhbHVlIHhtaTp0eXBlPSJ1bWw6TGl0ZXJhbFN0cmluZyIgeG1pOmlkPSJTeXNNTC1EZXByZWNhdGVkRWxlbWVudHMtQWxsb2NhdGVkLWFsbG9jYXRlZEZyb20tbG93ZXJWYWx1ZSIgbmFtZT0iIiB2YWx1ZT0iKiIvPg0KKyAgICAgICAgICA8dXBwZXJWYWx1ZSB4bWk6dHlwZT0idW1sOkxpdGVyYWxVbmxpbWl0ZWROYXR1cmFsIiB4bWk6aWQ9IlN5c01MLURlcHJlY2F0ZWRFbGVtZW50cy1BbGxvY2F0ZWQtYWxsb2NhdGVkRnJvbS11cHBlclZhbHVlIiBuYW1lPSIiIHZhbHVlPSIqIi8+DQorICAgICAgICA8L293bmVkQXR0cmlidXRlPg0KKyAgICAgICAgPG93bmVkQXR0cmlidXRlIHhtaTppZD0iU3lzTUwtRGVwcmVjYXRlZEVsZW1lbnRzLUFsbG9jYXRlZC1hbGxvY2F0ZWRUbyIgbmFtZT0iYWxsb2NhdGVkVG8iIHZpc2liaWxpdHk9InB1YmxpYyIgaXNEZXJpdmVkPSJ0cnVlIj4NCisgICAgICAgICAgPG93bmVkQ29tbWVudCB4bWk6aWQ9IlN5c01MLURlcHJlY2F0ZWRFbGVtZW50cy1BbGxvY2F0ZWQtYWxsb2NhdGVkVG8tb3duZWRDb21tZW50IiBhbm5vdGF0ZWRFbGVtZW50PSJTeXNNTC1EZXByZWNhdGVkRWxlbWVudHMtQWxsb2NhdGVkLWFsbG9jYXRlZFRvIj4NCisgICAgICAgICAgICA8Ym9keT5UaGUgZWxlbWVudCB0eXBlcyBhbmQgbmFtZXMgb2YgdGhlIHNldCBvZiBlbGVtZW50cyB0aGF0IGFyZSBzdXBwbGllcnMgKOKAnHRv4oCdIGVuZCBvZiB0aGUgY29uY3JldGUgc3ludGF4KSBvZiBhbiDCq2FsbG9jYXRlwrsgd2hvc2UgY2xpZW50IGlzIGV4dGVuZGVkIGJ5IHRoaXMgc3RlcmVvdHlwZSAoaW5zdGFuY2UpLiBUaGlzIHByb3BlcnR5IGlzIHRoZSB1bmlvbiBvZiBhbGwgc3VwcGxpZXJzIHRvIHdoaWNoIHRoaXMgaW5zdGFuY2UgaXMgdGhlIGNsaWVudCwgaS5lLiwgdGhlcmUgbWF5IGJlIG1vcmUgdGhhbiBvbmUgL2FsbG9jYXRlZFRvIHByb3BlcnR5IHBlciBhbGxvY2F0ZWQgbW9kZWwgZWxlbWVudC4gRWFjaCBhbGxvY2F0ZWRUbyBwcm9wZXJ0eSB3aWxsIGJlIGV4cHJlc3NlZCBhcyDCq2VsZW1lbnRUeXBlwrsgRWxlbWVudE5hbWUuPC9ib2R5Pg0KKyAgICAgICAgICA8L293bmVkQ29tbWVudD4NCisgICAgICAgICAgPHR5cGUgeG1pOnR5cGU9InVtbDpDbGFzcyIgaHJlZj0icGF0aG1hcDovL1VNTF9NRVRBTU9ERUxTL1VNTC5tZXRhbW9kZWwudW1sI05hbWVkRWxlbWVudCIvPg0KKyAgICAgICAgICA8bG93ZXJWYWx1ZSB4bWk6dHlwZT0idW1sOkxpdGVyYWxTdHJpbmciIHhtaTppZD0iU3lzTUwtRGVwcmVjYXRlZEVsZW1lbnRzLUFsbG9jYXRlZC1hbGxvY2F0ZWRUby1sb3dlclZhbHVlIiBuYW1lPSIiIHZhbHVlPSIqIi8+DQorICAgICAgICAgIDx1cHBlclZhbHVlIHhtaTp0eXBlPSJ1bWw6TGl0ZXJhbFVubGltaXRlZE5hdHVyYWwiIHhtaTppZD0iU3lzTUwtRGVwcmVjYXRlZEVsZW1lbnRzLUFsbG9jYXRlZC1hbGxvY2F0ZWRUby11cHBlclZhbHVlIiBuYW1lPSIiIHZhbHVlPSIqIi8+DQorICAgICAgICA8L293bmVkQXR0cmlidXRlPg0KKyAgICAgIDwvcGFja2FnZWRFbGVtZW50Pg0KKyAgICAgIDxwYWNrYWdlZEVsZW1lbnQgeG1pOnR5cGU9InVtbDpFeHRlbnNpb24iIHhtaTppZD0iU3lzTUwtRGVwcmVjYXRlZEVsZW1lbnRzLUVfZXh0ZW5zaW9uX0FsbG9jYXRlZF9iYXNlX05hbWVkRWxlbWVudCIgbmFtZT0iRV9leHRlbnNpb25fQWxsb2NhdGVkX2Jhc2VfTmFtZWRFbGVtZW50IiBtZW1iZXJFbmQ9IlN5c01MLURlcHJlY2F0ZWRFbGVtZW50cy1FX2V4dGVuc2lvbl9BbGxvY2F0ZWRfYmFzZV9OYW1lZEVsZW1lbnQtZXh0ZW5zaW9uXyBTeXNNTC1EZXByZWNhdGVkRWxlbWVudHMtQWxsb2NhdGVkLWJhc2VfTmFtZWRFbGVtZW50IiBuYXZpZ2FibGVPd25lZEVuZD0iU3lzTUwtRGVwcmVjYXRlZEVsZW1lbnRzLUVfZXh0ZW5zaW9uX0FsbG9jYXRlZF9iYXNlX05hbWVkRWxlbWVudC1leHRlbnNpb25fIj4NCisgICAgICAgIDxvd25lZEVuZCB4bWk6dHlwZT0idW1sOkV4dGVuc2lvbkVuZCIgeG1pOmlkPSJTeXNNTC1EZXByZWNhdGVkRWxlbWVudHMtRV9leHRlbnNpb25fQWxsb2NhdGVkX2Jhc2VfTmFtZWRFbGVtZW50LWV4dGVuc2lvbl8iIG5hbWU9ImV4dGVuc2lvbl8iIHZpc2liaWxpdHk9InB1YmxpYyIgdHlwZT0iU3lzTUwtRGVwcmVjYXRlZEVsZW1lbnRzLUFsbG9jYXRlZCIgYWdncmVnYXRpb249ImNvbXBvc2l0ZSIgYXNzb2NpYXRpb249IlN5c01MLURlcHJlY2F0ZWRFbGVtZW50cy1FX2V4dGVuc2lvbl9BbGxvY2F0ZWRfYmFzZV9OYW1lZEVsZW1lbnQiPg0KKyAgICAgICAgICA8bG93ZXJWYWx1ZSB4bWk6dHlwZT0idW1sOkxpdGVyYWxJbnRlZ2VyIiB4bWk6aWQ9IlN5c01MLURlcHJlY2F0ZWRFbGVtZW50cy1FX2V4dGVuc2lvbl9BbGxvY2F0ZWRfYmFzZV9OYW1lZEVsZW1lbnQtZXh0ZW5zaW9uXy1sb3dlclZhbHVlIiBuYW1lPSIiLz4NCisgICAgICAgICAgPHVwcGVyVmFsdWUgeG1pOnR5cGU9InVtbDpMaXRlcmFsSW50ZWdlciIgeG1pOmlkPSJTeXNNTC1EZXByZWNhdGVkRWxlbWVudHMtRV9leHRlbnNpb25fQWxsb2NhdGVkX2Jhc2VfTmFtZWRFbGVtZW50LWV4dGVuc2lvbl8tdXBwZXJWYWx1ZSIgbmFtZT0iIiB2YWx1ZT0iMSIvPg0KKyAgICAgICAgPC9vd25lZEVuZD4NCisgICAgICA8L3BhY2thZ2VkRWxlbWVudD4NCisgICAgICA8cGFja2FnZWRFbGVtZW50IHhtaTp0eXBlPSJ1bWw6U3RlcmVvdHlwZSIgeG1pOmlkPSJTeXNNTC1EZXByZWNhdGVkRWxlbWVudHMtUmVxdWlyZW1lbnRSZWxhdGVkIiBuYW1lPSJSZXF1aXJlbWVudFJlbGF0ZWQiPg0KKyAgICAgICAgPG93bmVkQ29tbWVudCB4bWk6aWQ9IlN5c01MLURlcHJlY2F0ZWRFbGVtZW50cy1SZXF1aXJlbWVudFJlbGF0ZWQtb3duZWRDb21tZW50IiBhbm5vdGF0ZWRFbGVtZW50PSJTeXNNTC1EZXByZWNhdGVkRWxlbWVudHMtUmVxdWlyZW1lbnRSZWxhdGVkIj4NCisgICAgICAgICAgPGJvZHk+VGhpcyBzdGVyZW90eXBlIGlzIHVzZWQgdG8gYWRkIHByb3BlcnRpZXMgdG8gdGhvc2UgZWxlbWVudHMgdGhhdCBhcmUgcmVsYXRlZCB0byByZXF1aXJlbWVudHMgdmlhIHRoZSB2YXJpb3VzIGRlcGVuZGVuY2llcy48L2JvZHk+DQorICAgICAgICA8L293bmVkQ29tbWVudD4NCisgICAgICAgIDxvd25lZEF0dHJpYnV0ZSB4bWk6aWQ9IlN5c01MLURlcHJlY2F0ZWRFbGVtZW50cy1SZXF1aXJlbWVudFJlbGF0ZWQtYmFzZV9OYW1lZEVsZW1lbnQiIG5hbWU9ImJhc2VfTmFtZWRFbGVtZW50IiB2aXNpYmlsaXR5PSJwdWJsaWMiIGFzc29jaWF0aW9uPSJTeXNNTC1EZXByZWNhdGVkRWxlbWVudHMtRV9leHRlbnNpb25fUmVxdWlyZW1lbnRSZWxhdGVkX2Jhc2VfTmFtZWRFbGVtZW50Ij4NCisgICAgICAgICAgPHR5cGUgeG1pOnR5cGU9InVtbDpDbGFzcyIgaHJlZj0icGF0aG1hcDovL1VNTF9NRVRBTU9ERUxTL1VNTC5tZXRhbW9kZWwudW1sI05hbWVkRWxlbWVudCIvPg0KKyAgICAgICAgPC9vd25lZEF0dHJpYnV0ZT4NCisgICAgICAgIDxvd25lZEF0dHJpYnV0ZSB4bWk6aWQ9IlN5c01MLURlcHJlY2F0ZWRFbGVtZW50cy1SZXF1aXJlbWVudFJlbGF0ZWQtVHJhY2VkRnJvbSIgbmFtZT0iVHJhY2VkRnJvbSIgdmlzaWJpbGl0eT0icHVibGljIiB0eXBlPSJTeXNNTC1SZXF1aXJlbWVudHMtUmVxdWlyZW1lbnQiIGlzRGVyaXZlZD0idHJ1ZSI+DQorICAgICAgICAgIDxvd25lZENvbW1lbnQgeG1pOmlkPSJTeXNNTC1EZXByZWNhdGVkRWxlbWVudHMtUmVxdWlyZW1lbnRSZWxhdGVkLVRyYWNlZEZyb20tb3duZWRDb21tZW50IiBhbm5vdGF0ZWRFbGVtZW50PSJTeXNNTC1EZXByZWNhdGVkRWxlbWVudHMtUmVxdWlyZW1lbnRSZWxhdGVkLVRyYWNlZEZyb20iPg0KKyAgICAgICAgICAgIDxib2R5PkRlcml2ZWQgZnJvbSBhbGwgcmVxdWlyZW1lbnRzIHRoYXQgYXJlIHRoZSBzdXBwbGllciBvZiBhIMKrdHJhY2XCuyByZWxhdGlvbnNoaXAgZm9yIHdoaWNoIHRoaXMgZWxlbWVudCBpcyBhIGNsaWVudC48L2JvZHk+DQorICAgICAgICAgIDwvb3duZWRDb21tZW50Pg0KKyAgICAgICAgICA8bG93ZXJWYWx1ZSB4bWk6dHlwZT0idW1sOkxpdGVyYWxTdHJpbmciIHhtaTppZD0iU3lzTUwtRGVwcmVjYXRlZEVsZW1lbnRzLVJlcXVpcmVtZW50UmVsYXRlZC1UcmFjZWRGcm9tLWxvd2VyVmFsdWUiIG5hbWU9IiIgdmFsdWU9IioiLz4NCisgICAgICAgICAgPHVwcGVyVmFsdWUgeG1pOnR5cGU9InVtbDpMaXRlcmFsVW5saW1pdGVkTmF0dXJhbCIgeG1pOmlkPSJTeXNNTC1EZXByZWNhdGVkRWxlbWVudHMtUmVxdWlyZW1lbnRSZWxhdGVkLVRyYWNlZEZyb20tdXBwZXJWYWx1ZSIgbmFtZT0iIiB2YWx1ZT0iKiIvPg0KKyAgICAgICAgPC9vd25lZEF0dHJpYnV0ZT4NCisgICAgICAgIDxvd25lZEF0dHJpYnV0ZSB4bWk6aWQ9IlN5c01MLURlcHJlY2F0ZWRFbGVtZW50cy1SZXF1aXJlbWVudFJlbGF0ZWQtU2F0aXNmaWVzIiBuYW1lPSJTYXRpc2ZpZXMiIHZpc2liaWxpdHk9InB1YmxpYyIgdHlwZT0iU3lzTUwtUmVxdWlyZW1lbnRzLVJlcXVpcmVtZW50IiBpc0Rlcml2ZWQ9InRydWUiPg0KKyAgICAgICAgICA8b3duZWRDb21tZW50IHhtaTppZD0iU3lzTUwtRGVwcmVjYXRlZEVsZW1lbnRzLVJlcXVpcmVtZW50UmVsYXRlZC1TYXRpc2ZpZXMtb3duZWRDb21tZW50IiBhbm5vdGF0ZWRFbGVtZW50PSJTeXNNTC1EZXByZWNhdGVkRWxlbWVudHMtUmVxdWlyZW1lbnRSZWxhdGVkLVNhdGlzZmllcyI+DQorICAgICAgICAgICAgPGJvZHk+RGVyaXZlZCBmcm9tIGFsbCByZXF1aXJlbWVudHMgdGhhdCBhcmUgdGhlIHN1cHBsaWVyIG9mIGEgwqtzYXRpc2Z5wrsgcmVsYXRpb25zaGlwIGZvciB3aGljaCB0aGlzIGVsZW1lbnQgaXMgYSBjbGllbnQuPC9ib2R5Pg0KKyAgICAgICAgICA8L293bmVkQ29tbWVudD4NCisgICAgICAgICAgPGxvd2VyVmFsdWUgeG1pOnR5cGU9InVtbDpMaXRlcmFsU3RyaW5nIiB4bWk6aWQ9IlN5c01MLURlcHJlY2F0ZWRFbGVtZW50cy1SZXF1aXJlbWVudFJlbGF0ZWQtU2F0aXNmaWVzLWxvd2VyVmFsdWUiIG5hbWU9IiIgdmFsdWU9IioiLz4NCisgICAgICAgICAgPHVwcGVyVmFsdWUgeG1pOnR5cGU9InVtbDpMaXRlcmFsVW5saW1pdGVkTmF0dXJhbCIgeG1pOmlkPSJTeXNNTC1EZXByZWNhdGVkRWxlbWVudHMtUmVxdWlyZW1lbnRSZWxhdGVkLVNhdGlzZmllcy11cHBlclZhbHVlIiBuYW1lPSIiIHZhbHVlPSIqIi8+DQorICAgICAgICA8L293bmVkQXR0cmlidXRlPg0KKyAgICAgICAgPG93bmVkQXR0cmlidXRlIHhtaTppZD0iU3lzTUwtRGVwcmVjYXRlZEVsZW1lbnRzLVJlcXVpcmVtZW50UmVsYXRlZC1SZWZpbmVzIiBuYW1lPSJSZWZpbmVzIiB2aXNpYmlsaXR5PSJwdWJsaWMiIHR5cGU9IlN5c01MLVJlcXVpcmVtZW50cy1SZXF1aXJlbWVudCIgaXNEZXJpdmVkPSJ0cnVlIj4NCisgICAgICAgICAgPG93bmVkQ29tbWVudCB4bWk6aWQ9IlN5c01MLURlcHJlY2F0ZWRFbGVtZW50cy1SZXF1aXJlbWVudFJlbGF0ZWQtUmVmaW5lcy1vd25lZENvbW1lbnQiIGFubm90YXRlZEVsZW1lbnQ9IlN5c01MLURlcHJlY2F0ZWRFbGVtZW50cy1SZXF1aXJlbWVudFJlbGF0ZWQtUmVmaW5lcyI+DQorICAgICAgICAgICAgPGJvZHk+RGVyaXZlZCBmcm9tIGFsbCByZXF1aXJlbWVudHMgdGhhdCBhcmUgdGhlIHN1cHBsaWVyIG9mIGEgwqtyZWZpbmXCuyByZWxhdGlvbnNoaXAgZm9yIHdoaWNoIHRoaXMgZWxlbWVudCBpcyBhIGNsaWVudC48L2JvZHk+DQorICAgICAgICAgIDwvb3duZWRDb21tZW50Pg0KKyAgICAgICAgICA8bG93ZXJWYWx1ZSB4bWk6dHlwZT0idW1sOkxpdGVyYWxTdHJpbmciIHhtaTppZD0iU3lzTUwtRGVwcmVjYXRlZEVsZW1lbnRzLVJlcXVpcmVtZW50UmVsYXRlZC1SZWZpbmVzLWxvd2VyVmFsdWUiIG5hbWU9IiIgdmFsdWU9IioiLz4NCisgICAgICAgICAgPHVwcGVyVmFsdWUgeG1pOnR5cGU9InVtbDpMaXRlcmFsVW5saW1pdGVkTmF0dXJhbCIgeG1pOmlkPSJTeXNNTC1EZXByZWNhdGVkRWxlbWVudHMtUmVxdWlyZW1lbnRSZWxhdGVkLVJlZmluZXMtdXBwZXJWYWx1ZSIgbmFtZT0iIiB2YWx1ZT0iKiIvPg0KKyAgICAgICAgPC9vd25lZEF0dHJpYnV0ZT4NCisgICAgICAgIDxvd25lZEF0dHJpYnV0ZSB4bWk6aWQ9IlN5c01MLURlcHJlY2F0ZWRFbGVtZW50cy1SZXF1aXJlbWVudFJlbGF0ZWQtVmVyaWZpZXMiIG5hbWU9IlZlcmlmaWVzIiB2aXNpYmlsaXR5PSJwdWJsaWMiIHR5cGU9IlN5c01MLVJlcXVpcmVtZW50cy1SZXF1aXJlbWVudCIgaXNEZXJpdmVkPSJ0cnVlIj4NCisgICAgICAgICAgPG93bmVkQ29tbWVudCB4bWk6aWQ9IlN5c01MLURlcHJlY2F0ZWRFbGVtZW50cy1SZXF1aXJlbWVudFJlbGF0ZWQtVmVyaWZpZXMtb3duZWRDb21tZW50IiBhbm5vdGF0ZWRFbGVtZW50PSJTeXNNTC1EZXByZWNhdGVkRWxlbWVudHMtUmVxdWlyZW1lbnRSZWxhdGVkLVZlcmlmaWVzIj4NCisgICAgICAgICAgICA8Ym9keT5EZXJpdmVkIGZyb20gYWxsIHJlcXVpcmVtZW50cyB0aGF0IGFyZSB0aGUgc3VwcGxpZXIgb2YgYSDCq3ZlcmlmecK7IHJlbGF0aW9uc2hpcCBmb3Igd2hpY2ggdGhpcyBlbGVtZW50IGlzIGEgY2xpZW50LjwvYm9keT4NCisgICAgICAgICAgPC9vd25lZENvbW1lbnQ+DQorICAgICAgICAgIDxsb3dlclZhbHVlIHhtaTp0eXBlPSJ1bWw6TGl0ZXJhbFN0cmluZyIgeG1pOmlkPSJTeXNNTC1EZXByZWNhdGVkRWxlbWVudHMtUmVxdWlyZW1lbnRSZWxhdGVkLVZlcmlmaWVzLWxvd2VyVmFsdWUiIG5hbWU9IiIgdmFsdWU9IioiLz4NCisgICAgICAgICAgPHVwcGVyVmFsdWUgeG1pOnR5cGU9InVtbDpMaXRlcmFsVW5saW1pdGVkTmF0dXJhbCIgeG1pOmlkPSJTeXNNTC1EZXByZWNhdGVkRWxlbWVudHMtUmVxdWlyZW1lbnRSZWxhdGVkLVZlcmlmaWVzLXVwcGVyVmFsdWUiIG5hbWU9IiIgdmFsdWU9IioiLz4NCisgICAgICAgIDwvb3duZWRBdHRyaWJ1dGU+DQorICAgICAgPC9wYWNrYWdlZEVsZW1lbnQ+DQorICAgICAgPHBhY2thZ2VkRWxlbWVudCB4bWk6dHlwZT0idW1sOkV4dGVuc2lvbiIgeG1pOmlkPSJTeXNNTC1EZXByZWNhdGVkRWxlbWVudHMtRV9leHRlbnNpb25fUmVxdWlyZW1lbnRSZWxhdGVkX2Jhc2VfTmFtZWRFbGVtZW50IiBuYW1lPSJFX2V4dGVuc2lvbl9SZXF1aXJlbWVudFJlbGF0ZWRfYmFzZV9OYW1lZEVsZW1lbnQiIG1lbWJlckVuZD0iU3lzTUwtRGVwcmVjYXRlZEVsZW1lbnRzLUVfZXh0ZW5zaW9uX1JlcXVpcmVtZW50UmVsYXRlZF9iYXNlX05hbWVkRWxlbWVudC1leHRlbnNpb25fIFN5c01MLURlcHJlY2F0ZWRFbGVtZW50cy1SZXF1aXJlbWVudFJlbGF0ZWQtYmFzZV9OYW1lZEVsZW1lbnQiIG5hdmlnYWJsZU93bmVkRW5kPSJTeXNNTC1EZXByZWNhdGVkRWxlbWVudHMtRV9leHRlbnNpb25fUmVxdWlyZW1lbnRSZWxhdGVkX2Jhc2VfTmFtZWRFbGVtZW50LWV4dGVuc2lvbl8iPg0KKyAgICAgICAgPG93bmVkRW5kIHhtaTp0eXBlPSJ1bWw6RXh0ZW5zaW9uRW5kIiB4bWk6aWQ9IlN5c01MLURlcHJlY2F0ZWRFbGVtZW50cy1FX2V4dGVuc2lvbl9SZXF1aXJlbWVudFJlbGF0ZWRfYmFzZV9OYW1lZEVsZW1lbnQtZXh0ZW5zaW9uXyIgbmFtZT0iZXh0ZW5zaW9uXyIgdmlzaWJpbGl0eT0icHVibGljIiB0eXBlPSJTeXNNTC1EZXByZWNhdGVkRWxlbWVudHMtUmVxdWlyZW1lbnRSZWxhdGVkIiBhZ2dyZWdhdGlvbj0iY29tcG9zaXRlIiBhc3NvY2lhdGlvbj0iU3lzTUwtRGVwcmVjYXRlZEVsZW1lbnRzLUVfZXh0ZW5zaW9uX1JlcXVpcmVtZW50UmVsYXRlZF9iYXNlX05hbWVkRWxlbWVudCI+DQorICAgICAgICAgIDxsb3dlclZhbHVlIHhtaTp0eXBlPSJ1bWw6TGl0ZXJhbEludGVnZXIiIHhtaTppZD0iU3lzTUwtRGVwcmVjYXRlZEVsZW1lbnRzLUVfZXh0ZW5zaW9uX1JlcXVpcmVtZW50UmVsYXRlZF9iYXNlX05hbWVkRWxlbWVudC1leHRlbnNpb25fLWxvd2VyVmFsdWUiIG5hbWU9IiIvPg0KKyAgICAgICAgICA8dXBwZXJWYWx1ZSB4bWk6dHlwZT0idW1sOkxpdGVyYWxJbnRlZ2VyIiB4bWk6aWQ9IlN5c01MLURlcHJlY2F0ZWRFbGVtZW50cy1FX2V4dGVuc2lvbl9SZXF1aXJlbWVudFJlbGF0ZWRfYmFzZV9OYW1lZEVsZW1lbnQtZXh0ZW5zaW9uXy11cHBlclZhbHVlIiBuYW1lPSIiIHZhbHVlPSIxIi8+DQorICAgICAgICA8L293bmVkRW5kPg0KKyAgICAgIDwvcGFja2FnZWRFbGVtZW50Pg0KKyAgICAgIDxwYWNrYWdlZEVsZW1lbnQgeG1pOnR5cGU9InVtbDpTdGVyZW90eXBlIiB4bWk6aWQ9IlN5c01MLURlcHJlY2F0ZWRFbGVtZW50cy1EZXByZWNhdGVkIiBuYW1lPSJEZXByZWNhdGVkIj4NCisgICAgICAgIDxvd25lZEF0dHJpYnV0ZSB4bWk6aWQ9IlN5c01MLURlcHJlY2F0ZWRFbGVtZW50cy1EZXByZWNhdGVkLWJhc2VfVmFsdWVTcGVjaWZpY2F0aW9uIiBuYW1lPSJiYXNlX1ZhbHVlU3BlY2lmaWNhdGlvbiIgdmlzaWJpbGl0eT0icHVibGljIiBhc3NvY2lhdGlvbj0iU3lzTUwtRGVwcmVjYXRlZEVsZW1lbnRzLUVfYmFzZV9WYWx1ZVNwZWNpZmljYXRpb25fZXh0ZW5zaW9uX0RlcHJlY2F0ZWQiPg0KKyAgICAgICAgICA8dHlwZSB4bWk6dHlwZT0idW1sOkNsYXNzIiBocmVmPSJwYXRobWFwOi8vVU1MX01FVEFNT0RFTFMvVU1MLm1ldGFtb2RlbC51bWwjVmFsdWVTcGVjaWZpY2F0aW9uIi8+DQorICAgICAgICA8L293bmVkQXR0cmlidXRlPg0KKyAgICAgICAgPG93bmVkQXR0cmlidXRlIHhtaTppZD0iU3lzTUwtRGVwcmVjYXRlZEVsZW1lbnRzLURlcHJlY2F0ZWQtYmFzZV9Qcm9wZXJ0eSIgbmFtZT0iYmFzZV9Qcm9wZXJ0eSIgdmlzaWJpbGl0eT0icHVibGljIiBhc3NvY2lhdGlvbj0iU3lzTUwtRGVwcmVjYXRlZEVsZW1lbnRzLUVfYmFzZV9Qcm9wZXJ0eV9leHRlbnNpb25fRGVwcmVjYXRlZCI+DQorICAgICAgICAgIDx0eXBlIHhtaTp0eXBlPSJ1bWw6Q2xhc3MiIGhyZWY9InBhdGhtYXA6Ly9VTUxfTUVUQU1PREVMUy9VTUwubWV0YW1vZGVsLnVtbCNQcm9wZXJ0eSIvPg0KKyAgICAgICAgPC9vd25lZEF0dHJpYnV0ZT4NCisgICAgICAgIDxvd25lZEF0dHJpYnV0ZSB4bWk6aWQ9IlN5c01MLURlcHJlY2F0ZWRFbGVtZW50cy1EZXByZWNhdGVkLWJhc2VfSW5zdGFuY2VTcGVjaWZpY2F0aW9uIiBuYW1lPSJiYXNlX0luc3RhbmNlU3BlY2lmaWNhdGlvbiIgdmlzaWJpbGl0eT0icHVibGljIiBhc3NvY2lhdGlvbj0iU3lzTUwtRGVwcmVjYXRlZEVsZW1lbnRzLUVfYmFzZV9JbnN0YW5jZVNwZWNpZmljYXRpb25fZXh0ZW5zaW9uX0RlcHJlY2F0ZWQiPg0KKyAgICAgICAgICA8dHlwZSB4bWk6dHlwZT0idW1sOkNsYXNzIiBocmVmPSJwYXRobWFwOi8vVU1MX01FVEFNT0RFTFMvVU1MLm1ldGFtb2RlbC51bWwjSW5zdGFuY2VTcGVjaWZpY2F0aW9uIi8+DQorICAgICAgICA8L293bmVkQXR0cmlidXRlPg0KKyAgICAgICAgPG93bmVkQXR0cmlidXRlIHhtaTppZD0iU3lzTUwtRGVwcmVjYXRlZEVsZW1lbnRzLURlcHJlY2F0ZWQtYmFzZV9DbGFzcyIgbmFtZT0iYmFzZV9DbGFzcyIgdmlzaWJpbGl0eT0icHVibGljIiBhc3NvY2lhdGlvbj0iU3lzTUwtRGVwcmVjYXRlZEVsZW1lbnRzLUVfYmFzZV9DbGFzc19leHRlbnNpb25fRGVwcmVjYXRlZCI+DQorICAgICAgICAgIDx0eXBlIHhtaTp0eXBlPSJ1bWw6Q2xhc3MiIGhyZWY9InBhdGhtYXA6Ly9VTUxfTUVUQU1PREVMUy9VTUwubWV0YW1vZGVsLnVtbCNDbGFzcyIvPg0KKyAgICAgICAgPC9vd25lZEF0dHJpYnV0ZT4NCisgICAgICAgIDxvd25lZEF0dHJpYnV0ZSB4bWk6aWQ9IlN5c01MLURlcHJlY2F0ZWRFbGVtZW50cy1EZXByZWNhdGVkLWJhc2VfQXNzb2NpYXRpb24iIG5hbWU9ImJhc2VfQXNzb2NpYXRpb24iIHZpc2liaWxpdHk9InB1YmxpYyIgYXNzb2NpYXRpb249IlN5c01MLURlcHJlY2F0ZWRFbGVtZW50cy1FX2Jhc2VfQXNzb2NpYXRpb25fZXh0ZW5zaW9uX0RlcHJlY2F0ZWQiPg0KKyAgICAgICAgICA8dHlwZSB4bWk6dHlwZT0idW1sOkNsYXNzIiBocmVmPSJwYXRobWFwOi8vVU1MX01FVEFNT0RFTFMvVU1MLm1ldGFtb2RlbC51bWwjQXNzb2NpYXRpb24iLz4NCisgICAgICAgIDwvb3duZWRBdHRyaWJ1dGU+DQorICAgICAgICA8b3duZWRBdHRyaWJ1dGUgeG1pOmlkPSJTeXNNTC1EZXByZWNhdGVkRWxlbWVudHMtRGVwcmVjYXRlZC1kZXByZWNhdGVkUmVhc29uIiBuYW1lPSJkZXByZWNhdGVkUmVhc29uIiB2aXNpYmlsaXR5PSJwdWJsaWMiPg0KKyAgICAgICAgICA8dHlwZSB4bWk6dHlwZT0idW1sOlByaW1pdGl2ZVR5cGUiIGhyZWY9InBhdGhtYXA6Ly9VTUxfTElCUkFSSUVTL1VNTFByaW1pdGl2ZVR5cGVzLmxpYnJhcnkudW1sI1N0cmluZyIvPg0KKyAgICAgICAgICA8bG93ZXJWYWx1ZSB4bWk6dHlwZT0idW1sOkxpdGVyYWxJbnRlZ2VyIiB4bWk6aWQ9IlN5c01MLURlcHJlY2F0ZWRFbGVtZW50cy1EZXByZWNhdGVkLWRlcHJlY2F0ZWRSZWFzb24tbG93ZXJWYWx1ZSIgbmFtZT0iIiB2YWx1ZT0iMSIvPg0KKyAgICAgICAgICA8dXBwZXJWYWx1ZSB4bWk6dHlwZT0idW1sOkxpdGVyYWxVbmxpbWl0ZWROYXR1cmFsIiB4bWk6aWQ9IlN5c01MLURlcHJlY2F0ZWRFbGVtZW50cy1EZXByZWNhdGVkLWRlcHJlY2F0ZWRSZWFzb24tdXBwZXJWYWx1ZSIgbmFtZT0iIiB2YWx1ZT0iMSIvPg0KKyAgICAgICAgPC9vd25lZEF0dHJpYnV0ZT4NCisgICAgICAgIDxvd25lZEF0dHJpYnV0ZSB4bWk6aWQ9IlN5c01MLURlcHJlY2F0ZWRFbGVtZW50cy1EZXByZWNhdGVkLWJhc2VfR2VuZXJhbGl6YXRpb24iIG5hbWU9ImJhc2VfR2VuZXJhbGl6YXRpb24iIHZpc2liaWxpdHk9InB1YmxpYyIgYXNzb2NpYXRpb249IlN5c01MLURlcHJlY2F0ZWRFbGVtZW50cy1FX2Jhc2VfR2VuZXJhbGl6YXRpb25fZXh0ZW5zaW9uX0RlcHJlY2F0ZWQiPg0KKyAgICAgICAgICA8dHlwZSB4bWk6dHlwZT0idW1sOkNsYXNzIiBocmVmPSJwYXRobWFwOi8vVU1MX01FVEFNT0RFTFMvVU1MLm1ldGFtb2RlbC51bWwjR2VuZXJhbGl6YXRpb24iLz4NCisgICAgICAgIDwvb3duZWRBdHRyaWJ1dGU+DQorICAgICAgICA8b3duZWRBdHRyaWJ1dGUgeG1pOmlkPSJTeXNNTC1EZXByZWNhdGVkRWxlbWVudHMtRGVwcmVjYXRlZC1iYXNlX0RhdGFUeXBlIiBuYW1lPSJiYXNlX0RhdGFUeXBlIiB2aXNpYmlsaXR5PSJwdWJsaWMiIGFzc29jaWF0aW9uPSJTeXNNTC1EZXByZWNhdGVkRWxlbWVudHMtcGFja2FnZWRFbGVtZW50Ij4NCisgICAgICAgICAgPHR5cGUgeG1pOnR5cGU9InVtbDpDbGFzcyIgaHJlZj0icGF0aG1hcDovL1VNTF9NRVRBTU9ERUxTL1VNTC5tZXRhbW9kZWwudW1sI0RhdGFUeXBlIi8+DQorICAgICAgICA8L293bmVkQXR0cmlidXRlPg0KKyAgICAgIDwvcGFja2FnZWRFbGVtZW50Pg0KKyAgICAgIDxwYWNrYWdlZEVsZW1lbnQgeG1pOnR5cGU9InVtbDpFeHRlbnNpb24iIHhtaTppZD0iU3lzTUwtRGVwcmVjYXRlZEVsZW1lbnRzLUVfYmFzZV9WYWx1ZVNwZWNpZmljYXRpb25fZXh0ZW5zaW9uX0RlcHJlY2F0ZWQiIG5hbWU9IkVfYmFzZV9WYWx1ZVNwZWNpZmljYXRpb25fZXh0ZW5zaW9uX0RlcHJlY2F0ZWQiIG1lbWJlckVuZD0iU3lzTUwtRGVwcmVjYXRlZEVsZW1lbnRzLURlcHJlY2F0ZWQtYmFzZV9WYWx1ZVNwZWNpZmljYXRpb24gU3lzTUwtRGVwcmVjYXRlZEVsZW1lbnRzLUVfYmFzZV9WYWx1ZVNwZWNpZmljYXRpb25fZXh0ZW5zaW9uX0RlcHJlY2F0ZWQtZXh0ZW5zaW9uX0RlcHJlY2F0ZWQiIG5hdmlnYWJsZU93bmVkRW5kPSJTeXNNTC1EZXByZWNhdGVkRWxlbWVudHMtRV9iYXNlX1ZhbHVlU3BlY2lmaWNhdGlvbl9leHRlbnNpb25fRGVwcmVjYXRlZC1leHRlbnNpb25fRGVwcmVjYXRlZCI+DQorICAgICAgICA8b3duZWRFbmQgeG1pOnR5cGU9InVtbDpFeHRlbnNpb25FbmQiIHhtaTppZD0iU3lzTUwtRGVwcmVjYXRlZEVsZW1lbnRzLUVfYmFzZV9WYWx1ZVNwZWNpZmljYXRpb25fZXh0ZW5zaW9uX0RlcHJlY2F0ZWQtZXh0ZW5zaW9uX0RlcHJlY2F0ZWQiIG5hbWU9ImV4dGVuc2lvbl9EZXByZWNhdGVkIiB2aXNpYmlsaXR5PSJwdWJsaWMiIHR5cGU9IlN5c01MLURlcHJlY2F0ZWRFbGVtZW50cy1EZXByZWNhdGVkIiBhZ2dyZWdhdGlvbj0iY29tcG9zaXRlIiBhc3NvY2lhdGlvbj0iU3lzTUwtRGVwcmVjYXRlZEVsZW1lbnRzLUVfYmFzZV9WYWx1ZVNwZWNpZmljYXRpb25fZXh0ZW5zaW9uX0RlcHJlY2F0ZWQiPg0KKyAgICAgICAgICA8bG93ZXJWYWx1ZSB4bWk6dHlwZT0idW1sOkxpdGVyYWxJbnRlZ2VyIiB4bWk6aWQ9IlN5c01MLURlcHJlY2F0ZWRFbGVtZW50cy1FX2Jhc2VfVmFsdWVTcGVjaWZpY2F0aW9uX2V4dGVuc2lvbl9EZXByZWNhdGVkLWV4dGVuc2lvbl9EZXByZWNhdGVkLWxvd2VyVmFsdWUiIG5hbWU9IiIvPg0KKyAgICAgICAgICA8dXBwZXJWYWx1ZSB4bWk6dHlwZT0idW1sOkxpdGVyYWxVbmxpbWl0ZWROYXR1cmFsIiB4bWk6aWQ9IlN5c01MLURlcHJlY2F0ZWRFbGVtZW50cy1FX2Jhc2VfVmFsdWVTcGVjaWZpY2F0aW9uX2V4dGVuc2lvbl9EZXByZWNhdGVkLWV4dGVuc2lvbl9EZXByZWNhdGVkLXVwcGVyVmFsdWUiIG5hbWU9IiIgdmFsdWU9IjEiLz4NCisgICAgICAgIDwvb3duZWRFbmQ+DQorICAgICAgPC9wYWNrYWdlZEVsZW1lbnQ+DQorICAgICAgPHBhY2thZ2VkRWxlbWVudCB4bWk6dHlwZT0idW1sOkV4dGVuc2lvbiIgeG1pOmlkPSJTeXNNTC1EZXByZWNhdGVkRWxlbWVudHMtRV9iYXNlX1Byb3BlcnR5X2V4dGVuc2lvbl9EZXByZWNhdGVkIiBuYW1lPSJFX2Jhc2VfUHJvcGVydHlfZXh0ZW5zaW9uX0RlcHJlY2F0ZWQiIG1lbWJlckVuZD0iU3lzTUwtRGVwcmVjYXRlZEVsZW1lbnRzLURlcHJlY2F0ZWQtYmFzZV9Qcm9wZXJ0eSBTeXNNTC1EZXByZWNhdGVkRWxlbWVudHMtRV9iYXNlX1Byb3BlcnR5X2V4dGVuc2lvbl9EZXByZWNhdGVkLWV4dGVuc2lvbl9EZXByZWNhdGVkIiBuYXZpZ2FibGVPd25lZEVuZD0iU3lzTUwtRGVwcmVjYXRlZEVsZW1lbnRzLUVfYmFzZV9Qcm9wZXJ0eV9leHRlbnNpb25fRGVwcmVjYXRlZC1leHRlbnNpb25fRGVwcmVjYXRlZCI+DQorICAgICAgICA8b3duZWRFbmQgeG1pOnR5cGU9InVtbDpFeHRlbnNpb25FbmQiIHhtaTppZD0iU3lzTUwtRGVwcmVjYXRlZEVsZW1lbnRzLUVfYmFzZV9Qcm9wZXJ0eV9leHRlbnNpb25fRGVwcmVjYXRlZC1leHRlbnNpb25fRGVwcmVjYXRlZCIgbmFtZT0iZXh0ZW5zaW9uX0RlcHJlY2F0ZWQiIHZpc2liaWxpdHk9InB1YmxpYyIgdHlwZT0iU3lzTUwtRGVwcmVjYXRlZEVsZW1lbnRzLURlcHJlY2F0ZWQiIGFnZ3JlZ2F0aW9uPSJjb21wb3NpdGUiIGFzc29jaWF0aW9uPSJTeXNNTC1EZXByZWNhdGVkRWxlbWVudHMtRV9iYXNlX1Byb3BlcnR5X2V4dGVuc2lvbl9EZXByZWNhdGVkIj4NCisgICAgICAgICAgPGxvd2VyVmFsdWUgeG1pOnR5cGU9InVtbDpMaXRlcmFsSW50ZWdlciIgeG1pOmlkPSJTeXNNTC1EZXByZWNhdGVkRWxlbWVudHMtRV9iYXNlX1Byb3BlcnR5X2V4dGVuc2lvbl9EZXByZWNhdGVkLWV4dGVuc2lvbl9EZXByZWNhdGVkLWxvd2VyVmFsdWUiIG5hbWU9IiIvPg0KKyAgICAgICAgICA8dXBwZXJWYWx1ZSB4bWk6dHlwZT0idW1sOkxpdGVyYWxVbmxpbWl0ZWROYXR1cmFsIiB4bWk6aWQ9IlN5c01MLURlcHJlY2F0ZWRFbGVtZW50cy1FX2Jhc2VfUHJvcGVydHlfZXh0ZW5zaW9uX0RlcHJlY2F0ZWQtZXh0ZW5zaW9uX0RlcHJlY2F0ZWQtdXBwZXJWYWx1ZSIgbmFtZT0iIiB2YWx1ZT0iMSIvPg0KKyAgICAgICAgPC9vd25lZEVuZD4NCisgICAgICA8L3BhY2thZ2VkRWxlbWVudD4NCisgICAgICA8cGFja2FnZWRFbGVtZW50IHhtaTp0eXBlPSJ1bWw6RXh0ZW5zaW9uIiB4bWk6aWQ9IlN5c01MLURlcHJlY2F0ZWRFbGVtZW50cy1FX2Jhc2VfSW5zdGFuY2VTcGVjaWZpY2F0aW9uX2V4dGVuc2lvbl9EZXByZWNhdGVkIiBuYW1lPSJFX2Jhc2VfSW5zdGFuY2VTcGVjaWZpY2F0aW9uX2V4dGVuc2lvbl9EZXByZWNhdGVkIiBtZW1iZXJFbmQ9IlN5c01MLURlcHJlY2F0ZWRFbGVtZW50cy1EZXByZWNhdGVkLWJhc2VfSW5zdGFuY2VTcGVjaWZpY2F0aW9uIFN5c01MLURlcHJlY2F0ZWRFbGVtZW50cy1FX2Jhc2VfSW5zdGFuY2VTcGVjaWZpY2F0aW9uX2V4dGVuc2lvbl9EZXByZWNhdGVkLWV4dGVuc2lvbl9EZXByZWNhdGVkIiBuYXZpZ2FibGVPd25lZEVuZD0iU3lzTUwtRGVwcmVjYXRlZEVsZW1lbnRzLUVfYmFzZV9JbnN0YW5jZVNwZWNpZmljYXRpb25fZXh0ZW5zaW9uX0RlcHJlY2F0ZWQtZXh0ZW5zaW9uX0RlcHJlY2F0ZWQiPg0KKyAgICAgICAgPG93bmVkRW5kIHhtaTp0eXBlPSJ1bWw6RXh0ZW5zaW9uRW5kIiB4bWk6aWQ9IlN5c01MLURlcHJlY2F0ZWRFbGVtZW50cy1FX2Jhc2VfSW5zdGFuY2VTcGVjaWZpY2F0aW9uX2V4dGVuc2lvbl9EZXByZWNhdGVkLWV4dGVuc2lvbl9EZXByZWNhdGVkIiBuYW1lPSJleHRlbnNpb25fRGVwcmVjYXRlZCIgdmlzaWJpbGl0eT0icHVibGljIiB0eXBlPSJTeXNNTC1EZXByZWNhdGVkRWxlbWVudHMtRGVwcmVjYXRlZCIgYWdncmVnYXRpb249ImNvbXBvc2l0ZSIgYXNzb2NpYXRpb249IlN5c01MLURlcHJlY2F0ZWRFbGVtZW50cy1FX2Jhc2VfSW5zdGFuY2VTcGVjaWZpY2F0aW9uX2V4dGVuc2lvbl9EZXByZWNhdGVkIj4NCisgICAgICAgICAgPGxvd2VyVmFsdWUgeG1pOnR5cGU9InVtbDpMaXRlcmFsSW50ZWdlciIgeG1pOmlkPSJTeXNNTC1EZXByZWNhdGVkRWxlbWVudHMtRV9iYXNlX0luc3RhbmNlU3BlY2lmaWNhdGlvbl9leHRlbnNpb25fRGVwcmVjYXRlZC1leHRlbnNpb25fRGVwcmVjYXRlZC1sb3dlclZhbHVlIiBuYW1lPSIiLz4NCisgICAgICAgICAgPHVwcGVyVmFsdWUgeG1pOnR5cGU9InVtbDpMaXRlcmFsVW5saW1pdGVkTmF0dXJhbCIgeG1pOmlkPSJTeXNNTC1EZXByZWNhdGVkRWxlbWVudHMtRV9iYXNlX0luc3RhbmNlU3BlY2lmaWNhdGlvbl9leHRlbnNpb25fRGVwcmVjYXRlZC1leHRlbnNpb25fRGVwcmVjYXRlZC11cHBlclZhbHVlIiBuYW1lPSIiIHZhbHVlPSIxIi8+DQorICAgICAgICA8L293bmVkRW5kPg0KKyAgICAgIDwvcGFja2FnZWRFbGVtZW50Pg0KKyAgICAgIDxwYWNrYWdlZEVsZW1lbnQgeG1pOnR5cGU9InVtbDpFeHRlbnNpb24iIHhtaTppZD0iU3lzTUwtRGVwcmVjYXRlZEVsZW1lbnRzLUVfYmFzZV9DbGFzc19leHRlbnNpb25fRGVwcmVjYXRlZCIgbmFtZT0iRV9iYXNlX0NsYXNzX2V4dGVuc2lvbl9EZXByZWNhdGVkIiBtZW1iZXJFbmQ9IlN5c01MLURlcHJlY2F0ZWRFbGVtZW50cy1EZXByZWNhdGVkLWJhc2VfQ2xhc3MgU3lzTUwtRGVwcmVjYXRlZEVsZW1lbnRzLUVfYmFzZV9DbGFzc19leHRlbnNpb25fRGVwcmVjYXRlZC1leHRlbnNpb25fRGVwcmVjYXRlZCIgbmF2aWdhYmxlT3duZWRFbmQ9IlN5c01MLURlcHJlY2F0ZWRFbGVtZW50cy1FX2Jhc2VfQ2xhc3NfZXh0ZW5zaW9uX0RlcHJlY2F0ZWQtZXh0ZW5zaW9uX0RlcHJlY2F0ZWQiPg0KKyAgICAgICAgPG93bmVkRW5kIHhtaTp0eXBlPSJ1bWw6RXh0ZW5zaW9uRW5kIiB4bWk6aWQ9IlN5c01MLURlcHJlY2F0ZWRFbGVtZW50cy1FX2Jhc2VfQ2xhc3NfZXh0ZW5zaW9uX0RlcHJlY2F0ZWQtZXh0ZW5zaW9uX0RlcHJlY2F0ZWQiIG5hbWU9ImV4dGVuc2lvbl9EZXByZWNhdGVkIiB2aXNpYmlsaXR5PSJwdWJsaWMiIHR5cGU9IlN5c01MLURlcHJlY2F0ZWRFbGVtZW50cy1EZXByZWNhdGVkIiBhZ2dyZWdhdGlvbj0iY29tcG9zaXRlIiBhc3NvY2lhdGlvbj0iU3lzTUwtRGVwcmVjYXRlZEVsZW1lbnRzLUVfYmFzZV9DbGFzc19leHRlbnNpb25fRGVwcmVjYXRlZCI+DQorICAgICAgICAgIDxsb3dlclZhbHVlIHhtaTp0eXBlPSJ1bWw6TGl0ZXJhbEludGVnZXIiIHhtaTppZD0iU3lzTUwtRGVwcmVjYXRlZEVsZW1lbnRzLUVfYmFzZV9DbGFzc19leHRlbnNpb25fRGVwcmVjYXRlZC1leHRlbnNpb25fRGVwcmVjYXRlZC1sb3dlclZhbHVlIiBuYW1lPSIiLz4NCisgICAgICAgICAgPHVwcGVyVmFsdWUgeG1pOnR5cGU9InVtbDpMaXRlcmFsVW5saW1pdGVkTmF0dXJhbCIgeG1pOmlkPSJTeXNNTC1EZXByZWNhdGVkRWxlbWVudHMtRV9iYXNlX0NsYXNzX2V4dGVuc2lvbl9EZXByZWNhdGVkLWV4dGVuc2lvbl9EZXByZWNhdGVkLXVwcGVyVmFsdWUiIG5hbWU9IiIgdmFsdWU9IjEiLz4NCisgICAgICAgIDwvb3duZWRFbmQ+DQorICAgICAgPC9wYWNrYWdlZEVsZW1lbnQ+DQorICAgICAgPHBhY2thZ2VkRWxlbWVudCB4bWk6dHlwZT0idW1sOkV4dGVuc2lvbiIgeG1pOmlkPSJTeXNNTC1EZXByZWNhdGVkRWxlbWVudHMtRV9iYXNlX0Fzc29jaWF0aW9uX2V4dGVuc2lvbl9EZXByZWNhdGVkIiBuYW1lPSJFX2Jhc2VfQXNzb2NpYXRpb25fZXh0ZW5zaW9uX0RlcHJlY2F0ZWQiIG1lbWJlckVuZD0iU3lzTUwtRGVwcmVjYXRlZEVsZW1lbnRzLURlcHJlY2F0ZWQtYmFzZV9Bc3NvY2lhdGlvbiBTeXNNTC1EZXByZWNhdGVkRWxlbWVudHMtRV9iYXNlX0Fzc29jaWF0aW9uX2V4dGVuc2lvbl9EZXByZWNhdGVkLWV4dGVuc2lvbl9EZXByZWNhdGVkIiBuYXZpZ2FibGVPd25lZEVuZD0iU3lzTUwtRGVwcmVjYXRlZEVsZW1lbnRzLUVfYmFzZV9Bc3NvY2lhdGlvbl9leHRlbnNpb25fRGVwcmVjYXRlZC1leHRlbnNpb25fRGVwcmVjYXRlZCI+DQorICAgICAgICA8b3duZWRFbmQgeG1pOnR5cGU9InVtbDpFeHRlbnNpb25FbmQiIHhtaTppZD0iU3lzTUwtRGVwcmVjYXRlZEVsZW1lbnRzLUVfYmFzZV9Bc3NvY2lhdGlvbl9leHRlbnNpb25fRGVwcmVjYXRlZC1leHRlbnNpb25fRGVwcmVjYXRlZCIgbmFtZT0iZXh0ZW5zaW9uX0RlcHJlY2F0ZWQiIHZpc2liaWxpdHk9InB1YmxpYyIgdHlwZT0iU3lzTUwtRGVwcmVjYXRlZEVsZW1lbnRzLURlcHJlY2F0ZWQiIGFnZ3JlZ2F0aW9uPSJjb21wb3NpdGUiIGFzc29jaWF0aW9uPSJTeXNNTC1EZXByZWNhdGVkRWxlbWVudHMtRV9iYXNlX0Fzc29jaWF0aW9uX2V4dGVuc2lvbl9EZXByZWNhdGVkIj4NCisgICAgICAgICAgPGxvd2VyVmFsdWUgeG1pOnR5cGU9InVtbDpMaXRlcmFsSW50ZWdlciIgeG1pOmlkPSJTeXNNTC1EZXByZWNhdGVkRWxlbWVudHMtRV9iYXNlX0Fzc29jaWF0aW9uX2V4dGVuc2lvbl9EZXByZWNhdGVkLWV4dGVuc2lvbl9EZXByZWNhdGVkLWxvd2VyVmFsdWUiIG5hbWU9IiIvPg0KKyAgICAgICAgICA8dXBwZXJWYWx1ZSB4bWk6dHlwZT0idW1sOkxpdGVyYWxVbmxpbWl0ZWROYXR1cmFsIiB4bWk6aWQ9IlN5c01MLURlcHJlY2F0ZWRFbGVtZW50cy1FX2Jhc2VfQXNzb2NpYXRpb25fZXh0ZW5zaW9uX0RlcHJlY2F0ZWQtZXh0ZW5zaW9uX0RlcHJlY2F0ZWQtdXBwZXJWYWx1ZSIgbmFtZT0iIiB2YWx1ZT0iMSIvPg0KKyAgICAgICAgPC9vd25lZEVuZD4NCisgICAgICA8L3BhY2thZ2VkRWxlbWVudD4NCisgICAgICA8cGFja2FnZWRFbGVtZW50IHhtaTp0eXBlPSJ1bWw6RXh0ZW5zaW9uIiB4bWk6aWQ9IlN5c01MLURlcHJlY2F0ZWRFbGVtZW50cy1FX2Jhc2VfR2VuZXJhbGl6YXRpb25fZXh0ZW5zaW9uX0RlcHJlY2F0ZWQiIG5hbWU9IkVfYmFzZV9HZW5lcmFsaXphdGlvbl9leHRlbnNpb25fRGVwcmVjYXRlZCIgbWVtYmVyRW5kPSJTeXNNTC1EZXByZWNhdGVkRWxlbWVudHMtRGVwcmVjYXRlZC1iYXNlX0dlbmVyYWxpemF0aW9uIFN5c01MLURlcHJlY2F0ZWRFbGVtZW50cy1FX2Jhc2VfR2VuZXJhbGl6YXRpb25fZXh0ZW5zaW9uX0RlcHJlY2F0ZWQtZXh0ZW5zaW9uX0RlcHJlY2F0ZWQiIG5hdmlnYWJsZU93bmVkRW5kPSJTeXNNTC1EZXByZWNhdGVkRWxlbWVudHMtRV9iYXNlX0dlbmVyYWxpemF0aW9uX2V4dGVuc2lvbl9EZXByZWNhdGVkLWV4dGVuc2lvbl9EZXByZWNhdGVkIj4NCisgICAgICAgIDxvd25lZEVuZCB4bWk6dHlwZT0idW1sOkV4dGVuc2lvbkVuZCIgeG1pOmlkPSJTeXNNTC1EZXByZWNhdGVkRWxlbWVudHMtRV9iYXNlX0dlbmVyYWxpemF0aW9uX2V4dGVuc2lvbl9EZXByZWNhdGVkLWV4dGVuc2lvbl9EZXByZWNhdGVkIiBuYW1lPSJleHRlbnNpb25fRGVwcmVjYXRlZCIgdmlzaWJpbGl0eT0icHVibGljIiB0eXBlPSJTeXNNTC1EZXByZWNhdGVkRWxlbWVudHMtRGVwcmVjYXRlZCIgYWdncmVnYXRpb249ImNvbXBvc2l0ZSIgYXNzb2NpYXRpb249IlN5c01MLURlcHJlY2F0ZWRFbGVtZW50cy1FX2Jhc2VfR2VuZXJhbGl6YXRpb25fZXh0ZW5zaW9uX0RlcHJlY2F0ZWQiPg0KKyAgICAgICAgICA8bG93ZXJWYWx1ZSB4bWk6dHlwZT0idW1sOkxpdGVyYWxJbnRlZ2VyIiB4bWk6aWQ9IlN5c01MLURlcHJlY2F0ZWRFbGVtZW50cy1FX2Jhc2VfR2VuZXJhbGl6YXRpb25fZXh0ZW5zaW9uX0RlcHJlY2F0ZWQtZXh0ZW5zaW9uX0RlcHJlY2F0ZWQtbG93ZXJWYWx1ZSIgbmFtZT0iIi8+DQorICAgICAgICAgIDx1cHBlclZhbHVlIHhtaTp0eXBlPSJ1bWw6TGl0ZXJhbFVubGltaXRlZE5hdHVyYWwiIHhtaTppZD0iU3lzTUwtRGVwcmVjYXRlZEVsZW1lbnRzLUVfYmFzZV9HZW5lcmFsaXphdGlvbl9leHRlbnNpb25fRGVwcmVjYXRlZC1leHRlbnNpb25fRGVwcmVjYXRlZC11cHBlclZhbHVlIiBuYW1lPSIiIHZhbHVlPSIxIi8+DQorICAgICAgICA8L293bmVkRW5kPg0KKyAgICAgIDwvcGFja2FnZWRFbGVtZW50Pg0KKyAgICAgIDxwYWNrYWdlZEVsZW1lbnQgeG1pOnR5cGU9InVtbDpFeHRlbnNpb24iIHhtaTppZD0iU3lzTUwtRGVwcmVjYXRlZEVsZW1lbnRzLXBhY2thZ2VkRWxlbWVudCIgbmFtZT0iIiBtZW1iZXJFbmQ9IlN5c01MLURlcHJlY2F0ZWRFbGVtZW50cy1EZXByZWNhdGVkLWJhc2VfRGF0YVR5cGUgU3lzTUwtRGVwcmVjYXRlZEVsZW1lbnRzLXBhY2thZ2VkRWxlbWVudC1leHRlbnNpb25fRGVwcmVjYXRlZCIgbmF2aWdhYmxlT3duZWRFbmQ9IlN5c01MLURlcHJlY2F0ZWRFbGVtZW50cy1wYWNrYWdlZEVsZW1lbnQtZXh0ZW5zaW9uX0RlcHJlY2F0ZWQiPg0KKyAgICAgICAgPG93bmVkRW5kIHhtaTp0eXBlPSJ1bWw6RXh0ZW5zaW9uRW5kIiB4bWk6aWQ9IlN5c01MLURlcHJlY2F0ZWRFbGVtZW50cy1wYWNrYWdlZEVsZW1lbnQtZXh0ZW5zaW9uX0RlcHJlY2F0ZWQiIG5hbWU9ImV4dGVuc2lvbl9EZXByZWNhdGVkIiB2aXNpYmlsaXR5PSJwdWJsaWMiIHR5cGU9IlN5c01MLURlcHJlY2F0ZWRFbGVtZW50cy1EZXByZWNhdGVkIiBhZ2dyZWdhdGlvbj0iY29tcG9zaXRlIiBhc3NvY2lhdGlvbj0iU3lzTUwtRGVwcmVjYXRlZEVsZW1lbnRzLXBhY2thZ2VkRWxlbWVudCI+DQorICAgICAgICAgIDxsb3dlclZhbHVlIHhtaTp0eXBlPSJ1bWw6TGl0ZXJhbEludGVnZXIiIHhtaTppZD0iU3lzTUwtRGVwcmVjYXRlZEVsZW1lbnRzLXBhY2thZ2VkRWxlbWVudC1leHRlbnNpb25fRGVwcmVjYXRlZC1sb3dlclZhbHVlIiBuYW1lPSIiLz4NCisgICAgICAgICAgPHVwcGVyVmFsdWUgeG1pOnR5cGU9InVtbDpMaXRlcmFsVW5saW1pdGVkTmF0dXJhbCIgeG1pOmlkPSJTeXNNTC1EZXByZWNhdGVkRWxlbWVudHMtcGFja2FnZWRFbGVtZW50LWV4dGVuc2lvbl9EZXByZWNhdGVkLXVwcGVyVmFsdWUiIG5hbWU9IiIgdmFsdWU9IjEiLz4NCisgICAgICAgIDwvb3duZWRFbmQ+DQorICAgICAgPC9wYWNrYWdlZEVsZW1lbnQ+DQorICAgIDwvcGFja2FnZWRFbGVtZW50Pg0KKyAgICA8cHJvZmlsZUFwcGxpY2F0aW9uIHhtaTppZD0iX2FlRjI4SnZrRWVTcHg1Q1VtTFlaLWciPg0KKyAgICAgIDxlQW5ub3RhdGlvbnMgeG1pOmlkPSJfYWVMOWtKdmtFZVNweDVDVW1MWVotZyIgc291cmNlPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3VtbDIvMi4wLjAvVU1MIj4NCisgICAgICAgIDxyZWZlcmVuY2VzIHhtaTp0eXBlPSJlY29yZTpFUGFja2FnZSIgaHJlZj0icGF0aG1hcDovL1VNTF9QUk9GSUxFUy9FY29yZS5wcm9maWxlLnVtbCNfejFPRmNIanFFZHk4UzRDcjhSY19OQSIvPg0KKyAgICAgIDwvZUFubm90YXRpb25zPg0KKyAgICAgIDxhcHBsaWVkUHJvZmlsZSBocmVmPSJwYXRobWFwOi8vVU1MX1BST0ZJTEVTL0Vjb3JlLnByb2ZpbGUudW1sI18wIi8+DQorICAgIDwvcHJvZmlsZUFwcGxpY2F0aW9uPg0KKyAgPC91bWw6UHJvZmlsZT4NCisgIDxFY29yZTpFUGFja2FnZSB4bWk6aWQ9Il9kWmZSRUp2a0VlU3B4NUNVbUxZWi1nIiBiYXNlX1BhY2thZ2U9IlN5c01MLUJsb2NrcyIgcGFja2FnZU5hbWU9ImJsb2NrcyIgbnNQcmVmaXg9IkJsb2NrcyIgbnNVUkk9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvcGFweXJ1cy8xLjQvU3lzTUwvQmxvY2tzIiBiYXNlUGFja2FnZT0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0IiBwcmVmaXg9ImJsb2NrcyIvPg0KKyAgPEVjb3JlOkVQYWNrYWdlIHhtaTppZD0iX2ZHTGNZSnZrRWVTcHg1Q1VtTFlaLWciIGJhc2VfUGFja2FnZT0iU3lzTUwtUG9ydHNfdTAwMjZGbG93cyIgcGFja2FnZU5hbWU9InBvcnRhbmRmbG93cyIgbnNQcmVmaXg9IlBvcnRBbmRGbG93cyIgbnNVUkk9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvcGFweXJ1cy8xLjQvU3lzTUwvUG9ydEFuZEZsb3dzIiBiYXNlUGFja2FnZT0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0IiBwcmVmaXg9InBvcnRhbmRmbG93cyIvPg0KKyAgPEVjb3JlOkVQYWNrYWdlIHhtaTppZD0iX2Z5YTNVSnZrRWVTcHg1Q1VtTFlaLWciIGJhc2VfUGFja2FnZT0iU3lzTUwtQWN0aXZpdGllcyIgcGFja2FnZU5hbWU9ImFjdGl2aXRpZXMiIG5zUHJlZml4PSJBY3Rpdml0aWVzIiBuc1VSST0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9wYXB5cnVzLzEuNC9TeXNNTC9BY3Rpdml0aWVzIiBiYXNlUGFja2FnZT0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0IiBwcmVmaXg9ImFjdGl2aXRpZXMiLz4NCisgIDxFY29yZTpFUGFja2FnZSB4bWk6aWQ9Il9nUXhuUUp2a0VlU3B4NUNVbUxZWi1nIiBiYXNlX1BhY2thZ2U9IlN5c01MLU1vZGVsRWxlbWVudHMiIHBhY2thZ2VOYW1lPSJtb2RlbGVsZW1lbnRzIiBuc1ByZWZpeD0iTW9kZWxFbGVtZW50cyIgbnNVUkk9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvcGFweXJ1cy8xLjQvU3lzTUwvTW9kZWxFbGVtZW50cyIgYmFzZVBhY2thZ2U9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNCIgcHJlZml4PSJtb2RlbGVsZW1lbnRzIi8+DQorICA8RWNvcmU6RVBhY2thZ2UgeG1pOmlkPSJfZzBlS01KdmtFZVNweDVDVW1MWVotZyIgYmFzZV9QYWNrYWdlPSJTeXNNTC1Db25zdHJhaW50QmxvY2tzIiBwYWNrYWdlTmFtZT0iY29uc3RyYWludGJsb2NrcyIgbnNQcmVmaXg9IkNvbnN0cmFpbnRCbG9ja3MiIG5zVVJJPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3BhcHlydXMvMS40L1N5c01ML0NvbnN0cmFpbnRCbG9ja3MiIGJhc2VQYWNrYWdlPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQiIHByZWZpeD0iY29uc3RyYWludGJsb2NrcyIvPg0KKyAgPEVjb3JlOkVQYWNrYWdlIHhtaTppZD0iX2hVSzk4SnZrRWVTcHg1Q1VtTFlaLWciIGJhc2VfUGFja2FnZT0iU3lzTUwtQWxsb2NhdGlvbnMiIHBhY2thZ2VOYW1lPSJhbGxvY2F0aW9ucyIgbnNQcmVmaXg9IkFsbG9jYXRpb25zIiBuc1VSST0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9wYXB5cnVzLzEuNC9TeXNNTC9BbGxvY2F0aW9ucyIgYmFzZVBhY2thZ2U9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNCIgcHJlZml4PSJhbGxvY2F0aW9ucyIvPg0KKyAgPEVjb3JlOkVQYWNrYWdlIHhtaTppZD0iX2h6WGJZSnZrRWVTcHg1Q1VtTFlaLWciIGJhc2VfUGFja2FnZT0iU3lzTUwtUmVxdWlyZW1lbnRzIiBwYWNrYWdlTmFtZT0icmVxdWlyZW1lbnRzIiBuc1ByZWZpeD0iUmVxdWlyZW1lbnRzIiBuc1VSST0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9wYXB5cnVzLzEuNC9TeXNNTC9SZXF1aXJlbWVudHMiIGJhc2VQYWNrYWdlPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQiIHByZWZpeD0icmVxdWlyZW1lbnRzIi8+DQorICA8RWNvcmU6RVBhY2thZ2UgeG1pOmlkPSJfaVVVTVVKdmtFZVNweDVDVW1MWVotZyIgYmFzZV9QYWNrYWdlPSJTeXNNTC1EZXByZWNhdGVkRWxlbWVudHMiIHBhY2thZ2VOYW1lPSJkZXByZWNhdGVkZWxlbWVudHMiIG5zUHJlZml4PSJEZXByZWNhdGVkRWxlbWVudHMiIG5zVVJJPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3BhcHlydXMvMS40L1N5c01ML0RlcHJlY2F0ZWRFbGVtZW50cyIgYmFzZVBhY2thZ2U9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNCIgcHJlZml4PSJkZXByZWNhdGVkZWxlbWVudHMiLz4NCisgIDxFY29yZTpFUGFja2FnZSB4bWk6aWQ9Il9BYTBsZ0p2b0VlU3B4NUNVbUxZWi1nIiBiYXNlX1BhY2thZ2U9IlN5c01MIiBwYWNrYWdlTmFtZT0ic3lzbWwiIG5zUHJlZml4PSJTeXNNTCIgbnNVUkk9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvcGFweXJ1cy8xLjQvU3lzTUwiIGJhc2VQYWNrYWdlPSJvcmcuZWNsaXBzZS5wYXB5cnVzIiBwcmVmaXg9InN5c21sIi8+DQorPC94bWk6WE1JPg0KZGlmZiAtLWdpdCBhL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0L21vZGVsL1N5c01MTm9uTm9ybWF0aXZlRXh0ZW5zaW9uLnByb2ZpbGUudW1sIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQvbW9kZWwvU3lzTUxOb25Ob3JtYXRpdmVFeHRlbnNpb24ucHJvZmlsZS51bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjY1NjI3NgotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0L21vZGVsL1N5c01MTm9uTm9ybWF0aXZlRXh0ZW5zaW9uLnByb2ZpbGUudW1sCkBAIC0wLDAgKzEsNjUwIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/Pg0KKzx1bWw6UHJvZmlsZSB4bWk6dmVyc2lvbj0iMjAxMzEwMDEiIHhtbG5zOnhtaT0iaHR0cDovL3d3dy5vbWcub3JnL3NwZWMvWE1JLzIwMTMxMDAxIiB4bWxuczp1bWw9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvdW1sMi81LjAuMC9VTUwiIHhtaTppZD0iU3lzTUxOb25Ob3JtYXRpdmVFeHRlbnNpb25zIiBuYW1lPSJTeXNNTE5vbk5vcm1hdGl2ZUV4dGVuc2lvbnMiIFVSST0iaHR0cDovL3d3dy5vbWcub3JnL3NwZWMvU3lzTUwvMjAxMzEyMDEvU3lzTUwiIG1ldGFtb2RlbFJlZmVyZW5jZT0iU3lzTUxOb25Ob3JtYXRpdmVFeHRlbnNpb25zLXBhY2thZ2VJbXBvcnQxIj4NCisgIDxwYWNrYWdlSW1wb3J0IHhtaTppZD0iU3lzTUxOb25Ob3JtYXRpdmVFeHRlbnNpb25zLXBhY2thZ2VJbXBvcnQxIj4NCisgICAgPGltcG9ydGVkUGFja2FnZSB4bWk6dHlwZT0idW1sOk1vZGVsIiBocmVmPSJwYXRobWFwOi8vVU1MX01FVEFNT0RFTFMvVU1MLm1ldGFtb2RlbC51bWwjXzAiLz4NCisgIDwvcGFja2FnZUltcG9ydD4NCisgIDxwYWNrYWdlSW1wb3J0IHhtaTppZD0iU3lzTUxOb25Ob3JtYXRpdmVFeHRlbnNpb25zLXBhY2thZ2VJbXBvcnQyIj4NCisgICAgPGltcG9ydGVkUGFja2FnZSB4bWk6dHlwZT0idW1sOlByb2ZpbGUiIGhyZWY9InBhdGhtYXA6Ly9VTUxfUFJPRklMRVMvU3RhbmRhcmQucHJvZmlsZS51bWwjXzAiLz4NCisgIDwvcGFja2FnZUltcG9ydD4NCisgIDxwYWNrYWdlSW1wb3J0IHhtaTppZD0iU3lzTUxOb25Ob3JtYXRpdmVFeHRlbnNpb25zLXBhY2thZ2VJbXBvcnQzIj4NCisgICAgPGltcG9ydGVkUGFja2FnZSB4bWk6dHlwZT0idW1sOk1vZGVsIiBocmVmPSJwYXRobWFwOi8vVU1MX0xJQlJBUklFUy9VTUxQcmltaXRpdmVUeXBlcy5saWJyYXJ5LnVtbCNfMCIvPg0KKyAgPC9wYWNrYWdlSW1wb3J0Pg0KKyAgPHBhY2thZ2VkRWxlbWVudCB4bWk6dHlwZT0idW1sOlBhY2thZ2UiIHhtaTppZD0iU3lzTUxOb25Ob3JtYXRpdmVFeHRlbnNpb25zLUJsb2NrIiBuYW1lPSJCbG9jayIgVVJJPSIiPg0KKyAgICA8cGFja2FnZWRFbGVtZW50IHhtaTp0eXBlPSJ1bWw6U3RlcmVvdHlwZSIgeG1pOmlkPSJTeXNNTE5vbk5vcm1hdGl2ZUV4dGVuc2lvbnMtQmxvY2stU3lzdGVtIiBuYW1lPSJTeXN0ZW0iPg0KKyAgICAgIDxvd25lZENvbW1lbnQgeG1pOmlkPSJTeXNNTE5vbk5vcm1hdGl2ZUV4dGVuc2lvbnMtQmxvY2stU3lzdGVtLW93bmVkQ29tbWVudCIgYW5ub3RhdGVkRWxlbWVudD0iU3lzTUxOb25Ob3JtYXRpdmVFeHRlbnNpb25zLUJsb2NrLVN5c3RlbSI+DQorICAgICAgICA8Ym9keT5BIFN5c3RlbSBpcyBhbiBhcnRpZmljaWFsIGFydGlmYWN0IGNvbnNpc3Rpbmcgb2YgYmxvY2tzIHRoYXQgcHVyc3VlIGEgY29tbW9uIGdvYWwgdGhhdCBjYW5ub3QgYmUgYWNoaWV2ZWQgYnkgdGhlIHN5c3RlbSdzIGluZGl2aWR1YWwgZWxlbWVudHMuIEEgYmxvY2sgY2FuIGJlIHNvZnR3YXJlLCBoYXJkd2FyZSwgYSBwZXJzb24sIG9yIGFuIGFyYml0cmFyeSB1bml0LjwvYm9keT4NCisgICAgICA8L293bmVkQ29tbWVudD4NCisgICAgICA8Z2VuZXJhbGl6YXRpb24geG1pOmlkPSJTeXNNTE5vbk5vcm1hdGl2ZUV4dGVuc2lvbnMtQmxvY2stU3lzdGVtLWdlbmVyYWxpemF0aW9uIiBpc1N1YnN0aXR1dGFibGU9ImZhbHNlIj4NCisgICAgICAgIDxnZW5lcmFsIHhtaTp0eXBlPSJ1bWw6U3RlcmVvdHlwZSIgaHJlZj0iU3lzTUwucHJvZmlsZS51bWwjU3lzTUwtQmxvY2tzLUJsb2NrIi8+DQorICAgICAgPC9nZW5lcmFsaXphdGlvbj4NCisgICAgICA8b3duZWRBdHRyaWJ1dGUgeG1pOmlkPSJTeXNNTE5vbk5vcm1hdGl2ZUV4dGVuc2lvbnMtQmxvY2stU3lzdGVtLWJhc2VfQ2xhc3MiIG5hbWU9ImJhc2VfQ2xhc3MiIHZpc2liaWxpdHk9InB1YmxpYyIgYXNzb2NpYXRpb249IlN5c01MTm9uTm9ybWF0aXZlRXh0ZW5zaW9ucy1CbG9jay1FX2V4dGVuc2lvbl9TeXN0ZW1fYmFzZV9DbGFzcyI+DQorICAgICAgICA8dHlwZSB4bWk6dHlwZT0idW1sOkNsYXNzIiBocmVmPSJwYXRobWFwOi8vVU1MX01FVEFNT0RFTFMvVU1MLm1ldGFtb2RlbC51bWwjQ2xhc3MiLz4NCisgICAgICA8L293bmVkQXR0cmlidXRlPg0KKyAgICA8L3BhY2thZ2VkRWxlbWVudD4NCisgICAgPHBhY2thZ2VkRWxlbWVudCB4bWk6dHlwZT0idW1sOlN0ZXJlb3R5cGUiIHhtaTppZD0iU3lzTUxOb25Ob3JtYXRpdmVFeHRlbnNpb25zLUJsb2NrLURvbWFpbiIgbmFtZT0iRG9tYWluIj4NCisgICAgICA8b3duZWRDb21tZW50IHhtaTppZD0iU3lzTUxOb25Ob3JtYXRpdmVFeHRlbnNpb25zLUJsb2NrLURvbWFpbi1vd25lZENvbW1lbnQiIGFubm90YXRlZEVsZW1lbnQ9IlN5c01MTm9uTm9ybWF0aXZlRXh0ZW5zaW9ucy1CbG9jay1Eb21haW4iPg0KKyAgICAgICAgPGJvZHk+QSBEb21haW4gYmxvY2sgcmVwcmVzZW50cyBhbiBlbnRpdHksIGEgY29uY2VwdCwgYSBsb2NhdGlvbiwgb3IgYSBwZXJzb24gZnJvbSB0aGUgcmVhbC13b3JsZCBkb21haW4uIEEgZG9tYWluIGJsb2NrIGlzIHBhcnQgb2YgdGhlIHN5c3RlbSBrbm93bGVkZ2UuPC9ib2R5Pg0KKyAgICAgIDwvb3duZWRDb21tZW50Pg0KKyAgICAgIDxnZW5lcmFsaXphdGlvbiB4bWk6aWQ9IlN5c01MTm9uTm9ybWF0aXZlRXh0ZW5zaW9ucy1CbG9jay1Eb21haW4tZ2VuZXJhbGl6YXRpb24iIGlzU3Vic3RpdHV0YWJsZT0iZmFsc2UiPg0KKyAgICAgICAgPGdlbmVyYWwgeG1pOnR5cGU9InVtbDpTdGVyZW90eXBlIiBocmVmPSJTeXNNTC5wcm9maWxlLnVtbCNTeXNNTC1CbG9ja3MtQmxvY2siLz4NCisgICAgICA8L2dlbmVyYWxpemF0aW9uPg0KKyAgICAgIDxvd25lZEF0dHJpYnV0ZSB4bWk6aWQ9IlN5c01MTm9uTm9ybWF0aXZlRXh0ZW5zaW9ucy1CbG9jay1Eb21haW4tYmFzZV9DbGFzcyIgbmFtZT0iYmFzZV9DbGFzcyIgdmlzaWJpbGl0eT0icHVibGljIiBhc3NvY2lhdGlvbj0iU3lzTUxOb25Ob3JtYXRpdmVFeHRlbnNpb25zLUJsb2NrLUVfZXh0ZW5zaW9uX0RvbWFpbl9iYXNlX0NsYXNzIj4NCisgICAgICAgIDx0eXBlIHhtaTp0eXBlPSJ1bWw6Q2xhc3MiIGhyZWY9InBhdGhtYXA6Ly9VTUxfTUVUQU1PREVMUy9VTUwubWV0YW1vZGVsLnVtbCNDbGFzcyIvPg0KKyAgICAgIDwvb3duZWRBdHRyaWJ1dGU+DQorICAgIDwvcGFja2FnZWRFbGVtZW50Pg0KKyAgICA8cGFja2FnZWRFbGVtZW50IHhtaTp0eXBlPSJ1bWw6RXh0ZW5zaW9uIiB4bWk6aWQ9IlN5c01MTm9uTm9ybWF0aXZlRXh0ZW5zaW9ucy1CbG9jay1FX2V4dGVuc2lvbl9TeXN0ZW1fY29udGV4dF9iYXNlX0NsYXNzIiBuYW1lPSJFX2V4dGVuc2lvbl9TeXN0ZW1fY29udGV4dF9iYXNlX0NsYXNzIiBtZW1iZXJFbmQ9IlN5c01MTm9uTm9ybWF0aXZlRXh0ZW5zaW9ucy1CbG9jay1FX2V4dGVuc2lvbl9TeXN0ZW1fY29udGV4dF9iYXNlX0NsYXNzLWV4dGVuc2lvbl8gU3lzTUxOb25Ob3JtYXRpdmVFeHRlbnNpb25zLUJsb2NrLVN5c3RlbV9jb250ZXh0LWJhc2VfQ2xhc3MiIG5hdmlnYWJsZU93bmVkRW5kPSJTeXNNTE5vbk5vcm1hdGl2ZUV4dGVuc2lvbnMtQmxvY2stRV9leHRlbnNpb25fU3lzdGVtX2NvbnRleHRfYmFzZV9DbGFzcy1leHRlbnNpb25fIj4NCisgICAgICA8b3duZWRFbmQgeG1pOnR5cGU9InVtbDpFeHRlbnNpb25FbmQiIHhtaTppZD0iU3lzTUxOb25Ob3JtYXRpdmVFeHRlbnNpb25zLUJsb2NrLUVfZXh0ZW5zaW9uX1N5c3RlbV9jb250ZXh0X2Jhc2VfQ2xhc3MtZXh0ZW5zaW9uXyIgbmFtZT0iZXh0ZW5zaW9uXyIgdmlzaWJpbGl0eT0icHVibGljIiB0eXBlPSJTeXNNTE5vbk5vcm1hdGl2ZUV4dGVuc2lvbnMtQmxvY2stU3lzdGVtX2NvbnRleHQiIGFnZ3JlZ2F0aW9uPSJjb21wb3NpdGUiIGFzc29jaWF0aW9uPSJTeXNNTE5vbk5vcm1hdGl2ZUV4dGVuc2lvbnMtQmxvY2stRV9leHRlbnNpb25fU3lzdGVtX2NvbnRleHRfYmFzZV9DbGFzcyI+DQorICAgICAgICA8bG93ZXJWYWx1ZSB4bWk6dHlwZT0idW1sOkxpdGVyYWxJbnRlZ2VyIiB4bWk6aWQ9IlN5c01MTm9uTm9ybWF0aXZlRXh0ZW5zaW9ucy1CbG9jay1FX2V4dGVuc2lvbl9TeXN0ZW1fY29udGV4dF9iYXNlX0NsYXNzLWV4dGVuc2lvbl8tbG93ZXJWYWx1ZSIgbmFtZT0iIi8+DQorICAgICAgICA8dXBwZXJWYWx1ZSB4bWk6dHlwZT0idW1sOkxpdGVyYWxVbmxpbWl0ZWROYXR1cmFsIiB4bWk6aWQ9IlN5c01MTm9uTm9ybWF0aXZlRXh0ZW5zaW9ucy1CbG9jay1FX2V4dGVuc2lvbl9TeXN0ZW1fY29udGV4dF9iYXNlX0NsYXNzLWV4dGVuc2lvbl8tdXBwZXJWYWx1ZSIgbmFtZT0iIiB2YWx1ZT0iMSIvPg0KKyAgICAgIDwvb3duZWRFbmQ+DQorICAgIDwvcGFja2FnZWRFbGVtZW50Pg0KKyAgICA8cGFja2FnZWRFbGVtZW50IHhtaTp0eXBlPSJ1bWw6U3RlcmVvdHlwZSIgeG1pOmlkPSJTeXNNTE5vbk5vcm1hdGl2ZUV4dGVuc2lvbnMtQmxvY2stU3lzdGVtX2NvbnRleHQiIG5hbWU9IlN5c3RlbSBjb250ZXh0Ij4NCisgICAgICA8b3duZWRDb21tZW50IHhtaTppZD0iU3lzTUxOb25Ob3JtYXRpdmVFeHRlbnNpb25zLUJsb2NrLVN5c3RlbV9jb250ZXh0LW93bmVkQ29tbWVudCIgYW5ub3RhdGVkRWxlbWVudD0iU3lzTUxOb25Ob3JtYXRpdmVFeHRlbnNpb25zLUJsb2NrLVN5c3RlbV9jb250ZXh0Ij4NCisgICAgICAgIDxib2R5PkEgU3lzdGVtIGNvbnRleHQgZWxlbWVudCBpcyBhIHZpcnR1YWwgY29udGFpbmVyIHRoYXQgaW5jbHVkZXMgdGhlIGVudGlyZSBzeXN0ZW0gYW5kIGl0cyBhY3RvcnMuPC9ib2R5Pg0KKyAgICAgIDwvb3duZWRDb21tZW50Pg0KKyAgICAgIDxnZW5lcmFsaXphdGlvbiB4bWk6aWQ9IlN5c01MTm9uTm9ybWF0aXZlRXh0ZW5zaW9ucy1CbG9jay1TeXN0ZW1fY29udGV4dC1nZW5lcmFsaXphdGlvbiIgaXNTdWJzdGl0dXRhYmxlPSJmYWxzZSI+DQorICAgICAgICA8Z2VuZXJhbCB4bWk6dHlwZT0idW1sOlN0ZXJlb3R5cGUiIGhyZWY9IlN5c01MLnByb2ZpbGUudW1sI1N5c01MLUJsb2Nrcy1CbG9jayIvPg0KKyAgICAgIDwvZ2VuZXJhbGl6YXRpb24+DQorICAgICAgPG93bmVkQXR0cmlidXRlIHhtaTppZD0iU3lzTUxOb25Ob3JtYXRpdmVFeHRlbnNpb25zLUJsb2NrLVN5c3RlbV9jb250ZXh0LWJhc2VfQ2xhc3MiIG5hbWU9ImJhc2VfQ2xhc3MiIHZpc2liaWxpdHk9InB1YmxpYyIgYXNzb2NpYXRpb249IlN5c01MTm9uTm9ybWF0aXZlRXh0ZW5zaW9ucy1CbG9jay1FX2V4dGVuc2lvbl9TeXN0ZW1fY29udGV4dF9iYXNlX0NsYXNzIj4NCisgICAgICAgIDx0eXBlIHhtaTp0eXBlPSJ1bWw6Q2xhc3MiIGhyZWY9InBhdGhtYXA6Ly9VTUxfTUVUQU1PREVMUy9VTUwubWV0YW1vZGVsLnVtbCNDbGFzcyIvPg0KKyAgICAgIDwvb3duZWRBdHRyaWJ1dGU+DQorICAgIDwvcGFja2FnZWRFbGVtZW50Pg0KKyAgICA8cGFja2FnZWRFbGVtZW50IHhtaTp0eXBlPSJ1bWw6RXh0ZW5zaW9uIiB4bWk6aWQ9IlN5c01MTm9uTm9ybWF0aXZlRXh0ZW5zaW9ucy1CbG9jay1FX2V4dGVuc2lvbl9TdWJzeXN0ZW1fYmFzZV9DbGFzcyIgbmFtZT0iRV9leHRlbnNpb25fU3Vic3lzdGVtX2Jhc2VfQ2xhc3MiIG1lbWJlckVuZD0iU3lzTUxOb25Ob3JtYXRpdmVFeHRlbnNpb25zLUJsb2NrLUVfZXh0ZW5zaW9uX1N1YnN5c3RlbV9iYXNlX0NsYXNzLWV4dGVuc2lvbl8gU3lzTUxOb25Ob3JtYXRpdmVFeHRlbnNpb25zLUJsb2NrLVN1YnN5c3RlbS1iYXNlX0NsYXNzIiBuYXZpZ2FibGVPd25lZEVuZD0iU3lzTUxOb25Ob3JtYXRpdmVFeHRlbnNpb25zLUJsb2NrLUVfZXh0ZW5zaW9uX1N1YnN5c3RlbV9iYXNlX0NsYXNzLWV4dGVuc2lvbl8iPg0KKyAgICAgIDxvd25lZEVuZCB4bWk6dHlwZT0idW1sOkV4dGVuc2lvbkVuZCIgeG1pOmlkPSJTeXNNTE5vbk5vcm1hdGl2ZUV4dGVuc2lvbnMtQmxvY2stRV9leHRlbnNpb25fU3Vic3lzdGVtX2Jhc2VfQ2xhc3MtZXh0ZW5zaW9uXyIgbmFtZT0iZXh0ZW5zaW9uXyIgdmlzaWJpbGl0eT0icHVibGljIiB0eXBlPSJTeXNNTE5vbk5vcm1hdGl2ZUV4dGVuc2lvbnMtQmxvY2stU3Vic3lzdGVtIiBhZ2dyZWdhdGlvbj0iY29tcG9zaXRlIiBhc3NvY2lhdGlvbj0iU3lzTUxOb25Ob3JtYXRpdmVFeHRlbnNpb25zLUJsb2NrLUVfZXh0ZW5zaW9uX1N1YnN5c3RlbV9iYXNlX0NsYXNzIj4NCisgICAgICAgIDxsb3dlclZhbHVlIHhtaTp0eXBlPSJ1bWw6TGl0ZXJhbEludGVnZXIiIHhtaTppZD0iU3lzTUxOb25Ob3JtYXRpdmVFeHRlbnNpb25zLUJsb2NrLUVfZXh0ZW5zaW9uX1N1YnN5c3RlbV9iYXNlX0NsYXNzLWV4dGVuc2lvbl8tbG93ZXJWYWx1ZSIgbmFtZT0iIi8+DQorICAgICAgICA8dXBwZXJWYWx1ZSB4bWk6dHlwZT0idW1sOkxpdGVyYWxVbmxpbWl0ZWROYXR1cmFsIiB4bWk6aWQ9IlN5c01MTm9uTm9ybWF0aXZlRXh0ZW5zaW9ucy1CbG9jay1FX2V4dGVuc2lvbl9TdWJzeXN0ZW1fYmFzZV9DbGFzcy1leHRlbnNpb25fLXVwcGVyVmFsdWUiIG5hbWU9IiIgdmFsdWU9IjEiLz4NCisgICAgICA8L293bmVkRW5kPg0KKyAgICA8L3BhY2thZ2VkRWxlbWVudD4NCisgICAgPHBhY2thZ2VkRWxlbWVudCB4bWk6dHlwZT0idW1sOkV4dGVuc2lvbiIgeG1pOmlkPSJTeXNNTE5vbk5vcm1hdGl2ZUV4dGVuc2lvbnMtQmxvY2stRV9leHRlbnNpb25fRXh0ZXJuYWxfYmFzZV9DbGFzcyIgbmFtZT0iRV9leHRlbnNpb25fRXh0ZXJuYWxfYmFzZV9DbGFzcyIgbWVtYmVyRW5kPSJTeXNNTE5vbk5vcm1hdGl2ZUV4dGVuc2lvbnMtQmxvY2stRV9leHRlbnNpb25fRXh0ZXJuYWxfYmFzZV9DbGFzcy1leHRlbnNpb25fRXh0ZXJuYWwgU3lzTUxOb25Ob3JtYXRpdmVFeHRlbnNpb25zLUJsb2NrLUV4dGVybmFsLWJhc2VfQ2xhc3MiIG5hdmlnYWJsZU93bmVkRW5kPSJTeXNNTE5vbk5vcm1hdGl2ZUV4dGVuc2lvbnMtQmxvY2stRV9leHRlbnNpb25fRXh0ZXJuYWxfYmFzZV9DbGFzcy1leHRlbnNpb25fRXh0ZXJuYWwiPg0KKyAgICAgIDxvd25lZEVuZCB4bWk6dHlwZT0idW1sOkV4dGVuc2lvbkVuZCIgeG1pOmlkPSJTeXNNTE5vbk5vcm1hdGl2ZUV4dGVuc2lvbnMtQmxvY2stRV9leHRlbnNpb25fRXh0ZXJuYWxfYmFzZV9DbGFzcy1leHRlbnNpb25fRXh0ZXJuYWwiIG5hbWU9ImV4dGVuc2lvbl9FeHRlcm5hbCIgdmlzaWJpbGl0eT0icHVibGljIiB0eXBlPSJTeXNNTE5vbk5vcm1hdGl2ZUV4dGVuc2lvbnMtQmxvY2stRXh0ZXJuYWwiIGFnZ3JlZ2F0aW9uPSJjb21wb3NpdGUiIGFzc29jaWF0aW9uPSJTeXNNTE5vbk5vcm1hdGl2ZUV4dGVuc2lvbnMtQmxvY2stRV9leHRlbnNpb25fRXh0ZXJuYWxfYmFzZV9DbGFzcyI+DQorICAgICAgICA8bG93ZXJWYWx1ZSB4bWk6dHlwZT0idW1sOkxpdGVyYWxJbnRlZ2VyIiB4bWk6aWQ9IlN5c01MTm9uTm9ybWF0aXZlRXh0ZW5zaW9ucy1CbG9jay1FX2V4dGVuc2lvbl9FeHRlcm5hbF9iYXNlX0NsYXNzLWV4dGVuc2lvbl9FeHRlcm5hbC1sb3dlclZhbHVlIiBuYW1lPSIiLz4NCisgICAgICAgIDx1cHBlclZhbHVlIHhtaTp0eXBlPSJ1bWw6TGl0ZXJhbFVubGltaXRlZE5hdHVyYWwiIHhtaTppZD0iU3lzTUxOb25Ob3JtYXRpdmVFeHRlbnNpb25zLUJsb2NrLUVfZXh0ZW5zaW9uX0V4dGVybmFsX2Jhc2VfQ2xhc3MtZXh0ZW5zaW9uX0V4dGVybmFsLXVwcGVyVmFsdWUiIG5hbWU9IiIgdmFsdWU9IjEiLz4NCisgICAgICA8L293bmVkRW5kPg0KKyAgICA8L3BhY2thZ2VkRWxlbWVudD4NCisgICAgPHBhY2thZ2VkRWxlbWVudCB4bWk6dHlwZT0idW1sOlN0ZXJlb3R5cGUiIHhtaTppZD0iU3lzTUxOb25Ob3JtYXRpdmVFeHRlbnNpb25zLUJsb2NrLVN1YnN5c3RlbSIgbmFtZT0iU3Vic3lzdGVtIj4NCisgICAgICA8b3duZWRDb21tZW50IHhtaTppZD0iU3lzTUxOb25Ob3JtYXRpdmVFeHRlbnNpb25zLUJsb2NrLVN1YnN5c3RlbS1vd25lZENvbW1lbnQiIGFubm90YXRlZEVsZW1lbnQ9IlN5c01MTm9uTm9ybWF0aXZlRXh0ZW5zaW9ucy1CbG9jay1TdWJzeXN0ZW0iPg0KKyAgICAgICAgPGJvZHk+QSBTdWJzeXN0ZW0gaXMgYSAtIHR5cGljYWxseSBsYXJnZSAtIGVuY2Fwc3VsYXRlZCBibG9jayB3aXRoaW4gYSBsYXJnZXIgc3lzdGVtLjwvYm9keT4NCisgICAgICA8L293bmVkQ29tbWVudD4NCisgICAgICA8Z2VuZXJhbGl6YXRpb24geG1pOmlkPSJTeXNNTE5vbk5vcm1hdGl2ZUV4dGVuc2lvbnMtQmxvY2stU3Vic3lzdGVtLWdlbmVyYWxpemF0aW9uIiBpc1N1YnN0aXR1dGFibGU9ImZhbHNlIj4NCisgICAgICAgIDxnZW5lcmFsIHhtaTp0eXBlPSJ1bWw6U3RlcmVvdHlwZSIgaHJlZj0iU3lzTUwucHJvZmlsZS51bWwjU3lzTUwtQmxvY2tzLUJsb2NrIi8+DQorICAgICAgPC9nZW5lcmFsaXphdGlvbj4NCisgICAgICA8b3duZWRBdHRyaWJ1dGUgeG1pOmlkPSJTeXNNTE5vbk5vcm1hdGl2ZUV4dGVuc2lvbnMtQmxvY2stU3Vic3lzdGVtLWJhc2VfQ2xhc3MiIG5hbWU9ImJhc2VfQ2xhc3MiIHZpc2liaWxpdHk9InB1YmxpYyIgYXNzb2NpYXRpb249IlN5c01MTm9uTm9ybWF0aXZlRXh0ZW5zaW9ucy1CbG9jay1FX2V4dGVuc2lvbl9TdWJzeXN0ZW1fYmFzZV9DbGFzcyI+DQorICAgICAgICA8dHlwZSB4bWk6dHlwZT0idW1sOkNsYXNzIiBocmVmPSJwYXRobWFwOi8vVU1MX01FVEFNT0RFTFMvVU1MLm1ldGFtb2RlbC51bWwjQ2xhc3MiLz4NCisgICAgICA8L293bmVkQXR0cmlidXRlPg0KKyAgICA8L3BhY2thZ2VkRWxlbWVudD4NCisgICAgPHBhY2thZ2VkRWxlbWVudCB4bWk6dHlwZT0idW1sOkV4dGVuc2lvbiIgeG1pOmlkPSJTeXNNTE5vbk5vcm1hdGl2ZUV4dGVuc2lvbnMtQmxvY2stRV9leHRlbnNpb25fRG9tYWluX2Jhc2VfQ2xhc3MiIG5hbWU9IkVfZXh0ZW5zaW9uX0RvbWFpbl9iYXNlX0NsYXNzIiBtZW1iZXJFbmQ9IlN5c01MTm9uTm9ybWF0aXZlRXh0ZW5zaW9ucy1CbG9jay1FX2V4dGVuc2lvbl9Eb21haW5fYmFzZV9DbGFzcy1leHRlbnNpb25fIFN5c01MTm9uTm9ybWF0aXZlRXh0ZW5zaW9ucy1CbG9jay1Eb21haW4tYmFzZV9DbGFzcyIgbmF2aWdhYmxlT3duZWRFbmQ9IlN5c01MTm9uTm9ybWF0aXZlRXh0ZW5zaW9ucy1CbG9jay1FX2V4dGVuc2lvbl9Eb21haW5fYmFzZV9DbGFzcy1leHRlbnNpb25fIj4NCisgICAgICA8b3duZWRFbmQgeG1pOnR5cGU9InVtbDpFeHRlbnNpb25FbmQiIHhtaTppZD0iU3lzTUxOb25Ob3JtYXRpdmVFeHRlbnNpb25zLUJsb2NrLUVfZXh0ZW5zaW9uX0RvbWFpbl9iYXNlX0NsYXNzLWV4dGVuc2lvbl8iIG5hbWU9ImV4dGVuc2lvbl8iIHZpc2liaWxpdHk9InB1YmxpYyIgdHlwZT0iU3lzTUxOb25Ob3JtYXRpdmVFeHRlbnNpb25zLUJsb2NrLURvbWFpbiIgYWdncmVnYXRpb249ImNvbXBvc2l0ZSIgYXNzb2NpYXRpb249IlN5c01MTm9uTm9ybWF0aXZlRXh0ZW5zaW9ucy1CbG9jay1FX2V4dGVuc2lvbl9Eb21haW5fYmFzZV9DbGFzcyI+DQorICAgICAgICA8bG93ZXJWYWx1ZSB4bWk6dHlwZT0idW1sOkxpdGVyYWxJbnRlZ2VyIiB4bWk6aWQ9IlN5c01MTm9uTm9ybWF0aXZlRXh0ZW5zaW9ucy1CbG9jay1FX2V4dGVuc2lvbl9Eb21haW5fYmFzZV9DbGFzcy1leHRlbnNpb25fLWxvd2VyVmFsdWUiIG5hbWU9IiIvPg0KKyAgICAgICAgPHVwcGVyVmFsdWUgeG1pOnR5cGU9InVtbDpMaXRlcmFsVW5saW1pdGVkTmF0dXJhbCIgeG1pOmlkPSJTeXNNTE5vbk5vcm1hdGl2ZUV4dGVuc2lvbnMtQmxvY2stRV9leHRlbnNpb25fRG9tYWluX2Jhc2VfQ2xhc3MtZXh0ZW5zaW9uXy11cHBlclZhbHVlIiBuYW1lPSIiIHZhbHVlPSIxIi8+DQorICAgICAgPC9vd25lZEVuZD4NCisgICAgPC9wYWNrYWdlZEVsZW1lbnQ+DQorICAgIDxwYWNrYWdlZEVsZW1lbnQgeG1pOnR5cGU9InVtbDpTdGVyZW90eXBlIiB4bWk6aWQ9IlN5c01MTm9uTm9ybWF0aXZlRXh0ZW5zaW9ucy1CbG9jay1FeHRlcm5hbCIgbmFtZT0iRXh0ZXJuYWwiPg0KKyAgICAgIDxvd25lZENvbW1lbnQgeG1pOmlkPSJTeXNNTE5vbk5vcm1hdGl2ZUV4dGVuc2lvbnMtQmxvY2stRXh0ZXJuYWwtb3duZWRDb21tZW50IiBhbm5vdGF0ZWRFbGVtZW50PSJTeXNNTE5vbk5vcm1hdGl2ZUV4dGVuc2lvbnMtQmxvY2stRXh0ZXJuYWwiPg0KKyAgICAgICAgPGJvZHk+QW4gRXh0ZXJuYWwgYmxvY2sgaXMgYSBibG9jayB0aGF0IHJlcHJlc2VudHMgYW4gYWN0b3IuIEl0IGZhY2lsaXRhdGVzIGEgbW9yZSBkZXRhaWxlZCBtb2RlbGluZyBvZiBhY3RvcnMgbGlrZSBwb3J0cyBvciBpbnRlcm5hbCBzdHJ1Y3R1cmUuPC9ib2R5Pg0KKyAgICAgIDwvb3duZWRDb21tZW50Pg0KKyAgICAgIDxnZW5lcmFsaXphdGlvbiB4bWk6aWQ9IlN5c01MTm9uTm9ybWF0aXZlRXh0ZW5zaW9ucy1CbG9jay1FeHRlcm5hbC1nZW5lcmFsaXphdGlvbiIgaXNTdWJzdGl0dXRhYmxlPSJmYWxzZSI+DQorICAgICAgICA8Z2VuZXJhbCB4bWk6dHlwZT0idW1sOlN0ZXJlb3R5cGUiIGhyZWY9IlN5c01MLnByb2ZpbGUudW1sI1N5c01MLUJsb2Nrcy1CbG9jayIvPg0KKyAgICAgIDwvZ2VuZXJhbGl6YXRpb24+DQorICAgICAgPG93bmVkQXR0cmlidXRlIHhtaTppZD0iU3lzTUxOb25Ob3JtYXRpdmVFeHRlbnNpb25zLUJsb2NrLUV4dGVybmFsLWJhc2VfQ2xhc3MiIG5hbWU9ImJhc2VfQ2xhc3MiIHZpc2liaWxpdHk9InB1YmxpYyIgYXNzb2NpYXRpb249IlN5c01MTm9uTm9ybWF0aXZlRXh0ZW5zaW9ucy1CbG9jay1FX2V4dGVuc2lvbl9FeHRlcm5hbF9iYXNlX0NsYXNzIj4NCisgICAgICAgIDx0eXBlIHhtaTp0eXBlPSJ1bWw6Q2xhc3MiIGhyZWY9InBhdGhtYXA6Ly9VTUxfTUVUQU1PREVMUy9VTUwubWV0YW1vZGVsLnVtbCNDbGFzcyIvPg0KKyAgICAgIDwvb3duZWRBdHRyaWJ1dGU+DQorICAgIDwvcGFja2FnZWRFbGVtZW50Pg0KKyAgICA8cGFja2FnZWRFbGVtZW50IHhtaTp0eXBlPSJ1bWw6RXh0ZW5zaW9uIiB4bWk6aWQ9IlN5c01MTm9uTm9ybWF0aXZlRXh0ZW5zaW9ucy1CbG9jay1FX2V4dGVuc2lvbl9TeXN0ZW1fYmFzZV9DbGFzcyIgbmFtZT0iRV9leHRlbnNpb25fU3lzdGVtX2Jhc2VfQ2xhc3MiIG1lbWJlckVuZD0iU3lzTUxOb25Ob3JtYXRpdmVFeHRlbnNpb25zLUJsb2NrLUVfZXh0ZW5zaW9uX1N5c3RlbV9iYXNlX0NsYXNzLWV4dGVuc2lvbl8gU3lzTUxOb25Ob3JtYXRpdmVFeHRlbnNpb25zLUJsb2NrLVN5c3RlbS1iYXNlX0NsYXNzIiBuYXZpZ2FibGVPd25lZEVuZD0iU3lzTUxOb25Ob3JtYXRpdmVFeHRlbnNpb25zLUJsb2NrLUVfZXh0ZW5zaW9uX1N5c3RlbV9iYXNlX0NsYXNzLWV4dGVuc2lvbl8iPg0KKyAgICAgIDxvd25lZEVuZCB4bWk6dHlwZT0idW1sOkV4dGVuc2lvbkVuZCIgeG1pOmlkPSJTeXNNTE5vbk5vcm1hdGl2ZUV4dGVuc2lvbnMtQmxvY2stRV9leHRlbnNpb25fU3lzdGVtX2Jhc2VfQ2xhc3MtZXh0ZW5zaW9uXyIgbmFtZT0iZXh0ZW5zaW9uXyIgdmlzaWJpbGl0eT0icHVibGljIiB0eXBlPSJTeXNNTE5vbk5vcm1hdGl2ZUV4dGVuc2lvbnMtQmxvY2stU3lzdGVtIiBhZ2dyZWdhdGlvbj0iY29tcG9zaXRlIiBhc3NvY2lhdGlvbj0iU3lzTUxOb25Ob3JtYXRpdmVFeHRlbnNpb25zLUJsb2NrLUVfZXh0ZW5zaW9uX1N5c3RlbV9iYXNlX0NsYXNzIj4NCisgICAgICAgIDxsb3dlclZhbHVlIHhtaTp0eXBlPSJ1bWw6TGl0ZXJhbEludGVnZXIiIHhtaTppZD0iU3lzTUxOb25Ob3JtYXRpdmVFeHRlbnNpb25zLUJsb2NrLUVfZXh0ZW5zaW9uX1N5c3RlbV9iYXNlX0NsYXNzLWV4dGVuc2lvbl8tbG93ZXJWYWx1ZSIgbmFtZT0iIi8+DQorICAgICAgICA8dXBwZXJWYWx1ZSB4bWk6dHlwZT0idW1sOkxpdGVyYWxVbmxpbWl0ZWROYXR1cmFsIiB4bWk6aWQ9IlN5c01MTm9uTm9ybWF0aXZlRXh0ZW5zaW9ucy1CbG9jay1FX2V4dGVuc2lvbl9TeXN0ZW1fYmFzZV9DbGFzcy1leHRlbnNpb25fLXVwcGVyVmFsdWUiIG5hbWU9IiIgdmFsdWU9IjEiLz4NCisgICAgICA8L293bmVkRW5kPg0KKyAgICA8L3BhY2thZ2VkRWxlbWVudD4NCisgIDwvcGFja2FnZWRFbGVtZW50Pg0KKyAgPHBhY2thZ2VkRWxlbWVudCB4bWk6dHlwZT0idW1sOlBhY2thZ2UiIHhtaTppZD0iU3lzTUxOb25Ob3JtYXRpdmVFeHRlbnNpb25zLVJlcXVpcmVtZW50IiBuYW1lPSJSZXF1aXJlbWVudCIgVVJJPSIiPg0KKyAgICA8cGFja2FnZWRFbGVtZW50IHhtaTp0eXBlPSJ1bWw6U3RlcmVvdHlwZSIgeG1pOmlkPSJTeXNNTE5vbk5vcm1hdGl2ZUV4dGVuc2lvbnMtUmVxdWlyZW1lbnQtZnVuY3Rpb25hbFJlcXVpcmVtZW50IiBuYW1lPSJmdW5jdGlvbmFsUmVxdWlyZW1lbnQiPg0KKyAgICAgIDxvd25lZENvbW1lbnQgeG1pOmlkPSJTeXNNTE5vbk5vcm1hdGl2ZUV4dGVuc2lvbnMtUmVxdWlyZW1lbnQtZnVuY3Rpb25hbFJlcXVpcmVtZW50LW93bmVkQ29tbWVudCIgYW5ub3RhdGVkRWxlbWVudD0iU3lzTUxOb25Ob3JtYXRpdmVFeHRlbnNpb25zLVJlcXVpcmVtZW50LWZ1bmN0aW9uYWxSZXF1aXJlbWVudCI+DQorICAgICAgICA8Ym9keT5SZXF1aXJlbWVudCB0aGF0IHNwZWNpZmllcyBhbiBvcGVyYXRpb24gb3IgYmVoYXZpb3IgdGhhdCBhIHN5c3RlbSwgb3IgcGFydCBvZiBhIHN5c3RlbSwgbXVzdCBwZXJmb3JtLjwvYm9keT4NCisgICAgICA8L293bmVkQ29tbWVudD4NCisgICAgICA8Z2VuZXJhbGl6YXRpb24geG1pOmlkPSJTeXNNTE5vbk5vcm1hdGl2ZUV4dGVuc2lvbnMtUmVxdWlyZW1lbnQtZnVuY3Rpb25hbFJlcXVpcmVtZW50LWdlbmVyYWxpemF0aW9uIiBnZW5lcmFsPSJTeXNNTE5vbk5vcm1hdGl2ZUV4dGVuc2lvbnMtUmVxdWlyZW1lbnQtZXh0ZW5kZWRSZXF1aXJlbWVudCIgaXNTdWJzdGl0dXRhYmxlPSJmYWxzZSIvPg0KKyAgICAgIDxvd25lZEF0dHJpYnV0ZSB4bWk6aWQ9IlN5c01MTm9uTm9ybWF0aXZlRXh0ZW5zaW9ucy1SZXF1aXJlbWVudC1mdW5jdGlvbmFsUmVxdWlyZW1lbnQtYmFzZV9DbGFzcyIgbmFtZT0iYmFzZV9DbGFzcyIgdmlzaWJpbGl0eT0icHVibGljIiBhc3NvY2lhdGlvbj0iU3lzTUxOb25Ob3JtYXRpdmVFeHRlbnNpb25zLVJlcXVpcmVtZW50LUVfZXh0ZW5zaW9uX2Z1bmN0aW9uYWxSZXF1aXJlbWVudF9iYXNlX0NsYXNzIj4NCisgICAgICAgIDx0eXBlIHhtaTp0eXBlPSJ1bWw6Q2xhc3MiIGhyZWY9InBhdGhtYXA6Ly9VTUxfTUVUQU1PREVMUy9VTUwubWV0YW1vZGVsLnVtbCNDbGFzcyIvPg0KKyAgICAgIDwvb3duZWRBdHRyaWJ1dGU+DQorICAgIDwvcGFja2FnZWRFbGVtZW50Pg0KKyAgICA8cGFja2FnZWRFbGVtZW50IHhtaTp0eXBlPSJ1bWw6U3RlcmVvdHlwZSIgeG1pOmlkPSJTeXNNTE5vbk5vcm1hdGl2ZUV4dGVuc2lvbnMtUmVxdWlyZW1lbnQtcGVyZm9ybWFuY2VSZXF1aXJlbWVudCIgbmFtZT0icGVyZm9ybWFuY2VSZXF1aXJlbWVudCI+DQorICAgICAgPG93bmVkQ29tbWVudCB4bWk6aWQ9IlN5c01MTm9uTm9ybWF0aXZlRXh0ZW5zaW9ucy1SZXF1aXJlbWVudC1wZXJmb3JtYW5jZVJlcXVpcmVtZW50LW93bmVkQ29tbWVudCIgYW5ub3RhdGVkRWxlbWVudD0iU3lzTUxOb25Ob3JtYXRpdmVFeHRlbnNpb25zLVJlcXVpcmVtZW50LXBlcmZvcm1hbmNlUmVxdWlyZW1lbnQiPg0KKyAgICAgICAgPGJvZHk+UmVxdWlyZW1lbnQgdGhhdCBxdWFudGl0YXRpdmVseSBtZWFzdXJlcyB0aGUgZXh0ZW50IHRvIHdoaWNoIGEgc3lzdGVtLCBvciBhIHN5c3RlbSBwYXJ0LCBzYXRpc2ZpZXMgYSByZXF1aXJlZCBjYXBhYmlsaXR5IG9yIGNvbmRpdGlvbi48L2JvZHk+DQorICAgICAgPC9vd25lZENvbW1lbnQ+DQorICAgICAgPGdlbmVyYWxpemF0aW9uIHhtaTppZD0iU3lzTUxOb25Ob3JtYXRpdmVFeHRlbnNpb25zLVJlcXVpcmVtZW50LXBlcmZvcm1hbmNlUmVxdWlyZW1lbnQtZ2VuZXJhbGl6YXRpb24iIGdlbmVyYWw9IlN5c01MTm9uTm9ybWF0aXZlRXh0ZW5zaW9ucy1SZXF1aXJlbWVudC1leHRlbmRlZFJlcXVpcmVtZW50IiBpc1N1YnN0aXR1dGFibGU9ImZhbHNlIi8+DQorICAgICAgPG93bmVkQXR0cmlidXRlIHhtaTppZD0iU3lzTUxOb25Ob3JtYXRpdmVFeHRlbnNpb25zLVJlcXVpcmVtZW50LXBlcmZvcm1hbmNlUmVxdWlyZW1lbnQtYmFzZV9DbGFzcyIgbmFtZT0iYmFzZV9DbGFzcyIgdmlzaWJpbGl0eT0icHVibGljIiBhc3NvY2lhdGlvbj0iU3lzTUxOb25Ob3JtYXRpdmVFeHRlbnNpb25zLVJlcXVpcmVtZW50LUVfZXh0ZW5zaW9uX3BlcmZvcm1hbmNlUmVxdWlyZW1lbnRfYmFzZV9DbGFzcyI+DQorICAgICAgICA8dHlwZSB4bWk6dHlwZT0idW1sOkNsYXNzIiBocmVmPSJwYXRobWFwOi8vVU1MX01FVEFNT0RFTFMvVU1MLm1ldGFtb2RlbC51bWwjQ2xhc3MiLz4NCisgICAgICA8L293bmVkQXR0cmlidXRlPg0KKyAgICA8L3BhY2thZ2VkRWxlbWVudD4NCisgICAgPHBhY2thZ2VkRWxlbWVudCB4bWk6dHlwZT0idW1sOlN0ZXJlb3R5cGUiIHhtaTppZD0iU3lzTUxOb25Ob3JtYXRpdmVFeHRlbnNpb25zLVJlcXVpcmVtZW50LWV4dGVuZGVkUmVxdWlyZW1lbnQiIG5hbWU9ImV4dGVuZGVkUmVxdWlyZW1lbnQiPg0KKyAgICAgIDxvd25lZENvbW1lbnQgeG1pOmlkPSJTeXNNTE5vbk5vcm1hdGl2ZUV4dGVuc2lvbnMtUmVxdWlyZW1lbnQtZXh0ZW5kZWRSZXF1aXJlbWVudC1vd25lZENvbW1lbnQiIGFubm90YXRlZEVsZW1lbnQ9IlN5c01MTm9uTm9ybWF0aXZlRXh0ZW5zaW9ucy1SZXF1aXJlbWVudC1leHRlbmRlZFJlcXVpcmVtZW50Ij4NCisgICAgICAgIDxib2R5PkEgbWl4LWluIHN0ZXJlb3R5cGUgdGhhdCBjb250YWlucyBnZW5lcmFsbHkgdXNlZnVsIGF0dHJpYnV0ZXMgZm9yIHJlcXVpcmVtZW50czwvYm9keT4NCisgICAgICA8L293bmVkQ29tbWVudD4NCisgICAgICA8Z2VuZXJhbGl6YXRpb24geG1pOmlkPSJTeXNNTE5vbk5vcm1hdGl2ZUV4dGVuc2lvbnMtUmVxdWlyZW1lbnQtZXh0ZW5kZWRSZXF1aXJlbWVudC1nZW5lcmFsaXphdGlvbiIgaXNTdWJzdGl0dXRhYmxlPSJmYWxzZSI+DQorICAgICAgICA8Z2VuZXJhbCB4bWk6dHlwZT0idW1sOlN0ZXJlb3R5cGUiIGhyZWY9IlN5c01MLnByb2ZpbGUudW1sI1N5c01MLVJlcXVpcmVtZW50cy1SZXF1aXJlbWVudCIvPg0KKyAgICAgIDwvZ2VuZXJhbGl6YXRpb24+DQorICAgICAgPG93bmVkQXR0cmlidXRlIHhtaTppZD0iU3lzTUxOb25Ob3JtYXRpdmVFeHRlbnNpb25zLVJlcXVpcmVtZW50LWV4dGVuZGVkUmVxdWlyZW1lbnQtYmFzZV9DbGFzcyIgbmFtZT0iYmFzZV9DbGFzcyIgdmlzaWJpbGl0eT0icHVibGljIiBhc3NvY2lhdGlvbj0iU3lzTUxOb25Ob3JtYXRpdmVFeHRlbnNpb25zLVJlcXVpcmVtZW50LUVfZXh0ZW5zaW9uX2V4dGVuZGVkUmVxdWlyZW1lbnRfYmFzZV9DbGFzcyI+DQorICAgICAgICA8dHlwZSB4bWk6dHlwZT0idW1sOkNsYXNzIiBocmVmPSJwYXRobWFwOi8vVU1MX01FVEFNT0RFTFMvVU1MLm1ldGFtb2RlbC51bWwjQ2xhc3MiLz4NCisgICAgICA8L293bmVkQXR0cmlidXRlPg0KKyAgICAgIDxvd25lZEF0dHJpYnV0ZSB4bWk6aWQ9IlN5c01MTm9uTm9ybWF0aXZlRXh0ZW5zaW9ucy1SZXF1aXJlbWVudC1leHRlbmRlZFJlcXVpcmVtZW50LXNvdXJjZSIgbmFtZT0ic291cmNlIiB2aXNpYmlsaXR5PSJwdWJsaWMiPg0KKyAgICAgICAgPHR5cGUgeG1pOnR5cGU9InVtbDpQcmltaXRpdmVUeXBlIiBocmVmPSJwYXRobWFwOi8vVU1MX0xJQlJBUklFUy9VTUxQcmltaXRpdmVUeXBlcy5saWJyYXJ5LnVtbCNTdHJpbmciLz4NCisgICAgICA8L293bmVkQXR0cmlidXRlPg0KKyAgICAgIDxvd25lZEF0dHJpYnV0ZSB4bWk6aWQ9IlN5c01MTm9uTm9ybWF0aXZlRXh0ZW5zaW9ucy1SZXF1aXJlbWVudC1leHRlbmRlZFJlcXVpcmVtZW50LXJpc2siIG5hbWU9InJpc2siIHZpc2liaWxpdHk9InB1YmxpYyIgdHlwZT0iU3lzTUxOb25Ob3JtYXRpdmVFeHRlbnNpb25zLVJlcXVpcmVtZW50LVJpc2tLaW5kIj4NCisgICAgICAgIDxkZWZhdWx0VmFsdWUgeG1pOnR5cGU9InVtbDpJbnN0YW5jZVZhbHVlIiB4bWk6aWQ9IlN5c01MTm9uTm9ybWF0aXZlRXh0ZW5zaW9ucy1SZXF1aXJlbWVudC1leHRlbmRlZFJlcXVpcmVtZW50LXJpc2stZGVmYXVsdFZhbHVlIiBuYW1lPSIiIGluc3RhbmNlPSJTeXNNTE5vbk5vcm1hdGl2ZUV4dGVuc2lvbnMtUmVxdWlyZW1lbnQtUmlza0tpbmQtTWVkaXVtIi8+DQorICAgICAgPC9vd25lZEF0dHJpYnV0ZT4NCisgICAgICA8b3duZWRBdHRyaWJ1dGUgeG1pOmlkPSJTeXNNTE5vbk5vcm1hdGl2ZUV4dGVuc2lvbnMtUmVxdWlyZW1lbnQtZXh0ZW5kZWRSZXF1aXJlbWVudC12ZXJpZnlNZXRob2QiIG5hbWU9InZlcmlmeU1ldGhvZCIgdmlzaWJpbGl0eT0icHVibGljIiB0eXBlPSJTeXNNTE5vbk5vcm1hdGl2ZUV4dGVuc2lvbnMtUmVxdWlyZW1lbnQtVmVyaWZpY2F0aW9uTWV0aG9kS2luZCI+DQorICAgICAgICA8ZGVmYXVsdFZhbHVlIHhtaTp0eXBlPSJ1bWw6SW5zdGFuY2VWYWx1ZSIgeG1pOmlkPSJTeXNNTE5vbk5vcm1hdGl2ZUV4dGVuc2lvbnMtUmVxdWlyZW1lbnQtZXh0ZW5kZWRSZXF1aXJlbWVudC12ZXJpZnlNZXRob2QtZGVmYXVsdFZhbHVlIiBuYW1lPSIiIGluc3RhbmNlPSJTeXNNTE5vbk5vcm1hdGl2ZUV4dGVuc2lvbnMtUmVxdWlyZW1lbnQtVmVyaWZpY2F0aW9uTWV0aG9kS2luZC1UZXN0Ii8+DQorICAgICAgPC9vd25lZEF0dHJpYnV0ZT4NCisgICAgPC9wYWNrYWdlZEVsZW1lbnQ+DQorICAgIDxwYWNrYWdlZEVsZW1lbnQgeG1pOnR5cGU9InVtbDpFeHRlbnNpb24iIHhtaTppZD0iU3lzTUxOb25Ob3JtYXRpdmVFeHRlbnNpb25zLVJlcXVpcmVtZW50LUVfZXh0ZW5zaW9uX3BoeXNpY2FsUmVxdWlyZW1lbnRfYmFzZV9DbGFzcyIgbmFtZT0iRV9leHRlbnNpb25fcGh5c2ljYWxSZXF1aXJlbWVudF9iYXNlX0NsYXNzIiBtZW1iZXJFbmQ9IlN5c01MTm9uTm9ybWF0aXZlRXh0ZW5zaW9ucy1SZXF1aXJlbWVudC1FX2V4dGVuc2lvbl9waHlzaWNhbFJlcXVpcmVtZW50X2Jhc2VfQ2xhc3MtZXh0ZW5zaW9uX2Z1bmN0aW9uYWxSZXF1aXJlbWVudCBTeXNNTE5vbk5vcm1hdGl2ZUV4dGVuc2lvbnMtUmVxdWlyZW1lbnQtcGh5c2ljYWxSZXF1aXJlbWVudC1iYXNlX0NsYXNzIiBuYXZpZ2FibGVPd25lZEVuZD0iU3lzTUxOb25Ob3JtYXRpdmVFeHRlbnNpb25zLVJlcXVpcmVtZW50LUVfZXh0ZW5zaW9uX3BoeXNpY2FsUmVxdWlyZW1lbnRfYmFzZV9DbGFzcy1leHRlbnNpb25fZnVuY3Rpb25hbFJlcXVpcmVtZW50Ij4NCisgICAgICA8b3duZWRFbmQgeG1pOnR5cGU9InVtbDpFeHRlbnNpb25FbmQiIHhtaTppZD0iU3lzTUxOb25Ob3JtYXRpdmVFeHRlbnNpb25zLVJlcXVpcmVtZW50LUVfZXh0ZW5zaW9uX3BoeXNpY2FsUmVxdWlyZW1lbnRfYmFzZV9DbGFzcy1leHRlbnNpb25fZnVuY3Rpb25hbFJlcXVpcmVtZW50IiBuYW1lPSJleHRlbnNpb25fZnVuY3Rpb25hbFJlcXVpcmVtZW50IiB2aXNpYmlsaXR5PSJwdWJsaWMiIHR5cGU9IlN5c01MTm9uTm9ybWF0aXZlRXh0ZW5zaW9ucy1SZXF1aXJlbWVudC1waHlzaWNhbFJlcXVpcmVtZW50IiBhZ2dyZWdhdGlvbj0iY29tcG9zaXRlIiBhc3NvY2lhdGlvbj0iU3lzTUxOb25Ob3JtYXRpdmVFeHRlbnNpb25zLVJlcXVpcmVtZW50LUVfZXh0ZW5zaW9uX3BoeXNpY2FsUmVxdWlyZW1lbnRfYmFzZV9DbGFzcyI+DQorICAgICAgICA8bG93ZXJWYWx1ZSB4bWk6dHlwZT0idW1sOkxpdGVyYWxJbnRlZ2VyIiB4bWk6aWQ9IlN5c01MTm9uTm9ybWF0aXZlRXh0ZW5zaW9ucy1SZXF1aXJlbWVudC1FX2V4dGVuc2lvbl9waHlzaWNhbFJlcXVpcmVtZW50X2Jhc2VfQ2xhc3MtZXh0ZW5zaW9uX2Z1bmN0aW9uYWxSZXF1aXJlbWVudC1sb3dlclZhbHVlIiBuYW1lPSIiLz4NCisgICAgICAgIDx1cHBlclZhbHVlIHhtaTp0eXBlPSJ1bWw6TGl0ZXJhbFVubGltaXRlZE5hdHVyYWwiIHhtaTppZD0iU3lzTUxOb25Ob3JtYXRpdmVFeHRlbnNpb25zLVJlcXVpcmVtZW50LUVfZXh0ZW5zaW9uX3BoeXNpY2FsUmVxdWlyZW1lbnRfYmFzZV9DbGFzcy1leHRlbnNpb25fZnVuY3Rpb25hbFJlcXVpcmVtZW50LXVwcGVyVmFsdWUiIG5hbWU9IiIgdmFsdWU9IjEiLz4NCisgICAgICA8L293bmVkRW5kPg0KKyAgICA8L3BhY2thZ2VkRWxlbWVudD4NCisgICAgPHBhY2thZ2VkRWxlbWVudCB4bWk6dHlwZT0idW1sOkV4dGVuc2lvbiIgeG1pOmlkPSJTeXNNTE5vbk5vcm1hdGl2ZUV4dGVuc2lvbnMtUmVxdWlyZW1lbnQtRV9leHRlbnNpb25fYnVzaW5lc3NSZXF1aXJlbWVudF9iYXNlX0NsYXNzIiBuYW1lPSJFX2V4dGVuc2lvbl9idXNpbmVzc1JlcXVpcmVtZW50X2Jhc2VfQ2xhc3MiIG1lbWJlckVuZD0iU3lzTUxOb25Ob3JtYXRpdmVFeHRlbnNpb25zLVJlcXVpcmVtZW50LUVfZXh0ZW5zaW9uX2J1c2luZXNzUmVxdWlyZW1lbnRfYmFzZV9DbGFzcy1leHRlbnNpb25fZGVzaWduQ29uc3RyYWludCBTeXNNTE5vbk5vcm1hdGl2ZUV4dGVuc2lvbnMtUmVxdWlyZW1lbnQtYnVzaW5lc3NSZXF1aXJlbWVudC1iYXNlX0NsYXNzIiBuYXZpZ2FibGVPd25lZEVuZD0iU3lzTUxOb25Ob3JtYXRpdmVFeHRlbnNpb25zLVJlcXVpcmVtZW50LUVfZXh0ZW5zaW9uX2J1c2luZXNzUmVxdWlyZW1lbnRfYmFzZV9DbGFzcy1leHRlbnNpb25fZGVzaWduQ29uc3RyYWludCI+DQorICAgICAgPG93bmVkRW5kIHhtaTp0eXBlPSJ1bWw6RXh0ZW5zaW9uRW5kIiB4bWk6aWQ9IlN5c01MTm9uTm9ybWF0aXZlRXh0ZW5zaW9ucy1SZXF1aXJlbWVudC1FX2V4dGVuc2lvbl9idXNpbmVzc1JlcXVpcmVtZW50X2Jhc2VfQ2xhc3MtZXh0ZW5zaW9uX2Rlc2lnbkNvbnN0cmFpbnQiIG5hbWU9ImV4dGVuc2lvbl9kZXNpZ25Db25zdHJhaW50IiB2aXNpYmlsaXR5PSJwdWJsaWMiIHR5cGU9IlN5c01MTm9uTm9ybWF0aXZlRXh0ZW5zaW9ucy1SZXF1aXJlbWVudC1idXNpbmVzc1JlcXVpcmVtZW50IiBhZ2dyZWdhdGlvbj0iY29tcG9zaXRlIiBhc3NvY2lhdGlvbj0iU3lzTUxOb25Ob3JtYXRpdmVFeHRlbnNpb25zLVJlcXVpcmVtZW50LUVfZXh0ZW5zaW9uX2J1c2luZXNzUmVxdWlyZW1lbnRfYmFzZV9DbGFzcyI+DQorICAgICAgICA8bG93ZXJWYWx1ZSB4bWk6dHlwZT0idW1sOkxpdGVyYWxJbnRlZ2VyIiB4bWk6aWQ9IlN5c01MTm9uTm9ybWF0aXZlRXh0ZW5zaW9ucy1SZXF1aXJlbWVudC1FX2V4dGVuc2lvbl9idXNpbmVzc1JlcXVpcmVtZW50X2Jhc2VfQ2xhc3MtZXh0ZW5zaW9uX2Rlc2lnbkNvbnN0cmFpbnQtbG93ZXJWYWx1ZSIgbmFtZT0iIi8+DQorICAgICAgICA8dXBwZXJWYWx1ZSB4bWk6dHlwZT0idW1sOkxpdGVyYWxVbmxpbWl0ZWROYXR1cmFsIiB4bWk6aWQ9IlN5c01MTm9uTm9ybWF0aXZlRXh0ZW5zaW9ucy1SZXF1aXJlbWVudC1FX2V4dGVuc2lvbl9idXNpbmVzc1JlcXVpcmVtZW50X2Jhc2VfQ2xhc3MtZXh0ZW5zaW9uX2Rlc2lnbkNvbnN0cmFpbnQtdXBwZXJWYWx1ZSIgbmFtZT0iIiB2YWx1ZT0iMSIvPg0KKyAgICAgIDwvb3duZWRFbmQ+DQorICAgIDwvcGFja2FnZWRFbGVtZW50Pg0KKyAgICA8cGFja2FnZWRFbGVtZW50IHhtaTp0eXBlPSJ1bWw6RXh0ZW5zaW9uIiB4bWk6aWQ9IlN5c01MTm9uTm9ybWF0aXZlRXh0ZW5zaW9ucy1SZXF1aXJlbWVudC1FX2V4dGVuc2lvbl91c2FiaWxpdHlSZXF1aXJlbWVudF9iYXNlX0NsYXNzIiBuYW1lPSJFX2V4dGVuc2lvbl91c2FiaWxpdHlSZXF1aXJlbWVudF9iYXNlX0NsYXNzIiBtZW1iZXJFbmQ9IlN5c01MTm9uTm9ybWF0aXZlRXh0ZW5zaW9ucy1SZXF1aXJlbWVudC1FX2V4dGVuc2lvbl91c2FiaWxpdHlSZXF1aXJlbWVudF9iYXNlX0NsYXNzLWV4dGVuc2lvbl9kZXNpZ25Db25zdHJhaW50IFN5c01MTm9uTm9ybWF0aXZlRXh0ZW5zaW9ucy1SZXF1aXJlbWVudC11c2FiaWxpdHlSZXF1aXJlbWVudC1iYXNlX0NsYXNzIiBuYXZpZ2FibGVPd25lZEVuZD0iU3lzTUxOb25Ob3JtYXRpdmVFeHRlbnNpb25zLVJlcXVpcmVtZW50LUVfZXh0ZW5zaW9uX3VzYWJpbGl0eVJlcXVpcmVtZW50X2Jhc2VfQ2xhc3MtZXh0ZW5zaW9uX2Rlc2lnbkNvbnN0cmFpbnQiPg0KKyAgICAgIDxvd25lZEVuZCB4bWk6dHlwZT0idW1sOkV4dGVuc2lvbkVuZCIgeG1pOmlkPSJTeXNNTE5vbk5vcm1hdGl2ZUV4dGVuc2lvbnMtUmVxdWlyZW1lbnQtRV9leHRlbnNpb25fdXNhYmlsaXR5UmVxdWlyZW1lbnRfYmFzZV9DbGFzcy1leHRlbnNpb25fZGVzaWduQ29uc3RyYWludCIgbmFtZT0iZXh0ZW5zaW9uX2Rlc2lnbkNvbnN0cmFpbnQiIHZpc2liaWxpdHk9InB1YmxpYyIgdHlwZT0iU3lzTUxOb25Ob3JtYXRpdmVFeHRlbnNpb25zLVJlcXVpcmVtZW50LXVzYWJpbGl0eVJlcXVpcmVtZW50IiBhZ2dyZWdhdGlvbj0iY29tcG9zaXRlIiBhc3NvY2lhdGlvbj0iU3lzTUxOb25Ob3JtYXRpdmVFeHRlbnNpb25zLVJlcXVpcmVtZW50LUVfZXh0ZW5zaW9uX3VzYWJpbGl0eVJlcXVpcmVtZW50X2Jhc2VfQ2xhc3MiPg0KKyAgICAgICAgPGxvd2VyVmFsdWUgeG1pOnR5cGU9InVtbDpMaXRlcmFsSW50ZWdlciIgeG1pOmlkPSJTeXNNTE5vbk5vcm1hdGl2ZUV4dGVuc2lvbnMtUmVxdWlyZW1lbnQtRV9leHRlbnNpb25fdXNhYmlsaXR5UmVxdWlyZW1lbnRfYmFzZV9DbGFzcy1leHRlbnNpb25fZGVzaWduQ29uc3RyYWludC1sb3dlclZhbHVlIiBuYW1lPSIiLz4NCisgICAgICAgIDx1cHBlclZhbHVlIHhtaTp0eXBlPSJ1bWw6TGl0ZXJhbFVubGltaXRlZE5hdHVyYWwiIHhtaTppZD0iU3lzTUxOb25Ob3JtYXRpdmVFeHRlbnNpb25zLVJlcXVpcmVtZW50LUVfZXh0ZW5zaW9uX3VzYWJpbGl0eVJlcXVpcmVtZW50X2Jhc2VfQ2xhc3MtZXh0ZW5zaW9uX2Rlc2lnbkNvbnN0cmFpbnQtdXBwZXJWYWx1ZSIgbmFtZT0iIiB2YWx1ZT0iMSIvPg0KKyAgICAgIDwvb3duZWRFbmQ+DQorICAgIDwvcGFja2FnZWRFbGVtZW50Pg0KKyAgICA8cGFja2FnZWRFbGVtZW50IHhtaTp0eXBlPSJ1bWw6U3RlcmVvdHlwZSIgeG1pOmlkPSJTeXNNTE5vbk5vcm1hdGl2ZUV4dGVuc2lvbnMtUmVxdWlyZW1lbnQtdXNhYmlsaXR5UmVxdWlyZW1lbnQiIG5hbWU9InVzYWJpbGl0eVJlcXVpcmVtZW50Ij4NCisgICAgICA8b3duZWRDb21tZW50IHhtaTppZD0iU3lzTUxOb25Ob3JtYXRpdmVFeHRlbnNpb25zLVJlcXVpcmVtZW50LXVzYWJpbGl0eVJlcXVpcmVtZW50LW93bmVkQ29tbWVudCIgYW5ub3RhdGVkRWxlbWVudD0iU3lzTUxOb25Ob3JtYXRpdmVFeHRlbnNpb25zLVJlcXVpcmVtZW50LXVzYWJpbGl0eVJlcXVpcmVtZW50Ij4NCisgICAgICAgIDxib2R5PlJlcXVpcmVtZW50IGFib3V0IHVzYWJpbGl0eS48L2JvZHk+DQorICAgICAgPC9vd25lZENvbW1lbnQ+DQorICAgICAgPGdlbmVyYWxpemF0aW9uIHhtaTppZD0iU3lzTUxOb25Ob3JtYXRpdmVFeHRlbnNpb25zLVJlcXVpcmVtZW50LXVzYWJpbGl0eVJlcXVpcmVtZW50LWdlbmVyYWxpemF0aW9uIiBnZW5lcmFsPSJTeXNNTE5vbk5vcm1hdGl2ZUV4dGVuc2lvbnMtUmVxdWlyZW1lbnQtZXh0ZW5kZWRSZXF1aXJlbWVudCIgaXNTdWJzdGl0dXRhYmxlPSJmYWxzZSIvPg0KKyAgICAgIDxvd25lZEF0dHJpYnV0ZSB4bWk6aWQ9IlN5c01MTm9uTm9ybWF0aXZlRXh0ZW5zaW9ucy1SZXF1aXJlbWVudC11c2FiaWxpdHlSZXF1aXJlbWVudC1iYXNlX0NsYXNzIiBuYW1lPSJiYXNlX0NsYXNzIiB2aXNpYmlsaXR5PSJwdWJsaWMiIGFzc29jaWF0aW9uPSJTeXNNTE5vbk5vcm1hdGl2ZUV4dGVuc2lvbnMtUmVxdWlyZW1lbnQtRV9leHRlbnNpb25fdXNhYmlsaXR5UmVxdWlyZW1lbnRfYmFzZV9DbGFzcyI+DQorICAgICAgICA8dHlwZSB4bWk6dHlwZT0idW1sOkNsYXNzIiBocmVmPSJwYXRobWFwOi8vVU1MX01FVEFNT0RFTFMvVU1MLm1ldGFtb2RlbC51bWwjQ2xhc3MiLz4NCisgICAgICA8L293bmVkQXR0cmlidXRlPg0KKyAgICA8L3BhY2thZ2VkRWxlbWVudD4NCisgICAgPHBhY2thZ2VkRWxlbWVudCB4bWk6dHlwZT0idW1sOlN0ZXJlb3R5cGUiIHhtaTppZD0iU3lzTUxOb25Ob3JtYXRpdmVFeHRlbnNpb25zLVJlcXVpcmVtZW50LWRlc2lnbkNvbnN0cmFpbnQiIG5hbWU9ImRlc2lnbkNvbnN0cmFpbnQiPg0KKyAgICAgIDxvd25lZENvbW1lbnQgeG1pOmlkPSJTeXNNTE5vbk5vcm1hdGl2ZUV4dGVuc2lvbnMtUmVxdWlyZW1lbnQtZGVzaWduQ29uc3RyYWludC1vd25lZENvbW1lbnQiIGFubm90YXRlZEVsZW1lbnQ9IlN5c01MTm9uTm9ybWF0aXZlRXh0ZW5zaW9ucy1SZXF1aXJlbWVudC1kZXNpZ25Db25zdHJhaW50Ij4NCisgICAgICAgIDxib2R5PlJlcXVpcmVtZW50IHRoYXQgc3BlY2lmaWVzIGEgY29uc3RyYWludCBvbiB0aGUgaW1wbGVtZW50YXRpb24gb2YgdGhlIHN5c3RlbSBvciBzeXN0ZW0gcGFydCwgc3VjaCBhcyB0aGUgc3lzdGVtIG11c3QgdXNlIGEgY29tbWVyY2lhbCBvZmYgdGhlIHNoZWxmIGNvbXBvbmVudC48L2JvZHk+DQorICAgICAgPC9vd25lZENvbW1lbnQ+DQorICAgICAgPGdlbmVyYWxpemF0aW9uIHhtaTppZD0iU3lzTUxOb25Ob3JtYXRpdmVFeHRlbnNpb25zLVJlcXVpcmVtZW50LWRlc2lnbkNvbnN0cmFpbnQtZ2VuZXJhbGl6YXRpb24iIGdlbmVyYWw9IlN5c01MTm9uTm9ybWF0aXZlRXh0ZW5zaW9ucy1SZXF1aXJlbWVudC1leHRlbmRlZFJlcXVpcmVtZW50IiBpc1N1YnN0aXR1dGFibGU9ImZhbHNlIi8+DQorICAgICAgPG93bmVkQXR0cmlidXRlIHhtaTppZD0iU3lzTUxOb25Ob3JtYXRpdmVFeHRlbnNpb25zLVJlcXVpcmVtZW50LWRlc2lnbkNvbnN0cmFpbnQtYmFzZV9DbGFzcyIgbmFtZT0iYmFzZV9DbGFzcyIgdmlzaWJpbGl0eT0icHVibGljIiBhc3NvY2lhdGlvbj0iU3lzTUxOb25Ob3JtYXRpdmVFeHRlbnNpb25zLVJlcXVpcmVtZW50LUVfZXh0ZW5zaW9uX2Rlc2lnbkNvbnN0cmFpbnRfYmFzZV9DbGFzcyI+DQorICAgICAgICA8dHlwZSB4bWk6dHlwZT0idW1sOkNsYXNzIiBocmVmPSJwYXRobWFwOi8vVU1MX01FVEFNT0RFTFMvVU1MLm1ldGFtb2RlbC51bWwjQ2xhc3MiLz4NCisgICAgICA8L293bmVkQXR0cmlidXRlPg0KKyAgICA8L3BhY2thZ2VkRWxlbWVudD4NCisgICAgPHBhY2thZ2VkRWxlbWVudCB4bWk6dHlwZT0idW1sOkV4dGVuc2lvbiIgeG1pOmlkPSJTeXNNTE5vbk5vcm1hdGl2ZUV4dGVuc2lvbnMtUmVxdWlyZW1lbnQtRV9leHRlbnNpb25fZGVzaWduQ29uc3RyYWludF9iYXNlX0NsYXNzIiBuYW1lPSJFX2V4dGVuc2lvbl9kZXNpZ25Db25zdHJhaW50X2Jhc2VfQ2xhc3MiIG1lbWJlckVuZD0iU3lzTUxOb25Ob3JtYXRpdmVFeHRlbnNpb25zLVJlcXVpcmVtZW50LUVfZXh0ZW5zaW9uX2Rlc2lnbkNvbnN0cmFpbnRfYmFzZV9DbGFzcy1leHRlbnNpb25fZnVuY3Rpb25hbFJlcXVpcmVtZW50MyBTeXNNTE5vbk5vcm1hdGl2ZUV4dGVuc2lvbnMtUmVxdWlyZW1lbnQtZGVzaWduQ29uc3RyYWludC1iYXNlX0NsYXNzIiBuYXZpZ2FibGVPd25lZEVuZD0iU3lzTUxOb25Ob3JtYXRpdmVFeHRlbnNpb25zLVJlcXVpcmVtZW50LUVfZXh0ZW5zaW9uX2Rlc2lnbkNvbnN0cmFpbnRfYmFzZV9DbGFzcy1leHRlbnNpb25fZnVuY3Rpb25hbFJlcXVpcmVtZW50MyI+DQorICAgICAgPG93bmVkRW5kIHhtaTp0eXBlPSJ1bWw6RXh0ZW5zaW9uRW5kIiB4bWk6aWQ9IlN5c01MTm9uTm9ybWF0aXZlRXh0ZW5zaW9ucy1SZXF1aXJlbWVudC1FX2V4dGVuc2lvbl9kZXNpZ25Db25zdHJhaW50X2Jhc2VfQ2xhc3MtZXh0ZW5zaW9uX2Z1bmN0aW9uYWxSZXF1aXJlbWVudDMiIG5hbWU9ImV4dGVuc2lvbl9mdW5jdGlvbmFsUmVxdWlyZW1lbnQzIiB2aXNpYmlsaXR5PSJwdWJsaWMiIHR5cGU9IlN5c01MTm9uTm9ybWF0aXZlRXh0ZW5zaW9ucy1SZXF1aXJlbWVudC1kZXNpZ25Db25zdHJhaW50IiBhZ2dyZWdhdGlvbj0iY29tcG9zaXRlIiBhc3NvY2lhdGlvbj0iU3lzTUxOb25Ob3JtYXRpdmVFeHRlbnNpb25zLVJlcXVpcmVtZW50LUVfZXh0ZW5zaW9uX2Rlc2lnbkNvbnN0cmFpbnRfYmFzZV9DbGFzcyI+DQorICAgICAgICA8bG93ZXJWYWx1ZSB4bWk6dHlwZT0idW1sOkxpdGVyYWxJbnRlZ2VyIiB4bWk6aWQ9IlN5c01MTm9uTm9ybWF0aXZlRXh0ZW5zaW9ucy1SZXF1aXJlbWVudC1FX2V4dGVuc2lvbl9kZXNpZ25Db25zdHJhaW50X2Jhc2VfQ2xhc3MtZXh0ZW5zaW9uX2Z1bmN0aW9uYWxSZXF1aXJlbWVudDMtbG93ZXJWYWx1ZSIgbmFtZT0iIi8+DQorICAgICAgICA8dXBwZXJWYWx1ZSB4bWk6dHlwZT0idW1sOkxpdGVyYWxVbmxpbWl0ZWROYXR1cmFsIiB4bWk6aWQ9IlN5c01MTm9uTm9ybWF0aXZlRXh0ZW5zaW9ucy1SZXF1aXJlbWVudC1FX2V4dGVuc2lvbl9kZXNpZ25Db25zdHJhaW50X2Jhc2VfQ2xhc3MtZXh0ZW5zaW9uX2Z1bmN0aW9uYWxSZXF1aXJlbWVudDMtdXBwZXJWYWx1ZSIgbmFtZT0iIiB2YWx1ZT0iMSIvPg0KKyAgICAgIDwvb3duZWRFbmQ+DQorICAgIDwvcGFja2FnZWRFbGVtZW50Pg0KKyAgICA8cGFja2FnZWRFbGVtZW50IHhtaTp0eXBlPSJ1bWw6RXh0ZW5zaW9uIiB4bWk6aWQ9IlN5c01MTm9uTm9ybWF0aXZlRXh0ZW5zaW9ucy1SZXF1aXJlbWVudC1FX2V4dGVuc2lvbl9wZXJmb3JtYW5jZVJlcXVpcmVtZW50X2Jhc2VfQ2xhc3MiIG5hbWU9IkVfZXh0ZW5zaW9uX3BlcmZvcm1hbmNlUmVxdWlyZW1lbnRfYmFzZV9DbGFzcyIgbWVtYmVyRW5kPSJTeXNNTE5vbk5vcm1hdGl2ZUV4dGVuc2lvbnMtUmVxdWlyZW1lbnQtRV9leHRlbnNpb25fcGVyZm9ybWFuY2VSZXF1aXJlbWVudF9iYXNlX0NsYXNzLWV4dGVuc2lvbl9mdW5jdGlvbmFsUmVxdWlyZW1lbnQgU3lzTUxOb25Ob3JtYXRpdmVFeHRlbnNpb25zLVJlcXVpcmVtZW50LXBlcmZvcm1hbmNlUmVxdWlyZW1lbnQtYmFzZV9DbGFzcyIgbmF2aWdhYmxlT3duZWRFbmQ9IlN5c01MTm9uTm9ybWF0aXZlRXh0ZW5zaW9ucy1SZXF1aXJlbWVudC1FX2V4dGVuc2lvbl9wZXJmb3JtYW5jZVJlcXVpcmVtZW50X2Jhc2VfQ2xhc3MtZXh0ZW5zaW9uX2Z1bmN0aW9uYWxSZXF1aXJlbWVudCI+DQorICAgICAgPG93bmVkRW5kIHhtaTp0eXBlPSJ1bWw6RXh0ZW5zaW9uRW5kIiB4bWk6aWQ9IlN5c01MTm9uTm9ybWF0aXZlRXh0ZW5zaW9ucy1SZXF1aXJlbWVudC1FX2V4dGVuc2lvbl9wZXJmb3JtYW5jZVJlcXVpcmVtZW50X2Jhc2VfQ2xhc3MtZXh0ZW5zaW9uX2Z1bmN0aW9uYWxSZXF1aXJlbWVudCIgbmFtZT0iZXh0ZW5zaW9uX2Z1bmN0aW9uYWxSZXF1aXJlbWVudCIgdmlzaWJpbGl0eT0icHVibGljIiB0eXBlPSJTeXNNTE5vbk5vcm1hdGl2ZUV4dGVuc2lvbnMtUmVxdWlyZW1lbnQtcGVyZm9ybWFuY2VSZXF1aXJlbWVudCIgYWdncmVnYXRpb249ImNvbXBvc2l0ZSIgYXNzb2NpYXRpb249IlN5c01MTm9uTm9ybWF0aXZlRXh0ZW5zaW9ucy1SZXF1aXJlbWVudC1FX2V4dGVuc2lvbl9wZXJmb3JtYW5jZVJlcXVpcmVtZW50X2Jhc2VfQ2xhc3MiPg0KKyAgICAgICAgPGxvd2VyVmFsdWUgeG1pOnR5cGU9InVtbDpMaXRlcmFsSW50ZWdlciIgeG1pOmlkPSJTeXNNTE5vbk5vcm1hdGl2ZUV4dGVuc2lvbnMtUmVxdWlyZW1lbnQtRV9leHRlbnNpb25fcGVyZm9ybWFuY2VSZXF1aXJlbWVudF9iYXNlX0NsYXNzLWV4dGVuc2lvbl9mdW5jdGlvbmFsUmVxdWlyZW1lbnQtbG93ZXJWYWx1ZSIgbmFtZT0iIi8+DQorICAgICAgICA8dXBwZXJWYWx1ZSB4bWk6dHlwZT0idW1sOkxpdGVyYWxVbmxpbWl0ZWROYXR1cmFsIiB4bWk6aWQ9IlN5c01MTm9uTm9ybWF0aXZlRXh0ZW5zaW9ucy1SZXF1aXJlbWVudC1FX2V4dGVuc2lvbl9wZXJmb3JtYW5jZVJlcXVpcmVtZW50X2Jhc2VfQ2xhc3MtZXh0ZW5zaW9uX2Z1bmN0aW9uYWxSZXF1aXJlbWVudC11cHBlclZhbHVlIiBuYW1lPSIiIHZhbHVlPSIxIi8+DQorICAgICAgPC9vd25lZEVuZD4NCisgICAgPC9wYWNrYWdlZEVsZW1lbnQ+DQorICAgIDxwYWNrYWdlZEVsZW1lbnQgeG1pOnR5cGU9InVtbDpTdGVyZW90eXBlIiB4bWk6aWQ9IlN5c01MTm9uTm9ybWF0aXZlRXh0ZW5zaW9ucy1SZXF1aXJlbWVudC1pbnRlcmZhY2VSZXF1aXJlbWVudCIgbmFtZT0iaW50ZXJmYWNlUmVxdWlyZW1lbnQiPg0KKyAgICAgIDxvd25lZENvbW1lbnQgeG1pOmlkPSJTeXNNTE5vbk5vcm1hdGl2ZUV4dGVuc2lvbnMtUmVxdWlyZW1lbnQtaW50ZXJmYWNlUmVxdWlyZW1lbnQtb3duZWRDb21tZW50IiBhbm5vdGF0ZWRFbGVtZW50PSJTeXNNTE5vbk5vcm1hdGl2ZUV4dGVuc2lvbnMtUmVxdWlyZW1lbnQtaW50ZXJmYWNlUmVxdWlyZW1lbnQiPg0KKyAgICAgICAgPGJvZHk+UmVxdWlyZW1lbnQgdGhhdCBzcGVjaWZpZXMgdGhlIHBvcnRzIGZvciBjb25uZWN0aW5nIHN5c3RlbXMgYW5kIHN5c3RlbSBwYXJ0cyBhbmQgdGhlIG9wdGlvbmFsbHkgbWF5IGluY2x1ZGUgdGhlIGl0ZW0gZmxvd3MgYWNyb3NzIHRoZSBjb25uZWN0b3IgYW5kL29yIEludGVyZmFjZSBjb25zdHJhaW50cy48L2JvZHk+DQorICAgICAgPC9vd25lZENvbW1lbnQ+DQorICAgICAgPGdlbmVyYWxpemF0aW9uIHhtaTppZD0iU3lzTUxOb25Ob3JtYXRpdmVFeHRlbnNpb25zLVJlcXVpcmVtZW50LWludGVyZmFjZVJlcXVpcmVtZW50LWdlbmVyYWxpemF0aW9uIiBnZW5lcmFsPSJTeXNNTE5vbk5vcm1hdGl2ZUV4dGVuc2lvbnMtUmVxdWlyZW1lbnQtZXh0ZW5kZWRSZXF1aXJlbWVudCIgaXNTdWJzdGl0dXRhYmxlPSJmYWxzZSIvPg0KKyAgICAgIDxvd25lZEF0dHJpYnV0ZSB4bWk6aWQ9IlN5c01MTm9uTm9ybWF0aXZlRXh0ZW5zaW9ucy1SZXF1aXJlbWVudC1pbnRlcmZhY2VSZXF1aXJlbWVudC1iYXNlX0NsYXNzIiBuYW1lPSJiYXNlX0NsYXNzIiB2aXNpYmlsaXR5PSJwdWJsaWMiIGFzc29jaWF0aW9uPSJTeXNNTE5vbk5vcm1hdGl2ZUV4dGVuc2lvbnMtUmVxdWlyZW1lbnQtRV9leHRlbnNpb25faW50ZXJmYWNlUmVxdWlyZW1lbnRfYmFzZV9DbGFzcyI+DQorICAgICAgICA8dHlwZSB4bWk6dHlwZT0idW1sOkNsYXNzIiBocmVmPSJwYXRobWFwOi8vVU1MX01FVEFNT0RFTFMvVU1MLm1ldGFtb2RlbC51bWwjQ2xhc3MiLz4NCisgICAgICA8L293bmVkQXR0cmlidXRlPg0KKyAgICA8L3BhY2thZ2VkRWxlbWVudD4NCisgICAgPHBhY2thZ2VkRWxlbWVudCB4bWk6dHlwZT0idW1sOkV4dGVuc2lvbiIgeG1pOmlkPSJTeXNNTE5vbk5vcm1hdGl2ZUV4dGVuc2lvbnMtUmVxdWlyZW1lbnQtRV9leHRlbnNpb25fZnVuY3Rpb25hbFJlcXVpcmVtZW50X2Jhc2VfQ2xhc3MiIG5hbWU9IkVfZXh0ZW5zaW9uX2Z1bmN0aW9uYWxSZXF1aXJlbWVudF9iYXNlX0NsYXNzIiBtZW1iZXJFbmQ9IlN5c01MTm9uTm9ybWF0aXZlRXh0ZW5zaW9ucy1SZXF1aXJlbWVudC1FX2V4dGVuc2lvbl9mdW5jdGlvbmFsUmVxdWlyZW1lbnRfYmFzZV9DbGFzcy1leHRlbnNpb25fIFN5c01MTm9uTm9ybWF0aXZlRXh0ZW5zaW9ucy1SZXF1aXJlbWVudC1mdW5jdGlvbmFsUmVxdWlyZW1lbnQtYmFzZV9DbGFzcyIgbmF2aWdhYmxlT3duZWRFbmQ9IlN5c01MTm9uTm9ybWF0aXZlRXh0ZW5zaW9ucy1SZXF1aXJlbWVudC1FX2V4dGVuc2lvbl9mdW5jdGlvbmFsUmVxdWlyZW1lbnRfYmFzZV9DbGFzcy1leHRlbnNpb25fIj4NCisgICAgICA8b3duZWRFbmQgeG1pOnR5cGU9InVtbDpFeHRlbnNpb25FbmQiIHhtaTppZD0iU3lzTUxOb25Ob3JtYXRpdmVFeHRlbnNpb25zLVJlcXVpcmVtZW50LUVfZXh0ZW5zaW9uX2Z1bmN0aW9uYWxSZXF1aXJlbWVudF9iYXNlX0NsYXNzLWV4dGVuc2lvbl8iIG5hbWU9ImV4dGVuc2lvbl8iIHZpc2liaWxpdHk9InB1YmxpYyIgdHlwZT0iU3lzTUxOb25Ob3JtYXRpdmVFeHRlbnNpb25zLVJlcXVpcmVtZW50LWZ1bmN0aW9uYWxSZXF1aXJlbWVudCIgYWdncmVnYXRpb249ImNvbXBvc2l0ZSIgYXNzb2NpYXRpb249IlN5c01MTm9uTm9ybWF0aXZlRXh0ZW5zaW9ucy1SZXF1aXJlbWVudC1FX2V4dGVuc2lvbl9mdW5jdGlvbmFsUmVxdWlyZW1lbnRfYmFzZV9DbGFzcyI+DQorICAgICAgICA8bG93ZXJWYWx1ZSB4bWk6dHlwZT0idW1sOkxpdGVyYWxJbnRlZ2VyIiB4bWk6aWQ9IlN5c01MTm9uTm9ybWF0aXZlRXh0ZW5zaW9ucy1SZXF1aXJlbWVudC1FX2V4dGVuc2lvbl9mdW5jdGlvbmFsUmVxdWlyZW1lbnRfYmFzZV9DbGFzcy1leHRlbnNpb25fLWxvd2VyVmFsdWUiIG5hbWU9IiIvPg0KKyAgICAgICAgPHVwcGVyVmFsdWUgeG1pOnR5cGU9InVtbDpMaXRlcmFsVW5saW1pdGVkTmF0dXJhbCIgeG1pOmlkPSJTeXNNTE5vbk5vcm1hdGl2ZUV4dGVuc2lvbnMtUmVxdWlyZW1lbnQtRV9leHRlbnNpb25fZnVuY3Rpb25hbFJlcXVpcmVtZW50X2Jhc2VfQ2xhc3MtZXh0ZW5zaW9uXy11cHBlclZhbHVlIiBuYW1lPSIiIHZhbHVlPSIxIi8+DQorICAgICAgPC9vd25lZEVuZD4NCisgICAgPC9wYWNrYWdlZEVsZW1lbnQ+DQorICAgIDxwYWNrYWdlZEVsZW1lbnQgeG1pOnR5cGU9InVtbDpFeHRlbnNpb24iIHhtaTppZD0iU3lzTUxOb25Ob3JtYXRpdmVFeHRlbnNpb25zLVJlcXVpcmVtZW50LUVfZXh0ZW5zaW9uX2ludGVyZmFjZVJlcXVpcmVtZW50X2Jhc2VfQ2xhc3MiIG5hbWU9IkVfZXh0ZW5zaW9uX2ludGVyZmFjZVJlcXVpcmVtZW50X2Jhc2VfQ2xhc3MiIG1lbWJlckVuZD0iU3lzTUxOb25Ob3JtYXRpdmVFeHRlbnNpb25zLVJlcXVpcmVtZW50LUVfZXh0ZW5zaW9uX2ludGVyZmFjZVJlcXVpcmVtZW50X2Jhc2VfQ2xhc3MtZXh0ZW5zaW9uX2Z1bmN0aW9uYWxSZXF1aXJlbWVudCBTeXNNTE5vbk5vcm1hdGl2ZUV4dGVuc2lvbnMtUmVxdWlyZW1lbnQtaW50ZXJmYWNlUmVxdWlyZW1lbnQtYmFzZV9DbGFzcyIgbmF2aWdhYmxlT3duZWRFbmQ9IlN5c01MTm9uTm9ybWF0aXZlRXh0ZW5zaW9ucy1SZXF1aXJlbWVudC1FX2V4dGVuc2lvbl9pbnRlcmZhY2VSZXF1aXJlbWVudF9iYXNlX0NsYXNzLWV4dGVuc2lvbl9mdW5jdGlvbmFsUmVxdWlyZW1lbnQiPg0KKyAgICAgIDxvd25lZEVuZCB4bWk6dHlwZT0idW1sOkV4dGVuc2lvbkVuZCIgeG1pOmlkPSJTeXNNTE5vbk5vcm1hdGl2ZUV4dGVuc2lvbnMtUmVxdWlyZW1lbnQtRV9leHRlbnNpb25faW50ZXJmYWNlUmVxdWlyZW1lbnRfYmFzZV9DbGFzcy1leHRlbnNpb25fZnVuY3Rpb25hbFJlcXVpcmVtZW50IiBuYW1lPSJleHRlbnNpb25fZnVuY3Rpb25hbFJlcXVpcmVtZW50IiB2aXNpYmlsaXR5PSJwdWJsaWMiIHR5cGU9IlN5c01MTm9uTm9ybWF0aXZlRXh0ZW5zaW9ucy1SZXF1aXJlbWVudC1pbnRlcmZhY2VSZXF1aXJlbWVudCIgYWdncmVnYXRpb249ImNvbXBvc2l0ZSIgYXNzb2NpYXRpb249IlN5c01MTm9uTm9ybWF0aXZlRXh0ZW5zaW9ucy1SZXF1aXJlbWVudC1FX2V4dGVuc2lvbl9pbnRlcmZhY2VSZXF1aXJlbWVudF9iYXNlX0NsYXNzIj4NCisgICAgICAgIDxsb3dlclZhbHVlIHhtaTp0eXBlPSJ1bWw6TGl0ZXJhbEludGVnZXIiIHhtaTppZD0iU3lzTUxOb25Ob3JtYXRpdmVFeHRlbnNpb25zLVJlcXVpcmVtZW50LUVfZXh0ZW5zaW9uX2ludGVyZmFjZVJlcXVpcmVtZW50X2Jhc2VfQ2xhc3MtZXh0ZW5zaW9uX2Z1bmN0aW9uYWxSZXF1aXJlbWVudC1sb3dlclZhbHVlIiBuYW1lPSIiLz4NCisgICAgICAgIDx1cHBlclZhbHVlIHhtaTp0eXBlPSJ1bWw6TGl0ZXJhbFVubGltaXRlZE5hdHVyYWwiIHhtaTppZD0iU3lzTUxOb25Ob3JtYXRpdmVFeHRlbnNpb25zLVJlcXVpcmVtZW50LUVfZXh0ZW5zaW9uX2ludGVyZmFjZVJlcXVpcmVtZW50X2Jhc2VfQ2xhc3MtZXh0ZW5zaW9uX2Z1bmN0aW9uYWxSZXF1aXJlbWVudC11cHBlclZhbHVlIiBuYW1lPSIiIHZhbHVlPSIxIi8+DQorICAgICAgPC9vd25lZEVuZD4NCisgICAgPC9wYWNrYWdlZEVsZW1lbnQ+DQorICAgIDxwYWNrYWdlZEVsZW1lbnQgeG1pOnR5cGU9InVtbDpTdGVyZW90eXBlIiB4bWk6aWQ9IlN5c01MTm9uTm9ybWF0aXZlRXh0ZW5zaW9ucy1SZXF1aXJlbWVudC1waHlzaWNhbFJlcXVpcmVtZW50IiBuYW1lPSJwaHlzaWNhbFJlcXVpcmVtZW50Ij4NCisgICAgICA8b3duZWRDb21tZW50IHhtaTppZD0iU3lzTUxOb25Ob3JtYXRpdmVFeHRlbnNpb25zLVJlcXVpcmVtZW50LXBoeXNpY2FsUmVxdWlyZW1lbnQtb3duZWRDb21tZW50IiBhbm5vdGF0ZWRFbGVtZW50PSJTeXNNTE5vbk5vcm1hdGl2ZUV4dGVuc2lvbnMtUmVxdWlyZW1lbnQtcGh5c2ljYWxSZXF1aXJlbWVudCI+DQorICAgICAgICA8Ym9keT5SZXF1aXJlbWVudCB0aGF0IHNwZWNpZmllcyBwaHlzaWNhbCBjaGFyYWN0ZXJpc3RpY3MgYW5kL29yIHBoeXNpY2FsIGNvbnN0cmFpbnRzIG9mIHRoZSBzeXN0ZW0sIG9yIGEgc3lzdGVtIHBhcnQuPC9ib2R5Pg0KKyAgICAgIDwvb3duZWRDb21tZW50Pg0KKyAgICAgIDxnZW5lcmFsaXphdGlvbiB4bWk6aWQ9IlN5c01MTm9uTm9ybWF0aXZlRXh0ZW5zaW9ucy1SZXF1aXJlbWVudC1waHlzaWNhbFJlcXVpcmVtZW50LWdlbmVyYWxpemF0aW9uIiBnZW5lcmFsPSJTeXNNTE5vbk5vcm1hdGl2ZUV4dGVuc2lvbnMtUmVxdWlyZW1lbnQtZXh0ZW5kZWRSZXF1aXJlbWVudCIgaXNTdWJzdGl0dXRhYmxlPSJmYWxzZSIvPg0KKyAgICAgIDxvd25lZEF0dHJpYnV0ZSB4bWk6aWQ9IlN5c01MTm9uTm9ybWF0aXZlRXh0ZW5zaW9ucy1SZXF1aXJlbWVudC1waHlzaWNhbFJlcXVpcmVtZW50LWJhc2VfQ2xhc3MiIG5hbWU9ImJhc2VfQ2xhc3MiIHZpc2liaWxpdHk9InB1YmxpYyIgYXNzb2NpYXRpb249IlN5c01MTm9uTm9ybWF0aXZlRXh0ZW5zaW9ucy1SZXF1aXJlbWVudC1FX2V4dGVuc2lvbl9waHlzaWNhbFJlcXVpcmVtZW50X2Jhc2VfQ2xhc3MiPg0KKyAgICAgICAgPHR5cGUgeG1pOnR5cGU9InVtbDpDbGFzcyIgaHJlZj0icGF0aG1hcDovL1VNTF9NRVRBTU9ERUxTL1VNTC5tZXRhbW9kZWwudW1sI0NsYXNzIi8+DQorICAgICAgPC9vd25lZEF0dHJpYnV0ZT4NCisgICAgPC9wYWNrYWdlZEVsZW1lbnQ+DQorICAgIDxwYWNrYWdlZEVsZW1lbnQgeG1pOnR5cGU9InVtbDpFeHRlbnNpb24iIHhtaTppZD0iU3lzTUxOb25Ob3JtYXRpdmVFeHRlbnNpb25zLVJlcXVpcmVtZW50LUVfZXh0ZW5zaW9uX2V4dGVuZGVkUmVxdWlyZW1lbnRfYmFzZV9DbGFzcyIgbmFtZT0iRV9leHRlbnNpb25fZXh0ZW5kZWRSZXF1aXJlbWVudF9iYXNlX0NsYXNzIiBtZW1iZXJFbmQ9IlN5c01MTm9uTm9ybWF0aXZlRXh0ZW5zaW9ucy1SZXF1aXJlbWVudC1FX2V4dGVuc2lvbl9leHRlbmRlZFJlcXVpcmVtZW50X2Jhc2VfQ2xhc3MtZXh0ZW5zaW9uXyBTeXNNTE5vbk5vcm1hdGl2ZUV4dGVuc2lvbnMtUmVxdWlyZW1lbnQtZXh0ZW5kZWRSZXF1aXJlbWVudC1iYXNlX0NsYXNzIiBuYXZpZ2FibGVPd25lZEVuZD0iU3lzTUxOb25Ob3JtYXRpdmVFeHRlbnNpb25zLVJlcXVpcmVtZW50LUVfZXh0ZW5zaW9uX2V4dGVuZGVkUmVxdWlyZW1lbnRfYmFzZV9DbGFzcy1leHRlbnNpb25fIj4NCisgICAgICA8b3duZWRFbmQgeG1pOnR5cGU9InVtbDpFeHRlbnNpb25FbmQiIHhtaTppZD0iU3lzTUxOb25Ob3JtYXRpdmVFeHRlbnNpb25zLVJlcXVpcmVtZW50LUVfZXh0ZW5zaW9uX2V4dGVuZGVkUmVxdWlyZW1lbnRfYmFzZV9DbGFzcy1leHRlbnNpb25fIiBuYW1lPSJleHRlbnNpb25fIiB2aXNpYmlsaXR5PSJwdWJsaWMiIHR5cGU9IlN5c01MTm9uTm9ybWF0aXZlRXh0ZW5zaW9ucy1SZXF1aXJlbWVudC1leHRlbmRlZFJlcXVpcmVtZW50IiBhZ2dyZWdhdGlvbj0iY29tcG9zaXRlIiBhc3NvY2lhdGlvbj0iU3lzTUxOb25Ob3JtYXRpdmVFeHRlbnNpb25zLVJlcXVpcmVtZW50LUVfZXh0ZW5zaW9uX2V4dGVuZGVkUmVxdWlyZW1lbnRfYmFzZV9DbGFzcyI+DQorICAgICAgICA8bG93ZXJWYWx1ZSB4bWk6dHlwZT0idW1sOkxpdGVyYWxJbnRlZ2VyIiB4bWk6aWQ9IlN5c01MTm9uTm9ybWF0aXZlRXh0ZW5zaW9ucy1SZXF1aXJlbWVudC1FX2V4dGVuc2lvbl9leHRlbmRlZFJlcXVpcmVtZW50X2Jhc2VfQ2xhc3MtZXh0ZW5zaW9uXy1sb3dlclZhbHVlIiBuYW1lPSIiLz4NCisgICAgICAgIDx1cHBlclZhbHVlIHhtaTp0eXBlPSJ1bWw6TGl0ZXJhbFVubGltaXRlZE5hdHVyYWwiIHhtaTppZD0iU3lzTUxOb25Ob3JtYXRpdmVFeHRlbnNpb25zLVJlcXVpcmVtZW50LUVfZXh0ZW5zaW9uX2V4dGVuZGVkUmVxdWlyZW1lbnRfYmFzZV9DbGFzcy1leHRlbnNpb25fLXVwcGVyVmFsdWUiIG5hbWU9IiIgdmFsdWU9IjEiLz4NCisgICAgICA8L293bmVkRW5kPg0KKyAgICA8L3BhY2thZ2VkRWxlbWVudD4NCisgICAgPHBhY2thZ2VkRWxlbWVudCB4bWk6dHlwZT0idW1sOlN0ZXJlb3R5cGUiIHhtaTppZD0iU3lzTUxOb25Ob3JtYXRpdmVFeHRlbnNpb25zLVJlcXVpcmVtZW50LWJ1c2luZXNzUmVxdWlyZW1lbnQiIG5hbWU9ImJ1c2luZXNzUmVxdWlyZW1lbnQiPg0KKyAgICAgIDxvd25lZENvbW1lbnQgeG1pOmlkPSJTeXNNTE5vbk5vcm1hdGl2ZUV4dGVuc2lvbnMtUmVxdWlyZW1lbnQtYnVzaW5lc3NSZXF1aXJlbWVudC1vd25lZENvbW1lbnQiIGFubm90YXRlZEVsZW1lbnQ9IlN5c01MTm9uTm9ybWF0aXZlRXh0ZW5zaW9ucy1SZXF1aXJlbWVudC1idXNpbmVzc1JlcXVpcmVtZW50Ij4NCisgICAgICAgIDxib2R5PkhpZ2gtbGV2ZWwgYnVzaW5lc3MgcmVxdWlyZW1lbnQuPC9ib2R5Pg0KKyAgICAgIDwvb3duZWRDb21tZW50Pg0KKyAgICAgIDxnZW5lcmFsaXphdGlvbiB4bWk6aWQ9IlN5c01MTm9uTm9ybWF0aXZlRXh0ZW5zaW9ucy1SZXF1aXJlbWVudC1idXNpbmVzc1JlcXVpcmVtZW50LWdlbmVyYWxpemF0aW9uIiBnZW5lcmFsPSJTeXNNTE5vbk5vcm1hdGl2ZUV4dGVuc2lvbnMtUmVxdWlyZW1lbnQtZXh0ZW5kZWRSZXF1aXJlbWVudCIgaXNTdWJzdGl0dXRhYmxlPSJmYWxzZSIvPg0KKyAgICAgIDxvd25lZEF0dHJpYnV0ZSB4bWk6aWQ9IlN5c01MTm9uTm9ybWF0aXZlRXh0ZW5zaW9ucy1SZXF1aXJlbWVudC1idXNpbmVzc1JlcXVpcmVtZW50LWJhc2VfQ2xhc3MiIG5hbWU9ImJhc2VfQ2xhc3MiIHZpc2liaWxpdHk9InB1YmxpYyIgYXNzb2NpYXRpb249IlN5c01MTm9uTm9ybWF0aXZlRXh0ZW5zaW9ucy1SZXF1aXJlbWVudC1FX2V4dGVuc2lvbl9idXNpbmVzc1JlcXVpcmVtZW50X2Jhc2VfQ2xhc3MiPg0KKyAgICAgICAgPHR5cGUgeG1pOnR5cGU9InVtbDpDbGFzcyIgaHJlZj0icGF0aG1hcDovL1VNTF9NRVRBTU9ERUxTL1VNTC5tZXRhbW9kZWwudW1sI0NsYXNzIi8+DQorICAgICAgPC9vd25lZEF0dHJpYnV0ZT4NCisgICAgPC9wYWNrYWdlZEVsZW1lbnQ+DQorICAgIDxwYWNrYWdlZEVsZW1lbnQgeG1pOnR5cGU9InVtbDpFbnVtZXJhdGlvbiIgeG1pOmlkPSJTeXNNTE5vbk5vcm1hdGl2ZUV4dGVuc2lvbnMtUmVxdWlyZW1lbnQtUmlza0tpbmQiIG5hbWU9IlJpc2tLaW5kIj4NCisgICAgICA8b3duZWRDb21tZW50IHhtaTppZD0iU3lzTUxOb25Ob3JtYXRpdmVFeHRlbnNpb25zLVJlcXVpcmVtZW50LVJpc2tLaW5kLW93bmVkQ29tbWVudCIgYW5ub3RhdGVkRWxlbWVudD0iU3lzTUxOb25Ob3JtYXRpdmVFeHRlbnNpb25zLVJlcXVpcmVtZW50LVJpc2tLaW5kIj4NCisgICAgICAgIDxib2R5PjEpIEhpZ2ggaW5kaWNhdGVzIGFuIHVuYWNjZXB0YWJsZSBsZXZlbCBvZiByaXNrLCANCisyKSBNZWRpdW0gaW5kaWNhdGVzIGFuIGFjY2VwdGFibGUgbGV2ZWwgb2YgcmlzaywgYW5kDQorMykgTG93IGluZGljYXRlcyBhIG1pbmltYWwgbGV2ZWwgb2YgcmlzayBvciBubyByaXNrPC9ib2R5Pg0KKyAgICAgIDwvb3duZWRDb21tZW50Pg0KKyAgICAgIDxvd25lZExpdGVyYWwgeG1pOmlkPSJTeXNNTE5vbk5vcm1hdGl2ZUV4dGVuc2lvbnMtUmVxdWlyZW1lbnQtUmlza0tpbmQtSGlnaCIgbmFtZT0iSGlnaCI+DQorICAgICAgICA8b3duZWRDb21tZW50IHhtaTppZD0iU3lzTUxOb25Ob3JtYXRpdmVFeHRlbnNpb25zLVJlcXVpcmVtZW50LVJpc2tLaW5kLUhpZ2gtb3duZWRDb21tZW50IiBhbm5vdGF0ZWRFbGVtZW50PSJTeXNNTE5vbk5vcm1hdGl2ZUV4dGVuc2lvbnMtUmVxdWlyZW1lbnQtUmlza0tpbmQtSGlnaCI+DQorICAgICAgICAgIDxib2R5PkhpZ2ggaW5kaWNhdGVzIGFuIHVuYWNjZXB0YWJsZSBsZXZlbCBvZiByaXNrPC9ib2R5Pg0KKyAgICAgICAgPC9vd25lZENvbW1lbnQ+DQorICAgICAgPC9vd25lZExpdGVyYWw+DQorICAgICAgPG93bmVkTGl0ZXJhbCB4bWk6aWQ9IlN5c01MTm9uTm9ybWF0aXZlRXh0ZW5zaW9ucy1SZXF1aXJlbWVudC1SaXNrS2luZC1NZWRpdW0iIG5hbWU9Ik1lZGl1bSI+DQorICAgICAgICA8b3duZWRDb21tZW50IHhtaTppZD0iU3lzTUxOb25Ob3JtYXRpdmVFeHRlbnNpb25zLVJlcXVpcmVtZW50LVJpc2tLaW5kLU1lZGl1bS1vd25lZENvbW1lbnQiIGFubm90YXRlZEVsZW1lbnQ9IlN5c01MTm9uTm9ybWF0aXZlRXh0ZW5zaW9ucy1SZXF1aXJlbWVudC1SaXNrS2luZC1NZWRpdW0iPg0KKyAgICAgICAgICA8Ym9keT5NZWRpdW0gaW5kaWNhdGVzIGFuIGFjY2VwdGFibGUgbGV2ZWwgb2YgcmlzazwvYm9keT4NCisgICAgICAgIDwvb3duZWRDb21tZW50Pg0KKyAgICAgIDwvb3duZWRMaXRlcmFsPg0KKyAgICAgIDxvd25lZExpdGVyYWwgeG1pOmlkPSJTeXNNTE5vbk5vcm1hdGl2ZUV4dGVuc2lvbnMtUmVxdWlyZW1lbnQtUmlza0tpbmQtTG93IiBuYW1lPSJMb3ciPg0KKyAgICAgICAgPG93bmVkQ29tbWVudCB4bWk6aWQ9IlN5c01MTm9uTm9ybWF0aXZlRXh0ZW5zaW9ucy1SZXF1aXJlbWVudC1SaXNrS2luZC1Mb3ctb3duZWRDb21tZW50IiBhbm5vdGF0ZWRFbGVtZW50PSJTeXNNTE5vbk5vcm1hdGl2ZUV4dGVuc2lvbnMtUmVxdWlyZW1lbnQtUmlza0tpbmQtTG93Ij4NCisgICAgICAgICAgPGJvZHk+TG93IGluZGljYXRlcyBhIG1pbmltYWwgbGV2ZWwgb2YgcmlzayBvciBubyByaXNrPC9ib2R5Pg0KKyAgICAgICAgPC9vd25lZENvbW1lbnQ+DQorICAgICAgPC9vd25lZExpdGVyYWw+DQorICAgIDwvcGFja2FnZWRFbGVtZW50Pg0KKyAgICA8cGFja2FnZWRFbGVtZW50IHhtaTp0eXBlPSJ1bWw6RW51bWVyYXRpb24iIHhtaTppZD0iU3lzTUxOb25Ob3JtYXRpdmVFeHRlbnNpb25zLVJlcXVpcmVtZW50LVZlcmlmaWNhdGlvbk1ldGhvZEtpbmQiIG5hbWU9IlZlcmlmaWNhdGlvbk1ldGhvZEtpbmQiPg0KKyAgICAgIDxvd25lZENvbW1lbnQgeG1pOmlkPSJTeXNNTE5vbk5vcm1hdGl2ZUV4dGVuc2lvbnMtUmVxdWlyZW1lbnQtVmVyaWZpY2F0aW9uTWV0aG9kS2luZC1vd25lZENvbW1lbnQiIGFubm90YXRlZEVsZW1lbnQ9IlN5c01MTm9uTm9ybWF0aXZlRXh0ZW5zaW9ucy1SZXF1aXJlbWVudC1WZXJpZmljYXRpb25NZXRob2RLaW5kIj4NCisgICAgICAgIDxib2R5PjEpIEFuYWx5c2lzIGluZGljYXRlcyB0aGF0IHZlcmlmaWNhdGlvbiB3aWxsIGJlIHBlcmZvcm1lZCBieSB0ZWNobmljYWwgZXZhbHVhdGlvbiB1c2luZyBtYXRoZW1hdGljYWwgcmVwcmVzZW50YXRpb25zLCBjaGFydHMsIGdyYXBocywgY2lyY3VpdCBkaWFncmFtcywgZGF0YSByZWR1Y3Rpb24sIG9yIHJlcHJlc2VudGF0aXZlIGRhdGEuIEFuYWx5c2lzIGFsc28gaW5jbHVkZXMgdGhlIHZlcmlmaWNhdGlvbiBvZiByZXF1aXJlbWVudHMgdW5kZXIgY29uZGl0aW9ucywgd2hpY2ggYXJlIHNpbXVsYXRlZCBvciBtb2RlbGVkOyB3aGVyZSB0aGUgcmVzdWx0cyBhcmUgZGVyaXZlZCBmcm9tIHRoZSBhbmFseXNpcyBvZiB0aGUgcmVzdWx0cyBwcm9kdWNlZCBieSB0aGUgbW9kZWwsDQorMikgRGVtb25zdHJhdGlvbiBpbmRpY2F0ZXMgdGhhdCB2ZXJpZmljYXRpb24gd2lsbCBiZSBwZXJmb3JtZWQgYnkgb3BlcmF0aW9uLCBtb3ZlbWVudCBvciBhZGp1c3RtZW50IG9mIHRoZSBpdGVtIHVuZGVyIHNwZWNpZmljIGNvbmRpdGlvbnMgdG8gcGVyZm9ybSB0aGUgZGVzaWduIGZ1bmN0aW9ucyB3aXRob3V0IHJlY29yZGluZyBvZiBxdWFudGl0YXRpdmUgZGF0YS4gRGVtb25zdHJhdGlvbiBpcyB0eXBpY2FsbHkgY29uc2lkZXJlZCB0aGUgbGVhc3QgcmVzdHJpY3RpdmUgb2YgdGhlIHZlcmlmaWNhdGlvbiB0eXBlcywNCiszKSBJbnNwZWN0aW9uIGluZGljYXRlcyB0aGF0IHZlcmlmaWNhdGlvbiB3aWxsIGJlIHBlcmZvcm1lZCBieSBleGFtaW5hdGlvbiBvZiB0aGUgaXRlbSwgcmV2aWV3aW5nIGRlc2NyaXB0aXZlIGRvY3VtZW50YXRpb24sIGFuZCBjb21wYXJpbmcgdGhlIGFwcHJvcHJpYXRlIGNoYXJhY3RlcmlzdGljcyB3aXRoIGEgcHJlZGV0ZXJtaW5lZCBzdGFuZGFyZCB0byBkZXRlcm1pbmUgY29uZm9ybWFuY2UgdG8gcmVxdWlyZW1lbnRzIHdpdGhvdXQgdGhlIHVzZSBvZiBzcGVjaWFsIGxhYm9yYXRvcnkgZXF1aXBtZW50IG9yIHByb2NlZHVyZXMsIGFuZA0KKzQpIFRlc3QgaW5kaWNhdGVzIHRoYXQgdmVyaWZpY2F0aW9uIHdpbGwgYmUgcGVyZm9ybWVkIHRocm91Z2ggc3lzdGVtYXRpYyBleGVyY2lzaW5nIG9mIHRoZSBhcHBsaWNhYmxlIGl0ZW0gdW5kZXIgYXBwcm9wcmlhdGUgY29uZGl0aW9ucyB3aXRoIGluc3RydW1lbnRhdGlvbiB0byBtZWFzdXJlIHJlcXVpcmVkIHBhcmFtZXRlcnMgYW5kIHRoZSBjb2xsZWN0aW9uLCBhbmFseXNpcywgYW5kIGV2YWx1YXRpb24gb2YgcXVhbnRpdGF0aXZlIGRhdGEgdG8gc2hvdyB0aGF0IG1lYXN1cmVkIHBhcmFtZXRlcnMgZXF1YWwgb3IgZXhjZWVkIHNwZWNpZmllZCByZXF1aXJlbWVudHMuPC9ib2R5Pg0KKyAgICAgIDwvb3duZWRDb21tZW50Pg0KKyAgICAgIDxvd25lZExpdGVyYWwgeG1pOmlkPSJTeXNNTE5vbk5vcm1hdGl2ZUV4dGVuc2lvbnMtUmVxdWlyZW1lbnQtVmVyaWZpY2F0aW9uTWV0aG9kS2luZC1BbmFseXNpcyIgbmFtZT0iQW5hbHlzaXMiPg0KKyAgICAgICAgPG93bmVkQ29tbWVudCB4bWk6aWQ9IlN5c01MTm9uTm9ybWF0aXZlRXh0ZW5zaW9ucy1SZXF1aXJlbWVudC1WZXJpZmljYXRpb25NZXRob2RLaW5kLUFuYWx5c2lzLW93bmVkQ29tbWVudCIgYW5ub3RhdGVkRWxlbWVudD0iU3lzTUxOb25Ob3JtYXRpdmVFeHRlbnNpb25zLVJlcXVpcmVtZW50LVZlcmlmaWNhdGlvbk1ldGhvZEtpbmQtQW5hbHlzaXMiPg0KKyAgICAgICAgICA8Ym9keT5BbmFseXNpcyBpbmRpY2F0ZXMgdGhhdCB2ZXJpZmljYXRpb24gd2lsbCBiZSBwZXJmb3JtZWQgYnkgdGVjaG5pY2FsIGV2YWx1YXRpb24gdXNpbmcgbWF0aGVtYXRpY2FsIHJlcHJlc2VudGF0aW9ucywgY2hhcnRzLCBncmFwaHMsIGNpcmN1aXQgZGlhZ3JhbXMsIGRhdGEgcmVkdWN0aW9uLCBvciByZXByZXNlbnRhdGl2ZSBkYXRhLiBBbmFseXNpcyBhbHNvIGluY2x1ZGVzIHRoZSB2ZXJpZmljYXRpb24gb2YgcmVxdWlyZW1lbnRzIHVuZGVyIGNvbmRpdGlvbnMsIHdoaWNoIGFyZSBzaW11bGF0ZWQgb3IgbW9kZWxlZDsgd2hlcmUgdGhlIHJlc3VsdHMgYXJlIGRlcml2ZWQgZnJvbSB0aGUgYW5hbHlzaXMgb2YgdGhlIHJlc3VsdHMgcHJvZHVjZWQgYnkgdGhlIG1vZGVsPC9ib2R5Pg0KKyAgICAgICAgPC9vd25lZENvbW1lbnQ+DQorICAgICAgPC9vd25lZExpdGVyYWw+DQorICAgICAgPG93bmVkTGl0ZXJhbCB4bWk6aWQ9IlN5c01MTm9uTm9ybWF0aXZlRXh0ZW5zaW9ucy1SZXF1aXJlbWVudC1WZXJpZmljYXRpb25NZXRob2RLaW5kLURlbW9uc3RyYXRpb24iIG5hbWU9IkRlbW9uc3RyYXRpb24iPg0KKyAgICAgICAgPG93bmVkQ29tbWVudCB4bWk6aWQ9IlN5c01MTm9uTm9ybWF0aXZlRXh0ZW5zaW9ucy1SZXF1aXJlbWVudC1WZXJpZmljYXRpb25NZXRob2RLaW5kLURlbW9uc3RyYXRpb24tb3duZWRDb21tZW50IiBhbm5vdGF0ZWRFbGVtZW50PSJTeXNNTE5vbk5vcm1hdGl2ZUV4dGVuc2lvbnMtUmVxdWlyZW1lbnQtVmVyaWZpY2F0aW9uTWV0aG9kS2luZC1EZW1vbnN0cmF0aW9uIj4NCisgICAgICAgICAgPGJvZHk+RGVtb25zdHJhdGlvbiBpbmRpY2F0ZXMgdGhhdCB2ZXJpZmljYXRpb24gd2lsbCBiZSBwZXJmb3JtZWQgYnkgb3BlcmF0aW9uLCBtb3ZlbWVudCBvciBhZGp1c3RtZW50IG9mIHRoZSBpdGVtIHVuZGVyIHNwZWNpZmljIGNvbmRpdGlvbnMgdG8gcGVyZm9ybSB0aGUgZGVzaWduIGZ1bmN0aW9ucyB3aXRob3V0IHJlY29yZGluZyBvZiBxdWFudGl0YXRpdmUgZGF0YS4gRGVtb25zdHJhdGlvbiBpcyB0eXBpY2FsbHkgY29uc2lkZXJlZCB0aGUgbGVhc3QgcmVzdHJpY3RpdmUgb2YgdGhlIHZlcmlmaWNhdGlvbiB0eXBlczwvYm9keT4NCisgICAgICAgIDwvb3duZWRDb21tZW50Pg0KKyAgICAgIDwvb3duZWRMaXRlcmFsPg0KKyAgICAgIDxvd25lZExpdGVyYWwgeG1pOmlkPSJTeXNNTE5vbk5vcm1hdGl2ZUV4dGVuc2lvbnMtUmVxdWlyZW1lbnQtVmVyaWZpY2F0aW9uTWV0aG9kS2luZC1JbnNwZWN0aW9uIiBuYW1lPSJJbnNwZWN0aW9uIj4NCisgICAgICAgIDxvd25lZENvbW1lbnQgeG1pOmlkPSJTeXNNTE5vbk5vcm1hdGl2ZUV4dGVuc2lvbnMtUmVxdWlyZW1lbnQtVmVyaWZpY2F0aW9uTWV0aG9kS2luZC1JbnNwZWN0aW9uLW93bmVkQ29tbWVudCIgYW5ub3RhdGVkRWxlbWVudD0iU3lzTUxOb25Ob3JtYXRpdmVFeHRlbnNpb25zLVJlcXVpcmVtZW50LVZlcmlmaWNhdGlvbk1ldGhvZEtpbmQtSW5zcGVjdGlvbiI+DQorICAgICAgICAgIDxib2R5Pkluc3BlY3Rpb24gaW5kaWNhdGVzIHRoYXQgdmVyaWZpY2F0aW9uIHdpbGwgYmUgcGVyZm9ybWVkIGJ5IGV4YW1pbmF0aW9uIG9mIHRoZSBpdGVtLCByZXZpZXdpbmcgZGVzY3JpcHRpdmUgZG9jdW1lbnRhdGlvbiwgYW5kIGNvbXBhcmluZyB0aGUgYXBwcm9wcmlhdGUgY2hhcmFjdGVyaXN0aWNzIHdpdGggYSBwcmVkZXRlcm1pbmVkIHN0YW5kYXJkIHRvIGRldGVybWluZSBjb25mb3JtYW5jZSB0byByZXF1aXJlbWVudHMgd2l0aG91dCB0aGUgdXNlIG9mIHNwZWNpYWwgbGFib3JhdG9yeSBlcXVpcG1lbnQgb3IgcHJvY2VkdXJlczwvYm9keT4NCisgICAgICAgIDwvb3duZWRDb21tZW50Pg0KKyAgICAgIDwvb3duZWRMaXRlcmFsPg0KKyAgICAgIDxvd25lZExpdGVyYWwgeG1pOmlkPSJTeXNNTE5vbk5vcm1hdGl2ZUV4dGVuc2lvbnMtUmVxdWlyZW1lbnQtVmVyaWZpY2F0aW9uTWV0aG9kS2luZC1UZXN0IiBuYW1lPSJUZXN0Ij4NCisgICAgICAgIDxvd25lZENvbW1lbnQgeG1pOmlkPSJTeXNNTE5vbk5vcm1hdGl2ZUV4dGVuc2lvbnMtUmVxdWlyZW1lbnQtVmVyaWZpY2F0aW9uTWV0aG9kS2luZC1UZXN0LW93bmVkQ29tbWVudCIgYW5ub3RhdGVkRWxlbWVudD0iU3lzTUxOb25Ob3JtYXRpdmVFeHRlbnNpb25zLVJlcXVpcmVtZW50LVZlcmlmaWNhdGlvbk1ldGhvZEtpbmQtVGVzdCI+DQorICAgICAgICAgIDxib2R5PlRlc3QgaW5kaWNhdGVzIHRoYXQgdmVyaWZpY2F0aW9uIHdpbGwgYmUgcGVyZm9ybWVkIHRocm91Z2ggc3lzdGVtYXRpYyBleGVyY2lzaW5nIG9mIHRoZSBhcHBsaWNhYmxlIGl0ZW0gdW5kZXIgYXBwcm9wcmlhdGUgY29uZGl0aW9ucyB3aXRoIGluc3RydW1lbnRhdGlvbiB0byBtZWFzdXJlIHJlcXVpcmVkIHBhcmFtZXRlcnMgYW5kIHRoZSBjb2xsZWN0aW9uLCBhbmFseXNpcywgYW5kIGV2YWx1YXRpb24gb2YgcXVhbnRpdGF0aXZlIGRhdGEgdG8gc2hvdyB0aGF0IG1lYXN1cmVkIHBhcmFtZXRlcnMgZXF1YWwgb3IgZXhjZWVkIHNwZWNpZmllZCByZXF1aXJlbWVudHM8L2JvZHk+DQorICAgICAgICA8L293bmVkQ29tbWVudD4NCisgICAgICA8L293bmVkTGl0ZXJhbD4NCisgICAgPC9wYWNrYWdlZEVsZW1lbnQ+DQorICA8L3BhY2thZ2VkRWxlbWVudD4NCisgIDxwYWNrYWdlZEVsZW1lbnQgeG1pOnR5cGU9InVtbDpQYWNrYWdlIiB4bWk6aWQ9IlN5c01MTm9uTm9ybWF0aXZlRXh0ZW5zaW9ucy1BY3RvcnMiIG5hbWU9IkFjdG9ycyIgVVJJPSIiPg0KKyAgICA8cGFja2FnZWRFbGVtZW50IHhtaTp0eXBlPSJ1bWw6U3RlcmVvdHlwZSIgeG1pOmlkPSJTeXNNTE5vbk5vcm1hdGl2ZUV4dGVuc2lvbnMtQWN0b3JzLUV4dGVybmFsX3N5c3RlbSIgbmFtZT0iRXh0ZXJuYWwgc3lzdGVtIj4NCisgICAgICA8b3duZWRDb21tZW50IHhtaTppZD0iU3lzTUxOb25Ob3JtYXRpdmVFeHRlbnNpb25zLUFjdG9ycy1FeHRlcm5hbF9zeXN0ZW0tb3duZWRDb21tZW50IiBhbm5vdGF0ZWRFbGVtZW50PSJTeXNNTE5vbk5vcm1hdGl2ZUV4dGVuc2lvbnMtQWN0b3JzLUV4dGVybmFsX3N5c3RlbSI+DQorICAgICAgICA8Ym9keT5BbiBFeHRlcm5hbCBzeXN0ZW0gaXMgYSBzeXN0ZW0gdGhhdCBpbnRlcmFjdHMgd2l0aCB0aGUgc3lzdGVtIHVuZGVyIGRldmVsb3BtZW50LiBGb3IgZXhhbXBsZSBhbiBJbmZvcm1hdGlvbiBzZXJ2ZXIgb3IgYSBNb25pdG9yaW5nIHN5c3RlbS4NCis8L2JvZHk+DQorICAgICAgPC9vd25lZENvbW1lbnQ+DQorICAgICAgPG93bmVkQXR0cmlidXRlIHhtaTppZD0iU3lzTUxOb25Ob3JtYXRpdmVFeHRlbnNpb25zLUFjdG9ycy1FeHRlcm5hbF9zeXN0ZW0tYmFzZV9BY3RvciIgbmFtZT0iYmFzZV9BY3RvciIgdmlzaWJpbGl0eT0icHVibGljIiBhc3NvY2lhdGlvbj0iU3lzTUxOb25Ob3JtYXRpdmVFeHRlbnNpb25zLUFjdG9ycy1FX2V4dGVuc2lvbl9FeHRlcm5hbF9zeXN0ZW1fYmFzZV9BY3RvciI+DQorICAgICAgICA8dHlwZSB4bWk6dHlwZT0idW1sOkNsYXNzIiBocmVmPSJwYXRobWFwOi8vVU1MX01FVEFNT0RFTFMvVU1MLm1ldGFtb2RlbC51bWwjQWN0b3IiLz4NCisgICAgICA8L293bmVkQXR0cmlidXRlPg0KKyAgICA8L3BhY2thZ2VkRWxlbWVudD4NCisgICAgPHBhY2thZ2VkRWxlbWVudCB4bWk6dHlwZT0idW1sOlN0ZXJlb3R5cGUiIHhtaTppZD0iU3lzTUxOb25Ob3JtYXRpdmVFeHRlbnNpb25zLUFjdG9ycy1TZW5zb3IiIG5hbWU9IlNlbnNvciI+DQorICAgICAgPG93bmVkQ29tbWVudCB4bWk6aWQ9IlN5c01MTm9uTm9ybWF0aXZlRXh0ZW5zaW9ucy1BY3RvcnMtU2Vuc29yLW93bmVkQ29tbWVudCIgYW5ub3RhdGVkRWxlbWVudD0iU3lzTUxOb25Ob3JtYXRpdmVFeHRlbnNpb25zLUFjdG9ycy1TZW5zb3IiPg0KKyAgICAgICAgPGJvZHk+QSBTZW5zb3IgaXMgYSBzcGVjaWFsIGV4dGVybmFsIHN5c3RlbSB0aGF0IGZvcndhcmRzIGluZm9ybWF0aW9uIGZyb20gdGhlIGVudmlyb25tZW50IHRvIHRoZSBzeXN0ZW0gdW5kZXIgZGV2ZWxvcG1lbnQuIEZvciBleGFtcGxlIGEgVGVtcGVyYXR1cmUgc2Vuc29yLjwvYm9keT4NCisgICAgICA8L293bmVkQ29tbWVudD4NCisgICAgICA8Z2VuZXJhbGl6YXRpb24geG1pOmlkPSJTeXNNTE5vbk5vcm1hdGl2ZUV4dGVuc2lvbnMtQWN0b3JzLVNlbnNvci1nZW5lcmFsaXphdGlvbiIgZ2VuZXJhbD0iU3lzTUxOb25Ob3JtYXRpdmVFeHRlbnNpb25zLUFjdG9ycy1FeHRlcm5hbF9zeXN0ZW0iIGlzU3Vic3RpdHV0YWJsZT0iZmFsc2UiLz4NCisgICAgICA8b3duZWRBdHRyaWJ1dGUgeG1pOmlkPSJTeXNNTE5vbk5vcm1hdGl2ZUV4dGVuc2lvbnMtQWN0b3JzLVNlbnNvci1iYXNlX0FjdG9yIiBuYW1lPSJiYXNlX0FjdG9yIiB2aXNpYmlsaXR5PSJwdWJsaWMiIGFzc29jaWF0aW9uPSJTeXNNTE5vbk5vcm1hdGl2ZUV4dGVuc2lvbnMtQWN0b3JzLUVfZXh0ZW5zaW9uX1NlbnNvcl9iYXNlX0FjdG9yIj4NCisgICAgICAgIDx0eXBlIHhtaTp0eXBlPSJ1bWw6Q2xhc3MiIGhyZWY9InBhdGhtYXA6Ly9VTUxfTUVUQU1PREVMUy9VTUwubWV0YW1vZGVsLnVtbCNBY3RvciIvPg0KKyAgICAgIDwvb3duZWRBdHRyaWJ1dGU+DQorICAgIDwvcGFja2FnZWRFbGVtZW50Pg0KKyAgICA8cGFja2FnZWRFbGVtZW50IHhtaTp0eXBlPSJ1bWw6U3RlcmVvdHlwZSIgeG1pOmlkPSJTeXNNTE5vbk5vcm1hdGl2ZUV4dGVuc2lvbnMtQWN0b3JzLUJvdW5kYXJ5X3N5c3RlbSIgbmFtZT0iQm91bmRhcnkgc3lzdGVtIj4NCisgICAgICA8b3duZWRDb21tZW50IHhtaTppZD0iU3lzTUxOb25Ob3JtYXRpdmVFeHRlbnNpb25zLUFjdG9ycy1Cb3VuZGFyeV9zeXN0ZW0tb3duZWRDb21tZW50IiBhbm5vdGF0ZWRFbGVtZW50PSJTeXNNTE5vbk5vcm1hdGl2ZUV4dGVuc2lvbnMtQWN0b3JzLUJvdW5kYXJ5X3N5c3RlbSI+DQorICAgICAgICA8Ym9keT5BIEJvdW5kYXJ5IHN5c3RlbSBpcyBhIHNwZWNpYWwgZXh0ZXJuYWwgc3lzdGVtIHRoYXQgc2VydmVzIGFzIG1lZGl1bSBiZXR3ZWVuIGFub3RoZXIgc3lzdGVtIGFuZCB0aGUgc3lzdGVtIHVuZGVyIGRldmVsb3BtZW50IHdpdGhvdXQgaGF2aW5nIG93biBpbnRlcmVzdHMgaW4gdGhlIGNvbW11bmljYXRpb24uIEZvciBleGFtcGxlIEJ1cyBzeXN0ZW0gb3IgQ29tbXVuaWNhdGlvbiBzeXN0ZW0uDQorPC9ib2R5Pg0KKyAgICAgIDwvb3duZWRDb21tZW50Pg0KKyAgICAgIDxnZW5lcmFsaXphdGlvbiB4bWk6aWQ9IlN5c01MTm9uTm9ybWF0aXZlRXh0ZW5zaW9ucy1BY3RvcnMtQm91bmRhcnlfc3lzdGVtLWdlbmVyYWxpemF0aW9uIiBnZW5lcmFsPSJTeXNNTE5vbk5vcm1hdGl2ZUV4dGVuc2lvbnMtQWN0b3JzLUV4dGVybmFsX3N5c3RlbSIgaXNTdWJzdGl0dXRhYmxlPSJmYWxzZSIvPg0KKyAgICAgIDxvd25lZEF0dHJpYnV0ZSB4bWk6aWQ9IlN5c01MTm9uTm9ybWF0aXZlRXh0ZW5zaW9ucy1BY3RvcnMtQm91bmRhcnlfc3lzdGVtLWJhc2VfQWN0b3IiIG5hbWU9ImJhc2VfQWN0b3IiIHZpc2liaWxpdHk9InB1YmxpYyIgYXNzb2NpYXRpb249IlN5c01MTm9uTm9ybWF0aXZlRXh0ZW5zaW9ucy1BY3RvcnMtRV9leHRlbnNpb25fQm91bmRhcnlfc3lzdGVtX2Jhc2VfQWN0b3IiPg0KKyAgICAgICAgPHR5cGUgeG1pOnR5cGU9InVtbDpDbGFzcyIgaHJlZj0icGF0aG1hcDovL1VNTF9NRVRBTU9ERUxTL1VNTC5tZXRhbW9kZWwudW1sI0FjdG9yIi8+DQorICAgICAgPC9vd25lZEF0dHJpYnV0ZT4NCisgICAgPC9wYWNrYWdlZEVsZW1lbnQ+DQorICAgIDxwYWNrYWdlZEVsZW1lbnQgeG1pOnR5cGU9InVtbDpFeHRlbnNpb24iIHhtaTppZD0iU3lzTUxOb25Ob3JtYXRpdmVFeHRlbnNpb25zLUFjdG9ycy1FX2V4dGVuc2lvbl9TZW5zb3JfYmFzZV9BY3RvciIgbmFtZT0iRV9leHRlbnNpb25fU2Vuc29yX2Jhc2VfQWN0b3IiIG1lbWJlckVuZD0iU3lzTUxOb25Ob3JtYXRpdmVFeHRlbnNpb25zLUFjdG9ycy1FX2V4dGVuc2lvbl9TZW5zb3JfYmFzZV9BY3Rvci1leHRlbnNpb25fVXNlcl9zeXN0ZW0gU3lzTUxOb25Ob3JtYXRpdmVFeHRlbnNpb25zLUFjdG9ycy1TZW5zb3ItYmFzZV9BY3RvciIgbmF2aWdhYmxlT3duZWRFbmQ9IlN5c01MTm9uTm9ybWF0aXZlRXh0ZW5zaW9ucy1BY3RvcnMtRV9leHRlbnNpb25fU2Vuc29yX2Jhc2VfQWN0b3ItZXh0ZW5zaW9uX1VzZXJfc3lzdGVtIj4NCisgICAgICA8b3duZWRFbmQgeG1pOnR5cGU9InVtbDpFeHRlbnNpb25FbmQiIHhtaTppZD0iU3lzTUxOb25Ob3JtYXRpdmVFeHRlbnNpb25zLUFjdG9ycy1FX2V4dGVuc2lvbl9TZW5zb3JfYmFzZV9BY3Rvci1leHRlbnNpb25fVXNlcl9zeXN0ZW0iIG5hbWU9ImV4dGVuc2lvbl9Vc2VyIHN5c3RlbSIgdmlzaWJpbGl0eT0icHVibGljIiB0eXBlPSJTeXNNTE5vbk5vcm1hdGl2ZUV4dGVuc2lvbnMtQWN0b3JzLVNlbnNvciIgYWdncmVnYXRpb249ImNvbXBvc2l0ZSIgYXNzb2NpYXRpb249IlN5c01MTm9uTm9ybWF0aXZlRXh0ZW5zaW9ucy1BY3RvcnMtRV9leHRlbnNpb25fU2Vuc29yX2Jhc2VfQWN0b3IiPg0KKyAgICAgICAgPGxvd2VyVmFsdWUgeG1pOnR5cGU9InVtbDpMaXRlcmFsSW50ZWdlciIgeG1pOmlkPSJTeXNNTE5vbk5vcm1hdGl2ZUV4dGVuc2lvbnMtQWN0b3JzLUVfZXh0ZW5zaW9uX1NlbnNvcl9iYXNlX0FjdG9yLWV4dGVuc2lvbl9Vc2VyX3N5c3RlbS1sb3dlclZhbHVlIiBuYW1lPSIiLz4NCisgICAgICAgIDx1cHBlclZhbHVlIHhtaTp0eXBlPSJ1bWw6TGl0ZXJhbFVubGltaXRlZE5hdHVyYWwiIHhtaTppZD0iU3lzTUxOb25Ob3JtYXRpdmVFeHRlbnNpb25zLUFjdG9ycy1FX2V4dGVuc2lvbl9TZW5zb3JfYmFzZV9BY3Rvci1leHRlbnNpb25fVXNlcl9zeXN0ZW0tdXBwZXJWYWx1ZSIgbmFtZT0iIiB2YWx1ZT0iMSIvPg0KKyAgICAgIDwvb3duZWRFbmQ+DQorICAgIDwvcGFja2FnZWRFbGVtZW50Pg0KKyAgICA8cGFja2FnZWRFbGVtZW50IHhtaTp0eXBlPSJ1bWw6RXh0ZW5zaW9uIiB4bWk6aWQ9IlN5c01MTm9uTm9ybWF0aXZlRXh0ZW5zaW9ucy1BY3RvcnMtRV9leHRlbnNpb25fVXNlcl9zeXN0ZW1fYmFzZV9BY3RvciIgbmFtZT0iRV9leHRlbnNpb25fVXNlcl9zeXN0ZW1fYmFzZV9BY3RvciIgbWVtYmVyRW5kPSJTeXNNTE5vbk5vcm1hdGl2ZUV4dGVuc2lvbnMtQWN0b3JzLUVfZXh0ZW5zaW9uX1VzZXJfc3lzdGVtX2Jhc2VfQWN0b3ItZXh0ZW5zaW9uX0V4dGVybmFsX3N5c3RlbSBTeXNNTE5vbk5vcm1hdGl2ZUV4dGVuc2lvbnMtQWN0b3JzLVVzZXJfc3lzdGVtLWJhc2VfQWN0b3IiIG5hdmlnYWJsZU93bmVkRW5kPSJTeXNNTE5vbk5vcm1hdGl2ZUV4dGVuc2lvbnMtQWN0b3JzLUVfZXh0ZW5zaW9uX1VzZXJfc3lzdGVtX2Jhc2VfQWN0b3ItZXh0ZW5zaW9uX0V4dGVybmFsX3N5c3RlbSI+DQorICAgICAgPG93bmVkRW5kIHhtaTp0eXBlPSJ1bWw6RXh0ZW5zaW9uRW5kIiB4bWk6aWQ9IlN5c01MTm9uTm9ybWF0aXZlRXh0ZW5zaW9ucy1BY3RvcnMtRV9leHRlbnNpb25fVXNlcl9zeXN0ZW1fYmFzZV9BY3Rvci1leHRlbnNpb25fRXh0ZXJuYWxfc3lzdGVtIiBuYW1lPSJleHRlbnNpb25fRXh0ZXJuYWwgc3lzdGVtIiB2aXNpYmlsaXR5PSJwdWJsaWMiIHR5cGU9IlN5c01MTm9uTm9ybWF0aXZlRXh0ZW5zaW9ucy1BY3RvcnMtVXNlcl9zeXN0ZW0iIGFnZ3JlZ2F0aW9uPSJjb21wb3NpdGUiIGFzc29jaWF0aW9uPSJTeXNNTE5vbk5vcm1hdGl2ZUV4dGVuc2lvbnMtQWN0b3JzLUVfZXh0ZW5zaW9uX1VzZXJfc3lzdGVtX2Jhc2VfQWN0b3IiPg0KKyAgICAgICAgPGxvd2VyVmFsdWUgeG1pOnR5cGU9InVtbDpMaXRlcmFsSW50ZWdlciIgeG1pOmlkPSJTeXNNTE5vbk5vcm1hdGl2ZUV4dGVuc2lvbnMtQWN0b3JzLUVfZXh0ZW5zaW9uX1VzZXJfc3lzdGVtX2Jhc2VfQWN0b3ItZXh0ZW5zaW9uX0V4dGVybmFsX3N5c3RlbS1sb3dlclZhbHVlIiBuYW1lPSIiLz4NCisgICAgICAgIDx1cHBlclZhbHVlIHhtaTp0eXBlPSJ1bWw6TGl0ZXJhbFVubGltaXRlZE5hdHVyYWwiIHhtaTppZD0iU3lzTUxOb25Ob3JtYXRpdmVFeHRlbnNpb25zLUFjdG9ycy1FX2V4dGVuc2lvbl9Vc2VyX3N5c3RlbV9iYXNlX0FjdG9yLWV4dGVuc2lvbl9FeHRlcm5hbF9zeXN0ZW0tdXBwZXJWYWx1ZSIgbmFtZT0iIiB2YWx1ZT0iMSIvPg0KKyAgICAgIDwvb3duZWRFbmQ+DQorICAgIDwvcGFja2FnZWRFbGVtZW50Pg0KKyAgICA8cGFja2FnZWRFbGVtZW50IHhtaTp0eXBlPSJ1bWw6U3RlcmVvdHlwZSIgeG1pOmlkPSJTeXNNTE5vbk5vcm1hdGl2ZUV4dGVuc2lvbnMtQWN0b3JzLUVudmlyb25tZW50YWxfZWZmZWN0IiBuYW1lPSJFbnZpcm9ubWVudGFsIGVmZmVjdCI+DQorICAgICAgPG93bmVkQ29tbWVudCB4bWk6aWQ9IlN5c01MTm9uTm9ybWF0aXZlRXh0ZW5zaW9ucy1BY3RvcnMtRW52aXJvbm1lbnRhbF9lZmZlY3Qtb3duZWRDb21tZW50IiBhbm5vdGF0ZWRFbGVtZW50PSJTeXNNTE5vbk5vcm1hdGl2ZUV4dGVuc2lvbnMtQWN0b3JzLUVudmlyb25tZW50YWxfZWZmZWN0Ij4NCisgICAgICAgIDxib2R5PkFuIEVudmlyb25tZW50YWwgZWZmZWN0IGlzIGFuIGluZmx1ZW5jZSBvbiB0aGUgc3lzdGVtIGZyb20gdGhlIGVudmlyb25tZW50IHdpdGhvdXQgY29tbXVuaWNhdGluZyB3aXRoIGl0IGRpcmVjdGx5LiBGb3IgZXhhbXBsZSBUZW1wZXJhdHVyZSBvciBIdW1pZGl0eS4NCis8L2JvZHk+DQorICAgICAgPC9vd25lZENvbW1lbnQ+DQorICAgICAgPG93bmVkQXR0cmlidXRlIHhtaTppZD0iU3lzTUxOb25Ob3JtYXRpdmVFeHRlbnNpb25zLUFjdG9ycy1FbnZpcm9ubWVudGFsX2VmZmVjdC1iYXNlX0FjdG9yIiBuYW1lPSJiYXNlX0FjdG9yIiB2aXNpYmlsaXR5PSJwdWJsaWMiIGFzc29jaWF0aW9uPSJTeXNNTE5vbk5vcm1hdGl2ZUV4dGVuc2lvbnMtQWN0b3JzLUVfZXh0ZW5zaW9uX0Vudmlyb25tZW50YWxfZWZmZWN0X2Jhc2VfQWN0b3IiPg0KKyAgICAgICAgPHR5cGUgeG1pOnR5cGU9InVtbDpDbGFzcyIgaHJlZj0icGF0aG1hcDovL1VNTF9NRVRBTU9ERUxTL1VNTC5tZXRhbW9kZWwudW1sI0FjdG9yIi8+DQorICAgICAgPC9vd25lZEF0dHJpYnV0ZT4NCisgICAgPC9wYWNrYWdlZEVsZW1lbnQ+DQorICAgIDxwYWNrYWdlZEVsZW1lbnQgeG1pOnR5cGU9InVtbDpTdGVyZW90eXBlIiB4bWk6aWQ9IlN5c01MTm9uTm9ybWF0aXZlRXh0ZW5zaW9ucy1BY3RvcnMtVXNlcl9zeXN0ZW0iIG5hbWU9IlVzZXIgc3lzdGVtIj4NCisgICAgICA8b3duZWRDb21tZW50IHhtaTppZD0iU3lzTUxOb25Ob3JtYXRpdmVFeHRlbnNpb25zLUFjdG9ycy1Vc2VyX3N5c3RlbS1vd25lZENvbW1lbnQiIGFubm90YXRlZEVsZW1lbnQ9IlN5c01MTm9uTm9ybWF0aXZlRXh0ZW5zaW9ucy1BY3RvcnMtVXNlcl9zeXN0ZW0iPg0KKyAgICAgICAgPGJvZHk+QW4gVXNlciBzeXN0ZW0gaXMgYSBzcGVjaWFsIGV4dGVybmFsIHN5c3RlbSB0aGF0IHNlcnZlcyBhcyBtZWRpdW0gYmV0d2VlbiBhIHVzZXIgYW5kIHRoZSBzeXN0ZW0gd2l0aG91dCBoYXZpbmcNCitvd24gaW50ZXJlc3RzIGluIHRoZSBjb21tdW5pY2F0aW9uLiBGb3IgZXhhbXBsZSBJbnB1dCBkZXZpY2Ugb3IgRGlzcGxheS48L2JvZHk+DQorICAgICAgPC9vd25lZENvbW1lbnQ+DQorICAgICAgPGdlbmVyYWxpemF0aW9uIHhtaTppZD0iU3lzTUxOb25Ob3JtYXRpdmVFeHRlbnNpb25zLUFjdG9ycy1Vc2VyX3N5c3RlbS1nZW5lcmFsaXphdGlvbiIgZ2VuZXJhbD0iU3lzTUxOb25Ob3JtYXRpdmVFeHRlbnNpb25zLUFjdG9ycy1FeHRlcm5hbF9zeXN0ZW0iIGlzU3Vic3RpdHV0YWJsZT0iZmFsc2UiLz4NCisgICAgICA8b3duZWRBdHRyaWJ1dGUgeG1pOmlkPSJTeXNNTE5vbk5vcm1hdGl2ZUV4dGVuc2lvbnMtQWN0b3JzLVVzZXJfc3lzdGVtLWJhc2VfQWN0b3IiIG5hbWU9ImJhc2VfQWN0b3IiIHZpc2liaWxpdHk9InB1YmxpYyIgYXNzb2NpYXRpb249IlN5c01MTm9uTm9ybWF0aXZlRXh0ZW5zaW9ucy1BY3RvcnMtRV9leHRlbnNpb25fVXNlcl9zeXN0ZW1fYmFzZV9BY3RvciI+DQorICAgICAgICA8dHlwZSB4bWk6dHlwZT0idW1sOkNsYXNzIiBocmVmPSJwYXRobWFwOi8vVU1MX01FVEFNT0RFTFMvVU1MLm1ldGFtb2RlbC51bWwjQWN0b3IiLz4NCisgICAgICA8L293bmVkQXR0cmlidXRlPg0KKyAgICA8L3BhY2thZ2VkRWxlbWVudD4NCisgICAgPHBhY2thZ2VkRWxlbWVudCB4bWk6dHlwZT0idW1sOkV4dGVuc2lvbiIgeG1pOmlkPSJTeXNNTE5vbk5vcm1hdGl2ZUV4dGVuc2lvbnMtQWN0b3JzLUVfZXh0ZW5zaW9uX0Vudmlyb25tZW50YWxfZWZmZWN0X2Jhc2VfQWN0b3IiIG5hbWU9IkVfZXh0ZW5zaW9uX0Vudmlyb25tZW50YWxfZWZmZWN0X2Jhc2VfQWN0b3IiIG1lbWJlckVuZD0iU3lzTUxOb25Ob3JtYXRpdmVFeHRlbnNpb25zLUFjdG9ycy1FX2V4dGVuc2lvbl9FbnZpcm9ubWVudGFsX2VmZmVjdF9iYXNlX0FjdG9yLWV4dGVuc2lvbl9FeHRlcm5hbF9zeXN0ZW0gU3lzTUxOb25Ob3JtYXRpdmVFeHRlbnNpb25zLUFjdG9ycy1FbnZpcm9ubWVudGFsX2VmZmVjdC1iYXNlX0FjdG9yIiBuYXZpZ2FibGVPd25lZEVuZD0iU3lzTUxOb25Ob3JtYXRpdmVFeHRlbnNpb25zLUFjdG9ycy1FX2V4dGVuc2lvbl9FbnZpcm9ubWVudGFsX2VmZmVjdF9iYXNlX0FjdG9yLWV4dGVuc2lvbl9FeHRlcm5hbF9zeXN0ZW0iPg0KKyAgICAgIDxvd25lZEVuZCB4bWk6dHlwZT0idW1sOkV4dGVuc2lvbkVuZCIgeG1pOmlkPSJTeXNNTE5vbk5vcm1hdGl2ZUV4dGVuc2lvbnMtQWN0b3JzLUVfZXh0ZW5zaW9uX0Vudmlyb25tZW50YWxfZWZmZWN0X2Jhc2VfQWN0b3ItZXh0ZW5zaW9uX0V4dGVybmFsX3N5c3RlbSIgbmFtZT0iZXh0ZW5zaW9uX0V4dGVybmFsIHN5c3RlbSIgdmlzaWJpbGl0eT0icHVibGljIiB0eXBlPSJTeXNNTE5vbk5vcm1hdGl2ZUV4dGVuc2lvbnMtQWN0b3JzLUVudmlyb25tZW50YWxfZWZmZWN0IiBhZ2dyZWdhdGlvbj0iY29tcG9zaXRlIiBhc3NvY2lhdGlvbj0iU3lzTUxOb25Ob3JtYXRpdmVFeHRlbnNpb25zLUFjdG9ycy1FX2V4dGVuc2lvbl9FbnZpcm9ubWVudGFsX2VmZmVjdF9iYXNlX0FjdG9yIj4NCisgICAgICAgIDxsb3dlclZhbHVlIHhtaTp0eXBlPSJ1bWw6TGl0ZXJhbEludGVnZXIiIHhtaTppZD0iU3lzTUxOb25Ob3JtYXRpdmVFeHRlbnNpb25zLUFjdG9ycy1FX2V4dGVuc2lvbl9FbnZpcm9ubWVudGFsX2VmZmVjdF9iYXNlX0FjdG9yLWV4dGVuc2lvbl9FeHRlcm5hbF9zeXN0ZW0tbG93ZXJWYWx1ZSIgbmFtZT0iIi8+DQorICAgICAgICA8dXBwZXJWYWx1ZSB4bWk6dHlwZT0idW1sOkxpdGVyYWxVbmxpbWl0ZWROYXR1cmFsIiB4bWk6aWQ9IlN5c01MTm9uTm9ybWF0aXZlRXh0ZW5zaW9ucy1BY3RvcnMtRV9leHRlbnNpb25fRW52aXJvbm1lbnRhbF9lZmZlY3RfYmFzZV9BY3Rvci1leHRlbnNpb25fRXh0ZXJuYWxfc3lzdGVtLXVwcGVyVmFsdWUiIG5hbWU9IiIgdmFsdWU9IjEiLz4NCisgICAgICA8L293bmVkRW5kPg0KKyAgICA8L3BhY2thZ2VkRWxlbWVudD4NCisgICAgPHBhY2thZ2VkRWxlbWVudCB4bWk6dHlwZT0idW1sOkV4dGVuc2lvbiIgeG1pOmlkPSJTeXNNTE5vbk5vcm1hdGl2ZUV4dGVuc2lvbnMtQWN0b3JzLUVfZXh0ZW5zaW9uX0V4dGVybmFsX3N5c3RlbV9iYXNlX0FjdG9yIiBuYW1lPSJFX2V4dGVuc2lvbl9FeHRlcm5hbF9zeXN0ZW1fYmFzZV9BY3RvciIgbWVtYmVyRW5kPSJTeXNNTE5vbk5vcm1hdGl2ZUV4dGVuc2lvbnMtQWN0b3JzLUVfZXh0ZW5zaW9uX0V4dGVybmFsX3N5c3RlbV9iYXNlX0FjdG9yLWV4dGVuc2lvbl8gU3lzTUxOb25Ob3JtYXRpdmVFeHRlbnNpb25zLUFjdG9ycy1FeHRlcm5hbF9zeXN0ZW0tYmFzZV9BY3RvciIgbmF2aWdhYmxlT3duZWRFbmQ9IlN5c01MTm9uTm9ybWF0aXZlRXh0ZW5zaW9ucy1BY3RvcnMtRV9leHRlbnNpb25fRXh0ZXJuYWxfc3lzdGVtX2Jhc2VfQWN0b3ItZXh0ZW5zaW9uXyI+DQorICAgICAgPG93bmVkRW5kIHhtaTp0eXBlPSJ1bWw6RXh0ZW5zaW9uRW5kIiB4bWk6aWQ9IlN5c01MTm9uTm9ybWF0aXZlRXh0ZW5zaW9ucy1BY3RvcnMtRV9leHRlbnNpb25fRXh0ZXJuYWxfc3lzdGVtX2Jhc2VfQWN0b3ItZXh0ZW5zaW9uXyIgbmFtZT0iZXh0ZW5zaW9uXyIgdmlzaWJpbGl0eT0icHVibGljIiB0eXBlPSJTeXNNTE5vbk5vcm1hdGl2ZUV4dGVuc2lvbnMtQWN0b3JzLUV4dGVybmFsX3N5c3RlbSIgYWdncmVnYXRpb249ImNvbXBvc2l0ZSIgYXNzb2NpYXRpb249IlN5c01MTm9uTm9ybWF0aXZlRXh0ZW5zaW9ucy1BY3RvcnMtRV9leHRlbnNpb25fRXh0ZXJuYWxfc3lzdGVtX2Jhc2VfQWN0b3IiPg0KKyAgICAgICAgPGxvd2VyVmFsdWUgeG1pOnR5cGU9InVtbDpMaXRlcmFsSW50ZWdlciIgeG1pOmlkPSJTeXNNTE5vbk5vcm1hdGl2ZUV4dGVuc2lvbnMtQWN0b3JzLUVfZXh0ZW5zaW9uX0V4dGVybmFsX3N5c3RlbV9iYXNlX0FjdG9yLWV4dGVuc2lvbl8tbG93ZXJWYWx1ZSIgbmFtZT0iIi8+DQorICAgICAgICA8dXBwZXJWYWx1ZSB4bWk6dHlwZT0idW1sOkxpdGVyYWxVbmxpbWl0ZWROYXR1cmFsIiB4bWk6aWQ9IlN5c01MTm9uTm9ybWF0aXZlRXh0ZW5zaW9ucy1BY3RvcnMtRV9leHRlbnNpb25fRXh0ZXJuYWxfc3lzdGVtX2Jhc2VfQWN0b3ItZXh0ZW5zaW9uXy11cHBlclZhbHVlIiBuYW1lPSIiIHZhbHVlPSIxIi8+DQorICAgICAgPC9vd25lZEVuZD4NCisgICAgPC9wYWNrYWdlZEVsZW1lbnQ+DQorICAgIDxwYWNrYWdlZEVsZW1lbnQgeG1pOnR5cGU9InVtbDpFeHRlbnNpb24iIHhtaTppZD0iU3lzTUxOb25Ob3JtYXRpdmVFeHRlbnNpb25zLUFjdG9ycy1FX2V4dGVuc2lvbl9Cb3VuZGFyeV9zeXN0ZW1fYmFzZV9BY3RvciIgbmFtZT0iRV9leHRlbnNpb25fQm91bmRhcnlfc3lzdGVtX2Jhc2VfQWN0b3IiIG1lbWJlckVuZD0iU3lzTUxOb25Ob3JtYXRpdmVFeHRlbnNpb25zLUFjdG9ycy1FX2V4dGVuc2lvbl9Cb3VuZGFyeV9zeXN0ZW1fYmFzZV9BY3Rvci1leHRlbnNpb25fRXh0ZXJuYWxfc3lzdGVtIFN5c01MTm9uTm9ybWF0aXZlRXh0ZW5zaW9ucy1BY3RvcnMtQm91bmRhcnlfc3lzdGVtLWJhc2VfQWN0b3IiIG5hdmlnYWJsZU93bmVkRW5kPSJTeXNNTE5vbk5vcm1hdGl2ZUV4dGVuc2lvbnMtQWN0b3JzLUVfZXh0ZW5zaW9uX0JvdW5kYXJ5X3N5c3RlbV9iYXNlX0FjdG9yLWV4dGVuc2lvbl9FeHRlcm5hbF9zeXN0ZW0iPg0KKyAgICAgIDxvd25lZEVuZCB4bWk6dHlwZT0idW1sOkV4dGVuc2lvbkVuZCIgeG1pOmlkPSJTeXNNTE5vbk5vcm1hdGl2ZUV4dGVuc2lvbnMtQWN0b3JzLUVfZXh0ZW5zaW9uX0JvdW5kYXJ5X3N5c3RlbV9iYXNlX0FjdG9yLWV4dGVuc2lvbl9FeHRlcm5hbF9zeXN0ZW0iIG5hbWU9ImV4dGVuc2lvbl9FeHRlcm5hbCBzeXN0ZW0iIHZpc2liaWxpdHk9InB1YmxpYyIgdHlwZT0iU3lzTUxOb25Ob3JtYXRpdmVFeHRlbnNpb25zLUFjdG9ycy1Cb3VuZGFyeV9zeXN0ZW0iIGFnZ3JlZ2F0aW9uPSJjb21wb3NpdGUiIGFzc29jaWF0aW9uPSJTeXNNTE5vbk5vcm1hdGl2ZUV4dGVuc2lvbnMtQWN0b3JzLUVfZXh0ZW5zaW9uX0JvdW5kYXJ5X3N5c3RlbV9iYXNlX0FjdG9yIj4NCisgICAgICAgIDxsb3dlclZhbHVlIHhtaTp0eXBlPSJ1bWw6TGl0ZXJhbEludGVnZXIiIHhtaTppZD0iU3lzTUxOb25Ob3JtYXRpdmVFeHRlbnNpb25zLUFjdG9ycy1FX2V4dGVuc2lvbl9Cb3VuZGFyeV9zeXN0ZW1fYmFzZV9BY3Rvci1leHRlbnNpb25fRXh0ZXJuYWxfc3lzdGVtLWxvd2VyVmFsdWUiIG5hbWU9IiIvPg0KKyAgICAgICAgPHVwcGVyVmFsdWUgeG1pOnR5cGU9InVtbDpMaXRlcmFsVW5saW1pdGVkTmF0dXJhbCIgeG1pOmlkPSJTeXNNTE5vbk5vcm1hdGl2ZUV4dGVuc2lvbnMtQWN0b3JzLUVfZXh0ZW5zaW9uX0JvdW5kYXJ5X3N5c3RlbV9iYXNlX0FjdG9yLWV4dGVuc2lvbl9FeHRlcm5hbF9zeXN0ZW0tdXBwZXJWYWx1ZSIgbmFtZT0iIiB2YWx1ZT0iMSIvPg0KKyAgICAgIDwvb3duZWRFbmQ+DQorICAgIDwvcGFja2FnZWRFbGVtZW50Pg0KKyAgICA8cGFja2FnZWRFbGVtZW50IHhtaTp0eXBlPSJ1bWw6U3RlcmVvdHlwZSIgeG1pOmlkPSJTeXNNTE5vbk5vcm1hdGl2ZUV4dGVuc2lvbnMtQWN0b3JzLUFjdHVhdG9yIiBuYW1lPSJBY3R1YXRvciI+DQorICAgICAgPG93bmVkQ29tbWVudCB4bWk6aWQ9IlN5c01MTm9uTm9ybWF0aXZlRXh0ZW5zaW9ucy1BY3RvcnMtQWN0dWF0b3Itb3duZWRDb21tZW50IiBhbm5vdGF0ZWRFbGVtZW50PSJTeXNNTE5vbk5vcm1hdGl2ZUV4dGVuc2lvbnMtQWN0b3JzLUFjdHVhdG9yIj4NCisgICAgICAgIDxib2R5PkFuIEFjdHVhdG9yIGlzIGEgc3BlY2lhbCBleHRlcm5hbCBzeXN0ZW0gdGhhdCBpbmZsdWVuY2VzIHRoZSBlbnZpcm9ubWVudCBvZiB0aGUgc3lzdGVtIHVuZGVyIGRldmVsb3BtZW50LiBGb3IgZXhhbXBsZSBhIEhlYXRlciBhc3NlbWJseSBvciBhIENlbnRyYWwgbG9ja2luZyBzeXN0ZW0gb2YgYSBjYXIuDQorPC9ib2R5Pg0KKyAgICAgIDwvb3duZWRDb21tZW50Pg0KKyAgICAgIDxnZW5lcmFsaXphdGlvbiB4bWk6aWQ9IlN5c01MTm9uTm9ybWF0aXZlRXh0ZW5zaW9ucy1BY3RvcnMtQWN0dWF0b3ItZ2VuZXJhbGl6YXRpb24iIGdlbmVyYWw9IlN5c01MTm9uTm9ybWF0aXZlRXh0ZW5zaW9ucy1BY3RvcnMtRXh0ZXJuYWxfc3lzdGVtIiBpc1N1YnN0aXR1dGFibGU9ImZhbHNlIi8+DQorICAgICAgPG93bmVkQXR0cmlidXRlIHhtaTppZD0iU3lzTUxOb25Ob3JtYXRpdmVFeHRlbnNpb25zLUFjdG9ycy1BY3R1YXRvci1iYXNlX0FjdG9yIiBuYW1lPSJiYXNlX0FjdG9yIiB2aXNpYmlsaXR5PSJwdWJsaWMiIGFzc29jaWF0aW9uPSJTeXNNTE5vbk5vcm1hdGl2ZUV4dGVuc2lvbnMtQWN0b3JzLUVfZXh0ZW5zaW9uX0FjdHVhdG9yX2Jhc2VfQWN0b3IiPg0KKyAgICAgICAgPHR5cGUgeG1pOnR5cGU9InVtbDpDbGFzcyIgaHJlZj0icGF0aG1hcDovL1VNTF9NRVRBTU9ERUxTL1VNTC5tZXRhbW9kZWwudW1sI0FjdG9yIi8+DQorICAgICAgPC9vd25lZEF0dHJpYnV0ZT4NCisgICAgPC9wYWNrYWdlZEVsZW1lbnQ+DQorICAgIDxwYWNrYWdlZEVsZW1lbnQgeG1pOnR5cGU9InVtbDpFeHRlbnNpb24iIHhtaTppZD0iU3lzTUxOb25Ob3JtYXRpdmVFeHRlbnNpb25zLUFjdG9ycy1FX2V4dGVuc2lvbl9BY3R1YXRvcl9iYXNlX0FjdG9yIiBuYW1lPSJFX2V4dGVuc2lvbl9BY3R1YXRvcl9iYXNlX0FjdG9yIiBtZW1iZXJFbmQ9IlN5c01MTm9uTm9ybWF0aXZlRXh0ZW5zaW9ucy1BY3RvcnMtRV9leHRlbnNpb25fQWN0dWF0b3JfYmFzZV9BY3Rvci1leHRlbnNpb25fVXNlcl9zeXN0ZW0gU3lzTUxOb25Ob3JtYXRpdmVFeHRlbnNpb25zLUFjdG9ycy1BY3R1YXRvci1iYXNlX0FjdG9yIiBuYXZpZ2FibGVPd25lZEVuZD0iU3lzTUxOb25Ob3JtYXRpdmVFeHRlbnNpb25zLUFjdG9ycy1FX2V4dGVuc2lvbl9BY3R1YXRvcl9iYXNlX0FjdG9yLWV4dGVuc2lvbl9Vc2VyX3N5c3RlbSI+DQorICAgICAgPG93bmVkRW5kIHhtaTp0eXBlPSJ1bWw6RXh0ZW5zaW9uRW5kIiB4bWk6aWQ9IlN5c01MTm9uTm9ybWF0aXZlRXh0ZW5zaW9ucy1BY3RvcnMtRV9leHRlbnNpb25fQWN0dWF0b3JfYmFzZV9BY3Rvci1leHRlbnNpb25fVXNlcl9zeXN0ZW0iIG5hbWU9ImV4dGVuc2lvbl9Vc2VyIHN5c3RlbSIgdmlzaWJpbGl0eT0icHVibGljIiB0eXBlPSJTeXNNTE5vbk5vcm1hdGl2ZUV4dGVuc2lvbnMtQWN0b3JzLUFjdHVhdG9yIiBhZ2dyZWdhdGlvbj0iY29tcG9zaXRlIiBhc3NvY2lhdGlvbj0iU3lzTUxOb25Ob3JtYXRpdmVFeHRlbnNpb25zLUFjdG9ycy1FX2V4dGVuc2lvbl9BY3R1YXRvcl9iYXNlX0FjdG9yIj4NCisgICAgICAgIDxsb3dlclZhbHVlIHhtaTp0eXBlPSJ1bWw6TGl0ZXJhbEludGVnZXIiIHhtaTppZD0iU3lzTUxOb25Ob3JtYXRpdmVFeHRlbnNpb25zLUFjdG9ycy1FX2V4dGVuc2lvbl9BY3R1YXRvcl9iYXNlX0FjdG9yLWV4dGVuc2lvbl9Vc2VyX3N5c3RlbS1sb3dlclZhbHVlIiBuYW1lPSIiLz4NCisgICAgICAgIDx1cHBlclZhbHVlIHhtaTp0eXBlPSJ1bWw6TGl0ZXJhbFVubGltaXRlZE5hdHVyYWwiIHhtaTppZD0iU3lzTUxOb25Ob3JtYXRpdmVFeHRlbnNpb25zLUFjdG9ycy1FX2V4dGVuc2lvbl9BY3R1YXRvcl9iYXNlX0FjdG9yLWV4dGVuc2lvbl9Vc2VyX3N5c3RlbS11cHBlclZhbHVlIiBuYW1lPSIiIHZhbHVlPSIxIi8+DQorICAgICAgPC9vd25lZEVuZD4NCisgICAgPC9wYWNrYWdlZEVsZW1lbnQ+DQorICA8L3BhY2thZ2VkRWxlbWVudD4NCisgIDxwYWNrYWdlZEVsZW1lbnQgeG1pOnR5cGU9InVtbDpQYWNrYWdlIiB4bWk6aWQ9IlN5c01MTm9uTm9ybWF0aXZlRXh0ZW5zaW9ucy1EaXN0cmlidXRpb25zIiBuYW1lPSJEaXN0cmlidXRpb25zIiBVUkk9IiI+DQorICAgIDxwYWNrYWdlZEVsZW1lbnQgeG1pOnR5cGU9InVtbDpFeHRlbnNpb24iIHhtaTppZD0iU3lzTUxOb25Ob3JtYXRpdmVFeHRlbnNpb25zLURpc3RyaWJ1dGlvbnMtRV9leHRlbnNpb25fTm9ybWFsX2Jhc2VfUHJvcGVydHkiIG5hbWU9IkVfZXh0ZW5zaW9uX05vcm1hbF9iYXNlX1Byb3BlcnR5IiBtZW1iZXJFbmQ9IlN5c01MTm9uTm9ybWF0aXZlRXh0ZW5zaW9ucy1EaXN0cmlidXRpb25zLUVfZXh0ZW5zaW9uX05vcm1hbF9iYXNlX1Byb3BlcnR5LWV4dGVuc2lvbl8gU3lzTUxOb25Ob3JtYXRpdmVFeHRlbnNpb25zLURpc3RyaWJ1dGlvbnMtTm9ybWFsLWJhc2VfUHJvcGVydHkiIG5hdmlnYWJsZU93bmVkRW5kPSJTeXNNTE5vbk5vcm1hdGl2ZUV4dGVuc2lvbnMtRGlzdHJpYnV0aW9ucy1FX2V4dGVuc2lvbl9Ob3JtYWxfYmFzZV9Qcm9wZXJ0eS1leHRlbnNpb25fIj4NCisgICAgICA8b3duZWRFbmQgeG1pOnR5cGU9InVtbDpFeHRlbnNpb25FbmQiIHhtaTppZD0iU3lzTUxOb25Ob3JtYXRpdmVFeHRlbnNpb25zLURpc3RyaWJ1dGlvbnMtRV9leHRlbnNpb25fTm9ybWFsX2Jhc2VfUHJvcGVydHktZXh0ZW5zaW9uXyIgbmFtZT0iZXh0ZW5zaW9uXyIgdmlzaWJpbGl0eT0icHVibGljIiB0eXBlPSJTeXNNTE5vbk5vcm1hdGl2ZUV4dGVuc2lvbnMtRGlzdHJpYnV0aW9ucy1Ob3JtYWwiIGFnZ3JlZ2F0aW9uPSJjb21wb3NpdGUiIGFzc29jaWF0aW9uPSJTeXNNTE5vbk5vcm1hdGl2ZUV4dGVuc2lvbnMtRGlzdHJpYnV0aW9ucy1FX2V4dGVuc2lvbl9Ob3JtYWxfYmFzZV9Qcm9wZXJ0eSI+DQorICAgICAgICA8bG93ZXJWYWx1ZSB4bWk6dHlwZT0idW1sOkxpdGVyYWxJbnRlZ2VyIiB4bWk6aWQ9IlN5c01MTm9uTm9ybWF0aXZlRXh0ZW5zaW9ucy1EaXN0cmlidXRpb25zLUVfZXh0ZW5zaW9uX05vcm1hbF9iYXNlX1Byb3BlcnR5LWV4dGVuc2lvbl8tbG93ZXJWYWx1ZSIgbmFtZT0iIi8+DQorICAgICAgICA8dXBwZXJWYWx1ZSB4bWk6dHlwZT0idW1sOkxpdGVyYWxVbmxpbWl0ZWROYXR1cmFsIiB4bWk6aWQ9IlN5c01MTm9uTm9ybWF0aXZlRXh0ZW5zaW9ucy1EaXN0cmlidXRpb25zLUVfZXh0ZW5zaW9uX05vcm1hbF9iYXNlX1Byb3BlcnR5LWV4dGVuc2lvbl8tdXBwZXJWYWx1ZSIgbmFtZT0iIiB2YWx1ZT0iMSIvPg0KKyAgICAgIDwvb3duZWRFbmQ+DQorICAgIDwvcGFja2FnZWRFbGVtZW50Pg0KKyAgICA8cGFja2FnZWRFbGVtZW50IHhtaTp0eXBlPSJ1bWw6U3RlcmVvdHlwZSIgeG1pOmlkPSJTeXNNTE5vbk5vcm1hdGl2ZUV4dGVuc2lvbnMtRGlzdHJpYnV0aW9ucy1Vbmlmb3JtIiBuYW1lPSJVbmlmb3JtIj4NCisgICAgICA8b3duZWRDb21tZW50IHhtaTppZD0iU3lzTUxOb25Ob3JtYXRpdmVFeHRlbnNpb25zLURpc3RyaWJ1dGlvbnMtVW5pZm9ybS1vd25lZENvbW1lbnQiIGFubm90YXRlZEVsZW1lbnQ9IlN5c01MTm9uTm9ybWF0aXZlRXh0ZW5zaW9ucy1EaXN0cmlidXRpb25zLVVuaWZvcm0iPg0KKyAgICAgICAgPGJvZHk+VW5pZm9ybSBkaXN0cmlidXRpb24gLSBjb25zdGFudCBwcm9iYWJpbGl0eSBiZXR3ZWVuIG1pbiBhbmQgbWF4PC9ib2R5Pg0KKyAgICAgIDwvb3duZWRDb21tZW50Pg0KKyAgICAgIDxnZW5lcmFsaXphdGlvbiB4bWk6aWQ9IlN5c01MTm9uTm9ybWF0aXZlRXh0ZW5zaW9ucy1EaXN0cmlidXRpb25zLVVuaWZvcm0tZ2VuZXJhbGl6YXRpb24iIGdlbmVyYWw9IlN5c01MTm9uTm9ybWF0aXZlRXh0ZW5zaW9ucy1EaXN0cmlidXRpb25zLUJhc2ljSW50ZXJ2YWwiIGlzU3Vic3RpdHV0YWJsZT0iZmFsc2UiLz4NCisgICAgICA8b3duZWRBdHRyaWJ1dGUgeG1pOmlkPSJTeXNNTE5vbk5vcm1hdGl2ZUV4dGVuc2lvbnMtRGlzdHJpYnV0aW9ucy1Vbmlmb3JtLWJhc2VfUHJvcGVydHkiIG5hbWU9ImJhc2VfUHJvcGVydHkiIHZpc2liaWxpdHk9InB1YmxpYyIgYXNzb2NpYXRpb249IlN5c01MTm9uTm9ybWF0aXZlRXh0ZW5zaW9ucy1EaXN0cmlidXRpb25zLUVfZXh0ZW5zaW9uX1VuaWZvcm1fYmFzZV9Qcm9wZXJ0eSI+DQorICAgICAgICA8dHlwZSB4bWk6dHlwZT0idW1sOkNsYXNzIiBocmVmPSJwYXRobWFwOi8vVU1MX01FVEFNT0RFTFMvVU1MLm1ldGFtb2RlbC51bWwjUHJvcGVydHkiLz4NCisgICAgICA8L293bmVkQXR0cmlidXRlPg0KKyAgICA8L3BhY2thZ2VkRWxlbWVudD4NCisgICAgPHBhY2thZ2VkRWxlbWVudCB4bWk6dHlwZT0idW1sOlN0ZXJlb3R5cGUiIHhtaTppZD0iU3lzTUxOb25Ob3JtYXRpdmVFeHRlbnNpb25zLURpc3RyaWJ1dGlvbnMtTm9ybWFsIiBuYW1lPSJOb3JtYWwiPg0KKyAgICAgIDxvd25lZENvbW1lbnQgeG1pOmlkPSJTeXNNTE5vbk5vcm1hdGl2ZUV4dGVuc2lvbnMtRGlzdHJpYnV0aW9ucy1Ob3JtYWwtb3duZWRDb21tZW50IiBhbm5vdGF0ZWRFbGVtZW50PSJTeXNNTE5vbk5vcm1hdGl2ZUV4dGVuc2lvbnMtRGlzdHJpYnV0aW9ucy1Ob3JtYWwiPg0KKyAgICAgICAgPGJvZHk+Tm9ybWFsIGRpc3RyaWJ1dGlvbiAtIGNvbnN0YW50IHByb2JhYmlsaXR5IGJldHdlZW4gbWluIGFuZCBtYXg8L2JvZHk+DQorICAgICAgPC9vd25lZENvbW1lbnQ+DQorICAgICAgPGdlbmVyYWxpemF0aW9uIHhtaTppZD0iU3lzTUxOb25Ob3JtYXRpdmVFeHRlbnNpb25zLURpc3RyaWJ1dGlvbnMtTm9ybWFsLWdlbmVyYWxpemF0aW9uIj4NCisgICAgICAgIDxnZW5lcmFsIHhtaTp0eXBlPSJ1bWw6U3RlcmVvdHlwZSIgaHJlZj0iU3lzTUwucHJvZmlsZS51bWwjU3lzTUwtQmxvY2tzLURpc3RyaWJ1dGVkUHJvcGVydHkiLz4NCisgICAgICA8L2dlbmVyYWxpemF0aW9uPg0KKyAgICAgIDxvd25lZEF0dHJpYnV0ZSB4bWk6aWQ9IlN5c01MTm9uTm9ybWF0aXZlRXh0ZW5zaW9ucy1EaXN0cmlidXRpb25zLU5vcm1hbC1iYXNlX1Byb3BlcnR5IiBuYW1lPSJiYXNlX1Byb3BlcnR5IiB2aXNpYmlsaXR5PSJwdWJsaWMiIGFzc29jaWF0aW9uPSJTeXNNTE5vbk5vcm1hdGl2ZUV4dGVuc2lvbnMtRGlzdHJpYnV0aW9ucy1FX2V4dGVuc2lvbl9Ob3JtYWxfYmFzZV9Qcm9wZXJ0eSI+DQorICAgICAgICA8dHlwZSB4bWk6dHlwZT0idW1sOkNsYXNzIiBocmVmPSJwYXRobWFwOi8vVU1MX01FVEFNT0RFTFMvVU1MLm1ldGFtb2RlbC51bWwjUHJvcGVydHkiLz4NCisgICAgICA8L293bmVkQXR0cmlidXRlPg0KKyAgICAgIDxvd25lZEF0dHJpYnV0ZSB4bWk6aWQ9IlN5c01MTm9uTm9ybWF0aXZlRXh0ZW5zaW9ucy1EaXN0cmlidXRpb25zLU5vcm1hbC1tZWFuIiBuYW1lPSJtZWFuIiB2aXNpYmlsaXR5PSJwdWJsaWMiPg0KKyAgICAgICAgPHR5cGUgeG1pOnR5cGU9InVtbDpQcmltaXRpdmVUeXBlIiBocmVmPSJwYXRobWFwOi8vVU1MX0xJQlJBUklFUy9KYXZhUHJpbWl0aXZlVHlwZXMubGlicmFyeS51bWwjZG91YmxlIi8+DQorICAgICAgPC9vd25lZEF0dHJpYnV0ZT4NCisgICAgICA8b3duZWRBdHRyaWJ1dGUgeG1pOmlkPSJTeXNNTE5vbk5vcm1hdGl2ZUV4dGVuc2lvbnMtRGlzdHJpYnV0aW9ucy1Ob3JtYWwtc3RhbmRhcmREZXZpYXRpb24iIG5hbWU9InN0YW5kYXJkRGV2aWF0aW9uIiB2aXNpYmlsaXR5PSJwdWJsaWMiPg0KKyAgICAgICAgPHR5cGUgeG1pOnR5cGU9InVtbDpQcmltaXRpdmVUeXBlIiBocmVmPSJwYXRobWFwOi8vVU1MX0xJQlJBUklFUy9KYXZhUHJpbWl0aXZlVHlwZXMubGlicmFyeS51bWwjZG91YmxlIi8+DQorICAgICAgPC9vd25lZEF0dHJpYnV0ZT4NCisgICAgPC9wYWNrYWdlZEVsZW1lbnQ+DQorICAgIDxwYWNrYWdlZEVsZW1lbnQgeG1pOnR5cGU9InVtbDpFeHRlbnNpb24iIHhtaTppZD0iU3lzTUxOb25Ob3JtYXRpdmVFeHRlbnNpb25zLURpc3RyaWJ1dGlvbnMtRV9leHRlbnNpb25fSW50ZXJ2YWxfYmFzZV9Qcm9wZXJ0eSIgbmFtZT0iRV9leHRlbnNpb25fSW50ZXJ2YWxfYmFzZV9Qcm9wZXJ0eSIgbWVtYmVyRW5kPSJTeXNNTE5vbk5vcm1hdGl2ZUV4dGVuc2lvbnMtRGlzdHJpYnV0aW9ucy1FX2V4dGVuc2lvbl9JbnRlcnZhbF9iYXNlX1Byb3BlcnR5LWV4dGVuc2lvbl8gU3lzTUxOb25Ob3JtYXRpdmVFeHRlbnNpb25zLURpc3RyaWJ1dGlvbnMtSW50ZXJ2YWwtYmFzZV9Qcm9wZXJ0eSIgbmF2aWdhYmxlT3duZWRFbmQ9IlN5c01MTm9uTm9ybWF0aXZlRXh0ZW5zaW9ucy1EaXN0cmlidXRpb25zLUVfZXh0ZW5zaW9uX0ludGVydmFsX2Jhc2VfUHJvcGVydHktZXh0ZW5zaW9uXyI+DQorICAgICAgPG93bmVkRW5kIHhtaTp0eXBlPSJ1bWw6RXh0ZW5zaW9uRW5kIiB4bWk6aWQ9IlN5c01MTm9uTm9ybWF0aXZlRXh0ZW5zaW9ucy1EaXN0cmlidXRpb25zLUVfZXh0ZW5zaW9uX0ludGVydmFsX2Jhc2VfUHJvcGVydHktZXh0ZW5zaW9uXyIgbmFtZT0iZXh0ZW5zaW9uXyIgdmlzaWJpbGl0eT0icHVibGljIiB0eXBlPSJTeXNNTE5vbk5vcm1hdGl2ZUV4dGVuc2lvbnMtRGlzdHJpYnV0aW9ucy1JbnRlcnZhbCIgYWdncmVnYXRpb249ImNvbXBvc2l0ZSIgYXNzb2NpYXRpb249IlN5c01MTm9uTm9ybWF0aXZlRXh0ZW5zaW9ucy1EaXN0cmlidXRpb25zLUVfZXh0ZW5zaW9uX0ludGVydmFsX2Jhc2VfUHJvcGVydHkiPg0KKyAgICAgICAgPGxvd2VyVmFsdWUgeG1pOnR5cGU9InVtbDpMaXRlcmFsSW50ZWdlciIgeG1pOmlkPSJTeXNNTE5vbk5vcm1hdGl2ZUV4dGVuc2lvbnMtRGlzdHJpYnV0aW9ucy1FX2V4dGVuc2lvbl9JbnRlcnZhbF9iYXNlX1Byb3BlcnR5LWV4dGVuc2lvbl8tbG93ZXJWYWx1ZSIgbmFtZT0iIi8+DQorICAgICAgICA8dXBwZXJWYWx1ZSB4bWk6dHlwZT0idW1sOkxpdGVyYWxVbmxpbWl0ZWROYXR1cmFsIiB4bWk6aWQ9IlN5c01MTm9uTm9ybWF0aXZlRXh0ZW5zaW9ucy1EaXN0cmlidXRpb25zLUVfZXh0ZW5zaW9uX0ludGVydmFsX2Jhc2VfUHJvcGVydHktZXh0ZW5zaW9uXy11cHBlclZhbHVlIiBuYW1lPSIiIHZhbHVlPSIxIi8+DQorICAgICAgPC9vd25lZEVuZD4NCisgICAgPC9wYWNrYWdlZEVsZW1lbnQ+DQorICAgIDxwYWNrYWdlZEVsZW1lbnQgeG1pOnR5cGU9InVtbDpFeHRlbnNpb24iIHhtaTppZD0iU3lzTUxOb25Ob3JtYXRpdmVFeHRlbnNpb25zLURpc3RyaWJ1dGlvbnMtRV9leHRlbnNpb25fVW5pZm9ybV9iYXNlX1Byb3BlcnR5IiBuYW1lPSJFX2V4dGVuc2lvbl9Vbmlmb3JtX2Jhc2VfUHJvcGVydHkiIG1lbWJlckVuZD0iU3lzTUxOb25Ob3JtYXRpdmVFeHRlbnNpb25zLURpc3RyaWJ1dGlvbnMtRV9leHRlbnNpb25fVW5pZm9ybV9iYXNlX1Byb3BlcnR5LWV4dGVuc2lvbl8gU3lzTUxOb25Ob3JtYXRpdmVFeHRlbnNpb25zLURpc3RyaWJ1dGlvbnMtVW5pZm9ybS1iYXNlX1Byb3BlcnR5IiBuYXZpZ2FibGVPd25lZEVuZD0iU3lzTUxOb25Ob3JtYXRpdmVFeHRlbnNpb25zLURpc3RyaWJ1dGlvbnMtRV9leHRlbnNpb25fVW5pZm9ybV9iYXNlX1Byb3BlcnR5LWV4dGVuc2lvbl8iPg0KKyAgICAgIDxvd25lZEVuZCB4bWk6dHlwZT0idW1sOkV4dGVuc2lvbkVuZCIgeG1pOmlkPSJTeXNNTE5vbk5vcm1hdGl2ZUV4dGVuc2lvbnMtRGlzdHJpYnV0aW9ucy1FX2V4dGVuc2lvbl9Vbmlmb3JtX2Jhc2VfUHJvcGVydHktZXh0ZW5zaW9uXyIgbmFtZT0iZXh0ZW5zaW9uXyIgdmlzaWJpbGl0eT0icHVibGljIiB0eXBlPSJTeXNNTE5vbk5vcm1hdGl2ZUV4dGVuc2lvbnMtRGlzdHJpYnV0aW9ucy1Vbmlmb3JtIiBhZ2dyZWdhdGlvbj0iY29tcG9zaXRlIiBhc3NvY2lhdGlvbj0iU3lzTUxOb25Ob3JtYXRpdmVFeHRlbnNpb25zLURpc3RyaWJ1dGlvbnMtRV9leHRlbnNpb25fVW5pZm9ybV9iYXNlX1Byb3BlcnR5Ij4NCisgICAgICAgIDxsb3dlclZhbHVlIHhtaTp0eXBlPSJ1bWw6TGl0ZXJhbEludGVnZXIiIHhtaTppZD0iU3lzTUxOb25Ob3JtYXRpdmVFeHRlbnNpb25zLURpc3RyaWJ1dGlvbnMtRV9leHRlbnNpb25fVW5pZm9ybV9iYXNlX1Byb3BlcnR5LWV4dGVuc2lvbl8tbG93ZXJWYWx1ZSIgbmFtZT0iIi8+DQorICAgICAgICA8dXBwZXJWYWx1ZSB4bWk6dHlwZT0idW1sOkxpdGVyYWxVbmxpbWl0ZWROYXR1cmFsIiB4bWk6aWQ9IlN5c01MTm9uTm9ybWF0aXZlRXh0ZW5zaW9ucy1EaXN0cmlidXRpb25zLUVfZXh0ZW5zaW9uX1VuaWZvcm1fYmFzZV9Qcm9wZXJ0eS1leHRlbnNpb25fLXVwcGVyVmFsdWUiIG5hbWU9IiIgdmFsdWU9IjEiLz4NCisgICAgICA8L293bmVkRW5kPg0KKyAgICA8L3BhY2thZ2VkRWxlbWVudD4NCisgICAgPHBhY2thZ2VkRWxlbWVudCB4bWk6dHlwZT0idW1sOkV4dGVuc2lvbiIgeG1pOmlkPSJTeXNNTE5vbk5vcm1hdGl2ZUV4dGVuc2lvbnMtRGlzdHJpYnV0aW9ucy1FX2V4dGVuc2lvbl9CYXNpY0ludGVydmFsX2Jhc2VfUHJvcGVydHkiIG5hbWU9IkVfZXh0ZW5zaW9uX0Jhc2ljSW50ZXJ2YWxfYmFzZV9Qcm9wZXJ0eSIgbWVtYmVyRW5kPSJTeXNNTE5vbk5vcm1hdGl2ZUV4dGVuc2lvbnMtRGlzdHJpYnV0aW9ucy1FX2V4dGVuc2lvbl9CYXNpY0ludGVydmFsX2Jhc2VfUHJvcGVydHktZXh0ZW5zaW9uXyBTeXNNTE5vbk5vcm1hdGl2ZUV4dGVuc2lvbnMtRGlzdHJpYnV0aW9ucy1CYXNpY0ludGVydmFsLWJhc2VfUHJvcGVydHkiIG5hdmlnYWJsZU93bmVkRW5kPSJTeXNNTE5vbk5vcm1hdGl2ZUV4dGVuc2lvbnMtRGlzdHJpYnV0aW9ucy1FX2V4dGVuc2lvbl9CYXNpY0ludGVydmFsX2Jhc2VfUHJvcGVydHktZXh0ZW5zaW9uXyI+DQorICAgICAgPG93bmVkRW5kIHhtaTp0eXBlPSJ1bWw6RXh0ZW5zaW9uRW5kIiB4bWk6aWQ9IlN5c01MTm9uTm9ybWF0aXZlRXh0ZW5zaW9ucy1EaXN0cmlidXRpb25zLUVfZXh0ZW5zaW9uX0Jhc2ljSW50ZXJ2YWxfYmFzZV9Qcm9wZXJ0eS1leHRlbnNpb25fIiBuYW1lPSJleHRlbnNpb25fIiB2aXNpYmlsaXR5PSJwdWJsaWMiIHR5cGU9IlN5c01MTm9uTm9ybWF0aXZlRXh0ZW5zaW9ucy1EaXN0cmlidXRpb25zLUJhc2ljSW50ZXJ2YWwiIGFnZ3JlZ2F0aW9uPSJjb21wb3NpdGUiIGFzc29jaWF0aW9uPSJTeXNNTE5vbk5vcm1hdGl2ZUV4dGVuc2lvbnMtRGlzdHJpYnV0aW9ucy1FX2V4dGVuc2lvbl9CYXNpY0ludGVydmFsX2Jhc2VfUHJvcGVydHkiPg0KKyAgICAgICAgPGxvd2VyVmFsdWUgeG1pOnR5cGU9InVtbDpMaXRlcmFsSW50ZWdlciIgeG1pOmlkPSJTeXNNTE5vbk5vcm1hdGl2ZUV4dGVuc2lvbnMtRGlzdHJpYnV0aW9ucy1FX2V4dGVuc2lvbl9CYXNpY0ludGVydmFsX2Jhc2VfUHJvcGVydHktZXh0ZW5zaW9uXy1sb3dlclZhbHVlIiBuYW1lPSIiLz4NCisgICAgICAgIDx1cHBlclZhbHVlIHhtaTp0eXBlPSJ1bWw6TGl0ZXJhbFVubGltaXRlZE5hdHVyYWwiIHhtaTppZD0iU3lzTUxOb25Ob3JtYXRpdmVFeHRlbnNpb25zLURpc3RyaWJ1dGlvbnMtRV9leHRlbnNpb25fQmFzaWNJbnRlcnZhbF9iYXNlX1Byb3BlcnR5LWV4dGVuc2lvbl8tdXBwZXJWYWx1ZSIgbmFtZT0iIiB2YWx1ZT0iMSIvPg0KKyAgICAgIDwvb3duZWRFbmQ+DQorICAgIDwvcGFja2FnZWRFbGVtZW50Pg0KKyAgICA8cGFja2FnZWRFbGVtZW50IHhtaTp0eXBlPSJ1bWw6U3RlcmVvdHlwZSIgeG1pOmlkPSJTeXNNTE5vbk5vcm1hdGl2ZUV4dGVuc2lvbnMtRGlzdHJpYnV0aW9ucy1CYXNpY0ludGVydmFsIiBuYW1lPSJCYXNpY0ludGVydmFsIj4NCisgICAgICA8b3duZWRDb21tZW50IHhtaTppZD0iU3lzTUxOb25Ob3JtYXRpdmVFeHRlbnNpb25zLURpc3RyaWJ1dGlvbnMtQmFzaWNJbnRlcnZhbC1vd25lZENvbW1lbnQiIGFubm90YXRlZEVsZW1lbnQ9IlN5c01MTm9uTm9ybWF0aXZlRXh0ZW5zaW9ucy1EaXN0cmlidXRpb25zLUJhc2ljSW50ZXJ2YWwiPg0KKyAgICAgICAgPGJvZHk+QmFzaWMgSW50ZXJ2YWwgZGlzdHJpYnV0aW9uIC0gdmFsdWUgYmV0d2VlbiBtaW4gYW5kIG1heCBpbmNsdXNpdmU8L2JvZHk+DQorICAgICAgPC9vd25lZENvbW1lbnQ+DQorICAgICAgPGdlbmVyYWxpemF0aW9uIHhtaTppZD0iU3lzTUxOb25Ob3JtYXRpdmVFeHRlbnNpb25zLURpc3RyaWJ1dGlvbnMtQmFzaWNJbnRlcnZhbC1nZW5lcmFsaXphdGlvbiI+DQorICAgICAgICA8Z2VuZXJhbCB4bWk6dHlwZT0idW1sOlN0ZXJlb3R5cGUiIGhyZWY9IlN5c01MLnByb2ZpbGUudW1sI1N5c01MLUJsb2Nrcy1EaXN0cmlidXRlZFByb3BlcnR5Ii8+DQorICAgICAgPC9nZW5lcmFsaXphdGlvbj4NCisgICAgICA8b3duZWRBdHRyaWJ1dGUgeG1pOmlkPSJTeXNNTE5vbk5vcm1hdGl2ZUV4dGVuc2lvbnMtRGlzdHJpYnV0aW9ucy1CYXNpY0ludGVydmFsLWJhc2VfUHJvcGVydHkiIG5hbWU9ImJhc2VfUHJvcGVydHkiIHZpc2liaWxpdHk9InB1YmxpYyIgYXNzb2NpYXRpb249IlN5c01MTm9uTm9ybWF0aXZlRXh0ZW5zaW9ucy1EaXN0cmlidXRpb25zLUVfZXh0ZW5zaW9uX0Jhc2ljSW50ZXJ2YWxfYmFzZV9Qcm9wZXJ0eSI+DQorICAgICAgICA8dHlwZSB4bWk6dHlwZT0idW1sOkNsYXNzIiBocmVmPSJwYXRobWFwOi8vVU1MX01FVEFNT0RFTFMvVU1MLm1ldGFtb2RlbC51bWwjUHJvcGVydHkiLz4NCisgICAgICA8L293bmVkQXR0cmlidXRlPg0KKyAgICAgIDxvd25lZEF0dHJpYnV0ZSB4bWk6aWQ9IlN5c01MTm9uTm9ybWF0aXZlRXh0ZW5zaW9ucy1EaXN0cmlidXRpb25zLUJhc2ljSW50ZXJ2YWwtbWluIiBuYW1lPSJtaW4iIHZpc2liaWxpdHk9InB1YmxpYyI+DQorICAgICAgICA8dHlwZSB4bWk6dHlwZT0idW1sOlByaW1pdGl2ZVR5cGUiIGhyZWY9InBhdGhtYXA6Ly9VTUxfTElCUkFSSUVTL0phdmFQcmltaXRpdmVUeXBlcy5saWJyYXJ5LnVtbCNkb3VibGUiLz4NCisgICAgICA8L293bmVkQXR0cmlidXRlPg0KKyAgICAgIDxvd25lZEF0dHJpYnV0ZSB4bWk6aWQ9IlN5c01MTm9uTm9ybWF0aXZlRXh0ZW5zaW9ucy1EaXN0cmlidXRpb25zLUJhc2ljSW50ZXJ2YWwtbWF4IiBuYW1lPSJtYXgiIHZpc2liaWxpdHk9InB1YmxpYyI+DQorICAgICAgICA8dHlwZSB4bWk6dHlwZT0idW1sOlByaW1pdGl2ZVR5cGUiIGhyZWY9InBhdGhtYXA6Ly9VTUxfTElCUkFSSUVTL0phdmFQcmltaXRpdmVUeXBlcy5saWJyYXJ5LnVtbCNkb3VibGUiLz4NCisgICAgICA8L293bmVkQXR0cmlidXRlPg0KKyAgICA8L3BhY2thZ2VkRWxlbWVudD4NCisgICAgPHBhY2thZ2VkRWxlbWVudCB4bWk6dHlwZT0idW1sOlN0ZXJlb3R5cGUiIHhtaTppZD0iU3lzTUxOb25Ob3JtYXRpdmVFeHRlbnNpb25zLURpc3RyaWJ1dGlvbnMtSW50ZXJ2YWwiIG5hbWU9IkludGVydmFsIj4NCisgICAgICA8b3duZWRDb21tZW50IHhtaTppZD0iU3lzTUxOb25Ob3JtYXRpdmVFeHRlbnNpb25zLURpc3RyaWJ1dGlvbnMtSW50ZXJ2YWwtb3duZWRDb21tZW50IiBhbm5vdGF0ZWRFbGVtZW50PSJTeXNNTE5vbk5vcm1hdGl2ZUV4dGVuc2lvbnMtRGlzdHJpYnV0aW9ucy1JbnRlcnZhbCI+DQorICAgICAgICA8Ym9keT5JbnRlcnZhbCBkaXN0cmlidXRpb24gLSB1bmtub3duIHByb2JhYmlsaXR5IGJldHdlZW4gbWluIGFuZCBtYXg8L2JvZHk+DQorICAgICAgPC9vd25lZENvbW1lbnQ+DQorICAgICAgPGdlbmVyYWxpemF0aW9uIHhtaTppZD0iU3lzTUxOb25Ob3JtYXRpdmVFeHRlbnNpb25zLURpc3RyaWJ1dGlvbnMtSW50ZXJ2YWwtZ2VuZXJhbGl6YXRpb24iIGdlbmVyYWw9IlN5c01MTm9uTm9ybWF0aXZlRXh0ZW5zaW9ucy1EaXN0cmlidXRpb25zLUJhc2ljSW50ZXJ2YWwiIGlzU3Vic3RpdHV0YWJsZT0iZmFsc2UiLz4NCisgICAgICA8b3duZWRBdHRyaWJ1dGUgeG1pOmlkPSJTeXNNTE5vbk5vcm1hdGl2ZUV4dGVuc2lvbnMtRGlzdHJpYnV0aW9ucy1JbnRlcnZhbC1iYXNlX1Byb3BlcnR5IiBuYW1lPSJiYXNlX1Byb3BlcnR5IiB2aXNpYmlsaXR5PSJwdWJsaWMiIGFzc29jaWF0aW9uPSJTeXNNTE5vbk5vcm1hdGl2ZUV4dGVuc2lvbnMtRGlzdHJpYnV0aW9ucy1FX2V4dGVuc2lvbl9JbnRlcnZhbF9iYXNlX1Byb3BlcnR5Ij4NCisgICAgICAgIDx0eXBlIHhtaTp0eXBlPSJ1bWw6Q2xhc3MiIGhyZWY9InBhdGhtYXA6Ly9VTUxfTUVUQU1PREVMUy9VTUwubWV0YW1vZGVsLnVtbCNQcm9wZXJ0eSIvPg0KKyAgICAgIDwvb3duZWRBdHRyaWJ1dGU+DQorICAgIDwvcGFja2FnZWRFbGVtZW50Pg0KKyAgPC9wYWNrYWdlZEVsZW1lbnQ+DQorICA8cGFja2FnZWRFbGVtZW50IHhtaTp0eXBlPSJ1bWw6UGFja2FnZSIgeG1pOmlkPSJTeXNNTE5vbk5vcm1hdGl2ZUV4dGVuc2lvbnMtRGlhZ3JhbXMiIG5hbWU9IkRpYWdyYW1zIiBVUkk9IiI+DQorICAgIDxwYWNrYWdlZEVsZW1lbnQgeG1pOnR5cGU9InVtbDpTdGVyZW90eXBlIiB4bWk6aWQ9IlN5c01MTm9uTm9ybWF0aXZlRXh0ZW5zaW9ucy1EaWFncmFtcy1CbG9ja0hpZXJhcmNoeSIgbmFtZT0iQmxvY2tIaWVyYXJjaHkiPg0KKyAgICAgIDxvd25lZENvbW1lbnQgeG1pOmlkPSJTeXNNTE5vbk5vcm1hdGl2ZUV4dGVuc2lvbnMtRGlhZ3JhbXMtQmxvY2tIaWVyYXJjaHktb3duZWRDb21tZW50IiBhbm5vdGF0ZWRFbGVtZW50PSJTeXNNTE5vbk5vcm1hdGl2ZUV4dGVuc2lvbnMtRGlhZ3JhbXMtQmxvY2tIaWVyYXJjaHkiPg0KKyAgICAgICAgPGJvZHk+QmxvY2sgZGVmaW5pdGlvbiBkaWFncmFtIHVzYWdlIGZvciBhIGJsb2NrIGhpZXJhcmNoeSAtIEJsb2NrIEhpZXJhcmNoeSB3aGVyZSBibG9jayBjYW4gYmUgcmVwbGFjZWQgYnkgc3lzdGVtLCBpdGVtLCBhY3Rpdml0eSwgZXRjLjwvYm9keT4NCisgICAgICA8L293bmVkQ29tbWVudD4NCisgICAgICA8b3duZWRBdHRyaWJ1dGUgeG1pOmlkPSJTeXNNTE5vbk5vcm1hdGl2ZUV4dGVuc2lvbnMtRGlhZ3JhbXMtQmxvY2tIaWVyYXJjaHktYmFzZV9EaWFncmFtIiBuYW1lPSJiYXNlX0RpYWdyYW0iIHZpc2liaWxpdHk9InB1YmxpYyIgYXNzb2NpYXRpb249IlN5c01MTm9uTm9ybWF0aXZlRXh0ZW5zaW9ucy1EaWFncmFtcy1FX2V4dGVuc2lvbl9CbG9ja0hpZXJhcmNoeV9iYXNlX0RpYWdyYW0iPg0KKyAgICAgICAgPHR5cGUgeG1pOnR5cGU9InVtbDpDbGFzcyIgaHJlZj0icGF0aG1hcDovL1VNTF9NRVRBTU9ERUxTL1VNTC5tZXRhbW9kZWwudW1sI0VsZW1lbnQiLz4NCisgICAgICA8L293bmVkQXR0cmlidXRlPg0KKyAgICA8L3BhY2thZ2VkRWxlbWVudD4NCisgICAgPHBhY2thZ2VkRWxlbWVudCB4bWk6dHlwZT0idW1sOkV4dGVuc2lvbiIgeG1pOmlkPSJTeXNNTE5vbk5vcm1hdGl2ZUV4dGVuc2lvbnMtRGlhZ3JhbXMtRV9leHRlbnNpb25fQmxvY2tIaWVyYXJjaHlfYmFzZV9EaWFncmFtIiBuYW1lPSJFX2V4dGVuc2lvbl9CbG9ja0hpZXJhcmNoeV9iYXNlX0RpYWdyYW0iIG1lbWJlckVuZD0iU3lzTUxOb25Ob3JtYXRpdmVFeHRlbnNpb25zLURpYWdyYW1zLUVfZXh0ZW5zaW9uX0Jsb2NrSGllcmFyY2h5X2Jhc2VfRGlhZ3JhbS1leHRlbnNpb25fIFN5c01MTm9uTm9ybWF0aXZlRXh0ZW5zaW9ucy1EaWFncmFtcy1CbG9ja0hpZXJhcmNoeS1iYXNlX0RpYWdyYW0iIG5hdmlnYWJsZU93bmVkRW5kPSJTeXNNTE5vbk5vcm1hdGl2ZUV4dGVuc2lvbnMtRGlhZ3JhbXMtRV9leHRlbnNpb25fQmxvY2tIaWVyYXJjaHlfYmFzZV9EaWFncmFtLWV4dGVuc2lvbl8iPg0KKyAgICAgIDxvd25lZEVuZCB4bWk6dHlwZT0idW1sOkV4dGVuc2lvbkVuZCIgeG1pOmlkPSJTeXNNTE5vbk5vcm1hdGl2ZUV4dGVuc2lvbnMtRGlhZ3JhbXMtRV9leHRlbnNpb25fQmxvY2tIaWVyYXJjaHlfYmFzZV9EaWFncmFtLWV4dGVuc2lvbl8iIG5hbWU9ImV4dGVuc2lvbl8iIHZpc2liaWxpdHk9InB1YmxpYyIgdHlwZT0iU3lzTUxOb25Ob3JtYXRpdmVFeHRlbnNpb25zLURpYWdyYW1zLUJsb2NrSGllcmFyY2h5IiBhZ2dyZWdhdGlvbj0iY29tcG9zaXRlIiBhc3NvY2lhdGlvbj0iU3lzTUxOb25Ob3JtYXRpdmVFeHRlbnNpb25zLURpYWdyYW1zLUVfZXh0ZW5zaW9uX0Jsb2NrSGllcmFyY2h5X2Jhc2VfRGlhZ3JhbSI+DQorICAgICAgICA8bG93ZXJWYWx1ZSB4bWk6dHlwZT0idW1sOkxpdGVyYWxJbnRlZ2VyIiB4bWk6aWQ9IlN5c01MTm9uTm9ybWF0aXZlRXh0ZW5zaW9ucy1EaWFncmFtcy1FX2V4dGVuc2lvbl9CbG9ja0hpZXJhcmNoeV9iYXNlX0RpYWdyYW0tZXh0ZW5zaW9uXy1sb3dlclZhbHVlIiBuYW1lPSIiLz4NCisgICAgICAgIDx1cHBlclZhbHVlIHhtaTp0eXBlPSJ1bWw6TGl0ZXJhbFVubGltaXRlZE5hdHVyYWwiIHhtaTppZD0iU3lzTUxOb25Ob3JtYXRpdmVFeHRlbnNpb25zLURpYWdyYW1zLUVfZXh0ZW5zaW9uX0Jsb2NrSGllcmFyY2h5X2Jhc2VfRGlhZ3JhbS1leHRlbnNpb25fLXVwcGVyVmFsdWUiIG5hbWU9IiIgdmFsdWU9IjEiLz4NCisgICAgICA8L293bmVkRW5kPg0KKyAgICA8L3BhY2thZ2VkRWxlbWVudD4NCisgICAgPHBhY2thZ2VkRWxlbWVudCB4bWk6dHlwZT0idW1sOlN0ZXJlb3R5cGUiIHhtaTppZD0iU3lzTUxOb25Ob3JtYXRpdmVFeHRlbnNpb25zLURpYWdyYW1zLURpYWdyYW1fRGVzY3JpcHRpb24iIG5hbWU9IkRpYWdyYW0gRGVzY3JpcHRpb24iPg0KKyAgICAgIDxvd25lZEF0dHJpYnV0ZSB4bWk6aWQ9IlN5c01MTm9uTm9ybWF0aXZlRXh0ZW5zaW9ucy1EaWFncmFtcy1EaWFncmFtX0Rlc2NyaXB0aW9uLWJhc2VfRGlhZ3JhbSIgbmFtZT0iYmFzZV9EaWFncmFtIiB2aXNpYmlsaXR5PSJwdWJsaWMiIGFzc29jaWF0aW9uPSJTeXNNTE5vbk5vcm1hdGl2ZUV4dGVuc2lvbnMtRGlhZ3JhbXMtRV9leHRlbnNpb25fRGlhZ3JhbV9EZXNjcmlwdGlvbl9iYXNlX0RpYWdyYW0iPg0KKyAgICAgICAgPHR5cGUgeG1pOnR5cGU9InVtbDpDbGFzcyIgaHJlZj0icGF0aG1hcDovL1VNTF9NRVRBTU9ERUxTL1VNTC5tZXRhbW9kZWwudW1sI0VsZW1lbnQiLz4NCisgICAgICA8L293bmVkQXR0cmlidXRlPg0KKyAgICAgIDxvd25lZEF0dHJpYnV0ZSB4bWk6aWQ9IlN5c01MTm9uTm9ybWF0aXZlRXh0ZW5zaW9ucy1EaWFncmFtcy1EaWFncmFtX0Rlc2NyaXB0aW9uLVZlcnNpb24iIG5hbWU9IlZlcnNpb24iIHZpc2liaWxpdHk9InB1YmxpYyI+DQorICAgICAgICA8dHlwZSB4bWk6dHlwZT0idW1sOlByaW1pdGl2ZVR5cGUiIGhyZWY9InBhdGhtYXA6Ly9VTUxfTElCUkFSSUVTL1VNTFByaW1pdGl2ZVR5cGVzLmxpYnJhcnkudW1sI1N0cmluZyIvPg0KKyAgICAgIDwvb3duZWRBdHRyaWJ1dGU+DQorICAgICAgPG93bmVkQXR0cmlidXRlIHhtaTppZD0iU3lzTUxOb25Ob3JtYXRpdmVFeHRlbnNpb25zLURpYWdyYW1zLURpYWdyYW1fRGVzY3JpcHRpb24tRGVzY3JpcHRpb24iIG5hbWU9IkRlc2NyaXB0aW9uIiB2aXNpYmlsaXR5PSJwdWJsaWMiPg0KKyAgICAgICAgPHR5cGUgeG1pOnR5cGU9InVtbDpQcmltaXRpdmVUeXBlIiBocmVmPSJwYXRobWFwOi8vVU1MX0xJQlJBUklFUy9VTUxQcmltaXRpdmVUeXBlcy5saWJyYXJ5LnVtbCNTdHJpbmciLz4NCisgICAgICA8L293bmVkQXR0cmlidXRlPg0KKyAgICAgIDxvd25lZEF0dHJpYnV0ZSB4bWk6aWQ9IlN5c01MTm9uTm9ybWF0aXZlRXh0ZW5zaW9ucy1EaWFncmFtcy1EaWFncmFtX0Rlc2NyaXB0aW9uLUNvbXBsZXRpb25fc3RhdHVzIiBuYW1lPSJDb21wbGV0aW9uIHN0YXR1cyIgdmlzaWJpbGl0eT0icHVibGljIj4NCisgICAgICAgIDx0eXBlIHhtaTp0eXBlPSJ1bWw6UHJpbWl0aXZlVHlwZSIgaHJlZj0icGF0aG1hcDovL1VNTF9MSUJSQVJJRVMvVU1MUHJpbWl0aXZlVHlwZXMubGlicmFyeS51bWwjU3RyaW5nIi8+DQorICAgICAgPC9vd25lZEF0dHJpYnV0ZT4NCisgICAgICA8b3duZWRBdHRyaWJ1dGUgeG1pOmlkPSJTeXNNTE5vbk5vcm1hdGl2ZUV4dGVuc2lvbnMtRGlhZ3JhbXMtRGlhZ3JhbV9EZXNjcmlwdGlvbi1SZWZlcmVuY2UiIG5hbWU9IlJlZmVyZW5jZSIgdmlzaWJpbGl0eT0icHVibGljIj4NCisgICAgICAgIDx0eXBlIHhtaTp0eXBlPSJ1bWw6Q2xhc3MiIGhyZWY9InBhdGhtYXA6Ly9VTUxfTUVUQU1PREVMUy9VTUwubWV0YW1vZGVsLnVtbCNFbGVtZW50Ii8+DQorICAgICAgPC9vd25lZEF0dHJpYnV0ZT4NCisgICAgPC9wYWNrYWdlZEVsZW1lbnQ+DQorICAgIDxwYWNrYWdlZEVsZW1lbnQgeG1pOnR5cGU9InVtbDpFeHRlbnNpb24iIHhtaTppZD0iU3lzTUxOb25Ob3JtYXRpdmVFeHRlbnNpb25zLURpYWdyYW1zLUVfZXh0ZW5zaW9uX0NvbnRleHREaWFncmFtX2Jhc2VfRGlhZ3JhbSIgbmFtZT0iRV9leHRlbnNpb25fQ29udGV4dERpYWdyYW1fYmFzZV9EaWFncmFtIiBtZW1iZXJFbmQ9IlN5c01MTm9uTm9ybWF0aXZlRXh0ZW5zaW9ucy1EaWFncmFtcy1FX2V4dGVuc2lvbl9Db250ZXh0RGlhZ3JhbV9iYXNlX0RpYWdyYW0tZXh0ZW5zaW9uXyBTeXNNTE5vbk5vcm1hdGl2ZUV4dGVuc2lvbnMtRGlhZ3JhbXMtQ29udGV4dERpYWdyYW0tYmFzZV9EaWFncmFtIiBuYXZpZ2FibGVPd25lZEVuZD0iU3lzTUxOb25Ob3JtYXRpdmVFeHRlbnNpb25zLURpYWdyYW1zLUVfZXh0ZW5zaW9uX0NvbnRleHREaWFncmFtX2Jhc2VfRGlhZ3JhbS1leHRlbnNpb25fIj4NCisgICAgICA8b3duZWRFbmQgeG1pOnR5cGU9InVtbDpFeHRlbnNpb25FbmQiIHhtaTppZD0iU3lzTUxOb25Ob3JtYXRpdmVFeHRlbnNpb25zLURpYWdyYW1zLUVfZXh0ZW5zaW9uX0NvbnRleHREaWFncmFtX2Jhc2VfRGlhZ3JhbS1leHRlbnNpb25fIiBuYW1lPSJleHRlbnNpb25fIiB2aXNpYmlsaXR5PSJwdWJsaWMiIHR5cGU9IlN5c01MTm9uTm9ybWF0aXZlRXh0ZW5zaW9ucy1EaWFncmFtcy1Db250ZXh0RGlhZ3JhbSIgYWdncmVnYXRpb249ImNvbXBvc2l0ZSIgYXNzb2NpYXRpb249IlN5c01MTm9uTm9ybWF0aXZlRXh0ZW5zaW9ucy1EaWFncmFtcy1FX2V4dGVuc2lvbl9Db250ZXh0RGlhZ3JhbV9iYXNlX0RpYWdyYW0iPg0KKyAgICAgICAgPGxvd2VyVmFsdWUgeG1pOnR5cGU9InVtbDpMaXRlcmFsSW50ZWdlciIgeG1pOmlkPSJTeXNNTE5vbk5vcm1hdGl2ZUV4dGVuc2lvbnMtRGlhZ3JhbXMtRV9leHRlbnNpb25fQ29udGV4dERpYWdyYW1fYmFzZV9EaWFncmFtLWV4dGVuc2lvbl8tbG93ZXJWYWx1ZSIgbmFtZT0iIi8+DQorICAgICAgICA8dXBwZXJWYWx1ZSB4bWk6dHlwZT0idW1sOkxpdGVyYWxVbmxpbWl0ZWROYXR1cmFsIiB4bWk6aWQ9IlN5c01MTm9uTm9ybWF0aXZlRXh0ZW5zaW9ucy1EaWFncmFtcy1FX2V4dGVuc2lvbl9Db250ZXh0RGlhZ3JhbV9iYXNlX0RpYWdyYW0tZXh0ZW5zaW9uXy11cHBlclZhbHVlIiBuYW1lPSIiIHZhbHVlPSIxIi8+DQorICAgICAgPC9vd25lZEVuZD4NCisgICAgPC9wYWNrYWdlZEVsZW1lbnQ+DQorICAgIDxwYWNrYWdlZEVsZW1lbnQgeG1pOnR5cGU9InVtbDpFeHRlbnNpb24iIHhtaTppZD0iU3lzTUxOb25Ob3JtYXRpdmVFeHRlbnNpb25zLURpYWdyYW1zLUVfZXh0ZW5zaW9uX1N3aW1MYW5lRGlhZ3JhbV9iYXNlX0RpYWdyYW0iIG5hbWU9IkVfZXh0ZW5zaW9uX1N3aW1MYW5lRGlhZ3JhbV9iYXNlX0RpYWdyYW0iIG1lbWJlckVuZD0iU3lzTUxOb25Ob3JtYXRpdmVFeHRlbnNpb25zLURpYWdyYW1zLUVfZXh0ZW5zaW9uX1N3aW1MYW5lRGlhZ3JhbV9iYXNlX0RpYWdyYW0tZXh0ZW5zaW9uXyBTeXNNTE5vbk5vcm1hdGl2ZUV4dGVuc2lvbnMtRGlhZ3JhbXMtU3dpbUxhbmVEaWFncmFtLWJhc2VfRGlhZ3JhbSIgbmF2aWdhYmxlT3duZWRFbmQ9IlN5c01MTm9uTm9ybWF0aXZlRXh0ZW5zaW9ucy1EaWFncmFtcy1FX2V4dGVuc2lvbl9Td2ltTGFuZURpYWdyYW1fYmFzZV9EaWFncmFtLWV4dGVuc2lvbl8iPg0KKyAgICAgIDxvd25lZEVuZCB4bWk6dHlwZT0idW1sOkV4dGVuc2lvbkVuZCIgeG1pOmlkPSJTeXNNTE5vbk5vcm1hdGl2ZUV4dGVuc2lvbnMtRGlhZ3JhbXMtRV9leHRlbnNpb25fU3dpbUxhbmVEaWFncmFtX2Jhc2VfRGlhZ3JhbS1leHRlbnNpb25fIiBuYW1lPSJleHRlbnNpb25fIiB2aXNpYmlsaXR5PSJwdWJsaWMiIHR5cGU9IlN5c01MTm9uTm9ybWF0aXZlRXh0ZW5zaW9ucy1EaWFncmFtcy1Td2ltTGFuZURpYWdyYW0iIGFnZ3JlZ2F0aW9uPSJjb21wb3NpdGUiIGFzc29jaWF0aW9uPSJTeXNNTE5vbk5vcm1hdGl2ZUV4dGVuc2lvbnMtRGlhZ3JhbXMtRV9leHRlbnNpb25fU3dpbUxhbmVEaWFncmFtX2Jhc2VfRGlhZ3JhbSI+DQorICAgICAgICA8bG93ZXJWYWx1ZSB4bWk6dHlwZT0idW1sOkxpdGVyYWxJbnRlZ2VyIiB4bWk6aWQ9IlN5c01MTm9uTm9ybWF0aXZlRXh0ZW5zaW9ucy1EaWFncmFtcy1FX2V4dGVuc2lvbl9Td2ltTGFuZURpYWdyYW1fYmFzZV9EaWFncmFtLWV4dGVuc2lvbl8tbG93ZXJWYWx1ZSIgbmFtZT0iIi8+DQorICAgICAgICA8dXBwZXJWYWx1ZSB4bWk6dHlwZT0idW1sOkxpdGVyYWxVbmxpbWl0ZWROYXR1cmFsIiB4bWk6aWQ9IlN5c01MTm9uTm9ybWF0aXZlRXh0ZW5zaW9ucy1EaWFncmFtcy1FX2V4dGVuc2lvbl9Td2ltTGFuZURpYWdyYW1fYmFzZV9EaWFncmFtLWV4dGVuc2lvbl8tdXBwZXJWYWx1ZSIgbmFtZT0iIiB2YWx1ZT0iMSIvPg0KKyAgICAgIDwvb3duZWRFbmQ+DQorICAgIDwvcGFja2FnZWRFbGVtZW50Pg0KKyAgICA8cGFja2FnZWRFbGVtZW50IHhtaTp0eXBlPSJ1bWw6RXh0ZW5zaW9uIiB4bWk6aWQ9IlN5c01MTm9uTm9ybWF0aXZlRXh0ZW5zaW9ucy1EaWFncmFtcy1FX2V4dGVuc2lvbl9kaWFncmFtVXNhZ2VfYmFzZV9EaWFncmFtIiBuYW1lPSJFX2V4dGVuc2lvbl9kaWFncmFtVXNhZ2VfYmFzZV9EaWFncmFtIiBtZW1iZXJFbmQ9IlN5c01MTm9uTm9ybWF0aXZlRXh0ZW5zaW9ucy1EaWFncmFtcy1FX2V4dGVuc2lvbl9kaWFncmFtVXNhZ2VfYmFzZV9EaWFncmFtLWV4dGVuc2lvbl9kaWFncmFtVXNhZ2UgU3lzTUxOb25Ob3JtYXRpdmVFeHRlbnNpb25zLURpYWdyYW1zLWRpYWdyYW1Vc2FnZS1iYXNlX0RpYWdyYW0iIG5hdmlnYWJsZU93bmVkRW5kPSJTeXNNTE5vbk5vcm1hdGl2ZUV4dGVuc2lvbnMtRGlhZ3JhbXMtRV9leHRlbnNpb25fZGlhZ3JhbVVzYWdlX2Jhc2VfRGlhZ3JhbS1leHRlbnNpb25fZGlhZ3JhbVVzYWdlIj4NCisgICAgICA8b3duZWRFbmQgeG1pOnR5cGU9InVtbDpFeHRlbnNpb25FbmQiIHhtaTppZD0iU3lzTUxOb25Ob3JtYXRpdmVFeHRlbnNpb25zLURpYWdyYW1zLUVfZXh0ZW5zaW9uX2RpYWdyYW1Vc2FnZV9iYXNlX0RpYWdyYW0tZXh0ZW5zaW9uX2RpYWdyYW1Vc2FnZSIgbmFtZT0iZXh0ZW5zaW9uX2RpYWdyYW1Vc2FnZSIgdmlzaWJpbGl0eT0icHVibGljIiB0eXBlPSJTeXNNTE5vbk5vcm1hdGl2ZUV4dGVuc2lvbnMtRGlhZ3JhbXMtZGlhZ3JhbVVzYWdlIiBhZ2dyZWdhdGlvbj0iY29tcG9zaXRlIiBhc3NvY2lhdGlvbj0iU3lzTUxOb25Ob3JtYXRpdmVFeHRlbnNpb25zLURpYWdyYW1zLUVfZXh0ZW5zaW9uX2RpYWdyYW1Vc2FnZV9iYXNlX0RpYWdyYW0iPg0KKyAgICAgICAgPGxvd2VyVmFsdWUgeG1pOnR5cGU9InVtbDpMaXRlcmFsSW50ZWdlciIgeG1pOmlkPSJTeXNNTE5vbk5vcm1hdGl2ZUV4dGVuc2lvbnMtRGlhZ3JhbXMtRV9leHRlbnNpb25fZGlhZ3JhbVVzYWdlX2Jhc2VfRGlhZ3JhbS1leHRlbnNpb25fZGlhZ3JhbVVzYWdlLWxvd2VyVmFsdWUiIG5hbWU9IiIvPg0KKyAgICAgICAgPHVwcGVyVmFsdWUgeG1pOnR5cGU9InVtbDpMaXRlcmFsVW5saW1pdGVkTmF0dXJhbCIgeG1pOmlkPSJTeXNNTE5vbk5vcm1hdGl2ZUV4dGVuc2lvbnMtRGlhZ3JhbXMtRV9leHRlbnNpb25fZGlhZ3JhbVVzYWdlX2Jhc2VfRGlhZ3JhbS1leHRlbnNpb25fZGlhZ3JhbVVzYWdlLXVwcGVyVmFsdWUiIG5hbWU9IiIgdmFsdWU9IjEiLz4NCisgICAgICA8L293bmVkRW5kPg0KKyAgICA8L3BhY2thZ2VkRWxlbWVudD4NCisgICAgPHBhY2thZ2VkRWxlbWVudCB4bWk6dHlwZT0idW1sOlN0ZXJlb3R5cGUiIHhtaTppZD0iU3lzTUxOb25Ob3JtYXRpdmVFeHRlbnNpb25zLURpYWdyYW1zLVN3aW1MYW5lRGlhZ3JhbSIgbmFtZT0iU3dpbUxhbmVEaWFncmFtIj4NCisgICAgICA8b3duZWRDb21tZW50IHhtaTppZD0iU3lzTUxOb25Ob3JtYXRpdmVFeHRlbnNpb25zLURpYWdyYW1zLVN3aW1MYW5lRGlhZ3JhbS1vd25lZENvbW1lbnQiIGFubm90YXRlZEVsZW1lbnQ9IlN5c01MTm9uTm9ybWF0aXZlRXh0ZW5zaW9ucy1EaWFncmFtcy1Td2ltTGFuZURpYWdyYW0iPg0KKyAgICAgICAgPGJvZHk+QWN0aXZpdHkgZGlhZ3JhbSB1c2FnZSB3aXRoIHN3aW0gbGFuZXMuPC9ib2R5Pg0KKyAgICAgIDwvb3duZWRDb21tZW50Pg0KKyAgICAgIDxvd25lZEF0dHJpYnV0ZSB4bWk6aWQ9IlN5c01MTm9uTm9ybWF0aXZlRXh0ZW5zaW9ucy1EaWFncmFtcy1Td2ltTGFuZURpYWdyYW0tYmFzZV9EaWFncmFtIiBuYW1lPSJiYXNlX0RpYWdyYW0iIHZpc2liaWxpdHk9InB1YmxpYyIgYXNzb2NpYXRpb249IlN5c01MTm9uTm9ybWF0aXZlRXh0ZW5zaW9ucy1EaWFncmFtcy1FX2V4dGVuc2lvbl9Td2ltTGFuZURpYWdyYW1fYmFzZV9EaWFncmFtIj4NCisgICAgICAgIDx0eXBlIHhtaTp0eXBlPSJ1bWw6Q2xhc3MiIGhyZWY9InBhdGhtYXA6Ly9VTUxfTUVUQU1PREVMUy9VTUwubWV0YW1vZGVsLnVtbCNFbGVtZW50Ii8+DQorICAgICAgPC9vd25lZEF0dHJpYnV0ZT4NCisgICAgPC9wYWNrYWdlZEVsZW1lbnQ+DQorICAgIDxwYWNrYWdlZEVsZW1lbnQgeG1pOnR5cGU9InVtbDpTdGVyZW90eXBlIiB4bWk6aWQ9IlN5c01MTm9uTm9ybWF0aXZlRXh0ZW5zaW9ucy1EaWFncmFtcy1kaWFncmFtVXNhZ2UiIG5hbWU9ImRpYWdyYW1Vc2FnZSI+DQorICAgICAgPG93bmVkQ29tbWVudCB4bWk6aWQ9IlN5c01MTm9uTm9ybWF0aXZlRXh0ZW5zaW9ucy1EaWFncmFtcy1kaWFncmFtVXNhZ2Utb3duZWRDb21tZW50IiBhbm5vdGF0ZWRFbGVtZW50PSJTeXNNTE5vbk5vcm1hdGl2ZUV4dGVuc2lvbnMtRGlhZ3JhbXMtZGlhZ3JhbVVzYWdlIj4NCisgICAgICAgIDxib2R5PlN5c01MIGFsc28gaW50cm9kdWNlcyB0aGUgY29uY2VwdCBvZiBhIGRpYWdyYW0gdXNhZ2UuIFRoaXMgcmVwcmVzZW50cyBhIHVuaXF1ZSB1c2FnZSBvZiBhIHBhcnRpY3VsYXIgZGlhZ3JhbSB0eXBlLCBzdWNoIGFzIGEgY29udGV4dCBkaWFncmFtIGFzIGEgdXNhZ2Ugb2YgYW4gYmxvY2sgZGVmaW5pdGlvbiBkaWFncmFtLCBpbnRlcm5hbCBibG9jayBkaWFncmFtLCBvciB1c2UgY2FzZSBkaWFncmFtLiBUaGUgZGlhZ3JhbSB1c2FnZSBjYW4gYmUgaWRlbnRpZmllZCBpbiB0aGUgaGVhZGVyIGFib3ZlIHRoZSBkaWFncmFtS2luZCBhcyDCq2RpYWdyYW1Vc2FnZcK7LjwvYm9keT4NCisgICAgICA8L293bmVkQ29tbWVudD4NCisgICAgICA8b3duZWRBdHRyaWJ1dGUgeG1pOmlkPSJTeXNNTE5vbk5vcm1hdGl2ZUV4dGVuc2lvbnMtRGlhZ3JhbXMtZGlhZ3JhbVVzYWdlLWJhc2VfRGlhZ3JhbSIgbmFtZT0iYmFzZV9EaWFncmFtIiB2aXNpYmlsaXR5PSJwdWJsaWMiIGFzc29jaWF0aW9uPSJTeXNNTE5vbk5vcm1hdGl2ZUV4dGVuc2lvbnMtRGlhZ3JhbXMtRV9leHRlbnNpb25fZGlhZ3JhbVVzYWdlX2Jhc2VfRGlhZ3JhbSI+DQorICAgICAgICA8dHlwZSB4bWk6dHlwZT0idW1sOkNsYXNzIiBocmVmPSJwYXRobWFwOi8vVU1MX01FVEFNT0RFTFMvVU1MLm1ldGFtb2RlbC51bWwjRWxlbWVudCIvPg0KKyAgICAgIDwvb3duZWRBdHRyaWJ1dGU+DQorICAgIDwvcGFja2FnZWRFbGVtZW50Pg0KKyAgICA8cGFja2FnZWRFbGVtZW50IHhtaTp0eXBlPSJ1bWw6U3RlcmVvdHlwZSIgeG1pOmlkPSJTeXNNTE5vbk5vcm1hdGl2ZUV4dGVuc2lvbnMtRGlhZ3JhbXMtQ29udGV4dERpYWdyYW0iIG5hbWU9IkNvbnRleHREaWFncmFtIj4NCisgICAgICA8b3duZWRDb21tZW50IHhtaTppZD0iU3lzTUxOb25Ob3JtYXRpdmVFeHRlbnNpb25zLURpYWdyYW1zLUNvbnRleHREaWFncmFtLW93bmVkQ29tbWVudCIgYW5ub3RhdGVkRWxlbWVudD0iU3lzTUxOb25Ob3JtYXRpdmVFeHRlbnNpb25zLURpYWdyYW1zLUNvbnRleHREaWFncmFtIj4NCisgICAgICAgIDxib2R5PkEgdXNlciBkZWZpbmVkIHVzYWdlIG9mIGFuIGludGVybmFsIGJsb2NrIGRpYWdyYW0sIHdoaWNoIGRlcGljdHMgc29tZSBvZiB0aGUgdG9wIGxldmVsIGVudGl0aWVzIGluIHRoZSBvdmVyYWxsIGVudGVycHJpc2UgYW5kIHRoZWlyIHJlbGF0aW9uc2hpcHMuPC9ib2R5Pg0KKyAgICAgIDwvb3duZWRDb21tZW50Pg0KKyAgICAgIDxvd25lZEF0dHJpYnV0ZSB4bWk6aWQ9IlN5c01MTm9uTm9ybWF0aXZlRXh0ZW5zaW9ucy1EaWFncmFtcy1Db250ZXh0RGlhZ3JhbS1iYXNlX0RpYWdyYW0iIG5hbWU9ImJhc2VfRGlhZ3JhbSIgdmlzaWJpbGl0eT0icHVibGljIiBhc3NvY2lhdGlvbj0iU3lzTUxOb25Ob3JtYXRpdmVFeHRlbnNpb25zLURpYWdyYW1zLUVfZXh0ZW5zaW9uX0NvbnRleHREaWFncmFtX2Jhc2VfRGlhZ3JhbSI+DQorICAgICAgICA8dHlwZSB4bWk6dHlwZT0idW1sOkNsYXNzIiBocmVmPSJwYXRobWFwOi8vVU1MX01FVEFNT0RFTFMvVU1MLm1ldGFtb2RlbC51bWwjRWxlbWVudCIvPg0KKyAgICAgIDwvb3duZWRBdHRyaWJ1dGU+DQorICAgIDwvcGFja2FnZWRFbGVtZW50Pg0KKyAgICA8cGFja2FnZWRFbGVtZW50IHhtaTp0eXBlPSJ1bWw6RXh0ZW5zaW9uIiB4bWk6aWQ9IlN5c01MTm9uTm9ybWF0aXZlRXh0ZW5zaW9ucy1EaWFncmFtcy1FX2V4dGVuc2lvbl9EaWFncmFtX0Rlc2NyaXB0aW9uX2Jhc2VfRGlhZ3JhbSIgbmFtZT0iRV9leHRlbnNpb25fRGlhZ3JhbV9EZXNjcmlwdGlvbl9iYXNlX0RpYWdyYW0iIG1lbWJlckVuZD0iU3lzTUxOb25Ob3JtYXRpdmVFeHRlbnNpb25zLURpYWdyYW1zLUVfZXh0ZW5zaW9uX0RpYWdyYW1fRGVzY3JpcHRpb25fYmFzZV9EaWFncmFtLWV4dGVuc2lvbl9kaWFncmFtRGVzcmlwdGlvbiBTeXNNTE5vbk5vcm1hdGl2ZUV4dGVuc2lvbnMtRGlhZ3JhbXMtRGlhZ3JhbV9EZXNjcmlwdGlvbi1iYXNlX0RpYWdyYW0iIG5hdmlnYWJsZU93bmVkRW5kPSJTeXNNTE5vbk5vcm1hdGl2ZUV4dGVuc2lvbnMtRGlhZ3JhbXMtRV9leHRlbnNpb25fRGlhZ3JhbV9EZXNjcmlwdGlvbl9iYXNlX0RpYWdyYW0tZXh0ZW5zaW9uX2RpYWdyYW1EZXNyaXB0aW9uIj4NCisgICAgICA8b3duZWRFbmQgeG1pOnR5cGU9InVtbDpFeHRlbnNpb25FbmQiIHhtaTppZD0iU3lzTUxOb25Ob3JtYXRpdmVFeHRlbnNpb25zLURpYWdyYW1zLUVfZXh0ZW5zaW9uX0RpYWdyYW1fRGVzY3JpcHRpb25fYmFzZV9EaWFncmFtLWV4dGVuc2lvbl9kaWFncmFtRGVzcmlwdGlvbiIgbmFtZT0iZXh0ZW5zaW9uX2RpYWdyYW1EZXNyaXB0aW9uIiB2aXNpYmlsaXR5PSJwdWJsaWMiIHR5cGU9IlN5c01MTm9uTm9ybWF0aXZlRXh0ZW5zaW9ucy1EaWFncmFtcy1EaWFncmFtX0Rlc2NyaXB0aW9uIiBhZ2dyZWdhdGlvbj0iY29tcG9zaXRlIiBhc3NvY2lhdGlvbj0iU3lzTUxOb25Ob3JtYXRpdmVFeHRlbnNpb25zLURpYWdyYW1zLUVfZXh0ZW5zaW9uX0RpYWdyYW1fRGVzY3JpcHRpb25fYmFzZV9EaWFncmFtIj4NCisgICAgICAgIDxsb3dlclZhbHVlIHhtaTp0eXBlPSJ1bWw6TGl0ZXJhbEludGVnZXIiIHhtaTppZD0iU3lzTUxOb25Ob3JtYXRpdmVFeHRlbnNpb25zLURpYWdyYW1zLUVfZXh0ZW5zaW9uX0RpYWdyYW1fRGVzY3JpcHRpb25fYmFzZV9EaWFncmFtLWV4dGVuc2lvbl9kaWFncmFtRGVzcmlwdGlvbi1sb3dlclZhbHVlIiBuYW1lPSIiLz4NCisgICAgICAgIDx1cHBlclZhbHVlIHhtaTp0eXBlPSJ1bWw6TGl0ZXJhbFVubGltaXRlZE5hdHVyYWwiIHhtaTppZD0iU3lzTUxOb25Ob3JtYXRpdmVFeHRlbnNpb25zLURpYWdyYW1zLUVfZXh0ZW5zaW9uX0RpYWdyYW1fRGVzY3JpcHRpb25fYmFzZV9EaWFncmFtLWV4dGVuc2lvbl9kaWFncmFtRGVzcmlwdGlvbi11cHBlclZhbHVlIiBuYW1lPSIiIHZhbHVlPSIxIi8+DQorICAgICAgPC9vd25lZEVuZD4NCisgICAgPC9wYWNrYWdlZEVsZW1lbnQ+DQorICA8L3BhY2thZ2VkRWxlbWVudD4NCisgIDxwYWNrYWdlZEVsZW1lbnQgeG1pOnR5cGU9InVtbDpQYWNrYWdlIiB4bWk6aWQ9IlN5c01MTm9uTm9ybWF0aXZlRXh0ZW5zaW9ucy1QYXJhbWV0cmljIiBuYW1lPSJQYXJhbWV0cmljIiBVUkk9IiI+DQorICAgIDxwYWNrYWdlZEVsZW1lbnQgeG1pOnR5cGU9InVtbDpFeHRlbnNpb24iIHhtaTppZD0iU3lzTUxOb25Ob3JtYXRpdmVFeHRlbnNpb25zLVBhcmFtZXRyaWMtRV9leHRlbnNpb25fb2JqZWN0aXZlRnVuY3Rpb25fYmFzZV9Qcm9wZXJ0eSIgbmFtZT0iRV9leHRlbnNpb25fb2JqZWN0aXZlRnVuY3Rpb25fYmFzZV9Qcm9wZXJ0eSIgbWVtYmVyRW5kPSJTeXNNTE5vbk5vcm1hdGl2ZUV4dGVuc2lvbnMtUGFyYW1ldHJpYy1FX2V4dGVuc2lvbl9vYmplY3RpdmVGdW5jdGlvbl9iYXNlX1Byb3BlcnR5LWV4dGVuc2lvbl9vYmplY3RpdmVGdW5jdGlvbiBTeXNNTE5vbk5vcm1hdGl2ZUV4dGVuc2lvbnMtUGFyYW1ldHJpYy1vYmplY3RpdmVGdW5jdGlvbi1iYXNlX1Byb3BlcnR5IiBuYXZpZ2FibGVPd25lZEVuZD0iU3lzTUxOb25Ob3JtYXRpdmVFeHRlbnNpb25zLVBhcmFtZXRyaWMtRV9leHRlbnNpb25fb2JqZWN0aXZlRnVuY3Rpb25fYmFzZV9Qcm9wZXJ0eS1leHRlbnNpb25fb2JqZWN0aXZlRnVuY3Rpb24iPg0KKyAgICAgIDxvd25lZEVuZCB4bWk6dHlwZT0idW1sOkV4dGVuc2lvbkVuZCIgeG1pOmlkPSJTeXNNTE5vbk5vcm1hdGl2ZUV4dGVuc2lvbnMtUGFyYW1ldHJpYy1FX2V4dGVuc2lvbl9vYmplY3RpdmVGdW5jdGlvbl9iYXNlX1Byb3BlcnR5LWV4dGVuc2lvbl9vYmplY3RpdmVGdW5jdGlvbiIgbmFtZT0iZXh0ZW5zaW9uX29iamVjdGl2ZUZ1bmN0aW9uIiB2aXNpYmlsaXR5PSJwdWJsaWMiIHR5cGU9IlN5c01MTm9uTm9ybWF0aXZlRXh0ZW5zaW9ucy1QYXJhbWV0cmljLW9iamVjdGl2ZUZ1bmN0aW9uIiBhZ2dyZWdhdGlvbj0iY29tcG9zaXRlIiBhc3NvY2lhdGlvbj0iU3lzTUxOb25Ob3JtYXRpdmVFeHRlbnNpb25zLVBhcmFtZXRyaWMtRV9leHRlbnNpb25fb2JqZWN0aXZlRnVuY3Rpb25fYmFzZV9Qcm9wZXJ0eSI+DQorICAgICAgICA8bG93ZXJWYWx1ZSB4bWk6dHlwZT0idW1sOkxpdGVyYWxJbnRlZ2VyIiB4bWk6aWQ9IlN5c01MTm9uTm9ybWF0aXZlRXh0ZW5zaW9ucy1QYXJhbWV0cmljLUVfZXh0ZW5zaW9uX29iamVjdGl2ZUZ1bmN0aW9uX2Jhc2VfUHJvcGVydHktZXh0ZW5zaW9uX29iamVjdGl2ZUZ1bmN0aW9uLWxvd2VyVmFsdWUiIG5hbWU9IiIvPg0KKyAgICAgICAgPHVwcGVyVmFsdWUgeG1pOnR5cGU9InVtbDpMaXRlcmFsVW5saW1pdGVkTmF0dXJhbCIgeG1pOmlkPSJTeXNNTE5vbk5vcm1hdGl2ZUV4dGVuc2lvbnMtUGFyYW1ldHJpYy1FX2V4dGVuc2lvbl9vYmplY3RpdmVGdW5jdGlvbl9iYXNlX1Byb3BlcnR5LWV4dGVuc2lvbl9vYmplY3RpdmVGdW5jdGlvbi11cHBlclZhbHVlIiBuYW1lPSIiIHZhbHVlPSIxIi8+DQorICAgICAgPC9vd25lZEVuZD4NCisgICAgPC9wYWNrYWdlZEVsZW1lbnQ+DQorICAgIDxwYWNrYWdlZEVsZW1lbnQgeG1pOnR5cGU9InVtbDpFeHRlbnNpb24iIHhtaTppZD0iU3lzTUxOb25Ob3JtYXRpdmVFeHRlbnNpb25zLVBhcmFtZXRyaWMtRV9leHRlbnNpb25fb2JqZWN0aXZlRnVuY3Rpb25fYmFzZV9DbGFzcyIgbmFtZT0iRV9leHRlbnNpb25fb2JqZWN0aXZlRnVuY3Rpb25fYmFzZV9DbGFzcyIgbWVtYmVyRW5kPSJTeXNNTE5vbk5vcm1hdGl2ZUV4dGVuc2lvbnMtUGFyYW1ldHJpYy1FX2V4dGVuc2lvbl9vYmplY3RpdmVGdW5jdGlvbl9iYXNlX0NsYXNzLWV4dGVuc2lvbl8gU3lzTUxOb25Ob3JtYXRpdmVFeHRlbnNpb25zLVBhcmFtZXRyaWMtb2JqZWN0aXZlRnVuY3Rpb24tYmFzZV9DbGFzcyIgbmF2aWdhYmxlT3duZWRFbmQ9IlN5c01MTm9uTm9ybWF0aXZlRXh0ZW5zaW9ucy1QYXJhbWV0cmljLUVfZXh0ZW5zaW9uX29iamVjdGl2ZUZ1bmN0aW9uX2Jhc2VfQ2xhc3MtZXh0ZW5zaW9uXyI+DQorICAgICAgPG93bmVkRW5kIHhtaTp0eXBlPSJ1bWw6RXh0ZW5zaW9uRW5kIiB4bWk6aWQ9IlN5c01MTm9uTm9ybWF0aXZlRXh0ZW5zaW9ucy1QYXJhbWV0cmljLUVfZXh0ZW5zaW9uX29iamVjdGl2ZUZ1bmN0aW9uX2Jhc2VfQ2xhc3MtZXh0ZW5zaW9uXyIgbmFtZT0iZXh0ZW5zaW9uXyIgdmlzaWJpbGl0eT0icHVibGljIiB0eXBlPSJTeXNNTE5vbk5vcm1hdGl2ZUV4dGVuc2lvbnMtUGFyYW1ldHJpYy1vYmplY3RpdmVGdW5jdGlvbiIgYWdncmVnYXRpb249ImNvbXBvc2l0ZSIgYXNzb2NpYXRpb249IlN5c01MTm9uTm9ybWF0aXZlRXh0ZW5zaW9ucy1QYXJhbWV0cmljLUVfZXh0ZW5zaW9uX29iamVjdGl2ZUZ1bmN0aW9uX2Jhc2VfQ2xhc3MiPg0KKyAgICAgICAgPGxvd2VyVmFsdWUgeG1pOnR5cGU9InVtbDpMaXRlcmFsSW50ZWdlciIgeG1pOmlkPSJTeXNNTE5vbk5vcm1hdGl2ZUV4dGVuc2lvbnMtUGFyYW1ldHJpYy1FX2V4dGVuc2lvbl9vYmplY3RpdmVGdW5jdGlvbl9iYXNlX0NsYXNzLWV4dGVuc2lvbl8tbG93ZXJWYWx1ZSIgbmFtZT0iIi8+DQorICAgICAgICA8dXBwZXJWYWx1ZSB4bWk6dHlwZT0idW1sOkxpdGVyYWxVbmxpbWl0ZWROYXR1cmFsIiB4bWk6aWQ9IlN5c01MTm9uTm9ybWF0aXZlRXh0ZW5zaW9ucy1QYXJhbWV0cmljLUVfZXh0ZW5zaW9uX29iamVjdGl2ZUZ1bmN0aW9uX2Jhc2VfQ2xhc3MtZXh0ZW5zaW9uXy11cHBlclZhbHVlIiBuYW1lPSIiIHZhbHVlPSIxIi8+DQorICAgICAgPC9vd25lZEVuZD4NCisgICAgPC9wYWNrYWdlZEVsZW1lbnQ+DQorICAgIDxwYWNrYWdlZEVsZW1lbnQgeG1pOnR5cGU9InVtbDpTdGVyZW90eXBlIiB4bWk6aWQ9IlN5c01MTm9uTm9ybWF0aXZlRXh0ZW5zaW9ucy1QYXJhbWV0cmljLW1vZSIgbmFtZT0ibW9lIj4NCisgICAgICA8b3duZWRDb21tZW50IHhtaTppZD0iU3lzTUxOb25Ob3JtYXRpdmVFeHRlbnNpb25zLVBhcmFtZXRyaWMtbW9lLW93bmVkQ29tbWVudCIgYW5ub3RhdGVkRWxlbWVudD0iU3lzTUxOb25Ob3JtYXRpdmVFeHRlbnNpb25zLVBhcmFtZXRyaWMtbW9lIj4NCisgICAgICAgIDxib2R5PkEgbWVhc3VyZSBvZiBlZmZlY3RpdmVuZXNzIChtb2UpIHJlcHJlc2VudHMgYSBwYXJhbWV0ZXIgd2hvc2UgdmFsdWUgaXMgY3JpdGljYWwgZm9yIGFjaGlldmluZyB0aGUgZGVzaXJlZCBtaXNzaW9uIGNvc3QgZWZmZWN0aXZlbmVzcy48L2JvZHk+DQorICAgICAgPC9vd25lZENvbW1lbnQ+DQorICAgICAgPG93bmVkQXR0cmlidXRlIHhtaTppZD0iU3lzTUxOb25Ob3JtYXRpdmVFeHRlbnNpb25zLVBhcmFtZXRyaWMtbW9lLWJhc2VfUHJvcGVydHkiIG5hbWU9ImJhc2VfUHJvcGVydHkiIHZpc2liaWxpdHk9InB1YmxpYyIgYXNzb2NpYXRpb249IlN5c01MTm9uTm9ybWF0aXZlRXh0ZW5zaW9ucy1QYXJhbWV0cmljLUVfZXh0ZW5zaW9uX21vZV9iYXNlX1Byb3BlcnR5Ij4NCisgICAgICAgIDx0eXBlIHhtaTp0eXBlPSJ1bWw6Q2xhc3MiIGhyZWY9InBhdGhtYXA6Ly9VTUxfTUVUQU1PREVMUy9VTUwubWV0YW1vZGVsLnVtbCNQcm9wZXJ0eSIvPg0KKyAgICAgIDwvb3duZWRBdHRyaWJ1dGU+DQorICAgIDwvcGFja2FnZWRFbGVtZW50Pg0KKyAgICA8cGFja2FnZWRFbGVtZW50IHhtaTp0eXBlPSJ1bWw6RXh0ZW5zaW9uIiB4bWk6aWQ9IlN5c01MTm9uTm9ybWF0aXZlRXh0ZW5zaW9ucy1QYXJhbWV0cmljLUVfZXh0ZW5zaW9uX21vZV9iYXNlX1Byb3BlcnR5IiBuYW1lPSJFX2V4dGVuc2lvbl9tb2VfYmFzZV9Qcm9wZXJ0eSIgbWVtYmVyRW5kPSJTeXNNTE5vbk5vcm1hdGl2ZUV4dGVuc2lvbnMtUGFyYW1ldHJpYy1FX2V4dGVuc2lvbl9tb2VfYmFzZV9Qcm9wZXJ0eS1leHRlbnNpb25fIFN5c01MTm9uTm9ybWF0aXZlRXh0ZW5zaW9ucy1QYXJhbWV0cmljLW1vZS1iYXNlX1Byb3BlcnR5IiBuYXZpZ2FibGVPd25lZEVuZD0iU3lzTUxOb25Ob3JtYXRpdmVFeHRlbnNpb25zLVBhcmFtZXRyaWMtRV9leHRlbnNpb25fbW9lX2Jhc2VfUHJvcGVydHktZXh0ZW5zaW9uXyI+DQorICAgICAgPG93bmVkRW5kIHhtaTp0eXBlPSJ1bWw6RXh0ZW5zaW9uRW5kIiB4bWk6aWQ9IlN5c01MTm9uTm9ybWF0aXZlRXh0ZW5zaW9ucy1QYXJhbWV0cmljLUVfZXh0ZW5zaW9uX21vZV9iYXNlX1Byb3BlcnR5LWV4dGVuc2lvbl8iIG5hbWU9ImV4dGVuc2lvbl8iIHZpc2liaWxpdHk9InB1YmxpYyIgdHlwZT0iU3lzTUxOb25Ob3JtYXRpdmVFeHRlbnNpb25zLVBhcmFtZXRyaWMtbW9lIiBhZ2dyZWdhdGlvbj0iY29tcG9zaXRlIiBhc3NvY2lhdGlvbj0iU3lzTUxOb25Ob3JtYXRpdmVFeHRlbnNpb25zLVBhcmFtZXRyaWMtRV9leHRlbnNpb25fbW9lX2Jhc2VfUHJvcGVydHkiPg0KKyAgICAgICAgPGxvd2VyVmFsdWUgeG1pOnR5cGU9InVtbDpMaXRlcmFsSW50ZWdlciIgeG1pOmlkPSJTeXNNTE5vbk5vcm1hdGl2ZUV4dGVuc2lvbnMtUGFyYW1ldHJpYy1FX2V4dGVuc2lvbl9tb2VfYmFzZV9Qcm9wZXJ0eS1leHRlbnNpb25fLWxvd2VyVmFsdWUiIG5hbWU9IiIvPg0KKyAgICAgICAgPHVwcGVyVmFsdWUgeG1pOnR5cGU9InVtbDpMaXRlcmFsVW5saW1pdGVkTmF0dXJhbCIgeG1pOmlkPSJTeXNNTE5vbk5vcm1hdGl2ZUV4dGVuc2lvbnMtUGFyYW1ldHJpYy1FX2V4dGVuc2lvbl9tb2VfYmFzZV9Qcm9wZXJ0eS1leHRlbnNpb25fLXVwcGVyVmFsdWUiIG5hbWU9IiIgdmFsdWU9IjEiLz4NCisgICAgICA8L293bmVkRW5kPg0KKyAgICA8L3BhY2thZ2VkRWxlbWVudD4NCisgICAgPHBhY2thZ2VkRWxlbWVudCB4bWk6dHlwZT0idW1sOlN0ZXJlb3R5cGUiIHhtaTppZD0iU3lzTUxOb25Ob3JtYXRpdmVFeHRlbnNpb25zLVBhcmFtZXRyaWMtb2JqZWN0aXZlRnVuY3Rpb24iIG5hbWU9Im9iamVjdGl2ZUZ1bmN0aW9uIj4NCisgICAgICA8b3duZWRDb21tZW50IHhtaTppZD0iU3lzTUxOb25Ob3JtYXRpdmVFeHRlbnNpb25zLVBhcmFtZXRyaWMtb2JqZWN0aXZlRnVuY3Rpb24tb3duZWRDb21tZW50IiBhbm5vdGF0ZWRFbGVtZW50PSJTeXNNTE5vbk5vcm1hdGl2ZUV4dGVuc2lvbnMtUGFyYW1ldHJpYy1vYmplY3RpdmVGdW5jdGlvbiI+DQorICAgICAgICA8Ym9keT5BbiBvYmplY3RpdmUgZnVuY3Rpb24gKGFrYSBvcHRpbWl6YXRpb24gb3IgY29zdCBmdW5jdGlvbikgaXMgdXNlZCB0byBkZXRlcm1pbmUgdGhlIG92ZXJhbGwgdmFsdWUgb2YgYW4gYWx0ZXJuYXRpdmUgaW4gdGVybXMgb2Ygd2VpZ2h0ZWQgY3JpdGVyaWEgYW5kL29yIG1vZeKAmXMuPC9ib2R5Pg0KKyAgICAgIDwvb3duZWRDb21tZW50Pg0KKyAgICAgIDxvd25lZEF0dHJpYnV0ZSB4bWk6aWQ9IlN5c01MTm9uTm9ybWF0aXZlRXh0ZW5zaW9ucy1QYXJhbWV0cmljLW9iamVjdGl2ZUZ1bmN0aW9uLWJhc2VfQ2xhc3MiIG5hbWU9ImJhc2VfQ2xhc3MiIHZpc2liaWxpdHk9InB1YmxpYyIgYXNzb2NpYXRpb249IlN5c01MTm9uTm9ybWF0aXZlRXh0ZW5zaW9ucy1QYXJhbWV0cmljLUVfZXh0ZW5zaW9uX29iamVjdGl2ZUZ1bmN0aW9uX2Jhc2VfQ2xhc3MiPg0KKyAgICAgICAgPHR5cGUgeG1pOnR5cGU9InVtbDpDbGFzcyIgaHJlZj0icGF0aG1hcDovL1VNTF9NRVRBTU9ERUxTL1VNTC5tZXRhbW9kZWwudW1sI0NsYXNzIi8+DQorICAgICAgPC9vd25lZEF0dHJpYnV0ZT4NCisgICAgICA8b3duZWRBdHRyaWJ1dGUgeG1pOmlkPSJTeXNNTE5vbk5vcm1hdGl2ZUV4dGVuc2lvbnMtUGFyYW1ldHJpYy1vYmplY3RpdmVGdW5jdGlvbi1iYXNlX1Byb3BlcnR5IiBuYW1lPSJiYXNlX1Byb3BlcnR5IiB2aXNpYmlsaXR5PSJwdWJsaWMiIGFzc29jaWF0aW9uPSJTeXNNTE5vbk5vcm1hdGl2ZUV4dGVuc2lvbnMtUGFyYW1ldHJpYy1FX2V4dGVuc2lvbl9vYmplY3RpdmVGdW5jdGlvbl9iYXNlX1Byb3BlcnR5Ij4NCisgICAgICAgIDx0eXBlIHhtaTp0eXBlPSJ1bWw6Q2xhc3MiIGhyZWY9InBhdGhtYXA6Ly9VTUxfTUVUQU1PREVMUy9VTUwubWV0YW1vZGVsLnVtbCNQcm9wZXJ0eSIvPg0KKyAgICAgIDwvb3duZWRBdHRyaWJ1dGU+DQorICAgIDwvcGFja2FnZWRFbGVtZW50Pg0KKyAgPC9wYWNrYWdlZEVsZW1lbnQ+DQorICA8cGFja2FnZWRFbGVtZW50IHhtaTp0eXBlPSJ1bWw6UGFja2FnZSIgeG1pOmlkPSJTeXNNTE5vbk5vcm1hdGl2ZUV4dGVuc2lvbnMtQWN0aXZpdHkiIG5hbWU9IkFjdGl2aXR5IiBVUkk9IiI+DQorICAgIDxwYWNrYWdlZEVsZW1lbnQgeG1pOnR5cGU9InVtbDpFeHRlbnNpb24iIHhtaTppZD0iU3lzTUxOb25Ob3JtYXRpdmVFeHRlbnNpb25zLUFjdGl2aXR5LUVfZXh0ZW5zaW9uX25vblN0cmVhbWluZ19iYXNlX0FjdGl2aXR5IiBuYW1lPSJFX2V4dGVuc2lvbl9ub25TdHJlYW1pbmdfYmFzZV9BY3Rpdml0eSIgbWVtYmVyRW5kPSJTeXNNTE5vbk5vcm1hdGl2ZUV4dGVuc2lvbnMtQWN0aXZpdHktRV9leHRlbnNpb25fbm9uU3RyZWFtaW5nX2Jhc2VfQWN0aXZpdHktZXh0ZW5zaW9uX1N0cmVhbWluZyBTeXNNTE5vbk5vcm1hdGl2ZUV4dGVuc2lvbnMtQWN0aXZpdHktbm9uU3RyZWFtaW5nLWJhc2VfQWN0aXZpdHkiIG5hdmlnYWJsZU93bmVkRW5kPSJTeXNNTE5vbk5vcm1hdGl2ZUV4dGVuc2lvbnMtQWN0aXZpdHktRV9leHRlbnNpb25fbm9uU3RyZWFtaW5nX2Jhc2VfQWN0aXZpdHktZXh0ZW5zaW9uX1N0cmVhbWluZyI+DQorICAgICAgPG93bmVkRW5kIHhtaTp0eXBlPSJ1bWw6RXh0ZW5zaW9uRW5kIiB4bWk6aWQ9IlN5c01MTm9uTm9ybWF0aXZlRXh0ZW5zaW9ucy1BY3Rpdml0eS1FX2V4dGVuc2lvbl9ub25TdHJlYW1pbmdfYmFzZV9BY3Rpdml0eS1leHRlbnNpb25fU3RyZWFtaW5nIiBuYW1lPSJleHRlbnNpb25fU3RyZWFtaW5nIiB2aXNpYmlsaXR5PSJwdWJsaWMiIHR5cGU9IlN5c01MTm9uTm9ybWF0aXZlRXh0ZW5zaW9ucy1BY3Rpdml0eS1ub25TdHJlYW1pbmciIGFnZ3JlZ2F0aW9uPSJjb21wb3NpdGUiIGFzc29jaWF0aW9uPSJTeXNNTE5vbk5vcm1hdGl2ZUV4dGVuc2lvbnMtQWN0aXZpdHktRV9leHRlbnNpb25fbm9uU3RyZWFtaW5nX2Jhc2VfQWN0aXZpdHkiPg0KKyAgICAgICAgPGxvd2VyVmFsdWUgeG1pOnR5cGU9InVtbDpMaXRlcmFsSW50ZWdlciIgeG1pOmlkPSJTeXNNTE5vbk5vcm1hdGl2ZUV4dGVuc2lvbnMtQWN0aXZpdHktRV9leHRlbnNpb25fbm9uU3RyZWFtaW5nX2Jhc2VfQWN0aXZpdHktZXh0ZW5zaW9uX1N0cmVhbWluZy1sb3dlclZhbHVlIiBuYW1lPSIiLz4NCisgICAgICAgIDx1cHBlclZhbHVlIHhtaTp0eXBlPSJ1bWw6TGl0ZXJhbFVubGltaXRlZE5hdHVyYWwiIHhtaTppZD0iU3lzTUxOb25Ob3JtYXRpdmVFeHRlbnNpb25zLUFjdGl2aXR5LUVfZXh0ZW5zaW9uX25vblN0cmVhbWluZ19iYXNlX0FjdGl2aXR5LWV4dGVuc2lvbl9TdHJlYW1pbmctdXBwZXJWYWx1ZSIgbmFtZT0iIiB2YWx1ZT0iMSIvPg0KKyAgICAgIDwvb3duZWRFbmQ+DQorICAgIDwvcGFja2FnZWRFbGVtZW50Pg0KKyAgICA8cGFja2FnZWRFbGVtZW50IHhtaTp0eXBlPSJ1bWw6U3RlcmVvdHlwZSIgeG1pOmlkPSJTeXNNTE5vbk5vcm1hdGl2ZUV4dGVuc2lvbnMtQWN0aXZpdHktbm9uU3RyZWFtaW5nIiBuYW1lPSJub25TdHJlYW1pbmciPg0KKyAgICAgIDxvd25lZENvbW1lbnQgeG1pOmlkPSJTeXNNTE5vbk5vcm1hdGl2ZUV4dGVuc2lvbnMtQWN0aXZpdHktbm9uU3RyZWFtaW5nLW93bmVkQ29tbWVudCIgYW5ub3RhdGVkRWxlbWVudD0iU3lzTUxOb25Ob3JtYXRpdmVFeHRlbnNpb25zLUFjdGl2aXR5LW5vblN0cmVhbWluZyI+DQorICAgICAgICA8Ym9keT5Vc2VkIGZvciBhY3Rpdml0aWVzIHRoYXQgYWNjZXB0IGlucHV0cyBvbmx5IHdoZW4gdGhleSBzdGFydCwgYW5kIHByb3ZpZGUgb3V0cHV0cyBvbmx5IHdoZW4gdGhleSBmaW5pc2guPC9ib2R5Pg0KKyAgICAgIDwvb3duZWRDb21tZW50Pg0KKyAgICAgIDxvd25lZEF0dHJpYnV0ZSB4bWk6aWQ9IlN5c01MTm9uTm9ybWF0aXZlRXh0ZW5zaW9ucy1BY3Rpdml0eS1ub25TdHJlYW1pbmctYmFzZV9BY3Rpdml0eSIgbmFtZT0iYmFzZV9BY3Rpdml0eSIgdmlzaWJpbGl0eT0icHVibGljIiBhc3NvY2lhdGlvbj0iU3lzTUxOb25Ob3JtYXRpdmVFeHRlbnNpb25zLUFjdGl2aXR5LUVfZXh0ZW5zaW9uX25vblN0cmVhbWluZ19iYXNlX0FjdGl2aXR5Ij4NCisgICAgICAgIDx0eXBlIHhtaTp0eXBlPSJ1bWw6Q2xhc3MiIGhyZWY9InBhdGhtYXA6Ly9VTUxfTUVUQU1PREVMUy9VTUwubWV0YW1vZGVsLnVtbCNBY3Rpdml0eSIvPg0KKyAgICAgIDwvb3duZWRBdHRyaWJ1dGU+DQorICAgIDwvcGFja2FnZWRFbGVtZW50Pg0KKyAgICA8cGFja2FnZWRFbGVtZW50IHhtaTp0eXBlPSJ1bWw6RXh0ZW5zaW9uIiB4bWk6aWQ9IlN5c01MTm9uTm9ybWF0aXZlRXh0ZW5zaW9ucy1BY3Rpdml0eS1FX2V4dGVuc2lvbl9TeXN0ZW1fcHJvY2Vzc19iYXNlX0FjdGl2aXR5IiBuYW1lPSJFX2V4dGVuc2lvbl9TeXN0ZW1fcHJvY2Vzc19iYXNlX0FjdGl2aXR5IiBtZW1iZXJFbmQ9IlN5c01MTm9uTm9ybWF0aXZlRXh0ZW5zaW9ucy1BY3Rpdml0eS1FX2V4dGVuc2lvbl9TeXN0ZW1fcHJvY2Vzc19iYXNlX0FjdGl2aXR5LWV4dGVuc2lvbl8gU3lzTUxOb25Ob3JtYXRpdmVFeHRlbnNpb25zLUFjdGl2aXR5LVN5c3RlbV9wcm9jZXNzLWJhc2VfQWN0aXZpdHkiIG5hdmlnYWJsZU93bmVkRW5kPSJTeXNNTE5vbk5vcm1hdGl2ZUV4dGVuc2lvbnMtQWN0aXZpdHktRV9leHRlbnNpb25fU3lzdGVtX3Byb2Nlc3NfYmFzZV9BY3Rpdml0eS1leHRlbnNpb25fIj4NCisgICAgICA8b3duZWRFbmQgeG1pOnR5cGU9InVtbDpFeHRlbnNpb25FbmQiIHhtaTppZD0iU3lzTUxOb25Ob3JtYXRpdmVFeHRlbnNpb25zLUFjdGl2aXR5LUVfZXh0ZW5zaW9uX1N5c3RlbV9wcm9jZXNzX2Jhc2VfQWN0aXZpdHktZXh0ZW5zaW9uXyIgbmFtZT0iZXh0ZW5zaW9uXyIgdmlzaWJpbGl0eT0icHVibGljIiB0eXBlPSJTeXNNTE5vbk5vcm1hdGl2ZUV4dGVuc2lvbnMtQWN0aXZpdHktU3lzdGVtX3Byb2Nlc3MiIGFnZ3JlZ2F0aW9uPSJjb21wb3NpdGUiIGFzc29jaWF0aW9uPSJTeXNNTE5vbk5vcm1hdGl2ZUV4dGVuc2lvbnMtQWN0aXZpdHktRV9leHRlbnNpb25fU3lzdGVtX3Byb2Nlc3NfYmFzZV9BY3Rpdml0eSI+DQorICAgICAgICA8bG93ZXJWYWx1ZSB4bWk6dHlwZT0idW1sOkxpdGVyYWxJbnRlZ2VyIiB4bWk6aWQ9IlN5c01MTm9uTm9ybWF0aXZlRXh0ZW5zaW9ucy1BY3Rpdml0eS1FX2V4dGVuc2lvbl9TeXN0ZW1fcHJvY2Vzc19iYXNlX0FjdGl2aXR5LWV4dGVuc2lvbl8tbG93ZXJWYWx1ZSIgbmFtZT0iIi8+DQorICAgICAgICA8dXBwZXJWYWx1ZSB4bWk6dHlwZT0idW1sOkxpdGVyYWxVbmxpbWl0ZWROYXR1cmFsIiB4bWk6aWQ9IlN5c01MTm9uTm9ybWF0aXZlRXh0ZW5zaW9ucy1BY3Rpdml0eS1FX2V4dGVuc2lvbl9TeXN0ZW1fcHJvY2Vzc19iYXNlX0FjdGl2aXR5LWV4dGVuc2lvbl8tdXBwZXJWYWx1ZSIgbmFtZT0iIiB2YWx1ZT0iMSIvPg0KKyAgICAgIDwvb3duZWRFbmQ+DQorICAgIDwvcGFja2FnZWRFbGVtZW50Pg0KKyAgICA8cGFja2FnZWRFbGVtZW50IHhtaTp0eXBlPSJ1bWw6U3RlcmVvdHlwZSIgeG1pOmlkPSJTeXNNTE5vbk5vcm1hdGl2ZUV4dGVuc2lvbnMtQWN0aXZpdHktc3RyZWFtaW5nIiBuYW1lPSJzdHJlYW1pbmciPg0KKyAgICAgIDxvd25lZENvbW1lbnQgeG1pOmlkPSJTeXNNTE5vbk5vcm1hdGl2ZUV4dGVuc2lvbnMtQWN0aXZpdHktc3RyZWFtaW5nLW93bmVkQ29tbWVudCIgYW5ub3RhdGVkRWxlbWVudD0iU3lzTUxOb25Ob3JtYXRpdmVFeHRlbnNpb25zLUFjdGl2aXR5LXN0cmVhbWluZyI+DQorICAgICAgICA8Ym9keT5Vc2VkIGZvciBhY3Rpdml0aWVzIHRoYXQgY2FuIGFjY2VwdCBpbnB1dHMgb3IgcHJvdmlkZSBvdXRwdXRzIGFmdGVyIHRoZXkgc3RhcnQgYW5kIGJlZm9yZSB0aGV5IGZpbmlzaC48L2JvZHk+DQorICAgICAgPC9vd25lZENvbW1lbnQ+DQorICAgICAgPG93bmVkQXR0cmlidXRlIHhtaTppZD0iU3lzTUxOb25Ob3JtYXRpdmVFeHRlbnNpb25zLUFjdGl2aXR5LXN0cmVhbWluZy1iYXNlX0FjdGl2aXR5IiBuYW1lPSJiYXNlX0FjdGl2aXR5IiB2aXNpYmlsaXR5PSJwdWJsaWMiIGFzc29jaWF0aW9uPSJTeXNNTE5vbk5vcm1hdGl2ZUV4dGVuc2lvbnMtQWN0aXZpdHktRV9leHRlbnNpb25fc3RyZWFtaW5nX2Jhc2VfQWN0aXZpdHkiPg0KKyAgICAgICAgPHR5cGUgeG1pOnR5cGU9InVtbDpDbGFzcyIgaHJlZj0icGF0aG1hcDovL1VNTF9NRVRBTU9ERUxTL1VNTC5tZXRhbW9kZWwudW1sI0FjdGl2aXR5Ii8+DQorICAgICAgPC9vd25lZEF0dHJpYnV0ZT4NCisgICAgPC9wYWNrYWdlZEVsZW1lbnQ+DQorICAgIDxwYWNrYWdlZEVsZW1lbnQgeG1pOnR5cGU9InVtbDpFeHRlbnNpb24iIHhtaTppZD0iU3lzTUxOb25Ob3JtYXRpdmVFeHRlbnNpb25zLUFjdGl2aXR5LUVfZXh0ZW5zaW9uX2VmZmJkX2Jhc2VfQWN0aXZpdHkiIG5hbWU9IkVfZXh0ZW5zaW9uX2VmZmJkX2Jhc2VfQWN0aXZpdHkiIG1lbWJlckVuZD0iU3lzTUxOb25Ob3JtYXRpdmVFeHRlbnNpb25zLUFjdGl2aXR5LUVfZXh0ZW5zaW9uX2VmZmJkX2Jhc2VfQWN0aXZpdHktZXh0ZW5zaW9uXyBTeXNNTE5vbk5vcm1hdGl2ZUV4dGVuc2lvbnMtQWN0aXZpdHktZWZmYmQtYmFzZV9BY3Rpdml0eSIgbmF2aWdhYmxlT3duZWRFbmQ9IlN5c01MTm9uTm9ybWF0aXZlRXh0ZW5zaW9ucy1BY3Rpdml0eS1FX2V4dGVuc2lvbl9lZmZiZF9iYXNlX0FjdGl2aXR5LWV4dGVuc2lvbl8iPg0KKyAgICAgIDxvd25lZEVuZCB4bWk6dHlwZT0idW1sOkV4dGVuc2lvbkVuZCIgeG1pOmlkPSJTeXNNTE5vbk5vcm1hdGl2ZUV4dGVuc2lvbnMtQWN0aXZpdHktRV9leHRlbnNpb25fZWZmYmRfYmFzZV9BY3Rpdml0eS1leHRlbnNpb25fIiBuYW1lPSJleHRlbnNpb25fIiB2aXNpYmlsaXR5PSJwdWJsaWMiIHR5cGU9IlN5c01MTm9uTm9ybWF0aXZlRXh0ZW5zaW9ucy1BY3Rpdml0eS1lZmZiZCIgYWdncmVnYXRpb249ImNvbXBvc2l0ZSIgYXNzb2NpYXRpb249IlN5c01MTm9uTm9ybWF0aXZlRXh0ZW5zaW9ucy1BY3Rpdml0eS1FX2V4dGVuc2lvbl9lZmZiZF9iYXNlX0FjdGl2aXR5Ij4NCisgICAgICAgIDxsb3dlclZhbHVlIHhtaTp0eXBlPSJ1bWw6TGl0ZXJhbEludGVnZXIiIHhtaTppZD0iU3lzTUxOb25Ob3JtYXRpdmVFeHRlbnNpb25zLUFjdGl2aXR5LUVfZXh0ZW5zaW9uX2VmZmJkX2Jhc2VfQWN0aXZpdHktZXh0ZW5zaW9uXy1sb3dlclZhbHVlIiBuYW1lPSIiLz4NCisgICAgICAgIDx1cHBlclZhbHVlIHhtaTp0eXBlPSJ1bWw6TGl0ZXJhbFVubGltaXRlZE5hdHVyYWwiIHhtaTppZD0iU3lzTUxOb25Ob3JtYXRpdmVFeHRlbnNpb25zLUFjdGl2aXR5LUVfZXh0ZW5zaW9uX2VmZmJkX2Jhc2VfQWN0aXZpdHktZXh0ZW5zaW9uXy11cHBlclZhbHVlIiBuYW1lPSIiIHZhbHVlPSIxIi8+DQorICAgICAgPC9vd25lZEVuZD4NCisgICAgPC9wYWNrYWdlZEVsZW1lbnQ+DQorICAgIDxwYWNrYWdlZEVsZW1lbnQgeG1pOnR5cGU9InVtbDpFeHRlbnNpb24iIHhtaTppZD0iU3lzTUxOb25Ob3JtYXRpdmVFeHRlbnNpb25zLUFjdGl2aXR5LUVfZXh0ZW5zaW9uX3N0cmVhbWluZ19iYXNlX0FjdGl2aXR5IiBuYW1lPSJFX2V4dGVuc2lvbl9zdHJlYW1pbmdfYmFzZV9BY3Rpdml0eSIgbWVtYmVyRW5kPSJTeXNNTE5vbk5vcm1hdGl2ZUV4dGVuc2lvbnMtQWN0aXZpdHktRV9leHRlbnNpb25fc3RyZWFtaW5nX2Jhc2VfQWN0aXZpdHktZXh0ZW5zaW9uXyBTeXNNTE5vbk5vcm1hdGl2ZUV4dGVuc2lvbnMtQWN0aXZpdHktc3RyZWFtaW5nLWJhc2VfQWN0aXZpdHkiIG5hdmlnYWJsZU93bmVkRW5kPSJTeXNNTE5vbk5vcm1hdGl2ZUV4dGVuc2lvbnMtQWN0aXZpdHktRV9leHRlbnNpb25fc3RyZWFtaW5nX2Jhc2VfQWN0aXZpdHktZXh0ZW5zaW9uXyI+DQorICAgICAgPG93bmVkRW5kIHhtaTp0eXBlPSJ1bWw6RXh0ZW5zaW9uRW5kIiB4bWk6aWQ9IlN5c01MTm9uTm9ybWF0aXZlRXh0ZW5zaW9ucy1BY3Rpdml0eS1FX2V4dGVuc2lvbl9zdHJlYW1pbmdfYmFzZV9BY3Rpdml0eS1leHRlbnNpb25fIiBuYW1lPSJleHRlbnNpb25fIiB2aXNpYmlsaXR5PSJwdWJsaWMiIHR5cGU9IlN5c01MTm9uTm9ybWF0aXZlRXh0ZW5zaW9ucy1BY3Rpdml0eS1zdHJlYW1pbmciIGFnZ3JlZ2F0aW9uPSJjb21wb3NpdGUiIGFzc29jaWF0aW9uPSJTeXNNTE5vbk5vcm1hdGl2ZUV4dGVuc2lvbnMtQWN0aXZpdHktRV9leHRlbnNpb25fc3RyZWFtaW5nX2Jhc2VfQWN0aXZpdHkiPg0KKyAgICAgICAgPGxvd2VyVmFsdWUgeG1pOnR5cGU9InVtbDpMaXRlcmFsSW50ZWdlciIgeG1pOmlkPSJTeXNNTE5vbk5vcm1hdGl2ZUV4dGVuc2lvbnMtQWN0aXZpdHktRV9leHRlbnNpb25fc3RyZWFtaW5nX2Jhc2VfQWN0aXZpdHktZXh0ZW5zaW9uXy1sb3dlclZhbHVlIiBuYW1lPSIiLz4NCisgICAgICAgIDx1cHBlclZhbHVlIHhtaTp0eXBlPSJ1bWw6TGl0ZXJhbFVubGltaXRlZE5hdHVyYWwiIHhtaTppZD0iU3lzTUxOb25Ob3JtYXRpdmVFeHRlbnNpb25zLUFjdGl2aXR5LUVfZXh0ZW5zaW9uX3N0cmVhbWluZ19iYXNlX0FjdGl2aXR5LWV4dGVuc2lvbl8tdXBwZXJWYWx1ZSIgbmFtZT0iIiB2YWx1ZT0iMSIvPg0KKyAgICAgIDwvb3duZWRFbmQ+DQorICAgIDwvcGFja2FnZWRFbGVtZW50Pg0KKyAgICA8cGFja2FnZWRFbGVtZW50IHhtaTp0eXBlPSJ1bWw6U3RlcmVvdHlwZSIgeG1pOmlkPSJTeXNNTE5vbk5vcm1hdGl2ZUV4dGVuc2lvbnMtQWN0aXZpdHktRXNzZW50aWFsIiBuYW1lPSJFc3NlbnRpYWwiPg0KKyAgICAgIDxvd25lZEF0dHJpYnV0ZSB4bWk6aWQ9IlN5c01MTm9uTm9ybWF0aXZlRXh0ZW5zaW9ucy1BY3Rpdml0eS1Fc3NlbnRpYWwtYmFzZV9BY3Rpdml0eSIgbmFtZT0iYmFzZV9BY3Rpdml0eSIgdmlzaWJpbGl0eT0icHVibGljIiBhc3NvY2lhdGlvbj0iU3lzTUxOb25Ob3JtYXRpdmVFeHRlbnNpb25zLUFjdGl2aXR5LUVfZXh0ZW5zaW9uX0Vzc2VudGlhbF9iYXNlX0FjdGl2aXR5Ij4NCisgICAgICAgIDx0eXBlIHhtaTp0eXBlPSJ1bWw6Q2xhc3MiIGhyZWY9InBhdGhtYXA6Ly9VTUxfTUVUQU1PREVMUy9VTUwubWV0YW1vZGVsLnVtbCNBY3Rpdml0eSIvPg0KKyAgICAgIDwvb3duZWRBdHRyaWJ1dGU+DQorICAgIDwvcGFja2FnZWRFbGVtZW50Pg0KKyAgICA8cGFja2FnZWRFbGVtZW50IHhtaTp0eXBlPSJ1bWw6U3RlcmVvdHlwZSIgeG1pOmlkPSJTeXNNTE5vbk5vcm1hdGl2ZUV4dGVuc2lvbnMtQWN0aXZpdHktZWZmYmQiIG5hbWU9ImVmZmJkIj4NCisgICAgICA8b3duZWRDb21tZW50IHhtaTppZD0iU3lzTUxOb25Ob3JtYXRpdmVFeHRlbnNpb25zLUFjdGl2aXR5LWVmZmJkLW93bmVkQ29tbWVudCIgYW5ub3RhdGVkRWxlbWVudD0iU3lzTUxOb25Ob3JtYXRpdmVFeHRlbnNpb25zLUFjdGl2aXR5LWVmZmJkIj4NCisgICAgICAgIDxib2R5PkVuaGFuY2VkIEZ1bmN0aW9uYWwgRmxvdyBCbG9jayBEaWFncmFtcyAoRUZGQkQpIGFyZSBhIHdpZGVseS11c2VkIHN5c3RlbXMgZW5naW5lZXJpbmcgZGlhZ3JhbSwgYWxzbyBjYWxsZWQgYSBiZWhhdmlvciBkaWFncmFtLiBNb3N0IG9mIGl0cyBmdW5jdGlvbmFsaXR5IGlzIGEgY29uc3RyYWluZWQgdXNlIG9mIFVNTCBhY3Rpdml0aWVzLiBFRkZCRCBzcGVjaWZpZXMgdGhhdCB0aGUgYWN0aXZpdHkgY29uZm9ybXMgdG8gdGhlIGNvbnN0cmFpbnRzIG5lY2Vzc2FyeSBmb3IgRUZGQkQuPC9ib2R5Pg0KKyAgICAgIDwvb3duZWRDb21tZW50Pg0KKyAgICAgIDxvd25lZEF0dHJpYnV0ZSB4bWk6aWQ9IlN5c01MTm9uTm9ybWF0aXZlRXh0ZW5zaW9ucy1BY3Rpdml0eS1lZmZiZC1iYXNlX0FjdGl2aXR5IiBuYW1lPSJiYXNlX0FjdGl2aXR5IiB2aXNpYmlsaXR5PSJwdWJsaWMiIGFzc29jaWF0aW9uPSJTeXNNTE5vbk5vcm1hdGl2ZUV4dGVuc2lvbnMtQWN0aXZpdHktRV9leHRlbnNpb25fZWZmYmRfYmFzZV9BY3Rpdml0eSI+DQorICAgICAgICA8dHlwZSB4bWk6dHlwZT0idW1sOkNsYXNzIiBocmVmPSJwYXRobWFwOi8vVU1MX01FVEFNT0RFTFMvVU1MLm1ldGFtb2RlbC51bWwjQWN0aXZpdHkiLz4NCisgICAgICA8L293bmVkQXR0cmlidXRlPg0KKyAgICA8L3BhY2thZ2VkRWxlbWVudD4NCisgICAgPHBhY2thZ2VkRWxlbWVudCB4bWk6dHlwZT0idW1sOkV4dGVuc2lvbiIgeG1pOmlkPSJTeXNNTE5vbk5vcm1hdGl2ZUV4dGVuc2lvbnMtQWN0aXZpdHktRV9leHRlbnNpb25fRXNzZW50aWFsX2Jhc2VfQWN0aXZpdHkiIG5hbWU9IkVfZXh0ZW5zaW9uX0Vzc2VudGlhbF9iYXNlX0FjdGl2aXR5IiBtZW1iZXJFbmQ9IlN5c01MTm9uTm9ybWF0aXZlRXh0ZW5zaW9ucy1BY3Rpdml0eS1FX2V4dGVuc2lvbl9Fc3NlbnRpYWxfYmFzZV9BY3Rpdml0eS1leHRlbnNpb25fRXNzZW50aWFsIFN5c01MTm9uTm9ybWF0aXZlRXh0ZW5zaW9ucy1BY3Rpdml0eS1Fc3NlbnRpYWwtYmFzZV9BY3Rpdml0eSIgbmF2aWdhYmxlT3duZWRFbmQ9IlN5c01MTm9uTm9ybWF0aXZlRXh0ZW5zaW9ucy1BY3Rpdml0eS1FX2V4dGVuc2lvbl9Fc3NlbnRpYWxfYmFzZV9BY3Rpdml0eS1leHRlbnNpb25fRXNzZW50aWFsIj4NCisgICAgICA8b3duZWRFbmQgeG1pOnR5cGU9InVtbDpFeHRlbnNpb25FbmQiIHhtaTppZD0iU3lzTUxOb25Ob3JtYXRpdmVFeHRlbnNpb25zLUFjdGl2aXR5LUVfZXh0ZW5zaW9uX0Vzc2VudGlhbF9iYXNlX0FjdGl2aXR5LWV4dGVuc2lvbl9Fc3NlbnRpYWwiIG5hbWU9ImV4dGVuc2lvbl9Fc3NlbnRpYWwiIHZpc2liaWxpdHk9InB1YmxpYyIgdHlwZT0iU3lzTUxOb25Ob3JtYXRpdmVFeHRlbnNpb25zLUFjdGl2aXR5LUVzc2VudGlhbCIgYWdncmVnYXRpb249ImNvbXBvc2l0ZSIgYXNzb2NpYXRpb249IlN5c01MTm9uTm9ybWF0aXZlRXh0ZW5zaW9ucy1BY3Rpdml0eS1FX2V4dGVuc2lvbl9Fc3NlbnRpYWxfYmFzZV9BY3Rpdml0eSI+DQorICAgICAgICA8bG93ZXJWYWx1ZSB4bWk6dHlwZT0idW1sOkxpdGVyYWxJbnRlZ2VyIiB4bWk6aWQ9IlN5c01MTm9uTm9ybWF0aXZlRXh0ZW5zaW9ucy1BY3Rpdml0eS1FX2V4dGVuc2lvbl9Fc3NlbnRpYWxfYmFzZV9BY3Rpdml0eS1leHRlbnNpb25fRXNzZW50aWFsLWxvd2VyVmFsdWUiIG5hbWU9IiIvPg0KKyAgICAgICAgPHVwcGVyVmFsdWUgeG1pOnR5cGU9InVtbDpMaXRlcmFsVW5saW1pdGVkTmF0dXJhbCIgeG1pOmlkPSJTeXNNTE5vbk5vcm1hdGl2ZUV4dGVuc2lvbnMtQWN0aXZpdHktRV9leHRlbnNpb25fRXNzZW50aWFsX2Jhc2VfQWN0aXZpdHktZXh0ZW5zaW9uX0Vzc2VudGlhbC11cHBlclZhbHVlIiBuYW1lPSIiIHZhbHVlPSIxIi8+DQorICAgICAgPC9vd25lZEVuZD4NCisgICAgPC9wYWNrYWdlZEVsZW1lbnQ+DQorICAgIDxwYWNrYWdlZEVsZW1lbnQgeG1pOnR5cGU9InVtbDpFeHRlbnNpb24iIHhtaTppZD0iU3lzTUxOb25Ob3JtYXRpdmVFeHRlbnNpb25zLUFjdGl2aXR5LUVfZXh0ZW5zaW9uX1N5c3RlbV9wcm9jZXNzX2Jhc2VfVXNlQ2FzZSIgbmFtZT0iRV9leHRlbnNpb25fU3lzdGVtX3Byb2Nlc3NfYmFzZV9Vc2VDYXNlIiBtZW1iZXJFbmQ9IlN5c01MTm9uTm9ybWF0aXZlRXh0ZW5zaW9ucy1BY3Rpdml0eS1FX2V4dGVuc2lvbl9TeXN0ZW1fcHJvY2Vzc19iYXNlX1VzZUNhc2UtZXh0ZW5zaW9uXyBTeXNNTE5vbk5vcm1hdGl2ZUV4dGVuc2lvbnMtQWN0aXZpdHktU3lzdGVtX3Byb2Nlc3MtYmFzZV9Vc2VDYXNlIiBuYXZpZ2FibGVPd25lZEVuZD0iU3lzTUxOb25Ob3JtYXRpdmVFeHRlbnNpb25zLUFjdGl2aXR5LUVfZXh0ZW5zaW9uX1N5c3RlbV9wcm9jZXNzX2Jhc2VfVXNlQ2FzZS1leHRlbnNpb25fIj4NCisgICAgICA8b3duZWRFbmQgeG1pOnR5cGU9InVtbDpFeHRlbnNpb25FbmQiIHhtaTppZD0iU3lzTUxOb25Ob3JtYXRpdmVFeHRlbnNpb25zLUFjdGl2aXR5LUVfZXh0ZW5zaW9uX1N5c3RlbV9wcm9jZXNzX2Jhc2VfVXNlQ2FzZS1leHRlbnNpb25fIiBuYW1lPSJleHRlbnNpb25fIiB2aXNpYmlsaXR5PSJwdWJsaWMiIHR5cGU9IlN5c01MTm9uTm9ybWF0aXZlRXh0ZW5zaW9ucy1BY3Rpdml0eS1TeXN0ZW1fcHJvY2VzcyIgYWdncmVnYXRpb249ImNvbXBvc2l0ZSIgYXNzb2NpYXRpb249IlN5c01MTm9uTm9ybWF0aXZlRXh0ZW5zaW9ucy1BY3Rpdml0eS1FX2V4dGVuc2lvbl9TeXN0ZW1fcHJvY2Vzc19iYXNlX1VzZUNhc2UiPg0KKyAgICAgICAgPGxvd2VyVmFsdWUgeG1pOnR5cGU9InVtbDpMaXRlcmFsSW50ZWdlciIgeG1pOmlkPSJTeXNNTE5vbk5vcm1hdGl2ZUV4dGVuc2lvbnMtQWN0aXZpdHktRV9leHRlbnNpb25fU3lzdGVtX3Byb2Nlc3NfYmFzZV9Vc2VDYXNlLWV4dGVuc2lvbl8tbG93ZXJWYWx1ZSIgbmFtZT0iIi8+DQorICAgICAgICA8dXBwZXJWYWx1ZSB4bWk6dHlwZT0idW1sOkxpdGVyYWxVbmxpbWl0ZWROYXR1cmFsIiB4bWk6aWQ9IlN5c01MTm9uTm9ybWF0aXZlRXh0ZW5zaW9ucy1BY3Rpdml0eS1FX2V4dGVuc2lvbl9TeXN0ZW1fcHJvY2Vzc19iYXNlX1VzZUNhc2UtZXh0ZW5zaW9uXy11cHBlclZhbHVlIiBuYW1lPSIiIHZhbHVlPSIxIi8+DQorICAgICAgPC9vd25lZEVuZD4NCisgICAgPC9wYWNrYWdlZEVsZW1lbnQ+DQorICAgIDxwYWNrYWdlZEVsZW1lbnQgeG1pOnR5cGU9InVtbDpTdGVyZW90eXBlIiB4bWk6aWQ9IlN5c01MTm9uTm9ybWF0aXZlRXh0ZW5zaW9ucy1BY3Rpdml0eS1TeXN0ZW1fcHJvY2VzcyIgbmFtZT0iU3lzdGVtIHByb2Nlc3MiPg0KKyAgICAgIDxvd25lZEF0dHJpYnV0ZSB4bWk6aWQ9IlN5c01MTm9uTm9ybWF0aXZlRXh0ZW5zaW9ucy1BY3Rpdml0eS1TeXN0ZW1fcHJvY2Vzcy1iYXNlX0FjdGl2aXR5IiBuYW1lPSJiYXNlX0FjdGl2aXR5IiB2aXNpYmlsaXR5PSJwdWJsaWMiIGFzc29jaWF0aW9uPSJTeXNNTE5vbk5vcm1hdGl2ZUV4dGVuc2lvbnMtQWN0aXZpdHktRV9leHRlbnNpb25fU3lzdGVtX3Byb2Nlc3NfYmFzZV9BY3Rpdml0eSI+DQorICAgICAgICA8dHlwZSB4bWk6dHlwZT0idW1sOkNsYXNzIiBocmVmPSJwYXRobWFwOi8vVU1MX01FVEFNT0RFTFMvVU1MLm1ldGFtb2RlbC51bWwjQWN0aXZpdHkiLz4NCisgICAgICA8L293bmVkQXR0cmlidXRlPg0KKyAgICAgIDxvd25lZEF0dHJpYnV0ZSB4bWk6aWQ9IlN5c01MTm9uTm9ybWF0aXZlRXh0ZW5zaW9ucy1BY3Rpdml0eS1TeXN0ZW1fcHJvY2Vzcy1iYXNlX1VzZUNhc2UiIG5hbWU9ImJhc2VfVXNlQ2FzZSIgdmlzaWJpbGl0eT0icHVibGljIiBhc3NvY2lhdGlvbj0iU3lzTUxOb25Ob3JtYXRpdmVFeHRlbnNpb25zLUFjdGl2aXR5LUVfZXh0ZW5zaW9uX1N5c3RlbV9wcm9jZXNzX2Jhc2VfVXNlQ2FzZSI+DQorICAgICAgICA8dHlwZSB4bWk6dHlwZT0idW1sOkNsYXNzIiBocmVmPSJwYXRobWFwOi8vVU1MX01FVEFNT0RFTFMvVU1MLm1ldGFtb2RlbC51bWwjVXNlQ2FzZSIvPg0KKyAgICAgIDwvb3duZWRBdHRyaWJ1dGU+DQorICAgIDwvcGFja2FnZWRFbGVtZW50Pg0KKyAgPC9wYWNrYWdlZEVsZW1lbnQ+DQorPC91bWw6UHJvZmlsZT4NCmRpZmYgLS1naXQgYS9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC9tb2RlbC9zeXNtbC5lY29yZSBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0L21vZGVsL3N5c21sLmVjb3JlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE4MWZiMWIKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC9tb2RlbC9zeXNtbC5lY29yZQpAQCAtMCwwICsxLDc1NyBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4NCis8ZWNvcmU6RVBhY2thZ2UgeG1pOnZlcnNpb249IjIuMCIgeG1sbnM6eG1pPSJodHRwOi8vd3d3Lm9tZy5vcmcvWE1JIiB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIg0KKyAgICB4bWxuczplY29yZT0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9lbWYvMjAwMi9FY29yZSIgbmFtZT0ic3lzbWwiIG5zVVJJPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3BhcHlydXMvMS40L1N5c01MIiBuc1ByZWZpeD0iU3lzTUwiPg0KKyAgPGVBbm5vdGF0aW9ucyBzb3VyY2U9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvdW1sMi8yLjAuMC9VTUwiPg0KKyAgICA8ZGV0YWlscyBrZXk9Im9yaWdpbmFsTmFtZSIgdmFsdWU9IlN5c01MIi8+DQorICA8L2VBbm5vdGF0aW9ucz4NCisgIDxlU3VicGFja2FnZXMgbmFtZT0iYmxvY2tzIiBuc1VSST0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9wYXB5cnVzLzEuNC9TeXNNTC9CbG9ja3MiDQorICAgICAgbnNQcmVmaXg9IkJsb2NrcyI+DQorICAgIDxlQW5ub3RhdGlvbnMgc291cmNlPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3VtbDIvMi4wLjAvVU1MIj4NCisgICAgICA8ZGV0YWlscyBrZXk9Im9yaWdpbmFsTmFtZSIgdmFsdWU9IkJsb2NrcyIvPg0KKyAgICA8L2VBbm5vdGF0aW9ucz4NCisgICAgPGVDbGFzc2lmaWVycyB4c2k6dHlwZT0iZWNvcmU6RUNsYXNzIiBuYW1lPSJWYWx1ZVR5cGUiPg0KKyAgICAgIDxlQW5ub3RhdGlvbnMgc291cmNlPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2VtZi8yMDAyL0dlbk1vZGVsIj4NCisgICAgICAgIDxkZXRhaWxzIGtleT0iZG9jdW1lbnRhdGlvbiIgdmFsdWU9IkEgVmFsdWVUeXBlIGRlZmluZXMgdHlwZXMgb2YgdmFsdWVzIHRoYXQgbWF5IGJlIHVzZWQgdG8gZXhwcmVzcyBpbmZvcm1hdGlvbiBhYm91dCBhIHN5c3RlbSwgYnV0IGNhbm5vdCBiZSBpZGVudGlmaWVkIGFzIHRoZSB0YXJnZXQgb2YgYW55IHJlZmVyZW5jZS4gU2luY2UgYSB2YWx1ZSBjYW5ub3QgYmUgaWRlbnRpZmllZCBleGNlcHQgYnkgbWVhbnMgb2YgdGhlIHZhbHVlIGl0c2VsZiwgZWFjaCBzdWNoIHZhbHVlIHdpdGhpbiBhIG1vZGVsIGlzIGluZGVwZW5kZW50IG9mIGFueSBvdGhlciwgdW5sZXNzIG90aGVyIGZvcm1zIG9mIGNvbnN0cmFpbnRzIGFyZSBpbXBvc2VkLiBWYWx1ZSB0eXBlcyBtYXkgYmUgdXNlZCB0byB0eXBlIHByb3BlcnRpZXMsIG9wZXJhdGlvbiBwYXJhbWV0ZXJzLCBvciBwb3RlbnRpYWxseSBvdGhlciBlbGVtZW50cyB3aXRoaW4gU3lzTUwuIFN5c01MIGRlZmluZXMgVmFsdWVUeXBlIGFzIGEgc3RlcmVvdHlwZSBvZiBVTUwgRGF0YVR5cGUgdG8gZXN0YWJsaXNoIGEgbW9yZSBuZXV0cmFsIHRlcm0gZm9yIHN5c3RlbSB2YWx1ZXMgdGhhdCBtYXkgbmV2ZXIgYmUgZ2l2ZW4gYSBjb25jcmV0ZSBkYXRhIHJlcHJlc2VudGF0aW9uLiIvPg0KKyAgICAgIDwvZUFubm90YXRpb25zPg0KKyAgICAgIDxlU3RydWN0dXJhbEZlYXR1cmVzIHhzaTp0eXBlPSJlY29yZTpFUmVmZXJlbmNlIiBuYW1lPSJiYXNlX0RhdGFUeXBlIiBvcmRlcmVkPSJmYWxzZSINCisgICAgICAgICAgZVR5cGU9ImVjb3JlOkVDbGFzcyAuLi8uLi9vcmcuZWNsaXBzZS51bWwyLnVtbC9tb2RlbC9VTUwuZWNvcmUjLy9EYXRhVHlwZSIvPg0KKyAgICAgIDxlU3RydWN0dXJhbEZlYXR1cmVzIHhzaTp0eXBlPSJlY29yZTpFUmVmZXJlbmNlIiBuYW1lPSJ1bml0IiBvcmRlcmVkPSJmYWxzZSINCisgICAgICAgICAgZVR5cGU9ImVjb3JlOkVDbGFzcyAuLi8uLi9vcmcuZWNsaXBzZS51bWwyLnVtbC9tb2RlbC9VTUwuZWNvcmUjLy9JbnN0YW5jZVNwZWNpZmljYXRpb24iPg0KKyAgICAgICAgPGVBbm5vdGF0aW9ucyBzb3VyY2U9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvZW1mLzIwMDIvR2VuTW9kZWwiPg0KKyAgICAgICAgICA8ZGV0YWlscyBrZXk9ImRvY3VtZW50YXRpb24iIHZhbHVlPSJBIHF1YW50aXR5IGluIHRlcm1zIG9mIHdoaWNoIHRoZSBtYWduaXR1ZGVzIG9mIG90aGVyIHF1YW50aXRpZXMgdGhhdCBoYXZlIHRoZSBzYW1lIGRpbWVuc2lvbiBjYW4gYmUgc3RhdGVkLCBhcyBpZGVudGlmaWVkIGJ5IGFuIGluc3RhbmNlIG9mIHRoZSBVbml0IHN0ZXJlb3R5cGUuIi8+DQorICAgICAgICA8L2VBbm5vdGF0aW9ucz4NCisgICAgICA8L2VTdHJ1Y3R1cmFsRmVhdHVyZXM+DQorICAgICAgPGVTdHJ1Y3R1cmFsRmVhdHVyZXMgeHNpOnR5cGU9ImVjb3JlOkVSZWZlcmVuY2UiIG5hbWU9InF1YW50aXR5S2luZCIgb3JkZXJlZD0iZmFsc2UiDQorICAgICAgICAgIGVUeXBlPSJlY29yZTpFQ2xhc3MgLi4vLi4vb3JnLmVjbGlwc2UudW1sMi51bWwvbW9kZWwvVU1MLmVjb3JlIy8vSW5zdGFuY2VTcGVjaWZpY2F0aW9uIj4NCisgICAgICAgIDxlQW5ub3RhdGlvbnMgc291cmNlPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2VtZi8yMDAyL0dlbk1vZGVsIj4NCisgICAgICAgICAgPGRldGFpbHMga2V5PSJkb2N1bWVudGF0aW9uIiB2YWx1ZT0iQSBraW5kIG9mIHF1YW50aXR5IHRoYXQgbWF5IGJlIHN0YXRlZCBieSBtZWFucyBvZiBkZWZpbmVkIHVuaXRzLCBhcyBpZGVudGlmaWVkIGJ5IGFuIGluc3RhbmNlIG9mIHRoZSBEaW1lbnNpb24gc3RlcmVvdHlwZS4gQSB2YWx1ZSB0eXBlIG1heSBvcHRpb25hbGx5IHNwZWNpZnkgYSBkaW1lbnNpb24gd2l0aG91dCBhbnkgdW5pdC4gU3VjaCBhIHZhbHVlIGhhcyBubyBjb25jcmV0ZSByZXByZXNlbnRhdGlvbiwgYnV0IG1heSBiZSB1c2VkIHRvIGV4cHJlc3MgYSB2YWx1ZSBpbiBhbiBhYnN0cmFjdCBmb3JtIGluZGVwZW5kZW50IG9mIGFueSBzcGVjaWZpYyB1bml0cy4iLz4NCisgICAgICAgIDwvZUFubm90YXRpb25zPg0KKyAgICAgIDwvZVN0cnVjdHVyYWxGZWF0dXJlcz4NCisgICAgPC9lQ2xhc3NpZmllcnM+DQorICAgIDxlQ2xhc3NpZmllcnMgeHNpOnR5cGU9ImVjb3JlOkVDbGFzcyIgbmFtZT0iRGlzdHJpYnV0ZWRQcm9wZXJ0eSI+DQorICAgICAgPGVBbm5vdGF0aW9ucyBzb3VyY2U9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvZW1mLzIwMDIvR2VuTW9kZWwiPg0KKyAgICAgICAgPGRldGFpbHMga2V5PSJkb2N1bWVudGF0aW9uIiB2YWx1ZT0iRGlzdHJpYnV0ZWRQcm9wZXJ0eSBpcyBhIHN0ZXJlb3R5cGUgb2YgUHJvcGVydHkgdXNlZCB0byBhcHBseSBhIHByb2JhYmlsaXR5IGRpc3RyaWJ1dGlvbiB0byB0aGUgdmFsdWVzIG9mIHRoZSBwcm9wZXJ0eS4gU3BlY2lmaWMgZGlzdHJpYnV0aW9ucyBzaG91bGQgYmUgZGVmaW5lZCBhcyBzdWJjbGFzc2VzIG9mIHRoZSBEaXN0cmlidXRlZFByb3BlcnR5IHN0ZXJlb3R5cGUgd2l0aCB0aGUgb3BlcmFuZHMgb2YgdGhlIGRpc3RyaWJ1dGlvbnMgcmVwcmVzZW50ZWQgYnkgcHJvcGVydGllcyBvZiB0aG9zZSBzdGVyZW90eXBlIHN1YmNsYXNzZXMuIi8+DQorICAgICAgPC9lQW5ub3RhdGlvbnM+DQorICAgICAgPGVTdHJ1Y3R1cmFsRmVhdHVyZXMgeHNpOnR5cGU9ImVjb3JlOkVSZWZlcmVuY2UiIG5hbWU9ImJhc2VfUHJvcGVydHkiIG9yZGVyZWQ9ImZhbHNlIg0KKyAgICAgICAgICBlVHlwZT0iZWNvcmU6RUNsYXNzIC4uLy4uL29yZy5lY2xpcHNlLnVtbDIudW1sL21vZGVsL1VNTC5lY29yZSMvL1Byb3BlcnR5Ii8+DQorICAgIDwvZUNsYXNzaWZpZXJzPg0KKyAgICA8ZUNsYXNzaWZpZXJzIHhzaTp0eXBlPSJlY29yZTpFQ2xhc3MiIG5hbWU9IkNvbm5lY3RvclByb3BlcnR5Ij4NCisgICAgICA8ZUFubm90YXRpb25zIHNvdXJjZT0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9lbWYvMjAwMi9HZW5Nb2RlbCI+DQorICAgICAgICA8ZGV0YWlscyBrZXk9ImRvY3VtZW50YXRpb24iIHZhbHVlPSJDb25uZWN0b3JzIGNhbiBiZSB0eXBlZCBieSBhc3NvY2lhdGlvbiBjbGFzc2VzIHRoYXQgYXJlIHN0ZXJlb3R5cGVkIGJ5IEJsb2NrIChhc3NvY2lhdGlvbiBibG9ja3MpLiBUaGVzZSBjb25uZWN0b3JzIHNwZWNpZnkgaW5zdGFuY2VzIChsaW5rcykgb2YgdGhlIGFzc29jaWF0aW9uIGJsb2NrIHRoYXQgZXhpc3QgZHVlIHRvIGluc3RhbnRpYXRpb24gb2YgdGhlIGJsb2NrIG93bmluZyBvciBpbmhlcml0aW5nIHRoZSBjb25uZWN0b3IuIFRoZSB2YWx1ZSBvZiBhIGNvbm5lY3RvciBwcm9wZXJ0eSBvbiBhbiBpbnN0YW5jZSBvZiBhIGJsb2NrIHdpbGwgYmUgZXhhY3RseSB0aG9zZSBsaW5rIG9iamVjdHMgdGhhdCBhcmUgaW5zdGFuY2VzIG9mIHRoZSBhc3NvY2lhdGlvbiBibG9jayB0eXBpbmcgdGhlIGNvbm5lY3RvciByZWZlcnJlZCB0byBieSB0aGUgY29ubmVjdG9yIHByb3BlcnR5LiIvPg0KKyAgICAgIDwvZUFubm90YXRpb25zPg0KKyAgICAgIDxlU3RydWN0dXJhbEZlYXR1cmVzIHhzaTp0eXBlPSJlY29yZTpFUmVmZXJlbmNlIiBuYW1lPSJiYXNlX1Byb3BlcnR5IiBvcmRlcmVkPSJmYWxzZSINCisgICAgICAgICAgZVR5cGU9ImVjb3JlOkVDbGFzcyAuLi8uLi9vcmcuZWNsaXBzZS51bWwyLnVtbC9tb2RlbC9VTUwuZWNvcmUjLy9Qcm9wZXJ0eSIvPg0KKyAgICAgIDxlU3RydWN0dXJhbEZlYXR1cmVzIHhzaTp0eXBlPSJlY29yZTpFUmVmZXJlbmNlIiBuYW1lPSJjb25uZWN0b3IiIG9yZGVyZWQ9ImZhbHNlIg0KKyAgICAgICAgICBsb3dlckJvdW5kPSIxIiBlVHlwZT0iZWNvcmU6RUNsYXNzIC4uLy4uL29yZy5lY2xpcHNlLnVtbDIudW1sL21vZGVsL1VNTC5lY29yZSMvL0Nvbm5lY3RvciI+DQorICAgICAgICA8ZUFubm90YXRpb25zIHNvdXJjZT0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9lbWYvMjAwMi9HZW5Nb2RlbCI+DQorICAgICAgICAgIDxkZXRhaWxzIGtleT0iZG9jdW1lbnRhdGlvbiIgdmFsdWU9IkEgY29ubmVjdG9yIG9mIHRoZSBibG9jayBvd25pbmcgdGhlIHByb3BlcnR5IG9uIHdoaWNoIHRoZSBzdGVyZW90eXBlIGlzIGFwcGxpZWQuIi8+DQorICAgICAgICA8L2VBbm5vdGF0aW9ucz4NCisgICAgICA8L2VTdHJ1Y3R1cmFsRmVhdHVyZXM+DQorICAgIDwvZUNsYXNzaWZpZXJzPg0KKyAgICA8ZUNsYXNzaWZpZXJzIHhzaTp0eXBlPSJlY29yZTpFQ2xhc3MiIG5hbWU9IlBhcnRpY2lwYW50UHJvcGVydHkiPg0KKyAgICAgIDxlQW5ub3RhdGlvbnMgc291cmNlPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2VtZi8yMDAyL0dlbk1vZGVsIj4NCisgICAgICAgIDxkZXRhaWxzIGtleT0iZG9jdW1lbnRhdGlvbiIgdmFsdWU9IlRoZSBCbG9jayBzdGVyZW90eXBlIGV4dGVuZHMgQ2xhc3MsIHNvIGl0IGNhbiBiZSBhcHBsaWVkIHRvIGFueSBzcGVjaWFsaXphdGlvbiBvZiBDbGFzcywgaW5jbHVkaW5nIEFzc29jaWF0aW9uIENsYXNzZXMuIFRoZXNlIGFyZSBpbmZvcm1hbGx5IGNhbGxlZCDigJxhc3NvY2lhdGlvbiBibG9ja3Mu4oCdIEFuIGFzc29jaWF0aW9uIGJsb2NrIGNhbiBvd24gcHJvcGVydGllcyBhbmQgY29ubmVjdG9ycywgbGlrZSBhbnkgb3RoZXIgYmxvY2suIEVhY2ggaW5zdGFuY2Ugb2YgYW4gYXNzb2NpYXRpb24gYmxvY2sgY2FuIGxpbmsgdG9nZXRoZXIgaW5zdGFuY2VzIG9mIHRoZSBlbmQgY2xhc3NpZmllcnMgb2YgdGhlIGFzc29jaWF0aW9uLiBUbyByZWZlciB0byBsaW5rZWQgb2JqZWN0cyBhbmQgdmFsdWVzIG9mIGFuIGluc3RhbmNlIG9mIGFuIGFzc29jaWF0aW9uIGJsb2NrLCBpdCBpcyBuZWNlc3NhcnkgZm9yIHRoZSBtb2RlbGVyIHRvIHNwZWNpZnkgd2hpY2ggKHBhcnRpY2lwYW50KSBwcm9wZXJ0aWVzIG9mIHRoZSBhc3NvY2lhdGlvbiBibG9jayBpZGVudGlmeSB0aGUgaW5zdGFuY2VzIGJlaW5nIGxpbmtlZCBhdCB3aGljaCBlbmQgb2YgdGhlIGFzc29jaWF0aW9uLiBUaGUgdmFsdWUgb2YgYSBwYXJ0aWNpcGFudCBwcm9wZXJ0eSBvbiBhbiBpbnN0YW5jZSAobGluaykgb2YgdGhlIGFzc29jaWF0aW9uIGJsb2NrIGlzIHRoZSB2YWx1ZSBvciBvYmplY3QgYXQgdGhlIGVuZCBvZiB0aGUgbGluayBjb3JyZXNwb25kaW5nIHRvIHRoaXMgZW5kIG9mIHRoZSBhc3NvY2lhdGlvbi4iLz4NCisgICAgICA8L2VBbm5vdGF0aW9ucz4NCisgICAgICA8ZVN0cnVjdHVyYWxGZWF0dXJlcyB4c2k6dHlwZT0iZWNvcmU6RVJlZmVyZW5jZSIgbmFtZT0iYmFzZV9Qcm9wZXJ0eSIgb3JkZXJlZD0iZmFsc2UiDQorICAgICAgICAgIGVUeXBlPSJlY29yZTpFQ2xhc3MgLi4vLi4vb3JnLmVjbGlwc2UudW1sMi51bWwvbW9kZWwvVU1MLmVjb3JlIy8vUHJvcGVydHkiLz4NCisgICAgICA8ZVN0cnVjdHVyYWxGZWF0dXJlcyB4c2k6dHlwZT0iZWNvcmU6RVJlZmVyZW5jZSIgbmFtZT0iZW5kIiBvcmRlcmVkPSJmYWxzZSINCisgICAgICAgICAgbG93ZXJCb3VuZD0iMSIgZVR5cGU9ImVjb3JlOkVDbGFzcyAuLi8uLi9vcmcuZWNsaXBzZS51bWwyLnVtbC9tb2RlbC9VTUwuZWNvcmUjLy9Qcm9wZXJ0eSI+DQorICAgICAgICA8ZUFubm90YXRpb25zIHNvdXJjZT0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9lbWYvMjAwMi9HZW5Nb2RlbCI+DQorICAgICAgICAgIDxkZXRhaWxzIGtleT0iZG9jdW1lbnRhdGlvbiIgdmFsdWU9IkEgbWVtYmVyIGVuZCBvZiB0aGUgYXNzb2NpYXRpb24gYmxvY2sgb3duaW5nIHRoZSBwcm9wZXJ0eSBvbiB3aGljaCB0aGUgc3RlcmVvdHlwZSBpcyBhcHBsaWVkLiIvPg0KKyAgICAgICAgPC9lQW5ub3RhdGlvbnM+DQorICAgICAgPC9lU3RydWN0dXJhbEZlYXR1cmVzPg0KKyAgICA8L2VDbGFzc2lmaWVycz4NCisgICAgPGVDbGFzc2lmaWVycyB4c2k6dHlwZT0iZWNvcmU6RUNsYXNzIiBuYW1lPSJCaW5kaW5nQ29ubmVjdG9yIj4NCisgICAgICA8ZUFubm90YXRpb25zIHNvdXJjZT0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9lbWYvMjAwMi9HZW5Nb2RlbCI+DQorICAgICAgICA8ZGV0YWlscyBrZXk9ImRvY3VtZW50YXRpb24iIHZhbHVlPSJBIEJpbmRpbmcgQ29ubmVjdG9yIGlzIGEgY29ubmVjdG9yIHdoaWNoIHNwZWNpZmllcyB0aGF0IHRoZSBwcm9wZXJ0aWVzIGF0IGJvdGggZW5kcyBvZiB0aGUgY29ubmVjdG9yIGhhdmUgZXF1YWwgdmFsdWVzLiBJZiB0aGUgcHJvcGVydGllcyBhdCB0aGUgZW5kcyBvZiBhIGJpbmRpbmcgY29ubmVjdG9yIGFyZSB0eXBlZCBieSBhIERhdGFUeXBlIG9yIFZhbHVlVHlwZSwgdGhlIGNvbm5lY3RvciBzcGVjaWZpZXMgdGhhdCB0aGUgaW5zdGFuY2VzIG9mIHRoZSBwcm9wZXJ0aWVzIG11c3QgaG9sZCBlcXVhbCB2YWx1ZXMsIHJlY3Vyc2l2ZWx5IHRocm91Z2ggYW55IG5lc3RlZCBwcm9wZXJ0aWVzIHdpdGhpbiB0aGUgY29ubmVjdGVkIHByb3BlcnRpZXMuIElmIHRoZSBwcm9wZXJ0aWVzIGF0IHRoZSBlbmRzIG9mIGEgYmluZGluZyBjb25uZWN0b3IgYXJlIHR5cGVkIGJ5IGEgQmxvY2ssIHRoZSBjb25uZWN0b3Igc3BlY2lmaWVzIHRoYXQgdGhlIGluc3RhbmNlcyBvZiB0aGUgcHJvcGVydGllcyBtdXN0IHJlZmVyIHRvIHRoZSBzYW1lIGJsb2NrIGluc3RhbmNlLiBBcyB3aXRoIGFueSBjb25uZWN0b3Igb3duZWQgYnkgYSBTeXNNTCBCbG9jaywgdGhlIGVuZHMgb2YgYSBiaW5kaW5nIGNvbm5lY3RvciBtYXkgYmUgbmVzdGVkIHdpdGhpbiBhIG11bHRpLWxldmVsIHBhdGggb2YgcHJvcGVydGllcyBhY2Nlc3NpYmxlIGZyb20gdGhlIG93bmluZyBibG9jay4gVGhlIE5lc3RlZENvbm5lY3RvckVuZCBzdGVyZW90eXBlIGlzIHVzZWQgdG8gcmVwcmVzZW50IHN1Y2ggbmVzdGVkIGVuZHMganVzdCBhcyBmb3IgbmVzdGVkIGVuZHMgb2Ygb3RoZXIgU3lzTUwgY29ubmVjdG9ycy4iLz4NCisgICAgICA8L2VBbm5vdGF0aW9ucz4NCisgICAgICA8ZVN0cnVjdHVyYWxGZWF0dXJlcyB4c2k6dHlwZT0iZWNvcmU6RVJlZmVyZW5jZSIgbmFtZT0iYmFzZV9Db25uZWN0b3IiIG9yZGVyZWQ9ImZhbHNlIg0KKyAgICAgICAgICBlVHlwZT0iZWNvcmU6RUNsYXNzIC4uLy4uL29yZy5lY2xpcHNlLnVtbDIudW1sL21vZGVsL1VNTC5lY29yZSMvL0Nvbm5lY3RvciIvPg0KKyAgICA8L2VDbGFzc2lmaWVycz4NCisgICAgPGVDbGFzc2lmaWVycyB4c2k6dHlwZT0iZWNvcmU6RUNsYXNzIiBuYW1lPSJCbG9jayI+DQorICAgICAgPGVBbm5vdGF0aW9ucyBzb3VyY2U9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvZW1mLzIwMDIvR2VuTW9kZWwiPg0KKyAgICAgICAgPGRldGFpbHMga2V5PSJkb2N1bWVudGF0aW9uIiB2YWx1ZT0iQSBCbG9jayBpcyBhIG1vZHVsYXIgdW5pdCB0aGF0IGRlc2NyaWJlcyB0aGUgc3RydWN0dXJlIG9mIGEgc3lzdGVtIG9yIGVsZW1lbnQuIEl0IG1heSBpbmNsdWRlIGJvdGggc3RydWN0dXJhbCBhbmQgYmVoYXZpb3JhbCBmZWF0dXJlcywgc3VjaCBhcyBwcm9wZXJ0aWVzIGFuZCBvcGVyYXRpb25zLCB0aGF0IHJlcHJlc2VudCB0aGUgc3RhdGUgb2YgdGhlIHN5c3RlbSBhbmQgYmVoYXZpb3IgdGhhdCB0aGUgc3lzdGVtIG1heSBleGhpYml0LiBTb21lIG9mIHRoZXNlIHByb3BlcnRpZXMgbWF5IGhvbGQgcGFydHMgb2YgYSBzeXN0ZW0sIHdoaWNoIGNhbiBhbHNvIGJlIGRlc2NyaWJlZCBieSBibG9ja3MuIEEgYmxvY2sgbWF5IGluY2x1ZGUgYSBzdHJ1Y3R1cmUgb2YgY29ubmVjdG9ycyBiZXR3ZWVuIGl0cyBwcm9wZXJ0aWVzIHRvIGluZGljYXRlIGhvdyBpdHMgcGFydHMgb3Igb3RoZXIgcHJvcGVydGllcyByZWxhdGUgdG8gb25lIGFub3RoZXIuIFN5c01MIGJsb2NrcyBwcm92aWRlIGEgZ2VuZXJhbC1wdXJwb3NlIGNhcGFiaWxpdHkgdG8gZGVzY3JpYmUgdGhlIGFyY2hpdGVjdHVyZSBvZiBhIHN5c3RlbS4gVGhleSBwcm92aWRlIHRoZSBhYmlsaXR5IHRvIHJlcHJlc2VudCBhIHN5c3RlbSBoaWVyYXJjaHksIGluIHdoaWNoIGEgc3lzdGVtIGF0IG9uZSBsZXZlbCBpcyBjb21wb3NlZCBvZiBzeXN0ZW1zIGF0IGEgbW9yZSBiYXNpYyBsZXZlbC4gVGhleSBjYW4gZGVzY3JpYmUgbm90IG9ubHkgdGhlIGNvbm5lY3Rpdml0eSByZWxhdGlvbnNoaXBzIGJldHdlZW4gdGhlIHN5c3RlbXMgYXQgYW55IGxldmVsLCBidXQgYWxzbyBxdWFudGl0YXRpdmUgdmFsdWVzIG9yIG90aGVyIGluZm9ybWF0aW9uIGFib3V0IGEgc3lzdGVtLiBTeXNNTCBkb2VzIG5vdCByZXN0cmljdCB0aGUga2luZCBvZiBzeXN0ZW0gb3Igc3lzdGVtIGVsZW1lbnQgdGhhdCBtYXkgYmUgZGVzY3JpYmVkIGJ5IGEgYmxvY2suIEFueSByZXVzYWJsZSBmb3JtIG9mIGRlc2NyaXB0aW9uIHRoYXQgbWF5IGJlIGFwcGxpZWQgdG8gYSBzeXN0ZW0gb3IgYSBzZXQgb2Ygc3lzdGVtIGNoYXJhY3RlcmlzdGljcyBtYXkgYmUgZGVzY3JpYmVkIGJ5IGEgYmxvY2suIFN1Y2ggcmV1c2FibGUgZGVzY3JpcHRpb25zLCBmb3IgZXhhbXBsZSwgbWF5IGJlIGFwcGxpZWQgdG8gcHVyZWx5IGNvbmNlcHR1YWwgYXNwZWN0cyBvZiBhIHN5c3RlbSBkZXNpZ24sIHN1Y2ggYXMgcmVsYXRpb25zaGlwcyB0aGF0IGhvbGQgYmV0d2VlbiBwYXJ0cyBvciBwcm9wZXJ0aWVzIG9mIGEgc3lzdGVtLiBDb25uZWN0b3JzIG93bmVkIGJ5IFN5c01MIGJsb2NrcyBtYXkgYmUgdXNlZCB0byBkZWZpbmUgcmVsYXRpb25zaGlwcyBiZXR3ZWVuIHBhcnRzIG9yIG90aGVyIHByb3BlcnRpZXMgb2YgdGhlIHNhbWUgY29udGFpbmluZyBibG9jay4gVGhlIHR5cGUgb2YgYSBjb25uZWN0b3Igb3IgaXRzIGNvbm5lY3RlZCBlbmRzIG1heSBzcGVjaWZ5IHRoZSBzZW1hbnRpYyBpbnRlcnByZXRhdGlvbiBvZiBhIHNwZWNpZmljIGNvbm5lY3Rvci4iLz4NCisgICAgICA8L2VBbm5vdGF0aW9ucz4NCisgICAgICA8ZVN0cnVjdHVyYWxGZWF0dXJlcyB4c2k6dHlwZT0iZWNvcmU6RVJlZmVyZW5jZSIgbmFtZT0iYmFzZV9DbGFzcyIgb3JkZXJlZD0iZmFsc2UiDQorICAgICAgICAgIGVUeXBlPSJlY29yZTpFQ2xhc3MgLi4vLi4vb3JnLmVjbGlwc2UudW1sMi51bWwvbW9kZWwvVU1MLmVjb3JlIy8vQ2xhc3MiLz4NCisgICAgICA8ZVN0cnVjdHVyYWxGZWF0dXJlcyB4c2k6dHlwZT0iZWNvcmU6RUF0dHJpYnV0ZSIgbmFtZT0iaXNFbmNhcHN1bGF0ZWQiIG9yZGVyZWQ9ImZhbHNlIg0KKyAgICAgICAgICBlVHlwZT0iZWNvcmU6RURhdGFUeXBlIC4uLy4uL29yZy5lY2xpcHNlLnVtbDIudHlwZXMvbW9kZWwvVHlwZXMuZWNvcmUjLy9Cb29sZWFuIj4NCisgICAgICAgIDxlQW5ub3RhdGlvbnMgc291cmNlPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2VtZi8yMDAyL0dlbk1vZGVsIj4NCisgICAgICAgICAgPGRldGFpbHMga2V5PSJkb2N1bWVudGF0aW9uIiB2YWx1ZT0iSWYgdHJ1ZSwgdGhlbiB0aGUgYmxvY2sgaXMgdHJlYXRlZCBhcyBhIGJsYWNrIGJveDsgYSBwYXJ0IHR5cGVkIGJ5IHRoaXMgYmxhY2sgYm94IGNhbiBvbmx5IGJlIGNvbm5lY3RlZCB2aWEgaXRzIHBvcnRzIG9yIGRpcmVjdGx5IHRvIGl0cyBvdXRlciBib3VuZGFyeS4gSWYgZmFsc2UsIG9yIGlmIGEgdmFsdWUgaXMgbm90IHByZXNlbnQsIHRoZW4gY29ubmVjdGlvbnMgY2FuIGJlIGVzdGFibGlzaGVkIHRvIGVsZW1lbnRzIG9mIGl0cyBpbnRlcm5hbCBzdHJ1Y3R1cmUgdmlhIGRlZXAtbmVzdGVkIGNvbm5lY3RvciBlbmRzLiIvPg0KKyAgICAgICAgPC9lQW5ub3RhdGlvbnM+DQorICAgICAgPC9lU3RydWN0dXJhbEZlYXR1cmVzPg0KKyAgICA8L2VDbGFzc2lmaWVycz4NCisgICAgPGVDbGFzc2lmaWVycyB4c2k6dHlwZT0iZWNvcmU6RUNsYXNzIiBuYW1lPSJQcm9wZXJ0eVNwZWNpZmljVHlwZSI+DQorICAgICAgPGVBbm5vdGF0aW9ucyBzb3VyY2U9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvZW1mLzIwMDIvR2VuTW9kZWwiPg0KKyAgICAgICAgPGRldGFpbHMga2V5PSJkb2N1bWVudGF0aW9uIiB2YWx1ZT0iVGhlIFByb3BlcnR5U3BlY2lmaWNUeXBlIHN0ZXJlb3R5cGUgc2hvdWxkIGF1dG9tYXRpY2FsbHkgYmUgYXBwbGllZCB0byB0aGUgY2xhc3NpZmllciB3aGljaCB0eXBlcyBhIHByb3BlcnR5IHdpdGggYSBwcm9wZXJ0eXNwZWNpZmljIHR5cGUuIFRoaXMgY2xhc3NpZmllciBjYW4gY29udGFpbiBkZWZpbml0aW9ucyBvZiBuZXcgb3IgcmVkZWZpbmVkIGZlYXR1cmVzIHdoaWNoIGV4dGVuZCB0aGUgb3JpZ2luYWwgY2xhc3NpZmllciByZWZlcmVuY2VkIGJ5IHRoZSBwcm9wZXJ0eS1zcGVjaWZpYyB0eXBlLiIvPg0KKyAgICAgIDwvZUFubm90YXRpb25zPg0KKyAgICAgIDxlU3RydWN0dXJhbEZlYXR1cmVzIHhzaTp0eXBlPSJlY29yZTpFUmVmZXJlbmNlIiBuYW1lPSJiYXNlX0NsYXNzaWZpZXIiIG9yZGVyZWQ9ImZhbHNlIg0KKyAgICAgICAgICBlVHlwZT0iZWNvcmU6RUNsYXNzIC4uLy4uL29yZy5lY2xpcHNlLnVtbDIudW1sL21vZGVsL1VNTC5lY29yZSMvL0NsYXNzaWZpZXIiLz4NCisgICAgPC9lQ2xhc3NpZmllcnM+DQorICAgIDxlQ2xhc3NpZmllcnMgeHNpOnR5cGU9ImVjb3JlOkVDbGFzcyIgbmFtZT0iTmVzdGVkQ29ubmVjdG9yRW5kIiBlU3VwZXJUeXBlcz0iIy8vYmxvY2tzL0VsZW1lbnRQcm9wZXJ0eVBhdGgiPg0KKyAgICAgIDxlQW5ub3RhdGlvbnMgc291cmNlPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2VtZi8yMDAyL0dlbk1vZGVsIj4NCisgICAgICAgIDxkZXRhaWxzIGtleT0iZG9jdW1lbnRhdGlvbiIgdmFsdWU9IlRoZSBOZXN0ZWRDb25uZWN0b3JFbmQgc3RlcmVvdHlwZSBvZiBVTUwgQ29ubmVjdG9yRW5kIGV4dGVuZHMgYSBVTUwgQ29ubmVjdG9yRW5kIHNvIHRoYXQgdGhlIGNvbm5lY3RlZCBwcm9wZXJ0eSBtYXkgYmUgaWRlbnRpZmllZCBieSBhIG11bHRpLWxldmVsIHBhdGggb2YgYWNjZXNzaWJsZSBwcm9wZXJ0aWVzIGZyb20gdGhlIGJsb2NrIHRoYXQgb3ducyB0aGUgY29ubmVjdG9yLiIvPg0KKyAgICAgIDwvZUFubm90YXRpb25zPg0KKyAgICAgIDxlU3RydWN0dXJhbEZlYXR1cmVzIHhzaTp0eXBlPSJlY29yZTpFUmVmZXJlbmNlIiBuYW1lPSJiYXNlX0Nvbm5lY3RvckVuZCIgb3JkZXJlZD0iZmFsc2UiDQorICAgICAgICAgIGVUeXBlPSJlY29yZTpFQ2xhc3MgLi4vLi4vb3JnLmVjbGlwc2UudW1sMi51bWwvbW9kZWwvVU1MLmVjb3JlIy8vQ29ubmVjdG9yRW5kIi8+DQorICAgIDwvZUNsYXNzaWZpZXJzPg0KKyAgICA8ZUNsYXNzaWZpZXJzIHhzaTp0eXBlPSJlY29yZTpFQ2xhc3MiIG5hbWU9IkVsZW1lbnRQcm9wZXJ0eVBhdGgiIGFic3RyYWN0PSJ0cnVlIj4NCisgICAgICA8ZVN0cnVjdHVyYWxGZWF0dXJlcyB4c2k6dHlwZT0iZWNvcmU6RVJlZmVyZW5jZSIgbmFtZT0iYmFzZV9FbGVtZW50IiBvcmRlcmVkPSJmYWxzZSINCisgICAgICAgICAgZVR5cGU9ImVjb3JlOkVDbGFzcyAuLi8uLi9vcmcuZWNsaXBzZS51bWwyLnVtbC9tb2RlbC9VTUwuZWNvcmUjLy9FbGVtZW50Ii8+DQorICAgICAgPGVTdHJ1Y3R1cmFsRmVhdHVyZXMgeHNpOnR5cGU9ImVjb3JlOkVSZWZlcmVuY2UiIG5hbWU9InByb3BlcnR5UGF0aCIgdW5pcXVlPSJmYWxzZSINCisgICAgICAgICAgbG93ZXJCb3VuZD0iMSIgdXBwZXJCb3VuZD0iLTEiIGVUeXBlPSJlY29yZTpFQ2xhc3MgLi4vLi4vb3JnLmVjbGlwc2UudW1sMi51bWwvbW9kZWwvVU1MLmVjb3JlIy8vUHJvcGVydHkiPg0KKyAgICAgICAgPGVBbm5vdGF0aW9ucyBzb3VyY2U9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvZW1mLzIwMDIvR2VuTW9kZWwiPg0KKyAgICAgICAgICA8ZGV0YWlscyBrZXk9ImRvY3VtZW50YXRpb24iIHZhbHVlPSJUaGUgcHJvcGVydHlQYXRoIGxpc3Qgb2YgdGhlIE5lc3RlZENvbm5lY3RvckVuZCBzdGVyZW90eXBlIG11c3QgaWRlbnRpZnkgYSBwYXRoIG9mIGNvbnRhaW5pbmcgcHJvcGVydGllcyB0aGF0IGlkZW50aWZ5IHRoZSBjb25uZWN0ZWQgcHJvcGVydHkgaW4gdGhlIGNvbnRleHQgb2YgdGhlIGJsb2NrIHRoYXQgb3ducyB0aGUgY29ubmVjdG9yLiBUaGUgb3JkZXJpbmcgb2YgcHJvcGVydGllcyBpcyBmcm9tIGEgcHJvcGVydHkgb2YgdGhlIGJsb2NrIHRoYXQgb3ducyB0aGUgY29ubmVjdG9yLCB0aHJvdWdoIGEgcHJvcGVydHkgb2YgZWFjaCBpbnRlcm1lZGlhdGUgYmxvY2sgdGhhdCB0eXBlcyB0aGUgcHJlY2VkaW5nIHByb3BlcnR5LCB1bnRpbCBhIHByb3BlcnR5IGlzIHJlYWNoZWQgdGhhdCBjb250YWlucyBhIGNvbm5lY3RvciBlbmQgcHJvcGVydHkgd2l0aGluIGl0cyB0eXBlLiBUaGUgY29ubmVjdG9yIGVuZCBwcm9wZXJ0eSBpcyBub3QgaW5jbHVkZWQgaW4gdGhlIHByb3BlcnR5UGF0aCBsaXN0LCBidXQgaW5zdGVhZCBpcyBoZWxkIGJ5IHRoZSByb2xlIHByb3BlcnR5IG9mIHRoZSBVTUwgQ29ubmVjdG9yRW5kIG1ldGFjbGFzcy4iLz4NCisgICAgICAgIDwvZUFubm90YXRpb25zPg0KKyAgICAgIDwvZVN0cnVjdHVyYWxGZWF0dXJlcz4NCisgICAgPC9lQ2xhc3NpZmllcnM+DQorICAgIDxlQ2xhc3NpZmllcnMgeHNpOnR5cGU9ImVjb3JlOkVDbGFzcyIgbmFtZT0iRGlyZWN0ZWRSZWxhdGlvbnNoaXBQcm9wZXJ0eVBhdGgiDQorICAgICAgICBhYnN0cmFjdD0idHJ1ZSI+DQorICAgICAgPGVTdHJ1Y3R1cmFsRmVhdHVyZXMgeHNpOnR5cGU9ImVjb3JlOkVSZWZlcmVuY2UiIG5hbWU9ImJhc2VfRGlyZWN0ZWRSZWxhdGlvbnNoaXAiDQorICAgICAgICAgIG9yZGVyZWQ9ImZhbHNlIiBlVHlwZT0iZWNvcmU6RUNsYXNzIC4uLy4uL29yZy5lY2xpcHNlLnVtbDIudW1sL21vZGVsL1VNTC5lY29yZSMvL0RpcmVjdGVkUmVsYXRpb25zaGlwIi8+DQorICAgICAgPGVTdHJ1Y3R1cmFsRmVhdHVyZXMgeHNpOnR5cGU9ImVjb3JlOkVSZWZlcmVuY2UiIG5hbWU9InNvdXJjZVByb3BlcnR5UGF0aCIgdW5pcXVlPSJmYWxzZSINCisgICAgICAgICAgdXBwZXJCb3VuZD0iLTEiIGVUeXBlPSJlY29yZTpFQ2xhc3MgLi4vLi4vb3JnLmVjbGlwc2UudW1sMi51bWwvbW9kZWwvVU1MLmVjb3JlIy8vUHJvcGVydHkiLz4NCisgICAgICA8ZVN0cnVjdHVyYWxGZWF0dXJlcyB4c2k6dHlwZT0iZWNvcmU6RVJlZmVyZW5jZSIgbmFtZT0idGFyZ2V0UHJvcGVydHlQYXRoIiB1bmlxdWU9ImZhbHNlIg0KKyAgICAgICAgICB1cHBlckJvdW5kPSItMSIgZVR5cGU9ImVjb3JlOkVDbGFzcyAuLi8uLi9vcmcuZWNsaXBzZS51bWwyLnVtbC9tb2RlbC9VTUwuZWNvcmUjLy9Qcm9wZXJ0eSIvPg0KKyAgICAgIDxlU3RydWN0dXJhbEZlYXR1cmVzIHhzaTp0eXBlPSJlY29yZTpFUmVmZXJlbmNlIiBuYW1lPSJzb3VyY2VDb250ZXh0IiBvcmRlcmVkPSJmYWxzZSINCisgICAgICAgICAgZVR5cGU9ImVjb3JlOkVDbGFzcyAuLi8uLi9vcmcuZWNsaXBzZS51bWwyLnVtbC9tb2RlbC9VTUwuZWNvcmUjLy9DbGFzc2lmaWVyIi8+DQorICAgICAgPGVTdHJ1Y3R1cmFsRmVhdHVyZXMgeHNpOnR5cGU9ImVjb3JlOkVSZWZlcmVuY2UiIG5hbWU9InRhcmdldENvbnRleHQiIG9yZGVyZWQ9ImZhbHNlIg0KKyAgICAgICAgICBlVHlwZT0iZWNvcmU6RUNsYXNzIC4uLy4uL29yZy5lY2xpcHNlLnVtbDIudW1sL21vZGVsL1VNTC5lY29yZSMvL0NsYXNzaWZpZXIiLz4NCisgICAgPC9lQ2xhc3NpZmllcnM+DQorICAgIDxlQ2xhc3NpZmllcnMgeHNpOnR5cGU9ImVjb3JlOkVDbGFzcyIgbmFtZT0iRW5kUGF0aE11bHRpcGxpY2l0eSI+DQorICAgICAgPGVTdHJ1Y3R1cmFsRmVhdHVyZXMgeHNpOnR5cGU9ImVjb3JlOkVSZWZlcmVuY2UiIG5hbWU9ImJhc2VfUHJvcGVydHkiIG9yZGVyZWQ9ImZhbHNlIg0KKyAgICAgICAgICBlVHlwZT0iZWNvcmU6RUNsYXNzIC4uLy4uL29yZy5lY2xpcHNlLnVtbDIudW1sL21vZGVsL1VNTC5lY29yZSMvL1Byb3BlcnR5Ii8+DQorICAgICAgPGVTdHJ1Y3R1cmFsRmVhdHVyZXMgeHNpOnR5cGU9ImVjb3JlOkVBdHRyaWJ1dGUiIG5hbWU9Imxvd2VyIiBvcmRlcmVkPSJmYWxzZSINCisgICAgICAgICAgZVR5cGU9ImVjb3JlOkVEYXRhVHlwZSAuLi8uLi9vcmcuZWNsaXBzZS51bWwyLnR5cGVzL21vZGVsL1R5cGVzLmVjb3JlIy8vSW50ZWdlciINCisgICAgICAgICAgZGVmYXVsdFZhbHVlTGl0ZXJhbD0iMCI+DQorICAgICAgICA8ZUFubm90YXRpb25zIHNvdXJjZT0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9lbWYvMjAwMi9HZW5Nb2RlbCI+DQorICAgICAgICAgIDxkZXRhaWxzIGtleT0iZG9jdW1lbnRhdGlvbiIgdmFsdWU9IkdpdmVzIHRoZSBtaW5pbXVtIG51bWJlciBvZiB2YWx1ZXMgb2YgdGhlIHByb3BlcnR5IGF0IHRoZSBlbmQgb2YgdGhlIHJlbGF0ZWQgYmluZGluZ1BhdGgsIGZvciBlYWNoIG9iamVjdCByZWFjaGVkIGJ5IG5hdmlnYXRpb24gYWxvbmcgdGhlIGJpbmRpbmdQYXRoIGZyb20gYW4gaW5zdGFuY2Ugb2YgdGhlIGJsb2NrIG93bmluZyB0aGUgcHJvcGVydHkgdG8gd2hpY2ggRW5kUGF0aE11bHRpcGxpY2l0eSBpcyBhcHBsaWVkIi8+DQorICAgICAgICA8L2VBbm5vdGF0aW9ucz4NCisgICAgICA8L2VTdHJ1Y3R1cmFsRmVhdHVyZXM+DQorICAgICAgPGVTdHJ1Y3R1cmFsRmVhdHVyZXMgeHNpOnR5cGU9ImVjb3JlOkVBdHRyaWJ1dGUiIG5hbWU9InVwcGVyIiBvcmRlcmVkPSJmYWxzZSINCisgICAgICAgICAgZVR5cGU9ImVjb3JlOkVEYXRhVHlwZSAuLi8uLi9vcmcuZWNsaXBzZS51bWwyLnR5cGVzL21vZGVsL1R5cGVzLmVjb3JlIy8vVW5saW1pdGVkTmF0dXJhbCINCisgICAgICAgICAgZGVmYXVsdFZhbHVlTGl0ZXJhbD0iLTEiPg0KKyAgICAgICAgPGVBbm5vdGF0aW9ucyBzb3VyY2U9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvZW1mLzIwMDIvR2VuTW9kZWwiPg0KKyAgICAgICAgICA8ZGV0YWlscyBrZXk9ImRvY3VtZW50YXRpb24iIHZhbHVlPSJHaXZlcyB0aGUgbWF4aW11bSBudW1iZXIgb2YgdmFsdWVzIG9mIHRoZSBwcm9wZXJ0eSBhdCB0aGUgZW5kIG9mIHRoZSByZWxhdGVkIGJpbmRpbmdQYXRoLCBmb3IgZWFjaCBvYmplY3QgcmVhY2hlZCBieSBuYXZpZ2F0aW9uIGFsb25nIHRoZSBiaW5kaW5nUGF0aCBmcm9tIGFuIGluc3RhbmNlIG9mIHRoZSBibG9jayBvd25pbmcgdGhlIHByb3BlcnR5IHRvIHdoaWNoIEVuZFBhdGhNdWx0aXBsaWNpdHkgaXMgYXBwbGllZC4iLz4NCisgICAgICAgIDwvZUFubm90YXRpb25zPg0KKyAgICAgIDwvZVN0cnVjdHVyYWxGZWF0dXJlcz4NCisgICAgPC9lQ2xhc3NpZmllcnM+DQorICAgIDxlQ2xhc3NpZmllcnMgeHNpOnR5cGU9ImVjb3JlOkVDbGFzcyIgbmFtZT0iQm91bmRSZWZlcmVuY2UiIGVTdXBlclR5cGVzPSIjLy9ibG9ja3MvRW5kUGF0aE11bHRpcGxpY2l0eSI+DQorICAgICAgPGVTdHJ1Y3R1cmFsRmVhdHVyZXMgeHNpOnR5cGU9ImVjb3JlOkVSZWZlcmVuY2UiIG5hbWU9ImJvdW5kRW5kIiBvcmRlcmVkPSJmYWxzZSINCisgICAgICAgICAgbG93ZXJCb3VuZD0iMSIgZVR5cGU9ImVjb3JlOkVDbGFzcyAuLi8uLi9vcmcuZWNsaXBzZS51bWwyLnVtbC9tb2RlbC9VTUwuZWNvcmUjLy9Db25uZWN0b3JFbmQiPg0KKyAgICAgICAgPGVBbm5vdGF0aW9ucyBzb3VyY2U9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvZW1mLzIwMDIvR2VuTW9kZWwiPg0KKyAgICAgICAgICA8ZGV0YWlscyBrZXk9ImRvY3VtZW50YXRpb24iIHZhbHVlPSJHaXZlcyBhIGNvbm5lY3RvciBlbmQgb2YgYSBiaW5kaW5nIGNvbm5lY3RvciBvcHBvc2l0ZSB0byB0aGUgZW5kIGxpbmtlZCB0byB0aGUgc3RlcmVvdHlwZWQgcHJvcGVydHksIG9yIGxpbmtlZCB0byBhIHByb3BlcnR5IHRoYXQgZ2VuZXJhbGl6ZXMgdGhlIHN0ZXJlb3R5cGVkIG9uZSB0aHJvdWdoIHJlZGVmaW5pdGlvbi4iLz4NCisgICAgICAgIDwvZUFubm90YXRpb25zPg0KKyAgICAgIDwvZVN0cnVjdHVyYWxGZWF0dXJlcz4NCisgICAgICA8ZVN0cnVjdHVyYWxGZWF0dXJlcyB4c2k6dHlwZT0iZWNvcmU6RVJlZmVyZW5jZSIgbmFtZT0iYmluZGluZ1BhdGgiIHVuaXF1ZT0iZmFsc2UiDQorICAgICAgICAgIGxvd2VyQm91bmQ9IjEiIHVwcGVyQm91bmQ9Ii0xIiBlVHlwZT0iZWNvcmU6RUNsYXNzIC4uLy4uL29yZy5lY2xpcHNlLnVtbDIudW1sL21vZGVsL1VNTC5lY29yZSMvL1Byb3BlcnR5Ig0KKyAgICAgICAgICB2b2xhdGlsZT0idHJ1ZSIgdHJhbnNpZW50PSJ0cnVlIiBkZXJpdmVkPSJ0cnVlIj4NCisgICAgICAgIDxlQW5ub3RhdGlvbnMgc291cmNlPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2VtZi8yMDAyL0dlbk1vZGVsIj4NCisgICAgICAgICAgPGRldGFpbHMga2V5PSJkb2N1bWVudGF0aW9uIiB2YWx1ZT0iR2l2ZXMgdGhlIHByb3BlcnR5UGF0aCBvZiB0aGUgTmVzdGVkQ29ubmVjdG9yRW5kIGFwcGxpZWQsIGlmIGFueSwgdG8gdGhlIGJvdW5kRW5kLCBhcHBlbmRlZCB0byB0aGUgcm9sZSBvZiB0aGUgYm91bmRFbmQuICIvPg0KKyAgICAgICAgPC9lQW5ub3RhdGlvbnM+DQorICAgICAgPC9lU3RydWN0dXJhbEZlYXR1cmVzPg0KKyAgICA8L2VDbGFzc2lmaWVycz4NCisgICAgPGVDbGFzc2lmaWVycyB4c2k6dHlwZT0iZWNvcmU6RUNsYXNzIiBuYW1lPSJBZGp1bmN0UHJvcGVydHkiPg0KKyAgICAgIDxlQW5ub3RhdGlvbnMgc291cmNlPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2VtZi8yMDAyL0dlbk1vZGVsIj4NCisgICAgICAgIDxkZXRhaWxzIGtleT0iZG9jdW1lbnRhdGlvbiIgdmFsdWU9IlRoZSBBZGp1bmN0UHJvcGVydHkgc3RlcmVvdHlwZSBjYW4gYmUgYXBwbGllZCB0byBwcm9wZXJ0aWVzIHRvIGNvbnN0cmFpbiB0aGVpciB2YWx1ZXMgdG8gdGhlIHZhbHVlcyBvZiBjb25uZWN0b3JzIHR5cGVkIGJ5IGFzc29jaWF0aW9uIGJsb2NrcywgY2FsbCBhY3Rpb25zLCBvYmplY3Qgbm9kZXMsIHZhcmlhYmxlcywgb3IgcGFyYW1ldGVycywgaW50ZXJhY3Rpb24gdXNlcywgYW5kIHN1Ym1hY2hpbmUgc3RhdGVzLiAgVGhlIHZhbHVlcyBvZiBjb25uZWN0b3JzIHR5cGVkIGJ5IGFzc29jaWF0aW9uIGJsb2NrcyBhcmUgdGhlIGluc3RhbmNlcyBvZiB0aGUgYXNzb2NpYXRpb24gYmxvY2sgdHlwaW5nIGEgY29ubmVjdG9yIGluIHRoZSBibG9jayBoYXZpbmcgdGhlIHN0ZXJlb3R5cGVkIHByb3BlcnR5LiAgVGhlIHZhbHVlcyBvZiBjYWxsIGFjdGlvbnMgYXJlIHRoZSBleGVjdXRpb25zIG9mIGJlaGF2aW9ycyBpbnZva2VkIGJ5IHRoZSBiZWhhdmlvciBoYXZpbmcgdGhlIGNhbGwgYWN0aW9uIGFuZCB0aGUgc3RlcmVvdHlwZWQgcHJvcGVydHkgKHNlZSBTdWJjbGF1c2UgMTEuMy4xLjEuMSBmb3IgbW9yZSBhYm91dCB0aGlzIHVzZSBvZiB0aGUgc3RlcmVvdHlwZSkuICBUaGUgdmFsdWVzIG9mIG9iamVjdCBub2RlcyBhcmUgdGhlIHZhbHVlcyBvZiB0b2tlbnMgaW4gdGhlIG9iamVjdCBub2RlcyBvZiB0aGUgYmVoYXZpb3IgaGF2aW5nIHRoZSBzdGVyZW90eXBlZCBwcm9wZXJ0eSAoc2VlIFN1YmNsYXVzZSAxMS4zLjEuNC4xIGZvciBtb3JlIGFib3V0IHRoaXMgdXNlIG9mIHRoZSBzdGVyZW90eXBlKS4gIFRoZSB2YWx1ZXMgb2YgdmFyaWFibGVzIGFyZSB0aG9zZSBhc3NpZ25lZCBieSBleGVjdXRpb25zIG9mIGFjdGl2aXRpZXMgdGhhdCBoYXZlIHRoZSBzdGVyZW90eXBlZCBwcm9wZXJ0eS4gIFRoZSB2YWx1ZXMgb2YgcGFyYW1ldGVycyBhcmUgdGhvc2UgYXNzaWduZWQgYnkgZXhlY3V0aW9ucyBvZiBiZWhhdmlvcnMgdGhhdCBoYXZlIHRoZSBzdGVyZW90eXBlZCBwcm9wZXJ0eS4gIFRoZSBrZXl3b3JkIMKrYWRqdW5jdMK7IGJlZm9yZSBhIHByb3BlcnR5IG5hbWUgaW5kaWNhdGVzIHRoZSBwcm9wZXJ0eSBpcyBzdGVyZW90eXBlZCBieSBBZGp1bmN0UHJvcGVydHkuIi8+DQorICAgICAgPC9lQW5ub3RhdGlvbnM+DQorICAgICAgPGVTdHJ1Y3R1cmFsRmVhdHVyZXMgeHNpOnR5cGU9ImVjb3JlOkVSZWZlcmVuY2UiIG5hbWU9ImJhc2VfUHJvcGVydHkiIG9yZGVyZWQ9ImZhbHNlIg0KKyAgICAgICAgICBlVHlwZT0iZWNvcmU6RUNsYXNzIC4uLy4uL29yZy5lY2xpcHNlLnVtbDIudW1sL21vZGVsL1VNTC5lY29yZSMvL1Byb3BlcnR5Ii8+DQorICAgICAgPGVTdHJ1Y3R1cmFsRmVhdHVyZXMgeHNpOnR5cGU9ImVjb3JlOkVSZWZlcmVuY2UiIG5hbWU9InByaW5jaXBhbCIgb3JkZXJlZD0iZmFsc2UiDQorICAgICAgICAgIGxvd2VyQm91bmQ9IjEiIGVUeXBlPSJlY29yZTpFQ2xhc3MgLi4vLi4vb3JnLmVjbGlwc2UudW1sMi51bWwvbW9kZWwvVU1MLmVjb3JlIy8vRWxlbWVudCI+DQorICAgICAgICA8ZUFubm90YXRpb25zIHNvdXJjZT0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9lbWYvMjAwMi9HZW5Nb2RlbCI+DQorICAgICAgICAgIDxkZXRhaWxzIGtleT0iZG9jdW1lbnRhdGlvbiIgdmFsdWU9IkdpdmVzIHRoZSBlbGVtZW50IHRoYXQgZGV0ZXJtaW5lcyB0aGUgdmFsdWVzIG9mIHRoZSBwcm9wZXJ0eS4gIE11c3QgYmUgYSBjb25uZWN0b3IsIGNhbGwgYWN0aW9uLCBvYmplY3Qgbm9kZSwgdmFyaWFibGUsIG9yIHBhcmFtZXRlci4iLz4NCisgICAgICAgIDwvZUFubm90YXRpb25zPg0KKyAgICAgIDwvZVN0cnVjdHVyYWxGZWF0dXJlcz4NCisgICAgPC9lQ2xhc3NpZmllcnM+DQorICAgIDxlQ2xhc3NpZmllcnMgeHNpOnR5cGU9ImVjb3JlOkVDbGFzcyIgbmFtZT0iQ2xhc3NpZmllckJlaGF2aW9yUHJvcGVydHkiPg0KKyAgICAgIDxlQW5ub3RhdGlvbnMgc291cmNlPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2VtZi8yMDAyL0dlbk1vZGVsIj4NCisgICAgICAgIDxkZXRhaWxzIGtleT0iZG9jdW1lbnRhdGlvbiIgdmFsdWU9IlRoZSBDbGFzc2lmaWVyQmVoYXZpb3JQcm9wZXJ0eSBzdGVyZW90eXBlIGNhbiBiZSBhcHBsaWVkIHRvIHByb3BlcnRpZXMgdG8gY29uc3RyYWluIHRoZWlyIHZhbHVlcyB0byBiZSB0aGUgZXhlY3V0aW9ucyBvZiBjbGFzc2lmaWVyIGJlaGF2aW9ycy4gIFRoZSB2YWx1ZSBvZiBwcm9wZXJ0aWVzIHdpdGggQ2xhc3NpZmllckJlaGF2aW9yUHJvcGVydHkgIGFwcGxpZWQgYXJlIHRoZSBleGVjdXRpb25zIG9mIGNsYXNzaWZpZXIgYmVoYXZpb3JzIGludm9rZWQgYnkgaW5zdGFudGlhdGlvbiBvZiB0aGUgYmxvY2sgdGhhdCBvd25zIHRoZSBzdGVyZW90eXBlZCBwcm9wZXJ0eSBvciBvbmUgb2YgaXRzIHNwZWNpYWxpemF0aW9ucy4iLz4NCisgICAgICA8L2VBbm5vdGF0aW9ucz4NCisgICAgICA8ZVN0cnVjdHVyYWxGZWF0dXJlcyB4c2k6dHlwZT0iZWNvcmU6RVJlZmVyZW5jZSIgbmFtZT0iYmFzZV9Qcm9wZXJ0eSIgb3JkZXJlZD0iZmFsc2UiDQorICAgICAgICAgIGVUeXBlPSJlY29yZTpFQ2xhc3MgLi4vLi4vb3JnLmVjbGlwc2UudW1sMi51bWwvbW9kZWwvVU1MLmVjb3JlIy8vUHJvcGVydHkiLz4NCisgICAgPC9lQ2xhc3NpZmllcnM+DQorICA8L2VTdWJwYWNrYWdlcz4NCisgIDxlU3VicGFja2FnZXMgbmFtZT0icG9ydGFuZGZsb3dzIiBuc1VSST0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9wYXB5cnVzLzEuNC9TeXNNTC9Qb3J0QW5kRmxvd3MiDQorICAgICAgbnNQcmVmaXg9IlBvcnRBbmRGbG93cyI+DQorICAgIDxlQW5ub3RhdGlvbnMgc291cmNlPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3VtbDIvMi4wLjAvVU1MIj4NCisgICAgICA8ZGV0YWlscyBrZXk9Im9yaWdpbmFsTmFtZSIgdmFsdWU9IlBvcnRzYW5kRmxvd3MiLz4NCisgICAgPC9lQW5ub3RhdGlvbnM+DQorICAgIDxlQ2xhc3NpZmllcnMgeHNpOnR5cGU9ImVjb3JlOkVDbGFzcyIgbmFtZT0iSXRlbUZsb3ciPg0KKyAgICAgIDxlQW5ub3RhdGlvbnMgc291cmNlPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2VtZi8yMDAyL0dlbk1vZGVsIj4NCisgICAgICAgIDxkZXRhaWxzIGtleT0iZG9jdW1lbnRhdGlvbiIgdmFsdWU9IkFuIEl0ZW1GbG93IGRlc2NyaWJlcyB0aGUgZmxvdyBvZiBpdGVtcyBhY3Jvc3MgYSBjb25uZWN0b3Igb3IgYW4gYXNzb2NpYXRpb24uIEl0IG1heSBjb25zdHJhaW4gdGhlIGl0ZW0gZXhjaGFuZ2UgYmV0d2VlbiBibG9ja3MsIGJsb2NrIHVzYWdlcywgb3IgZmxvdyBwb3J0cyBhcyBzcGVjaWZpZWQgYnkgdGhlaXIgZmxvdyBwcm9wZXJ0aWVzLiBGb3IgZXhhbXBsZSwgYSBwdW1wIGNvbm5lY3RlZCB0byBhIHRhbms6IHRoZSBwdW1wIGhhcyBhbiDigJxvdXTigJ0gZmxvdyBwcm9wZXJ0eSBvZiB0eXBlIExpcXVpZCBhbmQgdGhlIHRhbmsgaGFzIGFuIOKAnGlu4oCdIEZsb3dQcm9wZXJ0eSBvZiB0eXBlIExpcXVpZC4gVG8gc2lnbmlmeSB0aGF0IG9ubHkgd2F0ZXIgZmxvd3MgYmV0d2VlbiB0aGUgcHVtcCBhbmQgdGhlIHRhbmssIHdlIGNhbiBzcGVjaWZ5IGFuIEl0ZW1GbG93IG9mIHR5cGUgV2F0ZXIgb24gdGhlIGNvbm5lY3Rvci4iLz4NCisgICAgICA8L2VBbm5vdGF0aW9ucz4NCisgICAgICA8ZVN0cnVjdHVyYWxGZWF0dXJlcyB4c2k6dHlwZT0iZWNvcmU6RVJlZmVyZW5jZSIgbmFtZT0iYmFzZV9JbmZvcm1hdGlvbkZsb3ciDQorICAgICAgICAgIG9yZGVyZWQ9ImZhbHNlIiBlVHlwZT0iZWNvcmU6RUNsYXNzIC4uLy4uL29yZy5lY2xpcHNlLnVtbDIudW1sL21vZGVsL1VNTC5lY29yZSMvL0luZm9ybWF0aW9uRmxvdyIvPg0KKyAgICAgIDxlU3RydWN0dXJhbEZlYXR1cmVzIHhzaTp0eXBlPSJlY29yZTpFUmVmZXJlbmNlIiBuYW1lPSJpdGVtUHJvcGVydHkiIG9yZGVyZWQ9ImZhbHNlIg0KKyAgICAgICAgICBlVHlwZT0iZWNvcmU6RUNsYXNzIC4uLy4uL29yZy5lY2xpcHNlLnVtbDIudW1sL21vZGVsL1VNTC5lY29yZSMvL1Byb3BlcnR5Ij4NCisgICAgICAgIDxlQW5ub3RhdGlvbnMgc291cmNlPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2VtZi8yMDAyL0dlbk1vZGVsIj4NCisgICAgICAgICAgPGRldGFpbHMga2V5PSJkb2N1bWVudGF0aW9uIiB2YWx1ZT0iQW4gb3B0aW9uYWwgcHJvcGVydHkgdGhhdCByZWxhdGVzIHRoZSBmbG93aW5nIGl0ZW0gdG8gdGhlIGluc3RhbmNlcyBvZiB0aGUgY29ubmVjdG9y4oCZcyBlbmNsb3NpbmcgYmxvY2suIFRoaXMgcHJvcGVydHkgaXMgYXBwbGljYWJsZSBvbmx5IGZvciBpdGVtIGZsb3dzIGFzc2lnbmVkIHRvIGNvbm5lY3RvcnMuIFRoZSBtdWx0aXBsaWNpdHkgaXMgemVybyBpZiB0aGUgaXRlbSBmbG93IGlzIGFzc2lnbmVkIHRvIGFuIEFzc29jaWF0aW9uLiIvPg0KKyAgICAgICAgPC9lQW5ub3RhdGlvbnM+DQorICAgICAgPC9lU3RydWN0dXJhbEZlYXR1cmVzPg0KKyAgICA8L2VDbGFzc2lmaWVycz4NCisgICAgPGVDbGFzc2lmaWVycyB4c2k6dHlwZT0iZWNvcmU6RUNsYXNzIiBuYW1lPSJGbG93UHJvcGVydHkiPg0KKyAgICAgIDxlQW5ub3RhdGlvbnMgc291cmNlPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2VtZi8yMDAyL0dlbk1vZGVsIj4NCisgICAgICAgIDxkZXRhaWxzIGtleT0iZG9jdW1lbnRhdGlvbiIgdmFsdWU9IkEgRmxvd1Byb3BlcnR5IHNpZ25pZmllcyBhIHNpbmdsZSBmbG93IGVsZW1lbnQgdGhhdCBjYW4gZmxvdyB0by9mcm9tIGEgYmxvY2suIEEgZmxvdyBwcm9wZXJ0eeKAmXMgdmFsdWVzIGFyZSBlaXRoZXIgcmVjZWl2ZWQgZnJvbSBvciB0cmFuc21pdHRlZCB0byBhbiBleHRlcm5hbCBibG9jay4gRmxvdyBwcm9wZXJ0aWVzIGFyZSBkZWZpbmVkIGRpcmVjdGx5IG9uIGJsb2NrcyBvciBmbG93IHNwZWNpZmljYXRpb25zIHRoYXQgYXJlIHRob3NlIHNwZWNpZmljYXRpb25zIHdoaWNoIHR5cGUgdGhlIGZsb3cgcG9ydHMuIEZsb3cgcHJvcGVydGllcyBlbmFibGUgaXRlbSBmbG93cyBhY3Jvc3MgY29ubmVjdG9ycyBjb25uZWN0aW5nIHBhcnRzIG9mIHRoZSBjb3JyZXNwb25kaW5nIGJsb2NrIHR5cGVzLCBlaXRoZXIgZGlyZWN0bHkgKGluIGNhc2Ugb2YgdGhlIHByb3BlcnR5IGlzIGRlZmluZWQgb24gdGhlIGJsb2NrKSBvciB2aWEgZmxvd1BvcnRzLiBGb3IgQmxvY2ssIERhdGEgVHlwZSwgYW5kIFZhbHVlIFR5cGUgcHJvcGVydGllcywgc2V0dGluZyBhbiDigJxvdXTigJ0gRmxvd1Byb3BlcnR5IHZhbHVlIG9mIGEgYmxvY2sgdXNhZ2Ugb24gb25lIGVuZCBvZiBhIGNvbm5lY3RvciB3aWxsIHJlc3VsdCBpbiBhc3NpZ25pbmcgdGhlIHNhbWUgdmFsdWUgb2YgYW4g4oCcaW7igJ0gRmxvd1Byb3BlcnR5IG9mIGEgYmxvY2sgdXNhZ2UgYXQgdGhlIG90aGVyIGVuZCBvZiB0aGUgY29ubmVjdG9yLCBwcm92aWRlZCB0aGUgZmxvdyBwcm9wZXJ0aWVzIGFyZSBtYXRjaGVkLiBGbG93IHByb3BlcnRpZXMgb2YgdHlwZSBTaWduYWwgaW1wbHkgc2VuZGluZyBhbmQvb3IgcmVjZWl2aW5nIG9mIGEgc2lnbmFsIHVzYWdlLiBBbiDigJxvdXTigJ0gRmxvd1Byb3BlcnR5IG9mIHR5cGUgU2lnbmFsIG1lYW5zIHRoYXQgdGhlIG93bmluZyBCbG9jayBtYXkgYnJvYWRjYXN0IHRoZSBzaWduYWwgdmlhIGNvbm5lY3RvcnMgYW5kIGFuIOKAnGlu4oCdIEZsb3dQcm9wZXJ0eSBtZWFucyB0aGF0IHRoZSBvd25pbmcgYmxvY2sgaXMgYWJsZSB0byByZWNlaXZlIHRoZSBTaWduYWwuIi8+DQorICAgICAgPC9lQW5ub3RhdGlvbnM+DQorICAgICAgPGVTdHJ1Y3R1cmFsRmVhdHVyZXMgeHNpOnR5cGU9ImVjb3JlOkVSZWZlcmVuY2UiIG5hbWU9ImJhc2VfUHJvcGVydHkiIG9yZGVyZWQ9ImZhbHNlIg0KKyAgICAgICAgICBlVHlwZT0iZWNvcmU6RUNsYXNzIC4uLy4uL29yZy5lY2xpcHNlLnVtbDIudW1sL21vZGVsL1VNTC5lY29yZSMvL1Byb3BlcnR5Ii8+DQorICAgICAgPGVTdHJ1Y3R1cmFsRmVhdHVyZXMgeHNpOnR5cGU9ImVjb3JlOkVBdHRyaWJ1dGUiIG5hbWU9ImRpcmVjdGlvbiIgb3JkZXJlZD0iZmFsc2UiDQorICAgICAgICAgIGxvd2VyQm91bmQ9IjEiIGVUeXBlPSIjLy9wb3J0YW5kZmxvd3MvRmxvd0RpcmVjdGlvbiIgZGVmYXVsdFZhbHVlTGl0ZXJhbD0iaW5vdXQiPg0KKyAgICAgICAgPGVBbm5vdGF0aW9ucyBzb3VyY2U9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvZW1mLzIwMDIvR2VuTW9kZWwiPg0KKyAgICAgICAgICA8ZGV0YWlscyBrZXk9ImRvY3VtZW50YXRpb24iIHZhbHVlPSJTcGVjaWZpZXMgaWYgdGhlIHByb3BlcnR5IHZhbHVlIGlzIHJlY2VpdmVkIGZyb20gYW4gZXh0ZXJuYWwgYmxvY2sgKGRpcmVjdGlvbj3igJxpbuKAnSksIHRyYW5zbWl0dGVkIHRvIGFuIGV4dGVybmFsIEJsb2NrIChkaXJlY3Rpb2494oCcb3V04oCdKSBvciBib3RoIChkaXJlY3Rpb2494oCcaW5vdXTigJ0pLiIvPg0KKyAgICAgICAgPC9lQW5ub3RhdGlvbnM+DQorICAgICAgPC9lU3RydWN0dXJhbEZlYXR1cmVzPg0KKyAgICA8L2VDbGFzc2lmaWVycz4NCisgICAgPGVDbGFzc2lmaWVycyB4c2k6dHlwZT0iZWNvcmU6RUVudW0iIG5hbWU9IkZsb3dEaXJlY3Rpb24iPg0KKyAgICAgIDxlQW5ub3RhdGlvbnMgc291cmNlPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2VtZi8yMDAyL0dlbk1vZGVsIj4NCisgICAgICAgIDxkZXRhaWxzIGtleT0iZG9jdW1lbnRhdGlvbiIgdmFsdWU9IkZsb3dEaXJlY3Rpb24gaXMgYW4gZW51bWVyYXRpb24gdHlwZSB0aGF0IGRlZmluZXMgbGl0ZXJhbHMgdXNlZCBmb3Igc3BlY2lmeWluZyBpbnB1dCBhbmQgb3V0cHV0IGRpcmVjdGlvbnMuIEZsb3dEaXJlY3Rpb24gaXMgdXNlZCBieSBmbG93IHByb3BlcnRpZXMgdG8gaW5kaWNhdGUgaWYgYSBwcm9wZXJ0eSBpcyBhbiBpbnB1dCBvciBhbiBvdXRwdXQgd2l0aCByZXNwZWN0IHRvIGl0cyBvd25lci4iLz4NCisgICAgICA8L2VBbm5vdGF0aW9ucz4NCisgICAgICA8ZUxpdGVyYWxzIG5hbWU9ImluIj4NCisgICAgICAgIDxlQW5ub3RhdGlvbnMgc291cmNlPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2VtZi8yMDAyL0dlbk1vZGVsIj4NCisgICAgICAgICAgPGRldGFpbHMga2V5PSJkb2N1bWVudGF0aW9uIiB2YWx1ZT0iSW5kaWNhdGVzIHRoYXQgdGhlIGZsb3cgcHJvcGVydHkgaXMgaW5wdXQgdG8gdGhlIG93bmluZyBibG9jay4iLz4NCisgICAgICAgIDwvZUFubm90YXRpb25zPg0KKyAgICAgIDwvZUxpdGVyYWxzPg0KKyAgICAgIDxlTGl0ZXJhbHMgbmFtZT0ib3V0IiB2YWx1ZT0iMSI+DQorICAgICAgICA8ZUFubm90YXRpb25zIHNvdXJjZT0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9lbWYvMjAwMi9HZW5Nb2RlbCI+DQorICAgICAgICAgIDxkZXRhaWxzIGtleT0iZG9jdW1lbnRhdGlvbiIgdmFsdWU9IkluZGljYXRlcyB0aGF0IHRoZSBmbG93IHByb3BlcnR5IGlzIGFuIG91dHB1dCBvZiB0aGUgb3duaW5nIGJsb2NrLiIvPg0KKyAgICAgICAgPC9lQW5ub3RhdGlvbnM+DQorICAgICAgPC9lTGl0ZXJhbHM+DQorICAgICAgPGVMaXRlcmFscyBuYW1lPSJpbm91dCIgdmFsdWU9IjIiPg0KKyAgICAgICAgPGVBbm5vdGF0aW9ucyBzb3VyY2U9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvZW1mLzIwMDIvR2VuTW9kZWwiPg0KKyAgICAgICAgICA8ZGV0YWlscyBrZXk9ImRvY3VtZW50YXRpb24iIHZhbHVlPSJJbmRpY2F0ZXMgdGhhdCB0aGUgZmxvdyBwcm9wZXJ0eSBpcyBib3RoIGFuIGlucHV0IGFuZCBhbiBvdXRwdXQgb2YgdGhlIG93bmluZyBibG9jay4iLz4NCisgICAgICAgIDwvZUFubm90YXRpb25zPg0KKyAgICAgIDwvZUxpdGVyYWxzPg0KKyAgICA8L2VDbGFzc2lmaWVycz4NCisgICAgPGVDbGFzc2lmaWVycyB4c2k6dHlwZT0iZWNvcmU6RUNsYXNzIiBuYW1lPSJGdWxsUG9ydCI+DQorICAgICAgPGVTdHJ1Y3R1cmFsRmVhdHVyZXMgeHNpOnR5cGU9ImVjb3JlOkVSZWZlcmVuY2UiIG5hbWU9ImJhc2VfUG9ydCIgb3JkZXJlZD0iZmFsc2UiDQorICAgICAgICAgIGVUeXBlPSJlY29yZTpFQ2xhc3MgLi4vLi4vb3JnLmVjbGlwc2UudW1sMi51bWwvbW9kZWwvVU1MLmVjb3JlIy8vUG9ydCIvPg0KKyAgICA8L2VDbGFzc2lmaWVycz4NCisgICAgPGVDbGFzc2lmaWVycyB4c2k6dHlwZT0iZWNvcmU6RUNsYXNzIiBuYW1lPSJJbnRlcmZhY2VCbG9jayIgZVN1cGVyVHlwZXM9IiMvL2Jsb2Nrcy9CbG9jayIvPg0KKyAgICA8ZUNsYXNzaWZpZXJzIHhzaTp0eXBlPSJlY29yZTpFQ2xhc3MiIG5hbWU9IlByb3h5UG9ydCI+DQorICAgICAgPGVTdHJ1Y3R1cmFsRmVhdHVyZXMgeHNpOnR5cGU9ImVjb3JlOkVSZWZlcmVuY2UiIG5hbWU9ImJhc2VfUG9ydCIgb3JkZXJlZD0iZmFsc2UiDQorICAgICAgICAgIGVUeXBlPSJlY29yZTpFQ2xhc3MgLi4vLi4vb3JnLmVjbGlwc2UudW1sMi51bWwvbW9kZWwvVU1MLmVjb3JlIy8vUG9ydCIvPg0KKyAgICA8L2VDbGFzc2lmaWVycz4NCisgICAgPGVDbGFzc2lmaWVycyB4c2k6dHlwZT0iZWNvcmU6RUVudW0iIG5hbWU9IkZlYXR1cmVEaXJlY3Rpb24iPg0KKyAgICAgIDxlTGl0ZXJhbHMgbmFtZT0icHJvdmlkZWQiLz4NCisgICAgICA8ZUxpdGVyYWxzIG5hbWU9InJlcXVpcmVkIiB2YWx1ZT0iMSIvPg0KKyAgICAgIDxlTGl0ZXJhbHMgbmFtZT0icHJvdmlkZWRSZXF1aXJlZCIgdmFsdWU9IjIiLz4NCisgICAgPC9lQ2xhc3NpZmllcnM+DQorICAgIDxlQ2xhc3NpZmllcnMgeHNpOnR5cGU9ImVjb3JlOkVDbGFzcyIgbmFtZT0iQWNjZXB0Q2hhbmdlU3RydWN0dXJhbEZlYXR1cmVFdmVudEFjdGlvbiI+DQorICAgICAgPGVTdHJ1Y3R1cmFsRmVhdHVyZXMgeHNpOnR5cGU9ImVjb3JlOkVSZWZlcmVuY2UiIG5hbWU9ImJhc2VfQWNjZXB0RXZlbnRBY3Rpb24iDQorICAgICAgICAgIG9yZGVyZWQ9ImZhbHNlIiBlVHlwZT0iZWNvcmU6RUNsYXNzIC4uLy4uL29yZy5lY2xpcHNlLnVtbDIudW1sL21vZGVsL1VNTC5lY29yZSMvL0FjY2VwdEV2ZW50QWN0aW9uIi8+DQorICAgIDwvZUNsYXNzaWZpZXJzPg0KKyAgICA8ZUNsYXNzaWZpZXJzIHhzaTp0eXBlPSJlY29yZTpFQ2xhc3MiIG5hbWU9IkNoYW5nZVN0cnVjdHVyYWxGZWF0dXJlRXZlbnQiPg0KKyAgICAgIDxlU3RydWN0dXJhbEZlYXR1cmVzIHhzaTp0eXBlPSJlY29yZTpFUmVmZXJlbmNlIiBuYW1lPSJiYXNlX0NoYW5nZUV2ZW50IiBvcmRlcmVkPSJmYWxzZSINCisgICAgICAgICAgZVR5cGU9ImVjb3JlOkVDbGFzcyAuLi8uLi9vcmcuZWNsaXBzZS51bWwyLnVtbC9tb2RlbC9VTUwuZWNvcmUjLy9DaGFuZ2VFdmVudCIvPg0KKyAgICAgIDxlU3RydWN0dXJhbEZlYXR1cmVzIHhzaTp0eXBlPSJlY29yZTpFUmVmZXJlbmNlIiBuYW1lPSJzdHJ1Y3R1cmFsRmVhdHVyZSIgb3JkZXJlZD0iZmFsc2UiDQorICAgICAgICAgIGxvd2VyQm91bmQ9IjEiIGVUeXBlPSJlY29yZTpFQ2xhc3MgLi4vLi4vb3JnLmVjbGlwc2UudW1sMi51bWwvbW9kZWwvVU1MLmVjb3JlIy8vU3RydWN0dXJhbEZlYXR1cmUiLz4NCisgICAgPC9lQ2xhc3NpZmllcnM+DQorICAgIDxlQ2xhc3NpZmllcnMgeHNpOnR5cGU9ImVjb3JlOkVDbGFzcyIgbmFtZT0iRGlyZWN0ZWRGZWF0dXJlIj4NCisgICAgICA8ZVN0cnVjdHVyYWxGZWF0dXJlcyB4c2k6dHlwZT0iZWNvcmU6RVJlZmVyZW5jZSIgbmFtZT0iYmFzZV9GZWF0dXJlIiBvcmRlcmVkPSJmYWxzZSINCisgICAgICAgICAgZVR5cGU9ImVjb3JlOkVDbGFzcyAuLi8uLi9vcmcuZWNsaXBzZS51bWwyLnVtbC9tb2RlbC9VTUwuZWNvcmUjLy9GZWF0dXJlIi8+DQorICAgICAgPGVTdHJ1Y3R1cmFsRmVhdHVyZXMgeHNpOnR5cGU9ImVjb3JlOkVBdHRyaWJ1dGUiIG5hbWU9ImZlYXR1cmVEaXJlY3Rpb24iIG9yZGVyZWQ9ImZhbHNlIg0KKyAgICAgICAgICBsb3dlckJvdW5kPSIxIiBlVHlwZT0iIy8vcG9ydGFuZGZsb3dzL0ZlYXR1cmVEaXJlY3Rpb24iLz4NCisgICAgPC9lQ2xhc3NpZmllcnM+DQorICAgIDxlQ2xhc3NpZmllcnMgeHNpOnR5cGU9ImVjb3JlOkVDbGFzcyIgbmFtZT0iSW52b2NhdGlvbk9uTmVzdGVkUG9ydEFjdGlvbiIgZVN1cGVyVHlwZXM9IiMvL2Jsb2Nrcy9FbGVtZW50UHJvcGVydHlQYXRoIj4NCisgICAgICA8ZVN0cnVjdHVyYWxGZWF0dXJlcyB4c2k6dHlwZT0iZWNvcmU6RVJlZmVyZW5jZSIgbmFtZT0iYmFzZV9JbnZvY2F0aW9uQWN0aW9uIg0KKyAgICAgICAgICBvcmRlcmVkPSJmYWxzZSIgZVR5cGU9ImVjb3JlOkVDbGFzcyAuLi8uLi9vcmcuZWNsaXBzZS51bWwyLnVtbC9tb2RlbC9VTUwuZWNvcmUjLy9JbnZvY2F0aW9uQWN0aW9uIi8+DQorICAgICAgPGVTdHJ1Y3R1cmFsRmVhdHVyZXMgeHNpOnR5cGU9ImVjb3JlOkVSZWZlcmVuY2UiIG5hbWU9Im9uTmVzdGVkUG9ydCIgdW5pcXVlPSJmYWxzZSINCisgICAgICAgICAgbG93ZXJCb3VuZD0iMSIgdXBwZXJCb3VuZD0iLTEiIGVUeXBlPSJlY29yZTpFQ2xhc3MgLi4vLi4vb3JnLmVjbGlwc2UudW1sMi51bWwvbW9kZWwvVU1MLmVjb3JlIy8vUG9ydCIvPg0KKyAgICA8L2VDbGFzc2lmaWVycz4NCisgICAgPGVDbGFzc2lmaWVycyB4c2k6dHlwZT0iZWNvcmU6RUNsYXNzIiBuYW1lPSJUcmlnZ2VyT25OZXN0ZWRQb3J0IiBlU3VwZXJUeXBlcz0iIy8vYmxvY2tzL0VsZW1lbnRQcm9wZXJ0eVBhdGgiPg0KKyAgICAgIDxlU3RydWN0dXJhbEZlYXR1cmVzIHhzaTp0eXBlPSJlY29yZTpFUmVmZXJlbmNlIiBuYW1lPSJiYXNlX1RyaWdnZXIiIG9yZGVyZWQ9ImZhbHNlIg0KKyAgICAgICAgICBsb3dlckJvdW5kPSIxIiBlVHlwZT0iZWNvcmU6RUNsYXNzIC4uLy4uL29yZy5lY2xpcHNlLnVtbDIudW1sL21vZGVsL1VNTC5lY29yZSMvL1RyaWdnZXIiLz4NCisgICAgICA8ZVN0cnVjdHVyYWxGZWF0dXJlcyB4c2k6dHlwZT0iZWNvcmU6RVJlZmVyZW5jZSIgbmFtZT0ib25OZXN0ZWRQb3J0IiB1bmlxdWU9ImZhbHNlIg0KKyAgICAgICAgICBsb3dlckJvdW5kPSIxIiB1cHBlckJvdW5kPSItMSIgZVR5cGU9ImVjb3JlOkVDbGFzcyAuLi8uLi9vcmcuZWNsaXBzZS51bWwyLnVtbC9tb2RlbC9VTUwuZWNvcmUjLy9Qb3J0Ii8+DQorICAgIDwvZUNsYXNzaWZpZXJzPg0KKyAgPC9lU3VicGFja2FnZXM+DQorICA8ZVN1YnBhY2thZ2VzIG5hbWU9ImFjdGl2aXRpZXMiIG5zVVJJPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3BhcHlydXMvMS40L1N5c01ML0FjdGl2aXRpZXMiDQorICAgICAgbnNQcmVmaXg9IkFjdGl2aXRpZXMiPg0KKyAgICA8ZUFubm90YXRpb25zIHNvdXJjZT0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy91bWwyLzIuMC4wL1VNTCI+DQorICAgICAgPGRldGFpbHMga2V5PSJvcmlnaW5hbE5hbWUiIHZhbHVlPSJBY3Rpdml0aWVzIi8+DQorICAgIDwvZUFubm90YXRpb25zPg0KKyAgICA8ZUNsYXNzaWZpZXJzIHhzaTp0eXBlPSJlY29yZTpFQ2xhc3MiIG5hbWU9Ik92ZXJ3cml0ZSI+DQorICAgICAgPGVBbm5vdGF0aW9ucyBzb3VyY2U9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvZW1mLzIwMDIvR2VuTW9kZWwiPg0KKyAgICAgICAgPGRldGFpbHMga2V5PSJkb2N1bWVudGF0aW9uIiB2YWx1ZT0iV2hlbiB0aGUgwqtvdmVyd3JpdGXCuyBzdGVyZW90eXBlIGlzIGFwcGxpZWQgdG8gb2JqZWN0IG5vZGVzLCBhIHRva2VuIGFycml2aW5nIGF0IGEgZnVsbCBvYmplY3Qgbm9kZSByZXBsYWNlcyB0aGUgb25lcyBhbHJlYWR5IHRoZXJlIChhIGZ1bGwgb2JqZWN0IG5vZGUgaGFzIGFzIG1hbnkgdG9rZW5zIGFzIGFsbG93ZWQgYnkgaXRzIHVwcGVyIGJvdW5kKS4gVGhpcyBpcyB0eXBpY2FsbHkgdXNlZCBvbiBhbiBpbnB1dCBwaW4gd2l0aCBhbiB1cHBlciBib3VuZCBvZiAxIHRvIGVuc3VyZSB0aGF0IHN0YWxlIGRhdGEgaXMgb3ZlcnJpZGRlbiBhdCBhbiBpbnB1dCBwaW4uIEZvciB1cHBlciBib3VuZHMgZ3JlYXRlciB0aGFuIG9uZSwgdGhlIHRva2VuIHJlcGxhY2VkIGlzIHRoZSBvbmUgdGhhdCB3b3VsZCBiZSB0aGUgbGFzdCB0byBiZSBzZWxlY3RlZCBhY2NvcmRpbmcgdG8gdGhlIG9yZGVyaW5nIGtpbmQgZm9yIHRoZSBub2RlLiBGb3IgRklGTyBvcmRlcmluZywgdGhpcyBpcyB0aGUgbW9zdCByZWNlbnRseSBhZGRlZCB0b2tlbiwgZm9yIExJRk8gaXQgaXMgdGhlIGxlYXN0IHJlY2VudGx5IGFkZGVkIHRva2VuLiBBIG51bGwgdG9rZW4gcmVtb3ZlcyBhbGwgdGhlIHRva2VucyBhbHJlYWR5IHRoZXJlLiBUaGUgbnVtYmVyIG9mIHRva2VucyByZXBsYWNlZCBpcyBlcXVhbCB0byB0aGUgd2VpZ2h0IG9mIHRoZSBpbmNvbWluZyBlZGdlLCB3aGljaCBkZWZhdWx0cyB0byAxLiBGb3Igb2JqZWN0IG5vZGVzIHRoYXQgYXJlIHRoZSB0YXJnZXQgb2YgY29udGludW91cyBmbG93cywgwqtvdmVyd3JpdGXCuyBhbmQgwqtub2J1ZmZlcsK7IGhhdmUgdGhlIHNhbWUgZWZmZWN0LiBUaGUgc3RlcmVvdHlwZSBkb2VzIG5vdCBvdmVycmlkZSBVTUwgdG9rZW4gb2ZmZXJpbmcgc2VtYW50aWNzLCBqdXN0IGluZGljYXRlcyB3aGF0IGhhcHBlbnMgdG8gdGhlIHRva2VuIHdoZW4gaXQgaXMgYWNjZXB0ZWQuIFdoZW4gdGhlIHN0ZXJlb3R5cGUgaXMgbm90IGFwcGxpZWQsIHRoZSBzZW1hbnRpY3MgaXMgYXMgaW4gVU1MLCBzcGVjaWZpY2FsbHksIHRva2VucyBhcnJpdmluZyBhdCBvYmplY3Qgbm9kZXMgZG8gbm90IHJlcGxhY2Ugb25lcyB0aGF0IGFyZSBhbHJlYWR5IHRoZXJlLiIvPg0KKyAgICAgIDwvZUFubm90YXRpb25zPg0KKyAgICAgIDxlU3RydWN0dXJhbEZlYXR1cmVzIHhzaTp0eXBlPSJlY29yZTpFUmVmZXJlbmNlIiBuYW1lPSJiYXNlX09iamVjdE5vZGUiIG9yZGVyZWQ9ImZhbHNlIg0KKyAgICAgICAgICBlVHlwZT0iZWNvcmU6RUNsYXNzIC4uLy4uL29yZy5lY2xpcHNlLnVtbDIudW1sL21vZGVsL1VNTC5lY29yZSMvL09iamVjdE5vZGUiLz4NCisgICAgPC9lQ2xhc3NpZmllcnM+DQorICAgIDxlQ2xhc3NpZmllcnMgeHNpOnR5cGU9ImVjb3JlOkVDbGFzcyIgbmFtZT0iQ29udHJvbE9wZXJhdG9yIj4NCisgICAgICA8ZUFubm90YXRpb25zIHNvdXJjZT0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9lbWYvMjAwMi9HZW5Nb2RlbCI+DQorICAgICAgICA8ZGV0YWlscyBrZXk9ImRvY3VtZW50YXRpb24iIHZhbHVlPSJBIGNvbnRyb2wgb3BlcmF0b3IgaXMgYSBiZWhhdmlvciB0aGF0IGlzIGludGVuZGVkIHRvIHJlcHJlc2VudCBhbiBhcmJpdHJhcmlseSBjb21wbGV4IGxvZ2ljYWwgb3BlcmF0b3IgdGhhdCBjYW4gYmUgdXNlZCB0byBlbmFibGUgYW5kIGRpc2FibGUgb3RoZXIgYWN0aW9ucy4gV2hlbiB0aGlzIHN0ZXJlb3R5cGUgaXMgYXBwbGllZCB0byBiZWhhdmlvcnMsIHRoZSBiZWhhdmlvciB0YWtlcyBjb250cm9sIHZhbHVlcyBhcyBpbnB1dHMgb3IgcHJvdmlkZXMgdGhlbSBhcyBvdXRwdXRzLCB0aGF0IGlzLCBpdCB0cmVhdHMgY29udHJvbCBhcyBkYXRhLiBXaGVuIHRoaXMgc3RlcmVvdHlwZSBpcyBub3QgYXBwbGllZCwgdGhlIGJlaGF2aW9yIG1heSBub3QgaGF2ZSBhIHBhcmFtZXRlciB0eXBlZCBieSBDb250cm9sVmFsdWUuIFRoaXMgc3RlcmVvdHlwZSBhbHNvIGFwcGxpZXMgdG8gb3BlcmF0aW9ucyB3aXRoIHRoZSBzYW1lIHNlbWFudGljcy4iLz4NCisgICAgICA8L2VBbm5vdGF0aW9ucz4NCisgICAgICA8ZVN0cnVjdHVyYWxGZWF0dXJlcyB4c2k6dHlwZT0iZWNvcmU6RVJlZmVyZW5jZSIgbmFtZT0iYmFzZV9CZWhhdmlvciIgb3JkZXJlZD0iZmFsc2UiDQorICAgICAgICAgIGVUeXBlPSJlY29yZTpFQ2xhc3MgLi4vLi4vb3JnLmVjbGlwc2UudW1sMi51bWwvbW9kZWwvVU1MLmVjb3JlIy8vQmVoYXZpb3IiLz4NCisgICAgICA8ZVN0cnVjdHVyYWxGZWF0dXJlcyB4c2k6dHlwZT0iZWNvcmU6RVJlZmVyZW5jZSIgbmFtZT0iYmFzZV9PcGVyYXRpb24iIG9yZGVyZWQ9ImZhbHNlIg0KKyAgICAgICAgICBlVHlwZT0iZWNvcmU6RUNsYXNzIC4uLy4uL29yZy5lY2xpcHNlLnVtbDIudW1sL21vZGVsL1VNTC5lY29yZSMvL09wZXJhdGlvbiIvPg0KKyAgICA8L2VDbGFzc2lmaWVycz4NCisgICAgPGVDbGFzc2lmaWVycyB4c2k6dHlwZT0iZWNvcmU6RUNsYXNzIiBuYW1lPSJSYXRlIj4NCisgICAgICA8ZUFubm90YXRpb25zIHNvdXJjZT0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9lbWYvMjAwMi9HZW5Nb2RlbCI+DQorICAgICAgICA8ZGV0YWlscyBrZXk9ImRvY3VtZW50YXRpb24iIHZhbHVlPSJXaGVuIHRoZSDCq3JhdGXCuyBzdGVyZW90eXBlIGlzIGFwcGxpZWQgdG8gYW4gYWN0aXZpdHkgZWRnZSwgaXQgc3BlY2lmaWVzIHRoZSBleHBlY3RlZCB2YWx1ZSBvZiB0aGUgbnVtYmVyIG9mIG9iamVjdHMgYW5kIHZhbHVlcyB0aGF0IHRyYXZlcnNlIHRoZSBlZGdlIHBlciB0aW1lIGludGVydmFsLCB0aGF0IGlzLCB0aGUgZXhwZWN0ZWQgdmFsdWUgcmF0ZSBhdCB3aGljaCB0aGV5IGxlYXZlIHRoZSBzb3VyY2Ugbm9kZSBhbmQgYXJyaXZlIGF0IHRoZSB0YXJnZXQgbm9kZS4gSXQgZG9lcyBub3QgcmVmZXIgdG8gdGhlIHJhdGUgYXQgd2hpY2ggYSB2YWx1ZSBjaGFuZ2VzIG92ZXIgdGltZS4gV2hlbiB0aGUgc3RlcmVvdHlwZSBpcyBhcHBsaWVkIHRvIGEgcGFyYW1ldGVyLCB0aGUgcGFyYW1ldGVyIG11c3QgYmUgc3RyZWFtaW5nLCBhbmQgdGhlIHN0ZXJlb3R5cGUgZ2l2ZXMgdGhlIG51bWJlciBvZiBvYmplY3RzIG9yIHZhbHVlcyB0aGF0IGZsb3cgaW4gb3Igb3V0IG9mIHRoZSBwYXJhbWV0ZXIgcGVyIHRpbWUgaW50ZXJ2YWwgd2hpbGUgdGhlIGJlaGF2aW9yIG9yIG9wZXJhdGlvbiBpcyBleGVjdXRpbmcuIFN0cmVhbWluZyBpcyBhIGNoYXJhY3RlcmlzdGljIG9mIFVNTCBiZWhhdmlvciBwYXJhbWV0ZXJzIHRoYXQgc3VwcG9ydHMgdGhlIGlucHV0IGFuZCBvdXRwdXQgb2YgaXRlbXMgd2hpbGUgYSBiZWhhdmlvciBpcyBleGVjdXRpbmcsIHJhdGhlciB0aGFuIG9ubHkgd2hlbiB0aGUgYmVoYXZpb3Igc3RhcnRzIGFuZCBzdG9wcy4gVGhlIGZsb3cgbWF5IGJlIGNvbnRpbnVvdXMgb3IgZGlzY3JldGUuIFRoZSDCq3JhdGXCuyBzdGVyZW90eXBlIGhhcyBhIHJhdGUgcHJvcGVydHkgb2YgdHlwZSBJbnN0YW5jZVNwZWNpZmljYXRpb24uIFRoZSB2YWx1ZXMgb2YgdGhpcyBwcm9wZXJ0eSBtdXN0IGJlIGluc3RhbmNlcyBvZiBjbGFzc2lmaWVycyBzdGVyZW90eXBlZCBieSDCq3ZhbHVlVHlwZcK7IG9yIMKrZGlzdHJpYnV0aW9uRGVmaW5pdGlvbsK7LiBJbiBwYXJ0aWN1bGFyLCB0aGUgZGVub21pbmF0b3IgZm9yIHVuaXRzIHVzZWQgaW4gdGhlIHJhdGUgcHJvcGVydHkgbXVzdCBiZSB0aW1lIHVuaXRzLiIvPg0KKyAgICAgIDwvZUFubm90YXRpb25zPg0KKyAgICAgIDxlU3RydWN0dXJhbEZlYXR1cmVzIHhzaTp0eXBlPSJlY29yZTpFUmVmZXJlbmNlIiBuYW1lPSJyYXRlIiBvcmRlcmVkPSJmYWxzZSINCisgICAgICAgICAgbG93ZXJCb3VuZD0iMSIgZVR5cGU9ImVjb3JlOkVDbGFzcyAuLi8uLi9vcmcuZWNsaXBzZS51bWwyLnVtbC9tb2RlbC9VTUwuZWNvcmUjLy9JbnN0YW5jZVNwZWNpZmljYXRpb24iLz4NCisgICAgICA8ZVN0cnVjdHVyYWxGZWF0dXJlcyB4c2k6dHlwZT0iZWNvcmU6RVJlZmVyZW5jZSIgbmFtZT0iYmFzZV9BY3Rpdml0eUVkZ2UiIG9yZGVyZWQ9ImZhbHNlIg0KKyAgICAgICAgICBlVHlwZT0iZWNvcmU6RUNsYXNzIC4uLy4uL29yZy5lY2xpcHNlLnVtbDIudW1sL21vZGVsL1VNTC5lY29yZSMvL0FjdGl2aXR5RWRnZSIvPg0KKyAgICAgIDxlU3RydWN0dXJhbEZlYXR1cmVzIHhzaTp0eXBlPSJlY29yZTpFUmVmZXJlbmNlIiBuYW1lPSJiYXNlX09iamVjdE5vZGUiIG9yZGVyZWQ9ImZhbHNlIg0KKyAgICAgICAgICBlVHlwZT0iZWNvcmU6RUNsYXNzIC4uLy4uL29yZy5lY2xpcHNlLnVtbDIudW1sL21vZGVsL1VNTC5lY29yZSMvL09iamVjdE5vZGUiLz4NCisgICAgICA8ZVN0cnVjdHVyYWxGZWF0dXJlcyB4c2k6dHlwZT0iZWNvcmU6RVJlZmVyZW5jZSIgbmFtZT0iYmFzZV9QYXJhbWV0ZXIiIG9yZGVyZWQ9ImZhbHNlIg0KKyAgICAgICAgICBlVHlwZT0iZWNvcmU6RUNsYXNzIC4uLy4uL29yZy5lY2xpcHNlLnVtbDIudW1sL21vZGVsL1VNTC5lY29yZSMvL1BhcmFtZXRlciIvPg0KKyAgICA8L2VDbGFzc2lmaWVycz4NCisgICAgPGVDbGFzc2lmaWVycyB4c2k6dHlwZT0iZWNvcmU6RUNsYXNzIiBuYW1lPSJOb0J1ZmZlciI+DQorICAgICAgPGVBbm5vdGF0aW9ucyBzb3VyY2U9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvZW1mLzIwMDIvR2VuTW9kZWwiPg0KKyAgICAgICAgPGRldGFpbHMga2V5PSJkb2N1bWVudGF0aW9uIiB2YWx1ZT0iV2hlbiB0aGlzIHN0ZXJlb3R5cGUgaXMgYXBwbGllZCB0byBvYmplY3Qgbm9kZXMsIHRva2VucyBhcnJpdmluZyBhdCB0aGUgbm9kZSBhcmUgZGlzY2FyZGVkIGlmIHRoZXkgYXJlIHJlZnVzZWQgYnkgb3V0Z29pbmcgZWRnZXMsIG9yIHJlZnVzZWQgYnkgYWN0aW9ucyBmb3Igb2JqZWN0IG5vZGVzIHRoYXQgYXJlIGlucHV0IHBpbnMuIFRoaXMgaXMgdHlwaWNhbGx5IHVzZWQgd2l0aCBmYXN0IG9yIGNvbnRpbnVvdXNseSBmbG93aW5nIGRhdGEgdmFsdWVzLCB0byBwcmV2ZW50IGJ1ZmZlciBvdmVycnVuLCBvciB0byBtb2RlbCB0cmFuc2llbnQgdmFsdWVzLCBzdWNoIGFzIGVsZWN0cmljYWwgc2lnbmFscy4gRm9yIG9iamVjdCBub2RlcyB0aGF0IGFyZSB0aGUgdGFyZ2V0IG9mIGNvbnRpbnVvdXMgZmxvd3MsIMKrbm9idWZmZXLCuyBhbmQgwqtvdmVyd3JpdGXCuyBoYXZlIHRoZSBzYW1lIGVmZmVjdC4gVGhlIHN0ZXJlb3R5cGUgZG9lcyBub3Qgb3ZlcnJpZGUgVU1MIHRva2VuIG9mZmVyaW5nIHNlbWFudGljczsgaXQganVzdCBpbmRpY2F0ZXMgd2hhdCBoYXBwZW5zIHRvIHRoZSB0b2tlbiB3aGVuIGl0IGlzIGFjY2VwdGVkLiBXaGVuIHRoZSBzdGVyZW90eXBlIGlzIG5vdCBhcHBsaWVkLCB0aGUgc2VtYW50aWNzIGFyZSBhcyBpbiBVTUwsIHNwZWNpZmljYWxseSwgdG9rZW5zIGFycml2aW5nIGF0IGFuIG9iamVjdCBub2RlIHRoYXQgYXJlIHJlZnVzZWQgYnkgb3V0Z29pbmcgZWRnZXMsIG9yIGFjdGlvbiBmb3IgaW5wdXQgcGlucywgYXJlIGhlbGQgdW50aWwgdGhleSBjYW4gbGVhdmUgdGhlIG9iamVjdCBub2RlLiIvPg0KKyAgICAgIDwvZUFubm90YXRpb25zPg0KKyAgICAgIDxlU3RydWN0dXJhbEZlYXR1cmVzIHhzaTp0eXBlPSJlY29yZTpFUmVmZXJlbmNlIiBuYW1lPSJiYXNlX09iamVjdE5vZGUiIG9yZGVyZWQ9ImZhbHNlIg0KKyAgICAgICAgICBlVHlwZT0iZWNvcmU6RUNsYXNzIC4uLy4uL29yZy5lY2xpcHNlLnVtbDIudW1sL21vZGVsL1VNTC5lY29yZSMvL09iamVjdE5vZGUiLz4NCisgICAgPC9lQ2xhc3NpZmllcnM+DQorICAgIDxlQ2xhc3NpZmllcnMgeHNpOnR5cGU9ImVjb3JlOkVDbGFzcyIgbmFtZT0iRGlzY3JldGUiIGVTdXBlclR5cGVzPSIjLy9hY3Rpdml0aWVzL1JhdGUiPg0KKyAgICAgIDxlQW5ub3RhdGlvbnMgc291cmNlPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2VtZi8yMDAyL0dlbk1vZGVsIj4NCisgICAgICAgIDxkZXRhaWxzIGtleT0iZG9jdW1lbnRhdGlvbiIgdmFsdWU9IkRpc2NyZXRlIHJhdGUgaXMgYSBzcGVjaWFsIGNhc2Ugb2YgcmF0ZSBvZiBmbG93IChzZWUgUmF0ZSkgd2hlcmUgdGhlIGluY3JlbWVudCBvZiB0aW1lIGJldHdlZW4gaXRlbXMgaXMgbm9uLXplcm8uIi8+DQorICAgICAgPC9lQW5ub3RhdGlvbnM+DQorICAgIDwvZUNsYXNzaWZpZXJzPg0KKyAgICA8ZUNsYXNzaWZpZXJzIHhzaTp0eXBlPSJlY29yZTpFQ2xhc3MiIG5hbWU9IkNvbnRpbnVvdXMiIGVTdXBlclR5cGVzPSIjLy9hY3Rpdml0aWVzL1JhdGUiPg0KKyAgICAgIDxlQW5ub3RhdGlvbnMgc291cmNlPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2VtZi8yMDAyL0dlbk1vZGVsIj4NCisgICAgICAgIDxkZXRhaWxzIGtleT0iZG9jdW1lbnRhdGlvbiIgdmFsdWU9IkNvbnRpbnVvdXMgcmF0ZSBpcyBhIHNwZWNpYWwgY2FzZSBvZiByYXRlIG9mIGZsb3cgKHNlZSBSYXRlKSB3aGVyZSB0aGUgaW5jcmVtZW50IG9mIHRpbWUgYmV0d2VlbiBpdGVtcyBhcHByb2FjaGVzIHplcm8uIEl0IGlzIGludGVuZGVkIHRvIHJlcHJlc2VudCBjb250aW51b3VzIGZsb3dzIHRoYXQgbWF5IGNvcnJlc3BvbmQgdG8gd2F0ZXIgZmxvd2luZyB0aHJvdWdoIGEgcGlwZSwgYSB0aW1lIGNvbnRpbnVvdXMgc2lnbmFsLCBvciBjb250aW51b3VzIGVuZXJneSBmbG93LiBJdCBpcyBpbmRlcGVuZGVudCBmcm9tIFVNTCBzdHJlYW1pbmcuIEEgc3RyZWFtaW5nIHBhcmFtZXRlciBtYXkgb3IgbWF5IG5vdCBhcHBseSB0byBjb250aW51b3VzIGZsb3csIGFuZCBhIGNvbnRpbnVvdXMgZmxvdyBtYXkgb3IgbWF5IG5vdCBhcHBseSB0byBzdHJlYW1pbmcgcGFyYW1ldGVycy4iLz4NCisgICAgICA8L2VBbm5vdGF0aW9ucz4NCisgICAgPC9lQ2xhc3NpZmllcnM+DQorICAgIDxlQ2xhc3NpZmllcnMgeHNpOnR5cGU9ImVjb3JlOkVDbGFzcyIgbmFtZT0iUHJvYmFiaWxpdHkiPg0KKyAgICAgIDxlQW5ub3RhdGlvbnMgc291cmNlPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2VtZi8yMDAyL0dlbk1vZGVsIj4NCisgICAgICAgIDxkZXRhaWxzIGtleT0iZG9jdW1lbnRhdGlvbiIgdmFsdWU9IldoZW4gdGhlIMKrcHJvYmFiaWxpdHnCuyBzdGVyZW90eXBlIGlzIGFwcGxpZWQgdG8gZWRnZXMgY29taW5nIG91dCBvZiBkZWNpc2lvbiBub2RlcyBhbmQgb2JqZWN0IG5vZGVzLCBpdCBwcm92aWRlcyBhbiBleHByZXNzaW9uIGZvciB0aGUgcHJvYmFiaWxpdHkgdGhhdCB0aGUgZWRnZSB3aWxsIGJlIHRyYXZlcnNlZC4gVGhlc2UgbXVzdCBiZSBiZXR3ZWVuIHplcm8gYW5kIG9uZSBpbmNsdXNpdmUsIGFuZCBhZGQgdXAgdG8gb25lIGZvciBlZGdlcyB3aXRoIHNhbWUgc291cmNlIGF0IHRoZSB0aW1lIHRoZSBwcm9iYWJpbGl0aWVzIGFyZSB1c2VkLiYjeEE7V2hlbiB0aGUgwqtwcm9iYWJpbGl0ecK7IHN0ZXJlb3R5cGUgaXMgYXBwbGllZCB0byBvdXRwdXQgcGFyYW1ldGVyIHNldHMsIGl0IGdpdmVzIHRoZSBwcm9iYWJpbGl0eSB0aGUgcGFyYW1ldGVyIHNldCB3aWxsIGJlIGdpdmVuIHZhbHVlcyBhdCBydW50aW1lLiBUaGVzZSBtdXN0IGJlIGJldHdlZW4gemVybyBhbmQgb25lIGluY2x1c2l2ZSwgYW5kIGFkZCB1cCB0byBvbmUgZm9yIG91dHB1dCBwYXJhbWV0ZXIgc2V0cyBvZiB0aGUgc2FtZSBiZWhhdmlvciBhdCB0aGUgdGltZSB0aGUgcHJvYmFiaWxpdGllcyBhcmUgdXNlZC4iLz4NCisgICAgICA8L2VBbm5vdGF0aW9ucz4NCisgICAgICA8ZVN0cnVjdHVyYWxGZWF0dXJlcyB4c2k6dHlwZT0iZWNvcmU6RVJlZmVyZW5jZSIgbmFtZT0iYmFzZV9BY3Rpdml0eUVkZ2UiIG9yZGVyZWQ9ImZhbHNlIg0KKyAgICAgICAgICBlVHlwZT0iZWNvcmU6RUNsYXNzIC4uLy4uL29yZy5lY2xpcHNlLnVtbDIudW1sL21vZGVsL1VNTC5lY29yZSMvL0FjdGl2aXR5RWRnZSIvPg0KKyAgICAgIDxlU3RydWN0dXJhbEZlYXR1cmVzIHhzaTp0eXBlPSJlY29yZTpFUmVmZXJlbmNlIiBuYW1lPSJiYXNlX1BhcmFtZXRlclNldCIgb3JkZXJlZD0iZmFsc2UiDQorICAgICAgICAgIGVUeXBlPSJlY29yZTpFQ2xhc3MgLi4vLi4vb3JnLmVjbGlwc2UudW1sMi51bWwvbW9kZWwvVU1MLmVjb3JlIy8vUGFyYW1ldGVyU2V0Ii8+DQorICAgICAgPGVTdHJ1Y3R1cmFsRmVhdHVyZXMgeHNpOnR5cGU9ImVjb3JlOkVSZWZlcmVuY2UiIG5hbWU9InByb2JhYmlsaXR5IiBvcmRlcmVkPSJmYWxzZSINCisgICAgICAgICAgbG93ZXJCb3VuZD0iMSIgZVR5cGU9ImVjb3JlOkVDbGFzcyAuLi8uLi9vcmcuZWNsaXBzZS51bWwyLnVtbC9tb2RlbC9VTUwuZWNvcmUjLy9WYWx1ZVNwZWNpZmljYXRpb24iLz4NCisgICAgPC9lQ2xhc3NpZmllcnM+DQorICAgIDxlQ2xhc3NpZmllcnMgeHNpOnR5cGU9ImVjb3JlOkVDbGFzcyIgbmFtZT0iT3B0aW9uYWwiPg0KKyAgICAgIDxlQW5ub3RhdGlvbnMgc291cmNlPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2VtZi8yMDAyL0dlbk1vZGVsIj4NCisgICAgICAgIDxkZXRhaWxzIGtleT0iZG9jdW1lbnRhdGlvbiIgdmFsdWU9IldoZW4gdGhlIMKrb3B0aW9uYWzCuyBzdGVyZW90eXBlIGlzIGFwcGxpZWQgdG8gcGFyYW1ldGVycywgdGhlIGxvd2VyIG11bHRpcGxpY2l0eSBtdXN0IGJlIGVxdWFsIHRvIHplcm8uIFRoaXMgbWVhbnMgdGhlIHBhcmFtZXRlciBpcyBub3QgcmVxdWlyZWQgdG8gaGF2ZSBhIHZhbHVlIGZvciB0aGUgYWN0aXZpdHkgb3IgYW55IGJlaGF2aW9yIHRvIGJlZ2luIG9yIGVuZCBleGVjdXRpb24uIE90aGVyd2lzZSwgdGhlIGxvd2VyIG11bHRpcGxpY2l0eSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiB6ZXJvLCB3aGljaCBpcyBjYWxsZWQg4oCccmVxdWlyZWQu4oCdIi8+DQorICAgICAgPC9lQW5ub3RhdGlvbnM+DQorICAgICAgPGVTdHJ1Y3R1cmFsRmVhdHVyZXMgeHNpOnR5cGU9ImVjb3JlOkVSZWZlcmVuY2UiIG5hbWU9ImJhc2VfUGFyYW1ldGVyIiBvcmRlcmVkPSJmYWxzZSINCisgICAgICAgICAgZVR5cGU9ImVjb3JlOkVDbGFzcyAuLi8uLi9vcmcuZWNsaXBzZS51bWwyLnVtbC9tb2RlbC9VTUwuZWNvcmUjLy9QYXJhbWV0ZXIiLz4NCisgICAgPC9lQ2xhc3NpZmllcnM+DQorICA8L2VTdWJwYWNrYWdlcz4NCisgIDxlU3VicGFja2FnZXMgbmFtZT0ibW9kZWxlbGVtZW50cyIgbnNVUkk9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvcGFweXJ1cy8xLjQvU3lzTUwvTW9kZWxFbGVtZW50cyINCisgICAgICBuc1ByZWZpeD0iTW9kZWxFbGVtZW50cyI+DQorICAgIDxlQW5ub3RhdGlvbnMgc291cmNlPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3VtbDIvMi4wLjAvVU1MIj4NCisgICAgICA8ZGV0YWlscyBrZXk9Im9yaWdpbmFsTmFtZSIgdmFsdWU9Ik1vZGVsRWxlbWVudHMiLz4NCisgICAgPC9lQW5ub3RhdGlvbnM+DQorICAgIDxlQ2xhc3NpZmllcnMgeHNpOnR5cGU9ImVjb3JlOkVDbGFzcyIgbmFtZT0iUmF0aW9uYWxlIj4NCisgICAgICA8ZUFubm90YXRpb25zIHNvdXJjZT0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9lbWYvMjAwMi9HZW5Nb2RlbCI+DQorICAgICAgICA8ZGV0YWlscyBrZXk9ImRvY3VtZW50YXRpb24iIHZhbHVlPSJBIFJhdGlvbmFsZSBkb2N1bWVudHMgdGhlIGp1c3RpZmljYXRpb24gZm9yIGRlY2lzaW9ucyBhbmQgdGhlIHJlcXVpcmVtZW50cywgZGVzaWduLCBhbmQgb3RoZXIgZGVjaXNpb25zLiBBIFJhdGlvbmFsZSBjYW4gYmUgYXR0YWNoZWQgdG8gYW55IG1vZGVsIGVsZW1lbnQgaW5jbHVkaW5nIHJlbGF0aW9uc2hpcHMuIEl0IGFsbG93cyB0aGUgdXNlciwgZm9yIGV4YW1wbGUsIHRvIHNwZWNpZnkgYSByYXRpb25hbGUgdGhhdCBtYXkgcmVmZXJlbmNlIG1vcmUgZGV0YWlsZWQgZG9jdW1lbnRhdGlvbiBzdWNoIGFzIGEgdHJhZGUgc3R1ZHkgb3IgYW5hbHlzaXMgcmVwb3J0LiBSYXRpb25hbGUgaXMgYSBzdGVyZW90eXBlIG9mIGNvbW1lbnQgYW5kIG1heSBiZSBhdHRhY2hlZCB0byBhbnkgb3RoZXIgbW9kZWwgZWxlbWVudCBpbiB0aGUgc2FtZSBtYW5uZXIgYXMgYSBjb21tZW50LiIvPg0KKyAgICAgIDwvZUFubm90YXRpb25zPg0KKyAgICAgIDxlU3RydWN0dXJhbEZlYXR1cmVzIHhzaTp0eXBlPSJlY29yZTpFUmVmZXJlbmNlIiBuYW1lPSJiYXNlX0NvbW1lbnQiIG9yZGVyZWQ9ImZhbHNlIg0KKyAgICAgICAgICBlVHlwZT0iZWNvcmU6RUNsYXNzIC4uLy4uL29yZy5lY2xpcHNlLnVtbDIudW1sL21vZGVsL1VNTC5lY29yZSMvL0NvbW1lbnQiLz4NCisgICAgPC9lQ2xhc3NpZmllcnM+DQorICAgIDxlQ2xhc3NpZmllcnMgeHNpOnR5cGU9ImVjb3JlOkVDbGFzcyIgbmFtZT0iVmlldyI+DQorICAgICAgPGVBbm5vdGF0aW9ucyBzb3VyY2U9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvZW1mLzIwMDIvR2VuTW9kZWwiPg0KKyAgICAgICAgPGRldGFpbHMga2V5PSJkb2N1bWVudGF0aW9uIiB2YWx1ZT0iQSBWaWV3IGlzIGEgcmVwcmVzZW50YXRpb24gb2YgYSB3aG9sZSBzeXN0ZW0gb3Igc3Vic3lzdGVtIGZyb20gdGhlIHBlcnNwZWN0aXZlIG9mIGEgc2luZ2xlIHZpZXdwb2ludC4gVmlld3MgYXJlIGFsbG93ZWQgdG8gaW1wb3J0IG90aGVyIGVsZW1lbnRzIGluY2x1ZGluZyBvdGhlciBwYWNrYWdlcyBhbmQgb3RoZXIgdmlld3MgdGhhdCBjb25mb3JtIHRvIHRoZSB2aWV3cG9pbnQuIi8+DQorICAgICAgPC9lQW5ub3RhdGlvbnM+DQorICAgICAgPGVTdHJ1Y3R1cmFsRmVhdHVyZXMgeHNpOnR5cGU9ImVjb3JlOkVSZWZlcmVuY2UiIG5hbWU9ImJhc2VfUGFja2FnZSIgb3JkZXJlZD0iZmFsc2UiDQorICAgICAgICAgIGVUeXBlPSJlY29yZTpFQ2xhc3MgLi4vLi4vb3JnLmVjbGlwc2UudW1sMi51bWwvbW9kZWwvVU1MLmVjb3JlIy8vUGFja2FnZSIvPg0KKyAgICAgIDxlU3RydWN0dXJhbEZlYXR1cmVzIHhzaTp0eXBlPSJlY29yZTpFUmVmZXJlbmNlIiBuYW1lPSJ2aWV3UG9pbnQiIG9yZGVyZWQ9ImZhbHNlIg0KKyAgICAgICAgICBsb3dlckJvdW5kPSIxIiBlVHlwZT0iIy8vbW9kZWxlbGVtZW50cy9WaWV3UG9pbnQiIHZvbGF0aWxlPSJ0cnVlIiB0cmFuc2llbnQ9InRydWUiDQorICAgICAgICAgIGRlcml2ZWQ9InRydWUiPg0KKyAgICAgICAgPGVBbm5vdGF0aW9ucyBzb3VyY2U9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvZW1mLzIwMDIvR2VuTW9kZWwiPg0KKyAgICAgICAgICA8ZGV0YWlscyBrZXk9ImRvY3VtZW50YXRpb24iIHZhbHVlPSJUaGUgdmlld3BvaW50IGZvciB0aGlzIFZpZXcsIGRlcml2ZWQgZnJvbSB0aGUgc3VwcGxpZXIgb2YgdGhlIMKrY29uZm9ybcK7IGRlcGVuZGVuY3kgd2hvc2UgY2xpZW50IGlzIHRoaXMgVmlldy4iLz4NCisgICAgICAgIDwvZUFubm90YXRpb25zPg0KKyAgICAgIDwvZVN0cnVjdHVyYWxGZWF0dXJlcz4NCisgICAgICA8ZVN0cnVjdHVyYWxGZWF0dXJlcyB4c2k6dHlwZT0iZWNvcmU6RVJlZmVyZW5jZSIgbmFtZT0ic3Rha2Vob2xkZXIiIG9yZGVyZWQ9ImZhbHNlIg0KKyAgICAgICAgICBsb3dlckJvdW5kPSIxIiB1cHBlckJvdW5kPSItMSIgZVR5cGU9IiMvL21vZGVsZWxlbWVudHMvU3Rha2Vob2xkZXIiIHZvbGF0aWxlPSJ0cnVlIg0KKyAgICAgICAgICB0cmFuc2llbnQ9InRydWUiIGRlcml2ZWQ9InRydWUiLz4NCisgICAgICA8ZVN0cnVjdHVyYWxGZWF0dXJlcyB4c2k6dHlwZT0iZWNvcmU6RVJlZmVyZW5jZSIgbmFtZT0iYmFzZV9DbGFzcyIgb3JkZXJlZD0iZmFsc2UiDQorICAgICAgICAgIGVUeXBlPSJlY29yZTpFQ2xhc3MgLi4vLi4vb3JnLmVjbGlwc2UudW1sMi51bWwvbW9kZWwvVU1MLmVjb3JlIy8vQ2xhc3MiLz4NCisgICAgPC9lQ2xhc3NpZmllcnM+DQorICAgIDxlQ2xhc3NpZmllcnMgeHNpOnR5cGU9ImVjb3JlOkVDbGFzcyIgbmFtZT0iVmlld1BvaW50Ij4NCisgICAgICA8ZUFubm90YXRpb25zIHNvdXJjZT0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9lbWYvMjAwMi9HZW5Nb2RlbCI+DQorICAgICAgICA8ZGV0YWlscyBrZXk9ImRvY3VtZW50YXRpb24iIHZhbHVlPSJBIFZpZXdwb2ludCBpcyBhIHNwZWNpZmljYXRpb24gb2YgdGhlIGNvbnZlbnRpb25zIGFuZCBydWxlcyBmb3IgY29uc3RydWN0aW5nIGFuZCB1c2luZyBhIHZpZXcgZm9yIHRoZSBwdXJwb3NlIG9mIGFkZHJlc3NpbmcgYSBzZXQgb2Ygc3Rha2Vob2xkZXIgY29uY2VybnMuIFRoZSBsYW5ndWFnZXMgYW5kIG1ldGhvZHMgZm9yIHNwZWNpZnlpbmcgYSB2aWV3IG1heSByZWZlcmVuY2UgbGFuZ3VhZ2VzIGFuZCBtZXRob2RzIGluIGFub3RoZXIgdmlld3BvaW50LiBUaGV5IHNwZWNpZnkgdGhlIGVsZW1lbnRzIGV4cGVjdGVkIHRvIGJlIHJlcHJlc2VudGVkIGluIHRoZSB2aWV3LCBhbmQgbWF5IGJlIGZvcm1hbGx5IG9yIGluZm9ybWFsbHkgZGVmaW5lZC4gRm9yIGV4YW1wbGUsIHRoZSBzZWN1cml0eSB2aWV3cG9pbnQgbWF5IHJlcXVpcmUgdGhlIHNlY3VyaXR5IHJlcXVpcmVtZW50cywgc2VjdXJpdHkgZnVuY3Rpb25hbCBhbmQgcGh5c2ljYWwgYXJjaGl0ZWN0dXJlLCBhbmQgc2VjdXJpdHkgdGVzdCBjYXNlcy4iLz4NCisgICAgICA8L2VBbm5vdGF0aW9ucz4NCisgICAgICA8ZVN0cnVjdHVyYWxGZWF0dXJlcyB4c2k6dHlwZT0iZWNvcmU6RVJlZmVyZW5jZSIgbmFtZT0iYmFzZV9DbGFzcyIgb3JkZXJlZD0iZmFsc2UiDQorICAgICAgICAgIGVUeXBlPSJlY29yZTpFQ2xhc3MgLi4vLi4vb3JnLmVjbGlwc2UudW1sMi51bWwvbW9kZWwvVU1MLmVjb3JlIy8vQ2xhc3MiLz4NCisgICAgICA8ZVN0cnVjdHVyYWxGZWF0dXJlcyB4c2k6dHlwZT0iZWNvcmU6RVJlZmVyZW5jZSIgbmFtZT0ic3Rha2Vob2xkZXIiIG9yZGVyZWQ9ImZhbHNlIg0KKyAgICAgICAgICBsb3dlckJvdW5kPSIxIiB1cHBlckJvdW5kPSItMSIgZVR5cGU9IiMvL21vZGVsZWxlbWVudHMvU3Rha2Vob2xkZXIiPg0KKyAgICAgICAgPGVBbm5vdGF0aW9ucyBzb3VyY2U9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvZW1mLzIwMDIvR2VuTW9kZWwiPg0KKyAgICAgICAgICA8ZGV0YWlscyBrZXk9ImRvY3VtZW50YXRpb24iIHZhbHVlPSJTZXQgb2Ygc3Rha2Vob2xkZXJzLiIvPg0KKyAgICAgICAgPC9lQW5ub3RhdGlvbnM+DQorICAgICAgPC9lU3RydWN0dXJhbEZlYXR1cmVzPg0KKyAgICAgIDxlU3RydWN0dXJhbEZlYXR1cmVzIHhzaTp0eXBlPSJlY29yZTpFQXR0cmlidXRlIiBuYW1lPSJwdXJwb3NlIiBvcmRlcmVkPSJmYWxzZSINCisgICAgICAgICAgbG93ZXJCb3VuZD0iMSIgZVR5cGU9ImVjb3JlOkVEYXRhVHlwZSAuLi8uLi9vcmcuZWNsaXBzZS51bWwyLnR5cGVzL21vZGVsL1R5cGVzLmVjb3JlIy8vU3RyaW5nIj4NCisgICAgICAgIDxlQW5ub3RhdGlvbnMgc291cmNlPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2VtZi8yMDAyL0dlbk1vZGVsIj4NCisgICAgICAgICAgPGRldGFpbHMga2V5PSJkb2N1bWVudGF0aW9uIiB2YWx1ZT0iVGhlIHB1cnBvc2UgYWRkcmVzc2VzIHRoZSBzdGFrZWhvbGRlciBjb25jZXJucy4iLz4NCisgICAgICAgIDwvZUFubm90YXRpb25zPg0KKyAgICAgIDwvZVN0cnVjdHVyYWxGZWF0dXJlcz4NCisgICAgICA8ZVN0cnVjdHVyYWxGZWF0dXJlcyB4c2k6dHlwZT0iZWNvcmU6RVJlZmVyZW5jZSIgbmFtZT0iY29uY2Vybkxpc3QiIG9yZGVyZWQ9ImZhbHNlIg0KKyAgICAgICAgICBsb3dlckJvdW5kPSIxIiB1cHBlckJvdW5kPSItMSIgZVR5cGU9ImVjb3JlOkVDbGFzcyAuLi8uLi9vcmcuZWNsaXBzZS51bWwyLnVtbC9tb2RlbC9VTUwuZWNvcmUjLy9Db21tZW50Ij4NCisgICAgICAgIDxlQW5ub3RhdGlvbnMgc291cmNlPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2VtZi8yMDAyL0dlbk1vZGVsIj4NCisgICAgICAgICAgPGRldGFpbHMga2V5PSJkb2N1bWVudGF0aW9uIiB2YWx1ZT0iVGhlIGludGVyZXN0IG9mIHRoZSBzdGFrZWhvbGRlcnMuIi8+DQorICAgICAgICA8L2VBbm5vdGF0aW9ucz4NCisgICAgICA8L2VTdHJ1Y3R1cmFsRmVhdHVyZXM+DQorICAgICAgPGVTdHJ1Y3R1cmFsRmVhdHVyZXMgeHNpOnR5cGU9ImVjb3JlOkVBdHRyaWJ1dGUiIG5hbWU9Imxhbmd1YWdlIiBvcmRlcmVkPSJmYWxzZSINCisgICAgICAgICAgbG93ZXJCb3VuZD0iMSIgdXBwZXJCb3VuZD0iLTEiIGVUeXBlPSJlY29yZTpFRGF0YVR5cGUgLi4vLi4vb3JnLmVjbGlwc2UudW1sMi50eXBlcy9tb2RlbC9UeXBlcy5lY29yZSMvL1N0cmluZyI+DQorICAgICAgICA8ZUFubm90YXRpb25zIHNvdXJjZT0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9lbWYvMjAwMi9HZW5Nb2RlbCI+DQorICAgICAgICAgIDxkZXRhaWxzIGtleT0iZG9jdW1lbnRhdGlvbiIgdmFsdWU9IlRoZSBsYW5ndWFnZXMgdXNlZCB0byBjb25zdHJ1Y3QgdGhlIHZpZXdwb2ludC4iLz4NCisgICAgICAgIDwvZUFubm90YXRpb25zPg0KKyAgICAgIDwvZVN0cnVjdHVyYWxGZWF0dXJlcz4NCisgICAgICA8ZVN0cnVjdHVyYWxGZWF0dXJlcyB4c2k6dHlwZT0iZWNvcmU6RVJlZmVyZW5jZSIgbmFtZT0ibWV0aG9kIiBvcmRlcmVkPSJmYWxzZSINCisgICAgICAgICAgbG93ZXJCb3VuZD0iMSIgdXBwZXJCb3VuZD0iLTEiIGVUeXBlPSJlY29yZTpFQ2xhc3MgLi4vLi4vb3JnLmVjbGlwc2UudW1sMi51bWwvbW9kZWwvVU1MLmVjb3JlIy8vQmVoYXZpb3IiDQorICAgICAgICAgIHZvbGF0aWxlPSJ0cnVlIiB0cmFuc2llbnQ9InRydWUiIGRlcml2ZWQ9InRydWUiPg0KKyAgICAgICAgPGVBbm5vdGF0aW9ucyBzb3VyY2U9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvZW1mLzIwMDIvR2VuTW9kZWwiPg0KKyAgICAgICAgICA8ZGV0YWlscyBrZXk9ImRvY3VtZW50YXRpb24iIHZhbHVlPSJUaGUgbWV0aG9kcyB1c2VkIHRvIGNvbnN0cnVjdCB0aGUgdmlld3MgZm9yIHRoaXMgdmlld3BvaW50LiIvPg0KKyAgICAgICAgPC9lQW5ub3RhdGlvbnM+DQorICAgICAgPC9lU3RydWN0dXJhbEZlYXR1cmVzPg0KKyAgICAgIDxlU3RydWN0dXJhbEZlYXR1cmVzIHhzaTp0eXBlPSJlY29yZTpFQXR0cmlidXRlIiBuYW1lPSJwcmVzZW50YXRpb24iIG9yZGVyZWQ9ImZhbHNlIg0KKyAgICAgICAgICBsb3dlckJvdW5kPSIxIiB1cHBlckJvdW5kPSItMSIgZVR5cGU9ImVjb3JlOkVEYXRhVHlwZSAuLi8uLi9vcmcuZWNsaXBzZS51bWwyLnR5cGVzL21vZGVsL1R5cGVzLmVjb3JlIy8vU3RyaW5nIi8+DQorICAgICAgPGVTdHJ1Y3R1cmFsRmVhdHVyZXMgeHNpOnR5cGU9ImVjb3JlOkVBdHRyaWJ1dGUiIG5hbWU9ImNvbmNlcm4iIG9yZGVyZWQ9ImZhbHNlIg0KKyAgICAgICAgICBsb3dlckJvdW5kPSIxIiB1cHBlckJvdW5kPSItMSIgZVR5cGU9ImVjb3JlOkVEYXRhVHlwZSAuLi8uLi9vcmcuZWNsaXBzZS51bWwyLnR5cGVzL21vZGVsL1R5cGVzLmVjb3JlIy8vU3RyaW5nIg0KKyAgICAgICAgICB2b2xhdGlsZT0idHJ1ZSIgdHJhbnNpZW50PSJ0cnVlIiBkZXJpdmVkPSJ0cnVlIi8+DQorICAgIDwvZUNsYXNzaWZpZXJzPg0KKyAgICA8ZUNsYXNzaWZpZXJzIHhzaTp0eXBlPSJlY29yZTpFQ2xhc3MiIG5hbWU9IlN0YWtlaG9sZGVyIj4NCisgICAgICA8ZVN0cnVjdHVyYWxGZWF0dXJlcyB4c2k6dHlwZT0iZWNvcmU6RVJlZmVyZW5jZSIgbmFtZT0iYmFzZV9DbGFzc2lmaWVyIiBvcmRlcmVkPSJmYWxzZSINCisgICAgICAgICAgZVR5cGU9ImVjb3JlOkVDbGFzcyAuLi8uLi9vcmcuZWNsaXBzZS51bWwyLnVtbC9tb2RlbC9VTUwuZWNvcmUjLy9DbGFzc2lmaWVyIi8+DQorICAgICAgPGVTdHJ1Y3R1cmFsRmVhdHVyZXMgeHNpOnR5cGU9ImVjb3JlOkVSZWZlcmVuY2UiIG5hbWU9ImNvbmNlcm4iIG9yZGVyZWQ9ImZhbHNlIg0KKyAgICAgICAgICBsb3dlckJvdW5kPSIxIiB1cHBlckJvdW5kPSItMSIgZVR5cGU9ImVjb3JlOkVDbGFzcyAuLi8uLi9vcmcuZWNsaXBzZS51bWwyLnVtbC9tb2RlbC9VTUwuZWNvcmUjLy9Db21tZW50Ii8+DQorICAgICAgPGVTdHJ1Y3R1cmFsRmVhdHVyZXMgeHNpOnR5cGU9ImVjb3JlOkVSZWZlcmVuY2UiIG5hbWU9ImNvbmNlcm5MaXN0IiBvcmRlcmVkPSJmYWxzZSINCisgICAgICAgICAgbG93ZXJCb3VuZD0iMSIgZVR5cGU9ImVjb3JlOkVDbGFzcyAuLi8uLi9vcmcuZWNsaXBzZS51bWwyLnVtbC9tb2RlbC9VTUwuZWNvcmUjLy9Db21tZW50Ig0KKyAgICAgICAgICB2b2xhdGlsZT0idHJ1ZSIgdHJhbnNpZW50PSJ0cnVlIiBkZXJpdmVkPSJ0cnVlIi8+DQorICAgIDwvZUNsYXNzaWZpZXJzPg0KKyAgICA8ZUNsYXNzaWZpZXJzIHhzaTp0eXBlPSJlY29yZTpFQ2xhc3MiIG5hbWU9IkNvbmZvcm0iPg0KKyAgICAgIDxlQW5ub3RhdGlvbnMgc291cmNlPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2VtZi8yMDAyL0dlbk1vZGVsIj4NCisgICAgICAgIDxkZXRhaWxzIGtleT0iZG9jdW1lbnRhdGlvbiIgdmFsdWU9IkEgQ29uZm9ybSByZWxhdGlvbnNoaXAgaXMgYSBkZXBlbmRlbmN5IGJldHdlZW4gYSB2aWV3IGFuZCBhIHZpZXdwb2ludC4gVGhlIHZpZXcgY29uZm9ybXMgdG8gdGhlIHNwZWNpZmllZCBydWxlcyBhbmQgY29udmVudGlvbnMgZGV0YWlsZWQgaW4gdGhlIHZpZXdwb2ludC4gQ29uZm9ybSBpcyBhIHNwZWNpYWxpemF0aW9uIG9mIHRoZSBVTUwgZGVwZW5kZW5jeSwgYW5kIGFzIHdpdGggb3RoZXIgZGVwZW5kZW5jaWVzIHRoZSBhcnJvdyBkaXJlY3Rpb24gcG9pbnRzIGZyb20gdGhlIChjbGllbnQvc291cmNlKSB0byB0aGUgKHN1cHBsaWVyL3RhcmdldCkuIi8+DQorICAgICAgPC9lQW5ub3RhdGlvbnM+DQorICAgICAgPGVTdHJ1Y3R1cmFsRmVhdHVyZXMgeHNpOnR5cGU9ImVjb3JlOkVSZWZlcmVuY2UiIG5hbWU9ImJhc2VfRGVwZW5kZW5jeSIgb3JkZXJlZD0iZmFsc2UiDQorICAgICAgICAgIGVUeXBlPSJlY29yZTpFQ2xhc3MgLi4vLi4vb3JnLmVjbGlwc2UudW1sMi51bWwvbW9kZWwvVU1MLmVjb3JlIy8vRGVwZW5kZW5jeSIvPg0KKyAgICAgIDxlU3RydWN0dXJhbEZlYXR1cmVzIHhzaTp0eXBlPSJlY29yZTpFUmVmZXJlbmNlIiBuYW1lPSJiYXNlX0dlbmVyYWxpemF0aW9uIg0KKyAgICAgICAgICBvcmRlcmVkPSJmYWxzZSIgZVR5cGU9ImVjb3JlOkVDbGFzcyAuLi8uLi9vcmcuZWNsaXBzZS51bWwyLnVtbC9tb2RlbC9VTUwuZWNvcmUjLy9HZW5lcmFsaXphdGlvbiIvPg0KKyAgICA8L2VDbGFzc2lmaWVycz4NCisgICAgPGVDbGFzc2lmaWVycyB4c2k6dHlwZT0iZWNvcmU6RUNsYXNzIiBuYW1lPSJQcm9ibGVtIj4NCisgICAgICA8ZUFubm90YXRpb25zIHNvdXJjZT0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9lbWYvMjAwMi9HZW5Nb2RlbCI+DQorICAgICAgICA8ZGV0YWlscyBrZXk9ImRvY3VtZW50YXRpb24iIHZhbHVlPSJBIFByb2JsZW0gZG9jdW1lbnRzIGEgZGVmaWNpZW5jeSwgbGltaXRhdGlvbiwgb3IgZmFpbHVyZSBvZiBvbmUgb3IgbW9yZSBtb2RlbCBlbGVtZW50cyB0byBzYXRpc2Z5IGEgcmVxdWlyZW1lbnQgb3IgbmVlZCwgb3Igb3RoZXIgdW5kZXNpcmVkIG91dGNvbWUuIEl0IG1heSBiZSB1c2VkIHRvIGNhcHR1cmUgcHJvYmxlbXMgaWRlbnRpZmllZCBkdXJpbmcgYW5hbHlzaXMsIGRlc2lnbiwgdmVyaWZpY2F0aW9uLCBvciBtYW51ZmFjdHVyZSBhbmQgYXNzb2NpYXRlIHRoZSBwcm9ibGVtIHdpdGggdGhlIHJlbGV2YW50IG1vZGVsIGVsZW1lbnRzLiBQcm9ibGVtIGlzIGEgc3RlcmVvdHlwZSBvZiBjb21tZW50IGFuZCBtYXkgYmUgYXR0YWNoZWQgdG8gYW55IG90aGVyIG1vZGVsIGVsZW1lbnQgaW4gdGhlIHNhbWUgbWFubmVyIGFzIGEgY29tbWVudC4iLz4NCisgICAgICA8L2VBbm5vdGF0aW9ucz4NCisgICAgICA8ZVN0cnVjdHVyYWxGZWF0dXJlcyB4c2k6dHlwZT0iZWNvcmU6RVJlZmVyZW5jZSIgbmFtZT0iYmFzZV9Db21tZW50IiBvcmRlcmVkPSJmYWxzZSINCisgICAgICAgICAgZVR5cGU9ImVjb3JlOkVDbGFzcyAuLi8uLi9vcmcuZWNsaXBzZS51bWwyLnVtbC9tb2RlbC9VTUwuZWNvcmUjLy9Db21tZW50Ii8+DQorICAgIDwvZUNsYXNzaWZpZXJzPg0KKyAgICA8ZUNsYXNzaWZpZXJzIHhzaTp0eXBlPSJlY29yZTpFQ2xhc3MiIG5hbWU9IkV4cG9zZSI+DQorICAgICAgPGVTdHJ1Y3R1cmFsRmVhdHVyZXMgeHNpOnR5cGU9ImVjb3JlOkVSZWZlcmVuY2UiIG5hbWU9ImJhc2VfRGVwZW5kZW5jeSIgb3JkZXJlZD0iZmFsc2UiDQorICAgICAgICAgIGVUeXBlPSJlY29yZTpFQ2xhc3MgLi4vLi4vb3JnLmVjbGlwc2UudW1sMi51bWwvbW9kZWwvVU1MLmVjb3JlIy8vRGVwZW5kZW5jeSIvPg0KKyAgICA8L2VDbGFzc2lmaWVycz4NCisgICAgPGVDbGFzc2lmaWVycyB4c2k6dHlwZT0iZWNvcmU6RUNsYXNzIiBuYW1lPSJFbGVtZW50R3JvdXAiPg0KKyAgICAgIDxlQW5ub3RhdGlvbnMgc291cmNlPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2VtZi8yMDAyL0dlbk1vZGVsIj4NCisgICAgICAgIDxkZXRhaWxzIGtleT0iZG9jdW1lbnRhdGlvbiIgdmFsdWU9IlRoZSBFbGVtZW50R3JvdXAgc3RlcmVvdHlwZSBwcm92aWRlcyBhIGxpZ2h0d2VpZ2h0IG1lY2hhbmlzbSBmb3IgZ3JvdXBpbmcgdmFyaW91cyBhbmQgcG9zc2libHkgaGV0ZXJvZ2VuZW91cyBtb2RlbCBlbGVtZW50cyBieSBleHRlbmRpbmcgdGhlIGNhcGFiaWxpdHkgb2YgY29tbWVudHMgdG8gcmVmZXIgdG8gbXVsdGlwbGUgYW5ub3RhdGVkIGVsZW1lbnRzLiBGb3IgZXhhbXBsZSwgaXQgY2FuIGdyb3VwIGVsZW1lbnRzIHRoYXQgYXJlIGFzc29jaWF0ZWQgd2l0aCBhIHBhcnRpY3VsYXIgcmVsZWFzZSBvZiB0aGUgbW9kZWwsIGhhdmUgYSBjZXJ0YWluIHJpc2sgbGV2ZWwsIG9yIGFyZSBhc3NvY2lhdGVkIHdpdGggYSBsZWdhY3kgZGVzaWduLiIvPg0KKyAgICAgIDwvZUFubm90YXRpb25zPg0KKyAgICAgIDxlT3BlcmF0aW9ucyBuYW1lPSJjcml0ZXJpb24iIG9yZGVyZWQ9ImZhbHNlIiBlVHlwZT0iZWNvcmU6RURhdGFUeXBlIC4uLy4uL29yZy5lY2xpcHNlLnVtbDIudHlwZXMvbW9kZWwvVHlwZXMuZWNvcmUjLy9TdHJpbmciPg0KKyAgICAgICAgPGVBbm5vdGF0aW9ucyBzb3VyY2U9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvZW1mLzIwMDIvR2VuTW9kZWwiPg0KKyAgICAgICAgICA8ZGV0YWlscyBrZXk9ImRvY3VtZW50YXRpb24iIHZhbHVlPSJTcGVjaWZpZXMgdGhlIHJhdGlvbmFsZSBmb3IgYmVpbmcgbWVtYmVyIG9mIHRoZSBncm91cC4gQWRkaW5nIGFuIGVsZW1lbnQgdG8gdGhlIGdyb3VwIGFzc2VydHMgdGhhdCB0aGUgY3JpdGVyaW9uJiN4QTthcHBsaWVzIHRvIHRoaXMgZWxlbWVudC4mI3hBO0Rlcml2ZWQgZnJvbSBDb21tZW50Ojpib2R5LiIvPg0KKyAgICAgICAgPC9lQW5ub3RhdGlvbnM+DQorICAgICAgPC9lT3BlcmF0aW9ucz4NCisgICAgICA8ZU9wZXJhdGlvbnMgbmFtZT0ic2l6ZSIgb3JkZXJlZD0iZmFsc2UiIGxvd2VyQm91bmQ9IjEiIGVUeXBlPSJlY29yZTpFRGF0YVR5cGUgLi4vLi4vb3JnLmVjbGlwc2UudW1sMi50eXBlcy9tb2RlbC9UeXBlcy5lY29yZSMvL0ludGVnZXIiPg0KKyAgICAgICAgPGVBbm5vdGF0aW9ucyBzb3VyY2U9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvZW1mLzIwMDIvR2VuTW9kZWwiPg0KKyAgICAgICAgICA8ZGV0YWlscyBrZXk9ImRvY3VtZW50YXRpb24iIHZhbHVlPSJOdW1iZXIgb2YgbWVtYmVycyBpbiB0aGUgZ3JvdXAuIERlcml2ZWQuIi8+DQorICAgICAgICA8L2VBbm5vdGF0aW9ucz4NCisgICAgICA8L2VPcGVyYXRpb25zPg0KKyAgICAgIDxlT3BlcmF0aW9ucyBuYW1lPSJtZW1iZXIiIG9yZGVyZWQ9ImZhbHNlIiB1cHBlckJvdW5kPSItMSIgZVR5cGU9ImVjb3JlOkVDbGFzcyAuLi8uLi9vcmcuZWNsaXBzZS51bWwyLnVtbC9tb2RlbC9VTUwuZWNvcmUjLy9FbGVtZW50Ii8+DQorICAgICAgPGVPcGVyYXRpb25zIG5hbWU9ImFsbEdyb3VwcyIgb3JkZXJlZD0iZmFsc2UiIHVwcGVyQm91bmQ9Ii0xIiBlVHlwZT0iIy8vbW9kZWxlbGVtZW50cy9FbGVtZW50R3JvdXAiPg0KKyAgICAgICAgPGVQYXJhbWV0ZXJzIG5hbWU9ImUiIG9yZGVyZWQ9ImZhbHNlIiBsb3dlckJvdW5kPSIxIiBlVHlwZT0iZWNvcmU6RUNsYXNzIC4uLy4uL29yZy5lY2xpcHNlLnVtbDIudW1sL21vZGVsL1VNTC5lY29yZSMvL0VsZW1lbnQiLz4NCisgICAgICA8L2VPcGVyYXRpb25zPg0KKyAgICAgIDxlU3RydWN0dXJhbEZlYXR1cmVzIHhzaTp0eXBlPSJlY29yZTpFUmVmZXJlbmNlIiBuYW1lPSJiYXNlX0NvbW1lbnQiIG9yZGVyZWQ9ImZhbHNlIg0KKyAgICAgICAgICBlVHlwZT0iZWNvcmU6RUNsYXNzIC4uLy4uL29yZy5lY2xpcHNlLnVtbDIudW1sL21vZGVsL1VNTC5lY29yZSMvL0NvbW1lbnQiLz4NCisgICAgICA8ZVN0cnVjdHVyYWxGZWF0dXJlcyB4c2k6dHlwZT0iZWNvcmU6RUF0dHJpYnV0ZSIgbmFtZT0ibmFtZSIgb3JkZXJlZD0iZmFsc2UiDQorICAgICAgICAgIGxvd2VyQm91bmQ9IjEiIGVUeXBlPSJlY29yZTpFRGF0YVR5cGUgLi4vLi4vb3JnLmVjbGlwc2UudW1sMi50eXBlcy9tb2RlbC9UeXBlcy5lY29yZSMvL1N0cmluZyIvPg0KKyAgICAgIDxlU3RydWN0dXJhbEZlYXR1cmVzIHhzaTp0eXBlPSJlY29yZTpFQXR0cmlidXRlIiBuYW1lPSJjcml0ZXJpb24iIG9yZGVyZWQ9ImZhbHNlIg0KKyAgICAgICAgICBsb3dlckJvdW5kPSIxIiBlVHlwZT0iZWNvcmU6RURhdGFUeXBlIC4uLy4uL29yZy5lY2xpcHNlLnVtbDIudHlwZXMvbW9kZWwvVHlwZXMuZWNvcmUjLy9TdHJpbmciDQorICAgICAgICAgIHZvbGF0aWxlPSJ0cnVlIiB0cmFuc2llbnQ9InRydWUiIGRlcml2ZWQ9InRydWUiLz4NCisgICAgICA8ZVN0cnVjdHVyYWxGZWF0dXJlcyB4c2k6dHlwZT0iZWNvcmU6RUF0dHJpYnV0ZSIgbmFtZT0ic2l6ZSIgb3JkZXJlZD0iZmFsc2UiDQorICAgICAgICAgIGxvd2VyQm91bmQ9IjEiIGVUeXBlPSJlY29yZTpFRGF0YVR5cGUgLi4vLi4vb3JnLmVjbGlwc2UudW1sMi50eXBlcy9tb2RlbC9UeXBlcy5lY29yZSMvL0ludGVnZXIiDQorICAgICAgICAgIHZvbGF0aWxlPSJ0cnVlIiB0cmFuc2llbnQ9InRydWUiIGRlcml2ZWQ9InRydWUiLz4NCisgICAgICA8ZVN0cnVjdHVyYWxGZWF0dXJlcyB4c2k6dHlwZT0iZWNvcmU6RVJlZmVyZW5jZSIgbmFtZT0ibWVtYmVyIiBvcmRlcmVkPSJmYWxzZSINCisgICAgICAgICAgdXBwZXJCb3VuZD0iLTEiIGVUeXBlPSJlY29yZTpFQ2xhc3MgLi4vLi4vb3JnLmVjbGlwc2UudW1sMi51bWwvbW9kZWwvVU1MLmVjb3JlIy8vRWxlbWVudCINCisgICAgICAgICAgdm9sYXRpbGU9InRydWUiIHRyYW5zaWVudD0idHJ1ZSIgZGVyaXZlZD0idHJ1ZSI+DQorICAgICAgICA8ZUFubm90YXRpb25zIHNvdXJjZT0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9lbWYvMjAwMi9HZW5Nb2RlbCI+DQorICAgICAgICAgIDxkZXRhaWxzIGtleT0iZG9jdW1lbnRhdGlvbiIgdmFsdWU9IlNldCBzcGVjaWZ5aW5nIHRoZSBtZW1iZXJzIG9mIHRoZSBncm91cC4mI3hBO0Rlcml2ZWQgZnJvbSBDb21tZW50Ojphbm5vdGF0ZWRFbGVtZW50LiIvPg0KKyAgICAgICAgPC9lQW5ub3RhdGlvbnM+DQorICAgICAgPC9lU3RydWN0dXJhbEZlYXR1cmVzPg0KKyAgICAgIDxlU3RydWN0dXJhbEZlYXR1cmVzIHhzaTp0eXBlPSJlY29yZTpFUmVmZXJlbmNlIiBuYW1lPSJvcmRlcmVkTWVtYmVyIiB1cHBlckJvdW5kPSItMSINCisgICAgICAgICAgZVR5cGU9ImVjb3JlOkVDbGFzcyAuLi8uLi9vcmcuZWNsaXBzZS51bWwyLnVtbC9tb2RlbC9VTUwuZWNvcmUjLy9FbGVtZW50Ij4NCisgICAgICAgIDxlQW5ub3RhdGlvbnMgc291cmNlPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2VtZi8yMDAyL0dlbk1vZGVsIj4NCisgICAgICAgICAgPGRldGFpbHMga2V5PSJkb2N1bWVudGF0aW9uIiB2YWx1ZT0iT3JnYW5pemUgbWVtYmVyIGFjY29yZGluZyB0byBhbiBhcmJpdHJhcnkgb3JkZXIuIE9wdGlvbmFsLiIvPg0KKyAgICAgICAgPC9lQW5ub3RhdGlvbnM+DQorICAgICAgPC9lU3RydWN0dXJhbEZlYXR1cmVzPg0KKyAgICA8L2VDbGFzc2lmaWVycz4NCisgICAgPGVTdWJwYWNrYWdlcyBuYW1lPSJEZXByZWNhdGVkIiBuc1VSST0iaHR0cDovLy9TeXNNTC9Nb2RlbEVsZW1lbnRzL0RlcHJlY2F0ZWQuZWNvcmUiDQorICAgICAgICBuc1ByZWZpeD0iU3lzTUwuTW9kZWxFbGVtZW50cy5EZXByZWNhdGVkIi8+DQorICA8L2VTdWJwYWNrYWdlcz4NCisgIDxlU3VicGFja2FnZXMgbmFtZT0iY29uc3RyYWludGJsb2NrcyIgbnNVUkk9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvcGFweXJ1cy8xLjQvU3lzTUwvQ29uc3RyYWludEJsb2NrcyINCisgICAgICBuc1ByZWZpeD0iQ29uc3RyYWludEJsb2NrcyI+DQorICAgIDxlQW5ub3RhdGlvbnMgc291cmNlPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3VtbDIvMi4wLjAvVU1MIj4NCisgICAgICA8ZGV0YWlscyBrZXk9Im9yaWdpbmFsTmFtZSIgdmFsdWU9IkNvbnN0cmFpbnRCbG9ja3MiLz4NCisgICAgPC9lQW5ub3RhdGlvbnM+DQorICAgIDxlQ2xhc3NpZmllcnMgeHNpOnR5cGU9ImVjb3JlOkVDbGFzcyIgbmFtZT0iQ29uc3RyYWludEJsb2NrIiBlU3VwZXJUeXBlcz0iIy8vYmxvY2tzL0Jsb2NrIj4NCisgICAgICA8ZUFubm90YXRpb25zIHNvdXJjZT0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9lbWYvMjAwMi9HZW5Nb2RlbCI+DQorICAgICAgICA8ZGV0YWlscyBrZXk9ImRvY3VtZW50YXRpb24iIHZhbHVlPSJBIGNvbnN0cmFpbnQgYmxvY2sgaXMgYSBibG9jayB0aGF0IHBhY2thZ2VzIHRoZSBzdGF0ZW1lbnQgb2YgYSBjb25zdHJhaW50IHNvIGl0IG1heSBiZSBhcHBsaWVkIGluIGEgcmV1c2FibGUgd2F5IHRvIGNvbnN0cmFpbiBwcm9wZXJ0aWVzIG9mIG90aGVyIGJsb2Nrcy4gQSBjb25zdHJhaW50IGJsb2NrIHR5cGljYWxseSBkZWZpbmVzIG9uZSBvciBtb3JlIGNvbnN0cmFpbnQgcGFyYW1ldGVycywgd2hpY2ggYXJlIGJvdW5kIHRvIHByb3BlcnRpZXMgb2Ygb3RoZXIgYmxvY2tzIGluIGEgc3Vycm91bmRpbmcgY29udGV4dCB3aGVyZSB0aGUgY29uc3RyYWludCBpcyB1c2VkLiBCaW5kaW5nIGNvbm5lY3RvcnMsIGFzIGRlZmluZWQgaW4gQ2hhcHRlciA4OiBCbG9ja3MsIGFyZSB1c2VkIHRvIGJpbmQgZWFjaCBwYXJhbWV0ZXIgb2YgdGhlIGNvbnN0cmFpbnQgYmxvY2sgdG8gYSBwcm9wZXJ0eSBpbiB0aGUgc3Vycm91bmRpbmcgY29udGV4dC4gQWxsIHByb3BlcnRpZXMgb2YgYSBjb25zdHJhaW50IGJsb2NrIGFyZSBjb25zdHJhaW50IHBhcmFtZXRlcnMsIHdpdGggdGhlIGV4Y2VwdGlvbiBvZiBjb25zdHJhaW50IHByb3BlcnRpZXMgdGhhdCBob2xkIGludGVybmFsbHkgbmVzdGVkIHVzYWdlcyBvZiBvdGhlciBjb25zdHJhaW50IGJsb2Nrcy4iLz4NCisgICAgICA8L2VBbm5vdGF0aW9ucz4NCisgICAgPC9lQ2xhc3NpZmllcnM+DQorICA8L2VTdWJwYWNrYWdlcz4NCisgIDxlU3VicGFja2FnZXMgbmFtZT0iYWxsb2NhdGlvbnMiIG5zVVJJPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3BhcHlydXMvMS40L1N5c01ML0FsbG9jYXRpb25zIg0KKyAgICAgIG5zUHJlZml4PSJBbGxvY2F0aW9ucyI+DQorICAgIDxlQW5ub3RhdGlvbnMgc291cmNlPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3VtbDIvMi4wLjAvVU1MIj4NCisgICAgICA8ZGV0YWlscyBrZXk9Im9yaWdpbmFsTmFtZSIgdmFsdWU9IkFsbG9jYXRpb25zIi8+DQorICAgIDwvZUFubm90YXRpb25zPg0KKyAgICA8ZUNsYXNzaWZpZXJzIHhzaTp0eXBlPSJlY29yZTpFQ2xhc3MiIG5hbWU9IkFsbG9jYXRlQWN0aXZpdHlQYXJ0aXRpb24iPg0KKyAgICAgIDxlQW5ub3RhdGlvbnMgc291cmNlPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2VtZi8yMDAyL0dlbk1vZGVsIj4NCisgICAgICAgIDxkZXRhaWxzIGtleT0iZG9jdW1lbnRhdGlvbiIgdmFsdWU9IkFsbG9jYXRlQWN0aXZpdHlQYXJ0aXRpb24gaXMgdXNlZCB0byBkZXBpY3QgYW4gwqthbGxvY2F0ZcK7IHJlbGF0aW9uc2hpcCBvbiBhbiBBY3Rpdml0eSBkaWFncmFtLiBUaGUgQWxsb2NhdGVBY3Rpdml0eVBhcnRpdGlvbiBpcyBhIHN0YW5kYXJkIFVNTDI6OkFjdGl2aXR5UGFydGl0aW9uLCB3aXRoIG1vZGlmaWVkIGNvbnN0cmFpbnRzIGFzIHN0YXRlZCBpbiB0aGUgcGFyYWdyYXBoIGJlbG93LiIvPg0KKyAgICAgIDwvZUFubm90YXRpb25zPg0KKyAgICAgIDxlU3RydWN0dXJhbEZlYXR1cmVzIHhzaTp0eXBlPSJlY29yZTpFUmVmZXJlbmNlIiBuYW1lPSJiYXNlX0FjdGl2aXR5UGFydGl0aW9uIg0KKyAgICAgICAgICBvcmRlcmVkPSJmYWxzZSIgZVR5cGU9ImVjb3JlOkVDbGFzcyAuLi8uLi9vcmcuZWNsaXBzZS51bWwyLnVtbC9tb2RlbC9VTUwuZWNvcmUjLy9BY3Rpdml0eVBhcnRpdGlvbiIvPg0KKyAgICA8L2VDbGFzc2lmaWVycz4NCisgICAgPGVDbGFzc2lmaWVycyB4c2k6dHlwZT0iZWNvcmU6RUNsYXNzIiBuYW1lPSJBbGxvY2F0ZSIgZVN1cGVyVHlwZXM9IiMvL2Jsb2Nrcy9EaXJlY3RlZFJlbGF0aW9uc2hpcFByb3BlcnR5UGF0aCI+DQorICAgICAgPGVBbm5vdGF0aW9ucyBzb3VyY2U9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvZW1mLzIwMDIvR2VuTW9kZWwiPg0KKyAgICAgICAgPGRldGFpbHMga2V5PSJkb2N1bWVudGF0aW9uIiB2YWx1ZT0iQWxsb2NhdGUgaXMgYSBkZXBlbmRlbmN5IGJhc2VkIG9uIFVNTDo6YWJzdHJhY3Rpb24uIEl0IGlzIGEgbWVjaGFuaXNtIGZvciBhc3NvY2lhdGluZyBlbGVtZW50cyBvZiBkaWZmZXJlbnQgdHlwZXMsIG9yIGluIGRpZmZlcmVudCBoaWVyYXJjaGllcywgYXQgYW4gYWJzdHJhY3QgbGV2ZWwuIEFsbG9jYXRlIGlzIHVzZWQgZm9yIGFzc2Vzc2luZyB1c2VyIG1vZGVsIGNvbnNpc3RlbmN5IGFuZCBkaXJlY3RpbmcgZnV0dXJlIGRlc2lnbiBhY3Rpdml0eS4gSXQgaXMgZXhwZWN0ZWQgdGhhdCBhbiDCq2FsbG9jYXRlwrsgcmVsYXRpb25zaGlwIGJldHdlZW4gbW9kZWwgZWxlbWVudHMgaXMgYSBwcmVjdXJzb3IgdG8gYSBtb3JlIGNvbmNyZXRlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIHRoZSBlbGVtZW50cywgdGhlaXIgcHJvcGVydGllcywgb3BlcmF0aW9ucywgYXR0cmlidXRlcywgb3Igc3ViLWNsYXNzZXMuIi8+DQorICAgICAgPC9lQW5ub3RhdGlvbnM+DQorICAgICAgPGVPcGVyYXRpb25zIG5hbWU9ImdldEFsbG9jYXRlZEZyb20iIG9yZGVyZWQ9ImZhbHNlIiBsb3dlckJvdW5kPSIxIiB1cHBlckJvdW5kPSItMSINCisgICAgICAgICAgZVR5cGU9ImVjb3JlOkVDbGFzcyAuLi8uLi9vcmcuZWNsaXBzZS51bWwyLnVtbC9tb2RlbC9VTUwuZWNvcmUjLy9OYW1lZEVsZW1lbnQiPg0KKyAgICAgICAgPGVQYXJhbWV0ZXJzIG5hbWU9InJlZiIgb3JkZXJlZD0iZmFsc2UiIGxvd2VyQm91bmQ9IjEiIGVUeXBlPSJlY29yZTpFQ2xhc3MgLi4vLi4vb3JnLmVjbGlwc2UudW1sMi51bWwvbW9kZWwvVU1MLmVjb3JlIy8vTmFtZWRFbGVtZW50Ii8+DQorICAgICAgPC9lT3BlcmF0aW9ucz4NCisgICAgICA8ZU9wZXJhdGlvbnMgbmFtZT0iZ2V0QWxsb2NhdGVkVG8iIG9yZGVyZWQ9ImZhbHNlIiBsb3dlckJvdW5kPSIxIiB1cHBlckJvdW5kPSItMSINCisgICAgICAgICAgZVR5cGU9ImVjb3JlOkVDbGFzcyAuLi8uLi9vcmcuZWNsaXBzZS51bWwyLnVtbC9tb2RlbC9VTUwuZWNvcmUjLy9OYW1lZEVsZW1lbnQiPg0KKyAgICAgICAgPGVQYXJhbWV0ZXJzIG5hbWU9InJlZiIgb3JkZXJlZD0iZmFsc2UiIGxvd2VyQm91bmQ9IjEiIGVUeXBlPSJlY29yZTpFQ2xhc3MgLi4vLi4vb3JnLmVjbGlwc2UudW1sMi51bWwvbW9kZWwvVU1MLmVjb3JlIy8vTmFtZWRFbGVtZW50Ii8+DQorICAgICAgPC9lT3BlcmF0aW9ucz4NCisgICAgICA8ZVN0cnVjdHVyYWxGZWF0dXJlcyB4c2k6dHlwZT0iZWNvcmU6RVJlZmVyZW5jZSIgbmFtZT0iYmFzZV9BYnN0cmFjdGlvbiIgb3JkZXJlZD0iZmFsc2UiDQorICAgICAgICAgIGVUeXBlPSJlY29yZTpFQ2xhc3MgLi4vLi4vb3JnLmVjbGlwc2UudW1sMi51bWwvbW9kZWwvVU1MLmVjb3JlIy8vQWJzdHJhY3Rpb24iLz4NCisgICAgPC9lQ2xhc3NpZmllcnM+DQorICA8L2VTdWJwYWNrYWdlcz4NCisgIDxlU3VicGFja2FnZXMgbmFtZT0icmVxdWlyZW1lbnRzIiBuc1VSST0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9wYXB5cnVzLzEuNC9TeXNNTC9SZXF1aXJlbWVudHMiDQorICAgICAgbnNQcmVmaXg9IlJlcXVpcmVtZW50cyI+DQorICAgIDxlQW5ub3RhdGlvbnMgc291cmNlPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3VtbDIvMi4wLjAvVU1MIj4NCisgICAgICA8ZGV0YWlscyBrZXk9Im9yaWdpbmFsTmFtZSIgdmFsdWU9IlJlcXVpcmVtZW50cyIvPg0KKyAgICA8L2VBbm5vdGF0aW9ucz4NCisgICAgPGVDbGFzc2lmaWVycyB4c2k6dHlwZT0iZWNvcmU6RUNsYXNzIiBuYW1lPSJEZXJpdmVSZXF0IiBlU3VwZXJUeXBlcz0iIy8vcmVxdWlyZW1lbnRzL1RyYWNlIj4NCisgICAgICA8ZUFubm90YXRpb25zIHNvdXJjZT0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9lbWYvMjAwMi9HZW5Nb2RlbCI+DQorICAgICAgICA8ZGV0YWlscyBrZXk9ImRvY3VtZW50YXRpb24iIHZhbHVlPSJBIERlcml2ZVJlcXQgcmVsYXRpb25zaGlwIGlzIGEgZGVwZW5kZW5jeSBiZXR3ZWVuIHR3byByZXF1aXJlbWVudHMgaW4gd2hpY2ggYSBjbGllbnQgcmVxdWlyZW1lbnQgY2FuIGJlIGRlcml2ZWQgZnJvbSB0aGUgc3VwcGxpZXIgcmVxdWlyZW1lbnQuIEFzIHdpdGggb3RoZXIgZGVwZW5kZW5jaWVzLCB0aGUgYXJyb3cgZGlyZWN0aW9uIHBvaW50cyBmcm9tIHRoZSBkZXJpdmVkIChjbGllbnQpIHJlcXVpcmVtZW50IHRvIHRoZSAoc3VwcGxpZXIpIHJlcXVpcmVtZW50IGZyb20gd2hpY2ggaXQgaXMgZGVyaXZlZC4iLz4NCisgICAgICA8L2VBbm5vdGF0aW9ucz4NCisgICAgPC9lQ2xhc3NpZmllcnM+DQorICAgIDxlQ2xhc3NpZmllcnMgeHNpOnR5cGU9ImVjb3JlOkVDbGFzcyIgbmFtZT0iVHJhY2UiIGVTdXBlclR5cGVzPSIjLy9ibG9ja3MvRGlyZWN0ZWRSZWxhdGlvbnNoaXBQcm9wZXJ0eVBhdGggLi4vLi4vb3JnLmVjbGlwc2UudW1sMi51bWwucHJvZmlsZS5zdGFuZGFyZC9tb2RlbC9TdGFuZGFyZC5lY29yZSMvL1RyYWNlIj4NCisgICAgICA8ZU9wZXJhdGlvbnMgbmFtZT0iZ2V0VHJhY2VkRnJvbSIgb3JkZXJlZD0iZmFsc2UiIGxvd2VyQm91bmQ9IjEiIHVwcGVyQm91bmQ9Ii0xIg0KKyAgICAgICAgICBlVHlwZT0iIy8vcmVxdWlyZW1lbnRzL1JlcXVpcmVtZW50Ij4NCisgICAgICAgIDxlUGFyYW1ldGVycyBuYW1lPSJyZWYiIG9yZGVyZWQ9ImZhbHNlIiBsb3dlckJvdW5kPSIxIiBlVHlwZT0iZWNvcmU6RUNsYXNzIC4uLy4uL29yZy5lY2xpcHNlLnVtbDIudW1sL21vZGVsL1VNTC5lY29yZSMvL05hbWVkRWxlbWVudCIvPg0KKyAgICAgIDwvZU9wZXJhdGlvbnM+DQorICAgIDwvZUNsYXNzaWZpZXJzPg0KKyAgICA8ZUNsYXNzaWZpZXJzIHhzaTp0eXBlPSJlY29yZTpFQ2xhc3MiIG5hbWU9IlJlcXVpcmVtZW50Ij4NCisgICAgICA8ZUFubm90YXRpb25zIHNvdXJjZT0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9lbWYvMjAwMi9HZW5Nb2RlbCI+DQorICAgICAgICA8ZGV0YWlscyBrZXk9ImRvY3VtZW50YXRpb24iIHZhbHVlPSJBIHJlcXVpcmVtZW50IHNwZWNpZmllcyBhIGNhcGFiaWxpdHkgb3IgY29uZGl0aW9uIHRoYXQgbXVzdCAob3Igc2hvdWxkKSBiZSBzYXRpc2ZpZWQuIEEgcmVxdWlyZW1lbnQgbWF5IHNwZWNpZnkgYSBmdW5jdGlvbiB0aGF0IGEgc3lzdGVtIG11c3QgcGVyZm9ybSBvciBhIHBlcmZvcm1hbmNlIGNvbmRpdGlvbiB0aGF0IGEgc3lzdGVtIG11c3Qgc2F0aXNmeS4gUmVxdWlyZW1lbnRzIGFyZSB1c2VkIHRvIGVzdGFibGlzaCBhIGNvbnRyYWN0IGJldHdlZW4gdGhlIGN1c3RvbWVyIChvciBvdGhlciBzdGFrZWhvbGRlcikgYW5kIHRob3NlIHJlc3BvbnNpYmxlIGZvciBkZXNpZ25pbmcgYW5kIGltcGxlbWVudGluZyB0aGUgc3lzdGVtLiIvPg0KKyAgICAgIDwvZUFubm90YXRpb25zPg0KKyAgICAgIDxlU3RydWN0dXJhbEZlYXR1cmVzIHhzaTp0eXBlPSJlY29yZTpFUmVmZXJlbmNlIiBuYW1lPSJiYXNlX0NsYXNzIiBvcmRlcmVkPSJmYWxzZSINCisgICAgICAgICAgZVR5cGU9ImVjb3JlOkVDbGFzcyAuLi8uLi9vcmcuZWNsaXBzZS51bWwyLnVtbC9tb2RlbC9VTUwuZWNvcmUjLy9DbGFzcyIvPg0KKyAgICAgIDxlU3RydWN0dXJhbEZlYXR1cmVzIHhzaTp0eXBlPSJlY29yZTpFQXR0cmlidXRlIiBuYW1lPSJ0ZXh0IiBvcmRlcmVkPSJmYWxzZSINCisgICAgICAgICAgbG93ZXJCb3VuZD0iMSIgZVR5cGU9ImVjb3JlOkVEYXRhVHlwZSAuLi8uLi9vcmcuZWNsaXBzZS51bWwyLnR5cGVzL21vZGVsL1R5cGVzLmVjb3JlIy8vU3RyaW5nIg0KKyAgICAgICAgICBkZWZhdWx0VmFsdWVMaXRlcmFsPSIiPg0KKyAgICAgICAgPGVBbm5vdGF0aW9ucyBzb3VyY2U9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvZW1mLzIwMDIvR2VuTW9kZWwiPg0KKyAgICAgICAgICA8ZGV0YWlscyBrZXk9ImRvY3VtZW50YXRpb24iIHZhbHVlPSJUaGUgdGV4dHVhbCByZXByZXNlbnRhdGlvbiBvciBhIHJlZmVyZW5jZSB0byB0aGUgdGV4dHVhbCByZXByZXNlbnRhdGlvbiBvZiB0aGUgcmVxdWlyZW1lbnQuIi8+DQorICAgICAgICA8L2VBbm5vdGF0aW9ucz4NCisgICAgICA8L2VTdHJ1Y3R1cmFsRmVhdHVyZXM+DQorICAgICAgPGVTdHJ1Y3R1cmFsRmVhdHVyZXMgeHNpOnR5cGU9ImVjb3JlOkVBdHRyaWJ1dGUiIG5hbWU9ImlkIiBvcmRlcmVkPSJmYWxzZSIgbG93ZXJCb3VuZD0iMSINCisgICAgICAgICAgZVR5cGU9ImVjb3JlOkVEYXRhVHlwZSAuLi8uLi9vcmcuZWNsaXBzZS51bWwyLnR5cGVzL21vZGVsL1R5cGVzLmVjb3JlIy8vU3RyaW5nIg0KKyAgICAgICAgICBkZWZhdWx0VmFsdWVMaXRlcmFsPSIiPg0KKyAgICAgICAgPGVBbm5vdGF0aW9ucyBzb3VyY2U9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvZW1mLzIwMDIvR2VuTW9kZWwiPg0KKyAgICAgICAgICA8ZGV0YWlscyBrZXk9ImRvY3VtZW50YXRpb24iIHZhbHVlPSJUaGUgdW5pcXVlIGlkIG9mIHRoZSByZXF1aXJlbWVudC4iLz4NCisgICAgICAgIDwvZUFubm90YXRpb25zPg0KKyAgICAgIDwvZVN0cnVjdHVyYWxGZWF0dXJlcz4NCisgICAgICA8ZVN0cnVjdHVyYWxGZWF0dXJlcyB4c2k6dHlwZT0iZWNvcmU6RVJlZmVyZW5jZSIgbmFtZT0iZGVyaXZlZCIgb3JkZXJlZD0iZmFsc2UiDQorICAgICAgICAgIHVwcGVyQm91bmQ9Ii0xIiBlVHlwZT0iIy8vcmVxdWlyZW1lbnRzL1JlcXVpcmVtZW50IiB2b2xhdGlsZT0idHJ1ZSIgdHJhbnNpZW50PSJ0cnVlIg0KKyAgICAgICAgICBkZXJpdmVkPSJ0cnVlIj4NCisgICAgICAgIDxlQW5ub3RhdGlvbnMgc291cmNlPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2VtZi8yMDAyL0dlbk1vZGVsIj4NCisgICAgICAgICAgPGRldGFpbHMga2V5PSJkb2N1bWVudGF0aW9uIiB2YWx1ZT0iRGVyaXZlZCBmcm9tIGFsbCByZXF1aXJlbWVudHMgdGhhdCBhcmUgdGhlIGNsaWVudCBvZiBhIMKrZGVyaXZlUmVxdMK7IHJlbGF0aW9uc2hpcCBmb3Igd2hpY2ggdGhpcyByZXF1aXJlbWVudCBpcyBhIHN1cHBsaWVyLiIvPg0KKyAgICAgICAgPC9lQW5ub3RhdGlvbnM+DQorICAgICAgPC9lU3RydWN0dXJhbEZlYXR1cmVzPg0KKyAgICAgIDxlU3RydWN0dXJhbEZlYXR1cmVzIHhzaTp0eXBlPSJlY29yZTpFUmVmZXJlbmNlIiBuYW1lPSJkZXJpdmVkRnJvbSIgb3JkZXJlZD0iZmFsc2UiDQorICAgICAgICAgIHVwcGVyQm91bmQ9Ii0xIiBlVHlwZT0iIy8vcmVxdWlyZW1lbnRzL1JlcXVpcmVtZW50IiB2b2xhdGlsZT0idHJ1ZSIgdHJhbnNpZW50PSJ0cnVlIg0KKyAgICAgICAgICBkZXJpdmVkPSJ0cnVlIj4NCisgICAgICAgIDxlQW5ub3RhdGlvbnMgc291cmNlPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2VtZi8yMDAyL0dlbk1vZGVsIj4NCisgICAgICAgICAgPGRldGFpbHMga2V5PSJkb2N1bWVudGF0aW9uIiB2YWx1ZT0iRGVyaXZlZCBmcm9tIGFsbCByZXF1aXJlbWVudHMgdGhhdCBhcmUgdGhlIHN1cHBsaWVyIG9mIGEgwqtkZXJpdmVSZXF0wrsgcmVsYXRpb25zaGlwIGZvciB3aGljaCB0aGlzIHJlcXVpcmVtZW50IGlzIGEgY2xpZW50LiIvPg0KKyAgICAgICAgPC9lQW5ub3RhdGlvbnM+DQorICAgICAgPC9lU3RydWN0dXJhbEZlYXR1cmVzPg0KKyAgICAgIDxlU3RydWN0dXJhbEZlYXR1cmVzIHhzaTp0eXBlPSJlY29yZTpFUmVmZXJlbmNlIiBuYW1lPSJzYXRpc2ZpZWRCeSIgb3JkZXJlZD0iZmFsc2UiDQorICAgICAgICAgIHVwcGVyQm91bmQ9Ii0xIiBlVHlwZT0iZWNvcmU6RUNsYXNzIC4uLy4uL29yZy5lY2xpcHNlLnVtbDIudW1sL21vZGVsL1VNTC5lY29yZSMvL05hbWVkRWxlbWVudCINCisgICAgICAgICAgdm9sYXRpbGU9InRydWUiIHRyYW5zaWVudD0idHJ1ZSIgZGVyaXZlZD0idHJ1ZSI+DQorICAgICAgICA8ZUFubm90YXRpb25zIHNvdXJjZT0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9lbWYvMjAwMi9HZW5Nb2RlbCI+DQorICAgICAgICAgIDxkZXRhaWxzIGtleT0iZG9jdW1lbnRhdGlvbiIgdmFsdWU9IkRlcml2ZWQgZnJvbSBhbGwgZWxlbWVudHMgdGhhdCBhcmUgdGhlIGNsaWVudCBvZiBhIMKrc2F0aXNmecK7IHJlbGF0aW9uc2hpcCBmb3Igd2hpY2ggdGhpcyByZXF1aXJlbWVudCBpcyBhIHN1cHBsaWVyLiIvPg0KKyAgICAgICAgPC9lQW5ub3RhdGlvbnM+DQorICAgICAgPC9lU3RydWN0dXJhbEZlYXR1cmVzPg0KKyAgICAgIDxlU3RydWN0dXJhbEZlYXR1cmVzIHhzaTp0eXBlPSJlY29yZTpFUmVmZXJlbmNlIiBuYW1lPSJyZWZpbmVkQnkiIG9yZGVyZWQ9ImZhbHNlIg0KKyAgICAgICAgICB1cHBlckJvdW5kPSItMSIgZVR5cGU9ImVjb3JlOkVDbGFzcyAuLi8uLi9vcmcuZWNsaXBzZS51bWwyLnVtbC9tb2RlbC9VTUwuZWNvcmUjLy9OYW1lZEVsZW1lbnQiDQorICAgICAgICAgIHZvbGF0aWxlPSJ0cnVlIiB0cmFuc2llbnQ9InRydWUiIGRlcml2ZWQ9InRydWUiPg0KKyAgICAgICAgPGVBbm5vdGF0aW9ucyBzb3VyY2U9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvZW1mLzIwMDIvR2VuTW9kZWwiPg0KKyAgICAgICAgICA8ZGV0YWlscyBrZXk9ImRvY3VtZW50YXRpb24iIHZhbHVlPSJEZXJpdmVkIGZyb20gYWxsIGVsZW1lbnRzIHRoYXQgYXJlIHRoZSBjbGllbnQgb2YgYSDCq3JlZmluZcK7IHJlbGF0aW9uc2hpcCBmb3Igd2hpY2ggdGhpcyByZXF1aXJlbWVudCBpcyBhIHN1cHBsaWVyLiIvPg0KKyAgICAgICAgPC9lQW5ub3RhdGlvbnM+DQorICAgICAgPC9lU3RydWN0dXJhbEZlYXR1cmVzPg0KKyAgICAgIDxlU3RydWN0dXJhbEZlYXR1cmVzIHhzaTp0eXBlPSJlY29yZTpFUmVmZXJlbmNlIiBuYW1lPSJ0cmFjZWRUbyIgb3JkZXJlZD0iZmFsc2UiDQorICAgICAgICAgIHVwcGVyQm91bmQ9Ii0xIiBlVHlwZT0iZWNvcmU6RUNsYXNzIC4uLy4uL29yZy5lY2xpcHNlLnVtbDIudW1sL21vZGVsL1VNTC5lY29yZSMvL05hbWVkRWxlbWVudCINCisgICAgICAgICAgdm9sYXRpbGU9InRydWUiIHRyYW5zaWVudD0idHJ1ZSIgZGVyaXZlZD0idHJ1ZSI+DQorICAgICAgICA8ZUFubm90YXRpb25zIHNvdXJjZT0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9lbWYvMjAwMi9HZW5Nb2RlbCI+DQorICAgICAgICAgIDxkZXRhaWxzIGtleT0iZG9jdW1lbnRhdGlvbiIgdmFsdWU9IkRlcml2ZWQgZnJvbSBhbGwgZWxlbWVudHMgdGhhdCBhcmUgdGhlIGNsaWVudCBvZiBhIMKrdHJhY2XCuyByZWxhdGlvbnNoaXAgZm9yIHdoaWNoIHRoaXMgcmVxdWlyZW1lbnQgaXMgYSBzdXBwbGllci4iLz4NCisgICAgICAgIDwvZUFubm90YXRpb25zPg0KKyAgICAgIDwvZVN0cnVjdHVyYWxGZWF0dXJlcz4NCisgICAgICA8ZVN0cnVjdHVyYWxGZWF0dXJlcyB4c2k6dHlwZT0iZWNvcmU6RVJlZmVyZW5jZSIgbmFtZT0idmVyaWZpZWRCeSIgb3JkZXJlZD0iZmFsc2UiDQorICAgICAgICAgIHVwcGVyQm91bmQ9Ii0xIiBlVHlwZT0iZWNvcmU6RUNsYXNzIC4uLy4uL29yZy5lY2xpcHNlLnVtbDIudW1sL21vZGVsL1VNTC5lY29yZSMvL05hbWVkRWxlbWVudCINCisgICAgICAgICAgdm9sYXRpbGU9InRydWUiIHRyYW5zaWVudD0idHJ1ZSIgZGVyaXZlZD0idHJ1ZSI+DQorICAgICAgICA8ZUFubm90YXRpb25zIHNvdXJjZT0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9lbWYvMjAwMi9HZW5Nb2RlbCI+DQorICAgICAgICAgIDxkZXRhaWxzIGtleT0iZG9jdW1lbnRhdGlvbiIgdmFsdWU9IkRlcml2ZWQgZnJvbSBhbGwgZWxlbWVudHMgdGhhdCBhcmUgdGhlIGNsaWVudCBvZiBhIMKrdmVyaWZ5wrsgcmVsYXRpb25zaGlwIGZvciB3aGljaCB0aGlzIHJlcXVpcmVtZW50IGlzIGEgc3VwcGxpZXIuIi8+DQorICAgICAgICA8L2VBbm5vdGF0aW9ucz4NCisgICAgICA8L2VTdHJ1Y3R1cmFsRmVhdHVyZXM+DQorICAgICAgPGVTdHJ1Y3R1cmFsRmVhdHVyZXMgeHNpOnR5cGU9ImVjb3JlOkVSZWZlcmVuY2UiIG5hbWU9Im1hc3RlciIgb3JkZXJlZD0iZmFsc2UiDQorICAgICAgICAgIGVUeXBlPSIjLy9yZXF1aXJlbWVudHMvUmVxdWlyZW1lbnQiIHZvbGF0aWxlPSJ0cnVlIiB0cmFuc2llbnQ9InRydWUiIGRlcml2ZWQ9InRydWUiPg0KKyAgICAgICAgPGVBbm5vdGF0aW9ucyBzb3VyY2U9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvZW1mLzIwMDIvR2VuTW9kZWwiPg0KKyAgICAgICAgICA8ZGV0YWlscyBrZXk9ImRvY3VtZW50YXRpb24iIHZhbHVlPSJUaGlzIGlzIGEgZGVyaXZlZCBwcm9wZXJ0eSB0aGF0IGxpc3RzIHRoZSBtYXN0ZXIgcmVxdWlyZW1lbnQgZm9yIHRoaXMgc2xhdmUgcmVxdWlyZW1lbnQuIFRoZSBtYXN0ZXIgYXR0cmlidXRlIGlzIGRlcml2ZWQgZnJvbSB0aGUgc3VwcGxpZXIgb2YgdGhlIENvcHkgZGVwZW5kZW5jeSB0aGF0IGhhcyB0aGlzIHJlcXVpcmVtZW50IGFzIHRoZSBzbGF2ZS4iLz4NCisgICAgICAgIDwvZUFubm90YXRpb25zPg0KKyAgICAgIDwvZVN0cnVjdHVyYWxGZWF0dXJlcz4NCisgICAgPC9lQ2xhc3NpZmllcnM+DQorICAgIDxlQ2xhc3NpZmllcnMgeHNpOnR5cGU9ImVjb3JlOkVDbGFzcyIgbmFtZT0iQ29weSIgZVN1cGVyVHlwZXM9IiMvL3JlcXVpcmVtZW50cy9UcmFjZSI+DQorICAgICAgPGVBbm5vdGF0aW9ucyBzb3VyY2U9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvZW1mLzIwMDIvR2VuTW9kZWwiPg0KKyAgICAgICAgPGRldGFpbHMga2V5PSJkb2N1bWVudGF0aW9uIiB2YWx1ZT0iQSBDb3B5IHJlbGF0aW9uc2hpcCBpcyBhIGRlcGVuZGVuY3kgYmV0d2VlbiBhIHN1cHBsaWVyIHJlcXVpcmVtZW50IGFuZCBhIGNsaWVudCByZXF1aXJlbWVudCB0aGF0IHNwZWNpZmllcyB0aGF0IHRoZSB0ZXh0IG9mIHRoZSBjbGllbnQgcmVxdWlyZW1lbnQgaXMgYSByZWFkLW9ubHkgY29weSBvZiB0aGUgdGV4dCBvZiB0aGUgc3VwcGxpZXIgcmVxdWlyZW1lbnQuIi8+DQorICAgICAgPC9lQW5ub3RhdGlvbnM+DQorICAgIDwvZUNsYXNzaWZpZXJzPg0KKyAgICA8ZUNsYXNzaWZpZXJzIHhzaTp0eXBlPSJlY29yZTpFQ2xhc3MiIG5hbWU9IlNhdGlzZnkiIGVTdXBlclR5cGVzPSIjLy9yZXF1aXJlbWVudHMvVHJhY2UiPg0KKyAgICAgIDxlQW5ub3RhdGlvbnMgc291cmNlPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2VtZi8yMDAyL0dlbk1vZGVsIj4NCisgICAgICAgIDxkZXRhaWxzIGtleT0iZG9jdW1lbnRhdGlvbiIgdmFsdWU9IkEgU2F0aXNmeSByZWxhdGlvbnNoaXAgaXMgYSBkZXBlbmRlbmN5IGJldHdlZW4gYSByZXF1aXJlbWVudCBhbmQgYSBtb2RlbCBlbGVtZW50IHRoYXQgZnVsZmlsbHMgdGhlIHJlcXVpcmVtZW50LiBBcyB3aXRoIG90aGVyIGRlcGVuZGVuY2llcywgdGhlIGFycm93IGRpcmVjdGlvbiBwb2ludHMgZnJvbSB0aGUgc2F0aXNmeWluZyAoY2xpZW50KSBtb2RlbCBlbGVtZW50IHRvIHRoZSAoc3VwcGxpZXIpIHJlcXVpcmVtZW50IHRoYXQgaXMgc2F0aXNmaWVkLiIvPg0KKyAgICAgIDwvZUFubm90YXRpb25zPg0KKyAgICAgIDxlT3BlcmF0aW9ucyBuYW1lPSJnZXRTYXRpc2ZpZXMiIG9yZGVyZWQ9ImZhbHNlIiBsb3dlckJvdW5kPSIxIiB1cHBlckJvdW5kPSItMSINCisgICAgICAgICAgZVR5cGU9IiMvL3JlcXVpcmVtZW50cy9SZXF1aXJlbWVudCI+DQorICAgICAgICA8ZVBhcmFtZXRlcnMgbmFtZT0icmVmIiBvcmRlcmVkPSJmYWxzZSIgbG93ZXJCb3VuZD0iMSIgZVR5cGU9ImVjb3JlOkVDbGFzcyAuLi8uLi9vcmcuZWNsaXBzZS51bWwyLnVtbC9tb2RlbC9VTUwuZWNvcmUjLy9OYW1lZEVsZW1lbnQiLz4NCisgICAgICA8L2VPcGVyYXRpb25zPg0KKyAgICA8L2VDbGFzc2lmaWVycz4NCisgICAgPGVDbGFzc2lmaWVycyB4c2k6dHlwZT0iZWNvcmU6RUNsYXNzIiBuYW1lPSJUZXN0Q2FzZSI+DQorICAgICAgPGVBbm5vdGF0aW9ucyBzb3VyY2U9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvZW1mLzIwMDIvR2VuTW9kZWwiPg0KKyAgICAgICAgPGRldGFpbHMga2V5PSJkb2N1bWVudGF0aW9uIiB2YWx1ZT0iQSB0ZXN0IGNhc2UgaXMgYSBtZXRob2QgZm9yIHZlcmlmeWluZyBhIHJlcXVpcmVtZW50IGlzIHNhdGlzZmllZC4iLz4NCisgICAgICA8L2VBbm5vdGF0aW9ucz4NCisgICAgICA8ZVN0cnVjdHVyYWxGZWF0dXJlcyB4c2k6dHlwZT0iZWNvcmU6RVJlZmVyZW5jZSIgbmFtZT0iYmFzZV9PcGVyYXRpb24iIG9yZGVyZWQ9ImZhbHNlIg0KKyAgICAgICAgICBlVHlwZT0iZWNvcmU6RUNsYXNzIC4uLy4uL29yZy5lY2xpcHNlLnVtbDIudW1sL21vZGVsL1VNTC5lY29yZSMvL09wZXJhdGlvbiIvPg0KKyAgICAgIDxlU3RydWN0dXJhbEZlYXR1cmVzIHhzaTp0eXBlPSJlY29yZTpFUmVmZXJlbmNlIiBuYW1lPSJiYXNlX0JlaGF2aW9yIiBvcmRlcmVkPSJmYWxzZSINCisgICAgICAgICAgZVR5cGU9ImVjb3JlOkVDbGFzcyAuLi8uLi9vcmcuZWNsaXBzZS51bWwyLnVtbC9tb2RlbC9VTUwuZWNvcmUjLy9CZWhhdmlvciIvPg0KKyAgICA8L2VDbGFzc2lmaWVycz4NCisgICAgPGVDbGFzc2lmaWVycyB4c2k6dHlwZT0iZWNvcmU6RUNsYXNzIiBuYW1lPSJWZXJpZnkiIGVTdXBlclR5cGVzPSIjLy9yZXF1aXJlbWVudHMvVHJhY2UiPg0KKyAgICAgIDxlQW5ub3RhdGlvbnMgc291cmNlPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2VtZi8yMDAyL0dlbk1vZGVsIj4NCisgICAgICAgIDxkZXRhaWxzIGtleT0iZG9jdW1lbnRhdGlvbiIgdmFsdWU9IkEgVmVyaWZ5IHJlbGF0aW9uc2hpcCBpcyBhIGRlcGVuZGVuY3kgYmV0d2VlbiBhIHJlcXVpcmVtZW50IGFuZCBhIHRlc3QgY2FzZSBvciBvdGhlciBtb2RlbCBlbGVtZW50IHRoYXQgY2FuIGRldGVybWluZSB3aGV0aGVyIGEgc3lzdGVtIGZ1bGZpbGxzIHRoZSByZXF1aXJlbWVudC4gQXMgd2l0aCBvdGhlciBkZXBlbmRlbmNpZXMsIHRoZSBhcnJvdyBkaXJlY3Rpb24gcG9pbnRzIGZyb20gdGhlIChjbGllbnQpIGVsZW1lbnQgdG8gdGhlIChzdXBwbGllcikgcmVxdWlyZW1lbnQuIi8+DQorICAgICAgPC9lQW5ub3RhdGlvbnM+DQorICAgICAgPGVPcGVyYXRpb25zIG5hbWU9ImdldFZlcmlmaWVzIiBvcmRlcmVkPSJmYWxzZSIgbG93ZXJCb3VuZD0iMSIgdXBwZXJCb3VuZD0iLTEiDQorICAgICAgICAgIGVUeXBlPSIjLy9yZXF1aXJlbWVudHMvUmVxdWlyZW1lbnQiPg0KKyAgICAgICAgPGVQYXJhbWV0ZXJzIG5hbWU9InJlZiIgb3JkZXJlZD0iZmFsc2UiIGxvd2VyQm91bmQ9IjEiIGVUeXBlPSJlY29yZTpFQ2xhc3MgLi4vLi4vb3JnLmVjbGlwc2UudW1sMi51bWwvbW9kZWwvVU1MLmVjb3JlIy8vTmFtZWRFbGVtZW50Ii8+DQorICAgICAgPC9lT3BlcmF0aW9ucz4NCisgICAgPC9lQ2xhc3NpZmllcnM+DQorICAgIDxlQ2xhc3NpZmllcnMgeHNpOnR5cGU9ImVjb3JlOkVDbGFzcyIgbmFtZT0iUmVmaW5lIiBlU3VwZXJUeXBlcz0iIy8vYmxvY2tzL0RpcmVjdGVkUmVsYXRpb25zaGlwUHJvcGVydHlQYXRoIC4uLy4uL29yZy5lY2xpcHNlLnVtbDIudW1sLnByb2ZpbGUuc3RhbmRhcmQvbW9kZWwvU3RhbmRhcmQuZWNvcmUjLy9SZWZpbmUiPg0KKyAgICAgIDxlT3BlcmF0aW9ucyBuYW1lPSJnZXRSZWZpbmVzIiBvcmRlcmVkPSJmYWxzZSIgbG93ZXJCb3VuZD0iMSIgdXBwZXJCb3VuZD0iLTEiDQorICAgICAgICAgIGVUeXBlPSIjLy9yZXF1aXJlbWVudHMvUmVxdWlyZW1lbnQiPg0KKyAgICAgICAgPGVQYXJhbWV0ZXJzIG5hbWU9InJlZiIgb3JkZXJlZD0iZmFsc2UiIGxvd2VyQm91bmQ9IjEiIGVUeXBlPSJlY29yZTpFQ2xhc3MgLi4vLi4vb3JnLmVjbGlwc2UudW1sMi51bWwvbW9kZWwvVU1MLmVjb3JlIy8vTmFtZWRFbGVtZW50Ii8+DQorICAgICAgPC9lT3BlcmF0aW9ucz4NCisgICAgPC9lQ2xhc3NpZmllcnM+DQorICA8L2VTdWJwYWNrYWdlcz4NCisgIDxlU3VicGFja2FnZXMgbmFtZT0iZGVwcmVjYXRlZGVsZW1lbnRzIiBuc1VSST0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9wYXB5cnVzLzEuNC9TeXNNTC9EZXByZWNhdGVkRWxlbWVudHMiDQorICAgICAgbnNQcmVmaXg9IkRlcHJlY2F0ZWRFbGVtZW50cyI+DQorICAgIDxlQW5ub3RhdGlvbnMgc291cmNlPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3VtbDIvMi4wLjAvVU1MIj4NCisgICAgICA8ZGV0YWlscyBrZXk9Im9yaWdpbmFsTmFtZSIgdmFsdWU9IkRlcHJlY2F0ZWRFbGVtZW50cyIvPg0KKyAgICA8L2VBbm5vdGF0aW9ucz4NCisgICAgPGVDbGFzc2lmaWVycyB4c2k6dHlwZT0iZWNvcmU6RUNsYXNzIiBuYW1lPSJGbG93UG9ydCI+DQorICAgICAgPGVBbm5vdGF0aW9ucyBzb3VyY2U9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvZW1mLzIwMDIvR2VuTW9kZWwiPg0KKyAgICAgICAgPGRldGFpbHMga2V5PSJkb2N1bWVudGF0aW9uIiB2YWx1ZT0iQSBGbG93UG9ydCBpcyBhbiBpbnRlcmFjdGlvbiBwb2ludCB0aHJvdWdoIHdoaWNoIGlucHV0IGFuZC9vciBvdXRwdXQgb2YgaXRlbXMgc3VjaCBhcyBkYXRhLCBtYXRlcmlhbCwgb3IgZW5lcmd5IG1heSBmbG93LiBUaGlzIGVuYWJsZXMgdGhlIG93bmluZyBibG9jayB0byBkZWNsYXJlIHdoaWNoIGl0ZW1zIGl0IG1heSBleGNoYW5nZSB3aXRoIGl0cyBlbnZpcm9ubWVudCBhbmQgdGhlIGludGVyYWN0aW9uIHBvaW50cyB0aHJvdWdoIHdoaWNoIHRoZSBleGNoYW5nZSBpcyBtYWRlLiBXZSBkaXN0aW5ndWlzaCBiZXR3ZWVuIGF0b21pYyBmbG93IHBvcnQgYW5kIGEgbm9uYXRvbWljIGZsb3cgcG9ydC4gQXRvbWljIGZsb3cgcG9ydHMgcmVsYXkgaXRlbXMgdGhhdCBhcmUgY2xhc3NpZmllZCBieSBhIHNpbmdsZSBCbG9jaywgVmFsdWVUeXBlLCBEYXRhVHlwZSwgb3IgU2lnbmFsIGNsYXNzaWZpZXIuIEEgbm9uYXRvbWljIGZsb3cgcG9ydCByZWxheXMgaXRlbXMgb2Ygc2V2ZXJhbCB0eXBlcyBhcyBzcGVjaWZpZWQgYnkgYSBGbG93U3BlY2lmaWNhdGlvbi4gRmxvdyBwb3J0cyBhbmQgYXNzb2NpYXRlZCBmbG93IHNwZWNpZmljYXRpb25zIGRlZmluZSDigJx3aGF0IGNhbiBmbG934oCdIGJldHdlZW4gdGhlIGJsb2NrIGFuZCBpdHMgZW52aXJvbm1lbnQsIHdoZXJlYXMgaXRlbSBmbG93cyBzcGVjaWZ5IOKAnHdoYXQgZG9lcyBmbG934oCdIGluIGEgc3BlY2lmaWMgdXNhZ2UgY29udGV4dC4gRmxvdyBwb3J0cyByZWxheSBpdGVtcyB0byB0aGVpciBvd25pbmcgYmxvY2sgb3IgdG8gYSBjb25uZWN0b3IgdGhhdCBjb25uZWN0cyB0aGVtIHdpdGggdGhlaXIgb3duZXLigJlzIGludGVybmFsIHBhcnRzIChpbnRlcm5hbCBjb25uZWN0b3IpLiIvPg0KKyAgICAgIDwvZUFubm90YXRpb25zPg0KKyAgICAgIDxlU3RydWN0dXJhbEZlYXR1cmVzIHhzaTp0eXBlPSJlY29yZTpFUmVmZXJlbmNlIiBuYW1lPSJiYXNlX1BvcnQiIG9yZGVyZWQ9ImZhbHNlIg0KKyAgICAgICAgICBsb3dlckJvdW5kPSIxIiBlVHlwZT0iZWNvcmU6RUNsYXNzIC4uLy4uL29yZy5lY2xpcHNlLnVtbDIudW1sL21vZGVsL1VNTC5lY29yZSMvL1BvcnQiLz4NCisgICAgICA8ZVN0cnVjdHVyYWxGZWF0dXJlcyB4c2k6dHlwZT0iZWNvcmU6RUF0dHJpYnV0ZSIgbmFtZT0iZGlyZWN0aW9uIiBvcmRlcmVkPSJmYWxzZSINCisgICAgICAgICAgbG93ZXJCb3VuZD0iMSIgZVR5cGU9IiMvL3BvcnRhbmRmbG93cy9GbG93RGlyZWN0aW9uIiBkZWZhdWx0VmFsdWVMaXRlcmFsPSJpbm91dCI+DQorICAgICAgICA8ZUFubm90YXRpb25zIHNvdXJjZT0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9lbWYvMjAwMi9HZW5Nb2RlbCI+DQorICAgICAgICAgIDxkZXRhaWxzIGtleT0iZG9jdW1lbnRhdGlvbiIgdmFsdWU9IkluZGljYXRlcyB0aGUgZGlyZWN0aW9uIGluIHdoaWNoIGFuIGF0b21pYyBmbG93IHBvcnQgcmVsYXlzIGl0cyBpdGVtcy4gSWYgdGhlIGRpcmVjdGlvbiBpcyBzZXQgdG8g4oCcaW4s4oCdIHRoZW4gdGhlIGl0ZW1zIGFyZSByZWxheWVkIGZyb20gYW4gZXh0ZXJuYWwgY29ubmVjdG9yIHZpYSB0aGUgZmxvdyBwb3J0IGludG8gdGhlIGZsb3cgcG9ydOKAmXMgb3duZXIgKG9yIG9uZSBvZiBpdHMgcGFydHMpLiBJZiB0aGUgZGlyZWN0aW9uIGlzIHNldCB0byDigJxvdXQs4oCdIHRoZW4gdGhlIGl0ZW1zIGFyZSByZWxheWVkIGZyb20gdGhlIGZsb3cgcG9ydOKAmXMgb3duZXIsIHZpYSB0aGUgZmxvdyBwb3J0LCB0aHJvdWdoIGFuIGV4dGVybmFsIGNvbm5lY3RvciBhdHRhY2hlZCB0byB0aGUgZmxvdyBwb3J0LiBJZiB0aGUgZGlyZWN0aW9uIGlzIHNldCB0byDigJxpbm91dCzigJ0gdGhlbiBpdGVtcyBjYW4gZmxvdyBib3RoIHdheXMuIEJ5IGRlZmF1bHQsIHRoZSB2YWx1ZSBpcyBpbm91dC4iLz4NCisgICAgICAgIDwvZUFubm90YXRpb25zPg0KKyAgICAgIDwvZVN0cnVjdHVyYWxGZWF0dXJlcz4NCisgICAgICA8ZVN0cnVjdHVyYWxGZWF0dXJlcyB4c2k6dHlwZT0iZWNvcmU6RUF0dHJpYnV0ZSIgbmFtZT0iaXNBdG9taWMiIG9yZGVyZWQ9ImZhbHNlIg0KKyAgICAgICAgICBsb3dlckJvdW5kPSIxIiBlVHlwZT0iZWNvcmU6RURhdGFUeXBlIC4uLy4uL29yZy5lY2xpcHNlLnVtbDIudHlwZXMvbW9kZWwvVHlwZXMuZWNvcmUjLy9Cb29sZWFuIg0KKyAgICAgICAgICB2b2xhdGlsZT0idHJ1ZSIgdHJhbnNpZW50PSJ0cnVlIiBkZXJpdmVkPSJ0cnVlIj4NCisgICAgICAgIDxlQW5ub3RhdGlvbnMgc291cmNlPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2VtZi8yMDAyL0dlbk1vZGVsIj4NCisgICAgICAgICAgPGRldGFpbHMga2V5PSJkb2N1bWVudGF0aW9uIiB2YWx1ZT0iVGhpcyBpcyBhIGRlcml2ZWQgYXR0cmlidXRlIChkZXJpdmVkIGZyb20gdGhlIGZsb3cgcG9ydOKAmXMgdHlwZSkuIEZvciBhIGZsb3cgcG9ydCB0eXBlZCBieSBhIGZsb3cgc3BlY2lmaWNhdGlvbiB0aGUgdmFsdWUgb2YgdGhpcyBhdHRyaWJ1dGUgaXMgRmFsc2UsIG90aGVyd2lzZSB0aGUgdmFsdWUgaXMgVHJ1ZS4iLz4NCisgICAgICAgIDwvZUFubm90YXRpb25zPg0KKyAgICAgIDwvZVN0cnVjdHVyYWxGZWF0dXJlcz4NCisgICAgPC9lQ2xhc3NpZmllcnM+DQorICAgIDxlQ2xhc3NpZmllcnMgeHNpOnR5cGU9ImVjb3JlOkVDbGFzcyIgbmFtZT0iRmxvd1NwZWNpZmljYXRpb24iPg0KKyAgICAgIDxlQW5ub3RhdGlvbnMgc291cmNlPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2VtZi8yMDAyL0dlbk1vZGVsIj4NCisgICAgICAgIDxkZXRhaWxzIGtleT0iZG9jdW1lbnRhdGlvbiIgdmFsdWU9IkEgRmxvd1NwZWNpZmljYXRpb24gc3BlY2lmaWVzIGlucHV0cyBhbmQgb3V0cHV0cyBhcyBhIHNldCBvZiBmbG93IHByb3BlcnRpZXMuIEEgZmxvdyBzcGVjaWZpY2F0aW9uIGlzIHVzZWQgYnkgZmxvdyBwb3J0cyB0byBzcGVjaWZ5IHdoYXQgaXRlbXMgY2FuIGZsb3cgdmlhIHRoZSBwb3J0LiIvPg0KKyAgICAgIDwvZUFubm90YXRpb25zPg0KKyAgICAgIDxlU3RydWN0dXJhbEZlYXR1cmVzIHhzaTp0eXBlPSJlY29yZTpFUmVmZXJlbmNlIiBuYW1lPSJiYXNlX0ludGVyZmFjZSIgb3JkZXJlZD0iZmFsc2UiDQorICAgICAgICAgIGxvd2VyQm91bmQ9IjEiIGVUeXBlPSJlY29yZTpFQ2xhc3MgLi4vLi4vb3JnLmVjbGlwc2UudW1sMi51bWwvbW9kZWwvVU1MLmVjb3JlIy8vSW50ZXJmYWNlIi8+DQorICAgIDwvZUNsYXNzaWZpZXJzPg0KKyAgICA8ZUNsYXNzaWZpZXJzIHhzaTp0eXBlPSJlY29yZTpFQ2xhc3MiIG5hbWU9IkFsbG9jYXRlZCI+DQorICAgICAgPGVBbm5vdGF0aW9ucyBzb3VyY2U9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvZW1mLzIwMDIvR2VuTW9kZWwiPg0KKyAgICAgICAgPGRldGFpbHMga2V5PSJkb2N1bWVudGF0aW9uIiB2YWx1ZT0iwqthbGxvY2F0ZWTCuyBpcyBhIHN0ZXJlb3R5cGUgdGhhdCBhcHBsaWVzIHRvIGFueSBOYW1lZEVsZW1lbnQgdGhhdCBoYXMgYXQgbGVhc3Qgb25lIGFsbG9jYXRpb24gcmVsYXRpb25zaGlwIHdpdGggYW5vdGhlciBOYW1lZEVsZW1lbnQuIMKrYWxsb2NhdGVkwrsgZWxlbWVudHMgbWF5IGJlIGRlc2lnbmF0ZWQgYnkgZWl0aGVyIHRoZSAvZnJvbSBvciAvdG8gZW5kIG9mIGFuIMKrYWxsb2NhdGXCuyBkZXBlbmRlbmN5LiBUaGUgwqthbGxvY2F0ZWTCuyBzdGVyZW90eXBlIHByb3ZpZGVzIGEgbWVjaGFuaXNtIGZvciBhIHBhcnRpY3VsYXIgbW9kZWwgZWxlbWVudCB0byBjb252ZW5pZW50bHkgcmV0YWluIGFuZCBkaXNwbGF5IHRoZSBlbGVtZW50IGF0IHRoZSBvcHBvc2l0ZSBlbmQgb2YgYW55IMKrYWxsb2NhdGXCuyBkZXBlbmRlbmN5LiBUaGlzIHN0ZXJlb3R5cGUgcHJvdmlkZXMgZm9yIHRoZSBwcm9wZXJ0aWVzIOKAnGFsbG9jYXRlZEZyb23igJ0gYW5kIOKAnGFsbG9jYXRlZFRvLOKAnSB3aGljaCBhcmUgZGVyaXZlZCBmcm9tIHRoZSDCq2FsbG9jYXRlwrsgZGVwZW5kZW5jeS4iLz4NCisgICAgICA8L2VBbm5vdGF0aW9ucz4NCisgICAgICA8ZVN0cnVjdHVyYWxGZWF0dXJlcyB4c2k6dHlwZT0iZWNvcmU6RVJlZmVyZW5jZSIgbmFtZT0iYmFzZV9OYW1lZEVsZW1lbnQiIG9yZGVyZWQ9ImZhbHNlIg0KKyAgICAgICAgICBsb3dlckJvdW5kPSIxIiBlVHlwZT0iZWNvcmU6RUNsYXNzIC4uLy4uL29yZy5lY2xpcHNlLnVtbDIudW1sL21vZGVsL1VNTC5lY29yZSMvL05hbWVkRWxlbWVudCIvPg0KKyAgICAgIDxlU3RydWN0dXJhbEZlYXR1cmVzIHhzaTp0eXBlPSJlY29yZTpFUmVmZXJlbmNlIiBuYW1lPSJhbGxvY2F0ZWRGcm9tIiBvcmRlcmVkPSJmYWxzZSINCisgICAgICAgICAgbG93ZXJCb3VuZD0iMSIgdXBwZXJCb3VuZD0iLTEiIGVUeXBlPSJlY29yZTpFQ2xhc3MgLi4vLi4vb3JnLmVjbGlwc2UudW1sMi51bWwvbW9kZWwvVU1MLmVjb3JlIy8vTmFtZWRFbGVtZW50Ig0KKyAgICAgICAgICB2b2xhdGlsZT0idHJ1ZSIgdHJhbnNpZW50PSJ0cnVlIiBkZXJpdmVkPSJ0cnVlIj4NCisgICAgICAgIDxlQW5ub3RhdGlvbnMgc291cmNlPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2VtZi8yMDAyL0dlbk1vZGVsIj4NCisgICAgICAgICAgPGRldGFpbHMga2V5PSJkb2N1bWVudGF0aW9uIiB2YWx1ZT0iUmV2ZXJzZSBvZiBhbGxvY2F0ZWRUbzogdGhlIGVsZW1lbnQgdHlwZXMgYW5kIG5hbWVzIG9mIHRoZSBzZXQgb2YgZWxlbWVudHMgdGhhdCBhcmUgY2xpZW50cyAoZnJvbSkgb2YgYW4gwqthbGxvY2F0ZcK7IHdob3NlIHN1cHBsaWVyIGlzIGV4dGVuZGVkIGJ5IHRoaXMgc3RlcmVvdHlwZSAoaW5zdGFuY2UpLiBUaGUgc2FtZSBjaGFyYWN0ZXJpc3RpY3MgYXBwbHkgYXMgdG8gL2FsbG9jYXRlZFRvLiBFYWNoIGFsbG9jYXRlZEZyb20gcHJvcGVydHkgd2lsbCBiZSBleHByZXNzZWQgYXMgwqtlbGVtZW50VHlwZcK7IEVsZW1lbnROYW1lLiIvPg0KKyAgICAgICAgPC9lQW5ub3RhdGlvbnM+DQorICAgICAgPC9lU3RydWN0dXJhbEZlYXR1cmVzPg0KKyAgICAgIDxlU3RydWN0dXJhbEZlYXR1cmVzIHhzaTp0eXBlPSJlY29yZTpFUmVmZXJlbmNlIiBuYW1lPSJhbGxvY2F0ZWRUbyIgb3JkZXJlZD0iZmFsc2UiDQorICAgICAgICAgIGxvd2VyQm91bmQ9IjEiIHVwcGVyQm91bmQ9Ii0xIiBlVHlwZT0iZWNvcmU6RUNsYXNzIC4uLy4uL29yZy5lY2xpcHNlLnVtbDIudW1sL21vZGVsL1VNTC5lY29yZSMvL05hbWVkRWxlbWVudCINCisgICAgICAgICAgdm9sYXRpbGU9InRydWUiIHRyYW5zaWVudD0idHJ1ZSIgZGVyaXZlZD0idHJ1ZSI+DQorICAgICAgICA8ZUFubm90YXRpb25zIHNvdXJjZT0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9lbWYvMjAwMi9HZW5Nb2RlbCI+DQorICAgICAgICAgIDxkZXRhaWxzIGtleT0iZG9jdW1lbnRhdGlvbiIgdmFsdWU9IlRoZSBlbGVtZW50IHR5cGVzIGFuZCBuYW1lcyBvZiB0aGUgc2V0IG9mIGVsZW1lbnRzIHRoYXQgYXJlIHN1cHBsaWVycyAo4oCcdG/igJ0gZW5kIG9mIHRoZSBjb25jcmV0ZSBzeW50YXgpIG9mIGFuIMKrYWxsb2NhdGXCuyB3aG9zZSBjbGllbnQgaXMgZXh0ZW5kZWQgYnkgdGhpcyBzdGVyZW90eXBlIChpbnN0YW5jZSkuIFRoaXMgcHJvcGVydHkgaXMgdGhlIHVuaW9uIG9mIGFsbCBzdXBwbGllcnMgdG8gd2hpY2ggdGhpcyBpbnN0YW5jZSBpcyB0aGUgY2xpZW50LCBpLmUuLCB0aGVyZSBtYXkgYmUgbW9yZSB0aGFuIG9uZSAvYWxsb2NhdGVkVG8gcHJvcGVydHkgcGVyIGFsbG9jYXRlZCBtb2RlbCBlbGVtZW50LiBFYWNoIGFsbG9jYXRlZFRvIHByb3BlcnR5IHdpbGwgYmUgZXhwcmVzc2VkIGFzIMKrZWxlbWVudFR5cGXCuyBFbGVtZW50TmFtZS4iLz4NCisgICAgICAgIDwvZUFubm90YXRpb25zPg0KKyAgICAgIDwvZVN0cnVjdHVyYWxGZWF0dXJlcz4NCisgICAgPC9lQ2xhc3NpZmllcnM+DQorICAgIDxlQ2xhc3NpZmllcnMgeHNpOnR5cGU9ImVjb3JlOkVDbGFzcyIgbmFtZT0iUmVxdWlyZW1lbnRSZWxhdGVkIj4NCisgICAgICA8ZUFubm90YXRpb25zIHNvdXJjZT0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9lbWYvMjAwMi9HZW5Nb2RlbCI+DQorICAgICAgICA8ZGV0YWlscyBrZXk9ImRvY3VtZW50YXRpb24iIHZhbHVlPSJUaGlzIHN0ZXJlb3R5cGUgaXMgdXNlZCB0byBhZGQgcHJvcGVydGllcyB0byB0aG9zZSBlbGVtZW50cyB0aGF0IGFyZSByZWxhdGVkIHRvIHJlcXVpcmVtZW50cyB2aWEgdGhlIHZhcmlvdXMgZGVwZW5kZW5jaWVzLiIvPg0KKyAgICAgIDwvZUFubm90YXRpb25zPg0KKyAgICAgIDxlU3RydWN0dXJhbEZlYXR1cmVzIHhzaTp0eXBlPSJlY29yZTpFUmVmZXJlbmNlIiBuYW1lPSJiYXNlX05hbWVkRWxlbWVudCIgb3JkZXJlZD0iZmFsc2UiDQorICAgICAgICAgIGxvd2VyQm91bmQ9IjEiIGVUeXBlPSJlY29yZTpFQ2xhc3MgLi4vLi4vb3JnLmVjbGlwc2UudW1sMi51bWwvbW9kZWwvVU1MLmVjb3JlIy8vTmFtZWRFbGVtZW50Ii8+DQorICAgICAgPGVTdHJ1Y3R1cmFsRmVhdHVyZXMgeHNpOnR5cGU9ImVjb3JlOkVSZWZlcmVuY2UiIG5hbWU9IlRyYWNlZEZyb20iIG9yZGVyZWQ9ImZhbHNlIg0KKyAgICAgICAgICBsb3dlckJvdW5kPSIxIiB1cHBlckJvdW5kPSItMSIgZVR5cGU9IiMvL3JlcXVpcmVtZW50cy9SZXF1aXJlbWVudCIgdm9sYXRpbGU9InRydWUiDQorICAgICAgICAgIHRyYW5zaWVudD0idHJ1ZSIgZGVyaXZlZD0idHJ1ZSI+DQorICAgICAgICA8ZUFubm90YXRpb25zIHNvdXJjZT0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9lbWYvMjAwMi9HZW5Nb2RlbCI+DQorICAgICAgICAgIDxkZXRhaWxzIGtleT0iZG9jdW1lbnRhdGlvbiIgdmFsdWU9IkRlcml2ZWQgZnJvbSBhbGwgcmVxdWlyZW1lbnRzIHRoYXQgYXJlIHRoZSBzdXBwbGllciBvZiBhIMKrdHJhY2XCuyByZWxhdGlvbnNoaXAgZm9yIHdoaWNoIHRoaXMgZWxlbWVudCBpcyBhIGNsaWVudC4iLz4NCisgICAgICAgIDwvZUFubm90YXRpb25zPg0KKyAgICAgIDwvZVN0cnVjdHVyYWxGZWF0dXJlcz4NCisgICAgICA8ZVN0cnVjdHVyYWxGZWF0dXJlcyB4c2k6dHlwZT0iZWNvcmU6RVJlZmVyZW5jZSIgbmFtZT0iU2F0aXNmaWVzIiBvcmRlcmVkPSJmYWxzZSINCisgICAgICAgICAgbG93ZXJCb3VuZD0iMSIgdXBwZXJCb3VuZD0iLTEiIGVUeXBlPSIjLy9yZXF1aXJlbWVudHMvUmVxdWlyZW1lbnQiIHZvbGF0aWxlPSJ0cnVlIg0KKyAgICAgICAgICB0cmFuc2llbnQ9InRydWUiIGRlcml2ZWQ9InRydWUiPg0KKyAgICAgICAgPGVBbm5vdGF0aW9ucyBzb3VyY2U9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvZW1mLzIwMDIvR2VuTW9kZWwiPg0KKyAgICAgICAgICA8ZGV0YWlscyBrZXk9ImRvY3VtZW50YXRpb24iIHZhbHVlPSJEZXJpdmVkIGZyb20gYWxsIHJlcXVpcmVtZW50cyB0aGF0IGFyZSB0aGUgc3VwcGxpZXIgb2YgYSDCq3NhdGlzZnnCuyByZWxhdGlvbnNoaXAgZm9yIHdoaWNoIHRoaXMgZWxlbWVudCBpcyBhIGNsaWVudC4iLz4NCisgICAgICAgIDwvZUFubm90YXRpb25zPg0KKyAgICAgIDwvZVN0cnVjdHVyYWxGZWF0dXJlcz4NCisgICAgICA8ZVN0cnVjdHVyYWxGZWF0dXJlcyB4c2k6dHlwZT0iZWNvcmU6RVJlZmVyZW5jZSIgbmFtZT0iUmVmaW5lcyIgb3JkZXJlZD0iZmFsc2UiDQorICAgICAgICAgIGxvd2VyQm91bmQ9IjEiIHVwcGVyQm91bmQ9Ii0xIiBlVHlwZT0iIy8vcmVxdWlyZW1lbnRzL1JlcXVpcmVtZW50IiB2b2xhdGlsZT0idHJ1ZSINCisgICAgICAgICAgdHJhbnNpZW50PSJ0cnVlIiBkZXJpdmVkPSJ0cnVlIj4NCisgICAgICAgIDxlQW5ub3RhdGlvbnMgc291cmNlPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2VtZi8yMDAyL0dlbk1vZGVsIj4NCisgICAgICAgICAgPGRldGFpbHMga2V5PSJkb2N1bWVudGF0aW9uIiB2YWx1ZT0iRGVyaXZlZCBmcm9tIGFsbCByZXF1aXJlbWVudHMgdGhhdCBhcmUgdGhlIHN1cHBsaWVyIG9mIGEgwqtyZWZpbmXCuyByZWxhdGlvbnNoaXAgZm9yIHdoaWNoIHRoaXMgZWxlbWVudCBpcyBhIGNsaWVudC4iLz4NCisgICAgICAgIDwvZUFubm90YXRpb25zPg0KKyAgICAgIDwvZVN0cnVjdHVyYWxGZWF0dXJlcz4NCisgICAgICA8ZVN0cnVjdHVyYWxGZWF0dXJlcyB4c2k6dHlwZT0iZWNvcmU6RVJlZmVyZW5jZSIgbmFtZT0iVmVyaWZpZXMiIG9yZGVyZWQ9ImZhbHNlIg0KKyAgICAgICAgICBsb3dlckJvdW5kPSIxIiB1cHBlckJvdW5kPSItMSIgZVR5cGU9IiMvL3JlcXVpcmVtZW50cy9SZXF1aXJlbWVudCIgdm9sYXRpbGU9InRydWUiDQorICAgICAgICAgIHRyYW5zaWVudD0idHJ1ZSIgZGVyaXZlZD0idHJ1ZSI+DQorICAgICAgICA8ZUFubm90YXRpb25zIHNvdXJjZT0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9lbWYvMjAwMi9HZW5Nb2RlbCI+DQorICAgICAgICAgIDxkZXRhaWxzIGtleT0iZG9jdW1lbnRhdGlvbiIgdmFsdWU9IkRlcml2ZWQgZnJvbSBhbGwgcmVxdWlyZW1lbnRzIHRoYXQgYXJlIHRoZSBzdXBwbGllciBvZiBhIMKrdmVyaWZ5wrsgcmVsYXRpb25zaGlwIGZvciB3aGljaCB0aGlzIGVsZW1lbnQgaXMgYSBjbGllbnQuIi8+DQorICAgICAgICA8L2VBbm5vdGF0aW9ucz4NCisgICAgICA8L2VTdHJ1Y3R1cmFsRmVhdHVyZXM+DQorICAgIDwvZUNsYXNzaWZpZXJzPg0KKyAgICA8ZUNsYXNzaWZpZXJzIHhzaTp0eXBlPSJlY29yZTpFQ2xhc3MiIG5hbWU9IkRlcHJlY2F0ZWQiPg0KKyAgICAgIDxlU3RydWN0dXJhbEZlYXR1cmVzIHhzaTp0eXBlPSJlY29yZTpFUmVmZXJlbmNlIiBuYW1lPSJiYXNlX1ZhbHVlU3BlY2lmaWNhdGlvbiINCisgICAgICAgICAgb3JkZXJlZD0iZmFsc2UiIGxvd2VyQm91bmQ9IjEiIGVUeXBlPSJlY29yZTpFQ2xhc3MgLi4vLi4vb3JnLmVjbGlwc2UudW1sMi51bWwvbW9kZWwvVU1MLmVjb3JlIy8vVmFsdWVTcGVjaWZpY2F0aW9uIi8+DQorICAgICAgPGVTdHJ1Y3R1cmFsRmVhdHVyZXMgeHNpOnR5cGU9ImVjb3JlOkVSZWZlcmVuY2UiIG5hbWU9ImJhc2VfUHJvcGVydHkiIG9yZGVyZWQ9ImZhbHNlIg0KKyAgICAgICAgICBsb3dlckJvdW5kPSIxIiBlVHlwZT0iZWNvcmU6RUNsYXNzIC4uLy4uL29yZy5lY2xpcHNlLnVtbDIudW1sL21vZGVsL1VNTC5lY29yZSMvL1Byb3BlcnR5Ii8+DQorICAgICAgPGVTdHJ1Y3R1cmFsRmVhdHVyZXMgeHNpOnR5cGU9ImVjb3JlOkVSZWZlcmVuY2UiIG5hbWU9ImJhc2VfSW5zdGFuY2VTcGVjaWZpY2F0aW9uIg0KKyAgICAgICAgICBvcmRlcmVkPSJmYWxzZSIgbG93ZXJCb3VuZD0iMSIgZVR5cGU9ImVjb3JlOkVDbGFzcyAuLi8uLi9vcmcuZWNsaXBzZS51bWwyLnVtbC9tb2RlbC9VTUwuZWNvcmUjLy9JbnN0YW5jZVNwZWNpZmljYXRpb24iLz4NCisgICAgICA8ZVN0cnVjdHVyYWxGZWF0dXJlcyB4c2k6dHlwZT0iZWNvcmU6RVJlZmVyZW5jZSIgbmFtZT0iYmFzZV9DbGFzcyIgb3JkZXJlZD0iZmFsc2UiDQorICAgICAgICAgIGxvd2VyQm91bmQ9IjEiIGVUeXBlPSJlY29yZTpFQ2xhc3MgLi4vLi4vb3JnLmVjbGlwc2UudW1sMi51bWwvbW9kZWwvVU1MLmVjb3JlIy8vQ2xhc3MiLz4NCisgICAgICA8ZVN0cnVjdHVyYWxGZWF0dXJlcyB4c2k6dHlwZT0iZWNvcmU6RVJlZmVyZW5jZSIgbmFtZT0iYmFzZV9Bc3NvY2lhdGlvbiIgb3JkZXJlZD0iZmFsc2UiDQorICAgICAgICAgIGxvd2VyQm91bmQ9IjEiIGVUeXBlPSJlY29yZTpFQ2xhc3MgLi4vLi4vb3JnLmVjbGlwc2UudW1sMi51bWwvbW9kZWwvVU1MLmVjb3JlIy8vQXNzb2NpYXRpb24iLz4NCisgICAgICA8ZVN0cnVjdHVyYWxGZWF0dXJlcyB4c2k6dHlwZT0iZWNvcmU6RUF0dHJpYnV0ZSIgbmFtZT0iZGVwcmVjYXRlZFJlYXNvbiIgb3JkZXJlZD0iZmFsc2UiDQorICAgICAgICAgIGxvd2VyQm91bmQ9IjEiIGVUeXBlPSJlY29yZTpFRGF0YVR5cGUgLi4vLi4vb3JnLmVjbGlwc2UudW1sMi50eXBlcy9tb2RlbC9UeXBlcy5lY29yZSMvL1N0cmluZyIvPg0KKyAgICAgIDxlU3RydWN0dXJhbEZlYXR1cmVzIHhzaTp0eXBlPSJlY29yZTpFUmVmZXJlbmNlIiBuYW1lPSJiYXNlX0dlbmVyYWxpemF0aW9uIg0KKyAgICAgICAgICBvcmRlcmVkPSJmYWxzZSIgbG93ZXJCb3VuZD0iMSIgZVR5cGU9ImVjb3JlOkVDbGFzcyAuLi8uLi9vcmcuZWNsaXBzZS51bWwyLnVtbC9tb2RlbC9VTUwuZWNvcmUjLy9HZW5lcmFsaXphdGlvbiIvPg0KKyAgICAgIDxlU3RydWN0dXJhbEZlYXR1cmVzIHhzaTp0eXBlPSJlY29yZTpFUmVmZXJlbmNlIiBuYW1lPSJiYXNlX0RhdGFUeXBlIiBvcmRlcmVkPSJmYWxzZSINCisgICAgICAgICAgbG93ZXJCb3VuZD0iMSIgZVR5cGU9ImVjb3JlOkVDbGFzcyAuLi8uLi9vcmcuZWNsaXBzZS51bWwyLnVtbC9tb2RlbC9VTUwuZWNvcmUjLy9EYXRhVHlwZSIvPg0KKyAgICA8L2VDbGFzc2lmaWVycz4NCisgIDwvZVN1YnBhY2thZ2VzPg0KKzwvZWNvcmU6RVBhY2thZ2U+DQpkaWZmIC0tZ2l0IGEvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQvcGx1Z2luLnByb3BlcnRpZXMgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC9wbHVnaW4ucHJvcGVydGllcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MmM3NTI5Ci0tLSAvZGV2L251bGwKKysrIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQvcGx1Z2luLnByb3BlcnRpZXMKQEAgLTAsMCArMSwxNSBAQAorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQorIyBDb3B5cmlnaHQgKGMpIDIwMTUgQ0VBIExJU1QuDQorIyBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQorIyBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCisjIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQorIyBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyMNCisjIENvbnRyaWJ1dG9yczoNCisjICAgICBQYXRyaWNrIFRlc3NpZXIgKENFQSBMSVNUKSBQYXRyaWNrLnRlc3NpZXJAY2VhLmZyIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uDQorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KK3BsdWdpbk5hbWU9b3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0DQorcGx1Z2luRGVzY3JpcHRpb249VGhpcyBwbHVnLWluIGNvbnRhaW5zIHRoZSBTeU1MIHByb2ZpbGUuDQorcHJvdmlkZXJOYW1lPUVjbGlwc2UgTW9kZWxpbmcgUHJvamVjdA0KKw0KKw0KZGlmZiAtLWdpdCBhL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0L3BsdWdpbi54bWwgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC9wbHVnaW4ueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJhYjMzY2MKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC9wbHVnaW4ueG1sCkBAIC0wLDAgKzEsMTI5IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/Pg0KKzw/ZWNsaXBzZSB2ZXJzaW9uPSIzLjAiPz4NCisNCis8IS0tDQorLS0+DQorDQorPHBsdWdpbj4NCisNCisgICA8ZXh0ZW5zaW9uIHBvaW50PSJvcmcuZWNsaXBzZS5lbWYuZWNvcmUuZ2VuZXJhdGVkX3BhY2thZ2UiPg0KKyAgICAgIDwhLS0gQGdlbmVyYXRlZCBTeXNNTC5wcm9maWxlIC0tPg0KKyAgICAgIDxwYWNrYWdlDQorICAgICAgICAgICAgdXJpPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3BhcHlydXMvMS40L1N5c01ML0Jsb2NrcyINCisgICAgICAgICAgICBjbGFzcz0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmJsb2Nrcy5CbG9ja3NQYWNrYWdlIg0KKyAgICAgICAgICAgIGdlbk1vZGVsPSJtb2RlbC9TeXNNTC5wcm9maWxlLmdlbm1vZGVsIi8+DQorICAgPC9leHRlbnNpb24+DQorDQorICAgPGV4dGVuc2lvbiBwb2ludD0ib3JnLmVjbGlwc2UuZW1mLmVjb3JlLmdlbmVyYXRlZF9wYWNrYWdlIj4NCisgICAgICA8IS0tIEBnZW5lcmF0ZWQgU3lzTUwucHJvZmlsZSAtLT4NCisgICAgICA8cGFja2FnZQ0KKyAgICAgICAgICAgIHVyaT0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9wYXB5cnVzLzEuNC9TeXNNTC9Qb3J0QW5kRmxvd3MiDQorICAgICAgICAgICAgY2xhc3M9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5wb3J0YW5kZmxvd3MuUG9ydGFuZGZsb3dzUGFja2FnZSINCisgICAgICAgICAgICBnZW5Nb2RlbD0ibW9kZWwvU3lzTUwucHJvZmlsZS5nZW5tb2RlbCIvPg0KKyAgIDwvZXh0ZW5zaW9uPg0KKw0KKyAgIDxleHRlbnNpb24gcG9pbnQ9Im9yZy5lY2xpcHNlLmVtZi5lY29yZS5nZW5lcmF0ZWRfcGFja2FnZSI+DQorICAgICAgPCEtLSBAZ2VuZXJhdGVkIFN5c01MLnByb2ZpbGUgLS0+DQorICAgICAgPHBhY2thZ2UNCisgICAgICAgICAgICB1cmk9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvcGFweXJ1cy8xLjQvU3lzTUwvQWN0aXZpdGllcyINCisgICAgICAgICAgICBjbGFzcz0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmFjdGl2aXRpZXMuQWN0aXZpdGllc1BhY2thZ2UiDQorICAgICAgICAgICAgZ2VuTW9kZWw9Im1vZGVsL1N5c01MLnByb2ZpbGUuZ2VubW9kZWwiLz4NCisgICA8L2V4dGVuc2lvbj4NCisNCisgICA8ZXh0ZW5zaW9uIHBvaW50PSJvcmcuZWNsaXBzZS5lbWYuZWNvcmUuZ2VuZXJhdGVkX3BhY2thZ2UiPg0KKyAgICAgIDwhLS0gQGdlbmVyYXRlZCBTeXNNTC5wcm9maWxlIC0tPg0KKyAgICAgIDxwYWNrYWdlDQorICAgICAgICAgICAgdXJpPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3BhcHlydXMvMS40L1N5c01ML01vZGVsRWxlbWVudHMiDQorICAgICAgICAgICAgY2xhc3M9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5tb2RlbGVsZW1lbnRzLk1vZGVsZWxlbWVudHNQYWNrYWdlIg0KKyAgICAgICAgICAgIGdlbk1vZGVsPSJtb2RlbC9TeXNNTC5wcm9maWxlLmdlbm1vZGVsIi8+DQorICAgPC9leHRlbnNpb24+DQorDQorICAgPGV4dGVuc2lvbiBwb2ludD0ib3JnLmVjbGlwc2UuZW1mLmVjb3JlLmdlbmVyYXRlZF9wYWNrYWdlIj4NCisgICAgICA8IS0tIEBnZW5lcmF0ZWQgU3lzTUwucHJvZmlsZSAtLT4NCisgICAgICA8cGFja2FnZQ0KKyAgICAgICAgICAgIHVyaT0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9wYXB5cnVzLzEuNC9TeXNNTC9Db25zdHJhaW50QmxvY2tzIg0KKyAgICAgICAgICAgIGNsYXNzPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuY29uc3RyYWludGJsb2Nrcy5Db25zdHJhaW50YmxvY2tzUGFja2FnZSINCisgICAgICAgICAgICBnZW5Nb2RlbD0ibW9kZWwvU3lzTUwucHJvZmlsZS5nZW5tb2RlbCIvPg0KKyAgIDwvZXh0ZW5zaW9uPg0KKw0KKyAgIDxleHRlbnNpb24gcG9pbnQ9Im9yZy5lY2xpcHNlLmVtZi5lY29yZS5nZW5lcmF0ZWRfcGFja2FnZSI+DQorICAgICAgPCEtLSBAZ2VuZXJhdGVkIFN5c01MLnByb2ZpbGUgLS0+DQorICAgICAgPHBhY2thZ2UNCisgICAgICAgICAgICB1cmk9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvcGFweXJ1cy8xLjQvU3lzTUwvQWxsb2NhdGlvbnMiDQorICAgICAgICAgICAgY2xhc3M9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5hbGxvY2F0aW9ucy5BbGxvY2F0aW9uc1BhY2thZ2UiDQorICAgICAgICAgICAgZ2VuTW9kZWw9Im1vZGVsL1N5c01MLnByb2ZpbGUuZ2VubW9kZWwiLz4NCisgICA8L2V4dGVuc2lvbj4NCisNCisgICA8ZXh0ZW5zaW9uIHBvaW50PSJvcmcuZWNsaXBzZS5lbWYuZWNvcmUuZ2VuZXJhdGVkX3BhY2thZ2UiPg0KKyAgICAgIDwhLS0gQGdlbmVyYXRlZCBTeXNNTC5wcm9maWxlIC0tPg0KKyAgICAgIDxwYWNrYWdlDQorICAgICAgICAgICAgdXJpPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3BhcHlydXMvMS40L1N5c01ML1JlcXVpcmVtZW50cyINCisgICAgICAgICAgICBjbGFzcz0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnJlcXVpcmVtZW50cy5SZXF1aXJlbWVudHNQYWNrYWdlIg0KKyAgICAgICAgICAgIGdlbk1vZGVsPSJtb2RlbC9TeXNNTC5wcm9maWxlLmdlbm1vZGVsIi8+DQorICAgPC9leHRlbnNpb24+DQorDQorICAgPGV4dGVuc2lvbiBwb2ludD0ib3JnLmVjbGlwc2UuZW1mLmVjb3JlLmdlbmVyYXRlZF9wYWNrYWdlIj4NCisgICAgICA8IS0tIEBnZW5lcmF0ZWQgU3lzTUwucHJvZmlsZSAtLT4NCisgICAgICA8cGFja2FnZQ0KKyAgICAgICAgICAgIHVyaT0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9wYXB5cnVzLzEuNC9TeXNNTC9EZXByZWNhdGVkRWxlbWVudHMiDQorICAgICAgICAgICAgY2xhc3M9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kZXByZWNhdGVkZWxlbWVudHMuRGVwcmVjYXRlZGVsZW1lbnRzUGFja2FnZSINCisgICAgICAgICAgICBnZW5Nb2RlbD0ibW9kZWwvU3lzTUwucHJvZmlsZS5nZW5tb2RlbCIvPg0KKyAgIDwvZXh0ZW5zaW9uPg0KKyAgIDxleHRlbnNpb24NCisgICAgICAgICBwb2ludD0ib3JnLmVjbGlwc2UuZW1mLmVjb3JlLmZhY3Rvcnlfb3ZlcnJpZGUiPg0KKyAgICAgIDxmYWN0b3J5DQorICAgICAgICAgICAgY2xhc3M9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kZXByZWNhdGVkZWxlbWVudHMuQ3VzdG9tRGVwcmVjYXRlZGVsZW1lbnRzRmFjdG9yeUltcGwiDQorICAgICAgICAgICAgdXJpPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3BhcHlydXMvMS40L1N5c01ML0RlcHJlY2F0ZWRFbGVtZW50cyI+DQorICAgICAgPC9mYWN0b3J5Pg0KKyAgIDwvZXh0ZW5zaW9uPg0KKyAgIDxleHRlbnNpb24NCisgICAgICAgICBwb2ludD0ib3JnLmVjbGlwc2UuZW1mLmVjb3JlLmZhY3Rvcnlfb3ZlcnJpZGUiPg0KKyAgICAgIDxmYWN0b3J5DQorICAgICAgICAgICAgY2xhc3M9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5yZXF1aXJlbWVudHMuQ3VzdG9tUmVxdWlyZW1lbnRzRmFjdG9yeUltcGwiDQorICAgICAgICAgICAgdXJpPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3BhcHlydXMvMS40L1N5c01ML1JlcXVpcmVtZW50cyI+DQorICAgICAgPC9mYWN0b3J5Pg0KKyAgIDwvZXh0ZW5zaW9uPg0KKyAgIDxleHRlbnNpb24NCisgICAgICAgICBwb2ludD0ib3JnLmVjbGlwc2UuZW1mLmVjb3JlLmZhY3Rvcnlfb3ZlcnJpZGUiPg0KKyAgICAgIDxmYWN0b3J5DQorICAgICAgICAgICAgY2xhc3M9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5tb2RlbGVsZW1lbnRzLkN1c3RvbU1vZGVsZWxlbWVudHNGYWN0b3J5SW1wbCINCisgICAgICAgICAgICB1cmk9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvcGFweXJ1cy8xLjQvU3lzTUwvTW9kZWxFbGVtZW50cyI+DQorICAgICAgPC9mYWN0b3J5Pg0KKyAgIDwvZXh0ZW5zaW9uPg0KKyAgIA0KKyAgIDxleHRlbnNpb24gcG9pbnQ9Im9yZy5lY2xpcHNlLmVtZi5lY29yZS5nZW5lcmF0ZWRfcGFja2FnZSI+DQorICAgICAgPHBhY2thZ2UNCisgICAgICAgICAgICB1cmk9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvcGFweXJ1cy8xLjQvU3lzTUwiDQorICAgICAgICAgICAgY2xhc3M9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kZWZpbml0aW9uLlN5c21sUGFja2FnZSINCisgICAgICAgICAgICBnZW5Nb2RlbD0ibW9kZWwvU3lzTUwucHJvZmlsZS5nZW5tb2RlbCIvPg0KKyAgIDwvZXh0ZW5zaW9uPiAgIA0KKyAgIA0KKyAgPGV4dGVuc2lvbiBwb2ludD0ib3JnLmVjbGlwc2UudW1sMi51bWwuZ2VuZXJhdGVkX3BhY2thZ2UiPg0KKyAgICAgPHByb2ZpbGUgdXJpPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3BhcHlydXMvMS40L1N5c01MIg0KKyAgICAgICAgICAgbG9jYXRpb249InBsYXRmb3JtOi9wbHVnaW4vb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0L21vZGVsL1N5c01MLnByb2ZpbGUudW1sI1N5c01MIi8+DQorICA8L2V4dGVuc2lvbj4gDQorICAgDQorICAgPGV4dGVuc2lvbg0KKyAgICAgICAgcG9pbnQ9Im9yZy5lY2xpcHNlLnBhcHlydXMudW1sLmV4dGVuc2lvbnBvaW50cy5VTUxQcm9maWxlIj4NCisgICAgIDxwcm9maWxlDQorICAgICAgICAgICBkZXNjcmlwdGlvbj0iVU1MIHByb2ZpbGUgZm9yIFN5c01MIChmcm9tIE9NRyBTeXNNTCBWMS40KSINCisgICAgICAgICAgIGljb25wYXRoPSJpY29ucy9TeXNNTFByb2ZpbGUuZ2lmIg0KKyAgICAgICAgICAgbmFtZT0iU3lzTUwgMS40Ig0KKyAgICAgICAgICAgcGF0aD0icGxhdGZvcm06L3BsdWdpbi9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQvbW9kZWwvU3lzTUwucHJvZmlsZS51bWwiDQorICAgICAgICAgICBwcm92aWRlcj0iRWNsaXBzZSBNb2RlbGluZyBQcm9qZWN0Ij4NCisgICAgIDwvcHJvZmlsZT4NCisgIDwvZXh0ZW5zaW9uPiAgIA0KKyAgIA0KKyAgICAgPGV4dGVuc2lvbg0KKyAgICAgICAgcG9pbnQ9Im9yZy5lY2xpcHNlLnBhcHlydXMudW1sLmV4dGVuc2lvbnBvaW50cy5VTUxMaWJyYXJ5Ij4NCisgICAgIDxsaWJyYXJ5DQorICAgICAgICAgICBkZXNjcmlwdGlvbj0iVU1MIGxpYnJhcnkgZm9yIFN5c01MIChmcm9tIE9NRyBTeXNNTCBWMS40KSINCisgICAgICAgICAgIGljb25wYXRoPSJpY29ucy9TeXNNTExpYnJhcnkuZ2lmIg0KKyAgICAgICAgICAgbmFtZT0iU3lNTExpYnJhcmllcyINCisgICAgICAgICAgIHBhdGg9InBsYXRmb3JtOi9wbHVnaW4vb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0L21vZGVsL1N5TUxMaWJyYXJpZXMudW1sIg0KKyAgICAgICAgICAgcHJvdmlkZXI9IkVjbGlwc2UgTW9kZWxpbmcgUHJvamVjdCI+DQorICAgICA8L2xpYnJhcnk+DQorICA8L2V4dGVuc2lvbj4gICAgDQorICAgDQorICAgDQorPC9wbHVnaW4+DQpkaWZmIC0tZ2l0IGEvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQvcG9tLnhtbCBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0L3BvbS54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWU5Mzg4OQotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0L3BvbS54bWwKQEAgLTAsMCArMSwxMSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4NCis8cHJvamVjdD4NCisJPG1vZGVsVmVyc2lvbj40LjAuMDwvbW9kZWxWZXJzaW9uPg0KKwk8cGFyZW50Pg0KKwkJPGFydGlmYWN0SWQ+b3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbC5jb3JlPC9hcnRpZmFjdElkPg0KKwkJPGdyb3VwSWQ+b3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDwvZ3JvdXBJZD4NCisJCTx2ZXJzaW9uPjAuNy4wLVNOQVBTSE9UPC92ZXJzaW9uPg0KKwk8L3BhcmVudD4NCisJPGFydGlmYWN0SWQ+b3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0PC9hcnRpZmFjdElkPg0KKwk8cGFja2FnaW5nPmVjbGlwc2UtcGx1Z2luPC9wYWNrYWdpbmc+DQorPC9wcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L2FjdGl2aXRpZXMvQWN0aXZpdGllc0ZhY3RvcnkuamF2YSBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L2FjdGl2aXRpZXMvQWN0aXZpdGllc0ZhY3RvcnkuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NDY4OGM3Ci0tLSAvZGV2L251bGwKKysrIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvYWN0aXZpdGllcy9BY3Rpdml0aWVzRmFjdG9yeS5qYXZhCkBAIC0wLDAgKzEsMTExIEBACisvKioNCisgKiBDb3B5cmlnaHQgKGMpIDIwMTUgQ0VBIExJU1QuDQorICogDQorICogIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCisgKiAgYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQorICogIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQorICogIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICovDQorcGFja2FnZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYWN0aXZpdGllczsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVGYWN0b3J5Ow0KKw0KKy8qKg0KKyAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorICogVGhlIDxiPkZhY3Rvcnk8L2I+IGZvciB0aGUgbW9kZWwuDQorICogSXQgcHJvdmlkZXMgYSBjcmVhdGUgbWV0aG9kIGZvciBlYWNoIG5vbi1hYnN0cmFjdCBjbGFzcyBvZiB0aGUgbW9kZWwuDQorICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYWN0aXZpdGllcy5BY3Rpdml0aWVzUGFja2FnZQ0KKyAqIEBnZW5lcmF0ZWQNCisgKi8NCitwdWJsaWMgaW50ZXJmYWNlIEFjdGl2aXRpZXNGYWN0b3J5IGV4dGVuZHMgRUZhY3Rvcnkgew0KKwkvKioNCisJICogVGhlIHNpbmdsZXRvbiBpbnN0YW5jZSBvZiB0aGUgZmFjdG9yeS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUFjdGl2aXRpZXNGYWN0b3J5IGVJTlNUQU5DRSA9IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5hY3Rpdml0aWVzLmludGVybmFsLmltcGwuQWN0aXZpdGllc0ZhY3RvcnlJbXBsLmluaXQoKTsNCisNCisJLyoqDQorCSAqIFJldHVybnMgYSBuZXcgb2JqZWN0IG9mIGNsYXNzICc8ZW0+T3ZlcndyaXRlPC9lbT4nLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHJldHVybiBhIG5ldyBvYmplY3Qgb2YgY2xhc3MgJzxlbT5PdmVyd3JpdGU8L2VtPicuDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCU92ZXJ3cml0ZSBjcmVhdGVPdmVyd3JpdGUoKTsNCisNCisJLyoqDQorCSAqIFJldHVybnMgYSBuZXcgb2JqZWN0IG9mIGNsYXNzICc8ZW0+Q29udHJvbCBPcGVyYXRvcjwvZW0+Jy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEByZXR1cm4gYSBuZXcgb2JqZWN0IG9mIGNsYXNzICc8ZW0+Q29udHJvbCBPcGVyYXRvcjwvZW0+Jy4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQ29udHJvbE9wZXJhdG9yIGNyZWF0ZUNvbnRyb2xPcGVyYXRvcigpOw0KKw0KKwkvKioNCisJICogUmV0dXJucyBhIG5ldyBvYmplY3Qgb2YgY2xhc3MgJzxlbT5SYXRlPC9lbT4nLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHJldHVybiBhIG5ldyBvYmplY3Qgb2YgY2xhc3MgJzxlbT5SYXRlPC9lbT4nLg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlSYXRlIGNyZWF0ZVJhdGUoKTsNCisNCisJLyoqDQorCSAqIFJldHVybnMgYSBuZXcgb2JqZWN0IG9mIGNsYXNzICc8ZW0+Tm8gQnVmZmVyPC9lbT4nLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHJldHVybiBhIG5ldyBvYmplY3Qgb2YgY2xhc3MgJzxlbT5ObyBCdWZmZXI8L2VtPicuDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCU5vQnVmZmVyIGNyZWF0ZU5vQnVmZmVyKCk7DQorDQorCS8qKg0KKwkgKiBSZXR1cm5zIGEgbmV3IG9iamVjdCBvZiBjbGFzcyAnPGVtPkRpc2NyZXRlPC9lbT4nLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHJldHVybiBhIG5ldyBvYmplY3Qgb2YgY2xhc3MgJzxlbT5EaXNjcmV0ZTwvZW0+Jy4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJRGlzY3JldGUgY3JlYXRlRGlzY3JldGUoKTsNCisNCisJLyoqDQorCSAqIFJldHVybnMgYSBuZXcgb2JqZWN0IG9mIGNsYXNzICc8ZW0+Q29udGludW91czwvZW0+Jy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEByZXR1cm4gYSBuZXcgb2JqZWN0IG9mIGNsYXNzICc8ZW0+Q29udGludW91czwvZW0+Jy4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQ29udGludW91cyBjcmVhdGVDb250aW51b3VzKCk7DQorDQorCS8qKg0KKwkgKiBSZXR1cm5zIGEgbmV3IG9iamVjdCBvZiBjbGFzcyAnPGVtPlByb2JhYmlsaXR5PC9lbT4nLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHJldHVybiBhIG5ldyBvYmplY3Qgb2YgY2xhc3MgJzxlbT5Qcm9iYWJpbGl0eTwvZW0+Jy4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJUHJvYmFiaWxpdHkgY3JlYXRlUHJvYmFiaWxpdHkoKTsNCisNCisJLyoqDQorCSAqIFJldHVybnMgYSBuZXcgb2JqZWN0IG9mIGNsYXNzICc8ZW0+T3B0aW9uYWw8L2VtPicuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAcmV0dXJuIGEgbmV3IG9iamVjdCBvZiBjbGFzcyAnPGVtPk9wdGlvbmFsPC9lbT4nLg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlPcHRpb25hbCBjcmVhdGVPcHRpb25hbCgpOw0KKw0KKwkvKioNCisJICogUmV0dXJucyB0aGUgcGFja2FnZSBzdXBwb3J0ZWQgYnkgdGhpcyBmYWN0b3J5Lg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHJldHVybiB0aGUgcGFja2FnZSBzdXBwb3J0ZWQgYnkgdGhpcyBmYWN0b3J5Lg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlBY3Rpdml0aWVzUGFja2FnZSBnZXRBY3Rpdml0aWVzUGFja2FnZSgpOw0KKw0KK30gLy9BY3Rpdml0aWVzRmFjdG9yeQ0KZGlmZiAtLWdpdCBhL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L2FjdGl2aXRpZXMvQWN0aXZpdGllc1BhY2thZ2UuamF2YSBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L2FjdGl2aXRpZXMvQWN0aXZpdGllc1BhY2thZ2UuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40Yjk3ZDFhCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvYWN0aXZpdGllcy9BY3Rpdml0aWVzUGFja2FnZS5qYXZhCkBAIC0wLDAgKzEsODgzIEBACisvKioNCisgKiBDb3B5cmlnaHQgKGMpIDIwMTUgQ0VBIExJU1QuDQorICogDQorICogIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCisgKiAgYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQorICogIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQorICogIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICovDQorcGFja2FnZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYWN0aXZpdGllczsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVDbGFzczsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVQYWNrYWdlOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRVJlZmVyZW5jZTsNCisNCisvKioNCisgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKyAqIFRoZSA8Yj5QYWNrYWdlPC9iPiBmb3IgdGhlIG1vZGVsLg0KKyAqIEl0IGNvbnRhaW5zIGFjY2Vzc29ycyBmb3IgdGhlIG1ldGEgb2JqZWN0cyB0byByZXByZXNlbnQNCisgKiA8dWw+DQorICogICA8bGk+ZWFjaCBjbGFzcyw8L2xpPg0KKyAqICAgPGxpPmVhY2ggZmVhdHVyZSBvZiBlYWNoIGNsYXNzLDwvbGk+DQorICogICA8bGk+ZWFjaCBvcGVyYXRpb24gb2YgZWFjaCBjbGFzcyw8L2xpPg0KKyAqICAgPGxpPmVhY2ggZW51bSw8L2xpPg0KKyAqICAgPGxpPmFuZCBlYWNoIGRhdGEgdHlwZTwvbGk+DQorICogPC91bD4NCisgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5hY3Rpdml0aWVzLkFjdGl2aXRpZXNGYWN0b3J5DQorICogQG1vZGVsIGtpbmQ9InBhY2thZ2UiDQorICogICAgICAgIGFubm90YXRpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvdW1sMi8yLjAuMC9VTUwgb3JpZ2luYWxOYW1lPSdBY3Rpdml0aWVzJyINCisgKiBAZ2VuZXJhdGVkDQorICovDQorcHVibGljIGludGVyZmFjZSBBY3Rpdml0aWVzUGFja2FnZSBleHRlbmRzIEVQYWNrYWdlIHsNCisJLyoqDQorCSAqIFRoZSBwYWNrYWdlIG5hbWUuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlTdHJpbmcgZU5BTUUgPSAiYWN0aXZpdGllcyI7IC8vJE5PTi1OTFMtMSQNCisNCisJLyoqDQorCSAqIFRoZSBwYWNrYWdlIG5hbWVzcGFjZSBVUkkuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlTdHJpbmcgZU5TX1VSSSA9ICJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3BhcHlydXMvMS40L1N5c01ML0FjdGl2aXRpZXMiOyAvLyROT04tTkxTLTEkDQorDQorCS8qKg0KKwkgKiBUaGUgcGFja2FnZSBuYW1lc3BhY2UgbmFtZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCVN0cmluZyBlTlNfUFJFRklYID0gIkFjdGl2aXRpZXMiOyAvLyROT04tTkxTLTEkDQorDQorCS8qKg0KKwkgKiBUaGUgc2luZ2xldG9uIGluc3RhbmNlIG9mIHRoZSBwYWNrYWdlLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQWN0aXZpdGllc1BhY2thZ2UgZUlOU1RBTkNFID0gb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmFjdGl2aXRpZXMuaW50ZXJuYWwuaW1wbC5BY3Rpdml0aWVzUGFja2FnZUltcGwuaW5pdCgpOw0KKw0KKwkvKioNCisJICogVGhlIG1ldGEgb2JqZWN0IGlkIGZvciB0aGUgJ3tAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYWN0aXZpdGllcy5pbnRlcm5hbC5pbXBsLk92ZXJ3cml0ZUltcGwgPGVtPk92ZXJ3cml0ZTwvZW0+fScgY2xhc3MuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5hY3Rpdml0aWVzLmludGVybmFsLmltcGwuT3ZlcndyaXRlSW1wbA0KKwkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5hY3Rpdml0aWVzLmludGVybmFsLmltcGwuQWN0aXZpdGllc1BhY2thZ2VJbXBsI2dldE92ZXJ3cml0ZSgpDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCWludCBPVkVSV1JJVEUgPSAwOw0KKw0KKwkvKioNCisJICogVGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkJhc2UgT2JqZWN0IE5vZGU8L2I+PC9lbT4nIHJlZmVyZW5jZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICogQG9yZGVyZWQNCisJICovDQorCWludCBPVkVSV1JJVEVfX0JBU0VfT0JKRUNUX05PREUgPSAwOw0KKw0KKwkvKioNCisJICogVGhlIG51bWJlciBvZiBzdHJ1Y3R1cmFsIGZlYXR1cmVzIG9mIHRoZSAnPGVtPk92ZXJ3cml0ZTwvZW0+JyBjbGFzcy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICogQG9yZGVyZWQNCisJICovDQorCWludCBPVkVSV1JJVEVfRkVBVFVSRV9DT1VOVCA9IDE7DQorDQorCS8qKg0KKwkgKiBUaGUgbnVtYmVyIG9mIG9wZXJhdGlvbnMgb2YgdGhlICc8ZW0+T3ZlcndyaXRlPC9lbT4nIGNsYXNzLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKiBAb3JkZXJlZA0KKwkgKi8NCisJaW50IE9WRVJXUklURV9PUEVSQVRJT05fQ09VTlQgPSAwOw0KKw0KKwkvKioNCisJICogVGhlIG1ldGEgb2JqZWN0IGlkIGZvciB0aGUgJ3tAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYWN0aXZpdGllcy5pbnRlcm5hbC5pbXBsLkNvbnRyb2xPcGVyYXRvckltcGwgPGVtPkNvbnRyb2wgT3BlcmF0b3I8L2VtPn0nIGNsYXNzLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYWN0aXZpdGllcy5pbnRlcm5hbC5pbXBsLkNvbnRyb2xPcGVyYXRvckltcGwNCisJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYWN0aXZpdGllcy5pbnRlcm5hbC5pbXBsLkFjdGl2aXRpZXNQYWNrYWdlSW1wbCNnZXRDb250cm9sT3BlcmF0b3IoKQ0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlpbnQgQ09OVFJPTF9PUEVSQVRPUiA9IDE7DQorDQorCS8qKg0KKwkgKiBUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+QmFzZSBCZWhhdmlvcjwvYj48L2VtPicgcmVmZXJlbmNlLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKiBAb3JkZXJlZA0KKwkgKi8NCisJaW50IENPTlRST0xfT1BFUkFUT1JfX0JBU0VfQkVIQVZJT1IgPSAwOw0KKw0KKwkvKioNCisJICogVGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkJhc2UgT3BlcmF0aW9uPC9iPjwvZW0+JyByZWZlcmVuY2UuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqIEBvcmRlcmVkDQorCSAqLw0KKwlpbnQgQ09OVFJPTF9PUEVSQVRPUl9fQkFTRV9PUEVSQVRJT04gPSAxOw0KKw0KKwkvKioNCisJICogVGhlIG51bWJlciBvZiBzdHJ1Y3R1cmFsIGZlYXR1cmVzIG9mIHRoZSAnPGVtPkNvbnRyb2wgT3BlcmF0b3I8L2VtPicgY2xhc3MuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqIEBvcmRlcmVkDQorCSAqLw0KKwlpbnQgQ09OVFJPTF9PUEVSQVRPUl9GRUFUVVJFX0NPVU5UID0gMjsNCisNCisJLyoqDQorCSAqIFRoZSBudW1iZXIgb2Ygb3BlcmF0aW9ucyBvZiB0aGUgJzxlbT5Db250cm9sIE9wZXJhdG9yPC9lbT4nIGNsYXNzLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKiBAb3JkZXJlZA0KKwkgKi8NCisJaW50IENPTlRST0xfT1BFUkFUT1JfT1BFUkFUSU9OX0NPVU5UID0gMDsNCisNCisJLyoqDQorCSAqIFRoZSBtZXRhIG9iamVjdCBpZCBmb3IgdGhlICd7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmFjdGl2aXRpZXMuaW50ZXJuYWwuaW1wbC5SYXRlSW1wbCA8ZW0+UmF0ZTwvZW0+fScgY2xhc3MuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5hY3Rpdml0aWVzLmludGVybmFsLmltcGwuUmF0ZUltcGwNCisJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYWN0aXZpdGllcy5pbnRlcm5hbC5pbXBsLkFjdGl2aXRpZXNQYWNrYWdlSW1wbCNnZXRSYXRlKCkNCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJaW50IFJBVEUgPSAyOw0KKw0KKwkvKioNCisJICogVGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPlJhdGU8L2I+PC9lbT4nIHJlZmVyZW5jZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICogQG9yZGVyZWQNCisJICovDQorCWludCBSQVRFX19SQVRFID0gMDsNCisNCisJLyoqDQorCSAqIFRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5CYXNlIEFjdGl2aXR5IEVkZ2U8L2I+PC9lbT4nIHJlZmVyZW5jZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICogQG9yZGVyZWQNCisJICovDQorCWludCBSQVRFX19CQVNFX0FDVElWSVRZX0VER0UgPSAxOw0KKw0KKwkvKioNCisJICogVGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkJhc2UgT2JqZWN0IE5vZGU8L2I+PC9lbT4nIHJlZmVyZW5jZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICogQG9yZGVyZWQNCisJICovDQorCWludCBSQVRFX19CQVNFX09CSkVDVF9OT0RFID0gMjsNCisNCisJLyoqDQorCSAqIFRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5CYXNlIFBhcmFtZXRlcjwvYj48L2VtPicgcmVmZXJlbmNlLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKiBAb3JkZXJlZA0KKwkgKi8NCisJaW50IFJBVEVfX0JBU0VfUEFSQU1FVEVSID0gMzsNCisNCisJLyoqDQorCSAqIFRoZSBudW1iZXIgb2Ygc3RydWN0dXJhbCBmZWF0dXJlcyBvZiB0aGUgJzxlbT5SYXRlPC9lbT4nIGNsYXNzLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKiBAb3JkZXJlZA0KKwkgKi8NCisJaW50IFJBVEVfRkVBVFVSRV9DT1VOVCA9IDQ7DQorDQorCS8qKg0KKwkgKiBUaGUgbnVtYmVyIG9mIG9wZXJhdGlvbnMgb2YgdGhlICc8ZW0+UmF0ZTwvZW0+JyBjbGFzcy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICogQG9yZGVyZWQNCisJICovDQorCWludCBSQVRFX09QRVJBVElPTl9DT1VOVCA9IDA7DQorDQorCS8qKg0KKwkgKiBUaGUgbWV0YSBvYmplY3QgaWQgZm9yIHRoZSAne0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5hY3Rpdml0aWVzLmludGVybmFsLmltcGwuTm9CdWZmZXJJbXBsIDxlbT5ObyBCdWZmZXI8L2VtPn0nIGNsYXNzLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYWN0aXZpdGllcy5pbnRlcm5hbC5pbXBsLk5vQnVmZmVySW1wbA0KKwkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5hY3Rpdml0aWVzLmludGVybmFsLmltcGwuQWN0aXZpdGllc1BhY2thZ2VJbXBsI2dldE5vQnVmZmVyKCkNCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJaW50IE5PX0JVRkZFUiA9IDM7DQorDQorCS8qKg0KKwkgKiBUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+QmFzZSBPYmplY3QgTm9kZTwvYj48L2VtPicgcmVmZXJlbmNlLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKiBAb3JkZXJlZA0KKwkgKi8NCisJaW50IE5PX0JVRkZFUl9fQkFTRV9PQkpFQ1RfTk9ERSA9IDA7DQorDQorCS8qKg0KKwkgKiBUaGUgbnVtYmVyIG9mIHN0cnVjdHVyYWwgZmVhdHVyZXMgb2YgdGhlICc8ZW0+Tm8gQnVmZmVyPC9lbT4nIGNsYXNzLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKiBAb3JkZXJlZA0KKwkgKi8NCisJaW50IE5PX0JVRkZFUl9GRUFUVVJFX0NPVU5UID0gMTsNCisNCisJLyoqDQorCSAqIFRoZSBudW1iZXIgb2Ygb3BlcmF0aW9ucyBvZiB0aGUgJzxlbT5ObyBCdWZmZXI8L2VtPicgY2xhc3MuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqIEBvcmRlcmVkDQorCSAqLw0KKwlpbnQgTk9fQlVGRkVSX09QRVJBVElPTl9DT1VOVCA9IDA7DQorDQorCS8qKg0KKwkgKiBUaGUgbWV0YSBvYmplY3QgaWQgZm9yIHRoZSAne0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5hY3Rpdml0aWVzLmludGVybmFsLmltcGwuRGlzY3JldGVJbXBsIDxlbT5EaXNjcmV0ZTwvZW0+fScgY2xhc3MuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5hY3Rpdml0aWVzLmludGVybmFsLmltcGwuRGlzY3JldGVJbXBsDQorCSAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmFjdGl2aXRpZXMuaW50ZXJuYWwuaW1wbC5BY3Rpdml0aWVzUGFja2FnZUltcGwjZ2V0RGlzY3JldGUoKQ0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlpbnQgRElTQ1JFVEUgPSA0Ow0KKw0KKwkvKioNCisJICogVGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPlJhdGU8L2I+PC9lbT4nIHJlZmVyZW5jZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICogQG9yZGVyZWQNCisJICovDQorCWludCBESVNDUkVURV9fUkFURSA9IFJBVEVfX1JBVEU7DQorDQorCS8qKg0KKwkgKiBUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+QmFzZSBBY3Rpdml0eSBFZGdlPC9iPjwvZW0+JyByZWZlcmVuY2UuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqIEBvcmRlcmVkDQorCSAqLw0KKwlpbnQgRElTQ1JFVEVfX0JBU0VfQUNUSVZJVFlfRURHRSA9IFJBVEVfX0JBU0VfQUNUSVZJVFlfRURHRTsNCisNCisJLyoqDQorCSAqIFRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5CYXNlIE9iamVjdCBOb2RlPC9iPjwvZW0+JyByZWZlcmVuY2UuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqIEBvcmRlcmVkDQorCSAqLw0KKwlpbnQgRElTQ1JFVEVfX0JBU0VfT0JKRUNUX05PREUgPSBSQVRFX19CQVNFX09CSkVDVF9OT0RFOw0KKw0KKwkvKioNCisJICogVGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkJhc2UgUGFyYW1ldGVyPC9iPjwvZW0+JyByZWZlcmVuY2UuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqIEBvcmRlcmVkDQorCSAqLw0KKwlpbnQgRElTQ1JFVEVfX0JBU0VfUEFSQU1FVEVSID0gUkFURV9fQkFTRV9QQVJBTUVURVI7DQorDQorCS8qKg0KKwkgKiBUaGUgbnVtYmVyIG9mIHN0cnVjdHVyYWwgZmVhdHVyZXMgb2YgdGhlICc8ZW0+RGlzY3JldGU8L2VtPicgY2xhc3MuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqIEBvcmRlcmVkDQorCSAqLw0KKwlpbnQgRElTQ1JFVEVfRkVBVFVSRV9DT1VOVCA9IFJBVEVfRkVBVFVSRV9DT1VOVCArIDA7DQorDQorCS8qKg0KKwkgKiBUaGUgbnVtYmVyIG9mIG9wZXJhdGlvbnMgb2YgdGhlICc8ZW0+RGlzY3JldGU8L2VtPicgY2xhc3MuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqIEBvcmRlcmVkDQorCSAqLw0KKwlpbnQgRElTQ1JFVEVfT1BFUkFUSU9OX0NPVU5UID0gUkFURV9PUEVSQVRJT05fQ09VTlQgKyAwOw0KKw0KKwkvKioNCisJICogVGhlIG1ldGEgb2JqZWN0IGlkIGZvciB0aGUgJ3tAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYWN0aXZpdGllcy5pbnRlcm5hbC5pbXBsLkNvbnRpbnVvdXNJbXBsIDxlbT5Db250aW51b3VzPC9lbT59JyBjbGFzcy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmFjdGl2aXRpZXMuaW50ZXJuYWwuaW1wbC5Db250aW51b3VzSW1wbA0KKwkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5hY3Rpdml0aWVzLmludGVybmFsLmltcGwuQWN0aXZpdGllc1BhY2thZ2VJbXBsI2dldENvbnRpbnVvdXMoKQ0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlpbnQgQ09OVElOVU9VUyA9IDU7DQorDQorCS8qKg0KKwkgKiBUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+UmF0ZTwvYj48L2VtPicgcmVmZXJlbmNlLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKiBAb3JkZXJlZA0KKwkgKi8NCisJaW50IENPTlRJTlVPVVNfX1JBVEUgPSBSQVRFX19SQVRFOw0KKw0KKwkvKioNCisJICogVGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkJhc2UgQWN0aXZpdHkgRWRnZTwvYj48L2VtPicgcmVmZXJlbmNlLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKiBAb3JkZXJlZA0KKwkgKi8NCisJaW50IENPTlRJTlVPVVNfX0JBU0VfQUNUSVZJVFlfRURHRSA9IFJBVEVfX0JBU0VfQUNUSVZJVFlfRURHRTsNCisNCisJLyoqDQorCSAqIFRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5CYXNlIE9iamVjdCBOb2RlPC9iPjwvZW0+JyByZWZlcmVuY2UuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqIEBvcmRlcmVkDQorCSAqLw0KKwlpbnQgQ09OVElOVU9VU19fQkFTRV9PQkpFQ1RfTk9ERSA9IFJBVEVfX0JBU0VfT0JKRUNUX05PREU7DQorDQorCS8qKg0KKwkgKiBUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+QmFzZSBQYXJhbWV0ZXI8L2I+PC9lbT4nIHJlZmVyZW5jZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICogQG9yZGVyZWQNCisJICovDQorCWludCBDT05USU5VT1VTX19CQVNFX1BBUkFNRVRFUiA9IFJBVEVfX0JBU0VfUEFSQU1FVEVSOw0KKw0KKwkvKioNCisJICogVGhlIG51bWJlciBvZiBzdHJ1Y3R1cmFsIGZlYXR1cmVzIG9mIHRoZSAnPGVtPkNvbnRpbnVvdXM8L2VtPicgY2xhc3MuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqIEBvcmRlcmVkDQorCSAqLw0KKwlpbnQgQ09OVElOVU9VU19GRUFUVVJFX0NPVU5UID0gUkFURV9GRUFUVVJFX0NPVU5UICsgMDsNCisNCisJLyoqDQorCSAqIFRoZSBudW1iZXIgb2Ygb3BlcmF0aW9ucyBvZiB0aGUgJzxlbT5Db250aW51b3VzPC9lbT4nIGNsYXNzLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKiBAb3JkZXJlZA0KKwkgKi8NCisJaW50IENPTlRJTlVPVVNfT1BFUkFUSU9OX0NPVU5UID0gUkFURV9PUEVSQVRJT05fQ09VTlQgKyAwOw0KKw0KKwkvKioNCisJICogVGhlIG1ldGEgb2JqZWN0IGlkIGZvciB0aGUgJ3tAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYWN0aXZpdGllcy5pbnRlcm5hbC5pbXBsLlByb2JhYmlsaXR5SW1wbCA8ZW0+UHJvYmFiaWxpdHk8L2VtPn0nIGNsYXNzLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYWN0aXZpdGllcy5pbnRlcm5hbC5pbXBsLlByb2JhYmlsaXR5SW1wbA0KKwkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5hY3Rpdml0aWVzLmludGVybmFsLmltcGwuQWN0aXZpdGllc1BhY2thZ2VJbXBsI2dldFByb2JhYmlsaXR5KCkNCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJaW50IFBST0JBQklMSVRZID0gNjsNCisNCisJLyoqDQorCSAqIFRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5CYXNlIEFjdGl2aXR5IEVkZ2U8L2I+PC9lbT4nIHJlZmVyZW5jZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICogQG9yZGVyZWQNCisJICovDQorCWludCBQUk9CQUJJTElUWV9fQkFTRV9BQ1RJVklUWV9FREdFID0gMDsNCisNCisJLyoqDQorCSAqIFRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5CYXNlIFBhcmFtZXRlciBTZXQ8L2I+PC9lbT4nIHJlZmVyZW5jZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICogQG9yZGVyZWQNCisJICovDQorCWludCBQUk9CQUJJTElUWV9fQkFTRV9QQVJBTUVURVJfU0VUID0gMTsNCisNCisJLyoqDQorCSAqIFRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5Qcm9iYWJpbGl0eTwvYj48L2VtPicgcmVmZXJlbmNlLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKiBAb3JkZXJlZA0KKwkgKi8NCisJaW50IFBST0JBQklMSVRZX19QUk9CQUJJTElUWSA9IDI7DQorDQorCS8qKg0KKwkgKiBUaGUgbnVtYmVyIG9mIHN0cnVjdHVyYWwgZmVhdHVyZXMgb2YgdGhlICc8ZW0+UHJvYmFiaWxpdHk8L2VtPicgY2xhc3MuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqIEBvcmRlcmVkDQorCSAqLw0KKwlpbnQgUFJPQkFCSUxJVFlfRkVBVFVSRV9DT1VOVCA9IDM7DQorDQorCS8qKg0KKwkgKiBUaGUgbnVtYmVyIG9mIG9wZXJhdGlvbnMgb2YgdGhlICc8ZW0+UHJvYmFiaWxpdHk8L2VtPicgY2xhc3MuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqIEBvcmRlcmVkDQorCSAqLw0KKwlpbnQgUFJPQkFCSUxJVFlfT1BFUkFUSU9OX0NPVU5UID0gMDsNCisNCisJLyoqDQorCSAqIFRoZSBtZXRhIG9iamVjdCBpZCBmb3IgdGhlICd7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmFjdGl2aXRpZXMuaW50ZXJuYWwuaW1wbC5PcHRpb25hbEltcGwgPGVtPk9wdGlvbmFsPC9lbT59JyBjbGFzcy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmFjdGl2aXRpZXMuaW50ZXJuYWwuaW1wbC5PcHRpb25hbEltcGwNCisJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYWN0aXZpdGllcy5pbnRlcm5hbC5pbXBsLkFjdGl2aXRpZXNQYWNrYWdlSW1wbCNnZXRPcHRpb25hbCgpDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCWludCBPUFRJT05BTCA9IDc7DQorDQorCS8qKg0KKwkgKiBUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+QmFzZSBQYXJhbWV0ZXI8L2I+PC9lbT4nIHJlZmVyZW5jZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICogQG9yZGVyZWQNCisJICovDQorCWludCBPUFRJT05BTF9fQkFTRV9QQVJBTUVURVIgPSAwOw0KKw0KKwkvKioNCisJICogVGhlIG51bWJlciBvZiBzdHJ1Y3R1cmFsIGZlYXR1cmVzIG9mIHRoZSAnPGVtPk9wdGlvbmFsPC9lbT4nIGNsYXNzLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKiBAb3JkZXJlZA0KKwkgKi8NCisJaW50IE9QVElPTkFMX0ZFQVRVUkVfQ09VTlQgPSAxOw0KKw0KKwkvKioNCisJICogVGhlIG51bWJlciBvZiBvcGVyYXRpb25zIG9mIHRoZSAnPGVtPk9wdGlvbmFsPC9lbT4nIGNsYXNzLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKiBAb3JkZXJlZA0KKwkgKi8NCisJaW50IE9QVElPTkFMX09QRVJBVElPTl9DT1VOVCA9IDA7DQorDQorDQorCS8qKg0KKwkgKiBSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJ3tAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYWN0aXZpdGllcy5PdmVyd3JpdGUgPGVtPk92ZXJ3cml0ZTwvZW0+fScuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAcmV0dXJuIHRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJzxlbT5PdmVyd3JpdGU8L2VtPicuDQorCSAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmFjdGl2aXRpZXMuT3ZlcndyaXRlDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUVDbGFzcyBnZXRPdmVyd3JpdGUoKTsNCisNCisJLyoqDQorCSAqIFJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgcmVmZXJlbmNlICd7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmFjdGl2aXRpZXMuT3ZlcndyaXRlI2dldEJhc2VfT2JqZWN0Tm9kZSA8ZW0+QmFzZSBPYmplY3QgTm9kZTwvZW0+fScuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAcmV0dXJuIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIHJlZmVyZW5jZSAnPGVtPkJhc2UgT2JqZWN0IE5vZGU8L2VtPicuDQorCSAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmFjdGl2aXRpZXMuT3ZlcndyaXRlI2dldEJhc2VfT2JqZWN0Tm9kZSgpDQorCSAqIEBzZWUgI2dldE92ZXJ3cml0ZSgpDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUVSZWZlcmVuY2UgZ2V0T3ZlcndyaXRlX0Jhc2VfT2JqZWN0Tm9kZSgpOw0KKw0KKwkvKioNCisJICogUmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICd7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmFjdGl2aXRpZXMuQ29udHJvbE9wZXJhdG9yIDxlbT5Db250cm9sIE9wZXJhdG9yPC9lbT59Jy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEByZXR1cm4gdGhlIG1ldGEgb2JqZWN0IGZvciBjbGFzcyAnPGVtPkNvbnRyb2wgT3BlcmF0b3I8L2VtPicuDQorCSAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmFjdGl2aXRpZXMuQ29udHJvbE9wZXJhdG9yDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUVDbGFzcyBnZXRDb250cm9sT3BlcmF0b3IoKTsNCisNCisJLyoqDQorCSAqIFJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgcmVmZXJlbmNlICd7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmFjdGl2aXRpZXMuQ29udHJvbE9wZXJhdG9yI2dldEJhc2VfQmVoYXZpb3IgPGVtPkJhc2UgQmVoYXZpb3I8L2VtPn0nLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHJldHVybiB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSByZWZlcmVuY2UgJzxlbT5CYXNlIEJlaGF2aW9yPC9lbT4nLg0KKwkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5hY3Rpdml0aWVzLkNvbnRyb2xPcGVyYXRvciNnZXRCYXNlX0JlaGF2aW9yKCkNCisJICogQHNlZSAjZ2V0Q29udHJvbE9wZXJhdG9yKCkNCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJRVJlZmVyZW5jZSBnZXRDb250cm9sT3BlcmF0b3JfQmFzZV9CZWhhdmlvcigpOw0KKw0KKwkvKioNCisJICogUmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSByZWZlcmVuY2UgJ3tAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYWN0aXZpdGllcy5Db250cm9sT3BlcmF0b3IjZ2V0QmFzZV9PcGVyYXRpb24gPGVtPkJhc2UgT3BlcmF0aW9uPC9lbT59Jy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEByZXR1cm4gdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgcmVmZXJlbmNlICc8ZW0+QmFzZSBPcGVyYXRpb248L2VtPicuDQorCSAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmFjdGl2aXRpZXMuQ29udHJvbE9wZXJhdG9yI2dldEJhc2VfT3BlcmF0aW9uKCkNCisJICogQHNlZSAjZ2V0Q29udHJvbE9wZXJhdG9yKCkNCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJRVJlZmVyZW5jZSBnZXRDb250cm9sT3BlcmF0b3JfQmFzZV9PcGVyYXRpb24oKTsNCisNCisJLyoqDQorCSAqIFJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciBjbGFzcyAne0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5hY3Rpdml0aWVzLlJhdGUgPGVtPlJhdGU8L2VtPn0nLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHJldHVybiB0aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICc8ZW0+UmF0ZTwvZW0+Jy4NCisJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYWN0aXZpdGllcy5SYXRlDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUVDbGFzcyBnZXRSYXRlKCk7DQorDQorCS8qKg0KKwkgKiBSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIHJlZmVyZW5jZSAne0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5hY3Rpdml0aWVzLlJhdGUjZ2V0UmF0ZSA8ZW0+UmF0ZTwvZW0+fScuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAcmV0dXJuIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIHJlZmVyZW5jZSAnPGVtPlJhdGU8L2VtPicuDQorCSAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmFjdGl2aXRpZXMuUmF0ZSNnZXRSYXRlKCkNCisJICogQHNlZSAjZ2V0UmF0ZSgpDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUVSZWZlcmVuY2UgZ2V0UmF0ZV9SYXRlKCk7DQorDQorCS8qKg0KKwkgKiBSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIHJlZmVyZW5jZSAne0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5hY3Rpdml0aWVzLlJhdGUjZ2V0QmFzZV9BY3Rpdml0eUVkZ2UgPGVtPkJhc2UgQWN0aXZpdHkgRWRnZTwvZW0+fScuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAcmV0dXJuIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIHJlZmVyZW5jZSAnPGVtPkJhc2UgQWN0aXZpdHkgRWRnZTwvZW0+Jy4NCisJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYWN0aXZpdGllcy5SYXRlI2dldEJhc2VfQWN0aXZpdHlFZGdlKCkNCisJICogQHNlZSAjZ2V0UmF0ZSgpDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUVSZWZlcmVuY2UgZ2V0UmF0ZV9CYXNlX0FjdGl2aXR5RWRnZSgpOw0KKw0KKwkvKioNCisJICogUmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSByZWZlcmVuY2UgJ3tAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYWN0aXZpdGllcy5SYXRlI2dldEJhc2VfT2JqZWN0Tm9kZSA8ZW0+QmFzZSBPYmplY3QgTm9kZTwvZW0+fScuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAcmV0dXJuIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIHJlZmVyZW5jZSAnPGVtPkJhc2UgT2JqZWN0IE5vZGU8L2VtPicuDQorCSAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmFjdGl2aXRpZXMuUmF0ZSNnZXRCYXNlX09iamVjdE5vZGUoKQ0KKwkgKiBAc2VlICNnZXRSYXRlKCkNCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJRVJlZmVyZW5jZSBnZXRSYXRlX0Jhc2VfT2JqZWN0Tm9kZSgpOw0KKw0KKwkvKioNCisJICogUmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSByZWZlcmVuY2UgJ3tAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYWN0aXZpdGllcy5SYXRlI2dldEJhc2VfUGFyYW1ldGVyIDxlbT5CYXNlIFBhcmFtZXRlcjwvZW0+fScuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAcmV0dXJuIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIHJlZmVyZW5jZSAnPGVtPkJhc2UgUGFyYW1ldGVyPC9lbT4nLg0KKwkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5hY3Rpdml0aWVzLlJhdGUjZ2V0QmFzZV9QYXJhbWV0ZXIoKQ0KKwkgKiBAc2VlICNnZXRSYXRlKCkNCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJRVJlZmVyZW5jZSBnZXRSYXRlX0Jhc2VfUGFyYW1ldGVyKCk7DQorDQorCS8qKg0KKwkgKiBSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJ3tAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYWN0aXZpdGllcy5Ob0J1ZmZlciA8ZW0+Tm8gQnVmZmVyPC9lbT59Jy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEByZXR1cm4gdGhlIG1ldGEgb2JqZWN0IGZvciBjbGFzcyAnPGVtPk5vIEJ1ZmZlcjwvZW0+Jy4NCisJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYWN0aXZpdGllcy5Ob0J1ZmZlcg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlFQ2xhc3MgZ2V0Tm9CdWZmZXIoKTsNCisNCisJLyoqDQorCSAqIFJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgcmVmZXJlbmNlICd7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmFjdGl2aXRpZXMuTm9CdWZmZXIjZ2V0QmFzZV9PYmplY3ROb2RlIDxlbT5CYXNlIE9iamVjdCBOb2RlPC9lbT59Jy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEByZXR1cm4gdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgcmVmZXJlbmNlICc8ZW0+QmFzZSBPYmplY3QgTm9kZTwvZW0+Jy4NCisJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYWN0aXZpdGllcy5Ob0J1ZmZlciNnZXRCYXNlX09iamVjdE5vZGUoKQ0KKwkgKiBAc2VlICNnZXROb0J1ZmZlcigpDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUVSZWZlcmVuY2UgZ2V0Tm9CdWZmZXJfQmFzZV9PYmplY3ROb2RlKCk7DQorDQorCS8qKg0KKwkgKiBSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJ3tAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYWN0aXZpdGllcy5EaXNjcmV0ZSA8ZW0+RGlzY3JldGU8L2VtPn0nLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHJldHVybiB0aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICc8ZW0+RGlzY3JldGU8L2VtPicuDQorCSAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmFjdGl2aXRpZXMuRGlzY3JldGUNCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJRUNsYXNzIGdldERpc2NyZXRlKCk7DQorDQorCS8qKg0KKwkgKiBSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJ3tAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYWN0aXZpdGllcy5Db250aW51b3VzIDxlbT5Db250aW51b3VzPC9lbT59Jy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEByZXR1cm4gdGhlIG1ldGEgb2JqZWN0IGZvciBjbGFzcyAnPGVtPkNvbnRpbnVvdXM8L2VtPicuDQorCSAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmFjdGl2aXRpZXMuQ29udGludW91cw0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlFQ2xhc3MgZ2V0Q29udGludW91cygpOw0KKw0KKwkvKioNCisJICogUmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICd7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmFjdGl2aXRpZXMuUHJvYmFiaWxpdHkgPGVtPlByb2JhYmlsaXR5PC9lbT59Jy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEByZXR1cm4gdGhlIG1ldGEgb2JqZWN0IGZvciBjbGFzcyAnPGVtPlByb2JhYmlsaXR5PC9lbT4nLg0KKwkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5hY3Rpdml0aWVzLlByb2JhYmlsaXR5DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUVDbGFzcyBnZXRQcm9iYWJpbGl0eSgpOw0KKw0KKwkvKioNCisJICogUmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSByZWZlcmVuY2UgJ3tAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYWN0aXZpdGllcy5Qcm9iYWJpbGl0eSNnZXRCYXNlX0FjdGl2aXR5RWRnZSA8ZW0+QmFzZSBBY3Rpdml0eSBFZGdlPC9lbT59Jy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEByZXR1cm4gdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgcmVmZXJlbmNlICc8ZW0+QmFzZSBBY3Rpdml0eSBFZGdlPC9lbT4nLg0KKwkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5hY3Rpdml0aWVzLlByb2JhYmlsaXR5I2dldEJhc2VfQWN0aXZpdHlFZGdlKCkNCisJICogQHNlZSAjZ2V0UHJvYmFiaWxpdHkoKQ0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlFUmVmZXJlbmNlIGdldFByb2JhYmlsaXR5X0Jhc2VfQWN0aXZpdHlFZGdlKCk7DQorDQorCS8qKg0KKwkgKiBSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIHJlZmVyZW5jZSAne0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5hY3Rpdml0aWVzLlByb2JhYmlsaXR5I2dldEJhc2VfUGFyYW1ldGVyU2V0IDxlbT5CYXNlIFBhcmFtZXRlciBTZXQ8L2VtPn0nLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHJldHVybiB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSByZWZlcmVuY2UgJzxlbT5CYXNlIFBhcmFtZXRlciBTZXQ8L2VtPicuDQorCSAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmFjdGl2aXRpZXMuUHJvYmFiaWxpdHkjZ2V0QmFzZV9QYXJhbWV0ZXJTZXQoKQ0KKwkgKiBAc2VlICNnZXRQcm9iYWJpbGl0eSgpDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUVSZWZlcmVuY2UgZ2V0UHJvYmFiaWxpdHlfQmFzZV9QYXJhbWV0ZXJTZXQoKTsNCisNCisJLyoqDQorCSAqIFJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgcmVmZXJlbmNlICd7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmFjdGl2aXRpZXMuUHJvYmFiaWxpdHkjZ2V0UHJvYmFiaWxpdHkgPGVtPlByb2JhYmlsaXR5PC9lbT59Jy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEByZXR1cm4gdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgcmVmZXJlbmNlICc8ZW0+UHJvYmFiaWxpdHk8L2VtPicuDQorCSAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmFjdGl2aXRpZXMuUHJvYmFiaWxpdHkjZ2V0UHJvYmFiaWxpdHkoKQ0KKwkgKiBAc2VlICNnZXRQcm9iYWJpbGl0eSgpDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUVSZWZlcmVuY2UgZ2V0UHJvYmFiaWxpdHlfUHJvYmFiaWxpdHkoKTsNCisNCisJLyoqDQorCSAqIFJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciBjbGFzcyAne0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5hY3Rpdml0aWVzLk9wdGlvbmFsIDxlbT5PcHRpb25hbDwvZW0+fScuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAcmV0dXJuIHRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJzxlbT5PcHRpb25hbDwvZW0+Jy4NCisJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYWN0aXZpdGllcy5PcHRpb25hbA0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlFQ2xhc3MgZ2V0T3B0aW9uYWwoKTsNCisNCisJLyoqDQorCSAqIFJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgcmVmZXJlbmNlICd7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmFjdGl2aXRpZXMuT3B0aW9uYWwjZ2V0QmFzZV9QYXJhbWV0ZXIgPGVtPkJhc2UgUGFyYW1ldGVyPC9lbT59Jy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEByZXR1cm4gdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgcmVmZXJlbmNlICc8ZW0+QmFzZSBQYXJhbWV0ZXI8L2VtPicuDQorCSAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmFjdGl2aXRpZXMuT3B0aW9uYWwjZ2V0QmFzZV9QYXJhbWV0ZXIoKQ0KKwkgKiBAc2VlICNnZXRPcHRpb25hbCgpDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUVSZWZlcmVuY2UgZ2V0T3B0aW9uYWxfQmFzZV9QYXJhbWV0ZXIoKTsNCisNCisJLyoqDQorCSAqIFJldHVybnMgdGhlIGZhY3RvcnkgdGhhdCBjcmVhdGVzIHRoZSBpbnN0YW5jZXMgb2YgdGhlIG1vZGVsLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHJldHVybiB0aGUgZmFjdG9yeSB0aGF0IGNyZWF0ZXMgdGhlIGluc3RhbmNlcyBvZiB0aGUgbW9kZWwuDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUFjdGl2aXRpZXNGYWN0b3J5IGdldEFjdGl2aXRpZXNGYWN0b3J5KCk7DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiBEZWZpbmVzIGxpdGVyYWxzIGZvciB0aGUgbWV0YSBvYmplY3RzIHRoYXQgcmVwcmVzZW50DQorCSAqIDx1bD4NCisJICogICA8bGk+ZWFjaCBjbGFzcyw8L2xpPg0KKwkgKiAgIDxsaT5lYWNoIGZlYXR1cmUgb2YgZWFjaCBjbGFzcyw8L2xpPg0KKwkgKiAgIDxsaT5lYWNoIG9wZXJhdGlvbiBvZiBlYWNoIGNsYXNzLDwvbGk+DQorCSAqICAgPGxpPmVhY2ggZW51bSw8L2xpPg0KKwkgKiAgIDxsaT5hbmQgZWFjaCBkYXRhIHR5cGU8L2xpPg0KKwkgKiA8L3VsPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJaW50ZXJmYWNlIExpdGVyYWxzIHsNCisJCS8qKg0KKwkJICogVGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAne0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5hY3Rpdml0aWVzLmludGVybmFsLmltcGwuT3ZlcndyaXRlSW1wbCA8ZW0+T3ZlcndyaXRlPC9lbT59JyBjbGFzcy4NCisJCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJCSAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmFjdGl2aXRpZXMuaW50ZXJuYWwuaW1wbC5PdmVyd3JpdGVJbXBsDQorCQkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5hY3Rpdml0aWVzLmludGVybmFsLmltcGwuQWN0aXZpdGllc1BhY2thZ2VJbXBsI2dldE92ZXJ3cml0ZSgpDQorCQkgKiBAZ2VuZXJhdGVkDQorCQkgKi8NCisJCUVDbGFzcyBPVkVSV1JJVEUgPSBlSU5TVEFOQ0UuZ2V0T3ZlcndyaXRlKCk7DQorDQorCQkvKioNCisJCSAqIFRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxlbT48Yj5CYXNlIE9iamVjdCBOb2RlPC9iPjwvZW0+JyByZWZlcmVuY2UgZmVhdHVyZS4NCisJCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJCSAqIEBnZW5lcmF0ZWQNCisJCSAqLw0KKwkJRVJlZmVyZW5jZSBPVkVSV1JJVEVfX0JBU0VfT0JKRUNUX05PREUgPSBlSU5TVEFOQ0UuZ2V0T3ZlcndyaXRlX0Jhc2VfT2JqZWN0Tm9kZSgpOw0KKw0KKwkJLyoqDQorCQkgKiBUaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICd7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmFjdGl2aXRpZXMuaW50ZXJuYWwuaW1wbC5Db250cm9sT3BlcmF0b3JJbXBsIDxlbT5Db250cm9sIE9wZXJhdG9yPC9lbT59JyBjbGFzcy4NCisJCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJCSAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmFjdGl2aXRpZXMuaW50ZXJuYWwuaW1wbC5Db250cm9sT3BlcmF0b3JJbXBsDQorCQkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5hY3Rpdml0aWVzLmludGVybmFsLmltcGwuQWN0aXZpdGllc1BhY2thZ2VJbXBsI2dldENvbnRyb2xPcGVyYXRvcigpDQorCQkgKiBAZ2VuZXJhdGVkDQorCQkgKi8NCisJCUVDbGFzcyBDT05UUk9MX09QRVJBVE9SID0gZUlOU1RBTkNFLmdldENvbnRyb2xPcGVyYXRvcigpOw0KKw0KKwkJLyoqDQorCQkgKiBUaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8ZW0+PGI+QmFzZSBCZWhhdmlvcjwvYj48L2VtPicgcmVmZXJlbmNlIGZlYXR1cmUuDQorCQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCQkgKiBAZ2VuZXJhdGVkDQorCQkgKi8NCisJCUVSZWZlcmVuY2UgQ09OVFJPTF9PUEVSQVRPUl9fQkFTRV9CRUhBVklPUiA9IGVJTlNUQU5DRS5nZXRDb250cm9sT3BlcmF0b3JfQmFzZV9CZWhhdmlvcigpOw0KKw0KKwkJLyoqDQorCQkgKiBUaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8ZW0+PGI+QmFzZSBPcGVyYXRpb248L2I+PC9lbT4nIHJlZmVyZW5jZSBmZWF0dXJlLg0KKwkJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkJICogQGdlbmVyYXRlZA0KKwkJICovDQorCQlFUmVmZXJlbmNlIENPTlRST0xfT1BFUkFUT1JfX0JBU0VfT1BFUkFUSU9OID0gZUlOU1RBTkNFLmdldENvbnRyb2xPcGVyYXRvcl9CYXNlX09wZXJhdGlvbigpOw0KKw0KKwkJLyoqDQorCQkgKiBUaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICd7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmFjdGl2aXRpZXMuaW50ZXJuYWwuaW1wbC5SYXRlSW1wbCA8ZW0+UmF0ZTwvZW0+fScgY2xhc3MuDQorCQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCQkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5hY3Rpdml0aWVzLmludGVybmFsLmltcGwuUmF0ZUltcGwNCisJCSAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmFjdGl2aXRpZXMuaW50ZXJuYWwuaW1wbC5BY3Rpdml0aWVzUGFja2FnZUltcGwjZ2V0UmF0ZSgpDQorCQkgKiBAZ2VuZXJhdGVkDQorCQkgKi8NCisJCUVDbGFzcyBSQVRFID0gZUlOU1RBTkNFLmdldFJhdGUoKTsNCisNCisJCS8qKg0KKwkJICogVGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPGVtPjxiPlJhdGU8L2I+PC9lbT4nIHJlZmVyZW5jZSBmZWF0dXJlLg0KKwkJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkJICogQGdlbmVyYXRlZA0KKwkJICovDQorCQlFUmVmZXJlbmNlIFJBVEVfX1JBVEUgPSBlSU5TVEFOQ0UuZ2V0UmF0ZV9SYXRlKCk7DQorDQorCQkvKioNCisJCSAqIFRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxlbT48Yj5CYXNlIEFjdGl2aXR5IEVkZ2U8L2I+PC9lbT4nIHJlZmVyZW5jZSBmZWF0dXJlLg0KKwkJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkJICogQGdlbmVyYXRlZA0KKwkJICovDQorCQlFUmVmZXJlbmNlIFJBVEVfX0JBU0VfQUNUSVZJVFlfRURHRSA9IGVJTlNUQU5DRS5nZXRSYXRlX0Jhc2VfQWN0aXZpdHlFZGdlKCk7DQorDQorCQkvKioNCisJCSAqIFRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxlbT48Yj5CYXNlIE9iamVjdCBOb2RlPC9iPjwvZW0+JyByZWZlcmVuY2UgZmVhdHVyZS4NCisJCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJCSAqIEBnZW5lcmF0ZWQNCisJCSAqLw0KKwkJRVJlZmVyZW5jZSBSQVRFX19CQVNFX09CSkVDVF9OT0RFID0gZUlOU1RBTkNFLmdldFJhdGVfQmFzZV9PYmplY3ROb2RlKCk7DQorDQorCQkvKioNCisJCSAqIFRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxlbT48Yj5CYXNlIFBhcmFtZXRlcjwvYj48L2VtPicgcmVmZXJlbmNlIGZlYXR1cmUuDQorCQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCQkgKiBAZ2VuZXJhdGVkDQorCQkgKi8NCisJCUVSZWZlcmVuY2UgUkFURV9fQkFTRV9QQVJBTUVURVIgPSBlSU5TVEFOQ0UuZ2V0UmF0ZV9CYXNlX1BhcmFtZXRlcigpOw0KKw0KKwkJLyoqDQorCQkgKiBUaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICd7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmFjdGl2aXRpZXMuaW50ZXJuYWwuaW1wbC5Ob0J1ZmZlckltcGwgPGVtPk5vIEJ1ZmZlcjwvZW0+fScgY2xhc3MuDQorCQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCQkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5hY3Rpdml0aWVzLmludGVybmFsLmltcGwuTm9CdWZmZXJJbXBsDQorCQkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5hY3Rpdml0aWVzLmludGVybmFsLmltcGwuQWN0aXZpdGllc1BhY2thZ2VJbXBsI2dldE5vQnVmZmVyKCkNCisJCSAqIEBnZW5lcmF0ZWQNCisJCSAqLw0KKwkJRUNsYXNzIE5PX0JVRkZFUiA9IGVJTlNUQU5DRS5nZXROb0J1ZmZlcigpOw0KKw0KKwkJLyoqDQorCQkgKiBUaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8ZW0+PGI+QmFzZSBPYmplY3QgTm9kZTwvYj48L2VtPicgcmVmZXJlbmNlIGZlYXR1cmUuDQorCQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCQkgKiBAZ2VuZXJhdGVkDQorCQkgKi8NCisJCUVSZWZlcmVuY2UgTk9fQlVGRkVSX19CQVNFX09CSkVDVF9OT0RFID0gZUlOU1RBTkNFLmdldE5vQnVmZmVyX0Jhc2VfT2JqZWN0Tm9kZSgpOw0KKw0KKwkJLyoqDQorCQkgKiBUaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICd7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmFjdGl2aXRpZXMuaW50ZXJuYWwuaW1wbC5EaXNjcmV0ZUltcGwgPGVtPkRpc2NyZXRlPC9lbT59JyBjbGFzcy4NCisJCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJCSAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmFjdGl2aXRpZXMuaW50ZXJuYWwuaW1wbC5EaXNjcmV0ZUltcGwNCisJCSAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmFjdGl2aXRpZXMuaW50ZXJuYWwuaW1wbC5BY3Rpdml0aWVzUGFja2FnZUltcGwjZ2V0RGlzY3JldGUoKQ0KKwkJICogQGdlbmVyYXRlZA0KKwkJICovDQorCQlFQ2xhc3MgRElTQ1JFVEUgPSBlSU5TVEFOQ0UuZ2V0RGlzY3JldGUoKTsNCisNCisJCS8qKg0KKwkJICogVGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAne0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5hY3Rpdml0aWVzLmludGVybmFsLmltcGwuQ29udGludW91c0ltcGwgPGVtPkNvbnRpbnVvdXM8L2VtPn0nIGNsYXNzLg0KKwkJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYWN0aXZpdGllcy5pbnRlcm5hbC5pbXBsLkNvbnRpbnVvdXNJbXBsDQorCQkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5hY3Rpdml0aWVzLmludGVybmFsLmltcGwuQWN0aXZpdGllc1BhY2thZ2VJbXBsI2dldENvbnRpbnVvdXMoKQ0KKwkJICogQGdlbmVyYXRlZA0KKwkJICovDQorCQlFQ2xhc3MgQ09OVElOVU9VUyA9IGVJTlNUQU5DRS5nZXRDb250aW51b3VzKCk7DQorDQorCQkvKioNCisJCSAqIFRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJ3tAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYWN0aXZpdGllcy5pbnRlcm5hbC5pbXBsLlByb2JhYmlsaXR5SW1wbCA8ZW0+UHJvYmFiaWxpdHk8L2VtPn0nIGNsYXNzLg0KKwkJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYWN0aXZpdGllcy5pbnRlcm5hbC5pbXBsLlByb2JhYmlsaXR5SW1wbA0KKwkJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYWN0aXZpdGllcy5pbnRlcm5hbC5pbXBsLkFjdGl2aXRpZXNQYWNrYWdlSW1wbCNnZXRQcm9iYWJpbGl0eSgpDQorCQkgKiBAZ2VuZXJhdGVkDQorCQkgKi8NCisJCUVDbGFzcyBQUk9CQUJJTElUWSA9IGVJTlNUQU5DRS5nZXRQcm9iYWJpbGl0eSgpOw0KKw0KKwkJLyoqDQorCQkgKiBUaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8ZW0+PGI+QmFzZSBBY3Rpdml0eSBFZGdlPC9iPjwvZW0+JyByZWZlcmVuY2UgZmVhdHVyZS4NCisJCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJCSAqIEBnZW5lcmF0ZWQNCisJCSAqLw0KKwkJRVJlZmVyZW5jZSBQUk9CQUJJTElUWV9fQkFTRV9BQ1RJVklUWV9FREdFID0gZUlOU1RBTkNFLmdldFByb2JhYmlsaXR5X0Jhc2VfQWN0aXZpdHlFZGdlKCk7DQorDQorCQkvKioNCisJCSAqIFRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxlbT48Yj5CYXNlIFBhcmFtZXRlciBTZXQ8L2I+PC9lbT4nIHJlZmVyZW5jZSBmZWF0dXJlLg0KKwkJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkJICogQGdlbmVyYXRlZA0KKwkJICovDQorCQlFUmVmZXJlbmNlIFBST0JBQklMSVRZX19CQVNFX1BBUkFNRVRFUl9TRVQgPSBlSU5TVEFOQ0UuZ2V0UHJvYmFiaWxpdHlfQmFzZV9QYXJhbWV0ZXJTZXQoKTsNCisNCisJCS8qKg0KKwkJICogVGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPGVtPjxiPlByb2JhYmlsaXR5PC9iPjwvZW0+JyByZWZlcmVuY2UgZmVhdHVyZS4NCisJCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJCSAqIEBnZW5lcmF0ZWQNCisJCSAqLw0KKwkJRVJlZmVyZW5jZSBQUk9CQUJJTElUWV9fUFJPQkFCSUxJVFkgPSBlSU5TVEFOQ0UuZ2V0UHJvYmFiaWxpdHlfUHJvYmFiaWxpdHkoKTsNCisNCisJCS8qKg0KKwkJICogVGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAne0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5hY3Rpdml0aWVzLmludGVybmFsLmltcGwuT3B0aW9uYWxJbXBsIDxlbT5PcHRpb25hbDwvZW0+fScgY2xhc3MuDQorCQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCQkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5hY3Rpdml0aWVzLmludGVybmFsLmltcGwuT3B0aW9uYWxJbXBsDQorCQkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5hY3Rpdml0aWVzLmludGVybmFsLmltcGwuQWN0aXZpdGllc1BhY2thZ2VJbXBsI2dldE9wdGlvbmFsKCkNCisJCSAqIEBnZW5lcmF0ZWQNCisJCSAqLw0KKwkJRUNsYXNzIE9QVElPTkFMID0gZUlOU1RBTkNFLmdldE9wdGlvbmFsKCk7DQorDQorCQkvKioNCisJCSAqIFRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxlbT48Yj5CYXNlIFBhcmFtZXRlcjwvYj48L2VtPicgcmVmZXJlbmNlIGZlYXR1cmUuDQorCQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCQkgKiBAZ2VuZXJhdGVkDQorCQkgKi8NCisJCUVSZWZlcmVuY2UgT1BUSU9OQUxfX0JBU0VfUEFSQU1FVEVSID0gZUlOU1RBTkNFLmdldE9wdGlvbmFsX0Jhc2VfUGFyYW1ldGVyKCk7DQorDQorCX0NCisNCit9IC8vQWN0aXZpdGllc1BhY2thZ2UNCmRpZmYgLS1naXQgYS9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9hY3Rpdml0aWVzL0NvbnRpbnVvdXMuamF2YSBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L2FjdGl2aXRpZXMvQ29udGludW91cy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMzOWUzZTYKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9hY3Rpdml0aWVzL0NvbnRpbnVvdXMuamF2YQpAQCAtMCwwICsxLDI3IEBACisvKioNCisgKiBDb3B5cmlnaHQgKGMpIDIwMTUgQ0VBIExJU1QuDQorICogDQorICogIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCisgKiAgYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQorICogIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQorICogIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICovDQorcGFja2FnZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYWN0aXZpdGllczsNCisNCisNCisvKioNCisgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKyAqIEEgcmVwcmVzZW50YXRpb24gb2YgdGhlIG1vZGVsIG9iamVjdCAnPGVtPjxiPkNvbnRpbnVvdXM8L2I+PC9lbT4nLg0KKyAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKyAqDQorICogPCEtLSBiZWdpbi1tb2RlbC1kb2MgLS0+DQorICogQ29udGludW91cyByYXRlIGlzIGEgc3BlY2lhbCBjYXNlIG9mIHJhdGUgb2YgZmxvdyAoc2VlIFJhdGUpIHdoZXJlIHRoZSBpbmNyZW1lbnQgb2YgdGltZSBiZXR3ZWVuIGl0ZW1zIGFwcHJvYWNoZXMgemVyby4gSXQgaXMgaW50ZW5kZWQgdG8gcmVwcmVzZW50IGNvbnRpbnVvdXMgZmxvd3MgdGhhdCBtYXkgY29ycmVzcG9uZCB0byB3YXRlciBmbG93aW5nIHRocm91Z2ggYSBwaXBlLCBhIHRpbWUgY29udGludW91cyBzaWduYWwsIG9yIGNvbnRpbnVvdXMgZW5lcmd5IGZsb3cuIEl0IGlzIGluZGVwZW5kZW50IGZyb20gVU1MIHN0cmVhbWluZy4gQSBzdHJlYW1pbmcgcGFyYW1ldGVyIG1heSBvciBtYXkgbm90IGFwcGx5IHRvIGNvbnRpbnVvdXMgZmxvdywgYW5kIGEgY29udGludW91cyBmbG93IG1heSBvciBtYXkgbm90IGFwcGx5IHRvIHN0cmVhbWluZyBwYXJhbWV0ZXJzLg0KKyAqIDwhLS0gZW5kLW1vZGVsLWRvYyAtLT4NCisgKg0KKyAqDQorICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYWN0aXZpdGllcy5BY3Rpdml0aWVzUGFja2FnZSNnZXRDb250aW51b3VzKCkNCisgKiBAbW9kZWwNCisgKiBAZ2VuZXJhdGVkDQorICovDQorcHVibGljIGludGVyZmFjZSBDb250aW51b3VzIGV4dGVuZHMgUmF0ZSB7DQorfSAvLyBDb250aW51b3VzDQpkaWZmIC0tZ2l0IGEvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvYWN0aXZpdGllcy9Db250cm9sT3BlcmF0b3IuamF2YSBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L2FjdGl2aXRpZXMvQ29udHJvbE9wZXJhdG9yLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmU0M2JhYQotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L2FjdGl2aXRpZXMvQ29udHJvbE9wZXJhdG9yLmphdmEKQEAgLTAsMCArMSw5MCBAQAorLyoqDQorICogQ29weXJpZ2h0IChjKSAyMDE1IENFQSBMSVNULg0KKyAqIA0KKyAqICBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQorICogIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KKyAqICB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KKyAqICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqLw0KK3BhY2thZ2Ugb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmFjdGl2aXRpZXM7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FT2JqZWN0Ow0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS51bWwyLnVtbC5CZWhhdmlvcjsNCitpbXBvcnQgb3JnLmVjbGlwc2UudW1sMi51bWwuT3BlcmF0aW9uOw0KKw0KKy8qKg0KKyAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorICogQSByZXByZXNlbnRhdGlvbiBvZiB0aGUgbW9kZWwgb2JqZWN0ICc8ZW0+PGI+Q29udHJvbCBPcGVyYXRvcjwvYj48L2VtPicuDQorICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorICoNCisgKiA8IS0tIGJlZ2luLW1vZGVsLWRvYyAtLT4NCisgKiBBIGNvbnRyb2wgb3BlcmF0b3IgaXMgYSBiZWhhdmlvciB0aGF0IGlzIGludGVuZGVkIHRvIHJlcHJlc2VudCBhbiBhcmJpdHJhcmlseSBjb21wbGV4IGxvZ2ljYWwgb3BlcmF0b3IgdGhhdCBjYW4gYmUgdXNlZCB0byBlbmFibGUgYW5kIGRpc2FibGUgb3RoZXIgYWN0aW9ucy4gV2hlbiB0aGlzIHN0ZXJlb3R5cGUgaXMgYXBwbGllZCB0byBiZWhhdmlvcnMsIHRoZSBiZWhhdmlvciB0YWtlcyBjb250cm9sIHZhbHVlcyBhcyBpbnB1dHMgb3IgcHJvdmlkZXMgdGhlbSBhcyBvdXRwdXRzLCB0aGF0IGlzLCBpdCB0cmVhdHMgY29udHJvbCBhcyBkYXRhLiBXaGVuIHRoaXMgc3RlcmVvdHlwZSBpcyBub3QgYXBwbGllZCwgdGhlIGJlaGF2aW9yIG1heSBub3QgaGF2ZSBhIHBhcmFtZXRlciB0eXBlZCBieSBDb250cm9sVmFsdWUuIFRoaXMgc3RlcmVvdHlwZSBhbHNvIGFwcGxpZXMgdG8gb3BlcmF0aW9ucyB3aXRoIHRoZSBzYW1lIHNlbWFudGljcy4NCisgKiA8IS0tIGVuZC1tb2RlbC1kb2MgLS0+DQorICoNCisgKiA8cD4NCisgKiBUaGUgZm9sbG93aW5nIGZlYXR1cmVzIGFyZSBzdXBwb3J0ZWQ6DQorICogPHVsPg0KKyAqICAgPGxpPntAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYWN0aXZpdGllcy5Db250cm9sT3BlcmF0b3IjZ2V0QmFzZV9CZWhhdmlvciA8ZW0+QmFzZSBCZWhhdmlvcjwvZW0+fTwvbGk+DQorICogICA8bGk+e0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5hY3Rpdml0aWVzLkNvbnRyb2xPcGVyYXRvciNnZXRCYXNlX09wZXJhdGlvbiA8ZW0+QmFzZSBPcGVyYXRpb248L2VtPn08L2xpPg0KKyAqIDwvdWw+DQorICogPC9wPg0KKyAqDQorICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYWN0aXZpdGllcy5BY3Rpdml0aWVzUGFja2FnZSNnZXRDb250cm9sT3BlcmF0b3IoKQ0KKyAqIEBtb2RlbA0KKyAqIEBnZW5lcmF0ZWQNCisgKi8NCitwdWJsaWMgaW50ZXJmYWNlIENvbnRyb2xPcGVyYXRvciBleHRlbmRzIEVPYmplY3Qgew0KKwkvKioNCisJICogUmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+PGI+QmFzZSBCZWhhdmlvcjwvYj48L2VtPicgcmVmZXJlbmNlLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8cD4NCisJICogSWYgdGhlIG1lYW5pbmcgb2YgdGhlICc8ZW0+QmFzZSBCZWhhdmlvcjwvZW0+JyByZWZlcmVuY2UgaXNuJ3QgY2xlYXIsDQorCSAqIHRoZXJlIHJlYWxseSBzaG91bGQgYmUgbW9yZSBvZiBhIGRlc2NyaXB0aW9uIGhlcmUuLi4NCisJICogPC9wPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHJldHVybiB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+QmFzZSBCZWhhdmlvcjwvZW0+JyByZWZlcmVuY2UuDQorCSAqIEBzZWUgI3NldEJhc2VfQmVoYXZpb3IoQmVoYXZpb3IpDQorCSAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmFjdGl2aXRpZXMuQWN0aXZpdGllc1BhY2thZ2UjZ2V0Q29udHJvbE9wZXJhdG9yX0Jhc2VfQmVoYXZpb3IoKQ0KKwkgKiBAbW9kZWwgb3JkZXJlZD0iZmFsc2UiDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUJlaGF2aW9yIGdldEJhc2VfQmVoYXZpb3IoKTsNCisNCisJLyoqDQorCSAqIFNldHMgdGhlIHZhbHVlIG9mIHRoZSAne0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5hY3Rpdml0aWVzLkNvbnRyb2xPcGVyYXRvciNnZXRCYXNlX0JlaGF2aW9yIDxlbT5CYXNlIEJlaGF2aW9yPC9lbT59JyByZWZlcmVuY2UuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAcGFyYW0gdmFsdWUgdGhlIG5ldyB2YWx1ZSBvZiB0aGUgJzxlbT5CYXNlIEJlaGF2aW9yPC9lbT4nIHJlZmVyZW5jZS4NCisJICogQHNlZSAjZ2V0QmFzZV9CZWhhdmlvcigpDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXZvaWQgc2V0QmFzZV9CZWhhdmlvcihCZWhhdmlvciB2YWx1ZSk7DQorDQorCS8qKg0KKwkgKiBSZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT48Yj5CYXNlIE9wZXJhdGlvbjwvYj48L2VtPicgcmVmZXJlbmNlLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8cD4NCisJICogSWYgdGhlIG1lYW5pbmcgb2YgdGhlICc8ZW0+QmFzZSBPcGVyYXRpb248L2VtPicgcmVmZXJlbmNlIGlzbid0IGNsZWFyLA0KKwkgKiB0aGVyZSByZWFsbHkgc2hvdWxkIGJlIG1vcmUgb2YgYSBkZXNjcmlwdGlvbiBoZXJlLi4uDQorCSAqIDwvcD4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEByZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSAnPGVtPkJhc2UgT3BlcmF0aW9uPC9lbT4nIHJlZmVyZW5jZS4NCisJICogQHNlZSAjc2V0QmFzZV9PcGVyYXRpb24oT3BlcmF0aW9uKQ0KKwkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5hY3Rpdml0aWVzLkFjdGl2aXRpZXNQYWNrYWdlI2dldENvbnRyb2xPcGVyYXRvcl9CYXNlX09wZXJhdGlvbigpDQorCSAqIEBtb2RlbCBvcmRlcmVkPSJmYWxzZSINCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJT3BlcmF0aW9uIGdldEJhc2VfT3BlcmF0aW9uKCk7DQorDQorCS8qKg0KKwkgKiBTZXRzIHRoZSB2YWx1ZSBvZiB0aGUgJ3tAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYWN0aXZpdGllcy5Db250cm9sT3BlcmF0b3IjZ2V0QmFzZV9PcGVyYXRpb24gPGVtPkJhc2UgT3BlcmF0aW9uPC9lbT59JyByZWZlcmVuY2UuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAcGFyYW0gdmFsdWUgdGhlIG5ldyB2YWx1ZSBvZiB0aGUgJzxlbT5CYXNlIE9wZXJhdGlvbjwvZW0+JyByZWZlcmVuY2UuDQorCSAqIEBzZWUgI2dldEJhc2VfT3BlcmF0aW9uKCkNCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJdm9pZCBzZXRCYXNlX09wZXJhdGlvbihPcGVyYXRpb24gdmFsdWUpOw0KKw0KK30gLy8gQ29udHJvbE9wZXJhdG9yDQpkaWZmIC0tZ2l0IGEvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvYWN0aXZpdGllcy9EaXNjcmV0ZS5qYXZhIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvYWN0aXZpdGllcy9EaXNjcmV0ZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ4YmRjMTAKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9hY3Rpdml0aWVzL0Rpc2NyZXRlLmphdmEKQEAgLTAsMCArMSwyNyBAQAorLyoqDQorICogQ29weXJpZ2h0IChjKSAyMDE1IENFQSBMSVNULg0KKyAqIA0KKyAqICBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQorICogIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KKyAqICB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KKyAqICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqLw0KK3BhY2thZ2Ugb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmFjdGl2aXRpZXM7DQorDQorDQorLyoqDQorICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisgKiBBIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBtb2RlbCBvYmplY3QgJzxlbT48Yj5EaXNjcmV0ZTwvYj48L2VtPicuDQorICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorICoNCisgKiA8IS0tIGJlZ2luLW1vZGVsLWRvYyAtLT4NCisgKiBEaXNjcmV0ZSByYXRlIGlzIGEgc3BlY2lhbCBjYXNlIG9mIHJhdGUgb2YgZmxvdyAoc2VlIFJhdGUpIHdoZXJlIHRoZSBpbmNyZW1lbnQgb2YgdGltZSBiZXR3ZWVuIGl0ZW1zIGlzIG5vbi16ZXJvLg0KKyAqIDwhLS0gZW5kLW1vZGVsLWRvYyAtLT4NCisgKg0KKyAqDQorICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYWN0aXZpdGllcy5BY3Rpdml0aWVzUGFja2FnZSNnZXREaXNjcmV0ZSgpDQorICogQG1vZGVsDQorICogQGdlbmVyYXRlZA0KKyAqLw0KK3B1YmxpYyBpbnRlcmZhY2UgRGlzY3JldGUgZXh0ZW5kcyBSYXRlIHsNCit9IC8vIERpc2NyZXRlDQpkaWZmIC0tZ2l0IGEvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvYWN0aXZpdGllcy9Ob0J1ZmZlci5qYXZhIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvYWN0aXZpdGllcy9Ob0J1ZmZlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJjMjM1MjgKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9hY3Rpdml0aWVzL05vQnVmZmVyLmphdmEKQEAgLTAsMCArMSw2MiBAQAorLyoqDQorICogQ29weXJpZ2h0IChjKSAyMDE1IENFQSBMSVNULg0KKyAqIA0KKyAqICBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQorICogIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KKyAqICB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KKyAqICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqLw0KK3BhY2thZ2Ugb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmFjdGl2aXRpZXM7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FT2JqZWN0Ow0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS51bWwyLnVtbC5PYmplY3ROb2RlOw0KKw0KKy8qKg0KKyAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorICogQSByZXByZXNlbnRhdGlvbiBvZiB0aGUgbW9kZWwgb2JqZWN0ICc8ZW0+PGI+Tm8gQnVmZmVyPC9iPjwvZW0+Jy4NCisgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisgKg0KKyAqIDwhLS0gYmVnaW4tbW9kZWwtZG9jIC0tPg0KKyAqIFdoZW4gdGhpcyBzdGVyZW90eXBlIGlzIGFwcGxpZWQgdG8gb2JqZWN0IG5vZGVzLCB0b2tlbnMgYXJyaXZpbmcgYXQgdGhlIG5vZGUgYXJlIGRpc2NhcmRlZCBpZiB0aGV5IGFyZSByZWZ1c2VkIGJ5IG91dGdvaW5nIGVkZ2VzLCBvciByZWZ1c2VkIGJ5IGFjdGlvbnMgZm9yIG9iamVjdCBub2RlcyB0aGF0IGFyZSBpbnB1dCBwaW5zLiBUaGlzIGlzIHR5cGljYWxseSB1c2VkIHdpdGggZmFzdCBvciBjb250aW51b3VzbHkgZmxvd2luZyBkYXRhIHZhbHVlcywgdG8gcHJldmVudCBidWZmZXIgb3ZlcnJ1biwgb3IgdG8gbW9kZWwgdHJhbnNpZW50IHZhbHVlcywgc3VjaCBhcyBlbGVjdHJpY2FsIHNpZ25hbHMuIEZvciBvYmplY3Qgbm9kZXMgdGhhdCBhcmUgdGhlIHRhcmdldCBvZiBjb250aW51b3VzIGZsb3dzLCCrbm9idWZmZXK7IGFuZCCrb3ZlcndyaXRluyBoYXZlIHRoZSBzYW1lIGVmZmVjdC4gVGhlIHN0ZXJlb3R5cGUgZG9lcyBub3Qgb3ZlcnJpZGUgVU1MIHRva2VuIG9mZmVyaW5nIHNlbWFudGljczsgaXQganVzdCBpbmRpY2F0ZXMgd2hhdCBoYXBwZW5zIHRvIHRoZSB0b2tlbiB3aGVuIGl0IGlzIGFjY2VwdGVkLiBXaGVuIHRoZSBzdGVyZW90eXBlIGlzIG5vdCBhcHBsaWVkLCB0aGUgc2VtYW50aWNzIGFyZSBhcyBpbiBVTUwsIHNwZWNpZmljYWxseSwgdG9rZW5zIGFycml2aW5nIGF0IGFuIG9iamVjdCBub2RlIHRoYXQgYXJlIHJlZnVzZWQgYnkgb3V0Z29pbmcgZWRnZXMsIG9yIGFjdGlvbiBmb3IgaW5wdXQgcGlucywgYXJlIGhlbGQgdW50aWwgdGhleSBjYW4gbGVhdmUgdGhlIG9iamVjdCBub2RlLg0KKyAqIDwhLS0gZW5kLW1vZGVsLWRvYyAtLT4NCisgKg0KKyAqIDxwPg0KKyAqIFRoZSBmb2xsb3dpbmcgZmVhdHVyZXMgYXJlIHN1cHBvcnRlZDoNCisgKiA8dWw+DQorICogICA8bGk+e0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5hY3Rpdml0aWVzLk5vQnVmZmVyI2dldEJhc2VfT2JqZWN0Tm9kZSA8ZW0+QmFzZSBPYmplY3QgTm9kZTwvZW0+fTwvbGk+DQorICogPC91bD4NCisgKiA8L3A+DQorICoNCisgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5hY3Rpdml0aWVzLkFjdGl2aXRpZXNQYWNrYWdlI2dldE5vQnVmZmVyKCkNCisgKiBAbW9kZWwNCisgKiBAZ2VuZXJhdGVkDQorICovDQorcHVibGljIGludGVyZmFjZSBOb0J1ZmZlciBleHRlbmRzIEVPYmplY3Qgew0KKwkvKioNCisJICogUmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+PGI+QmFzZSBPYmplY3QgTm9kZTwvYj48L2VtPicgcmVmZXJlbmNlLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8cD4NCisJICogSWYgdGhlIG1lYW5pbmcgb2YgdGhlICc8ZW0+QmFzZSBPYmplY3QgTm9kZTwvZW0+JyByZWZlcmVuY2UgaXNuJ3QgY2xlYXIsDQorCSAqIHRoZXJlIHJlYWxseSBzaG91bGQgYmUgbW9yZSBvZiBhIGRlc2NyaXB0aW9uIGhlcmUuLi4NCisJICogPC9wPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHJldHVybiB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+QmFzZSBPYmplY3QgTm9kZTwvZW0+JyByZWZlcmVuY2UuDQorCSAqIEBzZWUgI3NldEJhc2VfT2JqZWN0Tm9kZShPYmplY3ROb2RlKQ0KKwkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5hY3Rpdml0aWVzLkFjdGl2aXRpZXNQYWNrYWdlI2dldE5vQnVmZmVyX0Jhc2VfT2JqZWN0Tm9kZSgpDQorCSAqIEBtb2RlbCBvcmRlcmVkPSJmYWxzZSINCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJT2JqZWN0Tm9kZSBnZXRCYXNlX09iamVjdE5vZGUoKTsNCisNCisJLyoqDQorCSAqIFNldHMgdGhlIHZhbHVlIG9mIHRoZSAne0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5hY3Rpdml0aWVzLk5vQnVmZmVyI2dldEJhc2VfT2JqZWN0Tm9kZSA8ZW0+QmFzZSBPYmplY3QgTm9kZTwvZW0+fScgcmVmZXJlbmNlLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHBhcmFtIHZhbHVlIHRoZSBuZXcgdmFsdWUgb2YgdGhlICc8ZW0+QmFzZSBPYmplY3QgTm9kZTwvZW0+JyByZWZlcmVuY2UuDQorCSAqIEBzZWUgI2dldEJhc2VfT2JqZWN0Tm9kZSgpDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXZvaWQgc2V0QmFzZV9PYmplY3ROb2RlKE9iamVjdE5vZGUgdmFsdWUpOw0KKw0KK30gLy8gTm9CdWZmZXINCmRpZmYgLS1naXQgYS9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9hY3Rpdml0aWVzL09wdGlvbmFsLmphdmEgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9hY3Rpdml0aWVzL09wdGlvbmFsLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmM2NDNmOAotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L2FjdGl2aXRpZXMvT3B0aW9uYWwuamF2YQpAQCAtMCwwICsxLDYyIEBACisvKioNCisgKiBDb3B5cmlnaHQgKGMpIDIwMTUgQ0VBIExJU1QuDQorICogDQorICogIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCisgKiAgYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQorICogIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQorICogIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICovDQorcGFja2FnZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYWN0aXZpdGllczsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVPYmplY3Q7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLnVtbDIudW1sLlBhcmFtZXRlcjsNCisNCisvKioNCisgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKyAqIEEgcmVwcmVzZW50YXRpb24gb2YgdGhlIG1vZGVsIG9iamVjdCAnPGVtPjxiPk9wdGlvbmFsPC9iPjwvZW0+Jy4NCisgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisgKg0KKyAqIDwhLS0gYmVnaW4tbW9kZWwtZG9jIC0tPg0KKyAqIFdoZW4gdGhlIKtvcHRpb25hbLsgc3RlcmVvdHlwZSBpcyBhcHBsaWVkIHRvIHBhcmFtZXRlcnMsIHRoZSBsb3dlciBtdWx0aXBsaWNpdHkgbXVzdCBiZSBlcXVhbCB0byB6ZXJvLiBUaGlzIG1lYW5zIHRoZSBwYXJhbWV0ZXIgaXMgbm90IHJlcXVpcmVkIHRvIGhhdmUgYSB2YWx1ZSBmb3IgdGhlIGFjdGl2aXR5IG9yIGFueSBiZWhhdmlvciB0byBiZWdpbiBvciBlbmQgZXhlY3V0aW9uLiBPdGhlcndpc2UsIHRoZSBsb3dlciBtdWx0aXBsaWNpdHkgbXVzdCBiZSBncmVhdGVyIHRoYW4gemVybywgd2hpY2ggaXMgY2FsbGVkIJNyZXF1aXJlZC6UDQorICogPCEtLSBlbmQtbW9kZWwtZG9jIC0tPg0KKyAqDQorICogPHA+DQorICogVGhlIGZvbGxvd2luZyBmZWF0dXJlcyBhcmUgc3VwcG9ydGVkOg0KKyAqIDx1bD4NCisgKiAgIDxsaT57QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmFjdGl2aXRpZXMuT3B0aW9uYWwjZ2V0QmFzZV9QYXJhbWV0ZXIgPGVtPkJhc2UgUGFyYW1ldGVyPC9lbT59PC9saT4NCisgKiA8L3VsPg0KKyAqIDwvcD4NCisgKg0KKyAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmFjdGl2aXRpZXMuQWN0aXZpdGllc1BhY2thZ2UjZ2V0T3B0aW9uYWwoKQ0KKyAqIEBtb2RlbA0KKyAqIEBnZW5lcmF0ZWQNCisgKi8NCitwdWJsaWMgaW50ZXJmYWNlIE9wdGlvbmFsIGV4dGVuZHMgRU9iamVjdCB7DQorCS8qKg0KKwkgKiBSZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT48Yj5CYXNlIFBhcmFtZXRlcjwvYj48L2VtPicgcmVmZXJlbmNlLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8cD4NCisJICogSWYgdGhlIG1lYW5pbmcgb2YgdGhlICc8ZW0+QmFzZSBQYXJhbWV0ZXI8L2VtPicgcmVmZXJlbmNlIGlzbid0IGNsZWFyLA0KKwkgKiB0aGVyZSByZWFsbHkgc2hvdWxkIGJlIG1vcmUgb2YgYSBkZXNjcmlwdGlvbiBoZXJlLi4uDQorCSAqIDwvcD4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEByZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSAnPGVtPkJhc2UgUGFyYW1ldGVyPC9lbT4nIHJlZmVyZW5jZS4NCisJICogQHNlZSAjc2V0QmFzZV9QYXJhbWV0ZXIoUGFyYW1ldGVyKQ0KKwkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5hY3Rpdml0aWVzLkFjdGl2aXRpZXNQYWNrYWdlI2dldE9wdGlvbmFsX0Jhc2VfUGFyYW1ldGVyKCkNCisJICogQG1vZGVsIG9yZGVyZWQ9ImZhbHNlIg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlQYXJhbWV0ZXIgZ2V0QmFzZV9QYXJhbWV0ZXIoKTsNCisNCisJLyoqDQorCSAqIFNldHMgdGhlIHZhbHVlIG9mIHRoZSAne0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5hY3Rpdml0aWVzLk9wdGlvbmFsI2dldEJhc2VfUGFyYW1ldGVyIDxlbT5CYXNlIFBhcmFtZXRlcjwvZW0+fScgcmVmZXJlbmNlLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHBhcmFtIHZhbHVlIHRoZSBuZXcgdmFsdWUgb2YgdGhlICc8ZW0+QmFzZSBQYXJhbWV0ZXI8L2VtPicgcmVmZXJlbmNlLg0KKwkgKiBAc2VlICNnZXRCYXNlX1BhcmFtZXRlcigpDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXZvaWQgc2V0QmFzZV9QYXJhbWV0ZXIoUGFyYW1ldGVyIHZhbHVlKTsNCisNCit9IC8vIE9wdGlvbmFsDQpkaWZmIC0tZ2l0IGEvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvYWN0aXZpdGllcy9PdmVyd3JpdGUuamF2YSBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L2FjdGl2aXRpZXMvT3ZlcndyaXRlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWMwMzAyOAotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L2FjdGl2aXRpZXMvT3ZlcndyaXRlLmphdmEKQEAgLTAsMCArMSw2MiBAQAorLyoqDQorICogQ29weXJpZ2h0IChjKSAyMDE1IENFQSBMSVNULg0KKyAqIA0KKyAqICBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQorICogIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KKyAqICB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KKyAqICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqLw0KK3BhY2thZ2Ugb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmFjdGl2aXRpZXM7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FT2JqZWN0Ow0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS51bWwyLnVtbC5PYmplY3ROb2RlOw0KKw0KKy8qKg0KKyAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorICogQSByZXByZXNlbnRhdGlvbiBvZiB0aGUgbW9kZWwgb2JqZWN0ICc8ZW0+PGI+T3ZlcndyaXRlPC9iPjwvZW0+Jy4NCisgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisgKg0KKyAqIDwhLS0gYmVnaW4tbW9kZWwtZG9jIC0tPg0KKyAqIFdoZW4gdGhlIKtvdmVyd3JpdGW7IHN0ZXJlb3R5cGUgaXMgYXBwbGllZCB0byBvYmplY3Qgbm9kZXMsIGEgdG9rZW4gYXJyaXZpbmcgYXQgYSBmdWxsIG9iamVjdCBub2RlIHJlcGxhY2VzIHRoZSBvbmVzIGFscmVhZHkgdGhlcmUgKGEgZnVsbCBvYmplY3Qgbm9kZSBoYXMgYXMgbWFueSB0b2tlbnMgYXMgYWxsb3dlZCBieSBpdHMgdXBwZXIgYm91bmQpLiBUaGlzIGlzIHR5cGljYWxseSB1c2VkIG9uIGFuIGlucHV0IHBpbiB3aXRoIGFuIHVwcGVyIGJvdW5kIG9mIDEgdG8gZW5zdXJlIHRoYXQgc3RhbGUgZGF0YSBpcyBvdmVycmlkZGVuIGF0IGFuIGlucHV0IHBpbi4gRm9yIHVwcGVyIGJvdW5kcyBncmVhdGVyIHRoYW4gb25lLCB0aGUgdG9rZW4gcmVwbGFjZWQgaXMgdGhlIG9uZSB0aGF0IHdvdWxkIGJlIHRoZSBsYXN0IHRvIGJlIHNlbGVjdGVkIGFjY29yZGluZyB0byB0aGUgb3JkZXJpbmcga2luZCBmb3IgdGhlIG5vZGUuIEZvciBGSUZPIG9yZGVyaW5nLCB0aGlzIGlzIHRoZSBtb3N0IHJlY2VudGx5IGFkZGVkIHRva2VuLCBmb3IgTElGTyBpdCBpcyB0aGUgbGVhc3QgcmVjZW50bHkgYWRkZWQgdG9rZW4uIEEgbnVsbCB0b2tlbiByZW1vdmVzIGFsbCB0aGUgdG9rZW5zIGFscmVhZHkgdGhlcmUuIFRoZSBudW1iZXIgb2YgdG9rZW5zIHJlcGxhY2VkIGlzIGVxdWFsIHRvIHRoZSB3ZWlnaHQgb2YgdGhlIGluY29taW5nIGVkZ2UsIHdoaWNoIGRlZmF1bHRzIHRvIDEuIEZvciBvYmplY3Qgbm9kZXMgdGhhdCBhcmUgdGhlIHRhcmdldCBvZiBjb250aW51b3VzIGZsb3dzLCCrb3ZlcndyaXRluyBhbmQgq25vYnVmZmVyuyBoYXZlIHRoZSBzYW1lIGVmZmVjdC4gVGhlIHN0ZXJlb3R5cGUgZG9lcyBub3Qgb3ZlcnJpZGUgVU1MIHRva2VuIG9mZmVyaW5nIHNlbWFudGljcywganVzdCBpbmRpY2F0ZXMgd2hhdCBoYXBwZW5zIHRvIHRoZSB0b2tlbiB3aGVuIGl0IGlzIGFjY2VwdGVkLiBXaGVuIHRoZSBzdGVyZW90eXBlIGlzIG5vdCBhcHBsaWVkLCB0aGUgc2VtYW50aWNzIGlzIGFzIGluIFVNTCwgc3BlY2lmaWNhbGx5LCB0b2tlbnMgYXJyaXZpbmcgYXQgb2JqZWN0IG5vZGVzIGRvIG5vdCByZXBsYWNlIG9uZXMgdGhhdCBhcmUgYWxyZWFkeSB0aGVyZS4NCisgKiA8IS0tIGVuZC1tb2RlbC1kb2MgLS0+DQorICoNCisgKiA8cD4NCisgKiBUaGUgZm9sbG93aW5nIGZlYXR1cmVzIGFyZSBzdXBwb3J0ZWQ6DQorICogPHVsPg0KKyAqICAgPGxpPntAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYWN0aXZpdGllcy5PdmVyd3JpdGUjZ2V0QmFzZV9PYmplY3ROb2RlIDxlbT5CYXNlIE9iamVjdCBOb2RlPC9lbT59PC9saT4NCisgKiA8L3VsPg0KKyAqIDwvcD4NCisgKg0KKyAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmFjdGl2aXRpZXMuQWN0aXZpdGllc1BhY2thZ2UjZ2V0T3ZlcndyaXRlKCkNCisgKiBAbW9kZWwNCisgKiBAZ2VuZXJhdGVkDQorICovDQorcHVibGljIGludGVyZmFjZSBPdmVyd3JpdGUgZXh0ZW5kcyBFT2JqZWN0IHsNCisJLyoqDQorCSAqIFJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSAnPGVtPjxiPkJhc2UgT2JqZWN0IE5vZGU8L2I+PC9lbT4nIHJlZmVyZW5jZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPHA+DQorCSAqIElmIHRoZSBtZWFuaW5nIG9mIHRoZSAnPGVtPkJhc2UgT2JqZWN0IE5vZGU8L2VtPicgcmVmZXJlbmNlIGlzbid0IGNsZWFyLA0KKwkgKiB0aGVyZSByZWFsbHkgc2hvdWxkIGJlIG1vcmUgb2YgYSBkZXNjcmlwdGlvbiBoZXJlLi4uDQorCSAqIDwvcD4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEByZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSAnPGVtPkJhc2UgT2JqZWN0IE5vZGU8L2VtPicgcmVmZXJlbmNlLg0KKwkgKiBAc2VlICNzZXRCYXNlX09iamVjdE5vZGUoT2JqZWN0Tm9kZSkNCisJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYWN0aXZpdGllcy5BY3Rpdml0aWVzUGFja2FnZSNnZXRPdmVyd3JpdGVfQmFzZV9PYmplY3ROb2RlKCkNCisJICogQG1vZGVsIG9yZGVyZWQ9ImZhbHNlIg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlPYmplY3ROb2RlIGdldEJhc2VfT2JqZWN0Tm9kZSgpOw0KKw0KKwkvKioNCisJICogU2V0cyB0aGUgdmFsdWUgb2YgdGhlICd7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmFjdGl2aXRpZXMuT3ZlcndyaXRlI2dldEJhc2VfT2JqZWN0Tm9kZSA8ZW0+QmFzZSBPYmplY3QgTm9kZTwvZW0+fScgcmVmZXJlbmNlLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHBhcmFtIHZhbHVlIHRoZSBuZXcgdmFsdWUgb2YgdGhlICc8ZW0+QmFzZSBPYmplY3QgTm9kZTwvZW0+JyByZWZlcmVuY2UuDQorCSAqIEBzZWUgI2dldEJhc2VfT2JqZWN0Tm9kZSgpDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXZvaWQgc2V0QmFzZV9PYmplY3ROb2RlKE9iamVjdE5vZGUgdmFsdWUpOw0KKw0KK30gLy8gT3ZlcndyaXRlDQpkaWZmIC0tZ2l0IGEvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvYWN0aXZpdGllcy9Qcm9iYWJpbGl0eS5qYXZhIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvYWN0aXZpdGllcy9Qcm9iYWJpbGl0eS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE4MDhiNWYKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9hY3Rpdml0aWVzL1Byb2JhYmlsaXR5LmphdmEKQEAgLTAsMCArMSwxMTkgQEAKKy8qKg0KKyAqIENvcHlyaWdodCAoYykgMjAxNSBDRUEgTElTVC4NCisgKiANCisgKiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KKyAqICBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCisgKiAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCisgKiAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgKi8NCitwYWNrYWdlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5hY3Rpdml0aWVzOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRU9iamVjdDsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UudW1sMi51bWwuQWN0aXZpdHlFZGdlOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS51bWwyLnVtbC5QYXJhbWV0ZXJTZXQ7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnVtbDIudW1sLlZhbHVlU3BlY2lmaWNhdGlvbjsNCisNCisvKioNCisgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKyAqIEEgcmVwcmVzZW50YXRpb24gb2YgdGhlIG1vZGVsIG9iamVjdCAnPGVtPjxiPlByb2JhYmlsaXR5PC9iPjwvZW0+Jy4NCisgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisgKg0KKyAqIDwhLS0gYmVnaW4tbW9kZWwtZG9jIC0tPg0KKyAqIFdoZW4gdGhlIKtwcm9iYWJpbGl0ebsgc3RlcmVvdHlwZSBpcyBhcHBsaWVkIHRvIGVkZ2VzIGNvbWluZyBvdXQgb2YgZGVjaXNpb24gbm9kZXMgYW5kIG9iamVjdCBub2RlcywgaXQgcHJvdmlkZXMgYW4gZXhwcmVzc2lvbiBmb3IgdGhlIHByb2JhYmlsaXR5IHRoYXQgdGhlIGVkZ2Ugd2lsbCBiZSB0cmF2ZXJzZWQuIFRoZXNlIG11c3QgYmUgYmV0d2VlbiB6ZXJvIGFuZCBvbmUgaW5jbHVzaXZlLCBhbmQgYWRkIHVwIHRvIG9uZSBmb3IgZWRnZXMgd2l0aCBzYW1lIHNvdXJjZSBhdCB0aGUgdGltZSB0aGUgcHJvYmFiaWxpdGllcyBhcmUgdXNlZC4NCisgKiBXaGVuIHRoZSCrcHJvYmFiaWxpdHm7IHN0ZXJlb3R5cGUgaXMgYXBwbGllZCB0byBvdXRwdXQgcGFyYW1ldGVyIHNldHMsIGl0IGdpdmVzIHRoZSBwcm9iYWJpbGl0eSB0aGUgcGFyYW1ldGVyIHNldCB3aWxsIGJlIGdpdmVuIHZhbHVlcyBhdCBydW50aW1lLiBUaGVzZSBtdXN0IGJlIGJldHdlZW4gemVybyBhbmQgb25lIGluY2x1c2l2ZSwgYW5kIGFkZCB1cCB0byBvbmUgZm9yIG91dHB1dCBwYXJhbWV0ZXIgc2V0cyBvZiB0aGUgc2FtZSBiZWhhdmlvciBhdCB0aGUgdGltZSB0aGUgcHJvYmFiaWxpdGllcyBhcmUgdXNlZC4NCisgKiA8IS0tIGVuZC1tb2RlbC1kb2MgLS0+DQorICoNCisgKiA8cD4NCisgKiBUaGUgZm9sbG93aW5nIGZlYXR1cmVzIGFyZSBzdXBwb3J0ZWQ6DQorICogPHVsPg0KKyAqICAgPGxpPntAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYWN0aXZpdGllcy5Qcm9iYWJpbGl0eSNnZXRCYXNlX0FjdGl2aXR5RWRnZSA8ZW0+QmFzZSBBY3Rpdml0eSBFZGdlPC9lbT59PC9saT4NCisgKiAgIDxsaT57QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmFjdGl2aXRpZXMuUHJvYmFiaWxpdHkjZ2V0QmFzZV9QYXJhbWV0ZXJTZXQgPGVtPkJhc2UgUGFyYW1ldGVyIFNldDwvZW0+fTwvbGk+DQorICogICA8bGk+e0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5hY3Rpdml0aWVzLlByb2JhYmlsaXR5I2dldFByb2JhYmlsaXR5IDxlbT5Qcm9iYWJpbGl0eTwvZW0+fTwvbGk+DQorICogPC91bD4NCisgKiA8L3A+DQorICoNCisgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5hY3Rpdml0aWVzLkFjdGl2aXRpZXNQYWNrYWdlI2dldFByb2JhYmlsaXR5KCkNCisgKiBAbW9kZWwNCisgKiBAZ2VuZXJhdGVkDQorICovDQorcHVibGljIGludGVyZmFjZSBQcm9iYWJpbGl0eSBleHRlbmRzIEVPYmplY3Qgew0KKwkvKioNCisJICogUmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+PGI+QmFzZSBBY3Rpdml0eSBFZGdlPC9iPjwvZW0+JyByZWZlcmVuY2UuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDxwPg0KKwkgKiBJZiB0aGUgbWVhbmluZyBvZiB0aGUgJzxlbT5CYXNlIEFjdGl2aXR5IEVkZ2U8L2VtPicgcmVmZXJlbmNlIGlzbid0IGNsZWFyLA0KKwkgKiB0aGVyZSByZWFsbHkgc2hvdWxkIGJlIG1vcmUgb2YgYSBkZXNjcmlwdGlvbiBoZXJlLi4uDQorCSAqIDwvcD4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEByZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSAnPGVtPkJhc2UgQWN0aXZpdHkgRWRnZTwvZW0+JyByZWZlcmVuY2UuDQorCSAqIEBzZWUgI3NldEJhc2VfQWN0aXZpdHlFZGdlKEFjdGl2aXR5RWRnZSkNCisJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYWN0aXZpdGllcy5BY3Rpdml0aWVzUGFja2FnZSNnZXRQcm9iYWJpbGl0eV9CYXNlX0FjdGl2aXR5RWRnZSgpDQorCSAqIEBtb2RlbCBvcmRlcmVkPSJmYWxzZSINCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQWN0aXZpdHlFZGdlIGdldEJhc2VfQWN0aXZpdHlFZGdlKCk7DQorDQorCS8qKg0KKwkgKiBTZXRzIHRoZSB2YWx1ZSBvZiB0aGUgJ3tAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYWN0aXZpdGllcy5Qcm9iYWJpbGl0eSNnZXRCYXNlX0FjdGl2aXR5RWRnZSA8ZW0+QmFzZSBBY3Rpdml0eSBFZGdlPC9lbT59JyByZWZlcmVuY2UuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAcGFyYW0gdmFsdWUgdGhlIG5ldyB2YWx1ZSBvZiB0aGUgJzxlbT5CYXNlIEFjdGl2aXR5IEVkZ2U8L2VtPicgcmVmZXJlbmNlLg0KKwkgKiBAc2VlICNnZXRCYXNlX0FjdGl2aXR5RWRnZSgpDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXZvaWQgc2V0QmFzZV9BY3Rpdml0eUVkZ2UoQWN0aXZpdHlFZGdlIHZhbHVlKTsNCisNCisJLyoqDQorCSAqIFJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSAnPGVtPjxiPkJhc2UgUGFyYW1ldGVyIFNldDwvYj48L2VtPicgcmVmZXJlbmNlLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8cD4NCisJICogSWYgdGhlIG1lYW5pbmcgb2YgdGhlICc8ZW0+QmFzZSBQYXJhbWV0ZXIgU2V0PC9lbT4nIHJlZmVyZW5jZSBpc24ndCBjbGVhciwNCisJICogdGhlcmUgcmVhbGx5IHNob3VsZCBiZSBtb3JlIG9mIGEgZGVzY3JpcHRpb24gaGVyZS4uLg0KKwkgKiA8L3A+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAcmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT5CYXNlIFBhcmFtZXRlciBTZXQ8L2VtPicgcmVmZXJlbmNlLg0KKwkgKiBAc2VlICNzZXRCYXNlX1BhcmFtZXRlclNldChQYXJhbWV0ZXJTZXQpDQorCSAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmFjdGl2aXRpZXMuQWN0aXZpdGllc1BhY2thZ2UjZ2V0UHJvYmFiaWxpdHlfQmFzZV9QYXJhbWV0ZXJTZXQoKQ0KKwkgKiBAbW9kZWwgb3JkZXJlZD0iZmFsc2UiDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCVBhcmFtZXRlclNldCBnZXRCYXNlX1BhcmFtZXRlclNldCgpOw0KKw0KKwkvKioNCisJICogU2V0cyB0aGUgdmFsdWUgb2YgdGhlICd7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmFjdGl2aXRpZXMuUHJvYmFiaWxpdHkjZ2V0QmFzZV9QYXJhbWV0ZXJTZXQgPGVtPkJhc2UgUGFyYW1ldGVyIFNldDwvZW0+fScgcmVmZXJlbmNlLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHBhcmFtIHZhbHVlIHRoZSBuZXcgdmFsdWUgb2YgdGhlICc8ZW0+QmFzZSBQYXJhbWV0ZXIgU2V0PC9lbT4nIHJlZmVyZW5jZS4NCisJICogQHNlZSAjZ2V0QmFzZV9QYXJhbWV0ZXJTZXQoKQ0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwl2b2lkIHNldEJhc2VfUGFyYW1ldGVyU2V0KFBhcmFtZXRlclNldCB2YWx1ZSk7DQorDQorCS8qKg0KKwkgKiBSZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT48Yj5Qcm9iYWJpbGl0eTwvYj48L2VtPicgcmVmZXJlbmNlLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8cD4NCisJICogSWYgdGhlIG1lYW5pbmcgb2YgdGhlICc8ZW0+UHJvYmFiaWxpdHk8L2VtPicgcmVmZXJlbmNlIGlzbid0IGNsZWFyLA0KKwkgKiB0aGVyZSByZWFsbHkgc2hvdWxkIGJlIG1vcmUgb2YgYSBkZXNjcmlwdGlvbiBoZXJlLi4uDQorCSAqIDwvcD4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEByZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSAnPGVtPlByb2JhYmlsaXR5PC9lbT4nIHJlZmVyZW5jZS4NCisJICogQHNlZSAjc2V0UHJvYmFiaWxpdHkoVmFsdWVTcGVjaWZpY2F0aW9uKQ0KKwkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5hY3Rpdml0aWVzLkFjdGl2aXRpZXNQYWNrYWdlI2dldFByb2JhYmlsaXR5X1Byb2JhYmlsaXR5KCkNCisJICogQG1vZGVsIHJlcXVpcmVkPSJ0cnVlIiBvcmRlcmVkPSJmYWxzZSINCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJVmFsdWVTcGVjaWZpY2F0aW9uIGdldFByb2JhYmlsaXR5KCk7DQorDQorCS8qKg0KKwkgKiBTZXRzIHRoZSB2YWx1ZSBvZiB0aGUgJ3tAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYWN0aXZpdGllcy5Qcm9iYWJpbGl0eSNnZXRQcm9iYWJpbGl0eSA8ZW0+UHJvYmFiaWxpdHk8L2VtPn0nIHJlZmVyZW5jZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBwYXJhbSB2YWx1ZSB0aGUgbmV3IHZhbHVlIG9mIHRoZSAnPGVtPlByb2JhYmlsaXR5PC9lbT4nIHJlZmVyZW5jZS4NCisJICogQHNlZSAjZ2V0UHJvYmFiaWxpdHkoKQ0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwl2b2lkIHNldFByb2JhYmlsaXR5KFZhbHVlU3BlY2lmaWNhdGlvbiB2YWx1ZSk7DQorDQorfSAvLyBQcm9iYWJpbGl0eQ0KZGlmZiAtLWdpdCBhL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L2FjdGl2aXRpZXMvUmF0ZS5qYXZhIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvYWN0aXZpdGllcy9SYXRlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjQxZjBjMwotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L2FjdGl2aXRpZXMvUmF0ZS5qYXZhCkBAIC0wLDAgKzEsMTQ2IEBACisvKioNCisgKiBDb3B5cmlnaHQgKGMpIDIwMTUgQ0VBIExJU1QuDQorICogDQorICogIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCisgKiAgYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQorICogIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQorICogIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICovDQorcGFja2FnZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYWN0aXZpdGllczsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVPYmplY3Q7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLnVtbDIudW1sLkFjdGl2aXR5RWRnZTsNCitpbXBvcnQgb3JnLmVjbGlwc2UudW1sMi51bWwuSW5zdGFuY2VTcGVjaWZpY2F0aW9uOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS51bWwyLnVtbC5PYmplY3ROb2RlOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS51bWwyLnVtbC5QYXJhbWV0ZXI7DQorDQorLyoqDQorICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisgKiBBIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBtb2RlbCBvYmplY3QgJzxlbT48Yj5SYXRlPC9iPjwvZW0+Jy4NCisgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisgKg0KKyAqIDwhLS0gYmVnaW4tbW9kZWwtZG9jIC0tPg0KKyAqIFdoZW4gdGhlIKtyYXRluyBzdGVyZW90eXBlIGlzIGFwcGxpZWQgdG8gYW4gYWN0aXZpdHkgZWRnZSwgaXQgc3BlY2lmaWVzIHRoZSBleHBlY3RlZCB2YWx1ZSBvZiB0aGUgbnVtYmVyIG9mIG9iamVjdHMgYW5kIHZhbHVlcyB0aGF0IHRyYXZlcnNlIHRoZSBlZGdlIHBlciB0aW1lIGludGVydmFsLCB0aGF0IGlzLCB0aGUgZXhwZWN0ZWQgdmFsdWUgcmF0ZSBhdCB3aGljaCB0aGV5IGxlYXZlIHRoZSBzb3VyY2Ugbm9kZSBhbmQgYXJyaXZlIGF0IHRoZSB0YXJnZXQgbm9kZS4gSXQgZG9lcyBub3QgcmVmZXIgdG8gdGhlIHJhdGUgYXQgd2hpY2ggYSB2YWx1ZSBjaGFuZ2VzIG92ZXIgdGltZS4gV2hlbiB0aGUgc3RlcmVvdHlwZSBpcyBhcHBsaWVkIHRvIGEgcGFyYW1ldGVyLCB0aGUgcGFyYW1ldGVyIG11c3QgYmUgc3RyZWFtaW5nLCBhbmQgdGhlIHN0ZXJlb3R5cGUgZ2l2ZXMgdGhlIG51bWJlciBvZiBvYmplY3RzIG9yIHZhbHVlcyB0aGF0IGZsb3cgaW4gb3Igb3V0IG9mIHRoZSBwYXJhbWV0ZXIgcGVyIHRpbWUgaW50ZXJ2YWwgd2hpbGUgdGhlIGJlaGF2aW9yIG9yIG9wZXJhdGlvbiBpcyBleGVjdXRpbmcuIFN0cmVhbWluZyBpcyBhIGNoYXJhY3RlcmlzdGljIG9mIFVNTCBiZWhhdmlvciBwYXJhbWV0ZXJzIHRoYXQgc3VwcG9ydHMgdGhlIGlucHV0IGFuZCBvdXRwdXQgb2YgaXRlbXMgd2hpbGUgYSBiZWhhdmlvciBpcyBleGVjdXRpbmcsIHJhdGhlciB0aGFuIG9ubHkgd2hlbiB0aGUgYmVoYXZpb3Igc3RhcnRzIGFuZCBzdG9wcy4gVGhlIGZsb3cgbWF5IGJlIGNvbnRpbnVvdXMgb3IgZGlzY3JldGUuIFRoZSCrcmF0Zbsgc3RlcmVvdHlwZSBoYXMgYSByYXRlIHByb3BlcnR5IG9mIHR5cGUgSW5zdGFuY2VTcGVjaWZpY2F0aW9uLiBUaGUgdmFsdWVzIG9mIHRoaXMgcHJvcGVydHkgbXVzdCBiZSBpbnN0YW5jZXMgb2YgY2xhc3NpZmllcnMgc3RlcmVvdHlwZWQgYnkgq3ZhbHVlVHlwZbsgb3Igq2Rpc3RyaWJ1dGlvbkRlZmluaXRpb267LiBJbiBwYXJ0aWN1bGFyLCB0aGUgZGVub21pbmF0b3IgZm9yIHVuaXRzIHVzZWQgaW4gdGhlIHJhdGUgcHJvcGVydHkgbXVzdCBiZSB0aW1lIHVuaXRzLg0KKyAqIDwhLS0gZW5kLW1vZGVsLWRvYyAtLT4NCisgKg0KKyAqIDxwPg0KKyAqIFRoZSBmb2xsb3dpbmcgZmVhdHVyZXMgYXJlIHN1cHBvcnRlZDoNCisgKiA8dWw+DQorICogICA8bGk+e0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5hY3Rpdml0aWVzLlJhdGUjZ2V0UmF0ZSA8ZW0+UmF0ZTwvZW0+fTwvbGk+DQorICogICA8bGk+e0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5hY3Rpdml0aWVzLlJhdGUjZ2V0QmFzZV9BY3Rpdml0eUVkZ2UgPGVtPkJhc2UgQWN0aXZpdHkgRWRnZTwvZW0+fTwvbGk+DQorICogICA8bGk+e0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5hY3Rpdml0aWVzLlJhdGUjZ2V0QmFzZV9PYmplY3ROb2RlIDxlbT5CYXNlIE9iamVjdCBOb2RlPC9lbT59PC9saT4NCisgKiAgIDxsaT57QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmFjdGl2aXRpZXMuUmF0ZSNnZXRCYXNlX1BhcmFtZXRlciA8ZW0+QmFzZSBQYXJhbWV0ZXI8L2VtPn08L2xpPg0KKyAqIDwvdWw+DQorICogPC9wPg0KKyAqDQorICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYWN0aXZpdGllcy5BY3Rpdml0aWVzUGFja2FnZSNnZXRSYXRlKCkNCisgKiBAbW9kZWwNCisgKiBAZ2VuZXJhdGVkDQorICovDQorcHVibGljIGludGVyZmFjZSBSYXRlIGV4dGVuZHMgRU9iamVjdCB7DQorCS8qKg0KKwkgKiBSZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT48Yj5SYXRlPC9iPjwvZW0+JyByZWZlcmVuY2UuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDxwPg0KKwkgKiBJZiB0aGUgbWVhbmluZyBvZiB0aGUgJzxlbT5SYXRlPC9lbT4nIHJlZmVyZW5jZSBpc24ndCBjbGVhciwNCisJICogdGhlcmUgcmVhbGx5IHNob3VsZCBiZSBtb3JlIG9mIGEgZGVzY3JpcHRpb24gaGVyZS4uLg0KKwkgKiA8L3A+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAcmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT5SYXRlPC9lbT4nIHJlZmVyZW5jZS4NCisJICogQHNlZSAjc2V0UmF0ZShJbnN0YW5jZVNwZWNpZmljYXRpb24pDQorCSAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmFjdGl2aXRpZXMuQWN0aXZpdGllc1BhY2thZ2UjZ2V0UmF0ZV9SYXRlKCkNCisJICogQG1vZGVsIHJlcXVpcmVkPSJ0cnVlIiBvcmRlcmVkPSJmYWxzZSINCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJSW5zdGFuY2VTcGVjaWZpY2F0aW9uIGdldFJhdGUoKTsNCisNCisJLyoqDQorCSAqIFNldHMgdGhlIHZhbHVlIG9mIHRoZSAne0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5hY3Rpdml0aWVzLlJhdGUjZ2V0UmF0ZSA8ZW0+UmF0ZTwvZW0+fScgcmVmZXJlbmNlLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHBhcmFtIHZhbHVlIHRoZSBuZXcgdmFsdWUgb2YgdGhlICc8ZW0+UmF0ZTwvZW0+JyByZWZlcmVuY2UuDQorCSAqIEBzZWUgI2dldFJhdGUoKQ0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwl2b2lkIHNldFJhdGUoSW5zdGFuY2VTcGVjaWZpY2F0aW9uIHZhbHVlKTsNCisNCisJLyoqDQorCSAqIFJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSAnPGVtPjxiPkJhc2UgQWN0aXZpdHkgRWRnZTwvYj48L2VtPicgcmVmZXJlbmNlLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8cD4NCisJICogSWYgdGhlIG1lYW5pbmcgb2YgdGhlICc8ZW0+QmFzZSBBY3Rpdml0eSBFZGdlPC9lbT4nIHJlZmVyZW5jZSBpc24ndCBjbGVhciwNCisJICogdGhlcmUgcmVhbGx5IHNob3VsZCBiZSBtb3JlIG9mIGEgZGVzY3JpcHRpb24gaGVyZS4uLg0KKwkgKiA8L3A+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAcmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT5CYXNlIEFjdGl2aXR5IEVkZ2U8L2VtPicgcmVmZXJlbmNlLg0KKwkgKiBAc2VlICNzZXRCYXNlX0FjdGl2aXR5RWRnZShBY3Rpdml0eUVkZ2UpDQorCSAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmFjdGl2aXRpZXMuQWN0aXZpdGllc1BhY2thZ2UjZ2V0UmF0ZV9CYXNlX0FjdGl2aXR5RWRnZSgpDQorCSAqIEBtb2RlbCBvcmRlcmVkPSJmYWxzZSINCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQWN0aXZpdHlFZGdlIGdldEJhc2VfQWN0aXZpdHlFZGdlKCk7DQorDQorCS8qKg0KKwkgKiBTZXRzIHRoZSB2YWx1ZSBvZiB0aGUgJ3tAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYWN0aXZpdGllcy5SYXRlI2dldEJhc2VfQWN0aXZpdHlFZGdlIDxlbT5CYXNlIEFjdGl2aXR5IEVkZ2U8L2VtPn0nIHJlZmVyZW5jZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBwYXJhbSB2YWx1ZSB0aGUgbmV3IHZhbHVlIG9mIHRoZSAnPGVtPkJhc2UgQWN0aXZpdHkgRWRnZTwvZW0+JyByZWZlcmVuY2UuDQorCSAqIEBzZWUgI2dldEJhc2VfQWN0aXZpdHlFZGdlKCkNCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJdm9pZCBzZXRCYXNlX0FjdGl2aXR5RWRnZShBY3Rpdml0eUVkZ2UgdmFsdWUpOw0KKw0KKwkvKioNCisJICogUmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+PGI+QmFzZSBPYmplY3QgTm9kZTwvYj48L2VtPicgcmVmZXJlbmNlLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8cD4NCisJICogSWYgdGhlIG1lYW5pbmcgb2YgdGhlICc8ZW0+QmFzZSBPYmplY3QgTm9kZTwvZW0+JyByZWZlcmVuY2UgaXNuJ3QgY2xlYXIsDQorCSAqIHRoZXJlIHJlYWxseSBzaG91bGQgYmUgbW9yZSBvZiBhIGRlc2NyaXB0aW9uIGhlcmUuLi4NCisJICogPC9wPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHJldHVybiB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+QmFzZSBPYmplY3QgTm9kZTwvZW0+JyByZWZlcmVuY2UuDQorCSAqIEBzZWUgI3NldEJhc2VfT2JqZWN0Tm9kZShPYmplY3ROb2RlKQ0KKwkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5hY3Rpdml0aWVzLkFjdGl2aXRpZXNQYWNrYWdlI2dldFJhdGVfQmFzZV9PYmplY3ROb2RlKCkNCisJICogQG1vZGVsIG9yZGVyZWQ9ImZhbHNlIg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlPYmplY3ROb2RlIGdldEJhc2VfT2JqZWN0Tm9kZSgpOw0KKw0KKwkvKioNCisJICogU2V0cyB0aGUgdmFsdWUgb2YgdGhlICd7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmFjdGl2aXRpZXMuUmF0ZSNnZXRCYXNlX09iamVjdE5vZGUgPGVtPkJhc2UgT2JqZWN0IE5vZGU8L2VtPn0nIHJlZmVyZW5jZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBwYXJhbSB2YWx1ZSB0aGUgbmV3IHZhbHVlIG9mIHRoZSAnPGVtPkJhc2UgT2JqZWN0IE5vZGU8L2VtPicgcmVmZXJlbmNlLg0KKwkgKiBAc2VlICNnZXRCYXNlX09iamVjdE5vZGUoKQ0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwl2b2lkIHNldEJhc2VfT2JqZWN0Tm9kZShPYmplY3ROb2RlIHZhbHVlKTsNCisNCisJLyoqDQorCSAqIFJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSAnPGVtPjxiPkJhc2UgUGFyYW1ldGVyPC9iPjwvZW0+JyByZWZlcmVuY2UuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDxwPg0KKwkgKiBJZiB0aGUgbWVhbmluZyBvZiB0aGUgJzxlbT5CYXNlIFBhcmFtZXRlcjwvZW0+JyByZWZlcmVuY2UgaXNuJ3QgY2xlYXIsDQorCSAqIHRoZXJlIHJlYWxseSBzaG91bGQgYmUgbW9yZSBvZiBhIGRlc2NyaXB0aW9uIGhlcmUuLi4NCisJICogPC9wPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHJldHVybiB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+QmFzZSBQYXJhbWV0ZXI8L2VtPicgcmVmZXJlbmNlLg0KKwkgKiBAc2VlICNzZXRCYXNlX1BhcmFtZXRlcihQYXJhbWV0ZXIpDQorCSAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmFjdGl2aXRpZXMuQWN0aXZpdGllc1BhY2thZ2UjZ2V0UmF0ZV9CYXNlX1BhcmFtZXRlcigpDQorCSAqIEBtb2RlbCBvcmRlcmVkPSJmYWxzZSINCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJUGFyYW1ldGVyIGdldEJhc2VfUGFyYW1ldGVyKCk7DQorDQorCS8qKg0KKwkgKiBTZXRzIHRoZSB2YWx1ZSBvZiB0aGUgJ3tAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYWN0aXZpdGllcy5SYXRlI2dldEJhc2VfUGFyYW1ldGVyIDxlbT5CYXNlIFBhcmFtZXRlcjwvZW0+fScgcmVmZXJlbmNlLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHBhcmFtIHZhbHVlIHRoZSBuZXcgdmFsdWUgb2YgdGhlICc8ZW0+QmFzZSBQYXJhbWV0ZXI8L2VtPicgcmVmZXJlbmNlLg0KKwkgKiBAc2VlICNnZXRCYXNlX1BhcmFtZXRlcigpDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXZvaWQgc2V0QmFzZV9QYXJhbWV0ZXIoUGFyYW1ldGVyIHZhbHVlKTsNCisNCit9IC8vIFJhdGUNCmRpZmYgLS1naXQgYS9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9hY3Rpdml0aWVzL2ludGVybmFsL2ltcGwvQWN0aXZpdGllc0ZhY3RvcnlJbXBsLmphdmEgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9hY3Rpdml0aWVzL2ludGVybmFsL2ltcGwvQWN0aXZpdGllc0ZhY3RvcnlJbXBsLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWVjOGZkNgotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L2FjdGl2aXRpZXMvaW50ZXJuYWwvaW1wbC9BY3Rpdml0aWVzRmFjdG9yeUltcGwuamF2YQpAQCAtMCwwICsxLDE3OCBAQAorLyoqDQorICogQ29weXJpZ2h0IChjKSAyMDE1IENFQSBMSVNULg0KKyAqIA0KKyAqICBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQorICogIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KKyAqICB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KKyAqICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqLw0KK3BhY2thZ2Ugb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmFjdGl2aXRpZXMuaW50ZXJuYWwuaW1wbDsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVDbGFzczsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVPYmplY3Q7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FUGFja2FnZTsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLmltcGwuRUZhY3RvcnlJbXBsOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUucGx1Z2luLkVjb3JlUGx1Z2luOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYWN0aXZpdGllcy4qOw0KKw0KKy8qKg0KKyAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorICogQW4gaW1wbGVtZW50YXRpb24gb2YgdGhlIG1vZGVsIDxiPkZhY3Rvcnk8L2I+Lg0KKyAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKyAqIEBnZW5lcmF0ZWQNCisgKi8NCitwdWJsaWMgY2xhc3MgQWN0aXZpdGllc0ZhY3RvcnlJbXBsIGV4dGVuZHMgRUZhY3RvcnlJbXBsIGltcGxlbWVudHMgQWN0aXZpdGllc0ZhY3Rvcnkgew0KKwkvKioNCisJICogQ3JlYXRlcyB0aGUgZGVmYXVsdCBmYWN0b3J5IGltcGxlbWVudGF0aW9uLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIHN0YXRpYyBBY3Rpdml0aWVzRmFjdG9yeSBpbml0KCkgew0KKwkJdHJ5IHsNCisJCQlBY3Rpdml0aWVzRmFjdG9yeSB0aGVBY3Rpdml0aWVzRmFjdG9yeSA9IChBY3Rpdml0aWVzRmFjdG9yeSlFUGFja2FnZS5SZWdpc3RyeS5JTlNUQU5DRS5nZXRFRmFjdG9yeShBY3Rpdml0aWVzUGFja2FnZS5lTlNfVVJJKTsNCisJCQlpZiAodGhlQWN0aXZpdGllc0ZhY3RvcnkgIT0gbnVsbCkgew0KKwkJCQlyZXR1cm4gdGhlQWN0aXZpdGllc0ZhY3Rvcnk7DQorCQkJfQ0KKwkJfQ0KKwkJY2F0Y2ggKEV4Y2VwdGlvbiBleGNlcHRpb24pIHsNCisJCQlFY29yZVBsdWdpbi5JTlNUQU5DRS5sb2coZXhjZXB0aW9uKTsNCisJCX0NCisJCXJldHVybiBuZXcgQWN0aXZpdGllc0ZhY3RvcnlJbXBsKCk7DQorCX0NCisNCisJLyoqDQorCSAqIENyZWF0ZXMgYW4gaW5zdGFuY2Ugb2YgdGhlIGZhY3RvcnkuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgQWN0aXZpdGllc0ZhY3RvcnlJbXBsKCkgew0KKwkJc3VwZXIoKTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgRU9iamVjdCBjcmVhdGUoRUNsYXNzIGVDbGFzcykgew0KKwkJc3dpdGNoIChlQ2xhc3MuZ2V0Q2xhc3NpZmllcklEKCkpIHsNCisJCQljYXNlIEFjdGl2aXRpZXNQYWNrYWdlLk9WRVJXUklURTogcmV0dXJuIGNyZWF0ZU92ZXJ3cml0ZSgpOw0KKwkJCWNhc2UgQWN0aXZpdGllc1BhY2thZ2UuQ09OVFJPTF9PUEVSQVRPUjogcmV0dXJuIGNyZWF0ZUNvbnRyb2xPcGVyYXRvcigpOw0KKwkJCWNhc2UgQWN0aXZpdGllc1BhY2thZ2UuUkFURTogcmV0dXJuIGNyZWF0ZVJhdGUoKTsNCisJCQljYXNlIEFjdGl2aXRpZXNQYWNrYWdlLk5PX0JVRkZFUjogcmV0dXJuIGNyZWF0ZU5vQnVmZmVyKCk7DQorCQkJY2FzZSBBY3Rpdml0aWVzUGFja2FnZS5ESVNDUkVURTogcmV0dXJuIGNyZWF0ZURpc2NyZXRlKCk7DQorCQkJY2FzZSBBY3Rpdml0aWVzUGFja2FnZS5DT05USU5VT1VTOiByZXR1cm4gY3JlYXRlQ29udGludW91cygpOw0KKwkJCWNhc2UgQWN0aXZpdGllc1BhY2thZ2UuUFJPQkFCSUxJVFk6IHJldHVybiBjcmVhdGVQcm9iYWJpbGl0eSgpOw0KKwkJCWNhc2UgQWN0aXZpdGllc1BhY2thZ2UuT1BUSU9OQUw6IHJldHVybiBjcmVhdGVPcHRpb25hbCgpOw0KKwkJCWRlZmF1bHQ6DQorCQkJCXRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIlRoZSBjbGFzcyAnIiArIGVDbGFzcy5nZXROYW1lKCkgKyAiJyBpcyBub3QgYSB2YWxpZCBjbGFzc2lmaWVyIik7IC8vJE5PTi1OTFMtMSQgLy8kTk9OLU5MUy0yJA0KKwkJfQ0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIE92ZXJ3cml0ZSBjcmVhdGVPdmVyd3JpdGUoKSB7DQorCQlPdmVyd3JpdGVJbXBsIG92ZXJ3cml0ZSA9IG5ldyBPdmVyd3JpdGVJbXBsKCk7DQorCQlyZXR1cm4gb3ZlcndyaXRlOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIENvbnRyb2xPcGVyYXRvciBjcmVhdGVDb250cm9sT3BlcmF0b3IoKSB7DQorCQlDb250cm9sT3BlcmF0b3JJbXBsIGNvbnRyb2xPcGVyYXRvciA9IG5ldyBDb250cm9sT3BlcmF0b3JJbXBsKCk7DQorCQlyZXR1cm4gY29udHJvbE9wZXJhdG9yOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIFJhdGUgY3JlYXRlUmF0ZSgpIHsNCisJCVJhdGVJbXBsIHJhdGUgPSBuZXcgUmF0ZUltcGwoKTsNCisJCXJldHVybiByYXRlOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIE5vQnVmZmVyIGNyZWF0ZU5vQnVmZmVyKCkgew0KKwkJTm9CdWZmZXJJbXBsIG5vQnVmZmVyID0gbmV3IE5vQnVmZmVySW1wbCgpOw0KKwkJcmV0dXJuIG5vQnVmZmVyOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIERpc2NyZXRlIGNyZWF0ZURpc2NyZXRlKCkgew0KKwkJRGlzY3JldGVJbXBsIGRpc2NyZXRlID0gbmV3IERpc2NyZXRlSW1wbCgpOw0KKwkJcmV0dXJuIGRpc2NyZXRlOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIENvbnRpbnVvdXMgY3JlYXRlQ29udGludW91cygpIHsNCisJCUNvbnRpbnVvdXNJbXBsIGNvbnRpbnVvdXMgPSBuZXcgQ29udGludW91c0ltcGwoKTsNCisJCXJldHVybiBjb250aW51b3VzOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIFByb2JhYmlsaXR5IGNyZWF0ZVByb2JhYmlsaXR5KCkgew0KKwkJUHJvYmFiaWxpdHlJbXBsIHByb2JhYmlsaXR5ID0gbmV3IFByb2JhYmlsaXR5SW1wbCgpOw0KKwkJcmV0dXJuIHByb2JhYmlsaXR5Ow0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIE9wdGlvbmFsIGNyZWF0ZU9wdGlvbmFsKCkgew0KKwkJT3B0aW9uYWxJbXBsIG9wdGlvbmFsID0gbmV3IE9wdGlvbmFsSW1wbCgpOw0KKwkJcmV0dXJuIG9wdGlvbmFsOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIEFjdGl2aXRpZXNQYWNrYWdlIGdldEFjdGl2aXRpZXNQYWNrYWdlKCkgew0KKwkJcmV0dXJuIChBY3Rpdml0aWVzUGFja2FnZSlnZXRFUGFja2FnZSgpOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGRlcHJlY2F0ZWQNCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQERlcHJlY2F0ZWQNCisJcHVibGljIHN0YXRpYyBBY3Rpdml0aWVzUGFja2FnZSBnZXRQYWNrYWdlKCkgew0KKwkJcmV0dXJuIEFjdGl2aXRpZXNQYWNrYWdlLmVJTlNUQU5DRTsNCisJfQ0KKw0KK30gLy9BY3Rpdml0aWVzRmFjdG9yeUltcGwNCmRpZmYgLS1naXQgYS9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9hY3Rpdml0aWVzL2ludGVybmFsL2ltcGwvQWN0aXZpdGllc1BhY2thZ2VJbXBsLmphdmEgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9hY3Rpdml0aWVzL2ludGVybmFsL2ltcGwvQWN0aXZpdGllc1BhY2thZ2VJbXBsLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzkwZWJhYwotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L2FjdGl2aXRpZXMvaW50ZXJuYWwvaW1wbC9BY3Rpdml0aWVzUGFja2FnZUltcGwuamF2YQpAQCAtMCwwICsxLDUzNCBAQAorLyoqDQorICogQ29weXJpZ2h0IChjKSAyMDE1IENFQSBMSVNULg0KKyAqIA0KKyAqICBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQorICogIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KKyAqICB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KKyAqICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqLw0KK3BhY2thZ2Ugb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmFjdGl2aXRpZXMuaW50ZXJuYWwuaW1wbDsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVDbGFzczsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVQYWNrYWdlOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRVJlZmVyZW5jZTsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLmltcGwuRVBhY2thZ2VJbXBsOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYWN0aXZpdGllcy5BY3Rpdml0aWVzRmFjdG9yeTsNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmFjdGl2aXRpZXMuQWN0aXZpdGllc1BhY2thZ2U7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5hY3Rpdml0aWVzLkNvbnRpbnVvdXM7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5hY3Rpdml0aWVzLkNvbnRyb2xPcGVyYXRvcjsNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmFjdGl2aXRpZXMuRGlzY3JldGU7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5hY3Rpdml0aWVzLk5vQnVmZmVyOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYWN0aXZpdGllcy5PcHRpb25hbDsNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmFjdGl2aXRpZXMuT3ZlcndyaXRlOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYWN0aXZpdGllcy5Qcm9iYWJpbGl0eTsNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmFjdGl2aXRpZXMuUmF0ZTsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmFsbG9jYXRpb25zLkFsbG9jYXRpb25zUGFja2FnZTsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmFsbG9jYXRpb25zLmludGVybmFsLmltcGwuQWxsb2NhdGlvbnNQYWNrYWdlSW1wbDsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmJsb2Nrcy5CbG9ja3NQYWNrYWdlOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYmxvY2tzLmludGVybmFsLmltcGwuQmxvY2tzUGFja2FnZUltcGw7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5jb25zdHJhaW50YmxvY2tzLkNvbnN0cmFpbnRibG9ja3NQYWNrYWdlOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuY29uc3RyYWludGJsb2Nrcy5pbnRlcm5hbC5pbXBsLkNvbnN0cmFpbnRibG9ja3NQYWNrYWdlSW1wbDsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRlcHJlY2F0ZWRlbGVtZW50cy5EZXByZWNhdGVkZWxlbWVudHNQYWNrYWdlOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGVwcmVjYXRlZGVsZW1lbnRzLmludGVybmFsLmltcGwuRGVwcmVjYXRlZGVsZW1lbnRzUGFja2FnZUltcGw7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5tb2RlbGVsZW1lbnRzLk1vZGVsZWxlbWVudHNQYWNrYWdlOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQubW9kZWxlbGVtZW50cy5pbnRlcm5hbC5pbXBsLk1vZGVsZWxlbWVudHNQYWNrYWdlSW1wbDsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnBvcnRhbmRmbG93cy5Qb3J0YW5kZmxvd3NQYWNrYWdlOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucG9ydGFuZGZsb3dzLmludGVybmFsLmltcGwuUG9ydGFuZGZsb3dzUGFja2FnZUltcGw7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5yZXF1aXJlbWVudHMuUmVxdWlyZW1lbnRzUGFja2FnZTsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnJlcXVpcmVtZW50cy5pbnRlcm5hbC5pbXBsLlJlcXVpcmVtZW50c1BhY2thZ2VJbXBsOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS51bWwyLnVtbC5VTUxQYWNrYWdlOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS51bWwyLnVtbC5wcm9maWxlLnN0YW5kYXJkLlN0YW5kYXJkUGFja2FnZTsNCisNCisvKioNCisgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKyAqIEFuIGltcGxlbWVudGF0aW9uIG9mIHRoZSBtb2RlbCA8Yj5QYWNrYWdlPC9iPi4NCisgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisgKiBAZ2VuZXJhdGVkDQorICovDQorcHVibGljIGNsYXNzIEFjdGl2aXRpZXNQYWNrYWdlSW1wbCBleHRlbmRzIEVQYWNrYWdlSW1wbCBpbXBsZW1lbnRzIEFjdGl2aXRpZXNQYWNrYWdlIHsNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwcml2YXRlIEVDbGFzcyBvdmVyd3JpdGVFQ2xhc3MgPSBudWxsOw0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXByaXZhdGUgRUNsYXNzIGNvbnRyb2xPcGVyYXRvckVDbGFzcyA9IG51bGw7DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHJpdmF0ZSBFQ2xhc3MgcmF0ZUVDbGFzcyA9IG51bGw7DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHJpdmF0ZSBFQ2xhc3Mgbm9CdWZmZXJFQ2xhc3MgPSBudWxsOw0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXByaXZhdGUgRUNsYXNzIGRpc2NyZXRlRUNsYXNzID0gbnVsbDsNCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwcml2YXRlIEVDbGFzcyBjb250aW51b3VzRUNsYXNzID0gbnVsbDsNCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwcml2YXRlIEVDbGFzcyBwcm9iYWJpbGl0eUVDbGFzcyA9IG51bGw7DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHJpdmF0ZSBFQ2xhc3Mgb3B0aW9uYWxFQ2xhc3MgPSBudWxsOw0KKw0KKwkvKioNCisJICogQ3JlYXRlcyBhbiBpbnN0YW5jZSBvZiB0aGUgbW9kZWwgPGI+UGFja2FnZTwvYj4sIHJlZ2lzdGVyZWQgd2l0aA0KKwkgKiB7QGxpbmsgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVQYWNrYWdlLlJlZ2lzdHJ5IEVQYWNrYWdlLlJlZ2lzdHJ5fSBieSB0aGUgcGFja2FnZQ0KKwkgKiBwYWNrYWdlIFVSSSB2YWx1ZS4NCisJICogPHA+Tm90ZTogdGhlIGNvcnJlY3Qgd2F5IHRvIGNyZWF0ZSB0aGUgcGFja2FnZSBpcyB2aWEgdGhlIHN0YXRpYw0KKwkgKiBmYWN0b3J5IG1ldGhvZCB7QGxpbmsgI2luaXQgaW5pdCgpfSwgd2hpY2ggYWxzbyBwZXJmb3Jtcw0KKwkgKiBpbml0aWFsaXphdGlvbiBvZiB0aGUgcGFja2FnZSwgb3IgcmV0dXJucyB0aGUgcmVnaXN0ZXJlZCBwYWNrYWdlLA0KKwkgKiBpZiBvbmUgYWxyZWFkeSBleGlzdHMuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAc2VlIG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FUGFja2FnZS5SZWdpc3RyeQ0KKwkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5hY3Rpdml0aWVzLkFjdGl2aXRpZXNQYWNrYWdlI2VOU19VUkkNCisJICogQHNlZSAjaW5pdCgpDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXByaXZhdGUgQWN0aXZpdGllc1BhY2thZ2VJbXBsKCkgew0KKwkJc3VwZXIoZU5TX1VSSSwgQWN0aXZpdGllc0ZhY3RvcnkuZUlOU1RBTkNFKTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXByaXZhdGUgc3RhdGljIGJvb2xlYW4gaXNJbml0ZWQgPSBmYWxzZTsNCisNCisJLyoqDQorCSAqIENyZWF0ZXMsIHJlZ2lzdGVycywgYW5kIGluaXRpYWxpemVzIHRoZSA8Yj5QYWNrYWdlPC9iPiBmb3IgdGhpcyBtb2RlbCwgYW5kIGZvciBhbnkgb3RoZXJzIHVwb24gd2hpY2ggaXQgZGVwZW5kcy4NCisJICogDQorCSAqIDxwPlRoaXMgbWV0aG9kIGlzIHVzZWQgdG8gaW5pdGlhbGl6ZSB7QGxpbmsgQWN0aXZpdGllc1BhY2thZ2UjZUlOU1RBTkNFfSB3aGVuIHRoYXQgZmllbGQgaXMgYWNjZXNzZWQuDQorCSAqIENsaWVudHMgc2hvdWxkIG5vdCBpbnZva2UgaXQgZGlyZWN0bHkuIEluc3RlYWQsIHRoZXkgc2hvdWxkIHNpbXBseSBhY2Nlc3MgdGhhdCBmaWVsZCB0byBvYnRhaW4gdGhlIHBhY2thZ2UuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAc2VlICNlTlNfVVJJDQorCSAqIEBzZWUgI2NyZWF0ZVBhY2thZ2VDb250ZW50cygpDQorCSAqIEBzZWUgI2luaXRpYWxpemVQYWNrYWdlQ29udGVudHMoKQ0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgc3RhdGljIEFjdGl2aXRpZXNQYWNrYWdlIGluaXQoKSB7DQorCQlpZiAoaXNJbml0ZWQpIHJldHVybiAoQWN0aXZpdGllc1BhY2thZ2UpRVBhY2thZ2UuUmVnaXN0cnkuSU5TVEFOQ0UuZ2V0RVBhY2thZ2UoQWN0aXZpdGllc1BhY2thZ2UuZU5TX1VSSSk7DQorDQorCQkvLyBPYnRhaW4gb3IgY3JlYXRlIGFuZCByZWdpc3RlciBwYWNrYWdlDQorCQlBY3Rpdml0aWVzUGFja2FnZUltcGwgdGhlQWN0aXZpdGllc1BhY2thZ2UgPSAoQWN0aXZpdGllc1BhY2thZ2VJbXBsKShFUGFja2FnZS5SZWdpc3RyeS5JTlNUQU5DRS5nZXQoZU5TX1VSSSkgaW5zdGFuY2VvZiBBY3Rpdml0aWVzUGFja2FnZUltcGwgPyBFUGFja2FnZS5SZWdpc3RyeS5JTlNUQU5DRS5nZXQoZU5TX1VSSSkgOiBuZXcgQWN0aXZpdGllc1BhY2thZ2VJbXBsKCkpOw0KKw0KKwkJaXNJbml0ZWQgPSB0cnVlOw0KKw0KKwkJLy8gSW5pdGlhbGl6ZSBzaW1wbGUgZGVwZW5kZW5jaWVzDQorCQlTdGFuZGFyZFBhY2thZ2UuZUlOU1RBTkNFLmVDbGFzcygpOw0KKw0KKwkJLy8gT2J0YWluIG9yIGNyZWF0ZSBhbmQgcmVnaXN0ZXIgaW50ZXJkZXBlbmRlbmNpZXMNCisJCUJsb2Nrc1BhY2thZ2VJbXBsIHRoZUJsb2Nrc1BhY2thZ2UgPSAoQmxvY2tzUGFja2FnZUltcGwpKEVQYWNrYWdlLlJlZ2lzdHJ5LklOU1RBTkNFLmdldEVQYWNrYWdlKEJsb2Nrc1BhY2thZ2UuZU5TX1VSSSkgaW5zdGFuY2VvZiBCbG9ja3NQYWNrYWdlSW1wbCA/IEVQYWNrYWdlLlJlZ2lzdHJ5LklOU1RBTkNFLmdldEVQYWNrYWdlKEJsb2Nrc1BhY2thZ2UuZU5TX1VSSSkgOiBCbG9ja3NQYWNrYWdlLmVJTlNUQU5DRSk7DQorCQlQb3J0YW5kZmxvd3NQYWNrYWdlSW1wbCB0aGVQb3J0YW5kZmxvd3NQYWNrYWdlID0gKFBvcnRhbmRmbG93c1BhY2thZ2VJbXBsKShFUGFja2FnZS5SZWdpc3RyeS5JTlNUQU5DRS5nZXRFUGFja2FnZShQb3J0YW5kZmxvd3NQYWNrYWdlLmVOU19VUkkpIGluc3RhbmNlb2YgUG9ydGFuZGZsb3dzUGFja2FnZUltcGwgPyBFUGFja2FnZS5SZWdpc3RyeS5JTlNUQU5DRS5nZXRFUGFja2FnZShQb3J0YW5kZmxvd3NQYWNrYWdlLmVOU19VUkkpIDogUG9ydGFuZGZsb3dzUGFja2FnZS5lSU5TVEFOQ0UpOw0KKwkJTW9kZWxlbGVtZW50c1BhY2thZ2VJbXBsIHRoZU1vZGVsZWxlbWVudHNQYWNrYWdlID0gKE1vZGVsZWxlbWVudHNQYWNrYWdlSW1wbCkoRVBhY2thZ2UuUmVnaXN0cnkuSU5TVEFOQ0UuZ2V0RVBhY2thZ2UoTW9kZWxlbGVtZW50c1BhY2thZ2UuZU5TX1VSSSkgaW5zdGFuY2VvZiBNb2RlbGVsZW1lbnRzUGFja2FnZUltcGwgPyBFUGFja2FnZS5SZWdpc3RyeS5JTlNUQU5DRS5nZXRFUGFja2FnZShNb2RlbGVsZW1lbnRzUGFja2FnZS5lTlNfVVJJKSA6IE1vZGVsZWxlbWVudHNQYWNrYWdlLmVJTlNUQU5DRSk7DQorCQlDb25zdHJhaW50YmxvY2tzUGFja2FnZUltcGwgdGhlQ29uc3RyYWludGJsb2Nrc1BhY2thZ2UgPSAoQ29uc3RyYWludGJsb2Nrc1BhY2thZ2VJbXBsKShFUGFja2FnZS5SZWdpc3RyeS5JTlNUQU5DRS5nZXRFUGFja2FnZShDb25zdHJhaW50YmxvY2tzUGFja2FnZS5lTlNfVVJJKSBpbnN0YW5jZW9mIENvbnN0cmFpbnRibG9ja3NQYWNrYWdlSW1wbCA/IEVQYWNrYWdlLlJlZ2lzdHJ5LklOU1RBTkNFLmdldEVQYWNrYWdlKENvbnN0cmFpbnRibG9ja3NQYWNrYWdlLmVOU19VUkkpIDogQ29uc3RyYWludGJsb2Nrc1BhY2thZ2UuZUlOU1RBTkNFKTsNCisJCUFsbG9jYXRpb25zUGFja2FnZUltcGwgdGhlQWxsb2NhdGlvbnNQYWNrYWdlID0gKEFsbG9jYXRpb25zUGFja2FnZUltcGwpKEVQYWNrYWdlLlJlZ2lzdHJ5LklOU1RBTkNFLmdldEVQYWNrYWdlKEFsbG9jYXRpb25zUGFja2FnZS5lTlNfVVJJKSBpbnN0YW5jZW9mIEFsbG9jYXRpb25zUGFja2FnZUltcGwgPyBFUGFja2FnZS5SZWdpc3RyeS5JTlNUQU5DRS5nZXRFUGFja2FnZShBbGxvY2F0aW9uc1BhY2thZ2UuZU5TX1VSSSkgOiBBbGxvY2F0aW9uc1BhY2thZ2UuZUlOU1RBTkNFKTsNCisJCVJlcXVpcmVtZW50c1BhY2thZ2VJbXBsIHRoZVJlcXVpcmVtZW50c1BhY2thZ2UgPSAoUmVxdWlyZW1lbnRzUGFja2FnZUltcGwpKEVQYWNrYWdlLlJlZ2lzdHJ5LklOU1RBTkNFLmdldEVQYWNrYWdlKFJlcXVpcmVtZW50c1BhY2thZ2UuZU5TX1VSSSkgaW5zdGFuY2VvZiBSZXF1aXJlbWVudHNQYWNrYWdlSW1wbCA/IEVQYWNrYWdlLlJlZ2lzdHJ5LklOU1RBTkNFLmdldEVQYWNrYWdlKFJlcXVpcmVtZW50c1BhY2thZ2UuZU5TX1VSSSkgOiBSZXF1aXJlbWVudHNQYWNrYWdlLmVJTlNUQU5DRSk7DQorCQlEZXByZWNhdGVkZWxlbWVudHNQYWNrYWdlSW1wbCB0aGVEZXByZWNhdGVkZWxlbWVudHNQYWNrYWdlID0gKERlcHJlY2F0ZWRlbGVtZW50c1BhY2thZ2VJbXBsKShFUGFja2FnZS5SZWdpc3RyeS5JTlNUQU5DRS5nZXRFUGFja2FnZShEZXByZWNhdGVkZWxlbWVudHNQYWNrYWdlLmVOU19VUkkpIGluc3RhbmNlb2YgRGVwcmVjYXRlZGVsZW1lbnRzUGFja2FnZUltcGwgPyBFUGFja2FnZS5SZWdpc3RyeS5JTlNUQU5DRS5nZXRFUGFja2FnZShEZXByZWNhdGVkZWxlbWVudHNQYWNrYWdlLmVOU19VUkkpIDogRGVwcmVjYXRlZGVsZW1lbnRzUGFja2FnZS5lSU5TVEFOQ0UpOw0KKw0KKwkJLy8gQ3JlYXRlIHBhY2thZ2UgbWV0YS1kYXRhIG9iamVjdHMNCisJCXRoZUFjdGl2aXRpZXNQYWNrYWdlLmNyZWF0ZVBhY2thZ2VDb250ZW50cygpOw0KKwkJdGhlQmxvY2tzUGFja2FnZS5jcmVhdGVQYWNrYWdlQ29udGVudHMoKTsNCisJCXRoZVBvcnRhbmRmbG93c1BhY2thZ2UuY3JlYXRlUGFja2FnZUNvbnRlbnRzKCk7DQorCQl0aGVNb2RlbGVsZW1lbnRzUGFja2FnZS5jcmVhdGVQYWNrYWdlQ29udGVudHMoKTsNCisJCXRoZUNvbnN0cmFpbnRibG9ja3NQYWNrYWdlLmNyZWF0ZVBhY2thZ2VDb250ZW50cygpOw0KKwkJdGhlQWxsb2NhdGlvbnNQYWNrYWdlLmNyZWF0ZVBhY2thZ2VDb250ZW50cygpOw0KKwkJdGhlUmVxdWlyZW1lbnRzUGFja2FnZS5jcmVhdGVQYWNrYWdlQ29udGVudHMoKTsNCisJCXRoZURlcHJlY2F0ZWRlbGVtZW50c1BhY2thZ2UuY3JlYXRlUGFja2FnZUNvbnRlbnRzKCk7DQorDQorCQkvLyBJbml0aWFsaXplIGNyZWF0ZWQgbWV0YS1kYXRhDQorCQl0aGVBY3Rpdml0aWVzUGFja2FnZS5pbml0aWFsaXplUGFja2FnZUNvbnRlbnRzKCk7DQorCQl0aGVCbG9ja3NQYWNrYWdlLmluaXRpYWxpemVQYWNrYWdlQ29udGVudHMoKTsNCisJCXRoZVBvcnRhbmRmbG93c1BhY2thZ2UuaW5pdGlhbGl6ZVBhY2thZ2VDb250ZW50cygpOw0KKwkJdGhlTW9kZWxlbGVtZW50c1BhY2thZ2UuaW5pdGlhbGl6ZVBhY2thZ2VDb250ZW50cygpOw0KKwkJdGhlQ29uc3RyYWludGJsb2Nrc1BhY2thZ2UuaW5pdGlhbGl6ZVBhY2thZ2VDb250ZW50cygpOw0KKwkJdGhlQWxsb2NhdGlvbnNQYWNrYWdlLmluaXRpYWxpemVQYWNrYWdlQ29udGVudHMoKTsNCisJCXRoZVJlcXVpcmVtZW50c1BhY2thZ2UuaW5pdGlhbGl6ZVBhY2thZ2VDb250ZW50cygpOw0KKwkJdGhlRGVwcmVjYXRlZGVsZW1lbnRzUGFja2FnZS5pbml0aWFsaXplUGFja2FnZUNvbnRlbnRzKCk7DQorDQorCQkvLyBNYXJrIG1ldGEtZGF0YSB0byBpbmRpY2F0ZSBpdCBjYW4ndCBiZSBjaGFuZ2VkDQorCQl0aGVBY3Rpdml0aWVzUGFja2FnZS5mcmVlemUoKTsNCisNCisgIA0KKwkJLy8gVXBkYXRlIHRoZSByZWdpc3RyeSBhbmQgcmV0dXJuIHRoZSBwYWNrYWdlDQorCQlFUGFja2FnZS5SZWdpc3RyeS5JTlNUQU5DRS5wdXQoQWN0aXZpdGllc1BhY2thZ2UuZU5TX1VSSSwgdGhlQWN0aXZpdGllc1BhY2thZ2UpOw0KKwkJcmV0dXJuIHRoZUFjdGl2aXRpZXNQYWNrYWdlOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIEVDbGFzcyBnZXRPdmVyd3JpdGUoKSB7DQorCQlyZXR1cm4gb3ZlcndyaXRlRUNsYXNzOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIEVSZWZlcmVuY2UgZ2V0T3ZlcndyaXRlX0Jhc2VfT2JqZWN0Tm9kZSgpIHsNCisJCXJldHVybiAoRVJlZmVyZW5jZSlvdmVyd3JpdGVFQ2xhc3MuZ2V0RVN0cnVjdHVyYWxGZWF0dXJlcygpLmdldCgwKTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBFQ2xhc3MgZ2V0Q29udHJvbE9wZXJhdG9yKCkgew0KKwkJcmV0dXJuIGNvbnRyb2xPcGVyYXRvckVDbGFzczsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBFUmVmZXJlbmNlIGdldENvbnRyb2xPcGVyYXRvcl9CYXNlX0JlaGF2aW9yKCkgew0KKwkJcmV0dXJuIChFUmVmZXJlbmNlKWNvbnRyb2xPcGVyYXRvckVDbGFzcy5nZXRFU3RydWN0dXJhbEZlYXR1cmVzKCkuZ2V0KDApOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIEVSZWZlcmVuY2UgZ2V0Q29udHJvbE9wZXJhdG9yX0Jhc2VfT3BlcmF0aW9uKCkgew0KKwkJcmV0dXJuIChFUmVmZXJlbmNlKWNvbnRyb2xPcGVyYXRvckVDbGFzcy5nZXRFU3RydWN0dXJhbEZlYXR1cmVzKCkuZ2V0KDEpOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIEVDbGFzcyBnZXRSYXRlKCkgew0KKwkJcmV0dXJuIHJhdGVFQ2xhc3M7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgRVJlZmVyZW5jZSBnZXRSYXRlX1JhdGUoKSB7DQorCQlyZXR1cm4gKEVSZWZlcmVuY2UpcmF0ZUVDbGFzcy5nZXRFU3RydWN0dXJhbEZlYXR1cmVzKCkuZ2V0KDApOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIEVSZWZlcmVuY2UgZ2V0UmF0ZV9CYXNlX0FjdGl2aXR5RWRnZSgpIHsNCisJCXJldHVybiAoRVJlZmVyZW5jZSlyYXRlRUNsYXNzLmdldEVTdHJ1Y3R1cmFsRmVhdHVyZXMoKS5nZXQoMSk7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgRVJlZmVyZW5jZSBnZXRSYXRlX0Jhc2VfT2JqZWN0Tm9kZSgpIHsNCisJCXJldHVybiAoRVJlZmVyZW5jZSlyYXRlRUNsYXNzLmdldEVTdHJ1Y3R1cmFsRmVhdHVyZXMoKS5nZXQoMik7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgRVJlZmVyZW5jZSBnZXRSYXRlX0Jhc2VfUGFyYW1ldGVyKCkgew0KKwkJcmV0dXJuIChFUmVmZXJlbmNlKXJhdGVFQ2xhc3MuZ2V0RVN0cnVjdHVyYWxGZWF0dXJlcygpLmdldCgzKTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBFQ2xhc3MgZ2V0Tm9CdWZmZXIoKSB7DQorCQlyZXR1cm4gbm9CdWZmZXJFQ2xhc3M7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgRVJlZmVyZW5jZSBnZXROb0J1ZmZlcl9CYXNlX09iamVjdE5vZGUoKSB7DQorCQlyZXR1cm4gKEVSZWZlcmVuY2Upbm9CdWZmZXJFQ2xhc3MuZ2V0RVN0cnVjdHVyYWxGZWF0dXJlcygpLmdldCgwKTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBFQ2xhc3MgZ2V0RGlzY3JldGUoKSB7DQorCQlyZXR1cm4gZGlzY3JldGVFQ2xhc3M7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgRUNsYXNzIGdldENvbnRpbnVvdXMoKSB7DQorCQlyZXR1cm4gY29udGludW91c0VDbGFzczsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBFQ2xhc3MgZ2V0UHJvYmFiaWxpdHkoKSB7DQorCQlyZXR1cm4gcHJvYmFiaWxpdHlFQ2xhc3M7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgRVJlZmVyZW5jZSBnZXRQcm9iYWJpbGl0eV9CYXNlX0FjdGl2aXR5RWRnZSgpIHsNCisJCXJldHVybiAoRVJlZmVyZW5jZSlwcm9iYWJpbGl0eUVDbGFzcy5nZXRFU3RydWN0dXJhbEZlYXR1cmVzKCkuZ2V0KDApOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIEVSZWZlcmVuY2UgZ2V0UHJvYmFiaWxpdHlfQmFzZV9QYXJhbWV0ZXJTZXQoKSB7DQorCQlyZXR1cm4gKEVSZWZlcmVuY2UpcHJvYmFiaWxpdHlFQ2xhc3MuZ2V0RVN0cnVjdHVyYWxGZWF0dXJlcygpLmdldCgxKTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBFUmVmZXJlbmNlIGdldFByb2JhYmlsaXR5X1Byb2JhYmlsaXR5KCkgew0KKwkJcmV0dXJuIChFUmVmZXJlbmNlKXByb2JhYmlsaXR5RUNsYXNzLmdldEVTdHJ1Y3R1cmFsRmVhdHVyZXMoKS5nZXQoMik7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgRUNsYXNzIGdldE9wdGlvbmFsKCkgew0KKwkJcmV0dXJuIG9wdGlvbmFsRUNsYXNzOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIEVSZWZlcmVuY2UgZ2V0T3B0aW9uYWxfQmFzZV9QYXJhbWV0ZXIoKSB7DQorCQlyZXR1cm4gKEVSZWZlcmVuY2Upb3B0aW9uYWxFQ2xhc3MuZ2V0RVN0cnVjdHVyYWxGZWF0dXJlcygpLmdldCgwKTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBBY3Rpdml0aWVzRmFjdG9yeSBnZXRBY3Rpdml0aWVzRmFjdG9yeSgpIHsNCisJCXJldHVybiAoQWN0aXZpdGllc0ZhY3RvcnkpZ2V0RUZhY3RvcnlJbnN0YW5jZSgpOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHJpdmF0ZSBib29sZWFuIGlzQ3JlYXRlZCA9IGZhbHNlOw0KKw0KKwkvKioNCisJICogQ3JlYXRlcyB0aGUgbWV0YS1tb2RlbCBvYmplY3RzIGZvciB0aGUgcGFja2FnZS4gIFRoaXMgbWV0aG9kIGlzDQorCSAqIGd1YXJkZWQgdG8gaGF2ZSBubyBhZmZlY3Qgb24gYW55IGludm9jYXRpb24gYnV0IGl0cyBmaXJzdC4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyB2b2lkIGNyZWF0ZVBhY2thZ2VDb250ZW50cygpIHsNCisJCWlmIChpc0NyZWF0ZWQpIHJldHVybjsNCisJCWlzQ3JlYXRlZCA9IHRydWU7DQorDQorCQkvLyBDcmVhdGUgY2xhc3NlcyBhbmQgdGhlaXIgZmVhdHVyZXMNCisJCW92ZXJ3cml0ZUVDbGFzcyA9IGNyZWF0ZUVDbGFzcyhPVkVSV1JJVEUpOw0KKwkJY3JlYXRlRVJlZmVyZW5jZShvdmVyd3JpdGVFQ2xhc3MsIE9WRVJXUklURV9fQkFTRV9PQkpFQ1RfTk9ERSk7DQorDQorCQljb250cm9sT3BlcmF0b3JFQ2xhc3MgPSBjcmVhdGVFQ2xhc3MoQ09OVFJPTF9PUEVSQVRPUik7DQorCQljcmVhdGVFUmVmZXJlbmNlKGNvbnRyb2xPcGVyYXRvckVDbGFzcywgQ09OVFJPTF9PUEVSQVRPUl9fQkFTRV9CRUhBVklPUik7DQorCQljcmVhdGVFUmVmZXJlbmNlKGNvbnRyb2xPcGVyYXRvckVDbGFzcywgQ09OVFJPTF9PUEVSQVRPUl9fQkFTRV9PUEVSQVRJT04pOw0KKw0KKwkJcmF0ZUVDbGFzcyA9IGNyZWF0ZUVDbGFzcyhSQVRFKTsNCisJCWNyZWF0ZUVSZWZlcmVuY2UocmF0ZUVDbGFzcywgUkFURV9fUkFURSk7DQorCQljcmVhdGVFUmVmZXJlbmNlKHJhdGVFQ2xhc3MsIFJBVEVfX0JBU0VfQUNUSVZJVFlfRURHRSk7DQorCQljcmVhdGVFUmVmZXJlbmNlKHJhdGVFQ2xhc3MsIFJBVEVfX0JBU0VfT0JKRUNUX05PREUpOw0KKwkJY3JlYXRlRVJlZmVyZW5jZShyYXRlRUNsYXNzLCBSQVRFX19CQVNFX1BBUkFNRVRFUik7DQorDQorCQlub0J1ZmZlckVDbGFzcyA9IGNyZWF0ZUVDbGFzcyhOT19CVUZGRVIpOw0KKwkJY3JlYXRlRVJlZmVyZW5jZShub0J1ZmZlckVDbGFzcywgTk9fQlVGRkVSX19CQVNFX09CSkVDVF9OT0RFKTsNCisNCisJCWRpc2NyZXRlRUNsYXNzID0gY3JlYXRlRUNsYXNzKERJU0NSRVRFKTsNCisNCisJCWNvbnRpbnVvdXNFQ2xhc3MgPSBjcmVhdGVFQ2xhc3MoQ09OVElOVU9VUyk7DQorDQorCQlwcm9iYWJpbGl0eUVDbGFzcyA9IGNyZWF0ZUVDbGFzcyhQUk9CQUJJTElUWSk7DQorCQljcmVhdGVFUmVmZXJlbmNlKHByb2JhYmlsaXR5RUNsYXNzLCBQUk9CQUJJTElUWV9fQkFTRV9BQ1RJVklUWV9FREdFKTsNCisJCWNyZWF0ZUVSZWZlcmVuY2UocHJvYmFiaWxpdHlFQ2xhc3MsIFBST0JBQklMSVRZX19CQVNFX1BBUkFNRVRFUl9TRVQpOw0KKwkJY3JlYXRlRVJlZmVyZW5jZShwcm9iYWJpbGl0eUVDbGFzcywgUFJPQkFCSUxJVFlfX1BST0JBQklMSVRZKTsNCisNCisJCW9wdGlvbmFsRUNsYXNzID0gY3JlYXRlRUNsYXNzKE9QVElPTkFMKTsNCisJCWNyZWF0ZUVSZWZlcmVuY2Uob3B0aW9uYWxFQ2xhc3MsIE9QVElPTkFMX19CQVNFX1BBUkFNRVRFUik7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwcml2YXRlIGJvb2xlYW4gaXNJbml0aWFsaXplZCA9IGZhbHNlOw0KKw0KKwkvKioNCisJICogQ29tcGxldGUgdGhlIGluaXRpYWxpemF0aW9uIG9mIHRoZSBwYWNrYWdlIGFuZCBpdHMgbWV0YS1tb2RlbC4gIFRoaXMNCisJICogbWV0aG9kIGlzIGd1YXJkZWQgdG8gaGF2ZSBubyBhZmZlY3Qgb24gYW55IGludm9jYXRpb24gYnV0IGl0cyBmaXJzdC4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyB2b2lkIGluaXRpYWxpemVQYWNrYWdlQ29udGVudHMoKSB7DQorCQlpZiAoaXNJbml0aWFsaXplZCkgcmV0dXJuOw0KKwkJaXNJbml0aWFsaXplZCA9IHRydWU7DQorDQorCQkvLyBJbml0aWFsaXplIHBhY2thZ2UNCisJCXNldE5hbWUoZU5BTUUpOw0KKwkJc2V0TnNQcmVmaXgoZU5TX1BSRUZJWCk7DQorCQlzZXROc1VSSShlTlNfVVJJKTsNCisNCisJCS8vIE9idGFpbiBvdGhlciBkZXBlbmRlbnQgcGFja2FnZXMNCisJCVVNTFBhY2thZ2UgdGhlVU1MUGFja2FnZSA9IChVTUxQYWNrYWdlKUVQYWNrYWdlLlJlZ2lzdHJ5LklOU1RBTkNFLmdldEVQYWNrYWdlKFVNTFBhY2thZ2UuZU5TX1VSSSk7DQorDQorCQkvLyBDcmVhdGUgdHlwZSBwYXJhbWV0ZXJzDQorDQorCQkvLyBTZXQgYm91bmRzIGZvciB0eXBlIHBhcmFtZXRlcnMNCisNCisJCS8vIEFkZCBzdXBlcnR5cGVzIHRvIGNsYXNzZXMNCisJCWRpc2NyZXRlRUNsYXNzLmdldEVTdXBlclR5cGVzKCkuYWRkKHRoaXMuZ2V0UmF0ZSgpKTsNCisJCWNvbnRpbnVvdXNFQ2xhc3MuZ2V0RVN1cGVyVHlwZXMoKS5hZGQodGhpcy5nZXRSYXRlKCkpOw0KKw0KKwkJLy8gSW5pdGlhbGl6ZSBjbGFzc2VzLCBmZWF0dXJlcywgYW5kIG9wZXJhdGlvbnM7IGFkZCBwYXJhbWV0ZXJzDQorCQlpbml0RUNsYXNzKG92ZXJ3cml0ZUVDbGFzcywgT3ZlcndyaXRlLmNsYXNzLCAiT3ZlcndyaXRlIiwgIUlTX0FCU1RSQUNULCAhSVNfSU5URVJGQUNFLCBJU19HRU5FUkFURURfSU5TVEFOQ0VfQ0xBU1MpOyAvLyROT04tTkxTLTEkDQorCQlpbml0RVJlZmVyZW5jZShnZXRPdmVyd3JpdGVfQmFzZV9PYmplY3ROb2RlKCksIHRoZVVNTFBhY2thZ2UuZ2V0T2JqZWN0Tm9kZSgpLCBudWxsLCAiYmFzZV9PYmplY3ROb2RlIiwgbnVsbCwgMCwgMSwgT3ZlcndyaXRlLmNsYXNzLCAhSVNfVFJBTlNJRU5ULCAhSVNfVk9MQVRJTEUsIElTX0NIQU5HRUFCTEUsICFJU19DT01QT1NJVEUsIElTX1JFU09MVkVfUFJPWElFUywgIUlTX1VOU0VUVEFCTEUsIElTX1VOSVFVRSwgIUlTX0RFUklWRUQsICFJU19PUkRFUkVEKTsgLy8kTk9OLU5MUy0xJA0KKw0KKwkJaW5pdEVDbGFzcyhjb250cm9sT3BlcmF0b3JFQ2xhc3MsIENvbnRyb2xPcGVyYXRvci5jbGFzcywgIkNvbnRyb2xPcGVyYXRvciIsICFJU19BQlNUUkFDVCwgIUlTX0lOVEVSRkFDRSwgSVNfR0VORVJBVEVEX0lOU1RBTkNFX0NMQVNTKTsgLy8kTk9OLU5MUy0xJA0KKwkJaW5pdEVSZWZlcmVuY2UoZ2V0Q29udHJvbE9wZXJhdG9yX0Jhc2VfQmVoYXZpb3IoKSwgdGhlVU1MUGFja2FnZS5nZXRCZWhhdmlvcigpLCBudWxsLCAiYmFzZV9CZWhhdmlvciIsIG51bGwsIDAsIDEsIENvbnRyb2xPcGVyYXRvci5jbGFzcywgIUlTX1RSQU5TSUVOVCwgIUlTX1ZPTEFUSUxFLCBJU19DSEFOR0VBQkxFLCAhSVNfQ09NUE9TSVRFLCBJU19SRVNPTFZFX1BST1hJRVMsICFJU19VTlNFVFRBQkxFLCBJU19VTklRVUUsICFJU19ERVJJVkVELCAhSVNfT1JERVJFRCk7IC8vJE5PTi1OTFMtMSQNCisJCWluaXRFUmVmZXJlbmNlKGdldENvbnRyb2xPcGVyYXRvcl9CYXNlX09wZXJhdGlvbigpLCB0aGVVTUxQYWNrYWdlLmdldE9wZXJhdGlvbigpLCBudWxsLCAiYmFzZV9PcGVyYXRpb24iLCBudWxsLCAwLCAxLCBDb250cm9sT3BlcmF0b3IuY2xhc3MsICFJU19UUkFOU0lFTlQsICFJU19WT0xBVElMRSwgSVNfQ0hBTkdFQUJMRSwgIUlTX0NPTVBPU0lURSwgSVNfUkVTT0xWRV9QUk9YSUVTLCAhSVNfVU5TRVRUQUJMRSwgSVNfVU5JUVVFLCAhSVNfREVSSVZFRCwgIUlTX09SREVSRUQpOyAvLyROT04tTkxTLTEkDQorDQorCQlpbml0RUNsYXNzKHJhdGVFQ2xhc3MsIFJhdGUuY2xhc3MsICJSYXRlIiwgIUlTX0FCU1RSQUNULCAhSVNfSU5URVJGQUNFLCBJU19HRU5FUkFURURfSU5TVEFOQ0VfQ0xBU1MpOyAvLyROT04tTkxTLTEkDQorCQlpbml0RVJlZmVyZW5jZShnZXRSYXRlX1JhdGUoKSwgdGhlVU1MUGFja2FnZS5nZXRJbnN0YW5jZVNwZWNpZmljYXRpb24oKSwgbnVsbCwgInJhdGUiLCBudWxsLCAxLCAxLCBSYXRlLmNsYXNzLCAhSVNfVFJBTlNJRU5ULCAhSVNfVk9MQVRJTEUsIElTX0NIQU5HRUFCTEUsICFJU19DT01QT1NJVEUsIElTX1JFU09MVkVfUFJPWElFUywgIUlTX1VOU0VUVEFCTEUsIElTX1VOSVFVRSwgIUlTX0RFUklWRUQsICFJU19PUkRFUkVEKTsgLy8kTk9OLU5MUy0xJA0KKwkJaW5pdEVSZWZlcmVuY2UoZ2V0UmF0ZV9CYXNlX0FjdGl2aXR5RWRnZSgpLCB0aGVVTUxQYWNrYWdlLmdldEFjdGl2aXR5RWRnZSgpLCBudWxsLCAiYmFzZV9BY3Rpdml0eUVkZ2UiLCBudWxsLCAwLCAxLCBSYXRlLmNsYXNzLCAhSVNfVFJBTlNJRU5ULCAhSVNfVk9MQVRJTEUsIElTX0NIQU5HRUFCTEUsICFJU19DT01QT1NJVEUsIElTX1JFU09MVkVfUFJPWElFUywgIUlTX1VOU0VUVEFCTEUsIElTX1VOSVFVRSwgIUlTX0RFUklWRUQsICFJU19PUkRFUkVEKTsgLy8kTk9OLU5MUy0xJA0KKwkJaW5pdEVSZWZlcmVuY2UoZ2V0UmF0ZV9CYXNlX09iamVjdE5vZGUoKSwgdGhlVU1MUGFja2FnZS5nZXRPYmplY3ROb2RlKCksIG51bGwsICJiYXNlX09iamVjdE5vZGUiLCBudWxsLCAwLCAxLCBSYXRlLmNsYXNzLCAhSVNfVFJBTlNJRU5ULCAhSVNfVk9MQVRJTEUsIElTX0NIQU5HRUFCTEUsICFJU19DT01QT1NJVEUsIElTX1JFU09MVkVfUFJPWElFUywgIUlTX1VOU0VUVEFCTEUsIElTX1VOSVFVRSwgIUlTX0RFUklWRUQsICFJU19PUkRFUkVEKTsgLy8kTk9OLU5MUy0xJA0KKwkJaW5pdEVSZWZlcmVuY2UoZ2V0UmF0ZV9CYXNlX1BhcmFtZXRlcigpLCB0aGVVTUxQYWNrYWdlLmdldFBhcmFtZXRlcigpLCBudWxsLCAiYmFzZV9QYXJhbWV0ZXIiLCBudWxsLCAwLCAxLCBSYXRlLmNsYXNzLCAhSVNfVFJBTlNJRU5ULCAhSVNfVk9MQVRJTEUsIElTX0NIQU5HRUFCTEUsICFJU19DT01QT1NJVEUsIElTX1JFU09MVkVfUFJPWElFUywgIUlTX1VOU0VUVEFCTEUsIElTX1VOSVFVRSwgIUlTX0RFUklWRUQsICFJU19PUkRFUkVEKTsgLy8kTk9OLU5MUy0xJA0KKw0KKwkJaW5pdEVDbGFzcyhub0J1ZmZlckVDbGFzcywgTm9CdWZmZXIuY2xhc3MsICJOb0J1ZmZlciIsICFJU19BQlNUUkFDVCwgIUlTX0lOVEVSRkFDRSwgSVNfR0VORVJBVEVEX0lOU1RBTkNFX0NMQVNTKTsgLy8kTk9OLU5MUy0xJA0KKwkJaW5pdEVSZWZlcmVuY2UoZ2V0Tm9CdWZmZXJfQmFzZV9PYmplY3ROb2RlKCksIHRoZVVNTFBhY2thZ2UuZ2V0T2JqZWN0Tm9kZSgpLCBudWxsLCAiYmFzZV9PYmplY3ROb2RlIiwgbnVsbCwgMCwgMSwgTm9CdWZmZXIuY2xhc3MsICFJU19UUkFOU0lFTlQsICFJU19WT0xBVElMRSwgSVNfQ0hBTkdFQUJMRSwgIUlTX0NPTVBPU0lURSwgSVNfUkVTT0xWRV9QUk9YSUVTLCAhSVNfVU5TRVRUQUJMRSwgSVNfVU5JUVVFLCAhSVNfREVSSVZFRCwgIUlTX09SREVSRUQpOyAvLyROT04tTkxTLTEkDQorDQorCQlpbml0RUNsYXNzKGRpc2NyZXRlRUNsYXNzLCBEaXNjcmV0ZS5jbGFzcywgIkRpc2NyZXRlIiwgIUlTX0FCU1RSQUNULCAhSVNfSU5URVJGQUNFLCBJU19HRU5FUkFURURfSU5TVEFOQ0VfQ0xBU1MpOyAvLyROT04tTkxTLTEkDQorDQorCQlpbml0RUNsYXNzKGNvbnRpbnVvdXNFQ2xhc3MsIENvbnRpbnVvdXMuY2xhc3MsICJDb250aW51b3VzIiwgIUlTX0FCU1RSQUNULCAhSVNfSU5URVJGQUNFLCBJU19HRU5FUkFURURfSU5TVEFOQ0VfQ0xBU1MpOyAvLyROT04tTkxTLTEkDQorDQorCQlpbml0RUNsYXNzKHByb2JhYmlsaXR5RUNsYXNzLCBQcm9iYWJpbGl0eS5jbGFzcywgIlByb2JhYmlsaXR5IiwgIUlTX0FCU1RSQUNULCAhSVNfSU5URVJGQUNFLCBJU19HRU5FUkFURURfSU5TVEFOQ0VfQ0xBU1MpOyAvLyROT04tTkxTLTEkDQorCQlpbml0RVJlZmVyZW5jZShnZXRQcm9iYWJpbGl0eV9CYXNlX0FjdGl2aXR5RWRnZSgpLCB0aGVVTUxQYWNrYWdlLmdldEFjdGl2aXR5RWRnZSgpLCBudWxsLCAiYmFzZV9BY3Rpdml0eUVkZ2UiLCBudWxsLCAwLCAxLCBQcm9iYWJpbGl0eS5jbGFzcywgIUlTX1RSQU5TSUVOVCwgIUlTX1ZPTEFUSUxFLCBJU19DSEFOR0VBQkxFLCAhSVNfQ09NUE9TSVRFLCBJU19SRVNPTFZFX1BST1hJRVMsICFJU19VTlNFVFRBQkxFLCBJU19VTklRVUUsICFJU19ERVJJVkVELCAhSVNfT1JERVJFRCk7IC8vJE5PTi1OTFMtMSQNCisJCWluaXRFUmVmZXJlbmNlKGdldFByb2JhYmlsaXR5X0Jhc2VfUGFyYW1ldGVyU2V0KCksIHRoZVVNTFBhY2thZ2UuZ2V0UGFyYW1ldGVyU2V0KCksIG51bGwsICJiYXNlX1BhcmFtZXRlclNldCIsIG51bGwsIDAsIDEsIFByb2JhYmlsaXR5LmNsYXNzLCAhSVNfVFJBTlNJRU5ULCAhSVNfVk9MQVRJTEUsIElTX0NIQU5HRUFCTEUsICFJU19DT01QT1NJVEUsIElTX1JFU09MVkVfUFJPWElFUywgIUlTX1VOU0VUVEFCTEUsIElTX1VOSVFVRSwgIUlTX0RFUklWRUQsICFJU19PUkRFUkVEKTsgLy8kTk9OLU5MUy0xJA0KKwkJaW5pdEVSZWZlcmVuY2UoZ2V0UHJvYmFiaWxpdHlfUHJvYmFiaWxpdHkoKSwgdGhlVU1MUGFja2FnZS5nZXRWYWx1ZVNwZWNpZmljYXRpb24oKSwgbnVsbCwgInByb2JhYmlsaXR5IiwgbnVsbCwgMSwgMSwgUHJvYmFiaWxpdHkuY2xhc3MsICFJU19UUkFOU0lFTlQsICFJU19WT0xBVElMRSwgSVNfQ0hBTkdFQUJMRSwgIUlTX0NPTVBPU0lURSwgSVNfUkVTT0xWRV9QUk9YSUVTLCAhSVNfVU5TRVRUQUJMRSwgSVNfVU5JUVVFLCAhSVNfREVSSVZFRCwgIUlTX09SREVSRUQpOyAvLyROT04tTkxTLTEkDQorDQorCQlpbml0RUNsYXNzKG9wdGlvbmFsRUNsYXNzLCBPcHRpb25hbC5jbGFzcywgIk9wdGlvbmFsIiwgIUlTX0FCU1RSQUNULCAhSVNfSU5URVJGQUNFLCBJU19HRU5FUkFURURfSU5TVEFOQ0VfQ0xBU1MpOyAvLyROT04tTkxTLTEkDQorCQlpbml0RVJlZmVyZW5jZShnZXRPcHRpb25hbF9CYXNlX1BhcmFtZXRlcigpLCB0aGVVTUxQYWNrYWdlLmdldFBhcmFtZXRlcigpLCBudWxsLCAiYmFzZV9QYXJhbWV0ZXIiLCBudWxsLCAwLCAxLCBPcHRpb25hbC5jbGFzcywgIUlTX1RSQU5TSUVOVCwgIUlTX1ZPTEFUSUxFLCBJU19DSEFOR0VBQkxFLCAhSVNfQ09NUE9TSVRFLCBJU19SRVNPTFZFX1BST1hJRVMsICFJU19VTlNFVFRBQkxFLCBJU19VTklRVUUsICFJU19ERVJJVkVELCAhSVNfT1JERVJFRCk7IC8vJE5PTi1OTFMtMSQNCisNCisJCS8vIENyZWF0ZSByZXNvdXJjZQ0KKwkJY3JlYXRlUmVzb3VyY2UoZU5TX1VSSSk7DQorDQorCQkvLyBDcmVhdGUgYW5ub3RhdGlvbnMNCisJCS8vIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvdW1sMi8yLjAuMC9VTUwNCisJCWNyZWF0ZVVNTEFubm90YXRpb25zKCk7DQorCX0NCisNCisJLyoqDQorCSAqIEluaXRpYWxpemVzIHRoZSBhbm5vdGF0aW9ucyBmb3IgPGI+aHR0cDovL3d3dy5lY2xpcHNlLm9yZy91bWwyLzIuMC4wL1VNTDwvYj4uDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwcm90ZWN0ZWQgdm9pZCBjcmVhdGVVTUxBbm5vdGF0aW9ucygpIHsNCisJCVN0cmluZyBzb3VyY2UgPSAiaHR0cDovL3d3dy5lY2xpcHNlLm9yZy91bWwyLzIuMC4wL1VNTCI7IC8vJE5PTi1OTFMtMSQJDQorCQlhZGRBbm5vdGF0aW9uDQorCQkgICh0aGlzLCANCisJCSAgIHNvdXJjZSwgDQorCQkgICBuZXcgU3RyaW5nW10gew0KKwkJCSAib3JpZ2luYWxOYW1lIiwgIkFjdGl2aXRpZXMiIC8vJE5PTi1OTFMtMSQgLy8kTk9OLU5MUy0yJA0KKwkJICAgfSk7DQorCX0NCisNCit9IC8vQWN0aXZpdGllc1BhY2thZ2VJbXBsDQpkaWZmIC0tZ2l0IGEvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvYWN0aXZpdGllcy9pbnRlcm5hbC9pbXBsL0NvbnRpbnVvdXNJbXBsLmphdmEgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9hY3Rpdml0aWVzL2ludGVybmFsL2ltcGwvQ29udGludW91c0ltcGwuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yOWEwMGE2Ci0tLSAvZGV2L251bGwKKysrIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvYWN0aXZpdGllcy9pbnRlcm5hbC9pbXBsL0NvbnRpbnVvdXNJbXBsLmphdmEKQEAgLTAsMCArMSw0NSBAQAorLyoqDQorICogQ29weXJpZ2h0IChjKSAyMDE1IENFQSBMSVNULg0KKyAqIA0KKyAqICBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQorICogIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KKyAqICB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KKyAqICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqLw0KK3BhY2thZ2Ugb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmFjdGl2aXRpZXMuaW50ZXJuYWwuaW1wbDsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVDbGFzczsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmFjdGl2aXRpZXMuQWN0aXZpdGllc1BhY2thZ2U7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5hY3Rpdml0aWVzLkNvbnRpbnVvdXM7DQorDQorLyoqDQorICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisgKiBBbiBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgbW9kZWwgb2JqZWN0ICc8ZW0+PGI+Q29udGludW91czwvYj48L2VtPicuDQorICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorICogPHA+DQorICogPC9wPg0KKyAqDQorICogQGdlbmVyYXRlZA0KKyAqLw0KK3B1YmxpYyBjbGFzcyBDb250aW51b3VzSW1wbCBleHRlbmRzIFJhdGVJbXBsIGltcGxlbWVudHMgQ29udGludW91cyB7DQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHJvdGVjdGVkIENvbnRpbnVvdXNJbXBsKCkgew0KKwkJc3VwZXIoKTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwcm90ZWN0ZWQgRUNsYXNzIGVTdGF0aWNDbGFzcygpIHsNCisJCXJldHVybiBBY3Rpdml0aWVzUGFja2FnZS5MaXRlcmFscy5DT05USU5VT1VTOw0KKwl9DQorDQorfSAvL0NvbnRpbnVvdXNJbXBsDQpkaWZmIC0tZ2l0IGEvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvYWN0aXZpdGllcy9pbnRlcm5hbC9pbXBsL0NvbnRyb2xPcGVyYXRvckltcGwuamF2YSBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L2FjdGl2aXRpZXMvaW50ZXJuYWwvaW1wbC9Db250cm9sT3BlcmF0b3JJbXBsLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWE4NTFlNQotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L2FjdGl2aXRpZXMvaW50ZXJuYWwvaW1wbC9Db250cm9sT3BlcmF0b3JJbXBsLmphdmEKQEAgLTAsMCArMSwyMjUgQEAKKy8qKg0KKyAqIENvcHlyaWdodCAoYykgMjAxNSBDRUEgTElTVC4NCisgKiANCisgKiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KKyAqICBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCisgKiAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCisgKiAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgKi8NCitwYWNrYWdlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5hY3Rpdml0aWVzLmludGVybmFsLmltcGw7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jb21tb24ubm90aWZ5Lk5vdGlmaWNhdGlvbjsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVDbGFzczsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkludGVybmFsRU9iamVjdDsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLmltcGwuRU5vdGlmaWNhdGlvbkltcGw7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5pbXBsLk1pbmltYWxFT2JqZWN0SW1wbDsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmFjdGl2aXRpZXMuQWN0aXZpdGllc1BhY2thZ2U7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5hY3Rpdml0aWVzLkNvbnRyb2xPcGVyYXRvcjsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UudW1sMi51bWwuQmVoYXZpb3I7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnVtbDIudW1sLk9wZXJhdGlvbjsNCisNCisvKioNCisgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKyAqIEFuIGltcGxlbWVudGF0aW9uIG9mIHRoZSBtb2RlbCBvYmplY3QgJzxlbT48Yj5Db250cm9sIE9wZXJhdG9yPC9iPjwvZW0+Jy4NCisgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisgKiA8cD4NCisgKiBUaGUgZm9sbG93aW5nIGZlYXR1cmVzIGFyZSBpbXBsZW1lbnRlZDoNCisgKiA8dWw+DQorICogICA8bGk+e0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5hY3Rpdml0aWVzLmludGVybmFsLmltcGwuQ29udHJvbE9wZXJhdG9ySW1wbCNnZXRCYXNlX0JlaGF2aW9yIDxlbT5CYXNlIEJlaGF2aW9yPC9lbT59PC9saT4NCisgKiAgIDxsaT57QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmFjdGl2aXRpZXMuaW50ZXJuYWwuaW1wbC5Db250cm9sT3BlcmF0b3JJbXBsI2dldEJhc2VfT3BlcmF0aW9uIDxlbT5CYXNlIE9wZXJhdGlvbjwvZW0+fTwvbGk+DQorICogPC91bD4NCisgKiA8L3A+DQorICoNCisgKiBAZ2VuZXJhdGVkDQorICovDQorcHVibGljIGNsYXNzIENvbnRyb2xPcGVyYXRvckltcGwgZXh0ZW5kcyBNaW5pbWFsRU9iamVjdEltcGwuQ29udGFpbmVyIGltcGxlbWVudHMgQ29udHJvbE9wZXJhdG9yIHsNCisJLyoqDQorCSAqIFRoZSBjYWNoZWQgdmFsdWUgb2YgdGhlICd7QGxpbmsgI2dldEJhc2VfQmVoYXZpb3IoKSA8ZW0+QmFzZSBCZWhhdmlvcjwvZW0+fScgcmVmZXJlbmNlLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHNlZSAjZ2V0QmFzZV9CZWhhdmlvcigpDQorCSAqIEBnZW5lcmF0ZWQNCisJICogQG9yZGVyZWQNCisJICovDQorCXByb3RlY3RlZCBCZWhhdmlvciBiYXNlX0JlaGF2aW9yOw0KKw0KKwkvKioNCisJICogVGhlIGNhY2hlZCB2YWx1ZSBvZiB0aGUgJ3tAbGluayAjZ2V0QmFzZV9PcGVyYXRpb24oKSA8ZW0+QmFzZSBPcGVyYXRpb248L2VtPn0nIHJlZmVyZW5jZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBzZWUgI2dldEJhc2VfT3BlcmF0aW9uKCkNCisJICogQGdlbmVyYXRlZA0KKwkgKiBAb3JkZXJlZA0KKwkgKi8NCisJcHJvdGVjdGVkIE9wZXJhdGlvbiBiYXNlX09wZXJhdGlvbjsNCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwcm90ZWN0ZWQgQ29udHJvbE9wZXJhdG9ySW1wbCgpIHsNCisJCXN1cGVyKCk7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHJvdGVjdGVkIEVDbGFzcyBlU3RhdGljQ2xhc3MoKSB7DQorCQlyZXR1cm4gQWN0aXZpdGllc1BhY2thZ2UuTGl0ZXJhbHMuQ09OVFJPTF9PUEVSQVRPUjsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBCZWhhdmlvciBnZXRCYXNlX0JlaGF2aW9yKCkgew0KKwkJaWYgKGJhc2VfQmVoYXZpb3IgIT0gbnVsbCAmJiBiYXNlX0JlaGF2aW9yLmVJc1Byb3h5KCkpIHsNCisJCQlJbnRlcm5hbEVPYmplY3Qgb2xkQmFzZV9CZWhhdmlvciA9IChJbnRlcm5hbEVPYmplY3QpYmFzZV9CZWhhdmlvcjsNCisJCQliYXNlX0JlaGF2aW9yID0gKEJlaGF2aW9yKWVSZXNvbHZlUHJveHkob2xkQmFzZV9CZWhhdmlvcik7DQorCQkJaWYgKGJhc2VfQmVoYXZpb3IgIT0gb2xkQmFzZV9CZWhhdmlvcikgew0KKwkJCQlpZiAoZU5vdGlmaWNhdGlvblJlcXVpcmVkKCkpDQorCQkJCQllTm90aWZ5KG5ldyBFTm90aWZpY2F0aW9uSW1wbCh0aGlzLCBOb3RpZmljYXRpb24uUkVTT0xWRSwgQWN0aXZpdGllc1BhY2thZ2UuQ09OVFJPTF9PUEVSQVRPUl9fQkFTRV9CRUhBVklPUiwgb2xkQmFzZV9CZWhhdmlvciwgYmFzZV9CZWhhdmlvcikpOw0KKwkJCX0NCisJCX0NCisJCXJldHVybiBiYXNlX0JlaGF2aW9yOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIEJlaGF2aW9yIGJhc2ljR2V0QmFzZV9CZWhhdmlvcigpIHsNCisJCXJldHVybiBiYXNlX0JlaGF2aW9yOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIHZvaWQgc2V0QmFzZV9CZWhhdmlvcihCZWhhdmlvciBuZXdCYXNlX0JlaGF2aW9yKSB7DQorCQlCZWhhdmlvciBvbGRCYXNlX0JlaGF2aW9yID0gYmFzZV9CZWhhdmlvcjsNCisJCWJhc2VfQmVoYXZpb3IgPSBuZXdCYXNlX0JlaGF2aW9yOw0KKwkJaWYgKGVOb3RpZmljYXRpb25SZXF1aXJlZCgpKQ0KKwkJCWVOb3RpZnkobmV3IEVOb3RpZmljYXRpb25JbXBsKHRoaXMsIE5vdGlmaWNhdGlvbi5TRVQsIEFjdGl2aXRpZXNQYWNrYWdlLkNPTlRST0xfT1BFUkFUT1JfX0JBU0VfQkVIQVZJT1IsIG9sZEJhc2VfQmVoYXZpb3IsIGJhc2VfQmVoYXZpb3IpKTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBPcGVyYXRpb24gZ2V0QmFzZV9PcGVyYXRpb24oKSB7DQorCQlpZiAoYmFzZV9PcGVyYXRpb24gIT0gbnVsbCAmJiBiYXNlX09wZXJhdGlvbi5lSXNQcm94eSgpKSB7DQorCQkJSW50ZXJuYWxFT2JqZWN0IG9sZEJhc2VfT3BlcmF0aW9uID0gKEludGVybmFsRU9iamVjdCliYXNlX09wZXJhdGlvbjsNCisJCQliYXNlX09wZXJhdGlvbiA9IChPcGVyYXRpb24pZVJlc29sdmVQcm94eShvbGRCYXNlX09wZXJhdGlvbik7DQorCQkJaWYgKGJhc2VfT3BlcmF0aW9uICE9IG9sZEJhc2VfT3BlcmF0aW9uKSB7DQorCQkJCWlmIChlTm90aWZpY2F0aW9uUmVxdWlyZWQoKSkNCisJCQkJCWVOb3RpZnkobmV3IEVOb3RpZmljYXRpb25JbXBsKHRoaXMsIE5vdGlmaWNhdGlvbi5SRVNPTFZFLCBBY3Rpdml0aWVzUGFja2FnZS5DT05UUk9MX09QRVJBVE9SX19CQVNFX09QRVJBVElPTiwgb2xkQmFzZV9PcGVyYXRpb24sIGJhc2VfT3BlcmF0aW9uKSk7DQorCQkJfQ0KKwkJfQ0KKwkJcmV0dXJuIGJhc2VfT3BlcmF0aW9uOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIE9wZXJhdGlvbiBiYXNpY0dldEJhc2VfT3BlcmF0aW9uKCkgew0KKwkJcmV0dXJuIGJhc2VfT3BlcmF0aW9uOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIHZvaWQgc2V0QmFzZV9PcGVyYXRpb24oT3BlcmF0aW9uIG5ld0Jhc2VfT3BlcmF0aW9uKSB7DQorCQlPcGVyYXRpb24gb2xkQmFzZV9PcGVyYXRpb24gPSBiYXNlX09wZXJhdGlvbjsNCisJCWJhc2VfT3BlcmF0aW9uID0gbmV3QmFzZV9PcGVyYXRpb247DQorCQlpZiAoZU5vdGlmaWNhdGlvblJlcXVpcmVkKCkpDQorCQkJZU5vdGlmeShuZXcgRU5vdGlmaWNhdGlvbkltcGwodGhpcywgTm90aWZpY2F0aW9uLlNFVCwgQWN0aXZpdGllc1BhY2thZ2UuQ09OVFJPTF9PUEVSQVRPUl9fQkFTRV9PUEVSQVRJT04sIG9sZEJhc2VfT3BlcmF0aW9uLCBiYXNlX09wZXJhdGlvbikpOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXB1YmxpYyBPYmplY3QgZUdldChpbnQgZmVhdHVyZUlELCBib29sZWFuIHJlc29sdmUsIGJvb2xlYW4gY29yZVR5cGUpIHsNCisJCXN3aXRjaCAoZmVhdHVyZUlEKSB7DQorCQkJY2FzZSBBY3Rpdml0aWVzUGFja2FnZS5DT05UUk9MX09QRVJBVE9SX19CQVNFX0JFSEFWSU9SOg0KKwkJCQlpZiAocmVzb2x2ZSkgcmV0dXJuIGdldEJhc2VfQmVoYXZpb3IoKTsNCisJCQkJcmV0dXJuIGJhc2ljR2V0QmFzZV9CZWhhdmlvcigpOw0KKwkJCWNhc2UgQWN0aXZpdGllc1BhY2thZ2UuQ09OVFJPTF9PUEVSQVRPUl9fQkFTRV9PUEVSQVRJT046DQorCQkJCWlmIChyZXNvbHZlKSByZXR1cm4gZ2V0QmFzZV9PcGVyYXRpb24oKTsNCisJCQkJcmV0dXJuIGJhc2ljR2V0QmFzZV9PcGVyYXRpb24oKTsNCisJCX0NCisJCXJldHVybiBzdXBlci5lR2V0KGZlYXR1cmVJRCwgcmVzb2x2ZSwgY29yZVR5cGUpOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXB1YmxpYyB2b2lkIGVTZXQoaW50IGZlYXR1cmVJRCwgT2JqZWN0IG5ld1ZhbHVlKSB7DQorCQlzd2l0Y2ggKGZlYXR1cmVJRCkgew0KKwkJCWNhc2UgQWN0aXZpdGllc1BhY2thZ2UuQ09OVFJPTF9PUEVSQVRPUl9fQkFTRV9CRUhBVklPUjoNCisJCQkJc2V0QmFzZV9CZWhhdmlvcigoQmVoYXZpb3IpbmV3VmFsdWUpOw0KKwkJCQlyZXR1cm47DQorCQkJY2FzZSBBY3Rpdml0aWVzUGFja2FnZS5DT05UUk9MX09QRVJBVE9SX19CQVNFX09QRVJBVElPTjoNCisJCQkJc2V0QmFzZV9PcGVyYXRpb24oKE9wZXJhdGlvbiluZXdWYWx1ZSk7DQorCQkJCXJldHVybjsNCisJCX0NCisJCXN1cGVyLmVTZXQoZmVhdHVyZUlELCBuZXdWYWx1ZSk7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIHZvaWQgZVVuc2V0KGludCBmZWF0dXJlSUQpIHsNCisJCXN3aXRjaCAoZmVhdHVyZUlEKSB7DQorCQkJY2FzZSBBY3Rpdml0aWVzUGFja2FnZS5DT05UUk9MX09QRVJBVE9SX19CQVNFX0JFSEFWSU9SOg0KKwkJCQlzZXRCYXNlX0JlaGF2aW9yKChCZWhhdmlvciludWxsKTsNCisJCQkJcmV0dXJuOw0KKwkJCWNhc2UgQWN0aXZpdGllc1BhY2thZ2UuQ09OVFJPTF9PUEVSQVRPUl9fQkFTRV9PUEVSQVRJT046DQorCQkJCXNldEJhc2VfT3BlcmF0aW9uKChPcGVyYXRpb24pbnVsbCk7DQorCQkJCXJldHVybjsNCisJCX0NCisJCXN1cGVyLmVVbnNldChmZWF0dXJlSUQpOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXB1YmxpYyBib29sZWFuIGVJc1NldChpbnQgZmVhdHVyZUlEKSB7DQorCQlzd2l0Y2ggKGZlYXR1cmVJRCkgew0KKwkJCWNhc2UgQWN0aXZpdGllc1BhY2thZ2UuQ09OVFJPTF9PUEVSQVRPUl9fQkFTRV9CRUhBVklPUjoNCisJCQkJcmV0dXJuIGJhc2VfQmVoYXZpb3IgIT0gbnVsbDsNCisJCQljYXNlIEFjdGl2aXRpZXNQYWNrYWdlLkNPTlRST0xfT1BFUkFUT1JfX0JBU0VfT1BFUkFUSU9OOg0KKwkJCQlyZXR1cm4gYmFzZV9PcGVyYXRpb24gIT0gbnVsbDsNCisJCX0NCisJCXJldHVybiBzdXBlci5lSXNTZXQoZmVhdHVyZUlEKTsNCisJfQ0KKw0KK30gLy9Db250cm9sT3BlcmF0b3JJbXBsDQpkaWZmIC0tZ2l0IGEvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvYWN0aXZpdGllcy9pbnRlcm5hbC9pbXBsL0Rpc2NyZXRlSW1wbC5qYXZhIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvYWN0aXZpdGllcy9pbnRlcm5hbC9pbXBsL0Rpc2NyZXRlSW1wbC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYwMWZiNDIKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9hY3Rpdml0aWVzL2ludGVybmFsL2ltcGwvRGlzY3JldGVJbXBsLmphdmEKQEAgLTAsMCArMSw0NSBAQAorLyoqDQorICogQ29weXJpZ2h0IChjKSAyMDE1IENFQSBMSVNULg0KKyAqIA0KKyAqICBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQorICogIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KKyAqICB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KKyAqICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqLw0KK3BhY2thZ2Ugb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmFjdGl2aXRpZXMuaW50ZXJuYWwuaW1wbDsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVDbGFzczsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmFjdGl2aXRpZXMuQWN0aXZpdGllc1BhY2thZ2U7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5hY3Rpdml0aWVzLkRpc2NyZXRlOw0KKw0KKy8qKg0KKyAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorICogQW4gaW1wbGVtZW50YXRpb24gb2YgdGhlIG1vZGVsIG9iamVjdCAnPGVtPjxiPkRpc2NyZXRlPC9iPjwvZW0+Jy4NCisgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisgKiA8cD4NCisgKiA8L3A+DQorICoNCisgKiBAZ2VuZXJhdGVkDQorICovDQorcHVibGljIGNsYXNzIERpc2NyZXRlSW1wbCBleHRlbmRzIFJhdGVJbXBsIGltcGxlbWVudHMgRGlzY3JldGUgew0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXByb3RlY3RlZCBEaXNjcmV0ZUltcGwoKSB7DQorCQlzdXBlcigpOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXByb3RlY3RlZCBFQ2xhc3MgZVN0YXRpY0NsYXNzKCkgew0KKwkJcmV0dXJuIEFjdGl2aXRpZXNQYWNrYWdlLkxpdGVyYWxzLkRJU0NSRVRFOw0KKwl9DQorDQorfSAvL0Rpc2NyZXRlSW1wbA0KZGlmZiAtLWdpdCBhL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L2FjdGl2aXRpZXMvaW50ZXJuYWwvaW1wbC9Ob0J1ZmZlckltcGwuamF2YSBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L2FjdGl2aXRpZXMvaW50ZXJuYWwvaW1wbC9Ob0J1ZmZlckltcGwuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZTI2ZDI2Ci0tLSAvZGV2L251bGwKKysrIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvYWN0aXZpdGllcy9pbnRlcm5hbC9pbXBsL05vQnVmZmVySW1wbC5qYXZhCkBAIC0wLDAgKzEsMTY0IEBACisvKioNCisgKiBDb3B5cmlnaHQgKGMpIDIwMTUgQ0VBIExJU1QuDQorICogDQorICogIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCisgKiAgYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQorICogIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQorICogIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICovDQorcGFja2FnZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYWN0aXZpdGllcy5pbnRlcm5hbC5pbXBsOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY29tbW9uLm5vdGlmeS5Ob3RpZmljYXRpb247DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FQ2xhc3M7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5JbnRlcm5hbEVPYmplY3Q7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5pbXBsLkVOb3RpZmljYXRpb25JbXBsOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuaW1wbC5NaW5pbWFsRU9iamVjdEltcGw7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5hY3Rpdml0aWVzLkFjdGl2aXRpZXNQYWNrYWdlOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYWN0aXZpdGllcy5Ob0J1ZmZlcjsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UudW1sMi51bWwuT2JqZWN0Tm9kZTsNCisNCisvKioNCisgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKyAqIEFuIGltcGxlbWVudGF0aW9uIG9mIHRoZSBtb2RlbCBvYmplY3QgJzxlbT48Yj5ObyBCdWZmZXI8L2I+PC9lbT4nLg0KKyAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKyAqIDxwPg0KKyAqIFRoZSBmb2xsb3dpbmcgZmVhdHVyZXMgYXJlIGltcGxlbWVudGVkOg0KKyAqIDx1bD4NCisgKiAgIDxsaT57QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmFjdGl2aXRpZXMuaW50ZXJuYWwuaW1wbC5Ob0J1ZmZlckltcGwjZ2V0QmFzZV9PYmplY3ROb2RlIDxlbT5CYXNlIE9iamVjdCBOb2RlPC9lbT59PC9saT4NCisgKiA8L3VsPg0KKyAqIDwvcD4NCisgKg0KKyAqIEBnZW5lcmF0ZWQNCisgKi8NCitwdWJsaWMgY2xhc3MgTm9CdWZmZXJJbXBsIGV4dGVuZHMgTWluaW1hbEVPYmplY3RJbXBsLkNvbnRhaW5lciBpbXBsZW1lbnRzIE5vQnVmZmVyIHsNCisJLyoqDQorCSAqIFRoZSBjYWNoZWQgdmFsdWUgb2YgdGhlICd7QGxpbmsgI2dldEJhc2VfT2JqZWN0Tm9kZSgpIDxlbT5CYXNlIE9iamVjdCBOb2RlPC9lbT59JyByZWZlcmVuY2UuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAc2VlICNnZXRCYXNlX09iamVjdE5vZGUoKQ0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqIEBvcmRlcmVkDQorCSAqLw0KKwlwcm90ZWN0ZWQgT2JqZWN0Tm9kZSBiYXNlX09iamVjdE5vZGU7DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHJvdGVjdGVkIE5vQnVmZmVySW1wbCgpIHsNCisJCXN1cGVyKCk7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHJvdGVjdGVkIEVDbGFzcyBlU3RhdGljQ2xhc3MoKSB7DQorCQlyZXR1cm4gQWN0aXZpdGllc1BhY2thZ2UuTGl0ZXJhbHMuTk9fQlVGRkVSOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIE9iamVjdE5vZGUgZ2V0QmFzZV9PYmplY3ROb2RlKCkgew0KKwkJaWYgKGJhc2VfT2JqZWN0Tm9kZSAhPSBudWxsICYmIGJhc2VfT2JqZWN0Tm9kZS5lSXNQcm94eSgpKSB7DQorCQkJSW50ZXJuYWxFT2JqZWN0IG9sZEJhc2VfT2JqZWN0Tm9kZSA9IChJbnRlcm5hbEVPYmplY3QpYmFzZV9PYmplY3ROb2RlOw0KKwkJCWJhc2VfT2JqZWN0Tm9kZSA9IChPYmplY3ROb2RlKWVSZXNvbHZlUHJveHkob2xkQmFzZV9PYmplY3ROb2RlKTsNCisJCQlpZiAoYmFzZV9PYmplY3ROb2RlICE9IG9sZEJhc2VfT2JqZWN0Tm9kZSkgew0KKwkJCQlpZiAoZU5vdGlmaWNhdGlvblJlcXVpcmVkKCkpDQorCQkJCQllTm90aWZ5KG5ldyBFTm90aWZpY2F0aW9uSW1wbCh0aGlzLCBOb3RpZmljYXRpb24uUkVTT0xWRSwgQWN0aXZpdGllc1BhY2thZ2UuTk9fQlVGRkVSX19CQVNFX09CSkVDVF9OT0RFLCBvbGRCYXNlX09iamVjdE5vZGUsIGJhc2VfT2JqZWN0Tm9kZSkpOw0KKwkJCX0NCisJCX0NCisJCXJldHVybiBiYXNlX09iamVjdE5vZGU7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgT2JqZWN0Tm9kZSBiYXNpY0dldEJhc2VfT2JqZWN0Tm9kZSgpIHsNCisJCXJldHVybiBiYXNlX09iamVjdE5vZGU7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgdm9pZCBzZXRCYXNlX09iamVjdE5vZGUoT2JqZWN0Tm9kZSBuZXdCYXNlX09iamVjdE5vZGUpIHsNCisJCU9iamVjdE5vZGUgb2xkQmFzZV9PYmplY3ROb2RlID0gYmFzZV9PYmplY3ROb2RlOw0KKwkJYmFzZV9PYmplY3ROb2RlID0gbmV3QmFzZV9PYmplY3ROb2RlOw0KKwkJaWYgKGVOb3RpZmljYXRpb25SZXF1aXJlZCgpKQ0KKwkJCWVOb3RpZnkobmV3IEVOb3RpZmljYXRpb25JbXBsKHRoaXMsIE5vdGlmaWNhdGlvbi5TRVQsIEFjdGl2aXRpZXNQYWNrYWdlLk5PX0JVRkZFUl9fQkFTRV9PQkpFQ1RfTk9ERSwgb2xkQmFzZV9PYmplY3ROb2RlLCBiYXNlX09iamVjdE5vZGUpKTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgT2JqZWN0IGVHZXQoaW50IGZlYXR1cmVJRCwgYm9vbGVhbiByZXNvbHZlLCBib29sZWFuIGNvcmVUeXBlKSB7DQorCQlzd2l0Y2ggKGZlYXR1cmVJRCkgew0KKwkJCWNhc2UgQWN0aXZpdGllc1BhY2thZ2UuTk9fQlVGRkVSX19CQVNFX09CSkVDVF9OT0RFOg0KKwkJCQlpZiAocmVzb2x2ZSkgcmV0dXJuIGdldEJhc2VfT2JqZWN0Tm9kZSgpOw0KKwkJCQlyZXR1cm4gYmFzaWNHZXRCYXNlX09iamVjdE5vZGUoKTsNCisJCX0NCisJCXJldHVybiBzdXBlci5lR2V0KGZlYXR1cmVJRCwgcmVzb2x2ZSwgY29yZVR5cGUpOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXB1YmxpYyB2b2lkIGVTZXQoaW50IGZlYXR1cmVJRCwgT2JqZWN0IG5ld1ZhbHVlKSB7DQorCQlzd2l0Y2ggKGZlYXR1cmVJRCkgew0KKwkJCWNhc2UgQWN0aXZpdGllc1BhY2thZ2UuTk9fQlVGRkVSX19CQVNFX09CSkVDVF9OT0RFOg0KKwkJCQlzZXRCYXNlX09iamVjdE5vZGUoKE9iamVjdE5vZGUpbmV3VmFsdWUpOw0KKwkJCQlyZXR1cm47DQorCQl9DQorCQlzdXBlci5lU2V0KGZlYXR1cmVJRCwgbmV3VmFsdWUpOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXB1YmxpYyB2b2lkIGVVbnNldChpbnQgZmVhdHVyZUlEKSB7DQorCQlzd2l0Y2ggKGZlYXR1cmVJRCkgew0KKwkJCWNhc2UgQWN0aXZpdGllc1BhY2thZ2UuTk9fQlVGRkVSX19CQVNFX09CSkVDVF9OT0RFOg0KKwkJCQlzZXRCYXNlX09iamVjdE5vZGUoKE9iamVjdE5vZGUpbnVsbCk7DQorCQkJCXJldHVybjsNCisJCX0NCisJCXN1cGVyLmVVbnNldChmZWF0dXJlSUQpOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXB1YmxpYyBib29sZWFuIGVJc1NldChpbnQgZmVhdHVyZUlEKSB7DQorCQlzd2l0Y2ggKGZlYXR1cmVJRCkgew0KKwkJCWNhc2UgQWN0aXZpdGllc1BhY2thZ2UuTk9fQlVGRkVSX19CQVNFX09CSkVDVF9OT0RFOg0KKwkJCQlyZXR1cm4gYmFzZV9PYmplY3ROb2RlICE9IG51bGw7DQorCQl9DQorCQlyZXR1cm4gc3VwZXIuZUlzU2V0KGZlYXR1cmVJRCk7DQorCX0NCisNCit9IC8vTm9CdWZmZXJJbXBsDQpkaWZmIC0tZ2l0IGEvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvYWN0aXZpdGllcy9pbnRlcm5hbC9pbXBsL09wdGlvbmFsSW1wbC5qYXZhIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvYWN0aXZpdGllcy9pbnRlcm5hbC9pbXBsL09wdGlvbmFsSW1wbC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc4ZDVhZDMKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9hY3Rpdml0aWVzL2ludGVybmFsL2ltcGwvT3B0aW9uYWxJbXBsLmphdmEKQEAgLTAsMCArMSwxNjQgQEAKKy8qKg0KKyAqIENvcHlyaWdodCAoYykgMjAxNSBDRUEgTElTVC4NCisgKiANCisgKiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KKyAqICBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCisgKiAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCisgKiAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgKi8NCitwYWNrYWdlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5hY3Rpdml0aWVzLmludGVybmFsLmltcGw7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jb21tb24ubm90aWZ5Lk5vdGlmaWNhdGlvbjsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVDbGFzczsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkludGVybmFsRU9iamVjdDsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLmltcGwuRU5vdGlmaWNhdGlvbkltcGw7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5pbXBsLk1pbmltYWxFT2JqZWN0SW1wbDsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmFjdGl2aXRpZXMuQWN0aXZpdGllc1BhY2thZ2U7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5hY3Rpdml0aWVzLk9wdGlvbmFsOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS51bWwyLnVtbC5QYXJhbWV0ZXI7DQorDQorLyoqDQorICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisgKiBBbiBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgbW9kZWwgb2JqZWN0ICc8ZW0+PGI+T3B0aW9uYWw8L2I+PC9lbT4nLg0KKyAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKyAqIDxwPg0KKyAqIFRoZSBmb2xsb3dpbmcgZmVhdHVyZXMgYXJlIGltcGxlbWVudGVkOg0KKyAqIDx1bD4NCisgKiAgIDxsaT57QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmFjdGl2aXRpZXMuaW50ZXJuYWwuaW1wbC5PcHRpb25hbEltcGwjZ2V0QmFzZV9QYXJhbWV0ZXIgPGVtPkJhc2UgUGFyYW1ldGVyPC9lbT59PC9saT4NCisgKiA8L3VsPg0KKyAqIDwvcD4NCisgKg0KKyAqIEBnZW5lcmF0ZWQNCisgKi8NCitwdWJsaWMgY2xhc3MgT3B0aW9uYWxJbXBsIGV4dGVuZHMgTWluaW1hbEVPYmplY3RJbXBsLkNvbnRhaW5lciBpbXBsZW1lbnRzIE9wdGlvbmFsIHsNCisJLyoqDQorCSAqIFRoZSBjYWNoZWQgdmFsdWUgb2YgdGhlICd7QGxpbmsgI2dldEJhc2VfUGFyYW1ldGVyKCkgPGVtPkJhc2UgUGFyYW1ldGVyPC9lbT59JyByZWZlcmVuY2UuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAc2VlICNnZXRCYXNlX1BhcmFtZXRlcigpDQorCSAqIEBnZW5lcmF0ZWQNCisJICogQG9yZGVyZWQNCisJICovDQorCXByb3RlY3RlZCBQYXJhbWV0ZXIgYmFzZV9QYXJhbWV0ZXI7DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHJvdGVjdGVkIE9wdGlvbmFsSW1wbCgpIHsNCisJCXN1cGVyKCk7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHJvdGVjdGVkIEVDbGFzcyBlU3RhdGljQ2xhc3MoKSB7DQorCQlyZXR1cm4gQWN0aXZpdGllc1BhY2thZ2UuTGl0ZXJhbHMuT1BUSU9OQUw7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgUGFyYW1ldGVyIGdldEJhc2VfUGFyYW1ldGVyKCkgew0KKwkJaWYgKGJhc2VfUGFyYW1ldGVyICE9IG51bGwgJiYgYmFzZV9QYXJhbWV0ZXIuZUlzUHJveHkoKSkgew0KKwkJCUludGVybmFsRU9iamVjdCBvbGRCYXNlX1BhcmFtZXRlciA9IChJbnRlcm5hbEVPYmplY3QpYmFzZV9QYXJhbWV0ZXI7DQorCQkJYmFzZV9QYXJhbWV0ZXIgPSAoUGFyYW1ldGVyKWVSZXNvbHZlUHJveHkob2xkQmFzZV9QYXJhbWV0ZXIpOw0KKwkJCWlmIChiYXNlX1BhcmFtZXRlciAhPSBvbGRCYXNlX1BhcmFtZXRlcikgew0KKwkJCQlpZiAoZU5vdGlmaWNhdGlvblJlcXVpcmVkKCkpDQorCQkJCQllTm90aWZ5KG5ldyBFTm90aWZpY2F0aW9uSW1wbCh0aGlzLCBOb3RpZmljYXRpb24uUkVTT0xWRSwgQWN0aXZpdGllc1BhY2thZ2UuT1BUSU9OQUxfX0JBU0VfUEFSQU1FVEVSLCBvbGRCYXNlX1BhcmFtZXRlciwgYmFzZV9QYXJhbWV0ZXIpKTsNCisJCQl9DQorCQl9DQorCQlyZXR1cm4gYmFzZV9QYXJhbWV0ZXI7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgUGFyYW1ldGVyIGJhc2ljR2V0QmFzZV9QYXJhbWV0ZXIoKSB7DQorCQlyZXR1cm4gYmFzZV9QYXJhbWV0ZXI7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgdm9pZCBzZXRCYXNlX1BhcmFtZXRlcihQYXJhbWV0ZXIgbmV3QmFzZV9QYXJhbWV0ZXIpIHsNCisJCVBhcmFtZXRlciBvbGRCYXNlX1BhcmFtZXRlciA9IGJhc2VfUGFyYW1ldGVyOw0KKwkJYmFzZV9QYXJhbWV0ZXIgPSBuZXdCYXNlX1BhcmFtZXRlcjsNCisJCWlmIChlTm90aWZpY2F0aW9uUmVxdWlyZWQoKSkNCisJCQllTm90aWZ5KG5ldyBFTm90aWZpY2F0aW9uSW1wbCh0aGlzLCBOb3RpZmljYXRpb24uU0VULCBBY3Rpdml0aWVzUGFja2FnZS5PUFRJT05BTF9fQkFTRV9QQVJBTUVURVIsIG9sZEJhc2VfUGFyYW1ldGVyLCBiYXNlX1BhcmFtZXRlcikpOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXB1YmxpYyBPYmplY3QgZUdldChpbnQgZmVhdHVyZUlELCBib29sZWFuIHJlc29sdmUsIGJvb2xlYW4gY29yZVR5cGUpIHsNCisJCXN3aXRjaCAoZmVhdHVyZUlEKSB7DQorCQkJY2FzZSBBY3Rpdml0aWVzUGFja2FnZS5PUFRJT05BTF9fQkFTRV9QQVJBTUVURVI6DQorCQkJCWlmIChyZXNvbHZlKSByZXR1cm4gZ2V0QmFzZV9QYXJhbWV0ZXIoKTsNCisJCQkJcmV0dXJuIGJhc2ljR2V0QmFzZV9QYXJhbWV0ZXIoKTsNCisJCX0NCisJCXJldHVybiBzdXBlci5lR2V0KGZlYXR1cmVJRCwgcmVzb2x2ZSwgY29yZVR5cGUpOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXB1YmxpYyB2b2lkIGVTZXQoaW50IGZlYXR1cmVJRCwgT2JqZWN0IG5ld1ZhbHVlKSB7DQorCQlzd2l0Y2ggKGZlYXR1cmVJRCkgew0KKwkJCWNhc2UgQWN0aXZpdGllc1BhY2thZ2UuT1BUSU9OQUxfX0JBU0VfUEFSQU1FVEVSOg0KKwkJCQlzZXRCYXNlX1BhcmFtZXRlcigoUGFyYW1ldGVyKW5ld1ZhbHVlKTsNCisJCQkJcmV0dXJuOw0KKwkJfQ0KKwkJc3VwZXIuZVNldChmZWF0dXJlSUQsIG5ld1ZhbHVlKTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgdm9pZCBlVW5zZXQoaW50IGZlYXR1cmVJRCkgew0KKwkJc3dpdGNoIChmZWF0dXJlSUQpIHsNCisJCQljYXNlIEFjdGl2aXRpZXNQYWNrYWdlLk9QVElPTkFMX19CQVNFX1BBUkFNRVRFUjoNCisJCQkJc2V0QmFzZV9QYXJhbWV0ZXIoKFBhcmFtZXRlciludWxsKTsNCisJCQkJcmV0dXJuOw0KKwkJfQ0KKwkJc3VwZXIuZVVuc2V0KGZlYXR1cmVJRCk7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIGJvb2xlYW4gZUlzU2V0KGludCBmZWF0dXJlSUQpIHsNCisJCXN3aXRjaCAoZmVhdHVyZUlEKSB7DQorCQkJY2FzZSBBY3Rpdml0aWVzUGFja2FnZS5PUFRJT05BTF9fQkFTRV9QQVJBTUVURVI6DQorCQkJCXJldHVybiBiYXNlX1BhcmFtZXRlciAhPSBudWxsOw0KKwkJfQ0KKwkJcmV0dXJuIHN1cGVyLmVJc1NldChmZWF0dXJlSUQpOw0KKwl9DQorDQorfSAvL09wdGlvbmFsSW1wbA0KZGlmZiAtLWdpdCBhL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L2FjdGl2aXRpZXMvaW50ZXJuYWwvaW1wbC9PdmVyd3JpdGVJbXBsLmphdmEgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9hY3Rpdml0aWVzL2ludGVybmFsL2ltcGwvT3ZlcndyaXRlSW1wbC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUxMDQ4NjIKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9hY3Rpdml0aWVzL2ludGVybmFsL2ltcGwvT3ZlcndyaXRlSW1wbC5qYXZhCkBAIC0wLDAgKzEsMTY0IEBACisvKioNCisgKiBDb3B5cmlnaHQgKGMpIDIwMTUgQ0VBIExJU1QuDQorICogDQorICogIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCisgKiAgYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQorICogIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQorICogIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICovDQorcGFja2FnZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYWN0aXZpdGllcy5pbnRlcm5hbC5pbXBsOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY29tbW9uLm5vdGlmeS5Ob3RpZmljYXRpb247DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FQ2xhc3M7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5JbnRlcm5hbEVPYmplY3Q7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5pbXBsLkVOb3RpZmljYXRpb25JbXBsOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuaW1wbC5NaW5pbWFsRU9iamVjdEltcGw7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5hY3Rpdml0aWVzLkFjdGl2aXRpZXNQYWNrYWdlOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYWN0aXZpdGllcy5PdmVyd3JpdGU7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLnVtbDIudW1sLk9iamVjdE5vZGU7DQorDQorLyoqDQorICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisgKiBBbiBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgbW9kZWwgb2JqZWN0ICc8ZW0+PGI+T3ZlcndyaXRlPC9iPjwvZW0+Jy4NCisgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisgKiA8cD4NCisgKiBUaGUgZm9sbG93aW5nIGZlYXR1cmVzIGFyZSBpbXBsZW1lbnRlZDoNCisgKiA8dWw+DQorICogICA8bGk+e0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5hY3Rpdml0aWVzLmludGVybmFsLmltcGwuT3ZlcndyaXRlSW1wbCNnZXRCYXNlX09iamVjdE5vZGUgPGVtPkJhc2UgT2JqZWN0IE5vZGU8L2VtPn08L2xpPg0KKyAqIDwvdWw+DQorICogPC9wPg0KKyAqDQorICogQGdlbmVyYXRlZA0KKyAqLw0KK3B1YmxpYyBjbGFzcyBPdmVyd3JpdGVJbXBsIGV4dGVuZHMgTWluaW1hbEVPYmplY3RJbXBsLkNvbnRhaW5lciBpbXBsZW1lbnRzIE92ZXJ3cml0ZSB7DQorCS8qKg0KKwkgKiBUaGUgY2FjaGVkIHZhbHVlIG9mIHRoZSAne0BsaW5rICNnZXRCYXNlX09iamVjdE5vZGUoKSA8ZW0+QmFzZSBPYmplY3QgTm9kZTwvZW0+fScgcmVmZXJlbmNlLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHNlZSAjZ2V0QmFzZV9PYmplY3ROb2RlKCkNCisJICogQGdlbmVyYXRlZA0KKwkgKiBAb3JkZXJlZA0KKwkgKi8NCisJcHJvdGVjdGVkIE9iamVjdE5vZGUgYmFzZV9PYmplY3ROb2RlOw0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXByb3RlY3RlZCBPdmVyd3JpdGVJbXBsKCkgew0KKwkJc3VwZXIoKTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwcm90ZWN0ZWQgRUNsYXNzIGVTdGF0aWNDbGFzcygpIHsNCisJCXJldHVybiBBY3Rpdml0aWVzUGFja2FnZS5MaXRlcmFscy5PVkVSV1JJVEU7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgT2JqZWN0Tm9kZSBnZXRCYXNlX09iamVjdE5vZGUoKSB7DQorCQlpZiAoYmFzZV9PYmplY3ROb2RlICE9IG51bGwgJiYgYmFzZV9PYmplY3ROb2RlLmVJc1Byb3h5KCkpIHsNCisJCQlJbnRlcm5hbEVPYmplY3Qgb2xkQmFzZV9PYmplY3ROb2RlID0gKEludGVybmFsRU9iamVjdCliYXNlX09iamVjdE5vZGU7DQorCQkJYmFzZV9PYmplY3ROb2RlID0gKE9iamVjdE5vZGUpZVJlc29sdmVQcm94eShvbGRCYXNlX09iamVjdE5vZGUpOw0KKwkJCWlmIChiYXNlX09iamVjdE5vZGUgIT0gb2xkQmFzZV9PYmplY3ROb2RlKSB7DQorCQkJCWlmIChlTm90aWZpY2F0aW9uUmVxdWlyZWQoKSkNCisJCQkJCWVOb3RpZnkobmV3IEVOb3RpZmljYXRpb25JbXBsKHRoaXMsIE5vdGlmaWNhdGlvbi5SRVNPTFZFLCBBY3Rpdml0aWVzUGFja2FnZS5PVkVSV1JJVEVfX0JBU0VfT0JKRUNUX05PREUsIG9sZEJhc2VfT2JqZWN0Tm9kZSwgYmFzZV9PYmplY3ROb2RlKSk7DQorCQkJfQ0KKwkJfQ0KKwkJcmV0dXJuIGJhc2VfT2JqZWN0Tm9kZTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBPYmplY3ROb2RlIGJhc2ljR2V0QmFzZV9PYmplY3ROb2RlKCkgew0KKwkJcmV0dXJuIGJhc2VfT2JqZWN0Tm9kZTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyB2b2lkIHNldEJhc2VfT2JqZWN0Tm9kZShPYmplY3ROb2RlIG5ld0Jhc2VfT2JqZWN0Tm9kZSkgew0KKwkJT2JqZWN0Tm9kZSBvbGRCYXNlX09iamVjdE5vZGUgPSBiYXNlX09iamVjdE5vZGU7DQorCQliYXNlX09iamVjdE5vZGUgPSBuZXdCYXNlX09iamVjdE5vZGU7DQorCQlpZiAoZU5vdGlmaWNhdGlvblJlcXVpcmVkKCkpDQorCQkJZU5vdGlmeShuZXcgRU5vdGlmaWNhdGlvbkltcGwodGhpcywgTm90aWZpY2F0aW9uLlNFVCwgQWN0aXZpdGllc1BhY2thZ2UuT1ZFUldSSVRFX19CQVNFX09CSkVDVF9OT0RFLCBvbGRCYXNlX09iamVjdE5vZGUsIGJhc2VfT2JqZWN0Tm9kZSkpOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXB1YmxpYyBPYmplY3QgZUdldChpbnQgZmVhdHVyZUlELCBib29sZWFuIHJlc29sdmUsIGJvb2xlYW4gY29yZVR5cGUpIHsNCisJCXN3aXRjaCAoZmVhdHVyZUlEKSB7DQorCQkJY2FzZSBBY3Rpdml0aWVzUGFja2FnZS5PVkVSV1JJVEVfX0JBU0VfT0JKRUNUX05PREU6DQorCQkJCWlmIChyZXNvbHZlKSByZXR1cm4gZ2V0QmFzZV9PYmplY3ROb2RlKCk7DQorCQkJCXJldHVybiBiYXNpY0dldEJhc2VfT2JqZWN0Tm9kZSgpOw0KKwkJfQ0KKwkJcmV0dXJuIHN1cGVyLmVHZXQoZmVhdHVyZUlELCByZXNvbHZlLCBjb3JlVHlwZSk7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIHZvaWQgZVNldChpbnQgZmVhdHVyZUlELCBPYmplY3QgbmV3VmFsdWUpIHsNCisJCXN3aXRjaCAoZmVhdHVyZUlEKSB7DQorCQkJY2FzZSBBY3Rpdml0aWVzUGFja2FnZS5PVkVSV1JJVEVfX0JBU0VfT0JKRUNUX05PREU6DQorCQkJCXNldEJhc2VfT2JqZWN0Tm9kZSgoT2JqZWN0Tm9kZSluZXdWYWx1ZSk7DQorCQkJCXJldHVybjsNCisJCX0NCisJCXN1cGVyLmVTZXQoZmVhdHVyZUlELCBuZXdWYWx1ZSk7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIHZvaWQgZVVuc2V0KGludCBmZWF0dXJlSUQpIHsNCisJCXN3aXRjaCAoZmVhdHVyZUlEKSB7DQorCQkJY2FzZSBBY3Rpdml0aWVzUGFja2FnZS5PVkVSV1JJVEVfX0JBU0VfT0JKRUNUX05PREU6DQorCQkJCXNldEJhc2VfT2JqZWN0Tm9kZSgoT2JqZWN0Tm9kZSludWxsKTsNCisJCQkJcmV0dXJuOw0KKwkJfQ0KKwkJc3VwZXIuZVVuc2V0KGZlYXR1cmVJRCk7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIGJvb2xlYW4gZUlzU2V0KGludCBmZWF0dXJlSUQpIHsNCisJCXN3aXRjaCAoZmVhdHVyZUlEKSB7DQorCQkJY2FzZSBBY3Rpdml0aWVzUGFja2FnZS5PVkVSV1JJVEVfX0JBU0VfT0JKRUNUX05PREU6DQorCQkJCXJldHVybiBiYXNlX09iamVjdE5vZGUgIT0gbnVsbDsNCisJCX0NCisJCXJldHVybiBzdXBlci5lSXNTZXQoZmVhdHVyZUlEKTsNCisJfQ0KKw0KK30gLy9PdmVyd3JpdGVJbXBsDQpkaWZmIC0tZ2l0IGEvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvYWN0aXZpdGllcy9pbnRlcm5hbC9pbXBsL1Byb2JhYmlsaXR5SW1wbC5qYXZhIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvYWN0aXZpdGllcy9pbnRlcm5hbC9pbXBsL1Byb2JhYmlsaXR5SW1wbC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRhMTgzNDAKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9hY3Rpdml0aWVzL2ludGVybmFsL2ltcGwvUHJvYmFiaWxpdHlJbXBsLmphdmEKQEAgLTAsMCArMSwyODYgQEAKKy8qKg0KKyAqIENvcHlyaWdodCAoYykgMjAxNSBDRUEgTElTVC4NCisgKiANCisgKiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KKyAqICBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCisgKiAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCisgKiAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgKi8NCitwYWNrYWdlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5hY3Rpdml0aWVzLmludGVybmFsLmltcGw7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jb21tb24ubm90aWZ5Lk5vdGlmaWNhdGlvbjsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVDbGFzczsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkludGVybmFsRU9iamVjdDsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLmltcGwuRU5vdGlmaWNhdGlvbkltcGw7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5pbXBsLk1pbmltYWxFT2JqZWN0SW1wbDsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmFjdGl2aXRpZXMuQWN0aXZpdGllc1BhY2thZ2U7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5hY3Rpdml0aWVzLlByb2JhYmlsaXR5Ow0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS51bWwyLnVtbC5BY3Rpdml0eUVkZ2U7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnVtbDIudW1sLlBhcmFtZXRlclNldDsNCitpbXBvcnQgb3JnLmVjbGlwc2UudW1sMi51bWwuVmFsdWVTcGVjaWZpY2F0aW9uOw0KKw0KKy8qKg0KKyAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorICogQW4gaW1wbGVtZW50YXRpb24gb2YgdGhlIG1vZGVsIG9iamVjdCAnPGVtPjxiPlByb2JhYmlsaXR5PC9iPjwvZW0+Jy4NCisgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisgKiA8cD4NCisgKiBUaGUgZm9sbG93aW5nIGZlYXR1cmVzIGFyZSBpbXBsZW1lbnRlZDoNCisgKiA8dWw+DQorICogICA8bGk+e0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5hY3Rpdml0aWVzLmludGVybmFsLmltcGwuUHJvYmFiaWxpdHlJbXBsI2dldEJhc2VfQWN0aXZpdHlFZGdlIDxlbT5CYXNlIEFjdGl2aXR5IEVkZ2U8L2VtPn08L2xpPg0KKyAqICAgPGxpPntAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYWN0aXZpdGllcy5pbnRlcm5hbC5pbXBsLlByb2JhYmlsaXR5SW1wbCNnZXRCYXNlX1BhcmFtZXRlclNldCA8ZW0+QmFzZSBQYXJhbWV0ZXIgU2V0PC9lbT59PC9saT4NCisgKiAgIDxsaT57QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmFjdGl2aXRpZXMuaW50ZXJuYWwuaW1wbC5Qcm9iYWJpbGl0eUltcGwjZ2V0UHJvYmFiaWxpdHkgPGVtPlByb2JhYmlsaXR5PC9lbT59PC9saT4NCisgKiA8L3VsPg0KKyAqIDwvcD4NCisgKg0KKyAqIEBnZW5lcmF0ZWQNCisgKi8NCitwdWJsaWMgY2xhc3MgUHJvYmFiaWxpdHlJbXBsIGV4dGVuZHMgTWluaW1hbEVPYmplY3RJbXBsLkNvbnRhaW5lciBpbXBsZW1lbnRzIFByb2JhYmlsaXR5IHsNCisJLyoqDQorCSAqIFRoZSBjYWNoZWQgdmFsdWUgb2YgdGhlICd7QGxpbmsgI2dldEJhc2VfQWN0aXZpdHlFZGdlKCkgPGVtPkJhc2UgQWN0aXZpdHkgRWRnZTwvZW0+fScgcmVmZXJlbmNlLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHNlZSAjZ2V0QmFzZV9BY3Rpdml0eUVkZ2UoKQ0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqIEBvcmRlcmVkDQorCSAqLw0KKwlwcm90ZWN0ZWQgQWN0aXZpdHlFZGdlIGJhc2VfQWN0aXZpdHlFZGdlOw0KKw0KKwkvKioNCisJICogVGhlIGNhY2hlZCB2YWx1ZSBvZiB0aGUgJ3tAbGluayAjZ2V0QmFzZV9QYXJhbWV0ZXJTZXQoKSA8ZW0+QmFzZSBQYXJhbWV0ZXIgU2V0PC9lbT59JyByZWZlcmVuY2UuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAc2VlICNnZXRCYXNlX1BhcmFtZXRlclNldCgpDQorCSAqIEBnZW5lcmF0ZWQNCisJICogQG9yZGVyZWQNCisJICovDQorCXByb3RlY3RlZCBQYXJhbWV0ZXJTZXQgYmFzZV9QYXJhbWV0ZXJTZXQ7DQorDQorCS8qKg0KKwkgKiBUaGUgY2FjaGVkIHZhbHVlIG9mIHRoZSAne0BsaW5rICNnZXRQcm9iYWJpbGl0eSgpIDxlbT5Qcm9iYWJpbGl0eTwvZW0+fScgcmVmZXJlbmNlLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHNlZSAjZ2V0UHJvYmFiaWxpdHkoKQ0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqIEBvcmRlcmVkDQorCSAqLw0KKwlwcm90ZWN0ZWQgVmFsdWVTcGVjaWZpY2F0aW9uIHByb2JhYmlsaXR5Ow0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXByb3RlY3RlZCBQcm9iYWJpbGl0eUltcGwoKSB7DQorCQlzdXBlcigpOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXByb3RlY3RlZCBFQ2xhc3MgZVN0YXRpY0NsYXNzKCkgew0KKwkJcmV0dXJuIEFjdGl2aXRpZXNQYWNrYWdlLkxpdGVyYWxzLlBST0JBQklMSVRZOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIEFjdGl2aXR5RWRnZSBnZXRCYXNlX0FjdGl2aXR5RWRnZSgpIHsNCisJCWlmIChiYXNlX0FjdGl2aXR5RWRnZSAhPSBudWxsICYmIGJhc2VfQWN0aXZpdHlFZGdlLmVJc1Byb3h5KCkpIHsNCisJCQlJbnRlcm5hbEVPYmplY3Qgb2xkQmFzZV9BY3Rpdml0eUVkZ2UgPSAoSW50ZXJuYWxFT2JqZWN0KWJhc2VfQWN0aXZpdHlFZGdlOw0KKwkJCWJhc2VfQWN0aXZpdHlFZGdlID0gKEFjdGl2aXR5RWRnZSllUmVzb2x2ZVByb3h5KG9sZEJhc2VfQWN0aXZpdHlFZGdlKTsNCisJCQlpZiAoYmFzZV9BY3Rpdml0eUVkZ2UgIT0gb2xkQmFzZV9BY3Rpdml0eUVkZ2UpIHsNCisJCQkJaWYgKGVOb3RpZmljYXRpb25SZXF1aXJlZCgpKQ0KKwkJCQkJZU5vdGlmeShuZXcgRU5vdGlmaWNhdGlvbkltcGwodGhpcywgTm90aWZpY2F0aW9uLlJFU09MVkUsIEFjdGl2aXRpZXNQYWNrYWdlLlBST0JBQklMSVRZX19CQVNFX0FDVElWSVRZX0VER0UsIG9sZEJhc2VfQWN0aXZpdHlFZGdlLCBiYXNlX0FjdGl2aXR5RWRnZSkpOw0KKwkJCX0NCisJCX0NCisJCXJldHVybiBiYXNlX0FjdGl2aXR5RWRnZTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBBY3Rpdml0eUVkZ2UgYmFzaWNHZXRCYXNlX0FjdGl2aXR5RWRnZSgpIHsNCisJCXJldHVybiBiYXNlX0FjdGl2aXR5RWRnZTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyB2b2lkIHNldEJhc2VfQWN0aXZpdHlFZGdlKEFjdGl2aXR5RWRnZSBuZXdCYXNlX0FjdGl2aXR5RWRnZSkgew0KKwkJQWN0aXZpdHlFZGdlIG9sZEJhc2VfQWN0aXZpdHlFZGdlID0gYmFzZV9BY3Rpdml0eUVkZ2U7DQorCQliYXNlX0FjdGl2aXR5RWRnZSA9IG5ld0Jhc2VfQWN0aXZpdHlFZGdlOw0KKwkJaWYgKGVOb3RpZmljYXRpb25SZXF1aXJlZCgpKQ0KKwkJCWVOb3RpZnkobmV3IEVOb3RpZmljYXRpb25JbXBsKHRoaXMsIE5vdGlmaWNhdGlvbi5TRVQsIEFjdGl2aXRpZXNQYWNrYWdlLlBST0JBQklMSVRZX19CQVNFX0FDVElWSVRZX0VER0UsIG9sZEJhc2VfQWN0aXZpdHlFZGdlLCBiYXNlX0FjdGl2aXR5RWRnZSkpOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIFBhcmFtZXRlclNldCBnZXRCYXNlX1BhcmFtZXRlclNldCgpIHsNCisJCWlmIChiYXNlX1BhcmFtZXRlclNldCAhPSBudWxsICYmIGJhc2VfUGFyYW1ldGVyU2V0LmVJc1Byb3h5KCkpIHsNCisJCQlJbnRlcm5hbEVPYmplY3Qgb2xkQmFzZV9QYXJhbWV0ZXJTZXQgPSAoSW50ZXJuYWxFT2JqZWN0KWJhc2VfUGFyYW1ldGVyU2V0Ow0KKwkJCWJhc2VfUGFyYW1ldGVyU2V0ID0gKFBhcmFtZXRlclNldCllUmVzb2x2ZVByb3h5KG9sZEJhc2VfUGFyYW1ldGVyU2V0KTsNCisJCQlpZiAoYmFzZV9QYXJhbWV0ZXJTZXQgIT0gb2xkQmFzZV9QYXJhbWV0ZXJTZXQpIHsNCisJCQkJaWYgKGVOb3RpZmljYXRpb25SZXF1aXJlZCgpKQ0KKwkJCQkJZU5vdGlmeShuZXcgRU5vdGlmaWNhdGlvbkltcGwodGhpcywgTm90aWZpY2F0aW9uLlJFU09MVkUsIEFjdGl2aXRpZXNQYWNrYWdlLlBST0JBQklMSVRZX19CQVNFX1BBUkFNRVRFUl9TRVQsIG9sZEJhc2VfUGFyYW1ldGVyU2V0LCBiYXNlX1BhcmFtZXRlclNldCkpOw0KKwkJCX0NCisJCX0NCisJCXJldHVybiBiYXNlX1BhcmFtZXRlclNldDsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBQYXJhbWV0ZXJTZXQgYmFzaWNHZXRCYXNlX1BhcmFtZXRlclNldCgpIHsNCisJCXJldHVybiBiYXNlX1BhcmFtZXRlclNldDsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyB2b2lkIHNldEJhc2VfUGFyYW1ldGVyU2V0KFBhcmFtZXRlclNldCBuZXdCYXNlX1BhcmFtZXRlclNldCkgew0KKwkJUGFyYW1ldGVyU2V0IG9sZEJhc2VfUGFyYW1ldGVyU2V0ID0gYmFzZV9QYXJhbWV0ZXJTZXQ7DQorCQliYXNlX1BhcmFtZXRlclNldCA9IG5ld0Jhc2VfUGFyYW1ldGVyU2V0Ow0KKwkJaWYgKGVOb3RpZmljYXRpb25SZXF1aXJlZCgpKQ0KKwkJCWVOb3RpZnkobmV3IEVOb3RpZmljYXRpb25JbXBsKHRoaXMsIE5vdGlmaWNhdGlvbi5TRVQsIEFjdGl2aXRpZXNQYWNrYWdlLlBST0JBQklMSVRZX19CQVNFX1BBUkFNRVRFUl9TRVQsIG9sZEJhc2VfUGFyYW1ldGVyU2V0LCBiYXNlX1BhcmFtZXRlclNldCkpOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIFZhbHVlU3BlY2lmaWNhdGlvbiBnZXRQcm9iYWJpbGl0eSgpIHsNCisJCWlmIChwcm9iYWJpbGl0eSAhPSBudWxsICYmIHByb2JhYmlsaXR5LmVJc1Byb3h5KCkpIHsNCisJCQlJbnRlcm5hbEVPYmplY3Qgb2xkUHJvYmFiaWxpdHkgPSAoSW50ZXJuYWxFT2JqZWN0KXByb2JhYmlsaXR5Ow0KKwkJCXByb2JhYmlsaXR5ID0gKFZhbHVlU3BlY2lmaWNhdGlvbillUmVzb2x2ZVByb3h5KG9sZFByb2JhYmlsaXR5KTsNCisJCQlpZiAocHJvYmFiaWxpdHkgIT0gb2xkUHJvYmFiaWxpdHkpIHsNCisJCQkJaWYgKGVOb3RpZmljYXRpb25SZXF1aXJlZCgpKQ0KKwkJCQkJZU5vdGlmeShuZXcgRU5vdGlmaWNhdGlvbkltcGwodGhpcywgTm90aWZpY2F0aW9uLlJFU09MVkUsIEFjdGl2aXRpZXNQYWNrYWdlLlBST0JBQklMSVRZX19QUk9CQUJJTElUWSwgb2xkUHJvYmFiaWxpdHksIHByb2JhYmlsaXR5KSk7DQorCQkJfQ0KKwkJfQ0KKwkJcmV0dXJuIHByb2JhYmlsaXR5Ow0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIFZhbHVlU3BlY2lmaWNhdGlvbiBiYXNpY0dldFByb2JhYmlsaXR5KCkgew0KKwkJcmV0dXJuIHByb2JhYmlsaXR5Ow0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIHZvaWQgc2V0UHJvYmFiaWxpdHkoVmFsdWVTcGVjaWZpY2F0aW9uIG5ld1Byb2JhYmlsaXR5KSB7DQorCQlWYWx1ZVNwZWNpZmljYXRpb24gb2xkUHJvYmFiaWxpdHkgPSBwcm9iYWJpbGl0eTsNCisJCXByb2JhYmlsaXR5ID0gbmV3UHJvYmFiaWxpdHk7DQorCQlpZiAoZU5vdGlmaWNhdGlvblJlcXVpcmVkKCkpDQorCQkJZU5vdGlmeShuZXcgRU5vdGlmaWNhdGlvbkltcGwodGhpcywgTm90aWZpY2F0aW9uLlNFVCwgQWN0aXZpdGllc1BhY2thZ2UuUFJPQkFCSUxJVFlfX1BST0JBQklMSVRZLCBvbGRQcm9iYWJpbGl0eSwgcHJvYmFiaWxpdHkpKTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgT2JqZWN0IGVHZXQoaW50IGZlYXR1cmVJRCwgYm9vbGVhbiByZXNvbHZlLCBib29sZWFuIGNvcmVUeXBlKSB7DQorCQlzd2l0Y2ggKGZlYXR1cmVJRCkgew0KKwkJCWNhc2UgQWN0aXZpdGllc1BhY2thZ2UuUFJPQkFCSUxJVFlfX0JBU0VfQUNUSVZJVFlfRURHRToNCisJCQkJaWYgKHJlc29sdmUpIHJldHVybiBnZXRCYXNlX0FjdGl2aXR5RWRnZSgpOw0KKwkJCQlyZXR1cm4gYmFzaWNHZXRCYXNlX0FjdGl2aXR5RWRnZSgpOw0KKwkJCWNhc2UgQWN0aXZpdGllc1BhY2thZ2UuUFJPQkFCSUxJVFlfX0JBU0VfUEFSQU1FVEVSX1NFVDoNCisJCQkJaWYgKHJlc29sdmUpIHJldHVybiBnZXRCYXNlX1BhcmFtZXRlclNldCgpOw0KKwkJCQlyZXR1cm4gYmFzaWNHZXRCYXNlX1BhcmFtZXRlclNldCgpOw0KKwkJCWNhc2UgQWN0aXZpdGllc1BhY2thZ2UuUFJPQkFCSUxJVFlfX1BST0JBQklMSVRZOg0KKwkJCQlpZiAocmVzb2x2ZSkgcmV0dXJuIGdldFByb2JhYmlsaXR5KCk7DQorCQkJCXJldHVybiBiYXNpY0dldFByb2JhYmlsaXR5KCk7DQorCQl9DQorCQlyZXR1cm4gc3VwZXIuZUdldChmZWF0dXJlSUQsIHJlc29sdmUsIGNvcmVUeXBlKTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgdm9pZCBlU2V0KGludCBmZWF0dXJlSUQsIE9iamVjdCBuZXdWYWx1ZSkgew0KKwkJc3dpdGNoIChmZWF0dXJlSUQpIHsNCisJCQljYXNlIEFjdGl2aXRpZXNQYWNrYWdlLlBST0JBQklMSVRZX19CQVNFX0FDVElWSVRZX0VER0U6DQorCQkJCXNldEJhc2VfQWN0aXZpdHlFZGdlKChBY3Rpdml0eUVkZ2UpbmV3VmFsdWUpOw0KKwkJCQlyZXR1cm47DQorCQkJY2FzZSBBY3Rpdml0aWVzUGFja2FnZS5QUk9CQUJJTElUWV9fQkFTRV9QQVJBTUVURVJfU0VUOg0KKwkJCQlzZXRCYXNlX1BhcmFtZXRlclNldCgoUGFyYW1ldGVyU2V0KW5ld1ZhbHVlKTsNCisJCQkJcmV0dXJuOw0KKwkJCWNhc2UgQWN0aXZpdGllc1BhY2thZ2UuUFJPQkFCSUxJVFlfX1BST0JBQklMSVRZOg0KKwkJCQlzZXRQcm9iYWJpbGl0eSgoVmFsdWVTcGVjaWZpY2F0aW9uKW5ld1ZhbHVlKTsNCisJCQkJcmV0dXJuOw0KKwkJfQ0KKwkJc3VwZXIuZVNldChmZWF0dXJlSUQsIG5ld1ZhbHVlKTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgdm9pZCBlVW5zZXQoaW50IGZlYXR1cmVJRCkgew0KKwkJc3dpdGNoIChmZWF0dXJlSUQpIHsNCisJCQljYXNlIEFjdGl2aXRpZXNQYWNrYWdlLlBST0JBQklMSVRZX19CQVNFX0FDVElWSVRZX0VER0U6DQorCQkJCXNldEJhc2VfQWN0aXZpdHlFZGdlKChBY3Rpdml0eUVkZ2UpbnVsbCk7DQorCQkJCXJldHVybjsNCisJCQljYXNlIEFjdGl2aXRpZXNQYWNrYWdlLlBST0JBQklMSVRZX19CQVNFX1BBUkFNRVRFUl9TRVQ6DQorCQkJCXNldEJhc2VfUGFyYW1ldGVyU2V0KChQYXJhbWV0ZXJTZXQpbnVsbCk7DQorCQkJCXJldHVybjsNCisJCQljYXNlIEFjdGl2aXRpZXNQYWNrYWdlLlBST0JBQklMSVRZX19QUk9CQUJJTElUWToNCisJCQkJc2V0UHJvYmFiaWxpdHkoKFZhbHVlU3BlY2lmaWNhdGlvbiludWxsKTsNCisJCQkJcmV0dXJuOw0KKwkJfQ0KKwkJc3VwZXIuZVVuc2V0KGZlYXR1cmVJRCk7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIGJvb2xlYW4gZUlzU2V0KGludCBmZWF0dXJlSUQpIHsNCisJCXN3aXRjaCAoZmVhdHVyZUlEKSB7DQorCQkJY2FzZSBBY3Rpdml0aWVzUGFja2FnZS5QUk9CQUJJTElUWV9fQkFTRV9BQ1RJVklUWV9FREdFOg0KKwkJCQlyZXR1cm4gYmFzZV9BY3Rpdml0eUVkZ2UgIT0gbnVsbDsNCisJCQljYXNlIEFjdGl2aXRpZXNQYWNrYWdlLlBST0JBQklMSVRZX19CQVNFX1BBUkFNRVRFUl9TRVQ6DQorCQkJCXJldHVybiBiYXNlX1BhcmFtZXRlclNldCAhPSBudWxsOw0KKwkJCWNhc2UgQWN0aXZpdGllc1BhY2thZ2UuUFJPQkFCSUxJVFlfX1BST0JBQklMSVRZOg0KKwkJCQlyZXR1cm4gcHJvYmFiaWxpdHkgIT0gbnVsbDsNCisJCX0NCisJCXJldHVybiBzdXBlci5lSXNTZXQoZmVhdHVyZUlEKTsNCisJfQ0KKw0KK30gLy9Qcm9iYWJpbGl0eUltcGwNCmRpZmYgLS1naXQgYS9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9hY3Rpdml0aWVzL2ludGVybmFsL2ltcGwvUmF0ZUltcGwuamF2YSBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L2FjdGl2aXRpZXMvaW50ZXJuYWwvaW1wbC9SYXRlSW1wbC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg1MGM2NDAKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9hY3Rpdml0aWVzL2ludGVybmFsL2ltcGwvUmF0ZUltcGwuamF2YQpAQCAtMCwwICsxLDM0NyBAQAorLyoqDQorICogQ29weXJpZ2h0IChjKSAyMDE1IENFQSBMSVNULg0KKyAqIA0KKyAqICBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQorICogIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KKyAqICB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KKyAqICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqLw0KK3BhY2thZ2Ugb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmFjdGl2aXRpZXMuaW50ZXJuYWwuaW1wbDsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi5ub3RpZnkuTm90aWZpY2F0aW9uOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRUNsYXNzOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuSW50ZXJuYWxFT2JqZWN0Ow0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuaW1wbC5FTm90aWZpY2F0aW9uSW1wbDsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLmltcGwuTWluaW1hbEVPYmplY3RJbXBsOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYWN0aXZpdGllcy5BY3Rpdml0aWVzUGFja2FnZTsNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmFjdGl2aXRpZXMuUmF0ZTsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UudW1sMi51bWwuQWN0aXZpdHlFZGdlOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS51bWwyLnVtbC5JbnN0YW5jZVNwZWNpZmljYXRpb247DQoraW1wb3J0IG9yZy5lY2xpcHNlLnVtbDIudW1sLk9iamVjdE5vZGU7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnVtbDIudW1sLlBhcmFtZXRlcjsNCisNCisvKioNCisgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKyAqIEFuIGltcGxlbWVudGF0aW9uIG9mIHRoZSBtb2RlbCBvYmplY3QgJzxlbT48Yj5SYXRlPC9iPjwvZW0+Jy4NCisgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisgKiA8cD4NCisgKiBUaGUgZm9sbG93aW5nIGZlYXR1cmVzIGFyZSBpbXBsZW1lbnRlZDoNCisgKiA8dWw+DQorICogICA8bGk+e0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5hY3Rpdml0aWVzLmludGVybmFsLmltcGwuUmF0ZUltcGwjZ2V0UmF0ZSA8ZW0+UmF0ZTwvZW0+fTwvbGk+DQorICogICA8bGk+e0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5hY3Rpdml0aWVzLmludGVybmFsLmltcGwuUmF0ZUltcGwjZ2V0QmFzZV9BY3Rpdml0eUVkZ2UgPGVtPkJhc2UgQWN0aXZpdHkgRWRnZTwvZW0+fTwvbGk+DQorICogICA8bGk+e0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5hY3Rpdml0aWVzLmludGVybmFsLmltcGwuUmF0ZUltcGwjZ2V0QmFzZV9PYmplY3ROb2RlIDxlbT5CYXNlIE9iamVjdCBOb2RlPC9lbT59PC9saT4NCisgKiAgIDxsaT57QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmFjdGl2aXRpZXMuaW50ZXJuYWwuaW1wbC5SYXRlSW1wbCNnZXRCYXNlX1BhcmFtZXRlciA8ZW0+QmFzZSBQYXJhbWV0ZXI8L2VtPn08L2xpPg0KKyAqIDwvdWw+DQorICogPC9wPg0KKyAqDQorICogQGdlbmVyYXRlZA0KKyAqLw0KK3B1YmxpYyBjbGFzcyBSYXRlSW1wbCBleHRlbmRzIE1pbmltYWxFT2JqZWN0SW1wbC5Db250YWluZXIgaW1wbGVtZW50cyBSYXRlIHsNCisJLyoqDQorCSAqIFRoZSBjYWNoZWQgdmFsdWUgb2YgdGhlICd7QGxpbmsgI2dldFJhdGUoKSA8ZW0+UmF0ZTwvZW0+fScgcmVmZXJlbmNlLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHNlZSAjZ2V0UmF0ZSgpDQorCSAqIEBnZW5lcmF0ZWQNCisJICogQG9yZGVyZWQNCisJICovDQorCXByb3RlY3RlZCBJbnN0YW5jZVNwZWNpZmljYXRpb24gcmF0ZTsNCisNCisJLyoqDQorCSAqIFRoZSBjYWNoZWQgdmFsdWUgb2YgdGhlICd7QGxpbmsgI2dldEJhc2VfQWN0aXZpdHlFZGdlKCkgPGVtPkJhc2UgQWN0aXZpdHkgRWRnZTwvZW0+fScgcmVmZXJlbmNlLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHNlZSAjZ2V0QmFzZV9BY3Rpdml0eUVkZ2UoKQ0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqIEBvcmRlcmVkDQorCSAqLw0KKwlwcm90ZWN0ZWQgQWN0aXZpdHlFZGdlIGJhc2VfQWN0aXZpdHlFZGdlOw0KKw0KKwkvKioNCisJICogVGhlIGNhY2hlZCB2YWx1ZSBvZiB0aGUgJ3tAbGluayAjZ2V0QmFzZV9PYmplY3ROb2RlKCkgPGVtPkJhc2UgT2JqZWN0IE5vZGU8L2VtPn0nIHJlZmVyZW5jZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBzZWUgI2dldEJhc2VfT2JqZWN0Tm9kZSgpDQorCSAqIEBnZW5lcmF0ZWQNCisJICogQG9yZGVyZWQNCisJICovDQorCXByb3RlY3RlZCBPYmplY3ROb2RlIGJhc2VfT2JqZWN0Tm9kZTsNCisNCisJLyoqDQorCSAqIFRoZSBjYWNoZWQgdmFsdWUgb2YgdGhlICd7QGxpbmsgI2dldEJhc2VfUGFyYW1ldGVyKCkgPGVtPkJhc2UgUGFyYW1ldGVyPC9lbT59JyByZWZlcmVuY2UuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAc2VlICNnZXRCYXNlX1BhcmFtZXRlcigpDQorCSAqIEBnZW5lcmF0ZWQNCisJICogQG9yZGVyZWQNCisJICovDQorCXByb3RlY3RlZCBQYXJhbWV0ZXIgYmFzZV9QYXJhbWV0ZXI7DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHJvdGVjdGVkIFJhdGVJbXBsKCkgew0KKwkJc3VwZXIoKTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwcm90ZWN0ZWQgRUNsYXNzIGVTdGF0aWNDbGFzcygpIHsNCisJCXJldHVybiBBY3Rpdml0aWVzUGFja2FnZS5MaXRlcmFscy5SQVRFOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIEluc3RhbmNlU3BlY2lmaWNhdGlvbiBnZXRSYXRlKCkgew0KKwkJaWYgKHJhdGUgIT0gbnVsbCAmJiByYXRlLmVJc1Byb3h5KCkpIHsNCisJCQlJbnRlcm5hbEVPYmplY3Qgb2xkUmF0ZSA9IChJbnRlcm5hbEVPYmplY3QpcmF0ZTsNCisJCQlyYXRlID0gKEluc3RhbmNlU3BlY2lmaWNhdGlvbillUmVzb2x2ZVByb3h5KG9sZFJhdGUpOw0KKwkJCWlmIChyYXRlICE9IG9sZFJhdGUpIHsNCisJCQkJaWYgKGVOb3RpZmljYXRpb25SZXF1aXJlZCgpKQ0KKwkJCQkJZU5vdGlmeShuZXcgRU5vdGlmaWNhdGlvbkltcGwodGhpcywgTm90aWZpY2F0aW9uLlJFU09MVkUsIEFjdGl2aXRpZXNQYWNrYWdlLlJBVEVfX1JBVEUsIG9sZFJhdGUsIHJhdGUpKTsNCisJCQl9DQorCQl9DQorCQlyZXR1cm4gcmF0ZTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBJbnN0YW5jZVNwZWNpZmljYXRpb24gYmFzaWNHZXRSYXRlKCkgew0KKwkJcmV0dXJuIHJhdGU7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgdm9pZCBzZXRSYXRlKEluc3RhbmNlU3BlY2lmaWNhdGlvbiBuZXdSYXRlKSB7DQorCQlJbnN0YW5jZVNwZWNpZmljYXRpb24gb2xkUmF0ZSA9IHJhdGU7DQorCQlyYXRlID0gbmV3UmF0ZTsNCisJCWlmIChlTm90aWZpY2F0aW9uUmVxdWlyZWQoKSkNCisJCQllTm90aWZ5KG5ldyBFTm90aWZpY2F0aW9uSW1wbCh0aGlzLCBOb3RpZmljYXRpb24uU0VULCBBY3Rpdml0aWVzUGFja2FnZS5SQVRFX19SQVRFLCBvbGRSYXRlLCByYXRlKSk7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgQWN0aXZpdHlFZGdlIGdldEJhc2VfQWN0aXZpdHlFZGdlKCkgew0KKwkJaWYgKGJhc2VfQWN0aXZpdHlFZGdlICE9IG51bGwgJiYgYmFzZV9BY3Rpdml0eUVkZ2UuZUlzUHJveHkoKSkgew0KKwkJCUludGVybmFsRU9iamVjdCBvbGRCYXNlX0FjdGl2aXR5RWRnZSA9IChJbnRlcm5hbEVPYmplY3QpYmFzZV9BY3Rpdml0eUVkZ2U7DQorCQkJYmFzZV9BY3Rpdml0eUVkZ2UgPSAoQWN0aXZpdHlFZGdlKWVSZXNvbHZlUHJveHkob2xkQmFzZV9BY3Rpdml0eUVkZ2UpOw0KKwkJCWlmIChiYXNlX0FjdGl2aXR5RWRnZSAhPSBvbGRCYXNlX0FjdGl2aXR5RWRnZSkgew0KKwkJCQlpZiAoZU5vdGlmaWNhdGlvblJlcXVpcmVkKCkpDQorCQkJCQllTm90aWZ5KG5ldyBFTm90aWZpY2F0aW9uSW1wbCh0aGlzLCBOb3RpZmljYXRpb24uUkVTT0xWRSwgQWN0aXZpdGllc1BhY2thZ2UuUkFURV9fQkFTRV9BQ1RJVklUWV9FREdFLCBvbGRCYXNlX0FjdGl2aXR5RWRnZSwgYmFzZV9BY3Rpdml0eUVkZ2UpKTsNCisJCQl9DQorCQl9DQorCQlyZXR1cm4gYmFzZV9BY3Rpdml0eUVkZ2U7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgQWN0aXZpdHlFZGdlIGJhc2ljR2V0QmFzZV9BY3Rpdml0eUVkZ2UoKSB7DQorCQlyZXR1cm4gYmFzZV9BY3Rpdml0eUVkZ2U7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgdm9pZCBzZXRCYXNlX0FjdGl2aXR5RWRnZShBY3Rpdml0eUVkZ2UgbmV3QmFzZV9BY3Rpdml0eUVkZ2UpIHsNCisJCUFjdGl2aXR5RWRnZSBvbGRCYXNlX0FjdGl2aXR5RWRnZSA9IGJhc2VfQWN0aXZpdHlFZGdlOw0KKwkJYmFzZV9BY3Rpdml0eUVkZ2UgPSBuZXdCYXNlX0FjdGl2aXR5RWRnZTsNCisJCWlmIChlTm90aWZpY2F0aW9uUmVxdWlyZWQoKSkNCisJCQllTm90aWZ5KG5ldyBFTm90aWZpY2F0aW9uSW1wbCh0aGlzLCBOb3RpZmljYXRpb24uU0VULCBBY3Rpdml0aWVzUGFja2FnZS5SQVRFX19CQVNFX0FDVElWSVRZX0VER0UsIG9sZEJhc2VfQWN0aXZpdHlFZGdlLCBiYXNlX0FjdGl2aXR5RWRnZSkpOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIE9iamVjdE5vZGUgZ2V0QmFzZV9PYmplY3ROb2RlKCkgew0KKwkJaWYgKGJhc2VfT2JqZWN0Tm9kZSAhPSBudWxsICYmIGJhc2VfT2JqZWN0Tm9kZS5lSXNQcm94eSgpKSB7DQorCQkJSW50ZXJuYWxFT2JqZWN0IG9sZEJhc2VfT2JqZWN0Tm9kZSA9IChJbnRlcm5hbEVPYmplY3QpYmFzZV9PYmplY3ROb2RlOw0KKwkJCWJhc2VfT2JqZWN0Tm9kZSA9IChPYmplY3ROb2RlKWVSZXNvbHZlUHJveHkob2xkQmFzZV9PYmplY3ROb2RlKTsNCisJCQlpZiAoYmFzZV9PYmplY3ROb2RlICE9IG9sZEJhc2VfT2JqZWN0Tm9kZSkgew0KKwkJCQlpZiAoZU5vdGlmaWNhdGlvblJlcXVpcmVkKCkpDQorCQkJCQllTm90aWZ5KG5ldyBFTm90aWZpY2F0aW9uSW1wbCh0aGlzLCBOb3RpZmljYXRpb24uUkVTT0xWRSwgQWN0aXZpdGllc1BhY2thZ2UuUkFURV9fQkFTRV9PQkpFQ1RfTk9ERSwgb2xkQmFzZV9PYmplY3ROb2RlLCBiYXNlX09iamVjdE5vZGUpKTsNCisJCQl9DQorCQl9DQorCQlyZXR1cm4gYmFzZV9PYmplY3ROb2RlOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIE9iamVjdE5vZGUgYmFzaWNHZXRCYXNlX09iamVjdE5vZGUoKSB7DQorCQlyZXR1cm4gYmFzZV9PYmplY3ROb2RlOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIHZvaWQgc2V0QmFzZV9PYmplY3ROb2RlKE9iamVjdE5vZGUgbmV3QmFzZV9PYmplY3ROb2RlKSB7DQorCQlPYmplY3ROb2RlIG9sZEJhc2VfT2JqZWN0Tm9kZSA9IGJhc2VfT2JqZWN0Tm9kZTsNCisJCWJhc2VfT2JqZWN0Tm9kZSA9IG5ld0Jhc2VfT2JqZWN0Tm9kZTsNCisJCWlmIChlTm90aWZpY2F0aW9uUmVxdWlyZWQoKSkNCisJCQllTm90aWZ5KG5ldyBFTm90aWZpY2F0aW9uSW1wbCh0aGlzLCBOb3RpZmljYXRpb24uU0VULCBBY3Rpdml0aWVzUGFja2FnZS5SQVRFX19CQVNFX09CSkVDVF9OT0RFLCBvbGRCYXNlX09iamVjdE5vZGUsIGJhc2VfT2JqZWN0Tm9kZSkpOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIFBhcmFtZXRlciBnZXRCYXNlX1BhcmFtZXRlcigpIHsNCisJCWlmIChiYXNlX1BhcmFtZXRlciAhPSBudWxsICYmIGJhc2VfUGFyYW1ldGVyLmVJc1Byb3h5KCkpIHsNCisJCQlJbnRlcm5hbEVPYmplY3Qgb2xkQmFzZV9QYXJhbWV0ZXIgPSAoSW50ZXJuYWxFT2JqZWN0KWJhc2VfUGFyYW1ldGVyOw0KKwkJCWJhc2VfUGFyYW1ldGVyID0gKFBhcmFtZXRlcillUmVzb2x2ZVByb3h5KG9sZEJhc2VfUGFyYW1ldGVyKTsNCisJCQlpZiAoYmFzZV9QYXJhbWV0ZXIgIT0gb2xkQmFzZV9QYXJhbWV0ZXIpIHsNCisJCQkJaWYgKGVOb3RpZmljYXRpb25SZXF1aXJlZCgpKQ0KKwkJCQkJZU5vdGlmeShuZXcgRU5vdGlmaWNhdGlvbkltcGwodGhpcywgTm90aWZpY2F0aW9uLlJFU09MVkUsIEFjdGl2aXRpZXNQYWNrYWdlLlJBVEVfX0JBU0VfUEFSQU1FVEVSLCBvbGRCYXNlX1BhcmFtZXRlciwgYmFzZV9QYXJhbWV0ZXIpKTsNCisJCQl9DQorCQl9DQorCQlyZXR1cm4gYmFzZV9QYXJhbWV0ZXI7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgUGFyYW1ldGVyIGJhc2ljR2V0QmFzZV9QYXJhbWV0ZXIoKSB7DQorCQlyZXR1cm4gYmFzZV9QYXJhbWV0ZXI7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgdm9pZCBzZXRCYXNlX1BhcmFtZXRlcihQYXJhbWV0ZXIgbmV3QmFzZV9QYXJhbWV0ZXIpIHsNCisJCVBhcmFtZXRlciBvbGRCYXNlX1BhcmFtZXRlciA9IGJhc2VfUGFyYW1ldGVyOw0KKwkJYmFzZV9QYXJhbWV0ZXIgPSBuZXdCYXNlX1BhcmFtZXRlcjsNCisJCWlmIChlTm90aWZpY2F0aW9uUmVxdWlyZWQoKSkNCisJCQllTm90aWZ5KG5ldyBFTm90aWZpY2F0aW9uSW1wbCh0aGlzLCBOb3RpZmljYXRpb24uU0VULCBBY3Rpdml0aWVzUGFja2FnZS5SQVRFX19CQVNFX1BBUkFNRVRFUiwgb2xkQmFzZV9QYXJhbWV0ZXIsIGJhc2VfUGFyYW1ldGVyKSk7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIE9iamVjdCBlR2V0KGludCBmZWF0dXJlSUQsIGJvb2xlYW4gcmVzb2x2ZSwgYm9vbGVhbiBjb3JlVHlwZSkgew0KKwkJc3dpdGNoIChmZWF0dXJlSUQpIHsNCisJCQljYXNlIEFjdGl2aXRpZXNQYWNrYWdlLlJBVEVfX1JBVEU6DQorCQkJCWlmIChyZXNvbHZlKSByZXR1cm4gZ2V0UmF0ZSgpOw0KKwkJCQlyZXR1cm4gYmFzaWNHZXRSYXRlKCk7DQorCQkJY2FzZSBBY3Rpdml0aWVzUGFja2FnZS5SQVRFX19CQVNFX0FDVElWSVRZX0VER0U6DQorCQkJCWlmIChyZXNvbHZlKSByZXR1cm4gZ2V0QmFzZV9BY3Rpdml0eUVkZ2UoKTsNCisJCQkJcmV0dXJuIGJhc2ljR2V0QmFzZV9BY3Rpdml0eUVkZ2UoKTsNCisJCQljYXNlIEFjdGl2aXRpZXNQYWNrYWdlLlJBVEVfX0JBU0VfT0JKRUNUX05PREU6DQorCQkJCWlmIChyZXNvbHZlKSByZXR1cm4gZ2V0QmFzZV9PYmplY3ROb2RlKCk7DQorCQkJCXJldHVybiBiYXNpY0dldEJhc2VfT2JqZWN0Tm9kZSgpOw0KKwkJCWNhc2UgQWN0aXZpdGllc1BhY2thZ2UuUkFURV9fQkFTRV9QQVJBTUVURVI6DQorCQkJCWlmIChyZXNvbHZlKSByZXR1cm4gZ2V0QmFzZV9QYXJhbWV0ZXIoKTsNCisJCQkJcmV0dXJuIGJhc2ljR2V0QmFzZV9QYXJhbWV0ZXIoKTsNCisJCX0NCisJCXJldHVybiBzdXBlci5lR2V0KGZlYXR1cmVJRCwgcmVzb2x2ZSwgY29yZVR5cGUpOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXB1YmxpYyB2b2lkIGVTZXQoaW50IGZlYXR1cmVJRCwgT2JqZWN0IG5ld1ZhbHVlKSB7DQorCQlzd2l0Y2ggKGZlYXR1cmVJRCkgew0KKwkJCWNhc2UgQWN0aXZpdGllc1BhY2thZ2UuUkFURV9fUkFURToNCisJCQkJc2V0UmF0ZSgoSW5zdGFuY2VTcGVjaWZpY2F0aW9uKW5ld1ZhbHVlKTsNCisJCQkJcmV0dXJuOw0KKwkJCWNhc2UgQWN0aXZpdGllc1BhY2thZ2UuUkFURV9fQkFTRV9BQ1RJVklUWV9FREdFOg0KKwkJCQlzZXRCYXNlX0FjdGl2aXR5RWRnZSgoQWN0aXZpdHlFZGdlKW5ld1ZhbHVlKTsNCisJCQkJcmV0dXJuOw0KKwkJCWNhc2UgQWN0aXZpdGllc1BhY2thZ2UuUkFURV9fQkFTRV9PQkpFQ1RfTk9ERToNCisJCQkJc2V0QmFzZV9PYmplY3ROb2RlKChPYmplY3ROb2RlKW5ld1ZhbHVlKTsNCisJCQkJcmV0dXJuOw0KKwkJCWNhc2UgQWN0aXZpdGllc1BhY2thZ2UuUkFURV9fQkFTRV9QQVJBTUVURVI6DQorCQkJCXNldEJhc2VfUGFyYW1ldGVyKChQYXJhbWV0ZXIpbmV3VmFsdWUpOw0KKwkJCQlyZXR1cm47DQorCQl9DQorCQlzdXBlci5lU2V0KGZlYXR1cmVJRCwgbmV3VmFsdWUpOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXB1YmxpYyB2b2lkIGVVbnNldChpbnQgZmVhdHVyZUlEKSB7DQorCQlzd2l0Y2ggKGZlYXR1cmVJRCkgew0KKwkJCWNhc2UgQWN0aXZpdGllc1BhY2thZ2UuUkFURV9fUkFURToNCisJCQkJc2V0UmF0ZSgoSW5zdGFuY2VTcGVjaWZpY2F0aW9uKW51bGwpOw0KKwkJCQlyZXR1cm47DQorCQkJY2FzZSBBY3Rpdml0aWVzUGFja2FnZS5SQVRFX19CQVNFX0FDVElWSVRZX0VER0U6DQorCQkJCXNldEJhc2VfQWN0aXZpdHlFZGdlKChBY3Rpdml0eUVkZ2UpbnVsbCk7DQorCQkJCXJldHVybjsNCisJCQljYXNlIEFjdGl2aXRpZXNQYWNrYWdlLlJBVEVfX0JBU0VfT0JKRUNUX05PREU6DQorCQkJCXNldEJhc2VfT2JqZWN0Tm9kZSgoT2JqZWN0Tm9kZSludWxsKTsNCisJCQkJcmV0dXJuOw0KKwkJCWNhc2UgQWN0aXZpdGllc1BhY2thZ2UuUkFURV9fQkFTRV9QQVJBTUVURVI6DQorCQkJCXNldEJhc2VfUGFyYW1ldGVyKChQYXJhbWV0ZXIpbnVsbCk7DQorCQkJCXJldHVybjsNCisJCX0NCisJCXN1cGVyLmVVbnNldChmZWF0dXJlSUQpOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXB1YmxpYyBib29sZWFuIGVJc1NldChpbnQgZmVhdHVyZUlEKSB7DQorCQlzd2l0Y2ggKGZlYXR1cmVJRCkgew0KKwkJCWNhc2UgQWN0aXZpdGllc1BhY2thZ2UuUkFURV9fUkFURToNCisJCQkJcmV0dXJuIHJhdGUgIT0gbnVsbDsNCisJCQljYXNlIEFjdGl2aXRpZXNQYWNrYWdlLlJBVEVfX0JBU0VfQUNUSVZJVFlfRURHRToNCisJCQkJcmV0dXJuIGJhc2VfQWN0aXZpdHlFZGdlICE9IG51bGw7DQorCQkJY2FzZSBBY3Rpdml0aWVzUGFja2FnZS5SQVRFX19CQVNFX09CSkVDVF9OT0RFOg0KKwkJCQlyZXR1cm4gYmFzZV9PYmplY3ROb2RlICE9IG51bGw7DQorCQkJY2FzZSBBY3Rpdml0aWVzUGFja2FnZS5SQVRFX19CQVNFX1BBUkFNRVRFUjoNCisJCQkJcmV0dXJuIGJhc2VfUGFyYW1ldGVyICE9IG51bGw7DQorCQl9DQorCQlyZXR1cm4gc3VwZXIuZUlzU2V0KGZlYXR1cmVJRCk7DQorCX0NCisNCit9IC8vUmF0ZUltcGwNCmRpZmYgLS1naXQgYS9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9hY3Rpdml0aWVzL3V0aWwvQWN0aXZpdGllc0FkYXB0ZXJGYWN0b3J5LmphdmEgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9hY3Rpdml0aWVzL3V0aWwvQWN0aXZpdGllc0FkYXB0ZXJGYWN0b3J5LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODZkOWZiMAotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L2FjdGl2aXRpZXMvdXRpbC9BY3Rpdml0aWVzQWRhcHRlckZhY3RvcnkuamF2YQpAQCAtMCwwICsxLDI1MiBAQAorLyoqDQorICogQ29weXJpZ2h0IChjKSAyMDE1IENFQSBMSVNULg0KKyAqIA0KKyAqICBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQorICogIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KKyAqICB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KKyAqICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqLw0KK3BhY2thZ2Ugb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmFjdGl2aXRpZXMudXRpbDsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi5ub3RpZnkuQWRhcHRlcjsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi5ub3RpZnkuTm90aWZpZXI7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jb21tb24ubm90aWZ5LmltcGwuQWRhcHRlckZhY3RvcnlJbXBsOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRU9iamVjdDsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmFjdGl2aXRpZXMuKjsNCisNCisvKioNCisgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKyAqIFRoZSA8Yj5BZGFwdGVyIEZhY3Rvcnk8L2I+IGZvciB0aGUgbW9kZWwuDQorICogSXQgcHJvdmlkZXMgYW4gYWRhcHRlciA8Y29kZT5jcmVhdGVYWFg8L2NvZGU+IG1ldGhvZCBmb3IgZWFjaCBjbGFzcyBvZiB0aGUgbW9kZWwuDQorICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYWN0aXZpdGllcy5BY3Rpdml0aWVzUGFja2FnZQ0KKyAqIEBnZW5lcmF0ZWQNCisgKi8NCitwdWJsaWMgY2xhc3MgQWN0aXZpdGllc0FkYXB0ZXJGYWN0b3J5IGV4dGVuZHMgQWRhcHRlckZhY3RvcnlJbXBsIHsNCisJLyoqDQorCSAqIFRoZSBjYWNoZWQgbW9kZWwgcGFja2FnZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXByb3RlY3RlZCBzdGF0aWMgQWN0aXZpdGllc1BhY2thZ2UgbW9kZWxQYWNrYWdlOw0KKw0KKwkvKioNCisJICogQ3JlYXRlcyBhbiBpbnN0YW5jZSBvZiB0aGUgYWRhcHRlciBmYWN0b3J5Lg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIEFjdGl2aXRpZXNBZGFwdGVyRmFjdG9yeSgpIHsNCisJCWlmIChtb2RlbFBhY2thZ2UgPT0gbnVsbCkgew0KKwkJCW1vZGVsUGFja2FnZSA9IEFjdGl2aXRpZXNQYWNrYWdlLmVJTlNUQU5DRTsNCisJCX0NCisJfQ0KKw0KKwkvKioNCisJICogUmV0dXJucyB3aGV0aGVyIHRoaXMgZmFjdG9yeSBpcyBhcHBsaWNhYmxlIGZvciB0aGUgdHlwZSBvZiB0aGUgb2JqZWN0Lg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiBUaGlzIGltcGxlbWVudGF0aW9uIHJldHVybnMgPGNvZGU+dHJ1ZTwvY29kZT4gaWYgdGhlIG9iamVjdCBpcyBlaXRoZXIgdGhlIG1vZGVsJ3MgcGFja2FnZSBvciBpcyBhbiBpbnN0YW5jZSBvYmplY3Qgb2YgdGhlIG1vZGVsLg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHJldHVybiB3aGV0aGVyIHRoaXMgZmFjdG9yeSBpcyBhcHBsaWNhYmxlIGZvciB0aGUgdHlwZSBvZiB0aGUgb2JqZWN0Lg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIGJvb2xlYW4gaXNGYWN0b3J5Rm9yVHlwZShPYmplY3Qgb2JqZWN0KSB7DQorCQlpZiAob2JqZWN0ID09IG1vZGVsUGFja2FnZSkgew0KKwkJCXJldHVybiB0cnVlOw0KKwkJfQ0KKwkJaWYgKG9iamVjdCBpbnN0YW5jZW9mIEVPYmplY3QpIHsNCisJCQlyZXR1cm4gKChFT2JqZWN0KW9iamVjdCkuZUNsYXNzKCkuZ2V0RVBhY2thZ2UoKSA9PSBtb2RlbFBhY2thZ2U7DQorCQl9DQorCQlyZXR1cm4gZmFsc2U7DQorCX0NCisNCisJLyoqDQorCSAqIFRoZSBzd2l0Y2ggdGhhdCBkZWxlZ2F0ZXMgdG8gdGhlIDxjb2RlPmNyZWF0ZVhYWDwvY29kZT4gbWV0aG9kcy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXByb3RlY3RlZCBBY3Rpdml0aWVzU3dpdGNoPEFkYXB0ZXI+IG1vZGVsU3dpdGNoID0NCisJCW5ldyBBY3Rpdml0aWVzU3dpdGNoPEFkYXB0ZXI+KCkgew0KKwkJCUBPdmVycmlkZQ0KKwkJCXB1YmxpYyBBZGFwdGVyIGNhc2VPdmVyd3JpdGUoT3ZlcndyaXRlIG9iamVjdCkgew0KKwkJCQlyZXR1cm4gY3JlYXRlT3ZlcndyaXRlQWRhcHRlcigpOw0KKwkJCX0NCisJCQlAT3ZlcnJpZGUNCisJCQlwdWJsaWMgQWRhcHRlciBjYXNlQ29udHJvbE9wZXJhdG9yKENvbnRyb2xPcGVyYXRvciBvYmplY3QpIHsNCisJCQkJcmV0dXJuIGNyZWF0ZUNvbnRyb2xPcGVyYXRvckFkYXB0ZXIoKTsNCisJCQl9DQorCQkJQE92ZXJyaWRlDQorCQkJcHVibGljIEFkYXB0ZXIgY2FzZVJhdGUoUmF0ZSBvYmplY3QpIHsNCisJCQkJcmV0dXJuIGNyZWF0ZVJhdGVBZGFwdGVyKCk7DQorCQkJfQ0KKwkJCUBPdmVycmlkZQ0KKwkJCXB1YmxpYyBBZGFwdGVyIGNhc2VOb0J1ZmZlcihOb0J1ZmZlciBvYmplY3QpIHsNCisJCQkJcmV0dXJuIGNyZWF0ZU5vQnVmZmVyQWRhcHRlcigpOw0KKwkJCX0NCisJCQlAT3ZlcnJpZGUNCisJCQlwdWJsaWMgQWRhcHRlciBjYXNlRGlzY3JldGUoRGlzY3JldGUgb2JqZWN0KSB7DQorCQkJCXJldHVybiBjcmVhdGVEaXNjcmV0ZUFkYXB0ZXIoKTsNCisJCQl9DQorCQkJQE92ZXJyaWRlDQorCQkJcHVibGljIEFkYXB0ZXIgY2FzZUNvbnRpbnVvdXMoQ29udGludW91cyBvYmplY3QpIHsNCisJCQkJcmV0dXJuIGNyZWF0ZUNvbnRpbnVvdXNBZGFwdGVyKCk7DQorCQkJfQ0KKwkJCUBPdmVycmlkZQ0KKwkJCXB1YmxpYyBBZGFwdGVyIGNhc2VQcm9iYWJpbGl0eShQcm9iYWJpbGl0eSBvYmplY3QpIHsNCisJCQkJcmV0dXJuIGNyZWF0ZVByb2JhYmlsaXR5QWRhcHRlcigpOw0KKwkJCX0NCisJCQlAT3ZlcnJpZGUNCisJCQlwdWJsaWMgQWRhcHRlciBjYXNlT3B0aW9uYWwoT3B0aW9uYWwgb2JqZWN0KSB7DQorCQkJCXJldHVybiBjcmVhdGVPcHRpb25hbEFkYXB0ZXIoKTsNCisJCQl9DQorCQkJQE92ZXJyaWRlDQorCQkJcHVibGljIEFkYXB0ZXIgZGVmYXVsdENhc2UoRU9iamVjdCBvYmplY3QpIHsNCisJCQkJcmV0dXJuIGNyZWF0ZUVPYmplY3RBZGFwdGVyKCk7DQorCQkJfQ0KKwkJfTsNCisNCisJLyoqDQorCSAqIENyZWF0ZXMgYW4gYWRhcHRlciBmb3IgdGhlIDxjb2RlPnRhcmdldDwvY29kZT4uDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAcGFyYW0gdGFyZ2V0IHRoZSBvYmplY3QgdG8gYWRhcHQuDQorCSAqIEByZXR1cm4gdGhlIGFkYXB0ZXIgZm9yIHRoZSA8Y29kZT50YXJnZXQ8L2NvZGU+Lg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIEFkYXB0ZXIgY3JlYXRlQWRhcHRlcihOb3RpZmllciB0YXJnZXQpIHsNCisJCXJldHVybiBtb2RlbFN3aXRjaC5kb1N3aXRjaCgoRU9iamVjdCl0YXJnZXQpOw0KKwl9DQorDQorDQorCS8qKg0KKwkgKiBDcmVhdGVzIGEgbmV3IGFkYXB0ZXIgZm9yIGFuIG9iamVjdCBvZiBjbGFzcyAne0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5hY3Rpdml0aWVzLk92ZXJ3cml0ZSA8ZW0+T3ZlcndyaXRlPC9lbT59Jy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogVGhpcyBkZWZhdWx0IGltcGxlbWVudGF0aW9uIHJldHVybnMgbnVsbCBzbyB0aGF0IHdlIGNhbiBlYXNpbHkgaWdub3JlIGNhc2VzOw0KKwkgKiBpdCdzIHVzZWZ1bCB0byBpZ25vcmUgYSBjYXNlIHdoZW4gaW5oZXJpdGFuY2Ugd2lsbCBjYXRjaCBhbGwgdGhlIGNhc2VzIGFueXdheS4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEByZXR1cm4gdGhlIG5ldyBhZGFwdGVyLg0KKwkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5hY3Rpdml0aWVzLk92ZXJ3cml0ZQ0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgQWRhcHRlciBjcmVhdGVPdmVyd3JpdGVBZGFwdGVyKCkgew0KKwkJcmV0dXJuIG51bGw7DQorCX0NCisNCisJLyoqDQorCSAqIENyZWF0ZXMgYSBuZXcgYWRhcHRlciBmb3IgYW4gb2JqZWN0IG9mIGNsYXNzICd7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmFjdGl2aXRpZXMuQ29udHJvbE9wZXJhdG9yIDxlbT5Db250cm9sIE9wZXJhdG9yPC9lbT59Jy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogVGhpcyBkZWZhdWx0IGltcGxlbWVudGF0aW9uIHJldHVybnMgbnVsbCBzbyB0aGF0IHdlIGNhbiBlYXNpbHkgaWdub3JlIGNhc2VzOw0KKwkgKiBpdCdzIHVzZWZ1bCB0byBpZ25vcmUgYSBjYXNlIHdoZW4gaW5oZXJpdGFuY2Ugd2lsbCBjYXRjaCBhbGwgdGhlIGNhc2VzIGFueXdheS4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEByZXR1cm4gdGhlIG5ldyBhZGFwdGVyLg0KKwkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5hY3Rpdml0aWVzLkNvbnRyb2xPcGVyYXRvcg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgQWRhcHRlciBjcmVhdGVDb250cm9sT3BlcmF0b3JBZGFwdGVyKCkgew0KKwkJcmV0dXJuIG51bGw7DQorCX0NCisNCisJLyoqDQorCSAqIENyZWF0ZXMgYSBuZXcgYWRhcHRlciBmb3IgYW4gb2JqZWN0IG9mIGNsYXNzICd7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmFjdGl2aXRpZXMuUmF0ZSA8ZW0+UmF0ZTwvZW0+fScuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIFRoaXMgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiByZXR1cm5zIG51bGwgc28gdGhhdCB3ZSBjYW4gZWFzaWx5IGlnbm9yZSBjYXNlczsNCisJICogaXQncyB1c2VmdWwgdG8gaWdub3JlIGEgY2FzZSB3aGVuIGluaGVyaXRhbmNlIHdpbGwgY2F0Y2ggYWxsIHRoZSBjYXNlcyBhbnl3YXkuDQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAcmV0dXJuIHRoZSBuZXcgYWRhcHRlci4NCisJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYWN0aXZpdGllcy5SYXRlDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBBZGFwdGVyIGNyZWF0ZVJhdGVBZGFwdGVyKCkgew0KKwkJcmV0dXJuIG51bGw7DQorCX0NCisNCisJLyoqDQorCSAqIENyZWF0ZXMgYSBuZXcgYWRhcHRlciBmb3IgYW4gb2JqZWN0IG9mIGNsYXNzICd7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmFjdGl2aXRpZXMuTm9CdWZmZXIgPGVtPk5vIEJ1ZmZlcjwvZW0+fScuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIFRoaXMgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiByZXR1cm5zIG51bGwgc28gdGhhdCB3ZSBjYW4gZWFzaWx5IGlnbm9yZSBjYXNlczsNCisJICogaXQncyB1c2VmdWwgdG8gaWdub3JlIGEgY2FzZSB3aGVuIGluaGVyaXRhbmNlIHdpbGwgY2F0Y2ggYWxsIHRoZSBjYXNlcyBhbnl3YXkuDQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAcmV0dXJuIHRoZSBuZXcgYWRhcHRlci4NCisJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYWN0aXZpdGllcy5Ob0J1ZmZlcg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgQWRhcHRlciBjcmVhdGVOb0J1ZmZlckFkYXB0ZXIoKSB7DQorCQlyZXR1cm4gbnVsbDsNCisJfQ0KKw0KKwkvKioNCisJICogQ3JlYXRlcyBhIG5ldyBhZGFwdGVyIGZvciBhbiBvYmplY3Qgb2YgY2xhc3MgJ3tAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYWN0aXZpdGllcy5EaXNjcmV0ZSA8ZW0+RGlzY3JldGU8L2VtPn0nLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiBUaGlzIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gcmV0dXJucyBudWxsIHNvIHRoYXQgd2UgY2FuIGVhc2lseSBpZ25vcmUgY2FzZXM7DQorCSAqIGl0J3MgdXNlZnVsIHRvIGlnbm9yZSBhIGNhc2Ugd2hlbiBpbmhlcml0YW5jZSB3aWxsIGNhdGNoIGFsbCB0aGUgY2FzZXMgYW55d2F5Lg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHJldHVybiB0aGUgbmV3IGFkYXB0ZXIuDQorCSAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmFjdGl2aXRpZXMuRGlzY3JldGUNCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIEFkYXB0ZXIgY3JlYXRlRGlzY3JldGVBZGFwdGVyKCkgew0KKwkJcmV0dXJuIG51bGw7DQorCX0NCisNCisJLyoqDQorCSAqIENyZWF0ZXMgYSBuZXcgYWRhcHRlciBmb3IgYW4gb2JqZWN0IG9mIGNsYXNzICd7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmFjdGl2aXRpZXMuQ29udGludW91cyA8ZW0+Q29udGludW91czwvZW0+fScuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIFRoaXMgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiByZXR1cm5zIG51bGwgc28gdGhhdCB3ZSBjYW4gZWFzaWx5IGlnbm9yZSBjYXNlczsNCisJICogaXQncyB1c2VmdWwgdG8gaWdub3JlIGEgY2FzZSB3aGVuIGluaGVyaXRhbmNlIHdpbGwgY2F0Y2ggYWxsIHRoZSBjYXNlcyBhbnl3YXkuDQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAcmV0dXJuIHRoZSBuZXcgYWRhcHRlci4NCisJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYWN0aXZpdGllcy5Db250aW51b3VzDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBBZGFwdGVyIGNyZWF0ZUNvbnRpbnVvdXNBZGFwdGVyKCkgew0KKwkJcmV0dXJuIG51bGw7DQorCX0NCisNCisJLyoqDQorCSAqIENyZWF0ZXMgYSBuZXcgYWRhcHRlciBmb3IgYW4gb2JqZWN0IG9mIGNsYXNzICd7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmFjdGl2aXRpZXMuUHJvYmFiaWxpdHkgPGVtPlByb2JhYmlsaXR5PC9lbT59Jy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogVGhpcyBkZWZhdWx0IGltcGxlbWVudGF0aW9uIHJldHVybnMgbnVsbCBzbyB0aGF0IHdlIGNhbiBlYXNpbHkgaWdub3JlIGNhc2VzOw0KKwkgKiBpdCdzIHVzZWZ1bCB0byBpZ25vcmUgYSBjYXNlIHdoZW4gaW5oZXJpdGFuY2Ugd2lsbCBjYXRjaCBhbGwgdGhlIGNhc2VzIGFueXdheS4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEByZXR1cm4gdGhlIG5ldyBhZGFwdGVyLg0KKwkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5hY3Rpdml0aWVzLlByb2JhYmlsaXR5DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBBZGFwdGVyIGNyZWF0ZVByb2JhYmlsaXR5QWRhcHRlcigpIHsNCisJCXJldHVybiBudWxsOw0KKwl9DQorDQorCS8qKg0KKwkgKiBDcmVhdGVzIGEgbmV3IGFkYXB0ZXIgZm9yIGFuIG9iamVjdCBvZiBjbGFzcyAne0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5hY3Rpdml0aWVzLk9wdGlvbmFsIDxlbT5PcHRpb25hbDwvZW0+fScuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIFRoaXMgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiByZXR1cm5zIG51bGwgc28gdGhhdCB3ZSBjYW4gZWFzaWx5IGlnbm9yZSBjYXNlczsNCisJICogaXQncyB1c2VmdWwgdG8gaWdub3JlIGEgY2FzZSB3aGVuIGluaGVyaXRhbmNlIHdpbGwgY2F0Y2ggYWxsIHRoZSBjYXNlcyBhbnl3YXkuDQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAcmV0dXJuIHRoZSBuZXcgYWRhcHRlci4NCisJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYWN0aXZpdGllcy5PcHRpb25hbA0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgQWRhcHRlciBjcmVhdGVPcHRpb25hbEFkYXB0ZXIoKSB7DQorCQlyZXR1cm4gbnVsbDsNCisJfQ0KKw0KKwkvKioNCisJICogQ3JlYXRlcyBhIG5ldyBhZGFwdGVyIGZvciB0aGUgZGVmYXVsdCBjYXNlLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiBUaGlzIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gcmV0dXJucyBudWxsLg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHJldHVybiB0aGUgbmV3IGFkYXB0ZXIuDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBBZGFwdGVyIGNyZWF0ZUVPYmplY3RBZGFwdGVyKCkgew0KKwkJcmV0dXJuIG51bGw7DQorCX0NCisNCit9IC8vQWN0aXZpdGllc0FkYXB0ZXJGYWN0b3J5DQpkaWZmIC0tZ2l0IGEvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvYWN0aXZpdGllcy91dGlsL0FjdGl2aXRpZXNTd2l0Y2guamF2YSBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L2FjdGl2aXRpZXMvdXRpbC9BY3Rpdml0aWVzU3dpdGNoLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2YwYjkyOAotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L2FjdGl2aXRpZXMvdXRpbC9BY3Rpdml0aWVzU3dpdGNoLmphdmEKQEAgLTAsMCArMSwyNjUgQEAKKy8qKg0KKyAqIENvcHlyaWdodCAoYykgMjAxNSBDRUEgTElTVC4NCisgKiANCisgKiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KKyAqICBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCisgKiAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCisgKiAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgKi8NCitwYWNrYWdlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5hY3Rpdml0aWVzLnV0aWw7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FT2JqZWN0Ow0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRVBhY2thZ2U7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS51dGlsLlN3aXRjaDsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmFjdGl2aXRpZXMuKjsNCisNCisvKioNCisgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKyAqIFRoZSA8Yj5Td2l0Y2g8L2I+IGZvciB0aGUgbW9kZWwncyBpbmhlcml0YW5jZSBoaWVyYXJjaHkuDQorICogSXQgc3VwcG9ydHMgdGhlIGNhbGwge0BsaW5rICNkb1N3aXRjaChFT2JqZWN0KSBkb1N3aXRjaChvYmplY3QpfQ0KKyAqIHRvIGludm9rZSB0aGUgPGNvZGU+Y2FzZVhYWDwvY29kZT4gbWV0aG9kIGZvciBlYWNoIGNsYXNzIG9mIHRoZSBtb2RlbCwNCisgKiBzdGFydGluZyB3aXRoIHRoZSBhY3R1YWwgY2xhc3Mgb2YgdGhlIG9iamVjdA0KKyAqIGFuZCBwcm9jZWVkaW5nIHVwIHRoZSBpbmhlcml0YW5jZSBoaWVyYXJjaHkNCisgKiB1bnRpbCBhIG5vbi1udWxsIHJlc3VsdCBpcyByZXR1cm5lZCwNCisgKiB3aGljaCBpcyB0aGUgcmVzdWx0IG9mIHRoZSBzd2l0Y2guDQorICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYWN0aXZpdGllcy5BY3Rpdml0aWVzUGFja2FnZQ0KKyAqIEBnZW5lcmF0ZWQNCisgKi8NCitwdWJsaWMgY2xhc3MgQWN0aXZpdGllc1N3aXRjaDxUPiBleHRlbmRzIFN3aXRjaDxUPiB7DQorCS8qKg0KKwkgKiBUaGUgY2FjaGVkIG1vZGVsIHBhY2thZ2UNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXByb3RlY3RlZCBzdGF0aWMgQWN0aXZpdGllc1BhY2thZ2UgbW9kZWxQYWNrYWdlOw0KKw0KKwkvKioNCisJICogQ3JlYXRlcyBhbiBpbnN0YW5jZSBvZiB0aGUgc3dpdGNoLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIEFjdGl2aXRpZXNTd2l0Y2goKSB7DQorCQlpZiAobW9kZWxQYWNrYWdlID09IG51bGwpIHsNCisJCQltb2RlbFBhY2thZ2UgPSBBY3Rpdml0aWVzUGFja2FnZS5lSU5TVEFOQ0U7DQorCQl9DQorCX0NCisNCisJLyoqDQorCSAqIENoZWNrcyB3aGV0aGVyIHRoaXMgaXMgYSBzd2l0Y2ggZm9yIHRoZSBnaXZlbiBwYWNrYWdlLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHBhcmFtIGVQYWNrYWdlIHRoZSBwYWNrYWdlIGluIHF1ZXN0aW9uLg0KKwkgKiBAcmV0dXJuIHdoZXRoZXIgdGhpcyBpcyBhIHN3aXRjaCBmb3IgdGhlIGdpdmVuIHBhY2thZ2UuDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwcm90ZWN0ZWQgYm9vbGVhbiBpc1N3aXRjaEZvcihFUGFja2FnZSBlUGFja2FnZSkgew0KKwkJcmV0dXJuIGVQYWNrYWdlID09IG1vZGVsUGFja2FnZTsNCisJfQ0KKw0KKwkvKioNCisJICogQ2FsbHMgPGNvZGU+Y2FzZVhYWDwvY29kZT4gZm9yIGVhY2ggY2xhc3Mgb2YgdGhlIG1vZGVsIHVudGlsIG9uZSByZXR1cm5zIGEgbm9uIG51bGwgcmVzdWx0OyBpdCB5aWVsZHMgdGhhdCByZXN1bHQuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAcmV0dXJuIHRoZSBmaXJzdCBub24tbnVsbCByZXN1bHQgcmV0dXJuZWQgYnkgYSA8Y29kZT5jYXNlWFhYPC9jb2RlPiBjYWxsLg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHJvdGVjdGVkIFQgZG9Td2l0Y2goaW50IGNsYXNzaWZpZXJJRCwgRU9iamVjdCB0aGVFT2JqZWN0KSB7DQorCQlzd2l0Y2ggKGNsYXNzaWZpZXJJRCkgew0KKwkJCWNhc2UgQWN0aXZpdGllc1BhY2thZ2UuT1ZFUldSSVRFOiB7DQorCQkJCU92ZXJ3cml0ZSBvdmVyd3JpdGUgPSAoT3ZlcndyaXRlKXRoZUVPYmplY3Q7DQorCQkJCVQgcmVzdWx0ID0gY2FzZU92ZXJ3cml0ZShvdmVyd3JpdGUpOw0KKwkJCQlpZiAocmVzdWx0ID09IG51bGwpIHJlc3VsdCA9IGRlZmF1bHRDYXNlKHRoZUVPYmplY3QpOw0KKwkJCQlyZXR1cm4gcmVzdWx0Ow0KKwkJCX0NCisJCQljYXNlIEFjdGl2aXRpZXNQYWNrYWdlLkNPTlRST0xfT1BFUkFUT1I6IHsNCisJCQkJQ29udHJvbE9wZXJhdG9yIGNvbnRyb2xPcGVyYXRvciA9IChDb250cm9sT3BlcmF0b3IpdGhlRU9iamVjdDsNCisJCQkJVCByZXN1bHQgPSBjYXNlQ29udHJvbE9wZXJhdG9yKGNvbnRyb2xPcGVyYXRvcik7DQorCQkJCWlmIChyZXN1bHQgPT0gbnVsbCkgcmVzdWx0ID0gZGVmYXVsdENhc2UodGhlRU9iamVjdCk7DQorCQkJCXJldHVybiByZXN1bHQ7DQorCQkJfQ0KKwkJCWNhc2UgQWN0aXZpdGllc1BhY2thZ2UuUkFURTogew0KKwkJCQlSYXRlIHJhdGUgPSAoUmF0ZSl0aGVFT2JqZWN0Ow0KKwkJCQlUIHJlc3VsdCA9IGNhc2VSYXRlKHJhdGUpOw0KKwkJCQlpZiAocmVzdWx0ID09IG51bGwpIHJlc3VsdCA9IGRlZmF1bHRDYXNlKHRoZUVPYmplY3QpOw0KKwkJCQlyZXR1cm4gcmVzdWx0Ow0KKwkJCX0NCisJCQljYXNlIEFjdGl2aXRpZXNQYWNrYWdlLk5PX0JVRkZFUjogew0KKwkJCQlOb0J1ZmZlciBub0J1ZmZlciA9IChOb0J1ZmZlcil0aGVFT2JqZWN0Ow0KKwkJCQlUIHJlc3VsdCA9IGNhc2VOb0J1ZmZlcihub0J1ZmZlcik7DQorCQkJCWlmIChyZXN1bHQgPT0gbnVsbCkgcmVzdWx0ID0gZGVmYXVsdENhc2UodGhlRU9iamVjdCk7DQorCQkJCXJldHVybiByZXN1bHQ7DQorCQkJfQ0KKwkJCWNhc2UgQWN0aXZpdGllc1BhY2thZ2UuRElTQ1JFVEU6IHsNCisJCQkJRGlzY3JldGUgZGlzY3JldGUgPSAoRGlzY3JldGUpdGhlRU9iamVjdDsNCisJCQkJVCByZXN1bHQgPSBjYXNlRGlzY3JldGUoZGlzY3JldGUpOw0KKwkJCQlpZiAocmVzdWx0ID09IG51bGwpIHJlc3VsdCA9IGNhc2VSYXRlKGRpc2NyZXRlKTsNCisJCQkJaWYgKHJlc3VsdCA9PSBudWxsKSByZXN1bHQgPSBkZWZhdWx0Q2FzZSh0aGVFT2JqZWN0KTsNCisJCQkJcmV0dXJuIHJlc3VsdDsNCisJCQl9DQorCQkJY2FzZSBBY3Rpdml0aWVzUGFja2FnZS5DT05USU5VT1VTOiB7DQorCQkJCUNvbnRpbnVvdXMgY29udGludW91cyA9IChDb250aW51b3VzKXRoZUVPYmplY3Q7DQorCQkJCVQgcmVzdWx0ID0gY2FzZUNvbnRpbnVvdXMoY29udGludW91cyk7DQorCQkJCWlmIChyZXN1bHQgPT0gbnVsbCkgcmVzdWx0ID0gY2FzZVJhdGUoY29udGludW91cyk7DQorCQkJCWlmIChyZXN1bHQgPT0gbnVsbCkgcmVzdWx0ID0gZGVmYXVsdENhc2UodGhlRU9iamVjdCk7DQorCQkJCXJldHVybiByZXN1bHQ7DQorCQkJfQ0KKwkJCWNhc2UgQWN0aXZpdGllc1BhY2thZ2UuUFJPQkFCSUxJVFk6IHsNCisJCQkJUHJvYmFiaWxpdHkgcHJvYmFiaWxpdHkgPSAoUHJvYmFiaWxpdHkpdGhlRU9iamVjdDsNCisJCQkJVCByZXN1bHQgPSBjYXNlUHJvYmFiaWxpdHkocHJvYmFiaWxpdHkpOw0KKwkJCQlpZiAocmVzdWx0ID09IG51bGwpIHJlc3VsdCA9IGRlZmF1bHRDYXNlKHRoZUVPYmplY3QpOw0KKwkJCQlyZXR1cm4gcmVzdWx0Ow0KKwkJCX0NCisJCQljYXNlIEFjdGl2aXRpZXNQYWNrYWdlLk9QVElPTkFMOiB7DQorCQkJCU9wdGlvbmFsIG9wdGlvbmFsID0gKE9wdGlvbmFsKXRoZUVPYmplY3Q7DQorCQkJCVQgcmVzdWx0ID0gY2FzZU9wdGlvbmFsKG9wdGlvbmFsKTsNCisJCQkJaWYgKHJlc3VsdCA9PSBudWxsKSByZXN1bHQgPSBkZWZhdWx0Q2FzZSh0aGVFT2JqZWN0KTsNCisJCQkJcmV0dXJuIHJlc3VsdDsNCisJCQl9DQorCQkJZGVmYXVsdDogcmV0dXJuIGRlZmF1bHRDYXNlKHRoZUVPYmplY3QpOw0KKwkJfQ0KKwl9DQorDQorCS8qKg0KKwkgKiBSZXR1cm5zIHRoZSByZXN1bHQgb2YgaW50ZXJwcmV0aW5nIHRoZSBvYmplY3QgYXMgYW4gaW5zdGFuY2Ugb2YgJzxlbT5PdmVyd3JpdGU8L2VtPicuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIFRoaXMgaW1wbGVtZW50YXRpb24gcmV0dXJucyBudWxsOw0KKwkgKiByZXR1cm5pbmcgYSBub24tbnVsbCByZXN1bHQgd2lsbCB0ZXJtaW5hdGUgdGhlIHN3aXRjaC4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBwYXJhbSBvYmplY3QgdGhlIHRhcmdldCBvZiB0aGUgc3dpdGNoLg0KKwkgKiBAcmV0dXJuIHRoZSByZXN1bHQgb2YgaW50ZXJwcmV0aW5nIHRoZSBvYmplY3QgYXMgYW4gaW5zdGFuY2Ugb2YgJzxlbT5PdmVyd3JpdGU8L2VtPicuDQorCSAqIEBzZWUgI2RvU3dpdGNoKG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FT2JqZWN0KSBkb1N3aXRjaChFT2JqZWN0KQ0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgVCBjYXNlT3ZlcndyaXRlKE92ZXJ3cml0ZSBvYmplY3QpIHsNCisJCXJldHVybiBudWxsOw0KKwl9DQorDQorCS8qKg0KKwkgKiBSZXR1cm5zIHRoZSByZXN1bHQgb2YgaW50ZXJwcmV0aW5nIHRoZSBvYmplY3QgYXMgYW4gaW5zdGFuY2Ugb2YgJzxlbT5Db250cm9sIE9wZXJhdG9yPC9lbT4nLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiBUaGlzIGltcGxlbWVudGF0aW9uIHJldHVybnMgbnVsbDsNCisJICogcmV0dXJuaW5nIGEgbm9uLW51bGwgcmVzdWx0IHdpbGwgdGVybWluYXRlIHRoZSBzd2l0Y2guDQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAcGFyYW0gb2JqZWN0IHRoZSB0YXJnZXQgb2YgdGhlIHN3aXRjaC4NCisJICogQHJldHVybiB0aGUgcmVzdWx0IG9mIGludGVycHJldGluZyB0aGUgb2JqZWN0IGFzIGFuIGluc3RhbmNlIG9mICc8ZW0+Q29udHJvbCBPcGVyYXRvcjwvZW0+Jy4NCisJICogQHNlZSAjZG9Td2l0Y2gob3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVPYmplY3QpIGRvU3dpdGNoKEVPYmplY3QpDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBUIGNhc2VDb250cm9sT3BlcmF0b3IoQ29udHJvbE9wZXJhdG9yIG9iamVjdCkgew0KKwkJcmV0dXJuIG51bGw7DQorCX0NCisNCisJLyoqDQorCSAqIFJldHVybnMgdGhlIHJlc3VsdCBvZiBpbnRlcnByZXRpbmcgdGhlIG9iamVjdCBhcyBhbiBpbnN0YW5jZSBvZiAnPGVtPlJhdGU8L2VtPicuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIFRoaXMgaW1wbGVtZW50YXRpb24gcmV0dXJucyBudWxsOw0KKwkgKiByZXR1cm5pbmcgYSBub24tbnVsbCByZXN1bHQgd2lsbCB0ZXJtaW5hdGUgdGhlIHN3aXRjaC4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBwYXJhbSBvYmplY3QgdGhlIHRhcmdldCBvZiB0aGUgc3dpdGNoLg0KKwkgKiBAcmV0dXJuIHRoZSByZXN1bHQgb2YgaW50ZXJwcmV0aW5nIHRoZSBvYmplY3QgYXMgYW4gaW5zdGFuY2Ugb2YgJzxlbT5SYXRlPC9lbT4nLg0KKwkgKiBAc2VlICNkb1N3aXRjaChvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRU9iamVjdCkgZG9Td2l0Y2goRU9iamVjdCkNCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIFQgY2FzZVJhdGUoUmF0ZSBvYmplY3QpIHsNCisJCXJldHVybiBudWxsOw0KKwl9DQorDQorCS8qKg0KKwkgKiBSZXR1cm5zIHRoZSByZXN1bHQgb2YgaW50ZXJwcmV0aW5nIHRoZSBvYmplY3QgYXMgYW4gaW5zdGFuY2Ugb2YgJzxlbT5ObyBCdWZmZXI8L2VtPicuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIFRoaXMgaW1wbGVtZW50YXRpb24gcmV0dXJucyBudWxsOw0KKwkgKiByZXR1cm5pbmcgYSBub24tbnVsbCByZXN1bHQgd2lsbCB0ZXJtaW5hdGUgdGhlIHN3aXRjaC4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBwYXJhbSBvYmplY3QgdGhlIHRhcmdldCBvZiB0aGUgc3dpdGNoLg0KKwkgKiBAcmV0dXJuIHRoZSByZXN1bHQgb2YgaW50ZXJwcmV0aW5nIHRoZSBvYmplY3QgYXMgYW4gaW5zdGFuY2Ugb2YgJzxlbT5ObyBCdWZmZXI8L2VtPicuDQorCSAqIEBzZWUgI2RvU3dpdGNoKG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FT2JqZWN0KSBkb1N3aXRjaChFT2JqZWN0KQ0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgVCBjYXNlTm9CdWZmZXIoTm9CdWZmZXIgb2JqZWN0KSB7DQorCQlyZXR1cm4gbnVsbDsNCisJfQ0KKw0KKwkvKioNCisJICogUmV0dXJucyB0aGUgcmVzdWx0IG9mIGludGVycHJldGluZyB0aGUgb2JqZWN0IGFzIGFuIGluc3RhbmNlIG9mICc8ZW0+RGlzY3JldGU8L2VtPicuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIFRoaXMgaW1wbGVtZW50YXRpb24gcmV0dXJucyBudWxsOw0KKwkgKiByZXR1cm5pbmcgYSBub24tbnVsbCByZXN1bHQgd2lsbCB0ZXJtaW5hdGUgdGhlIHN3aXRjaC4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBwYXJhbSBvYmplY3QgdGhlIHRhcmdldCBvZiB0aGUgc3dpdGNoLg0KKwkgKiBAcmV0dXJuIHRoZSByZXN1bHQgb2YgaW50ZXJwcmV0aW5nIHRoZSBvYmplY3QgYXMgYW4gaW5zdGFuY2Ugb2YgJzxlbT5EaXNjcmV0ZTwvZW0+Jy4NCisJICogQHNlZSAjZG9Td2l0Y2gob3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVPYmplY3QpIGRvU3dpdGNoKEVPYmplY3QpDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBUIGNhc2VEaXNjcmV0ZShEaXNjcmV0ZSBvYmplY3QpIHsNCisJCXJldHVybiBudWxsOw0KKwl9DQorDQorCS8qKg0KKwkgKiBSZXR1cm5zIHRoZSByZXN1bHQgb2YgaW50ZXJwcmV0aW5nIHRoZSBvYmplY3QgYXMgYW4gaW5zdGFuY2Ugb2YgJzxlbT5Db250aW51b3VzPC9lbT4nLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiBUaGlzIGltcGxlbWVudGF0aW9uIHJldHVybnMgbnVsbDsNCisJICogcmV0dXJuaW5nIGEgbm9uLW51bGwgcmVzdWx0IHdpbGwgdGVybWluYXRlIHRoZSBzd2l0Y2guDQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAcGFyYW0gb2JqZWN0IHRoZSB0YXJnZXQgb2YgdGhlIHN3aXRjaC4NCisJICogQHJldHVybiB0aGUgcmVzdWx0IG9mIGludGVycHJldGluZyB0aGUgb2JqZWN0IGFzIGFuIGluc3RhbmNlIG9mICc8ZW0+Q29udGludW91czwvZW0+Jy4NCisJICogQHNlZSAjZG9Td2l0Y2gob3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVPYmplY3QpIGRvU3dpdGNoKEVPYmplY3QpDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBUIGNhc2VDb250aW51b3VzKENvbnRpbnVvdXMgb2JqZWN0KSB7DQorCQlyZXR1cm4gbnVsbDsNCisJfQ0KKw0KKwkvKioNCisJICogUmV0dXJucyB0aGUgcmVzdWx0IG9mIGludGVycHJldGluZyB0aGUgb2JqZWN0IGFzIGFuIGluc3RhbmNlIG9mICc8ZW0+UHJvYmFiaWxpdHk8L2VtPicuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIFRoaXMgaW1wbGVtZW50YXRpb24gcmV0dXJucyBudWxsOw0KKwkgKiByZXR1cm5pbmcgYSBub24tbnVsbCByZXN1bHQgd2lsbCB0ZXJtaW5hdGUgdGhlIHN3aXRjaC4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBwYXJhbSBvYmplY3QgdGhlIHRhcmdldCBvZiB0aGUgc3dpdGNoLg0KKwkgKiBAcmV0dXJuIHRoZSByZXN1bHQgb2YgaW50ZXJwcmV0aW5nIHRoZSBvYmplY3QgYXMgYW4gaW5zdGFuY2Ugb2YgJzxlbT5Qcm9iYWJpbGl0eTwvZW0+Jy4NCisJICogQHNlZSAjZG9Td2l0Y2gob3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVPYmplY3QpIGRvU3dpdGNoKEVPYmplY3QpDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBUIGNhc2VQcm9iYWJpbGl0eShQcm9iYWJpbGl0eSBvYmplY3QpIHsNCisJCXJldHVybiBudWxsOw0KKwl9DQorDQorCS8qKg0KKwkgKiBSZXR1cm5zIHRoZSByZXN1bHQgb2YgaW50ZXJwcmV0aW5nIHRoZSBvYmplY3QgYXMgYW4gaW5zdGFuY2Ugb2YgJzxlbT5PcHRpb25hbDwvZW0+Jy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogVGhpcyBpbXBsZW1lbnRhdGlvbiByZXR1cm5zIG51bGw7DQorCSAqIHJldHVybmluZyBhIG5vbi1udWxsIHJlc3VsdCB3aWxsIHRlcm1pbmF0ZSB0aGUgc3dpdGNoLg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHBhcmFtIG9iamVjdCB0aGUgdGFyZ2V0IG9mIHRoZSBzd2l0Y2guDQorCSAqIEByZXR1cm4gdGhlIHJlc3VsdCBvZiBpbnRlcnByZXRpbmcgdGhlIG9iamVjdCBhcyBhbiBpbnN0YW5jZSBvZiAnPGVtPk9wdGlvbmFsPC9lbT4nLg0KKwkgKiBAc2VlICNkb1N3aXRjaChvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRU9iamVjdCkgZG9Td2l0Y2goRU9iamVjdCkNCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIFQgY2FzZU9wdGlvbmFsKE9wdGlvbmFsIG9iamVjdCkgew0KKwkJcmV0dXJuIG51bGw7DQorCX0NCisNCisJLyoqDQorCSAqIFJldHVybnMgdGhlIHJlc3VsdCBvZiBpbnRlcnByZXRpbmcgdGhlIG9iamVjdCBhcyBhbiBpbnN0YW5jZSBvZiAnPGVtPkVPYmplY3Q8L2VtPicuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIFRoaXMgaW1wbGVtZW50YXRpb24gcmV0dXJucyBudWxsOw0KKwkgKiByZXR1cm5pbmcgYSBub24tbnVsbCByZXN1bHQgd2lsbCB0ZXJtaW5hdGUgdGhlIHN3aXRjaCwgYnV0IHRoaXMgaXMgdGhlIGxhc3QgY2FzZSBhbnl3YXkuDQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAcGFyYW0gb2JqZWN0IHRoZSB0YXJnZXQgb2YgdGhlIHN3aXRjaC4NCisJICogQHJldHVybiB0aGUgcmVzdWx0IG9mIGludGVycHJldGluZyB0aGUgb2JqZWN0IGFzIGFuIGluc3RhbmNlIG9mICc8ZW0+RU9iamVjdDwvZW0+Jy4NCisJICogQHNlZSAjZG9Td2l0Y2gob3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVPYmplY3QpDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgVCBkZWZhdWx0Q2FzZShFT2JqZWN0IG9iamVjdCkgew0KKwkJcmV0dXJuIG51bGw7DQorCX0NCisNCit9IC8vQWN0aXZpdGllc1N3aXRjaA0KZGlmZiAtLWdpdCBhL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L2FsbG9jYXRpb25zL0FsbG9jYXRlLmphdmEgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9hbGxvY2F0aW9ucy9BbGxvY2F0ZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI2ZTI2NDcKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9hbGxvY2F0aW9ucy9BbGxvY2F0ZS5qYXZhCkBAIC0wLDAgKzEsODEgQEAKKy8qKg0KKyAqIENvcHlyaWdodCAoYykgMjAxNSBDRUEgTElTVC4NCisgKiANCisgKiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KKyAqICBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCisgKiAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCisgKiAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgKi8NCitwYWNrYWdlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5hbGxvY2F0aW9uczsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi51dGlsLkVMaXN0Ow0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYmxvY2tzLkRpcmVjdGVkUmVsYXRpb25zaGlwUHJvcGVydHlQYXRoOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS51bWwyLnVtbC5BYnN0cmFjdGlvbjsNCitpbXBvcnQgb3JnLmVjbGlwc2UudW1sMi51bWwuTmFtZWRFbGVtZW50Ow0KKw0KKy8qKg0KKyAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorICogQSByZXByZXNlbnRhdGlvbiBvZiB0aGUgbW9kZWwgb2JqZWN0ICc8ZW0+PGI+QWxsb2NhdGU8L2I+PC9lbT4nLg0KKyAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKyAqDQorICogPCEtLSBiZWdpbi1tb2RlbC1kb2MgLS0+DQorICogQWxsb2NhdGUgaXMgYSBkZXBlbmRlbmN5IGJhc2VkIG9uIFVNTDo6YWJzdHJhY3Rpb24uIEl0IGlzIGEgbWVjaGFuaXNtIGZvciBhc3NvY2lhdGluZyBlbGVtZW50cyBvZiBkaWZmZXJlbnQgdHlwZXMsIG9yIGluIGRpZmZlcmVudCBoaWVyYXJjaGllcywgYXQgYW4gYWJzdHJhY3QgbGV2ZWwuIEFsbG9jYXRlIGlzIHVzZWQgZm9yIGFzc2Vzc2luZyB1c2VyIG1vZGVsIGNvbnNpc3RlbmN5IGFuZCBkaXJlY3RpbmcgZnV0dXJlIGRlc2lnbiBhY3Rpdml0eS4gSXQgaXMgZXhwZWN0ZWQgdGhhdCBhbiCrYWxsb2NhdGW7IHJlbGF0aW9uc2hpcCBiZXR3ZWVuIG1vZGVsIGVsZW1lbnRzIGlzIGEgcHJlY3Vyc29yIHRvIGEgbW9yZSBjb25jcmV0ZSByZWxhdGlvbnNoaXAgYmV0d2VlbiB0aGUgZWxlbWVudHMsIHRoZWlyIHByb3BlcnRpZXMsIG9wZXJhdGlvbnMsIGF0dHJpYnV0ZXMsIG9yIHN1Yi1jbGFzc2VzLg0KKyAqIDwhLS0gZW5kLW1vZGVsLWRvYyAtLT4NCisgKg0KKyAqIDxwPg0KKyAqIFRoZSBmb2xsb3dpbmcgZmVhdHVyZXMgYXJlIHN1cHBvcnRlZDoNCisgKiA8dWw+DQorICogICA8bGk+e0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5hbGxvY2F0aW9ucy5BbGxvY2F0ZSNnZXRCYXNlX0Fic3RyYWN0aW9uIDxlbT5CYXNlIEFic3RyYWN0aW9uPC9lbT59PC9saT4NCisgKiA8L3VsPg0KKyAqIDwvcD4NCisgKg0KKyAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmFsbG9jYXRpb25zLkFsbG9jYXRpb25zUGFja2FnZSNnZXRBbGxvY2F0ZSgpDQorICogQG1vZGVsDQorICogQGdlbmVyYXRlZA0KKyAqLw0KK3B1YmxpYyBpbnRlcmZhY2UgQWxsb2NhdGUgZXh0ZW5kcyBEaXJlY3RlZFJlbGF0aW9uc2hpcFByb3BlcnR5UGF0aCB7DQorCS8qKg0KKwkgKiBSZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT48Yj5CYXNlIEFic3RyYWN0aW9uPC9iPjwvZW0+JyByZWZlcmVuY2UuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDxwPg0KKwkgKiBJZiB0aGUgbWVhbmluZyBvZiB0aGUgJzxlbT5CYXNlIEFic3RyYWN0aW9uPC9lbT4nIHJlZmVyZW5jZSBpc24ndCBjbGVhciwNCisJICogdGhlcmUgcmVhbGx5IHNob3VsZCBiZSBtb3JlIG9mIGEgZGVzY3JpcHRpb24gaGVyZS4uLg0KKwkgKiA8L3A+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAcmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT5CYXNlIEFic3RyYWN0aW9uPC9lbT4nIHJlZmVyZW5jZS4NCisJICogQHNlZSAjc2V0QmFzZV9BYnN0cmFjdGlvbihBYnN0cmFjdGlvbikNCisJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYWxsb2NhdGlvbnMuQWxsb2NhdGlvbnNQYWNrYWdlI2dldEFsbG9jYXRlX0Jhc2VfQWJzdHJhY3Rpb24oKQ0KKwkgKiBAbW9kZWwgb3JkZXJlZD0iZmFsc2UiDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUFic3RyYWN0aW9uIGdldEJhc2VfQWJzdHJhY3Rpb24oKTsNCisNCisJLyoqDQorCSAqIFNldHMgdGhlIHZhbHVlIG9mIHRoZSAne0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5hbGxvY2F0aW9ucy5BbGxvY2F0ZSNnZXRCYXNlX0Fic3RyYWN0aW9uIDxlbT5CYXNlIEFic3RyYWN0aW9uPC9lbT59JyByZWZlcmVuY2UuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAcGFyYW0gdmFsdWUgdGhlIG5ldyB2YWx1ZSBvZiB0aGUgJzxlbT5CYXNlIEFic3RyYWN0aW9uPC9lbT4nIHJlZmVyZW5jZS4NCisJICogQHNlZSAjZ2V0QmFzZV9BYnN0cmFjdGlvbigpDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXZvaWQgc2V0QmFzZV9BYnN0cmFjdGlvbihBYnN0cmFjdGlvbiB2YWx1ZSk7DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQG1vZGVsIHJlcXVpcmVkPSJ0cnVlIiBvcmRlcmVkPSJmYWxzZSIgcmVmUmVxdWlyZWQ9InRydWUiIHJlZk9yZGVyZWQ9ImZhbHNlIg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlFTGlzdDxOYW1lZEVsZW1lbnQ+IGdldEFsbG9jYXRlZEZyb20oTmFtZWRFbGVtZW50IHJlZik7DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQG1vZGVsIHJlcXVpcmVkPSJ0cnVlIiBvcmRlcmVkPSJmYWxzZSIgcmVmUmVxdWlyZWQ9InRydWUiIHJlZk9yZGVyZWQ9ImZhbHNlIg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlFTGlzdDxOYW1lZEVsZW1lbnQ+IGdldEFsbG9jYXRlZFRvKE5hbWVkRWxlbWVudCByZWYpOw0KKw0KK30gLy8gQWxsb2NhdGUNCmRpZmYgLS1naXQgYS9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9hbGxvY2F0aW9ucy9BbGxvY2F0ZUFjdGl2aXR5UGFydGl0aW9uLmphdmEgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9hbGxvY2F0aW9ucy9BbGxvY2F0ZUFjdGl2aXR5UGFydGl0aW9uLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWM4YTk1MgotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L2FsbG9jYXRpb25zL0FsbG9jYXRlQWN0aXZpdHlQYXJ0aXRpb24uamF2YQpAQCAtMCwwICsxLDYyIEBACisvKioNCisgKiBDb3B5cmlnaHQgKGMpIDIwMTUgQ0VBIExJU1QuDQorICogDQorICogIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCisgKiAgYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQorICogIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQorICogIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICovDQorcGFja2FnZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYWxsb2NhdGlvbnM7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FT2JqZWN0Ow0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS51bWwyLnVtbC5BY3Rpdml0eVBhcnRpdGlvbjsNCisNCisvKioNCisgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKyAqIEEgcmVwcmVzZW50YXRpb24gb2YgdGhlIG1vZGVsIG9iamVjdCAnPGVtPjxiPkFsbG9jYXRlIEFjdGl2aXR5IFBhcnRpdGlvbjwvYj48L2VtPicuDQorICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorICoNCisgKiA8IS0tIGJlZ2luLW1vZGVsLWRvYyAtLT4NCisgKiBBbGxvY2F0ZUFjdGl2aXR5UGFydGl0aW9uIGlzIHVzZWQgdG8gZGVwaWN0IGFuIKthbGxvY2F0ZbsgcmVsYXRpb25zaGlwIG9uIGFuIEFjdGl2aXR5IGRpYWdyYW0uIFRoZSBBbGxvY2F0ZUFjdGl2aXR5UGFydGl0aW9uIGlzIGEgc3RhbmRhcmQgVU1MMjo6QWN0aXZpdHlQYXJ0aXRpb24sIHdpdGggbW9kaWZpZWQgY29uc3RyYWludHMgYXMgc3RhdGVkIGluIHRoZSBwYXJhZ3JhcGggYmVsb3cuDQorICogPCEtLSBlbmQtbW9kZWwtZG9jIC0tPg0KKyAqDQorICogPHA+DQorICogVGhlIGZvbGxvd2luZyBmZWF0dXJlcyBhcmUgc3VwcG9ydGVkOg0KKyAqIDx1bD4NCisgKiAgIDxsaT57QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmFsbG9jYXRpb25zLkFsbG9jYXRlQWN0aXZpdHlQYXJ0aXRpb24jZ2V0QmFzZV9BY3Rpdml0eVBhcnRpdGlvbiA8ZW0+QmFzZSBBY3Rpdml0eSBQYXJ0aXRpb248L2VtPn08L2xpPg0KKyAqIDwvdWw+DQorICogPC9wPg0KKyAqDQorICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYWxsb2NhdGlvbnMuQWxsb2NhdGlvbnNQYWNrYWdlI2dldEFsbG9jYXRlQWN0aXZpdHlQYXJ0aXRpb24oKQ0KKyAqIEBtb2RlbA0KKyAqIEBnZW5lcmF0ZWQNCisgKi8NCitwdWJsaWMgaW50ZXJmYWNlIEFsbG9jYXRlQWN0aXZpdHlQYXJ0aXRpb24gZXh0ZW5kcyBFT2JqZWN0IHsNCisJLyoqDQorCSAqIFJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSAnPGVtPjxiPkJhc2UgQWN0aXZpdHkgUGFydGl0aW9uPC9iPjwvZW0+JyByZWZlcmVuY2UuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDxwPg0KKwkgKiBJZiB0aGUgbWVhbmluZyBvZiB0aGUgJzxlbT5CYXNlIEFjdGl2aXR5IFBhcnRpdGlvbjwvZW0+JyByZWZlcmVuY2UgaXNuJ3QgY2xlYXIsDQorCSAqIHRoZXJlIHJlYWxseSBzaG91bGQgYmUgbW9yZSBvZiBhIGRlc2NyaXB0aW9uIGhlcmUuLi4NCisJICogPC9wPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHJldHVybiB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+QmFzZSBBY3Rpdml0eSBQYXJ0aXRpb248L2VtPicgcmVmZXJlbmNlLg0KKwkgKiBAc2VlICNzZXRCYXNlX0FjdGl2aXR5UGFydGl0aW9uKEFjdGl2aXR5UGFydGl0aW9uKQ0KKwkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5hbGxvY2F0aW9ucy5BbGxvY2F0aW9uc1BhY2thZ2UjZ2V0QWxsb2NhdGVBY3Rpdml0eVBhcnRpdGlvbl9CYXNlX0FjdGl2aXR5UGFydGl0aW9uKCkNCisJICogQG1vZGVsIG9yZGVyZWQ9ImZhbHNlIg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlBY3Rpdml0eVBhcnRpdGlvbiBnZXRCYXNlX0FjdGl2aXR5UGFydGl0aW9uKCk7DQorDQorCS8qKg0KKwkgKiBTZXRzIHRoZSB2YWx1ZSBvZiB0aGUgJ3tAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYWxsb2NhdGlvbnMuQWxsb2NhdGVBY3Rpdml0eVBhcnRpdGlvbiNnZXRCYXNlX0FjdGl2aXR5UGFydGl0aW9uIDxlbT5CYXNlIEFjdGl2aXR5IFBhcnRpdGlvbjwvZW0+fScgcmVmZXJlbmNlLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHBhcmFtIHZhbHVlIHRoZSBuZXcgdmFsdWUgb2YgdGhlICc8ZW0+QmFzZSBBY3Rpdml0eSBQYXJ0aXRpb248L2VtPicgcmVmZXJlbmNlLg0KKwkgKiBAc2VlICNnZXRCYXNlX0FjdGl2aXR5UGFydGl0aW9uKCkNCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJdm9pZCBzZXRCYXNlX0FjdGl2aXR5UGFydGl0aW9uKEFjdGl2aXR5UGFydGl0aW9uIHZhbHVlKTsNCisNCit9IC8vIEFsbG9jYXRlQWN0aXZpdHlQYXJ0aXRpb24NCmRpZmYgLS1naXQgYS9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9hbGxvY2F0aW9ucy9BbGxvY2F0aW9uc0ZhY3RvcnkuamF2YSBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L2FsbG9jYXRpb25zL0FsbG9jYXRpb25zRmFjdG9yeS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQwNWY4YzAKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9hbGxvY2F0aW9ucy9BbGxvY2F0aW9uc0ZhY3RvcnkuamF2YQpAQCAtMCwwICsxLDU3IEBACisvKioNCisgKiBDb3B5cmlnaHQgKGMpIDIwMTUgQ0VBIExJU1QuDQorICogDQorICogIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCisgKiAgYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQorICogIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQorICogIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICovDQorcGFja2FnZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYWxsb2NhdGlvbnM7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FRmFjdG9yeTsNCisNCisvKioNCisgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKyAqIFRoZSA8Yj5GYWN0b3J5PC9iPiBmb3IgdGhlIG1vZGVsLg0KKyAqIEl0IHByb3ZpZGVzIGEgY3JlYXRlIG1ldGhvZCBmb3IgZWFjaCBub24tYWJzdHJhY3QgY2xhc3Mgb2YgdGhlIG1vZGVsLg0KKyAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKyAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmFsbG9jYXRpb25zLkFsbG9jYXRpb25zUGFja2FnZQ0KKyAqIEBnZW5lcmF0ZWQNCisgKi8NCitwdWJsaWMgaW50ZXJmYWNlIEFsbG9jYXRpb25zRmFjdG9yeSBleHRlbmRzIEVGYWN0b3J5IHsNCisJLyoqDQorCSAqIFRoZSBzaW5nbGV0b24gaW5zdGFuY2Ugb2YgdGhlIGZhY3RvcnkuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlBbGxvY2F0aW9uc0ZhY3RvcnkgZUlOU1RBTkNFID0gb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmFsbG9jYXRpb25zLmludGVybmFsLmltcGwuQWxsb2NhdGlvbnNGYWN0b3J5SW1wbC5pbml0KCk7DQorDQorCS8qKg0KKwkgKiBSZXR1cm5zIGEgbmV3IG9iamVjdCBvZiBjbGFzcyAnPGVtPkFsbG9jYXRlIEFjdGl2aXR5IFBhcnRpdGlvbjwvZW0+Jy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEByZXR1cm4gYSBuZXcgb2JqZWN0IG9mIGNsYXNzICc8ZW0+QWxsb2NhdGUgQWN0aXZpdHkgUGFydGl0aW9uPC9lbT4nLg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlBbGxvY2F0ZUFjdGl2aXR5UGFydGl0aW9uIGNyZWF0ZUFsbG9jYXRlQWN0aXZpdHlQYXJ0aXRpb24oKTsNCisNCisJLyoqDQorCSAqIFJldHVybnMgYSBuZXcgb2JqZWN0IG9mIGNsYXNzICc8ZW0+QWxsb2NhdGU8L2VtPicuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAcmV0dXJuIGEgbmV3IG9iamVjdCBvZiBjbGFzcyAnPGVtPkFsbG9jYXRlPC9lbT4nLg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlBbGxvY2F0ZSBjcmVhdGVBbGxvY2F0ZSgpOw0KKw0KKwkvKioNCisJICogUmV0dXJucyB0aGUgcGFja2FnZSBzdXBwb3J0ZWQgYnkgdGhpcyBmYWN0b3J5Lg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHJldHVybiB0aGUgcGFja2FnZSBzdXBwb3J0ZWQgYnkgdGhpcyBmYWN0b3J5Lg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlBbGxvY2F0aW9uc1BhY2thZ2UgZ2V0QWxsb2NhdGlvbnNQYWNrYWdlKCk7DQorDQorfSAvL0FsbG9jYXRpb25zRmFjdG9yeQ0KZGlmZiAtLWdpdCBhL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L2FsbG9jYXRpb25zL0FsbG9jYXRpb25zUGFja2FnZS5qYXZhIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvYWxsb2NhdGlvbnMvQWxsb2NhdGlvbnNQYWNrYWdlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjViMmYwYQotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L2FsbG9jYXRpb25zL0FsbG9jYXRpb25zUGFja2FnZS5qYXZhCkBAIC0wLDAgKzEsMzQ1IEBACisvKioNCisgKiBDb3B5cmlnaHQgKGMpIDIwMTUgQ0VBIExJU1QuDQorICogDQorICogIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCisgKiAgYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQorICogIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQorICogIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICovDQorcGFja2FnZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYWxsb2NhdGlvbnM7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FQ2xhc3M7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FT3BlcmF0aW9uOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRVBhY2thZ2U7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FUmVmZXJlbmNlOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYmxvY2tzLkJsb2Nrc1BhY2thZ2U7DQorDQorLyoqDQorICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisgKiBUaGUgPGI+UGFja2FnZTwvYj4gZm9yIHRoZSBtb2RlbC4NCisgKiBJdCBjb250YWlucyBhY2Nlc3NvcnMgZm9yIHRoZSBtZXRhIG9iamVjdHMgdG8gcmVwcmVzZW50DQorICogPHVsPg0KKyAqICAgPGxpPmVhY2ggY2xhc3MsPC9saT4NCisgKiAgIDxsaT5lYWNoIGZlYXR1cmUgb2YgZWFjaCBjbGFzcyw8L2xpPg0KKyAqICAgPGxpPmVhY2ggb3BlcmF0aW9uIG9mIGVhY2ggY2xhc3MsPC9saT4NCisgKiAgIDxsaT5lYWNoIGVudW0sPC9saT4NCisgKiAgIDxsaT5hbmQgZWFjaCBkYXRhIHR5cGU8L2xpPg0KKyAqIDwvdWw+DQorICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYWxsb2NhdGlvbnMuQWxsb2NhdGlvbnNGYWN0b3J5DQorICogQG1vZGVsIGtpbmQ9InBhY2thZ2UiDQorICogICAgICAgIGFubm90YXRpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvdW1sMi8yLjAuMC9VTUwgb3JpZ2luYWxOYW1lPSdBbGxvY2F0aW9ucyciDQorICogQGdlbmVyYXRlZA0KKyAqLw0KK3B1YmxpYyBpbnRlcmZhY2UgQWxsb2NhdGlvbnNQYWNrYWdlIGV4dGVuZHMgRVBhY2thZ2Ugew0KKwkvKioNCisJICogVGhlIHBhY2thZ2UgbmFtZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCVN0cmluZyBlTkFNRSA9ICJhbGxvY2F0aW9ucyI7IC8vJE5PTi1OTFMtMSQNCisNCisJLyoqDQorCSAqIFRoZSBwYWNrYWdlIG5hbWVzcGFjZSBVUkkuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlTdHJpbmcgZU5TX1VSSSA9ICJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3BhcHlydXMvMS40L1N5c01ML0FsbG9jYXRpb25zIjsgLy8kTk9OLU5MUy0xJA0KKw0KKwkvKioNCisJICogVGhlIHBhY2thZ2UgbmFtZXNwYWNlIG5hbWUuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlTdHJpbmcgZU5TX1BSRUZJWCA9ICJBbGxvY2F0aW9ucyI7IC8vJE5PTi1OTFMtMSQNCisNCisJLyoqDQorCSAqIFRoZSBzaW5nbGV0b24gaW5zdGFuY2Ugb2YgdGhlIHBhY2thZ2UuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlBbGxvY2F0aW9uc1BhY2thZ2UgZUlOU1RBTkNFID0gb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmFsbG9jYXRpb25zLmludGVybmFsLmltcGwuQWxsb2NhdGlvbnNQYWNrYWdlSW1wbC5pbml0KCk7DQorDQorCS8qKg0KKwkgKiBUaGUgbWV0YSBvYmplY3QgaWQgZm9yIHRoZSAne0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5hbGxvY2F0aW9ucy5pbnRlcm5hbC5pbXBsLkFsbG9jYXRlQWN0aXZpdHlQYXJ0aXRpb25JbXBsIDxlbT5BbGxvY2F0ZSBBY3Rpdml0eSBQYXJ0aXRpb248L2VtPn0nIGNsYXNzLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYWxsb2NhdGlvbnMuaW50ZXJuYWwuaW1wbC5BbGxvY2F0ZUFjdGl2aXR5UGFydGl0aW9uSW1wbA0KKwkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5hbGxvY2F0aW9ucy5pbnRlcm5hbC5pbXBsLkFsbG9jYXRpb25zUGFja2FnZUltcGwjZ2V0QWxsb2NhdGVBY3Rpdml0eVBhcnRpdGlvbigpDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCWludCBBTExPQ0FURV9BQ1RJVklUWV9QQVJUSVRJT04gPSAwOw0KKw0KKwkvKioNCisJICogVGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkJhc2UgQWN0aXZpdHkgUGFydGl0aW9uPC9iPjwvZW0+JyByZWZlcmVuY2UuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqIEBvcmRlcmVkDQorCSAqLw0KKwlpbnQgQUxMT0NBVEVfQUNUSVZJVFlfUEFSVElUSU9OX19CQVNFX0FDVElWSVRZX1BBUlRJVElPTiA9IDA7DQorDQorCS8qKg0KKwkgKiBUaGUgbnVtYmVyIG9mIHN0cnVjdHVyYWwgZmVhdHVyZXMgb2YgdGhlICc8ZW0+QWxsb2NhdGUgQWN0aXZpdHkgUGFydGl0aW9uPC9lbT4nIGNsYXNzLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKiBAb3JkZXJlZA0KKwkgKi8NCisJaW50IEFMTE9DQVRFX0FDVElWSVRZX1BBUlRJVElPTl9GRUFUVVJFX0NPVU5UID0gMTsNCisNCisJLyoqDQorCSAqIFRoZSBudW1iZXIgb2Ygb3BlcmF0aW9ucyBvZiB0aGUgJzxlbT5BbGxvY2F0ZSBBY3Rpdml0eSBQYXJ0aXRpb248L2VtPicgY2xhc3MuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqIEBvcmRlcmVkDQorCSAqLw0KKwlpbnQgQUxMT0NBVEVfQUNUSVZJVFlfUEFSVElUSU9OX09QRVJBVElPTl9DT1VOVCA9IDA7DQorDQorCS8qKg0KKwkgKiBUaGUgbWV0YSBvYmplY3QgaWQgZm9yIHRoZSAne0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5hbGxvY2F0aW9ucy5pbnRlcm5hbC5pbXBsLkFsbG9jYXRlSW1wbCA8ZW0+QWxsb2NhdGU8L2VtPn0nIGNsYXNzLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYWxsb2NhdGlvbnMuaW50ZXJuYWwuaW1wbC5BbGxvY2F0ZUltcGwNCisJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYWxsb2NhdGlvbnMuaW50ZXJuYWwuaW1wbC5BbGxvY2F0aW9uc1BhY2thZ2VJbXBsI2dldEFsbG9jYXRlKCkNCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJaW50IEFMTE9DQVRFID0gMTsNCisNCisJLyoqDQorCSAqIFRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5CYXNlIERpcmVjdGVkIFJlbGF0aW9uc2hpcDwvYj48L2VtPicgcmVmZXJlbmNlLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKiBAb3JkZXJlZA0KKwkgKi8NCisJaW50IEFMTE9DQVRFX19CQVNFX0RJUkVDVEVEX1JFTEFUSU9OU0hJUCA9IEJsb2Nrc1BhY2thZ2UuRElSRUNURURfUkVMQVRJT05TSElQX1BST1BFUlRZX1BBVEhfX0JBU0VfRElSRUNURURfUkVMQVRJT05TSElQOw0KKw0KKwkvKioNCisJICogVGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPlNvdXJjZSBQcm9wZXJ0eSBQYXRoPC9iPjwvZW0+JyByZWZlcmVuY2UgbGlzdC4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICogQG9yZGVyZWQNCisJICovDQorCWludCBBTExPQ0FURV9fU09VUkNFX1BST1BFUlRZX1BBVEggPSBCbG9ja3NQYWNrYWdlLkRJUkVDVEVEX1JFTEFUSU9OU0hJUF9QUk9QRVJUWV9QQVRIX19TT1VSQ0VfUFJPUEVSVFlfUEFUSDsNCisNCisJLyoqDQorCSAqIFRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5UYXJnZXQgUHJvcGVydHkgUGF0aDwvYj48L2VtPicgcmVmZXJlbmNlIGxpc3QuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqIEBvcmRlcmVkDQorCSAqLw0KKwlpbnQgQUxMT0NBVEVfX1RBUkdFVF9QUk9QRVJUWV9QQVRIID0gQmxvY2tzUGFja2FnZS5ESVJFQ1RFRF9SRUxBVElPTlNISVBfUFJPUEVSVFlfUEFUSF9fVEFSR0VUX1BST1BFUlRZX1BBVEg7DQorDQorCS8qKg0KKwkgKiBUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+U291cmNlIENvbnRleHQ8L2I+PC9lbT4nIHJlZmVyZW5jZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICogQG9yZGVyZWQNCisJICovDQorCWludCBBTExPQ0FURV9fU09VUkNFX0NPTlRFWFQgPSBCbG9ja3NQYWNrYWdlLkRJUkVDVEVEX1JFTEFUSU9OU0hJUF9QUk9QRVJUWV9QQVRIX19TT1VSQ0VfQ09OVEVYVDsNCisNCisJLyoqDQorCSAqIFRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5UYXJnZXQgQ29udGV4dDwvYj48L2VtPicgcmVmZXJlbmNlLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKiBAb3JkZXJlZA0KKwkgKi8NCisJaW50IEFMTE9DQVRFX19UQVJHRVRfQ09OVEVYVCA9IEJsb2Nrc1BhY2thZ2UuRElSRUNURURfUkVMQVRJT05TSElQX1BST1BFUlRZX1BBVEhfX1RBUkdFVF9DT05URVhUOw0KKw0KKwkvKioNCisJICogVGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkJhc2UgQWJzdHJhY3Rpb248L2I+PC9lbT4nIHJlZmVyZW5jZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICogQG9yZGVyZWQNCisJICovDQorCWludCBBTExPQ0FURV9fQkFTRV9BQlNUUkFDVElPTiA9IEJsb2Nrc1BhY2thZ2UuRElSRUNURURfUkVMQVRJT05TSElQX1BST1BFUlRZX1BBVEhfRkVBVFVSRV9DT1VOVCArIDA7DQorDQorCS8qKg0KKwkgKiBUaGUgbnVtYmVyIG9mIHN0cnVjdHVyYWwgZmVhdHVyZXMgb2YgdGhlICc8ZW0+QWxsb2NhdGU8L2VtPicgY2xhc3MuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqIEBvcmRlcmVkDQorCSAqLw0KKwlpbnQgQUxMT0NBVEVfRkVBVFVSRV9DT1VOVCA9IEJsb2Nrc1BhY2thZ2UuRElSRUNURURfUkVMQVRJT05TSElQX1BST1BFUlRZX1BBVEhfRkVBVFVSRV9DT1VOVCArIDE7DQorDQorCS8qKg0KKwkgKiBUaGUgb3BlcmF0aW9uIGlkIGZvciB0aGUgJzxlbT5HZXQgQWxsb2NhdGVkIEZyb208L2VtPicgb3BlcmF0aW9uLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKiBAb3JkZXJlZA0KKwkgKi8NCisJaW50IEFMTE9DQVRFX19fR0VUX0FMTE9DQVRFRF9GUk9NX19OQU1FREVMRU1FTlQgPSBCbG9ja3NQYWNrYWdlLkRJUkVDVEVEX1JFTEFUSU9OU0hJUF9QUk9QRVJUWV9QQVRIX09QRVJBVElPTl9DT1VOVCArIDA7DQorDQorCS8qKg0KKwkgKiBUaGUgb3BlcmF0aW9uIGlkIGZvciB0aGUgJzxlbT5HZXQgQWxsb2NhdGVkIFRvPC9lbT4nIG9wZXJhdGlvbi4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICogQG9yZGVyZWQNCisJICovDQorCWludCBBTExPQ0FURV9fX0dFVF9BTExPQ0FURURfVE9fX05BTUVERUxFTUVOVCA9IEJsb2Nrc1BhY2thZ2UuRElSRUNURURfUkVMQVRJT05TSElQX1BST1BFUlRZX1BBVEhfT1BFUkFUSU9OX0NPVU5UICsgMTsNCisNCisJLyoqDQorCSAqIFRoZSBudW1iZXIgb2Ygb3BlcmF0aW9ucyBvZiB0aGUgJzxlbT5BbGxvY2F0ZTwvZW0+JyBjbGFzcy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICogQG9yZGVyZWQNCisJICovDQorCWludCBBTExPQ0FURV9PUEVSQVRJT05fQ09VTlQgPSBCbG9ja3NQYWNrYWdlLkRJUkVDVEVEX1JFTEFUSU9OU0hJUF9QUk9QRVJUWV9QQVRIX09QRVJBVElPTl9DT1VOVCArIDI7DQorDQorDQorCS8qKg0KKwkgKiBSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJ3tAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYWxsb2NhdGlvbnMuQWxsb2NhdGVBY3Rpdml0eVBhcnRpdGlvbiA8ZW0+QWxsb2NhdGUgQWN0aXZpdHkgUGFydGl0aW9uPC9lbT59Jy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEByZXR1cm4gdGhlIG1ldGEgb2JqZWN0IGZvciBjbGFzcyAnPGVtPkFsbG9jYXRlIEFjdGl2aXR5IFBhcnRpdGlvbjwvZW0+Jy4NCisJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYWxsb2NhdGlvbnMuQWxsb2NhdGVBY3Rpdml0eVBhcnRpdGlvbg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlFQ2xhc3MgZ2V0QWxsb2NhdGVBY3Rpdml0eVBhcnRpdGlvbigpOw0KKw0KKwkvKioNCisJICogUmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSByZWZlcmVuY2UgJ3tAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYWxsb2NhdGlvbnMuQWxsb2NhdGVBY3Rpdml0eVBhcnRpdGlvbiNnZXRCYXNlX0FjdGl2aXR5UGFydGl0aW9uIDxlbT5CYXNlIEFjdGl2aXR5IFBhcnRpdGlvbjwvZW0+fScuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAcmV0dXJuIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIHJlZmVyZW5jZSAnPGVtPkJhc2UgQWN0aXZpdHkgUGFydGl0aW9uPC9lbT4nLg0KKwkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5hbGxvY2F0aW9ucy5BbGxvY2F0ZUFjdGl2aXR5UGFydGl0aW9uI2dldEJhc2VfQWN0aXZpdHlQYXJ0aXRpb24oKQ0KKwkgKiBAc2VlICNnZXRBbGxvY2F0ZUFjdGl2aXR5UGFydGl0aW9uKCkNCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJRVJlZmVyZW5jZSBnZXRBbGxvY2F0ZUFjdGl2aXR5UGFydGl0aW9uX0Jhc2VfQWN0aXZpdHlQYXJ0aXRpb24oKTsNCisNCisJLyoqDQorCSAqIFJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciBjbGFzcyAne0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5hbGxvY2F0aW9ucy5BbGxvY2F0ZSA8ZW0+QWxsb2NhdGU8L2VtPn0nLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHJldHVybiB0aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICc8ZW0+QWxsb2NhdGU8L2VtPicuDQorCSAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmFsbG9jYXRpb25zLkFsbG9jYXRlDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUVDbGFzcyBnZXRBbGxvY2F0ZSgpOw0KKw0KKwkvKioNCisJICogUmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSByZWZlcmVuY2UgJ3tAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYWxsb2NhdGlvbnMuQWxsb2NhdGUjZ2V0QmFzZV9BYnN0cmFjdGlvbiA8ZW0+QmFzZSBBYnN0cmFjdGlvbjwvZW0+fScuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAcmV0dXJuIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIHJlZmVyZW5jZSAnPGVtPkJhc2UgQWJzdHJhY3Rpb248L2VtPicuDQorCSAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmFsbG9jYXRpb25zLkFsbG9jYXRlI2dldEJhc2VfQWJzdHJhY3Rpb24oKQ0KKwkgKiBAc2VlICNnZXRBbGxvY2F0ZSgpDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUVSZWZlcmVuY2UgZ2V0QWxsb2NhdGVfQmFzZV9BYnN0cmFjdGlvbigpOw0KKw0KKwkvKioNCisJICogUmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSAne0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5hbGxvY2F0aW9ucy5BbGxvY2F0ZSNnZXRBbGxvY2F0ZWRGcm9tKG9yZy5lY2xpcHNlLnVtbDIudW1sLk5hbWVkRWxlbWVudCkgPGVtPkdldCBBbGxvY2F0ZWQgRnJvbTwvZW0+fScgb3BlcmF0aW9uLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHJldHVybiB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSAnPGVtPkdldCBBbGxvY2F0ZWQgRnJvbTwvZW0+JyBvcGVyYXRpb24uDQorCSAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmFsbG9jYXRpb25zLkFsbG9jYXRlI2dldEFsbG9jYXRlZEZyb20ob3JnLmVjbGlwc2UudW1sMi51bWwuTmFtZWRFbGVtZW50KQ0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlFT3BlcmF0aW9uIGdldEFsbG9jYXRlX19HZXRBbGxvY2F0ZWRGcm9tX19OYW1lZEVsZW1lbnQoKTsNCisNCisJLyoqDQorCSAqIFJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgJ3tAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYWxsb2NhdGlvbnMuQWxsb2NhdGUjZ2V0QWxsb2NhdGVkVG8ob3JnLmVjbGlwc2UudW1sMi51bWwuTmFtZWRFbGVtZW50KSA8ZW0+R2V0IEFsbG9jYXRlZCBUbzwvZW0+fScgb3BlcmF0aW9uLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHJldHVybiB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSAnPGVtPkdldCBBbGxvY2F0ZWQgVG88L2VtPicgb3BlcmF0aW9uLg0KKwkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5hbGxvY2F0aW9ucy5BbGxvY2F0ZSNnZXRBbGxvY2F0ZWRUbyhvcmcuZWNsaXBzZS51bWwyLnVtbC5OYW1lZEVsZW1lbnQpDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUVPcGVyYXRpb24gZ2V0QWxsb2NhdGVfX0dldEFsbG9jYXRlZFRvX19OYW1lZEVsZW1lbnQoKTsNCisNCisJLyoqDQorCSAqIFJldHVybnMgdGhlIGZhY3RvcnkgdGhhdCBjcmVhdGVzIHRoZSBpbnN0YW5jZXMgb2YgdGhlIG1vZGVsLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHJldHVybiB0aGUgZmFjdG9yeSB0aGF0IGNyZWF0ZXMgdGhlIGluc3RhbmNlcyBvZiB0aGUgbW9kZWwuDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUFsbG9jYXRpb25zRmFjdG9yeSBnZXRBbGxvY2F0aW9uc0ZhY3RvcnkoKTsNCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIERlZmluZXMgbGl0ZXJhbHMgZm9yIHRoZSBtZXRhIG9iamVjdHMgdGhhdCByZXByZXNlbnQNCisJICogPHVsPg0KKwkgKiAgIDxsaT5lYWNoIGNsYXNzLDwvbGk+DQorCSAqICAgPGxpPmVhY2ggZmVhdHVyZSBvZiBlYWNoIGNsYXNzLDwvbGk+DQorCSAqICAgPGxpPmVhY2ggb3BlcmF0aW9uIG9mIGVhY2ggY2xhc3MsPC9saT4NCisJICogICA8bGk+ZWFjaCBlbnVtLDwvbGk+DQorCSAqICAgPGxpPmFuZCBlYWNoIGRhdGEgdHlwZTwvbGk+DQorCSAqIDwvdWw+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlpbnRlcmZhY2UgTGl0ZXJhbHMgew0KKwkJLyoqDQorCQkgKiBUaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICd7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmFsbG9jYXRpb25zLmludGVybmFsLmltcGwuQWxsb2NhdGVBY3Rpdml0eVBhcnRpdGlvbkltcGwgPGVtPkFsbG9jYXRlIEFjdGl2aXR5IFBhcnRpdGlvbjwvZW0+fScgY2xhc3MuDQorCQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCQkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5hbGxvY2F0aW9ucy5pbnRlcm5hbC5pbXBsLkFsbG9jYXRlQWN0aXZpdHlQYXJ0aXRpb25JbXBsDQorCQkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5hbGxvY2F0aW9ucy5pbnRlcm5hbC5pbXBsLkFsbG9jYXRpb25zUGFja2FnZUltcGwjZ2V0QWxsb2NhdGVBY3Rpdml0eVBhcnRpdGlvbigpDQorCQkgKiBAZ2VuZXJhdGVkDQorCQkgKi8NCisJCUVDbGFzcyBBTExPQ0FURV9BQ1RJVklUWV9QQVJUSVRJT04gPSBlSU5TVEFOQ0UuZ2V0QWxsb2NhdGVBY3Rpdml0eVBhcnRpdGlvbigpOw0KKw0KKwkJLyoqDQorCQkgKiBUaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8ZW0+PGI+QmFzZSBBY3Rpdml0eSBQYXJ0aXRpb248L2I+PC9lbT4nIHJlZmVyZW5jZSBmZWF0dXJlLg0KKwkJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkJICogQGdlbmVyYXRlZA0KKwkJICovDQorCQlFUmVmZXJlbmNlIEFMTE9DQVRFX0FDVElWSVRZX1BBUlRJVElPTl9fQkFTRV9BQ1RJVklUWV9QQVJUSVRJT04gPSBlSU5TVEFOQ0UuZ2V0QWxsb2NhdGVBY3Rpdml0eVBhcnRpdGlvbl9CYXNlX0FjdGl2aXR5UGFydGl0aW9uKCk7DQorDQorCQkvKioNCisJCSAqIFRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJ3tAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYWxsb2NhdGlvbnMuaW50ZXJuYWwuaW1wbC5BbGxvY2F0ZUltcGwgPGVtPkFsbG9jYXRlPC9lbT59JyBjbGFzcy4NCisJCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJCSAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmFsbG9jYXRpb25zLmludGVybmFsLmltcGwuQWxsb2NhdGVJbXBsDQorCQkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5hbGxvY2F0aW9ucy5pbnRlcm5hbC5pbXBsLkFsbG9jYXRpb25zUGFja2FnZUltcGwjZ2V0QWxsb2NhdGUoKQ0KKwkJICogQGdlbmVyYXRlZA0KKwkJICovDQorCQlFQ2xhc3MgQUxMT0NBVEUgPSBlSU5TVEFOQ0UuZ2V0QWxsb2NhdGUoKTsNCisNCisJCS8qKg0KKwkJICogVGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPGVtPjxiPkJhc2UgQWJzdHJhY3Rpb248L2I+PC9lbT4nIHJlZmVyZW5jZSBmZWF0dXJlLg0KKwkJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkJICogQGdlbmVyYXRlZA0KKwkJICovDQorCQlFUmVmZXJlbmNlIEFMTE9DQVRFX19CQVNFX0FCU1RSQUNUSU9OID0gZUlOU1RBTkNFLmdldEFsbG9jYXRlX0Jhc2VfQWJzdHJhY3Rpb24oKTsNCisNCisJCS8qKg0KKwkJICogVGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPGVtPjxiPkdldCBBbGxvY2F0ZWQgRnJvbTwvYj48L2VtPicgb3BlcmF0aW9uLg0KKwkJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkJICogQGdlbmVyYXRlZA0KKwkJICovDQorCQlFT3BlcmF0aW9uIEFMTE9DQVRFX19fR0VUX0FMTE9DQVRFRF9GUk9NX19OQU1FREVMRU1FTlQgPSBlSU5TVEFOQ0UuZ2V0QWxsb2NhdGVfX0dldEFsbG9jYXRlZEZyb21fX05hbWVkRWxlbWVudCgpOw0KKw0KKwkJLyoqDQorCQkgKiBUaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8ZW0+PGI+R2V0IEFsbG9jYXRlZCBUbzwvYj48L2VtPicgb3BlcmF0aW9uLg0KKwkJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkJICogQGdlbmVyYXRlZA0KKwkJICovDQorCQlFT3BlcmF0aW9uIEFMTE9DQVRFX19fR0VUX0FMTE9DQVRFRF9UT19fTkFNRURFTEVNRU5UID0gZUlOU1RBTkNFLmdldEFsbG9jYXRlX19HZXRBbGxvY2F0ZWRUb19fTmFtZWRFbGVtZW50KCk7DQorDQorCX0NCisNCit9IC8vQWxsb2NhdGlvbnNQYWNrYWdlDQpkaWZmIC0tZ2l0IGEvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvYWxsb2NhdGlvbnMvaW50ZXJuYWwvaW1wbC9BbGxvY2F0ZUFjdGl2aXR5UGFydGl0aW9uSW1wbC5qYXZhIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvYWxsb2NhdGlvbnMvaW50ZXJuYWwvaW1wbC9BbGxvY2F0ZUFjdGl2aXR5UGFydGl0aW9uSW1wbC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNjZGM1ZmQKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9hbGxvY2F0aW9ucy9pbnRlcm5hbC9pbXBsL0FsbG9jYXRlQWN0aXZpdHlQYXJ0aXRpb25JbXBsLmphdmEKQEAgLTAsMCArMSwxNjQgQEAKKy8qKg0KKyAqIENvcHlyaWdodCAoYykgMjAxNSBDRUEgTElTVC4NCisgKiANCisgKiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KKyAqICBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCisgKiAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCisgKiAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgKi8NCitwYWNrYWdlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5hbGxvY2F0aW9ucy5pbnRlcm5hbC5pbXBsOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY29tbW9uLm5vdGlmeS5Ob3RpZmljYXRpb247DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FQ2xhc3M7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5JbnRlcm5hbEVPYmplY3Q7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5pbXBsLkVOb3RpZmljYXRpb25JbXBsOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuaW1wbC5NaW5pbWFsRU9iamVjdEltcGw7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5hbGxvY2F0aW9ucy5BbGxvY2F0ZUFjdGl2aXR5UGFydGl0aW9uOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYWxsb2NhdGlvbnMuQWxsb2NhdGlvbnNQYWNrYWdlOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS51bWwyLnVtbC5BY3Rpdml0eVBhcnRpdGlvbjsNCisNCisvKioNCisgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKyAqIEFuIGltcGxlbWVudGF0aW9uIG9mIHRoZSBtb2RlbCBvYmplY3QgJzxlbT48Yj5BbGxvY2F0ZSBBY3Rpdml0eSBQYXJ0aXRpb248L2I+PC9lbT4nLg0KKyAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKyAqIDxwPg0KKyAqIFRoZSBmb2xsb3dpbmcgZmVhdHVyZXMgYXJlIGltcGxlbWVudGVkOg0KKyAqIDx1bD4NCisgKiAgIDxsaT57QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmFsbG9jYXRpb25zLmludGVybmFsLmltcGwuQWxsb2NhdGVBY3Rpdml0eVBhcnRpdGlvbkltcGwjZ2V0QmFzZV9BY3Rpdml0eVBhcnRpdGlvbiA8ZW0+QmFzZSBBY3Rpdml0eSBQYXJ0aXRpb248L2VtPn08L2xpPg0KKyAqIDwvdWw+DQorICogPC9wPg0KKyAqDQorICogQGdlbmVyYXRlZA0KKyAqLw0KK3B1YmxpYyBjbGFzcyBBbGxvY2F0ZUFjdGl2aXR5UGFydGl0aW9uSW1wbCBleHRlbmRzIE1pbmltYWxFT2JqZWN0SW1wbC5Db250YWluZXIgaW1wbGVtZW50cyBBbGxvY2F0ZUFjdGl2aXR5UGFydGl0aW9uIHsNCisJLyoqDQorCSAqIFRoZSBjYWNoZWQgdmFsdWUgb2YgdGhlICd7QGxpbmsgI2dldEJhc2VfQWN0aXZpdHlQYXJ0aXRpb24oKSA8ZW0+QmFzZSBBY3Rpdml0eSBQYXJ0aXRpb248L2VtPn0nIHJlZmVyZW5jZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBzZWUgI2dldEJhc2VfQWN0aXZpdHlQYXJ0aXRpb24oKQ0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqIEBvcmRlcmVkDQorCSAqLw0KKwlwcm90ZWN0ZWQgQWN0aXZpdHlQYXJ0aXRpb24gYmFzZV9BY3Rpdml0eVBhcnRpdGlvbjsNCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwcm90ZWN0ZWQgQWxsb2NhdGVBY3Rpdml0eVBhcnRpdGlvbkltcGwoKSB7DQorCQlzdXBlcigpOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXByb3RlY3RlZCBFQ2xhc3MgZVN0YXRpY0NsYXNzKCkgew0KKwkJcmV0dXJuIEFsbG9jYXRpb25zUGFja2FnZS5MaXRlcmFscy5BTExPQ0FURV9BQ1RJVklUWV9QQVJUSVRJT047DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgQWN0aXZpdHlQYXJ0aXRpb24gZ2V0QmFzZV9BY3Rpdml0eVBhcnRpdGlvbigpIHsNCisJCWlmIChiYXNlX0FjdGl2aXR5UGFydGl0aW9uICE9IG51bGwgJiYgYmFzZV9BY3Rpdml0eVBhcnRpdGlvbi5lSXNQcm94eSgpKSB7DQorCQkJSW50ZXJuYWxFT2JqZWN0IG9sZEJhc2VfQWN0aXZpdHlQYXJ0aXRpb24gPSAoSW50ZXJuYWxFT2JqZWN0KWJhc2VfQWN0aXZpdHlQYXJ0aXRpb247DQorCQkJYmFzZV9BY3Rpdml0eVBhcnRpdGlvbiA9IChBY3Rpdml0eVBhcnRpdGlvbillUmVzb2x2ZVByb3h5KG9sZEJhc2VfQWN0aXZpdHlQYXJ0aXRpb24pOw0KKwkJCWlmIChiYXNlX0FjdGl2aXR5UGFydGl0aW9uICE9IG9sZEJhc2VfQWN0aXZpdHlQYXJ0aXRpb24pIHsNCisJCQkJaWYgKGVOb3RpZmljYXRpb25SZXF1aXJlZCgpKQ0KKwkJCQkJZU5vdGlmeShuZXcgRU5vdGlmaWNhdGlvbkltcGwodGhpcywgTm90aWZpY2F0aW9uLlJFU09MVkUsIEFsbG9jYXRpb25zUGFja2FnZS5BTExPQ0FURV9BQ1RJVklUWV9QQVJUSVRJT05fX0JBU0VfQUNUSVZJVFlfUEFSVElUSU9OLCBvbGRCYXNlX0FjdGl2aXR5UGFydGl0aW9uLCBiYXNlX0FjdGl2aXR5UGFydGl0aW9uKSk7DQorCQkJfQ0KKwkJfQ0KKwkJcmV0dXJuIGJhc2VfQWN0aXZpdHlQYXJ0aXRpb247DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgQWN0aXZpdHlQYXJ0aXRpb24gYmFzaWNHZXRCYXNlX0FjdGl2aXR5UGFydGl0aW9uKCkgew0KKwkJcmV0dXJuIGJhc2VfQWN0aXZpdHlQYXJ0aXRpb247DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgdm9pZCBzZXRCYXNlX0FjdGl2aXR5UGFydGl0aW9uKEFjdGl2aXR5UGFydGl0aW9uIG5ld0Jhc2VfQWN0aXZpdHlQYXJ0aXRpb24pIHsNCisJCUFjdGl2aXR5UGFydGl0aW9uIG9sZEJhc2VfQWN0aXZpdHlQYXJ0aXRpb24gPSBiYXNlX0FjdGl2aXR5UGFydGl0aW9uOw0KKwkJYmFzZV9BY3Rpdml0eVBhcnRpdGlvbiA9IG5ld0Jhc2VfQWN0aXZpdHlQYXJ0aXRpb247DQorCQlpZiAoZU5vdGlmaWNhdGlvblJlcXVpcmVkKCkpDQorCQkJZU5vdGlmeShuZXcgRU5vdGlmaWNhdGlvbkltcGwodGhpcywgTm90aWZpY2F0aW9uLlNFVCwgQWxsb2NhdGlvbnNQYWNrYWdlLkFMTE9DQVRFX0FDVElWSVRZX1BBUlRJVElPTl9fQkFTRV9BQ1RJVklUWV9QQVJUSVRJT04sIG9sZEJhc2VfQWN0aXZpdHlQYXJ0aXRpb24sIGJhc2VfQWN0aXZpdHlQYXJ0aXRpb24pKTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgT2JqZWN0IGVHZXQoaW50IGZlYXR1cmVJRCwgYm9vbGVhbiByZXNvbHZlLCBib29sZWFuIGNvcmVUeXBlKSB7DQorCQlzd2l0Y2ggKGZlYXR1cmVJRCkgew0KKwkJCWNhc2UgQWxsb2NhdGlvbnNQYWNrYWdlLkFMTE9DQVRFX0FDVElWSVRZX1BBUlRJVElPTl9fQkFTRV9BQ1RJVklUWV9QQVJUSVRJT046DQorCQkJCWlmIChyZXNvbHZlKSByZXR1cm4gZ2V0QmFzZV9BY3Rpdml0eVBhcnRpdGlvbigpOw0KKwkJCQlyZXR1cm4gYmFzaWNHZXRCYXNlX0FjdGl2aXR5UGFydGl0aW9uKCk7DQorCQl9DQorCQlyZXR1cm4gc3VwZXIuZUdldChmZWF0dXJlSUQsIHJlc29sdmUsIGNvcmVUeXBlKTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgdm9pZCBlU2V0KGludCBmZWF0dXJlSUQsIE9iamVjdCBuZXdWYWx1ZSkgew0KKwkJc3dpdGNoIChmZWF0dXJlSUQpIHsNCisJCQljYXNlIEFsbG9jYXRpb25zUGFja2FnZS5BTExPQ0FURV9BQ1RJVklUWV9QQVJUSVRJT05fX0JBU0VfQUNUSVZJVFlfUEFSVElUSU9OOg0KKwkJCQlzZXRCYXNlX0FjdGl2aXR5UGFydGl0aW9uKChBY3Rpdml0eVBhcnRpdGlvbiluZXdWYWx1ZSk7DQorCQkJCXJldHVybjsNCisJCX0NCisJCXN1cGVyLmVTZXQoZmVhdHVyZUlELCBuZXdWYWx1ZSk7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIHZvaWQgZVVuc2V0KGludCBmZWF0dXJlSUQpIHsNCisJCXN3aXRjaCAoZmVhdHVyZUlEKSB7DQorCQkJY2FzZSBBbGxvY2F0aW9uc1BhY2thZ2UuQUxMT0NBVEVfQUNUSVZJVFlfUEFSVElUSU9OX19CQVNFX0FDVElWSVRZX1BBUlRJVElPTjoNCisJCQkJc2V0QmFzZV9BY3Rpdml0eVBhcnRpdGlvbigoQWN0aXZpdHlQYXJ0aXRpb24pbnVsbCk7DQorCQkJCXJldHVybjsNCisJCX0NCisJCXN1cGVyLmVVbnNldChmZWF0dXJlSUQpOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXB1YmxpYyBib29sZWFuIGVJc1NldChpbnQgZmVhdHVyZUlEKSB7DQorCQlzd2l0Y2ggKGZlYXR1cmVJRCkgew0KKwkJCWNhc2UgQWxsb2NhdGlvbnNQYWNrYWdlLkFMTE9DQVRFX0FDVElWSVRZX1BBUlRJVElPTl9fQkFTRV9BQ1RJVklUWV9QQVJUSVRJT046DQorCQkJCXJldHVybiBiYXNlX0FjdGl2aXR5UGFydGl0aW9uICE9IG51bGw7DQorCQl9DQorCQlyZXR1cm4gc3VwZXIuZUlzU2V0KGZlYXR1cmVJRCk7DQorCX0NCisNCit9IC8vQWxsb2NhdGVBY3Rpdml0eVBhcnRpdGlvbkltcGwNCmRpZmYgLS1naXQgYS9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9hbGxvY2F0aW9ucy9pbnRlcm5hbC9pbXBsL0FsbG9jYXRlSW1wbC5qYXZhIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvYWxsb2NhdGlvbnMvaW50ZXJuYWwvaW1wbC9BbGxvY2F0ZUltcGwuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMWViOTMwCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvYWxsb2NhdGlvbnMvaW50ZXJuYWwvaW1wbC9BbGxvY2F0ZUltcGwuamF2YQpAQCAtMCwwICsxLDIwOCBAQAorLyoqDQorICogQ29weXJpZ2h0IChjKSAyMDE1IENFQSBMSVNULg0KKyAqIA0KKyAqICBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQorICogIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KKyAqICB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KKyAqICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqLw0KK3BhY2thZ2Ugb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmFsbG9jYXRpb25zLmludGVybmFsLmltcGw7DQorDQoraW1wb3J0IGphdmEubGFuZy5yZWZsZWN0Lkludm9jYXRpb25UYXJnZXRFeGNlcHRpb247DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jb21tb24ubm90aWZ5Lk5vdGlmaWNhdGlvbjsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi51dGlsLkVMaXN0Ow0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRUNsYXNzOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuSW50ZXJuYWxFT2JqZWN0Ow0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuaW1wbC5FTm90aWZpY2F0aW9uSW1wbDsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmFsbG9jYXRpb25zLkFsbG9jYXRlOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYWxsb2NhdGlvbnMuQWxsb2NhdGlvbnNQYWNrYWdlOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYmxvY2tzLmludGVybmFsLmltcGwuRGlyZWN0ZWRSZWxhdGlvbnNoaXBQcm9wZXJ0eVBhdGhJbXBsOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS51bWwyLnVtbC5BYnN0cmFjdGlvbjsNCitpbXBvcnQgb3JnLmVjbGlwc2UudW1sMi51bWwuTmFtZWRFbGVtZW50Ow0KKw0KKy8qKg0KKyAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorICogQW4gaW1wbGVtZW50YXRpb24gb2YgdGhlIG1vZGVsIG9iamVjdCAnPGVtPjxiPkFsbG9jYXRlPC9iPjwvZW0+Jy4NCisgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisgKiA8cD4NCisgKiBUaGUgZm9sbG93aW5nIGZlYXR1cmVzIGFyZSBpbXBsZW1lbnRlZDoNCisgKiA8dWw+DQorICogICA8bGk+e0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5hbGxvY2F0aW9ucy5pbnRlcm5hbC5pbXBsLkFsbG9jYXRlSW1wbCNnZXRCYXNlX0Fic3RyYWN0aW9uIDxlbT5CYXNlIEFic3RyYWN0aW9uPC9lbT59PC9saT4NCisgKiA8L3VsPg0KKyAqIDwvcD4NCisgKg0KKyAqIEBnZW5lcmF0ZWQNCisgKi8NCitwdWJsaWMgY2xhc3MgQWxsb2NhdGVJbXBsIGV4dGVuZHMgRGlyZWN0ZWRSZWxhdGlvbnNoaXBQcm9wZXJ0eVBhdGhJbXBsIGltcGxlbWVudHMgQWxsb2NhdGUgew0KKwkvKioNCisJICogVGhlIGNhY2hlZCB2YWx1ZSBvZiB0aGUgJ3tAbGluayAjZ2V0QmFzZV9BYnN0cmFjdGlvbigpIDxlbT5CYXNlIEFic3RyYWN0aW9uPC9lbT59JyByZWZlcmVuY2UuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAc2VlICNnZXRCYXNlX0Fic3RyYWN0aW9uKCkNCisJICogQGdlbmVyYXRlZA0KKwkgKiBAb3JkZXJlZA0KKwkgKi8NCisJcHJvdGVjdGVkIEFic3RyYWN0aW9uIGJhc2VfQWJzdHJhY3Rpb247DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHJvdGVjdGVkIEFsbG9jYXRlSW1wbCgpIHsNCisJCXN1cGVyKCk7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHJvdGVjdGVkIEVDbGFzcyBlU3RhdGljQ2xhc3MoKSB7DQorCQlyZXR1cm4gQWxsb2NhdGlvbnNQYWNrYWdlLkxpdGVyYWxzLkFMTE9DQVRFOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIEFic3RyYWN0aW9uIGdldEJhc2VfQWJzdHJhY3Rpb24oKSB7DQorCQlpZiAoYmFzZV9BYnN0cmFjdGlvbiAhPSBudWxsICYmIGJhc2VfQWJzdHJhY3Rpb24uZUlzUHJveHkoKSkgew0KKwkJCUludGVybmFsRU9iamVjdCBvbGRCYXNlX0Fic3RyYWN0aW9uID0gKEludGVybmFsRU9iamVjdCliYXNlX0Fic3RyYWN0aW9uOw0KKwkJCWJhc2VfQWJzdHJhY3Rpb24gPSAoQWJzdHJhY3Rpb24pZVJlc29sdmVQcm94eShvbGRCYXNlX0Fic3RyYWN0aW9uKTsNCisJCQlpZiAoYmFzZV9BYnN0cmFjdGlvbiAhPSBvbGRCYXNlX0Fic3RyYWN0aW9uKSB7DQorCQkJCWlmIChlTm90aWZpY2F0aW9uUmVxdWlyZWQoKSkNCisJCQkJCWVOb3RpZnkobmV3IEVOb3RpZmljYXRpb25JbXBsKHRoaXMsIE5vdGlmaWNhdGlvbi5SRVNPTFZFLCBBbGxvY2F0aW9uc1BhY2thZ2UuQUxMT0NBVEVfX0JBU0VfQUJTVFJBQ1RJT04sIG9sZEJhc2VfQWJzdHJhY3Rpb24sIGJhc2VfQWJzdHJhY3Rpb24pKTsNCisJCQl9DQorCQl9DQorCQlyZXR1cm4gYmFzZV9BYnN0cmFjdGlvbjsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBBYnN0cmFjdGlvbiBiYXNpY0dldEJhc2VfQWJzdHJhY3Rpb24oKSB7DQorCQlyZXR1cm4gYmFzZV9BYnN0cmFjdGlvbjsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyB2b2lkIHNldEJhc2VfQWJzdHJhY3Rpb24oQWJzdHJhY3Rpb24gbmV3QmFzZV9BYnN0cmFjdGlvbikgew0KKwkJQWJzdHJhY3Rpb24gb2xkQmFzZV9BYnN0cmFjdGlvbiA9IGJhc2VfQWJzdHJhY3Rpb247DQorCQliYXNlX0Fic3RyYWN0aW9uID0gbmV3QmFzZV9BYnN0cmFjdGlvbjsNCisJCWlmIChlTm90aWZpY2F0aW9uUmVxdWlyZWQoKSkNCisJCQllTm90aWZ5KG5ldyBFTm90aWZpY2F0aW9uSW1wbCh0aGlzLCBOb3RpZmljYXRpb24uU0VULCBBbGxvY2F0aW9uc1BhY2thZ2UuQUxMT0NBVEVfX0JBU0VfQUJTVFJBQ1RJT04sIG9sZEJhc2VfQWJzdHJhY3Rpb24sIGJhc2VfQWJzdHJhY3Rpb24pKTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBFTGlzdDxOYW1lZEVsZW1lbnQ+IGdldEFsbG9jYXRlZEZyb20oTmFtZWRFbGVtZW50IHJlZikgew0KKwkJLy8gVE9ETzogaW1wbGVtZW50IHRoaXMgbWV0aG9kDQorCQkvLyBFbnN1cmUgdGhhdCB5b3UgcmVtb3ZlIEBnZW5lcmF0ZWQgb3IgbWFyayBpdCBAZ2VuZXJhdGVkIE5PVA0KKwkJdGhyb3cgbmV3IFVuc3VwcG9ydGVkT3BlcmF0aW9uRXhjZXB0aW9uKCk7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgRUxpc3Q8TmFtZWRFbGVtZW50PiBnZXRBbGxvY2F0ZWRUbyhOYW1lZEVsZW1lbnQgcmVmKSB7DQorCQkvLyBUT0RPOiBpbXBsZW1lbnQgdGhpcyBtZXRob2QNCisJCS8vIEVuc3VyZSB0aGF0IHlvdSByZW1vdmUgQGdlbmVyYXRlZCBvciBtYXJrIGl0IEBnZW5lcmF0ZWQgTk9UDQorCQl0aHJvdyBuZXcgVW5zdXBwb3J0ZWRPcGVyYXRpb25FeGNlcHRpb24oKTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgT2JqZWN0IGVHZXQoaW50IGZlYXR1cmVJRCwgYm9vbGVhbiByZXNvbHZlLCBib29sZWFuIGNvcmVUeXBlKSB7DQorCQlzd2l0Y2ggKGZlYXR1cmVJRCkgew0KKwkJCWNhc2UgQWxsb2NhdGlvbnNQYWNrYWdlLkFMTE9DQVRFX19CQVNFX0FCU1RSQUNUSU9OOg0KKwkJCQlpZiAocmVzb2x2ZSkgcmV0dXJuIGdldEJhc2VfQWJzdHJhY3Rpb24oKTsNCisJCQkJcmV0dXJuIGJhc2ljR2V0QmFzZV9BYnN0cmFjdGlvbigpOw0KKwkJfQ0KKwkJcmV0dXJuIHN1cGVyLmVHZXQoZmVhdHVyZUlELCByZXNvbHZlLCBjb3JlVHlwZSk7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIHZvaWQgZVNldChpbnQgZmVhdHVyZUlELCBPYmplY3QgbmV3VmFsdWUpIHsNCisJCXN3aXRjaCAoZmVhdHVyZUlEKSB7DQorCQkJY2FzZSBBbGxvY2F0aW9uc1BhY2thZ2UuQUxMT0NBVEVfX0JBU0VfQUJTVFJBQ1RJT046DQorCQkJCXNldEJhc2VfQWJzdHJhY3Rpb24oKEFic3RyYWN0aW9uKW5ld1ZhbHVlKTsNCisJCQkJcmV0dXJuOw0KKwkJfQ0KKwkJc3VwZXIuZVNldChmZWF0dXJlSUQsIG5ld1ZhbHVlKTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgdm9pZCBlVW5zZXQoaW50IGZlYXR1cmVJRCkgew0KKwkJc3dpdGNoIChmZWF0dXJlSUQpIHsNCisJCQljYXNlIEFsbG9jYXRpb25zUGFja2FnZS5BTExPQ0FURV9fQkFTRV9BQlNUUkFDVElPTjoNCisJCQkJc2V0QmFzZV9BYnN0cmFjdGlvbigoQWJzdHJhY3Rpb24pbnVsbCk7DQorCQkJCXJldHVybjsNCisJCX0NCisJCXN1cGVyLmVVbnNldChmZWF0dXJlSUQpOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXB1YmxpYyBib29sZWFuIGVJc1NldChpbnQgZmVhdHVyZUlEKSB7DQorCQlzd2l0Y2ggKGZlYXR1cmVJRCkgew0KKwkJCWNhc2UgQWxsb2NhdGlvbnNQYWNrYWdlLkFMTE9DQVRFX19CQVNFX0FCU1RSQUNUSU9OOg0KKwkJCQlyZXR1cm4gYmFzZV9BYnN0cmFjdGlvbiAhPSBudWxsOw0KKwkJfQ0KKwkJcmV0dXJuIHN1cGVyLmVJc1NldChmZWF0dXJlSUQpOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXB1YmxpYyBPYmplY3QgZUludm9rZShpbnQgb3BlcmF0aW9uSUQsIEVMaXN0PD8+IGFyZ3VtZW50cykgdGhyb3dzIEludm9jYXRpb25UYXJnZXRFeGNlcHRpb24gew0KKwkJc3dpdGNoIChvcGVyYXRpb25JRCkgew0KKwkJCWNhc2UgQWxsb2NhdGlvbnNQYWNrYWdlLkFMTE9DQVRFX19fR0VUX0FMTE9DQVRFRF9GUk9NX19OQU1FREVMRU1FTlQ6DQorCQkJCXJldHVybiBnZXRBbGxvY2F0ZWRGcm9tKChOYW1lZEVsZW1lbnQpYXJndW1lbnRzLmdldCgwKSk7DQorCQkJY2FzZSBBbGxvY2F0aW9uc1BhY2thZ2UuQUxMT0NBVEVfX19HRVRfQUxMT0NBVEVEX1RPX19OQU1FREVMRU1FTlQ6DQorCQkJCXJldHVybiBnZXRBbGxvY2F0ZWRUbygoTmFtZWRFbGVtZW50KWFyZ3VtZW50cy5nZXQoMCkpOw0KKwkJfQ0KKwkJcmV0dXJuIHN1cGVyLmVJbnZva2Uob3BlcmF0aW9uSUQsIGFyZ3VtZW50cyk7DQorCX0NCisNCit9IC8vQWxsb2NhdGVJbXBsDQpkaWZmIC0tZ2l0IGEvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvYWxsb2NhdGlvbnMvaW50ZXJuYWwvaW1wbC9BbGxvY2F0aW9uc0ZhY3RvcnlJbXBsLmphdmEgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9hbGxvY2F0aW9ucy9pbnRlcm5hbC9pbXBsL0FsbG9jYXRpb25zRmFjdG9yeUltcGwuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMzNlMDY1Ci0tLSAvZGV2L251bGwKKysrIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvYWxsb2NhdGlvbnMvaW50ZXJuYWwvaW1wbC9BbGxvY2F0aW9uc0ZhY3RvcnlJbXBsLmphdmEKQEAgLTAsMCArMSwxMTIgQEAKKy8qKg0KKyAqIENvcHlyaWdodCAoYykgMjAxNSBDRUEgTElTVC4NCisgKiANCisgKiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KKyAqICBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCisgKiAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCisgKiAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgKi8NCitwYWNrYWdlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5hbGxvY2F0aW9ucy5pbnRlcm5hbC5pbXBsOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRUNsYXNzOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRU9iamVjdDsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVQYWNrYWdlOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuaW1wbC5FRmFjdG9yeUltcGw7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5wbHVnaW4uRWNvcmVQbHVnaW47DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5hbGxvY2F0aW9ucy4qOw0KKw0KKy8qKg0KKyAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorICogQW4gaW1wbGVtZW50YXRpb24gb2YgdGhlIG1vZGVsIDxiPkZhY3Rvcnk8L2I+Lg0KKyAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKyAqIEBnZW5lcmF0ZWQNCisgKi8NCitwdWJsaWMgY2xhc3MgQWxsb2NhdGlvbnNGYWN0b3J5SW1wbCBleHRlbmRzIEVGYWN0b3J5SW1wbCBpbXBsZW1lbnRzIEFsbG9jYXRpb25zRmFjdG9yeSB7DQorCS8qKg0KKwkgKiBDcmVhdGVzIHRoZSBkZWZhdWx0IGZhY3RvcnkgaW1wbGVtZW50YXRpb24uDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgc3RhdGljIEFsbG9jYXRpb25zRmFjdG9yeSBpbml0KCkgew0KKwkJdHJ5IHsNCisJCQlBbGxvY2F0aW9uc0ZhY3RvcnkgdGhlQWxsb2NhdGlvbnNGYWN0b3J5ID0gKEFsbG9jYXRpb25zRmFjdG9yeSlFUGFja2FnZS5SZWdpc3RyeS5JTlNUQU5DRS5nZXRFRmFjdG9yeShBbGxvY2F0aW9uc1BhY2thZ2UuZU5TX1VSSSk7DQorCQkJaWYgKHRoZUFsbG9jYXRpb25zRmFjdG9yeSAhPSBudWxsKSB7DQorCQkJCXJldHVybiB0aGVBbGxvY2F0aW9uc0ZhY3Rvcnk7DQorCQkJfQ0KKwkJfQ0KKwkJY2F0Y2ggKEV4Y2VwdGlvbiBleGNlcHRpb24pIHsNCisJCQlFY29yZVBsdWdpbi5JTlNUQU5DRS5sb2coZXhjZXB0aW9uKTsNCisJCX0NCisJCXJldHVybiBuZXcgQWxsb2NhdGlvbnNGYWN0b3J5SW1wbCgpOw0KKwl9DQorDQorCS8qKg0KKwkgKiBDcmVhdGVzIGFuIGluc3RhbmNlIG9mIHRoZSBmYWN0b3J5Lg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIEFsbG9jYXRpb25zRmFjdG9yeUltcGwoKSB7DQorCQlzdXBlcigpOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXB1YmxpYyBFT2JqZWN0IGNyZWF0ZShFQ2xhc3MgZUNsYXNzKSB7DQorCQlzd2l0Y2ggKGVDbGFzcy5nZXRDbGFzc2lmaWVySUQoKSkgew0KKwkJCWNhc2UgQWxsb2NhdGlvbnNQYWNrYWdlLkFMTE9DQVRFX0FDVElWSVRZX1BBUlRJVElPTjogcmV0dXJuIGNyZWF0ZUFsbG9jYXRlQWN0aXZpdHlQYXJ0aXRpb24oKTsNCisJCQljYXNlIEFsbG9jYXRpb25zUGFja2FnZS5BTExPQ0FURTogcmV0dXJuIGNyZWF0ZUFsbG9jYXRlKCk7DQorCQkJZGVmYXVsdDoNCisJCQkJdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiVGhlIGNsYXNzICciICsgZUNsYXNzLmdldE5hbWUoKSArICInIGlzIG5vdCBhIHZhbGlkIGNsYXNzaWZpZXIiKTsgLy8kTk9OLU5MUy0xJCAvLyROT04tTkxTLTIkDQorCQl9DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgQWxsb2NhdGVBY3Rpdml0eVBhcnRpdGlvbiBjcmVhdGVBbGxvY2F0ZUFjdGl2aXR5UGFydGl0aW9uKCkgew0KKwkJQWxsb2NhdGVBY3Rpdml0eVBhcnRpdGlvbkltcGwgYWxsb2NhdGVBY3Rpdml0eVBhcnRpdGlvbiA9IG5ldyBBbGxvY2F0ZUFjdGl2aXR5UGFydGl0aW9uSW1wbCgpOw0KKwkJcmV0dXJuIGFsbG9jYXRlQWN0aXZpdHlQYXJ0aXRpb247DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgQWxsb2NhdGUgY3JlYXRlQWxsb2NhdGUoKSB7DQorCQlBbGxvY2F0ZUltcGwgYWxsb2NhdGUgPSBuZXcgQWxsb2NhdGVJbXBsKCk7DQorCQlyZXR1cm4gYWxsb2NhdGU7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgQWxsb2NhdGlvbnNQYWNrYWdlIGdldEFsbG9jYXRpb25zUGFja2FnZSgpIHsNCisJCXJldHVybiAoQWxsb2NhdGlvbnNQYWNrYWdlKWdldEVQYWNrYWdlKCk7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZGVwcmVjYXRlZA0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlARGVwcmVjYXRlZA0KKwlwdWJsaWMgc3RhdGljIEFsbG9jYXRpb25zUGFja2FnZSBnZXRQYWNrYWdlKCkgew0KKwkJcmV0dXJuIEFsbG9jYXRpb25zUGFja2FnZS5lSU5TVEFOQ0U7DQorCX0NCisNCit9IC8vQWxsb2NhdGlvbnNGYWN0b3J5SW1wbA0KZGlmZiAtLWdpdCBhL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L2FsbG9jYXRpb25zL2ludGVybmFsL2ltcGwvQWxsb2NhdGlvbnNQYWNrYWdlSW1wbC5qYXZhIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvYWxsb2NhdGlvbnMvaW50ZXJuYWwvaW1wbC9BbGxvY2F0aW9uc1BhY2thZ2VJbXBsLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2YxYzNjOAotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L2FsbG9jYXRpb25zL2ludGVybmFsL2ltcGwvQWxsb2NhdGlvbnNQYWNrYWdlSW1wbC5qYXZhCkBAIC0wLDAgKzEsMzI1IEBACisvKioNCisgKiBDb3B5cmlnaHQgKGMpIDIwMTUgQ0VBIExJU1QuDQorICogDQorICogIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCisgKiAgYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQorICogIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQorICogIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICovDQorcGFja2FnZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYWxsb2NhdGlvbnMuaW50ZXJuYWwuaW1wbDsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVDbGFzczsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVPcGVyYXRpb247DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FUGFja2FnZTsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVSZWZlcmVuY2U7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5pbXBsLkVQYWNrYWdlSW1wbDsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmFjdGl2aXRpZXMuQWN0aXZpdGllc1BhY2thZ2U7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5hY3Rpdml0aWVzLmludGVybmFsLmltcGwuQWN0aXZpdGllc1BhY2thZ2VJbXBsOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYWxsb2NhdGlvbnMuQWxsb2NhdGU7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5hbGxvY2F0aW9ucy5BbGxvY2F0ZUFjdGl2aXR5UGFydGl0aW9uOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYWxsb2NhdGlvbnMuQWxsb2NhdGlvbnNGYWN0b3J5Ow0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYWxsb2NhdGlvbnMuQWxsb2NhdGlvbnNQYWNrYWdlOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYmxvY2tzLkJsb2Nrc1BhY2thZ2U7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5ibG9ja3MuaW50ZXJuYWwuaW1wbC5CbG9ja3NQYWNrYWdlSW1wbDsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmNvbnN0cmFpbnRibG9ja3MuQ29uc3RyYWludGJsb2Nrc1BhY2thZ2U7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5jb25zdHJhaW50YmxvY2tzLmludGVybmFsLmltcGwuQ29uc3RyYWludGJsb2Nrc1BhY2thZ2VJbXBsOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGVwcmVjYXRlZGVsZW1lbnRzLkRlcHJlY2F0ZWRlbGVtZW50c1BhY2thZ2U7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kZXByZWNhdGVkZWxlbWVudHMuaW50ZXJuYWwuaW1wbC5EZXByZWNhdGVkZWxlbWVudHNQYWNrYWdlSW1wbDsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0Lm1vZGVsZWxlbWVudHMuTW9kZWxlbGVtZW50c1BhY2thZ2U7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5tb2RlbGVsZW1lbnRzLmludGVybmFsLmltcGwuTW9kZWxlbGVtZW50c1BhY2thZ2VJbXBsOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucG9ydGFuZGZsb3dzLlBvcnRhbmRmbG93c1BhY2thZ2U7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5wb3J0YW5kZmxvd3MuaW50ZXJuYWwuaW1wbC5Qb3J0YW5kZmxvd3NQYWNrYWdlSW1wbDsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnJlcXVpcmVtZW50cy5SZXF1aXJlbWVudHNQYWNrYWdlOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucmVxdWlyZW1lbnRzLmludGVybmFsLmltcGwuUmVxdWlyZW1lbnRzUGFja2FnZUltcGw7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLnVtbDIudW1sLlVNTFBhY2thZ2U7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLnVtbDIudW1sLnByb2ZpbGUuc3RhbmRhcmQuU3RhbmRhcmRQYWNrYWdlOw0KKw0KKy8qKg0KKyAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorICogQW4gaW1wbGVtZW50YXRpb24gb2YgdGhlIG1vZGVsIDxiPlBhY2thZ2U8L2I+Lg0KKyAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKyAqIEBnZW5lcmF0ZWQNCisgKi8NCitwdWJsaWMgY2xhc3MgQWxsb2NhdGlvbnNQYWNrYWdlSW1wbCBleHRlbmRzIEVQYWNrYWdlSW1wbCBpbXBsZW1lbnRzIEFsbG9jYXRpb25zUGFja2FnZSB7DQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHJpdmF0ZSBFQ2xhc3MgYWxsb2NhdGVBY3Rpdml0eVBhcnRpdGlvbkVDbGFzcyA9IG51bGw7DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHJpdmF0ZSBFQ2xhc3MgYWxsb2NhdGVFQ2xhc3MgPSBudWxsOw0KKw0KKwkvKioNCisJICogQ3JlYXRlcyBhbiBpbnN0YW5jZSBvZiB0aGUgbW9kZWwgPGI+UGFja2FnZTwvYj4sIHJlZ2lzdGVyZWQgd2l0aA0KKwkgKiB7QGxpbmsgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVQYWNrYWdlLlJlZ2lzdHJ5IEVQYWNrYWdlLlJlZ2lzdHJ5fSBieSB0aGUgcGFja2FnZQ0KKwkgKiBwYWNrYWdlIFVSSSB2YWx1ZS4NCisJICogPHA+Tm90ZTogdGhlIGNvcnJlY3Qgd2F5IHRvIGNyZWF0ZSB0aGUgcGFja2FnZSBpcyB2aWEgdGhlIHN0YXRpYw0KKwkgKiBmYWN0b3J5IG1ldGhvZCB7QGxpbmsgI2luaXQgaW5pdCgpfSwgd2hpY2ggYWxzbyBwZXJmb3Jtcw0KKwkgKiBpbml0aWFsaXphdGlvbiBvZiB0aGUgcGFja2FnZSwgb3IgcmV0dXJucyB0aGUgcmVnaXN0ZXJlZCBwYWNrYWdlLA0KKwkgKiBpZiBvbmUgYWxyZWFkeSBleGlzdHMuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAc2VlIG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FUGFja2FnZS5SZWdpc3RyeQ0KKwkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5hbGxvY2F0aW9ucy5BbGxvY2F0aW9uc1BhY2thZ2UjZU5TX1VSSQ0KKwkgKiBAc2VlICNpbml0KCkNCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHJpdmF0ZSBBbGxvY2F0aW9uc1BhY2thZ2VJbXBsKCkgew0KKwkJc3VwZXIoZU5TX1VSSSwgQWxsb2NhdGlvbnNGYWN0b3J5LmVJTlNUQU5DRSk7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwcml2YXRlIHN0YXRpYyBib29sZWFuIGlzSW5pdGVkID0gZmFsc2U7DQorDQorCS8qKg0KKwkgKiBDcmVhdGVzLCByZWdpc3RlcnMsIGFuZCBpbml0aWFsaXplcyB0aGUgPGI+UGFja2FnZTwvYj4gZm9yIHRoaXMgbW9kZWwsIGFuZCBmb3IgYW55IG90aGVycyB1cG9uIHdoaWNoIGl0IGRlcGVuZHMuDQorCSAqIA0KKwkgKiA8cD5UaGlzIG1ldGhvZCBpcyB1c2VkIHRvIGluaXRpYWxpemUge0BsaW5rIEFsbG9jYXRpb25zUGFja2FnZSNlSU5TVEFOQ0V9IHdoZW4gdGhhdCBmaWVsZCBpcyBhY2Nlc3NlZC4NCisJICogQ2xpZW50cyBzaG91bGQgbm90IGludm9rZSBpdCBkaXJlY3RseS4gSW5zdGVhZCwgdGhleSBzaG91bGQgc2ltcGx5IGFjY2VzcyB0aGF0IGZpZWxkIHRvIG9idGFpbiB0aGUgcGFja2FnZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBzZWUgI2VOU19VUkkNCisJICogQHNlZSAjY3JlYXRlUGFja2FnZUNvbnRlbnRzKCkNCisJICogQHNlZSAjaW5pdGlhbGl6ZVBhY2thZ2VDb250ZW50cygpDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBzdGF0aWMgQWxsb2NhdGlvbnNQYWNrYWdlIGluaXQoKSB7DQorCQlpZiAoaXNJbml0ZWQpIHJldHVybiAoQWxsb2NhdGlvbnNQYWNrYWdlKUVQYWNrYWdlLlJlZ2lzdHJ5LklOU1RBTkNFLmdldEVQYWNrYWdlKEFsbG9jYXRpb25zUGFja2FnZS5lTlNfVVJJKTsNCisNCisJCS8vIE9idGFpbiBvciBjcmVhdGUgYW5kIHJlZ2lzdGVyIHBhY2thZ2UNCisJCUFsbG9jYXRpb25zUGFja2FnZUltcGwgdGhlQWxsb2NhdGlvbnNQYWNrYWdlID0gKEFsbG9jYXRpb25zUGFja2FnZUltcGwpKEVQYWNrYWdlLlJlZ2lzdHJ5LklOU1RBTkNFLmdldChlTlNfVVJJKSBpbnN0YW5jZW9mIEFsbG9jYXRpb25zUGFja2FnZUltcGwgPyBFUGFja2FnZS5SZWdpc3RyeS5JTlNUQU5DRS5nZXQoZU5TX1VSSSkgOiBuZXcgQWxsb2NhdGlvbnNQYWNrYWdlSW1wbCgpKTsNCisNCisJCWlzSW5pdGVkID0gdHJ1ZTsNCisNCisJCS8vIEluaXRpYWxpemUgc2ltcGxlIGRlcGVuZGVuY2llcw0KKwkJU3RhbmRhcmRQYWNrYWdlLmVJTlNUQU5DRS5lQ2xhc3MoKTsNCisNCisJCS8vIE9idGFpbiBvciBjcmVhdGUgYW5kIHJlZ2lzdGVyIGludGVyZGVwZW5kZW5jaWVzDQorCQlCbG9ja3NQYWNrYWdlSW1wbCB0aGVCbG9ja3NQYWNrYWdlID0gKEJsb2Nrc1BhY2thZ2VJbXBsKShFUGFja2FnZS5SZWdpc3RyeS5JTlNUQU5DRS5nZXRFUGFja2FnZShCbG9ja3NQYWNrYWdlLmVOU19VUkkpIGluc3RhbmNlb2YgQmxvY2tzUGFja2FnZUltcGwgPyBFUGFja2FnZS5SZWdpc3RyeS5JTlNUQU5DRS5nZXRFUGFja2FnZShCbG9ja3NQYWNrYWdlLmVOU19VUkkpIDogQmxvY2tzUGFja2FnZS5lSU5TVEFOQ0UpOw0KKwkJUG9ydGFuZGZsb3dzUGFja2FnZUltcGwgdGhlUG9ydGFuZGZsb3dzUGFja2FnZSA9IChQb3J0YW5kZmxvd3NQYWNrYWdlSW1wbCkoRVBhY2thZ2UuUmVnaXN0cnkuSU5TVEFOQ0UuZ2V0RVBhY2thZ2UoUG9ydGFuZGZsb3dzUGFja2FnZS5lTlNfVVJJKSBpbnN0YW5jZW9mIFBvcnRhbmRmbG93c1BhY2thZ2VJbXBsID8gRVBhY2thZ2UuUmVnaXN0cnkuSU5TVEFOQ0UuZ2V0RVBhY2thZ2UoUG9ydGFuZGZsb3dzUGFja2FnZS5lTlNfVVJJKSA6IFBvcnRhbmRmbG93c1BhY2thZ2UuZUlOU1RBTkNFKTsNCisJCUFjdGl2aXRpZXNQYWNrYWdlSW1wbCB0aGVBY3Rpdml0aWVzUGFja2FnZSA9IChBY3Rpdml0aWVzUGFja2FnZUltcGwpKEVQYWNrYWdlLlJlZ2lzdHJ5LklOU1RBTkNFLmdldEVQYWNrYWdlKEFjdGl2aXRpZXNQYWNrYWdlLmVOU19VUkkpIGluc3RhbmNlb2YgQWN0aXZpdGllc1BhY2thZ2VJbXBsID8gRVBhY2thZ2UuUmVnaXN0cnkuSU5TVEFOQ0UuZ2V0RVBhY2thZ2UoQWN0aXZpdGllc1BhY2thZ2UuZU5TX1VSSSkgOiBBY3Rpdml0aWVzUGFja2FnZS5lSU5TVEFOQ0UpOw0KKwkJTW9kZWxlbGVtZW50c1BhY2thZ2VJbXBsIHRoZU1vZGVsZWxlbWVudHNQYWNrYWdlID0gKE1vZGVsZWxlbWVudHNQYWNrYWdlSW1wbCkoRVBhY2thZ2UuUmVnaXN0cnkuSU5TVEFOQ0UuZ2V0RVBhY2thZ2UoTW9kZWxlbGVtZW50c1BhY2thZ2UuZU5TX1VSSSkgaW5zdGFuY2VvZiBNb2RlbGVsZW1lbnRzUGFja2FnZUltcGwgPyBFUGFja2FnZS5SZWdpc3RyeS5JTlNUQU5DRS5nZXRFUGFja2FnZShNb2RlbGVsZW1lbnRzUGFja2FnZS5lTlNfVVJJKSA6IE1vZGVsZWxlbWVudHNQYWNrYWdlLmVJTlNUQU5DRSk7DQorCQlDb25zdHJhaW50YmxvY2tzUGFja2FnZUltcGwgdGhlQ29uc3RyYWludGJsb2Nrc1BhY2thZ2UgPSAoQ29uc3RyYWludGJsb2Nrc1BhY2thZ2VJbXBsKShFUGFja2FnZS5SZWdpc3RyeS5JTlNUQU5DRS5nZXRFUGFja2FnZShDb25zdHJhaW50YmxvY2tzUGFja2FnZS5lTlNfVVJJKSBpbnN0YW5jZW9mIENvbnN0cmFpbnRibG9ja3NQYWNrYWdlSW1wbCA/IEVQYWNrYWdlLlJlZ2lzdHJ5LklOU1RBTkNFLmdldEVQYWNrYWdlKENvbnN0cmFpbnRibG9ja3NQYWNrYWdlLmVOU19VUkkpIDogQ29uc3RyYWludGJsb2Nrc1BhY2thZ2UuZUlOU1RBTkNFKTsNCisJCVJlcXVpcmVtZW50c1BhY2thZ2VJbXBsIHRoZVJlcXVpcmVtZW50c1BhY2thZ2UgPSAoUmVxdWlyZW1lbnRzUGFja2FnZUltcGwpKEVQYWNrYWdlLlJlZ2lzdHJ5LklOU1RBTkNFLmdldEVQYWNrYWdlKFJlcXVpcmVtZW50c1BhY2thZ2UuZU5TX1VSSSkgaW5zdGFuY2VvZiBSZXF1aXJlbWVudHNQYWNrYWdlSW1wbCA/IEVQYWNrYWdlLlJlZ2lzdHJ5LklOU1RBTkNFLmdldEVQYWNrYWdlKFJlcXVpcmVtZW50c1BhY2thZ2UuZU5TX1VSSSkgOiBSZXF1aXJlbWVudHNQYWNrYWdlLmVJTlNUQU5DRSk7DQorCQlEZXByZWNhdGVkZWxlbWVudHNQYWNrYWdlSW1wbCB0aGVEZXByZWNhdGVkZWxlbWVudHNQYWNrYWdlID0gKERlcHJlY2F0ZWRlbGVtZW50c1BhY2thZ2VJbXBsKShFUGFja2FnZS5SZWdpc3RyeS5JTlNUQU5DRS5nZXRFUGFja2FnZShEZXByZWNhdGVkZWxlbWVudHNQYWNrYWdlLmVOU19VUkkpIGluc3RhbmNlb2YgRGVwcmVjYXRlZGVsZW1lbnRzUGFja2FnZUltcGwgPyBFUGFja2FnZS5SZWdpc3RyeS5JTlNUQU5DRS5nZXRFUGFja2FnZShEZXByZWNhdGVkZWxlbWVudHNQYWNrYWdlLmVOU19VUkkpIDogRGVwcmVjYXRlZGVsZW1lbnRzUGFja2FnZS5lSU5TVEFOQ0UpOw0KKw0KKwkJLy8gQ3JlYXRlIHBhY2thZ2UgbWV0YS1kYXRhIG9iamVjdHMNCisJCXRoZUFsbG9jYXRpb25zUGFja2FnZS5jcmVhdGVQYWNrYWdlQ29udGVudHMoKTsNCisJCXRoZUJsb2Nrc1BhY2thZ2UuY3JlYXRlUGFja2FnZUNvbnRlbnRzKCk7DQorCQl0aGVQb3J0YW5kZmxvd3NQYWNrYWdlLmNyZWF0ZVBhY2thZ2VDb250ZW50cygpOw0KKwkJdGhlQWN0aXZpdGllc1BhY2thZ2UuY3JlYXRlUGFja2FnZUNvbnRlbnRzKCk7DQorCQl0aGVNb2RlbGVsZW1lbnRzUGFja2FnZS5jcmVhdGVQYWNrYWdlQ29udGVudHMoKTsNCisJCXRoZUNvbnN0cmFpbnRibG9ja3NQYWNrYWdlLmNyZWF0ZVBhY2thZ2VDb250ZW50cygpOw0KKwkJdGhlUmVxdWlyZW1lbnRzUGFja2FnZS5jcmVhdGVQYWNrYWdlQ29udGVudHMoKTsNCisJCXRoZURlcHJlY2F0ZWRlbGVtZW50c1BhY2thZ2UuY3JlYXRlUGFja2FnZUNvbnRlbnRzKCk7DQorDQorCQkvLyBJbml0aWFsaXplIGNyZWF0ZWQgbWV0YS1kYXRhDQorCQl0aGVBbGxvY2F0aW9uc1BhY2thZ2UuaW5pdGlhbGl6ZVBhY2thZ2VDb250ZW50cygpOw0KKwkJdGhlQmxvY2tzUGFja2FnZS5pbml0aWFsaXplUGFja2FnZUNvbnRlbnRzKCk7DQorCQl0aGVQb3J0YW5kZmxvd3NQYWNrYWdlLmluaXRpYWxpemVQYWNrYWdlQ29udGVudHMoKTsNCisJCXRoZUFjdGl2aXRpZXNQYWNrYWdlLmluaXRpYWxpemVQYWNrYWdlQ29udGVudHMoKTsNCisJCXRoZU1vZGVsZWxlbWVudHNQYWNrYWdlLmluaXRpYWxpemVQYWNrYWdlQ29udGVudHMoKTsNCisJCXRoZUNvbnN0cmFpbnRibG9ja3NQYWNrYWdlLmluaXRpYWxpemVQYWNrYWdlQ29udGVudHMoKTsNCisJCXRoZVJlcXVpcmVtZW50c1BhY2thZ2UuaW5pdGlhbGl6ZVBhY2thZ2VDb250ZW50cygpOw0KKwkJdGhlRGVwcmVjYXRlZGVsZW1lbnRzUGFja2FnZS5pbml0aWFsaXplUGFja2FnZUNvbnRlbnRzKCk7DQorDQorCQkvLyBNYXJrIG1ldGEtZGF0YSB0byBpbmRpY2F0ZSBpdCBjYW4ndCBiZSBjaGFuZ2VkDQorCQl0aGVBbGxvY2F0aW9uc1BhY2thZ2UuZnJlZXplKCk7DQorDQorICANCisJCS8vIFVwZGF0ZSB0aGUgcmVnaXN0cnkgYW5kIHJldHVybiB0aGUgcGFja2FnZQ0KKwkJRVBhY2thZ2UuUmVnaXN0cnkuSU5TVEFOQ0UucHV0KEFsbG9jYXRpb25zUGFja2FnZS5lTlNfVVJJLCB0aGVBbGxvY2F0aW9uc1BhY2thZ2UpOw0KKwkJcmV0dXJuIHRoZUFsbG9jYXRpb25zUGFja2FnZTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBFQ2xhc3MgZ2V0QWxsb2NhdGVBY3Rpdml0eVBhcnRpdGlvbigpIHsNCisJCXJldHVybiBhbGxvY2F0ZUFjdGl2aXR5UGFydGl0aW9uRUNsYXNzOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIEVSZWZlcmVuY2UgZ2V0QWxsb2NhdGVBY3Rpdml0eVBhcnRpdGlvbl9CYXNlX0FjdGl2aXR5UGFydGl0aW9uKCkgew0KKwkJcmV0dXJuIChFUmVmZXJlbmNlKWFsbG9jYXRlQWN0aXZpdHlQYXJ0aXRpb25FQ2xhc3MuZ2V0RVN0cnVjdHVyYWxGZWF0dXJlcygpLmdldCgwKTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBFQ2xhc3MgZ2V0QWxsb2NhdGUoKSB7DQorCQlyZXR1cm4gYWxsb2NhdGVFQ2xhc3M7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgRVJlZmVyZW5jZSBnZXRBbGxvY2F0ZV9CYXNlX0Fic3RyYWN0aW9uKCkgew0KKwkJcmV0dXJuIChFUmVmZXJlbmNlKWFsbG9jYXRlRUNsYXNzLmdldEVTdHJ1Y3R1cmFsRmVhdHVyZXMoKS5nZXQoMCk7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgRU9wZXJhdGlvbiBnZXRBbGxvY2F0ZV9fR2V0QWxsb2NhdGVkRnJvbV9fTmFtZWRFbGVtZW50KCkgew0KKwkJcmV0dXJuIGFsbG9jYXRlRUNsYXNzLmdldEVPcGVyYXRpb25zKCkuZ2V0KDApOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIEVPcGVyYXRpb24gZ2V0QWxsb2NhdGVfX0dldEFsbG9jYXRlZFRvX19OYW1lZEVsZW1lbnQoKSB7DQorCQlyZXR1cm4gYWxsb2NhdGVFQ2xhc3MuZ2V0RU9wZXJhdGlvbnMoKS5nZXQoMSk7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgQWxsb2NhdGlvbnNGYWN0b3J5IGdldEFsbG9jYXRpb25zRmFjdG9yeSgpIHsNCisJCXJldHVybiAoQWxsb2NhdGlvbnNGYWN0b3J5KWdldEVGYWN0b3J5SW5zdGFuY2UoKTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXByaXZhdGUgYm9vbGVhbiBpc0NyZWF0ZWQgPSBmYWxzZTsNCisNCisJLyoqDQorCSAqIENyZWF0ZXMgdGhlIG1ldGEtbW9kZWwgb2JqZWN0cyBmb3IgdGhlIHBhY2thZ2UuICBUaGlzIG1ldGhvZCBpcw0KKwkgKiBndWFyZGVkIHRvIGhhdmUgbm8gYWZmZWN0IG9uIGFueSBpbnZvY2F0aW9uIGJ1dCBpdHMgZmlyc3QuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgdm9pZCBjcmVhdGVQYWNrYWdlQ29udGVudHMoKSB7DQorCQlpZiAoaXNDcmVhdGVkKSByZXR1cm47DQorCQlpc0NyZWF0ZWQgPSB0cnVlOw0KKw0KKwkJLy8gQ3JlYXRlIGNsYXNzZXMgYW5kIHRoZWlyIGZlYXR1cmVzDQorCQlhbGxvY2F0ZUFjdGl2aXR5UGFydGl0aW9uRUNsYXNzID0gY3JlYXRlRUNsYXNzKEFMTE9DQVRFX0FDVElWSVRZX1BBUlRJVElPTik7DQorCQljcmVhdGVFUmVmZXJlbmNlKGFsbG9jYXRlQWN0aXZpdHlQYXJ0aXRpb25FQ2xhc3MsIEFMTE9DQVRFX0FDVElWSVRZX1BBUlRJVElPTl9fQkFTRV9BQ1RJVklUWV9QQVJUSVRJT04pOw0KKw0KKwkJYWxsb2NhdGVFQ2xhc3MgPSBjcmVhdGVFQ2xhc3MoQUxMT0NBVEUpOw0KKwkJY3JlYXRlRVJlZmVyZW5jZShhbGxvY2F0ZUVDbGFzcywgQUxMT0NBVEVfX0JBU0VfQUJTVFJBQ1RJT04pOw0KKwkJY3JlYXRlRU9wZXJhdGlvbihhbGxvY2F0ZUVDbGFzcywgQUxMT0NBVEVfX19HRVRfQUxMT0NBVEVEX0ZST01fX05BTUVERUxFTUVOVCk7DQorCQljcmVhdGVFT3BlcmF0aW9uKGFsbG9jYXRlRUNsYXNzLCBBTExPQ0FURV9fX0dFVF9BTExPQ0FURURfVE9fX05BTUVERUxFTUVOVCk7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwcml2YXRlIGJvb2xlYW4gaXNJbml0aWFsaXplZCA9IGZhbHNlOw0KKw0KKwkvKioNCisJICogQ29tcGxldGUgdGhlIGluaXRpYWxpemF0aW9uIG9mIHRoZSBwYWNrYWdlIGFuZCBpdHMgbWV0YS1tb2RlbC4gIFRoaXMNCisJICogbWV0aG9kIGlzIGd1YXJkZWQgdG8gaGF2ZSBubyBhZmZlY3Qgb24gYW55IGludm9jYXRpb24gYnV0IGl0cyBmaXJzdC4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyB2b2lkIGluaXRpYWxpemVQYWNrYWdlQ29udGVudHMoKSB7DQorCQlpZiAoaXNJbml0aWFsaXplZCkgcmV0dXJuOw0KKwkJaXNJbml0aWFsaXplZCA9IHRydWU7DQorDQorCQkvLyBJbml0aWFsaXplIHBhY2thZ2UNCisJCXNldE5hbWUoZU5BTUUpOw0KKwkJc2V0TnNQcmVmaXgoZU5TX1BSRUZJWCk7DQorCQlzZXROc1VSSShlTlNfVVJJKTsNCisNCisJCS8vIE9idGFpbiBvdGhlciBkZXBlbmRlbnQgcGFja2FnZXMNCisJCVVNTFBhY2thZ2UgdGhlVU1MUGFja2FnZSA9IChVTUxQYWNrYWdlKUVQYWNrYWdlLlJlZ2lzdHJ5LklOU1RBTkNFLmdldEVQYWNrYWdlKFVNTFBhY2thZ2UuZU5TX1VSSSk7DQorCQlCbG9ja3NQYWNrYWdlIHRoZUJsb2Nrc1BhY2thZ2UgPSAoQmxvY2tzUGFja2FnZSlFUGFja2FnZS5SZWdpc3RyeS5JTlNUQU5DRS5nZXRFUGFja2FnZShCbG9ja3NQYWNrYWdlLmVOU19VUkkpOw0KKw0KKwkJLy8gQ3JlYXRlIHR5cGUgcGFyYW1ldGVycw0KKw0KKwkJLy8gU2V0IGJvdW5kcyBmb3IgdHlwZSBwYXJhbWV0ZXJzDQorDQorCQkvLyBBZGQgc3VwZXJ0eXBlcyB0byBjbGFzc2VzDQorCQlhbGxvY2F0ZUVDbGFzcy5nZXRFU3VwZXJUeXBlcygpLmFkZCh0aGVCbG9ja3NQYWNrYWdlLmdldERpcmVjdGVkUmVsYXRpb25zaGlwUHJvcGVydHlQYXRoKCkpOw0KKw0KKwkJLy8gSW5pdGlhbGl6ZSBjbGFzc2VzLCBmZWF0dXJlcywgYW5kIG9wZXJhdGlvbnM7IGFkZCBwYXJhbWV0ZXJzDQorCQlpbml0RUNsYXNzKGFsbG9jYXRlQWN0aXZpdHlQYXJ0aXRpb25FQ2xhc3MsIEFsbG9jYXRlQWN0aXZpdHlQYXJ0aXRpb24uY2xhc3MsICJBbGxvY2F0ZUFjdGl2aXR5UGFydGl0aW9uIiwgIUlTX0FCU1RSQUNULCAhSVNfSU5URVJGQUNFLCBJU19HRU5FUkFURURfSU5TVEFOQ0VfQ0xBU1MpOyAvLyROT04tTkxTLTEkDQorCQlpbml0RVJlZmVyZW5jZShnZXRBbGxvY2F0ZUFjdGl2aXR5UGFydGl0aW9uX0Jhc2VfQWN0aXZpdHlQYXJ0aXRpb24oKSwgdGhlVU1MUGFja2FnZS5nZXRBY3Rpdml0eVBhcnRpdGlvbigpLCBudWxsLCAiYmFzZV9BY3Rpdml0eVBhcnRpdGlvbiIsIG51bGwsIDAsIDEsIEFsbG9jYXRlQWN0aXZpdHlQYXJ0aXRpb24uY2xhc3MsICFJU19UUkFOU0lFTlQsICFJU19WT0xBVElMRSwgSVNfQ0hBTkdFQUJMRSwgIUlTX0NPTVBPU0lURSwgSVNfUkVTT0xWRV9QUk9YSUVTLCAhSVNfVU5TRVRUQUJMRSwgSVNfVU5JUVVFLCAhSVNfREVSSVZFRCwgIUlTX09SREVSRUQpOyAvLyROT04tTkxTLTEkDQorDQorCQlpbml0RUNsYXNzKGFsbG9jYXRlRUNsYXNzLCBBbGxvY2F0ZS5jbGFzcywgIkFsbG9jYXRlIiwgIUlTX0FCU1RSQUNULCAhSVNfSU5URVJGQUNFLCBJU19HRU5FUkFURURfSU5TVEFOQ0VfQ0xBU1MpOyAvLyROT04tTkxTLTEkDQorCQlpbml0RVJlZmVyZW5jZShnZXRBbGxvY2F0ZV9CYXNlX0Fic3RyYWN0aW9uKCksIHRoZVVNTFBhY2thZ2UuZ2V0QWJzdHJhY3Rpb24oKSwgbnVsbCwgImJhc2VfQWJzdHJhY3Rpb24iLCBudWxsLCAwLCAxLCBBbGxvY2F0ZS5jbGFzcywgIUlTX1RSQU5TSUVOVCwgIUlTX1ZPTEFUSUxFLCBJU19DSEFOR0VBQkxFLCAhSVNfQ09NUE9TSVRFLCBJU19SRVNPTFZFX1BST1hJRVMsICFJU19VTlNFVFRBQkxFLCBJU19VTklRVUUsICFJU19ERVJJVkVELCAhSVNfT1JERVJFRCk7IC8vJE5PTi1OTFMtMSQNCisNCisJCUVPcGVyYXRpb24gb3AgPSBpbml0RU9wZXJhdGlvbihnZXRBbGxvY2F0ZV9fR2V0QWxsb2NhdGVkRnJvbV9fTmFtZWRFbGVtZW50KCksIHRoZVVNTFBhY2thZ2UuZ2V0TmFtZWRFbGVtZW50KCksICJnZXRBbGxvY2F0ZWRGcm9tIiwgMSwgLTEsIElTX1VOSVFVRSwgIUlTX09SREVSRUQpOyAvLyROT04tTkxTLTEkDQorCQlhZGRFUGFyYW1ldGVyKG9wLCB0aGVVTUxQYWNrYWdlLmdldE5hbWVkRWxlbWVudCgpLCAicmVmIiwgMSwgMSwgSVNfVU5JUVVFLCAhSVNfT1JERVJFRCk7IC8vJE5PTi1OTFMtMSQNCisNCisJCW9wID0gaW5pdEVPcGVyYXRpb24oZ2V0QWxsb2NhdGVfX0dldEFsbG9jYXRlZFRvX19OYW1lZEVsZW1lbnQoKSwgdGhlVU1MUGFja2FnZS5nZXROYW1lZEVsZW1lbnQoKSwgImdldEFsbG9jYXRlZFRvIiwgMSwgLTEsIElTX1VOSVFVRSwgIUlTX09SREVSRUQpOyAvLyROT04tTkxTLTEkDQorCQlhZGRFUGFyYW1ldGVyKG9wLCB0aGVVTUxQYWNrYWdlLmdldE5hbWVkRWxlbWVudCgpLCAicmVmIiwgMSwgMSwgSVNfVU5JUVVFLCAhSVNfT1JERVJFRCk7IC8vJE5PTi1OTFMtMSQNCisNCisJCS8vIENyZWF0ZSByZXNvdXJjZQ0KKwkJY3JlYXRlUmVzb3VyY2UoZU5TX1VSSSk7DQorDQorCQkvLyBDcmVhdGUgYW5ub3RhdGlvbnMNCisJCS8vIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvdW1sMi8yLjAuMC9VTUwNCisJCWNyZWF0ZVVNTEFubm90YXRpb25zKCk7DQorCX0NCisNCisJLyoqDQorCSAqIEluaXRpYWxpemVzIHRoZSBhbm5vdGF0aW9ucyBmb3IgPGI+aHR0cDovL3d3dy5lY2xpcHNlLm9yZy91bWwyLzIuMC4wL1VNTDwvYj4uDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwcm90ZWN0ZWQgdm9pZCBjcmVhdGVVTUxBbm5vdGF0aW9ucygpIHsNCisJCVN0cmluZyBzb3VyY2UgPSAiaHR0cDovL3d3dy5lY2xpcHNlLm9yZy91bWwyLzIuMC4wL1VNTCI7IC8vJE5PTi1OTFMtMSQJDQorCQlhZGRBbm5vdGF0aW9uDQorCQkgICh0aGlzLCANCisJCSAgIHNvdXJjZSwgDQorCQkgICBuZXcgU3RyaW5nW10gew0KKwkJCSAib3JpZ2luYWxOYW1lIiwgIkFsbG9jYXRpb25zIiAvLyROT04tTkxTLTEkIC8vJE5PTi1OTFMtMiQNCisJCSAgIH0pOw0KKwl9DQorDQorfSAvL0FsbG9jYXRpb25zUGFja2FnZUltcGwNCmRpZmYgLS1naXQgYS9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9hbGxvY2F0aW9ucy91dGlsL0FsbG9jYXRpb25zQWRhcHRlckZhY3RvcnkuamF2YSBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L2FsbG9jYXRpb25zL3V0aWwvQWxsb2NhdGlvbnNBZGFwdGVyRmFjdG9yeS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY0NGE3NjkKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9hbGxvY2F0aW9ucy91dGlsL0FsbG9jYXRpb25zQWRhcHRlckZhY3RvcnkuamF2YQpAQCAtMCwwICsxLDE2NCBAQAorLyoqDQorICogQ29weXJpZ2h0IChjKSAyMDE1IENFQSBMSVNULg0KKyAqIA0KKyAqICBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQorICogIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KKyAqICB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KKyAqICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqLw0KK3BhY2thZ2Ugb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmFsbG9jYXRpb25zLnV0aWw7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jb21tb24ubm90aWZ5LkFkYXB0ZXI7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jb21tb24ubm90aWZ5Lk5vdGlmaWVyOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY29tbW9uLm5vdGlmeS5pbXBsLkFkYXB0ZXJGYWN0b3J5SW1wbDsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVPYmplY3Q7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5hbGxvY2F0aW9ucy4qOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYmxvY2tzLkRpcmVjdGVkUmVsYXRpb25zaGlwUHJvcGVydHlQYXRoOw0KKw0KKy8qKg0KKyAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorICogVGhlIDxiPkFkYXB0ZXIgRmFjdG9yeTwvYj4gZm9yIHRoZSBtb2RlbC4NCisgKiBJdCBwcm92aWRlcyBhbiBhZGFwdGVyIDxjb2RlPmNyZWF0ZVhYWDwvY29kZT4gbWV0aG9kIGZvciBlYWNoIGNsYXNzIG9mIHRoZSBtb2RlbC4NCisgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5hbGxvY2F0aW9ucy5BbGxvY2F0aW9uc1BhY2thZ2UNCisgKiBAZ2VuZXJhdGVkDQorICovDQorcHVibGljIGNsYXNzIEFsbG9jYXRpb25zQWRhcHRlckZhY3RvcnkgZXh0ZW5kcyBBZGFwdGVyRmFjdG9yeUltcGwgew0KKwkvKioNCisJICogVGhlIGNhY2hlZCBtb2RlbCBwYWNrYWdlLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHJvdGVjdGVkIHN0YXRpYyBBbGxvY2F0aW9uc1BhY2thZ2UgbW9kZWxQYWNrYWdlOw0KKw0KKwkvKioNCisJICogQ3JlYXRlcyBhbiBpbnN0YW5jZSBvZiB0aGUgYWRhcHRlciBmYWN0b3J5Lg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIEFsbG9jYXRpb25zQWRhcHRlckZhY3RvcnkoKSB7DQorCQlpZiAobW9kZWxQYWNrYWdlID09IG51bGwpIHsNCisJCQltb2RlbFBhY2thZ2UgPSBBbGxvY2F0aW9uc1BhY2thZ2UuZUlOU1RBTkNFOw0KKwkJfQ0KKwl9DQorDQorCS8qKg0KKwkgKiBSZXR1cm5zIHdoZXRoZXIgdGhpcyBmYWN0b3J5IGlzIGFwcGxpY2FibGUgZm9yIHRoZSB0eXBlIG9mIHRoZSBvYmplY3QuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIFRoaXMgaW1wbGVtZW50YXRpb24gcmV0dXJucyA8Y29kZT50cnVlPC9jb2RlPiBpZiB0aGUgb2JqZWN0IGlzIGVpdGhlciB0aGUgbW9kZWwncyBwYWNrYWdlIG9yIGlzIGFuIGluc3RhbmNlIG9iamVjdCBvZiB0aGUgbW9kZWwuDQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAcmV0dXJuIHdoZXRoZXIgdGhpcyBmYWN0b3J5IGlzIGFwcGxpY2FibGUgZm9yIHRoZSB0eXBlIG9mIHRoZSBvYmplY3QuDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgYm9vbGVhbiBpc0ZhY3RvcnlGb3JUeXBlKE9iamVjdCBvYmplY3QpIHsNCisJCWlmIChvYmplY3QgPT0gbW9kZWxQYWNrYWdlKSB7DQorCQkJcmV0dXJuIHRydWU7DQorCQl9DQorCQlpZiAob2JqZWN0IGluc3RhbmNlb2YgRU9iamVjdCkgew0KKwkJCXJldHVybiAoKEVPYmplY3Qpb2JqZWN0KS5lQ2xhc3MoKS5nZXRFUGFja2FnZSgpID09IG1vZGVsUGFja2FnZTsNCisJCX0NCisJCXJldHVybiBmYWxzZTsNCisJfQ0KKw0KKwkvKioNCisJICogVGhlIHN3aXRjaCB0aGF0IGRlbGVnYXRlcyB0byB0aGUgPGNvZGU+Y3JlYXRlWFhYPC9jb2RlPiBtZXRob2RzLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHJvdGVjdGVkIEFsbG9jYXRpb25zU3dpdGNoPEFkYXB0ZXI+IG1vZGVsU3dpdGNoID0NCisJCW5ldyBBbGxvY2F0aW9uc1N3aXRjaDxBZGFwdGVyPigpIHsNCisJCQlAT3ZlcnJpZGUNCisJCQlwdWJsaWMgQWRhcHRlciBjYXNlQWxsb2NhdGVBY3Rpdml0eVBhcnRpdGlvbihBbGxvY2F0ZUFjdGl2aXR5UGFydGl0aW9uIG9iamVjdCkgew0KKwkJCQlyZXR1cm4gY3JlYXRlQWxsb2NhdGVBY3Rpdml0eVBhcnRpdGlvbkFkYXB0ZXIoKTsNCisJCQl9DQorCQkJQE92ZXJyaWRlDQorCQkJcHVibGljIEFkYXB0ZXIgY2FzZUFsbG9jYXRlKEFsbG9jYXRlIG9iamVjdCkgew0KKwkJCQlyZXR1cm4gY3JlYXRlQWxsb2NhdGVBZGFwdGVyKCk7DQorCQkJfQ0KKwkJCUBPdmVycmlkZQ0KKwkJCXB1YmxpYyBBZGFwdGVyIGNhc2VEaXJlY3RlZFJlbGF0aW9uc2hpcFByb3BlcnR5UGF0aChEaXJlY3RlZFJlbGF0aW9uc2hpcFByb3BlcnR5UGF0aCBvYmplY3QpIHsNCisJCQkJcmV0dXJuIGNyZWF0ZURpcmVjdGVkUmVsYXRpb25zaGlwUHJvcGVydHlQYXRoQWRhcHRlcigpOw0KKwkJCX0NCisJCQlAT3ZlcnJpZGUNCisJCQlwdWJsaWMgQWRhcHRlciBkZWZhdWx0Q2FzZShFT2JqZWN0IG9iamVjdCkgew0KKwkJCQlyZXR1cm4gY3JlYXRlRU9iamVjdEFkYXB0ZXIoKTsNCisJCQl9DQorCQl9Ow0KKw0KKwkvKioNCisJICogQ3JlYXRlcyBhbiBhZGFwdGVyIGZvciB0aGUgPGNvZGU+dGFyZ2V0PC9jb2RlPi4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBwYXJhbSB0YXJnZXQgdGhlIG9iamVjdCB0byBhZGFwdC4NCisJICogQHJldHVybiB0aGUgYWRhcHRlciBmb3IgdGhlIDxjb2RlPnRhcmdldDwvY29kZT4uDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgQWRhcHRlciBjcmVhdGVBZGFwdGVyKE5vdGlmaWVyIHRhcmdldCkgew0KKwkJcmV0dXJuIG1vZGVsU3dpdGNoLmRvU3dpdGNoKChFT2JqZWN0KXRhcmdldCk7DQorCX0NCisNCisNCisJLyoqDQorCSAqIENyZWF0ZXMgYSBuZXcgYWRhcHRlciBmb3IgYW4gb2JqZWN0IG9mIGNsYXNzICd7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmFsbG9jYXRpb25zLkFsbG9jYXRlQWN0aXZpdHlQYXJ0aXRpb24gPGVtPkFsbG9jYXRlIEFjdGl2aXR5IFBhcnRpdGlvbjwvZW0+fScuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIFRoaXMgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiByZXR1cm5zIG51bGwgc28gdGhhdCB3ZSBjYW4gZWFzaWx5IGlnbm9yZSBjYXNlczsNCisJICogaXQncyB1c2VmdWwgdG8gaWdub3JlIGEgY2FzZSB3aGVuIGluaGVyaXRhbmNlIHdpbGwgY2F0Y2ggYWxsIHRoZSBjYXNlcyBhbnl3YXkuDQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAcmV0dXJuIHRoZSBuZXcgYWRhcHRlci4NCisJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYWxsb2NhdGlvbnMuQWxsb2NhdGVBY3Rpdml0eVBhcnRpdGlvbg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgQWRhcHRlciBjcmVhdGVBbGxvY2F0ZUFjdGl2aXR5UGFydGl0aW9uQWRhcHRlcigpIHsNCisJCXJldHVybiBudWxsOw0KKwl9DQorDQorCS8qKg0KKwkgKiBDcmVhdGVzIGEgbmV3IGFkYXB0ZXIgZm9yIGFuIG9iamVjdCBvZiBjbGFzcyAne0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5hbGxvY2F0aW9ucy5BbGxvY2F0ZSA8ZW0+QWxsb2NhdGU8L2VtPn0nLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiBUaGlzIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gcmV0dXJucyBudWxsIHNvIHRoYXQgd2UgY2FuIGVhc2lseSBpZ25vcmUgY2FzZXM7DQorCSAqIGl0J3MgdXNlZnVsIHRvIGlnbm9yZSBhIGNhc2Ugd2hlbiBpbmhlcml0YW5jZSB3aWxsIGNhdGNoIGFsbCB0aGUgY2FzZXMgYW55d2F5Lg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHJldHVybiB0aGUgbmV3IGFkYXB0ZXIuDQorCSAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmFsbG9jYXRpb25zLkFsbG9jYXRlDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBBZGFwdGVyIGNyZWF0ZUFsbG9jYXRlQWRhcHRlcigpIHsNCisJCXJldHVybiBudWxsOw0KKwl9DQorDQorCS8qKg0KKwkgKiBDcmVhdGVzIGEgbmV3IGFkYXB0ZXIgZm9yIGFuIG9iamVjdCBvZiBjbGFzcyAne0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5ibG9ja3MuRGlyZWN0ZWRSZWxhdGlvbnNoaXBQcm9wZXJ0eVBhdGggPGVtPkRpcmVjdGVkIFJlbGF0aW9uc2hpcCBQcm9wZXJ0eSBQYXRoPC9lbT59Jy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogVGhpcyBkZWZhdWx0IGltcGxlbWVudGF0aW9uIHJldHVybnMgbnVsbCBzbyB0aGF0IHdlIGNhbiBlYXNpbHkgaWdub3JlIGNhc2VzOw0KKwkgKiBpdCdzIHVzZWZ1bCB0byBpZ25vcmUgYSBjYXNlIHdoZW4gaW5oZXJpdGFuY2Ugd2lsbCBjYXRjaCBhbGwgdGhlIGNhc2VzIGFueXdheS4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEByZXR1cm4gdGhlIG5ldyBhZGFwdGVyLg0KKwkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5ibG9ja3MuRGlyZWN0ZWRSZWxhdGlvbnNoaXBQcm9wZXJ0eVBhdGgNCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIEFkYXB0ZXIgY3JlYXRlRGlyZWN0ZWRSZWxhdGlvbnNoaXBQcm9wZXJ0eVBhdGhBZGFwdGVyKCkgew0KKwkJcmV0dXJuIG51bGw7DQorCX0NCisNCisJLyoqDQorCSAqIENyZWF0ZXMgYSBuZXcgYWRhcHRlciBmb3IgdGhlIGRlZmF1bHQgY2FzZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogVGhpcyBkZWZhdWx0IGltcGxlbWVudGF0aW9uIHJldHVybnMgbnVsbC4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEByZXR1cm4gdGhlIG5ldyBhZGFwdGVyLg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgQWRhcHRlciBjcmVhdGVFT2JqZWN0QWRhcHRlcigpIHsNCisJCXJldHVybiBudWxsOw0KKwl9DQorDQorfSAvL0FsbG9jYXRpb25zQWRhcHRlckZhY3RvcnkNCmRpZmYgLS1naXQgYS9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9hbGxvY2F0aW9ucy91dGlsL0FsbG9jYXRpb25zU3dpdGNoLmphdmEgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9hbGxvY2F0aW9ucy91dGlsL0FsbG9jYXRpb25zU3dpdGNoLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTY4ZjFjNgotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L2FsbG9jYXRpb25zL3V0aWwvQWxsb2NhdGlvbnNTd2l0Y2guamF2YQpAQCAtMCwwICsxLDE1NSBAQAorLyoqDQorICogQ29weXJpZ2h0IChjKSAyMDE1IENFQSBMSVNULg0KKyAqIA0KKyAqICBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQorICogIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KKyAqICB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KKyAqICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqLw0KK3BhY2thZ2Ugb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmFsbG9jYXRpb25zLnV0aWw7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FT2JqZWN0Ow0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRVBhY2thZ2U7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS51dGlsLlN3aXRjaDsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmFsbG9jYXRpb25zLio7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5ibG9ja3MuRGlyZWN0ZWRSZWxhdGlvbnNoaXBQcm9wZXJ0eVBhdGg7DQorDQorLyoqDQorICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisgKiBUaGUgPGI+U3dpdGNoPC9iPiBmb3IgdGhlIG1vZGVsJ3MgaW5oZXJpdGFuY2UgaGllcmFyY2h5Lg0KKyAqIEl0IHN1cHBvcnRzIHRoZSBjYWxsIHtAbGluayAjZG9Td2l0Y2goRU9iamVjdCkgZG9Td2l0Y2gob2JqZWN0KX0NCisgKiB0byBpbnZva2UgdGhlIDxjb2RlPmNhc2VYWFg8L2NvZGU+IG1ldGhvZCBmb3IgZWFjaCBjbGFzcyBvZiB0aGUgbW9kZWwsDQorICogc3RhcnRpbmcgd2l0aCB0aGUgYWN0dWFsIGNsYXNzIG9mIHRoZSBvYmplY3QNCisgKiBhbmQgcHJvY2VlZGluZyB1cCB0aGUgaW5oZXJpdGFuY2UgaGllcmFyY2h5DQorICogdW50aWwgYSBub24tbnVsbCByZXN1bHQgaXMgcmV0dXJuZWQsDQorICogd2hpY2ggaXMgdGhlIHJlc3VsdCBvZiB0aGUgc3dpdGNoLg0KKyAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKyAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmFsbG9jYXRpb25zLkFsbG9jYXRpb25zUGFja2FnZQ0KKyAqIEBnZW5lcmF0ZWQNCisgKi8NCitwdWJsaWMgY2xhc3MgQWxsb2NhdGlvbnNTd2l0Y2g8VD4gZXh0ZW5kcyBTd2l0Y2g8VD4gew0KKwkvKioNCisJICogVGhlIGNhY2hlZCBtb2RlbCBwYWNrYWdlDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwcm90ZWN0ZWQgc3RhdGljIEFsbG9jYXRpb25zUGFja2FnZSBtb2RlbFBhY2thZ2U7DQorDQorCS8qKg0KKwkgKiBDcmVhdGVzIGFuIGluc3RhbmNlIG9mIHRoZSBzd2l0Y2guDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgQWxsb2NhdGlvbnNTd2l0Y2goKSB7DQorCQlpZiAobW9kZWxQYWNrYWdlID09IG51bGwpIHsNCisJCQltb2RlbFBhY2thZ2UgPSBBbGxvY2F0aW9uc1BhY2thZ2UuZUlOU1RBTkNFOw0KKwkJfQ0KKwl9DQorDQorCS8qKg0KKwkgKiBDaGVja3Mgd2hldGhlciB0aGlzIGlzIGEgc3dpdGNoIGZvciB0aGUgZ2l2ZW4gcGFja2FnZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBwYXJhbSBlUGFja2FnZSB0aGUgcGFja2FnZSBpbiBxdWVzdGlvbi4NCisJICogQHJldHVybiB3aGV0aGVyIHRoaXMgaXMgYSBzd2l0Y2ggZm9yIHRoZSBnaXZlbiBwYWNrYWdlLg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHJvdGVjdGVkIGJvb2xlYW4gaXNTd2l0Y2hGb3IoRVBhY2thZ2UgZVBhY2thZ2UpIHsNCisJCXJldHVybiBlUGFja2FnZSA9PSBtb2RlbFBhY2thZ2U7DQorCX0NCisNCisJLyoqDQorCSAqIENhbGxzIDxjb2RlPmNhc2VYWFg8L2NvZGU+IGZvciBlYWNoIGNsYXNzIG9mIHRoZSBtb2RlbCB1bnRpbCBvbmUgcmV0dXJucyBhIG5vbiBudWxsIHJlc3VsdDsgaXQgeWllbGRzIHRoYXQgcmVzdWx0Lg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHJldHVybiB0aGUgZmlyc3Qgbm9uLW51bGwgcmVzdWx0IHJldHVybmVkIGJ5IGEgPGNvZGU+Y2FzZVhYWDwvY29kZT4gY2FsbC4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXByb3RlY3RlZCBUIGRvU3dpdGNoKGludCBjbGFzc2lmaWVySUQsIEVPYmplY3QgdGhlRU9iamVjdCkgew0KKwkJc3dpdGNoIChjbGFzc2lmaWVySUQpIHsNCisJCQljYXNlIEFsbG9jYXRpb25zUGFja2FnZS5BTExPQ0FURV9BQ1RJVklUWV9QQVJUSVRJT046IHsNCisJCQkJQWxsb2NhdGVBY3Rpdml0eVBhcnRpdGlvbiBhbGxvY2F0ZUFjdGl2aXR5UGFydGl0aW9uID0gKEFsbG9jYXRlQWN0aXZpdHlQYXJ0aXRpb24pdGhlRU9iamVjdDsNCisJCQkJVCByZXN1bHQgPSBjYXNlQWxsb2NhdGVBY3Rpdml0eVBhcnRpdGlvbihhbGxvY2F0ZUFjdGl2aXR5UGFydGl0aW9uKTsNCisJCQkJaWYgKHJlc3VsdCA9PSBudWxsKSByZXN1bHQgPSBkZWZhdWx0Q2FzZSh0aGVFT2JqZWN0KTsNCisJCQkJcmV0dXJuIHJlc3VsdDsNCisJCQl9DQorCQkJY2FzZSBBbGxvY2F0aW9uc1BhY2thZ2UuQUxMT0NBVEU6IHsNCisJCQkJQWxsb2NhdGUgYWxsb2NhdGUgPSAoQWxsb2NhdGUpdGhlRU9iamVjdDsNCisJCQkJVCByZXN1bHQgPSBjYXNlQWxsb2NhdGUoYWxsb2NhdGUpOw0KKwkJCQlpZiAocmVzdWx0ID09IG51bGwpIHJlc3VsdCA9IGNhc2VEaXJlY3RlZFJlbGF0aW9uc2hpcFByb3BlcnR5UGF0aChhbGxvY2F0ZSk7DQorCQkJCWlmIChyZXN1bHQgPT0gbnVsbCkgcmVzdWx0ID0gZGVmYXVsdENhc2UodGhlRU9iamVjdCk7DQorCQkJCXJldHVybiByZXN1bHQ7DQorCQkJfQ0KKwkJCWRlZmF1bHQ6IHJldHVybiBkZWZhdWx0Q2FzZSh0aGVFT2JqZWN0KTsNCisJCX0NCisJfQ0KKw0KKwkvKioNCisJICogUmV0dXJucyB0aGUgcmVzdWx0IG9mIGludGVycHJldGluZyB0aGUgb2JqZWN0IGFzIGFuIGluc3RhbmNlIG9mICc8ZW0+QWxsb2NhdGUgQWN0aXZpdHkgUGFydGl0aW9uPC9lbT4nLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiBUaGlzIGltcGxlbWVudGF0aW9uIHJldHVybnMgbnVsbDsNCisJICogcmV0dXJuaW5nIGEgbm9uLW51bGwgcmVzdWx0IHdpbGwgdGVybWluYXRlIHRoZSBzd2l0Y2guDQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAcGFyYW0gb2JqZWN0IHRoZSB0YXJnZXQgb2YgdGhlIHN3aXRjaC4NCisJICogQHJldHVybiB0aGUgcmVzdWx0IG9mIGludGVycHJldGluZyB0aGUgb2JqZWN0IGFzIGFuIGluc3RhbmNlIG9mICc8ZW0+QWxsb2NhdGUgQWN0aXZpdHkgUGFydGl0aW9uPC9lbT4nLg0KKwkgKiBAc2VlICNkb1N3aXRjaChvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRU9iamVjdCkgZG9Td2l0Y2goRU9iamVjdCkNCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIFQgY2FzZUFsbG9jYXRlQWN0aXZpdHlQYXJ0aXRpb24oQWxsb2NhdGVBY3Rpdml0eVBhcnRpdGlvbiBvYmplY3QpIHsNCisJCXJldHVybiBudWxsOw0KKwl9DQorDQorCS8qKg0KKwkgKiBSZXR1cm5zIHRoZSByZXN1bHQgb2YgaW50ZXJwcmV0aW5nIHRoZSBvYmplY3QgYXMgYW4gaW5zdGFuY2Ugb2YgJzxlbT5BbGxvY2F0ZTwvZW0+Jy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogVGhpcyBpbXBsZW1lbnRhdGlvbiByZXR1cm5zIG51bGw7DQorCSAqIHJldHVybmluZyBhIG5vbi1udWxsIHJlc3VsdCB3aWxsIHRlcm1pbmF0ZSB0aGUgc3dpdGNoLg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHBhcmFtIG9iamVjdCB0aGUgdGFyZ2V0IG9mIHRoZSBzd2l0Y2guDQorCSAqIEByZXR1cm4gdGhlIHJlc3VsdCBvZiBpbnRlcnByZXRpbmcgdGhlIG9iamVjdCBhcyBhbiBpbnN0YW5jZSBvZiAnPGVtPkFsbG9jYXRlPC9lbT4nLg0KKwkgKiBAc2VlICNkb1N3aXRjaChvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRU9iamVjdCkgZG9Td2l0Y2goRU9iamVjdCkNCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIFQgY2FzZUFsbG9jYXRlKEFsbG9jYXRlIG9iamVjdCkgew0KKwkJcmV0dXJuIG51bGw7DQorCX0NCisNCisJLyoqDQorCSAqIFJldHVybnMgdGhlIHJlc3VsdCBvZiBpbnRlcnByZXRpbmcgdGhlIG9iamVjdCBhcyBhbiBpbnN0YW5jZSBvZiAnPGVtPkRpcmVjdGVkIFJlbGF0aW9uc2hpcCBQcm9wZXJ0eSBQYXRoPC9lbT4nLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiBUaGlzIGltcGxlbWVudGF0aW9uIHJldHVybnMgbnVsbDsNCisJICogcmV0dXJuaW5nIGEgbm9uLW51bGwgcmVzdWx0IHdpbGwgdGVybWluYXRlIHRoZSBzd2l0Y2guDQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAcGFyYW0gb2JqZWN0IHRoZSB0YXJnZXQgb2YgdGhlIHN3aXRjaC4NCisJICogQHJldHVybiB0aGUgcmVzdWx0IG9mIGludGVycHJldGluZyB0aGUgb2JqZWN0IGFzIGFuIGluc3RhbmNlIG9mICc8ZW0+RGlyZWN0ZWQgUmVsYXRpb25zaGlwIFByb3BlcnR5IFBhdGg8L2VtPicuDQorCSAqIEBzZWUgI2RvU3dpdGNoKG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FT2JqZWN0KSBkb1N3aXRjaChFT2JqZWN0KQ0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgVCBjYXNlRGlyZWN0ZWRSZWxhdGlvbnNoaXBQcm9wZXJ0eVBhdGgoRGlyZWN0ZWRSZWxhdGlvbnNoaXBQcm9wZXJ0eVBhdGggb2JqZWN0KSB7DQorCQlyZXR1cm4gbnVsbDsNCisJfQ0KKw0KKwkvKioNCisJICogUmV0dXJucyB0aGUgcmVzdWx0IG9mIGludGVycHJldGluZyB0aGUgb2JqZWN0IGFzIGFuIGluc3RhbmNlIG9mICc8ZW0+RU9iamVjdDwvZW0+Jy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogVGhpcyBpbXBsZW1lbnRhdGlvbiByZXR1cm5zIG51bGw7DQorCSAqIHJldHVybmluZyBhIG5vbi1udWxsIHJlc3VsdCB3aWxsIHRlcm1pbmF0ZSB0aGUgc3dpdGNoLCBidXQgdGhpcyBpcyB0aGUgbGFzdCBjYXNlIGFueXdheS4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBwYXJhbSBvYmplY3QgdGhlIHRhcmdldCBvZiB0aGUgc3dpdGNoLg0KKwkgKiBAcmV0dXJuIHRoZSByZXN1bHQgb2YgaW50ZXJwcmV0aW5nIHRoZSBvYmplY3QgYXMgYW4gaW5zdGFuY2Ugb2YgJzxlbT5FT2JqZWN0PC9lbT4nLg0KKwkgKiBAc2VlICNkb1N3aXRjaChvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRU9iamVjdCkNCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXB1YmxpYyBUIGRlZmF1bHRDYXNlKEVPYmplY3Qgb2JqZWN0KSB7DQorCQlyZXR1cm4gbnVsbDsNCisJfQ0KKw0KK30gLy9BbGxvY2F0aW9uc1N3aXRjaA0KZGlmZiAtLWdpdCBhL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L2Jsb2Nrcy9BZGp1bmN0UHJvcGVydHkuamF2YSBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L2Jsb2Nrcy9BZGp1bmN0UHJvcGVydHkuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYTA2Mzc1Ci0tLSAvZGV2L251bGwKKysrIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvYmxvY2tzL0FkanVuY3RQcm9wZXJ0eS5qYXZhCkBAIC0wLDAgKzEsODkgQEAKKy8qKg0KKyAqIENvcHlyaWdodCAoYykgMjAxNSBDRUEgTElTVC4NCisgKiANCisgKiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KKyAqICBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCisgKiAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCisgKiAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgKi8NCitwYWNrYWdlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5ibG9ja3M7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FT2JqZWN0Ow0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS51bWwyLnVtbC5FbGVtZW50Ow0KK2ltcG9ydCBvcmcuZWNsaXBzZS51bWwyLnVtbC5Qcm9wZXJ0eTsNCisNCisvKioNCisgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKyAqIEEgcmVwcmVzZW50YXRpb24gb2YgdGhlIG1vZGVsIG9iamVjdCAnPGVtPjxiPkFkanVuY3QgUHJvcGVydHk8L2I+PC9lbT4nLg0KKyAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKyAqDQorICogPCEtLSBiZWdpbi1tb2RlbC1kb2MgLS0+DQorICogVGhlIEFkanVuY3RQcm9wZXJ0eSBzdGVyZW90eXBlIGNhbiBiZSBhcHBsaWVkIHRvIHByb3BlcnRpZXMgdG8gY29uc3RyYWluIHRoZWlyIHZhbHVlcyB0byB0aGUgdmFsdWVzIG9mIGNvbm5lY3RvcnMgdHlwZWQgYnkgYXNzb2NpYXRpb24gYmxvY2tzLCBjYWxsIGFjdGlvbnMsIG9iamVjdCBub2RlcywgdmFyaWFibGVzLCBvciBwYXJhbWV0ZXJzLCBpbnRlcmFjdGlvbiB1c2VzLCBhbmQgc3VibWFjaGluZSBzdGF0ZXMuICBUaGUgdmFsdWVzIG9mIGNvbm5lY3RvcnMgdHlwZWQgYnkgYXNzb2NpYXRpb24gYmxvY2tzIGFyZSB0aGUgaW5zdGFuY2VzIG9mIHRoZSBhc3NvY2lhdGlvbiBibG9jayB0eXBpbmcgYSBjb25uZWN0b3IgaW4gdGhlIGJsb2NrIGhhdmluZyB0aGUgc3RlcmVvdHlwZWQgcHJvcGVydHkuICBUaGUgdmFsdWVzIG9mIGNhbGwgYWN0aW9ucyBhcmUgdGhlIGV4ZWN1dGlvbnMgb2YgYmVoYXZpb3JzIGludm9rZWQgYnkgdGhlIGJlaGF2aW9yIGhhdmluZyB0aGUgY2FsbCBhY3Rpb24gYW5kIHRoZSBzdGVyZW90eXBlZCBwcm9wZXJ0eSAoc2VlIFN1YmNsYXVzZSAxMS4zLjEuMS4xIGZvciBtb3JlIGFib3V0IHRoaXMgdXNlIG9mIHRoZSBzdGVyZW90eXBlKS4gIFRoZSB2YWx1ZXMgb2Ygb2JqZWN0IG5vZGVzIGFyZSB0aGUgdmFsdWVzIG9mIHRva2VucyBpbiB0aGUgb2JqZWN0IG5vZGVzIG9mIHRoZSBiZWhhdmlvciBoYXZpbmcgdGhlIHN0ZXJlb3R5cGVkIHByb3BlcnR5IChzZWUgU3ViY2xhdXNlIDExLjMuMS40LjEgZm9yIG1vcmUgYWJvdXQgdGhpcyB1c2Ugb2YgdGhlIHN0ZXJlb3R5cGUpLiAgVGhlIHZhbHVlcyBvZiB2YXJpYWJsZXMgYXJlIHRob3NlIGFzc2lnbmVkIGJ5IGV4ZWN1dGlvbnMgb2YgYWN0aXZpdGllcyB0aGF0IGhhdmUgdGhlIHN0ZXJlb3R5cGVkIHByb3BlcnR5LiAgVGhlIHZhbHVlcyBvZiBwYXJhbWV0ZXJzIGFyZSB0aG9zZSBhc3NpZ25lZCBieSBleGVjdXRpb25zIG9mIGJlaGF2aW9ycyB0aGF0IGhhdmUgdGhlIHN0ZXJlb3R5cGVkIHByb3BlcnR5LiAgVGhlIGtleXdvcmQgq2FkanVuY3S7IGJlZm9yZSBhIHByb3BlcnR5IG5hbWUgaW5kaWNhdGVzIHRoZSBwcm9wZXJ0eSBpcyBzdGVyZW90eXBlZCBieSBBZGp1bmN0UHJvcGVydHkuDQorICogPCEtLSBlbmQtbW9kZWwtZG9jIC0tPg0KKyAqDQorICogPHA+DQorICogVGhlIGZvbGxvd2luZyBmZWF0dXJlcyBhcmUgc3VwcG9ydGVkOg0KKyAqIDx1bD4NCisgKiAgIDxsaT57QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmJsb2Nrcy5BZGp1bmN0UHJvcGVydHkjZ2V0QmFzZV9Qcm9wZXJ0eSA8ZW0+QmFzZSBQcm9wZXJ0eTwvZW0+fTwvbGk+DQorICogICA8bGk+e0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5ibG9ja3MuQWRqdW5jdFByb3BlcnR5I2dldFByaW5jaXBhbCA8ZW0+UHJpbmNpcGFsPC9lbT59PC9saT4NCisgKiA8L3VsPg0KKyAqIDwvcD4NCisgKg0KKyAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmJsb2Nrcy5CbG9ja3NQYWNrYWdlI2dldEFkanVuY3RQcm9wZXJ0eSgpDQorICogQG1vZGVsDQorICogQGdlbmVyYXRlZA0KKyAqLw0KK3B1YmxpYyBpbnRlcmZhY2UgQWRqdW5jdFByb3BlcnR5IGV4dGVuZHMgRU9iamVjdCB7DQorCS8qKg0KKwkgKiBSZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT48Yj5CYXNlIFByb3BlcnR5PC9iPjwvZW0+JyByZWZlcmVuY2UuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDxwPg0KKwkgKiBJZiB0aGUgbWVhbmluZyBvZiB0aGUgJzxlbT5CYXNlIFByb3BlcnR5PC9lbT4nIHJlZmVyZW5jZSBpc24ndCBjbGVhciwNCisJICogdGhlcmUgcmVhbGx5IHNob3VsZCBiZSBtb3JlIG9mIGEgZGVzY3JpcHRpb24gaGVyZS4uLg0KKwkgKiA8L3A+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAcmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT5CYXNlIFByb3BlcnR5PC9lbT4nIHJlZmVyZW5jZS4NCisJICogQHNlZSAjc2V0QmFzZV9Qcm9wZXJ0eShQcm9wZXJ0eSkNCisJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYmxvY2tzLkJsb2Nrc1BhY2thZ2UjZ2V0QWRqdW5jdFByb3BlcnR5X0Jhc2VfUHJvcGVydHkoKQ0KKwkgKiBAbW9kZWwgb3JkZXJlZD0iZmFsc2UiDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCVByb3BlcnR5IGdldEJhc2VfUHJvcGVydHkoKTsNCisNCisJLyoqDQorCSAqIFNldHMgdGhlIHZhbHVlIG9mIHRoZSAne0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5ibG9ja3MuQWRqdW5jdFByb3BlcnR5I2dldEJhc2VfUHJvcGVydHkgPGVtPkJhc2UgUHJvcGVydHk8L2VtPn0nIHJlZmVyZW5jZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBwYXJhbSB2YWx1ZSB0aGUgbmV3IHZhbHVlIG9mIHRoZSAnPGVtPkJhc2UgUHJvcGVydHk8L2VtPicgcmVmZXJlbmNlLg0KKwkgKiBAc2VlICNnZXRCYXNlX1Byb3BlcnR5KCkNCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJdm9pZCBzZXRCYXNlX1Byb3BlcnR5KFByb3BlcnR5IHZhbHVlKTsNCisNCisJLyoqDQorCSAqIFJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSAnPGVtPjxiPlByaW5jaXBhbDwvYj48L2VtPicgcmVmZXJlbmNlLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogPCEtLSBiZWdpbi1tb2RlbC1kb2MgLS0+DQorCSAqIEdpdmVzIHRoZSBlbGVtZW50IHRoYXQgZGV0ZXJtaW5lcyB0aGUgdmFsdWVzIG9mIHRoZSBwcm9wZXJ0eS4gIE11c3QgYmUgYSBjb25uZWN0b3IsIGNhbGwgYWN0aW9uLCBvYmplY3Qgbm9kZSwgdmFyaWFibGUsIG9yIHBhcmFtZXRlci4NCisJICogPCEtLSBlbmQtbW9kZWwtZG9jIC0tPg0KKwkgKiBAcmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT5QcmluY2lwYWw8L2VtPicgcmVmZXJlbmNlLg0KKwkgKiBAc2VlICNzZXRQcmluY2lwYWwoRWxlbWVudCkNCisJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYmxvY2tzLkJsb2Nrc1BhY2thZ2UjZ2V0QWRqdW5jdFByb3BlcnR5X1ByaW5jaXBhbCgpDQorCSAqIEBtb2RlbCByZXF1aXJlZD0idHJ1ZSIgb3JkZXJlZD0iZmFsc2UiDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUVsZW1lbnQgZ2V0UHJpbmNpcGFsKCk7DQorDQorCS8qKg0KKwkgKiBTZXRzIHRoZSB2YWx1ZSBvZiB0aGUgJ3tAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYmxvY2tzLkFkanVuY3RQcm9wZXJ0eSNnZXRQcmluY2lwYWwgPGVtPlByaW5jaXBhbDwvZW0+fScgcmVmZXJlbmNlLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHBhcmFtIHZhbHVlIHRoZSBuZXcgdmFsdWUgb2YgdGhlICc8ZW0+UHJpbmNpcGFsPC9lbT4nIHJlZmVyZW5jZS4NCisJICogQHNlZSAjZ2V0UHJpbmNpcGFsKCkNCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJdm9pZCBzZXRQcmluY2lwYWwoRWxlbWVudCB2YWx1ZSk7DQorDQorfSAvLyBBZGp1bmN0UHJvcGVydHkNCmRpZmYgLS1naXQgYS9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9ibG9ja3MvQmluZGluZ0Nvbm5lY3Rvci5qYXZhIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvYmxvY2tzL0JpbmRpbmdDb25uZWN0b3IuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YjgzYjI2Ci0tLSAvZGV2L251bGwKKysrIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvYmxvY2tzL0JpbmRpbmdDb25uZWN0b3IuamF2YQpAQCAtMCwwICsxLDYyIEBACisvKioNCisgKiBDb3B5cmlnaHQgKGMpIDIwMTUgQ0VBIExJU1QuDQorICogDQorICogIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCisgKiAgYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQorICogIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQorICogIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICovDQorcGFja2FnZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYmxvY2tzOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRU9iamVjdDsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UudW1sMi51bWwuQ29ubmVjdG9yOw0KKw0KKy8qKg0KKyAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorICogQSByZXByZXNlbnRhdGlvbiBvZiB0aGUgbW9kZWwgb2JqZWN0ICc8ZW0+PGI+QmluZGluZyBDb25uZWN0b3I8L2I+PC9lbT4nLg0KKyAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKyAqDQorICogPCEtLSBiZWdpbi1tb2RlbC1kb2MgLS0+DQorICogQSBCaW5kaW5nIENvbm5lY3RvciBpcyBhIGNvbm5lY3RvciB3aGljaCBzcGVjaWZpZXMgdGhhdCB0aGUgcHJvcGVydGllcyBhdCBib3RoIGVuZHMgb2YgdGhlIGNvbm5lY3RvciBoYXZlIGVxdWFsIHZhbHVlcy4gSWYgdGhlIHByb3BlcnRpZXMgYXQgdGhlIGVuZHMgb2YgYSBiaW5kaW5nIGNvbm5lY3RvciBhcmUgdHlwZWQgYnkgYSBEYXRhVHlwZSBvciBWYWx1ZVR5cGUsIHRoZSBjb25uZWN0b3Igc3BlY2lmaWVzIHRoYXQgdGhlIGluc3RhbmNlcyBvZiB0aGUgcHJvcGVydGllcyBtdXN0IGhvbGQgZXF1YWwgdmFsdWVzLCByZWN1cnNpdmVseSB0aHJvdWdoIGFueSBuZXN0ZWQgcHJvcGVydGllcyB3aXRoaW4gdGhlIGNvbm5lY3RlZCBwcm9wZXJ0aWVzLiBJZiB0aGUgcHJvcGVydGllcyBhdCB0aGUgZW5kcyBvZiBhIGJpbmRpbmcgY29ubmVjdG9yIGFyZSB0eXBlZCBieSBhIEJsb2NrLCB0aGUgY29ubmVjdG9yIHNwZWNpZmllcyB0aGF0IHRoZSBpbnN0YW5jZXMgb2YgdGhlIHByb3BlcnRpZXMgbXVzdCByZWZlciB0byB0aGUgc2FtZSBibG9jayBpbnN0YW5jZS4gQXMgd2l0aCBhbnkgY29ubmVjdG9yIG93bmVkIGJ5IGEgU3lzTUwgQmxvY2ssIHRoZSBlbmRzIG9mIGEgYmluZGluZyBjb25uZWN0b3IgbWF5IGJlIG5lc3RlZCB3aXRoaW4gYSBtdWx0aS1sZXZlbCBwYXRoIG9mIHByb3BlcnRpZXMgYWNjZXNzaWJsZSBmcm9tIHRoZSBvd25pbmcgYmxvY2suIFRoZSBOZXN0ZWRDb25uZWN0b3JFbmQgc3RlcmVvdHlwZSBpcyB1c2VkIHRvIHJlcHJlc2VudCBzdWNoIG5lc3RlZCBlbmRzIGp1c3QgYXMgZm9yIG5lc3RlZCBlbmRzIG9mIG90aGVyIFN5c01MIGNvbm5lY3RvcnMuDQorICogPCEtLSBlbmQtbW9kZWwtZG9jIC0tPg0KKyAqDQorICogPHA+DQorICogVGhlIGZvbGxvd2luZyBmZWF0dXJlcyBhcmUgc3VwcG9ydGVkOg0KKyAqIDx1bD4NCisgKiAgIDxsaT57QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmJsb2Nrcy5CaW5kaW5nQ29ubmVjdG9yI2dldEJhc2VfQ29ubmVjdG9yIDxlbT5CYXNlIENvbm5lY3RvcjwvZW0+fTwvbGk+DQorICogPC91bD4NCisgKiA8L3A+DQorICoNCisgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5ibG9ja3MuQmxvY2tzUGFja2FnZSNnZXRCaW5kaW5nQ29ubmVjdG9yKCkNCisgKiBAbW9kZWwNCisgKiBAZ2VuZXJhdGVkDQorICovDQorcHVibGljIGludGVyZmFjZSBCaW5kaW5nQ29ubmVjdG9yIGV4dGVuZHMgRU9iamVjdCB7DQorCS8qKg0KKwkgKiBSZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT48Yj5CYXNlIENvbm5lY3RvcjwvYj48L2VtPicgcmVmZXJlbmNlLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8cD4NCisJICogSWYgdGhlIG1lYW5pbmcgb2YgdGhlICc8ZW0+QmFzZSBDb25uZWN0b3I8L2VtPicgcmVmZXJlbmNlIGlzbid0IGNsZWFyLA0KKwkgKiB0aGVyZSByZWFsbHkgc2hvdWxkIGJlIG1vcmUgb2YgYSBkZXNjcmlwdGlvbiBoZXJlLi4uDQorCSAqIDwvcD4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEByZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSAnPGVtPkJhc2UgQ29ubmVjdG9yPC9lbT4nIHJlZmVyZW5jZS4NCisJICogQHNlZSAjc2V0QmFzZV9Db25uZWN0b3IoQ29ubmVjdG9yKQ0KKwkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5ibG9ja3MuQmxvY2tzUGFja2FnZSNnZXRCaW5kaW5nQ29ubmVjdG9yX0Jhc2VfQ29ubmVjdG9yKCkNCisJICogQG1vZGVsIG9yZGVyZWQ9ImZhbHNlIg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlDb25uZWN0b3IgZ2V0QmFzZV9Db25uZWN0b3IoKTsNCisNCisJLyoqDQorCSAqIFNldHMgdGhlIHZhbHVlIG9mIHRoZSAne0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5ibG9ja3MuQmluZGluZ0Nvbm5lY3RvciNnZXRCYXNlX0Nvbm5lY3RvciA8ZW0+QmFzZSBDb25uZWN0b3I8L2VtPn0nIHJlZmVyZW5jZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBwYXJhbSB2YWx1ZSB0aGUgbmV3IHZhbHVlIG9mIHRoZSAnPGVtPkJhc2UgQ29ubmVjdG9yPC9lbT4nIHJlZmVyZW5jZS4NCisJICogQHNlZSAjZ2V0QmFzZV9Db25uZWN0b3IoKQ0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwl2b2lkIHNldEJhc2VfQ29ubmVjdG9yKENvbm5lY3RvciB2YWx1ZSk7DQorDQorfSAvLyBCaW5kaW5nQ29ubmVjdG9yDQpkaWZmIC0tZ2l0IGEvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvYmxvY2tzL0Jsb2NrLmphdmEgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9ibG9ja3MvQmxvY2suamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NzcwY2YxCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvYmxvY2tzL0Jsb2NrLmphdmEKQEAgLTAsMCArMSw4NiBAQAorLyoqDQorICogQ29weXJpZ2h0IChjKSAyMDE1IENFQSBMSVNULg0KKyAqIA0KKyAqICBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQorICogIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KKyAqICB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KKyAqICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqLw0KK3BhY2thZ2Ugb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmJsb2NrczsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVPYmplY3Q7DQorDQorLyoqDQorICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisgKiBBIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBtb2RlbCBvYmplY3QgJzxlbT48Yj5CbG9jazwvYj48L2VtPicuDQorICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorICoNCisgKiA8IS0tIGJlZ2luLW1vZGVsLWRvYyAtLT4NCisgKiBBIEJsb2NrIGlzIGEgbW9kdWxhciB1bml0IHRoYXQgZGVzY3JpYmVzIHRoZSBzdHJ1Y3R1cmUgb2YgYSBzeXN0ZW0gb3IgZWxlbWVudC4gSXQgbWF5IGluY2x1ZGUgYm90aCBzdHJ1Y3R1cmFsIGFuZCBiZWhhdmlvcmFsIGZlYXR1cmVzLCBzdWNoIGFzIHByb3BlcnRpZXMgYW5kIG9wZXJhdGlvbnMsIHRoYXQgcmVwcmVzZW50IHRoZSBzdGF0ZSBvZiB0aGUgc3lzdGVtIGFuZCBiZWhhdmlvciB0aGF0IHRoZSBzeXN0ZW0gbWF5IGV4aGliaXQuIFNvbWUgb2YgdGhlc2UgcHJvcGVydGllcyBtYXkgaG9sZCBwYXJ0cyBvZiBhIHN5c3RlbSwgd2hpY2ggY2FuIGFsc28gYmUgZGVzY3JpYmVkIGJ5IGJsb2Nrcy4gQSBibG9jayBtYXkgaW5jbHVkZSBhIHN0cnVjdHVyZSBvZiBjb25uZWN0b3JzIGJldHdlZW4gaXRzIHByb3BlcnRpZXMgdG8gaW5kaWNhdGUgaG93IGl0cyBwYXJ0cyBvciBvdGhlciBwcm9wZXJ0aWVzIHJlbGF0ZSB0byBvbmUgYW5vdGhlci4gU3lzTUwgYmxvY2tzIHByb3ZpZGUgYSBnZW5lcmFsLXB1cnBvc2UgY2FwYWJpbGl0eSB0byBkZXNjcmliZSB0aGUgYXJjaGl0ZWN0dXJlIG9mIGEgc3lzdGVtLiBUaGV5IHByb3ZpZGUgdGhlIGFiaWxpdHkgdG8gcmVwcmVzZW50IGEgc3lzdGVtIGhpZXJhcmNoeSwgaW4gd2hpY2ggYSBzeXN0ZW0gYXQgb25lIGxldmVsIGlzIGNvbXBvc2VkIG9mIHN5c3RlbXMgYXQgYSBtb3JlIGJhc2ljIGxldmVsLiBUaGV5IGNhbiBkZXNjcmliZSBub3Qgb25seSB0aGUgY29ubmVjdGl2aXR5IHJlbGF0aW9uc2hpcHMgYmV0d2VlbiB0aGUgc3lzdGVtcyBhdCBhbnkgbGV2ZWwsIGJ1dCBhbHNvIHF1YW50aXRhdGl2ZSB2YWx1ZXMgb3Igb3RoZXIgaW5mb3JtYXRpb24gYWJvdXQgYSBzeXN0ZW0uIFN5c01MIGRvZXMgbm90IHJlc3RyaWN0IHRoZSBraW5kIG9mIHN5c3RlbSBvciBzeXN0ZW0gZWxlbWVudCB0aGF0IG1heSBiZSBkZXNjcmliZWQgYnkgYSBibG9jay4gQW55IHJldXNhYmxlIGZvcm0gb2YgZGVzY3JpcHRpb24gdGhhdCBtYXkgYmUgYXBwbGllZCB0byBhIHN5c3RlbSBvciBhIHNldCBvZiBzeXN0ZW0gY2hhcmFjdGVyaXN0aWNzIG1heSBiZSBkZXNjcmliZWQgYnkgYSBibG9jay4gU3VjaCByZXVzYWJsZSBkZXNjcmlwdGlvbnMsIGZvciBleGFtcGxlLCBtYXkgYmUgYXBwbGllZCB0byBwdXJlbHkgY29uY2VwdHVhbCBhc3BlY3RzIG9mIGEgc3lzdGVtIGRlc2lnbiwgc3VjaCBhcyByZWxhdGlvbnNoaXBzIHRoYXQgaG9sZCBiZXR3ZWVuIHBhcnRzIG9yIHByb3BlcnRpZXMgb2YgYSBzeXN0ZW0uIENvbm5lY3RvcnMgb3duZWQgYnkgU3lzTUwgYmxvY2tzIG1heSBiZSB1c2VkIHRvIGRlZmluZSByZWxhdGlvbnNoaXBzIGJldHdlZW4gcGFydHMgb3Igb3RoZXIgcHJvcGVydGllcyBvZiB0aGUgc2FtZSBjb250YWluaW5nIGJsb2NrLiBUaGUgdHlwZSBvZiBhIGNvbm5lY3RvciBvciBpdHMgY29ubmVjdGVkIGVuZHMgbWF5IHNwZWNpZnkgdGhlIHNlbWFudGljIGludGVycHJldGF0aW9uIG9mIGEgc3BlY2lmaWMgY29ubmVjdG9yLg0KKyAqIDwhLS0gZW5kLW1vZGVsLWRvYyAtLT4NCisgKg0KKyAqIDxwPg0KKyAqIFRoZSBmb2xsb3dpbmcgZmVhdHVyZXMgYXJlIHN1cHBvcnRlZDoNCisgKiA8dWw+DQorICogICA8bGk+e0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5ibG9ja3MuQmxvY2sjZ2V0QmFzZV9DbGFzcyA8ZW0+QmFzZSBDbGFzczwvZW0+fTwvbGk+DQorICogICA8bGk+e0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5ibG9ja3MuQmxvY2sjaXNFbmNhcHN1bGF0ZWQgPGVtPklzIEVuY2Fwc3VsYXRlZDwvZW0+fTwvbGk+DQorICogPC91bD4NCisgKiA8L3A+DQorICoNCisgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5ibG9ja3MuQmxvY2tzUGFja2FnZSNnZXRCbG9jaygpDQorICogQG1vZGVsDQorICogQGdlbmVyYXRlZA0KKyAqLw0KK3B1YmxpYyBpbnRlcmZhY2UgQmxvY2sgZXh0ZW5kcyBFT2JqZWN0IHsNCisJLyoqDQorCSAqIFJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSAnPGVtPjxiPkJhc2UgQ2xhc3M8L2I+PC9lbT4nIHJlZmVyZW5jZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPHA+DQorCSAqIElmIHRoZSBtZWFuaW5nIG9mIHRoZSAnPGVtPkJhc2UgQ2xhc3M8L2VtPicgcmVmZXJlbmNlIGlzbid0IGNsZWFyLA0KKwkgKiB0aGVyZSByZWFsbHkgc2hvdWxkIGJlIG1vcmUgb2YgYSBkZXNjcmlwdGlvbiBoZXJlLi4uDQorCSAqIDwvcD4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEByZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSAnPGVtPkJhc2UgQ2xhc3M8L2VtPicgcmVmZXJlbmNlLg0KKwkgKiBAc2VlICNzZXRCYXNlX0NsYXNzKG9yZy5lY2xpcHNlLnVtbDIudW1sLkNsYXNzKQ0KKwkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5ibG9ja3MuQmxvY2tzUGFja2FnZSNnZXRCbG9ja19CYXNlX0NsYXNzKCkNCisJICogQG1vZGVsIG9yZGVyZWQ9ImZhbHNlIg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlvcmcuZWNsaXBzZS51bWwyLnVtbC5DbGFzcyBnZXRCYXNlX0NsYXNzKCk7DQorDQorCS8qKg0KKwkgKiBTZXRzIHRoZSB2YWx1ZSBvZiB0aGUgJ3tAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYmxvY2tzLkJsb2NrI2dldEJhc2VfQ2xhc3MgPGVtPkJhc2UgQ2xhc3M8L2VtPn0nIHJlZmVyZW5jZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBwYXJhbSB2YWx1ZSB0aGUgbmV3IHZhbHVlIG9mIHRoZSAnPGVtPkJhc2UgQ2xhc3M8L2VtPicgcmVmZXJlbmNlLg0KKwkgKiBAc2VlICNnZXRCYXNlX0NsYXNzKCkNCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJdm9pZCBzZXRCYXNlX0NsYXNzKG9yZy5lY2xpcHNlLnVtbDIudW1sLkNsYXNzIHZhbHVlKTsNCisNCisJLyoqDQorCSAqIFJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSAnPGVtPjxiPklzIEVuY2Fwc3VsYXRlZDwvYj48L2VtPicgYXR0cmlidXRlLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogPCEtLSBiZWdpbi1tb2RlbC1kb2MgLS0+DQorCSAqIElmIHRydWUsIHRoZW4gdGhlIGJsb2NrIGlzIHRyZWF0ZWQgYXMgYSBibGFjayBib3g7IGEgcGFydCB0eXBlZCBieSB0aGlzIGJsYWNrIGJveCBjYW4gb25seSBiZSBjb25uZWN0ZWQgdmlhIGl0cyBwb3J0cyBvciBkaXJlY3RseSB0byBpdHMgb3V0ZXIgYm91bmRhcnkuIElmIGZhbHNlLCBvciBpZiBhIHZhbHVlIGlzIG5vdCBwcmVzZW50LCB0aGVuIGNvbm5lY3Rpb25zIGNhbiBiZSBlc3RhYmxpc2hlZCB0byBlbGVtZW50cyBvZiBpdHMgaW50ZXJuYWwgc3RydWN0dXJlIHZpYSBkZWVwLW5lc3RlZCBjb25uZWN0b3IgZW5kcy4NCisJICogPCEtLSBlbmQtbW9kZWwtZG9jIC0tPg0KKwkgKiBAcmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT5JcyBFbmNhcHN1bGF0ZWQ8L2VtPicgYXR0cmlidXRlLg0KKwkgKiBAc2VlICNzZXRJc0VuY2Fwc3VsYXRlZChib29sZWFuKQ0KKwkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5ibG9ja3MuQmxvY2tzUGFja2FnZSNnZXRCbG9ja19Jc0VuY2Fwc3VsYXRlZCgpDQorCSAqIEBtb2RlbCBkYXRhVHlwZT0ib3JnLmVjbGlwc2UudW1sMi50eXBlcy5Cb29sZWFuIiBvcmRlcmVkPSJmYWxzZSINCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJYm9vbGVhbiBpc0VuY2Fwc3VsYXRlZCgpOw0KKw0KKwkvKioNCisJICogU2V0cyB0aGUgdmFsdWUgb2YgdGhlICd7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmJsb2Nrcy5CbG9jayNpc0VuY2Fwc3VsYXRlZCA8ZW0+SXMgRW5jYXBzdWxhdGVkPC9lbT59JyBhdHRyaWJ1dGUuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAcGFyYW0gdmFsdWUgdGhlIG5ldyB2YWx1ZSBvZiB0aGUgJzxlbT5JcyBFbmNhcHN1bGF0ZWQ8L2VtPicgYXR0cmlidXRlLg0KKwkgKiBAc2VlICNpc0VuY2Fwc3VsYXRlZCgpDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXZvaWQgc2V0SXNFbmNhcHN1bGF0ZWQoYm9vbGVhbiB2YWx1ZSk7DQorDQorfSAvLyBCbG9jaw0KZGlmZiAtLWdpdCBhL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L2Jsb2Nrcy9CbG9ja3NGYWN0b3J5LmphdmEgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9ibG9ja3MvQmxvY2tzRmFjdG9yeS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU0MDczZGMKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9ibG9ja3MvQmxvY2tzRmFjdG9yeS5qYXZhCkBAIC0wLDAgKzEsMTQ3IEBACisvKioNCisgKiBDb3B5cmlnaHQgKGMpIDIwMTUgQ0VBIExJU1QuDQorICogDQorICogIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCisgKiAgYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQorICogIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQorICogIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICovDQorcGFja2FnZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYmxvY2tzOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRUZhY3Rvcnk7DQorDQorLyoqDQorICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisgKiBUaGUgPGI+RmFjdG9yeTwvYj4gZm9yIHRoZSBtb2RlbC4NCisgKiBJdCBwcm92aWRlcyBhIGNyZWF0ZSBtZXRob2QgZm9yIGVhY2ggbm9uLWFic3RyYWN0IGNsYXNzIG9mIHRoZSBtb2RlbC4NCisgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5ibG9ja3MuQmxvY2tzUGFja2FnZQ0KKyAqIEBnZW5lcmF0ZWQNCisgKi8NCitwdWJsaWMgaW50ZXJmYWNlIEJsb2Nrc0ZhY3RvcnkgZXh0ZW5kcyBFRmFjdG9yeSB7DQorCS8qKg0KKwkgKiBUaGUgc2luZ2xldG9uIGluc3RhbmNlIG9mIHRoZSBmYWN0b3J5Lg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQmxvY2tzRmFjdG9yeSBlSU5TVEFOQ0UgPSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYmxvY2tzLmludGVybmFsLmltcGwuQmxvY2tzRmFjdG9yeUltcGwuaW5pdCgpOw0KKw0KKwkvKioNCisJICogUmV0dXJucyBhIG5ldyBvYmplY3Qgb2YgY2xhc3MgJzxlbT5WYWx1ZSBUeXBlPC9lbT4nLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHJldHVybiBhIG5ldyBvYmplY3Qgb2YgY2xhc3MgJzxlbT5WYWx1ZSBUeXBlPC9lbT4nLg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlWYWx1ZVR5cGUgY3JlYXRlVmFsdWVUeXBlKCk7DQorDQorCS8qKg0KKwkgKiBSZXR1cm5zIGEgbmV3IG9iamVjdCBvZiBjbGFzcyAnPGVtPkRpc3RyaWJ1dGVkIFByb3BlcnR5PC9lbT4nLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHJldHVybiBhIG5ldyBvYmplY3Qgb2YgY2xhc3MgJzxlbT5EaXN0cmlidXRlZCBQcm9wZXJ0eTwvZW0+Jy4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJRGlzdHJpYnV0ZWRQcm9wZXJ0eSBjcmVhdGVEaXN0cmlidXRlZFByb3BlcnR5KCk7DQorDQorCS8qKg0KKwkgKiBSZXR1cm5zIGEgbmV3IG9iamVjdCBvZiBjbGFzcyAnPGVtPkNvbm5lY3RvciBQcm9wZXJ0eTwvZW0+Jy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEByZXR1cm4gYSBuZXcgb2JqZWN0IG9mIGNsYXNzICc8ZW0+Q29ubmVjdG9yIFByb3BlcnR5PC9lbT4nLg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlDb25uZWN0b3JQcm9wZXJ0eSBjcmVhdGVDb25uZWN0b3JQcm9wZXJ0eSgpOw0KKw0KKwkvKioNCisJICogUmV0dXJucyBhIG5ldyBvYmplY3Qgb2YgY2xhc3MgJzxlbT5QYXJ0aWNpcGFudCBQcm9wZXJ0eTwvZW0+Jy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEByZXR1cm4gYSBuZXcgb2JqZWN0IG9mIGNsYXNzICc8ZW0+UGFydGljaXBhbnQgUHJvcGVydHk8L2VtPicuDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCVBhcnRpY2lwYW50UHJvcGVydHkgY3JlYXRlUGFydGljaXBhbnRQcm9wZXJ0eSgpOw0KKw0KKwkvKioNCisJICogUmV0dXJucyBhIG5ldyBvYmplY3Qgb2YgY2xhc3MgJzxlbT5CaW5kaW5nIENvbm5lY3RvcjwvZW0+Jy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEByZXR1cm4gYSBuZXcgb2JqZWN0IG9mIGNsYXNzICc8ZW0+QmluZGluZyBDb25uZWN0b3I8L2VtPicuDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUJpbmRpbmdDb25uZWN0b3IgY3JlYXRlQmluZGluZ0Nvbm5lY3RvcigpOw0KKw0KKwkvKioNCisJICogUmV0dXJucyBhIG5ldyBvYmplY3Qgb2YgY2xhc3MgJzxlbT5CbG9jazwvZW0+Jy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEByZXR1cm4gYSBuZXcgb2JqZWN0IG9mIGNsYXNzICc8ZW0+QmxvY2s8L2VtPicuDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUJsb2NrIGNyZWF0ZUJsb2NrKCk7DQorDQorCS8qKg0KKwkgKiBSZXR1cm5zIGEgbmV3IG9iamVjdCBvZiBjbGFzcyAnPGVtPlByb3BlcnR5IFNwZWNpZmljIFR5cGU8L2VtPicuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAcmV0dXJuIGEgbmV3IG9iamVjdCBvZiBjbGFzcyAnPGVtPlByb3BlcnR5IFNwZWNpZmljIFR5cGU8L2VtPicuDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCVByb3BlcnR5U3BlY2lmaWNUeXBlIGNyZWF0ZVByb3BlcnR5U3BlY2lmaWNUeXBlKCk7DQorDQorCS8qKg0KKwkgKiBSZXR1cm5zIGEgbmV3IG9iamVjdCBvZiBjbGFzcyAnPGVtPk5lc3RlZCBDb25uZWN0b3IgRW5kPC9lbT4nLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHJldHVybiBhIG5ldyBvYmplY3Qgb2YgY2xhc3MgJzxlbT5OZXN0ZWQgQ29ubmVjdG9yIEVuZDwvZW0+Jy4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJTmVzdGVkQ29ubmVjdG9yRW5kIGNyZWF0ZU5lc3RlZENvbm5lY3RvckVuZCgpOw0KKw0KKwkvKioNCisJICogUmV0dXJucyBhIG5ldyBvYmplY3Qgb2YgY2xhc3MgJzxlbT5FbmQgUGF0aCBNdWx0aXBsaWNpdHk8L2VtPicuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAcmV0dXJuIGEgbmV3IG9iamVjdCBvZiBjbGFzcyAnPGVtPkVuZCBQYXRoIE11bHRpcGxpY2l0eTwvZW0+Jy4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJRW5kUGF0aE11bHRpcGxpY2l0eSBjcmVhdGVFbmRQYXRoTXVsdGlwbGljaXR5KCk7DQorDQorCS8qKg0KKwkgKiBSZXR1cm5zIGEgbmV3IG9iamVjdCBvZiBjbGFzcyAnPGVtPkJvdW5kIFJlZmVyZW5jZTwvZW0+Jy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEByZXR1cm4gYSBuZXcgb2JqZWN0IG9mIGNsYXNzICc8ZW0+Qm91bmQgUmVmZXJlbmNlPC9lbT4nLg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlCb3VuZFJlZmVyZW5jZSBjcmVhdGVCb3VuZFJlZmVyZW5jZSgpOw0KKw0KKwkvKioNCisJICogUmV0dXJucyBhIG5ldyBvYmplY3Qgb2YgY2xhc3MgJzxlbT5BZGp1bmN0IFByb3BlcnR5PC9lbT4nLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHJldHVybiBhIG5ldyBvYmplY3Qgb2YgY2xhc3MgJzxlbT5BZGp1bmN0IFByb3BlcnR5PC9lbT4nLg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlBZGp1bmN0UHJvcGVydHkgY3JlYXRlQWRqdW5jdFByb3BlcnR5KCk7DQorDQorCS8qKg0KKwkgKiBSZXR1cm5zIGEgbmV3IG9iamVjdCBvZiBjbGFzcyAnPGVtPkNsYXNzaWZpZXIgQmVoYXZpb3IgUHJvcGVydHk8L2VtPicuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAcmV0dXJuIGEgbmV3IG9iamVjdCBvZiBjbGFzcyAnPGVtPkNsYXNzaWZpZXIgQmVoYXZpb3IgUHJvcGVydHk8L2VtPicuDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUNsYXNzaWZpZXJCZWhhdmlvclByb3BlcnR5IGNyZWF0ZUNsYXNzaWZpZXJCZWhhdmlvclByb3BlcnR5KCk7DQorDQorCS8qKg0KKwkgKiBSZXR1cm5zIHRoZSBwYWNrYWdlIHN1cHBvcnRlZCBieSB0aGlzIGZhY3RvcnkuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAcmV0dXJuIHRoZSBwYWNrYWdlIHN1cHBvcnRlZCBieSB0aGlzIGZhY3RvcnkuDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUJsb2Nrc1BhY2thZ2UgZ2V0QmxvY2tzUGFja2FnZSgpOw0KKw0KK30gLy9CbG9ja3NGYWN0b3J5DQpkaWZmIC0tZ2l0IGEvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvYmxvY2tzL0Jsb2Nrc1BhY2thZ2UuamF2YSBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L2Jsb2Nrcy9CbG9ja3NQYWNrYWdlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTQ1YzI0NgotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L2Jsb2Nrcy9CbG9ja3NQYWNrYWdlLmphdmEKQEAgLTAsMCArMSwxNTkzIEBACisvKioNCisgKiBDb3B5cmlnaHQgKGMpIDIwMTUgQ0VBIExJU1QuDQorICogDQorICogIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCisgKiAgYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQorICogIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQorICogIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICovDQorcGFja2FnZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYmxvY2tzOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRUF0dHJpYnV0ZTsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVDbGFzczsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVQYWNrYWdlOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRVJlZmVyZW5jZTsNCisNCisvKioNCisgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKyAqIFRoZSA8Yj5QYWNrYWdlPC9iPiBmb3IgdGhlIG1vZGVsLg0KKyAqIEl0IGNvbnRhaW5zIGFjY2Vzc29ycyBmb3IgdGhlIG1ldGEgb2JqZWN0cyB0byByZXByZXNlbnQNCisgKiA8dWw+DQorICogICA8bGk+ZWFjaCBjbGFzcyw8L2xpPg0KKyAqICAgPGxpPmVhY2ggZmVhdHVyZSBvZiBlYWNoIGNsYXNzLDwvbGk+DQorICogICA8bGk+ZWFjaCBvcGVyYXRpb24gb2YgZWFjaCBjbGFzcyw8L2xpPg0KKyAqICAgPGxpPmVhY2ggZW51bSw8L2xpPg0KKyAqICAgPGxpPmFuZCBlYWNoIGRhdGEgdHlwZTwvbGk+DQorICogPC91bD4NCisgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5ibG9ja3MuQmxvY2tzRmFjdG9yeQ0KKyAqIEBtb2RlbCBraW5kPSJwYWNrYWdlIg0KKyAqICAgICAgICBhbm5vdGF0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3VtbDIvMi4wLjAvVU1MIG9yaWdpbmFsTmFtZT0nQmxvY2tzJyINCisgKiBAZ2VuZXJhdGVkDQorICovDQorcHVibGljIGludGVyZmFjZSBCbG9ja3NQYWNrYWdlIGV4dGVuZHMgRVBhY2thZ2Ugew0KKwkvKioNCisJICogVGhlIHBhY2thZ2UgbmFtZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCVN0cmluZyBlTkFNRSA9ICJibG9ja3MiOyAvLyROT04tTkxTLTEkDQorDQorCS8qKg0KKwkgKiBUaGUgcGFja2FnZSBuYW1lc3BhY2UgVVJJLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJU3RyaW5nIGVOU19VUkkgPSAiaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9wYXB5cnVzLzEuNC9TeXNNTC9CbG9ja3MiOyAvLyROT04tTkxTLTEkDQorDQorCS8qKg0KKwkgKiBUaGUgcGFja2FnZSBuYW1lc3BhY2UgbmFtZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCVN0cmluZyBlTlNfUFJFRklYID0gIkJsb2NrcyI7IC8vJE5PTi1OTFMtMSQNCisNCisJLyoqDQorCSAqIFRoZSBzaW5nbGV0b24gaW5zdGFuY2Ugb2YgdGhlIHBhY2thZ2UuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlCbG9ja3NQYWNrYWdlIGVJTlNUQU5DRSA9IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5ibG9ja3MuaW50ZXJuYWwuaW1wbC5CbG9ja3NQYWNrYWdlSW1wbC5pbml0KCk7DQorDQorCS8qKg0KKwkgKiBUaGUgbWV0YSBvYmplY3QgaWQgZm9yIHRoZSAne0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5ibG9ja3MuaW50ZXJuYWwuaW1wbC5WYWx1ZVR5cGVJbXBsIDxlbT5WYWx1ZSBUeXBlPC9lbT59JyBjbGFzcy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmJsb2Nrcy5pbnRlcm5hbC5pbXBsLlZhbHVlVHlwZUltcGwNCisJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYmxvY2tzLmludGVybmFsLmltcGwuQmxvY2tzUGFja2FnZUltcGwjZ2V0VmFsdWVUeXBlKCkNCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJaW50IFZBTFVFX1RZUEUgPSAwOw0KKw0KKwkvKioNCisJICogVGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkJhc2UgRGF0YSBUeXBlPC9iPjwvZW0+JyByZWZlcmVuY2UuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqIEBvcmRlcmVkDQorCSAqLw0KKwlpbnQgVkFMVUVfVFlQRV9fQkFTRV9EQVRBX1RZUEUgPSAwOw0KKw0KKwkvKioNCisJICogVGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPlVuaXQ8L2I+PC9lbT4nIHJlZmVyZW5jZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICogQG9yZGVyZWQNCisJICovDQorCWludCBWQUxVRV9UWVBFX19VTklUID0gMTsNCisNCisJLyoqDQorCSAqIFRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5RdWFudGl0eSBLaW5kPC9iPjwvZW0+JyByZWZlcmVuY2UuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqIEBvcmRlcmVkDQorCSAqLw0KKwlpbnQgVkFMVUVfVFlQRV9fUVVBTlRJVFlfS0lORCA9IDI7DQorDQorCS8qKg0KKwkgKiBUaGUgbnVtYmVyIG9mIHN0cnVjdHVyYWwgZmVhdHVyZXMgb2YgdGhlICc8ZW0+VmFsdWUgVHlwZTwvZW0+JyBjbGFzcy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICogQG9yZGVyZWQNCisJICovDQorCWludCBWQUxVRV9UWVBFX0ZFQVRVUkVfQ09VTlQgPSAzOw0KKw0KKwkvKioNCisJICogVGhlIG51bWJlciBvZiBvcGVyYXRpb25zIG9mIHRoZSAnPGVtPlZhbHVlIFR5cGU8L2VtPicgY2xhc3MuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqIEBvcmRlcmVkDQorCSAqLw0KKwlpbnQgVkFMVUVfVFlQRV9PUEVSQVRJT05fQ09VTlQgPSAwOw0KKw0KKwkvKioNCisJICogVGhlIG1ldGEgb2JqZWN0IGlkIGZvciB0aGUgJ3tAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYmxvY2tzLmludGVybmFsLmltcGwuRGlzdHJpYnV0ZWRQcm9wZXJ0eUltcGwgPGVtPkRpc3RyaWJ1dGVkIFByb3BlcnR5PC9lbT59JyBjbGFzcy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmJsb2Nrcy5pbnRlcm5hbC5pbXBsLkRpc3RyaWJ1dGVkUHJvcGVydHlJbXBsDQorCSAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmJsb2Nrcy5pbnRlcm5hbC5pbXBsLkJsb2Nrc1BhY2thZ2VJbXBsI2dldERpc3RyaWJ1dGVkUHJvcGVydHkoKQ0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlpbnQgRElTVFJJQlVURURfUFJPUEVSVFkgPSAxOw0KKw0KKwkvKioNCisJICogVGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkJhc2UgUHJvcGVydHk8L2I+PC9lbT4nIHJlZmVyZW5jZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICogQG9yZGVyZWQNCisJICovDQorCWludCBESVNUUklCVVRFRF9QUk9QRVJUWV9fQkFTRV9QUk9QRVJUWSA9IDA7DQorDQorCS8qKg0KKwkgKiBUaGUgbnVtYmVyIG9mIHN0cnVjdHVyYWwgZmVhdHVyZXMgb2YgdGhlICc8ZW0+RGlzdHJpYnV0ZWQgUHJvcGVydHk8L2VtPicgY2xhc3MuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqIEBvcmRlcmVkDQorCSAqLw0KKwlpbnQgRElTVFJJQlVURURfUFJPUEVSVFlfRkVBVFVSRV9DT1VOVCA9IDE7DQorDQorCS8qKg0KKwkgKiBUaGUgbnVtYmVyIG9mIG9wZXJhdGlvbnMgb2YgdGhlICc8ZW0+RGlzdHJpYnV0ZWQgUHJvcGVydHk8L2VtPicgY2xhc3MuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqIEBvcmRlcmVkDQorCSAqLw0KKwlpbnQgRElTVFJJQlVURURfUFJPUEVSVFlfT1BFUkFUSU9OX0NPVU5UID0gMDsNCisNCisJLyoqDQorCSAqIFRoZSBtZXRhIG9iamVjdCBpZCBmb3IgdGhlICd7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmJsb2Nrcy5pbnRlcm5hbC5pbXBsLkNvbm5lY3RvclByb3BlcnR5SW1wbCA8ZW0+Q29ubmVjdG9yIFByb3BlcnR5PC9lbT59JyBjbGFzcy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmJsb2Nrcy5pbnRlcm5hbC5pbXBsLkNvbm5lY3RvclByb3BlcnR5SW1wbA0KKwkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5ibG9ja3MuaW50ZXJuYWwuaW1wbC5CbG9ja3NQYWNrYWdlSW1wbCNnZXRDb25uZWN0b3JQcm9wZXJ0eSgpDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCWludCBDT05ORUNUT1JfUFJPUEVSVFkgPSAyOw0KKw0KKwkvKioNCisJICogVGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkJhc2UgUHJvcGVydHk8L2I+PC9lbT4nIHJlZmVyZW5jZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICogQG9yZGVyZWQNCisJICovDQorCWludCBDT05ORUNUT1JfUFJPUEVSVFlfX0JBU0VfUFJPUEVSVFkgPSAwOw0KKw0KKwkvKioNCisJICogVGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkNvbm5lY3RvcjwvYj48L2VtPicgcmVmZXJlbmNlLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKiBAb3JkZXJlZA0KKwkgKi8NCisJaW50IENPTk5FQ1RPUl9QUk9QRVJUWV9fQ09OTkVDVE9SID0gMTsNCisNCisJLyoqDQorCSAqIFRoZSBudW1iZXIgb2Ygc3RydWN0dXJhbCBmZWF0dXJlcyBvZiB0aGUgJzxlbT5Db25uZWN0b3IgUHJvcGVydHk8L2VtPicgY2xhc3MuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqIEBvcmRlcmVkDQorCSAqLw0KKwlpbnQgQ09OTkVDVE9SX1BST1BFUlRZX0ZFQVRVUkVfQ09VTlQgPSAyOw0KKw0KKwkvKioNCisJICogVGhlIG51bWJlciBvZiBvcGVyYXRpb25zIG9mIHRoZSAnPGVtPkNvbm5lY3RvciBQcm9wZXJ0eTwvZW0+JyBjbGFzcy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICogQG9yZGVyZWQNCisJICovDQorCWludCBDT05ORUNUT1JfUFJPUEVSVFlfT1BFUkFUSU9OX0NPVU5UID0gMDsNCisNCisJLyoqDQorCSAqIFRoZSBtZXRhIG9iamVjdCBpZCBmb3IgdGhlICd7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmJsb2Nrcy5pbnRlcm5hbC5pbXBsLlBhcnRpY2lwYW50UHJvcGVydHlJbXBsIDxlbT5QYXJ0aWNpcGFudCBQcm9wZXJ0eTwvZW0+fScgY2xhc3MuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5ibG9ja3MuaW50ZXJuYWwuaW1wbC5QYXJ0aWNpcGFudFByb3BlcnR5SW1wbA0KKwkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5ibG9ja3MuaW50ZXJuYWwuaW1wbC5CbG9ja3NQYWNrYWdlSW1wbCNnZXRQYXJ0aWNpcGFudFByb3BlcnR5KCkNCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJaW50IFBBUlRJQ0lQQU5UX1BST1BFUlRZID0gMzsNCisNCisJLyoqDQorCSAqIFRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5CYXNlIFByb3BlcnR5PC9iPjwvZW0+JyByZWZlcmVuY2UuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqIEBvcmRlcmVkDQorCSAqLw0KKwlpbnQgUEFSVElDSVBBTlRfUFJPUEVSVFlfX0JBU0VfUFJPUEVSVFkgPSAwOw0KKw0KKwkvKioNCisJICogVGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkVuZDwvYj48L2VtPicgcmVmZXJlbmNlLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKiBAb3JkZXJlZA0KKwkgKi8NCisJaW50IFBBUlRJQ0lQQU5UX1BST1BFUlRZX19FTkQgPSAxOw0KKw0KKwkvKioNCisJICogVGhlIG51bWJlciBvZiBzdHJ1Y3R1cmFsIGZlYXR1cmVzIG9mIHRoZSAnPGVtPlBhcnRpY2lwYW50IFByb3BlcnR5PC9lbT4nIGNsYXNzLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKiBAb3JkZXJlZA0KKwkgKi8NCisJaW50IFBBUlRJQ0lQQU5UX1BST1BFUlRZX0ZFQVRVUkVfQ09VTlQgPSAyOw0KKw0KKwkvKioNCisJICogVGhlIG51bWJlciBvZiBvcGVyYXRpb25zIG9mIHRoZSAnPGVtPlBhcnRpY2lwYW50IFByb3BlcnR5PC9lbT4nIGNsYXNzLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKiBAb3JkZXJlZA0KKwkgKi8NCisJaW50IFBBUlRJQ0lQQU5UX1BST1BFUlRZX09QRVJBVElPTl9DT1VOVCA9IDA7DQorDQorCS8qKg0KKwkgKiBUaGUgbWV0YSBvYmplY3QgaWQgZm9yIHRoZSAne0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5ibG9ja3MuaW50ZXJuYWwuaW1wbC5CaW5kaW5nQ29ubmVjdG9ySW1wbCA8ZW0+QmluZGluZyBDb25uZWN0b3I8L2VtPn0nIGNsYXNzLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYmxvY2tzLmludGVybmFsLmltcGwuQmluZGluZ0Nvbm5lY3RvckltcGwNCisJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYmxvY2tzLmludGVybmFsLmltcGwuQmxvY2tzUGFja2FnZUltcGwjZ2V0QmluZGluZ0Nvbm5lY3RvcigpDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCWludCBCSU5ESU5HX0NPTk5FQ1RPUiA9IDQ7DQorDQorCS8qKg0KKwkgKiBUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+QmFzZSBDb25uZWN0b3I8L2I+PC9lbT4nIHJlZmVyZW5jZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICogQG9yZGVyZWQNCisJICovDQorCWludCBCSU5ESU5HX0NPTk5FQ1RPUl9fQkFTRV9DT05ORUNUT1IgPSAwOw0KKw0KKwkvKioNCisJICogVGhlIG51bWJlciBvZiBzdHJ1Y3R1cmFsIGZlYXR1cmVzIG9mIHRoZSAnPGVtPkJpbmRpbmcgQ29ubmVjdG9yPC9lbT4nIGNsYXNzLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKiBAb3JkZXJlZA0KKwkgKi8NCisJaW50IEJJTkRJTkdfQ09OTkVDVE9SX0ZFQVRVUkVfQ09VTlQgPSAxOw0KKw0KKwkvKioNCisJICogVGhlIG51bWJlciBvZiBvcGVyYXRpb25zIG9mIHRoZSAnPGVtPkJpbmRpbmcgQ29ubmVjdG9yPC9lbT4nIGNsYXNzLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKiBAb3JkZXJlZA0KKwkgKi8NCisJaW50IEJJTkRJTkdfQ09OTkVDVE9SX09QRVJBVElPTl9DT1VOVCA9IDA7DQorDQorCS8qKg0KKwkgKiBUaGUgbWV0YSBvYmplY3QgaWQgZm9yIHRoZSAne0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5ibG9ja3MuaW50ZXJuYWwuaW1wbC5CbG9ja0ltcGwgPGVtPkJsb2NrPC9lbT59JyBjbGFzcy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmJsb2Nrcy5pbnRlcm5hbC5pbXBsLkJsb2NrSW1wbA0KKwkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5ibG9ja3MuaW50ZXJuYWwuaW1wbC5CbG9ja3NQYWNrYWdlSW1wbCNnZXRCbG9jaygpDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCWludCBCTE9DSyA9IDU7DQorDQorCS8qKg0KKwkgKiBUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+QmFzZSBDbGFzczwvYj48L2VtPicgcmVmZXJlbmNlLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKiBAb3JkZXJlZA0KKwkgKi8NCisJaW50IEJMT0NLX19CQVNFX0NMQVNTID0gMDsNCisNCisJLyoqDQorCSAqIFRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5JcyBFbmNhcHN1bGF0ZWQ8L2I+PC9lbT4nIGF0dHJpYnV0ZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICogQG9yZGVyZWQNCisJICovDQorCWludCBCTE9DS19fSVNfRU5DQVBTVUxBVEVEID0gMTsNCisNCisJLyoqDQorCSAqIFRoZSBudW1iZXIgb2Ygc3RydWN0dXJhbCBmZWF0dXJlcyBvZiB0aGUgJzxlbT5CbG9jazwvZW0+JyBjbGFzcy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICogQG9yZGVyZWQNCisJICovDQorCWludCBCTE9DS19GRUFUVVJFX0NPVU5UID0gMjsNCisNCisJLyoqDQorCSAqIFRoZSBudW1iZXIgb2Ygb3BlcmF0aW9ucyBvZiB0aGUgJzxlbT5CbG9jazwvZW0+JyBjbGFzcy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICogQG9yZGVyZWQNCisJICovDQorCWludCBCTE9DS19PUEVSQVRJT05fQ09VTlQgPSAwOw0KKw0KKwkvKioNCisJICogVGhlIG1ldGEgb2JqZWN0IGlkIGZvciB0aGUgJ3tAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYmxvY2tzLmludGVybmFsLmltcGwuUHJvcGVydHlTcGVjaWZpY1R5cGVJbXBsIDxlbT5Qcm9wZXJ0eSBTcGVjaWZpYyBUeXBlPC9lbT59JyBjbGFzcy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmJsb2Nrcy5pbnRlcm5hbC5pbXBsLlByb3BlcnR5U3BlY2lmaWNUeXBlSW1wbA0KKwkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5ibG9ja3MuaW50ZXJuYWwuaW1wbC5CbG9ja3NQYWNrYWdlSW1wbCNnZXRQcm9wZXJ0eVNwZWNpZmljVHlwZSgpDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCWludCBQUk9QRVJUWV9TUEVDSUZJQ19UWVBFID0gNjsNCisNCisJLyoqDQorCSAqIFRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5CYXNlIENsYXNzaWZpZXI8L2I+PC9lbT4nIHJlZmVyZW5jZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICogQG9yZGVyZWQNCisJICovDQorCWludCBQUk9QRVJUWV9TUEVDSUZJQ19UWVBFX19CQVNFX0NMQVNTSUZJRVIgPSAwOw0KKw0KKwkvKioNCisJICogVGhlIG51bWJlciBvZiBzdHJ1Y3R1cmFsIGZlYXR1cmVzIG9mIHRoZSAnPGVtPlByb3BlcnR5IFNwZWNpZmljIFR5cGU8L2VtPicgY2xhc3MuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqIEBvcmRlcmVkDQorCSAqLw0KKwlpbnQgUFJPUEVSVFlfU1BFQ0lGSUNfVFlQRV9GRUFUVVJFX0NPVU5UID0gMTsNCisNCisJLyoqDQorCSAqIFRoZSBudW1iZXIgb2Ygb3BlcmF0aW9ucyBvZiB0aGUgJzxlbT5Qcm9wZXJ0eSBTcGVjaWZpYyBUeXBlPC9lbT4nIGNsYXNzLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKiBAb3JkZXJlZA0KKwkgKi8NCisJaW50IFBST1BFUlRZX1NQRUNJRklDX1RZUEVfT1BFUkFUSU9OX0NPVU5UID0gMDsNCisNCisJLyoqDQorCSAqIFRoZSBtZXRhIG9iamVjdCBpZCBmb3IgdGhlICd7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmJsb2Nrcy5pbnRlcm5hbC5pbXBsLkVsZW1lbnRQcm9wZXJ0eVBhdGhJbXBsIDxlbT5FbGVtZW50IFByb3BlcnR5IFBhdGg8L2VtPn0nIGNsYXNzLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYmxvY2tzLmludGVybmFsLmltcGwuRWxlbWVudFByb3BlcnR5UGF0aEltcGwNCisJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYmxvY2tzLmludGVybmFsLmltcGwuQmxvY2tzUGFja2FnZUltcGwjZ2V0RWxlbWVudFByb3BlcnR5UGF0aCgpDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCWludCBFTEVNRU5UX1BST1BFUlRZX1BBVEggPSA4Ow0KKw0KKwkvKioNCisJICogVGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkJhc2UgRWxlbWVudDwvYj48L2VtPicgcmVmZXJlbmNlLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKiBAb3JkZXJlZA0KKwkgKi8NCisJaW50IEVMRU1FTlRfUFJPUEVSVFlfUEFUSF9fQkFTRV9FTEVNRU5UID0gMDsNCisNCisJLyoqDQorCSAqIFRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5Qcm9wZXJ0eSBQYXRoPC9iPjwvZW0+JyByZWZlcmVuY2UgbGlzdC4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICogQG9yZGVyZWQNCisJICovDQorCWludCBFTEVNRU5UX1BST1BFUlRZX1BBVEhfX1BST1BFUlRZX1BBVEggPSAxOw0KKw0KKwkvKioNCisJICogVGhlIG51bWJlciBvZiBzdHJ1Y3R1cmFsIGZlYXR1cmVzIG9mIHRoZSAnPGVtPkVsZW1lbnQgUHJvcGVydHkgUGF0aDwvZW0+JyBjbGFzcy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICogQG9yZGVyZWQNCisJICovDQorCWludCBFTEVNRU5UX1BST1BFUlRZX1BBVEhfRkVBVFVSRV9DT1VOVCA9IDI7DQorDQorCS8qKg0KKwkgKiBUaGUgbnVtYmVyIG9mIG9wZXJhdGlvbnMgb2YgdGhlICc8ZW0+RWxlbWVudCBQcm9wZXJ0eSBQYXRoPC9lbT4nIGNsYXNzLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKiBAb3JkZXJlZA0KKwkgKi8NCisJaW50IEVMRU1FTlRfUFJPUEVSVFlfUEFUSF9PUEVSQVRJT05fQ09VTlQgPSAwOw0KKw0KKwkvKioNCisJICogVGhlIG1ldGEgb2JqZWN0IGlkIGZvciB0aGUgJ3tAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYmxvY2tzLmludGVybmFsLmltcGwuTmVzdGVkQ29ubmVjdG9yRW5kSW1wbCA8ZW0+TmVzdGVkIENvbm5lY3RvciBFbmQ8L2VtPn0nIGNsYXNzLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYmxvY2tzLmludGVybmFsLmltcGwuTmVzdGVkQ29ubmVjdG9yRW5kSW1wbA0KKwkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5ibG9ja3MuaW50ZXJuYWwuaW1wbC5CbG9ja3NQYWNrYWdlSW1wbCNnZXROZXN0ZWRDb25uZWN0b3JFbmQoKQ0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlpbnQgTkVTVEVEX0NPTk5FQ1RPUl9FTkQgPSA3Ow0KKw0KKwkvKioNCisJICogVGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkJhc2UgRWxlbWVudDwvYj48L2VtPicgcmVmZXJlbmNlLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKiBAb3JkZXJlZA0KKwkgKi8NCisJaW50IE5FU1RFRF9DT05ORUNUT1JfRU5EX19CQVNFX0VMRU1FTlQgPSBFTEVNRU5UX1BST1BFUlRZX1BBVEhfX0JBU0VfRUxFTUVOVDsNCisNCisJLyoqDQorCSAqIFRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5Qcm9wZXJ0eSBQYXRoPC9iPjwvZW0+JyByZWZlcmVuY2UgbGlzdC4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICogQG9yZGVyZWQNCisJICovDQorCWludCBORVNURURfQ09OTkVDVE9SX0VORF9fUFJPUEVSVFlfUEFUSCA9IEVMRU1FTlRfUFJPUEVSVFlfUEFUSF9fUFJPUEVSVFlfUEFUSDsNCisNCisJLyoqDQorCSAqIFRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5CYXNlIENvbm5lY3RvciBFbmQ8L2I+PC9lbT4nIHJlZmVyZW5jZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICogQG9yZGVyZWQNCisJICovDQorCWludCBORVNURURfQ09OTkVDVE9SX0VORF9fQkFTRV9DT05ORUNUT1JfRU5EID0gRUxFTUVOVF9QUk9QRVJUWV9QQVRIX0ZFQVRVUkVfQ09VTlQgKyAwOw0KKw0KKwkvKioNCisJICogVGhlIG51bWJlciBvZiBzdHJ1Y3R1cmFsIGZlYXR1cmVzIG9mIHRoZSAnPGVtPk5lc3RlZCBDb25uZWN0b3IgRW5kPC9lbT4nIGNsYXNzLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKiBAb3JkZXJlZA0KKwkgKi8NCisJaW50IE5FU1RFRF9DT05ORUNUT1JfRU5EX0ZFQVRVUkVfQ09VTlQgPSBFTEVNRU5UX1BST1BFUlRZX1BBVEhfRkVBVFVSRV9DT1VOVCArIDE7DQorDQorCS8qKg0KKwkgKiBUaGUgbnVtYmVyIG9mIG9wZXJhdGlvbnMgb2YgdGhlICc8ZW0+TmVzdGVkIENvbm5lY3RvciBFbmQ8L2VtPicgY2xhc3MuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqIEBvcmRlcmVkDQorCSAqLw0KKwlpbnQgTkVTVEVEX0NPTk5FQ1RPUl9FTkRfT1BFUkFUSU9OX0NPVU5UID0gRUxFTUVOVF9QUk9QRVJUWV9QQVRIX09QRVJBVElPTl9DT1VOVCArIDA7DQorDQorCS8qKg0KKwkgKiBUaGUgbWV0YSBvYmplY3QgaWQgZm9yIHRoZSAne0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5ibG9ja3MuaW50ZXJuYWwuaW1wbC5EaXJlY3RlZFJlbGF0aW9uc2hpcFByb3BlcnR5UGF0aEltcGwgPGVtPkRpcmVjdGVkIFJlbGF0aW9uc2hpcCBQcm9wZXJ0eSBQYXRoPC9lbT59JyBjbGFzcy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmJsb2Nrcy5pbnRlcm5hbC5pbXBsLkRpcmVjdGVkUmVsYXRpb25zaGlwUHJvcGVydHlQYXRoSW1wbA0KKwkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5ibG9ja3MuaW50ZXJuYWwuaW1wbC5CbG9ja3NQYWNrYWdlSW1wbCNnZXREaXJlY3RlZFJlbGF0aW9uc2hpcFByb3BlcnR5UGF0aCgpDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCWludCBESVJFQ1RFRF9SRUxBVElPTlNISVBfUFJPUEVSVFlfUEFUSCA9IDk7DQorDQorCS8qKg0KKwkgKiBUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+QmFzZSBEaXJlY3RlZCBSZWxhdGlvbnNoaXA8L2I+PC9lbT4nIHJlZmVyZW5jZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICogQG9yZGVyZWQNCisJICovDQorCWludCBESVJFQ1RFRF9SRUxBVElPTlNISVBfUFJPUEVSVFlfUEFUSF9fQkFTRV9ESVJFQ1RFRF9SRUxBVElPTlNISVAgPSAwOw0KKw0KKwkvKioNCisJICogVGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPlNvdXJjZSBQcm9wZXJ0eSBQYXRoPC9iPjwvZW0+JyByZWZlcmVuY2UgbGlzdC4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICogQG9yZGVyZWQNCisJICovDQorCWludCBESVJFQ1RFRF9SRUxBVElPTlNISVBfUFJPUEVSVFlfUEFUSF9fU09VUkNFX1BST1BFUlRZX1BBVEggPSAxOw0KKw0KKwkvKioNCisJICogVGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPlRhcmdldCBQcm9wZXJ0eSBQYXRoPC9iPjwvZW0+JyByZWZlcmVuY2UgbGlzdC4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICogQG9yZGVyZWQNCisJICovDQorCWludCBESVJFQ1RFRF9SRUxBVElPTlNISVBfUFJPUEVSVFlfUEFUSF9fVEFSR0VUX1BST1BFUlRZX1BBVEggPSAyOw0KKw0KKwkvKioNCisJICogVGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPlNvdXJjZSBDb250ZXh0PC9iPjwvZW0+JyByZWZlcmVuY2UuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqIEBvcmRlcmVkDQorCSAqLw0KKwlpbnQgRElSRUNURURfUkVMQVRJT05TSElQX1BST1BFUlRZX1BBVEhfX1NPVVJDRV9DT05URVhUID0gMzsNCisNCisJLyoqDQorCSAqIFRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5UYXJnZXQgQ29udGV4dDwvYj48L2VtPicgcmVmZXJlbmNlLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKiBAb3JkZXJlZA0KKwkgKi8NCisJaW50IERJUkVDVEVEX1JFTEFUSU9OU0hJUF9QUk9QRVJUWV9QQVRIX19UQVJHRVRfQ09OVEVYVCA9IDQ7DQorDQorCS8qKg0KKwkgKiBUaGUgbnVtYmVyIG9mIHN0cnVjdHVyYWwgZmVhdHVyZXMgb2YgdGhlICc8ZW0+RGlyZWN0ZWQgUmVsYXRpb25zaGlwIFByb3BlcnR5IFBhdGg8L2VtPicgY2xhc3MuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqIEBvcmRlcmVkDQorCSAqLw0KKwlpbnQgRElSRUNURURfUkVMQVRJT05TSElQX1BST1BFUlRZX1BBVEhfRkVBVFVSRV9DT1VOVCA9IDU7DQorDQorCS8qKg0KKwkgKiBUaGUgbnVtYmVyIG9mIG9wZXJhdGlvbnMgb2YgdGhlICc8ZW0+RGlyZWN0ZWQgUmVsYXRpb25zaGlwIFByb3BlcnR5IFBhdGg8L2VtPicgY2xhc3MuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqIEBvcmRlcmVkDQorCSAqLw0KKwlpbnQgRElSRUNURURfUkVMQVRJT05TSElQX1BST1BFUlRZX1BBVEhfT1BFUkFUSU9OX0NPVU5UID0gMDsNCisNCisJLyoqDQorCSAqIFRoZSBtZXRhIG9iamVjdCBpZCBmb3IgdGhlICd7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmJsb2Nrcy5pbnRlcm5hbC5pbXBsLkVuZFBhdGhNdWx0aXBsaWNpdHlJbXBsIDxlbT5FbmQgUGF0aCBNdWx0aXBsaWNpdHk8L2VtPn0nIGNsYXNzLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYmxvY2tzLmludGVybmFsLmltcGwuRW5kUGF0aE11bHRpcGxpY2l0eUltcGwNCisJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYmxvY2tzLmludGVybmFsLmltcGwuQmxvY2tzUGFja2FnZUltcGwjZ2V0RW5kUGF0aE11bHRpcGxpY2l0eSgpDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCWludCBFTkRfUEFUSF9NVUxUSVBMSUNJVFkgPSAxMDsNCisNCisJLyoqDQorCSAqIFRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5CYXNlIFByb3BlcnR5PC9iPjwvZW0+JyByZWZlcmVuY2UuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqIEBvcmRlcmVkDQorCSAqLw0KKwlpbnQgRU5EX1BBVEhfTVVMVElQTElDSVRZX19CQVNFX1BST1BFUlRZID0gMDsNCisNCisJLyoqDQorCSAqIFRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5Mb3dlcjwvYj48L2VtPicgYXR0cmlidXRlLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKiBAb3JkZXJlZA0KKwkgKi8NCisJaW50IEVORF9QQVRIX01VTFRJUExJQ0lUWV9fTE9XRVIgPSAxOw0KKw0KKwkvKioNCisJICogVGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPlVwcGVyPC9iPjwvZW0+JyBhdHRyaWJ1dGUuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqIEBvcmRlcmVkDQorCSAqLw0KKwlpbnQgRU5EX1BBVEhfTVVMVElQTElDSVRZX19VUFBFUiA9IDI7DQorDQorCS8qKg0KKwkgKiBUaGUgbnVtYmVyIG9mIHN0cnVjdHVyYWwgZmVhdHVyZXMgb2YgdGhlICc8ZW0+RW5kIFBhdGggTXVsdGlwbGljaXR5PC9lbT4nIGNsYXNzLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKiBAb3JkZXJlZA0KKwkgKi8NCisJaW50IEVORF9QQVRIX01VTFRJUExJQ0lUWV9GRUFUVVJFX0NPVU5UID0gMzsNCisNCisJLyoqDQorCSAqIFRoZSBudW1iZXIgb2Ygb3BlcmF0aW9ucyBvZiB0aGUgJzxlbT5FbmQgUGF0aCBNdWx0aXBsaWNpdHk8L2VtPicgY2xhc3MuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqIEBvcmRlcmVkDQorCSAqLw0KKwlpbnQgRU5EX1BBVEhfTVVMVElQTElDSVRZX09QRVJBVElPTl9DT1VOVCA9IDA7DQorDQorCS8qKg0KKwkgKiBUaGUgbWV0YSBvYmplY3QgaWQgZm9yIHRoZSAne0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5ibG9ja3MuaW50ZXJuYWwuaW1wbC5Cb3VuZFJlZmVyZW5jZUltcGwgPGVtPkJvdW5kIFJlZmVyZW5jZTwvZW0+fScgY2xhc3MuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5ibG9ja3MuaW50ZXJuYWwuaW1wbC5Cb3VuZFJlZmVyZW5jZUltcGwNCisJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYmxvY2tzLmludGVybmFsLmltcGwuQmxvY2tzUGFja2FnZUltcGwjZ2V0Qm91bmRSZWZlcmVuY2UoKQ0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlpbnQgQk9VTkRfUkVGRVJFTkNFID0gMTE7DQorDQorCS8qKg0KKwkgKiBUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+QmFzZSBQcm9wZXJ0eTwvYj48L2VtPicgcmVmZXJlbmNlLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKiBAb3JkZXJlZA0KKwkgKi8NCisJaW50IEJPVU5EX1JFRkVSRU5DRV9fQkFTRV9QUk9QRVJUWSA9IEVORF9QQVRIX01VTFRJUExJQ0lUWV9fQkFTRV9QUk9QRVJUWTsNCisNCisJLyoqDQorCSAqIFRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5Mb3dlcjwvYj48L2VtPicgYXR0cmlidXRlLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKiBAb3JkZXJlZA0KKwkgKi8NCisJaW50IEJPVU5EX1JFRkVSRU5DRV9fTE9XRVIgPSBFTkRfUEFUSF9NVUxUSVBMSUNJVFlfX0xPV0VSOw0KKw0KKwkvKioNCisJICogVGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPlVwcGVyPC9iPjwvZW0+JyBhdHRyaWJ1dGUuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqIEBvcmRlcmVkDQorCSAqLw0KKwlpbnQgQk9VTkRfUkVGRVJFTkNFX19VUFBFUiA9IEVORF9QQVRIX01VTFRJUExJQ0lUWV9fVVBQRVI7DQorDQorCS8qKg0KKwkgKiBUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+Qm91bmQgRW5kPC9iPjwvZW0+JyByZWZlcmVuY2UuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqIEBvcmRlcmVkDQorCSAqLw0KKwlpbnQgQk9VTkRfUkVGRVJFTkNFX19CT1VORF9FTkQgPSBFTkRfUEFUSF9NVUxUSVBMSUNJVFlfRkVBVFVSRV9DT1VOVCArIDA7DQorDQorCS8qKg0KKwkgKiBUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+QmluZGluZyBQYXRoPC9iPjwvZW0+JyByZWZlcmVuY2UgbGlzdC4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICogQG9yZGVyZWQNCisJICovDQorCWludCBCT1VORF9SRUZFUkVOQ0VfX0JJTkRJTkdfUEFUSCA9IEVORF9QQVRIX01VTFRJUExJQ0lUWV9GRUFUVVJFX0NPVU5UICsgMTsNCisNCisJLyoqDQorCSAqIFRoZSBudW1iZXIgb2Ygc3RydWN0dXJhbCBmZWF0dXJlcyBvZiB0aGUgJzxlbT5Cb3VuZCBSZWZlcmVuY2U8L2VtPicgY2xhc3MuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqIEBvcmRlcmVkDQorCSAqLw0KKwlpbnQgQk9VTkRfUkVGRVJFTkNFX0ZFQVRVUkVfQ09VTlQgPSBFTkRfUEFUSF9NVUxUSVBMSUNJVFlfRkVBVFVSRV9DT1VOVCArIDI7DQorDQorCS8qKg0KKwkgKiBUaGUgbnVtYmVyIG9mIG9wZXJhdGlvbnMgb2YgdGhlICc8ZW0+Qm91bmQgUmVmZXJlbmNlPC9lbT4nIGNsYXNzLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKiBAb3JkZXJlZA0KKwkgKi8NCisJaW50IEJPVU5EX1JFRkVSRU5DRV9PUEVSQVRJT05fQ09VTlQgPSBFTkRfUEFUSF9NVUxUSVBMSUNJVFlfT1BFUkFUSU9OX0NPVU5UICsgMDsNCisNCisJLyoqDQorCSAqIFRoZSBtZXRhIG9iamVjdCBpZCBmb3IgdGhlICd7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmJsb2Nrcy5pbnRlcm5hbC5pbXBsLkFkanVuY3RQcm9wZXJ0eUltcGwgPGVtPkFkanVuY3QgUHJvcGVydHk8L2VtPn0nIGNsYXNzLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYmxvY2tzLmludGVybmFsLmltcGwuQWRqdW5jdFByb3BlcnR5SW1wbA0KKwkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5ibG9ja3MuaW50ZXJuYWwuaW1wbC5CbG9ja3NQYWNrYWdlSW1wbCNnZXRBZGp1bmN0UHJvcGVydHkoKQ0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlpbnQgQURKVU5DVF9QUk9QRVJUWSA9IDEyOw0KKw0KKwkvKioNCisJICogVGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkJhc2UgUHJvcGVydHk8L2I+PC9lbT4nIHJlZmVyZW5jZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICogQG9yZGVyZWQNCisJICovDQorCWludCBBREpVTkNUX1BST1BFUlRZX19CQVNFX1BST1BFUlRZID0gMDsNCisNCisJLyoqDQorCSAqIFRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5QcmluY2lwYWw8L2I+PC9lbT4nIHJlZmVyZW5jZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICogQG9yZGVyZWQNCisJICovDQorCWludCBBREpVTkNUX1BST1BFUlRZX19QUklOQ0lQQUwgPSAxOw0KKw0KKwkvKioNCisJICogVGhlIG51bWJlciBvZiBzdHJ1Y3R1cmFsIGZlYXR1cmVzIG9mIHRoZSAnPGVtPkFkanVuY3QgUHJvcGVydHk8L2VtPicgY2xhc3MuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqIEBvcmRlcmVkDQorCSAqLw0KKwlpbnQgQURKVU5DVF9QUk9QRVJUWV9GRUFUVVJFX0NPVU5UID0gMjsNCisNCisJLyoqDQorCSAqIFRoZSBudW1iZXIgb2Ygb3BlcmF0aW9ucyBvZiB0aGUgJzxlbT5BZGp1bmN0IFByb3BlcnR5PC9lbT4nIGNsYXNzLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKiBAb3JkZXJlZA0KKwkgKi8NCisJaW50IEFESlVOQ1RfUFJPUEVSVFlfT1BFUkFUSU9OX0NPVU5UID0gMDsNCisNCisJLyoqDQorCSAqIFRoZSBtZXRhIG9iamVjdCBpZCBmb3IgdGhlICd7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmJsb2Nrcy5pbnRlcm5hbC5pbXBsLkNsYXNzaWZpZXJCZWhhdmlvclByb3BlcnR5SW1wbCA8ZW0+Q2xhc3NpZmllciBCZWhhdmlvciBQcm9wZXJ0eTwvZW0+fScgY2xhc3MuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5ibG9ja3MuaW50ZXJuYWwuaW1wbC5DbGFzc2lmaWVyQmVoYXZpb3JQcm9wZXJ0eUltcGwNCisJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYmxvY2tzLmludGVybmFsLmltcGwuQmxvY2tzUGFja2FnZUltcGwjZ2V0Q2xhc3NpZmllckJlaGF2aW9yUHJvcGVydHkoKQ0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlpbnQgQ0xBU1NJRklFUl9CRUhBVklPUl9QUk9QRVJUWSA9IDEzOw0KKw0KKwkvKioNCisJICogVGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkJhc2UgUHJvcGVydHk8L2I+PC9lbT4nIHJlZmVyZW5jZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICogQG9yZGVyZWQNCisJICovDQorCWludCBDTEFTU0lGSUVSX0JFSEFWSU9SX1BST1BFUlRZX19CQVNFX1BST1BFUlRZID0gMDsNCisNCisJLyoqDQorCSAqIFRoZSBudW1iZXIgb2Ygc3RydWN0dXJhbCBmZWF0dXJlcyBvZiB0aGUgJzxlbT5DbGFzc2lmaWVyIEJlaGF2aW9yIFByb3BlcnR5PC9lbT4nIGNsYXNzLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKiBAb3JkZXJlZA0KKwkgKi8NCisJaW50IENMQVNTSUZJRVJfQkVIQVZJT1JfUFJPUEVSVFlfRkVBVFVSRV9DT1VOVCA9IDE7DQorDQorCS8qKg0KKwkgKiBUaGUgbnVtYmVyIG9mIG9wZXJhdGlvbnMgb2YgdGhlICc8ZW0+Q2xhc3NpZmllciBCZWhhdmlvciBQcm9wZXJ0eTwvZW0+JyBjbGFzcy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICogQG9yZGVyZWQNCisJICovDQorCWludCBDTEFTU0lGSUVSX0JFSEFWSU9SX1BST1BFUlRZX09QRVJBVElPTl9DT1VOVCA9IDA7DQorDQorDQorCS8qKg0KKwkgKiBSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJ3tAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYmxvY2tzLlZhbHVlVHlwZSA8ZW0+VmFsdWUgVHlwZTwvZW0+fScuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAcmV0dXJuIHRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJzxlbT5WYWx1ZSBUeXBlPC9lbT4nLg0KKwkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5ibG9ja3MuVmFsdWVUeXBlDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUVDbGFzcyBnZXRWYWx1ZVR5cGUoKTsNCisNCisJLyoqDQorCSAqIFJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgcmVmZXJlbmNlICd7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmJsb2Nrcy5WYWx1ZVR5cGUjZ2V0QmFzZV9EYXRhVHlwZSA8ZW0+QmFzZSBEYXRhIFR5cGU8L2VtPn0nLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHJldHVybiB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSByZWZlcmVuY2UgJzxlbT5CYXNlIERhdGEgVHlwZTwvZW0+Jy4NCisJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYmxvY2tzLlZhbHVlVHlwZSNnZXRCYXNlX0RhdGFUeXBlKCkNCisJICogQHNlZSAjZ2V0VmFsdWVUeXBlKCkNCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJRVJlZmVyZW5jZSBnZXRWYWx1ZVR5cGVfQmFzZV9EYXRhVHlwZSgpOw0KKw0KKwkvKioNCisJICogUmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSByZWZlcmVuY2UgJ3tAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYmxvY2tzLlZhbHVlVHlwZSNnZXRVbml0IDxlbT5Vbml0PC9lbT59Jy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEByZXR1cm4gdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgcmVmZXJlbmNlICc8ZW0+VW5pdDwvZW0+Jy4NCisJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYmxvY2tzLlZhbHVlVHlwZSNnZXRVbml0KCkNCisJICogQHNlZSAjZ2V0VmFsdWVUeXBlKCkNCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJRVJlZmVyZW5jZSBnZXRWYWx1ZVR5cGVfVW5pdCgpOw0KKw0KKwkvKioNCisJICogUmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSByZWZlcmVuY2UgJ3tAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYmxvY2tzLlZhbHVlVHlwZSNnZXRRdWFudGl0eUtpbmQgPGVtPlF1YW50aXR5IEtpbmQ8L2VtPn0nLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHJldHVybiB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSByZWZlcmVuY2UgJzxlbT5RdWFudGl0eSBLaW5kPC9lbT4nLg0KKwkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5ibG9ja3MuVmFsdWVUeXBlI2dldFF1YW50aXR5S2luZCgpDQorCSAqIEBzZWUgI2dldFZhbHVlVHlwZSgpDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUVSZWZlcmVuY2UgZ2V0VmFsdWVUeXBlX1F1YW50aXR5S2luZCgpOw0KKw0KKwkvKioNCisJICogUmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICd7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmJsb2Nrcy5EaXN0cmlidXRlZFByb3BlcnR5IDxlbT5EaXN0cmlidXRlZCBQcm9wZXJ0eTwvZW0+fScuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAcmV0dXJuIHRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJzxlbT5EaXN0cmlidXRlZCBQcm9wZXJ0eTwvZW0+Jy4NCisJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYmxvY2tzLkRpc3RyaWJ1dGVkUHJvcGVydHkNCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJRUNsYXNzIGdldERpc3RyaWJ1dGVkUHJvcGVydHkoKTsNCisNCisJLyoqDQorCSAqIFJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgcmVmZXJlbmNlICd7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmJsb2Nrcy5EaXN0cmlidXRlZFByb3BlcnR5I2dldEJhc2VfUHJvcGVydHkgPGVtPkJhc2UgUHJvcGVydHk8L2VtPn0nLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHJldHVybiB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSByZWZlcmVuY2UgJzxlbT5CYXNlIFByb3BlcnR5PC9lbT4nLg0KKwkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5ibG9ja3MuRGlzdHJpYnV0ZWRQcm9wZXJ0eSNnZXRCYXNlX1Byb3BlcnR5KCkNCisJICogQHNlZSAjZ2V0RGlzdHJpYnV0ZWRQcm9wZXJ0eSgpDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUVSZWZlcmVuY2UgZ2V0RGlzdHJpYnV0ZWRQcm9wZXJ0eV9CYXNlX1Byb3BlcnR5KCk7DQorDQorCS8qKg0KKwkgKiBSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJ3tAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYmxvY2tzLkNvbm5lY3RvclByb3BlcnR5IDxlbT5Db25uZWN0b3IgUHJvcGVydHk8L2VtPn0nLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHJldHVybiB0aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICc8ZW0+Q29ubmVjdG9yIFByb3BlcnR5PC9lbT4nLg0KKwkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5ibG9ja3MuQ29ubmVjdG9yUHJvcGVydHkNCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJRUNsYXNzIGdldENvbm5lY3RvclByb3BlcnR5KCk7DQorDQorCS8qKg0KKwkgKiBSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIHJlZmVyZW5jZSAne0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5ibG9ja3MuQ29ubmVjdG9yUHJvcGVydHkjZ2V0QmFzZV9Qcm9wZXJ0eSA8ZW0+QmFzZSBQcm9wZXJ0eTwvZW0+fScuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAcmV0dXJuIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIHJlZmVyZW5jZSAnPGVtPkJhc2UgUHJvcGVydHk8L2VtPicuDQorCSAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmJsb2Nrcy5Db25uZWN0b3JQcm9wZXJ0eSNnZXRCYXNlX1Byb3BlcnR5KCkNCisJICogQHNlZSAjZ2V0Q29ubmVjdG9yUHJvcGVydHkoKQ0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlFUmVmZXJlbmNlIGdldENvbm5lY3RvclByb3BlcnR5X0Jhc2VfUHJvcGVydHkoKTsNCisNCisJLyoqDQorCSAqIFJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgcmVmZXJlbmNlICd7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmJsb2Nrcy5Db25uZWN0b3JQcm9wZXJ0eSNnZXRDb25uZWN0b3IgPGVtPkNvbm5lY3RvcjwvZW0+fScuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAcmV0dXJuIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIHJlZmVyZW5jZSAnPGVtPkNvbm5lY3RvcjwvZW0+Jy4NCisJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYmxvY2tzLkNvbm5lY3RvclByb3BlcnR5I2dldENvbm5lY3RvcigpDQorCSAqIEBzZWUgI2dldENvbm5lY3RvclByb3BlcnR5KCkNCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJRVJlZmVyZW5jZSBnZXRDb25uZWN0b3JQcm9wZXJ0eV9Db25uZWN0b3IoKTsNCisNCisJLyoqDQorCSAqIFJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciBjbGFzcyAne0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5ibG9ja3MuUGFydGljaXBhbnRQcm9wZXJ0eSA8ZW0+UGFydGljaXBhbnQgUHJvcGVydHk8L2VtPn0nLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHJldHVybiB0aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICc8ZW0+UGFydGljaXBhbnQgUHJvcGVydHk8L2VtPicuDQorCSAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmJsb2Nrcy5QYXJ0aWNpcGFudFByb3BlcnR5DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUVDbGFzcyBnZXRQYXJ0aWNpcGFudFByb3BlcnR5KCk7DQorDQorCS8qKg0KKwkgKiBSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIHJlZmVyZW5jZSAne0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5ibG9ja3MuUGFydGljaXBhbnRQcm9wZXJ0eSNnZXRCYXNlX1Byb3BlcnR5IDxlbT5CYXNlIFByb3BlcnR5PC9lbT59Jy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEByZXR1cm4gdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgcmVmZXJlbmNlICc8ZW0+QmFzZSBQcm9wZXJ0eTwvZW0+Jy4NCisJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYmxvY2tzLlBhcnRpY2lwYW50UHJvcGVydHkjZ2V0QmFzZV9Qcm9wZXJ0eSgpDQorCSAqIEBzZWUgI2dldFBhcnRpY2lwYW50UHJvcGVydHkoKQ0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlFUmVmZXJlbmNlIGdldFBhcnRpY2lwYW50UHJvcGVydHlfQmFzZV9Qcm9wZXJ0eSgpOw0KKw0KKwkvKioNCisJICogUmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSByZWZlcmVuY2UgJ3tAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYmxvY2tzLlBhcnRpY2lwYW50UHJvcGVydHkjZ2V0RW5kIDxlbT5FbmQ8L2VtPn0nLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHJldHVybiB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSByZWZlcmVuY2UgJzxlbT5FbmQ8L2VtPicuDQorCSAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmJsb2Nrcy5QYXJ0aWNpcGFudFByb3BlcnR5I2dldEVuZCgpDQorCSAqIEBzZWUgI2dldFBhcnRpY2lwYW50UHJvcGVydHkoKQ0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlFUmVmZXJlbmNlIGdldFBhcnRpY2lwYW50UHJvcGVydHlfRW5kKCk7DQorDQorCS8qKg0KKwkgKiBSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJ3tAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYmxvY2tzLkJpbmRpbmdDb25uZWN0b3IgPGVtPkJpbmRpbmcgQ29ubmVjdG9yPC9lbT59Jy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEByZXR1cm4gdGhlIG1ldGEgb2JqZWN0IGZvciBjbGFzcyAnPGVtPkJpbmRpbmcgQ29ubmVjdG9yPC9lbT4nLg0KKwkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5ibG9ja3MuQmluZGluZ0Nvbm5lY3Rvcg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlFQ2xhc3MgZ2V0QmluZGluZ0Nvbm5lY3RvcigpOw0KKw0KKwkvKioNCisJICogUmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSByZWZlcmVuY2UgJ3tAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYmxvY2tzLkJpbmRpbmdDb25uZWN0b3IjZ2V0QmFzZV9Db25uZWN0b3IgPGVtPkJhc2UgQ29ubmVjdG9yPC9lbT59Jy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEByZXR1cm4gdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgcmVmZXJlbmNlICc8ZW0+QmFzZSBDb25uZWN0b3I8L2VtPicuDQorCSAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmJsb2Nrcy5CaW5kaW5nQ29ubmVjdG9yI2dldEJhc2VfQ29ubmVjdG9yKCkNCisJICogQHNlZSAjZ2V0QmluZGluZ0Nvbm5lY3RvcigpDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUVSZWZlcmVuY2UgZ2V0QmluZGluZ0Nvbm5lY3Rvcl9CYXNlX0Nvbm5lY3RvcigpOw0KKw0KKwkvKioNCisJICogUmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICd7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmJsb2Nrcy5CbG9jayA8ZW0+QmxvY2s8L2VtPn0nLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHJldHVybiB0aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICc8ZW0+QmxvY2s8L2VtPicuDQorCSAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmJsb2Nrcy5CbG9jaw0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlFQ2xhc3MgZ2V0QmxvY2soKTsNCisNCisJLyoqDQorCSAqIFJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgcmVmZXJlbmNlICd7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmJsb2Nrcy5CbG9jayNnZXRCYXNlX0NsYXNzIDxlbT5CYXNlIENsYXNzPC9lbT59Jy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEByZXR1cm4gdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgcmVmZXJlbmNlICc8ZW0+QmFzZSBDbGFzczwvZW0+Jy4NCisJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYmxvY2tzLkJsb2NrI2dldEJhc2VfQ2xhc3MoKQ0KKwkgKiBAc2VlICNnZXRCbG9jaygpDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUVSZWZlcmVuY2UgZ2V0QmxvY2tfQmFzZV9DbGFzcygpOw0KKw0KKwkvKioNCisJICogUmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSBhdHRyaWJ1dGUgJ3tAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYmxvY2tzLkJsb2NrI2lzRW5jYXBzdWxhdGVkIDxlbT5JcyBFbmNhcHN1bGF0ZWQ8L2VtPn0nLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHJldHVybiB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSBhdHRyaWJ1dGUgJzxlbT5JcyBFbmNhcHN1bGF0ZWQ8L2VtPicuDQorCSAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmJsb2Nrcy5CbG9jayNpc0VuY2Fwc3VsYXRlZCgpDQorCSAqIEBzZWUgI2dldEJsb2NrKCkNCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJRUF0dHJpYnV0ZSBnZXRCbG9ja19Jc0VuY2Fwc3VsYXRlZCgpOw0KKw0KKwkvKioNCisJICogUmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICd7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmJsb2Nrcy5Qcm9wZXJ0eVNwZWNpZmljVHlwZSA8ZW0+UHJvcGVydHkgU3BlY2lmaWMgVHlwZTwvZW0+fScuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAcmV0dXJuIHRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJzxlbT5Qcm9wZXJ0eSBTcGVjaWZpYyBUeXBlPC9lbT4nLg0KKwkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5ibG9ja3MuUHJvcGVydHlTcGVjaWZpY1R5cGUNCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJRUNsYXNzIGdldFByb3BlcnR5U3BlY2lmaWNUeXBlKCk7DQorDQorCS8qKg0KKwkgKiBSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIHJlZmVyZW5jZSAne0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5ibG9ja3MuUHJvcGVydHlTcGVjaWZpY1R5cGUjZ2V0QmFzZV9DbGFzc2lmaWVyIDxlbT5CYXNlIENsYXNzaWZpZXI8L2VtPn0nLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHJldHVybiB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSByZWZlcmVuY2UgJzxlbT5CYXNlIENsYXNzaWZpZXI8L2VtPicuDQorCSAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmJsb2Nrcy5Qcm9wZXJ0eVNwZWNpZmljVHlwZSNnZXRCYXNlX0NsYXNzaWZpZXIoKQ0KKwkgKiBAc2VlICNnZXRQcm9wZXJ0eVNwZWNpZmljVHlwZSgpDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUVSZWZlcmVuY2UgZ2V0UHJvcGVydHlTcGVjaWZpY1R5cGVfQmFzZV9DbGFzc2lmaWVyKCk7DQorDQorCS8qKg0KKwkgKiBSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJ3tAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYmxvY2tzLk5lc3RlZENvbm5lY3RvckVuZCA8ZW0+TmVzdGVkIENvbm5lY3RvciBFbmQ8L2VtPn0nLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHJldHVybiB0aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICc8ZW0+TmVzdGVkIENvbm5lY3RvciBFbmQ8L2VtPicuDQorCSAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmJsb2Nrcy5OZXN0ZWRDb25uZWN0b3JFbmQNCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJRUNsYXNzIGdldE5lc3RlZENvbm5lY3RvckVuZCgpOw0KKw0KKwkvKioNCisJICogUmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSByZWZlcmVuY2UgJ3tAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYmxvY2tzLk5lc3RlZENvbm5lY3RvckVuZCNnZXRCYXNlX0Nvbm5lY3RvckVuZCA8ZW0+QmFzZSBDb25uZWN0b3IgRW5kPC9lbT59Jy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEByZXR1cm4gdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgcmVmZXJlbmNlICc8ZW0+QmFzZSBDb25uZWN0b3IgRW5kPC9lbT4nLg0KKwkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5ibG9ja3MuTmVzdGVkQ29ubmVjdG9yRW5kI2dldEJhc2VfQ29ubmVjdG9yRW5kKCkNCisJICogQHNlZSAjZ2V0TmVzdGVkQ29ubmVjdG9yRW5kKCkNCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJRVJlZmVyZW5jZSBnZXROZXN0ZWRDb25uZWN0b3JFbmRfQmFzZV9Db25uZWN0b3JFbmQoKTsNCisNCisJLyoqDQorCSAqIFJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciBjbGFzcyAne0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5ibG9ja3MuRWxlbWVudFByb3BlcnR5UGF0aCA8ZW0+RWxlbWVudCBQcm9wZXJ0eSBQYXRoPC9lbT59Jy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEByZXR1cm4gdGhlIG1ldGEgb2JqZWN0IGZvciBjbGFzcyAnPGVtPkVsZW1lbnQgUHJvcGVydHkgUGF0aDwvZW0+Jy4NCisJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYmxvY2tzLkVsZW1lbnRQcm9wZXJ0eVBhdGgNCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJRUNsYXNzIGdldEVsZW1lbnRQcm9wZXJ0eVBhdGgoKTsNCisNCisJLyoqDQorCSAqIFJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgcmVmZXJlbmNlICd7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmJsb2Nrcy5FbGVtZW50UHJvcGVydHlQYXRoI2dldEJhc2VfRWxlbWVudCA8ZW0+QmFzZSBFbGVtZW50PC9lbT59Jy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEByZXR1cm4gdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgcmVmZXJlbmNlICc8ZW0+QmFzZSBFbGVtZW50PC9lbT4nLg0KKwkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5ibG9ja3MuRWxlbWVudFByb3BlcnR5UGF0aCNnZXRCYXNlX0VsZW1lbnQoKQ0KKwkgKiBAc2VlICNnZXRFbGVtZW50UHJvcGVydHlQYXRoKCkNCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJRVJlZmVyZW5jZSBnZXRFbGVtZW50UHJvcGVydHlQYXRoX0Jhc2VfRWxlbWVudCgpOw0KKw0KKwkvKioNCisJICogUmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSByZWZlcmVuY2UgbGlzdCAne0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5ibG9ja3MuRWxlbWVudFByb3BlcnR5UGF0aCNnZXRQcm9wZXJ0eVBhdGggPGVtPlByb3BlcnR5IFBhdGg8L2VtPn0nLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHJldHVybiB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSByZWZlcmVuY2UgbGlzdCAnPGVtPlByb3BlcnR5IFBhdGg8L2VtPicuDQorCSAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmJsb2Nrcy5FbGVtZW50UHJvcGVydHlQYXRoI2dldFByb3BlcnR5UGF0aCgpDQorCSAqIEBzZWUgI2dldEVsZW1lbnRQcm9wZXJ0eVBhdGgoKQ0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlFUmVmZXJlbmNlIGdldEVsZW1lbnRQcm9wZXJ0eVBhdGhfUHJvcGVydHlQYXRoKCk7DQorDQorCS8qKg0KKwkgKiBSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJ3tAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYmxvY2tzLkRpcmVjdGVkUmVsYXRpb25zaGlwUHJvcGVydHlQYXRoIDxlbT5EaXJlY3RlZCBSZWxhdGlvbnNoaXAgUHJvcGVydHkgUGF0aDwvZW0+fScuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAcmV0dXJuIHRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJzxlbT5EaXJlY3RlZCBSZWxhdGlvbnNoaXAgUHJvcGVydHkgUGF0aDwvZW0+Jy4NCisJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYmxvY2tzLkRpcmVjdGVkUmVsYXRpb25zaGlwUHJvcGVydHlQYXRoDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUVDbGFzcyBnZXREaXJlY3RlZFJlbGF0aW9uc2hpcFByb3BlcnR5UGF0aCgpOw0KKw0KKwkvKioNCisJICogUmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSByZWZlcmVuY2UgJ3tAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYmxvY2tzLkRpcmVjdGVkUmVsYXRpb25zaGlwUHJvcGVydHlQYXRoI2dldEJhc2VfRGlyZWN0ZWRSZWxhdGlvbnNoaXAgPGVtPkJhc2UgRGlyZWN0ZWQgUmVsYXRpb25zaGlwPC9lbT59Jy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEByZXR1cm4gdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgcmVmZXJlbmNlICc8ZW0+QmFzZSBEaXJlY3RlZCBSZWxhdGlvbnNoaXA8L2VtPicuDQorCSAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmJsb2Nrcy5EaXJlY3RlZFJlbGF0aW9uc2hpcFByb3BlcnR5UGF0aCNnZXRCYXNlX0RpcmVjdGVkUmVsYXRpb25zaGlwKCkNCisJICogQHNlZSAjZ2V0RGlyZWN0ZWRSZWxhdGlvbnNoaXBQcm9wZXJ0eVBhdGgoKQ0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlFUmVmZXJlbmNlIGdldERpcmVjdGVkUmVsYXRpb25zaGlwUHJvcGVydHlQYXRoX0Jhc2VfRGlyZWN0ZWRSZWxhdGlvbnNoaXAoKTsNCisNCisJLyoqDQorCSAqIFJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgcmVmZXJlbmNlIGxpc3QgJ3tAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYmxvY2tzLkRpcmVjdGVkUmVsYXRpb25zaGlwUHJvcGVydHlQYXRoI2dldFNvdXJjZVByb3BlcnR5UGF0aCA8ZW0+U291cmNlIFByb3BlcnR5IFBhdGg8L2VtPn0nLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHJldHVybiB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSByZWZlcmVuY2UgbGlzdCAnPGVtPlNvdXJjZSBQcm9wZXJ0eSBQYXRoPC9lbT4nLg0KKwkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5ibG9ja3MuRGlyZWN0ZWRSZWxhdGlvbnNoaXBQcm9wZXJ0eVBhdGgjZ2V0U291cmNlUHJvcGVydHlQYXRoKCkNCisJICogQHNlZSAjZ2V0RGlyZWN0ZWRSZWxhdGlvbnNoaXBQcm9wZXJ0eVBhdGgoKQ0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlFUmVmZXJlbmNlIGdldERpcmVjdGVkUmVsYXRpb25zaGlwUHJvcGVydHlQYXRoX1NvdXJjZVByb3BlcnR5UGF0aCgpOw0KKw0KKwkvKioNCisJICogUmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSByZWZlcmVuY2UgbGlzdCAne0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5ibG9ja3MuRGlyZWN0ZWRSZWxhdGlvbnNoaXBQcm9wZXJ0eVBhdGgjZ2V0VGFyZ2V0UHJvcGVydHlQYXRoIDxlbT5UYXJnZXQgUHJvcGVydHkgUGF0aDwvZW0+fScuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAcmV0dXJuIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIHJlZmVyZW5jZSBsaXN0ICc8ZW0+VGFyZ2V0IFByb3BlcnR5IFBhdGg8L2VtPicuDQorCSAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmJsb2Nrcy5EaXJlY3RlZFJlbGF0aW9uc2hpcFByb3BlcnR5UGF0aCNnZXRUYXJnZXRQcm9wZXJ0eVBhdGgoKQ0KKwkgKiBAc2VlICNnZXREaXJlY3RlZFJlbGF0aW9uc2hpcFByb3BlcnR5UGF0aCgpDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUVSZWZlcmVuY2UgZ2V0RGlyZWN0ZWRSZWxhdGlvbnNoaXBQcm9wZXJ0eVBhdGhfVGFyZ2V0UHJvcGVydHlQYXRoKCk7DQorDQorCS8qKg0KKwkgKiBSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIHJlZmVyZW5jZSAne0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5ibG9ja3MuRGlyZWN0ZWRSZWxhdGlvbnNoaXBQcm9wZXJ0eVBhdGgjZ2V0U291cmNlQ29udGV4dCA8ZW0+U291cmNlIENvbnRleHQ8L2VtPn0nLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHJldHVybiB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSByZWZlcmVuY2UgJzxlbT5Tb3VyY2UgQ29udGV4dDwvZW0+Jy4NCisJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYmxvY2tzLkRpcmVjdGVkUmVsYXRpb25zaGlwUHJvcGVydHlQYXRoI2dldFNvdXJjZUNvbnRleHQoKQ0KKwkgKiBAc2VlICNnZXREaXJlY3RlZFJlbGF0aW9uc2hpcFByb3BlcnR5UGF0aCgpDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUVSZWZlcmVuY2UgZ2V0RGlyZWN0ZWRSZWxhdGlvbnNoaXBQcm9wZXJ0eVBhdGhfU291cmNlQ29udGV4dCgpOw0KKw0KKwkvKioNCisJICogUmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSByZWZlcmVuY2UgJ3tAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYmxvY2tzLkRpcmVjdGVkUmVsYXRpb25zaGlwUHJvcGVydHlQYXRoI2dldFRhcmdldENvbnRleHQgPGVtPlRhcmdldCBDb250ZXh0PC9lbT59Jy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEByZXR1cm4gdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgcmVmZXJlbmNlICc8ZW0+VGFyZ2V0IENvbnRleHQ8L2VtPicuDQorCSAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmJsb2Nrcy5EaXJlY3RlZFJlbGF0aW9uc2hpcFByb3BlcnR5UGF0aCNnZXRUYXJnZXRDb250ZXh0KCkNCisJICogQHNlZSAjZ2V0RGlyZWN0ZWRSZWxhdGlvbnNoaXBQcm9wZXJ0eVBhdGgoKQ0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlFUmVmZXJlbmNlIGdldERpcmVjdGVkUmVsYXRpb25zaGlwUHJvcGVydHlQYXRoX1RhcmdldENvbnRleHQoKTsNCisNCisJLyoqDQorCSAqIFJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciBjbGFzcyAne0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5ibG9ja3MuRW5kUGF0aE11bHRpcGxpY2l0eSA8ZW0+RW5kIFBhdGggTXVsdGlwbGljaXR5PC9lbT59Jy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEByZXR1cm4gdGhlIG1ldGEgb2JqZWN0IGZvciBjbGFzcyAnPGVtPkVuZCBQYXRoIE11bHRpcGxpY2l0eTwvZW0+Jy4NCisJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYmxvY2tzLkVuZFBhdGhNdWx0aXBsaWNpdHkNCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJRUNsYXNzIGdldEVuZFBhdGhNdWx0aXBsaWNpdHkoKTsNCisNCisJLyoqDQorCSAqIFJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgcmVmZXJlbmNlICd7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmJsb2Nrcy5FbmRQYXRoTXVsdGlwbGljaXR5I2dldEJhc2VfUHJvcGVydHkgPGVtPkJhc2UgUHJvcGVydHk8L2VtPn0nLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHJldHVybiB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSByZWZlcmVuY2UgJzxlbT5CYXNlIFByb3BlcnR5PC9lbT4nLg0KKwkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5ibG9ja3MuRW5kUGF0aE11bHRpcGxpY2l0eSNnZXRCYXNlX1Byb3BlcnR5KCkNCisJICogQHNlZSAjZ2V0RW5kUGF0aE11bHRpcGxpY2l0eSgpDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUVSZWZlcmVuY2UgZ2V0RW5kUGF0aE11bHRpcGxpY2l0eV9CYXNlX1Byb3BlcnR5KCk7DQorDQorCS8qKg0KKwkgKiBSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGF0dHJpYnV0ZSAne0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5ibG9ja3MuRW5kUGF0aE11bHRpcGxpY2l0eSNnZXRMb3dlciA8ZW0+TG93ZXI8L2VtPn0nLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHJldHVybiB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSBhdHRyaWJ1dGUgJzxlbT5Mb3dlcjwvZW0+Jy4NCisJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYmxvY2tzLkVuZFBhdGhNdWx0aXBsaWNpdHkjZ2V0TG93ZXIoKQ0KKwkgKiBAc2VlICNnZXRFbmRQYXRoTXVsdGlwbGljaXR5KCkNCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJRUF0dHJpYnV0ZSBnZXRFbmRQYXRoTXVsdGlwbGljaXR5X0xvd2VyKCk7DQorDQorCS8qKg0KKwkgKiBSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGF0dHJpYnV0ZSAne0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5ibG9ja3MuRW5kUGF0aE11bHRpcGxpY2l0eSNnZXRVcHBlciA8ZW0+VXBwZXI8L2VtPn0nLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHJldHVybiB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSBhdHRyaWJ1dGUgJzxlbT5VcHBlcjwvZW0+Jy4NCisJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYmxvY2tzLkVuZFBhdGhNdWx0aXBsaWNpdHkjZ2V0VXBwZXIoKQ0KKwkgKiBAc2VlICNnZXRFbmRQYXRoTXVsdGlwbGljaXR5KCkNCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJRUF0dHJpYnV0ZSBnZXRFbmRQYXRoTXVsdGlwbGljaXR5X1VwcGVyKCk7DQorDQorCS8qKg0KKwkgKiBSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJ3tAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYmxvY2tzLkJvdW5kUmVmZXJlbmNlIDxlbT5Cb3VuZCBSZWZlcmVuY2U8L2VtPn0nLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHJldHVybiB0aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICc8ZW0+Qm91bmQgUmVmZXJlbmNlPC9lbT4nLg0KKwkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5ibG9ja3MuQm91bmRSZWZlcmVuY2UNCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJRUNsYXNzIGdldEJvdW5kUmVmZXJlbmNlKCk7DQorDQorCS8qKg0KKwkgKiBSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIHJlZmVyZW5jZSAne0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5ibG9ja3MuQm91bmRSZWZlcmVuY2UjZ2V0Qm91bmRFbmQgPGVtPkJvdW5kIEVuZDwvZW0+fScuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAcmV0dXJuIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIHJlZmVyZW5jZSAnPGVtPkJvdW5kIEVuZDwvZW0+Jy4NCisJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYmxvY2tzLkJvdW5kUmVmZXJlbmNlI2dldEJvdW5kRW5kKCkNCisJICogQHNlZSAjZ2V0Qm91bmRSZWZlcmVuY2UoKQ0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlFUmVmZXJlbmNlIGdldEJvdW5kUmVmZXJlbmNlX0JvdW5kRW5kKCk7DQorDQorCS8qKg0KKwkgKiBSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIHJlZmVyZW5jZSBsaXN0ICd7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmJsb2Nrcy5Cb3VuZFJlZmVyZW5jZSNnZXRCaW5kaW5nUGF0aCA8ZW0+QmluZGluZyBQYXRoPC9lbT59Jy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEByZXR1cm4gdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgcmVmZXJlbmNlIGxpc3QgJzxlbT5CaW5kaW5nIFBhdGg8L2VtPicuDQorCSAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmJsb2Nrcy5Cb3VuZFJlZmVyZW5jZSNnZXRCaW5kaW5nUGF0aCgpDQorCSAqIEBzZWUgI2dldEJvdW5kUmVmZXJlbmNlKCkNCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJRVJlZmVyZW5jZSBnZXRCb3VuZFJlZmVyZW5jZV9CaW5kaW5nUGF0aCgpOw0KKw0KKwkvKioNCisJICogUmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICd7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmJsb2Nrcy5BZGp1bmN0UHJvcGVydHkgPGVtPkFkanVuY3QgUHJvcGVydHk8L2VtPn0nLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHJldHVybiB0aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICc8ZW0+QWRqdW5jdCBQcm9wZXJ0eTwvZW0+Jy4NCisJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYmxvY2tzLkFkanVuY3RQcm9wZXJ0eQ0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlFQ2xhc3MgZ2V0QWRqdW5jdFByb3BlcnR5KCk7DQorDQorCS8qKg0KKwkgKiBSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIHJlZmVyZW5jZSAne0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5ibG9ja3MuQWRqdW5jdFByb3BlcnR5I2dldEJhc2VfUHJvcGVydHkgPGVtPkJhc2UgUHJvcGVydHk8L2VtPn0nLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHJldHVybiB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSByZWZlcmVuY2UgJzxlbT5CYXNlIFByb3BlcnR5PC9lbT4nLg0KKwkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5ibG9ja3MuQWRqdW5jdFByb3BlcnR5I2dldEJhc2VfUHJvcGVydHkoKQ0KKwkgKiBAc2VlICNnZXRBZGp1bmN0UHJvcGVydHkoKQ0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlFUmVmZXJlbmNlIGdldEFkanVuY3RQcm9wZXJ0eV9CYXNlX1Byb3BlcnR5KCk7DQorDQorCS8qKg0KKwkgKiBSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIHJlZmVyZW5jZSAne0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5ibG9ja3MuQWRqdW5jdFByb3BlcnR5I2dldFByaW5jaXBhbCA8ZW0+UHJpbmNpcGFsPC9lbT59Jy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEByZXR1cm4gdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgcmVmZXJlbmNlICc8ZW0+UHJpbmNpcGFsPC9lbT4nLg0KKwkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5ibG9ja3MuQWRqdW5jdFByb3BlcnR5I2dldFByaW5jaXBhbCgpDQorCSAqIEBzZWUgI2dldEFkanVuY3RQcm9wZXJ0eSgpDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUVSZWZlcmVuY2UgZ2V0QWRqdW5jdFByb3BlcnR5X1ByaW5jaXBhbCgpOw0KKw0KKwkvKioNCisJICogUmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICd7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmJsb2Nrcy5DbGFzc2lmaWVyQmVoYXZpb3JQcm9wZXJ0eSA8ZW0+Q2xhc3NpZmllciBCZWhhdmlvciBQcm9wZXJ0eTwvZW0+fScuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAcmV0dXJuIHRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJzxlbT5DbGFzc2lmaWVyIEJlaGF2aW9yIFByb3BlcnR5PC9lbT4nLg0KKwkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5ibG9ja3MuQ2xhc3NpZmllckJlaGF2aW9yUHJvcGVydHkNCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJRUNsYXNzIGdldENsYXNzaWZpZXJCZWhhdmlvclByb3BlcnR5KCk7DQorDQorCS8qKg0KKwkgKiBSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIHJlZmVyZW5jZSAne0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5ibG9ja3MuQ2xhc3NpZmllckJlaGF2aW9yUHJvcGVydHkjZ2V0QmFzZV9Qcm9wZXJ0eSA8ZW0+QmFzZSBQcm9wZXJ0eTwvZW0+fScuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAcmV0dXJuIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIHJlZmVyZW5jZSAnPGVtPkJhc2UgUHJvcGVydHk8L2VtPicuDQorCSAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmJsb2Nrcy5DbGFzc2lmaWVyQmVoYXZpb3JQcm9wZXJ0eSNnZXRCYXNlX1Byb3BlcnR5KCkNCisJICogQHNlZSAjZ2V0Q2xhc3NpZmllckJlaGF2aW9yUHJvcGVydHkoKQ0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlFUmVmZXJlbmNlIGdldENsYXNzaWZpZXJCZWhhdmlvclByb3BlcnR5X0Jhc2VfUHJvcGVydHkoKTsNCisNCisJLyoqDQorCSAqIFJldHVybnMgdGhlIGZhY3RvcnkgdGhhdCBjcmVhdGVzIHRoZSBpbnN0YW5jZXMgb2YgdGhlIG1vZGVsLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHJldHVybiB0aGUgZmFjdG9yeSB0aGF0IGNyZWF0ZXMgdGhlIGluc3RhbmNlcyBvZiB0aGUgbW9kZWwuDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUJsb2Nrc0ZhY3RvcnkgZ2V0QmxvY2tzRmFjdG9yeSgpOw0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogRGVmaW5lcyBsaXRlcmFscyBmb3IgdGhlIG1ldGEgb2JqZWN0cyB0aGF0IHJlcHJlc2VudA0KKwkgKiA8dWw+DQorCSAqICAgPGxpPmVhY2ggY2xhc3MsPC9saT4NCisJICogICA8bGk+ZWFjaCBmZWF0dXJlIG9mIGVhY2ggY2xhc3MsPC9saT4NCisJICogICA8bGk+ZWFjaCBvcGVyYXRpb24gb2YgZWFjaCBjbGFzcyw8L2xpPg0KKwkgKiAgIDxsaT5lYWNoIGVudW0sPC9saT4NCisJICogICA8bGk+YW5kIGVhY2ggZGF0YSB0eXBlPC9saT4NCisJICogPC91bD4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCWludGVyZmFjZSBMaXRlcmFscyB7DQorCQkvKioNCisJCSAqIFRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJ3tAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYmxvY2tzLmludGVybmFsLmltcGwuVmFsdWVUeXBlSW1wbCA8ZW0+VmFsdWUgVHlwZTwvZW0+fScgY2xhc3MuDQorCQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCQkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5ibG9ja3MuaW50ZXJuYWwuaW1wbC5WYWx1ZVR5cGVJbXBsDQorCQkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5ibG9ja3MuaW50ZXJuYWwuaW1wbC5CbG9ja3NQYWNrYWdlSW1wbCNnZXRWYWx1ZVR5cGUoKQ0KKwkJICogQGdlbmVyYXRlZA0KKwkJICovDQorCQlFQ2xhc3MgVkFMVUVfVFlQRSA9IGVJTlNUQU5DRS5nZXRWYWx1ZVR5cGUoKTsNCisNCisJCS8qKg0KKwkJICogVGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPGVtPjxiPkJhc2UgRGF0YSBUeXBlPC9iPjwvZW0+JyByZWZlcmVuY2UgZmVhdHVyZS4NCisJCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJCSAqIEBnZW5lcmF0ZWQNCisJCSAqLw0KKwkJRVJlZmVyZW5jZSBWQUxVRV9UWVBFX19CQVNFX0RBVEFfVFlQRSA9IGVJTlNUQU5DRS5nZXRWYWx1ZVR5cGVfQmFzZV9EYXRhVHlwZSgpOw0KKw0KKwkJLyoqDQorCQkgKiBUaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8ZW0+PGI+VW5pdDwvYj48L2VtPicgcmVmZXJlbmNlIGZlYXR1cmUuDQorCQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCQkgKiBAZ2VuZXJhdGVkDQorCQkgKi8NCisJCUVSZWZlcmVuY2UgVkFMVUVfVFlQRV9fVU5JVCA9IGVJTlNUQU5DRS5nZXRWYWx1ZVR5cGVfVW5pdCgpOw0KKw0KKwkJLyoqDQorCQkgKiBUaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8ZW0+PGI+UXVhbnRpdHkgS2luZDwvYj48L2VtPicgcmVmZXJlbmNlIGZlYXR1cmUuDQorCQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCQkgKiBAZ2VuZXJhdGVkDQorCQkgKi8NCisJCUVSZWZlcmVuY2UgVkFMVUVfVFlQRV9fUVVBTlRJVFlfS0lORCA9IGVJTlNUQU5DRS5nZXRWYWx1ZVR5cGVfUXVhbnRpdHlLaW5kKCk7DQorDQorCQkvKioNCisJCSAqIFRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJ3tAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYmxvY2tzLmludGVybmFsLmltcGwuRGlzdHJpYnV0ZWRQcm9wZXJ0eUltcGwgPGVtPkRpc3RyaWJ1dGVkIFByb3BlcnR5PC9lbT59JyBjbGFzcy4NCisJCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJCSAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmJsb2Nrcy5pbnRlcm5hbC5pbXBsLkRpc3RyaWJ1dGVkUHJvcGVydHlJbXBsDQorCQkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5ibG9ja3MuaW50ZXJuYWwuaW1wbC5CbG9ja3NQYWNrYWdlSW1wbCNnZXREaXN0cmlidXRlZFByb3BlcnR5KCkNCisJCSAqIEBnZW5lcmF0ZWQNCisJCSAqLw0KKwkJRUNsYXNzIERJU1RSSUJVVEVEX1BST1BFUlRZID0gZUlOU1RBTkNFLmdldERpc3RyaWJ1dGVkUHJvcGVydHkoKTsNCisNCisJCS8qKg0KKwkJICogVGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPGVtPjxiPkJhc2UgUHJvcGVydHk8L2I+PC9lbT4nIHJlZmVyZW5jZSBmZWF0dXJlLg0KKwkJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkJICogQGdlbmVyYXRlZA0KKwkJICovDQorCQlFUmVmZXJlbmNlIERJU1RSSUJVVEVEX1BST1BFUlRZX19CQVNFX1BST1BFUlRZID0gZUlOU1RBTkNFLmdldERpc3RyaWJ1dGVkUHJvcGVydHlfQmFzZV9Qcm9wZXJ0eSgpOw0KKw0KKwkJLyoqDQorCQkgKiBUaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICd7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmJsb2Nrcy5pbnRlcm5hbC5pbXBsLkNvbm5lY3RvclByb3BlcnR5SW1wbCA8ZW0+Q29ubmVjdG9yIFByb3BlcnR5PC9lbT59JyBjbGFzcy4NCisJCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJCSAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmJsb2Nrcy5pbnRlcm5hbC5pbXBsLkNvbm5lY3RvclByb3BlcnR5SW1wbA0KKwkJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYmxvY2tzLmludGVybmFsLmltcGwuQmxvY2tzUGFja2FnZUltcGwjZ2V0Q29ubmVjdG9yUHJvcGVydHkoKQ0KKwkJICogQGdlbmVyYXRlZA0KKwkJICovDQorCQlFQ2xhc3MgQ09OTkVDVE9SX1BST1BFUlRZID0gZUlOU1RBTkNFLmdldENvbm5lY3RvclByb3BlcnR5KCk7DQorDQorCQkvKioNCisJCSAqIFRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxlbT48Yj5CYXNlIFByb3BlcnR5PC9iPjwvZW0+JyByZWZlcmVuY2UgZmVhdHVyZS4NCisJCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJCSAqIEBnZW5lcmF0ZWQNCisJCSAqLw0KKwkJRVJlZmVyZW5jZSBDT05ORUNUT1JfUFJPUEVSVFlfX0JBU0VfUFJPUEVSVFkgPSBlSU5TVEFOQ0UuZ2V0Q29ubmVjdG9yUHJvcGVydHlfQmFzZV9Qcm9wZXJ0eSgpOw0KKw0KKwkJLyoqDQorCQkgKiBUaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8ZW0+PGI+Q29ubmVjdG9yPC9iPjwvZW0+JyByZWZlcmVuY2UgZmVhdHVyZS4NCisJCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJCSAqIEBnZW5lcmF0ZWQNCisJCSAqLw0KKwkJRVJlZmVyZW5jZSBDT05ORUNUT1JfUFJPUEVSVFlfX0NPTk5FQ1RPUiA9IGVJTlNUQU5DRS5nZXRDb25uZWN0b3JQcm9wZXJ0eV9Db25uZWN0b3IoKTsNCisNCisJCS8qKg0KKwkJICogVGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAne0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5ibG9ja3MuaW50ZXJuYWwuaW1wbC5QYXJ0aWNpcGFudFByb3BlcnR5SW1wbCA8ZW0+UGFydGljaXBhbnQgUHJvcGVydHk8L2VtPn0nIGNsYXNzLg0KKwkJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYmxvY2tzLmludGVybmFsLmltcGwuUGFydGljaXBhbnRQcm9wZXJ0eUltcGwNCisJCSAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmJsb2Nrcy5pbnRlcm5hbC5pbXBsLkJsb2Nrc1BhY2thZ2VJbXBsI2dldFBhcnRpY2lwYW50UHJvcGVydHkoKQ0KKwkJICogQGdlbmVyYXRlZA0KKwkJICovDQorCQlFQ2xhc3MgUEFSVElDSVBBTlRfUFJPUEVSVFkgPSBlSU5TVEFOQ0UuZ2V0UGFydGljaXBhbnRQcm9wZXJ0eSgpOw0KKw0KKwkJLyoqDQorCQkgKiBUaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8ZW0+PGI+QmFzZSBQcm9wZXJ0eTwvYj48L2VtPicgcmVmZXJlbmNlIGZlYXR1cmUuDQorCQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCQkgKiBAZ2VuZXJhdGVkDQorCQkgKi8NCisJCUVSZWZlcmVuY2UgUEFSVElDSVBBTlRfUFJPUEVSVFlfX0JBU0VfUFJPUEVSVFkgPSBlSU5TVEFOQ0UuZ2V0UGFydGljaXBhbnRQcm9wZXJ0eV9CYXNlX1Byb3BlcnR5KCk7DQorDQorCQkvKioNCisJCSAqIFRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxlbT48Yj5FbmQ8L2I+PC9lbT4nIHJlZmVyZW5jZSBmZWF0dXJlLg0KKwkJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkJICogQGdlbmVyYXRlZA0KKwkJICovDQorCQlFUmVmZXJlbmNlIFBBUlRJQ0lQQU5UX1BST1BFUlRZX19FTkQgPSBlSU5TVEFOQ0UuZ2V0UGFydGljaXBhbnRQcm9wZXJ0eV9FbmQoKTsNCisNCisJCS8qKg0KKwkJICogVGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAne0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5ibG9ja3MuaW50ZXJuYWwuaW1wbC5CaW5kaW5nQ29ubmVjdG9ySW1wbCA8ZW0+QmluZGluZyBDb25uZWN0b3I8L2VtPn0nIGNsYXNzLg0KKwkJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYmxvY2tzLmludGVybmFsLmltcGwuQmluZGluZ0Nvbm5lY3RvckltcGwNCisJCSAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmJsb2Nrcy5pbnRlcm5hbC5pbXBsLkJsb2Nrc1BhY2thZ2VJbXBsI2dldEJpbmRpbmdDb25uZWN0b3IoKQ0KKwkJICogQGdlbmVyYXRlZA0KKwkJICovDQorCQlFQ2xhc3MgQklORElOR19DT05ORUNUT1IgPSBlSU5TVEFOQ0UuZ2V0QmluZGluZ0Nvbm5lY3RvcigpOw0KKw0KKwkJLyoqDQorCQkgKiBUaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8ZW0+PGI+QmFzZSBDb25uZWN0b3I8L2I+PC9lbT4nIHJlZmVyZW5jZSBmZWF0dXJlLg0KKwkJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkJICogQGdlbmVyYXRlZA0KKwkJICovDQorCQlFUmVmZXJlbmNlIEJJTkRJTkdfQ09OTkVDVE9SX19CQVNFX0NPTk5FQ1RPUiA9IGVJTlNUQU5DRS5nZXRCaW5kaW5nQ29ubmVjdG9yX0Jhc2VfQ29ubmVjdG9yKCk7DQorDQorCQkvKioNCisJCSAqIFRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJ3tAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYmxvY2tzLmludGVybmFsLmltcGwuQmxvY2tJbXBsIDxlbT5CbG9jazwvZW0+fScgY2xhc3MuDQorCQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCQkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5ibG9ja3MuaW50ZXJuYWwuaW1wbC5CbG9ja0ltcGwNCisJCSAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmJsb2Nrcy5pbnRlcm5hbC5pbXBsLkJsb2Nrc1BhY2thZ2VJbXBsI2dldEJsb2NrKCkNCisJCSAqIEBnZW5lcmF0ZWQNCisJCSAqLw0KKwkJRUNsYXNzIEJMT0NLID0gZUlOU1RBTkNFLmdldEJsb2NrKCk7DQorDQorCQkvKioNCisJCSAqIFRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxlbT48Yj5CYXNlIENsYXNzPC9iPjwvZW0+JyByZWZlcmVuY2UgZmVhdHVyZS4NCisJCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJCSAqIEBnZW5lcmF0ZWQNCisJCSAqLw0KKwkJRVJlZmVyZW5jZSBCTE9DS19fQkFTRV9DTEFTUyA9IGVJTlNUQU5DRS5nZXRCbG9ja19CYXNlX0NsYXNzKCk7DQorDQorCQkvKioNCisJCSAqIFRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxlbT48Yj5JcyBFbmNhcHN1bGF0ZWQ8L2I+PC9lbT4nIGF0dHJpYnV0ZSBmZWF0dXJlLg0KKwkJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkJICogQGdlbmVyYXRlZA0KKwkJICovDQorCQlFQXR0cmlidXRlIEJMT0NLX19JU19FTkNBUFNVTEFURUQgPSBlSU5TVEFOQ0UuZ2V0QmxvY2tfSXNFbmNhcHN1bGF0ZWQoKTsNCisNCisJCS8qKg0KKwkJICogVGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAne0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5ibG9ja3MuaW50ZXJuYWwuaW1wbC5Qcm9wZXJ0eVNwZWNpZmljVHlwZUltcGwgPGVtPlByb3BlcnR5IFNwZWNpZmljIFR5cGU8L2VtPn0nIGNsYXNzLg0KKwkJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYmxvY2tzLmludGVybmFsLmltcGwuUHJvcGVydHlTcGVjaWZpY1R5cGVJbXBsDQorCQkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5ibG9ja3MuaW50ZXJuYWwuaW1wbC5CbG9ja3NQYWNrYWdlSW1wbCNnZXRQcm9wZXJ0eVNwZWNpZmljVHlwZSgpDQorCQkgKiBAZ2VuZXJhdGVkDQorCQkgKi8NCisJCUVDbGFzcyBQUk9QRVJUWV9TUEVDSUZJQ19UWVBFID0gZUlOU1RBTkNFLmdldFByb3BlcnR5U3BlY2lmaWNUeXBlKCk7DQorDQorCQkvKioNCisJCSAqIFRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxlbT48Yj5CYXNlIENsYXNzaWZpZXI8L2I+PC9lbT4nIHJlZmVyZW5jZSBmZWF0dXJlLg0KKwkJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkJICogQGdlbmVyYXRlZA0KKwkJICovDQorCQlFUmVmZXJlbmNlIFBST1BFUlRZX1NQRUNJRklDX1RZUEVfX0JBU0VfQ0xBU1NJRklFUiA9IGVJTlNUQU5DRS5nZXRQcm9wZXJ0eVNwZWNpZmljVHlwZV9CYXNlX0NsYXNzaWZpZXIoKTsNCisNCisJCS8qKg0KKwkJICogVGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAne0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5ibG9ja3MuaW50ZXJuYWwuaW1wbC5OZXN0ZWRDb25uZWN0b3JFbmRJbXBsIDxlbT5OZXN0ZWQgQ29ubmVjdG9yIEVuZDwvZW0+fScgY2xhc3MuDQorCQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCQkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5ibG9ja3MuaW50ZXJuYWwuaW1wbC5OZXN0ZWRDb25uZWN0b3JFbmRJbXBsDQorCQkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5ibG9ja3MuaW50ZXJuYWwuaW1wbC5CbG9ja3NQYWNrYWdlSW1wbCNnZXROZXN0ZWRDb25uZWN0b3JFbmQoKQ0KKwkJICogQGdlbmVyYXRlZA0KKwkJICovDQorCQlFQ2xhc3MgTkVTVEVEX0NPTk5FQ1RPUl9FTkQgPSBlSU5TVEFOQ0UuZ2V0TmVzdGVkQ29ubmVjdG9yRW5kKCk7DQorDQorCQkvKioNCisJCSAqIFRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxlbT48Yj5CYXNlIENvbm5lY3RvciBFbmQ8L2I+PC9lbT4nIHJlZmVyZW5jZSBmZWF0dXJlLg0KKwkJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkJICogQGdlbmVyYXRlZA0KKwkJICovDQorCQlFUmVmZXJlbmNlIE5FU1RFRF9DT05ORUNUT1JfRU5EX19CQVNFX0NPTk5FQ1RPUl9FTkQgPSBlSU5TVEFOQ0UuZ2V0TmVzdGVkQ29ubmVjdG9yRW5kX0Jhc2VfQ29ubmVjdG9yRW5kKCk7DQorDQorCQkvKioNCisJCSAqIFRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJ3tAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYmxvY2tzLmludGVybmFsLmltcGwuRWxlbWVudFByb3BlcnR5UGF0aEltcGwgPGVtPkVsZW1lbnQgUHJvcGVydHkgUGF0aDwvZW0+fScgY2xhc3MuDQorCQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCQkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5ibG9ja3MuaW50ZXJuYWwuaW1wbC5FbGVtZW50UHJvcGVydHlQYXRoSW1wbA0KKwkJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYmxvY2tzLmludGVybmFsLmltcGwuQmxvY2tzUGFja2FnZUltcGwjZ2V0RWxlbWVudFByb3BlcnR5UGF0aCgpDQorCQkgKiBAZ2VuZXJhdGVkDQorCQkgKi8NCisJCUVDbGFzcyBFTEVNRU5UX1BST1BFUlRZX1BBVEggPSBlSU5TVEFOQ0UuZ2V0RWxlbWVudFByb3BlcnR5UGF0aCgpOw0KKw0KKwkJLyoqDQorCQkgKiBUaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8ZW0+PGI+QmFzZSBFbGVtZW50PC9iPjwvZW0+JyByZWZlcmVuY2UgZmVhdHVyZS4NCisJCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJCSAqIEBnZW5lcmF0ZWQNCisJCSAqLw0KKwkJRVJlZmVyZW5jZSBFTEVNRU5UX1BST1BFUlRZX1BBVEhfX0JBU0VfRUxFTUVOVCA9IGVJTlNUQU5DRS5nZXRFbGVtZW50UHJvcGVydHlQYXRoX0Jhc2VfRWxlbWVudCgpOw0KKw0KKwkJLyoqDQorCQkgKiBUaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8ZW0+PGI+UHJvcGVydHkgUGF0aDwvYj48L2VtPicgcmVmZXJlbmNlIGxpc3QgZmVhdHVyZS4NCisJCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJCSAqIEBnZW5lcmF0ZWQNCisJCSAqLw0KKwkJRVJlZmVyZW5jZSBFTEVNRU5UX1BST1BFUlRZX1BBVEhfX1BST1BFUlRZX1BBVEggPSBlSU5TVEFOQ0UuZ2V0RWxlbWVudFByb3BlcnR5UGF0aF9Qcm9wZXJ0eVBhdGgoKTsNCisNCisJCS8qKg0KKwkJICogVGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAne0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5ibG9ja3MuaW50ZXJuYWwuaW1wbC5EaXJlY3RlZFJlbGF0aW9uc2hpcFByb3BlcnR5UGF0aEltcGwgPGVtPkRpcmVjdGVkIFJlbGF0aW9uc2hpcCBQcm9wZXJ0eSBQYXRoPC9lbT59JyBjbGFzcy4NCisJCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJCSAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmJsb2Nrcy5pbnRlcm5hbC5pbXBsLkRpcmVjdGVkUmVsYXRpb25zaGlwUHJvcGVydHlQYXRoSW1wbA0KKwkJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYmxvY2tzLmludGVybmFsLmltcGwuQmxvY2tzUGFja2FnZUltcGwjZ2V0RGlyZWN0ZWRSZWxhdGlvbnNoaXBQcm9wZXJ0eVBhdGgoKQ0KKwkJICogQGdlbmVyYXRlZA0KKwkJICovDQorCQlFQ2xhc3MgRElSRUNURURfUkVMQVRJT05TSElQX1BST1BFUlRZX1BBVEggPSBlSU5TVEFOQ0UuZ2V0RGlyZWN0ZWRSZWxhdGlvbnNoaXBQcm9wZXJ0eVBhdGgoKTsNCisNCisJCS8qKg0KKwkJICogVGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPGVtPjxiPkJhc2UgRGlyZWN0ZWQgUmVsYXRpb25zaGlwPC9iPjwvZW0+JyByZWZlcmVuY2UgZmVhdHVyZS4NCisJCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJCSAqIEBnZW5lcmF0ZWQNCisJCSAqLw0KKwkJRVJlZmVyZW5jZSBESVJFQ1RFRF9SRUxBVElPTlNISVBfUFJPUEVSVFlfUEFUSF9fQkFTRV9ESVJFQ1RFRF9SRUxBVElPTlNISVAgPSBlSU5TVEFOQ0UuZ2V0RGlyZWN0ZWRSZWxhdGlvbnNoaXBQcm9wZXJ0eVBhdGhfQmFzZV9EaXJlY3RlZFJlbGF0aW9uc2hpcCgpOw0KKw0KKwkJLyoqDQorCQkgKiBUaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8ZW0+PGI+U291cmNlIFByb3BlcnR5IFBhdGg8L2I+PC9lbT4nIHJlZmVyZW5jZSBsaXN0IGZlYXR1cmUuDQorCQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCQkgKiBAZ2VuZXJhdGVkDQorCQkgKi8NCisJCUVSZWZlcmVuY2UgRElSRUNURURfUkVMQVRJT05TSElQX1BST1BFUlRZX1BBVEhfX1NPVVJDRV9QUk9QRVJUWV9QQVRIID0gZUlOU1RBTkNFLmdldERpcmVjdGVkUmVsYXRpb25zaGlwUHJvcGVydHlQYXRoX1NvdXJjZVByb3BlcnR5UGF0aCgpOw0KKw0KKwkJLyoqDQorCQkgKiBUaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8ZW0+PGI+VGFyZ2V0IFByb3BlcnR5IFBhdGg8L2I+PC9lbT4nIHJlZmVyZW5jZSBsaXN0IGZlYXR1cmUuDQorCQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCQkgKiBAZ2VuZXJhdGVkDQorCQkgKi8NCisJCUVSZWZlcmVuY2UgRElSRUNURURfUkVMQVRJT05TSElQX1BST1BFUlRZX1BBVEhfX1RBUkdFVF9QUk9QRVJUWV9QQVRIID0gZUlOU1RBTkNFLmdldERpcmVjdGVkUmVsYXRpb25zaGlwUHJvcGVydHlQYXRoX1RhcmdldFByb3BlcnR5UGF0aCgpOw0KKw0KKwkJLyoqDQorCQkgKiBUaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8ZW0+PGI+U291cmNlIENvbnRleHQ8L2I+PC9lbT4nIHJlZmVyZW5jZSBmZWF0dXJlLg0KKwkJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkJICogQGdlbmVyYXRlZA0KKwkJICovDQorCQlFUmVmZXJlbmNlIERJUkVDVEVEX1JFTEFUSU9OU0hJUF9QUk9QRVJUWV9QQVRIX19TT1VSQ0VfQ09OVEVYVCA9IGVJTlNUQU5DRS5nZXREaXJlY3RlZFJlbGF0aW9uc2hpcFByb3BlcnR5UGF0aF9Tb3VyY2VDb250ZXh0KCk7DQorDQorCQkvKioNCisJCSAqIFRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxlbT48Yj5UYXJnZXQgQ29udGV4dDwvYj48L2VtPicgcmVmZXJlbmNlIGZlYXR1cmUuDQorCQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCQkgKiBAZ2VuZXJhdGVkDQorCQkgKi8NCisJCUVSZWZlcmVuY2UgRElSRUNURURfUkVMQVRJT05TSElQX1BST1BFUlRZX1BBVEhfX1RBUkdFVF9DT05URVhUID0gZUlOU1RBTkNFLmdldERpcmVjdGVkUmVsYXRpb25zaGlwUHJvcGVydHlQYXRoX1RhcmdldENvbnRleHQoKTsNCisNCisJCS8qKg0KKwkJICogVGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAne0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5ibG9ja3MuaW50ZXJuYWwuaW1wbC5FbmRQYXRoTXVsdGlwbGljaXR5SW1wbCA8ZW0+RW5kIFBhdGggTXVsdGlwbGljaXR5PC9lbT59JyBjbGFzcy4NCisJCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJCSAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmJsb2Nrcy5pbnRlcm5hbC5pbXBsLkVuZFBhdGhNdWx0aXBsaWNpdHlJbXBsDQorCQkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5ibG9ja3MuaW50ZXJuYWwuaW1wbC5CbG9ja3NQYWNrYWdlSW1wbCNnZXRFbmRQYXRoTXVsdGlwbGljaXR5KCkNCisJCSAqIEBnZW5lcmF0ZWQNCisJCSAqLw0KKwkJRUNsYXNzIEVORF9QQVRIX01VTFRJUExJQ0lUWSA9IGVJTlNUQU5DRS5nZXRFbmRQYXRoTXVsdGlwbGljaXR5KCk7DQorDQorCQkvKioNCisJCSAqIFRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxlbT48Yj5CYXNlIFByb3BlcnR5PC9iPjwvZW0+JyByZWZlcmVuY2UgZmVhdHVyZS4NCisJCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJCSAqIEBnZW5lcmF0ZWQNCisJCSAqLw0KKwkJRVJlZmVyZW5jZSBFTkRfUEFUSF9NVUxUSVBMSUNJVFlfX0JBU0VfUFJPUEVSVFkgPSBlSU5TVEFOQ0UuZ2V0RW5kUGF0aE11bHRpcGxpY2l0eV9CYXNlX1Byb3BlcnR5KCk7DQorDQorCQkvKioNCisJCSAqIFRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxlbT48Yj5Mb3dlcjwvYj48L2VtPicgYXR0cmlidXRlIGZlYXR1cmUuDQorCQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCQkgKiBAZ2VuZXJhdGVkDQorCQkgKi8NCisJCUVBdHRyaWJ1dGUgRU5EX1BBVEhfTVVMVElQTElDSVRZX19MT1dFUiA9IGVJTlNUQU5DRS5nZXRFbmRQYXRoTXVsdGlwbGljaXR5X0xvd2VyKCk7DQorDQorCQkvKioNCisJCSAqIFRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxlbT48Yj5VcHBlcjwvYj48L2VtPicgYXR0cmlidXRlIGZlYXR1cmUuDQorCQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCQkgKiBAZ2VuZXJhdGVkDQorCQkgKi8NCisJCUVBdHRyaWJ1dGUgRU5EX1BBVEhfTVVMVElQTElDSVRZX19VUFBFUiA9IGVJTlNUQU5DRS5nZXRFbmRQYXRoTXVsdGlwbGljaXR5X1VwcGVyKCk7DQorDQorCQkvKioNCisJCSAqIFRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJ3tAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYmxvY2tzLmludGVybmFsLmltcGwuQm91bmRSZWZlcmVuY2VJbXBsIDxlbT5Cb3VuZCBSZWZlcmVuY2U8L2VtPn0nIGNsYXNzLg0KKwkJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYmxvY2tzLmludGVybmFsLmltcGwuQm91bmRSZWZlcmVuY2VJbXBsDQorCQkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5ibG9ja3MuaW50ZXJuYWwuaW1wbC5CbG9ja3NQYWNrYWdlSW1wbCNnZXRCb3VuZFJlZmVyZW5jZSgpDQorCQkgKiBAZ2VuZXJhdGVkDQorCQkgKi8NCisJCUVDbGFzcyBCT1VORF9SRUZFUkVOQ0UgPSBlSU5TVEFOQ0UuZ2V0Qm91bmRSZWZlcmVuY2UoKTsNCisNCisJCS8qKg0KKwkJICogVGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPGVtPjxiPkJvdW5kIEVuZDwvYj48L2VtPicgcmVmZXJlbmNlIGZlYXR1cmUuDQorCQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCQkgKiBAZ2VuZXJhdGVkDQorCQkgKi8NCisJCUVSZWZlcmVuY2UgQk9VTkRfUkVGRVJFTkNFX19CT1VORF9FTkQgPSBlSU5TVEFOQ0UuZ2V0Qm91bmRSZWZlcmVuY2VfQm91bmRFbmQoKTsNCisNCisJCS8qKg0KKwkJICogVGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPGVtPjxiPkJpbmRpbmcgUGF0aDwvYj48L2VtPicgcmVmZXJlbmNlIGxpc3QgZmVhdHVyZS4NCisJCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJCSAqIEBnZW5lcmF0ZWQNCisJCSAqLw0KKwkJRVJlZmVyZW5jZSBCT1VORF9SRUZFUkVOQ0VfX0JJTkRJTkdfUEFUSCA9IGVJTlNUQU5DRS5nZXRCb3VuZFJlZmVyZW5jZV9CaW5kaW5nUGF0aCgpOw0KKw0KKwkJLyoqDQorCQkgKiBUaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICd7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmJsb2Nrcy5pbnRlcm5hbC5pbXBsLkFkanVuY3RQcm9wZXJ0eUltcGwgPGVtPkFkanVuY3QgUHJvcGVydHk8L2VtPn0nIGNsYXNzLg0KKwkJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYmxvY2tzLmludGVybmFsLmltcGwuQWRqdW5jdFByb3BlcnR5SW1wbA0KKwkJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYmxvY2tzLmludGVybmFsLmltcGwuQmxvY2tzUGFja2FnZUltcGwjZ2V0QWRqdW5jdFByb3BlcnR5KCkNCisJCSAqIEBnZW5lcmF0ZWQNCisJCSAqLw0KKwkJRUNsYXNzIEFESlVOQ1RfUFJPUEVSVFkgPSBlSU5TVEFOQ0UuZ2V0QWRqdW5jdFByb3BlcnR5KCk7DQorDQorCQkvKioNCisJCSAqIFRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxlbT48Yj5CYXNlIFByb3BlcnR5PC9iPjwvZW0+JyByZWZlcmVuY2UgZmVhdHVyZS4NCisJCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJCSAqIEBnZW5lcmF0ZWQNCisJCSAqLw0KKwkJRVJlZmVyZW5jZSBBREpVTkNUX1BST1BFUlRZX19CQVNFX1BST1BFUlRZID0gZUlOU1RBTkNFLmdldEFkanVuY3RQcm9wZXJ0eV9CYXNlX1Byb3BlcnR5KCk7DQorDQorCQkvKioNCisJCSAqIFRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxlbT48Yj5QcmluY2lwYWw8L2I+PC9lbT4nIHJlZmVyZW5jZSBmZWF0dXJlLg0KKwkJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkJICogQGdlbmVyYXRlZA0KKwkJICovDQorCQlFUmVmZXJlbmNlIEFESlVOQ1RfUFJPUEVSVFlfX1BSSU5DSVBBTCA9IGVJTlNUQU5DRS5nZXRBZGp1bmN0UHJvcGVydHlfUHJpbmNpcGFsKCk7DQorDQorCQkvKioNCisJCSAqIFRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJ3tAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYmxvY2tzLmludGVybmFsLmltcGwuQ2xhc3NpZmllckJlaGF2aW9yUHJvcGVydHlJbXBsIDxlbT5DbGFzc2lmaWVyIEJlaGF2aW9yIFByb3BlcnR5PC9lbT59JyBjbGFzcy4NCisJCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJCSAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmJsb2Nrcy5pbnRlcm5hbC5pbXBsLkNsYXNzaWZpZXJCZWhhdmlvclByb3BlcnR5SW1wbA0KKwkJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYmxvY2tzLmludGVybmFsLmltcGwuQmxvY2tzUGFja2FnZUltcGwjZ2V0Q2xhc3NpZmllckJlaGF2aW9yUHJvcGVydHkoKQ0KKwkJICogQGdlbmVyYXRlZA0KKwkJICovDQorCQlFQ2xhc3MgQ0xBU1NJRklFUl9CRUhBVklPUl9QUk9QRVJUWSA9IGVJTlNUQU5DRS5nZXRDbGFzc2lmaWVyQmVoYXZpb3JQcm9wZXJ0eSgpOw0KKw0KKwkJLyoqDQorCQkgKiBUaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8ZW0+PGI+QmFzZSBQcm9wZXJ0eTwvYj48L2VtPicgcmVmZXJlbmNlIGZlYXR1cmUuDQorCQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCQkgKiBAZ2VuZXJhdGVkDQorCQkgKi8NCisJCUVSZWZlcmVuY2UgQ0xBU1NJRklFUl9CRUhBVklPUl9QUk9QRVJUWV9fQkFTRV9QUk9QRVJUWSA9IGVJTlNUQU5DRS5nZXRDbGFzc2lmaWVyQmVoYXZpb3JQcm9wZXJ0eV9CYXNlX1Byb3BlcnR5KCk7DQorDQorCX0NCisNCit9IC8vQmxvY2tzUGFja2FnZQ0KZGlmZiAtLWdpdCBhL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L2Jsb2Nrcy9Cb3VuZFJlZmVyZW5jZS5qYXZhIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvYmxvY2tzL0JvdW5kUmVmZXJlbmNlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjRmMmQxNAotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L2Jsb2Nrcy9Cb3VuZFJlZmVyZW5jZS5qYXZhCkBAIC0wLDAgKzEsMTAzIEBACisvKioNCisgKiBDb3B5cmlnaHQgKGMpIDIwMTUgQ0VBIExJU1QuDQorICogDQorICogIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCisgKiAgYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQorICogIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQorICogIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICovDQorcGFja2FnZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYmxvY2tzOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY29tbW9uLnV0aWwuRUxpc3Q7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FQ2xhc3M7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLnVtbDIudW1sLkNvbm5lY3RvckVuZDsNCitpbXBvcnQgb3JnLmVjbGlwc2UudW1sMi51bWwuUHJvcGVydHk7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnVtbDIudW1sLlR5cGU7DQorDQorLyoqDQorICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisgKiBBIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBtb2RlbCBvYmplY3QgJzxlbT48Yj5Cb3VuZCBSZWZlcmVuY2U8L2I+PC9lbT4nLg0KKyAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKyAqDQorICogPHA+DQorICogVGhlIGZvbGxvd2luZyBmZWF0dXJlcyBhcmUgc3VwcG9ydGVkOg0KKyAqIDx1bD4NCisgKiAgIDxsaT57QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmJsb2Nrcy5Cb3VuZFJlZmVyZW5jZSNnZXRCb3VuZEVuZCA8ZW0+Qm91bmQgRW5kPC9lbT59PC9saT4NCisgKiAgIDxsaT57QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmJsb2Nrcy5Cb3VuZFJlZmVyZW5jZSNnZXRCaW5kaW5nUGF0aCA8ZW0+QmluZGluZyBQYXRoPC9lbT59PC9saT4NCisgKiA8L3VsPg0KKyAqIDwvcD4NCisgKg0KKyAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmJsb2Nrcy5CbG9ja3NQYWNrYWdlI2dldEJvdW5kUmVmZXJlbmNlKCkNCisgKiBAbW9kZWwNCisgKiBAZ2VuZXJhdGVkDQorICovDQorcHVibGljIGludGVyZmFjZSBCb3VuZFJlZmVyZW5jZSBleHRlbmRzIEVuZFBhdGhNdWx0aXBsaWNpdHkgew0KKwkvKioNCisJICogUmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+PGI+Qm91bmQgRW5kPC9iPjwvZW0+JyByZWZlcmVuY2UuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGJlZ2luLW1vZGVsLWRvYyAtLT4NCisJICogR2l2ZXMgYSBjb25uZWN0b3IgZW5kIG9mIGEgYmluZGluZyBjb25uZWN0b3Igb3Bwb3NpdGUgdG8gdGhlIGVuZCBsaW5rZWQgdG8gdGhlIHN0ZXJlb3R5cGVkIHByb3BlcnR5LCBvciBsaW5rZWQgdG8gYSBwcm9wZXJ0eSB0aGF0IGdlbmVyYWxpemVzIHRoZSBzdGVyZW90eXBlZCBvbmUgdGhyb3VnaCByZWRlZmluaXRpb24uDQorCSAqIDwhLS0gZW5kLW1vZGVsLWRvYyAtLT4NCisJICogQHJldHVybiB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+Qm91bmQgRW5kPC9lbT4nIHJlZmVyZW5jZS4NCisJICogQHNlZSAjc2V0Qm91bmRFbmQoQ29ubmVjdG9yRW5kKQ0KKwkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5ibG9ja3MuQmxvY2tzUGFja2FnZSNnZXRCb3VuZFJlZmVyZW5jZV9Cb3VuZEVuZCgpDQorCSAqIEBtb2RlbCByZXF1aXJlZD0idHJ1ZSIgb3JkZXJlZD0iZmFsc2UiDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUNvbm5lY3RvckVuZCBnZXRCb3VuZEVuZCgpOw0KKw0KKwkvKioNCisJICogU2V0cyB0aGUgdmFsdWUgb2YgdGhlICd7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmJsb2Nrcy5Cb3VuZFJlZmVyZW5jZSNnZXRCb3VuZEVuZCA8ZW0+Qm91bmQgRW5kPC9lbT59JyByZWZlcmVuY2UuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAcGFyYW0gdmFsdWUgdGhlIG5ldyB2YWx1ZSBvZiB0aGUgJzxlbT5Cb3VuZCBFbmQ8L2VtPicgcmVmZXJlbmNlLg0KKwkgKiBAc2VlICNnZXRCb3VuZEVuZCgpDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXZvaWQgc2V0Qm91bmRFbmQoQ29ubmVjdG9yRW5kIHZhbHVlKTsNCisNCisJLyoqDQorCSAqIFJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSAnPGVtPjxiPkJpbmRpbmcgUGF0aDwvYj48L2VtPicgcmVmZXJlbmNlIGxpc3QuDQorCSAqIFRoZSBsaXN0IGNvbnRlbnRzIGFyZSBvZiB0eXBlIHtAbGluayBvcmcuZWNsaXBzZS51bWwyLnVtbC5Qcm9wZXJ0eX0uDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGJlZ2luLW1vZGVsLWRvYyAtLT4NCisJICogR2l2ZXMgdGhlIHByb3BlcnR5UGF0aCBvZiB0aGUgTmVzdGVkQ29ubmVjdG9yRW5kIGFwcGxpZWQsIGlmIGFueSwgdG8gdGhlIGJvdW5kRW5kLCBhcHBlbmRlZCB0byB0aGUgcm9sZSBvZiB0aGUgYm91bmRFbmQuIA0KKwkgKiA8IS0tIGVuZC1tb2RlbC1kb2MgLS0+DQorCSAqIEByZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSAnPGVtPkJpbmRpbmcgUGF0aDwvZW0+JyByZWZlcmVuY2UgbGlzdC4NCisJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYmxvY2tzLkJsb2Nrc1BhY2thZ2UjZ2V0Qm91bmRSZWZlcmVuY2VfQmluZGluZ1BhdGgoKQ0KKwkgKiBAbW9kZWwgcmVxdWlyZWQ9InRydWUiIHRyYW5zaWVudD0idHJ1ZSIgdm9sYXRpbGU9InRydWUiIGRlcml2ZWQ9InRydWUiDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUVMaXN0PFByb3BlcnR5PiBnZXRCaW5kaW5nUGF0aCgpOw0KKw0KKwkvKioNCisJICogUmV0cmlldmVzIHRoZSBmaXJzdCB7QGxpbmsgb3JnLmVjbGlwc2UudW1sMi51bWwuUHJvcGVydHl9IHdpdGggdGhlIHNwZWNpZmllZCAnPGVtPjxiPk5hbWU8L2I+PC9lbT4nLCBhbmQgJzxlbT48Yj5UeXBlPC9iPjwvZW0+JyBmcm9tIHRoZSAnPGVtPjxiPkJpbmRpbmcgUGF0aDwvYj48L2VtPicgcmVmZXJlbmNlIGxpc3QuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAcGFyYW0gbmFtZSBUaGUgJzxlbT48Yj5OYW1lPC9iPjwvZW0+JyBvZiB0aGUge0BsaW5rIG9yZy5lY2xpcHNlLnVtbDIudW1sLlByb3BlcnR5fSB0byByZXRyaWV2ZSwgb3IgPGNvZGU+bnVsbDwvY29kZT4uDQorCSAqIEBwYXJhbSB0eXBlIFRoZSAnPGVtPjxiPlR5cGU8L2I+PC9lbT4nIG9mIHRoZSB7QGxpbmsgb3JnLmVjbGlwc2UudW1sMi51bWwuUHJvcGVydHl9IHRvIHJldHJpZXZlLCBvciA8Y29kZT5udWxsPC9jb2RlPi4NCisJICogQHJldHVybiBUaGUgZmlyc3Qge0BsaW5rIG9yZy5lY2xpcHNlLnVtbDIudW1sLlByb3BlcnR5fSB3aXRoIHRoZSBzcGVjaWZpZWQgJzxlbT48Yj5OYW1lPC9iPjwvZW0+JywgYW5kICc8ZW0+PGI+VHlwZTwvYj48L2VtPicsIG9yIDxjb2RlPm51bGw8L2NvZGU+Lg0KKwkgKiBAc2VlICNnZXRCaW5kaW5nUGF0aCgpDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCVByb3BlcnR5IGdldEJpbmRpbmdQYXRoKFN0cmluZyBuYW1lLCBUeXBlIHR5cGUpOw0KKw0KKwkvKioNCisJICogUmV0cmlldmVzIHRoZSBmaXJzdCB7QGxpbmsgb3JnLmVjbGlwc2UudW1sMi51bWwuUHJvcGVydHl9IHdpdGggdGhlIHNwZWNpZmllZCAnPGVtPjxiPk5hbWU8L2I+PC9lbT4nLCBhbmQgJzxlbT48Yj5UeXBlPC9iPjwvZW0+JyBmcm9tIHRoZSAnPGVtPjxiPkJpbmRpbmcgUGF0aDwvYj48L2VtPicgcmVmZXJlbmNlIGxpc3QuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAcGFyYW0gbmFtZSBUaGUgJzxlbT48Yj5OYW1lPC9iPjwvZW0+JyBvZiB0aGUge0BsaW5rIG9yZy5lY2xpcHNlLnVtbDIudW1sLlByb3BlcnR5fSB0byByZXRyaWV2ZSwgb3IgPGNvZGU+bnVsbDwvY29kZT4uDQorCSAqIEBwYXJhbSB0eXBlIFRoZSAnPGVtPjxiPlR5cGU8L2I+PC9lbT4nIG9mIHRoZSB7QGxpbmsgb3JnLmVjbGlwc2UudW1sMi51bWwuUHJvcGVydHl9IHRvIHJldHJpZXZlLCBvciA8Y29kZT5udWxsPC9jb2RlPi4NCisJICogQHBhcmFtIGlnbm9yZUNhc2UgV2hldGhlciB0byBpZ25vcmUgY2FzZSBpbiB7QGxpbmsgamF2YS5sYW5nLlN0cmluZ30gY29tcGFyaXNvbnMuDQorCSAqIEBwYXJhbSBlQ2xhc3MgVGhlIEVjb3JlIGNsYXNzIG9mIHRoZSB7QGxpbmsgb3JnLmVjbGlwc2UudW1sMi51bWwuUHJvcGVydHl9IHRvIHJldHJpZXZlLCBvciA8Y29kZT5udWxsPC9jb2RlPi4NCisJICogQHJldHVybiBUaGUgZmlyc3Qge0BsaW5rIG9yZy5lY2xpcHNlLnVtbDIudW1sLlByb3BlcnR5fSB3aXRoIHRoZSBzcGVjaWZpZWQgJzxlbT48Yj5OYW1lPC9iPjwvZW0+JywgYW5kICc8ZW0+PGI+VHlwZTwvYj48L2VtPicsIG9yIDxjb2RlPm51bGw8L2NvZGU+Lg0KKwkgKiBAc2VlICNnZXRCaW5kaW5nUGF0aCgpDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCVByb3BlcnR5IGdldEJpbmRpbmdQYXRoKFN0cmluZyBuYW1lLCBUeXBlIHR5cGUsIGJvb2xlYW4gaWdub3JlQ2FzZSwgRUNsYXNzIGVDbGFzcyk7DQorDQorfSAvLyBCb3VuZFJlZmVyZW5jZQ0KZGlmZiAtLWdpdCBhL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L2Jsb2Nrcy9DbGFzc2lmaWVyQmVoYXZpb3JQcm9wZXJ0eS5qYXZhIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvYmxvY2tzL0NsYXNzaWZpZXJCZWhhdmlvclByb3BlcnR5LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzUwM2I5YwotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L2Jsb2Nrcy9DbGFzc2lmaWVyQmVoYXZpb3JQcm9wZXJ0eS5qYXZhCkBAIC0wLDAgKzEsNjIgQEAKKy8qKg0KKyAqIENvcHlyaWdodCAoYykgMjAxNSBDRUEgTElTVC4NCisgKiANCisgKiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KKyAqICBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCisgKiAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCisgKiAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgKi8NCitwYWNrYWdlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5ibG9ja3M7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FT2JqZWN0Ow0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS51bWwyLnVtbC5Qcm9wZXJ0eTsNCisNCisvKioNCisgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKyAqIEEgcmVwcmVzZW50YXRpb24gb2YgdGhlIG1vZGVsIG9iamVjdCAnPGVtPjxiPkNsYXNzaWZpZXIgQmVoYXZpb3IgUHJvcGVydHk8L2I+PC9lbT4nLg0KKyAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKyAqDQorICogPCEtLSBiZWdpbi1tb2RlbC1kb2MgLS0+DQorICogVGhlIENsYXNzaWZpZXJCZWhhdmlvclByb3BlcnR5IHN0ZXJlb3R5cGUgY2FuIGJlIGFwcGxpZWQgdG8gcHJvcGVydGllcyB0byBjb25zdHJhaW4gdGhlaXIgdmFsdWVzIHRvIGJlIHRoZSBleGVjdXRpb25zIG9mIGNsYXNzaWZpZXIgYmVoYXZpb3JzLiAgVGhlIHZhbHVlIG9mIHByb3BlcnRpZXMgd2l0aCBDbGFzc2lmaWVyQmVoYXZpb3JQcm9wZXJ0eSAgYXBwbGllZCBhcmUgdGhlIGV4ZWN1dGlvbnMgb2YgY2xhc3NpZmllciBiZWhhdmlvcnMgaW52b2tlZCBieSBpbnN0YW50aWF0aW9uIG9mIHRoZSBibG9jayB0aGF0IG93bnMgdGhlIHN0ZXJlb3R5cGVkIHByb3BlcnR5IG9yIG9uZSBvZiBpdHMgc3BlY2lhbGl6YXRpb25zLg0KKyAqIDwhLS0gZW5kLW1vZGVsLWRvYyAtLT4NCisgKg0KKyAqIDxwPg0KKyAqIFRoZSBmb2xsb3dpbmcgZmVhdHVyZXMgYXJlIHN1cHBvcnRlZDoNCisgKiA8dWw+DQorICogICA8bGk+e0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5ibG9ja3MuQ2xhc3NpZmllckJlaGF2aW9yUHJvcGVydHkjZ2V0QmFzZV9Qcm9wZXJ0eSA8ZW0+QmFzZSBQcm9wZXJ0eTwvZW0+fTwvbGk+DQorICogPC91bD4NCisgKiA8L3A+DQorICoNCisgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5ibG9ja3MuQmxvY2tzUGFja2FnZSNnZXRDbGFzc2lmaWVyQmVoYXZpb3JQcm9wZXJ0eSgpDQorICogQG1vZGVsDQorICogQGdlbmVyYXRlZA0KKyAqLw0KK3B1YmxpYyBpbnRlcmZhY2UgQ2xhc3NpZmllckJlaGF2aW9yUHJvcGVydHkgZXh0ZW5kcyBFT2JqZWN0IHsNCisJLyoqDQorCSAqIFJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSAnPGVtPjxiPkJhc2UgUHJvcGVydHk8L2I+PC9lbT4nIHJlZmVyZW5jZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPHA+DQorCSAqIElmIHRoZSBtZWFuaW5nIG9mIHRoZSAnPGVtPkJhc2UgUHJvcGVydHk8L2VtPicgcmVmZXJlbmNlIGlzbid0IGNsZWFyLA0KKwkgKiB0aGVyZSByZWFsbHkgc2hvdWxkIGJlIG1vcmUgb2YgYSBkZXNjcmlwdGlvbiBoZXJlLi4uDQorCSAqIDwvcD4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEByZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSAnPGVtPkJhc2UgUHJvcGVydHk8L2VtPicgcmVmZXJlbmNlLg0KKwkgKiBAc2VlICNzZXRCYXNlX1Byb3BlcnR5KFByb3BlcnR5KQ0KKwkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5ibG9ja3MuQmxvY2tzUGFja2FnZSNnZXRDbGFzc2lmaWVyQmVoYXZpb3JQcm9wZXJ0eV9CYXNlX1Byb3BlcnR5KCkNCisJICogQG1vZGVsIG9yZGVyZWQ9ImZhbHNlIg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlQcm9wZXJ0eSBnZXRCYXNlX1Byb3BlcnR5KCk7DQorDQorCS8qKg0KKwkgKiBTZXRzIHRoZSB2YWx1ZSBvZiB0aGUgJ3tAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYmxvY2tzLkNsYXNzaWZpZXJCZWhhdmlvclByb3BlcnR5I2dldEJhc2VfUHJvcGVydHkgPGVtPkJhc2UgUHJvcGVydHk8L2VtPn0nIHJlZmVyZW5jZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBwYXJhbSB2YWx1ZSB0aGUgbmV3IHZhbHVlIG9mIHRoZSAnPGVtPkJhc2UgUHJvcGVydHk8L2VtPicgcmVmZXJlbmNlLg0KKwkgKiBAc2VlICNnZXRCYXNlX1Byb3BlcnR5KCkNCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJdm9pZCBzZXRCYXNlX1Byb3BlcnR5KFByb3BlcnR5IHZhbHVlKTsNCisNCit9IC8vIENsYXNzaWZpZXJCZWhhdmlvclByb3BlcnR5DQpkaWZmIC0tZ2l0IGEvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvYmxvY2tzL0Nvbm5lY3RvclByb3BlcnR5LmphdmEgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9ibG9ja3MvQ29ubmVjdG9yUHJvcGVydHkuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42M2ZhMjJmCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvYmxvY2tzL0Nvbm5lY3RvclByb3BlcnR5LmphdmEKQEAgLTAsMCArMSw4OSBAQAorLyoqDQorICogQ29weXJpZ2h0IChjKSAyMDE1IENFQSBMSVNULg0KKyAqIA0KKyAqICBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQorICogIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KKyAqICB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KKyAqICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqLw0KK3BhY2thZ2Ugb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmJsb2NrczsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVPYmplY3Q7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLnVtbDIudW1sLkNvbm5lY3RvcjsNCitpbXBvcnQgb3JnLmVjbGlwc2UudW1sMi51bWwuUHJvcGVydHk7DQorDQorLyoqDQorICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisgKiBBIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBtb2RlbCBvYmplY3QgJzxlbT48Yj5Db25uZWN0b3IgUHJvcGVydHk8L2I+PC9lbT4nLg0KKyAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKyAqDQorICogPCEtLSBiZWdpbi1tb2RlbC1kb2MgLS0+DQorICogQ29ubmVjdG9ycyBjYW4gYmUgdHlwZWQgYnkgYXNzb2NpYXRpb24gY2xhc3NlcyB0aGF0IGFyZSBzdGVyZW90eXBlZCBieSBCbG9jayAoYXNzb2NpYXRpb24gYmxvY2tzKS4gVGhlc2UgY29ubmVjdG9ycyBzcGVjaWZ5IGluc3RhbmNlcyAobGlua3MpIG9mIHRoZSBhc3NvY2lhdGlvbiBibG9jayB0aGF0IGV4aXN0IGR1ZSB0byBpbnN0YW50aWF0aW9uIG9mIHRoZSBibG9jayBvd25pbmcgb3IgaW5oZXJpdGluZyB0aGUgY29ubmVjdG9yLiBUaGUgdmFsdWUgb2YgYSBjb25uZWN0b3IgcHJvcGVydHkgb24gYW4gaW5zdGFuY2Ugb2YgYSBibG9jayB3aWxsIGJlIGV4YWN0bHkgdGhvc2UgbGluayBvYmplY3RzIHRoYXQgYXJlIGluc3RhbmNlcyBvZiB0aGUgYXNzb2NpYXRpb24gYmxvY2sgdHlwaW5nIHRoZSBjb25uZWN0b3IgcmVmZXJyZWQgdG8gYnkgdGhlIGNvbm5lY3RvciBwcm9wZXJ0eS4NCisgKiA8IS0tIGVuZC1tb2RlbC1kb2MgLS0+DQorICoNCisgKiA8cD4NCisgKiBUaGUgZm9sbG93aW5nIGZlYXR1cmVzIGFyZSBzdXBwb3J0ZWQ6DQorICogPHVsPg0KKyAqICAgPGxpPntAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYmxvY2tzLkNvbm5lY3RvclByb3BlcnR5I2dldEJhc2VfUHJvcGVydHkgPGVtPkJhc2UgUHJvcGVydHk8L2VtPn08L2xpPg0KKyAqICAgPGxpPntAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYmxvY2tzLkNvbm5lY3RvclByb3BlcnR5I2dldENvbm5lY3RvciA8ZW0+Q29ubmVjdG9yPC9lbT59PC9saT4NCisgKiA8L3VsPg0KKyAqIDwvcD4NCisgKg0KKyAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmJsb2Nrcy5CbG9ja3NQYWNrYWdlI2dldENvbm5lY3RvclByb3BlcnR5KCkNCisgKiBAbW9kZWwNCisgKiBAZ2VuZXJhdGVkDQorICovDQorcHVibGljIGludGVyZmFjZSBDb25uZWN0b3JQcm9wZXJ0eSBleHRlbmRzIEVPYmplY3Qgew0KKwkvKioNCisJICogUmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+PGI+QmFzZSBQcm9wZXJ0eTwvYj48L2VtPicgcmVmZXJlbmNlLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8cD4NCisJICogSWYgdGhlIG1lYW5pbmcgb2YgdGhlICc8ZW0+QmFzZSBQcm9wZXJ0eTwvZW0+JyByZWZlcmVuY2UgaXNuJ3QgY2xlYXIsDQorCSAqIHRoZXJlIHJlYWxseSBzaG91bGQgYmUgbW9yZSBvZiBhIGRlc2NyaXB0aW9uIGhlcmUuLi4NCisJICogPC9wPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHJldHVybiB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+QmFzZSBQcm9wZXJ0eTwvZW0+JyByZWZlcmVuY2UuDQorCSAqIEBzZWUgI3NldEJhc2VfUHJvcGVydHkoUHJvcGVydHkpDQorCSAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmJsb2Nrcy5CbG9ja3NQYWNrYWdlI2dldENvbm5lY3RvclByb3BlcnR5X0Jhc2VfUHJvcGVydHkoKQ0KKwkgKiBAbW9kZWwgb3JkZXJlZD0iZmFsc2UiDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCVByb3BlcnR5IGdldEJhc2VfUHJvcGVydHkoKTsNCisNCisJLyoqDQorCSAqIFNldHMgdGhlIHZhbHVlIG9mIHRoZSAne0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5ibG9ja3MuQ29ubmVjdG9yUHJvcGVydHkjZ2V0QmFzZV9Qcm9wZXJ0eSA8ZW0+QmFzZSBQcm9wZXJ0eTwvZW0+fScgcmVmZXJlbmNlLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHBhcmFtIHZhbHVlIHRoZSBuZXcgdmFsdWUgb2YgdGhlICc8ZW0+QmFzZSBQcm9wZXJ0eTwvZW0+JyByZWZlcmVuY2UuDQorCSAqIEBzZWUgI2dldEJhc2VfUHJvcGVydHkoKQ0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwl2b2lkIHNldEJhc2VfUHJvcGVydHkoUHJvcGVydHkgdmFsdWUpOw0KKw0KKwkvKioNCisJICogUmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+PGI+Q29ubmVjdG9yPC9iPjwvZW0+JyByZWZlcmVuY2UuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGJlZ2luLW1vZGVsLWRvYyAtLT4NCisJICogQSBjb25uZWN0b3Igb2YgdGhlIGJsb2NrIG93bmluZyB0aGUgcHJvcGVydHkgb24gd2hpY2ggdGhlIHN0ZXJlb3R5cGUgaXMgYXBwbGllZC4NCisJICogPCEtLSBlbmQtbW9kZWwtZG9jIC0tPg0KKwkgKiBAcmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT5Db25uZWN0b3I8L2VtPicgcmVmZXJlbmNlLg0KKwkgKiBAc2VlICNzZXRDb25uZWN0b3IoQ29ubmVjdG9yKQ0KKwkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5ibG9ja3MuQmxvY2tzUGFja2FnZSNnZXRDb25uZWN0b3JQcm9wZXJ0eV9Db25uZWN0b3IoKQ0KKwkgKiBAbW9kZWwgcmVxdWlyZWQ9InRydWUiIG9yZGVyZWQ9ImZhbHNlIg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlDb25uZWN0b3IgZ2V0Q29ubmVjdG9yKCk7DQorDQorCS8qKg0KKwkgKiBTZXRzIHRoZSB2YWx1ZSBvZiB0aGUgJ3tAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYmxvY2tzLkNvbm5lY3RvclByb3BlcnR5I2dldENvbm5lY3RvciA8ZW0+Q29ubmVjdG9yPC9lbT59JyByZWZlcmVuY2UuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAcGFyYW0gdmFsdWUgdGhlIG5ldyB2YWx1ZSBvZiB0aGUgJzxlbT5Db25uZWN0b3I8L2VtPicgcmVmZXJlbmNlLg0KKwkgKiBAc2VlICNnZXRDb25uZWN0b3IoKQ0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwl2b2lkIHNldENvbm5lY3RvcihDb25uZWN0b3IgdmFsdWUpOw0KKw0KK30gLy8gQ29ubmVjdG9yUHJvcGVydHkNCmRpZmYgLS1naXQgYS9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9ibG9ja3MvRGlyZWN0ZWRSZWxhdGlvbnNoaXBQcm9wZXJ0eVBhdGguamF2YSBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L2Jsb2Nrcy9EaXJlY3RlZFJlbGF0aW9uc2hpcFByb3BlcnR5UGF0aC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNjYTliYjcKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9ibG9ja3MvRGlyZWN0ZWRSZWxhdGlvbnNoaXBQcm9wZXJ0eVBhdGguamF2YQpAQCAtMCwwICsxLDIwNCBAQAorLyoqDQorICogQ29weXJpZ2h0IChjKSAyMDE1IENFQSBMSVNULg0KKyAqIA0KKyAqICBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQorICogIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KKyAqICB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KKyAqICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqLw0KK3BhY2thZ2Ugb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmJsb2NrczsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi51dGlsLkVMaXN0Ow0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRUNsYXNzOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRU9iamVjdDsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UudW1sMi51bWwuQ2xhc3NpZmllcjsNCitpbXBvcnQgb3JnLmVjbGlwc2UudW1sMi51bWwuRGlyZWN0ZWRSZWxhdGlvbnNoaXA7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnVtbDIudW1sLlByb3BlcnR5Ow0KK2ltcG9ydCBvcmcuZWNsaXBzZS51bWwyLnVtbC5UeXBlOw0KKw0KKy8qKg0KKyAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorICogQSByZXByZXNlbnRhdGlvbiBvZiB0aGUgbW9kZWwgb2JqZWN0ICc8ZW0+PGI+RGlyZWN0ZWQgUmVsYXRpb25zaGlwIFByb3BlcnR5IFBhdGg8L2I+PC9lbT4nLg0KKyAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKyAqDQorICogPHA+DQorICogVGhlIGZvbGxvd2luZyBmZWF0dXJlcyBhcmUgc3VwcG9ydGVkOg0KKyAqIDx1bD4NCisgKiAgIDxsaT57QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmJsb2Nrcy5EaXJlY3RlZFJlbGF0aW9uc2hpcFByb3BlcnR5UGF0aCNnZXRCYXNlX0RpcmVjdGVkUmVsYXRpb25zaGlwIDxlbT5CYXNlIERpcmVjdGVkIFJlbGF0aW9uc2hpcDwvZW0+fTwvbGk+DQorICogICA8bGk+e0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5ibG9ja3MuRGlyZWN0ZWRSZWxhdGlvbnNoaXBQcm9wZXJ0eVBhdGgjZ2V0U291cmNlUHJvcGVydHlQYXRoIDxlbT5Tb3VyY2UgUHJvcGVydHkgUGF0aDwvZW0+fTwvbGk+DQorICogICA8bGk+e0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5ibG9ja3MuRGlyZWN0ZWRSZWxhdGlvbnNoaXBQcm9wZXJ0eVBhdGgjZ2V0VGFyZ2V0UHJvcGVydHlQYXRoIDxlbT5UYXJnZXQgUHJvcGVydHkgUGF0aDwvZW0+fTwvbGk+DQorICogICA8bGk+e0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5ibG9ja3MuRGlyZWN0ZWRSZWxhdGlvbnNoaXBQcm9wZXJ0eVBhdGgjZ2V0U291cmNlQ29udGV4dCA8ZW0+U291cmNlIENvbnRleHQ8L2VtPn08L2xpPg0KKyAqICAgPGxpPntAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYmxvY2tzLkRpcmVjdGVkUmVsYXRpb25zaGlwUHJvcGVydHlQYXRoI2dldFRhcmdldENvbnRleHQgPGVtPlRhcmdldCBDb250ZXh0PC9lbT59PC9saT4NCisgKiA8L3VsPg0KKyAqIDwvcD4NCisgKg0KKyAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmJsb2Nrcy5CbG9ja3NQYWNrYWdlI2dldERpcmVjdGVkUmVsYXRpb25zaGlwUHJvcGVydHlQYXRoKCkNCisgKiBAbW9kZWwgYWJzdHJhY3Q9InRydWUiDQorICogQGdlbmVyYXRlZA0KKyAqLw0KK3B1YmxpYyBpbnRlcmZhY2UgRGlyZWN0ZWRSZWxhdGlvbnNoaXBQcm9wZXJ0eVBhdGggZXh0ZW5kcyBFT2JqZWN0IHsNCisJLyoqDQorCSAqIFJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSAnPGVtPjxiPkJhc2UgRGlyZWN0ZWQgUmVsYXRpb25zaGlwPC9iPjwvZW0+JyByZWZlcmVuY2UuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDxwPg0KKwkgKiBJZiB0aGUgbWVhbmluZyBvZiB0aGUgJzxlbT5CYXNlIERpcmVjdGVkIFJlbGF0aW9uc2hpcDwvZW0+JyByZWZlcmVuY2UgaXNuJ3QgY2xlYXIsDQorCSAqIHRoZXJlIHJlYWxseSBzaG91bGQgYmUgbW9yZSBvZiBhIGRlc2NyaXB0aW9uIGhlcmUuLi4NCisJICogPC9wPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHJldHVybiB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+QmFzZSBEaXJlY3RlZCBSZWxhdGlvbnNoaXA8L2VtPicgcmVmZXJlbmNlLg0KKwkgKiBAc2VlICNzZXRCYXNlX0RpcmVjdGVkUmVsYXRpb25zaGlwKERpcmVjdGVkUmVsYXRpb25zaGlwKQ0KKwkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5ibG9ja3MuQmxvY2tzUGFja2FnZSNnZXREaXJlY3RlZFJlbGF0aW9uc2hpcFByb3BlcnR5UGF0aF9CYXNlX0RpcmVjdGVkUmVsYXRpb25zaGlwKCkNCisJICogQG1vZGVsIG9yZGVyZWQ9ImZhbHNlIg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlEaXJlY3RlZFJlbGF0aW9uc2hpcCBnZXRCYXNlX0RpcmVjdGVkUmVsYXRpb25zaGlwKCk7DQorDQorCS8qKg0KKwkgKiBTZXRzIHRoZSB2YWx1ZSBvZiB0aGUgJ3tAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYmxvY2tzLkRpcmVjdGVkUmVsYXRpb25zaGlwUHJvcGVydHlQYXRoI2dldEJhc2VfRGlyZWN0ZWRSZWxhdGlvbnNoaXAgPGVtPkJhc2UgRGlyZWN0ZWQgUmVsYXRpb25zaGlwPC9lbT59JyByZWZlcmVuY2UuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAcGFyYW0gdmFsdWUgdGhlIG5ldyB2YWx1ZSBvZiB0aGUgJzxlbT5CYXNlIERpcmVjdGVkIFJlbGF0aW9uc2hpcDwvZW0+JyByZWZlcmVuY2UuDQorCSAqIEBzZWUgI2dldEJhc2VfRGlyZWN0ZWRSZWxhdGlvbnNoaXAoKQ0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwl2b2lkIHNldEJhc2VfRGlyZWN0ZWRSZWxhdGlvbnNoaXAoRGlyZWN0ZWRSZWxhdGlvbnNoaXAgdmFsdWUpOw0KKw0KKwkvKioNCisJICogUmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+PGI+U291cmNlIFByb3BlcnR5IFBhdGg8L2I+PC9lbT4nIHJlZmVyZW5jZSBsaXN0Lg0KKwkgKiBUaGUgbGlzdCBjb250ZW50cyBhcmUgb2YgdHlwZSB7QGxpbmsgb3JnLmVjbGlwc2UudW1sMi51bWwuUHJvcGVydHl9Lg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8cD4NCisJICogSWYgdGhlIG1lYW5pbmcgb2YgdGhlICc8ZW0+U291cmNlIFByb3BlcnR5IFBhdGg8L2VtPicgcmVmZXJlbmNlIGxpc3QgaXNuJ3QgY2xlYXIsDQorCSAqIHRoZXJlIHJlYWxseSBzaG91bGQgYmUgbW9yZSBvZiBhIGRlc2NyaXB0aW9uIGhlcmUuLi4NCisJICogPC9wPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHJldHVybiB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+U291cmNlIFByb3BlcnR5IFBhdGg8L2VtPicgcmVmZXJlbmNlIGxpc3QuDQorCSAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmJsb2Nrcy5CbG9ja3NQYWNrYWdlI2dldERpcmVjdGVkUmVsYXRpb25zaGlwUHJvcGVydHlQYXRoX1NvdXJjZVByb3BlcnR5UGF0aCgpDQorCSAqIEBtb2RlbA0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlFTGlzdDxQcm9wZXJ0eT4gZ2V0U291cmNlUHJvcGVydHlQYXRoKCk7DQorDQorCS8qKg0KKwkgKiBSZXRyaWV2ZXMgdGhlIGZpcnN0IHtAbGluayBvcmcuZWNsaXBzZS51bWwyLnVtbC5Qcm9wZXJ0eX0gd2l0aCB0aGUgc3BlY2lmaWVkICc8ZW0+PGI+TmFtZTwvYj48L2VtPicsIGFuZCAnPGVtPjxiPlR5cGU8L2I+PC9lbT4nIGZyb20gdGhlICc8ZW0+PGI+U291cmNlIFByb3BlcnR5IFBhdGg8L2I+PC9lbT4nIHJlZmVyZW5jZSBsaXN0Lg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHBhcmFtIG5hbWUgVGhlICc8ZW0+PGI+TmFtZTwvYj48L2VtPicgb2YgdGhlIHtAbGluayBvcmcuZWNsaXBzZS51bWwyLnVtbC5Qcm9wZXJ0eX0gdG8gcmV0cmlldmUsIG9yIDxjb2RlPm51bGw8L2NvZGU+Lg0KKwkgKiBAcGFyYW0gdHlwZSBUaGUgJzxlbT48Yj5UeXBlPC9iPjwvZW0+JyBvZiB0aGUge0BsaW5rIG9yZy5lY2xpcHNlLnVtbDIudW1sLlByb3BlcnR5fSB0byByZXRyaWV2ZSwgb3IgPGNvZGU+bnVsbDwvY29kZT4uDQorCSAqIEByZXR1cm4gVGhlIGZpcnN0IHtAbGluayBvcmcuZWNsaXBzZS51bWwyLnVtbC5Qcm9wZXJ0eX0gd2l0aCB0aGUgc3BlY2lmaWVkICc8ZW0+PGI+TmFtZTwvYj48L2VtPicsIGFuZCAnPGVtPjxiPlR5cGU8L2I+PC9lbT4nLCBvciA8Y29kZT5udWxsPC9jb2RlPi4NCisJICogQHNlZSAjZ2V0U291cmNlUHJvcGVydHlQYXRoKCkNCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJUHJvcGVydHkgZ2V0U291cmNlUHJvcGVydHlQYXRoKFN0cmluZyBuYW1lLCBUeXBlIHR5cGUpOw0KKw0KKwkvKioNCisJICogUmV0cmlldmVzIHRoZSBmaXJzdCB7QGxpbmsgb3JnLmVjbGlwc2UudW1sMi51bWwuUHJvcGVydHl9IHdpdGggdGhlIHNwZWNpZmllZCAnPGVtPjxiPk5hbWU8L2I+PC9lbT4nLCBhbmQgJzxlbT48Yj5UeXBlPC9iPjwvZW0+JyBmcm9tIHRoZSAnPGVtPjxiPlNvdXJjZSBQcm9wZXJ0eSBQYXRoPC9iPjwvZW0+JyByZWZlcmVuY2UgbGlzdC4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBwYXJhbSBuYW1lIFRoZSAnPGVtPjxiPk5hbWU8L2I+PC9lbT4nIG9mIHRoZSB7QGxpbmsgb3JnLmVjbGlwc2UudW1sMi51bWwuUHJvcGVydHl9IHRvIHJldHJpZXZlLCBvciA8Y29kZT5udWxsPC9jb2RlPi4NCisJICogQHBhcmFtIHR5cGUgVGhlICc8ZW0+PGI+VHlwZTwvYj48L2VtPicgb2YgdGhlIHtAbGluayBvcmcuZWNsaXBzZS51bWwyLnVtbC5Qcm9wZXJ0eX0gdG8gcmV0cmlldmUsIG9yIDxjb2RlPm51bGw8L2NvZGU+Lg0KKwkgKiBAcGFyYW0gaWdub3JlQ2FzZSBXaGV0aGVyIHRvIGlnbm9yZSBjYXNlIGluIHtAbGluayBqYXZhLmxhbmcuU3RyaW5nfSBjb21wYXJpc29ucy4NCisJICogQHBhcmFtIGVDbGFzcyBUaGUgRWNvcmUgY2xhc3Mgb2YgdGhlIHtAbGluayBvcmcuZWNsaXBzZS51bWwyLnVtbC5Qcm9wZXJ0eX0gdG8gcmV0cmlldmUsIG9yIDxjb2RlPm51bGw8L2NvZGU+Lg0KKwkgKiBAcmV0dXJuIFRoZSBmaXJzdCB7QGxpbmsgb3JnLmVjbGlwc2UudW1sMi51bWwuUHJvcGVydHl9IHdpdGggdGhlIHNwZWNpZmllZCAnPGVtPjxiPk5hbWU8L2I+PC9lbT4nLCBhbmQgJzxlbT48Yj5UeXBlPC9iPjwvZW0+Jywgb3IgPGNvZGU+bnVsbDwvY29kZT4uDQorCSAqIEBzZWUgI2dldFNvdXJjZVByb3BlcnR5UGF0aCgpDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCVByb3BlcnR5IGdldFNvdXJjZVByb3BlcnR5UGF0aChTdHJpbmcgbmFtZSwgVHlwZSB0eXBlLCBib29sZWFuIGlnbm9yZUNhc2UsIEVDbGFzcyBlQ2xhc3MpOw0KKw0KKwkvKioNCisJICogUmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+PGI+VGFyZ2V0IFByb3BlcnR5IFBhdGg8L2I+PC9lbT4nIHJlZmVyZW5jZSBsaXN0Lg0KKwkgKiBUaGUgbGlzdCBjb250ZW50cyBhcmUgb2YgdHlwZSB7QGxpbmsgb3JnLmVjbGlwc2UudW1sMi51bWwuUHJvcGVydHl9Lg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8cD4NCisJICogSWYgdGhlIG1lYW5pbmcgb2YgdGhlICc8ZW0+VGFyZ2V0IFByb3BlcnR5IFBhdGg8L2VtPicgcmVmZXJlbmNlIGxpc3QgaXNuJ3QgY2xlYXIsDQorCSAqIHRoZXJlIHJlYWxseSBzaG91bGQgYmUgbW9yZSBvZiBhIGRlc2NyaXB0aW9uIGhlcmUuLi4NCisJICogPC9wPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHJldHVybiB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+VGFyZ2V0IFByb3BlcnR5IFBhdGg8L2VtPicgcmVmZXJlbmNlIGxpc3QuDQorCSAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmJsb2Nrcy5CbG9ja3NQYWNrYWdlI2dldERpcmVjdGVkUmVsYXRpb25zaGlwUHJvcGVydHlQYXRoX1RhcmdldFByb3BlcnR5UGF0aCgpDQorCSAqIEBtb2RlbA0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlFTGlzdDxQcm9wZXJ0eT4gZ2V0VGFyZ2V0UHJvcGVydHlQYXRoKCk7DQorDQorCS8qKg0KKwkgKiBSZXRyaWV2ZXMgdGhlIGZpcnN0IHtAbGluayBvcmcuZWNsaXBzZS51bWwyLnVtbC5Qcm9wZXJ0eX0gd2l0aCB0aGUgc3BlY2lmaWVkICc8ZW0+PGI+TmFtZTwvYj48L2VtPicsIGFuZCAnPGVtPjxiPlR5cGU8L2I+PC9lbT4nIGZyb20gdGhlICc8ZW0+PGI+VGFyZ2V0IFByb3BlcnR5IFBhdGg8L2I+PC9lbT4nIHJlZmVyZW5jZSBsaXN0Lg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHBhcmFtIG5hbWUgVGhlICc8ZW0+PGI+TmFtZTwvYj48L2VtPicgb2YgdGhlIHtAbGluayBvcmcuZWNsaXBzZS51bWwyLnVtbC5Qcm9wZXJ0eX0gdG8gcmV0cmlldmUsIG9yIDxjb2RlPm51bGw8L2NvZGU+Lg0KKwkgKiBAcGFyYW0gdHlwZSBUaGUgJzxlbT48Yj5UeXBlPC9iPjwvZW0+JyBvZiB0aGUge0BsaW5rIG9yZy5lY2xpcHNlLnVtbDIudW1sLlByb3BlcnR5fSB0byByZXRyaWV2ZSwgb3IgPGNvZGU+bnVsbDwvY29kZT4uDQorCSAqIEByZXR1cm4gVGhlIGZpcnN0IHtAbGluayBvcmcuZWNsaXBzZS51bWwyLnVtbC5Qcm9wZXJ0eX0gd2l0aCB0aGUgc3BlY2lmaWVkICc8ZW0+PGI+TmFtZTwvYj48L2VtPicsIGFuZCAnPGVtPjxiPlR5cGU8L2I+PC9lbT4nLCBvciA8Y29kZT5udWxsPC9jb2RlPi4NCisJICogQHNlZSAjZ2V0VGFyZ2V0UHJvcGVydHlQYXRoKCkNCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJUHJvcGVydHkgZ2V0VGFyZ2V0UHJvcGVydHlQYXRoKFN0cmluZyBuYW1lLCBUeXBlIHR5cGUpOw0KKw0KKwkvKioNCisJICogUmV0cmlldmVzIHRoZSBmaXJzdCB7QGxpbmsgb3JnLmVjbGlwc2UudW1sMi51bWwuUHJvcGVydHl9IHdpdGggdGhlIHNwZWNpZmllZCAnPGVtPjxiPk5hbWU8L2I+PC9lbT4nLCBhbmQgJzxlbT48Yj5UeXBlPC9iPjwvZW0+JyBmcm9tIHRoZSAnPGVtPjxiPlRhcmdldCBQcm9wZXJ0eSBQYXRoPC9iPjwvZW0+JyByZWZlcmVuY2UgbGlzdC4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBwYXJhbSBuYW1lIFRoZSAnPGVtPjxiPk5hbWU8L2I+PC9lbT4nIG9mIHRoZSB7QGxpbmsgb3JnLmVjbGlwc2UudW1sMi51bWwuUHJvcGVydHl9IHRvIHJldHJpZXZlLCBvciA8Y29kZT5udWxsPC9jb2RlPi4NCisJICogQHBhcmFtIHR5cGUgVGhlICc8ZW0+PGI+VHlwZTwvYj48L2VtPicgb2YgdGhlIHtAbGluayBvcmcuZWNsaXBzZS51bWwyLnVtbC5Qcm9wZXJ0eX0gdG8gcmV0cmlldmUsIG9yIDxjb2RlPm51bGw8L2NvZGU+Lg0KKwkgKiBAcGFyYW0gaWdub3JlQ2FzZSBXaGV0aGVyIHRvIGlnbm9yZSBjYXNlIGluIHtAbGluayBqYXZhLmxhbmcuU3RyaW5nfSBjb21wYXJpc29ucy4NCisJICogQHBhcmFtIGVDbGFzcyBUaGUgRWNvcmUgY2xhc3Mgb2YgdGhlIHtAbGluayBvcmcuZWNsaXBzZS51bWwyLnVtbC5Qcm9wZXJ0eX0gdG8gcmV0cmlldmUsIG9yIDxjb2RlPm51bGw8L2NvZGU+Lg0KKwkgKiBAcmV0dXJuIFRoZSBmaXJzdCB7QGxpbmsgb3JnLmVjbGlwc2UudW1sMi51bWwuUHJvcGVydHl9IHdpdGggdGhlIHNwZWNpZmllZCAnPGVtPjxiPk5hbWU8L2I+PC9lbT4nLCBhbmQgJzxlbT48Yj5UeXBlPC9iPjwvZW0+Jywgb3IgPGNvZGU+bnVsbDwvY29kZT4uDQorCSAqIEBzZWUgI2dldFRhcmdldFByb3BlcnR5UGF0aCgpDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCVByb3BlcnR5IGdldFRhcmdldFByb3BlcnR5UGF0aChTdHJpbmcgbmFtZSwgVHlwZSB0eXBlLCBib29sZWFuIGlnbm9yZUNhc2UsIEVDbGFzcyBlQ2xhc3MpOw0KKw0KKwkvKioNCisJICogUmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+PGI+U291cmNlIENvbnRleHQ8L2I+PC9lbT4nIHJlZmVyZW5jZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPHA+DQorCSAqIElmIHRoZSBtZWFuaW5nIG9mIHRoZSAnPGVtPlNvdXJjZSBDb250ZXh0PC9lbT4nIHJlZmVyZW5jZSBpc24ndCBjbGVhciwNCisJICogdGhlcmUgcmVhbGx5IHNob3VsZCBiZSBtb3JlIG9mIGEgZGVzY3JpcHRpb24gaGVyZS4uLg0KKwkgKiA8L3A+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAcmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT5Tb3VyY2UgQ29udGV4dDwvZW0+JyByZWZlcmVuY2UuDQorCSAqIEBzZWUgI3NldFNvdXJjZUNvbnRleHQoQ2xhc3NpZmllcikNCisJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYmxvY2tzLkJsb2Nrc1BhY2thZ2UjZ2V0RGlyZWN0ZWRSZWxhdGlvbnNoaXBQcm9wZXJ0eVBhdGhfU291cmNlQ29udGV4dCgpDQorCSAqIEBtb2RlbCBvcmRlcmVkPSJmYWxzZSINCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQ2xhc3NpZmllciBnZXRTb3VyY2VDb250ZXh0KCk7DQorDQorCS8qKg0KKwkgKiBTZXRzIHRoZSB2YWx1ZSBvZiB0aGUgJ3tAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYmxvY2tzLkRpcmVjdGVkUmVsYXRpb25zaGlwUHJvcGVydHlQYXRoI2dldFNvdXJjZUNvbnRleHQgPGVtPlNvdXJjZSBDb250ZXh0PC9lbT59JyByZWZlcmVuY2UuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAcGFyYW0gdmFsdWUgdGhlIG5ldyB2YWx1ZSBvZiB0aGUgJzxlbT5Tb3VyY2UgQ29udGV4dDwvZW0+JyByZWZlcmVuY2UuDQorCSAqIEBzZWUgI2dldFNvdXJjZUNvbnRleHQoKQ0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwl2b2lkIHNldFNvdXJjZUNvbnRleHQoQ2xhc3NpZmllciB2YWx1ZSk7DQorDQorCS8qKg0KKwkgKiBSZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT48Yj5UYXJnZXQgQ29udGV4dDwvYj48L2VtPicgcmVmZXJlbmNlLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8cD4NCisJICogSWYgdGhlIG1lYW5pbmcgb2YgdGhlICc8ZW0+VGFyZ2V0IENvbnRleHQ8L2VtPicgcmVmZXJlbmNlIGlzbid0IGNsZWFyLA0KKwkgKiB0aGVyZSByZWFsbHkgc2hvdWxkIGJlIG1vcmUgb2YgYSBkZXNjcmlwdGlvbiBoZXJlLi4uDQorCSAqIDwvcD4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEByZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSAnPGVtPlRhcmdldCBDb250ZXh0PC9lbT4nIHJlZmVyZW5jZS4NCisJICogQHNlZSAjc2V0VGFyZ2V0Q29udGV4dChDbGFzc2lmaWVyKQ0KKwkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5ibG9ja3MuQmxvY2tzUGFja2FnZSNnZXREaXJlY3RlZFJlbGF0aW9uc2hpcFByb3BlcnR5UGF0aF9UYXJnZXRDb250ZXh0KCkNCisJICogQG1vZGVsIG9yZGVyZWQ9ImZhbHNlIg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlDbGFzc2lmaWVyIGdldFRhcmdldENvbnRleHQoKTsNCisNCisJLyoqDQorCSAqIFNldHMgdGhlIHZhbHVlIG9mIHRoZSAne0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5ibG9ja3MuRGlyZWN0ZWRSZWxhdGlvbnNoaXBQcm9wZXJ0eVBhdGgjZ2V0VGFyZ2V0Q29udGV4dCA8ZW0+VGFyZ2V0IENvbnRleHQ8L2VtPn0nIHJlZmVyZW5jZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBwYXJhbSB2YWx1ZSB0aGUgbmV3IHZhbHVlIG9mIHRoZSAnPGVtPlRhcmdldCBDb250ZXh0PC9lbT4nIHJlZmVyZW5jZS4NCisJICogQHNlZSAjZ2V0VGFyZ2V0Q29udGV4dCgpDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXZvaWQgc2V0VGFyZ2V0Q29udGV4dChDbGFzc2lmaWVyIHZhbHVlKTsNCisNCit9IC8vIERpcmVjdGVkUmVsYXRpb25zaGlwUHJvcGVydHlQYXRoDQpkaWZmIC0tZ2l0IGEvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvYmxvY2tzL0Rpc3RyaWJ1dGVkUHJvcGVydHkuamF2YSBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L2Jsb2Nrcy9EaXN0cmlidXRlZFByb3BlcnR5LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTE2ZTZlMQotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L2Jsb2Nrcy9EaXN0cmlidXRlZFByb3BlcnR5LmphdmEKQEAgLTAsMCArMSw2MiBAQAorLyoqDQorICogQ29weXJpZ2h0IChjKSAyMDE1IENFQSBMSVNULg0KKyAqIA0KKyAqICBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQorICogIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KKyAqICB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KKyAqICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqLw0KK3BhY2thZ2Ugb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmJsb2NrczsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVPYmplY3Q7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLnVtbDIudW1sLlByb3BlcnR5Ow0KKw0KKy8qKg0KKyAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorICogQSByZXByZXNlbnRhdGlvbiBvZiB0aGUgbW9kZWwgb2JqZWN0ICc8ZW0+PGI+RGlzdHJpYnV0ZWQgUHJvcGVydHk8L2I+PC9lbT4nLg0KKyAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKyAqDQorICogPCEtLSBiZWdpbi1tb2RlbC1kb2MgLS0+DQorICogRGlzdHJpYnV0ZWRQcm9wZXJ0eSBpcyBhIHN0ZXJlb3R5cGUgb2YgUHJvcGVydHkgdXNlZCB0byBhcHBseSBhIHByb2JhYmlsaXR5IGRpc3RyaWJ1dGlvbiB0byB0aGUgdmFsdWVzIG9mIHRoZSBwcm9wZXJ0eS4gU3BlY2lmaWMgZGlzdHJpYnV0aW9ucyBzaG91bGQgYmUgZGVmaW5lZCBhcyBzdWJjbGFzc2VzIG9mIHRoZSBEaXN0cmlidXRlZFByb3BlcnR5IHN0ZXJlb3R5cGUgd2l0aCB0aGUgb3BlcmFuZHMgb2YgdGhlIGRpc3RyaWJ1dGlvbnMgcmVwcmVzZW50ZWQgYnkgcHJvcGVydGllcyBvZiB0aG9zZSBzdGVyZW90eXBlIHN1YmNsYXNzZXMuDQorICogPCEtLSBlbmQtbW9kZWwtZG9jIC0tPg0KKyAqDQorICogPHA+DQorICogVGhlIGZvbGxvd2luZyBmZWF0dXJlcyBhcmUgc3VwcG9ydGVkOg0KKyAqIDx1bD4NCisgKiAgIDxsaT57QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmJsb2Nrcy5EaXN0cmlidXRlZFByb3BlcnR5I2dldEJhc2VfUHJvcGVydHkgPGVtPkJhc2UgUHJvcGVydHk8L2VtPn08L2xpPg0KKyAqIDwvdWw+DQorICogPC9wPg0KKyAqDQorICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYmxvY2tzLkJsb2Nrc1BhY2thZ2UjZ2V0RGlzdHJpYnV0ZWRQcm9wZXJ0eSgpDQorICogQG1vZGVsDQorICogQGdlbmVyYXRlZA0KKyAqLw0KK3B1YmxpYyBpbnRlcmZhY2UgRGlzdHJpYnV0ZWRQcm9wZXJ0eSBleHRlbmRzIEVPYmplY3Qgew0KKwkvKioNCisJICogUmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+PGI+QmFzZSBQcm9wZXJ0eTwvYj48L2VtPicgcmVmZXJlbmNlLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8cD4NCisJICogSWYgdGhlIG1lYW5pbmcgb2YgdGhlICc8ZW0+QmFzZSBQcm9wZXJ0eTwvZW0+JyByZWZlcmVuY2UgaXNuJ3QgY2xlYXIsDQorCSAqIHRoZXJlIHJlYWxseSBzaG91bGQgYmUgbW9yZSBvZiBhIGRlc2NyaXB0aW9uIGhlcmUuLi4NCisJICogPC9wPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHJldHVybiB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+QmFzZSBQcm9wZXJ0eTwvZW0+JyByZWZlcmVuY2UuDQorCSAqIEBzZWUgI3NldEJhc2VfUHJvcGVydHkoUHJvcGVydHkpDQorCSAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmJsb2Nrcy5CbG9ja3NQYWNrYWdlI2dldERpc3RyaWJ1dGVkUHJvcGVydHlfQmFzZV9Qcm9wZXJ0eSgpDQorCSAqIEBtb2RlbCBvcmRlcmVkPSJmYWxzZSINCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJUHJvcGVydHkgZ2V0QmFzZV9Qcm9wZXJ0eSgpOw0KKw0KKwkvKioNCisJICogU2V0cyB0aGUgdmFsdWUgb2YgdGhlICd7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmJsb2Nrcy5EaXN0cmlidXRlZFByb3BlcnR5I2dldEJhc2VfUHJvcGVydHkgPGVtPkJhc2UgUHJvcGVydHk8L2VtPn0nIHJlZmVyZW5jZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBwYXJhbSB2YWx1ZSB0aGUgbmV3IHZhbHVlIG9mIHRoZSAnPGVtPkJhc2UgUHJvcGVydHk8L2VtPicgcmVmZXJlbmNlLg0KKwkgKiBAc2VlICNnZXRCYXNlX1Byb3BlcnR5KCkNCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJdm9pZCBzZXRCYXNlX1Byb3BlcnR5KFByb3BlcnR5IHZhbHVlKTsNCisNCit9IC8vIERpc3RyaWJ1dGVkUHJvcGVydHkNCmRpZmYgLS1naXQgYS9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9ibG9ja3MvRWxlbWVudFByb3BlcnR5UGF0aC5qYXZhIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvYmxvY2tzL0VsZW1lbnRQcm9wZXJ0eVBhdGguamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMzcyYTkzCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvYmxvY2tzL0VsZW1lbnRQcm9wZXJ0eVBhdGguamF2YQpAQCAtMCwwICsxLDEwNSBAQAorLyoqDQorICogQ29weXJpZ2h0IChjKSAyMDE1IENFQSBMSVNULg0KKyAqIA0KKyAqICBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQorICogIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KKyAqICB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KKyAqICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqLw0KK3BhY2thZ2Ugb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmJsb2NrczsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi51dGlsLkVMaXN0Ow0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRUNsYXNzOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRU9iamVjdDsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UudW1sMi51bWwuRWxlbWVudDsNCitpbXBvcnQgb3JnLmVjbGlwc2UudW1sMi51bWwuUHJvcGVydHk7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnVtbDIudW1sLlR5cGU7DQorDQorLyoqDQorICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisgKiBBIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBtb2RlbCBvYmplY3QgJzxlbT48Yj5FbGVtZW50IFByb3BlcnR5IFBhdGg8L2I+PC9lbT4nLg0KKyAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKyAqDQorICogPHA+DQorICogVGhlIGZvbGxvd2luZyBmZWF0dXJlcyBhcmUgc3VwcG9ydGVkOg0KKyAqIDx1bD4NCisgKiAgIDxsaT57QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmJsb2Nrcy5FbGVtZW50UHJvcGVydHlQYXRoI2dldEJhc2VfRWxlbWVudCA8ZW0+QmFzZSBFbGVtZW50PC9lbT59PC9saT4NCisgKiAgIDxsaT57QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmJsb2Nrcy5FbGVtZW50UHJvcGVydHlQYXRoI2dldFByb3BlcnR5UGF0aCA8ZW0+UHJvcGVydHkgUGF0aDwvZW0+fTwvbGk+DQorICogPC91bD4NCisgKiA8L3A+DQorICoNCisgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5ibG9ja3MuQmxvY2tzUGFja2FnZSNnZXRFbGVtZW50UHJvcGVydHlQYXRoKCkNCisgKiBAbW9kZWwgYWJzdHJhY3Q9InRydWUiDQorICogQGdlbmVyYXRlZA0KKyAqLw0KK3B1YmxpYyBpbnRlcmZhY2UgRWxlbWVudFByb3BlcnR5UGF0aCBleHRlbmRzIEVPYmplY3Qgew0KKwkvKioNCisJICogUmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+PGI+QmFzZSBFbGVtZW50PC9iPjwvZW0+JyByZWZlcmVuY2UuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDxwPg0KKwkgKiBJZiB0aGUgbWVhbmluZyBvZiB0aGUgJzxlbT5CYXNlIEVsZW1lbnQ8L2VtPicgcmVmZXJlbmNlIGlzbid0IGNsZWFyLA0KKwkgKiB0aGVyZSByZWFsbHkgc2hvdWxkIGJlIG1vcmUgb2YgYSBkZXNjcmlwdGlvbiBoZXJlLi4uDQorCSAqIDwvcD4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEByZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSAnPGVtPkJhc2UgRWxlbWVudDwvZW0+JyByZWZlcmVuY2UuDQorCSAqIEBzZWUgI3NldEJhc2VfRWxlbWVudChFbGVtZW50KQ0KKwkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5ibG9ja3MuQmxvY2tzUGFja2FnZSNnZXRFbGVtZW50UHJvcGVydHlQYXRoX0Jhc2VfRWxlbWVudCgpDQorCSAqIEBtb2RlbCBvcmRlcmVkPSJmYWxzZSINCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJRWxlbWVudCBnZXRCYXNlX0VsZW1lbnQoKTsNCisNCisJLyoqDQorCSAqIFNldHMgdGhlIHZhbHVlIG9mIHRoZSAne0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5ibG9ja3MuRWxlbWVudFByb3BlcnR5UGF0aCNnZXRCYXNlX0VsZW1lbnQgPGVtPkJhc2UgRWxlbWVudDwvZW0+fScgcmVmZXJlbmNlLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHBhcmFtIHZhbHVlIHRoZSBuZXcgdmFsdWUgb2YgdGhlICc8ZW0+QmFzZSBFbGVtZW50PC9lbT4nIHJlZmVyZW5jZS4NCisJICogQHNlZSAjZ2V0QmFzZV9FbGVtZW50KCkNCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJdm9pZCBzZXRCYXNlX0VsZW1lbnQoRWxlbWVudCB2YWx1ZSk7DQorDQorCS8qKg0KKwkgKiBSZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT48Yj5Qcm9wZXJ0eSBQYXRoPC9iPjwvZW0+JyByZWZlcmVuY2UgbGlzdC4NCisJICogVGhlIGxpc3QgY29udGVudHMgYXJlIG9mIHR5cGUge0BsaW5rIG9yZy5lY2xpcHNlLnVtbDIudW1sLlByb3BlcnR5fS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gYmVnaW4tbW9kZWwtZG9jIC0tPg0KKwkgKiBUaGUgcHJvcGVydHlQYXRoIGxpc3Qgb2YgdGhlIE5lc3RlZENvbm5lY3RvckVuZCBzdGVyZW90eXBlIG11c3QgaWRlbnRpZnkgYSBwYXRoIG9mIGNvbnRhaW5pbmcgcHJvcGVydGllcyB0aGF0IGlkZW50aWZ5IHRoZSBjb25uZWN0ZWQgcHJvcGVydHkgaW4gdGhlIGNvbnRleHQgb2YgdGhlIGJsb2NrIHRoYXQgb3ducyB0aGUgY29ubmVjdG9yLiBUaGUgb3JkZXJpbmcgb2YgcHJvcGVydGllcyBpcyBmcm9tIGEgcHJvcGVydHkgb2YgdGhlIGJsb2NrIHRoYXQgb3ducyB0aGUgY29ubmVjdG9yLCB0aHJvdWdoIGEgcHJvcGVydHkgb2YgZWFjaCBpbnRlcm1lZGlhdGUgYmxvY2sgdGhhdCB0eXBlcyB0aGUgcHJlY2VkaW5nIHByb3BlcnR5LCB1bnRpbCBhIHByb3BlcnR5IGlzIHJlYWNoZWQgdGhhdCBjb250YWlucyBhIGNvbm5lY3RvciBlbmQgcHJvcGVydHkgd2l0aGluIGl0cyB0eXBlLiBUaGUgY29ubmVjdG9yIGVuZCBwcm9wZXJ0eSBpcyBub3QgaW5jbHVkZWQgaW4gdGhlIHByb3BlcnR5UGF0aCBsaXN0LCBidXQgaW5zdGVhZCBpcyBoZWxkIGJ5IHRoZSByb2xlIHByb3BlcnR5IG9mIHRoZSBVTUwgQ29ubmVjdG9yRW5kIG1ldGFjbGFzcy4NCisJICogPCEtLSBlbmQtbW9kZWwtZG9jIC0tPg0KKwkgKiBAcmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT5Qcm9wZXJ0eSBQYXRoPC9lbT4nIHJlZmVyZW5jZSBsaXN0Lg0KKwkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5ibG9ja3MuQmxvY2tzUGFja2FnZSNnZXRFbGVtZW50UHJvcGVydHlQYXRoX1Byb3BlcnR5UGF0aCgpDQorCSAqIEBtb2RlbCByZXF1aXJlZD0idHJ1ZSINCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJRUxpc3Q8UHJvcGVydHk+IGdldFByb3BlcnR5UGF0aCgpOw0KKw0KKwkvKioNCisJICogUmV0cmlldmVzIHRoZSBmaXJzdCB7QGxpbmsgb3JnLmVjbGlwc2UudW1sMi51bWwuUHJvcGVydHl9IHdpdGggdGhlIHNwZWNpZmllZCAnPGVtPjxiPk5hbWU8L2I+PC9lbT4nLCBhbmQgJzxlbT48Yj5UeXBlPC9iPjwvZW0+JyBmcm9tIHRoZSAnPGVtPjxiPlByb3BlcnR5IFBhdGg8L2I+PC9lbT4nIHJlZmVyZW5jZSBsaXN0Lg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHBhcmFtIG5hbWUgVGhlICc8ZW0+PGI+TmFtZTwvYj48L2VtPicgb2YgdGhlIHtAbGluayBvcmcuZWNsaXBzZS51bWwyLnVtbC5Qcm9wZXJ0eX0gdG8gcmV0cmlldmUsIG9yIDxjb2RlPm51bGw8L2NvZGU+Lg0KKwkgKiBAcGFyYW0gdHlwZSBUaGUgJzxlbT48Yj5UeXBlPC9iPjwvZW0+JyBvZiB0aGUge0BsaW5rIG9yZy5lY2xpcHNlLnVtbDIudW1sLlByb3BlcnR5fSB0byByZXRyaWV2ZSwgb3IgPGNvZGU+bnVsbDwvY29kZT4uDQorCSAqIEByZXR1cm4gVGhlIGZpcnN0IHtAbGluayBvcmcuZWNsaXBzZS51bWwyLnVtbC5Qcm9wZXJ0eX0gd2l0aCB0aGUgc3BlY2lmaWVkICc8ZW0+PGI+TmFtZTwvYj48L2VtPicsIGFuZCAnPGVtPjxiPlR5cGU8L2I+PC9lbT4nLCBvciA8Y29kZT5udWxsPC9jb2RlPi4NCisJICogQHNlZSAjZ2V0UHJvcGVydHlQYXRoKCkNCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJUHJvcGVydHkgZ2V0UHJvcGVydHlQYXRoKFN0cmluZyBuYW1lLCBUeXBlIHR5cGUpOw0KKw0KKwkvKioNCisJICogUmV0cmlldmVzIHRoZSBmaXJzdCB7QGxpbmsgb3JnLmVjbGlwc2UudW1sMi51bWwuUHJvcGVydHl9IHdpdGggdGhlIHNwZWNpZmllZCAnPGVtPjxiPk5hbWU8L2I+PC9lbT4nLCBhbmQgJzxlbT48Yj5UeXBlPC9iPjwvZW0+JyBmcm9tIHRoZSAnPGVtPjxiPlByb3BlcnR5IFBhdGg8L2I+PC9lbT4nIHJlZmVyZW5jZSBsaXN0Lg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHBhcmFtIG5hbWUgVGhlICc8ZW0+PGI+TmFtZTwvYj48L2VtPicgb2YgdGhlIHtAbGluayBvcmcuZWNsaXBzZS51bWwyLnVtbC5Qcm9wZXJ0eX0gdG8gcmV0cmlldmUsIG9yIDxjb2RlPm51bGw8L2NvZGU+Lg0KKwkgKiBAcGFyYW0gdHlwZSBUaGUgJzxlbT48Yj5UeXBlPC9iPjwvZW0+JyBvZiB0aGUge0BsaW5rIG9yZy5lY2xpcHNlLnVtbDIudW1sLlByb3BlcnR5fSB0byByZXRyaWV2ZSwgb3IgPGNvZGU+bnVsbDwvY29kZT4uDQorCSAqIEBwYXJhbSBpZ25vcmVDYXNlIFdoZXRoZXIgdG8gaWdub3JlIGNhc2UgaW4ge0BsaW5rIGphdmEubGFuZy5TdHJpbmd9IGNvbXBhcmlzb25zLg0KKwkgKiBAcGFyYW0gZUNsYXNzIFRoZSBFY29yZSBjbGFzcyBvZiB0aGUge0BsaW5rIG9yZy5lY2xpcHNlLnVtbDIudW1sLlByb3BlcnR5fSB0byByZXRyaWV2ZSwgb3IgPGNvZGU+bnVsbDwvY29kZT4uDQorCSAqIEByZXR1cm4gVGhlIGZpcnN0IHtAbGluayBvcmcuZWNsaXBzZS51bWwyLnVtbC5Qcm9wZXJ0eX0gd2l0aCB0aGUgc3BlY2lmaWVkICc8ZW0+PGI+TmFtZTwvYj48L2VtPicsIGFuZCAnPGVtPjxiPlR5cGU8L2I+PC9lbT4nLCBvciA8Y29kZT5udWxsPC9jb2RlPi4NCisJICogQHNlZSAjZ2V0UHJvcGVydHlQYXRoKCkNCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJUHJvcGVydHkgZ2V0UHJvcGVydHlQYXRoKFN0cmluZyBuYW1lLCBUeXBlIHR5cGUsIGJvb2xlYW4gaWdub3JlQ2FzZSwgRUNsYXNzIGVDbGFzcyk7DQorDQorfSAvLyBFbGVtZW50UHJvcGVydHlQYXRoDQpkaWZmIC0tZ2l0IGEvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvYmxvY2tzL0VuZFBhdGhNdWx0aXBsaWNpdHkuamF2YSBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L2Jsb2Nrcy9FbmRQYXRoTXVsdGlwbGljaXR5LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDljZDY0ZQotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L2Jsb2Nrcy9FbmRQYXRoTXVsdGlwbGljaXR5LmphdmEKQEAgLTAsMCArMSwxMTIgQEAKKy8qKg0KKyAqIENvcHlyaWdodCAoYykgMjAxNSBDRUEgTElTVC4NCisgKiANCisgKiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KKyAqICBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCisgKiAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCisgKiAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgKi8NCitwYWNrYWdlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5ibG9ja3M7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FT2JqZWN0Ow0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS51bWwyLnVtbC5Qcm9wZXJ0eTsNCisNCisvKioNCisgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKyAqIEEgcmVwcmVzZW50YXRpb24gb2YgdGhlIG1vZGVsIG9iamVjdCAnPGVtPjxiPkVuZCBQYXRoIE11bHRpcGxpY2l0eTwvYj48L2VtPicuDQorICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorICoNCisgKiA8cD4NCisgKiBUaGUgZm9sbG93aW5nIGZlYXR1cmVzIGFyZSBzdXBwb3J0ZWQ6DQorICogPHVsPg0KKyAqICAgPGxpPntAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYmxvY2tzLkVuZFBhdGhNdWx0aXBsaWNpdHkjZ2V0QmFzZV9Qcm9wZXJ0eSA8ZW0+QmFzZSBQcm9wZXJ0eTwvZW0+fTwvbGk+DQorICogICA8bGk+e0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5ibG9ja3MuRW5kUGF0aE11bHRpcGxpY2l0eSNnZXRMb3dlciA8ZW0+TG93ZXI8L2VtPn08L2xpPg0KKyAqICAgPGxpPntAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYmxvY2tzLkVuZFBhdGhNdWx0aXBsaWNpdHkjZ2V0VXBwZXIgPGVtPlVwcGVyPC9lbT59PC9saT4NCisgKiA8L3VsPg0KKyAqIDwvcD4NCisgKg0KKyAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmJsb2Nrcy5CbG9ja3NQYWNrYWdlI2dldEVuZFBhdGhNdWx0aXBsaWNpdHkoKQ0KKyAqIEBtb2RlbA0KKyAqIEBnZW5lcmF0ZWQNCisgKi8NCitwdWJsaWMgaW50ZXJmYWNlIEVuZFBhdGhNdWx0aXBsaWNpdHkgZXh0ZW5kcyBFT2JqZWN0IHsNCisJLyoqDQorCSAqIFJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSAnPGVtPjxiPkJhc2UgUHJvcGVydHk8L2I+PC9lbT4nIHJlZmVyZW5jZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPHA+DQorCSAqIElmIHRoZSBtZWFuaW5nIG9mIHRoZSAnPGVtPkJhc2UgUHJvcGVydHk8L2VtPicgcmVmZXJlbmNlIGlzbid0IGNsZWFyLA0KKwkgKiB0aGVyZSByZWFsbHkgc2hvdWxkIGJlIG1vcmUgb2YgYSBkZXNjcmlwdGlvbiBoZXJlLi4uDQorCSAqIDwvcD4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEByZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSAnPGVtPkJhc2UgUHJvcGVydHk8L2VtPicgcmVmZXJlbmNlLg0KKwkgKiBAc2VlICNzZXRCYXNlX1Byb3BlcnR5KFByb3BlcnR5KQ0KKwkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5ibG9ja3MuQmxvY2tzUGFja2FnZSNnZXRFbmRQYXRoTXVsdGlwbGljaXR5X0Jhc2VfUHJvcGVydHkoKQ0KKwkgKiBAbW9kZWwgb3JkZXJlZD0iZmFsc2UiDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCVByb3BlcnR5IGdldEJhc2VfUHJvcGVydHkoKTsNCisNCisJLyoqDQorCSAqIFNldHMgdGhlIHZhbHVlIG9mIHRoZSAne0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5ibG9ja3MuRW5kUGF0aE11bHRpcGxpY2l0eSNnZXRCYXNlX1Byb3BlcnR5IDxlbT5CYXNlIFByb3BlcnR5PC9lbT59JyByZWZlcmVuY2UuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAcGFyYW0gdmFsdWUgdGhlIG5ldyB2YWx1ZSBvZiB0aGUgJzxlbT5CYXNlIFByb3BlcnR5PC9lbT4nIHJlZmVyZW5jZS4NCisJICogQHNlZSAjZ2V0QmFzZV9Qcm9wZXJ0eSgpDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXZvaWQgc2V0QmFzZV9Qcm9wZXJ0eShQcm9wZXJ0eSB2YWx1ZSk7DQorDQorCS8qKg0KKwkgKiBSZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT48Yj5Mb3dlcjwvYj48L2VtPicgYXR0cmlidXRlLg0KKwkgKiBUaGUgZGVmYXVsdCB2YWx1ZSBpcyA8Y29kZT4iMCI8L2NvZGU+Lg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogPCEtLSBiZWdpbi1tb2RlbC1kb2MgLS0+DQorCSAqIEdpdmVzIHRoZSBtaW5pbXVtIG51bWJlciBvZiB2YWx1ZXMgb2YgdGhlIHByb3BlcnR5IGF0IHRoZSBlbmQgb2YgdGhlIHJlbGF0ZWQgYmluZGluZ1BhdGgsIGZvciBlYWNoIG9iamVjdCByZWFjaGVkIGJ5IG5hdmlnYXRpb24gYWxvbmcgdGhlIGJpbmRpbmdQYXRoIGZyb20gYW4gaW5zdGFuY2Ugb2YgdGhlIGJsb2NrIG93bmluZyB0aGUgcHJvcGVydHkgdG8gd2hpY2ggRW5kUGF0aE11bHRpcGxpY2l0eSBpcyBhcHBsaWVkDQorCSAqIDwhLS0gZW5kLW1vZGVsLWRvYyAtLT4NCisJICogQHJldHVybiB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+TG93ZXI8L2VtPicgYXR0cmlidXRlLg0KKwkgKiBAc2VlICNzZXRMb3dlcihpbnQpDQorCSAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmJsb2Nrcy5CbG9ja3NQYWNrYWdlI2dldEVuZFBhdGhNdWx0aXBsaWNpdHlfTG93ZXIoKQ0KKwkgKiBAbW9kZWwgZGVmYXVsdD0iMCIgZGF0YVR5cGU9Im9yZy5lY2xpcHNlLnVtbDIudHlwZXMuSW50ZWdlciIgb3JkZXJlZD0iZmFsc2UiDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCWludCBnZXRMb3dlcigpOw0KKw0KKwkvKioNCisJICogU2V0cyB0aGUgdmFsdWUgb2YgdGhlICd7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmJsb2Nrcy5FbmRQYXRoTXVsdGlwbGljaXR5I2dldExvd2VyIDxlbT5Mb3dlcjwvZW0+fScgYXR0cmlidXRlLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHBhcmFtIHZhbHVlIHRoZSBuZXcgdmFsdWUgb2YgdGhlICc8ZW0+TG93ZXI8L2VtPicgYXR0cmlidXRlLg0KKwkgKiBAc2VlICNnZXRMb3dlcigpDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXZvaWQgc2V0TG93ZXIoaW50IHZhbHVlKTsNCisNCisJLyoqDQorCSAqIFJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSAnPGVtPjxiPlVwcGVyPC9iPjwvZW0+JyBhdHRyaWJ1dGUuDQorCSAqIFRoZSBkZWZhdWx0IHZhbHVlIGlzIDxjb2RlPiItMSI8L2NvZGU+Lg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogPCEtLSBiZWdpbi1tb2RlbC1kb2MgLS0+DQorCSAqIEdpdmVzIHRoZSBtYXhpbXVtIG51bWJlciBvZiB2YWx1ZXMgb2YgdGhlIHByb3BlcnR5IGF0IHRoZSBlbmQgb2YgdGhlIHJlbGF0ZWQgYmluZGluZ1BhdGgsIGZvciBlYWNoIG9iamVjdCByZWFjaGVkIGJ5IG5hdmlnYXRpb24gYWxvbmcgdGhlIGJpbmRpbmdQYXRoIGZyb20gYW4gaW5zdGFuY2Ugb2YgdGhlIGJsb2NrIG93bmluZyB0aGUgcHJvcGVydHkgdG8gd2hpY2ggRW5kUGF0aE11bHRpcGxpY2l0eSBpcyBhcHBsaWVkLg0KKwkgKiA8IS0tIGVuZC1tb2RlbC1kb2MgLS0+DQorCSAqIEByZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSAnPGVtPlVwcGVyPC9lbT4nIGF0dHJpYnV0ZS4NCisJICogQHNlZSAjc2V0VXBwZXIoaW50KQ0KKwkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5ibG9ja3MuQmxvY2tzUGFja2FnZSNnZXRFbmRQYXRoTXVsdGlwbGljaXR5X1VwcGVyKCkNCisJICogQG1vZGVsIGRlZmF1bHQ9Ii0xIiBkYXRhVHlwZT0ib3JnLmVjbGlwc2UudW1sMi50eXBlcy5VbmxpbWl0ZWROYXR1cmFsIiBvcmRlcmVkPSJmYWxzZSINCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJaW50IGdldFVwcGVyKCk7DQorDQorCS8qKg0KKwkgKiBTZXRzIHRoZSB2YWx1ZSBvZiB0aGUgJ3tAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYmxvY2tzLkVuZFBhdGhNdWx0aXBsaWNpdHkjZ2V0VXBwZXIgPGVtPlVwcGVyPC9lbT59JyBhdHRyaWJ1dGUuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAcGFyYW0gdmFsdWUgdGhlIG5ldyB2YWx1ZSBvZiB0aGUgJzxlbT5VcHBlcjwvZW0+JyBhdHRyaWJ1dGUuDQorCSAqIEBzZWUgI2dldFVwcGVyKCkNCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJdm9pZCBzZXRVcHBlcihpbnQgdmFsdWUpOw0KKw0KK30gLy8gRW5kUGF0aE11bHRpcGxpY2l0eQ0KZGlmZiAtLWdpdCBhL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L2Jsb2Nrcy9OZXN0ZWRDb25uZWN0b3JFbmQuamF2YSBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L2Jsb2Nrcy9OZXN0ZWRDb25uZWN0b3JFbmQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MTllMDU3Ci0tLSAvZGV2L251bGwKKysrIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvYmxvY2tzL05lc3RlZENvbm5lY3RvckVuZC5qYXZhCkBAIC0wLDAgKzEsNjAgQEAKKy8qKg0KKyAqIENvcHlyaWdodCAoYykgMjAxNSBDRUEgTElTVC4NCisgKiANCisgKiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KKyAqICBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCisgKiAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCisgKiAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgKi8NCitwYWNrYWdlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5ibG9ja3M7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLnVtbDIudW1sLkNvbm5lY3RvckVuZDsNCisNCisvKioNCisgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKyAqIEEgcmVwcmVzZW50YXRpb24gb2YgdGhlIG1vZGVsIG9iamVjdCAnPGVtPjxiPk5lc3RlZCBDb25uZWN0b3IgRW5kPC9iPjwvZW0+Jy4NCisgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisgKg0KKyAqIDwhLS0gYmVnaW4tbW9kZWwtZG9jIC0tPg0KKyAqIFRoZSBOZXN0ZWRDb25uZWN0b3JFbmQgc3RlcmVvdHlwZSBvZiBVTUwgQ29ubmVjdG9yRW5kIGV4dGVuZHMgYSBVTUwgQ29ubmVjdG9yRW5kIHNvIHRoYXQgdGhlIGNvbm5lY3RlZCBwcm9wZXJ0eSBtYXkgYmUgaWRlbnRpZmllZCBieSBhIG11bHRpLWxldmVsIHBhdGggb2YgYWNjZXNzaWJsZSBwcm9wZXJ0aWVzIGZyb20gdGhlIGJsb2NrIHRoYXQgb3ducyB0aGUgY29ubmVjdG9yLg0KKyAqIDwhLS0gZW5kLW1vZGVsLWRvYyAtLT4NCisgKg0KKyAqIDxwPg0KKyAqIFRoZSBmb2xsb3dpbmcgZmVhdHVyZXMgYXJlIHN1cHBvcnRlZDoNCisgKiA8dWw+DQorICogICA8bGk+e0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5ibG9ja3MuTmVzdGVkQ29ubmVjdG9yRW5kI2dldEJhc2VfQ29ubmVjdG9yRW5kIDxlbT5CYXNlIENvbm5lY3RvciBFbmQ8L2VtPn08L2xpPg0KKyAqIDwvdWw+DQorICogPC9wPg0KKyAqDQorICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYmxvY2tzLkJsb2Nrc1BhY2thZ2UjZ2V0TmVzdGVkQ29ubmVjdG9yRW5kKCkNCisgKiBAbW9kZWwNCisgKiBAZ2VuZXJhdGVkDQorICovDQorcHVibGljIGludGVyZmFjZSBOZXN0ZWRDb25uZWN0b3JFbmQgZXh0ZW5kcyBFbGVtZW50UHJvcGVydHlQYXRoIHsNCisJLyoqDQorCSAqIFJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSAnPGVtPjxiPkJhc2UgQ29ubmVjdG9yIEVuZDwvYj48L2VtPicgcmVmZXJlbmNlLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8cD4NCisJICogSWYgdGhlIG1lYW5pbmcgb2YgdGhlICc8ZW0+QmFzZSBDb25uZWN0b3IgRW5kPC9lbT4nIHJlZmVyZW5jZSBpc24ndCBjbGVhciwNCisJICogdGhlcmUgcmVhbGx5IHNob3VsZCBiZSBtb3JlIG9mIGEgZGVzY3JpcHRpb24gaGVyZS4uLg0KKwkgKiA8L3A+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAcmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT5CYXNlIENvbm5lY3RvciBFbmQ8L2VtPicgcmVmZXJlbmNlLg0KKwkgKiBAc2VlICNzZXRCYXNlX0Nvbm5lY3RvckVuZChDb25uZWN0b3JFbmQpDQorCSAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmJsb2Nrcy5CbG9ja3NQYWNrYWdlI2dldE5lc3RlZENvbm5lY3RvckVuZF9CYXNlX0Nvbm5lY3RvckVuZCgpDQorCSAqIEBtb2RlbCBvcmRlcmVkPSJmYWxzZSINCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQ29ubmVjdG9yRW5kIGdldEJhc2VfQ29ubmVjdG9yRW5kKCk7DQorDQorCS8qKg0KKwkgKiBTZXRzIHRoZSB2YWx1ZSBvZiB0aGUgJ3tAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYmxvY2tzLk5lc3RlZENvbm5lY3RvckVuZCNnZXRCYXNlX0Nvbm5lY3RvckVuZCA8ZW0+QmFzZSBDb25uZWN0b3IgRW5kPC9lbT59JyByZWZlcmVuY2UuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAcGFyYW0gdmFsdWUgdGhlIG5ldyB2YWx1ZSBvZiB0aGUgJzxlbT5CYXNlIENvbm5lY3RvciBFbmQ8L2VtPicgcmVmZXJlbmNlLg0KKwkgKiBAc2VlICNnZXRCYXNlX0Nvbm5lY3RvckVuZCgpDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXZvaWQgc2V0QmFzZV9Db25uZWN0b3JFbmQoQ29ubmVjdG9yRW5kIHZhbHVlKTsNCisNCit9IC8vIE5lc3RlZENvbm5lY3RvckVuZA0KZGlmZiAtLWdpdCBhL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L2Jsb2Nrcy9QYXJ0aWNpcGFudFByb3BlcnR5LmphdmEgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9ibG9ja3MvUGFydGljaXBhbnRQcm9wZXJ0eS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY2YzhhYjMKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9ibG9ja3MvUGFydGljaXBhbnRQcm9wZXJ0eS5qYXZhCkBAIC0wLDAgKzEsODggQEAKKy8qKg0KKyAqIENvcHlyaWdodCAoYykgMjAxNSBDRUEgTElTVC4NCisgKiANCisgKiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KKyAqICBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCisgKiAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCisgKiAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgKi8NCitwYWNrYWdlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5ibG9ja3M7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FT2JqZWN0Ow0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS51bWwyLnVtbC5Qcm9wZXJ0eTsNCisNCisvKioNCisgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKyAqIEEgcmVwcmVzZW50YXRpb24gb2YgdGhlIG1vZGVsIG9iamVjdCAnPGVtPjxiPlBhcnRpY2lwYW50IFByb3BlcnR5PC9iPjwvZW0+Jy4NCisgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisgKg0KKyAqIDwhLS0gYmVnaW4tbW9kZWwtZG9jIC0tPg0KKyAqIFRoZSBCbG9jayBzdGVyZW90eXBlIGV4dGVuZHMgQ2xhc3MsIHNvIGl0IGNhbiBiZSBhcHBsaWVkIHRvIGFueSBzcGVjaWFsaXphdGlvbiBvZiBDbGFzcywgaW5jbHVkaW5nIEFzc29jaWF0aW9uIENsYXNzZXMuIFRoZXNlIGFyZSBpbmZvcm1hbGx5IGNhbGxlZCCTYXNzb2NpYXRpb24gYmxvY2tzLpQgQW4gYXNzb2NpYXRpb24gYmxvY2sgY2FuIG93biBwcm9wZXJ0aWVzIGFuZCBjb25uZWN0b3JzLCBsaWtlIGFueSBvdGhlciBibG9jay4gRWFjaCBpbnN0YW5jZSBvZiBhbiBhc3NvY2lhdGlvbiBibG9jayBjYW4gbGluayB0b2dldGhlciBpbnN0YW5jZXMgb2YgdGhlIGVuZCBjbGFzc2lmaWVycyBvZiB0aGUgYXNzb2NpYXRpb24uIFRvIHJlZmVyIHRvIGxpbmtlZCBvYmplY3RzIGFuZCB2YWx1ZXMgb2YgYW4gaW5zdGFuY2Ugb2YgYW4gYXNzb2NpYXRpb24gYmxvY2ssIGl0IGlzIG5lY2Vzc2FyeSBmb3IgdGhlIG1vZGVsZXIgdG8gc3BlY2lmeSB3aGljaCAocGFydGljaXBhbnQpIHByb3BlcnRpZXMgb2YgdGhlIGFzc29jaWF0aW9uIGJsb2NrIGlkZW50aWZ5IHRoZSBpbnN0YW5jZXMgYmVpbmcgbGlua2VkIGF0IHdoaWNoIGVuZCBvZiB0aGUgYXNzb2NpYXRpb24uIFRoZSB2YWx1ZSBvZiBhIHBhcnRpY2lwYW50IHByb3BlcnR5IG9uIGFuIGluc3RhbmNlIChsaW5rKSBvZiB0aGUgYXNzb2NpYXRpb24gYmxvY2sgaXMgdGhlIHZhbHVlIG9yIG9iamVjdCBhdCB0aGUgZW5kIG9mIHRoZSBsaW5rIGNvcnJlc3BvbmRpbmcgdG8gdGhpcyBlbmQgb2YgdGhlIGFzc29jaWF0aW9uLg0KKyAqIDwhLS0gZW5kLW1vZGVsLWRvYyAtLT4NCisgKg0KKyAqIDxwPg0KKyAqIFRoZSBmb2xsb3dpbmcgZmVhdHVyZXMgYXJlIHN1cHBvcnRlZDoNCisgKiA8dWw+DQorICogICA8bGk+e0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5ibG9ja3MuUGFydGljaXBhbnRQcm9wZXJ0eSNnZXRCYXNlX1Byb3BlcnR5IDxlbT5CYXNlIFByb3BlcnR5PC9lbT59PC9saT4NCisgKiAgIDxsaT57QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmJsb2Nrcy5QYXJ0aWNpcGFudFByb3BlcnR5I2dldEVuZCA8ZW0+RW5kPC9lbT59PC9saT4NCisgKiA8L3VsPg0KKyAqIDwvcD4NCisgKg0KKyAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmJsb2Nrcy5CbG9ja3NQYWNrYWdlI2dldFBhcnRpY2lwYW50UHJvcGVydHkoKQ0KKyAqIEBtb2RlbA0KKyAqIEBnZW5lcmF0ZWQNCisgKi8NCitwdWJsaWMgaW50ZXJmYWNlIFBhcnRpY2lwYW50UHJvcGVydHkgZXh0ZW5kcyBFT2JqZWN0IHsNCisJLyoqDQorCSAqIFJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSAnPGVtPjxiPkJhc2UgUHJvcGVydHk8L2I+PC9lbT4nIHJlZmVyZW5jZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPHA+DQorCSAqIElmIHRoZSBtZWFuaW5nIG9mIHRoZSAnPGVtPkJhc2UgUHJvcGVydHk8L2VtPicgcmVmZXJlbmNlIGlzbid0IGNsZWFyLA0KKwkgKiB0aGVyZSByZWFsbHkgc2hvdWxkIGJlIG1vcmUgb2YgYSBkZXNjcmlwdGlvbiBoZXJlLi4uDQorCSAqIDwvcD4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEByZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSAnPGVtPkJhc2UgUHJvcGVydHk8L2VtPicgcmVmZXJlbmNlLg0KKwkgKiBAc2VlICNzZXRCYXNlX1Byb3BlcnR5KFByb3BlcnR5KQ0KKwkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5ibG9ja3MuQmxvY2tzUGFja2FnZSNnZXRQYXJ0aWNpcGFudFByb3BlcnR5X0Jhc2VfUHJvcGVydHkoKQ0KKwkgKiBAbW9kZWwgb3JkZXJlZD0iZmFsc2UiDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCVByb3BlcnR5IGdldEJhc2VfUHJvcGVydHkoKTsNCisNCisJLyoqDQorCSAqIFNldHMgdGhlIHZhbHVlIG9mIHRoZSAne0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5ibG9ja3MuUGFydGljaXBhbnRQcm9wZXJ0eSNnZXRCYXNlX1Byb3BlcnR5IDxlbT5CYXNlIFByb3BlcnR5PC9lbT59JyByZWZlcmVuY2UuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAcGFyYW0gdmFsdWUgdGhlIG5ldyB2YWx1ZSBvZiB0aGUgJzxlbT5CYXNlIFByb3BlcnR5PC9lbT4nIHJlZmVyZW5jZS4NCisJICogQHNlZSAjZ2V0QmFzZV9Qcm9wZXJ0eSgpDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXZvaWQgc2V0QmFzZV9Qcm9wZXJ0eShQcm9wZXJ0eSB2YWx1ZSk7DQorDQorCS8qKg0KKwkgKiBSZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT48Yj5FbmQ8L2I+PC9lbT4nIHJlZmVyZW5jZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gYmVnaW4tbW9kZWwtZG9jIC0tPg0KKwkgKiBBIG1lbWJlciBlbmQgb2YgdGhlIGFzc29jaWF0aW9uIGJsb2NrIG93bmluZyB0aGUgcHJvcGVydHkgb24gd2hpY2ggdGhlIHN0ZXJlb3R5cGUgaXMgYXBwbGllZC4NCisJICogPCEtLSBlbmQtbW9kZWwtZG9jIC0tPg0KKwkgKiBAcmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT5FbmQ8L2VtPicgcmVmZXJlbmNlLg0KKwkgKiBAc2VlICNzZXRFbmQoUHJvcGVydHkpDQorCSAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmJsb2Nrcy5CbG9ja3NQYWNrYWdlI2dldFBhcnRpY2lwYW50UHJvcGVydHlfRW5kKCkNCisJICogQG1vZGVsIHJlcXVpcmVkPSJ0cnVlIiBvcmRlcmVkPSJmYWxzZSINCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJUHJvcGVydHkgZ2V0RW5kKCk7DQorDQorCS8qKg0KKwkgKiBTZXRzIHRoZSB2YWx1ZSBvZiB0aGUgJ3tAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYmxvY2tzLlBhcnRpY2lwYW50UHJvcGVydHkjZ2V0RW5kIDxlbT5FbmQ8L2VtPn0nIHJlZmVyZW5jZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBwYXJhbSB2YWx1ZSB0aGUgbmV3IHZhbHVlIG9mIHRoZSAnPGVtPkVuZDwvZW0+JyByZWZlcmVuY2UuDQorCSAqIEBzZWUgI2dldEVuZCgpDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXZvaWQgc2V0RW5kKFByb3BlcnR5IHZhbHVlKTsNCisNCit9IC8vIFBhcnRpY2lwYW50UHJvcGVydHkNCmRpZmYgLS1naXQgYS9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9ibG9ja3MvUHJvcGVydHlTcGVjaWZpY1R5cGUuamF2YSBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L2Jsb2Nrcy9Qcm9wZXJ0eVNwZWNpZmljVHlwZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjllMjhjMTcKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9ibG9ja3MvUHJvcGVydHlTcGVjaWZpY1R5cGUuamF2YQpAQCAtMCwwICsxLDYyIEBACisvKioNCisgKiBDb3B5cmlnaHQgKGMpIDIwMTUgQ0VBIExJU1QuDQorICogDQorICogIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCisgKiAgYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQorICogIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQorICogIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICovDQorcGFja2FnZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYmxvY2tzOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRU9iamVjdDsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UudW1sMi51bWwuQ2xhc3NpZmllcjsNCisNCisvKioNCisgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKyAqIEEgcmVwcmVzZW50YXRpb24gb2YgdGhlIG1vZGVsIG9iamVjdCAnPGVtPjxiPlByb3BlcnR5IFNwZWNpZmljIFR5cGU8L2I+PC9lbT4nLg0KKyAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKyAqDQorICogPCEtLSBiZWdpbi1tb2RlbC1kb2MgLS0+DQorICogVGhlIFByb3BlcnR5U3BlY2lmaWNUeXBlIHN0ZXJlb3R5cGUgc2hvdWxkIGF1dG9tYXRpY2FsbHkgYmUgYXBwbGllZCB0byB0aGUgY2xhc3NpZmllciB3aGljaCB0eXBlcyBhIHByb3BlcnR5IHdpdGggYSBwcm9wZXJ0eXNwZWNpZmljIHR5cGUuIFRoaXMgY2xhc3NpZmllciBjYW4gY29udGFpbiBkZWZpbml0aW9ucyBvZiBuZXcgb3IgcmVkZWZpbmVkIGZlYXR1cmVzIHdoaWNoIGV4dGVuZCB0aGUgb3JpZ2luYWwgY2xhc3NpZmllciByZWZlcmVuY2VkIGJ5IHRoZSBwcm9wZXJ0eS1zcGVjaWZpYyB0eXBlLg0KKyAqIDwhLS0gZW5kLW1vZGVsLWRvYyAtLT4NCisgKg0KKyAqIDxwPg0KKyAqIFRoZSBmb2xsb3dpbmcgZmVhdHVyZXMgYXJlIHN1cHBvcnRlZDoNCisgKiA8dWw+DQorICogICA8bGk+e0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5ibG9ja3MuUHJvcGVydHlTcGVjaWZpY1R5cGUjZ2V0QmFzZV9DbGFzc2lmaWVyIDxlbT5CYXNlIENsYXNzaWZpZXI8L2VtPn08L2xpPg0KKyAqIDwvdWw+DQorICogPC9wPg0KKyAqDQorICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYmxvY2tzLkJsb2Nrc1BhY2thZ2UjZ2V0UHJvcGVydHlTcGVjaWZpY1R5cGUoKQ0KKyAqIEBtb2RlbA0KKyAqIEBnZW5lcmF0ZWQNCisgKi8NCitwdWJsaWMgaW50ZXJmYWNlIFByb3BlcnR5U3BlY2lmaWNUeXBlIGV4dGVuZHMgRU9iamVjdCB7DQorCS8qKg0KKwkgKiBSZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT48Yj5CYXNlIENsYXNzaWZpZXI8L2I+PC9lbT4nIHJlZmVyZW5jZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPHA+DQorCSAqIElmIHRoZSBtZWFuaW5nIG9mIHRoZSAnPGVtPkJhc2UgQ2xhc3NpZmllcjwvZW0+JyByZWZlcmVuY2UgaXNuJ3QgY2xlYXIsDQorCSAqIHRoZXJlIHJlYWxseSBzaG91bGQgYmUgbW9yZSBvZiBhIGRlc2NyaXB0aW9uIGhlcmUuLi4NCisJICogPC9wPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHJldHVybiB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+QmFzZSBDbGFzc2lmaWVyPC9lbT4nIHJlZmVyZW5jZS4NCisJICogQHNlZSAjc2V0QmFzZV9DbGFzc2lmaWVyKENsYXNzaWZpZXIpDQorCSAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmJsb2Nrcy5CbG9ja3NQYWNrYWdlI2dldFByb3BlcnR5U3BlY2lmaWNUeXBlX0Jhc2VfQ2xhc3NpZmllcigpDQorCSAqIEBtb2RlbCBvcmRlcmVkPSJmYWxzZSINCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQ2xhc3NpZmllciBnZXRCYXNlX0NsYXNzaWZpZXIoKTsNCisNCisJLyoqDQorCSAqIFNldHMgdGhlIHZhbHVlIG9mIHRoZSAne0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5ibG9ja3MuUHJvcGVydHlTcGVjaWZpY1R5cGUjZ2V0QmFzZV9DbGFzc2lmaWVyIDxlbT5CYXNlIENsYXNzaWZpZXI8L2VtPn0nIHJlZmVyZW5jZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBwYXJhbSB2YWx1ZSB0aGUgbmV3IHZhbHVlIG9mIHRoZSAnPGVtPkJhc2UgQ2xhc3NpZmllcjwvZW0+JyByZWZlcmVuY2UuDQorCSAqIEBzZWUgI2dldEJhc2VfQ2xhc3NpZmllcigpDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXZvaWQgc2V0QmFzZV9DbGFzc2lmaWVyKENsYXNzaWZpZXIgdmFsdWUpOw0KKw0KK30gLy8gUHJvcGVydHlTcGVjaWZpY1R5cGUNCmRpZmYgLS1naXQgYS9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9ibG9ja3MvVmFsdWVUeXBlLmphdmEgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9ibG9ja3MvVmFsdWVUeXBlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTk4NWI2MgotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L2Jsb2Nrcy9WYWx1ZVR5cGUuamF2YQpAQCAtMCwwICsxLDExNSBAQAorLyoqDQorICogQ29weXJpZ2h0IChjKSAyMDE1IENFQSBMSVNULg0KKyAqIA0KKyAqICBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQorICogIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KKyAqICB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KKyAqICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqLw0KK3BhY2thZ2Ugb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmJsb2NrczsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVPYmplY3Q7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLnVtbDIudW1sLkRhdGFUeXBlOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS51bWwyLnVtbC5JbnN0YW5jZVNwZWNpZmljYXRpb247DQorDQorLyoqDQorICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisgKiBBIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBtb2RlbCBvYmplY3QgJzxlbT48Yj5WYWx1ZSBUeXBlPC9iPjwvZW0+Jy4NCisgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisgKg0KKyAqIDwhLS0gYmVnaW4tbW9kZWwtZG9jIC0tPg0KKyAqIEEgVmFsdWVUeXBlIGRlZmluZXMgdHlwZXMgb2YgdmFsdWVzIHRoYXQgbWF5IGJlIHVzZWQgdG8gZXhwcmVzcyBpbmZvcm1hdGlvbiBhYm91dCBhIHN5c3RlbSwgYnV0IGNhbm5vdCBiZSBpZGVudGlmaWVkIGFzIHRoZSB0YXJnZXQgb2YgYW55IHJlZmVyZW5jZS4gU2luY2UgYSB2YWx1ZSBjYW5ub3QgYmUgaWRlbnRpZmllZCBleGNlcHQgYnkgbWVhbnMgb2YgdGhlIHZhbHVlIGl0c2VsZiwgZWFjaCBzdWNoIHZhbHVlIHdpdGhpbiBhIG1vZGVsIGlzIGluZGVwZW5kZW50IG9mIGFueSBvdGhlciwgdW5sZXNzIG90aGVyIGZvcm1zIG9mIGNvbnN0cmFpbnRzIGFyZSBpbXBvc2VkLiBWYWx1ZSB0eXBlcyBtYXkgYmUgdXNlZCB0byB0eXBlIHByb3BlcnRpZXMsIG9wZXJhdGlvbiBwYXJhbWV0ZXJzLCBvciBwb3RlbnRpYWxseSBvdGhlciBlbGVtZW50cyB3aXRoaW4gU3lzTUwuIFN5c01MIGRlZmluZXMgVmFsdWVUeXBlIGFzIGEgc3RlcmVvdHlwZSBvZiBVTUwgRGF0YVR5cGUgdG8gZXN0YWJsaXNoIGEgbW9yZSBuZXV0cmFsIHRlcm0gZm9yIHN5c3RlbSB2YWx1ZXMgdGhhdCBtYXkgbmV2ZXIgYmUgZ2l2ZW4gYSBjb25jcmV0ZSBkYXRhIHJlcHJlc2VudGF0aW9uLg0KKyAqIDwhLS0gZW5kLW1vZGVsLWRvYyAtLT4NCisgKg0KKyAqIDxwPg0KKyAqIFRoZSBmb2xsb3dpbmcgZmVhdHVyZXMgYXJlIHN1cHBvcnRlZDoNCisgKiA8dWw+DQorICogICA8bGk+e0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5ibG9ja3MuVmFsdWVUeXBlI2dldEJhc2VfRGF0YVR5cGUgPGVtPkJhc2UgRGF0YSBUeXBlPC9lbT59PC9saT4NCisgKiAgIDxsaT57QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmJsb2Nrcy5WYWx1ZVR5cGUjZ2V0VW5pdCA8ZW0+VW5pdDwvZW0+fTwvbGk+DQorICogICA8bGk+e0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5ibG9ja3MuVmFsdWVUeXBlI2dldFF1YW50aXR5S2luZCA8ZW0+UXVhbnRpdHkgS2luZDwvZW0+fTwvbGk+DQorICogPC91bD4NCisgKiA8L3A+DQorICoNCisgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5ibG9ja3MuQmxvY2tzUGFja2FnZSNnZXRWYWx1ZVR5cGUoKQ0KKyAqIEBtb2RlbA0KKyAqIEBnZW5lcmF0ZWQNCisgKi8NCitwdWJsaWMgaW50ZXJmYWNlIFZhbHVlVHlwZSBleHRlbmRzIEVPYmplY3Qgew0KKwkvKioNCisJICogUmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+PGI+QmFzZSBEYXRhIFR5cGU8L2I+PC9lbT4nIHJlZmVyZW5jZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPHA+DQorCSAqIElmIHRoZSBtZWFuaW5nIG9mIHRoZSAnPGVtPkJhc2UgRGF0YSBUeXBlPC9lbT4nIHJlZmVyZW5jZSBpc24ndCBjbGVhciwNCisJICogdGhlcmUgcmVhbGx5IHNob3VsZCBiZSBtb3JlIG9mIGEgZGVzY3JpcHRpb24gaGVyZS4uLg0KKwkgKiA8L3A+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAcmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT5CYXNlIERhdGEgVHlwZTwvZW0+JyByZWZlcmVuY2UuDQorCSAqIEBzZWUgI3NldEJhc2VfRGF0YVR5cGUoRGF0YVR5cGUpDQorCSAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmJsb2Nrcy5CbG9ja3NQYWNrYWdlI2dldFZhbHVlVHlwZV9CYXNlX0RhdGFUeXBlKCkNCisJICogQG1vZGVsIG9yZGVyZWQ9ImZhbHNlIg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlEYXRhVHlwZSBnZXRCYXNlX0RhdGFUeXBlKCk7DQorDQorCS8qKg0KKwkgKiBTZXRzIHRoZSB2YWx1ZSBvZiB0aGUgJ3tAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYmxvY2tzLlZhbHVlVHlwZSNnZXRCYXNlX0RhdGFUeXBlIDxlbT5CYXNlIERhdGEgVHlwZTwvZW0+fScgcmVmZXJlbmNlLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHBhcmFtIHZhbHVlIHRoZSBuZXcgdmFsdWUgb2YgdGhlICc8ZW0+QmFzZSBEYXRhIFR5cGU8L2VtPicgcmVmZXJlbmNlLg0KKwkgKiBAc2VlICNnZXRCYXNlX0RhdGFUeXBlKCkNCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJdm9pZCBzZXRCYXNlX0RhdGFUeXBlKERhdGFUeXBlIHZhbHVlKTsNCisNCisJLyoqDQorCSAqIFJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSAnPGVtPjxiPlVuaXQ8L2I+PC9lbT4nIHJlZmVyZW5jZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gYmVnaW4tbW9kZWwtZG9jIC0tPg0KKwkgKiBBIHF1YW50aXR5IGluIHRlcm1zIG9mIHdoaWNoIHRoZSBtYWduaXR1ZGVzIG9mIG90aGVyIHF1YW50aXRpZXMgdGhhdCBoYXZlIHRoZSBzYW1lIGRpbWVuc2lvbiBjYW4gYmUgc3RhdGVkLCBhcyBpZGVudGlmaWVkIGJ5IGFuIGluc3RhbmNlIG9mIHRoZSBVbml0IHN0ZXJlb3R5cGUuDQorCSAqIDwhLS0gZW5kLW1vZGVsLWRvYyAtLT4NCisJICogQHJldHVybiB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+VW5pdDwvZW0+JyByZWZlcmVuY2UuDQorCSAqIEBzZWUgI3NldFVuaXQoSW5zdGFuY2VTcGVjaWZpY2F0aW9uKQ0KKwkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5ibG9ja3MuQmxvY2tzUGFja2FnZSNnZXRWYWx1ZVR5cGVfVW5pdCgpDQorCSAqIEBtb2RlbCBvcmRlcmVkPSJmYWxzZSINCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJSW5zdGFuY2VTcGVjaWZpY2F0aW9uIGdldFVuaXQoKTsNCisNCisJLyoqDQorCSAqIFNldHMgdGhlIHZhbHVlIG9mIHRoZSAne0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5ibG9ja3MuVmFsdWVUeXBlI2dldFVuaXQgPGVtPlVuaXQ8L2VtPn0nIHJlZmVyZW5jZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBwYXJhbSB2YWx1ZSB0aGUgbmV3IHZhbHVlIG9mIHRoZSAnPGVtPlVuaXQ8L2VtPicgcmVmZXJlbmNlLg0KKwkgKiBAc2VlICNnZXRVbml0KCkNCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJdm9pZCBzZXRVbml0KEluc3RhbmNlU3BlY2lmaWNhdGlvbiB2YWx1ZSk7DQorDQorCS8qKg0KKwkgKiBSZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT48Yj5RdWFudGl0eSBLaW5kPC9iPjwvZW0+JyByZWZlcmVuY2UuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGJlZ2luLW1vZGVsLWRvYyAtLT4NCisJICogQSBraW5kIG9mIHF1YW50aXR5IHRoYXQgbWF5IGJlIHN0YXRlZCBieSBtZWFucyBvZiBkZWZpbmVkIHVuaXRzLCBhcyBpZGVudGlmaWVkIGJ5IGFuIGluc3RhbmNlIG9mIHRoZSBEaW1lbnNpb24gc3RlcmVvdHlwZS4gQSB2YWx1ZSB0eXBlIG1heSBvcHRpb25hbGx5IHNwZWNpZnkgYSBkaW1lbnNpb24gd2l0aG91dCBhbnkgdW5pdC4gU3VjaCBhIHZhbHVlIGhhcyBubyBjb25jcmV0ZSByZXByZXNlbnRhdGlvbiwgYnV0IG1heSBiZSB1c2VkIHRvIGV4cHJlc3MgYSB2YWx1ZSBpbiBhbiBhYnN0cmFjdCBmb3JtIGluZGVwZW5kZW50IG9mIGFueSBzcGVjaWZpYyB1bml0cy4NCisJICogPCEtLSBlbmQtbW9kZWwtZG9jIC0tPg0KKwkgKiBAcmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT5RdWFudGl0eSBLaW5kPC9lbT4nIHJlZmVyZW5jZS4NCisJICogQHNlZSAjc2V0UXVhbnRpdHlLaW5kKEluc3RhbmNlU3BlY2lmaWNhdGlvbikNCisJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYmxvY2tzLkJsb2Nrc1BhY2thZ2UjZ2V0VmFsdWVUeXBlX1F1YW50aXR5S2luZCgpDQorCSAqIEBtb2RlbCBvcmRlcmVkPSJmYWxzZSINCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJSW5zdGFuY2VTcGVjaWZpY2F0aW9uIGdldFF1YW50aXR5S2luZCgpOw0KKw0KKwkvKioNCisJICogU2V0cyB0aGUgdmFsdWUgb2YgdGhlICd7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmJsb2Nrcy5WYWx1ZVR5cGUjZ2V0UXVhbnRpdHlLaW5kIDxlbT5RdWFudGl0eSBLaW5kPC9lbT59JyByZWZlcmVuY2UuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAcGFyYW0gdmFsdWUgdGhlIG5ldyB2YWx1ZSBvZiB0aGUgJzxlbT5RdWFudGl0eSBLaW5kPC9lbT4nIHJlZmVyZW5jZS4NCisJICogQHNlZSAjZ2V0UXVhbnRpdHlLaW5kKCkNCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJdm9pZCBzZXRRdWFudGl0eUtpbmQoSW5zdGFuY2VTcGVjaWZpY2F0aW9uIHZhbHVlKTsNCisNCit9IC8vIFZhbHVlVHlwZQ0KZGlmZiAtLWdpdCBhL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L2Jsb2Nrcy9pbnRlcm5hbC9pbXBsL0FkanVuY3RQcm9wZXJ0eUltcGwuamF2YSBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L2Jsb2Nrcy9pbnRlcm5hbC9pbXBsL0FkanVuY3RQcm9wZXJ0eUltcGwuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZjNkOGRmCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvYmxvY2tzL2ludGVybmFsL2ltcGwvQWRqdW5jdFByb3BlcnR5SW1wbC5qYXZhCkBAIC0wLDAgKzEsMjI1IEBACisvKioNCisgKiBDb3B5cmlnaHQgKGMpIDIwMTUgQ0VBIExJU1QuDQorICogDQorICogIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCisgKiAgYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQorICogIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQorICogIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICovDQorcGFja2FnZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYmxvY2tzLmludGVybmFsLmltcGw7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jb21tb24ubm90aWZ5Lk5vdGlmaWNhdGlvbjsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVDbGFzczsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkludGVybmFsRU9iamVjdDsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLmltcGwuRU5vdGlmaWNhdGlvbkltcGw7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5pbXBsLk1pbmltYWxFT2JqZWN0SW1wbDsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmJsb2Nrcy5BZGp1bmN0UHJvcGVydHk7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5ibG9ja3MuQmxvY2tzUGFja2FnZTsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UudW1sMi51bWwuRWxlbWVudDsNCitpbXBvcnQgb3JnLmVjbGlwc2UudW1sMi51bWwuUHJvcGVydHk7DQorDQorLyoqDQorICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisgKiBBbiBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgbW9kZWwgb2JqZWN0ICc8ZW0+PGI+QWRqdW5jdCBQcm9wZXJ0eTwvYj48L2VtPicuDQorICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorICogPHA+DQorICogVGhlIGZvbGxvd2luZyBmZWF0dXJlcyBhcmUgaW1wbGVtZW50ZWQ6DQorICogPHVsPg0KKyAqICAgPGxpPntAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYmxvY2tzLmludGVybmFsLmltcGwuQWRqdW5jdFByb3BlcnR5SW1wbCNnZXRCYXNlX1Byb3BlcnR5IDxlbT5CYXNlIFByb3BlcnR5PC9lbT59PC9saT4NCisgKiAgIDxsaT57QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmJsb2Nrcy5pbnRlcm5hbC5pbXBsLkFkanVuY3RQcm9wZXJ0eUltcGwjZ2V0UHJpbmNpcGFsIDxlbT5QcmluY2lwYWw8L2VtPn08L2xpPg0KKyAqIDwvdWw+DQorICogPC9wPg0KKyAqDQorICogQGdlbmVyYXRlZA0KKyAqLw0KK3B1YmxpYyBjbGFzcyBBZGp1bmN0UHJvcGVydHlJbXBsIGV4dGVuZHMgTWluaW1hbEVPYmplY3RJbXBsLkNvbnRhaW5lciBpbXBsZW1lbnRzIEFkanVuY3RQcm9wZXJ0eSB7DQorCS8qKg0KKwkgKiBUaGUgY2FjaGVkIHZhbHVlIG9mIHRoZSAne0BsaW5rICNnZXRCYXNlX1Byb3BlcnR5KCkgPGVtPkJhc2UgUHJvcGVydHk8L2VtPn0nIHJlZmVyZW5jZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBzZWUgI2dldEJhc2VfUHJvcGVydHkoKQ0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqIEBvcmRlcmVkDQorCSAqLw0KKwlwcm90ZWN0ZWQgUHJvcGVydHkgYmFzZV9Qcm9wZXJ0eTsNCisNCisJLyoqDQorCSAqIFRoZSBjYWNoZWQgdmFsdWUgb2YgdGhlICd7QGxpbmsgI2dldFByaW5jaXBhbCgpIDxlbT5QcmluY2lwYWw8L2VtPn0nIHJlZmVyZW5jZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBzZWUgI2dldFByaW5jaXBhbCgpDQorCSAqIEBnZW5lcmF0ZWQNCisJICogQG9yZGVyZWQNCisJICovDQorCXByb3RlY3RlZCBFbGVtZW50IHByaW5jaXBhbDsNCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwcm90ZWN0ZWQgQWRqdW5jdFByb3BlcnR5SW1wbCgpIHsNCisJCXN1cGVyKCk7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHJvdGVjdGVkIEVDbGFzcyBlU3RhdGljQ2xhc3MoKSB7DQorCQlyZXR1cm4gQmxvY2tzUGFja2FnZS5MaXRlcmFscy5BREpVTkNUX1BST1BFUlRZOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIFByb3BlcnR5IGdldEJhc2VfUHJvcGVydHkoKSB7DQorCQlpZiAoYmFzZV9Qcm9wZXJ0eSAhPSBudWxsICYmIGJhc2VfUHJvcGVydHkuZUlzUHJveHkoKSkgew0KKwkJCUludGVybmFsRU9iamVjdCBvbGRCYXNlX1Byb3BlcnR5ID0gKEludGVybmFsRU9iamVjdCliYXNlX1Byb3BlcnR5Ow0KKwkJCWJhc2VfUHJvcGVydHkgPSAoUHJvcGVydHkpZVJlc29sdmVQcm94eShvbGRCYXNlX1Byb3BlcnR5KTsNCisJCQlpZiAoYmFzZV9Qcm9wZXJ0eSAhPSBvbGRCYXNlX1Byb3BlcnR5KSB7DQorCQkJCWlmIChlTm90aWZpY2F0aW9uUmVxdWlyZWQoKSkNCisJCQkJCWVOb3RpZnkobmV3IEVOb3RpZmljYXRpb25JbXBsKHRoaXMsIE5vdGlmaWNhdGlvbi5SRVNPTFZFLCBCbG9ja3NQYWNrYWdlLkFESlVOQ1RfUFJPUEVSVFlfX0JBU0VfUFJPUEVSVFksIG9sZEJhc2VfUHJvcGVydHksIGJhc2VfUHJvcGVydHkpKTsNCisJCQl9DQorCQl9DQorCQlyZXR1cm4gYmFzZV9Qcm9wZXJ0eTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBQcm9wZXJ0eSBiYXNpY0dldEJhc2VfUHJvcGVydHkoKSB7DQorCQlyZXR1cm4gYmFzZV9Qcm9wZXJ0eTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyB2b2lkIHNldEJhc2VfUHJvcGVydHkoUHJvcGVydHkgbmV3QmFzZV9Qcm9wZXJ0eSkgew0KKwkJUHJvcGVydHkgb2xkQmFzZV9Qcm9wZXJ0eSA9IGJhc2VfUHJvcGVydHk7DQorCQliYXNlX1Byb3BlcnR5ID0gbmV3QmFzZV9Qcm9wZXJ0eTsNCisJCWlmIChlTm90aWZpY2F0aW9uUmVxdWlyZWQoKSkNCisJCQllTm90aWZ5KG5ldyBFTm90aWZpY2F0aW9uSW1wbCh0aGlzLCBOb3RpZmljYXRpb24uU0VULCBCbG9ja3NQYWNrYWdlLkFESlVOQ1RfUFJPUEVSVFlfX0JBU0VfUFJPUEVSVFksIG9sZEJhc2VfUHJvcGVydHksIGJhc2VfUHJvcGVydHkpKTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBFbGVtZW50IGdldFByaW5jaXBhbCgpIHsNCisJCWlmIChwcmluY2lwYWwgIT0gbnVsbCAmJiBwcmluY2lwYWwuZUlzUHJveHkoKSkgew0KKwkJCUludGVybmFsRU9iamVjdCBvbGRQcmluY2lwYWwgPSAoSW50ZXJuYWxFT2JqZWN0KXByaW5jaXBhbDsNCisJCQlwcmluY2lwYWwgPSAoRWxlbWVudCllUmVzb2x2ZVByb3h5KG9sZFByaW5jaXBhbCk7DQorCQkJaWYgKHByaW5jaXBhbCAhPSBvbGRQcmluY2lwYWwpIHsNCisJCQkJaWYgKGVOb3RpZmljYXRpb25SZXF1aXJlZCgpKQ0KKwkJCQkJZU5vdGlmeShuZXcgRU5vdGlmaWNhdGlvbkltcGwodGhpcywgTm90aWZpY2F0aW9uLlJFU09MVkUsIEJsb2Nrc1BhY2thZ2UuQURKVU5DVF9QUk9QRVJUWV9fUFJJTkNJUEFMLCBvbGRQcmluY2lwYWwsIHByaW5jaXBhbCkpOw0KKwkJCX0NCisJCX0NCisJCXJldHVybiBwcmluY2lwYWw7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgRWxlbWVudCBiYXNpY0dldFByaW5jaXBhbCgpIHsNCisJCXJldHVybiBwcmluY2lwYWw7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgdm9pZCBzZXRQcmluY2lwYWwoRWxlbWVudCBuZXdQcmluY2lwYWwpIHsNCisJCUVsZW1lbnQgb2xkUHJpbmNpcGFsID0gcHJpbmNpcGFsOw0KKwkJcHJpbmNpcGFsID0gbmV3UHJpbmNpcGFsOw0KKwkJaWYgKGVOb3RpZmljYXRpb25SZXF1aXJlZCgpKQ0KKwkJCWVOb3RpZnkobmV3IEVOb3RpZmljYXRpb25JbXBsKHRoaXMsIE5vdGlmaWNhdGlvbi5TRVQsIEJsb2Nrc1BhY2thZ2UuQURKVU5DVF9QUk9QRVJUWV9fUFJJTkNJUEFMLCBvbGRQcmluY2lwYWwsIHByaW5jaXBhbCkpOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXB1YmxpYyBPYmplY3QgZUdldChpbnQgZmVhdHVyZUlELCBib29sZWFuIHJlc29sdmUsIGJvb2xlYW4gY29yZVR5cGUpIHsNCisJCXN3aXRjaCAoZmVhdHVyZUlEKSB7DQorCQkJY2FzZSBCbG9ja3NQYWNrYWdlLkFESlVOQ1RfUFJPUEVSVFlfX0JBU0VfUFJPUEVSVFk6DQorCQkJCWlmIChyZXNvbHZlKSByZXR1cm4gZ2V0QmFzZV9Qcm9wZXJ0eSgpOw0KKwkJCQlyZXR1cm4gYmFzaWNHZXRCYXNlX1Byb3BlcnR5KCk7DQorCQkJY2FzZSBCbG9ja3NQYWNrYWdlLkFESlVOQ1RfUFJPUEVSVFlfX1BSSU5DSVBBTDoNCisJCQkJaWYgKHJlc29sdmUpIHJldHVybiBnZXRQcmluY2lwYWwoKTsNCisJCQkJcmV0dXJuIGJhc2ljR2V0UHJpbmNpcGFsKCk7DQorCQl9DQorCQlyZXR1cm4gc3VwZXIuZUdldChmZWF0dXJlSUQsIHJlc29sdmUsIGNvcmVUeXBlKTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgdm9pZCBlU2V0KGludCBmZWF0dXJlSUQsIE9iamVjdCBuZXdWYWx1ZSkgew0KKwkJc3dpdGNoIChmZWF0dXJlSUQpIHsNCisJCQljYXNlIEJsb2Nrc1BhY2thZ2UuQURKVU5DVF9QUk9QRVJUWV9fQkFTRV9QUk9QRVJUWToNCisJCQkJc2V0QmFzZV9Qcm9wZXJ0eSgoUHJvcGVydHkpbmV3VmFsdWUpOw0KKwkJCQlyZXR1cm47DQorCQkJY2FzZSBCbG9ja3NQYWNrYWdlLkFESlVOQ1RfUFJPUEVSVFlfX1BSSU5DSVBBTDoNCisJCQkJc2V0UHJpbmNpcGFsKChFbGVtZW50KW5ld1ZhbHVlKTsNCisJCQkJcmV0dXJuOw0KKwkJfQ0KKwkJc3VwZXIuZVNldChmZWF0dXJlSUQsIG5ld1ZhbHVlKTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgdm9pZCBlVW5zZXQoaW50IGZlYXR1cmVJRCkgew0KKwkJc3dpdGNoIChmZWF0dXJlSUQpIHsNCisJCQljYXNlIEJsb2Nrc1BhY2thZ2UuQURKVU5DVF9QUk9QRVJUWV9fQkFTRV9QUk9QRVJUWToNCisJCQkJc2V0QmFzZV9Qcm9wZXJ0eSgoUHJvcGVydHkpbnVsbCk7DQorCQkJCXJldHVybjsNCisJCQljYXNlIEJsb2Nrc1BhY2thZ2UuQURKVU5DVF9QUk9QRVJUWV9fUFJJTkNJUEFMOg0KKwkJCQlzZXRQcmluY2lwYWwoKEVsZW1lbnQpbnVsbCk7DQorCQkJCXJldHVybjsNCisJCX0NCisJCXN1cGVyLmVVbnNldChmZWF0dXJlSUQpOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXB1YmxpYyBib29sZWFuIGVJc1NldChpbnQgZmVhdHVyZUlEKSB7DQorCQlzd2l0Y2ggKGZlYXR1cmVJRCkgew0KKwkJCWNhc2UgQmxvY2tzUGFja2FnZS5BREpVTkNUX1BST1BFUlRZX19CQVNFX1BST1BFUlRZOg0KKwkJCQlyZXR1cm4gYmFzZV9Qcm9wZXJ0eSAhPSBudWxsOw0KKwkJCWNhc2UgQmxvY2tzUGFja2FnZS5BREpVTkNUX1BST1BFUlRZX19QUklOQ0lQQUw6DQorCQkJCXJldHVybiBwcmluY2lwYWwgIT0gbnVsbDsNCisJCX0NCisJCXJldHVybiBzdXBlci5lSXNTZXQoZmVhdHVyZUlEKTsNCisJfQ0KKw0KK30gLy9BZGp1bmN0UHJvcGVydHlJbXBsDQpkaWZmIC0tZ2l0IGEvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvYmxvY2tzL2ludGVybmFsL2ltcGwvQmluZGluZ0Nvbm5lY3RvckltcGwuamF2YSBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L2Jsb2Nrcy9pbnRlcm5hbC9pbXBsL0JpbmRpbmdDb25uZWN0b3JJbXBsLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzAyOTg2YgotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L2Jsb2Nrcy9pbnRlcm5hbC9pbXBsL0JpbmRpbmdDb25uZWN0b3JJbXBsLmphdmEKQEAgLTAsMCArMSwxNjQgQEAKKy8qKg0KKyAqIENvcHlyaWdodCAoYykgMjAxNSBDRUEgTElTVC4NCisgKiANCisgKiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KKyAqICBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCisgKiAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCisgKiAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgKi8NCitwYWNrYWdlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5ibG9ja3MuaW50ZXJuYWwuaW1wbDsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi5ub3RpZnkuTm90aWZpY2F0aW9uOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRUNsYXNzOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuSW50ZXJuYWxFT2JqZWN0Ow0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuaW1wbC5FTm90aWZpY2F0aW9uSW1wbDsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLmltcGwuTWluaW1hbEVPYmplY3RJbXBsOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYmxvY2tzLkJpbmRpbmdDb25uZWN0b3I7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5ibG9ja3MuQmxvY2tzUGFja2FnZTsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UudW1sMi51bWwuQ29ubmVjdG9yOw0KKw0KKy8qKg0KKyAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorICogQW4gaW1wbGVtZW50YXRpb24gb2YgdGhlIG1vZGVsIG9iamVjdCAnPGVtPjxiPkJpbmRpbmcgQ29ubmVjdG9yPC9iPjwvZW0+Jy4NCisgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisgKiA8cD4NCisgKiBUaGUgZm9sbG93aW5nIGZlYXR1cmVzIGFyZSBpbXBsZW1lbnRlZDoNCisgKiA8dWw+DQorICogICA8bGk+e0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5ibG9ja3MuaW50ZXJuYWwuaW1wbC5CaW5kaW5nQ29ubmVjdG9ySW1wbCNnZXRCYXNlX0Nvbm5lY3RvciA8ZW0+QmFzZSBDb25uZWN0b3I8L2VtPn08L2xpPg0KKyAqIDwvdWw+DQorICogPC9wPg0KKyAqDQorICogQGdlbmVyYXRlZA0KKyAqLw0KK3B1YmxpYyBjbGFzcyBCaW5kaW5nQ29ubmVjdG9ySW1wbCBleHRlbmRzIE1pbmltYWxFT2JqZWN0SW1wbC5Db250YWluZXIgaW1wbGVtZW50cyBCaW5kaW5nQ29ubmVjdG9yIHsNCisJLyoqDQorCSAqIFRoZSBjYWNoZWQgdmFsdWUgb2YgdGhlICd7QGxpbmsgI2dldEJhc2VfQ29ubmVjdG9yKCkgPGVtPkJhc2UgQ29ubmVjdG9yPC9lbT59JyByZWZlcmVuY2UuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAc2VlICNnZXRCYXNlX0Nvbm5lY3RvcigpDQorCSAqIEBnZW5lcmF0ZWQNCisJICogQG9yZGVyZWQNCisJICovDQorCXByb3RlY3RlZCBDb25uZWN0b3IgYmFzZV9Db25uZWN0b3I7DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHJvdGVjdGVkIEJpbmRpbmdDb25uZWN0b3JJbXBsKCkgew0KKwkJc3VwZXIoKTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwcm90ZWN0ZWQgRUNsYXNzIGVTdGF0aWNDbGFzcygpIHsNCisJCXJldHVybiBCbG9ja3NQYWNrYWdlLkxpdGVyYWxzLkJJTkRJTkdfQ09OTkVDVE9SOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIENvbm5lY3RvciBnZXRCYXNlX0Nvbm5lY3RvcigpIHsNCisJCWlmIChiYXNlX0Nvbm5lY3RvciAhPSBudWxsICYmIGJhc2VfQ29ubmVjdG9yLmVJc1Byb3h5KCkpIHsNCisJCQlJbnRlcm5hbEVPYmplY3Qgb2xkQmFzZV9Db25uZWN0b3IgPSAoSW50ZXJuYWxFT2JqZWN0KWJhc2VfQ29ubmVjdG9yOw0KKwkJCWJhc2VfQ29ubmVjdG9yID0gKENvbm5lY3RvcillUmVzb2x2ZVByb3h5KG9sZEJhc2VfQ29ubmVjdG9yKTsNCisJCQlpZiAoYmFzZV9Db25uZWN0b3IgIT0gb2xkQmFzZV9Db25uZWN0b3IpIHsNCisJCQkJaWYgKGVOb3RpZmljYXRpb25SZXF1aXJlZCgpKQ0KKwkJCQkJZU5vdGlmeShuZXcgRU5vdGlmaWNhdGlvbkltcGwodGhpcywgTm90aWZpY2F0aW9uLlJFU09MVkUsIEJsb2Nrc1BhY2thZ2UuQklORElOR19DT05ORUNUT1JfX0JBU0VfQ09OTkVDVE9SLCBvbGRCYXNlX0Nvbm5lY3RvciwgYmFzZV9Db25uZWN0b3IpKTsNCisJCQl9DQorCQl9DQorCQlyZXR1cm4gYmFzZV9Db25uZWN0b3I7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgQ29ubmVjdG9yIGJhc2ljR2V0QmFzZV9Db25uZWN0b3IoKSB7DQorCQlyZXR1cm4gYmFzZV9Db25uZWN0b3I7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgdm9pZCBzZXRCYXNlX0Nvbm5lY3RvcihDb25uZWN0b3IgbmV3QmFzZV9Db25uZWN0b3IpIHsNCisJCUNvbm5lY3RvciBvbGRCYXNlX0Nvbm5lY3RvciA9IGJhc2VfQ29ubmVjdG9yOw0KKwkJYmFzZV9Db25uZWN0b3IgPSBuZXdCYXNlX0Nvbm5lY3RvcjsNCisJCWlmIChlTm90aWZpY2F0aW9uUmVxdWlyZWQoKSkNCisJCQllTm90aWZ5KG5ldyBFTm90aWZpY2F0aW9uSW1wbCh0aGlzLCBOb3RpZmljYXRpb24uU0VULCBCbG9ja3NQYWNrYWdlLkJJTkRJTkdfQ09OTkVDVE9SX19CQVNFX0NPTk5FQ1RPUiwgb2xkQmFzZV9Db25uZWN0b3IsIGJhc2VfQ29ubmVjdG9yKSk7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIE9iamVjdCBlR2V0KGludCBmZWF0dXJlSUQsIGJvb2xlYW4gcmVzb2x2ZSwgYm9vbGVhbiBjb3JlVHlwZSkgew0KKwkJc3dpdGNoIChmZWF0dXJlSUQpIHsNCisJCQljYXNlIEJsb2Nrc1BhY2thZ2UuQklORElOR19DT05ORUNUT1JfX0JBU0VfQ09OTkVDVE9SOg0KKwkJCQlpZiAocmVzb2x2ZSkgcmV0dXJuIGdldEJhc2VfQ29ubmVjdG9yKCk7DQorCQkJCXJldHVybiBiYXNpY0dldEJhc2VfQ29ubmVjdG9yKCk7DQorCQl9DQorCQlyZXR1cm4gc3VwZXIuZUdldChmZWF0dXJlSUQsIHJlc29sdmUsIGNvcmVUeXBlKTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgdm9pZCBlU2V0KGludCBmZWF0dXJlSUQsIE9iamVjdCBuZXdWYWx1ZSkgew0KKwkJc3dpdGNoIChmZWF0dXJlSUQpIHsNCisJCQljYXNlIEJsb2Nrc1BhY2thZ2UuQklORElOR19DT05ORUNUT1JfX0JBU0VfQ09OTkVDVE9SOg0KKwkJCQlzZXRCYXNlX0Nvbm5lY3RvcigoQ29ubmVjdG9yKW5ld1ZhbHVlKTsNCisJCQkJcmV0dXJuOw0KKwkJfQ0KKwkJc3VwZXIuZVNldChmZWF0dXJlSUQsIG5ld1ZhbHVlKTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgdm9pZCBlVW5zZXQoaW50IGZlYXR1cmVJRCkgew0KKwkJc3dpdGNoIChmZWF0dXJlSUQpIHsNCisJCQljYXNlIEJsb2Nrc1BhY2thZ2UuQklORElOR19DT05ORUNUT1JfX0JBU0VfQ09OTkVDVE9SOg0KKwkJCQlzZXRCYXNlX0Nvbm5lY3RvcigoQ29ubmVjdG9yKW51bGwpOw0KKwkJCQlyZXR1cm47DQorCQl9DQorCQlzdXBlci5lVW5zZXQoZmVhdHVyZUlEKTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgYm9vbGVhbiBlSXNTZXQoaW50IGZlYXR1cmVJRCkgew0KKwkJc3dpdGNoIChmZWF0dXJlSUQpIHsNCisJCQljYXNlIEJsb2Nrc1BhY2thZ2UuQklORElOR19DT05ORUNUT1JfX0JBU0VfQ09OTkVDVE9SOg0KKwkJCQlyZXR1cm4gYmFzZV9Db25uZWN0b3IgIT0gbnVsbDsNCisJCX0NCisJCXJldHVybiBzdXBlci5lSXNTZXQoZmVhdHVyZUlEKTsNCisJfQ0KKw0KK30gLy9CaW5kaW5nQ29ubmVjdG9ySW1wbA0KZGlmZiAtLWdpdCBhL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L2Jsb2Nrcy9pbnRlcm5hbC9pbXBsL0Jsb2NrSW1wbC5qYXZhIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvYmxvY2tzL2ludGVybmFsL2ltcGwvQmxvY2tJbXBsLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODY3MGRhNQotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L2Jsb2Nrcy9pbnRlcm5hbC9pbXBsL0Jsb2NrSW1wbC5qYXZhCkBAIC0wLDAgKzEsMjMwIEBACisvKioNCisgKiBDb3B5cmlnaHQgKGMpIDIwMTUgQ0VBIExJU1QuDQorICogDQorICogIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCisgKiAgYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQorICogIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQorICogIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICovDQorcGFja2FnZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYmxvY2tzLmludGVybmFsLmltcGw7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jb21tb24ubm90aWZ5Lk5vdGlmaWNhdGlvbjsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVDbGFzczsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkludGVybmFsRU9iamVjdDsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLmltcGwuRU5vdGlmaWNhdGlvbkltcGw7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5pbXBsLk1pbmltYWxFT2JqZWN0SW1wbDsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmJsb2Nrcy5CbG9jazsNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmJsb2Nrcy5CbG9ja3NQYWNrYWdlOw0KKw0KKy8qKg0KKyAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorICogQW4gaW1wbGVtZW50YXRpb24gb2YgdGhlIG1vZGVsIG9iamVjdCAnPGVtPjxiPkJsb2NrPC9iPjwvZW0+Jy4NCisgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisgKiA8cD4NCisgKiBUaGUgZm9sbG93aW5nIGZlYXR1cmVzIGFyZSBpbXBsZW1lbnRlZDoNCisgKiA8dWw+DQorICogICA8bGk+e0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5ibG9ja3MuaW50ZXJuYWwuaW1wbC5CbG9ja0ltcGwjZ2V0QmFzZV9DbGFzcyA8ZW0+QmFzZSBDbGFzczwvZW0+fTwvbGk+DQorICogICA8bGk+e0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5ibG9ja3MuaW50ZXJuYWwuaW1wbC5CbG9ja0ltcGwjaXNFbmNhcHN1bGF0ZWQgPGVtPklzIEVuY2Fwc3VsYXRlZDwvZW0+fTwvbGk+DQorICogPC91bD4NCisgKiA8L3A+DQorICoNCisgKiBAZ2VuZXJhdGVkDQorICovDQorcHVibGljIGNsYXNzIEJsb2NrSW1wbCBleHRlbmRzIE1pbmltYWxFT2JqZWN0SW1wbC5Db250YWluZXIgaW1wbGVtZW50cyBCbG9jayB7DQorCS8qKg0KKwkgKiBUaGUgY2FjaGVkIHZhbHVlIG9mIHRoZSAne0BsaW5rICNnZXRCYXNlX0NsYXNzKCkgPGVtPkJhc2UgQ2xhc3M8L2VtPn0nIHJlZmVyZW5jZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBzZWUgI2dldEJhc2VfQ2xhc3MoKQ0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqIEBvcmRlcmVkDQorCSAqLw0KKwlwcm90ZWN0ZWQgb3JnLmVjbGlwc2UudW1sMi51bWwuQ2xhc3MgYmFzZV9DbGFzczsNCisNCisJLyoqDQorCSAqIFRoZSBkZWZhdWx0IHZhbHVlIG9mIHRoZSAne0BsaW5rICNpc0VuY2Fwc3VsYXRlZCgpIDxlbT5JcyBFbmNhcHN1bGF0ZWQ8L2VtPn0nIGF0dHJpYnV0ZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBzZWUgI2lzRW5jYXBzdWxhdGVkKCkNCisJICogQGdlbmVyYXRlZA0KKwkgKiBAb3JkZXJlZA0KKwkgKi8NCisJcHJvdGVjdGVkIHN0YXRpYyBmaW5hbCBib29sZWFuIElTX0VOQ0FQU1VMQVRFRF9FREVGQVVMVCA9IGZhbHNlOw0KKw0KKwkvKioNCisJICogVGhlIGNhY2hlZCB2YWx1ZSBvZiB0aGUgJ3tAbGluayAjaXNFbmNhcHN1bGF0ZWQoKSA8ZW0+SXMgRW5jYXBzdWxhdGVkPC9lbT59JyBhdHRyaWJ1dGUuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAc2VlICNpc0VuY2Fwc3VsYXRlZCgpDQorCSAqIEBnZW5lcmF0ZWQNCisJICogQG9yZGVyZWQNCisJICovDQorCXByb3RlY3RlZCBib29sZWFuIGlzRW5jYXBzdWxhdGVkID0gSVNfRU5DQVBTVUxBVEVEX0VERUZBVUxUOw0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXByb3RlY3RlZCBCbG9ja0ltcGwoKSB7DQorCQlzdXBlcigpOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXByb3RlY3RlZCBFQ2xhc3MgZVN0YXRpY0NsYXNzKCkgew0KKwkJcmV0dXJuIEJsb2Nrc1BhY2thZ2UuTGl0ZXJhbHMuQkxPQ0s7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgb3JnLmVjbGlwc2UudW1sMi51bWwuQ2xhc3MgZ2V0QmFzZV9DbGFzcygpIHsNCisJCWlmIChiYXNlX0NsYXNzICE9IG51bGwgJiYgYmFzZV9DbGFzcy5lSXNQcm94eSgpKSB7DQorCQkJSW50ZXJuYWxFT2JqZWN0IG9sZEJhc2VfQ2xhc3MgPSAoSW50ZXJuYWxFT2JqZWN0KWJhc2VfQ2xhc3M7DQorCQkJYmFzZV9DbGFzcyA9IChvcmcuZWNsaXBzZS51bWwyLnVtbC5DbGFzcyllUmVzb2x2ZVByb3h5KG9sZEJhc2VfQ2xhc3MpOw0KKwkJCWlmIChiYXNlX0NsYXNzICE9IG9sZEJhc2VfQ2xhc3MpIHsNCisJCQkJaWYgKGVOb3RpZmljYXRpb25SZXF1aXJlZCgpKQ0KKwkJCQkJZU5vdGlmeShuZXcgRU5vdGlmaWNhdGlvbkltcGwodGhpcywgTm90aWZpY2F0aW9uLlJFU09MVkUsIEJsb2Nrc1BhY2thZ2UuQkxPQ0tfX0JBU0VfQ0xBU1MsIG9sZEJhc2VfQ2xhc3MsIGJhc2VfQ2xhc3MpKTsNCisJCQl9DQorCQl9DQorCQlyZXR1cm4gYmFzZV9DbGFzczsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBvcmcuZWNsaXBzZS51bWwyLnVtbC5DbGFzcyBiYXNpY0dldEJhc2VfQ2xhc3MoKSB7DQorCQlyZXR1cm4gYmFzZV9DbGFzczsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyB2b2lkIHNldEJhc2VfQ2xhc3Mob3JnLmVjbGlwc2UudW1sMi51bWwuQ2xhc3MgbmV3QmFzZV9DbGFzcykgew0KKwkJb3JnLmVjbGlwc2UudW1sMi51bWwuQ2xhc3Mgb2xkQmFzZV9DbGFzcyA9IGJhc2VfQ2xhc3M7DQorCQliYXNlX0NsYXNzID0gbmV3QmFzZV9DbGFzczsNCisJCWlmIChlTm90aWZpY2F0aW9uUmVxdWlyZWQoKSkNCisJCQllTm90aWZ5KG5ldyBFTm90aWZpY2F0aW9uSW1wbCh0aGlzLCBOb3RpZmljYXRpb24uU0VULCBCbG9ja3NQYWNrYWdlLkJMT0NLX19CQVNFX0NMQVNTLCBvbGRCYXNlX0NsYXNzLCBiYXNlX0NsYXNzKSk7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgYm9vbGVhbiBpc0VuY2Fwc3VsYXRlZCgpIHsNCisJCXJldHVybiBpc0VuY2Fwc3VsYXRlZDsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyB2b2lkIHNldElzRW5jYXBzdWxhdGVkKGJvb2xlYW4gbmV3SXNFbmNhcHN1bGF0ZWQpIHsNCisJCWJvb2xlYW4gb2xkSXNFbmNhcHN1bGF0ZWQgPSBpc0VuY2Fwc3VsYXRlZDsNCisJCWlzRW5jYXBzdWxhdGVkID0gbmV3SXNFbmNhcHN1bGF0ZWQ7DQorCQlpZiAoZU5vdGlmaWNhdGlvblJlcXVpcmVkKCkpDQorCQkJZU5vdGlmeShuZXcgRU5vdGlmaWNhdGlvbkltcGwodGhpcywgTm90aWZpY2F0aW9uLlNFVCwgQmxvY2tzUGFja2FnZS5CTE9DS19fSVNfRU5DQVBTVUxBVEVELCBvbGRJc0VuY2Fwc3VsYXRlZCwgaXNFbmNhcHN1bGF0ZWQpKTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgT2JqZWN0IGVHZXQoaW50IGZlYXR1cmVJRCwgYm9vbGVhbiByZXNvbHZlLCBib29sZWFuIGNvcmVUeXBlKSB7DQorCQlzd2l0Y2ggKGZlYXR1cmVJRCkgew0KKwkJCWNhc2UgQmxvY2tzUGFja2FnZS5CTE9DS19fQkFTRV9DTEFTUzoNCisJCQkJaWYgKHJlc29sdmUpIHJldHVybiBnZXRCYXNlX0NsYXNzKCk7DQorCQkJCXJldHVybiBiYXNpY0dldEJhc2VfQ2xhc3MoKTsNCisJCQljYXNlIEJsb2Nrc1BhY2thZ2UuQkxPQ0tfX0lTX0VOQ0FQU1VMQVRFRDoNCisJCQkJcmV0dXJuIGlzRW5jYXBzdWxhdGVkKCk7DQorCQl9DQorCQlyZXR1cm4gc3VwZXIuZUdldChmZWF0dXJlSUQsIHJlc29sdmUsIGNvcmVUeXBlKTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgdm9pZCBlU2V0KGludCBmZWF0dXJlSUQsIE9iamVjdCBuZXdWYWx1ZSkgew0KKwkJc3dpdGNoIChmZWF0dXJlSUQpIHsNCisJCQljYXNlIEJsb2Nrc1BhY2thZ2UuQkxPQ0tfX0JBU0VfQ0xBU1M6DQorCQkJCXNldEJhc2VfQ2xhc3MoKG9yZy5lY2xpcHNlLnVtbDIudW1sLkNsYXNzKW5ld1ZhbHVlKTsNCisJCQkJcmV0dXJuOw0KKwkJCWNhc2UgQmxvY2tzUGFja2FnZS5CTE9DS19fSVNfRU5DQVBTVUxBVEVEOg0KKwkJCQlzZXRJc0VuY2Fwc3VsYXRlZCgoQm9vbGVhbiluZXdWYWx1ZSk7DQorCQkJCXJldHVybjsNCisJCX0NCisJCXN1cGVyLmVTZXQoZmVhdHVyZUlELCBuZXdWYWx1ZSk7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIHZvaWQgZVVuc2V0KGludCBmZWF0dXJlSUQpIHsNCisJCXN3aXRjaCAoZmVhdHVyZUlEKSB7DQorCQkJY2FzZSBCbG9ja3NQYWNrYWdlLkJMT0NLX19CQVNFX0NMQVNTOg0KKwkJCQlzZXRCYXNlX0NsYXNzKChvcmcuZWNsaXBzZS51bWwyLnVtbC5DbGFzcyludWxsKTsNCisJCQkJcmV0dXJuOw0KKwkJCWNhc2UgQmxvY2tzUGFja2FnZS5CTE9DS19fSVNfRU5DQVBTVUxBVEVEOg0KKwkJCQlzZXRJc0VuY2Fwc3VsYXRlZChJU19FTkNBUFNVTEFURURfRURFRkFVTFQpOw0KKwkJCQlyZXR1cm47DQorCQl9DQorCQlzdXBlci5lVW5zZXQoZmVhdHVyZUlEKTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgYm9vbGVhbiBlSXNTZXQoaW50IGZlYXR1cmVJRCkgew0KKwkJc3dpdGNoIChmZWF0dXJlSUQpIHsNCisJCQljYXNlIEJsb2Nrc1BhY2thZ2UuQkxPQ0tfX0JBU0VfQ0xBU1M6DQorCQkJCXJldHVybiBiYXNlX0NsYXNzICE9IG51bGw7DQorCQkJY2FzZSBCbG9ja3NQYWNrYWdlLkJMT0NLX19JU19FTkNBUFNVTEFURUQ6DQorCQkJCXJldHVybiBpc0VuY2Fwc3VsYXRlZCAhPSBJU19FTkNBUFNVTEFURURfRURFRkFVTFQ7DQorCQl9DQorCQlyZXR1cm4gc3VwZXIuZUlzU2V0KGZlYXR1cmVJRCk7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIFN0cmluZyB0b1N0cmluZygpIHsNCisJCWlmIChlSXNQcm94eSgpKSByZXR1cm4gc3VwZXIudG9TdHJpbmcoKTsNCisNCisJCVN0cmluZ0J1ZmZlciByZXN1bHQgPSBuZXcgU3RyaW5nQnVmZmVyKHN1cGVyLnRvU3RyaW5nKCkpOw0KKwkJcmVzdWx0LmFwcGVuZCgiIChpc0VuY2Fwc3VsYXRlZDogIik7IC8vJE5PTi1OTFMtMSQNCisJCXJlc3VsdC5hcHBlbmQoaXNFbmNhcHN1bGF0ZWQpOw0KKwkJcmVzdWx0LmFwcGVuZCgnKScpOw0KKwkJcmV0dXJuIHJlc3VsdC50b1N0cmluZygpOw0KKwl9DQorDQorfSAvL0Jsb2NrSW1wbA0KZGlmZiAtLWdpdCBhL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L2Jsb2Nrcy9pbnRlcm5hbC9pbXBsL0Jsb2Nrc0ZhY3RvcnlJbXBsLmphdmEgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9ibG9ja3MvaW50ZXJuYWwvaW1wbC9CbG9ja3NGYWN0b3J5SW1wbC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBmMTdlYmYKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9ibG9ja3MvaW50ZXJuYWwvaW1wbC9CbG9ja3NGYWN0b3J5SW1wbC5qYXZhCkBAIC0wLDAgKzEsMjIyIEBACisvKioNCisgKiBDb3B5cmlnaHQgKGMpIDIwMTUgQ0VBIExJU1QuDQorICogDQorICogIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCisgKiAgYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQorICogIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQorICogIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICovDQorcGFja2FnZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYmxvY2tzLmludGVybmFsLmltcGw7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FQ2xhc3M7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FT2JqZWN0Ow0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRVBhY2thZ2U7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5pbXBsLkVGYWN0b3J5SW1wbDsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLnBsdWdpbi5FY29yZVBsdWdpbjsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmJsb2Nrcy4qOw0KKw0KKy8qKg0KKyAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorICogQW4gaW1wbGVtZW50YXRpb24gb2YgdGhlIG1vZGVsIDxiPkZhY3Rvcnk8L2I+Lg0KKyAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKyAqIEBnZW5lcmF0ZWQNCisgKi8NCitwdWJsaWMgY2xhc3MgQmxvY2tzRmFjdG9yeUltcGwgZXh0ZW5kcyBFRmFjdG9yeUltcGwgaW1wbGVtZW50cyBCbG9ja3NGYWN0b3J5IHsNCisJLyoqDQorCSAqIENyZWF0ZXMgdGhlIGRlZmF1bHQgZmFjdG9yeSBpbXBsZW1lbnRhdGlvbi4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBzdGF0aWMgQmxvY2tzRmFjdG9yeSBpbml0KCkgew0KKwkJdHJ5IHsNCisJCQlCbG9ja3NGYWN0b3J5IHRoZUJsb2Nrc0ZhY3RvcnkgPSAoQmxvY2tzRmFjdG9yeSlFUGFja2FnZS5SZWdpc3RyeS5JTlNUQU5DRS5nZXRFRmFjdG9yeShCbG9ja3NQYWNrYWdlLmVOU19VUkkpOw0KKwkJCWlmICh0aGVCbG9ja3NGYWN0b3J5ICE9IG51bGwpIHsNCisJCQkJcmV0dXJuIHRoZUJsb2Nrc0ZhY3Rvcnk7DQorCQkJfQ0KKwkJfQ0KKwkJY2F0Y2ggKEV4Y2VwdGlvbiBleGNlcHRpb24pIHsNCisJCQlFY29yZVBsdWdpbi5JTlNUQU5DRS5sb2coZXhjZXB0aW9uKTsNCisJCX0NCisJCXJldHVybiBuZXcgQmxvY2tzRmFjdG9yeUltcGwoKTsNCisJfQ0KKw0KKwkvKioNCisJICogQ3JlYXRlcyBhbiBpbnN0YW5jZSBvZiB0aGUgZmFjdG9yeS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBCbG9ja3NGYWN0b3J5SW1wbCgpIHsNCisJCXN1cGVyKCk7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIEVPYmplY3QgY3JlYXRlKEVDbGFzcyBlQ2xhc3MpIHsNCisJCXN3aXRjaCAoZUNsYXNzLmdldENsYXNzaWZpZXJJRCgpKSB7DQorCQkJY2FzZSBCbG9ja3NQYWNrYWdlLlZBTFVFX1RZUEU6IHJldHVybiBjcmVhdGVWYWx1ZVR5cGUoKTsNCisJCQljYXNlIEJsb2Nrc1BhY2thZ2UuRElTVFJJQlVURURfUFJPUEVSVFk6IHJldHVybiBjcmVhdGVEaXN0cmlidXRlZFByb3BlcnR5KCk7DQorCQkJY2FzZSBCbG9ja3NQYWNrYWdlLkNPTk5FQ1RPUl9QUk9QRVJUWTogcmV0dXJuIGNyZWF0ZUNvbm5lY3RvclByb3BlcnR5KCk7DQorCQkJY2FzZSBCbG9ja3NQYWNrYWdlLlBBUlRJQ0lQQU5UX1BST1BFUlRZOiByZXR1cm4gY3JlYXRlUGFydGljaXBhbnRQcm9wZXJ0eSgpOw0KKwkJCWNhc2UgQmxvY2tzUGFja2FnZS5CSU5ESU5HX0NPTk5FQ1RPUjogcmV0dXJuIGNyZWF0ZUJpbmRpbmdDb25uZWN0b3IoKTsNCisJCQljYXNlIEJsb2Nrc1BhY2thZ2UuQkxPQ0s6IHJldHVybiBjcmVhdGVCbG9jaygpOw0KKwkJCWNhc2UgQmxvY2tzUGFja2FnZS5QUk9QRVJUWV9TUEVDSUZJQ19UWVBFOiByZXR1cm4gY3JlYXRlUHJvcGVydHlTcGVjaWZpY1R5cGUoKTsNCisJCQljYXNlIEJsb2Nrc1BhY2thZ2UuTkVTVEVEX0NPTk5FQ1RPUl9FTkQ6IHJldHVybiBjcmVhdGVOZXN0ZWRDb25uZWN0b3JFbmQoKTsNCisJCQljYXNlIEJsb2Nrc1BhY2thZ2UuRU5EX1BBVEhfTVVMVElQTElDSVRZOiByZXR1cm4gY3JlYXRlRW5kUGF0aE11bHRpcGxpY2l0eSgpOw0KKwkJCWNhc2UgQmxvY2tzUGFja2FnZS5CT1VORF9SRUZFUkVOQ0U6IHJldHVybiBjcmVhdGVCb3VuZFJlZmVyZW5jZSgpOw0KKwkJCWNhc2UgQmxvY2tzUGFja2FnZS5BREpVTkNUX1BST1BFUlRZOiByZXR1cm4gY3JlYXRlQWRqdW5jdFByb3BlcnR5KCk7DQorCQkJY2FzZSBCbG9ja3NQYWNrYWdlLkNMQVNTSUZJRVJfQkVIQVZJT1JfUFJPUEVSVFk6IHJldHVybiBjcmVhdGVDbGFzc2lmaWVyQmVoYXZpb3JQcm9wZXJ0eSgpOw0KKwkJCWRlZmF1bHQ6DQorCQkJCXRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIlRoZSBjbGFzcyAnIiArIGVDbGFzcy5nZXROYW1lKCkgKyAiJyBpcyBub3QgYSB2YWxpZCBjbGFzc2lmaWVyIik7IC8vJE5PTi1OTFMtMSQgLy8kTk9OLU5MUy0yJA0KKwkJfQ0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIFZhbHVlVHlwZSBjcmVhdGVWYWx1ZVR5cGUoKSB7DQorCQlWYWx1ZVR5cGVJbXBsIHZhbHVlVHlwZSA9IG5ldyBWYWx1ZVR5cGVJbXBsKCk7DQorCQlyZXR1cm4gdmFsdWVUeXBlOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIERpc3RyaWJ1dGVkUHJvcGVydHkgY3JlYXRlRGlzdHJpYnV0ZWRQcm9wZXJ0eSgpIHsNCisJCURpc3RyaWJ1dGVkUHJvcGVydHlJbXBsIGRpc3RyaWJ1dGVkUHJvcGVydHkgPSBuZXcgRGlzdHJpYnV0ZWRQcm9wZXJ0eUltcGwoKTsNCisJCXJldHVybiBkaXN0cmlidXRlZFByb3BlcnR5Ow0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIENvbm5lY3RvclByb3BlcnR5IGNyZWF0ZUNvbm5lY3RvclByb3BlcnR5KCkgew0KKwkJQ29ubmVjdG9yUHJvcGVydHlJbXBsIGNvbm5lY3RvclByb3BlcnR5ID0gbmV3IENvbm5lY3RvclByb3BlcnR5SW1wbCgpOw0KKwkJcmV0dXJuIGNvbm5lY3RvclByb3BlcnR5Ow0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIFBhcnRpY2lwYW50UHJvcGVydHkgY3JlYXRlUGFydGljaXBhbnRQcm9wZXJ0eSgpIHsNCisJCVBhcnRpY2lwYW50UHJvcGVydHlJbXBsIHBhcnRpY2lwYW50UHJvcGVydHkgPSBuZXcgUGFydGljaXBhbnRQcm9wZXJ0eUltcGwoKTsNCisJCXJldHVybiBwYXJ0aWNpcGFudFByb3BlcnR5Ow0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIEJpbmRpbmdDb25uZWN0b3IgY3JlYXRlQmluZGluZ0Nvbm5lY3RvcigpIHsNCisJCUJpbmRpbmdDb25uZWN0b3JJbXBsIGJpbmRpbmdDb25uZWN0b3IgPSBuZXcgQmluZGluZ0Nvbm5lY3RvckltcGwoKTsNCisJCXJldHVybiBiaW5kaW5nQ29ubmVjdG9yOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIEJsb2NrIGNyZWF0ZUJsb2NrKCkgew0KKwkJQmxvY2tJbXBsIGJsb2NrID0gbmV3IEJsb2NrSW1wbCgpOw0KKwkJcmV0dXJuIGJsb2NrOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIFByb3BlcnR5U3BlY2lmaWNUeXBlIGNyZWF0ZVByb3BlcnR5U3BlY2lmaWNUeXBlKCkgew0KKwkJUHJvcGVydHlTcGVjaWZpY1R5cGVJbXBsIHByb3BlcnR5U3BlY2lmaWNUeXBlID0gbmV3IFByb3BlcnR5U3BlY2lmaWNUeXBlSW1wbCgpOw0KKwkJcmV0dXJuIHByb3BlcnR5U3BlY2lmaWNUeXBlOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIE5lc3RlZENvbm5lY3RvckVuZCBjcmVhdGVOZXN0ZWRDb25uZWN0b3JFbmQoKSB7DQorCQlOZXN0ZWRDb25uZWN0b3JFbmRJbXBsIG5lc3RlZENvbm5lY3RvckVuZCA9IG5ldyBOZXN0ZWRDb25uZWN0b3JFbmRJbXBsKCk7DQorCQlyZXR1cm4gbmVzdGVkQ29ubmVjdG9yRW5kOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIEVuZFBhdGhNdWx0aXBsaWNpdHkgY3JlYXRlRW5kUGF0aE11bHRpcGxpY2l0eSgpIHsNCisJCUVuZFBhdGhNdWx0aXBsaWNpdHlJbXBsIGVuZFBhdGhNdWx0aXBsaWNpdHkgPSBuZXcgRW5kUGF0aE11bHRpcGxpY2l0eUltcGwoKTsNCisJCXJldHVybiBlbmRQYXRoTXVsdGlwbGljaXR5Ow0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIEJvdW5kUmVmZXJlbmNlIGNyZWF0ZUJvdW5kUmVmZXJlbmNlKCkgew0KKwkJQm91bmRSZWZlcmVuY2VJbXBsIGJvdW5kUmVmZXJlbmNlID0gbmV3IEJvdW5kUmVmZXJlbmNlSW1wbCgpOw0KKwkJcmV0dXJuIGJvdW5kUmVmZXJlbmNlOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIEFkanVuY3RQcm9wZXJ0eSBjcmVhdGVBZGp1bmN0UHJvcGVydHkoKSB7DQorCQlBZGp1bmN0UHJvcGVydHlJbXBsIGFkanVuY3RQcm9wZXJ0eSA9IG5ldyBBZGp1bmN0UHJvcGVydHlJbXBsKCk7DQorCQlyZXR1cm4gYWRqdW5jdFByb3BlcnR5Ow0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIENsYXNzaWZpZXJCZWhhdmlvclByb3BlcnR5IGNyZWF0ZUNsYXNzaWZpZXJCZWhhdmlvclByb3BlcnR5KCkgew0KKwkJQ2xhc3NpZmllckJlaGF2aW9yUHJvcGVydHlJbXBsIGNsYXNzaWZpZXJCZWhhdmlvclByb3BlcnR5ID0gbmV3IENsYXNzaWZpZXJCZWhhdmlvclByb3BlcnR5SW1wbCgpOw0KKwkJcmV0dXJuIGNsYXNzaWZpZXJCZWhhdmlvclByb3BlcnR5Ow0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIEJsb2Nrc1BhY2thZ2UgZ2V0QmxvY2tzUGFja2FnZSgpIHsNCisJCXJldHVybiAoQmxvY2tzUGFja2FnZSlnZXRFUGFja2FnZSgpOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGRlcHJlY2F0ZWQNCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQERlcHJlY2F0ZWQNCisJcHVibGljIHN0YXRpYyBCbG9ja3NQYWNrYWdlIGdldFBhY2thZ2UoKSB7DQorCQlyZXR1cm4gQmxvY2tzUGFja2FnZS5lSU5TVEFOQ0U7DQorCX0NCisNCit9IC8vQmxvY2tzRmFjdG9yeUltcGwNCmRpZmYgLS1naXQgYS9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9ibG9ja3MvaW50ZXJuYWwvaW1wbC9CbG9ja3NQYWNrYWdlSW1wbC5qYXZhIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvYmxvY2tzL2ludGVybmFsL2ltcGwvQmxvY2tzUGFja2FnZUltcGwuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MDFhZjQ0Ci0tLSAvZGV2L251bGwKKysrIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvYmxvY2tzL2ludGVybmFsL2ltcGwvQmxvY2tzUGFja2FnZUltcGwuamF2YQpAQCAtMCwwICsxLDg0MCBAQAorLyoqDQorICogQ29weXJpZ2h0IChjKSAyMDE1IENFQSBMSVNULg0KKyAqIA0KKyAqICBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQorICogIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KKyAqICB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KKyAqICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqLw0KK3BhY2thZ2Ugb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmJsb2Nrcy5pbnRlcm5hbC5pbXBsOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRUF0dHJpYnV0ZTsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVDbGFzczsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVQYWNrYWdlOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRVJlZmVyZW5jZTsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLmltcGwuRVBhY2thZ2VJbXBsOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYWN0aXZpdGllcy5BY3Rpdml0aWVzUGFja2FnZTsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmFjdGl2aXRpZXMuaW50ZXJuYWwuaW1wbC5BY3Rpdml0aWVzUGFja2FnZUltcGw7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5hbGxvY2F0aW9ucy5BbGxvY2F0aW9uc1BhY2thZ2U7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5hbGxvY2F0aW9ucy5pbnRlcm5hbC5pbXBsLkFsbG9jYXRpb25zUGFja2FnZUltcGw7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5ibG9ja3MuQWRqdW5jdFByb3BlcnR5Ow0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYmxvY2tzLkJpbmRpbmdDb25uZWN0b3I7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5ibG9ja3MuQmxvY2s7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5ibG9ja3MuQmxvY2tzRmFjdG9yeTsNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmJsb2Nrcy5CbG9ja3NQYWNrYWdlOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYmxvY2tzLkJvdW5kUmVmZXJlbmNlOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYmxvY2tzLkNsYXNzaWZpZXJCZWhhdmlvclByb3BlcnR5Ow0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYmxvY2tzLkNvbm5lY3RvclByb3BlcnR5Ow0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYmxvY2tzLkRpcmVjdGVkUmVsYXRpb25zaGlwUHJvcGVydHlQYXRoOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYmxvY2tzLkRpc3RyaWJ1dGVkUHJvcGVydHk7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5ibG9ja3MuRWxlbWVudFByb3BlcnR5UGF0aDsNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmJsb2Nrcy5FbmRQYXRoTXVsdGlwbGljaXR5Ow0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYmxvY2tzLk5lc3RlZENvbm5lY3RvckVuZDsNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmJsb2Nrcy5QYXJ0aWNpcGFudFByb3BlcnR5Ow0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYmxvY2tzLlByb3BlcnR5U3BlY2lmaWNUeXBlOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYmxvY2tzLlZhbHVlVHlwZTsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmNvbnN0cmFpbnRibG9ja3MuQ29uc3RyYWludGJsb2Nrc1BhY2thZ2U7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5jb25zdHJhaW50YmxvY2tzLmludGVybmFsLmltcGwuQ29uc3RyYWludGJsb2Nrc1BhY2thZ2VJbXBsOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGVwcmVjYXRlZGVsZW1lbnRzLkRlcHJlY2F0ZWRlbGVtZW50c1BhY2thZ2U7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kZXByZWNhdGVkZWxlbWVudHMuaW50ZXJuYWwuaW1wbC5EZXByZWNhdGVkZWxlbWVudHNQYWNrYWdlSW1wbDsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0Lm1vZGVsZWxlbWVudHMuTW9kZWxlbGVtZW50c1BhY2thZ2U7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5tb2RlbGVsZW1lbnRzLmludGVybmFsLmltcGwuTW9kZWxlbGVtZW50c1BhY2thZ2VJbXBsOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucG9ydGFuZGZsb3dzLlBvcnRhbmRmbG93c1BhY2thZ2U7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5wb3J0YW5kZmxvd3MuaW50ZXJuYWwuaW1wbC5Qb3J0YW5kZmxvd3NQYWNrYWdlSW1wbDsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnJlcXVpcmVtZW50cy5SZXF1aXJlbWVudHNQYWNrYWdlOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucmVxdWlyZW1lbnRzLmludGVybmFsLmltcGwuUmVxdWlyZW1lbnRzUGFja2FnZUltcGw7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLnVtbDIudHlwZXMuVHlwZXNQYWNrYWdlOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS51bWwyLnVtbC5VTUxQYWNrYWdlOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS51bWwyLnVtbC5wcm9maWxlLnN0YW5kYXJkLlN0YW5kYXJkUGFja2FnZTsNCisNCisvKioNCisgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKyAqIEFuIGltcGxlbWVudGF0aW9uIG9mIHRoZSBtb2RlbCA8Yj5QYWNrYWdlPC9iPi4NCisgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisgKiBAZ2VuZXJhdGVkDQorICovDQorcHVibGljIGNsYXNzIEJsb2Nrc1BhY2thZ2VJbXBsIGV4dGVuZHMgRVBhY2thZ2VJbXBsIGltcGxlbWVudHMgQmxvY2tzUGFja2FnZSB7DQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHJpdmF0ZSBFQ2xhc3MgdmFsdWVUeXBlRUNsYXNzID0gbnVsbDsNCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwcml2YXRlIEVDbGFzcyBkaXN0cmlidXRlZFByb3BlcnR5RUNsYXNzID0gbnVsbDsNCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwcml2YXRlIEVDbGFzcyBjb25uZWN0b3JQcm9wZXJ0eUVDbGFzcyA9IG51bGw7DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHJpdmF0ZSBFQ2xhc3MgcGFydGljaXBhbnRQcm9wZXJ0eUVDbGFzcyA9IG51bGw7DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHJpdmF0ZSBFQ2xhc3MgYmluZGluZ0Nvbm5lY3RvckVDbGFzcyA9IG51bGw7DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHJpdmF0ZSBFQ2xhc3MgYmxvY2tFQ2xhc3MgPSBudWxsOw0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXByaXZhdGUgRUNsYXNzIHByb3BlcnR5U3BlY2lmaWNUeXBlRUNsYXNzID0gbnVsbDsNCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwcml2YXRlIEVDbGFzcyBuZXN0ZWRDb25uZWN0b3JFbmRFQ2xhc3MgPSBudWxsOw0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXByaXZhdGUgRUNsYXNzIGVsZW1lbnRQcm9wZXJ0eVBhdGhFQ2xhc3MgPSBudWxsOw0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXByaXZhdGUgRUNsYXNzIGRpcmVjdGVkUmVsYXRpb25zaGlwUHJvcGVydHlQYXRoRUNsYXNzID0gbnVsbDsNCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwcml2YXRlIEVDbGFzcyBlbmRQYXRoTXVsdGlwbGljaXR5RUNsYXNzID0gbnVsbDsNCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwcml2YXRlIEVDbGFzcyBib3VuZFJlZmVyZW5jZUVDbGFzcyA9IG51bGw7DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHJpdmF0ZSBFQ2xhc3MgYWRqdW5jdFByb3BlcnR5RUNsYXNzID0gbnVsbDsNCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwcml2YXRlIEVDbGFzcyBjbGFzc2lmaWVyQmVoYXZpb3JQcm9wZXJ0eUVDbGFzcyA9IG51bGw7DQorDQorCS8qKg0KKwkgKiBDcmVhdGVzIGFuIGluc3RhbmNlIG9mIHRoZSBtb2RlbCA8Yj5QYWNrYWdlPC9iPiwgcmVnaXN0ZXJlZCB3aXRoDQorCSAqIHtAbGluayBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRVBhY2thZ2UuUmVnaXN0cnkgRVBhY2thZ2UuUmVnaXN0cnl9IGJ5IHRoZSBwYWNrYWdlDQorCSAqIHBhY2thZ2UgVVJJIHZhbHVlLg0KKwkgKiA8cD5Ob3RlOiB0aGUgY29ycmVjdCB3YXkgdG8gY3JlYXRlIHRoZSBwYWNrYWdlIGlzIHZpYSB0aGUgc3RhdGljDQorCSAqIGZhY3RvcnkgbWV0aG9kIHtAbGluayAjaW5pdCBpbml0KCl9LCB3aGljaCBhbHNvIHBlcmZvcm1zDQorCSAqIGluaXRpYWxpemF0aW9uIG9mIHRoZSBwYWNrYWdlLCBvciByZXR1cm5zIHRoZSByZWdpc3RlcmVkIHBhY2thZ2UsDQorCSAqIGlmIG9uZSBhbHJlYWR5IGV4aXN0cy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBzZWUgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVQYWNrYWdlLlJlZ2lzdHJ5DQorCSAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmJsb2Nrcy5CbG9ja3NQYWNrYWdlI2VOU19VUkkNCisJICogQHNlZSAjaW5pdCgpDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXByaXZhdGUgQmxvY2tzUGFja2FnZUltcGwoKSB7DQorCQlzdXBlcihlTlNfVVJJLCBCbG9ja3NGYWN0b3J5LmVJTlNUQU5DRSk7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwcml2YXRlIHN0YXRpYyBib29sZWFuIGlzSW5pdGVkID0gZmFsc2U7DQorDQorCS8qKg0KKwkgKiBDcmVhdGVzLCByZWdpc3RlcnMsIGFuZCBpbml0aWFsaXplcyB0aGUgPGI+UGFja2FnZTwvYj4gZm9yIHRoaXMgbW9kZWwsIGFuZCBmb3IgYW55IG90aGVycyB1cG9uIHdoaWNoIGl0IGRlcGVuZHMuDQorCSAqIA0KKwkgKiA8cD5UaGlzIG1ldGhvZCBpcyB1c2VkIHRvIGluaXRpYWxpemUge0BsaW5rIEJsb2Nrc1BhY2thZ2UjZUlOU1RBTkNFfSB3aGVuIHRoYXQgZmllbGQgaXMgYWNjZXNzZWQuDQorCSAqIENsaWVudHMgc2hvdWxkIG5vdCBpbnZva2UgaXQgZGlyZWN0bHkuIEluc3RlYWQsIHRoZXkgc2hvdWxkIHNpbXBseSBhY2Nlc3MgdGhhdCBmaWVsZCB0byBvYnRhaW4gdGhlIHBhY2thZ2UuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAc2VlICNlTlNfVVJJDQorCSAqIEBzZWUgI2NyZWF0ZVBhY2thZ2VDb250ZW50cygpDQorCSAqIEBzZWUgI2luaXRpYWxpemVQYWNrYWdlQ29udGVudHMoKQ0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgc3RhdGljIEJsb2Nrc1BhY2thZ2UgaW5pdCgpIHsNCisJCWlmIChpc0luaXRlZCkgcmV0dXJuIChCbG9ja3NQYWNrYWdlKUVQYWNrYWdlLlJlZ2lzdHJ5LklOU1RBTkNFLmdldEVQYWNrYWdlKEJsb2Nrc1BhY2thZ2UuZU5TX1VSSSk7DQorDQorCQkvLyBPYnRhaW4gb3IgY3JlYXRlIGFuZCByZWdpc3RlciBwYWNrYWdlDQorCQlCbG9ja3NQYWNrYWdlSW1wbCB0aGVCbG9ja3NQYWNrYWdlID0gKEJsb2Nrc1BhY2thZ2VJbXBsKShFUGFja2FnZS5SZWdpc3RyeS5JTlNUQU5DRS5nZXQoZU5TX1VSSSkgaW5zdGFuY2VvZiBCbG9ja3NQYWNrYWdlSW1wbCA/IEVQYWNrYWdlLlJlZ2lzdHJ5LklOU1RBTkNFLmdldChlTlNfVVJJKSA6IG5ldyBCbG9ja3NQYWNrYWdlSW1wbCgpKTsNCisNCisJCWlzSW5pdGVkID0gdHJ1ZTsNCisNCisJCS8vIEluaXRpYWxpemUgc2ltcGxlIGRlcGVuZGVuY2llcw0KKwkJU3RhbmRhcmRQYWNrYWdlLmVJTlNUQU5DRS5lQ2xhc3MoKTsNCisNCisJCS8vIE9idGFpbiBvciBjcmVhdGUgYW5kIHJlZ2lzdGVyIGludGVyZGVwZW5kZW5jaWVzDQorCQlQb3J0YW5kZmxvd3NQYWNrYWdlSW1wbCB0aGVQb3J0YW5kZmxvd3NQYWNrYWdlID0gKFBvcnRhbmRmbG93c1BhY2thZ2VJbXBsKShFUGFja2FnZS5SZWdpc3RyeS5JTlNUQU5DRS5nZXRFUGFja2FnZShQb3J0YW5kZmxvd3NQYWNrYWdlLmVOU19VUkkpIGluc3RhbmNlb2YgUG9ydGFuZGZsb3dzUGFja2FnZUltcGwgPyBFUGFja2FnZS5SZWdpc3RyeS5JTlNUQU5DRS5nZXRFUGFja2FnZShQb3J0YW5kZmxvd3NQYWNrYWdlLmVOU19VUkkpIDogUG9ydGFuZGZsb3dzUGFja2FnZS5lSU5TVEFOQ0UpOw0KKwkJQWN0aXZpdGllc1BhY2thZ2VJbXBsIHRoZUFjdGl2aXRpZXNQYWNrYWdlID0gKEFjdGl2aXRpZXNQYWNrYWdlSW1wbCkoRVBhY2thZ2UuUmVnaXN0cnkuSU5TVEFOQ0UuZ2V0RVBhY2thZ2UoQWN0aXZpdGllc1BhY2thZ2UuZU5TX1VSSSkgaW5zdGFuY2VvZiBBY3Rpdml0aWVzUGFja2FnZUltcGwgPyBFUGFja2FnZS5SZWdpc3RyeS5JTlNUQU5DRS5nZXRFUGFja2FnZShBY3Rpdml0aWVzUGFja2FnZS5lTlNfVVJJKSA6IEFjdGl2aXRpZXNQYWNrYWdlLmVJTlNUQU5DRSk7DQorCQlNb2RlbGVsZW1lbnRzUGFja2FnZUltcGwgdGhlTW9kZWxlbGVtZW50c1BhY2thZ2UgPSAoTW9kZWxlbGVtZW50c1BhY2thZ2VJbXBsKShFUGFja2FnZS5SZWdpc3RyeS5JTlNUQU5DRS5nZXRFUGFja2FnZShNb2RlbGVsZW1lbnRzUGFja2FnZS5lTlNfVVJJKSBpbnN0YW5jZW9mIE1vZGVsZWxlbWVudHNQYWNrYWdlSW1wbCA/IEVQYWNrYWdlLlJlZ2lzdHJ5LklOU1RBTkNFLmdldEVQYWNrYWdlKE1vZGVsZWxlbWVudHNQYWNrYWdlLmVOU19VUkkpIDogTW9kZWxlbGVtZW50c1BhY2thZ2UuZUlOU1RBTkNFKTsNCisJCUNvbnN0cmFpbnRibG9ja3NQYWNrYWdlSW1wbCB0aGVDb25zdHJhaW50YmxvY2tzUGFja2FnZSA9IChDb25zdHJhaW50YmxvY2tzUGFja2FnZUltcGwpKEVQYWNrYWdlLlJlZ2lzdHJ5LklOU1RBTkNFLmdldEVQYWNrYWdlKENvbnN0cmFpbnRibG9ja3NQYWNrYWdlLmVOU19VUkkpIGluc3RhbmNlb2YgQ29uc3RyYWludGJsb2Nrc1BhY2thZ2VJbXBsID8gRVBhY2thZ2UuUmVnaXN0cnkuSU5TVEFOQ0UuZ2V0RVBhY2thZ2UoQ29uc3RyYWludGJsb2Nrc1BhY2thZ2UuZU5TX1VSSSkgOiBDb25zdHJhaW50YmxvY2tzUGFja2FnZS5lSU5TVEFOQ0UpOw0KKwkJQWxsb2NhdGlvbnNQYWNrYWdlSW1wbCB0aGVBbGxvY2F0aW9uc1BhY2thZ2UgPSAoQWxsb2NhdGlvbnNQYWNrYWdlSW1wbCkoRVBhY2thZ2UuUmVnaXN0cnkuSU5TVEFOQ0UuZ2V0RVBhY2thZ2UoQWxsb2NhdGlvbnNQYWNrYWdlLmVOU19VUkkpIGluc3RhbmNlb2YgQWxsb2NhdGlvbnNQYWNrYWdlSW1wbCA/IEVQYWNrYWdlLlJlZ2lzdHJ5LklOU1RBTkNFLmdldEVQYWNrYWdlKEFsbG9jYXRpb25zUGFja2FnZS5lTlNfVVJJKSA6IEFsbG9jYXRpb25zUGFja2FnZS5lSU5TVEFOQ0UpOw0KKwkJUmVxdWlyZW1lbnRzUGFja2FnZUltcGwgdGhlUmVxdWlyZW1lbnRzUGFja2FnZSA9IChSZXF1aXJlbWVudHNQYWNrYWdlSW1wbCkoRVBhY2thZ2UuUmVnaXN0cnkuSU5TVEFOQ0UuZ2V0RVBhY2thZ2UoUmVxdWlyZW1lbnRzUGFja2FnZS5lTlNfVVJJKSBpbnN0YW5jZW9mIFJlcXVpcmVtZW50c1BhY2thZ2VJbXBsID8gRVBhY2thZ2UuUmVnaXN0cnkuSU5TVEFOQ0UuZ2V0RVBhY2thZ2UoUmVxdWlyZW1lbnRzUGFja2FnZS5lTlNfVVJJKSA6IFJlcXVpcmVtZW50c1BhY2thZ2UuZUlOU1RBTkNFKTsNCisJCURlcHJlY2F0ZWRlbGVtZW50c1BhY2thZ2VJbXBsIHRoZURlcHJlY2F0ZWRlbGVtZW50c1BhY2thZ2UgPSAoRGVwcmVjYXRlZGVsZW1lbnRzUGFja2FnZUltcGwpKEVQYWNrYWdlLlJlZ2lzdHJ5LklOU1RBTkNFLmdldEVQYWNrYWdlKERlcHJlY2F0ZWRlbGVtZW50c1BhY2thZ2UuZU5TX1VSSSkgaW5zdGFuY2VvZiBEZXByZWNhdGVkZWxlbWVudHNQYWNrYWdlSW1wbCA/IEVQYWNrYWdlLlJlZ2lzdHJ5LklOU1RBTkNFLmdldEVQYWNrYWdlKERlcHJlY2F0ZWRlbGVtZW50c1BhY2thZ2UuZU5TX1VSSSkgOiBEZXByZWNhdGVkZWxlbWVudHNQYWNrYWdlLmVJTlNUQU5DRSk7DQorDQorCQkvLyBDcmVhdGUgcGFja2FnZSBtZXRhLWRhdGEgb2JqZWN0cw0KKwkJdGhlQmxvY2tzUGFja2FnZS5jcmVhdGVQYWNrYWdlQ29udGVudHMoKTsNCisJCXRoZVBvcnRhbmRmbG93c1BhY2thZ2UuY3JlYXRlUGFja2FnZUNvbnRlbnRzKCk7DQorCQl0aGVBY3Rpdml0aWVzUGFja2FnZS5jcmVhdGVQYWNrYWdlQ29udGVudHMoKTsNCisJCXRoZU1vZGVsZWxlbWVudHNQYWNrYWdlLmNyZWF0ZVBhY2thZ2VDb250ZW50cygpOw0KKwkJdGhlQ29uc3RyYWludGJsb2Nrc1BhY2thZ2UuY3JlYXRlUGFja2FnZUNvbnRlbnRzKCk7DQorCQl0aGVBbGxvY2F0aW9uc1BhY2thZ2UuY3JlYXRlUGFja2FnZUNvbnRlbnRzKCk7DQorCQl0aGVSZXF1aXJlbWVudHNQYWNrYWdlLmNyZWF0ZVBhY2thZ2VDb250ZW50cygpOw0KKwkJdGhlRGVwcmVjYXRlZGVsZW1lbnRzUGFja2FnZS5jcmVhdGVQYWNrYWdlQ29udGVudHMoKTsNCisNCisJCS8vIEluaXRpYWxpemUgY3JlYXRlZCBtZXRhLWRhdGENCisJCXRoZUJsb2Nrc1BhY2thZ2UuaW5pdGlhbGl6ZVBhY2thZ2VDb250ZW50cygpOw0KKwkJdGhlUG9ydGFuZGZsb3dzUGFja2FnZS5pbml0aWFsaXplUGFja2FnZUNvbnRlbnRzKCk7DQorCQl0aGVBY3Rpdml0aWVzUGFja2FnZS5pbml0aWFsaXplUGFja2FnZUNvbnRlbnRzKCk7DQorCQl0aGVNb2RlbGVsZW1lbnRzUGFja2FnZS5pbml0aWFsaXplUGFja2FnZUNvbnRlbnRzKCk7DQorCQl0aGVDb25zdHJhaW50YmxvY2tzUGFja2FnZS5pbml0aWFsaXplUGFja2FnZUNvbnRlbnRzKCk7DQorCQl0aGVBbGxvY2F0aW9uc1BhY2thZ2UuaW5pdGlhbGl6ZVBhY2thZ2VDb250ZW50cygpOw0KKwkJdGhlUmVxdWlyZW1lbnRzUGFja2FnZS5pbml0aWFsaXplUGFja2FnZUNvbnRlbnRzKCk7DQorCQl0aGVEZXByZWNhdGVkZWxlbWVudHNQYWNrYWdlLmluaXRpYWxpemVQYWNrYWdlQ29udGVudHMoKTsNCisNCisJCS8vIE1hcmsgbWV0YS1kYXRhIHRvIGluZGljYXRlIGl0IGNhbid0IGJlIGNoYW5nZWQNCisJCXRoZUJsb2Nrc1BhY2thZ2UuZnJlZXplKCk7DQorDQorICANCisJCS8vIFVwZGF0ZSB0aGUgcmVnaXN0cnkgYW5kIHJldHVybiB0aGUgcGFja2FnZQ0KKwkJRVBhY2thZ2UuUmVnaXN0cnkuSU5TVEFOQ0UucHV0KEJsb2Nrc1BhY2thZ2UuZU5TX1VSSSwgdGhlQmxvY2tzUGFja2FnZSk7DQorCQlyZXR1cm4gdGhlQmxvY2tzUGFja2FnZTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBFQ2xhc3MgZ2V0VmFsdWVUeXBlKCkgew0KKwkJcmV0dXJuIHZhbHVlVHlwZUVDbGFzczsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBFUmVmZXJlbmNlIGdldFZhbHVlVHlwZV9CYXNlX0RhdGFUeXBlKCkgew0KKwkJcmV0dXJuIChFUmVmZXJlbmNlKXZhbHVlVHlwZUVDbGFzcy5nZXRFU3RydWN0dXJhbEZlYXR1cmVzKCkuZ2V0KDApOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIEVSZWZlcmVuY2UgZ2V0VmFsdWVUeXBlX1VuaXQoKSB7DQorCQlyZXR1cm4gKEVSZWZlcmVuY2UpdmFsdWVUeXBlRUNsYXNzLmdldEVTdHJ1Y3R1cmFsRmVhdHVyZXMoKS5nZXQoMSk7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgRVJlZmVyZW5jZSBnZXRWYWx1ZVR5cGVfUXVhbnRpdHlLaW5kKCkgew0KKwkJcmV0dXJuIChFUmVmZXJlbmNlKXZhbHVlVHlwZUVDbGFzcy5nZXRFU3RydWN0dXJhbEZlYXR1cmVzKCkuZ2V0KDIpOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIEVDbGFzcyBnZXREaXN0cmlidXRlZFByb3BlcnR5KCkgew0KKwkJcmV0dXJuIGRpc3RyaWJ1dGVkUHJvcGVydHlFQ2xhc3M7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgRVJlZmVyZW5jZSBnZXREaXN0cmlidXRlZFByb3BlcnR5X0Jhc2VfUHJvcGVydHkoKSB7DQorCQlyZXR1cm4gKEVSZWZlcmVuY2UpZGlzdHJpYnV0ZWRQcm9wZXJ0eUVDbGFzcy5nZXRFU3RydWN0dXJhbEZlYXR1cmVzKCkuZ2V0KDApOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIEVDbGFzcyBnZXRDb25uZWN0b3JQcm9wZXJ0eSgpIHsNCisJCXJldHVybiBjb25uZWN0b3JQcm9wZXJ0eUVDbGFzczsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBFUmVmZXJlbmNlIGdldENvbm5lY3RvclByb3BlcnR5X0Jhc2VfUHJvcGVydHkoKSB7DQorCQlyZXR1cm4gKEVSZWZlcmVuY2UpY29ubmVjdG9yUHJvcGVydHlFQ2xhc3MuZ2V0RVN0cnVjdHVyYWxGZWF0dXJlcygpLmdldCgwKTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBFUmVmZXJlbmNlIGdldENvbm5lY3RvclByb3BlcnR5X0Nvbm5lY3RvcigpIHsNCisJCXJldHVybiAoRVJlZmVyZW5jZSljb25uZWN0b3JQcm9wZXJ0eUVDbGFzcy5nZXRFU3RydWN0dXJhbEZlYXR1cmVzKCkuZ2V0KDEpOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIEVDbGFzcyBnZXRQYXJ0aWNpcGFudFByb3BlcnR5KCkgew0KKwkJcmV0dXJuIHBhcnRpY2lwYW50UHJvcGVydHlFQ2xhc3M7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgRVJlZmVyZW5jZSBnZXRQYXJ0aWNpcGFudFByb3BlcnR5X0Jhc2VfUHJvcGVydHkoKSB7DQorCQlyZXR1cm4gKEVSZWZlcmVuY2UpcGFydGljaXBhbnRQcm9wZXJ0eUVDbGFzcy5nZXRFU3RydWN0dXJhbEZlYXR1cmVzKCkuZ2V0KDApOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIEVSZWZlcmVuY2UgZ2V0UGFydGljaXBhbnRQcm9wZXJ0eV9FbmQoKSB7DQorCQlyZXR1cm4gKEVSZWZlcmVuY2UpcGFydGljaXBhbnRQcm9wZXJ0eUVDbGFzcy5nZXRFU3RydWN0dXJhbEZlYXR1cmVzKCkuZ2V0KDEpOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIEVDbGFzcyBnZXRCaW5kaW5nQ29ubmVjdG9yKCkgew0KKwkJcmV0dXJuIGJpbmRpbmdDb25uZWN0b3JFQ2xhc3M7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgRVJlZmVyZW5jZSBnZXRCaW5kaW5nQ29ubmVjdG9yX0Jhc2VfQ29ubmVjdG9yKCkgew0KKwkJcmV0dXJuIChFUmVmZXJlbmNlKWJpbmRpbmdDb25uZWN0b3JFQ2xhc3MuZ2V0RVN0cnVjdHVyYWxGZWF0dXJlcygpLmdldCgwKTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBFQ2xhc3MgZ2V0QmxvY2soKSB7DQorCQlyZXR1cm4gYmxvY2tFQ2xhc3M7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgRVJlZmVyZW5jZSBnZXRCbG9ja19CYXNlX0NsYXNzKCkgew0KKwkJcmV0dXJuIChFUmVmZXJlbmNlKWJsb2NrRUNsYXNzLmdldEVTdHJ1Y3R1cmFsRmVhdHVyZXMoKS5nZXQoMCk7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgRUF0dHJpYnV0ZSBnZXRCbG9ja19Jc0VuY2Fwc3VsYXRlZCgpIHsNCisJCXJldHVybiAoRUF0dHJpYnV0ZSlibG9ja0VDbGFzcy5nZXRFU3RydWN0dXJhbEZlYXR1cmVzKCkuZ2V0KDEpOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIEVDbGFzcyBnZXRQcm9wZXJ0eVNwZWNpZmljVHlwZSgpIHsNCisJCXJldHVybiBwcm9wZXJ0eVNwZWNpZmljVHlwZUVDbGFzczsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBFUmVmZXJlbmNlIGdldFByb3BlcnR5U3BlY2lmaWNUeXBlX0Jhc2VfQ2xhc3NpZmllcigpIHsNCisJCXJldHVybiAoRVJlZmVyZW5jZSlwcm9wZXJ0eVNwZWNpZmljVHlwZUVDbGFzcy5nZXRFU3RydWN0dXJhbEZlYXR1cmVzKCkuZ2V0KDApOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIEVDbGFzcyBnZXROZXN0ZWRDb25uZWN0b3JFbmQoKSB7DQorCQlyZXR1cm4gbmVzdGVkQ29ubmVjdG9yRW5kRUNsYXNzOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIEVSZWZlcmVuY2UgZ2V0TmVzdGVkQ29ubmVjdG9yRW5kX0Jhc2VfQ29ubmVjdG9yRW5kKCkgew0KKwkJcmV0dXJuIChFUmVmZXJlbmNlKW5lc3RlZENvbm5lY3RvckVuZEVDbGFzcy5nZXRFU3RydWN0dXJhbEZlYXR1cmVzKCkuZ2V0KDApOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIEVDbGFzcyBnZXRFbGVtZW50UHJvcGVydHlQYXRoKCkgew0KKwkJcmV0dXJuIGVsZW1lbnRQcm9wZXJ0eVBhdGhFQ2xhc3M7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgRVJlZmVyZW5jZSBnZXRFbGVtZW50UHJvcGVydHlQYXRoX0Jhc2VfRWxlbWVudCgpIHsNCisJCXJldHVybiAoRVJlZmVyZW5jZSllbGVtZW50UHJvcGVydHlQYXRoRUNsYXNzLmdldEVTdHJ1Y3R1cmFsRmVhdHVyZXMoKS5nZXQoMCk7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgRVJlZmVyZW5jZSBnZXRFbGVtZW50UHJvcGVydHlQYXRoX1Byb3BlcnR5UGF0aCgpIHsNCisJCXJldHVybiAoRVJlZmVyZW5jZSllbGVtZW50UHJvcGVydHlQYXRoRUNsYXNzLmdldEVTdHJ1Y3R1cmFsRmVhdHVyZXMoKS5nZXQoMSk7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgRUNsYXNzIGdldERpcmVjdGVkUmVsYXRpb25zaGlwUHJvcGVydHlQYXRoKCkgew0KKwkJcmV0dXJuIGRpcmVjdGVkUmVsYXRpb25zaGlwUHJvcGVydHlQYXRoRUNsYXNzOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIEVSZWZlcmVuY2UgZ2V0RGlyZWN0ZWRSZWxhdGlvbnNoaXBQcm9wZXJ0eVBhdGhfQmFzZV9EaXJlY3RlZFJlbGF0aW9uc2hpcCgpIHsNCisJCXJldHVybiAoRVJlZmVyZW5jZSlkaXJlY3RlZFJlbGF0aW9uc2hpcFByb3BlcnR5UGF0aEVDbGFzcy5nZXRFU3RydWN0dXJhbEZlYXR1cmVzKCkuZ2V0KDApOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIEVSZWZlcmVuY2UgZ2V0RGlyZWN0ZWRSZWxhdGlvbnNoaXBQcm9wZXJ0eVBhdGhfU291cmNlUHJvcGVydHlQYXRoKCkgew0KKwkJcmV0dXJuIChFUmVmZXJlbmNlKWRpcmVjdGVkUmVsYXRpb25zaGlwUHJvcGVydHlQYXRoRUNsYXNzLmdldEVTdHJ1Y3R1cmFsRmVhdHVyZXMoKS5nZXQoMSk7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgRVJlZmVyZW5jZSBnZXREaXJlY3RlZFJlbGF0aW9uc2hpcFByb3BlcnR5UGF0aF9UYXJnZXRQcm9wZXJ0eVBhdGgoKSB7DQorCQlyZXR1cm4gKEVSZWZlcmVuY2UpZGlyZWN0ZWRSZWxhdGlvbnNoaXBQcm9wZXJ0eVBhdGhFQ2xhc3MuZ2V0RVN0cnVjdHVyYWxGZWF0dXJlcygpLmdldCgyKTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBFUmVmZXJlbmNlIGdldERpcmVjdGVkUmVsYXRpb25zaGlwUHJvcGVydHlQYXRoX1NvdXJjZUNvbnRleHQoKSB7DQorCQlyZXR1cm4gKEVSZWZlcmVuY2UpZGlyZWN0ZWRSZWxhdGlvbnNoaXBQcm9wZXJ0eVBhdGhFQ2xhc3MuZ2V0RVN0cnVjdHVyYWxGZWF0dXJlcygpLmdldCgzKTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBFUmVmZXJlbmNlIGdldERpcmVjdGVkUmVsYXRpb25zaGlwUHJvcGVydHlQYXRoX1RhcmdldENvbnRleHQoKSB7DQorCQlyZXR1cm4gKEVSZWZlcmVuY2UpZGlyZWN0ZWRSZWxhdGlvbnNoaXBQcm9wZXJ0eVBhdGhFQ2xhc3MuZ2V0RVN0cnVjdHVyYWxGZWF0dXJlcygpLmdldCg0KTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBFQ2xhc3MgZ2V0RW5kUGF0aE11bHRpcGxpY2l0eSgpIHsNCisJCXJldHVybiBlbmRQYXRoTXVsdGlwbGljaXR5RUNsYXNzOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIEVSZWZlcmVuY2UgZ2V0RW5kUGF0aE11bHRpcGxpY2l0eV9CYXNlX1Byb3BlcnR5KCkgew0KKwkJcmV0dXJuIChFUmVmZXJlbmNlKWVuZFBhdGhNdWx0aXBsaWNpdHlFQ2xhc3MuZ2V0RVN0cnVjdHVyYWxGZWF0dXJlcygpLmdldCgwKTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBFQXR0cmlidXRlIGdldEVuZFBhdGhNdWx0aXBsaWNpdHlfTG93ZXIoKSB7DQorCQlyZXR1cm4gKEVBdHRyaWJ1dGUpZW5kUGF0aE11bHRpcGxpY2l0eUVDbGFzcy5nZXRFU3RydWN0dXJhbEZlYXR1cmVzKCkuZ2V0KDEpOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIEVBdHRyaWJ1dGUgZ2V0RW5kUGF0aE11bHRpcGxpY2l0eV9VcHBlcigpIHsNCisJCXJldHVybiAoRUF0dHJpYnV0ZSllbmRQYXRoTXVsdGlwbGljaXR5RUNsYXNzLmdldEVTdHJ1Y3R1cmFsRmVhdHVyZXMoKS5nZXQoMik7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgRUNsYXNzIGdldEJvdW5kUmVmZXJlbmNlKCkgew0KKwkJcmV0dXJuIGJvdW5kUmVmZXJlbmNlRUNsYXNzOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIEVSZWZlcmVuY2UgZ2V0Qm91bmRSZWZlcmVuY2VfQm91bmRFbmQoKSB7DQorCQlyZXR1cm4gKEVSZWZlcmVuY2UpYm91bmRSZWZlcmVuY2VFQ2xhc3MuZ2V0RVN0cnVjdHVyYWxGZWF0dXJlcygpLmdldCgwKTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBFUmVmZXJlbmNlIGdldEJvdW5kUmVmZXJlbmNlX0JpbmRpbmdQYXRoKCkgew0KKwkJcmV0dXJuIChFUmVmZXJlbmNlKWJvdW5kUmVmZXJlbmNlRUNsYXNzLmdldEVTdHJ1Y3R1cmFsRmVhdHVyZXMoKS5nZXQoMSk7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgRUNsYXNzIGdldEFkanVuY3RQcm9wZXJ0eSgpIHsNCisJCXJldHVybiBhZGp1bmN0UHJvcGVydHlFQ2xhc3M7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgRVJlZmVyZW5jZSBnZXRBZGp1bmN0UHJvcGVydHlfQmFzZV9Qcm9wZXJ0eSgpIHsNCisJCXJldHVybiAoRVJlZmVyZW5jZSlhZGp1bmN0UHJvcGVydHlFQ2xhc3MuZ2V0RVN0cnVjdHVyYWxGZWF0dXJlcygpLmdldCgwKTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBFUmVmZXJlbmNlIGdldEFkanVuY3RQcm9wZXJ0eV9QcmluY2lwYWwoKSB7DQorCQlyZXR1cm4gKEVSZWZlcmVuY2UpYWRqdW5jdFByb3BlcnR5RUNsYXNzLmdldEVTdHJ1Y3R1cmFsRmVhdHVyZXMoKS5nZXQoMSk7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgRUNsYXNzIGdldENsYXNzaWZpZXJCZWhhdmlvclByb3BlcnR5KCkgew0KKwkJcmV0dXJuIGNsYXNzaWZpZXJCZWhhdmlvclByb3BlcnR5RUNsYXNzOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIEVSZWZlcmVuY2UgZ2V0Q2xhc3NpZmllckJlaGF2aW9yUHJvcGVydHlfQmFzZV9Qcm9wZXJ0eSgpIHsNCisJCXJldHVybiAoRVJlZmVyZW5jZSljbGFzc2lmaWVyQmVoYXZpb3JQcm9wZXJ0eUVDbGFzcy5nZXRFU3RydWN0dXJhbEZlYXR1cmVzKCkuZ2V0KDApOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIEJsb2Nrc0ZhY3RvcnkgZ2V0QmxvY2tzRmFjdG9yeSgpIHsNCisJCXJldHVybiAoQmxvY2tzRmFjdG9yeSlnZXRFRmFjdG9yeUluc3RhbmNlKCk7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwcml2YXRlIGJvb2xlYW4gaXNDcmVhdGVkID0gZmFsc2U7DQorDQorCS8qKg0KKwkgKiBDcmVhdGVzIHRoZSBtZXRhLW1vZGVsIG9iamVjdHMgZm9yIHRoZSBwYWNrYWdlLiAgVGhpcyBtZXRob2QgaXMNCisJICogZ3VhcmRlZCB0byBoYXZlIG5vIGFmZmVjdCBvbiBhbnkgaW52b2NhdGlvbiBidXQgaXRzIGZpcnN0Lg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIHZvaWQgY3JlYXRlUGFja2FnZUNvbnRlbnRzKCkgew0KKwkJaWYgKGlzQ3JlYXRlZCkgcmV0dXJuOw0KKwkJaXNDcmVhdGVkID0gdHJ1ZTsNCisNCisJCS8vIENyZWF0ZSBjbGFzc2VzIGFuZCB0aGVpciBmZWF0dXJlcw0KKwkJdmFsdWVUeXBlRUNsYXNzID0gY3JlYXRlRUNsYXNzKFZBTFVFX1RZUEUpOw0KKwkJY3JlYXRlRVJlZmVyZW5jZSh2YWx1ZVR5cGVFQ2xhc3MsIFZBTFVFX1RZUEVfX0JBU0VfREFUQV9UWVBFKTsNCisJCWNyZWF0ZUVSZWZlcmVuY2UodmFsdWVUeXBlRUNsYXNzLCBWQUxVRV9UWVBFX19VTklUKTsNCisJCWNyZWF0ZUVSZWZlcmVuY2UodmFsdWVUeXBlRUNsYXNzLCBWQUxVRV9UWVBFX19RVUFOVElUWV9LSU5EKTsNCisNCisJCWRpc3RyaWJ1dGVkUHJvcGVydHlFQ2xhc3MgPSBjcmVhdGVFQ2xhc3MoRElTVFJJQlVURURfUFJPUEVSVFkpOw0KKwkJY3JlYXRlRVJlZmVyZW5jZShkaXN0cmlidXRlZFByb3BlcnR5RUNsYXNzLCBESVNUUklCVVRFRF9QUk9QRVJUWV9fQkFTRV9QUk9QRVJUWSk7DQorDQorCQljb25uZWN0b3JQcm9wZXJ0eUVDbGFzcyA9IGNyZWF0ZUVDbGFzcyhDT05ORUNUT1JfUFJPUEVSVFkpOw0KKwkJY3JlYXRlRVJlZmVyZW5jZShjb25uZWN0b3JQcm9wZXJ0eUVDbGFzcywgQ09OTkVDVE9SX1BST1BFUlRZX19CQVNFX1BST1BFUlRZKTsNCisJCWNyZWF0ZUVSZWZlcmVuY2UoY29ubmVjdG9yUHJvcGVydHlFQ2xhc3MsIENPTk5FQ1RPUl9QUk9QRVJUWV9fQ09OTkVDVE9SKTsNCisNCisJCXBhcnRpY2lwYW50UHJvcGVydHlFQ2xhc3MgPSBjcmVhdGVFQ2xhc3MoUEFSVElDSVBBTlRfUFJPUEVSVFkpOw0KKwkJY3JlYXRlRVJlZmVyZW5jZShwYXJ0aWNpcGFudFByb3BlcnR5RUNsYXNzLCBQQVJUSUNJUEFOVF9QUk9QRVJUWV9fQkFTRV9QUk9QRVJUWSk7DQorCQljcmVhdGVFUmVmZXJlbmNlKHBhcnRpY2lwYW50UHJvcGVydHlFQ2xhc3MsIFBBUlRJQ0lQQU5UX1BST1BFUlRZX19FTkQpOw0KKw0KKwkJYmluZGluZ0Nvbm5lY3RvckVDbGFzcyA9IGNyZWF0ZUVDbGFzcyhCSU5ESU5HX0NPTk5FQ1RPUik7DQorCQljcmVhdGVFUmVmZXJlbmNlKGJpbmRpbmdDb25uZWN0b3JFQ2xhc3MsIEJJTkRJTkdfQ09OTkVDVE9SX19CQVNFX0NPTk5FQ1RPUik7DQorDQorCQlibG9ja0VDbGFzcyA9IGNyZWF0ZUVDbGFzcyhCTE9DSyk7DQorCQljcmVhdGVFUmVmZXJlbmNlKGJsb2NrRUNsYXNzLCBCTE9DS19fQkFTRV9DTEFTUyk7DQorCQljcmVhdGVFQXR0cmlidXRlKGJsb2NrRUNsYXNzLCBCTE9DS19fSVNfRU5DQVBTVUxBVEVEKTsNCisNCisJCXByb3BlcnR5U3BlY2lmaWNUeXBlRUNsYXNzID0gY3JlYXRlRUNsYXNzKFBST1BFUlRZX1NQRUNJRklDX1RZUEUpOw0KKwkJY3JlYXRlRVJlZmVyZW5jZShwcm9wZXJ0eVNwZWNpZmljVHlwZUVDbGFzcywgUFJPUEVSVFlfU1BFQ0lGSUNfVFlQRV9fQkFTRV9DTEFTU0lGSUVSKTsNCisNCisJCW5lc3RlZENvbm5lY3RvckVuZEVDbGFzcyA9IGNyZWF0ZUVDbGFzcyhORVNURURfQ09OTkVDVE9SX0VORCk7DQorCQljcmVhdGVFUmVmZXJlbmNlKG5lc3RlZENvbm5lY3RvckVuZEVDbGFzcywgTkVTVEVEX0NPTk5FQ1RPUl9FTkRfX0JBU0VfQ09OTkVDVE9SX0VORCk7DQorDQorCQllbGVtZW50UHJvcGVydHlQYXRoRUNsYXNzID0gY3JlYXRlRUNsYXNzKEVMRU1FTlRfUFJPUEVSVFlfUEFUSCk7DQorCQljcmVhdGVFUmVmZXJlbmNlKGVsZW1lbnRQcm9wZXJ0eVBhdGhFQ2xhc3MsIEVMRU1FTlRfUFJPUEVSVFlfUEFUSF9fQkFTRV9FTEVNRU5UKTsNCisJCWNyZWF0ZUVSZWZlcmVuY2UoZWxlbWVudFByb3BlcnR5UGF0aEVDbGFzcywgRUxFTUVOVF9QUk9QRVJUWV9QQVRIX19QUk9QRVJUWV9QQVRIKTsNCisNCisJCWRpcmVjdGVkUmVsYXRpb25zaGlwUHJvcGVydHlQYXRoRUNsYXNzID0gY3JlYXRlRUNsYXNzKERJUkVDVEVEX1JFTEFUSU9OU0hJUF9QUk9QRVJUWV9QQVRIKTsNCisJCWNyZWF0ZUVSZWZlcmVuY2UoZGlyZWN0ZWRSZWxhdGlvbnNoaXBQcm9wZXJ0eVBhdGhFQ2xhc3MsIERJUkVDVEVEX1JFTEFUSU9OU0hJUF9QUk9QRVJUWV9QQVRIX19CQVNFX0RJUkVDVEVEX1JFTEFUSU9OU0hJUCk7DQorCQljcmVhdGVFUmVmZXJlbmNlKGRpcmVjdGVkUmVsYXRpb25zaGlwUHJvcGVydHlQYXRoRUNsYXNzLCBESVJFQ1RFRF9SRUxBVElPTlNISVBfUFJPUEVSVFlfUEFUSF9fU09VUkNFX1BST1BFUlRZX1BBVEgpOw0KKwkJY3JlYXRlRVJlZmVyZW5jZShkaXJlY3RlZFJlbGF0aW9uc2hpcFByb3BlcnR5UGF0aEVDbGFzcywgRElSRUNURURfUkVMQVRJT05TSElQX1BST1BFUlRZX1BBVEhfX1RBUkdFVF9QUk9QRVJUWV9QQVRIKTsNCisJCWNyZWF0ZUVSZWZlcmVuY2UoZGlyZWN0ZWRSZWxhdGlvbnNoaXBQcm9wZXJ0eVBhdGhFQ2xhc3MsIERJUkVDVEVEX1JFTEFUSU9OU0hJUF9QUk9QRVJUWV9QQVRIX19TT1VSQ0VfQ09OVEVYVCk7DQorCQljcmVhdGVFUmVmZXJlbmNlKGRpcmVjdGVkUmVsYXRpb25zaGlwUHJvcGVydHlQYXRoRUNsYXNzLCBESVJFQ1RFRF9SRUxBVElPTlNISVBfUFJPUEVSVFlfUEFUSF9fVEFSR0VUX0NPTlRFWFQpOw0KKw0KKwkJZW5kUGF0aE11bHRpcGxpY2l0eUVDbGFzcyA9IGNyZWF0ZUVDbGFzcyhFTkRfUEFUSF9NVUxUSVBMSUNJVFkpOw0KKwkJY3JlYXRlRVJlZmVyZW5jZShlbmRQYXRoTXVsdGlwbGljaXR5RUNsYXNzLCBFTkRfUEFUSF9NVUxUSVBMSUNJVFlfX0JBU0VfUFJPUEVSVFkpOw0KKwkJY3JlYXRlRUF0dHJpYnV0ZShlbmRQYXRoTXVsdGlwbGljaXR5RUNsYXNzLCBFTkRfUEFUSF9NVUxUSVBMSUNJVFlfX0xPV0VSKTsNCisJCWNyZWF0ZUVBdHRyaWJ1dGUoZW5kUGF0aE11bHRpcGxpY2l0eUVDbGFzcywgRU5EX1BBVEhfTVVMVElQTElDSVRZX19VUFBFUik7DQorDQorCQlib3VuZFJlZmVyZW5jZUVDbGFzcyA9IGNyZWF0ZUVDbGFzcyhCT1VORF9SRUZFUkVOQ0UpOw0KKwkJY3JlYXRlRVJlZmVyZW5jZShib3VuZFJlZmVyZW5jZUVDbGFzcywgQk9VTkRfUkVGRVJFTkNFX19CT1VORF9FTkQpOw0KKwkJY3JlYXRlRVJlZmVyZW5jZShib3VuZFJlZmVyZW5jZUVDbGFzcywgQk9VTkRfUkVGRVJFTkNFX19CSU5ESU5HX1BBVEgpOw0KKw0KKwkJYWRqdW5jdFByb3BlcnR5RUNsYXNzID0gY3JlYXRlRUNsYXNzKEFESlVOQ1RfUFJPUEVSVFkpOw0KKwkJY3JlYXRlRVJlZmVyZW5jZShhZGp1bmN0UHJvcGVydHlFQ2xhc3MsIEFESlVOQ1RfUFJPUEVSVFlfX0JBU0VfUFJPUEVSVFkpOw0KKwkJY3JlYXRlRVJlZmVyZW5jZShhZGp1bmN0UHJvcGVydHlFQ2xhc3MsIEFESlVOQ1RfUFJPUEVSVFlfX1BSSU5DSVBBTCk7DQorDQorCQljbGFzc2lmaWVyQmVoYXZpb3JQcm9wZXJ0eUVDbGFzcyA9IGNyZWF0ZUVDbGFzcyhDTEFTU0lGSUVSX0JFSEFWSU9SX1BST1BFUlRZKTsNCisJCWNyZWF0ZUVSZWZlcmVuY2UoY2xhc3NpZmllckJlaGF2aW9yUHJvcGVydHlFQ2xhc3MsIENMQVNTSUZJRVJfQkVIQVZJT1JfUFJPUEVSVFlfX0JBU0VfUFJPUEVSVFkpOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHJpdmF0ZSBib29sZWFuIGlzSW5pdGlhbGl6ZWQgPSBmYWxzZTsNCisNCisJLyoqDQorCSAqIENvbXBsZXRlIHRoZSBpbml0aWFsaXphdGlvbiBvZiB0aGUgcGFja2FnZSBhbmQgaXRzIG1ldGEtbW9kZWwuICBUaGlzDQorCSAqIG1ldGhvZCBpcyBndWFyZGVkIHRvIGhhdmUgbm8gYWZmZWN0IG9uIGFueSBpbnZvY2F0aW9uIGJ1dCBpdHMgZmlyc3QuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgdm9pZCBpbml0aWFsaXplUGFja2FnZUNvbnRlbnRzKCkgew0KKwkJaWYgKGlzSW5pdGlhbGl6ZWQpIHJldHVybjsNCisJCWlzSW5pdGlhbGl6ZWQgPSB0cnVlOw0KKw0KKwkJLy8gSW5pdGlhbGl6ZSBwYWNrYWdlDQorCQlzZXROYW1lKGVOQU1FKTsNCisJCXNldE5zUHJlZml4KGVOU19QUkVGSVgpOw0KKwkJc2V0TnNVUkkoZU5TX1VSSSk7DQorDQorCQkvLyBPYnRhaW4gb3RoZXIgZGVwZW5kZW50IHBhY2thZ2VzDQorCQlVTUxQYWNrYWdlIHRoZVVNTFBhY2thZ2UgPSAoVU1MUGFja2FnZSlFUGFja2FnZS5SZWdpc3RyeS5JTlNUQU5DRS5nZXRFUGFja2FnZShVTUxQYWNrYWdlLmVOU19VUkkpOw0KKwkJVHlwZXNQYWNrYWdlIHRoZVR5cGVzUGFja2FnZSA9IChUeXBlc1BhY2thZ2UpRVBhY2thZ2UuUmVnaXN0cnkuSU5TVEFOQ0UuZ2V0RVBhY2thZ2UoVHlwZXNQYWNrYWdlLmVOU19VUkkpOw0KKw0KKwkJLy8gQ3JlYXRlIHR5cGUgcGFyYW1ldGVycw0KKw0KKwkJLy8gU2V0IGJvdW5kcyBmb3IgdHlwZSBwYXJhbWV0ZXJzDQorDQorCQkvLyBBZGQgc3VwZXJ0eXBlcyB0byBjbGFzc2VzDQorCQluZXN0ZWRDb25uZWN0b3JFbmRFQ2xhc3MuZ2V0RVN1cGVyVHlwZXMoKS5hZGQodGhpcy5nZXRFbGVtZW50UHJvcGVydHlQYXRoKCkpOw0KKwkJYm91bmRSZWZlcmVuY2VFQ2xhc3MuZ2V0RVN1cGVyVHlwZXMoKS5hZGQodGhpcy5nZXRFbmRQYXRoTXVsdGlwbGljaXR5KCkpOw0KKw0KKwkJLy8gSW5pdGlhbGl6ZSBjbGFzc2VzLCBmZWF0dXJlcywgYW5kIG9wZXJhdGlvbnM7IGFkZCBwYXJhbWV0ZXJzDQorCQlpbml0RUNsYXNzKHZhbHVlVHlwZUVDbGFzcywgVmFsdWVUeXBlLmNsYXNzLCAiVmFsdWVUeXBlIiwgIUlTX0FCU1RSQUNULCAhSVNfSU5URVJGQUNFLCBJU19HRU5FUkFURURfSU5TVEFOQ0VfQ0xBU1MpOyAvLyROT04tTkxTLTEkDQorCQlpbml0RVJlZmVyZW5jZShnZXRWYWx1ZVR5cGVfQmFzZV9EYXRhVHlwZSgpLCB0aGVVTUxQYWNrYWdlLmdldERhdGFUeXBlKCksIG51bGwsICJiYXNlX0RhdGFUeXBlIiwgbnVsbCwgMCwgMSwgVmFsdWVUeXBlLmNsYXNzLCAhSVNfVFJBTlNJRU5ULCAhSVNfVk9MQVRJTEUsIElTX0NIQU5HRUFCTEUsICFJU19DT01QT1NJVEUsIElTX1JFU09MVkVfUFJPWElFUywgIUlTX1VOU0VUVEFCTEUsIElTX1VOSVFVRSwgIUlTX0RFUklWRUQsICFJU19PUkRFUkVEKTsgLy8kTk9OLU5MUy0xJA0KKwkJaW5pdEVSZWZlcmVuY2UoZ2V0VmFsdWVUeXBlX1VuaXQoKSwgdGhlVU1MUGFja2FnZS5nZXRJbnN0YW5jZVNwZWNpZmljYXRpb24oKSwgbnVsbCwgInVuaXQiLCBudWxsLCAwLCAxLCBWYWx1ZVR5cGUuY2xhc3MsICFJU19UUkFOU0lFTlQsICFJU19WT0xBVElMRSwgSVNfQ0hBTkdFQUJMRSwgIUlTX0NPTVBPU0lURSwgSVNfUkVTT0xWRV9QUk9YSUVTLCAhSVNfVU5TRVRUQUJMRSwgSVNfVU5JUVVFLCAhSVNfREVSSVZFRCwgIUlTX09SREVSRUQpOyAvLyROT04tTkxTLTEkDQorCQlpbml0RVJlZmVyZW5jZShnZXRWYWx1ZVR5cGVfUXVhbnRpdHlLaW5kKCksIHRoZVVNTFBhY2thZ2UuZ2V0SW5zdGFuY2VTcGVjaWZpY2F0aW9uKCksIG51bGwsICJxdWFudGl0eUtpbmQiLCBudWxsLCAwLCAxLCBWYWx1ZVR5cGUuY2xhc3MsICFJU19UUkFOU0lFTlQsICFJU19WT0xBVElMRSwgSVNfQ0hBTkdFQUJMRSwgIUlTX0NPTVBPU0lURSwgSVNfUkVTT0xWRV9QUk9YSUVTLCAhSVNfVU5TRVRUQUJMRSwgSVNfVU5JUVVFLCAhSVNfREVSSVZFRCwgIUlTX09SREVSRUQpOyAvLyROT04tTkxTLTEkDQorDQorCQlpbml0RUNsYXNzKGRpc3RyaWJ1dGVkUHJvcGVydHlFQ2xhc3MsIERpc3RyaWJ1dGVkUHJvcGVydHkuY2xhc3MsICJEaXN0cmlidXRlZFByb3BlcnR5IiwgIUlTX0FCU1RSQUNULCAhSVNfSU5URVJGQUNFLCBJU19HRU5FUkFURURfSU5TVEFOQ0VfQ0xBU1MpOyAvLyROT04tTkxTLTEkDQorCQlpbml0RVJlZmVyZW5jZShnZXREaXN0cmlidXRlZFByb3BlcnR5X0Jhc2VfUHJvcGVydHkoKSwgdGhlVU1MUGFja2FnZS5nZXRQcm9wZXJ0eSgpLCBudWxsLCAiYmFzZV9Qcm9wZXJ0eSIsIG51bGwsIDAsIDEsIERpc3RyaWJ1dGVkUHJvcGVydHkuY2xhc3MsICFJU19UUkFOU0lFTlQsICFJU19WT0xBVElMRSwgSVNfQ0hBTkdFQUJMRSwgIUlTX0NPTVBPU0lURSwgSVNfUkVTT0xWRV9QUk9YSUVTLCAhSVNfVU5TRVRUQUJMRSwgSVNfVU5JUVVFLCAhSVNfREVSSVZFRCwgIUlTX09SREVSRUQpOyAvLyROT04tTkxTLTEkDQorDQorCQlpbml0RUNsYXNzKGNvbm5lY3RvclByb3BlcnR5RUNsYXNzLCBDb25uZWN0b3JQcm9wZXJ0eS5jbGFzcywgIkNvbm5lY3RvclByb3BlcnR5IiwgIUlTX0FCU1RSQUNULCAhSVNfSU5URVJGQUNFLCBJU19HRU5FUkFURURfSU5TVEFOQ0VfQ0xBU1MpOyAvLyROT04tTkxTLTEkDQorCQlpbml0RVJlZmVyZW5jZShnZXRDb25uZWN0b3JQcm9wZXJ0eV9CYXNlX1Byb3BlcnR5KCksIHRoZVVNTFBhY2thZ2UuZ2V0UHJvcGVydHkoKSwgbnVsbCwgImJhc2VfUHJvcGVydHkiLCBudWxsLCAwLCAxLCBDb25uZWN0b3JQcm9wZXJ0eS5jbGFzcywgIUlTX1RSQU5TSUVOVCwgIUlTX1ZPTEFUSUxFLCBJU19DSEFOR0VBQkxFLCAhSVNfQ09NUE9TSVRFLCBJU19SRVNPTFZFX1BST1hJRVMsICFJU19VTlNFVFRBQkxFLCBJU19VTklRVUUsICFJU19ERVJJVkVELCAhSVNfT1JERVJFRCk7IC8vJE5PTi1OTFMtMSQNCisJCWluaXRFUmVmZXJlbmNlKGdldENvbm5lY3RvclByb3BlcnR5X0Nvbm5lY3RvcigpLCB0aGVVTUxQYWNrYWdlLmdldENvbm5lY3RvcigpLCBudWxsLCAiY29ubmVjdG9yIiwgbnVsbCwgMSwgMSwgQ29ubmVjdG9yUHJvcGVydHkuY2xhc3MsICFJU19UUkFOU0lFTlQsICFJU19WT0xBVElMRSwgSVNfQ0hBTkdFQUJMRSwgIUlTX0NPTVBPU0lURSwgSVNfUkVTT0xWRV9QUk9YSUVTLCAhSVNfVU5TRVRUQUJMRSwgSVNfVU5JUVVFLCAhSVNfREVSSVZFRCwgIUlTX09SREVSRUQpOyAvLyROT04tTkxTLTEkDQorDQorCQlpbml0RUNsYXNzKHBhcnRpY2lwYW50UHJvcGVydHlFQ2xhc3MsIFBhcnRpY2lwYW50UHJvcGVydHkuY2xhc3MsICJQYXJ0aWNpcGFudFByb3BlcnR5IiwgIUlTX0FCU1RSQUNULCAhSVNfSU5URVJGQUNFLCBJU19HRU5FUkFURURfSU5TVEFOQ0VfQ0xBU1MpOyAvLyROT04tTkxTLTEkDQorCQlpbml0RVJlZmVyZW5jZShnZXRQYXJ0aWNpcGFudFByb3BlcnR5X0Jhc2VfUHJvcGVydHkoKSwgdGhlVU1MUGFja2FnZS5nZXRQcm9wZXJ0eSgpLCBudWxsLCAiYmFzZV9Qcm9wZXJ0eSIsIG51bGwsIDAsIDEsIFBhcnRpY2lwYW50UHJvcGVydHkuY2xhc3MsICFJU19UUkFOU0lFTlQsICFJU19WT0xBVElMRSwgSVNfQ0hBTkdFQUJMRSwgIUlTX0NPTVBPU0lURSwgSVNfUkVTT0xWRV9QUk9YSUVTLCAhSVNfVU5TRVRUQUJMRSwgSVNfVU5JUVVFLCAhSVNfREVSSVZFRCwgIUlTX09SREVSRUQpOyAvLyROT04tTkxTLTEkDQorCQlpbml0RVJlZmVyZW5jZShnZXRQYXJ0aWNpcGFudFByb3BlcnR5X0VuZCgpLCB0aGVVTUxQYWNrYWdlLmdldFByb3BlcnR5KCksIG51bGwsICJlbmQiLCBudWxsLCAxLCAxLCBQYXJ0aWNpcGFudFByb3BlcnR5LmNsYXNzLCAhSVNfVFJBTlNJRU5ULCAhSVNfVk9MQVRJTEUsIElTX0NIQU5HRUFCTEUsICFJU19DT01QT1NJVEUsIElTX1JFU09MVkVfUFJPWElFUywgIUlTX1VOU0VUVEFCTEUsIElTX1VOSVFVRSwgIUlTX0RFUklWRUQsICFJU19PUkRFUkVEKTsgLy8kTk9OLU5MUy0xJA0KKw0KKwkJaW5pdEVDbGFzcyhiaW5kaW5nQ29ubmVjdG9yRUNsYXNzLCBCaW5kaW5nQ29ubmVjdG9yLmNsYXNzLCAiQmluZGluZ0Nvbm5lY3RvciIsICFJU19BQlNUUkFDVCwgIUlTX0lOVEVSRkFDRSwgSVNfR0VORVJBVEVEX0lOU1RBTkNFX0NMQVNTKTsgLy8kTk9OLU5MUy0xJA0KKwkJaW5pdEVSZWZlcmVuY2UoZ2V0QmluZGluZ0Nvbm5lY3Rvcl9CYXNlX0Nvbm5lY3RvcigpLCB0aGVVTUxQYWNrYWdlLmdldENvbm5lY3RvcigpLCBudWxsLCAiYmFzZV9Db25uZWN0b3IiLCBudWxsLCAwLCAxLCBCaW5kaW5nQ29ubmVjdG9yLmNsYXNzLCAhSVNfVFJBTlNJRU5ULCAhSVNfVk9MQVRJTEUsIElTX0NIQU5HRUFCTEUsICFJU19DT01QT1NJVEUsIElTX1JFU09MVkVfUFJPWElFUywgIUlTX1VOU0VUVEFCTEUsIElTX1VOSVFVRSwgIUlTX0RFUklWRUQsICFJU19PUkRFUkVEKTsgLy8kTk9OLU5MUy0xJA0KKw0KKwkJaW5pdEVDbGFzcyhibG9ja0VDbGFzcywgQmxvY2suY2xhc3MsICJCbG9jayIsICFJU19BQlNUUkFDVCwgIUlTX0lOVEVSRkFDRSwgSVNfR0VORVJBVEVEX0lOU1RBTkNFX0NMQVNTKTsgLy8kTk9OLU5MUy0xJA0KKwkJaW5pdEVSZWZlcmVuY2UoZ2V0QmxvY2tfQmFzZV9DbGFzcygpLCB0aGVVTUxQYWNrYWdlLmdldENsYXNzXygpLCBudWxsLCAiYmFzZV9DbGFzcyIsIG51bGwsIDAsIDEsIEJsb2NrLmNsYXNzLCAhSVNfVFJBTlNJRU5ULCAhSVNfVk9MQVRJTEUsIElTX0NIQU5HRUFCTEUsICFJU19DT01QT1NJVEUsIElTX1JFU09MVkVfUFJPWElFUywgIUlTX1VOU0VUVEFCTEUsIElTX1VOSVFVRSwgIUlTX0RFUklWRUQsICFJU19PUkRFUkVEKTsgLy8kTk9OLU5MUy0xJA0KKwkJaW5pdEVBdHRyaWJ1dGUoZ2V0QmxvY2tfSXNFbmNhcHN1bGF0ZWQoKSwgdGhlVHlwZXNQYWNrYWdlLmdldEJvb2xlYW4oKSwgImlzRW5jYXBzdWxhdGVkIiwgbnVsbCwgMCwgMSwgQmxvY2suY2xhc3MsICFJU19UUkFOU0lFTlQsICFJU19WT0xBVElMRSwgSVNfQ0hBTkdFQUJMRSwgIUlTX1VOU0VUVEFCTEUsICFJU19JRCwgSVNfVU5JUVVFLCAhSVNfREVSSVZFRCwgIUlTX09SREVSRUQpOyAvLyROT04tTkxTLTEkDQorDQorCQlpbml0RUNsYXNzKHByb3BlcnR5U3BlY2lmaWNUeXBlRUNsYXNzLCBQcm9wZXJ0eVNwZWNpZmljVHlwZS5jbGFzcywgIlByb3BlcnR5U3BlY2lmaWNUeXBlIiwgIUlTX0FCU1RSQUNULCAhSVNfSU5URVJGQUNFLCBJU19HRU5FUkFURURfSU5TVEFOQ0VfQ0xBU1MpOyAvLyROT04tTkxTLTEkDQorCQlpbml0RVJlZmVyZW5jZShnZXRQcm9wZXJ0eVNwZWNpZmljVHlwZV9CYXNlX0NsYXNzaWZpZXIoKSwgdGhlVU1MUGFja2FnZS5nZXRDbGFzc2lmaWVyKCksIG51bGwsICJiYXNlX0NsYXNzaWZpZXIiLCBudWxsLCAwLCAxLCBQcm9wZXJ0eVNwZWNpZmljVHlwZS5jbGFzcywgIUlTX1RSQU5TSUVOVCwgIUlTX1ZPTEFUSUxFLCBJU19DSEFOR0VBQkxFLCAhSVNfQ09NUE9TSVRFLCBJU19SRVNPTFZFX1BST1hJRVMsICFJU19VTlNFVFRBQkxFLCBJU19VTklRVUUsICFJU19ERVJJVkVELCAhSVNfT1JERVJFRCk7IC8vJE5PTi1OTFMtMSQNCisNCisJCWluaXRFQ2xhc3MobmVzdGVkQ29ubmVjdG9yRW5kRUNsYXNzLCBOZXN0ZWRDb25uZWN0b3JFbmQuY2xhc3MsICJOZXN0ZWRDb25uZWN0b3JFbmQiLCAhSVNfQUJTVFJBQ1QsICFJU19JTlRFUkZBQ0UsIElTX0dFTkVSQVRFRF9JTlNUQU5DRV9DTEFTUyk7IC8vJE5PTi1OTFMtMSQNCisJCWluaXRFUmVmZXJlbmNlKGdldE5lc3RlZENvbm5lY3RvckVuZF9CYXNlX0Nvbm5lY3RvckVuZCgpLCB0aGVVTUxQYWNrYWdlLmdldENvbm5lY3RvckVuZCgpLCBudWxsLCAiYmFzZV9Db25uZWN0b3JFbmQiLCBudWxsLCAwLCAxLCBOZXN0ZWRDb25uZWN0b3JFbmQuY2xhc3MsICFJU19UUkFOU0lFTlQsICFJU19WT0xBVElMRSwgSVNfQ0hBTkdFQUJMRSwgIUlTX0NPTVBPU0lURSwgSVNfUkVTT0xWRV9QUk9YSUVTLCAhSVNfVU5TRVRUQUJMRSwgSVNfVU5JUVVFLCAhSVNfREVSSVZFRCwgIUlTX09SREVSRUQpOyAvLyROT04tTkxTLTEkDQorDQorCQlpbml0RUNsYXNzKGVsZW1lbnRQcm9wZXJ0eVBhdGhFQ2xhc3MsIEVsZW1lbnRQcm9wZXJ0eVBhdGguY2xhc3MsICJFbGVtZW50UHJvcGVydHlQYXRoIiwgSVNfQUJTVFJBQ1QsICFJU19JTlRFUkZBQ0UsIElTX0dFTkVSQVRFRF9JTlNUQU5DRV9DTEFTUyk7IC8vJE5PTi1OTFMtMSQNCisJCWluaXRFUmVmZXJlbmNlKGdldEVsZW1lbnRQcm9wZXJ0eVBhdGhfQmFzZV9FbGVtZW50KCksIHRoZVVNTFBhY2thZ2UuZ2V0RWxlbWVudCgpLCBudWxsLCAiYmFzZV9FbGVtZW50IiwgbnVsbCwgMCwgMSwgRWxlbWVudFByb3BlcnR5UGF0aC5jbGFzcywgIUlTX1RSQU5TSUVOVCwgIUlTX1ZPTEFUSUxFLCBJU19DSEFOR0VBQkxFLCAhSVNfQ09NUE9TSVRFLCBJU19SRVNPTFZFX1BST1hJRVMsICFJU19VTlNFVFRBQkxFLCBJU19VTklRVUUsICFJU19ERVJJVkVELCAhSVNfT1JERVJFRCk7IC8vJE5PTi1OTFMtMSQNCisJCWluaXRFUmVmZXJlbmNlKGdldEVsZW1lbnRQcm9wZXJ0eVBhdGhfUHJvcGVydHlQYXRoKCksIHRoZVVNTFBhY2thZ2UuZ2V0UHJvcGVydHkoKSwgbnVsbCwgInByb3BlcnR5UGF0aCIsIG51bGwsIDEsIC0xLCBFbGVtZW50UHJvcGVydHlQYXRoLmNsYXNzLCAhSVNfVFJBTlNJRU5ULCAhSVNfVk9MQVRJTEUsIElTX0NIQU5HRUFCTEUsICFJU19DT01QT1NJVEUsIElTX1JFU09MVkVfUFJPWElFUywgIUlTX1VOU0VUVEFCTEUsICFJU19VTklRVUUsICFJU19ERVJJVkVELCBJU19PUkRFUkVEKTsgLy8kTk9OLU5MUy0xJA0KKw0KKwkJaW5pdEVDbGFzcyhkaXJlY3RlZFJlbGF0aW9uc2hpcFByb3BlcnR5UGF0aEVDbGFzcywgRGlyZWN0ZWRSZWxhdGlvbnNoaXBQcm9wZXJ0eVBhdGguY2xhc3MsICJEaXJlY3RlZFJlbGF0aW9uc2hpcFByb3BlcnR5UGF0aCIsIElTX0FCU1RSQUNULCAhSVNfSU5URVJGQUNFLCBJU19HRU5FUkFURURfSU5TVEFOQ0VfQ0xBU1MpOyAvLyROT04tTkxTLTEkDQorCQlpbml0RVJlZmVyZW5jZShnZXREaXJlY3RlZFJlbGF0aW9uc2hpcFByb3BlcnR5UGF0aF9CYXNlX0RpcmVjdGVkUmVsYXRpb25zaGlwKCksIHRoZVVNTFBhY2thZ2UuZ2V0RGlyZWN0ZWRSZWxhdGlvbnNoaXAoKSwgbnVsbCwgImJhc2VfRGlyZWN0ZWRSZWxhdGlvbnNoaXAiLCBudWxsLCAwLCAxLCBEaXJlY3RlZFJlbGF0aW9uc2hpcFByb3BlcnR5UGF0aC5jbGFzcywgIUlTX1RSQU5TSUVOVCwgIUlTX1ZPTEFUSUxFLCBJU19DSEFOR0VBQkxFLCAhSVNfQ09NUE9TSVRFLCBJU19SRVNPTFZFX1BST1hJRVMsICFJU19VTlNFVFRBQkxFLCBJU19VTklRVUUsICFJU19ERVJJVkVELCAhSVNfT1JERVJFRCk7IC8vJE5PTi1OTFMtMSQNCisJCWluaXRFUmVmZXJlbmNlKGdldERpcmVjdGVkUmVsYXRpb25zaGlwUHJvcGVydHlQYXRoX1NvdXJjZVByb3BlcnR5UGF0aCgpLCB0aGVVTUxQYWNrYWdlLmdldFByb3BlcnR5KCksIG51bGwsICJzb3VyY2VQcm9wZXJ0eVBhdGgiLCBudWxsLCAwLCAtMSwgRGlyZWN0ZWRSZWxhdGlvbnNoaXBQcm9wZXJ0eVBhdGguY2xhc3MsICFJU19UUkFOU0lFTlQsICFJU19WT0xBVElMRSwgSVNfQ0hBTkdFQUJMRSwgIUlTX0NPTVBPU0lURSwgSVNfUkVTT0xWRV9QUk9YSUVTLCAhSVNfVU5TRVRUQUJMRSwgIUlTX1VOSVFVRSwgIUlTX0RFUklWRUQsIElTX09SREVSRUQpOyAvLyROT04tTkxTLTEkDQorCQlpbml0RVJlZmVyZW5jZShnZXREaXJlY3RlZFJlbGF0aW9uc2hpcFByb3BlcnR5UGF0aF9UYXJnZXRQcm9wZXJ0eVBhdGgoKSwgdGhlVU1MUGFja2FnZS5nZXRQcm9wZXJ0eSgpLCBudWxsLCAidGFyZ2V0UHJvcGVydHlQYXRoIiwgbnVsbCwgMCwgLTEsIERpcmVjdGVkUmVsYXRpb25zaGlwUHJvcGVydHlQYXRoLmNsYXNzLCAhSVNfVFJBTlNJRU5ULCAhSVNfVk9MQVRJTEUsIElTX0NIQU5HRUFCTEUsICFJU19DT01QT1NJVEUsIElTX1JFU09MVkVfUFJPWElFUywgIUlTX1VOU0VUVEFCTEUsICFJU19VTklRVUUsICFJU19ERVJJVkVELCBJU19PUkRFUkVEKTsgLy8kTk9OLU5MUy0xJA0KKwkJaW5pdEVSZWZlcmVuY2UoZ2V0RGlyZWN0ZWRSZWxhdGlvbnNoaXBQcm9wZXJ0eVBhdGhfU291cmNlQ29udGV4dCgpLCB0aGVVTUxQYWNrYWdlLmdldENsYXNzaWZpZXIoKSwgbnVsbCwgInNvdXJjZUNvbnRleHQiLCBudWxsLCAwLCAxLCBEaXJlY3RlZFJlbGF0aW9uc2hpcFByb3BlcnR5UGF0aC5jbGFzcywgIUlTX1RSQU5TSUVOVCwgIUlTX1ZPTEFUSUxFLCBJU19DSEFOR0VBQkxFLCAhSVNfQ09NUE9TSVRFLCBJU19SRVNPTFZFX1BST1hJRVMsICFJU19VTlNFVFRBQkxFLCBJU19VTklRVUUsICFJU19ERVJJVkVELCAhSVNfT1JERVJFRCk7IC8vJE5PTi1OTFMtMSQNCisJCWluaXRFUmVmZXJlbmNlKGdldERpcmVjdGVkUmVsYXRpb25zaGlwUHJvcGVydHlQYXRoX1RhcmdldENvbnRleHQoKSwgdGhlVU1MUGFja2FnZS5nZXRDbGFzc2lmaWVyKCksIG51bGwsICJ0YXJnZXRDb250ZXh0IiwgbnVsbCwgMCwgMSwgRGlyZWN0ZWRSZWxhdGlvbnNoaXBQcm9wZXJ0eVBhdGguY2xhc3MsICFJU19UUkFOU0lFTlQsICFJU19WT0xBVElMRSwgSVNfQ0hBTkdFQUJMRSwgIUlTX0NPTVBPU0lURSwgSVNfUkVTT0xWRV9QUk9YSUVTLCAhSVNfVU5TRVRUQUJMRSwgSVNfVU5JUVVFLCAhSVNfREVSSVZFRCwgIUlTX09SREVSRUQpOyAvLyROT04tTkxTLTEkDQorDQorCQlpbml0RUNsYXNzKGVuZFBhdGhNdWx0aXBsaWNpdHlFQ2xhc3MsIEVuZFBhdGhNdWx0aXBsaWNpdHkuY2xhc3MsICJFbmRQYXRoTXVsdGlwbGljaXR5IiwgIUlTX0FCU1RSQUNULCAhSVNfSU5URVJGQUNFLCBJU19HRU5FUkFURURfSU5TVEFOQ0VfQ0xBU1MpOyAvLyROT04tTkxTLTEkDQorCQlpbml0RVJlZmVyZW5jZShnZXRFbmRQYXRoTXVsdGlwbGljaXR5X0Jhc2VfUHJvcGVydHkoKSwgdGhlVU1MUGFja2FnZS5nZXRQcm9wZXJ0eSgpLCBudWxsLCAiYmFzZV9Qcm9wZXJ0eSIsIG51bGwsIDAsIDEsIEVuZFBhdGhNdWx0aXBsaWNpdHkuY2xhc3MsICFJU19UUkFOU0lFTlQsICFJU19WT0xBVElMRSwgSVNfQ0hBTkdFQUJMRSwgIUlTX0NPTVBPU0lURSwgSVNfUkVTT0xWRV9QUk9YSUVTLCAhSVNfVU5TRVRUQUJMRSwgSVNfVU5JUVVFLCAhSVNfREVSSVZFRCwgIUlTX09SREVSRUQpOyAvLyROT04tTkxTLTEkDQorCQlpbml0RUF0dHJpYnV0ZShnZXRFbmRQYXRoTXVsdGlwbGljaXR5X0xvd2VyKCksIHRoZVR5cGVzUGFja2FnZS5nZXRJbnRlZ2VyKCksICJsb3dlciIsICIwIiwgMCwgMSwgRW5kUGF0aE11bHRpcGxpY2l0eS5jbGFzcywgIUlTX1RSQU5TSUVOVCwgIUlTX1ZPTEFUSUxFLCBJU19DSEFOR0VBQkxFLCAhSVNfVU5TRVRUQUJMRSwgIUlTX0lELCBJU19VTklRVUUsICFJU19ERVJJVkVELCAhSVNfT1JERVJFRCk7IC8vJE5PTi1OTFMtMSQgLy8kTk9OLU5MUy0yJA0KKwkJaW5pdEVBdHRyaWJ1dGUoZ2V0RW5kUGF0aE11bHRpcGxpY2l0eV9VcHBlcigpLCB0aGVUeXBlc1BhY2thZ2UuZ2V0VW5saW1pdGVkTmF0dXJhbCgpLCAidXBwZXIiLCAiLTEiLCAwLCAxLCBFbmRQYXRoTXVsdGlwbGljaXR5LmNsYXNzLCAhSVNfVFJBTlNJRU5ULCAhSVNfVk9MQVRJTEUsIElTX0NIQU5HRUFCTEUsICFJU19VTlNFVFRBQkxFLCAhSVNfSUQsIElTX1VOSVFVRSwgIUlTX0RFUklWRUQsICFJU19PUkRFUkVEKTsgLy8kTk9OLU5MUy0xJCAvLyROT04tTkxTLTIkDQorDQorCQlpbml0RUNsYXNzKGJvdW5kUmVmZXJlbmNlRUNsYXNzLCBCb3VuZFJlZmVyZW5jZS5jbGFzcywgIkJvdW5kUmVmZXJlbmNlIiwgIUlTX0FCU1RSQUNULCAhSVNfSU5URVJGQUNFLCBJU19HRU5FUkFURURfSU5TVEFOQ0VfQ0xBU1MpOyAvLyROT04tTkxTLTEkDQorCQlpbml0RVJlZmVyZW5jZShnZXRCb3VuZFJlZmVyZW5jZV9Cb3VuZEVuZCgpLCB0aGVVTUxQYWNrYWdlLmdldENvbm5lY3RvckVuZCgpLCBudWxsLCAiYm91bmRFbmQiLCBudWxsLCAxLCAxLCBCb3VuZFJlZmVyZW5jZS5jbGFzcywgIUlTX1RSQU5TSUVOVCwgIUlTX1ZPTEFUSUxFLCBJU19DSEFOR0VBQkxFLCAhSVNfQ09NUE9TSVRFLCBJU19SRVNPTFZFX1BST1hJRVMsICFJU19VTlNFVFRBQkxFLCBJU19VTklRVUUsICFJU19ERVJJVkVELCAhSVNfT1JERVJFRCk7IC8vJE5PTi1OTFMtMSQNCisJCWluaXRFUmVmZXJlbmNlKGdldEJvdW5kUmVmZXJlbmNlX0JpbmRpbmdQYXRoKCksIHRoZVVNTFBhY2thZ2UuZ2V0UHJvcGVydHkoKSwgbnVsbCwgImJpbmRpbmdQYXRoIiwgbnVsbCwgMSwgLTEsIEJvdW5kUmVmZXJlbmNlLmNsYXNzLCBJU19UUkFOU0lFTlQsIElTX1ZPTEFUSUxFLCBJU19DSEFOR0VBQkxFLCAhSVNfQ09NUE9TSVRFLCBJU19SRVNPTFZFX1BST1hJRVMsICFJU19VTlNFVFRBQkxFLCAhSVNfVU5JUVVFLCBJU19ERVJJVkVELCBJU19PUkRFUkVEKTsgLy8kTk9OLU5MUy0xJA0KKw0KKwkJaW5pdEVDbGFzcyhhZGp1bmN0UHJvcGVydHlFQ2xhc3MsIEFkanVuY3RQcm9wZXJ0eS5jbGFzcywgIkFkanVuY3RQcm9wZXJ0eSIsICFJU19BQlNUUkFDVCwgIUlTX0lOVEVSRkFDRSwgSVNfR0VORVJBVEVEX0lOU1RBTkNFX0NMQVNTKTsgLy8kTk9OLU5MUy0xJA0KKwkJaW5pdEVSZWZlcmVuY2UoZ2V0QWRqdW5jdFByb3BlcnR5X0Jhc2VfUHJvcGVydHkoKSwgdGhlVU1MUGFja2FnZS5nZXRQcm9wZXJ0eSgpLCBudWxsLCAiYmFzZV9Qcm9wZXJ0eSIsIG51bGwsIDAsIDEsIEFkanVuY3RQcm9wZXJ0eS5jbGFzcywgIUlTX1RSQU5TSUVOVCwgIUlTX1ZPTEFUSUxFLCBJU19DSEFOR0VBQkxFLCAhSVNfQ09NUE9TSVRFLCBJU19SRVNPTFZFX1BST1hJRVMsICFJU19VTlNFVFRBQkxFLCBJU19VTklRVUUsICFJU19ERVJJVkVELCAhSVNfT1JERVJFRCk7IC8vJE5PTi1OTFMtMSQNCisJCWluaXRFUmVmZXJlbmNlKGdldEFkanVuY3RQcm9wZXJ0eV9QcmluY2lwYWwoKSwgdGhlVU1MUGFja2FnZS5nZXRFbGVtZW50KCksIG51bGwsICJwcmluY2lwYWwiLCBudWxsLCAxLCAxLCBBZGp1bmN0UHJvcGVydHkuY2xhc3MsICFJU19UUkFOU0lFTlQsICFJU19WT0xBVElMRSwgSVNfQ0hBTkdFQUJMRSwgIUlTX0NPTVBPU0lURSwgSVNfUkVTT0xWRV9QUk9YSUVTLCAhSVNfVU5TRVRUQUJMRSwgSVNfVU5JUVVFLCAhSVNfREVSSVZFRCwgIUlTX09SREVSRUQpOyAvLyROT04tTkxTLTEkDQorDQorCQlpbml0RUNsYXNzKGNsYXNzaWZpZXJCZWhhdmlvclByb3BlcnR5RUNsYXNzLCBDbGFzc2lmaWVyQmVoYXZpb3JQcm9wZXJ0eS5jbGFzcywgIkNsYXNzaWZpZXJCZWhhdmlvclByb3BlcnR5IiwgIUlTX0FCU1RSQUNULCAhSVNfSU5URVJGQUNFLCBJU19HRU5FUkFURURfSU5TVEFOQ0VfQ0xBU1MpOyAvLyROT04tTkxTLTEkDQorCQlpbml0RVJlZmVyZW5jZShnZXRDbGFzc2lmaWVyQmVoYXZpb3JQcm9wZXJ0eV9CYXNlX1Byb3BlcnR5KCksIHRoZVVNTFBhY2thZ2UuZ2V0UHJvcGVydHkoKSwgbnVsbCwgImJhc2VfUHJvcGVydHkiLCBudWxsLCAwLCAxLCBDbGFzc2lmaWVyQmVoYXZpb3JQcm9wZXJ0eS5jbGFzcywgIUlTX1RSQU5TSUVOVCwgIUlTX1ZPTEFUSUxFLCBJU19DSEFOR0VBQkxFLCAhSVNfQ09NUE9TSVRFLCBJU19SRVNPTFZFX1BST1hJRVMsICFJU19VTlNFVFRBQkxFLCBJU19VTklRVUUsICFJU19ERVJJVkVELCAhSVNfT1JERVJFRCk7IC8vJE5PTi1OTFMtMSQNCisNCisJCS8vIENyZWF0ZSByZXNvdXJjZQ0KKwkJY3JlYXRlUmVzb3VyY2UoZU5TX1VSSSk7DQorDQorCQkvLyBDcmVhdGUgYW5ub3RhdGlvbnMNCisJCS8vIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvdW1sMi8yLjAuMC9VTUwNCisJCWNyZWF0ZVVNTEFubm90YXRpb25zKCk7DQorCX0NCisNCisJLyoqDQorCSAqIEluaXRpYWxpemVzIHRoZSBhbm5vdGF0aW9ucyBmb3IgPGI+aHR0cDovL3d3dy5lY2xpcHNlLm9yZy91bWwyLzIuMC4wL1VNTDwvYj4uDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwcm90ZWN0ZWQgdm9pZCBjcmVhdGVVTUxBbm5vdGF0aW9ucygpIHsNCisJCVN0cmluZyBzb3VyY2UgPSAiaHR0cDovL3d3dy5lY2xpcHNlLm9yZy91bWwyLzIuMC4wL1VNTCI7IC8vJE5PTi1OTFMtMSQJDQorCQlhZGRBbm5vdGF0aW9uDQorCQkgICh0aGlzLCANCisJCSAgIHNvdXJjZSwgDQorCQkgICBuZXcgU3RyaW5nW10gew0KKwkJCSAib3JpZ2luYWxOYW1lIiwgIkJsb2NrcyIgLy8kTk9OLU5MUy0xJCAvLyROT04tTkxTLTIkDQorCQkgICB9KTsNCisJfQ0KKw0KK30gLy9CbG9ja3NQYWNrYWdlSW1wbA0KZGlmZiAtLWdpdCBhL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L2Jsb2Nrcy9pbnRlcm5hbC9pbXBsL0JvdW5kUmVmZXJlbmNlSW1wbC5qYXZhIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvYmxvY2tzL2ludGVybmFsL2ltcGwvQm91bmRSZWZlcmVuY2VJbXBsLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDQwZDY5MAotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L2Jsb2Nrcy9pbnRlcm5hbC9pbXBsL0JvdW5kUmVmZXJlbmNlSW1wbC5qYXZhCkBAIC0wLDAgKzEsMjIwIEBACisvKioNCisgKiBDb3B5cmlnaHQgKGMpIDIwMTUgQ0VBIExJU1QuDQorICogDQorICogIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCisgKiAgYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQorICogIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQorICogIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICovDQorcGFja2FnZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYmxvY2tzLmludGVybmFsLmltcGw7DQorDQoraW1wb3J0IGphdmEudXRpbC5Db2xsZWN0aW9uOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY29tbW9uLm5vdGlmeS5Ob3RpZmljYXRpb247DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jb21tb24udXRpbC5FTGlzdDsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVDbGFzczsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkludGVybmFsRU9iamVjdDsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLmltcGwuRU5vdGlmaWNhdGlvbkltcGw7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5ibG9ja3MuQmxvY2tzUGFja2FnZTsNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmJsb2Nrcy5Cb3VuZFJlZmVyZW5jZTsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UudW1sMi51bWwuQ29ubmVjdG9yRW5kOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS51bWwyLnVtbC5Qcm9wZXJ0eTsNCitpbXBvcnQgb3JnLmVjbGlwc2UudW1sMi51bWwuVHlwZTsNCisNCisvKioNCisgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKyAqIEFuIGltcGxlbWVudGF0aW9uIG9mIHRoZSBtb2RlbCBvYmplY3QgJzxlbT48Yj5Cb3VuZCBSZWZlcmVuY2U8L2I+PC9lbT4nLg0KKyAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKyAqIDxwPg0KKyAqIFRoZSBmb2xsb3dpbmcgZmVhdHVyZXMgYXJlIGltcGxlbWVudGVkOg0KKyAqIDx1bD4NCisgKiAgIDxsaT57QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmJsb2Nrcy5pbnRlcm5hbC5pbXBsLkJvdW5kUmVmZXJlbmNlSW1wbCNnZXRCb3VuZEVuZCA8ZW0+Qm91bmQgRW5kPC9lbT59PC9saT4NCisgKiAgIDxsaT57QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmJsb2Nrcy5pbnRlcm5hbC5pbXBsLkJvdW5kUmVmZXJlbmNlSW1wbCNnZXRCaW5kaW5nUGF0aCA8ZW0+QmluZGluZyBQYXRoPC9lbT59PC9saT4NCisgKiA8L3VsPg0KKyAqIDwvcD4NCisgKg0KKyAqIEBnZW5lcmF0ZWQNCisgKi8NCitwdWJsaWMgY2xhc3MgQm91bmRSZWZlcmVuY2VJbXBsIGV4dGVuZHMgRW5kUGF0aE11bHRpcGxpY2l0eUltcGwgaW1wbGVtZW50cyBCb3VuZFJlZmVyZW5jZSB7DQorCS8qKg0KKwkgKiBUaGUgY2FjaGVkIHZhbHVlIG9mIHRoZSAne0BsaW5rICNnZXRCb3VuZEVuZCgpIDxlbT5Cb3VuZCBFbmQ8L2VtPn0nIHJlZmVyZW5jZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBzZWUgI2dldEJvdW5kRW5kKCkNCisJICogQGdlbmVyYXRlZA0KKwkgKiBAb3JkZXJlZA0KKwkgKi8NCisJcHJvdGVjdGVkIENvbm5lY3RvckVuZCBib3VuZEVuZDsNCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwcm90ZWN0ZWQgQm91bmRSZWZlcmVuY2VJbXBsKCkgew0KKwkJc3VwZXIoKTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwcm90ZWN0ZWQgRUNsYXNzIGVTdGF0aWNDbGFzcygpIHsNCisJCXJldHVybiBCbG9ja3NQYWNrYWdlLkxpdGVyYWxzLkJPVU5EX1JFRkVSRU5DRTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBDb25uZWN0b3JFbmQgZ2V0Qm91bmRFbmQoKSB7DQorCQlpZiAoYm91bmRFbmQgIT0gbnVsbCAmJiBib3VuZEVuZC5lSXNQcm94eSgpKSB7DQorCQkJSW50ZXJuYWxFT2JqZWN0IG9sZEJvdW5kRW5kID0gKEludGVybmFsRU9iamVjdClib3VuZEVuZDsNCisJCQlib3VuZEVuZCA9IChDb25uZWN0b3JFbmQpZVJlc29sdmVQcm94eShvbGRCb3VuZEVuZCk7DQorCQkJaWYgKGJvdW5kRW5kICE9IG9sZEJvdW5kRW5kKSB7DQorCQkJCWlmIChlTm90aWZpY2F0aW9uUmVxdWlyZWQoKSkNCisJCQkJCWVOb3RpZnkobmV3IEVOb3RpZmljYXRpb25JbXBsKHRoaXMsIE5vdGlmaWNhdGlvbi5SRVNPTFZFLCBCbG9ja3NQYWNrYWdlLkJPVU5EX1JFRkVSRU5DRV9fQk9VTkRfRU5ELCBvbGRCb3VuZEVuZCwgYm91bmRFbmQpKTsNCisJCQl9DQorCQl9DQorCQlyZXR1cm4gYm91bmRFbmQ7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgQ29ubmVjdG9yRW5kIGJhc2ljR2V0Qm91bmRFbmQoKSB7DQorCQlyZXR1cm4gYm91bmRFbmQ7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgdm9pZCBzZXRCb3VuZEVuZChDb25uZWN0b3JFbmQgbmV3Qm91bmRFbmQpIHsNCisJCUNvbm5lY3RvckVuZCBvbGRCb3VuZEVuZCA9IGJvdW5kRW5kOw0KKwkJYm91bmRFbmQgPSBuZXdCb3VuZEVuZDsNCisJCWlmIChlTm90aWZpY2F0aW9uUmVxdWlyZWQoKSkNCisJCQllTm90aWZ5KG5ldyBFTm90aWZpY2F0aW9uSW1wbCh0aGlzLCBOb3RpZmljYXRpb24uU0VULCBCbG9ja3NQYWNrYWdlLkJPVU5EX1JFRkVSRU5DRV9fQk9VTkRfRU5ELCBvbGRCb3VuZEVuZCwgYm91bmRFbmQpKTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBFTGlzdDxQcm9wZXJ0eT4gZ2V0QmluZGluZ1BhdGgoKSB7DQorCQkvLyBUT0RPOiBpbXBsZW1lbnQgdGhpcyBtZXRob2QgdG8gcmV0dXJuIHRoZSAnQmluZGluZyBQYXRoJyByZWZlcmVuY2UgbGlzdA0KKwkJLy8gRW5zdXJlIHRoYXQgeW91IHJlbW92ZSBAZ2VuZXJhdGVkIG9yIG1hcmsgaXQgQGdlbmVyYXRlZCBOT1QNCisJCXRocm93IG5ldyBVbnN1cHBvcnRlZE9wZXJhdGlvbkV4Y2VwdGlvbigpOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIFByb3BlcnR5IGdldEJpbmRpbmdQYXRoKFN0cmluZyBuYW1lLCBUeXBlIHR5cGUpIHsNCisJCXJldHVybiBnZXRCaW5kaW5nUGF0aChuYW1lLCB0eXBlLCBmYWxzZSwgbnVsbCk7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgUHJvcGVydHkgZ2V0QmluZGluZ1BhdGgoU3RyaW5nIG5hbWUsIFR5cGUgdHlwZSwgYm9vbGVhbiBpZ25vcmVDYXNlLCBFQ2xhc3MgZUNsYXNzKSB7DQorCQliaW5kaW5nUGF0aExvb3A6IGZvciAoUHJvcGVydHkgYmluZGluZ1BhdGggOiBnZXRCaW5kaW5nUGF0aCgpKSB7DQorCQkJaWYgKGVDbGFzcyAhPSBudWxsICYmICFlQ2xhc3MuaXNJbnN0YW5jZShiaW5kaW5nUGF0aCkpDQorCQkJCWNvbnRpbnVlIGJpbmRpbmdQYXRoTG9vcDsNCisJCQlpZiAobmFtZSAhPSBudWxsICYmICEoaWdub3JlQ2FzZSA/IG5hbWUuZXF1YWxzSWdub3JlQ2FzZShiaW5kaW5nUGF0aC5nZXROYW1lKCkpIDogbmFtZS5lcXVhbHMoYmluZGluZ1BhdGguZ2V0TmFtZSgpKSkpDQorCQkJCWNvbnRpbnVlIGJpbmRpbmdQYXRoTG9vcDsNCisJCQlpZiAodHlwZSAhPSBudWxsICYmICF0eXBlLmVxdWFscyhiaW5kaW5nUGF0aC5nZXRUeXBlKCkpKQ0KKwkJCQljb250aW51ZSBiaW5kaW5nUGF0aExvb3A7DQorCQkJcmV0dXJuIGJpbmRpbmdQYXRoOw0KKwkJfQ0KKwkJcmV0dXJuIG51bGw7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIE9iamVjdCBlR2V0KGludCBmZWF0dXJlSUQsIGJvb2xlYW4gcmVzb2x2ZSwgYm9vbGVhbiBjb3JlVHlwZSkgew0KKwkJc3dpdGNoIChmZWF0dXJlSUQpIHsNCisJCQljYXNlIEJsb2Nrc1BhY2thZ2UuQk9VTkRfUkVGRVJFTkNFX19CT1VORF9FTkQ6DQorCQkJCWlmIChyZXNvbHZlKSByZXR1cm4gZ2V0Qm91bmRFbmQoKTsNCisJCQkJcmV0dXJuIGJhc2ljR2V0Qm91bmRFbmQoKTsNCisJCQljYXNlIEJsb2Nrc1BhY2thZ2UuQk9VTkRfUkVGRVJFTkNFX19CSU5ESU5HX1BBVEg6DQorCQkJCXJldHVybiBnZXRCaW5kaW5nUGF0aCgpOw0KKwkJfQ0KKwkJcmV0dXJuIHN1cGVyLmVHZXQoZmVhdHVyZUlELCByZXNvbHZlLCBjb3JlVHlwZSk7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAU3VwcHJlc3NXYXJuaW5ncygidW5jaGVja2VkIikNCisJQE92ZXJyaWRlDQorCXB1YmxpYyB2b2lkIGVTZXQoaW50IGZlYXR1cmVJRCwgT2JqZWN0IG5ld1ZhbHVlKSB7DQorCQlzd2l0Y2ggKGZlYXR1cmVJRCkgew0KKwkJCWNhc2UgQmxvY2tzUGFja2FnZS5CT1VORF9SRUZFUkVOQ0VfX0JPVU5EX0VORDoNCisJCQkJc2V0Qm91bmRFbmQoKENvbm5lY3RvckVuZCluZXdWYWx1ZSk7DQorCQkJCXJldHVybjsNCisJCQljYXNlIEJsb2Nrc1BhY2thZ2UuQk9VTkRfUkVGRVJFTkNFX19CSU5ESU5HX1BBVEg6DQorCQkJCWdldEJpbmRpbmdQYXRoKCkuY2xlYXIoKTsNCisJCQkJZ2V0QmluZGluZ1BhdGgoKS5hZGRBbGwoKENvbGxlY3Rpb248PyBleHRlbmRzIFByb3BlcnR5PiluZXdWYWx1ZSk7DQorCQkJCXJldHVybjsNCisJCX0NCisJCXN1cGVyLmVTZXQoZmVhdHVyZUlELCBuZXdWYWx1ZSk7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIHZvaWQgZVVuc2V0KGludCBmZWF0dXJlSUQpIHsNCisJCXN3aXRjaCAoZmVhdHVyZUlEKSB7DQorCQkJY2FzZSBCbG9ja3NQYWNrYWdlLkJPVU5EX1JFRkVSRU5DRV9fQk9VTkRfRU5EOg0KKwkJCQlzZXRCb3VuZEVuZCgoQ29ubmVjdG9yRW5kKW51bGwpOw0KKwkJCQlyZXR1cm47DQorCQkJY2FzZSBCbG9ja3NQYWNrYWdlLkJPVU5EX1JFRkVSRU5DRV9fQklORElOR19QQVRIOg0KKwkJCQlnZXRCaW5kaW5nUGF0aCgpLmNsZWFyKCk7DQorCQkJCXJldHVybjsNCisJCX0NCisJCXN1cGVyLmVVbnNldChmZWF0dXJlSUQpOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXB1YmxpYyBib29sZWFuIGVJc1NldChpbnQgZmVhdHVyZUlEKSB7DQorCQlzd2l0Y2ggKGZlYXR1cmVJRCkgew0KKwkJCWNhc2UgQmxvY2tzUGFja2FnZS5CT1VORF9SRUZFUkVOQ0VfX0JPVU5EX0VORDoNCisJCQkJcmV0dXJuIGJvdW5kRW5kICE9IG51bGw7DQorCQkJY2FzZSBCbG9ja3NQYWNrYWdlLkJPVU5EX1JFRkVSRU5DRV9fQklORElOR19QQVRIOg0KKwkJCQlyZXR1cm4gIWdldEJpbmRpbmdQYXRoKCkuaXNFbXB0eSgpOw0KKwkJfQ0KKwkJcmV0dXJuIHN1cGVyLmVJc1NldChmZWF0dXJlSUQpOw0KKwl9DQorDQorfSAvL0JvdW5kUmVmZXJlbmNlSW1wbA0KZGlmZiAtLWdpdCBhL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L2Jsb2Nrcy9pbnRlcm5hbC9pbXBsL0NsYXNzaWZpZXJCZWhhdmlvclByb3BlcnR5SW1wbC5qYXZhIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvYmxvY2tzL2ludGVybmFsL2ltcGwvQ2xhc3NpZmllckJlaGF2aW9yUHJvcGVydHlJbXBsLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjRmMjVmYwotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L2Jsb2Nrcy9pbnRlcm5hbC9pbXBsL0NsYXNzaWZpZXJCZWhhdmlvclByb3BlcnR5SW1wbC5qYXZhCkBAIC0wLDAgKzEsMTY0IEBACisvKioNCisgKiBDb3B5cmlnaHQgKGMpIDIwMTUgQ0VBIExJU1QuDQorICogDQorICogIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCisgKiAgYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQorICogIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQorICogIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICovDQorcGFja2FnZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYmxvY2tzLmludGVybmFsLmltcGw7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jb21tb24ubm90aWZ5Lk5vdGlmaWNhdGlvbjsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVDbGFzczsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkludGVybmFsRU9iamVjdDsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLmltcGwuRU5vdGlmaWNhdGlvbkltcGw7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5pbXBsLk1pbmltYWxFT2JqZWN0SW1wbDsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmJsb2Nrcy5CbG9ja3NQYWNrYWdlOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYmxvY2tzLkNsYXNzaWZpZXJCZWhhdmlvclByb3BlcnR5Ow0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS51bWwyLnVtbC5Qcm9wZXJ0eTsNCisNCisvKioNCisgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKyAqIEFuIGltcGxlbWVudGF0aW9uIG9mIHRoZSBtb2RlbCBvYmplY3QgJzxlbT48Yj5DbGFzc2lmaWVyIEJlaGF2aW9yIFByb3BlcnR5PC9iPjwvZW0+Jy4NCisgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisgKiA8cD4NCisgKiBUaGUgZm9sbG93aW5nIGZlYXR1cmVzIGFyZSBpbXBsZW1lbnRlZDoNCisgKiA8dWw+DQorICogICA8bGk+e0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5ibG9ja3MuaW50ZXJuYWwuaW1wbC5DbGFzc2lmaWVyQmVoYXZpb3JQcm9wZXJ0eUltcGwjZ2V0QmFzZV9Qcm9wZXJ0eSA8ZW0+QmFzZSBQcm9wZXJ0eTwvZW0+fTwvbGk+DQorICogPC91bD4NCisgKiA8L3A+DQorICoNCisgKiBAZ2VuZXJhdGVkDQorICovDQorcHVibGljIGNsYXNzIENsYXNzaWZpZXJCZWhhdmlvclByb3BlcnR5SW1wbCBleHRlbmRzIE1pbmltYWxFT2JqZWN0SW1wbC5Db250YWluZXIgaW1wbGVtZW50cyBDbGFzc2lmaWVyQmVoYXZpb3JQcm9wZXJ0eSB7DQorCS8qKg0KKwkgKiBUaGUgY2FjaGVkIHZhbHVlIG9mIHRoZSAne0BsaW5rICNnZXRCYXNlX1Byb3BlcnR5KCkgPGVtPkJhc2UgUHJvcGVydHk8L2VtPn0nIHJlZmVyZW5jZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBzZWUgI2dldEJhc2VfUHJvcGVydHkoKQ0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqIEBvcmRlcmVkDQorCSAqLw0KKwlwcm90ZWN0ZWQgUHJvcGVydHkgYmFzZV9Qcm9wZXJ0eTsNCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwcm90ZWN0ZWQgQ2xhc3NpZmllckJlaGF2aW9yUHJvcGVydHlJbXBsKCkgew0KKwkJc3VwZXIoKTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwcm90ZWN0ZWQgRUNsYXNzIGVTdGF0aWNDbGFzcygpIHsNCisJCXJldHVybiBCbG9ja3NQYWNrYWdlLkxpdGVyYWxzLkNMQVNTSUZJRVJfQkVIQVZJT1JfUFJPUEVSVFk7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgUHJvcGVydHkgZ2V0QmFzZV9Qcm9wZXJ0eSgpIHsNCisJCWlmIChiYXNlX1Byb3BlcnR5ICE9IG51bGwgJiYgYmFzZV9Qcm9wZXJ0eS5lSXNQcm94eSgpKSB7DQorCQkJSW50ZXJuYWxFT2JqZWN0IG9sZEJhc2VfUHJvcGVydHkgPSAoSW50ZXJuYWxFT2JqZWN0KWJhc2VfUHJvcGVydHk7DQorCQkJYmFzZV9Qcm9wZXJ0eSA9IChQcm9wZXJ0eSllUmVzb2x2ZVByb3h5KG9sZEJhc2VfUHJvcGVydHkpOw0KKwkJCWlmIChiYXNlX1Byb3BlcnR5ICE9IG9sZEJhc2VfUHJvcGVydHkpIHsNCisJCQkJaWYgKGVOb3RpZmljYXRpb25SZXF1aXJlZCgpKQ0KKwkJCQkJZU5vdGlmeShuZXcgRU5vdGlmaWNhdGlvbkltcGwodGhpcywgTm90aWZpY2F0aW9uLlJFU09MVkUsIEJsb2Nrc1BhY2thZ2UuQ0xBU1NJRklFUl9CRUhBVklPUl9QUk9QRVJUWV9fQkFTRV9QUk9QRVJUWSwgb2xkQmFzZV9Qcm9wZXJ0eSwgYmFzZV9Qcm9wZXJ0eSkpOw0KKwkJCX0NCisJCX0NCisJCXJldHVybiBiYXNlX1Byb3BlcnR5Ow0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIFByb3BlcnR5IGJhc2ljR2V0QmFzZV9Qcm9wZXJ0eSgpIHsNCisJCXJldHVybiBiYXNlX1Byb3BlcnR5Ow0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIHZvaWQgc2V0QmFzZV9Qcm9wZXJ0eShQcm9wZXJ0eSBuZXdCYXNlX1Byb3BlcnR5KSB7DQorCQlQcm9wZXJ0eSBvbGRCYXNlX1Byb3BlcnR5ID0gYmFzZV9Qcm9wZXJ0eTsNCisJCWJhc2VfUHJvcGVydHkgPSBuZXdCYXNlX1Byb3BlcnR5Ow0KKwkJaWYgKGVOb3RpZmljYXRpb25SZXF1aXJlZCgpKQ0KKwkJCWVOb3RpZnkobmV3IEVOb3RpZmljYXRpb25JbXBsKHRoaXMsIE5vdGlmaWNhdGlvbi5TRVQsIEJsb2Nrc1BhY2thZ2UuQ0xBU1NJRklFUl9CRUhBVklPUl9QUk9QRVJUWV9fQkFTRV9QUk9QRVJUWSwgb2xkQmFzZV9Qcm9wZXJ0eSwgYmFzZV9Qcm9wZXJ0eSkpOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXB1YmxpYyBPYmplY3QgZUdldChpbnQgZmVhdHVyZUlELCBib29sZWFuIHJlc29sdmUsIGJvb2xlYW4gY29yZVR5cGUpIHsNCisJCXN3aXRjaCAoZmVhdHVyZUlEKSB7DQorCQkJY2FzZSBCbG9ja3NQYWNrYWdlLkNMQVNTSUZJRVJfQkVIQVZJT1JfUFJPUEVSVFlfX0JBU0VfUFJPUEVSVFk6DQorCQkJCWlmIChyZXNvbHZlKSByZXR1cm4gZ2V0QmFzZV9Qcm9wZXJ0eSgpOw0KKwkJCQlyZXR1cm4gYmFzaWNHZXRCYXNlX1Byb3BlcnR5KCk7DQorCQl9DQorCQlyZXR1cm4gc3VwZXIuZUdldChmZWF0dXJlSUQsIHJlc29sdmUsIGNvcmVUeXBlKTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgdm9pZCBlU2V0KGludCBmZWF0dXJlSUQsIE9iamVjdCBuZXdWYWx1ZSkgew0KKwkJc3dpdGNoIChmZWF0dXJlSUQpIHsNCisJCQljYXNlIEJsb2Nrc1BhY2thZ2UuQ0xBU1NJRklFUl9CRUhBVklPUl9QUk9QRVJUWV9fQkFTRV9QUk9QRVJUWToNCisJCQkJc2V0QmFzZV9Qcm9wZXJ0eSgoUHJvcGVydHkpbmV3VmFsdWUpOw0KKwkJCQlyZXR1cm47DQorCQl9DQorCQlzdXBlci5lU2V0KGZlYXR1cmVJRCwgbmV3VmFsdWUpOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXB1YmxpYyB2b2lkIGVVbnNldChpbnQgZmVhdHVyZUlEKSB7DQorCQlzd2l0Y2ggKGZlYXR1cmVJRCkgew0KKwkJCWNhc2UgQmxvY2tzUGFja2FnZS5DTEFTU0lGSUVSX0JFSEFWSU9SX1BST1BFUlRZX19CQVNFX1BST1BFUlRZOg0KKwkJCQlzZXRCYXNlX1Byb3BlcnR5KChQcm9wZXJ0eSludWxsKTsNCisJCQkJcmV0dXJuOw0KKwkJfQ0KKwkJc3VwZXIuZVVuc2V0KGZlYXR1cmVJRCk7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIGJvb2xlYW4gZUlzU2V0KGludCBmZWF0dXJlSUQpIHsNCisJCXN3aXRjaCAoZmVhdHVyZUlEKSB7DQorCQkJY2FzZSBCbG9ja3NQYWNrYWdlLkNMQVNTSUZJRVJfQkVIQVZJT1JfUFJPUEVSVFlfX0JBU0VfUFJPUEVSVFk6DQorCQkJCXJldHVybiBiYXNlX1Byb3BlcnR5ICE9IG51bGw7DQorCQl9DQorCQlyZXR1cm4gc3VwZXIuZUlzU2V0KGZlYXR1cmVJRCk7DQorCX0NCisNCit9IC8vQ2xhc3NpZmllckJlaGF2aW9yUHJvcGVydHlJbXBsDQpkaWZmIC0tZ2l0IGEvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvYmxvY2tzL2ludGVybmFsL2ltcGwvQ29ubmVjdG9yUHJvcGVydHlJbXBsLmphdmEgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9ibG9ja3MvaW50ZXJuYWwvaW1wbC9Db25uZWN0b3JQcm9wZXJ0eUltcGwuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jM2YyM2U0Ci0tLSAvZGV2L251bGwKKysrIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvYmxvY2tzL2ludGVybmFsL2ltcGwvQ29ubmVjdG9yUHJvcGVydHlJbXBsLmphdmEKQEAgLTAsMCArMSwyMjUgQEAKKy8qKg0KKyAqIENvcHlyaWdodCAoYykgMjAxNSBDRUEgTElTVC4NCisgKiANCisgKiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KKyAqICBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCisgKiAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCisgKiAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgKi8NCitwYWNrYWdlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5ibG9ja3MuaW50ZXJuYWwuaW1wbDsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi5ub3RpZnkuTm90aWZpY2F0aW9uOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRUNsYXNzOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuSW50ZXJuYWxFT2JqZWN0Ow0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuaW1wbC5FTm90aWZpY2F0aW9uSW1wbDsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLmltcGwuTWluaW1hbEVPYmplY3RJbXBsOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYmxvY2tzLkJsb2Nrc1BhY2thZ2U7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5ibG9ja3MuQ29ubmVjdG9yUHJvcGVydHk7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLnVtbDIudW1sLkNvbm5lY3RvcjsNCitpbXBvcnQgb3JnLmVjbGlwc2UudW1sMi51bWwuUHJvcGVydHk7DQorDQorLyoqDQorICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisgKiBBbiBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgbW9kZWwgb2JqZWN0ICc8ZW0+PGI+Q29ubmVjdG9yIFByb3BlcnR5PC9iPjwvZW0+Jy4NCisgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisgKiA8cD4NCisgKiBUaGUgZm9sbG93aW5nIGZlYXR1cmVzIGFyZSBpbXBsZW1lbnRlZDoNCisgKiA8dWw+DQorICogICA8bGk+e0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5ibG9ja3MuaW50ZXJuYWwuaW1wbC5Db25uZWN0b3JQcm9wZXJ0eUltcGwjZ2V0QmFzZV9Qcm9wZXJ0eSA8ZW0+QmFzZSBQcm9wZXJ0eTwvZW0+fTwvbGk+DQorICogICA8bGk+e0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5ibG9ja3MuaW50ZXJuYWwuaW1wbC5Db25uZWN0b3JQcm9wZXJ0eUltcGwjZ2V0Q29ubmVjdG9yIDxlbT5Db25uZWN0b3I8L2VtPn08L2xpPg0KKyAqIDwvdWw+DQorICogPC9wPg0KKyAqDQorICogQGdlbmVyYXRlZA0KKyAqLw0KK3B1YmxpYyBjbGFzcyBDb25uZWN0b3JQcm9wZXJ0eUltcGwgZXh0ZW5kcyBNaW5pbWFsRU9iamVjdEltcGwuQ29udGFpbmVyIGltcGxlbWVudHMgQ29ubmVjdG9yUHJvcGVydHkgew0KKwkvKioNCisJICogVGhlIGNhY2hlZCB2YWx1ZSBvZiB0aGUgJ3tAbGluayAjZ2V0QmFzZV9Qcm9wZXJ0eSgpIDxlbT5CYXNlIFByb3BlcnR5PC9lbT59JyByZWZlcmVuY2UuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAc2VlICNnZXRCYXNlX1Byb3BlcnR5KCkNCisJICogQGdlbmVyYXRlZA0KKwkgKiBAb3JkZXJlZA0KKwkgKi8NCisJcHJvdGVjdGVkIFByb3BlcnR5IGJhc2VfUHJvcGVydHk7DQorDQorCS8qKg0KKwkgKiBUaGUgY2FjaGVkIHZhbHVlIG9mIHRoZSAne0BsaW5rICNnZXRDb25uZWN0b3IoKSA8ZW0+Q29ubmVjdG9yPC9lbT59JyByZWZlcmVuY2UuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAc2VlICNnZXRDb25uZWN0b3IoKQ0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqIEBvcmRlcmVkDQorCSAqLw0KKwlwcm90ZWN0ZWQgQ29ubmVjdG9yIGNvbm5lY3RvcjsNCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwcm90ZWN0ZWQgQ29ubmVjdG9yUHJvcGVydHlJbXBsKCkgew0KKwkJc3VwZXIoKTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwcm90ZWN0ZWQgRUNsYXNzIGVTdGF0aWNDbGFzcygpIHsNCisJCXJldHVybiBCbG9ja3NQYWNrYWdlLkxpdGVyYWxzLkNPTk5FQ1RPUl9QUk9QRVJUWTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBQcm9wZXJ0eSBnZXRCYXNlX1Byb3BlcnR5KCkgew0KKwkJaWYgKGJhc2VfUHJvcGVydHkgIT0gbnVsbCAmJiBiYXNlX1Byb3BlcnR5LmVJc1Byb3h5KCkpIHsNCisJCQlJbnRlcm5hbEVPYmplY3Qgb2xkQmFzZV9Qcm9wZXJ0eSA9IChJbnRlcm5hbEVPYmplY3QpYmFzZV9Qcm9wZXJ0eTsNCisJCQliYXNlX1Byb3BlcnR5ID0gKFByb3BlcnR5KWVSZXNvbHZlUHJveHkob2xkQmFzZV9Qcm9wZXJ0eSk7DQorCQkJaWYgKGJhc2VfUHJvcGVydHkgIT0gb2xkQmFzZV9Qcm9wZXJ0eSkgew0KKwkJCQlpZiAoZU5vdGlmaWNhdGlvblJlcXVpcmVkKCkpDQorCQkJCQllTm90aWZ5KG5ldyBFTm90aWZpY2F0aW9uSW1wbCh0aGlzLCBOb3RpZmljYXRpb24uUkVTT0xWRSwgQmxvY2tzUGFja2FnZS5DT05ORUNUT1JfUFJPUEVSVFlfX0JBU0VfUFJPUEVSVFksIG9sZEJhc2VfUHJvcGVydHksIGJhc2VfUHJvcGVydHkpKTsNCisJCQl9DQorCQl9DQorCQlyZXR1cm4gYmFzZV9Qcm9wZXJ0eTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBQcm9wZXJ0eSBiYXNpY0dldEJhc2VfUHJvcGVydHkoKSB7DQorCQlyZXR1cm4gYmFzZV9Qcm9wZXJ0eTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyB2b2lkIHNldEJhc2VfUHJvcGVydHkoUHJvcGVydHkgbmV3QmFzZV9Qcm9wZXJ0eSkgew0KKwkJUHJvcGVydHkgb2xkQmFzZV9Qcm9wZXJ0eSA9IGJhc2VfUHJvcGVydHk7DQorCQliYXNlX1Byb3BlcnR5ID0gbmV3QmFzZV9Qcm9wZXJ0eTsNCisJCWlmIChlTm90aWZpY2F0aW9uUmVxdWlyZWQoKSkNCisJCQllTm90aWZ5KG5ldyBFTm90aWZpY2F0aW9uSW1wbCh0aGlzLCBOb3RpZmljYXRpb24uU0VULCBCbG9ja3NQYWNrYWdlLkNPTk5FQ1RPUl9QUk9QRVJUWV9fQkFTRV9QUk9QRVJUWSwgb2xkQmFzZV9Qcm9wZXJ0eSwgYmFzZV9Qcm9wZXJ0eSkpOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIENvbm5lY3RvciBnZXRDb25uZWN0b3IoKSB7DQorCQlpZiAoY29ubmVjdG9yICE9IG51bGwgJiYgY29ubmVjdG9yLmVJc1Byb3h5KCkpIHsNCisJCQlJbnRlcm5hbEVPYmplY3Qgb2xkQ29ubmVjdG9yID0gKEludGVybmFsRU9iamVjdCljb25uZWN0b3I7DQorCQkJY29ubmVjdG9yID0gKENvbm5lY3RvcillUmVzb2x2ZVByb3h5KG9sZENvbm5lY3Rvcik7DQorCQkJaWYgKGNvbm5lY3RvciAhPSBvbGRDb25uZWN0b3IpIHsNCisJCQkJaWYgKGVOb3RpZmljYXRpb25SZXF1aXJlZCgpKQ0KKwkJCQkJZU5vdGlmeShuZXcgRU5vdGlmaWNhdGlvbkltcGwodGhpcywgTm90aWZpY2F0aW9uLlJFU09MVkUsIEJsb2Nrc1BhY2thZ2UuQ09OTkVDVE9SX1BST1BFUlRZX19DT05ORUNUT1IsIG9sZENvbm5lY3RvciwgY29ubmVjdG9yKSk7DQorCQkJfQ0KKwkJfQ0KKwkJcmV0dXJuIGNvbm5lY3RvcjsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBDb25uZWN0b3IgYmFzaWNHZXRDb25uZWN0b3IoKSB7DQorCQlyZXR1cm4gY29ubmVjdG9yOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIHZvaWQgc2V0Q29ubmVjdG9yKENvbm5lY3RvciBuZXdDb25uZWN0b3IpIHsNCisJCUNvbm5lY3RvciBvbGRDb25uZWN0b3IgPSBjb25uZWN0b3I7DQorCQljb25uZWN0b3IgPSBuZXdDb25uZWN0b3I7DQorCQlpZiAoZU5vdGlmaWNhdGlvblJlcXVpcmVkKCkpDQorCQkJZU5vdGlmeShuZXcgRU5vdGlmaWNhdGlvbkltcGwodGhpcywgTm90aWZpY2F0aW9uLlNFVCwgQmxvY2tzUGFja2FnZS5DT05ORUNUT1JfUFJPUEVSVFlfX0NPTk5FQ1RPUiwgb2xkQ29ubmVjdG9yLCBjb25uZWN0b3IpKTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgT2JqZWN0IGVHZXQoaW50IGZlYXR1cmVJRCwgYm9vbGVhbiByZXNvbHZlLCBib29sZWFuIGNvcmVUeXBlKSB7DQorCQlzd2l0Y2ggKGZlYXR1cmVJRCkgew0KKwkJCWNhc2UgQmxvY2tzUGFja2FnZS5DT05ORUNUT1JfUFJPUEVSVFlfX0JBU0VfUFJPUEVSVFk6DQorCQkJCWlmIChyZXNvbHZlKSByZXR1cm4gZ2V0QmFzZV9Qcm9wZXJ0eSgpOw0KKwkJCQlyZXR1cm4gYmFzaWNHZXRCYXNlX1Byb3BlcnR5KCk7DQorCQkJY2FzZSBCbG9ja3NQYWNrYWdlLkNPTk5FQ1RPUl9QUk9QRVJUWV9fQ09OTkVDVE9SOg0KKwkJCQlpZiAocmVzb2x2ZSkgcmV0dXJuIGdldENvbm5lY3RvcigpOw0KKwkJCQlyZXR1cm4gYmFzaWNHZXRDb25uZWN0b3IoKTsNCisJCX0NCisJCXJldHVybiBzdXBlci5lR2V0KGZlYXR1cmVJRCwgcmVzb2x2ZSwgY29yZVR5cGUpOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXB1YmxpYyB2b2lkIGVTZXQoaW50IGZlYXR1cmVJRCwgT2JqZWN0IG5ld1ZhbHVlKSB7DQorCQlzd2l0Y2ggKGZlYXR1cmVJRCkgew0KKwkJCWNhc2UgQmxvY2tzUGFja2FnZS5DT05ORUNUT1JfUFJPUEVSVFlfX0JBU0VfUFJPUEVSVFk6DQorCQkJCXNldEJhc2VfUHJvcGVydHkoKFByb3BlcnR5KW5ld1ZhbHVlKTsNCisJCQkJcmV0dXJuOw0KKwkJCWNhc2UgQmxvY2tzUGFja2FnZS5DT05ORUNUT1JfUFJPUEVSVFlfX0NPTk5FQ1RPUjoNCisJCQkJc2V0Q29ubmVjdG9yKChDb25uZWN0b3IpbmV3VmFsdWUpOw0KKwkJCQlyZXR1cm47DQorCQl9DQorCQlzdXBlci5lU2V0KGZlYXR1cmVJRCwgbmV3VmFsdWUpOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXB1YmxpYyB2b2lkIGVVbnNldChpbnQgZmVhdHVyZUlEKSB7DQorCQlzd2l0Y2ggKGZlYXR1cmVJRCkgew0KKwkJCWNhc2UgQmxvY2tzUGFja2FnZS5DT05ORUNUT1JfUFJPUEVSVFlfX0JBU0VfUFJPUEVSVFk6DQorCQkJCXNldEJhc2VfUHJvcGVydHkoKFByb3BlcnR5KW51bGwpOw0KKwkJCQlyZXR1cm47DQorCQkJY2FzZSBCbG9ja3NQYWNrYWdlLkNPTk5FQ1RPUl9QUk9QRVJUWV9fQ09OTkVDVE9SOg0KKwkJCQlzZXRDb25uZWN0b3IoKENvbm5lY3RvciludWxsKTsNCisJCQkJcmV0dXJuOw0KKwkJfQ0KKwkJc3VwZXIuZVVuc2V0KGZlYXR1cmVJRCk7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIGJvb2xlYW4gZUlzU2V0KGludCBmZWF0dXJlSUQpIHsNCisJCXN3aXRjaCAoZmVhdHVyZUlEKSB7DQorCQkJY2FzZSBCbG9ja3NQYWNrYWdlLkNPTk5FQ1RPUl9QUk9QRVJUWV9fQkFTRV9QUk9QRVJUWToNCisJCQkJcmV0dXJuIGJhc2VfUHJvcGVydHkgIT0gbnVsbDsNCisJCQljYXNlIEJsb2Nrc1BhY2thZ2UuQ09OTkVDVE9SX1BST1BFUlRZX19DT05ORUNUT1I6DQorCQkJCXJldHVybiBjb25uZWN0b3IgIT0gbnVsbDsNCisJCX0NCisJCXJldHVybiBzdXBlci5lSXNTZXQoZmVhdHVyZUlEKTsNCisJfQ0KKw0KK30gLy9Db25uZWN0b3JQcm9wZXJ0eUltcGwNCmRpZmYgLS1naXQgYS9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9ibG9ja3MvaW50ZXJuYWwvaW1wbC9EaXJlY3RlZFJlbGF0aW9uc2hpcFByb3BlcnR5UGF0aEltcGwuamF2YSBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L2Jsb2Nrcy9pbnRlcm5hbC9pbXBsL0RpcmVjdGVkUmVsYXRpb25zaGlwUHJvcGVydHlQYXRoSW1wbC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRhNWVmYTEKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9ibG9ja3MvaW50ZXJuYWwvaW1wbC9EaXJlY3RlZFJlbGF0aW9uc2hpcFByb3BlcnR5UGF0aEltcGwuamF2YQpAQCAtMCwwICsxLDQxNiBAQAorLyoqDQorICogQ29weXJpZ2h0IChjKSAyMDE1IENFQSBMSVNULg0KKyAqIA0KKyAqICBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQorICogIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KKyAqICB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KKyAqICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqLw0KK3BhY2thZ2Ugb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmJsb2Nrcy5pbnRlcm5hbC5pbXBsOw0KKw0KK2ltcG9ydCBqYXZhLnV0aWwuQ29sbGVjdGlvbjsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi5ub3RpZnkuTm90aWZpY2F0aW9uOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY29tbW9uLnV0aWwuRUxpc3Q7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FQ2xhc3M7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5JbnRlcm5hbEVPYmplY3Q7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5pbXBsLkVOb3RpZmljYXRpb25JbXBsOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuaW1wbC5NaW5pbWFsRU9iamVjdEltcGw7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS51dGlsLkVPYmplY3RSZXNvbHZpbmdFTGlzdDsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmJsb2Nrcy5CbG9ja3NQYWNrYWdlOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYmxvY2tzLkRpcmVjdGVkUmVsYXRpb25zaGlwUHJvcGVydHlQYXRoOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS51bWwyLnVtbC5DbGFzc2lmaWVyOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS51bWwyLnVtbC5EaXJlY3RlZFJlbGF0aW9uc2hpcDsNCitpbXBvcnQgb3JnLmVjbGlwc2UudW1sMi51bWwuUHJvcGVydHk7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnVtbDIudW1sLlR5cGU7DQorDQorLyoqDQorICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisgKiBBbiBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgbW9kZWwgb2JqZWN0ICc8ZW0+PGI+RGlyZWN0ZWQgUmVsYXRpb25zaGlwIFByb3BlcnR5IFBhdGg8L2I+PC9lbT4nLg0KKyAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKyAqIDxwPg0KKyAqIFRoZSBmb2xsb3dpbmcgZmVhdHVyZXMgYXJlIGltcGxlbWVudGVkOg0KKyAqIDx1bD4NCisgKiAgIDxsaT57QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmJsb2Nrcy5pbnRlcm5hbC5pbXBsLkRpcmVjdGVkUmVsYXRpb25zaGlwUHJvcGVydHlQYXRoSW1wbCNnZXRCYXNlX0RpcmVjdGVkUmVsYXRpb25zaGlwIDxlbT5CYXNlIERpcmVjdGVkIFJlbGF0aW9uc2hpcDwvZW0+fTwvbGk+DQorICogICA8bGk+e0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5ibG9ja3MuaW50ZXJuYWwuaW1wbC5EaXJlY3RlZFJlbGF0aW9uc2hpcFByb3BlcnR5UGF0aEltcGwjZ2V0U291cmNlUHJvcGVydHlQYXRoIDxlbT5Tb3VyY2UgUHJvcGVydHkgUGF0aDwvZW0+fTwvbGk+DQorICogICA8bGk+e0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5ibG9ja3MuaW50ZXJuYWwuaW1wbC5EaXJlY3RlZFJlbGF0aW9uc2hpcFByb3BlcnR5UGF0aEltcGwjZ2V0VGFyZ2V0UHJvcGVydHlQYXRoIDxlbT5UYXJnZXQgUHJvcGVydHkgUGF0aDwvZW0+fTwvbGk+DQorICogICA8bGk+e0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5ibG9ja3MuaW50ZXJuYWwuaW1wbC5EaXJlY3RlZFJlbGF0aW9uc2hpcFByb3BlcnR5UGF0aEltcGwjZ2V0U291cmNlQ29udGV4dCA8ZW0+U291cmNlIENvbnRleHQ8L2VtPn08L2xpPg0KKyAqICAgPGxpPntAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYmxvY2tzLmludGVybmFsLmltcGwuRGlyZWN0ZWRSZWxhdGlvbnNoaXBQcm9wZXJ0eVBhdGhJbXBsI2dldFRhcmdldENvbnRleHQgPGVtPlRhcmdldCBDb250ZXh0PC9lbT59PC9saT4NCisgKiA8L3VsPg0KKyAqIDwvcD4NCisgKg0KKyAqIEBnZW5lcmF0ZWQNCisgKi8NCitwdWJsaWMgYWJzdHJhY3QgY2xhc3MgRGlyZWN0ZWRSZWxhdGlvbnNoaXBQcm9wZXJ0eVBhdGhJbXBsIGV4dGVuZHMgTWluaW1hbEVPYmplY3RJbXBsLkNvbnRhaW5lciBpbXBsZW1lbnRzIERpcmVjdGVkUmVsYXRpb25zaGlwUHJvcGVydHlQYXRoIHsNCisJLyoqDQorCSAqIFRoZSBjYWNoZWQgdmFsdWUgb2YgdGhlICd7QGxpbmsgI2dldEJhc2VfRGlyZWN0ZWRSZWxhdGlvbnNoaXAoKSA8ZW0+QmFzZSBEaXJlY3RlZCBSZWxhdGlvbnNoaXA8L2VtPn0nIHJlZmVyZW5jZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBzZWUgI2dldEJhc2VfRGlyZWN0ZWRSZWxhdGlvbnNoaXAoKQ0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqIEBvcmRlcmVkDQorCSAqLw0KKwlwcm90ZWN0ZWQgRGlyZWN0ZWRSZWxhdGlvbnNoaXAgYmFzZV9EaXJlY3RlZFJlbGF0aW9uc2hpcDsNCisNCisJLyoqDQorCSAqIFRoZSBjYWNoZWQgdmFsdWUgb2YgdGhlICd7QGxpbmsgI2dldFNvdXJjZVByb3BlcnR5UGF0aCgpIDxlbT5Tb3VyY2UgUHJvcGVydHkgUGF0aDwvZW0+fScgcmVmZXJlbmNlIGxpc3QuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAc2VlICNnZXRTb3VyY2VQcm9wZXJ0eVBhdGgoKQ0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqIEBvcmRlcmVkDQorCSAqLw0KKwlwcm90ZWN0ZWQgRUxpc3Q8UHJvcGVydHk+IHNvdXJjZVByb3BlcnR5UGF0aDsNCisNCisJLyoqDQorCSAqIFRoZSBjYWNoZWQgdmFsdWUgb2YgdGhlICd7QGxpbmsgI2dldFRhcmdldFByb3BlcnR5UGF0aCgpIDxlbT5UYXJnZXQgUHJvcGVydHkgUGF0aDwvZW0+fScgcmVmZXJlbmNlIGxpc3QuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAc2VlICNnZXRUYXJnZXRQcm9wZXJ0eVBhdGgoKQ0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqIEBvcmRlcmVkDQorCSAqLw0KKwlwcm90ZWN0ZWQgRUxpc3Q8UHJvcGVydHk+IHRhcmdldFByb3BlcnR5UGF0aDsNCisNCisJLyoqDQorCSAqIFRoZSBjYWNoZWQgdmFsdWUgb2YgdGhlICd7QGxpbmsgI2dldFNvdXJjZUNvbnRleHQoKSA8ZW0+U291cmNlIENvbnRleHQ8L2VtPn0nIHJlZmVyZW5jZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBzZWUgI2dldFNvdXJjZUNvbnRleHQoKQ0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqIEBvcmRlcmVkDQorCSAqLw0KKwlwcm90ZWN0ZWQgQ2xhc3NpZmllciBzb3VyY2VDb250ZXh0Ow0KKw0KKwkvKioNCisJICogVGhlIGNhY2hlZCB2YWx1ZSBvZiB0aGUgJ3tAbGluayAjZ2V0VGFyZ2V0Q29udGV4dCgpIDxlbT5UYXJnZXQgQ29udGV4dDwvZW0+fScgcmVmZXJlbmNlLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHNlZSAjZ2V0VGFyZ2V0Q29udGV4dCgpDQorCSAqIEBnZW5lcmF0ZWQNCisJICogQG9yZGVyZWQNCisJICovDQorCXByb3RlY3RlZCBDbGFzc2lmaWVyIHRhcmdldENvbnRleHQ7DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHJvdGVjdGVkIERpcmVjdGVkUmVsYXRpb25zaGlwUHJvcGVydHlQYXRoSW1wbCgpIHsNCisJCXN1cGVyKCk7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHJvdGVjdGVkIEVDbGFzcyBlU3RhdGljQ2xhc3MoKSB7DQorCQlyZXR1cm4gQmxvY2tzUGFja2FnZS5MaXRlcmFscy5ESVJFQ1RFRF9SRUxBVElPTlNISVBfUFJPUEVSVFlfUEFUSDsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBEaXJlY3RlZFJlbGF0aW9uc2hpcCBnZXRCYXNlX0RpcmVjdGVkUmVsYXRpb25zaGlwKCkgew0KKwkJaWYgKGJhc2VfRGlyZWN0ZWRSZWxhdGlvbnNoaXAgIT0gbnVsbCAmJiBiYXNlX0RpcmVjdGVkUmVsYXRpb25zaGlwLmVJc1Byb3h5KCkpIHsNCisJCQlJbnRlcm5hbEVPYmplY3Qgb2xkQmFzZV9EaXJlY3RlZFJlbGF0aW9uc2hpcCA9IChJbnRlcm5hbEVPYmplY3QpYmFzZV9EaXJlY3RlZFJlbGF0aW9uc2hpcDsNCisJCQliYXNlX0RpcmVjdGVkUmVsYXRpb25zaGlwID0gKERpcmVjdGVkUmVsYXRpb25zaGlwKWVSZXNvbHZlUHJveHkob2xkQmFzZV9EaXJlY3RlZFJlbGF0aW9uc2hpcCk7DQorCQkJaWYgKGJhc2VfRGlyZWN0ZWRSZWxhdGlvbnNoaXAgIT0gb2xkQmFzZV9EaXJlY3RlZFJlbGF0aW9uc2hpcCkgew0KKwkJCQlpZiAoZU5vdGlmaWNhdGlvblJlcXVpcmVkKCkpDQorCQkJCQllTm90aWZ5KG5ldyBFTm90aWZpY2F0aW9uSW1wbCh0aGlzLCBOb3RpZmljYXRpb24uUkVTT0xWRSwgQmxvY2tzUGFja2FnZS5ESVJFQ1RFRF9SRUxBVElPTlNISVBfUFJPUEVSVFlfUEFUSF9fQkFTRV9ESVJFQ1RFRF9SRUxBVElPTlNISVAsIG9sZEJhc2VfRGlyZWN0ZWRSZWxhdGlvbnNoaXAsIGJhc2VfRGlyZWN0ZWRSZWxhdGlvbnNoaXApKTsNCisJCQl9DQorCQl9DQorCQlyZXR1cm4gYmFzZV9EaXJlY3RlZFJlbGF0aW9uc2hpcDsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBEaXJlY3RlZFJlbGF0aW9uc2hpcCBiYXNpY0dldEJhc2VfRGlyZWN0ZWRSZWxhdGlvbnNoaXAoKSB7DQorCQlyZXR1cm4gYmFzZV9EaXJlY3RlZFJlbGF0aW9uc2hpcDsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyB2b2lkIHNldEJhc2VfRGlyZWN0ZWRSZWxhdGlvbnNoaXAoRGlyZWN0ZWRSZWxhdGlvbnNoaXAgbmV3QmFzZV9EaXJlY3RlZFJlbGF0aW9uc2hpcCkgew0KKwkJRGlyZWN0ZWRSZWxhdGlvbnNoaXAgb2xkQmFzZV9EaXJlY3RlZFJlbGF0aW9uc2hpcCA9IGJhc2VfRGlyZWN0ZWRSZWxhdGlvbnNoaXA7DQorCQliYXNlX0RpcmVjdGVkUmVsYXRpb25zaGlwID0gbmV3QmFzZV9EaXJlY3RlZFJlbGF0aW9uc2hpcDsNCisJCWlmIChlTm90aWZpY2F0aW9uUmVxdWlyZWQoKSkNCisJCQllTm90aWZ5KG5ldyBFTm90aWZpY2F0aW9uSW1wbCh0aGlzLCBOb3RpZmljYXRpb24uU0VULCBCbG9ja3NQYWNrYWdlLkRJUkVDVEVEX1JFTEFUSU9OU0hJUF9QUk9QRVJUWV9QQVRIX19CQVNFX0RJUkVDVEVEX1JFTEFUSU9OU0hJUCwgb2xkQmFzZV9EaXJlY3RlZFJlbGF0aW9uc2hpcCwgYmFzZV9EaXJlY3RlZFJlbGF0aW9uc2hpcCkpOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIEVMaXN0PFByb3BlcnR5PiBnZXRTb3VyY2VQcm9wZXJ0eVBhdGgoKSB7DQorCQlpZiAoc291cmNlUHJvcGVydHlQYXRoID09IG51bGwpIHsNCisJCQlzb3VyY2VQcm9wZXJ0eVBhdGggPSBuZXcgRU9iamVjdFJlc29sdmluZ0VMaXN0PFByb3BlcnR5PihQcm9wZXJ0eS5jbGFzcywgdGhpcywgQmxvY2tzUGFja2FnZS5ESVJFQ1RFRF9SRUxBVElPTlNISVBfUFJPUEVSVFlfUEFUSF9fU09VUkNFX1BST1BFUlRZX1BBVEgpOw0KKwkJfQ0KKwkJcmV0dXJuIHNvdXJjZVByb3BlcnR5UGF0aDsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBQcm9wZXJ0eSBnZXRTb3VyY2VQcm9wZXJ0eVBhdGgoU3RyaW5nIG5hbWUsIFR5cGUgdHlwZSkgew0KKwkJcmV0dXJuIGdldFNvdXJjZVByb3BlcnR5UGF0aChuYW1lLCB0eXBlLCBmYWxzZSwgbnVsbCk7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgUHJvcGVydHkgZ2V0U291cmNlUHJvcGVydHlQYXRoKFN0cmluZyBuYW1lLCBUeXBlIHR5cGUsIGJvb2xlYW4gaWdub3JlQ2FzZSwgRUNsYXNzIGVDbGFzcykgew0KKwkJc291cmNlUHJvcGVydHlQYXRoTG9vcDogZm9yIChQcm9wZXJ0eSBzb3VyY2VQcm9wZXJ0eVBhdGggOiBnZXRTb3VyY2VQcm9wZXJ0eVBhdGgoKSkgew0KKwkJCWlmIChlQ2xhc3MgIT0gbnVsbCAmJiAhZUNsYXNzLmlzSW5zdGFuY2Uoc291cmNlUHJvcGVydHlQYXRoKSkNCisJCQkJY29udGludWUgc291cmNlUHJvcGVydHlQYXRoTG9vcDsNCisJCQlpZiAobmFtZSAhPSBudWxsICYmICEoaWdub3JlQ2FzZSA/IG5hbWUuZXF1YWxzSWdub3JlQ2FzZShzb3VyY2VQcm9wZXJ0eVBhdGguZ2V0TmFtZSgpKSA6IG5hbWUuZXF1YWxzKHNvdXJjZVByb3BlcnR5UGF0aC5nZXROYW1lKCkpKSkNCisJCQkJY29udGludWUgc291cmNlUHJvcGVydHlQYXRoTG9vcDsNCisJCQlpZiAodHlwZSAhPSBudWxsICYmICF0eXBlLmVxdWFscyhzb3VyY2VQcm9wZXJ0eVBhdGguZ2V0VHlwZSgpKSkNCisJCQkJY29udGludWUgc291cmNlUHJvcGVydHlQYXRoTG9vcDsNCisJCQlyZXR1cm4gc291cmNlUHJvcGVydHlQYXRoOw0KKwkJfQ0KKwkJcmV0dXJuIG51bGw7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgRUxpc3Q8UHJvcGVydHk+IGdldFRhcmdldFByb3BlcnR5UGF0aCgpIHsNCisJCWlmICh0YXJnZXRQcm9wZXJ0eVBhdGggPT0gbnVsbCkgew0KKwkJCXRhcmdldFByb3BlcnR5UGF0aCA9IG5ldyBFT2JqZWN0UmVzb2x2aW5nRUxpc3Q8UHJvcGVydHk+KFByb3BlcnR5LmNsYXNzLCB0aGlzLCBCbG9ja3NQYWNrYWdlLkRJUkVDVEVEX1JFTEFUSU9OU0hJUF9QUk9QRVJUWV9QQVRIX19UQVJHRVRfUFJPUEVSVFlfUEFUSCk7DQorCQl9DQorCQlyZXR1cm4gdGFyZ2V0UHJvcGVydHlQYXRoOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIFByb3BlcnR5IGdldFRhcmdldFByb3BlcnR5UGF0aChTdHJpbmcgbmFtZSwgVHlwZSB0eXBlKSB7DQorCQlyZXR1cm4gZ2V0VGFyZ2V0UHJvcGVydHlQYXRoKG5hbWUsIHR5cGUsIGZhbHNlLCBudWxsKTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBQcm9wZXJ0eSBnZXRUYXJnZXRQcm9wZXJ0eVBhdGgoU3RyaW5nIG5hbWUsIFR5cGUgdHlwZSwgYm9vbGVhbiBpZ25vcmVDYXNlLCBFQ2xhc3MgZUNsYXNzKSB7DQorCQl0YXJnZXRQcm9wZXJ0eVBhdGhMb29wOiBmb3IgKFByb3BlcnR5IHRhcmdldFByb3BlcnR5UGF0aCA6IGdldFRhcmdldFByb3BlcnR5UGF0aCgpKSB7DQorCQkJaWYgKGVDbGFzcyAhPSBudWxsICYmICFlQ2xhc3MuaXNJbnN0YW5jZSh0YXJnZXRQcm9wZXJ0eVBhdGgpKQ0KKwkJCQljb250aW51ZSB0YXJnZXRQcm9wZXJ0eVBhdGhMb29wOw0KKwkJCWlmIChuYW1lICE9IG51bGwgJiYgIShpZ25vcmVDYXNlID8gbmFtZS5lcXVhbHNJZ25vcmVDYXNlKHRhcmdldFByb3BlcnR5UGF0aC5nZXROYW1lKCkpIDogbmFtZS5lcXVhbHModGFyZ2V0UHJvcGVydHlQYXRoLmdldE5hbWUoKSkpKQ0KKwkJCQljb250aW51ZSB0YXJnZXRQcm9wZXJ0eVBhdGhMb29wOw0KKwkJCWlmICh0eXBlICE9IG51bGwgJiYgIXR5cGUuZXF1YWxzKHRhcmdldFByb3BlcnR5UGF0aC5nZXRUeXBlKCkpKQ0KKwkJCQljb250aW51ZSB0YXJnZXRQcm9wZXJ0eVBhdGhMb29wOw0KKwkJCXJldHVybiB0YXJnZXRQcm9wZXJ0eVBhdGg7DQorCQl9DQorCQlyZXR1cm4gbnVsbDsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBDbGFzc2lmaWVyIGdldFNvdXJjZUNvbnRleHQoKSB7DQorCQlpZiAoc291cmNlQ29udGV4dCAhPSBudWxsICYmIHNvdXJjZUNvbnRleHQuZUlzUHJveHkoKSkgew0KKwkJCUludGVybmFsRU9iamVjdCBvbGRTb3VyY2VDb250ZXh0ID0gKEludGVybmFsRU9iamVjdClzb3VyY2VDb250ZXh0Ow0KKwkJCXNvdXJjZUNvbnRleHQgPSAoQ2xhc3NpZmllcillUmVzb2x2ZVByb3h5KG9sZFNvdXJjZUNvbnRleHQpOw0KKwkJCWlmIChzb3VyY2VDb250ZXh0ICE9IG9sZFNvdXJjZUNvbnRleHQpIHsNCisJCQkJaWYgKGVOb3RpZmljYXRpb25SZXF1aXJlZCgpKQ0KKwkJCQkJZU5vdGlmeShuZXcgRU5vdGlmaWNhdGlvbkltcGwodGhpcywgTm90aWZpY2F0aW9uLlJFU09MVkUsIEJsb2Nrc1BhY2thZ2UuRElSRUNURURfUkVMQVRJT05TSElQX1BST1BFUlRZX1BBVEhfX1NPVVJDRV9DT05URVhULCBvbGRTb3VyY2VDb250ZXh0LCBzb3VyY2VDb250ZXh0KSk7DQorCQkJfQ0KKwkJfQ0KKwkJcmV0dXJuIHNvdXJjZUNvbnRleHQ7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgQ2xhc3NpZmllciBiYXNpY0dldFNvdXJjZUNvbnRleHQoKSB7DQorCQlyZXR1cm4gc291cmNlQ29udGV4dDsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyB2b2lkIHNldFNvdXJjZUNvbnRleHQoQ2xhc3NpZmllciBuZXdTb3VyY2VDb250ZXh0KSB7DQorCQlDbGFzc2lmaWVyIG9sZFNvdXJjZUNvbnRleHQgPSBzb3VyY2VDb250ZXh0Ow0KKwkJc291cmNlQ29udGV4dCA9IG5ld1NvdXJjZUNvbnRleHQ7DQorCQlpZiAoZU5vdGlmaWNhdGlvblJlcXVpcmVkKCkpDQorCQkJZU5vdGlmeShuZXcgRU5vdGlmaWNhdGlvbkltcGwodGhpcywgTm90aWZpY2F0aW9uLlNFVCwgQmxvY2tzUGFja2FnZS5ESVJFQ1RFRF9SRUxBVElPTlNISVBfUFJPUEVSVFlfUEFUSF9fU09VUkNFX0NPTlRFWFQsIG9sZFNvdXJjZUNvbnRleHQsIHNvdXJjZUNvbnRleHQpKTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBDbGFzc2lmaWVyIGdldFRhcmdldENvbnRleHQoKSB7DQorCQlpZiAodGFyZ2V0Q29udGV4dCAhPSBudWxsICYmIHRhcmdldENvbnRleHQuZUlzUHJveHkoKSkgew0KKwkJCUludGVybmFsRU9iamVjdCBvbGRUYXJnZXRDb250ZXh0ID0gKEludGVybmFsRU9iamVjdCl0YXJnZXRDb250ZXh0Ow0KKwkJCXRhcmdldENvbnRleHQgPSAoQ2xhc3NpZmllcillUmVzb2x2ZVByb3h5KG9sZFRhcmdldENvbnRleHQpOw0KKwkJCWlmICh0YXJnZXRDb250ZXh0ICE9IG9sZFRhcmdldENvbnRleHQpIHsNCisJCQkJaWYgKGVOb3RpZmljYXRpb25SZXF1aXJlZCgpKQ0KKwkJCQkJZU5vdGlmeShuZXcgRU5vdGlmaWNhdGlvbkltcGwodGhpcywgTm90aWZpY2F0aW9uLlJFU09MVkUsIEJsb2Nrc1BhY2thZ2UuRElSRUNURURfUkVMQVRJT05TSElQX1BST1BFUlRZX1BBVEhfX1RBUkdFVF9DT05URVhULCBvbGRUYXJnZXRDb250ZXh0LCB0YXJnZXRDb250ZXh0KSk7DQorCQkJfQ0KKwkJfQ0KKwkJcmV0dXJuIHRhcmdldENvbnRleHQ7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgQ2xhc3NpZmllciBiYXNpY0dldFRhcmdldENvbnRleHQoKSB7DQorCQlyZXR1cm4gdGFyZ2V0Q29udGV4dDsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyB2b2lkIHNldFRhcmdldENvbnRleHQoQ2xhc3NpZmllciBuZXdUYXJnZXRDb250ZXh0KSB7DQorCQlDbGFzc2lmaWVyIG9sZFRhcmdldENvbnRleHQgPSB0YXJnZXRDb250ZXh0Ow0KKwkJdGFyZ2V0Q29udGV4dCA9IG5ld1RhcmdldENvbnRleHQ7DQorCQlpZiAoZU5vdGlmaWNhdGlvblJlcXVpcmVkKCkpDQorCQkJZU5vdGlmeShuZXcgRU5vdGlmaWNhdGlvbkltcGwodGhpcywgTm90aWZpY2F0aW9uLlNFVCwgQmxvY2tzUGFja2FnZS5ESVJFQ1RFRF9SRUxBVElPTlNISVBfUFJPUEVSVFlfUEFUSF9fVEFSR0VUX0NPTlRFWFQsIG9sZFRhcmdldENvbnRleHQsIHRhcmdldENvbnRleHQpKTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgT2JqZWN0IGVHZXQoaW50IGZlYXR1cmVJRCwgYm9vbGVhbiByZXNvbHZlLCBib29sZWFuIGNvcmVUeXBlKSB7DQorCQlzd2l0Y2ggKGZlYXR1cmVJRCkgew0KKwkJCWNhc2UgQmxvY2tzUGFja2FnZS5ESVJFQ1RFRF9SRUxBVElPTlNISVBfUFJPUEVSVFlfUEFUSF9fQkFTRV9ESVJFQ1RFRF9SRUxBVElPTlNISVA6DQorCQkJCWlmIChyZXNvbHZlKSByZXR1cm4gZ2V0QmFzZV9EaXJlY3RlZFJlbGF0aW9uc2hpcCgpOw0KKwkJCQlyZXR1cm4gYmFzaWNHZXRCYXNlX0RpcmVjdGVkUmVsYXRpb25zaGlwKCk7DQorCQkJY2FzZSBCbG9ja3NQYWNrYWdlLkRJUkVDVEVEX1JFTEFUSU9OU0hJUF9QUk9QRVJUWV9QQVRIX19TT1VSQ0VfUFJPUEVSVFlfUEFUSDoNCisJCQkJcmV0dXJuIGdldFNvdXJjZVByb3BlcnR5UGF0aCgpOw0KKwkJCWNhc2UgQmxvY2tzUGFja2FnZS5ESVJFQ1RFRF9SRUxBVElPTlNISVBfUFJPUEVSVFlfUEFUSF9fVEFSR0VUX1BST1BFUlRZX1BBVEg6DQorCQkJCXJldHVybiBnZXRUYXJnZXRQcm9wZXJ0eVBhdGgoKTsNCisJCQljYXNlIEJsb2Nrc1BhY2thZ2UuRElSRUNURURfUkVMQVRJT05TSElQX1BST1BFUlRZX1BBVEhfX1NPVVJDRV9DT05URVhUOg0KKwkJCQlpZiAocmVzb2x2ZSkgcmV0dXJuIGdldFNvdXJjZUNvbnRleHQoKTsNCisJCQkJcmV0dXJuIGJhc2ljR2V0U291cmNlQ29udGV4dCgpOw0KKwkJCWNhc2UgQmxvY2tzUGFja2FnZS5ESVJFQ1RFRF9SRUxBVElPTlNISVBfUFJPUEVSVFlfUEFUSF9fVEFSR0VUX0NPTlRFWFQ6DQorCQkJCWlmIChyZXNvbHZlKSByZXR1cm4gZ2V0VGFyZ2V0Q29udGV4dCgpOw0KKwkJCQlyZXR1cm4gYmFzaWNHZXRUYXJnZXRDb250ZXh0KCk7DQorCQl9DQorCQlyZXR1cm4gc3VwZXIuZUdldChmZWF0dXJlSUQsIHJlc29sdmUsIGNvcmVUeXBlKTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBTdXBwcmVzc1dhcm5pbmdzKCJ1bmNoZWNrZWQiKQ0KKwlAT3ZlcnJpZGUNCisJcHVibGljIHZvaWQgZVNldChpbnQgZmVhdHVyZUlELCBPYmplY3QgbmV3VmFsdWUpIHsNCisJCXN3aXRjaCAoZmVhdHVyZUlEKSB7DQorCQkJY2FzZSBCbG9ja3NQYWNrYWdlLkRJUkVDVEVEX1JFTEFUSU9OU0hJUF9QUk9QRVJUWV9QQVRIX19CQVNFX0RJUkVDVEVEX1JFTEFUSU9OU0hJUDoNCisJCQkJc2V0QmFzZV9EaXJlY3RlZFJlbGF0aW9uc2hpcCgoRGlyZWN0ZWRSZWxhdGlvbnNoaXApbmV3VmFsdWUpOw0KKwkJCQlyZXR1cm47DQorCQkJY2FzZSBCbG9ja3NQYWNrYWdlLkRJUkVDVEVEX1JFTEFUSU9OU0hJUF9QUk9QRVJUWV9QQVRIX19TT1VSQ0VfUFJPUEVSVFlfUEFUSDoNCisJCQkJZ2V0U291cmNlUHJvcGVydHlQYXRoKCkuY2xlYXIoKTsNCisJCQkJZ2V0U291cmNlUHJvcGVydHlQYXRoKCkuYWRkQWxsKChDb2xsZWN0aW9uPD8gZXh0ZW5kcyBQcm9wZXJ0eT4pbmV3VmFsdWUpOw0KKwkJCQlyZXR1cm47DQorCQkJY2FzZSBCbG9ja3NQYWNrYWdlLkRJUkVDVEVEX1JFTEFUSU9OU0hJUF9QUk9QRVJUWV9QQVRIX19UQVJHRVRfUFJPUEVSVFlfUEFUSDoNCisJCQkJZ2V0VGFyZ2V0UHJvcGVydHlQYXRoKCkuY2xlYXIoKTsNCisJCQkJZ2V0VGFyZ2V0UHJvcGVydHlQYXRoKCkuYWRkQWxsKChDb2xsZWN0aW9uPD8gZXh0ZW5kcyBQcm9wZXJ0eT4pbmV3VmFsdWUpOw0KKwkJCQlyZXR1cm47DQorCQkJY2FzZSBCbG9ja3NQYWNrYWdlLkRJUkVDVEVEX1JFTEFUSU9OU0hJUF9QUk9QRVJUWV9QQVRIX19TT1VSQ0VfQ09OVEVYVDoNCisJCQkJc2V0U291cmNlQ29udGV4dCgoQ2xhc3NpZmllciluZXdWYWx1ZSk7DQorCQkJCXJldHVybjsNCisJCQljYXNlIEJsb2Nrc1BhY2thZ2UuRElSRUNURURfUkVMQVRJT05TSElQX1BST1BFUlRZX1BBVEhfX1RBUkdFVF9DT05URVhUOg0KKwkJCQlzZXRUYXJnZXRDb250ZXh0KChDbGFzc2lmaWVyKW5ld1ZhbHVlKTsNCisJCQkJcmV0dXJuOw0KKwkJfQ0KKwkJc3VwZXIuZVNldChmZWF0dXJlSUQsIG5ld1ZhbHVlKTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgdm9pZCBlVW5zZXQoaW50IGZlYXR1cmVJRCkgew0KKwkJc3dpdGNoIChmZWF0dXJlSUQpIHsNCisJCQljYXNlIEJsb2Nrc1BhY2thZ2UuRElSRUNURURfUkVMQVRJT05TSElQX1BST1BFUlRZX1BBVEhfX0JBU0VfRElSRUNURURfUkVMQVRJT05TSElQOg0KKwkJCQlzZXRCYXNlX0RpcmVjdGVkUmVsYXRpb25zaGlwKChEaXJlY3RlZFJlbGF0aW9uc2hpcCludWxsKTsNCisJCQkJcmV0dXJuOw0KKwkJCWNhc2UgQmxvY2tzUGFja2FnZS5ESVJFQ1RFRF9SRUxBVElPTlNISVBfUFJPUEVSVFlfUEFUSF9fU09VUkNFX1BST1BFUlRZX1BBVEg6DQorCQkJCWdldFNvdXJjZVByb3BlcnR5UGF0aCgpLmNsZWFyKCk7DQorCQkJCXJldHVybjsNCisJCQljYXNlIEJsb2Nrc1BhY2thZ2UuRElSRUNURURfUkVMQVRJT05TSElQX1BST1BFUlRZX1BBVEhfX1RBUkdFVF9QUk9QRVJUWV9QQVRIOg0KKwkJCQlnZXRUYXJnZXRQcm9wZXJ0eVBhdGgoKS5jbGVhcigpOw0KKwkJCQlyZXR1cm47DQorCQkJY2FzZSBCbG9ja3NQYWNrYWdlLkRJUkVDVEVEX1JFTEFUSU9OU0hJUF9QUk9QRVJUWV9QQVRIX19TT1VSQ0VfQ09OVEVYVDoNCisJCQkJc2V0U291cmNlQ29udGV4dCgoQ2xhc3NpZmllciludWxsKTsNCisJCQkJcmV0dXJuOw0KKwkJCWNhc2UgQmxvY2tzUGFja2FnZS5ESVJFQ1RFRF9SRUxBVElPTlNISVBfUFJPUEVSVFlfUEFUSF9fVEFSR0VUX0NPTlRFWFQ6DQorCQkJCXNldFRhcmdldENvbnRleHQoKENsYXNzaWZpZXIpbnVsbCk7DQorCQkJCXJldHVybjsNCisJCX0NCisJCXN1cGVyLmVVbnNldChmZWF0dXJlSUQpOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXB1YmxpYyBib29sZWFuIGVJc1NldChpbnQgZmVhdHVyZUlEKSB7DQorCQlzd2l0Y2ggKGZlYXR1cmVJRCkgew0KKwkJCWNhc2UgQmxvY2tzUGFja2FnZS5ESVJFQ1RFRF9SRUxBVElPTlNISVBfUFJPUEVSVFlfUEFUSF9fQkFTRV9ESVJFQ1RFRF9SRUxBVElPTlNISVA6DQorCQkJCXJldHVybiBiYXNlX0RpcmVjdGVkUmVsYXRpb25zaGlwICE9IG51bGw7DQorCQkJY2FzZSBCbG9ja3NQYWNrYWdlLkRJUkVDVEVEX1JFTEFUSU9OU0hJUF9QUk9QRVJUWV9QQVRIX19TT1VSQ0VfUFJPUEVSVFlfUEFUSDoNCisJCQkJcmV0dXJuIHNvdXJjZVByb3BlcnR5UGF0aCAhPSBudWxsICYmICFzb3VyY2VQcm9wZXJ0eVBhdGguaXNFbXB0eSgpOw0KKwkJCWNhc2UgQmxvY2tzUGFja2FnZS5ESVJFQ1RFRF9SRUxBVElPTlNISVBfUFJPUEVSVFlfUEFUSF9fVEFSR0VUX1BST1BFUlRZX1BBVEg6DQorCQkJCXJldHVybiB0YXJnZXRQcm9wZXJ0eVBhdGggIT0gbnVsbCAmJiAhdGFyZ2V0UHJvcGVydHlQYXRoLmlzRW1wdHkoKTsNCisJCQljYXNlIEJsb2Nrc1BhY2thZ2UuRElSRUNURURfUkVMQVRJT05TSElQX1BST1BFUlRZX1BBVEhfX1NPVVJDRV9DT05URVhUOg0KKwkJCQlyZXR1cm4gc291cmNlQ29udGV4dCAhPSBudWxsOw0KKwkJCWNhc2UgQmxvY2tzUGFja2FnZS5ESVJFQ1RFRF9SRUxBVElPTlNISVBfUFJPUEVSVFlfUEFUSF9fVEFSR0VUX0NPTlRFWFQ6DQorCQkJCXJldHVybiB0YXJnZXRDb250ZXh0ICE9IG51bGw7DQorCQl9DQorCQlyZXR1cm4gc3VwZXIuZUlzU2V0KGZlYXR1cmVJRCk7DQorCX0NCisNCit9IC8vRGlyZWN0ZWRSZWxhdGlvbnNoaXBQcm9wZXJ0eVBhdGhJbXBsDQpkaWZmIC0tZ2l0IGEvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvYmxvY2tzL2ludGVybmFsL2ltcGwvRGlzdHJpYnV0ZWRQcm9wZXJ0eUltcGwuamF2YSBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L2Jsb2Nrcy9pbnRlcm5hbC9pbXBsL0Rpc3RyaWJ1dGVkUHJvcGVydHlJbXBsLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGRjZTdjOAotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L2Jsb2Nrcy9pbnRlcm5hbC9pbXBsL0Rpc3RyaWJ1dGVkUHJvcGVydHlJbXBsLmphdmEKQEAgLTAsMCArMSwxNjQgQEAKKy8qKg0KKyAqIENvcHlyaWdodCAoYykgMjAxNSBDRUEgTElTVC4NCisgKiANCisgKiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KKyAqICBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCisgKiAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCisgKiAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgKi8NCitwYWNrYWdlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5ibG9ja3MuaW50ZXJuYWwuaW1wbDsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi5ub3RpZnkuTm90aWZpY2F0aW9uOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRUNsYXNzOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuSW50ZXJuYWxFT2JqZWN0Ow0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuaW1wbC5FTm90aWZpY2F0aW9uSW1wbDsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLmltcGwuTWluaW1hbEVPYmplY3RJbXBsOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYmxvY2tzLkJsb2Nrc1BhY2thZ2U7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5ibG9ja3MuRGlzdHJpYnV0ZWRQcm9wZXJ0eTsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UudW1sMi51bWwuUHJvcGVydHk7DQorDQorLyoqDQorICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisgKiBBbiBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgbW9kZWwgb2JqZWN0ICc8ZW0+PGI+RGlzdHJpYnV0ZWQgUHJvcGVydHk8L2I+PC9lbT4nLg0KKyAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKyAqIDxwPg0KKyAqIFRoZSBmb2xsb3dpbmcgZmVhdHVyZXMgYXJlIGltcGxlbWVudGVkOg0KKyAqIDx1bD4NCisgKiAgIDxsaT57QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmJsb2Nrcy5pbnRlcm5hbC5pbXBsLkRpc3RyaWJ1dGVkUHJvcGVydHlJbXBsI2dldEJhc2VfUHJvcGVydHkgPGVtPkJhc2UgUHJvcGVydHk8L2VtPn08L2xpPg0KKyAqIDwvdWw+DQorICogPC9wPg0KKyAqDQorICogQGdlbmVyYXRlZA0KKyAqLw0KK3B1YmxpYyBjbGFzcyBEaXN0cmlidXRlZFByb3BlcnR5SW1wbCBleHRlbmRzIE1pbmltYWxFT2JqZWN0SW1wbC5Db250YWluZXIgaW1wbGVtZW50cyBEaXN0cmlidXRlZFByb3BlcnR5IHsNCisJLyoqDQorCSAqIFRoZSBjYWNoZWQgdmFsdWUgb2YgdGhlICd7QGxpbmsgI2dldEJhc2VfUHJvcGVydHkoKSA8ZW0+QmFzZSBQcm9wZXJ0eTwvZW0+fScgcmVmZXJlbmNlLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHNlZSAjZ2V0QmFzZV9Qcm9wZXJ0eSgpDQorCSAqIEBnZW5lcmF0ZWQNCisJICogQG9yZGVyZWQNCisJICovDQorCXByb3RlY3RlZCBQcm9wZXJ0eSBiYXNlX1Byb3BlcnR5Ow0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXByb3RlY3RlZCBEaXN0cmlidXRlZFByb3BlcnR5SW1wbCgpIHsNCisJCXN1cGVyKCk7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHJvdGVjdGVkIEVDbGFzcyBlU3RhdGljQ2xhc3MoKSB7DQorCQlyZXR1cm4gQmxvY2tzUGFja2FnZS5MaXRlcmFscy5ESVNUUklCVVRFRF9QUk9QRVJUWTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBQcm9wZXJ0eSBnZXRCYXNlX1Byb3BlcnR5KCkgew0KKwkJaWYgKGJhc2VfUHJvcGVydHkgIT0gbnVsbCAmJiBiYXNlX1Byb3BlcnR5LmVJc1Byb3h5KCkpIHsNCisJCQlJbnRlcm5hbEVPYmplY3Qgb2xkQmFzZV9Qcm9wZXJ0eSA9IChJbnRlcm5hbEVPYmplY3QpYmFzZV9Qcm9wZXJ0eTsNCisJCQliYXNlX1Byb3BlcnR5ID0gKFByb3BlcnR5KWVSZXNvbHZlUHJveHkob2xkQmFzZV9Qcm9wZXJ0eSk7DQorCQkJaWYgKGJhc2VfUHJvcGVydHkgIT0gb2xkQmFzZV9Qcm9wZXJ0eSkgew0KKwkJCQlpZiAoZU5vdGlmaWNhdGlvblJlcXVpcmVkKCkpDQorCQkJCQllTm90aWZ5KG5ldyBFTm90aWZpY2F0aW9uSW1wbCh0aGlzLCBOb3RpZmljYXRpb24uUkVTT0xWRSwgQmxvY2tzUGFja2FnZS5ESVNUUklCVVRFRF9QUk9QRVJUWV9fQkFTRV9QUk9QRVJUWSwgb2xkQmFzZV9Qcm9wZXJ0eSwgYmFzZV9Qcm9wZXJ0eSkpOw0KKwkJCX0NCisJCX0NCisJCXJldHVybiBiYXNlX1Byb3BlcnR5Ow0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIFByb3BlcnR5IGJhc2ljR2V0QmFzZV9Qcm9wZXJ0eSgpIHsNCisJCXJldHVybiBiYXNlX1Byb3BlcnR5Ow0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIHZvaWQgc2V0QmFzZV9Qcm9wZXJ0eShQcm9wZXJ0eSBuZXdCYXNlX1Byb3BlcnR5KSB7DQorCQlQcm9wZXJ0eSBvbGRCYXNlX1Byb3BlcnR5ID0gYmFzZV9Qcm9wZXJ0eTsNCisJCWJhc2VfUHJvcGVydHkgPSBuZXdCYXNlX1Byb3BlcnR5Ow0KKwkJaWYgKGVOb3RpZmljYXRpb25SZXF1aXJlZCgpKQ0KKwkJCWVOb3RpZnkobmV3IEVOb3RpZmljYXRpb25JbXBsKHRoaXMsIE5vdGlmaWNhdGlvbi5TRVQsIEJsb2Nrc1BhY2thZ2UuRElTVFJJQlVURURfUFJPUEVSVFlfX0JBU0VfUFJPUEVSVFksIG9sZEJhc2VfUHJvcGVydHksIGJhc2VfUHJvcGVydHkpKTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgT2JqZWN0IGVHZXQoaW50IGZlYXR1cmVJRCwgYm9vbGVhbiByZXNvbHZlLCBib29sZWFuIGNvcmVUeXBlKSB7DQorCQlzd2l0Y2ggKGZlYXR1cmVJRCkgew0KKwkJCWNhc2UgQmxvY2tzUGFja2FnZS5ESVNUUklCVVRFRF9QUk9QRVJUWV9fQkFTRV9QUk9QRVJUWToNCisJCQkJaWYgKHJlc29sdmUpIHJldHVybiBnZXRCYXNlX1Byb3BlcnR5KCk7DQorCQkJCXJldHVybiBiYXNpY0dldEJhc2VfUHJvcGVydHkoKTsNCisJCX0NCisJCXJldHVybiBzdXBlci5lR2V0KGZlYXR1cmVJRCwgcmVzb2x2ZSwgY29yZVR5cGUpOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXB1YmxpYyB2b2lkIGVTZXQoaW50IGZlYXR1cmVJRCwgT2JqZWN0IG5ld1ZhbHVlKSB7DQorCQlzd2l0Y2ggKGZlYXR1cmVJRCkgew0KKwkJCWNhc2UgQmxvY2tzUGFja2FnZS5ESVNUUklCVVRFRF9QUk9QRVJUWV9fQkFTRV9QUk9QRVJUWToNCisJCQkJc2V0QmFzZV9Qcm9wZXJ0eSgoUHJvcGVydHkpbmV3VmFsdWUpOw0KKwkJCQlyZXR1cm47DQorCQl9DQorCQlzdXBlci5lU2V0KGZlYXR1cmVJRCwgbmV3VmFsdWUpOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXB1YmxpYyB2b2lkIGVVbnNldChpbnQgZmVhdHVyZUlEKSB7DQorCQlzd2l0Y2ggKGZlYXR1cmVJRCkgew0KKwkJCWNhc2UgQmxvY2tzUGFja2FnZS5ESVNUUklCVVRFRF9QUk9QRVJUWV9fQkFTRV9QUk9QRVJUWToNCisJCQkJc2V0QmFzZV9Qcm9wZXJ0eSgoUHJvcGVydHkpbnVsbCk7DQorCQkJCXJldHVybjsNCisJCX0NCisJCXN1cGVyLmVVbnNldChmZWF0dXJlSUQpOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXB1YmxpYyBib29sZWFuIGVJc1NldChpbnQgZmVhdHVyZUlEKSB7DQorCQlzd2l0Y2ggKGZlYXR1cmVJRCkgew0KKwkJCWNhc2UgQmxvY2tzUGFja2FnZS5ESVNUUklCVVRFRF9QUk9QRVJUWV9fQkFTRV9QUk9QRVJUWToNCisJCQkJcmV0dXJuIGJhc2VfUHJvcGVydHkgIT0gbnVsbDsNCisJCX0NCisJCXJldHVybiBzdXBlci5lSXNTZXQoZmVhdHVyZUlEKTsNCisJfQ0KKw0KK30gLy9EaXN0cmlidXRlZFByb3BlcnR5SW1wbA0KZGlmZiAtLWdpdCBhL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L2Jsb2Nrcy9pbnRlcm5hbC9pbXBsL0VsZW1lbnRQcm9wZXJ0eVBhdGhJbXBsLmphdmEgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9ibG9ja3MvaW50ZXJuYWwvaW1wbC9FbGVtZW50UHJvcGVydHlQYXRoSW1wbC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFhZWZiODAKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9ibG9ja3MvaW50ZXJuYWwvaW1wbC9FbGVtZW50UHJvcGVydHlQYXRoSW1wbC5qYXZhCkBAIC0wLDAgKzEsMjM0IEBACisvKioNCisgKiBDb3B5cmlnaHQgKGMpIDIwMTUgQ0VBIExJU1QuDQorICogDQorICogIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCisgKiAgYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQorICogIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQorICogIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICovDQorcGFja2FnZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYmxvY2tzLmludGVybmFsLmltcGw7DQorDQoraW1wb3J0IGphdmEudXRpbC5Db2xsZWN0aW9uOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY29tbW9uLm5vdGlmeS5Ob3RpZmljYXRpb247DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jb21tb24udXRpbC5FTGlzdDsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVDbGFzczsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkludGVybmFsRU9iamVjdDsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLmltcGwuRU5vdGlmaWNhdGlvbkltcGw7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5pbXBsLk1pbmltYWxFT2JqZWN0SW1wbDsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLnV0aWwuRU9iamVjdFJlc29sdmluZ0VMaXN0Ow0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYmxvY2tzLkJsb2Nrc1BhY2thZ2U7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5ibG9ja3MuRWxlbWVudFByb3BlcnR5UGF0aDsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UudW1sMi51bWwuRWxlbWVudDsNCitpbXBvcnQgb3JnLmVjbGlwc2UudW1sMi51bWwuUHJvcGVydHk7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnVtbDIudW1sLlR5cGU7DQorDQorLyoqDQorICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisgKiBBbiBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgbW9kZWwgb2JqZWN0ICc8ZW0+PGI+RWxlbWVudCBQcm9wZXJ0eSBQYXRoPC9iPjwvZW0+Jy4NCisgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisgKiA8cD4NCisgKiBUaGUgZm9sbG93aW5nIGZlYXR1cmVzIGFyZSBpbXBsZW1lbnRlZDoNCisgKiA8dWw+DQorICogICA8bGk+e0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5ibG9ja3MuaW50ZXJuYWwuaW1wbC5FbGVtZW50UHJvcGVydHlQYXRoSW1wbCNnZXRCYXNlX0VsZW1lbnQgPGVtPkJhc2UgRWxlbWVudDwvZW0+fTwvbGk+DQorICogICA8bGk+e0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5ibG9ja3MuaW50ZXJuYWwuaW1wbC5FbGVtZW50UHJvcGVydHlQYXRoSW1wbCNnZXRQcm9wZXJ0eVBhdGggPGVtPlByb3BlcnR5IFBhdGg8L2VtPn08L2xpPg0KKyAqIDwvdWw+DQorICogPC9wPg0KKyAqDQorICogQGdlbmVyYXRlZA0KKyAqLw0KK3B1YmxpYyBhYnN0cmFjdCBjbGFzcyBFbGVtZW50UHJvcGVydHlQYXRoSW1wbCBleHRlbmRzIE1pbmltYWxFT2JqZWN0SW1wbC5Db250YWluZXIgaW1wbGVtZW50cyBFbGVtZW50UHJvcGVydHlQYXRoIHsNCisJLyoqDQorCSAqIFRoZSBjYWNoZWQgdmFsdWUgb2YgdGhlICd7QGxpbmsgI2dldEJhc2VfRWxlbWVudCgpIDxlbT5CYXNlIEVsZW1lbnQ8L2VtPn0nIHJlZmVyZW5jZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBzZWUgI2dldEJhc2VfRWxlbWVudCgpDQorCSAqIEBnZW5lcmF0ZWQNCisJICogQG9yZGVyZWQNCisJICovDQorCXByb3RlY3RlZCBFbGVtZW50IGJhc2VfRWxlbWVudDsNCisNCisJLyoqDQorCSAqIFRoZSBjYWNoZWQgdmFsdWUgb2YgdGhlICd7QGxpbmsgI2dldFByb3BlcnR5UGF0aCgpIDxlbT5Qcm9wZXJ0eSBQYXRoPC9lbT59JyByZWZlcmVuY2UgbGlzdC4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBzZWUgI2dldFByb3BlcnR5UGF0aCgpDQorCSAqIEBnZW5lcmF0ZWQNCisJICogQG9yZGVyZWQNCisJICovDQorCXByb3RlY3RlZCBFTGlzdDxQcm9wZXJ0eT4gcHJvcGVydHlQYXRoOw0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXByb3RlY3RlZCBFbGVtZW50UHJvcGVydHlQYXRoSW1wbCgpIHsNCisJCXN1cGVyKCk7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHJvdGVjdGVkIEVDbGFzcyBlU3RhdGljQ2xhc3MoKSB7DQorCQlyZXR1cm4gQmxvY2tzUGFja2FnZS5MaXRlcmFscy5FTEVNRU5UX1BST1BFUlRZX1BBVEg7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgRWxlbWVudCBnZXRCYXNlX0VsZW1lbnQoKSB7DQorCQlpZiAoYmFzZV9FbGVtZW50ICE9IG51bGwgJiYgYmFzZV9FbGVtZW50LmVJc1Byb3h5KCkpIHsNCisJCQlJbnRlcm5hbEVPYmplY3Qgb2xkQmFzZV9FbGVtZW50ID0gKEludGVybmFsRU9iamVjdCliYXNlX0VsZW1lbnQ7DQorCQkJYmFzZV9FbGVtZW50ID0gKEVsZW1lbnQpZVJlc29sdmVQcm94eShvbGRCYXNlX0VsZW1lbnQpOw0KKwkJCWlmIChiYXNlX0VsZW1lbnQgIT0gb2xkQmFzZV9FbGVtZW50KSB7DQorCQkJCWlmIChlTm90aWZpY2F0aW9uUmVxdWlyZWQoKSkNCisJCQkJCWVOb3RpZnkobmV3IEVOb3RpZmljYXRpb25JbXBsKHRoaXMsIE5vdGlmaWNhdGlvbi5SRVNPTFZFLCBCbG9ja3NQYWNrYWdlLkVMRU1FTlRfUFJPUEVSVFlfUEFUSF9fQkFTRV9FTEVNRU5ULCBvbGRCYXNlX0VsZW1lbnQsIGJhc2VfRWxlbWVudCkpOw0KKwkJCX0NCisJCX0NCisJCXJldHVybiBiYXNlX0VsZW1lbnQ7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgRWxlbWVudCBiYXNpY0dldEJhc2VfRWxlbWVudCgpIHsNCisJCXJldHVybiBiYXNlX0VsZW1lbnQ7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgdm9pZCBzZXRCYXNlX0VsZW1lbnQoRWxlbWVudCBuZXdCYXNlX0VsZW1lbnQpIHsNCisJCUVsZW1lbnQgb2xkQmFzZV9FbGVtZW50ID0gYmFzZV9FbGVtZW50Ow0KKwkJYmFzZV9FbGVtZW50ID0gbmV3QmFzZV9FbGVtZW50Ow0KKwkJaWYgKGVOb3RpZmljYXRpb25SZXF1aXJlZCgpKQ0KKwkJCWVOb3RpZnkobmV3IEVOb3RpZmljYXRpb25JbXBsKHRoaXMsIE5vdGlmaWNhdGlvbi5TRVQsIEJsb2Nrc1BhY2thZ2UuRUxFTUVOVF9QUk9QRVJUWV9QQVRIX19CQVNFX0VMRU1FTlQsIG9sZEJhc2VfRWxlbWVudCwgYmFzZV9FbGVtZW50KSk7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgRUxpc3Q8UHJvcGVydHk+IGdldFByb3BlcnR5UGF0aCgpIHsNCisJCWlmIChwcm9wZXJ0eVBhdGggPT0gbnVsbCkgew0KKwkJCXByb3BlcnR5UGF0aCA9IG5ldyBFT2JqZWN0UmVzb2x2aW5nRUxpc3Q8UHJvcGVydHk+KFByb3BlcnR5LmNsYXNzLCB0aGlzLCBCbG9ja3NQYWNrYWdlLkVMRU1FTlRfUFJPUEVSVFlfUEFUSF9fUFJPUEVSVFlfUEFUSCk7DQorCQl9DQorCQlyZXR1cm4gcHJvcGVydHlQYXRoOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIFByb3BlcnR5IGdldFByb3BlcnR5UGF0aChTdHJpbmcgbmFtZSwgVHlwZSB0eXBlKSB7DQorCQlyZXR1cm4gZ2V0UHJvcGVydHlQYXRoKG5hbWUsIHR5cGUsIGZhbHNlLCBudWxsKTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBQcm9wZXJ0eSBnZXRQcm9wZXJ0eVBhdGgoU3RyaW5nIG5hbWUsIFR5cGUgdHlwZSwgYm9vbGVhbiBpZ25vcmVDYXNlLCBFQ2xhc3MgZUNsYXNzKSB7DQorCQlwcm9wZXJ0eVBhdGhMb29wOiBmb3IgKFByb3BlcnR5IHByb3BlcnR5UGF0aCA6IGdldFByb3BlcnR5UGF0aCgpKSB7DQorCQkJaWYgKGVDbGFzcyAhPSBudWxsICYmICFlQ2xhc3MuaXNJbnN0YW5jZShwcm9wZXJ0eVBhdGgpKQ0KKwkJCQljb250aW51ZSBwcm9wZXJ0eVBhdGhMb29wOw0KKwkJCWlmIChuYW1lICE9IG51bGwgJiYgIShpZ25vcmVDYXNlID8gbmFtZS5lcXVhbHNJZ25vcmVDYXNlKHByb3BlcnR5UGF0aC5nZXROYW1lKCkpIDogbmFtZS5lcXVhbHMocHJvcGVydHlQYXRoLmdldE5hbWUoKSkpKQ0KKwkJCQljb250aW51ZSBwcm9wZXJ0eVBhdGhMb29wOw0KKwkJCWlmICh0eXBlICE9IG51bGwgJiYgIXR5cGUuZXF1YWxzKHByb3BlcnR5UGF0aC5nZXRUeXBlKCkpKQ0KKwkJCQljb250aW51ZSBwcm9wZXJ0eVBhdGhMb29wOw0KKwkJCXJldHVybiBwcm9wZXJ0eVBhdGg7DQorCQl9DQorCQlyZXR1cm4gbnVsbDsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgT2JqZWN0IGVHZXQoaW50IGZlYXR1cmVJRCwgYm9vbGVhbiByZXNvbHZlLCBib29sZWFuIGNvcmVUeXBlKSB7DQorCQlzd2l0Y2ggKGZlYXR1cmVJRCkgew0KKwkJCWNhc2UgQmxvY2tzUGFja2FnZS5FTEVNRU5UX1BST1BFUlRZX1BBVEhfX0JBU0VfRUxFTUVOVDoNCisJCQkJaWYgKHJlc29sdmUpIHJldHVybiBnZXRCYXNlX0VsZW1lbnQoKTsNCisJCQkJcmV0dXJuIGJhc2ljR2V0QmFzZV9FbGVtZW50KCk7DQorCQkJY2FzZSBCbG9ja3NQYWNrYWdlLkVMRU1FTlRfUFJPUEVSVFlfUEFUSF9fUFJPUEVSVFlfUEFUSDoNCisJCQkJcmV0dXJuIGdldFByb3BlcnR5UGF0aCgpOw0KKwkJfQ0KKwkJcmV0dXJuIHN1cGVyLmVHZXQoZmVhdHVyZUlELCByZXNvbHZlLCBjb3JlVHlwZSk7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAU3VwcHJlc3NXYXJuaW5ncygidW5jaGVja2VkIikNCisJQE92ZXJyaWRlDQorCXB1YmxpYyB2b2lkIGVTZXQoaW50IGZlYXR1cmVJRCwgT2JqZWN0IG5ld1ZhbHVlKSB7DQorCQlzd2l0Y2ggKGZlYXR1cmVJRCkgew0KKwkJCWNhc2UgQmxvY2tzUGFja2FnZS5FTEVNRU5UX1BST1BFUlRZX1BBVEhfX0JBU0VfRUxFTUVOVDoNCisJCQkJc2V0QmFzZV9FbGVtZW50KChFbGVtZW50KW5ld1ZhbHVlKTsNCisJCQkJcmV0dXJuOw0KKwkJCWNhc2UgQmxvY2tzUGFja2FnZS5FTEVNRU5UX1BST1BFUlRZX1BBVEhfX1BST1BFUlRZX1BBVEg6DQorCQkJCWdldFByb3BlcnR5UGF0aCgpLmNsZWFyKCk7DQorCQkJCWdldFByb3BlcnR5UGF0aCgpLmFkZEFsbCgoQ29sbGVjdGlvbjw/IGV4dGVuZHMgUHJvcGVydHk+KW5ld1ZhbHVlKTsNCisJCQkJcmV0dXJuOw0KKwkJfQ0KKwkJc3VwZXIuZVNldChmZWF0dXJlSUQsIG5ld1ZhbHVlKTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgdm9pZCBlVW5zZXQoaW50IGZlYXR1cmVJRCkgew0KKwkJc3dpdGNoIChmZWF0dXJlSUQpIHsNCisJCQljYXNlIEJsb2Nrc1BhY2thZ2UuRUxFTUVOVF9QUk9QRVJUWV9QQVRIX19CQVNFX0VMRU1FTlQ6DQorCQkJCXNldEJhc2VfRWxlbWVudCgoRWxlbWVudCludWxsKTsNCisJCQkJcmV0dXJuOw0KKwkJCWNhc2UgQmxvY2tzUGFja2FnZS5FTEVNRU5UX1BST1BFUlRZX1BBVEhfX1BST1BFUlRZX1BBVEg6DQorCQkJCWdldFByb3BlcnR5UGF0aCgpLmNsZWFyKCk7DQorCQkJCXJldHVybjsNCisJCX0NCisJCXN1cGVyLmVVbnNldChmZWF0dXJlSUQpOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXB1YmxpYyBib29sZWFuIGVJc1NldChpbnQgZmVhdHVyZUlEKSB7DQorCQlzd2l0Y2ggKGZlYXR1cmVJRCkgew0KKwkJCWNhc2UgQmxvY2tzUGFja2FnZS5FTEVNRU5UX1BST1BFUlRZX1BBVEhfX0JBU0VfRUxFTUVOVDoNCisJCQkJcmV0dXJuIGJhc2VfRWxlbWVudCAhPSBudWxsOw0KKwkJCWNhc2UgQmxvY2tzUGFja2FnZS5FTEVNRU5UX1BST1BFUlRZX1BBVEhfX1BST1BFUlRZX1BBVEg6DQorCQkJCXJldHVybiBwcm9wZXJ0eVBhdGggIT0gbnVsbCAmJiAhcHJvcGVydHlQYXRoLmlzRW1wdHkoKTsNCisJCX0NCisJCXJldHVybiBzdXBlci5lSXNTZXQoZmVhdHVyZUlEKTsNCisJfQ0KKw0KK30gLy9FbGVtZW50UHJvcGVydHlQYXRoSW1wbA0KZGlmZiAtLWdpdCBhL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L2Jsb2Nrcy9pbnRlcm5hbC9pbXBsL0VuZFBhdGhNdWx0aXBsaWNpdHlJbXBsLmphdmEgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9ibG9ja3MvaW50ZXJuYWwvaW1wbC9FbmRQYXRoTXVsdGlwbGljaXR5SW1wbC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU4YTE2YzMKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9ibG9ja3MvaW50ZXJuYWwvaW1wbC9FbmRQYXRoTXVsdGlwbGljaXR5SW1wbC5qYXZhCkBAIC0wLDAgKzEsMjg2IEBACisvKioNCisgKiBDb3B5cmlnaHQgKGMpIDIwMTUgQ0VBIExJU1QuDQorICogDQorICogIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCisgKiAgYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQorICogIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQorICogIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICovDQorcGFja2FnZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYmxvY2tzLmludGVybmFsLmltcGw7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jb21tb24ubm90aWZ5Lk5vdGlmaWNhdGlvbjsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVDbGFzczsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkludGVybmFsRU9iamVjdDsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLmltcGwuRU5vdGlmaWNhdGlvbkltcGw7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5pbXBsLk1pbmltYWxFT2JqZWN0SW1wbDsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmJsb2Nrcy5CbG9ja3NQYWNrYWdlOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYmxvY2tzLkVuZFBhdGhNdWx0aXBsaWNpdHk7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLnVtbDIudW1sLlByb3BlcnR5Ow0KKw0KKy8qKg0KKyAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorICogQW4gaW1wbGVtZW50YXRpb24gb2YgdGhlIG1vZGVsIG9iamVjdCAnPGVtPjxiPkVuZCBQYXRoIE11bHRpcGxpY2l0eTwvYj48L2VtPicuDQorICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorICogPHA+DQorICogVGhlIGZvbGxvd2luZyBmZWF0dXJlcyBhcmUgaW1wbGVtZW50ZWQ6DQorICogPHVsPg0KKyAqICAgPGxpPntAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYmxvY2tzLmludGVybmFsLmltcGwuRW5kUGF0aE11bHRpcGxpY2l0eUltcGwjZ2V0QmFzZV9Qcm9wZXJ0eSA8ZW0+QmFzZSBQcm9wZXJ0eTwvZW0+fTwvbGk+DQorICogICA8bGk+e0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5ibG9ja3MuaW50ZXJuYWwuaW1wbC5FbmRQYXRoTXVsdGlwbGljaXR5SW1wbCNnZXRMb3dlciA8ZW0+TG93ZXI8L2VtPn08L2xpPg0KKyAqICAgPGxpPntAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYmxvY2tzLmludGVybmFsLmltcGwuRW5kUGF0aE11bHRpcGxpY2l0eUltcGwjZ2V0VXBwZXIgPGVtPlVwcGVyPC9lbT59PC9saT4NCisgKiA8L3VsPg0KKyAqIDwvcD4NCisgKg0KKyAqIEBnZW5lcmF0ZWQNCisgKi8NCitwdWJsaWMgY2xhc3MgRW5kUGF0aE11bHRpcGxpY2l0eUltcGwgZXh0ZW5kcyBNaW5pbWFsRU9iamVjdEltcGwuQ29udGFpbmVyIGltcGxlbWVudHMgRW5kUGF0aE11bHRpcGxpY2l0eSB7DQorCS8qKg0KKwkgKiBUaGUgY2FjaGVkIHZhbHVlIG9mIHRoZSAne0BsaW5rICNnZXRCYXNlX1Byb3BlcnR5KCkgPGVtPkJhc2UgUHJvcGVydHk8L2VtPn0nIHJlZmVyZW5jZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBzZWUgI2dldEJhc2VfUHJvcGVydHkoKQ0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqIEBvcmRlcmVkDQorCSAqLw0KKwlwcm90ZWN0ZWQgUHJvcGVydHkgYmFzZV9Qcm9wZXJ0eTsNCisNCisJLyoqDQorCSAqIFRoZSBkZWZhdWx0IHZhbHVlIG9mIHRoZSAne0BsaW5rICNnZXRMb3dlcigpIDxlbT5Mb3dlcjwvZW0+fScgYXR0cmlidXRlLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHNlZSAjZ2V0TG93ZXIoKQ0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqIEBvcmRlcmVkDQorCSAqLw0KKwlwcm90ZWN0ZWQgc3RhdGljIGZpbmFsIGludCBMT1dFUl9FREVGQVVMVCA9IDA7DQorDQorCS8qKg0KKwkgKiBUaGUgY2FjaGVkIHZhbHVlIG9mIHRoZSAne0BsaW5rICNnZXRMb3dlcigpIDxlbT5Mb3dlcjwvZW0+fScgYXR0cmlidXRlLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHNlZSAjZ2V0TG93ZXIoKQ0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqIEBvcmRlcmVkDQorCSAqLw0KKwlwcm90ZWN0ZWQgaW50IGxvd2VyID0gTE9XRVJfRURFRkFVTFQ7DQorDQorCS8qKg0KKwkgKiBUaGUgZGVmYXVsdCB2YWx1ZSBvZiB0aGUgJ3tAbGluayAjZ2V0VXBwZXIoKSA8ZW0+VXBwZXI8L2VtPn0nIGF0dHJpYnV0ZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBzZWUgI2dldFVwcGVyKCkNCisJICogQGdlbmVyYXRlZA0KKwkgKiBAb3JkZXJlZA0KKwkgKi8NCisJcHJvdGVjdGVkIHN0YXRpYyBmaW5hbCBpbnQgVVBQRVJfRURFRkFVTFQgPSAtMTsNCisNCisJLyoqDQorCSAqIFRoZSBjYWNoZWQgdmFsdWUgb2YgdGhlICd7QGxpbmsgI2dldFVwcGVyKCkgPGVtPlVwcGVyPC9lbT59JyBhdHRyaWJ1dGUuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAc2VlICNnZXRVcHBlcigpDQorCSAqIEBnZW5lcmF0ZWQNCisJICogQG9yZGVyZWQNCisJICovDQorCXByb3RlY3RlZCBpbnQgdXBwZXIgPSBVUFBFUl9FREVGQVVMVDsNCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwcm90ZWN0ZWQgRW5kUGF0aE11bHRpcGxpY2l0eUltcGwoKSB7DQorCQlzdXBlcigpOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXByb3RlY3RlZCBFQ2xhc3MgZVN0YXRpY0NsYXNzKCkgew0KKwkJcmV0dXJuIEJsb2Nrc1BhY2thZ2UuTGl0ZXJhbHMuRU5EX1BBVEhfTVVMVElQTElDSVRZOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIFByb3BlcnR5IGdldEJhc2VfUHJvcGVydHkoKSB7DQorCQlpZiAoYmFzZV9Qcm9wZXJ0eSAhPSBudWxsICYmIGJhc2VfUHJvcGVydHkuZUlzUHJveHkoKSkgew0KKwkJCUludGVybmFsRU9iamVjdCBvbGRCYXNlX1Byb3BlcnR5ID0gKEludGVybmFsRU9iamVjdCliYXNlX1Byb3BlcnR5Ow0KKwkJCWJhc2VfUHJvcGVydHkgPSAoUHJvcGVydHkpZVJlc29sdmVQcm94eShvbGRCYXNlX1Byb3BlcnR5KTsNCisJCQlpZiAoYmFzZV9Qcm9wZXJ0eSAhPSBvbGRCYXNlX1Byb3BlcnR5KSB7DQorCQkJCWlmIChlTm90aWZpY2F0aW9uUmVxdWlyZWQoKSkNCisJCQkJCWVOb3RpZnkobmV3IEVOb3RpZmljYXRpb25JbXBsKHRoaXMsIE5vdGlmaWNhdGlvbi5SRVNPTFZFLCBCbG9ja3NQYWNrYWdlLkVORF9QQVRIX01VTFRJUExJQ0lUWV9fQkFTRV9QUk9QRVJUWSwgb2xkQmFzZV9Qcm9wZXJ0eSwgYmFzZV9Qcm9wZXJ0eSkpOw0KKwkJCX0NCisJCX0NCisJCXJldHVybiBiYXNlX1Byb3BlcnR5Ow0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIFByb3BlcnR5IGJhc2ljR2V0QmFzZV9Qcm9wZXJ0eSgpIHsNCisJCXJldHVybiBiYXNlX1Byb3BlcnR5Ow0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIHZvaWQgc2V0QmFzZV9Qcm9wZXJ0eShQcm9wZXJ0eSBuZXdCYXNlX1Byb3BlcnR5KSB7DQorCQlQcm9wZXJ0eSBvbGRCYXNlX1Byb3BlcnR5ID0gYmFzZV9Qcm9wZXJ0eTsNCisJCWJhc2VfUHJvcGVydHkgPSBuZXdCYXNlX1Byb3BlcnR5Ow0KKwkJaWYgKGVOb3RpZmljYXRpb25SZXF1aXJlZCgpKQ0KKwkJCWVOb3RpZnkobmV3IEVOb3RpZmljYXRpb25JbXBsKHRoaXMsIE5vdGlmaWNhdGlvbi5TRVQsIEJsb2Nrc1BhY2thZ2UuRU5EX1BBVEhfTVVMVElQTElDSVRZX19CQVNFX1BST1BFUlRZLCBvbGRCYXNlX1Byb3BlcnR5LCBiYXNlX1Byb3BlcnR5KSk7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgaW50IGdldExvd2VyKCkgew0KKwkJcmV0dXJuIGxvd2VyOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIHZvaWQgc2V0TG93ZXIoaW50IG5ld0xvd2VyKSB7DQorCQlpbnQgb2xkTG93ZXIgPSBsb3dlcjsNCisJCWxvd2VyID0gbmV3TG93ZXI7DQorCQlpZiAoZU5vdGlmaWNhdGlvblJlcXVpcmVkKCkpDQorCQkJZU5vdGlmeShuZXcgRU5vdGlmaWNhdGlvbkltcGwodGhpcywgTm90aWZpY2F0aW9uLlNFVCwgQmxvY2tzUGFja2FnZS5FTkRfUEFUSF9NVUxUSVBMSUNJVFlfX0xPV0VSLCBvbGRMb3dlciwgbG93ZXIpKTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBpbnQgZ2V0VXBwZXIoKSB7DQorCQlyZXR1cm4gdXBwZXI7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgdm9pZCBzZXRVcHBlcihpbnQgbmV3VXBwZXIpIHsNCisJCWludCBvbGRVcHBlciA9IHVwcGVyOw0KKwkJdXBwZXIgPSBuZXdVcHBlcjsNCisJCWlmIChlTm90aWZpY2F0aW9uUmVxdWlyZWQoKSkNCisJCQllTm90aWZ5KG5ldyBFTm90aWZpY2F0aW9uSW1wbCh0aGlzLCBOb3RpZmljYXRpb24uU0VULCBCbG9ja3NQYWNrYWdlLkVORF9QQVRIX01VTFRJUExJQ0lUWV9fVVBQRVIsIG9sZFVwcGVyLCB1cHBlcikpOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXB1YmxpYyBPYmplY3QgZUdldChpbnQgZmVhdHVyZUlELCBib29sZWFuIHJlc29sdmUsIGJvb2xlYW4gY29yZVR5cGUpIHsNCisJCXN3aXRjaCAoZmVhdHVyZUlEKSB7DQorCQkJY2FzZSBCbG9ja3NQYWNrYWdlLkVORF9QQVRIX01VTFRJUExJQ0lUWV9fQkFTRV9QUk9QRVJUWToNCisJCQkJaWYgKHJlc29sdmUpIHJldHVybiBnZXRCYXNlX1Byb3BlcnR5KCk7DQorCQkJCXJldHVybiBiYXNpY0dldEJhc2VfUHJvcGVydHkoKTsNCisJCQljYXNlIEJsb2Nrc1BhY2thZ2UuRU5EX1BBVEhfTVVMVElQTElDSVRZX19MT1dFUjoNCisJCQkJcmV0dXJuIGdldExvd2VyKCk7DQorCQkJY2FzZSBCbG9ja3NQYWNrYWdlLkVORF9QQVRIX01VTFRJUExJQ0lUWV9fVVBQRVI6DQorCQkJCXJldHVybiBnZXRVcHBlcigpOw0KKwkJfQ0KKwkJcmV0dXJuIHN1cGVyLmVHZXQoZmVhdHVyZUlELCByZXNvbHZlLCBjb3JlVHlwZSk7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIHZvaWQgZVNldChpbnQgZmVhdHVyZUlELCBPYmplY3QgbmV3VmFsdWUpIHsNCisJCXN3aXRjaCAoZmVhdHVyZUlEKSB7DQorCQkJY2FzZSBCbG9ja3NQYWNrYWdlLkVORF9QQVRIX01VTFRJUExJQ0lUWV9fQkFTRV9QUk9QRVJUWToNCisJCQkJc2V0QmFzZV9Qcm9wZXJ0eSgoUHJvcGVydHkpbmV3VmFsdWUpOw0KKwkJCQlyZXR1cm47DQorCQkJY2FzZSBCbG9ja3NQYWNrYWdlLkVORF9QQVRIX01VTFRJUExJQ0lUWV9fTE9XRVI6DQorCQkJCXNldExvd2VyKChJbnRlZ2VyKW5ld1ZhbHVlKTsNCisJCQkJcmV0dXJuOw0KKwkJCWNhc2UgQmxvY2tzUGFja2FnZS5FTkRfUEFUSF9NVUxUSVBMSUNJVFlfX1VQUEVSOg0KKwkJCQlzZXRVcHBlcigoSW50ZWdlciluZXdWYWx1ZSk7DQorCQkJCXJldHVybjsNCisJCX0NCisJCXN1cGVyLmVTZXQoZmVhdHVyZUlELCBuZXdWYWx1ZSk7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIHZvaWQgZVVuc2V0KGludCBmZWF0dXJlSUQpIHsNCisJCXN3aXRjaCAoZmVhdHVyZUlEKSB7DQorCQkJY2FzZSBCbG9ja3NQYWNrYWdlLkVORF9QQVRIX01VTFRJUExJQ0lUWV9fQkFTRV9QUk9QRVJUWToNCisJCQkJc2V0QmFzZV9Qcm9wZXJ0eSgoUHJvcGVydHkpbnVsbCk7DQorCQkJCXJldHVybjsNCisJCQljYXNlIEJsb2Nrc1BhY2thZ2UuRU5EX1BBVEhfTVVMVElQTElDSVRZX19MT1dFUjoNCisJCQkJc2V0TG93ZXIoTE9XRVJfRURFRkFVTFQpOw0KKwkJCQlyZXR1cm47DQorCQkJY2FzZSBCbG9ja3NQYWNrYWdlLkVORF9QQVRIX01VTFRJUExJQ0lUWV9fVVBQRVI6DQorCQkJCXNldFVwcGVyKFVQUEVSX0VERUZBVUxUKTsNCisJCQkJcmV0dXJuOw0KKwkJfQ0KKwkJc3VwZXIuZVVuc2V0KGZlYXR1cmVJRCk7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIGJvb2xlYW4gZUlzU2V0KGludCBmZWF0dXJlSUQpIHsNCisJCXN3aXRjaCAoZmVhdHVyZUlEKSB7DQorCQkJY2FzZSBCbG9ja3NQYWNrYWdlLkVORF9QQVRIX01VTFRJUExJQ0lUWV9fQkFTRV9QUk9QRVJUWToNCisJCQkJcmV0dXJuIGJhc2VfUHJvcGVydHkgIT0gbnVsbDsNCisJCQljYXNlIEJsb2Nrc1BhY2thZ2UuRU5EX1BBVEhfTVVMVElQTElDSVRZX19MT1dFUjoNCisJCQkJcmV0dXJuIGxvd2VyICE9IExPV0VSX0VERUZBVUxUOw0KKwkJCWNhc2UgQmxvY2tzUGFja2FnZS5FTkRfUEFUSF9NVUxUSVBMSUNJVFlfX1VQUEVSOg0KKwkJCQlyZXR1cm4gdXBwZXIgIT0gVVBQRVJfRURFRkFVTFQ7DQorCQl9DQorCQlyZXR1cm4gc3VwZXIuZUlzU2V0KGZlYXR1cmVJRCk7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIFN0cmluZyB0b1N0cmluZygpIHsNCisJCWlmIChlSXNQcm94eSgpKSByZXR1cm4gc3VwZXIudG9TdHJpbmcoKTsNCisNCisJCVN0cmluZ0J1ZmZlciByZXN1bHQgPSBuZXcgU3RyaW5nQnVmZmVyKHN1cGVyLnRvU3RyaW5nKCkpOw0KKwkJcmVzdWx0LmFwcGVuZCgiIChsb3dlcjogIik7IC8vJE5PTi1OTFMtMSQNCisJCXJlc3VsdC5hcHBlbmQobG93ZXIpOw0KKwkJcmVzdWx0LmFwcGVuZCgiLCB1cHBlcjogIik7IC8vJE5PTi1OTFMtMSQNCisJCXJlc3VsdC5hcHBlbmQodXBwZXIpOw0KKwkJcmVzdWx0LmFwcGVuZCgnKScpOw0KKwkJcmV0dXJuIHJlc3VsdC50b1N0cmluZygpOw0KKwl9DQorDQorfSAvL0VuZFBhdGhNdWx0aXBsaWNpdHlJbXBsDQpkaWZmIC0tZ2l0IGEvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvYmxvY2tzL2ludGVybmFsL2ltcGwvTmVzdGVkQ29ubmVjdG9yRW5kSW1wbC5qYXZhIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvYmxvY2tzL2ludGVybmFsL2ltcGwvTmVzdGVkQ29ubmVjdG9yRW5kSW1wbC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNmYTZiZWMKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9ibG9ja3MvaW50ZXJuYWwvaW1wbC9OZXN0ZWRDb25uZWN0b3JFbmRJbXBsLmphdmEKQEAgLTAsMCArMSwxNjMgQEAKKy8qKg0KKyAqIENvcHlyaWdodCAoYykgMjAxNSBDRUEgTElTVC4NCisgKiANCisgKiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KKyAqICBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCisgKiAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCisgKiAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgKi8NCitwYWNrYWdlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5ibG9ja3MuaW50ZXJuYWwuaW1wbDsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi5ub3RpZnkuTm90aWZpY2F0aW9uOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRUNsYXNzOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuSW50ZXJuYWxFT2JqZWN0Ow0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuaW1wbC5FTm90aWZpY2F0aW9uSW1wbDsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmJsb2Nrcy5CbG9ja3NQYWNrYWdlOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYmxvY2tzLk5lc3RlZENvbm5lY3RvckVuZDsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UudW1sMi51bWwuQ29ubmVjdG9yRW5kOw0KKw0KKy8qKg0KKyAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorICogQW4gaW1wbGVtZW50YXRpb24gb2YgdGhlIG1vZGVsIG9iamVjdCAnPGVtPjxiPk5lc3RlZCBDb25uZWN0b3IgRW5kPC9iPjwvZW0+Jy4NCisgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisgKiA8cD4NCisgKiBUaGUgZm9sbG93aW5nIGZlYXR1cmVzIGFyZSBpbXBsZW1lbnRlZDoNCisgKiA8dWw+DQorICogICA8bGk+e0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5ibG9ja3MuaW50ZXJuYWwuaW1wbC5OZXN0ZWRDb25uZWN0b3JFbmRJbXBsI2dldEJhc2VfQ29ubmVjdG9yRW5kIDxlbT5CYXNlIENvbm5lY3RvciBFbmQ8L2VtPn08L2xpPg0KKyAqIDwvdWw+DQorICogPC9wPg0KKyAqDQorICogQGdlbmVyYXRlZA0KKyAqLw0KK3B1YmxpYyBjbGFzcyBOZXN0ZWRDb25uZWN0b3JFbmRJbXBsIGV4dGVuZHMgRWxlbWVudFByb3BlcnR5UGF0aEltcGwgaW1wbGVtZW50cyBOZXN0ZWRDb25uZWN0b3JFbmQgew0KKwkvKioNCisJICogVGhlIGNhY2hlZCB2YWx1ZSBvZiB0aGUgJ3tAbGluayAjZ2V0QmFzZV9Db25uZWN0b3JFbmQoKSA8ZW0+QmFzZSBDb25uZWN0b3IgRW5kPC9lbT59JyByZWZlcmVuY2UuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAc2VlICNnZXRCYXNlX0Nvbm5lY3RvckVuZCgpDQorCSAqIEBnZW5lcmF0ZWQNCisJICogQG9yZGVyZWQNCisJICovDQorCXByb3RlY3RlZCBDb25uZWN0b3JFbmQgYmFzZV9Db25uZWN0b3JFbmQ7DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHJvdGVjdGVkIE5lc3RlZENvbm5lY3RvckVuZEltcGwoKSB7DQorCQlzdXBlcigpOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXByb3RlY3RlZCBFQ2xhc3MgZVN0YXRpY0NsYXNzKCkgew0KKwkJcmV0dXJuIEJsb2Nrc1BhY2thZ2UuTGl0ZXJhbHMuTkVTVEVEX0NPTk5FQ1RPUl9FTkQ7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgQ29ubmVjdG9yRW5kIGdldEJhc2VfQ29ubmVjdG9yRW5kKCkgew0KKwkJaWYgKGJhc2VfQ29ubmVjdG9yRW5kICE9IG51bGwgJiYgYmFzZV9Db25uZWN0b3JFbmQuZUlzUHJveHkoKSkgew0KKwkJCUludGVybmFsRU9iamVjdCBvbGRCYXNlX0Nvbm5lY3RvckVuZCA9IChJbnRlcm5hbEVPYmplY3QpYmFzZV9Db25uZWN0b3JFbmQ7DQorCQkJYmFzZV9Db25uZWN0b3JFbmQgPSAoQ29ubmVjdG9yRW5kKWVSZXNvbHZlUHJveHkob2xkQmFzZV9Db25uZWN0b3JFbmQpOw0KKwkJCWlmIChiYXNlX0Nvbm5lY3RvckVuZCAhPSBvbGRCYXNlX0Nvbm5lY3RvckVuZCkgew0KKwkJCQlpZiAoZU5vdGlmaWNhdGlvblJlcXVpcmVkKCkpDQorCQkJCQllTm90aWZ5KG5ldyBFTm90aWZpY2F0aW9uSW1wbCh0aGlzLCBOb3RpZmljYXRpb24uUkVTT0xWRSwgQmxvY2tzUGFja2FnZS5ORVNURURfQ09OTkVDVE9SX0VORF9fQkFTRV9DT05ORUNUT1JfRU5ELCBvbGRCYXNlX0Nvbm5lY3RvckVuZCwgYmFzZV9Db25uZWN0b3JFbmQpKTsNCisJCQl9DQorCQl9DQorCQlyZXR1cm4gYmFzZV9Db25uZWN0b3JFbmQ7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgQ29ubmVjdG9yRW5kIGJhc2ljR2V0QmFzZV9Db25uZWN0b3JFbmQoKSB7DQorCQlyZXR1cm4gYmFzZV9Db25uZWN0b3JFbmQ7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgdm9pZCBzZXRCYXNlX0Nvbm5lY3RvckVuZChDb25uZWN0b3JFbmQgbmV3QmFzZV9Db25uZWN0b3JFbmQpIHsNCisJCUNvbm5lY3RvckVuZCBvbGRCYXNlX0Nvbm5lY3RvckVuZCA9IGJhc2VfQ29ubmVjdG9yRW5kOw0KKwkJYmFzZV9Db25uZWN0b3JFbmQgPSBuZXdCYXNlX0Nvbm5lY3RvckVuZDsNCisJCWlmIChlTm90aWZpY2F0aW9uUmVxdWlyZWQoKSkNCisJCQllTm90aWZ5KG5ldyBFTm90aWZpY2F0aW9uSW1wbCh0aGlzLCBOb3RpZmljYXRpb24uU0VULCBCbG9ja3NQYWNrYWdlLk5FU1RFRF9DT05ORUNUT1JfRU5EX19CQVNFX0NPTk5FQ1RPUl9FTkQsIG9sZEJhc2VfQ29ubmVjdG9yRW5kLCBiYXNlX0Nvbm5lY3RvckVuZCkpOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXB1YmxpYyBPYmplY3QgZUdldChpbnQgZmVhdHVyZUlELCBib29sZWFuIHJlc29sdmUsIGJvb2xlYW4gY29yZVR5cGUpIHsNCisJCXN3aXRjaCAoZmVhdHVyZUlEKSB7DQorCQkJY2FzZSBCbG9ja3NQYWNrYWdlLk5FU1RFRF9DT05ORUNUT1JfRU5EX19CQVNFX0NPTk5FQ1RPUl9FTkQ6DQorCQkJCWlmIChyZXNvbHZlKSByZXR1cm4gZ2V0QmFzZV9Db25uZWN0b3JFbmQoKTsNCisJCQkJcmV0dXJuIGJhc2ljR2V0QmFzZV9Db25uZWN0b3JFbmQoKTsNCisJCX0NCisJCXJldHVybiBzdXBlci5lR2V0KGZlYXR1cmVJRCwgcmVzb2x2ZSwgY29yZVR5cGUpOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXB1YmxpYyB2b2lkIGVTZXQoaW50IGZlYXR1cmVJRCwgT2JqZWN0IG5ld1ZhbHVlKSB7DQorCQlzd2l0Y2ggKGZlYXR1cmVJRCkgew0KKwkJCWNhc2UgQmxvY2tzUGFja2FnZS5ORVNURURfQ09OTkVDVE9SX0VORF9fQkFTRV9DT05ORUNUT1JfRU5EOg0KKwkJCQlzZXRCYXNlX0Nvbm5lY3RvckVuZCgoQ29ubmVjdG9yRW5kKW5ld1ZhbHVlKTsNCisJCQkJcmV0dXJuOw0KKwkJfQ0KKwkJc3VwZXIuZVNldChmZWF0dXJlSUQsIG5ld1ZhbHVlKTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgdm9pZCBlVW5zZXQoaW50IGZlYXR1cmVJRCkgew0KKwkJc3dpdGNoIChmZWF0dXJlSUQpIHsNCisJCQljYXNlIEJsb2Nrc1BhY2thZ2UuTkVTVEVEX0NPTk5FQ1RPUl9FTkRfX0JBU0VfQ09OTkVDVE9SX0VORDoNCisJCQkJc2V0QmFzZV9Db25uZWN0b3JFbmQoKENvbm5lY3RvckVuZCludWxsKTsNCisJCQkJcmV0dXJuOw0KKwkJfQ0KKwkJc3VwZXIuZVVuc2V0KGZlYXR1cmVJRCk7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIGJvb2xlYW4gZUlzU2V0KGludCBmZWF0dXJlSUQpIHsNCisJCXN3aXRjaCAoZmVhdHVyZUlEKSB7DQorCQkJY2FzZSBCbG9ja3NQYWNrYWdlLk5FU1RFRF9DT05ORUNUT1JfRU5EX19CQVNFX0NPTk5FQ1RPUl9FTkQ6DQorCQkJCXJldHVybiBiYXNlX0Nvbm5lY3RvckVuZCAhPSBudWxsOw0KKwkJfQ0KKwkJcmV0dXJuIHN1cGVyLmVJc1NldChmZWF0dXJlSUQpOw0KKwl9DQorDQorfSAvL05lc3RlZENvbm5lY3RvckVuZEltcGwNCmRpZmYgLS1naXQgYS9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9ibG9ja3MvaW50ZXJuYWwvaW1wbC9QYXJ0aWNpcGFudFByb3BlcnR5SW1wbC5qYXZhIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvYmxvY2tzL2ludGVybmFsL2ltcGwvUGFydGljaXBhbnRQcm9wZXJ0eUltcGwuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZGU3MzY5Ci0tLSAvZGV2L251bGwKKysrIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvYmxvY2tzL2ludGVybmFsL2ltcGwvUGFydGljaXBhbnRQcm9wZXJ0eUltcGwuamF2YQpAQCAtMCwwICsxLDIyNCBAQAorLyoqDQorICogQ29weXJpZ2h0IChjKSAyMDE1IENFQSBMSVNULg0KKyAqIA0KKyAqICBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQorICogIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KKyAqICB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KKyAqICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqLw0KK3BhY2thZ2Ugb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmJsb2Nrcy5pbnRlcm5hbC5pbXBsOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY29tbW9uLm5vdGlmeS5Ob3RpZmljYXRpb247DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FQ2xhc3M7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5JbnRlcm5hbEVPYmplY3Q7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5pbXBsLkVOb3RpZmljYXRpb25JbXBsOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuaW1wbC5NaW5pbWFsRU9iamVjdEltcGw7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5ibG9ja3MuQmxvY2tzUGFja2FnZTsNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmJsb2Nrcy5QYXJ0aWNpcGFudFByb3BlcnR5Ow0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS51bWwyLnVtbC5Qcm9wZXJ0eTsNCisNCisvKioNCisgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKyAqIEFuIGltcGxlbWVudGF0aW9uIG9mIHRoZSBtb2RlbCBvYmplY3QgJzxlbT48Yj5QYXJ0aWNpcGFudCBQcm9wZXJ0eTwvYj48L2VtPicuDQorICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorICogPHA+DQorICogVGhlIGZvbGxvd2luZyBmZWF0dXJlcyBhcmUgaW1wbGVtZW50ZWQ6DQorICogPHVsPg0KKyAqICAgPGxpPntAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYmxvY2tzLmludGVybmFsLmltcGwuUGFydGljaXBhbnRQcm9wZXJ0eUltcGwjZ2V0QmFzZV9Qcm9wZXJ0eSA8ZW0+QmFzZSBQcm9wZXJ0eTwvZW0+fTwvbGk+DQorICogICA8bGk+e0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5ibG9ja3MuaW50ZXJuYWwuaW1wbC5QYXJ0aWNpcGFudFByb3BlcnR5SW1wbCNnZXRFbmQgPGVtPkVuZDwvZW0+fTwvbGk+DQorICogPC91bD4NCisgKiA8L3A+DQorICoNCisgKiBAZ2VuZXJhdGVkDQorICovDQorcHVibGljIGNsYXNzIFBhcnRpY2lwYW50UHJvcGVydHlJbXBsIGV4dGVuZHMgTWluaW1hbEVPYmplY3RJbXBsLkNvbnRhaW5lciBpbXBsZW1lbnRzIFBhcnRpY2lwYW50UHJvcGVydHkgew0KKwkvKioNCisJICogVGhlIGNhY2hlZCB2YWx1ZSBvZiB0aGUgJ3tAbGluayAjZ2V0QmFzZV9Qcm9wZXJ0eSgpIDxlbT5CYXNlIFByb3BlcnR5PC9lbT59JyByZWZlcmVuY2UuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAc2VlICNnZXRCYXNlX1Byb3BlcnR5KCkNCisJICogQGdlbmVyYXRlZA0KKwkgKiBAb3JkZXJlZA0KKwkgKi8NCisJcHJvdGVjdGVkIFByb3BlcnR5IGJhc2VfUHJvcGVydHk7DQorDQorCS8qKg0KKwkgKiBUaGUgY2FjaGVkIHZhbHVlIG9mIHRoZSAne0BsaW5rICNnZXRFbmQoKSA8ZW0+RW5kPC9lbT59JyByZWZlcmVuY2UuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAc2VlICNnZXRFbmQoKQ0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqIEBvcmRlcmVkDQorCSAqLw0KKwlwcm90ZWN0ZWQgUHJvcGVydHkgZW5kOw0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXByb3RlY3RlZCBQYXJ0aWNpcGFudFByb3BlcnR5SW1wbCgpIHsNCisJCXN1cGVyKCk7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHJvdGVjdGVkIEVDbGFzcyBlU3RhdGljQ2xhc3MoKSB7DQorCQlyZXR1cm4gQmxvY2tzUGFja2FnZS5MaXRlcmFscy5QQVJUSUNJUEFOVF9QUk9QRVJUWTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBQcm9wZXJ0eSBnZXRCYXNlX1Byb3BlcnR5KCkgew0KKwkJaWYgKGJhc2VfUHJvcGVydHkgIT0gbnVsbCAmJiBiYXNlX1Byb3BlcnR5LmVJc1Byb3h5KCkpIHsNCisJCQlJbnRlcm5hbEVPYmplY3Qgb2xkQmFzZV9Qcm9wZXJ0eSA9IChJbnRlcm5hbEVPYmplY3QpYmFzZV9Qcm9wZXJ0eTsNCisJCQliYXNlX1Byb3BlcnR5ID0gKFByb3BlcnR5KWVSZXNvbHZlUHJveHkob2xkQmFzZV9Qcm9wZXJ0eSk7DQorCQkJaWYgKGJhc2VfUHJvcGVydHkgIT0gb2xkQmFzZV9Qcm9wZXJ0eSkgew0KKwkJCQlpZiAoZU5vdGlmaWNhdGlvblJlcXVpcmVkKCkpDQorCQkJCQllTm90aWZ5KG5ldyBFTm90aWZpY2F0aW9uSW1wbCh0aGlzLCBOb3RpZmljYXRpb24uUkVTT0xWRSwgQmxvY2tzUGFja2FnZS5QQVJUSUNJUEFOVF9QUk9QRVJUWV9fQkFTRV9QUk9QRVJUWSwgb2xkQmFzZV9Qcm9wZXJ0eSwgYmFzZV9Qcm9wZXJ0eSkpOw0KKwkJCX0NCisJCX0NCisJCXJldHVybiBiYXNlX1Byb3BlcnR5Ow0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIFByb3BlcnR5IGJhc2ljR2V0QmFzZV9Qcm9wZXJ0eSgpIHsNCisJCXJldHVybiBiYXNlX1Byb3BlcnR5Ow0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIHZvaWQgc2V0QmFzZV9Qcm9wZXJ0eShQcm9wZXJ0eSBuZXdCYXNlX1Byb3BlcnR5KSB7DQorCQlQcm9wZXJ0eSBvbGRCYXNlX1Byb3BlcnR5ID0gYmFzZV9Qcm9wZXJ0eTsNCisJCWJhc2VfUHJvcGVydHkgPSBuZXdCYXNlX1Byb3BlcnR5Ow0KKwkJaWYgKGVOb3RpZmljYXRpb25SZXF1aXJlZCgpKQ0KKwkJCWVOb3RpZnkobmV3IEVOb3RpZmljYXRpb25JbXBsKHRoaXMsIE5vdGlmaWNhdGlvbi5TRVQsIEJsb2Nrc1BhY2thZ2UuUEFSVElDSVBBTlRfUFJPUEVSVFlfX0JBU0VfUFJPUEVSVFksIG9sZEJhc2VfUHJvcGVydHksIGJhc2VfUHJvcGVydHkpKTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBQcm9wZXJ0eSBnZXRFbmQoKSB7DQorCQlpZiAoZW5kICE9IG51bGwgJiYgZW5kLmVJc1Byb3h5KCkpIHsNCisJCQlJbnRlcm5hbEVPYmplY3Qgb2xkRW5kID0gKEludGVybmFsRU9iamVjdCllbmQ7DQorCQkJZW5kID0gKFByb3BlcnR5KWVSZXNvbHZlUHJveHkob2xkRW5kKTsNCisJCQlpZiAoZW5kICE9IG9sZEVuZCkgew0KKwkJCQlpZiAoZU5vdGlmaWNhdGlvblJlcXVpcmVkKCkpDQorCQkJCQllTm90aWZ5KG5ldyBFTm90aWZpY2F0aW9uSW1wbCh0aGlzLCBOb3RpZmljYXRpb24uUkVTT0xWRSwgQmxvY2tzUGFja2FnZS5QQVJUSUNJUEFOVF9QUk9QRVJUWV9fRU5ELCBvbGRFbmQsIGVuZCkpOw0KKwkJCX0NCisJCX0NCisJCXJldHVybiBlbmQ7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgUHJvcGVydHkgYmFzaWNHZXRFbmQoKSB7DQorCQlyZXR1cm4gZW5kOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIHZvaWQgc2V0RW5kKFByb3BlcnR5IG5ld0VuZCkgew0KKwkJUHJvcGVydHkgb2xkRW5kID0gZW5kOw0KKwkJZW5kID0gbmV3RW5kOw0KKwkJaWYgKGVOb3RpZmljYXRpb25SZXF1aXJlZCgpKQ0KKwkJCWVOb3RpZnkobmV3IEVOb3RpZmljYXRpb25JbXBsKHRoaXMsIE5vdGlmaWNhdGlvbi5TRVQsIEJsb2Nrc1BhY2thZ2UuUEFSVElDSVBBTlRfUFJPUEVSVFlfX0VORCwgb2xkRW5kLCBlbmQpKTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgT2JqZWN0IGVHZXQoaW50IGZlYXR1cmVJRCwgYm9vbGVhbiByZXNvbHZlLCBib29sZWFuIGNvcmVUeXBlKSB7DQorCQlzd2l0Y2ggKGZlYXR1cmVJRCkgew0KKwkJCWNhc2UgQmxvY2tzUGFja2FnZS5QQVJUSUNJUEFOVF9QUk9QRVJUWV9fQkFTRV9QUk9QRVJUWToNCisJCQkJaWYgKHJlc29sdmUpIHJldHVybiBnZXRCYXNlX1Byb3BlcnR5KCk7DQorCQkJCXJldHVybiBiYXNpY0dldEJhc2VfUHJvcGVydHkoKTsNCisJCQljYXNlIEJsb2Nrc1BhY2thZ2UuUEFSVElDSVBBTlRfUFJPUEVSVFlfX0VORDoNCisJCQkJaWYgKHJlc29sdmUpIHJldHVybiBnZXRFbmQoKTsNCisJCQkJcmV0dXJuIGJhc2ljR2V0RW5kKCk7DQorCQl9DQorCQlyZXR1cm4gc3VwZXIuZUdldChmZWF0dXJlSUQsIHJlc29sdmUsIGNvcmVUeXBlKTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgdm9pZCBlU2V0KGludCBmZWF0dXJlSUQsIE9iamVjdCBuZXdWYWx1ZSkgew0KKwkJc3dpdGNoIChmZWF0dXJlSUQpIHsNCisJCQljYXNlIEJsb2Nrc1BhY2thZ2UuUEFSVElDSVBBTlRfUFJPUEVSVFlfX0JBU0VfUFJPUEVSVFk6DQorCQkJCXNldEJhc2VfUHJvcGVydHkoKFByb3BlcnR5KW5ld1ZhbHVlKTsNCisJCQkJcmV0dXJuOw0KKwkJCWNhc2UgQmxvY2tzUGFja2FnZS5QQVJUSUNJUEFOVF9QUk9QRVJUWV9fRU5EOg0KKwkJCQlzZXRFbmQoKFByb3BlcnR5KW5ld1ZhbHVlKTsNCisJCQkJcmV0dXJuOw0KKwkJfQ0KKwkJc3VwZXIuZVNldChmZWF0dXJlSUQsIG5ld1ZhbHVlKTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgdm9pZCBlVW5zZXQoaW50IGZlYXR1cmVJRCkgew0KKwkJc3dpdGNoIChmZWF0dXJlSUQpIHsNCisJCQljYXNlIEJsb2Nrc1BhY2thZ2UuUEFSVElDSVBBTlRfUFJPUEVSVFlfX0JBU0VfUFJPUEVSVFk6DQorCQkJCXNldEJhc2VfUHJvcGVydHkoKFByb3BlcnR5KW51bGwpOw0KKwkJCQlyZXR1cm47DQorCQkJY2FzZSBCbG9ja3NQYWNrYWdlLlBBUlRJQ0lQQU5UX1BST1BFUlRZX19FTkQ6DQorCQkJCXNldEVuZCgoUHJvcGVydHkpbnVsbCk7DQorCQkJCXJldHVybjsNCisJCX0NCisJCXN1cGVyLmVVbnNldChmZWF0dXJlSUQpOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXB1YmxpYyBib29sZWFuIGVJc1NldChpbnQgZmVhdHVyZUlEKSB7DQorCQlzd2l0Y2ggKGZlYXR1cmVJRCkgew0KKwkJCWNhc2UgQmxvY2tzUGFja2FnZS5QQVJUSUNJUEFOVF9QUk9QRVJUWV9fQkFTRV9QUk9QRVJUWToNCisJCQkJcmV0dXJuIGJhc2VfUHJvcGVydHkgIT0gbnVsbDsNCisJCQljYXNlIEJsb2Nrc1BhY2thZ2UuUEFSVElDSVBBTlRfUFJPUEVSVFlfX0VORDoNCisJCQkJcmV0dXJuIGVuZCAhPSBudWxsOw0KKwkJfQ0KKwkJcmV0dXJuIHN1cGVyLmVJc1NldChmZWF0dXJlSUQpOw0KKwl9DQorDQorfSAvL1BhcnRpY2lwYW50UHJvcGVydHlJbXBsDQpkaWZmIC0tZ2l0IGEvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvYmxvY2tzL2ludGVybmFsL2ltcGwvUHJvcGVydHlTcGVjaWZpY1R5cGVJbXBsLmphdmEgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9ibG9ja3MvaW50ZXJuYWwvaW1wbC9Qcm9wZXJ0eVNwZWNpZmljVHlwZUltcGwuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYjkzMjlkCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvYmxvY2tzL2ludGVybmFsL2ltcGwvUHJvcGVydHlTcGVjaWZpY1R5cGVJbXBsLmphdmEKQEAgLTAsMCArMSwxNjQgQEAKKy8qKg0KKyAqIENvcHlyaWdodCAoYykgMjAxNSBDRUEgTElTVC4NCisgKiANCisgKiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KKyAqICBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCisgKiAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCisgKiAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgKi8NCitwYWNrYWdlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5ibG9ja3MuaW50ZXJuYWwuaW1wbDsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi5ub3RpZnkuTm90aWZpY2F0aW9uOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRUNsYXNzOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuSW50ZXJuYWxFT2JqZWN0Ow0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuaW1wbC5FTm90aWZpY2F0aW9uSW1wbDsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLmltcGwuTWluaW1hbEVPYmplY3RJbXBsOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYmxvY2tzLkJsb2Nrc1BhY2thZ2U7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5ibG9ja3MuUHJvcGVydHlTcGVjaWZpY1R5cGU7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLnVtbDIudW1sLkNsYXNzaWZpZXI7DQorDQorLyoqDQorICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisgKiBBbiBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgbW9kZWwgb2JqZWN0ICc8ZW0+PGI+UHJvcGVydHkgU3BlY2lmaWMgVHlwZTwvYj48L2VtPicuDQorICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorICogPHA+DQorICogVGhlIGZvbGxvd2luZyBmZWF0dXJlcyBhcmUgaW1wbGVtZW50ZWQ6DQorICogPHVsPg0KKyAqICAgPGxpPntAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYmxvY2tzLmludGVybmFsLmltcGwuUHJvcGVydHlTcGVjaWZpY1R5cGVJbXBsI2dldEJhc2VfQ2xhc3NpZmllciA8ZW0+QmFzZSBDbGFzc2lmaWVyPC9lbT59PC9saT4NCisgKiA8L3VsPg0KKyAqIDwvcD4NCisgKg0KKyAqIEBnZW5lcmF0ZWQNCisgKi8NCitwdWJsaWMgY2xhc3MgUHJvcGVydHlTcGVjaWZpY1R5cGVJbXBsIGV4dGVuZHMgTWluaW1hbEVPYmplY3RJbXBsLkNvbnRhaW5lciBpbXBsZW1lbnRzIFByb3BlcnR5U3BlY2lmaWNUeXBlIHsNCisJLyoqDQorCSAqIFRoZSBjYWNoZWQgdmFsdWUgb2YgdGhlICd7QGxpbmsgI2dldEJhc2VfQ2xhc3NpZmllcigpIDxlbT5CYXNlIENsYXNzaWZpZXI8L2VtPn0nIHJlZmVyZW5jZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBzZWUgI2dldEJhc2VfQ2xhc3NpZmllcigpDQorCSAqIEBnZW5lcmF0ZWQNCisJICogQG9yZGVyZWQNCisJICovDQorCXByb3RlY3RlZCBDbGFzc2lmaWVyIGJhc2VfQ2xhc3NpZmllcjsNCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwcm90ZWN0ZWQgUHJvcGVydHlTcGVjaWZpY1R5cGVJbXBsKCkgew0KKwkJc3VwZXIoKTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwcm90ZWN0ZWQgRUNsYXNzIGVTdGF0aWNDbGFzcygpIHsNCisJCXJldHVybiBCbG9ja3NQYWNrYWdlLkxpdGVyYWxzLlBST1BFUlRZX1NQRUNJRklDX1RZUEU7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgQ2xhc3NpZmllciBnZXRCYXNlX0NsYXNzaWZpZXIoKSB7DQorCQlpZiAoYmFzZV9DbGFzc2lmaWVyICE9IG51bGwgJiYgYmFzZV9DbGFzc2lmaWVyLmVJc1Byb3h5KCkpIHsNCisJCQlJbnRlcm5hbEVPYmplY3Qgb2xkQmFzZV9DbGFzc2lmaWVyID0gKEludGVybmFsRU9iamVjdCliYXNlX0NsYXNzaWZpZXI7DQorCQkJYmFzZV9DbGFzc2lmaWVyID0gKENsYXNzaWZpZXIpZVJlc29sdmVQcm94eShvbGRCYXNlX0NsYXNzaWZpZXIpOw0KKwkJCWlmIChiYXNlX0NsYXNzaWZpZXIgIT0gb2xkQmFzZV9DbGFzc2lmaWVyKSB7DQorCQkJCWlmIChlTm90aWZpY2F0aW9uUmVxdWlyZWQoKSkNCisJCQkJCWVOb3RpZnkobmV3IEVOb3RpZmljYXRpb25JbXBsKHRoaXMsIE5vdGlmaWNhdGlvbi5SRVNPTFZFLCBCbG9ja3NQYWNrYWdlLlBST1BFUlRZX1NQRUNJRklDX1RZUEVfX0JBU0VfQ0xBU1NJRklFUiwgb2xkQmFzZV9DbGFzc2lmaWVyLCBiYXNlX0NsYXNzaWZpZXIpKTsNCisJCQl9DQorCQl9DQorCQlyZXR1cm4gYmFzZV9DbGFzc2lmaWVyOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIENsYXNzaWZpZXIgYmFzaWNHZXRCYXNlX0NsYXNzaWZpZXIoKSB7DQorCQlyZXR1cm4gYmFzZV9DbGFzc2lmaWVyOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIHZvaWQgc2V0QmFzZV9DbGFzc2lmaWVyKENsYXNzaWZpZXIgbmV3QmFzZV9DbGFzc2lmaWVyKSB7DQorCQlDbGFzc2lmaWVyIG9sZEJhc2VfQ2xhc3NpZmllciA9IGJhc2VfQ2xhc3NpZmllcjsNCisJCWJhc2VfQ2xhc3NpZmllciA9IG5ld0Jhc2VfQ2xhc3NpZmllcjsNCisJCWlmIChlTm90aWZpY2F0aW9uUmVxdWlyZWQoKSkNCisJCQllTm90aWZ5KG5ldyBFTm90aWZpY2F0aW9uSW1wbCh0aGlzLCBOb3RpZmljYXRpb24uU0VULCBCbG9ja3NQYWNrYWdlLlBST1BFUlRZX1NQRUNJRklDX1RZUEVfX0JBU0VfQ0xBU1NJRklFUiwgb2xkQmFzZV9DbGFzc2lmaWVyLCBiYXNlX0NsYXNzaWZpZXIpKTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgT2JqZWN0IGVHZXQoaW50IGZlYXR1cmVJRCwgYm9vbGVhbiByZXNvbHZlLCBib29sZWFuIGNvcmVUeXBlKSB7DQorCQlzd2l0Y2ggKGZlYXR1cmVJRCkgew0KKwkJCWNhc2UgQmxvY2tzUGFja2FnZS5QUk9QRVJUWV9TUEVDSUZJQ19UWVBFX19CQVNFX0NMQVNTSUZJRVI6DQorCQkJCWlmIChyZXNvbHZlKSByZXR1cm4gZ2V0QmFzZV9DbGFzc2lmaWVyKCk7DQorCQkJCXJldHVybiBiYXNpY0dldEJhc2VfQ2xhc3NpZmllcigpOw0KKwkJfQ0KKwkJcmV0dXJuIHN1cGVyLmVHZXQoZmVhdHVyZUlELCByZXNvbHZlLCBjb3JlVHlwZSk7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIHZvaWQgZVNldChpbnQgZmVhdHVyZUlELCBPYmplY3QgbmV3VmFsdWUpIHsNCisJCXN3aXRjaCAoZmVhdHVyZUlEKSB7DQorCQkJY2FzZSBCbG9ja3NQYWNrYWdlLlBST1BFUlRZX1NQRUNJRklDX1RZUEVfX0JBU0VfQ0xBU1NJRklFUjoNCisJCQkJc2V0QmFzZV9DbGFzc2lmaWVyKChDbGFzc2lmaWVyKW5ld1ZhbHVlKTsNCisJCQkJcmV0dXJuOw0KKwkJfQ0KKwkJc3VwZXIuZVNldChmZWF0dXJlSUQsIG5ld1ZhbHVlKTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgdm9pZCBlVW5zZXQoaW50IGZlYXR1cmVJRCkgew0KKwkJc3dpdGNoIChmZWF0dXJlSUQpIHsNCisJCQljYXNlIEJsb2Nrc1BhY2thZ2UuUFJPUEVSVFlfU1BFQ0lGSUNfVFlQRV9fQkFTRV9DTEFTU0lGSUVSOg0KKwkJCQlzZXRCYXNlX0NsYXNzaWZpZXIoKENsYXNzaWZpZXIpbnVsbCk7DQorCQkJCXJldHVybjsNCisJCX0NCisJCXN1cGVyLmVVbnNldChmZWF0dXJlSUQpOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXB1YmxpYyBib29sZWFuIGVJc1NldChpbnQgZmVhdHVyZUlEKSB7DQorCQlzd2l0Y2ggKGZlYXR1cmVJRCkgew0KKwkJCWNhc2UgQmxvY2tzUGFja2FnZS5QUk9QRVJUWV9TUEVDSUZJQ19UWVBFX19CQVNFX0NMQVNTSUZJRVI6DQorCQkJCXJldHVybiBiYXNlX0NsYXNzaWZpZXIgIT0gbnVsbDsNCisJCX0NCisJCXJldHVybiBzdXBlci5lSXNTZXQoZmVhdHVyZUlEKTsNCisJfQ0KKw0KK30gLy9Qcm9wZXJ0eVNwZWNpZmljVHlwZUltcGwNCmRpZmYgLS1naXQgYS9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9ibG9ja3MvaW50ZXJuYWwvaW1wbC9WYWx1ZVR5cGVJbXBsLmphdmEgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9ibG9ja3MvaW50ZXJuYWwvaW1wbC9WYWx1ZVR5cGVJbXBsLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODBjNTJhZAotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L2Jsb2Nrcy9pbnRlcm5hbC9pbXBsL1ZhbHVlVHlwZUltcGwuamF2YQpAQCAtMCwwICsxLDI4NSBAQAorLyoqDQorICogQ29weXJpZ2h0IChjKSAyMDE1IENFQSBMSVNULg0KKyAqIA0KKyAqICBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQorICogIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KKyAqICB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KKyAqICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqLw0KK3BhY2thZ2Ugb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmJsb2Nrcy5pbnRlcm5hbC5pbXBsOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY29tbW9uLm5vdGlmeS5Ob3RpZmljYXRpb247DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FQ2xhc3M7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5JbnRlcm5hbEVPYmplY3Q7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5pbXBsLkVOb3RpZmljYXRpb25JbXBsOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuaW1wbC5NaW5pbWFsRU9iamVjdEltcGw7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5ibG9ja3MuQmxvY2tzUGFja2FnZTsNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmJsb2Nrcy5WYWx1ZVR5cGU7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLnVtbDIudW1sLkRhdGFUeXBlOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS51bWwyLnVtbC5JbnN0YW5jZVNwZWNpZmljYXRpb247DQorDQorLyoqDQorICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisgKiBBbiBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgbW9kZWwgb2JqZWN0ICc8ZW0+PGI+VmFsdWUgVHlwZTwvYj48L2VtPicuDQorICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorICogPHA+DQorICogVGhlIGZvbGxvd2luZyBmZWF0dXJlcyBhcmUgaW1wbGVtZW50ZWQ6DQorICogPHVsPg0KKyAqICAgPGxpPntAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYmxvY2tzLmludGVybmFsLmltcGwuVmFsdWVUeXBlSW1wbCNnZXRCYXNlX0RhdGFUeXBlIDxlbT5CYXNlIERhdGEgVHlwZTwvZW0+fTwvbGk+DQorICogICA8bGk+e0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5ibG9ja3MuaW50ZXJuYWwuaW1wbC5WYWx1ZVR5cGVJbXBsI2dldFVuaXQgPGVtPlVuaXQ8L2VtPn08L2xpPg0KKyAqICAgPGxpPntAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYmxvY2tzLmludGVybmFsLmltcGwuVmFsdWVUeXBlSW1wbCNnZXRRdWFudGl0eUtpbmQgPGVtPlF1YW50aXR5IEtpbmQ8L2VtPn08L2xpPg0KKyAqIDwvdWw+DQorICogPC9wPg0KKyAqDQorICogQGdlbmVyYXRlZA0KKyAqLw0KK3B1YmxpYyBjbGFzcyBWYWx1ZVR5cGVJbXBsIGV4dGVuZHMgTWluaW1hbEVPYmplY3RJbXBsLkNvbnRhaW5lciBpbXBsZW1lbnRzIFZhbHVlVHlwZSB7DQorCS8qKg0KKwkgKiBUaGUgY2FjaGVkIHZhbHVlIG9mIHRoZSAne0BsaW5rICNnZXRCYXNlX0RhdGFUeXBlKCkgPGVtPkJhc2UgRGF0YSBUeXBlPC9lbT59JyByZWZlcmVuY2UuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAc2VlICNnZXRCYXNlX0RhdGFUeXBlKCkNCisJICogQGdlbmVyYXRlZA0KKwkgKiBAb3JkZXJlZA0KKwkgKi8NCisJcHJvdGVjdGVkIERhdGFUeXBlIGJhc2VfRGF0YVR5cGU7DQorDQorCS8qKg0KKwkgKiBUaGUgY2FjaGVkIHZhbHVlIG9mIHRoZSAne0BsaW5rICNnZXRVbml0KCkgPGVtPlVuaXQ8L2VtPn0nIHJlZmVyZW5jZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBzZWUgI2dldFVuaXQoKQ0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqIEBvcmRlcmVkDQorCSAqLw0KKwlwcm90ZWN0ZWQgSW5zdGFuY2VTcGVjaWZpY2F0aW9uIHVuaXQ7DQorDQorCS8qKg0KKwkgKiBUaGUgY2FjaGVkIHZhbHVlIG9mIHRoZSAne0BsaW5rICNnZXRRdWFudGl0eUtpbmQoKSA8ZW0+UXVhbnRpdHkgS2luZDwvZW0+fScgcmVmZXJlbmNlLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHNlZSAjZ2V0UXVhbnRpdHlLaW5kKCkNCisJICogQGdlbmVyYXRlZA0KKwkgKiBAb3JkZXJlZA0KKwkgKi8NCisJcHJvdGVjdGVkIEluc3RhbmNlU3BlY2lmaWNhdGlvbiBxdWFudGl0eUtpbmQ7DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHJvdGVjdGVkIFZhbHVlVHlwZUltcGwoKSB7DQorCQlzdXBlcigpOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXByb3RlY3RlZCBFQ2xhc3MgZVN0YXRpY0NsYXNzKCkgew0KKwkJcmV0dXJuIEJsb2Nrc1BhY2thZ2UuTGl0ZXJhbHMuVkFMVUVfVFlQRTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBEYXRhVHlwZSBnZXRCYXNlX0RhdGFUeXBlKCkgew0KKwkJaWYgKGJhc2VfRGF0YVR5cGUgIT0gbnVsbCAmJiBiYXNlX0RhdGFUeXBlLmVJc1Byb3h5KCkpIHsNCisJCQlJbnRlcm5hbEVPYmplY3Qgb2xkQmFzZV9EYXRhVHlwZSA9IChJbnRlcm5hbEVPYmplY3QpYmFzZV9EYXRhVHlwZTsNCisJCQliYXNlX0RhdGFUeXBlID0gKERhdGFUeXBlKWVSZXNvbHZlUHJveHkob2xkQmFzZV9EYXRhVHlwZSk7DQorCQkJaWYgKGJhc2VfRGF0YVR5cGUgIT0gb2xkQmFzZV9EYXRhVHlwZSkgew0KKwkJCQlpZiAoZU5vdGlmaWNhdGlvblJlcXVpcmVkKCkpDQorCQkJCQllTm90aWZ5KG5ldyBFTm90aWZpY2F0aW9uSW1wbCh0aGlzLCBOb3RpZmljYXRpb24uUkVTT0xWRSwgQmxvY2tzUGFja2FnZS5WQUxVRV9UWVBFX19CQVNFX0RBVEFfVFlQRSwgb2xkQmFzZV9EYXRhVHlwZSwgYmFzZV9EYXRhVHlwZSkpOw0KKwkJCX0NCisJCX0NCisJCXJldHVybiBiYXNlX0RhdGFUeXBlOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIERhdGFUeXBlIGJhc2ljR2V0QmFzZV9EYXRhVHlwZSgpIHsNCisJCXJldHVybiBiYXNlX0RhdGFUeXBlOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIHZvaWQgc2V0QmFzZV9EYXRhVHlwZShEYXRhVHlwZSBuZXdCYXNlX0RhdGFUeXBlKSB7DQorCQlEYXRhVHlwZSBvbGRCYXNlX0RhdGFUeXBlID0gYmFzZV9EYXRhVHlwZTsNCisJCWJhc2VfRGF0YVR5cGUgPSBuZXdCYXNlX0RhdGFUeXBlOw0KKwkJaWYgKGVOb3RpZmljYXRpb25SZXF1aXJlZCgpKQ0KKwkJCWVOb3RpZnkobmV3IEVOb3RpZmljYXRpb25JbXBsKHRoaXMsIE5vdGlmaWNhdGlvbi5TRVQsIEJsb2Nrc1BhY2thZ2UuVkFMVUVfVFlQRV9fQkFTRV9EQVRBX1RZUEUsIG9sZEJhc2VfRGF0YVR5cGUsIGJhc2VfRGF0YVR5cGUpKTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBJbnN0YW5jZVNwZWNpZmljYXRpb24gZ2V0VW5pdCgpIHsNCisJCWlmICh1bml0ICE9IG51bGwgJiYgdW5pdC5lSXNQcm94eSgpKSB7DQorCQkJSW50ZXJuYWxFT2JqZWN0IG9sZFVuaXQgPSAoSW50ZXJuYWxFT2JqZWN0KXVuaXQ7DQorCQkJdW5pdCA9IChJbnN0YW5jZVNwZWNpZmljYXRpb24pZVJlc29sdmVQcm94eShvbGRVbml0KTsNCisJCQlpZiAodW5pdCAhPSBvbGRVbml0KSB7DQorCQkJCWlmIChlTm90aWZpY2F0aW9uUmVxdWlyZWQoKSkNCisJCQkJCWVOb3RpZnkobmV3IEVOb3RpZmljYXRpb25JbXBsKHRoaXMsIE5vdGlmaWNhdGlvbi5SRVNPTFZFLCBCbG9ja3NQYWNrYWdlLlZBTFVFX1RZUEVfX1VOSVQsIG9sZFVuaXQsIHVuaXQpKTsNCisJCQl9DQorCQl9DQorCQlyZXR1cm4gdW5pdDsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBJbnN0YW5jZVNwZWNpZmljYXRpb24gYmFzaWNHZXRVbml0KCkgew0KKwkJcmV0dXJuIHVuaXQ7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgdm9pZCBzZXRVbml0KEluc3RhbmNlU3BlY2lmaWNhdGlvbiBuZXdVbml0KSB7DQorCQlJbnN0YW5jZVNwZWNpZmljYXRpb24gb2xkVW5pdCA9IHVuaXQ7DQorCQl1bml0ID0gbmV3VW5pdDsNCisJCWlmIChlTm90aWZpY2F0aW9uUmVxdWlyZWQoKSkNCisJCQllTm90aWZ5KG5ldyBFTm90aWZpY2F0aW9uSW1wbCh0aGlzLCBOb3RpZmljYXRpb24uU0VULCBCbG9ja3NQYWNrYWdlLlZBTFVFX1RZUEVfX1VOSVQsIG9sZFVuaXQsIHVuaXQpKTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBJbnN0YW5jZVNwZWNpZmljYXRpb24gZ2V0UXVhbnRpdHlLaW5kKCkgew0KKwkJaWYgKHF1YW50aXR5S2luZCAhPSBudWxsICYmIHF1YW50aXR5S2luZC5lSXNQcm94eSgpKSB7DQorCQkJSW50ZXJuYWxFT2JqZWN0IG9sZFF1YW50aXR5S2luZCA9IChJbnRlcm5hbEVPYmplY3QpcXVhbnRpdHlLaW5kOw0KKwkJCXF1YW50aXR5S2luZCA9IChJbnN0YW5jZVNwZWNpZmljYXRpb24pZVJlc29sdmVQcm94eShvbGRRdWFudGl0eUtpbmQpOw0KKwkJCWlmIChxdWFudGl0eUtpbmQgIT0gb2xkUXVhbnRpdHlLaW5kKSB7DQorCQkJCWlmIChlTm90aWZpY2F0aW9uUmVxdWlyZWQoKSkNCisJCQkJCWVOb3RpZnkobmV3IEVOb3RpZmljYXRpb25JbXBsKHRoaXMsIE5vdGlmaWNhdGlvbi5SRVNPTFZFLCBCbG9ja3NQYWNrYWdlLlZBTFVFX1RZUEVfX1FVQU5USVRZX0tJTkQsIG9sZFF1YW50aXR5S2luZCwgcXVhbnRpdHlLaW5kKSk7DQorCQkJfQ0KKwkJfQ0KKwkJcmV0dXJuIHF1YW50aXR5S2luZDsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBJbnN0YW5jZVNwZWNpZmljYXRpb24gYmFzaWNHZXRRdWFudGl0eUtpbmQoKSB7DQorCQlyZXR1cm4gcXVhbnRpdHlLaW5kOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIHZvaWQgc2V0UXVhbnRpdHlLaW5kKEluc3RhbmNlU3BlY2lmaWNhdGlvbiBuZXdRdWFudGl0eUtpbmQpIHsNCisJCUluc3RhbmNlU3BlY2lmaWNhdGlvbiBvbGRRdWFudGl0eUtpbmQgPSBxdWFudGl0eUtpbmQ7DQorCQlxdWFudGl0eUtpbmQgPSBuZXdRdWFudGl0eUtpbmQ7DQorCQlpZiAoZU5vdGlmaWNhdGlvblJlcXVpcmVkKCkpDQorCQkJZU5vdGlmeShuZXcgRU5vdGlmaWNhdGlvbkltcGwodGhpcywgTm90aWZpY2F0aW9uLlNFVCwgQmxvY2tzUGFja2FnZS5WQUxVRV9UWVBFX19RVUFOVElUWV9LSU5ELCBvbGRRdWFudGl0eUtpbmQsIHF1YW50aXR5S2luZCkpOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXB1YmxpYyBPYmplY3QgZUdldChpbnQgZmVhdHVyZUlELCBib29sZWFuIHJlc29sdmUsIGJvb2xlYW4gY29yZVR5cGUpIHsNCisJCXN3aXRjaCAoZmVhdHVyZUlEKSB7DQorCQkJY2FzZSBCbG9ja3NQYWNrYWdlLlZBTFVFX1RZUEVfX0JBU0VfREFUQV9UWVBFOg0KKwkJCQlpZiAocmVzb2x2ZSkgcmV0dXJuIGdldEJhc2VfRGF0YVR5cGUoKTsNCisJCQkJcmV0dXJuIGJhc2ljR2V0QmFzZV9EYXRhVHlwZSgpOw0KKwkJCWNhc2UgQmxvY2tzUGFja2FnZS5WQUxVRV9UWVBFX19VTklUOg0KKwkJCQlpZiAocmVzb2x2ZSkgcmV0dXJuIGdldFVuaXQoKTsNCisJCQkJcmV0dXJuIGJhc2ljR2V0VW5pdCgpOw0KKwkJCWNhc2UgQmxvY2tzUGFja2FnZS5WQUxVRV9UWVBFX19RVUFOVElUWV9LSU5EOg0KKwkJCQlpZiAocmVzb2x2ZSkgcmV0dXJuIGdldFF1YW50aXR5S2luZCgpOw0KKwkJCQlyZXR1cm4gYmFzaWNHZXRRdWFudGl0eUtpbmQoKTsNCisJCX0NCisJCXJldHVybiBzdXBlci5lR2V0KGZlYXR1cmVJRCwgcmVzb2x2ZSwgY29yZVR5cGUpOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXB1YmxpYyB2b2lkIGVTZXQoaW50IGZlYXR1cmVJRCwgT2JqZWN0IG5ld1ZhbHVlKSB7DQorCQlzd2l0Y2ggKGZlYXR1cmVJRCkgew0KKwkJCWNhc2UgQmxvY2tzUGFja2FnZS5WQUxVRV9UWVBFX19CQVNFX0RBVEFfVFlQRToNCisJCQkJc2V0QmFzZV9EYXRhVHlwZSgoRGF0YVR5cGUpbmV3VmFsdWUpOw0KKwkJCQlyZXR1cm47DQorCQkJY2FzZSBCbG9ja3NQYWNrYWdlLlZBTFVFX1RZUEVfX1VOSVQ6DQorCQkJCXNldFVuaXQoKEluc3RhbmNlU3BlY2lmaWNhdGlvbiluZXdWYWx1ZSk7DQorCQkJCXJldHVybjsNCisJCQljYXNlIEJsb2Nrc1BhY2thZ2UuVkFMVUVfVFlQRV9fUVVBTlRJVFlfS0lORDoNCisJCQkJc2V0UXVhbnRpdHlLaW5kKChJbnN0YW5jZVNwZWNpZmljYXRpb24pbmV3VmFsdWUpOw0KKwkJCQlyZXR1cm47DQorCQl9DQorCQlzdXBlci5lU2V0KGZlYXR1cmVJRCwgbmV3VmFsdWUpOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXB1YmxpYyB2b2lkIGVVbnNldChpbnQgZmVhdHVyZUlEKSB7DQorCQlzd2l0Y2ggKGZlYXR1cmVJRCkgew0KKwkJCWNhc2UgQmxvY2tzUGFja2FnZS5WQUxVRV9UWVBFX19CQVNFX0RBVEFfVFlQRToNCisJCQkJc2V0QmFzZV9EYXRhVHlwZSgoRGF0YVR5cGUpbnVsbCk7DQorCQkJCXJldHVybjsNCisJCQljYXNlIEJsb2Nrc1BhY2thZ2UuVkFMVUVfVFlQRV9fVU5JVDoNCisJCQkJc2V0VW5pdCgoSW5zdGFuY2VTcGVjaWZpY2F0aW9uKW51bGwpOw0KKwkJCQlyZXR1cm47DQorCQkJY2FzZSBCbG9ja3NQYWNrYWdlLlZBTFVFX1RZUEVfX1FVQU5USVRZX0tJTkQ6DQorCQkJCXNldFF1YW50aXR5S2luZCgoSW5zdGFuY2VTcGVjaWZpY2F0aW9uKW51bGwpOw0KKwkJCQlyZXR1cm47DQorCQl9DQorCQlzdXBlci5lVW5zZXQoZmVhdHVyZUlEKTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgYm9vbGVhbiBlSXNTZXQoaW50IGZlYXR1cmVJRCkgew0KKwkJc3dpdGNoIChmZWF0dXJlSUQpIHsNCisJCQljYXNlIEJsb2Nrc1BhY2thZ2UuVkFMVUVfVFlQRV9fQkFTRV9EQVRBX1RZUEU6DQorCQkJCXJldHVybiBiYXNlX0RhdGFUeXBlICE9IG51bGw7DQorCQkJY2FzZSBCbG9ja3NQYWNrYWdlLlZBTFVFX1RZUEVfX1VOSVQ6DQorCQkJCXJldHVybiB1bml0ICE9IG51bGw7DQorCQkJY2FzZSBCbG9ja3NQYWNrYWdlLlZBTFVFX1RZUEVfX1FVQU5USVRZX0tJTkQ6DQorCQkJCXJldHVybiBxdWFudGl0eUtpbmQgIT0gbnVsbDsNCisJCX0NCisJCXJldHVybiBzdXBlci5lSXNTZXQoZmVhdHVyZUlEKTsNCisJfQ0KKw0KK30gLy9WYWx1ZVR5cGVJbXBsDQpkaWZmIC0tZ2l0IGEvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvYmxvY2tzL3V0aWwvQmxvY2tzQWRhcHRlckZhY3RvcnkuamF2YSBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L2Jsb2Nrcy91dGlsL0Jsb2Nrc0FkYXB0ZXJGYWN0b3J5LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGE3ODJjOAotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L2Jsb2Nrcy91dGlsL0Jsb2Nrc0FkYXB0ZXJGYWN0b3J5LmphdmEKQEAgLTAsMCArMSwzNjAgQEAKKy8qKg0KKyAqIENvcHlyaWdodCAoYykgMjAxNSBDRUEgTElTVC4NCisgKiANCisgKiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KKyAqICBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCisgKiAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCisgKiAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgKi8NCitwYWNrYWdlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5ibG9ja3MudXRpbDsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi5ub3RpZnkuQWRhcHRlcjsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi5ub3RpZnkuTm90aWZpZXI7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jb21tb24ubm90aWZ5LmltcGwuQWRhcHRlckZhY3RvcnlJbXBsOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRU9iamVjdDsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmJsb2Nrcy4qOw0KKw0KKy8qKg0KKyAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorICogVGhlIDxiPkFkYXB0ZXIgRmFjdG9yeTwvYj4gZm9yIHRoZSBtb2RlbC4NCisgKiBJdCBwcm92aWRlcyBhbiBhZGFwdGVyIDxjb2RlPmNyZWF0ZVhYWDwvY29kZT4gbWV0aG9kIGZvciBlYWNoIGNsYXNzIG9mIHRoZSBtb2RlbC4NCisgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5ibG9ja3MuQmxvY2tzUGFja2FnZQ0KKyAqIEBnZW5lcmF0ZWQNCisgKi8NCitwdWJsaWMgY2xhc3MgQmxvY2tzQWRhcHRlckZhY3RvcnkgZXh0ZW5kcyBBZGFwdGVyRmFjdG9yeUltcGwgew0KKwkvKioNCisJICogVGhlIGNhY2hlZCBtb2RlbCBwYWNrYWdlLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHJvdGVjdGVkIHN0YXRpYyBCbG9ja3NQYWNrYWdlIG1vZGVsUGFja2FnZTsNCisNCisJLyoqDQorCSAqIENyZWF0ZXMgYW4gaW5zdGFuY2Ugb2YgdGhlIGFkYXB0ZXIgZmFjdG9yeS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBCbG9ja3NBZGFwdGVyRmFjdG9yeSgpIHsNCisJCWlmIChtb2RlbFBhY2thZ2UgPT0gbnVsbCkgew0KKwkJCW1vZGVsUGFja2FnZSA9IEJsb2Nrc1BhY2thZ2UuZUlOU1RBTkNFOw0KKwkJfQ0KKwl9DQorDQorCS8qKg0KKwkgKiBSZXR1cm5zIHdoZXRoZXIgdGhpcyBmYWN0b3J5IGlzIGFwcGxpY2FibGUgZm9yIHRoZSB0eXBlIG9mIHRoZSBvYmplY3QuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIFRoaXMgaW1wbGVtZW50YXRpb24gcmV0dXJucyA8Y29kZT50cnVlPC9jb2RlPiBpZiB0aGUgb2JqZWN0IGlzIGVpdGhlciB0aGUgbW9kZWwncyBwYWNrYWdlIG9yIGlzIGFuIGluc3RhbmNlIG9iamVjdCBvZiB0aGUgbW9kZWwuDQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAcmV0dXJuIHdoZXRoZXIgdGhpcyBmYWN0b3J5IGlzIGFwcGxpY2FibGUgZm9yIHRoZSB0eXBlIG9mIHRoZSBvYmplY3QuDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgYm9vbGVhbiBpc0ZhY3RvcnlGb3JUeXBlKE9iamVjdCBvYmplY3QpIHsNCisJCWlmIChvYmplY3QgPT0gbW9kZWxQYWNrYWdlKSB7DQorCQkJcmV0dXJuIHRydWU7DQorCQl9DQorCQlpZiAob2JqZWN0IGluc3RhbmNlb2YgRU9iamVjdCkgew0KKwkJCXJldHVybiAoKEVPYmplY3Qpb2JqZWN0KS5lQ2xhc3MoKS5nZXRFUGFja2FnZSgpID09IG1vZGVsUGFja2FnZTsNCisJCX0NCisJCXJldHVybiBmYWxzZTsNCisJfQ0KKw0KKwkvKioNCisJICogVGhlIHN3aXRjaCB0aGF0IGRlbGVnYXRlcyB0byB0aGUgPGNvZGU+Y3JlYXRlWFhYPC9jb2RlPiBtZXRob2RzLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHJvdGVjdGVkIEJsb2Nrc1N3aXRjaDxBZGFwdGVyPiBtb2RlbFN3aXRjaCA9DQorCQluZXcgQmxvY2tzU3dpdGNoPEFkYXB0ZXI+KCkgew0KKwkJCUBPdmVycmlkZQ0KKwkJCXB1YmxpYyBBZGFwdGVyIGNhc2VWYWx1ZVR5cGUoVmFsdWVUeXBlIG9iamVjdCkgew0KKwkJCQlyZXR1cm4gY3JlYXRlVmFsdWVUeXBlQWRhcHRlcigpOw0KKwkJCX0NCisJCQlAT3ZlcnJpZGUNCisJCQlwdWJsaWMgQWRhcHRlciBjYXNlRGlzdHJpYnV0ZWRQcm9wZXJ0eShEaXN0cmlidXRlZFByb3BlcnR5IG9iamVjdCkgew0KKwkJCQlyZXR1cm4gY3JlYXRlRGlzdHJpYnV0ZWRQcm9wZXJ0eUFkYXB0ZXIoKTsNCisJCQl9DQorCQkJQE92ZXJyaWRlDQorCQkJcHVibGljIEFkYXB0ZXIgY2FzZUNvbm5lY3RvclByb3BlcnR5KENvbm5lY3RvclByb3BlcnR5IG9iamVjdCkgew0KKwkJCQlyZXR1cm4gY3JlYXRlQ29ubmVjdG9yUHJvcGVydHlBZGFwdGVyKCk7DQorCQkJfQ0KKwkJCUBPdmVycmlkZQ0KKwkJCXB1YmxpYyBBZGFwdGVyIGNhc2VQYXJ0aWNpcGFudFByb3BlcnR5KFBhcnRpY2lwYW50UHJvcGVydHkgb2JqZWN0KSB7DQorCQkJCXJldHVybiBjcmVhdGVQYXJ0aWNpcGFudFByb3BlcnR5QWRhcHRlcigpOw0KKwkJCX0NCisJCQlAT3ZlcnJpZGUNCisJCQlwdWJsaWMgQWRhcHRlciBjYXNlQmluZGluZ0Nvbm5lY3RvcihCaW5kaW5nQ29ubmVjdG9yIG9iamVjdCkgew0KKwkJCQlyZXR1cm4gY3JlYXRlQmluZGluZ0Nvbm5lY3RvckFkYXB0ZXIoKTsNCisJCQl9DQorCQkJQE92ZXJyaWRlDQorCQkJcHVibGljIEFkYXB0ZXIgY2FzZUJsb2NrKEJsb2NrIG9iamVjdCkgew0KKwkJCQlyZXR1cm4gY3JlYXRlQmxvY2tBZGFwdGVyKCk7DQorCQkJfQ0KKwkJCUBPdmVycmlkZQ0KKwkJCXB1YmxpYyBBZGFwdGVyIGNhc2VQcm9wZXJ0eVNwZWNpZmljVHlwZShQcm9wZXJ0eVNwZWNpZmljVHlwZSBvYmplY3QpIHsNCisJCQkJcmV0dXJuIGNyZWF0ZVByb3BlcnR5U3BlY2lmaWNUeXBlQWRhcHRlcigpOw0KKwkJCX0NCisJCQlAT3ZlcnJpZGUNCisJCQlwdWJsaWMgQWRhcHRlciBjYXNlTmVzdGVkQ29ubmVjdG9yRW5kKE5lc3RlZENvbm5lY3RvckVuZCBvYmplY3QpIHsNCisJCQkJcmV0dXJuIGNyZWF0ZU5lc3RlZENvbm5lY3RvckVuZEFkYXB0ZXIoKTsNCisJCQl9DQorCQkJQE92ZXJyaWRlDQorCQkJcHVibGljIEFkYXB0ZXIgY2FzZUVsZW1lbnRQcm9wZXJ0eVBhdGgoRWxlbWVudFByb3BlcnR5UGF0aCBvYmplY3QpIHsNCisJCQkJcmV0dXJuIGNyZWF0ZUVsZW1lbnRQcm9wZXJ0eVBhdGhBZGFwdGVyKCk7DQorCQkJfQ0KKwkJCUBPdmVycmlkZQ0KKwkJCXB1YmxpYyBBZGFwdGVyIGNhc2VEaXJlY3RlZFJlbGF0aW9uc2hpcFByb3BlcnR5UGF0aChEaXJlY3RlZFJlbGF0aW9uc2hpcFByb3BlcnR5UGF0aCBvYmplY3QpIHsNCisJCQkJcmV0dXJuIGNyZWF0ZURpcmVjdGVkUmVsYXRpb25zaGlwUHJvcGVydHlQYXRoQWRhcHRlcigpOw0KKwkJCX0NCisJCQlAT3ZlcnJpZGUNCisJCQlwdWJsaWMgQWRhcHRlciBjYXNlRW5kUGF0aE11bHRpcGxpY2l0eShFbmRQYXRoTXVsdGlwbGljaXR5IG9iamVjdCkgew0KKwkJCQlyZXR1cm4gY3JlYXRlRW5kUGF0aE11bHRpcGxpY2l0eUFkYXB0ZXIoKTsNCisJCQl9DQorCQkJQE92ZXJyaWRlDQorCQkJcHVibGljIEFkYXB0ZXIgY2FzZUJvdW5kUmVmZXJlbmNlKEJvdW5kUmVmZXJlbmNlIG9iamVjdCkgew0KKwkJCQlyZXR1cm4gY3JlYXRlQm91bmRSZWZlcmVuY2VBZGFwdGVyKCk7DQorCQkJfQ0KKwkJCUBPdmVycmlkZQ0KKwkJCXB1YmxpYyBBZGFwdGVyIGNhc2VBZGp1bmN0UHJvcGVydHkoQWRqdW5jdFByb3BlcnR5IG9iamVjdCkgew0KKwkJCQlyZXR1cm4gY3JlYXRlQWRqdW5jdFByb3BlcnR5QWRhcHRlcigpOw0KKwkJCX0NCisJCQlAT3ZlcnJpZGUNCisJCQlwdWJsaWMgQWRhcHRlciBjYXNlQ2xhc3NpZmllckJlaGF2aW9yUHJvcGVydHkoQ2xhc3NpZmllckJlaGF2aW9yUHJvcGVydHkgb2JqZWN0KSB7DQorCQkJCXJldHVybiBjcmVhdGVDbGFzc2lmaWVyQmVoYXZpb3JQcm9wZXJ0eUFkYXB0ZXIoKTsNCisJCQl9DQorCQkJQE92ZXJyaWRlDQorCQkJcHVibGljIEFkYXB0ZXIgZGVmYXVsdENhc2UoRU9iamVjdCBvYmplY3QpIHsNCisJCQkJcmV0dXJuIGNyZWF0ZUVPYmplY3RBZGFwdGVyKCk7DQorCQkJfQ0KKwkJfTsNCisNCisJLyoqDQorCSAqIENyZWF0ZXMgYW4gYWRhcHRlciBmb3IgdGhlIDxjb2RlPnRhcmdldDwvY29kZT4uDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAcGFyYW0gdGFyZ2V0IHRoZSBvYmplY3QgdG8gYWRhcHQuDQorCSAqIEByZXR1cm4gdGhlIGFkYXB0ZXIgZm9yIHRoZSA8Y29kZT50YXJnZXQ8L2NvZGU+Lg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIEFkYXB0ZXIgY3JlYXRlQWRhcHRlcihOb3RpZmllciB0YXJnZXQpIHsNCisJCXJldHVybiBtb2RlbFN3aXRjaC5kb1N3aXRjaCgoRU9iamVjdCl0YXJnZXQpOw0KKwl9DQorDQorDQorCS8qKg0KKwkgKiBDcmVhdGVzIGEgbmV3IGFkYXB0ZXIgZm9yIGFuIG9iamVjdCBvZiBjbGFzcyAne0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5ibG9ja3MuVmFsdWVUeXBlIDxlbT5WYWx1ZSBUeXBlPC9lbT59Jy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogVGhpcyBkZWZhdWx0IGltcGxlbWVudGF0aW9uIHJldHVybnMgbnVsbCBzbyB0aGF0IHdlIGNhbiBlYXNpbHkgaWdub3JlIGNhc2VzOw0KKwkgKiBpdCdzIHVzZWZ1bCB0byBpZ25vcmUgYSBjYXNlIHdoZW4gaW5oZXJpdGFuY2Ugd2lsbCBjYXRjaCBhbGwgdGhlIGNhc2VzIGFueXdheS4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEByZXR1cm4gdGhlIG5ldyBhZGFwdGVyLg0KKwkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5ibG9ja3MuVmFsdWVUeXBlDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBBZGFwdGVyIGNyZWF0ZVZhbHVlVHlwZUFkYXB0ZXIoKSB7DQorCQlyZXR1cm4gbnVsbDsNCisJfQ0KKw0KKwkvKioNCisJICogQ3JlYXRlcyBhIG5ldyBhZGFwdGVyIGZvciBhbiBvYmplY3Qgb2YgY2xhc3MgJ3tAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYmxvY2tzLkRpc3RyaWJ1dGVkUHJvcGVydHkgPGVtPkRpc3RyaWJ1dGVkIFByb3BlcnR5PC9lbT59Jy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogVGhpcyBkZWZhdWx0IGltcGxlbWVudGF0aW9uIHJldHVybnMgbnVsbCBzbyB0aGF0IHdlIGNhbiBlYXNpbHkgaWdub3JlIGNhc2VzOw0KKwkgKiBpdCdzIHVzZWZ1bCB0byBpZ25vcmUgYSBjYXNlIHdoZW4gaW5oZXJpdGFuY2Ugd2lsbCBjYXRjaCBhbGwgdGhlIGNhc2VzIGFueXdheS4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEByZXR1cm4gdGhlIG5ldyBhZGFwdGVyLg0KKwkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5ibG9ja3MuRGlzdHJpYnV0ZWRQcm9wZXJ0eQ0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgQWRhcHRlciBjcmVhdGVEaXN0cmlidXRlZFByb3BlcnR5QWRhcHRlcigpIHsNCisJCXJldHVybiBudWxsOw0KKwl9DQorDQorCS8qKg0KKwkgKiBDcmVhdGVzIGEgbmV3IGFkYXB0ZXIgZm9yIGFuIG9iamVjdCBvZiBjbGFzcyAne0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5ibG9ja3MuQ29ubmVjdG9yUHJvcGVydHkgPGVtPkNvbm5lY3RvciBQcm9wZXJ0eTwvZW0+fScuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIFRoaXMgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiByZXR1cm5zIG51bGwgc28gdGhhdCB3ZSBjYW4gZWFzaWx5IGlnbm9yZSBjYXNlczsNCisJICogaXQncyB1c2VmdWwgdG8gaWdub3JlIGEgY2FzZSB3aGVuIGluaGVyaXRhbmNlIHdpbGwgY2F0Y2ggYWxsIHRoZSBjYXNlcyBhbnl3YXkuDQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAcmV0dXJuIHRoZSBuZXcgYWRhcHRlci4NCisJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYmxvY2tzLkNvbm5lY3RvclByb3BlcnR5DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBBZGFwdGVyIGNyZWF0ZUNvbm5lY3RvclByb3BlcnR5QWRhcHRlcigpIHsNCisJCXJldHVybiBudWxsOw0KKwl9DQorDQorCS8qKg0KKwkgKiBDcmVhdGVzIGEgbmV3IGFkYXB0ZXIgZm9yIGFuIG9iamVjdCBvZiBjbGFzcyAne0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5ibG9ja3MuUGFydGljaXBhbnRQcm9wZXJ0eSA8ZW0+UGFydGljaXBhbnQgUHJvcGVydHk8L2VtPn0nLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiBUaGlzIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gcmV0dXJucyBudWxsIHNvIHRoYXQgd2UgY2FuIGVhc2lseSBpZ25vcmUgY2FzZXM7DQorCSAqIGl0J3MgdXNlZnVsIHRvIGlnbm9yZSBhIGNhc2Ugd2hlbiBpbmhlcml0YW5jZSB3aWxsIGNhdGNoIGFsbCB0aGUgY2FzZXMgYW55d2F5Lg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHJldHVybiB0aGUgbmV3IGFkYXB0ZXIuDQorCSAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmJsb2Nrcy5QYXJ0aWNpcGFudFByb3BlcnR5DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBBZGFwdGVyIGNyZWF0ZVBhcnRpY2lwYW50UHJvcGVydHlBZGFwdGVyKCkgew0KKwkJcmV0dXJuIG51bGw7DQorCX0NCisNCisJLyoqDQorCSAqIENyZWF0ZXMgYSBuZXcgYWRhcHRlciBmb3IgYW4gb2JqZWN0IG9mIGNsYXNzICd7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmJsb2Nrcy5CaW5kaW5nQ29ubmVjdG9yIDxlbT5CaW5kaW5nIENvbm5lY3RvcjwvZW0+fScuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIFRoaXMgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiByZXR1cm5zIG51bGwgc28gdGhhdCB3ZSBjYW4gZWFzaWx5IGlnbm9yZSBjYXNlczsNCisJICogaXQncyB1c2VmdWwgdG8gaWdub3JlIGEgY2FzZSB3aGVuIGluaGVyaXRhbmNlIHdpbGwgY2F0Y2ggYWxsIHRoZSBjYXNlcyBhbnl3YXkuDQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAcmV0dXJuIHRoZSBuZXcgYWRhcHRlci4NCisJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYmxvY2tzLkJpbmRpbmdDb25uZWN0b3INCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIEFkYXB0ZXIgY3JlYXRlQmluZGluZ0Nvbm5lY3RvckFkYXB0ZXIoKSB7DQorCQlyZXR1cm4gbnVsbDsNCisJfQ0KKw0KKwkvKioNCisJICogQ3JlYXRlcyBhIG5ldyBhZGFwdGVyIGZvciBhbiBvYmplY3Qgb2YgY2xhc3MgJ3tAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYmxvY2tzLkJsb2NrIDxlbT5CbG9jazwvZW0+fScuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIFRoaXMgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiByZXR1cm5zIG51bGwgc28gdGhhdCB3ZSBjYW4gZWFzaWx5IGlnbm9yZSBjYXNlczsNCisJICogaXQncyB1c2VmdWwgdG8gaWdub3JlIGEgY2FzZSB3aGVuIGluaGVyaXRhbmNlIHdpbGwgY2F0Y2ggYWxsIHRoZSBjYXNlcyBhbnl3YXkuDQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAcmV0dXJuIHRoZSBuZXcgYWRhcHRlci4NCisJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYmxvY2tzLkJsb2NrDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBBZGFwdGVyIGNyZWF0ZUJsb2NrQWRhcHRlcigpIHsNCisJCXJldHVybiBudWxsOw0KKwl9DQorDQorCS8qKg0KKwkgKiBDcmVhdGVzIGEgbmV3IGFkYXB0ZXIgZm9yIGFuIG9iamVjdCBvZiBjbGFzcyAne0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5ibG9ja3MuUHJvcGVydHlTcGVjaWZpY1R5cGUgPGVtPlByb3BlcnR5IFNwZWNpZmljIFR5cGU8L2VtPn0nLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiBUaGlzIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gcmV0dXJucyBudWxsIHNvIHRoYXQgd2UgY2FuIGVhc2lseSBpZ25vcmUgY2FzZXM7DQorCSAqIGl0J3MgdXNlZnVsIHRvIGlnbm9yZSBhIGNhc2Ugd2hlbiBpbmhlcml0YW5jZSB3aWxsIGNhdGNoIGFsbCB0aGUgY2FzZXMgYW55d2F5Lg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHJldHVybiB0aGUgbmV3IGFkYXB0ZXIuDQorCSAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmJsb2Nrcy5Qcm9wZXJ0eVNwZWNpZmljVHlwZQ0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgQWRhcHRlciBjcmVhdGVQcm9wZXJ0eVNwZWNpZmljVHlwZUFkYXB0ZXIoKSB7DQorCQlyZXR1cm4gbnVsbDsNCisJfQ0KKw0KKwkvKioNCisJICogQ3JlYXRlcyBhIG5ldyBhZGFwdGVyIGZvciBhbiBvYmplY3Qgb2YgY2xhc3MgJ3tAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYmxvY2tzLk5lc3RlZENvbm5lY3RvckVuZCA8ZW0+TmVzdGVkIENvbm5lY3RvciBFbmQ8L2VtPn0nLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiBUaGlzIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gcmV0dXJucyBudWxsIHNvIHRoYXQgd2UgY2FuIGVhc2lseSBpZ25vcmUgY2FzZXM7DQorCSAqIGl0J3MgdXNlZnVsIHRvIGlnbm9yZSBhIGNhc2Ugd2hlbiBpbmhlcml0YW5jZSB3aWxsIGNhdGNoIGFsbCB0aGUgY2FzZXMgYW55d2F5Lg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHJldHVybiB0aGUgbmV3IGFkYXB0ZXIuDQorCSAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmJsb2Nrcy5OZXN0ZWRDb25uZWN0b3JFbmQNCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIEFkYXB0ZXIgY3JlYXRlTmVzdGVkQ29ubmVjdG9yRW5kQWRhcHRlcigpIHsNCisJCXJldHVybiBudWxsOw0KKwl9DQorDQorCS8qKg0KKwkgKiBDcmVhdGVzIGEgbmV3IGFkYXB0ZXIgZm9yIGFuIG9iamVjdCBvZiBjbGFzcyAne0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5ibG9ja3MuRWxlbWVudFByb3BlcnR5UGF0aCA8ZW0+RWxlbWVudCBQcm9wZXJ0eSBQYXRoPC9lbT59Jy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogVGhpcyBkZWZhdWx0IGltcGxlbWVudGF0aW9uIHJldHVybnMgbnVsbCBzbyB0aGF0IHdlIGNhbiBlYXNpbHkgaWdub3JlIGNhc2VzOw0KKwkgKiBpdCdzIHVzZWZ1bCB0byBpZ25vcmUgYSBjYXNlIHdoZW4gaW5oZXJpdGFuY2Ugd2lsbCBjYXRjaCBhbGwgdGhlIGNhc2VzIGFueXdheS4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEByZXR1cm4gdGhlIG5ldyBhZGFwdGVyLg0KKwkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5ibG9ja3MuRWxlbWVudFByb3BlcnR5UGF0aA0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgQWRhcHRlciBjcmVhdGVFbGVtZW50UHJvcGVydHlQYXRoQWRhcHRlcigpIHsNCisJCXJldHVybiBudWxsOw0KKwl9DQorDQorCS8qKg0KKwkgKiBDcmVhdGVzIGEgbmV3IGFkYXB0ZXIgZm9yIGFuIG9iamVjdCBvZiBjbGFzcyAne0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5ibG9ja3MuRGlyZWN0ZWRSZWxhdGlvbnNoaXBQcm9wZXJ0eVBhdGggPGVtPkRpcmVjdGVkIFJlbGF0aW9uc2hpcCBQcm9wZXJ0eSBQYXRoPC9lbT59Jy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogVGhpcyBkZWZhdWx0IGltcGxlbWVudGF0aW9uIHJldHVybnMgbnVsbCBzbyB0aGF0IHdlIGNhbiBlYXNpbHkgaWdub3JlIGNhc2VzOw0KKwkgKiBpdCdzIHVzZWZ1bCB0byBpZ25vcmUgYSBjYXNlIHdoZW4gaW5oZXJpdGFuY2Ugd2lsbCBjYXRjaCBhbGwgdGhlIGNhc2VzIGFueXdheS4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEByZXR1cm4gdGhlIG5ldyBhZGFwdGVyLg0KKwkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5ibG9ja3MuRGlyZWN0ZWRSZWxhdGlvbnNoaXBQcm9wZXJ0eVBhdGgNCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIEFkYXB0ZXIgY3JlYXRlRGlyZWN0ZWRSZWxhdGlvbnNoaXBQcm9wZXJ0eVBhdGhBZGFwdGVyKCkgew0KKwkJcmV0dXJuIG51bGw7DQorCX0NCisNCisJLyoqDQorCSAqIENyZWF0ZXMgYSBuZXcgYWRhcHRlciBmb3IgYW4gb2JqZWN0IG9mIGNsYXNzICd7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmJsb2Nrcy5FbmRQYXRoTXVsdGlwbGljaXR5IDxlbT5FbmQgUGF0aCBNdWx0aXBsaWNpdHk8L2VtPn0nLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiBUaGlzIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gcmV0dXJucyBudWxsIHNvIHRoYXQgd2UgY2FuIGVhc2lseSBpZ25vcmUgY2FzZXM7DQorCSAqIGl0J3MgdXNlZnVsIHRvIGlnbm9yZSBhIGNhc2Ugd2hlbiBpbmhlcml0YW5jZSB3aWxsIGNhdGNoIGFsbCB0aGUgY2FzZXMgYW55d2F5Lg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHJldHVybiB0aGUgbmV3IGFkYXB0ZXIuDQorCSAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmJsb2Nrcy5FbmRQYXRoTXVsdGlwbGljaXR5DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBBZGFwdGVyIGNyZWF0ZUVuZFBhdGhNdWx0aXBsaWNpdHlBZGFwdGVyKCkgew0KKwkJcmV0dXJuIG51bGw7DQorCX0NCisNCisJLyoqDQorCSAqIENyZWF0ZXMgYSBuZXcgYWRhcHRlciBmb3IgYW4gb2JqZWN0IG9mIGNsYXNzICd7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmJsb2Nrcy5Cb3VuZFJlZmVyZW5jZSA8ZW0+Qm91bmQgUmVmZXJlbmNlPC9lbT59Jy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogVGhpcyBkZWZhdWx0IGltcGxlbWVudGF0aW9uIHJldHVybnMgbnVsbCBzbyB0aGF0IHdlIGNhbiBlYXNpbHkgaWdub3JlIGNhc2VzOw0KKwkgKiBpdCdzIHVzZWZ1bCB0byBpZ25vcmUgYSBjYXNlIHdoZW4gaW5oZXJpdGFuY2Ugd2lsbCBjYXRjaCBhbGwgdGhlIGNhc2VzIGFueXdheS4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEByZXR1cm4gdGhlIG5ldyBhZGFwdGVyLg0KKwkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5ibG9ja3MuQm91bmRSZWZlcmVuY2UNCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIEFkYXB0ZXIgY3JlYXRlQm91bmRSZWZlcmVuY2VBZGFwdGVyKCkgew0KKwkJcmV0dXJuIG51bGw7DQorCX0NCisNCisJLyoqDQorCSAqIENyZWF0ZXMgYSBuZXcgYWRhcHRlciBmb3IgYW4gb2JqZWN0IG9mIGNsYXNzICd7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmJsb2Nrcy5BZGp1bmN0UHJvcGVydHkgPGVtPkFkanVuY3QgUHJvcGVydHk8L2VtPn0nLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiBUaGlzIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gcmV0dXJucyBudWxsIHNvIHRoYXQgd2UgY2FuIGVhc2lseSBpZ25vcmUgY2FzZXM7DQorCSAqIGl0J3MgdXNlZnVsIHRvIGlnbm9yZSBhIGNhc2Ugd2hlbiBpbmhlcml0YW5jZSB3aWxsIGNhdGNoIGFsbCB0aGUgY2FzZXMgYW55d2F5Lg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHJldHVybiB0aGUgbmV3IGFkYXB0ZXIuDQorCSAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmJsb2Nrcy5BZGp1bmN0UHJvcGVydHkNCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIEFkYXB0ZXIgY3JlYXRlQWRqdW5jdFByb3BlcnR5QWRhcHRlcigpIHsNCisJCXJldHVybiBudWxsOw0KKwl9DQorDQorCS8qKg0KKwkgKiBDcmVhdGVzIGEgbmV3IGFkYXB0ZXIgZm9yIGFuIG9iamVjdCBvZiBjbGFzcyAne0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5ibG9ja3MuQ2xhc3NpZmllckJlaGF2aW9yUHJvcGVydHkgPGVtPkNsYXNzaWZpZXIgQmVoYXZpb3IgUHJvcGVydHk8L2VtPn0nLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiBUaGlzIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gcmV0dXJucyBudWxsIHNvIHRoYXQgd2UgY2FuIGVhc2lseSBpZ25vcmUgY2FzZXM7DQorCSAqIGl0J3MgdXNlZnVsIHRvIGlnbm9yZSBhIGNhc2Ugd2hlbiBpbmhlcml0YW5jZSB3aWxsIGNhdGNoIGFsbCB0aGUgY2FzZXMgYW55d2F5Lg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHJldHVybiB0aGUgbmV3IGFkYXB0ZXIuDQorCSAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmJsb2Nrcy5DbGFzc2lmaWVyQmVoYXZpb3JQcm9wZXJ0eQ0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgQWRhcHRlciBjcmVhdGVDbGFzc2lmaWVyQmVoYXZpb3JQcm9wZXJ0eUFkYXB0ZXIoKSB7DQorCQlyZXR1cm4gbnVsbDsNCisJfQ0KKw0KKwkvKioNCisJICogQ3JlYXRlcyBhIG5ldyBhZGFwdGVyIGZvciB0aGUgZGVmYXVsdCBjYXNlLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiBUaGlzIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gcmV0dXJucyBudWxsLg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHJldHVybiB0aGUgbmV3IGFkYXB0ZXIuDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBBZGFwdGVyIGNyZWF0ZUVPYmplY3RBZGFwdGVyKCkgew0KKwkJcmV0dXJuIG51bGw7DQorCX0NCisNCit9IC8vQmxvY2tzQWRhcHRlckZhY3RvcnkNCmRpZmYgLS1naXQgYS9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9ibG9ja3MvdXRpbC9CbG9ja3NTd2l0Y2guamF2YSBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L2Jsb2Nrcy91dGlsL0Jsb2Nrc1N3aXRjaC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA0MGM0NWUKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9ibG9ja3MvdXRpbC9CbG9ja3NTd2l0Y2guamF2YQpAQCAtMCwwICsxLDM5MSBAQAorLyoqDQorICogQ29weXJpZ2h0IChjKSAyMDE1IENFQSBMSVNULg0KKyAqIA0KKyAqICBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQorICogIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KKyAqICB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KKyAqICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqLw0KK3BhY2thZ2Ugb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmJsb2Nrcy51dGlsOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRU9iamVjdDsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVQYWNrYWdlOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUudXRpbC5Td2l0Y2g7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5ibG9ja3MuKjsNCisNCisvKioNCisgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKyAqIFRoZSA8Yj5Td2l0Y2g8L2I+IGZvciB0aGUgbW9kZWwncyBpbmhlcml0YW5jZSBoaWVyYXJjaHkuDQorICogSXQgc3VwcG9ydHMgdGhlIGNhbGwge0BsaW5rICNkb1N3aXRjaChFT2JqZWN0KSBkb1N3aXRjaChvYmplY3QpfQ0KKyAqIHRvIGludm9rZSB0aGUgPGNvZGU+Y2FzZVhYWDwvY29kZT4gbWV0aG9kIGZvciBlYWNoIGNsYXNzIG9mIHRoZSBtb2RlbCwNCisgKiBzdGFydGluZyB3aXRoIHRoZSBhY3R1YWwgY2xhc3Mgb2YgdGhlIG9iamVjdA0KKyAqIGFuZCBwcm9jZWVkaW5nIHVwIHRoZSBpbmhlcml0YW5jZSBoaWVyYXJjaHkNCisgKiB1bnRpbCBhIG5vbi1udWxsIHJlc3VsdCBpcyByZXR1cm5lZCwNCisgKiB3aGljaCBpcyB0aGUgcmVzdWx0IG9mIHRoZSBzd2l0Y2guDQorICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYmxvY2tzLkJsb2Nrc1BhY2thZ2UNCisgKiBAZ2VuZXJhdGVkDQorICovDQorcHVibGljIGNsYXNzIEJsb2Nrc1N3aXRjaDxUPiBleHRlbmRzIFN3aXRjaDxUPiB7DQorCS8qKg0KKwkgKiBUaGUgY2FjaGVkIG1vZGVsIHBhY2thZ2UNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXByb3RlY3RlZCBzdGF0aWMgQmxvY2tzUGFja2FnZSBtb2RlbFBhY2thZ2U7DQorDQorCS8qKg0KKwkgKiBDcmVhdGVzIGFuIGluc3RhbmNlIG9mIHRoZSBzd2l0Y2guDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgQmxvY2tzU3dpdGNoKCkgew0KKwkJaWYgKG1vZGVsUGFja2FnZSA9PSBudWxsKSB7DQorCQkJbW9kZWxQYWNrYWdlID0gQmxvY2tzUGFja2FnZS5lSU5TVEFOQ0U7DQorCQl9DQorCX0NCisNCisJLyoqDQorCSAqIENoZWNrcyB3aGV0aGVyIHRoaXMgaXMgYSBzd2l0Y2ggZm9yIHRoZSBnaXZlbiBwYWNrYWdlLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHBhcmFtIGVQYWNrYWdlIHRoZSBwYWNrYWdlIGluIHF1ZXN0aW9uLg0KKwkgKiBAcmV0dXJuIHdoZXRoZXIgdGhpcyBpcyBhIHN3aXRjaCBmb3IgdGhlIGdpdmVuIHBhY2thZ2UuDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwcm90ZWN0ZWQgYm9vbGVhbiBpc1N3aXRjaEZvcihFUGFja2FnZSBlUGFja2FnZSkgew0KKwkJcmV0dXJuIGVQYWNrYWdlID09IG1vZGVsUGFja2FnZTsNCisJfQ0KKw0KKwkvKioNCisJICogQ2FsbHMgPGNvZGU+Y2FzZVhYWDwvY29kZT4gZm9yIGVhY2ggY2xhc3Mgb2YgdGhlIG1vZGVsIHVudGlsIG9uZSByZXR1cm5zIGEgbm9uIG51bGwgcmVzdWx0OyBpdCB5aWVsZHMgdGhhdCByZXN1bHQuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAcmV0dXJuIHRoZSBmaXJzdCBub24tbnVsbCByZXN1bHQgcmV0dXJuZWQgYnkgYSA8Y29kZT5jYXNlWFhYPC9jb2RlPiBjYWxsLg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHJvdGVjdGVkIFQgZG9Td2l0Y2goaW50IGNsYXNzaWZpZXJJRCwgRU9iamVjdCB0aGVFT2JqZWN0KSB7DQorCQlzd2l0Y2ggKGNsYXNzaWZpZXJJRCkgew0KKwkJCWNhc2UgQmxvY2tzUGFja2FnZS5WQUxVRV9UWVBFOiB7DQorCQkJCVZhbHVlVHlwZSB2YWx1ZVR5cGUgPSAoVmFsdWVUeXBlKXRoZUVPYmplY3Q7DQorCQkJCVQgcmVzdWx0ID0gY2FzZVZhbHVlVHlwZSh2YWx1ZVR5cGUpOw0KKwkJCQlpZiAocmVzdWx0ID09IG51bGwpIHJlc3VsdCA9IGRlZmF1bHRDYXNlKHRoZUVPYmplY3QpOw0KKwkJCQlyZXR1cm4gcmVzdWx0Ow0KKwkJCX0NCisJCQljYXNlIEJsb2Nrc1BhY2thZ2UuRElTVFJJQlVURURfUFJPUEVSVFk6IHsNCisJCQkJRGlzdHJpYnV0ZWRQcm9wZXJ0eSBkaXN0cmlidXRlZFByb3BlcnR5ID0gKERpc3RyaWJ1dGVkUHJvcGVydHkpdGhlRU9iamVjdDsNCisJCQkJVCByZXN1bHQgPSBjYXNlRGlzdHJpYnV0ZWRQcm9wZXJ0eShkaXN0cmlidXRlZFByb3BlcnR5KTsNCisJCQkJaWYgKHJlc3VsdCA9PSBudWxsKSByZXN1bHQgPSBkZWZhdWx0Q2FzZSh0aGVFT2JqZWN0KTsNCisJCQkJcmV0dXJuIHJlc3VsdDsNCisJCQl9DQorCQkJY2FzZSBCbG9ja3NQYWNrYWdlLkNPTk5FQ1RPUl9QUk9QRVJUWTogew0KKwkJCQlDb25uZWN0b3JQcm9wZXJ0eSBjb25uZWN0b3JQcm9wZXJ0eSA9IChDb25uZWN0b3JQcm9wZXJ0eSl0aGVFT2JqZWN0Ow0KKwkJCQlUIHJlc3VsdCA9IGNhc2VDb25uZWN0b3JQcm9wZXJ0eShjb25uZWN0b3JQcm9wZXJ0eSk7DQorCQkJCWlmIChyZXN1bHQgPT0gbnVsbCkgcmVzdWx0ID0gZGVmYXVsdENhc2UodGhlRU9iamVjdCk7DQorCQkJCXJldHVybiByZXN1bHQ7DQorCQkJfQ0KKwkJCWNhc2UgQmxvY2tzUGFja2FnZS5QQVJUSUNJUEFOVF9QUk9QRVJUWTogew0KKwkJCQlQYXJ0aWNpcGFudFByb3BlcnR5IHBhcnRpY2lwYW50UHJvcGVydHkgPSAoUGFydGljaXBhbnRQcm9wZXJ0eSl0aGVFT2JqZWN0Ow0KKwkJCQlUIHJlc3VsdCA9IGNhc2VQYXJ0aWNpcGFudFByb3BlcnR5KHBhcnRpY2lwYW50UHJvcGVydHkpOw0KKwkJCQlpZiAocmVzdWx0ID09IG51bGwpIHJlc3VsdCA9IGRlZmF1bHRDYXNlKHRoZUVPYmplY3QpOw0KKwkJCQlyZXR1cm4gcmVzdWx0Ow0KKwkJCX0NCisJCQljYXNlIEJsb2Nrc1BhY2thZ2UuQklORElOR19DT05ORUNUT1I6IHsNCisJCQkJQmluZGluZ0Nvbm5lY3RvciBiaW5kaW5nQ29ubmVjdG9yID0gKEJpbmRpbmdDb25uZWN0b3IpdGhlRU9iamVjdDsNCisJCQkJVCByZXN1bHQgPSBjYXNlQmluZGluZ0Nvbm5lY3RvcihiaW5kaW5nQ29ubmVjdG9yKTsNCisJCQkJaWYgKHJlc3VsdCA9PSBudWxsKSByZXN1bHQgPSBkZWZhdWx0Q2FzZSh0aGVFT2JqZWN0KTsNCisJCQkJcmV0dXJuIHJlc3VsdDsNCisJCQl9DQorCQkJY2FzZSBCbG9ja3NQYWNrYWdlLkJMT0NLOiB7DQorCQkJCUJsb2NrIGJsb2NrID0gKEJsb2NrKXRoZUVPYmplY3Q7DQorCQkJCVQgcmVzdWx0ID0gY2FzZUJsb2NrKGJsb2NrKTsNCisJCQkJaWYgKHJlc3VsdCA9PSBudWxsKSByZXN1bHQgPSBkZWZhdWx0Q2FzZSh0aGVFT2JqZWN0KTsNCisJCQkJcmV0dXJuIHJlc3VsdDsNCisJCQl9DQorCQkJY2FzZSBCbG9ja3NQYWNrYWdlLlBST1BFUlRZX1NQRUNJRklDX1RZUEU6IHsNCisJCQkJUHJvcGVydHlTcGVjaWZpY1R5cGUgcHJvcGVydHlTcGVjaWZpY1R5cGUgPSAoUHJvcGVydHlTcGVjaWZpY1R5cGUpdGhlRU9iamVjdDsNCisJCQkJVCByZXN1bHQgPSBjYXNlUHJvcGVydHlTcGVjaWZpY1R5cGUocHJvcGVydHlTcGVjaWZpY1R5cGUpOw0KKwkJCQlpZiAocmVzdWx0ID09IG51bGwpIHJlc3VsdCA9IGRlZmF1bHRDYXNlKHRoZUVPYmplY3QpOw0KKwkJCQlyZXR1cm4gcmVzdWx0Ow0KKwkJCX0NCisJCQljYXNlIEJsb2Nrc1BhY2thZ2UuTkVTVEVEX0NPTk5FQ1RPUl9FTkQ6IHsNCisJCQkJTmVzdGVkQ29ubmVjdG9yRW5kIG5lc3RlZENvbm5lY3RvckVuZCA9IChOZXN0ZWRDb25uZWN0b3JFbmQpdGhlRU9iamVjdDsNCisJCQkJVCByZXN1bHQgPSBjYXNlTmVzdGVkQ29ubmVjdG9yRW5kKG5lc3RlZENvbm5lY3RvckVuZCk7DQorCQkJCWlmIChyZXN1bHQgPT0gbnVsbCkgcmVzdWx0ID0gY2FzZUVsZW1lbnRQcm9wZXJ0eVBhdGgobmVzdGVkQ29ubmVjdG9yRW5kKTsNCisJCQkJaWYgKHJlc3VsdCA9PSBudWxsKSByZXN1bHQgPSBkZWZhdWx0Q2FzZSh0aGVFT2JqZWN0KTsNCisJCQkJcmV0dXJuIHJlc3VsdDsNCisJCQl9DQorCQkJY2FzZSBCbG9ja3NQYWNrYWdlLkVMRU1FTlRfUFJPUEVSVFlfUEFUSDogew0KKwkJCQlFbGVtZW50UHJvcGVydHlQYXRoIGVsZW1lbnRQcm9wZXJ0eVBhdGggPSAoRWxlbWVudFByb3BlcnR5UGF0aCl0aGVFT2JqZWN0Ow0KKwkJCQlUIHJlc3VsdCA9IGNhc2VFbGVtZW50UHJvcGVydHlQYXRoKGVsZW1lbnRQcm9wZXJ0eVBhdGgpOw0KKwkJCQlpZiAocmVzdWx0ID09IG51bGwpIHJlc3VsdCA9IGRlZmF1bHRDYXNlKHRoZUVPYmplY3QpOw0KKwkJCQlyZXR1cm4gcmVzdWx0Ow0KKwkJCX0NCisJCQljYXNlIEJsb2Nrc1BhY2thZ2UuRElSRUNURURfUkVMQVRJT05TSElQX1BST1BFUlRZX1BBVEg6IHsNCisJCQkJRGlyZWN0ZWRSZWxhdGlvbnNoaXBQcm9wZXJ0eVBhdGggZGlyZWN0ZWRSZWxhdGlvbnNoaXBQcm9wZXJ0eVBhdGggPSAoRGlyZWN0ZWRSZWxhdGlvbnNoaXBQcm9wZXJ0eVBhdGgpdGhlRU9iamVjdDsNCisJCQkJVCByZXN1bHQgPSBjYXNlRGlyZWN0ZWRSZWxhdGlvbnNoaXBQcm9wZXJ0eVBhdGgoZGlyZWN0ZWRSZWxhdGlvbnNoaXBQcm9wZXJ0eVBhdGgpOw0KKwkJCQlpZiAocmVzdWx0ID09IG51bGwpIHJlc3VsdCA9IGRlZmF1bHRDYXNlKHRoZUVPYmplY3QpOw0KKwkJCQlyZXR1cm4gcmVzdWx0Ow0KKwkJCX0NCisJCQljYXNlIEJsb2Nrc1BhY2thZ2UuRU5EX1BBVEhfTVVMVElQTElDSVRZOiB7DQorCQkJCUVuZFBhdGhNdWx0aXBsaWNpdHkgZW5kUGF0aE11bHRpcGxpY2l0eSA9IChFbmRQYXRoTXVsdGlwbGljaXR5KXRoZUVPYmplY3Q7DQorCQkJCVQgcmVzdWx0ID0gY2FzZUVuZFBhdGhNdWx0aXBsaWNpdHkoZW5kUGF0aE11bHRpcGxpY2l0eSk7DQorCQkJCWlmIChyZXN1bHQgPT0gbnVsbCkgcmVzdWx0ID0gZGVmYXVsdENhc2UodGhlRU9iamVjdCk7DQorCQkJCXJldHVybiByZXN1bHQ7DQorCQkJfQ0KKwkJCWNhc2UgQmxvY2tzUGFja2FnZS5CT1VORF9SRUZFUkVOQ0U6IHsNCisJCQkJQm91bmRSZWZlcmVuY2UgYm91bmRSZWZlcmVuY2UgPSAoQm91bmRSZWZlcmVuY2UpdGhlRU9iamVjdDsNCisJCQkJVCByZXN1bHQgPSBjYXNlQm91bmRSZWZlcmVuY2UoYm91bmRSZWZlcmVuY2UpOw0KKwkJCQlpZiAocmVzdWx0ID09IG51bGwpIHJlc3VsdCA9IGNhc2VFbmRQYXRoTXVsdGlwbGljaXR5KGJvdW5kUmVmZXJlbmNlKTsNCisJCQkJaWYgKHJlc3VsdCA9PSBudWxsKSByZXN1bHQgPSBkZWZhdWx0Q2FzZSh0aGVFT2JqZWN0KTsNCisJCQkJcmV0dXJuIHJlc3VsdDsNCisJCQl9DQorCQkJY2FzZSBCbG9ja3NQYWNrYWdlLkFESlVOQ1RfUFJPUEVSVFk6IHsNCisJCQkJQWRqdW5jdFByb3BlcnR5IGFkanVuY3RQcm9wZXJ0eSA9IChBZGp1bmN0UHJvcGVydHkpdGhlRU9iamVjdDsNCisJCQkJVCByZXN1bHQgPSBjYXNlQWRqdW5jdFByb3BlcnR5KGFkanVuY3RQcm9wZXJ0eSk7DQorCQkJCWlmIChyZXN1bHQgPT0gbnVsbCkgcmVzdWx0ID0gZGVmYXVsdENhc2UodGhlRU9iamVjdCk7DQorCQkJCXJldHVybiByZXN1bHQ7DQorCQkJfQ0KKwkJCWNhc2UgQmxvY2tzUGFja2FnZS5DTEFTU0lGSUVSX0JFSEFWSU9SX1BST1BFUlRZOiB7DQorCQkJCUNsYXNzaWZpZXJCZWhhdmlvclByb3BlcnR5IGNsYXNzaWZpZXJCZWhhdmlvclByb3BlcnR5ID0gKENsYXNzaWZpZXJCZWhhdmlvclByb3BlcnR5KXRoZUVPYmplY3Q7DQorCQkJCVQgcmVzdWx0ID0gY2FzZUNsYXNzaWZpZXJCZWhhdmlvclByb3BlcnR5KGNsYXNzaWZpZXJCZWhhdmlvclByb3BlcnR5KTsNCisJCQkJaWYgKHJlc3VsdCA9PSBudWxsKSByZXN1bHQgPSBkZWZhdWx0Q2FzZSh0aGVFT2JqZWN0KTsNCisJCQkJcmV0dXJuIHJlc3VsdDsNCisJCQl9DQorCQkJZGVmYXVsdDogcmV0dXJuIGRlZmF1bHRDYXNlKHRoZUVPYmplY3QpOw0KKwkJfQ0KKwl9DQorDQorCS8qKg0KKwkgKiBSZXR1cm5zIHRoZSByZXN1bHQgb2YgaW50ZXJwcmV0aW5nIHRoZSBvYmplY3QgYXMgYW4gaW5zdGFuY2Ugb2YgJzxlbT5WYWx1ZSBUeXBlPC9lbT4nLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiBUaGlzIGltcGxlbWVudGF0aW9uIHJldHVybnMgbnVsbDsNCisJICogcmV0dXJuaW5nIGEgbm9uLW51bGwgcmVzdWx0IHdpbGwgdGVybWluYXRlIHRoZSBzd2l0Y2guDQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAcGFyYW0gb2JqZWN0IHRoZSB0YXJnZXQgb2YgdGhlIHN3aXRjaC4NCisJICogQHJldHVybiB0aGUgcmVzdWx0IG9mIGludGVycHJldGluZyB0aGUgb2JqZWN0IGFzIGFuIGluc3RhbmNlIG9mICc8ZW0+VmFsdWUgVHlwZTwvZW0+Jy4NCisJICogQHNlZSAjZG9Td2l0Y2gob3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVPYmplY3QpIGRvU3dpdGNoKEVPYmplY3QpDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBUIGNhc2VWYWx1ZVR5cGUoVmFsdWVUeXBlIG9iamVjdCkgew0KKwkJcmV0dXJuIG51bGw7DQorCX0NCisNCisJLyoqDQorCSAqIFJldHVybnMgdGhlIHJlc3VsdCBvZiBpbnRlcnByZXRpbmcgdGhlIG9iamVjdCBhcyBhbiBpbnN0YW5jZSBvZiAnPGVtPkRpc3RyaWJ1dGVkIFByb3BlcnR5PC9lbT4nLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiBUaGlzIGltcGxlbWVudGF0aW9uIHJldHVybnMgbnVsbDsNCisJICogcmV0dXJuaW5nIGEgbm9uLW51bGwgcmVzdWx0IHdpbGwgdGVybWluYXRlIHRoZSBzd2l0Y2guDQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAcGFyYW0gb2JqZWN0IHRoZSB0YXJnZXQgb2YgdGhlIHN3aXRjaC4NCisJICogQHJldHVybiB0aGUgcmVzdWx0IG9mIGludGVycHJldGluZyB0aGUgb2JqZWN0IGFzIGFuIGluc3RhbmNlIG9mICc8ZW0+RGlzdHJpYnV0ZWQgUHJvcGVydHk8L2VtPicuDQorCSAqIEBzZWUgI2RvU3dpdGNoKG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FT2JqZWN0KSBkb1N3aXRjaChFT2JqZWN0KQ0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgVCBjYXNlRGlzdHJpYnV0ZWRQcm9wZXJ0eShEaXN0cmlidXRlZFByb3BlcnR5IG9iamVjdCkgew0KKwkJcmV0dXJuIG51bGw7DQorCX0NCisNCisJLyoqDQorCSAqIFJldHVybnMgdGhlIHJlc3VsdCBvZiBpbnRlcnByZXRpbmcgdGhlIG9iamVjdCBhcyBhbiBpbnN0YW5jZSBvZiAnPGVtPkNvbm5lY3RvciBQcm9wZXJ0eTwvZW0+Jy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogVGhpcyBpbXBsZW1lbnRhdGlvbiByZXR1cm5zIG51bGw7DQorCSAqIHJldHVybmluZyBhIG5vbi1udWxsIHJlc3VsdCB3aWxsIHRlcm1pbmF0ZSB0aGUgc3dpdGNoLg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHBhcmFtIG9iamVjdCB0aGUgdGFyZ2V0IG9mIHRoZSBzd2l0Y2guDQorCSAqIEByZXR1cm4gdGhlIHJlc3VsdCBvZiBpbnRlcnByZXRpbmcgdGhlIG9iamVjdCBhcyBhbiBpbnN0YW5jZSBvZiAnPGVtPkNvbm5lY3RvciBQcm9wZXJ0eTwvZW0+Jy4NCisJICogQHNlZSAjZG9Td2l0Y2gob3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVPYmplY3QpIGRvU3dpdGNoKEVPYmplY3QpDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBUIGNhc2VDb25uZWN0b3JQcm9wZXJ0eShDb25uZWN0b3JQcm9wZXJ0eSBvYmplY3QpIHsNCisJCXJldHVybiBudWxsOw0KKwl9DQorDQorCS8qKg0KKwkgKiBSZXR1cm5zIHRoZSByZXN1bHQgb2YgaW50ZXJwcmV0aW5nIHRoZSBvYmplY3QgYXMgYW4gaW5zdGFuY2Ugb2YgJzxlbT5QYXJ0aWNpcGFudCBQcm9wZXJ0eTwvZW0+Jy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogVGhpcyBpbXBsZW1lbnRhdGlvbiByZXR1cm5zIG51bGw7DQorCSAqIHJldHVybmluZyBhIG5vbi1udWxsIHJlc3VsdCB3aWxsIHRlcm1pbmF0ZSB0aGUgc3dpdGNoLg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHBhcmFtIG9iamVjdCB0aGUgdGFyZ2V0IG9mIHRoZSBzd2l0Y2guDQorCSAqIEByZXR1cm4gdGhlIHJlc3VsdCBvZiBpbnRlcnByZXRpbmcgdGhlIG9iamVjdCBhcyBhbiBpbnN0YW5jZSBvZiAnPGVtPlBhcnRpY2lwYW50IFByb3BlcnR5PC9lbT4nLg0KKwkgKiBAc2VlICNkb1N3aXRjaChvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRU9iamVjdCkgZG9Td2l0Y2goRU9iamVjdCkNCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIFQgY2FzZVBhcnRpY2lwYW50UHJvcGVydHkoUGFydGljaXBhbnRQcm9wZXJ0eSBvYmplY3QpIHsNCisJCXJldHVybiBudWxsOw0KKwl9DQorDQorCS8qKg0KKwkgKiBSZXR1cm5zIHRoZSByZXN1bHQgb2YgaW50ZXJwcmV0aW5nIHRoZSBvYmplY3QgYXMgYW4gaW5zdGFuY2Ugb2YgJzxlbT5CaW5kaW5nIENvbm5lY3RvcjwvZW0+Jy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogVGhpcyBpbXBsZW1lbnRhdGlvbiByZXR1cm5zIG51bGw7DQorCSAqIHJldHVybmluZyBhIG5vbi1udWxsIHJlc3VsdCB3aWxsIHRlcm1pbmF0ZSB0aGUgc3dpdGNoLg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHBhcmFtIG9iamVjdCB0aGUgdGFyZ2V0IG9mIHRoZSBzd2l0Y2guDQorCSAqIEByZXR1cm4gdGhlIHJlc3VsdCBvZiBpbnRlcnByZXRpbmcgdGhlIG9iamVjdCBhcyBhbiBpbnN0YW5jZSBvZiAnPGVtPkJpbmRpbmcgQ29ubmVjdG9yPC9lbT4nLg0KKwkgKiBAc2VlICNkb1N3aXRjaChvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRU9iamVjdCkgZG9Td2l0Y2goRU9iamVjdCkNCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIFQgY2FzZUJpbmRpbmdDb25uZWN0b3IoQmluZGluZ0Nvbm5lY3RvciBvYmplY3QpIHsNCisJCXJldHVybiBudWxsOw0KKwl9DQorDQorCS8qKg0KKwkgKiBSZXR1cm5zIHRoZSByZXN1bHQgb2YgaW50ZXJwcmV0aW5nIHRoZSBvYmplY3QgYXMgYW4gaW5zdGFuY2Ugb2YgJzxlbT5CbG9jazwvZW0+Jy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogVGhpcyBpbXBsZW1lbnRhdGlvbiByZXR1cm5zIG51bGw7DQorCSAqIHJldHVybmluZyBhIG5vbi1udWxsIHJlc3VsdCB3aWxsIHRlcm1pbmF0ZSB0aGUgc3dpdGNoLg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHBhcmFtIG9iamVjdCB0aGUgdGFyZ2V0IG9mIHRoZSBzd2l0Y2guDQorCSAqIEByZXR1cm4gdGhlIHJlc3VsdCBvZiBpbnRlcnByZXRpbmcgdGhlIG9iamVjdCBhcyBhbiBpbnN0YW5jZSBvZiAnPGVtPkJsb2NrPC9lbT4nLg0KKwkgKiBAc2VlICNkb1N3aXRjaChvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRU9iamVjdCkgZG9Td2l0Y2goRU9iamVjdCkNCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIFQgY2FzZUJsb2NrKEJsb2NrIG9iamVjdCkgew0KKwkJcmV0dXJuIG51bGw7DQorCX0NCisNCisJLyoqDQorCSAqIFJldHVybnMgdGhlIHJlc3VsdCBvZiBpbnRlcnByZXRpbmcgdGhlIG9iamVjdCBhcyBhbiBpbnN0YW5jZSBvZiAnPGVtPlByb3BlcnR5IFNwZWNpZmljIFR5cGU8L2VtPicuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIFRoaXMgaW1wbGVtZW50YXRpb24gcmV0dXJucyBudWxsOw0KKwkgKiByZXR1cm5pbmcgYSBub24tbnVsbCByZXN1bHQgd2lsbCB0ZXJtaW5hdGUgdGhlIHN3aXRjaC4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBwYXJhbSBvYmplY3QgdGhlIHRhcmdldCBvZiB0aGUgc3dpdGNoLg0KKwkgKiBAcmV0dXJuIHRoZSByZXN1bHQgb2YgaW50ZXJwcmV0aW5nIHRoZSBvYmplY3QgYXMgYW4gaW5zdGFuY2Ugb2YgJzxlbT5Qcm9wZXJ0eSBTcGVjaWZpYyBUeXBlPC9lbT4nLg0KKwkgKiBAc2VlICNkb1N3aXRjaChvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRU9iamVjdCkgZG9Td2l0Y2goRU9iamVjdCkNCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIFQgY2FzZVByb3BlcnR5U3BlY2lmaWNUeXBlKFByb3BlcnR5U3BlY2lmaWNUeXBlIG9iamVjdCkgew0KKwkJcmV0dXJuIG51bGw7DQorCX0NCisNCisJLyoqDQorCSAqIFJldHVybnMgdGhlIHJlc3VsdCBvZiBpbnRlcnByZXRpbmcgdGhlIG9iamVjdCBhcyBhbiBpbnN0YW5jZSBvZiAnPGVtPk5lc3RlZCBDb25uZWN0b3IgRW5kPC9lbT4nLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiBUaGlzIGltcGxlbWVudGF0aW9uIHJldHVybnMgbnVsbDsNCisJICogcmV0dXJuaW5nIGEgbm9uLW51bGwgcmVzdWx0IHdpbGwgdGVybWluYXRlIHRoZSBzd2l0Y2guDQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAcGFyYW0gb2JqZWN0IHRoZSB0YXJnZXQgb2YgdGhlIHN3aXRjaC4NCisJICogQHJldHVybiB0aGUgcmVzdWx0IG9mIGludGVycHJldGluZyB0aGUgb2JqZWN0IGFzIGFuIGluc3RhbmNlIG9mICc8ZW0+TmVzdGVkIENvbm5lY3RvciBFbmQ8L2VtPicuDQorCSAqIEBzZWUgI2RvU3dpdGNoKG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FT2JqZWN0KSBkb1N3aXRjaChFT2JqZWN0KQ0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgVCBjYXNlTmVzdGVkQ29ubmVjdG9yRW5kKE5lc3RlZENvbm5lY3RvckVuZCBvYmplY3QpIHsNCisJCXJldHVybiBudWxsOw0KKwl9DQorDQorCS8qKg0KKwkgKiBSZXR1cm5zIHRoZSByZXN1bHQgb2YgaW50ZXJwcmV0aW5nIHRoZSBvYmplY3QgYXMgYW4gaW5zdGFuY2Ugb2YgJzxlbT5FbGVtZW50IFByb3BlcnR5IFBhdGg8L2VtPicuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIFRoaXMgaW1wbGVtZW50YXRpb24gcmV0dXJucyBudWxsOw0KKwkgKiByZXR1cm5pbmcgYSBub24tbnVsbCByZXN1bHQgd2lsbCB0ZXJtaW5hdGUgdGhlIHN3aXRjaC4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBwYXJhbSBvYmplY3QgdGhlIHRhcmdldCBvZiB0aGUgc3dpdGNoLg0KKwkgKiBAcmV0dXJuIHRoZSByZXN1bHQgb2YgaW50ZXJwcmV0aW5nIHRoZSBvYmplY3QgYXMgYW4gaW5zdGFuY2Ugb2YgJzxlbT5FbGVtZW50IFByb3BlcnR5IFBhdGg8L2VtPicuDQorCSAqIEBzZWUgI2RvU3dpdGNoKG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FT2JqZWN0KSBkb1N3aXRjaChFT2JqZWN0KQ0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgVCBjYXNlRWxlbWVudFByb3BlcnR5UGF0aChFbGVtZW50UHJvcGVydHlQYXRoIG9iamVjdCkgew0KKwkJcmV0dXJuIG51bGw7DQorCX0NCisNCisJLyoqDQorCSAqIFJldHVybnMgdGhlIHJlc3VsdCBvZiBpbnRlcnByZXRpbmcgdGhlIG9iamVjdCBhcyBhbiBpbnN0YW5jZSBvZiAnPGVtPkRpcmVjdGVkIFJlbGF0aW9uc2hpcCBQcm9wZXJ0eSBQYXRoPC9lbT4nLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiBUaGlzIGltcGxlbWVudGF0aW9uIHJldHVybnMgbnVsbDsNCisJICogcmV0dXJuaW5nIGEgbm9uLW51bGwgcmVzdWx0IHdpbGwgdGVybWluYXRlIHRoZSBzd2l0Y2guDQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAcGFyYW0gb2JqZWN0IHRoZSB0YXJnZXQgb2YgdGhlIHN3aXRjaC4NCisJICogQHJldHVybiB0aGUgcmVzdWx0IG9mIGludGVycHJldGluZyB0aGUgb2JqZWN0IGFzIGFuIGluc3RhbmNlIG9mICc8ZW0+RGlyZWN0ZWQgUmVsYXRpb25zaGlwIFByb3BlcnR5IFBhdGg8L2VtPicuDQorCSAqIEBzZWUgI2RvU3dpdGNoKG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FT2JqZWN0KSBkb1N3aXRjaChFT2JqZWN0KQ0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgVCBjYXNlRGlyZWN0ZWRSZWxhdGlvbnNoaXBQcm9wZXJ0eVBhdGgoRGlyZWN0ZWRSZWxhdGlvbnNoaXBQcm9wZXJ0eVBhdGggb2JqZWN0KSB7DQorCQlyZXR1cm4gbnVsbDsNCisJfQ0KKw0KKwkvKioNCisJICogUmV0dXJucyB0aGUgcmVzdWx0IG9mIGludGVycHJldGluZyB0aGUgb2JqZWN0IGFzIGFuIGluc3RhbmNlIG9mICc8ZW0+RW5kIFBhdGggTXVsdGlwbGljaXR5PC9lbT4nLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiBUaGlzIGltcGxlbWVudGF0aW9uIHJldHVybnMgbnVsbDsNCisJICogcmV0dXJuaW5nIGEgbm9uLW51bGwgcmVzdWx0IHdpbGwgdGVybWluYXRlIHRoZSBzd2l0Y2guDQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAcGFyYW0gb2JqZWN0IHRoZSB0YXJnZXQgb2YgdGhlIHN3aXRjaC4NCisJICogQHJldHVybiB0aGUgcmVzdWx0IG9mIGludGVycHJldGluZyB0aGUgb2JqZWN0IGFzIGFuIGluc3RhbmNlIG9mICc8ZW0+RW5kIFBhdGggTXVsdGlwbGljaXR5PC9lbT4nLg0KKwkgKiBAc2VlICNkb1N3aXRjaChvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRU9iamVjdCkgZG9Td2l0Y2goRU9iamVjdCkNCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIFQgY2FzZUVuZFBhdGhNdWx0aXBsaWNpdHkoRW5kUGF0aE11bHRpcGxpY2l0eSBvYmplY3QpIHsNCisJCXJldHVybiBudWxsOw0KKwl9DQorDQorCS8qKg0KKwkgKiBSZXR1cm5zIHRoZSByZXN1bHQgb2YgaW50ZXJwcmV0aW5nIHRoZSBvYmplY3QgYXMgYW4gaW5zdGFuY2Ugb2YgJzxlbT5Cb3VuZCBSZWZlcmVuY2U8L2VtPicuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIFRoaXMgaW1wbGVtZW50YXRpb24gcmV0dXJucyBudWxsOw0KKwkgKiByZXR1cm5pbmcgYSBub24tbnVsbCByZXN1bHQgd2lsbCB0ZXJtaW5hdGUgdGhlIHN3aXRjaC4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBwYXJhbSBvYmplY3QgdGhlIHRhcmdldCBvZiB0aGUgc3dpdGNoLg0KKwkgKiBAcmV0dXJuIHRoZSByZXN1bHQgb2YgaW50ZXJwcmV0aW5nIHRoZSBvYmplY3QgYXMgYW4gaW5zdGFuY2Ugb2YgJzxlbT5Cb3VuZCBSZWZlcmVuY2U8L2VtPicuDQorCSAqIEBzZWUgI2RvU3dpdGNoKG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FT2JqZWN0KSBkb1N3aXRjaChFT2JqZWN0KQ0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgVCBjYXNlQm91bmRSZWZlcmVuY2UoQm91bmRSZWZlcmVuY2Ugb2JqZWN0KSB7DQorCQlyZXR1cm4gbnVsbDsNCisJfQ0KKw0KKwkvKioNCisJICogUmV0dXJucyB0aGUgcmVzdWx0IG9mIGludGVycHJldGluZyB0aGUgb2JqZWN0IGFzIGFuIGluc3RhbmNlIG9mICc8ZW0+QWRqdW5jdCBQcm9wZXJ0eTwvZW0+Jy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogVGhpcyBpbXBsZW1lbnRhdGlvbiByZXR1cm5zIG51bGw7DQorCSAqIHJldHVybmluZyBhIG5vbi1udWxsIHJlc3VsdCB3aWxsIHRlcm1pbmF0ZSB0aGUgc3dpdGNoLg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHBhcmFtIG9iamVjdCB0aGUgdGFyZ2V0IG9mIHRoZSBzd2l0Y2guDQorCSAqIEByZXR1cm4gdGhlIHJlc3VsdCBvZiBpbnRlcnByZXRpbmcgdGhlIG9iamVjdCBhcyBhbiBpbnN0YW5jZSBvZiAnPGVtPkFkanVuY3QgUHJvcGVydHk8L2VtPicuDQorCSAqIEBzZWUgI2RvU3dpdGNoKG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FT2JqZWN0KSBkb1N3aXRjaChFT2JqZWN0KQ0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgVCBjYXNlQWRqdW5jdFByb3BlcnR5KEFkanVuY3RQcm9wZXJ0eSBvYmplY3QpIHsNCisJCXJldHVybiBudWxsOw0KKwl9DQorDQorCS8qKg0KKwkgKiBSZXR1cm5zIHRoZSByZXN1bHQgb2YgaW50ZXJwcmV0aW5nIHRoZSBvYmplY3QgYXMgYW4gaW5zdGFuY2Ugb2YgJzxlbT5DbGFzc2lmaWVyIEJlaGF2aW9yIFByb3BlcnR5PC9lbT4nLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiBUaGlzIGltcGxlbWVudGF0aW9uIHJldHVybnMgbnVsbDsNCisJICogcmV0dXJuaW5nIGEgbm9uLW51bGwgcmVzdWx0IHdpbGwgdGVybWluYXRlIHRoZSBzd2l0Y2guDQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAcGFyYW0gb2JqZWN0IHRoZSB0YXJnZXQgb2YgdGhlIHN3aXRjaC4NCisJICogQHJldHVybiB0aGUgcmVzdWx0IG9mIGludGVycHJldGluZyB0aGUgb2JqZWN0IGFzIGFuIGluc3RhbmNlIG9mICc8ZW0+Q2xhc3NpZmllciBCZWhhdmlvciBQcm9wZXJ0eTwvZW0+Jy4NCisJICogQHNlZSAjZG9Td2l0Y2gob3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVPYmplY3QpIGRvU3dpdGNoKEVPYmplY3QpDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBUIGNhc2VDbGFzc2lmaWVyQmVoYXZpb3JQcm9wZXJ0eShDbGFzc2lmaWVyQmVoYXZpb3JQcm9wZXJ0eSBvYmplY3QpIHsNCisJCXJldHVybiBudWxsOw0KKwl9DQorDQorCS8qKg0KKwkgKiBSZXR1cm5zIHRoZSByZXN1bHQgb2YgaW50ZXJwcmV0aW5nIHRoZSBvYmplY3QgYXMgYW4gaW5zdGFuY2Ugb2YgJzxlbT5FT2JqZWN0PC9lbT4nLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiBUaGlzIGltcGxlbWVudGF0aW9uIHJldHVybnMgbnVsbDsNCisJICogcmV0dXJuaW5nIGEgbm9uLW51bGwgcmVzdWx0IHdpbGwgdGVybWluYXRlIHRoZSBzd2l0Y2gsIGJ1dCB0aGlzIGlzIHRoZSBsYXN0IGNhc2UgYW55d2F5Lg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHBhcmFtIG9iamVjdCB0aGUgdGFyZ2V0IG9mIHRoZSBzd2l0Y2guDQorCSAqIEByZXR1cm4gdGhlIHJlc3VsdCBvZiBpbnRlcnByZXRpbmcgdGhlIG9iamVjdCBhcyBhbiBpbnN0YW5jZSBvZiAnPGVtPkVPYmplY3Q8L2VtPicuDQorCSAqIEBzZWUgI2RvU3dpdGNoKG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FT2JqZWN0KQ0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIFQgZGVmYXVsdENhc2UoRU9iamVjdCBvYmplY3QpIHsNCisJCXJldHVybiBudWxsOw0KKwl9DQorDQorfSAvL0Jsb2Nrc1N3aXRjaA0KZGlmZiAtLWdpdCBhL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L2NvbnN0cmFpbnRibG9ja3MvQ29uc3RyYWludEJsb2NrLmphdmEgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9jb25zdHJhaW50YmxvY2tzL0NvbnN0cmFpbnRCbG9jay5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA2YzE2MDQKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9jb25zdHJhaW50YmxvY2tzL0NvbnN0cmFpbnRCbG9jay5qYXZhCkBAIC0wLDAgKzEsMjggQEAKKy8qKg0KKyAqIENvcHlyaWdodCAoYykgMjAxNSBDRUEgTElTVC4NCisgKiANCisgKiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KKyAqICBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCisgKiAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCisgKiAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgKi8NCitwYWNrYWdlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5jb25zdHJhaW50YmxvY2tzOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYmxvY2tzLkJsb2NrOw0KKw0KKy8qKg0KKyAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorICogQSByZXByZXNlbnRhdGlvbiBvZiB0aGUgbW9kZWwgb2JqZWN0ICc8ZW0+PGI+Q29uc3RyYWludCBCbG9jazwvYj48L2VtPicuDQorICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorICoNCisgKiA8IS0tIGJlZ2luLW1vZGVsLWRvYyAtLT4NCisgKiBBIGNvbnN0cmFpbnQgYmxvY2sgaXMgYSBibG9jayB0aGF0IHBhY2thZ2VzIHRoZSBzdGF0ZW1lbnQgb2YgYSBjb25zdHJhaW50IHNvIGl0IG1heSBiZSBhcHBsaWVkIGluIGEgcmV1c2FibGUgd2F5IHRvIGNvbnN0cmFpbiBwcm9wZXJ0aWVzIG9mIG90aGVyIGJsb2Nrcy4gQSBjb25zdHJhaW50IGJsb2NrIHR5cGljYWxseSBkZWZpbmVzIG9uZSBvciBtb3JlIGNvbnN0cmFpbnQgcGFyYW1ldGVycywgd2hpY2ggYXJlIGJvdW5kIHRvIHByb3BlcnRpZXMgb2Ygb3RoZXIgYmxvY2tzIGluIGEgc3Vycm91bmRpbmcgY29udGV4dCB3aGVyZSB0aGUgY29uc3RyYWludCBpcyB1c2VkLiBCaW5kaW5nIGNvbm5lY3RvcnMsIGFzIGRlZmluZWQgaW4gQ2hhcHRlciA4OiBCbG9ja3MsIGFyZSB1c2VkIHRvIGJpbmQgZWFjaCBwYXJhbWV0ZXIgb2YgdGhlIGNvbnN0cmFpbnQgYmxvY2sgdG8gYSBwcm9wZXJ0eSBpbiB0aGUgc3Vycm91bmRpbmcgY29udGV4dC4gQWxsIHByb3BlcnRpZXMgb2YgYSBjb25zdHJhaW50IGJsb2NrIGFyZSBjb25zdHJhaW50IHBhcmFtZXRlcnMsIHdpdGggdGhlIGV4Y2VwdGlvbiBvZiBjb25zdHJhaW50IHByb3BlcnRpZXMgdGhhdCBob2xkIGludGVybmFsbHkgbmVzdGVkIHVzYWdlcyBvZiBvdGhlciBjb25zdHJhaW50IGJsb2Nrcy4NCisgKiA8IS0tIGVuZC1tb2RlbC1kb2MgLS0+DQorICoNCisgKg0KKyAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmNvbnN0cmFpbnRibG9ja3MuQ29uc3RyYWludGJsb2Nrc1BhY2thZ2UjZ2V0Q29uc3RyYWludEJsb2NrKCkNCisgKiBAbW9kZWwNCisgKiBAZ2VuZXJhdGVkDQorICovDQorcHVibGljIGludGVyZmFjZSBDb25zdHJhaW50QmxvY2sgZXh0ZW5kcyBCbG9jayB7DQorfSAvLyBDb25zdHJhaW50QmxvY2sNCmRpZmYgLS1naXQgYS9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9jb25zdHJhaW50YmxvY2tzL0NvbnN0cmFpbnRibG9ja3NGYWN0b3J5LmphdmEgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9jb25zdHJhaW50YmxvY2tzL0NvbnN0cmFpbnRibG9ja3NGYWN0b3J5LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDgyMDE1NAotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L2NvbnN0cmFpbnRibG9ja3MvQ29uc3RyYWludGJsb2Nrc0ZhY3RvcnkuamF2YQpAQCAtMCwwICsxLDQ4IEBACisvKioNCisgKiBDb3B5cmlnaHQgKGMpIDIwMTUgQ0VBIExJU1QuDQorICogDQorICogIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCisgKiAgYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQorICogIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQorICogIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICovDQorcGFja2FnZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuY29uc3RyYWludGJsb2NrczsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVGYWN0b3J5Ow0KKw0KKy8qKg0KKyAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorICogVGhlIDxiPkZhY3Rvcnk8L2I+IGZvciB0aGUgbW9kZWwuDQorICogSXQgcHJvdmlkZXMgYSBjcmVhdGUgbWV0aG9kIGZvciBlYWNoIG5vbi1hYnN0cmFjdCBjbGFzcyBvZiB0aGUgbW9kZWwuDQorICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuY29uc3RyYWludGJsb2Nrcy5Db25zdHJhaW50YmxvY2tzUGFja2FnZQ0KKyAqIEBnZW5lcmF0ZWQNCisgKi8NCitwdWJsaWMgaW50ZXJmYWNlIENvbnN0cmFpbnRibG9ja3NGYWN0b3J5IGV4dGVuZHMgRUZhY3Rvcnkgew0KKwkvKioNCisJICogVGhlIHNpbmdsZXRvbiBpbnN0YW5jZSBvZiB0aGUgZmFjdG9yeS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUNvbnN0cmFpbnRibG9ja3NGYWN0b3J5IGVJTlNUQU5DRSA9IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5jb25zdHJhaW50YmxvY2tzLmludGVybmFsLmltcGwuQ29uc3RyYWludGJsb2Nrc0ZhY3RvcnlJbXBsLmluaXQoKTsNCisNCisJLyoqDQorCSAqIFJldHVybnMgYSBuZXcgb2JqZWN0IG9mIGNsYXNzICc8ZW0+Q29uc3RyYWludCBCbG9jazwvZW0+Jy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEByZXR1cm4gYSBuZXcgb2JqZWN0IG9mIGNsYXNzICc8ZW0+Q29uc3RyYWludCBCbG9jazwvZW0+Jy4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQ29uc3RyYWludEJsb2NrIGNyZWF0ZUNvbnN0cmFpbnRCbG9jaygpOw0KKw0KKwkvKioNCisJICogUmV0dXJucyB0aGUgcGFja2FnZSBzdXBwb3J0ZWQgYnkgdGhpcyBmYWN0b3J5Lg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHJldHVybiB0aGUgcGFja2FnZSBzdXBwb3J0ZWQgYnkgdGhpcyBmYWN0b3J5Lg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlDb25zdHJhaW50YmxvY2tzUGFja2FnZSBnZXRDb25zdHJhaW50YmxvY2tzUGFja2FnZSgpOw0KKw0KK30gLy9Db25zdHJhaW50YmxvY2tzRmFjdG9yeQ0KZGlmZiAtLWdpdCBhL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L2NvbnN0cmFpbnRibG9ja3MvQ29uc3RyYWludGJsb2Nrc1BhY2thZ2UuamF2YSBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L2NvbnN0cmFpbnRibG9ja3MvQ29uc3RyYWludGJsb2Nrc1BhY2thZ2UuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMjY4ZGQzCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvY29uc3RyYWludGJsb2Nrcy9Db25zdHJhaW50YmxvY2tzUGFja2FnZS5qYXZhCkBAIC0wLDAgKzEsMTU4IEBACisvKioNCisgKiBDb3B5cmlnaHQgKGMpIDIwMTUgQ0VBIExJU1QuDQorICogDQorICogIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCisgKiAgYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQorICogIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQorICogIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICovDQorcGFja2FnZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuY29uc3RyYWludGJsb2NrczsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVDbGFzczsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVQYWNrYWdlOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYmxvY2tzLkJsb2Nrc1BhY2thZ2U7DQorDQorLyoqDQorICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisgKiBUaGUgPGI+UGFja2FnZTwvYj4gZm9yIHRoZSBtb2RlbC4NCisgKiBJdCBjb250YWlucyBhY2Nlc3NvcnMgZm9yIHRoZSBtZXRhIG9iamVjdHMgdG8gcmVwcmVzZW50DQorICogPHVsPg0KKyAqICAgPGxpPmVhY2ggY2xhc3MsPC9saT4NCisgKiAgIDxsaT5lYWNoIGZlYXR1cmUgb2YgZWFjaCBjbGFzcyw8L2xpPg0KKyAqICAgPGxpPmVhY2ggb3BlcmF0aW9uIG9mIGVhY2ggY2xhc3MsPC9saT4NCisgKiAgIDxsaT5lYWNoIGVudW0sPC9saT4NCisgKiAgIDxsaT5hbmQgZWFjaCBkYXRhIHR5cGU8L2xpPg0KKyAqIDwvdWw+DQorICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuY29uc3RyYWludGJsb2Nrcy5Db25zdHJhaW50YmxvY2tzRmFjdG9yeQ0KKyAqIEBtb2RlbCBraW5kPSJwYWNrYWdlIg0KKyAqICAgICAgICBhbm5vdGF0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3VtbDIvMi4wLjAvVU1MIG9yaWdpbmFsTmFtZT0nQ29uc3RyYWludEJsb2NrcyciDQorICogQGdlbmVyYXRlZA0KKyAqLw0KK3B1YmxpYyBpbnRlcmZhY2UgQ29uc3RyYWludGJsb2Nrc1BhY2thZ2UgZXh0ZW5kcyBFUGFja2FnZSB7DQorCS8qKg0KKwkgKiBUaGUgcGFja2FnZSBuYW1lLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJU3RyaW5nIGVOQU1FID0gImNvbnN0cmFpbnRibG9ja3MiOyAvLyROT04tTkxTLTEkDQorDQorCS8qKg0KKwkgKiBUaGUgcGFja2FnZSBuYW1lc3BhY2UgVVJJLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJU3RyaW5nIGVOU19VUkkgPSAiaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9wYXB5cnVzLzEuNC9TeXNNTC9Db25zdHJhaW50QmxvY2tzIjsgLy8kTk9OLU5MUy0xJA0KKw0KKwkvKioNCisJICogVGhlIHBhY2thZ2UgbmFtZXNwYWNlIG5hbWUuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlTdHJpbmcgZU5TX1BSRUZJWCA9ICJDb25zdHJhaW50QmxvY2tzIjsgLy8kTk9OLU5MUy0xJA0KKw0KKwkvKioNCisJICogVGhlIHNpbmdsZXRvbiBpbnN0YW5jZSBvZiB0aGUgcGFja2FnZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUNvbnN0cmFpbnRibG9ja3NQYWNrYWdlIGVJTlNUQU5DRSA9IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5jb25zdHJhaW50YmxvY2tzLmludGVybmFsLmltcGwuQ29uc3RyYWludGJsb2Nrc1BhY2thZ2VJbXBsLmluaXQoKTsNCisNCisJLyoqDQorCSAqIFRoZSBtZXRhIG9iamVjdCBpZCBmb3IgdGhlICd7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmNvbnN0cmFpbnRibG9ja3MuaW50ZXJuYWwuaW1wbC5Db25zdHJhaW50QmxvY2tJbXBsIDxlbT5Db25zdHJhaW50IEJsb2NrPC9lbT59JyBjbGFzcy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmNvbnN0cmFpbnRibG9ja3MuaW50ZXJuYWwuaW1wbC5Db25zdHJhaW50QmxvY2tJbXBsDQorCSAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmNvbnN0cmFpbnRibG9ja3MuaW50ZXJuYWwuaW1wbC5Db25zdHJhaW50YmxvY2tzUGFja2FnZUltcGwjZ2V0Q29uc3RyYWludEJsb2NrKCkNCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJaW50IENPTlNUUkFJTlRfQkxPQ0sgPSAwOw0KKw0KKwkvKioNCisJICogVGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkJhc2UgQ2xhc3M8L2I+PC9lbT4nIHJlZmVyZW5jZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICogQG9yZGVyZWQNCisJICovDQorCWludCBDT05TVFJBSU5UX0JMT0NLX19CQVNFX0NMQVNTID0gQmxvY2tzUGFja2FnZS5CTE9DS19fQkFTRV9DTEFTUzsNCisNCisJLyoqDQorCSAqIFRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5JcyBFbmNhcHN1bGF0ZWQ8L2I+PC9lbT4nIGF0dHJpYnV0ZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICogQG9yZGVyZWQNCisJICovDQorCWludCBDT05TVFJBSU5UX0JMT0NLX19JU19FTkNBUFNVTEFURUQgPSBCbG9ja3NQYWNrYWdlLkJMT0NLX19JU19FTkNBUFNVTEFURUQ7DQorDQorCS8qKg0KKwkgKiBUaGUgbnVtYmVyIG9mIHN0cnVjdHVyYWwgZmVhdHVyZXMgb2YgdGhlICc8ZW0+Q29uc3RyYWludCBCbG9jazwvZW0+JyBjbGFzcy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICogQG9yZGVyZWQNCisJICovDQorCWludCBDT05TVFJBSU5UX0JMT0NLX0ZFQVRVUkVfQ09VTlQgPSBCbG9ja3NQYWNrYWdlLkJMT0NLX0ZFQVRVUkVfQ09VTlQgKyAwOw0KKw0KKwkvKioNCisJICogVGhlIG51bWJlciBvZiBvcGVyYXRpb25zIG9mIHRoZSAnPGVtPkNvbnN0cmFpbnQgQmxvY2s8L2VtPicgY2xhc3MuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqIEBvcmRlcmVkDQorCSAqLw0KKwlpbnQgQ09OU1RSQUlOVF9CTE9DS19PUEVSQVRJT05fQ09VTlQgPSBCbG9ja3NQYWNrYWdlLkJMT0NLX09QRVJBVElPTl9DT1VOVCArIDA7DQorDQorDQorCS8qKg0KKwkgKiBSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJ3tAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuY29uc3RyYWludGJsb2Nrcy5Db25zdHJhaW50QmxvY2sgPGVtPkNvbnN0cmFpbnQgQmxvY2s8L2VtPn0nLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHJldHVybiB0aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICc8ZW0+Q29uc3RyYWludCBCbG9jazwvZW0+Jy4NCisJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuY29uc3RyYWludGJsb2Nrcy5Db25zdHJhaW50QmxvY2sNCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJRUNsYXNzIGdldENvbnN0cmFpbnRCbG9jaygpOw0KKw0KKwkvKioNCisJICogUmV0dXJucyB0aGUgZmFjdG9yeSB0aGF0IGNyZWF0ZXMgdGhlIGluc3RhbmNlcyBvZiB0aGUgbW9kZWwuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAcmV0dXJuIHRoZSBmYWN0b3J5IHRoYXQgY3JlYXRlcyB0aGUgaW5zdGFuY2VzIG9mIHRoZSBtb2RlbC4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQ29uc3RyYWludGJsb2Nrc0ZhY3RvcnkgZ2V0Q29uc3RyYWludGJsb2Nrc0ZhY3RvcnkoKTsNCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIERlZmluZXMgbGl0ZXJhbHMgZm9yIHRoZSBtZXRhIG9iamVjdHMgdGhhdCByZXByZXNlbnQNCisJICogPHVsPg0KKwkgKiAgIDxsaT5lYWNoIGNsYXNzLDwvbGk+DQorCSAqICAgPGxpPmVhY2ggZmVhdHVyZSBvZiBlYWNoIGNsYXNzLDwvbGk+DQorCSAqICAgPGxpPmVhY2ggb3BlcmF0aW9uIG9mIGVhY2ggY2xhc3MsPC9saT4NCisJICogICA8bGk+ZWFjaCBlbnVtLDwvbGk+DQorCSAqICAgPGxpPmFuZCBlYWNoIGRhdGEgdHlwZTwvbGk+DQorCSAqIDwvdWw+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlpbnRlcmZhY2UgTGl0ZXJhbHMgew0KKwkJLyoqDQorCQkgKiBUaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICd7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmNvbnN0cmFpbnRibG9ja3MuaW50ZXJuYWwuaW1wbC5Db25zdHJhaW50QmxvY2tJbXBsIDxlbT5Db25zdHJhaW50IEJsb2NrPC9lbT59JyBjbGFzcy4NCisJCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJCSAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmNvbnN0cmFpbnRibG9ja3MuaW50ZXJuYWwuaW1wbC5Db25zdHJhaW50QmxvY2tJbXBsDQorCQkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5jb25zdHJhaW50YmxvY2tzLmludGVybmFsLmltcGwuQ29uc3RyYWludGJsb2Nrc1BhY2thZ2VJbXBsI2dldENvbnN0cmFpbnRCbG9jaygpDQorCQkgKiBAZ2VuZXJhdGVkDQorCQkgKi8NCisJCUVDbGFzcyBDT05TVFJBSU5UX0JMT0NLID0gZUlOU1RBTkNFLmdldENvbnN0cmFpbnRCbG9jaygpOw0KKw0KKwl9DQorDQorfSAvL0NvbnN0cmFpbnRibG9ja3NQYWNrYWdlDQpkaWZmIC0tZ2l0IGEvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvY29uc3RyYWludGJsb2Nrcy9pbnRlcm5hbC9pbXBsL0NvbnN0cmFpbnRCbG9ja0ltcGwuamF2YSBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L2NvbnN0cmFpbnRibG9ja3MvaW50ZXJuYWwvaW1wbC9Db25zdHJhaW50QmxvY2tJbXBsLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGY5YjUzYwotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L2NvbnN0cmFpbnRibG9ja3MvaW50ZXJuYWwvaW1wbC9Db25zdHJhaW50QmxvY2tJbXBsLmphdmEKQEAgLTAsMCArMSw0NyBAQAorLyoqDQorICogQ29weXJpZ2h0IChjKSAyMDE1IENFQSBMSVNULg0KKyAqIA0KKyAqICBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQorICogIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KKyAqICB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KKyAqICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqLw0KK3BhY2thZ2Ugb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmNvbnN0cmFpbnRibG9ja3MuaW50ZXJuYWwuaW1wbDsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVDbGFzczsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmJsb2Nrcy5pbnRlcm5hbC5pbXBsLkJsb2NrSW1wbDsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmNvbnN0cmFpbnRibG9ja3MuQ29uc3RyYWludEJsb2NrOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuY29uc3RyYWludGJsb2Nrcy5Db25zdHJhaW50YmxvY2tzUGFja2FnZTsNCisNCisvKioNCisgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKyAqIEFuIGltcGxlbWVudGF0aW9uIG9mIHRoZSBtb2RlbCBvYmplY3QgJzxlbT48Yj5Db25zdHJhaW50IEJsb2NrPC9iPjwvZW0+Jy4NCisgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisgKiA8cD4NCisgKiA8L3A+DQorICoNCisgKiBAZ2VuZXJhdGVkDQorICovDQorcHVibGljIGNsYXNzIENvbnN0cmFpbnRCbG9ja0ltcGwgZXh0ZW5kcyBCbG9ja0ltcGwgaW1wbGVtZW50cyBDb25zdHJhaW50QmxvY2sgew0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXByb3RlY3RlZCBDb25zdHJhaW50QmxvY2tJbXBsKCkgew0KKwkJc3VwZXIoKTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwcm90ZWN0ZWQgRUNsYXNzIGVTdGF0aWNDbGFzcygpIHsNCisJCXJldHVybiBDb25zdHJhaW50YmxvY2tzUGFja2FnZS5MaXRlcmFscy5DT05TVFJBSU5UX0JMT0NLOw0KKwl9DQorDQorfSAvL0NvbnN0cmFpbnRCbG9ja0ltcGwNCmRpZmYgLS1naXQgYS9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9jb25zdHJhaW50YmxvY2tzL2ludGVybmFsL2ltcGwvQ29uc3RyYWludGJsb2Nrc0ZhY3RvcnlJbXBsLmphdmEgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9jb25zdHJhaW50YmxvY2tzL2ludGVybmFsL2ltcGwvQ29uc3RyYWludGJsb2Nrc0ZhY3RvcnlJbXBsLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjFmMGU3MAotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L2NvbnN0cmFpbnRibG9ja3MvaW50ZXJuYWwvaW1wbC9Db25zdHJhaW50YmxvY2tzRmFjdG9yeUltcGwuamF2YQpAQCAtMCwwICsxLDEwMSBAQAorLyoqDQorICogQ29weXJpZ2h0IChjKSAyMDE1IENFQSBMSVNULg0KKyAqIA0KKyAqICBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQorICogIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KKyAqICB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KKyAqICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqLw0KK3BhY2thZ2Ugb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmNvbnN0cmFpbnRibG9ja3MuaW50ZXJuYWwuaW1wbDsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVDbGFzczsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVPYmplY3Q7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FUGFja2FnZTsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLmltcGwuRUZhY3RvcnlJbXBsOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUucGx1Z2luLkVjb3JlUGx1Z2luOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuY29uc3RyYWludGJsb2Nrcy4qOw0KKw0KKy8qKg0KKyAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorICogQW4gaW1wbGVtZW50YXRpb24gb2YgdGhlIG1vZGVsIDxiPkZhY3Rvcnk8L2I+Lg0KKyAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKyAqIEBnZW5lcmF0ZWQNCisgKi8NCitwdWJsaWMgY2xhc3MgQ29uc3RyYWludGJsb2Nrc0ZhY3RvcnlJbXBsIGV4dGVuZHMgRUZhY3RvcnlJbXBsIGltcGxlbWVudHMgQ29uc3RyYWludGJsb2Nrc0ZhY3Rvcnkgew0KKwkvKioNCisJICogQ3JlYXRlcyB0aGUgZGVmYXVsdCBmYWN0b3J5IGltcGxlbWVudGF0aW9uLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIHN0YXRpYyBDb25zdHJhaW50YmxvY2tzRmFjdG9yeSBpbml0KCkgew0KKwkJdHJ5IHsNCisJCQlDb25zdHJhaW50YmxvY2tzRmFjdG9yeSB0aGVDb25zdHJhaW50YmxvY2tzRmFjdG9yeSA9IChDb25zdHJhaW50YmxvY2tzRmFjdG9yeSlFUGFja2FnZS5SZWdpc3RyeS5JTlNUQU5DRS5nZXRFRmFjdG9yeShDb25zdHJhaW50YmxvY2tzUGFja2FnZS5lTlNfVVJJKTsNCisJCQlpZiAodGhlQ29uc3RyYWludGJsb2Nrc0ZhY3RvcnkgIT0gbnVsbCkgew0KKwkJCQlyZXR1cm4gdGhlQ29uc3RyYWludGJsb2Nrc0ZhY3Rvcnk7DQorCQkJfQ0KKwkJfQ0KKwkJY2F0Y2ggKEV4Y2VwdGlvbiBleGNlcHRpb24pIHsNCisJCQlFY29yZVBsdWdpbi5JTlNUQU5DRS5sb2coZXhjZXB0aW9uKTsNCisJCX0NCisJCXJldHVybiBuZXcgQ29uc3RyYWludGJsb2Nrc0ZhY3RvcnlJbXBsKCk7DQorCX0NCisNCisJLyoqDQorCSAqIENyZWF0ZXMgYW4gaW5zdGFuY2Ugb2YgdGhlIGZhY3RvcnkuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgQ29uc3RyYWludGJsb2Nrc0ZhY3RvcnlJbXBsKCkgew0KKwkJc3VwZXIoKTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgRU9iamVjdCBjcmVhdGUoRUNsYXNzIGVDbGFzcykgew0KKwkJc3dpdGNoIChlQ2xhc3MuZ2V0Q2xhc3NpZmllcklEKCkpIHsNCisJCQljYXNlIENvbnN0cmFpbnRibG9ja3NQYWNrYWdlLkNPTlNUUkFJTlRfQkxPQ0s6IHJldHVybiBjcmVhdGVDb25zdHJhaW50QmxvY2soKTsNCisJCQlkZWZhdWx0Og0KKwkJCQl0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJUaGUgY2xhc3MgJyIgKyBlQ2xhc3MuZ2V0TmFtZSgpICsgIicgaXMgbm90IGEgdmFsaWQgY2xhc3NpZmllciIpOyAvLyROT04tTkxTLTEkIC8vJE5PTi1OTFMtMiQNCisJCX0NCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBDb25zdHJhaW50QmxvY2sgY3JlYXRlQ29uc3RyYWludEJsb2NrKCkgew0KKwkJQ29uc3RyYWludEJsb2NrSW1wbCBjb25zdHJhaW50QmxvY2sgPSBuZXcgQ29uc3RyYWludEJsb2NrSW1wbCgpOw0KKwkJcmV0dXJuIGNvbnN0cmFpbnRCbG9jazsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBDb25zdHJhaW50YmxvY2tzUGFja2FnZSBnZXRDb25zdHJhaW50YmxvY2tzUGFja2FnZSgpIHsNCisJCXJldHVybiAoQ29uc3RyYWludGJsb2Nrc1BhY2thZ2UpZ2V0RVBhY2thZ2UoKTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBkZXByZWNhdGVkDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBEZXByZWNhdGVkDQorCXB1YmxpYyBzdGF0aWMgQ29uc3RyYWludGJsb2Nrc1BhY2thZ2UgZ2V0UGFja2FnZSgpIHsNCisJCXJldHVybiBDb25zdHJhaW50YmxvY2tzUGFja2FnZS5lSU5TVEFOQ0U7DQorCX0NCisNCit9IC8vQ29uc3RyYWludGJsb2Nrc0ZhY3RvcnlJbXBsDQpkaWZmIC0tZ2l0IGEvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvY29uc3RyYWludGJsb2Nrcy9pbnRlcm5hbC9pbXBsL0NvbnN0cmFpbnRibG9ja3NQYWNrYWdlSW1wbC5qYXZhIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvY29uc3RyYWludGJsb2Nrcy9pbnRlcm5hbC9pbXBsL0NvbnN0cmFpbnRibG9ja3NQYWNrYWdlSW1wbC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJkMTA5MWMKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9jb25zdHJhaW50YmxvY2tzL2ludGVybmFsL2ltcGwvQ29uc3RyYWludGJsb2Nrc1BhY2thZ2VJbXBsLmphdmEKQEAgLTAsMCArMSwyNTEgQEAKKy8qKg0KKyAqIENvcHlyaWdodCAoYykgMjAxNSBDRUEgTElTVC4NCisgKiANCisgKiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KKyAqICBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCisgKiAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCisgKiAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgKi8NCitwYWNrYWdlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5jb25zdHJhaW50YmxvY2tzLmludGVybmFsLmltcGw7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FQ2xhc3M7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FUGFja2FnZTsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLmltcGwuRVBhY2thZ2VJbXBsOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYWN0aXZpdGllcy5BY3Rpdml0aWVzUGFja2FnZTsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmFjdGl2aXRpZXMuaW50ZXJuYWwuaW1wbC5BY3Rpdml0aWVzUGFja2FnZUltcGw7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5hbGxvY2F0aW9ucy5BbGxvY2F0aW9uc1BhY2thZ2U7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5hbGxvY2F0aW9ucy5pbnRlcm5hbC5pbXBsLkFsbG9jYXRpb25zUGFja2FnZUltcGw7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5ibG9ja3MuQmxvY2tzUGFja2FnZTsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmJsb2Nrcy5pbnRlcm5hbC5pbXBsLkJsb2Nrc1BhY2thZ2VJbXBsOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuY29uc3RyYWludGJsb2Nrcy5Db25zdHJhaW50QmxvY2s7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5jb25zdHJhaW50YmxvY2tzLkNvbnN0cmFpbnRibG9ja3NGYWN0b3J5Ow0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuY29uc3RyYWludGJsb2Nrcy5Db25zdHJhaW50YmxvY2tzUGFja2FnZTsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRlcHJlY2F0ZWRlbGVtZW50cy5EZXByZWNhdGVkZWxlbWVudHNQYWNrYWdlOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGVwcmVjYXRlZGVsZW1lbnRzLmludGVybmFsLmltcGwuRGVwcmVjYXRlZGVsZW1lbnRzUGFja2FnZUltcGw7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5tb2RlbGVsZW1lbnRzLk1vZGVsZWxlbWVudHNQYWNrYWdlOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQubW9kZWxlbGVtZW50cy5pbnRlcm5hbC5pbXBsLk1vZGVsZWxlbWVudHNQYWNrYWdlSW1wbDsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnBvcnRhbmRmbG93cy5Qb3J0YW5kZmxvd3NQYWNrYWdlOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucG9ydGFuZGZsb3dzLmludGVybmFsLmltcGwuUG9ydGFuZGZsb3dzUGFja2FnZUltcGw7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5yZXF1aXJlbWVudHMuUmVxdWlyZW1lbnRzUGFja2FnZTsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnJlcXVpcmVtZW50cy5pbnRlcm5hbC5pbXBsLlJlcXVpcmVtZW50c1BhY2thZ2VJbXBsOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS51bWwyLnVtbC5wcm9maWxlLnN0YW5kYXJkLlN0YW5kYXJkUGFja2FnZTsNCisNCisvKioNCisgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKyAqIEFuIGltcGxlbWVudGF0aW9uIG9mIHRoZSBtb2RlbCA8Yj5QYWNrYWdlPC9iPi4NCisgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisgKiBAZ2VuZXJhdGVkDQorICovDQorcHVibGljIGNsYXNzIENvbnN0cmFpbnRibG9ja3NQYWNrYWdlSW1wbCBleHRlbmRzIEVQYWNrYWdlSW1wbCBpbXBsZW1lbnRzIENvbnN0cmFpbnRibG9ja3NQYWNrYWdlIHsNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwcml2YXRlIEVDbGFzcyBjb25zdHJhaW50QmxvY2tFQ2xhc3MgPSBudWxsOw0KKw0KKwkvKioNCisJICogQ3JlYXRlcyBhbiBpbnN0YW5jZSBvZiB0aGUgbW9kZWwgPGI+UGFja2FnZTwvYj4sIHJlZ2lzdGVyZWQgd2l0aA0KKwkgKiB7QGxpbmsgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVQYWNrYWdlLlJlZ2lzdHJ5IEVQYWNrYWdlLlJlZ2lzdHJ5fSBieSB0aGUgcGFja2FnZQ0KKwkgKiBwYWNrYWdlIFVSSSB2YWx1ZS4NCisJICogPHA+Tm90ZTogdGhlIGNvcnJlY3Qgd2F5IHRvIGNyZWF0ZSB0aGUgcGFja2FnZSBpcyB2aWEgdGhlIHN0YXRpYw0KKwkgKiBmYWN0b3J5IG1ldGhvZCB7QGxpbmsgI2luaXQgaW5pdCgpfSwgd2hpY2ggYWxzbyBwZXJmb3Jtcw0KKwkgKiBpbml0aWFsaXphdGlvbiBvZiB0aGUgcGFja2FnZSwgb3IgcmV0dXJucyB0aGUgcmVnaXN0ZXJlZCBwYWNrYWdlLA0KKwkgKiBpZiBvbmUgYWxyZWFkeSBleGlzdHMuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAc2VlIG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FUGFja2FnZS5SZWdpc3RyeQ0KKwkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5jb25zdHJhaW50YmxvY2tzLkNvbnN0cmFpbnRibG9ja3NQYWNrYWdlI2VOU19VUkkNCisJICogQHNlZSAjaW5pdCgpDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXByaXZhdGUgQ29uc3RyYWludGJsb2Nrc1BhY2thZ2VJbXBsKCkgew0KKwkJc3VwZXIoZU5TX1VSSSwgQ29uc3RyYWludGJsb2Nrc0ZhY3RvcnkuZUlOU1RBTkNFKTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXByaXZhdGUgc3RhdGljIGJvb2xlYW4gaXNJbml0ZWQgPSBmYWxzZTsNCisNCisJLyoqDQorCSAqIENyZWF0ZXMsIHJlZ2lzdGVycywgYW5kIGluaXRpYWxpemVzIHRoZSA8Yj5QYWNrYWdlPC9iPiBmb3IgdGhpcyBtb2RlbCwgYW5kIGZvciBhbnkgb3RoZXJzIHVwb24gd2hpY2ggaXQgZGVwZW5kcy4NCisJICogDQorCSAqIDxwPlRoaXMgbWV0aG9kIGlzIHVzZWQgdG8gaW5pdGlhbGl6ZSB7QGxpbmsgQ29uc3RyYWludGJsb2Nrc1BhY2thZ2UjZUlOU1RBTkNFfSB3aGVuIHRoYXQgZmllbGQgaXMgYWNjZXNzZWQuDQorCSAqIENsaWVudHMgc2hvdWxkIG5vdCBpbnZva2UgaXQgZGlyZWN0bHkuIEluc3RlYWQsIHRoZXkgc2hvdWxkIHNpbXBseSBhY2Nlc3MgdGhhdCBmaWVsZCB0byBvYnRhaW4gdGhlIHBhY2thZ2UuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAc2VlICNlTlNfVVJJDQorCSAqIEBzZWUgI2NyZWF0ZVBhY2thZ2VDb250ZW50cygpDQorCSAqIEBzZWUgI2luaXRpYWxpemVQYWNrYWdlQ29udGVudHMoKQ0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgc3RhdGljIENvbnN0cmFpbnRibG9ja3NQYWNrYWdlIGluaXQoKSB7DQorCQlpZiAoaXNJbml0ZWQpIHJldHVybiAoQ29uc3RyYWludGJsb2Nrc1BhY2thZ2UpRVBhY2thZ2UuUmVnaXN0cnkuSU5TVEFOQ0UuZ2V0RVBhY2thZ2UoQ29uc3RyYWludGJsb2Nrc1BhY2thZ2UuZU5TX1VSSSk7DQorDQorCQkvLyBPYnRhaW4gb3IgY3JlYXRlIGFuZCByZWdpc3RlciBwYWNrYWdlDQorCQlDb25zdHJhaW50YmxvY2tzUGFja2FnZUltcGwgdGhlQ29uc3RyYWludGJsb2Nrc1BhY2thZ2UgPSAoQ29uc3RyYWludGJsb2Nrc1BhY2thZ2VJbXBsKShFUGFja2FnZS5SZWdpc3RyeS5JTlNUQU5DRS5nZXQoZU5TX1VSSSkgaW5zdGFuY2VvZiBDb25zdHJhaW50YmxvY2tzUGFja2FnZUltcGwgPyBFUGFja2FnZS5SZWdpc3RyeS5JTlNUQU5DRS5nZXQoZU5TX1VSSSkgOiBuZXcgQ29uc3RyYWludGJsb2Nrc1BhY2thZ2VJbXBsKCkpOw0KKw0KKwkJaXNJbml0ZWQgPSB0cnVlOw0KKw0KKwkJLy8gSW5pdGlhbGl6ZSBzaW1wbGUgZGVwZW5kZW5jaWVzDQorCQlTdGFuZGFyZFBhY2thZ2UuZUlOU1RBTkNFLmVDbGFzcygpOw0KKw0KKwkJLy8gT2J0YWluIG9yIGNyZWF0ZSBhbmQgcmVnaXN0ZXIgaW50ZXJkZXBlbmRlbmNpZXMNCisJCUJsb2Nrc1BhY2thZ2VJbXBsIHRoZUJsb2Nrc1BhY2thZ2UgPSAoQmxvY2tzUGFja2FnZUltcGwpKEVQYWNrYWdlLlJlZ2lzdHJ5LklOU1RBTkNFLmdldEVQYWNrYWdlKEJsb2Nrc1BhY2thZ2UuZU5TX1VSSSkgaW5zdGFuY2VvZiBCbG9ja3NQYWNrYWdlSW1wbCA/IEVQYWNrYWdlLlJlZ2lzdHJ5LklOU1RBTkNFLmdldEVQYWNrYWdlKEJsb2Nrc1BhY2thZ2UuZU5TX1VSSSkgOiBCbG9ja3NQYWNrYWdlLmVJTlNUQU5DRSk7DQorCQlQb3J0YW5kZmxvd3NQYWNrYWdlSW1wbCB0aGVQb3J0YW5kZmxvd3NQYWNrYWdlID0gKFBvcnRhbmRmbG93c1BhY2thZ2VJbXBsKShFUGFja2FnZS5SZWdpc3RyeS5JTlNUQU5DRS5nZXRFUGFja2FnZShQb3J0YW5kZmxvd3NQYWNrYWdlLmVOU19VUkkpIGluc3RhbmNlb2YgUG9ydGFuZGZsb3dzUGFja2FnZUltcGwgPyBFUGFja2FnZS5SZWdpc3RyeS5JTlNUQU5DRS5nZXRFUGFja2FnZShQb3J0YW5kZmxvd3NQYWNrYWdlLmVOU19VUkkpIDogUG9ydGFuZGZsb3dzUGFja2FnZS5lSU5TVEFOQ0UpOw0KKwkJQWN0aXZpdGllc1BhY2thZ2VJbXBsIHRoZUFjdGl2aXRpZXNQYWNrYWdlID0gKEFjdGl2aXRpZXNQYWNrYWdlSW1wbCkoRVBhY2thZ2UuUmVnaXN0cnkuSU5TVEFOQ0UuZ2V0RVBhY2thZ2UoQWN0aXZpdGllc1BhY2thZ2UuZU5TX1VSSSkgaW5zdGFuY2VvZiBBY3Rpdml0aWVzUGFja2FnZUltcGwgPyBFUGFja2FnZS5SZWdpc3RyeS5JTlNUQU5DRS5nZXRFUGFja2FnZShBY3Rpdml0aWVzUGFja2FnZS5lTlNfVVJJKSA6IEFjdGl2aXRpZXNQYWNrYWdlLmVJTlNUQU5DRSk7DQorCQlNb2RlbGVsZW1lbnRzUGFja2FnZUltcGwgdGhlTW9kZWxlbGVtZW50c1BhY2thZ2UgPSAoTW9kZWxlbGVtZW50c1BhY2thZ2VJbXBsKShFUGFja2FnZS5SZWdpc3RyeS5JTlNUQU5DRS5nZXRFUGFja2FnZShNb2RlbGVsZW1lbnRzUGFja2FnZS5lTlNfVVJJKSBpbnN0YW5jZW9mIE1vZGVsZWxlbWVudHNQYWNrYWdlSW1wbCA/IEVQYWNrYWdlLlJlZ2lzdHJ5LklOU1RBTkNFLmdldEVQYWNrYWdlKE1vZGVsZWxlbWVudHNQYWNrYWdlLmVOU19VUkkpIDogTW9kZWxlbGVtZW50c1BhY2thZ2UuZUlOU1RBTkNFKTsNCisJCUFsbG9jYXRpb25zUGFja2FnZUltcGwgdGhlQWxsb2NhdGlvbnNQYWNrYWdlID0gKEFsbG9jYXRpb25zUGFja2FnZUltcGwpKEVQYWNrYWdlLlJlZ2lzdHJ5LklOU1RBTkNFLmdldEVQYWNrYWdlKEFsbG9jYXRpb25zUGFja2FnZS5lTlNfVVJJKSBpbnN0YW5jZW9mIEFsbG9jYXRpb25zUGFja2FnZUltcGwgPyBFUGFja2FnZS5SZWdpc3RyeS5JTlNUQU5DRS5nZXRFUGFja2FnZShBbGxvY2F0aW9uc1BhY2thZ2UuZU5TX1VSSSkgOiBBbGxvY2F0aW9uc1BhY2thZ2UuZUlOU1RBTkNFKTsNCisJCVJlcXVpcmVtZW50c1BhY2thZ2VJbXBsIHRoZVJlcXVpcmVtZW50c1BhY2thZ2UgPSAoUmVxdWlyZW1lbnRzUGFja2FnZUltcGwpKEVQYWNrYWdlLlJlZ2lzdHJ5LklOU1RBTkNFLmdldEVQYWNrYWdlKFJlcXVpcmVtZW50c1BhY2thZ2UuZU5TX1VSSSkgaW5zdGFuY2VvZiBSZXF1aXJlbWVudHNQYWNrYWdlSW1wbCA/IEVQYWNrYWdlLlJlZ2lzdHJ5LklOU1RBTkNFLmdldEVQYWNrYWdlKFJlcXVpcmVtZW50c1BhY2thZ2UuZU5TX1VSSSkgOiBSZXF1aXJlbWVudHNQYWNrYWdlLmVJTlNUQU5DRSk7DQorCQlEZXByZWNhdGVkZWxlbWVudHNQYWNrYWdlSW1wbCB0aGVEZXByZWNhdGVkZWxlbWVudHNQYWNrYWdlID0gKERlcHJlY2F0ZWRlbGVtZW50c1BhY2thZ2VJbXBsKShFUGFja2FnZS5SZWdpc3RyeS5JTlNUQU5DRS5nZXRFUGFja2FnZShEZXByZWNhdGVkZWxlbWVudHNQYWNrYWdlLmVOU19VUkkpIGluc3RhbmNlb2YgRGVwcmVjYXRlZGVsZW1lbnRzUGFja2FnZUltcGwgPyBFUGFja2FnZS5SZWdpc3RyeS5JTlNUQU5DRS5nZXRFUGFja2FnZShEZXByZWNhdGVkZWxlbWVudHNQYWNrYWdlLmVOU19VUkkpIDogRGVwcmVjYXRlZGVsZW1lbnRzUGFja2FnZS5lSU5TVEFOQ0UpOw0KKw0KKwkJLy8gQ3JlYXRlIHBhY2thZ2UgbWV0YS1kYXRhIG9iamVjdHMNCisJCXRoZUNvbnN0cmFpbnRibG9ja3NQYWNrYWdlLmNyZWF0ZVBhY2thZ2VDb250ZW50cygpOw0KKwkJdGhlQmxvY2tzUGFja2FnZS5jcmVhdGVQYWNrYWdlQ29udGVudHMoKTsNCisJCXRoZVBvcnRhbmRmbG93c1BhY2thZ2UuY3JlYXRlUGFja2FnZUNvbnRlbnRzKCk7DQorCQl0aGVBY3Rpdml0aWVzUGFja2FnZS5jcmVhdGVQYWNrYWdlQ29udGVudHMoKTsNCisJCXRoZU1vZGVsZWxlbWVudHNQYWNrYWdlLmNyZWF0ZVBhY2thZ2VDb250ZW50cygpOw0KKwkJdGhlQWxsb2NhdGlvbnNQYWNrYWdlLmNyZWF0ZVBhY2thZ2VDb250ZW50cygpOw0KKwkJdGhlUmVxdWlyZW1lbnRzUGFja2FnZS5jcmVhdGVQYWNrYWdlQ29udGVudHMoKTsNCisJCXRoZURlcHJlY2F0ZWRlbGVtZW50c1BhY2thZ2UuY3JlYXRlUGFja2FnZUNvbnRlbnRzKCk7DQorDQorCQkvLyBJbml0aWFsaXplIGNyZWF0ZWQgbWV0YS1kYXRhDQorCQl0aGVDb25zdHJhaW50YmxvY2tzUGFja2FnZS5pbml0aWFsaXplUGFja2FnZUNvbnRlbnRzKCk7DQorCQl0aGVCbG9ja3NQYWNrYWdlLmluaXRpYWxpemVQYWNrYWdlQ29udGVudHMoKTsNCisJCXRoZVBvcnRhbmRmbG93c1BhY2thZ2UuaW5pdGlhbGl6ZVBhY2thZ2VDb250ZW50cygpOw0KKwkJdGhlQWN0aXZpdGllc1BhY2thZ2UuaW5pdGlhbGl6ZVBhY2thZ2VDb250ZW50cygpOw0KKwkJdGhlTW9kZWxlbGVtZW50c1BhY2thZ2UuaW5pdGlhbGl6ZVBhY2thZ2VDb250ZW50cygpOw0KKwkJdGhlQWxsb2NhdGlvbnNQYWNrYWdlLmluaXRpYWxpemVQYWNrYWdlQ29udGVudHMoKTsNCisJCXRoZVJlcXVpcmVtZW50c1BhY2thZ2UuaW5pdGlhbGl6ZVBhY2thZ2VDb250ZW50cygpOw0KKwkJdGhlRGVwcmVjYXRlZGVsZW1lbnRzUGFja2FnZS5pbml0aWFsaXplUGFja2FnZUNvbnRlbnRzKCk7DQorDQorCQkvLyBNYXJrIG1ldGEtZGF0YSB0byBpbmRpY2F0ZSBpdCBjYW4ndCBiZSBjaGFuZ2VkDQorCQl0aGVDb25zdHJhaW50YmxvY2tzUGFja2FnZS5mcmVlemUoKTsNCisNCisgIA0KKwkJLy8gVXBkYXRlIHRoZSByZWdpc3RyeSBhbmQgcmV0dXJuIHRoZSBwYWNrYWdlDQorCQlFUGFja2FnZS5SZWdpc3RyeS5JTlNUQU5DRS5wdXQoQ29uc3RyYWludGJsb2Nrc1BhY2thZ2UuZU5TX1VSSSwgdGhlQ29uc3RyYWludGJsb2Nrc1BhY2thZ2UpOw0KKwkJcmV0dXJuIHRoZUNvbnN0cmFpbnRibG9ja3NQYWNrYWdlOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIEVDbGFzcyBnZXRDb25zdHJhaW50QmxvY2soKSB7DQorCQlyZXR1cm4gY29uc3RyYWludEJsb2NrRUNsYXNzOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIENvbnN0cmFpbnRibG9ja3NGYWN0b3J5IGdldENvbnN0cmFpbnRibG9ja3NGYWN0b3J5KCkgew0KKwkJcmV0dXJuIChDb25zdHJhaW50YmxvY2tzRmFjdG9yeSlnZXRFRmFjdG9yeUluc3RhbmNlKCk7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwcml2YXRlIGJvb2xlYW4gaXNDcmVhdGVkID0gZmFsc2U7DQorDQorCS8qKg0KKwkgKiBDcmVhdGVzIHRoZSBtZXRhLW1vZGVsIG9iamVjdHMgZm9yIHRoZSBwYWNrYWdlLiAgVGhpcyBtZXRob2QgaXMNCisJICogZ3VhcmRlZCB0byBoYXZlIG5vIGFmZmVjdCBvbiBhbnkgaW52b2NhdGlvbiBidXQgaXRzIGZpcnN0Lg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIHZvaWQgY3JlYXRlUGFja2FnZUNvbnRlbnRzKCkgew0KKwkJaWYgKGlzQ3JlYXRlZCkgcmV0dXJuOw0KKwkJaXNDcmVhdGVkID0gdHJ1ZTsNCisNCisJCS8vIENyZWF0ZSBjbGFzc2VzIGFuZCB0aGVpciBmZWF0dXJlcw0KKwkJY29uc3RyYWludEJsb2NrRUNsYXNzID0gY3JlYXRlRUNsYXNzKENPTlNUUkFJTlRfQkxPQ0spOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHJpdmF0ZSBib29sZWFuIGlzSW5pdGlhbGl6ZWQgPSBmYWxzZTsNCisNCisJLyoqDQorCSAqIENvbXBsZXRlIHRoZSBpbml0aWFsaXphdGlvbiBvZiB0aGUgcGFja2FnZSBhbmQgaXRzIG1ldGEtbW9kZWwuICBUaGlzDQorCSAqIG1ldGhvZCBpcyBndWFyZGVkIHRvIGhhdmUgbm8gYWZmZWN0IG9uIGFueSBpbnZvY2F0aW9uIGJ1dCBpdHMgZmlyc3QuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgdm9pZCBpbml0aWFsaXplUGFja2FnZUNvbnRlbnRzKCkgew0KKwkJaWYgKGlzSW5pdGlhbGl6ZWQpIHJldHVybjsNCisJCWlzSW5pdGlhbGl6ZWQgPSB0cnVlOw0KKw0KKwkJLy8gSW5pdGlhbGl6ZSBwYWNrYWdlDQorCQlzZXROYW1lKGVOQU1FKTsNCisJCXNldE5zUHJlZml4KGVOU19QUkVGSVgpOw0KKwkJc2V0TnNVUkkoZU5TX1VSSSk7DQorDQorCQkvLyBPYnRhaW4gb3RoZXIgZGVwZW5kZW50IHBhY2thZ2VzDQorCQlCbG9ja3NQYWNrYWdlIHRoZUJsb2Nrc1BhY2thZ2UgPSAoQmxvY2tzUGFja2FnZSlFUGFja2FnZS5SZWdpc3RyeS5JTlNUQU5DRS5nZXRFUGFja2FnZShCbG9ja3NQYWNrYWdlLmVOU19VUkkpOw0KKw0KKwkJLy8gQ3JlYXRlIHR5cGUgcGFyYW1ldGVycw0KKw0KKwkJLy8gU2V0IGJvdW5kcyBmb3IgdHlwZSBwYXJhbWV0ZXJzDQorDQorCQkvLyBBZGQgc3VwZXJ0eXBlcyB0byBjbGFzc2VzDQorCQljb25zdHJhaW50QmxvY2tFQ2xhc3MuZ2V0RVN1cGVyVHlwZXMoKS5hZGQodGhlQmxvY2tzUGFja2FnZS5nZXRCbG9jaygpKTsNCisNCisJCS8vIEluaXRpYWxpemUgY2xhc3NlcywgZmVhdHVyZXMsIGFuZCBvcGVyYXRpb25zOyBhZGQgcGFyYW1ldGVycw0KKwkJaW5pdEVDbGFzcyhjb25zdHJhaW50QmxvY2tFQ2xhc3MsIENvbnN0cmFpbnRCbG9jay5jbGFzcywgIkNvbnN0cmFpbnRCbG9jayIsICFJU19BQlNUUkFDVCwgIUlTX0lOVEVSRkFDRSwgSVNfR0VORVJBVEVEX0lOU1RBTkNFX0NMQVNTKTsgLy8kTk9OLU5MUy0xJA0KKw0KKwkJLy8gQ3JlYXRlIHJlc291cmNlDQorCQljcmVhdGVSZXNvdXJjZShlTlNfVVJJKTsNCisNCisJCS8vIENyZWF0ZSBhbm5vdGF0aW9ucw0KKwkJLy8gaHR0cDovL3d3dy5lY2xpcHNlLm9yZy91bWwyLzIuMC4wL1VNTA0KKwkJY3JlYXRlVU1MQW5ub3RhdGlvbnMoKTsNCisJfQ0KKw0KKwkvKioNCisJICogSW5pdGlhbGl6ZXMgdGhlIGFubm90YXRpb25zIGZvciA8Yj5odHRwOi8vd3d3LmVjbGlwc2Uub3JnL3VtbDIvMi4wLjAvVU1MPC9iPi4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXByb3RlY3RlZCB2b2lkIGNyZWF0ZVVNTEFubm90YXRpb25zKCkgew0KKwkJU3RyaW5nIHNvdXJjZSA9ICJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3VtbDIvMi4wLjAvVU1MIjsgLy8kTk9OLU5MUy0xJAkNCisJCWFkZEFubm90YXRpb24NCisJCSAgKHRoaXMsIA0KKwkJICAgc291cmNlLCANCisJCSAgIG5ldyBTdHJpbmdbXSB7DQorCQkJICJvcmlnaW5hbE5hbWUiLCAiQ29uc3RyYWludEJsb2NrcyIgLy8kTk9OLU5MUy0xJCAvLyROT04tTkxTLTIkDQorCQkgICB9KTsNCisJfQ0KKw0KK30gLy9Db25zdHJhaW50YmxvY2tzUGFja2FnZUltcGwNCmRpZmYgLS1naXQgYS9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9jb25zdHJhaW50YmxvY2tzL3V0aWwvQ29uc3RyYWludGJsb2Nrc0FkYXB0ZXJGYWN0b3J5LmphdmEgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9jb25zdHJhaW50YmxvY2tzL3V0aWwvQ29uc3RyYWludGJsb2Nrc0FkYXB0ZXJGYWN0b3J5LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmE0OThkZAotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L2NvbnN0cmFpbnRibG9ja3MvdXRpbC9Db25zdHJhaW50YmxvY2tzQWRhcHRlckZhY3RvcnkuamF2YQpAQCAtMCwwICsxLDE0NiBAQAorLyoqDQorICogQ29weXJpZ2h0IChjKSAyMDE1IENFQSBMSVNULg0KKyAqIA0KKyAqICBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQorICogIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KKyAqICB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KKyAqICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqLw0KK3BhY2thZ2Ugb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmNvbnN0cmFpbnRibG9ja3MudXRpbDsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi5ub3RpZnkuQWRhcHRlcjsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi5ub3RpZnkuTm90aWZpZXI7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jb21tb24ubm90aWZ5LmltcGwuQWRhcHRlckZhY3RvcnlJbXBsOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRU9iamVjdDsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmJsb2Nrcy5CbG9jazsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmNvbnN0cmFpbnRibG9ja3MuKjsNCisNCisvKioNCisgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKyAqIFRoZSA8Yj5BZGFwdGVyIEZhY3Rvcnk8L2I+IGZvciB0aGUgbW9kZWwuDQorICogSXQgcHJvdmlkZXMgYW4gYWRhcHRlciA8Y29kZT5jcmVhdGVYWFg8L2NvZGU+IG1ldGhvZCBmb3IgZWFjaCBjbGFzcyBvZiB0aGUgbW9kZWwuDQorICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuY29uc3RyYWludGJsb2Nrcy5Db25zdHJhaW50YmxvY2tzUGFja2FnZQ0KKyAqIEBnZW5lcmF0ZWQNCisgKi8NCitwdWJsaWMgY2xhc3MgQ29uc3RyYWludGJsb2Nrc0FkYXB0ZXJGYWN0b3J5IGV4dGVuZHMgQWRhcHRlckZhY3RvcnlJbXBsIHsNCisJLyoqDQorCSAqIFRoZSBjYWNoZWQgbW9kZWwgcGFja2FnZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXByb3RlY3RlZCBzdGF0aWMgQ29uc3RyYWludGJsb2Nrc1BhY2thZ2UgbW9kZWxQYWNrYWdlOw0KKw0KKwkvKioNCisJICogQ3JlYXRlcyBhbiBpbnN0YW5jZSBvZiB0aGUgYWRhcHRlciBmYWN0b3J5Lg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIENvbnN0cmFpbnRibG9ja3NBZGFwdGVyRmFjdG9yeSgpIHsNCisJCWlmIChtb2RlbFBhY2thZ2UgPT0gbnVsbCkgew0KKwkJCW1vZGVsUGFja2FnZSA9IENvbnN0cmFpbnRibG9ja3NQYWNrYWdlLmVJTlNUQU5DRTsNCisJCX0NCisJfQ0KKw0KKwkvKioNCisJICogUmV0dXJucyB3aGV0aGVyIHRoaXMgZmFjdG9yeSBpcyBhcHBsaWNhYmxlIGZvciB0aGUgdHlwZSBvZiB0aGUgb2JqZWN0Lg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiBUaGlzIGltcGxlbWVudGF0aW9uIHJldHVybnMgPGNvZGU+dHJ1ZTwvY29kZT4gaWYgdGhlIG9iamVjdCBpcyBlaXRoZXIgdGhlIG1vZGVsJ3MgcGFja2FnZSBvciBpcyBhbiBpbnN0YW5jZSBvYmplY3Qgb2YgdGhlIG1vZGVsLg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHJldHVybiB3aGV0aGVyIHRoaXMgZmFjdG9yeSBpcyBhcHBsaWNhYmxlIGZvciB0aGUgdHlwZSBvZiB0aGUgb2JqZWN0Lg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIGJvb2xlYW4gaXNGYWN0b3J5Rm9yVHlwZShPYmplY3Qgb2JqZWN0KSB7DQorCQlpZiAob2JqZWN0ID09IG1vZGVsUGFja2FnZSkgew0KKwkJCXJldHVybiB0cnVlOw0KKwkJfQ0KKwkJaWYgKG9iamVjdCBpbnN0YW5jZW9mIEVPYmplY3QpIHsNCisJCQlyZXR1cm4gKChFT2JqZWN0KW9iamVjdCkuZUNsYXNzKCkuZ2V0RVBhY2thZ2UoKSA9PSBtb2RlbFBhY2thZ2U7DQorCQl9DQorCQlyZXR1cm4gZmFsc2U7DQorCX0NCisNCisJLyoqDQorCSAqIFRoZSBzd2l0Y2ggdGhhdCBkZWxlZ2F0ZXMgdG8gdGhlIDxjb2RlPmNyZWF0ZVhYWDwvY29kZT4gbWV0aG9kcy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXByb3RlY3RlZCBDb25zdHJhaW50YmxvY2tzU3dpdGNoPEFkYXB0ZXI+IG1vZGVsU3dpdGNoID0NCisJCW5ldyBDb25zdHJhaW50YmxvY2tzU3dpdGNoPEFkYXB0ZXI+KCkgew0KKwkJCUBPdmVycmlkZQ0KKwkJCXB1YmxpYyBBZGFwdGVyIGNhc2VDb25zdHJhaW50QmxvY2soQ29uc3RyYWludEJsb2NrIG9iamVjdCkgew0KKwkJCQlyZXR1cm4gY3JlYXRlQ29uc3RyYWludEJsb2NrQWRhcHRlcigpOw0KKwkJCX0NCisJCQlAT3ZlcnJpZGUNCisJCQlwdWJsaWMgQWRhcHRlciBjYXNlQmxvY2soQmxvY2sgb2JqZWN0KSB7DQorCQkJCXJldHVybiBjcmVhdGVCbG9ja0FkYXB0ZXIoKTsNCisJCQl9DQorCQkJQE92ZXJyaWRlDQorCQkJcHVibGljIEFkYXB0ZXIgZGVmYXVsdENhc2UoRU9iamVjdCBvYmplY3QpIHsNCisJCQkJcmV0dXJuIGNyZWF0ZUVPYmplY3RBZGFwdGVyKCk7DQorCQkJfQ0KKwkJfTsNCisNCisJLyoqDQorCSAqIENyZWF0ZXMgYW4gYWRhcHRlciBmb3IgdGhlIDxjb2RlPnRhcmdldDwvY29kZT4uDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAcGFyYW0gdGFyZ2V0IHRoZSBvYmplY3QgdG8gYWRhcHQuDQorCSAqIEByZXR1cm4gdGhlIGFkYXB0ZXIgZm9yIHRoZSA8Y29kZT50YXJnZXQ8L2NvZGU+Lg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIEFkYXB0ZXIgY3JlYXRlQWRhcHRlcihOb3RpZmllciB0YXJnZXQpIHsNCisJCXJldHVybiBtb2RlbFN3aXRjaC5kb1N3aXRjaCgoRU9iamVjdCl0YXJnZXQpOw0KKwl9DQorDQorDQorCS8qKg0KKwkgKiBDcmVhdGVzIGEgbmV3IGFkYXB0ZXIgZm9yIGFuIG9iamVjdCBvZiBjbGFzcyAne0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5jb25zdHJhaW50YmxvY2tzLkNvbnN0cmFpbnRCbG9jayA8ZW0+Q29uc3RyYWludCBCbG9jazwvZW0+fScuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIFRoaXMgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiByZXR1cm5zIG51bGwgc28gdGhhdCB3ZSBjYW4gZWFzaWx5IGlnbm9yZSBjYXNlczsNCisJICogaXQncyB1c2VmdWwgdG8gaWdub3JlIGEgY2FzZSB3aGVuIGluaGVyaXRhbmNlIHdpbGwgY2F0Y2ggYWxsIHRoZSBjYXNlcyBhbnl3YXkuDQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAcmV0dXJuIHRoZSBuZXcgYWRhcHRlci4NCisJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuY29uc3RyYWludGJsb2Nrcy5Db25zdHJhaW50QmxvY2sNCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIEFkYXB0ZXIgY3JlYXRlQ29uc3RyYWludEJsb2NrQWRhcHRlcigpIHsNCisJCXJldHVybiBudWxsOw0KKwl9DQorDQorCS8qKg0KKwkgKiBDcmVhdGVzIGEgbmV3IGFkYXB0ZXIgZm9yIGFuIG9iamVjdCBvZiBjbGFzcyAne0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5ibG9ja3MuQmxvY2sgPGVtPkJsb2NrPC9lbT59Jy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogVGhpcyBkZWZhdWx0IGltcGxlbWVudGF0aW9uIHJldHVybnMgbnVsbCBzbyB0aGF0IHdlIGNhbiBlYXNpbHkgaWdub3JlIGNhc2VzOw0KKwkgKiBpdCdzIHVzZWZ1bCB0byBpZ25vcmUgYSBjYXNlIHdoZW4gaW5oZXJpdGFuY2Ugd2lsbCBjYXRjaCBhbGwgdGhlIGNhc2VzIGFueXdheS4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEByZXR1cm4gdGhlIG5ldyBhZGFwdGVyLg0KKwkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5ibG9ja3MuQmxvY2sNCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIEFkYXB0ZXIgY3JlYXRlQmxvY2tBZGFwdGVyKCkgew0KKwkJcmV0dXJuIG51bGw7DQorCX0NCisNCisJLyoqDQorCSAqIENyZWF0ZXMgYSBuZXcgYWRhcHRlciBmb3IgdGhlIGRlZmF1bHQgY2FzZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogVGhpcyBkZWZhdWx0IGltcGxlbWVudGF0aW9uIHJldHVybnMgbnVsbC4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEByZXR1cm4gdGhlIG5ldyBhZGFwdGVyLg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgQWRhcHRlciBjcmVhdGVFT2JqZWN0QWRhcHRlcigpIHsNCisJCXJldHVybiBudWxsOw0KKwl9DQorDQorfSAvL0NvbnN0cmFpbnRibG9ja3NBZGFwdGVyRmFjdG9yeQ0KZGlmZiAtLWdpdCBhL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L2NvbnN0cmFpbnRibG9ja3MvdXRpbC9Db25zdHJhaW50YmxvY2tzU3dpdGNoLmphdmEgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9jb25zdHJhaW50YmxvY2tzL3V0aWwvQ29uc3RyYWludGJsb2Nrc1N3aXRjaC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYyNzBiNGMKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9jb25zdHJhaW50YmxvY2tzL3V0aWwvQ29uc3RyYWludGJsb2Nrc1N3aXRjaC5qYXZhCkBAIC0wLDAgKzEsMTM0IEBACisvKioNCisgKiBDb3B5cmlnaHQgKGMpIDIwMTUgQ0VBIExJU1QuDQorICogDQorICogIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCisgKiAgYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQorICogIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQorICogIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICovDQorcGFja2FnZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuY29uc3RyYWludGJsb2Nrcy51dGlsOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRU9iamVjdDsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVQYWNrYWdlOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUudXRpbC5Td2l0Y2g7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5ibG9ja3MuQmxvY2s7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5jb25zdHJhaW50YmxvY2tzLio7DQorDQorLyoqDQorICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisgKiBUaGUgPGI+U3dpdGNoPC9iPiBmb3IgdGhlIG1vZGVsJ3MgaW5oZXJpdGFuY2UgaGllcmFyY2h5Lg0KKyAqIEl0IHN1cHBvcnRzIHRoZSBjYWxsIHtAbGluayAjZG9Td2l0Y2goRU9iamVjdCkgZG9Td2l0Y2gob2JqZWN0KX0NCisgKiB0byBpbnZva2UgdGhlIDxjb2RlPmNhc2VYWFg8L2NvZGU+IG1ldGhvZCBmb3IgZWFjaCBjbGFzcyBvZiB0aGUgbW9kZWwsDQorICogc3RhcnRpbmcgd2l0aCB0aGUgYWN0dWFsIGNsYXNzIG9mIHRoZSBvYmplY3QNCisgKiBhbmQgcHJvY2VlZGluZyB1cCB0aGUgaW5oZXJpdGFuY2UgaGllcmFyY2h5DQorICogdW50aWwgYSBub24tbnVsbCByZXN1bHQgaXMgcmV0dXJuZWQsDQorICogd2hpY2ggaXMgdGhlIHJlc3VsdCBvZiB0aGUgc3dpdGNoLg0KKyAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKyAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmNvbnN0cmFpbnRibG9ja3MuQ29uc3RyYWludGJsb2Nrc1BhY2thZ2UNCisgKiBAZ2VuZXJhdGVkDQorICovDQorcHVibGljIGNsYXNzIENvbnN0cmFpbnRibG9ja3NTd2l0Y2g8VD4gZXh0ZW5kcyBTd2l0Y2g8VD4gew0KKwkvKioNCisJICogVGhlIGNhY2hlZCBtb2RlbCBwYWNrYWdlDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwcm90ZWN0ZWQgc3RhdGljIENvbnN0cmFpbnRibG9ja3NQYWNrYWdlIG1vZGVsUGFja2FnZTsNCisNCisJLyoqDQorCSAqIENyZWF0ZXMgYW4gaW5zdGFuY2Ugb2YgdGhlIHN3aXRjaC4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBDb25zdHJhaW50YmxvY2tzU3dpdGNoKCkgew0KKwkJaWYgKG1vZGVsUGFja2FnZSA9PSBudWxsKSB7DQorCQkJbW9kZWxQYWNrYWdlID0gQ29uc3RyYWludGJsb2Nrc1BhY2thZ2UuZUlOU1RBTkNFOw0KKwkJfQ0KKwl9DQorDQorCS8qKg0KKwkgKiBDaGVja3Mgd2hldGhlciB0aGlzIGlzIGEgc3dpdGNoIGZvciB0aGUgZ2l2ZW4gcGFja2FnZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBwYXJhbSBlUGFja2FnZSB0aGUgcGFja2FnZSBpbiBxdWVzdGlvbi4NCisJICogQHJldHVybiB3aGV0aGVyIHRoaXMgaXMgYSBzd2l0Y2ggZm9yIHRoZSBnaXZlbiBwYWNrYWdlLg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHJvdGVjdGVkIGJvb2xlYW4gaXNTd2l0Y2hGb3IoRVBhY2thZ2UgZVBhY2thZ2UpIHsNCisJCXJldHVybiBlUGFja2FnZSA9PSBtb2RlbFBhY2thZ2U7DQorCX0NCisNCisJLyoqDQorCSAqIENhbGxzIDxjb2RlPmNhc2VYWFg8L2NvZGU+IGZvciBlYWNoIGNsYXNzIG9mIHRoZSBtb2RlbCB1bnRpbCBvbmUgcmV0dXJucyBhIG5vbiBudWxsIHJlc3VsdDsgaXQgeWllbGRzIHRoYXQgcmVzdWx0Lg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHJldHVybiB0aGUgZmlyc3Qgbm9uLW51bGwgcmVzdWx0IHJldHVybmVkIGJ5IGEgPGNvZGU+Y2FzZVhYWDwvY29kZT4gY2FsbC4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXByb3RlY3RlZCBUIGRvU3dpdGNoKGludCBjbGFzc2lmaWVySUQsIEVPYmplY3QgdGhlRU9iamVjdCkgew0KKwkJc3dpdGNoIChjbGFzc2lmaWVySUQpIHsNCisJCQljYXNlIENvbnN0cmFpbnRibG9ja3NQYWNrYWdlLkNPTlNUUkFJTlRfQkxPQ0s6IHsNCisJCQkJQ29uc3RyYWludEJsb2NrIGNvbnN0cmFpbnRCbG9jayA9IChDb25zdHJhaW50QmxvY2spdGhlRU9iamVjdDsNCisJCQkJVCByZXN1bHQgPSBjYXNlQ29uc3RyYWludEJsb2NrKGNvbnN0cmFpbnRCbG9jayk7DQorCQkJCWlmIChyZXN1bHQgPT0gbnVsbCkgcmVzdWx0ID0gY2FzZUJsb2NrKGNvbnN0cmFpbnRCbG9jayk7DQorCQkJCWlmIChyZXN1bHQgPT0gbnVsbCkgcmVzdWx0ID0gZGVmYXVsdENhc2UodGhlRU9iamVjdCk7DQorCQkJCXJldHVybiByZXN1bHQ7DQorCQkJfQ0KKwkJCWRlZmF1bHQ6IHJldHVybiBkZWZhdWx0Q2FzZSh0aGVFT2JqZWN0KTsNCisJCX0NCisJfQ0KKw0KKwkvKioNCisJICogUmV0dXJucyB0aGUgcmVzdWx0IG9mIGludGVycHJldGluZyB0aGUgb2JqZWN0IGFzIGFuIGluc3RhbmNlIG9mICc8ZW0+Q29uc3RyYWludCBCbG9jazwvZW0+Jy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogVGhpcyBpbXBsZW1lbnRhdGlvbiByZXR1cm5zIG51bGw7DQorCSAqIHJldHVybmluZyBhIG5vbi1udWxsIHJlc3VsdCB3aWxsIHRlcm1pbmF0ZSB0aGUgc3dpdGNoLg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHBhcmFtIG9iamVjdCB0aGUgdGFyZ2V0IG9mIHRoZSBzd2l0Y2guDQorCSAqIEByZXR1cm4gdGhlIHJlc3VsdCBvZiBpbnRlcnByZXRpbmcgdGhlIG9iamVjdCBhcyBhbiBpbnN0YW5jZSBvZiAnPGVtPkNvbnN0cmFpbnQgQmxvY2s8L2VtPicuDQorCSAqIEBzZWUgI2RvU3dpdGNoKG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FT2JqZWN0KSBkb1N3aXRjaChFT2JqZWN0KQ0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgVCBjYXNlQ29uc3RyYWludEJsb2NrKENvbnN0cmFpbnRCbG9jayBvYmplY3QpIHsNCisJCXJldHVybiBudWxsOw0KKwl9DQorDQorCS8qKg0KKwkgKiBSZXR1cm5zIHRoZSByZXN1bHQgb2YgaW50ZXJwcmV0aW5nIHRoZSBvYmplY3QgYXMgYW4gaW5zdGFuY2Ugb2YgJzxlbT5CbG9jazwvZW0+Jy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogVGhpcyBpbXBsZW1lbnRhdGlvbiByZXR1cm5zIG51bGw7DQorCSAqIHJldHVybmluZyBhIG5vbi1udWxsIHJlc3VsdCB3aWxsIHRlcm1pbmF0ZSB0aGUgc3dpdGNoLg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHBhcmFtIG9iamVjdCB0aGUgdGFyZ2V0IG9mIHRoZSBzd2l0Y2guDQorCSAqIEByZXR1cm4gdGhlIHJlc3VsdCBvZiBpbnRlcnByZXRpbmcgdGhlIG9iamVjdCBhcyBhbiBpbnN0YW5jZSBvZiAnPGVtPkJsb2NrPC9lbT4nLg0KKwkgKiBAc2VlICNkb1N3aXRjaChvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRU9iamVjdCkgZG9Td2l0Y2goRU9iamVjdCkNCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIFQgY2FzZUJsb2NrKEJsb2NrIG9iamVjdCkgew0KKwkJcmV0dXJuIG51bGw7DQorCX0NCisNCisJLyoqDQorCSAqIFJldHVybnMgdGhlIHJlc3VsdCBvZiBpbnRlcnByZXRpbmcgdGhlIG9iamVjdCBhcyBhbiBpbnN0YW5jZSBvZiAnPGVtPkVPYmplY3Q8L2VtPicuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIFRoaXMgaW1wbGVtZW50YXRpb24gcmV0dXJucyBudWxsOw0KKwkgKiByZXR1cm5pbmcgYSBub24tbnVsbCByZXN1bHQgd2lsbCB0ZXJtaW5hdGUgdGhlIHN3aXRjaCwgYnV0IHRoaXMgaXMgdGhlIGxhc3QgY2FzZSBhbnl3YXkuDQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAcGFyYW0gb2JqZWN0IHRoZSB0YXJnZXQgb2YgdGhlIHN3aXRjaC4NCisJICogQHJldHVybiB0aGUgcmVzdWx0IG9mIGludGVycHJldGluZyB0aGUgb2JqZWN0IGFzIGFuIGluc3RhbmNlIG9mICc8ZW0+RU9iamVjdDwvZW0+Jy4NCisJICogQHNlZSAjZG9Td2l0Y2gob3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVPYmplY3QpDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgVCBkZWZhdWx0Q2FzZShFT2JqZWN0IG9iamVjdCkgew0KKwkJcmV0dXJuIG51bGw7DQorCX0NCisNCit9IC8vQ29uc3RyYWludGJsb2Nrc1N3aXRjaA0KZGlmZiAtLWdpdCBhL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L2RlcHJlY2F0ZWRlbGVtZW50cy9BbGxvY2F0ZWQuamF2YSBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L2RlcHJlY2F0ZWRlbGVtZW50cy9BbGxvY2F0ZWQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMmExMjE2Ci0tLSAvZGV2L251bGwKKysrIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvZGVwcmVjYXRlZGVsZW1lbnRzL0FsbG9jYXRlZC5qYXZhCkBAIC0wLDAgKzEsMTQ1IEBACisvKioNCisgKiBDb3B5cmlnaHQgKGMpIDIwMTUgQ0VBIExJU1QuDQorICogDQorICogIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCisgKiAgYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQorICogIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQorICogIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICovDQorcGFja2FnZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGVwcmVjYXRlZGVsZW1lbnRzOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY29tbW9uLnV0aWwuRUxpc3Q7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FQ2xhc3M7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FT2JqZWN0Ow0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS51bWwyLnVtbC5OYW1lZEVsZW1lbnQ7DQorDQorLyoqDQorICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisgKiBBIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBtb2RlbCBvYmplY3QgJzxlbT48Yj5BbGxvY2F0ZWQ8L2I+PC9lbT4nLg0KKyAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKyAqDQorICogPCEtLSBiZWdpbi1tb2RlbC1kb2MgLS0+DQorICogq2FsbG9jYXRlZLsgaXMgYSBzdGVyZW90eXBlIHRoYXQgYXBwbGllcyB0byBhbnkgTmFtZWRFbGVtZW50IHRoYXQgaGFzIGF0IGxlYXN0IG9uZSBhbGxvY2F0aW9uIHJlbGF0aW9uc2hpcCB3aXRoIGFub3RoZXIgTmFtZWRFbGVtZW50LiCrYWxsb2NhdGVkuyBlbGVtZW50cyBtYXkgYmUgZGVzaWduYXRlZCBieSBlaXRoZXIgdGhlIC9mcm9tIG9yIC90byBlbmQgb2YgYW4gq2FsbG9jYXRluyBkZXBlbmRlbmN5LiBUaGUgq2FsbG9jYXRlZLsgc3RlcmVvdHlwZSBwcm92aWRlcyBhIG1lY2hhbmlzbSBmb3IgYSBwYXJ0aWN1bGFyIG1vZGVsIGVsZW1lbnQgdG8gY29udmVuaWVudGx5IHJldGFpbiBhbmQgZGlzcGxheSB0aGUgZWxlbWVudCBhdCB0aGUgb3Bwb3NpdGUgZW5kIG9mIGFueSCrYWxsb2NhdGW7IGRlcGVuZGVuY3kuIFRoaXMgc3RlcmVvdHlwZSBwcm92aWRlcyBmb3IgdGhlIHByb3BlcnRpZXMgk2FsbG9jYXRlZEZyb22UIGFuZCCTYWxsb2NhdGVkVG8slCB3aGljaCBhcmUgZGVyaXZlZCBmcm9tIHRoZSCrYWxsb2NhdGW7IGRlcGVuZGVuY3kuDQorICogPCEtLSBlbmQtbW9kZWwtZG9jIC0tPg0KKyAqDQorICogPHA+DQorICogVGhlIGZvbGxvd2luZyBmZWF0dXJlcyBhcmUgc3VwcG9ydGVkOg0KKyAqIDx1bD4NCisgKiAgIDxsaT57QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRlcHJlY2F0ZWRlbGVtZW50cy5BbGxvY2F0ZWQjZ2V0QmFzZV9OYW1lZEVsZW1lbnQgPGVtPkJhc2UgTmFtZWQgRWxlbWVudDwvZW0+fTwvbGk+DQorICogICA8bGk+e0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kZXByZWNhdGVkZWxlbWVudHMuQWxsb2NhdGVkI2dldEFsbG9jYXRlZEZyb20gPGVtPkFsbG9jYXRlZCBGcm9tPC9lbT59PC9saT4NCisgKiAgIDxsaT57QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRlcHJlY2F0ZWRlbGVtZW50cy5BbGxvY2F0ZWQjZ2V0QWxsb2NhdGVkVG8gPGVtPkFsbG9jYXRlZCBUbzwvZW0+fTwvbGk+DQorICogPC91bD4NCisgKiA8L3A+DQorICoNCisgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kZXByZWNhdGVkZWxlbWVudHMuRGVwcmVjYXRlZGVsZW1lbnRzUGFja2FnZSNnZXRBbGxvY2F0ZWQoKQ0KKyAqIEBtb2RlbA0KKyAqIEBnZW5lcmF0ZWQNCisgKi8NCitwdWJsaWMgaW50ZXJmYWNlIEFsbG9jYXRlZCBleHRlbmRzIEVPYmplY3Qgew0KKwkvKioNCisJICogUmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+PGI+QmFzZSBOYW1lZCBFbGVtZW50PC9iPjwvZW0+JyByZWZlcmVuY2UuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDxwPg0KKwkgKiBJZiB0aGUgbWVhbmluZyBvZiB0aGUgJzxlbT5CYXNlIE5hbWVkIEVsZW1lbnQ8L2VtPicgcmVmZXJlbmNlIGlzbid0IGNsZWFyLA0KKwkgKiB0aGVyZSByZWFsbHkgc2hvdWxkIGJlIG1vcmUgb2YgYSBkZXNjcmlwdGlvbiBoZXJlLi4uDQorCSAqIDwvcD4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEByZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSAnPGVtPkJhc2UgTmFtZWQgRWxlbWVudDwvZW0+JyByZWZlcmVuY2UuDQorCSAqIEBzZWUgI3NldEJhc2VfTmFtZWRFbGVtZW50KE5hbWVkRWxlbWVudCkNCisJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGVwcmVjYXRlZGVsZW1lbnRzLkRlcHJlY2F0ZWRlbGVtZW50c1BhY2thZ2UjZ2V0QWxsb2NhdGVkX0Jhc2VfTmFtZWRFbGVtZW50KCkNCisJICogQG1vZGVsIHJlcXVpcmVkPSJ0cnVlIiBvcmRlcmVkPSJmYWxzZSINCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJTmFtZWRFbGVtZW50IGdldEJhc2VfTmFtZWRFbGVtZW50KCk7DQorDQorCS8qKg0KKwkgKiBTZXRzIHRoZSB2YWx1ZSBvZiB0aGUgJ3tAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGVwcmVjYXRlZGVsZW1lbnRzLkFsbG9jYXRlZCNnZXRCYXNlX05hbWVkRWxlbWVudCA8ZW0+QmFzZSBOYW1lZCBFbGVtZW50PC9lbT59JyByZWZlcmVuY2UuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAcGFyYW0gdmFsdWUgdGhlIG5ldyB2YWx1ZSBvZiB0aGUgJzxlbT5CYXNlIE5hbWVkIEVsZW1lbnQ8L2VtPicgcmVmZXJlbmNlLg0KKwkgKiBAc2VlICNnZXRCYXNlX05hbWVkRWxlbWVudCgpDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXZvaWQgc2V0QmFzZV9OYW1lZEVsZW1lbnQoTmFtZWRFbGVtZW50IHZhbHVlKTsNCisNCisJLyoqDQorCSAqIFJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSAnPGVtPjxiPkFsbG9jYXRlZCBGcm9tPC9iPjwvZW0+JyByZWZlcmVuY2UgbGlzdC4NCisJICogVGhlIGxpc3QgY29udGVudHMgYXJlIG9mIHR5cGUge0BsaW5rIG9yZy5lY2xpcHNlLnVtbDIudW1sLk5hbWVkRWxlbWVudH0uDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGJlZ2luLW1vZGVsLWRvYyAtLT4NCisJICogUmV2ZXJzZSBvZiBhbGxvY2F0ZWRUbzogdGhlIGVsZW1lbnQgdHlwZXMgYW5kIG5hbWVzIG9mIHRoZSBzZXQgb2YgZWxlbWVudHMgdGhhdCBhcmUgY2xpZW50cyAoZnJvbSkgb2YgYW4gq2FsbG9jYXRluyB3aG9zZSBzdXBwbGllciBpcyBleHRlbmRlZCBieSB0aGlzIHN0ZXJlb3R5cGUgKGluc3RhbmNlKS4gVGhlIHNhbWUgY2hhcmFjdGVyaXN0aWNzIGFwcGx5IGFzIHRvIC9hbGxvY2F0ZWRUby4gRWFjaCBhbGxvY2F0ZWRGcm9tIHByb3BlcnR5IHdpbGwgYmUgZXhwcmVzc2VkIGFzIKtlbGVtZW50VHlwZbsgRWxlbWVudE5hbWUuDQorCSAqIDwhLS0gZW5kLW1vZGVsLWRvYyAtLT4NCisJICogQHJldHVybiB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+QWxsb2NhdGVkIEZyb208L2VtPicgcmVmZXJlbmNlIGxpc3QuDQorCSAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRlcHJlY2F0ZWRlbGVtZW50cy5EZXByZWNhdGVkZWxlbWVudHNQYWNrYWdlI2dldEFsbG9jYXRlZF9BbGxvY2F0ZWRGcm9tKCkNCisJICogQG1vZGVsIHJlcXVpcmVkPSJ0cnVlIiB0cmFuc2llbnQ9InRydWUiIHZvbGF0aWxlPSJ0cnVlIiBkZXJpdmVkPSJ0cnVlIiBvcmRlcmVkPSJmYWxzZSINCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJRUxpc3Q8TmFtZWRFbGVtZW50PiBnZXRBbGxvY2F0ZWRGcm9tKCk7DQorDQorCS8qKg0KKwkgKiBSZXRyaWV2ZXMgdGhlIGZpcnN0IHtAbGluayBvcmcuZWNsaXBzZS51bWwyLnVtbC5OYW1lZEVsZW1lbnR9IHdpdGggdGhlIHNwZWNpZmllZCAnPGVtPjxiPk5hbWU8L2I+PC9lbT4nIGZyb20gdGhlICc8ZW0+PGI+QWxsb2NhdGVkIEZyb208L2I+PC9lbT4nIHJlZmVyZW5jZSBsaXN0Lg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHBhcmFtIG5hbWUgVGhlICc8ZW0+PGI+TmFtZTwvYj48L2VtPicgb2YgdGhlIHtAbGluayBvcmcuZWNsaXBzZS51bWwyLnVtbC5OYW1lZEVsZW1lbnR9IHRvIHJldHJpZXZlLCBvciA8Y29kZT5udWxsPC9jb2RlPi4NCisJICogQHJldHVybiBUaGUgZmlyc3Qge0BsaW5rIG9yZy5lY2xpcHNlLnVtbDIudW1sLk5hbWVkRWxlbWVudH0gd2l0aCB0aGUgc3BlY2lmaWVkICc8ZW0+PGI+TmFtZTwvYj48L2VtPicsIG9yIDxjb2RlPm51bGw8L2NvZGU+Lg0KKwkgKiBAc2VlICNnZXRBbGxvY2F0ZWRGcm9tKCkNCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJTmFtZWRFbGVtZW50IGdldEFsbG9jYXRlZEZyb20oU3RyaW5nIG5hbWUpOw0KKw0KKwkvKioNCisJICogUmV0cmlldmVzIHRoZSBmaXJzdCB7QGxpbmsgb3JnLmVjbGlwc2UudW1sMi51bWwuTmFtZWRFbGVtZW50fSB3aXRoIHRoZSBzcGVjaWZpZWQgJzxlbT48Yj5OYW1lPC9iPjwvZW0+JyBmcm9tIHRoZSAnPGVtPjxiPkFsbG9jYXRlZCBGcm9tPC9iPjwvZW0+JyByZWZlcmVuY2UgbGlzdC4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBwYXJhbSBuYW1lIFRoZSAnPGVtPjxiPk5hbWU8L2I+PC9lbT4nIG9mIHRoZSB7QGxpbmsgb3JnLmVjbGlwc2UudW1sMi51bWwuTmFtZWRFbGVtZW50fSB0byByZXRyaWV2ZSwgb3IgPGNvZGU+bnVsbDwvY29kZT4uDQorCSAqIEBwYXJhbSBpZ25vcmVDYXNlIFdoZXRoZXIgdG8gaWdub3JlIGNhc2UgaW4ge0BsaW5rIGphdmEubGFuZy5TdHJpbmd9IGNvbXBhcmlzb25zLg0KKwkgKiBAcGFyYW0gZUNsYXNzIFRoZSBFY29yZSBjbGFzcyBvZiB0aGUge0BsaW5rIG9yZy5lY2xpcHNlLnVtbDIudW1sLk5hbWVkRWxlbWVudH0gdG8gcmV0cmlldmUsIG9yIDxjb2RlPm51bGw8L2NvZGU+Lg0KKwkgKiBAcmV0dXJuIFRoZSBmaXJzdCB7QGxpbmsgb3JnLmVjbGlwc2UudW1sMi51bWwuTmFtZWRFbGVtZW50fSB3aXRoIHRoZSBzcGVjaWZpZWQgJzxlbT48Yj5OYW1lPC9iPjwvZW0+Jywgb3IgPGNvZGU+bnVsbDwvY29kZT4uDQorCSAqIEBzZWUgI2dldEFsbG9jYXRlZEZyb20oKQ0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlOYW1lZEVsZW1lbnQgZ2V0QWxsb2NhdGVkRnJvbShTdHJpbmcgbmFtZSwgYm9vbGVhbiBpZ25vcmVDYXNlLCBFQ2xhc3MgZUNsYXNzKTsNCisNCisJLyoqDQorCSAqIFJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSAnPGVtPjxiPkFsbG9jYXRlZCBUbzwvYj48L2VtPicgcmVmZXJlbmNlIGxpc3QuDQorCSAqIFRoZSBsaXN0IGNvbnRlbnRzIGFyZSBvZiB0eXBlIHtAbGluayBvcmcuZWNsaXBzZS51bWwyLnVtbC5OYW1lZEVsZW1lbnR9Lg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogPCEtLSBiZWdpbi1tb2RlbC1kb2MgLS0+DQorCSAqIFRoZSBlbGVtZW50IHR5cGVzIGFuZCBuYW1lcyBvZiB0aGUgc2V0IG9mIGVsZW1lbnRzIHRoYXQgYXJlIHN1cHBsaWVycyAok3RvlCBlbmQgb2YgdGhlIGNvbmNyZXRlIHN5bnRheCkgb2YgYW4gq2FsbG9jYXRluyB3aG9zZSBjbGllbnQgaXMgZXh0ZW5kZWQgYnkgdGhpcyBzdGVyZW90eXBlIChpbnN0YW5jZSkuIFRoaXMgcHJvcGVydHkgaXMgdGhlIHVuaW9uIG9mIGFsbCBzdXBwbGllcnMgdG8gd2hpY2ggdGhpcyBpbnN0YW5jZSBpcyB0aGUgY2xpZW50LCBpLmUuLCB0aGVyZSBtYXkgYmUgbW9yZSB0aGFuIG9uZSAvYWxsb2NhdGVkVG8gcHJvcGVydHkgcGVyIGFsbG9jYXRlZCBtb2RlbCBlbGVtZW50LiBFYWNoIGFsbG9jYXRlZFRvIHByb3BlcnR5IHdpbGwgYmUgZXhwcmVzc2VkIGFzIKtlbGVtZW50VHlwZbsgRWxlbWVudE5hbWUuDQorCSAqIDwhLS0gZW5kLW1vZGVsLWRvYyAtLT4NCisJICogQHJldHVybiB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+QWxsb2NhdGVkIFRvPC9lbT4nIHJlZmVyZW5jZSBsaXN0Lg0KKwkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kZXByZWNhdGVkZWxlbWVudHMuRGVwcmVjYXRlZGVsZW1lbnRzUGFja2FnZSNnZXRBbGxvY2F0ZWRfQWxsb2NhdGVkVG8oKQ0KKwkgKiBAbW9kZWwgcmVxdWlyZWQ9InRydWUiIHRyYW5zaWVudD0idHJ1ZSIgdm9sYXRpbGU9InRydWUiIGRlcml2ZWQ9InRydWUiIG9yZGVyZWQ9ImZhbHNlIg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlFTGlzdDxOYW1lZEVsZW1lbnQ+IGdldEFsbG9jYXRlZFRvKCk7DQorDQorCS8qKg0KKwkgKiBSZXRyaWV2ZXMgdGhlIGZpcnN0IHtAbGluayBvcmcuZWNsaXBzZS51bWwyLnVtbC5OYW1lZEVsZW1lbnR9IHdpdGggdGhlIHNwZWNpZmllZCAnPGVtPjxiPk5hbWU8L2I+PC9lbT4nIGZyb20gdGhlICc8ZW0+PGI+QWxsb2NhdGVkIFRvPC9iPjwvZW0+JyByZWZlcmVuY2UgbGlzdC4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBwYXJhbSBuYW1lIFRoZSAnPGVtPjxiPk5hbWU8L2I+PC9lbT4nIG9mIHRoZSB7QGxpbmsgb3JnLmVjbGlwc2UudW1sMi51bWwuTmFtZWRFbGVtZW50fSB0byByZXRyaWV2ZSwgb3IgPGNvZGU+bnVsbDwvY29kZT4uDQorCSAqIEByZXR1cm4gVGhlIGZpcnN0IHtAbGluayBvcmcuZWNsaXBzZS51bWwyLnVtbC5OYW1lZEVsZW1lbnR9IHdpdGggdGhlIHNwZWNpZmllZCAnPGVtPjxiPk5hbWU8L2I+PC9lbT4nLCBvciA8Y29kZT5udWxsPC9jb2RlPi4NCisJICogQHNlZSAjZ2V0QWxsb2NhdGVkVG8oKQ0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlOYW1lZEVsZW1lbnQgZ2V0QWxsb2NhdGVkVG8oU3RyaW5nIG5hbWUpOw0KKw0KKwkvKioNCisJICogUmV0cmlldmVzIHRoZSBmaXJzdCB7QGxpbmsgb3JnLmVjbGlwc2UudW1sMi51bWwuTmFtZWRFbGVtZW50fSB3aXRoIHRoZSBzcGVjaWZpZWQgJzxlbT48Yj5OYW1lPC9iPjwvZW0+JyBmcm9tIHRoZSAnPGVtPjxiPkFsbG9jYXRlZCBUbzwvYj48L2VtPicgcmVmZXJlbmNlIGxpc3QuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAcGFyYW0gbmFtZSBUaGUgJzxlbT48Yj5OYW1lPC9iPjwvZW0+JyBvZiB0aGUge0BsaW5rIG9yZy5lY2xpcHNlLnVtbDIudW1sLk5hbWVkRWxlbWVudH0gdG8gcmV0cmlldmUsIG9yIDxjb2RlPm51bGw8L2NvZGU+Lg0KKwkgKiBAcGFyYW0gaWdub3JlQ2FzZSBXaGV0aGVyIHRvIGlnbm9yZSBjYXNlIGluIHtAbGluayBqYXZhLmxhbmcuU3RyaW5nfSBjb21wYXJpc29ucy4NCisJICogQHBhcmFtIGVDbGFzcyBUaGUgRWNvcmUgY2xhc3Mgb2YgdGhlIHtAbGluayBvcmcuZWNsaXBzZS51bWwyLnVtbC5OYW1lZEVsZW1lbnR9IHRvIHJldHJpZXZlLCBvciA8Y29kZT5udWxsPC9jb2RlPi4NCisJICogQHJldHVybiBUaGUgZmlyc3Qge0BsaW5rIG9yZy5lY2xpcHNlLnVtbDIudW1sLk5hbWVkRWxlbWVudH0gd2l0aCB0aGUgc3BlY2lmaWVkICc8ZW0+PGI+TmFtZTwvYj48L2VtPicsIG9yIDxjb2RlPm51bGw8L2NvZGU+Lg0KKwkgKiBAc2VlICNnZXRBbGxvY2F0ZWRUbygpDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCU5hbWVkRWxlbWVudCBnZXRBbGxvY2F0ZWRUbyhTdHJpbmcgbmFtZSwgYm9vbGVhbiBpZ25vcmVDYXNlLCBFQ2xhc3MgZUNsYXNzKTsNCisNCit9IC8vIEFsbG9jYXRlZA0KZGlmZiAtLWdpdCBhL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L2RlcHJlY2F0ZWRlbGVtZW50cy9EZXByZWNhdGVkLmphdmEgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9kZXByZWNhdGVkZWxlbWVudHMvRGVwcmVjYXRlZC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI1NWIzZmIKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9kZXByZWNhdGVkZWxlbWVudHMvRGVwcmVjYXRlZC5qYXZhCkBAIC0wLDAgKzEsMjUyIEBACisvKioNCisgKiBDb3B5cmlnaHQgKGMpIDIwMTUgQ0VBIExJU1QuDQorICogDQorICogIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCisgKiAgYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQorICogIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQorICogIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICovDQorcGFja2FnZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGVwcmVjYXRlZGVsZW1lbnRzOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRU9iamVjdDsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UudW1sMi51bWwuQXNzb2NpYXRpb247DQoraW1wb3J0IG9yZy5lY2xpcHNlLnVtbDIudW1sLkRhdGFUeXBlOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS51bWwyLnVtbC5HZW5lcmFsaXphdGlvbjsNCitpbXBvcnQgb3JnLmVjbGlwc2UudW1sMi51bWwuSW5zdGFuY2VTcGVjaWZpY2F0aW9uOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS51bWwyLnVtbC5Qcm9wZXJ0eTsNCitpbXBvcnQgb3JnLmVjbGlwc2UudW1sMi51bWwuVmFsdWVTcGVjaWZpY2F0aW9uOw0KKw0KKy8qKg0KKyAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorICogQSByZXByZXNlbnRhdGlvbiBvZiB0aGUgbW9kZWwgb2JqZWN0ICc8ZW0+PGI+RGVwcmVjYXRlZDwvYj48L2VtPicuDQorICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorICoNCisgKiA8cD4NCisgKiBUaGUgZm9sbG93aW5nIGZlYXR1cmVzIGFyZSBzdXBwb3J0ZWQ6DQorICogPHVsPg0KKyAqICAgPGxpPntAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGVwcmVjYXRlZGVsZW1lbnRzLkRlcHJlY2F0ZWQjZ2V0QmFzZV9WYWx1ZVNwZWNpZmljYXRpb24gPGVtPkJhc2UgVmFsdWUgU3BlY2lmaWNhdGlvbjwvZW0+fTwvbGk+DQorICogICA8bGk+e0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kZXByZWNhdGVkZWxlbWVudHMuRGVwcmVjYXRlZCNnZXRCYXNlX1Byb3BlcnR5IDxlbT5CYXNlIFByb3BlcnR5PC9lbT59PC9saT4NCisgKiAgIDxsaT57QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRlcHJlY2F0ZWRlbGVtZW50cy5EZXByZWNhdGVkI2dldEJhc2VfSW5zdGFuY2VTcGVjaWZpY2F0aW9uIDxlbT5CYXNlIEluc3RhbmNlIFNwZWNpZmljYXRpb248L2VtPn08L2xpPg0KKyAqICAgPGxpPntAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGVwcmVjYXRlZGVsZW1lbnRzLkRlcHJlY2F0ZWQjZ2V0QmFzZV9DbGFzcyA8ZW0+QmFzZSBDbGFzczwvZW0+fTwvbGk+DQorICogICA8bGk+e0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kZXByZWNhdGVkZWxlbWVudHMuRGVwcmVjYXRlZCNnZXRCYXNlX0Fzc29jaWF0aW9uIDxlbT5CYXNlIEFzc29jaWF0aW9uPC9lbT59PC9saT4NCisgKiAgIDxsaT57QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRlcHJlY2F0ZWRlbGVtZW50cy5EZXByZWNhdGVkI2dldERlcHJlY2F0ZWRSZWFzb24gPGVtPkRlcHJlY2F0ZWQgUmVhc29uPC9lbT59PC9saT4NCisgKiAgIDxsaT57QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRlcHJlY2F0ZWRlbGVtZW50cy5EZXByZWNhdGVkI2dldEJhc2VfR2VuZXJhbGl6YXRpb24gPGVtPkJhc2UgR2VuZXJhbGl6YXRpb248L2VtPn08L2xpPg0KKyAqICAgPGxpPntAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGVwcmVjYXRlZGVsZW1lbnRzLkRlcHJlY2F0ZWQjZ2V0QmFzZV9EYXRhVHlwZSA8ZW0+QmFzZSBEYXRhIFR5cGU8L2VtPn08L2xpPg0KKyAqIDwvdWw+DQorICogPC9wPg0KKyAqDQorICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGVwcmVjYXRlZGVsZW1lbnRzLkRlcHJlY2F0ZWRlbGVtZW50c1BhY2thZ2UjZ2V0RGVwcmVjYXRlZCgpDQorICogQG1vZGVsDQorICogQGdlbmVyYXRlZA0KKyAqLw0KK3B1YmxpYyBpbnRlcmZhY2UgRGVwcmVjYXRlZCBleHRlbmRzIEVPYmplY3Qgew0KKwkvKioNCisJICogUmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+PGI+QmFzZSBWYWx1ZSBTcGVjaWZpY2F0aW9uPC9iPjwvZW0+JyByZWZlcmVuY2UuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDxwPg0KKwkgKiBJZiB0aGUgbWVhbmluZyBvZiB0aGUgJzxlbT5CYXNlIFZhbHVlIFNwZWNpZmljYXRpb248L2VtPicgcmVmZXJlbmNlIGlzbid0IGNsZWFyLA0KKwkgKiB0aGVyZSByZWFsbHkgc2hvdWxkIGJlIG1vcmUgb2YgYSBkZXNjcmlwdGlvbiBoZXJlLi4uDQorCSAqIDwvcD4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEByZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSAnPGVtPkJhc2UgVmFsdWUgU3BlY2lmaWNhdGlvbjwvZW0+JyByZWZlcmVuY2UuDQorCSAqIEBzZWUgI3NldEJhc2VfVmFsdWVTcGVjaWZpY2F0aW9uKFZhbHVlU3BlY2lmaWNhdGlvbikNCisJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGVwcmVjYXRlZGVsZW1lbnRzLkRlcHJlY2F0ZWRlbGVtZW50c1BhY2thZ2UjZ2V0RGVwcmVjYXRlZF9CYXNlX1ZhbHVlU3BlY2lmaWNhdGlvbigpDQorCSAqIEBtb2RlbCByZXF1aXJlZD0idHJ1ZSIgb3JkZXJlZD0iZmFsc2UiDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCVZhbHVlU3BlY2lmaWNhdGlvbiBnZXRCYXNlX1ZhbHVlU3BlY2lmaWNhdGlvbigpOw0KKw0KKwkvKioNCisJICogU2V0cyB0aGUgdmFsdWUgb2YgdGhlICd7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRlcHJlY2F0ZWRlbGVtZW50cy5EZXByZWNhdGVkI2dldEJhc2VfVmFsdWVTcGVjaWZpY2F0aW9uIDxlbT5CYXNlIFZhbHVlIFNwZWNpZmljYXRpb248L2VtPn0nIHJlZmVyZW5jZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBwYXJhbSB2YWx1ZSB0aGUgbmV3IHZhbHVlIG9mIHRoZSAnPGVtPkJhc2UgVmFsdWUgU3BlY2lmaWNhdGlvbjwvZW0+JyByZWZlcmVuY2UuDQorCSAqIEBzZWUgI2dldEJhc2VfVmFsdWVTcGVjaWZpY2F0aW9uKCkNCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJdm9pZCBzZXRCYXNlX1ZhbHVlU3BlY2lmaWNhdGlvbihWYWx1ZVNwZWNpZmljYXRpb24gdmFsdWUpOw0KKw0KKwkvKioNCisJICogUmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+PGI+QmFzZSBQcm9wZXJ0eTwvYj48L2VtPicgcmVmZXJlbmNlLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8cD4NCisJICogSWYgdGhlIG1lYW5pbmcgb2YgdGhlICc8ZW0+QmFzZSBQcm9wZXJ0eTwvZW0+JyByZWZlcmVuY2UgaXNuJ3QgY2xlYXIsDQorCSAqIHRoZXJlIHJlYWxseSBzaG91bGQgYmUgbW9yZSBvZiBhIGRlc2NyaXB0aW9uIGhlcmUuLi4NCisJICogPC9wPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHJldHVybiB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+QmFzZSBQcm9wZXJ0eTwvZW0+JyByZWZlcmVuY2UuDQorCSAqIEBzZWUgI3NldEJhc2VfUHJvcGVydHkoUHJvcGVydHkpDQorCSAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRlcHJlY2F0ZWRlbGVtZW50cy5EZXByZWNhdGVkZWxlbWVudHNQYWNrYWdlI2dldERlcHJlY2F0ZWRfQmFzZV9Qcm9wZXJ0eSgpDQorCSAqIEBtb2RlbCByZXF1aXJlZD0idHJ1ZSIgb3JkZXJlZD0iZmFsc2UiDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCVByb3BlcnR5IGdldEJhc2VfUHJvcGVydHkoKTsNCisNCisJLyoqDQorCSAqIFNldHMgdGhlIHZhbHVlIG9mIHRoZSAne0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kZXByZWNhdGVkZWxlbWVudHMuRGVwcmVjYXRlZCNnZXRCYXNlX1Byb3BlcnR5IDxlbT5CYXNlIFByb3BlcnR5PC9lbT59JyByZWZlcmVuY2UuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAcGFyYW0gdmFsdWUgdGhlIG5ldyB2YWx1ZSBvZiB0aGUgJzxlbT5CYXNlIFByb3BlcnR5PC9lbT4nIHJlZmVyZW5jZS4NCisJICogQHNlZSAjZ2V0QmFzZV9Qcm9wZXJ0eSgpDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXZvaWQgc2V0QmFzZV9Qcm9wZXJ0eShQcm9wZXJ0eSB2YWx1ZSk7DQorDQorCS8qKg0KKwkgKiBSZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT48Yj5CYXNlIEluc3RhbmNlIFNwZWNpZmljYXRpb248L2I+PC9lbT4nIHJlZmVyZW5jZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPHA+DQorCSAqIElmIHRoZSBtZWFuaW5nIG9mIHRoZSAnPGVtPkJhc2UgSW5zdGFuY2UgU3BlY2lmaWNhdGlvbjwvZW0+JyByZWZlcmVuY2UgaXNuJ3QgY2xlYXIsDQorCSAqIHRoZXJlIHJlYWxseSBzaG91bGQgYmUgbW9yZSBvZiBhIGRlc2NyaXB0aW9uIGhlcmUuLi4NCisJICogPC9wPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHJldHVybiB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+QmFzZSBJbnN0YW5jZSBTcGVjaWZpY2F0aW9uPC9lbT4nIHJlZmVyZW5jZS4NCisJICogQHNlZSAjc2V0QmFzZV9JbnN0YW5jZVNwZWNpZmljYXRpb24oSW5zdGFuY2VTcGVjaWZpY2F0aW9uKQ0KKwkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kZXByZWNhdGVkZWxlbWVudHMuRGVwcmVjYXRlZGVsZW1lbnRzUGFja2FnZSNnZXREZXByZWNhdGVkX0Jhc2VfSW5zdGFuY2VTcGVjaWZpY2F0aW9uKCkNCisJICogQG1vZGVsIHJlcXVpcmVkPSJ0cnVlIiBvcmRlcmVkPSJmYWxzZSINCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJSW5zdGFuY2VTcGVjaWZpY2F0aW9uIGdldEJhc2VfSW5zdGFuY2VTcGVjaWZpY2F0aW9uKCk7DQorDQorCS8qKg0KKwkgKiBTZXRzIHRoZSB2YWx1ZSBvZiB0aGUgJ3tAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGVwcmVjYXRlZGVsZW1lbnRzLkRlcHJlY2F0ZWQjZ2V0QmFzZV9JbnN0YW5jZVNwZWNpZmljYXRpb24gPGVtPkJhc2UgSW5zdGFuY2UgU3BlY2lmaWNhdGlvbjwvZW0+fScgcmVmZXJlbmNlLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHBhcmFtIHZhbHVlIHRoZSBuZXcgdmFsdWUgb2YgdGhlICc8ZW0+QmFzZSBJbnN0YW5jZSBTcGVjaWZpY2F0aW9uPC9lbT4nIHJlZmVyZW5jZS4NCisJICogQHNlZSAjZ2V0QmFzZV9JbnN0YW5jZVNwZWNpZmljYXRpb24oKQ0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwl2b2lkIHNldEJhc2VfSW5zdGFuY2VTcGVjaWZpY2F0aW9uKEluc3RhbmNlU3BlY2lmaWNhdGlvbiB2YWx1ZSk7DQorDQorCS8qKg0KKwkgKiBSZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT48Yj5CYXNlIENsYXNzPC9iPjwvZW0+JyByZWZlcmVuY2UuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDxwPg0KKwkgKiBJZiB0aGUgbWVhbmluZyBvZiB0aGUgJzxlbT5CYXNlIENsYXNzPC9lbT4nIHJlZmVyZW5jZSBpc24ndCBjbGVhciwNCisJICogdGhlcmUgcmVhbGx5IHNob3VsZCBiZSBtb3JlIG9mIGEgZGVzY3JpcHRpb24gaGVyZS4uLg0KKwkgKiA8L3A+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAcmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT5CYXNlIENsYXNzPC9lbT4nIHJlZmVyZW5jZS4NCisJICogQHNlZSAjc2V0QmFzZV9DbGFzcyhvcmcuZWNsaXBzZS51bWwyLnVtbC5DbGFzcykNCisJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGVwcmVjYXRlZGVsZW1lbnRzLkRlcHJlY2F0ZWRlbGVtZW50c1BhY2thZ2UjZ2V0RGVwcmVjYXRlZF9CYXNlX0NsYXNzKCkNCisJICogQG1vZGVsIHJlcXVpcmVkPSJ0cnVlIiBvcmRlcmVkPSJmYWxzZSINCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJb3JnLmVjbGlwc2UudW1sMi51bWwuQ2xhc3MgZ2V0QmFzZV9DbGFzcygpOw0KKw0KKwkvKioNCisJICogU2V0cyB0aGUgdmFsdWUgb2YgdGhlICd7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRlcHJlY2F0ZWRlbGVtZW50cy5EZXByZWNhdGVkI2dldEJhc2VfQ2xhc3MgPGVtPkJhc2UgQ2xhc3M8L2VtPn0nIHJlZmVyZW5jZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBwYXJhbSB2YWx1ZSB0aGUgbmV3IHZhbHVlIG9mIHRoZSAnPGVtPkJhc2UgQ2xhc3M8L2VtPicgcmVmZXJlbmNlLg0KKwkgKiBAc2VlICNnZXRCYXNlX0NsYXNzKCkNCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJdm9pZCBzZXRCYXNlX0NsYXNzKG9yZy5lY2xpcHNlLnVtbDIudW1sLkNsYXNzIHZhbHVlKTsNCisNCisJLyoqDQorCSAqIFJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSAnPGVtPjxiPkJhc2UgQXNzb2NpYXRpb248L2I+PC9lbT4nIHJlZmVyZW5jZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPHA+DQorCSAqIElmIHRoZSBtZWFuaW5nIG9mIHRoZSAnPGVtPkJhc2UgQXNzb2NpYXRpb248L2VtPicgcmVmZXJlbmNlIGlzbid0IGNsZWFyLA0KKwkgKiB0aGVyZSByZWFsbHkgc2hvdWxkIGJlIG1vcmUgb2YgYSBkZXNjcmlwdGlvbiBoZXJlLi4uDQorCSAqIDwvcD4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEByZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSAnPGVtPkJhc2UgQXNzb2NpYXRpb248L2VtPicgcmVmZXJlbmNlLg0KKwkgKiBAc2VlICNzZXRCYXNlX0Fzc29jaWF0aW9uKEFzc29jaWF0aW9uKQ0KKwkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kZXByZWNhdGVkZWxlbWVudHMuRGVwcmVjYXRlZGVsZW1lbnRzUGFja2FnZSNnZXREZXByZWNhdGVkX0Jhc2VfQXNzb2NpYXRpb24oKQ0KKwkgKiBAbW9kZWwgcmVxdWlyZWQ9InRydWUiIG9yZGVyZWQ9ImZhbHNlIg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlBc3NvY2lhdGlvbiBnZXRCYXNlX0Fzc29jaWF0aW9uKCk7DQorDQorCS8qKg0KKwkgKiBTZXRzIHRoZSB2YWx1ZSBvZiB0aGUgJ3tAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGVwcmVjYXRlZGVsZW1lbnRzLkRlcHJlY2F0ZWQjZ2V0QmFzZV9Bc3NvY2lhdGlvbiA8ZW0+QmFzZSBBc3NvY2lhdGlvbjwvZW0+fScgcmVmZXJlbmNlLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHBhcmFtIHZhbHVlIHRoZSBuZXcgdmFsdWUgb2YgdGhlICc8ZW0+QmFzZSBBc3NvY2lhdGlvbjwvZW0+JyByZWZlcmVuY2UuDQorCSAqIEBzZWUgI2dldEJhc2VfQXNzb2NpYXRpb24oKQ0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwl2b2lkIHNldEJhc2VfQXNzb2NpYXRpb24oQXNzb2NpYXRpb24gdmFsdWUpOw0KKw0KKwkvKioNCisJICogUmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+PGI+RGVwcmVjYXRlZCBSZWFzb248L2I+PC9lbT4nIGF0dHJpYnV0ZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPHA+DQorCSAqIElmIHRoZSBtZWFuaW5nIG9mIHRoZSAnPGVtPkRlcHJlY2F0ZWQgUmVhc29uPC9lbT4nIGF0dHJpYnV0ZSBpc24ndCBjbGVhciwNCisJICogdGhlcmUgcmVhbGx5IHNob3VsZCBiZSBtb3JlIG9mIGEgZGVzY3JpcHRpb24gaGVyZS4uLg0KKwkgKiA8L3A+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAcmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT5EZXByZWNhdGVkIFJlYXNvbjwvZW0+JyBhdHRyaWJ1dGUuDQorCSAqIEBzZWUgI3NldERlcHJlY2F0ZWRSZWFzb24oU3RyaW5nKQ0KKwkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kZXByZWNhdGVkZWxlbWVudHMuRGVwcmVjYXRlZGVsZW1lbnRzUGFja2FnZSNnZXREZXByZWNhdGVkX0RlcHJlY2F0ZWRSZWFzb24oKQ0KKwkgKiBAbW9kZWwgZGF0YVR5cGU9Im9yZy5lY2xpcHNlLnVtbDIudHlwZXMuU3RyaW5nIiByZXF1aXJlZD0idHJ1ZSIgb3JkZXJlZD0iZmFsc2UiDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCVN0cmluZyBnZXREZXByZWNhdGVkUmVhc29uKCk7DQorDQorCS8qKg0KKwkgKiBTZXRzIHRoZSB2YWx1ZSBvZiB0aGUgJ3tAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGVwcmVjYXRlZGVsZW1lbnRzLkRlcHJlY2F0ZWQjZ2V0RGVwcmVjYXRlZFJlYXNvbiA8ZW0+RGVwcmVjYXRlZCBSZWFzb248L2VtPn0nIGF0dHJpYnV0ZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBwYXJhbSB2YWx1ZSB0aGUgbmV3IHZhbHVlIG9mIHRoZSAnPGVtPkRlcHJlY2F0ZWQgUmVhc29uPC9lbT4nIGF0dHJpYnV0ZS4NCisJICogQHNlZSAjZ2V0RGVwcmVjYXRlZFJlYXNvbigpDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXZvaWQgc2V0RGVwcmVjYXRlZFJlYXNvbihTdHJpbmcgdmFsdWUpOw0KKw0KKwkvKioNCisJICogUmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+PGI+QmFzZSBHZW5lcmFsaXphdGlvbjwvYj48L2VtPicgcmVmZXJlbmNlLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8cD4NCisJICogSWYgdGhlIG1lYW5pbmcgb2YgdGhlICc8ZW0+QmFzZSBHZW5lcmFsaXphdGlvbjwvZW0+JyByZWZlcmVuY2UgaXNuJ3QgY2xlYXIsDQorCSAqIHRoZXJlIHJlYWxseSBzaG91bGQgYmUgbW9yZSBvZiBhIGRlc2NyaXB0aW9uIGhlcmUuLi4NCisJICogPC9wPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHJldHVybiB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+QmFzZSBHZW5lcmFsaXphdGlvbjwvZW0+JyByZWZlcmVuY2UuDQorCSAqIEBzZWUgI3NldEJhc2VfR2VuZXJhbGl6YXRpb24oR2VuZXJhbGl6YXRpb24pDQorCSAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRlcHJlY2F0ZWRlbGVtZW50cy5EZXByZWNhdGVkZWxlbWVudHNQYWNrYWdlI2dldERlcHJlY2F0ZWRfQmFzZV9HZW5lcmFsaXphdGlvbigpDQorCSAqIEBtb2RlbCByZXF1aXJlZD0idHJ1ZSIgb3JkZXJlZD0iZmFsc2UiDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUdlbmVyYWxpemF0aW9uIGdldEJhc2VfR2VuZXJhbGl6YXRpb24oKTsNCisNCisJLyoqDQorCSAqIFNldHMgdGhlIHZhbHVlIG9mIHRoZSAne0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kZXByZWNhdGVkZWxlbWVudHMuRGVwcmVjYXRlZCNnZXRCYXNlX0dlbmVyYWxpemF0aW9uIDxlbT5CYXNlIEdlbmVyYWxpemF0aW9uPC9lbT59JyByZWZlcmVuY2UuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAcGFyYW0gdmFsdWUgdGhlIG5ldyB2YWx1ZSBvZiB0aGUgJzxlbT5CYXNlIEdlbmVyYWxpemF0aW9uPC9lbT4nIHJlZmVyZW5jZS4NCisJICogQHNlZSAjZ2V0QmFzZV9HZW5lcmFsaXphdGlvbigpDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXZvaWQgc2V0QmFzZV9HZW5lcmFsaXphdGlvbihHZW5lcmFsaXphdGlvbiB2YWx1ZSk7DQorDQorCS8qKg0KKwkgKiBSZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT48Yj5CYXNlIERhdGEgVHlwZTwvYj48L2VtPicgcmVmZXJlbmNlLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8cD4NCisJICogSWYgdGhlIG1lYW5pbmcgb2YgdGhlICc8ZW0+QmFzZSBEYXRhIFR5cGU8L2VtPicgcmVmZXJlbmNlIGlzbid0IGNsZWFyLA0KKwkgKiB0aGVyZSByZWFsbHkgc2hvdWxkIGJlIG1vcmUgb2YgYSBkZXNjcmlwdGlvbiBoZXJlLi4uDQorCSAqIDwvcD4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEByZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSAnPGVtPkJhc2UgRGF0YSBUeXBlPC9lbT4nIHJlZmVyZW5jZS4NCisJICogQHNlZSAjc2V0QmFzZV9EYXRhVHlwZShEYXRhVHlwZSkNCisJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGVwcmVjYXRlZGVsZW1lbnRzLkRlcHJlY2F0ZWRlbGVtZW50c1BhY2thZ2UjZ2V0RGVwcmVjYXRlZF9CYXNlX0RhdGFUeXBlKCkNCisJICogQG1vZGVsIHJlcXVpcmVkPSJ0cnVlIiBvcmRlcmVkPSJmYWxzZSINCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJRGF0YVR5cGUgZ2V0QmFzZV9EYXRhVHlwZSgpOw0KKw0KKwkvKioNCisJICogU2V0cyB0aGUgdmFsdWUgb2YgdGhlICd7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRlcHJlY2F0ZWRlbGVtZW50cy5EZXByZWNhdGVkI2dldEJhc2VfRGF0YVR5cGUgPGVtPkJhc2UgRGF0YSBUeXBlPC9lbT59JyByZWZlcmVuY2UuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAcGFyYW0gdmFsdWUgdGhlIG5ldyB2YWx1ZSBvZiB0aGUgJzxlbT5CYXNlIERhdGEgVHlwZTwvZW0+JyByZWZlcmVuY2UuDQorCSAqIEBzZWUgI2dldEJhc2VfRGF0YVR5cGUoKQ0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwl2b2lkIHNldEJhc2VfRGF0YVR5cGUoRGF0YVR5cGUgdmFsdWUpOw0KKw0KK30gLy8gRGVwcmVjYXRlZA0KZGlmZiAtLWdpdCBhL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L2RlcHJlY2F0ZWRlbGVtZW50cy9EZXByZWNhdGVkZWxlbWVudHNGYWN0b3J5LmphdmEgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9kZXByZWNhdGVkZWxlbWVudHMvRGVwcmVjYXRlZGVsZW1lbnRzRmFjdG9yeS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdhMGI4YjAKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9kZXByZWNhdGVkZWxlbWVudHMvRGVwcmVjYXRlZGVsZW1lbnRzRmFjdG9yeS5qYXZhCkBAIC0wLDAgKzEsODQgQEAKKy8qKg0KKyAqIENvcHlyaWdodCAoYykgMjAxNSBDRUEgTElTVC4NCisgKiANCisgKiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KKyAqICBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCisgKiAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCisgKiAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgKi8NCitwYWNrYWdlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kZXByZWNhdGVkZWxlbWVudHM7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FRmFjdG9yeTsNCisNCisvKioNCisgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKyAqIFRoZSA8Yj5GYWN0b3J5PC9iPiBmb3IgdGhlIG1vZGVsLg0KKyAqIEl0IHByb3ZpZGVzIGEgY3JlYXRlIG1ldGhvZCBmb3IgZWFjaCBub24tYWJzdHJhY3QgY2xhc3Mgb2YgdGhlIG1vZGVsLg0KKyAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKyAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRlcHJlY2F0ZWRlbGVtZW50cy5EZXByZWNhdGVkZWxlbWVudHNQYWNrYWdlDQorICogQGdlbmVyYXRlZA0KKyAqLw0KK3B1YmxpYyBpbnRlcmZhY2UgRGVwcmVjYXRlZGVsZW1lbnRzRmFjdG9yeSBleHRlbmRzIEVGYWN0b3J5IHsNCisJLyoqDQorCSAqIFRoZSBzaW5nbGV0b24gaW5zdGFuY2Ugb2YgdGhlIGZhY3RvcnkuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlEZXByZWNhdGVkZWxlbWVudHNGYWN0b3J5IGVJTlNUQU5DRSA9IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kZXByZWNhdGVkZWxlbWVudHMuaW50ZXJuYWwuaW1wbC5EZXByZWNhdGVkZWxlbWVudHNGYWN0b3J5SW1wbC5pbml0KCk7DQorDQorCS8qKg0KKwkgKiBSZXR1cm5zIGEgbmV3IG9iamVjdCBvZiBjbGFzcyAnPGVtPkZsb3cgUG9ydDwvZW0+Jy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEByZXR1cm4gYSBuZXcgb2JqZWN0IG9mIGNsYXNzICc8ZW0+RmxvdyBQb3J0PC9lbT4nLg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlGbG93UG9ydCBjcmVhdGVGbG93UG9ydCgpOw0KKw0KKwkvKioNCisJICogUmV0dXJucyBhIG5ldyBvYmplY3Qgb2YgY2xhc3MgJzxlbT5GbG93IFNwZWNpZmljYXRpb248L2VtPicuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAcmV0dXJuIGEgbmV3IG9iamVjdCBvZiBjbGFzcyAnPGVtPkZsb3cgU3BlY2lmaWNhdGlvbjwvZW0+Jy4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJRmxvd1NwZWNpZmljYXRpb24gY3JlYXRlRmxvd1NwZWNpZmljYXRpb24oKTsNCisNCisJLyoqDQorCSAqIFJldHVybnMgYSBuZXcgb2JqZWN0IG9mIGNsYXNzICc8ZW0+QWxsb2NhdGVkPC9lbT4nLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHJldHVybiBhIG5ldyBvYmplY3Qgb2YgY2xhc3MgJzxlbT5BbGxvY2F0ZWQ8L2VtPicuDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUFsbG9jYXRlZCBjcmVhdGVBbGxvY2F0ZWQoKTsNCisNCisJLyoqDQorCSAqIFJldHVybnMgYSBuZXcgb2JqZWN0IG9mIGNsYXNzICc8ZW0+UmVxdWlyZW1lbnQgUmVsYXRlZDwvZW0+Jy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEByZXR1cm4gYSBuZXcgb2JqZWN0IG9mIGNsYXNzICc8ZW0+UmVxdWlyZW1lbnQgUmVsYXRlZDwvZW0+Jy4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJUmVxdWlyZW1lbnRSZWxhdGVkIGNyZWF0ZVJlcXVpcmVtZW50UmVsYXRlZCgpOw0KKw0KKwkvKioNCisJICogUmV0dXJucyBhIG5ldyBvYmplY3Qgb2YgY2xhc3MgJzxlbT5EZXByZWNhdGVkPC9lbT4nLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHJldHVybiBhIG5ldyBvYmplY3Qgb2YgY2xhc3MgJzxlbT5EZXByZWNhdGVkPC9lbT4nLg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlEZXByZWNhdGVkIGNyZWF0ZURlcHJlY2F0ZWQoKTsNCisNCisJLyoqDQorCSAqIFJldHVybnMgdGhlIHBhY2thZ2Ugc3VwcG9ydGVkIGJ5IHRoaXMgZmFjdG9yeS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEByZXR1cm4gdGhlIHBhY2thZ2Ugc3VwcG9ydGVkIGJ5IHRoaXMgZmFjdG9yeS4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJRGVwcmVjYXRlZGVsZW1lbnRzUGFja2FnZSBnZXREZXByZWNhdGVkZWxlbWVudHNQYWNrYWdlKCk7DQorDQorfSAvL0RlcHJlY2F0ZWRlbGVtZW50c0ZhY3RvcnkNCmRpZmYgLS1naXQgYS9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9kZXByZWNhdGVkZWxlbWVudHMvRGVwcmVjYXRlZGVsZW1lbnRzUGFja2FnZS5qYXZhIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvZGVwcmVjYXRlZGVsZW1lbnRzL0RlcHJlY2F0ZWRlbGVtZW50c1BhY2thZ2UuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNWU4NGViCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvZGVwcmVjYXRlZGVsZW1lbnRzL0RlcHJlY2F0ZWRlbGVtZW50c1BhY2thZ2UuamF2YQpAQCAtMCwwICsxLDg5MiBAQAorLyoqDQorICogQ29weXJpZ2h0IChjKSAyMDE1IENFQSBMSVNULg0KKyAqIA0KKyAqICBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQorICogIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KKyAqICB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KKyAqICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqLw0KK3BhY2thZ2Ugb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRlcHJlY2F0ZWRlbGVtZW50czsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVBdHRyaWJ1dGU7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FQ2xhc3M7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FUGFja2FnZTsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVSZWZlcmVuY2U7DQorDQorLyoqDQorICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisgKiBUaGUgPGI+UGFja2FnZTwvYj4gZm9yIHRoZSBtb2RlbC4NCisgKiBJdCBjb250YWlucyBhY2Nlc3NvcnMgZm9yIHRoZSBtZXRhIG9iamVjdHMgdG8gcmVwcmVzZW50DQorICogPHVsPg0KKyAqICAgPGxpPmVhY2ggY2xhc3MsPC9saT4NCisgKiAgIDxsaT5lYWNoIGZlYXR1cmUgb2YgZWFjaCBjbGFzcyw8L2xpPg0KKyAqICAgPGxpPmVhY2ggb3BlcmF0aW9uIG9mIGVhY2ggY2xhc3MsPC9saT4NCisgKiAgIDxsaT5lYWNoIGVudW0sPC9saT4NCisgKiAgIDxsaT5hbmQgZWFjaCBkYXRhIHR5cGU8L2xpPg0KKyAqIDwvdWw+DQorICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGVwcmVjYXRlZGVsZW1lbnRzLkRlcHJlY2F0ZWRlbGVtZW50c0ZhY3RvcnkNCisgKiBAbW9kZWwga2luZD0icGFja2FnZSINCisgKiAgICAgICAgYW5ub3RhdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy91bWwyLzIuMC4wL1VNTCBvcmlnaW5hbE5hbWU9J0RlcHJlY2F0ZWRFbGVtZW50cyciDQorICogQGdlbmVyYXRlZA0KKyAqLw0KK3B1YmxpYyBpbnRlcmZhY2UgRGVwcmVjYXRlZGVsZW1lbnRzUGFja2FnZSBleHRlbmRzIEVQYWNrYWdlIHsNCisJLyoqDQorCSAqIFRoZSBwYWNrYWdlIG5hbWUuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlTdHJpbmcgZU5BTUUgPSAiZGVwcmVjYXRlZGVsZW1lbnRzIjsgLy8kTk9OLU5MUy0xJA0KKw0KKwkvKioNCisJICogVGhlIHBhY2thZ2UgbmFtZXNwYWNlIFVSSS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCVN0cmluZyBlTlNfVVJJID0gImh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvcGFweXJ1cy8xLjQvU3lzTUwvRGVwcmVjYXRlZEVsZW1lbnRzIjsgLy8kTk9OLU5MUy0xJA0KKw0KKwkvKioNCisJICogVGhlIHBhY2thZ2UgbmFtZXNwYWNlIG5hbWUuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlTdHJpbmcgZU5TX1BSRUZJWCA9ICJEZXByZWNhdGVkRWxlbWVudHMiOyAvLyROT04tTkxTLTEkDQorDQorCS8qKg0KKwkgKiBUaGUgc2luZ2xldG9uIGluc3RhbmNlIG9mIHRoZSBwYWNrYWdlLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJRGVwcmVjYXRlZGVsZW1lbnRzUGFja2FnZSBlSU5TVEFOQ0UgPSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGVwcmVjYXRlZGVsZW1lbnRzLmludGVybmFsLmltcGwuRGVwcmVjYXRlZGVsZW1lbnRzUGFja2FnZUltcGwuaW5pdCgpOw0KKw0KKwkvKioNCisJICogVGhlIG1ldGEgb2JqZWN0IGlkIGZvciB0aGUgJ3tAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGVwcmVjYXRlZGVsZW1lbnRzLmludGVybmFsLmltcGwuRmxvd1BvcnRJbXBsIDxlbT5GbG93IFBvcnQ8L2VtPn0nIGNsYXNzLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGVwcmVjYXRlZGVsZW1lbnRzLmludGVybmFsLmltcGwuRmxvd1BvcnRJbXBsDQorCSAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRlcHJlY2F0ZWRlbGVtZW50cy5pbnRlcm5hbC5pbXBsLkRlcHJlY2F0ZWRlbGVtZW50c1BhY2thZ2VJbXBsI2dldEZsb3dQb3J0KCkNCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJaW50IEZMT1dfUE9SVCA9IDA7DQorDQorCS8qKg0KKwkgKiBUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+QmFzZSBQb3J0PC9iPjwvZW0+JyByZWZlcmVuY2UuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqIEBvcmRlcmVkDQorCSAqLw0KKwlpbnQgRkxPV19QT1JUX19CQVNFX1BPUlQgPSAwOw0KKw0KKwkvKioNCisJICogVGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkRpcmVjdGlvbjwvYj48L2VtPicgYXR0cmlidXRlLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKiBAb3JkZXJlZA0KKwkgKi8NCisJaW50IEZMT1dfUE9SVF9fRElSRUNUSU9OID0gMTsNCisNCisJLyoqDQorCSAqIFRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5JcyBBdG9taWM8L2I+PC9lbT4nIGF0dHJpYnV0ZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICogQG9yZGVyZWQNCisJICovDQorCWludCBGTE9XX1BPUlRfX0lTX0FUT01JQyA9IDI7DQorDQorCS8qKg0KKwkgKiBUaGUgbnVtYmVyIG9mIHN0cnVjdHVyYWwgZmVhdHVyZXMgb2YgdGhlICc8ZW0+RmxvdyBQb3J0PC9lbT4nIGNsYXNzLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKiBAb3JkZXJlZA0KKwkgKi8NCisJaW50IEZMT1dfUE9SVF9GRUFUVVJFX0NPVU5UID0gMzsNCisNCisJLyoqDQorCSAqIFRoZSBudW1iZXIgb2Ygb3BlcmF0aW9ucyBvZiB0aGUgJzxlbT5GbG93IFBvcnQ8L2VtPicgY2xhc3MuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqIEBvcmRlcmVkDQorCSAqLw0KKwlpbnQgRkxPV19QT1JUX09QRVJBVElPTl9DT1VOVCA9IDA7DQorDQorCS8qKg0KKwkgKiBUaGUgbWV0YSBvYmplY3QgaWQgZm9yIHRoZSAne0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kZXByZWNhdGVkZWxlbWVudHMuaW50ZXJuYWwuaW1wbC5GbG93U3BlY2lmaWNhdGlvbkltcGwgPGVtPkZsb3cgU3BlY2lmaWNhdGlvbjwvZW0+fScgY2xhc3MuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kZXByZWNhdGVkZWxlbWVudHMuaW50ZXJuYWwuaW1wbC5GbG93U3BlY2lmaWNhdGlvbkltcGwNCisJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGVwcmVjYXRlZGVsZW1lbnRzLmludGVybmFsLmltcGwuRGVwcmVjYXRlZGVsZW1lbnRzUGFja2FnZUltcGwjZ2V0Rmxvd1NwZWNpZmljYXRpb24oKQ0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlpbnQgRkxPV19TUEVDSUZJQ0FUSU9OID0gMTsNCisNCisJLyoqDQorCSAqIFRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5CYXNlIEludGVyZmFjZTwvYj48L2VtPicgcmVmZXJlbmNlLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKiBAb3JkZXJlZA0KKwkgKi8NCisJaW50IEZMT1dfU1BFQ0lGSUNBVElPTl9fQkFTRV9JTlRFUkZBQ0UgPSAwOw0KKw0KKwkvKioNCisJICogVGhlIG51bWJlciBvZiBzdHJ1Y3R1cmFsIGZlYXR1cmVzIG9mIHRoZSAnPGVtPkZsb3cgU3BlY2lmaWNhdGlvbjwvZW0+JyBjbGFzcy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICogQG9yZGVyZWQNCisJICovDQorCWludCBGTE9XX1NQRUNJRklDQVRJT05fRkVBVFVSRV9DT1VOVCA9IDE7DQorDQorCS8qKg0KKwkgKiBUaGUgbnVtYmVyIG9mIG9wZXJhdGlvbnMgb2YgdGhlICc8ZW0+RmxvdyBTcGVjaWZpY2F0aW9uPC9lbT4nIGNsYXNzLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKiBAb3JkZXJlZA0KKwkgKi8NCisJaW50IEZMT1dfU1BFQ0lGSUNBVElPTl9PUEVSQVRJT05fQ09VTlQgPSAwOw0KKw0KKwkvKioNCisJICogVGhlIG1ldGEgb2JqZWN0IGlkIGZvciB0aGUgJ3tAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGVwcmVjYXRlZGVsZW1lbnRzLmludGVybmFsLmltcGwuQWxsb2NhdGVkSW1wbCA8ZW0+QWxsb2NhdGVkPC9lbT59JyBjbGFzcy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRlcHJlY2F0ZWRlbGVtZW50cy5pbnRlcm5hbC5pbXBsLkFsbG9jYXRlZEltcGwNCisJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGVwcmVjYXRlZGVsZW1lbnRzLmludGVybmFsLmltcGwuRGVwcmVjYXRlZGVsZW1lbnRzUGFja2FnZUltcGwjZ2V0QWxsb2NhdGVkKCkNCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJaW50IEFMTE9DQVRFRCA9IDI7DQorDQorCS8qKg0KKwkgKiBUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+QmFzZSBOYW1lZCBFbGVtZW50PC9iPjwvZW0+JyByZWZlcmVuY2UuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqIEBvcmRlcmVkDQorCSAqLw0KKwlpbnQgQUxMT0NBVEVEX19CQVNFX05BTUVEX0VMRU1FTlQgPSAwOw0KKw0KKwkvKioNCisJICogVGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkFsbG9jYXRlZCBGcm9tPC9iPjwvZW0+JyByZWZlcmVuY2UgbGlzdC4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICogQG9yZGVyZWQNCisJICovDQorCWludCBBTExPQ0FURURfX0FMTE9DQVRFRF9GUk9NID0gMTsNCisNCisJLyoqDQorCSAqIFRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5BbGxvY2F0ZWQgVG88L2I+PC9lbT4nIHJlZmVyZW5jZSBsaXN0Lg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKiBAb3JkZXJlZA0KKwkgKi8NCisJaW50IEFMTE9DQVRFRF9fQUxMT0NBVEVEX1RPID0gMjsNCisNCisJLyoqDQorCSAqIFRoZSBudW1iZXIgb2Ygc3RydWN0dXJhbCBmZWF0dXJlcyBvZiB0aGUgJzxlbT5BbGxvY2F0ZWQ8L2VtPicgY2xhc3MuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqIEBvcmRlcmVkDQorCSAqLw0KKwlpbnQgQUxMT0NBVEVEX0ZFQVRVUkVfQ09VTlQgPSAzOw0KKw0KKwkvKioNCisJICogVGhlIG51bWJlciBvZiBvcGVyYXRpb25zIG9mIHRoZSAnPGVtPkFsbG9jYXRlZDwvZW0+JyBjbGFzcy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICogQG9yZGVyZWQNCisJICovDQorCWludCBBTExPQ0FURURfT1BFUkFUSU9OX0NPVU5UID0gMDsNCisNCisJLyoqDQorCSAqIFRoZSBtZXRhIG9iamVjdCBpZCBmb3IgdGhlICd7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRlcHJlY2F0ZWRlbGVtZW50cy5pbnRlcm5hbC5pbXBsLlJlcXVpcmVtZW50UmVsYXRlZEltcGwgPGVtPlJlcXVpcmVtZW50IFJlbGF0ZWQ8L2VtPn0nIGNsYXNzLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGVwcmVjYXRlZGVsZW1lbnRzLmludGVybmFsLmltcGwuUmVxdWlyZW1lbnRSZWxhdGVkSW1wbA0KKwkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kZXByZWNhdGVkZWxlbWVudHMuaW50ZXJuYWwuaW1wbC5EZXByZWNhdGVkZWxlbWVudHNQYWNrYWdlSW1wbCNnZXRSZXF1aXJlbWVudFJlbGF0ZWQoKQ0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlpbnQgUkVRVUlSRU1FTlRfUkVMQVRFRCA9IDM7DQorDQorCS8qKg0KKwkgKiBUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+QmFzZSBOYW1lZCBFbGVtZW50PC9iPjwvZW0+JyByZWZlcmVuY2UuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqIEBvcmRlcmVkDQorCSAqLw0KKwlpbnQgUkVRVUlSRU1FTlRfUkVMQVRFRF9fQkFTRV9OQU1FRF9FTEVNRU5UID0gMDsNCisNCisJLyoqDQorCSAqIFRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5UcmFjZWQgRnJvbTwvYj48L2VtPicgcmVmZXJlbmNlIGxpc3QuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqIEBvcmRlcmVkDQorCSAqLw0KKwlpbnQgUkVRVUlSRU1FTlRfUkVMQVRFRF9fVFJBQ0VEX0ZST00gPSAxOw0KKw0KKwkvKioNCisJICogVGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPlNhdGlzZmllczwvYj48L2VtPicgcmVmZXJlbmNlIGxpc3QuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqIEBvcmRlcmVkDQorCSAqLw0KKwlpbnQgUkVRVUlSRU1FTlRfUkVMQVRFRF9fU0FUSVNGSUVTID0gMjsNCisNCisJLyoqDQorCSAqIFRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5SZWZpbmVzPC9iPjwvZW0+JyByZWZlcmVuY2UgbGlzdC4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICogQG9yZGVyZWQNCisJICovDQorCWludCBSRVFVSVJFTUVOVF9SRUxBVEVEX19SRUZJTkVTID0gMzsNCisNCisJLyoqDQorCSAqIFRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5WZXJpZmllczwvYj48L2VtPicgcmVmZXJlbmNlIGxpc3QuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqIEBvcmRlcmVkDQorCSAqLw0KKwlpbnQgUkVRVUlSRU1FTlRfUkVMQVRFRF9fVkVSSUZJRVMgPSA0Ow0KKw0KKwkvKioNCisJICogVGhlIG51bWJlciBvZiBzdHJ1Y3R1cmFsIGZlYXR1cmVzIG9mIHRoZSAnPGVtPlJlcXVpcmVtZW50IFJlbGF0ZWQ8L2VtPicgY2xhc3MuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqIEBvcmRlcmVkDQorCSAqLw0KKwlpbnQgUkVRVUlSRU1FTlRfUkVMQVRFRF9GRUFUVVJFX0NPVU5UID0gNTsNCisNCisJLyoqDQorCSAqIFRoZSBudW1iZXIgb2Ygb3BlcmF0aW9ucyBvZiB0aGUgJzxlbT5SZXF1aXJlbWVudCBSZWxhdGVkPC9lbT4nIGNsYXNzLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKiBAb3JkZXJlZA0KKwkgKi8NCisJaW50IFJFUVVJUkVNRU5UX1JFTEFURURfT1BFUkFUSU9OX0NPVU5UID0gMDsNCisNCisJLyoqDQorCSAqIFRoZSBtZXRhIG9iamVjdCBpZCBmb3IgdGhlICd7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRlcHJlY2F0ZWRlbGVtZW50cy5pbnRlcm5hbC5pbXBsLkRlcHJlY2F0ZWRJbXBsIDxlbT5EZXByZWNhdGVkPC9lbT59JyBjbGFzcy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRlcHJlY2F0ZWRlbGVtZW50cy5pbnRlcm5hbC5pbXBsLkRlcHJlY2F0ZWRJbXBsDQorCSAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRlcHJlY2F0ZWRlbGVtZW50cy5pbnRlcm5hbC5pbXBsLkRlcHJlY2F0ZWRlbGVtZW50c1BhY2thZ2VJbXBsI2dldERlcHJlY2F0ZWQoKQ0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlpbnQgREVQUkVDQVRFRCA9IDQ7DQorDQorCS8qKg0KKwkgKiBUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+QmFzZSBWYWx1ZSBTcGVjaWZpY2F0aW9uPC9iPjwvZW0+JyByZWZlcmVuY2UuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqIEBvcmRlcmVkDQorCSAqLw0KKwlpbnQgREVQUkVDQVRFRF9fQkFTRV9WQUxVRV9TUEVDSUZJQ0FUSU9OID0gMDsNCisNCisJLyoqDQorCSAqIFRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5CYXNlIFByb3BlcnR5PC9iPjwvZW0+JyByZWZlcmVuY2UuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqIEBvcmRlcmVkDQorCSAqLw0KKwlpbnQgREVQUkVDQVRFRF9fQkFTRV9QUk9QRVJUWSA9IDE7DQorDQorCS8qKg0KKwkgKiBUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+QmFzZSBJbnN0YW5jZSBTcGVjaWZpY2F0aW9uPC9iPjwvZW0+JyByZWZlcmVuY2UuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqIEBvcmRlcmVkDQorCSAqLw0KKwlpbnQgREVQUkVDQVRFRF9fQkFTRV9JTlNUQU5DRV9TUEVDSUZJQ0FUSU9OID0gMjsNCisNCisJLyoqDQorCSAqIFRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5CYXNlIENsYXNzPC9iPjwvZW0+JyByZWZlcmVuY2UuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqIEBvcmRlcmVkDQorCSAqLw0KKwlpbnQgREVQUkVDQVRFRF9fQkFTRV9DTEFTUyA9IDM7DQorDQorCS8qKg0KKwkgKiBUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+QmFzZSBBc3NvY2lhdGlvbjwvYj48L2VtPicgcmVmZXJlbmNlLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKiBAb3JkZXJlZA0KKwkgKi8NCisJaW50IERFUFJFQ0FURURfX0JBU0VfQVNTT0NJQVRJT04gPSA0Ow0KKw0KKwkvKioNCisJICogVGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkRlcHJlY2F0ZWQgUmVhc29uPC9iPjwvZW0+JyBhdHRyaWJ1dGUuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqIEBvcmRlcmVkDQorCSAqLw0KKwlpbnQgREVQUkVDQVRFRF9fREVQUkVDQVRFRF9SRUFTT04gPSA1Ow0KKw0KKwkvKioNCisJICogVGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkJhc2UgR2VuZXJhbGl6YXRpb248L2I+PC9lbT4nIHJlZmVyZW5jZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICogQG9yZGVyZWQNCisJICovDQorCWludCBERVBSRUNBVEVEX19CQVNFX0dFTkVSQUxJWkFUSU9OID0gNjsNCisNCisJLyoqDQorCSAqIFRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5CYXNlIERhdGEgVHlwZTwvYj48L2VtPicgcmVmZXJlbmNlLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKiBAb3JkZXJlZA0KKwkgKi8NCisJaW50IERFUFJFQ0FURURfX0JBU0VfREFUQV9UWVBFID0gNzsNCisNCisJLyoqDQorCSAqIFRoZSBudW1iZXIgb2Ygc3RydWN0dXJhbCBmZWF0dXJlcyBvZiB0aGUgJzxlbT5EZXByZWNhdGVkPC9lbT4nIGNsYXNzLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKiBAb3JkZXJlZA0KKwkgKi8NCisJaW50IERFUFJFQ0FURURfRkVBVFVSRV9DT1VOVCA9IDg7DQorDQorCS8qKg0KKwkgKiBUaGUgbnVtYmVyIG9mIG9wZXJhdGlvbnMgb2YgdGhlICc8ZW0+RGVwcmVjYXRlZDwvZW0+JyBjbGFzcy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICogQG9yZGVyZWQNCisJICovDQorCWludCBERVBSRUNBVEVEX09QRVJBVElPTl9DT1VOVCA9IDA7DQorDQorDQorCS8qKg0KKwkgKiBSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJ3tAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGVwcmVjYXRlZGVsZW1lbnRzLkZsb3dQb3J0IDxlbT5GbG93IFBvcnQ8L2VtPn0nLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHJldHVybiB0aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICc8ZW0+RmxvdyBQb3J0PC9lbT4nLg0KKwkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kZXByZWNhdGVkZWxlbWVudHMuRmxvd1BvcnQNCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJRUNsYXNzIGdldEZsb3dQb3J0KCk7DQorDQorCS8qKg0KKwkgKiBSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIHJlZmVyZW5jZSAne0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kZXByZWNhdGVkZWxlbWVudHMuRmxvd1BvcnQjZ2V0QmFzZV9Qb3J0IDxlbT5CYXNlIFBvcnQ8L2VtPn0nLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHJldHVybiB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSByZWZlcmVuY2UgJzxlbT5CYXNlIFBvcnQ8L2VtPicuDQorCSAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRlcHJlY2F0ZWRlbGVtZW50cy5GbG93UG9ydCNnZXRCYXNlX1BvcnQoKQ0KKwkgKiBAc2VlICNnZXRGbG93UG9ydCgpDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUVSZWZlcmVuY2UgZ2V0Rmxvd1BvcnRfQmFzZV9Qb3J0KCk7DQorDQorCS8qKg0KKwkgKiBSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGF0dHJpYnV0ZSAne0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kZXByZWNhdGVkZWxlbWVudHMuRmxvd1BvcnQjZ2V0RGlyZWN0aW9uIDxlbT5EaXJlY3Rpb248L2VtPn0nLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHJldHVybiB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSBhdHRyaWJ1dGUgJzxlbT5EaXJlY3Rpb248L2VtPicuDQorCSAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRlcHJlY2F0ZWRlbGVtZW50cy5GbG93UG9ydCNnZXREaXJlY3Rpb24oKQ0KKwkgKiBAc2VlICNnZXRGbG93UG9ydCgpDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUVBdHRyaWJ1dGUgZ2V0Rmxvd1BvcnRfRGlyZWN0aW9uKCk7DQorDQorCS8qKg0KKwkgKiBSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGF0dHJpYnV0ZSAne0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kZXByZWNhdGVkZWxlbWVudHMuRmxvd1BvcnQjaXNBdG9taWMgPGVtPklzIEF0b21pYzwvZW0+fScuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAcmV0dXJuIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGF0dHJpYnV0ZSAnPGVtPklzIEF0b21pYzwvZW0+Jy4NCisJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGVwcmVjYXRlZGVsZW1lbnRzLkZsb3dQb3J0I2lzQXRvbWljKCkNCisJICogQHNlZSAjZ2V0Rmxvd1BvcnQoKQ0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlFQXR0cmlidXRlIGdldEZsb3dQb3J0X0lzQXRvbWljKCk7DQorDQorCS8qKg0KKwkgKiBSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJ3tAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGVwcmVjYXRlZGVsZW1lbnRzLkZsb3dTcGVjaWZpY2F0aW9uIDxlbT5GbG93IFNwZWNpZmljYXRpb248L2VtPn0nLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHJldHVybiB0aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICc8ZW0+RmxvdyBTcGVjaWZpY2F0aW9uPC9lbT4nLg0KKwkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kZXByZWNhdGVkZWxlbWVudHMuRmxvd1NwZWNpZmljYXRpb24NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJRUNsYXNzIGdldEZsb3dTcGVjaWZpY2F0aW9uKCk7DQorDQorCS8qKg0KKwkgKiBSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIHJlZmVyZW5jZSAne0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kZXByZWNhdGVkZWxlbWVudHMuRmxvd1NwZWNpZmljYXRpb24jZ2V0QmFzZV9JbnRlcmZhY2UgPGVtPkJhc2UgSW50ZXJmYWNlPC9lbT59Jy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEByZXR1cm4gdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgcmVmZXJlbmNlICc8ZW0+QmFzZSBJbnRlcmZhY2U8L2VtPicuDQorCSAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRlcHJlY2F0ZWRlbGVtZW50cy5GbG93U3BlY2lmaWNhdGlvbiNnZXRCYXNlX0ludGVyZmFjZSgpDQorCSAqIEBzZWUgI2dldEZsb3dTcGVjaWZpY2F0aW9uKCkNCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJRVJlZmVyZW5jZSBnZXRGbG93U3BlY2lmaWNhdGlvbl9CYXNlX0ludGVyZmFjZSgpOw0KKw0KKwkvKioNCisJICogUmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICd7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRlcHJlY2F0ZWRlbGVtZW50cy5BbGxvY2F0ZWQgPGVtPkFsbG9jYXRlZDwvZW0+fScuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAcmV0dXJuIHRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJzxlbT5BbGxvY2F0ZWQ8L2VtPicuDQorCSAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRlcHJlY2F0ZWRlbGVtZW50cy5BbGxvY2F0ZWQNCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJRUNsYXNzIGdldEFsbG9jYXRlZCgpOw0KKw0KKwkvKioNCisJICogUmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSByZWZlcmVuY2UgJ3tAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGVwcmVjYXRlZGVsZW1lbnRzLkFsbG9jYXRlZCNnZXRCYXNlX05hbWVkRWxlbWVudCA8ZW0+QmFzZSBOYW1lZCBFbGVtZW50PC9lbT59Jy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEByZXR1cm4gdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgcmVmZXJlbmNlICc8ZW0+QmFzZSBOYW1lZCBFbGVtZW50PC9lbT4nLg0KKwkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kZXByZWNhdGVkZWxlbWVudHMuQWxsb2NhdGVkI2dldEJhc2VfTmFtZWRFbGVtZW50KCkNCisJICogQHNlZSAjZ2V0QWxsb2NhdGVkKCkNCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJRVJlZmVyZW5jZSBnZXRBbGxvY2F0ZWRfQmFzZV9OYW1lZEVsZW1lbnQoKTsNCisNCisJLyoqDQorCSAqIFJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgcmVmZXJlbmNlIGxpc3QgJ3tAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGVwcmVjYXRlZGVsZW1lbnRzLkFsbG9jYXRlZCNnZXRBbGxvY2F0ZWRGcm9tIDxlbT5BbGxvY2F0ZWQgRnJvbTwvZW0+fScuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAcmV0dXJuIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIHJlZmVyZW5jZSBsaXN0ICc8ZW0+QWxsb2NhdGVkIEZyb208L2VtPicuDQorCSAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRlcHJlY2F0ZWRlbGVtZW50cy5BbGxvY2F0ZWQjZ2V0QWxsb2NhdGVkRnJvbSgpDQorCSAqIEBzZWUgI2dldEFsbG9jYXRlZCgpDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUVSZWZlcmVuY2UgZ2V0QWxsb2NhdGVkX0FsbG9jYXRlZEZyb20oKTsNCisNCisJLyoqDQorCSAqIFJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgcmVmZXJlbmNlIGxpc3QgJ3tAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGVwcmVjYXRlZGVsZW1lbnRzLkFsbG9jYXRlZCNnZXRBbGxvY2F0ZWRUbyA8ZW0+QWxsb2NhdGVkIFRvPC9lbT59Jy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEByZXR1cm4gdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgcmVmZXJlbmNlIGxpc3QgJzxlbT5BbGxvY2F0ZWQgVG88L2VtPicuDQorCSAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRlcHJlY2F0ZWRlbGVtZW50cy5BbGxvY2F0ZWQjZ2V0QWxsb2NhdGVkVG8oKQ0KKwkgKiBAc2VlICNnZXRBbGxvY2F0ZWQoKQ0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlFUmVmZXJlbmNlIGdldEFsbG9jYXRlZF9BbGxvY2F0ZWRUbygpOw0KKw0KKwkvKioNCisJICogUmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICd7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRlcHJlY2F0ZWRlbGVtZW50cy5SZXF1aXJlbWVudFJlbGF0ZWQgPGVtPlJlcXVpcmVtZW50IFJlbGF0ZWQ8L2VtPn0nLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHJldHVybiB0aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICc8ZW0+UmVxdWlyZW1lbnQgUmVsYXRlZDwvZW0+Jy4NCisJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGVwcmVjYXRlZGVsZW1lbnRzLlJlcXVpcmVtZW50UmVsYXRlZA0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlFQ2xhc3MgZ2V0UmVxdWlyZW1lbnRSZWxhdGVkKCk7DQorDQorCS8qKg0KKwkgKiBSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIHJlZmVyZW5jZSAne0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kZXByZWNhdGVkZWxlbWVudHMuUmVxdWlyZW1lbnRSZWxhdGVkI2dldEJhc2VfTmFtZWRFbGVtZW50IDxlbT5CYXNlIE5hbWVkIEVsZW1lbnQ8L2VtPn0nLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHJldHVybiB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSByZWZlcmVuY2UgJzxlbT5CYXNlIE5hbWVkIEVsZW1lbnQ8L2VtPicuDQorCSAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRlcHJlY2F0ZWRlbGVtZW50cy5SZXF1aXJlbWVudFJlbGF0ZWQjZ2V0QmFzZV9OYW1lZEVsZW1lbnQoKQ0KKwkgKiBAc2VlICNnZXRSZXF1aXJlbWVudFJlbGF0ZWQoKQ0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlFUmVmZXJlbmNlIGdldFJlcXVpcmVtZW50UmVsYXRlZF9CYXNlX05hbWVkRWxlbWVudCgpOw0KKw0KKwkvKioNCisJICogUmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSByZWZlcmVuY2UgbGlzdCAne0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kZXByZWNhdGVkZWxlbWVudHMuUmVxdWlyZW1lbnRSZWxhdGVkI2dldFRyYWNlZEZyb20gPGVtPlRyYWNlZCBGcm9tPC9lbT59Jy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEByZXR1cm4gdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgcmVmZXJlbmNlIGxpc3QgJzxlbT5UcmFjZWQgRnJvbTwvZW0+Jy4NCisJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGVwcmVjYXRlZGVsZW1lbnRzLlJlcXVpcmVtZW50UmVsYXRlZCNnZXRUcmFjZWRGcm9tKCkNCisJICogQHNlZSAjZ2V0UmVxdWlyZW1lbnRSZWxhdGVkKCkNCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJRVJlZmVyZW5jZSBnZXRSZXF1aXJlbWVudFJlbGF0ZWRfVHJhY2VkRnJvbSgpOw0KKw0KKwkvKioNCisJICogUmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSByZWZlcmVuY2UgbGlzdCAne0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kZXByZWNhdGVkZWxlbWVudHMuUmVxdWlyZW1lbnRSZWxhdGVkI2dldFNhdGlzZmllcyA8ZW0+U2F0aXNmaWVzPC9lbT59Jy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEByZXR1cm4gdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgcmVmZXJlbmNlIGxpc3QgJzxlbT5TYXRpc2ZpZXM8L2VtPicuDQorCSAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRlcHJlY2F0ZWRlbGVtZW50cy5SZXF1aXJlbWVudFJlbGF0ZWQjZ2V0U2F0aXNmaWVzKCkNCisJICogQHNlZSAjZ2V0UmVxdWlyZW1lbnRSZWxhdGVkKCkNCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJRVJlZmVyZW5jZSBnZXRSZXF1aXJlbWVudFJlbGF0ZWRfU2F0aXNmaWVzKCk7DQorDQorCS8qKg0KKwkgKiBSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIHJlZmVyZW5jZSBsaXN0ICd7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRlcHJlY2F0ZWRlbGVtZW50cy5SZXF1aXJlbWVudFJlbGF0ZWQjZ2V0UmVmaW5lcyA8ZW0+UmVmaW5lczwvZW0+fScuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAcmV0dXJuIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIHJlZmVyZW5jZSBsaXN0ICc8ZW0+UmVmaW5lczwvZW0+Jy4NCisJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGVwcmVjYXRlZGVsZW1lbnRzLlJlcXVpcmVtZW50UmVsYXRlZCNnZXRSZWZpbmVzKCkNCisJICogQHNlZSAjZ2V0UmVxdWlyZW1lbnRSZWxhdGVkKCkNCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJRVJlZmVyZW5jZSBnZXRSZXF1aXJlbWVudFJlbGF0ZWRfUmVmaW5lcygpOw0KKw0KKwkvKioNCisJICogUmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSByZWZlcmVuY2UgbGlzdCAne0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kZXByZWNhdGVkZWxlbWVudHMuUmVxdWlyZW1lbnRSZWxhdGVkI2dldFZlcmlmaWVzIDxlbT5WZXJpZmllczwvZW0+fScuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAcmV0dXJuIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIHJlZmVyZW5jZSBsaXN0ICc8ZW0+VmVyaWZpZXM8L2VtPicuDQorCSAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRlcHJlY2F0ZWRlbGVtZW50cy5SZXF1aXJlbWVudFJlbGF0ZWQjZ2V0VmVyaWZpZXMoKQ0KKwkgKiBAc2VlICNnZXRSZXF1aXJlbWVudFJlbGF0ZWQoKQ0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlFUmVmZXJlbmNlIGdldFJlcXVpcmVtZW50UmVsYXRlZF9WZXJpZmllcygpOw0KKw0KKwkvKioNCisJICogUmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICd7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRlcHJlY2F0ZWRlbGVtZW50cy5EZXByZWNhdGVkIDxlbT5EZXByZWNhdGVkPC9lbT59Jy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEByZXR1cm4gdGhlIG1ldGEgb2JqZWN0IGZvciBjbGFzcyAnPGVtPkRlcHJlY2F0ZWQ8L2VtPicuDQorCSAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRlcHJlY2F0ZWRlbGVtZW50cy5EZXByZWNhdGVkDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUVDbGFzcyBnZXREZXByZWNhdGVkKCk7DQorDQorCS8qKg0KKwkgKiBSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIHJlZmVyZW5jZSAne0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kZXByZWNhdGVkZWxlbWVudHMuRGVwcmVjYXRlZCNnZXRCYXNlX1ZhbHVlU3BlY2lmaWNhdGlvbiA8ZW0+QmFzZSBWYWx1ZSBTcGVjaWZpY2F0aW9uPC9lbT59Jy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEByZXR1cm4gdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgcmVmZXJlbmNlICc8ZW0+QmFzZSBWYWx1ZSBTcGVjaWZpY2F0aW9uPC9lbT4nLg0KKwkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kZXByZWNhdGVkZWxlbWVudHMuRGVwcmVjYXRlZCNnZXRCYXNlX1ZhbHVlU3BlY2lmaWNhdGlvbigpDQorCSAqIEBzZWUgI2dldERlcHJlY2F0ZWQoKQ0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlFUmVmZXJlbmNlIGdldERlcHJlY2F0ZWRfQmFzZV9WYWx1ZVNwZWNpZmljYXRpb24oKTsNCisNCisJLyoqDQorCSAqIFJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgcmVmZXJlbmNlICd7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRlcHJlY2F0ZWRlbGVtZW50cy5EZXByZWNhdGVkI2dldEJhc2VfUHJvcGVydHkgPGVtPkJhc2UgUHJvcGVydHk8L2VtPn0nLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHJldHVybiB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSByZWZlcmVuY2UgJzxlbT5CYXNlIFByb3BlcnR5PC9lbT4nLg0KKwkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kZXByZWNhdGVkZWxlbWVudHMuRGVwcmVjYXRlZCNnZXRCYXNlX1Byb3BlcnR5KCkNCisJICogQHNlZSAjZ2V0RGVwcmVjYXRlZCgpDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUVSZWZlcmVuY2UgZ2V0RGVwcmVjYXRlZF9CYXNlX1Byb3BlcnR5KCk7DQorDQorCS8qKg0KKwkgKiBSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIHJlZmVyZW5jZSAne0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kZXByZWNhdGVkZWxlbWVudHMuRGVwcmVjYXRlZCNnZXRCYXNlX0luc3RhbmNlU3BlY2lmaWNhdGlvbiA8ZW0+QmFzZSBJbnN0YW5jZSBTcGVjaWZpY2F0aW9uPC9lbT59Jy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEByZXR1cm4gdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgcmVmZXJlbmNlICc8ZW0+QmFzZSBJbnN0YW5jZSBTcGVjaWZpY2F0aW9uPC9lbT4nLg0KKwkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kZXByZWNhdGVkZWxlbWVudHMuRGVwcmVjYXRlZCNnZXRCYXNlX0luc3RhbmNlU3BlY2lmaWNhdGlvbigpDQorCSAqIEBzZWUgI2dldERlcHJlY2F0ZWQoKQ0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlFUmVmZXJlbmNlIGdldERlcHJlY2F0ZWRfQmFzZV9JbnN0YW5jZVNwZWNpZmljYXRpb24oKTsNCisNCisJLyoqDQorCSAqIFJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgcmVmZXJlbmNlICd7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRlcHJlY2F0ZWRlbGVtZW50cy5EZXByZWNhdGVkI2dldEJhc2VfQ2xhc3MgPGVtPkJhc2UgQ2xhc3M8L2VtPn0nLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHJldHVybiB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSByZWZlcmVuY2UgJzxlbT5CYXNlIENsYXNzPC9lbT4nLg0KKwkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kZXByZWNhdGVkZWxlbWVudHMuRGVwcmVjYXRlZCNnZXRCYXNlX0NsYXNzKCkNCisJICogQHNlZSAjZ2V0RGVwcmVjYXRlZCgpDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUVSZWZlcmVuY2UgZ2V0RGVwcmVjYXRlZF9CYXNlX0NsYXNzKCk7DQorDQorCS8qKg0KKwkgKiBSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIHJlZmVyZW5jZSAne0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kZXByZWNhdGVkZWxlbWVudHMuRGVwcmVjYXRlZCNnZXRCYXNlX0Fzc29jaWF0aW9uIDxlbT5CYXNlIEFzc29jaWF0aW9uPC9lbT59Jy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEByZXR1cm4gdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgcmVmZXJlbmNlICc8ZW0+QmFzZSBBc3NvY2lhdGlvbjwvZW0+Jy4NCisJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGVwcmVjYXRlZGVsZW1lbnRzLkRlcHJlY2F0ZWQjZ2V0QmFzZV9Bc3NvY2lhdGlvbigpDQorCSAqIEBzZWUgI2dldERlcHJlY2F0ZWQoKQ0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlFUmVmZXJlbmNlIGdldERlcHJlY2F0ZWRfQmFzZV9Bc3NvY2lhdGlvbigpOw0KKw0KKwkvKioNCisJICogUmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSBhdHRyaWJ1dGUgJ3tAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGVwcmVjYXRlZGVsZW1lbnRzLkRlcHJlY2F0ZWQjZ2V0RGVwcmVjYXRlZFJlYXNvbiA8ZW0+RGVwcmVjYXRlZCBSZWFzb248L2VtPn0nLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHJldHVybiB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSBhdHRyaWJ1dGUgJzxlbT5EZXByZWNhdGVkIFJlYXNvbjwvZW0+Jy4NCisJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGVwcmVjYXRlZGVsZW1lbnRzLkRlcHJlY2F0ZWQjZ2V0RGVwcmVjYXRlZFJlYXNvbigpDQorCSAqIEBzZWUgI2dldERlcHJlY2F0ZWQoKQ0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlFQXR0cmlidXRlIGdldERlcHJlY2F0ZWRfRGVwcmVjYXRlZFJlYXNvbigpOw0KKw0KKwkvKioNCisJICogUmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSByZWZlcmVuY2UgJ3tAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGVwcmVjYXRlZGVsZW1lbnRzLkRlcHJlY2F0ZWQjZ2V0QmFzZV9HZW5lcmFsaXphdGlvbiA8ZW0+QmFzZSBHZW5lcmFsaXphdGlvbjwvZW0+fScuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAcmV0dXJuIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIHJlZmVyZW5jZSAnPGVtPkJhc2UgR2VuZXJhbGl6YXRpb248L2VtPicuDQorCSAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRlcHJlY2F0ZWRlbGVtZW50cy5EZXByZWNhdGVkI2dldEJhc2VfR2VuZXJhbGl6YXRpb24oKQ0KKwkgKiBAc2VlICNnZXREZXByZWNhdGVkKCkNCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJRVJlZmVyZW5jZSBnZXREZXByZWNhdGVkX0Jhc2VfR2VuZXJhbGl6YXRpb24oKTsNCisNCisJLyoqDQorCSAqIFJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgcmVmZXJlbmNlICd7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRlcHJlY2F0ZWRlbGVtZW50cy5EZXByZWNhdGVkI2dldEJhc2VfRGF0YVR5cGUgPGVtPkJhc2UgRGF0YSBUeXBlPC9lbT59Jy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEByZXR1cm4gdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgcmVmZXJlbmNlICc8ZW0+QmFzZSBEYXRhIFR5cGU8L2VtPicuDQorCSAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRlcHJlY2F0ZWRlbGVtZW50cy5EZXByZWNhdGVkI2dldEJhc2VfRGF0YVR5cGUoKQ0KKwkgKiBAc2VlICNnZXREZXByZWNhdGVkKCkNCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJRVJlZmVyZW5jZSBnZXREZXByZWNhdGVkX0Jhc2VfRGF0YVR5cGUoKTsNCisNCisJLyoqDQorCSAqIFJldHVybnMgdGhlIGZhY3RvcnkgdGhhdCBjcmVhdGVzIHRoZSBpbnN0YW5jZXMgb2YgdGhlIG1vZGVsLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHJldHVybiB0aGUgZmFjdG9yeSB0aGF0IGNyZWF0ZXMgdGhlIGluc3RhbmNlcyBvZiB0aGUgbW9kZWwuDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCURlcHJlY2F0ZWRlbGVtZW50c0ZhY3RvcnkgZ2V0RGVwcmVjYXRlZGVsZW1lbnRzRmFjdG9yeSgpOw0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogRGVmaW5lcyBsaXRlcmFscyBmb3IgdGhlIG1ldGEgb2JqZWN0cyB0aGF0IHJlcHJlc2VudA0KKwkgKiA8dWw+DQorCSAqICAgPGxpPmVhY2ggY2xhc3MsPC9saT4NCisJICogICA8bGk+ZWFjaCBmZWF0dXJlIG9mIGVhY2ggY2xhc3MsPC9saT4NCisJICogICA8bGk+ZWFjaCBvcGVyYXRpb24gb2YgZWFjaCBjbGFzcyw8L2xpPg0KKwkgKiAgIDxsaT5lYWNoIGVudW0sPC9saT4NCisJICogICA8bGk+YW5kIGVhY2ggZGF0YSB0eXBlPC9saT4NCisJICogPC91bD4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCWludGVyZmFjZSBMaXRlcmFscyB7DQorCQkvKioNCisJCSAqIFRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJ3tAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGVwcmVjYXRlZGVsZW1lbnRzLmludGVybmFsLmltcGwuRmxvd1BvcnRJbXBsIDxlbT5GbG93IFBvcnQ8L2VtPn0nIGNsYXNzLg0KKwkJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGVwcmVjYXRlZGVsZW1lbnRzLmludGVybmFsLmltcGwuRmxvd1BvcnRJbXBsDQorCQkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kZXByZWNhdGVkZWxlbWVudHMuaW50ZXJuYWwuaW1wbC5EZXByZWNhdGVkZWxlbWVudHNQYWNrYWdlSW1wbCNnZXRGbG93UG9ydCgpDQorCQkgKiBAZ2VuZXJhdGVkDQorCQkgKi8NCisJCUVDbGFzcyBGTE9XX1BPUlQgPSBlSU5TVEFOQ0UuZ2V0Rmxvd1BvcnQoKTsNCisNCisJCS8qKg0KKwkJICogVGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPGVtPjxiPkJhc2UgUG9ydDwvYj48L2VtPicgcmVmZXJlbmNlIGZlYXR1cmUuDQorCQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCQkgKiBAZ2VuZXJhdGVkDQorCQkgKi8NCisJCUVSZWZlcmVuY2UgRkxPV19QT1JUX19CQVNFX1BPUlQgPSBlSU5TVEFOQ0UuZ2V0Rmxvd1BvcnRfQmFzZV9Qb3J0KCk7DQorDQorCQkvKioNCisJCSAqIFRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxlbT48Yj5EaXJlY3Rpb248L2I+PC9lbT4nIGF0dHJpYnV0ZSBmZWF0dXJlLg0KKwkJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkJICogQGdlbmVyYXRlZA0KKwkJICovDQorCQlFQXR0cmlidXRlIEZMT1dfUE9SVF9fRElSRUNUSU9OID0gZUlOU1RBTkNFLmdldEZsb3dQb3J0X0RpcmVjdGlvbigpOw0KKw0KKwkJLyoqDQorCQkgKiBUaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8ZW0+PGI+SXMgQXRvbWljPC9iPjwvZW0+JyBhdHRyaWJ1dGUgZmVhdHVyZS4NCisJCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJCSAqIEBnZW5lcmF0ZWQNCisJCSAqLw0KKwkJRUF0dHJpYnV0ZSBGTE9XX1BPUlRfX0lTX0FUT01JQyA9IGVJTlNUQU5DRS5nZXRGbG93UG9ydF9Jc0F0b21pYygpOw0KKw0KKwkJLyoqDQorCQkgKiBUaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICd7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRlcHJlY2F0ZWRlbGVtZW50cy5pbnRlcm5hbC5pbXBsLkZsb3dTcGVjaWZpY2F0aW9uSW1wbCA8ZW0+RmxvdyBTcGVjaWZpY2F0aW9uPC9lbT59JyBjbGFzcy4NCisJCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJCSAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRlcHJlY2F0ZWRlbGVtZW50cy5pbnRlcm5hbC5pbXBsLkZsb3dTcGVjaWZpY2F0aW9uSW1wbA0KKwkJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGVwcmVjYXRlZGVsZW1lbnRzLmludGVybmFsLmltcGwuRGVwcmVjYXRlZGVsZW1lbnRzUGFja2FnZUltcGwjZ2V0Rmxvd1NwZWNpZmljYXRpb24oKQ0KKwkJICogQGdlbmVyYXRlZA0KKwkJICovDQorCQlFQ2xhc3MgRkxPV19TUEVDSUZJQ0FUSU9OID0gZUlOU1RBTkNFLmdldEZsb3dTcGVjaWZpY2F0aW9uKCk7DQorDQorCQkvKioNCisJCSAqIFRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxlbT48Yj5CYXNlIEludGVyZmFjZTwvYj48L2VtPicgcmVmZXJlbmNlIGZlYXR1cmUuDQorCQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCQkgKiBAZ2VuZXJhdGVkDQorCQkgKi8NCisJCUVSZWZlcmVuY2UgRkxPV19TUEVDSUZJQ0FUSU9OX19CQVNFX0lOVEVSRkFDRSA9IGVJTlNUQU5DRS5nZXRGbG93U3BlY2lmaWNhdGlvbl9CYXNlX0ludGVyZmFjZSgpOw0KKw0KKwkJLyoqDQorCQkgKiBUaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICd7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRlcHJlY2F0ZWRlbGVtZW50cy5pbnRlcm5hbC5pbXBsLkFsbG9jYXRlZEltcGwgPGVtPkFsbG9jYXRlZDwvZW0+fScgY2xhc3MuDQorCQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCQkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kZXByZWNhdGVkZWxlbWVudHMuaW50ZXJuYWwuaW1wbC5BbGxvY2F0ZWRJbXBsDQorCQkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kZXByZWNhdGVkZWxlbWVudHMuaW50ZXJuYWwuaW1wbC5EZXByZWNhdGVkZWxlbWVudHNQYWNrYWdlSW1wbCNnZXRBbGxvY2F0ZWQoKQ0KKwkJICogQGdlbmVyYXRlZA0KKwkJICovDQorCQlFQ2xhc3MgQUxMT0NBVEVEID0gZUlOU1RBTkNFLmdldEFsbG9jYXRlZCgpOw0KKw0KKwkJLyoqDQorCQkgKiBUaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8ZW0+PGI+QmFzZSBOYW1lZCBFbGVtZW50PC9iPjwvZW0+JyByZWZlcmVuY2UgZmVhdHVyZS4NCisJCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJCSAqIEBnZW5lcmF0ZWQNCisJCSAqLw0KKwkJRVJlZmVyZW5jZSBBTExPQ0FURURfX0JBU0VfTkFNRURfRUxFTUVOVCA9IGVJTlNUQU5DRS5nZXRBbGxvY2F0ZWRfQmFzZV9OYW1lZEVsZW1lbnQoKTsNCisNCisJCS8qKg0KKwkJICogVGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPGVtPjxiPkFsbG9jYXRlZCBGcm9tPC9iPjwvZW0+JyByZWZlcmVuY2UgbGlzdCBmZWF0dXJlLg0KKwkJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkJICogQGdlbmVyYXRlZA0KKwkJICovDQorCQlFUmVmZXJlbmNlIEFMTE9DQVRFRF9fQUxMT0NBVEVEX0ZST00gPSBlSU5TVEFOQ0UuZ2V0QWxsb2NhdGVkX0FsbG9jYXRlZEZyb20oKTsNCisNCisJCS8qKg0KKwkJICogVGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPGVtPjxiPkFsbG9jYXRlZCBUbzwvYj48L2VtPicgcmVmZXJlbmNlIGxpc3QgZmVhdHVyZS4NCisJCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJCSAqIEBnZW5lcmF0ZWQNCisJCSAqLw0KKwkJRVJlZmVyZW5jZSBBTExPQ0FURURfX0FMTE9DQVRFRF9UTyA9IGVJTlNUQU5DRS5nZXRBbGxvY2F0ZWRfQWxsb2NhdGVkVG8oKTsNCisNCisJCS8qKg0KKwkJICogVGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAne0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kZXByZWNhdGVkZWxlbWVudHMuaW50ZXJuYWwuaW1wbC5SZXF1aXJlbWVudFJlbGF0ZWRJbXBsIDxlbT5SZXF1aXJlbWVudCBSZWxhdGVkPC9lbT59JyBjbGFzcy4NCisJCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJCSAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRlcHJlY2F0ZWRlbGVtZW50cy5pbnRlcm5hbC5pbXBsLlJlcXVpcmVtZW50UmVsYXRlZEltcGwNCisJCSAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRlcHJlY2F0ZWRlbGVtZW50cy5pbnRlcm5hbC5pbXBsLkRlcHJlY2F0ZWRlbGVtZW50c1BhY2thZ2VJbXBsI2dldFJlcXVpcmVtZW50UmVsYXRlZCgpDQorCQkgKiBAZ2VuZXJhdGVkDQorCQkgKi8NCisJCUVDbGFzcyBSRVFVSVJFTUVOVF9SRUxBVEVEID0gZUlOU1RBTkNFLmdldFJlcXVpcmVtZW50UmVsYXRlZCgpOw0KKw0KKwkJLyoqDQorCQkgKiBUaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8ZW0+PGI+QmFzZSBOYW1lZCBFbGVtZW50PC9iPjwvZW0+JyByZWZlcmVuY2UgZmVhdHVyZS4NCisJCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJCSAqIEBnZW5lcmF0ZWQNCisJCSAqLw0KKwkJRVJlZmVyZW5jZSBSRVFVSVJFTUVOVF9SRUxBVEVEX19CQVNFX05BTUVEX0VMRU1FTlQgPSBlSU5TVEFOQ0UuZ2V0UmVxdWlyZW1lbnRSZWxhdGVkX0Jhc2VfTmFtZWRFbGVtZW50KCk7DQorDQorCQkvKioNCisJCSAqIFRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxlbT48Yj5UcmFjZWQgRnJvbTwvYj48L2VtPicgcmVmZXJlbmNlIGxpc3QgZmVhdHVyZS4NCisJCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJCSAqIEBnZW5lcmF0ZWQNCisJCSAqLw0KKwkJRVJlZmVyZW5jZSBSRVFVSVJFTUVOVF9SRUxBVEVEX19UUkFDRURfRlJPTSA9IGVJTlNUQU5DRS5nZXRSZXF1aXJlbWVudFJlbGF0ZWRfVHJhY2VkRnJvbSgpOw0KKw0KKwkJLyoqDQorCQkgKiBUaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8ZW0+PGI+U2F0aXNmaWVzPC9iPjwvZW0+JyByZWZlcmVuY2UgbGlzdCBmZWF0dXJlLg0KKwkJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkJICogQGdlbmVyYXRlZA0KKwkJICovDQorCQlFUmVmZXJlbmNlIFJFUVVJUkVNRU5UX1JFTEFURURfX1NBVElTRklFUyA9IGVJTlNUQU5DRS5nZXRSZXF1aXJlbWVudFJlbGF0ZWRfU2F0aXNmaWVzKCk7DQorDQorCQkvKioNCisJCSAqIFRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxlbT48Yj5SZWZpbmVzPC9iPjwvZW0+JyByZWZlcmVuY2UgbGlzdCBmZWF0dXJlLg0KKwkJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkJICogQGdlbmVyYXRlZA0KKwkJICovDQorCQlFUmVmZXJlbmNlIFJFUVVJUkVNRU5UX1JFTEFURURfX1JFRklORVMgPSBlSU5TVEFOQ0UuZ2V0UmVxdWlyZW1lbnRSZWxhdGVkX1JlZmluZXMoKTsNCisNCisJCS8qKg0KKwkJICogVGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPGVtPjxiPlZlcmlmaWVzPC9iPjwvZW0+JyByZWZlcmVuY2UgbGlzdCBmZWF0dXJlLg0KKwkJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkJICogQGdlbmVyYXRlZA0KKwkJICovDQorCQlFUmVmZXJlbmNlIFJFUVVJUkVNRU5UX1JFTEFURURfX1ZFUklGSUVTID0gZUlOU1RBTkNFLmdldFJlcXVpcmVtZW50UmVsYXRlZF9WZXJpZmllcygpOw0KKw0KKwkJLyoqDQorCQkgKiBUaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICd7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRlcHJlY2F0ZWRlbGVtZW50cy5pbnRlcm5hbC5pbXBsLkRlcHJlY2F0ZWRJbXBsIDxlbT5EZXByZWNhdGVkPC9lbT59JyBjbGFzcy4NCisJCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJCSAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRlcHJlY2F0ZWRlbGVtZW50cy5pbnRlcm5hbC5pbXBsLkRlcHJlY2F0ZWRJbXBsDQorCQkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kZXByZWNhdGVkZWxlbWVudHMuaW50ZXJuYWwuaW1wbC5EZXByZWNhdGVkZWxlbWVudHNQYWNrYWdlSW1wbCNnZXREZXByZWNhdGVkKCkNCisJCSAqIEBnZW5lcmF0ZWQNCisJCSAqLw0KKwkJRUNsYXNzIERFUFJFQ0FURUQgPSBlSU5TVEFOQ0UuZ2V0RGVwcmVjYXRlZCgpOw0KKw0KKwkJLyoqDQorCQkgKiBUaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8ZW0+PGI+QmFzZSBWYWx1ZSBTcGVjaWZpY2F0aW9uPC9iPjwvZW0+JyByZWZlcmVuY2UgZmVhdHVyZS4NCisJCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJCSAqIEBnZW5lcmF0ZWQNCisJCSAqLw0KKwkJRVJlZmVyZW5jZSBERVBSRUNBVEVEX19CQVNFX1ZBTFVFX1NQRUNJRklDQVRJT04gPSBlSU5TVEFOQ0UuZ2V0RGVwcmVjYXRlZF9CYXNlX1ZhbHVlU3BlY2lmaWNhdGlvbigpOw0KKw0KKwkJLyoqDQorCQkgKiBUaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8ZW0+PGI+QmFzZSBQcm9wZXJ0eTwvYj48L2VtPicgcmVmZXJlbmNlIGZlYXR1cmUuDQorCQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCQkgKiBAZ2VuZXJhdGVkDQorCQkgKi8NCisJCUVSZWZlcmVuY2UgREVQUkVDQVRFRF9fQkFTRV9QUk9QRVJUWSA9IGVJTlNUQU5DRS5nZXREZXByZWNhdGVkX0Jhc2VfUHJvcGVydHkoKTsNCisNCisJCS8qKg0KKwkJICogVGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPGVtPjxiPkJhc2UgSW5zdGFuY2UgU3BlY2lmaWNhdGlvbjwvYj48L2VtPicgcmVmZXJlbmNlIGZlYXR1cmUuDQorCQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCQkgKiBAZ2VuZXJhdGVkDQorCQkgKi8NCisJCUVSZWZlcmVuY2UgREVQUkVDQVRFRF9fQkFTRV9JTlNUQU5DRV9TUEVDSUZJQ0FUSU9OID0gZUlOU1RBTkNFLmdldERlcHJlY2F0ZWRfQmFzZV9JbnN0YW5jZVNwZWNpZmljYXRpb24oKTsNCisNCisJCS8qKg0KKwkJICogVGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPGVtPjxiPkJhc2UgQ2xhc3M8L2I+PC9lbT4nIHJlZmVyZW5jZSBmZWF0dXJlLg0KKwkJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkJICogQGdlbmVyYXRlZA0KKwkJICovDQorCQlFUmVmZXJlbmNlIERFUFJFQ0FURURfX0JBU0VfQ0xBU1MgPSBlSU5TVEFOQ0UuZ2V0RGVwcmVjYXRlZF9CYXNlX0NsYXNzKCk7DQorDQorCQkvKioNCisJCSAqIFRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxlbT48Yj5CYXNlIEFzc29jaWF0aW9uPC9iPjwvZW0+JyByZWZlcmVuY2UgZmVhdHVyZS4NCisJCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJCSAqIEBnZW5lcmF0ZWQNCisJCSAqLw0KKwkJRVJlZmVyZW5jZSBERVBSRUNBVEVEX19CQVNFX0FTU09DSUFUSU9OID0gZUlOU1RBTkNFLmdldERlcHJlY2F0ZWRfQmFzZV9Bc3NvY2lhdGlvbigpOw0KKw0KKwkJLyoqDQorCQkgKiBUaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8ZW0+PGI+RGVwcmVjYXRlZCBSZWFzb248L2I+PC9lbT4nIGF0dHJpYnV0ZSBmZWF0dXJlLg0KKwkJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkJICogQGdlbmVyYXRlZA0KKwkJICovDQorCQlFQXR0cmlidXRlIERFUFJFQ0FURURfX0RFUFJFQ0FURURfUkVBU09OID0gZUlOU1RBTkNFLmdldERlcHJlY2F0ZWRfRGVwcmVjYXRlZFJlYXNvbigpOw0KKw0KKwkJLyoqDQorCQkgKiBUaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8ZW0+PGI+QmFzZSBHZW5lcmFsaXphdGlvbjwvYj48L2VtPicgcmVmZXJlbmNlIGZlYXR1cmUuDQorCQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCQkgKiBAZ2VuZXJhdGVkDQorCQkgKi8NCisJCUVSZWZlcmVuY2UgREVQUkVDQVRFRF9fQkFTRV9HRU5FUkFMSVpBVElPTiA9IGVJTlNUQU5DRS5nZXREZXByZWNhdGVkX0Jhc2VfR2VuZXJhbGl6YXRpb24oKTsNCisNCisJCS8qKg0KKwkJICogVGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPGVtPjxiPkJhc2UgRGF0YSBUeXBlPC9iPjwvZW0+JyByZWZlcmVuY2UgZmVhdHVyZS4NCisJCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJCSAqIEBnZW5lcmF0ZWQNCisJCSAqLw0KKwkJRVJlZmVyZW5jZSBERVBSRUNBVEVEX19CQVNFX0RBVEFfVFlQRSA9IGVJTlNUQU5DRS5nZXREZXByZWNhdGVkX0Jhc2VfRGF0YVR5cGUoKTsNCisNCisJfQ0KKw0KK30gLy9EZXByZWNhdGVkZWxlbWVudHNQYWNrYWdlDQpkaWZmIC0tZ2l0IGEvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvZGVwcmVjYXRlZGVsZW1lbnRzL0Zsb3dQb3J0LmphdmEgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9kZXByZWNhdGVkZWxlbWVudHMvRmxvd1BvcnQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYjk0OWNhCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvZGVwcmVjYXRlZGVsZW1lbnRzL0Zsb3dQb3J0LmphdmEKQEAgLTAsMCArMSwxMjAgQEAKKy8qKg0KKyAqIENvcHlyaWdodCAoYykgMjAxNSBDRUEgTElTVC4NCisgKiANCisgKiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KKyAqICBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCisgKiAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCisgKiAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgKi8NCitwYWNrYWdlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kZXByZWNhdGVkZWxlbWVudHM7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FT2JqZWN0Ow0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucG9ydGFuZGZsb3dzLkZsb3dEaXJlY3Rpb247DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLnVtbDIudW1sLlBvcnQ7DQorDQorLyoqDQorICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisgKiBBIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBtb2RlbCBvYmplY3QgJzxlbT48Yj5GbG93IFBvcnQ8L2I+PC9lbT4nLg0KKyAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKyAqDQorICogPCEtLSBiZWdpbi1tb2RlbC1kb2MgLS0+DQorICogQSBGbG93UG9ydCBpcyBhbiBpbnRlcmFjdGlvbiBwb2ludCB0aHJvdWdoIHdoaWNoIGlucHV0IGFuZC9vciBvdXRwdXQgb2YgaXRlbXMgc3VjaCBhcyBkYXRhLCBtYXRlcmlhbCwgb3IgZW5lcmd5IG1heSBmbG93LiBUaGlzIGVuYWJsZXMgdGhlIG93bmluZyBibG9jayB0byBkZWNsYXJlIHdoaWNoIGl0ZW1zIGl0IG1heSBleGNoYW5nZSB3aXRoIGl0cyBlbnZpcm9ubWVudCBhbmQgdGhlIGludGVyYWN0aW9uIHBvaW50cyB0aHJvdWdoIHdoaWNoIHRoZSBleGNoYW5nZSBpcyBtYWRlLiBXZSBkaXN0aW5ndWlzaCBiZXR3ZWVuIGF0b21pYyBmbG93IHBvcnQgYW5kIGEgbm9uYXRvbWljIGZsb3cgcG9ydC4gQXRvbWljIGZsb3cgcG9ydHMgcmVsYXkgaXRlbXMgdGhhdCBhcmUgY2xhc3NpZmllZCBieSBhIHNpbmdsZSBCbG9jaywgVmFsdWVUeXBlLCBEYXRhVHlwZSwgb3IgU2lnbmFsIGNsYXNzaWZpZXIuIEEgbm9uYXRvbWljIGZsb3cgcG9ydCByZWxheXMgaXRlbXMgb2Ygc2V2ZXJhbCB0eXBlcyBhcyBzcGVjaWZpZWQgYnkgYSBGbG93U3BlY2lmaWNhdGlvbi4gRmxvdyBwb3J0cyBhbmQgYXNzb2NpYXRlZCBmbG93IHNwZWNpZmljYXRpb25zIGRlZmluZSCTd2hhdCBjYW4gZmxvd5QgYmV0d2VlbiB0aGUgYmxvY2sgYW5kIGl0cyBlbnZpcm9ubWVudCwgd2hlcmVhcyBpdGVtIGZsb3dzIHNwZWNpZnkgk3doYXQgZG9lcyBmbG93lCBpbiBhIHNwZWNpZmljIHVzYWdlIGNvbnRleHQuIEZsb3cgcG9ydHMgcmVsYXkgaXRlbXMgdG8gdGhlaXIgb3duaW5nIGJsb2NrIG9yIHRvIGEgY29ubmVjdG9yIHRoYXQgY29ubmVjdHMgdGhlbSB3aXRoIHRoZWlyIG93bmVyknMgaW50ZXJuYWwgcGFydHMgKGludGVybmFsIGNvbm5lY3RvcikuDQorICogPCEtLSBlbmQtbW9kZWwtZG9jIC0tPg0KKyAqDQorICogPHA+DQorICogVGhlIGZvbGxvd2luZyBmZWF0dXJlcyBhcmUgc3VwcG9ydGVkOg0KKyAqIDx1bD4NCisgKiAgIDxsaT57QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRlcHJlY2F0ZWRlbGVtZW50cy5GbG93UG9ydCNnZXRCYXNlX1BvcnQgPGVtPkJhc2UgUG9ydDwvZW0+fTwvbGk+DQorICogICA8bGk+e0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kZXByZWNhdGVkZWxlbWVudHMuRmxvd1BvcnQjZ2V0RGlyZWN0aW9uIDxlbT5EaXJlY3Rpb248L2VtPn08L2xpPg0KKyAqICAgPGxpPntAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGVwcmVjYXRlZGVsZW1lbnRzLkZsb3dQb3J0I2lzQXRvbWljIDxlbT5JcyBBdG9taWM8L2VtPn08L2xpPg0KKyAqIDwvdWw+DQorICogPC9wPg0KKyAqDQorICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGVwcmVjYXRlZGVsZW1lbnRzLkRlcHJlY2F0ZWRlbGVtZW50c1BhY2thZ2UjZ2V0Rmxvd1BvcnQoKQ0KKyAqIEBtb2RlbA0KKyAqIEBnZW5lcmF0ZWQNCisgKi8NCitwdWJsaWMgaW50ZXJmYWNlIEZsb3dQb3J0IGV4dGVuZHMgRU9iamVjdCB7DQorCS8qKg0KKwkgKiBSZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT48Yj5CYXNlIFBvcnQ8L2I+PC9lbT4nIHJlZmVyZW5jZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPHA+DQorCSAqIElmIHRoZSBtZWFuaW5nIG9mIHRoZSAnPGVtPkJhc2UgUG9ydDwvZW0+JyByZWZlcmVuY2UgaXNuJ3QgY2xlYXIsDQorCSAqIHRoZXJlIHJlYWxseSBzaG91bGQgYmUgbW9yZSBvZiBhIGRlc2NyaXB0aW9uIGhlcmUuLi4NCisJICogPC9wPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHJldHVybiB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+QmFzZSBQb3J0PC9lbT4nIHJlZmVyZW5jZS4NCisJICogQHNlZSAjc2V0QmFzZV9Qb3J0KFBvcnQpDQorCSAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRlcHJlY2F0ZWRlbGVtZW50cy5EZXByZWNhdGVkZWxlbWVudHNQYWNrYWdlI2dldEZsb3dQb3J0X0Jhc2VfUG9ydCgpDQorCSAqIEBtb2RlbCByZXF1aXJlZD0idHJ1ZSIgb3JkZXJlZD0iZmFsc2UiDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCVBvcnQgZ2V0QmFzZV9Qb3J0KCk7DQorDQorCS8qKg0KKwkgKiBTZXRzIHRoZSB2YWx1ZSBvZiB0aGUgJ3tAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGVwcmVjYXRlZGVsZW1lbnRzLkZsb3dQb3J0I2dldEJhc2VfUG9ydCA8ZW0+QmFzZSBQb3J0PC9lbT59JyByZWZlcmVuY2UuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAcGFyYW0gdmFsdWUgdGhlIG5ldyB2YWx1ZSBvZiB0aGUgJzxlbT5CYXNlIFBvcnQ8L2VtPicgcmVmZXJlbmNlLg0KKwkgKiBAc2VlICNnZXRCYXNlX1BvcnQoKQ0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwl2b2lkIHNldEJhc2VfUG9ydChQb3J0IHZhbHVlKTsNCisNCisJLyoqDQorCSAqIFJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSAnPGVtPjxiPkRpcmVjdGlvbjwvYj48L2VtPicgYXR0cmlidXRlLg0KKwkgKiBUaGUgZGVmYXVsdCB2YWx1ZSBpcyA8Y29kZT4iaW5vdXQiPC9jb2RlPi4NCisJICogVGhlIGxpdGVyYWxzIGFyZSBmcm9tIHRoZSBlbnVtZXJhdGlvbiB7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnBvcnRhbmRmbG93cy5GbG93RGlyZWN0aW9ufS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gYmVnaW4tbW9kZWwtZG9jIC0tPg0KKwkgKiBJbmRpY2F0ZXMgdGhlIGRpcmVjdGlvbiBpbiB3aGljaCBhbiBhdG9taWMgZmxvdyBwb3J0IHJlbGF5cyBpdHMgaXRlbXMuIElmIHRoZSBkaXJlY3Rpb24gaXMgc2V0IHRvIJNpbiyUIHRoZW4gdGhlIGl0ZW1zIGFyZSByZWxheWVkIGZyb20gYW4gZXh0ZXJuYWwgY29ubmVjdG9yIHZpYSB0aGUgZmxvdyBwb3J0IGludG8gdGhlIGZsb3cgcG9ydJJzIG93bmVyIChvciBvbmUgb2YgaXRzIHBhcnRzKS4gSWYgdGhlIGRpcmVjdGlvbiBpcyBzZXQgdG8gk291dCyUIHRoZW4gdGhlIGl0ZW1zIGFyZSByZWxheWVkIGZyb20gdGhlIGZsb3cgcG9ydJJzIG93bmVyLCB2aWEgdGhlIGZsb3cgcG9ydCwgdGhyb3VnaCBhbiBleHRlcm5hbCBjb25uZWN0b3IgYXR0YWNoZWQgdG8gdGhlIGZsb3cgcG9ydC4gSWYgdGhlIGRpcmVjdGlvbiBpcyBzZXQgdG8gk2lub3V0LJQgdGhlbiBpdGVtcyBjYW4gZmxvdyBib3RoIHdheXMuIEJ5IGRlZmF1bHQsIHRoZSB2YWx1ZSBpcyBpbm91dC4NCisJICogPCEtLSBlbmQtbW9kZWwtZG9jIC0tPg0KKwkgKiBAcmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT5EaXJlY3Rpb248L2VtPicgYXR0cmlidXRlLg0KKwkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5wb3J0YW5kZmxvd3MuRmxvd0RpcmVjdGlvbg0KKwkgKiBAc2VlICNzZXREaXJlY3Rpb24oRmxvd0RpcmVjdGlvbikNCisJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGVwcmVjYXRlZGVsZW1lbnRzLkRlcHJlY2F0ZWRlbGVtZW50c1BhY2thZ2UjZ2V0Rmxvd1BvcnRfRGlyZWN0aW9uKCkNCisJICogQG1vZGVsIGRlZmF1bHQ9Imlub3V0IiByZXF1aXJlZD0idHJ1ZSIgb3JkZXJlZD0iZmFsc2UiDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUZsb3dEaXJlY3Rpb24gZ2V0RGlyZWN0aW9uKCk7DQorDQorCS8qKg0KKwkgKiBTZXRzIHRoZSB2YWx1ZSBvZiB0aGUgJ3tAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGVwcmVjYXRlZGVsZW1lbnRzLkZsb3dQb3J0I2dldERpcmVjdGlvbiA8ZW0+RGlyZWN0aW9uPC9lbT59JyBhdHRyaWJ1dGUuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAcGFyYW0gdmFsdWUgdGhlIG5ldyB2YWx1ZSBvZiB0aGUgJzxlbT5EaXJlY3Rpb248L2VtPicgYXR0cmlidXRlLg0KKwkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5wb3J0YW5kZmxvd3MuRmxvd0RpcmVjdGlvbg0KKwkgKiBAc2VlICNnZXREaXJlY3Rpb24oKQ0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwl2b2lkIHNldERpcmVjdGlvbihGbG93RGlyZWN0aW9uIHZhbHVlKTsNCisNCisJLyoqDQorCSAqIFJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSAnPGVtPjxiPklzIEF0b21pYzwvYj48L2VtPicgYXR0cmlidXRlLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogPCEtLSBiZWdpbi1tb2RlbC1kb2MgLS0+DQorCSAqIFRoaXMgaXMgYSBkZXJpdmVkIGF0dHJpYnV0ZSAoZGVyaXZlZCBmcm9tIHRoZSBmbG93IHBvcnSScyB0eXBlKS4gRm9yIGEgZmxvdyBwb3J0IHR5cGVkIGJ5IGEgZmxvdyBzcGVjaWZpY2F0aW9uIHRoZSB2YWx1ZSBvZiB0aGlzIGF0dHJpYnV0ZSBpcyBGYWxzZSwgb3RoZXJ3aXNlIHRoZSB2YWx1ZSBpcyBUcnVlLg0KKwkgKiA8IS0tIGVuZC1tb2RlbC1kb2MgLS0+DQorCSAqIEByZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSAnPGVtPklzIEF0b21pYzwvZW0+JyBhdHRyaWJ1dGUuDQorCSAqIEBzZWUgI3NldElzQXRvbWljKGJvb2xlYW4pDQorCSAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRlcHJlY2F0ZWRlbGVtZW50cy5EZXByZWNhdGVkZWxlbWVudHNQYWNrYWdlI2dldEZsb3dQb3J0X0lzQXRvbWljKCkNCisJICogQG1vZGVsIGRhdGFUeXBlPSJvcmcuZWNsaXBzZS51bWwyLnR5cGVzLkJvb2xlYW4iIHJlcXVpcmVkPSJ0cnVlIiB0cmFuc2llbnQ9InRydWUiIHZvbGF0aWxlPSJ0cnVlIiBkZXJpdmVkPSJ0cnVlIiBvcmRlcmVkPSJmYWxzZSINCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJYm9vbGVhbiBpc0F0b21pYygpOw0KKw0KKwkvKioNCisJICogU2V0cyB0aGUgdmFsdWUgb2YgdGhlICd7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRlcHJlY2F0ZWRlbGVtZW50cy5GbG93UG9ydCNpc0F0b21pYyA8ZW0+SXMgQXRvbWljPC9lbT59JyBhdHRyaWJ1dGUuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAcGFyYW0gdmFsdWUgdGhlIG5ldyB2YWx1ZSBvZiB0aGUgJzxlbT5JcyBBdG9taWM8L2VtPicgYXR0cmlidXRlLg0KKwkgKiBAc2VlICNpc0F0b21pYygpDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXZvaWQgc2V0SXNBdG9taWMoYm9vbGVhbiB2YWx1ZSk7DQorDQorfSAvLyBGbG93UG9ydA0KZGlmZiAtLWdpdCBhL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L2RlcHJlY2F0ZWRlbGVtZW50cy9GbG93U3BlY2lmaWNhdGlvbi5qYXZhIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvZGVwcmVjYXRlZGVsZW1lbnRzL0Zsb3dTcGVjaWZpY2F0aW9uLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzViMGEzZgotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L2RlcHJlY2F0ZWRlbGVtZW50cy9GbG93U3BlY2lmaWNhdGlvbi5qYXZhCkBAIC0wLDAgKzEsNjIgQEAKKy8qKg0KKyAqIENvcHlyaWdodCAoYykgMjAxNSBDRUEgTElTVC4NCisgKiANCisgKiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KKyAqICBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCisgKiAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCisgKiAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgKi8NCitwYWNrYWdlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kZXByZWNhdGVkZWxlbWVudHM7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FT2JqZWN0Ow0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS51bWwyLnVtbC5JbnRlcmZhY2U7DQorDQorLyoqDQorICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisgKiBBIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBtb2RlbCBvYmplY3QgJzxlbT48Yj5GbG93IFNwZWNpZmljYXRpb248L2I+PC9lbT4nLg0KKyAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKyAqDQorICogPCEtLSBiZWdpbi1tb2RlbC1kb2MgLS0+DQorICogQSBGbG93U3BlY2lmaWNhdGlvbiBzcGVjaWZpZXMgaW5wdXRzIGFuZCBvdXRwdXRzIGFzIGEgc2V0IG9mIGZsb3cgcHJvcGVydGllcy4gQSBmbG93IHNwZWNpZmljYXRpb24gaXMgdXNlZCBieSBmbG93IHBvcnRzIHRvIHNwZWNpZnkgd2hhdCBpdGVtcyBjYW4gZmxvdyB2aWEgdGhlIHBvcnQuDQorICogPCEtLSBlbmQtbW9kZWwtZG9jIC0tPg0KKyAqDQorICogPHA+DQorICogVGhlIGZvbGxvd2luZyBmZWF0dXJlcyBhcmUgc3VwcG9ydGVkOg0KKyAqIDx1bD4NCisgKiAgIDxsaT57QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRlcHJlY2F0ZWRlbGVtZW50cy5GbG93U3BlY2lmaWNhdGlvbiNnZXRCYXNlX0ludGVyZmFjZSA8ZW0+QmFzZSBJbnRlcmZhY2U8L2VtPn08L2xpPg0KKyAqIDwvdWw+DQorICogPC9wPg0KKyAqDQorICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGVwcmVjYXRlZGVsZW1lbnRzLkRlcHJlY2F0ZWRlbGVtZW50c1BhY2thZ2UjZ2V0Rmxvd1NwZWNpZmljYXRpb24oKQ0KKyAqIEBtb2RlbA0KKyAqIEBnZW5lcmF0ZWQNCisgKi8NCitwdWJsaWMgaW50ZXJmYWNlIEZsb3dTcGVjaWZpY2F0aW9uIGV4dGVuZHMgRU9iamVjdCB7DQorCS8qKg0KKwkgKiBSZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT48Yj5CYXNlIEludGVyZmFjZTwvYj48L2VtPicgcmVmZXJlbmNlLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8cD4NCisJICogSWYgdGhlIG1lYW5pbmcgb2YgdGhlICc8ZW0+QmFzZSBJbnRlcmZhY2U8L2VtPicgcmVmZXJlbmNlIGlzbid0IGNsZWFyLA0KKwkgKiB0aGVyZSByZWFsbHkgc2hvdWxkIGJlIG1vcmUgb2YgYSBkZXNjcmlwdGlvbiBoZXJlLi4uDQorCSAqIDwvcD4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEByZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSAnPGVtPkJhc2UgSW50ZXJmYWNlPC9lbT4nIHJlZmVyZW5jZS4NCisJICogQHNlZSAjc2V0QmFzZV9JbnRlcmZhY2UoSW50ZXJmYWNlKQ0KKwkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kZXByZWNhdGVkZWxlbWVudHMuRGVwcmVjYXRlZGVsZW1lbnRzUGFja2FnZSNnZXRGbG93U3BlY2lmaWNhdGlvbl9CYXNlX0ludGVyZmFjZSgpDQorCSAqIEBtb2RlbCByZXF1aXJlZD0idHJ1ZSIgb3JkZXJlZD0iZmFsc2UiDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUludGVyZmFjZSBnZXRCYXNlX0ludGVyZmFjZSgpOw0KKw0KKwkvKioNCisJICogU2V0cyB0aGUgdmFsdWUgb2YgdGhlICd7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRlcHJlY2F0ZWRlbGVtZW50cy5GbG93U3BlY2lmaWNhdGlvbiNnZXRCYXNlX0ludGVyZmFjZSA8ZW0+QmFzZSBJbnRlcmZhY2U8L2VtPn0nIHJlZmVyZW5jZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBwYXJhbSB2YWx1ZSB0aGUgbmV3IHZhbHVlIG9mIHRoZSAnPGVtPkJhc2UgSW50ZXJmYWNlPC9lbT4nIHJlZmVyZW5jZS4NCisJICogQHNlZSAjZ2V0QmFzZV9JbnRlcmZhY2UoKQ0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwl2b2lkIHNldEJhc2VfSW50ZXJmYWNlKEludGVyZmFjZSB2YWx1ZSk7DQorDQorfSAvLyBGbG93U3BlY2lmaWNhdGlvbg0KZGlmZiAtLWdpdCBhL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L2RlcHJlY2F0ZWRlbGVtZW50cy9SZXF1aXJlbWVudFJlbGF0ZWQuamF2YSBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L2RlcHJlY2F0ZWRlbGVtZW50cy9SZXF1aXJlbWVudFJlbGF0ZWQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMTc1MzAwCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvZGVwcmVjYXRlZGVsZW1lbnRzL1JlcXVpcmVtZW50UmVsYXRlZC5qYXZhCkBAIC0wLDAgKzEsMTMwIEBACisvKioNCisgKiBDb3B5cmlnaHQgKGMpIDIwMTUgQ0VBIExJU1QuDQorICogDQorICogIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCisgKiAgYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQorICogIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQorICogIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICovDQorcGFja2FnZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGVwcmVjYXRlZGVsZW1lbnRzOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY29tbW9uLnV0aWwuRUxpc3Q7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FT2JqZWN0Ow0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucmVxdWlyZW1lbnRzLlJlcXVpcmVtZW50Ow0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS51bWwyLnVtbC5OYW1lZEVsZW1lbnQ7DQorDQorLyoqDQorICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisgKiBBIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBtb2RlbCBvYmplY3QgJzxlbT48Yj5SZXF1aXJlbWVudCBSZWxhdGVkPC9iPjwvZW0+Jy4NCisgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisgKg0KKyAqIDwhLS0gYmVnaW4tbW9kZWwtZG9jIC0tPg0KKyAqIFRoaXMgc3RlcmVvdHlwZSBpcyB1c2VkIHRvIGFkZCBwcm9wZXJ0aWVzIHRvIHRob3NlIGVsZW1lbnRzIHRoYXQgYXJlIHJlbGF0ZWQgdG8gcmVxdWlyZW1lbnRzIHZpYSB0aGUgdmFyaW91cyBkZXBlbmRlbmNpZXMuDQorICogPCEtLSBlbmQtbW9kZWwtZG9jIC0tPg0KKyAqDQorICogPHA+DQorICogVGhlIGZvbGxvd2luZyBmZWF0dXJlcyBhcmUgc3VwcG9ydGVkOg0KKyAqIDx1bD4NCisgKiAgIDxsaT57QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRlcHJlY2F0ZWRlbGVtZW50cy5SZXF1aXJlbWVudFJlbGF0ZWQjZ2V0QmFzZV9OYW1lZEVsZW1lbnQgPGVtPkJhc2UgTmFtZWQgRWxlbWVudDwvZW0+fTwvbGk+DQorICogICA8bGk+e0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kZXByZWNhdGVkZWxlbWVudHMuUmVxdWlyZW1lbnRSZWxhdGVkI2dldFRyYWNlZEZyb20gPGVtPlRyYWNlZCBGcm9tPC9lbT59PC9saT4NCisgKiAgIDxsaT57QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRlcHJlY2F0ZWRlbGVtZW50cy5SZXF1aXJlbWVudFJlbGF0ZWQjZ2V0U2F0aXNmaWVzIDxlbT5TYXRpc2ZpZXM8L2VtPn08L2xpPg0KKyAqICAgPGxpPntAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGVwcmVjYXRlZGVsZW1lbnRzLlJlcXVpcmVtZW50UmVsYXRlZCNnZXRSZWZpbmVzIDxlbT5SZWZpbmVzPC9lbT59PC9saT4NCisgKiAgIDxsaT57QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRlcHJlY2F0ZWRlbGVtZW50cy5SZXF1aXJlbWVudFJlbGF0ZWQjZ2V0VmVyaWZpZXMgPGVtPlZlcmlmaWVzPC9lbT59PC9saT4NCisgKiA8L3VsPg0KKyAqIDwvcD4NCisgKg0KKyAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRlcHJlY2F0ZWRlbGVtZW50cy5EZXByZWNhdGVkZWxlbWVudHNQYWNrYWdlI2dldFJlcXVpcmVtZW50UmVsYXRlZCgpDQorICogQG1vZGVsDQorICogQGdlbmVyYXRlZA0KKyAqLw0KK3B1YmxpYyBpbnRlcmZhY2UgUmVxdWlyZW1lbnRSZWxhdGVkIGV4dGVuZHMgRU9iamVjdCB7DQorCS8qKg0KKwkgKiBSZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT48Yj5CYXNlIE5hbWVkIEVsZW1lbnQ8L2I+PC9lbT4nIHJlZmVyZW5jZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPHA+DQorCSAqIElmIHRoZSBtZWFuaW5nIG9mIHRoZSAnPGVtPkJhc2UgTmFtZWQgRWxlbWVudDwvZW0+JyByZWZlcmVuY2UgaXNuJ3QgY2xlYXIsDQorCSAqIHRoZXJlIHJlYWxseSBzaG91bGQgYmUgbW9yZSBvZiBhIGRlc2NyaXB0aW9uIGhlcmUuLi4NCisJICogPC9wPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHJldHVybiB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+QmFzZSBOYW1lZCBFbGVtZW50PC9lbT4nIHJlZmVyZW5jZS4NCisJICogQHNlZSAjc2V0QmFzZV9OYW1lZEVsZW1lbnQoTmFtZWRFbGVtZW50KQ0KKwkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kZXByZWNhdGVkZWxlbWVudHMuRGVwcmVjYXRlZGVsZW1lbnRzUGFja2FnZSNnZXRSZXF1aXJlbWVudFJlbGF0ZWRfQmFzZV9OYW1lZEVsZW1lbnQoKQ0KKwkgKiBAbW9kZWwgcmVxdWlyZWQ9InRydWUiIG9yZGVyZWQ9ImZhbHNlIg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlOYW1lZEVsZW1lbnQgZ2V0QmFzZV9OYW1lZEVsZW1lbnQoKTsNCisNCisJLyoqDQorCSAqIFNldHMgdGhlIHZhbHVlIG9mIHRoZSAne0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kZXByZWNhdGVkZWxlbWVudHMuUmVxdWlyZW1lbnRSZWxhdGVkI2dldEJhc2VfTmFtZWRFbGVtZW50IDxlbT5CYXNlIE5hbWVkIEVsZW1lbnQ8L2VtPn0nIHJlZmVyZW5jZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBwYXJhbSB2YWx1ZSB0aGUgbmV3IHZhbHVlIG9mIHRoZSAnPGVtPkJhc2UgTmFtZWQgRWxlbWVudDwvZW0+JyByZWZlcmVuY2UuDQorCSAqIEBzZWUgI2dldEJhc2VfTmFtZWRFbGVtZW50KCkNCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJdm9pZCBzZXRCYXNlX05hbWVkRWxlbWVudChOYW1lZEVsZW1lbnQgdmFsdWUpOw0KKw0KKwkvKioNCisJICogUmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+PGI+VHJhY2VkIEZyb208L2I+PC9lbT4nIHJlZmVyZW5jZSBsaXN0Lg0KKwkgKiBUaGUgbGlzdCBjb250ZW50cyBhcmUgb2YgdHlwZSB7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnJlcXVpcmVtZW50cy5SZXF1aXJlbWVudH0uDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGJlZ2luLW1vZGVsLWRvYyAtLT4NCisJICogRGVyaXZlZCBmcm9tIGFsbCByZXF1aXJlbWVudHMgdGhhdCBhcmUgdGhlIHN1cHBsaWVyIG9mIGEgq3RyYWNluyByZWxhdGlvbnNoaXAgZm9yIHdoaWNoIHRoaXMgZWxlbWVudCBpcyBhIGNsaWVudC4NCisJICogPCEtLSBlbmQtbW9kZWwtZG9jIC0tPg0KKwkgKiBAcmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT5UcmFjZWQgRnJvbTwvZW0+JyByZWZlcmVuY2UgbGlzdC4NCisJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGVwcmVjYXRlZGVsZW1lbnRzLkRlcHJlY2F0ZWRlbGVtZW50c1BhY2thZ2UjZ2V0UmVxdWlyZW1lbnRSZWxhdGVkX1RyYWNlZEZyb20oKQ0KKwkgKiBAbW9kZWwgcmVxdWlyZWQ9InRydWUiIHRyYW5zaWVudD0idHJ1ZSIgdm9sYXRpbGU9InRydWUiIGRlcml2ZWQ9InRydWUiIG9yZGVyZWQ9ImZhbHNlIg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlFTGlzdDxSZXF1aXJlbWVudD4gZ2V0VHJhY2VkRnJvbSgpOw0KKw0KKwkvKioNCisJICogUmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+PGI+U2F0aXNmaWVzPC9iPjwvZW0+JyByZWZlcmVuY2UgbGlzdC4NCisJICogVGhlIGxpc3QgY29udGVudHMgYXJlIG9mIHR5cGUge0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5yZXF1aXJlbWVudHMuUmVxdWlyZW1lbnR9Lg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogPCEtLSBiZWdpbi1tb2RlbC1kb2MgLS0+DQorCSAqIERlcml2ZWQgZnJvbSBhbGwgcmVxdWlyZW1lbnRzIHRoYXQgYXJlIHRoZSBzdXBwbGllciBvZiBhIKtzYXRpc2Z5uyByZWxhdGlvbnNoaXAgZm9yIHdoaWNoIHRoaXMgZWxlbWVudCBpcyBhIGNsaWVudC4NCisJICogPCEtLSBlbmQtbW9kZWwtZG9jIC0tPg0KKwkgKiBAcmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT5TYXRpc2ZpZXM8L2VtPicgcmVmZXJlbmNlIGxpc3QuDQorCSAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRlcHJlY2F0ZWRlbGVtZW50cy5EZXByZWNhdGVkZWxlbWVudHNQYWNrYWdlI2dldFJlcXVpcmVtZW50UmVsYXRlZF9TYXRpc2ZpZXMoKQ0KKwkgKiBAbW9kZWwgcmVxdWlyZWQ9InRydWUiIHRyYW5zaWVudD0idHJ1ZSIgdm9sYXRpbGU9InRydWUiIGRlcml2ZWQ9InRydWUiIG9yZGVyZWQ9ImZhbHNlIg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlFTGlzdDxSZXF1aXJlbWVudD4gZ2V0U2F0aXNmaWVzKCk7DQorDQorCS8qKg0KKwkgKiBSZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT48Yj5SZWZpbmVzPC9iPjwvZW0+JyByZWZlcmVuY2UgbGlzdC4NCisJICogVGhlIGxpc3QgY29udGVudHMgYXJlIG9mIHR5cGUge0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5yZXF1aXJlbWVudHMuUmVxdWlyZW1lbnR9Lg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogPCEtLSBiZWdpbi1tb2RlbC1kb2MgLS0+DQorCSAqIERlcml2ZWQgZnJvbSBhbGwgcmVxdWlyZW1lbnRzIHRoYXQgYXJlIHRoZSBzdXBwbGllciBvZiBhIKtyZWZpbmW7IHJlbGF0aW9uc2hpcCBmb3Igd2hpY2ggdGhpcyBlbGVtZW50IGlzIGEgY2xpZW50Lg0KKwkgKiA8IS0tIGVuZC1tb2RlbC1kb2MgLS0+DQorCSAqIEByZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSAnPGVtPlJlZmluZXM8L2VtPicgcmVmZXJlbmNlIGxpc3QuDQorCSAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRlcHJlY2F0ZWRlbGVtZW50cy5EZXByZWNhdGVkZWxlbWVudHNQYWNrYWdlI2dldFJlcXVpcmVtZW50UmVsYXRlZF9SZWZpbmVzKCkNCisJICogQG1vZGVsIHJlcXVpcmVkPSJ0cnVlIiB0cmFuc2llbnQ9InRydWUiIHZvbGF0aWxlPSJ0cnVlIiBkZXJpdmVkPSJ0cnVlIiBvcmRlcmVkPSJmYWxzZSINCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJRUxpc3Q8UmVxdWlyZW1lbnQ+IGdldFJlZmluZXMoKTsNCisNCisJLyoqDQorCSAqIFJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSAnPGVtPjxiPlZlcmlmaWVzPC9iPjwvZW0+JyByZWZlcmVuY2UgbGlzdC4NCisJICogVGhlIGxpc3QgY29udGVudHMgYXJlIG9mIHR5cGUge0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5yZXF1aXJlbWVudHMuUmVxdWlyZW1lbnR9Lg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogPCEtLSBiZWdpbi1tb2RlbC1kb2MgLS0+DQorCSAqIERlcml2ZWQgZnJvbSBhbGwgcmVxdWlyZW1lbnRzIHRoYXQgYXJlIHRoZSBzdXBwbGllciBvZiBhIKt2ZXJpZnm7IHJlbGF0aW9uc2hpcCBmb3Igd2hpY2ggdGhpcyBlbGVtZW50IGlzIGEgY2xpZW50Lg0KKwkgKiA8IS0tIGVuZC1tb2RlbC1kb2MgLS0+DQorCSAqIEByZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSAnPGVtPlZlcmlmaWVzPC9lbT4nIHJlZmVyZW5jZSBsaXN0Lg0KKwkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kZXByZWNhdGVkZWxlbWVudHMuRGVwcmVjYXRlZGVsZW1lbnRzUGFja2FnZSNnZXRSZXF1aXJlbWVudFJlbGF0ZWRfVmVyaWZpZXMoKQ0KKwkgKiBAbW9kZWwgcmVxdWlyZWQ9InRydWUiIHRyYW5zaWVudD0idHJ1ZSIgdm9sYXRpbGU9InRydWUiIGRlcml2ZWQ9InRydWUiIG9yZGVyZWQ9ImZhbHNlIg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlFTGlzdDxSZXF1aXJlbWVudD4gZ2V0VmVyaWZpZXMoKTsNCisNCit9IC8vIFJlcXVpcmVtZW50UmVsYXRlZA0KZGlmZiAtLWdpdCBhL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L2RlcHJlY2F0ZWRlbGVtZW50cy9pbnRlcm5hbC9pbXBsL0FsbG9jYXRlZEltcGwuamF2YSBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L2RlcHJlY2F0ZWRlbGVtZW50cy9pbnRlcm5hbC9pbXBsL0FsbG9jYXRlZEltcGwuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZDRhOTNkCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvZGVwcmVjYXRlZGVsZW1lbnRzL2ludGVybmFsL2ltcGwvQWxsb2NhdGVkSW1wbC5qYXZhCkBAIC0wLDAgKzEsMjY1IEBACisvKioNCisgKiBDb3B5cmlnaHQgKGMpIDIwMTUgQ0VBIExJU1QuDQorICogDQorICogIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCisgKiAgYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQorICogIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQorICogIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICovDQorcGFja2FnZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGVwcmVjYXRlZGVsZW1lbnRzLmludGVybmFsLmltcGw7DQorDQoraW1wb3J0IGphdmEudXRpbC5Db2xsZWN0aW9uOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY29tbW9uLm5vdGlmeS5Ob3RpZmljYXRpb247DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jb21tb24udXRpbC5FTGlzdDsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVDbGFzczsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkludGVybmFsRU9iamVjdDsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLmltcGwuRU5vdGlmaWNhdGlvbkltcGw7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5pbXBsLk1pbmltYWxFT2JqZWN0SW1wbDsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRlcHJlY2F0ZWRlbGVtZW50cy5BbGxvY2F0ZWQ7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kZXByZWNhdGVkZWxlbWVudHMuRGVwcmVjYXRlZGVsZW1lbnRzUGFja2FnZTsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UudW1sMi51bWwuTmFtZWRFbGVtZW50Ow0KKw0KKy8qKg0KKyAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorICogQW4gaW1wbGVtZW50YXRpb24gb2YgdGhlIG1vZGVsIG9iamVjdCAnPGVtPjxiPkFsbG9jYXRlZDwvYj48L2VtPicuDQorICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorICogPHA+DQorICogVGhlIGZvbGxvd2luZyBmZWF0dXJlcyBhcmUgaW1wbGVtZW50ZWQ6DQorICogPHVsPg0KKyAqICAgPGxpPntAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGVwcmVjYXRlZGVsZW1lbnRzLmludGVybmFsLmltcGwuQWxsb2NhdGVkSW1wbCNnZXRCYXNlX05hbWVkRWxlbWVudCA8ZW0+QmFzZSBOYW1lZCBFbGVtZW50PC9lbT59PC9saT4NCisgKiAgIDxsaT57QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRlcHJlY2F0ZWRlbGVtZW50cy5pbnRlcm5hbC5pbXBsLkFsbG9jYXRlZEltcGwjZ2V0QWxsb2NhdGVkRnJvbSA8ZW0+QWxsb2NhdGVkIEZyb208L2VtPn08L2xpPg0KKyAqICAgPGxpPntAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGVwcmVjYXRlZGVsZW1lbnRzLmludGVybmFsLmltcGwuQWxsb2NhdGVkSW1wbCNnZXRBbGxvY2F0ZWRUbyA8ZW0+QWxsb2NhdGVkIFRvPC9lbT59PC9saT4NCisgKiA8L3VsPg0KKyAqIDwvcD4NCisgKg0KKyAqIEBnZW5lcmF0ZWQNCisgKi8NCitwdWJsaWMgY2xhc3MgQWxsb2NhdGVkSW1wbCBleHRlbmRzIE1pbmltYWxFT2JqZWN0SW1wbC5Db250YWluZXIgaW1wbGVtZW50cyBBbGxvY2F0ZWQgew0KKwkvKioNCisJICogVGhlIGNhY2hlZCB2YWx1ZSBvZiB0aGUgJ3tAbGluayAjZ2V0QmFzZV9OYW1lZEVsZW1lbnQoKSA8ZW0+QmFzZSBOYW1lZCBFbGVtZW50PC9lbT59JyByZWZlcmVuY2UuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAc2VlICNnZXRCYXNlX05hbWVkRWxlbWVudCgpDQorCSAqIEBnZW5lcmF0ZWQNCisJICogQG9yZGVyZWQNCisJICovDQorCXByb3RlY3RlZCBOYW1lZEVsZW1lbnQgYmFzZV9OYW1lZEVsZW1lbnQ7DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHJvdGVjdGVkIEFsbG9jYXRlZEltcGwoKSB7DQorCQlzdXBlcigpOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXByb3RlY3RlZCBFQ2xhc3MgZVN0YXRpY0NsYXNzKCkgew0KKwkJcmV0dXJuIERlcHJlY2F0ZWRlbGVtZW50c1BhY2thZ2UuTGl0ZXJhbHMuQUxMT0NBVEVEOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIE5hbWVkRWxlbWVudCBnZXRCYXNlX05hbWVkRWxlbWVudCgpIHsNCisJCWlmIChiYXNlX05hbWVkRWxlbWVudCAhPSBudWxsICYmIGJhc2VfTmFtZWRFbGVtZW50LmVJc1Byb3h5KCkpIHsNCisJCQlJbnRlcm5hbEVPYmplY3Qgb2xkQmFzZV9OYW1lZEVsZW1lbnQgPSAoSW50ZXJuYWxFT2JqZWN0KWJhc2VfTmFtZWRFbGVtZW50Ow0KKwkJCWJhc2VfTmFtZWRFbGVtZW50ID0gKE5hbWVkRWxlbWVudCllUmVzb2x2ZVByb3h5KG9sZEJhc2VfTmFtZWRFbGVtZW50KTsNCisJCQlpZiAoYmFzZV9OYW1lZEVsZW1lbnQgIT0gb2xkQmFzZV9OYW1lZEVsZW1lbnQpIHsNCisJCQkJaWYgKGVOb3RpZmljYXRpb25SZXF1aXJlZCgpKQ0KKwkJCQkJZU5vdGlmeShuZXcgRU5vdGlmaWNhdGlvbkltcGwodGhpcywgTm90aWZpY2F0aW9uLlJFU09MVkUsIERlcHJlY2F0ZWRlbGVtZW50c1BhY2thZ2UuQUxMT0NBVEVEX19CQVNFX05BTUVEX0VMRU1FTlQsIG9sZEJhc2VfTmFtZWRFbGVtZW50LCBiYXNlX05hbWVkRWxlbWVudCkpOw0KKwkJCX0NCisJCX0NCisJCXJldHVybiBiYXNlX05hbWVkRWxlbWVudDsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBOYW1lZEVsZW1lbnQgYmFzaWNHZXRCYXNlX05hbWVkRWxlbWVudCgpIHsNCisJCXJldHVybiBiYXNlX05hbWVkRWxlbWVudDsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyB2b2lkIHNldEJhc2VfTmFtZWRFbGVtZW50KE5hbWVkRWxlbWVudCBuZXdCYXNlX05hbWVkRWxlbWVudCkgew0KKwkJTmFtZWRFbGVtZW50IG9sZEJhc2VfTmFtZWRFbGVtZW50ID0gYmFzZV9OYW1lZEVsZW1lbnQ7DQorCQliYXNlX05hbWVkRWxlbWVudCA9IG5ld0Jhc2VfTmFtZWRFbGVtZW50Ow0KKwkJaWYgKGVOb3RpZmljYXRpb25SZXF1aXJlZCgpKQ0KKwkJCWVOb3RpZnkobmV3IEVOb3RpZmljYXRpb25JbXBsKHRoaXMsIE5vdGlmaWNhdGlvbi5TRVQsIERlcHJlY2F0ZWRlbGVtZW50c1BhY2thZ2UuQUxMT0NBVEVEX19CQVNFX05BTUVEX0VMRU1FTlQsIG9sZEJhc2VfTmFtZWRFbGVtZW50LCBiYXNlX05hbWVkRWxlbWVudCkpOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIEVMaXN0PE5hbWVkRWxlbWVudD4gZ2V0QWxsb2NhdGVkRnJvbSgpIHsNCisJCS8vIFRPRE86IGltcGxlbWVudCB0aGlzIG1ldGhvZCB0byByZXR1cm4gdGhlICdBbGxvY2F0ZWQgRnJvbScgcmVmZXJlbmNlIGxpc3QNCisJCS8vIEVuc3VyZSB0aGF0IHlvdSByZW1vdmUgQGdlbmVyYXRlZCBvciBtYXJrIGl0IEBnZW5lcmF0ZWQgTk9UDQorCQl0aHJvdyBuZXcgVW5zdXBwb3J0ZWRPcGVyYXRpb25FeGNlcHRpb24oKTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBOYW1lZEVsZW1lbnQgZ2V0QWxsb2NhdGVkRnJvbShTdHJpbmcgbmFtZSkgew0KKwkJcmV0dXJuIGdldEFsbG9jYXRlZEZyb20obmFtZSwgZmFsc2UsIG51bGwpOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIE5hbWVkRWxlbWVudCBnZXRBbGxvY2F0ZWRGcm9tKFN0cmluZyBuYW1lLCBib29sZWFuIGlnbm9yZUNhc2UsIEVDbGFzcyBlQ2xhc3MpIHsNCisJCWFsbG9jYXRlZEZyb21Mb29wOiBmb3IgKE5hbWVkRWxlbWVudCBhbGxvY2F0ZWRGcm9tIDogZ2V0QWxsb2NhdGVkRnJvbSgpKSB7DQorCQkJaWYgKGVDbGFzcyAhPSBudWxsICYmICFlQ2xhc3MuaXNJbnN0YW5jZShhbGxvY2F0ZWRGcm9tKSkNCisJCQkJY29udGludWUgYWxsb2NhdGVkRnJvbUxvb3A7DQorCQkJaWYgKG5hbWUgIT0gbnVsbCAmJiAhKGlnbm9yZUNhc2UgPyBuYW1lLmVxdWFsc0lnbm9yZUNhc2UoYWxsb2NhdGVkRnJvbS5nZXROYW1lKCkpIDogbmFtZS5lcXVhbHMoYWxsb2NhdGVkRnJvbS5nZXROYW1lKCkpKSkNCisJCQkJY29udGludWUgYWxsb2NhdGVkRnJvbUxvb3A7DQorCQkJcmV0dXJuIGFsbG9jYXRlZEZyb207DQorCQl9DQorCQlyZXR1cm4gbnVsbDsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBFTGlzdDxOYW1lZEVsZW1lbnQ+IGdldEFsbG9jYXRlZFRvKCkgew0KKwkJLy8gVE9ETzogaW1wbGVtZW50IHRoaXMgbWV0aG9kIHRvIHJldHVybiB0aGUgJ0FsbG9jYXRlZCBUbycgcmVmZXJlbmNlIGxpc3QNCisJCS8vIEVuc3VyZSB0aGF0IHlvdSByZW1vdmUgQGdlbmVyYXRlZCBvciBtYXJrIGl0IEBnZW5lcmF0ZWQgTk9UDQorCQl0aHJvdyBuZXcgVW5zdXBwb3J0ZWRPcGVyYXRpb25FeGNlcHRpb24oKTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBOYW1lZEVsZW1lbnQgZ2V0QWxsb2NhdGVkVG8oU3RyaW5nIG5hbWUpIHsNCisJCXJldHVybiBnZXRBbGxvY2F0ZWRUbyhuYW1lLCBmYWxzZSwgbnVsbCk7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgTmFtZWRFbGVtZW50IGdldEFsbG9jYXRlZFRvKFN0cmluZyBuYW1lLCBib29sZWFuIGlnbm9yZUNhc2UsIEVDbGFzcyBlQ2xhc3MpIHsNCisJCWFsbG9jYXRlZFRvTG9vcDogZm9yIChOYW1lZEVsZW1lbnQgYWxsb2NhdGVkVG8gOiBnZXRBbGxvY2F0ZWRUbygpKSB7DQorCQkJaWYgKGVDbGFzcyAhPSBudWxsICYmICFlQ2xhc3MuaXNJbnN0YW5jZShhbGxvY2F0ZWRUbykpDQorCQkJCWNvbnRpbnVlIGFsbG9jYXRlZFRvTG9vcDsNCisJCQlpZiAobmFtZSAhPSBudWxsICYmICEoaWdub3JlQ2FzZSA/IG5hbWUuZXF1YWxzSWdub3JlQ2FzZShhbGxvY2F0ZWRUby5nZXROYW1lKCkpIDogbmFtZS5lcXVhbHMoYWxsb2NhdGVkVG8uZ2V0TmFtZSgpKSkpDQorCQkJCWNvbnRpbnVlIGFsbG9jYXRlZFRvTG9vcDsNCisJCQlyZXR1cm4gYWxsb2NhdGVkVG87DQorCQl9DQorCQlyZXR1cm4gbnVsbDsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgT2JqZWN0IGVHZXQoaW50IGZlYXR1cmVJRCwgYm9vbGVhbiByZXNvbHZlLCBib29sZWFuIGNvcmVUeXBlKSB7DQorCQlzd2l0Y2ggKGZlYXR1cmVJRCkgew0KKwkJCWNhc2UgRGVwcmVjYXRlZGVsZW1lbnRzUGFja2FnZS5BTExPQ0FURURfX0JBU0VfTkFNRURfRUxFTUVOVDoNCisJCQkJaWYgKHJlc29sdmUpIHJldHVybiBnZXRCYXNlX05hbWVkRWxlbWVudCgpOw0KKwkJCQlyZXR1cm4gYmFzaWNHZXRCYXNlX05hbWVkRWxlbWVudCgpOw0KKwkJCWNhc2UgRGVwcmVjYXRlZGVsZW1lbnRzUGFja2FnZS5BTExPQ0FURURfX0FMTE9DQVRFRF9GUk9NOg0KKwkJCQlyZXR1cm4gZ2V0QWxsb2NhdGVkRnJvbSgpOw0KKwkJCWNhc2UgRGVwcmVjYXRlZGVsZW1lbnRzUGFja2FnZS5BTExPQ0FURURfX0FMTE9DQVRFRF9UTzoNCisJCQkJcmV0dXJuIGdldEFsbG9jYXRlZFRvKCk7DQorCQl9DQorCQlyZXR1cm4gc3VwZXIuZUdldChmZWF0dXJlSUQsIHJlc29sdmUsIGNvcmVUeXBlKTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBTdXBwcmVzc1dhcm5pbmdzKCJ1bmNoZWNrZWQiKQ0KKwlAT3ZlcnJpZGUNCisJcHVibGljIHZvaWQgZVNldChpbnQgZmVhdHVyZUlELCBPYmplY3QgbmV3VmFsdWUpIHsNCisJCXN3aXRjaCAoZmVhdHVyZUlEKSB7DQorCQkJY2FzZSBEZXByZWNhdGVkZWxlbWVudHNQYWNrYWdlLkFMTE9DQVRFRF9fQkFTRV9OQU1FRF9FTEVNRU5UOg0KKwkJCQlzZXRCYXNlX05hbWVkRWxlbWVudCgoTmFtZWRFbGVtZW50KW5ld1ZhbHVlKTsNCisJCQkJcmV0dXJuOw0KKwkJCWNhc2UgRGVwcmVjYXRlZGVsZW1lbnRzUGFja2FnZS5BTExPQ0FURURfX0FMTE9DQVRFRF9GUk9NOg0KKwkJCQlnZXRBbGxvY2F0ZWRGcm9tKCkuY2xlYXIoKTsNCisJCQkJZ2V0QWxsb2NhdGVkRnJvbSgpLmFkZEFsbCgoQ29sbGVjdGlvbjw/IGV4dGVuZHMgTmFtZWRFbGVtZW50PiluZXdWYWx1ZSk7DQorCQkJCXJldHVybjsNCisJCQljYXNlIERlcHJlY2F0ZWRlbGVtZW50c1BhY2thZ2UuQUxMT0NBVEVEX19BTExPQ0FURURfVE86DQorCQkJCWdldEFsbG9jYXRlZFRvKCkuY2xlYXIoKTsNCisJCQkJZ2V0QWxsb2NhdGVkVG8oKS5hZGRBbGwoKENvbGxlY3Rpb248PyBleHRlbmRzIE5hbWVkRWxlbWVudD4pbmV3VmFsdWUpOw0KKwkJCQlyZXR1cm47DQorCQl9DQorCQlzdXBlci5lU2V0KGZlYXR1cmVJRCwgbmV3VmFsdWUpOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXB1YmxpYyB2b2lkIGVVbnNldChpbnQgZmVhdHVyZUlEKSB7DQorCQlzd2l0Y2ggKGZlYXR1cmVJRCkgew0KKwkJCWNhc2UgRGVwcmVjYXRlZGVsZW1lbnRzUGFja2FnZS5BTExPQ0FURURfX0JBU0VfTkFNRURfRUxFTUVOVDoNCisJCQkJc2V0QmFzZV9OYW1lZEVsZW1lbnQoKE5hbWVkRWxlbWVudCludWxsKTsNCisJCQkJcmV0dXJuOw0KKwkJCWNhc2UgRGVwcmVjYXRlZGVsZW1lbnRzUGFja2FnZS5BTExPQ0FURURfX0FMTE9DQVRFRF9GUk9NOg0KKwkJCQlnZXRBbGxvY2F0ZWRGcm9tKCkuY2xlYXIoKTsNCisJCQkJcmV0dXJuOw0KKwkJCWNhc2UgRGVwcmVjYXRlZGVsZW1lbnRzUGFja2FnZS5BTExPQ0FURURfX0FMTE9DQVRFRF9UTzoNCisJCQkJZ2V0QWxsb2NhdGVkVG8oKS5jbGVhcigpOw0KKwkJCQlyZXR1cm47DQorCQl9DQorCQlzdXBlci5lVW5zZXQoZmVhdHVyZUlEKTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgYm9vbGVhbiBlSXNTZXQoaW50IGZlYXR1cmVJRCkgew0KKwkJc3dpdGNoIChmZWF0dXJlSUQpIHsNCisJCQljYXNlIERlcHJlY2F0ZWRlbGVtZW50c1BhY2thZ2UuQUxMT0NBVEVEX19CQVNFX05BTUVEX0VMRU1FTlQ6DQorCQkJCXJldHVybiBiYXNlX05hbWVkRWxlbWVudCAhPSBudWxsOw0KKwkJCWNhc2UgRGVwcmVjYXRlZGVsZW1lbnRzUGFja2FnZS5BTExPQ0FURURfX0FMTE9DQVRFRF9GUk9NOg0KKwkJCQlyZXR1cm4gIWdldEFsbG9jYXRlZEZyb20oKS5pc0VtcHR5KCk7DQorCQkJY2FzZSBEZXByZWNhdGVkZWxlbWVudHNQYWNrYWdlLkFMTE9DQVRFRF9fQUxMT0NBVEVEX1RPOg0KKwkJCQlyZXR1cm4gIWdldEFsbG9jYXRlZFRvKCkuaXNFbXB0eSgpOw0KKwkJfQ0KKwkJcmV0dXJuIHN1cGVyLmVJc1NldChmZWF0dXJlSUQpOw0KKwl9DQorDQorfSAvL0FsbG9jYXRlZEltcGwNCmRpZmYgLS1naXQgYS9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9kZXByZWNhdGVkZWxlbWVudHMvaW50ZXJuYWwvaW1wbC9EZXByZWNhdGVkSW1wbC5qYXZhIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvZGVwcmVjYXRlZGVsZW1lbnRzL2ludGVybmFsL2ltcGwvRGVwcmVjYXRlZEltcGwuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYWZmYTNiCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvZGVwcmVjYXRlZGVsZW1lbnRzL2ludGVybmFsL2ltcGwvRGVwcmVjYXRlZEltcGwuamF2YQpAQCAtMCwwICsxLDU5NiBAQAorLyoqDQorICogQ29weXJpZ2h0IChjKSAyMDE1IENFQSBMSVNULg0KKyAqIA0KKyAqICBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQorICogIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KKyAqICB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KKyAqICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqLw0KK3BhY2thZ2Ugb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRlcHJlY2F0ZWRlbGVtZW50cy5pbnRlcm5hbC5pbXBsOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY29tbW9uLm5vdGlmeS5Ob3RpZmljYXRpb247DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FQ2xhc3M7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5JbnRlcm5hbEVPYmplY3Q7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5pbXBsLkVOb3RpZmljYXRpb25JbXBsOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuaW1wbC5NaW5pbWFsRU9iamVjdEltcGw7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kZXByZWNhdGVkZWxlbWVudHMuRGVwcmVjYXRlZGVsZW1lbnRzUGFja2FnZTsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UudW1sMi51bWwuQXNzb2NpYXRpb247DQoraW1wb3J0IG9yZy5lY2xpcHNlLnVtbDIudW1sLkRhdGFUeXBlOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS51bWwyLnVtbC5HZW5lcmFsaXphdGlvbjsNCitpbXBvcnQgb3JnLmVjbGlwc2UudW1sMi51bWwuSW5zdGFuY2VTcGVjaWZpY2F0aW9uOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS51bWwyLnVtbC5Qcm9wZXJ0eTsNCitpbXBvcnQgb3JnLmVjbGlwc2UudW1sMi51bWwuVmFsdWVTcGVjaWZpY2F0aW9uOw0KKw0KKy8qKg0KKyAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorICogQW4gaW1wbGVtZW50YXRpb24gb2YgdGhlIG1vZGVsIG9iamVjdCAnPGVtPjxiPkRlcHJlY2F0ZWQ8L2I+PC9lbT4nLg0KKyAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKyAqIDxwPg0KKyAqIFRoZSBmb2xsb3dpbmcgZmVhdHVyZXMgYXJlIGltcGxlbWVudGVkOg0KKyAqIDx1bD4NCisgKiAgIDxsaT57QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRlcHJlY2F0ZWRlbGVtZW50cy5pbnRlcm5hbC5pbXBsLkRlcHJlY2F0ZWRJbXBsI2dldEJhc2VfVmFsdWVTcGVjaWZpY2F0aW9uIDxlbT5CYXNlIFZhbHVlIFNwZWNpZmljYXRpb248L2VtPn08L2xpPg0KKyAqICAgPGxpPntAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGVwcmVjYXRlZGVsZW1lbnRzLmludGVybmFsLmltcGwuRGVwcmVjYXRlZEltcGwjZ2V0QmFzZV9Qcm9wZXJ0eSA8ZW0+QmFzZSBQcm9wZXJ0eTwvZW0+fTwvbGk+DQorICogICA8bGk+e0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kZXByZWNhdGVkZWxlbWVudHMuaW50ZXJuYWwuaW1wbC5EZXByZWNhdGVkSW1wbCNnZXRCYXNlX0luc3RhbmNlU3BlY2lmaWNhdGlvbiA8ZW0+QmFzZSBJbnN0YW5jZSBTcGVjaWZpY2F0aW9uPC9lbT59PC9saT4NCisgKiAgIDxsaT57QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRlcHJlY2F0ZWRlbGVtZW50cy5pbnRlcm5hbC5pbXBsLkRlcHJlY2F0ZWRJbXBsI2dldEJhc2VfQ2xhc3MgPGVtPkJhc2UgQ2xhc3M8L2VtPn08L2xpPg0KKyAqICAgPGxpPntAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGVwcmVjYXRlZGVsZW1lbnRzLmludGVybmFsLmltcGwuRGVwcmVjYXRlZEltcGwjZ2V0QmFzZV9Bc3NvY2lhdGlvbiA8ZW0+QmFzZSBBc3NvY2lhdGlvbjwvZW0+fTwvbGk+DQorICogICA8bGk+e0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kZXByZWNhdGVkZWxlbWVudHMuaW50ZXJuYWwuaW1wbC5EZXByZWNhdGVkSW1wbCNnZXREZXByZWNhdGVkUmVhc29uIDxlbT5EZXByZWNhdGVkIFJlYXNvbjwvZW0+fTwvbGk+DQorICogICA8bGk+e0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kZXByZWNhdGVkZWxlbWVudHMuaW50ZXJuYWwuaW1wbC5EZXByZWNhdGVkSW1wbCNnZXRCYXNlX0dlbmVyYWxpemF0aW9uIDxlbT5CYXNlIEdlbmVyYWxpemF0aW9uPC9lbT59PC9saT4NCisgKiAgIDxsaT57QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRlcHJlY2F0ZWRlbGVtZW50cy5pbnRlcm5hbC5pbXBsLkRlcHJlY2F0ZWRJbXBsI2dldEJhc2VfRGF0YVR5cGUgPGVtPkJhc2UgRGF0YSBUeXBlPC9lbT59PC9saT4NCisgKiA8L3VsPg0KKyAqIDwvcD4NCisgKg0KKyAqIEBnZW5lcmF0ZWQNCisgKi8NCitwdWJsaWMgY2xhc3MgRGVwcmVjYXRlZEltcGwgZXh0ZW5kcyBNaW5pbWFsRU9iamVjdEltcGwuQ29udGFpbmVyIGltcGxlbWVudHMgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRlcHJlY2F0ZWRlbGVtZW50cy5EZXByZWNhdGVkIHsNCisJLyoqDQorCSAqIFRoZSBjYWNoZWQgdmFsdWUgb2YgdGhlICd7QGxpbmsgI2dldEJhc2VfVmFsdWVTcGVjaWZpY2F0aW9uKCkgPGVtPkJhc2UgVmFsdWUgU3BlY2lmaWNhdGlvbjwvZW0+fScgcmVmZXJlbmNlLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHNlZSAjZ2V0QmFzZV9WYWx1ZVNwZWNpZmljYXRpb24oKQ0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqIEBvcmRlcmVkDQorCSAqLw0KKwlwcm90ZWN0ZWQgVmFsdWVTcGVjaWZpY2F0aW9uIGJhc2VfVmFsdWVTcGVjaWZpY2F0aW9uOw0KKw0KKwkvKioNCisJICogVGhlIGNhY2hlZCB2YWx1ZSBvZiB0aGUgJ3tAbGluayAjZ2V0QmFzZV9Qcm9wZXJ0eSgpIDxlbT5CYXNlIFByb3BlcnR5PC9lbT59JyByZWZlcmVuY2UuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAc2VlICNnZXRCYXNlX1Byb3BlcnR5KCkNCisJICogQGdlbmVyYXRlZA0KKwkgKiBAb3JkZXJlZA0KKwkgKi8NCisJcHJvdGVjdGVkIFByb3BlcnR5IGJhc2VfUHJvcGVydHk7DQorDQorCS8qKg0KKwkgKiBUaGUgY2FjaGVkIHZhbHVlIG9mIHRoZSAne0BsaW5rICNnZXRCYXNlX0luc3RhbmNlU3BlY2lmaWNhdGlvbigpIDxlbT5CYXNlIEluc3RhbmNlIFNwZWNpZmljYXRpb248L2VtPn0nIHJlZmVyZW5jZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBzZWUgI2dldEJhc2VfSW5zdGFuY2VTcGVjaWZpY2F0aW9uKCkNCisJICogQGdlbmVyYXRlZA0KKwkgKiBAb3JkZXJlZA0KKwkgKi8NCisJcHJvdGVjdGVkIEluc3RhbmNlU3BlY2lmaWNhdGlvbiBiYXNlX0luc3RhbmNlU3BlY2lmaWNhdGlvbjsNCisNCisJLyoqDQorCSAqIFRoZSBjYWNoZWQgdmFsdWUgb2YgdGhlICd7QGxpbmsgI2dldEJhc2VfQ2xhc3MoKSA8ZW0+QmFzZSBDbGFzczwvZW0+fScgcmVmZXJlbmNlLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHNlZSAjZ2V0QmFzZV9DbGFzcygpDQorCSAqIEBnZW5lcmF0ZWQNCisJICogQG9yZGVyZWQNCisJICovDQorCXByb3RlY3RlZCBvcmcuZWNsaXBzZS51bWwyLnVtbC5DbGFzcyBiYXNlX0NsYXNzOw0KKw0KKwkvKioNCisJICogVGhlIGNhY2hlZCB2YWx1ZSBvZiB0aGUgJ3tAbGluayAjZ2V0QmFzZV9Bc3NvY2lhdGlvbigpIDxlbT5CYXNlIEFzc29jaWF0aW9uPC9lbT59JyByZWZlcmVuY2UuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAc2VlICNnZXRCYXNlX0Fzc29jaWF0aW9uKCkNCisJICogQGdlbmVyYXRlZA0KKwkgKiBAb3JkZXJlZA0KKwkgKi8NCisJcHJvdGVjdGVkIEFzc29jaWF0aW9uIGJhc2VfQXNzb2NpYXRpb247DQorDQorCS8qKg0KKwkgKiBUaGUgZGVmYXVsdCB2YWx1ZSBvZiB0aGUgJ3tAbGluayAjZ2V0RGVwcmVjYXRlZFJlYXNvbigpIDxlbT5EZXByZWNhdGVkIFJlYXNvbjwvZW0+fScgYXR0cmlidXRlLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHNlZSAjZ2V0RGVwcmVjYXRlZFJlYXNvbigpDQorCSAqIEBnZW5lcmF0ZWQNCisJICogQG9yZGVyZWQNCisJICovDQorCXByb3RlY3RlZCBzdGF0aWMgZmluYWwgU3RyaW5nIERFUFJFQ0FURURfUkVBU09OX0VERUZBVUxUID0gbnVsbDsNCisNCisJLyoqDQorCSAqIFRoZSBjYWNoZWQgdmFsdWUgb2YgdGhlICd7QGxpbmsgI2dldERlcHJlY2F0ZWRSZWFzb24oKSA8ZW0+RGVwcmVjYXRlZCBSZWFzb248L2VtPn0nIGF0dHJpYnV0ZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBzZWUgI2dldERlcHJlY2F0ZWRSZWFzb24oKQ0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqIEBvcmRlcmVkDQorCSAqLw0KKwlwcm90ZWN0ZWQgU3RyaW5nIGRlcHJlY2F0ZWRSZWFzb24gPSBERVBSRUNBVEVEX1JFQVNPTl9FREVGQVVMVDsNCisNCisJLyoqDQorCSAqIFRoZSBjYWNoZWQgdmFsdWUgb2YgdGhlICd7QGxpbmsgI2dldEJhc2VfR2VuZXJhbGl6YXRpb24oKSA8ZW0+QmFzZSBHZW5lcmFsaXphdGlvbjwvZW0+fScgcmVmZXJlbmNlLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHNlZSAjZ2V0QmFzZV9HZW5lcmFsaXphdGlvbigpDQorCSAqIEBnZW5lcmF0ZWQNCisJICogQG9yZGVyZWQNCisJICovDQorCXByb3RlY3RlZCBHZW5lcmFsaXphdGlvbiBiYXNlX0dlbmVyYWxpemF0aW9uOw0KKw0KKwkvKioNCisJICogVGhlIGNhY2hlZCB2YWx1ZSBvZiB0aGUgJ3tAbGluayAjZ2V0QmFzZV9EYXRhVHlwZSgpIDxlbT5CYXNlIERhdGEgVHlwZTwvZW0+fScgcmVmZXJlbmNlLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHNlZSAjZ2V0QmFzZV9EYXRhVHlwZSgpDQorCSAqIEBnZW5lcmF0ZWQNCisJICogQG9yZGVyZWQNCisJICovDQorCXByb3RlY3RlZCBEYXRhVHlwZSBiYXNlX0RhdGFUeXBlOw0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXByb3RlY3RlZCBEZXByZWNhdGVkSW1wbCgpIHsNCisJCXN1cGVyKCk7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHJvdGVjdGVkIEVDbGFzcyBlU3RhdGljQ2xhc3MoKSB7DQorCQlyZXR1cm4gRGVwcmVjYXRlZGVsZW1lbnRzUGFja2FnZS5MaXRlcmFscy5ERVBSRUNBVEVEOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIFZhbHVlU3BlY2lmaWNhdGlvbiBnZXRCYXNlX1ZhbHVlU3BlY2lmaWNhdGlvbigpIHsNCisJCWlmIChiYXNlX1ZhbHVlU3BlY2lmaWNhdGlvbiAhPSBudWxsICYmIGJhc2VfVmFsdWVTcGVjaWZpY2F0aW9uLmVJc1Byb3h5KCkpIHsNCisJCQlJbnRlcm5hbEVPYmplY3Qgb2xkQmFzZV9WYWx1ZVNwZWNpZmljYXRpb24gPSAoSW50ZXJuYWxFT2JqZWN0KWJhc2VfVmFsdWVTcGVjaWZpY2F0aW9uOw0KKwkJCWJhc2VfVmFsdWVTcGVjaWZpY2F0aW9uID0gKFZhbHVlU3BlY2lmaWNhdGlvbillUmVzb2x2ZVByb3h5KG9sZEJhc2VfVmFsdWVTcGVjaWZpY2F0aW9uKTsNCisJCQlpZiAoYmFzZV9WYWx1ZVNwZWNpZmljYXRpb24gIT0gb2xkQmFzZV9WYWx1ZVNwZWNpZmljYXRpb24pIHsNCisJCQkJaWYgKGVOb3RpZmljYXRpb25SZXF1aXJlZCgpKQ0KKwkJCQkJZU5vdGlmeShuZXcgRU5vdGlmaWNhdGlvbkltcGwodGhpcywgTm90aWZpY2F0aW9uLlJFU09MVkUsIERlcHJlY2F0ZWRlbGVtZW50c1BhY2thZ2UuREVQUkVDQVRFRF9fQkFTRV9WQUxVRV9TUEVDSUZJQ0FUSU9OLCBvbGRCYXNlX1ZhbHVlU3BlY2lmaWNhdGlvbiwgYmFzZV9WYWx1ZVNwZWNpZmljYXRpb24pKTsNCisJCQl9DQorCQl9DQorCQlyZXR1cm4gYmFzZV9WYWx1ZVNwZWNpZmljYXRpb247DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgVmFsdWVTcGVjaWZpY2F0aW9uIGJhc2ljR2V0QmFzZV9WYWx1ZVNwZWNpZmljYXRpb24oKSB7DQorCQlyZXR1cm4gYmFzZV9WYWx1ZVNwZWNpZmljYXRpb247DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgdm9pZCBzZXRCYXNlX1ZhbHVlU3BlY2lmaWNhdGlvbihWYWx1ZVNwZWNpZmljYXRpb24gbmV3QmFzZV9WYWx1ZVNwZWNpZmljYXRpb24pIHsNCisJCVZhbHVlU3BlY2lmaWNhdGlvbiBvbGRCYXNlX1ZhbHVlU3BlY2lmaWNhdGlvbiA9IGJhc2VfVmFsdWVTcGVjaWZpY2F0aW9uOw0KKwkJYmFzZV9WYWx1ZVNwZWNpZmljYXRpb24gPSBuZXdCYXNlX1ZhbHVlU3BlY2lmaWNhdGlvbjsNCisJCWlmIChlTm90aWZpY2F0aW9uUmVxdWlyZWQoKSkNCisJCQllTm90aWZ5KG5ldyBFTm90aWZpY2F0aW9uSW1wbCh0aGlzLCBOb3RpZmljYXRpb24uU0VULCBEZXByZWNhdGVkZWxlbWVudHNQYWNrYWdlLkRFUFJFQ0FURURfX0JBU0VfVkFMVUVfU1BFQ0lGSUNBVElPTiwgb2xkQmFzZV9WYWx1ZVNwZWNpZmljYXRpb24sIGJhc2VfVmFsdWVTcGVjaWZpY2F0aW9uKSk7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgUHJvcGVydHkgZ2V0QmFzZV9Qcm9wZXJ0eSgpIHsNCisJCWlmIChiYXNlX1Byb3BlcnR5ICE9IG51bGwgJiYgYmFzZV9Qcm9wZXJ0eS5lSXNQcm94eSgpKSB7DQorCQkJSW50ZXJuYWxFT2JqZWN0IG9sZEJhc2VfUHJvcGVydHkgPSAoSW50ZXJuYWxFT2JqZWN0KWJhc2VfUHJvcGVydHk7DQorCQkJYmFzZV9Qcm9wZXJ0eSA9IChQcm9wZXJ0eSllUmVzb2x2ZVByb3h5KG9sZEJhc2VfUHJvcGVydHkpOw0KKwkJCWlmIChiYXNlX1Byb3BlcnR5ICE9IG9sZEJhc2VfUHJvcGVydHkpIHsNCisJCQkJaWYgKGVOb3RpZmljYXRpb25SZXF1aXJlZCgpKQ0KKwkJCQkJZU5vdGlmeShuZXcgRU5vdGlmaWNhdGlvbkltcGwodGhpcywgTm90aWZpY2F0aW9uLlJFU09MVkUsIERlcHJlY2F0ZWRlbGVtZW50c1BhY2thZ2UuREVQUkVDQVRFRF9fQkFTRV9QUk9QRVJUWSwgb2xkQmFzZV9Qcm9wZXJ0eSwgYmFzZV9Qcm9wZXJ0eSkpOw0KKwkJCX0NCisJCX0NCisJCXJldHVybiBiYXNlX1Byb3BlcnR5Ow0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIFByb3BlcnR5IGJhc2ljR2V0QmFzZV9Qcm9wZXJ0eSgpIHsNCisJCXJldHVybiBiYXNlX1Byb3BlcnR5Ow0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIHZvaWQgc2V0QmFzZV9Qcm9wZXJ0eShQcm9wZXJ0eSBuZXdCYXNlX1Byb3BlcnR5KSB7DQorCQlQcm9wZXJ0eSBvbGRCYXNlX1Byb3BlcnR5ID0gYmFzZV9Qcm9wZXJ0eTsNCisJCWJhc2VfUHJvcGVydHkgPSBuZXdCYXNlX1Byb3BlcnR5Ow0KKwkJaWYgKGVOb3RpZmljYXRpb25SZXF1aXJlZCgpKQ0KKwkJCWVOb3RpZnkobmV3IEVOb3RpZmljYXRpb25JbXBsKHRoaXMsIE5vdGlmaWNhdGlvbi5TRVQsIERlcHJlY2F0ZWRlbGVtZW50c1BhY2thZ2UuREVQUkVDQVRFRF9fQkFTRV9QUk9QRVJUWSwgb2xkQmFzZV9Qcm9wZXJ0eSwgYmFzZV9Qcm9wZXJ0eSkpOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIEluc3RhbmNlU3BlY2lmaWNhdGlvbiBnZXRCYXNlX0luc3RhbmNlU3BlY2lmaWNhdGlvbigpIHsNCisJCWlmIChiYXNlX0luc3RhbmNlU3BlY2lmaWNhdGlvbiAhPSBudWxsICYmIGJhc2VfSW5zdGFuY2VTcGVjaWZpY2F0aW9uLmVJc1Byb3h5KCkpIHsNCisJCQlJbnRlcm5hbEVPYmplY3Qgb2xkQmFzZV9JbnN0YW5jZVNwZWNpZmljYXRpb24gPSAoSW50ZXJuYWxFT2JqZWN0KWJhc2VfSW5zdGFuY2VTcGVjaWZpY2F0aW9uOw0KKwkJCWJhc2VfSW5zdGFuY2VTcGVjaWZpY2F0aW9uID0gKEluc3RhbmNlU3BlY2lmaWNhdGlvbillUmVzb2x2ZVByb3h5KG9sZEJhc2VfSW5zdGFuY2VTcGVjaWZpY2F0aW9uKTsNCisJCQlpZiAoYmFzZV9JbnN0YW5jZVNwZWNpZmljYXRpb24gIT0gb2xkQmFzZV9JbnN0YW5jZVNwZWNpZmljYXRpb24pIHsNCisJCQkJaWYgKGVOb3RpZmljYXRpb25SZXF1aXJlZCgpKQ0KKwkJCQkJZU5vdGlmeShuZXcgRU5vdGlmaWNhdGlvbkltcGwodGhpcywgTm90aWZpY2F0aW9uLlJFU09MVkUsIERlcHJlY2F0ZWRlbGVtZW50c1BhY2thZ2UuREVQUkVDQVRFRF9fQkFTRV9JTlNUQU5DRV9TUEVDSUZJQ0FUSU9OLCBvbGRCYXNlX0luc3RhbmNlU3BlY2lmaWNhdGlvbiwgYmFzZV9JbnN0YW5jZVNwZWNpZmljYXRpb24pKTsNCisJCQl9DQorCQl9DQorCQlyZXR1cm4gYmFzZV9JbnN0YW5jZVNwZWNpZmljYXRpb247DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgSW5zdGFuY2VTcGVjaWZpY2F0aW9uIGJhc2ljR2V0QmFzZV9JbnN0YW5jZVNwZWNpZmljYXRpb24oKSB7DQorCQlyZXR1cm4gYmFzZV9JbnN0YW5jZVNwZWNpZmljYXRpb247DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgdm9pZCBzZXRCYXNlX0luc3RhbmNlU3BlY2lmaWNhdGlvbihJbnN0YW5jZVNwZWNpZmljYXRpb24gbmV3QmFzZV9JbnN0YW5jZVNwZWNpZmljYXRpb24pIHsNCisJCUluc3RhbmNlU3BlY2lmaWNhdGlvbiBvbGRCYXNlX0luc3RhbmNlU3BlY2lmaWNhdGlvbiA9IGJhc2VfSW5zdGFuY2VTcGVjaWZpY2F0aW9uOw0KKwkJYmFzZV9JbnN0YW5jZVNwZWNpZmljYXRpb24gPSBuZXdCYXNlX0luc3RhbmNlU3BlY2lmaWNhdGlvbjsNCisJCWlmIChlTm90aWZpY2F0aW9uUmVxdWlyZWQoKSkNCisJCQllTm90aWZ5KG5ldyBFTm90aWZpY2F0aW9uSW1wbCh0aGlzLCBOb3RpZmljYXRpb24uU0VULCBEZXByZWNhdGVkZWxlbWVudHNQYWNrYWdlLkRFUFJFQ0FURURfX0JBU0VfSU5TVEFOQ0VfU1BFQ0lGSUNBVElPTiwgb2xkQmFzZV9JbnN0YW5jZVNwZWNpZmljYXRpb24sIGJhc2VfSW5zdGFuY2VTcGVjaWZpY2F0aW9uKSk7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgb3JnLmVjbGlwc2UudW1sMi51bWwuQ2xhc3MgZ2V0QmFzZV9DbGFzcygpIHsNCisJCWlmIChiYXNlX0NsYXNzICE9IG51bGwgJiYgYmFzZV9DbGFzcy5lSXNQcm94eSgpKSB7DQorCQkJSW50ZXJuYWxFT2JqZWN0IG9sZEJhc2VfQ2xhc3MgPSAoSW50ZXJuYWxFT2JqZWN0KWJhc2VfQ2xhc3M7DQorCQkJYmFzZV9DbGFzcyA9IChvcmcuZWNsaXBzZS51bWwyLnVtbC5DbGFzcyllUmVzb2x2ZVByb3h5KG9sZEJhc2VfQ2xhc3MpOw0KKwkJCWlmIChiYXNlX0NsYXNzICE9IG9sZEJhc2VfQ2xhc3MpIHsNCisJCQkJaWYgKGVOb3RpZmljYXRpb25SZXF1aXJlZCgpKQ0KKwkJCQkJZU5vdGlmeShuZXcgRU5vdGlmaWNhdGlvbkltcGwodGhpcywgTm90aWZpY2F0aW9uLlJFU09MVkUsIERlcHJlY2F0ZWRlbGVtZW50c1BhY2thZ2UuREVQUkVDQVRFRF9fQkFTRV9DTEFTUywgb2xkQmFzZV9DbGFzcywgYmFzZV9DbGFzcykpOw0KKwkJCX0NCisJCX0NCisJCXJldHVybiBiYXNlX0NsYXNzOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIG9yZy5lY2xpcHNlLnVtbDIudW1sLkNsYXNzIGJhc2ljR2V0QmFzZV9DbGFzcygpIHsNCisJCXJldHVybiBiYXNlX0NsYXNzOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIHZvaWQgc2V0QmFzZV9DbGFzcyhvcmcuZWNsaXBzZS51bWwyLnVtbC5DbGFzcyBuZXdCYXNlX0NsYXNzKSB7DQorCQlvcmcuZWNsaXBzZS51bWwyLnVtbC5DbGFzcyBvbGRCYXNlX0NsYXNzID0gYmFzZV9DbGFzczsNCisJCWJhc2VfQ2xhc3MgPSBuZXdCYXNlX0NsYXNzOw0KKwkJaWYgKGVOb3RpZmljYXRpb25SZXF1aXJlZCgpKQ0KKwkJCWVOb3RpZnkobmV3IEVOb3RpZmljYXRpb25JbXBsKHRoaXMsIE5vdGlmaWNhdGlvbi5TRVQsIERlcHJlY2F0ZWRlbGVtZW50c1BhY2thZ2UuREVQUkVDQVRFRF9fQkFTRV9DTEFTUywgb2xkQmFzZV9DbGFzcywgYmFzZV9DbGFzcykpOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIEFzc29jaWF0aW9uIGdldEJhc2VfQXNzb2NpYXRpb24oKSB7DQorCQlpZiAoYmFzZV9Bc3NvY2lhdGlvbiAhPSBudWxsICYmIGJhc2VfQXNzb2NpYXRpb24uZUlzUHJveHkoKSkgew0KKwkJCUludGVybmFsRU9iamVjdCBvbGRCYXNlX0Fzc29jaWF0aW9uID0gKEludGVybmFsRU9iamVjdCliYXNlX0Fzc29jaWF0aW9uOw0KKwkJCWJhc2VfQXNzb2NpYXRpb24gPSAoQXNzb2NpYXRpb24pZVJlc29sdmVQcm94eShvbGRCYXNlX0Fzc29jaWF0aW9uKTsNCisJCQlpZiAoYmFzZV9Bc3NvY2lhdGlvbiAhPSBvbGRCYXNlX0Fzc29jaWF0aW9uKSB7DQorCQkJCWlmIChlTm90aWZpY2F0aW9uUmVxdWlyZWQoKSkNCisJCQkJCWVOb3RpZnkobmV3IEVOb3RpZmljYXRpb25JbXBsKHRoaXMsIE5vdGlmaWNhdGlvbi5SRVNPTFZFLCBEZXByZWNhdGVkZWxlbWVudHNQYWNrYWdlLkRFUFJFQ0FURURfX0JBU0VfQVNTT0NJQVRJT04sIG9sZEJhc2VfQXNzb2NpYXRpb24sIGJhc2VfQXNzb2NpYXRpb24pKTsNCisJCQl9DQorCQl9DQorCQlyZXR1cm4gYmFzZV9Bc3NvY2lhdGlvbjsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBBc3NvY2lhdGlvbiBiYXNpY0dldEJhc2VfQXNzb2NpYXRpb24oKSB7DQorCQlyZXR1cm4gYmFzZV9Bc3NvY2lhdGlvbjsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyB2b2lkIHNldEJhc2VfQXNzb2NpYXRpb24oQXNzb2NpYXRpb24gbmV3QmFzZV9Bc3NvY2lhdGlvbikgew0KKwkJQXNzb2NpYXRpb24gb2xkQmFzZV9Bc3NvY2lhdGlvbiA9IGJhc2VfQXNzb2NpYXRpb247DQorCQliYXNlX0Fzc29jaWF0aW9uID0gbmV3QmFzZV9Bc3NvY2lhdGlvbjsNCisJCWlmIChlTm90aWZpY2F0aW9uUmVxdWlyZWQoKSkNCisJCQllTm90aWZ5KG5ldyBFTm90aWZpY2F0aW9uSW1wbCh0aGlzLCBOb3RpZmljYXRpb24uU0VULCBEZXByZWNhdGVkZWxlbWVudHNQYWNrYWdlLkRFUFJFQ0FURURfX0JBU0VfQVNTT0NJQVRJT04sIG9sZEJhc2VfQXNzb2NpYXRpb24sIGJhc2VfQXNzb2NpYXRpb24pKTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBTdHJpbmcgZ2V0RGVwcmVjYXRlZFJlYXNvbigpIHsNCisJCXJldHVybiBkZXByZWNhdGVkUmVhc29uOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIHZvaWQgc2V0RGVwcmVjYXRlZFJlYXNvbihTdHJpbmcgbmV3RGVwcmVjYXRlZFJlYXNvbikgew0KKwkJU3RyaW5nIG9sZERlcHJlY2F0ZWRSZWFzb24gPSBkZXByZWNhdGVkUmVhc29uOw0KKwkJZGVwcmVjYXRlZFJlYXNvbiA9IG5ld0RlcHJlY2F0ZWRSZWFzb247DQorCQlpZiAoZU5vdGlmaWNhdGlvblJlcXVpcmVkKCkpDQorCQkJZU5vdGlmeShuZXcgRU5vdGlmaWNhdGlvbkltcGwodGhpcywgTm90aWZpY2F0aW9uLlNFVCwgRGVwcmVjYXRlZGVsZW1lbnRzUGFja2FnZS5ERVBSRUNBVEVEX19ERVBSRUNBVEVEX1JFQVNPTiwgb2xkRGVwcmVjYXRlZFJlYXNvbiwgZGVwcmVjYXRlZFJlYXNvbikpOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIEdlbmVyYWxpemF0aW9uIGdldEJhc2VfR2VuZXJhbGl6YXRpb24oKSB7DQorCQlpZiAoYmFzZV9HZW5lcmFsaXphdGlvbiAhPSBudWxsICYmIGJhc2VfR2VuZXJhbGl6YXRpb24uZUlzUHJveHkoKSkgew0KKwkJCUludGVybmFsRU9iamVjdCBvbGRCYXNlX0dlbmVyYWxpemF0aW9uID0gKEludGVybmFsRU9iamVjdCliYXNlX0dlbmVyYWxpemF0aW9uOw0KKwkJCWJhc2VfR2VuZXJhbGl6YXRpb24gPSAoR2VuZXJhbGl6YXRpb24pZVJlc29sdmVQcm94eShvbGRCYXNlX0dlbmVyYWxpemF0aW9uKTsNCisJCQlpZiAoYmFzZV9HZW5lcmFsaXphdGlvbiAhPSBvbGRCYXNlX0dlbmVyYWxpemF0aW9uKSB7DQorCQkJCWlmIChlTm90aWZpY2F0aW9uUmVxdWlyZWQoKSkNCisJCQkJCWVOb3RpZnkobmV3IEVOb3RpZmljYXRpb25JbXBsKHRoaXMsIE5vdGlmaWNhdGlvbi5SRVNPTFZFLCBEZXByZWNhdGVkZWxlbWVudHNQYWNrYWdlLkRFUFJFQ0FURURfX0JBU0VfR0VORVJBTElaQVRJT04sIG9sZEJhc2VfR2VuZXJhbGl6YXRpb24sIGJhc2VfR2VuZXJhbGl6YXRpb24pKTsNCisJCQl9DQorCQl9DQorCQlyZXR1cm4gYmFzZV9HZW5lcmFsaXphdGlvbjsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBHZW5lcmFsaXphdGlvbiBiYXNpY0dldEJhc2VfR2VuZXJhbGl6YXRpb24oKSB7DQorCQlyZXR1cm4gYmFzZV9HZW5lcmFsaXphdGlvbjsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyB2b2lkIHNldEJhc2VfR2VuZXJhbGl6YXRpb24oR2VuZXJhbGl6YXRpb24gbmV3QmFzZV9HZW5lcmFsaXphdGlvbikgew0KKwkJR2VuZXJhbGl6YXRpb24gb2xkQmFzZV9HZW5lcmFsaXphdGlvbiA9IGJhc2VfR2VuZXJhbGl6YXRpb247DQorCQliYXNlX0dlbmVyYWxpemF0aW9uID0gbmV3QmFzZV9HZW5lcmFsaXphdGlvbjsNCisJCWlmIChlTm90aWZpY2F0aW9uUmVxdWlyZWQoKSkNCisJCQllTm90aWZ5KG5ldyBFTm90aWZpY2F0aW9uSW1wbCh0aGlzLCBOb3RpZmljYXRpb24uU0VULCBEZXByZWNhdGVkZWxlbWVudHNQYWNrYWdlLkRFUFJFQ0FURURfX0JBU0VfR0VORVJBTElaQVRJT04sIG9sZEJhc2VfR2VuZXJhbGl6YXRpb24sIGJhc2VfR2VuZXJhbGl6YXRpb24pKTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBEYXRhVHlwZSBnZXRCYXNlX0RhdGFUeXBlKCkgew0KKwkJaWYgKGJhc2VfRGF0YVR5cGUgIT0gbnVsbCAmJiBiYXNlX0RhdGFUeXBlLmVJc1Byb3h5KCkpIHsNCisJCQlJbnRlcm5hbEVPYmplY3Qgb2xkQmFzZV9EYXRhVHlwZSA9IChJbnRlcm5hbEVPYmplY3QpYmFzZV9EYXRhVHlwZTsNCisJCQliYXNlX0RhdGFUeXBlID0gKERhdGFUeXBlKWVSZXNvbHZlUHJveHkob2xkQmFzZV9EYXRhVHlwZSk7DQorCQkJaWYgKGJhc2VfRGF0YVR5cGUgIT0gb2xkQmFzZV9EYXRhVHlwZSkgew0KKwkJCQlpZiAoZU5vdGlmaWNhdGlvblJlcXVpcmVkKCkpDQorCQkJCQllTm90aWZ5KG5ldyBFTm90aWZpY2F0aW9uSW1wbCh0aGlzLCBOb3RpZmljYXRpb24uUkVTT0xWRSwgRGVwcmVjYXRlZGVsZW1lbnRzUGFja2FnZS5ERVBSRUNBVEVEX19CQVNFX0RBVEFfVFlQRSwgb2xkQmFzZV9EYXRhVHlwZSwgYmFzZV9EYXRhVHlwZSkpOw0KKwkJCX0NCisJCX0NCisJCXJldHVybiBiYXNlX0RhdGFUeXBlOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIERhdGFUeXBlIGJhc2ljR2V0QmFzZV9EYXRhVHlwZSgpIHsNCisJCXJldHVybiBiYXNlX0RhdGFUeXBlOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIHZvaWQgc2V0QmFzZV9EYXRhVHlwZShEYXRhVHlwZSBuZXdCYXNlX0RhdGFUeXBlKSB7DQorCQlEYXRhVHlwZSBvbGRCYXNlX0RhdGFUeXBlID0gYmFzZV9EYXRhVHlwZTsNCisJCWJhc2VfRGF0YVR5cGUgPSBuZXdCYXNlX0RhdGFUeXBlOw0KKwkJaWYgKGVOb3RpZmljYXRpb25SZXF1aXJlZCgpKQ0KKwkJCWVOb3RpZnkobmV3IEVOb3RpZmljYXRpb25JbXBsKHRoaXMsIE5vdGlmaWNhdGlvbi5TRVQsIERlcHJlY2F0ZWRlbGVtZW50c1BhY2thZ2UuREVQUkVDQVRFRF9fQkFTRV9EQVRBX1RZUEUsIG9sZEJhc2VfRGF0YVR5cGUsIGJhc2VfRGF0YVR5cGUpKTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgT2JqZWN0IGVHZXQoaW50IGZlYXR1cmVJRCwgYm9vbGVhbiByZXNvbHZlLCBib29sZWFuIGNvcmVUeXBlKSB7DQorCQlzd2l0Y2ggKGZlYXR1cmVJRCkgew0KKwkJCWNhc2UgRGVwcmVjYXRlZGVsZW1lbnRzUGFja2FnZS5ERVBSRUNBVEVEX19CQVNFX1ZBTFVFX1NQRUNJRklDQVRJT046DQorCQkJCWlmIChyZXNvbHZlKSByZXR1cm4gZ2V0QmFzZV9WYWx1ZVNwZWNpZmljYXRpb24oKTsNCisJCQkJcmV0dXJuIGJhc2ljR2V0QmFzZV9WYWx1ZVNwZWNpZmljYXRpb24oKTsNCisJCQljYXNlIERlcHJlY2F0ZWRlbGVtZW50c1BhY2thZ2UuREVQUkVDQVRFRF9fQkFTRV9QUk9QRVJUWToNCisJCQkJaWYgKHJlc29sdmUpIHJldHVybiBnZXRCYXNlX1Byb3BlcnR5KCk7DQorCQkJCXJldHVybiBiYXNpY0dldEJhc2VfUHJvcGVydHkoKTsNCisJCQljYXNlIERlcHJlY2F0ZWRlbGVtZW50c1BhY2thZ2UuREVQUkVDQVRFRF9fQkFTRV9JTlNUQU5DRV9TUEVDSUZJQ0FUSU9OOg0KKwkJCQlpZiAocmVzb2x2ZSkgcmV0dXJuIGdldEJhc2VfSW5zdGFuY2VTcGVjaWZpY2F0aW9uKCk7DQorCQkJCXJldHVybiBiYXNpY0dldEJhc2VfSW5zdGFuY2VTcGVjaWZpY2F0aW9uKCk7DQorCQkJY2FzZSBEZXByZWNhdGVkZWxlbWVudHNQYWNrYWdlLkRFUFJFQ0FURURfX0JBU0VfQ0xBU1M6DQorCQkJCWlmIChyZXNvbHZlKSByZXR1cm4gZ2V0QmFzZV9DbGFzcygpOw0KKwkJCQlyZXR1cm4gYmFzaWNHZXRCYXNlX0NsYXNzKCk7DQorCQkJY2FzZSBEZXByZWNhdGVkZWxlbWVudHNQYWNrYWdlLkRFUFJFQ0FURURfX0JBU0VfQVNTT0NJQVRJT046DQorCQkJCWlmIChyZXNvbHZlKSByZXR1cm4gZ2V0QmFzZV9Bc3NvY2lhdGlvbigpOw0KKwkJCQlyZXR1cm4gYmFzaWNHZXRCYXNlX0Fzc29jaWF0aW9uKCk7DQorCQkJY2FzZSBEZXByZWNhdGVkZWxlbWVudHNQYWNrYWdlLkRFUFJFQ0FURURfX0RFUFJFQ0FURURfUkVBU09OOg0KKwkJCQlyZXR1cm4gZ2V0RGVwcmVjYXRlZFJlYXNvbigpOw0KKwkJCWNhc2UgRGVwcmVjYXRlZGVsZW1lbnRzUGFja2FnZS5ERVBSRUNBVEVEX19CQVNFX0dFTkVSQUxJWkFUSU9OOg0KKwkJCQlpZiAocmVzb2x2ZSkgcmV0dXJuIGdldEJhc2VfR2VuZXJhbGl6YXRpb24oKTsNCisJCQkJcmV0dXJuIGJhc2ljR2V0QmFzZV9HZW5lcmFsaXphdGlvbigpOw0KKwkJCWNhc2UgRGVwcmVjYXRlZGVsZW1lbnRzUGFja2FnZS5ERVBSRUNBVEVEX19CQVNFX0RBVEFfVFlQRToNCisJCQkJaWYgKHJlc29sdmUpIHJldHVybiBnZXRCYXNlX0RhdGFUeXBlKCk7DQorCQkJCXJldHVybiBiYXNpY0dldEJhc2VfRGF0YVR5cGUoKTsNCisJCX0NCisJCXJldHVybiBzdXBlci5lR2V0KGZlYXR1cmVJRCwgcmVzb2x2ZSwgY29yZVR5cGUpOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXB1YmxpYyB2b2lkIGVTZXQoaW50IGZlYXR1cmVJRCwgT2JqZWN0IG5ld1ZhbHVlKSB7DQorCQlzd2l0Y2ggKGZlYXR1cmVJRCkgew0KKwkJCWNhc2UgRGVwcmVjYXRlZGVsZW1lbnRzUGFja2FnZS5ERVBSRUNBVEVEX19CQVNFX1ZBTFVFX1NQRUNJRklDQVRJT046DQorCQkJCXNldEJhc2VfVmFsdWVTcGVjaWZpY2F0aW9uKChWYWx1ZVNwZWNpZmljYXRpb24pbmV3VmFsdWUpOw0KKwkJCQlyZXR1cm47DQorCQkJY2FzZSBEZXByZWNhdGVkZWxlbWVudHNQYWNrYWdlLkRFUFJFQ0FURURfX0JBU0VfUFJPUEVSVFk6DQorCQkJCXNldEJhc2VfUHJvcGVydHkoKFByb3BlcnR5KW5ld1ZhbHVlKTsNCisJCQkJcmV0dXJuOw0KKwkJCWNhc2UgRGVwcmVjYXRlZGVsZW1lbnRzUGFja2FnZS5ERVBSRUNBVEVEX19CQVNFX0lOU1RBTkNFX1NQRUNJRklDQVRJT046DQorCQkJCXNldEJhc2VfSW5zdGFuY2VTcGVjaWZpY2F0aW9uKChJbnN0YW5jZVNwZWNpZmljYXRpb24pbmV3VmFsdWUpOw0KKwkJCQlyZXR1cm47DQorCQkJY2FzZSBEZXByZWNhdGVkZWxlbWVudHNQYWNrYWdlLkRFUFJFQ0FURURfX0JBU0VfQ0xBU1M6DQorCQkJCXNldEJhc2VfQ2xhc3MoKG9yZy5lY2xpcHNlLnVtbDIudW1sLkNsYXNzKW5ld1ZhbHVlKTsNCisJCQkJcmV0dXJuOw0KKwkJCWNhc2UgRGVwcmVjYXRlZGVsZW1lbnRzUGFja2FnZS5ERVBSRUNBVEVEX19CQVNFX0FTU09DSUFUSU9OOg0KKwkJCQlzZXRCYXNlX0Fzc29jaWF0aW9uKChBc3NvY2lhdGlvbiluZXdWYWx1ZSk7DQorCQkJCXJldHVybjsNCisJCQljYXNlIERlcHJlY2F0ZWRlbGVtZW50c1BhY2thZ2UuREVQUkVDQVRFRF9fREVQUkVDQVRFRF9SRUFTT046DQorCQkJCXNldERlcHJlY2F0ZWRSZWFzb24oKFN0cmluZyluZXdWYWx1ZSk7DQorCQkJCXJldHVybjsNCisJCQljYXNlIERlcHJlY2F0ZWRlbGVtZW50c1BhY2thZ2UuREVQUkVDQVRFRF9fQkFTRV9HRU5FUkFMSVpBVElPTjoNCisJCQkJc2V0QmFzZV9HZW5lcmFsaXphdGlvbigoR2VuZXJhbGl6YXRpb24pbmV3VmFsdWUpOw0KKwkJCQlyZXR1cm47DQorCQkJY2FzZSBEZXByZWNhdGVkZWxlbWVudHNQYWNrYWdlLkRFUFJFQ0FURURfX0JBU0VfREFUQV9UWVBFOg0KKwkJCQlzZXRCYXNlX0RhdGFUeXBlKChEYXRhVHlwZSluZXdWYWx1ZSk7DQorCQkJCXJldHVybjsNCisJCX0NCisJCXN1cGVyLmVTZXQoZmVhdHVyZUlELCBuZXdWYWx1ZSk7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIHZvaWQgZVVuc2V0KGludCBmZWF0dXJlSUQpIHsNCisJCXN3aXRjaCAoZmVhdHVyZUlEKSB7DQorCQkJY2FzZSBEZXByZWNhdGVkZWxlbWVudHNQYWNrYWdlLkRFUFJFQ0FURURfX0JBU0VfVkFMVUVfU1BFQ0lGSUNBVElPTjoNCisJCQkJc2V0QmFzZV9WYWx1ZVNwZWNpZmljYXRpb24oKFZhbHVlU3BlY2lmaWNhdGlvbiludWxsKTsNCisJCQkJcmV0dXJuOw0KKwkJCWNhc2UgRGVwcmVjYXRlZGVsZW1lbnRzUGFja2FnZS5ERVBSRUNBVEVEX19CQVNFX1BST1BFUlRZOg0KKwkJCQlzZXRCYXNlX1Byb3BlcnR5KChQcm9wZXJ0eSludWxsKTsNCisJCQkJcmV0dXJuOw0KKwkJCWNhc2UgRGVwcmVjYXRlZGVsZW1lbnRzUGFja2FnZS5ERVBSRUNBVEVEX19CQVNFX0lOU1RBTkNFX1NQRUNJRklDQVRJT046DQorCQkJCXNldEJhc2VfSW5zdGFuY2VTcGVjaWZpY2F0aW9uKChJbnN0YW5jZVNwZWNpZmljYXRpb24pbnVsbCk7DQorCQkJCXJldHVybjsNCisJCQljYXNlIERlcHJlY2F0ZWRlbGVtZW50c1BhY2thZ2UuREVQUkVDQVRFRF9fQkFTRV9DTEFTUzoNCisJCQkJc2V0QmFzZV9DbGFzcygob3JnLmVjbGlwc2UudW1sMi51bWwuQ2xhc3MpbnVsbCk7DQorCQkJCXJldHVybjsNCisJCQljYXNlIERlcHJlY2F0ZWRlbGVtZW50c1BhY2thZ2UuREVQUkVDQVRFRF9fQkFTRV9BU1NPQ0lBVElPTjoNCisJCQkJc2V0QmFzZV9Bc3NvY2lhdGlvbigoQXNzb2NpYXRpb24pbnVsbCk7DQorCQkJCXJldHVybjsNCisJCQljYXNlIERlcHJlY2F0ZWRlbGVtZW50c1BhY2thZ2UuREVQUkVDQVRFRF9fREVQUkVDQVRFRF9SRUFTT046DQorCQkJCXNldERlcHJlY2F0ZWRSZWFzb24oREVQUkVDQVRFRF9SRUFTT05fRURFRkFVTFQpOw0KKwkJCQlyZXR1cm47DQorCQkJY2FzZSBEZXByZWNhdGVkZWxlbWVudHNQYWNrYWdlLkRFUFJFQ0FURURfX0JBU0VfR0VORVJBTElaQVRJT046DQorCQkJCXNldEJhc2VfR2VuZXJhbGl6YXRpb24oKEdlbmVyYWxpemF0aW9uKW51bGwpOw0KKwkJCQlyZXR1cm47DQorCQkJY2FzZSBEZXByZWNhdGVkZWxlbWVudHNQYWNrYWdlLkRFUFJFQ0FURURfX0JBU0VfREFUQV9UWVBFOg0KKwkJCQlzZXRCYXNlX0RhdGFUeXBlKChEYXRhVHlwZSludWxsKTsNCisJCQkJcmV0dXJuOw0KKwkJfQ0KKwkJc3VwZXIuZVVuc2V0KGZlYXR1cmVJRCk7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIGJvb2xlYW4gZUlzU2V0KGludCBmZWF0dXJlSUQpIHsNCisJCXN3aXRjaCAoZmVhdHVyZUlEKSB7DQorCQkJY2FzZSBEZXByZWNhdGVkZWxlbWVudHNQYWNrYWdlLkRFUFJFQ0FURURfX0JBU0VfVkFMVUVfU1BFQ0lGSUNBVElPTjoNCisJCQkJcmV0dXJuIGJhc2VfVmFsdWVTcGVjaWZpY2F0aW9uICE9IG51bGw7DQorCQkJY2FzZSBEZXByZWNhdGVkZWxlbWVudHNQYWNrYWdlLkRFUFJFQ0FURURfX0JBU0VfUFJPUEVSVFk6DQorCQkJCXJldHVybiBiYXNlX1Byb3BlcnR5ICE9IG51bGw7DQorCQkJY2FzZSBEZXByZWNhdGVkZWxlbWVudHNQYWNrYWdlLkRFUFJFQ0FURURfX0JBU0VfSU5TVEFOQ0VfU1BFQ0lGSUNBVElPTjoNCisJCQkJcmV0dXJuIGJhc2VfSW5zdGFuY2VTcGVjaWZpY2F0aW9uICE9IG51bGw7DQorCQkJY2FzZSBEZXByZWNhdGVkZWxlbWVudHNQYWNrYWdlLkRFUFJFQ0FURURfX0JBU0VfQ0xBU1M6DQorCQkJCXJldHVybiBiYXNlX0NsYXNzICE9IG51bGw7DQorCQkJY2FzZSBEZXByZWNhdGVkZWxlbWVudHNQYWNrYWdlLkRFUFJFQ0FURURfX0JBU0VfQVNTT0NJQVRJT046DQorCQkJCXJldHVybiBiYXNlX0Fzc29jaWF0aW9uICE9IG51bGw7DQorCQkJY2FzZSBEZXByZWNhdGVkZWxlbWVudHNQYWNrYWdlLkRFUFJFQ0FURURfX0RFUFJFQ0FURURfUkVBU09OOg0KKwkJCQlyZXR1cm4gREVQUkVDQVRFRF9SRUFTT05fRURFRkFVTFQgPT0gbnVsbCA/IGRlcHJlY2F0ZWRSZWFzb24gIT0gbnVsbCA6ICFERVBSRUNBVEVEX1JFQVNPTl9FREVGQVVMVC5lcXVhbHMoZGVwcmVjYXRlZFJlYXNvbik7DQorCQkJY2FzZSBEZXByZWNhdGVkZWxlbWVudHNQYWNrYWdlLkRFUFJFQ0FURURfX0JBU0VfR0VORVJBTElaQVRJT046DQorCQkJCXJldHVybiBiYXNlX0dlbmVyYWxpemF0aW9uICE9IG51bGw7DQorCQkJY2FzZSBEZXByZWNhdGVkZWxlbWVudHNQYWNrYWdlLkRFUFJFQ0FURURfX0JBU0VfREFUQV9UWVBFOg0KKwkJCQlyZXR1cm4gYmFzZV9EYXRhVHlwZSAhPSBudWxsOw0KKwkJfQ0KKwkJcmV0dXJuIHN1cGVyLmVJc1NldChmZWF0dXJlSUQpOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXB1YmxpYyBTdHJpbmcgdG9TdHJpbmcoKSB7DQorCQlpZiAoZUlzUHJveHkoKSkgcmV0dXJuIHN1cGVyLnRvU3RyaW5nKCk7DQorDQorCQlTdHJpbmdCdWZmZXIgcmVzdWx0ID0gbmV3IFN0cmluZ0J1ZmZlcihzdXBlci50b1N0cmluZygpKTsNCisJCXJlc3VsdC5hcHBlbmQoIiAoZGVwcmVjYXRlZFJlYXNvbjogIik7IC8vJE5PTi1OTFMtMSQNCisJCXJlc3VsdC5hcHBlbmQoZGVwcmVjYXRlZFJlYXNvbik7DQorCQlyZXN1bHQuYXBwZW5kKCcpJyk7DQorCQlyZXR1cm4gcmVzdWx0LnRvU3RyaW5nKCk7DQorCX0NCisNCit9IC8vRGVwcmVjYXRlZEltcGwNCmRpZmYgLS1naXQgYS9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9kZXByZWNhdGVkZWxlbWVudHMvaW50ZXJuYWwvaW1wbC9EZXByZWNhdGVkZWxlbWVudHNGYWN0b3J5SW1wbC5qYXZhIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvZGVwcmVjYXRlZGVsZW1lbnRzL2ludGVybmFsL2ltcGwvRGVwcmVjYXRlZGVsZW1lbnRzRmFjdG9yeUltcGwuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZjk3NzE2Ci0tLSAvZGV2L251bGwKKysrIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvZGVwcmVjYXRlZGVsZW1lbnRzL2ludGVybmFsL2ltcGwvRGVwcmVjYXRlZGVsZW1lbnRzRmFjdG9yeUltcGwuamF2YQpAQCAtMCwwICsxLDE1MCBAQAorLyoqDQorICogQ29weXJpZ2h0IChjKSAyMDE1IENFQSBMSVNULg0KKyAqIA0KKyAqICBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQorICogIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KKyAqICB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KKyAqICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqLw0KK3BhY2thZ2Ugb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRlcHJlY2F0ZWRlbGVtZW50cy5pbnRlcm5hbC5pbXBsOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRUNsYXNzOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRU9iamVjdDsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVQYWNrYWdlOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuaW1wbC5FRmFjdG9yeUltcGw7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5wbHVnaW4uRWNvcmVQbHVnaW47DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kZXByZWNhdGVkZWxlbWVudHMuQWxsb2NhdGVkOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGVwcmVjYXRlZGVsZW1lbnRzLkRlcHJlY2F0ZWRlbGVtZW50c0ZhY3Rvcnk7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kZXByZWNhdGVkZWxlbWVudHMuRGVwcmVjYXRlZGVsZW1lbnRzUGFja2FnZTsNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRlcHJlY2F0ZWRlbGVtZW50cy5GbG93UG9ydDsNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRlcHJlY2F0ZWRlbGVtZW50cy5GbG93U3BlY2lmaWNhdGlvbjsNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRlcHJlY2F0ZWRlbGVtZW50cy5SZXF1aXJlbWVudFJlbGF0ZWQ7DQorDQorLyoqDQorICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisgKiBBbiBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgbW9kZWwgPGI+RmFjdG9yeTwvYj4uDQorICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorICogQGdlbmVyYXRlZA0KKyAqLw0KK3B1YmxpYyBjbGFzcyBEZXByZWNhdGVkZWxlbWVudHNGYWN0b3J5SW1wbCBleHRlbmRzIEVGYWN0b3J5SW1wbCBpbXBsZW1lbnRzIERlcHJlY2F0ZWRlbGVtZW50c0ZhY3Rvcnkgew0KKwkvKioNCisJICogQ3JlYXRlcyB0aGUgZGVmYXVsdCBmYWN0b3J5IGltcGxlbWVudGF0aW9uLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIHN0YXRpYyBEZXByZWNhdGVkZWxlbWVudHNGYWN0b3J5IGluaXQoKSB7DQorCQl0cnkgew0KKwkJCURlcHJlY2F0ZWRlbGVtZW50c0ZhY3RvcnkgdGhlRGVwcmVjYXRlZGVsZW1lbnRzRmFjdG9yeSA9IChEZXByZWNhdGVkZWxlbWVudHNGYWN0b3J5KUVQYWNrYWdlLlJlZ2lzdHJ5LklOU1RBTkNFLmdldEVGYWN0b3J5KERlcHJlY2F0ZWRlbGVtZW50c1BhY2thZ2UuZU5TX1VSSSk7DQorCQkJaWYgKHRoZURlcHJlY2F0ZWRlbGVtZW50c0ZhY3RvcnkgIT0gbnVsbCkgew0KKwkJCQlyZXR1cm4gdGhlRGVwcmVjYXRlZGVsZW1lbnRzRmFjdG9yeTsNCisJCQl9DQorCQl9DQorCQljYXRjaCAoRXhjZXB0aW9uIGV4Y2VwdGlvbikgew0KKwkJCUVjb3JlUGx1Z2luLklOU1RBTkNFLmxvZyhleGNlcHRpb24pOw0KKwkJfQ0KKwkJcmV0dXJuIG5ldyBEZXByZWNhdGVkZWxlbWVudHNGYWN0b3J5SW1wbCgpOw0KKwl9DQorDQorCS8qKg0KKwkgKiBDcmVhdGVzIGFuIGluc3RhbmNlIG9mIHRoZSBmYWN0b3J5Lg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIERlcHJlY2F0ZWRlbGVtZW50c0ZhY3RvcnlJbXBsKCkgew0KKwkJc3VwZXIoKTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgRU9iamVjdCBjcmVhdGUoRUNsYXNzIGVDbGFzcykgew0KKwkJc3dpdGNoIChlQ2xhc3MuZ2V0Q2xhc3NpZmllcklEKCkpIHsNCisJCQljYXNlIERlcHJlY2F0ZWRlbGVtZW50c1BhY2thZ2UuRkxPV19QT1JUOiByZXR1cm4gY3JlYXRlRmxvd1BvcnQoKTsNCisJCQljYXNlIERlcHJlY2F0ZWRlbGVtZW50c1BhY2thZ2UuRkxPV19TUEVDSUZJQ0FUSU9OOiByZXR1cm4gY3JlYXRlRmxvd1NwZWNpZmljYXRpb24oKTsNCisJCQljYXNlIERlcHJlY2F0ZWRlbGVtZW50c1BhY2thZ2UuQUxMT0NBVEVEOiByZXR1cm4gY3JlYXRlQWxsb2NhdGVkKCk7DQorCQkJY2FzZSBEZXByZWNhdGVkZWxlbWVudHNQYWNrYWdlLlJFUVVJUkVNRU5UX1JFTEFURUQ6IHJldHVybiBjcmVhdGVSZXF1aXJlbWVudFJlbGF0ZWQoKTsNCisJCQljYXNlIERlcHJlY2F0ZWRlbGVtZW50c1BhY2thZ2UuREVQUkVDQVRFRDogcmV0dXJuIGNyZWF0ZURlcHJlY2F0ZWQoKTsNCisJCQlkZWZhdWx0Og0KKwkJCQl0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJUaGUgY2xhc3MgJyIgKyBlQ2xhc3MuZ2V0TmFtZSgpICsgIicgaXMgbm90IGEgdmFsaWQgY2xhc3NpZmllciIpOyAvLyROT04tTkxTLTEkIC8vJE5PTi1OTFMtMiQNCisJCX0NCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBGbG93UG9ydCBjcmVhdGVGbG93UG9ydCgpIHsNCisJCUZsb3dQb3J0SW1wbCBmbG93UG9ydCA9IG5ldyBGbG93UG9ydEltcGwoKTsNCisJCXJldHVybiBmbG93UG9ydDsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBGbG93U3BlY2lmaWNhdGlvbiBjcmVhdGVGbG93U3BlY2lmaWNhdGlvbigpIHsNCisJCUZsb3dTcGVjaWZpY2F0aW9uSW1wbCBmbG93U3BlY2lmaWNhdGlvbiA9IG5ldyBGbG93U3BlY2lmaWNhdGlvbkltcGwoKTsNCisJCXJldHVybiBmbG93U3BlY2lmaWNhdGlvbjsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBBbGxvY2F0ZWQgY3JlYXRlQWxsb2NhdGVkKCkgew0KKwkJQWxsb2NhdGVkSW1wbCBhbGxvY2F0ZWQgPSBuZXcgQWxsb2NhdGVkSW1wbCgpOw0KKwkJcmV0dXJuIGFsbG9jYXRlZDsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBSZXF1aXJlbWVudFJlbGF0ZWQgY3JlYXRlUmVxdWlyZW1lbnRSZWxhdGVkKCkgew0KKwkJUmVxdWlyZW1lbnRSZWxhdGVkSW1wbCByZXF1aXJlbWVudFJlbGF0ZWQgPSBuZXcgUmVxdWlyZW1lbnRSZWxhdGVkSW1wbCgpOw0KKwkJcmV0dXJuIHJlcXVpcmVtZW50UmVsYXRlZDsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGVwcmVjYXRlZGVsZW1lbnRzLkRlcHJlY2F0ZWQgY3JlYXRlRGVwcmVjYXRlZCgpIHsNCisJCURlcHJlY2F0ZWRJbXBsIGRlcHJlY2F0ZWQgPSBuZXcgRGVwcmVjYXRlZEltcGwoKTsNCisJCXJldHVybiBkZXByZWNhdGVkOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIERlcHJlY2F0ZWRlbGVtZW50c1BhY2thZ2UgZ2V0RGVwcmVjYXRlZGVsZW1lbnRzUGFja2FnZSgpIHsNCisJCXJldHVybiAoRGVwcmVjYXRlZGVsZW1lbnRzUGFja2FnZSlnZXRFUGFja2FnZSgpOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGRlcHJlY2F0ZWQNCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQERlcHJlY2F0ZWQNCisJcHVibGljIHN0YXRpYyBEZXByZWNhdGVkZWxlbWVudHNQYWNrYWdlIGdldFBhY2thZ2UoKSB7DQorCQlyZXR1cm4gRGVwcmVjYXRlZGVsZW1lbnRzUGFja2FnZS5lSU5TVEFOQ0U7DQorCX0NCisNCit9IC8vRGVwcmVjYXRlZGVsZW1lbnRzRmFjdG9yeUltcGwNCmRpZmYgLS1naXQgYS9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9kZXByZWNhdGVkZWxlbWVudHMvaW50ZXJuYWwvaW1wbC9EZXByZWNhdGVkZWxlbWVudHNQYWNrYWdlSW1wbC5qYXZhIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvZGVwcmVjYXRlZGVsZW1lbnRzL2ludGVybmFsL2ltcGwvRGVwcmVjYXRlZGVsZW1lbnRzUGFja2FnZUltcGwuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNDJhODhmCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvZGVwcmVjYXRlZGVsZW1lbnRzL2ludGVybmFsL2ltcGwvRGVwcmVjYXRlZGVsZW1lbnRzUGFja2FnZUltcGwuamF2YQpAQCAtMCwwICsxLDU2MiBAQAorLyoqDQorICogQ29weXJpZ2h0IChjKSAyMDE1IENFQSBMSVNULg0KKyAqIA0KKyAqICBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQorICogIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KKyAqICB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KKyAqICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqLw0KK3BhY2thZ2Ugb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRlcHJlY2F0ZWRlbGVtZW50cy5pbnRlcm5hbC5pbXBsOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRUF0dHJpYnV0ZTsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVDbGFzczsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVQYWNrYWdlOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRVJlZmVyZW5jZTsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLmltcGwuRVBhY2thZ2VJbXBsOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYWN0aXZpdGllcy5BY3Rpdml0aWVzUGFja2FnZTsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmFjdGl2aXRpZXMuaW50ZXJuYWwuaW1wbC5BY3Rpdml0aWVzUGFja2FnZUltcGw7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5hbGxvY2F0aW9ucy5BbGxvY2F0aW9uc1BhY2thZ2U7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5hbGxvY2F0aW9ucy5pbnRlcm5hbC5pbXBsLkFsbG9jYXRpb25zUGFja2FnZUltcGw7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5ibG9ja3MuQmxvY2tzUGFja2FnZTsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmJsb2Nrcy5pbnRlcm5hbC5pbXBsLkJsb2Nrc1BhY2thZ2VJbXBsOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuY29uc3RyYWludGJsb2Nrcy5Db25zdHJhaW50YmxvY2tzUGFja2FnZTsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmNvbnN0cmFpbnRibG9ja3MuaW50ZXJuYWwuaW1wbC5Db25zdHJhaW50YmxvY2tzUGFja2FnZUltcGw7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kZXByZWNhdGVkZWxlbWVudHMuQWxsb2NhdGVkOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGVwcmVjYXRlZGVsZW1lbnRzLkRlcHJlY2F0ZWRlbGVtZW50c0ZhY3Rvcnk7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kZXByZWNhdGVkZWxlbWVudHMuRGVwcmVjYXRlZGVsZW1lbnRzUGFja2FnZTsNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRlcHJlY2F0ZWRlbGVtZW50cy5GbG93UG9ydDsNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRlcHJlY2F0ZWRlbGVtZW50cy5GbG93U3BlY2lmaWNhdGlvbjsNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRlcHJlY2F0ZWRlbGVtZW50cy5SZXF1aXJlbWVudFJlbGF0ZWQ7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5tb2RlbGVsZW1lbnRzLk1vZGVsZWxlbWVudHNQYWNrYWdlOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQubW9kZWxlbGVtZW50cy5pbnRlcm5hbC5pbXBsLk1vZGVsZWxlbWVudHNQYWNrYWdlSW1wbDsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnBvcnRhbmRmbG93cy5Qb3J0YW5kZmxvd3NQYWNrYWdlOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucG9ydGFuZGZsb3dzLmludGVybmFsLmltcGwuUG9ydGFuZGZsb3dzUGFja2FnZUltcGw7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5yZXF1aXJlbWVudHMuUmVxdWlyZW1lbnRzUGFja2FnZTsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnJlcXVpcmVtZW50cy5pbnRlcm5hbC5pbXBsLlJlcXVpcmVtZW50c1BhY2thZ2VJbXBsOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS51bWwyLnR5cGVzLlR5cGVzUGFja2FnZTsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UudW1sMi51bWwuVU1MUGFja2FnZTsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UudW1sMi51bWwucHJvZmlsZS5zdGFuZGFyZC5TdGFuZGFyZFBhY2thZ2U7DQorDQorLyoqDQorICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisgKiBBbiBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgbW9kZWwgPGI+UGFja2FnZTwvYj4uDQorICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorICogQGdlbmVyYXRlZA0KKyAqLw0KK3B1YmxpYyBjbGFzcyBEZXByZWNhdGVkZWxlbWVudHNQYWNrYWdlSW1wbCBleHRlbmRzIEVQYWNrYWdlSW1wbCBpbXBsZW1lbnRzIERlcHJlY2F0ZWRlbGVtZW50c1BhY2thZ2Ugew0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXByaXZhdGUgRUNsYXNzIGZsb3dQb3J0RUNsYXNzID0gbnVsbDsNCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwcml2YXRlIEVDbGFzcyBmbG93U3BlY2lmaWNhdGlvbkVDbGFzcyA9IG51bGw7DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHJpdmF0ZSBFQ2xhc3MgYWxsb2NhdGVkRUNsYXNzID0gbnVsbDsNCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwcml2YXRlIEVDbGFzcyByZXF1aXJlbWVudFJlbGF0ZWRFQ2xhc3MgPSBudWxsOw0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXByaXZhdGUgRUNsYXNzIGRlcHJlY2F0ZWRFQ2xhc3MgPSBudWxsOw0KKw0KKwkvKioNCisJICogQ3JlYXRlcyBhbiBpbnN0YW5jZSBvZiB0aGUgbW9kZWwgPGI+UGFja2FnZTwvYj4sIHJlZ2lzdGVyZWQgd2l0aA0KKwkgKiB7QGxpbmsgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVQYWNrYWdlLlJlZ2lzdHJ5IEVQYWNrYWdlLlJlZ2lzdHJ5fSBieSB0aGUgcGFja2FnZQ0KKwkgKiBwYWNrYWdlIFVSSSB2YWx1ZS4NCisJICogPHA+Tm90ZTogdGhlIGNvcnJlY3Qgd2F5IHRvIGNyZWF0ZSB0aGUgcGFja2FnZSBpcyB2aWEgdGhlIHN0YXRpYw0KKwkgKiBmYWN0b3J5IG1ldGhvZCB7QGxpbmsgI2luaXQgaW5pdCgpfSwgd2hpY2ggYWxzbyBwZXJmb3Jtcw0KKwkgKiBpbml0aWFsaXphdGlvbiBvZiB0aGUgcGFja2FnZSwgb3IgcmV0dXJucyB0aGUgcmVnaXN0ZXJlZCBwYWNrYWdlLA0KKwkgKiBpZiBvbmUgYWxyZWFkeSBleGlzdHMuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAc2VlIG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FUGFja2FnZS5SZWdpc3RyeQ0KKwkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kZXByZWNhdGVkZWxlbWVudHMuRGVwcmVjYXRlZGVsZW1lbnRzUGFja2FnZSNlTlNfVVJJDQorCSAqIEBzZWUgI2luaXQoKQ0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwcml2YXRlIERlcHJlY2F0ZWRlbGVtZW50c1BhY2thZ2VJbXBsKCkgew0KKwkJc3VwZXIoZU5TX1VSSSwgRGVwcmVjYXRlZGVsZW1lbnRzRmFjdG9yeS5lSU5TVEFOQ0UpOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHJpdmF0ZSBzdGF0aWMgYm9vbGVhbiBpc0luaXRlZCA9IGZhbHNlOw0KKw0KKwkvKioNCisJICogQ3JlYXRlcywgcmVnaXN0ZXJzLCBhbmQgaW5pdGlhbGl6ZXMgdGhlIDxiPlBhY2thZ2U8L2I+IGZvciB0aGlzIG1vZGVsLCBhbmQgZm9yIGFueSBvdGhlcnMgdXBvbiB3aGljaCBpdCBkZXBlbmRzLg0KKwkgKiANCisJICogPHA+VGhpcyBtZXRob2QgaXMgdXNlZCB0byBpbml0aWFsaXplIHtAbGluayBEZXByZWNhdGVkZWxlbWVudHNQYWNrYWdlI2VJTlNUQU5DRX0gd2hlbiB0aGF0IGZpZWxkIGlzIGFjY2Vzc2VkLg0KKwkgKiBDbGllbnRzIHNob3VsZCBub3QgaW52b2tlIGl0IGRpcmVjdGx5LiBJbnN0ZWFkLCB0aGV5IHNob3VsZCBzaW1wbHkgYWNjZXNzIHRoYXQgZmllbGQgdG8gb2J0YWluIHRoZSBwYWNrYWdlLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHNlZSAjZU5TX1VSSQ0KKwkgKiBAc2VlICNjcmVhdGVQYWNrYWdlQ29udGVudHMoKQ0KKwkgKiBAc2VlICNpbml0aWFsaXplUGFja2FnZUNvbnRlbnRzKCkNCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIHN0YXRpYyBEZXByZWNhdGVkZWxlbWVudHNQYWNrYWdlIGluaXQoKSB7DQorCQlpZiAoaXNJbml0ZWQpIHJldHVybiAoRGVwcmVjYXRlZGVsZW1lbnRzUGFja2FnZSlFUGFja2FnZS5SZWdpc3RyeS5JTlNUQU5DRS5nZXRFUGFja2FnZShEZXByZWNhdGVkZWxlbWVudHNQYWNrYWdlLmVOU19VUkkpOw0KKw0KKwkJLy8gT2J0YWluIG9yIGNyZWF0ZSBhbmQgcmVnaXN0ZXIgcGFja2FnZQ0KKwkJRGVwcmVjYXRlZGVsZW1lbnRzUGFja2FnZUltcGwgdGhlRGVwcmVjYXRlZGVsZW1lbnRzUGFja2FnZSA9IChEZXByZWNhdGVkZWxlbWVudHNQYWNrYWdlSW1wbCkoRVBhY2thZ2UuUmVnaXN0cnkuSU5TVEFOQ0UuZ2V0KGVOU19VUkkpIGluc3RhbmNlb2YgRGVwcmVjYXRlZGVsZW1lbnRzUGFja2FnZUltcGwgPyBFUGFja2FnZS5SZWdpc3RyeS5JTlNUQU5DRS5nZXQoZU5TX1VSSSkgOiBuZXcgRGVwcmVjYXRlZGVsZW1lbnRzUGFja2FnZUltcGwoKSk7DQorDQorCQlpc0luaXRlZCA9IHRydWU7DQorDQorCQkvLyBJbml0aWFsaXplIHNpbXBsZSBkZXBlbmRlbmNpZXMNCisJCVN0YW5kYXJkUGFja2FnZS5lSU5TVEFOQ0UuZUNsYXNzKCk7DQorDQorCQkvLyBPYnRhaW4gb3IgY3JlYXRlIGFuZCByZWdpc3RlciBpbnRlcmRlcGVuZGVuY2llcw0KKwkJQmxvY2tzUGFja2FnZUltcGwgdGhlQmxvY2tzUGFja2FnZSA9IChCbG9ja3NQYWNrYWdlSW1wbCkoRVBhY2thZ2UuUmVnaXN0cnkuSU5TVEFOQ0UuZ2V0RVBhY2thZ2UoQmxvY2tzUGFja2FnZS5lTlNfVVJJKSBpbnN0YW5jZW9mIEJsb2Nrc1BhY2thZ2VJbXBsID8gRVBhY2thZ2UuUmVnaXN0cnkuSU5TVEFOQ0UuZ2V0RVBhY2thZ2UoQmxvY2tzUGFja2FnZS5lTlNfVVJJKSA6IEJsb2Nrc1BhY2thZ2UuZUlOU1RBTkNFKTsNCisJCVBvcnRhbmRmbG93c1BhY2thZ2VJbXBsIHRoZVBvcnRhbmRmbG93c1BhY2thZ2UgPSAoUG9ydGFuZGZsb3dzUGFja2FnZUltcGwpKEVQYWNrYWdlLlJlZ2lzdHJ5LklOU1RBTkNFLmdldEVQYWNrYWdlKFBvcnRhbmRmbG93c1BhY2thZ2UuZU5TX1VSSSkgaW5zdGFuY2VvZiBQb3J0YW5kZmxvd3NQYWNrYWdlSW1wbCA/IEVQYWNrYWdlLlJlZ2lzdHJ5LklOU1RBTkNFLmdldEVQYWNrYWdlKFBvcnRhbmRmbG93c1BhY2thZ2UuZU5TX1VSSSkgOiBQb3J0YW5kZmxvd3NQYWNrYWdlLmVJTlNUQU5DRSk7DQorCQlBY3Rpdml0aWVzUGFja2FnZUltcGwgdGhlQWN0aXZpdGllc1BhY2thZ2UgPSAoQWN0aXZpdGllc1BhY2thZ2VJbXBsKShFUGFja2FnZS5SZWdpc3RyeS5JTlNUQU5DRS5nZXRFUGFja2FnZShBY3Rpdml0aWVzUGFja2FnZS5lTlNfVVJJKSBpbnN0YW5jZW9mIEFjdGl2aXRpZXNQYWNrYWdlSW1wbCA/IEVQYWNrYWdlLlJlZ2lzdHJ5LklOU1RBTkNFLmdldEVQYWNrYWdlKEFjdGl2aXRpZXNQYWNrYWdlLmVOU19VUkkpIDogQWN0aXZpdGllc1BhY2thZ2UuZUlOU1RBTkNFKTsNCisJCU1vZGVsZWxlbWVudHNQYWNrYWdlSW1wbCB0aGVNb2RlbGVsZW1lbnRzUGFja2FnZSA9IChNb2RlbGVsZW1lbnRzUGFja2FnZUltcGwpKEVQYWNrYWdlLlJlZ2lzdHJ5LklOU1RBTkNFLmdldEVQYWNrYWdlKE1vZGVsZWxlbWVudHNQYWNrYWdlLmVOU19VUkkpIGluc3RhbmNlb2YgTW9kZWxlbGVtZW50c1BhY2thZ2VJbXBsID8gRVBhY2thZ2UuUmVnaXN0cnkuSU5TVEFOQ0UuZ2V0RVBhY2thZ2UoTW9kZWxlbGVtZW50c1BhY2thZ2UuZU5TX1VSSSkgOiBNb2RlbGVsZW1lbnRzUGFja2FnZS5lSU5TVEFOQ0UpOw0KKwkJQ29uc3RyYWludGJsb2Nrc1BhY2thZ2VJbXBsIHRoZUNvbnN0cmFpbnRibG9ja3NQYWNrYWdlID0gKENvbnN0cmFpbnRibG9ja3NQYWNrYWdlSW1wbCkoRVBhY2thZ2UuUmVnaXN0cnkuSU5TVEFOQ0UuZ2V0RVBhY2thZ2UoQ29uc3RyYWludGJsb2Nrc1BhY2thZ2UuZU5TX1VSSSkgaW5zdGFuY2VvZiBDb25zdHJhaW50YmxvY2tzUGFja2FnZUltcGwgPyBFUGFja2FnZS5SZWdpc3RyeS5JTlNUQU5DRS5nZXRFUGFja2FnZShDb25zdHJhaW50YmxvY2tzUGFja2FnZS5lTlNfVVJJKSA6IENvbnN0cmFpbnRibG9ja3NQYWNrYWdlLmVJTlNUQU5DRSk7DQorCQlBbGxvY2F0aW9uc1BhY2thZ2VJbXBsIHRoZUFsbG9jYXRpb25zUGFja2FnZSA9IChBbGxvY2F0aW9uc1BhY2thZ2VJbXBsKShFUGFja2FnZS5SZWdpc3RyeS5JTlNUQU5DRS5nZXRFUGFja2FnZShBbGxvY2F0aW9uc1BhY2thZ2UuZU5TX1VSSSkgaW5zdGFuY2VvZiBBbGxvY2F0aW9uc1BhY2thZ2VJbXBsID8gRVBhY2thZ2UuUmVnaXN0cnkuSU5TVEFOQ0UuZ2V0RVBhY2thZ2UoQWxsb2NhdGlvbnNQYWNrYWdlLmVOU19VUkkpIDogQWxsb2NhdGlvbnNQYWNrYWdlLmVJTlNUQU5DRSk7DQorCQlSZXF1aXJlbWVudHNQYWNrYWdlSW1wbCB0aGVSZXF1aXJlbWVudHNQYWNrYWdlID0gKFJlcXVpcmVtZW50c1BhY2thZ2VJbXBsKShFUGFja2FnZS5SZWdpc3RyeS5JTlNUQU5DRS5nZXRFUGFja2FnZShSZXF1aXJlbWVudHNQYWNrYWdlLmVOU19VUkkpIGluc3RhbmNlb2YgUmVxdWlyZW1lbnRzUGFja2FnZUltcGwgPyBFUGFja2FnZS5SZWdpc3RyeS5JTlNUQU5DRS5nZXRFUGFja2FnZShSZXF1aXJlbWVudHNQYWNrYWdlLmVOU19VUkkpIDogUmVxdWlyZW1lbnRzUGFja2FnZS5lSU5TVEFOQ0UpOw0KKw0KKwkJLy8gQ3JlYXRlIHBhY2thZ2UgbWV0YS1kYXRhIG9iamVjdHMNCisJCXRoZURlcHJlY2F0ZWRlbGVtZW50c1BhY2thZ2UuY3JlYXRlUGFja2FnZUNvbnRlbnRzKCk7DQorCQl0aGVCbG9ja3NQYWNrYWdlLmNyZWF0ZVBhY2thZ2VDb250ZW50cygpOw0KKwkJdGhlUG9ydGFuZGZsb3dzUGFja2FnZS5jcmVhdGVQYWNrYWdlQ29udGVudHMoKTsNCisJCXRoZUFjdGl2aXRpZXNQYWNrYWdlLmNyZWF0ZVBhY2thZ2VDb250ZW50cygpOw0KKwkJdGhlTW9kZWxlbGVtZW50c1BhY2thZ2UuY3JlYXRlUGFja2FnZUNvbnRlbnRzKCk7DQorCQl0aGVDb25zdHJhaW50YmxvY2tzUGFja2FnZS5jcmVhdGVQYWNrYWdlQ29udGVudHMoKTsNCisJCXRoZUFsbG9jYXRpb25zUGFja2FnZS5jcmVhdGVQYWNrYWdlQ29udGVudHMoKTsNCisJCXRoZVJlcXVpcmVtZW50c1BhY2thZ2UuY3JlYXRlUGFja2FnZUNvbnRlbnRzKCk7DQorDQorCQkvLyBJbml0aWFsaXplIGNyZWF0ZWQgbWV0YS1kYXRhDQorCQl0aGVEZXByZWNhdGVkZWxlbWVudHNQYWNrYWdlLmluaXRpYWxpemVQYWNrYWdlQ29udGVudHMoKTsNCisJCXRoZUJsb2Nrc1BhY2thZ2UuaW5pdGlhbGl6ZVBhY2thZ2VDb250ZW50cygpOw0KKwkJdGhlUG9ydGFuZGZsb3dzUGFja2FnZS5pbml0aWFsaXplUGFja2FnZUNvbnRlbnRzKCk7DQorCQl0aGVBY3Rpdml0aWVzUGFja2FnZS5pbml0aWFsaXplUGFja2FnZUNvbnRlbnRzKCk7DQorCQl0aGVNb2RlbGVsZW1lbnRzUGFja2FnZS5pbml0aWFsaXplUGFja2FnZUNvbnRlbnRzKCk7DQorCQl0aGVDb25zdHJhaW50YmxvY2tzUGFja2FnZS5pbml0aWFsaXplUGFja2FnZUNvbnRlbnRzKCk7DQorCQl0aGVBbGxvY2F0aW9uc1BhY2thZ2UuaW5pdGlhbGl6ZVBhY2thZ2VDb250ZW50cygpOw0KKwkJdGhlUmVxdWlyZW1lbnRzUGFja2FnZS5pbml0aWFsaXplUGFja2FnZUNvbnRlbnRzKCk7DQorDQorCQkvLyBNYXJrIG1ldGEtZGF0YSB0byBpbmRpY2F0ZSBpdCBjYW4ndCBiZSBjaGFuZ2VkDQorCQl0aGVEZXByZWNhdGVkZWxlbWVudHNQYWNrYWdlLmZyZWV6ZSgpOw0KKw0KKyAgDQorCQkvLyBVcGRhdGUgdGhlIHJlZ2lzdHJ5IGFuZCByZXR1cm4gdGhlIHBhY2thZ2UNCisJCUVQYWNrYWdlLlJlZ2lzdHJ5LklOU1RBTkNFLnB1dChEZXByZWNhdGVkZWxlbWVudHNQYWNrYWdlLmVOU19VUkksIHRoZURlcHJlY2F0ZWRlbGVtZW50c1BhY2thZ2UpOw0KKwkJcmV0dXJuIHRoZURlcHJlY2F0ZWRlbGVtZW50c1BhY2thZ2U7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgRUNsYXNzIGdldEZsb3dQb3J0KCkgew0KKwkJcmV0dXJuIGZsb3dQb3J0RUNsYXNzOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIEVSZWZlcmVuY2UgZ2V0Rmxvd1BvcnRfQmFzZV9Qb3J0KCkgew0KKwkJcmV0dXJuIChFUmVmZXJlbmNlKWZsb3dQb3J0RUNsYXNzLmdldEVTdHJ1Y3R1cmFsRmVhdHVyZXMoKS5nZXQoMCk7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgRUF0dHJpYnV0ZSBnZXRGbG93UG9ydF9EaXJlY3Rpb24oKSB7DQorCQlyZXR1cm4gKEVBdHRyaWJ1dGUpZmxvd1BvcnRFQ2xhc3MuZ2V0RVN0cnVjdHVyYWxGZWF0dXJlcygpLmdldCgxKTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBFQXR0cmlidXRlIGdldEZsb3dQb3J0X0lzQXRvbWljKCkgew0KKwkJcmV0dXJuIChFQXR0cmlidXRlKWZsb3dQb3J0RUNsYXNzLmdldEVTdHJ1Y3R1cmFsRmVhdHVyZXMoKS5nZXQoMik7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgRUNsYXNzIGdldEZsb3dTcGVjaWZpY2F0aW9uKCkgew0KKwkJcmV0dXJuIGZsb3dTcGVjaWZpY2F0aW9uRUNsYXNzOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIEVSZWZlcmVuY2UgZ2V0Rmxvd1NwZWNpZmljYXRpb25fQmFzZV9JbnRlcmZhY2UoKSB7DQorCQlyZXR1cm4gKEVSZWZlcmVuY2UpZmxvd1NwZWNpZmljYXRpb25FQ2xhc3MuZ2V0RVN0cnVjdHVyYWxGZWF0dXJlcygpLmdldCgwKTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBFQ2xhc3MgZ2V0QWxsb2NhdGVkKCkgew0KKwkJcmV0dXJuIGFsbG9jYXRlZEVDbGFzczsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBFUmVmZXJlbmNlIGdldEFsbG9jYXRlZF9CYXNlX05hbWVkRWxlbWVudCgpIHsNCisJCXJldHVybiAoRVJlZmVyZW5jZSlhbGxvY2F0ZWRFQ2xhc3MuZ2V0RVN0cnVjdHVyYWxGZWF0dXJlcygpLmdldCgwKTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBFUmVmZXJlbmNlIGdldEFsbG9jYXRlZF9BbGxvY2F0ZWRGcm9tKCkgew0KKwkJcmV0dXJuIChFUmVmZXJlbmNlKWFsbG9jYXRlZEVDbGFzcy5nZXRFU3RydWN0dXJhbEZlYXR1cmVzKCkuZ2V0KDEpOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIEVSZWZlcmVuY2UgZ2V0QWxsb2NhdGVkX0FsbG9jYXRlZFRvKCkgew0KKwkJcmV0dXJuIChFUmVmZXJlbmNlKWFsbG9jYXRlZEVDbGFzcy5nZXRFU3RydWN0dXJhbEZlYXR1cmVzKCkuZ2V0KDIpOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIEVDbGFzcyBnZXRSZXF1aXJlbWVudFJlbGF0ZWQoKSB7DQorCQlyZXR1cm4gcmVxdWlyZW1lbnRSZWxhdGVkRUNsYXNzOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIEVSZWZlcmVuY2UgZ2V0UmVxdWlyZW1lbnRSZWxhdGVkX0Jhc2VfTmFtZWRFbGVtZW50KCkgew0KKwkJcmV0dXJuIChFUmVmZXJlbmNlKXJlcXVpcmVtZW50UmVsYXRlZEVDbGFzcy5nZXRFU3RydWN0dXJhbEZlYXR1cmVzKCkuZ2V0KDApOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIEVSZWZlcmVuY2UgZ2V0UmVxdWlyZW1lbnRSZWxhdGVkX1RyYWNlZEZyb20oKSB7DQorCQlyZXR1cm4gKEVSZWZlcmVuY2UpcmVxdWlyZW1lbnRSZWxhdGVkRUNsYXNzLmdldEVTdHJ1Y3R1cmFsRmVhdHVyZXMoKS5nZXQoMSk7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgRVJlZmVyZW5jZSBnZXRSZXF1aXJlbWVudFJlbGF0ZWRfU2F0aXNmaWVzKCkgew0KKwkJcmV0dXJuIChFUmVmZXJlbmNlKXJlcXVpcmVtZW50UmVsYXRlZEVDbGFzcy5nZXRFU3RydWN0dXJhbEZlYXR1cmVzKCkuZ2V0KDIpOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIEVSZWZlcmVuY2UgZ2V0UmVxdWlyZW1lbnRSZWxhdGVkX1JlZmluZXMoKSB7DQorCQlyZXR1cm4gKEVSZWZlcmVuY2UpcmVxdWlyZW1lbnRSZWxhdGVkRUNsYXNzLmdldEVTdHJ1Y3R1cmFsRmVhdHVyZXMoKS5nZXQoMyk7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgRVJlZmVyZW5jZSBnZXRSZXF1aXJlbWVudFJlbGF0ZWRfVmVyaWZpZXMoKSB7DQorCQlyZXR1cm4gKEVSZWZlcmVuY2UpcmVxdWlyZW1lbnRSZWxhdGVkRUNsYXNzLmdldEVTdHJ1Y3R1cmFsRmVhdHVyZXMoKS5nZXQoNCk7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgRUNsYXNzIGdldERlcHJlY2F0ZWQoKSB7DQorCQlyZXR1cm4gZGVwcmVjYXRlZEVDbGFzczsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBFUmVmZXJlbmNlIGdldERlcHJlY2F0ZWRfQmFzZV9WYWx1ZVNwZWNpZmljYXRpb24oKSB7DQorCQlyZXR1cm4gKEVSZWZlcmVuY2UpZGVwcmVjYXRlZEVDbGFzcy5nZXRFU3RydWN0dXJhbEZlYXR1cmVzKCkuZ2V0KDApOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIEVSZWZlcmVuY2UgZ2V0RGVwcmVjYXRlZF9CYXNlX1Byb3BlcnR5KCkgew0KKwkJcmV0dXJuIChFUmVmZXJlbmNlKWRlcHJlY2F0ZWRFQ2xhc3MuZ2V0RVN0cnVjdHVyYWxGZWF0dXJlcygpLmdldCgxKTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBFUmVmZXJlbmNlIGdldERlcHJlY2F0ZWRfQmFzZV9JbnN0YW5jZVNwZWNpZmljYXRpb24oKSB7DQorCQlyZXR1cm4gKEVSZWZlcmVuY2UpZGVwcmVjYXRlZEVDbGFzcy5nZXRFU3RydWN0dXJhbEZlYXR1cmVzKCkuZ2V0KDIpOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIEVSZWZlcmVuY2UgZ2V0RGVwcmVjYXRlZF9CYXNlX0NsYXNzKCkgew0KKwkJcmV0dXJuIChFUmVmZXJlbmNlKWRlcHJlY2F0ZWRFQ2xhc3MuZ2V0RVN0cnVjdHVyYWxGZWF0dXJlcygpLmdldCgzKTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBFUmVmZXJlbmNlIGdldERlcHJlY2F0ZWRfQmFzZV9Bc3NvY2lhdGlvbigpIHsNCisJCXJldHVybiAoRVJlZmVyZW5jZSlkZXByZWNhdGVkRUNsYXNzLmdldEVTdHJ1Y3R1cmFsRmVhdHVyZXMoKS5nZXQoNCk7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgRUF0dHJpYnV0ZSBnZXREZXByZWNhdGVkX0RlcHJlY2F0ZWRSZWFzb24oKSB7DQorCQlyZXR1cm4gKEVBdHRyaWJ1dGUpZGVwcmVjYXRlZEVDbGFzcy5nZXRFU3RydWN0dXJhbEZlYXR1cmVzKCkuZ2V0KDUpOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIEVSZWZlcmVuY2UgZ2V0RGVwcmVjYXRlZF9CYXNlX0dlbmVyYWxpemF0aW9uKCkgew0KKwkJcmV0dXJuIChFUmVmZXJlbmNlKWRlcHJlY2F0ZWRFQ2xhc3MuZ2V0RVN0cnVjdHVyYWxGZWF0dXJlcygpLmdldCg2KTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBFUmVmZXJlbmNlIGdldERlcHJlY2F0ZWRfQmFzZV9EYXRhVHlwZSgpIHsNCisJCXJldHVybiAoRVJlZmVyZW5jZSlkZXByZWNhdGVkRUNsYXNzLmdldEVTdHJ1Y3R1cmFsRmVhdHVyZXMoKS5nZXQoNyk7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgRGVwcmVjYXRlZGVsZW1lbnRzRmFjdG9yeSBnZXREZXByZWNhdGVkZWxlbWVudHNGYWN0b3J5KCkgew0KKwkJcmV0dXJuIChEZXByZWNhdGVkZWxlbWVudHNGYWN0b3J5KWdldEVGYWN0b3J5SW5zdGFuY2UoKTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXByaXZhdGUgYm9vbGVhbiBpc0NyZWF0ZWQgPSBmYWxzZTsNCisNCisJLyoqDQorCSAqIENyZWF0ZXMgdGhlIG1ldGEtbW9kZWwgb2JqZWN0cyBmb3IgdGhlIHBhY2thZ2UuICBUaGlzIG1ldGhvZCBpcw0KKwkgKiBndWFyZGVkIHRvIGhhdmUgbm8gYWZmZWN0IG9uIGFueSBpbnZvY2F0aW9uIGJ1dCBpdHMgZmlyc3QuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgdm9pZCBjcmVhdGVQYWNrYWdlQ29udGVudHMoKSB7DQorCQlpZiAoaXNDcmVhdGVkKSByZXR1cm47DQorCQlpc0NyZWF0ZWQgPSB0cnVlOw0KKw0KKwkJLy8gQ3JlYXRlIGNsYXNzZXMgYW5kIHRoZWlyIGZlYXR1cmVzDQorCQlmbG93UG9ydEVDbGFzcyA9IGNyZWF0ZUVDbGFzcyhGTE9XX1BPUlQpOw0KKwkJY3JlYXRlRVJlZmVyZW5jZShmbG93UG9ydEVDbGFzcywgRkxPV19QT1JUX19CQVNFX1BPUlQpOw0KKwkJY3JlYXRlRUF0dHJpYnV0ZShmbG93UG9ydEVDbGFzcywgRkxPV19QT1JUX19ESVJFQ1RJT04pOw0KKwkJY3JlYXRlRUF0dHJpYnV0ZShmbG93UG9ydEVDbGFzcywgRkxPV19QT1JUX19JU19BVE9NSUMpOw0KKw0KKwkJZmxvd1NwZWNpZmljYXRpb25FQ2xhc3MgPSBjcmVhdGVFQ2xhc3MoRkxPV19TUEVDSUZJQ0FUSU9OKTsNCisJCWNyZWF0ZUVSZWZlcmVuY2UoZmxvd1NwZWNpZmljYXRpb25FQ2xhc3MsIEZMT1dfU1BFQ0lGSUNBVElPTl9fQkFTRV9JTlRFUkZBQ0UpOw0KKw0KKwkJYWxsb2NhdGVkRUNsYXNzID0gY3JlYXRlRUNsYXNzKEFMTE9DQVRFRCk7DQorCQljcmVhdGVFUmVmZXJlbmNlKGFsbG9jYXRlZEVDbGFzcywgQUxMT0NBVEVEX19CQVNFX05BTUVEX0VMRU1FTlQpOw0KKwkJY3JlYXRlRVJlZmVyZW5jZShhbGxvY2F0ZWRFQ2xhc3MsIEFMTE9DQVRFRF9fQUxMT0NBVEVEX0ZST00pOw0KKwkJY3JlYXRlRVJlZmVyZW5jZShhbGxvY2F0ZWRFQ2xhc3MsIEFMTE9DQVRFRF9fQUxMT0NBVEVEX1RPKTsNCisNCisJCXJlcXVpcmVtZW50UmVsYXRlZEVDbGFzcyA9IGNyZWF0ZUVDbGFzcyhSRVFVSVJFTUVOVF9SRUxBVEVEKTsNCisJCWNyZWF0ZUVSZWZlcmVuY2UocmVxdWlyZW1lbnRSZWxhdGVkRUNsYXNzLCBSRVFVSVJFTUVOVF9SRUxBVEVEX19CQVNFX05BTUVEX0VMRU1FTlQpOw0KKwkJY3JlYXRlRVJlZmVyZW5jZShyZXF1aXJlbWVudFJlbGF0ZWRFQ2xhc3MsIFJFUVVJUkVNRU5UX1JFTEFURURfX1RSQUNFRF9GUk9NKTsNCisJCWNyZWF0ZUVSZWZlcmVuY2UocmVxdWlyZW1lbnRSZWxhdGVkRUNsYXNzLCBSRVFVSVJFTUVOVF9SRUxBVEVEX19TQVRJU0ZJRVMpOw0KKwkJY3JlYXRlRVJlZmVyZW5jZShyZXF1aXJlbWVudFJlbGF0ZWRFQ2xhc3MsIFJFUVVJUkVNRU5UX1JFTEFURURfX1JFRklORVMpOw0KKwkJY3JlYXRlRVJlZmVyZW5jZShyZXF1aXJlbWVudFJlbGF0ZWRFQ2xhc3MsIFJFUVVJUkVNRU5UX1JFTEFURURfX1ZFUklGSUVTKTsNCisNCisJCWRlcHJlY2F0ZWRFQ2xhc3MgPSBjcmVhdGVFQ2xhc3MoREVQUkVDQVRFRCk7DQorCQljcmVhdGVFUmVmZXJlbmNlKGRlcHJlY2F0ZWRFQ2xhc3MsIERFUFJFQ0FURURfX0JBU0VfVkFMVUVfU1BFQ0lGSUNBVElPTik7DQorCQljcmVhdGVFUmVmZXJlbmNlKGRlcHJlY2F0ZWRFQ2xhc3MsIERFUFJFQ0FURURfX0JBU0VfUFJPUEVSVFkpOw0KKwkJY3JlYXRlRVJlZmVyZW5jZShkZXByZWNhdGVkRUNsYXNzLCBERVBSRUNBVEVEX19CQVNFX0lOU1RBTkNFX1NQRUNJRklDQVRJT04pOw0KKwkJY3JlYXRlRVJlZmVyZW5jZShkZXByZWNhdGVkRUNsYXNzLCBERVBSRUNBVEVEX19CQVNFX0NMQVNTKTsNCisJCWNyZWF0ZUVSZWZlcmVuY2UoZGVwcmVjYXRlZEVDbGFzcywgREVQUkVDQVRFRF9fQkFTRV9BU1NPQ0lBVElPTik7DQorCQljcmVhdGVFQXR0cmlidXRlKGRlcHJlY2F0ZWRFQ2xhc3MsIERFUFJFQ0FURURfX0RFUFJFQ0FURURfUkVBU09OKTsNCisJCWNyZWF0ZUVSZWZlcmVuY2UoZGVwcmVjYXRlZEVDbGFzcywgREVQUkVDQVRFRF9fQkFTRV9HRU5FUkFMSVpBVElPTik7DQorCQljcmVhdGVFUmVmZXJlbmNlKGRlcHJlY2F0ZWRFQ2xhc3MsIERFUFJFQ0FURURfX0JBU0VfREFUQV9UWVBFKTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXByaXZhdGUgYm9vbGVhbiBpc0luaXRpYWxpemVkID0gZmFsc2U7DQorDQorCS8qKg0KKwkgKiBDb21wbGV0ZSB0aGUgaW5pdGlhbGl6YXRpb24gb2YgdGhlIHBhY2thZ2UgYW5kIGl0cyBtZXRhLW1vZGVsLiAgVGhpcw0KKwkgKiBtZXRob2QgaXMgZ3VhcmRlZCB0byBoYXZlIG5vIGFmZmVjdCBvbiBhbnkgaW52b2NhdGlvbiBidXQgaXRzIGZpcnN0Lg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIHZvaWQgaW5pdGlhbGl6ZVBhY2thZ2VDb250ZW50cygpIHsNCisJCWlmIChpc0luaXRpYWxpemVkKSByZXR1cm47DQorCQlpc0luaXRpYWxpemVkID0gdHJ1ZTsNCisNCisJCS8vIEluaXRpYWxpemUgcGFja2FnZQ0KKwkJc2V0TmFtZShlTkFNRSk7DQorCQlzZXROc1ByZWZpeChlTlNfUFJFRklYKTsNCisJCXNldE5zVVJJKGVOU19VUkkpOw0KKw0KKwkJLy8gT2J0YWluIG90aGVyIGRlcGVuZGVudCBwYWNrYWdlcw0KKwkJVU1MUGFja2FnZSB0aGVVTUxQYWNrYWdlID0gKFVNTFBhY2thZ2UpRVBhY2thZ2UuUmVnaXN0cnkuSU5TVEFOQ0UuZ2V0RVBhY2thZ2UoVU1MUGFja2FnZS5lTlNfVVJJKTsNCisJCVBvcnRhbmRmbG93c1BhY2thZ2UgdGhlUG9ydGFuZGZsb3dzUGFja2FnZSA9IChQb3J0YW5kZmxvd3NQYWNrYWdlKUVQYWNrYWdlLlJlZ2lzdHJ5LklOU1RBTkNFLmdldEVQYWNrYWdlKFBvcnRhbmRmbG93c1BhY2thZ2UuZU5TX1VSSSk7DQorCQlUeXBlc1BhY2thZ2UgdGhlVHlwZXNQYWNrYWdlID0gKFR5cGVzUGFja2FnZSlFUGFja2FnZS5SZWdpc3RyeS5JTlNUQU5DRS5nZXRFUGFja2FnZShUeXBlc1BhY2thZ2UuZU5TX1VSSSk7DQorCQlSZXF1aXJlbWVudHNQYWNrYWdlIHRoZVJlcXVpcmVtZW50c1BhY2thZ2UgPSAoUmVxdWlyZW1lbnRzUGFja2FnZSlFUGFja2FnZS5SZWdpc3RyeS5JTlNUQU5DRS5nZXRFUGFja2FnZShSZXF1aXJlbWVudHNQYWNrYWdlLmVOU19VUkkpOw0KKw0KKwkJLy8gQ3JlYXRlIHR5cGUgcGFyYW1ldGVycw0KKw0KKwkJLy8gU2V0IGJvdW5kcyBmb3IgdHlwZSBwYXJhbWV0ZXJzDQorDQorCQkvLyBBZGQgc3VwZXJ0eXBlcyB0byBjbGFzc2VzDQorDQorCQkvLyBJbml0aWFsaXplIGNsYXNzZXMsIGZlYXR1cmVzLCBhbmQgb3BlcmF0aW9uczsgYWRkIHBhcmFtZXRlcnMNCisJCWluaXRFQ2xhc3MoZmxvd1BvcnRFQ2xhc3MsIEZsb3dQb3J0LmNsYXNzLCAiRmxvd1BvcnQiLCAhSVNfQUJTVFJBQ1QsICFJU19JTlRFUkZBQ0UsIElTX0dFTkVSQVRFRF9JTlNUQU5DRV9DTEFTUyk7IC8vJE5PTi1OTFMtMSQNCisJCWluaXRFUmVmZXJlbmNlKGdldEZsb3dQb3J0X0Jhc2VfUG9ydCgpLCB0aGVVTUxQYWNrYWdlLmdldFBvcnQoKSwgbnVsbCwgImJhc2VfUG9ydCIsIG51bGwsIDEsIDEsIEZsb3dQb3J0LmNsYXNzLCAhSVNfVFJBTlNJRU5ULCAhSVNfVk9MQVRJTEUsIElTX0NIQU5HRUFCTEUsICFJU19DT01QT1NJVEUsIElTX1JFU09MVkVfUFJPWElFUywgIUlTX1VOU0VUVEFCTEUsIElTX1VOSVFVRSwgIUlTX0RFUklWRUQsICFJU19PUkRFUkVEKTsgLy8kTk9OLU5MUy0xJA0KKwkJaW5pdEVBdHRyaWJ1dGUoZ2V0Rmxvd1BvcnRfRGlyZWN0aW9uKCksIHRoZVBvcnRhbmRmbG93c1BhY2thZ2UuZ2V0Rmxvd0RpcmVjdGlvbigpLCAiZGlyZWN0aW9uIiwgImlub3V0IiwgMSwgMSwgRmxvd1BvcnQuY2xhc3MsICFJU19UUkFOU0lFTlQsICFJU19WT0xBVElMRSwgSVNfQ0hBTkdFQUJMRSwgIUlTX1VOU0VUVEFCTEUsICFJU19JRCwgSVNfVU5JUVVFLCAhSVNfREVSSVZFRCwgIUlTX09SREVSRUQpOyAvLyROT04tTkxTLTEkIC8vJE5PTi1OTFMtMiQNCisJCWluaXRFQXR0cmlidXRlKGdldEZsb3dQb3J0X0lzQXRvbWljKCksIHRoZVR5cGVzUGFja2FnZS5nZXRCb29sZWFuKCksICJpc0F0b21pYyIsIG51bGwsIDEsIDEsIEZsb3dQb3J0LmNsYXNzLCBJU19UUkFOU0lFTlQsIElTX1ZPTEFUSUxFLCBJU19DSEFOR0VBQkxFLCAhSVNfVU5TRVRUQUJMRSwgIUlTX0lELCBJU19VTklRVUUsIElTX0RFUklWRUQsICFJU19PUkRFUkVEKTsgLy8kTk9OLU5MUy0xJA0KKw0KKwkJaW5pdEVDbGFzcyhmbG93U3BlY2lmaWNhdGlvbkVDbGFzcywgRmxvd1NwZWNpZmljYXRpb24uY2xhc3MsICJGbG93U3BlY2lmaWNhdGlvbiIsICFJU19BQlNUUkFDVCwgIUlTX0lOVEVSRkFDRSwgSVNfR0VORVJBVEVEX0lOU1RBTkNFX0NMQVNTKTsgLy8kTk9OLU5MUy0xJA0KKwkJaW5pdEVSZWZlcmVuY2UoZ2V0Rmxvd1NwZWNpZmljYXRpb25fQmFzZV9JbnRlcmZhY2UoKSwgdGhlVU1MUGFja2FnZS5nZXRJbnRlcmZhY2UoKSwgbnVsbCwgImJhc2VfSW50ZXJmYWNlIiwgbnVsbCwgMSwgMSwgRmxvd1NwZWNpZmljYXRpb24uY2xhc3MsICFJU19UUkFOU0lFTlQsICFJU19WT0xBVElMRSwgSVNfQ0hBTkdFQUJMRSwgIUlTX0NPTVBPU0lURSwgSVNfUkVTT0xWRV9QUk9YSUVTLCAhSVNfVU5TRVRUQUJMRSwgSVNfVU5JUVVFLCAhSVNfREVSSVZFRCwgIUlTX09SREVSRUQpOyAvLyROT04tTkxTLTEkDQorDQorCQlpbml0RUNsYXNzKGFsbG9jYXRlZEVDbGFzcywgQWxsb2NhdGVkLmNsYXNzLCAiQWxsb2NhdGVkIiwgIUlTX0FCU1RSQUNULCAhSVNfSU5URVJGQUNFLCBJU19HRU5FUkFURURfSU5TVEFOQ0VfQ0xBU1MpOyAvLyROT04tTkxTLTEkDQorCQlpbml0RVJlZmVyZW5jZShnZXRBbGxvY2F0ZWRfQmFzZV9OYW1lZEVsZW1lbnQoKSwgdGhlVU1MUGFja2FnZS5nZXROYW1lZEVsZW1lbnQoKSwgbnVsbCwgImJhc2VfTmFtZWRFbGVtZW50IiwgbnVsbCwgMSwgMSwgQWxsb2NhdGVkLmNsYXNzLCAhSVNfVFJBTlNJRU5ULCAhSVNfVk9MQVRJTEUsIElTX0NIQU5HRUFCTEUsICFJU19DT01QT1NJVEUsIElTX1JFU09MVkVfUFJPWElFUywgIUlTX1VOU0VUVEFCTEUsIElTX1VOSVFVRSwgIUlTX0RFUklWRUQsICFJU19PUkRFUkVEKTsgLy8kTk9OLU5MUy0xJA0KKwkJaW5pdEVSZWZlcmVuY2UoZ2V0QWxsb2NhdGVkX0FsbG9jYXRlZEZyb20oKSwgdGhlVU1MUGFja2FnZS5nZXROYW1lZEVsZW1lbnQoKSwgbnVsbCwgImFsbG9jYXRlZEZyb20iLCBudWxsLCAxLCAtMSwgQWxsb2NhdGVkLmNsYXNzLCBJU19UUkFOU0lFTlQsIElTX1ZPTEFUSUxFLCBJU19DSEFOR0VBQkxFLCAhSVNfQ09NUE9TSVRFLCBJU19SRVNPTFZFX1BST1hJRVMsICFJU19VTlNFVFRBQkxFLCBJU19VTklRVUUsIElTX0RFUklWRUQsICFJU19PUkRFUkVEKTsgLy8kTk9OLU5MUy0xJA0KKwkJaW5pdEVSZWZlcmVuY2UoZ2V0QWxsb2NhdGVkX0FsbG9jYXRlZFRvKCksIHRoZVVNTFBhY2thZ2UuZ2V0TmFtZWRFbGVtZW50KCksIG51bGwsICJhbGxvY2F0ZWRUbyIsIG51bGwsIDEsIC0xLCBBbGxvY2F0ZWQuY2xhc3MsIElTX1RSQU5TSUVOVCwgSVNfVk9MQVRJTEUsIElTX0NIQU5HRUFCTEUsICFJU19DT01QT1NJVEUsIElTX1JFU09MVkVfUFJPWElFUywgIUlTX1VOU0VUVEFCTEUsIElTX1VOSVFVRSwgSVNfREVSSVZFRCwgIUlTX09SREVSRUQpOyAvLyROT04tTkxTLTEkDQorDQorCQlpbml0RUNsYXNzKHJlcXVpcmVtZW50UmVsYXRlZEVDbGFzcywgUmVxdWlyZW1lbnRSZWxhdGVkLmNsYXNzLCAiUmVxdWlyZW1lbnRSZWxhdGVkIiwgIUlTX0FCU1RSQUNULCAhSVNfSU5URVJGQUNFLCBJU19HRU5FUkFURURfSU5TVEFOQ0VfQ0xBU1MpOyAvLyROT04tTkxTLTEkDQorCQlpbml0RVJlZmVyZW5jZShnZXRSZXF1aXJlbWVudFJlbGF0ZWRfQmFzZV9OYW1lZEVsZW1lbnQoKSwgdGhlVU1MUGFja2FnZS5nZXROYW1lZEVsZW1lbnQoKSwgbnVsbCwgImJhc2VfTmFtZWRFbGVtZW50IiwgbnVsbCwgMSwgMSwgUmVxdWlyZW1lbnRSZWxhdGVkLmNsYXNzLCAhSVNfVFJBTlNJRU5ULCAhSVNfVk9MQVRJTEUsIElTX0NIQU5HRUFCTEUsICFJU19DT01QT1NJVEUsIElTX1JFU09MVkVfUFJPWElFUywgIUlTX1VOU0VUVEFCTEUsIElTX1VOSVFVRSwgIUlTX0RFUklWRUQsICFJU19PUkRFUkVEKTsgLy8kTk9OLU5MUy0xJA0KKwkJaW5pdEVSZWZlcmVuY2UoZ2V0UmVxdWlyZW1lbnRSZWxhdGVkX1RyYWNlZEZyb20oKSwgdGhlUmVxdWlyZW1lbnRzUGFja2FnZS5nZXRSZXF1aXJlbWVudCgpLCBudWxsLCAiVHJhY2VkRnJvbSIsIG51bGwsIDEsIC0xLCBSZXF1aXJlbWVudFJlbGF0ZWQuY2xhc3MsIElTX1RSQU5TSUVOVCwgSVNfVk9MQVRJTEUsIElTX0NIQU5HRUFCTEUsICFJU19DT01QT1NJVEUsIElTX1JFU09MVkVfUFJPWElFUywgIUlTX1VOU0VUVEFCTEUsIElTX1VOSVFVRSwgSVNfREVSSVZFRCwgIUlTX09SREVSRUQpOyAvLyROT04tTkxTLTEkDQorCQlpbml0RVJlZmVyZW5jZShnZXRSZXF1aXJlbWVudFJlbGF0ZWRfU2F0aXNmaWVzKCksIHRoZVJlcXVpcmVtZW50c1BhY2thZ2UuZ2V0UmVxdWlyZW1lbnQoKSwgbnVsbCwgIlNhdGlzZmllcyIsIG51bGwsIDEsIC0xLCBSZXF1aXJlbWVudFJlbGF0ZWQuY2xhc3MsIElTX1RSQU5TSUVOVCwgSVNfVk9MQVRJTEUsIElTX0NIQU5HRUFCTEUsICFJU19DT01QT1NJVEUsIElTX1JFU09MVkVfUFJPWElFUywgIUlTX1VOU0VUVEFCTEUsIElTX1VOSVFVRSwgSVNfREVSSVZFRCwgIUlTX09SREVSRUQpOyAvLyROT04tTkxTLTEkDQorCQlpbml0RVJlZmVyZW5jZShnZXRSZXF1aXJlbWVudFJlbGF0ZWRfUmVmaW5lcygpLCB0aGVSZXF1aXJlbWVudHNQYWNrYWdlLmdldFJlcXVpcmVtZW50KCksIG51bGwsICJSZWZpbmVzIiwgbnVsbCwgMSwgLTEsIFJlcXVpcmVtZW50UmVsYXRlZC5jbGFzcywgSVNfVFJBTlNJRU5ULCBJU19WT0xBVElMRSwgSVNfQ0hBTkdFQUJMRSwgIUlTX0NPTVBPU0lURSwgSVNfUkVTT0xWRV9QUk9YSUVTLCAhSVNfVU5TRVRUQUJMRSwgSVNfVU5JUVVFLCBJU19ERVJJVkVELCAhSVNfT1JERVJFRCk7IC8vJE5PTi1OTFMtMSQNCisJCWluaXRFUmVmZXJlbmNlKGdldFJlcXVpcmVtZW50UmVsYXRlZF9WZXJpZmllcygpLCB0aGVSZXF1aXJlbWVudHNQYWNrYWdlLmdldFJlcXVpcmVtZW50KCksIG51bGwsICJWZXJpZmllcyIsIG51bGwsIDEsIC0xLCBSZXF1aXJlbWVudFJlbGF0ZWQuY2xhc3MsIElTX1RSQU5TSUVOVCwgSVNfVk9MQVRJTEUsIElTX0NIQU5HRUFCTEUsICFJU19DT01QT1NJVEUsIElTX1JFU09MVkVfUFJPWElFUywgIUlTX1VOU0VUVEFCTEUsIElTX1VOSVFVRSwgSVNfREVSSVZFRCwgIUlTX09SREVSRUQpOyAvLyROT04tTkxTLTEkDQorDQorCQlpbml0RUNsYXNzKGRlcHJlY2F0ZWRFQ2xhc3MsIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kZXByZWNhdGVkZWxlbWVudHMuRGVwcmVjYXRlZC5jbGFzcywgIkRlcHJlY2F0ZWQiLCAhSVNfQUJTVFJBQ1QsICFJU19JTlRFUkZBQ0UsIElTX0dFTkVSQVRFRF9JTlNUQU5DRV9DTEFTUyk7IC8vJE5PTi1OTFMtMSQNCisJCWluaXRFUmVmZXJlbmNlKGdldERlcHJlY2F0ZWRfQmFzZV9WYWx1ZVNwZWNpZmljYXRpb24oKSwgdGhlVU1MUGFja2FnZS5nZXRWYWx1ZVNwZWNpZmljYXRpb24oKSwgbnVsbCwgImJhc2VfVmFsdWVTcGVjaWZpY2F0aW9uIiwgbnVsbCwgMSwgMSwgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRlcHJlY2F0ZWRlbGVtZW50cy5EZXByZWNhdGVkLmNsYXNzLCAhSVNfVFJBTlNJRU5ULCAhSVNfVk9MQVRJTEUsIElTX0NIQU5HRUFCTEUsICFJU19DT01QT1NJVEUsIElTX1JFU09MVkVfUFJPWElFUywgIUlTX1VOU0VUVEFCTEUsIElTX1VOSVFVRSwgIUlTX0RFUklWRUQsICFJU19PUkRFUkVEKTsgLy8kTk9OLU5MUy0xJA0KKwkJaW5pdEVSZWZlcmVuY2UoZ2V0RGVwcmVjYXRlZF9CYXNlX1Byb3BlcnR5KCksIHRoZVVNTFBhY2thZ2UuZ2V0UHJvcGVydHkoKSwgbnVsbCwgImJhc2VfUHJvcGVydHkiLCBudWxsLCAxLCAxLCBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGVwcmVjYXRlZGVsZW1lbnRzLkRlcHJlY2F0ZWQuY2xhc3MsICFJU19UUkFOU0lFTlQsICFJU19WT0xBVElMRSwgSVNfQ0hBTkdFQUJMRSwgIUlTX0NPTVBPU0lURSwgSVNfUkVTT0xWRV9QUk9YSUVTLCAhSVNfVU5TRVRUQUJMRSwgSVNfVU5JUVVFLCAhSVNfREVSSVZFRCwgIUlTX09SREVSRUQpOyAvLyROT04tTkxTLTEkDQorCQlpbml0RVJlZmVyZW5jZShnZXREZXByZWNhdGVkX0Jhc2VfSW5zdGFuY2VTcGVjaWZpY2F0aW9uKCksIHRoZVVNTFBhY2thZ2UuZ2V0SW5zdGFuY2VTcGVjaWZpY2F0aW9uKCksIG51bGwsICJiYXNlX0luc3RhbmNlU3BlY2lmaWNhdGlvbiIsIG51bGwsIDEsIDEsIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kZXByZWNhdGVkZWxlbWVudHMuRGVwcmVjYXRlZC5jbGFzcywgIUlTX1RSQU5TSUVOVCwgIUlTX1ZPTEFUSUxFLCBJU19DSEFOR0VBQkxFLCAhSVNfQ09NUE9TSVRFLCBJU19SRVNPTFZFX1BST1hJRVMsICFJU19VTlNFVFRBQkxFLCBJU19VTklRVUUsICFJU19ERVJJVkVELCAhSVNfT1JERVJFRCk7IC8vJE5PTi1OTFMtMSQNCisJCWluaXRFUmVmZXJlbmNlKGdldERlcHJlY2F0ZWRfQmFzZV9DbGFzcygpLCB0aGVVTUxQYWNrYWdlLmdldENsYXNzXygpLCBudWxsLCAiYmFzZV9DbGFzcyIsIG51bGwsIDEsIDEsIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kZXByZWNhdGVkZWxlbWVudHMuRGVwcmVjYXRlZC5jbGFzcywgIUlTX1RSQU5TSUVOVCwgIUlTX1ZPTEFUSUxFLCBJU19DSEFOR0VBQkxFLCAhSVNfQ09NUE9TSVRFLCBJU19SRVNPTFZFX1BST1hJRVMsICFJU19VTlNFVFRBQkxFLCBJU19VTklRVUUsICFJU19ERVJJVkVELCAhSVNfT1JERVJFRCk7IC8vJE5PTi1OTFMtMSQNCisJCWluaXRFUmVmZXJlbmNlKGdldERlcHJlY2F0ZWRfQmFzZV9Bc3NvY2lhdGlvbigpLCB0aGVVTUxQYWNrYWdlLmdldEFzc29jaWF0aW9uKCksIG51bGwsICJiYXNlX0Fzc29jaWF0aW9uIiwgbnVsbCwgMSwgMSwgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRlcHJlY2F0ZWRlbGVtZW50cy5EZXByZWNhdGVkLmNsYXNzLCAhSVNfVFJBTlNJRU5ULCAhSVNfVk9MQVRJTEUsIElTX0NIQU5HRUFCTEUsICFJU19DT01QT1NJVEUsIElTX1JFU09MVkVfUFJPWElFUywgIUlTX1VOU0VUVEFCTEUsIElTX1VOSVFVRSwgIUlTX0RFUklWRUQsICFJU19PUkRFUkVEKTsgLy8kTk9OLU5MUy0xJA0KKwkJaW5pdEVBdHRyaWJ1dGUoZ2V0RGVwcmVjYXRlZF9EZXByZWNhdGVkUmVhc29uKCksIHRoZVR5cGVzUGFja2FnZS5nZXRTdHJpbmcoKSwgImRlcHJlY2F0ZWRSZWFzb24iLCBudWxsLCAxLCAxLCBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGVwcmVjYXRlZGVsZW1lbnRzLkRlcHJlY2F0ZWQuY2xhc3MsICFJU19UUkFOU0lFTlQsICFJU19WT0xBVElMRSwgSVNfQ0hBTkdFQUJMRSwgIUlTX1VOU0VUVEFCTEUsICFJU19JRCwgSVNfVU5JUVVFLCAhSVNfREVSSVZFRCwgIUlTX09SREVSRUQpOyAvLyROT04tTkxTLTEkDQorCQlpbml0RVJlZmVyZW5jZShnZXREZXByZWNhdGVkX0Jhc2VfR2VuZXJhbGl6YXRpb24oKSwgdGhlVU1MUGFja2FnZS5nZXRHZW5lcmFsaXphdGlvbigpLCBudWxsLCAiYmFzZV9HZW5lcmFsaXphdGlvbiIsIG51bGwsIDEsIDEsIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kZXByZWNhdGVkZWxlbWVudHMuRGVwcmVjYXRlZC5jbGFzcywgIUlTX1RSQU5TSUVOVCwgIUlTX1ZPTEFUSUxFLCBJU19DSEFOR0VBQkxFLCAhSVNfQ09NUE9TSVRFLCBJU19SRVNPTFZFX1BST1hJRVMsICFJU19VTlNFVFRBQkxFLCBJU19VTklRVUUsICFJU19ERVJJVkVELCAhSVNfT1JERVJFRCk7IC8vJE5PTi1OTFMtMSQNCisJCWluaXRFUmVmZXJlbmNlKGdldERlcHJlY2F0ZWRfQmFzZV9EYXRhVHlwZSgpLCB0aGVVTUxQYWNrYWdlLmdldERhdGFUeXBlKCksIG51bGwsICJiYXNlX0RhdGFUeXBlIiwgbnVsbCwgMSwgMSwgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRlcHJlY2F0ZWRlbGVtZW50cy5EZXByZWNhdGVkLmNsYXNzLCAhSVNfVFJBTlNJRU5ULCAhSVNfVk9MQVRJTEUsIElTX0NIQU5HRUFCTEUsICFJU19DT01QT1NJVEUsIElTX1JFU09MVkVfUFJPWElFUywgIUlTX1VOU0VUVEFCTEUsIElTX1VOSVFVRSwgIUlTX0RFUklWRUQsICFJU19PUkRFUkVEKTsgLy8kTk9OLU5MUy0xJA0KKw0KKwkJLy8gQ3JlYXRlIHJlc291cmNlDQorCQljcmVhdGVSZXNvdXJjZShlTlNfVVJJKTsNCisNCisJCS8vIENyZWF0ZSBhbm5vdGF0aW9ucw0KKwkJLy8gaHR0cDovL3d3dy5lY2xpcHNlLm9yZy91bWwyLzIuMC4wL1VNTA0KKwkJY3JlYXRlVU1MQW5ub3RhdGlvbnMoKTsNCisJfQ0KKw0KKwkvKioNCisJICogSW5pdGlhbGl6ZXMgdGhlIGFubm90YXRpb25zIGZvciA8Yj5odHRwOi8vd3d3LmVjbGlwc2Uub3JnL3VtbDIvMi4wLjAvVU1MPC9iPi4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXByb3RlY3RlZCB2b2lkIGNyZWF0ZVVNTEFubm90YXRpb25zKCkgew0KKwkJU3RyaW5nIHNvdXJjZSA9ICJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3VtbDIvMi4wLjAvVU1MIjsgLy8kTk9OLU5MUy0xJAkNCisJCWFkZEFubm90YXRpb24NCisJCSAgKHRoaXMsIA0KKwkJICAgc291cmNlLCANCisJCSAgIG5ldyBTdHJpbmdbXSB7DQorCQkJICJvcmlnaW5hbE5hbWUiLCAiRGVwcmVjYXRlZEVsZW1lbnRzIiAvLyROT04tTkxTLTEkIC8vJE5PTi1OTFMtMiQNCisJCSAgIH0pOw0KKwl9DQorDQorfSAvL0RlcHJlY2F0ZWRlbGVtZW50c1BhY2thZ2VJbXBsDQpkaWZmIC0tZ2l0IGEvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvZGVwcmVjYXRlZGVsZW1lbnRzL2ludGVybmFsL2ltcGwvRmxvd1BvcnRJbXBsLmphdmEgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9kZXByZWNhdGVkZWxlbWVudHMvaW50ZXJuYWwvaW1wbC9GbG93UG9ydEltcGwuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44OTgxMDIxCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvZGVwcmVjYXRlZGVsZW1lbnRzL2ludGVybmFsL2ltcGwvRmxvd1BvcnRJbXBsLmphdmEKQEAgLTAsMCArMSwyNzcgQEAKKy8qKg0KKyAqIENvcHlyaWdodCAoYykgMjAxNSBDRUEgTElTVC4NCisgKiANCisgKiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KKyAqICBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCisgKiAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCisgKiAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgKi8NCitwYWNrYWdlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kZXByZWNhdGVkZWxlbWVudHMuaW50ZXJuYWwuaW1wbDsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi5ub3RpZnkuTm90aWZpY2F0aW9uOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRUNsYXNzOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuSW50ZXJuYWxFT2JqZWN0Ow0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuaW1wbC5FTm90aWZpY2F0aW9uSW1wbDsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLmltcGwuTWluaW1hbEVPYmplY3RJbXBsOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGVwcmVjYXRlZGVsZW1lbnRzLkRlcHJlY2F0ZWRlbGVtZW50c1BhY2thZ2U7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kZXByZWNhdGVkZWxlbWVudHMuRmxvd1BvcnQ7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5wb3J0YW5kZmxvd3MuRmxvd0RpcmVjdGlvbjsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UudW1sMi51bWwuUG9ydDsNCisNCisvKioNCisgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKyAqIEFuIGltcGxlbWVudGF0aW9uIG9mIHRoZSBtb2RlbCBvYmplY3QgJzxlbT48Yj5GbG93IFBvcnQ8L2I+PC9lbT4nLg0KKyAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKyAqIDxwPg0KKyAqIFRoZSBmb2xsb3dpbmcgZmVhdHVyZXMgYXJlIGltcGxlbWVudGVkOg0KKyAqIDx1bD4NCisgKiAgIDxsaT57QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRlcHJlY2F0ZWRlbGVtZW50cy5pbnRlcm5hbC5pbXBsLkZsb3dQb3J0SW1wbCNnZXRCYXNlX1BvcnQgPGVtPkJhc2UgUG9ydDwvZW0+fTwvbGk+DQorICogICA8bGk+e0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kZXByZWNhdGVkZWxlbWVudHMuaW50ZXJuYWwuaW1wbC5GbG93UG9ydEltcGwjZ2V0RGlyZWN0aW9uIDxlbT5EaXJlY3Rpb248L2VtPn08L2xpPg0KKyAqICAgPGxpPntAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGVwcmVjYXRlZGVsZW1lbnRzLmludGVybmFsLmltcGwuRmxvd1BvcnRJbXBsI2lzQXRvbWljIDxlbT5JcyBBdG9taWM8L2VtPn08L2xpPg0KKyAqIDwvdWw+DQorICogPC9wPg0KKyAqDQorICogQGdlbmVyYXRlZA0KKyAqLw0KK3B1YmxpYyBjbGFzcyBGbG93UG9ydEltcGwgZXh0ZW5kcyBNaW5pbWFsRU9iamVjdEltcGwuQ29udGFpbmVyIGltcGxlbWVudHMgRmxvd1BvcnQgew0KKwkvKioNCisJICogVGhlIGNhY2hlZCB2YWx1ZSBvZiB0aGUgJ3tAbGluayAjZ2V0QmFzZV9Qb3J0KCkgPGVtPkJhc2UgUG9ydDwvZW0+fScgcmVmZXJlbmNlLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHNlZSAjZ2V0QmFzZV9Qb3J0KCkNCisJICogQGdlbmVyYXRlZA0KKwkgKiBAb3JkZXJlZA0KKwkgKi8NCisJcHJvdGVjdGVkIFBvcnQgYmFzZV9Qb3J0Ow0KKw0KKwkvKioNCisJICogVGhlIGRlZmF1bHQgdmFsdWUgb2YgdGhlICd7QGxpbmsgI2dldERpcmVjdGlvbigpIDxlbT5EaXJlY3Rpb248L2VtPn0nIGF0dHJpYnV0ZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBzZWUgI2dldERpcmVjdGlvbigpDQorCSAqIEBnZW5lcmF0ZWQNCisJICogQG9yZGVyZWQNCisJICovDQorCXByb3RlY3RlZCBzdGF0aWMgZmluYWwgRmxvd0RpcmVjdGlvbiBESVJFQ1RJT05fRURFRkFVTFQgPSBGbG93RGlyZWN0aW9uLklOT1VUOw0KKw0KKwkvKioNCisJICogVGhlIGNhY2hlZCB2YWx1ZSBvZiB0aGUgJ3tAbGluayAjZ2V0RGlyZWN0aW9uKCkgPGVtPkRpcmVjdGlvbjwvZW0+fScgYXR0cmlidXRlLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHNlZSAjZ2V0RGlyZWN0aW9uKCkNCisJICogQGdlbmVyYXRlZA0KKwkgKiBAb3JkZXJlZA0KKwkgKi8NCisJcHJvdGVjdGVkIEZsb3dEaXJlY3Rpb24gZGlyZWN0aW9uID0gRElSRUNUSU9OX0VERUZBVUxUOw0KKw0KKwkvKioNCisJICogVGhlIGRlZmF1bHQgdmFsdWUgb2YgdGhlICd7QGxpbmsgI2lzQXRvbWljKCkgPGVtPklzIEF0b21pYzwvZW0+fScgYXR0cmlidXRlLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHNlZSAjaXNBdG9taWMoKQ0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqIEBvcmRlcmVkDQorCSAqLw0KKwlwcm90ZWN0ZWQgc3RhdGljIGZpbmFsIGJvb2xlYW4gSVNfQVRPTUlDX0VERUZBVUxUID0gZmFsc2U7DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHJvdGVjdGVkIEZsb3dQb3J0SW1wbCgpIHsNCisJCXN1cGVyKCk7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHJvdGVjdGVkIEVDbGFzcyBlU3RhdGljQ2xhc3MoKSB7DQorCQlyZXR1cm4gRGVwcmVjYXRlZGVsZW1lbnRzUGFja2FnZS5MaXRlcmFscy5GTE9XX1BPUlQ7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgUG9ydCBnZXRCYXNlX1BvcnQoKSB7DQorCQlpZiAoYmFzZV9Qb3J0ICE9IG51bGwgJiYgYmFzZV9Qb3J0LmVJc1Byb3h5KCkpIHsNCisJCQlJbnRlcm5hbEVPYmplY3Qgb2xkQmFzZV9Qb3J0ID0gKEludGVybmFsRU9iamVjdCliYXNlX1BvcnQ7DQorCQkJYmFzZV9Qb3J0ID0gKFBvcnQpZVJlc29sdmVQcm94eShvbGRCYXNlX1BvcnQpOw0KKwkJCWlmIChiYXNlX1BvcnQgIT0gb2xkQmFzZV9Qb3J0KSB7DQorCQkJCWlmIChlTm90aWZpY2F0aW9uUmVxdWlyZWQoKSkNCisJCQkJCWVOb3RpZnkobmV3IEVOb3RpZmljYXRpb25JbXBsKHRoaXMsIE5vdGlmaWNhdGlvbi5SRVNPTFZFLCBEZXByZWNhdGVkZWxlbWVudHNQYWNrYWdlLkZMT1dfUE9SVF9fQkFTRV9QT1JULCBvbGRCYXNlX1BvcnQsIGJhc2VfUG9ydCkpOw0KKwkJCX0NCisJCX0NCisJCXJldHVybiBiYXNlX1BvcnQ7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgUG9ydCBiYXNpY0dldEJhc2VfUG9ydCgpIHsNCisJCXJldHVybiBiYXNlX1BvcnQ7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgdm9pZCBzZXRCYXNlX1BvcnQoUG9ydCBuZXdCYXNlX1BvcnQpIHsNCisJCVBvcnQgb2xkQmFzZV9Qb3J0ID0gYmFzZV9Qb3J0Ow0KKwkJYmFzZV9Qb3J0ID0gbmV3QmFzZV9Qb3J0Ow0KKwkJaWYgKGVOb3RpZmljYXRpb25SZXF1aXJlZCgpKQ0KKwkJCWVOb3RpZnkobmV3IEVOb3RpZmljYXRpb25JbXBsKHRoaXMsIE5vdGlmaWNhdGlvbi5TRVQsIERlcHJlY2F0ZWRlbGVtZW50c1BhY2thZ2UuRkxPV19QT1JUX19CQVNFX1BPUlQsIG9sZEJhc2VfUG9ydCwgYmFzZV9Qb3J0KSk7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgRmxvd0RpcmVjdGlvbiBnZXREaXJlY3Rpb24oKSB7DQorCQlyZXR1cm4gZGlyZWN0aW9uOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIHZvaWQgc2V0RGlyZWN0aW9uKEZsb3dEaXJlY3Rpb24gbmV3RGlyZWN0aW9uKSB7DQorCQlGbG93RGlyZWN0aW9uIG9sZERpcmVjdGlvbiA9IGRpcmVjdGlvbjsNCisJCWRpcmVjdGlvbiA9IG5ld0RpcmVjdGlvbiA9PSBudWxsID8gRElSRUNUSU9OX0VERUZBVUxUIDogbmV3RGlyZWN0aW9uOw0KKwkJaWYgKGVOb3RpZmljYXRpb25SZXF1aXJlZCgpKQ0KKwkJCWVOb3RpZnkobmV3IEVOb3RpZmljYXRpb25JbXBsKHRoaXMsIE5vdGlmaWNhdGlvbi5TRVQsIERlcHJlY2F0ZWRlbGVtZW50c1BhY2thZ2UuRkxPV19QT1JUX19ESVJFQ1RJT04sIG9sZERpcmVjdGlvbiwgZGlyZWN0aW9uKSk7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgYm9vbGVhbiBpc0F0b21pYygpIHsNCisJCS8vIFRPRE86IGltcGxlbWVudCB0aGlzIG1ldGhvZCB0byByZXR1cm4gdGhlICdJcyBBdG9taWMnIGF0dHJpYnV0ZQ0KKwkJLy8gRW5zdXJlIHRoYXQgeW91IHJlbW92ZSBAZ2VuZXJhdGVkIG9yIG1hcmsgaXQgQGdlbmVyYXRlZCBOT1QNCisJCXRocm93IG5ldyBVbnN1cHBvcnRlZE9wZXJhdGlvbkV4Y2VwdGlvbigpOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIHZvaWQgc2V0SXNBdG9taWMoYm9vbGVhbiBuZXdJc0F0b21pYykgew0KKwkJLy8gVE9ETzogaW1wbGVtZW50IHRoaXMgbWV0aG9kIHRvIHNldCB0aGUgJ0lzIEF0b21pYycgYXR0cmlidXRlDQorCQkvLyBFbnN1cmUgdGhhdCB5b3UgcmVtb3ZlIEBnZW5lcmF0ZWQgb3IgbWFyayBpdCBAZ2VuZXJhdGVkIE5PVA0KKwkJdGhyb3cgbmV3IFVuc3VwcG9ydGVkT3BlcmF0aW9uRXhjZXB0aW9uKCk7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIE9iamVjdCBlR2V0KGludCBmZWF0dXJlSUQsIGJvb2xlYW4gcmVzb2x2ZSwgYm9vbGVhbiBjb3JlVHlwZSkgew0KKwkJc3dpdGNoIChmZWF0dXJlSUQpIHsNCisJCQljYXNlIERlcHJlY2F0ZWRlbGVtZW50c1BhY2thZ2UuRkxPV19QT1JUX19CQVNFX1BPUlQ6DQorCQkJCWlmIChyZXNvbHZlKSByZXR1cm4gZ2V0QmFzZV9Qb3J0KCk7DQorCQkJCXJldHVybiBiYXNpY0dldEJhc2VfUG9ydCgpOw0KKwkJCWNhc2UgRGVwcmVjYXRlZGVsZW1lbnRzUGFja2FnZS5GTE9XX1BPUlRfX0RJUkVDVElPTjoNCisJCQkJcmV0dXJuIGdldERpcmVjdGlvbigpOw0KKwkJCWNhc2UgRGVwcmVjYXRlZGVsZW1lbnRzUGFja2FnZS5GTE9XX1BPUlRfX0lTX0FUT01JQzoNCisJCQkJcmV0dXJuIGlzQXRvbWljKCk7DQorCQl9DQorCQlyZXR1cm4gc3VwZXIuZUdldChmZWF0dXJlSUQsIHJlc29sdmUsIGNvcmVUeXBlKTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgdm9pZCBlU2V0KGludCBmZWF0dXJlSUQsIE9iamVjdCBuZXdWYWx1ZSkgew0KKwkJc3dpdGNoIChmZWF0dXJlSUQpIHsNCisJCQljYXNlIERlcHJlY2F0ZWRlbGVtZW50c1BhY2thZ2UuRkxPV19QT1JUX19CQVNFX1BPUlQ6DQorCQkJCXNldEJhc2VfUG9ydCgoUG9ydCluZXdWYWx1ZSk7DQorCQkJCXJldHVybjsNCisJCQljYXNlIERlcHJlY2F0ZWRlbGVtZW50c1BhY2thZ2UuRkxPV19QT1JUX19ESVJFQ1RJT046DQorCQkJCXNldERpcmVjdGlvbigoRmxvd0RpcmVjdGlvbiluZXdWYWx1ZSk7DQorCQkJCXJldHVybjsNCisJCQljYXNlIERlcHJlY2F0ZWRlbGVtZW50c1BhY2thZ2UuRkxPV19QT1JUX19JU19BVE9NSUM6DQorCQkJCXNldElzQXRvbWljKChCb29sZWFuKW5ld1ZhbHVlKTsNCisJCQkJcmV0dXJuOw0KKwkJfQ0KKwkJc3VwZXIuZVNldChmZWF0dXJlSUQsIG5ld1ZhbHVlKTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgdm9pZCBlVW5zZXQoaW50IGZlYXR1cmVJRCkgew0KKwkJc3dpdGNoIChmZWF0dXJlSUQpIHsNCisJCQljYXNlIERlcHJlY2F0ZWRlbGVtZW50c1BhY2thZ2UuRkxPV19QT1JUX19CQVNFX1BPUlQ6DQorCQkJCXNldEJhc2VfUG9ydCgoUG9ydCludWxsKTsNCisJCQkJcmV0dXJuOw0KKwkJCWNhc2UgRGVwcmVjYXRlZGVsZW1lbnRzUGFja2FnZS5GTE9XX1BPUlRfX0RJUkVDVElPTjoNCisJCQkJc2V0RGlyZWN0aW9uKERJUkVDVElPTl9FREVGQVVMVCk7DQorCQkJCXJldHVybjsNCisJCQljYXNlIERlcHJlY2F0ZWRlbGVtZW50c1BhY2thZ2UuRkxPV19QT1JUX19JU19BVE9NSUM6DQorCQkJCXNldElzQXRvbWljKElTX0FUT01JQ19FREVGQVVMVCk7DQorCQkJCXJldHVybjsNCisJCX0NCisJCXN1cGVyLmVVbnNldChmZWF0dXJlSUQpOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXB1YmxpYyBib29sZWFuIGVJc1NldChpbnQgZmVhdHVyZUlEKSB7DQorCQlzd2l0Y2ggKGZlYXR1cmVJRCkgew0KKwkJCWNhc2UgRGVwcmVjYXRlZGVsZW1lbnRzUGFja2FnZS5GTE9XX1BPUlRfX0JBU0VfUE9SVDoNCisJCQkJcmV0dXJuIGJhc2VfUG9ydCAhPSBudWxsOw0KKwkJCWNhc2UgRGVwcmVjYXRlZGVsZW1lbnRzUGFja2FnZS5GTE9XX1BPUlRfX0RJUkVDVElPTjoNCisJCQkJcmV0dXJuIGRpcmVjdGlvbiAhPSBESVJFQ1RJT05fRURFRkFVTFQ7DQorCQkJY2FzZSBEZXByZWNhdGVkZWxlbWVudHNQYWNrYWdlLkZMT1dfUE9SVF9fSVNfQVRPTUlDOg0KKwkJCQlyZXR1cm4gaXNBdG9taWMoKSAhPSBJU19BVE9NSUNfRURFRkFVTFQ7DQorCQl9DQorCQlyZXR1cm4gc3VwZXIuZUlzU2V0KGZlYXR1cmVJRCk7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIFN0cmluZyB0b1N0cmluZygpIHsNCisJCWlmIChlSXNQcm94eSgpKSByZXR1cm4gc3VwZXIudG9TdHJpbmcoKTsNCisNCisJCVN0cmluZ0J1ZmZlciByZXN1bHQgPSBuZXcgU3RyaW5nQnVmZmVyKHN1cGVyLnRvU3RyaW5nKCkpOw0KKwkJcmVzdWx0LmFwcGVuZCgiIChkaXJlY3Rpb246ICIpOyAvLyROT04tTkxTLTEkDQorCQlyZXN1bHQuYXBwZW5kKGRpcmVjdGlvbik7DQorCQlyZXN1bHQuYXBwZW5kKCcpJyk7DQorCQlyZXR1cm4gcmVzdWx0LnRvU3RyaW5nKCk7DQorCX0NCisNCit9IC8vRmxvd1BvcnRJbXBsDQpkaWZmIC0tZ2l0IGEvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvZGVwcmVjYXRlZGVsZW1lbnRzL2ludGVybmFsL2ltcGwvRmxvd1NwZWNpZmljYXRpb25JbXBsLmphdmEgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9kZXByZWNhdGVkZWxlbWVudHMvaW50ZXJuYWwvaW1wbC9GbG93U3BlY2lmaWNhdGlvbkltcGwuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZDM4ZGFlCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvZGVwcmVjYXRlZGVsZW1lbnRzL2ludGVybmFsL2ltcGwvRmxvd1NwZWNpZmljYXRpb25JbXBsLmphdmEKQEAgLTAsMCArMSwxNjQgQEAKKy8qKg0KKyAqIENvcHlyaWdodCAoYykgMjAxNSBDRUEgTElTVC4NCisgKiANCisgKiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KKyAqICBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCisgKiAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCisgKiAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgKi8NCitwYWNrYWdlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kZXByZWNhdGVkZWxlbWVudHMuaW50ZXJuYWwuaW1wbDsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi5ub3RpZnkuTm90aWZpY2F0aW9uOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRUNsYXNzOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuSW50ZXJuYWxFT2JqZWN0Ow0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuaW1wbC5FTm90aWZpY2F0aW9uSW1wbDsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLmltcGwuTWluaW1hbEVPYmplY3RJbXBsOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGVwcmVjYXRlZGVsZW1lbnRzLkRlcHJlY2F0ZWRlbGVtZW50c1BhY2thZ2U7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kZXByZWNhdGVkZWxlbWVudHMuRmxvd1NwZWNpZmljYXRpb247DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLnVtbDIudW1sLkludGVyZmFjZTsNCisNCisvKioNCisgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKyAqIEFuIGltcGxlbWVudGF0aW9uIG9mIHRoZSBtb2RlbCBvYmplY3QgJzxlbT48Yj5GbG93IFNwZWNpZmljYXRpb248L2I+PC9lbT4nLg0KKyAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKyAqIDxwPg0KKyAqIFRoZSBmb2xsb3dpbmcgZmVhdHVyZXMgYXJlIGltcGxlbWVudGVkOg0KKyAqIDx1bD4NCisgKiAgIDxsaT57QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRlcHJlY2F0ZWRlbGVtZW50cy5pbnRlcm5hbC5pbXBsLkZsb3dTcGVjaWZpY2F0aW9uSW1wbCNnZXRCYXNlX0ludGVyZmFjZSA8ZW0+QmFzZSBJbnRlcmZhY2U8L2VtPn08L2xpPg0KKyAqIDwvdWw+DQorICogPC9wPg0KKyAqDQorICogQGdlbmVyYXRlZA0KKyAqLw0KK3B1YmxpYyBjbGFzcyBGbG93U3BlY2lmaWNhdGlvbkltcGwgZXh0ZW5kcyBNaW5pbWFsRU9iamVjdEltcGwuQ29udGFpbmVyIGltcGxlbWVudHMgRmxvd1NwZWNpZmljYXRpb24gew0KKwkvKioNCisJICogVGhlIGNhY2hlZCB2YWx1ZSBvZiB0aGUgJ3tAbGluayAjZ2V0QmFzZV9JbnRlcmZhY2UoKSA8ZW0+QmFzZSBJbnRlcmZhY2U8L2VtPn0nIHJlZmVyZW5jZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBzZWUgI2dldEJhc2VfSW50ZXJmYWNlKCkNCisJICogQGdlbmVyYXRlZA0KKwkgKiBAb3JkZXJlZA0KKwkgKi8NCisJcHJvdGVjdGVkIEludGVyZmFjZSBiYXNlX0ludGVyZmFjZTsNCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwcm90ZWN0ZWQgRmxvd1NwZWNpZmljYXRpb25JbXBsKCkgew0KKwkJc3VwZXIoKTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwcm90ZWN0ZWQgRUNsYXNzIGVTdGF0aWNDbGFzcygpIHsNCisJCXJldHVybiBEZXByZWNhdGVkZWxlbWVudHNQYWNrYWdlLkxpdGVyYWxzLkZMT1dfU1BFQ0lGSUNBVElPTjsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBJbnRlcmZhY2UgZ2V0QmFzZV9JbnRlcmZhY2UoKSB7DQorCQlpZiAoYmFzZV9JbnRlcmZhY2UgIT0gbnVsbCAmJiBiYXNlX0ludGVyZmFjZS5lSXNQcm94eSgpKSB7DQorCQkJSW50ZXJuYWxFT2JqZWN0IG9sZEJhc2VfSW50ZXJmYWNlID0gKEludGVybmFsRU9iamVjdCliYXNlX0ludGVyZmFjZTsNCisJCQliYXNlX0ludGVyZmFjZSA9IChJbnRlcmZhY2UpZVJlc29sdmVQcm94eShvbGRCYXNlX0ludGVyZmFjZSk7DQorCQkJaWYgKGJhc2VfSW50ZXJmYWNlICE9IG9sZEJhc2VfSW50ZXJmYWNlKSB7DQorCQkJCWlmIChlTm90aWZpY2F0aW9uUmVxdWlyZWQoKSkNCisJCQkJCWVOb3RpZnkobmV3IEVOb3RpZmljYXRpb25JbXBsKHRoaXMsIE5vdGlmaWNhdGlvbi5SRVNPTFZFLCBEZXByZWNhdGVkZWxlbWVudHNQYWNrYWdlLkZMT1dfU1BFQ0lGSUNBVElPTl9fQkFTRV9JTlRFUkZBQ0UsIG9sZEJhc2VfSW50ZXJmYWNlLCBiYXNlX0ludGVyZmFjZSkpOw0KKwkJCX0NCisJCX0NCisJCXJldHVybiBiYXNlX0ludGVyZmFjZTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBJbnRlcmZhY2UgYmFzaWNHZXRCYXNlX0ludGVyZmFjZSgpIHsNCisJCXJldHVybiBiYXNlX0ludGVyZmFjZTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyB2b2lkIHNldEJhc2VfSW50ZXJmYWNlKEludGVyZmFjZSBuZXdCYXNlX0ludGVyZmFjZSkgew0KKwkJSW50ZXJmYWNlIG9sZEJhc2VfSW50ZXJmYWNlID0gYmFzZV9JbnRlcmZhY2U7DQorCQliYXNlX0ludGVyZmFjZSA9IG5ld0Jhc2VfSW50ZXJmYWNlOw0KKwkJaWYgKGVOb3RpZmljYXRpb25SZXF1aXJlZCgpKQ0KKwkJCWVOb3RpZnkobmV3IEVOb3RpZmljYXRpb25JbXBsKHRoaXMsIE5vdGlmaWNhdGlvbi5TRVQsIERlcHJlY2F0ZWRlbGVtZW50c1BhY2thZ2UuRkxPV19TUEVDSUZJQ0FUSU9OX19CQVNFX0lOVEVSRkFDRSwgb2xkQmFzZV9JbnRlcmZhY2UsIGJhc2VfSW50ZXJmYWNlKSk7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIE9iamVjdCBlR2V0KGludCBmZWF0dXJlSUQsIGJvb2xlYW4gcmVzb2x2ZSwgYm9vbGVhbiBjb3JlVHlwZSkgew0KKwkJc3dpdGNoIChmZWF0dXJlSUQpIHsNCisJCQljYXNlIERlcHJlY2F0ZWRlbGVtZW50c1BhY2thZ2UuRkxPV19TUEVDSUZJQ0FUSU9OX19CQVNFX0lOVEVSRkFDRToNCisJCQkJaWYgKHJlc29sdmUpIHJldHVybiBnZXRCYXNlX0ludGVyZmFjZSgpOw0KKwkJCQlyZXR1cm4gYmFzaWNHZXRCYXNlX0ludGVyZmFjZSgpOw0KKwkJfQ0KKwkJcmV0dXJuIHN1cGVyLmVHZXQoZmVhdHVyZUlELCByZXNvbHZlLCBjb3JlVHlwZSk7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIHZvaWQgZVNldChpbnQgZmVhdHVyZUlELCBPYmplY3QgbmV3VmFsdWUpIHsNCisJCXN3aXRjaCAoZmVhdHVyZUlEKSB7DQorCQkJY2FzZSBEZXByZWNhdGVkZWxlbWVudHNQYWNrYWdlLkZMT1dfU1BFQ0lGSUNBVElPTl9fQkFTRV9JTlRFUkZBQ0U6DQorCQkJCXNldEJhc2VfSW50ZXJmYWNlKChJbnRlcmZhY2UpbmV3VmFsdWUpOw0KKwkJCQlyZXR1cm47DQorCQl9DQorCQlzdXBlci5lU2V0KGZlYXR1cmVJRCwgbmV3VmFsdWUpOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXB1YmxpYyB2b2lkIGVVbnNldChpbnQgZmVhdHVyZUlEKSB7DQorCQlzd2l0Y2ggKGZlYXR1cmVJRCkgew0KKwkJCWNhc2UgRGVwcmVjYXRlZGVsZW1lbnRzUGFja2FnZS5GTE9XX1NQRUNJRklDQVRJT05fX0JBU0VfSU5URVJGQUNFOg0KKwkJCQlzZXRCYXNlX0ludGVyZmFjZSgoSW50ZXJmYWNlKW51bGwpOw0KKwkJCQlyZXR1cm47DQorCQl9DQorCQlzdXBlci5lVW5zZXQoZmVhdHVyZUlEKTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgYm9vbGVhbiBlSXNTZXQoaW50IGZlYXR1cmVJRCkgew0KKwkJc3dpdGNoIChmZWF0dXJlSUQpIHsNCisJCQljYXNlIERlcHJlY2F0ZWRlbGVtZW50c1BhY2thZ2UuRkxPV19TUEVDSUZJQ0FUSU9OX19CQVNFX0lOVEVSRkFDRToNCisJCQkJcmV0dXJuIGJhc2VfSW50ZXJmYWNlICE9IG51bGw7DQorCQl9DQorCQlyZXR1cm4gc3VwZXIuZUlzU2V0KGZlYXR1cmVJRCk7DQorCX0NCisNCit9IC8vRmxvd1NwZWNpZmljYXRpb25JbXBsDQpkaWZmIC0tZ2l0IGEvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvZGVwcmVjYXRlZGVsZW1lbnRzL2ludGVybmFsL2ltcGwvUmVxdWlyZW1lbnRSZWxhdGVkSW1wbC5qYXZhIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvZGVwcmVjYXRlZGVsZW1lbnRzL2ludGVybmFsL2ltcGwvUmVxdWlyZW1lbnRSZWxhdGVkSW1wbC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA3NDllZTEKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9kZXByZWNhdGVkZWxlbWVudHMvaW50ZXJuYWwvaW1wbC9SZXF1aXJlbWVudFJlbGF0ZWRJbXBsLmphdmEKQEAgLTAsMCArMSwyNjMgQEAKKy8qKg0KKyAqIENvcHlyaWdodCAoYykgMjAxNSBDRUEgTElTVC4NCisgKiANCisgKiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KKyAqICBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCisgKiAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCisgKiAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgKi8NCitwYWNrYWdlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kZXByZWNhdGVkZWxlbWVudHMuaW50ZXJuYWwuaW1wbDsNCisNCitpbXBvcnQgamF2YS51dGlsLkNvbGxlY3Rpb247DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jb21tb24ubm90aWZ5Lk5vdGlmaWNhdGlvbjsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi51dGlsLkVMaXN0Ow0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRUNsYXNzOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuSW50ZXJuYWxFT2JqZWN0Ow0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuaW1wbC5FTm90aWZpY2F0aW9uSW1wbDsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLmltcGwuTWluaW1hbEVPYmplY3RJbXBsOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGVwcmVjYXRlZGVsZW1lbnRzLkRlcHJlY2F0ZWRlbGVtZW50c1BhY2thZ2U7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kZXByZWNhdGVkZWxlbWVudHMuUmVxdWlyZW1lbnRSZWxhdGVkOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucmVxdWlyZW1lbnRzLlJlcXVpcmVtZW50Ow0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS51bWwyLnVtbC5OYW1lZEVsZW1lbnQ7DQorDQorLyoqDQorICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisgKiBBbiBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgbW9kZWwgb2JqZWN0ICc8ZW0+PGI+UmVxdWlyZW1lbnQgUmVsYXRlZDwvYj48L2VtPicuDQorICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorICogPHA+DQorICogVGhlIGZvbGxvd2luZyBmZWF0dXJlcyBhcmUgaW1wbGVtZW50ZWQ6DQorICogPHVsPg0KKyAqICAgPGxpPntAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGVwcmVjYXRlZGVsZW1lbnRzLmludGVybmFsLmltcGwuUmVxdWlyZW1lbnRSZWxhdGVkSW1wbCNnZXRCYXNlX05hbWVkRWxlbWVudCA8ZW0+QmFzZSBOYW1lZCBFbGVtZW50PC9lbT59PC9saT4NCisgKiAgIDxsaT57QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRlcHJlY2F0ZWRlbGVtZW50cy5pbnRlcm5hbC5pbXBsLlJlcXVpcmVtZW50UmVsYXRlZEltcGwjZ2V0VHJhY2VkRnJvbSA8ZW0+VHJhY2VkIEZyb208L2VtPn08L2xpPg0KKyAqICAgPGxpPntAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGVwcmVjYXRlZGVsZW1lbnRzLmludGVybmFsLmltcGwuUmVxdWlyZW1lbnRSZWxhdGVkSW1wbCNnZXRTYXRpc2ZpZXMgPGVtPlNhdGlzZmllczwvZW0+fTwvbGk+DQorICogICA8bGk+e0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kZXByZWNhdGVkZWxlbWVudHMuaW50ZXJuYWwuaW1wbC5SZXF1aXJlbWVudFJlbGF0ZWRJbXBsI2dldFJlZmluZXMgPGVtPlJlZmluZXM8L2VtPn08L2xpPg0KKyAqICAgPGxpPntAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGVwcmVjYXRlZGVsZW1lbnRzLmludGVybmFsLmltcGwuUmVxdWlyZW1lbnRSZWxhdGVkSW1wbCNnZXRWZXJpZmllcyA8ZW0+VmVyaWZpZXM8L2VtPn08L2xpPg0KKyAqIDwvdWw+DQorICogPC9wPg0KKyAqDQorICogQGdlbmVyYXRlZA0KKyAqLw0KK3B1YmxpYyBjbGFzcyBSZXF1aXJlbWVudFJlbGF0ZWRJbXBsIGV4dGVuZHMgTWluaW1hbEVPYmplY3RJbXBsLkNvbnRhaW5lciBpbXBsZW1lbnRzIFJlcXVpcmVtZW50UmVsYXRlZCB7DQorCS8qKg0KKwkgKiBUaGUgY2FjaGVkIHZhbHVlIG9mIHRoZSAne0BsaW5rICNnZXRCYXNlX05hbWVkRWxlbWVudCgpIDxlbT5CYXNlIE5hbWVkIEVsZW1lbnQ8L2VtPn0nIHJlZmVyZW5jZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBzZWUgI2dldEJhc2VfTmFtZWRFbGVtZW50KCkNCisJICogQGdlbmVyYXRlZA0KKwkgKiBAb3JkZXJlZA0KKwkgKi8NCisJcHJvdGVjdGVkIE5hbWVkRWxlbWVudCBiYXNlX05hbWVkRWxlbWVudDsNCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwcm90ZWN0ZWQgUmVxdWlyZW1lbnRSZWxhdGVkSW1wbCgpIHsNCisJCXN1cGVyKCk7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHJvdGVjdGVkIEVDbGFzcyBlU3RhdGljQ2xhc3MoKSB7DQorCQlyZXR1cm4gRGVwcmVjYXRlZGVsZW1lbnRzUGFja2FnZS5MaXRlcmFscy5SRVFVSVJFTUVOVF9SRUxBVEVEOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIE5hbWVkRWxlbWVudCBnZXRCYXNlX05hbWVkRWxlbWVudCgpIHsNCisJCWlmIChiYXNlX05hbWVkRWxlbWVudCAhPSBudWxsICYmIGJhc2VfTmFtZWRFbGVtZW50LmVJc1Byb3h5KCkpIHsNCisJCQlJbnRlcm5hbEVPYmplY3Qgb2xkQmFzZV9OYW1lZEVsZW1lbnQgPSAoSW50ZXJuYWxFT2JqZWN0KWJhc2VfTmFtZWRFbGVtZW50Ow0KKwkJCWJhc2VfTmFtZWRFbGVtZW50ID0gKE5hbWVkRWxlbWVudCllUmVzb2x2ZVByb3h5KG9sZEJhc2VfTmFtZWRFbGVtZW50KTsNCisJCQlpZiAoYmFzZV9OYW1lZEVsZW1lbnQgIT0gb2xkQmFzZV9OYW1lZEVsZW1lbnQpIHsNCisJCQkJaWYgKGVOb3RpZmljYXRpb25SZXF1aXJlZCgpKQ0KKwkJCQkJZU5vdGlmeShuZXcgRU5vdGlmaWNhdGlvbkltcGwodGhpcywgTm90aWZpY2F0aW9uLlJFU09MVkUsIERlcHJlY2F0ZWRlbGVtZW50c1BhY2thZ2UuUkVRVUlSRU1FTlRfUkVMQVRFRF9fQkFTRV9OQU1FRF9FTEVNRU5ULCBvbGRCYXNlX05hbWVkRWxlbWVudCwgYmFzZV9OYW1lZEVsZW1lbnQpKTsNCisJCQl9DQorCQl9DQorCQlyZXR1cm4gYmFzZV9OYW1lZEVsZW1lbnQ7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgTmFtZWRFbGVtZW50IGJhc2ljR2V0QmFzZV9OYW1lZEVsZW1lbnQoKSB7DQorCQlyZXR1cm4gYmFzZV9OYW1lZEVsZW1lbnQ7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgdm9pZCBzZXRCYXNlX05hbWVkRWxlbWVudChOYW1lZEVsZW1lbnQgbmV3QmFzZV9OYW1lZEVsZW1lbnQpIHsNCisJCU5hbWVkRWxlbWVudCBvbGRCYXNlX05hbWVkRWxlbWVudCA9IGJhc2VfTmFtZWRFbGVtZW50Ow0KKwkJYmFzZV9OYW1lZEVsZW1lbnQgPSBuZXdCYXNlX05hbWVkRWxlbWVudDsNCisJCWlmIChlTm90aWZpY2F0aW9uUmVxdWlyZWQoKSkNCisJCQllTm90aWZ5KG5ldyBFTm90aWZpY2F0aW9uSW1wbCh0aGlzLCBOb3RpZmljYXRpb24uU0VULCBEZXByZWNhdGVkZWxlbWVudHNQYWNrYWdlLlJFUVVJUkVNRU5UX1JFTEFURURfX0JBU0VfTkFNRURfRUxFTUVOVCwgb2xkQmFzZV9OYW1lZEVsZW1lbnQsIGJhc2VfTmFtZWRFbGVtZW50KSk7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgRUxpc3Q8UmVxdWlyZW1lbnQ+IGdldFRyYWNlZEZyb20oKSB7DQorCQkvLyBUT0RPOiBpbXBsZW1lbnQgdGhpcyBtZXRob2QgdG8gcmV0dXJuIHRoZSAnVHJhY2VkIEZyb20nIHJlZmVyZW5jZSBsaXN0DQorCQkvLyBFbnN1cmUgdGhhdCB5b3UgcmVtb3ZlIEBnZW5lcmF0ZWQgb3IgbWFyayBpdCBAZ2VuZXJhdGVkIE5PVA0KKwkJdGhyb3cgbmV3IFVuc3VwcG9ydGVkT3BlcmF0aW9uRXhjZXB0aW9uKCk7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgRUxpc3Q8UmVxdWlyZW1lbnQ+IGdldFNhdGlzZmllcygpIHsNCisJCS8vIFRPRE86IGltcGxlbWVudCB0aGlzIG1ldGhvZCB0byByZXR1cm4gdGhlICdTYXRpc2ZpZXMnIHJlZmVyZW5jZSBsaXN0DQorCQkvLyBFbnN1cmUgdGhhdCB5b3UgcmVtb3ZlIEBnZW5lcmF0ZWQgb3IgbWFyayBpdCBAZ2VuZXJhdGVkIE5PVA0KKwkJdGhyb3cgbmV3IFVuc3VwcG9ydGVkT3BlcmF0aW9uRXhjZXB0aW9uKCk7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgRUxpc3Q8UmVxdWlyZW1lbnQ+IGdldFJlZmluZXMoKSB7DQorCQkvLyBUT0RPOiBpbXBsZW1lbnQgdGhpcyBtZXRob2QgdG8gcmV0dXJuIHRoZSAnUmVmaW5lcycgcmVmZXJlbmNlIGxpc3QNCisJCS8vIEVuc3VyZSB0aGF0IHlvdSByZW1vdmUgQGdlbmVyYXRlZCBvciBtYXJrIGl0IEBnZW5lcmF0ZWQgTk9UDQorCQl0aHJvdyBuZXcgVW5zdXBwb3J0ZWRPcGVyYXRpb25FeGNlcHRpb24oKTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBFTGlzdDxSZXF1aXJlbWVudD4gZ2V0VmVyaWZpZXMoKSB7DQorCQkvLyBUT0RPOiBpbXBsZW1lbnQgdGhpcyBtZXRob2QgdG8gcmV0dXJuIHRoZSAnVmVyaWZpZXMnIHJlZmVyZW5jZSBsaXN0DQorCQkvLyBFbnN1cmUgdGhhdCB5b3UgcmVtb3ZlIEBnZW5lcmF0ZWQgb3IgbWFyayBpdCBAZ2VuZXJhdGVkIE5PVA0KKwkJdGhyb3cgbmV3IFVuc3VwcG9ydGVkT3BlcmF0aW9uRXhjZXB0aW9uKCk7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIE9iamVjdCBlR2V0KGludCBmZWF0dXJlSUQsIGJvb2xlYW4gcmVzb2x2ZSwgYm9vbGVhbiBjb3JlVHlwZSkgew0KKwkJc3dpdGNoIChmZWF0dXJlSUQpIHsNCisJCQljYXNlIERlcHJlY2F0ZWRlbGVtZW50c1BhY2thZ2UuUkVRVUlSRU1FTlRfUkVMQVRFRF9fQkFTRV9OQU1FRF9FTEVNRU5UOg0KKwkJCQlpZiAocmVzb2x2ZSkgcmV0dXJuIGdldEJhc2VfTmFtZWRFbGVtZW50KCk7DQorCQkJCXJldHVybiBiYXNpY0dldEJhc2VfTmFtZWRFbGVtZW50KCk7DQorCQkJY2FzZSBEZXByZWNhdGVkZWxlbWVudHNQYWNrYWdlLlJFUVVJUkVNRU5UX1JFTEFURURfX1RSQUNFRF9GUk9NOg0KKwkJCQlyZXR1cm4gZ2V0VHJhY2VkRnJvbSgpOw0KKwkJCWNhc2UgRGVwcmVjYXRlZGVsZW1lbnRzUGFja2FnZS5SRVFVSVJFTUVOVF9SRUxBVEVEX19TQVRJU0ZJRVM6DQorCQkJCXJldHVybiBnZXRTYXRpc2ZpZXMoKTsNCisJCQljYXNlIERlcHJlY2F0ZWRlbGVtZW50c1BhY2thZ2UuUkVRVUlSRU1FTlRfUkVMQVRFRF9fUkVGSU5FUzoNCisJCQkJcmV0dXJuIGdldFJlZmluZXMoKTsNCisJCQljYXNlIERlcHJlY2F0ZWRlbGVtZW50c1BhY2thZ2UuUkVRVUlSRU1FTlRfUkVMQVRFRF9fVkVSSUZJRVM6DQorCQkJCXJldHVybiBnZXRWZXJpZmllcygpOw0KKwkJfQ0KKwkJcmV0dXJuIHN1cGVyLmVHZXQoZmVhdHVyZUlELCByZXNvbHZlLCBjb3JlVHlwZSk7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAU3VwcHJlc3NXYXJuaW5ncygidW5jaGVja2VkIikNCisJQE92ZXJyaWRlDQorCXB1YmxpYyB2b2lkIGVTZXQoaW50IGZlYXR1cmVJRCwgT2JqZWN0IG5ld1ZhbHVlKSB7DQorCQlzd2l0Y2ggKGZlYXR1cmVJRCkgew0KKwkJCWNhc2UgRGVwcmVjYXRlZGVsZW1lbnRzUGFja2FnZS5SRVFVSVJFTUVOVF9SRUxBVEVEX19CQVNFX05BTUVEX0VMRU1FTlQ6DQorCQkJCXNldEJhc2VfTmFtZWRFbGVtZW50KChOYW1lZEVsZW1lbnQpbmV3VmFsdWUpOw0KKwkJCQlyZXR1cm47DQorCQkJY2FzZSBEZXByZWNhdGVkZWxlbWVudHNQYWNrYWdlLlJFUVVJUkVNRU5UX1JFTEFURURfX1RSQUNFRF9GUk9NOg0KKwkJCQlnZXRUcmFjZWRGcm9tKCkuY2xlYXIoKTsNCisJCQkJZ2V0VHJhY2VkRnJvbSgpLmFkZEFsbCgoQ29sbGVjdGlvbjw/IGV4dGVuZHMgUmVxdWlyZW1lbnQ+KW5ld1ZhbHVlKTsNCisJCQkJcmV0dXJuOw0KKwkJCWNhc2UgRGVwcmVjYXRlZGVsZW1lbnRzUGFja2FnZS5SRVFVSVJFTUVOVF9SRUxBVEVEX19TQVRJU0ZJRVM6DQorCQkJCWdldFNhdGlzZmllcygpLmNsZWFyKCk7DQorCQkJCWdldFNhdGlzZmllcygpLmFkZEFsbCgoQ29sbGVjdGlvbjw/IGV4dGVuZHMgUmVxdWlyZW1lbnQ+KW5ld1ZhbHVlKTsNCisJCQkJcmV0dXJuOw0KKwkJCWNhc2UgRGVwcmVjYXRlZGVsZW1lbnRzUGFja2FnZS5SRVFVSVJFTUVOVF9SRUxBVEVEX19SRUZJTkVTOg0KKwkJCQlnZXRSZWZpbmVzKCkuY2xlYXIoKTsNCisJCQkJZ2V0UmVmaW5lcygpLmFkZEFsbCgoQ29sbGVjdGlvbjw/IGV4dGVuZHMgUmVxdWlyZW1lbnQ+KW5ld1ZhbHVlKTsNCisJCQkJcmV0dXJuOw0KKwkJCWNhc2UgRGVwcmVjYXRlZGVsZW1lbnRzUGFja2FnZS5SRVFVSVJFTUVOVF9SRUxBVEVEX19WRVJJRklFUzoNCisJCQkJZ2V0VmVyaWZpZXMoKS5jbGVhcigpOw0KKwkJCQlnZXRWZXJpZmllcygpLmFkZEFsbCgoQ29sbGVjdGlvbjw/IGV4dGVuZHMgUmVxdWlyZW1lbnQ+KW5ld1ZhbHVlKTsNCisJCQkJcmV0dXJuOw0KKwkJfQ0KKwkJc3VwZXIuZVNldChmZWF0dXJlSUQsIG5ld1ZhbHVlKTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgdm9pZCBlVW5zZXQoaW50IGZlYXR1cmVJRCkgew0KKwkJc3dpdGNoIChmZWF0dXJlSUQpIHsNCisJCQljYXNlIERlcHJlY2F0ZWRlbGVtZW50c1BhY2thZ2UuUkVRVUlSRU1FTlRfUkVMQVRFRF9fQkFTRV9OQU1FRF9FTEVNRU5UOg0KKwkJCQlzZXRCYXNlX05hbWVkRWxlbWVudCgoTmFtZWRFbGVtZW50KW51bGwpOw0KKwkJCQlyZXR1cm47DQorCQkJY2FzZSBEZXByZWNhdGVkZWxlbWVudHNQYWNrYWdlLlJFUVVJUkVNRU5UX1JFTEFURURfX1RSQUNFRF9GUk9NOg0KKwkJCQlnZXRUcmFjZWRGcm9tKCkuY2xlYXIoKTsNCisJCQkJcmV0dXJuOw0KKwkJCWNhc2UgRGVwcmVjYXRlZGVsZW1lbnRzUGFja2FnZS5SRVFVSVJFTUVOVF9SRUxBVEVEX19TQVRJU0ZJRVM6DQorCQkJCWdldFNhdGlzZmllcygpLmNsZWFyKCk7DQorCQkJCXJldHVybjsNCisJCQljYXNlIERlcHJlY2F0ZWRlbGVtZW50c1BhY2thZ2UuUkVRVUlSRU1FTlRfUkVMQVRFRF9fUkVGSU5FUzoNCisJCQkJZ2V0UmVmaW5lcygpLmNsZWFyKCk7DQorCQkJCXJldHVybjsNCisJCQljYXNlIERlcHJlY2F0ZWRlbGVtZW50c1BhY2thZ2UuUkVRVUlSRU1FTlRfUkVMQVRFRF9fVkVSSUZJRVM6DQorCQkJCWdldFZlcmlmaWVzKCkuY2xlYXIoKTsNCisJCQkJcmV0dXJuOw0KKwkJfQ0KKwkJc3VwZXIuZVVuc2V0KGZlYXR1cmVJRCk7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIGJvb2xlYW4gZUlzU2V0KGludCBmZWF0dXJlSUQpIHsNCisJCXN3aXRjaCAoZmVhdHVyZUlEKSB7DQorCQkJY2FzZSBEZXByZWNhdGVkZWxlbWVudHNQYWNrYWdlLlJFUVVJUkVNRU5UX1JFTEFURURfX0JBU0VfTkFNRURfRUxFTUVOVDoNCisJCQkJcmV0dXJuIGJhc2VfTmFtZWRFbGVtZW50ICE9IG51bGw7DQorCQkJY2FzZSBEZXByZWNhdGVkZWxlbWVudHNQYWNrYWdlLlJFUVVJUkVNRU5UX1JFTEFURURfX1RSQUNFRF9GUk9NOg0KKwkJCQlyZXR1cm4gIWdldFRyYWNlZEZyb20oKS5pc0VtcHR5KCk7DQorCQkJY2FzZSBEZXByZWNhdGVkZWxlbWVudHNQYWNrYWdlLlJFUVVJUkVNRU5UX1JFTEFURURfX1NBVElTRklFUzoNCisJCQkJcmV0dXJuICFnZXRTYXRpc2ZpZXMoKS5pc0VtcHR5KCk7DQorCQkJY2FzZSBEZXByZWNhdGVkZWxlbWVudHNQYWNrYWdlLlJFUVVJUkVNRU5UX1JFTEFURURfX1JFRklORVM6DQorCQkJCXJldHVybiAhZ2V0UmVmaW5lcygpLmlzRW1wdHkoKTsNCisJCQljYXNlIERlcHJlY2F0ZWRlbGVtZW50c1BhY2thZ2UuUkVRVUlSRU1FTlRfUkVMQVRFRF9fVkVSSUZJRVM6DQorCQkJCXJldHVybiAhZ2V0VmVyaWZpZXMoKS5pc0VtcHR5KCk7DQorCQl9DQorCQlyZXR1cm4gc3VwZXIuZUlzU2V0KGZlYXR1cmVJRCk7DQorCX0NCisNCit9IC8vUmVxdWlyZW1lbnRSZWxhdGVkSW1wbA0KZGlmZiAtLWdpdCBhL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L2RlcHJlY2F0ZWRlbGVtZW50cy91dGlsL0RlcHJlY2F0ZWRlbGVtZW50c0FkYXB0ZXJGYWN0b3J5LmphdmEgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9kZXByZWNhdGVkZWxlbWVudHMvdXRpbC9EZXByZWNhdGVkZWxlbWVudHNBZGFwdGVyRmFjdG9yeS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA3NTJmZjcKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9kZXByZWNhdGVkZWxlbWVudHMvdXRpbC9EZXByZWNhdGVkZWxlbWVudHNBZGFwdGVyRmFjdG9yeS5qYXZhCkBAIC0wLDAgKzEsMjAyIEBACisvKioNCisgKiBDb3B5cmlnaHQgKGMpIDIwMTUgQ0VBIExJU1QuDQorICogDQorICogIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCisgKiAgYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQorICogIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQorICogIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICovDQorcGFja2FnZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGVwcmVjYXRlZGVsZW1lbnRzLnV0aWw7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jb21tb24ubm90aWZ5LkFkYXB0ZXI7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jb21tb24ubm90aWZ5Lk5vdGlmaWVyOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY29tbW9uLm5vdGlmeS5pbXBsLkFkYXB0ZXJGYWN0b3J5SW1wbDsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVPYmplY3Q7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kZXByZWNhdGVkZWxlbWVudHMuQWxsb2NhdGVkOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGVwcmVjYXRlZGVsZW1lbnRzLkRlcHJlY2F0ZWRlbGVtZW50c1BhY2thZ2U7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kZXByZWNhdGVkZWxlbWVudHMuRmxvd1BvcnQ7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kZXByZWNhdGVkZWxlbWVudHMuRmxvd1NwZWNpZmljYXRpb247DQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kZXByZWNhdGVkZWxlbWVudHMuUmVxdWlyZW1lbnRSZWxhdGVkOw0KKw0KKy8qKg0KKyAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorICogVGhlIDxiPkFkYXB0ZXIgRmFjdG9yeTwvYj4gZm9yIHRoZSBtb2RlbC4NCisgKiBJdCBwcm92aWRlcyBhbiBhZGFwdGVyIDxjb2RlPmNyZWF0ZVhYWDwvY29kZT4gbWV0aG9kIGZvciBlYWNoIGNsYXNzIG9mIHRoZSBtb2RlbC4NCisgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kZXByZWNhdGVkZWxlbWVudHMuRGVwcmVjYXRlZGVsZW1lbnRzUGFja2FnZQ0KKyAqIEBnZW5lcmF0ZWQNCisgKi8NCitwdWJsaWMgY2xhc3MgRGVwcmVjYXRlZGVsZW1lbnRzQWRhcHRlckZhY3RvcnkgZXh0ZW5kcyBBZGFwdGVyRmFjdG9yeUltcGwgew0KKwkvKioNCisJICogVGhlIGNhY2hlZCBtb2RlbCBwYWNrYWdlLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHJvdGVjdGVkIHN0YXRpYyBEZXByZWNhdGVkZWxlbWVudHNQYWNrYWdlIG1vZGVsUGFja2FnZTsNCisNCisJLyoqDQorCSAqIENyZWF0ZXMgYW4gaW5zdGFuY2Ugb2YgdGhlIGFkYXB0ZXIgZmFjdG9yeS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBEZXByZWNhdGVkZWxlbWVudHNBZGFwdGVyRmFjdG9yeSgpIHsNCisJCWlmIChtb2RlbFBhY2thZ2UgPT0gbnVsbCkgew0KKwkJCW1vZGVsUGFja2FnZSA9IERlcHJlY2F0ZWRlbGVtZW50c1BhY2thZ2UuZUlOU1RBTkNFOw0KKwkJfQ0KKwl9DQorDQorCS8qKg0KKwkgKiBSZXR1cm5zIHdoZXRoZXIgdGhpcyBmYWN0b3J5IGlzIGFwcGxpY2FibGUgZm9yIHRoZSB0eXBlIG9mIHRoZSBvYmplY3QuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIFRoaXMgaW1wbGVtZW50YXRpb24gcmV0dXJucyA8Y29kZT50cnVlPC9jb2RlPiBpZiB0aGUgb2JqZWN0IGlzIGVpdGhlciB0aGUgbW9kZWwncyBwYWNrYWdlIG9yIGlzIGFuIGluc3RhbmNlIG9iamVjdCBvZiB0aGUgbW9kZWwuDQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAcmV0dXJuIHdoZXRoZXIgdGhpcyBmYWN0b3J5IGlzIGFwcGxpY2FibGUgZm9yIHRoZSB0eXBlIG9mIHRoZSBvYmplY3QuDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgYm9vbGVhbiBpc0ZhY3RvcnlGb3JUeXBlKE9iamVjdCBvYmplY3QpIHsNCisJCWlmIChvYmplY3QgPT0gbW9kZWxQYWNrYWdlKSB7DQorCQkJcmV0dXJuIHRydWU7DQorCQl9DQorCQlpZiAob2JqZWN0IGluc3RhbmNlb2YgRU9iamVjdCkgew0KKwkJCXJldHVybiAoKEVPYmplY3Qpb2JqZWN0KS5lQ2xhc3MoKS5nZXRFUGFja2FnZSgpID09IG1vZGVsUGFja2FnZTsNCisJCX0NCisJCXJldHVybiBmYWxzZTsNCisJfQ0KKw0KKwkvKioNCisJICogVGhlIHN3aXRjaCB0aGF0IGRlbGVnYXRlcyB0byB0aGUgPGNvZGU+Y3JlYXRlWFhYPC9jb2RlPiBtZXRob2RzLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHJvdGVjdGVkIERlcHJlY2F0ZWRlbGVtZW50c1N3aXRjaDxBZGFwdGVyPiBtb2RlbFN3aXRjaCA9DQorCQluZXcgRGVwcmVjYXRlZGVsZW1lbnRzU3dpdGNoPEFkYXB0ZXI+KCkgew0KKwkJCUBPdmVycmlkZQ0KKwkJCXB1YmxpYyBBZGFwdGVyIGNhc2VGbG93UG9ydChGbG93UG9ydCBvYmplY3QpIHsNCisJCQkJcmV0dXJuIGNyZWF0ZUZsb3dQb3J0QWRhcHRlcigpOw0KKwkJCX0NCisJCQlAT3ZlcnJpZGUNCisJCQlwdWJsaWMgQWRhcHRlciBjYXNlRmxvd1NwZWNpZmljYXRpb24oRmxvd1NwZWNpZmljYXRpb24gb2JqZWN0KSB7DQorCQkJCXJldHVybiBjcmVhdGVGbG93U3BlY2lmaWNhdGlvbkFkYXB0ZXIoKTsNCisJCQl9DQorCQkJQE92ZXJyaWRlDQorCQkJcHVibGljIEFkYXB0ZXIgY2FzZUFsbG9jYXRlZChBbGxvY2F0ZWQgb2JqZWN0KSB7DQorCQkJCXJldHVybiBjcmVhdGVBbGxvY2F0ZWRBZGFwdGVyKCk7DQorCQkJfQ0KKwkJCUBPdmVycmlkZQ0KKwkJCXB1YmxpYyBBZGFwdGVyIGNhc2VSZXF1aXJlbWVudFJlbGF0ZWQoUmVxdWlyZW1lbnRSZWxhdGVkIG9iamVjdCkgew0KKwkJCQlyZXR1cm4gY3JlYXRlUmVxdWlyZW1lbnRSZWxhdGVkQWRhcHRlcigpOw0KKwkJCX0NCisJCQlAT3ZlcnJpZGUNCisJCQlwdWJsaWMgQWRhcHRlciBjYXNlRGVwcmVjYXRlZChvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGVwcmVjYXRlZGVsZW1lbnRzLkRlcHJlY2F0ZWQgb2JqZWN0KSB7DQorCQkJCXJldHVybiBjcmVhdGVEZXByZWNhdGVkQWRhcHRlcigpOw0KKwkJCX0NCisJCQlAT3ZlcnJpZGUNCisJCQlwdWJsaWMgQWRhcHRlciBkZWZhdWx0Q2FzZShFT2JqZWN0IG9iamVjdCkgew0KKwkJCQlyZXR1cm4gY3JlYXRlRU9iamVjdEFkYXB0ZXIoKTsNCisJCQl9DQorCQl9Ow0KKw0KKwkvKioNCisJICogQ3JlYXRlcyBhbiBhZGFwdGVyIGZvciB0aGUgPGNvZGU+dGFyZ2V0PC9jb2RlPi4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBwYXJhbSB0YXJnZXQgdGhlIG9iamVjdCB0byBhZGFwdC4NCisJICogQHJldHVybiB0aGUgYWRhcHRlciBmb3IgdGhlIDxjb2RlPnRhcmdldDwvY29kZT4uDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgQWRhcHRlciBjcmVhdGVBZGFwdGVyKE5vdGlmaWVyIHRhcmdldCkgew0KKwkJcmV0dXJuIG1vZGVsU3dpdGNoLmRvU3dpdGNoKChFT2JqZWN0KXRhcmdldCk7DQorCX0NCisNCisNCisJLyoqDQorCSAqIENyZWF0ZXMgYSBuZXcgYWRhcHRlciBmb3IgYW4gb2JqZWN0IG9mIGNsYXNzICd7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRlcHJlY2F0ZWRlbGVtZW50cy5GbG93UG9ydCA8ZW0+RmxvdyBQb3J0PC9lbT59Jy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogVGhpcyBkZWZhdWx0IGltcGxlbWVudGF0aW9uIHJldHVybnMgbnVsbCBzbyB0aGF0IHdlIGNhbiBlYXNpbHkgaWdub3JlIGNhc2VzOw0KKwkgKiBpdCdzIHVzZWZ1bCB0byBpZ25vcmUgYSBjYXNlIHdoZW4gaW5oZXJpdGFuY2Ugd2lsbCBjYXRjaCBhbGwgdGhlIGNhc2VzIGFueXdheS4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEByZXR1cm4gdGhlIG5ldyBhZGFwdGVyLg0KKwkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kZXByZWNhdGVkZWxlbWVudHMuRmxvd1BvcnQNCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIEFkYXB0ZXIgY3JlYXRlRmxvd1BvcnRBZGFwdGVyKCkgew0KKwkJcmV0dXJuIG51bGw7DQorCX0NCisNCisJLyoqDQorCSAqIENyZWF0ZXMgYSBuZXcgYWRhcHRlciBmb3IgYW4gb2JqZWN0IG9mIGNsYXNzICd7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRlcHJlY2F0ZWRlbGVtZW50cy5GbG93U3BlY2lmaWNhdGlvbiA8ZW0+RmxvdyBTcGVjaWZpY2F0aW9uPC9lbT59Jy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogVGhpcyBkZWZhdWx0IGltcGxlbWVudGF0aW9uIHJldHVybnMgbnVsbCBzbyB0aGF0IHdlIGNhbiBlYXNpbHkgaWdub3JlIGNhc2VzOw0KKwkgKiBpdCdzIHVzZWZ1bCB0byBpZ25vcmUgYSBjYXNlIHdoZW4gaW5oZXJpdGFuY2Ugd2lsbCBjYXRjaCBhbGwgdGhlIGNhc2VzIGFueXdheS4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEByZXR1cm4gdGhlIG5ldyBhZGFwdGVyLg0KKwkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kZXByZWNhdGVkZWxlbWVudHMuRmxvd1NwZWNpZmljYXRpb24NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIEFkYXB0ZXIgY3JlYXRlRmxvd1NwZWNpZmljYXRpb25BZGFwdGVyKCkgew0KKwkJcmV0dXJuIG51bGw7DQorCX0NCisNCisJLyoqDQorCSAqIENyZWF0ZXMgYSBuZXcgYWRhcHRlciBmb3IgYW4gb2JqZWN0IG9mIGNsYXNzICd7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRlcHJlY2F0ZWRlbGVtZW50cy5BbGxvY2F0ZWQgPGVtPkFsbG9jYXRlZDwvZW0+fScuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIFRoaXMgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiByZXR1cm5zIG51bGwgc28gdGhhdCB3ZSBjYW4gZWFzaWx5IGlnbm9yZSBjYXNlczsNCisJICogaXQncyB1c2VmdWwgdG8gaWdub3JlIGEgY2FzZSB3aGVuIGluaGVyaXRhbmNlIHdpbGwgY2F0Y2ggYWxsIHRoZSBjYXNlcyBhbnl3YXkuDQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAcmV0dXJuIHRoZSBuZXcgYWRhcHRlci4NCisJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGVwcmVjYXRlZGVsZW1lbnRzLkFsbG9jYXRlZA0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgQWRhcHRlciBjcmVhdGVBbGxvY2F0ZWRBZGFwdGVyKCkgew0KKwkJcmV0dXJuIG51bGw7DQorCX0NCisNCisJLyoqDQorCSAqIENyZWF0ZXMgYSBuZXcgYWRhcHRlciBmb3IgYW4gb2JqZWN0IG9mIGNsYXNzICd7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRlcHJlY2F0ZWRlbGVtZW50cy5SZXF1aXJlbWVudFJlbGF0ZWQgPGVtPlJlcXVpcmVtZW50IFJlbGF0ZWQ8L2VtPn0nLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiBUaGlzIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gcmV0dXJucyBudWxsIHNvIHRoYXQgd2UgY2FuIGVhc2lseSBpZ25vcmUgY2FzZXM7DQorCSAqIGl0J3MgdXNlZnVsIHRvIGlnbm9yZSBhIGNhc2Ugd2hlbiBpbmhlcml0YW5jZSB3aWxsIGNhdGNoIGFsbCB0aGUgY2FzZXMgYW55d2F5Lg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHJldHVybiB0aGUgbmV3IGFkYXB0ZXIuDQorCSAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRlcHJlY2F0ZWRlbGVtZW50cy5SZXF1aXJlbWVudFJlbGF0ZWQNCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIEFkYXB0ZXIgY3JlYXRlUmVxdWlyZW1lbnRSZWxhdGVkQWRhcHRlcigpIHsNCisJCXJldHVybiBudWxsOw0KKwl9DQorDQorCS8qKg0KKwkgKiBDcmVhdGVzIGEgbmV3IGFkYXB0ZXIgZm9yIGFuIG9iamVjdCBvZiBjbGFzcyAne0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kZXByZWNhdGVkZWxlbWVudHMuRGVwcmVjYXRlZCA8ZW0+RGVwcmVjYXRlZDwvZW0+fScuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIFRoaXMgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiByZXR1cm5zIG51bGwgc28gdGhhdCB3ZSBjYW4gZWFzaWx5IGlnbm9yZSBjYXNlczsNCisJICogaXQncyB1c2VmdWwgdG8gaWdub3JlIGEgY2FzZSB3aGVuIGluaGVyaXRhbmNlIHdpbGwgY2F0Y2ggYWxsIHRoZSBjYXNlcyBhbnl3YXkuDQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAcmV0dXJuIHRoZSBuZXcgYWRhcHRlci4NCisJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGVwcmVjYXRlZGVsZW1lbnRzLkRlcHJlY2F0ZWQNCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIEFkYXB0ZXIgY3JlYXRlRGVwcmVjYXRlZEFkYXB0ZXIoKSB7DQorCQlyZXR1cm4gbnVsbDsNCisJfQ0KKw0KKwkvKioNCisJICogQ3JlYXRlcyBhIG5ldyBhZGFwdGVyIGZvciB0aGUgZGVmYXVsdCBjYXNlLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiBUaGlzIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gcmV0dXJucyBudWxsLg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHJldHVybiB0aGUgbmV3IGFkYXB0ZXIuDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBBZGFwdGVyIGNyZWF0ZUVPYmplY3RBZGFwdGVyKCkgew0KKwkJcmV0dXJuIG51bGw7DQorCX0NCisNCit9IC8vRGVwcmVjYXRlZGVsZW1lbnRzQWRhcHRlckZhY3RvcnkNCmRpZmYgLS1naXQgYS9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9kZXByZWNhdGVkZWxlbWVudHMvdXRpbC9EZXByZWNhdGVkZWxlbWVudHNTd2l0Y2guamF2YSBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L2RlcHJlY2F0ZWRlbGVtZW50cy91dGlsL0RlcHJlY2F0ZWRlbGVtZW50c1N3aXRjaC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJlOGVmNTgKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9kZXByZWNhdGVkZWxlbWVudHMvdXRpbC9EZXByZWNhdGVkZWxlbWVudHNTd2l0Y2guamF2YQpAQCAtMCwwICsxLDIwNCBAQAorLyoqDQorICogQ29weXJpZ2h0IChjKSAyMDE1IENFQSBMSVNULg0KKyAqIA0KKyAqICBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQorICogIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KKyAqICB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KKyAqICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqLw0KK3BhY2thZ2Ugb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRlcHJlY2F0ZWRlbGVtZW50cy51dGlsOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRU9iamVjdDsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVQYWNrYWdlOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUudXRpbC5Td2l0Y2g7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kZXByZWNhdGVkZWxlbWVudHMuQWxsb2NhdGVkOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGVwcmVjYXRlZGVsZW1lbnRzLkRlcHJlY2F0ZWRlbGVtZW50c1BhY2thZ2U7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kZXByZWNhdGVkZWxlbWVudHMuRmxvd1BvcnQ7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kZXByZWNhdGVkZWxlbWVudHMuRmxvd1NwZWNpZmljYXRpb247DQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kZXByZWNhdGVkZWxlbWVudHMuUmVxdWlyZW1lbnRSZWxhdGVkOw0KKw0KKy8qKg0KKyAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorICogVGhlIDxiPlN3aXRjaDwvYj4gZm9yIHRoZSBtb2RlbCdzIGluaGVyaXRhbmNlIGhpZXJhcmNoeS4NCisgKiBJdCBzdXBwb3J0cyB0aGUgY2FsbCB7QGxpbmsgI2RvU3dpdGNoKEVPYmplY3QpIGRvU3dpdGNoKG9iamVjdCl9DQorICogdG8gaW52b2tlIHRoZSA8Y29kZT5jYXNlWFhYPC9jb2RlPiBtZXRob2QgZm9yIGVhY2ggY2xhc3Mgb2YgdGhlIG1vZGVsLA0KKyAqIHN0YXJ0aW5nIHdpdGggdGhlIGFjdHVhbCBjbGFzcyBvZiB0aGUgb2JqZWN0DQorICogYW5kIHByb2NlZWRpbmcgdXAgdGhlIGluaGVyaXRhbmNlIGhpZXJhcmNoeQ0KKyAqIHVudGlsIGEgbm9uLW51bGwgcmVzdWx0IGlzIHJldHVybmVkLA0KKyAqIHdoaWNoIGlzIHRoZSByZXN1bHQgb2YgdGhlIHN3aXRjaC4NCisgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kZXByZWNhdGVkZWxlbWVudHMuRGVwcmVjYXRlZGVsZW1lbnRzUGFja2FnZQ0KKyAqIEBnZW5lcmF0ZWQNCisgKi8NCitwdWJsaWMgY2xhc3MgRGVwcmVjYXRlZGVsZW1lbnRzU3dpdGNoPFQ+IGV4dGVuZHMgU3dpdGNoPFQ+IHsNCisJLyoqDQorCSAqIFRoZSBjYWNoZWQgbW9kZWwgcGFja2FnZQ0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHJvdGVjdGVkIHN0YXRpYyBEZXByZWNhdGVkZWxlbWVudHNQYWNrYWdlIG1vZGVsUGFja2FnZTsNCisNCisJLyoqDQorCSAqIENyZWF0ZXMgYW4gaW5zdGFuY2Ugb2YgdGhlIHN3aXRjaC4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBEZXByZWNhdGVkZWxlbWVudHNTd2l0Y2goKSB7DQorCQlpZiAobW9kZWxQYWNrYWdlID09IG51bGwpIHsNCisJCQltb2RlbFBhY2thZ2UgPSBEZXByZWNhdGVkZWxlbWVudHNQYWNrYWdlLmVJTlNUQU5DRTsNCisJCX0NCisJfQ0KKw0KKwkvKioNCisJICogQ2hlY2tzIHdoZXRoZXIgdGhpcyBpcyBhIHN3aXRjaCBmb3IgdGhlIGdpdmVuIHBhY2thZ2UuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAcGFyYW0gZVBhY2thZ2UgdGhlIHBhY2thZ2UgaW4gcXVlc3Rpb24uDQorCSAqIEByZXR1cm4gd2hldGhlciB0aGlzIGlzIGEgc3dpdGNoIGZvciB0aGUgZ2l2ZW4gcGFja2FnZS4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXByb3RlY3RlZCBib29sZWFuIGlzU3dpdGNoRm9yKEVQYWNrYWdlIGVQYWNrYWdlKSB7DQorCQlyZXR1cm4gZVBhY2thZ2UgPT0gbW9kZWxQYWNrYWdlOw0KKwl9DQorDQorCS8qKg0KKwkgKiBDYWxscyA8Y29kZT5jYXNlWFhYPC9jb2RlPiBmb3IgZWFjaCBjbGFzcyBvZiB0aGUgbW9kZWwgdW50aWwgb25lIHJldHVybnMgYSBub24gbnVsbCByZXN1bHQ7IGl0IHlpZWxkcyB0aGF0IHJlc3VsdC4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEByZXR1cm4gdGhlIGZpcnN0IG5vbi1udWxsIHJlc3VsdCByZXR1cm5lZCBieSBhIDxjb2RlPmNhc2VYWFg8L2NvZGU+IGNhbGwuDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwcm90ZWN0ZWQgVCBkb1N3aXRjaChpbnQgY2xhc3NpZmllcklELCBFT2JqZWN0IHRoZUVPYmplY3QpIHsNCisJCXN3aXRjaCAoY2xhc3NpZmllcklEKSB7DQorCQkJY2FzZSBEZXByZWNhdGVkZWxlbWVudHNQYWNrYWdlLkZMT1dfUE9SVDogew0KKwkJCQlGbG93UG9ydCBmbG93UG9ydCA9IChGbG93UG9ydCl0aGVFT2JqZWN0Ow0KKwkJCQlUIHJlc3VsdCA9IGNhc2VGbG93UG9ydChmbG93UG9ydCk7DQorCQkJCWlmIChyZXN1bHQgPT0gbnVsbCkgcmVzdWx0ID0gZGVmYXVsdENhc2UodGhlRU9iamVjdCk7DQorCQkJCXJldHVybiByZXN1bHQ7DQorCQkJfQ0KKwkJCWNhc2UgRGVwcmVjYXRlZGVsZW1lbnRzUGFja2FnZS5GTE9XX1NQRUNJRklDQVRJT046IHsNCisJCQkJRmxvd1NwZWNpZmljYXRpb24gZmxvd1NwZWNpZmljYXRpb24gPSAoRmxvd1NwZWNpZmljYXRpb24pdGhlRU9iamVjdDsNCisJCQkJVCByZXN1bHQgPSBjYXNlRmxvd1NwZWNpZmljYXRpb24oZmxvd1NwZWNpZmljYXRpb24pOw0KKwkJCQlpZiAocmVzdWx0ID09IG51bGwpIHJlc3VsdCA9IGRlZmF1bHRDYXNlKHRoZUVPYmplY3QpOw0KKwkJCQlyZXR1cm4gcmVzdWx0Ow0KKwkJCX0NCisJCQljYXNlIERlcHJlY2F0ZWRlbGVtZW50c1BhY2thZ2UuQUxMT0NBVEVEOiB7DQorCQkJCUFsbG9jYXRlZCBhbGxvY2F0ZWQgPSAoQWxsb2NhdGVkKXRoZUVPYmplY3Q7DQorCQkJCVQgcmVzdWx0ID0gY2FzZUFsbG9jYXRlZChhbGxvY2F0ZWQpOw0KKwkJCQlpZiAocmVzdWx0ID09IG51bGwpIHJlc3VsdCA9IGRlZmF1bHRDYXNlKHRoZUVPYmplY3QpOw0KKwkJCQlyZXR1cm4gcmVzdWx0Ow0KKwkJCX0NCisJCQljYXNlIERlcHJlY2F0ZWRlbGVtZW50c1BhY2thZ2UuUkVRVUlSRU1FTlRfUkVMQVRFRDogew0KKwkJCQlSZXF1aXJlbWVudFJlbGF0ZWQgcmVxdWlyZW1lbnRSZWxhdGVkID0gKFJlcXVpcmVtZW50UmVsYXRlZCl0aGVFT2JqZWN0Ow0KKwkJCQlUIHJlc3VsdCA9IGNhc2VSZXF1aXJlbWVudFJlbGF0ZWQocmVxdWlyZW1lbnRSZWxhdGVkKTsNCisJCQkJaWYgKHJlc3VsdCA9PSBudWxsKSByZXN1bHQgPSBkZWZhdWx0Q2FzZSh0aGVFT2JqZWN0KTsNCisJCQkJcmV0dXJuIHJlc3VsdDsNCisJCQl9DQorCQkJY2FzZSBEZXByZWNhdGVkZWxlbWVudHNQYWNrYWdlLkRFUFJFQ0FURUQ6IHsNCisJCQkJb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRlcHJlY2F0ZWRlbGVtZW50cy5EZXByZWNhdGVkIGRlcHJlY2F0ZWQgPSAob3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRlcHJlY2F0ZWRlbGVtZW50cy5EZXByZWNhdGVkKXRoZUVPYmplY3Q7DQorCQkJCVQgcmVzdWx0ID0gY2FzZURlcHJlY2F0ZWQoZGVwcmVjYXRlZCk7DQorCQkJCWlmIChyZXN1bHQgPT0gbnVsbCkgcmVzdWx0ID0gZGVmYXVsdENhc2UodGhlRU9iamVjdCk7DQorCQkJCXJldHVybiByZXN1bHQ7DQorCQkJfQ0KKwkJCWRlZmF1bHQ6IHJldHVybiBkZWZhdWx0Q2FzZSh0aGVFT2JqZWN0KTsNCisJCX0NCisJfQ0KKw0KKwkvKioNCisJICogUmV0dXJucyB0aGUgcmVzdWx0IG9mIGludGVycHJldGluZyB0aGUgb2JqZWN0IGFzIGFuIGluc3RhbmNlIG9mICc8ZW0+RmxvdyBQb3J0PC9lbT4nLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiBUaGlzIGltcGxlbWVudGF0aW9uIHJldHVybnMgbnVsbDsNCisJICogcmV0dXJuaW5nIGEgbm9uLW51bGwgcmVzdWx0IHdpbGwgdGVybWluYXRlIHRoZSBzd2l0Y2guDQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAcGFyYW0gb2JqZWN0IHRoZSB0YXJnZXQgb2YgdGhlIHN3aXRjaC4NCisJICogQHJldHVybiB0aGUgcmVzdWx0IG9mIGludGVycHJldGluZyB0aGUgb2JqZWN0IGFzIGFuIGluc3RhbmNlIG9mICc8ZW0+RmxvdyBQb3J0PC9lbT4nLg0KKwkgKiBAc2VlICNkb1N3aXRjaChvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRU9iamVjdCkgZG9Td2l0Y2goRU9iamVjdCkNCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIFQgY2FzZUZsb3dQb3J0KEZsb3dQb3J0IG9iamVjdCkgew0KKwkJcmV0dXJuIG51bGw7DQorCX0NCisNCisJLyoqDQorCSAqIFJldHVybnMgdGhlIHJlc3VsdCBvZiBpbnRlcnByZXRpbmcgdGhlIG9iamVjdCBhcyBhbiBpbnN0YW5jZSBvZiAnPGVtPkZsb3cgU3BlY2lmaWNhdGlvbjwvZW0+Jy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogVGhpcyBpbXBsZW1lbnRhdGlvbiByZXR1cm5zIG51bGw7DQorCSAqIHJldHVybmluZyBhIG5vbi1udWxsIHJlc3VsdCB3aWxsIHRlcm1pbmF0ZSB0aGUgc3dpdGNoLg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHBhcmFtIG9iamVjdCB0aGUgdGFyZ2V0IG9mIHRoZSBzd2l0Y2guDQorCSAqIEByZXR1cm4gdGhlIHJlc3VsdCBvZiBpbnRlcnByZXRpbmcgdGhlIG9iamVjdCBhcyBhbiBpbnN0YW5jZSBvZiAnPGVtPkZsb3cgU3BlY2lmaWNhdGlvbjwvZW0+Jy4NCisJICogQHNlZSAjZG9Td2l0Y2gob3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVPYmplY3QpIGRvU3dpdGNoKEVPYmplY3QpDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBUIGNhc2VGbG93U3BlY2lmaWNhdGlvbihGbG93U3BlY2lmaWNhdGlvbiBvYmplY3QpIHsNCisJCXJldHVybiBudWxsOw0KKwl9DQorDQorCS8qKg0KKwkgKiBSZXR1cm5zIHRoZSByZXN1bHQgb2YgaW50ZXJwcmV0aW5nIHRoZSBvYmplY3QgYXMgYW4gaW5zdGFuY2Ugb2YgJzxlbT5BbGxvY2F0ZWQ8L2VtPicuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIFRoaXMgaW1wbGVtZW50YXRpb24gcmV0dXJucyBudWxsOw0KKwkgKiByZXR1cm5pbmcgYSBub24tbnVsbCByZXN1bHQgd2lsbCB0ZXJtaW5hdGUgdGhlIHN3aXRjaC4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBwYXJhbSBvYmplY3QgdGhlIHRhcmdldCBvZiB0aGUgc3dpdGNoLg0KKwkgKiBAcmV0dXJuIHRoZSByZXN1bHQgb2YgaW50ZXJwcmV0aW5nIHRoZSBvYmplY3QgYXMgYW4gaW5zdGFuY2Ugb2YgJzxlbT5BbGxvY2F0ZWQ8L2VtPicuDQorCSAqIEBzZWUgI2RvU3dpdGNoKG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FT2JqZWN0KSBkb1N3aXRjaChFT2JqZWN0KQ0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgVCBjYXNlQWxsb2NhdGVkKEFsbG9jYXRlZCBvYmplY3QpIHsNCisJCXJldHVybiBudWxsOw0KKwl9DQorDQorCS8qKg0KKwkgKiBSZXR1cm5zIHRoZSByZXN1bHQgb2YgaW50ZXJwcmV0aW5nIHRoZSBvYmplY3QgYXMgYW4gaW5zdGFuY2Ugb2YgJzxlbT5SZXF1aXJlbWVudCBSZWxhdGVkPC9lbT4nLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiBUaGlzIGltcGxlbWVudGF0aW9uIHJldHVybnMgbnVsbDsNCisJICogcmV0dXJuaW5nIGEgbm9uLW51bGwgcmVzdWx0IHdpbGwgdGVybWluYXRlIHRoZSBzd2l0Y2guDQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAcGFyYW0gb2JqZWN0IHRoZSB0YXJnZXQgb2YgdGhlIHN3aXRjaC4NCisJICogQHJldHVybiB0aGUgcmVzdWx0IG9mIGludGVycHJldGluZyB0aGUgb2JqZWN0IGFzIGFuIGluc3RhbmNlIG9mICc8ZW0+UmVxdWlyZW1lbnQgUmVsYXRlZDwvZW0+Jy4NCisJICogQHNlZSAjZG9Td2l0Y2gob3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVPYmplY3QpIGRvU3dpdGNoKEVPYmplY3QpDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBUIGNhc2VSZXF1aXJlbWVudFJlbGF0ZWQoUmVxdWlyZW1lbnRSZWxhdGVkIG9iamVjdCkgew0KKwkJcmV0dXJuIG51bGw7DQorCX0NCisNCisJLyoqDQorCSAqIFJldHVybnMgdGhlIHJlc3VsdCBvZiBpbnRlcnByZXRpbmcgdGhlIG9iamVjdCBhcyBhbiBpbnN0YW5jZSBvZiAnPGVtPkRlcHJlY2F0ZWQ8L2VtPicuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIFRoaXMgaW1wbGVtZW50YXRpb24gcmV0dXJucyBudWxsOw0KKwkgKiByZXR1cm5pbmcgYSBub24tbnVsbCByZXN1bHQgd2lsbCB0ZXJtaW5hdGUgdGhlIHN3aXRjaC4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBwYXJhbSBvYmplY3QgdGhlIHRhcmdldCBvZiB0aGUgc3dpdGNoLg0KKwkgKiBAcmV0dXJuIHRoZSByZXN1bHQgb2YgaW50ZXJwcmV0aW5nIHRoZSBvYmplY3QgYXMgYW4gaW5zdGFuY2Ugb2YgJzxlbT5EZXByZWNhdGVkPC9lbT4nLg0KKwkgKiBAc2VlICNkb1N3aXRjaChvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRU9iamVjdCkgZG9Td2l0Y2goRU9iamVjdCkNCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIFQgY2FzZURlcHJlY2F0ZWQob3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRlcHJlY2F0ZWRlbGVtZW50cy5EZXByZWNhdGVkIG9iamVjdCkgew0KKwkJcmV0dXJuIG51bGw7DQorCX0NCisNCisJLyoqDQorCSAqIFJldHVybnMgdGhlIHJlc3VsdCBvZiBpbnRlcnByZXRpbmcgdGhlIG9iamVjdCBhcyBhbiBpbnN0YW5jZSBvZiAnPGVtPkVPYmplY3Q8L2VtPicuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIFRoaXMgaW1wbGVtZW50YXRpb24gcmV0dXJucyBudWxsOw0KKwkgKiByZXR1cm5pbmcgYSBub24tbnVsbCByZXN1bHQgd2lsbCB0ZXJtaW5hdGUgdGhlIHN3aXRjaCwgYnV0IHRoaXMgaXMgdGhlIGxhc3QgY2FzZSBhbnl3YXkuDQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAcGFyYW0gb2JqZWN0IHRoZSB0YXJnZXQgb2YgdGhlIHN3aXRjaC4NCisJICogQHJldHVybiB0aGUgcmVzdWx0IG9mIGludGVycHJldGluZyB0aGUgb2JqZWN0IGFzIGFuIGluc3RhbmNlIG9mICc8ZW0+RU9iamVjdDwvZW0+Jy4NCisJICogQHNlZSAjZG9Td2l0Y2gob3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVPYmplY3QpDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgVCBkZWZhdWx0Q2FzZShFT2JqZWN0IG9iamVjdCkgew0KKwkJcmV0dXJuIG51bGw7DQorCX0NCisNCit9IC8vRGVwcmVjYXRlZGVsZW1lbnRzU3dpdGNoDQpkaWZmIC0tZ2l0IGEvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvbW9kZWxlbGVtZW50cy9Db25mb3JtLmphdmEgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9tb2RlbGVsZW1lbnRzL0NvbmZvcm0uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMzc2OTg3Ci0tLSAvZGV2L251bGwKKysrIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvbW9kZWxlbGVtZW50cy9Db25mb3JtLmphdmEKQEAgLTAsMCArMSw5MCBAQAorLyoqDQorICogQ29weXJpZ2h0IChjKSAyMDE1IENFQSBMSVNULg0KKyAqIA0KKyAqICBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQorICogIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KKyAqICB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KKyAqICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqLw0KK3BhY2thZ2Ugb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0Lm1vZGVsZWxlbWVudHM7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FT2JqZWN0Ow0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS51bWwyLnVtbC5EZXBlbmRlbmN5Ow0KK2ltcG9ydCBvcmcuZWNsaXBzZS51bWwyLnVtbC5HZW5lcmFsaXphdGlvbjsNCisNCisvKioNCisgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKyAqIEEgcmVwcmVzZW50YXRpb24gb2YgdGhlIG1vZGVsIG9iamVjdCAnPGVtPjxiPkNvbmZvcm08L2I+PC9lbT4nLg0KKyAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKyAqDQorICogPCEtLSBiZWdpbi1tb2RlbC1kb2MgLS0+DQorICogQSBDb25mb3JtIHJlbGF0aW9uc2hpcCBpcyBhIGRlcGVuZGVuY3kgYmV0d2VlbiBhIHZpZXcgYW5kIGEgdmlld3BvaW50LiBUaGUgdmlldyBjb25mb3JtcyB0byB0aGUgc3BlY2lmaWVkIHJ1bGVzIGFuZCBjb252ZW50aW9ucyBkZXRhaWxlZCBpbiB0aGUgdmlld3BvaW50LiBDb25mb3JtIGlzIGEgc3BlY2lhbGl6YXRpb24gb2YgdGhlIFVNTCBkZXBlbmRlbmN5LCBhbmQgYXMgd2l0aCBvdGhlciBkZXBlbmRlbmNpZXMgdGhlIGFycm93IGRpcmVjdGlvbiBwb2ludHMgZnJvbSB0aGUgKGNsaWVudC9zb3VyY2UpIHRvIHRoZSAoc3VwcGxpZXIvdGFyZ2V0KS4NCisgKiA8IS0tIGVuZC1tb2RlbC1kb2MgLS0+DQorICoNCisgKiA8cD4NCisgKiBUaGUgZm9sbG93aW5nIGZlYXR1cmVzIGFyZSBzdXBwb3J0ZWQ6DQorICogPHVsPg0KKyAqICAgPGxpPntAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQubW9kZWxlbGVtZW50cy5Db25mb3JtI2dldEJhc2VfRGVwZW5kZW5jeSA8ZW0+QmFzZSBEZXBlbmRlbmN5PC9lbT59PC9saT4NCisgKiAgIDxsaT57QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0Lm1vZGVsZWxlbWVudHMuQ29uZm9ybSNnZXRCYXNlX0dlbmVyYWxpemF0aW9uIDxlbT5CYXNlIEdlbmVyYWxpemF0aW9uPC9lbT59PC9saT4NCisgKiA8L3VsPg0KKyAqIDwvcD4NCisgKg0KKyAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0Lm1vZGVsZWxlbWVudHMuTW9kZWxlbGVtZW50c1BhY2thZ2UjZ2V0Q29uZm9ybSgpDQorICogQG1vZGVsDQorICogQGdlbmVyYXRlZA0KKyAqLw0KK3B1YmxpYyBpbnRlcmZhY2UgQ29uZm9ybSBleHRlbmRzIEVPYmplY3Qgew0KKwkvKioNCisJICogUmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+PGI+QmFzZSBEZXBlbmRlbmN5PC9iPjwvZW0+JyByZWZlcmVuY2UuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDxwPg0KKwkgKiBJZiB0aGUgbWVhbmluZyBvZiB0aGUgJzxlbT5CYXNlIERlcGVuZGVuY3k8L2VtPicgcmVmZXJlbmNlIGlzbid0IGNsZWFyLA0KKwkgKiB0aGVyZSByZWFsbHkgc2hvdWxkIGJlIG1vcmUgb2YgYSBkZXNjcmlwdGlvbiBoZXJlLi4uDQorCSAqIDwvcD4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEByZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSAnPGVtPkJhc2UgRGVwZW5kZW5jeTwvZW0+JyByZWZlcmVuY2UuDQorCSAqIEBzZWUgI3NldEJhc2VfRGVwZW5kZW5jeShEZXBlbmRlbmN5KQ0KKwkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5tb2RlbGVsZW1lbnRzLk1vZGVsZWxlbWVudHNQYWNrYWdlI2dldENvbmZvcm1fQmFzZV9EZXBlbmRlbmN5KCkNCisJICogQG1vZGVsIG9yZGVyZWQ9ImZhbHNlIg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlEZXBlbmRlbmN5IGdldEJhc2VfRGVwZW5kZW5jeSgpOw0KKw0KKwkvKioNCisJICogU2V0cyB0aGUgdmFsdWUgb2YgdGhlICd7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0Lm1vZGVsZWxlbWVudHMuQ29uZm9ybSNnZXRCYXNlX0RlcGVuZGVuY3kgPGVtPkJhc2UgRGVwZW5kZW5jeTwvZW0+fScgcmVmZXJlbmNlLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHBhcmFtIHZhbHVlIHRoZSBuZXcgdmFsdWUgb2YgdGhlICc8ZW0+QmFzZSBEZXBlbmRlbmN5PC9lbT4nIHJlZmVyZW5jZS4NCisJICogQHNlZSAjZ2V0QmFzZV9EZXBlbmRlbmN5KCkNCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJdm9pZCBzZXRCYXNlX0RlcGVuZGVuY3koRGVwZW5kZW5jeSB2YWx1ZSk7DQorDQorCS8qKg0KKwkgKiBSZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT48Yj5CYXNlIEdlbmVyYWxpemF0aW9uPC9iPjwvZW0+JyByZWZlcmVuY2UuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDxwPg0KKwkgKiBJZiB0aGUgbWVhbmluZyBvZiB0aGUgJzxlbT5CYXNlIEdlbmVyYWxpemF0aW9uPC9lbT4nIHJlZmVyZW5jZSBpc24ndCBjbGVhciwNCisJICogdGhlcmUgcmVhbGx5IHNob3VsZCBiZSBtb3JlIG9mIGEgZGVzY3JpcHRpb24gaGVyZS4uLg0KKwkgKiA8L3A+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAcmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT5CYXNlIEdlbmVyYWxpemF0aW9uPC9lbT4nIHJlZmVyZW5jZS4NCisJICogQHNlZSAjc2V0QmFzZV9HZW5lcmFsaXphdGlvbihHZW5lcmFsaXphdGlvbikNCisJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQubW9kZWxlbGVtZW50cy5Nb2RlbGVsZW1lbnRzUGFja2FnZSNnZXRDb25mb3JtX0Jhc2VfR2VuZXJhbGl6YXRpb24oKQ0KKwkgKiBAbW9kZWwgb3JkZXJlZD0iZmFsc2UiDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUdlbmVyYWxpemF0aW9uIGdldEJhc2VfR2VuZXJhbGl6YXRpb24oKTsNCisNCisJLyoqDQorCSAqIFNldHMgdGhlIHZhbHVlIG9mIHRoZSAne0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5tb2RlbGVsZW1lbnRzLkNvbmZvcm0jZ2V0QmFzZV9HZW5lcmFsaXphdGlvbiA8ZW0+QmFzZSBHZW5lcmFsaXphdGlvbjwvZW0+fScgcmVmZXJlbmNlLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHBhcmFtIHZhbHVlIHRoZSBuZXcgdmFsdWUgb2YgdGhlICc8ZW0+QmFzZSBHZW5lcmFsaXphdGlvbjwvZW0+JyByZWZlcmVuY2UuDQorCSAqIEBzZWUgI2dldEJhc2VfR2VuZXJhbGl6YXRpb24oKQ0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwl2b2lkIHNldEJhc2VfR2VuZXJhbGl6YXRpb24oR2VuZXJhbGl6YXRpb24gdmFsdWUpOw0KKw0KK30gLy8gQ29uZm9ybQ0KZGlmZiAtLWdpdCBhL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L21vZGVsZWxlbWVudHMvRWxlbWVudEdyb3VwLmphdmEgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9tb2RlbGVsZW1lbnRzL0VsZW1lbnRHcm91cC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI2YzEzNDgKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9tb2RlbGVsZW1lbnRzL0VsZW1lbnRHcm91cC5qYXZhCkBAIC0wLDAgKzEsMjE5IEBACisvKioNCisgKiBDb3B5cmlnaHQgKGMpIDIwMTUgQ0VBIExJU1QuDQorICogDQorICogIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCisgKiAgYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQorICogIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQorICogIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICovDQorcGFja2FnZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQubW9kZWxlbGVtZW50czsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi51dGlsLkVMaXN0Ow0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRU9iamVjdDsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UudW1sMi51bWwuQ29tbWVudDsNCitpbXBvcnQgb3JnLmVjbGlwc2UudW1sMi51bWwuRWxlbWVudDsNCisNCisvKioNCisgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKyAqIEEgcmVwcmVzZW50YXRpb24gb2YgdGhlIG1vZGVsIG9iamVjdCAnPGVtPjxiPkVsZW1lbnQgR3JvdXA8L2I+PC9lbT4nLg0KKyAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKyAqDQorICogPCEtLSBiZWdpbi1tb2RlbC1kb2MgLS0+DQorICogVGhlIEVsZW1lbnRHcm91cCBzdGVyZW90eXBlIHByb3ZpZGVzIGEgbGlnaHR3ZWlnaHQgbWVjaGFuaXNtIGZvciBncm91cGluZyB2YXJpb3VzIGFuZCBwb3NzaWJseSBoZXRlcm9nZW5lb3VzIG1vZGVsIGVsZW1lbnRzIGJ5IGV4dGVuZGluZyB0aGUgY2FwYWJpbGl0eSBvZiBjb21tZW50cyB0byByZWZlciB0byBtdWx0aXBsZSBhbm5vdGF0ZWQgZWxlbWVudHMuIEZvciBleGFtcGxlLCBpdCBjYW4gZ3JvdXAgZWxlbWVudHMgdGhhdCBhcmUgYXNzb2NpYXRlZCB3aXRoIGEgcGFydGljdWxhciByZWxlYXNlIG9mIHRoZSBtb2RlbCwgaGF2ZSBhIGNlcnRhaW4gcmlzayBsZXZlbCwgb3IgYXJlIGFzc29jaWF0ZWQgd2l0aCBhIGxlZ2FjeSBkZXNpZ24uDQorICogPCEtLSBlbmQtbW9kZWwtZG9jIC0tPg0KKyAqDQorICogPHA+DQorICogVGhlIGZvbGxvd2luZyBmZWF0dXJlcyBhcmUgc3VwcG9ydGVkOg0KKyAqIDx1bD4NCisgKiAgIDxsaT57QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0Lm1vZGVsZWxlbWVudHMuRWxlbWVudEdyb3VwI2dldEJhc2VfQ29tbWVudCA8ZW0+QmFzZSBDb21tZW50PC9lbT59PC9saT4NCisgKiAgIDxsaT57QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0Lm1vZGVsZWxlbWVudHMuRWxlbWVudEdyb3VwI2dldE5hbWUgPGVtPk5hbWU8L2VtPn08L2xpPg0KKyAqICAgPGxpPntAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQubW9kZWxlbGVtZW50cy5FbGVtZW50R3JvdXAjZ2V0Q3JpdGVyaW9uIDxlbT5Dcml0ZXJpb248L2VtPn08L2xpPg0KKyAqICAgPGxpPntAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQubW9kZWxlbGVtZW50cy5FbGVtZW50R3JvdXAjZ2V0U2l6ZSA8ZW0+U2l6ZTwvZW0+fTwvbGk+DQorICogICA8bGk+e0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5tb2RlbGVsZW1lbnRzLkVsZW1lbnRHcm91cCNnZXRNZW1iZXIgPGVtPk1lbWJlcjwvZW0+fTwvbGk+DQorICogICA8bGk+e0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5tb2RlbGVsZW1lbnRzLkVsZW1lbnRHcm91cCNnZXRPcmRlcmVkTWVtYmVyIDxlbT5PcmRlcmVkIE1lbWJlcjwvZW0+fTwvbGk+DQorICogPC91bD4NCisgKiA8L3A+DQorICoNCisgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5tb2RlbGVsZW1lbnRzLk1vZGVsZWxlbWVudHNQYWNrYWdlI2dldEVsZW1lbnRHcm91cCgpDQorICogQG1vZGVsDQorICogQGdlbmVyYXRlZA0KKyAqLw0KK3B1YmxpYyBpbnRlcmZhY2UgRWxlbWVudEdyb3VwIGV4dGVuZHMgRU9iamVjdCB7DQorCS8qKg0KKwkgKiBSZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT48Yj5CYXNlIENvbW1lbnQ8L2I+PC9lbT4nIHJlZmVyZW5jZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPHA+DQorCSAqIElmIHRoZSBtZWFuaW5nIG9mIHRoZSAnPGVtPkJhc2UgQ29tbWVudDwvZW0+JyByZWZlcmVuY2UgaXNuJ3QgY2xlYXIsDQorCSAqIHRoZXJlIHJlYWxseSBzaG91bGQgYmUgbW9yZSBvZiBhIGRlc2NyaXB0aW9uIGhlcmUuLi4NCisJICogPC9wPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHJldHVybiB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+QmFzZSBDb21tZW50PC9lbT4nIHJlZmVyZW5jZS4NCisJICogQHNlZSAjc2V0QmFzZV9Db21tZW50KENvbW1lbnQpDQorCSAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0Lm1vZGVsZWxlbWVudHMuTW9kZWxlbGVtZW50c1BhY2thZ2UjZ2V0RWxlbWVudEdyb3VwX0Jhc2VfQ29tbWVudCgpDQorCSAqIEBtb2RlbCBvcmRlcmVkPSJmYWxzZSINCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQ29tbWVudCBnZXRCYXNlX0NvbW1lbnQoKTsNCisNCisJLyoqDQorCSAqIFNldHMgdGhlIHZhbHVlIG9mIHRoZSAne0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5tb2RlbGVsZW1lbnRzLkVsZW1lbnRHcm91cCNnZXRCYXNlX0NvbW1lbnQgPGVtPkJhc2UgQ29tbWVudDwvZW0+fScgcmVmZXJlbmNlLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHBhcmFtIHZhbHVlIHRoZSBuZXcgdmFsdWUgb2YgdGhlICc8ZW0+QmFzZSBDb21tZW50PC9lbT4nIHJlZmVyZW5jZS4NCisJICogQHNlZSAjZ2V0QmFzZV9Db21tZW50KCkNCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJdm9pZCBzZXRCYXNlX0NvbW1lbnQoQ29tbWVudCB2YWx1ZSk7DQorDQorCS8qKg0KKwkgKiBSZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT48Yj5OYW1lPC9iPjwvZW0+JyBhdHRyaWJ1dGUuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDxwPg0KKwkgKiBJZiB0aGUgbWVhbmluZyBvZiB0aGUgJzxlbT5OYW1lPC9lbT4nIGF0dHJpYnV0ZSBpc24ndCBjbGVhciwNCisJICogdGhlcmUgcmVhbGx5IHNob3VsZCBiZSBtb3JlIG9mIGEgZGVzY3JpcHRpb24gaGVyZS4uLg0KKwkgKiA8L3A+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAcmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT5OYW1lPC9lbT4nIGF0dHJpYnV0ZS4NCisJICogQHNlZSAjc2V0TmFtZShTdHJpbmcpDQorCSAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0Lm1vZGVsZWxlbWVudHMuTW9kZWxlbGVtZW50c1BhY2thZ2UjZ2V0RWxlbWVudEdyb3VwX05hbWUoKQ0KKwkgKiBAbW9kZWwgZGF0YVR5cGU9Im9yZy5lY2xpcHNlLnVtbDIudHlwZXMuU3RyaW5nIiByZXF1aXJlZD0idHJ1ZSIgb3JkZXJlZD0iZmFsc2UiDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCVN0cmluZyBnZXROYW1lKCk7DQorDQorCS8qKg0KKwkgKiBTZXRzIHRoZSB2YWx1ZSBvZiB0aGUgJ3tAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQubW9kZWxlbGVtZW50cy5FbGVtZW50R3JvdXAjZ2V0TmFtZSA8ZW0+TmFtZTwvZW0+fScgYXR0cmlidXRlLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHBhcmFtIHZhbHVlIHRoZSBuZXcgdmFsdWUgb2YgdGhlICc8ZW0+TmFtZTwvZW0+JyBhdHRyaWJ1dGUuDQorCSAqIEBzZWUgI2dldE5hbWUoKQ0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwl2b2lkIHNldE5hbWUoU3RyaW5nIHZhbHVlKTsNCisNCisJLyoqDQorCSAqIFJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSAnPGVtPjxiPkNyaXRlcmlvbjwvYj48L2VtPicgYXR0cmlidXRlLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8cD4NCisJICogSWYgdGhlIG1lYW5pbmcgb2YgdGhlICc8ZW0+Q3JpdGVyaW9uPC9lbT4nIGF0dHJpYnV0ZSBpc24ndCBjbGVhciwNCisJICogdGhlcmUgcmVhbGx5IHNob3VsZCBiZSBtb3JlIG9mIGEgZGVzY3JpcHRpb24gaGVyZS4uLg0KKwkgKiA8L3A+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAcmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT5Dcml0ZXJpb248L2VtPicgYXR0cmlidXRlLg0KKwkgKiBAc2VlICNzZXRDcml0ZXJpb24oU3RyaW5nKQ0KKwkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5tb2RlbGVsZW1lbnRzLk1vZGVsZWxlbWVudHNQYWNrYWdlI2dldEVsZW1lbnRHcm91cF9Dcml0ZXJpb24oKQ0KKwkgKiBAbW9kZWwgZGF0YVR5cGU9Im9yZy5lY2xpcHNlLnVtbDIudHlwZXMuU3RyaW5nIiByZXF1aXJlZD0idHJ1ZSIgdHJhbnNpZW50PSJ0cnVlIiB2b2xhdGlsZT0idHJ1ZSIgZGVyaXZlZD0idHJ1ZSIgb3JkZXJlZD0iZmFsc2UiDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCVN0cmluZyBnZXRDcml0ZXJpb24oKTsNCisNCisJLyoqDQorCSAqIFNldHMgdGhlIHZhbHVlIG9mIHRoZSAne0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5tb2RlbGVsZW1lbnRzLkVsZW1lbnRHcm91cCNnZXRDcml0ZXJpb24gPGVtPkNyaXRlcmlvbjwvZW0+fScgYXR0cmlidXRlLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHBhcmFtIHZhbHVlIHRoZSBuZXcgdmFsdWUgb2YgdGhlICc8ZW0+Q3JpdGVyaW9uPC9lbT4nIGF0dHJpYnV0ZS4NCisJICogQHNlZSAjZ2V0Q3JpdGVyaW9uKCkNCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJdm9pZCBzZXRDcml0ZXJpb24oU3RyaW5nIHZhbHVlKTsNCisNCisJLyoqDQorCSAqIFJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSAnPGVtPjxiPlNpemU8L2I+PC9lbT4nIGF0dHJpYnV0ZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPHA+DQorCSAqIElmIHRoZSBtZWFuaW5nIG9mIHRoZSAnPGVtPlNpemU8L2VtPicgYXR0cmlidXRlIGlzbid0IGNsZWFyLA0KKwkgKiB0aGVyZSByZWFsbHkgc2hvdWxkIGJlIG1vcmUgb2YgYSBkZXNjcmlwdGlvbiBoZXJlLi4uDQorCSAqIDwvcD4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEByZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSAnPGVtPlNpemU8L2VtPicgYXR0cmlidXRlLg0KKwkgKiBAc2VlICNzZXRTaXplKGludCkNCisJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQubW9kZWxlbGVtZW50cy5Nb2RlbGVsZW1lbnRzUGFja2FnZSNnZXRFbGVtZW50R3JvdXBfU2l6ZSgpDQorCSAqIEBtb2RlbCBkYXRhVHlwZT0ib3JnLmVjbGlwc2UudW1sMi50eXBlcy5JbnRlZ2VyIiByZXF1aXJlZD0idHJ1ZSIgdHJhbnNpZW50PSJ0cnVlIiB2b2xhdGlsZT0idHJ1ZSIgZGVyaXZlZD0idHJ1ZSIgb3JkZXJlZD0iZmFsc2UiDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCWludCBnZXRTaXplKCk7DQorDQorCS8qKg0KKwkgKiBTZXRzIHRoZSB2YWx1ZSBvZiB0aGUgJ3tAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQubW9kZWxlbGVtZW50cy5FbGVtZW50R3JvdXAjZ2V0U2l6ZSA8ZW0+U2l6ZTwvZW0+fScgYXR0cmlidXRlLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHBhcmFtIHZhbHVlIHRoZSBuZXcgdmFsdWUgb2YgdGhlICc8ZW0+U2l6ZTwvZW0+JyBhdHRyaWJ1dGUuDQorCSAqIEBzZWUgI2dldFNpemUoKQ0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwl2b2lkIHNldFNpemUoaW50IHZhbHVlKTsNCisNCisJLyoqDQorCSAqIFJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSAnPGVtPjxiPk1lbWJlcjwvYj48L2VtPicgcmVmZXJlbmNlIGxpc3QuDQorCSAqIFRoZSBsaXN0IGNvbnRlbnRzIGFyZSBvZiB0eXBlIHtAbGluayBvcmcuZWNsaXBzZS51bWwyLnVtbC5FbGVtZW50fS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gYmVnaW4tbW9kZWwtZG9jIC0tPg0KKwkgKiBTZXQgc3BlY2lmeWluZyB0aGUgbWVtYmVycyBvZiB0aGUgZ3JvdXAuDQorCSAqIERlcml2ZWQgZnJvbSBDb21tZW50Ojphbm5vdGF0ZWRFbGVtZW50Lg0KKwkgKiA8IS0tIGVuZC1tb2RlbC1kb2MgLS0+DQorCSAqIEByZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSAnPGVtPk1lbWJlcjwvZW0+JyByZWZlcmVuY2UgbGlzdC4NCisJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQubW9kZWxlbGVtZW50cy5Nb2RlbGVsZW1lbnRzUGFja2FnZSNnZXRFbGVtZW50R3JvdXBfTWVtYmVyKCkNCisJICogQG1vZGVsIHRyYW5zaWVudD0idHJ1ZSIgdm9sYXRpbGU9InRydWUiIGRlcml2ZWQ9InRydWUiIG9yZGVyZWQ9ImZhbHNlIg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlFTGlzdDxFbGVtZW50PiBnZXRNZW1iZXIoKTsNCisNCisJLyoqDQorCSAqIFJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSAnPGVtPjxiPk9yZGVyZWQgTWVtYmVyPC9iPjwvZW0+JyByZWZlcmVuY2UgbGlzdC4NCisJICogVGhlIGxpc3QgY29udGVudHMgYXJlIG9mIHR5cGUge0BsaW5rIG9yZy5lY2xpcHNlLnVtbDIudW1sLkVsZW1lbnR9Lg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogPCEtLSBiZWdpbi1tb2RlbC1kb2MgLS0+DQorCSAqIE9yZ2FuaXplIG1lbWJlciBhY2NvcmRpbmcgdG8gYW4gYXJiaXRyYXJ5IG9yZGVyLiBPcHRpb25hbC4NCisJICogPCEtLSBlbmQtbW9kZWwtZG9jIC0tPg0KKwkgKiBAcmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT5PcmRlcmVkIE1lbWJlcjwvZW0+JyByZWZlcmVuY2UgbGlzdC4NCisJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQubW9kZWxlbGVtZW50cy5Nb2RlbGVsZW1lbnRzUGFja2FnZSNnZXRFbGVtZW50R3JvdXBfT3JkZXJlZE1lbWJlcigpDQorCSAqIEBtb2RlbA0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlFTGlzdDxFbGVtZW50PiBnZXRPcmRlcmVkTWVtYmVyKCk7DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogPCEtLSBiZWdpbi1tb2RlbC1kb2MgLS0+DQorCSAqIFNwZWNpZmllcyB0aGUgcmF0aW9uYWxlIGZvciBiZWluZyBtZW1iZXIgb2YgdGhlIGdyb3VwLiBBZGRpbmcgYW4gZWxlbWVudCB0byB0aGUgZ3JvdXAgYXNzZXJ0cyB0aGF0IHRoZSBjcml0ZXJpb24NCisJICogYXBwbGllcyB0byB0aGlzIGVsZW1lbnQuDQorCSAqIERlcml2ZWQgZnJvbSBDb21tZW50Ojpib2R5Lg0KKwkgKiA8IS0tIGVuZC1tb2RlbC1kb2MgLS0+DQorCSAqIEBtb2RlbCBkYXRhVHlwZT0ib3JnLmVjbGlwc2UudW1sMi50eXBlcy5TdHJpbmciIG9yZGVyZWQ9ImZhbHNlIg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlTdHJpbmcgY3JpdGVyaW9uKCk7DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogPCEtLSBiZWdpbi1tb2RlbC1kb2MgLS0+DQorCSAqIE51bWJlciBvZiBtZW1iZXJzIGluIHRoZSBncm91cC4gRGVyaXZlZC4NCisJICogPCEtLSBlbmQtbW9kZWwtZG9jIC0tPg0KKwkgKiBAbW9kZWwgZGF0YVR5cGU9Im9yZy5lY2xpcHNlLnVtbDIudHlwZXMuSW50ZWdlciIgcmVxdWlyZWQ9InRydWUiIG9yZGVyZWQ9ImZhbHNlIg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlpbnQgc2l6ZSgpOw0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBtb2RlbCBvcmRlcmVkPSJmYWxzZSINCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJRUxpc3Q8RWxlbWVudD4gbWVtYmVyKCk7DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQG1vZGVsIG9yZGVyZWQ9ImZhbHNlIiBlUmVxdWlyZWQ9InRydWUiIGVPcmRlcmVkPSJmYWxzZSINCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJRUxpc3Q8RWxlbWVudEdyb3VwPiBhbGxHcm91cHMoRWxlbWVudCBlKTsNCisNCit9IC8vIEVsZW1lbnRHcm91cA0KZGlmZiAtLWdpdCBhL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L21vZGVsZWxlbWVudHMvRXhwb3NlLmphdmEgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9tb2RlbGVsZW1lbnRzL0V4cG9zZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY1ZjE0OTgKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9tb2RlbGVsZW1lbnRzL0V4cG9zZS5qYXZhCkBAIC0wLDAgKzEsNTggQEAKKy8qKg0KKyAqIENvcHlyaWdodCAoYykgMjAxNSBDRUEgTElTVC4NCisgKiANCisgKiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KKyAqICBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCisgKiAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCisgKiAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgKi8NCitwYWNrYWdlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5tb2RlbGVsZW1lbnRzOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRU9iamVjdDsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UudW1sMi51bWwuRGVwZW5kZW5jeTsNCisNCisvKioNCisgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKyAqIEEgcmVwcmVzZW50YXRpb24gb2YgdGhlIG1vZGVsIG9iamVjdCAnPGVtPjxiPkV4cG9zZTwvYj48L2VtPicuDQorICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorICoNCisgKiA8cD4NCisgKiBUaGUgZm9sbG93aW5nIGZlYXR1cmVzIGFyZSBzdXBwb3J0ZWQ6DQorICogPHVsPg0KKyAqICAgPGxpPntAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQubW9kZWxlbGVtZW50cy5FeHBvc2UjZ2V0QmFzZV9EZXBlbmRlbmN5IDxlbT5CYXNlIERlcGVuZGVuY3k8L2VtPn08L2xpPg0KKyAqIDwvdWw+DQorICogPC9wPg0KKyAqDQorICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQubW9kZWxlbGVtZW50cy5Nb2RlbGVsZW1lbnRzUGFja2FnZSNnZXRFeHBvc2UoKQ0KKyAqIEBtb2RlbA0KKyAqIEBnZW5lcmF0ZWQNCisgKi8NCitwdWJsaWMgaW50ZXJmYWNlIEV4cG9zZSBleHRlbmRzIEVPYmplY3Qgew0KKwkvKioNCisJICogUmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+PGI+QmFzZSBEZXBlbmRlbmN5PC9iPjwvZW0+JyByZWZlcmVuY2UuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDxwPg0KKwkgKiBJZiB0aGUgbWVhbmluZyBvZiB0aGUgJzxlbT5CYXNlIERlcGVuZGVuY3k8L2VtPicgcmVmZXJlbmNlIGlzbid0IGNsZWFyLA0KKwkgKiB0aGVyZSByZWFsbHkgc2hvdWxkIGJlIG1vcmUgb2YgYSBkZXNjcmlwdGlvbiBoZXJlLi4uDQorCSAqIDwvcD4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEByZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSAnPGVtPkJhc2UgRGVwZW5kZW5jeTwvZW0+JyByZWZlcmVuY2UuDQorCSAqIEBzZWUgI3NldEJhc2VfRGVwZW5kZW5jeShEZXBlbmRlbmN5KQ0KKwkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5tb2RlbGVsZW1lbnRzLk1vZGVsZWxlbWVudHNQYWNrYWdlI2dldEV4cG9zZV9CYXNlX0RlcGVuZGVuY3koKQ0KKwkgKiBAbW9kZWwgb3JkZXJlZD0iZmFsc2UiDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCURlcGVuZGVuY3kgZ2V0QmFzZV9EZXBlbmRlbmN5KCk7DQorDQorCS8qKg0KKwkgKiBTZXRzIHRoZSB2YWx1ZSBvZiB0aGUgJ3tAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQubW9kZWxlbGVtZW50cy5FeHBvc2UjZ2V0QmFzZV9EZXBlbmRlbmN5IDxlbT5CYXNlIERlcGVuZGVuY3k8L2VtPn0nIHJlZmVyZW5jZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBwYXJhbSB2YWx1ZSB0aGUgbmV3IHZhbHVlIG9mIHRoZSAnPGVtPkJhc2UgRGVwZW5kZW5jeTwvZW0+JyByZWZlcmVuY2UuDQorCSAqIEBzZWUgI2dldEJhc2VfRGVwZW5kZW5jeSgpDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXZvaWQgc2V0QmFzZV9EZXBlbmRlbmN5KERlcGVuZGVuY3kgdmFsdWUpOw0KKw0KK30gLy8gRXhwb3NlDQpkaWZmIC0tZ2l0IGEvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvbW9kZWxlbGVtZW50cy9Nb2RlbGVsZW1lbnRzRmFjdG9yeS5qYXZhIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvbW9kZWxlbGVtZW50cy9Nb2RlbGVsZW1lbnRzRmFjdG9yeS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU2N2Y4YjcKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9tb2RlbGVsZW1lbnRzL01vZGVsZWxlbWVudHNGYWN0b3J5LmphdmEKQEAgLTAsMCArMSwxMTEgQEAKKy8qKg0KKyAqIENvcHlyaWdodCAoYykgMjAxNSBDRUEgTElTVC4NCisgKiANCisgKiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KKyAqICBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCisgKiAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCisgKiAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgKi8NCitwYWNrYWdlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5tb2RlbGVsZW1lbnRzOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRUZhY3Rvcnk7DQorDQorLyoqDQorICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisgKiBUaGUgPGI+RmFjdG9yeTwvYj4gZm9yIHRoZSBtb2RlbC4NCisgKiBJdCBwcm92aWRlcyBhIGNyZWF0ZSBtZXRob2QgZm9yIGVhY2ggbm9uLWFic3RyYWN0IGNsYXNzIG9mIHRoZSBtb2RlbC4NCisgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5tb2RlbGVsZW1lbnRzLk1vZGVsZWxlbWVudHNQYWNrYWdlDQorICogQGdlbmVyYXRlZA0KKyAqLw0KK3B1YmxpYyBpbnRlcmZhY2UgTW9kZWxlbGVtZW50c0ZhY3RvcnkgZXh0ZW5kcyBFRmFjdG9yeSB7DQorCS8qKg0KKwkgKiBUaGUgc2luZ2xldG9uIGluc3RhbmNlIG9mIHRoZSBmYWN0b3J5Lg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJTW9kZWxlbGVtZW50c0ZhY3RvcnkgZUlOU1RBTkNFID0gb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0Lm1vZGVsZWxlbWVudHMuaW50ZXJuYWwuaW1wbC5Nb2RlbGVsZW1lbnRzRmFjdG9yeUltcGwuaW5pdCgpOw0KKw0KKwkvKioNCisJICogUmV0dXJucyBhIG5ldyBvYmplY3Qgb2YgY2xhc3MgJzxlbT5SYXRpb25hbGU8L2VtPicuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAcmV0dXJuIGEgbmV3IG9iamVjdCBvZiBjbGFzcyAnPGVtPlJhdGlvbmFsZTwvZW0+Jy4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJUmF0aW9uYWxlIGNyZWF0ZVJhdGlvbmFsZSgpOw0KKw0KKwkvKioNCisJICogUmV0dXJucyBhIG5ldyBvYmplY3Qgb2YgY2xhc3MgJzxlbT5WaWV3PC9lbT4nLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHJldHVybiBhIG5ldyBvYmplY3Qgb2YgY2xhc3MgJzxlbT5WaWV3PC9lbT4nLg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlWaWV3IGNyZWF0ZVZpZXcoKTsNCisNCisJLyoqDQorCSAqIFJldHVybnMgYSBuZXcgb2JqZWN0IG9mIGNsYXNzICc8ZW0+VmlldyBQb2ludDwvZW0+Jy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEByZXR1cm4gYSBuZXcgb2JqZWN0IG9mIGNsYXNzICc8ZW0+VmlldyBQb2ludDwvZW0+Jy4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJVmlld1BvaW50IGNyZWF0ZVZpZXdQb2ludCgpOw0KKw0KKwkvKioNCisJICogUmV0dXJucyBhIG5ldyBvYmplY3Qgb2YgY2xhc3MgJzxlbT5TdGFrZWhvbGRlcjwvZW0+Jy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEByZXR1cm4gYSBuZXcgb2JqZWN0IG9mIGNsYXNzICc8ZW0+U3Rha2Vob2xkZXI8L2VtPicuDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCVN0YWtlaG9sZGVyIGNyZWF0ZVN0YWtlaG9sZGVyKCk7DQorDQorCS8qKg0KKwkgKiBSZXR1cm5zIGEgbmV3IG9iamVjdCBvZiBjbGFzcyAnPGVtPkNvbmZvcm08L2VtPicuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAcmV0dXJuIGEgbmV3IG9iamVjdCBvZiBjbGFzcyAnPGVtPkNvbmZvcm08L2VtPicuDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUNvbmZvcm0gY3JlYXRlQ29uZm9ybSgpOw0KKw0KKwkvKioNCisJICogUmV0dXJucyBhIG5ldyBvYmplY3Qgb2YgY2xhc3MgJzxlbT5Qcm9ibGVtPC9lbT4nLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHJldHVybiBhIG5ldyBvYmplY3Qgb2YgY2xhc3MgJzxlbT5Qcm9ibGVtPC9lbT4nLg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlQcm9ibGVtIGNyZWF0ZVByb2JsZW0oKTsNCisNCisJLyoqDQorCSAqIFJldHVybnMgYSBuZXcgb2JqZWN0IG9mIGNsYXNzICc8ZW0+RXhwb3NlPC9lbT4nLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHJldHVybiBhIG5ldyBvYmplY3Qgb2YgY2xhc3MgJzxlbT5FeHBvc2U8L2VtPicuDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUV4cG9zZSBjcmVhdGVFeHBvc2UoKTsNCisNCisJLyoqDQorCSAqIFJldHVybnMgYSBuZXcgb2JqZWN0IG9mIGNsYXNzICc8ZW0+RWxlbWVudCBHcm91cDwvZW0+Jy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEByZXR1cm4gYSBuZXcgb2JqZWN0IG9mIGNsYXNzICc8ZW0+RWxlbWVudCBHcm91cDwvZW0+Jy4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJRWxlbWVudEdyb3VwIGNyZWF0ZUVsZW1lbnRHcm91cCgpOw0KKw0KKwkvKioNCisJICogUmV0dXJucyB0aGUgcGFja2FnZSBzdXBwb3J0ZWQgYnkgdGhpcyBmYWN0b3J5Lg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHJldHVybiB0aGUgcGFja2FnZSBzdXBwb3J0ZWQgYnkgdGhpcyBmYWN0b3J5Lg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlNb2RlbGVsZW1lbnRzUGFja2FnZSBnZXRNb2RlbGVsZW1lbnRzUGFja2FnZSgpOw0KKw0KK30gLy9Nb2RlbGVsZW1lbnRzRmFjdG9yeQ0KZGlmZiAtLWdpdCBhL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L21vZGVsZWxlbWVudHMvTW9kZWxlbGVtZW50c1BhY2thZ2UuamF2YSBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L21vZGVsZWxlbWVudHMvTW9kZWxlbGVtZW50c1BhY2thZ2UuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xN2IxN2Y3Ci0tLSAvZGV2L251bGwKKysrIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvbW9kZWxlbGVtZW50cy9Nb2RlbGVsZW1lbnRzUGFja2FnZS5qYXZhCkBAIC0wLDAgKzEsMTMxMyBAQAorLyoqDQorICogQ29weXJpZ2h0IChjKSAyMDE1IENFQSBMSVNULg0KKyAqIA0KKyAqICBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQorICogIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KKyAqICB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KKyAqICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqLw0KK3BhY2thZ2Ugb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0Lm1vZGVsZWxlbWVudHM7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FQXR0cmlidXRlOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRUNsYXNzOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRU9wZXJhdGlvbjsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVQYWNrYWdlOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRVJlZmVyZW5jZTsNCisNCisvKioNCisgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKyAqIFRoZSA8Yj5QYWNrYWdlPC9iPiBmb3IgdGhlIG1vZGVsLg0KKyAqIEl0IGNvbnRhaW5zIGFjY2Vzc29ycyBmb3IgdGhlIG1ldGEgb2JqZWN0cyB0byByZXByZXNlbnQNCisgKiA8dWw+DQorICogICA8bGk+ZWFjaCBjbGFzcyw8L2xpPg0KKyAqICAgPGxpPmVhY2ggZmVhdHVyZSBvZiBlYWNoIGNsYXNzLDwvbGk+DQorICogICA8bGk+ZWFjaCBvcGVyYXRpb24gb2YgZWFjaCBjbGFzcyw8L2xpPg0KKyAqICAgPGxpPmVhY2ggZW51bSw8L2xpPg0KKyAqICAgPGxpPmFuZCBlYWNoIGRhdGEgdHlwZTwvbGk+DQorICogPC91bD4NCisgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5tb2RlbGVsZW1lbnRzLk1vZGVsZWxlbWVudHNGYWN0b3J5DQorICogQG1vZGVsIGtpbmQ9InBhY2thZ2UiDQorICogICAgICAgIGFubm90YXRpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvdW1sMi8yLjAuMC9VTUwgb3JpZ2luYWxOYW1lPSdNb2RlbEVsZW1lbnRzJyINCisgKiBAZ2VuZXJhdGVkDQorICovDQorcHVibGljIGludGVyZmFjZSBNb2RlbGVsZW1lbnRzUGFja2FnZSBleHRlbmRzIEVQYWNrYWdlIHsNCisJLyoqDQorCSAqIFRoZSBwYWNrYWdlIG5hbWUuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlTdHJpbmcgZU5BTUUgPSAibW9kZWxlbGVtZW50cyI7IC8vJE5PTi1OTFMtMSQNCisNCisJLyoqDQorCSAqIFRoZSBwYWNrYWdlIG5hbWVzcGFjZSBVUkkuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlTdHJpbmcgZU5TX1VSSSA9ICJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3BhcHlydXMvMS40L1N5c01ML01vZGVsRWxlbWVudHMiOyAvLyROT04tTkxTLTEkDQorDQorCS8qKg0KKwkgKiBUaGUgcGFja2FnZSBuYW1lc3BhY2UgbmFtZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCVN0cmluZyBlTlNfUFJFRklYID0gIk1vZGVsRWxlbWVudHMiOyAvLyROT04tTkxTLTEkDQorDQorCS8qKg0KKwkgKiBUaGUgc2luZ2xldG9uIGluc3RhbmNlIG9mIHRoZSBwYWNrYWdlLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJTW9kZWxlbGVtZW50c1BhY2thZ2UgZUlOU1RBTkNFID0gb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0Lm1vZGVsZWxlbWVudHMuaW50ZXJuYWwuaW1wbC5Nb2RlbGVsZW1lbnRzUGFja2FnZUltcGwuaW5pdCgpOw0KKw0KKwkvKioNCisJICogVGhlIG1ldGEgb2JqZWN0IGlkIGZvciB0aGUgJ3tAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQubW9kZWxlbGVtZW50cy5pbnRlcm5hbC5pbXBsLlJhdGlvbmFsZUltcGwgPGVtPlJhdGlvbmFsZTwvZW0+fScgY2xhc3MuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5tb2RlbGVsZW1lbnRzLmludGVybmFsLmltcGwuUmF0aW9uYWxlSW1wbA0KKwkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5tb2RlbGVsZW1lbnRzLmludGVybmFsLmltcGwuTW9kZWxlbGVtZW50c1BhY2thZ2VJbXBsI2dldFJhdGlvbmFsZSgpDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCWludCBSQVRJT05BTEUgPSAwOw0KKw0KKwkvKioNCisJICogVGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkJhc2UgQ29tbWVudDwvYj48L2VtPicgcmVmZXJlbmNlLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKiBAb3JkZXJlZA0KKwkgKi8NCisJaW50IFJBVElPTkFMRV9fQkFTRV9DT01NRU5UID0gMDsNCisNCisJLyoqDQorCSAqIFRoZSBudW1iZXIgb2Ygc3RydWN0dXJhbCBmZWF0dXJlcyBvZiB0aGUgJzxlbT5SYXRpb25hbGU8L2VtPicgY2xhc3MuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqIEBvcmRlcmVkDQorCSAqLw0KKwlpbnQgUkFUSU9OQUxFX0ZFQVRVUkVfQ09VTlQgPSAxOw0KKw0KKwkvKioNCisJICogVGhlIG51bWJlciBvZiBvcGVyYXRpb25zIG9mIHRoZSAnPGVtPlJhdGlvbmFsZTwvZW0+JyBjbGFzcy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICogQG9yZGVyZWQNCisJICovDQorCWludCBSQVRJT05BTEVfT1BFUkFUSU9OX0NPVU5UID0gMDsNCisNCisJLyoqDQorCSAqIFRoZSBtZXRhIG9iamVjdCBpZCBmb3IgdGhlICd7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0Lm1vZGVsZWxlbWVudHMuaW50ZXJuYWwuaW1wbC5WaWV3SW1wbCA8ZW0+VmlldzwvZW0+fScgY2xhc3MuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5tb2RlbGVsZW1lbnRzLmludGVybmFsLmltcGwuVmlld0ltcGwNCisJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQubW9kZWxlbGVtZW50cy5pbnRlcm5hbC5pbXBsLk1vZGVsZWxlbWVudHNQYWNrYWdlSW1wbCNnZXRWaWV3KCkNCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJaW50IFZJRVcgPSAxOw0KKw0KKwkvKioNCisJICogVGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkJhc2UgUGFja2FnZTwvYj48L2VtPicgcmVmZXJlbmNlLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKiBAb3JkZXJlZA0KKwkgKi8NCisJaW50IFZJRVdfX0JBU0VfUEFDS0FHRSA9IDA7DQorDQorCS8qKg0KKwkgKiBUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+VmlldyBQb2ludDwvYj48L2VtPicgcmVmZXJlbmNlLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKiBAb3JkZXJlZA0KKwkgKi8NCisJaW50IFZJRVdfX1ZJRVdfUE9JTlQgPSAxOw0KKw0KKwkvKioNCisJICogVGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPlN0YWtlaG9sZGVyPC9iPjwvZW0+JyByZWZlcmVuY2UgbGlzdC4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICogQG9yZGVyZWQNCisJICovDQorCWludCBWSUVXX19TVEFLRUhPTERFUiA9IDI7DQorDQorCS8qKg0KKwkgKiBUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+QmFzZSBDbGFzczwvYj48L2VtPicgcmVmZXJlbmNlLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKiBAb3JkZXJlZA0KKwkgKi8NCisJaW50IFZJRVdfX0JBU0VfQ0xBU1MgPSAzOw0KKw0KKwkvKioNCisJICogVGhlIG51bWJlciBvZiBzdHJ1Y3R1cmFsIGZlYXR1cmVzIG9mIHRoZSAnPGVtPlZpZXc8L2VtPicgY2xhc3MuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqIEBvcmRlcmVkDQorCSAqLw0KKwlpbnQgVklFV19GRUFUVVJFX0NPVU5UID0gNDsNCisNCisJLyoqDQorCSAqIFRoZSBudW1iZXIgb2Ygb3BlcmF0aW9ucyBvZiB0aGUgJzxlbT5WaWV3PC9lbT4nIGNsYXNzLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKiBAb3JkZXJlZA0KKwkgKi8NCisJaW50IFZJRVdfT1BFUkFUSU9OX0NPVU5UID0gMDsNCisNCisJLyoqDQorCSAqIFRoZSBtZXRhIG9iamVjdCBpZCBmb3IgdGhlICd7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0Lm1vZGVsZWxlbWVudHMuaW50ZXJuYWwuaW1wbC5WaWV3UG9pbnRJbXBsIDxlbT5WaWV3IFBvaW50PC9lbT59JyBjbGFzcy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0Lm1vZGVsZWxlbWVudHMuaW50ZXJuYWwuaW1wbC5WaWV3UG9pbnRJbXBsDQorCSAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0Lm1vZGVsZWxlbWVudHMuaW50ZXJuYWwuaW1wbC5Nb2RlbGVsZW1lbnRzUGFja2FnZUltcGwjZ2V0Vmlld1BvaW50KCkNCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJaW50IFZJRVdfUE9JTlQgPSAyOw0KKw0KKwkvKioNCisJICogVGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkJhc2UgQ2xhc3M8L2I+PC9lbT4nIHJlZmVyZW5jZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICogQG9yZGVyZWQNCisJICovDQorCWludCBWSUVXX1BPSU5UX19CQVNFX0NMQVNTID0gMDsNCisNCisJLyoqDQorCSAqIFRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5TdGFrZWhvbGRlcjwvYj48L2VtPicgcmVmZXJlbmNlIGxpc3QuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqIEBvcmRlcmVkDQorCSAqLw0KKwlpbnQgVklFV19QT0lOVF9fU1RBS0VIT0xERVIgPSAxOw0KKw0KKwkvKioNCisJICogVGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPlB1cnBvc2U8L2I+PC9lbT4nIGF0dHJpYnV0ZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICogQG9yZGVyZWQNCisJICovDQorCWludCBWSUVXX1BPSU5UX19QVVJQT1NFID0gMjsNCisNCisJLyoqDQorCSAqIFRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5Db25jZXJuIExpc3Q8L2I+PC9lbT4nIHJlZmVyZW5jZSBsaXN0Lg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKiBAb3JkZXJlZA0KKwkgKi8NCisJaW50IFZJRVdfUE9JTlRfX0NPTkNFUk5fTElTVCA9IDM7DQorDQorCS8qKg0KKwkgKiBUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+TGFuZ3VhZ2U8L2I+PC9lbT4nIGF0dHJpYnV0ZSBsaXN0Lg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKiBAb3JkZXJlZA0KKwkgKi8NCisJaW50IFZJRVdfUE9JTlRfX0xBTkdVQUdFID0gNDsNCisNCisJLyoqDQorCSAqIFRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5NZXRob2Q8L2I+PC9lbT4nIHJlZmVyZW5jZSBsaXN0Lg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKiBAb3JkZXJlZA0KKwkgKi8NCisJaW50IFZJRVdfUE9JTlRfX01FVEhPRCA9IDU7DQorDQorCS8qKg0KKwkgKiBUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+UHJlc2VudGF0aW9uPC9iPjwvZW0+JyBhdHRyaWJ1dGUgbGlzdC4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICogQG9yZGVyZWQNCisJICovDQorCWludCBWSUVXX1BPSU5UX19QUkVTRU5UQVRJT04gPSA2Ow0KKw0KKwkvKioNCisJICogVGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkNvbmNlcm48L2I+PC9lbT4nIGF0dHJpYnV0ZSBsaXN0Lg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKiBAb3JkZXJlZA0KKwkgKi8NCisJaW50IFZJRVdfUE9JTlRfX0NPTkNFUk4gPSA3Ow0KKw0KKwkvKioNCisJICogVGhlIG51bWJlciBvZiBzdHJ1Y3R1cmFsIGZlYXR1cmVzIG9mIHRoZSAnPGVtPlZpZXcgUG9pbnQ8L2VtPicgY2xhc3MuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqIEBvcmRlcmVkDQorCSAqLw0KKwlpbnQgVklFV19QT0lOVF9GRUFUVVJFX0NPVU5UID0gODsNCisNCisJLyoqDQorCSAqIFRoZSBudW1iZXIgb2Ygb3BlcmF0aW9ucyBvZiB0aGUgJzxlbT5WaWV3IFBvaW50PC9lbT4nIGNsYXNzLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKiBAb3JkZXJlZA0KKwkgKi8NCisJaW50IFZJRVdfUE9JTlRfT1BFUkFUSU9OX0NPVU5UID0gMDsNCisNCisJLyoqDQorCSAqIFRoZSBtZXRhIG9iamVjdCBpZCBmb3IgdGhlICd7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0Lm1vZGVsZWxlbWVudHMuaW50ZXJuYWwuaW1wbC5TdGFrZWhvbGRlckltcGwgPGVtPlN0YWtlaG9sZGVyPC9lbT59JyBjbGFzcy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0Lm1vZGVsZWxlbWVudHMuaW50ZXJuYWwuaW1wbC5TdGFrZWhvbGRlckltcGwNCisJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQubW9kZWxlbGVtZW50cy5pbnRlcm5hbC5pbXBsLk1vZGVsZWxlbWVudHNQYWNrYWdlSW1wbCNnZXRTdGFrZWhvbGRlcigpDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCWludCBTVEFLRUhPTERFUiA9IDM7DQorDQorCS8qKg0KKwkgKiBUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+QmFzZSBDbGFzc2lmaWVyPC9iPjwvZW0+JyByZWZlcmVuY2UuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqIEBvcmRlcmVkDQorCSAqLw0KKwlpbnQgU1RBS0VIT0xERVJfX0JBU0VfQ0xBU1NJRklFUiA9IDA7DQorDQorCS8qKg0KKwkgKiBUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+Q29uY2VybjwvYj48L2VtPicgcmVmZXJlbmNlIGxpc3QuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqIEBvcmRlcmVkDQorCSAqLw0KKwlpbnQgU1RBS0VIT0xERVJfX0NPTkNFUk4gPSAxOw0KKw0KKwkvKioNCisJICogVGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkNvbmNlcm4gTGlzdDwvYj48L2VtPicgcmVmZXJlbmNlLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKiBAb3JkZXJlZA0KKwkgKi8NCisJaW50IFNUQUtFSE9MREVSX19DT05DRVJOX0xJU1QgPSAyOw0KKw0KKwkvKioNCisJICogVGhlIG51bWJlciBvZiBzdHJ1Y3R1cmFsIGZlYXR1cmVzIG9mIHRoZSAnPGVtPlN0YWtlaG9sZGVyPC9lbT4nIGNsYXNzLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKiBAb3JkZXJlZA0KKwkgKi8NCisJaW50IFNUQUtFSE9MREVSX0ZFQVRVUkVfQ09VTlQgPSAzOw0KKw0KKwkvKioNCisJICogVGhlIG51bWJlciBvZiBvcGVyYXRpb25zIG9mIHRoZSAnPGVtPlN0YWtlaG9sZGVyPC9lbT4nIGNsYXNzLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKiBAb3JkZXJlZA0KKwkgKi8NCisJaW50IFNUQUtFSE9MREVSX09QRVJBVElPTl9DT1VOVCA9IDA7DQorDQorCS8qKg0KKwkgKiBUaGUgbWV0YSBvYmplY3QgaWQgZm9yIHRoZSAne0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5tb2RlbGVsZW1lbnRzLmludGVybmFsLmltcGwuQ29uZm9ybUltcGwgPGVtPkNvbmZvcm08L2VtPn0nIGNsYXNzLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQubW9kZWxlbGVtZW50cy5pbnRlcm5hbC5pbXBsLkNvbmZvcm1JbXBsDQorCSAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0Lm1vZGVsZWxlbWVudHMuaW50ZXJuYWwuaW1wbC5Nb2RlbGVsZW1lbnRzUGFja2FnZUltcGwjZ2V0Q29uZm9ybSgpDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCWludCBDT05GT1JNID0gNDsNCisNCisJLyoqDQorCSAqIFRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5CYXNlIERlcGVuZGVuY3k8L2I+PC9lbT4nIHJlZmVyZW5jZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICogQG9yZGVyZWQNCisJICovDQorCWludCBDT05GT1JNX19CQVNFX0RFUEVOREVOQ1kgPSAwOw0KKw0KKwkvKioNCisJICogVGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkJhc2UgR2VuZXJhbGl6YXRpb248L2I+PC9lbT4nIHJlZmVyZW5jZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICogQG9yZGVyZWQNCisJICovDQorCWludCBDT05GT1JNX19CQVNFX0dFTkVSQUxJWkFUSU9OID0gMTsNCisNCisJLyoqDQorCSAqIFRoZSBudW1iZXIgb2Ygc3RydWN0dXJhbCBmZWF0dXJlcyBvZiB0aGUgJzxlbT5Db25mb3JtPC9lbT4nIGNsYXNzLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKiBAb3JkZXJlZA0KKwkgKi8NCisJaW50IENPTkZPUk1fRkVBVFVSRV9DT1VOVCA9IDI7DQorDQorCS8qKg0KKwkgKiBUaGUgbnVtYmVyIG9mIG9wZXJhdGlvbnMgb2YgdGhlICc8ZW0+Q29uZm9ybTwvZW0+JyBjbGFzcy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICogQG9yZGVyZWQNCisJICovDQorCWludCBDT05GT1JNX09QRVJBVElPTl9DT1VOVCA9IDA7DQorDQorCS8qKg0KKwkgKiBUaGUgbWV0YSBvYmplY3QgaWQgZm9yIHRoZSAne0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5tb2RlbGVsZW1lbnRzLmludGVybmFsLmltcGwuUHJvYmxlbUltcGwgPGVtPlByb2JsZW08L2VtPn0nIGNsYXNzLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQubW9kZWxlbGVtZW50cy5pbnRlcm5hbC5pbXBsLlByb2JsZW1JbXBsDQorCSAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0Lm1vZGVsZWxlbWVudHMuaW50ZXJuYWwuaW1wbC5Nb2RlbGVsZW1lbnRzUGFja2FnZUltcGwjZ2V0UHJvYmxlbSgpDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCWludCBQUk9CTEVNID0gNTsNCisNCisJLyoqDQorCSAqIFRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5CYXNlIENvbW1lbnQ8L2I+PC9lbT4nIHJlZmVyZW5jZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICogQG9yZGVyZWQNCisJICovDQorCWludCBQUk9CTEVNX19CQVNFX0NPTU1FTlQgPSAwOw0KKw0KKwkvKioNCisJICogVGhlIG51bWJlciBvZiBzdHJ1Y3R1cmFsIGZlYXR1cmVzIG9mIHRoZSAnPGVtPlByb2JsZW08L2VtPicgY2xhc3MuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqIEBvcmRlcmVkDQorCSAqLw0KKwlpbnQgUFJPQkxFTV9GRUFUVVJFX0NPVU5UID0gMTsNCisNCisJLyoqDQorCSAqIFRoZSBudW1iZXIgb2Ygb3BlcmF0aW9ucyBvZiB0aGUgJzxlbT5Qcm9ibGVtPC9lbT4nIGNsYXNzLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKiBAb3JkZXJlZA0KKwkgKi8NCisJaW50IFBST0JMRU1fT1BFUkFUSU9OX0NPVU5UID0gMDsNCisNCisJLyoqDQorCSAqIFRoZSBtZXRhIG9iamVjdCBpZCBmb3IgdGhlICd7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0Lm1vZGVsZWxlbWVudHMuaW50ZXJuYWwuaW1wbC5FeHBvc2VJbXBsIDxlbT5FeHBvc2U8L2VtPn0nIGNsYXNzLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQubW9kZWxlbGVtZW50cy5pbnRlcm5hbC5pbXBsLkV4cG9zZUltcGwNCisJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQubW9kZWxlbGVtZW50cy5pbnRlcm5hbC5pbXBsLk1vZGVsZWxlbWVudHNQYWNrYWdlSW1wbCNnZXRFeHBvc2UoKQ0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlpbnQgRVhQT1NFID0gNjsNCisNCisJLyoqDQorCSAqIFRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5CYXNlIERlcGVuZGVuY3k8L2I+PC9lbT4nIHJlZmVyZW5jZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICogQG9yZGVyZWQNCisJICovDQorCWludCBFWFBPU0VfX0JBU0VfREVQRU5ERU5DWSA9IDA7DQorDQorCS8qKg0KKwkgKiBUaGUgbnVtYmVyIG9mIHN0cnVjdHVyYWwgZmVhdHVyZXMgb2YgdGhlICc8ZW0+RXhwb3NlPC9lbT4nIGNsYXNzLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKiBAb3JkZXJlZA0KKwkgKi8NCisJaW50IEVYUE9TRV9GRUFUVVJFX0NPVU5UID0gMTsNCisNCisJLyoqDQorCSAqIFRoZSBudW1iZXIgb2Ygb3BlcmF0aW9ucyBvZiB0aGUgJzxlbT5FeHBvc2U8L2VtPicgY2xhc3MuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqIEBvcmRlcmVkDQorCSAqLw0KKwlpbnQgRVhQT1NFX09QRVJBVElPTl9DT1VOVCA9IDA7DQorDQorCS8qKg0KKwkgKiBUaGUgbWV0YSBvYmplY3QgaWQgZm9yIHRoZSAne0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5tb2RlbGVsZW1lbnRzLmludGVybmFsLmltcGwuRWxlbWVudEdyb3VwSW1wbCA8ZW0+RWxlbWVudCBHcm91cDwvZW0+fScgY2xhc3MuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5tb2RlbGVsZW1lbnRzLmludGVybmFsLmltcGwuRWxlbWVudEdyb3VwSW1wbA0KKwkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5tb2RlbGVsZW1lbnRzLmludGVybmFsLmltcGwuTW9kZWxlbGVtZW50c1BhY2thZ2VJbXBsI2dldEVsZW1lbnRHcm91cCgpDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCWludCBFTEVNRU5UX0dST1VQID0gNzsNCisNCisJLyoqDQorCSAqIFRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5CYXNlIENvbW1lbnQ8L2I+PC9lbT4nIHJlZmVyZW5jZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICogQG9yZGVyZWQNCisJICovDQorCWludCBFTEVNRU5UX0dST1VQX19CQVNFX0NPTU1FTlQgPSAwOw0KKw0KKwkvKioNCisJICogVGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPk5hbWU8L2I+PC9lbT4nIGF0dHJpYnV0ZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICogQG9yZGVyZWQNCisJICovDQorCWludCBFTEVNRU5UX0dST1VQX19OQU1FID0gMTsNCisNCisJLyoqDQorCSAqIFRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5Dcml0ZXJpb248L2I+PC9lbT4nIGF0dHJpYnV0ZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICogQG9yZGVyZWQNCisJICovDQorCWludCBFTEVNRU5UX0dST1VQX19DUklURVJJT04gPSAyOw0KKw0KKwkvKioNCisJICogVGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPlNpemU8L2I+PC9lbT4nIGF0dHJpYnV0ZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICogQG9yZGVyZWQNCisJICovDQorCWludCBFTEVNRU5UX0dST1VQX19TSVpFID0gMzsNCisNCisJLyoqDQorCSAqIFRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5NZW1iZXI8L2I+PC9lbT4nIHJlZmVyZW5jZSBsaXN0Lg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKiBAb3JkZXJlZA0KKwkgKi8NCisJaW50IEVMRU1FTlRfR1JPVVBfX01FTUJFUiA9IDQ7DQorDQorCS8qKg0KKwkgKiBUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+T3JkZXJlZCBNZW1iZXI8L2I+PC9lbT4nIHJlZmVyZW5jZSBsaXN0Lg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKiBAb3JkZXJlZA0KKwkgKi8NCisJaW50IEVMRU1FTlRfR1JPVVBfX09SREVSRURfTUVNQkVSID0gNTsNCisNCisJLyoqDQorCSAqIFRoZSBudW1iZXIgb2Ygc3RydWN0dXJhbCBmZWF0dXJlcyBvZiB0aGUgJzxlbT5FbGVtZW50IEdyb3VwPC9lbT4nIGNsYXNzLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKiBAb3JkZXJlZA0KKwkgKi8NCisJaW50IEVMRU1FTlRfR1JPVVBfRkVBVFVSRV9DT1VOVCA9IDY7DQorDQorCS8qKg0KKwkgKiBUaGUgb3BlcmF0aW9uIGlkIGZvciB0aGUgJzxlbT5Dcml0ZXJpb248L2VtPicgb3BlcmF0aW9uLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKiBAb3JkZXJlZA0KKwkgKi8NCisJaW50IEVMRU1FTlRfR1JPVVBfX19DUklURVJJT04gPSAwOw0KKw0KKwkvKioNCisJICogVGhlIG9wZXJhdGlvbiBpZCBmb3IgdGhlICc8ZW0+U2l6ZTwvZW0+JyBvcGVyYXRpb24uDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqIEBvcmRlcmVkDQorCSAqLw0KKwlpbnQgRUxFTUVOVF9HUk9VUF9fX1NJWkUgPSAxOw0KKw0KKwkvKioNCisJICogVGhlIG9wZXJhdGlvbiBpZCBmb3IgdGhlICc8ZW0+TWVtYmVyPC9lbT4nIG9wZXJhdGlvbi4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICogQG9yZGVyZWQNCisJICovDQorCWludCBFTEVNRU5UX0dST1VQX19fTUVNQkVSID0gMjsNCisNCisJLyoqDQorCSAqIFRoZSBvcGVyYXRpb24gaWQgZm9yIHRoZSAnPGVtPkFsbCBHcm91cHM8L2VtPicgb3BlcmF0aW9uLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKiBAb3JkZXJlZA0KKwkgKi8NCisJaW50IEVMRU1FTlRfR1JPVVBfX19BTExfR1JPVVBTX19FTEVNRU5UID0gMzsNCisNCisJLyoqDQorCSAqIFRoZSBudW1iZXIgb2Ygb3BlcmF0aW9ucyBvZiB0aGUgJzxlbT5FbGVtZW50IEdyb3VwPC9lbT4nIGNsYXNzLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKiBAb3JkZXJlZA0KKwkgKi8NCisJaW50IEVMRU1FTlRfR1JPVVBfT1BFUkFUSU9OX0NPVU5UID0gNDsNCisNCisNCisJLyoqDQorCSAqIFJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciBjbGFzcyAne0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5tb2RlbGVsZW1lbnRzLlJhdGlvbmFsZSA8ZW0+UmF0aW9uYWxlPC9lbT59Jy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEByZXR1cm4gdGhlIG1ldGEgb2JqZWN0IGZvciBjbGFzcyAnPGVtPlJhdGlvbmFsZTwvZW0+Jy4NCisJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQubW9kZWxlbGVtZW50cy5SYXRpb25hbGUNCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJRUNsYXNzIGdldFJhdGlvbmFsZSgpOw0KKw0KKwkvKioNCisJICogUmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSByZWZlcmVuY2UgJ3tAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQubW9kZWxlbGVtZW50cy5SYXRpb25hbGUjZ2V0QmFzZV9Db21tZW50IDxlbT5CYXNlIENvbW1lbnQ8L2VtPn0nLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHJldHVybiB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSByZWZlcmVuY2UgJzxlbT5CYXNlIENvbW1lbnQ8L2VtPicuDQorCSAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0Lm1vZGVsZWxlbWVudHMuUmF0aW9uYWxlI2dldEJhc2VfQ29tbWVudCgpDQorCSAqIEBzZWUgI2dldFJhdGlvbmFsZSgpDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUVSZWZlcmVuY2UgZ2V0UmF0aW9uYWxlX0Jhc2VfQ29tbWVudCgpOw0KKw0KKwkvKioNCisJICogUmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICd7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0Lm1vZGVsZWxlbWVudHMuVmlldyA8ZW0+VmlldzwvZW0+fScuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAcmV0dXJuIHRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJzxlbT5WaWV3PC9lbT4nLg0KKwkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5tb2RlbGVsZW1lbnRzLlZpZXcNCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJRUNsYXNzIGdldFZpZXcoKTsNCisNCisJLyoqDQorCSAqIFJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgcmVmZXJlbmNlICd7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0Lm1vZGVsZWxlbWVudHMuVmlldyNnZXRCYXNlX1BhY2thZ2UgPGVtPkJhc2UgUGFja2FnZTwvZW0+fScuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAcmV0dXJuIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIHJlZmVyZW5jZSAnPGVtPkJhc2UgUGFja2FnZTwvZW0+Jy4NCisJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQubW9kZWxlbGVtZW50cy5WaWV3I2dldEJhc2VfUGFja2FnZSgpDQorCSAqIEBzZWUgI2dldFZpZXcoKQ0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlFUmVmZXJlbmNlIGdldFZpZXdfQmFzZV9QYWNrYWdlKCk7DQorDQorCS8qKg0KKwkgKiBSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIHJlZmVyZW5jZSAne0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5tb2RlbGVsZW1lbnRzLlZpZXcjZ2V0Vmlld1BvaW50IDxlbT5WaWV3IFBvaW50PC9lbT59Jy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEByZXR1cm4gdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgcmVmZXJlbmNlICc8ZW0+VmlldyBQb2ludDwvZW0+Jy4NCisJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQubW9kZWxlbGVtZW50cy5WaWV3I2dldFZpZXdQb2ludCgpDQorCSAqIEBzZWUgI2dldFZpZXcoKQ0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlFUmVmZXJlbmNlIGdldFZpZXdfVmlld1BvaW50KCk7DQorDQorCS8qKg0KKwkgKiBSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIHJlZmVyZW5jZSBsaXN0ICd7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0Lm1vZGVsZWxlbWVudHMuVmlldyNnZXRTdGFrZWhvbGRlciA8ZW0+U3Rha2Vob2xkZXI8L2VtPn0nLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHJldHVybiB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSByZWZlcmVuY2UgbGlzdCAnPGVtPlN0YWtlaG9sZGVyPC9lbT4nLg0KKwkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5tb2RlbGVsZW1lbnRzLlZpZXcjZ2V0U3Rha2Vob2xkZXIoKQ0KKwkgKiBAc2VlICNnZXRWaWV3KCkNCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJRVJlZmVyZW5jZSBnZXRWaWV3X1N0YWtlaG9sZGVyKCk7DQorDQorCS8qKg0KKwkgKiBSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIHJlZmVyZW5jZSAne0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5tb2RlbGVsZW1lbnRzLlZpZXcjZ2V0QmFzZV9DbGFzcyA8ZW0+QmFzZSBDbGFzczwvZW0+fScuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAcmV0dXJuIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIHJlZmVyZW5jZSAnPGVtPkJhc2UgQ2xhc3M8L2VtPicuDQorCSAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0Lm1vZGVsZWxlbWVudHMuVmlldyNnZXRCYXNlX0NsYXNzKCkNCisJICogQHNlZSAjZ2V0VmlldygpDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUVSZWZlcmVuY2UgZ2V0Vmlld19CYXNlX0NsYXNzKCk7DQorDQorCS8qKg0KKwkgKiBSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJ3tAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQubW9kZWxlbGVtZW50cy5WaWV3UG9pbnQgPGVtPlZpZXcgUG9pbnQ8L2VtPn0nLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHJldHVybiB0aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICc8ZW0+VmlldyBQb2ludDwvZW0+Jy4NCisJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQubW9kZWxlbGVtZW50cy5WaWV3UG9pbnQNCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJRUNsYXNzIGdldFZpZXdQb2ludCgpOw0KKw0KKwkvKioNCisJICogUmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSByZWZlcmVuY2UgJ3tAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQubW9kZWxlbGVtZW50cy5WaWV3UG9pbnQjZ2V0QmFzZV9DbGFzcyA8ZW0+QmFzZSBDbGFzczwvZW0+fScuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAcmV0dXJuIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIHJlZmVyZW5jZSAnPGVtPkJhc2UgQ2xhc3M8L2VtPicuDQorCSAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0Lm1vZGVsZWxlbWVudHMuVmlld1BvaW50I2dldEJhc2VfQ2xhc3MoKQ0KKwkgKiBAc2VlICNnZXRWaWV3UG9pbnQoKQ0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlFUmVmZXJlbmNlIGdldFZpZXdQb2ludF9CYXNlX0NsYXNzKCk7DQorDQorCS8qKg0KKwkgKiBSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIHJlZmVyZW5jZSBsaXN0ICd7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0Lm1vZGVsZWxlbWVudHMuVmlld1BvaW50I2dldFN0YWtlaG9sZGVyIDxlbT5TdGFrZWhvbGRlcjwvZW0+fScuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAcmV0dXJuIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIHJlZmVyZW5jZSBsaXN0ICc8ZW0+U3Rha2Vob2xkZXI8L2VtPicuDQorCSAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0Lm1vZGVsZWxlbWVudHMuVmlld1BvaW50I2dldFN0YWtlaG9sZGVyKCkNCisJICogQHNlZSAjZ2V0Vmlld1BvaW50KCkNCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJRVJlZmVyZW5jZSBnZXRWaWV3UG9pbnRfU3Rha2Vob2xkZXIoKTsNCisNCisJLyoqDQorCSAqIFJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgYXR0cmlidXRlICd7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0Lm1vZGVsZWxlbWVudHMuVmlld1BvaW50I2dldFB1cnBvc2UgPGVtPlB1cnBvc2U8L2VtPn0nLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHJldHVybiB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSBhdHRyaWJ1dGUgJzxlbT5QdXJwb3NlPC9lbT4nLg0KKwkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5tb2RlbGVsZW1lbnRzLlZpZXdQb2ludCNnZXRQdXJwb3NlKCkNCisJICogQHNlZSAjZ2V0Vmlld1BvaW50KCkNCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJRUF0dHJpYnV0ZSBnZXRWaWV3UG9pbnRfUHVycG9zZSgpOw0KKw0KKwkvKioNCisJICogUmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSByZWZlcmVuY2UgbGlzdCAne0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5tb2RlbGVsZW1lbnRzLlZpZXdQb2ludCNnZXRDb25jZXJuTGlzdCA8ZW0+Q29uY2VybiBMaXN0PC9lbT59Jy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEByZXR1cm4gdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgcmVmZXJlbmNlIGxpc3QgJzxlbT5Db25jZXJuIExpc3Q8L2VtPicuDQorCSAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0Lm1vZGVsZWxlbWVudHMuVmlld1BvaW50I2dldENvbmNlcm5MaXN0KCkNCisJICogQHNlZSAjZ2V0Vmlld1BvaW50KCkNCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJRVJlZmVyZW5jZSBnZXRWaWV3UG9pbnRfQ29uY2Vybkxpc3QoKTsNCisNCisJLyoqDQorCSAqIFJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgYXR0cmlidXRlIGxpc3QgJ3tAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQubW9kZWxlbGVtZW50cy5WaWV3UG9pbnQjZ2V0TGFuZ3VhZ2UgPGVtPkxhbmd1YWdlPC9lbT59Jy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEByZXR1cm4gdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgYXR0cmlidXRlIGxpc3QgJzxlbT5MYW5ndWFnZTwvZW0+Jy4NCisJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQubW9kZWxlbGVtZW50cy5WaWV3UG9pbnQjZ2V0TGFuZ3VhZ2UoKQ0KKwkgKiBAc2VlICNnZXRWaWV3UG9pbnQoKQ0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlFQXR0cmlidXRlIGdldFZpZXdQb2ludF9MYW5ndWFnZSgpOw0KKw0KKwkvKioNCisJICogUmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSByZWZlcmVuY2UgbGlzdCAne0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5tb2RlbGVsZW1lbnRzLlZpZXdQb2ludCNnZXRNZXRob2QgPGVtPk1ldGhvZDwvZW0+fScuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAcmV0dXJuIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIHJlZmVyZW5jZSBsaXN0ICc8ZW0+TWV0aG9kPC9lbT4nLg0KKwkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5tb2RlbGVsZW1lbnRzLlZpZXdQb2ludCNnZXRNZXRob2QoKQ0KKwkgKiBAc2VlICNnZXRWaWV3UG9pbnQoKQ0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlFUmVmZXJlbmNlIGdldFZpZXdQb2ludF9NZXRob2QoKTsNCisNCisJLyoqDQorCSAqIFJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgYXR0cmlidXRlIGxpc3QgJ3tAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQubW9kZWxlbGVtZW50cy5WaWV3UG9pbnQjZ2V0UHJlc2VudGF0aW9uIDxlbT5QcmVzZW50YXRpb248L2VtPn0nLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHJldHVybiB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSBhdHRyaWJ1dGUgbGlzdCAnPGVtPlByZXNlbnRhdGlvbjwvZW0+Jy4NCisJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQubW9kZWxlbGVtZW50cy5WaWV3UG9pbnQjZ2V0UHJlc2VudGF0aW9uKCkNCisJICogQHNlZSAjZ2V0Vmlld1BvaW50KCkNCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJRUF0dHJpYnV0ZSBnZXRWaWV3UG9pbnRfUHJlc2VudGF0aW9uKCk7DQorDQorCS8qKg0KKwkgKiBSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGF0dHJpYnV0ZSBsaXN0ICd7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0Lm1vZGVsZWxlbWVudHMuVmlld1BvaW50I2dldENvbmNlcm4gPGVtPkNvbmNlcm48L2VtPn0nLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHJldHVybiB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSBhdHRyaWJ1dGUgbGlzdCAnPGVtPkNvbmNlcm48L2VtPicuDQorCSAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0Lm1vZGVsZWxlbWVudHMuVmlld1BvaW50I2dldENvbmNlcm4oKQ0KKwkgKiBAc2VlICNnZXRWaWV3UG9pbnQoKQ0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlFQXR0cmlidXRlIGdldFZpZXdQb2ludF9Db25jZXJuKCk7DQorDQorCS8qKg0KKwkgKiBSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJ3tAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQubW9kZWxlbGVtZW50cy5TdGFrZWhvbGRlciA8ZW0+U3Rha2Vob2xkZXI8L2VtPn0nLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHJldHVybiB0aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICc8ZW0+U3Rha2Vob2xkZXI8L2VtPicuDQorCSAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0Lm1vZGVsZWxlbWVudHMuU3Rha2Vob2xkZXINCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJRUNsYXNzIGdldFN0YWtlaG9sZGVyKCk7DQorDQorCS8qKg0KKwkgKiBSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIHJlZmVyZW5jZSAne0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5tb2RlbGVsZW1lbnRzLlN0YWtlaG9sZGVyI2dldEJhc2VfQ2xhc3NpZmllciA8ZW0+QmFzZSBDbGFzc2lmaWVyPC9lbT59Jy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEByZXR1cm4gdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgcmVmZXJlbmNlICc8ZW0+QmFzZSBDbGFzc2lmaWVyPC9lbT4nLg0KKwkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5tb2RlbGVsZW1lbnRzLlN0YWtlaG9sZGVyI2dldEJhc2VfQ2xhc3NpZmllcigpDQorCSAqIEBzZWUgI2dldFN0YWtlaG9sZGVyKCkNCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJRVJlZmVyZW5jZSBnZXRTdGFrZWhvbGRlcl9CYXNlX0NsYXNzaWZpZXIoKTsNCisNCisJLyoqDQorCSAqIFJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgcmVmZXJlbmNlIGxpc3QgJ3tAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQubW9kZWxlbGVtZW50cy5TdGFrZWhvbGRlciNnZXRDb25jZXJuIDxlbT5Db25jZXJuPC9lbT59Jy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEByZXR1cm4gdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgcmVmZXJlbmNlIGxpc3QgJzxlbT5Db25jZXJuPC9lbT4nLg0KKwkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5tb2RlbGVsZW1lbnRzLlN0YWtlaG9sZGVyI2dldENvbmNlcm4oKQ0KKwkgKiBAc2VlICNnZXRTdGFrZWhvbGRlcigpDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUVSZWZlcmVuY2UgZ2V0U3Rha2Vob2xkZXJfQ29uY2VybigpOw0KKw0KKwkvKioNCisJICogUmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSByZWZlcmVuY2UgJ3tAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQubW9kZWxlbGVtZW50cy5TdGFrZWhvbGRlciNnZXRDb25jZXJuTGlzdCA8ZW0+Q29uY2VybiBMaXN0PC9lbT59Jy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEByZXR1cm4gdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgcmVmZXJlbmNlICc8ZW0+Q29uY2VybiBMaXN0PC9lbT4nLg0KKwkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5tb2RlbGVsZW1lbnRzLlN0YWtlaG9sZGVyI2dldENvbmNlcm5MaXN0KCkNCisJICogQHNlZSAjZ2V0U3Rha2Vob2xkZXIoKQ0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlFUmVmZXJlbmNlIGdldFN0YWtlaG9sZGVyX0NvbmNlcm5MaXN0KCk7DQorDQorCS8qKg0KKwkgKiBSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJ3tAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQubW9kZWxlbGVtZW50cy5Db25mb3JtIDxlbT5Db25mb3JtPC9lbT59Jy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEByZXR1cm4gdGhlIG1ldGEgb2JqZWN0IGZvciBjbGFzcyAnPGVtPkNvbmZvcm08L2VtPicuDQorCSAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0Lm1vZGVsZWxlbWVudHMuQ29uZm9ybQ0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlFQ2xhc3MgZ2V0Q29uZm9ybSgpOw0KKw0KKwkvKioNCisJICogUmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSByZWZlcmVuY2UgJ3tAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQubW9kZWxlbGVtZW50cy5Db25mb3JtI2dldEJhc2VfRGVwZW5kZW5jeSA8ZW0+QmFzZSBEZXBlbmRlbmN5PC9lbT59Jy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEByZXR1cm4gdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgcmVmZXJlbmNlICc8ZW0+QmFzZSBEZXBlbmRlbmN5PC9lbT4nLg0KKwkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5tb2RlbGVsZW1lbnRzLkNvbmZvcm0jZ2V0QmFzZV9EZXBlbmRlbmN5KCkNCisJICogQHNlZSAjZ2V0Q29uZm9ybSgpDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUVSZWZlcmVuY2UgZ2V0Q29uZm9ybV9CYXNlX0RlcGVuZGVuY3koKTsNCisNCisJLyoqDQorCSAqIFJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgcmVmZXJlbmNlICd7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0Lm1vZGVsZWxlbWVudHMuQ29uZm9ybSNnZXRCYXNlX0dlbmVyYWxpemF0aW9uIDxlbT5CYXNlIEdlbmVyYWxpemF0aW9uPC9lbT59Jy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEByZXR1cm4gdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgcmVmZXJlbmNlICc8ZW0+QmFzZSBHZW5lcmFsaXphdGlvbjwvZW0+Jy4NCisJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQubW9kZWxlbGVtZW50cy5Db25mb3JtI2dldEJhc2VfR2VuZXJhbGl6YXRpb24oKQ0KKwkgKiBAc2VlICNnZXRDb25mb3JtKCkNCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJRVJlZmVyZW5jZSBnZXRDb25mb3JtX0Jhc2VfR2VuZXJhbGl6YXRpb24oKTsNCisNCisJLyoqDQorCSAqIFJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciBjbGFzcyAne0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5tb2RlbGVsZW1lbnRzLlByb2JsZW0gPGVtPlByb2JsZW08L2VtPn0nLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHJldHVybiB0aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICc8ZW0+UHJvYmxlbTwvZW0+Jy4NCisJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQubW9kZWxlbGVtZW50cy5Qcm9ibGVtDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUVDbGFzcyBnZXRQcm9ibGVtKCk7DQorDQorCS8qKg0KKwkgKiBSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIHJlZmVyZW5jZSAne0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5tb2RlbGVsZW1lbnRzLlByb2JsZW0jZ2V0QmFzZV9Db21tZW50IDxlbT5CYXNlIENvbW1lbnQ8L2VtPn0nLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHJldHVybiB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSByZWZlcmVuY2UgJzxlbT5CYXNlIENvbW1lbnQ8L2VtPicuDQorCSAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0Lm1vZGVsZWxlbWVudHMuUHJvYmxlbSNnZXRCYXNlX0NvbW1lbnQoKQ0KKwkgKiBAc2VlICNnZXRQcm9ibGVtKCkNCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJRVJlZmVyZW5jZSBnZXRQcm9ibGVtX0Jhc2VfQ29tbWVudCgpOw0KKw0KKwkvKioNCisJICogUmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICd7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0Lm1vZGVsZWxlbWVudHMuRXhwb3NlIDxlbT5FeHBvc2U8L2VtPn0nLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHJldHVybiB0aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICc8ZW0+RXhwb3NlPC9lbT4nLg0KKwkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5tb2RlbGVsZW1lbnRzLkV4cG9zZQ0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlFQ2xhc3MgZ2V0RXhwb3NlKCk7DQorDQorCS8qKg0KKwkgKiBSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIHJlZmVyZW5jZSAne0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5tb2RlbGVsZW1lbnRzLkV4cG9zZSNnZXRCYXNlX0RlcGVuZGVuY3kgPGVtPkJhc2UgRGVwZW5kZW5jeTwvZW0+fScuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAcmV0dXJuIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIHJlZmVyZW5jZSAnPGVtPkJhc2UgRGVwZW5kZW5jeTwvZW0+Jy4NCisJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQubW9kZWxlbGVtZW50cy5FeHBvc2UjZ2V0QmFzZV9EZXBlbmRlbmN5KCkNCisJICogQHNlZSAjZ2V0RXhwb3NlKCkNCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJRVJlZmVyZW5jZSBnZXRFeHBvc2VfQmFzZV9EZXBlbmRlbmN5KCk7DQorDQorCS8qKg0KKwkgKiBSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJ3tAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQubW9kZWxlbGVtZW50cy5FbGVtZW50R3JvdXAgPGVtPkVsZW1lbnQgR3JvdXA8L2VtPn0nLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHJldHVybiB0aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICc8ZW0+RWxlbWVudCBHcm91cDwvZW0+Jy4NCisJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQubW9kZWxlbGVtZW50cy5FbGVtZW50R3JvdXANCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJRUNsYXNzIGdldEVsZW1lbnRHcm91cCgpOw0KKw0KKwkvKioNCisJICogUmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSByZWZlcmVuY2UgJ3tAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQubW9kZWxlbGVtZW50cy5FbGVtZW50R3JvdXAjZ2V0QmFzZV9Db21tZW50IDxlbT5CYXNlIENvbW1lbnQ8L2VtPn0nLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHJldHVybiB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSByZWZlcmVuY2UgJzxlbT5CYXNlIENvbW1lbnQ8L2VtPicuDQorCSAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0Lm1vZGVsZWxlbWVudHMuRWxlbWVudEdyb3VwI2dldEJhc2VfQ29tbWVudCgpDQorCSAqIEBzZWUgI2dldEVsZW1lbnRHcm91cCgpDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUVSZWZlcmVuY2UgZ2V0RWxlbWVudEdyb3VwX0Jhc2VfQ29tbWVudCgpOw0KKw0KKwkvKioNCisJICogUmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSBhdHRyaWJ1dGUgJ3tAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQubW9kZWxlbGVtZW50cy5FbGVtZW50R3JvdXAjZ2V0TmFtZSA8ZW0+TmFtZTwvZW0+fScuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAcmV0dXJuIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGF0dHJpYnV0ZSAnPGVtPk5hbWU8L2VtPicuDQorCSAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0Lm1vZGVsZWxlbWVudHMuRWxlbWVudEdyb3VwI2dldE5hbWUoKQ0KKwkgKiBAc2VlICNnZXRFbGVtZW50R3JvdXAoKQ0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlFQXR0cmlidXRlIGdldEVsZW1lbnRHcm91cF9OYW1lKCk7DQorDQorCS8qKg0KKwkgKiBSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGF0dHJpYnV0ZSAne0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5tb2RlbGVsZW1lbnRzLkVsZW1lbnRHcm91cCNnZXRDcml0ZXJpb24gPGVtPkNyaXRlcmlvbjwvZW0+fScuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAcmV0dXJuIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGF0dHJpYnV0ZSAnPGVtPkNyaXRlcmlvbjwvZW0+Jy4NCisJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQubW9kZWxlbGVtZW50cy5FbGVtZW50R3JvdXAjZ2V0Q3JpdGVyaW9uKCkNCisJICogQHNlZSAjZ2V0RWxlbWVudEdyb3VwKCkNCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJRUF0dHJpYnV0ZSBnZXRFbGVtZW50R3JvdXBfQ3JpdGVyaW9uKCk7DQorDQorCS8qKg0KKwkgKiBSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGF0dHJpYnV0ZSAne0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5tb2RlbGVsZW1lbnRzLkVsZW1lbnRHcm91cCNnZXRTaXplIDxlbT5TaXplPC9lbT59Jy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEByZXR1cm4gdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgYXR0cmlidXRlICc8ZW0+U2l6ZTwvZW0+Jy4NCisJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQubW9kZWxlbGVtZW50cy5FbGVtZW50R3JvdXAjZ2V0U2l6ZSgpDQorCSAqIEBzZWUgI2dldEVsZW1lbnRHcm91cCgpDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUVBdHRyaWJ1dGUgZ2V0RWxlbWVudEdyb3VwX1NpemUoKTsNCisNCisJLyoqDQorCSAqIFJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgcmVmZXJlbmNlIGxpc3QgJ3tAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQubW9kZWxlbGVtZW50cy5FbGVtZW50R3JvdXAjZ2V0TWVtYmVyIDxlbT5NZW1iZXI8L2VtPn0nLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHJldHVybiB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSByZWZlcmVuY2UgbGlzdCAnPGVtPk1lbWJlcjwvZW0+Jy4NCisJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQubW9kZWxlbGVtZW50cy5FbGVtZW50R3JvdXAjZ2V0TWVtYmVyKCkNCisJICogQHNlZSAjZ2V0RWxlbWVudEdyb3VwKCkNCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJRVJlZmVyZW5jZSBnZXRFbGVtZW50R3JvdXBfTWVtYmVyKCk7DQorDQorCS8qKg0KKwkgKiBSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIHJlZmVyZW5jZSBsaXN0ICd7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0Lm1vZGVsZWxlbWVudHMuRWxlbWVudEdyb3VwI2dldE9yZGVyZWRNZW1iZXIgPGVtPk9yZGVyZWQgTWVtYmVyPC9lbT59Jy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEByZXR1cm4gdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgcmVmZXJlbmNlIGxpc3QgJzxlbT5PcmRlcmVkIE1lbWJlcjwvZW0+Jy4NCisJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQubW9kZWxlbGVtZW50cy5FbGVtZW50R3JvdXAjZ2V0T3JkZXJlZE1lbWJlcigpDQorCSAqIEBzZWUgI2dldEVsZW1lbnRHcm91cCgpDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUVSZWZlcmVuY2UgZ2V0RWxlbWVudEdyb3VwX09yZGVyZWRNZW1iZXIoKTsNCisNCisJLyoqDQorCSAqIFJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgJ3tAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQubW9kZWxlbGVtZW50cy5FbGVtZW50R3JvdXAjY3JpdGVyaW9uKCkgPGVtPkNyaXRlcmlvbjwvZW0+fScgb3BlcmF0aW9uLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHJldHVybiB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSAnPGVtPkNyaXRlcmlvbjwvZW0+JyBvcGVyYXRpb24uDQorCSAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0Lm1vZGVsZWxlbWVudHMuRWxlbWVudEdyb3VwI2NyaXRlcmlvbigpDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUVPcGVyYXRpb24gZ2V0RWxlbWVudEdyb3VwX19Dcml0ZXJpb24oKTsNCisNCisJLyoqDQorCSAqIFJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgJ3tAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQubW9kZWxlbGVtZW50cy5FbGVtZW50R3JvdXAjc2l6ZSgpIDxlbT5TaXplPC9lbT59JyBvcGVyYXRpb24uDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAcmV0dXJuIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlICc8ZW0+U2l6ZTwvZW0+JyBvcGVyYXRpb24uDQorCSAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0Lm1vZGVsZWxlbWVudHMuRWxlbWVudEdyb3VwI3NpemUoKQ0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlFT3BlcmF0aW9uIGdldEVsZW1lbnRHcm91cF9fU2l6ZSgpOw0KKw0KKwkvKioNCisJICogUmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSAne0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5tb2RlbGVsZW1lbnRzLkVsZW1lbnRHcm91cCNtZW1iZXIoKSA8ZW0+TWVtYmVyPC9lbT59JyBvcGVyYXRpb24uDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAcmV0dXJuIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlICc8ZW0+TWVtYmVyPC9lbT4nIG9wZXJhdGlvbi4NCisJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQubW9kZWxlbGVtZW50cy5FbGVtZW50R3JvdXAjbWVtYmVyKCkNCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJRU9wZXJhdGlvbiBnZXRFbGVtZW50R3JvdXBfX01lbWJlcigpOw0KKw0KKwkvKioNCisJICogUmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSAne0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5tb2RlbGVsZW1lbnRzLkVsZW1lbnRHcm91cCNhbGxHcm91cHMob3JnLmVjbGlwc2UudW1sMi51bWwuRWxlbWVudCkgPGVtPkFsbCBHcm91cHM8L2VtPn0nIG9wZXJhdGlvbi4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEByZXR1cm4gdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgJzxlbT5BbGwgR3JvdXBzPC9lbT4nIG9wZXJhdGlvbi4NCisJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQubW9kZWxlbGVtZW50cy5FbGVtZW50R3JvdXAjYWxsR3JvdXBzKG9yZy5lY2xpcHNlLnVtbDIudW1sLkVsZW1lbnQpDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUVPcGVyYXRpb24gZ2V0RWxlbWVudEdyb3VwX19BbGxHcm91cHNfX0VsZW1lbnQoKTsNCisNCisJLyoqDQorCSAqIFJldHVybnMgdGhlIGZhY3RvcnkgdGhhdCBjcmVhdGVzIHRoZSBpbnN0YW5jZXMgb2YgdGhlIG1vZGVsLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHJldHVybiB0aGUgZmFjdG9yeSB0aGF0IGNyZWF0ZXMgdGhlIGluc3RhbmNlcyBvZiB0aGUgbW9kZWwuDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCU1vZGVsZWxlbWVudHNGYWN0b3J5IGdldE1vZGVsZWxlbWVudHNGYWN0b3J5KCk7DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiBEZWZpbmVzIGxpdGVyYWxzIGZvciB0aGUgbWV0YSBvYmplY3RzIHRoYXQgcmVwcmVzZW50DQorCSAqIDx1bD4NCisJICogICA8bGk+ZWFjaCBjbGFzcyw8L2xpPg0KKwkgKiAgIDxsaT5lYWNoIGZlYXR1cmUgb2YgZWFjaCBjbGFzcyw8L2xpPg0KKwkgKiAgIDxsaT5lYWNoIG9wZXJhdGlvbiBvZiBlYWNoIGNsYXNzLDwvbGk+DQorCSAqICAgPGxpPmVhY2ggZW51bSw8L2xpPg0KKwkgKiAgIDxsaT5hbmQgZWFjaCBkYXRhIHR5cGU8L2xpPg0KKwkgKiA8L3VsPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJaW50ZXJmYWNlIExpdGVyYWxzIHsNCisJCS8qKg0KKwkJICogVGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAne0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5tb2RlbGVsZW1lbnRzLmludGVybmFsLmltcGwuUmF0aW9uYWxlSW1wbCA8ZW0+UmF0aW9uYWxlPC9lbT59JyBjbGFzcy4NCisJCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJCSAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0Lm1vZGVsZWxlbWVudHMuaW50ZXJuYWwuaW1wbC5SYXRpb25hbGVJbXBsDQorCQkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5tb2RlbGVsZW1lbnRzLmludGVybmFsLmltcGwuTW9kZWxlbGVtZW50c1BhY2thZ2VJbXBsI2dldFJhdGlvbmFsZSgpDQorCQkgKiBAZ2VuZXJhdGVkDQorCQkgKi8NCisJCUVDbGFzcyBSQVRJT05BTEUgPSBlSU5TVEFOQ0UuZ2V0UmF0aW9uYWxlKCk7DQorDQorCQkvKioNCisJCSAqIFRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxlbT48Yj5CYXNlIENvbW1lbnQ8L2I+PC9lbT4nIHJlZmVyZW5jZSBmZWF0dXJlLg0KKwkJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkJICogQGdlbmVyYXRlZA0KKwkJICovDQorCQlFUmVmZXJlbmNlIFJBVElPTkFMRV9fQkFTRV9DT01NRU5UID0gZUlOU1RBTkNFLmdldFJhdGlvbmFsZV9CYXNlX0NvbW1lbnQoKTsNCisNCisJCS8qKg0KKwkJICogVGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAne0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5tb2RlbGVsZW1lbnRzLmludGVybmFsLmltcGwuVmlld0ltcGwgPGVtPlZpZXc8L2VtPn0nIGNsYXNzLg0KKwkJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQubW9kZWxlbGVtZW50cy5pbnRlcm5hbC5pbXBsLlZpZXdJbXBsDQorCQkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5tb2RlbGVsZW1lbnRzLmludGVybmFsLmltcGwuTW9kZWxlbGVtZW50c1BhY2thZ2VJbXBsI2dldFZpZXcoKQ0KKwkJICogQGdlbmVyYXRlZA0KKwkJICovDQorCQlFQ2xhc3MgVklFVyA9IGVJTlNUQU5DRS5nZXRWaWV3KCk7DQorDQorCQkvKioNCisJCSAqIFRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxlbT48Yj5CYXNlIFBhY2thZ2U8L2I+PC9lbT4nIHJlZmVyZW5jZSBmZWF0dXJlLg0KKwkJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkJICogQGdlbmVyYXRlZA0KKwkJICovDQorCQlFUmVmZXJlbmNlIFZJRVdfX0JBU0VfUEFDS0FHRSA9IGVJTlNUQU5DRS5nZXRWaWV3X0Jhc2VfUGFja2FnZSgpOw0KKw0KKwkJLyoqDQorCQkgKiBUaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8ZW0+PGI+VmlldyBQb2ludDwvYj48L2VtPicgcmVmZXJlbmNlIGZlYXR1cmUuDQorCQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCQkgKiBAZ2VuZXJhdGVkDQorCQkgKi8NCisJCUVSZWZlcmVuY2UgVklFV19fVklFV19QT0lOVCA9IGVJTlNUQU5DRS5nZXRWaWV3X1ZpZXdQb2ludCgpOw0KKw0KKwkJLyoqDQorCQkgKiBUaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8ZW0+PGI+U3Rha2Vob2xkZXI8L2I+PC9lbT4nIHJlZmVyZW5jZSBsaXN0IGZlYXR1cmUuDQorCQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCQkgKiBAZ2VuZXJhdGVkDQorCQkgKi8NCisJCUVSZWZlcmVuY2UgVklFV19fU1RBS0VIT0xERVIgPSBlSU5TVEFOQ0UuZ2V0Vmlld19TdGFrZWhvbGRlcigpOw0KKw0KKwkJLyoqDQorCQkgKiBUaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8ZW0+PGI+QmFzZSBDbGFzczwvYj48L2VtPicgcmVmZXJlbmNlIGZlYXR1cmUuDQorCQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCQkgKiBAZ2VuZXJhdGVkDQorCQkgKi8NCisJCUVSZWZlcmVuY2UgVklFV19fQkFTRV9DTEFTUyA9IGVJTlNUQU5DRS5nZXRWaWV3X0Jhc2VfQ2xhc3MoKTsNCisNCisJCS8qKg0KKwkJICogVGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAne0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5tb2RlbGVsZW1lbnRzLmludGVybmFsLmltcGwuVmlld1BvaW50SW1wbCA8ZW0+VmlldyBQb2ludDwvZW0+fScgY2xhc3MuDQorCQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCQkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5tb2RlbGVsZW1lbnRzLmludGVybmFsLmltcGwuVmlld1BvaW50SW1wbA0KKwkJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQubW9kZWxlbGVtZW50cy5pbnRlcm5hbC5pbXBsLk1vZGVsZWxlbWVudHNQYWNrYWdlSW1wbCNnZXRWaWV3UG9pbnQoKQ0KKwkJICogQGdlbmVyYXRlZA0KKwkJICovDQorCQlFQ2xhc3MgVklFV19QT0lOVCA9IGVJTlNUQU5DRS5nZXRWaWV3UG9pbnQoKTsNCisNCisJCS8qKg0KKwkJICogVGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPGVtPjxiPkJhc2UgQ2xhc3M8L2I+PC9lbT4nIHJlZmVyZW5jZSBmZWF0dXJlLg0KKwkJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkJICogQGdlbmVyYXRlZA0KKwkJICovDQorCQlFUmVmZXJlbmNlIFZJRVdfUE9JTlRfX0JBU0VfQ0xBU1MgPSBlSU5TVEFOQ0UuZ2V0Vmlld1BvaW50X0Jhc2VfQ2xhc3MoKTsNCisNCisJCS8qKg0KKwkJICogVGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPGVtPjxiPlN0YWtlaG9sZGVyPC9iPjwvZW0+JyByZWZlcmVuY2UgbGlzdCBmZWF0dXJlLg0KKwkJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkJICogQGdlbmVyYXRlZA0KKwkJICovDQorCQlFUmVmZXJlbmNlIFZJRVdfUE9JTlRfX1NUQUtFSE9MREVSID0gZUlOU1RBTkNFLmdldFZpZXdQb2ludF9TdGFrZWhvbGRlcigpOw0KKw0KKwkJLyoqDQorCQkgKiBUaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8ZW0+PGI+UHVycG9zZTwvYj48L2VtPicgYXR0cmlidXRlIGZlYXR1cmUuDQorCQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCQkgKiBAZ2VuZXJhdGVkDQorCQkgKi8NCisJCUVBdHRyaWJ1dGUgVklFV19QT0lOVF9fUFVSUE9TRSA9IGVJTlNUQU5DRS5nZXRWaWV3UG9pbnRfUHVycG9zZSgpOw0KKw0KKwkJLyoqDQorCQkgKiBUaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8ZW0+PGI+Q29uY2VybiBMaXN0PC9iPjwvZW0+JyByZWZlcmVuY2UgbGlzdCBmZWF0dXJlLg0KKwkJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkJICogQGdlbmVyYXRlZA0KKwkJICovDQorCQlFUmVmZXJlbmNlIFZJRVdfUE9JTlRfX0NPTkNFUk5fTElTVCA9IGVJTlNUQU5DRS5nZXRWaWV3UG9pbnRfQ29uY2Vybkxpc3QoKTsNCisNCisJCS8qKg0KKwkJICogVGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPGVtPjxiPkxhbmd1YWdlPC9iPjwvZW0+JyBhdHRyaWJ1dGUgbGlzdCBmZWF0dXJlLg0KKwkJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkJICogQGdlbmVyYXRlZA0KKwkJICovDQorCQlFQXR0cmlidXRlIFZJRVdfUE9JTlRfX0xBTkdVQUdFID0gZUlOU1RBTkNFLmdldFZpZXdQb2ludF9MYW5ndWFnZSgpOw0KKw0KKwkJLyoqDQorCQkgKiBUaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8ZW0+PGI+TWV0aG9kPC9iPjwvZW0+JyByZWZlcmVuY2UgbGlzdCBmZWF0dXJlLg0KKwkJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkJICogQGdlbmVyYXRlZA0KKwkJICovDQorCQlFUmVmZXJlbmNlIFZJRVdfUE9JTlRfX01FVEhPRCA9IGVJTlNUQU5DRS5nZXRWaWV3UG9pbnRfTWV0aG9kKCk7DQorDQorCQkvKioNCisJCSAqIFRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxlbT48Yj5QcmVzZW50YXRpb248L2I+PC9lbT4nIGF0dHJpYnV0ZSBsaXN0IGZlYXR1cmUuDQorCQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCQkgKiBAZ2VuZXJhdGVkDQorCQkgKi8NCisJCUVBdHRyaWJ1dGUgVklFV19QT0lOVF9fUFJFU0VOVEFUSU9OID0gZUlOU1RBTkNFLmdldFZpZXdQb2ludF9QcmVzZW50YXRpb24oKTsNCisNCisJCS8qKg0KKwkJICogVGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPGVtPjxiPkNvbmNlcm48L2I+PC9lbT4nIGF0dHJpYnV0ZSBsaXN0IGZlYXR1cmUuDQorCQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCQkgKiBAZ2VuZXJhdGVkDQorCQkgKi8NCisJCUVBdHRyaWJ1dGUgVklFV19QT0lOVF9fQ09OQ0VSTiA9IGVJTlNUQU5DRS5nZXRWaWV3UG9pbnRfQ29uY2VybigpOw0KKw0KKwkJLyoqDQorCQkgKiBUaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICd7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0Lm1vZGVsZWxlbWVudHMuaW50ZXJuYWwuaW1wbC5TdGFrZWhvbGRlckltcGwgPGVtPlN0YWtlaG9sZGVyPC9lbT59JyBjbGFzcy4NCisJCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJCSAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0Lm1vZGVsZWxlbWVudHMuaW50ZXJuYWwuaW1wbC5TdGFrZWhvbGRlckltcGwNCisJCSAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0Lm1vZGVsZWxlbWVudHMuaW50ZXJuYWwuaW1wbC5Nb2RlbGVsZW1lbnRzUGFja2FnZUltcGwjZ2V0U3Rha2Vob2xkZXIoKQ0KKwkJICogQGdlbmVyYXRlZA0KKwkJICovDQorCQlFQ2xhc3MgU1RBS0VIT0xERVIgPSBlSU5TVEFOQ0UuZ2V0U3Rha2Vob2xkZXIoKTsNCisNCisJCS8qKg0KKwkJICogVGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPGVtPjxiPkJhc2UgQ2xhc3NpZmllcjwvYj48L2VtPicgcmVmZXJlbmNlIGZlYXR1cmUuDQorCQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCQkgKiBAZ2VuZXJhdGVkDQorCQkgKi8NCisJCUVSZWZlcmVuY2UgU1RBS0VIT0xERVJfX0JBU0VfQ0xBU1NJRklFUiA9IGVJTlNUQU5DRS5nZXRTdGFrZWhvbGRlcl9CYXNlX0NsYXNzaWZpZXIoKTsNCisNCisJCS8qKg0KKwkJICogVGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPGVtPjxiPkNvbmNlcm48L2I+PC9lbT4nIHJlZmVyZW5jZSBsaXN0IGZlYXR1cmUuDQorCQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCQkgKiBAZ2VuZXJhdGVkDQorCQkgKi8NCisJCUVSZWZlcmVuY2UgU1RBS0VIT0xERVJfX0NPTkNFUk4gPSBlSU5TVEFOQ0UuZ2V0U3Rha2Vob2xkZXJfQ29uY2VybigpOw0KKw0KKwkJLyoqDQorCQkgKiBUaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8ZW0+PGI+Q29uY2VybiBMaXN0PC9iPjwvZW0+JyByZWZlcmVuY2UgZmVhdHVyZS4NCisJCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJCSAqIEBnZW5lcmF0ZWQNCisJCSAqLw0KKwkJRVJlZmVyZW5jZSBTVEFLRUhPTERFUl9fQ09OQ0VSTl9MSVNUID0gZUlOU1RBTkNFLmdldFN0YWtlaG9sZGVyX0NvbmNlcm5MaXN0KCk7DQorDQorCQkvKioNCisJCSAqIFRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJ3tAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQubW9kZWxlbGVtZW50cy5pbnRlcm5hbC5pbXBsLkNvbmZvcm1JbXBsIDxlbT5Db25mb3JtPC9lbT59JyBjbGFzcy4NCisJCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJCSAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0Lm1vZGVsZWxlbWVudHMuaW50ZXJuYWwuaW1wbC5Db25mb3JtSW1wbA0KKwkJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQubW9kZWxlbGVtZW50cy5pbnRlcm5hbC5pbXBsLk1vZGVsZWxlbWVudHNQYWNrYWdlSW1wbCNnZXRDb25mb3JtKCkNCisJCSAqIEBnZW5lcmF0ZWQNCisJCSAqLw0KKwkJRUNsYXNzIENPTkZPUk0gPSBlSU5TVEFOQ0UuZ2V0Q29uZm9ybSgpOw0KKw0KKwkJLyoqDQorCQkgKiBUaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8ZW0+PGI+QmFzZSBEZXBlbmRlbmN5PC9iPjwvZW0+JyByZWZlcmVuY2UgZmVhdHVyZS4NCisJCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJCSAqIEBnZW5lcmF0ZWQNCisJCSAqLw0KKwkJRVJlZmVyZW5jZSBDT05GT1JNX19CQVNFX0RFUEVOREVOQ1kgPSBlSU5TVEFOQ0UuZ2V0Q29uZm9ybV9CYXNlX0RlcGVuZGVuY3koKTsNCisNCisJCS8qKg0KKwkJICogVGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPGVtPjxiPkJhc2UgR2VuZXJhbGl6YXRpb248L2I+PC9lbT4nIHJlZmVyZW5jZSBmZWF0dXJlLg0KKwkJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkJICogQGdlbmVyYXRlZA0KKwkJICovDQorCQlFUmVmZXJlbmNlIENPTkZPUk1fX0JBU0VfR0VORVJBTElaQVRJT04gPSBlSU5TVEFOQ0UuZ2V0Q29uZm9ybV9CYXNlX0dlbmVyYWxpemF0aW9uKCk7DQorDQorCQkvKioNCisJCSAqIFRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJ3tAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQubW9kZWxlbGVtZW50cy5pbnRlcm5hbC5pbXBsLlByb2JsZW1JbXBsIDxlbT5Qcm9ibGVtPC9lbT59JyBjbGFzcy4NCisJCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJCSAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0Lm1vZGVsZWxlbWVudHMuaW50ZXJuYWwuaW1wbC5Qcm9ibGVtSW1wbA0KKwkJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQubW9kZWxlbGVtZW50cy5pbnRlcm5hbC5pbXBsLk1vZGVsZWxlbWVudHNQYWNrYWdlSW1wbCNnZXRQcm9ibGVtKCkNCisJCSAqIEBnZW5lcmF0ZWQNCisJCSAqLw0KKwkJRUNsYXNzIFBST0JMRU0gPSBlSU5TVEFOQ0UuZ2V0UHJvYmxlbSgpOw0KKw0KKwkJLyoqDQorCQkgKiBUaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8ZW0+PGI+QmFzZSBDb21tZW50PC9iPjwvZW0+JyByZWZlcmVuY2UgZmVhdHVyZS4NCisJCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJCSAqIEBnZW5lcmF0ZWQNCisJCSAqLw0KKwkJRVJlZmVyZW5jZSBQUk9CTEVNX19CQVNFX0NPTU1FTlQgPSBlSU5TVEFOQ0UuZ2V0UHJvYmxlbV9CYXNlX0NvbW1lbnQoKTsNCisNCisJCS8qKg0KKwkJICogVGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAne0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5tb2RlbGVsZW1lbnRzLmludGVybmFsLmltcGwuRXhwb3NlSW1wbCA8ZW0+RXhwb3NlPC9lbT59JyBjbGFzcy4NCisJCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJCSAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0Lm1vZGVsZWxlbWVudHMuaW50ZXJuYWwuaW1wbC5FeHBvc2VJbXBsDQorCQkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5tb2RlbGVsZW1lbnRzLmludGVybmFsLmltcGwuTW9kZWxlbGVtZW50c1BhY2thZ2VJbXBsI2dldEV4cG9zZSgpDQorCQkgKiBAZ2VuZXJhdGVkDQorCQkgKi8NCisJCUVDbGFzcyBFWFBPU0UgPSBlSU5TVEFOQ0UuZ2V0RXhwb3NlKCk7DQorDQorCQkvKioNCisJCSAqIFRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxlbT48Yj5CYXNlIERlcGVuZGVuY3k8L2I+PC9lbT4nIHJlZmVyZW5jZSBmZWF0dXJlLg0KKwkJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkJICogQGdlbmVyYXRlZA0KKwkJICovDQorCQlFUmVmZXJlbmNlIEVYUE9TRV9fQkFTRV9ERVBFTkRFTkNZID0gZUlOU1RBTkNFLmdldEV4cG9zZV9CYXNlX0RlcGVuZGVuY3koKTsNCisNCisJCS8qKg0KKwkJICogVGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAne0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5tb2RlbGVsZW1lbnRzLmludGVybmFsLmltcGwuRWxlbWVudEdyb3VwSW1wbCA8ZW0+RWxlbWVudCBHcm91cDwvZW0+fScgY2xhc3MuDQorCQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCQkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5tb2RlbGVsZW1lbnRzLmludGVybmFsLmltcGwuRWxlbWVudEdyb3VwSW1wbA0KKwkJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQubW9kZWxlbGVtZW50cy5pbnRlcm5hbC5pbXBsLk1vZGVsZWxlbWVudHNQYWNrYWdlSW1wbCNnZXRFbGVtZW50R3JvdXAoKQ0KKwkJICogQGdlbmVyYXRlZA0KKwkJICovDQorCQlFQ2xhc3MgRUxFTUVOVF9HUk9VUCA9IGVJTlNUQU5DRS5nZXRFbGVtZW50R3JvdXAoKTsNCisNCisJCS8qKg0KKwkJICogVGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPGVtPjxiPkJhc2UgQ29tbWVudDwvYj48L2VtPicgcmVmZXJlbmNlIGZlYXR1cmUuDQorCQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCQkgKiBAZ2VuZXJhdGVkDQorCQkgKi8NCisJCUVSZWZlcmVuY2UgRUxFTUVOVF9HUk9VUF9fQkFTRV9DT01NRU5UID0gZUlOU1RBTkNFLmdldEVsZW1lbnRHcm91cF9CYXNlX0NvbW1lbnQoKTsNCisNCisJCS8qKg0KKwkJICogVGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPGVtPjxiPk5hbWU8L2I+PC9lbT4nIGF0dHJpYnV0ZSBmZWF0dXJlLg0KKwkJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkJICogQGdlbmVyYXRlZA0KKwkJICovDQorCQlFQXR0cmlidXRlIEVMRU1FTlRfR1JPVVBfX05BTUUgPSBlSU5TVEFOQ0UuZ2V0RWxlbWVudEdyb3VwX05hbWUoKTsNCisNCisJCS8qKg0KKwkJICogVGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPGVtPjxiPkNyaXRlcmlvbjwvYj48L2VtPicgYXR0cmlidXRlIGZlYXR1cmUuDQorCQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCQkgKiBAZ2VuZXJhdGVkDQorCQkgKi8NCisJCUVBdHRyaWJ1dGUgRUxFTUVOVF9HUk9VUF9fQ1JJVEVSSU9OID0gZUlOU1RBTkNFLmdldEVsZW1lbnRHcm91cF9Dcml0ZXJpb24oKTsNCisNCisJCS8qKg0KKwkJICogVGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPGVtPjxiPlNpemU8L2I+PC9lbT4nIGF0dHJpYnV0ZSBmZWF0dXJlLg0KKwkJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkJICogQGdlbmVyYXRlZA0KKwkJICovDQorCQlFQXR0cmlidXRlIEVMRU1FTlRfR1JPVVBfX1NJWkUgPSBlSU5TVEFOQ0UuZ2V0RWxlbWVudEdyb3VwX1NpemUoKTsNCisNCisJCS8qKg0KKwkJICogVGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPGVtPjxiPk1lbWJlcjwvYj48L2VtPicgcmVmZXJlbmNlIGxpc3QgZmVhdHVyZS4NCisJCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJCSAqIEBnZW5lcmF0ZWQNCisJCSAqLw0KKwkJRVJlZmVyZW5jZSBFTEVNRU5UX0dST1VQX19NRU1CRVIgPSBlSU5TVEFOQ0UuZ2V0RWxlbWVudEdyb3VwX01lbWJlcigpOw0KKw0KKwkJLyoqDQorCQkgKiBUaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8ZW0+PGI+T3JkZXJlZCBNZW1iZXI8L2I+PC9lbT4nIHJlZmVyZW5jZSBsaXN0IGZlYXR1cmUuDQorCQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCQkgKiBAZ2VuZXJhdGVkDQorCQkgKi8NCisJCUVSZWZlcmVuY2UgRUxFTUVOVF9HUk9VUF9fT1JERVJFRF9NRU1CRVIgPSBlSU5TVEFOQ0UuZ2V0RWxlbWVudEdyb3VwX09yZGVyZWRNZW1iZXIoKTsNCisNCisJCS8qKg0KKwkJICogVGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPGVtPjxiPkNyaXRlcmlvbjwvYj48L2VtPicgb3BlcmF0aW9uLg0KKwkJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkJICogQGdlbmVyYXRlZA0KKwkJICovDQorCQlFT3BlcmF0aW9uIEVMRU1FTlRfR1JPVVBfX19DUklURVJJT04gPSBlSU5TVEFOQ0UuZ2V0RWxlbWVudEdyb3VwX19Dcml0ZXJpb24oKTsNCisNCisJCS8qKg0KKwkJICogVGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPGVtPjxiPlNpemU8L2I+PC9lbT4nIG9wZXJhdGlvbi4NCisJCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJCSAqIEBnZW5lcmF0ZWQNCisJCSAqLw0KKwkJRU9wZXJhdGlvbiBFTEVNRU5UX0dST1VQX19fU0laRSA9IGVJTlNUQU5DRS5nZXRFbGVtZW50R3JvdXBfX1NpemUoKTsNCisNCisJCS8qKg0KKwkJICogVGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPGVtPjxiPk1lbWJlcjwvYj48L2VtPicgb3BlcmF0aW9uLg0KKwkJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkJICogQGdlbmVyYXRlZA0KKwkJICovDQorCQlFT3BlcmF0aW9uIEVMRU1FTlRfR1JPVVBfX19NRU1CRVIgPSBlSU5TVEFOQ0UuZ2V0RWxlbWVudEdyb3VwX19NZW1iZXIoKTsNCisNCisJCS8qKg0KKwkJICogVGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPGVtPjxiPkFsbCBHcm91cHM8L2I+PC9lbT4nIG9wZXJhdGlvbi4NCisJCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJCSAqIEBnZW5lcmF0ZWQNCisJCSAqLw0KKwkJRU9wZXJhdGlvbiBFTEVNRU5UX0dST1VQX19fQUxMX0dST1VQU19fRUxFTUVOVCA9IGVJTlNUQU5DRS5nZXRFbGVtZW50R3JvdXBfX0FsbEdyb3Vwc19fRWxlbWVudCgpOw0KKw0KKwl9DQorDQorfSAvL01vZGVsZWxlbWVudHNQYWNrYWdlDQpkaWZmIC0tZ2l0IGEvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvbW9kZWxlbGVtZW50cy9Qcm9ibGVtLmphdmEgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9tb2RlbGVsZW1lbnRzL1Byb2JsZW0uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNWFmYzRmCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvbW9kZWxlbGVtZW50cy9Qcm9ibGVtLmphdmEKQEAgLTAsMCArMSw2MiBAQAorLyoqDQorICogQ29weXJpZ2h0IChjKSAyMDE1IENFQSBMSVNULg0KKyAqIA0KKyAqICBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQorICogIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KKyAqICB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KKyAqICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqLw0KK3BhY2thZ2Ugb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0Lm1vZGVsZWxlbWVudHM7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FT2JqZWN0Ow0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS51bWwyLnVtbC5Db21tZW50Ow0KKw0KKy8qKg0KKyAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorICogQSByZXByZXNlbnRhdGlvbiBvZiB0aGUgbW9kZWwgb2JqZWN0ICc8ZW0+PGI+UHJvYmxlbTwvYj48L2VtPicuDQorICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorICoNCisgKiA8IS0tIGJlZ2luLW1vZGVsLWRvYyAtLT4NCisgKiBBIFByb2JsZW0gZG9jdW1lbnRzIGEgZGVmaWNpZW5jeSwgbGltaXRhdGlvbiwgb3IgZmFpbHVyZSBvZiBvbmUgb3IgbW9yZSBtb2RlbCBlbGVtZW50cyB0byBzYXRpc2Z5IGEgcmVxdWlyZW1lbnQgb3IgbmVlZCwgb3Igb3RoZXIgdW5kZXNpcmVkIG91dGNvbWUuIEl0IG1heSBiZSB1c2VkIHRvIGNhcHR1cmUgcHJvYmxlbXMgaWRlbnRpZmllZCBkdXJpbmcgYW5hbHlzaXMsIGRlc2lnbiwgdmVyaWZpY2F0aW9uLCBvciBtYW51ZmFjdHVyZSBhbmQgYXNzb2NpYXRlIHRoZSBwcm9ibGVtIHdpdGggdGhlIHJlbGV2YW50IG1vZGVsIGVsZW1lbnRzLiBQcm9ibGVtIGlzIGEgc3RlcmVvdHlwZSBvZiBjb21tZW50IGFuZCBtYXkgYmUgYXR0YWNoZWQgdG8gYW55IG90aGVyIG1vZGVsIGVsZW1lbnQgaW4gdGhlIHNhbWUgbWFubmVyIGFzIGEgY29tbWVudC4NCisgKiA8IS0tIGVuZC1tb2RlbC1kb2MgLS0+DQorICoNCisgKiA8cD4NCisgKiBUaGUgZm9sbG93aW5nIGZlYXR1cmVzIGFyZSBzdXBwb3J0ZWQ6DQorICogPHVsPg0KKyAqICAgPGxpPntAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQubW9kZWxlbGVtZW50cy5Qcm9ibGVtI2dldEJhc2VfQ29tbWVudCA8ZW0+QmFzZSBDb21tZW50PC9lbT59PC9saT4NCisgKiA8L3VsPg0KKyAqIDwvcD4NCisgKg0KKyAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0Lm1vZGVsZWxlbWVudHMuTW9kZWxlbGVtZW50c1BhY2thZ2UjZ2V0UHJvYmxlbSgpDQorICogQG1vZGVsDQorICogQGdlbmVyYXRlZA0KKyAqLw0KK3B1YmxpYyBpbnRlcmZhY2UgUHJvYmxlbSBleHRlbmRzIEVPYmplY3Qgew0KKwkvKioNCisJICogUmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+PGI+QmFzZSBDb21tZW50PC9iPjwvZW0+JyByZWZlcmVuY2UuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDxwPg0KKwkgKiBJZiB0aGUgbWVhbmluZyBvZiB0aGUgJzxlbT5CYXNlIENvbW1lbnQ8L2VtPicgcmVmZXJlbmNlIGlzbid0IGNsZWFyLA0KKwkgKiB0aGVyZSByZWFsbHkgc2hvdWxkIGJlIG1vcmUgb2YgYSBkZXNjcmlwdGlvbiBoZXJlLi4uDQorCSAqIDwvcD4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEByZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSAnPGVtPkJhc2UgQ29tbWVudDwvZW0+JyByZWZlcmVuY2UuDQorCSAqIEBzZWUgI3NldEJhc2VfQ29tbWVudChDb21tZW50KQ0KKwkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5tb2RlbGVsZW1lbnRzLk1vZGVsZWxlbWVudHNQYWNrYWdlI2dldFByb2JsZW1fQmFzZV9Db21tZW50KCkNCisJICogQG1vZGVsIG9yZGVyZWQ9ImZhbHNlIg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlDb21tZW50IGdldEJhc2VfQ29tbWVudCgpOw0KKw0KKwkvKioNCisJICogU2V0cyB0aGUgdmFsdWUgb2YgdGhlICd7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0Lm1vZGVsZWxlbWVudHMuUHJvYmxlbSNnZXRCYXNlX0NvbW1lbnQgPGVtPkJhc2UgQ29tbWVudDwvZW0+fScgcmVmZXJlbmNlLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHBhcmFtIHZhbHVlIHRoZSBuZXcgdmFsdWUgb2YgdGhlICc8ZW0+QmFzZSBDb21tZW50PC9lbT4nIHJlZmVyZW5jZS4NCisJICogQHNlZSAjZ2V0QmFzZV9Db21tZW50KCkNCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJdm9pZCBzZXRCYXNlX0NvbW1lbnQoQ29tbWVudCB2YWx1ZSk7DQorDQorfSAvLyBQcm9ibGVtDQpkaWZmIC0tZ2l0IGEvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvbW9kZWxlbGVtZW50cy9SYXRpb25hbGUuamF2YSBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L21vZGVsZWxlbWVudHMvUmF0aW9uYWxlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWFlZjIxZgotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L21vZGVsZWxlbWVudHMvUmF0aW9uYWxlLmphdmEKQEAgLTAsMCArMSw2MiBAQAorLyoqDQorICogQ29weXJpZ2h0IChjKSAyMDE1IENFQSBMSVNULg0KKyAqIA0KKyAqICBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQorICogIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KKyAqICB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KKyAqICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqLw0KK3BhY2thZ2Ugb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0Lm1vZGVsZWxlbWVudHM7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FT2JqZWN0Ow0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS51bWwyLnVtbC5Db21tZW50Ow0KKw0KKy8qKg0KKyAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorICogQSByZXByZXNlbnRhdGlvbiBvZiB0aGUgbW9kZWwgb2JqZWN0ICc8ZW0+PGI+UmF0aW9uYWxlPC9iPjwvZW0+Jy4NCisgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisgKg0KKyAqIDwhLS0gYmVnaW4tbW9kZWwtZG9jIC0tPg0KKyAqIEEgUmF0aW9uYWxlIGRvY3VtZW50cyB0aGUganVzdGlmaWNhdGlvbiBmb3IgZGVjaXNpb25zIGFuZCB0aGUgcmVxdWlyZW1lbnRzLCBkZXNpZ24sIGFuZCBvdGhlciBkZWNpc2lvbnMuIEEgUmF0aW9uYWxlIGNhbiBiZSBhdHRhY2hlZCB0byBhbnkgbW9kZWwgZWxlbWVudCBpbmNsdWRpbmcgcmVsYXRpb25zaGlwcy4gSXQgYWxsb3dzIHRoZSB1c2VyLCBmb3IgZXhhbXBsZSwgdG8gc3BlY2lmeSBhIHJhdGlvbmFsZSB0aGF0IG1heSByZWZlcmVuY2UgbW9yZSBkZXRhaWxlZCBkb2N1bWVudGF0aW9uIHN1Y2ggYXMgYSB0cmFkZSBzdHVkeSBvciBhbmFseXNpcyByZXBvcnQuIFJhdGlvbmFsZSBpcyBhIHN0ZXJlb3R5cGUgb2YgY29tbWVudCBhbmQgbWF5IGJlIGF0dGFjaGVkIHRvIGFueSBvdGhlciBtb2RlbCBlbGVtZW50IGluIHRoZSBzYW1lIG1hbm5lciBhcyBhIGNvbW1lbnQuDQorICogPCEtLSBlbmQtbW9kZWwtZG9jIC0tPg0KKyAqDQorICogPHA+DQorICogVGhlIGZvbGxvd2luZyBmZWF0dXJlcyBhcmUgc3VwcG9ydGVkOg0KKyAqIDx1bD4NCisgKiAgIDxsaT57QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0Lm1vZGVsZWxlbWVudHMuUmF0aW9uYWxlI2dldEJhc2VfQ29tbWVudCA8ZW0+QmFzZSBDb21tZW50PC9lbT59PC9saT4NCisgKiA8L3VsPg0KKyAqIDwvcD4NCisgKg0KKyAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0Lm1vZGVsZWxlbWVudHMuTW9kZWxlbGVtZW50c1BhY2thZ2UjZ2V0UmF0aW9uYWxlKCkNCisgKiBAbW9kZWwNCisgKiBAZ2VuZXJhdGVkDQorICovDQorcHVibGljIGludGVyZmFjZSBSYXRpb25hbGUgZXh0ZW5kcyBFT2JqZWN0IHsNCisJLyoqDQorCSAqIFJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSAnPGVtPjxiPkJhc2UgQ29tbWVudDwvYj48L2VtPicgcmVmZXJlbmNlLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8cD4NCisJICogSWYgdGhlIG1lYW5pbmcgb2YgdGhlICc8ZW0+QmFzZSBDb21tZW50PC9lbT4nIHJlZmVyZW5jZSBpc24ndCBjbGVhciwNCisJICogdGhlcmUgcmVhbGx5IHNob3VsZCBiZSBtb3JlIG9mIGEgZGVzY3JpcHRpb24gaGVyZS4uLg0KKwkgKiA8L3A+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAcmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT5CYXNlIENvbW1lbnQ8L2VtPicgcmVmZXJlbmNlLg0KKwkgKiBAc2VlICNzZXRCYXNlX0NvbW1lbnQoQ29tbWVudCkNCisJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQubW9kZWxlbGVtZW50cy5Nb2RlbGVsZW1lbnRzUGFja2FnZSNnZXRSYXRpb25hbGVfQmFzZV9Db21tZW50KCkNCisJICogQG1vZGVsIG9yZGVyZWQ9ImZhbHNlIg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlDb21tZW50IGdldEJhc2VfQ29tbWVudCgpOw0KKw0KKwkvKioNCisJICogU2V0cyB0aGUgdmFsdWUgb2YgdGhlICd7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0Lm1vZGVsZWxlbWVudHMuUmF0aW9uYWxlI2dldEJhc2VfQ29tbWVudCA8ZW0+QmFzZSBDb21tZW50PC9lbT59JyByZWZlcmVuY2UuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAcGFyYW0gdmFsdWUgdGhlIG5ldyB2YWx1ZSBvZiB0aGUgJzxlbT5CYXNlIENvbW1lbnQ8L2VtPicgcmVmZXJlbmNlLg0KKwkgKiBAc2VlICNnZXRCYXNlX0NvbW1lbnQoKQ0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwl2b2lkIHNldEJhc2VfQ29tbWVudChDb21tZW50IHZhbHVlKTsNCisNCit9IC8vIFJhdGlvbmFsZQ0KZGlmZiAtLWdpdCBhL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L21vZGVsZWxlbWVudHMvU3Rha2Vob2xkZXIuamF2YSBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L21vZGVsZWxlbWVudHMvU3Rha2Vob2xkZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZmU1ZDAxCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvbW9kZWxlbGVtZW50cy9TdGFrZWhvbGRlci5qYXZhCkBAIC0wLDAgKzEsMTA1IEBACisvKioNCisgKiBDb3B5cmlnaHQgKGMpIDIwMTUgQ0VBIExJU1QuDQorICogDQorICogIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCisgKiAgYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQorICogIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQorICogIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICovDQorcGFja2FnZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQubW9kZWxlbGVtZW50czsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi51dGlsLkVMaXN0Ow0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRU9iamVjdDsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UudW1sMi51bWwuQ2xhc3NpZmllcjsNCitpbXBvcnQgb3JnLmVjbGlwc2UudW1sMi51bWwuQ29tbWVudDsNCisNCisvKioNCisgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKyAqIEEgcmVwcmVzZW50YXRpb24gb2YgdGhlIG1vZGVsIG9iamVjdCAnPGVtPjxiPlN0YWtlaG9sZGVyPC9iPjwvZW0+Jy4NCisgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisgKg0KKyAqIDxwPg0KKyAqIFRoZSBmb2xsb3dpbmcgZmVhdHVyZXMgYXJlIHN1cHBvcnRlZDoNCisgKiA8dWw+DQorICogICA8bGk+e0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5tb2RlbGVsZW1lbnRzLlN0YWtlaG9sZGVyI2dldEJhc2VfQ2xhc3NpZmllciA8ZW0+QmFzZSBDbGFzc2lmaWVyPC9lbT59PC9saT4NCisgKiAgIDxsaT57QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0Lm1vZGVsZWxlbWVudHMuU3Rha2Vob2xkZXIjZ2V0Q29uY2VybiA8ZW0+Q29uY2VybjwvZW0+fTwvbGk+DQorICogICA8bGk+e0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5tb2RlbGVsZW1lbnRzLlN0YWtlaG9sZGVyI2dldENvbmNlcm5MaXN0IDxlbT5Db25jZXJuIExpc3Q8L2VtPn08L2xpPg0KKyAqIDwvdWw+DQorICogPC9wPg0KKyAqDQorICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQubW9kZWxlbGVtZW50cy5Nb2RlbGVsZW1lbnRzUGFja2FnZSNnZXRTdGFrZWhvbGRlcigpDQorICogQG1vZGVsDQorICogQGdlbmVyYXRlZA0KKyAqLw0KK3B1YmxpYyBpbnRlcmZhY2UgU3Rha2Vob2xkZXIgZXh0ZW5kcyBFT2JqZWN0IHsNCisJLyoqDQorCSAqIFJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSAnPGVtPjxiPkJhc2UgQ2xhc3NpZmllcjwvYj48L2VtPicgcmVmZXJlbmNlLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8cD4NCisJICogSWYgdGhlIG1lYW5pbmcgb2YgdGhlICc8ZW0+QmFzZSBDbGFzc2lmaWVyPC9lbT4nIHJlZmVyZW5jZSBpc24ndCBjbGVhciwNCisJICogdGhlcmUgcmVhbGx5IHNob3VsZCBiZSBtb3JlIG9mIGEgZGVzY3JpcHRpb24gaGVyZS4uLg0KKwkgKiA8L3A+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAcmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT5CYXNlIENsYXNzaWZpZXI8L2VtPicgcmVmZXJlbmNlLg0KKwkgKiBAc2VlICNzZXRCYXNlX0NsYXNzaWZpZXIoQ2xhc3NpZmllcikNCisJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQubW9kZWxlbGVtZW50cy5Nb2RlbGVsZW1lbnRzUGFja2FnZSNnZXRTdGFrZWhvbGRlcl9CYXNlX0NsYXNzaWZpZXIoKQ0KKwkgKiBAbW9kZWwgb3JkZXJlZD0iZmFsc2UiDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUNsYXNzaWZpZXIgZ2V0QmFzZV9DbGFzc2lmaWVyKCk7DQorDQorCS8qKg0KKwkgKiBTZXRzIHRoZSB2YWx1ZSBvZiB0aGUgJ3tAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQubW9kZWxlbGVtZW50cy5TdGFrZWhvbGRlciNnZXRCYXNlX0NsYXNzaWZpZXIgPGVtPkJhc2UgQ2xhc3NpZmllcjwvZW0+fScgcmVmZXJlbmNlLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHBhcmFtIHZhbHVlIHRoZSBuZXcgdmFsdWUgb2YgdGhlICc8ZW0+QmFzZSBDbGFzc2lmaWVyPC9lbT4nIHJlZmVyZW5jZS4NCisJICogQHNlZSAjZ2V0QmFzZV9DbGFzc2lmaWVyKCkNCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJdm9pZCBzZXRCYXNlX0NsYXNzaWZpZXIoQ2xhc3NpZmllciB2YWx1ZSk7DQorDQorCS8qKg0KKwkgKiBSZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT48Yj5Db25jZXJuPC9iPjwvZW0+JyByZWZlcmVuY2UgbGlzdC4NCisJICogVGhlIGxpc3QgY29udGVudHMgYXJlIG9mIHR5cGUge0BsaW5rIG9yZy5lY2xpcHNlLnVtbDIudW1sLkNvbW1lbnR9Lg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8cD4NCisJICogSWYgdGhlIG1lYW5pbmcgb2YgdGhlICc8ZW0+Q29uY2VybjwvZW0+JyByZWZlcmVuY2UgbGlzdCBpc24ndCBjbGVhciwNCisJICogdGhlcmUgcmVhbGx5IHNob3VsZCBiZSBtb3JlIG9mIGEgZGVzY3JpcHRpb24gaGVyZS4uLg0KKwkgKiA8L3A+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAcmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT5Db25jZXJuPC9lbT4nIHJlZmVyZW5jZSBsaXN0Lg0KKwkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5tb2RlbGVsZW1lbnRzLk1vZGVsZWxlbWVudHNQYWNrYWdlI2dldFN0YWtlaG9sZGVyX0NvbmNlcm4oKQ0KKwkgKiBAbW9kZWwgcmVxdWlyZWQ9InRydWUiIG9yZGVyZWQ9ImZhbHNlIg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlFTGlzdDxDb21tZW50PiBnZXRDb25jZXJuKCk7DQorDQorCS8qKg0KKwkgKiBSZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT48Yj5Db25jZXJuIExpc3Q8L2I+PC9lbT4nIHJlZmVyZW5jZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPHA+DQorCSAqIElmIHRoZSBtZWFuaW5nIG9mIHRoZSAnPGVtPkNvbmNlcm4gTGlzdDwvZW0+JyByZWZlcmVuY2UgaXNuJ3QgY2xlYXIsDQorCSAqIHRoZXJlIHJlYWxseSBzaG91bGQgYmUgbW9yZSBvZiBhIGRlc2NyaXB0aW9uIGhlcmUuLi4NCisJICogPC9wPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHJldHVybiB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+Q29uY2VybiBMaXN0PC9lbT4nIHJlZmVyZW5jZS4NCisJICogQHNlZSAjc2V0Q29uY2Vybkxpc3QoQ29tbWVudCkNCisJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQubW9kZWxlbGVtZW50cy5Nb2RlbGVsZW1lbnRzUGFja2FnZSNnZXRTdGFrZWhvbGRlcl9Db25jZXJuTGlzdCgpDQorCSAqIEBtb2RlbCByZXF1aXJlZD0idHJ1ZSIgdHJhbnNpZW50PSJ0cnVlIiB2b2xhdGlsZT0idHJ1ZSIgZGVyaXZlZD0idHJ1ZSIgb3JkZXJlZD0iZmFsc2UiDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUNvbW1lbnQgZ2V0Q29uY2Vybkxpc3QoKTsNCisNCisJLyoqDQorCSAqIFNldHMgdGhlIHZhbHVlIG9mIHRoZSAne0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5tb2RlbGVsZW1lbnRzLlN0YWtlaG9sZGVyI2dldENvbmNlcm5MaXN0IDxlbT5Db25jZXJuIExpc3Q8L2VtPn0nIHJlZmVyZW5jZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBwYXJhbSB2YWx1ZSB0aGUgbmV3IHZhbHVlIG9mIHRoZSAnPGVtPkNvbmNlcm4gTGlzdDwvZW0+JyByZWZlcmVuY2UuDQorCSAqIEBzZWUgI2dldENvbmNlcm5MaXN0KCkNCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJdm9pZCBzZXRDb25jZXJuTGlzdChDb21tZW50IHZhbHVlKTsNCisNCit9IC8vIFN0YWtlaG9sZGVyDQpkaWZmIC0tZ2l0IGEvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvbW9kZWxlbGVtZW50cy9WaWV3LmphdmEgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9tb2RlbGVsZW1lbnRzL1ZpZXcuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYjQ1YWNhCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvbW9kZWxlbGVtZW50cy9WaWV3LmphdmEKQEAgLTAsMCArMSwxMzIgQEAKKy8qKg0KKyAqIENvcHlyaWdodCAoYykgMjAxNSBDRUEgTElTVC4NCisgKiANCisgKiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KKyAqICBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCisgKiAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCisgKiAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgKi8NCitwYWNrYWdlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5tb2RlbGVsZW1lbnRzOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY29tbW9uLnV0aWwuRUxpc3Q7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FT2JqZWN0Ow0KKw0KKy8qKg0KKyAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorICogQSByZXByZXNlbnRhdGlvbiBvZiB0aGUgbW9kZWwgb2JqZWN0ICc8ZW0+PGI+VmlldzwvYj48L2VtPicuDQorICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorICoNCisgKiA8IS0tIGJlZ2luLW1vZGVsLWRvYyAtLT4NCisgKiBBIFZpZXcgaXMgYSByZXByZXNlbnRhdGlvbiBvZiBhIHdob2xlIHN5c3RlbSBvciBzdWJzeXN0ZW0gZnJvbSB0aGUgcGVyc3BlY3RpdmUgb2YgYSBzaW5nbGUgdmlld3BvaW50LiBWaWV3cyBhcmUgYWxsb3dlZCB0byBpbXBvcnQgb3RoZXIgZWxlbWVudHMgaW5jbHVkaW5nIG90aGVyIHBhY2thZ2VzIGFuZCBvdGhlciB2aWV3cyB0aGF0IGNvbmZvcm0gdG8gdGhlIHZpZXdwb2ludC4NCisgKiA8IS0tIGVuZC1tb2RlbC1kb2MgLS0+DQorICoNCisgKiA8cD4NCisgKiBUaGUgZm9sbG93aW5nIGZlYXR1cmVzIGFyZSBzdXBwb3J0ZWQ6DQorICogPHVsPg0KKyAqICAgPGxpPntAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQubW9kZWxlbGVtZW50cy5WaWV3I2dldEJhc2VfUGFja2FnZSA8ZW0+QmFzZSBQYWNrYWdlPC9lbT59PC9saT4NCisgKiAgIDxsaT57QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0Lm1vZGVsZWxlbWVudHMuVmlldyNnZXRWaWV3UG9pbnQgPGVtPlZpZXcgUG9pbnQ8L2VtPn08L2xpPg0KKyAqICAgPGxpPntAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQubW9kZWxlbGVtZW50cy5WaWV3I2dldFN0YWtlaG9sZGVyIDxlbT5TdGFrZWhvbGRlcjwvZW0+fTwvbGk+DQorICogICA8bGk+e0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5tb2RlbGVsZW1lbnRzLlZpZXcjZ2V0QmFzZV9DbGFzcyA8ZW0+QmFzZSBDbGFzczwvZW0+fTwvbGk+DQorICogPC91bD4NCisgKiA8L3A+DQorICoNCisgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5tb2RlbGVsZW1lbnRzLk1vZGVsZWxlbWVudHNQYWNrYWdlI2dldFZpZXcoKQ0KKyAqIEBtb2RlbA0KKyAqIEBnZW5lcmF0ZWQNCisgKi8NCitwdWJsaWMgaW50ZXJmYWNlIFZpZXcgZXh0ZW5kcyBFT2JqZWN0IHsNCisJLyoqDQorCSAqIFJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSAnPGVtPjxiPkJhc2UgUGFja2FnZTwvYj48L2VtPicgcmVmZXJlbmNlLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8cD4NCisJICogSWYgdGhlIG1lYW5pbmcgb2YgdGhlICc8ZW0+QmFzZSBQYWNrYWdlPC9lbT4nIHJlZmVyZW5jZSBpc24ndCBjbGVhciwNCisJICogdGhlcmUgcmVhbGx5IHNob3VsZCBiZSBtb3JlIG9mIGEgZGVzY3JpcHRpb24gaGVyZS4uLg0KKwkgKiA8L3A+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAcmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT5CYXNlIFBhY2thZ2U8L2VtPicgcmVmZXJlbmNlLg0KKwkgKiBAc2VlICNzZXRCYXNlX1BhY2thZ2Uob3JnLmVjbGlwc2UudW1sMi51bWwuUGFja2FnZSkNCisJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQubW9kZWxlbGVtZW50cy5Nb2RlbGVsZW1lbnRzUGFja2FnZSNnZXRWaWV3X0Jhc2VfUGFja2FnZSgpDQorCSAqIEBtb2RlbCBvcmRlcmVkPSJmYWxzZSINCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJb3JnLmVjbGlwc2UudW1sMi51bWwuUGFja2FnZSBnZXRCYXNlX1BhY2thZ2UoKTsNCisNCisJLyoqDQorCSAqIFNldHMgdGhlIHZhbHVlIG9mIHRoZSAne0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5tb2RlbGVsZW1lbnRzLlZpZXcjZ2V0QmFzZV9QYWNrYWdlIDxlbT5CYXNlIFBhY2thZ2U8L2VtPn0nIHJlZmVyZW5jZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBwYXJhbSB2YWx1ZSB0aGUgbmV3IHZhbHVlIG9mIHRoZSAnPGVtPkJhc2UgUGFja2FnZTwvZW0+JyByZWZlcmVuY2UuDQorCSAqIEBzZWUgI2dldEJhc2VfUGFja2FnZSgpDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXZvaWQgc2V0QmFzZV9QYWNrYWdlKG9yZy5lY2xpcHNlLnVtbDIudW1sLlBhY2thZ2UgdmFsdWUpOw0KKw0KKwkvKioNCisJICogUmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+PGI+VmlldyBQb2ludDwvYj48L2VtPicgcmVmZXJlbmNlLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogPCEtLSBiZWdpbi1tb2RlbC1kb2MgLS0+DQorCSAqIFRoZSB2aWV3cG9pbnQgZm9yIHRoaXMgVmlldywgZGVyaXZlZCBmcm9tIHRoZSBzdXBwbGllciBvZiB0aGUgq2NvbmZvcm27IGRlcGVuZGVuY3kgd2hvc2UgY2xpZW50IGlzIHRoaXMgVmlldy4NCisJICogPCEtLSBlbmQtbW9kZWwtZG9jIC0tPg0KKwkgKiBAcmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT5WaWV3IFBvaW50PC9lbT4nIHJlZmVyZW5jZS4NCisJICogQHNlZSAjc2V0Vmlld1BvaW50KFZpZXdQb2ludCkNCisJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQubW9kZWxlbGVtZW50cy5Nb2RlbGVsZW1lbnRzUGFja2FnZSNnZXRWaWV3X1ZpZXdQb2ludCgpDQorCSAqIEBtb2RlbCByZXF1aXJlZD0idHJ1ZSIgdHJhbnNpZW50PSJ0cnVlIiB2b2xhdGlsZT0idHJ1ZSIgZGVyaXZlZD0idHJ1ZSIgb3JkZXJlZD0iZmFsc2UiDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCVZpZXdQb2ludCBnZXRWaWV3UG9pbnQoKTsNCisNCisJLyoqDQorCSAqIFNldHMgdGhlIHZhbHVlIG9mIHRoZSAne0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5tb2RlbGVsZW1lbnRzLlZpZXcjZ2V0Vmlld1BvaW50IDxlbT5WaWV3IFBvaW50PC9lbT59JyByZWZlcmVuY2UuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAcGFyYW0gdmFsdWUgdGhlIG5ldyB2YWx1ZSBvZiB0aGUgJzxlbT5WaWV3IFBvaW50PC9lbT4nIHJlZmVyZW5jZS4NCisJICogQHNlZSAjZ2V0Vmlld1BvaW50KCkNCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJdm9pZCBzZXRWaWV3UG9pbnQoVmlld1BvaW50IHZhbHVlKTsNCisNCisJLyoqDQorCSAqIFJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSAnPGVtPjxiPlN0YWtlaG9sZGVyPC9iPjwvZW0+JyByZWZlcmVuY2UgbGlzdC4NCisJICogVGhlIGxpc3QgY29udGVudHMgYXJlIG9mIHR5cGUge0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5tb2RlbGVsZW1lbnRzLlN0YWtlaG9sZGVyfS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPHA+DQorCSAqIElmIHRoZSBtZWFuaW5nIG9mIHRoZSAnPGVtPlN0YWtlaG9sZGVyPC9lbT4nIHJlZmVyZW5jZSBsaXN0IGlzbid0IGNsZWFyLA0KKwkgKiB0aGVyZSByZWFsbHkgc2hvdWxkIGJlIG1vcmUgb2YgYSBkZXNjcmlwdGlvbiBoZXJlLi4uDQorCSAqIDwvcD4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEByZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSAnPGVtPlN0YWtlaG9sZGVyPC9lbT4nIHJlZmVyZW5jZSBsaXN0Lg0KKwkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5tb2RlbGVsZW1lbnRzLk1vZGVsZWxlbWVudHNQYWNrYWdlI2dldFZpZXdfU3Rha2Vob2xkZXIoKQ0KKwkgKiBAbW9kZWwgcmVxdWlyZWQ9InRydWUiIHRyYW5zaWVudD0idHJ1ZSIgdm9sYXRpbGU9InRydWUiIGRlcml2ZWQ9InRydWUiIG9yZGVyZWQ9ImZhbHNlIg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlFTGlzdDxTdGFrZWhvbGRlcj4gZ2V0U3Rha2Vob2xkZXIoKTsNCisNCisJLyoqDQorCSAqIFJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSAnPGVtPjxiPkJhc2UgQ2xhc3M8L2I+PC9lbT4nIHJlZmVyZW5jZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPHA+DQorCSAqIElmIHRoZSBtZWFuaW5nIG9mIHRoZSAnPGVtPkJhc2UgQ2xhc3M8L2VtPicgcmVmZXJlbmNlIGlzbid0IGNsZWFyLA0KKwkgKiB0aGVyZSByZWFsbHkgc2hvdWxkIGJlIG1vcmUgb2YgYSBkZXNjcmlwdGlvbiBoZXJlLi4uDQorCSAqIDwvcD4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEByZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSAnPGVtPkJhc2UgQ2xhc3M8L2VtPicgcmVmZXJlbmNlLg0KKwkgKiBAc2VlICNzZXRCYXNlX0NsYXNzKG9yZy5lY2xpcHNlLnVtbDIudW1sLkNsYXNzKQ0KKwkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5tb2RlbGVsZW1lbnRzLk1vZGVsZWxlbWVudHNQYWNrYWdlI2dldFZpZXdfQmFzZV9DbGFzcygpDQorCSAqIEBtb2RlbCBvcmRlcmVkPSJmYWxzZSINCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJb3JnLmVjbGlwc2UudW1sMi51bWwuQ2xhc3MgZ2V0QmFzZV9DbGFzcygpOw0KKw0KKwkvKioNCisJICogU2V0cyB0aGUgdmFsdWUgb2YgdGhlICd7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0Lm1vZGVsZWxlbWVudHMuVmlldyNnZXRCYXNlX0NsYXNzIDxlbT5CYXNlIENsYXNzPC9lbT59JyByZWZlcmVuY2UuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAcGFyYW0gdmFsdWUgdGhlIG5ldyB2YWx1ZSBvZiB0aGUgJzxlbT5CYXNlIENsYXNzPC9lbT4nIHJlZmVyZW5jZS4NCisJICogQHNlZSAjZ2V0QmFzZV9DbGFzcygpDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXZvaWQgc2V0QmFzZV9DbGFzcyhvcmcuZWNsaXBzZS51bWwyLnVtbC5DbGFzcyB2YWx1ZSk7DQorDQorfSAvLyBWaWV3DQpkaWZmIC0tZ2l0IGEvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvbW9kZWxlbGVtZW50cy9WaWV3UG9pbnQuamF2YSBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L21vZGVsZWxlbWVudHMvVmlld1BvaW50LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzg1MTliOQotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L21vZGVsZWxlbWVudHMvVmlld1BvaW50LmphdmEKQEAgLTAsMCArMSwyMTQgQEAKKy8qKg0KKyAqIENvcHlyaWdodCAoYykgMjAxNSBDRUEgTElTVC4NCisgKiANCisgKiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KKyAqICBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCisgKiAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCisgKiAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgKi8NCitwYWNrYWdlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5tb2RlbGVsZW1lbnRzOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY29tbW9uLnV0aWwuRUxpc3Q7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FQ2xhc3M7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FT2JqZWN0Ow0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS51bWwyLnVtbC5CZWhhdmlvcjsNCitpbXBvcnQgb3JnLmVjbGlwc2UudW1sMi51bWwuQ29tbWVudDsNCisNCisvKioNCisgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKyAqIEEgcmVwcmVzZW50YXRpb24gb2YgdGhlIG1vZGVsIG9iamVjdCAnPGVtPjxiPlZpZXcgUG9pbnQ8L2I+PC9lbT4nLg0KKyAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKyAqDQorICogPCEtLSBiZWdpbi1tb2RlbC1kb2MgLS0+DQorICogQSBWaWV3cG9pbnQgaXMgYSBzcGVjaWZpY2F0aW9uIG9mIHRoZSBjb252ZW50aW9ucyBhbmQgcnVsZXMgZm9yIGNvbnN0cnVjdGluZyBhbmQgdXNpbmcgYSB2aWV3IGZvciB0aGUgcHVycG9zZSBvZiBhZGRyZXNzaW5nIGEgc2V0IG9mIHN0YWtlaG9sZGVyIGNvbmNlcm5zLiBUaGUgbGFuZ3VhZ2VzIGFuZCBtZXRob2RzIGZvciBzcGVjaWZ5aW5nIGEgdmlldyBtYXkgcmVmZXJlbmNlIGxhbmd1YWdlcyBhbmQgbWV0aG9kcyBpbiBhbm90aGVyIHZpZXdwb2ludC4gVGhleSBzcGVjaWZ5IHRoZSBlbGVtZW50cyBleHBlY3RlZCB0byBiZSByZXByZXNlbnRlZCBpbiB0aGUgdmlldywgYW5kIG1heSBiZSBmb3JtYWxseSBvciBpbmZvcm1hbGx5IGRlZmluZWQuIEZvciBleGFtcGxlLCB0aGUgc2VjdXJpdHkgdmlld3BvaW50IG1heSByZXF1aXJlIHRoZSBzZWN1cml0eSByZXF1aXJlbWVudHMsIHNlY3VyaXR5IGZ1bmN0aW9uYWwgYW5kIHBoeXNpY2FsIGFyY2hpdGVjdHVyZSwgYW5kIHNlY3VyaXR5IHRlc3QgY2FzZXMuDQorICogPCEtLSBlbmQtbW9kZWwtZG9jIC0tPg0KKyAqDQorICogPHA+DQorICogVGhlIGZvbGxvd2luZyBmZWF0dXJlcyBhcmUgc3VwcG9ydGVkOg0KKyAqIDx1bD4NCisgKiAgIDxsaT57QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0Lm1vZGVsZWxlbWVudHMuVmlld1BvaW50I2dldEJhc2VfQ2xhc3MgPGVtPkJhc2UgQ2xhc3M8L2VtPn08L2xpPg0KKyAqICAgPGxpPntAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQubW9kZWxlbGVtZW50cy5WaWV3UG9pbnQjZ2V0U3Rha2Vob2xkZXIgPGVtPlN0YWtlaG9sZGVyPC9lbT59PC9saT4NCisgKiAgIDxsaT57QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0Lm1vZGVsZWxlbWVudHMuVmlld1BvaW50I2dldFB1cnBvc2UgPGVtPlB1cnBvc2U8L2VtPn08L2xpPg0KKyAqICAgPGxpPntAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQubW9kZWxlbGVtZW50cy5WaWV3UG9pbnQjZ2V0Q29uY2Vybkxpc3QgPGVtPkNvbmNlcm4gTGlzdDwvZW0+fTwvbGk+DQorICogICA8bGk+e0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5tb2RlbGVsZW1lbnRzLlZpZXdQb2ludCNnZXRMYW5ndWFnZSA8ZW0+TGFuZ3VhZ2U8L2VtPn08L2xpPg0KKyAqICAgPGxpPntAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQubW9kZWxlbGVtZW50cy5WaWV3UG9pbnQjZ2V0TWV0aG9kIDxlbT5NZXRob2Q8L2VtPn08L2xpPg0KKyAqICAgPGxpPntAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQubW9kZWxlbGVtZW50cy5WaWV3UG9pbnQjZ2V0UHJlc2VudGF0aW9uIDxlbT5QcmVzZW50YXRpb248L2VtPn08L2xpPg0KKyAqICAgPGxpPntAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQubW9kZWxlbGVtZW50cy5WaWV3UG9pbnQjZ2V0Q29uY2VybiA8ZW0+Q29uY2VybjwvZW0+fTwvbGk+DQorICogPC91bD4NCisgKiA8L3A+DQorICoNCisgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5tb2RlbGVsZW1lbnRzLk1vZGVsZWxlbWVudHNQYWNrYWdlI2dldFZpZXdQb2ludCgpDQorICogQG1vZGVsDQorICogQGdlbmVyYXRlZA0KKyAqLw0KK3B1YmxpYyBpbnRlcmZhY2UgVmlld1BvaW50IGV4dGVuZHMgRU9iamVjdCB7DQorCS8qKg0KKwkgKiBSZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT48Yj5CYXNlIENsYXNzPC9iPjwvZW0+JyByZWZlcmVuY2UuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDxwPg0KKwkgKiBJZiB0aGUgbWVhbmluZyBvZiB0aGUgJzxlbT5CYXNlIENsYXNzPC9lbT4nIHJlZmVyZW5jZSBpc24ndCBjbGVhciwNCisJICogdGhlcmUgcmVhbGx5IHNob3VsZCBiZSBtb3JlIG9mIGEgZGVzY3JpcHRpb24gaGVyZS4uLg0KKwkgKiA8L3A+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAcmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT5CYXNlIENsYXNzPC9lbT4nIHJlZmVyZW5jZS4NCisJICogQHNlZSAjc2V0QmFzZV9DbGFzcyhvcmcuZWNsaXBzZS51bWwyLnVtbC5DbGFzcykNCisJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQubW9kZWxlbGVtZW50cy5Nb2RlbGVsZW1lbnRzUGFja2FnZSNnZXRWaWV3UG9pbnRfQmFzZV9DbGFzcygpDQorCSAqIEBtb2RlbCBvcmRlcmVkPSJmYWxzZSINCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJb3JnLmVjbGlwc2UudW1sMi51bWwuQ2xhc3MgZ2V0QmFzZV9DbGFzcygpOw0KKw0KKwkvKioNCisJICogU2V0cyB0aGUgdmFsdWUgb2YgdGhlICd7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0Lm1vZGVsZWxlbWVudHMuVmlld1BvaW50I2dldEJhc2VfQ2xhc3MgPGVtPkJhc2UgQ2xhc3M8L2VtPn0nIHJlZmVyZW5jZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBwYXJhbSB2YWx1ZSB0aGUgbmV3IHZhbHVlIG9mIHRoZSAnPGVtPkJhc2UgQ2xhc3M8L2VtPicgcmVmZXJlbmNlLg0KKwkgKiBAc2VlICNnZXRCYXNlX0NsYXNzKCkNCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJdm9pZCBzZXRCYXNlX0NsYXNzKG9yZy5lY2xpcHNlLnVtbDIudW1sLkNsYXNzIHZhbHVlKTsNCisNCisJLyoqDQorCSAqIFJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSAnPGVtPjxiPlN0YWtlaG9sZGVyPC9iPjwvZW0+JyByZWZlcmVuY2UgbGlzdC4NCisJICogVGhlIGxpc3QgY29udGVudHMgYXJlIG9mIHR5cGUge0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5tb2RlbGVsZW1lbnRzLlN0YWtlaG9sZGVyfS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gYmVnaW4tbW9kZWwtZG9jIC0tPg0KKwkgKiBTZXQgb2Ygc3Rha2Vob2xkZXJzLg0KKwkgKiA8IS0tIGVuZC1tb2RlbC1kb2MgLS0+DQorCSAqIEByZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSAnPGVtPlN0YWtlaG9sZGVyPC9lbT4nIHJlZmVyZW5jZSBsaXN0Lg0KKwkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5tb2RlbGVsZW1lbnRzLk1vZGVsZWxlbWVudHNQYWNrYWdlI2dldFZpZXdQb2ludF9TdGFrZWhvbGRlcigpDQorCSAqIEBtb2RlbCByZXF1aXJlZD0idHJ1ZSIgb3JkZXJlZD0iZmFsc2UiDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUVMaXN0PFN0YWtlaG9sZGVyPiBnZXRTdGFrZWhvbGRlcigpOw0KKw0KKwkvKioNCisJICogUmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+PGI+UHVycG9zZTwvYj48L2VtPicgYXR0cmlidXRlLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogPCEtLSBiZWdpbi1tb2RlbC1kb2MgLS0+DQorCSAqIFRoZSBwdXJwb3NlIGFkZHJlc3NlcyB0aGUgc3Rha2Vob2xkZXIgY29uY2VybnMuDQorCSAqIDwhLS0gZW5kLW1vZGVsLWRvYyAtLT4NCisJICogQHJldHVybiB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+UHVycG9zZTwvZW0+JyBhdHRyaWJ1dGUuDQorCSAqIEBzZWUgI3NldFB1cnBvc2UoU3RyaW5nKQ0KKwkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5tb2RlbGVsZW1lbnRzLk1vZGVsZWxlbWVudHNQYWNrYWdlI2dldFZpZXdQb2ludF9QdXJwb3NlKCkNCisJICogQG1vZGVsIGRhdGFUeXBlPSJvcmcuZWNsaXBzZS51bWwyLnR5cGVzLlN0cmluZyIgcmVxdWlyZWQ9InRydWUiIG9yZGVyZWQ9ImZhbHNlIg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlTdHJpbmcgZ2V0UHVycG9zZSgpOw0KKw0KKwkvKioNCisJICogU2V0cyB0aGUgdmFsdWUgb2YgdGhlICd7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0Lm1vZGVsZWxlbWVudHMuVmlld1BvaW50I2dldFB1cnBvc2UgPGVtPlB1cnBvc2U8L2VtPn0nIGF0dHJpYnV0ZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBwYXJhbSB2YWx1ZSB0aGUgbmV3IHZhbHVlIG9mIHRoZSAnPGVtPlB1cnBvc2U8L2VtPicgYXR0cmlidXRlLg0KKwkgKiBAc2VlICNnZXRQdXJwb3NlKCkNCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJdm9pZCBzZXRQdXJwb3NlKFN0cmluZyB2YWx1ZSk7DQorDQorCS8qKg0KKwkgKiBSZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT48Yj5Db25jZXJuIExpc3Q8L2I+PC9lbT4nIHJlZmVyZW5jZSBsaXN0Lg0KKwkgKiBUaGUgbGlzdCBjb250ZW50cyBhcmUgb2YgdHlwZSB7QGxpbmsgb3JnLmVjbGlwc2UudW1sMi51bWwuQ29tbWVudH0uDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGJlZ2luLW1vZGVsLWRvYyAtLT4NCisJICogVGhlIGludGVyZXN0IG9mIHRoZSBzdGFrZWhvbGRlcnMuDQorCSAqIDwhLS0gZW5kLW1vZGVsLWRvYyAtLT4NCisJICogQHJldHVybiB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+Q29uY2VybiBMaXN0PC9lbT4nIHJlZmVyZW5jZSBsaXN0Lg0KKwkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5tb2RlbGVsZW1lbnRzLk1vZGVsZWxlbWVudHNQYWNrYWdlI2dldFZpZXdQb2ludF9Db25jZXJuTGlzdCgpDQorCSAqIEBtb2RlbCByZXF1aXJlZD0idHJ1ZSIgb3JkZXJlZD0iZmFsc2UiDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUVMaXN0PENvbW1lbnQ+IGdldENvbmNlcm5MaXN0KCk7DQorDQorCS8qKg0KKwkgKiBSZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT48Yj5MYW5ndWFnZTwvYj48L2VtPicgYXR0cmlidXRlIGxpc3QuDQorCSAqIFRoZSBsaXN0IGNvbnRlbnRzIGFyZSBvZiB0eXBlIHtAbGluayBqYXZhLmxhbmcuU3RyaW5nfS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gYmVnaW4tbW9kZWwtZG9jIC0tPg0KKwkgKiBUaGUgbGFuZ3VhZ2VzIHVzZWQgdG8gY29uc3RydWN0IHRoZSB2aWV3cG9pbnQuDQorCSAqIDwhLS0gZW5kLW1vZGVsLWRvYyAtLT4NCisJICogQHJldHVybiB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+TGFuZ3VhZ2U8L2VtPicgYXR0cmlidXRlIGxpc3QuDQorCSAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0Lm1vZGVsZWxlbWVudHMuTW9kZWxlbGVtZW50c1BhY2thZ2UjZ2V0Vmlld1BvaW50X0xhbmd1YWdlKCkNCisJICogQG1vZGVsIGRhdGFUeXBlPSJvcmcuZWNsaXBzZS51bWwyLnR5cGVzLlN0cmluZyIgcmVxdWlyZWQ9InRydWUiIG9yZGVyZWQ9ImZhbHNlIg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlFTGlzdDxTdHJpbmc+IGdldExhbmd1YWdlKCk7DQorDQorCS8qKg0KKwkgKiBSZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT48Yj5NZXRob2Q8L2I+PC9lbT4nIHJlZmVyZW5jZSBsaXN0Lg0KKwkgKiBUaGUgbGlzdCBjb250ZW50cyBhcmUgb2YgdHlwZSB7QGxpbmsgb3JnLmVjbGlwc2UudW1sMi51bWwuQmVoYXZpb3J9Lg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogPCEtLSBiZWdpbi1tb2RlbC1kb2MgLS0+DQorCSAqIFRoZSBtZXRob2RzIHVzZWQgdG8gY29uc3RydWN0IHRoZSB2aWV3cyBmb3IgdGhpcyB2aWV3cG9pbnQuDQorCSAqIDwhLS0gZW5kLW1vZGVsLWRvYyAtLT4NCisJICogQHJldHVybiB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+TWV0aG9kPC9lbT4nIHJlZmVyZW5jZSBsaXN0Lg0KKwkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5tb2RlbGVsZW1lbnRzLk1vZGVsZWxlbWVudHNQYWNrYWdlI2dldFZpZXdQb2ludF9NZXRob2QoKQ0KKwkgKiBAbW9kZWwgcmVxdWlyZWQ9InRydWUiIHRyYW5zaWVudD0idHJ1ZSIgdm9sYXRpbGU9InRydWUiIGRlcml2ZWQ9InRydWUiIG9yZGVyZWQ9ImZhbHNlIg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlFTGlzdDxCZWhhdmlvcj4gZ2V0TWV0aG9kKCk7DQorDQorCS8qKg0KKwkgKiBSZXRyaWV2ZXMgdGhlIGZpcnN0IHtAbGluayBvcmcuZWNsaXBzZS51bWwyLnVtbC5CZWhhdmlvcn0gd2l0aCB0aGUgc3BlY2lmaWVkICc8ZW0+PGI+TmFtZTwvYj48L2VtPicgZnJvbSB0aGUgJzxlbT48Yj5NZXRob2Q8L2I+PC9lbT4nIHJlZmVyZW5jZSBsaXN0Lg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHBhcmFtIG5hbWUgVGhlICc8ZW0+PGI+TmFtZTwvYj48L2VtPicgb2YgdGhlIHtAbGluayBvcmcuZWNsaXBzZS51bWwyLnVtbC5CZWhhdmlvcn0gdG8gcmV0cmlldmUsIG9yIDxjb2RlPm51bGw8L2NvZGU+Lg0KKwkgKiBAcmV0dXJuIFRoZSBmaXJzdCB7QGxpbmsgb3JnLmVjbGlwc2UudW1sMi51bWwuQmVoYXZpb3J9IHdpdGggdGhlIHNwZWNpZmllZCAnPGVtPjxiPk5hbWU8L2I+PC9lbT4nLCBvciA8Y29kZT5udWxsPC9jb2RlPi4NCisJICogQHNlZSAjZ2V0TWV0aG9kKCkNCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQmVoYXZpb3IgZ2V0TWV0aG9kKFN0cmluZyBuYW1lKTsNCisNCisJLyoqDQorCSAqIFJldHJpZXZlcyB0aGUgZmlyc3Qge0BsaW5rIG9yZy5lY2xpcHNlLnVtbDIudW1sLkJlaGF2aW9yfSB3aXRoIHRoZSBzcGVjaWZpZWQgJzxlbT48Yj5OYW1lPC9iPjwvZW0+JyBmcm9tIHRoZSAnPGVtPjxiPk1ldGhvZDwvYj48L2VtPicgcmVmZXJlbmNlIGxpc3QuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAcGFyYW0gbmFtZSBUaGUgJzxlbT48Yj5OYW1lPC9iPjwvZW0+JyBvZiB0aGUge0BsaW5rIG9yZy5lY2xpcHNlLnVtbDIudW1sLkJlaGF2aW9yfSB0byByZXRyaWV2ZSwgb3IgPGNvZGU+bnVsbDwvY29kZT4uDQorCSAqIEBwYXJhbSBpZ25vcmVDYXNlIFdoZXRoZXIgdG8gaWdub3JlIGNhc2UgaW4ge0BsaW5rIGphdmEubGFuZy5TdHJpbmd9IGNvbXBhcmlzb25zLg0KKwkgKiBAcGFyYW0gZUNsYXNzIFRoZSBFY29yZSBjbGFzcyBvZiB0aGUge0BsaW5rIG9yZy5lY2xpcHNlLnVtbDIudW1sLkJlaGF2aW9yfSB0byByZXRyaWV2ZSwgb3IgPGNvZGU+bnVsbDwvY29kZT4uDQorCSAqIEByZXR1cm4gVGhlIGZpcnN0IHtAbGluayBvcmcuZWNsaXBzZS51bWwyLnVtbC5CZWhhdmlvcn0gd2l0aCB0aGUgc3BlY2lmaWVkICc8ZW0+PGI+TmFtZTwvYj48L2VtPicsIG9yIDxjb2RlPm51bGw8L2NvZGU+Lg0KKwkgKiBAc2VlICNnZXRNZXRob2QoKQ0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlCZWhhdmlvciBnZXRNZXRob2QoU3RyaW5nIG5hbWUsIGJvb2xlYW4gaWdub3JlQ2FzZSwgRUNsYXNzIGVDbGFzcyk7DQorDQorCS8qKg0KKwkgKiBSZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT48Yj5QcmVzZW50YXRpb248L2I+PC9lbT4nIGF0dHJpYnV0ZSBsaXN0Lg0KKwkgKiBUaGUgbGlzdCBjb250ZW50cyBhcmUgb2YgdHlwZSB7QGxpbmsgamF2YS5sYW5nLlN0cmluZ30uDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDxwPg0KKwkgKiBJZiB0aGUgbWVhbmluZyBvZiB0aGUgJzxlbT5QcmVzZW50YXRpb248L2VtPicgYXR0cmlidXRlIGxpc3QgaXNuJ3QgY2xlYXIsDQorCSAqIHRoZXJlIHJlYWxseSBzaG91bGQgYmUgbW9yZSBvZiBhIGRlc2NyaXB0aW9uIGhlcmUuLi4NCisJICogPC9wPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHJldHVybiB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+UHJlc2VudGF0aW9uPC9lbT4nIGF0dHJpYnV0ZSBsaXN0Lg0KKwkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5tb2RlbGVsZW1lbnRzLk1vZGVsZWxlbWVudHNQYWNrYWdlI2dldFZpZXdQb2ludF9QcmVzZW50YXRpb24oKQ0KKwkgKiBAbW9kZWwgZGF0YVR5cGU9Im9yZy5lY2xpcHNlLnVtbDIudHlwZXMuU3RyaW5nIiByZXF1aXJlZD0idHJ1ZSIgb3JkZXJlZD0iZmFsc2UiDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUVMaXN0PFN0cmluZz4gZ2V0UHJlc2VudGF0aW9uKCk7DQorDQorCS8qKg0KKwkgKiBSZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT48Yj5Db25jZXJuPC9iPjwvZW0+JyBhdHRyaWJ1dGUgbGlzdC4NCisJICogVGhlIGxpc3QgY29udGVudHMgYXJlIG9mIHR5cGUge0BsaW5rIGphdmEubGFuZy5TdHJpbmd9Lg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8cD4NCisJICogSWYgdGhlIG1lYW5pbmcgb2YgdGhlICc8ZW0+Q29uY2VybjwvZW0+JyBhdHRyaWJ1dGUgbGlzdCBpc24ndCBjbGVhciwNCisJICogdGhlcmUgcmVhbGx5IHNob3VsZCBiZSBtb3JlIG9mIGEgZGVzY3JpcHRpb24gaGVyZS4uLg0KKwkgKiA8L3A+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAcmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT5Db25jZXJuPC9lbT4nIGF0dHJpYnV0ZSBsaXN0Lg0KKwkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5tb2RlbGVsZW1lbnRzLk1vZGVsZWxlbWVudHNQYWNrYWdlI2dldFZpZXdQb2ludF9Db25jZXJuKCkNCisJICogQG1vZGVsIGRhdGFUeXBlPSJvcmcuZWNsaXBzZS51bWwyLnR5cGVzLlN0cmluZyIgcmVxdWlyZWQ9InRydWUiIHRyYW5zaWVudD0idHJ1ZSIgdm9sYXRpbGU9InRydWUiIGRlcml2ZWQ9InRydWUiIG9yZGVyZWQ9ImZhbHNlIg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlFTGlzdDxTdHJpbmc+IGdldENvbmNlcm4oKTsNCisNCit9IC8vIFZpZXdQb2ludA0KZGlmZiAtLWdpdCBhL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L21vZGVsZWxlbWVudHMvaW50ZXJuYWwvaW1wbC9Db25mb3JtSW1wbC5qYXZhIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvbW9kZWxlbGVtZW50cy9pbnRlcm5hbC9pbXBsL0NvbmZvcm1JbXBsLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODI5NmJmMgotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L21vZGVsZWxlbWVudHMvaW50ZXJuYWwvaW1wbC9Db25mb3JtSW1wbC5qYXZhCkBAIC0wLDAgKzEsMjI1IEBACisvKioNCisgKiBDb3B5cmlnaHQgKGMpIDIwMTUgQ0VBIExJU1QuDQorICogDQorICogIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCisgKiAgYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQorICogIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQorICogIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICovDQorcGFja2FnZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQubW9kZWxlbGVtZW50cy5pbnRlcm5hbC5pbXBsOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY29tbW9uLm5vdGlmeS5Ob3RpZmljYXRpb247DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FQ2xhc3M7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5JbnRlcm5hbEVPYmplY3Q7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5pbXBsLkVOb3RpZmljYXRpb25JbXBsOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuaW1wbC5NaW5pbWFsRU9iamVjdEltcGw7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5tb2RlbGVsZW1lbnRzLkNvbmZvcm07DQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5tb2RlbGVsZW1lbnRzLk1vZGVsZWxlbWVudHNQYWNrYWdlOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS51bWwyLnVtbC5EZXBlbmRlbmN5Ow0KK2ltcG9ydCBvcmcuZWNsaXBzZS51bWwyLnVtbC5HZW5lcmFsaXphdGlvbjsNCisNCisvKioNCisgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKyAqIEFuIGltcGxlbWVudGF0aW9uIG9mIHRoZSBtb2RlbCBvYmplY3QgJzxlbT48Yj5Db25mb3JtPC9iPjwvZW0+Jy4NCisgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisgKiA8cD4NCisgKiBUaGUgZm9sbG93aW5nIGZlYXR1cmVzIGFyZSBpbXBsZW1lbnRlZDoNCisgKiA8dWw+DQorICogICA8bGk+e0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5tb2RlbGVsZW1lbnRzLmludGVybmFsLmltcGwuQ29uZm9ybUltcGwjZ2V0QmFzZV9EZXBlbmRlbmN5IDxlbT5CYXNlIERlcGVuZGVuY3k8L2VtPn08L2xpPg0KKyAqICAgPGxpPntAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQubW9kZWxlbGVtZW50cy5pbnRlcm5hbC5pbXBsLkNvbmZvcm1JbXBsI2dldEJhc2VfR2VuZXJhbGl6YXRpb24gPGVtPkJhc2UgR2VuZXJhbGl6YXRpb248L2VtPn08L2xpPg0KKyAqIDwvdWw+DQorICogPC9wPg0KKyAqDQorICogQGdlbmVyYXRlZA0KKyAqLw0KK3B1YmxpYyBjbGFzcyBDb25mb3JtSW1wbCBleHRlbmRzIE1pbmltYWxFT2JqZWN0SW1wbC5Db250YWluZXIgaW1wbGVtZW50cyBDb25mb3JtIHsNCisJLyoqDQorCSAqIFRoZSBjYWNoZWQgdmFsdWUgb2YgdGhlICd7QGxpbmsgI2dldEJhc2VfRGVwZW5kZW5jeSgpIDxlbT5CYXNlIERlcGVuZGVuY3k8L2VtPn0nIHJlZmVyZW5jZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBzZWUgI2dldEJhc2VfRGVwZW5kZW5jeSgpDQorCSAqIEBnZW5lcmF0ZWQNCisJICogQG9yZGVyZWQNCisJICovDQorCXByb3RlY3RlZCBEZXBlbmRlbmN5IGJhc2VfRGVwZW5kZW5jeTsNCisNCisJLyoqDQorCSAqIFRoZSBjYWNoZWQgdmFsdWUgb2YgdGhlICd7QGxpbmsgI2dldEJhc2VfR2VuZXJhbGl6YXRpb24oKSA8ZW0+QmFzZSBHZW5lcmFsaXphdGlvbjwvZW0+fScgcmVmZXJlbmNlLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHNlZSAjZ2V0QmFzZV9HZW5lcmFsaXphdGlvbigpDQorCSAqIEBnZW5lcmF0ZWQNCisJICogQG9yZGVyZWQNCisJICovDQorCXByb3RlY3RlZCBHZW5lcmFsaXphdGlvbiBiYXNlX0dlbmVyYWxpemF0aW9uOw0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXByb3RlY3RlZCBDb25mb3JtSW1wbCgpIHsNCisJCXN1cGVyKCk7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHJvdGVjdGVkIEVDbGFzcyBlU3RhdGljQ2xhc3MoKSB7DQorCQlyZXR1cm4gTW9kZWxlbGVtZW50c1BhY2thZ2UuTGl0ZXJhbHMuQ09ORk9STTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBEZXBlbmRlbmN5IGdldEJhc2VfRGVwZW5kZW5jeSgpIHsNCisJCWlmIChiYXNlX0RlcGVuZGVuY3kgIT0gbnVsbCAmJiBiYXNlX0RlcGVuZGVuY3kuZUlzUHJveHkoKSkgew0KKwkJCUludGVybmFsRU9iamVjdCBvbGRCYXNlX0RlcGVuZGVuY3kgPSAoSW50ZXJuYWxFT2JqZWN0KWJhc2VfRGVwZW5kZW5jeTsNCisJCQliYXNlX0RlcGVuZGVuY3kgPSAoRGVwZW5kZW5jeSllUmVzb2x2ZVByb3h5KG9sZEJhc2VfRGVwZW5kZW5jeSk7DQorCQkJaWYgKGJhc2VfRGVwZW5kZW5jeSAhPSBvbGRCYXNlX0RlcGVuZGVuY3kpIHsNCisJCQkJaWYgKGVOb3RpZmljYXRpb25SZXF1aXJlZCgpKQ0KKwkJCQkJZU5vdGlmeShuZXcgRU5vdGlmaWNhdGlvbkltcGwodGhpcywgTm90aWZpY2F0aW9uLlJFU09MVkUsIE1vZGVsZWxlbWVudHNQYWNrYWdlLkNPTkZPUk1fX0JBU0VfREVQRU5ERU5DWSwgb2xkQmFzZV9EZXBlbmRlbmN5LCBiYXNlX0RlcGVuZGVuY3kpKTsNCisJCQl9DQorCQl9DQorCQlyZXR1cm4gYmFzZV9EZXBlbmRlbmN5Ow0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIERlcGVuZGVuY3kgYmFzaWNHZXRCYXNlX0RlcGVuZGVuY3koKSB7DQorCQlyZXR1cm4gYmFzZV9EZXBlbmRlbmN5Ow0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIHZvaWQgc2V0QmFzZV9EZXBlbmRlbmN5KERlcGVuZGVuY3kgbmV3QmFzZV9EZXBlbmRlbmN5KSB7DQorCQlEZXBlbmRlbmN5IG9sZEJhc2VfRGVwZW5kZW5jeSA9IGJhc2VfRGVwZW5kZW5jeTsNCisJCWJhc2VfRGVwZW5kZW5jeSA9IG5ld0Jhc2VfRGVwZW5kZW5jeTsNCisJCWlmIChlTm90aWZpY2F0aW9uUmVxdWlyZWQoKSkNCisJCQllTm90aWZ5KG5ldyBFTm90aWZpY2F0aW9uSW1wbCh0aGlzLCBOb3RpZmljYXRpb24uU0VULCBNb2RlbGVsZW1lbnRzUGFja2FnZS5DT05GT1JNX19CQVNFX0RFUEVOREVOQ1ksIG9sZEJhc2VfRGVwZW5kZW5jeSwgYmFzZV9EZXBlbmRlbmN5KSk7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgR2VuZXJhbGl6YXRpb24gZ2V0QmFzZV9HZW5lcmFsaXphdGlvbigpIHsNCisJCWlmIChiYXNlX0dlbmVyYWxpemF0aW9uICE9IG51bGwgJiYgYmFzZV9HZW5lcmFsaXphdGlvbi5lSXNQcm94eSgpKSB7DQorCQkJSW50ZXJuYWxFT2JqZWN0IG9sZEJhc2VfR2VuZXJhbGl6YXRpb24gPSAoSW50ZXJuYWxFT2JqZWN0KWJhc2VfR2VuZXJhbGl6YXRpb247DQorCQkJYmFzZV9HZW5lcmFsaXphdGlvbiA9IChHZW5lcmFsaXphdGlvbillUmVzb2x2ZVByb3h5KG9sZEJhc2VfR2VuZXJhbGl6YXRpb24pOw0KKwkJCWlmIChiYXNlX0dlbmVyYWxpemF0aW9uICE9IG9sZEJhc2VfR2VuZXJhbGl6YXRpb24pIHsNCisJCQkJaWYgKGVOb3RpZmljYXRpb25SZXF1aXJlZCgpKQ0KKwkJCQkJZU5vdGlmeShuZXcgRU5vdGlmaWNhdGlvbkltcGwodGhpcywgTm90aWZpY2F0aW9uLlJFU09MVkUsIE1vZGVsZWxlbWVudHNQYWNrYWdlLkNPTkZPUk1fX0JBU0VfR0VORVJBTElaQVRJT04sIG9sZEJhc2VfR2VuZXJhbGl6YXRpb24sIGJhc2VfR2VuZXJhbGl6YXRpb24pKTsNCisJCQl9DQorCQl9DQorCQlyZXR1cm4gYmFzZV9HZW5lcmFsaXphdGlvbjsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBHZW5lcmFsaXphdGlvbiBiYXNpY0dldEJhc2VfR2VuZXJhbGl6YXRpb24oKSB7DQorCQlyZXR1cm4gYmFzZV9HZW5lcmFsaXphdGlvbjsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyB2b2lkIHNldEJhc2VfR2VuZXJhbGl6YXRpb24oR2VuZXJhbGl6YXRpb24gbmV3QmFzZV9HZW5lcmFsaXphdGlvbikgew0KKwkJR2VuZXJhbGl6YXRpb24gb2xkQmFzZV9HZW5lcmFsaXphdGlvbiA9IGJhc2VfR2VuZXJhbGl6YXRpb247DQorCQliYXNlX0dlbmVyYWxpemF0aW9uID0gbmV3QmFzZV9HZW5lcmFsaXphdGlvbjsNCisJCWlmIChlTm90aWZpY2F0aW9uUmVxdWlyZWQoKSkNCisJCQllTm90aWZ5KG5ldyBFTm90aWZpY2F0aW9uSW1wbCh0aGlzLCBOb3RpZmljYXRpb24uU0VULCBNb2RlbGVsZW1lbnRzUGFja2FnZS5DT05GT1JNX19CQVNFX0dFTkVSQUxJWkFUSU9OLCBvbGRCYXNlX0dlbmVyYWxpemF0aW9uLCBiYXNlX0dlbmVyYWxpemF0aW9uKSk7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIE9iamVjdCBlR2V0KGludCBmZWF0dXJlSUQsIGJvb2xlYW4gcmVzb2x2ZSwgYm9vbGVhbiBjb3JlVHlwZSkgew0KKwkJc3dpdGNoIChmZWF0dXJlSUQpIHsNCisJCQljYXNlIE1vZGVsZWxlbWVudHNQYWNrYWdlLkNPTkZPUk1fX0JBU0VfREVQRU5ERU5DWToNCisJCQkJaWYgKHJlc29sdmUpIHJldHVybiBnZXRCYXNlX0RlcGVuZGVuY3koKTsNCisJCQkJcmV0dXJuIGJhc2ljR2V0QmFzZV9EZXBlbmRlbmN5KCk7DQorCQkJY2FzZSBNb2RlbGVsZW1lbnRzUGFja2FnZS5DT05GT1JNX19CQVNFX0dFTkVSQUxJWkFUSU9OOg0KKwkJCQlpZiAocmVzb2x2ZSkgcmV0dXJuIGdldEJhc2VfR2VuZXJhbGl6YXRpb24oKTsNCisJCQkJcmV0dXJuIGJhc2ljR2V0QmFzZV9HZW5lcmFsaXphdGlvbigpOw0KKwkJfQ0KKwkJcmV0dXJuIHN1cGVyLmVHZXQoZmVhdHVyZUlELCByZXNvbHZlLCBjb3JlVHlwZSk7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIHZvaWQgZVNldChpbnQgZmVhdHVyZUlELCBPYmplY3QgbmV3VmFsdWUpIHsNCisJCXN3aXRjaCAoZmVhdHVyZUlEKSB7DQorCQkJY2FzZSBNb2RlbGVsZW1lbnRzUGFja2FnZS5DT05GT1JNX19CQVNFX0RFUEVOREVOQ1k6DQorCQkJCXNldEJhc2VfRGVwZW5kZW5jeSgoRGVwZW5kZW5jeSluZXdWYWx1ZSk7DQorCQkJCXJldHVybjsNCisJCQljYXNlIE1vZGVsZWxlbWVudHNQYWNrYWdlLkNPTkZPUk1fX0JBU0VfR0VORVJBTElaQVRJT046DQorCQkJCXNldEJhc2VfR2VuZXJhbGl6YXRpb24oKEdlbmVyYWxpemF0aW9uKW5ld1ZhbHVlKTsNCisJCQkJcmV0dXJuOw0KKwkJfQ0KKwkJc3VwZXIuZVNldChmZWF0dXJlSUQsIG5ld1ZhbHVlKTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgdm9pZCBlVW5zZXQoaW50IGZlYXR1cmVJRCkgew0KKwkJc3dpdGNoIChmZWF0dXJlSUQpIHsNCisJCQljYXNlIE1vZGVsZWxlbWVudHNQYWNrYWdlLkNPTkZPUk1fX0JBU0VfREVQRU5ERU5DWToNCisJCQkJc2V0QmFzZV9EZXBlbmRlbmN5KChEZXBlbmRlbmN5KW51bGwpOw0KKwkJCQlyZXR1cm47DQorCQkJY2FzZSBNb2RlbGVsZW1lbnRzUGFja2FnZS5DT05GT1JNX19CQVNFX0dFTkVSQUxJWkFUSU9OOg0KKwkJCQlzZXRCYXNlX0dlbmVyYWxpemF0aW9uKChHZW5lcmFsaXphdGlvbiludWxsKTsNCisJCQkJcmV0dXJuOw0KKwkJfQ0KKwkJc3VwZXIuZVVuc2V0KGZlYXR1cmVJRCk7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIGJvb2xlYW4gZUlzU2V0KGludCBmZWF0dXJlSUQpIHsNCisJCXN3aXRjaCAoZmVhdHVyZUlEKSB7DQorCQkJY2FzZSBNb2RlbGVsZW1lbnRzUGFja2FnZS5DT05GT1JNX19CQVNFX0RFUEVOREVOQ1k6DQorCQkJCXJldHVybiBiYXNlX0RlcGVuZGVuY3kgIT0gbnVsbDsNCisJCQljYXNlIE1vZGVsZWxlbWVudHNQYWNrYWdlLkNPTkZPUk1fX0JBU0VfR0VORVJBTElaQVRJT046DQorCQkJCXJldHVybiBiYXNlX0dlbmVyYWxpemF0aW9uICE9IG51bGw7DQorCQl9DQorCQlyZXR1cm4gc3VwZXIuZUlzU2V0KGZlYXR1cmVJRCk7DQorCX0NCisNCit9IC8vQ29uZm9ybUltcGwNCmRpZmYgLS1naXQgYS9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9tb2RlbGVsZW1lbnRzL2ludGVybmFsL2ltcGwvRWxlbWVudEdyb3VwSW1wbC5qYXZhIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvbW9kZWxlbGVtZW50cy9pbnRlcm5hbC9pbXBsL0VsZW1lbnRHcm91cEltcGwuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZWI2YWU2Ci0tLSAvZGV2L251bGwKKysrIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvbW9kZWxlbGVtZW50cy9pbnRlcm5hbC9pbXBsL0VsZW1lbnRHcm91cEltcGwuamF2YQpAQCAtMCwwICsxLDQ0OSBAQAorLyoqDQorICogQ29weXJpZ2h0IChjKSAyMDE1IENFQSBMSVNULg0KKyAqIA0KKyAqICBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQorICogIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KKyAqICB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KKyAqICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqLw0KK3BhY2thZ2Ugb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0Lm1vZGVsZWxlbWVudHMuaW50ZXJuYWwuaW1wbDsNCisNCitpbXBvcnQgamF2YS5sYW5nLnJlZmxlY3QuSW52b2NhdGlvblRhcmdldEV4Y2VwdGlvbjsNCisNCitpbXBvcnQgamF2YS51dGlsLkNvbGxlY3Rpb247DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jb21tb24ubm90aWZ5Lk5vdGlmaWNhdGlvbjsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi51dGlsLkVMaXN0Ow0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRUNsYXNzOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuSW50ZXJuYWxFT2JqZWN0Ow0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuaW1wbC5FTm90aWZpY2F0aW9uSW1wbDsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLmltcGwuTWluaW1hbEVPYmplY3RJbXBsOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUudXRpbC5FT2JqZWN0UmVzb2x2aW5nRUxpc3Q7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5tb2RlbGVsZW1lbnRzLkVsZW1lbnRHcm91cDsNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0Lm1vZGVsZWxlbWVudHMuTW9kZWxlbGVtZW50c1BhY2thZ2U7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLnVtbDIudW1sLkNvbW1lbnQ7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnVtbDIudW1sLkVsZW1lbnQ7DQorDQorLyoqDQorICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisgKiBBbiBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgbW9kZWwgb2JqZWN0ICc8ZW0+PGI+RWxlbWVudCBHcm91cDwvYj48L2VtPicuDQorICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorICogPHA+DQorICogVGhlIGZvbGxvd2luZyBmZWF0dXJlcyBhcmUgaW1wbGVtZW50ZWQ6DQorICogPHVsPg0KKyAqICAgPGxpPntAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQubW9kZWxlbGVtZW50cy5pbnRlcm5hbC5pbXBsLkVsZW1lbnRHcm91cEltcGwjZ2V0QmFzZV9Db21tZW50IDxlbT5CYXNlIENvbW1lbnQ8L2VtPn08L2xpPg0KKyAqICAgPGxpPntAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQubW9kZWxlbGVtZW50cy5pbnRlcm5hbC5pbXBsLkVsZW1lbnRHcm91cEltcGwjZ2V0TmFtZSA8ZW0+TmFtZTwvZW0+fTwvbGk+DQorICogICA8bGk+e0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5tb2RlbGVsZW1lbnRzLmludGVybmFsLmltcGwuRWxlbWVudEdyb3VwSW1wbCNnZXRDcml0ZXJpb24gPGVtPkNyaXRlcmlvbjwvZW0+fTwvbGk+DQorICogICA8bGk+e0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5tb2RlbGVsZW1lbnRzLmludGVybmFsLmltcGwuRWxlbWVudEdyb3VwSW1wbCNnZXRTaXplIDxlbT5TaXplPC9lbT59PC9saT4NCisgKiAgIDxsaT57QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0Lm1vZGVsZWxlbWVudHMuaW50ZXJuYWwuaW1wbC5FbGVtZW50R3JvdXBJbXBsI2dldE1lbWJlciA8ZW0+TWVtYmVyPC9lbT59PC9saT4NCisgKiAgIDxsaT57QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0Lm1vZGVsZWxlbWVudHMuaW50ZXJuYWwuaW1wbC5FbGVtZW50R3JvdXBJbXBsI2dldE9yZGVyZWRNZW1iZXIgPGVtPk9yZGVyZWQgTWVtYmVyPC9lbT59PC9saT4NCisgKiA8L3VsPg0KKyAqIDwvcD4NCisgKg0KKyAqIEBnZW5lcmF0ZWQNCisgKi8NCitwdWJsaWMgY2xhc3MgRWxlbWVudEdyb3VwSW1wbCBleHRlbmRzIE1pbmltYWxFT2JqZWN0SW1wbC5Db250YWluZXIgaW1wbGVtZW50cyBFbGVtZW50R3JvdXAgew0KKwkvKioNCisJICogVGhlIGNhY2hlZCB2YWx1ZSBvZiB0aGUgJ3tAbGluayAjZ2V0QmFzZV9Db21tZW50KCkgPGVtPkJhc2UgQ29tbWVudDwvZW0+fScgcmVmZXJlbmNlLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHNlZSAjZ2V0QmFzZV9Db21tZW50KCkNCisJICogQGdlbmVyYXRlZA0KKwkgKiBAb3JkZXJlZA0KKwkgKi8NCisJcHJvdGVjdGVkIENvbW1lbnQgYmFzZV9Db21tZW50Ow0KKw0KKwkvKioNCisJICogVGhlIGRlZmF1bHQgdmFsdWUgb2YgdGhlICd7QGxpbmsgI2dldE5hbWUoKSA8ZW0+TmFtZTwvZW0+fScgYXR0cmlidXRlLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHNlZSAjZ2V0TmFtZSgpDQorCSAqIEBnZW5lcmF0ZWQNCisJICogQG9yZGVyZWQNCisJICovDQorCXByb3RlY3RlZCBzdGF0aWMgZmluYWwgU3RyaW5nIE5BTUVfRURFRkFVTFQgPSBudWxsOw0KKw0KKwkvKioNCisJICogVGhlIGNhY2hlZCB2YWx1ZSBvZiB0aGUgJ3tAbGluayAjZ2V0TmFtZSgpIDxlbT5OYW1lPC9lbT59JyBhdHRyaWJ1dGUuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAc2VlICNnZXROYW1lKCkNCisJICogQGdlbmVyYXRlZA0KKwkgKiBAb3JkZXJlZA0KKwkgKi8NCisJcHJvdGVjdGVkIFN0cmluZyBuYW1lID0gTkFNRV9FREVGQVVMVDsNCisNCisJLyoqDQorCSAqIFRoZSBkZWZhdWx0IHZhbHVlIG9mIHRoZSAne0BsaW5rICNnZXRDcml0ZXJpb24oKSA8ZW0+Q3JpdGVyaW9uPC9lbT59JyBhdHRyaWJ1dGUuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAc2VlICNnZXRDcml0ZXJpb24oKQ0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqIEBvcmRlcmVkDQorCSAqLw0KKwlwcm90ZWN0ZWQgc3RhdGljIGZpbmFsIFN0cmluZyBDUklURVJJT05fRURFRkFVTFQgPSBudWxsOw0KKw0KKwkvKioNCisJICogVGhlIGRlZmF1bHQgdmFsdWUgb2YgdGhlICd7QGxpbmsgI2dldFNpemUoKSA8ZW0+U2l6ZTwvZW0+fScgYXR0cmlidXRlLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHNlZSAjZ2V0U2l6ZSgpDQorCSAqIEBnZW5lcmF0ZWQNCisJICogQG9yZGVyZWQNCisJICovDQorCXByb3RlY3RlZCBzdGF0aWMgZmluYWwgaW50IFNJWkVfRURFRkFVTFQgPSAwOw0KKw0KKwkvKioNCisJICogVGhlIGNhY2hlZCB2YWx1ZSBvZiB0aGUgJ3tAbGluayAjZ2V0T3JkZXJlZE1lbWJlcigpIDxlbT5PcmRlcmVkIE1lbWJlcjwvZW0+fScgcmVmZXJlbmNlIGxpc3QuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAc2VlICNnZXRPcmRlcmVkTWVtYmVyKCkNCisJICogQGdlbmVyYXRlZA0KKwkgKiBAb3JkZXJlZA0KKwkgKi8NCisJcHJvdGVjdGVkIEVMaXN0PEVsZW1lbnQ+IG9yZGVyZWRNZW1iZXI7DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHJvdGVjdGVkIEVsZW1lbnRHcm91cEltcGwoKSB7DQorCQlzdXBlcigpOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXByb3RlY3RlZCBFQ2xhc3MgZVN0YXRpY0NsYXNzKCkgew0KKwkJcmV0dXJuIE1vZGVsZWxlbWVudHNQYWNrYWdlLkxpdGVyYWxzLkVMRU1FTlRfR1JPVVA7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgQ29tbWVudCBnZXRCYXNlX0NvbW1lbnQoKSB7DQorCQlpZiAoYmFzZV9Db21tZW50ICE9IG51bGwgJiYgYmFzZV9Db21tZW50LmVJc1Byb3h5KCkpIHsNCisJCQlJbnRlcm5hbEVPYmplY3Qgb2xkQmFzZV9Db21tZW50ID0gKEludGVybmFsRU9iamVjdCliYXNlX0NvbW1lbnQ7DQorCQkJYmFzZV9Db21tZW50ID0gKENvbW1lbnQpZVJlc29sdmVQcm94eShvbGRCYXNlX0NvbW1lbnQpOw0KKwkJCWlmIChiYXNlX0NvbW1lbnQgIT0gb2xkQmFzZV9Db21tZW50KSB7DQorCQkJCWlmIChlTm90aWZpY2F0aW9uUmVxdWlyZWQoKSkNCisJCQkJCWVOb3RpZnkobmV3IEVOb3RpZmljYXRpb25JbXBsKHRoaXMsIE5vdGlmaWNhdGlvbi5SRVNPTFZFLCBNb2RlbGVsZW1lbnRzUGFja2FnZS5FTEVNRU5UX0dST1VQX19CQVNFX0NPTU1FTlQsIG9sZEJhc2VfQ29tbWVudCwgYmFzZV9Db21tZW50KSk7DQorCQkJfQ0KKwkJfQ0KKwkJcmV0dXJuIGJhc2VfQ29tbWVudDsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBDb21tZW50IGJhc2ljR2V0QmFzZV9Db21tZW50KCkgew0KKwkJcmV0dXJuIGJhc2VfQ29tbWVudDsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyB2b2lkIHNldEJhc2VfQ29tbWVudChDb21tZW50IG5ld0Jhc2VfQ29tbWVudCkgew0KKwkJQ29tbWVudCBvbGRCYXNlX0NvbW1lbnQgPSBiYXNlX0NvbW1lbnQ7DQorCQliYXNlX0NvbW1lbnQgPSBuZXdCYXNlX0NvbW1lbnQ7DQorCQlpZiAoZU5vdGlmaWNhdGlvblJlcXVpcmVkKCkpDQorCQkJZU5vdGlmeShuZXcgRU5vdGlmaWNhdGlvbkltcGwodGhpcywgTm90aWZpY2F0aW9uLlNFVCwgTW9kZWxlbGVtZW50c1BhY2thZ2UuRUxFTUVOVF9HUk9VUF9fQkFTRV9DT01NRU5ULCBvbGRCYXNlX0NvbW1lbnQsIGJhc2VfQ29tbWVudCkpOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIFN0cmluZyBnZXROYW1lKCkgew0KKwkJcmV0dXJuIG5hbWU7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgdm9pZCBzZXROYW1lKFN0cmluZyBuZXdOYW1lKSB7DQorCQlTdHJpbmcgb2xkTmFtZSA9IG5hbWU7DQorCQluYW1lID0gbmV3TmFtZTsNCisJCWlmIChlTm90aWZpY2F0aW9uUmVxdWlyZWQoKSkNCisJCQllTm90aWZ5KG5ldyBFTm90aWZpY2F0aW9uSW1wbCh0aGlzLCBOb3RpZmljYXRpb24uU0VULCBNb2RlbGVsZW1lbnRzUGFja2FnZS5FTEVNRU5UX0dST1VQX19OQU1FLCBvbGROYW1lLCBuYW1lKSk7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgU3RyaW5nIGdldENyaXRlcmlvbigpIHsNCisJCS8vIFRPRE86IGltcGxlbWVudCB0aGlzIG1ldGhvZCB0byByZXR1cm4gdGhlICdDcml0ZXJpb24nIGF0dHJpYnV0ZQ0KKwkJLy8gRW5zdXJlIHRoYXQgeW91IHJlbW92ZSBAZ2VuZXJhdGVkIG9yIG1hcmsgaXQgQGdlbmVyYXRlZCBOT1QNCisJCXRocm93IG5ldyBVbnN1cHBvcnRlZE9wZXJhdGlvbkV4Y2VwdGlvbigpOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIHZvaWQgc2V0Q3JpdGVyaW9uKFN0cmluZyBuZXdDcml0ZXJpb24pIHsNCisJCS8vIFRPRE86IGltcGxlbWVudCB0aGlzIG1ldGhvZCB0byBzZXQgdGhlICdDcml0ZXJpb24nIGF0dHJpYnV0ZQ0KKwkJLy8gRW5zdXJlIHRoYXQgeW91IHJlbW92ZSBAZ2VuZXJhdGVkIG9yIG1hcmsgaXQgQGdlbmVyYXRlZCBOT1QNCisJCXRocm93IG5ldyBVbnN1cHBvcnRlZE9wZXJhdGlvbkV4Y2VwdGlvbigpOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIGludCBnZXRTaXplKCkgew0KKwkJLy8gVE9ETzogaW1wbGVtZW50IHRoaXMgbWV0aG9kIHRvIHJldHVybiB0aGUgJ1NpemUnIGF0dHJpYnV0ZQ0KKwkJLy8gRW5zdXJlIHRoYXQgeW91IHJlbW92ZSBAZ2VuZXJhdGVkIG9yIG1hcmsgaXQgQGdlbmVyYXRlZCBOT1QNCisJCXRocm93IG5ldyBVbnN1cHBvcnRlZE9wZXJhdGlvbkV4Y2VwdGlvbigpOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIHZvaWQgc2V0U2l6ZShpbnQgbmV3U2l6ZSkgew0KKwkJLy8gVE9ETzogaW1wbGVtZW50IHRoaXMgbWV0aG9kIHRvIHNldCB0aGUgJ1NpemUnIGF0dHJpYnV0ZQ0KKwkJLy8gRW5zdXJlIHRoYXQgeW91IHJlbW92ZSBAZ2VuZXJhdGVkIG9yIG1hcmsgaXQgQGdlbmVyYXRlZCBOT1QNCisJCXRocm93IG5ldyBVbnN1cHBvcnRlZE9wZXJhdGlvbkV4Y2VwdGlvbigpOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIEVMaXN0PEVsZW1lbnQ+IGdldE1lbWJlcigpIHsNCisJCS8vIFRPRE86IGltcGxlbWVudCB0aGlzIG1ldGhvZCB0byByZXR1cm4gdGhlICdNZW1iZXInIHJlZmVyZW5jZSBsaXN0DQorCQkvLyBFbnN1cmUgdGhhdCB5b3UgcmVtb3ZlIEBnZW5lcmF0ZWQgb3IgbWFyayBpdCBAZ2VuZXJhdGVkIE5PVA0KKwkJdGhyb3cgbmV3IFVuc3VwcG9ydGVkT3BlcmF0aW9uRXhjZXB0aW9uKCk7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgRUxpc3Q8RWxlbWVudD4gZ2V0T3JkZXJlZE1lbWJlcigpIHsNCisJCWlmIChvcmRlcmVkTWVtYmVyID09IG51bGwpIHsNCisJCQlvcmRlcmVkTWVtYmVyID0gbmV3IEVPYmplY3RSZXNvbHZpbmdFTGlzdDxFbGVtZW50PihFbGVtZW50LmNsYXNzLCB0aGlzLCBNb2RlbGVsZW1lbnRzUGFja2FnZS5FTEVNRU5UX0dST1VQX19PUkRFUkVEX01FTUJFUik7DQorCQl9DQorCQlyZXR1cm4gb3JkZXJlZE1lbWJlcjsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBTdHJpbmcgY3JpdGVyaW9uKCkgew0KKwkJLy8gVE9ETzogaW1wbGVtZW50IHRoaXMgbWV0aG9kDQorCQkvLyBFbnN1cmUgdGhhdCB5b3UgcmVtb3ZlIEBnZW5lcmF0ZWQgb3IgbWFyayBpdCBAZ2VuZXJhdGVkIE5PVA0KKwkJdGhyb3cgbmV3IFVuc3VwcG9ydGVkT3BlcmF0aW9uRXhjZXB0aW9uKCk7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgaW50IHNpemUoKSB7DQorCQkvLyBUT0RPOiBpbXBsZW1lbnQgdGhpcyBtZXRob2QNCisJCS8vIEVuc3VyZSB0aGF0IHlvdSByZW1vdmUgQGdlbmVyYXRlZCBvciBtYXJrIGl0IEBnZW5lcmF0ZWQgTk9UDQorCQl0aHJvdyBuZXcgVW5zdXBwb3J0ZWRPcGVyYXRpb25FeGNlcHRpb24oKTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBFTGlzdDxFbGVtZW50PiBtZW1iZXIoKSB7DQorCQkvLyBUT0RPOiBpbXBsZW1lbnQgdGhpcyBtZXRob2QNCisJCS8vIEVuc3VyZSB0aGF0IHlvdSByZW1vdmUgQGdlbmVyYXRlZCBvciBtYXJrIGl0IEBnZW5lcmF0ZWQgTk9UDQorCQl0aHJvdyBuZXcgVW5zdXBwb3J0ZWRPcGVyYXRpb25FeGNlcHRpb24oKTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBFTGlzdDxFbGVtZW50R3JvdXA+IGFsbEdyb3VwcyhFbGVtZW50IGUpIHsNCisJCS8vIFRPRE86IGltcGxlbWVudCB0aGlzIG1ldGhvZA0KKwkJLy8gRW5zdXJlIHRoYXQgeW91IHJlbW92ZSBAZ2VuZXJhdGVkIG9yIG1hcmsgaXQgQGdlbmVyYXRlZCBOT1QNCisJCXRocm93IG5ldyBVbnN1cHBvcnRlZE9wZXJhdGlvbkV4Y2VwdGlvbigpOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXB1YmxpYyBPYmplY3QgZUdldChpbnQgZmVhdHVyZUlELCBib29sZWFuIHJlc29sdmUsIGJvb2xlYW4gY29yZVR5cGUpIHsNCisJCXN3aXRjaCAoZmVhdHVyZUlEKSB7DQorCQkJY2FzZSBNb2RlbGVsZW1lbnRzUGFja2FnZS5FTEVNRU5UX0dST1VQX19CQVNFX0NPTU1FTlQ6DQorCQkJCWlmIChyZXNvbHZlKSByZXR1cm4gZ2V0QmFzZV9Db21tZW50KCk7DQorCQkJCXJldHVybiBiYXNpY0dldEJhc2VfQ29tbWVudCgpOw0KKwkJCWNhc2UgTW9kZWxlbGVtZW50c1BhY2thZ2UuRUxFTUVOVF9HUk9VUF9fTkFNRToNCisJCQkJcmV0dXJuIGdldE5hbWUoKTsNCisJCQljYXNlIE1vZGVsZWxlbWVudHNQYWNrYWdlLkVMRU1FTlRfR1JPVVBfX0NSSVRFUklPTjoNCisJCQkJcmV0dXJuIGdldENyaXRlcmlvbigpOw0KKwkJCWNhc2UgTW9kZWxlbGVtZW50c1BhY2thZ2UuRUxFTUVOVF9HUk9VUF9fU0laRToNCisJCQkJcmV0dXJuIGdldFNpemUoKTsNCisJCQljYXNlIE1vZGVsZWxlbWVudHNQYWNrYWdlLkVMRU1FTlRfR1JPVVBfX01FTUJFUjoNCisJCQkJcmV0dXJuIGdldE1lbWJlcigpOw0KKwkJCWNhc2UgTW9kZWxlbGVtZW50c1BhY2thZ2UuRUxFTUVOVF9HUk9VUF9fT1JERVJFRF9NRU1CRVI6DQorCQkJCXJldHVybiBnZXRPcmRlcmVkTWVtYmVyKCk7DQorCQl9DQorCQlyZXR1cm4gc3VwZXIuZUdldChmZWF0dXJlSUQsIHJlc29sdmUsIGNvcmVUeXBlKTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBTdXBwcmVzc1dhcm5pbmdzKCJ1bmNoZWNrZWQiKQ0KKwlAT3ZlcnJpZGUNCisJcHVibGljIHZvaWQgZVNldChpbnQgZmVhdHVyZUlELCBPYmplY3QgbmV3VmFsdWUpIHsNCisJCXN3aXRjaCAoZmVhdHVyZUlEKSB7DQorCQkJY2FzZSBNb2RlbGVsZW1lbnRzUGFja2FnZS5FTEVNRU5UX0dST1VQX19CQVNFX0NPTU1FTlQ6DQorCQkJCXNldEJhc2VfQ29tbWVudCgoQ29tbWVudCluZXdWYWx1ZSk7DQorCQkJCXJldHVybjsNCisJCQljYXNlIE1vZGVsZWxlbWVudHNQYWNrYWdlLkVMRU1FTlRfR1JPVVBfX05BTUU6DQorCQkJCXNldE5hbWUoKFN0cmluZyluZXdWYWx1ZSk7DQorCQkJCXJldHVybjsNCisJCQljYXNlIE1vZGVsZWxlbWVudHNQYWNrYWdlLkVMRU1FTlRfR1JPVVBfX0NSSVRFUklPTjoNCisJCQkJc2V0Q3JpdGVyaW9uKChTdHJpbmcpbmV3VmFsdWUpOw0KKwkJCQlyZXR1cm47DQorCQkJY2FzZSBNb2RlbGVsZW1lbnRzUGFja2FnZS5FTEVNRU5UX0dST1VQX19TSVpFOg0KKwkJCQlzZXRTaXplKChJbnRlZ2VyKW5ld1ZhbHVlKTsNCisJCQkJcmV0dXJuOw0KKwkJCWNhc2UgTW9kZWxlbGVtZW50c1BhY2thZ2UuRUxFTUVOVF9HUk9VUF9fTUVNQkVSOg0KKwkJCQlnZXRNZW1iZXIoKS5jbGVhcigpOw0KKwkJCQlnZXRNZW1iZXIoKS5hZGRBbGwoKENvbGxlY3Rpb248PyBleHRlbmRzIEVsZW1lbnQ+KW5ld1ZhbHVlKTsNCisJCQkJcmV0dXJuOw0KKwkJCWNhc2UgTW9kZWxlbGVtZW50c1BhY2thZ2UuRUxFTUVOVF9HUk9VUF9fT1JERVJFRF9NRU1CRVI6DQorCQkJCWdldE9yZGVyZWRNZW1iZXIoKS5jbGVhcigpOw0KKwkJCQlnZXRPcmRlcmVkTWVtYmVyKCkuYWRkQWxsKChDb2xsZWN0aW9uPD8gZXh0ZW5kcyBFbGVtZW50PiluZXdWYWx1ZSk7DQorCQkJCXJldHVybjsNCisJCX0NCisJCXN1cGVyLmVTZXQoZmVhdHVyZUlELCBuZXdWYWx1ZSk7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIHZvaWQgZVVuc2V0KGludCBmZWF0dXJlSUQpIHsNCisJCXN3aXRjaCAoZmVhdHVyZUlEKSB7DQorCQkJY2FzZSBNb2RlbGVsZW1lbnRzUGFja2FnZS5FTEVNRU5UX0dST1VQX19CQVNFX0NPTU1FTlQ6DQorCQkJCXNldEJhc2VfQ29tbWVudCgoQ29tbWVudCludWxsKTsNCisJCQkJcmV0dXJuOw0KKwkJCWNhc2UgTW9kZWxlbGVtZW50c1BhY2thZ2UuRUxFTUVOVF9HUk9VUF9fTkFNRToNCisJCQkJc2V0TmFtZShOQU1FX0VERUZBVUxUKTsNCisJCQkJcmV0dXJuOw0KKwkJCWNhc2UgTW9kZWxlbGVtZW50c1BhY2thZ2UuRUxFTUVOVF9HUk9VUF9fQ1JJVEVSSU9OOg0KKwkJCQlzZXRDcml0ZXJpb24oQ1JJVEVSSU9OX0VERUZBVUxUKTsNCisJCQkJcmV0dXJuOw0KKwkJCWNhc2UgTW9kZWxlbGVtZW50c1BhY2thZ2UuRUxFTUVOVF9HUk9VUF9fU0laRToNCisJCQkJc2V0U2l6ZShTSVpFX0VERUZBVUxUKTsNCisJCQkJcmV0dXJuOw0KKwkJCWNhc2UgTW9kZWxlbGVtZW50c1BhY2thZ2UuRUxFTUVOVF9HUk9VUF9fTUVNQkVSOg0KKwkJCQlnZXRNZW1iZXIoKS5jbGVhcigpOw0KKwkJCQlyZXR1cm47DQorCQkJY2FzZSBNb2RlbGVsZW1lbnRzUGFja2FnZS5FTEVNRU5UX0dST1VQX19PUkRFUkVEX01FTUJFUjoNCisJCQkJZ2V0T3JkZXJlZE1lbWJlcigpLmNsZWFyKCk7DQorCQkJCXJldHVybjsNCisJCX0NCisJCXN1cGVyLmVVbnNldChmZWF0dXJlSUQpOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXB1YmxpYyBib29sZWFuIGVJc1NldChpbnQgZmVhdHVyZUlEKSB7DQorCQlzd2l0Y2ggKGZlYXR1cmVJRCkgew0KKwkJCWNhc2UgTW9kZWxlbGVtZW50c1BhY2thZ2UuRUxFTUVOVF9HUk9VUF9fQkFTRV9DT01NRU5UOg0KKwkJCQlyZXR1cm4gYmFzZV9Db21tZW50ICE9IG51bGw7DQorCQkJY2FzZSBNb2RlbGVsZW1lbnRzUGFja2FnZS5FTEVNRU5UX0dST1VQX19OQU1FOg0KKwkJCQlyZXR1cm4gTkFNRV9FREVGQVVMVCA9PSBudWxsID8gbmFtZSAhPSBudWxsIDogIU5BTUVfRURFRkFVTFQuZXF1YWxzKG5hbWUpOw0KKwkJCWNhc2UgTW9kZWxlbGVtZW50c1BhY2thZ2UuRUxFTUVOVF9HUk9VUF9fQ1JJVEVSSU9OOg0KKwkJCQlyZXR1cm4gQ1JJVEVSSU9OX0VERUZBVUxUID09IG51bGwgPyBnZXRDcml0ZXJpb24oKSAhPSBudWxsIDogIUNSSVRFUklPTl9FREVGQVVMVC5lcXVhbHMoZ2V0Q3JpdGVyaW9uKCkpOw0KKwkJCWNhc2UgTW9kZWxlbGVtZW50c1BhY2thZ2UuRUxFTUVOVF9HUk9VUF9fU0laRToNCisJCQkJcmV0dXJuIGdldFNpemUoKSAhPSBTSVpFX0VERUZBVUxUOw0KKwkJCWNhc2UgTW9kZWxlbGVtZW50c1BhY2thZ2UuRUxFTUVOVF9HUk9VUF9fTUVNQkVSOg0KKwkJCQlyZXR1cm4gIWdldE1lbWJlcigpLmlzRW1wdHkoKTsNCisJCQljYXNlIE1vZGVsZWxlbWVudHNQYWNrYWdlLkVMRU1FTlRfR1JPVVBfX09SREVSRURfTUVNQkVSOg0KKwkJCQlyZXR1cm4gb3JkZXJlZE1lbWJlciAhPSBudWxsICYmICFvcmRlcmVkTWVtYmVyLmlzRW1wdHkoKTsNCisJCX0NCisJCXJldHVybiBzdXBlci5lSXNTZXQoZmVhdHVyZUlEKTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgT2JqZWN0IGVJbnZva2UoaW50IG9wZXJhdGlvbklELCBFTGlzdDw/PiBhcmd1bWVudHMpIHRocm93cyBJbnZvY2F0aW9uVGFyZ2V0RXhjZXB0aW9uIHsNCisJCXN3aXRjaCAob3BlcmF0aW9uSUQpIHsNCisJCQljYXNlIE1vZGVsZWxlbWVudHNQYWNrYWdlLkVMRU1FTlRfR1JPVVBfX19DUklURVJJT046DQorCQkJCXJldHVybiBjcml0ZXJpb24oKTsNCisJCQljYXNlIE1vZGVsZWxlbWVudHNQYWNrYWdlLkVMRU1FTlRfR1JPVVBfX19TSVpFOg0KKwkJCQlyZXR1cm4gc2l6ZSgpOw0KKwkJCWNhc2UgTW9kZWxlbGVtZW50c1BhY2thZ2UuRUxFTUVOVF9HUk9VUF9fX01FTUJFUjoNCisJCQkJcmV0dXJuIG1lbWJlcigpOw0KKwkJCWNhc2UgTW9kZWxlbGVtZW50c1BhY2thZ2UuRUxFTUVOVF9HUk9VUF9fX0FMTF9HUk9VUFNfX0VMRU1FTlQ6DQorCQkJCXJldHVybiBhbGxHcm91cHMoKEVsZW1lbnQpYXJndW1lbnRzLmdldCgwKSk7DQorCQl9DQorCQlyZXR1cm4gc3VwZXIuZUludm9rZShvcGVyYXRpb25JRCwgYXJndW1lbnRzKTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgU3RyaW5nIHRvU3RyaW5nKCkgew0KKwkJaWYgKGVJc1Byb3h5KCkpIHJldHVybiBzdXBlci50b1N0cmluZygpOw0KKw0KKwkJU3RyaW5nQnVmZmVyIHJlc3VsdCA9IG5ldyBTdHJpbmdCdWZmZXIoc3VwZXIudG9TdHJpbmcoKSk7DQorCQlyZXN1bHQuYXBwZW5kKCIgKG5hbWU6ICIpOyAvLyROT04tTkxTLTEkDQorCQlyZXN1bHQuYXBwZW5kKG5hbWUpOw0KKwkJcmVzdWx0LmFwcGVuZCgnKScpOw0KKwkJcmV0dXJuIHJlc3VsdC50b1N0cmluZygpOw0KKwl9DQorDQorfSAvL0VsZW1lbnRHcm91cEltcGwNCmRpZmYgLS1naXQgYS9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9tb2RlbGVsZW1lbnRzL2ludGVybmFsL2ltcGwvRXhwb3NlSW1wbC5qYXZhIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvbW9kZWxlbGVtZW50cy9pbnRlcm5hbC9pbXBsL0V4cG9zZUltcGwuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNzNlNThlCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvbW9kZWxlbGVtZW50cy9pbnRlcm5hbC9pbXBsL0V4cG9zZUltcGwuamF2YQpAQCAtMCwwICsxLDE2NCBAQAorLyoqDQorICogQ29weXJpZ2h0IChjKSAyMDE1IENFQSBMSVNULg0KKyAqIA0KKyAqICBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQorICogIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KKyAqICB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KKyAqICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqLw0KK3BhY2thZ2Ugb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0Lm1vZGVsZWxlbWVudHMuaW50ZXJuYWwuaW1wbDsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi5ub3RpZnkuTm90aWZpY2F0aW9uOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRUNsYXNzOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuSW50ZXJuYWxFT2JqZWN0Ow0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuaW1wbC5FTm90aWZpY2F0aW9uSW1wbDsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLmltcGwuTWluaW1hbEVPYmplY3RJbXBsOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQubW9kZWxlbGVtZW50cy5FeHBvc2U7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5tb2RlbGVsZW1lbnRzLk1vZGVsZWxlbWVudHNQYWNrYWdlOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS51bWwyLnVtbC5EZXBlbmRlbmN5Ow0KKw0KKy8qKg0KKyAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorICogQW4gaW1wbGVtZW50YXRpb24gb2YgdGhlIG1vZGVsIG9iamVjdCAnPGVtPjxiPkV4cG9zZTwvYj48L2VtPicuDQorICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorICogPHA+DQorICogVGhlIGZvbGxvd2luZyBmZWF0dXJlcyBhcmUgaW1wbGVtZW50ZWQ6DQorICogPHVsPg0KKyAqICAgPGxpPntAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQubW9kZWxlbGVtZW50cy5pbnRlcm5hbC5pbXBsLkV4cG9zZUltcGwjZ2V0QmFzZV9EZXBlbmRlbmN5IDxlbT5CYXNlIERlcGVuZGVuY3k8L2VtPn08L2xpPg0KKyAqIDwvdWw+DQorICogPC9wPg0KKyAqDQorICogQGdlbmVyYXRlZA0KKyAqLw0KK3B1YmxpYyBjbGFzcyBFeHBvc2VJbXBsIGV4dGVuZHMgTWluaW1hbEVPYmplY3RJbXBsLkNvbnRhaW5lciBpbXBsZW1lbnRzIEV4cG9zZSB7DQorCS8qKg0KKwkgKiBUaGUgY2FjaGVkIHZhbHVlIG9mIHRoZSAne0BsaW5rICNnZXRCYXNlX0RlcGVuZGVuY3koKSA8ZW0+QmFzZSBEZXBlbmRlbmN5PC9lbT59JyByZWZlcmVuY2UuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAc2VlICNnZXRCYXNlX0RlcGVuZGVuY3koKQ0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqIEBvcmRlcmVkDQorCSAqLw0KKwlwcm90ZWN0ZWQgRGVwZW5kZW5jeSBiYXNlX0RlcGVuZGVuY3k7DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHJvdGVjdGVkIEV4cG9zZUltcGwoKSB7DQorCQlzdXBlcigpOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXByb3RlY3RlZCBFQ2xhc3MgZVN0YXRpY0NsYXNzKCkgew0KKwkJcmV0dXJuIE1vZGVsZWxlbWVudHNQYWNrYWdlLkxpdGVyYWxzLkVYUE9TRTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBEZXBlbmRlbmN5IGdldEJhc2VfRGVwZW5kZW5jeSgpIHsNCisJCWlmIChiYXNlX0RlcGVuZGVuY3kgIT0gbnVsbCAmJiBiYXNlX0RlcGVuZGVuY3kuZUlzUHJveHkoKSkgew0KKwkJCUludGVybmFsRU9iamVjdCBvbGRCYXNlX0RlcGVuZGVuY3kgPSAoSW50ZXJuYWxFT2JqZWN0KWJhc2VfRGVwZW5kZW5jeTsNCisJCQliYXNlX0RlcGVuZGVuY3kgPSAoRGVwZW5kZW5jeSllUmVzb2x2ZVByb3h5KG9sZEJhc2VfRGVwZW5kZW5jeSk7DQorCQkJaWYgKGJhc2VfRGVwZW5kZW5jeSAhPSBvbGRCYXNlX0RlcGVuZGVuY3kpIHsNCisJCQkJaWYgKGVOb3RpZmljYXRpb25SZXF1aXJlZCgpKQ0KKwkJCQkJZU5vdGlmeShuZXcgRU5vdGlmaWNhdGlvbkltcGwodGhpcywgTm90aWZpY2F0aW9uLlJFU09MVkUsIE1vZGVsZWxlbWVudHNQYWNrYWdlLkVYUE9TRV9fQkFTRV9ERVBFTkRFTkNZLCBvbGRCYXNlX0RlcGVuZGVuY3ksIGJhc2VfRGVwZW5kZW5jeSkpOw0KKwkJCX0NCisJCX0NCisJCXJldHVybiBiYXNlX0RlcGVuZGVuY3k7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgRGVwZW5kZW5jeSBiYXNpY0dldEJhc2VfRGVwZW5kZW5jeSgpIHsNCisJCXJldHVybiBiYXNlX0RlcGVuZGVuY3k7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgdm9pZCBzZXRCYXNlX0RlcGVuZGVuY3koRGVwZW5kZW5jeSBuZXdCYXNlX0RlcGVuZGVuY3kpIHsNCisJCURlcGVuZGVuY3kgb2xkQmFzZV9EZXBlbmRlbmN5ID0gYmFzZV9EZXBlbmRlbmN5Ow0KKwkJYmFzZV9EZXBlbmRlbmN5ID0gbmV3QmFzZV9EZXBlbmRlbmN5Ow0KKwkJaWYgKGVOb3RpZmljYXRpb25SZXF1aXJlZCgpKQ0KKwkJCWVOb3RpZnkobmV3IEVOb3RpZmljYXRpb25JbXBsKHRoaXMsIE5vdGlmaWNhdGlvbi5TRVQsIE1vZGVsZWxlbWVudHNQYWNrYWdlLkVYUE9TRV9fQkFTRV9ERVBFTkRFTkNZLCBvbGRCYXNlX0RlcGVuZGVuY3ksIGJhc2VfRGVwZW5kZW5jeSkpOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXB1YmxpYyBPYmplY3QgZUdldChpbnQgZmVhdHVyZUlELCBib29sZWFuIHJlc29sdmUsIGJvb2xlYW4gY29yZVR5cGUpIHsNCisJCXN3aXRjaCAoZmVhdHVyZUlEKSB7DQorCQkJY2FzZSBNb2RlbGVsZW1lbnRzUGFja2FnZS5FWFBPU0VfX0JBU0VfREVQRU5ERU5DWToNCisJCQkJaWYgKHJlc29sdmUpIHJldHVybiBnZXRCYXNlX0RlcGVuZGVuY3koKTsNCisJCQkJcmV0dXJuIGJhc2ljR2V0QmFzZV9EZXBlbmRlbmN5KCk7DQorCQl9DQorCQlyZXR1cm4gc3VwZXIuZUdldChmZWF0dXJlSUQsIHJlc29sdmUsIGNvcmVUeXBlKTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgdm9pZCBlU2V0KGludCBmZWF0dXJlSUQsIE9iamVjdCBuZXdWYWx1ZSkgew0KKwkJc3dpdGNoIChmZWF0dXJlSUQpIHsNCisJCQljYXNlIE1vZGVsZWxlbWVudHNQYWNrYWdlLkVYUE9TRV9fQkFTRV9ERVBFTkRFTkNZOg0KKwkJCQlzZXRCYXNlX0RlcGVuZGVuY3koKERlcGVuZGVuY3kpbmV3VmFsdWUpOw0KKwkJCQlyZXR1cm47DQorCQl9DQorCQlzdXBlci5lU2V0KGZlYXR1cmVJRCwgbmV3VmFsdWUpOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXB1YmxpYyB2b2lkIGVVbnNldChpbnQgZmVhdHVyZUlEKSB7DQorCQlzd2l0Y2ggKGZlYXR1cmVJRCkgew0KKwkJCWNhc2UgTW9kZWxlbGVtZW50c1BhY2thZ2UuRVhQT1NFX19CQVNFX0RFUEVOREVOQ1k6DQorCQkJCXNldEJhc2VfRGVwZW5kZW5jeSgoRGVwZW5kZW5jeSludWxsKTsNCisJCQkJcmV0dXJuOw0KKwkJfQ0KKwkJc3VwZXIuZVVuc2V0KGZlYXR1cmVJRCk7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIGJvb2xlYW4gZUlzU2V0KGludCBmZWF0dXJlSUQpIHsNCisJCXN3aXRjaCAoZmVhdHVyZUlEKSB7DQorCQkJY2FzZSBNb2RlbGVsZW1lbnRzUGFja2FnZS5FWFBPU0VfX0JBU0VfREVQRU5ERU5DWToNCisJCQkJcmV0dXJuIGJhc2VfRGVwZW5kZW5jeSAhPSBudWxsOw0KKwkJfQ0KKwkJcmV0dXJuIHN1cGVyLmVJc1NldChmZWF0dXJlSUQpOw0KKwl9DQorDQorfSAvL0V4cG9zZUltcGwNCmRpZmYgLS1naXQgYS9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9tb2RlbGVsZW1lbnRzL2ludGVybmFsL2ltcGwvTW9kZWxlbGVtZW50c0ZhY3RvcnlJbXBsLmphdmEgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9tb2RlbGVsZW1lbnRzL2ludGVybmFsL2ltcGwvTW9kZWxlbGVtZW50c0ZhY3RvcnlJbXBsLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzkxZTg5MwotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L21vZGVsZWxlbWVudHMvaW50ZXJuYWwvaW1wbC9Nb2RlbGVsZW1lbnRzRmFjdG9yeUltcGwuamF2YQpAQCAtMCwwICsxLDE3OCBAQAorLyoqDQorICogQ29weXJpZ2h0IChjKSAyMDE1IENFQSBMSVNULg0KKyAqIA0KKyAqICBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQorICogIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KKyAqICB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KKyAqICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqLw0KK3BhY2thZ2Ugb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0Lm1vZGVsZWxlbWVudHMuaW50ZXJuYWwuaW1wbDsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVDbGFzczsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVPYmplY3Q7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FUGFja2FnZTsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLmltcGwuRUZhY3RvcnlJbXBsOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUucGx1Z2luLkVjb3JlUGx1Z2luOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQubW9kZWxlbGVtZW50cy4qOw0KKw0KKy8qKg0KKyAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorICogQW4gaW1wbGVtZW50YXRpb24gb2YgdGhlIG1vZGVsIDxiPkZhY3Rvcnk8L2I+Lg0KKyAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKyAqIEBnZW5lcmF0ZWQNCisgKi8NCitwdWJsaWMgY2xhc3MgTW9kZWxlbGVtZW50c0ZhY3RvcnlJbXBsIGV4dGVuZHMgRUZhY3RvcnlJbXBsIGltcGxlbWVudHMgTW9kZWxlbGVtZW50c0ZhY3Rvcnkgew0KKwkvKioNCisJICogQ3JlYXRlcyB0aGUgZGVmYXVsdCBmYWN0b3J5IGltcGxlbWVudGF0aW9uLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIHN0YXRpYyBNb2RlbGVsZW1lbnRzRmFjdG9yeSBpbml0KCkgew0KKwkJdHJ5IHsNCisJCQlNb2RlbGVsZW1lbnRzRmFjdG9yeSB0aGVNb2RlbGVsZW1lbnRzRmFjdG9yeSA9IChNb2RlbGVsZW1lbnRzRmFjdG9yeSlFUGFja2FnZS5SZWdpc3RyeS5JTlNUQU5DRS5nZXRFRmFjdG9yeShNb2RlbGVsZW1lbnRzUGFja2FnZS5lTlNfVVJJKTsNCisJCQlpZiAodGhlTW9kZWxlbGVtZW50c0ZhY3RvcnkgIT0gbnVsbCkgew0KKwkJCQlyZXR1cm4gdGhlTW9kZWxlbGVtZW50c0ZhY3Rvcnk7DQorCQkJfQ0KKwkJfQ0KKwkJY2F0Y2ggKEV4Y2VwdGlvbiBleGNlcHRpb24pIHsNCisJCQlFY29yZVBsdWdpbi5JTlNUQU5DRS5sb2coZXhjZXB0aW9uKTsNCisJCX0NCisJCXJldHVybiBuZXcgTW9kZWxlbGVtZW50c0ZhY3RvcnlJbXBsKCk7DQorCX0NCisNCisJLyoqDQorCSAqIENyZWF0ZXMgYW4gaW5zdGFuY2Ugb2YgdGhlIGZhY3RvcnkuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgTW9kZWxlbGVtZW50c0ZhY3RvcnlJbXBsKCkgew0KKwkJc3VwZXIoKTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgRU9iamVjdCBjcmVhdGUoRUNsYXNzIGVDbGFzcykgew0KKwkJc3dpdGNoIChlQ2xhc3MuZ2V0Q2xhc3NpZmllcklEKCkpIHsNCisJCQljYXNlIE1vZGVsZWxlbWVudHNQYWNrYWdlLlJBVElPTkFMRTogcmV0dXJuIGNyZWF0ZVJhdGlvbmFsZSgpOw0KKwkJCWNhc2UgTW9kZWxlbGVtZW50c1BhY2thZ2UuVklFVzogcmV0dXJuIGNyZWF0ZVZpZXcoKTsNCisJCQljYXNlIE1vZGVsZWxlbWVudHNQYWNrYWdlLlZJRVdfUE9JTlQ6IHJldHVybiBjcmVhdGVWaWV3UG9pbnQoKTsNCisJCQljYXNlIE1vZGVsZWxlbWVudHNQYWNrYWdlLlNUQUtFSE9MREVSOiByZXR1cm4gY3JlYXRlU3Rha2Vob2xkZXIoKTsNCisJCQljYXNlIE1vZGVsZWxlbWVudHNQYWNrYWdlLkNPTkZPUk06IHJldHVybiBjcmVhdGVDb25mb3JtKCk7DQorCQkJY2FzZSBNb2RlbGVsZW1lbnRzUGFja2FnZS5QUk9CTEVNOiByZXR1cm4gY3JlYXRlUHJvYmxlbSgpOw0KKwkJCWNhc2UgTW9kZWxlbGVtZW50c1BhY2thZ2UuRVhQT1NFOiByZXR1cm4gY3JlYXRlRXhwb3NlKCk7DQorCQkJY2FzZSBNb2RlbGVsZW1lbnRzUGFja2FnZS5FTEVNRU5UX0dST1VQOiByZXR1cm4gY3JlYXRlRWxlbWVudEdyb3VwKCk7DQorCQkJZGVmYXVsdDoNCisJCQkJdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiVGhlIGNsYXNzICciICsgZUNsYXNzLmdldE5hbWUoKSArICInIGlzIG5vdCBhIHZhbGlkIGNsYXNzaWZpZXIiKTsgLy8kTk9OLU5MUy0xJCAvLyROT04tTkxTLTIkDQorCQl9DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgUmF0aW9uYWxlIGNyZWF0ZVJhdGlvbmFsZSgpIHsNCisJCVJhdGlvbmFsZUltcGwgcmF0aW9uYWxlID0gbmV3IFJhdGlvbmFsZUltcGwoKTsNCisJCXJldHVybiByYXRpb25hbGU7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgVmlldyBjcmVhdGVWaWV3KCkgew0KKwkJVmlld0ltcGwgdmlldyA9IG5ldyBWaWV3SW1wbCgpOw0KKwkJcmV0dXJuIHZpZXc7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgVmlld1BvaW50IGNyZWF0ZVZpZXdQb2ludCgpIHsNCisJCVZpZXdQb2ludEltcGwgdmlld1BvaW50ID0gbmV3IFZpZXdQb2ludEltcGwoKTsNCisJCXJldHVybiB2aWV3UG9pbnQ7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgU3Rha2Vob2xkZXIgY3JlYXRlU3Rha2Vob2xkZXIoKSB7DQorCQlTdGFrZWhvbGRlckltcGwgc3Rha2Vob2xkZXIgPSBuZXcgU3Rha2Vob2xkZXJJbXBsKCk7DQorCQlyZXR1cm4gc3Rha2Vob2xkZXI7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgQ29uZm9ybSBjcmVhdGVDb25mb3JtKCkgew0KKwkJQ29uZm9ybUltcGwgY29uZm9ybSA9IG5ldyBDb25mb3JtSW1wbCgpOw0KKwkJcmV0dXJuIGNvbmZvcm07DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgUHJvYmxlbSBjcmVhdGVQcm9ibGVtKCkgew0KKwkJUHJvYmxlbUltcGwgcHJvYmxlbSA9IG5ldyBQcm9ibGVtSW1wbCgpOw0KKwkJcmV0dXJuIHByb2JsZW07DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgRXhwb3NlIGNyZWF0ZUV4cG9zZSgpIHsNCisJCUV4cG9zZUltcGwgZXhwb3NlID0gbmV3IEV4cG9zZUltcGwoKTsNCisJCXJldHVybiBleHBvc2U7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgRWxlbWVudEdyb3VwIGNyZWF0ZUVsZW1lbnRHcm91cCgpIHsNCisJCUVsZW1lbnRHcm91cEltcGwgZWxlbWVudEdyb3VwID0gbmV3IEVsZW1lbnRHcm91cEltcGwoKTsNCisJCXJldHVybiBlbGVtZW50R3JvdXA7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgTW9kZWxlbGVtZW50c1BhY2thZ2UgZ2V0TW9kZWxlbGVtZW50c1BhY2thZ2UoKSB7DQorCQlyZXR1cm4gKE1vZGVsZWxlbWVudHNQYWNrYWdlKWdldEVQYWNrYWdlKCk7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZGVwcmVjYXRlZA0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlARGVwcmVjYXRlZA0KKwlwdWJsaWMgc3RhdGljIE1vZGVsZWxlbWVudHNQYWNrYWdlIGdldFBhY2thZ2UoKSB7DQorCQlyZXR1cm4gTW9kZWxlbGVtZW50c1BhY2thZ2UuZUlOU1RBTkNFOw0KKwl9DQorDQorfSAvL01vZGVsZWxlbWVudHNGYWN0b3J5SW1wbA0KZGlmZiAtLWdpdCBhL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L21vZGVsZWxlbWVudHMvaW50ZXJuYWwvaW1wbC9Nb2RlbGVsZW1lbnRzUGFja2FnZUltcGwuamF2YSBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L21vZGVsZWxlbWVudHMvaW50ZXJuYWwvaW1wbC9Nb2RlbGVsZW1lbnRzUGFja2FnZUltcGwuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMzUyMTRkCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvbW9kZWxlbGVtZW50cy9pbnRlcm5hbC9pbXBsL01vZGVsZWxlbWVudHNQYWNrYWdlSW1wbC5qYXZhCkBAIC0wLDAgKzEsNzQwIEBACisvKioNCisgKiBDb3B5cmlnaHQgKGMpIDIwMTUgQ0VBIExJU1QuDQorICogDQorICogIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCisgKiAgYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQorICogIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQorICogIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICovDQorcGFja2FnZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQubW9kZWxlbGVtZW50cy5pbnRlcm5hbC5pbXBsOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRUF0dHJpYnV0ZTsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVDbGFzczsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVPcGVyYXRpb247DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FUGFja2FnZTsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVSZWZlcmVuY2U7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5pbXBsLkVQYWNrYWdlSW1wbDsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmFjdGl2aXRpZXMuQWN0aXZpdGllc1BhY2thZ2U7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5hY3Rpdml0aWVzLmludGVybmFsLmltcGwuQWN0aXZpdGllc1BhY2thZ2VJbXBsOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYWxsb2NhdGlvbnMuQWxsb2NhdGlvbnNQYWNrYWdlOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYWxsb2NhdGlvbnMuaW50ZXJuYWwuaW1wbC5BbGxvY2F0aW9uc1BhY2thZ2VJbXBsOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYmxvY2tzLkJsb2Nrc1BhY2thZ2U7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5ibG9ja3MuaW50ZXJuYWwuaW1wbC5CbG9ja3NQYWNrYWdlSW1wbDsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmNvbnN0cmFpbnRibG9ja3MuQ29uc3RyYWludGJsb2Nrc1BhY2thZ2U7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5jb25zdHJhaW50YmxvY2tzLmludGVybmFsLmltcGwuQ29uc3RyYWludGJsb2Nrc1BhY2thZ2VJbXBsOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGVwcmVjYXRlZGVsZW1lbnRzLkRlcHJlY2F0ZWRlbGVtZW50c1BhY2thZ2U7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kZXByZWNhdGVkZWxlbWVudHMuaW50ZXJuYWwuaW1wbC5EZXByZWNhdGVkZWxlbWVudHNQYWNrYWdlSW1wbDsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0Lm1vZGVsZWxlbWVudHMuQ29uZm9ybTsNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0Lm1vZGVsZWxlbWVudHMuRWxlbWVudEdyb3VwOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQubW9kZWxlbGVtZW50cy5FeHBvc2U7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5tb2RlbGVsZW1lbnRzLk1vZGVsZWxlbWVudHNGYWN0b3J5Ow0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQubW9kZWxlbGVtZW50cy5Nb2RlbGVsZW1lbnRzUGFja2FnZTsNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0Lm1vZGVsZWxlbWVudHMuUHJvYmxlbTsNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0Lm1vZGVsZWxlbWVudHMuUmF0aW9uYWxlOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQubW9kZWxlbGVtZW50cy5TdGFrZWhvbGRlcjsNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0Lm1vZGVsZWxlbWVudHMuVmlldzsNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0Lm1vZGVsZWxlbWVudHMuVmlld1BvaW50Ow0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucG9ydGFuZGZsb3dzLlBvcnRhbmRmbG93c1BhY2thZ2U7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5wb3J0YW5kZmxvd3MuaW50ZXJuYWwuaW1wbC5Qb3J0YW5kZmxvd3NQYWNrYWdlSW1wbDsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnJlcXVpcmVtZW50cy5SZXF1aXJlbWVudHNQYWNrYWdlOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucmVxdWlyZW1lbnRzLmludGVybmFsLmltcGwuUmVxdWlyZW1lbnRzUGFja2FnZUltcGw7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLnVtbDIudHlwZXMuVHlwZXNQYWNrYWdlOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS51bWwyLnVtbC5VTUxQYWNrYWdlOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS51bWwyLnVtbC5wcm9maWxlLnN0YW5kYXJkLlN0YW5kYXJkUGFja2FnZTsNCisNCisvKioNCisgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKyAqIEFuIGltcGxlbWVudGF0aW9uIG9mIHRoZSBtb2RlbCA8Yj5QYWNrYWdlPC9iPi4NCisgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisgKiBAZ2VuZXJhdGVkDQorICovDQorcHVibGljIGNsYXNzIE1vZGVsZWxlbWVudHNQYWNrYWdlSW1wbCBleHRlbmRzIEVQYWNrYWdlSW1wbCBpbXBsZW1lbnRzIE1vZGVsZWxlbWVudHNQYWNrYWdlIHsNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwcml2YXRlIEVDbGFzcyByYXRpb25hbGVFQ2xhc3MgPSBudWxsOw0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXByaXZhdGUgRUNsYXNzIHZpZXdFQ2xhc3MgPSBudWxsOw0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXByaXZhdGUgRUNsYXNzIHZpZXdQb2ludEVDbGFzcyA9IG51bGw7DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHJpdmF0ZSBFQ2xhc3Mgc3Rha2Vob2xkZXJFQ2xhc3MgPSBudWxsOw0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXByaXZhdGUgRUNsYXNzIGNvbmZvcm1FQ2xhc3MgPSBudWxsOw0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXByaXZhdGUgRUNsYXNzIHByb2JsZW1FQ2xhc3MgPSBudWxsOw0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXByaXZhdGUgRUNsYXNzIGV4cG9zZUVDbGFzcyA9IG51bGw7DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHJpdmF0ZSBFQ2xhc3MgZWxlbWVudEdyb3VwRUNsYXNzID0gbnVsbDsNCisNCisJLyoqDQorCSAqIENyZWF0ZXMgYW4gaW5zdGFuY2Ugb2YgdGhlIG1vZGVsIDxiPlBhY2thZ2U8L2I+LCByZWdpc3RlcmVkIHdpdGgNCisJICoge0BsaW5rIG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FUGFja2FnZS5SZWdpc3RyeSBFUGFja2FnZS5SZWdpc3RyeX0gYnkgdGhlIHBhY2thZ2UNCisJICogcGFja2FnZSBVUkkgdmFsdWUuDQorCSAqIDxwPk5vdGU6IHRoZSBjb3JyZWN0IHdheSB0byBjcmVhdGUgdGhlIHBhY2thZ2UgaXMgdmlhIHRoZSBzdGF0aWMNCisJICogZmFjdG9yeSBtZXRob2Qge0BsaW5rICNpbml0IGluaXQoKX0sIHdoaWNoIGFsc28gcGVyZm9ybXMNCisJICogaW5pdGlhbGl6YXRpb24gb2YgdGhlIHBhY2thZ2UsIG9yIHJldHVybnMgdGhlIHJlZ2lzdGVyZWQgcGFja2FnZSwNCisJICogaWYgb25lIGFscmVhZHkgZXhpc3RzLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHNlZSBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRVBhY2thZ2UuUmVnaXN0cnkNCisJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQubW9kZWxlbGVtZW50cy5Nb2RlbGVsZW1lbnRzUGFja2FnZSNlTlNfVVJJDQorCSAqIEBzZWUgI2luaXQoKQ0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwcml2YXRlIE1vZGVsZWxlbWVudHNQYWNrYWdlSW1wbCgpIHsNCisJCXN1cGVyKGVOU19VUkksIE1vZGVsZWxlbWVudHNGYWN0b3J5LmVJTlNUQU5DRSk7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwcml2YXRlIHN0YXRpYyBib29sZWFuIGlzSW5pdGVkID0gZmFsc2U7DQorDQorCS8qKg0KKwkgKiBDcmVhdGVzLCByZWdpc3RlcnMsIGFuZCBpbml0aWFsaXplcyB0aGUgPGI+UGFja2FnZTwvYj4gZm9yIHRoaXMgbW9kZWwsIGFuZCBmb3IgYW55IG90aGVycyB1cG9uIHdoaWNoIGl0IGRlcGVuZHMuDQorCSAqIA0KKwkgKiA8cD5UaGlzIG1ldGhvZCBpcyB1c2VkIHRvIGluaXRpYWxpemUge0BsaW5rIE1vZGVsZWxlbWVudHNQYWNrYWdlI2VJTlNUQU5DRX0gd2hlbiB0aGF0IGZpZWxkIGlzIGFjY2Vzc2VkLg0KKwkgKiBDbGllbnRzIHNob3VsZCBub3QgaW52b2tlIGl0IGRpcmVjdGx5LiBJbnN0ZWFkLCB0aGV5IHNob3VsZCBzaW1wbHkgYWNjZXNzIHRoYXQgZmllbGQgdG8gb2J0YWluIHRoZSBwYWNrYWdlLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHNlZSAjZU5TX1VSSQ0KKwkgKiBAc2VlICNjcmVhdGVQYWNrYWdlQ29udGVudHMoKQ0KKwkgKiBAc2VlICNpbml0aWFsaXplUGFja2FnZUNvbnRlbnRzKCkNCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIHN0YXRpYyBNb2RlbGVsZW1lbnRzUGFja2FnZSBpbml0KCkgew0KKwkJaWYgKGlzSW5pdGVkKSByZXR1cm4gKE1vZGVsZWxlbWVudHNQYWNrYWdlKUVQYWNrYWdlLlJlZ2lzdHJ5LklOU1RBTkNFLmdldEVQYWNrYWdlKE1vZGVsZWxlbWVudHNQYWNrYWdlLmVOU19VUkkpOw0KKw0KKwkJLy8gT2J0YWluIG9yIGNyZWF0ZSBhbmQgcmVnaXN0ZXIgcGFja2FnZQ0KKwkJTW9kZWxlbGVtZW50c1BhY2thZ2VJbXBsIHRoZU1vZGVsZWxlbWVudHNQYWNrYWdlID0gKE1vZGVsZWxlbWVudHNQYWNrYWdlSW1wbCkoRVBhY2thZ2UuUmVnaXN0cnkuSU5TVEFOQ0UuZ2V0KGVOU19VUkkpIGluc3RhbmNlb2YgTW9kZWxlbGVtZW50c1BhY2thZ2VJbXBsID8gRVBhY2thZ2UuUmVnaXN0cnkuSU5TVEFOQ0UuZ2V0KGVOU19VUkkpIDogbmV3IE1vZGVsZWxlbWVudHNQYWNrYWdlSW1wbCgpKTsNCisNCisJCWlzSW5pdGVkID0gdHJ1ZTsNCisNCisJCS8vIEluaXRpYWxpemUgc2ltcGxlIGRlcGVuZGVuY2llcw0KKwkJU3RhbmRhcmRQYWNrYWdlLmVJTlNUQU5DRS5lQ2xhc3MoKTsNCisNCisJCS8vIE9idGFpbiBvciBjcmVhdGUgYW5kIHJlZ2lzdGVyIGludGVyZGVwZW5kZW5jaWVzDQorCQlCbG9ja3NQYWNrYWdlSW1wbCB0aGVCbG9ja3NQYWNrYWdlID0gKEJsb2Nrc1BhY2thZ2VJbXBsKShFUGFja2FnZS5SZWdpc3RyeS5JTlNUQU5DRS5nZXRFUGFja2FnZShCbG9ja3NQYWNrYWdlLmVOU19VUkkpIGluc3RhbmNlb2YgQmxvY2tzUGFja2FnZUltcGwgPyBFUGFja2FnZS5SZWdpc3RyeS5JTlNUQU5DRS5nZXRFUGFja2FnZShCbG9ja3NQYWNrYWdlLmVOU19VUkkpIDogQmxvY2tzUGFja2FnZS5lSU5TVEFOQ0UpOw0KKwkJUG9ydGFuZGZsb3dzUGFja2FnZUltcGwgdGhlUG9ydGFuZGZsb3dzUGFja2FnZSA9IChQb3J0YW5kZmxvd3NQYWNrYWdlSW1wbCkoRVBhY2thZ2UuUmVnaXN0cnkuSU5TVEFOQ0UuZ2V0RVBhY2thZ2UoUG9ydGFuZGZsb3dzUGFja2FnZS5lTlNfVVJJKSBpbnN0YW5jZW9mIFBvcnRhbmRmbG93c1BhY2thZ2VJbXBsID8gRVBhY2thZ2UuUmVnaXN0cnkuSU5TVEFOQ0UuZ2V0RVBhY2thZ2UoUG9ydGFuZGZsb3dzUGFja2FnZS5lTlNfVVJJKSA6IFBvcnRhbmRmbG93c1BhY2thZ2UuZUlOU1RBTkNFKTsNCisJCUFjdGl2aXRpZXNQYWNrYWdlSW1wbCB0aGVBY3Rpdml0aWVzUGFja2FnZSA9IChBY3Rpdml0aWVzUGFja2FnZUltcGwpKEVQYWNrYWdlLlJlZ2lzdHJ5LklOU1RBTkNFLmdldEVQYWNrYWdlKEFjdGl2aXRpZXNQYWNrYWdlLmVOU19VUkkpIGluc3RhbmNlb2YgQWN0aXZpdGllc1BhY2thZ2VJbXBsID8gRVBhY2thZ2UuUmVnaXN0cnkuSU5TVEFOQ0UuZ2V0RVBhY2thZ2UoQWN0aXZpdGllc1BhY2thZ2UuZU5TX1VSSSkgOiBBY3Rpdml0aWVzUGFja2FnZS5lSU5TVEFOQ0UpOw0KKwkJQ29uc3RyYWludGJsb2Nrc1BhY2thZ2VJbXBsIHRoZUNvbnN0cmFpbnRibG9ja3NQYWNrYWdlID0gKENvbnN0cmFpbnRibG9ja3NQYWNrYWdlSW1wbCkoRVBhY2thZ2UuUmVnaXN0cnkuSU5TVEFOQ0UuZ2V0RVBhY2thZ2UoQ29uc3RyYWludGJsb2Nrc1BhY2thZ2UuZU5TX1VSSSkgaW5zdGFuY2VvZiBDb25zdHJhaW50YmxvY2tzUGFja2FnZUltcGwgPyBFUGFja2FnZS5SZWdpc3RyeS5JTlNUQU5DRS5nZXRFUGFja2FnZShDb25zdHJhaW50YmxvY2tzUGFja2FnZS5lTlNfVVJJKSA6IENvbnN0cmFpbnRibG9ja3NQYWNrYWdlLmVJTlNUQU5DRSk7DQorCQlBbGxvY2F0aW9uc1BhY2thZ2VJbXBsIHRoZUFsbG9jYXRpb25zUGFja2FnZSA9IChBbGxvY2F0aW9uc1BhY2thZ2VJbXBsKShFUGFja2FnZS5SZWdpc3RyeS5JTlNUQU5DRS5nZXRFUGFja2FnZShBbGxvY2F0aW9uc1BhY2thZ2UuZU5TX1VSSSkgaW5zdGFuY2VvZiBBbGxvY2F0aW9uc1BhY2thZ2VJbXBsID8gRVBhY2thZ2UuUmVnaXN0cnkuSU5TVEFOQ0UuZ2V0RVBhY2thZ2UoQWxsb2NhdGlvbnNQYWNrYWdlLmVOU19VUkkpIDogQWxsb2NhdGlvbnNQYWNrYWdlLmVJTlNUQU5DRSk7DQorCQlSZXF1aXJlbWVudHNQYWNrYWdlSW1wbCB0aGVSZXF1aXJlbWVudHNQYWNrYWdlID0gKFJlcXVpcmVtZW50c1BhY2thZ2VJbXBsKShFUGFja2FnZS5SZWdpc3RyeS5JTlNUQU5DRS5nZXRFUGFja2FnZShSZXF1aXJlbWVudHNQYWNrYWdlLmVOU19VUkkpIGluc3RhbmNlb2YgUmVxdWlyZW1lbnRzUGFja2FnZUltcGwgPyBFUGFja2FnZS5SZWdpc3RyeS5JTlNUQU5DRS5nZXRFUGFja2FnZShSZXF1aXJlbWVudHNQYWNrYWdlLmVOU19VUkkpIDogUmVxdWlyZW1lbnRzUGFja2FnZS5lSU5TVEFOQ0UpOw0KKwkJRGVwcmVjYXRlZGVsZW1lbnRzUGFja2FnZUltcGwgdGhlRGVwcmVjYXRlZGVsZW1lbnRzUGFja2FnZSA9IChEZXByZWNhdGVkZWxlbWVudHNQYWNrYWdlSW1wbCkoRVBhY2thZ2UuUmVnaXN0cnkuSU5TVEFOQ0UuZ2V0RVBhY2thZ2UoRGVwcmVjYXRlZGVsZW1lbnRzUGFja2FnZS5lTlNfVVJJKSBpbnN0YW5jZW9mIERlcHJlY2F0ZWRlbGVtZW50c1BhY2thZ2VJbXBsID8gRVBhY2thZ2UuUmVnaXN0cnkuSU5TVEFOQ0UuZ2V0RVBhY2thZ2UoRGVwcmVjYXRlZGVsZW1lbnRzUGFja2FnZS5lTlNfVVJJKSA6IERlcHJlY2F0ZWRlbGVtZW50c1BhY2thZ2UuZUlOU1RBTkNFKTsNCisNCisJCS8vIENyZWF0ZSBwYWNrYWdlIG1ldGEtZGF0YSBvYmplY3RzDQorCQl0aGVNb2RlbGVsZW1lbnRzUGFja2FnZS5jcmVhdGVQYWNrYWdlQ29udGVudHMoKTsNCisJCXRoZUJsb2Nrc1BhY2thZ2UuY3JlYXRlUGFja2FnZUNvbnRlbnRzKCk7DQorCQl0aGVQb3J0YW5kZmxvd3NQYWNrYWdlLmNyZWF0ZVBhY2thZ2VDb250ZW50cygpOw0KKwkJdGhlQWN0aXZpdGllc1BhY2thZ2UuY3JlYXRlUGFja2FnZUNvbnRlbnRzKCk7DQorCQl0aGVDb25zdHJhaW50YmxvY2tzUGFja2FnZS5jcmVhdGVQYWNrYWdlQ29udGVudHMoKTsNCisJCXRoZUFsbG9jYXRpb25zUGFja2FnZS5jcmVhdGVQYWNrYWdlQ29udGVudHMoKTsNCisJCXRoZVJlcXVpcmVtZW50c1BhY2thZ2UuY3JlYXRlUGFja2FnZUNvbnRlbnRzKCk7DQorCQl0aGVEZXByZWNhdGVkZWxlbWVudHNQYWNrYWdlLmNyZWF0ZVBhY2thZ2VDb250ZW50cygpOw0KKw0KKwkJLy8gSW5pdGlhbGl6ZSBjcmVhdGVkIG1ldGEtZGF0YQ0KKwkJdGhlTW9kZWxlbGVtZW50c1BhY2thZ2UuaW5pdGlhbGl6ZVBhY2thZ2VDb250ZW50cygpOw0KKwkJdGhlQmxvY2tzUGFja2FnZS5pbml0aWFsaXplUGFja2FnZUNvbnRlbnRzKCk7DQorCQl0aGVQb3J0YW5kZmxvd3NQYWNrYWdlLmluaXRpYWxpemVQYWNrYWdlQ29udGVudHMoKTsNCisJCXRoZUFjdGl2aXRpZXNQYWNrYWdlLmluaXRpYWxpemVQYWNrYWdlQ29udGVudHMoKTsNCisJCXRoZUNvbnN0cmFpbnRibG9ja3NQYWNrYWdlLmluaXRpYWxpemVQYWNrYWdlQ29udGVudHMoKTsNCisJCXRoZUFsbG9jYXRpb25zUGFja2FnZS5pbml0aWFsaXplUGFja2FnZUNvbnRlbnRzKCk7DQorCQl0aGVSZXF1aXJlbWVudHNQYWNrYWdlLmluaXRpYWxpemVQYWNrYWdlQ29udGVudHMoKTsNCisJCXRoZURlcHJlY2F0ZWRlbGVtZW50c1BhY2thZ2UuaW5pdGlhbGl6ZVBhY2thZ2VDb250ZW50cygpOw0KKw0KKwkJLy8gTWFyayBtZXRhLWRhdGEgdG8gaW5kaWNhdGUgaXQgY2FuJ3QgYmUgY2hhbmdlZA0KKwkJdGhlTW9kZWxlbGVtZW50c1BhY2thZ2UuZnJlZXplKCk7DQorDQorICANCisJCS8vIFVwZGF0ZSB0aGUgcmVnaXN0cnkgYW5kIHJldHVybiB0aGUgcGFja2FnZQ0KKwkJRVBhY2thZ2UuUmVnaXN0cnkuSU5TVEFOQ0UucHV0KE1vZGVsZWxlbWVudHNQYWNrYWdlLmVOU19VUkksIHRoZU1vZGVsZWxlbWVudHNQYWNrYWdlKTsNCisJCXJldHVybiB0aGVNb2RlbGVsZW1lbnRzUGFja2FnZTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBFQ2xhc3MgZ2V0UmF0aW9uYWxlKCkgew0KKwkJcmV0dXJuIHJhdGlvbmFsZUVDbGFzczsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBFUmVmZXJlbmNlIGdldFJhdGlvbmFsZV9CYXNlX0NvbW1lbnQoKSB7DQorCQlyZXR1cm4gKEVSZWZlcmVuY2UpcmF0aW9uYWxlRUNsYXNzLmdldEVTdHJ1Y3R1cmFsRmVhdHVyZXMoKS5nZXQoMCk7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgRUNsYXNzIGdldFZpZXcoKSB7DQorCQlyZXR1cm4gdmlld0VDbGFzczsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBFUmVmZXJlbmNlIGdldFZpZXdfQmFzZV9QYWNrYWdlKCkgew0KKwkJcmV0dXJuIChFUmVmZXJlbmNlKXZpZXdFQ2xhc3MuZ2V0RVN0cnVjdHVyYWxGZWF0dXJlcygpLmdldCgwKTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBFUmVmZXJlbmNlIGdldFZpZXdfVmlld1BvaW50KCkgew0KKwkJcmV0dXJuIChFUmVmZXJlbmNlKXZpZXdFQ2xhc3MuZ2V0RVN0cnVjdHVyYWxGZWF0dXJlcygpLmdldCgxKTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBFUmVmZXJlbmNlIGdldFZpZXdfU3Rha2Vob2xkZXIoKSB7DQorCQlyZXR1cm4gKEVSZWZlcmVuY2Updmlld0VDbGFzcy5nZXRFU3RydWN0dXJhbEZlYXR1cmVzKCkuZ2V0KDIpOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIEVSZWZlcmVuY2UgZ2V0Vmlld19CYXNlX0NsYXNzKCkgew0KKwkJcmV0dXJuIChFUmVmZXJlbmNlKXZpZXdFQ2xhc3MuZ2V0RVN0cnVjdHVyYWxGZWF0dXJlcygpLmdldCgzKTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBFQ2xhc3MgZ2V0Vmlld1BvaW50KCkgew0KKwkJcmV0dXJuIHZpZXdQb2ludEVDbGFzczsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBFUmVmZXJlbmNlIGdldFZpZXdQb2ludF9CYXNlX0NsYXNzKCkgew0KKwkJcmV0dXJuIChFUmVmZXJlbmNlKXZpZXdQb2ludEVDbGFzcy5nZXRFU3RydWN0dXJhbEZlYXR1cmVzKCkuZ2V0KDApOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIEVSZWZlcmVuY2UgZ2V0Vmlld1BvaW50X1N0YWtlaG9sZGVyKCkgew0KKwkJcmV0dXJuIChFUmVmZXJlbmNlKXZpZXdQb2ludEVDbGFzcy5nZXRFU3RydWN0dXJhbEZlYXR1cmVzKCkuZ2V0KDEpOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIEVBdHRyaWJ1dGUgZ2V0Vmlld1BvaW50X1B1cnBvc2UoKSB7DQorCQlyZXR1cm4gKEVBdHRyaWJ1dGUpdmlld1BvaW50RUNsYXNzLmdldEVTdHJ1Y3R1cmFsRmVhdHVyZXMoKS5nZXQoMik7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgRVJlZmVyZW5jZSBnZXRWaWV3UG9pbnRfQ29uY2Vybkxpc3QoKSB7DQorCQlyZXR1cm4gKEVSZWZlcmVuY2Updmlld1BvaW50RUNsYXNzLmdldEVTdHJ1Y3R1cmFsRmVhdHVyZXMoKS5nZXQoMyk7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgRUF0dHJpYnV0ZSBnZXRWaWV3UG9pbnRfTGFuZ3VhZ2UoKSB7DQorCQlyZXR1cm4gKEVBdHRyaWJ1dGUpdmlld1BvaW50RUNsYXNzLmdldEVTdHJ1Y3R1cmFsRmVhdHVyZXMoKS5nZXQoNCk7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgRVJlZmVyZW5jZSBnZXRWaWV3UG9pbnRfTWV0aG9kKCkgew0KKwkJcmV0dXJuIChFUmVmZXJlbmNlKXZpZXdQb2ludEVDbGFzcy5nZXRFU3RydWN0dXJhbEZlYXR1cmVzKCkuZ2V0KDUpOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIEVBdHRyaWJ1dGUgZ2V0Vmlld1BvaW50X1ByZXNlbnRhdGlvbigpIHsNCisJCXJldHVybiAoRUF0dHJpYnV0ZSl2aWV3UG9pbnRFQ2xhc3MuZ2V0RVN0cnVjdHVyYWxGZWF0dXJlcygpLmdldCg2KTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBFQXR0cmlidXRlIGdldFZpZXdQb2ludF9Db25jZXJuKCkgew0KKwkJcmV0dXJuIChFQXR0cmlidXRlKXZpZXdQb2ludEVDbGFzcy5nZXRFU3RydWN0dXJhbEZlYXR1cmVzKCkuZ2V0KDcpOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIEVDbGFzcyBnZXRTdGFrZWhvbGRlcigpIHsNCisJCXJldHVybiBzdGFrZWhvbGRlckVDbGFzczsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBFUmVmZXJlbmNlIGdldFN0YWtlaG9sZGVyX0Jhc2VfQ2xhc3NpZmllcigpIHsNCisJCXJldHVybiAoRVJlZmVyZW5jZSlzdGFrZWhvbGRlckVDbGFzcy5nZXRFU3RydWN0dXJhbEZlYXR1cmVzKCkuZ2V0KDApOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIEVSZWZlcmVuY2UgZ2V0U3Rha2Vob2xkZXJfQ29uY2VybigpIHsNCisJCXJldHVybiAoRVJlZmVyZW5jZSlzdGFrZWhvbGRlckVDbGFzcy5nZXRFU3RydWN0dXJhbEZlYXR1cmVzKCkuZ2V0KDEpOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIEVSZWZlcmVuY2UgZ2V0U3Rha2Vob2xkZXJfQ29uY2Vybkxpc3QoKSB7DQorCQlyZXR1cm4gKEVSZWZlcmVuY2Upc3Rha2Vob2xkZXJFQ2xhc3MuZ2V0RVN0cnVjdHVyYWxGZWF0dXJlcygpLmdldCgyKTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBFQ2xhc3MgZ2V0Q29uZm9ybSgpIHsNCisJCXJldHVybiBjb25mb3JtRUNsYXNzOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIEVSZWZlcmVuY2UgZ2V0Q29uZm9ybV9CYXNlX0RlcGVuZGVuY3koKSB7DQorCQlyZXR1cm4gKEVSZWZlcmVuY2UpY29uZm9ybUVDbGFzcy5nZXRFU3RydWN0dXJhbEZlYXR1cmVzKCkuZ2V0KDApOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIEVSZWZlcmVuY2UgZ2V0Q29uZm9ybV9CYXNlX0dlbmVyYWxpemF0aW9uKCkgew0KKwkJcmV0dXJuIChFUmVmZXJlbmNlKWNvbmZvcm1FQ2xhc3MuZ2V0RVN0cnVjdHVyYWxGZWF0dXJlcygpLmdldCgxKTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBFQ2xhc3MgZ2V0UHJvYmxlbSgpIHsNCisJCXJldHVybiBwcm9ibGVtRUNsYXNzOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIEVSZWZlcmVuY2UgZ2V0UHJvYmxlbV9CYXNlX0NvbW1lbnQoKSB7DQorCQlyZXR1cm4gKEVSZWZlcmVuY2UpcHJvYmxlbUVDbGFzcy5nZXRFU3RydWN0dXJhbEZlYXR1cmVzKCkuZ2V0KDApOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIEVDbGFzcyBnZXRFeHBvc2UoKSB7DQorCQlyZXR1cm4gZXhwb3NlRUNsYXNzOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIEVSZWZlcmVuY2UgZ2V0RXhwb3NlX0Jhc2VfRGVwZW5kZW5jeSgpIHsNCisJCXJldHVybiAoRVJlZmVyZW5jZSlleHBvc2VFQ2xhc3MuZ2V0RVN0cnVjdHVyYWxGZWF0dXJlcygpLmdldCgwKTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBFQ2xhc3MgZ2V0RWxlbWVudEdyb3VwKCkgew0KKwkJcmV0dXJuIGVsZW1lbnRHcm91cEVDbGFzczsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBFUmVmZXJlbmNlIGdldEVsZW1lbnRHcm91cF9CYXNlX0NvbW1lbnQoKSB7DQorCQlyZXR1cm4gKEVSZWZlcmVuY2UpZWxlbWVudEdyb3VwRUNsYXNzLmdldEVTdHJ1Y3R1cmFsRmVhdHVyZXMoKS5nZXQoMCk7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgRUF0dHJpYnV0ZSBnZXRFbGVtZW50R3JvdXBfTmFtZSgpIHsNCisJCXJldHVybiAoRUF0dHJpYnV0ZSllbGVtZW50R3JvdXBFQ2xhc3MuZ2V0RVN0cnVjdHVyYWxGZWF0dXJlcygpLmdldCgxKTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBFQXR0cmlidXRlIGdldEVsZW1lbnRHcm91cF9Dcml0ZXJpb24oKSB7DQorCQlyZXR1cm4gKEVBdHRyaWJ1dGUpZWxlbWVudEdyb3VwRUNsYXNzLmdldEVTdHJ1Y3R1cmFsRmVhdHVyZXMoKS5nZXQoMik7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgRUF0dHJpYnV0ZSBnZXRFbGVtZW50R3JvdXBfU2l6ZSgpIHsNCisJCXJldHVybiAoRUF0dHJpYnV0ZSllbGVtZW50R3JvdXBFQ2xhc3MuZ2V0RVN0cnVjdHVyYWxGZWF0dXJlcygpLmdldCgzKTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBFUmVmZXJlbmNlIGdldEVsZW1lbnRHcm91cF9NZW1iZXIoKSB7DQorCQlyZXR1cm4gKEVSZWZlcmVuY2UpZWxlbWVudEdyb3VwRUNsYXNzLmdldEVTdHJ1Y3R1cmFsRmVhdHVyZXMoKS5nZXQoNCk7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgRVJlZmVyZW5jZSBnZXRFbGVtZW50R3JvdXBfT3JkZXJlZE1lbWJlcigpIHsNCisJCXJldHVybiAoRVJlZmVyZW5jZSllbGVtZW50R3JvdXBFQ2xhc3MuZ2V0RVN0cnVjdHVyYWxGZWF0dXJlcygpLmdldCg1KTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBFT3BlcmF0aW9uIGdldEVsZW1lbnRHcm91cF9fQ3JpdGVyaW9uKCkgew0KKwkJcmV0dXJuIGVsZW1lbnRHcm91cEVDbGFzcy5nZXRFT3BlcmF0aW9ucygpLmdldCgwKTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBFT3BlcmF0aW9uIGdldEVsZW1lbnRHcm91cF9fU2l6ZSgpIHsNCisJCXJldHVybiBlbGVtZW50R3JvdXBFQ2xhc3MuZ2V0RU9wZXJhdGlvbnMoKS5nZXQoMSk7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgRU9wZXJhdGlvbiBnZXRFbGVtZW50R3JvdXBfX01lbWJlcigpIHsNCisJCXJldHVybiBlbGVtZW50R3JvdXBFQ2xhc3MuZ2V0RU9wZXJhdGlvbnMoKS5nZXQoMik7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgRU9wZXJhdGlvbiBnZXRFbGVtZW50R3JvdXBfX0FsbEdyb3Vwc19fRWxlbWVudCgpIHsNCisJCXJldHVybiBlbGVtZW50R3JvdXBFQ2xhc3MuZ2V0RU9wZXJhdGlvbnMoKS5nZXQoMyk7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgTW9kZWxlbGVtZW50c0ZhY3RvcnkgZ2V0TW9kZWxlbGVtZW50c0ZhY3RvcnkoKSB7DQorCQlyZXR1cm4gKE1vZGVsZWxlbWVudHNGYWN0b3J5KWdldEVGYWN0b3J5SW5zdGFuY2UoKTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXByaXZhdGUgYm9vbGVhbiBpc0NyZWF0ZWQgPSBmYWxzZTsNCisNCisJLyoqDQorCSAqIENyZWF0ZXMgdGhlIG1ldGEtbW9kZWwgb2JqZWN0cyBmb3IgdGhlIHBhY2thZ2UuICBUaGlzIG1ldGhvZCBpcw0KKwkgKiBndWFyZGVkIHRvIGhhdmUgbm8gYWZmZWN0IG9uIGFueSBpbnZvY2F0aW9uIGJ1dCBpdHMgZmlyc3QuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgdm9pZCBjcmVhdGVQYWNrYWdlQ29udGVudHMoKSB7DQorCQlpZiAoaXNDcmVhdGVkKSByZXR1cm47DQorCQlpc0NyZWF0ZWQgPSB0cnVlOw0KKw0KKwkJLy8gQ3JlYXRlIGNsYXNzZXMgYW5kIHRoZWlyIGZlYXR1cmVzDQorCQlyYXRpb25hbGVFQ2xhc3MgPSBjcmVhdGVFQ2xhc3MoUkFUSU9OQUxFKTsNCisJCWNyZWF0ZUVSZWZlcmVuY2UocmF0aW9uYWxlRUNsYXNzLCBSQVRJT05BTEVfX0JBU0VfQ09NTUVOVCk7DQorDQorCQl2aWV3RUNsYXNzID0gY3JlYXRlRUNsYXNzKFZJRVcpOw0KKwkJY3JlYXRlRVJlZmVyZW5jZSh2aWV3RUNsYXNzLCBWSUVXX19CQVNFX1BBQ0tBR0UpOw0KKwkJY3JlYXRlRVJlZmVyZW5jZSh2aWV3RUNsYXNzLCBWSUVXX19WSUVXX1BPSU5UKTsNCisJCWNyZWF0ZUVSZWZlcmVuY2Uodmlld0VDbGFzcywgVklFV19fU1RBS0VIT0xERVIpOw0KKwkJY3JlYXRlRVJlZmVyZW5jZSh2aWV3RUNsYXNzLCBWSUVXX19CQVNFX0NMQVNTKTsNCisNCisJCXZpZXdQb2ludEVDbGFzcyA9IGNyZWF0ZUVDbGFzcyhWSUVXX1BPSU5UKTsNCisJCWNyZWF0ZUVSZWZlcmVuY2Uodmlld1BvaW50RUNsYXNzLCBWSUVXX1BPSU5UX19CQVNFX0NMQVNTKTsNCisJCWNyZWF0ZUVSZWZlcmVuY2Uodmlld1BvaW50RUNsYXNzLCBWSUVXX1BPSU5UX19TVEFLRUhPTERFUik7DQorCQljcmVhdGVFQXR0cmlidXRlKHZpZXdQb2ludEVDbGFzcywgVklFV19QT0lOVF9fUFVSUE9TRSk7DQorCQljcmVhdGVFUmVmZXJlbmNlKHZpZXdQb2ludEVDbGFzcywgVklFV19QT0lOVF9fQ09OQ0VSTl9MSVNUKTsNCisJCWNyZWF0ZUVBdHRyaWJ1dGUodmlld1BvaW50RUNsYXNzLCBWSUVXX1BPSU5UX19MQU5HVUFHRSk7DQorCQljcmVhdGVFUmVmZXJlbmNlKHZpZXdQb2ludEVDbGFzcywgVklFV19QT0lOVF9fTUVUSE9EKTsNCisJCWNyZWF0ZUVBdHRyaWJ1dGUodmlld1BvaW50RUNsYXNzLCBWSUVXX1BPSU5UX19QUkVTRU5UQVRJT04pOw0KKwkJY3JlYXRlRUF0dHJpYnV0ZSh2aWV3UG9pbnRFQ2xhc3MsIFZJRVdfUE9JTlRfX0NPTkNFUk4pOw0KKw0KKwkJc3Rha2Vob2xkZXJFQ2xhc3MgPSBjcmVhdGVFQ2xhc3MoU1RBS0VIT0xERVIpOw0KKwkJY3JlYXRlRVJlZmVyZW5jZShzdGFrZWhvbGRlckVDbGFzcywgU1RBS0VIT0xERVJfX0JBU0VfQ0xBU1NJRklFUik7DQorCQljcmVhdGVFUmVmZXJlbmNlKHN0YWtlaG9sZGVyRUNsYXNzLCBTVEFLRUhPTERFUl9fQ09OQ0VSTik7DQorCQljcmVhdGVFUmVmZXJlbmNlKHN0YWtlaG9sZGVyRUNsYXNzLCBTVEFLRUhPTERFUl9fQ09OQ0VSTl9MSVNUKTsNCisNCisJCWNvbmZvcm1FQ2xhc3MgPSBjcmVhdGVFQ2xhc3MoQ09ORk9STSk7DQorCQljcmVhdGVFUmVmZXJlbmNlKGNvbmZvcm1FQ2xhc3MsIENPTkZPUk1fX0JBU0VfREVQRU5ERU5DWSk7DQorCQljcmVhdGVFUmVmZXJlbmNlKGNvbmZvcm1FQ2xhc3MsIENPTkZPUk1fX0JBU0VfR0VORVJBTElaQVRJT04pOw0KKw0KKwkJcHJvYmxlbUVDbGFzcyA9IGNyZWF0ZUVDbGFzcyhQUk9CTEVNKTsNCisJCWNyZWF0ZUVSZWZlcmVuY2UocHJvYmxlbUVDbGFzcywgUFJPQkxFTV9fQkFTRV9DT01NRU5UKTsNCisNCisJCWV4cG9zZUVDbGFzcyA9IGNyZWF0ZUVDbGFzcyhFWFBPU0UpOw0KKwkJY3JlYXRlRVJlZmVyZW5jZShleHBvc2VFQ2xhc3MsIEVYUE9TRV9fQkFTRV9ERVBFTkRFTkNZKTsNCisNCisJCWVsZW1lbnRHcm91cEVDbGFzcyA9IGNyZWF0ZUVDbGFzcyhFTEVNRU5UX0dST1VQKTsNCisJCWNyZWF0ZUVSZWZlcmVuY2UoZWxlbWVudEdyb3VwRUNsYXNzLCBFTEVNRU5UX0dST1VQX19CQVNFX0NPTU1FTlQpOw0KKwkJY3JlYXRlRUF0dHJpYnV0ZShlbGVtZW50R3JvdXBFQ2xhc3MsIEVMRU1FTlRfR1JPVVBfX05BTUUpOw0KKwkJY3JlYXRlRUF0dHJpYnV0ZShlbGVtZW50R3JvdXBFQ2xhc3MsIEVMRU1FTlRfR1JPVVBfX0NSSVRFUklPTik7DQorCQljcmVhdGVFQXR0cmlidXRlKGVsZW1lbnRHcm91cEVDbGFzcywgRUxFTUVOVF9HUk9VUF9fU0laRSk7DQorCQljcmVhdGVFUmVmZXJlbmNlKGVsZW1lbnRHcm91cEVDbGFzcywgRUxFTUVOVF9HUk9VUF9fTUVNQkVSKTsNCisJCWNyZWF0ZUVSZWZlcmVuY2UoZWxlbWVudEdyb3VwRUNsYXNzLCBFTEVNRU5UX0dST1VQX19PUkRFUkVEX01FTUJFUik7DQorCQljcmVhdGVFT3BlcmF0aW9uKGVsZW1lbnRHcm91cEVDbGFzcywgRUxFTUVOVF9HUk9VUF9fX0NSSVRFUklPTik7DQorCQljcmVhdGVFT3BlcmF0aW9uKGVsZW1lbnRHcm91cEVDbGFzcywgRUxFTUVOVF9HUk9VUF9fX1NJWkUpOw0KKwkJY3JlYXRlRU9wZXJhdGlvbihlbGVtZW50R3JvdXBFQ2xhc3MsIEVMRU1FTlRfR1JPVVBfX19NRU1CRVIpOw0KKwkJY3JlYXRlRU9wZXJhdGlvbihlbGVtZW50R3JvdXBFQ2xhc3MsIEVMRU1FTlRfR1JPVVBfX19BTExfR1JPVVBTX19FTEVNRU5UKTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXByaXZhdGUgYm9vbGVhbiBpc0luaXRpYWxpemVkID0gZmFsc2U7DQorDQorCS8qKg0KKwkgKiBDb21wbGV0ZSB0aGUgaW5pdGlhbGl6YXRpb24gb2YgdGhlIHBhY2thZ2UgYW5kIGl0cyBtZXRhLW1vZGVsLiAgVGhpcw0KKwkgKiBtZXRob2QgaXMgZ3VhcmRlZCB0byBoYXZlIG5vIGFmZmVjdCBvbiBhbnkgaW52b2NhdGlvbiBidXQgaXRzIGZpcnN0Lg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIHZvaWQgaW5pdGlhbGl6ZVBhY2thZ2VDb250ZW50cygpIHsNCisJCWlmIChpc0luaXRpYWxpemVkKSByZXR1cm47DQorCQlpc0luaXRpYWxpemVkID0gdHJ1ZTsNCisNCisJCS8vIEluaXRpYWxpemUgcGFja2FnZQ0KKwkJc2V0TmFtZShlTkFNRSk7DQorCQlzZXROc1ByZWZpeChlTlNfUFJFRklYKTsNCisJCXNldE5zVVJJKGVOU19VUkkpOw0KKw0KKwkJLy8gT2J0YWluIG90aGVyIGRlcGVuZGVudCBwYWNrYWdlcw0KKwkJVU1MUGFja2FnZSB0aGVVTUxQYWNrYWdlID0gKFVNTFBhY2thZ2UpRVBhY2thZ2UuUmVnaXN0cnkuSU5TVEFOQ0UuZ2V0RVBhY2thZ2UoVU1MUGFja2FnZS5lTlNfVVJJKTsNCisJCVR5cGVzUGFja2FnZSB0aGVUeXBlc1BhY2thZ2UgPSAoVHlwZXNQYWNrYWdlKUVQYWNrYWdlLlJlZ2lzdHJ5LklOU1RBTkNFLmdldEVQYWNrYWdlKFR5cGVzUGFja2FnZS5lTlNfVVJJKTsNCisNCisJCS8vIENyZWF0ZSB0eXBlIHBhcmFtZXRlcnMNCisNCisJCS8vIFNldCBib3VuZHMgZm9yIHR5cGUgcGFyYW1ldGVycw0KKw0KKwkJLy8gQWRkIHN1cGVydHlwZXMgdG8gY2xhc3Nlcw0KKw0KKwkJLy8gSW5pdGlhbGl6ZSBjbGFzc2VzLCBmZWF0dXJlcywgYW5kIG9wZXJhdGlvbnM7IGFkZCBwYXJhbWV0ZXJzDQorCQlpbml0RUNsYXNzKHJhdGlvbmFsZUVDbGFzcywgUmF0aW9uYWxlLmNsYXNzLCAiUmF0aW9uYWxlIiwgIUlTX0FCU1RSQUNULCAhSVNfSU5URVJGQUNFLCBJU19HRU5FUkFURURfSU5TVEFOQ0VfQ0xBU1MpOyAvLyROT04tTkxTLTEkDQorCQlpbml0RVJlZmVyZW5jZShnZXRSYXRpb25hbGVfQmFzZV9Db21tZW50KCksIHRoZVVNTFBhY2thZ2UuZ2V0Q29tbWVudCgpLCBudWxsLCAiYmFzZV9Db21tZW50IiwgbnVsbCwgMCwgMSwgUmF0aW9uYWxlLmNsYXNzLCAhSVNfVFJBTlNJRU5ULCAhSVNfVk9MQVRJTEUsIElTX0NIQU5HRUFCTEUsICFJU19DT01QT1NJVEUsIElTX1JFU09MVkVfUFJPWElFUywgIUlTX1VOU0VUVEFCTEUsIElTX1VOSVFVRSwgIUlTX0RFUklWRUQsICFJU19PUkRFUkVEKTsgLy8kTk9OLU5MUy0xJA0KKw0KKwkJaW5pdEVDbGFzcyh2aWV3RUNsYXNzLCBWaWV3LmNsYXNzLCAiVmlldyIsICFJU19BQlNUUkFDVCwgIUlTX0lOVEVSRkFDRSwgSVNfR0VORVJBVEVEX0lOU1RBTkNFX0NMQVNTKTsgLy8kTk9OLU5MUy0xJA0KKwkJaW5pdEVSZWZlcmVuY2UoZ2V0Vmlld19CYXNlX1BhY2thZ2UoKSwgdGhlVU1MUGFja2FnZS5nZXRQYWNrYWdlKCksIG51bGwsICJiYXNlX1BhY2thZ2UiLCBudWxsLCAwLCAxLCBWaWV3LmNsYXNzLCAhSVNfVFJBTlNJRU5ULCAhSVNfVk9MQVRJTEUsIElTX0NIQU5HRUFCTEUsICFJU19DT01QT1NJVEUsIElTX1JFU09MVkVfUFJPWElFUywgIUlTX1VOU0VUVEFCTEUsIElTX1VOSVFVRSwgIUlTX0RFUklWRUQsICFJU19PUkRFUkVEKTsgLy8kTk9OLU5MUy0xJA0KKwkJaW5pdEVSZWZlcmVuY2UoZ2V0Vmlld19WaWV3UG9pbnQoKSwgdGhpcy5nZXRWaWV3UG9pbnQoKSwgbnVsbCwgInZpZXdQb2ludCIsIG51bGwsIDEsIDEsIFZpZXcuY2xhc3MsIElTX1RSQU5TSUVOVCwgSVNfVk9MQVRJTEUsIElTX0NIQU5HRUFCTEUsICFJU19DT01QT1NJVEUsIElTX1JFU09MVkVfUFJPWElFUywgIUlTX1VOU0VUVEFCTEUsIElTX1VOSVFVRSwgSVNfREVSSVZFRCwgIUlTX09SREVSRUQpOyAvLyROT04tTkxTLTEkDQorCQlpbml0RVJlZmVyZW5jZShnZXRWaWV3X1N0YWtlaG9sZGVyKCksIHRoaXMuZ2V0U3Rha2Vob2xkZXIoKSwgbnVsbCwgInN0YWtlaG9sZGVyIiwgbnVsbCwgMSwgLTEsIFZpZXcuY2xhc3MsIElTX1RSQU5TSUVOVCwgSVNfVk9MQVRJTEUsIElTX0NIQU5HRUFCTEUsICFJU19DT01QT1NJVEUsIElTX1JFU09MVkVfUFJPWElFUywgIUlTX1VOU0VUVEFCTEUsIElTX1VOSVFVRSwgSVNfREVSSVZFRCwgIUlTX09SREVSRUQpOyAvLyROT04tTkxTLTEkDQorCQlpbml0RVJlZmVyZW5jZShnZXRWaWV3X0Jhc2VfQ2xhc3MoKSwgdGhlVU1MUGFja2FnZS5nZXRDbGFzc18oKSwgbnVsbCwgImJhc2VfQ2xhc3MiLCBudWxsLCAwLCAxLCBWaWV3LmNsYXNzLCAhSVNfVFJBTlNJRU5ULCAhSVNfVk9MQVRJTEUsIElTX0NIQU5HRUFCTEUsICFJU19DT01QT1NJVEUsIElTX1JFU09MVkVfUFJPWElFUywgIUlTX1VOU0VUVEFCTEUsIElTX1VOSVFVRSwgIUlTX0RFUklWRUQsICFJU19PUkRFUkVEKTsgLy8kTk9OLU5MUy0xJA0KKw0KKwkJaW5pdEVDbGFzcyh2aWV3UG9pbnRFQ2xhc3MsIFZpZXdQb2ludC5jbGFzcywgIlZpZXdQb2ludCIsICFJU19BQlNUUkFDVCwgIUlTX0lOVEVSRkFDRSwgSVNfR0VORVJBVEVEX0lOU1RBTkNFX0NMQVNTKTsgLy8kTk9OLU5MUy0xJA0KKwkJaW5pdEVSZWZlcmVuY2UoZ2V0Vmlld1BvaW50X0Jhc2VfQ2xhc3MoKSwgdGhlVU1MUGFja2FnZS5nZXRDbGFzc18oKSwgbnVsbCwgImJhc2VfQ2xhc3MiLCBudWxsLCAwLCAxLCBWaWV3UG9pbnQuY2xhc3MsICFJU19UUkFOU0lFTlQsICFJU19WT0xBVElMRSwgSVNfQ0hBTkdFQUJMRSwgIUlTX0NPTVBPU0lURSwgSVNfUkVTT0xWRV9QUk9YSUVTLCAhSVNfVU5TRVRUQUJMRSwgSVNfVU5JUVVFLCAhSVNfREVSSVZFRCwgIUlTX09SREVSRUQpOyAvLyROT04tTkxTLTEkDQorCQlpbml0RVJlZmVyZW5jZShnZXRWaWV3UG9pbnRfU3Rha2Vob2xkZXIoKSwgdGhpcy5nZXRTdGFrZWhvbGRlcigpLCBudWxsLCAic3Rha2Vob2xkZXIiLCBudWxsLCAxLCAtMSwgVmlld1BvaW50LmNsYXNzLCAhSVNfVFJBTlNJRU5ULCAhSVNfVk9MQVRJTEUsIElTX0NIQU5HRUFCTEUsICFJU19DT01QT1NJVEUsIElTX1JFU09MVkVfUFJPWElFUywgIUlTX1VOU0VUVEFCTEUsIElTX1VOSVFVRSwgIUlTX0RFUklWRUQsICFJU19PUkRFUkVEKTsgLy8kTk9OLU5MUy0xJA0KKwkJaW5pdEVBdHRyaWJ1dGUoZ2V0Vmlld1BvaW50X1B1cnBvc2UoKSwgdGhlVHlwZXNQYWNrYWdlLmdldFN0cmluZygpLCAicHVycG9zZSIsIG51bGwsIDEsIDEsIFZpZXdQb2ludC5jbGFzcywgIUlTX1RSQU5TSUVOVCwgIUlTX1ZPTEFUSUxFLCBJU19DSEFOR0VBQkxFLCAhSVNfVU5TRVRUQUJMRSwgIUlTX0lELCBJU19VTklRVUUsICFJU19ERVJJVkVELCAhSVNfT1JERVJFRCk7IC8vJE5PTi1OTFMtMSQNCisJCWluaXRFUmVmZXJlbmNlKGdldFZpZXdQb2ludF9Db25jZXJuTGlzdCgpLCB0aGVVTUxQYWNrYWdlLmdldENvbW1lbnQoKSwgbnVsbCwgImNvbmNlcm5MaXN0IiwgbnVsbCwgMSwgLTEsIFZpZXdQb2ludC5jbGFzcywgIUlTX1RSQU5TSUVOVCwgIUlTX1ZPTEFUSUxFLCBJU19DSEFOR0VBQkxFLCAhSVNfQ09NUE9TSVRFLCBJU19SRVNPTFZFX1BST1hJRVMsICFJU19VTlNFVFRBQkxFLCBJU19VTklRVUUsICFJU19ERVJJVkVELCAhSVNfT1JERVJFRCk7IC8vJE5PTi1OTFMtMSQNCisJCWluaXRFQXR0cmlidXRlKGdldFZpZXdQb2ludF9MYW5ndWFnZSgpLCB0aGVUeXBlc1BhY2thZ2UuZ2V0U3RyaW5nKCksICJsYW5ndWFnZSIsIG51bGwsIDEsIC0xLCBWaWV3UG9pbnQuY2xhc3MsICFJU19UUkFOU0lFTlQsICFJU19WT0xBVElMRSwgSVNfQ0hBTkdFQUJMRSwgIUlTX1VOU0VUVEFCTEUsICFJU19JRCwgSVNfVU5JUVVFLCAhSVNfREVSSVZFRCwgIUlTX09SREVSRUQpOyAvLyROT04tTkxTLTEkDQorCQlpbml0RVJlZmVyZW5jZShnZXRWaWV3UG9pbnRfTWV0aG9kKCksIHRoZVVNTFBhY2thZ2UuZ2V0QmVoYXZpb3IoKSwgbnVsbCwgIm1ldGhvZCIsIG51bGwsIDEsIC0xLCBWaWV3UG9pbnQuY2xhc3MsIElTX1RSQU5TSUVOVCwgSVNfVk9MQVRJTEUsIElTX0NIQU5HRUFCTEUsICFJU19DT01QT1NJVEUsIElTX1JFU09MVkVfUFJPWElFUywgIUlTX1VOU0VUVEFCTEUsIElTX1VOSVFVRSwgSVNfREVSSVZFRCwgIUlTX09SREVSRUQpOyAvLyROT04tTkxTLTEkDQorCQlpbml0RUF0dHJpYnV0ZShnZXRWaWV3UG9pbnRfUHJlc2VudGF0aW9uKCksIHRoZVR5cGVzUGFja2FnZS5nZXRTdHJpbmcoKSwgInByZXNlbnRhdGlvbiIsIG51bGwsIDEsIC0xLCBWaWV3UG9pbnQuY2xhc3MsICFJU19UUkFOU0lFTlQsICFJU19WT0xBVElMRSwgSVNfQ0hBTkdFQUJMRSwgIUlTX1VOU0VUVEFCTEUsICFJU19JRCwgSVNfVU5JUVVFLCAhSVNfREVSSVZFRCwgIUlTX09SREVSRUQpOyAvLyROT04tTkxTLTEkDQorCQlpbml0RUF0dHJpYnV0ZShnZXRWaWV3UG9pbnRfQ29uY2VybigpLCB0aGVUeXBlc1BhY2thZ2UuZ2V0U3RyaW5nKCksICJjb25jZXJuIiwgbnVsbCwgMSwgLTEsIFZpZXdQb2ludC5jbGFzcywgSVNfVFJBTlNJRU5ULCBJU19WT0xBVElMRSwgSVNfQ0hBTkdFQUJMRSwgIUlTX1VOU0VUVEFCTEUsICFJU19JRCwgSVNfVU5JUVVFLCBJU19ERVJJVkVELCAhSVNfT1JERVJFRCk7IC8vJE5PTi1OTFMtMSQNCisNCisJCWluaXRFQ2xhc3Moc3Rha2Vob2xkZXJFQ2xhc3MsIFN0YWtlaG9sZGVyLmNsYXNzLCAiU3Rha2Vob2xkZXIiLCAhSVNfQUJTVFJBQ1QsICFJU19JTlRFUkZBQ0UsIElTX0dFTkVSQVRFRF9JTlNUQU5DRV9DTEFTUyk7IC8vJE5PTi1OTFMtMSQNCisJCWluaXRFUmVmZXJlbmNlKGdldFN0YWtlaG9sZGVyX0Jhc2VfQ2xhc3NpZmllcigpLCB0aGVVTUxQYWNrYWdlLmdldENsYXNzaWZpZXIoKSwgbnVsbCwgImJhc2VfQ2xhc3NpZmllciIsIG51bGwsIDAsIDEsIFN0YWtlaG9sZGVyLmNsYXNzLCAhSVNfVFJBTlNJRU5ULCAhSVNfVk9MQVRJTEUsIElTX0NIQU5HRUFCTEUsICFJU19DT01QT1NJVEUsIElTX1JFU09MVkVfUFJPWElFUywgIUlTX1VOU0VUVEFCTEUsIElTX1VOSVFVRSwgIUlTX0RFUklWRUQsICFJU19PUkRFUkVEKTsgLy8kTk9OLU5MUy0xJA0KKwkJaW5pdEVSZWZlcmVuY2UoZ2V0U3Rha2Vob2xkZXJfQ29uY2VybigpLCB0aGVVTUxQYWNrYWdlLmdldENvbW1lbnQoKSwgbnVsbCwgImNvbmNlcm4iLCBudWxsLCAxLCAtMSwgU3Rha2Vob2xkZXIuY2xhc3MsICFJU19UUkFOU0lFTlQsICFJU19WT0xBVElMRSwgSVNfQ0hBTkdFQUJMRSwgIUlTX0NPTVBPU0lURSwgSVNfUkVTT0xWRV9QUk9YSUVTLCAhSVNfVU5TRVRUQUJMRSwgSVNfVU5JUVVFLCAhSVNfREVSSVZFRCwgIUlTX09SREVSRUQpOyAvLyROT04tTkxTLTEkDQorCQlpbml0RVJlZmVyZW5jZShnZXRTdGFrZWhvbGRlcl9Db25jZXJuTGlzdCgpLCB0aGVVTUxQYWNrYWdlLmdldENvbW1lbnQoKSwgbnVsbCwgImNvbmNlcm5MaXN0IiwgbnVsbCwgMSwgMSwgU3Rha2Vob2xkZXIuY2xhc3MsIElTX1RSQU5TSUVOVCwgSVNfVk9MQVRJTEUsIElTX0NIQU5HRUFCTEUsICFJU19DT01QT1NJVEUsIElTX1JFU09MVkVfUFJPWElFUywgIUlTX1VOU0VUVEFCTEUsIElTX1VOSVFVRSwgSVNfREVSSVZFRCwgIUlTX09SREVSRUQpOyAvLyROT04tTkxTLTEkDQorDQorCQlpbml0RUNsYXNzKGNvbmZvcm1FQ2xhc3MsIENvbmZvcm0uY2xhc3MsICJDb25mb3JtIiwgIUlTX0FCU1RSQUNULCAhSVNfSU5URVJGQUNFLCBJU19HRU5FUkFURURfSU5TVEFOQ0VfQ0xBU1MpOyAvLyROT04tTkxTLTEkDQorCQlpbml0RVJlZmVyZW5jZShnZXRDb25mb3JtX0Jhc2VfRGVwZW5kZW5jeSgpLCB0aGVVTUxQYWNrYWdlLmdldERlcGVuZGVuY3koKSwgbnVsbCwgImJhc2VfRGVwZW5kZW5jeSIsIG51bGwsIDAsIDEsIENvbmZvcm0uY2xhc3MsICFJU19UUkFOU0lFTlQsICFJU19WT0xBVElMRSwgSVNfQ0hBTkdFQUJMRSwgIUlTX0NPTVBPU0lURSwgSVNfUkVTT0xWRV9QUk9YSUVTLCAhSVNfVU5TRVRUQUJMRSwgSVNfVU5JUVVFLCAhSVNfREVSSVZFRCwgIUlTX09SREVSRUQpOyAvLyROT04tTkxTLTEkDQorCQlpbml0RVJlZmVyZW5jZShnZXRDb25mb3JtX0Jhc2VfR2VuZXJhbGl6YXRpb24oKSwgdGhlVU1MUGFja2FnZS5nZXRHZW5lcmFsaXphdGlvbigpLCBudWxsLCAiYmFzZV9HZW5lcmFsaXphdGlvbiIsIG51bGwsIDAsIDEsIENvbmZvcm0uY2xhc3MsICFJU19UUkFOU0lFTlQsICFJU19WT0xBVElMRSwgSVNfQ0hBTkdFQUJMRSwgIUlTX0NPTVBPU0lURSwgSVNfUkVTT0xWRV9QUk9YSUVTLCAhSVNfVU5TRVRUQUJMRSwgSVNfVU5JUVVFLCAhSVNfREVSSVZFRCwgIUlTX09SREVSRUQpOyAvLyROT04tTkxTLTEkDQorDQorCQlpbml0RUNsYXNzKHByb2JsZW1FQ2xhc3MsIFByb2JsZW0uY2xhc3MsICJQcm9ibGVtIiwgIUlTX0FCU1RSQUNULCAhSVNfSU5URVJGQUNFLCBJU19HRU5FUkFURURfSU5TVEFOQ0VfQ0xBU1MpOyAvLyROT04tTkxTLTEkDQorCQlpbml0RVJlZmVyZW5jZShnZXRQcm9ibGVtX0Jhc2VfQ29tbWVudCgpLCB0aGVVTUxQYWNrYWdlLmdldENvbW1lbnQoKSwgbnVsbCwgImJhc2VfQ29tbWVudCIsIG51bGwsIDAsIDEsIFByb2JsZW0uY2xhc3MsICFJU19UUkFOU0lFTlQsICFJU19WT0xBVElMRSwgSVNfQ0hBTkdFQUJMRSwgIUlTX0NPTVBPU0lURSwgSVNfUkVTT0xWRV9QUk9YSUVTLCAhSVNfVU5TRVRUQUJMRSwgSVNfVU5JUVVFLCAhSVNfREVSSVZFRCwgIUlTX09SREVSRUQpOyAvLyROT04tTkxTLTEkDQorDQorCQlpbml0RUNsYXNzKGV4cG9zZUVDbGFzcywgRXhwb3NlLmNsYXNzLCAiRXhwb3NlIiwgIUlTX0FCU1RSQUNULCAhSVNfSU5URVJGQUNFLCBJU19HRU5FUkFURURfSU5TVEFOQ0VfQ0xBU1MpOyAvLyROT04tTkxTLTEkDQorCQlpbml0RVJlZmVyZW5jZShnZXRFeHBvc2VfQmFzZV9EZXBlbmRlbmN5KCksIHRoZVVNTFBhY2thZ2UuZ2V0RGVwZW5kZW5jeSgpLCBudWxsLCAiYmFzZV9EZXBlbmRlbmN5IiwgbnVsbCwgMCwgMSwgRXhwb3NlLmNsYXNzLCAhSVNfVFJBTlNJRU5ULCAhSVNfVk9MQVRJTEUsIElTX0NIQU5HRUFCTEUsICFJU19DT01QT1NJVEUsIElTX1JFU09MVkVfUFJPWElFUywgIUlTX1VOU0VUVEFCTEUsIElTX1VOSVFVRSwgIUlTX0RFUklWRUQsICFJU19PUkRFUkVEKTsgLy8kTk9OLU5MUy0xJA0KKw0KKwkJaW5pdEVDbGFzcyhlbGVtZW50R3JvdXBFQ2xhc3MsIEVsZW1lbnRHcm91cC5jbGFzcywgIkVsZW1lbnRHcm91cCIsICFJU19BQlNUUkFDVCwgIUlTX0lOVEVSRkFDRSwgSVNfR0VORVJBVEVEX0lOU1RBTkNFX0NMQVNTKTsgLy8kTk9OLU5MUy0xJA0KKwkJaW5pdEVSZWZlcmVuY2UoZ2V0RWxlbWVudEdyb3VwX0Jhc2VfQ29tbWVudCgpLCB0aGVVTUxQYWNrYWdlLmdldENvbW1lbnQoKSwgbnVsbCwgImJhc2VfQ29tbWVudCIsIG51bGwsIDAsIDEsIEVsZW1lbnRHcm91cC5jbGFzcywgIUlTX1RSQU5TSUVOVCwgIUlTX1ZPTEFUSUxFLCBJU19DSEFOR0VBQkxFLCAhSVNfQ09NUE9TSVRFLCBJU19SRVNPTFZFX1BST1hJRVMsICFJU19VTlNFVFRBQkxFLCBJU19VTklRVUUsICFJU19ERVJJVkVELCAhSVNfT1JERVJFRCk7IC8vJE5PTi1OTFMtMSQNCisJCWluaXRFQXR0cmlidXRlKGdldEVsZW1lbnRHcm91cF9OYW1lKCksIHRoZVR5cGVzUGFja2FnZS5nZXRTdHJpbmcoKSwgIm5hbWUiLCBudWxsLCAxLCAxLCBFbGVtZW50R3JvdXAuY2xhc3MsICFJU19UUkFOU0lFTlQsICFJU19WT0xBVElMRSwgSVNfQ0hBTkdFQUJMRSwgIUlTX1VOU0VUVEFCTEUsICFJU19JRCwgSVNfVU5JUVVFLCAhSVNfREVSSVZFRCwgIUlTX09SREVSRUQpOyAvLyROT04tTkxTLTEkDQorCQlpbml0RUF0dHJpYnV0ZShnZXRFbGVtZW50R3JvdXBfQ3JpdGVyaW9uKCksIHRoZVR5cGVzUGFja2FnZS5nZXRTdHJpbmcoKSwgImNyaXRlcmlvbiIsIG51bGwsIDEsIDEsIEVsZW1lbnRHcm91cC5jbGFzcywgSVNfVFJBTlNJRU5ULCBJU19WT0xBVElMRSwgSVNfQ0hBTkdFQUJMRSwgIUlTX1VOU0VUVEFCTEUsICFJU19JRCwgSVNfVU5JUVVFLCBJU19ERVJJVkVELCAhSVNfT1JERVJFRCk7IC8vJE5PTi1OTFMtMSQNCisJCWluaXRFQXR0cmlidXRlKGdldEVsZW1lbnRHcm91cF9TaXplKCksIHRoZVR5cGVzUGFja2FnZS5nZXRJbnRlZ2VyKCksICJzaXplIiwgbnVsbCwgMSwgMSwgRWxlbWVudEdyb3VwLmNsYXNzLCBJU19UUkFOU0lFTlQsIElTX1ZPTEFUSUxFLCBJU19DSEFOR0VBQkxFLCAhSVNfVU5TRVRUQUJMRSwgIUlTX0lELCBJU19VTklRVUUsIElTX0RFUklWRUQsICFJU19PUkRFUkVEKTsgLy8kTk9OLU5MUy0xJA0KKwkJaW5pdEVSZWZlcmVuY2UoZ2V0RWxlbWVudEdyb3VwX01lbWJlcigpLCB0aGVVTUxQYWNrYWdlLmdldEVsZW1lbnQoKSwgbnVsbCwgIm1lbWJlciIsIG51bGwsIDAsIC0xLCBFbGVtZW50R3JvdXAuY2xhc3MsIElTX1RSQU5TSUVOVCwgSVNfVk9MQVRJTEUsIElTX0NIQU5HRUFCTEUsICFJU19DT01QT1NJVEUsIElTX1JFU09MVkVfUFJPWElFUywgIUlTX1VOU0VUVEFCTEUsIElTX1VOSVFVRSwgSVNfREVSSVZFRCwgIUlTX09SREVSRUQpOyAvLyROT04tTkxTLTEkDQorCQlpbml0RVJlZmVyZW5jZShnZXRFbGVtZW50R3JvdXBfT3JkZXJlZE1lbWJlcigpLCB0aGVVTUxQYWNrYWdlLmdldEVsZW1lbnQoKSwgbnVsbCwgIm9yZGVyZWRNZW1iZXIiLCBudWxsLCAwLCAtMSwgRWxlbWVudEdyb3VwLmNsYXNzLCAhSVNfVFJBTlNJRU5ULCAhSVNfVk9MQVRJTEUsIElTX0NIQU5HRUFCTEUsICFJU19DT01QT1NJVEUsIElTX1JFU09MVkVfUFJPWElFUywgIUlTX1VOU0VUVEFCTEUsIElTX1VOSVFVRSwgIUlTX0RFUklWRUQsIElTX09SREVSRUQpOyAvLyROT04tTkxTLTEkDQorDQorCQlpbml0RU9wZXJhdGlvbihnZXRFbGVtZW50R3JvdXBfX0NyaXRlcmlvbigpLCB0aGVUeXBlc1BhY2thZ2UuZ2V0U3RyaW5nKCksICJjcml0ZXJpb24iLCAwLCAxLCBJU19VTklRVUUsICFJU19PUkRFUkVEKTsgLy8kTk9OLU5MUy0xJA0KKw0KKwkJaW5pdEVPcGVyYXRpb24oZ2V0RWxlbWVudEdyb3VwX19TaXplKCksIHRoZVR5cGVzUGFja2FnZS5nZXRJbnRlZ2VyKCksICJzaXplIiwgMSwgMSwgSVNfVU5JUVVFLCAhSVNfT1JERVJFRCk7IC8vJE5PTi1OTFMtMSQNCisNCisJCWluaXRFT3BlcmF0aW9uKGdldEVsZW1lbnRHcm91cF9fTWVtYmVyKCksIHRoZVVNTFBhY2thZ2UuZ2V0RWxlbWVudCgpLCAibWVtYmVyIiwgMCwgLTEsIElTX1VOSVFVRSwgIUlTX09SREVSRUQpOyAvLyROT04tTkxTLTEkDQorDQorCQlFT3BlcmF0aW9uIG9wID0gaW5pdEVPcGVyYXRpb24oZ2V0RWxlbWVudEdyb3VwX19BbGxHcm91cHNfX0VsZW1lbnQoKSwgdGhpcy5nZXRFbGVtZW50R3JvdXAoKSwgImFsbEdyb3VwcyIsIDAsIC0xLCBJU19VTklRVUUsICFJU19PUkRFUkVEKTsgLy8kTk9OLU5MUy0xJA0KKwkJYWRkRVBhcmFtZXRlcihvcCwgdGhlVU1MUGFja2FnZS5nZXRFbGVtZW50KCksICJlIiwgMSwgMSwgSVNfVU5JUVVFLCAhSVNfT1JERVJFRCk7IC8vJE5PTi1OTFMtMSQNCisNCisJCS8vIENyZWF0ZSByZXNvdXJjZQ0KKwkJY3JlYXRlUmVzb3VyY2UoZU5TX1VSSSk7DQorDQorCQkvLyBDcmVhdGUgYW5ub3RhdGlvbnMNCisJCS8vIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvdW1sMi8yLjAuMC9VTUwNCisJCWNyZWF0ZVVNTEFubm90YXRpb25zKCk7DQorCX0NCisNCisJLyoqDQorCSAqIEluaXRpYWxpemVzIHRoZSBhbm5vdGF0aW9ucyBmb3IgPGI+aHR0cDovL3d3dy5lY2xpcHNlLm9yZy91bWwyLzIuMC4wL1VNTDwvYj4uDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwcm90ZWN0ZWQgdm9pZCBjcmVhdGVVTUxBbm5vdGF0aW9ucygpIHsNCisJCVN0cmluZyBzb3VyY2UgPSAiaHR0cDovL3d3dy5lY2xpcHNlLm9yZy91bWwyLzIuMC4wL1VNTCI7IC8vJE5PTi1OTFMtMSQJDQorCQlhZGRBbm5vdGF0aW9uDQorCQkgICh0aGlzLCANCisJCSAgIHNvdXJjZSwgDQorCQkgICBuZXcgU3RyaW5nW10gew0KKwkJCSAib3JpZ2luYWxOYW1lIiwgIk1vZGVsRWxlbWVudHMiIC8vJE5PTi1OTFMtMSQgLy8kTk9OLU5MUy0yJA0KKwkJICAgfSk7DQorCX0NCisNCit9IC8vTW9kZWxlbGVtZW50c1BhY2thZ2VJbXBsDQpkaWZmIC0tZ2l0IGEvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvbW9kZWxlbGVtZW50cy9pbnRlcm5hbC9pbXBsL1Byb2JsZW1JbXBsLmphdmEgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9tb2RlbGVsZW1lbnRzL2ludGVybmFsL2ltcGwvUHJvYmxlbUltcGwuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZDJmNWE3Ci0tLSAvZGV2L251bGwKKysrIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvbW9kZWxlbGVtZW50cy9pbnRlcm5hbC9pbXBsL1Byb2JsZW1JbXBsLmphdmEKQEAgLTAsMCArMSwxNjQgQEAKKy8qKg0KKyAqIENvcHlyaWdodCAoYykgMjAxNSBDRUEgTElTVC4NCisgKiANCisgKiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KKyAqICBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCisgKiAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCisgKiAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgKi8NCitwYWNrYWdlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5tb2RlbGVsZW1lbnRzLmludGVybmFsLmltcGw7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jb21tb24ubm90aWZ5Lk5vdGlmaWNhdGlvbjsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVDbGFzczsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkludGVybmFsRU9iamVjdDsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLmltcGwuRU5vdGlmaWNhdGlvbkltcGw7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5pbXBsLk1pbmltYWxFT2JqZWN0SW1wbDsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0Lm1vZGVsZWxlbWVudHMuTW9kZWxlbGVtZW50c1BhY2thZ2U7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5tb2RlbGVsZW1lbnRzLlByb2JsZW07DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLnVtbDIudW1sLkNvbW1lbnQ7DQorDQorLyoqDQorICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisgKiBBbiBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgbW9kZWwgb2JqZWN0ICc8ZW0+PGI+UHJvYmxlbTwvYj48L2VtPicuDQorICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorICogPHA+DQorICogVGhlIGZvbGxvd2luZyBmZWF0dXJlcyBhcmUgaW1wbGVtZW50ZWQ6DQorICogPHVsPg0KKyAqICAgPGxpPntAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQubW9kZWxlbGVtZW50cy5pbnRlcm5hbC5pbXBsLlByb2JsZW1JbXBsI2dldEJhc2VfQ29tbWVudCA8ZW0+QmFzZSBDb21tZW50PC9lbT59PC9saT4NCisgKiA8L3VsPg0KKyAqIDwvcD4NCisgKg0KKyAqIEBnZW5lcmF0ZWQNCisgKi8NCitwdWJsaWMgY2xhc3MgUHJvYmxlbUltcGwgZXh0ZW5kcyBNaW5pbWFsRU9iamVjdEltcGwuQ29udGFpbmVyIGltcGxlbWVudHMgUHJvYmxlbSB7DQorCS8qKg0KKwkgKiBUaGUgY2FjaGVkIHZhbHVlIG9mIHRoZSAne0BsaW5rICNnZXRCYXNlX0NvbW1lbnQoKSA8ZW0+QmFzZSBDb21tZW50PC9lbT59JyByZWZlcmVuY2UuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAc2VlICNnZXRCYXNlX0NvbW1lbnQoKQ0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqIEBvcmRlcmVkDQorCSAqLw0KKwlwcm90ZWN0ZWQgQ29tbWVudCBiYXNlX0NvbW1lbnQ7DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHJvdGVjdGVkIFByb2JsZW1JbXBsKCkgew0KKwkJc3VwZXIoKTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwcm90ZWN0ZWQgRUNsYXNzIGVTdGF0aWNDbGFzcygpIHsNCisJCXJldHVybiBNb2RlbGVsZW1lbnRzUGFja2FnZS5MaXRlcmFscy5QUk9CTEVNOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIENvbW1lbnQgZ2V0QmFzZV9Db21tZW50KCkgew0KKwkJaWYgKGJhc2VfQ29tbWVudCAhPSBudWxsICYmIGJhc2VfQ29tbWVudC5lSXNQcm94eSgpKSB7DQorCQkJSW50ZXJuYWxFT2JqZWN0IG9sZEJhc2VfQ29tbWVudCA9IChJbnRlcm5hbEVPYmplY3QpYmFzZV9Db21tZW50Ow0KKwkJCWJhc2VfQ29tbWVudCA9IChDb21tZW50KWVSZXNvbHZlUHJveHkob2xkQmFzZV9Db21tZW50KTsNCisJCQlpZiAoYmFzZV9Db21tZW50ICE9IG9sZEJhc2VfQ29tbWVudCkgew0KKwkJCQlpZiAoZU5vdGlmaWNhdGlvblJlcXVpcmVkKCkpDQorCQkJCQllTm90aWZ5KG5ldyBFTm90aWZpY2F0aW9uSW1wbCh0aGlzLCBOb3RpZmljYXRpb24uUkVTT0xWRSwgTW9kZWxlbGVtZW50c1BhY2thZ2UuUFJPQkxFTV9fQkFTRV9DT01NRU5ULCBvbGRCYXNlX0NvbW1lbnQsIGJhc2VfQ29tbWVudCkpOw0KKwkJCX0NCisJCX0NCisJCXJldHVybiBiYXNlX0NvbW1lbnQ7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgQ29tbWVudCBiYXNpY0dldEJhc2VfQ29tbWVudCgpIHsNCisJCXJldHVybiBiYXNlX0NvbW1lbnQ7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgdm9pZCBzZXRCYXNlX0NvbW1lbnQoQ29tbWVudCBuZXdCYXNlX0NvbW1lbnQpIHsNCisJCUNvbW1lbnQgb2xkQmFzZV9Db21tZW50ID0gYmFzZV9Db21tZW50Ow0KKwkJYmFzZV9Db21tZW50ID0gbmV3QmFzZV9Db21tZW50Ow0KKwkJaWYgKGVOb3RpZmljYXRpb25SZXF1aXJlZCgpKQ0KKwkJCWVOb3RpZnkobmV3IEVOb3RpZmljYXRpb25JbXBsKHRoaXMsIE5vdGlmaWNhdGlvbi5TRVQsIE1vZGVsZWxlbWVudHNQYWNrYWdlLlBST0JMRU1fX0JBU0VfQ09NTUVOVCwgb2xkQmFzZV9Db21tZW50LCBiYXNlX0NvbW1lbnQpKTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgT2JqZWN0IGVHZXQoaW50IGZlYXR1cmVJRCwgYm9vbGVhbiByZXNvbHZlLCBib29sZWFuIGNvcmVUeXBlKSB7DQorCQlzd2l0Y2ggKGZlYXR1cmVJRCkgew0KKwkJCWNhc2UgTW9kZWxlbGVtZW50c1BhY2thZ2UuUFJPQkxFTV9fQkFTRV9DT01NRU5UOg0KKwkJCQlpZiAocmVzb2x2ZSkgcmV0dXJuIGdldEJhc2VfQ29tbWVudCgpOw0KKwkJCQlyZXR1cm4gYmFzaWNHZXRCYXNlX0NvbW1lbnQoKTsNCisJCX0NCisJCXJldHVybiBzdXBlci5lR2V0KGZlYXR1cmVJRCwgcmVzb2x2ZSwgY29yZVR5cGUpOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXB1YmxpYyB2b2lkIGVTZXQoaW50IGZlYXR1cmVJRCwgT2JqZWN0IG5ld1ZhbHVlKSB7DQorCQlzd2l0Y2ggKGZlYXR1cmVJRCkgew0KKwkJCWNhc2UgTW9kZWxlbGVtZW50c1BhY2thZ2UuUFJPQkxFTV9fQkFTRV9DT01NRU5UOg0KKwkJCQlzZXRCYXNlX0NvbW1lbnQoKENvbW1lbnQpbmV3VmFsdWUpOw0KKwkJCQlyZXR1cm47DQorCQl9DQorCQlzdXBlci5lU2V0KGZlYXR1cmVJRCwgbmV3VmFsdWUpOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXB1YmxpYyB2b2lkIGVVbnNldChpbnQgZmVhdHVyZUlEKSB7DQorCQlzd2l0Y2ggKGZlYXR1cmVJRCkgew0KKwkJCWNhc2UgTW9kZWxlbGVtZW50c1BhY2thZ2UuUFJPQkxFTV9fQkFTRV9DT01NRU5UOg0KKwkJCQlzZXRCYXNlX0NvbW1lbnQoKENvbW1lbnQpbnVsbCk7DQorCQkJCXJldHVybjsNCisJCX0NCisJCXN1cGVyLmVVbnNldChmZWF0dXJlSUQpOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXB1YmxpYyBib29sZWFuIGVJc1NldChpbnQgZmVhdHVyZUlEKSB7DQorCQlzd2l0Y2ggKGZlYXR1cmVJRCkgew0KKwkJCWNhc2UgTW9kZWxlbGVtZW50c1BhY2thZ2UuUFJPQkxFTV9fQkFTRV9DT01NRU5UOg0KKwkJCQlyZXR1cm4gYmFzZV9Db21tZW50ICE9IG51bGw7DQorCQl9DQorCQlyZXR1cm4gc3VwZXIuZUlzU2V0KGZlYXR1cmVJRCk7DQorCX0NCisNCit9IC8vUHJvYmxlbUltcGwNCmRpZmYgLS1naXQgYS9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9tb2RlbGVsZW1lbnRzL2ludGVybmFsL2ltcGwvUmF0aW9uYWxlSW1wbC5qYXZhIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvbW9kZWxlbGVtZW50cy9pbnRlcm5hbC9pbXBsL1JhdGlvbmFsZUltcGwuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYTI1ODE3Ci0tLSAvZGV2L251bGwKKysrIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvbW9kZWxlbGVtZW50cy9pbnRlcm5hbC9pbXBsL1JhdGlvbmFsZUltcGwuamF2YQpAQCAtMCwwICsxLDE2NCBAQAorLyoqDQorICogQ29weXJpZ2h0IChjKSAyMDE1IENFQSBMSVNULg0KKyAqIA0KKyAqICBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQorICogIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KKyAqICB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KKyAqICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqLw0KK3BhY2thZ2Ugb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0Lm1vZGVsZWxlbWVudHMuaW50ZXJuYWwuaW1wbDsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi5ub3RpZnkuTm90aWZpY2F0aW9uOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRUNsYXNzOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuSW50ZXJuYWxFT2JqZWN0Ow0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuaW1wbC5FTm90aWZpY2F0aW9uSW1wbDsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLmltcGwuTWluaW1hbEVPYmplY3RJbXBsOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQubW9kZWxlbGVtZW50cy5Nb2RlbGVsZW1lbnRzUGFja2FnZTsNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0Lm1vZGVsZWxlbWVudHMuUmF0aW9uYWxlOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS51bWwyLnVtbC5Db21tZW50Ow0KKw0KKy8qKg0KKyAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorICogQW4gaW1wbGVtZW50YXRpb24gb2YgdGhlIG1vZGVsIG9iamVjdCAnPGVtPjxiPlJhdGlvbmFsZTwvYj48L2VtPicuDQorICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorICogPHA+DQorICogVGhlIGZvbGxvd2luZyBmZWF0dXJlcyBhcmUgaW1wbGVtZW50ZWQ6DQorICogPHVsPg0KKyAqICAgPGxpPntAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQubW9kZWxlbGVtZW50cy5pbnRlcm5hbC5pbXBsLlJhdGlvbmFsZUltcGwjZ2V0QmFzZV9Db21tZW50IDxlbT5CYXNlIENvbW1lbnQ8L2VtPn08L2xpPg0KKyAqIDwvdWw+DQorICogPC9wPg0KKyAqDQorICogQGdlbmVyYXRlZA0KKyAqLw0KK3B1YmxpYyBjbGFzcyBSYXRpb25hbGVJbXBsIGV4dGVuZHMgTWluaW1hbEVPYmplY3RJbXBsLkNvbnRhaW5lciBpbXBsZW1lbnRzIFJhdGlvbmFsZSB7DQorCS8qKg0KKwkgKiBUaGUgY2FjaGVkIHZhbHVlIG9mIHRoZSAne0BsaW5rICNnZXRCYXNlX0NvbW1lbnQoKSA8ZW0+QmFzZSBDb21tZW50PC9lbT59JyByZWZlcmVuY2UuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAc2VlICNnZXRCYXNlX0NvbW1lbnQoKQ0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqIEBvcmRlcmVkDQorCSAqLw0KKwlwcm90ZWN0ZWQgQ29tbWVudCBiYXNlX0NvbW1lbnQ7DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHJvdGVjdGVkIFJhdGlvbmFsZUltcGwoKSB7DQorCQlzdXBlcigpOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXByb3RlY3RlZCBFQ2xhc3MgZVN0YXRpY0NsYXNzKCkgew0KKwkJcmV0dXJuIE1vZGVsZWxlbWVudHNQYWNrYWdlLkxpdGVyYWxzLlJBVElPTkFMRTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBDb21tZW50IGdldEJhc2VfQ29tbWVudCgpIHsNCisJCWlmIChiYXNlX0NvbW1lbnQgIT0gbnVsbCAmJiBiYXNlX0NvbW1lbnQuZUlzUHJveHkoKSkgew0KKwkJCUludGVybmFsRU9iamVjdCBvbGRCYXNlX0NvbW1lbnQgPSAoSW50ZXJuYWxFT2JqZWN0KWJhc2VfQ29tbWVudDsNCisJCQliYXNlX0NvbW1lbnQgPSAoQ29tbWVudCllUmVzb2x2ZVByb3h5KG9sZEJhc2VfQ29tbWVudCk7DQorCQkJaWYgKGJhc2VfQ29tbWVudCAhPSBvbGRCYXNlX0NvbW1lbnQpIHsNCisJCQkJaWYgKGVOb3RpZmljYXRpb25SZXF1aXJlZCgpKQ0KKwkJCQkJZU5vdGlmeShuZXcgRU5vdGlmaWNhdGlvbkltcGwodGhpcywgTm90aWZpY2F0aW9uLlJFU09MVkUsIE1vZGVsZWxlbWVudHNQYWNrYWdlLlJBVElPTkFMRV9fQkFTRV9DT01NRU5ULCBvbGRCYXNlX0NvbW1lbnQsIGJhc2VfQ29tbWVudCkpOw0KKwkJCX0NCisJCX0NCisJCXJldHVybiBiYXNlX0NvbW1lbnQ7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgQ29tbWVudCBiYXNpY0dldEJhc2VfQ29tbWVudCgpIHsNCisJCXJldHVybiBiYXNlX0NvbW1lbnQ7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgdm9pZCBzZXRCYXNlX0NvbW1lbnQoQ29tbWVudCBuZXdCYXNlX0NvbW1lbnQpIHsNCisJCUNvbW1lbnQgb2xkQmFzZV9Db21tZW50ID0gYmFzZV9Db21tZW50Ow0KKwkJYmFzZV9Db21tZW50ID0gbmV3QmFzZV9Db21tZW50Ow0KKwkJaWYgKGVOb3RpZmljYXRpb25SZXF1aXJlZCgpKQ0KKwkJCWVOb3RpZnkobmV3IEVOb3RpZmljYXRpb25JbXBsKHRoaXMsIE5vdGlmaWNhdGlvbi5TRVQsIE1vZGVsZWxlbWVudHNQYWNrYWdlLlJBVElPTkFMRV9fQkFTRV9DT01NRU5ULCBvbGRCYXNlX0NvbW1lbnQsIGJhc2VfQ29tbWVudCkpOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXB1YmxpYyBPYmplY3QgZUdldChpbnQgZmVhdHVyZUlELCBib29sZWFuIHJlc29sdmUsIGJvb2xlYW4gY29yZVR5cGUpIHsNCisJCXN3aXRjaCAoZmVhdHVyZUlEKSB7DQorCQkJY2FzZSBNb2RlbGVsZW1lbnRzUGFja2FnZS5SQVRJT05BTEVfX0JBU0VfQ09NTUVOVDoNCisJCQkJaWYgKHJlc29sdmUpIHJldHVybiBnZXRCYXNlX0NvbW1lbnQoKTsNCisJCQkJcmV0dXJuIGJhc2ljR2V0QmFzZV9Db21tZW50KCk7DQorCQl9DQorCQlyZXR1cm4gc3VwZXIuZUdldChmZWF0dXJlSUQsIHJlc29sdmUsIGNvcmVUeXBlKTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgdm9pZCBlU2V0KGludCBmZWF0dXJlSUQsIE9iamVjdCBuZXdWYWx1ZSkgew0KKwkJc3dpdGNoIChmZWF0dXJlSUQpIHsNCisJCQljYXNlIE1vZGVsZWxlbWVudHNQYWNrYWdlLlJBVElPTkFMRV9fQkFTRV9DT01NRU5UOg0KKwkJCQlzZXRCYXNlX0NvbW1lbnQoKENvbW1lbnQpbmV3VmFsdWUpOw0KKwkJCQlyZXR1cm47DQorCQl9DQorCQlzdXBlci5lU2V0KGZlYXR1cmVJRCwgbmV3VmFsdWUpOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXB1YmxpYyB2b2lkIGVVbnNldChpbnQgZmVhdHVyZUlEKSB7DQorCQlzd2l0Y2ggKGZlYXR1cmVJRCkgew0KKwkJCWNhc2UgTW9kZWxlbGVtZW50c1BhY2thZ2UuUkFUSU9OQUxFX19CQVNFX0NPTU1FTlQ6DQorCQkJCXNldEJhc2VfQ29tbWVudCgoQ29tbWVudCludWxsKTsNCisJCQkJcmV0dXJuOw0KKwkJfQ0KKwkJc3VwZXIuZVVuc2V0KGZlYXR1cmVJRCk7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIGJvb2xlYW4gZUlzU2V0KGludCBmZWF0dXJlSUQpIHsNCisJCXN3aXRjaCAoZmVhdHVyZUlEKSB7DQorCQkJY2FzZSBNb2RlbGVsZW1lbnRzUGFja2FnZS5SQVRJT05BTEVfX0JBU0VfQ09NTUVOVDoNCisJCQkJcmV0dXJuIGJhc2VfQ29tbWVudCAhPSBudWxsOw0KKwkJfQ0KKwkJcmV0dXJuIHN1cGVyLmVJc1NldChmZWF0dXJlSUQpOw0KKwl9DQorDQorfSAvL1JhdGlvbmFsZUltcGwNCmRpZmYgLS1naXQgYS9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9tb2RlbGVsZW1lbnRzL2ludGVybmFsL2ltcGwvU3Rha2Vob2xkZXJJbXBsLmphdmEgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9tb2RlbGVsZW1lbnRzL2ludGVybmFsL2ltcGwvU3Rha2Vob2xkZXJJbXBsLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODBhN2I5MQotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L21vZGVsZWxlbWVudHMvaW50ZXJuYWwvaW1wbC9TdGFrZWhvbGRlckltcGwuamF2YQpAQCAtMCwwICsxLDI1MSBAQAorLyoqDQorICogQ29weXJpZ2h0IChjKSAyMDE1IENFQSBMSVNULg0KKyAqIA0KKyAqICBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQorICogIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KKyAqICB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KKyAqICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqLw0KK3BhY2thZ2Ugb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0Lm1vZGVsZWxlbWVudHMuaW50ZXJuYWwuaW1wbDsNCisNCitpbXBvcnQgamF2YS51dGlsLkNvbGxlY3Rpb247DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jb21tb24ubm90aWZ5Lk5vdGlmaWNhdGlvbjsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi51dGlsLkVMaXN0Ow0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRUNsYXNzOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuSW50ZXJuYWxFT2JqZWN0Ow0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuaW1wbC5FTm90aWZpY2F0aW9uSW1wbDsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLmltcGwuTWluaW1hbEVPYmplY3RJbXBsOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUudXRpbC5FT2JqZWN0UmVzb2x2aW5nRUxpc3Q7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5tb2RlbGVsZW1lbnRzLk1vZGVsZWxlbWVudHNQYWNrYWdlOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQubW9kZWxlbGVtZW50cy5TdGFrZWhvbGRlcjsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UudW1sMi51bWwuQ2xhc3NpZmllcjsNCitpbXBvcnQgb3JnLmVjbGlwc2UudW1sMi51bWwuQ29tbWVudDsNCisNCisvKioNCisgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKyAqIEFuIGltcGxlbWVudGF0aW9uIG9mIHRoZSBtb2RlbCBvYmplY3QgJzxlbT48Yj5TdGFrZWhvbGRlcjwvYj48L2VtPicuDQorICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorICogPHA+DQorICogVGhlIGZvbGxvd2luZyBmZWF0dXJlcyBhcmUgaW1wbGVtZW50ZWQ6DQorICogPHVsPg0KKyAqICAgPGxpPntAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQubW9kZWxlbGVtZW50cy5pbnRlcm5hbC5pbXBsLlN0YWtlaG9sZGVySW1wbCNnZXRCYXNlX0NsYXNzaWZpZXIgPGVtPkJhc2UgQ2xhc3NpZmllcjwvZW0+fTwvbGk+DQorICogICA8bGk+e0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5tb2RlbGVsZW1lbnRzLmludGVybmFsLmltcGwuU3Rha2Vob2xkZXJJbXBsI2dldENvbmNlcm4gPGVtPkNvbmNlcm48L2VtPn08L2xpPg0KKyAqICAgPGxpPntAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQubW9kZWxlbGVtZW50cy5pbnRlcm5hbC5pbXBsLlN0YWtlaG9sZGVySW1wbCNnZXRDb25jZXJuTGlzdCA8ZW0+Q29uY2VybiBMaXN0PC9lbT59PC9saT4NCisgKiA8L3VsPg0KKyAqIDwvcD4NCisgKg0KKyAqIEBnZW5lcmF0ZWQNCisgKi8NCitwdWJsaWMgY2xhc3MgU3Rha2Vob2xkZXJJbXBsIGV4dGVuZHMgTWluaW1hbEVPYmplY3RJbXBsLkNvbnRhaW5lciBpbXBsZW1lbnRzIFN0YWtlaG9sZGVyIHsNCisJLyoqDQorCSAqIFRoZSBjYWNoZWQgdmFsdWUgb2YgdGhlICd7QGxpbmsgI2dldEJhc2VfQ2xhc3NpZmllcigpIDxlbT5CYXNlIENsYXNzaWZpZXI8L2VtPn0nIHJlZmVyZW5jZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBzZWUgI2dldEJhc2VfQ2xhc3NpZmllcigpDQorCSAqIEBnZW5lcmF0ZWQNCisJICogQG9yZGVyZWQNCisJICovDQorCXByb3RlY3RlZCBDbGFzc2lmaWVyIGJhc2VfQ2xhc3NpZmllcjsNCisNCisJLyoqDQorCSAqIFRoZSBjYWNoZWQgdmFsdWUgb2YgdGhlICd7QGxpbmsgI2dldENvbmNlcm4oKSA8ZW0+Q29uY2VybjwvZW0+fScgcmVmZXJlbmNlIGxpc3QuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAc2VlICNnZXRDb25jZXJuKCkNCisJICogQGdlbmVyYXRlZA0KKwkgKiBAb3JkZXJlZA0KKwkgKi8NCisJcHJvdGVjdGVkIEVMaXN0PENvbW1lbnQ+IGNvbmNlcm47DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHJvdGVjdGVkIFN0YWtlaG9sZGVySW1wbCgpIHsNCisJCXN1cGVyKCk7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHJvdGVjdGVkIEVDbGFzcyBlU3RhdGljQ2xhc3MoKSB7DQorCQlyZXR1cm4gTW9kZWxlbGVtZW50c1BhY2thZ2UuTGl0ZXJhbHMuU1RBS0VIT0xERVI7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgQ2xhc3NpZmllciBnZXRCYXNlX0NsYXNzaWZpZXIoKSB7DQorCQlpZiAoYmFzZV9DbGFzc2lmaWVyICE9IG51bGwgJiYgYmFzZV9DbGFzc2lmaWVyLmVJc1Byb3h5KCkpIHsNCisJCQlJbnRlcm5hbEVPYmplY3Qgb2xkQmFzZV9DbGFzc2lmaWVyID0gKEludGVybmFsRU9iamVjdCliYXNlX0NsYXNzaWZpZXI7DQorCQkJYmFzZV9DbGFzc2lmaWVyID0gKENsYXNzaWZpZXIpZVJlc29sdmVQcm94eShvbGRCYXNlX0NsYXNzaWZpZXIpOw0KKwkJCWlmIChiYXNlX0NsYXNzaWZpZXIgIT0gb2xkQmFzZV9DbGFzc2lmaWVyKSB7DQorCQkJCWlmIChlTm90aWZpY2F0aW9uUmVxdWlyZWQoKSkNCisJCQkJCWVOb3RpZnkobmV3IEVOb3RpZmljYXRpb25JbXBsKHRoaXMsIE5vdGlmaWNhdGlvbi5SRVNPTFZFLCBNb2RlbGVsZW1lbnRzUGFja2FnZS5TVEFLRUhPTERFUl9fQkFTRV9DTEFTU0lGSUVSLCBvbGRCYXNlX0NsYXNzaWZpZXIsIGJhc2VfQ2xhc3NpZmllcikpOw0KKwkJCX0NCisJCX0NCisJCXJldHVybiBiYXNlX0NsYXNzaWZpZXI7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgQ2xhc3NpZmllciBiYXNpY0dldEJhc2VfQ2xhc3NpZmllcigpIHsNCisJCXJldHVybiBiYXNlX0NsYXNzaWZpZXI7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgdm9pZCBzZXRCYXNlX0NsYXNzaWZpZXIoQ2xhc3NpZmllciBuZXdCYXNlX0NsYXNzaWZpZXIpIHsNCisJCUNsYXNzaWZpZXIgb2xkQmFzZV9DbGFzc2lmaWVyID0gYmFzZV9DbGFzc2lmaWVyOw0KKwkJYmFzZV9DbGFzc2lmaWVyID0gbmV3QmFzZV9DbGFzc2lmaWVyOw0KKwkJaWYgKGVOb3RpZmljYXRpb25SZXF1aXJlZCgpKQ0KKwkJCWVOb3RpZnkobmV3IEVOb3RpZmljYXRpb25JbXBsKHRoaXMsIE5vdGlmaWNhdGlvbi5TRVQsIE1vZGVsZWxlbWVudHNQYWNrYWdlLlNUQUtFSE9MREVSX19CQVNFX0NMQVNTSUZJRVIsIG9sZEJhc2VfQ2xhc3NpZmllciwgYmFzZV9DbGFzc2lmaWVyKSk7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgRUxpc3Q8Q29tbWVudD4gZ2V0Q29uY2VybigpIHsNCisJCWlmIChjb25jZXJuID09IG51bGwpIHsNCisJCQljb25jZXJuID0gbmV3IEVPYmplY3RSZXNvbHZpbmdFTGlzdDxDb21tZW50PihDb21tZW50LmNsYXNzLCB0aGlzLCBNb2RlbGVsZW1lbnRzUGFja2FnZS5TVEFLRUhPTERFUl9fQ09OQ0VSTik7DQorCQl9DQorCQlyZXR1cm4gY29uY2VybjsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBDb21tZW50IGdldENvbmNlcm5MaXN0KCkgew0KKwkJQ29tbWVudCBjb25jZXJuTGlzdCA9IGJhc2ljR2V0Q29uY2Vybkxpc3QoKTsNCisJCXJldHVybiBjb25jZXJuTGlzdCAhPSBudWxsICYmIGNvbmNlcm5MaXN0LmVJc1Byb3h5KCkgPyAoQ29tbWVudCllUmVzb2x2ZVByb3h5KChJbnRlcm5hbEVPYmplY3QpY29uY2Vybkxpc3QpIDogY29uY2Vybkxpc3Q7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgQ29tbWVudCBiYXNpY0dldENvbmNlcm5MaXN0KCkgew0KKwkJLy8gVE9ETzogaW1wbGVtZW50IHRoaXMgbWV0aG9kIHRvIHJldHVybiB0aGUgJ0NvbmNlcm4gTGlzdCcgcmVmZXJlbmNlDQorCQkvLyAtPiBkbyBub3QgcGVyZm9ybSBwcm94eSByZXNvbHV0aW9uDQorCQkvLyBFbnN1cmUgdGhhdCB5b3UgcmVtb3ZlIEBnZW5lcmF0ZWQgb3IgbWFyayBpdCBAZ2VuZXJhdGVkIE5PVA0KKwkJdGhyb3cgbmV3IFVuc3VwcG9ydGVkT3BlcmF0aW9uRXhjZXB0aW9uKCk7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgdm9pZCBzZXRDb25jZXJuTGlzdChDb21tZW50IG5ld0NvbmNlcm5MaXN0KSB7DQorCQkvLyBUT0RPOiBpbXBsZW1lbnQgdGhpcyBtZXRob2QgdG8gc2V0IHRoZSAnQ29uY2VybiBMaXN0JyByZWZlcmVuY2UNCisJCS8vIEVuc3VyZSB0aGF0IHlvdSByZW1vdmUgQGdlbmVyYXRlZCBvciBtYXJrIGl0IEBnZW5lcmF0ZWQgTk9UDQorCQl0aHJvdyBuZXcgVW5zdXBwb3J0ZWRPcGVyYXRpb25FeGNlcHRpb24oKTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgT2JqZWN0IGVHZXQoaW50IGZlYXR1cmVJRCwgYm9vbGVhbiByZXNvbHZlLCBib29sZWFuIGNvcmVUeXBlKSB7DQorCQlzd2l0Y2ggKGZlYXR1cmVJRCkgew0KKwkJCWNhc2UgTW9kZWxlbGVtZW50c1BhY2thZ2UuU1RBS0VIT0xERVJfX0JBU0VfQ0xBU1NJRklFUjoNCisJCQkJaWYgKHJlc29sdmUpIHJldHVybiBnZXRCYXNlX0NsYXNzaWZpZXIoKTsNCisJCQkJcmV0dXJuIGJhc2ljR2V0QmFzZV9DbGFzc2lmaWVyKCk7DQorCQkJY2FzZSBNb2RlbGVsZW1lbnRzUGFja2FnZS5TVEFLRUhPTERFUl9fQ09OQ0VSTjoNCisJCQkJcmV0dXJuIGdldENvbmNlcm4oKTsNCisJCQljYXNlIE1vZGVsZWxlbWVudHNQYWNrYWdlLlNUQUtFSE9MREVSX19DT05DRVJOX0xJU1Q6DQorCQkJCWlmIChyZXNvbHZlKSByZXR1cm4gZ2V0Q29uY2Vybkxpc3QoKTsNCisJCQkJcmV0dXJuIGJhc2ljR2V0Q29uY2Vybkxpc3QoKTsNCisJCX0NCisJCXJldHVybiBzdXBlci5lR2V0KGZlYXR1cmVJRCwgcmVzb2x2ZSwgY29yZVR5cGUpOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQFN1cHByZXNzV2FybmluZ3MoInVuY2hlY2tlZCIpDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgdm9pZCBlU2V0KGludCBmZWF0dXJlSUQsIE9iamVjdCBuZXdWYWx1ZSkgew0KKwkJc3dpdGNoIChmZWF0dXJlSUQpIHsNCisJCQljYXNlIE1vZGVsZWxlbWVudHNQYWNrYWdlLlNUQUtFSE9MREVSX19CQVNFX0NMQVNTSUZJRVI6DQorCQkJCXNldEJhc2VfQ2xhc3NpZmllcigoQ2xhc3NpZmllciluZXdWYWx1ZSk7DQorCQkJCXJldHVybjsNCisJCQljYXNlIE1vZGVsZWxlbWVudHNQYWNrYWdlLlNUQUtFSE9MREVSX19DT05DRVJOOg0KKwkJCQlnZXRDb25jZXJuKCkuY2xlYXIoKTsNCisJCQkJZ2V0Q29uY2VybigpLmFkZEFsbCgoQ29sbGVjdGlvbjw/IGV4dGVuZHMgQ29tbWVudD4pbmV3VmFsdWUpOw0KKwkJCQlyZXR1cm47DQorCQkJY2FzZSBNb2RlbGVsZW1lbnRzUGFja2FnZS5TVEFLRUhPTERFUl9fQ09OQ0VSTl9MSVNUOg0KKwkJCQlzZXRDb25jZXJuTGlzdCgoQ29tbWVudCluZXdWYWx1ZSk7DQorCQkJCXJldHVybjsNCisJCX0NCisJCXN1cGVyLmVTZXQoZmVhdHVyZUlELCBuZXdWYWx1ZSk7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIHZvaWQgZVVuc2V0KGludCBmZWF0dXJlSUQpIHsNCisJCXN3aXRjaCAoZmVhdHVyZUlEKSB7DQorCQkJY2FzZSBNb2RlbGVsZW1lbnRzUGFja2FnZS5TVEFLRUhPTERFUl9fQkFTRV9DTEFTU0lGSUVSOg0KKwkJCQlzZXRCYXNlX0NsYXNzaWZpZXIoKENsYXNzaWZpZXIpbnVsbCk7DQorCQkJCXJldHVybjsNCisJCQljYXNlIE1vZGVsZWxlbWVudHNQYWNrYWdlLlNUQUtFSE9MREVSX19DT05DRVJOOg0KKwkJCQlnZXRDb25jZXJuKCkuY2xlYXIoKTsNCisJCQkJcmV0dXJuOw0KKwkJCWNhc2UgTW9kZWxlbGVtZW50c1BhY2thZ2UuU1RBS0VIT0xERVJfX0NPTkNFUk5fTElTVDoNCisJCQkJc2V0Q29uY2Vybkxpc3QoKENvbW1lbnQpbnVsbCk7DQorCQkJCXJldHVybjsNCisJCX0NCisJCXN1cGVyLmVVbnNldChmZWF0dXJlSUQpOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXB1YmxpYyBib29sZWFuIGVJc1NldChpbnQgZmVhdHVyZUlEKSB7DQorCQlzd2l0Y2ggKGZlYXR1cmVJRCkgew0KKwkJCWNhc2UgTW9kZWxlbGVtZW50c1BhY2thZ2UuU1RBS0VIT0xERVJfX0JBU0VfQ0xBU1NJRklFUjoNCisJCQkJcmV0dXJuIGJhc2VfQ2xhc3NpZmllciAhPSBudWxsOw0KKwkJCWNhc2UgTW9kZWxlbGVtZW50c1BhY2thZ2UuU1RBS0VIT0xERVJfX0NPTkNFUk46DQorCQkJCXJldHVybiBjb25jZXJuICE9IG51bGwgJiYgIWNvbmNlcm4uaXNFbXB0eSgpOw0KKwkJCWNhc2UgTW9kZWxlbGVtZW50c1BhY2thZ2UuU1RBS0VIT0xERVJfX0NPTkNFUk5fTElTVDoNCisJCQkJcmV0dXJuIGJhc2ljR2V0Q29uY2Vybkxpc3QoKSAhPSBudWxsOw0KKwkJfQ0KKwkJcmV0dXJuIHN1cGVyLmVJc1NldChmZWF0dXJlSUQpOw0KKwl9DQorDQorfSAvL1N0YWtlaG9sZGVySW1wbA0KZGlmZiAtLWdpdCBhL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L21vZGVsZWxlbWVudHMvaW50ZXJuYWwvaW1wbC9WaWV3SW1wbC5qYXZhIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvbW9kZWxlbGVtZW50cy9pbnRlcm5hbC9pbXBsL1ZpZXdJbXBsLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjU5MGMwMwotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L21vZGVsZWxlbWVudHMvaW50ZXJuYWwvaW1wbC9WaWV3SW1wbC5qYXZhCkBAIC0wLDAgKzEsMjk3IEBACisvKioNCisgKiBDb3B5cmlnaHQgKGMpIDIwMTUgQ0VBIExJU1QuDQorICogDQorICogIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCisgKiAgYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQorICogIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQorICogIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICovDQorcGFja2FnZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQubW9kZWxlbGVtZW50cy5pbnRlcm5hbC5pbXBsOw0KKw0KK2ltcG9ydCBqYXZhLnV0aWwuQ29sbGVjdGlvbjsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi5ub3RpZnkuTm90aWZpY2F0aW9uOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY29tbW9uLnV0aWwuRUxpc3Q7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FQ2xhc3M7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5JbnRlcm5hbEVPYmplY3Q7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5pbXBsLkVOb3RpZmljYXRpb25JbXBsOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuaW1wbC5NaW5pbWFsRU9iamVjdEltcGw7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5tb2RlbGVsZW1lbnRzLk1vZGVsZWxlbWVudHNQYWNrYWdlOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQubW9kZWxlbGVtZW50cy5TdGFrZWhvbGRlcjsNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0Lm1vZGVsZWxlbWVudHMuVmlldzsNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0Lm1vZGVsZWxlbWVudHMuVmlld1BvaW50Ow0KKw0KKy8qKg0KKyAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorICogQW4gaW1wbGVtZW50YXRpb24gb2YgdGhlIG1vZGVsIG9iamVjdCAnPGVtPjxiPlZpZXc8L2I+PC9lbT4nLg0KKyAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKyAqIDxwPg0KKyAqIFRoZSBmb2xsb3dpbmcgZmVhdHVyZXMgYXJlIGltcGxlbWVudGVkOg0KKyAqIDx1bD4NCisgKiAgIDxsaT57QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0Lm1vZGVsZWxlbWVudHMuaW50ZXJuYWwuaW1wbC5WaWV3SW1wbCNnZXRCYXNlX1BhY2thZ2UgPGVtPkJhc2UgUGFja2FnZTwvZW0+fTwvbGk+DQorICogICA8bGk+e0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5tb2RlbGVsZW1lbnRzLmludGVybmFsLmltcGwuVmlld0ltcGwjZ2V0Vmlld1BvaW50IDxlbT5WaWV3IFBvaW50PC9lbT59PC9saT4NCisgKiAgIDxsaT57QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0Lm1vZGVsZWxlbWVudHMuaW50ZXJuYWwuaW1wbC5WaWV3SW1wbCNnZXRTdGFrZWhvbGRlciA8ZW0+U3Rha2Vob2xkZXI8L2VtPn08L2xpPg0KKyAqICAgPGxpPntAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQubW9kZWxlbGVtZW50cy5pbnRlcm5hbC5pbXBsLlZpZXdJbXBsI2dldEJhc2VfQ2xhc3MgPGVtPkJhc2UgQ2xhc3M8L2VtPn08L2xpPg0KKyAqIDwvdWw+DQorICogPC9wPg0KKyAqDQorICogQGdlbmVyYXRlZA0KKyAqLw0KK3B1YmxpYyBjbGFzcyBWaWV3SW1wbCBleHRlbmRzIE1pbmltYWxFT2JqZWN0SW1wbC5Db250YWluZXIgaW1wbGVtZW50cyBWaWV3IHsNCisJLyoqDQorCSAqIFRoZSBjYWNoZWQgdmFsdWUgb2YgdGhlICd7QGxpbmsgI2dldEJhc2VfUGFja2FnZSgpIDxlbT5CYXNlIFBhY2thZ2U8L2VtPn0nIHJlZmVyZW5jZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBzZWUgI2dldEJhc2VfUGFja2FnZSgpDQorCSAqIEBnZW5lcmF0ZWQNCisJICogQG9yZGVyZWQNCisJICovDQorCXByb3RlY3RlZCBvcmcuZWNsaXBzZS51bWwyLnVtbC5QYWNrYWdlIGJhc2VfUGFja2FnZTsNCisNCisJLyoqDQorCSAqIFRoZSBjYWNoZWQgdmFsdWUgb2YgdGhlICd7QGxpbmsgI2dldEJhc2VfQ2xhc3MoKSA8ZW0+QmFzZSBDbGFzczwvZW0+fScgcmVmZXJlbmNlLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHNlZSAjZ2V0QmFzZV9DbGFzcygpDQorCSAqIEBnZW5lcmF0ZWQNCisJICogQG9yZGVyZWQNCisJICovDQorCXByb3RlY3RlZCBvcmcuZWNsaXBzZS51bWwyLnVtbC5DbGFzcyBiYXNlX0NsYXNzOw0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXByb3RlY3RlZCBWaWV3SW1wbCgpIHsNCisJCXN1cGVyKCk7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHJvdGVjdGVkIEVDbGFzcyBlU3RhdGljQ2xhc3MoKSB7DQorCQlyZXR1cm4gTW9kZWxlbGVtZW50c1BhY2thZ2UuTGl0ZXJhbHMuVklFVzsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBvcmcuZWNsaXBzZS51bWwyLnVtbC5QYWNrYWdlIGdldEJhc2VfUGFja2FnZSgpIHsNCisJCWlmIChiYXNlX1BhY2thZ2UgIT0gbnVsbCAmJiBiYXNlX1BhY2thZ2UuZUlzUHJveHkoKSkgew0KKwkJCUludGVybmFsRU9iamVjdCBvbGRCYXNlX1BhY2thZ2UgPSAoSW50ZXJuYWxFT2JqZWN0KWJhc2VfUGFja2FnZTsNCisJCQliYXNlX1BhY2thZ2UgPSAob3JnLmVjbGlwc2UudW1sMi51bWwuUGFja2FnZSllUmVzb2x2ZVByb3h5KG9sZEJhc2VfUGFja2FnZSk7DQorCQkJaWYgKGJhc2VfUGFja2FnZSAhPSBvbGRCYXNlX1BhY2thZ2UpIHsNCisJCQkJaWYgKGVOb3RpZmljYXRpb25SZXF1aXJlZCgpKQ0KKwkJCQkJZU5vdGlmeShuZXcgRU5vdGlmaWNhdGlvbkltcGwodGhpcywgTm90aWZpY2F0aW9uLlJFU09MVkUsIE1vZGVsZWxlbWVudHNQYWNrYWdlLlZJRVdfX0JBU0VfUEFDS0FHRSwgb2xkQmFzZV9QYWNrYWdlLCBiYXNlX1BhY2thZ2UpKTsNCisJCQl9DQorCQl9DQorCQlyZXR1cm4gYmFzZV9QYWNrYWdlOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIG9yZy5lY2xpcHNlLnVtbDIudW1sLlBhY2thZ2UgYmFzaWNHZXRCYXNlX1BhY2thZ2UoKSB7DQorCQlyZXR1cm4gYmFzZV9QYWNrYWdlOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIHZvaWQgc2V0QmFzZV9QYWNrYWdlKG9yZy5lY2xpcHNlLnVtbDIudW1sLlBhY2thZ2UgbmV3QmFzZV9QYWNrYWdlKSB7DQorCQlvcmcuZWNsaXBzZS51bWwyLnVtbC5QYWNrYWdlIG9sZEJhc2VfUGFja2FnZSA9IGJhc2VfUGFja2FnZTsNCisJCWJhc2VfUGFja2FnZSA9IG5ld0Jhc2VfUGFja2FnZTsNCisJCWlmIChlTm90aWZpY2F0aW9uUmVxdWlyZWQoKSkNCisJCQllTm90aWZ5KG5ldyBFTm90aWZpY2F0aW9uSW1wbCh0aGlzLCBOb3RpZmljYXRpb24uU0VULCBNb2RlbGVsZW1lbnRzUGFja2FnZS5WSUVXX19CQVNFX1BBQ0tBR0UsIG9sZEJhc2VfUGFja2FnZSwgYmFzZV9QYWNrYWdlKSk7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgVmlld1BvaW50IGdldFZpZXdQb2ludCgpIHsNCisJCVZpZXdQb2ludCB2aWV3UG9pbnQgPSBiYXNpY0dldFZpZXdQb2ludCgpOw0KKwkJcmV0dXJuIHZpZXdQb2ludCAhPSBudWxsICYmIHZpZXdQb2ludC5lSXNQcm94eSgpID8gKFZpZXdQb2ludCllUmVzb2x2ZVByb3h5KChJbnRlcm5hbEVPYmplY3Qpdmlld1BvaW50KSA6IHZpZXdQb2ludDsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBWaWV3UG9pbnQgYmFzaWNHZXRWaWV3UG9pbnQoKSB7DQorCQkvLyBUT0RPOiBpbXBsZW1lbnQgdGhpcyBtZXRob2QgdG8gcmV0dXJuIHRoZSAnVmlldyBQb2ludCcgcmVmZXJlbmNlDQorCQkvLyAtPiBkbyBub3QgcGVyZm9ybSBwcm94eSByZXNvbHV0aW9uDQorCQkvLyBFbnN1cmUgdGhhdCB5b3UgcmVtb3ZlIEBnZW5lcmF0ZWQgb3IgbWFyayBpdCBAZ2VuZXJhdGVkIE5PVA0KKwkJdGhyb3cgbmV3IFVuc3VwcG9ydGVkT3BlcmF0aW9uRXhjZXB0aW9uKCk7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgdm9pZCBzZXRWaWV3UG9pbnQoVmlld1BvaW50IG5ld1ZpZXdQb2ludCkgew0KKwkJLy8gVE9ETzogaW1wbGVtZW50IHRoaXMgbWV0aG9kIHRvIHNldCB0aGUgJ1ZpZXcgUG9pbnQnIHJlZmVyZW5jZQ0KKwkJLy8gRW5zdXJlIHRoYXQgeW91IHJlbW92ZSBAZ2VuZXJhdGVkIG9yIG1hcmsgaXQgQGdlbmVyYXRlZCBOT1QNCisJCXRocm93IG5ldyBVbnN1cHBvcnRlZE9wZXJhdGlvbkV4Y2VwdGlvbigpOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIEVMaXN0PFN0YWtlaG9sZGVyPiBnZXRTdGFrZWhvbGRlcigpIHsNCisJCS8vIFRPRE86IGltcGxlbWVudCB0aGlzIG1ldGhvZCB0byByZXR1cm4gdGhlICdTdGFrZWhvbGRlcicgcmVmZXJlbmNlIGxpc3QNCisJCS8vIEVuc3VyZSB0aGF0IHlvdSByZW1vdmUgQGdlbmVyYXRlZCBvciBtYXJrIGl0IEBnZW5lcmF0ZWQgTk9UDQorCQl0aHJvdyBuZXcgVW5zdXBwb3J0ZWRPcGVyYXRpb25FeGNlcHRpb24oKTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBvcmcuZWNsaXBzZS51bWwyLnVtbC5DbGFzcyBnZXRCYXNlX0NsYXNzKCkgew0KKwkJaWYgKGJhc2VfQ2xhc3MgIT0gbnVsbCAmJiBiYXNlX0NsYXNzLmVJc1Byb3h5KCkpIHsNCisJCQlJbnRlcm5hbEVPYmplY3Qgb2xkQmFzZV9DbGFzcyA9IChJbnRlcm5hbEVPYmplY3QpYmFzZV9DbGFzczsNCisJCQliYXNlX0NsYXNzID0gKG9yZy5lY2xpcHNlLnVtbDIudW1sLkNsYXNzKWVSZXNvbHZlUHJveHkob2xkQmFzZV9DbGFzcyk7DQorCQkJaWYgKGJhc2VfQ2xhc3MgIT0gb2xkQmFzZV9DbGFzcykgew0KKwkJCQlpZiAoZU5vdGlmaWNhdGlvblJlcXVpcmVkKCkpDQorCQkJCQllTm90aWZ5KG5ldyBFTm90aWZpY2F0aW9uSW1wbCh0aGlzLCBOb3RpZmljYXRpb24uUkVTT0xWRSwgTW9kZWxlbGVtZW50c1BhY2thZ2UuVklFV19fQkFTRV9DTEFTUywgb2xkQmFzZV9DbGFzcywgYmFzZV9DbGFzcykpOw0KKwkJCX0NCisJCX0NCisJCXJldHVybiBiYXNlX0NsYXNzOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIG9yZy5lY2xpcHNlLnVtbDIudW1sLkNsYXNzIGJhc2ljR2V0QmFzZV9DbGFzcygpIHsNCisJCXJldHVybiBiYXNlX0NsYXNzOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIHZvaWQgc2V0QmFzZV9DbGFzcyhvcmcuZWNsaXBzZS51bWwyLnVtbC5DbGFzcyBuZXdCYXNlX0NsYXNzKSB7DQorCQlvcmcuZWNsaXBzZS51bWwyLnVtbC5DbGFzcyBvbGRCYXNlX0NsYXNzID0gYmFzZV9DbGFzczsNCisJCWJhc2VfQ2xhc3MgPSBuZXdCYXNlX0NsYXNzOw0KKwkJaWYgKGVOb3RpZmljYXRpb25SZXF1aXJlZCgpKQ0KKwkJCWVOb3RpZnkobmV3IEVOb3RpZmljYXRpb25JbXBsKHRoaXMsIE5vdGlmaWNhdGlvbi5TRVQsIE1vZGVsZWxlbWVudHNQYWNrYWdlLlZJRVdfX0JBU0VfQ0xBU1MsIG9sZEJhc2VfQ2xhc3MsIGJhc2VfQ2xhc3MpKTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgT2JqZWN0IGVHZXQoaW50IGZlYXR1cmVJRCwgYm9vbGVhbiByZXNvbHZlLCBib29sZWFuIGNvcmVUeXBlKSB7DQorCQlzd2l0Y2ggKGZlYXR1cmVJRCkgew0KKwkJCWNhc2UgTW9kZWxlbGVtZW50c1BhY2thZ2UuVklFV19fQkFTRV9QQUNLQUdFOg0KKwkJCQlpZiAocmVzb2x2ZSkgcmV0dXJuIGdldEJhc2VfUGFja2FnZSgpOw0KKwkJCQlyZXR1cm4gYmFzaWNHZXRCYXNlX1BhY2thZ2UoKTsNCisJCQljYXNlIE1vZGVsZWxlbWVudHNQYWNrYWdlLlZJRVdfX1ZJRVdfUE9JTlQ6DQorCQkJCWlmIChyZXNvbHZlKSByZXR1cm4gZ2V0Vmlld1BvaW50KCk7DQorCQkJCXJldHVybiBiYXNpY0dldFZpZXdQb2ludCgpOw0KKwkJCWNhc2UgTW9kZWxlbGVtZW50c1BhY2thZ2UuVklFV19fU1RBS0VIT0xERVI6DQorCQkJCXJldHVybiBnZXRTdGFrZWhvbGRlcigpOw0KKwkJCWNhc2UgTW9kZWxlbGVtZW50c1BhY2thZ2UuVklFV19fQkFTRV9DTEFTUzoNCisJCQkJaWYgKHJlc29sdmUpIHJldHVybiBnZXRCYXNlX0NsYXNzKCk7DQorCQkJCXJldHVybiBiYXNpY0dldEJhc2VfQ2xhc3MoKTsNCisJCX0NCisJCXJldHVybiBzdXBlci5lR2V0KGZlYXR1cmVJRCwgcmVzb2x2ZSwgY29yZVR5cGUpOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQFN1cHByZXNzV2FybmluZ3MoInVuY2hlY2tlZCIpDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgdm9pZCBlU2V0KGludCBmZWF0dXJlSUQsIE9iamVjdCBuZXdWYWx1ZSkgew0KKwkJc3dpdGNoIChmZWF0dXJlSUQpIHsNCisJCQljYXNlIE1vZGVsZWxlbWVudHNQYWNrYWdlLlZJRVdfX0JBU0VfUEFDS0FHRToNCisJCQkJc2V0QmFzZV9QYWNrYWdlKChvcmcuZWNsaXBzZS51bWwyLnVtbC5QYWNrYWdlKW5ld1ZhbHVlKTsNCisJCQkJcmV0dXJuOw0KKwkJCWNhc2UgTW9kZWxlbGVtZW50c1BhY2thZ2UuVklFV19fVklFV19QT0lOVDoNCisJCQkJc2V0Vmlld1BvaW50KChWaWV3UG9pbnQpbmV3VmFsdWUpOw0KKwkJCQlyZXR1cm47DQorCQkJY2FzZSBNb2RlbGVsZW1lbnRzUGFja2FnZS5WSUVXX19TVEFLRUhPTERFUjoNCisJCQkJZ2V0U3Rha2Vob2xkZXIoKS5jbGVhcigpOw0KKwkJCQlnZXRTdGFrZWhvbGRlcigpLmFkZEFsbCgoQ29sbGVjdGlvbjw/IGV4dGVuZHMgU3Rha2Vob2xkZXI+KW5ld1ZhbHVlKTsNCisJCQkJcmV0dXJuOw0KKwkJCWNhc2UgTW9kZWxlbGVtZW50c1BhY2thZ2UuVklFV19fQkFTRV9DTEFTUzoNCisJCQkJc2V0QmFzZV9DbGFzcygob3JnLmVjbGlwc2UudW1sMi51bWwuQ2xhc3MpbmV3VmFsdWUpOw0KKwkJCQlyZXR1cm47DQorCQl9DQorCQlzdXBlci5lU2V0KGZlYXR1cmVJRCwgbmV3VmFsdWUpOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXB1YmxpYyB2b2lkIGVVbnNldChpbnQgZmVhdHVyZUlEKSB7DQorCQlzd2l0Y2ggKGZlYXR1cmVJRCkgew0KKwkJCWNhc2UgTW9kZWxlbGVtZW50c1BhY2thZ2UuVklFV19fQkFTRV9QQUNLQUdFOg0KKwkJCQlzZXRCYXNlX1BhY2thZ2UoKG9yZy5lY2xpcHNlLnVtbDIudW1sLlBhY2thZ2UpbnVsbCk7DQorCQkJCXJldHVybjsNCisJCQljYXNlIE1vZGVsZWxlbWVudHNQYWNrYWdlLlZJRVdfX1ZJRVdfUE9JTlQ6DQorCQkJCXNldFZpZXdQb2ludCgoVmlld1BvaW50KW51bGwpOw0KKwkJCQlyZXR1cm47DQorCQkJY2FzZSBNb2RlbGVsZW1lbnRzUGFja2FnZS5WSUVXX19TVEFLRUhPTERFUjoNCisJCQkJZ2V0U3Rha2Vob2xkZXIoKS5jbGVhcigpOw0KKwkJCQlyZXR1cm47DQorCQkJY2FzZSBNb2RlbGVsZW1lbnRzUGFja2FnZS5WSUVXX19CQVNFX0NMQVNTOg0KKwkJCQlzZXRCYXNlX0NsYXNzKChvcmcuZWNsaXBzZS51bWwyLnVtbC5DbGFzcyludWxsKTsNCisJCQkJcmV0dXJuOw0KKwkJfQ0KKwkJc3VwZXIuZVVuc2V0KGZlYXR1cmVJRCk7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIGJvb2xlYW4gZUlzU2V0KGludCBmZWF0dXJlSUQpIHsNCisJCXN3aXRjaCAoZmVhdHVyZUlEKSB7DQorCQkJY2FzZSBNb2RlbGVsZW1lbnRzUGFja2FnZS5WSUVXX19CQVNFX1BBQ0tBR0U6DQorCQkJCXJldHVybiBiYXNlX1BhY2thZ2UgIT0gbnVsbDsNCisJCQljYXNlIE1vZGVsZWxlbWVudHNQYWNrYWdlLlZJRVdfX1ZJRVdfUE9JTlQ6DQorCQkJCXJldHVybiBiYXNpY0dldFZpZXdQb2ludCgpICE9IG51bGw7DQorCQkJY2FzZSBNb2RlbGVsZW1lbnRzUGFja2FnZS5WSUVXX19TVEFLRUhPTERFUjoNCisJCQkJcmV0dXJuICFnZXRTdGFrZWhvbGRlcigpLmlzRW1wdHkoKTsNCisJCQljYXNlIE1vZGVsZWxlbWVudHNQYWNrYWdlLlZJRVdfX0JBU0VfQ0xBU1M6DQorCQkJCXJldHVybiBiYXNlX0NsYXNzICE9IG51bGw7DQorCQl9DQorCQlyZXR1cm4gc3VwZXIuZUlzU2V0KGZlYXR1cmVJRCk7DQorCX0NCisNCit9IC8vVmlld0ltcGwNCmRpZmYgLS1naXQgYS9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9tb2RlbGVsZW1lbnRzL2ludGVybmFsL2ltcGwvVmlld1BvaW50SW1wbC5qYXZhIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvbW9kZWxlbGVtZW50cy9pbnRlcm5hbC9pbXBsL1ZpZXdQb2ludEltcGwuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYTU1MTgzCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvbW9kZWxlbGVtZW50cy9pbnRlcm5hbC9pbXBsL1ZpZXdQb2ludEltcGwuamF2YQpAQCAtMCwwICsxLDQ1MyBAQAorLyoqDQorICogQ29weXJpZ2h0IChjKSAyMDE1IENFQSBMSVNULg0KKyAqIA0KKyAqICBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQorICogIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KKyAqICB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KKyAqICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqLw0KK3BhY2thZ2Ugb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0Lm1vZGVsZWxlbWVudHMuaW50ZXJuYWwuaW1wbDsNCisNCitpbXBvcnQgamF2YS51dGlsLkNvbGxlY3Rpb247DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jb21tb24ubm90aWZ5Lk5vdGlmaWNhdGlvbjsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi51dGlsLkVMaXN0Ow0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRUNsYXNzOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuSW50ZXJuYWxFT2JqZWN0Ow0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuaW1wbC5FTm90aWZpY2F0aW9uSW1wbDsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLmltcGwuTWluaW1hbEVPYmplY3RJbXBsOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUudXRpbC5FRGF0YVR5cGVVbmlxdWVFTGlzdDsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLnV0aWwuRU9iamVjdFJlc29sdmluZ0VMaXN0Ow0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQubW9kZWxlbGVtZW50cy5Nb2RlbGVsZW1lbnRzUGFja2FnZTsNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0Lm1vZGVsZWxlbWVudHMuU3Rha2Vob2xkZXI7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5tb2RlbGVsZW1lbnRzLlZpZXdQb2ludDsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UudW1sMi51bWwuQmVoYXZpb3I7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnVtbDIudW1sLkNvbW1lbnQ7DQorDQorLyoqDQorICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisgKiBBbiBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgbW9kZWwgb2JqZWN0ICc8ZW0+PGI+VmlldyBQb2ludDwvYj48L2VtPicuDQorICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorICogPHA+DQorICogVGhlIGZvbGxvd2luZyBmZWF0dXJlcyBhcmUgaW1wbGVtZW50ZWQ6DQorICogPHVsPg0KKyAqICAgPGxpPntAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQubW9kZWxlbGVtZW50cy5pbnRlcm5hbC5pbXBsLlZpZXdQb2ludEltcGwjZ2V0QmFzZV9DbGFzcyA8ZW0+QmFzZSBDbGFzczwvZW0+fTwvbGk+DQorICogICA8bGk+e0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5tb2RlbGVsZW1lbnRzLmludGVybmFsLmltcGwuVmlld1BvaW50SW1wbCNnZXRTdGFrZWhvbGRlciA8ZW0+U3Rha2Vob2xkZXI8L2VtPn08L2xpPg0KKyAqICAgPGxpPntAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQubW9kZWxlbGVtZW50cy5pbnRlcm5hbC5pbXBsLlZpZXdQb2ludEltcGwjZ2V0UHVycG9zZSA8ZW0+UHVycG9zZTwvZW0+fTwvbGk+DQorICogICA8bGk+e0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5tb2RlbGVsZW1lbnRzLmludGVybmFsLmltcGwuVmlld1BvaW50SW1wbCNnZXRDb25jZXJuTGlzdCA8ZW0+Q29uY2VybiBMaXN0PC9lbT59PC9saT4NCisgKiAgIDxsaT57QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0Lm1vZGVsZWxlbWVudHMuaW50ZXJuYWwuaW1wbC5WaWV3UG9pbnRJbXBsI2dldExhbmd1YWdlIDxlbT5MYW5ndWFnZTwvZW0+fTwvbGk+DQorICogICA8bGk+e0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5tb2RlbGVsZW1lbnRzLmludGVybmFsLmltcGwuVmlld1BvaW50SW1wbCNnZXRNZXRob2QgPGVtPk1ldGhvZDwvZW0+fTwvbGk+DQorICogICA8bGk+e0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5tb2RlbGVsZW1lbnRzLmludGVybmFsLmltcGwuVmlld1BvaW50SW1wbCNnZXRQcmVzZW50YXRpb24gPGVtPlByZXNlbnRhdGlvbjwvZW0+fTwvbGk+DQorICogICA8bGk+e0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5tb2RlbGVsZW1lbnRzLmludGVybmFsLmltcGwuVmlld1BvaW50SW1wbCNnZXRDb25jZXJuIDxlbT5Db25jZXJuPC9lbT59PC9saT4NCisgKiA8L3VsPg0KKyAqIDwvcD4NCisgKg0KKyAqIEBnZW5lcmF0ZWQNCisgKi8NCitwdWJsaWMgY2xhc3MgVmlld1BvaW50SW1wbCBleHRlbmRzIE1pbmltYWxFT2JqZWN0SW1wbC5Db250YWluZXIgaW1wbGVtZW50cyBWaWV3UG9pbnQgew0KKwkvKioNCisJICogVGhlIGNhY2hlZCB2YWx1ZSBvZiB0aGUgJ3tAbGluayAjZ2V0QmFzZV9DbGFzcygpIDxlbT5CYXNlIENsYXNzPC9lbT59JyByZWZlcmVuY2UuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAc2VlICNnZXRCYXNlX0NsYXNzKCkNCisJICogQGdlbmVyYXRlZA0KKwkgKiBAb3JkZXJlZA0KKwkgKi8NCisJcHJvdGVjdGVkIG9yZy5lY2xpcHNlLnVtbDIudW1sLkNsYXNzIGJhc2VfQ2xhc3M7DQorDQorCS8qKg0KKwkgKiBUaGUgY2FjaGVkIHZhbHVlIG9mIHRoZSAne0BsaW5rICNnZXRTdGFrZWhvbGRlcigpIDxlbT5TdGFrZWhvbGRlcjwvZW0+fScgcmVmZXJlbmNlIGxpc3QuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAc2VlICNnZXRTdGFrZWhvbGRlcigpDQorCSAqIEBnZW5lcmF0ZWQNCisJICogQG9yZGVyZWQNCisJICovDQorCXByb3RlY3RlZCBFTGlzdDxTdGFrZWhvbGRlcj4gc3Rha2Vob2xkZXI7DQorDQorCS8qKg0KKwkgKiBUaGUgZGVmYXVsdCB2YWx1ZSBvZiB0aGUgJ3tAbGluayAjZ2V0UHVycG9zZSgpIDxlbT5QdXJwb3NlPC9lbT59JyBhdHRyaWJ1dGUuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAc2VlICNnZXRQdXJwb3NlKCkNCisJICogQGdlbmVyYXRlZA0KKwkgKiBAb3JkZXJlZA0KKwkgKi8NCisJcHJvdGVjdGVkIHN0YXRpYyBmaW5hbCBTdHJpbmcgUFVSUE9TRV9FREVGQVVMVCA9IG51bGw7DQorDQorCS8qKg0KKwkgKiBUaGUgY2FjaGVkIHZhbHVlIG9mIHRoZSAne0BsaW5rICNnZXRQdXJwb3NlKCkgPGVtPlB1cnBvc2U8L2VtPn0nIGF0dHJpYnV0ZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBzZWUgI2dldFB1cnBvc2UoKQ0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqIEBvcmRlcmVkDQorCSAqLw0KKwlwcm90ZWN0ZWQgU3RyaW5nIHB1cnBvc2UgPSBQVVJQT1NFX0VERUZBVUxUOw0KKw0KKwkvKioNCisJICogVGhlIGNhY2hlZCB2YWx1ZSBvZiB0aGUgJ3tAbGluayAjZ2V0Q29uY2Vybkxpc3QoKSA8ZW0+Q29uY2VybiBMaXN0PC9lbT59JyByZWZlcmVuY2UgbGlzdC4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBzZWUgI2dldENvbmNlcm5MaXN0KCkNCisJICogQGdlbmVyYXRlZA0KKwkgKiBAb3JkZXJlZA0KKwkgKi8NCisJcHJvdGVjdGVkIEVMaXN0PENvbW1lbnQ+IGNvbmNlcm5MaXN0Ow0KKw0KKwkvKioNCisJICogVGhlIGNhY2hlZCB2YWx1ZSBvZiB0aGUgJ3tAbGluayAjZ2V0TGFuZ3VhZ2UoKSA8ZW0+TGFuZ3VhZ2U8L2VtPn0nIGF0dHJpYnV0ZSBsaXN0Lg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHNlZSAjZ2V0TGFuZ3VhZ2UoKQ0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqIEBvcmRlcmVkDQorCSAqLw0KKwlwcm90ZWN0ZWQgRUxpc3Q8U3RyaW5nPiBsYW5ndWFnZTsNCisNCisJLyoqDQorCSAqIFRoZSBjYWNoZWQgdmFsdWUgb2YgdGhlICd7QGxpbmsgI2dldFByZXNlbnRhdGlvbigpIDxlbT5QcmVzZW50YXRpb248L2VtPn0nIGF0dHJpYnV0ZSBsaXN0Lg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHNlZSAjZ2V0UHJlc2VudGF0aW9uKCkNCisJICogQGdlbmVyYXRlZA0KKwkgKiBAb3JkZXJlZA0KKwkgKi8NCisJcHJvdGVjdGVkIEVMaXN0PFN0cmluZz4gcHJlc2VudGF0aW9uOw0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXByb3RlY3RlZCBWaWV3UG9pbnRJbXBsKCkgew0KKwkJc3VwZXIoKTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwcm90ZWN0ZWQgRUNsYXNzIGVTdGF0aWNDbGFzcygpIHsNCisJCXJldHVybiBNb2RlbGVsZW1lbnRzUGFja2FnZS5MaXRlcmFscy5WSUVXX1BPSU5UOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIG9yZy5lY2xpcHNlLnVtbDIudW1sLkNsYXNzIGdldEJhc2VfQ2xhc3MoKSB7DQorCQlpZiAoYmFzZV9DbGFzcyAhPSBudWxsICYmIGJhc2VfQ2xhc3MuZUlzUHJveHkoKSkgew0KKwkJCUludGVybmFsRU9iamVjdCBvbGRCYXNlX0NsYXNzID0gKEludGVybmFsRU9iamVjdCliYXNlX0NsYXNzOw0KKwkJCWJhc2VfQ2xhc3MgPSAob3JnLmVjbGlwc2UudW1sMi51bWwuQ2xhc3MpZVJlc29sdmVQcm94eShvbGRCYXNlX0NsYXNzKTsNCisJCQlpZiAoYmFzZV9DbGFzcyAhPSBvbGRCYXNlX0NsYXNzKSB7DQorCQkJCWlmIChlTm90aWZpY2F0aW9uUmVxdWlyZWQoKSkNCisJCQkJCWVOb3RpZnkobmV3IEVOb3RpZmljYXRpb25JbXBsKHRoaXMsIE5vdGlmaWNhdGlvbi5SRVNPTFZFLCBNb2RlbGVsZW1lbnRzUGFja2FnZS5WSUVXX1BPSU5UX19CQVNFX0NMQVNTLCBvbGRCYXNlX0NsYXNzLCBiYXNlX0NsYXNzKSk7DQorCQkJfQ0KKwkJfQ0KKwkJcmV0dXJuIGJhc2VfQ2xhc3M7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgb3JnLmVjbGlwc2UudW1sMi51bWwuQ2xhc3MgYmFzaWNHZXRCYXNlX0NsYXNzKCkgew0KKwkJcmV0dXJuIGJhc2VfQ2xhc3M7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgdm9pZCBzZXRCYXNlX0NsYXNzKG9yZy5lY2xpcHNlLnVtbDIudW1sLkNsYXNzIG5ld0Jhc2VfQ2xhc3MpIHsNCisJCW9yZy5lY2xpcHNlLnVtbDIudW1sLkNsYXNzIG9sZEJhc2VfQ2xhc3MgPSBiYXNlX0NsYXNzOw0KKwkJYmFzZV9DbGFzcyA9IG5ld0Jhc2VfQ2xhc3M7DQorCQlpZiAoZU5vdGlmaWNhdGlvblJlcXVpcmVkKCkpDQorCQkJZU5vdGlmeShuZXcgRU5vdGlmaWNhdGlvbkltcGwodGhpcywgTm90aWZpY2F0aW9uLlNFVCwgTW9kZWxlbGVtZW50c1BhY2thZ2UuVklFV19QT0lOVF9fQkFTRV9DTEFTUywgb2xkQmFzZV9DbGFzcywgYmFzZV9DbGFzcykpOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIEVMaXN0PFN0YWtlaG9sZGVyPiBnZXRTdGFrZWhvbGRlcigpIHsNCisJCWlmIChzdGFrZWhvbGRlciA9PSBudWxsKSB7DQorCQkJc3Rha2Vob2xkZXIgPSBuZXcgRU9iamVjdFJlc29sdmluZ0VMaXN0PFN0YWtlaG9sZGVyPihTdGFrZWhvbGRlci5jbGFzcywgdGhpcywgTW9kZWxlbGVtZW50c1BhY2thZ2UuVklFV19QT0lOVF9fU1RBS0VIT0xERVIpOw0KKwkJfQ0KKwkJcmV0dXJuIHN0YWtlaG9sZGVyOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIFN0cmluZyBnZXRQdXJwb3NlKCkgew0KKwkJcmV0dXJuIHB1cnBvc2U7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgdm9pZCBzZXRQdXJwb3NlKFN0cmluZyBuZXdQdXJwb3NlKSB7DQorCQlTdHJpbmcgb2xkUHVycG9zZSA9IHB1cnBvc2U7DQorCQlwdXJwb3NlID0gbmV3UHVycG9zZTsNCisJCWlmIChlTm90aWZpY2F0aW9uUmVxdWlyZWQoKSkNCisJCQllTm90aWZ5KG5ldyBFTm90aWZpY2F0aW9uSW1wbCh0aGlzLCBOb3RpZmljYXRpb24uU0VULCBNb2RlbGVsZW1lbnRzUGFja2FnZS5WSUVXX1BPSU5UX19QVVJQT1NFLCBvbGRQdXJwb3NlLCBwdXJwb3NlKSk7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgRUxpc3Q8Q29tbWVudD4gZ2V0Q29uY2Vybkxpc3QoKSB7DQorCQlpZiAoY29uY2Vybkxpc3QgPT0gbnVsbCkgew0KKwkJCWNvbmNlcm5MaXN0ID0gbmV3IEVPYmplY3RSZXNvbHZpbmdFTGlzdDxDb21tZW50PihDb21tZW50LmNsYXNzLCB0aGlzLCBNb2RlbGVsZW1lbnRzUGFja2FnZS5WSUVXX1BPSU5UX19DT05DRVJOX0xJU1QpOw0KKwkJfQ0KKwkJcmV0dXJuIGNvbmNlcm5MaXN0Ow0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIEVMaXN0PFN0cmluZz4gZ2V0TGFuZ3VhZ2UoKSB7DQorCQlpZiAobGFuZ3VhZ2UgPT0gbnVsbCkgew0KKwkJCWxhbmd1YWdlID0gbmV3IEVEYXRhVHlwZVVuaXF1ZUVMaXN0PFN0cmluZz4oU3RyaW5nLmNsYXNzLCB0aGlzLCBNb2RlbGVsZW1lbnRzUGFja2FnZS5WSUVXX1BPSU5UX19MQU5HVUFHRSk7DQorCQl9DQorCQlyZXR1cm4gbGFuZ3VhZ2U7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgRUxpc3Q8QmVoYXZpb3I+IGdldE1ldGhvZCgpIHsNCisJCS8vIFRPRE86IGltcGxlbWVudCB0aGlzIG1ldGhvZCB0byByZXR1cm4gdGhlICdNZXRob2QnIHJlZmVyZW5jZSBsaXN0DQorCQkvLyBFbnN1cmUgdGhhdCB5b3UgcmVtb3ZlIEBnZW5lcmF0ZWQgb3IgbWFyayBpdCBAZ2VuZXJhdGVkIE5PVA0KKwkJdGhyb3cgbmV3IFVuc3VwcG9ydGVkT3BlcmF0aW9uRXhjZXB0aW9uKCk7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgQmVoYXZpb3IgZ2V0TWV0aG9kKFN0cmluZyBuYW1lKSB7DQorCQlyZXR1cm4gZ2V0TWV0aG9kKG5hbWUsIGZhbHNlLCBudWxsKTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBCZWhhdmlvciBnZXRNZXRob2QoU3RyaW5nIG5hbWUsIGJvb2xlYW4gaWdub3JlQ2FzZSwgRUNsYXNzIGVDbGFzcykgew0KKwkJbWV0aG9kTG9vcDogZm9yIChCZWhhdmlvciBtZXRob2QgOiBnZXRNZXRob2QoKSkgew0KKwkJCWlmIChlQ2xhc3MgIT0gbnVsbCAmJiAhZUNsYXNzLmlzSW5zdGFuY2UobWV0aG9kKSkNCisJCQkJY29udGludWUgbWV0aG9kTG9vcDsNCisJCQlpZiAobmFtZSAhPSBudWxsICYmICEoaWdub3JlQ2FzZSA/IG5hbWUuZXF1YWxzSWdub3JlQ2FzZShtZXRob2QuZ2V0TmFtZSgpKSA6IG5hbWUuZXF1YWxzKG1ldGhvZC5nZXROYW1lKCkpKSkNCisJCQkJY29udGludWUgbWV0aG9kTG9vcDsNCisJCQlyZXR1cm4gbWV0aG9kOw0KKwkJfQ0KKwkJcmV0dXJuIG51bGw7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgRUxpc3Q8U3RyaW5nPiBnZXRQcmVzZW50YXRpb24oKSB7DQorCQlpZiAocHJlc2VudGF0aW9uID09IG51bGwpIHsNCisJCQlwcmVzZW50YXRpb24gPSBuZXcgRURhdGFUeXBlVW5pcXVlRUxpc3Q8U3RyaW5nPihTdHJpbmcuY2xhc3MsIHRoaXMsIE1vZGVsZWxlbWVudHNQYWNrYWdlLlZJRVdfUE9JTlRfX1BSRVNFTlRBVElPTik7DQorCQl9DQorCQlyZXR1cm4gcHJlc2VudGF0aW9uOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIEVMaXN0PFN0cmluZz4gZ2V0Q29uY2VybigpIHsNCisJCS8vIFRPRE86IGltcGxlbWVudCB0aGlzIG1ldGhvZCB0byByZXR1cm4gdGhlICdDb25jZXJuJyBhdHRyaWJ1dGUgbGlzdA0KKwkJLy8gRW5zdXJlIHRoYXQgeW91IHJlbW92ZSBAZ2VuZXJhdGVkIG9yIG1hcmsgaXQgQGdlbmVyYXRlZCBOT1QNCisJCXRocm93IG5ldyBVbnN1cHBvcnRlZE9wZXJhdGlvbkV4Y2VwdGlvbigpOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXB1YmxpYyBPYmplY3QgZUdldChpbnQgZmVhdHVyZUlELCBib29sZWFuIHJlc29sdmUsIGJvb2xlYW4gY29yZVR5cGUpIHsNCisJCXN3aXRjaCAoZmVhdHVyZUlEKSB7DQorCQkJY2FzZSBNb2RlbGVsZW1lbnRzUGFja2FnZS5WSUVXX1BPSU5UX19CQVNFX0NMQVNTOg0KKwkJCQlpZiAocmVzb2x2ZSkgcmV0dXJuIGdldEJhc2VfQ2xhc3MoKTsNCisJCQkJcmV0dXJuIGJhc2ljR2V0QmFzZV9DbGFzcygpOw0KKwkJCWNhc2UgTW9kZWxlbGVtZW50c1BhY2thZ2UuVklFV19QT0lOVF9fU1RBS0VIT0xERVI6DQorCQkJCXJldHVybiBnZXRTdGFrZWhvbGRlcigpOw0KKwkJCWNhc2UgTW9kZWxlbGVtZW50c1BhY2thZ2UuVklFV19QT0lOVF9fUFVSUE9TRToNCisJCQkJcmV0dXJuIGdldFB1cnBvc2UoKTsNCisJCQljYXNlIE1vZGVsZWxlbWVudHNQYWNrYWdlLlZJRVdfUE9JTlRfX0NPTkNFUk5fTElTVDoNCisJCQkJcmV0dXJuIGdldENvbmNlcm5MaXN0KCk7DQorCQkJY2FzZSBNb2RlbGVsZW1lbnRzUGFja2FnZS5WSUVXX1BPSU5UX19MQU5HVUFHRToNCisJCQkJcmV0dXJuIGdldExhbmd1YWdlKCk7DQorCQkJY2FzZSBNb2RlbGVsZW1lbnRzUGFja2FnZS5WSUVXX1BPSU5UX19NRVRIT0Q6DQorCQkJCXJldHVybiBnZXRNZXRob2QoKTsNCisJCQljYXNlIE1vZGVsZWxlbWVudHNQYWNrYWdlLlZJRVdfUE9JTlRfX1BSRVNFTlRBVElPTjoNCisJCQkJcmV0dXJuIGdldFByZXNlbnRhdGlvbigpOw0KKwkJCWNhc2UgTW9kZWxlbGVtZW50c1BhY2thZ2UuVklFV19QT0lOVF9fQ09OQ0VSTjoNCisJCQkJcmV0dXJuIGdldENvbmNlcm4oKTsNCisJCX0NCisJCXJldHVybiBzdXBlci5lR2V0KGZlYXR1cmVJRCwgcmVzb2x2ZSwgY29yZVR5cGUpOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQFN1cHByZXNzV2FybmluZ3MoInVuY2hlY2tlZCIpDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgdm9pZCBlU2V0KGludCBmZWF0dXJlSUQsIE9iamVjdCBuZXdWYWx1ZSkgew0KKwkJc3dpdGNoIChmZWF0dXJlSUQpIHsNCisJCQljYXNlIE1vZGVsZWxlbWVudHNQYWNrYWdlLlZJRVdfUE9JTlRfX0JBU0VfQ0xBU1M6DQorCQkJCXNldEJhc2VfQ2xhc3MoKG9yZy5lY2xpcHNlLnVtbDIudW1sLkNsYXNzKW5ld1ZhbHVlKTsNCisJCQkJcmV0dXJuOw0KKwkJCWNhc2UgTW9kZWxlbGVtZW50c1BhY2thZ2UuVklFV19QT0lOVF9fU1RBS0VIT0xERVI6DQorCQkJCWdldFN0YWtlaG9sZGVyKCkuY2xlYXIoKTsNCisJCQkJZ2V0U3Rha2Vob2xkZXIoKS5hZGRBbGwoKENvbGxlY3Rpb248PyBleHRlbmRzIFN0YWtlaG9sZGVyPiluZXdWYWx1ZSk7DQorCQkJCXJldHVybjsNCisJCQljYXNlIE1vZGVsZWxlbWVudHNQYWNrYWdlLlZJRVdfUE9JTlRfX1BVUlBPU0U6DQorCQkJCXNldFB1cnBvc2UoKFN0cmluZyluZXdWYWx1ZSk7DQorCQkJCXJldHVybjsNCisJCQljYXNlIE1vZGVsZWxlbWVudHNQYWNrYWdlLlZJRVdfUE9JTlRfX0NPTkNFUk5fTElTVDoNCisJCQkJZ2V0Q29uY2Vybkxpc3QoKS5jbGVhcigpOw0KKwkJCQlnZXRDb25jZXJuTGlzdCgpLmFkZEFsbCgoQ29sbGVjdGlvbjw/IGV4dGVuZHMgQ29tbWVudD4pbmV3VmFsdWUpOw0KKwkJCQlyZXR1cm47DQorCQkJY2FzZSBNb2RlbGVsZW1lbnRzUGFja2FnZS5WSUVXX1BPSU5UX19MQU5HVUFHRToNCisJCQkJZ2V0TGFuZ3VhZ2UoKS5jbGVhcigpOw0KKwkJCQlnZXRMYW5ndWFnZSgpLmFkZEFsbCgoQ29sbGVjdGlvbjw/IGV4dGVuZHMgU3RyaW5nPiluZXdWYWx1ZSk7DQorCQkJCXJldHVybjsNCisJCQljYXNlIE1vZGVsZWxlbWVudHNQYWNrYWdlLlZJRVdfUE9JTlRfX01FVEhPRDoNCisJCQkJZ2V0TWV0aG9kKCkuY2xlYXIoKTsNCisJCQkJZ2V0TWV0aG9kKCkuYWRkQWxsKChDb2xsZWN0aW9uPD8gZXh0ZW5kcyBCZWhhdmlvcj4pbmV3VmFsdWUpOw0KKwkJCQlyZXR1cm47DQorCQkJY2FzZSBNb2RlbGVsZW1lbnRzUGFja2FnZS5WSUVXX1BPSU5UX19QUkVTRU5UQVRJT046DQorCQkJCWdldFByZXNlbnRhdGlvbigpLmNsZWFyKCk7DQorCQkJCWdldFByZXNlbnRhdGlvbigpLmFkZEFsbCgoQ29sbGVjdGlvbjw/IGV4dGVuZHMgU3RyaW5nPiluZXdWYWx1ZSk7DQorCQkJCXJldHVybjsNCisJCQljYXNlIE1vZGVsZWxlbWVudHNQYWNrYWdlLlZJRVdfUE9JTlRfX0NPTkNFUk46DQorCQkJCWdldENvbmNlcm4oKS5jbGVhcigpOw0KKwkJCQlnZXRDb25jZXJuKCkuYWRkQWxsKChDb2xsZWN0aW9uPD8gZXh0ZW5kcyBTdHJpbmc+KW5ld1ZhbHVlKTsNCisJCQkJcmV0dXJuOw0KKwkJfQ0KKwkJc3VwZXIuZVNldChmZWF0dXJlSUQsIG5ld1ZhbHVlKTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgdm9pZCBlVW5zZXQoaW50IGZlYXR1cmVJRCkgew0KKwkJc3dpdGNoIChmZWF0dXJlSUQpIHsNCisJCQljYXNlIE1vZGVsZWxlbWVudHNQYWNrYWdlLlZJRVdfUE9JTlRfX0JBU0VfQ0xBU1M6DQorCQkJCXNldEJhc2VfQ2xhc3MoKG9yZy5lY2xpcHNlLnVtbDIudW1sLkNsYXNzKW51bGwpOw0KKwkJCQlyZXR1cm47DQorCQkJY2FzZSBNb2RlbGVsZW1lbnRzUGFja2FnZS5WSUVXX1BPSU5UX19TVEFLRUhPTERFUjoNCisJCQkJZ2V0U3Rha2Vob2xkZXIoKS5jbGVhcigpOw0KKwkJCQlyZXR1cm47DQorCQkJY2FzZSBNb2RlbGVsZW1lbnRzUGFja2FnZS5WSUVXX1BPSU5UX19QVVJQT1NFOg0KKwkJCQlzZXRQdXJwb3NlKFBVUlBPU0VfRURFRkFVTFQpOw0KKwkJCQlyZXR1cm47DQorCQkJY2FzZSBNb2RlbGVsZW1lbnRzUGFja2FnZS5WSUVXX1BPSU5UX19DT05DRVJOX0xJU1Q6DQorCQkJCWdldENvbmNlcm5MaXN0KCkuY2xlYXIoKTsNCisJCQkJcmV0dXJuOw0KKwkJCWNhc2UgTW9kZWxlbGVtZW50c1BhY2thZ2UuVklFV19QT0lOVF9fTEFOR1VBR0U6DQorCQkJCWdldExhbmd1YWdlKCkuY2xlYXIoKTsNCisJCQkJcmV0dXJuOw0KKwkJCWNhc2UgTW9kZWxlbGVtZW50c1BhY2thZ2UuVklFV19QT0lOVF9fTUVUSE9EOg0KKwkJCQlnZXRNZXRob2QoKS5jbGVhcigpOw0KKwkJCQlyZXR1cm47DQorCQkJY2FzZSBNb2RlbGVsZW1lbnRzUGFja2FnZS5WSUVXX1BPSU5UX19QUkVTRU5UQVRJT046DQorCQkJCWdldFByZXNlbnRhdGlvbigpLmNsZWFyKCk7DQorCQkJCXJldHVybjsNCisJCQljYXNlIE1vZGVsZWxlbWVudHNQYWNrYWdlLlZJRVdfUE9JTlRfX0NPTkNFUk46DQorCQkJCWdldENvbmNlcm4oKS5jbGVhcigpOw0KKwkJCQlyZXR1cm47DQorCQl9DQorCQlzdXBlci5lVW5zZXQoZmVhdHVyZUlEKTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgYm9vbGVhbiBlSXNTZXQoaW50IGZlYXR1cmVJRCkgew0KKwkJc3dpdGNoIChmZWF0dXJlSUQpIHsNCisJCQljYXNlIE1vZGVsZWxlbWVudHNQYWNrYWdlLlZJRVdfUE9JTlRfX0JBU0VfQ0xBU1M6DQorCQkJCXJldHVybiBiYXNlX0NsYXNzICE9IG51bGw7DQorCQkJY2FzZSBNb2RlbGVsZW1lbnRzUGFja2FnZS5WSUVXX1BPSU5UX19TVEFLRUhPTERFUjoNCisJCQkJcmV0dXJuIHN0YWtlaG9sZGVyICE9IG51bGwgJiYgIXN0YWtlaG9sZGVyLmlzRW1wdHkoKTsNCisJCQljYXNlIE1vZGVsZWxlbWVudHNQYWNrYWdlLlZJRVdfUE9JTlRfX1BVUlBPU0U6DQorCQkJCXJldHVybiBQVVJQT1NFX0VERUZBVUxUID09IG51bGwgPyBwdXJwb3NlICE9IG51bGwgOiAhUFVSUE9TRV9FREVGQVVMVC5lcXVhbHMocHVycG9zZSk7DQorCQkJY2FzZSBNb2RlbGVsZW1lbnRzUGFja2FnZS5WSUVXX1BPSU5UX19DT05DRVJOX0xJU1Q6DQorCQkJCXJldHVybiBjb25jZXJuTGlzdCAhPSBudWxsICYmICFjb25jZXJuTGlzdC5pc0VtcHR5KCk7DQorCQkJY2FzZSBNb2RlbGVsZW1lbnRzUGFja2FnZS5WSUVXX1BPSU5UX19MQU5HVUFHRToNCisJCQkJcmV0dXJuIGxhbmd1YWdlICE9IG51bGwgJiYgIWxhbmd1YWdlLmlzRW1wdHkoKTsNCisJCQljYXNlIE1vZGVsZWxlbWVudHNQYWNrYWdlLlZJRVdfUE9JTlRfX01FVEhPRDoNCisJCQkJcmV0dXJuICFnZXRNZXRob2QoKS5pc0VtcHR5KCk7DQorCQkJY2FzZSBNb2RlbGVsZW1lbnRzUGFja2FnZS5WSUVXX1BPSU5UX19QUkVTRU5UQVRJT046DQorCQkJCXJldHVybiBwcmVzZW50YXRpb24gIT0gbnVsbCAmJiAhcHJlc2VudGF0aW9uLmlzRW1wdHkoKTsNCisJCQljYXNlIE1vZGVsZWxlbWVudHNQYWNrYWdlLlZJRVdfUE9JTlRfX0NPTkNFUk46DQorCQkJCXJldHVybiAhZ2V0Q29uY2VybigpLmlzRW1wdHkoKTsNCisJCX0NCisJCXJldHVybiBzdXBlci5lSXNTZXQoZmVhdHVyZUlEKTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgU3RyaW5nIHRvU3RyaW5nKCkgew0KKwkJaWYgKGVJc1Byb3h5KCkpIHJldHVybiBzdXBlci50b1N0cmluZygpOw0KKw0KKwkJU3RyaW5nQnVmZmVyIHJlc3VsdCA9IG5ldyBTdHJpbmdCdWZmZXIoc3VwZXIudG9TdHJpbmcoKSk7DQorCQlyZXN1bHQuYXBwZW5kKCIgKHB1cnBvc2U6ICIpOyAvLyROT04tTkxTLTEkDQorCQlyZXN1bHQuYXBwZW5kKHB1cnBvc2UpOw0KKwkJcmVzdWx0LmFwcGVuZCgiLCBsYW5ndWFnZTogIik7IC8vJE5PTi1OTFMtMSQNCisJCXJlc3VsdC5hcHBlbmQobGFuZ3VhZ2UpOw0KKwkJcmVzdWx0LmFwcGVuZCgiLCBwcmVzZW50YXRpb246ICIpOyAvLyROT04tTkxTLTEkDQorCQlyZXN1bHQuYXBwZW5kKHByZXNlbnRhdGlvbik7DQorCQlyZXN1bHQuYXBwZW5kKCcpJyk7DQorCQlyZXR1cm4gcmVzdWx0LnRvU3RyaW5nKCk7DQorCX0NCisNCit9IC8vVmlld1BvaW50SW1wbA0KZGlmZiAtLWdpdCBhL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L21vZGVsZWxlbWVudHMvdXRpbC9Nb2RlbGVsZW1lbnRzQWRhcHRlckZhY3RvcnkuamF2YSBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L21vZGVsZWxlbWVudHMvdXRpbC9Nb2RlbGVsZW1lbnRzQWRhcHRlckZhY3RvcnkuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNTlmMjkyCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvbW9kZWxlbGVtZW50cy91dGlsL01vZGVsZWxlbWVudHNBZGFwdGVyRmFjdG9yeS5qYXZhCkBAIC0wLDAgKzEsMjUyIEBACisvKioNCisgKiBDb3B5cmlnaHQgKGMpIDIwMTUgQ0VBIExJU1QuDQorICogDQorICogIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCisgKiAgYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQorICogIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQorICogIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICovDQorcGFja2FnZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQubW9kZWxlbGVtZW50cy51dGlsOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY29tbW9uLm5vdGlmeS5BZGFwdGVyOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY29tbW9uLm5vdGlmeS5Ob3RpZmllcjsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi5ub3RpZnkuaW1wbC5BZGFwdGVyRmFjdG9yeUltcGw7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FT2JqZWN0Ow0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQubW9kZWxlbGVtZW50cy4qOw0KKw0KKy8qKg0KKyAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorICogVGhlIDxiPkFkYXB0ZXIgRmFjdG9yeTwvYj4gZm9yIHRoZSBtb2RlbC4NCisgKiBJdCBwcm92aWRlcyBhbiBhZGFwdGVyIDxjb2RlPmNyZWF0ZVhYWDwvY29kZT4gbWV0aG9kIGZvciBlYWNoIGNsYXNzIG9mIHRoZSBtb2RlbC4NCisgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5tb2RlbGVsZW1lbnRzLk1vZGVsZWxlbWVudHNQYWNrYWdlDQorICogQGdlbmVyYXRlZA0KKyAqLw0KK3B1YmxpYyBjbGFzcyBNb2RlbGVsZW1lbnRzQWRhcHRlckZhY3RvcnkgZXh0ZW5kcyBBZGFwdGVyRmFjdG9yeUltcGwgew0KKwkvKioNCisJICogVGhlIGNhY2hlZCBtb2RlbCBwYWNrYWdlLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHJvdGVjdGVkIHN0YXRpYyBNb2RlbGVsZW1lbnRzUGFja2FnZSBtb2RlbFBhY2thZ2U7DQorDQorCS8qKg0KKwkgKiBDcmVhdGVzIGFuIGluc3RhbmNlIG9mIHRoZSBhZGFwdGVyIGZhY3RvcnkuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgTW9kZWxlbGVtZW50c0FkYXB0ZXJGYWN0b3J5KCkgew0KKwkJaWYgKG1vZGVsUGFja2FnZSA9PSBudWxsKSB7DQorCQkJbW9kZWxQYWNrYWdlID0gTW9kZWxlbGVtZW50c1BhY2thZ2UuZUlOU1RBTkNFOw0KKwkJfQ0KKwl9DQorDQorCS8qKg0KKwkgKiBSZXR1cm5zIHdoZXRoZXIgdGhpcyBmYWN0b3J5IGlzIGFwcGxpY2FibGUgZm9yIHRoZSB0eXBlIG9mIHRoZSBvYmplY3QuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIFRoaXMgaW1wbGVtZW50YXRpb24gcmV0dXJucyA8Y29kZT50cnVlPC9jb2RlPiBpZiB0aGUgb2JqZWN0IGlzIGVpdGhlciB0aGUgbW9kZWwncyBwYWNrYWdlIG9yIGlzIGFuIGluc3RhbmNlIG9iamVjdCBvZiB0aGUgbW9kZWwuDQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAcmV0dXJuIHdoZXRoZXIgdGhpcyBmYWN0b3J5IGlzIGFwcGxpY2FibGUgZm9yIHRoZSB0eXBlIG9mIHRoZSBvYmplY3QuDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgYm9vbGVhbiBpc0ZhY3RvcnlGb3JUeXBlKE9iamVjdCBvYmplY3QpIHsNCisJCWlmIChvYmplY3QgPT0gbW9kZWxQYWNrYWdlKSB7DQorCQkJcmV0dXJuIHRydWU7DQorCQl9DQorCQlpZiAob2JqZWN0IGluc3RhbmNlb2YgRU9iamVjdCkgew0KKwkJCXJldHVybiAoKEVPYmplY3Qpb2JqZWN0KS5lQ2xhc3MoKS5nZXRFUGFja2FnZSgpID09IG1vZGVsUGFja2FnZTsNCisJCX0NCisJCXJldHVybiBmYWxzZTsNCisJfQ0KKw0KKwkvKioNCisJICogVGhlIHN3aXRjaCB0aGF0IGRlbGVnYXRlcyB0byB0aGUgPGNvZGU+Y3JlYXRlWFhYPC9jb2RlPiBtZXRob2RzLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHJvdGVjdGVkIE1vZGVsZWxlbWVudHNTd2l0Y2g8QWRhcHRlcj4gbW9kZWxTd2l0Y2ggPQ0KKwkJbmV3IE1vZGVsZWxlbWVudHNTd2l0Y2g8QWRhcHRlcj4oKSB7DQorCQkJQE92ZXJyaWRlDQorCQkJcHVibGljIEFkYXB0ZXIgY2FzZVJhdGlvbmFsZShSYXRpb25hbGUgb2JqZWN0KSB7DQorCQkJCXJldHVybiBjcmVhdGVSYXRpb25hbGVBZGFwdGVyKCk7DQorCQkJfQ0KKwkJCUBPdmVycmlkZQ0KKwkJCXB1YmxpYyBBZGFwdGVyIGNhc2VWaWV3KFZpZXcgb2JqZWN0KSB7DQorCQkJCXJldHVybiBjcmVhdGVWaWV3QWRhcHRlcigpOw0KKwkJCX0NCisJCQlAT3ZlcnJpZGUNCisJCQlwdWJsaWMgQWRhcHRlciBjYXNlVmlld1BvaW50KFZpZXdQb2ludCBvYmplY3QpIHsNCisJCQkJcmV0dXJuIGNyZWF0ZVZpZXdQb2ludEFkYXB0ZXIoKTsNCisJCQl9DQorCQkJQE92ZXJyaWRlDQorCQkJcHVibGljIEFkYXB0ZXIgY2FzZVN0YWtlaG9sZGVyKFN0YWtlaG9sZGVyIG9iamVjdCkgew0KKwkJCQlyZXR1cm4gY3JlYXRlU3Rha2Vob2xkZXJBZGFwdGVyKCk7DQorCQkJfQ0KKwkJCUBPdmVycmlkZQ0KKwkJCXB1YmxpYyBBZGFwdGVyIGNhc2VDb25mb3JtKENvbmZvcm0gb2JqZWN0KSB7DQorCQkJCXJldHVybiBjcmVhdGVDb25mb3JtQWRhcHRlcigpOw0KKwkJCX0NCisJCQlAT3ZlcnJpZGUNCisJCQlwdWJsaWMgQWRhcHRlciBjYXNlUHJvYmxlbShQcm9ibGVtIG9iamVjdCkgew0KKwkJCQlyZXR1cm4gY3JlYXRlUHJvYmxlbUFkYXB0ZXIoKTsNCisJCQl9DQorCQkJQE92ZXJyaWRlDQorCQkJcHVibGljIEFkYXB0ZXIgY2FzZUV4cG9zZShFeHBvc2Ugb2JqZWN0KSB7DQorCQkJCXJldHVybiBjcmVhdGVFeHBvc2VBZGFwdGVyKCk7DQorCQkJfQ0KKwkJCUBPdmVycmlkZQ0KKwkJCXB1YmxpYyBBZGFwdGVyIGNhc2VFbGVtZW50R3JvdXAoRWxlbWVudEdyb3VwIG9iamVjdCkgew0KKwkJCQlyZXR1cm4gY3JlYXRlRWxlbWVudEdyb3VwQWRhcHRlcigpOw0KKwkJCX0NCisJCQlAT3ZlcnJpZGUNCisJCQlwdWJsaWMgQWRhcHRlciBkZWZhdWx0Q2FzZShFT2JqZWN0IG9iamVjdCkgew0KKwkJCQlyZXR1cm4gY3JlYXRlRU9iamVjdEFkYXB0ZXIoKTsNCisJCQl9DQorCQl9Ow0KKw0KKwkvKioNCisJICogQ3JlYXRlcyBhbiBhZGFwdGVyIGZvciB0aGUgPGNvZGU+dGFyZ2V0PC9jb2RlPi4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBwYXJhbSB0YXJnZXQgdGhlIG9iamVjdCB0byBhZGFwdC4NCisJICogQHJldHVybiB0aGUgYWRhcHRlciBmb3IgdGhlIDxjb2RlPnRhcmdldDwvY29kZT4uDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgQWRhcHRlciBjcmVhdGVBZGFwdGVyKE5vdGlmaWVyIHRhcmdldCkgew0KKwkJcmV0dXJuIG1vZGVsU3dpdGNoLmRvU3dpdGNoKChFT2JqZWN0KXRhcmdldCk7DQorCX0NCisNCisNCisJLyoqDQorCSAqIENyZWF0ZXMgYSBuZXcgYWRhcHRlciBmb3IgYW4gb2JqZWN0IG9mIGNsYXNzICd7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0Lm1vZGVsZWxlbWVudHMuUmF0aW9uYWxlIDxlbT5SYXRpb25hbGU8L2VtPn0nLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiBUaGlzIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gcmV0dXJucyBudWxsIHNvIHRoYXQgd2UgY2FuIGVhc2lseSBpZ25vcmUgY2FzZXM7DQorCSAqIGl0J3MgdXNlZnVsIHRvIGlnbm9yZSBhIGNhc2Ugd2hlbiBpbmhlcml0YW5jZSB3aWxsIGNhdGNoIGFsbCB0aGUgY2FzZXMgYW55d2F5Lg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHJldHVybiB0aGUgbmV3IGFkYXB0ZXIuDQorCSAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0Lm1vZGVsZWxlbWVudHMuUmF0aW9uYWxlDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBBZGFwdGVyIGNyZWF0ZVJhdGlvbmFsZUFkYXB0ZXIoKSB7DQorCQlyZXR1cm4gbnVsbDsNCisJfQ0KKw0KKwkvKioNCisJICogQ3JlYXRlcyBhIG5ldyBhZGFwdGVyIGZvciBhbiBvYmplY3Qgb2YgY2xhc3MgJ3tAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQubW9kZWxlbGVtZW50cy5WaWV3IDxlbT5WaWV3PC9lbT59Jy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogVGhpcyBkZWZhdWx0IGltcGxlbWVudGF0aW9uIHJldHVybnMgbnVsbCBzbyB0aGF0IHdlIGNhbiBlYXNpbHkgaWdub3JlIGNhc2VzOw0KKwkgKiBpdCdzIHVzZWZ1bCB0byBpZ25vcmUgYSBjYXNlIHdoZW4gaW5oZXJpdGFuY2Ugd2lsbCBjYXRjaCBhbGwgdGhlIGNhc2VzIGFueXdheS4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEByZXR1cm4gdGhlIG5ldyBhZGFwdGVyLg0KKwkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5tb2RlbGVsZW1lbnRzLlZpZXcNCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIEFkYXB0ZXIgY3JlYXRlVmlld0FkYXB0ZXIoKSB7DQorCQlyZXR1cm4gbnVsbDsNCisJfQ0KKw0KKwkvKioNCisJICogQ3JlYXRlcyBhIG5ldyBhZGFwdGVyIGZvciBhbiBvYmplY3Qgb2YgY2xhc3MgJ3tAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQubW9kZWxlbGVtZW50cy5WaWV3UG9pbnQgPGVtPlZpZXcgUG9pbnQ8L2VtPn0nLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiBUaGlzIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gcmV0dXJucyBudWxsIHNvIHRoYXQgd2UgY2FuIGVhc2lseSBpZ25vcmUgY2FzZXM7DQorCSAqIGl0J3MgdXNlZnVsIHRvIGlnbm9yZSBhIGNhc2Ugd2hlbiBpbmhlcml0YW5jZSB3aWxsIGNhdGNoIGFsbCB0aGUgY2FzZXMgYW55d2F5Lg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHJldHVybiB0aGUgbmV3IGFkYXB0ZXIuDQorCSAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0Lm1vZGVsZWxlbWVudHMuVmlld1BvaW50DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBBZGFwdGVyIGNyZWF0ZVZpZXdQb2ludEFkYXB0ZXIoKSB7DQorCQlyZXR1cm4gbnVsbDsNCisJfQ0KKw0KKwkvKioNCisJICogQ3JlYXRlcyBhIG5ldyBhZGFwdGVyIGZvciBhbiBvYmplY3Qgb2YgY2xhc3MgJ3tAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQubW9kZWxlbGVtZW50cy5TdGFrZWhvbGRlciA8ZW0+U3Rha2Vob2xkZXI8L2VtPn0nLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiBUaGlzIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gcmV0dXJucyBudWxsIHNvIHRoYXQgd2UgY2FuIGVhc2lseSBpZ25vcmUgY2FzZXM7DQorCSAqIGl0J3MgdXNlZnVsIHRvIGlnbm9yZSBhIGNhc2Ugd2hlbiBpbmhlcml0YW5jZSB3aWxsIGNhdGNoIGFsbCB0aGUgY2FzZXMgYW55d2F5Lg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHJldHVybiB0aGUgbmV3IGFkYXB0ZXIuDQorCSAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0Lm1vZGVsZWxlbWVudHMuU3Rha2Vob2xkZXINCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIEFkYXB0ZXIgY3JlYXRlU3Rha2Vob2xkZXJBZGFwdGVyKCkgew0KKwkJcmV0dXJuIG51bGw7DQorCX0NCisNCisJLyoqDQorCSAqIENyZWF0ZXMgYSBuZXcgYWRhcHRlciBmb3IgYW4gb2JqZWN0IG9mIGNsYXNzICd7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0Lm1vZGVsZWxlbWVudHMuQ29uZm9ybSA8ZW0+Q29uZm9ybTwvZW0+fScuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIFRoaXMgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiByZXR1cm5zIG51bGwgc28gdGhhdCB3ZSBjYW4gZWFzaWx5IGlnbm9yZSBjYXNlczsNCisJICogaXQncyB1c2VmdWwgdG8gaWdub3JlIGEgY2FzZSB3aGVuIGluaGVyaXRhbmNlIHdpbGwgY2F0Y2ggYWxsIHRoZSBjYXNlcyBhbnl3YXkuDQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAcmV0dXJuIHRoZSBuZXcgYWRhcHRlci4NCisJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQubW9kZWxlbGVtZW50cy5Db25mb3JtDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBBZGFwdGVyIGNyZWF0ZUNvbmZvcm1BZGFwdGVyKCkgew0KKwkJcmV0dXJuIG51bGw7DQorCX0NCisNCisJLyoqDQorCSAqIENyZWF0ZXMgYSBuZXcgYWRhcHRlciBmb3IgYW4gb2JqZWN0IG9mIGNsYXNzICd7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0Lm1vZGVsZWxlbWVudHMuUHJvYmxlbSA8ZW0+UHJvYmxlbTwvZW0+fScuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIFRoaXMgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiByZXR1cm5zIG51bGwgc28gdGhhdCB3ZSBjYW4gZWFzaWx5IGlnbm9yZSBjYXNlczsNCisJICogaXQncyB1c2VmdWwgdG8gaWdub3JlIGEgY2FzZSB3aGVuIGluaGVyaXRhbmNlIHdpbGwgY2F0Y2ggYWxsIHRoZSBjYXNlcyBhbnl3YXkuDQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAcmV0dXJuIHRoZSBuZXcgYWRhcHRlci4NCisJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQubW9kZWxlbGVtZW50cy5Qcm9ibGVtDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBBZGFwdGVyIGNyZWF0ZVByb2JsZW1BZGFwdGVyKCkgew0KKwkJcmV0dXJuIG51bGw7DQorCX0NCisNCisJLyoqDQorCSAqIENyZWF0ZXMgYSBuZXcgYWRhcHRlciBmb3IgYW4gb2JqZWN0IG9mIGNsYXNzICd7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0Lm1vZGVsZWxlbWVudHMuRXhwb3NlIDxlbT5FeHBvc2U8L2VtPn0nLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiBUaGlzIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gcmV0dXJucyBudWxsIHNvIHRoYXQgd2UgY2FuIGVhc2lseSBpZ25vcmUgY2FzZXM7DQorCSAqIGl0J3MgdXNlZnVsIHRvIGlnbm9yZSBhIGNhc2Ugd2hlbiBpbmhlcml0YW5jZSB3aWxsIGNhdGNoIGFsbCB0aGUgY2FzZXMgYW55d2F5Lg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHJldHVybiB0aGUgbmV3IGFkYXB0ZXIuDQorCSAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0Lm1vZGVsZWxlbWVudHMuRXhwb3NlDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBBZGFwdGVyIGNyZWF0ZUV4cG9zZUFkYXB0ZXIoKSB7DQorCQlyZXR1cm4gbnVsbDsNCisJfQ0KKw0KKwkvKioNCisJICogQ3JlYXRlcyBhIG5ldyBhZGFwdGVyIGZvciBhbiBvYmplY3Qgb2YgY2xhc3MgJ3tAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQubW9kZWxlbGVtZW50cy5FbGVtZW50R3JvdXAgPGVtPkVsZW1lbnQgR3JvdXA8L2VtPn0nLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiBUaGlzIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gcmV0dXJucyBudWxsIHNvIHRoYXQgd2UgY2FuIGVhc2lseSBpZ25vcmUgY2FzZXM7DQorCSAqIGl0J3MgdXNlZnVsIHRvIGlnbm9yZSBhIGNhc2Ugd2hlbiBpbmhlcml0YW5jZSB3aWxsIGNhdGNoIGFsbCB0aGUgY2FzZXMgYW55d2F5Lg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHJldHVybiB0aGUgbmV3IGFkYXB0ZXIuDQorCSAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0Lm1vZGVsZWxlbWVudHMuRWxlbWVudEdyb3VwDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBBZGFwdGVyIGNyZWF0ZUVsZW1lbnRHcm91cEFkYXB0ZXIoKSB7DQorCQlyZXR1cm4gbnVsbDsNCisJfQ0KKw0KKwkvKioNCisJICogQ3JlYXRlcyBhIG5ldyBhZGFwdGVyIGZvciB0aGUgZGVmYXVsdCBjYXNlLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiBUaGlzIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gcmV0dXJucyBudWxsLg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHJldHVybiB0aGUgbmV3IGFkYXB0ZXIuDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBBZGFwdGVyIGNyZWF0ZUVPYmplY3RBZGFwdGVyKCkgew0KKwkJcmV0dXJuIG51bGw7DQorCX0NCisNCit9IC8vTW9kZWxlbGVtZW50c0FkYXB0ZXJGYWN0b3J5DQpkaWZmIC0tZ2l0IGEvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvbW9kZWxlbGVtZW50cy91dGlsL01vZGVsZWxlbWVudHNTd2l0Y2guamF2YSBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L21vZGVsZWxlbWVudHMvdXRpbC9Nb2RlbGVsZW1lbnRzU3dpdGNoLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTI0ZTU0NAotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L21vZGVsZWxlbWVudHMvdXRpbC9Nb2RlbGVsZW1lbnRzU3dpdGNoLmphdmEKQEAgLTAsMCArMSwyNjMgQEAKKy8qKg0KKyAqIENvcHlyaWdodCAoYykgMjAxNSBDRUEgTElTVC4NCisgKiANCisgKiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KKyAqICBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCisgKiAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCisgKiAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgKi8NCitwYWNrYWdlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5tb2RlbGVsZW1lbnRzLnV0aWw7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FT2JqZWN0Ow0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRVBhY2thZ2U7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS51dGlsLlN3aXRjaDsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0Lm1vZGVsZWxlbWVudHMuKjsNCisNCisvKioNCisgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKyAqIFRoZSA8Yj5Td2l0Y2g8L2I+IGZvciB0aGUgbW9kZWwncyBpbmhlcml0YW5jZSBoaWVyYXJjaHkuDQorICogSXQgc3VwcG9ydHMgdGhlIGNhbGwge0BsaW5rICNkb1N3aXRjaChFT2JqZWN0KSBkb1N3aXRjaChvYmplY3QpfQ0KKyAqIHRvIGludm9rZSB0aGUgPGNvZGU+Y2FzZVhYWDwvY29kZT4gbWV0aG9kIGZvciBlYWNoIGNsYXNzIG9mIHRoZSBtb2RlbCwNCisgKiBzdGFydGluZyB3aXRoIHRoZSBhY3R1YWwgY2xhc3Mgb2YgdGhlIG9iamVjdA0KKyAqIGFuZCBwcm9jZWVkaW5nIHVwIHRoZSBpbmhlcml0YW5jZSBoaWVyYXJjaHkNCisgKiB1bnRpbCBhIG5vbi1udWxsIHJlc3VsdCBpcyByZXR1cm5lZCwNCisgKiB3aGljaCBpcyB0aGUgcmVzdWx0IG9mIHRoZSBzd2l0Y2guDQorICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQubW9kZWxlbGVtZW50cy5Nb2RlbGVsZW1lbnRzUGFja2FnZQ0KKyAqIEBnZW5lcmF0ZWQNCisgKi8NCitwdWJsaWMgY2xhc3MgTW9kZWxlbGVtZW50c1N3aXRjaDxUPiBleHRlbmRzIFN3aXRjaDxUPiB7DQorCS8qKg0KKwkgKiBUaGUgY2FjaGVkIG1vZGVsIHBhY2thZ2UNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXByb3RlY3RlZCBzdGF0aWMgTW9kZWxlbGVtZW50c1BhY2thZ2UgbW9kZWxQYWNrYWdlOw0KKw0KKwkvKioNCisJICogQ3JlYXRlcyBhbiBpbnN0YW5jZSBvZiB0aGUgc3dpdGNoLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIE1vZGVsZWxlbWVudHNTd2l0Y2goKSB7DQorCQlpZiAobW9kZWxQYWNrYWdlID09IG51bGwpIHsNCisJCQltb2RlbFBhY2thZ2UgPSBNb2RlbGVsZW1lbnRzUGFja2FnZS5lSU5TVEFOQ0U7DQorCQl9DQorCX0NCisNCisJLyoqDQorCSAqIENoZWNrcyB3aGV0aGVyIHRoaXMgaXMgYSBzd2l0Y2ggZm9yIHRoZSBnaXZlbiBwYWNrYWdlLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHBhcmFtIGVQYWNrYWdlIHRoZSBwYWNrYWdlIGluIHF1ZXN0aW9uLg0KKwkgKiBAcmV0dXJuIHdoZXRoZXIgdGhpcyBpcyBhIHN3aXRjaCBmb3IgdGhlIGdpdmVuIHBhY2thZ2UuDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwcm90ZWN0ZWQgYm9vbGVhbiBpc1N3aXRjaEZvcihFUGFja2FnZSBlUGFja2FnZSkgew0KKwkJcmV0dXJuIGVQYWNrYWdlID09IG1vZGVsUGFja2FnZTsNCisJfQ0KKw0KKwkvKioNCisJICogQ2FsbHMgPGNvZGU+Y2FzZVhYWDwvY29kZT4gZm9yIGVhY2ggY2xhc3Mgb2YgdGhlIG1vZGVsIHVudGlsIG9uZSByZXR1cm5zIGEgbm9uIG51bGwgcmVzdWx0OyBpdCB5aWVsZHMgdGhhdCByZXN1bHQuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAcmV0dXJuIHRoZSBmaXJzdCBub24tbnVsbCByZXN1bHQgcmV0dXJuZWQgYnkgYSA8Y29kZT5jYXNlWFhYPC9jb2RlPiBjYWxsLg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHJvdGVjdGVkIFQgZG9Td2l0Y2goaW50IGNsYXNzaWZpZXJJRCwgRU9iamVjdCB0aGVFT2JqZWN0KSB7DQorCQlzd2l0Y2ggKGNsYXNzaWZpZXJJRCkgew0KKwkJCWNhc2UgTW9kZWxlbGVtZW50c1BhY2thZ2UuUkFUSU9OQUxFOiB7DQorCQkJCVJhdGlvbmFsZSByYXRpb25hbGUgPSAoUmF0aW9uYWxlKXRoZUVPYmplY3Q7DQorCQkJCVQgcmVzdWx0ID0gY2FzZVJhdGlvbmFsZShyYXRpb25hbGUpOw0KKwkJCQlpZiAocmVzdWx0ID09IG51bGwpIHJlc3VsdCA9IGRlZmF1bHRDYXNlKHRoZUVPYmplY3QpOw0KKwkJCQlyZXR1cm4gcmVzdWx0Ow0KKwkJCX0NCisJCQljYXNlIE1vZGVsZWxlbWVudHNQYWNrYWdlLlZJRVc6IHsNCisJCQkJVmlldyB2aWV3ID0gKFZpZXcpdGhlRU9iamVjdDsNCisJCQkJVCByZXN1bHQgPSBjYXNlVmlldyh2aWV3KTsNCisJCQkJaWYgKHJlc3VsdCA9PSBudWxsKSByZXN1bHQgPSBkZWZhdWx0Q2FzZSh0aGVFT2JqZWN0KTsNCisJCQkJcmV0dXJuIHJlc3VsdDsNCisJCQl9DQorCQkJY2FzZSBNb2RlbGVsZW1lbnRzUGFja2FnZS5WSUVXX1BPSU5UOiB7DQorCQkJCVZpZXdQb2ludCB2aWV3UG9pbnQgPSAoVmlld1BvaW50KXRoZUVPYmplY3Q7DQorCQkJCVQgcmVzdWx0ID0gY2FzZVZpZXdQb2ludCh2aWV3UG9pbnQpOw0KKwkJCQlpZiAocmVzdWx0ID09IG51bGwpIHJlc3VsdCA9IGRlZmF1bHRDYXNlKHRoZUVPYmplY3QpOw0KKwkJCQlyZXR1cm4gcmVzdWx0Ow0KKwkJCX0NCisJCQljYXNlIE1vZGVsZWxlbWVudHNQYWNrYWdlLlNUQUtFSE9MREVSOiB7DQorCQkJCVN0YWtlaG9sZGVyIHN0YWtlaG9sZGVyID0gKFN0YWtlaG9sZGVyKXRoZUVPYmplY3Q7DQorCQkJCVQgcmVzdWx0ID0gY2FzZVN0YWtlaG9sZGVyKHN0YWtlaG9sZGVyKTsNCisJCQkJaWYgKHJlc3VsdCA9PSBudWxsKSByZXN1bHQgPSBkZWZhdWx0Q2FzZSh0aGVFT2JqZWN0KTsNCisJCQkJcmV0dXJuIHJlc3VsdDsNCisJCQl9DQorCQkJY2FzZSBNb2RlbGVsZW1lbnRzUGFja2FnZS5DT05GT1JNOiB7DQorCQkJCUNvbmZvcm0gY29uZm9ybSA9IChDb25mb3JtKXRoZUVPYmplY3Q7DQorCQkJCVQgcmVzdWx0ID0gY2FzZUNvbmZvcm0oY29uZm9ybSk7DQorCQkJCWlmIChyZXN1bHQgPT0gbnVsbCkgcmVzdWx0ID0gZGVmYXVsdENhc2UodGhlRU9iamVjdCk7DQorCQkJCXJldHVybiByZXN1bHQ7DQorCQkJfQ0KKwkJCWNhc2UgTW9kZWxlbGVtZW50c1BhY2thZ2UuUFJPQkxFTTogew0KKwkJCQlQcm9ibGVtIHByb2JsZW0gPSAoUHJvYmxlbSl0aGVFT2JqZWN0Ow0KKwkJCQlUIHJlc3VsdCA9IGNhc2VQcm9ibGVtKHByb2JsZW0pOw0KKwkJCQlpZiAocmVzdWx0ID09IG51bGwpIHJlc3VsdCA9IGRlZmF1bHRDYXNlKHRoZUVPYmplY3QpOw0KKwkJCQlyZXR1cm4gcmVzdWx0Ow0KKwkJCX0NCisJCQljYXNlIE1vZGVsZWxlbWVudHNQYWNrYWdlLkVYUE9TRTogew0KKwkJCQlFeHBvc2UgZXhwb3NlID0gKEV4cG9zZSl0aGVFT2JqZWN0Ow0KKwkJCQlUIHJlc3VsdCA9IGNhc2VFeHBvc2UoZXhwb3NlKTsNCisJCQkJaWYgKHJlc3VsdCA9PSBudWxsKSByZXN1bHQgPSBkZWZhdWx0Q2FzZSh0aGVFT2JqZWN0KTsNCisJCQkJcmV0dXJuIHJlc3VsdDsNCisJCQl9DQorCQkJY2FzZSBNb2RlbGVsZW1lbnRzUGFja2FnZS5FTEVNRU5UX0dST1VQOiB7DQorCQkJCUVsZW1lbnRHcm91cCBlbGVtZW50R3JvdXAgPSAoRWxlbWVudEdyb3VwKXRoZUVPYmplY3Q7DQorCQkJCVQgcmVzdWx0ID0gY2FzZUVsZW1lbnRHcm91cChlbGVtZW50R3JvdXApOw0KKwkJCQlpZiAocmVzdWx0ID09IG51bGwpIHJlc3VsdCA9IGRlZmF1bHRDYXNlKHRoZUVPYmplY3QpOw0KKwkJCQlyZXR1cm4gcmVzdWx0Ow0KKwkJCX0NCisJCQlkZWZhdWx0OiByZXR1cm4gZGVmYXVsdENhc2UodGhlRU9iamVjdCk7DQorCQl9DQorCX0NCisNCisJLyoqDQorCSAqIFJldHVybnMgdGhlIHJlc3VsdCBvZiBpbnRlcnByZXRpbmcgdGhlIG9iamVjdCBhcyBhbiBpbnN0YW5jZSBvZiAnPGVtPlJhdGlvbmFsZTwvZW0+Jy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogVGhpcyBpbXBsZW1lbnRhdGlvbiByZXR1cm5zIG51bGw7DQorCSAqIHJldHVybmluZyBhIG5vbi1udWxsIHJlc3VsdCB3aWxsIHRlcm1pbmF0ZSB0aGUgc3dpdGNoLg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHBhcmFtIG9iamVjdCB0aGUgdGFyZ2V0IG9mIHRoZSBzd2l0Y2guDQorCSAqIEByZXR1cm4gdGhlIHJlc3VsdCBvZiBpbnRlcnByZXRpbmcgdGhlIG9iamVjdCBhcyBhbiBpbnN0YW5jZSBvZiAnPGVtPlJhdGlvbmFsZTwvZW0+Jy4NCisJICogQHNlZSAjZG9Td2l0Y2gob3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVPYmplY3QpIGRvU3dpdGNoKEVPYmplY3QpDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBUIGNhc2VSYXRpb25hbGUoUmF0aW9uYWxlIG9iamVjdCkgew0KKwkJcmV0dXJuIG51bGw7DQorCX0NCisNCisJLyoqDQorCSAqIFJldHVybnMgdGhlIHJlc3VsdCBvZiBpbnRlcnByZXRpbmcgdGhlIG9iamVjdCBhcyBhbiBpbnN0YW5jZSBvZiAnPGVtPlZpZXc8L2VtPicuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIFRoaXMgaW1wbGVtZW50YXRpb24gcmV0dXJucyBudWxsOw0KKwkgKiByZXR1cm5pbmcgYSBub24tbnVsbCByZXN1bHQgd2lsbCB0ZXJtaW5hdGUgdGhlIHN3aXRjaC4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBwYXJhbSBvYmplY3QgdGhlIHRhcmdldCBvZiB0aGUgc3dpdGNoLg0KKwkgKiBAcmV0dXJuIHRoZSByZXN1bHQgb2YgaW50ZXJwcmV0aW5nIHRoZSBvYmplY3QgYXMgYW4gaW5zdGFuY2Ugb2YgJzxlbT5WaWV3PC9lbT4nLg0KKwkgKiBAc2VlICNkb1N3aXRjaChvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRU9iamVjdCkgZG9Td2l0Y2goRU9iamVjdCkNCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIFQgY2FzZVZpZXcoVmlldyBvYmplY3QpIHsNCisJCXJldHVybiBudWxsOw0KKwl9DQorDQorCS8qKg0KKwkgKiBSZXR1cm5zIHRoZSByZXN1bHQgb2YgaW50ZXJwcmV0aW5nIHRoZSBvYmplY3QgYXMgYW4gaW5zdGFuY2Ugb2YgJzxlbT5WaWV3IFBvaW50PC9lbT4nLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiBUaGlzIGltcGxlbWVudGF0aW9uIHJldHVybnMgbnVsbDsNCisJICogcmV0dXJuaW5nIGEgbm9uLW51bGwgcmVzdWx0IHdpbGwgdGVybWluYXRlIHRoZSBzd2l0Y2guDQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAcGFyYW0gb2JqZWN0IHRoZSB0YXJnZXQgb2YgdGhlIHN3aXRjaC4NCisJICogQHJldHVybiB0aGUgcmVzdWx0IG9mIGludGVycHJldGluZyB0aGUgb2JqZWN0IGFzIGFuIGluc3RhbmNlIG9mICc8ZW0+VmlldyBQb2ludDwvZW0+Jy4NCisJICogQHNlZSAjZG9Td2l0Y2gob3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVPYmplY3QpIGRvU3dpdGNoKEVPYmplY3QpDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBUIGNhc2VWaWV3UG9pbnQoVmlld1BvaW50IG9iamVjdCkgew0KKwkJcmV0dXJuIG51bGw7DQorCX0NCisNCisJLyoqDQorCSAqIFJldHVybnMgdGhlIHJlc3VsdCBvZiBpbnRlcnByZXRpbmcgdGhlIG9iamVjdCBhcyBhbiBpbnN0YW5jZSBvZiAnPGVtPlN0YWtlaG9sZGVyPC9lbT4nLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiBUaGlzIGltcGxlbWVudGF0aW9uIHJldHVybnMgbnVsbDsNCisJICogcmV0dXJuaW5nIGEgbm9uLW51bGwgcmVzdWx0IHdpbGwgdGVybWluYXRlIHRoZSBzd2l0Y2guDQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAcGFyYW0gb2JqZWN0IHRoZSB0YXJnZXQgb2YgdGhlIHN3aXRjaC4NCisJICogQHJldHVybiB0aGUgcmVzdWx0IG9mIGludGVycHJldGluZyB0aGUgb2JqZWN0IGFzIGFuIGluc3RhbmNlIG9mICc8ZW0+U3Rha2Vob2xkZXI8L2VtPicuDQorCSAqIEBzZWUgI2RvU3dpdGNoKG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FT2JqZWN0KSBkb1N3aXRjaChFT2JqZWN0KQ0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgVCBjYXNlU3Rha2Vob2xkZXIoU3Rha2Vob2xkZXIgb2JqZWN0KSB7DQorCQlyZXR1cm4gbnVsbDsNCisJfQ0KKw0KKwkvKioNCisJICogUmV0dXJucyB0aGUgcmVzdWx0IG9mIGludGVycHJldGluZyB0aGUgb2JqZWN0IGFzIGFuIGluc3RhbmNlIG9mICc8ZW0+Q29uZm9ybTwvZW0+Jy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogVGhpcyBpbXBsZW1lbnRhdGlvbiByZXR1cm5zIG51bGw7DQorCSAqIHJldHVybmluZyBhIG5vbi1udWxsIHJlc3VsdCB3aWxsIHRlcm1pbmF0ZSB0aGUgc3dpdGNoLg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHBhcmFtIG9iamVjdCB0aGUgdGFyZ2V0IG9mIHRoZSBzd2l0Y2guDQorCSAqIEByZXR1cm4gdGhlIHJlc3VsdCBvZiBpbnRlcnByZXRpbmcgdGhlIG9iamVjdCBhcyBhbiBpbnN0YW5jZSBvZiAnPGVtPkNvbmZvcm08L2VtPicuDQorCSAqIEBzZWUgI2RvU3dpdGNoKG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FT2JqZWN0KSBkb1N3aXRjaChFT2JqZWN0KQ0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgVCBjYXNlQ29uZm9ybShDb25mb3JtIG9iamVjdCkgew0KKwkJcmV0dXJuIG51bGw7DQorCX0NCisNCisJLyoqDQorCSAqIFJldHVybnMgdGhlIHJlc3VsdCBvZiBpbnRlcnByZXRpbmcgdGhlIG9iamVjdCBhcyBhbiBpbnN0YW5jZSBvZiAnPGVtPlByb2JsZW08L2VtPicuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIFRoaXMgaW1wbGVtZW50YXRpb24gcmV0dXJucyBudWxsOw0KKwkgKiByZXR1cm5pbmcgYSBub24tbnVsbCByZXN1bHQgd2lsbCB0ZXJtaW5hdGUgdGhlIHN3aXRjaC4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBwYXJhbSBvYmplY3QgdGhlIHRhcmdldCBvZiB0aGUgc3dpdGNoLg0KKwkgKiBAcmV0dXJuIHRoZSByZXN1bHQgb2YgaW50ZXJwcmV0aW5nIHRoZSBvYmplY3QgYXMgYW4gaW5zdGFuY2Ugb2YgJzxlbT5Qcm9ibGVtPC9lbT4nLg0KKwkgKiBAc2VlICNkb1N3aXRjaChvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRU9iamVjdCkgZG9Td2l0Y2goRU9iamVjdCkNCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIFQgY2FzZVByb2JsZW0oUHJvYmxlbSBvYmplY3QpIHsNCisJCXJldHVybiBudWxsOw0KKwl9DQorDQorCS8qKg0KKwkgKiBSZXR1cm5zIHRoZSByZXN1bHQgb2YgaW50ZXJwcmV0aW5nIHRoZSBvYmplY3QgYXMgYW4gaW5zdGFuY2Ugb2YgJzxlbT5FeHBvc2U8L2VtPicuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIFRoaXMgaW1wbGVtZW50YXRpb24gcmV0dXJucyBudWxsOw0KKwkgKiByZXR1cm5pbmcgYSBub24tbnVsbCByZXN1bHQgd2lsbCB0ZXJtaW5hdGUgdGhlIHN3aXRjaC4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBwYXJhbSBvYmplY3QgdGhlIHRhcmdldCBvZiB0aGUgc3dpdGNoLg0KKwkgKiBAcmV0dXJuIHRoZSByZXN1bHQgb2YgaW50ZXJwcmV0aW5nIHRoZSBvYmplY3QgYXMgYW4gaW5zdGFuY2Ugb2YgJzxlbT5FeHBvc2U8L2VtPicuDQorCSAqIEBzZWUgI2RvU3dpdGNoKG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FT2JqZWN0KSBkb1N3aXRjaChFT2JqZWN0KQ0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgVCBjYXNlRXhwb3NlKEV4cG9zZSBvYmplY3QpIHsNCisJCXJldHVybiBudWxsOw0KKwl9DQorDQorCS8qKg0KKwkgKiBSZXR1cm5zIHRoZSByZXN1bHQgb2YgaW50ZXJwcmV0aW5nIHRoZSBvYmplY3QgYXMgYW4gaW5zdGFuY2Ugb2YgJzxlbT5FbGVtZW50IEdyb3VwPC9lbT4nLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiBUaGlzIGltcGxlbWVudGF0aW9uIHJldHVybnMgbnVsbDsNCisJICogcmV0dXJuaW5nIGEgbm9uLW51bGwgcmVzdWx0IHdpbGwgdGVybWluYXRlIHRoZSBzd2l0Y2guDQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAcGFyYW0gb2JqZWN0IHRoZSB0YXJnZXQgb2YgdGhlIHN3aXRjaC4NCisJICogQHJldHVybiB0aGUgcmVzdWx0IG9mIGludGVycHJldGluZyB0aGUgb2JqZWN0IGFzIGFuIGluc3RhbmNlIG9mICc8ZW0+RWxlbWVudCBHcm91cDwvZW0+Jy4NCisJICogQHNlZSAjZG9Td2l0Y2gob3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVPYmplY3QpIGRvU3dpdGNoKEVPYmplY3QpDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBUIGNhc2VFbGVtZW50R3JvdXAoRWxlbWVudEdyb3VwIG9iamVjdCkgew0KKwkJcmV0dXJuIG51bGw7DQorCX0NCisNCisJLyoqDQorCSAqIFJldHVybnMgdGhlIHJlc3VsdCBvZiBpbnRlcnByZXRpbmcgdGhlIG9iamVjdCBhcyBhbiBpbnN0YW5jZSBvZiAnPGVtPkVPYmplY3Q8L2VtPicuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIFRoaXMgaW1wbGVtZW50YXRpb24gcmV0dXJucyBudWxsOw0KKwkgKiByZXR1cm5pbmcgYSBub24tbnVsbCByZXN1bHQgd2lsbCB0ZXJtaW5hdGUgdGhlIHN3aXRjaCwgYnV0IHRoaXMgaXMgdGhlIGxhc3QgY2FzZSBhbnl3YXkuDQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAcGFyYW0gb2JqZWN0IHRoZSB0YXJnZXQgb2YgdGhlIHN3aXRjaC4NCisJICogQHJldHVybiB0aGUgcmVzdWx0IG9mIGludGVycHJldGluZyB0aGUgb2JqZWN0IGFzIGFuIGluc3RhbmNlIG9mICc8ZW0+RU9iamVjdDwvZW0+Jy4NCisJICogQHNlZSAjZG9Td2l0Y2gob3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVPYmplY3QpDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgVCBkZWZhdWx0Q2FzZShFT2JqZWN0IG9iamVjdCkgew0KKwkJcmV0dXJuIG51bGw7DQorCX0NCisNCit9IC8vTW9kZWxlbGVtZW50c1N3aXRjaA0KZGlmZiAtLWdpdCBhL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L3BvcnRhbmRmbG93cy9BY2NlcHRDaGFuZ2VTdHJ1Y3R1cmFsRmVhdHVyZUV2ZW50QWN0aW9uLmphdmEgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9wb3J0YW5kZmxvd3MvQWNjZXB0Q2hhbmdlU3RydWN0dXJhbEZlYXR1cmVFdmVudEFjdGlvbi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIyNDk0ZTEKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9wb3J0YW5kZmxvd3MvQWNjZXB0Q2hhbmdlU3RydWN0dXJhbEZlYXR1cmVFdmVudEFjdGlvbi5qYXZhCkBAIC0wLDAgKzEsNTggQEAKKy8qKg0KKyAqIENvcHlyaWdodCAoYykgMjAxNSBDRUEgTElTVC4NCisgKiANCisgKiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KKyAqICBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCisgKiAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCisgKiAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgKi8NCitwYWNrYWdlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5wb3J0YW5kZmxvd3M7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FT2JqZWN0Ow0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS51bWwyLnVtbC5BY2NlcHRFdmVudEFjdGlvbjsNCisNCisvKioNCisgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKyAqIEEgcmVwcmVzZW50YXRpb24gb2YgdGhlIG1vZGVsIG9iamVjdCAnPGVtPjxiPkFjY2VwdCBDaGFuZ2UgU3RydWN0dXJhbCBGZWF0dXJlIEV2ZW50IEFjdGlvbjwvYj48L2VtPicuDQorICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorICoNCisgKiA8cD4NCisgKiBUaGUgZm9sbG93aW5nIGZlYXR1cmVzIGFyZSBzdXBwb3J0ZWQ6DQorICogPHVsPg0KKyAqICAgPGxpPntAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucG9ydGFuZGZsb3dzLkFjY2VwdENoYW5nZVN0cnVjdHVyYWxGZWF0dXJlRXZlbnRBY3Rpb24jZ2V0QmFzZV9BY2NlcHRFdmVudEFjdGlvbiA8ZW0+QmFzZSBBY2NlcHQgRXZlbnQgQWN0aW9uPC9lbT59PC9saT4NCisgKiA8L3VsPg0KKyAqIDwvcD4NCisgKg0KKyAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnBvcnRhbmRmbG93cy5Qb3J0YW5kZmxvd3NQYWNrYWdlI2dldEFjY2VwdENoYW5nZVN0cnVjdHVyYWxGZWF0dXJlRXZlbnRBY3Rpb24oKQ0KKyAqIEBtb2RlbA0KKyAqIEBnZW5lcmF0ZWQNCisgKi8NCitwdWJsaWMgaW50ZXJmYWNlIEFjY2VwdENoYW5nZVN0cnVjdHVyYWxGZWF0dXJlRXZlbnRBY3Rpb24gZXh0ZW5kcyBFT2JqZWN0IHsNCisJLyoqDQorCSAqIFJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSAnPGVtPjxiPkJhc2UgQWNjZXB0IEV2ZW50IEFjdGlvbjwvYj48L2VtPicgcmVmZXJlbmNlLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8cD4NCisJICogSWYgdGhlIG1lYW5pbmcgb2YgdGhlICc8ZW0+QmFzZSBBY2NlcHQgRXZlbnQgQWN0aW9uPC9lbT4nIHJlZmVyZW5jZSBpc24ndCBjbGVhciwNCisJICogdGhlcmUgcmVhbGx5IHNob3VsZCBiZSBtb3JlIG9mIGEgZGVzY3JpcHRpb24gaGVyZS4uLg0KKwkgKiA8L3A+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAcmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT5CYXNlIEFjY2VwdCBFdmVudCBBY3Rpb248L2VtPicgcmVmZXJlbmNlLg0KKwkgKiBAc2VlICNzZXRCYXNlX0FjY2VwdEV2ZW50QWN0aW9uKEFjY2VwdEV2ZW50QWN0aW9uKQ0KKwkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5wb3J0YW5kZmxvd3MuUG9ydGFuZGZsb3dzUGFja2FnZSNnZXRBY2NlcHRDaGFuZ2VTdHJ1Y3R1cmFsRmVhdHVyZUV2ZW50QWN0aW9uX0Jhc2VfQWNjZXB0RXZlbnRBY3Rpb24oKQ0KKwkgKiBAbW9kZWwgb3JkZXJlZD0iZmFsc2UiDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUFjY2VwdEV2ZW50QWN0aW9uIGdldEJhc2VfQWNjZXB0RXZlbnRBY3Rpb24oKTsNCisNCisJLyoqDQorCSAqIFNldHMgdGhlIHZhbHVlIG9mIHRoZSAne0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5wb3J0YW5kZmxvd3MuQWNjZXB0Q2hhbmdlU3RydWN0dXJhbEZlYXR1cmVFdmVudEFjdGlvbiNnZXRCYXNlX0FjY2VwdEV2ZW50QWN0aW9uIDxlbT5CYXNlIEFjY2VwdCBFdmVudCBBY3Rpb248L2VtPn0nIHJlZmVyZW5jZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBwYXJhbSB2YWx1ZSB0aGUgbmV3IHZhbHVlIG9mIHRoZSAnPGVtPkJhc2UgQWNjZXB0IEV2ZW50IEFjdGlvbjwvZW0+JyByZWZlcmVuY2UuDQorCSAqIEBzZWUgI2dldEJhc2VfQWNjZXB0RXZlbnRBY3Rpb24oKQ0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwl2b2lkIHNldEJhc2VfQWNjZXB0RXZlbnRBY3Rpb24oQWNjZXB0RXZlbnRBY3Rpb24gdmFsdWUpOw0KKw0KK30gLy8gQWNjZXB0Q2hhbmdlU3RydWN0dXJhbEZlYXR1cmVFdmVudEFjdGlvbg0KZGlmZiAtLWdpdCBhL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L3BvcnRhbmRmbG93cy9DaGFuZ2VTdHJ1Y3R1cmFsRmVhdHVyZUV2ZW50LmphdmEgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9wb3J0YW5kZmxvd3MvQ2hhbmdlU3RydWN0dXJhbEZlYXR1cmVFdmVudC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNiYzkwODcKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9wb3J0YW5kZmxvd3MvQ2hhbmdlU3RydWN0dXJhbEZlYXR1cmVFdmVudC5qYXZhCkBAIC0wLDAgKzEsODYgQEAKKy8qKg0KKyAqIENvcHlyaWdodCAoYykgMjAxNSBDRUEgTElTVC4NCisgKiANCisgKiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KKyAqICBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCisgKiAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCisgKiAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgKi8NCitwYWNrYWdlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5wb3J0YW5kZmxvd3M7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FT2JqZWN0Ow0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS51bWwyLnVtbC5DaGFuZ2VFdmVudDsNCitpbXBvcnQgb3JnLmVjbGlwc2UudW1sMi51bWwuU3RydWN0dXJhbEZlYXR1cmU7DQorDQorLyoqDQorICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisgKiBBIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBtb2RlbCBvYmplY3QgJzxlbT48Yj5DaGFuZ2UgU3RydWN0dXJhbCBGZWF0dXJlIEV2ZW50PC9iPjwvZW0+Jy4NCisgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisgKg0KKyAqIDxwPg0KKyAqIFRoZSBmb2xsb3dpbmcgZmVhdHVyZXMgYXJlIHN1cHBvcnRlZDoNCisgKiA8dWw+DQorICogICA8bGk+e0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5wb3J0YW5kZmxvd3MuQ2hhbmdlU3RydWN0dXJhbEZlYXR1cmVFdmVudCNnZXRCYXNlX0NoYW5nZUV2ZW50IDxlbT5CYXNlIENoYW5nZSBFdmVudDwvZW0+fTwvbGk+DQorICogICA8bGk+e0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5wb3J0YW5kZmxvd3MuQ2hhbmdlU3RydWN0dXJhbEZlYXR1cmVFdmVudCNnZXRTdHJ1Y3R1cmFsRmVhdHVyZSA8ZW0+U3RydWN0dXJhbCBGZWF0dXJlPC9lbT59PC9saT4NCisgKiA8L3VsPg0KKyAqIDwvcD4NCisgKg0KKyAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnBvcnRhbmRmbG93cy5Qb3J0YW5kZmxvd3NQYWNrYWdlI2dldENoYW5nZVN0cnVjdHVyYWxGZWF0dXJlRXZlbnQoKQ0KKyAqIEBtb2RlbA0KKyAqIEBnZW5lcmF0ZWQNCisgKi8NCitwdWJsaWMgaW50ZXJmYWNlIENoYW5nZVN0cnVjdHVyYWxGZWF0dXJlRXZlbnQgZXh0ZW5kcyBFT2JqZWN0IHsNCisJLyoqDQorCSAqIFJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSAnPGVtPjxiPkJhc2UgQ2hhbmdlIEV2ZW50PC9iPjwvZW0+JyByZWZlcmVuY2UuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDxwPg0KKwkgKiBJZiB0aGUgbWVhbmluZyBvZiB0aGUgJzxlbT5CYXNlIENoYW5nZSBFdmVudDwvZW0+JyByZWZlcmVuY2UgaXNuJ3QgY2xlYXIsDQorCSAqIHRoZXJlIHJlYWxseSBzaG91bGQgYmUgbW9yZSBvZiBhIGRlc2NyaXB0aW9uIGhlcmUuLi4NCisJICogPC9wPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHJldHVybiB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+QmFzZSBDaGFuZ2UgRXZlbnQ8L2VtPicgcmVmZXJlbmNlLg0KKwkgKiBAc2VlICNzZXRCYXNlX0NoYW5nZUV2ZW50KENoYW5nZUV2ZW50KQ0KKwkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5wb3J0YW5kZmxvd3MuUG9ydGFuZGZsb3dzUGFja2FnZSNnZXRDaGFuZ2VTdHJ1Y3R1cmFsRmVhdHVyZUV2ZW50X0Jhc2VfQ2hhbmdlRXZlbnQoKQ0KKwkgKiBAbW9kZWwgb3JkZXJlZD0iZmFsc2UiDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUNoYW5nZUV2ZW50IGdldEJhc2VfQ2hhbmdlRXZlbnQoKTsNCisNCisJLyoqDQorCSAqIFNldHMgdGhlIHZhbHVlIG9mIHRoZSAne0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5wb3J0YW5kZmxvd3MuQ2hhbmdlU3RydWN0dXJhbEZlYXR1cmVFdmVudCNnZXRCYXNlX0NoYW5nZUV2ZW50IDxlbT5CYXNlIENoYW5nZSBFdmVudDwvZW0+fScgcmVmZXJlbmNlLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHBhcmFtIHZhbHVlIHRoZSBuZXcgdmFsdWUgb2YgdGhlICc8ZW0+QmFzZSBDaGFuZ2UgRXZlbnQ8L2VtPicgcmVmZXJlbmNlLg0KKwkgKiBAc2VlICNnZXRCYXNlX0NoYW5nZUV2ZW50KCkNCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJdm9pZCBzZXRCYXNlX0NoYW5nZUV2ZW50KENoYW5nZUV2ZW50IHZhbHVlKTsNCisNCisJLyoqDQorCSAqIFJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSAnPGVtPjxiPlN0cnVjdHVyYWwgRmVhdHVyZTwvYj48L2VtPicgcmVmZXJlbmNlLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8cD4NCisJICogSWYgdGhlIG1lYW5pbmcgb2YgdGhlICc8ZW0+U3RydWN0dXJhbCBGZWF0dXJlPC9lbT4nIHJlZmVyZW5jZSBpc24ndCBjbGVhciwNCisJICogdGhlcmUgcmVhbGx5IHNob3VsZCBiZSBtb3JlIG9mIGEgZGVzY3JpcHRpb24gaGVyZS4uLg0KKwkgKiA8L3A+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAcmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT5TdHJ1Y3R1cmFsIEZlYXR1cmU8L2VtPicgcmVmZXJlbmNlLg0KKwkgKiBAc2VlICNzZXRTdHJ1Y3R1cmFsRmVhdHVyZShTdHJ1Y3R1cmFsRmVhdHVyZSkNCisJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucG9ydGFuZGZsb3dzLlBvcnRhbmRmbG93c1BhY2thZ2UjZ2V0Q2hhbmdlU3RydWN0dXJhbEZlYXR1cmVFdmVudF9TdHJ1Y3R1cmFsRmVhdHVyZSgpDQorCSAqIEBtb2RlbCByZXF1aXJlZD0idHJ1ZSIgb3JkZXJlZD0iZmFsc2UiDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCVN0cnVjdHVyYWxGZWF0dXJlIGdldFN0cnVjdHVyYWxGZWF0dXJlKCk7DQorDQorCS8qKg0KKwkgKiBTZXRzIHRoZSB2YWx1ZSBvZiB0aGUgJ3tAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucG9ydGFuZGZsb3dzLkNoYW5nZVN0cnVjdHVyYWxGZWF0dXJlRXZlbnQjZ2V0U3RydWN0dXJhbEZlYXR1cmUgPGVtPlN0cnVjdHVyYWwgRmVhdHVyZTwvZW0+fScgcmVmZXJlbmNlLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHBhcmFtIHZhbHVlIHRoZSBuZXcgdmFsdWUgb2YgdGhlICc8ZW0+U3RydWN0dXJhbCBGZWF0dXJlPC9lbT4nIHJlZmVyZW5jZS4NCisJICogQHNlZSAjZ2V0U3RydWN0dXJhbEZlYXR1cmUoKQ0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwl2b2lkIHNldFN0cnVjdHVyYWxGZWF0dXJlKFN0cnVjdHVyYWxGZWF0dXJlIHZhbHVlKTsNCisNCit9IC8vIENoYW5nZVN0cnVjdHVyYWxGZWF0dXJlRXZlbnQNCmRpZmYgLS1naXQgYS9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9wb3J0YW5kZmxvd3MvRGlyZWN0ZWRGZWF0dXJlLmphdmEgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9wb3J0YW5kZmxvd3MvRGlyZWN0ZWRGZWF0dXJlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2Y2YmUwYgotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L3BvcnRhbmRmbG93cy9EaXJlY3RlZEZlYXR1cmUuamF2YQpAQCAtMCwwICsxLDg4IEBACisvKioNCisgKiBDb3B5cmlnaHQgKGMpIDIwMTUgQ0VBIExJU1QuDQorICogDQorICogIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCisgKiAgYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQorICogIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQorICogIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICovDQorcGFja2FnZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucG9ydGFuZGZsb3dzOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRU9iamVjdDsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UudW1sMi51bWwuRmVhdHVyZTsNCisNCisvKioNCisgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKyAqIEEgcmVwcmVzZW50YXRpb24gb2YgdGhlIG1vZGVsIG9iamVjdCAnPGVtPjxiPkRpcmVjdGVkIEZlYXR1cmU8L2I+PC9lbT4nLg0KKyAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKyAqDQorICogPHA+DQorICogVGhlIGZvbGxvd2luZyBmZWF0dXJlcyBhcmUgc3VwcG9ydGVkOg0KKyAqIDx1bD4NCisgKiAgIDxsaT57QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnBvcnRhbmRmbG93cy5EaXJlY3RlZEZlYXR1cmUjZ2V0QmFzZV9GZWF0dXJlIDxlbT5CYXNlIEZlYXR1cmU8L2VtPn08L2xpPg0KKyAqICAgPGxpPntAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucG9ydGFuZGZsb3dzLkRpcmVjdGVkRmVhdHVyZSNnZXRGZWF0dXJlRGlyZWN0aW9uIDxlbT5GZWF0dXJlIERpcmVjdGlvbjwvZW0+fTwvbGk+DQorICogPC91bD4NCisgKiA8L3A+DQorICoNCisgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5wb3J0YW5kZmxvd3MuUG9ydGFuZGZsb3dzUGFja2FnZSNnZXREaXJlY3RlZEZlYXR1cmUoKQ0KKyAqIEBtb2RlbA0KKyAqIEBnZW5lcmF0ZWQNCisgKi8NCitwdWJsaWMgaW50ZXJmYWNlIERpcmVjdGVkRmVhdHVyZSBleHRlbmRzIEVPYmplY3Qgew0KKwkvKioNCisJICogUmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+PGI+QmFzZSBGZWF0dXJlPC9iPjwvZW0+JyByZWZlcmVuY2UuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDxwPg0KKwkgKiBJZiB0aGUgbWVhbmluZyBvZiB0aGUgJzxlbT5CYXNlIEZlYXR1cmU8L2VtPicgcmVmZXJlbmNlIGlzbid0IGNsZWFyLA0KKwkgKiB0aGVyZSByZWFsbHkgc2hvdWxkIGJlIG1vcmUgb2YgYSBkZXNjcmlwdGlvbiBoZXJlLi4uDQorCSAqIDwvcD4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEByZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSAnPGVtPkJhc2UgRmVhdHVyZTwvZW0+JyByZWZlcmVuY2UuDQorCSAqIEBzZWUgI3NldEJhc2VfRmVhdHVyZShGZWF0dXJlKQ0KKwkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5wb3J0YW5kZmxvd3MuUG9ydGFuZGZsb3dzUGFja2FnZSNnZXREaXJlY3RlZEZlYXR1cmVfQmFzZV9GZWF0dXJlKCkNCisJICogQG1vZGVsIG9yZGVyZWQ9ImZhbHNlIg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlGZWF0dXJlIGdldEJhc2VfRmVhdHVyZSgpOw0KKw0KKwkvKioNCisJICogU2V0cyB0aGUgdmFsdWUgb2YgdGhlICd7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnBvcnRhbmRmbG93cy5EaXJlY3RlZEZlYXR1cmUjZ2V0QmFzZV9GZWF0dXJlIDxlbT5CYXNlIEZlYXR1cmU8L2VtPn0nIHJlZmVyZW5jZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBwYXJhbSB2YWx1ZSB0aGUgbmV3IHZhbHVlIG9mIHRoZSAnPGVtPkJhc2UgRmVhdHVyZTwvZW0+JyByZWZlcmVuY2UuDQorCSAqIEBzZWUgI2dldEJhc2VfRmVhdHVyZSgpDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXZvaWQgc2V0QmFzZV9GZWF0dXJlKEZlYXR1cmUgdmFsdWUpOw0KKw0KKwkvKioNCisJICogUmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+PGI+RmVhdHVyZSBEaXJlY3Rpb248L2I+PC9lbT4nIGF0dHJpYnV0ZS4NCisJICogVGhlIGxpdGVyYWxzIGFyZSBmcm9tIHRoZSBlbnVtZXJhdGlvbiB7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnBvcnRhbmRmbG93cy5GZWF0dXJlRGlyZWN0aW9ufS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPHA+DQorCSAqIElmIHRoZSBtZWFuaW5nIG9mIHRoZSAnPGVtPkZlYXR1cmUgRGlyZWN0aW9uPC9lbT4nIGF0dHJpYnV0ZSBpc24ndCBjbGVhciwNCisJICogdGhlcmUgcmVhbGx5IHNob3VsZCBiZSBtb3JlIG9mIGEgZGVzY3JpcHRpb24gaGVyZS4uLg0KKwkgKiA8L3A+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAcmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT5GZWF0dXJlIERpcmVjdGlvbjwvZW0+JyBhdHRyaWJ1dGUuDQorCSAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnBvcnRhbmRmbG93cy5GZWF0dXJlRGlyZWN0aW9uDQorCSAqIEBzZWUgI3NldEZlYXR1cmVEaXJlY3Rpb24oRmVhdHVyZURpcmVjdGlvbikNCisJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucG9ydGFuZGZsb3dzLlBvcnRhbmRmbG93c1BhY2thZ2UjZ2V0RGlyZWN0ZWRGZWF0dXJlX0ZlYXR1cmVEaXJlY3Rpb24oKQ0KKwkgKiBAbW9kZWwgcmVxdWlyZWQ9InRydWUiIG9yZGVyZWQ9ImZhbHNlIg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlGZWF0dXJlRGlyZWN0aW9uIGdldEZlYXR1cmVEaXJlY3Rpb24oKTsNCisNCisJLyoqDQorCSAqIFNldHMgdGhlIHZhbHVlIG9mIHRoZSAne0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5wb3J0YW5kZmxvd3MuRGlyZWN0ZWRGZWF0dXJlI2dldEZlYXR1cmVEaXJlY3Rpb24gPGVtPkZlYXR1cmUgRGlyZWN0aW9uPC9lbT59JyBhdHRyaWJ1dGUuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAcGFyYW0gdmFsdWUgdGhlIG5ldyB2YWx1ZSBvZiB0aGUgJzxlbT5GZWF0dXJlIERpcmVjdGlvbjwvZW0+JyBhdHRyaWJ1dGUuDQorCSAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnBvcnRhbmRmbG93cy5GZWF0dXJlRGlyZWN0aW9uDQorCSAqIEBzZWUgI2dldEZlYXR1cmVEaXJlY3Rpb24oKQ0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwl2b2lkIHNldEZlYXR1cmVEaXJlY3Rpb24oRmVhdHVyZURpcmVjdGlvbiB2YWx1ZSk7DQorDQorfSAvLyBEaXJlY3RlZEZlYXR1cmUNCmRpZmYgLS1naXQgYS9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9wb3J0YW5kZmxvd3MvRmVhdHVyZURpcmVjdGlvbi5qYXZhIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvcG9ydGFuZGZsb3dzL0ZlYXR1cmVEaXJlY3Rpb24uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MGNkY2QyCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvcG9ydGFuZGZsb3dzL0ZlYXR1cmVEaXJlY3Rpb24uamF2YQpAQCAtMCwwICsxLDI0NyBAQAorLyoqDQorICogQ29weXJpZ2h0IChjKSAyMDE1IENFQSBMSVNULg0KKyAqIA0KKyAqICBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQorICogIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KKyAqICB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KKyAqICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqLw0KK3BhY2thZ2Ugb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnBvcnRhbmRmbG93czsNCisNCitpbXBvcnQgamF2YS51dGlsLkFycmF5czsNCitpbXBvcnQgamF2YS51dGlsLkNvbGxlY3Rpb25zOw0KK2ltcG9ydCBqYXZhLnV0aWwuTGlzdDsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi51dGlsLkVudW1lcmF0b3I7DQorDQorLyoqDQorICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisgKiBBIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBsaXRlcmFscyBvZiB0aGUgZW51bWVyYXRpb24gJzxlbT48Yj5GZWF0dXJlIERpcmVjdGlvbjwvYj48L2VtPicsDQorICogYW5kIHV0aWxpdHkgbWV0aG9kcyBmb3Igd29ya2luZyB3aXRoIHRoZW0uDQorICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucG9ydGFuZGZsb3dzLlBvcnRhbmRmbG93c1BhY2thZ2UjZ2V0RmVhdHVyZURpcmVjdGlvbigpDQorICogQG1vZGVsDQorICogQGdlbmVyYXRlZA0KKyAqLw0KK3B1YmxpYyBlbnVtIEZlYXR1cmVEaXJlY3Rpb24gaW1wbGVtZW50cyBFbnVtZXJhdG9yIHsNCisJLyoqDQorCSAqIFRoZSAnPGVtPjxiPlByb3ZpZGVkPC9iPjwvZW0+JyBsaXRlcmFsIG9iamVjdC4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBzZWUgI1BST1ZJREVEX1ZBTFVFDQorCSAqIEBnZW5lcmF0ZWQNCisJICogQG9yZGVyZWQNCisJICovDQorCVBST1ZJREVEKDAsICJwcm92aWRlZCIsICJwcm92aWRlZCIpLCAvLyROT04tTkxTLTEkIC8vJE5PTi1OTFMtMiQNCisNCisJLyoqDQorCSAqIFRoZSAnPGVtPjxiPlJlcXVpcmVkPC9iPjwvZW0+JyBsaXRlcmFsIG9iamVjdC4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBzZWUgI1JFUVVJUkVEX1ZBTFVFDQorCSAqIEBnZW5lcmF0ZWQNCisJICogQG9yZGVyZWQNCisJICovDQorCVJFUVVJUkVEKDEsICJyZXF1aXJlZCIsICJyZXF1aXJlZCIpLCAvLyROT04tTkxTLTEkIC8vJE5PTi1OTFMtMiQNCisNCisJLyoqDQorCSAqIFRoZSAnPGVtPjxiPlByb3ZpZGVkIFJlcXVpcmVkPC9iPjwvZW0+JyBsaXRlcmFsIG9iamVjdC4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBzZWUgI1BST1ZJREVEX1JFUVVJUkVEX1ZBTFVFDQorCSAqIEBnZW5lcmF0ZWQNCisJICogQG9yZGVyZWQNCisJICovDQorCVBST1ZJREVEX1JFUVVJUkVEKDIsICJwcm92aWRlZFJlcXVpcmVkIiwgInByb3ZpZGVkUmVxdWlyZWQiKTsgLy8kTk9OLU5MUy0xJCAvLyROT04tTkxTLTIkDQorDQorCS8qKg0KKwkgKiBUaGUgJzxlbT48Yj5Qcm92aWRlZDwvYj48L2VtPicgbGl0ZXJhbCB2YWx1ZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPHA+DQorCSAqIElmIHRoZSBtZWFuaW5nIG9mICc8ZW0+PGI+UHJvdmlkZWQ8L2I+PC9lbT4nIGxpdGVyYWwgb2JqZWN0IGlzbid0IGNsZWFyLA0KKwkgKiB0aGVyZSByZWFsbHkgc2hvdWxkIGJlIG1vcmUgb2YgYSBkZXNjcmlwdGlvbiBoZXJlLi4uDQorCSAqIDwvcD4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBzZWUgI1BST1ZJREVEDQorCSAqIEBtb2RlbCBuYW1lPSJwcm92aWRlZCINCisJICogQGdlbmVyYXRlZA0KKwkgKiBAb3JkZXJlZA0KKwkgKi8NCisJcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgUFJPVklERURfVkFMVUUgPSAwOw0KKw0KKwkvKioNCisJICogVGhlICc8ZW0+PGI+UmVxdWlyZWQ8L2I+PC9lbT4nIGxpdGVyYWwgdmFsdWUuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDxwPg0KKwkgKiBJZiB0aGUgbWVhbmluZyBvZiAnPGVtPjxiPlJlcXVpcmVkPC9iPjwvZW0+JyBsaXRlcmFsIG9iamVjdCBpc24ndCBjbGVhciwNCisJICogdGhlcmUgcmVhbGx5IHNob3VsZCBiZSBtb3JlIG9mIGEgZGVzY3JpcHRpb24gaGVyZS4uLg0KKwkgKiA8L3A+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAc2VlICNSRVFVSVJFRA0KKwkgKiBAbW9kZWwgbmFtZT0icmVxdWlyZWQiDQorCSAqIEBnZW5lcmF0ZWQNCisJICogQG9yZGVyZWQNCisJICovDQorCXB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFJFUVVJUkVEX1ZBTFVFID0gMTsNCisNCisJLyoqDQorCSAqIFRoZSAnPGVtPjxiPlByb3ZpZGVkIFJlcXVpcmVkPC9iPjwvZW0+JyBsaXRlcmFsIHZhbHVlLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8cD4NCisJICogSWYgdGhlIG1lYW5pbmcgb2YgJzxlbT48Yj5Qcm92aWRlZCBSZXF1aXJlZDwvYj48L2VtPicgbGl0ZXJhbCBvYmplY3QgaXNuJ3QgY2xlYXIsDQorCSAqIHRoZXJlIHJlYWxseSBzaG91bGQgYmUgbW9yZSBvZiBhIGRlc2NyaXB0aW9uIGhlcmUuLi4NCisJICogPC9wPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHNlZSAjUFJPVklERURfUkVRVUlSRUQNCisJICogQG1vZGVsIG5hbWU9InByb3ZpZGVkUmVxdWlyZWQiDQorCSAqIEBnZW5lcmF0ZWQNCisJICogQG9yZGVyZWQNCisJICovDQorCXB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFBST1ZJREVEX1JFUVVJUkVEX1ZBTFVFID0gMjsNCisNCisJLyoqDQorCSAqIEFuIGFycmF5IG9mIGFsbCB0aGUgJzxlbT48Yj5GZWF0dXJlIERpcmVjdGlvbjwvYj48L2VtPicgZW51bWVyYXRvcnMuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwcml2YXRlIHN0YXRpYyBmaW5hbCBGZWF0dXJlRGlyZWN0aW9uW10gVkFMVUVTX0FSUkFZID0NCisJCW5ldyBGZWF0dXJlRGlyZWN0aW9uW10gew0KKwkJCVBST1ZJREVELA0KKwkJCVJFUVVJUkVELA0KKwkJCVBST1ZJREVEX1JFUVVJUkVELA0KKwkJfTsNCisNCisJLyoqDQorCSAqIEEgcHVibGljIHJlYWQtb25seSBsaXN0IG9mIGFsbCB0aGUgJzxlbT48Yj5GZWF0dXJlIERpcmVjdGlvbjwvYj48L2VtPicgZW51bWVyYXRvcnMuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgc3RhdGljIGZpbmFsIExpc3Q8RmVhdHVyZURpcmVjdGlvbj4gVkFMVUVTID0gQ29sbGVjdGlvbnMudW5tb2RpZmlhYmxlTGlzdChBcnJheXMuYXNMaXN0KFZBTFVFU19BUlJBWSkpOw0KKw0KKwkvKioNCisJICogUmV0dXJucyB0aGUgJzxlbT48Yj5GZWF0dXJlIERpcmVjdGlvbjwvYj48L2VtPicgbGl0ZXJhbCB3aXRoIHRoZSBzcGVjaWZpZWQgbGl0ZXJhbCB2YWx1ZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBwYXJhbSBsaXRlcmFsIHRoZSBsaXRlcmFsLg0KKwkgKiBAcmV0dXJuIHRoZSBtYXRjaGluZyBlbnVtZXJhdG9yIG9yIDxjb2RlPm51bGw8L2NvZGU+Lg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgc3RhdGljIEZlYXR1cmVEaXJlY3Rpb24gZ2V0KFN0cmluZyBsaXRlcmFsKSB7DQorCQlmb3IgKGludCBpID0gMDsgaSA8IFZBTFVFU19BUlJBWS5sZW5ndGg7ICsraSkgew0KKwkJCUZlYXR1cmVEaXJlY3Rpb24gcmVzdWx0ID0gVkFMVUVTX0FSUkFZW2ldOw0KKwkJCWlmIChyZXN1bHQudG9TdHJpbmcoKS5lcXVhbHMobGl0ZXJhbCkpIHsNCisJCQkJcmV0dXJuIHJlc3VsdDsNCisJCQl9DQorCQl9DQorCQlyZXR1cm4gbnVsbDsNCisJfQ0KKw0KKwkvKioNCisJICogUmV0dXJucyB0aGUgJzxlbT48Yj5GZWF0dXJlIERpcmVjdGlvbjwvYj48L2VtPicgbGl0ZXJhbCB3aXRoIHRoZSBzcGVjaWZpZWQgbmFtZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBwYXJhbSBuYW1lIHRoZSBuYW1lLg0KKwkgKiBAcmV0dXJuIHRoZSBtYXRjaGluZyBlbnVtZXJhdG9yIG9yIDxjb2RlPm51bGw8L2NvZGU+Lg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgc3RhdGljIEZlYXR1cmVEaXJlY3Rpb24gZ2V0QnlOYW1lKFN0cmluZyBuYW1lKSB7DQorCQlmb3IgKGludCBpID0gMDsgaSA8IFZBTFVFU19BUlJBWS5sZW5ndGg7ICsraSkgew0KKwkJCUZlYXR1cmVEaXJlY3Rpb24gcmVzdWx0ID0gVkFMVUVTX0FSUkFZW2ldOw0KKwkJCWlmIChyZXN1bHQuZ2V0TmFtZSgpLmVxdWFscyhuYW1lKSkgew0KKwkJCQlyZXR1cm4gcmVzdWx0Ow0KKwkJCX0NCisJCX0NCisJCXJldHVybiBudWxsOw0KKwl9DQorDQorCS8qKg0KKwkgKiBSZXR1cm5zIHRoZSAnPGVtPjxiPkZlYXR1cmUgRGlyZWN0aW9uPC9iPjwvZW0+JyBsaXRlcmFsIHdpdGggdGhlIHNwZWNpZmllZCBpbnRlZ2VyIHZhbHVlLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHBhcmFtIHZhbHVlIHRoZSBpbnRlZ2VyIHZhbHVlLg0KKwkgKiBAcmV0dXJuIHRoZSBtYXRjaGluZyBlbnVtZXJhdG9yIG9yIDxjb2RlPm51bGw8L2NvZGU+Lg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgc3RhdGljIEZlYXR1cmVEaXJlY3Rpb24gZ2V0KGludCB2YWx1ZSkgew0KKwkJc3dpdGNoICh2YWx1ZSkgew0KKwkJCWNhc2UgUFJPVklERURfVkFMVUU6IHJldHVybiBQUk9WSURFRDsNCisJCQljYXNlIFJFUVVJUkVEX1ZBTFVFOiByZXR1cm4gUkVRVUlSRUQ7DQorCQkJY2FzZSBQUk9WSURFRF9SRVFVSVJFRF9WQUxVRTogcmV0dXJuIFBST1ZJREVEX1JFUVVJUkVEOw0KKwkJfQ0KKwkJcmV0dXJuIG51bGw7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwcml2YXRlIGZpbmFsIGludCB2YWx1ZTsNCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwcml2YXRlIGZpbmFsIFN0cmluZyBuYW1lOw0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXByaXZhdGUgZmluYWwgU3RyaW5nIGxpdGVyYWw7DQorDQorCS8qKg0KKwkgKiBPbmx5IHRoaXMgY2xhc3MgY2FuIGNvbnN0cnVjdCBpbnN0YW5jZXMuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwcml2YXRlIEZlYXR1cmVEaXJlY3Rpb24oaW50IHZhbHVlLCBTdHJpbmcgbmFtZSwgU3RyaW5nIGxpdGVyYWwpIHsNCisJCXRoaXMudmFsdWUgPSB2YWx1ZTsNCisJCXRoaXMubmFtZSA9IG5hbWU7DQorCQl0aGlzLmxpdGVyYWwgPSBsaXRlcmFsOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIGludCBnZXRWYWx1ZSgpIHsNCisJICByZXR1cm4gdmFsdWU7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgU3RyaW5nIGdldE5hbWUoKSB7DQorCSAgcmV0dXJuIG5hbWU7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgU3RyaW5nIGdldExpdGVyYWwoKSB7DQorCSAgcmV0dXJuIGxpdGVyYWw7DQorCX0NCisNCisJLyoqDQorCSAqIFJldHVybnMgdGhlIGxpdGVyYWwgdmFsdWUgb2YgdGhlIGVudW1lcmF0b3IsIHdoaWNoIGlzIGl0cyBzdHJpbmcgcmVwcmVzZW50YXRpb24uDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIFN0cmluZyB0b1N0cmluZygpIHsNCisJCXJldHVybiBsaXRlcmFsOw0KKwl9DQorCQ0KK30gLy9GZWF0dXJlRGlyZWN0aW9uDQpkaWZmIC0tZ2l0IGEvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvcG9ydGFuZGZsb3dzL0Zsb3dEaXJlY3Rpb24uamF2YSBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L3BvcnRhbmRmbG93cy9GbG93RGlyZWN0aW9uLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDY1N2JmYQotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L3BvcnRhbmRmbG93cy9GbG93RGlyZWN0aW9uLmphdmEKQEAgLTAsMCArMSwyNDcgQEAKKy8qKg0KKyAqIENvcHlyaWdodCAoYykgMjAxNSBDRUEgTElTVC4NCisgKiANCisgKiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KKyAqICBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCisgKiAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCisgKiAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgKi8NCitwYWNrYWdlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5wb3J0YW5kZmxvd3M7DQorDQoraW1wb3J0IGphdmEudXRpbC5BcnJheXM7DQoraW1wb3J0IGphdmEudXRpbC5Db2xsZWN0aW9uczsNCitpbXBvcnQgamF2YS51dGlsLkxpc3Q7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jb21tb24udXRpbC5FbnVtZXJhdG9yOw0KKw0KKy8qKg0KKyAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorICogQSByZXByZXNlbnRhdGlvbiBvZiB0aGUgbGl0ZXJhbHMgb2YgdGhlIGVudW1lcmF0aW9uICc8ZW0+PGI+RmxvdyBEaXJlY3Rpb248L2I+PC9lbT4nLA0KKyAqIGFuZCB1dGlsaXR5IG1ldGhvZHMgZm9yIHdvcmtpbmcgd2l0aCB0aGVtLg0KKyAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKyAqIDwhLS0gYmVnaW4tbW9kZWwtZG9jIC0tPg0KKyAqIEZsb3dEaXJlY3Rpb24gaXMgYW4gZW51bWVyYXRpb24gdHlwZSB0aGF0IGRlZmluZXMgbGl0ZXJhbHMgdXNlZCBmb3Igc3BlY2lmeWluZyBpbnB1dCBhbmQgb3V0cHV0IGRpcmVjdGlvbnMuIEZsb3dEaXJlY3Rpb24gaXMgdXNlZCBieSBmbG93IHByb3BlcnRpZXMgdG8gaW5kaWNhdGUgaWYgYSBwcm9wZXJ0eSBpcyBhbiBpbnB1dCBvciBhbiBvdXRwdXQgd2l0aCByZXNwZWN0IHRvIGl0cyBvd25lci4NCisgKiA8IS0tIGVuZC1tb2RlbC1kb2MgLS0+DQorICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucG9ydGFuZGZsb3dzLlBvcnRhbmRmbG93c1BhY2thZ2UjZ2V0Rmxvd0RpcmVjdGlvbigpDQorICogQG1vZGVsDQorICogQGdlbmVyYXRlZA0KKyAqLw0KK3B1YmxpYyBlbnVtIEZsb3dEaXJlY3Rpb24gaW1wbGVtZW50cyBFbnVtZXJhdG9yIHsNCisJLyoqDQorCSAqIFRoZSAnPGVtPjxiPkluPC9iPjwvZW0+JyBsaXRlcmFsIG9iamVjdC4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBzZWUgI0lOX1ZBTFVFDQorCSAqIEBnZW5lcmF0ZWQNCisJICogQG9yZGVyZWQNCisJICovDQorCUlOKDAsICJpbiIsICJpbiIpLCAvLyROT04tTkxTLTEkIC8vJE5PTi1OTFMtMiQNCisNCisJLyoqDQorCSAqIFRoZSAnPGVtPjxiPk91dDwvYj48L2VtPicgbGl0ZXJhbCBvYmplY3QuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAc2VlICNPVVRfVkFMVUUNCisJICogQGdlbmVyYXRlZA0KKwkgKiBAb3JkZXJlZA0KKwkgKi8NCisJT1VUKDEsICJvdXQiLCAib3V0IiksIC8vJE5PTi1OTFMtMSQgLy8kTk9OLU5MUy0yJA0KKw0KKwkvKioNCisJICogVGhlICc8ZW0+PGI+SW5vdXQ8L2I+PC9lbT4nIGxpdGVyYWwgb2JqZWN0Lg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHNlZSAjSU5PVVRfVkFMVUUNCisJICogQGdlbmVyYXRlZA0KKwkgKiBAb3JkZXJlZA0KKwkgKi8NCisJSU5PVVQoMiwgImlub3V0IiwgImlub3V0Iik7IC8vJE5PTi1OTFMtMSQgLy8kTk9OLU5MUy0yJA0KKw0KKwkvKioNCisJICogVGhlICc8ZW0+PGI+SW48L2I+PC9lbT4nIGxpdGVyYWwgdmFsdWUuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGJlZ2luLW1vZGVsLWRvYyAtLT4NCisJICogSW5kaWNhdGVzIHRoYXQgdGhlIGZsb3cgcHJvcGVydHkgaXMgaW5wdXQgdG8gdGhlIG93bmluZyBibG9jay4NCisJICogPCEtLSBlbmQtbW9kZWwtZG9jIC0tPg0KKwkgKiBAc2VlICNJTg0KKwkgKiBAbW9kZWwgbmFtZT0iaW4iDQorCSAqIEBnZW5lcmF0ZWQNCisJICogQG9yZGVyZWQNCisJICovDQorCXB1YmxpYyBzdGF0aWMgZmluYWwgaW50IElOX1ZBTFVFID0gMDsNCisNCisJLyoqDQorCSAqIFRoZSAnPGVtPjxiPk91dDwvYj48L2VtPicgbGl0ZXJhbCB2YWx1ZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gYmVnaW4tbW9kZWwtZG9jIC0tPg0KKwkgKiBJbmRpY2F0ZXMgdGhhdCB0aGUgZmxvdyBwcm9wZXJ0eSBpcyBhbiBvdXRwdXQgb2YgdGhlIG93bmluZyBibG9jay4NCisJICogPCEtLSBlbmQtbW9kZWwtZG9jIC0tPg0KKwkgKiBAc2VlICNPVVQNCisJICogQG1vZGVsIG5hbWU9Im91dCINCisJICogQGdlbmVyYXRlZA0KKwkgKiBAb3JkZXJlZA0KKwkgKi8NCisJcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgT1VUX1ZBTFVFID0gMTsNCisNCisJLyoqDQorCSAqIFRoZSAnPGVtPjxiPklub3V0PC9iPjwvZW0+JyBsaXRlcmFsIHZhbHVlLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogPCEtLSBiZWdpbi1tb2RlbC1kb2MgLS0+DQorCSAqIEluZGljYXRlcyB0aGF0IHRoZSBmbG93IHByb3BlcnR5IGlzIGJvdGggYW4gaW5wdXQgYW5kIGFuIG91dHB1dCBvZiB0aGUgb3duaW5nIGJsb2NrLg0KKwkgKiA8IS0tIGVuZC1tb2RlbC1kb2MgLS0+DQorCSAqIEBzZWUgI0lOT1VUDQorCSAqIEBtb2RlbCBuYW1lPSJpbm91dCINCisJICogQGdlbmVyYXRlZA0KKwkgKiBAb3JkZXJlZA0KKwkgKi8NCisJcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgSU5PVVRfVkFMVUUgPSAyOw0KKw0KKwkvKioNCisJICogQW4gYXJyYXkgb2YgYWxsIHRoZSAnPGVtPjxiPkZsb3cgRGlyZWN0aW9uPC9iPjwvZW0+JyBlbnVtZXJhdG9ycy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXByaXZhdGUgc3RhdGljIGZpbmFsIEZsb3dEaXJlY3Rpb25bXSBWQUxVRVNfQVJSQVkgPQ0KKwkJbmV3IEZsb3dEaXJlY3Rpb25bXSB7DQorCQkJSU4sDQorCQkJT1VULA0KKwkJCUlOT1VULA0KKwkJfTsNCisNCisJLyoqDQorCSAqIEEgcHVibGljIHJlYWQtb25seSBsaXN0IG9mIGFsbCB0aGUgJzxlbT48Yj5GbG93IERpcmVjdGlvbjwvYj48L2VtPicgZW51bWVyYXRvcnMuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgc3RhdGljIGZpbmFsIExpc3Q8Rmxvd0RpcmVjdGlvbj4gVkFMVUVTID0gQ29sbGVjdGlvbnMudW5tb2RpZmlhYmxlTGlzdChBcnJheXMuYXNMaXN0KFZBTFVFU19BUlJBWSkpOw0KKw0KKwkvKioNCisJICogUmV0dXJucyB0aGUgJzxlbT48Yj5GbG93IERpcmVjdGlvbjwvYj48L2VtPicgbGl0ZXJhbCB3aXRoIHRoZSBzcGVjaWZpZWQgbGl0ZXJhbCB2YWx1ZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBwYXJhbSBsaXRlcmFsIHRoZSBsaXRlcmFsLg0KKwkgKiBAcmV0dXJuIHRoZSBtYXRjaGluZyBlbnVtZXJhdG9yIG9yIDxjb2RlPm51bGw8L2NvZGU+Lg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgc3RhdGljIEZsb3dEaXJlY3Rpb24gZ2V0KFN0cmluZyBsaXRlcmFsKSB7DQorCQlmb3IgKGludCBpID0gMDsgaSA8IFZBTFVFU19BUlJBWS5sZW5ndGg7ICsraSkgew0KKwkJCUZsb3dEaXJlY3Rpb24gcmVzdWx0ID0gVkFMVUVTX0FSUkFZW2ldOw0KKwkJCWlmIChyZXN1bHQudG9TdHJpbmcoKS5lcXVhbHMobGl0ZXJhbCkpIHsNCisJCQkJcmV0dXJuIHJlc3VsdDsNCisJCQl9DQorCQl9DQorCQlyZXR1cm4gbnVsbDsNCisJfQ0KKw0KKwkvKioNCisJICogUmV0dXJucyB0aGUgJzxlbT48Yj5GbG93IERpcmVjdGlvbjwvYj48L2VtPicgbGl0ZXJhbCB3aXRoIHRoZSBzcGVjaWZpZWQgbmFtZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBwYXJhbSBuYW1lIHRoZSBuYW1lLg0KKwkgKiBAcmV0dXJuIHRoZSBtYXRjaGluZyBlbnVtZXJhdG9yIG9yIDxjb2RlPm51bGw8L2NvZGU+Lg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgc3RhdGljIEZsb3dEaXJlY3Rpb24gZ2V0QnlOYW1lKFN0cmluZyBuYW1lKSB7DQorCQlmb3IgKGludCBpID0gMDsgaSA8IFZBTFVFU19BUlJBWS5sZW5ndGg7ICsraSkgew0KKwkJCUZsb3dEaXJlY3Rpb24gcmVzdWx0ID0gVkFMVUVTX0FSUkFZW2ldOw0KKwkJCWlmIChyZXN1bHQuZ2V0TmFtZSgpLmVxdWFscyhuYW1lKSkgew0KKwkJCQlyZXR1cm4gcmVzdWx0Ow0KKwkJCX0NCisJCX0NCisJCXJldHVybiBudWxsOw0KKwl9DQorDQorCS8qKg0KKwkgKiBSZXR1cm5zIHRoZSAnPGVtPjxiPkZsb3cgRGlyZWN0aW9uPC9iPjwvZW0+JyBsaXRlcmFsIHdpdGggdGhlIHNwZWNpZmllZCBpbnRlZ2VyIHZhbHVlLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHBhcmFtIHZhbHVlIHRoZSBpbnRlZ2VyIHZhbHVlLg0KKwkgKiBAcmV0dXJuIHRoZSBtYXRjaGluZyBlbnVtZXJhdG9yIG9yIDxjb2RlPm51bGw8L2NvZGU+Lg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgc3RhdGljIEZsb3dEaXJlY3Rpb24gZ2V0KGludCB2YWx1ZSkgew0KKwkJc3dpdGNoICh2YWx1ZSkgew0KKwkJCWNhc2UgSU5fVkFMVUU6IHJldHVybiBJTjsNCisJCQljYXNlIE9VVF9WQUxVRTogcmV0dXJuIE9VVDsNCisJCQljYXNlIElOT1VUX1ZBTFVFOiByZXR1cm4gSU5PVVQ7DQorCQl9DQorCQlyZXR1cm4gbnVsbDsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXByaXZhdGUgZmluYWwgaW50IHZhbHVlOw0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXByaXZhdGUgZmluYWwgU3RyaW5nIG5hbWU7DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHJpdmF0ZSBmaW5hbCBTdHJpbmcgbGl0ZXJhbDsNCisNCisJLyoqDQorCSAqIE9ubHkgdGhpcyBjbGFzcyBjYW4gY29uc3RydWN0IGluc3RhbmNlcy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXByaXZhdGUgRmxvd0RpcmVjdGlvbihpbnQgdmFsdWUsIFN0cmluZyBuYW1lLCBTdHJpbmcgbGl0ZXJhbCkgew0KKwkJdGhpcy52YWx1ZSA9IHZhbHVlOw0KKwkJdGhpcy5uYW1lID0gbmFtZTsNCisJCXRoaXMubGl0ZXJhbCA9IGxpdGVyYWw7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgaW50IGdldFZhbHVlKCkgew0KKwkgIHJldHVybiB2YWx1ZTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBTdHJpbmcgZ2V0TmFtZSgpIHsNCisJICByZXR1cm4gbmFtZTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBTdHJpbmcgZ2V0TGl0ZXJhbCgpIHsNCisJICByZXR1cm4gbGl0ZXJhbDsNCisJfQ0KKw0KKwkvKioNCisJICogUmV0dXJucyB0aGUgbGl0ZXJhbCB2YWx1ZSBvZiB0aGUgZW51bWVyYXRvciwgd2hpY2ggaXMgaXRzIHN0cmluZyByZXByZXNlbnRhdGlvbi4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgU3RyaW5nIHRvU3RyaW5nKCkgew0KKwkJcmV0dXJuIGxpdGVyYWw7DQorCX0NCisJDQorfSAvL0Zsb3dEaXJlY3Rpb24NCmRpZmYgLS1naXQgYS9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9wb3J0YW5kZmxvd3MvRmxvd1Byb3BlcnR5LmphdmEgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9wb3J0YW5kZmxvd3MvRmxvd1Byb3BlcnR5LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWQyNGMwNwotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L3BvcnRhbmRmbG93cy9GbG93UHJvcGVydHkuamF2YQpAQCAtMCwwICsxLDkyIEBACisvKioNCisgKiBDb3B5cmlnaHQgKGMpIDIwMTUgQ0VBIExJU1QuDQorICogDQorICogIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCisgKiAgYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQorICogIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQorICogIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICovDQorcGFja2FnZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucG9ydGFuZGZsb3dzOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRU9iamVjdDsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UudW1sMi51bWwuUHJvcGVydHk7DQorDQorLyoqDQorICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisgKiBBIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBtb2RlbCBvYmplY3QgJzxlbT48Yj5GbG93IFByb3BlcnR5PC9iPjwvZW0+Jy4NCisgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisgKg0KKyAqIDwhLS0gYmVnaW4tbW9kZWwtZG9jIC0tPg0KKyAqIEEgRmxvd1Byb3BlcnR5IHNpZ25pZmllcyBhIHNpbmdsZSBmbG93IGVsZW1lbnQgdGhhdCBjYW4gZmxvdyB0by9mcm9tIGEgYmxvY2suIEEgZmxvdyBwcm9wZXJ0eZJzIHZhbHVlcyBhcmUgZWl0aGVyIHJlY2VpdmVkIGZyb20gb3IgdHJhbnNtaXR0ZWQgdG8gYW4gZXh0ZXJuYWwgYmxvY2suIEZsb3cgcHJvcGVydGllcyBhcmUgZGVmaW5lZCBkaXJlY3RseSBvbiBibG9ja3Mgb3IgZmxvdyBzcGVjaWZpY2F0aW9ucyB0aGF0IGFyZSB0aG9zZSBzcGVjaWZpY2F0aW9ucyB3aGljaCB0eXBlIHRoZSBmbG93IHBvcnRzLiBGbG93IHByb3BlcnRpZXMgZW5hYmxlIGl0ZW0gZmxvd3MgYWNyb3NzIGNvbm5lY3RvcnMgY29ubmVjdGluZyBwYXJ0cyBvZiB0aGUgY29ycmVzcG9uZGluZyBibG9jayB0eXBlcywgZWl0aGVyIGRpcmVjdGx5IChpbiBjYXNlIG9mIHRoZSBwcm9wZXJ0eSBpcyBkZWZpbmVkIG9uIHRoZSBibG9jaykgb3IgdmlhIGZsb3dQb3J0cy4gRm9yIEJsb2NrLCBEYXRhIFR5cGUsIGFuZCBWYWx1ZSBUeXBlIHByb3BlcnRpZXMsIHNldHRpbmcgYW4gk291dJQgRmxvd1Byb3BlcnR5IHZhbHVlIG9mIGEgYmxvY2sgdXNhZ2Ugb24gb25lIGVuZCBvZiBhIGNvbm5lY3RvciB3aWxsIHJlc3VsdCBpbiBhc3NpZ25pbmcgdGhlIHNhbWUgdmFsdWUgb2YgYW4gk2lulCBGbG93UHJvcGVydHkgb2YgYSBibG9jayB1c2FnZSBhdCB0aGUgb3RoZXIgZW5kIG9mIHRoZSBjb25uZWN0b3IsIHByb3ZpZGVkIHRoZSBmbG93IHByb3BlcnRpZXMgYXJlIG1hdGNoZWQuIEZsb3cgcHJvcGVydGllcyBvZiB0eXBlIFNpZ25hbCBpbXBseSBzZW5kaW5nIGFuZC9vciByZWNlaXZpbmcgb2YgYSBzaWduYWwgdXNhZ2UuIEFuIJNvdXSUIEZsb3dQcm9wZXJ0eSBvZiB0eXBlIFNpZ25hbCBtZWFucyB0aGF0IHRoZSBvd25pbmcgQmxvY2sgbWF5IGJyb2FkY2FzdCB0aGUgc2lnbmFsIHZpYSBjb25uZWN0b3JzIGFuZCBhbiCTaW6UIEZsb3dQcm9wZXJ0eSBtZWFucyB0aGF0IHRoZSBvd25pbmcgYmxvY2sgaXMgYWJsZSB0byByZWNlaXZlIHRoZSBTaWduYWwuDQorICogPCEtLSBlbmQtbW9kZWwtZG9jIC0tPg0KKyAqDQorICogPHA+DQorICogVGhlIGZvbGxvd2luZyBmZWF0dXJlcyBhcmUgc3VwcG9ydGVkOg0KKyAqIDx1bD4NCisgKiAgIDxsaT57QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnBvcnRhbmRmbG93cy5GbG93UHJvcGVydHkjZ2V0QmFzZV9Qcm9wZXJ0eSA8ZW0+QmFzZSBQcm9wZXJ0eTwvZW0+fTwvbGk+DQorICogICA8bGk+e0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5wb3J0YW5kZmxvd3MuRmxvd1Byb3BlcnR5I2dldERpcmVjdGlvbiA8ZW0+RGlyZWN0aW9uPC9lbT59PC9saT4NCisgKiA8L3VsPg0KKyAqIDwvcD4NCisgKg0KKyAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnBvcnRhbmRmbG93cy5Qb3J0YW5kZmxvd3NQYWNrYWdlI2dldEZsb3dQcm9wZXJ0eSgpDQorICogQG1vZGVsDQorICogQGdlbmVyYXRlZA0KKyAqLw0KK3B1YmxpYyBpbnRlcmZhY2UgRmxvd1Byb3BlcnR5IGV4dGVuZHMgRU9iamVjdCB7DQorCS8qKg0KKwkgKiBSZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT48Yj5CYXNlIFByb3BlcnR5PC9iPjwvZW0+JyByZWZlcmVuY2UuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDxwPg0KKwkgKiBJZiB0aGUgbWVhbmluZyBvZiB0aGUgJzxlbT5CYXNlIFByb3BlcnR5PC9lbT4nIHJlZmVyZW5jZSBpc24ndCBjbGVhciwNCisJICogdGhlcmUgcmVhbGx5IHNob3VsZCBiZSBtb3JlIG9mIGEgZGVzY3JpcHRpb24gaGVyZS4uLg0KKwkgKiA8L3A+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAcmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT5CYXNlIFByb3BlcnR5PC9lbT4nIHJlZmVyZW5jZS4NCisJICogQHNlZSAjc2V0QmFzZV9Qcm9wZXJ0eShQcm9wZXJ0eSkNCisJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucG9ydGFuZGZsb3dzLlBvcnRhbmRmbG93c1BhY2thZ2UjZ2V0Rmxvd1Byb3BlcnR5X0Jhc2VfUHJvcGVydHkoKQ0KKwkgKiBAbW9kZWwgb3JkZXJlZD0iZmFsc2UiDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCVByb3BlcnR5IGdldEJhc2VfUHJvcGVydHkoKTsNCisNCisJLyoqDQorCSAqIFNldHMgdGhlIHZhbHVlIG9mIHRoZSAne0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5wb3J0YW5kZmxvd3MuRmxvd1Byb3BlcnR5I2dldEJhc2VfUHJvcGVydHkgPGVtPkJhc2UgUHJvcGVydHk8L2VtPn0nIHJlZmVyZW5jZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBwYXJhbSB2YWx1ZSB0aGUgbmV3IHZhbHVlIG9mIHRoZSAnPGVtPkJhc2UgUHJvcGVydHk8L2VtPicgcmVmZXJlbmNlLg0KKwkgKiBAc2VlICNnZXRCYXNlX1Byb3BlcnR5KCkNCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJdm9pZCBzZXRCYXNlX1Byb3BlcnR5KFByb3BlcnR5IHZhbHVlKTsNCisNCisJLyoqDQorCSAqIFJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSAnPGVtPjxiPkRpcmVjdGlvbjwvYj48L2VtPicgYXR0cmlidXRlLg0KKwkgKiBUaGUgZGVmYXVsdCB2YWx1ZSBpcyA8Y29kZT4iaW5vdXQiPC9jb2RlPi4NCisJICogVGhlIGxpdGVyYWxzIGFyZSBmcm9tIHRoZSBlbnVtZXJhdGlvbiB7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnBvcnRhbmRmbG93cy5GbG93RGlyZWN0aW9ufS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gYmVnaW4tbW9kZWwtZG9jIC0tPg0KKwkgKiBTcGVjaWZpZXMgaWYgdGhlIHByb3BlcnR5IHZhbHVlIGlzIHJlY2VpdmVkIGZyb20gYW4gZXh0ZXJuYWwgYmxvY2sgKGRpcmVjdGlvbj2TaW6UKSwgdHJhbnNtaXR0ZWQgdG8gYW4gZXh0ZXJuYWwgQmxvY2sgKGRpcmVjdGlvbj2Tb3V0lCkgb3IgYm90aCAoZGlyZWN0aW9uPZNpbm91dJQpLg0KKwkgKiA8IS0tIGVuZC1tb2RlbC1kb2MgLS0+DQorCSAqIEByZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSAnPGVtPkRpcmVjdGlvbjwvZW0+JyBhdHRyaWJ1dGUuDQorCSAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnBvcnRhbmRmbG93cy5GbG93RGlyZWN0aW9uDQorCSAqIEBzZWUgI3NldERpcmVjdGlvbihGbG93RGlyZWN0aW9uKQ0KKwkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5wb3J0YW5kZmxvd3MuUG9ydGFuZGZsb3dzUGFja2FnZSNnZXRGbG93UHJvcGVydHlfRGlyZWN0aW9uKCkNCisJICogQG1vZGVsIGRlZmF1bHQ9Imlub3V0IiByZXF1aXJlZD0idHJ1ZSIgb3JkZXJlZD0iZmFsc2UiDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUZsb3dEaXJlY3Rpb24gZ2V0RGlyZWN0aW9uKCk7DQorDQorCS8qKg0KKwkgKiBTZXRzIHRoZSB2YWx1ZSBvZiB0aGUgJ3tAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucG9ydGFuZGZsb3dzLkZsb3dQcm9wZXJ0eSNnZXREaXJlY3Rpb24gPGVtPkRpcmVjdGlvbjwvZW0+fScgYXR0cmlidXRlLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHBhcmFtIHZhbHVlIHRoZSBuZXcgdmFsdWUgb2YgdGhlICc8ZW0+RGlyZWN0aW9uPC9lbT4nIGF0dHJpYnV0ZS4NCisJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucG9ydGFuZGZsb3dzLkZsb3dEaXJlY3Rpb24NCisJICogQHNlZSAjZ2V0RGlyZWN0aW9uKCkNCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJdm9pZCBzZXREaXJlY3Rpb24oRmxvd0RpcmVjdGlvbiB2YWx1ZSk7DQorDQorfSAvLyBGbG93UHJvcGVydHkNCmRpZmYgLS1naXQgYS9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9wb3J0YW5kZmxvd3MvRnVsbFBvcnQuamF2YSBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L3BvcnRhbmRmbG93cy9GdWxsUG9ydC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI5NGFmOGEKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9wb3J0YW5kZmxvd3MvRnVsbFBvcnQuamF2YQpAQCAtMCwwICsxLDU4IEBACisvKioNCisgKiBDb3B5cmlnaHQgKGMpIDIwMTUgQ0VBIExJU1QuDQorICogDQorICogIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCisgKiAgYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQorICogIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQorICogIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICovDQorcGFja2FnZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucG9ydGFuZGZsb3dzOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRU9iamVjdDsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UudW1sMi51bWwuUG9ydDsNCisNCisvKioNCisgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKyAqIEEgcmVwcmVzZW50YXRpb24gb2YgdGhlIG1vZGVsIG9iamVjdCAnPGVtPjxiPkZ1bGwgUG9ydDwvYj48L2VtPicuDQorICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorICoNCisgKiA8cD4NCisgKiBUaGUgZm9sbG93aW5nIGZlYXR1cmVzIGFyZSBzdXBwb3J0ZWQ6DQorICogPHVsPg0KKyAqICAgPGxpPntAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucG9ydGFuZGZsb3dzLkZ1bGxQb3J0I2dldEJhc2VfUG9ydCA8ZW0+QmFzZSBQb3J0PC9lbT59PC9saT4NCisgKiA8L3VsPg0KKyAqIDwvcD4NCisgKg0KKyAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnBvcnRhbmRmbG93cy5Qb3J0YW5kZmxvd3NQYWNrYWdlI2dldEZ1bGxQb3J0KCkNCisgKiBAbW9kZWwNCisgKiBAZ2VuZXJhdGVkDQorICovDQorcHVibGljIGludGVyZmFjZSBGdWxsUG9ydCBleHRlbmRzIEVPYmplY3Qgew0KKwkvKioNCisJICogUmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+PGI+QmFzZSBQb3J0PC9iPjwvZW0+JyByZWZlcmVuY2UuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDxwPg0KKwkgKiBJZiB0aGUgbWVhbmluZyBvZiB0aGUgJzxlbT5CYXNlIFBvcnQ8L2VtPicgcmVmZXJlbmNlIGlzbid0IGNsZWFyLA0KKwkgKiB0aGVyZSByZWFsbHkgc2hvdWxkIGJlIG1vcmUgb2YgYSBkZXNjcmlwdGlvbiBoZXJlLi4uDQorCSAqIDwvcD4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEByZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSAnPGVtPkJhc2UgUG9ydDwvZW0+JyByZWZlcmVuY2UuDQorCSAqIEBzZWUgI3NldEJhc2VfUG9ydChQb3J0KQ0KKwkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5wb3J0YW5kZmxvd3MuUG9ydGFuZGZsb3dzUGFja2FnZSNnZXRGdWxsUG9ydF9CYXNlX1BvcnQoKQ0KKwkgKiBAbW9kZWwgb3JkZXJlZD0iZmFsc2UiDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCVBvcnQgZ2V0QmFzZV9Qb3J0KCk7DQorDQorCS8qKg0KKwkgKiBTZXRzIHRoZSB2YWx1ZSBvZiB0aGUgJ3tAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucG9ydGFuZGZsb3dzLkZ1bGxQb3J0I2dldEJhc2VfUG9ydCA8ZW0+QmFzZSBQb3J0PC9lbT59JyByZWZlcmVuY2UuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAcGFyYW0gdmFsdWUgdGhlIG5ldyB2YWx1ZSBvZiB0aGUgJzxlbT5CYXNlIFBvcnQ8L2VtPicgcmVmZXJlbmNlLg0KKwkgKiBAc2VlICNnZXRCYXNlX1BvcnQoKQ0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwl2b2lkIHNldEJhc2VfUG9ydChQb3J0IHZhbHVlKTsNCisNCit9IC8vIEZ1bGxQb3J0DQpkaWZmIC0tZ2l0IGEvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvcG9ydGFuZGZsb3dzL0ludGVyZmFjZUJsb2NrLmphdmEgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9wb3J0YW5kZmxvd3MvSW50ZXJmYWNlQmxvY2suamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZjQ3YjRhCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvcG9ydGFuZGZsb3dzL0ludGVyZmFjZUJsb2NrLmphdmEKQEAgLTAsMCArMSwyNCBAQAorLyoqDQorICogQ29weXJpZ2h0IChjKSAyMDE1IENFQSBMSVNULg0KKyAqIA0KKyAqICBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQorICogIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KKyAqICB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KKyAqICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqLw0KK3BhY2thZ2Ugb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnBvcnRhbmRmbG93czsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmJsb2Nrcy5CbG9jazsNCisNCisvKioNCisgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKyAqIEEgcmVwcmVzZW50YXRpb24gb2YgdGhlIG1vZGVsIG9iamVjdCAnPGVtPjxiPkludGVyZmFjZSBCbG9jazwvYj48L2VtPicuDQorICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorICoNCisgKg0KKyAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnBvcnRhbmRmbG93cy5Qb3J0YW5kZmxvd3NQYWNrYWdlI2dldEludGVyZmFjZUJsb2NrKCkNCisgKiBAbW9kZWwNCisgKiBAZ2VuZXJhdGVkDQorICovDQorcHVibGljIGludGVyZmFjZSBJbnRlcmZhY2VCbG9jayBleHRlbmRzIEJsb2NrIHsNCit9IC8vIEludGVyZmFjZUJsb2NrDQpkaWZmIC0tZ2l0IGEvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvcG9ydGFuZGZsb3dzL0ludm9jYXRpb25Pbk5lc3RlZFBvcnRBY3Rpb24uamF2YSBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L3BvcnRhbmRmbG93cy9JbnZvY2F0aW9uT25OZXN0ZWRQb3J0QWN0aW9uLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODkzM2JkMQotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L3BvcnRhbmRmbG93cy9JbnZvY2F0aW9uT25OZXN0ZWRQb3J0QWN0aW9uLmphdmEKQEAgLTAsMCArMSwxMDQgQEAKKy8qKg0KKyAqIENvcHlyaWdodCAoYykgMjAxNSBDRUEgTElTVC4NCisgKiANCisgKiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KKyAqICBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCisgKiAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCisgKiAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgKi8NCitwYWNrYWdlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5wb3J0YW5kZmxvd3M7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jb21tb24udXRpbC5FTGlzdDsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmJsb2Nrcy5FbGVtZW50UHJvcGVydHlQYXRoOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS51bWwyLnVtbC5JbnZvY2F0aW9uQWN0aW9uOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS51bWwyLnVtbC5Qb3J0Ow0KK2ltcG9ydCBvcmcuZWNsaXBzZS51bWwyLnVtbC5UeXBlOw0KKw0KKy8qKg0KKyAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorICogQSByZXByZXNlbnRhdGlvbiBvZiB0aGUgbW9kZWwgb2JqZWN0ICc8ZW0+PGI+SW52b2NhdGlvbiBPbiBOZXN0ZWQgUG9ydCBBY3Rpb248L2I+PC9lbT4nLg0KKyAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKyAqDQorICogPHA+DQorICogVGhlIGZvbGxvd2luZyBmZWF0dXJlcyBhcmUgc3VwcG9ydGVkOg0KKyAqIDx1bD4NCisgKiAgIDxsaT57QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnBvcnRhbmRmbG93cy5JbnZvY2F0aW9uT25OZXN0ZWRQb3J0QWN0aW9uI2dldEJhc2VfSW52b2NhdGlvbkFjdGlvbiA8ZW0+QmFzZSBJbnZvY2F0aW9uIEFjdGlvbjwvZW0+fTwvbGk+DQorICogICA8bGk+e0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5wb3J0YW5kZmxvd3MuSW52b2NhdGlvbk9uTmVzdGVkUG9ydEFjdGlvbiNnZXRPbk5lc3RlZFBvcnQgPGVtPk9uIE5lc3RlZCBQb3J0PC9lbT59PC9saT4NCisgKiA8L3VsPg0KKyAqIDwvcD4NCisgKg0KKyAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnBvcnRhbmRmbG93cy5Qb3J0YW5kZmxvd3NQYWNrYWdlI2dldEludm9jYXRpb25Pbk5lc3RlZFBvcnRBY3Rpb24oKQ0KKyAqIEBtb2RlbA0KKyAqIEBnZW5lcmF0ZWQNCisgKi8NCitwdWJsaWMgaW50ZXJmYWNlIEludm9jYXRpb25Pbk5lc3RlZFBvcnRBY3Rpb24gZXh0ZW5kcyBFbGVtZW50UHJvcGVydHlQYXRoIHsNCisJLyoqDQorCSAqIFJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSAnPGVtPjxiPkJhc2UgSW52b2NhdGlvbiBBY3Rpb248L2I+PC9lbT4nIHJlZmVyZW5jZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPHA+DQorCSAqIElmIHRoZSBtZWFuaW5nIG9mIHRoZSAnPGVtPkJhc2UgSW52b2NhdGlvbiBBY3Rpb248L2VtPicgcmVmZXJlbmNlIGlzbid0IGNsZWFyLA0KKwkgKiB0aGVyZSByZWFsbHkgc2hvdWxkIGJlIG1vcmUgb2YgYSBkZXNjcmlwdGlvbiBoZXJlLi4uDQorCSAqIDwvcD4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEByZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSAnPGVtPkJhc2UgSW52b2NhdGlvbiBBY3Rpb248L2VtPicgcmVmZXJlbmNlLg0KKwkgKiBAc2VlICNzZXRCYXNlX0ludm9jYXRpb25BY3Rpb24oSW52b2NhdGlvbkFjdGlvbikNCisJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucG9ydGFuZGZsb3dzLlBvcnRhbmRmbG93c1BhY2thZ2UjZ2V0SW52b2NhdGlvbk9uTmVzdGVkUG9ydEFjdGlvbl9CYXNlX0ludm9jYXRpb25BY3Rpb24oKQ0KKwkgKiBAbW9kZWwgb3JkZXJlZD0iZmFsc2UiDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUludm9jYXRpb25BY3Rpb24gZ2V0QmFzZV9JbnZvY2F0aW9uQWN0aW9uKCk7DQorDQorCS8qKg0KKwkgKiBTZXRzIHRoZSB2YWx1ZSBvZiB0aGUgJ3tAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucG9ydGFuZGZsb3dzLkludm9jYXRpb25Pbk5lc3RlZFBvcnRBY3Rpb24jZ2V0QmFzZV9JbnZvY2F0aW9uQWN0aW9uIDxlbT5CYXNlIEludm9jYXRpb24gQWN0aW9uPC9lbT59JyByZWZlcmVuY2UuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAcGFyYW0gdmFsdWUgdGhlIG5ldyB2YWx1ZSBvZiB0aGUgJzxlbT5CYXNlIEludm9jYXRpb24gQWN0aW9uPC9lbT4nIHJlZmVyZW5jZS4NCisJICogQHNlZSAjZ2V0QmFzZV9JbnZvY2F0aW9uQWN0aW9uKCkNCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJdm9pZCBzZXRCYXNlX0ludm9jYXRpb25BY3Rpb24oSW52b2NhdGlvbkFjdGlvbiB2YWx1ZSk7DQorDQorCS8qKg0KKwkgKiBSZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT48Yj5PbiBOZXN0ZWQgUG9ydDwvYj48L2VtPicgcmVmZXJlbmNlIGxpc3QuDQorCSAqIFRoZSBsaXN0IGNvbnRlbnRzIGFyZSBvZiB0eXBlIHtAbGluayBvcmcuZWNsaXBzZS51bWwyLnVtbC5Qb3J0fS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPHA+DQorCSAqIElmIHRoZSBtZWFuaW5nIG9mIHRoZSAnPGVtPk9uIE5lc3RlZCBQb3J0PC9lbT4nIHJlZmVyZW5jZSBsaXN0IGlzbid0IGNsZWFyLA0KKwkgKiB0aGVyZSByZWFsbHkgc2hvdWxkIGJlIG1vcmUgb2YgYSBkZXNjcmlwdGlvbiBoZXJlLi4uDQorCSAqIDwvcD4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEByZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSAnPGVtPk9uIE5lc3RlZCBQb3J0PC9lbT4nIHJlZmVyZW5jZSBsaXN0Lg0KKwkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5wb3J0YW5kZmxvd3MuUG9ydGFuZGZsb3dzUGFja2FnZSNnZXRJbnZvY2F0aW9uT25OZXN0ZWRQb3J0QWN0aW9uX09uTmVzdGVkUG9ydCgpDQorCSAqIEBtb2RlbCByZXF1aXJlZD0idHJ1ZSINCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJRUxpc3Q8UG9ydD4gZ2V0T25OZXN0ZWRQb3J0KCk7DQorDQorCS8qKg0KKwkgKiBSZXRyaWV2ZXMgdGhlIGZpcnN0IHtAbGluayBvcmcuZWNsaXBzZS51bWwyLnVtbC5Qb3J0fSB3aXRoIHRoZSBzcGVjaWZpZWQgJzxlbT48Yj5OYW1lPC9iPjwvZW0+JywgYW5kICc8ZW0+PGI+VHlwZTwvYj48L2VtPicgZnJvbSB0aGUgJzxlbT48Yj5PbiBOZXN0ZWQgUG9ydDwvYj48L2VtPicgcmVmZXJlbmNlIGxpc3QuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAcGFyYW0gbmFtZSBUaGUgJzxlbT48Yj5OYW1lPC9iPjwvZW0+JyBvZiB0aGUge0BsaW5rIG9yZy5lY2xpcHNlLnVtbDIudW1sLlBvcnR9IHRvIHJldHJpZXZlLCBvciA8Y29kZT5udWxsPC9jb2RlPi4NCisJICogQHBhcmFtIHR5cGUgVGhlICc8ZW0+PGI+VHlwZTwvYj48L2VtPicgb2YgdGhlIHtAbGluayBvcmcuZWNsaXBzZS51bWwyLnVtbC5Qb3J0fSB0byByZXRyaWV2ZSwgb3IgPGNvZGU+bnVsbDwvY29kZT4uDQorCSAqIEByZXR1cm4gVGhlIGZpcnN0IHtAbGluayBvcmcuZWNsaXBzZS51bWwyLnVtbC5Qb3J0fSB3aXRoIHRoZSBzcGVjaWZpZWQgJzxlbT48Yj5OYW1lPC9iPjwvZW0+JywgYW5kICc8ZW0+PGI+VHlwZTwvYj48L2VtPicsIG9yIDxjb2RlPm51bGw8L2NvZGU+Lg0KKwkgKiBAc2VlICNnZXRPbk5lc3RlZFBvcnQoKQ0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlQb3J0IGdldE9uTmVzdGVkUG9ydChTdHJpbmcgbmFtZSwgVHlwZSB0eXBlKTsNCisNCisJLyoqDQorCSAqIFJldHJpZXZlcyB0aGUgZmlyc3Qge0BsaW5rIG9yZy5lY2xpcHNlLnVtbDIudW1sLlBvcnR9IHdpdGggdGhlIHNwZWNpZmllZCAnPGVtPjxiPk5hbWU8L2I+PC9lbT4nLCBhbmQgJzxlbT48Yj5UeXBlPC9iPjwvZW0+JyBmcm9tIHRoZSAnPGVtPjxiPk9uIE5lc3RlZCBQb3J0PC9iPjwvZW0+JyByZWZlcmVuY2UgbGlzdC4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBwYXJhbSBuYW1lIFRoZSAnPGVtPjxiPk5hbWU8L2I+PC9lbT4nIG9mIHRoZSB7QGxpbmsgb3JnLmVjbGlwc2UudW1sMi51bWwuUG9ydH0gdG8gcmV0cmlldmUsIG9yIDxjb2RlPm51bGw8L2NvZGU+Lg0KKwkgKiBAcGFyYW0gdHlwZSBUaGUgJzxlbT48Yj5UeXBlPC9iPjwvZW0+JyBvZiB0aGUge0BsaW5rIG9yZy5lY2xpcHNlLnVtbDIudW1sLlBvcnR9IHRvIHJldHJpZXZlLCBvciA8Y29kZT5udWxsPC9jb2RlPi4NCisJICogQHBhcmFtIGlnbm9yZUNhc2UgV2hldGhlciB0byBpZ25vcmUgY2FzZSBpbiB7QGxpbmsgamF2YS5sYW5nLlN0cmluZ30gY29tcGFyaXNvbnMuDQorCSAqIEByZXR1cm4gVGhlIGZpcnN0IHtAbGluayBvcmcuZWNsaXBzZS51bWwyLnVtbC5Qb3J0fSB3aXRoIHRoZSBzcGVjaWZpZWQgJzxlbT48Yj5OYW1lPC9iPjwvZW0+JywgYW5kICc8ZW0+PGI+VHlwZTwvYj48L2VtPicsIG9yIDxjb2RlPm51bGw8L2NvZGU+Lg0KKwkgKiBAc2VlICNnZXRPbk5lc3RlZFBvcnQoKQ0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlQb3J0IGdldE9uTmVzdGVkUG9ydChTdHJpbmcgbmFtZSwgVHlwZSB0eXBlLCBib29sZWFuIGlnbm9yZUNhc2UpOw0KKw0KK30gLy8gSW52b2NhdGlvbk9uTmVzdGVkUG9ydEFjdGlvbg0KZGlmZiAtLWdpdCBhL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L3BvcnRhbmRmbG93cy9JdGVtRmxvdy5qYXZhIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvcG9ydGFuZGZsb3dzL0l0ZW1GbG93LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjJkNDBiZAotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L3BvcnRhbmRmbG93cy9JdGVtRmxvdy5qYXZhCkBAIC0wLDAgKzEsODkgQEAKKy8qKg0KKyAqIENvcHlyaWdodCAoYykgMjAxNSBDRUEgTElTVC4NCisgKiANCisgKiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KKyAqICBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCisgKiAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCisgKiAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgKi8NCitwYWNrYWdlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5wb3J0YW5kZmxvd3M7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FT2JqZWN0Ow0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS51bWwyLnVtbC5JbmZvcm1hdGlvbkZsb3c7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnVtbDIudW1sLlByb3BlcnR5Ow0KKw0KKy8qKg0KKyAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorICogQSByZXByZXNlbnRhdGlvbiBvZiB0aGUgbW9kZWwgb2JqZWN0ICc8ZW0+PGI+SXRlbSBGbG93PC9iPjwvZW0+Jy4NCisgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisgKg0KKyAqIDwhLS0gYmVnaW4tbW9kZWwtZG9jIC0tPg0KKyAqIEFuIEl0ZW1GbG93IGRlc2NyaWJlcyB0aGUgZmxvdyBvZiBpdGVtcyBhY3Jvc3MgYSBjb25uZWN0b3Igb3IgYW4gYXNzb2NpYXRpb24uIEl0IG1heSBjb25zdHJhaW4gdGhlIGl0ZW0gZXhjaGFuZ2UgYmV0d2VlbiBibG9ja3MsIGJsb2NrIHVzYWdlcywgb3IgZmxvdyBwb3J0cyBhcyBzcGVjaWZpZWQgYnkgdGhlaXIgZmxvdyBwcm9wZXJ0aWVzLiBGb3IgZXhhbXBsZSwgYSBwdW1wIGNvbm5lY3RlZCB0byBhIHRhbms6IHRoZSBwdW1wIGhhcyBhbiCTb3V0lCBmbG93IHByb3BlcnR5IG9mIHR5cGUgTGlxdWlkIGFuZCB0aGUgdGFuayBoYXMgYW4gk2lulCBGbG93UHJvcGVydHkgb2YgdHlwZSBMaXF1aWQuIFRvIHNpZ25pZnkgdGhhdCBvbmx5IHdhdGVyIGZsb3dzIGJldHdlZW4gdGhlIHB1bXAgYW5kIHRoZSB0YW5rLCB3ZSBjYW4gc3BlY2lmeSBhbiBJdGVtRmxvdyBvZiB0eXBlIFdhdGVyIG9uIHRoZSBjb25uZWN0b3IuDQorICogPCEtLSBlbmQtbW9kZWwtZG9jIC0tPg0KKyAqDQorICogPHA+DQorICogVGhlIGZvbGxvd2luZyBmZWF0dXJlcyBhcmUgc3VwcG9ydGVkOg0KKyAqIDx1bD4NCisgKiAgIDxsaT57QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnBvcnRhbmRmbG93cy5JdGVtRmxvdyNnZXRCYXNlX0luZm9ybWF0aW9uRmxvdyA8ZW0+QmFzZSBJbmZvcm1hdGlvbiBGbG93PC9lbT59PC9saT4NCisgKiAgIDxsaT57QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnBvcnRhbmRmbG93cy5JdGVtRmxvdyNnZXRJdGVtUHJvcGVydHkgPGVtPkl0ZW0gUHJvcGVydHk8L2VtPn08L2xpPg0KKyAqIDwvdWw+DQorICogPC9wPg0KKyAqDQorICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucG9ydGFuZGZsb3dzLlBvcnRhbmRmbG93c1BhY2thZ2UjZ2V0SXRlbUZsb3coKQ0KKyAqIEBtb2RlbA0KKyAqIEBnZW5lcmF0ZWQNCisgKi8NCitwdWJsaWMgaW50ZXJmYWNlIEl0ZW1GbG93IGV4dGVuZHMgRU9iamVjdCB7DQorCS8qKg0KKwkgKiBSZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT48Yj5CYXNlIEluZm9ybWF0aW9uIEZsb3c8L2I+PC9lbT4nIHJlZmVyZW5jZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPHA+DQorCSAqIElmIHRoZSBtZWFuaW5nIG9mIHRoZSAnPGVtPkJhc2UgSW5mb3JtYXRpb24gRmxvdzwvZW0+JyByZWZlcmVuY2UgaXNuJ3QgY2xlYXIsDQorCSAqIHRoZXJlIHJlYWxseSBzaG91bGQgYmUgbW9yZSBvZiBhIGRlc2NyaXB0aW9uIGhlcmUuLi4NCisJICogPC9wPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHJldHVybiB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+QmFzZSBJbmZvcm1hdGlvbiBGbG93PC9lbT4nIHJlZmVyZW5jZS4NCisJICogQHNlZSAjc2V0QmFzZV9JbmZvcm1hdGlvbkZsb3coSW5mb3JtYXRpb25GbG93KQ0KKwkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5wb3J0YW5kZmxvd3MuUG9ydGFuZGZsb3dzUGFja2FnZSNnZXRJdGVtRmxvd19CYXNlX0luZm9ybWF0aW9uRmxvdygpDQorCSAqIEBtb2RlbCBvcmRlcmVkPSJmYWxzZSINCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJSW5mb3JtYXRpb25GbG93IGdldEJhc2VfSW5mb3JtYXRpb25GbG93KCk7DQorDQorCS8qKg0KKwkgKiBTZXRzIHRoZSB2YWx1ZSBvZiB0aGUgJ3tAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucG9ydGFuZGZsb3dzLkl0ZW1GbG93I2dldEJhc2VfSW5mb3JtYXRpb25GbG93IDxlbT5CYXNlIEluZm9ybWF0aW9uIEZsb3c8L2VtPn0nIHJlZmVyZW5jZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBwYXJhbSB2YWx1ZSB0aGUgbmV3IHZhbHVlIG9mIHRoZSAnPGVtPkJhc2UgSW5mb3JtYXRpb24gRmxvdzwvZW0+JyByZWZlcmVuY2UuDQorCSAqIEBzZWUgI2dldEJhc2VfSW5mb3JtYXRpb25GbG93KCkNCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJdm9pZCBzZXRCYXNlX0luZm9ybWF0aW9uRmxvdyhJbmZvcm1hdGlvbkZsb3cgdmFsdWUpOw0KKw0KKwkvKioNCisJICogUmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+PGI+SXRlbSBQcm9wZXJ0eTwvYj48L2VtPicgcmVmZXJlbmNlLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogPCEtLSBiZWdpbi1tb2RlbC1kb2MgLS0+DQorCSAqIEFuIG9wdGlvbmFsIHByb3BlcnR5IHRoYXQgcmVsYXRlcyB0aGUgZmxvd2luZyBpdGVtIHRvIHRoZSBpbnN0YW5jZXMgb2YgdGhlIGNvbm5lY3RvcpJzIGVuY2xvc2luZyBibG9jay4gVGhpcyBwcm9wZXJ0eSBpcyBhcHBsaWNhYmxlIG9ubHkgZm9yIGl0ZW0gZmxvd3MgYXNzaWduZWQgdG8gY29ubmVjdG9ycy4gVGhlIG11bHRpcGxpY2l0eSBpcyB6ZXJvIGlmIHRoZSBpdGVtIGZsb3cgaXMgYXNzaWduZWQgdG8gYW4gQXNzb2NpYXRpb24uDQorCSAqIDwhLS0gZW5kLW1vZGVsLWRvYyAtLT4NCisJICogQHJldHVybiB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+SXRlbSBQcm9wZXJ0eTwvZW0+JyByZWZlcmVuY2UuDQorCSAqIEBzZWUgI3NldEl0ZW1Qcm9wZXJ0eShQcm9wZXJ0eSkNCisJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucG9ydGFuZGZsb3dzLlBvcnRhbmRmbG93c1BhY2thZ2UjZ2V0SXRlbUZsb3dfSXRlbVByb3BlcnR5KCkNCisJICogQG1vZGVsIG9yZGVyZWQ9ImZhbHNlIg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlQcm9wZXJ0eSBnZXRJdGVtUHJvcGVydHkoKTsNCisNCisJLyoqDQorCSAqIFNldHMgdGhlIHZhbHVlIG9mIHRoZSAne0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5wb3J0YW5kZmxvd3MuSXRlbUZsb3cjZ2V0SXRlbVByb3BlcnR5IDxlbT5JdGVtIFByb3BlcnR5PC9lbT59JyByZWZlcmVuY2UuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAcGFyYW0gdmFsdWUgdGhlIG5ldyB2YWx1ZSBvZiB0aGUgJzxlbT5JdGVtIFByb3BlcnR5PC9lbT4nIHJlZmVyZW5jZS4NCisJICogQHNlZSAjZ2V0SXRlbVByb3BlcnR5KCkNCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJdm9pZCBzZXRJdGVtUHJvcGVydHkoUHJvcGVydHkgdmFsdWUpOw0KKw0KK30gLy8gSXRlbUZsb3cNCmRpZmYgLS1naXQgYS9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9wb3J0YW5kZmxvd3MvUG9ydGFuZGZsb3dzRmFjdG9yeS5qYXZhIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvcG9ydGFuZGZsb3dzL1BvcnRhbmRmbG93c0ZhY3RvcnkuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wODg2NTdkCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvcG9ydGFuZGZsb3dzL1BvcnRhbmRmbG93c0ZhY3RvcnkuamF2YQpAQCAtMCwwICsxLDEyOSBAQAorLyoqDQorICogQ29weXJpZ2h0IChjKSAyMDE1IENFQSBMSVNULg0KKyAqIA0KKyAqICBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQorICogIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KKyAqICB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KKyAqICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqLw0KK3BhY2thZ2Ugb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnBvcnRhbmRmbG93czsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVGYWN0b3J5Ow0KKw0KKy8qKg0KKyAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorICogVGhlIDxiPkZhY3Rvcnk8L2I+IGZvciB0aGUgbW9kZWwuDQorICogSXQgcHJvdmlkZXMgYSBjcmVhdGUgbWV0aG9kIGZvciBlYWNoIG5vbi1hYnN0cmFjdCBjbGFzcyBvZiB0aGUgbW9kZWwuDQorICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucG9ydGFuZGZsb3dzLlBvcnRhbmRmbG93c1BhY2thZ2UNCisgKiBAZ2VuZXJhdGVkDQorICovDQorcHVibGljIGludGVyZmFjZSBQb3J0YW5kZmxvd3NGYWN0b3J5IGV4dGVuZHMgRUZhY3Rvcnkgew0KKwkvKioNCisJICogVGhlIHNpbmdsZXRvbiBpbnN0YW5jZSBvZiB0aGUgZmFjdG9yeS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCVBvcnRhbmRmbG93c0ZhY3RvcnkgZUlOU1RBTkNFID0gb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnBvcnRhbmRmbG93cy5pbnRlcm5hbC5pbXBsLlBvcnRhbmRmbG93c0ZhY3RvcnlJbXBsLmluaXQoKTsNCisNCisJLyoqDQorCSAqIFJldHVybnMgYSBuZXcgb2JqZWN0IG9mIGNsYXNzICc8ZW0+SXRlbSBGbG93PC9lbT4nLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHJldHVybiBhIG5ldyBvYmplY3Qgb2YgY2xhc3MgJzxlbT5JdGVtIEZsb3c8L2VtPicuDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUl0ZW1GbG93IGNyZWF0ZUl0ZW1GbG93KCk7DQorDQorCS8qKg0KKwkgKiBSZXR1cm5zIGEgbmV3IG9iamVjdCBvZiBjbGFzcyAnPGVtPkZsb3cgUHJvcGVydHk8L2VtPicuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAcmV0dXJuIGEgbmV3IG9iamVjdCBvZiBjbGFzcyAnPGVtPkZsb3cgUHJvcGVydHk8L2VtPicuDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUZsb3dQcm9wZXJ0eSBjcmVhdGVGbG93UHJvcGVydHkoKTsNCisNCisJLyoqDQorCSAqIFJldHVybnMgYSBuZXcgb2JqZWN0IG9mIGNsYXNzICc8ZW0+RnVsbCBQb3J0PC9lbT4nLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHJldHVybiBhIG5ldyBvYmplY3Qgb2YgY2xhc3MgJzxlbT5GdWxsIFBvcnQ8L2VtPicuDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUZ1bGxQb3J0IGNyZWF0ZUZ1bGxQb3J0KCk7DQorDQorCS8qKg0KKwkgKiBSZXR1cm5zIGEgbmV3IG9iamVjdCBvZiBjbGFzcyAnPGVtPkludGVyZmFjZSBCbG9jazwvZW0+Jy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEByZXR1cm4gYSBuZXcgb2JqZWN0IG9mIGNsYXNzICc8ZW0+SW50ZXJmYWNlIEJsb2NrPC9lbT4nLg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlJbnRlcmZhY2VCbG9jayBjcmVhdGVJbnRlcmZhY2VCbG9jaygpOw0KKw0KKwkvKioNCisJICogUmV0dXJucyBhIG5ldyBvYmplY3Qgb2YgY2xhc3MgJzxlbT5Qcm94eSBQb3J0PC9lbT4nLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHJldHVybiBhIG5ldyBvYmplY3Qgb2YgY2xhc3MgJzxlbT5Qcm94eSBQb3J0PC9lbT4nLg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlQcm94eVBvcnQgY3JlYXRlUHJveHlQb3J0KCk7DQorDQorCS8qKg0KKwkgKiBSZXR1cm5zIGEgbmV3IG9iamVjdCBvZiBjbGFzcyAnPGVtPkFjY2VwdCBDaGFuZ2UgU3RydWN0dXJhbCBGZWF0dXJlIEV2ZW50IEFjdGlvbjwvZW0+Jy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEByZXR1cm4gYSBuZXcgb2JqZWN0IG9mIGNsYXNzICc8ZW0+QWNjZXB0IENoYW5nZSBTdHJ1Y3R1cmFsIEZlYXR1cmUgRXZlbnQgQWN0aW9uPC9lbT4nLg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlBY2NlcHRDaGFuZ2VTdHJ1Y3R1cmFsRmVhdHVyZUV2ZW50QWN0aW9uIGNyZWF0ZUFjY2VwdENoYW5nZVN0cnVjdHVyYWxGZWF0dXJlRXZlbnRBY3Rpb24oKTsNCisNCisJLyoqDQorCSAqIFJldHVybnMgYSBuZXcgb2JqZWN0IG9mIGNsYXNzICc8ZW0+Q2hhbmdlIFN0cnVjdHVyYWwgRmVhdHVyZSBFdmVudDwvZW0+Jy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEByZXR1cm4gYSBuZXcgb2JqZWN0IG9mIGNsYXNzICc8ZW0+Q2hhbmdlIFN0cnVjdHVyYWwgRmVhdHVyZSBFdmVudDwvZW0+Jy4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQ2hhbmdlU3RydWN0dXJhbEZlYXR1cmVFdmVudCBjcmVhdGVDaGFuZ2VTdHJ1Y3R1cmFsRmVhdHVyZUV2ZW50KCk7DQorDQorCS8qKg0KKwkgKiBSZXR1cm5zIGEgbmV3IG9iamVjdCBvZiBjbGFzcyAnPGVtPkRpcmVjdGVkIEZlYXR1cmU8L2VtPicuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAcmV0dXJuIGEgbmV3IG9iamVjdCBvZiBjbGFzcyAnPGVtPkRpcmVjdGVkIEZlYXR1cmU8L2VtPicuDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCURpcmVjdGVkRmVhdHVyZSBjcmVhdGVEaXJlY3RlZEZlYXR1cmUoKTsNCisNCisJLyoqDQorCSAqIFJldHVybnMgYSBuZXcgb2JqZWN0IG9mIGNsYXNzICc8ZW0+SW52b2NhdGlvbiBPbiBOZXN0ZWQgUG9ydCBBY3Rpb248L2VtPicuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAcmV0dXJuIGEgbmV3IG9iamVjdCBvZiBjbGFzcyAnPGVtPkludm9jYXRpb24gT24gTmVzdGVkIFBvcnQgQWN0aW9uPC9lbT4nLg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlJbnZvY2F0aW9uT25OZXN0ZWRQb3J0QWN0aW9uIGNyZWF0ZUludm9jYXRpb25Pbk5lc3RlZFBvcnRBY3Rpb24oKTsNCisNCisJLyoqDQorCSAqIFJldHVybnMgYSBuZXcgb2JqZWN0IG9mIGNsYXNzICc8ZW0+VHJpZ2dlciBPbiBOZXN0ZWQgUG9ydDwvZW0+Jy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEByZXR1cm4gYSBuZXcgb2JqZWN0IG9mIGNsYXNzICc8ZW0+VHJpZ2dlciBPbiBOZXN0ZWQgUG9ydDwvZW0+Jy4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJVHJpZ2dlck9uTmVzdGVkUG9ydCBjcmVhdGVUcmlnZ2VyT25OZXN0ZWRQb3J0KCk7DQorDQorCS8qKg0KKwkgKiBSZXR1cm5zIHRoZSBwYWNrYWdlIHN1cHBvcnRlZCBieSB0aGlzIGZhY3RvcnkuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAcmV0dXJuIHRoZSBwYWNrYWdlIHN1cHBvcnRlZCBieSB0aGlzIGZhY3RvcnkuDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCVBvcnRhbmRmbG93c1BhY2thZ2UgZ2V0UG9ydGFuZGZsb3dzUGFja2FnZSgpOw0KKw0KK30gLy9Qb3J0YW5kZmxvd3NGYWN0b3J5DQpkaWZmIC0tZ2l0IGEvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvcG9ydGFuZGZsb3dzL1BvcnRhbmRmbG93c1BhY2thZ2UuamF2YSBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L3BvcnRhbmRmbG93cy9Qb3J0YW5kZmxvd3NQYWNrYWdlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODU3ZWE1NwotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L3BvcnRhbmRmbG93cy9Qb3J0YW5kZmxvd3NQYWNrYWdlLmphdmEKQEAgLTAsMCArMSwxMTA5IEBACisvKioNCisgKiBDb3B5cmlnaHQgKGMpIDIwMTUgQ0VBIExJU1QuDQorICogDQorICogIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCisgKiAgYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQorICogIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQorICogIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICovDQorcGFja2FnZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucG9ydGFuZGZsb3dzOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRUF0dHJpYnV0ZTsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVDbGFzczsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVFbnVtOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRVBhY2thZ2U7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FUmVmZXJlbmNlOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYmxvY2tzLkJsb2Nrc1BhY2thZ2U7DQorDQorLyoqDQorICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisgKiBUaGUgPGI+UGFja2FnZTwvYj4gZm9yIHRoZSBtb2RlbC4NCisgKiBJdCBjb250YWlucyBhY2Nlc3NvcnMgZm9yIHRoZSBtZXRhIG9iamVjdHMgdG8gcmVwcmVzZW50DQorICogPHVsPg0KKyAqICAgPGxpPmVhY2ggY2xhc3MsPC9saT4NCisgKiAgIDxsaT5lYWNoIGZlYXR1cmUgb2YgZWFjaCBjbGFzcyw8L2xpPg0KKyAqICAgPGxpPmVhY2ggb3BlcmF0aW9uIG9mIGVhY2ggY2xhc3MsPC9saT4NCisgKiAgIDxsaT5lYWNoIGVudW0sPC9saT4NCisgKiAgIDxsaT5hbmQgZWFjaCBkYXRhIHR5cGU8L2xpPg0KKyAqIDwvdWw+DQorICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucG9ydGFuZGZsb3dzLlBvcnRhbmRmbG93c0ZhY3RvcnkNCisgKiBAbW9kZWwga2luZD0icGFja2FnZSINCisgKiAgICAgICAgYW5ub3RhdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy91bWwyLzIuMC4wL1VNTCBvcmlnaW5hbE5hbWU9J1BvcnRzYW5kRmxvd3MnIg0KKyAqIEBnZW5lcmF0ZWQNCisgKi8NCitwdWJsaWMgaW50ZXJmYWNlIFBvcnRhbmRmbG93c1BhY2thZ2UgZXh0ZW5kcyBFUGFja2FnZSB7DQorCS8qKg0KKwkgKiBUaGUgcGFja2FnZSBuYW1lLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJU3RyaW5nIGVOQU1FID0gInBvcnRhbmRmbG93cyI7IC8vJE5PTi1OTFMtMSQNCisNCisJLyoqDQorCSAqIFRoZSBwYWNrYWdlIG5hbWVzcGFjZSBVUkkuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlTdHJpbmcgZU5TX1VSSSA9ICJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3BhcHlydXMvMS40L1N5c01ML1BvcnRBbmRGbG93cyI7IC8vJE5PTi1OTFMtMSQNCisNCisJLyoqDQorCSAqIFRoZSBwYWNrYWdlIG5hbWVzcGFjZSBuYW1lLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJU3RyaW5nIGVOU19QUkVGSVggPSAiUG9ydEFuZEZsb3dzIjsgLy8kTk9OLU5MUy0xJA0KKw0KKwkvKioNCisJICogVGhlIHNpbmdsZXRvbiBpbnN0YW5jZSBvZiB0aGUgcGFja2FnZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCVBvcnRhbmRmbG93c1BhY2thZ2UgZUlOU1RBTkNFID0gb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnBvcnRhbmRmbG93cy5pbnRlcm5hbC5pbXBsLlBvcnRhbmRmbG93c1BhY2thZ2VJbXBsLmluaXQoKTsNCisNCisJLyoqDQorCSAqIFRoZSBtZXRhIG9iamVjdCBpZCBmb3IgdGhlICd7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnBvcnRhbmRmbG93cy5pbnRlcm5hbC5pbXBsLkl0ZW1GbG93SW1wbCA8ZW0+SXRlbSBGbG93PC9lbT59JyBjbGFzcy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnBvcnRhbmRmbG93cy5pbnRlcm5hbC5pbXBsLkl0ZW1GbG93SW1wbA0KKwkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5wb3J0YW5kZmxvd3MuaW50ZXJuYWwuaW1wbC5Qb3J0YW5kZmxvd3NQYWNrYWdlSW1wbCNnZXRJdGVtRmxvdygpDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCWludCBJVEVNX0ZMT1cgPSAwOw0KKw0KKwkvKioNCisJICogVGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkJhc2UgSW5mb3JtYXRpb24gRmxvdzwvYj48L2VtPicgcmVmZXJlbmNlLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKiBAb3JkZXJlZA0KKwkgKi8NCisJaW50IElURU1fRkxPV19fQkFTRV9JTkZPUk1BVElPTl9GTE9XID0gMDsNCisNCisJLyoqDQorCSAqIFRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5JdGVtIFByb3BlcnR5PC9iPjwvZW0+JyByZWZlcmVuY2UuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqIEBvcmRlcmVkDQorCSAqLw0KKwlpbnQgSVRFTV9GTE9XX19JVEVNX1BST1BFUlRZID0gMTsNCisNCisJLyoqDQorCSAqIFRoZSBudW1iZXIgb2Ygc3RydWN0dXJhbCBmZWF0dXJlcyBvZiB0aGUgJzxlbT5JdGVtIEZsb3c8L2VtPicgY2xhc3MuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqIEBvcmRlcmVkDQorCSAqLw0KKwlpbnQgSVRFTV9GTE9XX0ZFQVRVUkVfQ09VTlQgPSAyOw0KKw0KKwkvKioNCisJICogVGhlIG51bWJlciBvZiBvcGVyYXRpb25zIG9mIHRoZSAnPGVtPkl0ZW0gRmxvdzwvZW0+JyBjbGFzcy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICogQG9yZGVyZWQNCisJICovDQorCWludCBJVEVNX0ZMT1dfT1BFUkFUSU9OX0NPVU5UID0gMDsNCisNCisJLyoqDQorCSAqIFRoZSBtZXRhIG9iamVjdCBpZCBmb3IgdGhlICd7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnBvcnRhbmRmbG93cy5pbnRlcm5hbC5pbXBsLkZsb3dQcm9wZXJ0eUltcGwgPGVtPkZsb3cgUHJvcGVydHk8L2VtPn0nIGNsYXNzLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucG9ydGFuZGZsb3dzLmludGVybmFsLmltcGwuRmxvd1Byb3BlcnR5SW1wbA0KKwkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5wb3J0YW5kZmxvd3MuaW50ZXJuYWwuaW1wbC5Qb3J0YW5kZmxvd3NQYWNrYWdlSW1wbCNnZXRGbG93UHJvcGVydHkoKQ0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlpbnQgRkxPV19QUk9QRVJUWSA9IDE7DQorDQorCS8qKg0KKwkgKiBUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+QmFzZSBQcm9wZXJ0eTwvYj48L2VtPicgcmVmZXJlbmNlLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKiBAb3JkZXJlZA0KKwkgKi8NCisJaW50IEZMT1dfUFJPUEVSVFlfX0JBU0VfUFJPUEVSVFkgPSAwOw0KKw0KKwkvKioNCisJICogVGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkRpcmVjdGlvbjwvYj48L2VtPicgYXR0cmlidXRlLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKiBAb3JkZXJlZA0KKwkgKi8NCisJaW50IEZMT1dfUFJPUEVSVFlfX0RJUkVDVElPTiA9IDE7DQorDQorCS8qKg0KKwkgKiBUaGUgbnVtYmVyIG9mIHN0cnVjdHVyYWwgZmVhdHVyZXMgb2YgdGhlICc8ZW0+RmxvdyBQcm9wZXJ0eTwvZW0+JyBjbGFzcy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICogQG9yZGVyZWQNCisJICovDQorCWludCBGTE9XX1BST1BFUlRZX0ZFQVRVUkVfQ09VTlQgPSAyOw0KKw0KKwkvKioNCisJICogVGhlIG51bWJlciBvZiBvcGVyYXRpb25zIG9mIHRoZSAnPGVtPkZsb3cgUHJvcGVydHk8L2VtPicgY2xhc3MuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqIEBvcmRlcmVkDQorCSAqLw0KKwlpbnQgRkxPV19QUk9QRVJUWV9PUEVSQVRJT05fQ09VTlQgPSAwOw0KKw0KKwkvKioNCisJICogVGhlIG1ldGEgb2JqZWN0IGlkIGZvciB0aGUgJ3tAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucG9ydGFuZGZsb3dzLmludGVybmFsLmltcGwuRnVsbFBvcnRJbXBsIDxlbT5GdWxsIFBvcnQ8L2VtPn0nIGNsYXNzLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucG9ydGFuZGZsb3dzLmludGVybmFsLmltcGwuRnVsbFBvcnRJbXBsDQorCSAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnBvcnRhbmRmbG93cy5pbnRlcm5hbC5pbXBsLlBvcnRhbmRmbG93c1BhY2thZ2VJbXBsI2dldEZ1bGxQb3J0KCkNCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJaW50IEZVTExfUE9SVCA9IDI7DQorDQorCS8qKg0KKwkgKiBUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+QmFzZSBQb3J0PC9iPjwvZW0+JyByZWZlcmVuY2UuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqIEBvcmRlcmVkDQorCSAqLw0KKwlpbnQgRlVMTF9QT1JUX19CQVNFX1BPUlQgPSAwOw0KKw0KKwkvKioNCisJICogVGhlIG51bWJlciBvZiBzdHJ1Y3R1cmFsIGZlYXR1cmVzIG9mIHRoZSAnPGVtPkZ1bGwgUG9ydDwvZW0+JyBjbGFzcy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICogQG9yZGVyZWQNCisJICovDQorCWludCBGVUxMX1BPUlRfRkVBVFVSRV9DT1VOVCA9IDE7DQorDQorCS8qKg0KKwkgKiBUaGUgbnVtYmVyIG9mIG9wZXJhdGlvbnMgb2YgdGhlICc8ZW0+RnVsbCBQb3J0PC9lbT4nIGNsYXNzLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKiBAb3JkZXJlZA0KKwkgKi8NCisJaW50IEZVTExfUE9SVF9PUEVSQVRJT05fQ09VTlQgPSAwOw0KKw0KKwkvKioNCisJICogVGhlIG1ldGEgb2JqZWN0IGlkIGZvciB0aGUgJ3tAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucG9ydGFuZGZsb3dzLmludGVybmFsLmltcGwuSW50ZXJmYWNlQmxvY2tJbXBsIDxlbT5JbnRlcmZhY2UgQmxvY2s8L2VtPn0nIGNsYXNzLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucG9ydGFuZGZsb3dzLmludGVybmFsLmltcGwuSW50ZXJmYWNlQmxvY2tJbXBsDQorCSAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnBvcnRhbmRmbG93cy5pbnRlcm5hbC5pbXBsLlBvcnRhbmRmbG93c1BhY2thZ2VJbXBsI2dldEludGVyZmFjZUJsb2NrKCkNCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJaW50IElOVEVSRkFDRV9CTE9DSyA9IDM7DQorDQorCS8qKg0KKwkgKiBUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+QmFzZSBDbGFzczwvYj48L2VtPicgcmVmZXJlbmNlLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKiBAb3JkZXJlZA0KKwkgKi8NCisJaW50IElOVEVSRkFDRV9CTE9DS19fQkFTRV9DTEFTUyA9IEJsb2Nrc1BhY2thZ2UuQkxPQ0tfX0JBU0VfQ0xBU1M7DQorDQorCS8qKg0KKwkgKiBUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+SXMgRW5jYXBzdWxhdGVkPC9iPjwvZW0+JyBhdHRyaWJ1dGUuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqIEBvcmRlcmVkDQorCSAqLw0KKwlpbnQgSU5URVJGQUNFX0JMT0NLX19JU19FTkNBUFNVTEFURUQgPSBCbG9ja3NQYWNrYWdlLkJMT0NLX19JU19FTkNBUFNVTEFURUQ7DQorDQorCS8qKg0KKwkgKiBUaGUgbnVtYmVyIG9mIHN0cnVjdHVyYWwgZmVhdHVyZXMgb2YgdGhlICc8ZW0+SW50ZXJmYWNlIEJsb2NrPC9lbT4nIGNsYXNzLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKiBAb3JkZXJlZA0KKwkgKi8NCisJaW50IElOVEVSRkFDRV9CTE9DS19GRUFUVVJFX0NPVU5UID0gQmxvY2tzUGFja2FnZS5CTE9DS19GRUFUVVJFX0NPVU5UICsgMDsNCisNCisJLyoqDQorCSAqIFRoZSBudW1iZXIgb2Ygb3BlcmF0aW9ucyBvZiB0aGUgJzxlbT5JbnRlcmZhY2UgQmxvY2s8L2VtPicgY2xhc3MuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqIEBvcmRlcmVkDQorCSAqLw0KKwlpbnQgSU5URVJGQUNFX0JMT0NLX09QRVJBVElPTl9DT1VOVCA9IEJsb2Nrc1BhY2thZ2UuQkxPQ0tfT1BFUkFUSU9OX0NPVU5UICsgMDsNCisNCisJLyoqDQorCSAqIFRoZSBtZXRhIG9iamVjdCBpZCBmb3IgdGhlICd7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnBvcnRhbmRmbG93cy5pbnRlcm5hbC5pbXBsLlByb3h5UG9ydEltcGwgPGVtPlByb3h5IFBvcnQ8L2VtPn0nIGNsYXNzLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucG9ydGFuZGZsb3dzLmludGVybmFsLmltcGwuUHJveHlQb3J0SW1wbA0KKwkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5wb3J0YW5kZmxvd3MuaW50ZXJuYWwuaW1wbC5Qb3J0YW5kZmxvd3NQYWNrYWdlSW1wbCNnZXRQcm94eVBvcnQoKQ0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlpbnQgUFJPWFlfUE9SVCA9IDQ7DQorDQorCS8qKg0KKwkgKiBUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+QmFzZSBQb3J0PC9iPjwvZW0+JyByZWZlcmVuY2UuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqIEBvcmRlcmVkDQorCSAqLw0KKwlpbnQgUFJPWFlfUE9SVF9fQkFTRV9QT1JUID0gMDsNCisNCisJLyoqDQorCSAqIFRoZSBudW1iZXIgb2Ygc3RydWN0dXJhbCBmZWF0dXJlcyBvZiB0aGUgJzxlbT5Qcm94eSBQb3J0PC9lbT4nIGNsYXNzLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKiBAb3JkZXJlZA0KKwkgKi8NCisJaW50IFBST1hZX1BPUlRfRkVBVFVSRV9DT1VOVCA9IDE7DQorDQorCS8qKg0KKwkgKiBUaGUgbnVtYmVyIG9mIG9wZXJhdGlvbnMgb2YgdGhlICc8ZW0+UHJveHkgUG9ydDwvZW0+JyBjbGFzcy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICogQG9yZGVyZWQNCisJICovDQorCWludCBQUk9YWV9QT1JUX09QRVJBVElPTl9DT1VOVCA9IDA7DQorDQorCS8qKg0KKwkgKiBUaGUgbWV0YSBvYmplY3QgaWQgZm9yIHRoZSAne0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5wb3J0YW5kZmxvd3MuaW50ZXJuYWwuaW1wbC5BY2NlcHRDaGFuZ2VTdHJ1Y3R1cmFsRmVhdHVyZUV2ZW50QWN0aW9uSW1wbCA8ZW0+QWNjZXB0IENoYW5nZSBTdHJ1Y3R1cmFsIEZlYXR1cmUgRXZlbnQgQWN0aW9uPC9lbT59JyBjbGFzcy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnBvcnRhbmRmbG93cy5pbnRlcm5hbC5pbXBsLkFjY2VwdENoYW5nZVN0cnVjdHVyYWxGZWF0dXJlRXZlbnRBY3Rpb25JbXBsDQorCSAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnBvcnRhbmRmbG93cy5pbnRlcm5hbC5pbXBsLlBvcnRhbmRmbG93c1BhY2thZ2VJbXBsI2dldEFjY2VwdENoYW5nZVN0cnVjdHVyYWxGZWF0dXJlRXZlbnRBY3Rpb24oKQ0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlpbnQgQUNDRVBUX0NIQU5HRV9TVFJVQ1RVUkFMX0ZFQVRVUkVfRVZFTlRfQUNUSU9OID0gNTsNCisNCisJLyoqDQorCSAqIFRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5CYXNlIEFjY2VwdCBFdmVudCBBY3Rpb248L2I+PC9lbT4nIHJlZmVyZW5jZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICogQG9yZGVyZWQNCisJICovDQorCWludCBBQ0NFUFRfQ0hBTkdFX1NUUlVDVFVSQUxfRkVBVFVSRV9FVkVOVF9BQ1RJT05fX0JBU0VfQUNDRVBUX0VWRU5UX0FDVElPTiA9IDA7DQorDQorCS8qKg0KKwkgKiBUaGUgbnVtYmVyIG9mIHN0cnVjdHVyYWwgZmVhdHVyZXMgb2YgdGhlICc8ZW0+QWNjZXB0IENoYW5nZSBTdHJ1Y3R1cmFsIEZlYXR1cmUgRXZlbnQgQWN0aW9uPC9lbT4nIGNsYXNzLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKiBAb3JkZXJlZA0KKwkgKi8NCisJaW50IEFDQ0VQVF9DSEFOR0VfU1RSVUNUVVJBTF9GRUFUVVJFX0VWRU5UX0FDVElPTl9GRUFUVVJFX0NPVU5UID0gMTsNCisNCisJLyoqDQorCSAqIFRoZSBudW1iZXIgb2Ygb3BlcmF0aW9ucyBvZiB0aGUgJzxlbT5BY2NlcHQgQ2hhbmdlIFN0cnVjdHVyYWwgRmVhdHVyZSBFdmVudCBBY3Rpb248L2VtPicgY2xhc3MuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqIEBvcmRlcmVkDQorCSAqLw0KKwlpbnQgQUNDRVBUX0NIQU5HRV9TVFJVQ1RVUkFMX0ZFQVRVUkVfRVZFTlRfQUNUSU9OX09QRVJBVElPTl9DT1VOVCA9IDA7DQorDQorCS8qKg0KKwkgKiBUaGUgbWV0YSBvYmplY3QgaWQgZm9yIHRoZSAne0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5wb3J0YW5kZmxvd3MuaW50ZXJuYWwuaW1wbC5DaGFuZ2VTdHJ1Y3R1cmFsRmVhdHVyZUV2ZW50SW1wbCA8ZW0+Q2hhbmdlIFN0cnVjdHVyYWwgRmVhdHVyZSBFdmVudDwvZW0+fScgY2xhc3MuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5wb3J0YW5kZmxvd3MuaW50ZXJuYWwuaW1wbC5DaGFuZ2VTdHJ1Y3R1cmFsRmVhdHVyZUV2ZW50SW1wbA0KKwkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5wb3J0YW5kZmxvd3MuaW50ZXJuYWwuaW1wbC5Qb3J0YW5kZmxvd3NQYWNrYWdlSW1wbCNnZXRDaGFuZ2VTdHJ1Y3R1cmFsRmVhdHVyZUV2ZW50KCkNCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJaW50IENIQU5HRV9TVFJVQ1RVUkFMX0ZFQVRVUkVfRVZFTlQgPSA2Ow0KKw0KKwkvKioNCisJICogVGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkJhc2UgQ2hhbmdlIEV2ZW50PC9iPjwvZW0+JyByZWZlcmVuY2UuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqIEBvcmRlcmVkDQorCSAqLw0KKwlpbnQgQ0hBTkdFX1NUUlVDVFVSQUxfRkVBVFVSRV9FVkVOVF9fQkFTRV9DSEFOR0VfRVZFTlQgPSAwOw0KKw0KKwkvKioNCisJICogVGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPlN0cnVjdHVyYWwgRmVhdHVyZTwvYj48L2VtPicgcmVmZXJlbmNlLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKiBAb3JkZXJlZA0KKwkgKi8NCisJaW50IENIQU5HRV9TVFJVQ1RVUkFMX0ZFQVRVUkVfRVZFTlRfX1NUUlVDVFVSQUxfRkVBVFVSRSA9IDE7DQorDQorCS8qKg0KKwkgKiBUaGUgbnVtYmVyIG9mIHN0cnVjdHVyYWwgZmVhdHVyZXMgb2YgdGhlICc8ZW0+Q2hhbmdlIFN0cnVjdHVyYWwgRmVhdHVyZSBFdmVudDwvZW0+JyBjbGFzcy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICogQG9yZGVyZWQNCisJICovDQorCWludCBDSEFOR0VfU1RSVUNUVVJBTF9GRUFUVVJFX0VWRU5UX0ZFQVRVUkVfQ09VTlQgPSAyOw0KKw0KKwkvKioNCisJICogVGhlIG51bWJlciBvZiBvcGVyYXRpb25zIG9mIHRoZSAnPGVtPkNoYW5nZSBTdHJ1Y3R1cmFsIEZlYXR1cmUgRXZlbnQ8L2VtPicgY2xhc3MuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqIEBvcmRlcmVkDQorCSAqLw0KKwlpbnQgQ0hBTkdFX1NUUlVDVFVSQUxfRkVBVFVSRV9FVkVOVF9PUEVSQVRJT05fQ09VTlQgPSAwOw0KKw0KKwkvKioNCisJICogVGhlIG1ldGEgb2JqZWN0IGlkIGZvciB0aGUgJ3tAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucG9ydGFuZGZsb3dzLmludGVybmFsLmltcGwuRGlyZWN0ZWRGZWF0dXJlSW1wbCA8ZW0+RGlyZWN0ZWQgRmVhdHVyZTwvZW0+fScgY2xhc3MuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5wb3J0YW5kZmxvd3MuaW50ZXJuYWwuaW1wbC5EaXJlY3RlZEZlYXR1cmVJbXBsDQorCSAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnBvcnRhbmRmbG93cy5pbnRlcm5hbC5pbXBsLlBvcnRhbmRmbG93c1BhY2thZ2VJbXBsI2dldERpcmVjdGVkRmVhdHVyZSgpDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCWludCBESVJFQ1RFRF9GRUFUVVJFID0gNzsNCisNCisJLyoqDQorCSAqIFRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5CYXNlIEZlYXR1cmU8L2I+PC9lbT4nIHJlZmVyZW5jZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICogQG9yZGVyZWQNCisJICovDQorCWludCBESVJFQ1RFRF9GRUFUVVJFX19CQVNFX0ZFQVRVUkUgPSAwOw0KKw0KKwkvKioNCisJICogVGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkZlYXR1cmUgRGlyZWN0aW9uPC9iPjwvZW0+JyBhdHRyaWJ1dGUuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqIEBvcmRlcmVkDQorCSAqLw0KKwlpbnQgRElSRUNURURfRkVBVFVSRV9fRkVBVFVSRV9ESVJFQ1RJT04gPSAxOw0KKw0KKwkvKioNCisJICogVGhlIG51bWJlciBvZiBzdHJ1Y3R1cmFsIGZlYXR1cmVzIG9mIHRoZSAnPGVtPkRpcmVjdGVkIEZlYXR1cmU8L2VtPicgY2xhc3MuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqIEBvcmRlcmVkDQorCSAqLw0KKwlpbnQgRElSRUNURURfRkVBVFVSRV9GRUFUVVJFX0NPVU5UID0gMjsNCisNCisJLyoqDQorCSAqIFRoZSBudW1iZXIgb2Ygb3BlcmF0aW9ucyBvZiB0aGUgJzxlbT5EaXJlY3RlZCBGZWF0dXJlPC9lbT4nIGNsYXNzLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKiBAb3JkZXJlZA0KKwkgKi8NCisJaW50IERJUkVDVEVEX0ZFQVRVUkVfT1BFUkFUSU9OX0NPVU5UID0gMDsNCisNCisJLyoqDQorCSAqIFRoZSBtZXRhIG9iamVjdCBpZCBmb3IgdGhlICd7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnBvcnRhbmRmbG93cy5pbnRlcm5hbC5pbXBsLkludm9jYXRpb25Pbk5lc3RlZFBvcnRBY3Rpb25JbXBsIDxlbT5JbnZvY2F0aW9uIE9uIE5lc3RlZCBQb3J0IEFjdGlvbjwvZW0+fScgY2xhc3MuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5wb3J0YW5kZmxvd3MuaW50ZXJuYWwuaW1wbC5JbnZvY2F0aW9uT25OZXN0ZWRQb3J0QWN0aW9uSW1wbA0KKwkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5wb3J0YW5kZmxvd3MuaW50ZXJuYWwuaW1wbC5Qb3J0YW5kZmxvd3NQYWNrYWdlSW1wbCNnZXRJbnZvY2F0aW9uT25OZXN0ZWRQb3J0QWN0aW9uKCkNCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJaW50IElOVk9DQVRJT05fT05fTkVTVEVEX1BPUlRfQUNUSU9OID0gODsNCisNCisJLyoqDQorCSAqIFRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5CYXNlIEVsZW1lbnQ8L2I+PC9lbT4nIHJlZmVyZW5jZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICogQG9yZGVyZWQNCisJICovDQorCWludCBJTlZPQ0FUSU9OX09OX05FU1RFRF9QT1JUX0FDVElPTl9fQkFTRV9FTEVNRU5UID0gQmxvY2tzUGFja2FnZS5FTEVNRU5UX1BST1BFUlRZX1BBVEhfX0JBU0VfRUxFTUVOVDsNCisNCisJLyoqDQorCSAqIFRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5Qcm9wZXJ0eSBQYXRoPC9iPjwvZW0+JyByZWZlcmVuY2UgbGlzdC4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICogQG9yZGVyZWQNCisJICovDQorCWludCBJTlZPQ0FUSU9OX09OX05FU1RFRF9QT1JUX0FDVElPTl9fUFJPUEVSVFlfUEFUSCA9IEJsb2Nrc1BhY2thZ2UuRUxFTUVOVF9QUk9QRVJUWV9QQVRIX19QUk9QRVJUWV9QQVRIOw0KKw0KKwkvKioNCisJICogVGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkJhc2UgSW52b2NhdGlvbiBBY3Rpb248L2I+PC9lbT4nIHJlZmVyZW5jZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICogQG9yZGVyZWQNCisJICovDQorCWludCBJTlZPQ0FUSU9OX09OX05FU1RFRF9QT1JUX0FDVElPTl9fQkFTRV9JTlZPQ0FUSU9OX0FDVElPTiA9IEJsb2Nrc1BhY2thZ2UuRUxFTUVOVF9QUk9QRVJUWV9QQVRIX0ZFQVRVUkVfQ09VTlQgKyAwOw0KKw0KKwkvKioNCisJICogVGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPk9uIE5lc3RlZCBQb3J0PC9iPjwvZW0+JyByZWZlcmVuY2UgbGlzdC4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICogQG9yZGVyZWQNCisJICovDQorCWludCBJTlZPQ0FUSU9OX09OX05FU1RFRF9QT1JUX0FDVElPTl9fT05fTkVTVEVEX1BPUlQgPSBCbG9ja3NQYWNrYWdlLkVMRU1FTlRfUFJPUEVSVFlfUEFUSF9GRUFUVVJFX0NPVU5UICsgMTsNCisNCisJLyoqDQorCSAqIFRoZSBudW1iZXIgb2Ygc3RydWN0dXJhbCBmZWF0dXJlcyBvZiB0aGUgJzxlbT5JbnZvY2F0aW9uIE9uIE5lc3RlZCBQb3J0IEFjdGlvbjwvZW0+JyBjbGFzcy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICogQG9yZGVyZWQNCisJICovDQorCWludCBJTlZPQ0FUSU9OX09OX05FU1RFRF9QT1JUX0FDVElPTl9GRUFUVVJFX0NPVU5UID0gQmxvY2tzUGFja2FnZS5FTEVNRU5UX1BST1BFUlRZX1BBVEhfRkVBVFVSRV9DT1VOVCArIDI7DQorDQorCS8qKg0KKwkgKiBUaGUgbnVtYmVyIG9mIG9wZXJhdGlvbnMgb2YgdGhlICc8ZW0+SW52b2NhdGlvbiBPbiBOZXN0ZWQgUG9ydCBBY3Rpb248L2VtPicgY2xhc3MuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqIEBvcmRlcmVkDQorCSAqLw0KKwlpbnQgSU5WT0NBVElPTl9PTl9ORVNURURfUE9SVF9BQ1RJT05fT1BFUkFUSU9OX0NPVU5UID0gQmxvY2tzUGFja2FnZS5FTEVNRU5UX1BST1BFUlRZX1BBVEhfT1BFUkFUSU9OX0NPVU5UICsgMDsNCisNCisJLyoqDQorCSAqIFRoZSBtZXRhIG9iamVjdCBpZCBmb3IgdGhlICd7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnBvcnRhbmRmbG93cy5pbnRlcm5hbC5pbXBsLlRyaWdnZXJPbk5lc3RlZFBvcnRJbXBsIDxlbT5UcmlnZ2VyIE9uIE5lc3RlZCBQb3J0PC9lbT59JyBjbGFzcy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnBvcnRhbmRmbG93cy5pbnRlcm5hbC5pbXBsLlRyaWdnZXJPbk5lc3RlZFBvcnRJbXBsDQorCSAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnBvcnRhbmRmbG93cy5pbnRlcm5hbC5pbXBsLlBvcnRhbmRmbG93c1BhY2thZ2VJbXBsI2dldFRyaWdnZXJPbk5lc3RlZFBvcnQoKQ0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlpbnQgVFJJR0dFUl9PTl9ORVNURURfUE9SVCA9IDk7DQorDQorCS8qKg0KKwkgKiBUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+QmFzZSBFbGVtZW50PC9iPjwvZW0+JyByZWZlcmVuY2UuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqIEBvcmRlcmVkDQorCSAqLw0KKwlpbnQgVFJJR0dFUl9PTl9ORVNURURfUE9SVF9fQkFTRV9FTEVNRU5UID0gQmxvY2tzUGFja2FnZS5FTEVNRU5UX1BST1BFUlRZX1BBVEhfX0JBU0VfRUxFTUVOVDsNCisNCisJLyoqDQorCSAqIFRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5Qcm9wZXJ0eSBQYXRoPC9iPjwvZW0+JyByZWZlcmVuY2UgbGlzdC4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICogQG9yZGVyZWQNCisJICovDQorCWludCBUUklHR0VSX09OX05FU1RFRF9QT1JUX19QUk9QRVJUWV9QQVRIID0gQmxvY2tzUGFja2FnZS5FTEVNRU5UX1BST1BFUlRZX1BBVEhfX1BST1BFUlRZX1BBVEg7DQorDQorCS8qKg0KKwkgKiBUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+QmFzZSBUcmlnZ2VyPC9iPjwvZW0+JyByZWZlcmVuY2UuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqIEBvcmRlcmVkDQorCSAqLw0KKwlpbnQgVFJJR0dFUl9PTl9ORVNURURfUE9SVF9fQkFTRV9UUklHR0VSID0gQmxvY2tzUGFja2FnZS5FTEVNRU5UX1BST1BFUlRZX1BBVEhfRkVBVFVSRV9DT1VOVCArIDA7DQorDQorCS8qKg0KKwkgKiBUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+T24gTmVzdGVkIFBvcnQ8L2I+PC9lbT4nIHJlZmVyZW5jZSBsaXN0Lg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKiBAb3JkZXJlZA0KKwkgKi8NCisJaW50IFRSSUdHRVJfT05fTkVTVEVEX1BPUlRfX09OX05FU1RFRF9QT1JUID0gQmxvY2tzUGFja2FnZS5FTEVNRU5UX1BST1BFUlRZX1BBVEhfRkVBVFVSRV9DT1VOVCArIDE7DQorDQorCS8qKg0KKwkgKiBUaGUgbnVtYmVyIG9mIHN0cnVjdHVyYWwgZmVhdHVyZXMgb2YgdGhlICc8ZW0+VHJpZ2dlciBPbiBOZXN0ZWQgUG9ydDwvZW0+JyBjbGFzcy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICogQG9yZGVyZWQNCisJICovDQorCWludCBUUklHR0VSX09OX05FU1RFRF9QT1JUX0ZFQVRVUkVfQ09VTlQgPSBCbG9ja3NQYWNrYWdlLkVMRU1FTlRfUFJPUEVSVFlfUEFUSF9GRUFUVVJFX0NPVU5UICsgMjsNCisNCisJLyoqDQorCSAqIFRoZSBudW1iZXIgb2Ygb3BlcmF0aW9ucyBvZiB0aGUgJzxlbT5UcmlnZ2VyIE9uIE5lc3RlZCBQb3J0PC9lbT4nIGNsYXNzLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKiBAb3JkZXJlZA0KKwkgKi8NCisJaW50IFRSSUdHRVJfT05fTkVTVEVEX1BPUlRfT1BFUkFUSU9OX0NPVU5UID0gQmxvY2tzUGFja2FnZS5FTEVNRU5UX1BST1BFUlRZX1BBVEhfT1BFUkFUSU9OX0NPVU5UICsgMDsNCisNCisJLyoqDQorCSAqIFRoZSBtZXRhIG9iamVjdCBpZCBmb3IgdGhlICd7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnBvcnRhbmRmbG93cy5GbG93RGlyZWN0aW9uIDxlbT5GbG93IERpcmVjdGlvbjwvZW0+fScgZW51bS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnBvcnRhbmRmbG93cy5GbG93RGlyZWN0aW9uDQorCSAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnBvcnRhbmRmbG93cy5pbnRlcm5hbC5pbXBsLlBvcnRhbmRmbG93c1BhY2thZ2VJbXBsI2dldEZsb3dEaXJlY3Rpb24oKQ0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlpbnQgRkxPV19ESVJFQ1RJT04gPSAxMDsNCisNCisJLyoqDQorCSAqIFRoZSBtZXRhIG9iamVjdCBpZCBmb3IgdGhlICd7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnBvcnRhbmRmbG93cy5GZWF0dXJlRGlyZWN0aW9uIDxlbT5GZWF0dXJlIERpcmVjdGlvbjwvZW0+fScgZW51bS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnBvcnRhbmRmbG93cy5GZWF0dXJlRGlyZWN0aW9uDQorCSAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnBvcnRhbmRmbG93cy5pbnRlcm5hbC5pbXBsLlBvcnRhbmRmbG93c1BhY2thZ2VJbXBsI2dldEZlYXR1cmVEaXJlY3Rpb24oKQ0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlpbnQgRkVBVFVSRV9ESVJFQ1RJT04gPSAxMTsNCisNCisNCisJLyoqDQorCSAqIFJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciBjbGFzcyAne0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5wb3J0YW5kZmxvd3MuSXRlbUZsb3cgPGVtPkl0ZW0gRmxvdzwvZW0+fScuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAcmV0dXJuIHRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJzxlbT5JdGVtIEZsb3c8L2VtPicuDQorCSAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnBvcnRhbmRmbG93cy5JdGVtRmxvdw0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlFQ2xhc3MgZ2V0SXRlbUZsb3coKTsNCisNCisJLyoqDQorCSAqIFJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgcmVmZXJlbmNlICd7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnBvcnRhbmRmbG93cy5JdGVtRmxvdyNnZXRCYXNlX0luZm9ybWF0aW9uRmxvdyA8ZW0+QmFzZSBJbmZvcm1hdGlvbiBGbG93PC9lbT59Jy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEByZXR1cm4gdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgcmVmZXJlbmNlICc8ZW0+QmFzZSBJbmZvcm1hdGlvbiBGbG93PC9lbT4nLg0KKwkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5wb3J0YW5kZmxvd3MuSXRlbUZsb3cjZ2V0QmFzZV9JbmZvcm1hdGlvbkZsb3coKQ0KKwkgKiBAc2VlICNnZXRJdGVtRmxvdygpDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUVSZWZlcmVuY2UgZ2V0SXRlbUZsb3dfQmFzZV9JbmZvcm1hdGlvbkZsb3coKTsNCisNCisJLyoqDQorCSAqIFJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgcmVmZXJlbmNlICd7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnBvcnRhbmRmbG93cy5JdGVtRmxvdyNnZXRJdGVtUHJvcGVydHkgPGVtPkl0ZW0gUHJvcGVydHk8L2VtPn0nLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHJldHVybiB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSByZWZlcmVuY2UgJzxlbT5JdGVtIFByb3BlcnR5PC9lbT4nLg0KKwkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5wb3J0YW5kZmxvd3MuSXRlbUZsb3cjZ2V0SXRlbVByb3BlcnR5KCkNCisJICogQHNlZSAjZ2V0SXRlbUZsb3coKQ0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlFUmVmZXJlbmNlIGdldEl0ZW1GbG93X0l0ZW1Qcm9wZXJ0eSgpOw0KKw0KKwkvKioNCisJICogUmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICd7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnBvcnRhbmRmbG93cy5GbG93UHJvcGVydHkgPGVtPkZsb3cgUHJvcGVydHk8L2VtPn0nLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHJldHVybiB0aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICc8ZW0+RmxvdyBQcm9wZXJ0eTwvZW0+Jy4NCisJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucG9ydGFuZGZsb3dzLkZsb3dQcm9wZXJ0eQ0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlFQ2xhc3MgZ2V0Rmxvd1Byb3BlcnR5KCk7DQorDQorCS8qKg0KKwkgKiBSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIHJlZmVyZW5jZSAne0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5wb3J0YW5kZmxvd3MuRmxvd1Byb3BlcnR5I2dldEJhc2VfUHJvcGVydHkgPGVtPkJhc2UgUHJvcGVydHk8L2VtPn0nLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHJldHVybiB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSByZWZlcmVuY2UgJzxlbT5CYXNlIFByb3BlcnR5PC9lbT4nLg0KKwkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5wb3J0YW5kZmxvd3MuRmxvd1Byb3BlcnR5I2dldEJhc2VfUHJvcGVydHkoKQ0KKwkgKiBAc2VlICNnZXRGbG93UHJvcGVydHkoKQ0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlFUmVmZXJlbmNlIGdldEZsb3dQcm9wZXJ0eV9CYXNlX1Byb3BlcnR5KCk7DQorDQorCS8qKg0KKwkgKiBSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGF0dHJpYnV0ZSAne0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5wb3J0YW5kZmxvd3MuRmxvd1Byb3BlcnR5I2dldERpcmVjdGlvbiA8ZW0+RGlyZWN0aW9uPC9lbT59Jy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEByZXR1cm4gdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgYXR0cmlidXRlICc8ZW0+RGlyZWN0aW9uPC9lbT4nLg0KKwkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5wb3J0YW5kZmxvd3MuRmxvd1Byb3BlcnR5I2dldERpcmVjdGlvbigpDQorCSAqIEBzZWUgI2dldEZsb3dQcm9wZXJ0eSgpDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUVBdHRyaWJ1dGUgZ2V0Rmxvd1Byb3BlcnR5X0RpcmVjdGlvbigpOw0KKw0KKwkvKioNCisJICogUmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICd7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnBvcnRhbmRmbG93cy5GdWxsUG9ydCA8ZW0+RnVsbCBQb3J0PC9lbT59Jy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEByZXR1cm4gdGhlIG1ldGEgb2JqZWN0IGZvciBjbGFzcyAnPGVtPkZ1bGwgUG9ydDwvZW0+Jy4NCisJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucG9ydGFuZGZsb3dzLkZ1bGxQb3J0DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUVDbGFzcyBnZXRGdWxsUG9ydCgpOw0KKw0KKwkvKioNCisJICogUmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSByZWZlcmVuY2UgJ3tAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucG9ydGFuZGZsb3dzLkZ1bGxQb3J0I2dldEJhc2VfUG9ydCA8ZW0+QmFzZSBQb3J0PC9lbT59Jy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEByZXR1cm4gdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgcmVmZXJlbmNlICc8ZW0+QmFzZSBQb3J0PC9lbT4nLg0KKwkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5wb3J0YW5kZmxvd3MuRnVsbFBvcnQjZ2V0QmFzZV9Qb3J0KCkNCisJICogQHNlZSAjZ2V0RnVsbFBvcnQoKQ0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlFUmVmZXJlbmNlIGdldEZ1bGxQb3J0X0Jhc2VfUG9ydCgpOw0KKw0KKwkvKioNCisJICogUmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICd7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnBvcnRhbmRmbG93cy5JbnRlcmZhY2VCbG9jayA8ZW0+SW50ZXJmYWNlIEJsb2NrPC9lbT59Jy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEByZXR1cm4gdGhlIG1ldGEgb2JqZWN0IGZvciBjbGFzcyAnPGVtPkludGVyZmFjZSBCbG9jazwvZW0+Jy4NCisJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucG9ydGFuZGZsb3dzLkludGVyZmFjZUJsb2NrDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUVDbGFzcyBnZXRJbnRlcmZhY2VCbG9jaygpOw0KKw0KKwkvKioNCisJICogUmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICd7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnBvcnRhbmRmbG93cy5Qcm94eVBvcnQgPGVtPlByb3h5IFBvcnQ8L2VtPn0nLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHJldHVybiB0aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICc8ZW0+UHJveHkgUG9ydDwvZW0+Jy4NCisJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucG9ydGFuZGZsb3dzLlByb3h5UG9ydA0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlFQ2xhc3MgZ2V0UHJveHlQb3J0KCk7DQorDQorCS8qKg0KKwkgKiBSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIHJlZmVyZW5jZSAne0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5wb3J0YW5kZmxvd3MuUHJveHlQb3J0I2dldEJhc2VfUG9ydCA8ZW0+QmFzZSBQb3J0PC9lbT59Jy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEByZXR1cm4gdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgcmVmZXJlbmNlICc8ZW0+QmFzZSBQb3J0PC9lbT4nLg0KKwkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5wb3J0YW5kZmxvd3MuUHJveHlQb3J0I2dldEJhc2VfUG9ydCgpDQorCSAqIEBzZWUgI2dldFByb3h5UG9ydCgpDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUVSZWZlcmVuY2UgZ2V0UHJveHlQb3J0X0Jhc2VfUG9ydCgpOw0KKw0KKwkvKioNCisJICogUmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICd7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnBvcnRhbmRmbG93cy5BY2NlcHRDaGFuZ2VTdHJ1Y3R1cmFsRmVhdHVyZUV2ZW50QWN0aW9uIDxlbT5BY2NlcHQgQ2hhbmdlIFN0cnVjdHVyYWwgRmVhdHVyZSBFdmVudCBBY3Rpb248L2VtPn0nLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHJldHVybiB0aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICc8ZW0+QWNjZXB0IENoYW5nZSBTdHJ1Y3R1cmFsIEZlYXR1cmUgRXZlbnQgQWN0aW9uPC9lbT4nLg0KKwkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5wb3J0YW5kZmxvd3MuQWNjZXB0Q2hhbmdlU3RydWN0dXJhbEZlYXR1cmVFdmVudEFjdGlvbg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlFQ2xhc3MgZ2V0QWNjZXB0Q2hhbmdlU3RydWN0dXJhbEZlYXR1cmVFdmVudEFjdGlvbigpOw0KKw0KKwkvKioNCisJICogUmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSByZWZlcmVuY2UgJ3tAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucG9ydGFuZGZsb3dzLkFjY2VwdENoYW5nZVN0cnVjdHVyYWxGZWF0dXJlRXZlbnRBY3Rpb24jZ2V0QmFzZV9BY2NlcHRFdmVudEFjdGlvbiA8ZW0+QmFzZSBBY2NlcHQgRXZlbnQgQWN0aW9uPC9lbT59Jy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEByZXR1cm4gdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgcmVmZXJlbmNlICc8ZW0+QmFzZSBBY2NlcHQgRXZlbnQgQWN0aW9uPC9lbT4nLg0KKwkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5wb3J0YW5kZmxvd3MuQWNjZXB0Q2hhbmdlU3RydWN0dXJhbEZlYXR1cmVFdmVudEFjdGlvbiNnZXRCYXNlX0FjY2VwdEV2ZW50QWN0aW9uKCkNCisJICogQHNlZSAjZ2V0QWNjZXB0Q2hhbmdlU3RydWN0dXJhbEZlYXR1cmVFdmVudEFjdGlvbigpDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUVSZWZlcmVuY2UgZ2V0QWNjZXB0Q2hhbmdlU3RydWN0dXJhbEZlYXR1cmVFdmVudEFjdGlvbl9CYXNlX0FjY2VwdEV2ZW50QWN0aW9uKCk7DQorDQorCS8qKg0KKwkgKiBSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJ3tAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucG9ydGFuZGZsb3dzLkNoYW5nZVN0cnVjdHVyYWxGZWF0dXJlRXZlbnQgPGVtPkNoYW5nZSBTdHJ1Y3R1cmFsIEZlYXR1cmUgRXZlbnQ8L2VtPn0nLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHJldHVybiB0aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICc8ZW0+Q2hhbmdlIFN0cnVjdHVyYWwgRmVhdHVyZSBFdmVudDwvZW0+Jy4NCisJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucG9ydGFuZGZsb3dzLkNoYW5nZVN0cnVjdHVyYWxGZWF0dXJlRXZlbnQNCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJRUNsYXNzIGdldENoYW5nZVN0cnVjdHVyYWxGZWF0dXJlRXZlbnQoKTsNCisNCisJLyoqDQorCSAqIFJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgcmVmZXJlbmNlICd7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnBvcnRhbmRmbG93cy5DaGFuZ2VTdHJ1Y3R1cmFsRmVhdHVyZUV2ZW50I2dldEJhc2VfQ2hhbmdlRXZlbnQgPGVtPkJhc2UgQ2hhbmdlIEV2ZW50PC9lbT59Jy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEByZXR1cm4gdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgcmVmZXJlbmNlICc8ZW0+QmFzZSBDaGFuZ2UgRXZlbnQ8L2VtPicuDQorCSAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnBvcnRhbmRmbG93cy5DaGFuZ2VTdHJ1Y3R1cmFsRmVhdHVyZUV2ZW50I2dldEJhc2VfQ2hhbmdlRXZlbnQoKQ0KKwkgKiBAc2VlICNnZXRDaGFuZ2VTdHJ1Y3R1cmFsRmVhdHVyZUV2ZW50KCkNCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJRVJlZmVyZW5jZSBnZXRDaGFuZ2VTdHJ1Y3R1cmFsRmVhdHVyZUV2ZW50X0Jhc2VfQ2hhbmdlRXZlbnQoKTsNCisNCisJLyoqDQorCSAqIFJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgcmVmZXJlbmNlICd7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnBvcnRhbmRmbG93cy5DaGFuZ2VTdHJ1Y3R1cmFsRmVhdHVyZUV2ZW50I2dldFN0cnVjdHVyYWxGZWF0dXJlIDxlbT5TdHJ1Y3R1cmFsIEZlYXR1cmU8L2VtPn0nLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHJldHVybiB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSByZWZlcmVuY2UgJzxlbT5TdHJ1Y3R1cmFsIEZlYXR1cmU8L2VtPicuDQorCSAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnBvcnRhbmRmbG93cy5DaGFuZ2VTdHJ1Y3R1cmFsRmVhdHVyZUV2ZW50I2dldFN0cnVjdHVyYWxGZWF0dXJlKCkNCisJICogQHNlZSAjZ2V0Q2hhbmdlU3RydWN0dXJhbEZlYXR1cmVFdmVudCgpDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUVSZWZlcmVuY2UgZ2V0Q2hhbmdlU3RydWN0dXJhbEZlYXR1cmVFdmVudF9TdHJ1Y3R1cmFsRmVhdHVyZSgpOw0KKw0KKwkvKioNCisJICogUmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICd7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnBvcnRhbmRmbG93cy5EaXJlY3RlZEZlYXR1cmUgPGVtPkRpcmVjdGVkIEZlYXR1cmU8L2VtPn0nLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHJldHVybiB0aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICc8ZW0+RGlyZWN0ZWQgRmVhdHVyZTwvZW0+Jy4NCisJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucG9ydGFuZGZsb3dzLkRpcmVjdGVkRmVhdHVyZQ0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlFQ2xhc3MgZ2V0RGlyZWN0ZWRGZWF0dXJlKCk7DQorDQorCS8qKg0KKwkgKiBSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIHJlZmVyZW5jZSAne0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5wb3J0YW5kZmxvd3MuRGlyZWN0ZWRGZWF0dXJlI2dldEJhc2VfRmVhdHVyZSA8ZW0+QmFzZSBGZWF0dXJlPC9lbT59Jy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEByZXR1cm4gdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgcmVmZXJlbmNlICc8ZW0+QmFzZSBGZWF0dXJlPC9lbT4nLg0KKwkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5wb3J0YW5kZmxvd3MuRGlyZWN0ZWRGZWF0dXJlI2dldEJhc2VfRmVhdHVyZSgpDQorCSAqIEBzZWUgI2dldERpcmVjdGVkRmVhdHVyZSgpDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUVSZWZlcmVuY2UgZ2V0RGlyZWN0ZWRGZWF0dXJlX0Jhc2VfRmVhdHVyZSgpOw0KKw0KKwkvKioNCisJICogUmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSBhdHRyaWJ1dGUgJ3tAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucG9ydGFuZGZsb3dzLkRpcmVjdGVkRmVhdHVyZSNnZXRGZWF0dXJlRGlyZWN0aW9uIDxlbT5GZWF0dXJlIERpcmVjdGlvbjwvZW0+fScuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAcmV0dXJuIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGF0dHJpYnV0ZSAnPGVtPkZlYXR1cmUgRGlyZWN0aW9uPC9lbT4nLg0KKwkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5wb3J0YW5kZmxvd3MuRGlyZWN0ZWRGZWF0dXJlI2dldEZlYXR1cmVEaXJlY3Rpb24oKQ0KKwkgKiBAc2VlICNnZXREaXJlY3RlZEZlYXR1cmUoKQ0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlFQXR0cmlidXRlIGdldERpcmVjdGVkRmVhdHVyZV9GZWF0dXJlRGlyZWN0aW9uKCk7DQorDQorCS8qKg0KKwkgKiBSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJ3tAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucG9ydGFuZGZsb3dzLkludm9jYXRpb25Pbk5lc3RlZFBvcnRBY3Rpb24gPGVtPkludm9jYXRpb24gT24gTmVzdGVkIFBvcnQgQWN0aW9uPC9lbT59Jy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEByZXR1cm4gdGhlIG1ldGEgb2JqZWN0IGZvciBjbGFzcyAnPGVtPkludm9jYXRpb24gT24gTmVzdGVkIFBvcnQgQWN0aW9uPC9lbT4nLg0KKwkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5wb3J0YW5kZmxvd3MuSW52b2NhdGlvbk9uTmVzdGVkUG9ydEFjdGlvbg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlFQ2xhc3MgZ2V0SW52b2NhdGlvbk9uTmVzdGVkUG9ydEFjdGlvbigpOw0KKw0KKwkvKioNCisJICogUmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSByZWZlcmVuY2UgJ3tAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucG9ydGFuZGZsb3dzLkludm9jYXRpb25Pbk5lc3RlZFBvcnRBY3Rpb24jZ2V0QmFzZV9JbnZvY2F0aW9uQWN0aW9uIDxlbT5CYXNlIEludm9jYXRpb24gQWN0aW9uPC9lbT59Jy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEByZXR1cm4gdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgcmVmZXJlbmNlICc8ZW0+QmFzZSBJbnZvY2F0aW9uIEFjdGlvbjwvZW0+Jy4NCisJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucG9ydGFuZGZsb3dzLkludm9jYXRpb25Pbk5lc3RlZFBvcnRBY3Rpb24jZ2V0QmFzZV9JbnZvY2F0aW9uQWN0aW9uKCkNCisJICogQHNlZSAjZ2V0SW52b2NhdGlvbk9uTmVzdGVkUG9ydEFjdGlvbigpDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUVSZWZlcmVuY2UgZ2V0SW52b2NhdGlvbk9uTmVzdGVkUG9ydEFjdGlvbl9CYXNlX0ludm9jYXRpb25BY3Rpb24oKTsNCisNCisJLyoqDQorCSAqIFJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgcmVmZXJlbmNlIGxpc3QgJ3tAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucG9ydGFuZGZsb3dzLkludm9jYXRpb25Pbk5lc3RlZFBvcnRBY3Rpb24jZ2V0T25OZXN0ZWRQb3J0IDxlbT5PbiBOZXN0ZWQgUG9ydDwvZW0+fScuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAcmV0dXJuIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIHJlZmVyZW5jZSBsaXN0ICc8ZW0+T24gTmVzdGVkIFBvcnQ8L2VtPicuDQorCSAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnBvcnRhbmRmbG93cy5JbnZvY2F0aW9uT25OZXN0ZWRQb3J0QWN0aW9uI2dldE9uTmVzdGVkUG9ydCgpDQorCSAqIEBzZWUgI2dldEludm9jYXRpb25Pbk5lc3RlZFBvcnRBY3Rpb24oKQ0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlFUmVmZXJlbmNlIGdldEludm9jYXRpb25Pbk5lc3RlZFBvcnRBY3Rpb25fT25OZXN0ZWRQb3J0KCk7DQorDQorCS8qKg0KKwkgKiBSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJ3tAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucG9ydGFuZGZsb3dzLlRyaWdnZXJPbk5lc3RlZFBvcnQgPGVtPlRyaWdnZXIgT24gTmVzdGVkIFBvcnQ8L2VtPn0nLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHJldHVybiB0aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICc8ZW0+VHJpZ2dlciBPbiBOZXN0ZWQgUG9ydDwvZW0+Jy4NCisJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucG9ydGFuZGZsb3dzLlRyaWdnZXJPbk5lc3RlZFBvcnQNCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJRUNsYXNzIGdldFRyaWdnZXJPbk5lc3RlZFBvcnQoKTsNCisNCisJLyoqDQorCSAqIFJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgcmVmZXJlbmNlICd7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnBvcnRhbmRmbG93cy5UcmlnZ2VyT25OZXN0ZWRQb3J0I2dldEJhc2VfVHJpZ2dlciA8ZW0+QmFzZSBUcmlnZ2VyPC9lbT59Jy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEByZXR1cm4gdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgcmVmZXJlbmNlICc8ZW0+QmFzZSBUcmlnZ2VyPC9lbT4nLg0KKwkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5wb3J0YW5kZmxvd3MuVHJpZ2dlck9uTmVzdGVkUG9ydCNnZXRCYXNlX1RyaWdnZXIoKQ0KKwkgKiBAc2VlICNnZXRUcmlnZ2VyT25OZXN0ZWRQb3J0KCkNCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJRVJlZmVyZW5jZSBnZXRUcmlnZ2VyT25OZXN0ZWRQb3J0X0Jhc2VfVHJpZ2dlcigpOw0KKw0KKwkvKioNCisJICogUmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSByZWZlcmVuY2UgbGlzdCAne0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5wb3J0YW5kZmxvd3MuVHJpZ2dlck9uTmVzdGVkUG9ydCNnZXRPbk5lc3RlZFBvcnQgPGVtPk9uIE5lc3RlZCBQb3J0PC9lbT59Jy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEByZXR1cm4gdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgcmVmZXJlbmNlIGxpc3QgJzxlbT5PbiBOZXN0ZWQgUG9ydDwvZW0+Jy4NCisJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucG9ydGFuZGZsb3dzLlRyaWdnZXJPbk5lc3RlZFBvcnQjZ2V0T25OZXN0ZWRQb3J0KCkNCisJICogQHNlZSAjZ2V0VHJpZ2dlck9uTmVzdGVkUG9ydCgpDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUVSZWZlcmVuY2UgZ2V0VHJpZ2dlck9uTmVzdGVkUG9ydF9Pbk5lc3RlZFBvcnQoKTsNCisNCisJLyoqDQorCSAqIFJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciBlbnVtICd7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnBvcnRhbmRmbG93cy5GbG93RGlyZWN0aW9uIDxlbT5GbG93IERpcmVjdGlvbjwvZW0+fScuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAcmV0dXJuIHRoZSBtZXRhIG9iamVjdCBmb3IgZW51bSAnPGVtPkZsb3cgRGlyZWN0aW9uPC9lbT4nLg0KKwkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5wb3J0YW5kZmxvd3MuRmxvd0RpcmVjdGlvbg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlFRW51bSBnZXRGbG93RGlyZWN0aW9uKCk7DQorDQorCS8qKg0KKwkgKiBSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgZW51bSAne0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5wb3J0YW5kZmxvd3MuRmVhdHVyZURpcmVjdGlvbiA8ZW0+RmVhdHVyZSBEaXJlY3Rpb248L2VtPn0nLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHJldHVybiB0aGUgbWV0YSBvYmplY3QgZm9yIGVudW0gJzxlbT5GZWF0dXJlIERpcmVjdGlvbjwvZW0+Jy4NCisJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucG9ydGFuZGZsb3dzLkZlYXR1cmVEaXJlY3Rpb24NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJRUVudW0gZ2V0RmVhdHVyZURpcmVjdGlvbigpOw0KKw0KKwkvKioNCisJICogUmV0dXJucyB0aGUgZmFjdG9yeSB0aGF0IGNyZWF0ZXMgdGhlIGluc3RhbmNlcyBvZiB0aGUgbW9kZWwuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAcmV0dXJuIHRoZSBmYWN0b3J5IHRoYXQgY3JlYXRlcyB0aGUgaW5zdGFuY2VzIG9mIHRoZSBtb2RlbC4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJUG9ydGFuZGZsb3dzRmFjdG9yeSBnZXRQb3J0YW5kZmxvd3NGYWN0b3J5KCk7DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiBEZWZpbmVzIGxpdGVyYWxzIGZvciB0aGUgbWV0YSBvYmplY3RzIHRoYXQgcmVwcmVzZW50DQorCSAqIDx1bD4NCisJICogICA8bGk+ZWFjaCBjbGFzcyw8L2xpPg0KKwkgKiAgIDxsaT5lYWNoIGZlYXR1cmUgb2YgZWFjaCBjbGFzcyw8L2xpPg0KKwkgKiAgIDxsaT5lYWNoIG9wZXJhdGlvbiBvZiBlYWNoIGNsYXNzLDwvbGk+DQorCSAqICAgPGxpPmVhY2ggZW51bSw8L2xpPg0KKwkgKiAgIDxsaT5hbmQgZWFjaCBkYXRhIHR5cGU8L2xpPg0KKwkgKiA8L3VsPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJaW50ZXJmYWNlIExpdGVyYWxzIHsNCisJCS8qKg0KKwkJICogVGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAne0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5wb3J0YW5kZmxvd3MuaW50ZXJuYWwuaW1wbC5JdGVtRmxvd0ltcGwgPGVtPkl0ZW0gRmxvdzwvZW0+fScgY2xhc3MuDQorCQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCQkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5wb3J0YW5kZmxvd3MuaW50ZXJuYWwuaW1wbC5JdGVtRmxvd0ltcGwNCisJCSAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnBvcnRhbmRmbG93cy5pbnRlcm5hbC5pbXBsLlBvcnRhbmRmbG93c1BhY2thZ2VJbXBsI2dldEl0ZW1GbG93KCkNCisJCSAqIEBnZW5lcmF0ZWQNCisJCSAqLw0KKwkJRUNsYXNzIElURU1fRkxPVyA9IGVJTlNUQU5DRS5nZXRJdGVtRmxvdygpOw0KKw0KKwkJLyoqDQorCQkgKiBUaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8ZW0+PGI+QmFzZSBJbmZvcm1hdGlvbiBGbG93PC9iPjwvZW0+JyByZWZlcmVuY2UgZmVhdHVyZS4NCisJCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJCSAqIEBnZW5lcmF0ZWQNCisJCSAqLw0KKwkJRVJlZmVyZW5jZSBJVEVNX0ZMT1dfX0JBU0VfSU5GT1JNQVRJT05fRkxPVyA9IGVJTlNUQU5DRS5nZXRJdGVtRmxvd19CYXNlX0luZm9ybWF0aW9uRmxvdygpOw0KKw0KKwkJLyoqDQorCQkgKiBUaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8ZW0+PGI+SXRlbSBQcm9wZXJ0eTwvYj48L2VtPicgcmVmZXJlbmNlIGZlYXR1cmUuDQorCQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCQkgKiBAZ2VuZXJhdGVkDQorCQkgKi8NCisJCUVSZWZlcmVuY2UgSVRFTV9GTE9XX19JVEVNX1BST1BFUlRZID0gZUlOU1RBTkNFLmdldEl0ZW1GbG93X0l0ZW1Qcm9wZXJ0eSgpOw0KKw0KKwkJLyoqDQorCQkgKiBUaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICd7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnBvcnRhbmRmbG93cy5pbnRlcm5hbC5pbXBsLkZsb3dQcm9wZXJ0eUltcGwgPGVtPkZsb3cgUHJvcGVydHk8L2VtPn0nIGNsYXNzLg0KKwkJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucG9ydGFuZGZsb3dzLmludGVybmFsLmltcGwuRmxvd1Byb3BlcnR5SW1wbA0KKwkJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucG9ydGFuZGZsb3dzLmludGVybmFsLmltcGwuUG9ydGFuZGZsb3dzUGFja2FnZUltcGwjZ2V0Rmxvd1Byb3BlcnR5KCkNCisJCSAqIEBnZW5lcmF0ZWQNCisJCSAqLw0KKwkJRUNsYXNzIEZMT1dfUFJPUEVSVFkgPSBlSU5TVEFOQ0UuZ2V0Rmxvd1Byb3BlcnR5KCk7DQorDQorCQkvKioNCisJCSAqIFRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxlbT48Yj5CYXNlIFByb3BlcnR5PC9iPjwvZW0+JyByZWZlcmVuY2UgZmVhdHVyZS4NCisJCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJCSAqIEBnZW5lcmF0ZWQNCisJCSAqLw0KKwkJRVJlZmVyZW5jZSBGTE9XX1BST1BFUlRZX19CQVNFX1BST1BFUlRZID0gZUlOU1RBTkNFLmdldEZsb3dQcm9wZXJ0eV9CYXNlX1Byb3BlcnR5KCk7DQorDQorCQkvKioNCisJCSAqIFRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxlbT48Yj5EaXJlY3Rpb248L2I+PC9lbT4nIGF0dHJpYnV0ZSBmZWF0dXJlLg0KKwkJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkJICogQGdlbmVyYXRlZA0KKwkJICovDQorCQlFQXR0cmlidXRlIEZMT1dfUFJPUEVSVFlfX0RJUkVDVElPTiA9IGVJTlNUQU5DRS5nZXRGbG93UHJvcGVydHlfRGlyZWN0aW9uKCk7DQorDQorCQkvKioNCisJCSAqIFRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJ3tAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucG9ydGFuZGZsb3dzLmludGVybmFsLmltcGwuRnVsbFBvcnRJbXBsIDxlbT5GdWxsIFBvcnQ8L2VtPn0nIGNsYXNzLg0KKwkJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucG9ydGFuZGZsb3dzLmludGVybmFsLmltcGwuRnVsbFBvcnRJbXBsDQorCQkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5wb3J0YW5kZmxvd3MuaW50ZXJuYWwuaW1wbC5Qb3J0YW5kZmxvd3NQYWNrYWdlSW1wbCNnZXRGdWxsUG9ydCgpDQorCQkgKiBAZ2VuZXJhdGVkDQorCQkgKi8NCisJCUVDbGFzcyBGVUxMX1BPUlQgPSBlSU5TVEFOQ0UuZ2V0RnVsbFBvcnQoKTsNCisNCisJCS8qKg0KKwkJICogVGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPGVtPjxiPkJhc2UgUG9ydDwvYj48L2VtPicgcmVmZXJlbmNlIGZlYXR1cmUuDQorCQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCQkgKiBAZ2VuZXJhdGVkDQorCQkgKi8NCisJCUVSZWZlcmVuY2UgRlVMTF9QT1JUX19CQVNFX1BPUlQgPSBlSU5TVEFOQ0UuZ2V0RnVsbFBvcnRfQmFzZV9Qb3J0KCk7DQorDQorCQkvKioNCisJCSAqIFRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJ3tAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucG9ydGFuZGZsb3dzLmludGVybmFsLmltcGwuSW50ZXJmYWNlQmxvY2tJbXBsIDxlbT5JbnRlcmZhY2UgQmxvY2s8L2VtPn0nIGNsYXNzLg0KKwkJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucG9ydGFuZGZsb3dzLmludGVybmFsLmltcGwuSW50ZXJmYWNlQmxvY2tJbXBsDQorCQkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5wb3J0YW5kZmxvd3MuaW50ZXJuYWwuaW1wbC5Qb3J0YW5kZmxvd3NQYWNrYWdlSW1wbCNnZXRJbnRlcmZhY2VCbG9jaygpDQorCQkgKiBAZ2VuZXJhdGVkDQorCQkgKi8NCisJCUVDbGFzcyBJTlRFUkZBQ0VfQkxPQ0sgPSBlSU5TVEFOQ0UuZ2V0SW50ZXJmYWNlQmxvY2soKTsNCisNCisJCS8qKg0KKwkJICogVGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAne0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5wb3J0YW5kZmxvd3MuaW50ZXJuYWwuaW1wbC5Qcm94eVBvcnRJbXBsIDxlbT5Qcm94eSBQb3J0PC9lbT59JyBjbGFzcy4NCisJCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJCSAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnBvcnRhbmRmbG93cy5pbnRlcm5hbC5pbXBsLlByb3h5UG9ydEltcGwNCisJCSAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnBvcnRhbmRmbG93cy5pbnRlcm5hbC5pbXBsLlBvcnRhbmRmbG93c1BhY2thZ2VJbXBsI2dldFByb3h5UG9ydCgpDQorCQkgKiBAZ2VuZXJhdGVkDQorCQkgKi8NCisJCUVDbGFzcyBQUk9YWV9QT1JUID0gZUlOU1RBTkNFLmdldFByb3h5UG9ydCgpOw0KKw0KKwkJLyoqDQorCQkgKiBUaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8ZW0+PGI+QmFzZSBQb3J0PC9iPjwvZW0+JyByZWZlcmVuY2UgZmVhdHVyZS4NCisJCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJCSAqIEBnZW5lcmF0ZWQNCisJCSAqLw0KKwkJRVJlZmVyZW5jZSBQUk9YWV9QT1JUX19CQVNFX1BPUlQgPSBlSU5TVEFOQ0UuZ2V0UHJveHlQb3J0X0Jhc2VfUG9ydCgpOw0KKw0KKwkJLyoqDQorCQkgKiBUaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICd7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnBvcnRhbmRmbG93cy5pbnRlcm5hbC5pbXBsLkFjY2VwdENoYW5nZVN0cnVjdHVyYWxGZWF0dXJlRXZlbnRBY3Rpb25JbXBsIDxlbT5BY2NlcHQgQ2hhbmdlIFN0cnVjdHVyYWwgRmVhdHVyZSBFdmVudCBBY3Rpb248L2VtPn0nIGNsYXNzLg0KKwkJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucG9ydGFuZGZsb3dzLmludGVybmFsLmltcGwuQWNjZXB0Q2hhbmdlU3RydWN0dXJhbEZlYXR1cmVFdmVudEFjdGlvbkltcGwNCisJCSAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnBvcnRhbmRmbG93cy5pbnRlcm5hbC5pbXBsLlBvcnRhbmRmbG93c1BhY2thZ2VJbXBsI2dldEFjY2VwdENoYW5nZVN0cnVjdHVyYWxGZWF0dXJlRXZlbnRBY3Rpb24oKQ0KKwkJICogQGdlbmVyYXRlZA0KKwkJICovDQorCQlFQ2xhc3MgQUNDRVBUX0NIQU5HRV9TVFJVQ1RVUkFMX0ZFQVRVUkVfRVZFTlRfQUNUSU9OID0gZUlOU1RBTkNFLmdldEFjY2VwdENoYW5nZVN0cnVjdHVyYWxGZWF0dXJlRXZlbnRBY3Rpb24oKTsNCisNCisJCS8qKg0KKwkJICogVGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPGVtPjxiPkJhc2UgQWNjZXB0IEV2ZW50IEFjdGlvbjwvYj48L2VtPicgcmVmZXJlbmNlIGZlYXR1cmUuDQorCQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCQkgKiBAZ2VuZXJhdGVkDQorCQkgKi8NCisJCUVSZWZlcmVuY2UgQUNDRVBUX0NIQU5HRV9TVFJVQ1RVUkFMX0ZFQVRVUkVfRVZFTlRfQUNUSU9OX19CQVNFX0FDQ0VQVF9FVkVOVF9BQ1RJT04gPSBlSU5TVEFOQ0UuZ2V0QWNjZXB0Q2hhbmdlU3RydWN0dXJhbEZlYXR1cmVFdmVudEFjdGlvbl9CYXNlX0FjY2VwdEV2ZW50QWN0aW9uKCk7DQorDQorCQkvKioNCisJCSAqIFRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJ3tAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucG9ydGFuZGZsb3dzLmludGVybmFsLmltcGwuQ2hhbmdlU3RydWN0dXJhbEZlYXR1cmVFdmVudEltcGwgPGVtPkNoYW5nZSBTdHJ1Y3R1cmFsIEZlYXR1cmUgRXZlbnQ8L2VtPn0nIGNsYXNzLg0KKwkJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucG9ydGFuZGZsb3dzLmludGVybmFsLmltcGwuQ2hhbmdlU3RydWN0dXJhbEZlYXR1cmVFdmVudEltcGwNCisJCSAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnBvcnRhbmRmbG93cy5pbnRlcm5hbC5pbXBsLlBvcnRhbmRmbG93c1BhY2thZ2VJbXBsI2dldENoYW5nZVN0cnVjdHVyYWxGZWF0dXJlRXZlbnQoKQ0KKwkJICogQGdlbmVyYXRlZA0KKwkJICovDQorCQlFQ2xhc3MgQ0hBTkdFX1NUUlVDVFVSQUxfRkVBVFVSRV9FVkVOVCA9IGVJTlNUQU5DRS5nZXRDaGFuZ2VTdHJ1Y3R1cmFsRmVhdHVyZUV2ZW50KCk7DQorDQorCQkvKioNCisJCSAqIFRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxlbT48Yj5CYXNlIENoYW5nZSBFdmVudDwvYj48L2VtPicgcmVmZXJlbmNlIGZlYXR1cmUuDQorCQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCQkgKiBAZ2VuZXJhdGVkDQorCQkgKi8NCisJCUVSZWZlcmVuY2UgQ0hBTkdFX1NUUlVDVFVSQUxfRkVBVFVSRV9FVkVOVF9fQkFTRV9DSEFOR0VfRVZFTlQgPSBlSU5TVEFOQ0UuZ2V0Q2hhbmdlU3RydWN0dXJhbEZlYXR1cmVFdmVudF9CYXNlX0NoYW5nZUV2ZW50KCk7DQorDQorCQkvKioNCisJCSAqIFRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxlbT48Yj5TdHJ1Y3R1cmFsIEZlYXR1cmU8L2I+PC9lbT4nIHJlZmVyZW5jZSBmZWF0dXJlLg0KKwkJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkJICogQGdlbmVyYXRlZA0KKwkJICovDQorCQlFUmVmZXJlbmNlIENIQU5HRV9TVFJVQ1RVUkFMX0ZFQVRVUkVfRVZFTlRfX1NUUlVDVFVSQUxfRkVBVFVSRSA9IGVJTlNUQU5DRS5nZXRDaGFuZ2VTdHJ1Y3R1cmFsRmVhdHVyZUV2ZW50X1N0cnVjdHVyYWxGZWF0dXJlKCk7DQorDQorCQkvKioNCisJCSAqIFRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJ3tAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucG9ydGFuZGZsb3dzLmludGVybmFsLmltcGwuRGlyZWN0ZWRGZWF0dXJlSW1wbCA8ZW0+RGlyZWN0ZWQgRmVhdHVyZTwvZW0+fScgY2xhc3MuDQorCQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCQkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5wb3J0YW5kZmxvd3MuaW50ZXJuYWwuaW1wbC5EaXJlY3RlZEZlYXR1cmVJbXBsDQorCQkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5wb3J0YW5kZmxvd3MuaW50ZXJuYWwuaW1wbC5Qb3J0YW5kZmxvd3NQYWNrYWdlSW1wbCNnZXREaXJlY3RlZEZlYXR1cmUoKQ0KKwkJICogQGdlbmVyYXRlZA0KKwkJICovDQorCQlFQ2xhc3MgRElSRUNURURfRkVBVFVSRSA9IGVJTlNUQU5DRS5nZXREaXJlY3RlZEZlYXR1cmUoKTsNCisNCisJCS8qKg0KKwkJICogVGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPGVtPjxiPkJhc2UgRmVhdHVyZTwvYj48L2VtPicgcmVmZXJlbmNlIGZlYXR1cmUuDQorCQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCQkgKiBAZ2VuZXJhdGVkDQorCQkgKi8NCisJCUVSZWZlcmVuY2UgRElSRUNURURfRkVBVFVSRV9fQkFTRV9GRUFUVVJFID0gZUlOU1RBTkNFLmdldERpcmVjdGVkRmVhdHVyZV9CYXNlX0ZlYXR1cmUoKTsNCisNCisJCS8qKg0KKwkJICogVGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPGVtPjxiPkZlYXR1cmUgRGlyZWN0aW9uPC9iPjwvZW0+JyBhdHRyaWJ1dGUgZmVhdHVyZS4NCisJCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJCSAqIEBnZW5lcmF0ZWQNCisJCSAqLw0KKwkJRUF0dHJpYnV0ZSBESVJFQ1RFRF9GRUFUVVJFX19GRUFUVVJFX0RJUkVDVElPTiA9IGVJTlNUQU5DRS5nZXREaXJlY3RlZEZlYXR1cmVfRmVhdHVyZURpcmVjdGlvbigpOw0KKw0KKwkJLyoqDQorCQkgKiBUaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICd7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnBvcnRhbmRmbG93cy5pbnRlcm5hbC5pbXBsLkludm9jYXRpb25Pbk5lc3RlZFBvcnRBY3Rpb25JbXBsIDxlbT5JbnZvY2F0aW9uIE9uIE5lc3RlZCBQb3J0IEFjdGlvbjwvZW0+fScgY2xhc3MuDQorCQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCQkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5wb3J0YW5kZmxvd3MuaW50ZXJuYWwuaW1wbC5JbnZvY2F0aW9uT25OZXN0ZWRQb3J0QWN0aW9uSW1wbA0KKwkJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucG9ydGFuZGZsb3dzLmludGVybmFsLmltcGwuUG9ydGFuZGZsb3dzUGFja2FnZUltcGwjZ2V0SW52b2NhdGlvbk9uTmVzdGVkUG9ydEFjdGlvbigpDQorCQkgKiBAZ2VuZXJhdGVkDQorCQkgKi8NCisJCUVDbGFzcyBJTlZPQ0FUSU9OX09OX05FU1RFRF9QT1JUX0FDVElPTiA9IGVJTlNUQU5DRS5nZXRJbnZvY2F0aW9uT25OZXN0ZWRQb3J0QWN0aW9uKCk7DQorDQorCQkvKioNCisJCSAqIFRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxlbT48Yj5CYXNlIEludm9jYXRpb24gQWN0aW9uPC9iPjwvZW0+JyByZWZlcmVuY2UgZmVhdHVyZS4NCisJCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJCSAqIEBnZW5lcmF0ZWQNCisJCSAqLw0KKwkJRVJlZmVyZW5jZSBJTlZPQ0FUSU9OX09OX05FU1RFRF9QT1JUX0FDVElPTl9fQkFTRV9JTlZPQ0FUSU9OX0FDVElPTiA9IGVJTlNUQU5DRS5nZXRJbnZvY2F0aW9uT25OZXN0ZWRQb3J0QWN0aW9uX0Jhc2VfSW52b2NhdGlvbkFjdGlvbigpOw0KKw0KKwkJLyoqDQorCQkgKiBUaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8ZW0+PGI+T24gTmVzdGVkIFBvcnQ8L2I+PC9lbT4nIHJlZmVyZW5jZSBsaXN0IGZlYXR1cmUuDQorCQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCQkgKiBAZ2VuZXJhdGVkDQorCQkgKi8NCisJCUVSZWZlcmVuY2UgSU5WT0NBVElPTl9PTl9ORVNURURfUE9SVF9BQ1RJT05fX09OX05FU1RFRF9QT1JUID0gZUlOU1RBTkNFLmdldEludm9jYXRpb25Pbk5lc3RlZFBvcnRBY3Rpb25fT25OZXN0ZWRQb3J0KCk7DQorDQorCQkvKioNCisJCSAqIFRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJ3tAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucG9ydGFuZGZsb3dzLmludGVybmFsLmltcGwuVHJpZ2dlck9uTmVzdGVkUG9ydEltcGwgPGVtPlRyaWdnZXIgT24gTmVzdGVkIFBvcnQ8L2VtPn0nIGNsYXNzLg0KKwkJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucG9ydGFuZGZsb3dzLmludGVybmFsLmltcGwuVHJpZ2dlck9uTmVzdGVkUG9ydEltcGwNCisJCSAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnBvcnRhbmRmbG93cy5pbnRlcm5hbC5pbXBsLlBvcnRhbmRmbG93c1BhY2thZ2VJbXBsI2dldFRyaWdnZXJPbk5lc3RlZFBvcnQoKQ0KKwkJICogQGdlbmVyYXRlZA0KKwkJICovDQorCQlFQ2xhc3MgVFJJR0dFUl9PTl9ORVNURURfUE9SVCA9IGVJTlNUQU5DRS5nZXRUcmlnZ2VyT25OZXN0ZWRQb3J0KCk7DQorDQorCQkvKioNCisJCSAqIFRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxlbT48Yj5CYXNlIFRyaWdnZXI8L2I+PC9lbT4nIHJlZmVyZW5jZSBmZWF0dXJlLg0KKwkJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkJICogQGdlbmVyYXRlZA0KKwkJICovDQorCQlFUmVmZXJlbmNlIFRSSUdHRVJfT05fTkVTVEVEX1BPUlRfX0JBU0VfVFJJR0dFUiA9IGVJTlNUQU5DRS5nZXRUcmlnZ2VyT25OZXN0ZWRQb3J0X0Jhc2VfVHJpZ2dlcigpOw0KKw0KKwkJLyoqDQorCQkgKiBUaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8ZW0+PGI+T24gTmVzdGVkIFBvcnQ8L2I+PC9lbT4nIHJlZmVyZW5jZSBsaXN0IGZlYXR1cmUuDQorCQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCQkgKiBAZ2VuZXJhdGVkDQorCQkgKi8NCisJCUVSZWZlcmVuY2UgVFJJR0dFUl9PTl9ORVNURURfUE9SVF9fT05fTkVTVEVEX1BPUlQgPSBlSU5TVEFOQ0UuZ2V0VHJpZ2dlck9uTmVzdGVkUG9ydF9Pbk5lc3RlZFBvcnQoKTsNCisNCisJCS8qKg0KKwkJICogVGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAne0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5wb3J0YW5kZmxvd3MuRmxvd0RpcmVjdGlvbiA8ZW0+RmxvdyBEaXJlY3Rpb248L2VtPn0nIGVudW0uDQorCQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCQkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5wb3J0YW5kZmxvd3MuRmxvd0RpcmVjdGlvbg0KKwkJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucG9ydGFuZGZsb3dzLmludGVybmFsLmltcGwuUG9ydGFuZGZsb3dzUGFja2FnZUltcGwjZ2V0Rmxvd0RpcmVjdGlvbigpDQorCQkgKiBAZ2VuZXJhdGVkDQorCQkgKi8NCisJCUVFbnVtIEZMT1dfRElSRUNUSU9OID0gZUlOU1RBTkNFLmdldEZsb3dEaXJlY3Rpb24oKTsNCisNCisJCS8qKg0KKwkJICogVGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAne0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5wb3J0YW5kZmxvd3MuRmVhdHVyZURpcmVjdGlvbiA8ZW0+RmVhdHVyZSBEaXJlY3Rpb248L2VtPn0nIGVudW0uDQorCQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCQkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5wb3J0YW5kZmxvd3MuRmVhdHVyZURpcmVjdGlvbg0KKwkJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucG9ydGFuZGZsb3dzLmludGVybmFsLmltcGwuUG9ydGFuZGZsb3dzUGFja2FnZUltcGwjZ2V0RmVhdHVyZURpcmVjdGlvbigpDQorCQkgKiBAZ2VuZXJhdGVkDQorCQkgKi8NCisJCUVFbnVtIEZFQVRVUkVfRElSRUNUSU9OID0gZUlOU1RBTkNFLmdldEZlYXR1cmVEaXJlY3Rpb24oKTsNCisNCisJfQ0KKw0KK30gLy9Qb3J0YW5kZmxvd3NQYWNrYWdlDQpkaWZmIC0tZ2l0IGEvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvcG9ydGFuZGZsb3dzL1Byb3h5UG9ydC5qYXZhIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvcG9ydGFuZGZsb3dzL1Byb3h5UG9ydC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIxMzAyZDQKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9wb3J0YW5kZmxvd3MvUHJveHlQb3J0LmphdmEKQEAgLTAsMCArMSw1OCBAQAorLyoqDQorICogQ29weXJpZ2h0IChjKSAyMDE1IENFQSBMSVNULg0KKyAqIA0KKyAqICBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQorICogIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KKyAqICB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KKyAqICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqLw0KK3BhY2thZ2Ugb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnBvcnRhbmRmbG93czsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVPYmplY3Q7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLnVtbDIudW1sLlBvcnQ7DQorDQorLyoqDQorICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisgKiBBIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBtb2RlbCBvYmplY3QgJzxlbT48Yj5Qcm94eSBQb3J0PC9iPjwvZW0+Jy4NCisgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisgKg0KKyAqIDxwPg0KKyAqIFRoZSBmb2xsb3dpbmcgZmVhdHVyZXMgYXJlIHN1cHBvcnRlZDoNCisgKiA8dWw+DQorICogICA8bGk+e0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5wb3J0YW5kZmxvd3MuUHJveHlQb3J0I2dldEJhc2VfUG9ydCA8ZW0+QmFzZSBQb3J0PC9lbT59PC9saT4NCisgKiA8L3VsPg0KKyAqIDwvcD4NCisgKg0KKyAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnBvcnRhbmRmbG93cy5Qb3J0YW5kZmxvd3NQYWNrYWdlI2dldFByb3h5UG9ydCgpDQorICogQG1vZGVsDQorICogQGdlbmVyYXRlZA0KKyAqLw0KK3B1YmxpYyBpbnRlcmZhY2UgUHJveHlQb3J0IGV4dGVuZHMgRU9iamVjdCB7DQorCS8qKg0KKwkgKiBSZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT48Yj5CYXNlIFBvcnQ8L2I+PC9lbT4nIHJlZmVyZW5jZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPHA+DQorCSAqIElmIHRoZSBtZWFuaW5nIG9mIHRoZSAnPGVtPkJhc2UgUG9ydDwvZW0+JyByZWZlcmVuY2UgaXNuJ3QgY2xlYXIsDQorCSAqIHRoZXJlIHJlYWxseSBzaG91bGQgYmUgbW9yZSBvZiBhIGRlc2NyaXB0aW9uIGhlcmUuLi4NCisJICogPC9wPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHJldHVybiB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+QmFzZSBQb3J0PC9lbT4nIHJlZmVyZW5jZS4NCisJICogQHNlZSAjc2V0QmFzZV9Qb3J0KFBvcnQpDQorCSAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnBvcnRhbmRmbG93cy5Qb3J0YW5kZmxvd3NQYWNrYWdlI2dldFByb3h5UG9ydF9CYXNlX1BvcnQoKQ0KKwkgKiBAbW9kZWwgb3JkZXJlZD0iZmFsc2UiDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCVBvcnQgZ2V0QmFzZV9Qb3J0KCk7DQorDQorCS8qKg0KKwkgKiBTZXRzIHRoZSB2YWx1ZSBvZiB0aGUgJ3tAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucG9ydGFuZGZsb3dzLlByb3h5UG9ydCNnZXRCYXNlX1BvcnQgPGVtPkJhc2UgUG9ydDwvZW0+fScgcmVmZXJlbmNlLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHBhcmFtIHZhbHVlIHRoZSBuZXcgdmFsdWUgb2YgdGhlICc8ZW0+QmFzZSBQb3J0PC9lbT4nIHJlZmVyZW5jZS4NCisJICogQHNlZSAjZ2V0QmFzZV9Qb3J0KCkNCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJdm9pZCBzZXRCYXNlX1BvcnQoUG9ydCB2YWx1ZSk7DQorDQorfSAvLyBQcm94eVBvcnQNCmRpZmYgLS1naXQgYS9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9wb3J0YW5kZmxvd3MvVHJpZ2dlck9uTmVzdGVkUG9ydC5qYXZhIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvcG9ydGFuZGZsb3dzL1RyaWdnZXJPbk5lc3RlZFBvcnQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYjViNWNiCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvcG9ydGFuZGZsb3dzL1RyaWdnZXJPbk5lc3RlZFBvcnQuamF2YQpAQCAtMCwwICsxLDEwNCBAQAorLyoqDQorICogQ29weXJpZ2h0IChjKSAyMDE1IENFQSBMSVNULg0KKyAqIA0KKyAqICBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQorICogIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KKyAqICB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KKyAqICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqLw0KK3BhY2thZ2Ugb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnBvcnRhbmRmbG93czsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi51dGlsLkVMaXN0Ow0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYmxvY2tzLkVsZW1lbnRQcm9wZXJ0eVBhdGg7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLnVtbDIudW1sLlBvcnQ7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnVtbDIudW1sLlRyaWdnZXI7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnVtbDIudW1sLlR5cGU7DQorDQorLyoqDQorICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisgKiBBIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBtb2RlbCBvYmplY3QgJzxlbT48Yj5UcmlnZ2VyIE9uIE5lc3RlZCBQb3J0PC9iPjwvZW0+Jy4NCisgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisgKg0KKyAqIDxwPg0KKyAqIFRoZSBmb2xsb3dpbmcgZmVhdHVyZXMgYXJlIHN1cHBvcnRlZDoNCisgKiA8dWw+DQorICogICA8bGk+e0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5wb3J0YW5kZmxvd3MuVHJpZ2dlck9uTmVzdGVkUG9ydCNnZXRCYXNlX1RyaWdnZXIgPGVtPkJhc2UgVHJpZ2dlcjwvZW0+fTwvbGk+DQorICogICA8bGk+e0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5wb3J0YW5kZmxvd3MuVHJpZ2dlck9uTmVzdGVkUG9ydCNnZXRPbk5lc3RlZFBvcnQgPGVtPk9uIE5lc3RlZCBQb3J0PC9lbT59PC9saT4NCisgKiA8L3VsPg0KKyAqIDwvcD4NCisgKg0KKyAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnBvcnRhbmRmbG93cy5Qb3J0YW5kZmxvd3NQYWNrYWdlI2dldFRyaWdnZXJPbk5lc3RlZFBvcnQoKQ0KKyAqIEBtb2RlbA0KKyAqIEBnZW5lcmF0ZWQNCisgKi8NCitwdWJsaWMgaW50ZXJmYWNlIFRyaWdnZXJPbk5lc3RlZFBvcnQgZXh0ZW5kcyBFbGVtZW50UHJvcGVydHlQYXRoIHsNCisJLyoqDQorCSAqIFJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSAnPGVtPjxiPkJhc2UgVHJpZ2dlcjwvYj48L2VtPicgcmVmZXJlbmNlLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8cD4NCisJICogSWYgdGhlIG1lYW5pbmcgb2YgdGhlICc8ZW0+QmFzZSBUcmlnZ2VyPC9lbT4nIHJlZmVyZW5jZSBpc24ndCBjbGVhciwNCisJICogdGhlcmUgcmVhbGx5IHNob3VsZCBiZSBtb3JlIG9mIGEgZGVzY3JpcHRpb24gaGVyZS4uLg0KKwkgKiA8L3A+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAcmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT5CYXNlIFRyaWdnZXI8L2VtPicgcmVmZXJlbmNlLg0KKwkgKiBAc2VlICNzZXRCYXNlX1RyaWdnZXIoVHJpZ2dlcikNCisJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucG9ydGFuZGZsb3dzLlBvcnRhbmRmbG93c1BhY2thZ2UjZ2V0VHJpZ2dlck9uTmVzdGVkUG9ydF9CYXNlX1RyaWdnZXIoKQ0KKwkgKiBAbW9kZWwgcmVxdWlyZWQ9InRydWUiIG9yZGVyZWQ9ImZhbHNlIg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlUcmlnZ2VyIGdldEJhc2VfVHJpZ2dlcigpOw0KKw0KKwkvKioNCisJICogU2V0cyB0aGUgdmFsdWUgb2YgdGhlICd7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnBvcnRhbmRmbG93cy5UcmlnZ2VyT25OZXN0ZWRQb3J0I2dldEJhc2VfVHJpZ2dlciA8ZW0+QmFzZSBUcmlnZ2VyPC9lbT59JyByZWZlcmVuY2UuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAcGFyYW0gdmFsdWUgdGhlIG5ldyB2YWx1ZSBvZiB0aGUgJzxlbT5CYXNlIFRyaWdnZXI8L2VtPicgcmVmZXJlbmNlLg0KKwkgKiBAc2VlICNnZXRCYXNlX1RyaWdnZXIoKQ0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwl2b2lkIHNldEJhc2VfVHJpZ2dlcihUcmlnZ2VyIHZhbHVlKTsNCisNCisJLyoqDQorCSAqIFJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSAnPGVtPjxiPk9uIE5lc3RlZCBQb3J0PC9iPjwvZW0+JyByZWZlcmVuY2UgbGlzdC4NCisJICogVGhlIGxpc3QgY29udGVudHMgYXJlIG9mIHR5cGUge0BsaW5rIG9yZy5lY2xpcHNlLnVtbDIudW1sLlBvcnR9Lg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8cD4NCisJICogSWYgdGhlIG1lYW5pbmcgb2YgdGhlICc8ZW0+T24gTmVzdGVkIFBvcnQ8L2VtPicgcmVmZXJlbmNlIGxpc3QgaXNuJ3QgY2xlYXIsDQorCSAqIHRoZXJlIHJlYWxseSBzaG91bGQgYmUgbW9yZSBvZiBhIGRlc2NyaXB0aW9uIGhlcmUuLi4NCisJICogPC9wPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHJldHVybiB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+T24gTmVzdGVkIFBvcnQ8L2VtPicgcmVmZXJlbmNlIGxpc3QuDQorCSAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnBvcnRhbmRmbG93cy5Qb3J0YW5kZmxvd3NQYWNrYWdlI2dldFRyaWdnZXJPbk5lc3RlZFBvcnRfT25OZXN0ZWRQb3J0KCkNCisJICogQG1vZGVsIHJlcXVpcmVkPSJ0cnVlIg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlFTGlzdDxQb3J0PiBnZXRPbk5lc3RlZFBvcnQoKTsNCisNCisJLyoqDQorCSAqIFJldHJpZXZlcyB0aGUgZmlyc3Qge0BsaW5rIG9yZy5lY2xpcHNlLnVtbDIudW1sLlBvcnR9IHdpdGggdGhlIHNwZWNpZmllZCAnPGVtPjxiPk5hbWU8L2I+PC9lbT4nLCBhbmQgJzxlbT48Yj5UeXBlPC9iPjwvZW0+JyBmcm9tIHRoZSAnPGVtPjxiPk9uIE5lc3RlZCBQb3J0PC9iPjwvZW0+JyByZWZlcmVuY2UgbGlzdC4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBwYXJhbSBuYW1lIFRoZSAnPGVtPjxiPk5hbWU8L2I+PC9lbT4nIG9mIHRoZSB7QGxpbmsgb3JnLmVjbGlwc2UudW1sMi51bWwuUG9ydH0gdG8gcmV0cmlldmUsIG9yIDxjb2RlPm51bGw8L2NvZGU+Lg0KKwkgKiBAcGFyYW0gdHlwZSBUaGUgJzxlbT48Yj5UeXBlPC9iPjwvZW0+JyBvZiB0aGUge0BsaW5rIG9yZy5lY2xpcHNlLnVtbDIudW1sLlBvcnR9IHRvIHJldHJpZXZlLCBvciA8Y29kZT5udWxsPC9jb2RlPi4NCisJICogQHJldHVybiBUaGUgZmlyc3Qge0BsaW5rIG9yZy5lY2xpcHNlLnVtbDIudW1sLlBvcnR9IHdpdGggdGhlIHNwZWNpZmllZCAnPGVtPjxiPk5hbWU8L2I+PC9lbT4nLCBhbmQgJzxlbT48Yj5UeXBlPC9iPjwvZW0+Jywgb3IgPGNvZGU+bnVsbDwvY29kZT4uDQorCSAqIEBzZWUgI2dldE9uTmVzdGVkUG9ydCgpDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCVBvcnQgZ2V0T25OZXN0ZWRQb3J0KFN0cmluZyBuYW1lLCBUeXBlIHR5cGUpOw0KKw0KKwkvKioNCisJICogUmV0cmlldmVzIHRoZSBmaXJzdCB7QGxpbmsgb3JnLmVjbGlwc2UudW1sMi51bWwuUG9ydH0gd2l0aCB0aGUgc3BlY2lmaWVkICc8ZW0+PGI+TmFtZTwvYj48L2VtPicsIGFuZCAnPGVtPjxiPlR5cGU8L2I+PC9lbT4nIGZyb20gdGhlICc8ZW0+PGI+T24gTmVzdGVkIFBvcnQ8L2I+PC9lbT4nIHJlZmVyZW5jZSBsaXN0Lg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHBhcmFtIG5hbWUgVGhlICc8ZW0+PGI+TmFtZTwvYj48L2VtPicgb2YgdGhlIHtAbGluayBvcmcuZWNsaXBzZS51bWwyLnVtbC5Qb3J0fSB0byByZXRyaWV2ZSwgb3IgPGNvZGU+bnVsbDwvY29kZT4uDQorCSAqIEBwYXJhbSB0eXBlIFRoZSAnPGVtPjxiPlR5cGU8L2I+PC9lbT4nIG9mIHRoZSB7QGxpbmsgb3JnLmVjbGlwc2UudW1sMi51bWwuUG9ydH0gdG8gcmV0cmlldmUsIG9yIDxjb2RlPm51bGw8L2NvZGU+Lg0KKwkgKiBAcGFyYW0gaWdub3JlQ2FzZSBXaGV0aGVyIHRvIGlnbm9yZSBjYXNlIGluIHtAbGluayBqYXZhLmxhbmcuU3RyaW5nfSBjb21wYXJpc29ucy4NCisJICogQHJldHVybiBUaGUgZmlyc3Qge0BsaW5rIG9yZy5lY2xpcHNlLnVtbDIudW1sLlBvcnR9IHdpdGggdGhlIHNwZWNpZmllZCAnPGVtPjxiPk5hbWU8L2I+PC9lbT4nLCBhbmQgJzxlbT48Yj5UeXBlPC9iPjwvZW0+Jywgb3IgPGNvZGU+bnVsbDwvY29kZT4uDQorCSAqIEBzZWUgI2dldE9uTmVzdGVkUG9ydCgpDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCVBvcnQgZ2V0T25OZXN0ZWRQb3J0KFN0cmluZyBuYW1lLCBUeXBlIHR5cGUsIGJvb2xlYW4gaWdub3JlQ2FzZSk7DQorDQorfSAvLyBUcmlnZ2VyT25OZXN0ZWRQb3J0DQpkaWZmIC0tZ2l0IGEvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvcG9ydGFuZGZsb3dzL2ludGVybmFsL2ltcGwvQWNjZXB0Q2hhbmdlU3RydWN0dXJhbEZlYXR1cmVFdmVudEFjdGlvbkltcGwuamF2YSBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L3BvcnRhbmRmbG93cy9pbnRlcm5hbC9pbXBsL0FjY2VwdENoYW5nZVN0cnVjdHVyYWxGZWF0dXJlRXZlbnRBY3Rpb25JbXBsLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYThlZTA1YwotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L3BvcnRhbmRmbG93cy9pbnRlcm5hbC9pbXBsL0FjY2VwdENoYW5nZVN0cnVjdHVyYWxGZWF0dXJlRXZlbnRBY3Rpb25JbXBsLmphdmEKQEAgLTAsMCArMSwxNjQgQEAKKy8qKg0KKyAqIENvcHlyaWdodCAoYykgMjAxNSBDRUEgTElTVC4NCisgKiANCisgKiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KKyAqICBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCisgKiAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCisgKiAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgKi8NCitwYWNrYWdlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5wb3J0YW5kZmxvd3MuaW50ZXJuYWwuaW1wbDsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi5ub3RpZnkuTm90aWZpY2F0aW9uOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRUNsYXNzOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuSW50ZXJuYWxFT2JqZWN0Ow0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuaW1wbC5FTm90aWZpY2F0aW9uSW1wbDsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLmltcGwuTWluaW1hbEVPYmplY3RJbXBsOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucG9ydGFuZGZsb3dzLkFjY2VwdENoYW5nZVN0cnVjdHVyYWxGZWF0dXJlRXZlbnRBY3Rpb247DQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5wb3J0YW5kZmxvd3MuUG9ydGFuZGZsb3dzUGFja2FnZTsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UudW1sMi51bWwuQWNjZXB0RXZlbnRBY3Rpb247DQorDQorLyoqDQorICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisgKiBBbiBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgbW9kZWwgb2JqZWN0ICc8ZW0+PGI+QWNjZXB0IENoYW5nZSBTdHJ1Y3R1cmFsIEZlYXR1cmUgRXZlbnQgQWN0aW9uPC9iPjwvZW0+Jy4NCisgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisgKiA8cD4NCisgKiBUaGUgZm9sbG93aW5nIGZlYXR1cmVzIGFyZSBpbXBsZW1lbnRlZDoNCisgKiA8dWw+DQorICogICA8bGk+e0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5wb3J0YW5kZmxvd3MuaW50ZXJuYWwuaW1wbC5BY2NlcHRDaGFuZ2VTdHJ1Y3R1cmFsRmVhdHVyZUV2ZW50QWN0aW9uSW1wbCNnZXRCYXNlX0FjY2VwdEV2ZW50QWN0aW9uIDxlbT5CYXNlIEFjY2VwdCBFdmVudCBBY3Rpb248L2VtPn08L2xpPg0KKyAqIDwvdWw+DQorICogPC9wPg0KKyAqDQorICogQGdlbmVyYXRlZA0KKyAqLw0KK3B1YmxpYyBjbGFzcyBBY2NlcHRDaGFuZ2VTdHJ1Y3R1cmFsRmVhdHVyZUV2ZW50QWN0aW9uSW1wbCBleHRlbmRzIE1pbmltYWxFT2JqZWN0SW1wbC5Db250YWluZXIgaW1wbGVtZW50cyBBY2NlcHRDaGFuZ2VTdHJ1Y3R1cmFsRmVhdHVyZUV2ZW50QWN0aW9uIHsNCisJLyoqDQorCSAqIFRoZSBjYWNoZWQgdmFsdWUgb2YgdGhlICd7QGxpbmsgI2dldEJhc2VfQWNjZXB0RXZlbnRBY3Rpb24oKSA8ZW0+QmFzZSBBY2NlcHQgRXZlbnQgQWN0aW9uPC9lbT59JyByZWZlcmVuY2UuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAc2VlICNnZXRCYXNlX0FjY2VwdEV2ZW50QWN0aW9uKCkNCisJICogQGdlbmVyYXRlZA0KKwkgKiBAb3JkZXJlZA0KKwkgKi8NCisJcHJvdGVjdGVkIEFjY2VwdEV2ZW50QWN0aW9uIGJhc2VfQWNjZXB0RXZlbnRBY3Rpb247DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHJvdGVjdGVkIEFjY2VwdENoYW5nZVN0cnVjdHVyYWxGZWF0dXJlRXZlbnRBY3Rpb25JbXBsKCkgew0KKwkJc3VwZXIoKTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwcm90ZWN0ZWQgRUNsYXNzIGVTdGF0aWNDbGFzcygpIHsNCisJCXJldHVybiBQb3J0YW5kZmxvd3NQYWNrYWdlLkxpdGVyYWxzLkFDQ0VQVF9DSEFOR0VfU1RSVUNUVVJBTF9GRUFUVVJFX0VWRU5UX0FDVElPTjsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBBY2NlcHRFdmVudEFjdGlvbiBnZXRCYXNlX0FjY2VwdEV2ZW50QWN0aW9uKCkgew0KKwkJaWYgKGJhc2VfQWNjZXB0RXZlbnRBY3Rpb24gIT0gbnVsbCAmJiBiYXNlX0FjY2VwdEV2ZW50QWN0aW9uLmVJc1Byb3h5KCkpIHsNCisJCQlJbnRlcm5hbEVPYmplY3Qgb2xkQmFzZV9BY2NlcHRFdmVudEFjdGlvbiA9IChJbnRlcm5hbEVPYmplY3QpYmFzZV9BY2NlcHRFdmVudEFjdGlvbjsNCisJCQliYXNlX0FjY2VwdEV2ZW50QWN0aW9uID0gKEFjY2VwdEV2ZW50QWN0aW9uKWVSZXNvbHZlUHJveHkob2xkQmFzZV9BY2NlcHRFdmVudEFjdGlvbik7DQorCQkJaWYgKGJhc2VfQWNjZXB0RXZlbnRBY3Rpb24gIT0gb2xkQmFzZV9BY2NlcHRFdmVudEFjdGlvbikgew0KKwkJCQlpZiAoZU5vdGlmaWNhdGlvblJlcXVpcmVkKCkpDQorCQkJCQllTm90aWZ5KG5ldyBFTm90aWZpY2F0aW9uSW1wbCh0aGlzLCBOb3RpZmljYXRpb24uUkVTT0xWRSwgUG9ydGFuZGZsb3dzUGFja2FnZS5BQ0NFUFRfQ0hBTkdFX1NUUlVDVFVSQUxfRkVBVFVSRV9FVkVOVF9BQ1RJT05fX0JBU0VfQUNDRVBUX0VWRU5UX0FDVElPTiwgb2xkQmFzZV9BY2NlcHRFdmVudEFjdGlvbiwgYmFzZV9BY2NlcHRFdmVudEFjdGlvbikpOw0KKwkJCX0NCisJCX0NCisJCXJldHVybiBiYXNlX0FjY2VwdEV2ZW50QWN0aW9uOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIEFjY2VwdEV2ZW50QWN0aW9uIGJhc2ljR2V0QmFzZV9BY2NlcHRFdmVudEFjdGlvbigpIHsNCisJCXJldHVybiBiYXNlX0FjY2VwdEV2ZW50QWN0aW9uOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIHZvaWQgc2V0QmFzZV9BY2NlcHRFdmVudEFjdGlvbihBY2NlcHRFdmVudEFjdGlvbiBuZXdCYXNlX0FjY2VwdEV2ZW50QWN0aW9uKSB7DQorCQlBY2NlcHRFdmVudEFjdGlvbiBvbGRCYXNlX0FjY2VwdEV2ZW50QWN0aW9uID0gYmFzZV9BY2NlcHRFdmVudEFjdGlvbjsNCisJCWJhc2VfQWNjZXB0RXZlbnRBY3Rpb24gPSBuZXdCYXNlX0FjY2VwdEV2ZW50QWN0aW9uOw0KKwkJaWYgKGVOb3RpZmljYXRpb25SZXF1aXJlZCgpKQ0KKwkJCWVOb3RpZnkobmV3IEVOb3RpZmljYXRpb25JbXBsKHRoaXMsIE5vdGlmaWNhdGlvbi5TRVQsIFBvcnRhbmRmbG93c1BhY2thZ2UuQUNDRVBUX0NIQU5HRV9TVFJVQ1RVUkFMX0ZFQVRVUkVfRVZFTlRfQUNUSU9OX19CQVNFX0FDQ0VQVF9FVkVOVF9BQ1RJT04sIG9sZEJhc2VfQWNjZXB0RXZlbnRBY3Rpb24sIGJhc2VfQWNjZXB0RXZlbnRBY3Rpb24pKTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgT2JqZWN0IGVHZXQoaW50IGZlYXR1cmVJRCwgYm9vbGVhbiByZXNvbHZlLCBib29sZWFuIGNvcmVUeXBlKSB7DQorCQlzd2l0Y2ggKGZlYXR1cmVJRCkgew0KKwkJCWNhc2UgUG9ydGFuZGZsb3dzUGFja2FnZS5BQ0NFUFRfQ0hBTkdFX1NUUlVDVFVSQUxfRkVBVFVSRV9FVkVOVF9BQ1RJT05fX0JBU0VfQUNDRVBUX0VWRU5UX0FDVElPTjoNCisJCQkJaWYgKHJlc29sdmUpIHJldHVybiBnZXRCYXNlX0FjY2VwdEV2ZW50QWN0aW9uKCk7DQorCQkJCXJldHVybiBiYXNpY0dldEJhc2VfQWNjZXB0RXZlbnRBY3Rpb24oKTsNCisJCX0NCisJCXJldHVybiBzdXBlci5lR2V0KGZlYXR1cmVJRCwgcmVzb2x2ZSwgY29yZVR5cGUpOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXB1YmxpYyB2b2lkIGVTZXQoaW50IGZlYXR1cmVJRCwgT2JqZWN0IG5ld1ZhbHVlKSB7DQorCQlzd2l0Y2ggKGZlYXR1cmVJRCkgew0KKwkJCWNhc2UgUG9ydGFuZGZsb3dzUGFja2FnZS5BQ0NFUFRfQ0hBTkdFX1NUUlVDVFVSQUxfRkVBVFVSRV9FVkVOVF9BQ1RJT05fX0JBU0VfQUNDRVBUX0VWRU5UX0FDVElPTjoNCisJCQkJc2V0QmFzZV9BY2NlcHRFdmVudEFjdGlvbigoQWNjZXB0RXZlbnRBY3Rpb24pbmV3VmFsdWUpOw0KKwkJCQlyZXR1cm47DQorCQl9DQorCQlzdXBlci5lU2V0KGZlYXR1cmVJRCwgbmV3VmFsdWUpOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXB1YmxpYyB2b2lkIGVVbnNldChpbnQgZmVhdHVyZUlEKSB7DQorCQlzd2l0Y2ggKGZlYXR1cmVJRCkgew0KKwkJCWNhc2UgUG9ydGFuZGZsb3dzUGFja2FnZS5BQ0NFUFRfQ0hBTkdFX1NUUlVDVFVSQUxfRkVBVFVSRV9FVkVOVF9BQ1RJT05fX0JBU0VfQUNDRVBUX0VWRU5UX0FDVElPTjoNCisJCQkJc2V0QmFzZV9BY2NlcHRFdmVudEFjdGlvbigoQWNjZXB0RXZlbnRBY3Rpb24pbnVsbCk7DQorCQkJCXJldHVybjsNCisJCX0NCisJCXN1cGVyLmVVbnNldChmZWF0dXJlSUQpOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXB1YmxpYyBib29sZWFuIGVJc1NldChpbnQgZmVhdHVyZUlEKSB7DQorCQlzd2l0Y2ggKGZlYXR1cmVJRCkgew0KKwkJCWNhc2UgUG9ydGFuZGZsb3dzUGFja2FnZS5BQ0NFUFRfQ0hBTkdFX1NUUlVDVFVSQUxfRkVBVFVSRV9FVkVOVF9BQ1RJT05fX0JBU0VfQUNDRVBUX0VWRU5UX0FDVElPTjoNCisJCQkJcmV0dXJuIGJhc2VfQWNjZXB0RXZlbnRBY3Rpb24gIT0gbnVsbDsNCisJCX0NCisJCXJldHVybiBzdXBlci5lSXNTZXQoZmVhdHVyZUlEKTsNCisJfQ0KKw0KK30gLy9BY2NlcHRDaGFuZ2VTdHJ1Y3R1cmFsRmVhdHVyZUV2ZW50QWN0aW9uSW1wbA0KZGlmZiAtLWdpdCBhL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L3BvcnRhbmRmbG93cy9pbnRlcm5hbC9pbXBsL0NoYW5nZVN0cnVjdHVyYWxGZWF0dXJlRXZlbnRJbXBsLmphdmEgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9wb3J0YW5kZmxvd3MvaW50ZXJuYWwvaW1wbC9DaGFuZ2VTdHJ1Y3R1cmFsRmVhdHVyZUV2ZW50SW1wbC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBlODlhM2QKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9wb3J0YW5kZmxvd3MvaW50ZXJuYWwvaW1wbC9DaGFuZ2VTdHJ1Y3R1cmFsRmVhdHVyZUV2ZW50SW1wbC5qYXZhCkBAIC0wLDAgKzEsMjI1IEBACisvKioNCisgKiBDb3B5cmlnaHQgKGMpIDIwMTUgQ0VBIExJU1QuDQorICogDQorICogIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCisgKiAgYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQorICogIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQorICogIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICovDQorcGFja2FnZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucG9ydGFuZGZsb3dzLmludGVybmFsLmltcGw7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jb21tb24ubm90aWZ5Lk5vdGlmaWNhdGlvbjsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVDbGFzczsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkludGVybmFsRU9iamVjdDsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLmltcGwuRU5vdGlmaWNhdGlvbkltcGw7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5pbXBsLk1pbmltYWxFT2JqZWN0SW1wbDsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnBvcnRhbmRmbG93cy5DaGFuZ2VTdHJ1Y3R1cmFsRmVhdHVyZUV2ZW50Ow0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucG9ydGFuZGZsb3dzLlBvcnRhbmRmbG93c1BhY2thZ2U7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLnVtbDIudW1sLkNoYW5nZUV2ZW50Ow0KK2ltcG9ydCBvcmcuZWNsaXBzZS51bWwyLnVtbC5TdHJ1Y3R1cmFsRmVhdHVyZTsNCisNCisvKioNCisgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKyAqIEFuIGltcGxlbWVudGF0aW9uIG9mIHRoZSBtb2RlbCBvYmplY3QgJzxlbT48Yj5DaGFuZ2UgU3RydWN0dXJhbCBGZWF0dXJlIEV2ZW50PC9iPjwvZW0+Jy4NCisgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisgKiA8cD4NCisgKiBUaGUgZm9sbG93aW5nIGZlYXR1cmVzIGFyZSBpbXBsZW1lbnRlZDoNCisgKiA8dWw+DQorICogICA8bGk+e0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5wb3J0YW5kZmxvd3MuaW50ZXJuYWwuaW1wbC5DaGFuZ2VTdHJ1Y3R1cmFsRmVhdHVyZUV2ZW50SW1wbCNnZXRCYXNlX0NoYW5nZUV2ZW50IDxlbT5CYXNlIENoYW5nZSBFdmVudDwvZW0+fTwvbGk+DQorICogICA8bGk+e0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5wb3J0YW5kZmxvd3MuaW50ZXJuYWwuaW1wbC5DaGFuZ2VTdHJ1Y3R1cmFsRmVhdHVyZUV2ZW50SW1wbCNnZXRTdHJ1Y3R1cmFsRmVhdHVyZSA8ZW0+U3RydWN0dXJhbCBGZWF0dXJlPC9lbT59PC9saT4NCisgKiA8L3VsPg0KKyAqIDwvcD4NCisgKg0KKyAqIEBnZW5lcmF0ZWQNCisgKi8NCitwdWJsaWMgY2xhc3MgQ2hhbmdlU3RydWN0dXJhbEZlYXR1cmVFdmVudEltcGwgZXh0ZW5kcyBNaW5pbWFsRU9iamVjdEltcGwuQ29udGFpbmVyIGltcGxlbWVudHMgQ2hhbmdlU3RydWN0dXJhbEZlYXR1cmVFdmVudCB7DQorCS8qKg0KKwkgKiBUaGUgY2FjaGVkIHZhbHVlIG9mIHRoZSAne0BsaW5rICNnZXRCYXNlX0NoYW5nZUV2ZW50KCkgPGVtPkJhc2UgQ2hhbmdlIEV2ZW50PC9lbT59JyByZWZlcmVuY2UuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAc2VlICNnZXRCYXNlX0NoYW5nZUV2ZW50KCkNCisJICogQGdlbmVyYXRlZA0KKwkgKiBAb3JkZXJlZA0KKwkgKi8NCisJcHJvdGVjdGVkIENoYW5nZUV2ZW50IGJhc2VfQ2hhbmdlRXZlbnQ7DQorDQorCS8qKg0KKwkgKiBUaGUgY2FjaGVkIHZhbHVlIG9mIHRoZSAne0BsaW5rICNnZXRTdHJ1Y3R1cmFsRmVhdHVyZSgpIDxlbT5TdHJ1Y3R1cmFsIEZlYXR1cmU8L2VtPn0nIHJlZmVyZW5jZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBzZWUgI2dldFN0cnVjdHVyYWxGZWF0dXJlKCkNCisJICogQGdlbmVyYXRlZA0KKwkgKiBAb3JkZXJlZA0KKwkgKi8NCisJcHJvdGVjdGVkIFN0cnVjdHVyYWxGZWF0dXJlIHN0cnVjdHVyYWxGZWF0dXJlOw0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXByb3RlY3RlZCBDaGFuZ2VTdHJ1Y3R1cmFsRmVhdHVyZUV2ZW50SW1wbCgpIHsNCisJCXN1cGVyKCk7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHJvdGVjdGVkIEVDbGFzcyBlU3RhdGljQ2xhc3MoKSB7DQorCQlyZXR1cm4gUG9ydGFuZGZsb3dzUGFja2FnZS5MaXRlcmFscy5DSEFOR0VfU1RSVUNUVVJBTF9GRUFUVVJFX0VWRU5UOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIENoYW5nZUV2ZW50IGdldEJhc2VfQ2hhbmdlRXZlbnQoKSB7DQorCQlpZiAoYmFzZV9DaGFuZ2VFdmVudCAhPSBudWxsICYmIGJhc2VfQ2hhbmdlRXZlbnQuZUlzUHJveHkoKSkgew0KKwkJCUludGVybmFsRU9iamVjdCBvbGRCYXNlX0NoYW5nZUV2ZW50ID0gKEludGVybmFsRU9iamVjdCliYXNlX0NoYW5nZUV2ZW50Ow0KKwkJCWJhc2VfQ2hhbmdlRXZlbnQgPSAoQ2hhbmdlRXZlbnQpZVJlc29sdmVQcm94eShvbGRCYXNlX0NoYW5nZUV2ZW50KTsNCisJCQlpZiAoYmFzZV9DaGFuZ2VFdmVudCAhPSBvbGRCYXNlX0NoYW5nZUV2ZW50KSB7DQorCQkJCWlmIChlTm90aWZpY2F0aW9uUmVxdWlyZWQoKSkNCisJCQkJCWVOb3RpZnkobmV3IEVOb3RpZmljYXRpb25JbXBsKHRoaXMsIE5vdGlmaWNhdGlvbi5SRVNPTFZFLCBQb3J0YW5kZmxvd3NQYWNrYWdlLkNIQU5HRV9TVFJVQ1RVUkFMX0ZFQVRVUkVfRVZFTlRfX0JBU0VfQ0hBTkdFX0VWRU5ULCBvbGRCYXNlX0NoYW5nZUV2ZW50LCBiYXNlX0NoYW5nZUV2ZW50KSk7DQorCQkJfQ0KKwkJfQ0KKwkJcmV0dXJuIGJhc2VfQ2hhbmdlRXZlbnQ7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgQ2hhbmdlRXZlbnQgYmFzaWNHZXRCYXNlX0NoYW5nZUV2ZW50KCkgew0KKwkJcmV0dXJuIGJhc2VfQ2hhbmdlRXZlbnQ7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgdm9pZCBzZXRCYXNlX0NoYW5nZUV2ZW50KENoYW5nZUV2ZW50IG5ld0Jhc2VfQ2hhbmdlRXZlbnQpIHsNCisJCUNoYW5nZUV2ZW50IG9sZEJhc2VfQ2hhbmdlRXZlbnQgPSBiYXNlX0NoYW5nZUV2ZW50Ow0KKwkJYmFzZV9DaGFuZ2VFdmVudCA9IG5ld0Jhc2VfQ2hhbmdlRXZlbnQ7DQorCQlpZiAoZU5vdGlmaWNhdGlvblJlcXVpcmVkKCkpDQorCQkJZU5vdGlmeShuZXcgRU5vdGlmaWNhdGlvbkltcGwodGhpcywgTm90aWZpY2F0aW9uLlNFVCwgUG9ydGFuZGZsb3dzUGFja2FnZS5DSEFOR0VfU1RSVUNUVVJBTF9GRUFUVVJFX0VWRU5UX19CQVNFX0NIQU5HRV9FVkVOVCwgb2xkQmFzZV9DaGFuZ2VFdmVudCwgYmFzZV9DaGFuZ2VFdmVudCkpOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIFN0cnVjdHVyYWxGZWF0dXJlIGdldFN0cnVjdHVyYWxGZWF0dXJlKCkgew0KKwkJaWYgKHN0cnVjdHVyYWxGZWF0dXJlICE9IG51bGwgJiYgc3RydWN0dXJhbEZlYXR1cmUuZUlzUHJveHkoKSkgew0KKwkJCUludGVybmFsRU9iamVjdCBvbGRTdHJ1Y3R1cmFsRmVhdHVyZSA9IChJbnRlcm5hbEVPYmplY3Qpc3RydWN0dXJhbEZlYXR1cmU7DQorCQkJc3RydWN0dXJhbEZlYXR1cmUgPSAoU3RydWN0dXJhbEZlYXR1cmUpZVJlc29sdmVQcm94eShvbGRTdHJ1Y3R1cmFsRmVhdHVyZSk7DQorCQkJaWYgKHN0cnVjdHVyYWxGZWF0dXJlICE9IG9sZFN0cnVjdHVyYWxGZWF0dXJlKSB7DQorCQkJCWlmIChlTm90aWZpY2F0aW9uUmVxdWlyZWQoKSkNCisJCQkJCWVOb3RpZnkobmV3IEVOb3RpZmljYXRpb25JbXBsKHRoaXMsIE5vdGlmaWNhdGlvbi5SRVNPTFZFLCBQb3J0YW5kZmxvd3NQYWNrYWdlLkNIQU5HRV9TVFJVQ1RVUkFMX0ZFQVRVUkVfRVZFTlRfX1NUUlVDVFVSQUxfRkVBVFVSRSwgb2xkU3RydWN0dXJhbEZlYXR1cmUsIHN0cnVjdHVyYWxGZWF0dXJlKSk7DQorCQkJfQ0KKwkJfQ0KKwkJcmV0dXJuIHN0cnVjdHVyYWxGZWF0dXJlOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIFN0cnVjdHVyYWxGZWF0dXJlIGJhc2ljR2V0U3RydWN0dXJhbEZlYXR1cmUoKSB7DQorCQlyZXR1cm4gc3RydWN0dXJhbEZlYXR1cmU7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgdm9pZCBzZXRTdHJ1Y3R1cmFsRmVhdHVyZShTdHJ1Y3R1cmFsRmVhdHVyZSBuZXdTdHJ1Y3R1cmFsRmVhdHVyZSkgew0KKwkJU3RydWN0dXJhbEZlYXR1cmUgb2xkU3RydWN0dXJhbEZlYXR1cmUgPSBzdHJ1Y3R1cmFsRmVhdHVyZTsNCisJCXN0cnVjdHVyYWxGZWF0dXJlID0gbmV3U3RydWN0dXJhbEZlYXR1cmU7DQorCQlpZiAoZU5vdGlmaWNhdGlvblJlcXVpcmVkKCkpDQorCQkJZU5vdGlmeShuZXcgRU5vdGlmaWNhdGlvbkltcGwodGhpcywgTm90aWZpY2F0aW9uLlNFVCwgUG9ydGFuZGZsb3dzUGFja2FnZS5DSEFOR0VfU1RSVUNUVVJBTF9GRUFUVVJFX0VWRU5UX19TVFJVQ1RVUkFMX0ZFQVRVUkUsIG9sZFN0cnVjdHVyYWxGZWF0dXJlLCBzdHJ1Y3R1cmFsRmVhdHVyZSkpOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXB1YmxpYyBPYmplY3QgZUdldChpbnQgZmVhdHVyZUlELCBib29sZWFuIHJlc29sdmUsIGJvb2xlYW4gY29yZVR5cGUpIHsNCisJCXN3aXRjaCAoZmVhdHVyZUlEKSB7DQorCQkJY2FzZSBQb3J0YW5kZmxvd3NQYWNrYWdlLkNIQU5HRV9TVFJVQ1RVUkFMX0ZFQVRVUkVfRVZFTlRfX0JBU0VfQ0hBTkdFX0VWRU5UOg0KKwkJCQlpZiAocmVzb2x2ZSkgcmV0dXJuIGdldEJhc2VfQ2hhbmdlRXZlbnQoKTsNCisJCQkJcmV0dXJuIGJhc2ljR2V0QmFzZV9DaGFuZ2VFdmVudCgpOw0KKwkJCWNhc2UgUG9ydGFuZGZsb3dzUGFja2FnZS5DSEFOR0VfU1RSVUNUVVJBTF9GRUFUVVJFX0VWRU5UX19TVFJVQ1RVUkFMX0ZFQVRVUkU6DQorCQkJCWlmIChyZXNvbHZlKSByZXR1cm4gZ2V0U3RydWN0dXJhbEZlYXR1cmUoKTsNCisJCQkJcmV0dXJuIGJhc2ljR2V0U3RydWN0dXJhbEZlYXR1cmUoKTsNCisJCX0NCisJCXJldHVybiBzdXBlci5lR2V0KGZlYXR1cmVJRCwgcmVzb2x2ZSwgY29yZVR5cGUpOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXB1YmxpYyB2b2lkIGVTZXQoaW50IGZlYXR1cmVJRCwgT2JqZWN0IG5ld1ZhbHVlKSB7DQorCQlzd2l0Y2ggKGZlYXR1cmVJRCkgew0KKwkJCWNhc2UgUG9ydGFuZGZsb3dzUGFja2FnZS5DSEFOR0VfU1RSVUNUVVJBTF9GRUFUVVJFX0VWRU5UX19CQVNFX0NIQU5HRV9FVkVOVDoNCisJCQkJc2V0QmFzZV9DaGFuZ2VFdmVudCgoQ2hhbmdlRXZlbnQpbmV3VmFsdWUpOw0KKwkJCQlyZXR1cm47DQorCQkJY2FzZSBQb3J0YW5kZmxvd3NQYWNrYWdlLkNIQU5HRV9TVFJVQ1RVUkFMX0ZFQVRVUkVfRVZFTlRfX1NUUlVDVFVSQUxfRkVBVFVSRToNCisJCQkJc2V0U3RydWN0dXJhbEZlYXR1cmUoKFN0cnVjdHVyYWxGZWF0dXJlKW5ld1ZhbHVlKTsNCisJCQkJcmV0dXJuOw0KKwkJfQ0KKwkJc3VwZXIuZVNldChmZWF0dXJlSUQsIG5ld1ZhbHVlKTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgdm9pZCBlVW5zZXQoaW50IGZlYXR1cmVJRCkgew0KKwkJc3dpdGNoIChmZWF0dXJlSUQpIHsNCisJCQljYXNlIFBvcnRhbmRmbG93c1BhY2thZ2UuQ0hBTkdFX1NUUlVDVFVSQUxfRkVBVFVSRV9FVkVOVF9fQkFTRV9DSEFOR0VfRVZFTlQ6DQorCQkJCXNldEJhc2VfQ2hhbmdlRXZlbnQoKENoYW5nZUV2ZW50KW51bGwpOw0KKwkJCQlyZXR1cm47DQorCQkJY2FzZSBQb3J0YW5kZmxvd3NQYWNrYWdlLkNIQU5HRV9TVFJVQ1RVUkFMX0ZFQVRVUkVfRVZFTlRfX1NUUlVDVFVSQUxfRkVBVFVSRToNCisJCQkJc2V0U3RydWN0dXJhbEZlYXR1cmUoKFN0cnVjdHVyYWxGZWF0dXJlKW51bGwpOw0KKwkJCQlyZXR1cm47DQorCQl9DQorCQlzdXBlci5lVW5zZXQoZmVhdHVyZUlEKTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgYm9vbGVhbiBlSXNTZXQoaW50IGZlYXR1cmVJRCkgew0KKwkJc3dpdGNoIChmZWF0dXJlSUQpIHsNCisJCQljYXNlIFBvcnRhbmRmbG93c1BhY2thZ2UuQ0hBTkdFX1NUUlVDVFVSQUxfRkVBVFVSRV9FVkVOVF9fQkFTRV9DSEFOR0VfRVZFTlQ6DQorCQkJCXJldHVybiBiYXNlX0NoYW5nZUV2ZW50ICE9IG51bGw7DQorCQkJY2FzZSBQb3J0YW5kZmxvd3NQYWNrYWdlLkNIQU5HRV9TVFJVQ1RVUkFMX0ZFQVRVUkVfRVZFTlRfX1NUUlVDVFVSQUxfRkVBVFVSRToNCisJCQkJcmV0dXJuIHN0cnVjdHVyYWxGZWF0dXJlICE9IG51bGw7DQorCQl9DQorCQlyZXR1cm4gc3VwZXIuZUlzU2V0KGZlYXR1cmVJRCk7DQorCX0NCisNCit9IC8vQ2hhbmdlU3RydWN0dXJhbEZlYXR1cmVFdmVudEltcGwNCmRpZmYgLS1naXQgYS9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9wb3J0YW5kZmxvd3MvaW50ZXJuYWwvaW1wbC9EaXJlY3RlZEZlYXR1cmVJbXBsLmphdmEgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9wb3J0YW5kZmxvd3MvaW50ZXJuYWwvaW1wbC9EaXJlY3RlZEZlYXR1cmVJbXBsLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTY0MGMzMgotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L3BvcnRhbmRmbG93cy9pbnRlcm5hbC9pbXBsL0RpcmVjdGVkRmVhdHVyZUltcGwuamF2YQpAQCAtMCwwICsxLDIzMyBAQAorLyoqDQorICogQ29weXJpZ2h0IChjKSAyMDE1IENFQSBMSVNULg0KKyAqIA0KKyAqICBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQorICogIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KKyAqICB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KKyAqICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqLw0KK3BhY2thZ2Ugb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnBvcnRhbmRmbG93cy5pbnRlcm5hbC5pbXBsOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY29tbW9uLm5vdGlmeS5Ob3RpZmljYXRpb247DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FQ2xhc3M7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5JbnRlcm5hbEVPYmplY3Q7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5pbXBsLkVOb3RpZmljYXRpb25JbXBsOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuaW1wbC5NaW5pbWFsRU9iamVjdEltcGw7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5wb3J0YW5kZmxvd3MuRGlyZWN0ZWRGZWF0dXJlOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucG9ydGFuZGZsb3dzLkZlYXR1cmVEaXJlY3Rpb247DQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5wb3J0YW5kZmxvd3MuUG9ydGFuZGZsb3dzUGFja2FnZTsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UudW1sMi51bWwuRmVhdHVyZTsNCisNCisvKioNCisgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKyAqIEFuIGltcGxlbWVudGF0aW9uIG9mIHRoZSBtb2RlbCBvYmplY3QgJzxlbT48Yj5EaXJlY3RlZCBGZWF0dXJlPC9iPjwvZW0+Jy4NCisgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisgKiA8cD4NCisgKiBUaGUgZm9sbG93aW5nIGZlYXR1cmVzIGFyZSBpbXBsZW1lbnRlZDoNCisgKiA8dWw+DQorICogICA8bGk+e0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5wb3J0YW5kZmxvd3MuaW50ZXJuYWwuaW1wbC5EaXJlY3RlZEZlYXR1cmVJbXBsI2dldEJhc2VfRmVhdHVyZSA8ZW0+QmFzZSBGZWF0dXJlPC9lbT59PC9saT4NCisgKiAgIDxsaT57QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnBvcnRhbmRmbG93cy5pbnRlcm5hbC5pbXBsLkRpcmVjdGVkRmVhdHVyZUltcGwjZ2V0RmVhdHVyZURpcmVjdGlvbiA8ZW0+RmVhdHVyZSBEaXJlY3Rpb248L2VtPn08L2xpPg0KKyAqIDwvdWw+DQorICogPC9wPg0KKyAqDQorICogQGdlbmVyYXRlZA0KKyAqLw0KK3B1YmxpYyBjbGFzcyBEaXJlY3RlZEZlYXR1cmVJbXBsIGV4dGVuZHMgTWluaW1hbEVPYmplY3RJbXBsLkNvbnRhaW5lciBpbXBsZW1lbnRzIERpcmVjdGVkRmVhdHVyZSB7DQorCS8qKg0KKwkgKiBUaGUgY2FjaGVkIHZhbHVlIG9mIHRoZSAne0BsaW5rICNnZXRCYXNlX0ZlYXR1cmUoKSA8ZW0+QmFzZSBGZWF0dXJlPC9lbT59JyByZWZlcmVuY2UuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAc2VlICNnZXRCYXNlX0ZlYXR1cmUoKQ0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqIEBvcmRlcmVkDQorCSAqLw0KKwlwcm90ZWN0ZWQgRmVhdHVyZSBiYXNlX0ZlYXR1cmU7DQorDQorCS8qKg0KKwkgKiBUaGUgZGVmYXVsdCB2YWx1ZSBvZiB0aGUgJ3tAbGluayAjZ2V0RmVhdHVyZURpcmVjdGlvbigpIDxlbT5GZWF0dXJlIERpcmVjdGlvbjwvZW0+fScgYXR0cmlidXRlLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHNlZSAjZ2V0RmVhdHVyZURpcmVjdGlvbigpDQorCSAqIEBnZW5lcmF0ZWQNCisJICogQG9yZGVyZWQNCisJICovDQorCXByb3RlY3RlZCBzdGF0aWMgZmluYWwgRmVhdHVyZURpcmVjdGlvbiBGRUFUVVJFX0RJUkVDVElPTl9FREVGQVVMVCA9IEZlYXR1cmVEaXJlY3Rpb24uUFJPVklERUQ7DQorDQorCS8qKg0KKwkgKiBUaGUgY2FjaGVkIHZhbHVlIG9mIHRoZSAne0BsaW5rICNnZXRGZWF0dXJlRGlyZWN0aW9uKCkgPGVtPkZlYXR1cmUgRGlyZWN0aW9uPC9lbT59JyBhdHRyaWJ1dGUuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAc2VlICNnZXRGZWF0dXJlRGlyZWN0aW9uKCkNCisJICogQGdlbmVyYXRlZA0KKwkgKiBAb3JkZXJlZA0KKwkgKi8NCisJcHJvdGVjdGVkIEZlYXR1cmVEaXJlY3Rpb24gZmVhdHVyZURpcmVjdGlvbiA9IEZFQVRVUkVfRElSRUNUSU9OX0VERUZBVUxUOw0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXByb3RlY3RlZCBEaXJlY3RlZEZlYXR1cmVJbXBsKCkgew0KKwkJc3VwZXIoKTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwcm90ZWN0ZWQgRUNsYXNzIGVTdGF0aWNDbGFzcygpIHsNCisJCXJldHVybiBQb3J0YW5kZmxvd3NQYWNrYWdlLkxpdGVyYWxzLkRJUkVDVEVEX0ZFQVRVUkU7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgRmVhdHVyZSBnZXRCYXNlX0ZlYXR1cmUoKSB7DQorCQlpZiAoYmFzZV9GZWF0dXJlICE9IG51bGwgJiYgYmFzZV9GZWF0dXJlLmVJc1Byb3h5KCkpIHsNCisJCQlJbnRlcm5hbEVPYmplY3Qgb2xkQmFzZV9GZWF0dXJlID0gKEludGVybmFsRU9iamVjdCliYXNlX0ZlYXR1cmU7DQorCQkJYmFzZV9GZWF0dXJlID0gKEZlYXR1cmUpZVJlc29sdmVQcm94eShvbGRCYXNlX0ZlYXR1cmUpOw0KKwkJCWlmIChiYXNlX0ZlYXR1cmUgIT0gb2xkQmFzZV9GZWF0dXJlKSB7DQorCQkJCWlmIChlTm90aWZpY2F0aW9uUmVxdWlyZWQoKSkNCisJCQkJCWVOb3RpZnkobmV3IEVOb3RpZmljYXRpb25JbXBsKHRoaXMsIE5vdGlmaWNhdGlvbi5SRVNPTFZFLCBQb3J0YW5kZmxvd3NQYWNrYWdlLkRJUkVDVEVEX0ZFQVRVUkVfX0JBU0VfRkVBVFVSRSwgb2xkQmFzZV9GZWF0dXJlLCBiYXNlX0ZlYXR1cmUpKTsNCisJCQl9DQorCQl9DQorCQlyZXR1cm4gYmFzZV9GZWF0dXJlOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIEZlYXR1cmUgYmFzaWNHZXRCYXNlX0ZlYXR1cmUoKSB7DQorCQlyZXR1cm4gYmFzZV9GZWF0dXJlOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIHZvaWQgc2V0QmFzZV9GZWF0dXJlKEZlYXR1cmUgbmV3QmFzZV9GZWF0dXJlKSB7DQorCQlGZWF0dXJlIG9sZEJhc2VfRmVhdHVyZSA9IGJhc2VfRmVhdHVyZTsNCisJCWJhc2VfRmVhdHVyZSA9IG5ld0Jhc2VfRmVhdHVyZTsNCisJCWlmIChlTm90aWZpY2F0aW9uUmVxdWlyZWQoKSkNCisJCQllTm90aWZ5KG5ldyBFTm90aWZpY2F0aW9uSW1wbCh0aGlzLCBOb3RpZmljYXRpb24uU0VULCBQb3J0YW5kZmxvd3NQYWNrYWdlLkRJUkVDVEVEX0ZFQVRVUkVfX0JBU0VfRkVBVFVSRSwgb2xkQmFzZV9GZWF0dXJlLCBiYXNlX0ZlYXR1cmUpKTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBGZWF0dXJlRGlyZWN0aW9uIGdldEZlYXR1cmVEaXJlY3Rpb24oKSB7DQorCQlyZXR1cm4gZmVhdHVyZURpcmVjdGlvbjsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyB2b2lkIHNldEZlYXR1cmVEaXJlY3Rpb24oRmVhdHVyZURpcmVjdGlvbiBuZXdGZWF0dXJlRGlyZWN0aW9uKSB7DQorCQlGZWF0dXJlRGlyZWN0aW9uIG9sZEZlYXR1cmVEaXJlY3Rpb24gPSBmZWF0dXJlRGlyZWN0aW9uOw0KKwkJZmVhdHVyZURpcmVjdGlvbiA9IG5ld0ZlYXR1cmVEaXJlY3Rpb24gPT0gbnVsbCA/IEZFQVRVUkVfRElSRUNUSU9OX0VERUZBVUxUIDogbmV3RmVhdHVyZURpcmVjdGlvbjsNCisJCWlmIChlTm90aWZpY2F0aW9uUmVxdWlyZWQoKSkNCisJCQllTm90aWZ5KG5ldyBFTm90aWZpY2F0aW9uSW1wbCh0aGlzLCBOb3RpZmljYXRpb24uU0VULCBQb3J0YW5kZmxvd3NQYWNrYWdlLkRJUkVDVEVEX0ZFQVRVUkVfX0ZFQVRVUkVfRElSRUNUSU9OLCBvbGRGZWF0dXJlRGlyZWN0aW9uLCBmZWF0dXJlRGlyZWN0aW9uKSk7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIE9iamVjdCBlR2V0KGludCBmZWF0dXJlSUQsIGJvb2xlYW4gcmVzb2x2ZSwgYm9vbGVhbiBjb3JlVHlwZSkgew0KKwkJc3dpdGNoIChmZWF0dXJlSUQpIHsNCisJCQljYXNlIFBvcnRhbmRmbG93c1BhY2thZ2UuRElSRUNURURfRkVBVFVSRV9fQkFTRV9GRUFUVVJFOg0KKwkJCQlpZiAocmVzb2x2ZSkgcmV0dXJuIGdldEJhc2VfRmVhdHVyZSgpOw0KKwkJCQlyZXR1cm4gYmFzaWNHZXRCYXNlX0ZlYXR1cmUoKTsNCisJCQljYXNlIFBvcnRhbmRmbG93c1BhY2thZ2UuRElSRUNURURfRkVBVFVSRV9fRkVBVFVSRV9ESVJFQ1RJT046DQorCQkJCXJldHVybiBnZXRGZWF0dXJlRGlyZWN0aW9uKCk7DQorCQl9DQorCQlyZXR1cm4gc3VwZXIuZUdldChmZWF0dXJlSUQsIHJlc29sdmUsIGNvcmVUeXBlKTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgdm9pZCBlU2V0KGludCBmZWF0dXJlSUQsIE9iamVjdCBuZXdWYWx1ZSkgew0KKwkJc3dpdGNoIChmZWF0dXJlSUQpIHsNCisJCQljYXNlIFBvcnRhbmRmbG93c1BhY2thZ2UuRElSRUNURURfRkVBVFVSRV9fQkFTRV9GRUFUVVJFOg0KKwkJCQlzZXRCYXNlX0ZlYXR1cmUoKEZlYXR1cmUpbmV3VmFsdWUpOw0KKwkJCQlyZXR1cm47DQorCQkJY2FzZSBQb3J0YW5kZmxvd3NQYWNrYWdlLkRJUkVDVEVEX0ZFQVRVUkVfX0ZFQVRVUkVfRElSRUNUSU9OOg0KKwkJCQlzZXRGZWF0dXJlRGlyZWN0aW9uKChGZWF0dXJlRGlyZWN0aW9uKW5ld1ZhbHVlKTsNCisJCQkJcmV0dXJuOw0KKwkJfQ0KKwkJc3VwZXIuZVNldChmZWF0dXJlSUQsIG5ld1ZhbHVlKTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgdm9pZCBlVW5zZXQoaW50IGZlYXR1cmVJRCkgew0KKwkJc3dpdGNoIChmZWF0dXJlSUQpIHsNCisJCQljYXNlIFBvcnRhbmRmbG93c1BhY2thZ2UuRElSRUNURURfRkVBVFVSRV9fQkFTRV9GRUFUVVJFOg0KKwkJCQlzZXRCYXNlX0ZlYXR1cmUoKEZlYXR1cmUpbnVsbCk7DQorCQkJCXJldHVybjsNCisJCQljYXNlIFBvcnRhbmRmbG93c1BhY2thZ2UuRElSRUNURURfRkVBVFVSRV9fRkVBVFVSRV9ESVJFQ1RJT046DQorCQkJCXNldEZlYXR1cmVEaXJlY3Rpb24oRkVBVFVSRV9ESVJFQ1RJT05fRURFRkFVTFQpOw0KKwkJCQlyZXR1cm47DQorCQl9DQorCQlzdXBlci5lVW5zZXQoZmVhdHVyZUlEKTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgYm9vbGVhbiBlSXNTZXQoaW50IGZlYXR1cmVJRCkgew0KKwkJc3dpdGNoIChmZWF0dXJlSUQpIHsNCisJCQljYXNlIFBvcnRhbmRmbG93c1BhY2thZ2UuRElSRUNURURfRkVBVFVSRV9fQkFTRV9GRUFUVVJFOg0KKwkJCQlyZXR1cm4gYmFzZV9GZWF0dXJlICE9IG51bGw7DQorCQkJY2FzZSBQb3J0YW5kZmxvd3NQYWNrYWdlLkRJUkVDVEVEX0ZFQVRVUkVfX0ZFQVRVUkVfRElSRUNUSU9OOg0KKwkJCQlyZXR1cm4gZmVhdHVyZURpcmVjdGlvbiAhPSBGRUFUVVJFX0RJUkVDVElPTl9FREVGQVVMVDsNCisJCX0NCisJCXJldHVybiBzdXBlci5lSXNTZXQoZmVhdHVyZUlEKTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgU3RyaW5nIHRvU3RyaW5nKCkgew0KKwkJaWYgKGVJc1Byb3h5KCkpIHJldHVybiBzdXBlci50b1N0cmluZygpOw0KKw0KKwkJU3RyaW5nQnVmZmVyIHJlc3VsdCA9IG5ldyBTdHJpbmdCdWZmZXIoc3VwZXIudG9TdHJpbmcoKSk7DQorCQlyZXN1bHQuYXBwZW5kKCIgKGZlYXR1cmVEaXJlY3Rpb246ICIpOyAvLyROT04tTkxTLTEkDQorCQlyZXN1bHQuYXBwZW5kKGZlYXR1cmVEaXJlY3Rpb24pOw0KKwkJcmVzdWx0LmFwcGVuZCgnKScpOw0KKwkJcmV0dXJuIHJlc3VsdC50b1N0cmluZygpOw0KKwl9DQorDQorfSAvL0RpcmVjdGVkRmVhdHVyZUltcGwNCmRpZmYgLS1naXQgYS9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9wb3J0YW5kZmxvd3MvaW50ZXJuYWwvaW1wbC9GbG93UHJvcGVydHlJbXBsLmphdmEgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9wb3J0YW5kZmxvd3MvaW50ZXJuYWwvaW1wbC9GbG93UHJvcGVydHlJbXBsLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDc0OWI0NwotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L3BvcnRhbmRmbG93cy9pbnRlcm5hbC9pbXBsL0Zsb3dQcm9wZXJ0eUltcGwuamF2YQpAQCAtMCwwICsxLDIzMyBAQAorLyoqDQorICogQ29weXJpZ2h0IChjKSAyMDE1IENFQSBMSVNULg0KKyAqIA0KKyAqICBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQorICogIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KKyAqICB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KKyAqICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqLw0KK3BhY2thZ2Ugb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnBvcnRhbmRmbG93cy5pbnRlcm5hbC5pbXBsOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY29tbW9uLm5vdGlmeS5Ob3RpZmljYXRpb247DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FQ2xhc3M7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5JbnRlcm5hbEVPYmplY3Q7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5pbXBsLkVOb3RpZmljYXRpb25JbXBsOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuaW1wbC5NaW5pbWFsRU9iamVjdEltcGw7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5wb3J0YW5kZmxvd3MuRmxvd0RpcmVjdGlvbjsNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnBvcnRhbmRmbG93cy5GbG93UHJvcGVydHk7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5wb3J0YW5kZmxvd3MuUG9ydGFuZGZsb3dzUGFja2FnZTsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UudW1sMi51bWwuUHJvcGVydHk7DQorDQorLyoqDQorICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisgKiBBbiBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgbW9kZWwgb2JqZWN0ICc8ZW0+PGI+RmxvdyBQcm9wZXJ0eTwvYj48L2VtPicuDQorICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorICogPHA+DQorICogVGhlIGZvbGxvd2luZyBmZWF0dXJlcyBhcmUgaW1wbGVtZW50ZWQ6DQorICogPHVsPg0KKyAqICAgPGxpPntAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucG9ydGFuZGZsb3dzLmludGVybmFsLmltcGwuRmxvd1Byb3BlcnR5SW1wbCNnZXRCYXNlX1Byb3BlcnR5IDxlbT5CYXNlIFByb3BlcnR5PC9lbT59PC9saT4NCisgKiAgIDxsaT57QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnBvcnRhbmRmbG93cy5pbnRlcm5hbC5pbXBsLkZsb3dQcm9wZXJ0eUltcGwjZ2V0RGlyZWN0aW9uIDxlbT5EaXJlY3Rpb248L2VtPn08L2xpPg0KKyAqIDwvdWw+DQorICogPC9wPg0KKyAqDQorICogQGdlbmVyYXRlZA0KKyAqLw0KK3B1YmxpYyBjbGFzcyBGbG93UHJvcGVydHlJbXBsIGV4dGVuZHMgTWluaW1hbEVPYmplY3RJbXBsLkNvbnRhaW5lciBpbXBsZW1lbnRzIEZsb3dQcm9wZXJ0eSB7DQorCS8qKg0KKwkgKiBUaGUgY2FjaGVkIHZhbHVlIG9mIHRoZSAne0BsaW5rICNnZXRCYXNlX1Byb3BlcnR5KCkgPGVtPkJhc2UgUHJvcGVydHk8L2VtPn0nIHJlZmVyZW5jZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBzZWUgI2dldEJhc2VfUHJvcGVydHkoKQ0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqIEBvcmRlcmVkDQorCSAqLw0KKwlwcm90ZWN0ZWQgUHJvcGVydHkgYmFzZV9Qcm9wZXJ0eTsNCisNCisJLyoqDQorCSAqIFRoZSBkZWZhdWx0IHZhbHVlIG9mIHRoZSAne0BsaW5rICNnZXREaXJlY3Rpb24oKSA8ZW0+RGlyZWN0aW9uPC9lbT59JyBhdHRyaWJ1dGUuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAc2VlICNnZXREaXJlY3Rpb24oKQ0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqIEBvcmRlcmVkDQorCSAqLw0KKwlwcm90ZWN0ZWQgc3RhdGljIGZpbmFsIEZsb3dEaXJlY3Rpb24gRElSRUNUSU9OX0VERUZBVUxUID0gRmxvd0RpcmVjdGlvbi5JTk9VVDsNCisNCisJLyoqDQorCSAqIFRoZSBjYWNoZWQgdmFsdWUgb2YgdGhlICd7QGxpbmsgI2dldERpcmVjdGlvbigpIDxlbT5EaXJlY3Rpb248L2VtPn0nIGF0dHJpYnV0ZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBzZWUgI2dldERpcmVjdGlvbigpDQorCSAqIEBnZW5lcmF0ZWQNCisJICogQG9yZGVyZWQNCisJICovDQorCXByb3RlY3RlZCBGbG93RGlyZWN0aW9uIGRpcmVjdGlvbiA9IERJUkVDVElPTl9FREVGQVVMVDsNCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwcm90ZWN0ZWQgRmxvd1Byb3BlcnR5SW1wbCgpIHsNCisJCXN1cGVyKCk7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHJvdGVjdGVkIEVDbGFzcyBlU3RhdGljQ2xhc3MoKSB7DQorCQlyZXR1cm4gUG9ydGFuZGZsb3dzUGFja2FnZS5MaXRlcmFscy5GTE9XX1BST1BFUlRZOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIFByb3BlcnR5IGdldEJhc2VfUHJvcGVydHkoKSB7DQorCQlpZiAoYmFzZV9Qcm9wZXJ0eSAhPSBudWxsICYmIGJhc2VfUHJvcGVydHkuZUlzUHJveHkoKSkgew0KKwkJCUludGVybmFsRU9iamVjdCBvbGRCYXNlX1Byb3BlcnR5ID0gKEludGVybmFsRU9iamVjdCliYXNlX1Byb3BlcnR5Ow0KKwkJCWJhc2VfUHJvcGVydHkgPSAoUHJvcGVydHkpZVJlc29sdmVQcm94eShvbGRCYXNlX1Byb3BlcnR5KTsNCisJCQlpZiAoYmFzZV9Qcm9wZXJ0eSAhPSBvbGRCYXNlX1Byb3BlcnR5KSB7DQorCQkJCWlmIChlTm90aWZpY2F0aW9uUmVxdWlyZWQoKSkNCisJCQkJCWVOb3RpZnkobmV3IEVOb3RpZmljYXRpb25JbXBsKHRoaXMsIE5vdGlmaWNhdGlvbi5SRVNPTFZFLCBQb3J0YW5kZmxvd3NQYWNrYWdlLkZMT1dfUFJPUEVSVFlfX0JBU0VfUFJPUEVSVFksIG9sZEJhc2VfUHJvcGVydHksIGJhc2VfUHJvcGVydHkpKTsNCisJCQl9DQorCQl9DQorCQlyZXR1cm4gYmFzZV9Qcm9wZXJ0eTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBQcm9wZXJ0eSBiYXNpY0dldEJhc2VfUHJvcGVydHkoKSB7DQorCQlyZXR1cm4gYmFzZV9Qcm9wZXJ0eTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyB2b2lkIHNldEJhc2VfUHJvcGVydHkoUHJvcGVydHkgbmV3QmFzZV9Qcm9wZXJ0eSkgew0KKwkJUHJvcGVydHkgb2xkQmFzZV9Qcm9wZXJ0eSA9IGJhc2VfUHJvcGVydHk7DQorCQliYXNlX1Byb3BlcnR5ID0gbmV3QmFzZV9Qcm9wZXJ0eTsNCisJCWlmIChlTm90aWZpY2F0aW9uUmVxdWlyZWQoKSkNCisJCQllTm90aWZ5KG5ldyBFTm90aWZpY2F0aW9uSW1wbCh0aGlzLCBOb3RpZmljYXRpb24uU0VULCBQb3J0YW5kZmxvd3NQYWNrYWdlLkZMT1dfUFJPUEVSVFlfX0JBU0VfUFJPUEVSVFksIG9sZEJhc2VfUHJvcGVydHksIGJhc2VfUHJvcGVydHkpKTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBGbG93RGlyZWN0aW9uIGdldERpcmVjdGlvbigpIHsNCisJCXJldHVybiBkaXJlY3Rpb247DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgdm9pZCBzZXREaXJlY3Rpb24oRmxvd0RpcmVjdGlvbiBuZXdEaXJlY3Rpb24pIHsNCisJCUZsb3dEaXJlY3Rpb24gb2xkRGlyZWN0aW9uID0gZGlyZWN0aW9uOw0KKwkJZGlyZWN0aW9uID0gbmV3RGlyZWN0aW9uID09IG51bGwgPyBESVJFQ1RJT05fRURFRkFVTFQgOiBuZXdEaXJlY3Rpb247DQorCQlpZiAoZU5vdGlmaWNhdGlvblJlcXVpcmVkKCkpDQorCQkJZU5vdGlmeShuZXcgRU5vdGlmaWNhdGlvbkltcGwodGhpcywgTm90aWZpY2F0aW9uLlNFVCwgUG9ydGFuZGZsb3dzUGFja2FnZS5GTE9XX1BST1BFUlRZX19ESVJFQ1RJT04sIG9sZERpcmVjdGlvbiwgZGlyZWN0aW9uKSk7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIE9iamVjdCBlR2V0KGludCBmZWF0dXJlSUQsIGJvb2xlYW4gcmVzb2x2ZSwgYm9vbGVhbiBjb3JlVHlwZSkgew0KKwkJc3dpdGNoIChmZWF0dXJlSUQpIHsNCisJCQljYXNlIFBvcnRhbmRmbG93c1BhY2thZ2UuRkxPV19QUk9QRVJUWV9fQkFTRV9QUk9QRVJUWToNCisJCQkJaWYgKHJlc29sdmUpIHJldHVybiBnZXRCYXNlX1Byb3BlcnR5KCk7DQorCQkJCXJldHVybiBiYXNpY0dldEJhc2VfUHJvcGVydHkoKTsNCisJCQljYXNlIFBvcnRhbmRmbG93c1BhY2thZ2UuRkxPV19QUk9QRVJUWV9fRElSRUNUSU9OOg0KKwkJCQlyZXR1cm4gZ2V0RGlyZWN0aW9uKCk7DQorCQl9DQorCQlyZXR1cm4gc3VwZXIuZUdldChmZWF0dXJlSUQsIHJlc29sdmUsIGNvcmVUeXBlKTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgdm9pZCBlU2V0KGludCBmZWF0dXJlSUQsIE9iamVjdCBuZXdWYWx1ZSkgew0KKwkJc3dpdGNoIChmZWF0dXJlSUQpIHsNCisJCQljYXNlIFBvcnRhbmRmbG93c1BhY2thZ2UuRkxPV19QUk9QRVJUWV9fQkFTRV9QUk9QRVJUWToNCisJCQkJc2V0QmFzZV9Qcm9wZXJ0eSgoUHJvcGVydHkpbmV3VmFsdWUpOw0KKwkJCQlyZXR1cm47DQorCQkJY2FzZSBQb3J0YW5kZmxvd3NQYWNrYWdlLkZMT1dfUFJPUEVSVFlfX0RJUkVDVElPTjoNCisJCQkJc2V0RGlyZWN0aW9uKChGbG93RGlyZWN0aW9uKW5ld1ZhbHVlKTsNCisJCQkJcmV0dXJuOw0KKwkJfQ0KKwkJc3VwZXIuZVNldChmZWF0dXJlSUQsIG5ld1ZhbHVlKTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgdm9pZCBlVW5zZXQoaW50IGZlYXR1cmVJRCkgew0KKwkJc3dpdGNoIChmZWF0dXJlSUQpIHsNCisJCQljYXNlIFBvcnRhbmRmbG93c1BhY2thZ2UuRkxPV19QUk9QRVJUWV9fQkFTRV9QUk9QRVJUWToNCisJCQkJc2V0QmFzZV9Qcm9wZXJ0eSgoUHJvcGVydHkpbnVsbCk7DQorCQkJCXJldHVybjsNCisJCQljYXNlIFBvcnRhbmRmbG93c1BhY2thZ2UuRkxPV19QUk9QRVJUWV9fRElSRUNUSU9OOg0KKwkJCQlzZXREaXJlY3Rpb24oRElSRUNUSU9OX0VERUZBVUxUKTsNCisJCQkJcmV0dXJuOw0KKwkJfQ0KKwkJc3VwZXIuZVVuc2V0KGZlYXR1cmVJRCk7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIGJvb2xlYW4gZUlzU2V0KGludCBmZWF0dXJlSUQpIHsNCisJCXN3aXRjaCAoZmVhdHVyZUlEKSB7DQorCQkJY2FzZSBQb3J0YW5kZmxvd3NQYWNrYWdlLkZMT1dfUFJPUEVSVFlfX0JBU0VfUFJPUEVSVFk6DQorCQkJCXJldHVybiBiYXNlX1Byb3BlcnR5ICE9IG51bGw7DQorCQkJY2FzZSBQb3J0YW5kZmxvd3NQYWNrYWdlLkZMT1dfUFJPUEVSVFlfX0RJUkVDVElPTjoNCisJCQkJcmV0dXJuIGRpcmVjdGlvbiAhPSBESVJFQ1RJT05fRURFRkFVTFQ7DQorCQl9DQorCQlyZXR1cm4gc3VwZXIuZUlzU2V0KGZlYXR1cmVJRCk7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIFN0cmluZyB0b1N0cmluZygpIHsNCisJCWlmIChlSXNQcm94eSgpKSByZXR1cm4gc3VwZXIudG9TdHJpbmcoKTsNCisNCisJCVN0cmluZ0J1ZmZlciByZXN1bHQgPSBuZXcgU3RyaW5nQnVmZmVyKHN1cGVyLnRvU3RyaW5nKCkpOw0KKwkJcmVzdWx0LmFwcGVuZCgiIChkaXJlY3Rpb246ICIpOyAvLyROT04tTkxTLTEkDQorCQlyZXN1bHQuYXBwZW5kKGRpcmVjdGlvbik7DQorCQlyZXN1bHQuYXBwZW5kKCcpJyk7DQorCQlyZXR1cm4gcmVzdWx0LnRvU3RyaW5nKCk7DQorCX0NCisNCit9IC8vRmxvd1Byb3BlcnR5SW1wbA0KZGlmZiAtLWdpdCBhL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L3BvcnRhbmRmbG93cy9pbnRlcm5hbC9pbXBsL0Z1bGxQb3J0SW1wbC5qYXZhIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvcG9ydGFuZGZsb3dzL2ludGVybmFsL2ltcGwvRnVsbFBvcnRJbXBsLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjY1Yzk4NQotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L3BvcnRhbmRmbG93cy9pbnRlcm5hbC9pbXBsL0Z1bGxQb3J0SW1wbC5qYXZhCkBAIC0wLDAgKzEsMTY0IEBACisvKioNCisgKiBDb3B5cmlnaHQgKGMpIDIwMTUgQ0VBIExJU1QuDQorICogDQorICogIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCisgKiAgYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQorICogIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQorICogIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICovDQorcGFja2FnZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucG9ydGFuZGZsb3dzLmludGVybmFsLmltcGw7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jb21tb24ubm90aWZ5Lk5vdGlmaWNhdGlvbjsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVDbGFzczsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkludGVybmFsRU9iamVjdDsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLmltcGwuRU5vdGlmaWNhdGlvbkltcGw7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5pbXBsLk1pbmltYWxFT2JqZWN0SW1wbDsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnBvcnRhbmRmbG93cy5GdWxsUG9ydDsNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnBvcnRhbmRmbG93cy5Qb3J0YW5kZmxvd3NQYWNrYWdlOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS51bWwyLnVtbC5Qb3J0Ow0KKw0KKy8qKg0KKyAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorICogQW4gaW1wbGVtZW50YXRpb24gb2YgdGhlIG1vZGVsIG9iamVjdCAnPGVtPjxiPkZ1bGwgUG9ydDwvYj48L2VtPicuDQorICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorICogPHA+DQorICogVGhlIGZvbGxvd2luZyBmZWF0dXJlcyBhcmUgaW1wbGVtZW50ZWQ6DQorICogPHVsPg0KKyAqICAgPGxpPntAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucG9ydGFuZGZsb3dzLmludGVybmFsLmltcGwuRnVsbFBvcnRJbXBsI2dldEJhc2VfUG9ydCA8ZW0+QmFzZSBQb3J0PC9lbT59PC9saT4NCisgKiA8L3VsPg0KKyAqIDwvcD4NCisgKg0KKyAqIEBnZW5lcmF0ZWQNCisgKi8NCitwdWJsaWMgY2xhc3MgRnVsbFBvcnRJbXBsIGV4dGVuZHMgTWluaW1hbEVPYmplY3RJbXBsLkNvbnRhaW5lciBpbXBsZW1lbnRzIEZ1bGxQb3J0IHsNCisJLyoqDQorCSAqIFRoZSBjYWNoZWQgdmFsdWUgb2YgdGhlICd7QGxpbmsgI2dldEJhc2VfUG9ydCgpIDxlbT5CYXNlIFBvcnQ8L2VtPn0nIHJlZmVyZW5jZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBzZWUgI2dldEJhc2VfUG9ydCgpDQorCSAqIEBnZW5lcmF0ZWQNCisJICogQG9yZGVyZWQNCisJICovDQorCXByb3RlY3RlZCBQb3J0IGJhc2VfUG9ydDsNCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwcm90ZWN0ZWQgRnVsbFBvcnRJbXBsKCkgew0KKwkJc3VwZXIoKTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwcm90ZWN0ZWQgRUNsYXNzIGVTdGF0aWNDbGFzcygpIHsNCisJCXJldHVybiBQb3J0YW5kZmxvd3NQYWNrYWdlLkxpdGVyYWxzLkZVTExfUE9SVDsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBQb3J0IGdldEJhc2VfUG9ydCgpIHsNCisJCWlmIChiYXNlX1BvcnQgIT0gbnVsbCAmJiBiYXNlX1BvcnQuZUlzUHJveHkoKSkgew0KKwkJCUludGVybmFsRU9iamVjdCBvbGRCYXNlX1BvcnQgPSAoSW50ZXJuYWxFT2JqZWN0KWJhc2VfUG9ydDsNCisJCQliYXNlX1BvcnQgPSAoUG9ydCllUmVzb2x2ZVByb3h5KG9sZEJhc2VfUG9ydCk7DQorCQkJaWYgKGJhc2VfUG9ydCAhPSBvbGRCYXNlX1BvcnQpIHsNCisJCQkJaWYgKGVOb3RpZmljYXRpb25SZXF1aXJlZCgpKQ0KKwkJCQkJZU5vdGlmeShuZXcgRU5vdGlmaWNhdGlvbkltcGwodGhpcywgTm90aWZpY2F0aW9uLlJFU09MVkUsIFBvcnRhbmRmbG93c1BhY2thZ2UuRlVMTF9QT1JUX19CQVNFX1BPUlQsIG9sZEJhc2VfUG9ydCwgYmFzZV9Qb3J0KSk7DQorCQkJfQ0KKwkJfQ0KKwkJcmV0dXJuIGJhc2VfUG9ydDsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBQb3J0IGJhc2ljR2V0QmFzZV9Qb3J0KCkgew0KKwkJcmV0dXJuIGJhc2VfUG9ydDsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyB2b2lkIHNldEJhc2VfUG9ydChQb3J0IG5ld0Jhc2VfUG9ydCkgew0KKwkJUG9ydCBvbGRCYXNlX1BvcnQgPSBiYXNlX1BvcnQ7DQorCQliYXNlX1BvcnQgPSBuZXdCYXNlX1BvcnQ7DQorCQlpZiAoZU5vdGlmaWNhdGlvblJlcXVpcmVkKCkpDQorCQkJZU5vdGlmeShuZXcgRU5vdGlmaWNhdGlvbkltcGwodGhpcywgTm90aWZpY2F0aW9uLlNFVCwgUG9ydGFuZGZsb3dzUGFja2FnZS5GVUxMX1BPUlRfX0JBU0VfUE9SVCwgb2xkQmFzZV9Qb3J0LCBiYXNlX1BvcnQpKTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgT2JqZWN0IGVHZXQoaW50IGZlYXR1cmVJRCwgYm9vbGVhbiByZXNvbHZlLCBib29sZWFuIGNvcmVUeXBlKSB7DQorCQlzd2l0Y2ggKGZlYXR1cmVJRCkgew0KKwkJCWNhc2UgUG9ydGFuZGZsb3dzUGFja2FnZS5GVUxMX1BPUlRfX0JBU0VfUE9SVDoNCisJCQkJaWYgKHJlc29sdmUpIHJldHVybiBnZXRCYXNlX1BvcnQoKTsNCisJCQkJcmV0dXJuIGJhc2ljR2V0QmFzZV9Qb3J0KCk7DQorCQl9DQorCQlyZXR1cm4gc3VwZXIuZUdldChmZWF0dXJlSUQsIHJlc29sdmUsIGNvcmVUeXBlKTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgdm9pZCBlU2V0KGludCBmZWF0dXJlSUQsIE9iamVjdCBuZXdWYWx1ZSkgew0KKwkJc3dpdGNoIChmZWF0dXJlSUQpIHsNCisJCQljYXNlIFBvcnRhbmRmbG93c1BhY2thZ2UuRlVMTF9QT1JUX19CQVNFX1BPUlQ6DQorCQkJCXNldEJhc2VfUG9ydCgoUG9ydCluZXdWYWx1ZSk7DQorCQkJCXJldHVybjsNCisJCX0NCisJCXN1cGVyLmVTZXQoZmVhdHVyZUlELCBuZXdWYWx1ZSk7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIHZvaWQgZVVuc2V0KGludCBmZWF0dXJlSUQpIHsNCisJCXN3aXRjaCAoZmVhdHVyZUlEKSB7DQorCQkJY2FzZSBQb3J0YW5kZmxvd3NQYWNrYWdlLkZVTExfUE9SVF9fQkFTRV9QT1JUOg0KKwkJCQlzZXRCYXNlX1BvcnQoKFBvcnQpbnVsbCk7DQorCQkJCXJldHVybjsNCisJCX0NCisJCXN1cGVyLmVVbnNldChmZWF0dXJlSUQpOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXB1YmxpYyBib29sZWFuIGVJc1NldChpbnQgZmVhdHVyZUlEKSB7DQorCQlzd2l0Y2ggKGZlYXR1cmVJRCkgew0KKwkJCWNhc2UgUG9ydGFuZGZsb3dzUGFja2FnZS5GVUxMX1BPUlRfX0JBU0VfUE9SVDoNCisJCQkJcmV0dXJuIGJhc2VfUG9ydCAhPSBudWxsOw0KKwkJfQ0KKwkJcmV0dXJuIHN1cGVyLmVJc1NldChmZWF0dXJlSUQpOw0KKwl9DQorDQorfSAvL0Z1bGxQb3J0SW1wbA0KZGlmZiAtLWdpdCBhL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L3BvcnRhbmRmbG93cy9pbnRlcm5hbC9pbXBsL0ludGVyZmFjZUJsb2NrSW1wbC5qYXZhIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvcG9ydGFuZGZsb3dzL2ludGVybmFsL2ltcGwvSW50ZXJmYWNlQmxvY2tJbXBsLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2I4YzI1NwotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L3BvcnRhbmRmbG93cy9pbnRlcm5hbC9pbXBsL0ludGVyZmFjZUJsb2NrSW1wbC5qYXZhCkBAIC0wLDAgKzEsNDcgQEAKKy8qKg0KKyAqIENvcHlyaWdodCAoYykgMjAxNSBDRUEgTElTVC4NCisgKiANCisgKiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KKyAqICBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCisgKiAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCisgKiAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgKi8NCitwYWNrYWdlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5wb3J0YW5kZmxvd3MuaW50ZXJuYWwuaW1wbDsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVDbGFzczsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmJsb2Nrcy5pbnRlcm5hbC5pbXBsLkJsb2NrSW1wbDsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnBvcnRhbmRmbG93cy5JbnRlcmZhY2VCbG9jazsNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnBvcnRhbmRmbG93cy5Qb3J0YW5kZmxvd3NQYWNrYWdlOw0KKw0KKy8qKg0KKyAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorICogQW4gaW1wbGVtZW50YXRpb24gb2YgdGhlIG1vZGVsIG9iamVjdCAnPGVtPjxiPkludGVyZmFjZSBCbG9jazwvYj48L2VtPicuDQorICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorICogPHA+DQorICogPC9wPg0KKyAqDQorICogQGdlbmVyYXRlZA0KKyAqLw0KK3B1YmxpYyBjbGFzcyBJbnRlcmZhY2VCbG9ja0ltcGwgZXh0ZW5kcyBCbG9ja0ltcGwgaW1wbGVtZW50cyBJbnRlcmZhY2VCbG9jayB7DQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHJvdGVjdGVkIEludGVyZmFjZUJsb2NrSW1wbCgpIHsNCisJCXN1cGVyKCk7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHJvdGVjdGVkIEVDbGFzcyBlU3RhdGljQ2xhc3MoKSB7DQorCQlyZXR1cm4gUG9ydGFuZGZsb3dzUGFja2FnZS5MaXRlcmFscy5JTlRFUkZBQ0VfQkxPQ0s7DQorCX0NCisNCit9IC8vSW50ZXJmYWNlQmxvY2tJbXBsDQpkaWZmIC0tZ2l0IGEvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvcG9ydGFuZGZsb3dzL2ludGVybmFsL2ltcGwvSW52b2NhdGlvbk9uTmVzdGVkUG9ydEFjdGlvbkltcGwuamF2YSBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L3BvcnRhbmRmbG93cy9pbnRlcm5hbC9pbXBsL0ludm9jYXRpb25Pbk5lc3RlZFBvcnRBY3Rpb25JbXBsLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDBiOTY1NQotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L3BvcnRhbmRmbG93cy9pbnRlcm5hbC9pbXBsL0ludm9jYXRpb25Pbk5lc3RlZFBvcnRBY3Rpb25JbXBsLmphdmEKQEAgLTAsMCArMSwyMzMgQEAKKy8qKg0KKyAqIENvcHlyaWdodCAoYykgMjAxNSBDRUEgTElTVC4NCisgKiANCisgKiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KKyAqICBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCisgKiAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCisgKiAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgKi8NCitwYWNrYWdlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5wb3J0YW5kZmxvd3MuaW50ZXJuYWwuaW1wbDsNCisNCitpbXBvcnQgamF2YS51dGlsLkNvbGxlY3Rpb247DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jb21tb24ubm90aWZ5Lk5vdGlmaWNhdGlvbjsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi51dGlsLkVMaXN0Ow0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRUNsYXNzOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuSW50ZXJuYWxFT2JqZWN0Ow0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuaW1wbC5FTm90aWZpY2F0aW9uSW1wbDsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLnV0aWwuRU9iamVjdFJlc29sdmluZ0VMaXN0Ow0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYmxvY2tzLmludGVybmFsLmltcGwuRWxlbWVudFByb3BlcnR5UGF0aEltcGw7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5wb3J0YW5kZmxvd3MuSW52b2NhdGlvbk9uTmVzdGVkUG9ydEFjdGlvbjsNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnBvcnRhbmRmbG93cy5Qb3J0YW5kZmxvd3NQYWNrYWdlOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS51bWwyLnVtbC5JbnZvY2F0aW9uQWN0aW9uOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS51bWwyLnVtbC5Qb3J0Ow0KK2ltcG9ydCBvcmcuZWNsaXBzZS51bWwyLnVtbC5UeXBlOw0KKw0KKy8qKg0KKyAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorICogQW4gaW1wbGVtZW50YXRpb24gb2YgdGhlIG1vZGVsIG9iamVjdCAnPGVtPjxiPkludm9jYXRpb24gT24gTmVzdGVkIFBvcnQgQWN0aW9uPC9iPjwvZW0+Jy4NCisgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisgKiA8cD4NCisgKiBUaGUgZm9sbG93aW5nIGZlYXR1cmVzIGFyZSBpbXBsZW1lbnRlZDoNCisgKiA8dWw+DQorICogICA8bGk+e0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5wb3J0YW5kZmxvd3MuaW50ZXJuYWwuaW1wbC5JbnZvY2F0aW9uT25OZXN0ZWRQb3J0QWN0aW9uSW1wbCNnZXRCYXNlX0ludm9jYXRpb25BY3Rpb24gPGVtPkJhc2UgSW52b2NhdGlvbiBBY3Rpb248L2VtPn08L2xpPg0KKyAqICAgPGxpPntAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucG9ydGFuZGZsb3dzLmludGVybmFsLmltcGwuSW52b2NhdGlvbk9uTmVzdGVkUG9ydEFjdGlvbkltcGwjZ2V0T25OZXN0ZWRQb3J0IDxlbT5PbiBOZXN0ZWQgUG9ydDwvZW0+fTwvbGk+DQorICogPC91bD4NCisgKiA8L3A+DQorICoNCisgKiBAZ2VuZXJhdGVkDQorICovDQorcHVibGljIGNsYXNzIEludm9jYXRpb25Pbk5lc3RlZFBvcnRBY3Rpb25JbXBsIGV4dGVuZHMgRWxlbWVudFByb3BlcnR5UGF0aEltcGwgaW1wbGVtZW50cyBJbnZvY2F0aW9uT25OZXN0ZWRQb3J0QWN0aW9uIHsNCisJLyoqDQorCSAqIFRoZSBjYWNoZWQgdmFsdWUgb2YgdGhlICd7QGxpbmsgI2dldEJhc2VfSW52b2NhdGlvbkFjdGlvbigpIDxlbT5CYXNlIEludm9jYXRpb24gQWN0aW9uPC9lbT59JyByZWZlcmVuY2UuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAc2VlICNnZXRCYXNlX0ludm9jYXRpb25BY3Rpb24oKQ0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqIEBvcmRlcmVkDQorCSAqLw0KKwlwcm90ZWN0ZWQgSW52b2NhdGlvbkFjdGlvbiBiYXNlX0ludm9jYXRpb25BY3Rpb247DQorDQorCS8qKg0KKwkgKiBUaGUgY2FjaGVkIHZhbHVlIG9mIHRoZSAne0BsaW5rICNnZXRPbk5lc3RlZFBvcnQoKSA8ZW0+T24gTmVzdGVkIFBvcnQ8L2VtPn0nIHJlZmVyZW5jZSBsaXN0Lg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHNlZSAjZ2V0T25OZXN0ZWRQb3J0KCkNCisJICogQGdlbmVyYXRlZA0KKwkgKiBAb3JkZXJlZA0KKwkgKi8NCisJcHJvdGVjdGVkIEVMaXN0PFBvcnQ+IG9uTmVzdGVkUG9ydDsNCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwcm90ZWN0ZWQgSW52b2NhdGlvbk9uTmVzdGVkUG9ydEFjdGlvbkltcGwoKSB7DQorCQlzdXBlcigpOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXByb3RlY3RlZCBFQ2xhc3MgZVN0YXRpY0NsYXNzKCkgew0KKwkJcmV0dXJuIFBvcnRhbmRmbG93c1BhY2thZ2UuTGl0ZXJhbHMuSU5WT0NBVElPTl9PTl9ORVNURURfUE9SVF9BQ1RJT047DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgSW52b2NhdGlvbkFjdGlvbiBnZXRCYXNlX0ludm9jYXRpb25BY3Rpb24oKSB7DQorCQlpZiAoYmFzZV9JbnZvY2F0aW9uQWN0aW9uICE9IG51bGwgJiYgYmFzZV9JbnZvY2F0aW9uQWN0aW9uLmVJc1Byb3h5KCkpIHsNCisJCQlJbnRlcm5hbEVPYmplY3Qgb2xkQmFzZV9JbnZvY2F0aW9uQWN0aW9uID0gKEludGVybmFsRU9iamVjdCliYXNlX0ludm9jYXRpb25BY3Rpb247DQorCQkJYmFzZV9JbnZvY2F0aW9uQWN0aW9uID0gKEludm9jYXRpb25BY3Rpb24pZVJlc29sdmVQcm94eShvbGRCYXNlX0ludm9jYXRpb25BY3Rpb24pOw0KKwkJCWlmIChiYXNlX0ludm9jYXRpb25BY3Rpb24gIT0gb2xkQmFzZV9JbnZvY2F0aW9uQWN0aW9uKSB7DQorCQkJCWlmIChlTm90aWZpY2F0aW9uUmVxdWlyZWQoKSkNCisJCQkJCWVOb3RpZnkobmV3IEVOb3RpZmljYXRpb25JbXBsKHRoaXMsIE5vdGlmaWNhdGlvbi5SRVNPTFZFLCBQb3J0YW5kZmxvd3NQYWNrYWdlLklOVk9DQVRJT05fT05fTkVTVEVEX1BPUlRfQUNUSU9OX19CQVNFX0lOVk9DQVRJT05fQUNUSU9OLCBvbGRCYXNlX0ludm9jYXRpb25BY3Rpb24sIGJhc2VfSW52b2NhdGlvbkFjdGlvbikpOw0KKwkJCX0NCisJCX0NCisJCXJldHVybiBiYXNlX0ludm9jYXRpb25BY3Rpb247DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgSW52b2NhdGlvbkFjdGlvbiBiYXNpY0dldEJhc2VfSW52b2NhdGlvbkFjdGlvbigpIHsNCisJCXJldHVybiBiYXNlX0ludm9jYXRpb25BY3Rpb247DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgdm9pZCBzZXRCYXNlX0ludm9jYXRpb25BY3Rpb24oSW52b2NhdGlvbkFjdGlvbiBuZXdCYXNlX0ludm9jYXRpb25BY3Rpb24pIHsNCisJCUludm9jYXRpb25BY3Rpb24gb2xkQmFzZV9JbnZvY2F0aW9uQWN0aW9uID0gYmFzZV9JbnZvY2F0aW9uQWN0aW9uOw0KKwkJYmFzZV9JbnZvY2F0aW9uQWN0aW9uID0gbmV3QmFzZV9JbnZvY2F0aW9uQWN0aW9uOw0KKwkJaWYgKGVOb3RpZmljYXRpb25SZXF1aXJlZCgpKQ0KKwkJCWVOb3RpZnkobmV3IEVOb3RpZmljYXRpb25JbXBsKHRoaXMsIE5vdGlmaWNhdGlvbi5TRVQsIFBvcnRhbmRmbG93c1BhY2thZ2UuSU5WT0NBVElPTl9PTl9ORVNURURfUE9SVF9BQ1RJT05fX0JBU0VfSU5WT0NBVElPTl9BQ1RJT04sIG9sZEJhc2VfSW52b2NhdGlvbkFjdGlvbiwgYmFzZV9JbnZvY2F0aW9uQWN0aW9uKSk7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgRUxpc3Q8UG9ydD4gZ2V0T25OZXN0ZWRQb3J0KCkgew0KKwkJaWYgKG9uTmVzdGVkUG9ydCA9PSBudWxsKSB7DQorCQkJb25OZXN0ZWRQb3J0ID0gbmV3IEVPYmplY3RSZXNvbHZpbmdFTGlzdDxQb3J0PihQb3J0LmNsYXNzLCB0aGlzLCBQb3J0YW5kZmxvd3NQYWNrYWdlLklOVk9DQVRJT05fT05fTkVTVEVEX1BPUlRfQUNUSU9OX19PTl9ORVNURURfUE9SVCk7DQorCQl9DQorCQlyZXR1cm4gb25OZXN0ZWRQb3J0Ow0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIFBvcnQgZ2V0T25OZXN0ZWRQb3J0KFN0cmluZyBuYW1lLCBUeXBlIHR5cGUpIHsNCisJCXJldHVybiBnZXRPbk5lc3RlZFBvcnQobmFtZSwgdHlwZSwgZmFsc2UpOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIFBvcnQgZ2V0T25OZXN0ZWRQb3J0KFN0cmluZyBuYW1lLCBUeXBlIHR5cGUsIGJvb2xlYW4gaWdub3JlQ2FzZSkgew0KKwkJb25OZXN0ZWRQb3J0TG9vcDogZm9yIChQb3J0IG9uTmVzdGVkUG9ydCA6IGdldE9uTmVzdGVkUG9ydCgpKSB7DQorCQkJaWYgKG5hbWUgIT0gbnVsbCAmJiAhKGlnbm9yZUNhc2UgPyBuYW1lLmVxdWFsc0lnbm9yZUNhc2Uob25OZXN0ZWRQb3J0LmdldE5hbWUoKSkgOiBuYW1lLmVxdWFscyhvbk5lc3RlZFBvcnQuZ2V0TmFtZSgpKSkpDQorCQkJCWNvbnRpbnVlIG9uTmVzdGVkUG9ydExvb3A7DQorCQkJaWYgKHR5cGUgIT0gbnVsbCAmJiAhdHlwZS5lcXVhbHMob25OZXN0ZWRQb3J0LmdldFR5cGUoKSkpDQorCQkJCWNvbnRpbnVlIG9uTmVzdGVkUG9ydExvb3A7DQorCQkJcmV0dXJuIG9uTmVzdGVkUG9ydDsNCisJCX0NCisJCXJldHVybiBudWxsOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXB1YmxpYyBPYmplY3QgZUdldChpbnQgZmVhdHVyZUlELCBib29sZWFuIHJlc29sdmUsIGJvb2xlYW4gY29yZVR5cGUpIHsNCisJCXN3aXRjaCAoZmVhdHVyZUlEKSB7DQorCQkJY2FzZSBQb3J0YW5kZmxvd3NQYWNrYWdlLklOVk9DQVRJT05fT05fTkVTVEVEX1BPUlRfQUNUSU9OX19CQVNFX0lOVk9DQVRJT05fQUNUSU9OOg0KKwkJCQlpZiAocmVzb2x2ZSkgcmV0dXJuIGdldEJhc2VfSW52b2NhdGlvbkFjdGlvbigpOw0KKwkJCQlyZXR1cm4gYmFzaWNHZXRCYXNlX0ludm9jYXRpb25BY3Rpb24oKTsNCisJCQljYXNlIFBvcnRhbmRmbG93c1BhY2thZ2UuSU5WT0NBVElPTl9PTl9ORVNURURfUE9SVF9BQ1RJT05fX09OX05FU1RFRF9QT1JUOg0KKwkJCQlyZXR1cm4gZ2V0T25OZXN0ZWRQb3J0KCk7DQorCQl9DQorCQlyZXR1cm4gc3VwZXIuZUdldChmZWF0dXJlSUQsIHJlc29sdmUsIGNvcmVUeXBlKTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBTdXBwcmVzc1dhcm5pbmdzKCJ1bmNoZWNrZWQiKQ0KKwlAT3ZlcnJpZGUNCisJcHVibGljIHZvaWQgZVNldChpbnQgZmVhdHVyZUlELCBPYmplY3QgbmV3VmFsdWUpIHsNCisJCXN3aXRjaCAoZmVhdHVyZUlEKSB7DQorCQkJY2FzZSBQb3J0YW5kZmxvd3NQYWNrYWdlLklOVk9DQVRJT05fT05fTkVTVEVEX1BPUlRfQUNUSU9OX19CQVNFX0lOVk9DQVRJT05fQUNUSU9OOg0KKwkJCQlzZXRCYXNlX0ludm9jYXRpb25BY3Rpb24oKEludm9jYXRpb25BY3Rpb24pbmV3VmFsdWUpOw0KKwkJCQlyZXR1cm47DQorCQkJY2FzZSBQb3J0YW5kZmxvd3NQYWNrYWdlLklOVk9DQVRJT05fT05fTkVTVEVEX1BPUlRfQUNUSU9OX19PTl9ORVNURURfUE9SVDoNCisJCQkJZ2V0T25OZXN0ZWRQb3J0KCkuY2xlYXIoKTsNCisJCQkJZ2V0T25OZXN0ZWRQb3J0KCkuYWRkQWxsKChDb2xsZWN0aW9uPD8gZXh0ZW5kcyBQb3J0PiluZXdWYWx1ZSk7DQorCQkJCXJldHVybjsNCisJCX0NCisJCXN1cGVyLmVTZXQoZmVhdHVyZUlELCBuZXdWYWx1ZSk7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIHZvaWQgZVVuc2V0KGludCBmZWF0dXJlSUQpIHsNCisJCXN3aXRjaCAoZmVhdHVyZUlEKSB7DQorCQkJY2FzZSBQb3J0YW5kZmxvd3NQYWNrYWdlLklOVk9DQVRJT05fT05fTkVTVEVEX1BPUlRfQUNUSU9OX19CQVNFX0lOVk9DQVRJT05fQUNUSU9OOg0KKwkJCQlzZXRCYXNlX0ludm9jYXRpb25BY3Rpb24oKEludm9jYXRpb25BY3Rpb24pbnVsbCk7DQorCQkJCXJldHVybjsNCisJCQljYXNlIFBvcnRhbmRmbG93c1BhY2thZ2UuSU5WT0NBVElPTl9PTl9ORVNURURfUE9SVF9BQ1RJT05fX09OX05FU1RFRF9QT1JUOg0KKwkJCQlnZXRPbk5lc3RlZFBvcnQoKS5jbGVhcigpOw0KKwkJCQlyZXR1cm47DQorCQl9DQorCQlzdXBlci5lVW5zZXQoZmVhdHVyZUlEKTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgYm9vbGVhbiBlSXNTZXQoaW50IGZlYXR1cmVJRCkgew0KKwkJc3dpdGNoIChmZWF0dXJlSUQpIHsNCisJCQljYXNlIFBvcnRhbmRmbG93c1BhY2thZ2UuSU5WT0NBVElPTl9PTl9ORVNURURfUE9SVF9BQ1RJT05fX0JBU0VfSU5WT0NBVElPTl9BQ1RJT046DQorCQkJCXJldHVybiBiYXNlX0ludm9jYXRpb25BY3Rpb24gIT0gbnVsbDsNCisJCQljYXNlIFBvcnRhbmRmbG93c1BhY2thZ2UuSU5WT0NBVElPTl9PTl9ORVNURURfUE9SVF9BQ1RJT05fX09OX05FU1RFRF9QT1JUOg0KKwkJCQlyZXR1cm4gb25OZXN0ZWRQb3J0ICE9IG51bGwgJiYgIW9uTmVzdGVkUG9ydC5pc0VtcHR5KCk7DQorCQl9DQorCQlyZXR1cm4gc3VwZXIuZUlzU2V0KGZlYXR1cmVJRCk7DQorCX0NCisNCit9IC8vSW52b2NhdGlvbk9uTmVzdGVkUG9ydEFjdGlvbkltcGwNCmRpZmYgLS1naXQgYS9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9wb3J0YW5kZmxvd3MvaW50ZXJuYWwvaW1wbC9JdGVtRmxvd0ltcGwuamF2YSBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L3BvcnRhbmRmbG93cy9pbnRlcm5hbC9pbXBsL0l0ZW1GbG93SW1wbC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEyNzZhYmIKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9wb3J0YW5kZmxvd3MvaW50ZXJuYWwvaW1wbC9JdGVtRmxvd0ltcGwuamF2YQpAQCAtMCwwICsxLDIyNSBAQAorLyoqDQorICogQ29weXJpZ2h0IChjKSAyMDE1IENFQSBMSVNULg0KKyAqIA0KKyAqICBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQorICogIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KKyAqICB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KKyAqICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqLw0KK3BhY2thZ2Ugb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnBvcnRhbmRmbG93cy5pbnRlcm5hbC5pbXBsOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY29tbW9uLm5vdGlmeS5Ob3RpZmljYXRpb247DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FQ2xhc3M7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5JbnRlcm5hbEVPYmplY3Q7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5pbXBsLkVOb3RpZmljYXRpb25JbXBsOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuaW1wbC5NaW5pbWFsRU9iamVjdEltcGw7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5wb3J0YW5kZmxvd3MuSXRlbUZsb3c7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5wb3J0YW5kZmxvd3MuUG9ydGFuZGZsb3dzUGFja2FnZTsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UudW1sMi51bWwuSW5mb3JtYXRpb25GbG93Ow0KK2ltcG9ydCBvcmcuZWNsaXBzZS51bWwyLnVtbC5Qcm9wZXJ0eTsNCisNCisvKioNCisgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKyAqIEFuIGltcGxlbWVudGF0aW9uIG9mIHRoZSBtb2RlbCBvYmplY3QgJzxlbT48Yj5JdGVtIEZsb3c8L2I+PC9lbT4nLg0KKyAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKyAqIDxwPg0KKyAqIFRoZSBmb2xsb3dpbmcgZmVhdHVyZXMgYXJlIGltcGxlbWVudGVkOg0KKyAqIDx1bD4NCisgKiAgIDxsaT57QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnBvcnRhbmRmbG93cy5pbnRlcm5hbC5pbXBsLkl0ZW1GbG93SW1wbCNnZXRCYXNlX0luZm9ybWF0aW9uRmxvdyA8ZW0+QmFzZSBJbmZvcm1hdGlvbiBGbG93PC9lbT59PC9saT4NCisgKiAgIDxsaT57QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnBvcnRhbmRmbG93cy5pbnRlcm5hbC5pbXBsLkl0ZW1GbG93SW1wbCNnZXRJdGVtUHJvcGVydHkgPGVtPkl0ZW0gUHJvcGVydHk8L2VtPn08L2xpPg0KKyAqIDwvdWw+DQorICogPC9wPg0KKyAqDQorICogQGdlbmVyYXRlZA0KKyAqLw0KK3B1YmxpYyBjbGFzcyBJdGVtRmxvd0ltcGwgZXh0ZW5kcyBNaW5pbWFsRU9iamVjdEltcGwuQ29udGFpbmVyIGltcGxlbWVudHMgSXRlbUZsb3cgew0KKwkvKioNCisJICogVGhlIGNhY2hlZCB2YWx1ZSBvZiB0aGUgJ3tAbGluayAjZ2V0QmFzZV9JbmZvcm1hdGlvbkZsb3coKSA8ZW0+QmFzZSBJbmZvcm1hdGlvbiBGbG93PC9lbT59JyByZWZlcmVuY2UuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAc2VlICNnZXRCYXNlX0luZm9ybWF0aW9uRmxvdygpDQorCSAqIEBnZW5lcmF0ZWQNCisJICogQG9yZGVyZWQNCisJICovDQorCXByb3RlY3RlZCBJbmZvcm1hdGlvbkZsb3cgYmFzZV9JbmZvcm1hdGlvbkZsb3c7DQorDQorCS8qKg0KKwkgKiBUaGUgY2FjaGVkIHZhbHVlIG9mIHRoZSAne0BsaW5rICNnZXRJdGVtUHJvcGVydHkoKSA8ZW0+SXRlbSBQcm9wZXJ0eTwvZW0+fScgcmVmZXJlbmNlLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHNlZSAjZ2V0SXRlbVByb3BlcnR5KCkNCisJICogQGdlbmVyYXRlZA0KKwkgKiBAb3JkZXJlZA0KKwkgKi8NCisJcHJvdGVjdGVkIFByb3BlcnR5IGl0ZW1Qcm9wZXJ0eTsNCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwcm90ZWN0ZWQgSXRlbUZsb3dJbXBsKCkgew0KKwkJc3VwZXIoKTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwcm90ZWN0ZWQgRUNsYXNzIGVTdGF0aWNDbGFzcygpIHsNCisJCXJldHVybiBQb3J0YW5kZmxvd3NQYWNrYWdlLkxpdGVyYWxzLklURU1fRkxPVzsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBJbmZvcm1hdGlvbkZsb3cgZ2V0QmFzZV9JbmZvcm1hdGlvbkZsb3coKSB7DQorCQlpZiAoYmFzZV9JbmZvcm1hdGlvbkZsb3cgIT0gbnVsbCAmJiBiYXNlX0luZm9ybWF0aW9uRmxvdy5lSXNQcm94eSgpKSB7DQorCQkJSW50ZXJuYWxFT2JqZWN0IG9sZEJhc2VfSW5mb3JtYXRpb25GbG93ID0gKEludGVybmFsRU9iamVjdCliYXNlX0luZm9ybWF0aW9uRmxvdzsNCisJCQliYXNlX0luZm9ybWF0aW9uRmxvdyA9IChJbmZvcm1hdGlvbkZsb3cpZVJlc29sdmVQcm94eShvbGRCYXNlX0luZm9ybWF0aW9uRmxvdyk7DQorCQkJaWYgKGJhc2VfSW5mb3JtYXRpb25GbG93ICE9IG9sZEJhc2VfSW5mb3JtYXRpb25GbG93KSB7DQorCQkJCWlmIChlTm90aWZpY2F0aW9uUmVxdWlyZWQoKSkNCisJCQkJCWVOb3RpZnkobmV3IEVOb3RpZmljYXRpb25JbXBsKHRoaXMsIE5vdGlmaWNhdGlvbi5SRVNPTFZFLCBQb3J0YW5kZmxvd3NQYWNrYWdlLklURU1fRkxPV19fQkFTRV9JTkZPUk1BVElPTl9GTE9XLCBvbGRCYXNlX0luZm9ybWF0aW9uRmxvdywgYmFzZV9JbmZvcm1hdGlvbkZsb3cpKTsNCisJCQl9DQorCQl9DQorCQlyZXR1cm4gYmFzZV9JbmZvcm1hdGlvbkZsb3c7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgSW5mb3JtYXRpb25GbG93IGJhc2ljR2V0QmFzZV9JbmZvcm1hdGlvbkZsb3coKSB7DQorCQlyZXR1cm4gYmFzZV9JbmZvcm1hdGlvbkZsb3c7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgdm9pZCBzZXRCYXNlX0luZm9ybWF0aW9uRmxvdyhJbmZvcm1hdGlvbkZsb3cgbmV3QmFzZV9JbmZvcm1hdGlvbkZsb3cpIHsNCisJCUluZm9ybWF0aW9uRmxvdyBvbGRCYXNlX0luZm9ybWF0aW9uRmxvdyA9IGJhc2VfSW5mb3JtYXRpb25GbG93Ow0KKwkJYmFzZV9JbmZvcm1hdGlvbkZsb3cgPSBuZXdCYXNlX0luZm9ybWF0aW9uRmxvdzsNCisJCWlmIChlTm90aWZpY2F0aW9uUmVxdWlyZWQoKSkNCisJCQllTm90aWZ5KG5ldyBFTm90aWZpY2F0aW9uSW1wbCh0aGlzLCBOb3RpZmljYXRpb24uU0VULCBQb3J0YW5kZmxvd3NQYWNrYWdlLklURU1fRkxPV19fQkFTRV9JTkZPUk1BVElPTl9GTE9XLCBvbGRCYXNlX0luZm9ybWF0aW9uRmxvdywgYmFzZV9JbmZvcm1hdGlvbkZsb3cpKTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBQcm9wZXJ0eSBnZXRJdGVtUHJvcGVydHkoKSB7DQorCQlpZiAoaXRlbVByb3BlcnR5ICE9IG51bGwgJiYgaXRlbVByb3BlcnR5LmVJc1Byb3h5KCkpIHsNCisJCQlJbnRlcm5hbEVPYmplY3Qgb2xkSXRlbVByb3BlcnR5ID0gKEludGVybmFsRU9iamVjdClpdGVtUHJvcGVydHk7DQorCQkJaXRlbVByb3BlcnR5ID0gKFByb3BlcnR5KWVSZXNvbHZlUHJveHkob2xkSXRlbVByb3BlcnR5KTsNCisJCQlpZiAoaXRlbVByb3BlcnR5ICE9IG9sZEl0ZW1Qcm9wZXJ0eSkgew0KKwkJCQlpZiAoZU5vdGlmaWNhdGlvblJlcXVpcmVkKCkpDQorCQkJCQllTm90aWZ5KG5ldyBFTm90aWZpY2F0aW9uSW1wbCh0aGlzLCBOb3RpZmljYXRpb24uUkVTT0xWRSwgUG9ydGFuZGZsb3dzUGFja2FnZS5JVEVNX0ZMT1dfX0lURU1fUFJPUEVSVFksIG9sZEl0ZW1Qcm9wZXJ0eSwgaXRlbVByb3BlcnR5KSk7DQorCQkJfQ0KKwkJfQ0KKwkJcmV0dXJuIGl0ZW1Qcm9wZXJ0eTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBQcm9wZXJ0eSBiYXNpY0dldEl0ZW1Qcm9wZXJ0eSgpIHsNCisJCXJldHVybiBpdGVtUHJvcGVydHk7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgdm9pZCBzZXRJdGVtUHJvcGVydHkoUHJvcGVydHkgbmV3SXRlbVByb3BlcnR5KSB7DQorCQlQcm9wZXJ0eSBvbGRJdGVtUHJvcGVydHkgPSBpdGVtUHJvcGVydHk7DQorCQlpdGVtUHJvcGVydHkgPSBuZXdJdGVtUHJvcGVydHk7DQorCQlpZiAoZU5vdGlmaWNhdGlvblJlcXVpcmVkKCkpDQorCQkJZU5vdGlmeShuZXcgRU5vdGlmaWNhdGlvbkltcGwodGhpcywgTm90aWZpY2F0aW9uLlNFVCwgUG9ydGFuZGZsb3dzUGFja2FnZS5JVEVNX0ZMT1dfX0lURU1fUFJPUEVSVFksIG9sZEl0ZW1Qcm9wZXJ0eSwgaXRlbVByb3BlcnR5KSk7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIE9iamVjdCBlR2V0KGludCBmZWF0dXJlSUQsIGJvb2xlYW4gcmVzb2x2ZSwgYm9vbGVhbiBjb3JlVHlwZSkgew0KKwkJc3dpdGNoIChmZWF0dXJlSUQpIHsNCisJCQljYXNlIFBvcnRhbmRmbG93c1BhY2thZ2UuSVRFTV9GTE9XX19CQVNFX0lORk9STUFUSU9OX0ZMT1c6DQorCQkJCWlmIChyZXNvbHZlKSByZXR1cm4gZ2V0QmFzZV9JbmZvcm1hdGlvbkZsb3coKTsNCisJCQkJcmV0dXJuIGJhc2ljR2V0QmFzZV9JbmZvcm1hdGlvbkZsb3coKTsNCisJCQljYXNlIFBvcnRhbmRmbG93c1BhY2thZ2UuSVRFTV9GTE9XX19JVEVNX1BST1BFUlRZOg0KKwkJCQlpZiAocmVzb2x2ZSkgcmV0dXJuIGdldEl0ZW1Qcm9wZXJ0eSgpOw0KKwkJCQlyZXR1cm4gYmFzaWNHZXRJdGVtUHJvcGVydHkoKTsNCisJCX0NCisJCXJldHVybiBzdXBlci5lR2V0KGZlYXR1cmVJRCwgcmVzb2x2ZSwgY29yZVR5cGUpOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXB1YmxpYyB2b2lkIGVTZXQoaW50IGZlYXR1cmVJRCwgT2JqZWN0IG5ld1ZhbHVlKSB7DQorCQlzd2l0Y2ggKGZlYXR1cmVJRCkgew0KKwkJCWNhc2UgUG9ydGFuZGZsb3dzUGFja2FnZS5JVEVNX0ZMT1dfX0JBU0VfSU5GT1JNQVRJT05fRkxPVzoNCisJCQkJc2V0QmFzZV9JbmZvcm1hdGlvbkZsb3coKEluZm9ybWF0aW9uRmxvdyluZXdWYWx1ZSk7DQorCQkJCXJldHVybjsNCisJCQljYXNlIFBvcnRhbmRmbG93c1BhY2thZ2UuSVRFTV9GTE9XX19JVEVNX1BST1BFUlRZOg0KKwkJCQlzZXRJdGVtUHJvcGVydHkoKFByb3BlcnR5KW5ld1ZhbHVlKTsNCisJCQkJcmV0dXJuOw0KKwkJfQ0KKwkJc3VwZXIuZVNldChmZWF0dXJlSUQsIG5ld1ZhbHVlKTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgdm9pZCBlVW5zZXQoaW50IGZlYXR1cmVJRCkgew0KKwkJc3dpdGNoIChmZWF0dXJlSUQpIHsNCisJCQljYXNlIFBvcnRhbmRmbG93c1BhY2thZ2UuSVRFTV9GTE9XX19CQVNFX0lORk9STUFUSU9OX0ZMT1c6DQorCQkJCXNldEJhc2VfSW5mb3JtYXRpb25GbG93KChJbmZvcm1hdGlvbkZsb3cpbnVsbCk7DQorCQkJCXJldHVybjsNCisJCQljYXNlIFBvcnRhbmRmbG93c1BhY2thZ2UuSVRFTV9GTE9XX19JVEVNX1BST1BFUlRZOg0KKwkJCQlzZXRJdGVtUHJvcGVydHkoKFByb3BlcnR5KW51bGwpOw0KKwkJCQlyZXR1cm47DQorCQl9DQorCQlzdXBlci5lVW5zZXQoZmVhdHVyZUlEKTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgYm9vbGVhbiBlSXNTZXQoaW50IGZlYXR1cmVJRCkgew0KKwkJc3dpdGNoIChmZWF0dXJlSUQpIHsNCisJCQljYXNlIFBvcnRhbmRmbG93c1BhY2thZ2UuSVRFTV9GTE9XX19CQVNFX0lORk9STUFUSU9OX0ZMT1c6DQorCQkJCXJldHVybiBiYXNlX0luZm9ybWF0aW9uRmxvdyAhPSBudWxsOw0KKwkJCWNhc2UgUG9ydGFuZGZsb3dzUGFja2FnZS5JVEVNX0ZMT1dfX0lURU1fUFJPUEVSVFk6DQorCQkJCXJldHVybiBpdGVtUHJvcGVydHkgIT0gbnVsbDsNCisJCX0NCisJCXJldHVybiBzdXBlci5lSXNTZXQoZmVhdHVyZUlEKTsNCisJfQ0KKw0KK30gLy9JdGVtRmxvd0ltcGwNCmRpZmYgLS1naXQgYS9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9wb3J0YW5kZmxvd3MvaW50ZXJuYWwvaW1wbC9Qb3J0YW5kZmxvd3NGYWN0b3J5SW1wbC5qYXZhIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvcG9ydGFuZGZsb3dzL2ludGVybmFsL2ltcGwvUG9ydGFuZGZsb3dzRmFjdG9yeUltcGwuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MzY2MjI3Ci0tLSAvZGV2L251bGwKKysrIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvcG9ydGFuZGZsb3dzL2ludGVybmFsL2ltcGwvUG9ydGFuZGZsb3dzRmFjdG9yeUltcGwuamF2YQpAQCAtMCwwICsxLDI3NSBAQAorLyoqDQorICogQ29weXJpZ2h0IChjKSAyMDE1IENFQSBMSVNULg0KKyAqIA0KKyAqICBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQorICogIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KKyAqICB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KKyAqICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqLw0KK3BhY2thZ2Ugb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnBvcnRhbmRmbG93cy5pbnRlcm5hbC5pbXBsOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRUNsYXNzOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRURhdGFUeXBlOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRU9iamVjdDsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVQYWNrYWdlOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuaW1wbC5FRmFjdG9yeUltcGw7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5wbHVnaW4uRWNvcmVQbHVnaW47DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5wb3J0YW5kZmxvd3MuKjsNCisNCisvKioNCisgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKyAqIEFuIGltcGxlbWVudGF0aW9uIG9mIHRoZSBtb2RlbCA8Yj5GYWN0b3J5PC9iPi4NCisgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisgKiBAZ2VuZXJhdGVkDQorICovDQorcHVibGljIGNsYXNzIFBvcnRhbmRmbG93c0ZhY3RvcnlJbXBsIGV4dGVuZHMgRUZhY3RvcnlJbXBsIGltcGxlbWVudHMgUG9ydGFuZGZsb3dzRmFjdG9yeSB7DQorCS8qKg0KKwkgKiBDcmVhdGVzIHRoZSBkZWZhdWx0IGZhY3RvcnkgaW1wbGVtZW50YXRpb24uDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgc3RhdGljIFBvcnRhbmRmbG93c0ZhY3RvcnkgaW5pdCgpIHsNCisJCXRyeSB7DQorCQkJUG9ydGFuZGZsb3dzRmFjdG9yeSB0aGVQb3J0YW5kZmxvd3NGYWN0b3J5ID0gKFBvcnRhbmRmbG93c0ZhY3RvcnkpRVBhY2thZ2UuUmVnaXN0cnkuSU5TVEFOQ0UuZ2V0RUZhY3RvcnkoUG9ydGFuZGZsb3dzUGFja2FnZS5lTlNfVVJJKTsNCisJCQlpZiAodGhlUG9ydGFuZGZsb3dzRmFjdG9yeSAhPSBudWxsKSB7DQorCQkJCXJldHVybiB0aGVQb3J0YW5kZmxvd3NGYWN0b3J5Ow0KKwkJCX0NCisJCX0NCisJCWNhdGNoIChFeGNlcHRpb24gZXhjZXB0aW9uKSB7DQorCQkJRWNvcmVQbHVnaW4uSU5TVEFOQ0UubG9nKGV4Y2VwdGlvbik7DQorCQl9DQorCQlyZXR1cm4gbmV3IFBvcnRhbmRmbG93c0ZhY3RvcnlJbXBsKCk7DQorCX0NCisNCisJLyoqDQorCSAqIENyZWF0ZXMgYW4gaW5zdGFuY2Ugb2YgdGhlIGZhY3RvcnkuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgUG9ydGFuZGZsb3dzRmFjdG9yeUltcGwoKSB7DQorCQlzdXBlcigpOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXB1YmxpYyBFT2JqZWN0IGNyZWF0ZShFQ2xhc3MgZUNsYXNzKSB7DQorCQlzd2l0Y2ggKGVDbGFzcy5nZXRDbGFzc2lmaWVySUQoKSkgew0KKwkJCWNhc2UgUG9ydGFuZGZsb3dzUGFja2FnZS5JVEVNX0ZMT1c6IHJldHVybiBjcmVhdGVJdGVtRmxvdygpOw0KKwkJCWNhc2UgUG9ydGFuZGZsb3dzUGFja2FnZS5GTE9XX1BST1BFUlRZOiByZXR1cm4gY3JlYXRlRmxvd1Byb3BlcnR5KCk7DQorCQkJY2FzZSBQb3J0YW5kZmxvd3NQYWNrYWdlLkZVTExfUE9SVDogcmV0dXJuIGNyZWF0ZUZ1bGxQb3J0KCk7DQorCQkJY2FzZSBQb3J0YW5kZmxvd3NQYWNrYWdlLklOVEVSRkFDRV9CTE9DSzogcmV0dXJuIGNyZWF0ZUludGVyZmFjZUJsb2NrKCk7DQorCQkJY2FzZSBQb3J0YW5kZmxvd3NQYWNrYWdlLlBST1hZX1BPUlQ6IHJldHVybiBjcmVhdGVQcm94eVBvcnQoKTsNCisJCQljYXNlIFBvcnRhbmRmbG93c1BhY2thZ2UuQUNDRVBUX0NIQU5HRV9TVFJVQ1RVUkFMX0ZFQVRVUkVfRVZFTlRfQUNUSU9OOiByZXR1cm4gY3JlYXRlQWNjZXB0Q2hhbmdlU3RydWN0dXJhbEZlYXR1cmVFdmVudEFjdGlvbigpOw0KKwkJCWNhc2UgUG9ydGFuZGZsb3dzUGFja2FnZS5DSEFOR0VfU1RSVUNUVVJBTF9GRUFUVVJFX0VWRU5UOiByZXR1cm4gY3JlYXRlQ2hhbmdlU3RydWN0dXJhbEZlYXR1cmVFdmVudCgpOw0KKwkJCWNhc2UgUG9ydGFuZGZsb3dzUGFja2FnZS5ESVJFQ1RFRF9GRUFUVVJFOiByZXR1cm4gY3JlYXRlRGlyZWN0ZWRGZWF0dXJlKCk7DQorCQkJY2FzZSBQb3J0YW5kZmxvd3NQYWNrYWdlLklOVk9DQVRJT05fT05fTkVTVEVEX1BPUlRfQUNUSU9OOiByZXR1cm4gY3JlYXRlSW52b2NhdGlvbk9uTmVzdGVkUG9ydEFjdGlvbigpOw0KKwkJCWNhc2UgUG9ydGFuZGZsb3dzUGFja2FnZS5UUklHR0VSX09OX05FU1RFRF9QT1JUOiByZXR1cm4gY3JlYXRlVHJpZ2dlck9uTmVzdGVkUG9ydCgpOw0KKwkJCWRlZmF1bHQ6DQorCQkJCXRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIlRoZSBjbGFzcyAnIiArIGVDbGFzcy5nZXROYW1lKCkgKyAiJyBpcyBub3QgYSB2YWxpZCBjbGFzc2lmaWVyIik7IC8vJE5PTi1OTFMtMSQgLy8kTk9OLU5MUy0yJA0KKwkJfQ0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXB1YmxpYyBPYmplY3QgY3JlYXRlRnJvbVN0cmluZyhFRGF0YVR5cGUgZURhdGFUeXBlLCBTdHJpbmcgaW5pdGlhbFZhbHVlKSB7DQorCQlzd2l0Y2ggKGVEYXRhVHlwZS5nZXRDbGFzc2lmaWVySUQoKSkgew0KKwkJCWNhc2UgUG9ydGFuZGZsb3dzUGFja2FnZS5GTE9XX0RJUkVDVElPTjoNCisJCQkJcmV0dXJuIGNyZWF0ZUZsb3dEaXJlY3Rpb25Gcm9tU3RyaW5nKGVEYXRhVHlwZSwgaW5pdGlhbFZhbHVlKTsNCisJCQljYXNlIFBvcnRhbmRmbG93c1BhY2thZ2UuRkVBVFVSRV9ESVJFQ1RJT046DQorCQkJCXJldHVybiBjcmVhdGVGZWF0dXJlRGlyZWN0aW9uRnJvbVN0cmluZyhlRGF0YVR5cGUsIGluaXRpYWxWYWx1ZSk7DQorCQkJZGVmYXVsdDoNCisJCQkJdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiVGhlIGRhdGF0eXBlICciICsgZURhdGFUeXBlLmdldE5hbWUoKSArICInIGlzIG5vdCBhIHZhbGlkIGNsYXNzaWZpZXIiKTsgLy8kTk9OLU5MUy0xJCAvLyROT04tTkxTLTIkDQorCQl9DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIFN0cmluZyBjb252ZXJ0VG9TdHJpbmcoRURhdGFUeXBlIGVEYXRhVHlwZSwgT2JqZWN0IGluc3RhbmNlVmFsdWUpIHsNCisJCXN3aXRjaCAoZURhdGFUeXBlLmdldENsYXNzaWZpZXJJRCgpKSB7DQorCQkJY2FzZSBQb3J0YW5kZmxvd3NQYWNrYWdlLkZMT1dfRElSRUNUSU9OOg0KKwkJCQlyZXR1cm4gY29udmVydEZsb3dEaXJlY3Rpb25Ub1N0cmluZyhlRGF0YVR5cGUsIGluc3RhbmNlVmFsdWUpOw0KKwkJCWNhc2UgUG9ydGFuZGZsb3dzUGFja2FnZS5GRUFUVVJFX0RJUkVDVElPTjoNCisJCQkJcmV0dXJuIGNvbnZlcnRGZWF0dXJlRGlyZWN0aW9uVG9TdHJpbmcoZURhdGFUeXBlLCBpbnN0YW5jZVZhbHVlKTsNCisJCQlkZWZhdWx0Og0KKwkJCQl0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJUaGUgZGF0YXR5cGUgJyIgKyBlRGF0YVR5cGUuZ2V0TmFtZSgpICsgIicgaXMgbm90IGEgdmFsaWQgY2xhc3NpZmllciIpOyAvLyROT04tTkxTLTEkIC8vJE5PTi1OTFMtMiQNCisJCX0NCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBJdGVtRmxvdyBjcmVhdGVJdGVtRmxvdygpIHsNCisJCUl0ZW1GbG93SW1wbCBpdGVtRmxvdyA9IG5ldyBJdGVtRmxvd0ltcGwoKTsNCisJCXJldHVybiBpdGVtRmxvdzsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBGbG93UHJvcGVydHkgY3JlYXRlRmxvd1Byb3BlcnR5KCkgew0KKwkJRmxvd1Byb3BlcnR5SW1wbCBmbG93UHJvcGVydHkgPSBuZXcgRmxvd1Byb3BlcnR5SW1wbCgpOw0KKwkJcmV0dXJuIGZsb3dQcm9wZXJ0eTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBGdWxsUG9ydCBjcmVhdGVGdWxsUG9ydCgpIHsNCisJCUZ1bGxQb3J0SW1wbCBmdWxsUG9ydCA9IG5ldyBGdWxsUG9ydEltcGwoKTsNCisJCXJldHVybiBmdWxsUG9ydDsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBJbnRlcmZhY2VCbG9jayBjcmVhdGVJbnRlcmZhY2VCbG9jaygpIHsNCisJCUludGVyZmFjZUJsb2NrSW1wbCBpbnRlcmZhY2VCbG9jayA9IG5ldyBJbnRlcmZhY2VCbG9ja0ltcGwoKTsNCisJCXJldHVybiBpbnRlcmZhY2VCbG9jazsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBQcm94eVBvcnQgY3JlYXRlUHJveHlQb3J0KCkgew0KKwkJUHJveHlQb3J0SW1wbCBwcm94eVBvcnQgPSBuZXcgUHJveHlQb3J0SW1wbCgpOw0KKwkJcmV0dXJuIHByb3h5UG9ydDsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBBY2NlcHRDaGFuZ2VTdHJ1Y3R1cmFsRmVhdHVyZUV2ZW50QWN0aW9uIGNyZWF0ZUFjY2VwdENoYW5nZVN0cnVjdHVyYWxGZWF0dXJlRXZlbnRBY3Rpb24oKSB7DQorCQlBY2NlcHRDaGFuZ2VTdHJ1Y3R1cmFsRmVhdHVyZUV2ZW50QWN0aW9uSW1wbCBhY2NlcHRDaGFuZ2VTdHJ1Y3R1cmFsRmVhdHVyZUV2ZW50QWN0aW9uID0gbmV3IEFjY2VwdENoYW5nZVN0cnVjdHVyYWxGZWF0dXJlRXZlbnRBY3Rpb25JbXBsKCk7DQorCQlyZXR1cm4gYWNjZXB0Q2hhbmdlU3RydWN0dXJhbEZlYXR1cmVFdmVudEFjdGlvbjsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBDaGFuZ2VTdHJ1Y3R1cmFsRmVhdHVyZUV2ZW50IGNyZWF0ZUNoYW5nZVN0cnVjdHVyYWxGZWF0dXJlRXZlbnQoKSB7DQorCQlDaGFuZ2VTdHJ1Y3R1cmFsRmVhdHVyZUV2ZW50SW1wbCBjaGFuZ2VTdHJ1Y3R1cmFsRmVhdHVyZUV2ZW50ID0gbmV3IENoYW5nZVN0cnVjdHVyYWxGZWF0dXJlRXZlbnRJbXBsKCk7DQorCQlyZXR1cm4gY2hhbmdlU3RydWN0dXJhbEZlYXR1cmVFdmVudDsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBEaXJlY3RlZEZlYXR1cmUgY3JlYXRlRGlyZWN0ZWRGZWF0dXJlKCkgew0KKwkJRGlyZWN0ZWRGZWF0dXJlSW1wbCBkaXJlY3RlZEZlYXR1cmUgPSBuZXcgRGlyZWN0ZWRGZWF0dXJlSW1wbCgpOw0KKwkJcmV0dXJuIGRpcmVjdGVkRmVhdHVyZTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBJbnZvY2F0aW9uT25OZXN0ZWRQb3J0QWN0aW9uIGNyZWF0ZUludm9jYXRpb25Pbk5lc3RlZFBvcnRBY3Rpb24oKSB7DQorCQlJbnZvY2F0aW9uT25OZXN0ZWRQb3J0QWN0aW9uSW1wbCBpbnZvY2F0aW9uT25OZXN0ZWRQb3J0QWN0aW9uID0gbmV3IEludm9jYXRpb25Pbk5lc3RlZFBvcnRBY3Rpb25JbXBsKCk7DQorCQlyZXR1cm4gaW52b2NhdGlvbk9uTmVzdGVkUG9ydEFjdGlvbjsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBUcmlnZ2VyT25OZXN0ZWRQb3J0IGNyZWF0ZVRyaWdnZXJPbk5lc3RlZFBvcnQoKSB7DQorCQlUcmlnZ2VyT25OZXN0ZWRQb3J0SW1wbCB0cmlnZ2VyT25OZXN0ZWRQb3J0ID0gbmV3IFRyaWdnZXJPbk5lc3RlZFBvcnRJbXBsKCk7DQorCQlyZXR1cm4gdHJpZ2dlck9uTmVzdGVkUG9ydDsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBGbG93RGlyZWN0aW9uIGNyZWF0ZUZsb3dEaXJlY3Rpb25Gcm9tU3RyaW5nKEVEYXRhVHlwZSBlRGF0YVR5cGUsIFN0cmluZyBpbml0aWFsVmFsdWUpIHsNCisJCUZsb3dEaXJlY3Rpb24gcmVzdWx0ID0gRmxvd0RpcmVjdGlvbi5nZXQoaW5pdGlhbFZhbHVlKTsNCisJCWlmIChyZXN1bHQgPT0gbnVsbCkgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiVGhlIHZhbHVlICciICsgaW5pdGlhbFZhbHVlICsgIicgaXMgbm90IGEgdmFsaWQgZW51bWVyYXRvciBvZiAnIiArIGVEYXRhVHlwZS5nZXROYW1lKCkgKyAiJyIpOyAvLyROT04tTkxTLTEkIC8vJE5PTi1OTFMtMiQgLy8kTk9OLU5MUy0zJA0KKwkJcmV0dXJuIHJlc3VsdDsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBTdHJpbmcgY29udmVydEZsb3dEaXJlY3Rpb25Ub1N0cmluZyhFRGF0YVR5cGUgZURhdGFUeXBlLCBPYmplY3QgaW5zdGFuY2VWYWx1ZSkgew0KKwkJcmV0dXJuIGluc3RhbmNlVmFsdWUgPT0gbnVsbCA/IG51bGwgOiBpbnN0YW5jZVZhbHVlLnRvU3RyaW5nKCk7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgRmVhdHVyZURpcmVjdGlvbiBjcmVhdGVGZWF0dXJlRGlyZWN0aW9uRnJvbVN0cmluZyhFRGF0YVR5cGUgZURhdGFUeXBlLCBTdHJpbmcgaW5pdGlhbFZhbHVlKSB7DQorCQlGZWF0dXJlRGlyZWN0aW9uIHJlc3VsdCA9IEZlYXR1cmVEaXJlY3Rpb24uZ2V0KGluaXRpYWxWYWx1ZSk7DQorCQlpZiAocmVzdWx0ID09IG51bGwpIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIlRoZSB2YWx1ZSAnIiArIGluaXRpYWxWYWx1ZSArICInIGlzIG5vdCBhIHZhbGlkIGVudW1lcmF0b3Igb2YgJyIgKyBlRGF0YVR5cGUuZ2V0TmFtZSgpICsgIiciKTsgLy8kTk9OLU5MUy0xJCAvLyROT04tTkxTLTIkIC8vJE5PTi1OTFMtMyQNCisJCXJldHVybiByZXN1bHQ7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgU3RyaW5nIGNvbnZlcnRGZWF0dXJlRGlyZWN0aW9uVG9TdHJpbmcoRURhdGFUeXBlIGVEYXRhVHlwZSwgT2JqZWN0IGluc3RhbmNlVmFsdWUpIHsNCisJCXJldHVybiBpbnN0YW5jZVZhbHVlID09IG51bGwgPyBudWxsIDogaW5zdGFuY2VWYWx1ZS50b1N0cmluZygpOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIFBvcnRhbmRmbG93c1BhY2thZ2UgZ2V0UG9ydGFuZGZsb3dzUGFja2FnZSgpIHsNCisJCXJldHVybiAoUG9ydGFuZGZsb3dzUGFja2FnZSlnZXRFUGFja2FnZSgpOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGRlcHJlY2F0ZWQNCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQERlcHJlY2F0ZWQNCisJcHVibGljIHN0YXRpYyBQb3J0YW5kZmxvd3NQYWNrYWdlIGdldFBhY2thZ2UoKSB7DQorCQlyZXR1cm4gUG9ydGFuZGZsb3dzUGFja2FnZS5lSU5TVEFOQ0U7DQorCX0NCisNCit9IC8vUG9ydGFuZGZsb3dzRmFjdG9yeUltcGwNCmRpZmYgLS1naXQgYS9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9wb3J0YW5kZmxvd3MvaW50ZXJuYWwvaW1wbC9Qb3J0YW5kZmxvd3NQYWNrYWdlSW1wbC5qYXZhIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvcG9ydGFuZGZsb3dzL2ludGVybmFsL2ltcGwvUG9ydGFuZGZsb3dzUGFja2FnZUltcGwuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZmYxYTc1Ci0tLSAvZGV2L251bGwKKysrIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvcG9ydGFuZGZsb3dzL2ludGVybmFsL2ltcGwvUG9ydGFuZGZsb3dzUGFja2FnZUltcGwuamF2YQpAQCAtMCwwICsxLDY2MiBAQAorLyoqDQorICogQ29weXJpZ2h0IChjKSAyMDE1IENFQSBMSVNULg0KKyAqIA0KKyAqICBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQorICogIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KKyAqICB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KKyAqICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqLw0KK3BhY2thZ2Ugb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnBvcnRhbmRmbG93cy5pbnRlcm5hbC5pbXBsOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRUF0dHJpYnV0ZTsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVDbGFzczsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVFbnVtOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRVBhY2thZ2U7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FUmVmZXJlbmNlOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuaW1wbC5FUGFja2FnZUltcGw7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5hY3Rpdml0aWVzLkFjdGl2aXRpZXNQYWNrYWdlOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYWN0aXZpdGllcy5pbnRlcm5hbC5pbXBsLkFjdGl2aXRpZXNQYWNrYWdlSW1wbDsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmFsbG9jYXRpb25zLkFsbG9jYXRpb25zUGFja2FnZTsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmFsbG9jYXRpb25zLmludGVybmFsLmltcGwuQWxsb2NhdGlvbnNQYWNrYWdlSW1wbDsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmJsb2Nrcy5CbG9ja3NQYWNrYWdlOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYmxvY2tzLmludGVybmFsLmltcGwuQmxvY2tzUGFja2FnZUltcGw7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5jb25zdHJhaW50YmxvY2tzLkNvbnN0cmFpbnRibG9ja3NQYWNrYWdlOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuY29uc3RyYWludGJsb2Nrcy5pbnRlcm5hbC5pbXBsLkNvbnN0cmFpbnRibG9ja3NQYWNrYWdlSW1wbDsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRlcHJlY2F0ZWRlbGVtZW50cy5EZXByZWNhdGVkZWxlbWVudHNQYWNrYWdlOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGVwcmVjYXRlZGVsZW1lbnRzLmludGVybmFsLmltcGwuRGVwcmVjYXRlZGVsZW1lbnRzUGFja2FnZUltcGw7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5tb2RlbGVsZW1lbnRzLk1vZGVsZWxlbWVudHNQYWNrYWdlOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQubW9kZWxlbGVtZW50cy5pbnRlcm5hbC5pbXBsLk1vZGVsZWxlbWVudHNQYWNrYWdlSW1wbDsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnBvcnRhbmRmbG93cy5BY2NlcHRDaGFuZ2VTdHJ1Y3R1cmFsRmVhdHVyZUV2ZW50QWN0aW9uOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucG9ydGFuZGZsb3dzLkNoYW5nZVN0cnVjdHVyYWxGZWF0dXJlRXZlbnQ7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5wb3J0YW5kZmxvd3MuRGlyZWN0ZWRGZWF0dXJlOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucG9ydGFuZGZsb3dzLkZlYXR1cmVEaXJlY3Rpb247DQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5wb3J0YW5kZmxvd3MuRmxvd0RpcmVjdGlvbjsNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnBvcnRhbmRmbG93cy5GbG93UHJvcGVydHk7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5wb3J0YW5kZmxvd3MuRnVsbFBvcnQ7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5wb3J0YW5kZmxvd3MuSW50ZXJmYWNlQmxvY2s7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5wb3J0YW5kZmxvd3MuSW52b2NhdGlvbk9uTmVzdGVkUG9ydEFjdGlvbjsNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnBvcnRhbmRmbG93cy5JdGVtRmxvdzsNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnBvcnRhbmRmbG93cy5Qb3J0YW5kZmxvd3NGYWN0b3J5Ow0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucG9ydGFuZGZsb3dzLlBvcnRhbmRmbG93c1BhY2thZ2U7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5wb3J0YW5kZmxvd3MuUHJveHlQb3J0Ow0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucG9ydGFuZGZsb3dzLlRyaWdnZXJPbk5lc3RlZFBvcnQ7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5yZXF1aXJlbWVudHMuUmVxdWlyZW1lbnRzUGFja2FnZTsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnJlcXVpcmVtZW50cy5pbnRlcm5hbC5pbXBsLlJlcXVpcmVtZW50c1BhY2thZ2VJbXBsOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS51bWwyLnVtbC5VTUxQYWNrYWdlOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS51bWwyLnVtbC5wcm9maWxlLnN0YW5kYXJkLlN0YW5kYXJkUGFja2FnZTsNCisNCisvKioNCisgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKyAqIEFuIGltcGxlbWVudGF0aW9uIG9mIHRoZSBtb2RlbCA8Yj5QYWNrYWdlPC9iPi4NCisgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisgKiBAZ2VuZXJhdGVkDQorICovDQorcHVibGljIGNsYXNzIFBvcnRhbmRmbG93c1BhY2thZ2VJbXBsIGV4dGVuZHMgRVBhY2thZ2VJbXBsIGltcGxlbWVudHMgUG9ydGFuZGZsb3dzUGFja2FnZSB7DQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHJpdmF0ZSBFQ2xhc3MgaXRlbUZsb3dFQ2xhc3MgPSBudWxsOw0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXByaXZhdGUgRUNsYXNzIGZsb3dQcm9wZXJ0eUVDbGFzcyA9IG51bGw7DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHJpdmF0ZSBFQ2xhc3MgZnVsbFBvcnRFQ2xhc3MgPSBudWxsOw0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXByaXZhdGUgRUNsYXNzIGludGVyZmFjZUJsb2NrRUNsYXNzID0gbnVsbDsNCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwcml2YXRlIEVDbGFzcyBwcm94eVBvcnRFQ2xhc3MgPSBudWxsOw0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXByaXZhdGUgRUNsYXNzIGFjY2VwdENoYW5nZVN0cnVjdHVyYWxGZWF0dXJlRXZlbnRBY3Rpb25FQ2xhc3MgPSBudWxsOw0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXByaXZhdGUgRUNsYXNzIGNoYW5nZVN0cnVjdHVyYWxGZWF0dXJlRXZlbnRFQ2xhc3MgPSBudWxsOw0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXByaXZhdGUgRUNsYXNzIGRpcmVjdGVkRmVhdHVyZUVDbGFzcyA9IG51bGw7DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHJpdmF0ZSBFQ2xhc3MgaW52b2NhdGlvbk9uTmVzdGVkUG9ydEFjdGlvbkVDbGFzcyA9IG51bGw7DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHJpdmF0ZSBFQ2xhc3MgdHJpZ2dlck9uTmVzdGVkUG9ydEVDbGFzcyA9IG51bGw7DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHJpdmF0ZSBFRW51bSBmbG93RGlyZWN0aW9uRUVudW0gPSBudWxsOw0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXByaXZhdGUgRUVudW0gZmVhdHVyZURpcmVjdGlvbkVFbnVtID0gbnVsbDsNCisNCisJLyoqDQorCSAqIENyZWF0ZXMgYW4gaW5zdGFuY2Ugb2YgdGhlIG1vZGVsIDxiPlBhY2thZ2U8L2I+LCByZWdpc3RlcmVkIHdpdGgNCisJICoge0BsaW5rIG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FUGFja2FnZS5SZWdpc3RyeSBFUGFja2FnZS5SZWdpc3RyeX0gYnkgdGhlIHBhY2thZ2UNCisJICogcGFja2FnZSBVUkkgdmFsdWUuDQorCSAqIDxwPk5vdGU6IHRoZSBjb3JyZWN0IHdheSB0byBjcmVhdGUgdGhlIHBhY2thZ2UgaXMgdmlhIHRoZSBzdGF0aWMNCisJICogZmFjdG9yeSBtZXRob2Qge0BsaW5rICNpbml0IGluaXQoKX0sIHdoaWNoIGFsc28gcGVyZm9ybXMNCisJICogaW5pdGlhbGl6YXRpb24gb2YgdGhlIHBhY2thZ2UsIG9yIHJldHVybnMgdGhlIHJlZ2lzdGVyZWQgcGFja2FnZSwNCisJICogaWYgb25lIGFscmVhZHkgZXhpc3RzLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHNlZSBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRVBhY2thZ2UuUmVnaXN0cnkNCisJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucG9ydGFuZGZsb3dzLlBvcnRhbmRmbG93c1BhY2thZ2UjZU5TX1VSSQ0KKwkgKiBAc2VlICNpbml0KCkNCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHJpdmF0ZSBQb3J0YW5kZmxvd3NQYWNrYWdlSW1wbCgpIHsNCisJCXN1cGVyKGVOU19VUkksIFBvcnRhbmRmbG93c0ZhY3RvcnkuZUlOU1RBTkNFKTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXByaXZhdGUgc3RhdGljIGJvb2xlYW4gaXNJbml0ZWQgPSBmYWxzZTsNCisNCisJLyoqDQorCSAqIENyZWF0ZXMsIHJlZ2lzdGVycywgYW5kIGluaXRpYWxpemVzIHRoZSA8Yj5QYWNrYWdlPC9iPiBmb3IgdGhpcyBtb2RlbCwgYW5kIGZvciBhbnkgb3RoZXJzIHVwb24gd2hpY2ggaXQgZGVwZW5kcy4NCisJICogDQorCSAqIDxwPlRoaXMgbWV0aG9kIGlzIHVzZWQgdG8gaW5pdGlhbGl6ZSB7QGxpbmsgUG9ydGFuZGZsb3dzUGFja2FnZSNlSU5TVEFOQ0V9IHdoZW4gdGhhdCBmaWVsZCBpcyBhY2Nlc3NlZC4NCisJICogQ2xpZW50cyBzaG91bGQgbm90IGludm9rZSBpdCBkaXJlY3RseS4gSW5zdGVhZCwgdGhleSBzaG91bGQgc2ltcGx5IGFjY2VzcyB0aGF0IGZpZWxkIHRvIG9idGFpbiB0aGUgcGFja2FnZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBzZWUgI2VOU19VUkkNCisJICogQHNlZSAjY3JlYXRlUGFja2FnZUNvbnRlbnRzKCkNCisJICogQHNlZSAjaW5pdGlhbGl6ZVBhY2thZ2VDb250ZW50cygpDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBzdGF0aWMgUG9ydGFuZGZsb3dzUGFja2FnZSBpbml0KCkgew0KKwkJaWYgKGlzSW5pdGVkKSByZXR1cm4gKFBvcnRhbmRmbG93c1BhY2thZ2UpRVBhY2thZ2UuUmVnaXN0cnkuSU5TVEFOQ0UuZ2V0RVBhY2thZ2UoUG9ydGFuZGZsb3dzUGFja2FnZS5lTlNfVVJJKTsNCisNCisJCS8vIE9idGFpbiBvciBjcmVhdGUgYW5kIHJlZ2lzdGVyIHBhY2thZ2UNCisJCVBvcnRhbmRmbG93c1BhY2thZ2VJbXBsIHRoZVBvcnRhbmRmbG93c1BhY2thZ2UgPSAoUG9ydGFuZGZsb3dzUGFja2FnZUltcGwpKEVQYWNrYWdlLlJlZ2lzdHJ5LklOU1RBTkNFLmdldChlTlNfVVJJKSBpbnN0YW5jZW9mIFBvcnRhbmRmbG93c1BhY2thZ2VJbXBsID8gRVBhY2thZ2UuUmVnaXN0cnkuSU5TVEFOQ0UuZ2V0KGVOU19VUkkpIDogbmV3IFBvcnRhbmRmbG93c1BhY2thZ2VJbXBsKCkpOw0KKw0KKwkJaXNJbml0ZWQgPSB0cnVlOw0KKw0KKwkJLy8gSW5pdGlhbGl6ZSBzaW1wbGUgZGVwZW5kZW5jaWVzDQorCQlTdGFuZGFyZFBhY2thZ2UuZUlOU1RBTkNFLmVDbGFzcygpOw0KKw0KKwkJLy8gT2J0YWluIG9yIGNyZWF0ZSBhbmQgcmVnaXN0ZXIgaW50ZXJkZXBlbmRlbmNpZXMNCisJCUJsb2Nrc1BhY2thZ2VJbXBsIHRoZUJsb2Nrc1BhY2thZ2UgPSAoQmxvY2tzUGFja2FnZUltcGwpKEVQYWNrYWdlLlJlZ2lzdHJ5LklOU1RBTkNFLmdldEVQYWNrYWdlKEJsb2Nrc1BhY2thZ2UuZU5TX1VSSSkgaW5zdGFuY2VvZiBCbG9ja3NQYWNrYWdlSW1wbCA/IEVQYWNrYWdlLlJlZ2lzdHJ5LklOU1RBTkNFLmdldEVQYWNrYWdlKEJsb2Nrc1BhY2thZ2UuZU5TX1VSSSkgOiBCbG9ja3NQYWNrYWdlLmVJTlNUQU5DRSk7DQorCQlBY3Rpdml0aWVzUGFja2FnZUltcGwgdGhlQWN0aXZpdGllc1BhY2thZ2UgPSAoQWN0aXZpdGllc1BhY2thZ2VJbXBsKShFUGFja2FnZS5SZWdpc3RyeS5JTlNUQU5DRS5nZXRFUGFja2FnZShBY3Rpdml0aWVzUGFja2FnZS5lTlNfVVJJKSBpbnN0YW5jZW9mIEFjdGl2aXRpZXNQYWNrYWdlSW1wbCA/IEVQYWNrYWdlLlJlZ2lzdHJ5LklOU1RBTkNFLmdldEVQYWNrYWdlKEFjdGl2aXRpZXNQYWNrYWdlLmVOU19VUkkpIDogQWN0aXZpdGllc1BhY2thZ2UuZUlOU1RBTkNFKTsNCisJCU1vZGVsZWxlbWVudHNQYWNrYWdlSW1wbCB0aGVNb2RlbGVsZW1lbnRzUGFja2FnZSA9IChNb2RlbGVsZW1lbnRzUGFja2FnZUltcGwpKEVQYWNrYWdlLlJlZ2lzdHJ5LklOU1RBTkNFLmdldEVQYWNrYWdlKE1vZGVsZWxlbWVudHNQYWNrYWdlLmVOU19VUkkpIGluc3RhbmNlb2YgTW9kZWxlbGVtZW50c1BhY2thZ2VJbXBsID8gRVBhY2thZ2UuUmVnaXN0cnkuSU5TVEFOQ0UuZ2V0RVBhY2thZ2UoTW9kZWxlbGVtZW50c1BhY2thZ2UuZU5TX1VSSSkgOiBNb2RlbGVsZW1lbnRzUGFja2FnZS5lSU5TVEFOQ0UpOw0KKwkJQ29uc3RyYWludGJsb2Nrc1BhY2thZ2VJbXBsIHRoZUNvbnN0cmFpbnRibG9ja3NQYWNrYWdlID0gKENvbnN0cmFpbnRibG9ja3NQYWNrYWdlSW1wbCkoRVBhY2thZ2UuUmVnaXN0cnkuSU5TVEFOQ0UuZ2V0RVBhY2thZ2UoQ29uc3RyYWludGJsb2Nrc1BhY2thZ2UuZU5TX1VSSSkgaW5zdGFuY2VvZiBDb25zdHJhaW50YmxvY2tzUGFja2FnZUltcGwgPyBFUGFja2FnZS5SZWdpc3RyeS5JTlNUQU5DRS5nZXRFUGFja2FnZShDb25zdHJhaW50YmxvY2tzUGFja2FnZS5lTlNfVVJJKSA6IENvbnN0cmFpbnRibG9ja3NQYWNrYWdlLmVJTlNUQU5DRSk7DQorCQlBbGxvY2F0aW9uc1BhY2thZ2VJbXBsIHRoZUFsbG9jYXRpb25zUGFja2FnZSA9IChBbGxvY2F0aW9uc1BhY2thZ2VJbXBsKShFUGFja2FnZS5SZWdpc3RyeS5JTlNUQU5DRS5nZXRFUGFja2FnZShBbGxvY2F0aW9uc1BhY2thZ2UuZU5TX1VSSSkgaW5zdGFuY2VvZiBBbGxvY2F0aW9uc1BhY2thZ2VJbXBsID8gRVBhY2thZ2UuUmVnaXN0cnkuSU5TVEFOQ0UuZ2V0RVBhY2thZ2UoQWxsb2NhdGlvbnNQYWNrYWdlLmVOU19VUkkpIDogQWxsb2NhdGlvbnNQYWNrYWdlLmVJTlNUQU5DRSk7DQorCQlSZXF1aXJlbWVudHNQYWNrYWdlSW1wbCB0aGVSZXF1aXJlbWVudHNQYWNrYWdlID0gKFJlcXVpcmVtZW50c1BhY2thZ2VJbXBsKShFUGFja2FnZS5SZWdpc3RyeS5JTlNUQU5DRS5nZXRFUGFja2FnZShSZXF1aXJlbWVudHNQYWNrYWdlLmVOU19VUkkpIGluc3RhbmNlb2YgUmVxdWlyZW1lbnRzUGFja2FnZUltcGwgPyBFUGFja2FnZS5SZWdpc3RyeS5JTlNUQU5DRS5nZXRFUGFja2FnZShSZXF1aXJlbWVudHNQYWNrYWdlLmVOU19VUkkpIDogUmVxdWlyZW1lbnRzUGFja2FnZS5lSU5TVEFOQ0UpOw0KKwkJRGVwcmVjYXRlZGVsZW1lbnRzUGFja2FnZUltcGwgdGhlRGVwcmVjYXRlZGVsZW1lbnRzUGFja2FnZSA9IChEZXByZWNhdGVkZWxlbWVudHNQYWNrYWdlSW1wbCkoRVBhY2thZ2UuUmVnaXN0cnkuSU5TVEFOQ0UuZ2V0RVBhY2thZ2UoRGVwcmVjYXRlZGVsZW1lbnRzUGFja2FnZS5lTlNfVVJJKSBpbnN0YW5jZW9mIERlcHJlY2F0ZWRlbGVtZW50c1BhY2thZ2VJbXBsID8gRVBhY2thZ2UuUmVnaXN0cnkuSU5TVEFOQ0UuZ2V0RVBhY2thZ2UoRGVwcmVjYXRlZGVsZW1lbnRzUGFja2FnZS5lTlNfVVJJKSA6IERlcHJlY2F0ZWRlbGVtZW50c1BhY2thZ2UuZUlOU1RBTkNFKTsNCisNCisJCS8vIENyZWF0ZSBwYWNrYWdlIG1ldGEtZGF0YSBvYmplY3RzDQorCQl0aGVQb3J0YW5kZmxvd3NQYWNrYWdlLmNyZWF0ZVBhY2thZ2VDb250ZW50cygpOw0KKwkJdGhlQmxvY2tzUGFja2FnZS5jcmVhdGVQYWNrYWdlQ29udGVudHMoKTsNCisJCXRoZUFjdGl2aXRpZXNQYWNrYWdlLmNyZWF0ZVBhY2thZ2VDb250ZW50cygpOw0KKwkJdGhlTW9kZWxlbGVtZW50c1BhY2thZ2UuY3JlYXRlUGFja2FnZUNvbnRlbnRzKCk7DQorCQl0aGVDb25zdHJhaW50YmxvY2tzUGFja2FnZS5jcmVhdGVQYWNrYWdlQ29udGVudHMoKTsNCisJCXRoZUFsbG9jYXRpb25zUGFja2FnZS5jcmVhdGVQYWNrYWdlQ29udGVudHMoKTsNCisJCXRoZVJlcXVpcmVtZW50c1BhY2thZ2UuY3JlYXRlUGFja2FnZUNvbnRlbnRzKCk7DQorCQl0aGVEZXByZWNhdGVkZWxlbWVudHNQYWNrYWdlLmNyZWF0ZVBhY2thZ2VDb250ZW50cygpOw0KKw0KKwkJLy8gSW5pdGlhbGl6ZSBjcmVhdGVkIG1ldGEtZGF0YQ0KKwkJdGhlUG9ydGFuZGZsb3dzUGFja2FnZS5pbml0aWFsaXplUGFja2FnZUNvbnRlbnRzKCk7DQorCQl0aGVCbG9ja3NQYWNrYWdlLmluaXRpYWxpemVQYWNrYWdlQ29udGVudHMoKTsNCisJCXRoZUFjdGl2aXRpZXNQYWNrYWdlLmluaXRpYWxpemVQYWNrYWdlQ29udGVudHMoKTsNCisJCXRoZU1vZGVsZWxlbWVudHNQYWNrYWdlLmluaXRpYWxpemVQYWNrYWdlQ29udGVudHMoKTsNCisJCXRoZUNvbnN0cmFpbnRibG9ja3NQYWNrYWdlLmluaXRpYWxpemVQYWNrYWdlQ29udGVudHMoKTsNCisJCXRoZUFsbG9jYXRpb25zUGFja2FnZS5pbml0aWFsaXplUGFja2FnZUNvbnRlbnRzKCk7DQorCQl0aGVSZXF1aXJlbWVudHNQYWNrYWdlLmluaXRpYWxpemVQYWNrYWdlQ29udGVudHMoKTsNCisJCXRoZURlcHJlY2F0ZWRlbGVtZW50c1BhY2thZ2UuaW5pdGlhbGl6ZVBhY2thZ2VDb250ZW50cygpOw0KKw0KKwkJLy8gTWFyayBtZXRhLWRhdGEgdG8gaW5kaWNhdGUgaXQgY2FuJ3QgYmUgY2hhbmdlZA0KKwkJdGhlUG9ydGFuZGZsb3dzUGFja2FnZS5mcmVlemUoKTsNCisNCisgIA0KKwkJLy8gVXBkYXRlIHRoZSByZWdpc3RyeSBhbmQgcmV0dXJuIHRoZSBwYWNrYWdlDQorCQlFUGFja2FnZS5SZWdpc3RyeS5JTlNUQU5DRS5wdXQoUG9ydGFuZGZsb3dzUGFja2FnZS5lTlNfVVJJLCB0aGVQb3J0YW5kZmxvd3NQYWNrYWdlKTsNCisJCXJldHVybiB0aGVQb3J0YW5kZmxvd3NQYWNrYWdlOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIEVDbGFzcyBnZXRJdGVtRmxvdygpIHsNCisJCXJldHVybiBpdGVtRmxvd0VDbGFzczsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBFUmVmZXJlbmNlIGdldEl0ZW1GbG93X0Jhc2VfSW5mb3JtYXRpb25GbG93KCkgew0KKwkJcmV0dXJuIChFUmVmZXJlbmNlKWl0ZW1GbG93RUNsYXNzLmdldEVTdHJ1Y3R1cmFsRmVhdHVyZXMoKS5nZXQoMCk7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgRVJlZmVyZW5jZSBnZXRJdGVtRmxvd19JdGVtUHJvcGVydHkoKSB7DQorCQlyZXR1cm4gKEVSZWZlcmVuY2UpaXRlbUZsb3dFQ2xhc3MuZ2V0RVN0cnVjdHVyYWxGZWF0dXJlcygpLmdldCgxKTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBFQ2xhc3MgZ2V0Rmxvd1Byb3BlcnR5KCkgew0KKwkJcmV0dXJuIGZsb3dQcm9wZXJ0eUVDbGFzczsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBFUmVmZXJlbmNlIGdldEZsb3dQcm9wZXJ0eV9CYXNlX1Byb3BlcnR5KCkgew0KKwkJcmV0dXJuIChFUmVmZXJlbmNlKWZsb3dQcm9wZXJ0eUVDbGFzcy5nZXRFU3RydWN0dXJhbEZlYXR1cmVzKCkuZ2V0KDApOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIEVBdHRyaWJ1dGUgZ2V0Rmxvd1Byb3BlcnR5X0RpcmVjdGlvbigpIHsNCisJCXJldHVybiAoRUF0dHJpYnV0ZSlmbG93UHJvcGVydHlFQ2xhc3MuZ2V0RVN0cnVjdHVyYWxGZWF0dXJlcygpLmdldCgxKTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBFQ2xhc3MgZ2V0RnVsbFBvcnQoKSB7DQorCQlyZXR1cm4gZnVsbFBvcnRFQ2xhc3M7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgRVJlZmVyZW5jZSBnZXRGdWxsUG9ydF9CYXNlX1BvcnQoKSB7DQorCQlyZXR1cm4gKEVSZWZlcmVuY2UpZnVsbFBvcnRFQ2xhc3MuZ2V0RVN0cnVjdHVyYWxGZWF0dXJlcygpLmdldCgwKTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBFQ2xhc3MgZ2V0SW50ZXJmYWNlQmxvY2soKSB7DQorCQlyZXR1cm4gaW50ZXJmYWNlQmxvY2tFQ2xhc3M7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgRUNsYXNzIGdldFByb3h5UG9ydCgpIHsNCisJCXJldHVybiBwcm94eVBvcnRFQ2xhc3M7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgRVJlZmVyZW5jZSBnZXRQcm94eVBvcnRfQmFzZV9Qb3J0KCkgew0KKwkJcmV0dXJuIChFUmVmZXJlbmNlKXByb3h5UG9ydEVDbGFzcy5nZXRFU3RydWN0dXJhbEZlYXR1cmVzKCkuZ2V0KDApOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIEVDbGFzcyBnZXRBY2NlcHRDaGFuZ2VTdHJ1Y3R1cmFsRmVhdHVyZUV2ZW50QWN0aW9uKCkgew0KKwkJcmV0dXJuIGFjY2VwdENoYW5nZVN0cnVjdHVyYWxGZWF0dXJlRXZlbnRBY3Rpb25FQ2xhc3M7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgRVJlZmVyZW5jZSBnZXRBY2NlcHRDaGFuZ2VTdHJ1Y3R1cmFsRmVhdHVyZUV2ZW50QWN0aW9uX0Jhc2VfQWNjZXB0RXZlbnRBY3Rpb24oKSB7DQorCQlyZXR1cm4gKEVSZWZlcmVuY2UpYWNjZXB0Q2hhbmdlU3RydWN0dXJhbEZlYXR1cmVFdmVudEFjdGlvbkVDbGFzcy5nZXRFU3RydWN0dXJhbEZlYXR1cmVzKCkuZ2V0KDApOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIEVDbGFzcyBnZXRDaGFuZ2VTdHJ1Y3R1cmFsRmVhdHVyZUV2ZW50KCkgew0KKwkJcmV0dXJuIGNoYW5nZVN0cnVjdHVyYWxGZWF0dXJlRXZlbnRFQ2xhc3M7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgRVJlZmVyZW5jZSBnZXRDaGFuZ2VTdHJ1Y3R1cmFsRmVhdHVyZUV2ZW50X0Jhc2VfQ2hhbmdlRXZlbnQoKSB7DQorCQlyZXR1cm4gKEVSZWZlcmVuY2UpY2hhbmdlU3RydWN0dXJhbEZlYXR1cmVFdmVudEVDbGFzcy5nZXRFU3RydWN0dXJhbEZlYXR1cmVzKCkuZ2V0KDApOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIEVSZWZlcmVuY2UgZ2V0Q2hhbmdlU3RydWN0dXJhbEZlYXR1cmVFdmVudF9TdHJ1Y3R1cmFsRmVhdHVyZSgpIHsNCisJCXJldHVybiAoRVJlZmVyZW5jZSljaGFuZ2VTdHJ1Y3R1cmFsRmVhdHVyZUV2ZW50RUNsYXNzLmdldEVTdHJ1Y3R1cmFsRmVhdHVyZXMoKS5nZXQoMSk7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgRUNsYXNzIGdldERpcmVjdGVkRmVhdHVyZSgpIHsNCisJCXJldHVybiBkaXJlY3RlZEZlYXR1cmVFQ2xhc3M7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgRVJlZmVyZW5jZSBnZXREaXJlY3RlZEZlYXR1cmVfQmFzZV9GZWF0dXJlKCkgew0KKwkJcmV0dXJuIChFUmVmZXJlbmNlKWRpcmVjdGVkRmVhdHVyZUVDbGFzcy5nZXRFU3RydWN0dXJhbEZlYXR1cmVzKCkuZ2V0KDApOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIEVBdHRyaWJ1dGUgZ2V0RGlyZWN0ZWRGZWF0dXJlX0ZlYXR1cmVEaXJlY3Rpb24oKSB7DQorCQlyZXR1cm4gKEVBdHRyaWJ1dGUpZGlyZWN0ZWRGZWF0dXJlRUNsYXNzLmdldEVTdHJ1Y3R1cmFsRmVhdHVyZXMoKS5nZXQoMSk7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgRUNsYXNzIGdldEludm9jYXRpb25Pbk5lc3RlZFBvcnRBY3Rpb24oKSB7DQorCQlyZXR1cm4gaW52b2NhdGlvbk9uTmVzdGVkUG9ydEFjdGlvbkVDbGFzczsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBFUmVmZXJlbmNlIGdldEludm9jYXRpb25Pbk5lc3RlZFBvcnRBY3Rpb25fQmFzZV9JbnZvY2F0aW9uQWN0aW9uKCkgew0KKwkJcmV0dXJuIChFUmVmZXJlbmNlKWludm9jYXRpb25Pbk5lc3RlZFBvcnRBY3Rpb25FQ2xhc3MuZ2V0RVN0cnVjdHVyYWxGZWF0dXJlcygpLmdldCgwKTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBFUmVmZXJlbmNlIGdldEludm9jYXRpb25Pbk5lc3RlZFBvcnRBY3Rpb25fT25OZXN0ZWRQb3J0KCkgew0KKwkJcmV0dXJuIChFUmVmZXJlbmNlKWludm9jYXRpb25Pbk5lc3RlZFBvcnRBY3Rpb25FQ2xhc3MuZ2V0RVN0cnVjdHVyYWxGZWF0dXJlcygpLmdldCgxKTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBFQ2xhc3MgZ2V0VHJpZ2dlck9uTmVzdGVkUG9ydCgpIHsNCisJCXJldHVybiB0cmlnZ2VyT25OZXN0ZWRQb3J0RUNsYXNzOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIEVSZWZlcmVuY2UgZ2V0VHJpZ2dlck9uTmVzdGVkUG9ydF9CYXNlX1RyaWdnZXIoKSB7DQorCQlyZXR1cm4gKEVSZWZlcmVuY2UpdHJpZ2dlck9uTmVzdGVkUG9ydEVDbGFzcy5nZXRFU3RydWN0dXJhbEZlYXR1cmVzKCkuZ2V0KDApOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIEVSZWZlcmVuY2UgZ2V0VHJpZ2dlck9uTmVzdGVkUG9ydF9Pbk5lc3RlZFBvcnQoKSB7DQorCQlyZXR1cm4gKEVSZWZlcmVuY2UpdHJpZ2dlck9uTmVzdGVkUG9ydEVDbGFzcy5nZXRFU3RydWN0dXJhbEZlYXR1cmVzKCkuZ2V0KDEpOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIEVFbnVtIGdldEZsb3dEaXJlY3Rpb24oKSB7DQorCQlyZXR1cm4gZmxvd0RpcmVjdGlvbkVFbnVtOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIEVFbnVtIGdldEZlYXR1cmVEaXJlY3Rpb24oKSB7DQorCQlyZXR1cm4gZmVhdHVyZURpcmVjdGlvbkVFbnVtOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIFBvcnRhbmRmbG93c0ZhY3RvcnkgZ2V0UG9ydGFuZGZsb3dzRmFjdG9yeSgpIHsNCisJCXJldHVybiAoUG9ydGFuZGZsb3dzRmFjdG9yeSlnZXRFRmFjdG9yeUluc3RhbmNlKCk7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwcml2YXRlIGJvb2xlYW4gaXNDcmVhdGVkID0gZmFsc2U7DQorDQorCS8qKg0KKwkgKiBDcmVhdGVzIHRoZSBtZXRhLW1vZGVsIG9iamVjdHMgZm9yIHRoZSBwYWNrYWdlLiAgVGhpcyBtZXRob2QgaXMNCisJICogZ3VhcmRlZCB0byBoYXZlIG5vIGFmZmVjdCBvbiBhbnkgaW52b2NhdGlvbiBidXQgaXRzIGZpcnN0Lg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIHZvaWQgY3JlYXRlUGFja2FnZUNvbnRlbnRzKCkgew0KKwkJaWYgKGlzQ3JlYXRlZCkgcmV0dXJuOw0KKwkJaXNDcmVhdGVkID0gdHJ1ZTsNCisNCisJCS8vIENyZWF0ZSBjbGFzc2VzIGFuZCB0aGVpciBmZWF0dXJlcw0KKwkJaXRlbUZsb3dFQ2xhc3MgPSBjcmVhdGVFQ2xhc3MoSVRFTV9GTE9XKTsNCisJCWNyZWF0ZUVSZWZlcmVuY2UoaXRlbUZsb3dFQ2xhc3MsIElURU1fRkxPV19fQkFTRV9JTkZPUk1BVElPTl9GTE9XKTsNCisJCWNyZWF0ZUVSZWZlcmVuY2UoaXRlbUZsb3dFQ2xhc3MsIElURU1fRkxPV19fSVRFTV9QUk9QRVJUWSk7DQorDQorCQlmbG93UHJvcGVydHlFQ2xhc3MgPSBjcmVhdGVFQ2xhc3MoRkxPV19QUk9QRVJUWSk7DQorCQljcmVhdGVFUmVmZXJlbmNlKGZsb3dQcm9wZXJ0eUVDbGFzcywgRkxPV19QUk9QRVJUWV9fQkFTRV9QUk9QRVJUWSk7DQorCQljcmVhdGVFQXR0cmlidXRlKGZsb3dQcm9wZXJ0eUVDbGFzcywgRkxPV19QUk9QRVJUWV9fRElSRUNUSU9OKTsNCisNCisJCWZ1bGxQb3J0RUNsYXNzID0gY3JlYXRlRUNsYXNzKEZVTExfUE9SVCk7DQorCQljcmVhdGVFUmVmZXJlbmNlKGZ1bGxQb3J0RUNsYXNzLCBGVUxMX1BPUlRfX0JBU0VfUE9SVCk7DQorDQorCQlpbnRlcmZhY2VCbG9ja0VDbGFzcyA9IGNyZWF0ZUVDbGFzcyhJTlRFUkZBQ0VfQkxPQ0spOw0KKw0KKwkJcHJveHlQb3J0RUNsYXNzID0gY3JlYXRlRUNsYXNzKFBST1hZX1BPUlQpOw0KKwkJY3JlYXRlRVJlZmVyZW5jZShwcm94eVBvcnRFQ2xhc3MsIFBST1hZX1BPUlRfX0JBU0VfUE9SVCk7DQorDQorCQlhY2NlcHRDaGFuZ2VTdHJ1Y3R1cmFsRmVhdHVyZUV2ZW50QWN0aW9uRUNsYXNzID0gY3JlYXRlRUNsYXNzKEFDQ0VQVF9DSEFOR0VfU1RSVUNUVVJBTF9GRUFUVVJFX0VWRU5UX0FDVElPTik7DQorCQljcmVhdGVFUmVmZXJlbmNlKGFjY2VwdENoYW5nZVN0cnVjdHVyYWxGZWF0dXJlRXZlbnRBY3Rpb25FQ2xhc3MsIEFDQ0VQVF9DSEFOR0VfU1RSVUNUVVJBTF9GRUFUVVJFX0VWRU5UX0FDVElPTl9fQkFTRV9BQ0NFUFRfRVZFTlRfQUNUSU9OKTsNCisNCisJCWNoYW5nZVN0cnVjdHVyYWxGZWF0dXJlRXZlbnRFQ2xhc3MgPSBjcmVhdGVFQ2xhc3MoQ0hBTkdFX1NUUlVDVFVSQUxfRkVBVFVSRV9FVkVOVCk7DQorCQljcmVhdGVFUmVmZXJlbmNlKGNoYW5nZVN0cnVjdHVyYWxGZWF0dXJlRXZlbnRFQ2xhc3MsIENIQU5HRV9TVFJVQ1RVUkFMX0ZFQVRVUkVfRVZFTlRfX0JBU0VfQ0hBTkdFX0VWRU5UKTsNCisJCWNyZWF0ZUVSZWZlcmVuY2UoY2hhbmdlU3RydWN0dXJhbEZlYXR1cmVFdmVudEVDbGFzcywgQ0hBTkdFX1NUUlVDVFVSQUxfRkVBVFVSRV9FVkVOVF9fU1RSVUNUVVJBTF9GRUFUVVJFKTsNCisNCisJCWRpcmVjdGVkRmVhdHVyZUVDbGFzcyA9IGNyZWF0ZUVDbGFzcyhESVJFQ1RFRF9GRUFUVVJFKTsNCisJCWNyZWF0ZUVSZWZlcmVuY2UoZGlyZWN0ZWRGZWF0dXJlRUNsYXNzLCBESVJFQ1RFRF9GRUFUVVJFX19CQVNFX0ZFQVRVUkUpOw0KKwkJY3JlYXRlRUF0dHJpYnV0ZShkaXJlY3RlZEZlYXR1cmVFQ2xhc3MsIERJUkVDVEVEX0ZFQVRVUkVfX0ZFQVRVUkVfRElSRUNUSU9OKTsNCisNCisJCWludm9jYXRpb25Pbk5lc3RlZFBvcnRBY3Rpb25FQ2xhc3MgPSBjcmVhdGVFQ2xhc3MoSU5WT0NBVElPTl9PTl9ORVNURURfUE9SVF9BQ1RJT04pOw0KKwkJY3JlYXRlRVJlZmVyZW5jZShpbnZvY2F0aW9uT25OZXN0ZWRQb3J0QWN0aW9uRUNsYXNzLCBJTlZPQ0FUSU9OX09OX05FU1RFRF9QT1JUX0FDVElPTl9fQkFTRV9JTlZPQ0FUSU9OX0FDVElPTik7DQorCQljcmVhdGVFUmVmZXJlbmNlKGludm9jYXRpb25Pbk5lc3RlZFBvcnRBY3Rpb25FQ2xhc3MsIElOVk9DQVRJT05fT05fTkVTVEVEX1BPUlRfQUNUSU9OX19PTl9ORVNURURfUE9SVCk7DQorDQorCQl0cmlnZ2VyT25OZXN0ZWRQb3J0RUNsYXNzID0gY3JlYXRlRUNsYXNzKFRSSUdHRVJfT05fTkVTVEVEX1BPUlQpOw0KKwkJY3JlYXRlRVJlZmVyZW5jZSh0cmlnZ2VyT25OZXN0ZWRQb3J0RUNsYXNzLCBUUklHR0VSX09OX05FU1RFRF9QT1JUX19CQVNFX1RSSUdHRVIpOw0KKwkJY3JlYXRlRVJlZmVyZW5jZSh0cmlnZ2VyT25OZXN0ZWRQb3J0RUNsYXNzLCBUUklHR0VSX09OX05FU1RFRF9QT1JUX19PTl9ORVNURURfUE9SVCk7DQorDQorCQkvLyBDcmVhdGUgZW51bXMNCisJCWZsb3dEaXJlY3Rpb25FRW51bSA9IGNyZWF0ZUVFbnVtKEZMT1dfRElSRUNUSU9OKTsNCisJCWZlYXR1cmVEaXJlY3Rpb25FRW51bSA9IGNyZWF0ZUVFbnVtKEZFQVRVUkVfRElSRUNUSU9OKTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXByaXZhdGUgYm9vbGVhbiBpc0luaXRpYWxpemVkID0gZmFsc2U7DQorDQorCS8qKg0KKwkgKiBDb21wbGV0ZSB0aGUgaW5pdGlhbGl6YXRpb24gb2YgdGhlIHBhY2thZ2UgYW5kIGl0cyBtZXRhLW1vZGVsLiAgVGhpcw0KKwkgKiBtZXRob2QgaXMgZ3VhcmRlZCB0byBoYXZlIG5vIGFmZmVjdCBvbiBhbnkgaW52b2NhdGlvbiBidXQgaXRzIGZpcnN0Lg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIHZvaWQgaW5pdGlhbGl6ZVBhY2thZ2VDb250ZW50cygpIHsNCisJCWlmIChpc0luaXRpYWxpemVkKSByZXR1cm47DQorCQlpc0luaXRpYWxpemVkID0gdHJ1ZTsNCisNCisJCS8vIEluaXRpYWxpemUgcGFja2FnZQ0KKwkJc2V0TmFtZShlTkFNRSk7DQorCQlzZXROc1ByZWZpeChlTlNfUFJFRklYKTsNCisJCXNldE5zVVJJKGVOU19VUkkpOw0KKw0KKwkJLy8gT2J0YWluIG90aGVyIGRlcGVuZGVudCBwYWNrYWdlcw0KKwkJVU1MUGFja2FnZSB0aGVVTUxQYWNrYWdlID0gKFVNTFBhY2thZ2UpRVBhY2thZ2UuUmVnaXN0cnkuSU5TVEFOQ0UuZ2V0RVBhY2thZ2UoVU1MUGFja2FnZS5lTlNfVVJJKTsNCisJCUJsb2Nrc1BhY2thZ2UgdGhlQmxvY2tzUGFja2FnZSA9IChCbG9ja3NQYWNrYWdlKUVQYWNrYWdlLlJlZ2lzdHJ5LklOU1RBTkNFLmdldEVQYWNrYWdlKEJsb2Nrc1BhY2thZ2UuZU5TX1VSSSk7DQorDQorCQkvLyBDcmVhdGUgdHlwZSBwYXJhbWV0ZXJzDQorDQorCQkvLyBTZXQgYm91bmRzIGZvciB0eXBlIHBhcmFtZXRlcnMNCisNCisJCS8vIEFkZCBzdXBlcnR5cGVzIHRvIGNsYXNzZXMNCisJCWludGVyZmFjZUJsb2NrRUNsYXNzLmdldEVTdXBlclR5cGVzKCkuYWRkKHRoZUJsb2Nrc1BhY2thZ2UuZ2V0QmxvY2soKSk7DQorCQlpbnZvY2F0aW9uT25OZXN0ZWRQb3J0QWN0aW9uRUNsYXNzLmdldEVTdXBlclR5cGVzKCkuYWRkKHRoZUJsb2Nrc1BhY2thZ2UuZ2V0RWxlbWVudFByb3BlcnR5UGF0aCgpKTsNCisJCXRyaWdnZXJPbk5lc3RlZFBvcnRFQ2xhc3MuZ2V0RVN1cGVyVHlwZXMoKS5hZGQodGhlQmxvY2tzUGFja2FnZS5nZXRFbGVtZW50UHJvcGVydHlQYXRoKCkpOw0KKw0KKwkJLy8gSW5pdGlhbGl6ZSBjbGFzc2VzLCBmZWF0dXJlcywgYW5kIG9wZXJhdGlvbnM7IGFkZCBwYXJhbWV0ZXJzDQorCQlpbml0RUNsYXNzKGl0ZW1GbG93RUNsYXNzLCBJdGVtRmxvdy5jbGFzcywgIkl0ZW1GbG93IiwgIUlTX0FCU1RSQUNULCAhSVNfSU5URVJGQUNFLCBJU19HRU5FUkFURURfSU5TVEFOQ0VfQ0xBU1MpOyAvLyROT04tTkxTLTEkDQorCQlpbml0RVJlZmVyZW5jZShnZXRJdGVtRmxvd19CYXNlX0luZm9ybWF0aW9uRmxvdygpLCB0aGVVTUxQYWNrYWdlLmdldEluZm9ybWF0aW9uRmxvdygpLCBudWxsLCAiYmFzZV9JbmZvcm1hdGlvbkZsb3ciLCBudWxsLCAwLCAxLCBJdGVtRmxvdy5jbGFzcywgIUlTX1RSQU5TSUVOVCwgIUlTX1ZPTEFUSUxFLCBJU19DSEFOR0VBQkxFLCAhSVNfQ09NUE9TSVRFLCBJU19SRVNPTFZFX1BST1hJRVMsICFJU19VTlNFVFRBQkxFLCBJU19VTklRVUUsICFJU19ERVJJVkVELCAhSVNfT1JERVJFRCk7IC8vJE5PTi1OTFMtMSQNCisJCWluaXRFUmVmZXJlbmNlKGdldEl0ZW1GbG93X0l0ZW1Qcm9wZXJ0eSgpLCB0aGVVTUxQYWNrYWdlLmdldFByb3BlcnR5KCksIG51bGwsICJpdGVtUHJvcGVydHkiLCBudWxsLCAwLCAxLCBJdGVtRmxvdy5jbGFzcywgIUlTX1RSQU5TSUVOVCwgIUlTX1ZPTEFUSUxFLCBJU19DSEFOR0VBQkxFLCAhSVNfQ09NUE9TSVRFLCBJU19SRVNPTFZFX1BST1hJRVMsICFJU19VTlNFVFRBQkxFLCBJU19VTklRVUUsICFJU19ERVJJVkVELCAhSVNfT1JERVJFRCk7IC8vJE5PTi1OTFMtMSQNCisNCisJCWluaXRFQ2xhc3MoZmxvd1Byb3BlcnR5RUNsYXNzLCBGbG93UHJvcGVydHkuY2xhc3MsICJGbG93UHJvcGVydHkiLCAhSVNfQUJTVFJBQ1QsICFJU19JTlRFUkZBQ0UsIElTX0dFTkVSQVRFRF9JTlNUQU5DRV9DTEFTUyk7IC8vJE5PTi1OTFMtMSQNCisJCWluaXRFUmVmZXJlbmNlKGdldEZsb3dQcm9wZXJ0eV9CYXNlX1Byb3BlcnR5KCksIHRoZVVNTFBhY2thZ2UuZ2V0UHJvcGVydHkoKSwgbnVsbCwgImJhc2VfUHJvcGVydHkiLCBudWxsLCAwLCAxLCBGbG93UHJvcGVydHkuY2xhc3MsICFJU19UUkFOU0lFTlQsICFJU19WT0xBVElMRSwgSVNfQ0hBTkdFQUJMRSwgIUlTX0NPTVBPU0lURSwgSVNfUkVTT0xWRV9QUk9YSUVTLCAhSVNfVU5TRVRUQUJMRSwgSVNfVU5JUVVFLCAhSVNfREVSSVZFRCwgIUlTX09SREVSRUQpOyAvLyROT04tTkxTLTEkDQorCQlpbml0RUF0dHJpYnV0ZShnZXRGbG93UHJvcGVydHlfRGlyZWN0aW9uKCksIHRoaXMuZ2V0Rmxvd0RpcmVjdGlvbigpLCAiZGlyZWN0aW9uIiwgImlub3V0IiwgMSwgMSwgRmxvd1Byb3BlcnR5LmNsYXNzLCAhSVNfVFJBTlNJRU5ULCAhSVNfVk9MQVRJTEUsIElTX0NIQU5HRUFCTEUsICFJU19VTlNFVFRBQkxFLCAhSVNfSUQsIElTX1VOSVFVRSwgIUlTX0RFUklWRUQsICFJU19PUkRFUkVEKTsgLy8kTk9OLU5MUy0xJCAvLyROT04tTkxTLTIkDQorDQorCQlpbml0RUNsYXNzKGZ1bGxQb3J0RUNsYXNzLCBGdWxsUG9ydC5jbGFzcywgIkZ1bGxQb3J0IiwgIUlTX0FCU1RSQUNULCAhSVNfSU5URVJGQUNFLCBJU19HRU5FUkFURURfSU5TVEFOQ0VfQ0xBU1MpOyAvLyROT04tTkxTLTEkDQorCQlpbml0RVJlZmVyZW5jZShnZXRGdWxsUG9ydF9CYXNlX1BvcnQoKSwgdGhlVU1MUGFja2FnZS5nZXRQb3J0KCksIG51bGwsICJiYXNlX1BvcnQiLCBudWxsLCAwLCAxLCBGdWxsUG9ydC5jbGFzcywgIUlTX1RSQU5TSUVOVCwgIUlTX1ZPTEFUSUxFLCBJU19DSEFOR0VBQkxFLCAhSVNfQ09NUE9TSVRFLCBJU19SRVNPTFZFX1BST1hJRVMsICFJU19VTlNFVFRBQkxFLCBJU19VTklRVUUsICFJU19ERVJJVkVELCAhSVNfT1JERVJFRCk7IC8vJE5PTi1OTFMtMSQNCisNCisJCWluaXRFQ2xhc3MoaW50ZXJmYWNlQmxvY2tFQ2xhc3MsIEludGVyZmFjZUJsb2NrLmNsYXNzLCAiSW50ZXJmYWNlQmxvY2siLCAhSVNfQUJTVFJBQ1QsICFJU19JTlRFUkZBQ0UsIElTX0dFTkVSQVRFRF9JTlNUQU5DRV9DTEFTUyk7IC8vJE5PTi1OTFMtMSQNCisNCisJCWluaXRFQ2xhc3MocHJveHlQb3J0RUNsYXNzLCBQcm94eVBvcnQuY2xhc3MsICJQcm94eVBvcnQiLCAhSVNfQUJTVFJBQ1QsICFJU19JTlRFUkZBQ0UsIElTX0dFTkVSQVRFRF9JTlNUQU5DRV9DTEFTUyk7IC8vJE5PTi1OTFMtMSQNCisJCWluaXRFUmVmZXJlbmNlKGdldFByb3h5UG9ydF9CYXNlX1BvcnQoKSwgdGhlVU1MUGFja2FnZS5nZXRQb3J0KCksIG51bGwsICJiYXNlX1BvcnQiLCBudWxsLCAwLCAxLCBQcm94eVBvcnQuY2xhc3MsICFJU19UUkFOU0lFTlQsICFJU19WT0xBVElMRSwgSVNfQ0hBTkdFQUJMRSwgIUlTX0NPTVBPU0lURSwgSVNfUkVTT0xWRV9QUk9YSUVTLCAhSVNfVU5TRVRUQUJMRSwgSVNfVU5JUVVFLCAhSVNfREVSSVZFRCwgIUlTX09SREVSRUQpOyAvLyROT04tTkxTLTEkDQorDQorCQlpbml0RUNsYXNzKGFjY2VwdENoYW5nZVN0cnVjdHVyYWxGZWF0dXJlRXZlbnRBY3Rpb25FQ2xhc3MsIEFjY2VwdENoYW5nZVN0cnVjdHVyYWxGZWF0dXJlRXZlbnRBY3Rpb24uY2xhc3MsICJBY2NlcHRDaGFuZ2VTdHJ1Y3R1cmFsRmVhdHVyZUV2ZW50QWN0aW9uIiwgIUlTX0FCU1RSQUNULCAhSVNfSU5URVJGQUNFLCBJU19HRU5FUkFURURfSU5TVEFOQ0VfQ0xBU1MpOyAvLyROT04tTkxTLTEkDQorCQlpbml0RVJlZmVyZW5jZShnZXRBY2NlcHRDaGFuZ2VTdHJ1Y3R1cmFsRmVhdHVyZUV2ZW50QWN0aW9uX0Jhc2VfQWNjZXB0RXZlbnRBY3Rpb24oKSwgdGhlVU1MUGFja2FnZS5nZXRBY2NlcHRFdmVudEFjdGlvbigpLCBudWxsLCAiYmFzZV9BY2NlcHRFdmVudEFjdGlvbiIsIG51bGwsIDAsIDEsIEFjY2VwdENoYW5nZVN0cnVjdHVyYWxGZWF0dXJlRXZlbnRBY3Rpb24uY2xhc3MsICFJU19UUkFOU0lFTlQsICFJU19WT0xBVElMRSwgSVNfQ0hBTkdFQUJMRSwgIUlTX0NPTVBPU0lURSwgSVNfUkVTT0xWRV9QUk9YSUVTLCAhSVNfVU5TRVRUQUJMRSwgSVNfVU5JUVVFLCAhSVNfREVSSVZFRCwgIUlTX09SREVSRUQpOyAvLyROT04tTkxTLTEkDQorDQorCQlpbml0RUNsYXNzKGNoYW5nZVN0cnVjdHVyYWxGZWF0dXJlRXZlbnRFQ2xhc3MsIENoYW5nZVN0cnVjdHVyYWxGZWF0dXJlRXZlbnQuY2xhc3MsICJDaGFuZ2VTdHJ1Y3R1cmFsRmVhdHVyZUV2ZW50IiwgIUlTX0FCU1RSQUNULCAhSVNfSU5URVJGQUNFLCBJU19HRU5FUkFURURfSU5TVEFOQ0VfQ0xBU1MpOyAvLyROT04tTkxTLTEkDQorCQlpbml0RVJlZmVyZW5jZShnZXRDaGFuZ2VTdHJ1Y3R1cmFsRmVhdHVyZUV2ZW50X0Jhc2VfQ2hhbmdlRXZlbnQoKSwgdGhlVU1MUGFja2FnZS5nZXRDaGFuZ2VFdmVudCgpLCBudWxsLCAiYmFzZV9DaGFuZ2VFdmVudCIsIG51bGwsIDAsIDEsIENoYW5nZVN0cnVjdHVyYWxGZWF0dXJlRXZlbnQuY2xhc3MsICFJU19UUkFOU0lFTlQsICFJU19WT0xBVElMRSwgSVNfQ0hBTkdFQUJMRSwgIUlTX0NPTVBPU0lURSwgSVNfUkVTT0xWRV9QUk9YSUVTLCAhSVNfVU5TRVRUQUJMRSwgSVNfVU5JUVVFLCAhSVNfREVSSVZFRCwgIUlTX09SREVSRUQpOyAvLyROT04tTkxTLTEkDQorCQlpbml0RVJlZmVyZW5jZShnZXRDaGFuZ2VTdHJ1Y3R1cmFsRmVhdHVyZUV2ZW50X1N0cnVjdHVyYWxGZWF0dXJlKCksIHRoZVVNTFBhY2thZ2UuZ2V0U3RydWN0dXJhbEZlYXR1cmUoKSwgbnVsbCwgInN0cnVjdHVyYWxGZWF0dXJlIiwgbnVsbCwgMSwgMSwgQ2hhbmdlU3RydWN0dXJhbEZlYXR1cmVFdmVudC5jbGFzcywgIUlTX1RSQU5TSUVOVCwgIUlTX1ZPTEFUSUxFLCBJU19DSEFOR0VBQkxFLCAhSVNfQ09NUE9TSVRFLCBJU19SRVNPTFZFX1BST1hJRVMsICFJU19VTlNFVFRBQkxFLCBJU19VTklRVUUsICFJU19ERVJJVkVELCAhSVNfT1JERVJFRCk7IC8vJE5PTi1OTFMtMSQNCisNCisJCWluaXRFQ2xhc3MoZGlyZWN0ZWRGZWF0dXJlRUNsYXNzLCBEaXJlY3RlZEZlYXR1cmUuY2xhc3MsICJEaXJlY3RlZEZlYXR1cmUiLCAhSVNfQUJTVFJBQ1QsICFJU19JTlRFUkZBQ0UsIElTX0dFTkVSQVRFRF9JTlNUQU5DRV9DTEFTUyk7IC8vJE5PTi1OTFMtMSQNCisJCWluaXRFUmVmZXJlbmNlKGdldERpcmVjdGVkRmVhdHVyZV9CYXNlX0ZlYXR1cmUoKSwgdGhlVU1MUGFja2FnZS5nZXRGZWF0dXJlKCksIG51bGwsICJiYXNlX0ZlYXR1cmUiLCBudWxsLCAwLCAxLCBEaXJlY3RlZEZlYXR1cmUuY2xhc3MsICFJU19UUkFOU0lFTlQsICFJU19WT0xBVElMRSwgSVNfQ0hBTkdFQUJMRSwgIUlTX0NPTVBPU0lURSwgSVNfUkVTT0xWRV9QUk9YSUVTLCAhSVNfVU5TRVRUQUJMRSwgSVNfVU5JUVVFLCAhSVNfREVSSVZFRCwgIUlTX09SREVSRUQpOyAvLyROT04tTkxTLTEkDQorCQlpbml0RUF0dHJpYnV0ZShnZXREaXJlY3RlZEZlYXR1cmVfRmVhdHVyZURpcmVjdGlvbigpLCB0aGlzLmdldEZlYXR1cmVEaXJlY3Rpb24oKSwgImZlYXR1cmVEaXJlY3Rpb24iLCBudWxsLCAxLCAxLCBEaXJlY3RlZEZlYXR1cmUuY2xhc3MsICFJU19UUkFOU0lFTlQsICFJU19WT0xBVElMRSwgSVNfQ0hBTkdFQUJMRSwgIUlTX1VOU0VUVEFCTEUsICFJU19JRCwgSVNfVU5JUVVFLCAhSVNfREVSSVZFRCwgIUlTX09SREVSRUQpOyAvLyROT04tTkxTLTEkDQorDQorCQlpbml0RUNsYXNzKGludm9jYXRpb25Pbk5lc3RlZFBvcnRBY3Rpb25FQ2xhc3MsIEludm9jYXRpb25Pbk5lc3RlZFBvcnRBY3Rpb24uY2xhc3MsICJJbnZvY2F0aW9uT25OZXN0ZWRQb3J0QWN0aW9uIiwgIUlTX0FCU1RSQUNULCAhSVNfSU5URVJGQUNFLCBJU19HRU5FUkFURURfSU5TVEFOQ0VfQ0xBU1MpOyAvLyROT04tTkxTLTEkDQorCQlpbml0RVJlZmVyZW5jZShnZXRJbnZvY2F0aW9uT25OZXN0ZWRQb3J0QWN0aW9uX0Jhc2VfSW52b2NhdGlvbkFjdGlvbigpLCB0aGVVTUxQYWNrYWdlLmdldEludm9jYXRpb25BY3Rpb24oKSwgbnVsbCwgImJhc2VfSW52b2NhdGlvbkFjdGlvbiIsIG51bGwsIDAsIDEsIEludm9jYXRpb25Pbk5lc3RlZFBvcnRBY3Rpb24uY2xhc3MsICFJU19UUkFOU0lFTlQsICFJU19WT0xBVElMRSwgSVNfQ0hBTkdFQUJMRSwgIUlTX0NPTVBPU0lURSwgSVNfUkVTT0xWRV9QUk9YSUVTLCAhSVNfVU5TRVRUQUJMRSwgSVNfVU5JUVVFLCAhSVNfREVSSVZFRCwgIUlTX09SREVSRUQpOyAvLyROT04tTkxTLTEkDQorCQlpbml0RVJlZmVyZW5jZShnZXRJbnZvY2F0aW9uT25OZXN0ZWRQb3J0QWN0aW9uX09uTmVzdGVkUG9ydCgpLCB0aGVVTUxQYWNrYWdlLmdldFBvcnQoKSwgbnVsbCwgIm9uTmVzdGVkUG9ydCIsIG51bGwsIDEsIC0xLCBJbnZvY2F0aW9uT25OZXN0ZWRQb3J0QWN0aW9uLmNsYXNzLCAhSVNfVFJBTlNJRU5ULCAhSVNfVk9MQVRJTEUsIElTX0NIQU5HRUFCTEUsICFJU19DT01QT1NJVEUsIElTX1JFU09MVkVfUFJPWElFUywgIUlTX1VOU0VUVEFCTEUsICFJU19VTklRVUUsICFJU19ERVJJVkVELCBJU19PUkRFUkVEKTsgLy8kTk9OLU5MUy0xJA0KKw0KKwkJaW5pdEVDbGFzcyh0cmlnZ2VyT25OZXN0ZWRQb3J0RUNsYXNzLCBUcmlnZ2VyT25OZXN0ZWRQb3J0LmNsYXNzLCAiVHJpZ2dlck9uTmVzdGVkUG9ydCIsICFJU19BQlNUUkFDVCwgIUlTX0lOVEVSRkFDRSwgSVNfR0VORVJBVEVEX0lOU1RBTkNFX0NMQVNTKTsgLy8kTk9OLU5MUy0xJA0KKwkJaW5pdEVSZWZlcmVuY2UoZ2V0VHJpZ2dlck9uTmVzdGVkUG9ydF9CYXNlX1RyaWdnZXIoKSwgdGhlVU1MUGFja2FnZS5nZXRUcmlnZ2VyKCksIG51bGwsICJiYXNlX1RyaWdnZXIiLCBudWxsLCAxLCAxLCBUcmlnZ2VyT25OZXN0ZWRQb3J0LmNsYXNzLCAhSVNfVFJBTlNJRU5ULCAhSVNfVk9MQVRJTEUsIElTX0NIQU5HRUFCTEUsICFJU19DT01QT1NJVEUsIElTX1JFU09MVkVfUFJPWElFUywgIUlTX1VOU0VUVEFCTEUsIElTX1VOSVFVRSwgIUlTX0RFUklWRUQsICFJU19PUkRFUkVEKTsgLy8kTk9OLU5MUy0xJA0KKwkJaW5pdEVSZWZlcmVuY2UoZ2V0VHJpZ2dlck9uTmVzdGVkUG9ydF9Pbk5lc3RlZFBvcnQoKSwgdGhlVU1MUGFja2FnZS5nZXRQb3J0KCksIG51bGwsICJvbk5lc3RlZFBvcnQiLCBudWxsLCAxLCAtMSwgVHJpZ2dlck9uTmVzdGVkUG9ydC5jbGFzcywgIUlTX1RSQU5TSUVOVCwgIUlTX1ZPTEFUSUxFLCBJU19DSEFOR0VBQkxFLCAhSVNfQ09NUE9TSVRFLCBJU19SRVNPTFZFX1BST1hJRVMsICFJU19VTlNFVFRBQkxFLCAhSVNfVU5JUVVFLCAhSVNfREVSSVZFRCwgSVNfT1JERVJFRCk7IC8vJE5PTi1OTFMtMSQNCisNCisJCS8vIEluaXRpYWxpemUgZW51bXMgYW5kIGFkZCBlbnVtIGxpdGVyYWxzDQorCQlpbml0RUVudW0oZmxvd0RpcmVjdGlvbkVFbnVtLCBGbG93RGlyZWN0aW9uLmNsYXNzLCAiRmxvd0RpcmVjdGlvbiIpOyAvLyROT04tTkxTLTEkDQorCQlhZGRFRW51bUxpdGVyYWwoZmxvd0RpcmVjdGlvbkVFbnVtLCBGbG93RGlyZWN0aW9uLklOKTsNCisJCWFkZEVFbnVtTGl0ZXJhbChmbG93RGlyZWN0aW9uRUVudW0sIEZsb3dEaXJlY3Rpb24uT1VUKTsNCisJCWFkZEVFbnVtTGl0ZXJhbChmbG93RGlyZWN0aW9uRUVudW0sIEZsb3dEaXJlY3Rpb24uSU5PVVQpOw0KKw0KKwkJaW5pdEVFbnVtKGZlYXR1cmVEaXJlY3Rpb25FRW51bSwgRmVhdHVyZURpcmVjdGlvbi5jbGFzcywgIkZlYXR1cmVEaXJlY3Rpb24iKTsgLy8kTk9OLU5MUy0xJA0KKwkJYWRkRUVudW1MaXRlcmFsKGZlYXR1cmVEaXJlY3Rpb25FRW51bSwgRmVhdHVyZURpcmVjdGlvbi5QUk9WSURFRCk7DQorCQlhZGRFRW51bUxpdGVyYWwoZmVhdHVyZURpcmVjdGlvbkVFbnVtLCBGZWF0dXJlRGlyZWN0aW9uLlJFUVVJUkVEKTsNCisJCWFkZEVFbnVtTGl0ZXJhbChmZWF0dXJlRGlyZWN0aW9uRUVudW0sIEZlYXR1cmVEaXJlY3Rpb24uUFJPVklERURfUkVRVUlSRUQpOw0KKw0KKwkJLy8gQ3JlYXRlIHJlc291cmNlDQorCQljcmVhdGVSZXNvdXJjZShlTlNfVVJJKTsNCisNCisJCS8vIENyZWF0ZSBhbm5vdGF0aW9ucw0KKwkJLy8gaHR0cDovL3d3dy5lY2xpcHNlLm9yZy91bWwyLzIuMC4wL1VNTA0KKwkJY3JlYXRlVU1MQW5ub3RhdGlvbnMoKTsNCisJfQ0KKw0KKwkvKioNCisJICogSW5pdGlhbGl6ZXMgdGhlIGFubm90YXRpb25zIGZvciA8Yj5odHRwOi8vd3d3LmVjbGlwc2Uub3JnL3VtbDIvMi4wLjAvVU1MPC9iPi4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXByb3RlY3RlZCB2b2lkIGNyZWF0ZVVNTEFubm90YXRpb25zKCkgew0KKwkJU3RyaW5nIHNvdXJjZSA9ICJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3VtbDIvMi4wLjAvVU1MIjsgLy8kTk9OLU5MUy0xJAkNCisJCWFkZEFubm90YXRpb24NCisJCSAgKHRoaXMsIA0KKwkJICAgc291cmNlLCANCisJCSAgIG5ldyBTdHJpbmdbXSB7DQorCQkJICJvcmlnaW5hbE5hbWUiLCAiUG9ydHNhbmRGbG93cyIgLy8kTk9OLU5MUy0xJCAvLyROT04tTkxTLTIkDQorCQkgICB9KTsNCisJfQ0KKw0KK30gLy9Qb3J0YW5kZmxvd3NQYWNrYWdlSW1wbA0KZGlmZiAtLWdpdCBhL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L3BvcnRhbmRmbG93cy9pbnRlcm5hbC9pbXBsL1Byb3h5UG9ydEltcGwuamF2YSBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L3BvcnRhbmRmbG93cy9pbnRlcm5hbC9pbXBsL1Byb3h5UG9ydEltcGwuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNmJhMzEzCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvcG9ydGFuZGZsb3dzL2ludGVybmFsL2ltcGwvUHJveHlQb3J0SW1wbC5qYXZhCkBAIC0wLDAgKzEsMTY0IEBACisvKioNCisgKiBDb3B5cmlnaHQgKGMpIDIwMTUgQ0VBIExJU1QuDQorICogDQorICogIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCisgKiAgYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQorICogIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQorICogIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICovDQorcGFja2FnZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucG9ydGFuZGZsb3dzLmludGVybmFsLmltcGw7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jb21tb24ubm90aWZ5Lk5vdGlmaWNhdGlvbjsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVDbGFzczsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkludGVybmFsRU9iamVjdDsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLmltcGwuRU5vdGlmaWNhdGlvbkltcGw7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5pbXBsLk1pbmltYWxFT2JqZWN0SW1wbDsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnBvcnRhbmRmbG93cy5Qb3J0YW5kZmxvd3NQYWNrYWdlOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucG9ydGFuZGZsb3dzLlByb3h5UG9ydDsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UudW1sMi51bWwuUG9ydDsNCisNCisvKioNCisgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKyAqIEFuIGltcGxlbWVudGF0aW9uIG9mIHRoZSBtb2RlbCBvYmplY3QgJzxlbT48Yj5Qcm94eSBQb3J0PC9iPjwvZW0+Jy4NCisgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisgKiA8cD4NCisgKiBUaGUgZm9sbG93aW5nIGZlYXR1cmVzIGFyZSBpbXBsZW1lbnRlZDoNCisgKiA8dWw+DQorICogICA8bGk+e0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5wb3J0YW5kZmxvd3MuaW50ZXJuYWwuaW1wbC5Qcm94eVBvcnRJbXBsI2dldEJhc2VfUG9ydCA8ZW0+QmFzZSBQb3J0PC9lbT59PC9saT4NCisgKiA8L3VsPg0KKyAqIDwvcD4NCisgKg0KKyAqIEBnZW5lcmF0ZWQNCisgKi8NCitwdWJsaWMgY2xhc3MgUHJveHlQb3J0SW1wbCBleHRlbmRzIE1pbmltYWxFT2JqZWN0SW1wbC5Db250YWluZXIgaW1wbGVtZW50cyBQcm94eVBvcnQgew0KKwkvKioNCisJICogVGhlIGNhY2hlZCB2YWx1ZSBvZiB0aGUgJ3tAbGluayAjZ2V0QmFzZV9Qb3J0KCkgPGVtPkJhc2UgUG9ydDwvZW0+fScgcmVmZXJlbmNlLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHNlZSAjZ2V0QmFzZV9Qb3J0KCkNCisJICogQGdlbmVyYXRlZA0KKwkgKiBAb3JkZXJlZA0KKwkgKi8NCisJcHJvdGVjdGVkIFBvcnQgYmFzZV9Qb3J0Ow0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXByb3RlY3RlZCBQcm94eVBvcnRJbXBsKCkgew0KKwkJc3VwZXIoKTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwcm90ZWN0ZWQgRUNsYXNzIGVTdGF0aWNDbGFzcygpIHsNCisJCXJldHVybiBQb3J0YW5kZmxvd3NQYWNrYWdlLkxpdGVyYWxzLlBST1hZX1BPUlQ7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgUG9ydCBnZXRCYXNlX1BvcnQoKSB7DQorCQlpZiAoYmFzZV9Qb3J0ICE9IG51bGwgJiYgYmFzZV9Qb3J0LmVJc1Byb3h5KCkpIHsNCisJCQlJbnRlcm5hbEVPYmplY3Qgb2xkQmFzZV9Qb3J0ID0gKEludGVybmFsRU9iamVjdCliYXNlX1BvcnQ7DQorCQkJYmFzZV9Qb3J0ID0gKFBvcnQpZVJlc29sdmVQcm94eShvbGRCYXNlX1BvcnQpOw0KKwkJCWlmIChiYXNlX1BvcnQgIT0gb2xkQmFzZV9Qb3J0KSB7DQorCQkJCWlmIChlTm90aWZpY2F0aW9uUmVxdWlyZWQoKSkNCisJCQkJCWVOb3RpZnkobmV3IEVOb3RpZmljYXRpb25JbXBsKHRoaXMsIE5vdGlmaWNhdGlvbi5SRVNPTFZFLCBQb3J0YW5kZmxvd3NQYWNrYWdlLlBST1hZX1BPUlRfX0JBU0VfUE9SVCwgb2xkQmFzZV9Qb3J0LCBiYXNlX1BvcnQpKTsNCisJCQl9DQorCQl9DQorCQlyZXR1cm4gYmFzZV9Qb3J0Ow0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIFBvcnQgYmFzaWNHZXRCYXNlX1BvcnQoKSB7DQorCQlyZXR1cm4gYmFzZV9Qb3J0Ow0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIHZvaWQgc2V0QmFzZV9Qb3J0KFBvcnQgbmV3QmFzZV9Qb3J0KSB7DQorCQlQb3J0IG9sZEJhc2VfUG9ydCA9IGJhc2VfUG9ydDsNCisJCWJhc2VfUG9ydCA9IG5ld0Jhc2VfUG9ydDsNCisJCWlmIChlTm90aWZpY2F0aW9uUmVxdWlyZWQoKSkNCisJCQllTm90aWZ5KG5ldyBFTm90aWZpY2F0aW9uSW1wbCh0aGlzLCBOb3RpZmljYXRpb24uU0VULCBQb3J0YW5kZmxvd3NQYWNrYWdlLlBST1hZX1BPUlRfX0JBU0VfUE9SVCwgb2xkQmFzZV9Qb3J0LCBiYXNlX1BvcnQpKTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgT2JqZWN0IGVHZXQoaW50IGZlYXR1cmVJRCwgYm9vbGVhbiByZXNvbHZlLCBib29sZWFuIGNvcmVUeXBlKSB7DQorCQlzd2l0Y2ggKGZlYXR1cmVJRCkgew0KKwkJCWNhc2UgUG9ydGFuZGZsb3dzUGFja2FnZS5QUk9YWV9QT1JUX19CQVNFX1BPUlQ6DQorCQkJCWlmIChyZXNvbHZlKSByZXR1cm4gZ2V0QmFzZV9Qb3J0KCk7DQorCQkJCXJldHVybiBiYXNpY0dldEJhc2VfUG9ydCgpOw0KKwkJfQ0KKwkJcmV0dXJuIHN1cGVyLmVHZXQoZmVhdHVyZUlELCByZXNvbHZlLCBjb3JlVHlwZSk7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIHZvaWQgZVNldChpbnQgZmVhdHVyZUlELCBPYmplY3QgbmV3VmFsdWUpIHsNCisJCXN3aXRjaCAoZmVhdHVyZUlEKSB7DQorCQkJY2FzZSBQb3J0YW5kZmxvd3NQYWNrYWdlLlBST1hZX1BPUlRfX0JBU0VfUE9SVDoNCisJCQkJc2V0QmFzZV9Qb3J0KChQb3J0KW5ld1ZhbHVlKTsNCisJCQkJcmV0dXJuOw0KKwkJfQ0KKwkJc3VwZXIuZVNldChmZWF0dXJlSUQsIG5ld1ZhbHVlKTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgdm9pZCBlVW5zZXQoaW50IGZlYXR1cmVJRCkgew0KKwkJc3dpdGNoIChmZWF0dXJlSUQpIHsNCisJCQljYXNlIFBvcnRhbmRmbG93c1BhY2thZ2UuUFJPWFlfUE9SVF9fQkFTRV9QT1JUOg0KKwkJCQlzZXRCYXNlX1BvcnQoKFBvcnQpbnVsbCk7DQorCQkJCXJldHVybjsNCisJCX0NCisJCXN1cGVyLmVVbnNldChmZWF0dXJlSUQpOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXB1YmxpYyBib29sZWFuIGVJc1NldChpbnQgZmVhdHVyZUlEKSB7DQorCQlzd2l0Y2ggKGZlYXR1cmVJRCkgew0KKwkJCWNhc2UgUG9ydGFuZGZsb3dzUGFja2FnZS5QUk9YWV9QT1JUX19CQVNFX1BPUlQ6DQorCQkJCXJldHVybiBiYXNlX1BvcnQgIT0gbnVsbDsNCisJCX0NCisJCXJldHVybiBzdXBlci5lSXNTZXQoZmVhdHVyZUlEKTsNCisJfQ0KKw0KK30gLy9Qcm94eVBvcnRJbXBsDQpkaWZmIC0tZ2l0IGEvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvcG9ydGFuZGZsb3dzL2ludGVybmFsL2ltcGwvVHJpZ2dlck9uTmVzdGVkUG9ydEltcGwuamF2YSBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L3BvcnRhbmRmbG93cy9pbnRlcm5hbC9pbXBsL1RyaWdnZXJPbk5lc3RlZFBvcnRJbXBsLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzlmZTkxYQotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L3BvcnRhbmRmbG93cy9pbnRlcm5hbC9pbXBsL1RyaWdnZXJPbk5lc3RlZFBvcnRJbXBsLmphdmEKQEAgLTAsMCArMSwyMzMgQEAKKy8qKg0KKyAqIENvcHlyaWdodCAoYykgMjAxNSBDRUEgTElTVC4NCisgKiANCisgKiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KKyAqICBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCisgKiAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCisgKiAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgKi8NCitwYWNrYWdlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5wb3J0YW5kZmxvd3MuaW50ZXJuYWwuaW1wbDsNCisNCitpbXBvcnQgamF2YS51dGlsLkNvbGxlY3Rpb247DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jb21tb24ubm90aWZ5Lk5vdGlmaWNhdGlvbjsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi51dGlsLkVMaXN0Ow0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRUNsYXNzOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuSW50ZXJuYWxFT2JqZWN0Ow0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuaW1wbC5FTm90aWZpY2F0aW9uSW1wbDsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLnV0aWwuRU9iamVjdFJlc29sdmluZ0VMaXN0Ow0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYmxvY2tzLmludGVybmFsLmltcGwuRWxlbWVudFByb3BlcnR5UGF0aEltcGw7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5wb3J0YW5kZmxvd3MuUG9ydGFuZGZsb3dzUGFja2FnZTsNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnBvcnRhbmRmbG93cy5UcmlnZ2VyT25OZXN0ZWRQb3J0Ow0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS51bWwyLnVtbC5Qb3J0Ow0KK2ltcG9ydCBvcmcuZWNsaXBzZS51bWwyLnVtbC5UcmlnZ2VyOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS51bWwyLnVtbC5UeXBlOw0KKw0KKy8qKg0KKyAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorICogQW4gaW1wbGVtZW50YXRpb24gb2YgdGhlIG1vZGVsIG9iamVjdCAnPGVtPjxiPlRyaWdnZXIgT24gTmVzdGVkIFBvcnQ8L2I+PC9lbT4nLg0KKyAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKyAqIDxwPg0KKyAqIFRoZSBmb2xsb3dpbmcgZmVhdHVyZXMgYXJlIGltcGxlbWVudGVkOg0KKyAqIDx1bD4NCisgKiAgIDxsaT57QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnBvcnRhbmRmbG93cy5pbnRlcm5hbC5pbXBsLlRyaWdnZXJPbk5lc3RlZFBvcnRJbXBsI2dldEJhc2VfVHJpZ2dlciA8ZW0+QmFzZSBUcmlnZ2VyPC9lbT59PC9saT4NCisgKiAgIDxsaT57QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnBvcnRhbmRmbG93cy5pbnRlcm5hbC5pbXBsLlRyaWdnZXJPbk5lc3RlZFBvcnRJbXBsI2dldE9uTmVzdGVkUG9ydCA8ZW0+T24gTmVzdGVkIFBvcnQ8L2VtPn08L2xpPg0KKyAqIDwvdWw+DQorICogPC9wPg0KKyAqDQorICogQGdlbmVyYXRlZA0KKyAqLw0KK3B1YmxpYyBjbGFzcyBUcmlnZ2VyT25OZXN0ZWRQb3J0SW1wbCBleHRlbmRzIEVsZW1lbnRQcm9wZXJ0eVBhdGhJbXBsIGltcGxlbWVudHMgVHJpZ2dlck9uTmVzdGVkUG9ydCB7DQorCS8qKg0KKwkgKiBUaGUgY2FjaGVkIHZhbHVlIG9mIHRoZSAne0BsaW5rICNnZXRCYXNlX1RyaWdnZXIoKSA8ZW0+QmFzZSBUcmlnZ2VyPC9lbT59JyByZWZlcmVuY2UuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAc2VlICNnZXRCYXNlX1RyaWdnZXIoKQ0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqIEBvcmRlcmVkDQorCSAqLw0KKwlwcm90ZWN0ZWQgVHJpZ2dlciBiYXNlX1RyaWdnZXI7DQorDQorCS8qKg0KKwkgKiBUaGUgY2FjaGVkIHZhbHVlIG9mIHRoZSAne0BsaW5rICNnZXRPbk5lc3RlZFBvcnQoKSA8ZW0+T24gTmVzdGVkIFBvcnQ8L2VtPn0nIHJlZmVyZW5jZSBsaXN0Lg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHNlZSAjZ2V0T25OZXN0ZWRQb3J0KCkNCisJICogQGdlbmVyYXRlZA0KKwkgKiBAb3JkZXJlZA0KKwkgKi8NCisJcHJvdGVjdGVkIEVMaXN0PFBvcnQ+IG9uTmVzdGVkUG9ydDsNCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwcm90ZWN0ZWQgVHJpZ2dlck9uTmVzdGVkUG9ydEltcGwoKSB7DQorCQlzdXBlcigpOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXByb3RlY3RlZCBFQ2xhc3MgZVN0YXRpY0NsYXNzKCkgew0KKwkJcmV0dXJuIFBvcnRhbmRmbG93c1BhY2thZ2UuTGl0ZXJhbHMuVFJJR0dFUl9PTl9ORVNURURfUE9SVDsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBUcmlnZ2VyIGdldEJhc2VfVHJpZ2dlcigpIHsNCisJCWlmIChiYXNlX1RyaWdnZXIgIT0gbnVsbCAmJiBiYXNlX1RyaWdnZXIuZUlzUHJveHkoKSkgew0KKwkJCUludGVybmFsRU9iamVjdCBvbGRCYXNlX1RyaWdnZXIgPSAoSW50ZXJuYWxFT2JqZWN0KWJhc2VfVHJpZ2dlcjsNCisJCQliYXNlX1RyaWdnZXIgPSAoVHJpZ2dlcillUmVzb2x2ZVByb3h5KG9sZEJhc2VfVHJpZ2dlcik7DQorCQkJaWYgKGJhc2VfVHJpZ2dlciAhPSBvbGRCYXNlX1RyaWdnZXIpIHsNCisJCQkJaWYgKGVOb3RpZmljYXRpb25SZXF1aXJlZCgpKQ0KKwkJCQkJZU5vdGlmeShuZXcgRU5vdGlmaWNhdGlvbkltcGwodGhpcywgTm90aWZpY2F0aW9uLlJFU09MVkUsIFBvcnRhbmRmbG93c1BhY2thZ2UuVFJJR0dFUl9PTl9ORVNURURfUE9SVF9fQkFTRV9UUklHR0VSLCBvbGRCYXNlX1RyaWdnZXIsIGJhc2VfVHJpZ2dlcikpOw0KKwkJCX0NCisJCX0NCisJCXJldHVybiBiYXNlX1RyaWdnZXI7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgVHJpZ2dlciBiYXNpY0dldEJhc2VfVHJpZ2dlcigpIHsNCisJCXJldHVybiBiYXNlX1RyaWdnZXI7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgdm9pZCBzZXRCYXNlX1RyaWdnZXIoVHJpZ2dlciBuZXdCYXNlX1RyaWdnZXIpIHsNCisJCVRyaWdnZXIgb2xkQmFzZV9UcmlnZ2VyID0gYmFzZV9UcmlnZ2VyOw0KKwkJYmFzZV9UcmlnZ2VyID0gbmV3QmFzZV9UcmlnZ2VyOw0KKwkJaWYgKGVOb3RpZmljYXRpb25SZXF1aXJlZCgpKQ0KKwkJCWVOb3RpZnkobmV3IEVOb3RpZmljYXRpb25JbXBsKHRoaXMsIE5vdGlmaWNhdGlvbi5TRVQsIFBvcnRhbmRmbG93c1BhY2thZ2UuVFJJR0dFUl9PTl9ORVNURURfUE9SVF9fQkFTRV9UUklHR0VSLCBvbGRCYXNlX1RyaWdnZXIsIGJhc2VfVHJpZ2dlcikpOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIEVMaXN0PFBvcnQ+IGdldE9uTmVzdGVkUG9ydCgpIHsNCisJCWlmIChvbk5lc3RlZFBvcnQgPT0gbnVsbCkgew0KKwkJCW9uTmVzdGVkUG9ydCA9IG5ldyBFT2JqZWN0UmVzb2x2aW5nRUxpc3Q8UG9ydD4oUG9ydC5jbGFzcywgdGhpcywgUG9ydGFuZGZsb3dzUGFja2FnZS5UUklHR0VSX09OX05FU1RFRF9QT1JUX19PTl9ORVNURURfUE9SVCk7DQorCQl9DQorCQlyZXR1cm4gb25OZXN0ZWRQb3J0Ow0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIFBvcnQgZ2V0T25OZXN0ZWRQb3J0KFN0cmluZyBuYW1lLCBUeXBlIHR5cGUpIHsNCisJCXJldHVybiBnZXRPbk5lc3RlZFBvcnQobmFtZSwgdHlwZSwgZmFsc2UpOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIFBvcnQgZ2V0T25OZXN0ZWRQb3J0KFN0cmluZyBuYW1lLCBUeXBlIHR5cGUsIGJvb2xlYW4gaWdub3JlQ2FzZSkgew0KKwkJb25OZXN0ZWRQb3J0TG9vcDogZm9yIChQb3J0IG9uTmVzdGVkUG9ydCA6IGdldE9uTmVzdGVkUG9ydCgpKSB7DQorCQkJaWYgKG5hbWUgIT0gbnVsbCAmJiAhKGlnbm9yZUNhc2UgPyBuYW1lLmVxdWFsc0lnbm9yZUNhc2Uob25OZXN0ZWRQb3J0LmdldE5hbWUoKSkgOiBuYW1lLmVxdWFscyhvbk5lc3RlZFBvcnQuZ2V0TmFtZSgpKSkpDQorCQkJCWNvbnRpbnVlIG9uTmVzdGVkUG9ydExvb3A7DQorCQkJaWYgKHR5cGUgIT0gbnVsbCAmJiAhdHlwZS5lcXVhbHMob25OZXN0ZWRQb3J0LmdldFR5cGUoKSkpDQorCQkJCWNvbnRpbnVlIG9uTmVzdGVkUG9ydExvb3A7DQorCQkJcmV0dXJuIG9uTmVzdGVkUG9ydDsNCisJCX0NCisJCXJldHVybiBudWxsOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXB1YmxpYyBPYmplY3QgZUdldChpbnQgZmVhdHVyZUlELCBib29sZWFuIHJlc29sdmUsIGJvb2xlYW4gY29yZVR5cGUpIHsNCisJCXN3aXRjaCAoZmVhdHVyZUlEKSB7DQorCQkJY2FzZSBQb3J0YW5kZmxvd3NQYWNrYWdlLlRSSUdHRVJfT05fTkVTVEVEX1BPUlRfX0JBU0VfVFJJR0dFUjoNCisJCQkJaWYgKHJlc29sdmUpIHJldHVybiBnZXRCYXNlX1RyaWdnZXIoKTsNCisJCQkJcmV0dXJuIGJhc2ljR2V0QmFzZV9UcmlnZ2VyKCk7DQorCQkJY2FzZSBQb3J0YW5kZmxvd3NQYWNrYWdlLlRSSUdHRVJfT05fTkVTVEVEX1BPUlRfX09OX05FU1RFRF9QT1JUOg0KKwkJCQlyZXR1cm4gZ2V0T25OZXN0ZWRQb3J0KCk7DQorCQl9DQorCQlyZXR1cm4gc3VwZXIuZUdldChmZWF0dXJlSUQsIHJlc29sdmUsIGNvcmVUeXBlKTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBTdXBwcmVzc1dhcm5pbmdzKCJ1bmNoZWNrZWQiKQ0KKwlAT3ZlcnJpZGUNCisJcHVibGljIHZvaWQgZVNldChpbnQgZmVhdHVyZUlELCBPYmplY3QgbmV3VmFsdWUpIHsNCisJCXN3aXRjaCAoZmVhdHVyZUlEKSB7DQorCQkJY2FzZSBQb3J0YW5kZmxvd3NQYWNrYWdlLlRSSUdHRVJfT05fTkVTVEVEX1BPUlRfX0JBU0VfVFJJR0dFUjoNCisJCQkJc2V0QmFzZV9UcmlnZ2VyKChUcmlnZ2VyKW5ld1ZhbHVlKTsNCisJCQkJcmV0dXJuOw0KKwkJCWNhc2UgUG9ydGFuZGZsb3dzUGFja2FnZS5UUklHR0VSX09OX05FU1RFRF9QT1JUX19PTl9ORVNURURfUE9SVDoNCisJCQkJZ2V0T25OZXN0ZWRQb3J0KCkuY2xlYXIoKTsNCisJCQkJZ2V0T25OZXN0ZWRQb3J0KCkuYWRkQWxsKChDb2xsZWN0aW9uPD8gZXh0ZW5kcyBQb3J0PiluZXdWYWx1ZSk7DQorCQkJCXJldHVybjsNCisJCX0NCisJCXN1cGVyLmVTZXQoZmVhdHVyZUlELCBuZXdWYWx1ZSk7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIHZvaWQgZVVuc2V0KGludCBmZWF0dXJlSUQpIHsNCisJCXN3aXRjaCAoZmVhdHVyZUlEKSB7DQorCQkJY2FzZSBQb3J0YW5kZmxvd3NQYWNrYWdlLlRSSUdHRVJfT05fTkVTVEVEX1BPUlRfX0JBU0VfVFJJR0dFUjoNCisJCQkJc2V0QmFzZV9UcmlnZ2VyKChUcmlnZ2VyKW51bGwpOw0KKwkJCQlyZXR1cm47DQorCQkJY2FzZSBQb3J0YW5kZmxvd3NQYWNrYWdlLlRSSUdHRVJfT05fTkVTVEVEX1BPUlRfX09OX05FU1RFRF9QT1JUOg0KKwkJCQlnZXRPbk5lc3RlZFBvcnQoKS5jbGVhcigpOw0KKwkJCQlyZXR1cm47DQorCQl9DQorCQlzdXBlci5lVW5zZXQoZmVhdHVyZUlEKTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgYm9vbGVhbiBlSXNTZXQoaW50IGZlYXR1cmVJRCkgew0KKwkJc3dpdGNoIChmZWF0dXJlSUQpIHsNCisJCQljYXNlIFBvcnRhbmRmbG93c1BhY2thZ2UuVFJJR0dFUl9PTl9ORVNURURfUE9SVF9fQkFTRV9UUklHR0VSOg0KKwkJCQlyZXR1cm4gYmFzZV9UcmlnZ2VyICE9IG51bGw7DQorCQkJY2FzZSBQb3J0YW5kZmxvd3NQYWNrYWdlLlRSSUdHRVJfT05fTkVTVEVEX1BPUlRfX09OX05FU1RFRF9QT1JUOg0KKwkJCQlyZXR1cm4gb25OZXN0ZWRQb3J0ICE9IG51bGwgJiYgIW9uTmVzdGVkUG9ydC5pc0VtcHR5KCk7DQorCQl9DQorCQlyZXR1cm4gc3VwZXIuZUlzU2V0KGZlYXR1cmVJRCk7DQorCX0NCisNCit9IC8vVHJpZ2dlck9uTmVzdGVkUG9ydEltcGwNCmRpZmYgLS1naXQgYS9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9wb3J0YW5kZmxvd3MvdXRpbC9Qb3J0YW5kZmxvd3NBZGFwdGVyRmFjdG9yeS5qYXZhIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvcG9ydGFuZGZsb3dzL3V0aWwvUG9ydGFuZGZsb3dzQWRhcHRlckZhY3RvcnkuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ODg0MTQwCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvcG9ydGFuZGZsb3dzL3V0aWwvUG9ydGFuZGZsb3dzQWRhcHRlckZhY3RvcnkuamF2YQpAQCAtMCwwICsxLDMyNyBAQAorLyoqDQorICogQ29weXJpZ2h0IChjKSAyMDE1IENFQSBMSVNULg0KKyAqIA0KKyAqICBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQorICogIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KKyAqICB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KKyAqICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqLw0KK3BhY2thZ2Ugb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnBvcnRhbmRmbG93cy51dGlsOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY29tbW9uLm5vdGlmeS5BZGFwdGVyOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY29tbW9uLm5vdGlmeS5Ob3RpZmllcjsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi5ub3RpZnkuaW1wbC5BZGFwdGVyRmFjdG9yeUltcGw7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FT2JqZWN0Ow0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYmxvY2tzLkJsb2NrOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYmxvY2tzLkVsZW1lbnRQcm9wZXJ0eVBhdGg7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5wb3J0YW5kZmxvd3MuKjsNCisNCisvKioNCisgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKyAqIFRoZSA8Yj5BZGFwdGVyIEZhY3Rvcnk8L2I+IGZvciB0aGUgbW9kZWwuDQorICogSXQgcHJvdmlkZXMgYW4gYWRhcHRlciA8Y29kZT5jcmVhdGVYWFg8L2NvZGU+IG1ldGhvZCBmb3IgZWFjaCBjbGFzcyBvZiB0aGUgbW9kZWwuDQorICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucG9ydGFuZGZsb3dzLlBvcnRhbmRmbG93c1BhY2thZ2UNCisgKiBAZ2VuZXJhdGVkDQorICovDQorcHVibGljIGNsYXNzIFBvcnRhbmRmbG93c0FkYXB0ZXJGYWN0b3J5IGV4dGVuZHMgQWRhcHRlckZhY3RvcnlJbXBsIHsNCisJLyoqDQorCSAqIFRoZSBjYWNoZWQgbW9kZWwgcGFja2FnZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXByb3RlY3RlZCBzdGF0aWMgUG9ydGFuZGZsb3dzUGFja2FnZSBtb2RlbFBhY2thZ2U7DQorDQorCS8qKg0KKwkgKiBDcmVhdGVzIGFuIGluc3RhbmNlIG9mIHRoZSBhZGFwdGVyIGZhY3RvcnkuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgUG9ydGFuZGZsb3dzQWRhcHRlckZhY3RvcnkoKSB7DQorCQlpZiAobW9kZWxQYWNrYWdlID09IG51bGwpIHsNCisJCQltb2RlbFBhY2thZ2UgPSBQb3J0YW5kZmxvd3NQYWNrYWdlLmVJTlNUQU5DRTsNCisJCX0NCisJfQ0KKw0KKwkvKioNCisJICogUmV0dXJucyB3aGV0aGVyIHRoaXMgZmFjdG9yeSBpcyBhcHBsaWNhYmxlIGZvciB0aGUgdHlwZSBvZiB0aGUgb2JqZWN0Lg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiBUaGlzIGltcGxlbWVudGF0aW9uIHJldHVybnMgPGNvZGU+dHJ1ZTwvY29kZT4gaWYgdGhlIG9iamVjdCBpcyBlaXRoZXIgdGhlIG1vZGVsJ3MgcGFja2FnZSBvciBpcyBhbiBpbnN0YW5jZSBvYmplY3Qgb2YgdGhlIG1vZGVsLg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHJldHVybiB3aGV0aGVyIHRoaXMgZmFjdG9yeSBpcyBhcHBsaWNhYmxlIGZvciB0aGUgdHlwZSBvZiB0aGUgb2JqZWN0Lg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIGJvb2xlYW4gaXNGYWN0b3J5Rm9yVHlwZShPYmplY3Qgb2JqZWN0KSB7DQorCQlpZiAob2JqZWN0ID09IG1vZGVsUGFja2FnZSkgew0KKwkJCXJldHVybiB0cnVlOw0KKwkJfQ0KKwkJaWYgKG9iamVjdCBpbnN0YW5jZW9mIEVPYmplY3QpIHsNCisJCQlyZXR1cm4gKChFT2JqZWN0KW9iamVjdCkuZUNsYXNzKCkuZ2V0RVBhY2thZ2UoKSA9PSBtb2RlbFBhY2thZ2U7DQorCQl9DQorCQlyZXR1cm4gZmFsc2U7DQorCX0NCisNCisJLyoqDQorCSAqIFRoZSBzd2l0Y2ggdGhhdCBkZWxlZ2F0ZXMgdG8gdGhlIDxjb2RlPmNyZWF0ZVhYWDwvY29kZT4gbWV0aG9kcy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXByb3RlY3RlZCBQb3J0YW5kZmxvd3NTd2l0Y2g8QWRhcHRlcj4gbW9kZWxTd2l0Y2ggPQ0KKwkJbmV3IFBvcnRhbmRmbG93c1N3aXRjaDxBZGFwdGVyPigpIHsNCisJCQlAT3ZlcnJpZGUNCisJCQlwdWJsaWMgQWRhcHRlciBjYXNlSXRlbUZsb3coSXRlbUZsb3cgb2JqZWN0KSB7DQorCQkJCXJldHVybiBjcmVhdGVJdGVtRmxvd0FkYXB0ZXIoKTsNCisJCQl9DQorCQkJQE92ZXJyaWRlDQorCQkJcHVibGljIEFkYXB0ZXIgY2FzZUZsb3dQcm9wZXJ0eShGbG93UHJvcGVydHkgb2JqZWN0KSB7DQorCQkJCXJldHVybiBjcmVhdGVGbG93UHJvcGVydHlBZGFwdGVyKCk7DQorCQkJfQ0KKwkJCUBPdmVycmlkZQ0KKwkJCXB1YmxpYyBBZGFwdGVyIGNhc2VGdWxsUG9ydChGdWxsUG9ydCBvYmplY3QpIHsNCisJCQkJcmV0dXJuIGNyZWF0ZUZ1bGxQb3J0QWRhcHRlcigpOw0KKwkJCX0NCisJCQlAT3ZlcnJpZGUNCisJCQlwdWJsaWMgQWRhcHRlciBjYXNlSW50ZXJmYWNlQmxvY2soSW50ZXJmYWNlQmxvY2sgb2JqZWN0KSB7DQorCQkJCXJldHVybiBjcmVhdGVJbnRlcmZhY2VCbG9ja0FkYXB0ZXIoKTsNCisJCQl9DQorCQkJQE92ZXJyaWRlDQorCQkJcHVibGljIEFkYXB0ZXIgY2FzZVByb3h5UG9ydChQcm94eVBvcnQgb2JqZWN0KSB7DQorCQkJCXJldHVybiBjcmVhdGVQcm94eVBvcnRBZGFwdGVyKCk7DQorCQkJfQ0KKwkJCUBPdmVycmlkZQ0KKwkJCXB1YmxpYyBBZGFwdGVyIGNhc2VBY2NlcHRDaGFuZ2VTdHJ1Y3R1cmFsRmVhdHVyZUV2ZW50QWN0aW9uKEFjY2VwdENoYW5nZVN0cnVjdHVyYWxGZWF0dXJlRXZlbnRBY3Rpb24gb2JqZWN0KSB7DQorCQkJCXJldHVybiBjcmVhdGVBY2NlcHRDaGFuZ2VTdHJ1Y3R1cmFsRmVhdHVyZUV2ZW50QWN0aW9uQWRhcHRlcigpOw0KKwkJCX0NCisJCQlAT3ZlcnJpZGUNCisJCQlwdWJsaWMgQWRhcHRlciBjYXNlQ2hhbmdlU3RydWN0dXJhbEZlYXR1cmVFdmVudChDaGFuZ2VTdHJ1Y3R1cmFsRmVhdHVyZUV2ZW50IG9iamVjdCkgew0KKwkJCQlyZXR1cm4gY3JlYXRlQ2hhbmdlU3RydWN0dXJhbEZlYXR1cmVFdmVudEFkYXB0ZXIoKTsNCisJCQl9DQorCQkJQE92ZXJyaWRlDQorCQkJcHVibGljIEFkYXB0ZXIgY2FzZURpcmVjdGVkRmVhdHVyZShEaXJlY3RlZEZlYXR1cmUgb2JqZWN0KSB7DQorCQkJCXJldHVybiBjcmVhdGVEaXJlY3RlZEZlYXR1cmVBZGFwdGVyKCk7DQorCQkJfQ0KKwkJCUBPdmVycmlkZQ0KKwkJCXB1YmxpYyBBZGFwdGVyIGNhc2VJbnZvY2F0aW9uT25OZXN0ZWRQb3J0QWN0aW9uKEludm9jYXRpb25Pbk5lc3RlZFBvcnRBY3Rpb24gb2JqZWN0KSB7DQorCQkJCXJldHVybiBjcmVhdGVJbnZvY2F0aW9uT25OZXN0ZWRQb3J0QWN0aW9uQWRhcHRlcigpOw0KKwkJCX0NCisJCQlAT3ZlcnJpZGUNCisJCQlwdWJsaWMgQWRhcHRlciBjYXNlVHJpZ2dlck9uTmVzdGVkUG9ydChUcmlnZ2VyT25OZXN0ZWRQb3J0IG9iamVjdCkgew0KKwkJCQlyZXR1cm4gY3JlYXRlVHJpZ2dlck9uTmVzdGVkUG9ydEFkYXB0ZXIoKTsNCisJCQl9DQorCQkJQE92ZXJyaWRlDQorCQkJcHVibGljIEFkYXB0ZXIgY2FzZUJsb2NrKEJsb2NrIG9iamVjdCkgew0KKwkJCQlyZXR1cm4gY3JlYXRlQmxvY2tBZGFwdGVyKCk7DQorCQkJfQ0KKwkJCUBPdmVycmlkZQ0KKwkJCXB1YmxpYyBBZGFwdGVyIGNhc2VFbGVtZW50UHJvcGVydHlQYXRoKEVsZW1lbnRQcm9wZXJ0eVBhdGggb2JqZWN0KSB7DQorCQkJCXJldHVybiBjcmVhdGVFbGVtZW50UHJvcGVydHlQYXRoQWRhcHRlcigpOw0KKwkJCX0NCisJCQlAT3ZlcnJpZGUNCisJCQlwdWJsaWMgQWRhcHRlciBkZWZhdWx0Q2FzZShFT2JqZWN0IG9iamVjdCkgew0KKwkJCQlyZXR1cm4gY3JlYXRlRU9iamVjdEFkYXB0ZXIoKTsNCisJCQl9DQorCQl9Ow0KKw0KKwkvKioNCisJICogQ3JlYXRlcyBhbiBhZGFwdGVyIGZvciB0aGUgPGNvZGU+dGFyZ2V0PC9jb2RlPi4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBwYXJhbSB0YXJnZXQgdGhlIG9iamVjdCB0byBhZGFwdC4NCisJICogQHJldHVybiB0aGUgYWRhcHRlciBmb3IgdGhlIDxjb2RlPnRhcmdldDwvY29kZT4uDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgQWRhcHRlciBjcmVhdGVBZGFwdGVyKE5vdGlmaWVyIHRhcmdldCkgew0KKwkJcmV0dXJuIG1vZGVsU3dpdGNoLmRvU3dpdGNoKChFT2JqZWN0KXRhcmdldCk7DQorCX0NCisNCisNCisJLyoqDQorCSAqIENyZWF0ZXMgYSBuZXcgYWRhcHRlciBmb3IgYW4gb2JqZWN0IG9mIGNsYXNzICd7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnBvcnRhbmRmbG93cy5JdGVtRmxvdyA8ZW0+SXRlbSBGbG93PC9lbT59Jy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogVGhpcyBkZWZhdWx0IGltcGxlbWVudGF0aW9uIHJldHVybnMgbnVsbCBzbyB0aGF0IHdlIGNhbiBlYXNpbHkgaWdub3JlIGNhc2VzOw0KKwkgKiBpdCdzIHVzZWZ1bCB0byBpZ25vcmUgYSBjYXNlIHdoZW4gaW5oZXJpdGFuY2Ugd2lsbCBjYXRjaCBhbGwgdGhlIGNhc2VzIGFueXdheS4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEByZXR1cm4gdGhlIG5ldyBhZGFwdGVyLg0KKwkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5wb3J0YW5kZmxvd3MuSXRlbUZsb3cNCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIEFkYXB0ZXIgY3JlYXRlSXRlbUZsb3dBZGFwdGVyKCkgew0KKwkJcmV0dXJuIG51bGw7DQorCX0NCisNCisJLyoqDQorCSAqIENyZWF0ZXMgYSBuZXcgYWRhcHRlciBmb3IgYW4gb2JqZWN0IG9mIGNsYXNzICd7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnBvcnRhbmRmbG93cy5GbG93UHJvcGVydHkgPGVtPkZsb3cgUHJvcGVydHk8L2VtPn0nLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiBUaGlzIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gcmV0dXJucyBudWxsIHNvIHRoYXQgd2UgY2FuIGVhc2lseSBpZ25vcmUgY2FzZXM7DQorCSAqIGl0J3MgdXNlZnVsIHRvIGlnbm9yZSBhIGNhc2Ugd2hlbiBpbmhlcml0YW5jZSB3aWxsIGNhdGNoIGFsbCB0aGUgY2FzZXMgYW55d2F5Lg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHJldHVybiB0aGUgbmV3IGFkYXB0ZXIuDQorCSAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnBvcnRhbmRmbG93cy5GbG93UHJvcGVydHkNCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIEFkYXB0ZXIgY3JlYXRlRmxvd1Byb3BlcnR5QWRhcHRlcigpIHsNCisJCXJldHVybiBudWxsOw0KKwl9DQorDQorCS8qKg0KKwkgKiBDcmVhdGVzIGEgbmV3IGFkYXB0ZXIgZm9yIGFuIG9iamVjdCBvZiBjbGFzcyAne0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5wb3J0YW5kZmxvd3MuRnVsbFBvcnQgPGVtPkZ1bGwgUG9ydDwvZW0+fScuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIFRoaXMgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiByZXR1cm5zIG51bGwgc28gdGhhdCB3ZSBjYW4gZWFzaWx5IGlnbm9yZSBjYXNlczsNCisJICogaXQncyB1c2VmdWwgdG8gaWdub3JlIGEgY2FzZSB3aGVuIGluaGVyaXRhbmNlIHdpbGwgY2F0Y2ggYWxsIHRoZSBjYXNlcyBhbnl3YXkuDQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAcmV0dXJuIHRoZSBuZXcgYWRhcHRlci4NCisJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucG9ydGFuZGZsb3dzLkZ1bGxQb3J0DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBBZGFwdGVyIGNyZWF0ZUZ1bGxQb3J0QWRhcHRlcigpIHsNCisJCXJldHVybiBudWxsOw0KKwl9DQorDQorCS8qKg0KKwkgKiBDcmVhdGVzIGEgbmV3IGFkYXB0ZXIgZm9yIGFuIG9iamVjdCBvZiBjbGFzcyAne0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5wb3J0YW5kZmxvd3MuSW50ZXJmYWNlQmxvY2sgPGVtPkludGVyZmFjZSBCbG9jazwvZW0+fScuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIFRoaXMgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiByZXR1cm5zIG51bGwgc28gdGhhdCB3ZSBjYW4gZWFzaWx5IGlnbm9yZSBjYXNlczsNCisJICogaXQncyB1c2VmdWwgdG8gaWdub3JlIGEgY2FzZSB3aGVuIGluaGVyaXRhbmNlIHdpbGwgY2F0Y2ggYWxsIHRoZSBjYXNlcyBhbnl3YXkuDQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAcmV0dXJuIHRoZSBuZXcgYWRhcHRlci4NCisJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucG9ydGFuZGZsb3dzLkludGVyZmFjZUJsb2NrDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBBZGFwdGVyIGNyZWF0ZUludGVyZmFjZUJsb2NrQWRhcHRlcigpIHsNCisJCXJldHVybiBudWxsOw0KKwl9DQorDQorCS8qKg0KKwkgKiBDcmVhdGVzIGEgbmV3IGFkYXB0ZXIgZm9yIGFuIG9iamVjdCBvZiBjbGFzcyAne0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5wb3J0YW5kZmxvd3MuUHJveHlQb3J0IDxlbT5Qcm94eSBQb3J0PC9lbT59Jy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogVGhpcyBkZWZhdWx0IGltcGxlbWVudGF0aW9uIHJldHVybnMgbnVsbCBzbyB0aGF0IHdlIGNhbiBlYXNpbHkgaWdub3JlIGNhc2VzOw0KKwkgKiBpdCdzIHVzZWZ1bCB0byBpZ25vcmUgYSBjYXNlIHdoZW4gaW5oZXJpdGFuY2Ugd2lsbCBjYXRjaCBhbGwgdGhlIGNhc2VzIGFueXdheS4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEByZXR1cm4gdGhlIG5ldyBhZGFwdGVyLg0KKwkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5wb3J0YW5kZmxvd3MuUHJveHlQb3J0DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBBZGFwdGVyIGNyZWF0ZVByb3h5UG9ydEFkYXB0ZXIoKSB7DQorCQlyZXR1cm4gbnVsbDsNCisJfQ0KKw0KKwkvKioNCisJICogQ3JlYXRlcyBhIG5ldyBhZGFwdGVyIGZvciBhbiBvYmplY3Qgb2YgY2xhc3MgJ3tAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucG9ydGFuZGZsb3dzLkFjY2VwdENoYW5nZVN0cnVjdHVyYWxGZWF0dXJlRXZlbnRBY3Rpb24gPGVtPkFjY2VwdCBDaGFuZ2UgU3RydWN0dXJhbCBGZWF0dXJlIEV2ZW50IEFjdGlvbjwvZW0+fScuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIFRoaXMgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiByZXR1cm5zIG51bGwgc28gdGhhdCB3ZSBjYW4gZWFzaWx5IGlnbm9yZSBjYXNlczsNCisJICogaXQncyB1c2VmdWwgdG8gaWdub3JlIGEgY2FzZSB3aGVuIGluaGVyaXRhbmNlIHdpbGwgY2F0Y2ggYWxsIHRoZSBjYXNlcyBhbnl3YXkuDQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAcmV0dXJuIHRoZSBuZXcgYWRhcHRlci4NCisJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucG9ydGFuZGZsb3dzLkFjY2VwdENoYW5nZVN0cnVjdHVyYWxGZWF0dXJlRXZlbnRBY3Rpb24NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIEFkYXB0ZXIgY3JlYXRlQWNjZXB0Q2hhbmdlU3RydWN0dXJhbEZlYXR1cmVFdmVudEFjdGlvbkFkYXB0ZXIoKSB7DQorCQlyZXR1cm4gbnVsbDsNCisJfQ0KKw0KKwkvKioNCisJICogQ3JlYXRlcyBhIG5ldyBhZGFwdGVyIGZvciBhbiBvYmplY3Qgb2YgY2xhc3MgJ3tAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucG9ydGFuZGZsb3dzLkNoYW5nZVN0cnVjdHVyYWxGZWF0dXJlRXZlbnQgPGVtPkNoYW5nZSBTdHJ1Y3R1cmFsIEZlYXR1cmUgRXZlbnQ8L2VtPn0nLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiBUaGlzIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gcmV0dXJucyBudWxsIHNvIHRoYXQgd2UgY2FuIGVhc2lseSBpZ25vcmUgY2FzZXM7DQorCSAqIGl0J3MgdXNlZnVsIHRvIGlnbm9yZSBhIGNhc2Ugd2hlbiBpbmhlcml0YW5jZSB3aWxsIGNhdGNoIGFsbCB0aGUgY2FzZXMgYW55d2F5Lg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHJldHVybiB0aGUgbmV3IGFkYXB0ZXIuDQorCSAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnBvcnRhbmRmbG93cy5DaGFuZ2VTdHJ1Y3R1cmFsRmVhdHVyZUV2ZW50DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBBZGFwdGVyIGNyZWF0ZUNoYW5nZVN0cnVjdHVyYWxGZWF0dXJlRXZlbnRBZGFwdGVyKCkgew0KKwkJcmV0dXJuIG51bGw7DQorCX0NCisNCisJLyoqDQorCSAqIENyZWF0ZXMgYSBuZXcgYWRhcHRlciBmb3IgYW4gb2JqZWN0IG9mIGNsYXNzICd7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnBvcnRhbmRmbG93cy5EaXJlY3RlZEZlYXR1cmUgPGVtPkRpcmVjdGVkIEZlYXR1cmU8L2VtPn0nLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiBUaGlzIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gcmV0dXJucyBudWxsIHNvIHRoYXQgd2UgY2FuIGVhc2lseSBpZ25vcmUgY2FzZXM7DQorCSAqIGl0J3MgdXNlZnVsIHRvIGlnbm9yZSBhIGNhc2Ugd2hlbiBpbmhlcml0YW5jZSB3aWxsIGNhdGNoIGFsbCB0aGUgY2FzZXMgYW55d2F5Lg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHJldHVybiB0aGUgbmV3IGFkYXB0ZXIuDQorCSAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnBvcnRhbmRmbG93cy5EaXJlY3RlZEZlYXR1cmUNCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIEFkYXB0ZXIgY3JlYXRlRGlyZWN0ZWRGZWF0dXJlQWRhcHRlcigpIHsNCisJCXJldHVybiBudWxsOw0KKwl9DQorDQorCS8qKg0KKwkgKiBDcmVhdGVzIGEgbmV3IGFkYXB0ZXIgZm9yIGFuIG9iamVjdCBvZiBjbGFzcyAne0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5wb3J0YW5kZmxvd3MuSW52b2NhdGlvbk9uTmVzdGVkUG9ydEFjdGlvbiA8ZW0+SW52b2NhdGlvbiBPbiBOZXN0ZWQgUG9ydCBBY3Rpb248L2VtPn0nLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiBUaGlzIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gcmV0dXJucyBudWxsIHNvIHRoYXQgd2UgY2FuIGVhc2lseSBpZ25vcmUgY2FzZXM7DQorCSAqIGl0J3MgdXNlZnVsIHRvIGlnbm9yZSBhIGNhc2Ugd2hlbiBpbmhlcml0YW5jZSB3aWxsIGNhdGNoIGFsbCB0aGUgY2FzZXMgYW55d2F5Lg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHJldHVybiB0aGUgbmV3IGFkYXB0ZXIuDQorCSAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnBvcnRhbmRmbG93cy5JbnZvY2F0aW9uT25OZXN0ZWRQb3J0QWN0aW9uDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBBZGFwdGVyIGNyZWF0ZUludm9jYXRpb25Pbk5lc3RlZFBvcnRBY3Rpb25BZGFwdGVyKCkgew0KKwkJcmV0dXJuIG51bGw7DQorCX0NCisNCisJLyoqDQorCSAqIENyZWF0ZXMgYSBuZXcgYWRhcHRlciBmb3IgYW4gb2JqZWN0IG9mIGNsYXNzICd7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnBvcnRhbmRmbG93cy5UcmlnZ2VyT25OZXN0ZWRQb3J0IDxlbT5UcmlnZ2VyIE9uIE5lc3RlZCBQb3J0PC9lbT59Jy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogVGhpcyBkZWZhdWx0IGltcGxlbWVudGF0aW9uIHJldHVybnMgbnVsbCBzbyB0aGF0IHdlIGNhbiBlYXNpbHkgaWdub3JlIGNhc2VzOw0KKwkgKiBpdCdzIHVzZWZ1bCB0byBpZ25vcmUgYSBjYXNlIHdoZW4gaW5oZXJpdGFuY2Ugd2lsbCBjYXRjaCBhbGwgdGhlIGNhc2VzIGFueXdheS4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEByZXR1cm4gdGhlIG5ldyBhZGFwdGVyLg0KKwkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5wb3J0YW5kZmxvd3MuVHJpZ2dlck9uTmVzdGVkUG9ydA0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgQWRhcHRlciBjcmVhdGVUcmlnZ2VyT25OZXN0ZWRQb3J0QWRhcHRlcigpIHsNCisJCXJldHVybiBudWxsOw0KKwl9DQorDQorCS8qKg0KKwkgKiBDcmVhdGVzIGEgbmV3IGFkYXB0ZXIgZm9yIGFuIG9iamVjdCBvZiBjbGFzcyAne0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5ibG9ja3MuQmxvY2sgPGVtPkJsb2NrPC9lbT59Jy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogVGhpcyBkZWZhdWx0IGltcGxlbWVudGF0aW9uIHJldHVybnMgbnVsbCBzbyB0aGF0IHdlIGNhbiBlYXNpbHkgaWdub3JlIGNhc2VzOw0KKwkgKiBpdCdzIHVzZWZ1bCB0byBpZ25vcmUgYSBjYXNlIHdoZW4gaW5oZXJpdGFuY2Ugd2lsbCBjYXRjaCBhbGwgdGhlIGNhc2VzIGFueXdheS4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEByZXR1cm4gdGhlIG5ldyBhZGFwdGVyLg0KKwkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5ibG9ja3MuQmxvY2sNCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIEFkYXB0ZXIgY3JlYXRlQmxvY2tBZGFwdGVyKCkgew0KKwkJcmV0dXJuIG51bGw7DQorCX0NCisNCisJLyoqDQorCSAqIENyZWF0ZXMgYSBuZXcgYWRhcHRlciBmb3IgYW4gb2JqZWN0IG9mIGNsYXNzICd7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmJsb2Nrcy5FbGVtZW50UHJvcGVydHlQYXRoIDxlbT5FbGVtZW50IFByb3BlcnR5IFBhdGg8L2VtPn0nLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiBUaGlzIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gcmV0dXJucyBudWxsIHNvIHRoYXQgd2UgY2FuIGVhc2lseSBpZ25vcmUgY2FzZXM7DQorCSAqIGl0J3MgdXNlZnVsIHRvIGlnbm9yZSBhIGNhc2Ugd2hlbiBpbmhlcml0YW5jZSB3aWxsIGNhdGNoIGFsbCB0aGUgY2FzZXMgYW55d2F5Lg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHJldHVybiB0aGUgbmV3IGFkYXB0ZXIuDQorCSAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmJsb2Nrcy5FbGVtZW50UHJvcGVydHlQYXRoDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBBZGFwdGVyIGNyZWF0ZUVsZW1lbnRQcm9wZXJ0eVBhdGhBZGFwdGVyKCkgew0KKwkJcmV0dXJuIG51bGw7DQorCX0NCisNCisJLyoqDQorCSAqIENyZWF0ZXMgYSBuZXcgYWRhcHRlciBmb3IgdGhlIGRlZmF1bHQgY2FzZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogVGhpcyBkZWZhdWx0IGltcGxlbWVudGF0aW9uIHJldHVybnMgbnVsbC4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEByZXR1cm4gdGhlIG5ldyBhZGFwdGVyLg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgQWRhcHRlciBjcmVhdGVFT2JqZWN0QWRhcHRlcigpIHsNCisJCXJldHVybiBudWxsOw0KKwl9DQorDQorfSAvL1BvcnRhbmRmbG93c0FkYXB0ZXJGYWN0b3J5DQpkaWZmIC0tZ2l0IGEvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvcG9ydGFuZGZsb3dzL3V0aWwvUG9ydGFuZGZsb3dzU3dpdGNoLmphdmEgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9wb3J0YW5kZmxvd3MvdXRpbC9Qb3J0YW5kZmxvd3NTd2l0Y2guamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZmVlNDVhCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvcG9ydGFuZGZsb3dzL3V0aWwvUG9ydGFuZGZsb3dzU3dpdGNoLmphdmEKQEAgLTAsMCArMSwzNDEgQEAKKy8qKg0KKyAqIENvcHlyaWdodCAoYykgMjAxNSBDRUEgTElTVC4NCisgKiANCisgKiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KKyAqICBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCisgKiAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCisgKiAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgKi8NCitwYWNrYWdlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5wb3J0YW5kZmxvd3MudXRpbDsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVPYmplY3Q7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FUGFja2FnZTsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLnV0aWwuU3dpdGNoOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYmxvY2tzLkJsb2NrOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYmxvY2tzLkVsZW1lbnRQcm9wZXJ0eVBhdGg7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5wb3J0YW5kZmxvd3MuKjsNCisNCisvKioNCisgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKyAqIFRoZSA8Yj5Td2l0Y2g8L2I+IGZvciB0aGUgbW9kZWwncyBpbmhlcml0YW5jZSBoaWVyYXJjaHkuDQorICogSXQgc3VwcG9ydHMgdGhlIGNhbGwge0BsaW5rICNkb1N3aXRjaChFT2JqZWN0KSBkb1N3aXRjaChvYmplY3QpfQ0KKyAqIHRvIGludm9rZSB0aGUgPGNvZGU+Y2FzZVhYWDwvY29kZT4gbWV0aG9kIGZvciBlYWNoIGNsYXNzIG9mIHRoZSBtb2RlbCwNCisgKiBzdGFydGluZyB3aXRoIHRoZSBhY3R1YWwgY2xhc3Mgb2YgdGhlIG9iamVjdA0KKyAqIGFuZCBwcm9jZWVkaW5nIHVwIHRoZSBpbmhlcml0YW5jZSBoaWVyYXJjaHkNCisgKiB1bnRpbCBhIG5vbi1udWxsIHJlc3VsdCBpcyByZXR1cm5lZCwNCisgKiB3aGljaCBpcyB0aGUgcmVzdWx0IG9mIHRoZSBzd2l0Y2guDQorICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucG9ydGFuZGZsb3dzLlBvcnRhbmRmbG93c1BhY2thZ2UNCisgKiBAZ2VuZXJhdGVkDQorICovDQorcHVibGljIGNsYXNzIFBvcnRhbmRmbG93c1N3aXRjaDxUPiBleHRlbmRzIFN3aXRjaDxUPiB7DQorCS8qKg0KKwkgKiBUaGUgY2FjaGVkIG1vZGVsIHBhY2thZ2UNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXByb3RlY3RlZCBzdGF0aWMgUG9ydGFuZGZsb3dzUGFja2FnZSBtb2RlbFBhY2thZ2U7DQorDQorCS8qKg0KKwkgKiBDcmVhdGVzIGFuIGluc3RhbmNlIG9mIHRoZSBzd2l0Y2guDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgUG9ydGFuZGZsb3dzU3dpdGNoKCkgew0KKwkJaWYgKG1vZGVsUGFja2FnZSA9PSBudWxsKSB7DQorCQkJbW9kZWxQYWNrYWdlID0gUG9ydGFuZGZsb3dzUGFja2FnZS5lSU5TVEFOQ0U7DQorCQl9DQorCX0NCisNCisJLyoqDQorCSAqIENoZWNrcyB3aGV0aGVyIHRoaXMgaXMgYSBzd2l0Y2ggZm9yIHRoZSBnaXZlbiBwYWNrYWdlLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHBhcmFtIGVQYWNrYWdlIHRoZSBwYWNrYWdlIGluIHF1ZXN0aW9uLg0KKwkgKiBAcmV0dXJuIHdoZXRoZXIgdGhpcyBpcyBhIHN3aXRjaCBmb3IgdGhlIGdpdmVuIHBhY2thZ2UuDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwcm90ZWN0ZWQgYm9vbGVhbiBpc1N3aXRjaEZvcihFUGFja2FnZSBlUGFja2FnZSkgew0KKwkJcmV0dXJuIGVQYWNrYWdlID09IG1vZGVsUGFja2FnZTsNCisJfQ0KKw0KKwkvKioNCisJICogQ2FsbHMgPGNvZGU+Y2FzZVhYWDwvY29kZT4gZm9yIGVhY2ggY2xhc3Mgb2YgdGhlIG1vZGVsIHVudGlsIG9uZSByZXR1cm5zIGEgbm9uIG51bGwgcmVzdWx0OyBpdCB5aWVsZHMgdGhhdCByZXN1bHQuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAcmV0dXJuIHRoZSBmaXJzdCBub24tbnVsbCByZXN1bHQgcmV0dXJuZWQgYnkgYSA8Y29kZT5jYXNlWFhYPC9jb2RlPiBjYWxsLg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHJvdGVjdGVkIFQgZG9Td2l0Y2goaW50IGNsYXNzaWZpZXJJRCwgRU9iamVjdCB0aGVFT2JqZWN0KSB7DQorCQlzd2l0Y2ggKGNsYXNzaWZpZXJJRCkgew0KKwkJCWNhc2UgUG9ydGFuZGZsb3dzUGFja2FnZS5JVEVNX0ZMT1c6IHsNCisJCQkJSXRlbUZsb3cgaXRlbUZsb3cgPSAoSXRlbUZsb3cpdGhlRU9iamVjdDsNCisJCQkJVCByZXN1bHQgPSBjYXNlSXRlbUZsb3coaXRlbUZsb3cpOw0KKwkJCQlpZiAocmVzdWx0ID09IG51bGwpIHJlc3VsdCA9IGRlZmF1bHRDYXNlKHRoZUVPYmplY3QpOw0KKwkJCQlyZXR1cm4gcmVzdWx0Ow0KKwkJCX0NCisJCQljYXNlIFBvcnRhbmRmbG93c1BhY2thZ2UuRkxPV19QUk9QRVJUWTogew0KKwkJCQlGbG93UHJvcGVydHkgZmxvd1Byb3BlcnR5ID0gKEZsb3dQcm9wZXJ0eSl0aGVFT2JqZWN0Ow0KKwkJCQlUIHJlc3VsdCA9IGNhc2VGbG93UHJvcGVydHkoZmxvd1Byb3BlcnR5KTsNCisJCQkJaWYgKHJlc3VsdCA9PSBudWxsKSByZXN1bHQgPSBkZWZhdWx0Q2FzZSh0aGVFT2JqZWN0KTsNCisJCQkJcmV0dXJuIHJlc3VsdDsNCisJCQl9DQorCQkJY2FzZSBQb3J0YW5kZmxvd3NQYWNrYWdlLkZVTExfUE9SVDogew0KKwkJCQlGdWxsUG9ydCBmdWxsUG9ydCA9IChGdWxsUG9ydCl0aGVFT2JqZWN0Ow0KKwkJCQlUIHJlc3VsdCA9IGNhc2VGdWxsUG9ydChmdWxsUG9ydCk7DQorCQkJCWlmIChyZXN1bHQgPT0gbnVsbCkgcmVzdWx0ID0gZGVmYXVsdENhc2UodGhlRU9iamVjdCk7DQorCQkJCXJldHVybiByZXN1bHQ7DQorCQkJfQ0KKwkJCWNhc2UgUG9ydGFuZGZsb3dzUGFja2FnZS5JTlRFUkZBQ0VfQkxPQ0s6IHsNCisJCQkJSW50ZXJmYWNlQmxvY2sgaW50ZXJmYWNlQmxvY2sgPSAoSW50ZXJmYWNlQmxvY2spdGhlRU9iamVjdDsNCisJCQkJVCByZXN1bHQgPSBjYXNlSW50ZXJmYWNlQmxvY2soaW50ZXJmYWNlQmxvY2spOw0KKwkJCQlpZiAocmVzdWx0ID09IG51bGwpIHJlc3VsdCA9IGNhc2VCbG9jayhpbnRlcmZhY2VCbG9jayk7DQorCQkJCWlmIChyZXN1bHQgPT0gbnVsbCkgcmVzdWx0ID0gZGVmYXVsdENhc2UodGhlRU9iamVjdCk7DQorCQkJCXJldHVybiByZXN1bHQ7DQorCQkJfQ0KKwkJCWNhc2UgUG9ydGFuZGZsb3dzUGFja2FnZS5QUk9YWV9QT1JUOiB7DQorCQkJCVByb3h5UG9ydCBwcm94eVBvcnQgPSAoUHJveHlQb3J0KXRoZUVPYmplY3Q7DQorCQkJCVQgcmVzdWx0ID0gY2FzZVByb3h5UG9ydChwcm94eVBvcnQpOw0KKwkJCQlpZiAocmVzdWx0ID09IG51bGwpIHJlc3VsdCA9IGRlZmF1bHRDYXNlKHRoZUVPYmplY3QpOw0KKwkJCQlyZXR1cm4gcmVzdWx0Ow0KKwkJCX0NCisJCQljYXNlIFBvcnRhbmRmbG93c1BhY2thZ2UuQUNDRVBUX0NIQU5HRV9TVFJVQ1RVUkFMX0ZFQVRVUkVfRVZFTlRfQUNUSU9OOiB7DQorCQkJCUFjY2VwdENoYW5nZVN0cnVjdHVyYWxGZWF0dXJlRXZlbnRBY3Rpb24gYWNjZXB0Q2hhbmdlU3RydWN0dXJhbEZlYXR1cmVFdmVudEFjdGlvbiA9IChBY2NlcHRDaGFuZ2VTdHJ1Y3R1cmFsRmVhdHVyZUV2ZW50QWN0aW9uKXRoZUVPYmplY3Q7DQorCQkJCVQgcmVzdWx0ID0gY2FzZUFjY2VwdENoYW5nZVN0cnVjdHVyYWxGZWF0dXJlRXZlbnRBY3Rpb24oYWNjZXB0Q2hhbmdlU3RydWN0dXJhbEZlYXR1cmVFdmVudEFjdGlvbik7DQorCQkJCWlmIChyZXN1bHQgPT0gbnVsbCkgcmVzdWx0ID0gZGVmYXVsdENhc2UodGhlRU9iamVjdCk7DQorCQkJCXJldHVybiByZXN1bHQ7DQorCQkJfQ0KKwkJCWNhc2UgUG9ydGFuZGZsb3dzUGFja2FnZS5DSEFOR0VfU1RSVUNUVVJBTF9GRUFUVVJFX0VWRU5UOiB7DQorCQkJCUNoYW5nZVN0cnVjdHVyYWxGZWF0dXJlRXZlbnQgY2hhbmdlU3RydWN0dXJhbEZlYXR1cmVFdmVudCA9IChDaGFuZ2VTdHJ1Y3R1cmFsRmVhdHVyZUV2ZW50KXRoZUVPYmplY3Q7DQorCQkJCVQgcmVzdWx0ID0gY2FzZUNoYW5nZVN0cnVjdHVyYWxGZWF0dXJlRXZlbnQoY2hhbmdlU3RydWN0dXJhbEZlYXR1cmVFdmVudCk7DQorCQkJCWlmIChyZXN1bHQgPT0gbnVsbCkgcmVzdWx0ID0gZGVmYXVsdENhc2UodGhlRU9iamVjdCk7DQorCQkJCXJldHVybiByZXN1bHQ7DQorCQkJfQ0KKwkJCWNhc2UgUG9ydGFuZGZsb3dzUGFja2FnZS5ESVJFQ1RFRF9GRUFUVVJFOiB7DQorCQkJCURpcmVjdGVkRmVhdHVyZSBkaXJlY3RlZEZlYXR1cmUgPSAoRGlyZWN0ZWRGZWF0dXJlKXRoZUVPYmplY3Q7DQorCQkJCVQgcmVzdWx0ID0gY2FzZURpcmVjdGVkRmVhdHVyZShkaXJlY3RlZEZlYXR1cmUpOw0KKwkJCQlpZiAocmVzdWx0ID09IG51bGwpIHJlc3VsdCA9IGRlZmF1bHRDYXNlKHRoZUVPYmplY3QpOw0KKwkJCQlyZXR1cm4gcmVzdWx0Ow0KKwkJCX0NCisJCQljYXNlIFBvcnRhbmRmbG93c1BhY2thZ2UuSU5WT0NBVElPTl9PTl9ORVNURURfUE9SVF9BQ1RJT046IHsNCisJCQkJSW52b2NhdGlvbk9uTmVzdGVkUG9ydEFjdGlvbiBpbnZvY2F0aW9uT25OZXN0ZWRQb3J0QWN0aW9uID0gKEludm9jYXRpb25Pbk5lc3RlZFBvcnRBY3Rpb24pdGhlRU9iamVjdDsNCisJCQkJVCByZXN1bHQgPSBjYXNlSW52b2NhdGlvbk9uTmVzdGVkUG9ydEFjdGlvbihpbnZvY2F0aW9uT25OZXN0ZWRQb3J0QWN0aW9uKTsNCisJCQkJaWYgKHJlc3VsdCA9PSBudWxsKSByZXN1bHQgPSBjYXNlRWxlbWVudFByb3BlcnR5UGF0aChpbnZvY2F0aW9uT25OZXN0ZWRQb3J0QWN0aW9uKTsNCisJCQkJaWYgKHJlc3VsdCA9PSBudWxsKSByZXN1bHQgPSBkZWZhdWx0Q2FzZSh0aGVFT2JqZWN0KTsNCisJCQkJcmV0dXJuIHJlc3VsdDsNCisJCQl9DQorCQkJY2FzZSBQb3J0YW5kZmxvd3NQYWNrYWdlLlRSSUdHRVJfT05fTkVTVEVEX1BPUlQ6IHsNCisJCQkJVHJpZ2dlck9uTmVzdGVkUG9ydCB0cmlnZ2VyT25OZXN0ZWRQb3J0ID0gKFRyaWdnZXJPbk5lc3RlZFBvcnQpdGhlRU9iamVjdDsNCisJCQkJVCByZXN1bHQgPSBjYXNlVHJpZ2dlck9uTmVzdGVkUG9ydCh0cmlnZ2VyT25OZXN0ZWRQb3J0KTsNCisJCQkJaWYgKHJlc3VsdCA9PSBudWxsKSByZXN1bHQgPSBjYXNlRWxlbWVudFByb3BlcnR5UGF0aCh0cmlnZ2VyT25OZXN0ZWRQb3J0KTsNCisJCQkJaWYgKHJlc3VsdCA9PSBudWxsKSByZXN1bHQgPSBkZWZhdWx0Q2FzZSh0aGVFT2JqZWN0KTsNCisJCQkJcmV0dXJuIHJlc3VsdDsNCisJCQl9DQorCQkJZGVmYXVsdDogcmV0dXJuIGRlZmF1bHRDYXNlKHRoZUVPYmplY3QpOw0KKwkJfQ0KKwl9DQorDQorCS8qKg0KKwkgKiBSZXR1cm5zIHRoZSByZXN1bHQgb2YgaW50ZXJwcmV0aW5nIHRoZSBvYmplY3QgYXMgYW4gaW5zdGFuY2Ugb2YgJzxlbT5JdGVtIEZsb3c8L2VtPicuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIFRoaXMgaW1wbGVtZW50YXRpb24gcmV0dXJucyBudWxsOw0KKwkgKiByZXR1cm5pbmcgYSBub24tbnVsbCByZXN1bHQgd2lsbCB0ZXJtaW5hdGUgdGhlIHN3aXRjaC4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBwYXJhbSBvYmplY3QgdGhlIHRhcmdldCBvZiB0aGUgc3dpdGNoLg0KKwkgKiBAcmV0dXJuIHRoZSByZXN1bHQgb2YgaW50ZXJwcmV0aW5nIHRoZSBvYmplY3QgYXMgYW4gaW5zdGFuY2Ugb2YgJzxlbT5JdGVtIEZsb3c8L2VtPicuDQorCSAqIEBzZWUgI2RvU3dpdGNoKG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FT2JqZWN0KSBkb1N3aXRjaChFT2JqZWN0KQ0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgVCBjYXNlSXRlbUZsb3coSXRlbUZsb3cgb2JqZWN0KSB7DQorCQlyZXR1cm4gbnVsbDsNCisJfQ0KKw0KKwkvKioNCisJICogUmV0dXJucyB0aGUgcmVzdWx0IG9mIGludGVycHJldGluZyB0aGUgb2JqZWN0IGFzIGFuIGluc3RhbmNlIG9mICc8ZW0+RmxvdyBQcm9wZXJ0eTwvZW0+Jy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogVGhpcyBpbXBsZW1lbnRhdGlvbiByZXR1cm5zIG51bGw7DQorCSAqIHJldHVybmluZyBhIG5vbi1udWxsIHJlc3VsdCB3aWxsIHRlcm1pbmF0ZSB0aGUgc3dpdGNoLg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHBhcmFtIG9iamVjdCB0aGUgdGFyZ2V0IG9mIHRoZSBzd2l0Y2guDQorCSAqIEByZXR1cm4gdGhlIHJlc3VsdCBvZiBpbnRlcnByZXRpbmcgdGhlIG9iamVjdCBhcyBhbiBpbnN0YW5jZSBvZiAnPGVtPkZsb3cgUHJvcGVydHk8L2VtPicuDQorCSAqIEBzZWUgI2RvU3dpdGNoKG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FT2JqZWN0KSBkb1N3aXRjaChFT2JqZWN0KQ0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgVCBjYXNlRmxvd1Byb3BlcnR5KEZsb3dQcm9wZXJ0eSBvYmplY3QpIHsNCisJCXJldHVybiBudWxsOw0KKwl9DQorDQorCS8qKg0KKwkgKiBSZXR1cm5zIHRoZSByZXN1bHQgb2YgaW50ZXJwcmV0aW5nIHRoZSBvYmplY3QgYXMgYW4gaW5zdGFuY2Ugb2YgJzxlbT5GdWxsIFBvcnQ8L2VtPicuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIFRoaXMgaW1wbGVtZW50YXRpb24gcmV0dXJucyBudWxsOw0KKwkgKiByZXR1cm5pbmcgYSBub24tbnVsbCByZXN1bHQgd2lsbCB0ZXJtaW5hdGUgdGhlIHN3aXRjaC4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBwYXJhbSBvYmplY3QgdGhlIHRhcmdldCBvZiB0aGUgc3dpdGNoLg0KKwkgKiBAcmV0dXJuIHRoZSByZXN1bHQgb2YgaW50ZXJwcmV0aW5nIHRoZSBvYmplY3QgYXMgYW4gaW5zdGFuY2Ugb2YgJzxlbT5GdWxsIFBvcnQ8L2VtPicuDQorCSAqIEBzZWUgI2RvU3dpdGNoKG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FT2JqZWN0KSBkb1N3aXRjaChFT2JqZWN0KQ0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgVCBjYXNlRnVsbFBvcnQoRnVsbFBvcnQgb2JqZWN0KSB7DQorCQlyZXR1cm4gbnVsbDsNCisJfQ0KKw0KKwkvKioNCisJICogUmV0dXJucyB0aGUgcmVzdWx0IG9mIGludGVycHJldGluZyB0aGUgb2JqZWN0IGFzIGFuIGluc3RhbmNlIG9mICc8ZW0+SW50ZXJmYWNlIEJsb2NrPC9lbT4nLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiBUaGlzIGltcGxlbWVudGF0aW9uIHJldHVybnMgbnVsbDsNCisJICogcmV0dXJuaW5nIGEgbm9uLW51bGwgcmVzdWx0IHdpbGwgdGVybWluYXRlIHRoZSBzd2l0Y2guDQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAcGFyYW0gb2JqZWN0IHRoZSB0YXJnZXQgb2YgdGhlIHN3aXRjaC4NCisJICogQHJldHVybiB0aGUgcmVzdWx0IG9mIGludGVycHJldGluZyB0aGUgb2JqZWN0IGFzIGFuIGluc3RhbmNlIG9mICc8ZW0+SW50ZXJmYWNlIEJsb2NrPC9lbT4nLg0KKwkgKiBAc2VlICNkb1N3aXRjaChvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRU9iamVjdCkgZG9Td2l0Y2goRU9iamVjdCkNCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIFQgY2FzZUludGVyZmFjZUJsb2NrKEludGVyZmFjZUJsb2NrIG9iamVjdCkgew0KKwkJcmV0dXJuIG51bGw7DQorCX0NCisNCisJLyoqDQorCSAqIFJldHVybnMgdGhlIHJlc3VsdCBvZiBpbnRlcnByZXRpbmcgdGhlIG9iamVjdCBhcyBhbiBpbnN0YW5jZSBvZiAnPGVtPlByb3h5IFBvcnQ8L2VtPicuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIFRoaXMgaW1wbGVtZW50YXRpb24gcmV0dXJucyBudWxsOw0KKwkgKiByZXR1cm5pbmcgYSBub24tbnVsbCByZXN1bHQgd2lsbCB0ZXJtaW5hdGUgdGhlIHN3aXRjaC4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBwYXJhbSBvYmplY3QgdGhlIHRhcmdldCBvZiB0aGUgc3dpdGNoLg0KKwkgKiBAcmV0dXJuIHRoZSByZXN1bHQgb2YgaW50ZXJwcmV0aW5nIHRoZSBvYmplY3QgYXMgYW4gaW5zdGFuY2Ugb2YgJzxlbT5Qcm94eSBQb3J0PC9lbT4nLg0KKwkgKiBAc2VlICNkb1N3aXRjaChvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRU9iamVjdCkgZG9Td2l0Y2goRU9iamVjdCkNCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIFQgY2FzZVByb3h5UG9ydChQcm94eVBvcnQgb2JqZWN0KSB7DQorCQlyZXR1cm4gbnVsbDsNCisJfQ0KKw0KKwkvKioNCisJICogUmV0dXJucyB0aGUgcmVzdWx0IG9mIGludGVycHJldGluZyB0aGUgb2JqZWN0IGFzIGFuIGluc3RhbmNlIG9mICc8ZW0+QWNjZXB0IENoYW5nZSBTdHJ1Y3R1cmFsIEZlYXR1cmUgRXZlbnQgQWN0aW9uPC9lbT4nLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiBUaGlzIGltcGxlbWVudGF0aW9uIHJldHVybnMgbnVsbDsNCisJICogcmV0dXJuaW5nIGEgbm9uLW51bGwgcmVzdWx0IHdpbGwgdGVybWluYXRlIHRoZSBzd2l0Y2guDQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAcGFyYW0gb2JqZWN0IHRoZSB0YXJnZXQgb2YgdGhlIHN3aXRjaC4NCisJICogQHJldHVybiB0aGUgcmVzdWx0IG9mIGludGVycHJldGluZyB0aGUgb2JqZWN0IGFzIGFuIGluc3RhbmNlIG9mICc8ZW0+QWNjZXB0IENoYW5nZSBTdHJ1Y3R1cmFsIEZlYXR1cmUgRXZlbnQgQWN0aW9uPC9lbT4nLg0KKwkgKiBAc2VlICNkb1N3aXRjaChvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRU9iamVjdCkgZG9Td2l0Y2goRU9iamVjdCkNCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIFQgY2FzZUFjY2VwdENoYW5nZVN0cnVjdHVyYWxGZWF0dXJlRXZlbnRBY3Rpb24oQWNjZXB0Q2hhbmdlU3RydWN0dXJhbEZlYXR1cmVFdmVudEFjdGlvbiBvYmplY3QpIHsNCisJCXJldHVybiBudWxsOw0KKwl9DQorDQorCS8qKg0KKwkgKiBSZXR1cm5zIHRoZSByZXN1bHQgb2YgaW50ZXJwcmV0aW5nIHRoZSBvYmplY3QgYXMgYW4gaW5zdGFuY2Ugb2YgJzxlbT5DaGFuZ2UgU3RydWN0dXJhbCBGZWF0dXJlIEV2ZW50PC9lbT4nLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiBUaGlzIGltcGxlbWVudGF0aW9uIHJldHVybnMgbnVsbDsNCisJICogcmV0dXJuaW5nIGEgbm9uLW51bGwgcmVzdWx0IHdpbGwgdGVybWluYXRlIHRoZSBzd2l0Y2guDQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAcGFyYW0gb2JqZWN0IHRoZSB0YXJnZXQgb2YgdGhlIHN3aXRjaC4NCisJICogQHJldHVybiB0aGUgcmVzdWx0IG9mIGludGVycHJldGluZyB0aGUgb2JqZWN0IGFzIGFuIGluc3RhbmNlIG9mICc8ZW0+Q2hhbmdlIFN0cnVjdHVyYWwgRmVhdHVyZSBFdmVudDwvZW0+Jy4NCisJICogQHNlZSAjZG9Td2l0Y2gob3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVPYmplY3QpIGRvU3dpdGNoKEVPYmplY3QpDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBUIGNhc2VDaGFuZ2VTdHJ1Y3R1cmFsRmVhdHVyZUV2ZW50KENoYW5nZVN0cnVjdHVyYWxGZWF0dXJlRXZlbnQgb2JqZWN0KSB7DQorCQlyZXR1cm4gbnVsbDsNCisJfQ0KKw0KKwkvKioNCisJICogUmV0dXJucyB0aGUgcmVzdWx0IG9mIGludGVycHJldGluZyB0aGUgb2JqZWN0IGFzIGFuIGluc3RhbmNlIG9mICc8ZW0+RGlyZWN0ZWQgRmVhdHVyZTwvZW0+Jy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogVGhpcyBpbXBsZW1lbnRhdGlvbiByZXR1cm5zIG51bGw7DQorCSAqIHJldHVybmluZyBhIG5vbi1udWxsIHJlc3VsdCB3aWxsIHRlcm1pbmF0ZSB0aGUgc3dpdGNoLg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHBhcmFtIG9iamVjdCB0aGUgdGFyZ2V0IG9mIHRoZSBzd2l0Y2guDQorCSAqIEByZXR1cm4gdGhlIHJlc3VsdCBvZiBpbnRlcnByZXRpbmcgdGhlIG9iamVjdCBhcyBhbiBpbnN0YW5jZSBvZiAnPGVtPkRpcmVjdGVkIEZlYXR1cmU8L2VtPicuDQorCSAqIEBzZWUgI2RvU3dpdGNoKG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FT2JqZWN0KSBkb1N3aXRjaChFT2JqZWN0KQ0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgVCBjYXNlRGlyZWN0ZWRGZWF0dXJlKERpcmVjdGVkRmVhdHVyZSBvYmplY3QpIHsNCisJCXJldHVybiBudWxsOw0KKwl9DQorDQorCS8qKg0KKwkgKiBSZXR1cm5zIHRoZSByZXN1bHQgb2YgaW50ZXJwcmV0aW5nIHRoZSBvYmplY3QgYXMgYW4gaW5zdGFuY2Ugb2YgJzxlbT5JbnZvY2F0aW9uIE9uIE5lc3RlZCBQb3J0IEFjdGlvbjwvZW0+Jy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogVGhpcyBpbXBsZW1lbnRhdGlvbiByZXR1cm5zIG51bGw7DQorCSAqIHJldHVybmluZyBhIG5vbi1udWxsIHJlc3VsdCB3aWxsIHRlcm1pbmF0ZSB0aGUgc3dpdGNoLg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHBhcmFtIG9iamVjdCB0aGUgdGFyZ2V0IG9mIHRoZSBzd2l0Y2guDQorCSAqIEByZXR1cm4gdGhlIHJlc3VsdCBvZiBpbnRlcnByZXRpbmcgdGhlIG9iamVjdCBhcyBhbiBpbnN0YW5jZSBvZiAnPGVtPkludm9jYXRpb24gT24gTmVzdGVkIFBvcnQgQWN0aW9uPC9lbT4nLg0KKwkgKiBAc2VlICNkb1N3aXRjaChvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRU9iamVjdCkgZG9Td2l0Y2goRU9iamVjdCkNCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIFQgY2FzZUludm9jYXRpb25Pbk5lc3RlZFBvcnRBY3Rpb24oSW52b2NhdGlvbk9uTmVzdGVkUG9ydEFjdGlvbiBvYmplY3QpIHsNCisJCXJldHVybiBudWxsOw0KKwl9DQorDQorCS8qKg0KKwkgKiBSZXR1cm5zIHRoZSByZXN1bHQgb2YgaW50ZXJwcmV0aW5nIHRoZSBvYmplY3QgYXMgYW4gaW5zdGFuY2Ugb2YgJzxlbT5UcmlnZ2VyIE9uIE5lc3RlZCBQb3J0PC9lbT4nLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiBUaGlzIGltcGxlbWVudGF0aW9uIHJldHVybnMgbnVsbDsNCisJICogcmV0dXJuaW5nIGEgbm9uLW51bGwgcmVzdWx0IHdpbGwgdGVybWluYXRlIHRoZSBzd2l0Y2guDQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAcGFyYW0gb2JqZWN0IHRoZSB0YXJnZXQgb2YgdGhlIHN3aXRjaC4NCisJICogQHJldHVybiB0aGUgcmVzdWx0IG9mIGludGVycHJldGluZyB0aGUgb2JqZWN0IGFzIGFuIGluc3RhbmNlIG9mICc8ZW0+VHJpZ2dlciBPbiBOZXN0ZWQgUG9ydDwvZW0+Jy4NCisJICogQHNlZSAjZG9Td2l0Y2gob3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVPYmplY3QpIGRvU3dpdGNoKEVPYmplY3QpDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBUIGNhc2VUcmlnZ2VyT25OZXN0ZWRQb3J0KFRyaWdnZXJPbk5lc3RlZFBvcnQgb2JqZWN0KSB7DQorCQlyZXR1cm4gbnVsbDsNCisJfQ0KKw0KKwkvKioNCisJICogUmV0dXJucyB0aGUgcmVzdWx0IG9mIGludGVycHJldGluZyB0aGUgb2JqZWN0IGFzIGFuIGluc3RhbmNlIG9mICc8ZW0+QmxvY2s8L2VtPicuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIFRoaXMgaW1wbGVtZW50YXRpb24gcmV0dXJucyBudWxsOw0KKwkgKiByZXR1cm5pbmcgYSBub24tbnVsbCByZXN1bHQgd2lsbCB0ZXJtaW5hdGUgdGhlIHN3aXRjaC4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBwYXJhbSBvYmplY3QgdGhlIHRhcmdldCBvZiB0aGUgc3dpdGNoLg0KKwkgKiBAcmV0dXJuIHRoZSByZXN1bHQgb2YgaW50ZXJwcmV0aW5nIHRoZSBvYmplY3QgYXMgYW4gaW5zdGFuY2Ugb2YgJzxlbT5CbG9jazwvZW0+Jy4NCisJICogQHNlZSAjZG9Td2l0Y2gob3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVPYmplY3QpIGRvU3dpdGNoKEVPYmplY3QpDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBUIGNhc2VCbG9jayhCbG9jayBvYmplY3QpIHsNCisJCXJldHVybiBudWxsOw0KKwl9DQorDQorCS8qKg0KKwkgKiBSZXR1cm5zIHRoZSByZXN1bHQgb2YgaW50ZXJwcmV0aW5nIHRoZSBvYmplY3QgYXMgYW4gaW5zdGFuY2Ugb2YgJzxlbT5FbGVtZW50IFByb3BlcnR5IFBhdGg8L2VtPicuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIFRoaXMgaW1wbGVtZW50YXRpb24gcmV0dXJucyBudWxsOw0KKwkgKiByZXR1cm5pbmcgYSBub24tbnVsbCByZXN1bHQgd2lsbCB0ZXJtaW5hdGUgdGhlIHN3aXRjaC4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBwYXJhbSBvYmplY3QgdGhlIHRhcmdldCBvZiB0aGUgc3dpdGNoLg0KKwkgKiBAcmV0dXJuIHRoZSByZXN1bHQgb2YgaW50ZXJwcmV0aW5nIHRoZSBvYmplY3QgYXMgYW4gaW5zdGFuY2Ugb2YgJzxlbT5FbGVtZW50IFByb3BlcnR5IFBhdGg8L2VtPicuDQorCSAqIEBzZWUgI2RvU3dpdGNoKG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FT2JqZWN0KSBkb1N3aXRjaChFT2JqZWN0KQ0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgVCBjYXNlRWxlbWVudFByb3BlcnR5UGF0aChFbGVtZW50UHJvcGVydHlQYXRoIG9iamVjdCkgew0KKwkJcmV0dXJuIG51bGw7DQorCX0NCisNCisJLyoqDQorCSAqIFJldHVybnMgdGhlIHJlc3VsdCBvZiBpbnRlcnByZXRpbmcgdGhlIG9iamVjdCBhcyBhbiBpbnN0YW5jZSBvZiAnPGVtPkVPYmplY3Q8L2VtPicuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIFRoaXMgaW1wbGVtZW50YXRpb24gcmV0dXJucyBudWxsOw0KKwkgKiByZXR1cm5pbmcgYSBub24tbnVsbCByZXN1bHQgd2lsbCB0ZXJtaW5hdGUgdGhlIHN3aXRjaCwgYnV0IHRoaXMgaXMgdGhlIGxhc3QgY2FzZSBhbnl3YXkuDQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAcGFyYW0gb2JqZWN0IHRoZSB0YXJnZXQgb2YgdGhlIHN3aXRjaC4NCisJICogQHJldHVybiB0aGUgcmVzdWx0IG9mIGludGVycHJldGluZyB0aGUgb2JqZWN0IGFzIGFuIGluc3RhbmNlIG9mICc8ZW0+RU9iamVjdDwvZW0+Jy4NCisJICogQHNlZSAjZG9Td2l0Y2gob3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVPYmplY3QpDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgVCBkZWZhdWx0Q2FzZShFT2JqZWN0IG9iamVjdCkgew0KKwkJcmV0dXJuIG51bGw7DQorCX0NCisNCit9IC8vUG9ydGFuZGZsb3dzU3dpdGNoDQpkaWZmIC0tZ2l0IGEvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvcmVxdWlyZW1lbnRzL0NvcHkuamF2YSBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L3JlcXVpcmVtZW50cy9Db3B5LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTY0NGUyYQotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L3JlcXVpcmVtZW50cy9Db3B5LmphdmEKQEAgLTAsMCArMSwyNyBAQAorLyoqDQorICogQ29weXJpZ2h0IChjKSAyMDE1IENFQSBMSVNULg0KKyAqIA0KKyAqICBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQorICogIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KKyAqICB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KKyAqICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqLw0KK3BhY2thZ2Ugb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnJlcXVpcmVtZW50czsNCisNCisNCisvKioNCisgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKyAqIEEgcmVwcmVzZW50YXRpb24gb2YgdGhlIG1vZGVsIG9iamVjdCAnPGVtPjxiPkNvcHk8L2I+PC9lbT4nLg0KKyAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKyAqDQorICogPCEtLSBiZWdpbi1tb2RlbC1kb2MgLS0+DQorICogQSBDb3B5IHJlbGF0aW9uc2hpcCBpcyBhIGRlcGVuZGVuY3kgYmV0d2VlbiBhIHN1cHBsaWVyIHJlcXVpcmVtZW50IGFuZCBhIGNsaWVudCByZXF1aXJlbWVudCB0aGF0IHNwZWNpZmllcyB0aGF0IHRoZSB0ZXh0IG9mIHRoZSBjbGllbnQgcmVxdWlyZW1lbnQgaXMgYSByZWFkLW9ubHkgY29weSBvZiB0aGUgdGV4dCBvZiB0aGUgc3VwcGxpZXIgcmVxdWlyZW1lbnQuDQorICogPCEtLSBlbmQtbW9kZWwtZG9jIC0tPg0KKyAqDQorICoNCisgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5yZXF1aXJlbWVudHMuUmVxdWlyZW1lbnRzUGFja2FnZSNnZXRDb3B5KCkNCisgKiBAbW9kZWwNCisgKiBAZ2VuZXJhdGVkDQorICovDQorcHVibGljIGludGVyZmFjZSBDb3B5IGV4dGVuZHMgVHJhY2Ugew0KK30gLy8gQ29weQ0KZGlmZiAtLWdpdCBhL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L3JlcXVpcmVtZW50cy9EZXJpdmVSZXF0LmphdmEgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9yZXF1aXJlbWVudHMvRGVyaXZlUmVxdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc2NzQwNzAKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9yZXF1aXJlbWVudHMvRGVyaXZlUmVxdC5qYXZhCkBAIC0wLDAgKzEsMjcgQEAKKy8qKg0KKyAqIENvcHlyaWdodCAoYykgMjAxNSBDRUEgTElTVC4NCisgKiANCisgKiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KKyAqICBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCisgKiAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCisgKiAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgKi8NCitwYWNrYWdlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5yZXF1aXJlbWVudHM7DQorDQorDQorLyoqDQorICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisgKiBBIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBtb2RlbCBvYmplY3QgJzxlbT48Yj5EZXJpdmUgUmVxdDwvYj48L2VtPicuDQorICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorICoNCisgKiA8IS0tIGJlZ2luLW1vZGVsLWRvYyAtLT4NCisgKiBBIERlcml2ZVJlcXQgcmVsYXRpb25zaGlwIGlzIGEgZGVwZW5kZW5jeSBiZXR3ZWVuIHR3byByZXF1aXJlbWVudHMgaW4gd2hpY2ggYSBjbGllbnQgcmVxdWlyZW1lbnQgY2FuIGJlIGRlcml2ZWQgZnJvbSB0aGUgc3VwcGxpZXIgcmVxdWlyZW1lbnQuIEFzIHdpdGggb3RoZXIgZGVwZW5kZW5jaWVzLCB0aGUgYXJyb3cgZGlyZWN0aW9uIHBvaW50cyBmcm9tIHRoZSBkZXJpdmVkIChjbGllbnQpIHJlcXVpcmVtZW50IHRvIHRoZSAoc3VwcGxpZXIpIHJlcXVpcmVtZW50IGZyb20gd2hpY2ggaXQgaXMgZGVyaXZlZC4NCisgKiA8IS0tIGVuZC1tb2RlbC1kb2MgLS0+DQorICoNCisgKg0KKyAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnJlcXVpcmVtZW50cy5SZXF1aXJlbWVudHNQYWNrYWdlI2dldERlcml2ZVJlcXQoKQ0KKyAqIEBtb2RlbA0KKyAqIEBnZW5lcmF0ZWQNCisgKi8NCitwdWJsaWMgaW50ZXJmYWNlIERlcml2ZVJlcXQgZXh0ZW5kcyBUcmFjZSB7DQorfSAvLyBEZXJpdmVSZXF0DQpkaWZmIC0tZ2l0IGEvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvcmVxdWlyZW1lbnRzL1JlZmluZS5qYXZhIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvcmVxdWlyZW1lbnRzL1JlZmluZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlmZGZjNGQKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9yZXF1aXJlbWVudHMvUmVmaW5lLmphdmEKQEAgLTAsMCArMSwzNiBAQAorLyoqDQorICogQ29weXJpZ2h0IChjKSAyMDE1IENFQSBMSVNULg0KKyAqIA0KKyAqICBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQorICogIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KKyAqICB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KKyAqICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqLw0KK3BhY2thZ2Ugb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnJlcXVpcmVtZW50czsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi51dGlsLkVMaXN0Ow0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYmxvY2tzLkRpcmVjdGVkUmVsYXRpb25zaGlwUHJvcGVydHlQYXRoOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS51bWwyLnVtbC5OYW1lZEVsZW1lbnQ7DQorDQorLyoqDQorICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisgKiBBIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBtb2RlbCBvYmplY3QgJzxlbT48Yj5SZWZpbmU8L2I+PC9lbT4nLg0KKyAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKyAqDQorICoNCisgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5yZXF1aXJlbWVudHMuUmVxdWlyZW1lbnRzUGFja2FnZSNnZXRSZWZpbmUoKQ0KKyAqIEBtb2RlbA0KKyAqIEBnZW5lcmF0ZWQNCisgKi8NCitwdWJsaWMgaW50ZXJmYWNlIFJlZmluZSBleHRlbmRzIERpcmVjdGVkUmVsYXRpb25zaGlwUHJvcGVydHlQYXRoLCBvcmcuZWNsaXBzZS51bWwyLnVtbC5wcm9maWxlLnN0YW5kYXJkLlJlZmluZSB7DQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQG1vZGVsIHJlcXVpcmVkPSJ0cnVlIiBvcmRlcmVkPSJmYWxzZSIgcmVmUmVxdWlyZWQ9InRydWUiIHJlZk9yZGVyZWQ9ImZhbHNlIg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlFTGlzdDxSZXF1aXJlbWVudD4gZ2V0UmVmaW5lcyhOYW1lZEVsZW1lbnQgcmVmKTsNCisNCit9IC8vIFJlZmluZQ0KZGlmZiAtLWdpdCBhL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L3JlcXVpcmVtZW50cy9SZXF1aXJlbWVudC5qYXZhIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvcmVxdWlyZW1lbnRzL1JlcXVpcmVtZW50LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGUyOWYwZAotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L3JlcXVpcmVtZW50cy9SZXF1aXJlbWVudC5qYXZhCkBAIC0wLDAgKzEsMzM3IEBACisvKioNCisgKiBDb3B5cmlnaHQgKGMpIDIwMTUgQ0VBIExJU1QuDQorICogDQorICogIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCisgKiAgYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQorICogIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQorICogIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICovDQorcGFja2FnZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucmVxdWlyZW1lbnRzOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY29tbW9uLnV0aWwuRUxpc3Q7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FQ2xhc3M7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FT2JqZWN0Ow0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS51bWwyLnVtbC5OYW1lZEVsZW1lbnQ7DQorDQorLyoqDQorICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisgKiBBIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBtb2RlbCBvYmplY3QgJzxlbT48Yj5SZXF1aXJlbWVudDwvYj48L2VtPicuDQorICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorICoNCisgKiA8IS0tIGJlZ2luLW1vZGVsLWRvYyAtLT4NCisgKiBBIHJlcXVpcmVtZW50IHNwZWNpZmllcyBhIGNhcGFiaWxpdHkgb3IgY29uZGl0aW9uIHRoYXQgbXVzdCAob3Igc2hvdWxkKSBiZSBzYXRpc2ZpZWQuIEEgcmVxdWlyZW1lbnQgbWF5IHNwZWNpZnkgYSBmdW5jdGlvbiB0aGF0IGEgc3lzdGVtIG11c3QgcGVyZm9ybSBvciBhIHBlcmZvcm1hbmNlIGNvbmRpdGlvbiB0aGF0IGEgc3lzdGVtIG11c3Qgc2F0aXNmeS4gUmVxdWlyZW1lbnRzIGFyZSB1c2VkIHRvIGVzdGFibGlzaCBhIGNvbnRyYWN0IGJldHdlZW4gdGhlIGN1c3RvbWVyIChvciBvdGhlciBzdGFrZWhvbGRlcikgYW5kIHRob3NlIHJlc3BvbnNpYmxlIGZvciBkZXNpZ25pbmcgYW5kIGltcGxlbWVudGluZyB0aGUgc3lzdGVtLg0KKyAqIDwhLS0gZW5kLW1vZGVsLWRvYyAtLT4NCisgKg0KKyAqIDxwPg0KKyAqIFRoZSBmb2xsb3dpbmcgZmVhdHVyZXMgYXJlIHN1cHBvcnRlZDoNCisgKiA8dWw+DQorICogICA8bGk+e0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5yZXF1aXJlbWVudHMuUmVxdWlyZW1lbnQjZ2V0QmFzZV9DbGFzcyA8ZW0+QmFzZSBDbGFzczwvZW0+fTwvbGk+DQorICogICA8bGk+e0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5yZXF1aXJlbWVudHMuUmVxdWlyZW1lbnQjZ2V0VGV4dCA8ZW0+VGV4dDwvZW0+fTwvbGk+DQorICogICA8bGk+e0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5yZXF1aXJlbWVudHMuUmVxdWlyZW1lbnQjZ2V0SWQgPGVtPklkPC9lbT59PC9saT4NCisgKiAgIDxsaT57QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnJlcXVpcmVtZW50cy5SZXF1aXJlbWVudCNnZXREZXJpdmVkIDxlbT5EZXJpdmVkPC9lbT59PC9saT4NCisgKiAgIDxsaT57QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnJlcXVpcmVtZW50cy5SZXF1aXJlbWVudCNnZXREZXJpdmVkRnJvbSA8ZW0+RGVyaXZlZCBGcm9tPC9lbT59PC9saT4NCisgKiAgIDxsaT57QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnJlcXVpcmVtZW50cy5SZXF1aXJlbWVudCNnZXRTYXRpc2ZpZWRCeSA8ZW0+U2F0aXNmaWVkIEJ5PC9lbT59PC9saT4NCisgKiAgIDxsaT57QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnJlcXVpcmVtZW50cy5SZXF1aXJlbWVudCNnZXRSZWZpbmVkQnkgPGVtPlJlZmluZWQgQnk8L2VtPn08L2xpPg0KKyAqICAgPGxpPntAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucmVxdWlyZW1lbnRzLlJlcXVpcmVtZW50I2dldFRyYWNlZFRvIDxlbT5UcmFjZWQgVG88L2VtPn08L2xpPg0KKyAqICAgPGxpPntAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucmVxdWlyZW1lbnRzLlJlcXVpcmVtZW50I2dldFZlcmlmaWVkQnkgPGVtPlZlcmlmaWVkIEJ5PC9lbT59PC9saT4NCisgKiAgIDxsaT57QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnJlcXVpcmVtZW50cy5SZXF1aXJlbWVudCNnZXRNYXN0ZXIgPGVtPk1hc3RlcjwvZW0+fTwvbGk+DQorICogPC91bD4NCisgKiA8L3A+DQorICoNCisgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5yZXF1aXJlbWVudHMuUmVxdWlyZW1lbnRzUGFja2FnZSNnZXRSZXF1aXJlbWVudCgpDQorICogQG1vZGVsDQorICogQGdlbmVyYXRlZA0KKyAqLw0KK3B1YmxpYyBpbnRlcmZhY2UgUmVxdWlyZW1lbnQgZXh0ZW5kcyBFT2JqZWN0IHsNCisJLyoqDQorCSAqIFJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSAnPGVtPjxiPkJhc2UgQ2xhc3M8L2I+PC9lbT4nIHJlZmVyZW5jZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPHA+DQorCSAqIElmIHRoZSBtZWFuaW5nIG9mIHRoZSAnPGVtPkJhc2UgQ2xhc3M8L2VtPicgcmVmZXJlbmNlIGlzbid0IGNsZWFyLA0KKwkgKiB0aGVyZSByZWFsbHkgc2hvdWxkIGJlIG1vcmUgb2YgYSBkZXNjcmlwdGlvbiBoZXJlLi4uDQorCSAqIDwvcD4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEByZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSAnPGVtPkJhc2UgQ2xhc3M8L2VtPicgcmVmZXJlbmNlLg0KKwkgKiBAc2VlICNzZXRCYXNlX0NsYXNzKG9yZy5lY2xpcHNlLnVtbDIudW1sLkNsYXNzKQ0KKwkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5yZXF1aXJlbWVudHMuUmVxdWlyZW1lbnRzUGFja2FnZSNnZXRSZXF1aXJlbWVudF9CYXNlX0NsYXNzKCkNCisJICogQG1vZGVsIG9yZGVyZWQ9ImZhbHNlIg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlvcmcuZWNsaXBzZS51bWwyLnVtbC5DbGFzcyBnZXRCYXNlX0NsYXNzKCk7DQorDQorCS8qKg0KKwkgKiBTZXRzIHRoZSB2YWx1ZSBvZiB0aGUgJ3tAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucmVxdWlyZW1lbnRzLlJlcXVpcmVtZW50I2dldEJhc2VfQ2xhc3MgPGVtPkJhc2UgQ2xhc3M8L2VtPn0nIHJlZmVyZW5jZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBwYXJhbSB2YWx1ZSB0aGUgbmV3IHZhbHVlIG9mIHRoZSAnPGVtPkJhc2UgQ2xhc3M8L2VtPicgcmVmZXJlbmNlLg0KKwkgKiBAc2VlICNnZXRCYXNlX0NsYXNzKCkNCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJdm9pZCBzZXRCYXNlX0NsYXNzKG9yZy5lY2xpcHNlLnVtbDIudW1sLkNsYXNzIHZhbHVlKTsNCisNCisJLyoqDQorCSAqIFJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSAnPGVtPjxiPlRleHQ8L2I+PC9lbT4nIGF0dHJpYnV0ZS4NCisJICogVGhlIGRlZmF1bHQgdmFsdWUgaXMgPGNvZGU+IiI8L2NvZGU+Lg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogPCEtLSBiZWdpbi1tb2RlbC1kb2MgLS0+DQorCSAqIFRoZSB0ZXh0dWFsIHJlcHJlc2VudGF0aW9uIG9yIGEgcmVmZXJlbmNlIHRvIHRoZSB0ZXh0dWFsIHJlcHJlc2VudGF0aW9uIG9mIHRoZSByZXF1aXJlbWVudC4NCisJICogPCEtLSBlbmQtbW9kZWwtZG9jIC0tPg0KKwkgKiBAcmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT5UZXh0PC9lbT4nIGF0dHJpYnV0ZS4NCisJICogQHNlZSAjc2V0VGV4dChTdHJpbmcpDQorCSAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnJlcXVpcmVtZW50cy5SZXF1aXJlbWVudHNQYWNrYWdlI2dldFJlcXVpcmVtZW50X1RleHQoKQ0KKwkgKiBAbW9kZWwgZGVmYXVsdD0iIiBkYXRhVHlwZT0ib3JnLmVjbGlwc2UudW1sMi50eXBlcy5TdHJpbmciIHJlcXVpcmVkPSJ0cnVlIiBvcmRlcmVkPSJmYWxzZSINCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJU3RyaW5nIGdldFRleHQoKTsNCisNCisJLyoqDQorCSAqIFNldHMgdGhlIHZhbHVlIG9mIHRoZSAne0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5yZXF1aXJlbWVudHMuUmVxdWlyZW1lbnQjZ2V0VGV4dCA8ZW0+VGV4dDwvZW0+fScgYXR0cmlidXRlLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHBhcmFtIHZhbHVlIHRoZSBuZXcgdmFsdWUgb2YgdGhlICc8ZW0+VGV4dDwvZW0+JyBhdHRyaWJ1dGUuDQorCSAqIEBzZWUgI2dldFRleHQoKQ0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwl2b2lkIHNldFRleHQoU3RyaW5nIHZhbHVlKTsNCisNCisJLyoqDQorCSAqIFJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSAnPGVtPjxiPklkPC9iPjwvZW0+JyBhdHRyaWJ1dGUuDQorCSAqIFRoZSBkZWZhdWx0IHZhbHVlIGlzIDxjb2RlPiIiPC9jb2RlPi4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gYmVnaW4tbW9kZWwtZG9jIC0tPg0KKwkgKiBUaGUgdW5pcXVlIGlkIG9mIHRoZSByZXF1aXJlbWVudC4NCisJICogPCEtLSBlbmQtbW9kZWwtZG9jIC0tPg0KKwkgKiBAcmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT5JZDwvZW0+JyBhdHRyaWJ1dGUuDQorCSAqIEBzZWUgI3NldElkKFN0cmluZykNCisJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucmVxdWlyZW1lbnRzLlJlcXVpcmVtZW50c1BhY2thZ2UjZ2V0UmVxdWlyZW1lbnRfSWQoKQ0KKwkgKiBAbW9kZWwgZGVmYXVsdD0iIiBkYXRhVHlwZT0ib3JnLmVjbGlwc2UudW1sMi50eXBlcy5TdHJpbmciIHJlcXVpcmVkPSJ0cnVlIiBvcmRlcmVkPSJmYWxzZSINCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJU3RyaW5nIGdldElkKCk7DQorDQorCS8qKg0KKwkgKiBTZXRzIHRoZSB2YWx1ZSBvZiB0aGUgJ3tAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucmVxdWlyZW1lbnRzLlJlcXVpcmVtZW50I2dldElkIDxlbT5JZDwvZW0+fScgYXR0cmlidXRlLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHBhcmFtIHZhbHVlIHRoZSBuZXcgdmFsdWUgb2YgdGhlICc8ZW0+SWQ8L2VtPicgYXR0cmlidXRlLg0KKwkgKiBAc2VlICNnZXRJZCgpDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXZvaWQgc2V0SWQoU3RyaW5nIHZhbHVlKTsNCisNCisJLyoqDQorCSAqIFJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSAnPGVtPjxiPkRlcml2ZWQ8L2I+PC9lbT4nIHJlZmVyZW5jZSBsaXN0Lg0KKwkgKiBUaGUgbGlzdCBjb250ZW50cyBhcmUgb2YgdHlwZSB7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnJlcXVpcmVtZW50cy5SZXF1aXJlbWVudH0uDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGJlZ2luLW1vZGVsLWRvYyAtLT4NCisJICogRGVyaXZlZCBmcm9tIGFsbCByZXF1aXJlbWVudHMgdGhhdCBhcmUgdGhlIGNsaWVudCBvZiBhIKtkZXJpdmVSZXF0uyByZWxhdGlvbnNoaXAgZm9yIHdoaWNoIHRoaXMgcmVxdWlyZW1lbnQgaXMgYSBzdXBwbGllci4NCisJICogPCEtLSBlbmQtbW9kZWwtZG9jIC0tPg0KKwkgKiBAcmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT5EZXJpdmVkPC9lbT4nIHJlZmVyZW5jZSBsaXN0Lg0KKwkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5yZXF1aXJlbWVudHMuUmVxdWlyZW1lbnRzUGFja2FnZSNnZXRSZXF1aXJlbWVudF9EZXJpdmVkKCkNCisJICogQG1vZGVsIHRyYW5zaWVudD0idHJ1ZSIgdm9sYXRpbGU9InRydWUiIGRlcml2ZWQ9InRydWUiIG9yZGVyZWQ9ImZhbHNlIg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlFTGlzdDxSZXF1aXJlbWVudD4gZ2V0RGVyaXZlZCgpOw0KKw0KKwkvKioNCisJICogUmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+PGI+RGVyaXZlZCBGcm9tPC9iPjwvZW0+JyByZWZlcmVuY2UgbGlzdC4NCisJICogVGhlIGxpc3QgY29udGVudHMgYXJlIG9mIHR5cGUge0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5yZXF1aXJlbWVudHMuUmVxdWlyZW1lbnR9Lg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogPCEtLSBiZWdpbi1tb2RlbC1kb2MgLS0+DQorCSAqIERlcml2ZWQgZnJvbSBhbGwgcmVxdWlyZW1lbnRzIHRoYXQgYXJlIHRoZSBzdXBwbGllciBvZiBhIKtkZXJpdmVSZXF0uyByZWxhdGlvbnNoaXAgZm9yIHdoaWNoIHRoaXMgcmVxdWlyZW1lbnQgaXMgYSBjbGllbnQuDQorCSAqIDwhLS0gZW5kLW1vZGVsLWRvYyAtLT4NCisJICogQHJldHVybiB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+RGVyaXZlZCBGcm9tPC9lbT4nIHJlZmVyZW5jZSBsaXN0Lg0KKwkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5yZXF1aXJlbWVudHMuUmVxdWlyZW1lbnRzUGFja2FnZSNnZXRSZXF1aXJlbWVudF9EZXJpdmVkRnJvbSgpDQorCSAqIEBtb2RlbCB0cmFuc2llbnQ9InRydWUiIHZvbGF0aWxlPSJ0cnVlIiBkZXJpdmVkPSJ0cnVlIiBvcmRlcmVkPSJmYWxzZSINCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJRUxpc3Q8UmVxdWlyZW1lbnQ+IGdldERlcml2ZWRGcm9tKCk7DQorDQorCS8qKg0KKwkgKiBSZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT48Yj5TYXRpc2ZpZWQgQnk8L2I+PC9lbT4nIHJlZmVyZW5jZSBsaXN0Lg0KKwkgKiBUaGUgbGlzdCBjb250ZW50cyBhcmUgb2YgdHlwZSB7QGxpbmsgb3JnLmVjbGlwc2UudW1sMi51bWwuTmFtZWRFbGVtZW50fS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gYmVnaW4tbW9kZWwtZG9jIC0tPg0KKwkgKiBEZXJpdmVkIGZyb20gYWxsIGVsZW1lbnRzIHRoYXQgYXJlIHRoZSBjbGllbnQgb2YgYSCrc2F0aXNmebsgcmVsYXRpb25zaGlwIGZvciB3aGljaCB0aGlzIHJlcXVpcmVtZW50IGlzIGEgc3VwcGxpZXIuDQorCSAqIDwhLS0gZW5kLW1vZGVsLWRvYyAtLT4NCisJICogQHJldHVybiB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+U2F0aXNmaWVkIEJ5PC9lbT4nIHJlZmVyZW5jZSBsaXN0Lg0KKwkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5yZXF1aXJlbWVudHMuUmVxdWlyZW1lbnRzUGFja2FnZSNnZXRSZXF1aXJlbWVudF9TYXRpc2ZpZWRCeSgpDQorCSAqIEBtb2RlbCB0cmFuc2llbnQ9InRydWUiIHZvbGF0aWxlPSJ0cnVlIiBkZXJpdmVkPSJ0cnVlIiBvcmRlcmVkPSJmYWxzZSINCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJRUxpc3Q8TmFtZWRFbGVtZW50PiBnZXRTYXRpc2ZpZWRCeSgpOw0KKw0KKwkvKioNCisJICogUmV0cmlldmVzIHRoZSBmaXJzdCB7QGxpbmsgb3JnLmVjbGlwc2UudW1sMi51bWwuTmFtZWRFbGVtZW50fSB3aXRoIHRoZSBzcGVjaWZpZWQgJzxlbT48Yj5OYW1lPC9iPjwvZW0+JyBmcm9tIHRoZSAnPGVtPjxiPlNhdGlzZmllZCBCeTwvYj48L2VtPicgcmVmZXJlbmNlIGxpc3QuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAcGFyYW0gbmFtZSBUaGUgJzxlbT48Yj5OYW1lPC9iPjwvZW0+JyBvZiB0aGUge0BsaW5rIG9yZy5lY2xpcHNlLnVtbDIudW1sLk5hbWVkRWxlbWVudH0gdG8gcmV0cmlldmUsIG9yIDxjb2RlPm51bGw8L2NvZGU+Lg0KKwkgKiBAcmV0dXJuIFRoZSBmaXJzdCB7QGxpbmsgb3JnLmVjbGlwc2UudW1sMi51bWwuTmFtZWRFbGVtZW50fSB3aXRoIHRoZSBzcGVjaWZpZWQgJzxlbT48Yj5OYW1lPC9iPjwvZW0+Jywgb3IgPGNvZGU+bnVsbDwvY29kZT4uDQorCSAqIEBzZWUgI2dldFNhdGlzZmllZEJ5KCkNCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJTmFtZWRFbGVtZW50IGdldFNhdGlzZmllZEJ5KFN0cmluZyBuYW1lKTsNCisNCisJLyoqDQorCSAqIFJldHJpZXZlcyB0aGUgZmlyc3Qge0BsaW5rIG9yZy5lY2xpcHNlLnVtbDIudW1sLk5hbWVkRWxlbWVudH0gd2l0aCB0aGUgc3BlY2lmaWVkICc8ZW0+PGI+TmFtZTwvYj48L2VtPicgZnJvbSB0aGUgJzxlbT48Yj5TYXRpc2ZpZWQgQnk8L2I+PC9lbT4nIHJlZmVyZW5jZSBsaXN0Lg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHBhcmFtIG5hbWUgVGhlICc8ZW0+PGI+TmFtZTwvYj48L2VtPicgb2YgdGhlIHtAbGluayBvcmcuZWNsaXBzZS51bWwyLnVtbC5OYW1lZEVsZW1lbnR9IHRvIHJldHJpZXZlLCBvciA8Y29kZT5udWxsPC9jb2RlPi4NCisJICogQHBhcmFtIGlnbm9yZUNhc2UgV2hldGhlciB0byBpZ25vcmUgY2FzZSBpbiB7QGxpbmsgamF2YS5sYW5nLlN0cmluZ30gY29tcGFyaXNvbnMuDQorCSAqIEBwYXJhbSBlQ2xhc3MgVGhlIEVjb3JlIGNsYXNzIG9mIHRoZSB7QGxpbmsgb3JnLmVjbGlwc2UudW1sMi51bWwuTmFtZWRFbGVtZW50fSB0byByZXRyaWV2ZSwgb3IgPGNvZGU+bnVsbDwvY29kZT4uDQorCSAqIEByZXR1cm4gVGhlIGZpcnN0IHtAbGluayBvcmcuZWNsaXBzZS51bWwyLnVtbC5OYW1lZEVsZW1lbnR9IHdpdGggdGhlIHNwZWNpZmllZCAnPGVtPjxiPk5hbWU8L2I+PC9lbT4nLCBvciA8Y29kZT5udWxsPC9jb2RlPi4NCisJICogQHNlZSAjZ2V0U2F0aXNmaWVkQnkoKQ0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlOYW1lZEVsZW1lbnQgZ2V0U2F0aXNmaWVkQnkoU3RyaW5nIG5hbWUsIGJvb2xlYW4gaWdub3JlQ2FzZSwgRUNsYXNzIGVDbGFzcyk7DQorDQorCS8qKg0KKwkgKiBSZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT48Yj5SZWZpbmVkIEJ5PC9iPjwvZW0+JyByZWZlcmVuY2UgbGlzdC4NCisJICogVGhlIGxpc3QgY29udGVudHMgYXJlIG9mIHR5cGUge0BsaW5rIG9yZy5lY2xpcHNlLnVtbDIudW1sLk5hbWVkRWxlbWVudH0uDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGJlZ2luLW1vZGVsLWRvYyAtLT4NCisJICogRGVyaXZlZCBmcm9tIGFsbCBlbGVtZW50cyB0aGF0IGFyZSB0aGUgY2xpZW50IG9mIGEgq3JlZmluZbsgcmVsYXRpb25zaGlwIGZvciB3aGljaCB0aGlzIHJlcXVpcmVtZW50IGlzIGEgc3VwcGxpZXIuDQorCSAqIDwhLS0gZW5kLW1vZGVsLWRvYyAtLT4NCisJICogQHJldHVybiB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+UmVmaW5lZCBCeTwvZW0+JyByZWZlcmVuY2UgbGlzdC4NCisJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucmVxdWlyZW1lbnRzLlJlcXVpcmVtZW50c1BhY2thZ2UjZ2V0UmVxdWlyZW1lbnRfUmVmaW5lZEJ5KCkNCisJICogQG1vZGVsIHRyYW5zaWVudD0idHJ1ZSIgdm9sYXRpbGU9InRydWUiIGRlcml2ZWQ9InRydWUiIG9yZGVyZWQ9ImZhbHNlIg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlFTGlzdDxOYW1lZEVsZW1lbnQ+IGdldFJlZmluZWRCeSgpOw0KKw0KKwkvKioNCisJICogUmV0cmlldmVzIHRoZSBmaXJzdCB7QGxpbmsgb3JnLmVjbGlwc2UudW1sMi51bWwuTmFtZWRFbGVtZW50fSB3aXRoIHRoZSBzcGVjaWZpZWQgJzxlbT48Yj5OYW1lPC9iPjwvZW0+JyBmcm9tIHRoZSAnPGVtPjxiPlJlZmluZWQgQnk8L2I+PC9lbT4nIHJlZmVyZW5jZSBsaXN0Lg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHBhcmFtIG5hbWUgVGhlICc8ZW0+PGI+TmFtZTwvYj48L2VtPicgb2YgdGhlIHtAbGluayBvcmcuZWNsaXBzZS51bWwyLnVtbC5OYW1lZEVsZW1lbnR9IHRvIHJldHJpZXZlLCBvciA8Y29kZT5udWxsPC9jb2RlPi4NCisJICogQHJldHVybiBUaGUgZmlyc3Qge0BsaW5rIG9yZy5lY2xpcHNlLnVtbDIudW1sLk5hbWVkRWxlbWVudH0gd2l0aCB0aGUgc3BlY2lmaWVkICc8ZW0+PGI+TmFtZTwvYj48L2VtPicsIG9yIDxjb2RlPm51bGw8L2NvZGU+Lg0KKwkgKiBAc2VlICNnZXRSZWZpbmVkQnkoKQ0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlOYW1lZEVsZW1lbnQgZ2V0UmVmaW5lZEJ5KFN0cmluZyBuYW1lKTsNCisNCisJLyoqDQorCSAqIFJldHJpZXZlcyB0aGUgZmlyc3Qge0BsaW5rIG9yZy5lY2xpcHNlLnVtbDIudW1sLk5hbWVkRWxlbWVudH0gd2l0aCB0aGUgc3BlY2lmaWVkICc8ZW0+PGI+TmFtZTwvYj48L2VtPicgZnJvbSB0aGUgJzxlbT48Yj5SZWZpbmVkIEJ5PC9iPjwvZW0+JyByZWZlcmVuY2UgbGlzdC4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBwYXJhbSBuYW1lIFRoZSAnPGVtPjxiPk5hbWU8L2I+PC9lbT4nIG9mIHRoZSB7QGxpbmsgb3JnLmVjbGlwc2UudW1sMi51bWwuTmFtZWRFbGVtZW50fSB0byByZXRyaWV2ZSwgb3IgPGNvZGU+bnVsbDwvY29kZT4uDQorCSAqIEBwYXJhbSBpZ25vcmVDYXNlIFdoZXRoZXIgdG8gaWdub3JlIGNhc2UgaW4ge0BsaW5rIGphdmEubGFuZy5TdHJpbmd9IGNvbXBhcmlzb25zLg0KKwkgKiBAcGFyYW0gZUNsYXNzIFRoZSBFY29yZSBjbGFzcyBvZiB0aGUge0BsaW5rIG9yZy5lY2xpcHNlLnVtbDIudW1sLk5hbWVkRWxlbWVudH0gdG8gcmV0cmlldmUsIG9yIDxjb2RlPm51bGw8L2NvZGU+Lg0KKwkgKiBAcmV0dXJuIFRoZSBmaXJzdCB7QGxpbmsgb3JnLmVjbGlwc2UudW1sMi51bWwuTmFtZWRFbGVtZW50fSB3aXRoIHRoZSBzcGVjaWZpZWQgJzxlbT48Yj5OYW1lPC9iPjwvZW0+Jywgb3IgPGNvZGU+bnVsbDwvY29kZT4uDQorCSAqIEBzZWUgI2dldFJlZmluZWRCeSgpDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCU5hbWVkRWxlbWVudCBnZXRSZWZpbmVkQnkoU3RyaW5nIG5hbWUsIGJvb2xlYW4gaWdub3JlQ2FzZSwgRUNsYXNzIGVDbGFzcyk7DQorDQorCS8qKg0KKwkgKiBSZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT48Yj5UcmFjZWQgVG88L2I+PC9lbT4nIHJlZmVyZW5jZSBsaXN0Lg0KKwkgKiBUaGUgbGlzdCBjb250ZW50cyBhcmUgb2YgdHlwZSB7QGxpbmsgb3JnLmVjbGlwc2UudW1sMi51bWwuTmFtZWRFbGVtZW50fS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gYmVnaW4tbW9kZWwtZG9jIC0tPg0KKwkgKiBEZXJpdmVkIGZyb20gYWxsIGVsZW1lbnRzIHRoYXQgYXJlIHRoZSBjbGllbnQgb2YgYSCrdHJhY2W7IHJlbGF0aW9uc2hpcCBmb3Igd2hpY2ggdGhpcyByZXF1aXJlbWVudCBpcyBhIHN1cHBsaWVyLg0KKwkgKiA8IS0tIGVuZC1tb2RlbC1kb2MgLS0+DQorCSAqIEByZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSAnPGVtPlRyYWNlZCBUbzwvZW0+JyByZWZlcmVuY2UgbGlzdC4NCisJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucmVxdWlyZW1lbnRzLlJlcXVpcmVtZW50c1BhY2thZ2UjZ2V0UmVxdWlyZW1lbnRfVHJhY2VkVG8oKQ0KKwkgKiBAbW9kZWwgdHJhbnNpZW50PSJ0cnVlIiB2b2xhdGlsZT0idHJ1ZSIgZGVyaXZlZD0idHJ1ZSIgb3JkZXJlZD0iZmFsc2UiDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUVMaXN0PE5hbWVkRWxlbWVudD4gZ2V0VHJhY2VkVG8oKTsNCisNCisJLyoqDQorCSAqIFJldHJpZXZlcyB0aGUgZmlyc3Qge0BsaW5rIG9yZy5lY2xpcHNlLnVtbDIudW1sLk5hbWVkRWxlbWVudH0gd2l0aCB0aGUgc3BlY2lmaWVkICc8ZW0+PGI+TmFtZTwvYj48L2VtPicgZnJvbSB0aGUgJzxlbT48Yj5UcmFjZWQgVG88L2I+PC9lbT4nIHJlZmVyZW5jZSBsaXN0Lg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHBhcmFtIG5hbWUgVGhlICc8ZW0+PGI+TmFtZTwvYj48L2VtPicgb2YgdGhlIHtAbGluayBvcmcuZWNsaXBzZS51bWwyLnVtbC5OYW1lZEVsZW1lbnR9IHRvIHJldHJpZXZlLCBvciA8Y29kZT5udWxsPC9jb2RlPi4NCisJICogQHJldHVybiBUaGUgZmlyc3Qge0BsaW5rIG9yZy5lY2xpcHNlLnVtbDIudW1sLk5hbWVkRWxlbWVudH0gd2l0aCB0aGUgc3BlY2lmaWVkICc8ZW0+PGI+TmFtZTwvYj48L2VtPicsIG9yIDxjb2RlPm51bGw8L2NvZGU+Lg0KKwkgKiBAc2VlICNnZXRUcmFjZWRUbygpDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCU5hbWVkRWxlbWVudCBnZXRUcmFjZWRUbyhTdHJpbmcgbmFtZSk7DQorDQorCS8qKg0KKwkgKiBSZXRyaWV2ZXMgdGhlIGZpcnN0IHtAbGluayBvcmcuZWNsaXBzZS51bWwyLnVtbC5OYW1lZEVsZW1lbnR9IHdpdGggdGhlIHNwZWNpZmllZCAnPGVtPjxiPk5hbWU8L2I+PC9lbT4nIGZyb20gdGhlICc8ZW0+PGI+VHJhY2VkIFRvPC9iPjwvZW0+JyByZWZlcmVuY2UgbGlzdC4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBwYXJhbSBuYW1lIFRoZSAnPGVtPjxiPk5hbWU8L2I+PC9lbT4nIG9mIHRoZSB7QGxpbmsgb3JnLmVjbGlwc2UudW1sMi51bWwuTmFtZWRFbGVtZW50fSB0byByZXRyaWV2ZSwgb3IgPGNvZGU+bnVsbDwvY29kZT4uDQorCSAqIEBwYXJhbSBpZ25vcmVDYXNlIFdoZXRoZXIgdG8gaWdub3JlIGNhc2UgaW4ge0BsaW5rIGphdmEubGFuZy5TdHJpbmd9IGNvbXBhcmlzb25zLg0KKwkgKiBAcGFyYW0gZUNsYXNzIFRoZSBFY29yZSBjbGFzcyBvZiB0aGUge0BsaW5rIG9yZy5lY2xpcHNlLnVtbDIudW1sLk5hbWVkRWxlbWVudH0gdG8gcmV0cmlldmUsIG9yIDxjb2RlPm51bGw8L2NvZGU+Lg0KKwkgKiBAcmV0dXJuIFRoZSBmaXJzdCB7QGxpbmsgb3JnLmVjbGlwc2UudW1sMi51bWwuTmFtZWRFbGVtZW50fSB3aXRoIHRoZSBzcGVjaWZpZWQgJzxlbT48Yj5OYW1lPC9iPjwvZW0+Jywgb3IgPGNvZGU+bnVsbDwvY29kZT4uDQorCSAqIEBzZWUgI2dldFRyYWNlZFRvKCkNCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJTmFtZWRFbGVtZW50IGdldFRyYWNlZFRvKFN0cmluZyBuYW1lLCBib29sZWFuIGlnbm9yZUNhc2UsIEVDbGFzcyBlQ2xhc3MpOw0KKw0KKwkvKioNCisJICogUmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+PGI+VmVyaWZpZWQgQnk8L2I+PC9lbT4nIHJlZmVyZW5jZSBsaXN0Lg0KKwkgKiBUaGUgbGlzdCBjb250ZW50cyBhcmUgb2YgdHlwZSB7QGxpbmsgb3JnLmVjbGlwc2UudW1sMi51bWwuTmFtZWRFbGVtZW50fS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gYmVnaW4tbW9kZWwtZG9jIC0tPg0KKwkgKiBEZXJpdmVkIGZyb20gYWxsIGVsZW1lbnRzIHRoYXQgYXJlIHRoZSBjbGllbnQgb2YgYSCrdmVyaWZ5uyByZWxhdGlvbnNoaXAgZm9yIHdoaWNoIHRoaXMgcmVxdWlyZW1lbnQgaXMgYSBzdXBwbGllci4NCisJICogPCEtLSBlbmQtbW9kZWwtZG9jIC0tPg0KKwkgKiBAcmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT5WZXJpZmllZCBCeTwvZW0+JyByZWZlcmVuY2UgbGlzdC4NCisJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucmVxdWlyZW1lbnRzLlJlcXVpcmVtZW50c1BhY2thZ2UjZ2V0UmVxdWlyZW1lbnRfVmVyaWZpZWRCeSgpDQorCSAqIEBtb2RlbCB0cmFuc2llbnQ9InRydWUiIHZvbGF0aWxlPSJ0cnVlIiBkZXJpdmVkPSJ0cnVlIiBvcmRlcmVkPSJmYWxzZSINCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJRUxpc3Q8TmFtZWRFbGVtZW50PiBnZXRWZXJpZmllZEJ5KCk7DQorDQorCS8qKg0KKwkgKiBSZXRyaWV2ZXMgdGhlIGZpcnN0IHtAbGluayBvcmcuZWNsaXBzZS51bWwyLnVtbC5OYW1lZEVsZW1lbnR9IHdpdGggdGhlIHNwZWNpZmllZCAnPGVtPjxiPk5hbWU8L2I+PC9lbT4nIGZyb20gdGhlICc8ZW0+PGI+VmVyaWZpZWQgQnk8L2I+PC9lbT4nIHJlZmVyZW5jZSBsaXN0Lg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHBhcmFtIG5hbWUgVGhlICc8ZW0+PGI+TmFtZTwvYj48L2VtPicgb2YgdGhlIHtAbGluayBvcmcuZWNsaXBzZS51bWwyLnVtbC5OYW1lZEVsZW1lbnR9IHRvIHJldHJpZXZlLCBvciA8Y29kZT5udWxsPC9jb2RlPi4NCisJICogQHJldHVybiBUaGUgZmlyc3Qge0BsaW5rIG9yZy5lY2xpcHNlLnVtbDIudW1sLk5hbWVkRWxlbWVudH0gd2l0aCB0aGUgc3BlY2lmaWVkICc8ZW0+PGI+TmFtZTwvYj48L2VtPicsIG9yIDxjb2RlPm51bGw8L2NvZGU+Lg0KKwkgKiBAc2VlICNnZXRWZXJpZmllZEJ5KCkNCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJTmFtZWRFbGVtZW50IGdldFZlcmlmaWVkQnkoU3RyaW5nIG5hbWUpOw0KKw0KKwkvKioNCisJICogUmV0cmlldmVzIHRoZSBmaXJzdCB7QGxpbmsgb3JnLmVjbGlwc2UudW1sMi51bWwuTmFtZWRFbGVtZW50fSB3aXRoIHRoZSBzcGVjaWZpZWQgJzxlbT48Yj5OYW1lPC9iPjwvZW0+JyBmcm9tIHRoZSAnPGVtPjxiPlZlcmlmaWVkIEJ5PC9iPjwvZW0+JyByZWZlcmVuY2UgbGlzdC4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBwYXJhbSBuYW1lIFRoZSAnPGVtPjxiPk5hbWU8L2I+PC9lbT4nIG9mIHRoZSB7QGxpbmsgb3JnLmVjbGlwc2UudW1sMi51bWwuTmFtZWRFbGVtZW50fSB0byByZXRyaWV2ZSwgb3IgPGNvZGU+bnVsbDwvY29kZT4uDQorCSAqIEBwYXJhbSBpZ25vcmVDYXNlIFdoZXRoZXIgdG8gaWdub3JlIGNhc2UgaW4ge0BsaW5rIGphdmEubGFuZy5TdHJpbmd9IGNvbXBhcmlzb25zLg0KKwkgKiBAcGFyYW0gZUNsYXNzIFRoZSBFY29yZSBjbGFzcyBvZiB0aGUge0BsaW5rIG9yZy5lY2xpcHNlLnVtbDIudW1sLk5hbWVkRWxlbWVudH0gdG8gcmV0cmlldmUsIG9yIDxjb2RlPm51bGw8L2NvZGU+Lg0KKwkgKiBAcmV0dXJuIFRoZSBmaXJzdCB7QGxpbmsgb3JnLmVjbGlwc2UudW1sMi51bWwuTmFtZWRFbGVtZW50fSB3aXRoIHRoZSBzcGVjaWZpZWQgJzxlbT48Yj5OYW1lPC9iPjwvZW0+Jywgb3IgPGNvZGU+bnVsbDwvY29kZT4uDQorCSAqIEBzZWUgI2dldFZlcmlmaWVkQnkoKQ0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlOYW1lZEVsZW1lbnQgZ2V0VmVyaWZpZWRCeShTdHJpbmcgbmFtZSwgYm9vbGVhbiBpZ25vcmVDYXNlLCBFQ2xhc3MgZUNsYXNzKTsNCisNCisJLyoqDQorCSAqIFJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSAnPGVtPjxiPk1hc3RlcjwvYj48L2VtPicgcmVmZXJlbmNlLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogPCEtLSBiZWdpbi1tb2RlbC1kb2MgLS0+DQorCSAqIFRoaXMgaXMgYSBkZXJpdmVkIHByb3BlcnR5IHRoYXQgbGlzdHMgdGhlIG1hc3RlciByZXF1aXJlbWVudCBmb3IgdGhpcyBzbGF2ZSByZXF1aXJlbWVudC4gVGhlIG1hc3RlciBhdHRyaWJ1dGUgaXMgZGVyaXZlZCBmcm9tIHRoZSBzdXBwbGllciBvZiB0aGUgQ29weSBkZXBlbmRlbmN5IHRoYXQgaGFzIHRoaXMgcmVxdWlyZW1lbnQgYXMgdGhlIHNsYXZlLg0KKwkgKiA8IS0tIGVuZC1tb2RlbC1kb2MgLS0+DQorCSAqIEByZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSAnPGVtPk1hc3RlcjwvZW0+JyByZWZlcmVuY2UuDQorCSAqIEBzZWUgI3NldE1hc3RlcihSZXF1aXJlbWVudCkNCisJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucmVxdWlyZW1lbnRzLlJlcXVpcmVtZW50c1BhY2thZ2UjZ2V0UmVxdWlyZW1lbnRfTWFzdGVyKCkNCisJICogQG1vZGVsIHRyYW5zaWVudD0idHJ1ZSIgdm9sYXRpbGU9InRydWUiIGRlcml2ZWQ9InRydWUiIG9yZGVyZWQ9ImZhbHNlIg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlSZXF1aXJlbWVudCBnZXRNYXN0ZXIoKTsNCisNCisJLyoqDQorCSAqIFNldHMgdGhlIHZhbHVlIG9mIHRoZSAne0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5yZXF1aXJlbWVudHMuUmVxdWlyZW1lbnQjZ2V0TWFzdGVyIDxlbT5NYXN0ZXI8L2VtPn0nIHJlZmVyZW5jZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBwYXJhbSB2YWx1ZSB0aGUgbmV3IHZhbHVlIG9mIHRoZSAnPGVtPk1hc3RlcjwvZW0+JyByZWZlcmVuY2UuDQorCSAqIEBzZWUgI2dldE1hc3RlcigpDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXZvaWQgc2V0TWFzdGVyKFJlcXVpcmVtZW50IHZhbHVlKTsNCisNCit9IC8vIFJlcXVpcmVtZW50DQpkaWZmIC0tZ2l0IGEvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvcmVxdWlyZW1lbnRzL1JlcXVpcmVtZW50c0ZhY3RvcnkuamF2YSBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L3JlcXVpcmVtZW50cy9SZXF1aXJlbWVudHNGYWN0b3J5LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWU2NDAzNQotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L3JlcXVpcmVtZW50cy9SZXF1aXJlbWVudHNGYWN0b3J5LmphdmEKQEAgLTAsMCArMSwxMTEgQEAKKy8qKg0KKyAqIENvcHlyaWdodCAoYykgMjAxNSBDRUEgTElTVC4NCisgKiANCisgKiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KKyAqICBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCisgKiAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCisgKiAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgKi8NCitwYWNrYWdlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5yZXF1aXJlbWVudHM7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FRmFjdG9yeTsNCisNCisvKioNCisgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKyAqIFRoZSA8Yj5GYWN0b3J5PC9iPiBmb3IgdGhlIG1vZGVsLg0KKyAqIEl0IHByb3ZpZGVzIGEgY3JlYXRlIG1ldGhvZCBmb3IgZWFjaCBub24tYWJzdHJhY3QgY2xhc3Mgb2YgdGhlIG1vZGVsLg0KKyAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKyAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnJlcXVpcmVtZW50cy5SZXF1aXJlbWVudHNQYWNrYWdlDQorICogQGdlbmVyYXRlZA0KKyAqLw0KK3B1YmxpYyBpbnRlcmZhY2UgUmVxdWlyZW1lbnRzRmFjdG9yeSBleHRlbmRzIEVGYWN0b3J5IHsNCisJLyoqDQorCSAqIFRoZSBzaW5nbGV0b24gaW5zdGFuY2Ugb2YgdGhlIGZhY3RvcnkuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlSZXF1aXJlbWVudHNGYWN0b3J5IGVJTlNUQU5DRSA9IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5yZXF1aXJlbWVudHMuaW50ZXJuYWwuaW1wbC5SZXF1aXJlbWVudHNGYWN0b3J5SW1wbC5pbml0KCk7DQorDQorCS8qKg0KKwkgKiBSZXR1cm5zIGEgbmV3IG9iamVjdCBvZiBjbGFzcyAnPGVtPkRlcml2ZSBSZXF0PC9lbT4nLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHJldHVybiBhIG5ldyBvYmplY3Qgb2YgY2xhc3MgJzxlbT5EZXJpdmUgUmVxdDwvZW0+Jy4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJRGVyaXZlUmVxdCBjcmVhdGVEZXJpdmVSZXF0KCk7DQorDQorCS8qKg0KKwkgKiBSZXR1cm5zIGEgbmV3IG9iamVjdCBvZiBjbGFzcyAnPGVtPlRyYWNlPC9lbT4nLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHJldHVybiBhIG5ldyBvYmplY3Qgb2YgY2xhc3MgJzxlbT5UcmFjZTwvZW0+Jy4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJVHJhY2UgY3JlYXRlVHJhY2UoKTsNCisNCisJLyoqDQorCSAqIFJldHVybnMgYSBuZXcgb2JqZWN0IG9mIGNsYXNzICc8ZW0+UmVxdWlyZW1lbnQ8L2VtPicuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAcmV0dXJuIGEgbmV3IG9iamVjdCBvZiBjbGFzcyAnPGVtPlJlcXVpcmVtZW50PC9lbT4nLg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlSZXF1aXJlbWVudCBjcmVhdGVSZXF1aXJlbWVudCgpOw0KKw0KKwkvKioNCisJICogUmV0dXJucyBhIG5ldyBvYmplY3Qgb2YgY2xhc3MgJzxlbT5Db3B5PC9lbT4nLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHJldHVybiBhIG5ldyBvYmplY3Qgb2YgY2xhc3MgJzxlbT5Db3B5PC9lbT4nLg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlDb3B5IGNyZWF0ZUNvcHkoKTsNCisNCisJLyoqDQorCSAqIFJldHVybnMgYSBuZXcgb2JqZWN0IG9mIGNsYXNzICc8ZW0+U2F0aXNmeTwvZW0+Jy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEByZXR1cm4gYSBuZXcgb2JqZWN0IG9mIGNsYXNzICc8ZW0+U2F0aXNmeTwvZW0+Jy4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJU2F0aXNmeSBjcmVhdGVTYXRpc2Z5KCk7DQorDQorCS8qKg0KKwkgKiBSZXR1cm5zIGEgbmV3IG9iamVjdCBvZiBjbGFzcyAnPGVtPlRlc3QgQ2FzZTwvZW0+Jy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEByZXR1cm4gYSBuZXcgb2JqZWN0IG9mIGNsYXNzICc8ZW0+VGVzdCBDYXNlPC9lbT4nLg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlUZXN0Q2FzZSBjcmVhdGVUZXN0Q2FzZSgpOw0KKw0KKwkvKioNCisJICogUmV0dXJucyBhIG5ldyBvYmplY3Qgb2YgY2xhc3MgJzxlbT5WZXJpZnk8L2VtPicuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAcmV0dXJuIGEgbmV3IG9iamVjdCBvZiBjbGFzcyAnPGVtPlZlcmlmeTwvZW0+Jy4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJVmVyaWZ5IGNyZWF0ZVZlcmlmeSgpOw0KKw0KKwkvKioNCisJICogUmV0dXJucyBhIG5ldyBvYmplY3Qgb2YgY2xhc3MgJzxlbT5SZWZpbmU8L2VtPicuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAcmV0dXJuIGEgbmV3IG9iamVjdCBvZiBjbGFzcyAnPGVtPlJlZmluZTwvZW0+Jy4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJUmVmaW5lIGNyZWF0ZVJlZmluZSgpOw0KKw0KKwkvKioNCisJICogUmV0dXJucyB0aGUgcGFja2FnZSBzdXBwb3J0ZWQgYnkgdGhpcyBmYWN0b3J5Lg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHJldHVybiB0aGUgcGFja2FnZSBzdXBwb3J0ZWQgYnkgdGhpcyBmYWN0b3J5Lg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlSZXF1aXJlbWVudHNQYWNrYWdlIGdldFJlcXVpcmVtZW50c1BhY2thZ2UoKTsNCisNCit9IC8vUmVxdWlyZW1lbnRzRmFjdG9yeQ0KZGlmZiAtLWdpdCBhL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L3JlcXVpcmVtZW50cy9SZXF1aXJlbWVudHNQYWNrYWdlLmphdmEgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9yZXF1aXJlbWVudHMvUmVxdWlyZW1lbnRzUGFja2FnZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgwODM4Y2MKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9yZXF1aXJlbWVudHMvUmVxdWlyZW1lbnRzUGFja2FnZS5qYXZhCkBAIC0wLDAgKzEsMTI4MyBAQAorLyoqDQorICogQ29weXJpZ2h0IChjKSAyMDE1IENFQSBMSVNULg0KKyAqIA0KKyAqICBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQorICogIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KKyAqICB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KKyAqICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqLw0KK3BhY2thZ2Ugb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnJlcXVpcmVtZW50czsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVBdHRyaWJ1dGU7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FQ2xhc3M7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FT3BlcmF0aW9uOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRVBhY2thZ2U7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FUmVmZXJlbmNlOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYmxvY2tzLkJsb2Nrc1BhY2thZ2U7DQorDQorLyoqDQorICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisgKiBUaGUgPGI+UGFja2FnZTwvYj4gZm9yIHRoZSBtb2RlbC4NCisgKiBJdCBjb250YWlucyBhY2Nlc3NvcnMgZm9yIHRoZSBtZXRhIG9iamVjdHMgdG8gcmVwcmVzZW50DQorICogPHVsPg0KKyAqICAgPGxpPmVhY2ggY2xhc3MsPC9saT4NCisgKiAgIDxsaT5lYWNoIGZlYXR1cmUgb2YgZWFjaCBjbGFzcyw8L2xpPg0KKyAqICAgPGxpPmVhY2ggb3BlcmF0aW9uIG9mIGVhY2ggY2xhc3MsPC9saT4NCisgKiAgIDxsaT5lYWNoIGVudW0sPC9saT4NCisgKiAgIDxsaT5hbmQgZWFjaCBkYXRhIHR5cGU8L2xpPg0KKyAqIDwvdWw+DQorICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucmVxdWlyZW1lbnRzLlJlcXVpcmVtZW50c0ZhY3RvcnkNCisgKiBAbW9kZWwga2luZD0icGFja2FnZSINCisgKiAgICAgICAgYW5ub3RhdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy91bWwyLzIuMC4wL1VNTCBvcmlnaW5hbE5hbWU9J1JlcXVpcmVtZW50cyciDQorICogQGdlbmVyYXRlZA0KKyAqLw0KK3B1YmxpYyBpbnRlcmZhY2UgUmVxdWlyZW1lbnRzUGFja2FnZSBleHRlbmRzIEVQYWNrYWdlIHsNCisJLyoqDQorCSAqIFRoZSBwYWNrYWdlIG5hbWUuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlTdHJpbmcgZU5BTUUgPSAicmVxdWlyZW1lbnRzIjsgLy8kTk9OLU5MUy0xJA0KKw0KKwkvKioNCisJICogVGhlIHBhY2thZ2UgbmFtZXNwYWNlIFVSSS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCVN0cmluZyBlTlNfVVJJID0gImh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvcGFweXJ1cy8xLjQvU3lzTUwvUmVxdWlyZW1lbnRzIjsgLy8kTk9OLU5MUy0xJA0KKw0KKwkvKioNCisJICogVGhlIHBhY2thZ2UgbmFtZXNwYWNlIG5hbWUuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlTdHJpbmcgZU5TX1BSRUZJWCA9ICJSZXF1aXJlbWVudHMiOyAvLyROT04tTkxTLTEkDQorDQorCS8qKg0KKwkgKiBUaGUgc2luZ2xldG9uIGluc3RhbmNlIG9mIHRoZSBwYWNrYWdlLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJUmVxdWlyZW1lbnRzUGFja2FnZSBlSU5TVEFOQ0UgPSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucmVxdWlyZW1lbnRzLmludGVybmFsLmltcGwuUmVxdWlyZW1lbnRzUGFja2FnZUltcGwuaW5pdCgpOw0KKw0KKwkvKioNCisJICogVGhlIG1ldGEgb2JqZWN0IGlkIGZvciB0aGUgJ3tAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucmVxdWlyZW1lbnRzLmludGVybmFsLmltcGwuVHJhY2VJbXBsIDxlbT5UcmFjZTwvZW0+fScgY2xhc3MuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5yZXF1aXJlbWVudHMuaW50ZXJuYWwuaW1wbC5UcmFjZUltcGwNCisJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucmVxdWlyZW1lbnRzLmludGVybmFsLmltcGwuUmVxdWlyZW1lbnRzUGFja2FnZUltcGwjZ2V0VHJhY2UoKQ0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlpbnQgVFJBQ0UgPSAxOw0KKw0KKwkvKioNCisJICogVGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkJhc2UgRGlyZWN0ZWQgUmVsYXRpb25zaGlwPC9iPjwvZW0+JyByZWZlcmVuY2UuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqIEBvcmRlcmVkDQorCSAqLw0KKwlpbnQgVFJBQ0VfX0JBU0VfRElSRUNURURfUkVMQVRJT05TSElQID0gQmxvY2tzUGFja2FnZS5ESVJFQ1RFRF9SRUxBVElPTlNISVBfUFJPUEVSVFlfUEFUSF9fQkFTRV9ESVJFQ1RFRF9SRUxBVElPTlNISVA7DQorDQorCS8qKg0KKwkgKiBUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+U291cmNlIFByb3BlcnR5IFBhdGg8L2I+PC9lbT4nIHJlZmVyZW5jZSBsaXN0Lg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKiBAb3JkZXJlZA0KKwkgKi8NCisJaW50IFRSQUNFX19TT1VSQ0VfUFJPUEVSVFlfUEFUSCA9IEJsb2Nrc1BhY2thZ2UuRElSRUNURURfUkVMQVRJT05TSElQX1BST1BFUlRZX1BBVEhfX1NPVVJDRV9QUk9QRVJUWV9QQVRIOw0KKw0KKwkvKioNCisJICogVGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPlRhcmdldCBQcm9wZXJ0eSBQYXRoPC9iPjwvZW0+JyByZWZlcmVuY2UgbGlzdC4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICogQG9yZGVyZWQNCisJICovDQorCWludCBUUkFDRV9fVEFSR0VUX1BST1BFUlRZX1BBVEggPSBCbG9ja3NQYWNrYWdlLkRJUkVDVEVEX1JFTEFUSU9OU0hJUF9QUk9QRVJUWV9QQVRIX19UQVJHRVRfUFJPUEVSVFlfUEFUSDsNCisNCisJLyoqDQorCSAqIFRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5Tb3VyY2UgQ29udGV4dDwvYj48L2VtPicgcmVmZXJlbmNlLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKiBAb3JkZXJlZA0KKwkgKi8NCisJaW50IFRSQUNFX19TT1VSQ0VfQ09OVEVYVCA9IEJsb2Nrc1BhY2thZ2UuRElSRUNURURfUkVMQVRJT05TSElQX1BST1BFUlRZX1BBVEhfX1NPVVJDRV9DT05URVhUOw0KKw0KKwkvKioNCisJICogVGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPlRhcmdldCBDb250ZXh0PC9iPjwvZW0+JyByZWZlcmVuY2UuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqIEBvcmRlcmVkDQorCSAqLw0KKwlpbnQgVFJBQ0VfX1RBUkdFVF9DT05URVhUID0gQmxvY2tzUGFja2FnZS5ESVJFQ1RFRF9SRUxBVElPTlNISVBfUFJPUEVSVFlfUEFUSF9fVEFSR0VUX0NPTlRFWFQ7DQorDQorCS8qKg0KKwkgKiBUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+QmFzZSBBYnN0cmFjdGlvbjwvYj48L2VtPicgcmVmZXJlbmNlLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKiBAb3JkZXJlZA0KKwkgKi8NCisJaW50IFRSQUNFX19CQVNFX0FCU1RSQUNUSU9OID0gQmxvY2tzUGFja2FnZS5ESVJFQ1RFRF9SRUxBVElPTlNISVBfUFJPUEVSVFlfUEFUSF9GRUFUVVJFX0NPVU5UICsgMDsNCisNCisJLyoqDQorCSAqIFRoZSBudW1iZXIgb2Ygc3RydWN0dXJhbCBmZWF0dXJlcyBvZiB0aGUgJzxlbT5UcmFjZTwvZW0+JyBjbGFzcy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICogQG9yZGVyZWQNCisJICovDQorCWludCBUUkFDRV9GRUFUVVJFX0NPVU5UID0gQmxvY2tzUGFja2FnZS5ESVJFQ1RFRF9SRUxBVElPTlNISVBfUFJPUEVSVFlfUEFUSF9GRUFUVVJFX0NPVU5UICsgMTsNCisNCisJLyoqDQorCSAqIFRoZSBvcGVyYXRpb24gaWQgZm9yIHRoZSAnPGVtPkdldCBUcmFjZWQgRnJvbTwvZW0+JyBvcGVyYXRpb24uDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqIEBvcmRlcmVkDQorCSAqLw0KKwlpbnQgVFJBQ0VfX19HRVRfVFJBQ0VEX0ZST01fX05BTUVERUxFTUVOVCA9IEJsb2Nrc1BhY2thZ2UuRElSRUNURURfUkVMQVRJT05TSElQX1BST1BFUlRZX1BBVEhfT1BFUkFUSU9OX0NPVU5UICsgMDsNCisNCisJLyoqDQorCSAqIFRoZSBudW1iZXIgb2Ygb3BlcmF0aW9ucyBvZiB0aGUgJzxlbT5UcmFjZTwvZW0+JyBjbGFzcy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICogQG9yZGVyZWQNCisJICovDQorCWludCBUUkFDRV9PUEVSQVRJT05fQ09VTlQgPSBCbG9ja3NQYWNrYWdlLkRJUkVDVEVEX1JFTEFUSU9OU0hJUF9QUk9QRVJUWV9QQVRIX09QRVJBVElPTl9DT1VOVCArIDE7DQorDQorCS8qKg0KKwkgKiBUaGUgbWV0YSBvYmplY3QgaWQgZm9yIHRoZSAne0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5yZXF1aXJlbWVudHMuaW50ZXJuYWwuaW1wbC5EZXJpdmVSZXF0SW1wbCA8ZW0+RGVyaXZlIFJlcXQ8L2VtPn0nIGNsYXNzLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucmVxdWlyZW1lbnRzLmludGVybmFsLmltcGwuRGVyaXZlUmVxdEltcGwNCisJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucmVxdWlyZW1lbnRzLmludGVybmFsLmltcGwuUmVxdWlyZW1lbnRzUGFja2FnZUltcGwjZ2V0RGVyaXZlUmVxdCgpDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCWludCBERVJJVkVfUkVRVCA9IDA7DQorDQorCS8qKg0KKwkgKiBUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+QmFzZSBEaXJlY3RlZCBSZWxhdGlvbnNoaXA8L2I+PC9lbT4nIHJlZmVyZW5jZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICogQG9yZGVyZWQNCisJICovDQorCWludCBERVJJVkVfUkVRVF9fQkFTRV9ESVJFQ1RFRF9SRUxBVElPTlNISVAgPSBUUkFDRV9fQkFTRV9ESVJFQ1RFRF9SRUxBVElPTlNISVA7DQorDQorCS8qKg0KKwkgKiBUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+U291cmNlIFByb3BlcnR5IFBhdGg8L2I+PC9lbT4nIHJlZmVyZW5jZSBsaXN0Lg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKiBAb3JkZXJlZA0KKwkgKi8NCisJaW50IERFUklWRV9SRVFUX19TT1VSQ0VfUFJPUEVSVFlfUEFUSCA9IFRSQUNFX19TT1VSQ0VfUFJPUEVSVFlfUEFUSDsNCisNCisJLyoqDQorCSAqIFRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5UYXJnZXQgUHJvcGVydHkgUGF0aDwvYj48L2VtPicgcmVmZXJlbmNlIGxpc3QuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqIEBvcmRlcmVkDQorCSAqLw0KKwlpbnQgREVSSVZFX1JFUVRfX1RBUkdFVF9QUk9QRVJUWV9QQVRIID0gVFJBQ0VfX1RBUkdFVF9QUk9QRVJUWV9QQVRIOw0KKw0KKwkvKioNCisJICogVGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPlNvdXJjZSBDb250ZXh0PC9iPjwvZW0+JyByZWZlcmVuY2UuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqIEBvcmRlcmVkDQorCSAqLw0KKwlpbnQgREVSSVZFX1JFUVRfX1NPVVJDRV9DT05URVhUID0gVFJBQ0VfX1NPVVJDRV9DT05URVhUOw0KKw0KKwkvKioNCisJICogVGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPlRhcmdldCBDb250ZXh0PC9iPjwvZW0+JyByZWZlcmVuY2UuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqIEBvcmRlcmVkDQorCSAqLw0KKwlpbnQgREVSSVZFX1JFUVRfX1RBUkdFVF9DT05URVhUID0gVFJBQ0VfX1RBUkdFVF9DT05URVhUOw0KKw0KKwkvKioNCisJICogVGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkJhc2UgQWJzdHJhY3Rpb248L2I+PC9lbT4nIHJlZmVyZW5jZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICogQG9yZGVyZWQNCisJICovDQorCWludCBERVJJVkVfUkVRVF9fQkFTRV9BQlNUUkFDVElPTiA9IFRSQUNFX19CQVNFX0FCU1RSQUNUSU9OOw0KKw0KKwkvKioNCisJICogVGhlIG51bWJlciBvZiBzdHJ1Y3R1cmFsIGZlYXR1cmVzIG9mIHRoZSAnPGVtPkRlcml2ZSBSZXF0PC9lbT4nIGNsYXNzLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKiBAb3JkZXJlZA0KKwkgKi8NCisJaW50IERFUklWRV9SRVFUX0ZFQVRVUkVfQ09VTlQgPSBUUkFDRV9GRUFUVVJFX0NPVU5UICsgMDsNCisNCisJLyoqDQorCSAqIFRoZSBvcGVyYXRpb24gaWQgZm9yIHRoZSAnPGVtPkdldCBUcmFjZWQgRnJvbTwvZW0+JyBvcGVyYXRpb24uDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqIEBvcmRlcmVkDQorCSAqLw0KKwlpbnQgREVSSVZFX1JFUVRfX19HRVRfVFJBQ0VEX0ZST01fX05BTUVERUxFTUVOVCA9IFRSQUNFX19fR0VUX1RSQUNFRF9GUk9NX19OQU1FREVMRU1FTlQ7DQorDQorCS8qKg0KKwkgKiBUaGUgbnVtYmVyIG9mIG9wZXJhdGlvbnMgb2YgdGhlICc8ZW0+RGVyaXZlIFJlcXQ8L2VtPicgY2xhc3MuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqIEBvcmRlcmVkDQorCSAqLw0KKwlpbnQgREVSSVZFX1JFUVRfT1BFUkFUSU9OX0NPVU5UID0gVFJBQ0VfT1BFUkFUSU9OX0NPVU5UICsgMDsNCisNCisJLyoqDQorCSAqIFRoZSBtZXRhIG9iamVjdCBpZCBmb3IgdGhlICd7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnJlcXVpcmVtZW50cy5pbnRlcm5hbC5pbXBsLlJlcXVpcmVtZW50SW1wbCA8ZW0+UmVxdWlyZW1lbnQ8L2VtPn0nIGNsYXNzLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucmVxdWlyZW1lbnRzLmludGVybmFsLmltcGwuUmVxdWlyZW1lbnRJbXBsDQorCSAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnJlcXVpcmVtZW50cy5pbnRlcm5hbC5pbXBsLlJlcXVpcmVtZW50c1BhY2thZ2VJbXBsI2dldFJlcXVpcmVtZW50KCkNCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJaW50IFJFUVVJUkVNRU5UID0gMjsNCisNCisJLyoqDQorCSAqIFRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5CYXNlIENsYXNzPC9iPjwvZW0+JyByZWZlcmVuY2UuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqIEBvcmRlcmVkDQorCSAqLw0KKwlpbnQgUkVRVUlSRU1FTlRfX0JBU0VfQ0xBU1MgPSAwOw0KKw0KKwkvKioNCisJICogVGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPlRleHQ8L2I+PC9lbT4nIGF0dHJpYnV0ZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICogQG9yZGVyZWQNCisJICovDQorCWludCBSRVFVSVJFTUVOVF9fVEVYVCA9IDE7DQorDQorCS8qKg0KKwkgKiBUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+SWQ8L2I+PC9lbT4nIGF0dHJpYnV0ZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICogQG9yZGVyZWQNCisJICovDQorCWludCBSRVFVSVJFTUVOVF9fSUQgPSAyOw0KKw0KKwkvKioNCisJICogVGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkRlcml2ZWQ8L2I+PC9lbT4nIHJlZmVyZW5jZSBsaXN0Lg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKiBAb3JkZXJlZA0KKwkgKi8NCisJaW50IFJFUVVJUkVNRU5UX19ERVJJVkVEID0gMzsNCisNCisJLyoqDQorCSAqIFRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5EZXJpdmVkIEZyb208L2I+PC9lbT4nIHJlZmVyZW5jZSBsaXN0Lg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKiBAb3JkZXJlZA0KKwkgKi8NCisJaW50IFJFUVVJUkVNRU5UX19ERVJJVkVEX0ZST00gPSA0Ow0KKw0KKwkvKioNCisJICogVGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPlNhdGlzZmllZCBCeTwvYj48L2VtPicgcmVmZXJlbmNlIGxpc3QuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqIEBvcmRlcmVkDQorCSAqLw0KKwlpbnQgUkVRVUlSRU1FTlRfX1NBVElTRklFRF9CWSA9IDU7DQorDQorCS8qKg0KKwkgKiBUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+UmVmaW5lZCBCeTwvYj48L2VtPicgcmVmZXJlbmNlIGxpc3QuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqIEBvcmRlcmVkDQorCSAqLw0KKwlpbnQgUkVRVUlSRU1FTlRfX1JFRklORURfQlkgPSA2Ow0KKw0KKwkvKioNCisJICogVGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPlRyYWNlZCBUbzwvYj48L2VtPicgcmVmZXJlbmNlIGxpc3QuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqIEBvcmRlcmVkDQorCSAqLw0KKwlpbnQgUkVRVUlSRU1FTlRfX1RSQUNFRF9UTyA9IDc7DQorDQorCS8qKg0KKwkgKiBUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+VmVyaWZpZWQgQnk8L2I+PC9lbT4nIHJlZmVyZW5jZSBsaXN0Lg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKiBAb3JkZXJlZA0KKwkgKi8NCisJaW50IFJFUVVJUkVNRU5UX19WRVJJRklFRF9CWSA9IDg7DQorDQorCS8qKg0KKwkgKiBUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+TWFzdGVyPC9iPjwvZW0+JyByZWZlcmVuY2UuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqIEBvcmRlcmVkDQorCSAqLw0KKwlpbnQgUkVRVUlSRU1FTlRfX01BU1RFUiA9IDk7DQorDQorCS8qKg0KKwkgKiBUaGUgbnVtYmVyIG9mIHN0cnVjdHVyYWwgZmVhdHVyZXMgb2YgdGhlICc8ZW0+UmVxdWlyZW1lbnQ8L2VtPicgY2xhc3MuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqIEBvcmRlcmVkDQorCSAqLw0KKwlpbnQgUkVRVUlSRU1FTlRfRkVBVFVSRV9DT1VOVCA9IDEwOw0KKw0KKwkvKioNCisJICogVGhlIG51bWJlciBvZiBvcGVyYXRpb25zIG9mIHRoZSAnPGVtPlJlcXVpcmVtZW50PC9lbT4nIGNsYXNzLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKiBAb3JkZXJlZA0KKwkgKi8NCisJaW50IFJFUVVJUkVNRU5UX09QRVJBVElPTl9DT1VOVCA9IDA7DQorDQorCS8qKg0KKwkgKiBUaGUgbWV0YSBvYmplY3QgaWQgZm9yIHRoZSAne0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5yZXF1aXJlbWVudHMuaW50ZXJuYWwuaW1wbC5Db3B5SW1wbCA8ZW0+Q29weTwvZW0+fScgY2xhc3MuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5yZXF1aXJlbWVudHMuaW50ZXJuYWwuaW1wbC5Db3B5SW1wbA0KKwkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5yZXF1aXJlbWVudHMuaW50ZXJuYWwuaW1wbC5SZXF1aXJlbWVudHNQYWNrYWdlSW1wbCNnZXRDb3B5KCkNCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJaW50IENPUFkgPSAzOw0KKw0KKwkvKioNCisJICogVGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkJhc2UgRGlyZWN0ZWQgUmVsYXRpb25zaGlwPC9iPjwvZW0+JyByZWZlcmVuY2UuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqIEBvcmRlcmVkDQorCSAqLw0KKwlpbnQgQ09QWV9fQkFTRV9ESVJFQ1RFRF9SRUxBVElPTlNISVAgPSBUUkFDRV9fQkFTRV9ESVJFQ1RFRF9SRUxBVElPTlNISVA7DQorDQorCS8qKg0KKwkgKiBUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+U291cmNlIFByb3BlcnR5IFBhdGg8L2I+PC9lbT4nIHJlZmVyZW5jZSBsaXN0Lg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKiBAb3JkZXJlZA0KKwkgKi8NCisJaW50IENPUFlfX1NPVVJDRV9QUk9QRVJUWV9QQVRIID0gVFJBQ0VfX1NPVVJDRV9QUk9QRVJUWV9QQVRIOw0KKw0KKwkvKioNCisJICogVGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPlRhcmdldCBQcm9wZXJ0eSBQYXRoPC9iPjwvZW0+JyByZWZlcmVuY2UgbGlzdC4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICogQG9yZGVyZWQNCisJICovDQorCWludCBDT1BZX19UQVJHRVRfUFJPUEVSVFlfUEFUSCA9IFRSQUNFX19UQVJHRVRfUFJPUEVSVFlfUEFUSDsNCisNCisJLyoqDQorCSAqIFRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5Tb3VyY2UgQ29udGV4dDwvYj48L2VtPicgcmVmZXJlbmNlLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKiBAb3JkZXJlZA0KKwkgKi8NCisJaW50IENPUFlfX1NPVVJDRV9DT05URVhUID0gVFJBQ0VfX1NPVVJDRV9DT05URVhUOw0KKw0KKwkvKioNCisJICogVGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPlRhcmdldCBDb250ZXh0PC9iPjwvZW0+JyByZWZlcmVuY2UuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqIEBvcmRlcmVkDQorCSAqLw0KKwlpbnQgQ09QWV9fVEFSR0VUX0NPTlRFWFQgPSBUUkFDRV9fVEFSR0VUX0NPTlRFWFQ7DQorDQorCS8qKg0KKwkgKiBUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+QmFzZSBBYnN0cmFjdGlvbjwvYj48L2VtPicgcmVmZXJlbmNlLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKiBAb3JkZXJlZA0KKwkgKi8NCisJaW50IENPUFlfX0JBU0VfQUJTVFJBQ1RJT04gPSBUUkFDRV9fQkFTRV9BQlNUUkFDVElPTjsNCisNCisJLyoqDQorCSAqIFRoZSBudW1iZXIgb2Ygc3RydWN0dXJhbCBmZWF0dXJlcyBvZiB0aGUgJzxlbT5Db3B5PC9lbT4nIGNsYXNzLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKiBAb3JkZXJlZA0KKwkgKi8NCisJaW50IENPUFlfRkVBVFVSRV9DT1VOVCA9IFRSQUNFX0ZFQVRVUkVfQ09VTlQgKyAwOw0KKw0KKwkvKioNCisJICogVGhlIG9wZXJhdGlvbiBpZCBmb3IgdGhlICc8ZW0+R2V0IFRyYWNlZCBGcm9tPC9lbT4nIG9wZXJhdGlvbi4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICogQG9yZGVyZWQNCisJICovDQorCWludCBDT1BZX19fR0VUX1RSQUNFRF9GUk9NX19OQU1FREVMRU1FTlQgPSBUUkFDRV9fX0dFVF9UUkFDRURfRlJPTV9fTkFNRURFTEVNRU5UOw0KKw0KKwkvKioNCisJICogVGhlIG51bWJlciBvZiBvcGVyYXRpb25zIG9mIHRoZSAnPGVtPkNvcHk8L2VtPicgY2xhc3MuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqIEBvcmRlcmVkDQorCSAqLw0KKwlpbnQgQ09QWV9PUEVSQVRJT05fQ09VTlQgPSBUUkFDRV9PUEVSQVRJT05fQ09VTlQgKyAwOw0KKw0KKwkvKioNCisJICogVGhlIG1ldGEgb2JqZWN0IGlkIGZvciB0aGUgJ3tAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucmVxdWlyZW1lbnRzLmludGVybmFsLmltcGwuU2F0aXNmeUltcGwgPGVtPlNhdGlzZnk8L2VtPn0nIGNsYXNzLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucmVxdWlyZW1lbnRzLmludGVybmFsLmltcGwuU2F0aXNmeUltcGwNCisJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucmVxdWlyZW1lbnRzLmludGVybmFsLmltcGwuUmVxdWlyZW1lbnRzUGFja2FnZUltcGwjZ2V0U2F0aXNmeSgpDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCWludCBTQVRJU0ZZID0gNDsNCisNCisJLyoqDQorCSAqIFRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5CYXNlIERpcmVjdGVkIFJlbGF0aW9uc2hpcDwvYj48L2VtPicgcmVmZXJlbmNlLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKiBAb3JkZXJlZA0KKwkgKi8NCisJaW50IFNBVElTRllfX0JBU0VfRElSRUNURURfUkVMQVRJT05TSElQID0gVFJBQ0VfX0JBU0VfRElSRUNURURfUkVMQVRJT05TSElQOw0KKw0KKwkvKioNCisJICogVGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPlNvdXJjZSBQcm9wZXJ0eSBQYXRoPC9iPjwvZW0+JyByZWZlcmVuY2UgbGlzdC4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICogQG9yZGVyZWQNCisJICovDQorCWludCBTQVRJU0ZZX19TT1VSQ0VfUFJPUEVSVFlfUEFUSCA9IFRSQUNFX19TT1VSQ0VfUFJPUEVSVFlfUEFUSDsNCisNCisJLyoqDQorCSAqIFRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5UYXJnZXQgUHJvcGVydHkgUGF0aDwvYj48L2VtPicgcmVmZXJlbmNlIGxpc3QuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqIEBvcmRlcmVkDQorCSAqLw0KKwlpbnQgU0FUSVNGWV9fVEFSR0VUX1BST1BFUlRZX1BBVEggPSBUUkFDRV9fVEFSR0VUX1BST1BFUlRZX1BBVEg7DQorDQorCS8qKg0KKwkgKiBUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+U291cmNlIENvbnRleHQ8L2I+PC9lbT4nIHJlZmVyZW5jZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICogQG9yZGVyZWQNCisJICovDQorCWludCBTQVRJU0ZZX19TT1VSQ0VfQ09OVEVYVCA9IFRSQUNFX19TT1VSQ0VfQ09OVEVYVDsNCisNCisJLyoqDQorCSAqIFRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5UYXJnZXQgQ29udGV4dDwvYj48L2VtPicgcmVmZXJlbmNlLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKiBAb3JkZXJlZA0KKwkgKi8NCisJaW50IFNBVElTRllfX1RBUkdFVF9DT05URVhUID0gVFJBQ0VfX1RBUkdFVF9DT05URVhUOw0KKw0KKwkvKioNCisJICogVGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkJhc2UgQWJzdHJhY3Rpb248L2I+PC9lbT4nIHJlZmVyZW5jZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICogQG9yZGVyZWQNCisJICovDQorCWludCBTQVRJU0ZZX19CQVNFX0FCU1RSQUNUSU9OID0gVFJBQ0VfX0JBU0VfQUJTVFJBQ1RJT047DQorDQorCS8qKg0KKwkgKiBUaGUgbnVtYmVyIG9mIHN0cnVjdHVyYWwgZmVhdHVyZXMgb2YgdGhlICc8ZW0+U2F0aXNmeTwvZW0+JyBjbGFzcy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICogQG9yZGVyZWQNCisJICovDQorCWludCBTQVRJU0ZZX0ZFQVRVUkVfQ09VTlQgPSBUUkFDRV9GRUFUVVJFX0NPVU5UICsgMDsNCisNCisJLyoqDQorCSAqIFRoZSBvcGVyYXRpb24gaWQgZm9yIHRoZSAnPGVtPkdldCBUcmFjZWQgRnJvbTwvZW0+JyBvcGVyYXRpb24uDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqIEBvcmRlcmVkDQorCSAqLw0KKwlpbnQgU0FUSVNGWV9fX0dFVF9UUkFDRURfRlJPTV9fTkFNRURFTEVNRU5UID0gVFJBQ0VfX19HRVRfVFJBQ0VEX0ZST01fX05BTUVERUxFTUVOVDsNCisNCisJLyoqDQorCSAqIFRoZSBvcGVyYXRpb24gaWQgZm9yIHRoZSAnPGVtPkdldCBTYXRpc2ZpZXM8L2VtPicgb3BlcmF0aW9uLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKiBAb3JkZXJlZA0KKwkgKi8NCisJaW50IFNBVElTRllfX19HRVRfU0FUSVNGSUVTX19OQU1FREVMRU1FTlQgPSBUUkFDRV9PUEVSQVRJT05fQ09VTlQgKyAwOw0KKw0KKwkvKioNCisJICogVGhlIG51bWJlciBvZiBvcGVyYXRpb25zIG9mIHRoZSAnPGVtPlNhdGlzZnk8L2VtPicgY2xhc3MuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqIEBvcmRlcmVkDQorCSAqLw0KKwlpbnQgU0FUSVNGWV9PUEVSQVRJT05fQ09VTlQgPSBUUkFDRV9PUEVSQVRJT05fQ09VTlQgKyAxOw0KKw0KKwkvKioNCisJICogVGhlIG1ldGEgb2JqZWN0IGlkIGZvciB0aGUgJ3tAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucmVxdWlyZW1lbnRzLmludGVybmFsLmltcGwuVGVzdENhc2VJbXBsIDxlbT5UZXN0IENhc2U8L2VtPn0nIGNsYXNzLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucmVxdWlyZW1lbnRzLmludGVybmFsLmltcGwuVGVzdENhc2VJbXBsDQorCSAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnJlcXVpcmVtZW50cy5pbnRlcm5hbC5pbXBsLlJlcXVpcmVtZW50c1BhY2thZ2VJbXBsI2dldFRlc3RDYXNlKCkNCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJaW50IFRFU1RfQ0FTRSA9IDU7DQorDQorCS8qKg0KKwkgKiBUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+QmFzZSBPcGVyYXRpb248L2I+PC9lbT4nIHJlZmVyZW5jZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICogQG9yZGVyZWQNCisJICovDQorCWludCBURVNUX0NBU0VfX0JBU0VfT1BFUkFUSU9OID0gMDsNCisNCisJLyoqDQorCSAqIFRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5CYXNlIEJlaGF2aW9yPC9iPjwvZW0+JyByZWZlcmVuY2UuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqIEBvcmRlcmVkDQorCSAqLw0KKwlpbnQgVEVTVF9DQVNFX19CQVNFX0JFSEFWSU9SID0gMTsNCisNCisJLyoqDQorCSAqIFRoZSBudW1iZXIgb2Ygc3RydWN0dXJhbCBmZWF0dXJlcyBvZiB0aGUgJzxlbT5UZXN0IENhc2U8L2VtPicgY2xhc3MuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqIEBvcmRlcmVkDQorCSAqLw0KKwlpbnQgVEVTVF9DQVNFX0ZFQVRVUkVfQ09VTlQgPSAyOw0KKw0KKwkvKioNCisJICogVGhlIG51bWJlciBvZiBvcGVyYXRpb25zIG9mIHRoZSAnPGVtPlRlc3QgQ2FzZTwvZW0+JyBjbGFzcy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICogQG9yZGVyZWQNCisJICovDQorCWludCBURVNUX0NBU0VfT1BFUkFUSU9OX0NPVU5UID0gMDsNCisNCisJLyoqDQorCSAqIFRoZSBtZXRhIG9iamVjdCBpZCBmb3IgdGhlICd7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnJlcXVpcmVtZW50cy5pbnRlcm5hbC5pbXBsLlZlcmlmeUltcGwgPGVtPlZlcmlmeTwvZW0+fScgY2xhc3MuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5yZXF1aXJlbWVudHMuaW50ZXJuYWwuaW1wbC5WZXJpZnlJbXBsDQorCSAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnJlcXVpcmVtZW50cy5pbnRlcm5hbC5pbXBsLlJlcXVpcmVtZW50c1BhY2thZ2VJbXBsI2dldFZlcmlmeSgpDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCWludCBWRVJJRlkgPSA2Ow0KKw0KKwkvKioNCisJICogVGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkJhc2UgRGlyZWN0ZWQgUmVsYXRpb25zaGlwPC9iPjwvZW0+JyByZWZlcmVuY2UuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqIEBvcmRlcmVkDQorCSAqLw0KKwlpbnQgVkVSSUZZX19CQVNFX0RJUkVDVEVEX1JFTEFUSU9OU0hJUCA9IFRSQUNFX19CQVNFX0RJUkVDVEVEX1JFTEFUSU9OU0hJUDsNCisNCisJLyoqDQorCSAqIFRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5Tb3VyY2UgUHJvcGVydHkgUGF0aDwvYj48L2VtPicgcmVmZXJlbmNlIGxpc3QuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqIEBvcmRlcmVkDQorCSAqLw0KKwlpbnQgVkVSSUZZX19TT1VSQ0VfUFJPUEVSVFlfUEFUSCA9IFRSQUNFX19TT1VSQ0VfUFJPUEVSVFlfUEFUSDsNCisNCisJLyoqDQorCSAqIFRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5UYXJnZXQgUHJvcGVydHkgUGF0aDwvYj48L2VtPicgcmVmZXJlbmNlIGxpc3QuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqIEBvcmRlcmVkDQorCSAqLw0KKwlpbnQgVkVSSUZZX19UQVJHRVRfUFJPUEVSVFlfUEFUSCA9IFRSQUNFX19UQVJHRVRfUFJPUEVSVFlfUEFUSDsNCisNCisJLyoqDQorCSAqIFRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5Tb3VyY2UgQ29udGV4dDwvYj48L2VtPicgcmVmZXJlbmNlLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKiBAb3JkZXJlZA0KKwkgKi8NCisJaW50IFZFUklGWV9fU09VUkNFX0NPTlRFWFQgPSBUUkFDRV9fU09VUkNFX0NPTlRFWFQ7DQorDQorCS8qKg0KKwkgKiBUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+VGFyZ2V0IENvbnRleHQ8L2I+PC9lbT4nIHJlZmVyZW5jZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICogQG9yZGVyZWQNCisJICovDQorCWludCBWRVJJRllfX1RBUkdFVF9DT05URVhUID0gVFJBQ0VfX1RBUkdFVF9DT05URVhUOw0KKw0KKwkvKioNCisJICogVGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkJhc2UgQWJzdHJhY3Rpb248L2I+PC9lbT4nIHJlZmVyZW5jZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICogQG9yZGVyZWQNCisJICovDQorCWludCBWRVJJRllfX0JBU0VfQUJTVFJBQ1RJT04gPSBUUkFDRV9fQkFTRV9BQlNUUkFDVElPTjsNCisNCisJLyoqDQorCSAqIFRoZSBudW1iZXIgb2Ygc3RydWN0dXJhbCBmZWF0dXJlcyBvZiB0aGUgJzxlbT5WZXJpZnk8L2VtPicgY2xhc3MuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqIEBvcmRlcmVkDQorCSAqLw0KKwlpbnQgVkVSSUZZX0ZFQVRVUkVfQ09VTlQgPSBUUkFDRV9GRUFUVVJFX0NPVU5UICsgMDsNCisNCisJLyoqDQorCSAqIFRoZSBvcGVyYXRpb24gaWQgZm9yIHRoZSAnPGVtPkdldCBUcmFjZWQgRnJvbTwvZW0+JyBvcGVyYXRpb24uDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqIEBvcmRlcmVkDQorCSAqLw0KKwlpbnQgVkVSSUZZX19fR0VUX1RSQUNFRF9GUk9NX19OQU1FREVMRU1FTlQgPSBUUkFDRV9fX0dFVF9UUkFDRURfRlJPTV9fTkFNRURFTEVNRU5UOw0KKw0KKwkvKioNCisJICogVGhlIG9wZXJhdGlvbiBpZCBmb3IgdGhlICc8ZW0+R2V0IFZlcmlmaWVzPC9lbT4nIG9wZXJhdGlvbi4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICogQG9yZGVyZWQNCisJICovDQorCWludCBWRVJJRllfX19HRVRfVkVSSUZJRVNfX05BTUVERUxFTUVOVCA9IFRSQUNFX09QRVJBVElPTl9DT1VOVCArIDA7DQorDQorCS8qKg0KKwkgKiBUaGUgbnVtYmVyIG9mIG9wZXJhdGlvbnMgb2YgdGhlICc8ZW0+VmVyaWZ5PC9lbT4nIGNsYXNzLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKiBAb3JkZXJlZA0KKwkgKi8NCisJaW50IFZFUklGWV9PUEVSQVRJT05fQ09VTlQgPSBUUkFDRV9PUEVSQVRJT05fQ09VTlQgKyAxOw0KKw0KKwkvKioNCisJICogVGhlIG1ldGEgb2JqZWN0IGlkIGZvciB0aGUgJ3tAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucmVxdWlyZW1lbnRzLmludGVybmFsLmltcGwuUmVmaW5lSW1wbCA8ZW0+UmVmaW5lPC9lbT59JyBjbGFzcy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnJlcXVpcmVtZW50cy5pbnRlcm5hbC5pbXBsLlJlZmluZUltcGwNCisJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucmVxdWlyZW1lbnRzLmludGVybmFsLmltcGwuUmVxdWlyZW1lbnRzUGFja2FnZUltcGwjZ2V0UmVmaW5lKCkNCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJaW50IFJFRklORSA9IDc7DQorDQorCS8qKg0KKwkgKiBUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+QmFzZSBEaXJlY3RlZCBSZWxhdGlvbnNoaXA8L2I+PC9lbT4nIHJlZmVyZW5jZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICogQG9yZGVyZWQNCisJICovDQorCWludCBSRUZJTkVfX0JBU0VfRElSRUNURURfUkVMQVRJT05TSElQID0gQmxvY2tzUGFja2FnZS5ESVJFQ1RFRF9SRUxBVElPTlNISVBfUFJPUEVSVFlfUEFUSF9fQkFTRV9ESVJFQ1RFRF9SRUxBVElPTlNISVA7DQorDQorCS8qKg0KKwkgKiBUaGUgZmVhdHVyZSBpZCBmb3IgdGhlICc8ZW0+PGI+U291cmNlIFByb3BlcnR5IFBhdGg8L2I+PC9lbT4nIHJlZmVyZW5jZSBsaXN0Lg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKiBAb3JkZXJlZA0KKwkgKi8NCisJaW50IFJFRklORV9fU09VUkNFX1BST1BFUlRZX1BBVEggPSBCbG9ja3NQYWNrYWdlLkRJUkVDVEVEX1JFTEFUSU9OU0hJUF9QUk9QRVJUWV9QQVRIX19TT1VSQ0VfUFJPUEVSVFlfUEFUSDsNCisNCisJLyoqDQorCSAqIFRoZSBmZWF0dXJlIGlkIGZvciB0aGUgJzxlbT48Yj5UYXJnZXQgUHJvcGVydHkgUGF0aDwvYj48L2VtPicgcmVmZXJlbmNlIGxpc3QuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqIEBvcmRlcmVkDQorCSAqLw0KKwlpbnQgUkVGSU5FX19UQVJHRVRfUFJPUEVSVFlfUEFUSCA9IEJsb2Nrc1BhY2thZ2UuRElSRUNURURfUkVMQVRJT05TSElQX1BST1BFUlRZX1BBVEhfX1RBUkdFVF9QUk9QRVJUWV9QQVRIOw0KKw0KKwkvKioNCisJICogVGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPlNvdXJjZSBDb250ZXh0PC9iPjwvZW0+JyByZWZlcmVuY2UuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqIEBvcmRlcmVkDQorCSAqLw0KKwlpbnQgUkVGSU5FX19TT1VSQ0VfQ09OVEVYVCA9IEJsb2Nrc1BhY2thZ2UuRElSRUNURURfUkVMQVRJT05TSElQX1BST1BFUlRZX1BBVEhfX1NPVVJDRV9DT05URVhUOw0KKw0KKwkvKioNCisJICogVGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPlRhcmdldCBDb250ZXh0PC9iPjwvZW0+JyByZWZlcmVuY2UuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqIEBvcmRlcmVkDQorCSAqLw0KKwlpbnQgUkVGSU5FX19UQVJHRVRfQ09OVEVYVCA9IEJsb2Nrc1BhY2thZ2UuRElSRUNURURfUkVMQVRJT05TSElQX1BST1BFUlRZX1BBVEhfX1RBUkdFVF9DT05URVhUOw0KKw0KKwkvKioNCisJICogVGhlIGZlYXR1cmUgaWQgZm9yIHRoZSAnPGVtPjxiPkJhc2UgQWJzdHJhY3Rpb248L2I+PC9lbT4nIHJlZmVyZW5jZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICogQG9yZGVyZWQNCisJICovDQorCWludCBSRUZJTkVfX0JBU0VfQUJTVFJBQ1RJT04gPSBCbG9ja3NQYWNrYWdlLkRJUkVDVEVEX1JFTEFUSU9OU0hJUF9QUk9QRVJUWV9QQVRIX0ZFQVRVUkVfQ09VTlQgKyAwOw0KKw0KKwkvKioNCisJICogVGhlIG51bWJlciBvZiBzdHJ1Y3R1cmFsIGZlYXR1cmVzIG9mIHRoZSAnPGVtPlJlZmluZTwvZW0+JyBjbGFzcy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICogQG9yZGVyZWQNCisJICovDQorCWludCBSRUZJTkVfRkVBVFVSRV9DT1VOVCA9IEJsb2Nrc1BhY2thZ2UuRElSRUNURURfUkVMQVRJT05TSElQX1BST1BFUlRZX1BBVEhfRkVBVFVSRV9DT1VOVCArIDE7DQorDQorCS8qKg0KKwkgKiBUaGUgb3BlcmF0aW9uIGlkIGZvciB0aGUgJzxlbT5HZXQgUmVmaW5lczwvZW0+JyBvcGVyYXRpb24uDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqIEBvcmRlcmVkDQorCSAqLw0KKwlpbnQgUkVGSU5FX19fR0VUX1JFRklORVNfX05BTUVERUxFTUVOVCA9IEJsb2Nrc1BhY2thZ2UuRElSRUNURURfUkVMQVRJT05TSElQX1BST1BFUlRZX1BBVEhfT1BFUkFUSU9OX0NPVU5UICsgMDsNCisNCisJLyoqDQorCSAqIFRoZSBudW1iZXIgb2Ygb3BlcmF0aW9ucyBvZiB0aGUgJzxlbT5SZWZpbmU8L2VtPicgY2xhc3MuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqIEBvcmRlcmVkDQorCSAqLw0KKwlpbnQgUkVGSU5FX09QRVJBVElPTl9DT1VOVCA9IEJsb2Nrc1BhY2thZ2UuRElSRUNURURfUkVMQVRJT05TSElQX1BST1BFUlRZX1BBVEhfT1BFUkFUSU9OX0NPVU5UICsgMTsNCisNCisNCisJLyoqDQorCSAqIFJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciBjbGFzcyAne0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5yZXF1aXJlbWVudHMuRGVyaXZlUmVxdCA8ZW0+RGVyaXZlIFJlcXQ8L2VtPn0nLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHJldHVybiB0aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICc8ZW0+RGVyaXZlIFJlcXQ8L2VtPicuDQorCSAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnJlcXVpcmVtZW50cy5EZXJpdmVSZXF0DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUVDbGFzcyBnZXREZXJpdmVSZXF0KCk7DQorDQorCS8qKg0KKwkgKiBSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJ3tAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucmVxdWlyZW1lbnRzLlRyYWNlIDxlbT5UcmFjZTwvZW0+fScuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAcmV0dXJuIHRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJzxlbT5UcmFjZTwvZW0+Jy4NCisJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucmVxdWlyZW1lbnRzLlRyYWNlDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUVDbGFzcyBnZXRUcmFjZSgpOw0KKw0KKwkvKioNCisJICogUmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSAne0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5yZXF1aXJlbWVudHMuVHJhY2UjZ2V0VHJhY2VkRnJvbShvcmcuZWNsaXBzZS51bWwyLnVtbC5OYW1lZEVsZW1lbnQpIDxlbT5HZXQgVHJhY2VkIEZyb208L2VtPn0nIG9wZXJhdGlvbi4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEByZXR1cm4gdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgJzxlbT5HZXQgVHJhY2VkIEZyb208L2VtPicgb3BlcmF0aW9uLg0KKwkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5yZXF1aXJlbWVudHMuVHJhY2UjZ2V0VHJhY2VkRnJvbShvcmcuZWNsaXBzZS51bWwyLnVtbC5OYW1lZEVsZW1lbnQpDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUVPcGVyYXRpb24gZ2V0VHJhY2VfX0dldFRyYWNlZEZyb21fX05hbWVkRWxlbWVudCgpOw0KKw0KKwkvKioNCisJICogUmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICd7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnJlcXVpcmVtZW50cy5SZXF1aXJlbWVudCA8ZW0+UmVxdWlyZW1lbnQ8L2VtPn0nLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHJldHVybiB0aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICc8ZW0+UmVxdWlyZW1lbnQ8L2VtPicuDQorCSAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnJlcXVpcmVtZW50cy5SZXF1aXJlbWVudA0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlFQ2xhc3MgZ2V0UmVxdWlyZW1lbnQoKTsNCisNCisJLyoqDQorCSAqIFJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgcmVmZXJlbmNlICd7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnJlcXVpcmVtZW50cy5SZXF1aXJlbWVudCNnZXRCYXNlX0NsYXNzIDxlbT5CYXNlIENsYXNzPC9lbT59Jy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEByZXR1cm4gdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgcmVmZXJlbmNlICc8ZW0+QmFzZSBDbGFzczwvZW0+Jy4NCisJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucmVxdWlyZW1lbnRzLlJlcXVpcmVtZW50I2dldEJhc2VfQ2xhc3MoKQ0KKwkgKiBAc2VlICNnZXRSZXF1aXJlbWVudCgpDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUVSZWZlcmVuY2UgZ2V0UmVxdWlyZW1lbnRfQmFzZV9DbGFzcygpOw0KKw0KKwkvKioNCisJICogUmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSBhdHRyaWJ1dGUgJ3tAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucmVxdWlyZW1lbnRzLlJlcXVpcmVtZW50I2dldFRleHQgPGVtPlRleHQ8L2VtPn0nLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHJldHVybiB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSBhdHRyaWJ1dGUgJzxlbT5UZXh0PC9lbT4nLg0KKwkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5yZXF1aXJlbWVudHMuUmVxdWlyZW1lbnQjZ2V0VGV4dCgpDQorCSAqIEBzZWUgI2dldFJlcXVpcmVtZW50KCkNCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJRUF0dHJpYnV0ZSBnZXRSZXF1aXJlbWVudF9UZXh0KCk7DQorDQorCS8qKg0KKwkgKiBSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIGF0dHJpYnV0ZSAne0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5yZXF1aXJlbWVudHMuUmVxdWlyZW1lbnQjZ2V0SWQgPGVtPklkPC9lbT59Jy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEByZXR1cm4gdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgYXR0cmlidXRlICc8ZW0+SWQ8L2VtPicuDQorCSAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnJlcXVpcmVtZW50cy5SZXF1aXJlbWVudCNnZXRJZCgpDQorCSAqIEBzZWUgI2dldFJlcXVpcmVtZW50KCkNCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJRUF0dHJpYnV0ZSBnZXRSZXF1aXJlbWVudF9JZCgpOw0KKw0KKwkvKioNCisJICogUmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSByZWZlcmVuY2UgbGlzdCAne0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5yZXF1aXJlbWVudHMuUmVxdWlyZW1lbnQjZ2V0RGVyaXZlZCA8ZW0+RGVyaXZlZDwvZW0+fScuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAcmV0dXJuIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIHJlZmVyZW5jZSBsaXN0ICc8ZW0+RGVyaXZlZDwvZW0+Jy4NCisJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucmVxdWlyZW1lbnRzLlJlcXVpcmVtZW50I2dldERlcml2ZWQoKQ0KKwkgKiBAc2VlICNnZXRSZXF1aXJlbWVudCgpDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUVSZWZlcmVuY2UgZ2V0UmVxdWlyZW1lbnRfRGVyaXZlZCgpOw0KKw0KKwkvKioNCisJICogUmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSByZWZlcmVuY2UgbGlzdCAne0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5yZXF1aXJlbWVudHMuUmVxdWlyZW1lbnQjZ2V0RGVyaXZlZEZyb20gPGVtPkRlcml2ZWQgRnJvbTwvZW0+fScuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAcmV0dXJuIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIHJlZmVyZW5jZSBsaXN0ICc8ZW0+RGVyaXZlZCBGcm9tPC9lbT4nLg0KKwkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5yZXF1aXJlbWVudHMuUmVxdWlyZW1lbnQjZ2V0RGVyaXZlZEZyb20oKQ0KKwkgKiBAc2VlICNnZXRSZXF1aXJlbWVudCgpDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUVSZWZlcmVuY2UgZ2V0UmVxdWlyZW1lbnRfRGVyaXZlZEZyb20oKTsNCisNCisJLyoqDQorCSAqIFJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgcmVmZXJlbmNlIGxpc3QgJ3tAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucmVxdWlyZW1lbnRzLlJlcXVpcmVtZW50I2dldFNhdGlzZmllZEJ5IDxlbT5TYXRpc2ZpZWQgQnk8L2VtPn0nLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHJldHVybiB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSByZWZlcmVuY2UgbGlzdCAnPGVtPlNhdGlzZmllZCBCeTwvZW0+Jy4NCisJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucmVxdWlyZW1lbnRzLlJlcXVpcmVtZW50I2dldFNhdGlzZmllZEJ5KCkNCisJICogQHNlZSAjZ2V0UmVxdWlyZW1lbnQoKQ0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlFUmVmZXJlbmNlIGdldFJlcXVpcmVtZW50X1NhdGlzZmllZEJ5KCk7DQorDQorCS8qKg0KKwkgKiBSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIHJlZmVyZW5jZSBsaXN0ICd7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnJlcXVpcmVtZW50cy5SZXF1aXJlbWVudCNnZXRSZWZpbmVkQnkgPGVtPlJlZmluZWQgQnk8L2VtPn0nLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHJldHVybiB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSByZWZlcmVuY2UgbGlzdCAnPGVtPlJlZmluZWQgQnk8L2VtPicuDQorCSAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnJlcXVpcmVtZW50cy5SZXF1aXJlbWVudCNnZXRSZWZpbmVkQnkoKQ0KKwkgKiBAc2VlICNnZXRSZXF1aXJlbWVudCgpDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUVSZWZlcmVuY2UgZ2V0UmVxdWlyZW1lbnRfUmVmaW5lZEJ5KCk7DQorDQorCS8qKg0KKwkgKiBSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIHJlZmVyZW5jZSBsaXN0ICd7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnJlcXVpcmVtZW50cy5SZXF1aXJlbWVudCNnZXRUcmFjZWRUbyA8ZW0+VHJhY2VkIFRvPC9lbT59Jy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEByZXR1cm4gdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgcmVmZXJlbmNlIGxpc3QgJzxlbT5UcmFjZWQgVG88L2VtPicuDQorCSAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnJlcXVpcmVtZW50cy5SZXF1aXJlbWVudCNnZXRUcmFjZWRUbygpDQorCSAqIEBzZWUgI2dldFJlcXVpcmVtZW50KCkNCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJRVJlZmVyZW5jZSBnZXRSZXF1aXJlbWVudF9UcmFjZWRUbygpOw0KKw0KKwkvKioNCisJICogUmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSByZWZlcmVuY2UgbGlzdCAne0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5yZXF1aXJlbWVudHMuUmVxdWlyZW1lbnQjZ2V0VmVyaWZpZWRCeSA8ZW0+VmVyaWZpZWQgQnk8L2VtPn0nLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHJldHVybiB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSByZWZlcmVuY2UgbGlzdCAnPGVtPlZlcmlmaWVkIEJ5PC9lbT4nLg0KKwkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5yZXF1aXJlbWVudHMuUmVxdWlyZW1lbnQjZ2V0VmVyaWZpZWRCeSgpDQorCSAqIEBzZWUgI2dldFJlcXVpcmVtZW50KCkNCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJRVJlZmVyZW5jZSBnZXRSZXF1aXJlbWVudF9WZXJpZmllZEJ5KCk7DQorDQorCS8qKg0KKwkgKiBSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIHJlZmVyZW5jZSAne0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5yZXF1aXJlbWVudHMuUmVxdWlyZW1lbnQjZ2V0TWFzdGVyIDxlbT5NYXN0ZXI8L2VtPn0nLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHJldHVybiB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSByZWZlcmVuY2UgJzxlbT5NYXN0ZXI8L2VtPicuDQorCSAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnJlcXVpcmVtZW50cy5SZXF1aXJlbWVudCNnZXRNYXN0ZXIoKQ0KKwkgKiBAc2VlICNnZXRSZXF1aXJlbWVudCgpDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUVSZWZlcmVuY2UgZ2V0UmVxdWlyZW1lbnRfTWFzdGVyKCk7DQorDQorCS8qKg0KKwkgKiBSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJ3tAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucmVxdWlyZW1lbnRzLkNvcHkgPGVtPkNvcHk8L2VtPn0nLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHJldHVybiB0aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICc8ZW0+Q29weTwvZW0+Jy4NCisJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucmVxdWlyZW1lbnRzLkNvcHkNCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJRUNsYXNzIGdldENvcHkoKTsNCisNCisJLyoqDQorCSAqIFJldHVybnMgdGhlIG1ldGEgb2JqZWN0IGZvciBjbGFzcyAne0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5yZXF1aXJlbWVudHMuU2F0aXNmeSA8ZW0+U2F0aXNmeTwvZW0+fScuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAcmV0dXJuIHRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJzxlbT5TYXRpc2Z5PC9lbT4nLg0KKwkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5yZXF1aXJlbWVudHMuU2F0aXNmeQ0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlFQ2xhc3MgZ2V0U2F0aXNmeSgpOw0KKw0KKwkvKioNCisJICogUmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSAne0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5yZXF1aXJlbWVudHMuU2F0aXNmeSNnZXRTYXRpc2ZpZXMob3JnLmVjbGlwc2UudW1sMi51bWwuTmFtZWRFbGVtZW50KSA8ZW0+R2V0IFNhdGlzZmllczwvZW0+fScgb3BlcmF0aW9uLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHJldHVybiB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSAnPGVtPkdldCBTYXRpc2ZpZXM8L2VtPicgb3BlcmF0aW9uLg0KKwkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5yZXF1aXJlbWVudHMuU2F0aXNmeSNnZXRTYXRpc2ZpZXMob3JnLmVjbGlwc2UudW1sMi51bWwuTmFtZWRFbGVtZW50KQ0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlFT3BlcmF0aW9uIGdldFNhdGlzZnlfX0dldFNhdGlzZmllc19fTmFtZWRFbGVtZW50KCk7DQorDQorCS8qKg0KKwkgKiBSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJ3tAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucmVxdWlyZW1lbnRzLlRlc3RDYXNlIDxlbT5UZXN0IENhc2U8L2VtPn0nLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHJldHVybiB0aGUgbWV0YSBvYmplY3QgZm9yIGNsYXNzICc8ZW0+VGVzdCBDYXNlPC9lbT4nLg0KKwkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5yZXF1aXJlbWVudHMuVGVzdENhc2UNCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJRUNsYXNzIGdldFRlc3RDYXNlKCk7DQorDQorCS8qKg0KKwkgKiBSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlIHJlZmVyZW5jZSAne0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5yZXF1aXJlbWVudHMuVGVzdENhc2UjZ2V0QmFzZV9PcGVyYXRpb24gPGVtPkJhc2UgT3BlcmF0aW9uPC9lbT59Jy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEByZXR1cm4gdGhlIG1ldGEgb2JqZWN0IGZvciB0aGUgcmVmZXJlbmNlICc8ZW0+QmFzZSBPcGVyYXRpb248L2VtPicuDQorCSAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnJlcXVpcmVtZW50cy5UZXN0Q2FzZSNnZXRCYXNlX09wZXJhdGlvbigpDQorCSAqIEBzZWUgI2dldFRlc3RDYXNlKCkNCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJRVJlZmVyZW5jZSBnZXRUZXN0Q2FzZV9CYXNlX09wZXJhdGlvbigpOw0KKw0KKwkvKioNCisJICogUmV0dXJucyB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSByZWZlcmVuY2UgJ3tAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucmVxdWlyZW1lbnRzLlRlc3RDYXNlI2dldEJhc2VfQmVoYXZpb3IgPGVtPkJhc2UgQmVoYXZpb3I8L2VtPn0nLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHJldHVybiB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSByZWZlcmVuY2UgJzxlbT5CYXNlIEJlaGF2aW9yPC9lbT4nLg0KKwkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5yZXF1aXJlbWVudHMuVGVzdENhc2UjZ2V0QmFzZV9CZWhhdmlvcigpDQorCSAqIEBzZWUgI2dldFRlc3RDYXNlKCkNCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJRVJlZmVyZW5jZSBnZXRUZXN0Q2FzZV9CYXNlX0JlaGF2aW9yKCk7DQorDQorCS8qKg0KKwkgKiBSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJ3tAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucmVxdWlyZW1lbnRzLlZlcmlmeSA8ZW0+VmVyaWZ5PC9lbT59Jy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEByZXR1cm4gdGhlIG1ldGEgb2JqZWN0IGZvciBjbGFzcyAnPGVtPlZlcmlmeTwvZW0+Jy4NCisJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucmVxdWlyZW1lbnRzLlZlcmlmeQ0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlFQ2xhc3MgZ2V0VmVyaWZ5KCk7DQorDQorCS8qKg0KKwkgKiBSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlICd7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnJlcXVpcmVtZW50cy5WZXJpZnkjZ2V0VmVyaWZpZXMob3JnLmVjbGlwc2UudW1sMi51bWwuTmFtZWRFbGVtZW50KSA8ZW0+R2V0IFZlcmlmaWVzPC9lbT59JyBvcGVyYXRpb24uDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAcmV0dXJuIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlICc8ZW0+R2V0IFZlcmlmaWVzPC9lbT4nIG9wZXJhdGlvbi4NCisJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucmVxdWlyZW1lbnRzLlZlcmlmeSNnZXRWZXJpZmllcyhvcmcuZWNsaXBzZS51bWwyLnVtbC5OYW1lZEVsZW1lbnQpDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUVPcGVyYXRpb24gZ2V0VmVyaWZ5X19HZXRWZXJpZmllc19fTmFtZWRFbGVtZW50KCk7DQorDQorCS8qKg0KKwkgKiBSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgY2xhc3MgJ3tAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucmVxdWlyZW1lbnRzLlJlZmluZSA8ZW0+UmVmaW5lPC9lbT59Jy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEByZXR1cm4gdGhlIG1ldGEgb2JqZWN0IGZvciBjbGFzcyAnPGVtPlJlZmluZTwvZW0+Jy4NCisJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucmVxdWlyZW1lbnRzLlJlZmluZQ0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlFQ2xhc3MgZ2V0UmVmaW5lKCk7DQorDQorCS8qKg0KKwkgKiBSZXR1cm5zIHRoZSBtZXRhIG9iamVjdCBmb3IgdGhlICd7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnJlcXVpcmVtZW50cy5SZWZpbmUjZ2V0UmVmaW5lcyhvcmcuZWNsaXBzZS51bWwyLnVtbC5OYW1lZEVsZW1lbnQpIDxlbT5HZXQgUmVmaW5lczwvZW0+fScgb3BlcmF0aW9uLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHJldHVybiB0aGUgbWV0YSBvYmplY3QgZm9yIHRoZSAnPGVtPkdldCBSZWZpbmVzPC9lbT4nIG9wZXJhdGlvbi4NCisJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucmVxdWlyZW1lbnRzLlJlZmluZSNnZXRSZWZpbmVzKG9yZy5lY2xpcHNlLnVtbDIudW1sLk5hbWVkRWxlbWVudCkNCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJRU9wZXJhdGlvbiBnZXRSZWZpbmVfX0dldFJlZmluZXNfX05hbWVkRWxlbWVudCgpOw0KKw0KKwkvKioNCisJICogUmV0dXJucyB0aGUgZmFjdG9yeSB0aGF0IGNyZWF0ZXMgdGhlIGluc3RhbmNlcyBvZiB0aGUgbW9kZWwuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAcmV0dXJuIHRoZSBmYWN0b3J5IHRoYXQgY3JlYXRlcyB0aGUgaW5zdGFuY2VzIG9mIHRoZSBtb2RlbC4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJUmVxdWlyZW1lbnRzRmFjdG9yeSBnZXRSZXF1aXJlbWVudHNGYWN0b3J5KCk7DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiBEZWZpbmVzIGxpdGVyYWxzIGZvciB0aGUgbWV0YSBvYmplY3RzIHRoYXQgcmVwcmVzZW50DQorCSAqIDx1bD4NCisJICogICA8bGk+ZWFjaCBjbGFzcyw8L2xpPg0KKwkgKiAgIDxsaT5lYWNoIGZlYXR1cmUgb2YgZWFjaCBjbGFzcyw8L2xpPg0KKwkgKiAgIDxsaT5lYWNoIG9wZXJhdGlvbiBvZiBlYWNoIGNsYXNzLDwvbGk+DQorCSAqICAgPGxpPmVhY2ggZW51bSw8L2xpPg0KKwkgKiAgIDxsaT5hbmQgZWFjaCBkYXRhIHR5cGU8L2xpPg0KKwkgKiA8L3VsPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJaW50ZXJmYWNlIExpdGVyYWxzIHsNCisJCS8qKg0KKwkJICogVGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAne0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5yZXF1aXJlbWVudHMuaW50ZXJuYWwuaW1wbC5EZXJpdmVSZXF0SW1wbCA8ZW0+RGVyaXZlIFJlcXQ8L2VtPn0nIGNsYXNzLg0KKwkJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucmVxdWlyZW1lbnRzLmludGVybmFsLmltcGwuRGVyaXZlUmVxdEltcGwNCisJCSAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnJlcXVpcmVtZW50cy5pbnRlcm5hbC5pbXBsLlJlcXVpcmVtZW50c1BhY2thZ2VJbXBsI2dldERlcml2ZVJlcXQoKQ0KKwkJICogQGdlbmVyYXRlZA0KKwkJICovDQorCQlFQ2xhc3MgREVSSVZFX1JFUVQgPSBlSU5TVEFOQ0UuZ2V0RGVyaXZlUmVxdCgpOw0KKw0KKwkJLyoqDQorCQkgKiBUaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICd7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnJlcXVpcmVtZW50cy5pbnRlcm5hbC5pbXBsLlRyYWNlSW1wbCA8ZW0+VHJhY2U8L2VtPn0nIGNsYXNzLg0KKwkJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucmVxdWlyZW1lbnRzLmludGVybmFsLmltcGwuVHJhY2VJbXBsDQorCQkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5yZXF1aXJlbWVudHMuaW50ZXJuYWwuaW1wbC5SZXF1aXJlbWVudHNQYWNrYWdlSW1wbCNnZXRUcmFjZSgpDQorCQkgKiBAZ2VuZXJhdGVkDQorCQkgKi8NCisJCUVDbGFzcyBUUkFDRSA9IGVJTlNUQU5DRS5nZXRUcmFjZSgpOw0KKw0KKwkJLyoqDQorCQkgKiBUaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8ZW0+PGI+R2V0IFRyYWNlZCBGcm9tPC9iPjwvZW0+JyBvcGVyYXRpb24uDQorCQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCQkgKiBAZ2VuZXJhdGVkDQorCQkgKi8NCisJCUVPcGVyYXRpb24gVFJBQ0VfX19HRVRfVFJBQ0VEX0ZST01fX05BTUVERUxFTUVOVCA9IGVJTlNUQU5DRS5nZXRUcmFjZV9fR2V0VHJhY2VkRnJvbV9fTmFtZWRFbGVtZW50KCk7DQorDQorCQkvKioNCisJCSAqIFRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJ3tAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucmVxdWlyZW1lbnRzLmludGVybmFsLmltcGwuUmVxdWlyZW1lbnRJbXBsIDxlbT5SZXF1aXJlbWVudDwvZW0+fScgY2xhc3MuDQorCQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCQkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5yZXF1aXJlbWVudHMuaW50ZXJuYWwuaW1wbC5SZXF1aXJlbWVudEltcGwNCisJCSAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnJlcXVpcmVtZW50cy5pbnRlcm5hbC5pbXBsLlJlcXVpcmVtZW50c1BhY2thZ2VJbXBsI2dldFJlcXVpcmVtZW50KCkNCisJCSAqIEBnZW5lcmF0ZWQNCisJCSAqLw0KKwkJRUNsYXNzIFJFUVVJUkVNRU5UID0gZUlOU1RBTkNFLmdldFJlcXVpcmVtZW50KCk7DQorDQorCQkvKioNCisJCSAqIFRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxlbT48Yj5CYXNlIENsYXNzPC9iPjwvZW0+JyByZWZlcmVuY2UgZmVhdHVyZS4NCisJCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJCSAqIEBnZW5lcmF0ZWQNCisJCSAqLw0KKwkJRVJlZmVyZW5jZSBSRVFVSVJFTUVOVF9fQkFTRV9DTEFTUyA9IGVJTlNUQU5DRS5nZXRSZXF1aXJlbWVudF9CYXNlX0NsYXNzKCk7DQorDQorCQkvKioNCisJCSAqIFRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxlbT48Yj5UZXh0PC9iPjwvZW0+JyBhdHRyaWJ1dGUgZmVhdHVyZS4NCisJCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJCSAqIEBnZW5lcmF0ZWQNCisJCSAqLw0KKwkJRUF0dHJpYnV0ZSBSRVFVSVJFTUVOVF9fVEVYVCA9IGVJTlNUQU5DRS5nZXRSZXF1aXJlbWVudF9UZXh0KCk7DQorDQorCQkvKioNCisJCSAqIFRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxlbT48Yj5JZDwvYj48L2VtPicgYXR0cmlidXRlIGZlYXR1cmUuDQorCQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCQkgKiBAZ2VuZXJhdGVkDQorCQkgKi8NCisJCUVBdHRyaWJ1dGUgUkVRVUlSRU1FTlRfX0lEID0gZUlOU1RBTkNFLmdldFJlcXVpcmVtZW50X0lkKCk7DQorDQorCQkvKioNCisJCSAqIFRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxlbT48Yj5EZXJpdmVkPC9iPjwvZW0+JyByZWZlcmVuY2UgbGlzdCBmZWF0dXJlLg0KKwkJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkJICogQGdlbmVyYXRlZA0KKwkJICovDQorCQlFUmVmZXJlbmNlIFJFUVVJUkVNRU5UX19ERVJJVkVEID0gZUlOU1RBTkNFLmdldFJlcXVpcmVtZW50X0Rlcml2ZWQoKTsNCisNCisJCS8qKg0KKwkJICogVGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPGVtPjxiPkRlcml2ZWQgRnJvbTwvYj48L2VtPicgcmVmZXJlbmNlIGxpc3QgZmVhdHVyZS4NCisJCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJCSAqIEBnZW5lcmF0ZWQNCisJCSAqLw0KKwkJRVJlZmVyZW5jZSBSRVFVSVJFTUVOVF9fREVSSVZFRF9GUk9NID0gZUlOU1RBTkNFLmdldFJlcXVpcmVtZW50X0Rlcml2ZWRGcm9tKCk7DQorDQorCQkvKioNCisJCSAqIFRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxlbT48Yj5TYXRpc2ZpZWQgQnk8L2I+PC9lbT4nIHJlZmVyZW5jZSBsaXN0IGZlYXR1cmUuDQorCQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCQkgKiBAZ2VuZXJhdGVkDQorCQkgKi8NCisJCUVSZWZlcmVuY2UgUkVRVUlSRU1FTlRfX1NBVElTRklFRF9CWSA9IGVJTlNUQU5DRS5nZXRSZXF1aXJlbWVudF9TYXRpc2ZpZWRCeSgpOw0KKw0KKwkJLyoqDQorCQkgKiBUaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8ZW0+PGI+UmVmaW5lZCBCeTwvYj48L2VtPicgcmVmZXJlbmNlIGxpc3QgZmVhdHVyZS4NCisJCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJCSAqIEBnZW5lcmF0ZWQNCisJCSAqLw0KKwkJRVJlZmVyZW5jZSBSRVFVSVJFTUVOVF9fUkVGSU5FRF9CWSA9IGVJTlNUQU5DRS5nZXRSZXF1aXJlbWVudF9SZWZpbmVkQnkoKTsNCisNCisJCS8qKg0KKwkJICogVGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPGVtPjxiPlRyYWNlZCBUbzwvYj48L2VtPicgcmVmZXJlbmNlIGxpc3QgZmVhdHVyZS4NCisJCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJCSAqIEBnZW5lcmF0ZWQNCisJCSAqLw0KKwkJRVJlZmVyZW5jZSBSRVFVSVJFTUVOVF9fVFJBQ0VEX1RPID0gZUlOU1RBTkNFLmdldFJlcXVpcmVtZW50X1RyYWNlZFRvKCk7DQorDQorCQkvKioNCisJCSAqIFRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxlbT48Yj5WZXJpZmllZCBCeTwvYj48L2VtPicgcmVmZXJlbmNlIGxpc3QgZmVhdHVyZS4NCisJCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJCSAqIEBnZW5lcmF0ZWQNCisJCSAqLw0KKwkJRVJlZmVyZW5jZSBSRVFVSVJFTUVOVF9fVkVSSUZJRURfQlkgPSBlSU5TVEFOQ0UuZ2V0UmVxdWlyZW1lbnRfVmVyaWZpZWRCeSgpOw0KKw0KKwkJLyoqDQorCQkgKiBUaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8ZW0+PGI+TWFzdGVyPC9iPjwvZW0+JyByZWZlcmVuY2UgZmVhdHVyZS4NCisJCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJCSAqIEBnZW5lcmF0ZWQNCisJCSAqLw0KKwkJRVJlZmVyZW5jZSBSRVFVSVJFTUVOVF9fTUFTVEVSID0gZUlOU1RBTkNFLmdldFJlcXVpcmVtZW50X01hc3RlcigpOw0KKw0KKwkJLyoqDQorCQkgKiBUaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICd7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnJlcXVpcmVtZW50cy5pbnRlcm5hbC5pbXBsLkNvcHlJbXBsIDxlbT5Db3B5PC9lbT59JyBjbGFzcy4NCisJCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJCSAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnJlcXVpcmVtZW50cy5pbnRlcm5hbC5pbXBsLkNvcHlJbXBsDQorCQkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5yZXF1aXJlbWVudHMuaW50ZXJuYWwuaW1wbC5SZXF1aXJlbWVudHNQYWNrYWdlSW1wbCNnZXRDb3B5KCkNCisJCSAqIEBnZW5lcmF0ZWQNCisJCSAqLw0KKwkJRUNsYXNzIENPUFkgPSBlSU5TVEFOQ0UuZ2V0Q29weSgpOw0KKw0KKwkJLyoqDQorCQkgKiBUaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICd7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnJlcXVpcmVtZW50cy5pbnRlcm5hbC5pbXBsLlNhdGlzZnlJbXBsIDxlbT5TYXRpc2Z5PC9lbT59JyBjbGFzcy4NCisJCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJCSAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnJlcXVpcmVtZW50cy5pbnRlcm5hbC5pbXBsLlNhdGlzZnlJbXBsDQorCQkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5yZXF1aXJlbWVudHMuaW50ZXJuYWwuaW1wbC5SZXF1aXJlbWVudHNQYWNrYWdlSW1wbCNnZXRTYXRpc2Z5KCkNCisJCSAqIEBnZW5lcmF0ZWQNCisJCSAqLw0KKwkJRUNsYXNzIFNBVElTRlkgPSBlSU5TVEFOQ0UuZ2V0U2F0aXNmeSgpOw0KKw0KKwkJLyoqDQorCQkgKiBUaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8ZW0+PGI+R2V0IFNhdGlzZmllczwvYj48L2VtPicgb3BlcmF0aW9uLg0KKwkJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkJICogQGdlbmVyYXRlZA0KKwkJICovDQorCQlFT3BlcmF0aW9uIFNBVElTRllfX19HRVRfU0FUSVNGSUVTX19OQU1FREVMRU1FTlQgPSBlSU5TVEFOQ0UuZ2V0U2F0aXNmeV9fR2V0U2F0aXNmaWVzX19OYW1lZEVsZW1lbnQoKTsNCisNCisJCS8qKg0KKwkJICogVGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAne0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5yZXF1aXJlbWVudHMuaW50ZXJuYWwuaW1wbC5UZXN0Q2FzZUltcGwgPGVtPlRlc3QgQ2FzZTwvZW0+fScgY2xhc3MuDQorCQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCQkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5yZXF1aXJlbWVudHMuaW50ZXJuYWwuaW1wbC5UZXN0Q2FzZUltcGwNCisJCSAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnJlcXVpcmVtZW50cy5pbnRlcm5hbC5pbXBsLlJlcXVpcmVtZW50c1BhY2thZ2VJbXBsI2dldFRlc3RDYXNlKCkNCisJCSAqIEBnZW5lcmF0ZWQNCisJCSAqLw0KKwkJRUNsYXNzIFRFU1RfQ0FTRSA9IGVJTlNUQU5DRS5nZXRUZXN0Q2FzZSgpOw0KKw0KKwkJLyoqDQorCQkgKiBUaGUgbWV0YSBvYmplY3QgbGl0ZXJhbCBmb3IgdGhlICc8ZW0+PGI+QmFzZSBPcGVyYXRpb248L2I+PC9lbT4nIHJlZmVyZW5jZSBmZWF0dXJlLg0KKwkJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkJICogQGdlbmVyYXRlZA0KKwkJICovDQorCQlFUmVmZXJlbmNlIFRFU1RfQ0FTRV9fQkFTRV9PUEVSQVRJT04gPSBlSU5TVEFOQ0UuZ2V0VGVzdENhc2VfQmFzZV9PcGVyYXRpb24oKTsNCisNCisJCS8qKg0KKwkJICogVGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPGVtPjxiPkJhc2UgQmVoYXZpb3I8L2I+PC9lbT4nIHJlZmVyZW5jZSBmZWF0dXJlLg0KKwkJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkJICogQGdlbmVyYXRlZA0KKwkJICovDQorCQlFUmVmZXJlbmNlIFRFU1RfQ0FTRV9fQkFTRV9CRUhBVklPUiA9IGVJTlNUQU5DRS5nZXRUZXN0Q2FzZV9CYXNlX0JlaGF2aW9yKCk7DQorDQorCQkvKioNCisJCSAqIFRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJ3tAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucmVxdWlyZW1lbnRzLmludGVybmFsLmltcGwuVmVyaWZ5SW1wbCA8ZW0+VmVyaWZ5PC9lbT59JyBjbGFzcy4NCisJCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJCSAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnJlcXVpcmVtZW50cy5pbnRlcm5hbC5pbXBsLlZlcmlmeUltcGwNCisJCSAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnJlcXVpcmVtZW50cy5pbnRlcm5hbC5pbXBsLlJlcXVpcmVtZW50c1BhY2thZ2VJbXBsI2dldFZlcmlmeSgpDQorCQkgKiBAZ2VuZXJhdGVkDQorCQkgKi8NCisJCUVDbGFzcyBWRVJJRlkgPSBlSU5TVEFOQ0UuZ2V0VmVyaWZ5KCk7DQorDQorCQkvKioNCisJCSAqIFRoZSBtZXRhIG9iamVjdCBsaXRlcmFsIGZvciB0aGUgJzxlbT48Yj5HZXQgVmVyaWZpZXM8L2I+PC9lbT4nIG9wZXJhdGlvbi4NCisJCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCQkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJCSAqIEBnZW5lcmF0ZWQNCisJCSAqLw0KKwkJRU9wZXJhdGlvbiBWRVJJRllfX19HRVRfVkVSSUZJRVNfX05BTUVERUxFTUVOVCA9IGVJTlNUQU5DRS5nZXRWZXJpZnlfX0dldFZlcmlmaWVzX19OYW1lZEVsZW1lbnQoKTsNCisNCisJCS8qKg0KKwkJICogVGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAne0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5yZXF1aXJlbWVudHMuaW50ZXJuYWwuaW1wbC5SZWZpbmVJbXBsIDxlbT5SZWZpbmU8L2VtPn0nIGNsYXNzLg0KKwkJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucmVxdWlyZW1lbnRzLmludGVybmFsLmltcGwuUmVmaW5lSW1wbA0KKwkJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucmVxdWlyZW1lbnRzLmludGVybmFsLmltcGwuUmVxdWlyZW1lbnRzUGFja2FnZUltcGwjZ2V0UmVmaW5lKCkNCisJCSAqIEBnZW5lcmF0ZWQNCisJCSAqLw0KKwkJRUNsYXNzIFJFRklORSA9IGVJTlNUQU5DRS5nZXRSZWZpbmUoKTsNCisNCisJCS8qKg0KKwkJICogVGhlIG1ldGEgb2JqZWN0IGxpdGVyYWwgZm9yIHRoZSAnPGVtPjxiPkdldCBSZWZpbmVzPC9iPjwvZW0+JyBvcGVyYXRpb24uDQorCQkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCQkgKiBAZ2VuZXJhdGVkDQorCQkgKi8NCisJCUVPcGVyYXRpb24gUkVGSU5FX19fR0VUX1JFRklORVNfX05BTUVERUxFTUVOVCA9IGVJTlNUQU5DRS5nZXRSZWZpbmVfX0dldFJlZmluZXNfX05hbWVkRWxlbWVudCgpOw0KKw0KKwl9DQorDQorfSAvL1JlcXVpcmVtZW50c1BhY2thZ2UNCmRpZmYgLS1naXQgYS9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9yZXF1aXJlbWVudHMvU2F0aXNmeS5qYXZhIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvcmVxdWlyZW1lbnRzL1NhdGlzZnkuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mOWEzM2ZjCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvcmVxdWlyZW1lbnRzL1NhdGlzZnkuamF2YQpAQCAtMCwwICsxLDM4IEBACisvKioNCisgKiBDb3B5cmlnaHQgKGMpIDIwMTUgQ0VBIExJU1QuDQorICogDQorICogIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCisgKiAgYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQorICogIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQorICogIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICovDQorcGFja2FnZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucmVxdWlyZW1lbnRzOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY29tbW9uLnV0aWwuRUxpc3Q7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLnVtbDIudW1sLk5hbWVkRWxlbWVudDsNCisNCisvKioNCisgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKyAqIEEgcmVwcmVzZW50YXRpb24gb2YgdGhlIG1vZGVsIG9iamVjdCAnPGVtPjxiPlNhdGlzZnk8L2I+PC9lbT4nLg0KKyAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKyAqDQorICogPCEtLSBiZWdpbi1tb2RlbC1kb2MgLS0+DQorICogQSBTYXRpc2Z5IHJlbGF0aW9uc2hpcCBpcyBhIGRlcGVuZGVuY3kgYmV0d2VlbiBhIHJlcXVpcmVtZW50IGFuZCBhIG1vZGVsIGVsZW1lbnQgdGhhdCBmdWxmaWxscyB0aGUgcmVxdWlyZW1lbnQuIEFzIHdpdGggb3RoZXIgZGVwZW5kZW5jaWVzLCB0aGUgYXJyb3cgZGlyZWN0aW9uIHBvaW50cyBmcm9tIHRoZSBzYXRpc2Z5aW5nIChjbGllbnQpIG1vZGVsIGVsZW1lbnQgdG8gdGhlIChzdXBwbGllcikgcmVxdWlyZW1lbnQgdGhhdCBpcyBzYXRpc2ZpZWQuDQorICogPCEtLSBlbmQtbW9kZWwtZG9jIC0tPg0KKyAqDQorICoNCisgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5yZXF1aXJlbWVudHMuUmVxdWlyZW1lbnRzUGFja2FnZSNnZXRTYXRpc2Z5KCkNCisgKiBAbW9kZWwNCisgKiBAZ2VuZXJhdGVkDQorICovDQorcHVibGljIGludGVyZmFjZSBTYXRpc2Z5IGV4dGVuZHMgVHJhY2Ugew0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBtb2RlbCByZXF1aXJlZD0idHJ1ZSIgb3JkZXJlZD0iZmFsc2UiIHJlZlJlcXVpcmVkPSJ0cnVlIiByZWZPcmRlcmVkPSJmYWxzZSINCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJRUxpc3Q8UmVxdWlyZW1lbnQ+IGdldFNhdGlzZmllcyhOYW1lZEVsZW1lbnQgcmVmKTsNCisNCit9IC8vIFNhdGlzZnkNCmRpZmYgLS1naXQgYS9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9yZXF1aXJlbWVudHMvVGVzdENhc2UuamF2YSBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L3JlcXVpcmVtZW50cy9UZXN0Q2FzZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM2NGMyMmUKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9yZXF1aXJlbWVudHMvVGVzdENhc2UuamF2YQpAQCAtMCwwICsxLDkwIEBACisvKioNCisgKiBDb3B5cmlnaHQgKGMpIDIwMTUgQ0VBIExJU1QuDQorICogDQorICogIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCisgKiAgYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQorICogIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQorICogIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICovDQorcGFja2FnZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucmVxdWlyZW1lbnRzOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRU9iamVjdDsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UudW1sMi51bWwuQmVoYXZpb3I7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnVtbDIudW1sLk9wZXJhdGlvbjsNCisNCisvKioNCisgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKyAqIEEgcmVwcmVzZW50YXRpb24gb2YgdGhlIG1vZGVsIG9iamVjdCAnPGVtPjxiPlRlc3QgQ2FzZTwvYj48L2VtPicuDQorICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorICoNCisgKiA8IS0tIGJlZ2luLW1vZGVsLWRvYyAtLT4NCisgKiBBIHRlc3QgY2FzZSBpcyBhIG1ldGhvZCBmb3IgdmVyaWZ5aW5nIGEgcmVxdWlyZW1lbnQgaXMgc2F0aXNmaWVkLg0KKyAqIDwhLS0gZW5kLW1vZGVsLWRvYyAtLT4NCisgKg0KKyAqIDxwPg0KKyAqIFRoZSBmb2xsb3dpbmcgZmVhdHVyZXMgYXJlIHN1cHBvcnRlZDoNCisgKiA8dWw+DQorICogICA8bGk+e0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5yZXF1aXJlbWVudHMuVGVzdENhc2UjZ2V0QmFzZV9PcGVyYXRpb24gPGVtPkJhc2UgT3BlcmF0aW9uPC9lbT59PC9saT4NCisgKiAgIDxsaT57QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnJlcXVpcmVtZW50cy5UZXN0Q2FzZSNnZXRCYXNlX0JlaGF2aW9yIDxlbT5CYXNlIEJlaGF2aW9yPC9lbT59PC9saT4NCisgKiA8L3VsPg0KKyAqIDwvcD4NCisgKg0KKyAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnJlcXVpcmVtZW50cy5SZXF1aXJlbWVudHNQYWNrYWdlI2dldFRlc3RDYXNlKCkNCisgKiBAbW9kZWwNCisgKiBAZ2VuZXJhdGVkDQorICovDQorcHVibGljIGludGVyZmFjZSBUZXN0Q2FzZSBleHRlbmRzIEVPYmplY3Qgew0KKwkvKioNCisJICogUmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlICc8ZW0+PGI+QmFzZSBPcGVyYXRpb248L2I+PC9lbT4nIHJlZmVyZW5jZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPHA+DQorCSAqIElmIHRoZSBtZWFuaW5nIG9mIHRoZSAnPGVtPkJhc2UgT3BlcmF0aW9uPC9lbT4nIHJlZmVyZW5jZSBpc24ndCBjbGVhciwNCisJICogdGhlcmUgcmVhbGx5IHNob3VsZCBiZSBtb3JlIG9mIGEgZGVzY3JpcHRpb24gaGVyZS4uLg0KKwkgKiA8L3A+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAcmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT5CYXNlIE9wZXJhdGlvbjwvZW0+JyByZWZlcmVuY2UuDQorCSAqIEBzZWUgI3NldEJhc2VfT3BlcmF0aW9uKE9wZXJhdGlvbikNCisJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucmVxdWlyZW1lbnRzLlJlcXVpcmVtZW50c1BhY2thZ2UjZ2V0VGVzdENhc2VfQmFzZV9PcGVyYXRpb24oKQ0KKwkgKiBAbW9kZWwgb3JkZXJlZD0iZmFsc2UiDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCU9wZXJhdGlvbiBnZXRCYXNlX09wZXJhdGlvbigpOw0KKw0KKwkvKioNCisJICogU2V0cyB0aGUgdmFsdWUgb2YgdGhlICd7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnJlcXVpcmVtZW50cy5UZXN0Q2FzZSNnZXRCYXNlX09wZXJhdGlvbiA8ZW0+QmFzZSBPcGVyYXRpb248L2VtPn0nIHJlZmVyZW5jZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBwYXJhbSB2YWx1ZSB0aGUgbmV3IHZhbHVlIG9mIHRoZSAnPGVtPkJhc2UgT3BlcmF0aW9uPC9lbT4nIHJlZmVyZW5jZS4NCisJICogQHNlZSAjZ2V0QmFzZV9PcGVyYXRpb24oKQ0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwl2b2lkIHNldEJhc2VfT3BlcmF0aW9uKE9wZXJhdGlvbiB2YWx1ZSk7DQorDQorCS8qKg0KKwkgKiBSZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT48Yj5CYXNlIEJlaGF2aW9yPC9iPjwvZW0+JyByZWZlcmVuY2UuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDxwPg0KKwkgKiBJZiB0aGUgbWVhbmluZyBvZiB0aGUgJzxlbT5CYXNlIEJlaGF2aW9yPC9lbT4nIHJlZmVyZW5jZSBpc24ndCBjbGVhciwNCisJICogdGhlcmUgcmVhbGx5IHNob3VsZCBiZSBtb3JlIG9mIGEgZGVzY3JpcHRpb24gaGVyZS4uLg0KKwkgKiA8L3A+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAcmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUgJzxlbT5CYXNlIEJlaGF2aW9yPC9lbT4nIHJlZmVyZW5jZS4NCisJICogQHNlZSAjc2V0QmFzZV9CZWhhdmlvcihCZWhhdmlvcikNCisJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucmVxdWlyZW1lbnRzLlJlcXVpcmVtZW50c1BhY2thZ2UjZ2V0VGVzdENhc2VfQmFzZV9CZWhhdmlvcigpDQorCSAqIEBtb2RlbCBvcmRlcmVkPSJmYWxzZSINCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQmVoYXZpb3IgZ2V0QmFzZV9CZWhhdmlvcigpOw0KKw0KKwkvKioNCisJICogU2V0cyB0aGUgdmFsdWUgb2YgdGhlICd7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnJlcXVpcmVtZW50cy5UZXN0Q2FzZSNnZXRCYXNlX0JlaGF2aW9yIDxlbT5CYXNlIEJlaGF2aW9yPC9lbT59JyByZWZlcmVuY2UuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAcGFyYW0gdmFsdWUgdGhlIG5ldyB2YWx1ZSBvZiB0aGUgJzxlbT5CYXNlIEJlaGF2aW9yPC9lbT4nIHJlZmVyZW5jZS4NCisJICogQHNlZSAjZ2V0QmFzZV9CZWhhdmlvcigpDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXZvaWQgc2V0QmFzZV9CZWhhdmlvcihCZWhhdmlvciB2YWx1ZSk7DQorDQorfSAvLyBUZXN0Q2FzZQ0KZGlmZiAtLWdpdCBhL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L3JlcXVpcmVtZW50cy9UcmFjZS5qYXZhIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvcmVxdWlyZW1lbnRzL1RyYWNlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDU5YjMwNQotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L3JlcXVpcmVtZW50cy9UcmFjZS5qYXZhCkBAIC0wLDAgKzEsMzYgQEAKKy8qKg0KKyAqIENvcHlyaWdodCAoYykgMjAxNSBDRUEgTElTVC4NCisgKiANCisgKiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KKyAqICBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCisgKiAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCisgKiAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgKi8NCitwYWNrYWdlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5yZXF1aXJlbWVudHM7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jb21tb24udXRpbC5FTGlzdDsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmJsb2Nrcy5EaXJlY3RlZFJlbGF0aW9uc2hpcFByb3BlcnR5UGF0aDsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UudW1sMi51bWwuTmFtZWRFbGVtZW50Ow0KKw0KKy8qKg0KKyAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorICogQSByZXByZXNlbnRhdGlvbiBvZiB0aGUgbW9kZWwgb2JqZWN0ICc8ZW0+PGI+VHJhY2U8L2I+PC9lbT4nLg0KKyAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKyAqDQorICoNCisgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5yZXF1aXJlbWVudHMuUmVxdWlyZW1lbnRzUGFja2FnZSNnZXRUcmFjZSgpDQorICogQG1vZGVsDQorICogQGdlbmVyYXRlZA0KKyAqLw0KK3B1YmxpYyBpbnRlcmZhY2UgVHJhY2UgZXh0ZW5kcyBEaXJlY3RlZFJlbGF0aW9uc2hpcFByb3BlcnR5UGF0aCwgb3JnLmVjbGlwc2UudW1sMi51bWwucHJvZmlsZS5zdGFuZGFyZC5UcmFjZSB7DQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQG1vZGVsIHJlcXVpcmVkPSJ0cnVlIiBvcmRlcmVkPSJmYWxzZSIgcmVmUmVxdWlyZWQ9InRydWUiIHJlZk9yZGVyZWQ9ImZhbHNlIg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlFTGlzdDxSZXF1aXJlbWVudD4gZ2V0VHJhY2VkRnJvbShOYW1lZEVsZW1lbnQgcmVmKTsNCisNCit9IC8vIFRyYWNlDQpkaWZmIC0tZ2l0IGEvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvcmVxdWlyZW1lbnRzL1ZlcmlmeS5qYXZhIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvcmVxdWlyZW1lbnRzL1ZlcmlmeS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ2NmRlMzgKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9yZXF1aXJlbWVudHMvVmVyaWZ5LmphdmEKQEAgLTAsMCArMSwzOCBAQAorLyoqDQorICogQ29weXJpZ2h0IChjKSAyMDE1IENFQSBMSVNULg0KKyAqIA0KKyAqICBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQorICogIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KKyAqICB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KKyAqICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqLw0KK3BhY2thZ2Ugb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnJlcXVpcmVtZW50czsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi51dGlsLkVMaXN0Ow0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS51bWwyLnVtbC5OYW1lZEVsZW1lbnQ7DQorDQorLyoqDQorICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisgKiBBIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBtb2RlbCBvYmplY3QgJzxlbT48Yj5WZXJpZnk8L2I+PC9lbT4nLg0KKyAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKyAqDQorICogPCEtLSBiZWdpbi1tb2RlbC1kb2MgLS0+DQorICogQSBWZXJpZnkgcmVsYXRpb25zaGlwIGlzIGEgZGVwZW5kZW5jeSBiZXR3ZWVuIGEgcmVxdWlyZW1lbnQgYW5kIGEgdGVzdCBjYXNlIG9yIG90aGVyIG1vZGVsIGVsZW1lbnQgdGhhdCBjYW4gZGV0ZXJtaW5lIHdoZXRoZXIgYSBzeXN0ZW0gZnVsZmlsbHMgdGhlIHJlcXVpcmVtZW50LiBBcyB3aXRoIG90aGVyIGRlcGVuZGVuY2llcywgdGhlIGFycm93IGRpcmVjdGlvbiBwb2ludHMgZnJvbSB0aGUgKGNsaWVudCkgZWxlbWVudCB0byB0aGUgKHN1cHBsaWVyKSByZXF1aXJlbWVudC4NCisgKiA8IS0tIGVuZC1tb2RlbC1kb2MgLS0+DQorICoNCisgKg0KKyAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnJlcXVpcmVtZW50cy5SZXF1aXJlbWVudHNQYWNrYWdlI2dldFZlcmlmeSgpDQorICogQG1vZGVsDQorICogQGdlbmVyYXRlZA0KKyAqLw0KK3B1YmxpYyBpbnRlcmZhY2UgVmVyaWZ5IGV4dGVuZHMgVHJhY2Ugew0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBtb2RlbCByZXF1aXJlZD0idHJ1ZSIgb3JkZXJlZD0iZmFsc2UiIHJlZlJlcXVpcmVkPSJ0cnVlIiByZWZPcmRlcmVkPSJmYWxzZSINCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJRUxpc3Q8UmVxdWlyZW1lbnQ+IGdldFZlcmlmaWVzKE5hbWVkRWxlbWVudCByZWYpOw0KKw0KK30gLy8gVmVyaWZ5DQpkaWZmIC0tZ2l0IGEvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvcmVxdWlyZW1lbnRzL2ludGVybmFsL2ltcGwvQ29weUltcGwuamF2YSBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L3JlcXVpcmVtZW50cy9pbnRlcm5hbC9pbXBsL0NvcHlJbXBsLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWM3ZWY1YwotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L3JlcXVpcmVtZW50cy9pbnRlcm5hbC9pbXBsL0NvcHlJbXBsLmphdmEKQEAgLTAsMCArMSw0NSBAQAorLyoqDQorICogQ29weXJpZ2h0IChjKSAyMDE1IENFQSBMSVNULg0KKyAqIA0KKyAqICBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQorICogIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KKyAqICB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KKyAqICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqLw0KK3BhY2thZ2Ugb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnJlcXVpcmVtZW50cy5pbnRlcm5hbC5pbXBsOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRUNsYXNzOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucmVxdWlyZW1lbnRzLkNvcHk7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5yZXF1aXJlbWVudHMuUmVxdWlyZW1lbnRzUGFja2FnZTsNCisNCisvKioNCisgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKyAqIEFuIGltcGxlbWVudGF0aW9uIG9mIHRoZSBtb2RlbCBvYmplY3QgJzxlbT48Yj5Db3B5PC9iPjwvZW0+Jy4NCisgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisgKiA8cD4NCisgKiA8L3A+DQorICoNCisgKiBAZ2VuZXJhdGVkDQorICovDQorcHVibGljIGNsYXNzIENvcHlJbXBsIGV4dGVuZHMgVHJhY2VJbXBsIGltcGxlbWVudHMgQ29weSB7DQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHJvdGVjdGVkIENvcHlJbXBsKCkgew0KKwkJc3VwZXIoKTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwcm90ZWN0ZWQgRUNsYXNzIGVTdGF0aWNDbGFzcygpIHsNCisJCXJldHVybiBSZXF1aXJlbWVudHNQYWNrYWdlLkxpdGVyYWxzLkNPUFk7DQorCX0NCisNCit9IC8vQ29weUltcGwNCmRpZmYgLS1naXQgYS9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9yZXF1aXJlbWVudHMvaW50ZXJuYWwvaW1wbC9EZXJpdmVSZXF0SW1wbC5qYXZhIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvcmVxdWlyZW1lbnRzL2ludGVybmFsL2ltcGwvRGVyaXZlUmVxdEltcGwuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMTQ0YjAxCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvcmVxdWlyZW1lbnRzL2ludGVybmFsL2ltcGwvRGVyaXZlUmVxdEltcGwuamF2YQpAQCAtMCwwICsxLDQ1IEBACisvKioNCisgKiBDb3B5cmlnaHQgKGMpIDIwMTUgQ0VBIExJU1QuDQorICogDQorICogIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCisgKiAgYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQorICogIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQorICogIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICovDQorcGFja2FnZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucmVxdWlyZW1lbnRzLmludGVybmFsLmltcGw7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FQ2xhc3M7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5yZXF1aXJlbWVudHMuRGVyaXZlUmVxdDsNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnJlcXVpcmVtZW50cy5SZXF1aXJlbWVudHNQYWNrYWdlOw0KKw0KKy8qKg0KKyAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorICogQW4gaW1wbGVtZW50YXRpb24gb2YgdGhlIG1vZGVsIG9iamVjdCAnPGVtPjxiPkRlcml2ZSBSZXF0PC9iPjwvZW0+Jy4NCisgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisgKiA8cD4NCisgKiA8L3A+DQorICoNCisgKiBAZ2VuZXJhdGVkDQorICovDQorcHVibGljIGNsYXNzIERlcml2ZVJlcXRJbXBsIGV4dGVuZHMgVHJhY2VJbXBsIGltcGxlbWVudHMgRGVyaXZlUmVxdCB7DQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHJvdGVjdGVkIERlcml2ZVJlcXRJbXBsKCkgew0KKwkJc3VwZXIoKTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwcm90ZWN0ZWQgRUNsYXNzIGVTdGF0aWNDbGFzcygpIHsNCisJCXJldHVybiBSZXF1aXJlbWVudHNQYWNrYWdlLkxpdGVyYWxzLkRFUklWRV9SRVFUOw0KKwl9DQorDQorfSAvL0Rlcml2ZVJlcXRJbXBsDQpkaWZmIC0tZ2l0IGEvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvcmVxdWlyZW1lbnRzL2ludGVybmFsL2ltcGwvUmVmaW5lSW1wbC5qYXZhIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvcmVxdWlyZW1lbnRzL2ludGVybmFsL2ltcGwvUmVmaW5lSW1wbC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ5N2Q5NDEKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9yZXF1aXJlbWVudHMvaW50ZXJuYWwvaW1wbC9SZWZpbmVJbXBsLmphdmEKQEAgLTAsMCArMSwyMzAgQEAKKy8qKg0KKyAqIENvcHlyaWdodCAoYykgMjAxNSBDRUEgTElTVC4NCisgKiANCisgKiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KKyAqICBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCisgKiAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCisgKiAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgKi8NCitwYWNrYWdlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5yZXF1aXJlbWVudHMuaW50ZXJuYWwuaW1wbDsNCisNCitpbXBvcnQgamF2YS5sYW5nLnJlZmxlY3QuSW52b2NhdGlvblRhcmdldEV4Y2VwdGlvbjsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi5ub3RpZnkuTm90aWZpY2F0aW9uOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY29tbW9uLnV0aWwuRUxpc3Q7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FQ2xhc3M7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5JbnRlcm5hbEVPYmplY3Q7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5pbXBsLkVOb3RpZmljYXRpb25JbXBsOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYmxvY2tzLmludGVybmFsLmltcGwuRGlyZWN0ZWRSZWxhdGlvbnNoaXBQcm9wZXJ0eVBhdGhJbXBsOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucmVxdWlyZW1lbnRzLlJlZmluZTsNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnJlcXVpcmVtZW50cy5SZXF1aXJlbWVudDsNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnJlcXVpcmVtZW50cy5SZXF1aXJlbWVudHNQYWNrYWdlOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS51bWwyLnVtbC5BYnN0cmFjdGlvbjsNCitpbXBvcnQgb3JnLmVjbGlwc2UudW1sMi51bWwuTmFtZWRFbGVtZW50Ow0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS51bWwyLnVtbC5wcm9maWxlLnN0YW5kYXJkLlN0YW5kYXJkUGFja2FnZTsNCisNCisvKioNCisgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKyAqIEFuIGltcGxlbWVudGF0aW9uIG9mIHRoZSBtb2RlbCBvYmplY3QgJzxlbT48Yj5SZWZpbmU8L2I+PC9lbT4nLg0KKyAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKyAqIDxwPg0KKyAqIFRoZSBmb2xsb3dpbmcgZmVhdHVyZXMgYXJlIGltcGxlbWVudGVkOg0KKyAqIDx1bD4NCisgKiAgIDxsaT57QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnJlcXVpcmVtZW50cy5pbnRlcm5hbC5pbXBsLlJlZmluZUltcGwjZ2V0QmFzZV9BYnN0cmFjdGlvbiA8ZW0+QmFzZSBBYnN0cmFjdGlvbjwvZW0+fTwvbGk+DQorICogPC91bD4NCisgKiA8L3A+DQorICoNCisgKiBAZ2VuZXJhdGVkDQorICovDQorcHVibGljIGNsYXNzIFJlZmluZUltcGwgZXh0ZW5kcyBEaXJlY3RlZFJlbGF0aW9uc2hpcFByb3BlcnR5UGF0aEltcGwgaW1wbGVtZW50cyBSZWZpbmUgew0KKwkvKioNCisJICogVGhlIGNhY2hlZCB2YWx1ZSBvZiB0aGUgJ3tAbGluayAjZ2V0QmFzZV9BYnN0cmFjdGlvbigpIDxlbT5CYXNlIEFic3RyYWN0aW9uPC9lbT59JyByZWZlcmVuY2UuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAc2VlICNnZXRCYXNlX0Fic3RyYWN0aW9uKCkNCisJICogQGdlbmVyYXRlZA0KKwkgKiBAb3JkZXJlZA0KKwkgKi8NCisJcHJvdGVjdGVkIEFic3RyYWN0aW9uIGJhc2VfQWJzdHJhY3Rpb247DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHJvdGVjdGVkIFJlZmluZUltcGwoKSB7DQorCQlzdXBlcigpOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXByb3RlY3RlZCBFQ2xhc3MgZVN0YXRpY0NsYXNzKCkgew0KKwkJcmV0dXJuIFJlcXVpcmVtZW50c1BhY2thZ2UuTGl0ZXJhbHMuUkVGSU5FOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIEFic3RyYWN0aW9uIGdldEJhc2VfQWJzdHJhY3Rpb24oKSB7DQorCQlpZiAoYmFzZV9BYnN0cmFjdGlvbiAhPSBudWxsICYmIGJhc2VfQWJzdHJhY3Rpb24uZUlzUHJveHkoKSkgew0KKwkJCUludGVybmFsRU9iamVjdCBvbGRCYXNlX0Fic3RyYWN0aW9uID0gKEludGVybmFsRU9iamVjdCliYXNlX0Fic3RyYWN0aW9uOw0KKwkJCWJhc2VfQWJzdHJhY3Rpb24gPSAoQWJzdHJhY3Rpb24pZVJlc29sdmVQcm94eShvbGRCYXNlX0Fic3RyYWN0aW9uKTsNCisJCQlpZiAoYmFzZV9BYnN0cmFjdGlvbiAhPSBvbGRCYXNlX0Fic3RyYWN0aW9uKSB7DQorCQkJCWlmIChlTm90aWZpY2F0aW9uUmVxdWlyZWQoKSkNCisJCQkJCWVOb3RpZnkobmV3IEVOb3RpZmljYXRpb25JbXBsKHRoaXMsIE5vdGlmaWNhdGlvbi5SRVNPTFZFLCBSZXF1aXJlbWVudHNQYWNrYWdlLlJFRklORV9fQkFTRV9BQlNUUkFDVElPTiwgb2xkQmFzZV9BYnN0cmFjdGlvbiwgYmFzZV9BYnN0cmFjdGlvbikpOw0KKwkJCX0NCisJCX0NCisJCXJldHVybiBiYXNlX0Fic3RyYWN0aW9uOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIEFic3RyYWN0aW9uIGJhc2ljR2V0QmFzZV9BYnN0cmFjdGlvbigpIHsNCisJCXJldHVybiBiYXNlX0Fic3RyYWN0aW9uOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIHZvaWQgc2V0QmFzZV9BYnN0cmFjdGlvbihBYnN0cmFjdGlvbiBuZXdCYXNlX0Fic3RyYWN0aW9uKSB7DQorCQlBYnN0cmFjdGlvbiBvbGRCYXNlX0Fic3RyYWN0aW9uID0gYmFzZV9BYnN0cmFjdGlvbjsNCisJCWJhc2VfQWJzdHJhY3Rpb24gPSBuZXdCYXNlX0Fic3RyYWN0aW9uOw0KKwkJaWYgKGVOb3RpZmljYXRpb25SZXF1aXJlZCgpKQ0KKwkJCWVOb3RpZnkobmV3IEVOb3RpZmljYXRpb25JbXBsKHRoaXMsIE5vdGlmaWNhdGlvbi5TRVQsIFJlcXVpcmVtZW50c1BhY2thZ2UuUkVGSU5FX19CQVNFX0FCU1RSQUNUSU9OLCBvbGRCYXNlX0Fic3RyYWN0aW9uLCBiYXNlX0Fic3RyYWN0aW9uKSk7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgRUxpc3Q8UmVxdWlyZW1lbnQ+IGdldFJlZmluZXMoTmFtZWRFbGVtZW50IHJlZikgew0KKwkJLy8gVE9ETzogaW1wbGVtZW50IHRoaXMgbWV0aG9kDQorCQkvLyBFbnN1cmUgdGhhdCB5b3UgcmVtb3ZlIEBnZW5lcmF0ZWQgb3IgbWFyayBpdCBAZ2VuZXJhdGVkIE5PVA0KKwkJdGhyb3cgbmV3IFVuc3VwcG9ydGVkT3BlcmF0aW9uRXhjZXB0aW9uKCk7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIE9iamVjdCBlR2V0KGludCBmZWF0dXJlSUQsIGJvb2xlYW4gcmVzb2x2ZSwgYm9vbGVhbiBjb3JlVHlwZSkgew0KKwkJc3dpdGNoIChmZWF0dXJlSUQpIHsNCisJCQljYXNlIFJlcXVpcmVtZW50c1BhY2thZ2UuUkVGSU5FX19CQVNFX0FCU1RSQUNUSU9OOg0KKwkJCQlpZiAocmVzb2x2ZSkgcmV0dXJuIGdldEJhc2VfQWJzdHJhY3Rpb24oKTsNCisJCQkJcmV0dXJuIGJhc2ljR2V0QmFzZV9BYnN0cmFjdGlvbigpOw0KKwkJfQ0KKwkJcmV0dXJuIHN1cGVyLmVHZXQoZmVhdHVyZUlELCByZXNvbHZlLCBjb3JlVHlwZSk7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIHZvaWQgZVNldChpbnQgZmVhdHVyZUlELCBPYmplY3QgbmV3VmFsdWUpIHsNCisJCXN3aXRjaCAoZmVhdHVyZUlEKSB7DQorCQkJY2FzZSBSZXF1aXJlbWVudHNQYWNrYWdlLlJFRklORV9fQkFTRV9BQlNUUkFDVElPTjoNCisJCQkJc2V0QmFzZV9BYnN0cmFjdGlvbigoQWJzdHJhY3Rpb24pbmV3VmFsdWUpOw0KKwkJCQlyZXR1cm47DQorCQl9DQorCQlzdXBlci5lU2V0KGZlYXR1cmVJRCwgbmV3VmFsdWUpOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXB1YmxpYyB2b2lkIGVVbnNldChpbnQgZmVhdHVyZUlEKSB7DQorCQlzd2l0Y2ggKGZlYXR1cmVJRCkgew0KKwkJCWNhc2UgUmVxdWlyZW1lbnRzUGFja2FnZS5SRUZJTkVfX0JBU0VfQUJTVFJBQ1RJT046DQorCQkJCXNldEJhc2VfQWJzdHJhY3Rpb24oKEFic3RyYWN0aW9uKW51bGwpOw0KKwkJCQlyZXR1cm47DQorCQl9DQorCQlzdXBlci5lVW5zZXQoZmVhdHVyZUlEKTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgYm9vbGVhbiBlSXNTZXQoaW50IGZlYXR1cmVJRCkgew0KKwkJc3dpdGNoIChmZWF0dXJlSUQpIHsNCisJCQljYXNlIFJlcXVpcmVtZW50c1BhY2thZ2UuUkVGSU5FX19CQVNFX0FCU1RSQUNUSU9OOg0KKwkJCQlyZXR1cm4gYmFzZV9BYnN0cmFjdGlvbiAhPSBudWxsOw0KKwkJfQ0KKwkJcmV0dXJuIHN1cGVyLmVJc1NldChmZWF0dXJlSUQpOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXB1YmxpYyBpbnQgZUJhc2VTdHJ1Y3R1cmFsRmVhdHVyZUlEKGludCBkZXJpdmVkRmVhdHVyZUlELCBDbGFzczw/PiBiYXNlQ2xhc3MpIHsNCisJCWlmIChiYXNlQ2xhc3MgPT0gb3JnLmVjbGlwc2UudW1sMi51bWwucHJvZmlsZS5zdGFuZGFyZC5SZWZpbmUuY2xhc3MpIHsNCisJCQlzd2l0Y2ggKGRlcml2ZWRGZWF0dXJlSUQpIHsNCisJCQkJY2FzZSBSZXF1aXJlbWVudHNQYWNrYWdlLlJFRklORV9fQkFTRV9BQlNUUkFDVElPTjogcmV0dXJuIFN0YW5kYXJkUGFja2FnZS5SRUZJTkVfX0JBU0VfQUJTVFJBQ1RJT047DQorCQkJCWRlZmF1bHQ6IHJldHVybiAtMTsNCisJCQl9DQorCQl9DQorCQlyZXR1cm4gc3VwZXIuZUJhc2VTdHJ1Y3R1cmFsRmVhdHVyZUlEKGRlcml2ZWRGZWF0dXJlSUQsIGJhc2VDbGFzcyk7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIGludCBlRGVyaXZlZFN0cnVjdHVyYWxGZWF0dXJlSUQoaW50IGJhc2VGZWF0dXJlSUQsIENsYXNzPD8+IGJhc2VDbGFzcykgew0KKwkJaWYgKGJhc2VDbGFzcyA9PSBvcmcuZWNsaXBzZS51bWwyLnVtbC5wcm9maWxlLnN0YW5kYXJkLlJlZmluZS5jbGFzcykgew0KKwkJCXN3aXRjaCAoYmFzZUZlYXR1cmVJRCkgew0KKwkJCQljYXNlIFN0YW5kYXJkUGFja2FnZS5SRUZJTkVfX0JBU0VfQUJTVFJBQ1RJT046IHJldHVybiBSZXF1aXJlbWVudHNQYWNrYWdlLlJFRklORV9fQkFTRV9BQlNUUkFDVElPTjsNCisJCQkJZGVmYXVsdDogcmV0dXJuIC0xOw0KKwkJCX0NCisJCX0NCisJCXJldHVybiBzdXBlci5lRGVyaXZlZFN0cnVjdHVyYWxGZWF0dXJlSUQoYmFzZUZlYXR1cmVJRCwgYmFzZUNsYXNzKTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgT2JqZWN0IGVJbnZva2UoaW50IG9wZXJhdGlvbklELCBFTGlzdDw/PiBhcmd1bWVudHMpIHRocm93cyBJbnZvY2F0aW9uVGFyZ2V0RXhjZXB0aW9uIHsNCisJCXN3aXRjaCAob3BlcmF0aW9uSUQpIHsNCisJCQljYXNlIFJlcXVpcmVtZW50c1BhY2thZ2UuUkVGSU5FX19fR0VUX1JFRklORVNfX05BTUVERUxFTUVOVDoNCisJCQkJcmV0dXJuIGdldFJlZmluZXMoKE5hbWVkRWxlbWVudClhcmd1bWVudHMuZ2V0KDApKTsNCisJCX0NCisJCXJldHVybiBzdXBlci5lSW52b2tlKG9wZXJhdGlvbklELCBhcmd1bWVudHMpOw0KKwl9DQorDQorfSAvL1JlZmluZUltcGwNCmRpZmYgLS1naXQgYS9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9yZXF1aXJlbWVudHMvaW50ZXJuYWwvaW1wbC9SZXF1aXJlbWVudEltcGwuamF2YSBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L3JlcXVpcmVtZW50cy9pbnRlcm5hbC9pbXBsL1JlcXVpcmVtZW50SW1wbC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlhMzgzODQKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9yZXF1aXJlbWVudHMvaW50ZXJuYWwvaW1wbC9SZXF1aXJlbWVudEltcGwuamF2YQpAQCAtMCwwICsxLDU3NCBAQAorLyoqDQorICogQ29weXJpZ2h0IChjKSAyMDE1IENFQSBMSVNULg0KKyAqIA0KKyAqICBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQorICogIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KKyAqICB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KKyAqICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqLw0KK3BhY2thZ2Ugb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnJlcXVpcmVtZW50cy5pbnRlcm5hbC5pbXBsOw0KKw0KK2ltcG9ydCBqYXZhLnV0aWwuQ29sbGVjdGlvbjsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi5ub3RpZnkuTm90aWZpY2F0aW9uOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY29tbW9uLnV0aWwuRUxpc3Q7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FQ2xhc3M7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5JbnRlcm5hbEVPYmplY3Q7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5pbXBsLkVOb3RpZmljYXRpb25JbXBsOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuaW1wbC5NaW5pbWFsRU9iamVjdEltcGw7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5yZXF1aXJlbWVudHMuUmVxdWlyZW1lbnQ7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5yZXF1aXJlbWVudHMuUmVxdWlyZW1lbnRzUGFja2FnZTsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UudW1sMi51bWwuTmFtZWRFbGVtZW50Ow0KKw0KKy8qKg0KKyAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorICogQW4gaW1wbGVtZW50YXRpb24gb2YgdGhlIG1vZGVsIG9iamVjdCAnPGVtPjxiPlJlcXVpcmVtZW50PC9iPjwvZW0+Jy4NCisgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisgKiA8cD4NCisgKiBUaGUgZm9sbG93aW5nIGZlYXR1cmVzIGFyZSBpbXBsZW1lbnRlZDoNCisgKiA8dWw+DQorICogICA8bGk+e0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5yZXF1aXJlbWVudHMuaW50ZXJuYWwuaW1wbC5SZXF1aXJlbWVudEltcGwjZ2V0QmFzZV9DbGFzcyA8ZW0+QmFzZSBDbGFzczwvZW0+fTwvbGk+DQorICogICA8bGk+e0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5yZXF1aXJlbWVudHMuaW50ZXJuYWwuaW1wbC5SZXF1aXJlbWVudEltcGwjZ2V0VGV4dCA8ZW0+VGV4dDwvZW0+fTwvbGk+DQorICogICA8bGk+e0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5yZXF1aXJlbWVudHMuaW50ZXJuYWwuaW1wbC5SZXF1aXJlbWVudEltcGwjZ2V0SWQgPGVtPklkPC9lbT59PC9saT4NCisgKiAgIDxsaT57QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnJlcXVpcmVtZW50cy5pbnRlcm5hbC5pbXBsLlJlcXVpcmVtZW50SW1wbCNnZXREZXJpdmVkIDxlbT5EZXJpdmVkPC9lbT59PC9saT4NCisgKiAgIDxsaT57QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnJlcXVpcmVtZW50cy5pbnRlcm5hbC5pbXBsLlJlcXVpcmVtZW50SW1wbCNnZXREZXJpdmVkRnJvbSA8ZW0+RGVyaXZlZCBGcm9tPC9lbT59PC9saT4NCisgKiAgIDxsaT57QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnJlcXVpcmVtZW50cy5pbnRlcm5hbC5pbXBsLlJlcXVpcmVtZW50SW1wbCNnZXRTYXRpc2ZpZWRCeSA8ZW0+U2F0aXNmaWVkIEJ5PC9lbT59PC9saT4NCisgKiAgIDxsaT57QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnJlcXVpcmVtZW50cy5pbnRlcm5hbC5pbXBsLlJlcXVpcmVtZW50SW1wbCNnZXRSZWZpbmVkQnkgPGVtPlJlZmluZWQgQnk8L2VtPn08L2xpPg0KKyAqICAgPGxpPntAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucmVxdWlyZW1lbnRzLmludGVybmFsLmltcGwuUmVxdWlyZW1lbnRJbXBsI2dldFRyYWNlZFRvIDxlbT5UcmFjZWQgVG88L2VtPn08L2xpPg0KKyAqICAgPGxpPntAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucmVxdWlyZW1lbnRzLmludGVybmFsLmltcGwuUmVxdWlyZW1lbnRJbXBsI2dldFZlcmlmaWVkQnkgPGVtPlZlcmlmaWVkIEJ5PC9lbT59PC9saT4NCisgKiAgIDxsaT57QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnJlcXVpcmVtZW50cy5pbnRlcm5hbC5pbXBsLlJlcXVpcmVtZW50SW1wbCNnZXRNYXN0ZXIgPGVtPk1hc3RlcjwvZW0+fTwvbGk+DQorICogPC91bD4NCisgKiA8L3A+DQorICoNCisgKiBAZ2VuZXJhdGVkDQorICovDQorcHVibGljIGNsYXNzIFJlcXVpcmVtZW50SW1wbCBleHRlbmRzIE1pbmltYWxFT2JqZWN0SW1wbC5Db250YWluZXIgaW1wbGVtZW50cyBSZXF1aXJlbWVudCB7DQorCS8qKg0KKwkgKiBUaGUgY2FjaGVkIHZhbHVlIG9mIHRoZSAne0BsaW5rICNnZXRCYXNlX0NsYXNzKCkgPGVtPkJhc2UgQ2xhc3M8L2VtPn0nIHJlZmVyZW5jZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBzZWUgI2dldEJhc2VfQ2xhc3MoKQ0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqIEBvcmRlcmVkDQorCSAqLw0KKwlwcm90ZWN0ZWQgb3JnLmVjbGlwc2UudW1sMi51bWwuQ2xhc3MgYmFzZV9DbGFzczsNCisNCisJLyoqDQorCSAqIFRoZSBkZWZhdWx0IHZhbHVlIG9mIHRoZSAne0BsaW5rICNnZXRUZXh0KCkgPGVtPlRleHQ8L2VtPn0nIGF0dHJpYnV0ZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBzZWUgI2dldFRleHQoKQ0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqIEBvcmRlcmVkDQorCSAqLw0KKwlwcm90ZWN0ZWQgc3RhdGljIGZpbmFsIFN0cmluZyBURVhUX0VERUZBVUxUID0gIiI7IC8vJE5PTi1OTFMtMSQNCisNCisJLyoqDQorCSAqIFRoZSBjYWNoZWQgdmFsdWUgb2YgdGhlICd7QGxpbmsgI2dldFRleHQoKSA8ZW0+VGV4dDwvZW0+fScgYXR0cmlidXRlLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHNlZSAjZ2V0VGV4dCgpDQorCSAqIEBnZW5lcmF0ZWQNCisJICogQG9yZGVyZWQNCisJICovDQorCXByb3RlY3RlZCBTdHJpbmcgdGV4dCA9IFRFWFRfRURFRkFVTFQ7DQorDQorCS8qKg0KKwkgKiBUaGUgZGVmYXVsdCB2YWx1ZSBvZiB0aGUgJ3tAbGluayAjZ2V0SWQoKSA8ZW0+SWQ8L2VtPn0nIGF0dHJpYnV0ZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBzZWUgI2dldElkKCkNCisJICogQGdlbmVyYXRlZA0KKwkgKiBAb3JkZXJlZA0KKwkgKi8NCisJcHJvdGVjdGVkIHN0YXRpYyBmaW5hbCBTdHJpbmcgSURfRURFRkFVTFQgPSAiIjsgLy8kTk9OLU5MUy0xJA0KKw0KKwkvKioNCisJICogVGhlIGNhY2hlZCB2YWx1ZSBvZiB0aGUgJ3tAbGluayAjZ2V0SWQoKSA8ZW0+SWQ8L2VtPn0nIGF0dHJpYnV0ZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBzZWUgI2dldElkKCkNCisJICogQGdlbmVyYXRlZA0KKwkgKiBAb3JkZXJlZA0KKwkgKi8NCisJcHJvdGVjdGVkIFN0cmluZyBpZCA9IElEX0VERUZBVUxUOw0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXByb3RlY3RlZCBSZXF1aXJlbWVudEltcGwoKSB7DQorCQlzdXBlcigpOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXByb3RlY3RlZCBFQ2xhc3MgZVN0YXRpY0NsYXNzKCkgew0KKwkJcmV0dXJuIFJlcXVpcmVtZW50c1BhY2thZ2UuTGl0ZXJhbHMuUkVRVUlSRU1FTlQ7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgb3JnLmVjbGlwc2UudW1sMi51bWwuQ2xhc3MgZ2V0QmFzZV9DbGFzcygpIHsNCisJCWlmIChiYXNlX0NsYXNzICE9IG51bGwgJiYgYmFzZV9DbGFzcy5lSXNQcm94eSgpKSB7DQorCQkJSW50ZXJuYWxFT2JqZWN0IG9sZEJhc2VfQ2xhc3MgPSAoSW50ZXJuYWxFT2JqZWN0KWJhc2VfQ2xhc3M7DQorCQkJYmFzZV9DbGFzcyA9IChvcmcuZWNsaXBzZS51bWwyLnVtbC5DbGFzcyllUmVzb2x2ZVByb3h5KG9sZEJhc2VfQ2xhc3MpOw0KKwkJCWlmIChiYXNlX0NsYXNzICE9IG9sZEJhc2VfQ2xhc3MpIHsNCisJCQkJaWYgKGVOb3RpZmljYXRpb25SZXF1aXJlZCgpKQ0KKwkJCQkJZU5vdGlmeShuZXcgRU5vdGlmaWNhdGlvbkltcGwodGhpcywgTm90aWZpY2F0aW9uLlJFU09MVkUsIFJlcXVpcmVtZW50c1BhY2thZ2UuUkVRVUlSRU1FTlRfX0JBU0VfQ0xBU1MsIG9sZEJhc2VfQ2xhc3MsIGJhc2VfQ2xhc3MpKTsNCisJCQl9DQorCQl9DQorCQlyZXR1cm4gYmFzZV9DbGFzczsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBvcmcuZWNsaXBzZS51bWwyLnVtbC5DbGFzcyBiYXNpY0dldEJhc2VfQ2xhc3MoKSB7DQorCQlyZXR1cm4gYmFzZV9DbGFzczsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyB2b2lkIHNldEJhc2VfQ2xhc3Mob3JnLmVjbGlwc2UudW1sMi51bWwuQ2xhc3MgbmV3QmFzZV9DbGFzcykgew0KKwkJb3JnLmVjbGlwc2UudW1sMi51bWwuQ2xhc3Mgb2xkQmFzZV9DbGFzcyA9IGJhc2VfQ2xhc3M7DQorCQliYXNlX0NsYXNzID0gbmV3QmFzZV9DbGFzczsNCisJCWlmIChlTm90aWZpY2F0aW9uUmVxdWlyZWQoKSkNCisJCQllTm90aWZ5KG5ldyBFTm90aWZpY2F0aW9uSW1wbCh0aGlzLCBOb3RpZmljYXRpb24uU0VULCBSZXF1aXJlbWVudHNQYWNrYWdlLlJFUVVJUkVNRU5UX19CQVNFX0NMQVNTLCBvbGRCYXNlX0NsYXNzLCBiYXNlX0NsYXNzKSk7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgU3RyaW5nIGdldFRleHQoKSB7DQorCQlyZXR1cm4gdGV4dDsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyB2b2lkIHNldFRleHQoU3RyaW5nIG5ld1RleHQpIHsNCisJCVN0cmluZyBvbGRUZXh0ID0gdGV4dDsNCisJCXRleHQgPSBuZXdUZXh0Ow0KKwkJaWYgKGVOb3RpZmljYXRpb25SZXF1aXJlZCgpKQ0KKwkJCWVOb3RpZnkobmV3IEVOb3RpZmljYXRpb25JbXBsKHRoaXMsIE5vdGlmaWNhdGlvbi5TRVQsIFJlcXVpcmVtZW50c1BhY2thZ2UuUkVRVUlSRU1FTlRfX1RFWFQsIG9sZFRleHQsIHRleHQpKTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBTdHJpbmcgZ2V0SWQoKSB7DQorCQlyZXR1cm4gaWQ7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgdm9pZCBzZXRJZChTdHJpbmcgbmV3SWQpIHsNCisJCVN0cmluZyBvbGRJZCA9IGlkOw0KKwkJaWQgPSBuZXdJZDsNCisJCWlmIChlTm90aWZpY2F0aW9uUmVxdWlyZWQoKSkNCisJCQllTm90aWZ5KG5ldyBFTm90aWZpY2F0aW9uSW1wbCh0aGlzLCBOb3RpZmljYXRpb24uU0VULCBSZXF1aXJlbWVudHNQYWNrYWdlLlJFUVVJUkVNRU5UX19JRCwgb2xkSWQsIGlkKSk7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgRUxpc3Q8UmVxdWlyZW1lbnQ+IGdldERlcml2ZWQoKSB7DQorCQkvLyBUT0RPOiBpbXBsZW1lbnQgdGhpcyBtZXRob2QgdG8gcmV0dXJuIHRoZSAnRGVyaXZlZCcgcmVmZXJlbmNlIGxpc3QNCisJCS8vIEVuc3VyZSB0aGF0IHlvdSByZW1vdmUgQGdlbmVyYXRlZCBvciBtYXJrIGl0IEBnZW5lcmF0ZWQgTk9UDQorCQl0aHJvdyBuZXcgVW5zdXBwb3J0ZWRPcGVyYXRpb25FeGNlcHRpb24oKTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBFTGlzdDxSZXF1aXJlbWVudD4gZ2V0RGVyaXZlZEZyb20oKSB7DQorCQkvLyBUT0RPOiBpbXBsZW1lbnQgdGhpcyBtZXRob2QgdG8gcmV0dXJuIHRoZSAnRGVyaXZlZCBGcm9tJyByZWZlcmVuY2UgbGlzdA0KKwkJLy8gRW5zdXJlIHRoYXQgeW91IHJlbW92ZSBAZ2VuZXJhdGVkIG9yIG1hcmsgaXQgQGdlbmVyYXRlZCBOT1QNCisJCXRocm93IG5ldyBVbnN1cHBvcnRlZE9wZXJhdGlvbkV4Y2VwdGlvbigpOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIEVMaXN0PE5hbWVkRWxlbWVudD4gZ2V0U2F0aXNmaWVkQnkoKSB7DQorCQkvLyBUT0RPOiBpbXBsZW1lbnQgdGhpcyBtZXRob2QgdG8gcmV0dXJuIHRoZSAnU2F0aXNmaWVkIEJ5JyByZWZlcmVuY2UgbGlzdA0KKwkJLy8gRW5zdXJlIHRoYXQgeW91IHJlbW92ZSBAZ2VuZXJhdGVkIG9yIG1hcmsgaXQgQGdlbmVyYXRlZCBOT1QNCisJCXRocm93IG5ldyBVbnN1cHBvcnRlZE9wZXJhdGlvbkV4Y2VwdGlvbigpOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIE5hbWVkRWxlbWVudCBnZXRTYXRpc2ZpZWRCeShTdHJpbmcgbmFtZSkgew0KKwkJcmV0dXJuIGdldFNhdGlzZmllZEJ5KG5hbWUsIGZhbHNlLCBudWxsKTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBOYW1lZEVsZW1lbnQgZ2V0U2F0aXNmaWVkQnkoU3RyaW5nIG5hbWUsIGJvb2xlYW4gaWdub3JlQ2FzZSwgRUNsYXNzIGVDbGFzcykgew0KKwkJc2F0aXNmaWVkQnlMb29wOiBmb3IgKE5hbWVkRWxlbWVudCBzYXRpc2ZpZWRCeSA6IGdldFNhdGlzZmllZEJ5KCkpIHsNCisJCQlpZiAoZUNsYXNzICE9IG51bGwgJiYgIWVDbGFzcy5pc0luc3RhbmNlKHNhdGlzZmllZEJ5KSkNCisJCQkJY29udGludWUgc2F0aXNmaWVkQnlMb29wOw0KKwkJCWlmIChuYW1lICE9IG51bGwgJiYgIShpZ25vcmVDYXNlID8gbmFtZS5lcXVhbHNJZ25vcmVDYXNlKHNhdGlzZmllZEJ5LmdldE5hbWUoKSkgOiBuYW1lLmVxdWFscyhzYXRpc2ZpZWRCeS5nZXROYW1lKCkpKSkNCisJCQkJY29udGludWUgc2F0aXNmaWVkQnlMb29wOw0KKwkJCXJldHVybiBzYXRpc2ZpZWRCeTsNCisJCX0NCisJCXJldHVybiBudWxsOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIEVMaXN0PE5hbWVkRWxlbWVudD4gZ2V0UmVmaW5lZEJ5KCkgew0KKwkJLy8gVE9ETzogaW1wbGVtZW50IHRoaXMgbWV0aG9kIHRvIHJldHVybiB0aGUgJ1JlZmluZWQgQnknIHJlZmVyZW5jZSBsaXN0DQorCQkvLyBFbnN1cmUgdGhhdCB5b3UgcmVtb3ZlIEBnZW5lcmF0ZWQgb3IgbWFyayBpdCBAZ2VuZXJhdGVkIE5PVA0KKwkJdGhyb3cgbmV3IFVuc3VwcG9ydGVkT3BlcmF0aW9uRXhjZXB0aW9uKCk7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgTmFtZWRFbGVtZW50IGdldFJlZmluZWRCeShTdHJpbmcgbmFtZSkgew0KKwkJcmV0dXJuIGdldFJlZmluZWRCeShuYW1lLCBmYWxzZSwgbnVsbCk7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgTmFtZWRFbGVtZW50IGdldFJlZmluZWRCeShTdHJpbmcgbmFtZSwgYm9vbGVhbiBpZ25vcmVDYXNlLCBFQ2xhc3MgZUNsYXNzKSB7DQorCQlyZWZpbmVkQnlMb29wOiBmb3IgKE5hbWVkRWxlbWVudCByZWZpbmVkQnkgOiBnZXRSZWZpbmVkQnkoKSkgew0KKwkJCWlmIChlQ2xhc3MgIT0gbnVsbCAmJiAhZUNsYXNzLmlzSW5zdGFuY2UocmVmaW5lZEJ5KSkNCisJCQkJY29udGludWUgcmVmaW5lZEJ5TG9vcDsNCisJCQlpZiAobmFtZSAhPSBudWxsICYmICEoaWdub3JlQ2FzZSA/IG5hbWUuZXF1YWxzSWdub3JlQ2FzZShyZWZpbmVkQnkuZ2V0TmFtZSgpKSA6IG5hbWUuZXF1YWxzKHJlZmluZWRCeS5nZXROYW1lKCkpKSkNCisJCQkJY29udGludWUgcmVmaW5lZEJ5TG9vcDsNCisJCQlyZXR1cm4gcmVmaW5lZEJ5Ow0KKwkJfQ0KKwkJcmV0dXJuIG51bGw7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgRUxpc3Q8TmFtZWRFbGVtZW50PiBnZXRUcmFjZWRUbygpIHsNCisJCS8vIFRPRE86IGltcGxlbWVudCB0aGlzIG1ldGhvZCB0byByZXR1cm4gdGhlICdUcmFjZWQgVG8nIHJlZmVyZW5jZSBsaXN0DQorCQkvLyBFbnN1cmUgdGhhdCB5b3UgcmVtb3ZlIEBnZW5lcmF0ZWQgb3IgbWFyayBpdCBAZ2VuZXJhdGVkIE5PVA0KKwkJdGhyb3cgbmV3IFVuc3VwcG9ydGVkT3BlcmF0aW9uRXhjZXB0aW9uKCk7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgTmFtZWRFbGVtZW50IGdldFRyYWNlZFRvKFN0cmluZyBuYW1lKSB7DQorCQlyZXR1cm4gZ2V0VHJhY2VkVG8obmFtZSwgZmFsc2UsIG51bGwpOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIE5hbWVkRWxlbWVudCBnZXRUcmFjZWRUbyhTdHJpbmcgbmFtZSwgYm9vbGVhbiBpZ25vcmVDYXNlLCBFQ2xhc3MgZUNsYXNzKSB7DQorCQl0cmFjZWRUb0xvb3A6IGZvciAoTmFtZWRFbGVtZW50IHRyYWNlZFRvIDogZ2V0VHJhY2VkVG8oKSkgew0KKwkJCWlmIChlQ2xhc3MgIT0gbnVsbCAmJiAhZUNsYXNzLmlzSW5zdGFuY2UodHJhY2VkVG8pKQ0KKwkJCQljb250aW51ZSB0cmFjZWRUb0xvb3A7DQorCQkJaWYgKG5hbWUgIT0gbnVsbCAmJiAhKGlnbm9yZUNhc2UgPyBuYW1lLmVxdWFsc0lnbm9yZUNhc2UodHJhY2VkVG8uZ2V0TmFtZSgpKSA6IG5hbWUuZXF1YWxzKHRyYWNlZFRvLmdldE5hbWUoKSkpKQ0KKwkJCQljb250aW51ZSB0cmFjZWRUb0xvb3A7DQorCQkJcmV0dXJuIHRyYWNlZFRvOw0KKwkJfQ0KKwkJcmV0dXJuIG51bGw7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgRUxpc3Q8TmFtZWRFbGVtZW50PiBnZXRWZXJpZmllZEJ5KCkgew0KKwkJLy8gVE9ETzogaW1wbGVtZW50IHRoaXMgbWV0aG9kIHRvIHJldHVybiB0aGUgJ1ZlcmlmaWVkIEJ5JyByZWZlcmVuY2UgbGlzdA0KKwkJLy8gRW5zdXJlIHRoYXQgeW91IHJlbW92ZSBAZ2VuZXJhdGVkIG9yIG1hcmsgaXQgQGdlbmVyYXRlZCBOT1QNCisJCXRocm93IG5ldyBVbnN1cHBvcnRlZE9wZXJhdGlvbkV4Y2VwdGlvbigpOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIE5hbWVkRWxlbWVudCBnZXRWZXJpZmllZEJ5KFN0cmluZyBuYW1lKSB7DQorCQlyZXR1cm4gZ2V0VmVyaWZpZWRCeShuYW1lLCBmYWxzZSwgbnVsbCk7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgTmFtZWRFbGVtZW50IGdldFZlcmlmaWVkQnkoU3RyaW5nIG5hbWUsIGJvb2xlYW4gaWdub3JlQ2FzZSwgRUNsYXNzIGVDbGFzcykgew0KKwkJdmVyaWZpZWRCeUxvb3A6IGZvciAoTmFtZWRFbGVtZW50IHZlcmlmaWVkQnkgOiBnZXRWZXJpZmllZEJ5KCkpIHsNCisJCQlpZiAoZUNsYXNzICE9IG51bGwgJiYgIWVDbGFzcy5pc0luc3RhbmNlKHZlcmlmaWVkQnkpKQ0KKwkJCQljb250aW51ZSB2ZXJpZmllZEJ5TG9vcDsNCisJCQlpZiAobmFtZSAhPSBudWxsICYmICEoaWdub3JlQ2FzZSA/IG5hbWUuZXF1YWxzSWdub3JlQ2FzZSh2ZXJpZmllZEJ5LmdldE5hbWUoKSkgOiBuYW1lLmVxdWFscyh2ZXJpZmllZEJ5LmdldE5hbWUoKSkpKQ0KKwkJCQljb250aW51ZSB2ZXJpZmllZEJ5TG9vcDsNCisJCQlyZXR1cm4gdmVyaWZpZWRCeTsNCisJCX0NCisJCXJldHVybiBudWxsOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIFJlcXVpcmVtZW50IGdldE1hc3RlcigpIHsNCisJCVJlcXVpcmVtZW50IG1hc3RlciA9IGJhc2ljR2V0TWFzdGVyKCk7DQorCQlyZXR1cm4gbWFzdGVyICE9IG51bGwgJiYgbWFzdGVyLmVJc1Byb3h5KCkgPyAoUmVxdWlyZW1lbnQpZVJlc29sdmVQcm94eSgoSW50ZXJuYWxFT2JqZWN0KW1hc3RlcikgOiBtYXN0ZXI7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgUmVxdWlyZW1lbnQgYmFzaWNHZXRNYXN0ZXIoKSB7DQorCQkvLyBUT0RPOiBpbXBsZW1lbnQgdGhpcyBtZXRob2QgdG8gcmV0dXJuIHRoZSAnTWFzdGVyJyByZWZlcmVuY2UNCisJCS8vIC0+IGRvIG5vdCBwZXJmb3JtIHByb3h5IHJlc29sdXRpb24NCisJCS8vIEVuc3VyZSB0aGF0IHlvdSByZW1vdmUgQGdlbmVyYXRlZCBvciBtYXJrIGl0IEBnZW5lcmF0ZWQgTk9UDQorCQl0aHJvdyBuZXcgVW5zdXBwb3J0ZWRPcGVyYXRpb25FeGNlcHRpb24oKTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyB2b2lkIHNldE1hc3RlcihSZXF1aXJlbWVudCBuZXdNYXN0ZXIpIHsNCisJCS8vIFRPRE86IGltcGxlbWVudCB0aGlzIG1ldGhvZCB0byBzZXQgdGhlICdNYXN0ZXInIHJlZmVyZW5jZQ0KKwkJLy8gRW5zdXJlIHRoYXQgeW91IHJlbW92ZSBAZ2VuZXJhdGVkIG9yIG1hcmsgaXQgQGdlbmVyYXRlZCBOT1QNCisJCXRocm93IG5ldyBVbnN1cHBvcnRlZE9wZXJhdGlvbkV4Y2VwdGlvbigpOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXB1YmxpYyBPYmplY3QgZUdldChpbnQgZmVhdHVyZUlELCBib29sZWFuIHJlc29sdmUsIGJvb2xlYW4gY29yZVR5cGUpIHsNCisJCXN3aXRjaCAoZmVhdHVyZUlEKSB7DQorCQkJY2FzZSBSZXF1aXJlbWVudHNQYWNrYWdlLlJFUVVJUkVNRU5UX19CQVNFX0NMQVNTOg0KKwkJCQlpZiAocmVzb2x2ZSkgcmV0dXJuIGdldEJhc2VfQ2xhc3MoKTsNCisJCQkJcmV0dXJuIGJhc2ljR2V0QmFzZV9DbGFzcygpOw0KKwkJCWNhc2UgUmVxdWlyZW1lbnRzUGFja2FnZS5SRVFVSVJFTUVOVF9fVEVYVDoNCisJCQkJcmV0dXJuIGdldFRleHQoKTsNCisJCQljYXNlIFJlcXVpcmVtZW50c1BhY2thZ2UuUkVRVUlSRU1FTlRfX0lEOg0KKwkJCQlyZXR1cm4gZ2V0SWQoKTsNCisJCQljYXNlIFJlcXVpcmVtZW50c1BhY2thZ2UuUkVRVUlSRU1FTlRfX0RFUklWRUQ6DQorCQkJCXJldHVybiBnZXREZXJpdmVkKCk7DQorCQkJY2FzZSBSZXF1aXJlbWVudHNQYWNrYWdlLlJFUVVJUkVNRU5UX19ERVJJVkVEX0ZST006DQorCQkJCXJldHVybiBnZXREZXJpdmVkRnJvbSgpOw0KKwkJCWNhc2UgUmVxdWlyZW1lbnRzUGFja2FnZS5SRVFVSVJFTUVOVF9fU0FUSVNGSUVEX0JZOg0KKwkJCQlyZXR1cm4gZ2V0U2F0aXNmaWVkQnkoKTsNCisJCQljYXNlIFJlcXVpcmVtZW50c1BhY2thZ2UuUkVRVUlSRU1FTlRfX1JFRklORURfQlk6DQorCQkJCXJldHVybiBnZXRSZWZpbmVkQnkoKTsNCisJCQljYXNlIFJlcXVpcmVtZW50c1BhY2thZ2UuUkVRVUlSRU1FTlRfX1RSQUNFRF9UTzoNCisJCQkJcmV0dXJuIGdldFRyYWNlZFRvKCk7DQorCQkJY2FzZSBSZXF1aXJlbWVudHNQYWNrYWdlLlJFUVVJUkVNRU5UX19WRVJJRklFRF9CWToNCisJCQkJcmV0dXJuIGdldFZlcmlmaWVkQnkoKTsNCisJCQljYXNlIFJlcXVpcmVtZW50c1BhY2thZ2UuUkVRVUlSRU1FTlRfX01BU1RFUjoNCisJCQkJaWYgKHJlc29sdmUpIHJldHVybiBnZXRNYXN0ZXIoKTsNCisJCQkJcmV0dXJuIGJhc2ljR2V0TWFzdGVyKCk7DQorCQl9DQorCQlyZXR1cm4gc3VwZXIuZUdldChmZWF0dXJlSUQsIHJlc29sdmUsIGNvcmVUeXBlKTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBTdXBwcmVzc1dhcm5pbmdzKCJ1bmNoZWNrZWQiKQ0KKwlAT3ZlcnJpZGUNCisJcHVibGljIHZvaWQgZVNldChpbnQgZmVhdHVyZUlELCBPYmplY3QgbmV3VmFsdWUpIHsNCisJCXN3aXRjaCAoZmVhdHVyZUlEKSB7DQorCQkJY2FzZSBSZXF1aXJlbWVudHNQYWNrYWdlLlJFUVVJUkVNRU5UX19CQVNFX0NMQVNTOg0KKwkJCQlzZXRCYXNlX0NsYXNzKChvcmcuZWNsaXBzZS51bWwyLnVtbC5DbGFzcyluZXdWYWx1ZSk7DQorCQkJCXJldHVybjsNCisJCQljYXNlIFJlcXVpcmVtZW50c1BhY2thZ2UuUkVRVUlSRU1FTlRfX1RFWFQ6DQorCQkJCXNldFRleHQoKFN0cmluZyluZXdWYWx1ZSk7DQorCQkJCXJldHVybjsNCisJCQljYXNlIFJlcXVpcmVtZW50c1BhY2thZ2UuUkVRVUlSRU1FTlRfX0lEOg0KKwkJCQlzZXRJZCgoU3RyaW5nKW5ld1ZhbHVlKTsNCisJCQkJcmV0dXJuOw0KKwkJCWNhc2UgUmVxdWlyZW1lbnRzUGFja2FnZS5SRVFVSVJFTUVOVF9fREVSSVZFRDoNCisJCQkJZ2V0RGVyaXZlZCgpLmNsZWFyKCk7DQorCQkJCWdldERlcml2ZWQoKS5hZGRBbGwoKENvbGxlY3Rpb248PyBleHRlbmRzIFJlcXVpcmVtZW50PiluZXdWYWx1ZSk7DQorCQkJCXJldHVybjsNCisJCQljYXNlIFJlcXVpcmVtZW50c1BhY2thZ2UuUkVRVUlSRU1FTlRfX0RFUklWRURfRlJPTToNCisJCQkJZ2V0RGVyaXZlZEZyb20oKS5jbGVhcigpOw0KKwkJCQlnZXREZXJpdmVkRnJvbSgpLmFkZEFsbCgoQ29sbGVjdGlvbjw/IGV4dGVuZHMgUmVxdWlyZW1lbnQ+KW5ld1ZhbHVlKTsNCisJCQkJcmV0dXJuOw0KKwkJCWNhc2UgUmVxdWlyZW1lbnRzUGFja2FnZS5SRVFVSVJFTUVOVF9fU0FUSVNGSUVEX0JZOg0KKwkJCQlnZXRTYXRpc2ZpZWRCeSgpLmNsZWFyKCk7DQorCQkJCWdldFNhdGlzZmllZEJ5KCkuYWRkQWxsKChDb2xsZWN0aW9uPD8gZXh0ZW5kcyBOYW1lZEVsZW1lbnQ+KW5ld1ZhbHVlKTsNCisJCQkJcmV0dXJuOw0KKwkJCWNhc2UgUmVxdWlyZW1lbnRzUGFja2FnZS5SRVFVSVJFTUVOVF9fUkVGSU5FRF9CWToNCisJCQkJZ2V0UmVmaW5lZEJ5KCkuY2xlYXIoKTsNCisJCQkJZ2V0UmVmaW5lZEJ5KCkuYWRkQWxsKChDb2xsZWN0aW9uPD8gZXh0ZW5kcyBOYW1lZEVsZW1lbnQ+KW5ld1ZhbHVlKTsNCisJCQkJcmV0dXJuOw0KKwkJCWNhc2UgUmVxdWlyZW1lbnRzUGFja2FnZS5SRVFVSVJFTUVOVF9fVFJBQ0VEX1RPOg0KKwkJCQlnZXRUcmFjZWRUbygpLmNsZWFyKCk7DQorCQkJCWdldFRyYWNlZFRvKCkuYWRkQWxsKChDb2xsZWN0aW9uPD8gZXh0ZW5kcyBOYW1lZEVsZW1lbnQ+KW5ld1ZhbHVlKTsNCisJCQkJcmV0dXJuOw0KKwkJCWNhc2UgUmVxdWlyZW1lbnRzUGFja2FnZS5SRVFVSVJFTUVOVF9fVkVSSUZJRURfQlk6DQorCQkJCWdldFZlcmlmaWVkQnkoKS5jbGVhcigpOw0KKwkJCQlnZXRWZXJpZmllZEJ5KCkuYWRkQWxsKChDb2xsZWN0aW9uPD8gZXh0ZW5kcyBOYW1lZEVsZW1lbnQ+KW5ld1ZhbHVlKTsNCisJCQkJcmV0dXJuOw0KKwkJCWNhc2UgUmVxdWlyZW1lbnRzUGFja2FnZS5SRVFVSVJFTUVOVF9fTUFTVEVSOg0KKwkJCQlzZXRNYXN0ZXIoKFJlcXVpcmVtZW50KW5ld1ZhbHVlKTsNCisJCQkJcmV0dXJuOw0KKwkJfQ0KKwkJc3VwZXIuZVNldChmZWF0dXJlSUQsIG5ld1ZhbHVlKTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgdm9pZCBlVW5zZXQoaW50IGZlYXR1cmVJRCkgew0KKwkJc3dpdGNoIChmZWF0dXJlSUQpIHsNCisJCQljYXNlIFJlcXVpcmVtZW50c1BhY2thZ2UuUkVRVUlSRU1FTlRfX0JBU0VfQ0xBU1M6DQorCQkJCXNldEJhc2VfQ2xhc3MoKG9yZy5lY2xpcHNlLnVtbDIudW1sLkNsYXNzKW51bGwpOw0KKwkJCQlyZXR1cm47DQorCQkJY2FzZSBSZXF1aXJlbWVudHNQYWNrYWdlLlJFUVVJUkVNRU5UX19URVhUOg0KKwkJCQlzZXRUZXh0KFRFWFRfRURFRkFVTFQpOw0KKwkJCQlyZXR1cm47DQorCQkJY2FzZSBSZXF1aXJlbWVudHNQYWNrYWdlLlJFUVVJUkVNRU5UX19JRDoNCisJCQkJc2V0SWQoSURfRURFRkFVTFQpOw0KKwkJCQlyZXR1cm47DQorCQkJY2FzZSBSZXF1aXJlbWVudHNQYWNrYWdlLlJFUVVJUkVNRU5UX19ERVJJVkVEOg0KKwkJCQlnZXREZXJpdmVkKCkuY2xlYXIoKTsNCisJCQkJcmV0dXJuOw0KKwkJCWNhc2UgUmVxdWlyZW1lbnRzUGFja2FnZS5SRVFVSVJFTUVOVF9fREVSSVZFRF9GUk9NOg0KKwkJCQlnZXREZXJpdmVkRnJvbSgpLmNsZWFyKCk7DQorCQkJCXJldHVybjsNCisJCQljYXNlIFJlcXVpcmVtZW50c1BhY2thZ2UuUkVRVUlSRU1FTlRfX1NBVElTRklFRF9CWToNCisJCQkJZ2V0U2F0aXNmaWVkQnkoKS5jbGVhcigpOw0KKwkJCQlyZXR1cm47DQorCQkJY2FzZSBSZXF1aXJlbWVudHNQYWNrYWdlLlJFUVVJUkVNRU5UX19SRUZJTkVEX0JZOg0KKwkJCQlnZXRSZWZpbmVkQnkoKS5jbGVhcigpOw0KKwkJCQlyZXR1cm47DQorCQkJY2FzZSBSZXF1aXJlbWVudHNQYWNrYWdlLlJFUVVJUkVNRU5UX19UUkFDRURfVE86DQorCQkJCWdldFRyYWNlZFRvKCkuY2xlYXIoKTsNCisJCQkJcmV0dXJuOw0KKwkJCWNhc2UgUmVxdWlyZW1lbnRzUGFja2FnZS5SRVFVSVJFTUVOVF9fVkVSSUZJRURfQlk6DQorCQkJCWdldFZlcmlmaWVkQnkoKS5jbGVhcigpOw0KKwkJCQlyZXR1cm47DQorCQkJY2FzZSBSZXF1aXJlbWVudHNQYWNrYWdlLlJFUVVJUkVNRU5UX19NQVNURVI6DQorCQkJCXNldE1hc3RlcigoUmVxdWlyZW1lbnQpbnVsbCk7DQorCQkJCXJldHVybjsNCisJCX0NCisJCXN1cGVyLmVVbnNldChmZWF0dXJlSUQpOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXB1YmxpYyBib29sZWFuIGVJc1NldChpbnQgZmVhdHVyZUlEKSB7DQorCQlzd2l0Y2ggKGZlYXR1cmVJRCkgew0KKwkJCWNhc2UgUmVxdWlyZW1lbnRzUGFja2FnZS5SRVFVSVJFTUVOVF9fQkFTRV9DTEFTUzoNCisJCQkJcmV0dXJuIGJhc2VfQ2xhc3MgIT0gbnVsbDsNCisJCQljYXNlIFJlcXVpcmVtZW50c1BhY2thZ2UuUkVRVUlSRU1FTlRfX1RFWFQ6DQorCQkJCXJldHVybiBURVhUX0VERUZBVUxUID09IG51bGwgPyB0ZXh0ICE9IG51bGwgOiAhVEVYVF9FREVGQVVMVC5lcXVhbHModGV4dCk7DQorCQkJY2FzZSBSZXF1aXJlbWVudHNQYWNrYWdlLlJFUVVJUkVNRU5UX19JRDoNCisJCQkJcmV0dXJuIElEX0VERUZBVUxUID09IG51bGwgPyBpZCAhPSBudWxsIDogIUlEX0VERUZBVUxULmVxdWFscyhpZCk7DQorCQkJY2FzZSBSZXF1aXJlbWVudHNQYWNrYWdlLlJFUVVJUkVNRU5UX19ERVJJVkVEOg0KKwkJCQlyZXR1cm4gIWdldERlcml2ZWQoKS5pc0VtcHR5KCk7DQorCQkJY2FzZSBSZXF1aXJlbWVudHNQYWNrYWdlLlJFUVVJUkVNRU5UX19ERVJJVkVEX0ZST006DQorCQkJCXJldHVybiAhZ2V0RGVyaXZlZEZyb20oKS5pc0VtcHR5KCk7DQorCQkJY2FzZSBSZXF1aXJlbWVudHNQYWNrYWdlLlJFUVVJUkVNRU5UX19TQVRJU0ZJRURfQlk6DQorCQkJCXJldHVybiAhZ2V0U2F0aXNmaWVkQnkoKS5pc0VtcHR5KCk7DQorCQkJY2FzZSBSZXF1aXJlbWVudHNQYWNrYWdlLlJFUVVJUkVNRU5UX19SRUZJTkVEX0JZOg0KKwkJCQlyZXR1cm4gIWdldFJlZmluZWRCeSgpLmlzRW1wdHkoKTsNCisJCQljYXNlIFJlcXVpcmVtZW50c1BhY2thZ2UuUkVRVUlSRU1FTlRfX1RSQUNFRF9UTzoNCisJCQkJcmV0dXJuICFnZXRUcmFjZWRUbygpLmlzRW1wdHkoKTsNCisJCQljYXNlIFJlcXVpcmVtZW50c1BhY2thZ2UuUkVRVUlSRU1FTlRfX1ZFUklGSUVEX0JZOg0KKwkJCQlyZXR1cm4gIWdldFZlcmlmaWVkQnkoKS5pc0VtcHR5KCk7DQorCQkJY2FzZSBSZXF1aXJlbWVudHNQYWNrYWdlLlJFUVVJUkVNRU5UX19NQVNURVI6DQorCQkJCXJldHVybiBiYXNpY0dldE1hc3RlcigpICE9IG51bGw7DQorCQl9DQorCQlyZXR1cm4gc3VwZXIuZUlzU2V0KGZlYXR1cmVJRCk7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIFN0cmluZyB0b1N0cmluZygpIHsNCisJCWlmIChlSXNQcm94eSgpKSByZXR1cm4gc3VwZXIudG9TdHJpbmcoKTsNCisNCisJCVN0cmluZ0J1ZmZlciByZXN1bHQgPSBuZXcgU3RyaW5nQnVmZmVyKHN1cGVyLnRvU3RyaW5nKCkpOw0KKwkJcmVzdWx0LmFwcGVuZCgiICh0ZXh0OiAiKTsgLy8kTk9OLU5MUy0xJA0KKwkJcmVzdWx0LmFwcGVuZCh0ZXh0KTsNCisJCXJlc3VsdC5hcHBlbmQoIiwgaWQ6ICIpOyAvLyROT04tTkxTLTEkDQorCQlyZXN1bHQuYXBwZW5kKGlkKTsNCisJCXJlc3VsdC5hcHBlbmQoJyknKTsNCisJCXJldHVybiByZXN1bHQudG9TdHJpbmcoKTsNCisJfQ0KKw0KK30gLy9SZXF1aXJlbWVudEltcGwNCmRpZmYgLS1naXQgYS9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9yZXF1aXJlbWVudHMvaW50ZXJuYWwvaW1wbC9SZXF1aXJlbWVudHNGYWN0b3J5SW1wbC5qYXZhIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvcmVxdWlyZW1lbnRzL2ludGVybmFsL2ltcGwvUmVxdWlyZW1lbnRzRmFjdG9yeUltcGwuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xY2U3NjY5Ci0tLSAvZGV2L251bGwKKysrIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvcmVxdWlyZW1lbnRzL2ludGVybmFsL2ltcGwvUmVxdWlyZW1lbnRzRmFjdG9yeUltcGwuamF2YQpAQCAtMCwwICsxLDE3OCBAQAorLyoqDQorICogQ29weXJpZ2h0IChjKSAyMDE1IENFQSBMSVNULg0KKyAqIA0KKyAqICBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQorICogIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KKyAqICB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KKyAqICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqLw0KK3BhY2thZ2Ugb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnJlcXVpcmVtZW50cy5pbnRlcm5hbC5pbXBsOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRUNsYXNzOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRU9iamVjdDsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVQYWNrYWdlOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuaW1wbC5FRmFjdG9yeUltcGw7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5wbHVnaW4uRWNvcmVQbHVnaW47DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5yZXF1aXJlbWVudHMuKjsNCisNCisvKioNCisgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKyAqIEFuIGltcGxlbWVudGF0aW9uIG9mIHRoZSBtb2RlbCA8Yj5GYWN0b3J5PC9iPi4NCisgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisgKiBAZ2VuZXJhdGVkDQorICovDQorcHVibGljIGNsYXNzIFJlcXVpcmVtZW50c0ZhY3RvcnlJbXBsIGV4dGVuZHMgRUZhY3RvcnlJbXBsIGltcGxlbWVudHMgUmVxdWlyZW1lbnRzRmFjdG9yeSB7DQorCS8qKg0KKwkgKiBDcmVhdGVzIHRoZSBkZWZhdWx0IGZhY3RvcnkgaW1wbGVtZW50YXRpb24uDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgc3RhdGljIFJlcXVpcmVtZW50c0ZhY3RvcnkgaW5pdCgpIHsNCisJCXRyeSB7DQorCQkJUmVxdWlyZW1lbnRzRmFjdG9yeSB0aGVSZXF1aXJlbWVudHNGYWN0b3J5ID0gKFJlcXVpcmVtZW50c0ZhY3RvcnkpRVBhY2thZ2UuUmVnaXN0cnkuSU5TVEFOQ0UuZ2V0RUZhY3RvcnkoUmVxdWlyZW1lbnRzUGFja2FnZS5lTlNfVVJJKTsNCisJCQlpZiAodGhlUmVxdWlyZW1lbnRzRmFjdG9yeSAhPSBudWxsKSB7DQorCQkJCXJldHVybiB0aGVSZXF1aXJlbWVudHNGYWN0b3J5Ow0KKwkJCX0NCisJCX0NCisJCWNhdGNoIChFeGNlcHRpb24gZXhjZXB0aW9uKSB7DQorCQkJRWNvcmVQbHVnaW4uSU5TVEFOQ0UubG9nKGV4Y2VwdGlvbik7DQorCQl9DQorCQlyZXR1cm4gbmV3IFJlcXVpcmVtZW50c0ZhY3RvcnlJbXBsKCk7DQorCX0NCisNCisJLyoqDQorCSAqIENyZWF0ZXMgYW4gaW5zdGFuY2Ugb2YgdGhlIGZhY3RvcnkuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgUmVxdWlyZW1lbnRzRmFjdG9yeUltcGwoKSB7DQorCQlzdXBlcigpOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXB1YmxpYyBFT2JqZWN0IGNyZWF0ZShFQ2xhc3MgZUNsYXNzKSB7DQorCQlzd2l0Y2ggKGVDbGFzcy5nZXRDbGFzc2lmaWVySUQoKSkgew0KKwkJCWNhc2UgUmVxdWlyZW1lbnRzUGFja2FnZS5ERVJJVkVfUkVRVDogcmV0dXJuIGNyZWF0ZURlcml2ZVJlcXQoKTsNCisJCQljYXNlIFJlcXVpcmVtZW50c1BhY2thZ2UuVFJBQ0U6IHJldHVybiBjcmVhdGVUcmFjZSgpOw0KKwkJCWNhc2UgUmVxdWlyZW1lbnRzUGFja2FnZS5SRVFVSVJFTUVOVDogcmV0dXJuIGNyZWF0ZVJlcXVpcmVtZW50KCk7DQorCQkJY2FzZSBSZXF1aXJlbWVudHNQYWNrYWdlLkNPUFk6IHJldHVybiBjcmVhdGVDb3B5KCk7DQorCQkJY2FzZSBSZXF1aXJlbWVudHNQYWNrYWdlLlNBVElTRlk6IHJldHVybiBjcmVhdGVTYXRpc2Z5KCk7DQorCQkJY2FzZSBSZXF1aXJlbWVudHNQYWNrYWdlLlRFU1RfQ0FTRTogcmV0dXJuIGNyZWF0ZVRlc3RDYXNlKCk7DQorCQkJY2FzZSBSZXF1aXJlbWVudHNQYWNrYWdlLlZFUklGWTogcmV0dXJuIGNyZWF0ZVZlcmlmeSgpOw0KKwkJCWNhc2UgUmVxdWlyZW1lbnRzUGFja2FnZS5SRUZJTkU6IHJldHVybiBjcmVhdGVSZWZpbmUoKTsNCisJCQlkZWZhdWx0Og0KKwkJCQl0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJUaGUgY2xhc3MgJyIgKyBlQ2xhc3MuZ2V0TmFtZSgpICsgIicgaXMgbm90IGEgdmFsaWQgY2xhc3NpZmllciIpOyAvLyROT04tTkxTLTEkIC8vJE5PTi1OTFMtMiQNCisJCX0NCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBEZXJpdmVSZXF0IGNyZWF0ZURlcml2ZVJlcXQoKSB7DQorCQlEZXJpdmVSZXF0SW1wbCBkZXJpdmVSZXF0ID0gbmV3IERlcml2ZVJlcXRJbXBsKCk7DQorCQlyZXR1cm4gZGVyaXZlUmVxdDsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBUcmFjZSBjcmVhdGVUcmFjZSgpIHsNCisJCVRyYWNlSW1wbCB0cmFjZSA9IG5ldyBUcmFjZUltcGwoKTsNCisJCXJldHVybiB0cmFjZTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBSZXF1aXJlbWVudCBjcmVhdGVSZXF1aXJlbWVudCgpIHsNCisJCVJlcXVpcmVtZW50SW1wbCByZXF1aXJlbWVudCA9IG5ldyBSZXF1aXJlbWVudEltcGwoKTsNCisJCXJldHVybiByZXF1aXJlbWVudDsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBDb3B5IGNyZWF0ZUNvcHkoKSB7DQorCQlDb3B5SW1wbCBjb3B5ID0gbmV3IENvcHlJbXBsKCk7DQorCQlyZXR1cm4gY29weTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBTYXRpc2Z5IGNyZWF0ZVNhdGlzZnkoKSB7DQorCQlTYXRpc2Z5SW1wbCBzYXRpc2Z5ID0gbmV3IFNhdGlzZnlJbXBsKCk7DQorCQlyZXR1cm4gc2F0aXNmeTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBUZXN0Q2FzZSBjcmVhdGVUZXN0Q2FzZSgpIHsNCisJCVRlc3RDYXNlSW1wbCB0ZXN0Q2FzZSA9IG5ldyBUZXN0Q2FzZUltcGwoKTsNCisJCXJldHVybiB0ZXN0Q2FzZTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBWZXJpZnkgY3JlYXRlVmVyaWZ5KCkgew0KKwkJVmVyaWZ5SW1wbCB2ZXJpZnkgPSBuZXcgVmVyaWZ5SW1wbCgpOw0KKwkJcmV0dXJuIHZlcmlmeTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBSZWZpbmUgY3JlYXRlUmVmaW5lKCkgew0KKwkJUmVmaW5lSW1wbCByZWZpbmUgPSBuZXcgUmVmaW5lSW1wbCgpOw0KKwkJcmV0dXJuIHJlZmluZTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBSZXF1aXJlbWVudHNQYWNrYWdlIGdldFJlcXVpcmVtZW50c1BhY2thZ2UoKSB7DQorCQlyZXR1cm4gKFJlcXVpcmVtZW50c1BhY2thZ2UpZ2V0RVBhY2thZ2UoKTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBkZXByZWNhdGVkDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBEZXByZWNhdGVkDQorCXB1YmxpYyBzdGF0aWMgUmVxdWlyZW1lbnRzUGFja2FnZSBnZXRQYWNrYWdlKCkgew0KKwkJcmV0dXJuIFJlcXVpcmVtZW50c1BhY2thZ2UuZUlOU1RBTkNFOw0KKwl9DQorDQorfSAvL1JlcXVpcmVtZW50c0ZhY3RvcnlJbXBsDQpkaWZmIC0tZ2l0IGEvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvcmVxdWlyZW1lbnRzL2ludGVybmFsL2ltcGwvUmVxdWlyZW1lbnRzUGFja2FnZUltcGwuamF2YSBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L3JlcXVpcmVtZW50cy9pbnRlcm5hbC9pbXBsL1JlcXVpcmVtZW50c1BhY2thZ2VJbXBsLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmEyMjgxMQotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L3JlcXVpcmVtZW50cy9pbnRlcm5hbC9pbXBsL1JlcXVpcmVtZW50c1BhY2thZ2VJbXBsLmphdmEKQEAgLTAsMCArMSw1OTkgQEAKKy8qKg0KKyAqIENvcHlyaWdodCAoYykgMjAxNSBDRUEgTElTVC4NCisgKiANCisgKiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KKyAqICBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCisgKiAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCisgKiAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgKi8NCitwYWNrYWdlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5yZXF1aXJlbWVudHMuaW50ZXJuYWwuaW1wbDsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVBdHRyaWJ1dGU7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FQ2xhc3M7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FT3BlcmF0aW9uOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRVBhY2thZ2U7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FUmVmZXJlbmNlOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuaW1wbC5FUGFja2FnZUltcGw7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5hY3Rpdml0aWVzLkFjdGl2aXRpZXNQYWNrYWdlOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYWN0aXZpdGllcy5pbnRlcm5hbC5pbXBsLkFjdGl2aXRpZXNQYWNrYWdlSW1wbDsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmFsbG9jYXRpb25zLkFsbG9jYXRpb25zUGFja2FnZTsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmFsbG9jYXRpb25zLmludGVybmFsLmltcGwuQWxsb2NhdGlvbnNQYWNrYWdlSW1wbDsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmJsb2Nrcy5CbG9ja3NQYWNrYWdlOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYmxvY2tzLmludGVybmFsLmltcGwuQmxvY2tzUGFja2FnZUltcGw7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5jb25zdHJhaW50YmxvY2tzLkNvbnN0cmFpbnRibG9ja3NQYWNrYWdlOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuY29uc3RyYWludGJsb2Nrcy5pbnRlcm5hbC5pbXBsLkNvbnN0cmFpbnRibG9ja3NQYWNrYWdlSW1wbDsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRlcHJlY2F0ZWRlbGVtZW50cy5EZXByZWNhdGVkZWxlbWVudHNQYWNrYWdlOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGVwcmVjYXRlZGVsZW1lbnRzLmludGVybmFsLmltcGwuRGVwcmVjYXRlZGVsZW1lbnRzUGFja2FnZUltcGw7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5tb2RlbGVsZW1lbnRzLk1vZGVsZWxlbWVudHNQYWNrYWdlOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQubW9kZWxlbGVtZW50cy5pbnRlcm5hbC5pbXBsLk1vZGVsZWxlbWVudHNQYWNrYWdlSW1wbDsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnBvcnRhbmRmbG93cy5Qb3J0YW5kZmxvd3NQYWNrYWdlOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucG9ydGFuZGZsb3dzLmludGVybmFsLmltcGwuUG9ydGFuZGZsb3dzUGFja2FnZUltcGw7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5yZXF1aXJlbWVudHMuQ29weTsNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnJlcXVpcmVtZW50cy5EZXJpdmVSZXF0Ow0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucmVxdWlyZW1lbnRzLlJlZmluZTsNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnJlcXVpcmVtZW50cy5SZXF1aXJlbWVudDsNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnJlcXVpcmVtZW50cy5SZXF1aXJlbWVudHNGYWN0b3J5Ow0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucmVxdWlyZW1lbnRzLlJlcXVpcmVtZW50c1BhY2thZ2U7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5yZXF1aXJlbWVudHMuU2F0aXNmeTsNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnJlcXVpcmVtZW50cy5UZXN0Q2FzZTsNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnJlcXVpcmVtZW50cy5UcmFjZTsNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnJlcXVpcmVtZW50cy5WZXJpZnk7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLnVtbDIudHlwZXMuVHlwZXNQYWNrYWdlOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS51bWwyLnVtbC5VTUxQYWNrYWdlOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS51bWwyLnVtbC5wcm9maWxlLnN0YW5kYXJkLlN0YW5kYXJkUGFja2FnZTsNCisNCisvKioNCisgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKyAqIEFuIGltcGxlbWVudGF0aW9uIG9mIHRoZSBtb2RlbCA8Yj5QYWNrYWdlPC9iPi4NCisgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisgKiBAZ2VuZXJhdGVkDQorICovDQorcHVibGljIGNsYXNzIFJlcXVpcmVtZW50c1BhY2thZ2VJbXBsIGV4dGVuZHMgRVBhY2thZ2VJbXBsIGltcGxlbWVudHMgUmVxdWlyZW1lbnRzUGFja2FnZSB7DQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHJpdmF0ZSBFQ2xhc3MgZGVyaXZlUmVxdEVDbGFzcyA9IG51bGw7DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHJpdmF0ZSBFQ2xhc3MgdHJhY2VFQ2xhc3MgPSBudWxsOw0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXByaXZhdGUgRUNsYXNzIHJlcXVpcmVtZW50RUNsYXNzID0gbnVsbDsNCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwcml2YXRlIEVDbGFzcyBjb3B5RUNsYXNzID0gbnVsbDsNCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwcml2YXRlIEVDbGFzcyBzYXRpc2Z5RUNsYXNzID0gbnVsbDsNCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwcml2YXRlIEVDbGFzcyB0ZXN0Q2FzZUVDbGFzcyA9IG51bGw7DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHJpdmF0ZSBFQ2xhc3MgdmVyaWZ5RUNsYXNzID0gbnVsbDsNCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwcml2YXRlIEVDbGFzcyByZWZpbmVFQ2xhc3MgPSBudWxsOw0KKw0KKwkvKioNCisJICogQ3JlYXRlcyBhbiBpbnN0YW5jZSBvZiB0aGUgbW9kZWwgPGI+UGFja2FnZTwvYj4sIHJlZ2lzdGVyZWQgd2l0aA0KKwkgKiB7QGxpbmsgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVQYWNrYWdlLlJlZ2lzdHJ5IEVQYWNrYWdlLlJlZ2lzdHJ5fSBieSB0aGUgcGFja2FnZQ0KKwkgKiBwYWNrYWdlIFVSSSB2YWx1ZS4NCisJICogPHA+Tm90ZTogdGhlIGNvcnJlY3Qgd2F5IHRvIGNyZWF0ZSB0aGUgcGFja2FnZSBpcyB2aWEgdGhlIHN0YXRpYw0KKwkgKiBmYWN0b3J5IG1ldGhvZCB7QGxpbmsgI2luaXQgaW5pdCgpfSwgd2hpY2ggYWxzbyBwZXJmb3Jtcw0KKwkgKiBpbml0aWFsaXphdGlvbiBvZiB0aGUgcGFja2FnZSwgb3IgcmV0dXJucyB0aGUgcmVnaXN0ZXJlZCBwYWNrYWdlLA0KKwkgKiBpZiBvbmUgYWxyZWFkeSBleGlzdHMuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAc2VlIG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FUGFja2FnZS5SZWdpc3RyeQ0KKwkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5yZXF1aXJlbWVudHMuUmVxdWlyZW1lbnRzUGFja2FnZSNlTlNfVVJJDQorCSAqIEBzZWUgI2luaXQoKQ0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwcml2YXRlIFJlcXVpcmVtZW50c1BhY2thZ2VJbXBsKCkgew0KKwkJc3VwZXIoZU5TX1VSSSwgUmVxdWlyZW1lbnRzRmFjdG9yeS5lSU5TVEFOQ0UpOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHJpdmF0ZSBzdGF0aWMgYm9vbGVhbiBpc0luaXRlZCA9IGZhbHNlOw0KKw0KKwkvKioNCisJICogQ3JlYXRlcywgcmVnaXN0ZXJzLCBhbmQgaW5pdGlhbGl6ZXMgdGhlIDxiPlBhY2thZ2U8L2I+IGZvciB0aGlzIG1vZGVsLCBhbmQgZm9yIGFueSBvdGhlcnMgdXBvbiB3aGljaCBpdCBkZXBlbmRzLg0KKwkgKiANCisJICogPHA+VGhpcyBtZXRob2QgaXMgdXNlZCB0byBpbml0aWFsaXplIHtAbGluayBSZXF1aXJlbWVudHNQYWNrYWdlI2VJTlNUQU5DRX0gd2hlbiB0aGF0IGZpZWxkIGlzIGFjY2Vzc2VkLg0KKwkgKiBDbGllbnRzIHNob3VsZCBub3QgaW52b2tlIGl0IGRpcmVjdGx5LiBJbnN0ZWFkLCB0aGV5IHNob3VsZCBzaW1wbHkgYWNjZXNzIHRoYXQgZmllbGQgdG8gb2J0YWluIHRoZSBwYWNrYWdlLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHNlZSAjZU5TX1VSSQ0KKwkgKiBAc2VlICNjcmVhdGVQYWNrYWdlQ29udGVudHMoKQ0KKwkgKiBAc2VlICNpbml0aWFsaXplUGFja2FnZUNvbnRlbnRzKCkNCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIHN0YXRpYyBSZXF1aXJlbWVudHNQYWNrYWdlIGluaXQoKSB7DQorCQlpZiAoaXNJbml0ZWQpIHJldHVybiAoUmVxdWlyZW1lbnRzUGFja2FnZSlFUGFja2FnZS5SZWdpc3RyeS5JTlNUQU5DRS5nZXRFUGFja2FnZShSZXF1aXJlbWVudHNQYWNrYWdlLmVOU19VUkkpOw0KKw0KKwkJLy8gT2J0YWluIG9yIGNyZWF0ZSBhbmQgcmVnaXN0ZXIgcGFja2FnZQ0KKwkJUmVxdWlyZW1lbnRzUGFja2FnZUltcGwgdGhlUmVxdWlyZW1lbnRzUGFja2FnZSA9IChSZXF1aXJlbWVudHNQYWNrYWdlSW1wbCkoRVBhY2thZ2UuUmVnaXN0cnkuSU5TVEFOQ0UuZ2V0KGVOU19VUkkpIGluc3RhbmNlb2YgUmVxdWlyZW1lbnRzUGFja2FnZUltcGwgPyBFUGFja2FnZS5SZWdpc3RyeS5JTlNUQU5DRS5nZXQoZU5TX1VSSSkgOiBuZXcgUmVxdWlyZW1lbnRzUGFja2FnZUltcGwoKSk7DQorDQorCQlpc0luaXRlZCA9IHRydWU7DQorDQorCQkvLyBJbml0aWFsaXplIHNpbXBsZSBkZXBlbmRlbmNpZXMNCisJCVN0YW5kYXJkUGFja2FnZS5lSU5TVEFOQ0UuZUNsYXNzKCk7DQorDQorCQkvLyBPYnRhaW4gb3IgY3JlYXRlIGFuZCByZWdpc3RlciBpbnRlcmRlcGVuZGVuY2llcw0KKwkJQmxvY2tzUGFja2FnZUltcGwgdGhlQmxvY2tzUGFja2FnZSA9IChCbG9ja3NQYWNrYWdlSW1wbCkoRVBhY2thZ2UuUmVnaXN0cnkuSU5TVEFOQ0UuZ2V0RVBhY2thZ2UoQmxvY2tzUGFja2FnZS5lTlNfVVJJKSBpbnN0YW5jZW9mIEJsb2Nrc1BhY2thZ2VJbXBsID8gRVBhY2thZ2UuUmVnaXN0cnkuSU5TVEFOQ0UuZ2V0RVBhY2thZ2UoQmxvY2tzUGFja2FnZS5lTlNfVVJJKSA6IEJsb2Nrc1BhY2thZ2UuZUlOU1RBTkNFKTsNCisJCVBvcnRhbmRmbG93c1BhY2thZ2VJbXBsIHRoZVBvcnRhbmRmbG93c1BhY2thZ2UgPSAoUG9ydGFuZGZsb3dzUGFja2FnZUltcGwpKEVQYWNrYWdlLlJlZ2lzdHJ5LklOU1RBTkNFLmdldEVQYWNrYWdlKFBvcnRhbmRmbG93c1BhY2thZ2UuZU5TX1VSSSkgaW5zdGFuY2VvZiBQb3J0YW5kZmxvd3NQYWNrYWdlSW1wbCA/IEVQYWNrYWdlLlJlZ2lzdHJ5LklOU1RBTkNFLmdldEVQYWNrYWdlKFBvcnRhbmRmbG93c1BhY2thZ2UuZU5TX1VSSSkgOiBQb3J0YW5kZmxvd3NQYWNrYWdlLmVJTlNUQU5DRSk7DQorCQlBY3Rpdml0aWVzUGFja2FnZUltcGwgdGhlQWN0aXZpdGllc1BhY2thZ2UgPSAoQWN0aXZpdGllc1BhY2thZ2VJbXBsKShFUGFja2FnZS5SZWdpc3RyeS5JTlNUQU5DRS5nZXRFUGFja2FnZShBY3Rpdml0aWVzUGFja2FnZS5lTlNfVVJJKSBpbnN0YW5jZW9mIEFjdGl2aXRpZXNQYWNrYWdlSW1wbCA/IEVQYWNrYWdlLlJlZ2lzdHJ5LklOU1RBTkNFLmdldEVQYWNrYWdlKEFjdGl2aXRpZXNQYWNrYWdlLmVOU19VUkkpIDogQWN0aXZpdGllc1BhY2thZ2UuZUlOU1RBTkNFKTsNCisJCU1vZGVsZWxlbWVudHNQYWNrYWdlSW1wbCB0aGVNb2RlbGVsZW1lbnRzUGFja2FnZSA9IChNb2RlbGVsZW1lbnRzUGFja2FnZUltcGwpKEVQYWNrYWdlLlJlZ2lzdHJ5LklOU1RBTkNFLmdldEVQYWNrYWdlKE1vZGVsZWxlbWVudHNQYWNrYWdlLmVOU19VUkkpIGluc3RhbmNlb2YgTW9kZWxlbGVtZW50c1BhY2thZ2VJbXBsID8gRVBhY2thZ2UuUmVnaXN0cnkuSU5TVEFOQ0UuZ2V0RVBhY2thZ2UoTW9kZWxlbGVtZW50c1BhY2thZ2UuZU5TX1VSSSkgOiBNb2RlbGVsZW1lbnRzUGFja2FnZS5lSU5TVEFOQ0UpOw0KKwkJQ29uc3RyYWludGJsb2Nrc1BhY2thZ2VJbXBsIHRoZUNvbnN0cmFpbnRibG9ja3NQYWNrYWdlID0gKENvbnN0cmFpbnRibG9ja3NQYWNrYWdlSW1wbCkoRVBhY2thZ2UuUmVnaXN0cnkuSU5TVEFOQ0UuZ2V0RVBhY2thZ2UoQ29uc3RyYWludGJsb2Nrc1BhY2thZ2UuZU5TX1VSSSkgaW5zdGFuY2VvZiBDb25zdHJhaW50YmxvY2tzUGFja2FnZUltcGwgPyBFUGFja2FnZS5SZWdpc3RyeS5JTlNUQU5DRS5nZXRFUGFja2FnZShDb25zdHJhaW50YmxvY2tzUGFja2FnZS5lTlNfVVJJKSA6IENvbnN0cmFpbnRibG9ja3NQYWNrYWdlLmVJTlNUQU5DRSk7DQorCQlBbGxvY2F0aW9uc1BhY2thZ2VJbXBsIHRoZUFsbG9jYXRpb25zUGFja2FnZSA9IChBbGxvY2F0aW9uc1BhY2thZ2VJbXBsKShFUGFja2FnZS5SZWdpc3RyeS5JTlNUQU5DRS5nZXRFUGFja2FnZShBbGxvY2F0aW9uc1BhY2thZ2UuZU5TX1VSSSkgaW5zdGFuY2VvZiBBbGxvY2F0aW9uc1BhY2thZ2VJbXBsID8gRVBhY2thZ2UuUmVnaXN0cnkuSU5TVEFOQ0UuZ2V0RVBhY2thZ2UoQWxsb2NhdGlvbnNQYWNrYWdlLmVOU19VUkkpIDogQWxsb2NhdGlvbnNQYWNrYWdlLmVJTlNUQU5DRSk7DQorCQlEZXByZWNhdGVkZWxlbWVudHNQYWNrYWdlSW1wbCB0aGVEZXByZWNhdGVkZWxlbWVudHNQYWNrYWdlID0gKERlcHJlY2F0ZWRlbGVtZW50c1BhY2thZ2VJbXBsKShFUGFja2FnZS5SZWdpc3RyeS5JTlNUQU5DRS5nZXRFUGFja2FnZShEZXByZWNhdGVkZWxlbWVudHNQYWNrYWdlLmVOU19VUkkpIGluc3RhbmNlb2YgRGVwcmVjYXRlZGVsZW1lbnRzUGFja2FnZUltcGwgPyBFUGFja2FnZS5SZWdpc3RyeS5JTlNUQU5DRS5nZXRFUGFja2FnZShEZXByZWNhdGVkZWxlbWVudHNQYWNrYWdlLmVOU19VUkkpIDogRGVwcmVjYXRlZGVsZW1lbnRzUGFja2FnZS5lSU5TVEFOQ0UpOw0KKw0KKwkJLy8gQ3JlYXRlIHBhY2thZ2UgbWV0YS1kYXRhIG9iamVjdHMNCisJCXRoZVJlcXVpcmVtZW50c1BhY2thZ2UuY3JlYXRlUGFja2FnZUNvbnRlbnRzKCk7DQorCQl0aGVCbG9ja3NQYWNrYWdlLmNyZWF0ZVBhY2thZ2VDb250ZW50cygpOw0KKwkJdGhlUG9ydGFuZGZsb3dzUGFja2FnZS5jcmVhdGVQYWNrYWdlQ29udGVudHMoKTsNCisJCXRoZUFjdGl2aXRpZXNQYWNrYWdlLmNyZWF0ZVBhY2thZ2VDb250ZW50cygpOw0KKwkJdGhlTW9kZWxlbGVtZW50c1BhY2thZ2UuY3JlYXRlUGFja2FnZUNvbnRlbnRzKCk7DQorCQl0aGVDb25zdHJhaW50YmxvY2tzUGFja2FnZS5jcmVhdGVQYWNrYWdlQ29udGVudHMoKTsNCisJCXRoZUFsbG9jYXRpb25zUGFja2FnZS5jcmVhdGVQYWNrYWdlQ29udGVudHMoKTsNCisJCXRoZURlcHJlY2F0ZWRlbGVtZW50c1BhY2thZ2UuY3JlYXRlUGFja2FnZUNvbnRlbnRzKCk7DQorDQorCQkvLyBJbml0aWFsaXplIGNyZWF0ZWQgbWV0YS1kYXRhDQorCQl0aGVSZXF1aXJlbWVudHNQYWNrYWdlLmluaXRpYWxpemVQYWNrYWdlQ29udGVudHMoKTsNCisJCXRoZUJsb2Nrc1BhY2thZ2UuaW5pdGlhbGl6ZVBhY2thZ2VDb250ZW50cygpOw0KKwkJdGhlUG9ydGFuZGZsb3dzUGFja2FnZS5pbml0aWFsaXplUGFja2FnZUNvbnRlbnRzKCk7DQorCQl0aGVBY3Rpdml0aWVzUGFja2FnZS5pbml0aWFsaXplUGFja2FnZUNvbnRlbnRzKCk7DQorCQl0aGVNb2RlbGVsZW1lbnRzUGFja2FnZS5pbml0aWFsaXplUGFja2FnZUNvbnRlbnRzKCk7DQorCQl0aGVDb25zdHJhaW50YmxvY2tzUGFja2FnZS5pbml0aWFsaXplUGFja2FnZUNvbnRlbnRzKCk7DQorCQl0aGVBbGxvY2F0aW9uc1BhY2thZ2UuaW5pdGlhbGl6ZVBhY2thZ2VDb250ZW50cygpOw0KKwkJdGhlRGVwcmVjYXRlZGVsZW1lbnRzUGFja2FnZS5pbml0aWFsaXplUGFja2FnZUNvbnRlbnRzKCk7DQorDQorCQkvLyBNYXJrIG1ldGEtZGF0YSB0byBpbmRpY2F0ZSBpdCBjYW4ndCBiZSBjaGFuZ2VkDQorCQl0aGVSZXF1aXJlbWVudHNQYWNrYWdlLmZyZWV6ZSgpOw0KKw0KKyAgDQorCQkvLyBVcGRhdGUgdGhlIHJlZ2lzdHJ5IGFuZCByZXR1cm4gdGhlIHBhY2thZ2UNCisJCUVQYWNrYWdlLlJlZ2lzdHJ5LklOU1RBTkNFLnB1dChSZXF1aXJlbWVudHNQYWNrYWdlLmVOU19VUkksIHRoZVJlcXVpcmVtZW50c1BhY2thZ2UpOw0KKwkJcmV0dXJuIHRoZVJlcXVpcmVtZW50c1BhY2thZ2U7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgRUNsYXNzIGdldERlcml2ZVJlcXQoKSB7DQorCQlyZXR1cm4gZGVyaXZlUmVxdEVDbGFzczsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBFQ2xhc3MgZ2V0VHJhY2UoKSB7DQorCQlyZXR1cm4gdHJhY2VFQ2xhc3M7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgRU9wZXJhdGlvbiBnZXRUcmFjZV9fR2V0VHJhY2VkRnJvbV9fTmFtZWRFbGVtZW50KCkgew0KKwkJcmV0dXJuIHRyYWNlRUNsYXNzLmdldEVPcGVyYXRpb25zKCkuZ2V0KDApOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIEVDbGFzcyBnZXRSZXF1aXJlbWVudCgpIHsNCisJCXJldHVybiByZXF1aXJlbWVudEVDbGFzczsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBFUmVmZXJlbmNlIGdldFJlcXVpcmVtZW50X0Jhc2VfQ2xhc3MoKSB7DQorCQlyZXR1cm4gKEVSZWZlcmVuY2UpcmVxdWlyZW1lbnRFQ2xhc3MuZ2V0RVN0cnVjdHVyYWxGZWF0dXJlcygpLmdldCgwKTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBFQXR0cmlidXRlIGdldFJlcXVpcmVtZW50X1RleHQoKSB7DQorCQlyZXR1cm4gKEVBdHRyaWJ1dGUpcmVxdWlyZW1lbnRFQ2xhc3MuZ2V0RVN0cnVjdHVyYWxGZWF0dXJlcygpLmdldCgxKTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBFQXR0cmlidXRlIGdldFJlcXVpcmVtZW50X0lkKCkgew0KKwkJcmV0dXJuIChFQXR0cmlidXRlKXJlcXVpcmVtZW50RUNsYXNzLmdldEVTdHJ1Y3R1cmFsRmVhdHVyZXMoKS5nZXQoMik7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgRVJlZmVyZW5jZSBnZXRSZXF1aXJlbWVudF9EZXJpdmVkKCkgew0KKwkJcmV0dXJuIChFUmVmZXJlbmNlKXJlcXVpcmVtZW50RUNsYXNzLmdldEVTdHJ1Y3R1cmFsRmVhdHVyZXMoKS5nZXQoMyk7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgRVJlZmVyZW5jZSBnZXRSZXF1aXJlbWVudF9EZXJpdmVkRnJvbSgpIHsNCisJCXJldHVybiAoRVJlZmVyZW5jZSlyZXF1aXJlbWVudEVDbGFzcy5nZXRFU3RydWN0dXJhbEZlYXR1cmVzKCkuZ2V0KDQpOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIEVSZWZlcmVuY2UgZ2V0UmVxdWlyZW1lbnRfU2F0aXNmaWVkQnkoKSB7DQorCQlyZXR1cm4gKEVSZWZlcmVuY2UpcmVxdWlyZW1lbnRFQ2xhc3MuZ2V0RVN0cnVjdHVyYWxGZWF0dXJlcygpLmdldCg1KTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBFUmVmZXJlbmNlIGdldFJlcXVpcmVtZW50X1JlZmluZWRCeSgpIHsNCisJCXJldHVybiAoRVJlZmVyZW5jZSlyZXF1aXJlbWVudEVDbGFzcy5nZXRFU3RydWN0dXJhbEZlYXR1cmVzKCkuZ2V0KDYpOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIEVSZWZlcmVuY2UgZ2V0UmVxdWlyZW1lbnRfVHJhY2VkVG8oKSB7DQorCQlyZXR1cm4gKEVSZWZlcmVuY2UpcmVxdWlyZW1lbnRFQ2xhc3MuZ2V0RVN0cnVjdHVyYWxGZWF0dXJlcygpLmdldCg3KTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBFUmVmZXJlbmNlIGdldFJlcXVpcmVtZW50X1ZlcmlmaWVkQnkoKSB7DQorCQlyZXR1cm4gKEVSZWZlcmVuY2UpcmVxdWlyZW1lbnRFQ2xhc3MuZ2V0RVN0cnVjdHVyYWxGZWF0dXJlcygpLmdldCg4KTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBFUmVmZXJlbmNlIGdldFJlcXVpcmVtZW50X01hc3RlcigpIHsNCisJCXJldHVybiAoRVJlZmVyZW5jZSlyZXF1aXJlbWVudEVDbGFzcy5nZXRFU3RydWN0dXJhbEZlYXR1cmVzKCkuZ2V0KDkpOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIEVDbGFzcyBnZXRDb3B5KCkgew0KKwkJcmV0dXJuIGNvcHlFQ2xhc3M7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgRUNsYXNzIGdldFNhdGlzZnkoKSB7DQorCQlyZXR1cm4gc2F0aXNmeUVDbGFzczsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBFT3BlcmF0aW9uIGdldFNhdGlzZnlfX0dldFNhdGlzZmllc19fTmFtZWRFbGVtZW50KCkgew0KKwkJcmV0dXJuIHNhdGlzZnlFQ2xhc3MuZ2V0RU9wZXJhdGlvbnMoKS5nZXQoMCk7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgRUNsYXNzIGdldFRlc3RDYXNlKCkgew0KKwkJcmV0dXJuIHRlc3RDYXNlRUNsYXNzOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIEVSZWZlcmVuY2UgZ2V0VGVzdENhc2VfQmFzZV9PcGVyYXRpb24oKSB7DQorCQlyZXR1cm4gKEVSZWZlcmVuY2UpdGVzdENhc2VFQ2xhc3MuZ2V0RVN0cnVjdHVyYWxGZWF0dXJlcygpLmdldCgwKTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBFUmVmZXJlbmNlIGdldFRlc3RDYXNlX0Jhc2VfQmVoYXZpb3IoKSB7DQorCQlyZXR1cm4gKEVSZWZlcmVuY2UpdGVzdENhc2VFQ2xhc3MuZ2V0RVN0cnVjdHVyYWxGZWF0dXJlcygpLmdldCgxKTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBFQ2xhc3MgZ2V0VmVyaWZ5KCkgew0KKwkJcmV0dXJuIHZlcmlmeUVDbGFzczsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBFT3BlcmF0aW9uIGdldFZlcmlmeV9fR2V0VmVyaWZpZXNfX05hbWVkRWxlbWVudCgpIHsNCisJCXJldHVybiB2ZXJpZnlFQ2xhc3MuZ2V0RU9wZXJhdGlvbnMoKS5nZXQoMCk7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgRUNsYXNzIGdldFJlZmluZSgpIHsNCisJCXJldHVybiByZWZpbmVFQ2xhc3M7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgRU9wZXJhdGlvbiBnZXRSZWZpbmVfX0dldFJlZmluZXNfX05hbWVkRWxlbWVudCgpIHsNCisJCXJldHVybiByZWZpbmVFQ2xhc3MuZ2V0RU9wZXJhdGlvbnMoKS5nZXQoMCk7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgUmVxdWlyZW1lbnRzRmFjdG9yeSBnZXRSZXF1aXJlbWVudHNGYWN0b3J5KCkgew0KKwkJcmV0dXJuIChSZXF1aXJlbWVudHNGYWN0b3J5KWdldEVGYWN0b3J5SW5zdGFuY2UoKTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXByaXZhdGUgYm9vbGVhbiBpc0NyZWF0ZWQgPSBmYWxzZTsNCisNCisJLyoqDQorCSAqIENyZWF0ZXMgdGhlIG1ldGEtbW9kZWwgb2JqZWN0cyBmb3IgdGhlIHBhY2thZ2UuICBUaGlzIG1ldGhvZCBpcw0KKwkgKiBndWFyZGVkIHRvIGhhdmUgbm8gYWZmZWN0IG9uIGFueSBpbnZvY2F0aW9uIGJ1dCBpdHMgZmlyc3QuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgdm9pZCBjcmVhdGVQYWNrYWdlQ29udGVudHMoKSB7DQorCQlpZiAoaXNDcmVhdGVkKSByZXR1cm47DQorCQlpc0NyZWF0ZWQgPSB0cnVlOw0KKw0KKwkJLy8gQ3JlYXRlIGNsYXNzZXMgYW5kIHRoZWlyIGZlYXR1cmVzDQorCQlkZXJpdmVSZXF0RUNsYXNzID0gY3JlYXRlRUNsYXNzKERFUklWRV9SRVFUKTsNCisNCisJCXRyYWNlRUNsYXNzID0gY3JlYXRlRUNsYXNzKFRSQUNFKTsNCisJCWNyZWF0ZUVPcGVyYXRpb24odHJhY2VFQ2xhc3MsIFRSQUNFX19fR0VUX1RSQUNFRF9GUk9NX19OQU1FREVMRU1FTlQpOw0KKw0KKwkJcmVxdWlyZW1lbnRFQ2xhc3MgPSBjcmVhdGVFQ2xhc3MoUkVRVUlSRU1FTlQpOw0KKwkJY3JlYXRlRVJlZmVyZW5jZShyZXF1aXJlbWVudEVDbGFzcywgUkVRVUlSRU1FTlRfX0JBU0VfQ0xBU1MpOw0KKwkJY3JlYXRlRUF0dHJpYnV0ZShyZXF1aXJlbWVudEVDbGFzcywgUkVRVUlSRU1FTlRfX1RFWFQpOw0KKwkJY3JlYXRlRUF0dHJpYnV0ZShyZXF1aXJlbWVudEVDbGFzcywgUkVRVUlSRU1FTlRfX0lEKTsNCisJCWNyZWF0ZUVSZWZlcmVuY2UocmVxdWlyZW1lbnRFQ2xhc3MsIFJFUVVJUkVNRU5UX19ERVJJVkVEKTsNCisJCWNyZWF0ZUVSZWZlcmVuY2UocmVxdWlyZW1lbnRFQ2xhc3MsIFJFUVVJUkVNRU5UX19ERVJJVkVEX0ZST00pOw0KKwkJY3JlYXRlRVJlZmVyZW5jZShyZXF1aXJlbWVudEVDbGFzcywgUkVRVUlSRU1FTlRfX1NBVElTRklFRF9CWSk7DQorCQljcmVhdGVFUmVmZXJlbmNlKHJlcXVpcmVtZW50RUNsYXNzLCBSRVFVSVJFTUVOVF9fUkVGSU5FRF9CWSk7DQorCQljcmVhdGVFUmVmZXJlbmNlKHJlcXVpcmVtZW50RUNsYXNzLCBSRVFVSVJFTUVOVF9fVFJBQ0VEX1RPKTsNCisJCWNyZWF0ZUVSZWZlcmVuY2UocmVxdWlyZW1lbnRFQ2xhc3MsIFJFUVVJUkVNRU5UX19WRVJJRklFRF9CWSk7DQorCQljcmVhdGVFUmVmZXJlbmNlKHJlcXVpcmVtZW50RUNsYXNzLCBSRVFVSVJFTUVOVF9fTUFTVEVSKTsNCisNCisJCWNvcHlFQ2xhc3MgPSBjcmVhdGVFQ2xhc3MoQ09QWSk7DQorDQorCQlzYXRpc2Z5RUNsYXNzID0gY3JlYXRlRUNsYXNzKFNBVElTRlkpOw0KKwkJY3JlYXRlRU9wZXJhdGlvbihzYXRpc2Z5RUNsYXNzLCBTQVRJU0ZZX19fR0VUX1NBVElTRklFU19fTkFNRURFTEVNRU5UKTsNCisNCisJCXRlc3RDYXNlRUNsYXNzID0gY3JlYXRlRUNsYXNzKFRFU1RfQ0FTRSk7DQorCQljcmVhdGVFUmVmZXJlbmNlKHRlc3RDYXNlRUNsYXNzLCBURVNUX0NBU0VfX0JBU0VfT1BFUkFUSU9OKTsNCisJCWNyZWF0ZUVSZWZlcmVuY2UodGVzdENhc2VFQ2xhc3MsIFRFU1RfQ0FTRV9fQkFTRV9CRUhBVklPUik7DQorDQorCQl2ZXJpZnlFQ2xhc3MgPSBjcmVhdGVFQ2xhc3MoVkVSSUZZKTsNCisJCWNyZWF0ZUVPcGVyYXRpb24odmVyaWZ5RUNsYXNzLCBWRVJJRllfX19HRVRfVkVSSUZJRVNfX05BTUVERUxFTUVOVCk7DQorDQorCQlyZWZpbmVFQ2xhc3MgPSBjcmVhdGVFQ2xhc3MoUkVGSU5FKTsNCisJCWNyZWF0ZUVPcGVyYXRpb24ocmVmaW5lRUNsYXNzLCBSRUZJTkVfX19HRVRfUkVGSU5FU19fTkFNRURFTEVNRU5UKTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXByaXZhdGUgYm9vbGVhbiBpc0luaXRpYWxpemVkID0gZmFsc2U7DQorDQorCS8qKg0KKwkgKiBDb21wbGV0ZSB0aGUgaW5pdGlhbGl6YXRpb24gb2YgdGhlIHBhY2thZ2UgYW5kIGl0cyBtZXRhLW1vZGVsLiAgVGhpcw0KKwkgKiBtZXRob2QgaXMgZ3VhcmRlZCB0byBoYXZlIG5vIGFmZmVjdCBvbiBhbnkgaW52b2NhdGlvbiBidXQgaXRzIGZpcnN0Lg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIHZvaWQgaW5pdGlhbGl6ZVBhY2thZ2VDb250ZW50cygpIHsNCisJCWlmIChpc0luaXRpYWxpemVkKSByZXR1cm47DQorCQlpc0luaXRpYWxpemVkID0gdHJ1ZTsNCisNCisJCS8vIEluaXRpYWxpemUgcGFja2FnZQ0KKwkJc2V0TmFtZShlTkFNRSk7DQorCQlzZXROc1ByZWZpeChlTlNfUFJFRklYKTsNCisJCXNldE5zVVJJKGVOU19VUkkpOw0KKw0KKwkJLy8gT2J0YWluIG90aGVyIGRlcGVuZGVudCBwYWNrYWdlcw0KKwkJQmxvY2tzUGFja2FnZSB0aGVCbG9ja3NQYWNrYWdlID0gKEJsb2Nrc1BhY2thZ2UpRVBhY2thZ2UuUmVnaXN0cnkuSU5TVEFOQ0UuZ2V0RVBhY2thZ2UoQmxvY2tzUGFja2FnZS5lTlNfVVJJKTsNCisJCVN0YW5kYXJkUGFja2FnZSB0aGVTdGFuZGFyZFBhY2thZ2UgPSAoU3RhbmRhcmRQYWNrYWdlKUVQYWNrYWdlLlJlZ2lzdHJ5LklOU1RBTkNFLmdldEVQYWNrYWdlKFN0YW5kYXJkUGFja2FnZS5lTlNfVVJJKTsNCisJCVVNTFBhY2thZ2UgdGhlVU1MUGFja2FnZSA9IChVTUxQYWNrYWdlKUVQYWNrYWdlLlJlZ2lzdHJ5LklOU1RBTkNFLmdldEVQYWNrYWdlKFVNTFBhY2thZ2UuZU5TX1VSSSk7DQorCQlUeXBlc1BhY2thZ2UgdGhlVHlwZXNQYWNrYWdlID0gKFR5cGVzUGFja2FnZSlFUGFja2FnZS5SZWdpc3RyeS5JTlNUQU5DRS5nZXRFUGFja2FnZShUeXBlc1BhY2thZ2UuZU5TX1VSSSk7DQorDQorCQkvLyBDcmVhdGUgdHlwZSBwYXJhbWV0ZXJzDQorDQorCQkvLyBTZXQgYm91bmRzIGZvciB0eXBlIHBhcmFtZXRlcnMNCisNCisJCS8vIEFkZCBzdXBlcnR5cGVzIHRvIGNsYXNzZXMNCisJCWRlcml2ZVJlcXRFQ2xhc3MuZ2V0RVN1cGVyVHlwZXMoKS5hZGQodGhpcy5nZXRUcmFjZSgpKTsNCisJCXRyYWNlRUNsYXNzLmdldEVTdXBlclR5cGVzKCkuYWRkKHRoZUJsb2Nrc1BhY2thZ2UuZ2V0RGlyZWN0ZWRSZWxhdGlvbnNoaXBQcm9wZXJ0eVBhdGgoKSk7DQorCQl0cmFjZUVDbGFzcy5nZXRFU3VwZXJUeXBlcygpLmFkZCh0aGVTdGFuZGFyZFBhY2thZ2UuZ2V0VHJhY2UoKSk7DQorCQljb3B5RUNsYXNzLmdldEVTdXBlclR5cGVzKCkuYWRkKHRoaXMuZ2V0VHJhY2UoKSk7DQorCQlzYXRpc2Z5RUNsYXNzLmdldEVTdXBlclR5cGVzKCkuYWRkKHRoaXMuZ2V0VHJhY2UoKSk7DQorCQl2ZXJpZnlFQ2xhc3MuZ2V0RVN1cGVyVHlwZXMoKS5hZGQodGhpcy5nZXRUcmFjZSgpKTsNCisJCXJlZmluZUVDbGFzcy5nZXRFU3VwZXJUeXBlcygpLmFkZCh0aGVCbG9ja3NQYWNrYWdlLmdldERpcmVjdGVkUmVsYXRpb25zaGlwUHJvcGVydHlQYXRoKCkpOw0KKwkJcmVmaW5lRUNsYXNzLmdldEVTdXBlclR5cGVzKCkuYWRkKHRoZVN0YW5kYXJkUGFja2FnZS5nZXRSZWZpbmUoKSk7DQorDQorCQkvLyBJbml0aWFsaXplIGNsYXNzZXMsIGZlYXR1cmVzLCBhbmQgb3BlcmF0aW9uczsgYWRkIHBhcmFtZXRlcnMNCisJCWluaXRFQ2xhc3MoZGVyaXZlUmVxdEVDbGFzcywgRGVyaXZlUmVxdC5jbGFzcywgIkRlcml2ZVJlcXQiLCAhSVNfQUJTVFJBQ1QsICFJU19JTlRFUkZBQ0UsIElTX0dFTkVSQVRFRF9JTlNUQU5DRV9DTEFTUyk7IC8vJE5PTi1OTFMtMSQNCisNCisJCWluaXRFQ2xhc3ModHJhY2VFQ2xhc3MsIFRyYWNlLmNsYXNzLCAiVHJhY2UiLCAhSVNfQUJTVFJBQ1QsICFJU19JTlRFUkZBQ0UsIElTX0dFTkVSQVRFRF9JTlNUQU5DRV9DTEFTUyk7IC8vJE5PTi1OTFMtMSQNCisNCisJCUVPcGVyYXRpb24gb3AgPSBpbml0RU9wZXJhdGlvbihnZXRUcmFjZV9fR2V0VHJhY2VkRnJvbV9fTmFtZWRFbGVtZW50KCksIHRoaXMuZ2V0UmVxdWlyZW1lbnQoKSwgImdldFRyYWNlZEZyb20iLCAxLCAtMSwgSVNfVU5JUVVFLCAhSVNfT1JERVJFRCk7IC8vJE5PTi1OTFMtMSQNCisJCWFkZEVQYXJhbWV0ZXIob3AsIHRoZVVNTFBhY2thZ2UuZ2V0TmFtZWRFbGVtZW50KCksICJyZWYiLCAxLCAxLCBJU19VTklRVUUsICFJU19PUkRFUkVEKTsgLy8kTk9OLU5MUy0xJA0KKw0KKwkJaW5pdEVDbGFzcyhyZXF1aXJlbWVudEVDbGFzcywgUmVxdWlyZW1lbnQuY2xhc3MsICJSZXF1aXJlbWVudCIsICFJU19BQlNUUkFDVCwgIUlTX0lOVEVSRkFDRSwgSVNfR0VORVJBVEVEX0lOU1RBTkNFX0NMQVNTKTsgLy8kTk9OLU5MUy0xJA0KKwkJaW5pdEVSZWZlcmVuY2UoZ2V0UmVxdWlyZW1lbnRfQmFzZV9DbGFzcygpLCB0aGVVTUxQYWNrYWdlLmdldENsYXNzXygpLCBudWxsLCAiYmFzZV9DbGFzcyIsIG51bGwsIDAsIDEsIFJlcXVpcmVtZW50LmNsYXNzLCAhSVNfVFJBTlNJRU5ULCAhSVNfVk9MQVRJTEUsIElTX0NIQU5HRUFCTEUsICFJU19DT01QT1NJVEUsIElTX1JFU09MVkVfUFJPWElFUywgIUlTX1VOU0VUVEFCTEUsIElTX1VOSVFVRSwgIUlTX0RFUklWRUQsICFJU19PUkRFUkVEKTsgLy8kTk9OLU5MUy0xJA0KKwkJaW5pdEVBdHRyaWJ1dGUoZ2V0UmVxdWlyZW1lbnRfVGV4dCgpLCB0aGVUeXBlc1BhY2thZ2UuZ2V0U3RyaW5nKCksICJ0ZXh0IiwgIiIsIDEsIDEsIFJlcXVpcmVtZW50LmNsYXNzLCAhSVNfVFJBTlNJRU5ULCAhSVNfVk9MQVRJTEUsIElTX0NIQU5HRUFCTEUsICFJU19VTlNFVFRBQkxFLCAhSVNfSUQsIElTX1VOSVFVRSwgIUlTX0RFUklWRUQsICFJU19PUkRFUkVEKTsgLy8kTk9OLU5MUy0xJCAvLyROT04tTkxTLTIkDQorCQlpbml0RUF0dHJpYnV0ZShnZXRSZXF1aXJlbWVudF9JZCgpLCB0aGVUeXBlc1BhY2thZ2UuZ2V0U3RyaW5nKCksICJpZCIsICIiLCAxLCAxLCBSZXF1aXJlbWVudC5jbGFzcywgIUlTX1RSQU5TSUVOVCwgIUlTX1ZPTEFUSUxFLCBJU19DSEFOR0VBQkxFLCAhSVNfVU5TRVRUQUJMRSwgIUlTX0lELCBJU19VTklRVUUsICFJU19ERVJJVkVELCAhSVNfT1JERVJFRCk7IC8vJE5PTi1OTFMtMSQgLy8kTk9OLU5MUy0yJA0KKwkJaW5pdEVSZWZlcmVuY2UoZ2V0UmVxdWlyZW1lbnRfRGVyaXZlZCgpLCB0aGlzLmdldFJlcXVpcmVtZW50KCksIG51bGwsICJkZXJpdmVkIiwgbnVsbCwgMCwgLTEsIFJlcXVpcmVtZW50LmNsYXNzLCBJU19UUkFOU0lFTlQsIElTX1ZPTEFUSUxFLCBJU19DSEFOR0VBQkxFLCAhSVNfQ09NUE9TSVRFLCBJU19SRVNPTFZFX1BST1hJRVMsICFJU19VTlNFVFRBQkxFLCBJU19VTklRVUUsIElTX0RFUklWRUQsICFJU19PUkRFUkVEKTsgLy8kTk9OLU5MUy0xJA0KKwkJaW5pdEVSZWZlcmVuY2UoZ2V0UmVxdWlyZW1lbnRfRGVyaXZlZEZyb20oKSwgdGhpcy5nZXRSZXF1aXJlbWVudCgpLCBudWxsLCAiZGVyaXZlZEZyb20iLCBudWxsLCAwLCAtMSwgUmVxdWlyZW1lbnQuY2xhc3MsIElTX1RSQU5TSUVOVCwgSVNfVk9MQVRJTEUsIElTX0NIQU5HRUFCTEUsICFJU19DT01QT1NJVEUsIElTX1JFU09MVkVfUFJPWElFUywgIUlTX1VOU0VUVEFCTEUsIElTX1VOSVFVRSwgSVNfREVSSVZFRCwgIUlTX09SREVSRUQpOyAvLyROT04tTkxTLTEkDQorCQlpbml0RVJlZmVyZW5jZShnZXRSZXF1aXJlbWVudF9TYXRpc2ZpZWRCeSgpLCB0aGVVTUxQYWNrYWdlLmdldE5hbWVkRWxlbWVudCgpLCBudWxsLCAic2F0aXNmaWVkQnkiLCBudWxsLCAwLCAtMSwgUmVxdWlyZW1lbnQuY2xhc3MsIElTX1RSQU5TSUVOVCwgSVNfVk9MQVRJTEUsIElTX0NIQU5HRUFCTEUsICFJU19DT01QT1NJVEUsIElTX1JFU09MVkVfUFJPWElFUywgIUlTX1VOU0VUVEFCTEUsIElTX1VOSVFVRSwgSVNfREVSSVZFRCwgIUlTX09SREVSRUQpOyAvLyROT04tTkxTLTEkDQorCQlpbml0RVJlZmVyZW5jZShnZXRSZXF1aXJlbWVudF9SZWZpbmVkQnkoKSwgdGhlVU1MUGFja2FnZS5nZXROYW1lZEVsZW1lbnQoKSwgbnVsbCwgInJlZmluZWRCeSIsIG51bGwsIDAsIC0xLCBSZXF1aXJlbWVudC5jbGFzcywgSVNfVFJBTlNJRU5ULCBJU19WT0xBVElMRSwgSVNfQ0hBTkdFQUJMRSwgIUlTX0NPTVBPU0lURSwgSVNfUkVTT0xWRV9QUk9YSUVTLCAhSVNfVU5TRVRUQUJMRSwgSVNfVU5JUVVFLCBJU19ERVJJVkVELCAhSVNfT1JERVJFRCk7IC8vJE5PTi1OTFMtMSQNCisJCWluaXRFUmVmZXJlbmNlKGdldFJlcXVpcmVtZW50X1RyYWNlZFRvKCksIHRoZVVNTFBhY2thZ2UuZ2V0TmFtZWRFbGVtZW50KCksIG51bGwsICJ0cmFjZWRUbyIsIG51bGwsIDAsIC0xLCBSZXF1aXJlbWVudC5jbGFzcywgSVNfVFJBTlNJRU5ULCBJU19WT0xBVElMRSwgSVNfQ0hBTkdFQUJMRSwgIUlTX0NPTVBPU0lURSwgSVNfUkVTT0xWRV9QUk9YSUVTLCAhSVNfVU5TRVRUQUJMRSwgSVNfVU5JUVVFLCBJU19ERVJJVkVELCAhSVNfT1JERVJFRCk7IC8vJE5PTi1OTFMtMSQNCisJCWluaXRFUmVmZXJlbmNlKGdldFJlcXVpcmVtZW50X1ZlcmlmaWVkQnkoKSwgdGhlVU1MUGFja2FnZS5nZXROYW1lZEVsZW1lbnQoKSwgbnVsbCwgInZlcmlmaWVkQnkiLCBudWxsLCAwLCAtMSwgUmVxdWlyZW1lbnQuY2xhc3MsIElTX1RSQU5TSUVOVCwgSVNfVk9MQVRJTEUsIElTX0NIQU5HRUFCTEUsICFJU19DT01QT1NJVEUsIElTX1JFU09MVkVfUFJPWElFUywgIUlTX1VOU0VUVEFCTEUsIElTX1VOSVFVRSwgSVNfREVSSVZFRCwgIUlTX09SREVSRUQpOyAvLyROT04tTkxTLTEkDQorCQlpbml0RVJlZmVyZW5jZShnZXRSZXF1aXJlbWVudF9NYXN0ZXIoKSwgdGhpcy5nZXRSZXF1aXJlbWVudCgpLCBudWxsLCAibWFzdGVyIiwgbnVsbCwgMCwgMSwgUmVxdWlyZW1lbnQuY2xhc3MsIElTX1RSQU5TSUVOVCwgSVNfVk9MQVRJTEUsIElTX0NIQU5HRUFCTEUsICFJU19DT01QT1NJVEUsIElTX1JFU09MVkVfUFJPWElFUywgIUlTX1VOU0VUVEFCTEUsIElTX1VOSVFVRSwgSVNfREVSSVZFRCwgIUlTX09SREVSRUQpOyAvLyROT04tTkxTLTEkDQorDQorCQlpbml0RUNsYXNzKGNvcHlFQ2xhc3MsIENvcHkuY2xhc3MsICJDb3B5IiwgIUlTX0FCU1RSQUNULCAhSVNfSU5URVJGQUNFLCBJU19HRU5FUkFURURfSU5TVEFOQ0VfQ0xBU1MpOyAvLyROT04tTkxTLTEkDQorDQorCQlpbml0RUNsYXNzKHNhdGlzZnlFQ2xhc3MsIFNhdGlzZnkuY2xhc3MsICJTYXRpc2Z5IiwgIUlTX0FCU1RSQUNULCAhSVNfSU5URVJGQUNFLCBJU19HRU5FUkFURURfSU5TVEFOQ0VfQ0xBU1MpOyAvLyROT04tTkxTLTEkDQorDQorCQlvcCA9IGluaXRFT3BlcmF0aW9uKGdldFNhdGlzZnlfX0dldFNhdGlzZmllc19fTmFtZWRFbGVtZW50KCksIHRoaXMuZ2V0UmVxdWlyZW1lbnQoKSwgImdldFNhdGlzZmllcyIsIDEsIC0xLCBJU19VTklRVUUsICFJU19PUkRFUkVEKTsgLy8kTk9OLU5MUy0xJA0KKwkJYWRkRVBhcmFtZXRlcihvcCwgdGhlVU1MUGFja2FnZS5nZXROYW1lZEVsZW1lbnQoKSwgInJlZiIsIDEsIDEsIElTX1VOSVFVRSwgIUlTX09SREVSRUQpOyAvLyROT04tTkxTLTEkDQorDQorCQlpbml0RUNsYXNzKHRlc3RDYXNlRUNsYXNzLCBUZXN0Q2FzZS5jbGFzcywgIlRlc3RDYXNlIiwgIUlTX0FCU1RSQUNULCAhSVNfSU5URVJGQUNFLCBJU19HRU5FUkFURURfSU5TVEFOQ0VfQ0xBU1MpOyAvLyROT04tTkxTLTEkDQorCQlpbml0RVJlZmVyZW5jZShnZXRUZXN0Q2FzZV9CYXNlX09wZXJhdGlvbigpLCB0aGVVTUxQYWNrYWdlLmdldE9wZXJhdGlvbigpLCBudWxsLCAiYmFzZV9PcGVyYXRpb24iLCBudWxsLCAwLCAxLCBUZXN0Q2FzZS5jbGFzcywgIUlTX1RSQU5TSUVOVCwgIUlTX1ZPTEFUSUxFLCBJU19DSEFOR0VBQkxFLCAhSVNfQ09NUE9TSVRFLCBJU19SRVNPTFZFX1BST1hJRVMsICFJU19VTlNFVFRBQkxFLCBJU19VTklRVUUsICFJU19ERVJJVkVELCAhSVNfT1JERVJFRCk7IC8vJE5PTi1OTFMtMSQNCisJCWluaXRFUmVmZXJlbmNlKGdldFRlc3RDYXNlX0Jhc2VfQmVoYXZpb3IoKSwgdGhlVU1MUGFja2FnZS5nZXRCZWhhdmlvcigpLCBudWxsLCAiYmFzZV9CZWhhdmlvciIsIG51bGwsIDAsIDEsIFRlc3RDYXNlLmNsYXNzLCAhSVNfVFJBTlNJRU5ULCAhSVNfVk9MQVRJTEUsIElTX0NIQU5HRUFCTEUsICFJU19DT01QT1NJVEUsIElTX1JFU09MVkVfUFJPWElFUywgIUlTX1VOU0VUVEFCTEUsIElTX1VOSVFVRSwgIUlTX0RFUklWRUQsICFJU19PUkRFUkVEKTsgLy8kTk9OLU5MUy0xJA0KKw0KKwkJaW5pdEVDbGFzcyh2ZXJpZnlFQ2xhc3MsIFZlcmlmeS5jbGFzcywgIlZlcmlmeSIsICFJU19BQlNUUkFDVCwgIUlTX0lOVEVSRkFDRSwgSVNfR0VORVJBVEVEX0lOU1RBTkNFX0NMQVNTKTsgLy8kTk9OLU5MUy0xJA0KKw0KKwkJb3AgPSBpbml0RU9wZXJhdGlvbihnZXRWZXJpZnlfX0dldFZlcmlmaWVzX19OYW1lZEVsZW1lbnQoKSwgdGhpcy5nZXRSZXF1aXJlbWVudCgpLCAiZ2V0VmVyaWZpZXMiLCAxLCAtMSwgSVNfVU5JUVVFLCAhSVNfT1JERVJFRCk7IC8vJE5PTi1OTFMtMSQNCisJCWFkZEVQYXJhbWV0ZXIob3AsIHRoZVVNTFBhY2thZ2UuZ2V0TmFtZWRFbGVtZW50KCksICJyZWYiLCAxLCAxLCBJU19VTklRVUUsICFJU19PUkRFUkVEKTsgLy8kTk9OLU5MUy0xJA0KKw0KKwkJaW5pdEVDbGFzcyhyZWZpbmVFQ2xhc3MsIFJlZmluZS5jbGFzcywgIlJlZmluZSIsICFJU19BQlNUUkFDVCwgIUlTX0lOVEVSRkFDRSwgSVNfR0VORVJBVEVEX0lOU1RBTkNFX0NMQVNTKTsgLy8kTk9OLU5MUy0xJA0KKw0KKwkJb3AgPSBpbml0RU9wZXJhdGlvbihnZXRSZWZpbmVfX0dldFJlZmluZXNfX05hbWVkRWxlbWVudCgpLCB0aGlzLmdldFJlcXVpcmVtZW50KCksICJnZXRSZWZpbmVzIiwgMSwgLTEsIElTX1VOSVFVRSwgIUlTX09SREVSRUQpOyAvLyROT04tTkxTLTEkDQorCQlhZGRFUGFyYW1ldGVyKG9wLCB0aGVVTUxQYWNrYWdlLmdldE5hbWVkRWxlbWVudCgpLCAicmVmIiwgMSwgMSwgSVNfVU5JUVVFLCAhSVNfT1JERVJFRCk7IC8vJE5PTi1OTFMtMSQNCisNCisJCS8vIENyZWF0ZSByZXNvdXJjZQ0KKwkJY3JlYXRlUmVzb3VyY2UoZU5TX1VSSSk7DQorDQorCQkvLyBDcmVhdGUgYW5ub3RhdGlvbnMNCisJCS8vIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvdW1sMi8yLjAuMC9VTUwNCisJCWNyZWF0ZVVNTEFubm90YXRpb25zKCk7DQorCX0NCisNCisJLyoqDQorCSAqIEluaXRpYWxpemVzIHRoZSBhbm5vdGF0aW9ucyBmb3IgPGI+aHR0cDovL3d3dy5lY2xpcHNlLm9yZy91bWwyLzIuMC4wL1VNTDwvYj4uDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwcm90ZWN0ZWQgdm9pZCBjcmVhdGVVTUxBbm5vdGF0aW9ucygpIHsNCisJCVN0cmluZyBzb3VyY2UgPSAiaHR0cDovL3d3dy5lY2xpcHNlLm9yZy91bWwyLzIuMC4wL1VNTCI7IC8vJE5PTi1OTFMtMSQJDQorCQlhZGRBbm5vdGF0aW9uDQorCQkgICh0aGlzLCANCisJCSAgIHNvdXJjZSwgDQorCQkgICBuZXcgU3RyaW5nW10gew0KKwkJCSAib3JpZ2luYWxOYW1lIiwgIlJlcXVpcmVtZW50cyIgLy8kTk9OLU5MUy0xJCAvLyROT04tTkxTLTIkDQorCQkgICB9KTsNCisJfQ0KKw0KK30gLy9SZXF1aXJlbWVudHNQYWNrYWdlSW1wbA0KZGlmZiAtLWdpdCBhL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L3JlcXVpcmVtZW50cy9pbnRlcm5hbC9pbXBsL1NhdGlzZnlJbXBsLmphdmEgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9yZXF1aXJlbWVudHMvaW50ZXJuYWwvaW1wbC9TYXRpc2Z5SW1wbC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRhYzE5MDAKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9yZXF1aXJlbWVudHMvaW50ZXJuYWwvaW1wbC9TYXRpc2Z5SW1wbC5qYXZhCkBAIC0wLDAgKzEsNzcgQEAKKy8qKg0KKyAqIENvcHlyaWdodCAoYykgMjAxNSBDRUEgTElTVC4NCisgKiANCisgKiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KKyAqICBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCisgKiAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCisgKiAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgKi8NCitwYWNrYWdlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5yZXF1aXJlbWVudHMuaW50ZXJuYWwuaW1wbDsNCisNCitpbXBvcnQgamF2YS5sYW5nLnJlZmxlY3QuSW52b2NhdGlvblRhcmdldEV4Y2VwdGlvbjsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi51dGlsLkVMaXN0Ow0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRUNsYXNzOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucmVxdWlyZW1lbnRzLlJlcXVpcmVtZW50Ow0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucmVxdWlyZW1lbnRzLlJlcXVpcmVtZW50c1BhY2thZ2U7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5yZXF1aXJlbWVudHMuU2F0aXNmeTsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UudW1sMi51bWwuTmFtZWRFbGVtZW50Ow0KKw0KKy8qKg0KKyAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorICogQW4gaW1wbGVtZW50YXRpb24gb2YgdGhlIG1vZGVsIG9iamVjdCAnPGVtPjxiPlNhdGlzZnk8L2I+PC9lbT4nLg0KKyAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKyAqIDxwPg0KKyAqIDwvcD4NCisgKg0KKyAqIEBnZW5lcmF0ZWQNCisgKi8NCitwdWJsaWMgY2xhc3MgU2F0aXNmeUltcGwgZXh0ZW5kcyBUcmFjZUltcGwgaW1wbGVtZW50cyBTYXRpc2Z5IHsNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwcm90ZWN0ZWQgU2F0aXNmeUltcGwoKSB7DQorCQlzdXBlcigpOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXByb3RlY3RlZCBFQ2xhc3MgZVN0YXRpY0NsYXNzKCkgew0KKwkJcmV0dXJuIFJlcXVpcmVtZW50c1BhY2thZ2UuTGl0ZXJhbHMuU0FUSVNGWTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBFTGlzdDxSZXF1aXJlbWVudD4gZ2V0U2F0aXNmaWVzKE5hbWVkRWxlbWVudCByZWYpIHsNCisJCS8vIFRPRE86IGltcGxlbWVudCB0aGlzIG1ldGhvZA0KKwkJLy8gRW5zdXJlIHRoYXQgeW91IHJlbW92ZSBAZ2VuZXJhdGVkIG9yIG1hcmsgaXQgQGdlbmVyYXRlZCBOT1QNCisJCXRocm93IG5ldyBVbnN1cHBvcnRlZE9wZXJhdGlvbkV4Y2VwdGlvbigpOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXB1YmxpYyBPYmplY3QgZUludm9rZShpbnQgb3BlcmF0aW9uSUQsIEVMaXN0PD8+IGFyZ3VtZW50cykgdGhyb3dzIEludm9jYXRpb25UYXJnZXRFeGNlcHRpb24gew0KKwkJc3dpdGNoIChvcGVyYXRpb25JRCkgew0KKwkJCWNhc2UgUmVxdWlyZW1lbnRzUGFja2FnZS5TQVRJU0ZZX19fR0VUX1NBVElTRklFU19fTkFNRURFTEVNRU5UOg0KKwkJCQlyZXR1cm4gZ2V0U2F0aXNmaWVzKChOYW1lZEVsZW1lbnQpYXJndW1lbnRzLmdldCgwKSk7DQorCQl9DQorCQlyZXR1cm4gc3VwZXIuZUludm9rZShvcGVyYXRpb25JRCwgYXJndW1lbnRzKTsNCisJfQ0KKw0KK30gLy9TYXRpc2Z5SW1wbA0KZGlmZiAtLWdpdCBhL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L3JlcXVpcmVtZW50cy9pbnRlcm5hbC9pbXBsL1Rlc3RDYXNlSW1wbC5qYXZhIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvcmVxdWlyZW1lbnRzL2ludGVybmFsL2ltcGwvVGVzdENhc2VJbXBsLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjkwYWJjOAotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L3JlcXVpcmVtZW50cy9pbnRlcm5hbC9pbXBsL1Rlc3RDYXNlSW1wbC5qYXZhCkBAIC0wLDAgKzEsMjI1IEBACisvKioNCisgKiBDb3B5cmlnaHQgKGMpIDIwMTUgQ0VBIExJU1QuDQorICogDQorICogIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCisgKiAgYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQorICogIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQorICogIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICovDQorcGFja2FnZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucmVxdWlyZW1lbnRzLmludGVybmFsLmltcGw7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jb21tb24ubm90aWZ5Lk5vdGlmaWNhdGlvbjsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVDbGFzczsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkludGVybmFsRU9iamVjdDsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLmltcGwuRU5vdGlmaWNhdGlvbkltcGw7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5pbXBsLk1pbmltYWxFT2JqZWN0SW1wbDsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnJlcXVpcmVtZW50cy5SZXF1aXJlbWVudHNQYWNrYWdlOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucmVxdWlyZW1lbnRzLlRlc3RDYXNlOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS51bWwyLnVtbC5CZWhhdmlvcjsNCitpbXBvcnQgb3JnLmVjbGlwc2UudW1sMi51bWwuT3BlcmF0aW9uOw0KKw0KKy8qKg0KKyAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorICogQW4gaW1wbGVtZW50YXRpb24gb2YgdGhlIG1vZGVsIG9iamVjdCAnPGVtPjxiPlRlc3QgQ2FzZTwvYj48L2VtPicuDQorICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorICogPHA+DQorICogVGhlIGZvbGxvd2luZyBmZWF0dXJlcyBhcmUgaW1wbGVtZW50ZWQ6DQorICogPHVsPg0KKyAqICAgPGxpPntAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucmVxdWlyZW1lbnRzLmludGVybmFsLmltcGwuVGVzdENhc2VJbXBsI2dldEJhc2VfT3BlcmF0aW9uIDxlbT5CYXNlIE9wZXJhdGlvbjwvZW0+fTwvbGk+DQorICogICA8bGk+e0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5yZXF1aXJlbWVudHMuaW50ZXJuYWwuaW1wbC5UZXN0Q2FzZUltcGwjZ2V0QmFzZV9CZWhhdmlvciA8ZW0+QmFzZSBCZWhhdmlvcjwvZW0+fTwvbGk+DQorICogPC91bD4NCisgKiA8L3A+DQorICoNCisgKiBAZ2VuZXJhdGVkDQorICovDQorcHVibGljIGNsYXNzIFRlc3RDYXNlSW1wbCBleHRlbmRzIE1pbmltYWxFT2JqZWN0SW1wbC5Db250YWluZXIgaW1wbGVtZW50cyBUZXN0Q2FzZSB7DQorCS8qKg0KKwkgKiBUaGUgY2FjaGVkIHZhbHVlIG9mIHRoZSAne0BsaW5rICNnZXRCYXNlX09wZXJhdGlvbigpIDxlbT5CYXNlIE9wZXJhdGlvbjwvZW0+fScgcmVmZXJlbmNlLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHNlZSAjZ2V0QmFzZV9PcGVyYXRpb24oKQ0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqIEBvcmRlcmVkDQorCSAqLw0KKwlwcm90ZWN0ZWQgT3BlcmF0aW9uIGJhc2VfT3BlcmF0aW9uOw0KKw0KKwkvKioNCisJICogVGhlIGNhY2hlZCB2YWx1ZSBvZiB0aGUgJ3tAbGluayAjZ2V0QmFzZV9CZWhhdmlvcigpIDxlbT5CYXNlIEJlaGF2aW9yPC9lbT59JyByZWZlcmVuY2UuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAc2VlICNnZXRCYXNlX0JlaGF2aW9yKCkNCisJICogQGdlbmVyYXRlZA0KKwkgKiBAb3JkZXJlZA0KKwkgKi8NCisJcHJvdGVjdGVkIEJlaGF2aW9yIGJhc2VfQmVoYXZpb3I7DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHJvdGVjdGVkIFRlc3RDYXNlSW1wbCgpIHsNCisJCXN1cGVyKCk7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHJvdGVjdGVkIEVDbGFzcyBlU3RhdGljQ2xhc3MoKSB7DQorCQlyZXR1cm4gUmVxdWlyZW1lbnRzUGFja2FnZS5MaXRlcmFscy5URVNUX0NBU0U7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgT3BlcmF0aW9uIGdldEJhc2VfT3BlcmF0aW9uKCkgew0KKwkJaWYgKGJhc2VfT3BlcmF0aW9uICE9IG51bGwgJiYgYmFzZV9PcGVyYXRpb24uZUlzUHJveHkoKSkgew0KKwkJCUludGVybmFsRU9iamVjdCBvbGRCYXNlX09wZXJhdGlvbiA9IChJbnRlcm5hbEVPYmplY3QpYmFzZV9PcGVyYXRpb247DQorCQkJYmFzZV9PcGVyYXRpb24gPSAoT3BlcmF0aW9uKWVSZXNvbHZlUHJveHkob2xkQmFzZV9PcGVyYXRpb24pOw0KKwkJCWlmIChiYXNlX09wZXJhdGlvbiAhPSBvbGRCYXNlX09wZXJhdGlvbikgew0KKwkJCQlpZiAoZU5vdGlmaWNhdGlvblJlcXVpcmVkKCkpDQorCQkJCQllTm90aWZ5KG5ldyBFTm90aWZpY2F0aW9uSW1wbCh0aGlzLCBOb3RpZmljYXRpb24uUkVTT0xWRSwgUmVxdWlyZW1lbnRzUGFja2FnZS5URVNUX0NBU0VfX0JBU0VfT1BFUkFUSU9OLCBvbGRCYXNlX09wZXJhdGlvbiwgYmFzZV9PcGVyYXRpb24pKTsNCisJCQl9DQorCQl9DQorCQlyZXR1cm4gYmFzZV9PcGVyYXRpb247DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgT3BlcmF0aW9uIGJhc2ljR2V0QmFzZV9PcGVyYXRpb24oKSB7DQorCQlyZXR1cm4gYmFzZV9PcGVyYXRpb247DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgdm9pZCBzZXRCYXNlX09wZXJhdGlvbihPcGVyYXRpb24gbmV3QmFzZV9PcGVyYXRpb24pIHsNCisJCU9wZXJhdGlvbiBvbGRCYXNlX09wZXJhdGlvbiA9IGJhc2VfT3BlcmF0aW9uOw0KKwkJYmFzZV9PcGVyYXRpb24gPSBuZXdCYXNlX09wZXJhdGlvbjsNCisJCWlmIChlTm90aWZpY2F0aW9uUmVxdWlyZWQoKSkNCisJCQllTm90aWZ5KG5ldyBFTm90aWZpY2F0aW9uSW1wbCh0aGlzLCBOb3RpZmljYXRpb24uU0VULCBSZXF1aXJlbWVudHNQYWNrYWdlLlRFU1RfQ0FTRV9fQkFTRV9PUEVSQVRJT04sIG9sZEJhc2VfT3BlcmF0aW9uLCBiYXNlX09wZXJhdGlvbikpOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIEJlaGF2aW9yIGdldEJhc2VfQmVoYXZpb3IoKSB7DQorCQlpZiAoYmFzZV9CZWhhdmlvciAhPSBudWxsICYmIGJhc2VfQmVoYXZpb3IuZUlzUHJveHkoKSkgew0KKwkJCUludGVybmFsRU9iamVjdCBvbGRCYXNlX0JlaGF2aW9yID0gKEludGVybmFsRU9iamVjdCliYXNlX0JlaGF2aW9yOw0KKwkJCWJhc2VfQmVoYXZpb3IgPSAoQmVoYXZpb3IpZVJlc29sdmVQcm94eShvbGRCYXNlX0JlaGF2aW9yKTsNCisJCQlpZiAoYmFzZV9CZWhhdmlvciAhPSBvbGRCYXNlX0JlaGF2aW9yKSB7DQorCQkJCWlmIChlTm90aWZpY2F0aW9uUmVxdWlyZWQoKSkNCisJCQkJCWVOb3RpZnkobmV3IEVOb3RpZmljYXRpb25JbXBsKHRoaXMsIE5vdGlmaWNhdGlvbi5SRVNPTFZFLCBSZXF1aXJlbWVudHNQYWNrYWdlLlRFU1RfQ0FTRV9fQkFTRV9CRUhBVklPUiwgb2xkQmFzZV9CZWhhdmlvciwgYmFzZV9CZWhhdmlvcikpOw0KKwkJCX0NCisJCX0NCisJCXJldHVybiBiYXNlX0JlaGF2aW9yOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIEJlaGF2aW9yIGJhc2ljR2V0QmFzZV9CZWhhdmlvcigpIHsNCisJCXJldHVybiBiYXNlX0JlaGF2aW9yOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIHZvaWQgc2V0QmFzZV9CZWhhdmlvcihCZWhhdmlvciBuZXdCYXNlX0JlaGF2aW9yKSB7DQorCQlCZWhhdmlvciBvbGRCYXNlX0JlaGF2aW9yID0gYmFzZV9CZWhhdmlvcjsNCisJCWJhc2VfQmVoYXZpb3IgPSBuZXdCYXNlX0JlaGF2aW9yOw0KKwkJaWYgKGVOb3RpZmljYXRpb25SZXF1aXJlZCgpKQ0KKwkJCWVOb3RpZnkobmV3IEVOb3RpZmljYXRpb25JbXBsKHRoaXMsIE5vdGlmaWNhdGlvbi5TRVQsIFJlcXVpcmVtZW50c1BhY2thZ2UuVEVTVF9DQVNFX19CQVNFX0JFSEFWSU9SLCBvbGRCYXNlX0JlaGF2aW9yLCBiYXNlX0JlaGF2aW9yKSk7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIE9iamVjdCBlR2V0KGludCBmZWF0dXJlSUQsIGJvb2xlYW4gcmVzb2x2ZSwgYm9vbGVhbiBjb3JlVHlwZSkgew0KKwkJc3dpdGNoIChmZWF0dXJlSUQpIHsNCisJCQljYXNlIFJlcXVpcmVtZW50c1BhY2thZ2UuVEVTVF9DQVNFX19CQVNFX09QRVJBVElPTjoNCisJCQkJaWYgKHJlc29sdmUpIHJldHVybiBnZXRCYXNlX09wZXJhdGlvbigpOw0KKwkJCQlyZXR1cm4gYmFzaWNHZXRCYXNlX09wZXJhdGlvbigpOw0KKwkJCWNhc2UgUmVxdWlyZW1lbnRzUGFja2FnZS5URVNUX0NBU0VfX0JBU0VfQkVIQVZJT1I6DQorCQkJCWlmIChyZXNvbHZlKSByZXR1cm4gZ2V0QmFzZV9CZWhhdmlvcigpOw0KKwkJCQlyZXR1cm4gYmFzaWNHZXRCYXNlX0JlaGF2aW9yKCk7DQorCQl9DQorCQlyZXR1cm4gc3VwZXIuZUdldChmZWF0dXJlSUQsIHJlc29sdmUsIGNvcmVUeXBlKTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgdm9pZCBlU2V0KGludCBmZWF0dXJlSUQsIE9iamVjdCBuZXdWYWx1ZSkgew0KKwkJc3dpdGNoIChmZWF0dXJlSUQpIHsNCisJCQljYXNlIFJlcXVpcmVtZW50c1BhY2thZ2UuVEVTVF9DQVNFX19CQVNFX09QRVJBVElPTjoNCisJCQkJc2V0QmFzZV9PcGVyYXRpb24oKE9wZXJhdGlvbiluZXdWYWx1ZSk7DQorCQkJCXJldHVybjsNCisJCQljYXNlIFJlcXVpcmVtZW50c1BhY2thZ2UuVEVTVF9DQVNFX19CQVNFX0JFSEFWSU9SOg0KKwkJCQlzZXRCYXNlX0JlaGF2aW9yKChCZWhhdmlvciluZXdWYWx1ZSk7DQorCQkJCXJldHVybjsNCisJCX0NCisJCXN1cGVyLmVTZXQoZmVhdHVyZUlELCBuZXdWYWx1ZSk7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIHZvaWQgZVVuc2V0KGludCBmZWF0dXJlSUQpIHsNCisJCXN3aXRjaCAoZmVhdHVyZUlEKSB7DQorCQkJY2FzZSBSZXF1aXJlbWVudHNQYWNrYWdlLlRFU1RfQ0FTRV9fQkFTRV9PUEVSQVRJT046DQorCQkJCXNldEJhc2VfT3BlcmF0aW9uKChPcGVyYXRpb24pbnVsbCk7DQorCQkJCXJldHVybjsNCisJCQljYXNlIFJlcXVpcmVtZW50c1BhY2thZ2UuVEVTVF9DQVNFX19CQVNFX0JFSEFWSU9SOg0KKwkJCQlzZXRCYXNlX0JlaGF2aW9yKChCZWhhdmlvciludWxsKTsNCisJCQkJcmV0dXJuOw0KKwkJfQ0KKwkJc3VwZXIuZVVuc2V0KGZlYXR1cmVJRCk7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIGJvb2xlYW4gZUlzU2V0KGludCBmZWF0dXJlSUQpIHsNCisJCXN3aXRjaCAoZmVhdHVyZUlEKSB7DQorCQkJY2FzZSBSZXF1aXJlbWVudHNQYWNrYWdlLlRFU1RfQ0FTRV9fQkFTRV9PUEVSQVRJT046DQorCQkJCXJldHVybiBiYXNlX09wZXJhdGlvbiAhPSBudWxsOw0KKwkJCWNhc2UgUmVxdWlyZW1lbnRzUGFja2FnZS5URVNUX0NBU0VfX0JBU0VfQkVIQVZJT1I6DQorCQkJCXJldHVybiBiYXNlX0JlaGF2aW9yICE9IG51bGw7DQorCQl9DQorCQlyZXR1cm4gc3VwZXIuZUlzU2V0KGZlYXR1cmVJRCk7DQorCX0NCisNCit9IC8vVGVzdENhc2VJbXBsDQpkaWZmIC0tZ2l0IGEvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvcmVxdWlyZW1lbnRzL2ludGVybmFsL2ltcGwvVHJhY2VJbXBsLmphdmEgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9yZXF1aXJlbWVudHMvaW50ZXJuYWwvaW1wbC9UcmFjZUltcGwuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMGE3ZmViCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvcmVxdWlyZW1lbnRzL2ludGVybmFsL2ltcGwvVHJhY2VJbXBsLmphdmEKQEAgLTAsMCArMSwyMzAgQEAKKy8qKg0KKyAqIENvcHlyaWdodCAoYykgMjAxNSBDRUEgTElTVC4NCisgKiANCisgKiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KKyAqICBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCisgKiAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCisgKiAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgKi8NCitwYWNrYWdlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5yZXF1aXJlbWVudHMuaW50ZXJuYWwuaW1wbDsNCisNCitpbXBvcnQgamF2YS5sYW5nLnJlZmxlY3QuSW52b2NhdGlvblRhcmdldEV4Y2VwdGlvbjsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi5ub3RpZnkuTm90aWZpY2F0aW9uOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY29tbW9uLnV0aWwuRUxpc3Q7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FQ2xhc3M7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5JbnRlcm5hbEVPYmplY3Q7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5pbXBsLkVOb3RpZmljYXRpb25JbXBsOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYmxvY2tzLmludGVybmFsLmltcGwuRGlyZWN0ZWRSZWxhdGlvbnNoaXBQcm9wZXJ0eVBhdGhJbXBsOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucmVxdWlyZW1lbnRzLlJlcXVpcmVtZW50Ow0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucmVxdWlyZW1lbnRzLlJlcXVpcmVtZW50c1BhY2thZ2U7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5yZXF1aXJlbWVudHMuVHJhY2U7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLnVtbDIudW1sLkFic3RyYWN0aW9uOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS51bWwyLnVtbC5OYW1lZEVsZW1lbnQ7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLnVtbDIudW1sLnByb2ZpbGUuc3RhbmRhcmQuU3RhbmRhcmRQYWNrYWdlOw0KKw0KKy8qKg0KKyAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorICogQW4gaW1wbGVtZW50YXRpb24gb2YgdGhlIG1vZGVsIG9iamVjdCAnPGVtPjxiPlRyYWNlPC9iPjwvZW0+Jy4NCisgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisgKiA8cD4NCisgKiBUaGUgZm9sbG93aW5nIGZlYXR1cmVzIGFyZSBpbXBsZW1lbnRlZDoNCisgKiA8dWw+DQorICogICA8bGk+e0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5yZXF1aXJlbWVudHMuaW50ZXJuYWwuaW1wbC5UcmFjZUltcGwjZ2V0QmFzZV9BYnN0cmFjdGlvbiA8ZW0+QmFzZSBBYnN0cmFjdGlvbjwvZW0+fTwvbGk+DQorICogPC91bD4NCisgKiA8L3A+DQorICoNCisgKiBAZ2VuZXJhdGVkDQorICovDQorcHVibGljIGNsYXNzIFRyYWNlSW1wbCBleHRlbmRzIERpcmVjdGVkUmVsYXRpb25zaGlwUHJvcGVydHlQYXRoSW1wbCBpbXBsZW1lbnRzIFRyYWNlIHsNCisJLyoqDQorCSAqIFRoZSBjYWNoZWQgdmFsdWUgb2YgdGhlICd7QGxpbmsgI2dldEJhc2VfQWJzdHJhY3Rpb24oKSA8ZW0+QmFzZSBBYnN0cmFjdGlvbjwvZW0+fScgcmVmZXJlbmNlLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHNlZSAjZ2V0QmFzZV9BYnN0cmFjdGlvbigpDQorCSAqIEBnZW5lcmF0ZWQNCisJICogQG9yZGVyZWQNCisJICovDQorCXByb3RlY3RlZCBBYnN0cmFjdGlvbiBiYXNlX0Fic3RyYWN0aW9uOw0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXByb3RlY3RlZCBUcmFjZUltcGwoKSB7DQorCQlzdXBlcigpOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXByb3RlY3RlZCBFQ2xhc3MgZVN0YXRpY0NsYXNzKCkgew0KKwkJcmV0dXJuIFJlcXVpcmVtZW50c1BhY2thZ2UuTGl0ZXJhbHMuVFJBQ0U7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgQWJzdHJhY3Rpb24gZ2V0QmFzZV9BYnN0cmFjdGlvbigpIHsNCisJCWlmIChiYXNlX0Fic3RyYWN0aW9uICE9IG51bGwgJiYgYmFzZV9BYnN0cmFjdGlvbi5lSXNQcm94eSgpKSB7DQorCQkJSW50ZXJuYWxFT2JqZWN0IG9sZEJhc2VfQWJzdHJhY3Rpb24gPSAoSW50ZXJuYWxFT2JqZWN0KWJhc2VfQWJzdHJhY3Rpb247DQorCQkJYmFzZV9BYnN0cmFjdGlvbiA9IChBYnN0cmFjdGlvbillUmVzb2x2ZVByb3h5KG9sZEJhc2VfQWJzdHJhY3Rpb24pOw0KKwkJCWlmIChiYXNlX0Fic3RyYWN0aW9uICE9IG9sZEJhc2VfQWJzdHJhY3Rpb24pIHsNCisJCQkJaWYgKGVOb3RpZmljYXRpb25SZXF1aXJlZCgpKQ0KKwkJCQkJZU5vdGlmeShuZXcgRU5vdGlmaWNhdGlvbkltcGwodGhpcywgTm90aWZpY2F0aW9uLlJFU09MVkUsIFJlcXVpcmVtZW50c1BhY2thZ2UuVFJBQ0VfX0JBU0VfQUJTVFJBQ1RJT04sIG9sZEJhc2VfQWJzdHJhY3Rpb24sIGJhc2VfQWJzdHJhY3Rpb24pKTsNCisJCQl9DQorCQl9DQorCQlyZXR1cm4gYmFzZV9BYnN0cmFjdGlvbjsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBBYnN0cmFjdGlvbiBiYXNpY0dldEJhc2VfQWJzdHJhY3Rpb24oKSB7DQorCQlyZXR1cm4gYmFzZV9BYnN0cmFjdGlvbjsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyB2b2lkIHNldEJhc2VfQWJzdHJhY3Rpb24oQWJzdHJhY3Rpb24gbmV3QmFzZV9BYnN0cmFjdGlvbikgew0KKwkJQWJzdHJhY3Rpb24gb2xkQmFzZV9BYnN0cmFjdGlvbiA9IGJhc2VfQWJzdHJhY3Rpb247DQorCQliYXNlX0Fic3RyYWN0aW9uID0gbmV3QmFzZV9BYnN0cmFjdGlvbjsNCisJCWlmIChlTm90aWZpY2F0aW9uUmVxdWlyZWQoKSkNCisJCQllTm90aWZ5KG5ldyBFTm90aWZpY2F0aW9uSW1wbCh0aGlzLCBOb3RpZmljYXRpb24uU0VULCBSZXF1aXJlbWVudHNQYWNrYWdlLlRSQUNFX19CQVNFX0FCU1RSQUNUSU9OLCBvbGRCYXNlX0Fic3RyYWN0aW9uLCBiYXNlX0Fic3RyYWN0aW9uKSk7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgRUxpc3Q8UmVxdWlyZW1lbnQ+IGdldFRyYWNlZEZyb20oTmFtZWRFbGVtZW50IHJlZikgew0KKwkJLy8gVE9ETzogaW1wbGVtZW50IHRoaXMgbWV0aG9kDQorCQkvLyBFbnN1cmUgdGhhdCB5b3UgcmVtb3ZlIEBnZW5lcmF0ZWQgb3IgbWFyayBpdCBAZ2VuZXJhdGVkIE5PVA0KKwkJdGhyb3cgbmV3IFVuc3VwcG9ydGVkT3BlcmF0aW9uRXhjZXB0aW9uKCk7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIE9iamVjdCBlR2V0KGludCBmZWF0dXJlSUQsIGJvb2xlYW4gcmVzb2x2ZSwgYm9vbGVhbiBjb3JlVHlwZSkgew0KKwkJc3dpdGNoIChmZWF0dXJlSUQpIHsNCisJCQljYXNlIFJlcXVpcmVtZW50c1BhY2thZ2UuVFJBQ0VfX0JBU0VfQUJTVFJBQ1RJT046DQorCQkJCWlmIChyZXNvbHZlKSByZXR1cm4gZ2V0QmFzZV9BYnN0cmFjdGlvbigpOw0KKwkJCQlyZXR1cm4gYmFzaWNHZXRCYXNlX0Fic3RyYWN0aW9uKCk7DQorCQl9DQorCQlyZXR1cm4gc3VwZXIuZUdldChmZWF0dXJlSUQsIHJlc29sdmUsIGNvcmVUeXBlKTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgdm9pZCBlU2V0KGludCBmZWF0dXJlSUQsIE9iamVjdCBuZXdWYWx1ZSkgew0KKwkJc3dpdGNoIChmZWF0dXJlSUQpIHsNCisJCQljYXNlIFJlcXVpcmVtZW50c1BhY2thZ2UuVFJBQ0VfX0JBU0VfQUJTVFJBQ1RJT046DQorCQkJCXNldEJhc2VfQWJzdHJhY3Rpb24oKEFic3RyYWN0aW9uKW5ld1ZhbHVlKTsNCisJCQkJcmV0dXJuOw0KKwkJfQ0KKwkJc3VwZXIuZVNldChmZWF0dXJlSUQsIG5ld1ZhbHVlKTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgdm9pZCBlVW5zZXQoaW50IGZlYXR1cmVJRCkgew0KKwkJc3dpdGNoIChmZWF0dXJlSUQpIHsNCisJCQljYXNlIFJlcXVpcmVtZW50c1BhY2thZ2UuVFJBQ0VfX0JBU0VfQUJTVFJBQ1RJT046DQorCQkJCXNldEJhc2VfQWJzdHJhY3Rpb24oKEFic3RyYWN0aW9uKW51bGwpOw0KKwkJCQlyZXR1cm47DQorCQl9DQorCQlzdXBlci5lVW5zZXQoZmVhdHVyZUlEKTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgYm9vbGVhbiBlSXNTZXQoaW50IGZlYXR1cmVJRCkgew0KKwkJc3dpdGNoIChmZWF0dXJlSUQpIHsNCisJCQljYXNlIFJlcXVpcmVtZW50c1BhY2thZ2UuVFJBQ0VfX0JBU0VfQUJTVFJBQ1RJT046DQorCQkJCXJldHVybiBiYXNlX0Fic3RyYWN0aW9uICE9IG51bGw7DQorCQl9DQorCQlyZXR1cm4gc3VwZXIuZUlzU2V0KGZlYXR1cmVJRCk7DQorCX0NCisNCisJLyoqDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIGludCBlQmFzZVN0cnVjdHVyYWxGZWF0dXJlSUQoaW50IGRlcml2ZWRGZWF0dXJlSUQsIENsYXNzPD8+IGJhc2VDbGFzcykgew0KKwkJaWYgKGJhc2VDbGFzcyA9PSBvcmcuZWNsaXBzZS51bWwyLnVtbC5wcm9maWxlLnN0YW5kYXJkLlRyYWNlLmNsYXNzKSB7DQorCQkJc3dpdGNoIChkZXJpdmVkRmVhdHVyZUlEKSB7DQorCQkJCWNhc2UgUmVxdWlyZW1lbnRzUGFja2FnZS5UUkFDRV9fQkFTRV9BQlNUUkFDVElPTjogcmV0dXJuIFN0YW5kYXJkUGFja2FnZS5UUkFDRV9fQkFTRV9BQlNUUkFDVElPTjsNCisJCQkJZGVmYXVsdDogcmV0dXJuIC0xOw0KKwkJCX0NCisJCX0NCisJCXJldHVybiBzdXBlci5lQmFzZVN0cnVjdHVyYWxGZWF0dXJlSUQoZGVyaXZlZEZlYXR1cmVJRCwgYmFzZUNsYXNzKTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgaW50IGVEZXJpdmVkU3RydWN0dXJhbEZlYXR1cmVJRChpbnQgYmFzZUZlYXR1cmVJRCwgQ2xhc3M8Pz4gYmFzZUNsYXNzKSB7DQorCQlpZiAoYmFzZUNsYXNzID09IG9yZy5lY2xpcHNlLnVtbDIudW1sLnByb2ZpbGUuc3RhbmRhcmQuVHJhY2UuY2xhc3MpIHsNCisJCQlzd2l0Y2ggKGJhc2VGZWF0dXJlSUQpIHsNCisJCQkJY2FzZSBTdGFuZGFyZFBhY2thZ2UuVFJBQ0VfX0JBU0VfQUJTVFJBQ1RJT046IHJldHVybiBSZXF1aXJlbWVudHNQYWNrYWdlLlRSQUNFX19CQVNFX0FCU1RSQUNUSU9OOw0KKwkJCQlkZWZhdWx0OiByZXR1cm4gLTE7DQorCQkJfQ0KKwkJfQ0KKwkJcmV0dXJuIHN1cGVyLmVEZXJpdmVkU3RydWN0dXJhbEZlYXR1cmVJRChiYXNlRmVhdHVyZUlELCBiYXNlQ2xhc3MpOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXB1YmxpYyBPYmplY3QgZUludm9rZShpbnQgb3BlcmF0aW9uSUQsIEVMaXN0PD8+IGFyZ3VtZW50cykgdGhyb3dzIEludm9jYXRpb25UYXJnZXRFeGNlcHRpb24gew0KKwkJc3dpdGNoIChvcGVyYXRpb25JRCkgew0KKwkJCWNhc2UgUmVxdWlyZW1lbnRzUGFja2FnZS5UUkFDRV9fX0dFVF9UUkFDRURfRlJPTV9fTkFNRURFTEVNRU5UOg0KKwkJCQlyZXR1cm4gZ2V0VHJhY2VkRnJvbSgoTmFtZWRFbGVtZW50KWFyZ3VtZW50cy5nZXQoMCkpOw0KKwkJfQ0KKwkJcmV0dXJuIHN1cGVyLmVJbnZva2Uob3BlcmF0aW9uSUQsIGFyZ3VtZW50cyk7DQorCX0NCisNCit9IC8vVHJhY2VJbXBsDQpkaWZmIC0tZ2l0IGEvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvcmVxdWlyZW1lbnRzL2ludGVybmFsL2ltcGwvVmVyaWZ5SW1wbC5qYXZhIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvcmVxdWlyZW1lbnRzL2ludGVybmFsL2ltcGwvVmVyaWZ5SW1wbC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ5OTRhZmQKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9yZXF1aXJlbWVudHMvaW50ZXJuYWwvaW1wbC9WZXJpZnlJbXBsLmphdmEKQEAgLTAsMCArMSw3NyBAQAorLyoqDQorICogQ29weXJpZ2h0IChjKSAyMDE1IENFQSBMSVNULg0KKyAqIA0KKyAqICBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQorICogIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KKyAqICB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KKyAqICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqLw0KK3BhY2thZ2Ugb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnJlcXVpcmVtZW50cy5pbnRlcm5hbC5pbXBsOw0KKw0KK2ltcG9ydCBqYXZhLmxhbmcucmVmbGVjdC5JbnZvY2F0aW9uVGFyZ2V0RXhjZXB0aW9uOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY29tbW9uLnV0aWwuRUxpc3Q7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FQ2xhc3M7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5yZXF1aXJlbWVudHMuUmVxdWlyZW1lbnQ7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5yZXF1aXJlbWVudHMuUmVxdWlyZW1lbnRzUGFja2FnZTsNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnJlcXVpcmVtZW50cy5WZXJpZnk7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLnVtbDIudW1sLk5hbWVkRWxlbWVudDsNCisNCisvKioNCisgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKyAqIEFuIGltcGxlbWVudGF0aW9uIG9mIHRoZSBtb2RlbCBvYmplY3QgJzxlbT48Yj5WZXJpZnk8L2I+PC9lbT4nLg0KKyAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKyAqIDxwPg0KKyAqIDwvcD4NCisgKg0KKyAqIEBnZW5lcmF0ZWQNCisgKi8NCitwdWJsaWMgY2xhc3MgVmVyaWZ5SW1wbCBleHRlbmRzIFRyYWNlSW1wbCBpbXBsZW1lbnRzIFZlcmlmeSB7DQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHJvdGVjdGVkIFZlcmlmeUltcGwoKSB7DQorCQlzdXBlcigpOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXByb3RlY3RlZCBFQ2xhc3MgZVN0YXRpY0NsYXNzKCkgew0KKwkJcmV0dXJuIFJlcXVpcmVtZW50c1BhY2thZ2UuTGl0ZXJhbHMuVkVSSUZZOw0KKwl9DQorDQorCS8qKg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIEVMaXN0PFJlcXVpcmVtZW50PiBnZXRWZXJpZmllcyhOYW1lZEVsZW1lbnQgcmVmKSB7DQorCQkvLyBUT0RPOiBpbXBsZW1lbnQgdGhpcyBtZXRob2QNCisJCS8vIEVuc3VyZSB0aGF0IHlvdSByZW1vdmUgQGdlbmVyYXRlZCBvciBtYXJrIGl0IEBnZW5lcmF0ZWQgTk9UDQorCQl0aHJvdyBuZXcgVW5zdXBwb3J0ZWRPcGVyYXRpb25FeGNlcHRpb24oKTsNCisJfQ0KKw0KKwkvKioNCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgT2JqZWN0IGVJbnZva2UoaW50IG9wZXJhdGlvbklELCBFTGlzdDw/PiBhcmd1bWVudHMpIHRocm93cyBJbnZvY2F0aW9uVGFyZ2V0RXhjZXB0aW9uIHsNCisJCXN3aXRjaCAob3BlcmF0aW9uSUQpIHsNCisJCQljYXNlIFJlcXVpcmVtZW50c1BhY2thZ2UuVkVSSUZZX19fR0VUX1ZFUklGSUVTX19OQU1FREVMRU1FTlQ6DQorCQkJCXJldHVybiBnZXRWZXJpZmllcygoTmFtZWRFbGVtZW50KWFyZ3VtZW50cy5nZXQoMCkpOw0KKwkJfQ0KKwkJcmV0dXJuIHN1cGVyLmVJbnZva2Uob3BlcmF0aW9uSUQsIGFyZ3VtZW50cyk7DQorCX0NCisNCit9IC8vVmVyaWZ5SW1wbA0KZGlmZiAtLWdpdCBhL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0L3NyYy1nZW4vb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L3JlcXVpcmVtZW50cy91dGlsL1JlcXVpcmVtZW50c0FkYXB0ZXJGYWN0b3J5LmphdmEgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9yZXF1aXJlbWVudHMvdXRpbC9SZXF1aXJlbWVudHNBZGFwdGVyRmFjdG9yeS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI0YTAwMDUKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9yZXF1aXJlbWVudHMvdXRpbC9SZXF1aXJlbWVudHNBZGFwdGVyRmFjdG9yeS5qYXZhCkBAIC0wLDAgKzEsMzA4IEBACisvKioNCisgKiBDb3B5cmlnaHQgKGMpIDIwMTUgQ0VBIExJU1QuDQorICogDQorICogIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCisgKiAgYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQorICogIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQorICogIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICovDQorcGFja2FnZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucmVxdWlyZW1lbnRzLnV0aWw7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jb21tb24ubm90aWZ5LkFkYXB0ZXI7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jb21tb24ubm90aWZ5Lk5vdGlmaWVyOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY29tbW9uLm5vdGlmeS5pbXBsLkFkYXB0ZXJGYWN0b3J5SW1wbDsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVPYmplY3Q7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5ibG9ja3MuRGlyZWN0ZWRSZWxhdGlvbnNoaXBQcm9wZXJ0eVBhdGg7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5yZXF1aXJlbWVudHMuKjsNCisNCisvKioNCisgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKyAqIFRoZSA8Yj5BZGFwdGVyIEZhY3Rvcnk8L2I+IGZvciB0aGUgbW9kZWwuDQorICogSXQgcHJvdmlkZXMgYW4gYWRhcHRlciA8Y29kZT5jcmVhdGVYWFg8L2NvZGU+IG1ldGhvZCBmb3IgZWFjaCBjbGFzcyBvZiB0aGUgbW9kZWwuDQorICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucmVxdWlyZW1lbnRzLlJlcXVpcmVtZW50c1BhY2thZ2UNCisgKiBAZ2VuZXJhdGVkDQorICovDQorcHVibGljIGNsYXNzIFJlcXVpcmVtZW50c0FkYXB0ZXJGYWN0b3J5IGV4dGVuZHMgQWRhcHRlckZhY3RvcnlJbXBsIHsNCisJLyoqDQorCSAqIFRoZSBjYWNoZWQgbW9kZWwgcGFja2FnZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXByb3RlY3RlZCBzdGF0aWMgUmVxdWlyZW1lbnRzUGFja2FnZSBtb2RlbFBhY2thZ2U7DQorDQorCS8qKg0KKwkgKiBDcmVhdGVzIGFuIGluc3RhbmNlIG9mIHRoZSBhZGFwdGVyIGZhY3RvcnkuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgUmVxdWlyZW1lbnRzQWRhcHRlckZhY3RvcnkoKSB7DQorCQlpZiAobW9kZWxQYWNrYWdlID09IG51bGwpIHsNCisJCQltb2RlbFBhY2thZ2UgPSBSZXF1aXJlbWVudHNQYWNrYWdlLmVJTlNUQU5DRTsNCisJCX0NCisJfQ0KKw0KKwkvKioNCisJICogUmV0dXJucyB3aGV0aGVyIHRoaXMgZmFjdG9yeSBpcyBhcHBsaWNhYmxlIGZvciB0aGUgdHlwZSBvZiB0aGUgb2JqZWN0Lg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiBUaGlzIGltcGxlbWVudGF0aW9uIHJldHVybnMgPGNvZGU+dHJ1ZTwvY29kZT4gaWYgdGhlIG9iamVjdCBpcyBlaXRoZXIgdGhlIG1vZGVsJ3MgcGFja2FnZSBvciBpcyBhbiBpbnN0YW5jZSBvYmplY3Qgb2YgdGhlIG1vZGVsLg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHJldHVybiB3aGV0aGVyIHRoaXMgZmFjdG9yeSBpcyBhcHBsaWNhYmxlIGZvciB0aGUgdHlwZSBvZiB0aGUgb2JqZWN0Lg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIGJvb2xlYW4gaXNGYWN0b3J5Rm9yVHlwZShPYmplY3Qgb2JqZWN0KSB7DQorCQlpZiAob2JqZWN0ID09IG1vZGVsUGFja2FnZSkgew0KKwkJCXJldHVybiB0cnVlOw0KKwkJfQ0KKwkJaWYgKG9iamVjdCBpbnN0YW5jZW9mIEVPYmplY3QpIHsNCisJCQlyZXR1cm4gKChFT2JqZWN0KW9iamVjdCkuZUNsYXNzKCkuZ2V0RVBhY2thZ2UoKSA9PSBtb2RlbFBhY2thZ2U7DQorCQl9DQorCQlyZXR1cm4gZmFsc2U7DQorCX0NCisNCisJLyoqDQorCSAqIFRoZSBzd2l0Y2ggdGhhdCBkZWxlZ2F0ZXMgdG8gdGhlIDxjb2RlPmNyZWF0ZVhYWDwvY29kZT4gbWV0aG9kcy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXByb3RlY3RlZCBSZXF1aXJlbWVudHNTd2l0Y2g8QWRhcHRlcj4gbW9kZWxTd2l0Y2ggPQ0KKwkJbmV3IFJlcXVpcmVtZW50c1N3aXRjaDxBZGFwdGVyPigpIHsNCisJCQlAT3ZlcnJpZGUNCisJCQlwdWJsaWMgQWRhcHRlciBjYXNlRGVyaXZlUmVxdChEZXJpdmVSZXF0IG9iamVjdCkgew0KKwkJCQlyZXR1cm4gY3JlYXRlRGVyaXZlUmVxdEFkYXB0ZXIoKTsNCisJCQl9DQorCQkJQE92ZXJyaWRlDQorCQkJcHVibGljIEFkYXB0ZXIgY2FzZVRyYWNlKFRyYWNlIG9iamVjdCkgew0KKwkJCQlyZXR1cm4gY3JlYXRlVHJhY2VBZGFwdGVyKCk7DQorCQkJfQ0KKwkJCUBPdmVycmlkZQ0KKwkJCXB1YmxpYyBBZGFwdGVyIGNhc2VSZXF1aXJlbWVudChSZXF1aXJlbWVudCBvYmplY3QpIHsNCisJCQkJcmV0dXJuIGNyZWF0ZVJlcXVpcmVtZW50QWRhcHRlcigpOw0KKwkJCX0NCisJCQlAT3ZlcnJpZGUNCisJCQlwdWJsaWMgQWRhcHRlciBjYXNlQ29weShDb3B5IG9iamVjdCkgew0KKwkJCQlyZXR1cm4gY3JlYXRlQ29weUFkYXB0ZXIoKTsNCisJCQl9DQorCQkJQE92ZXJyaWRlDQorCQkJcHVibGljIEFkYXB0ZXIgY2FzZVNhdGlzZnkoU2F0aXNmeSBvYmplY3QpIHsNCisJCQkJcmV0dXJuIGNyZWF0ZVNhdGlzZnlBZGFwdGVyKCk7DQorCQkJfQ0KKwkJCUBPdmVycmlkZQ0KKwkJCXB1YmxpYyBBZGFwdGVyIGNhc2VUZXN0Q2FzZShUZXN0Q2FzZSBvYmplY3QpIHsNCisJCQkJcmV0dXJuIGNyZWF0ZVRlc3RDYXNlQWRhcHRlcigpOw0KKwkJCX0NCisJCQlAT3ZlcnJpZGUNCisJCQlwdWJsaWMgQWRhcHRlciBjYXNlVmVyaWZ5KFZlcmlmeSBvYmplY3QpIHsNCisJCQkJcmV0dXJuIGNyZWF0ZVZlcmlmeUFkYXB0ZXIoKTsNCisJCQl9DQorCQkJQE92ZXJyaWRlDQorCQkJcHVibGljIEFkYXB0ZXIgY2FzZVJlZmluZShSZWZpbmUgb2JqZWN0KSB7DQorCQkJCXJldHVybiBjcmVhdGVSZWZpbmVBZGFwdGVyKCk7DQorCQkJfQ0KKwkJCUBPdmVycmlkZQ0KKwkJCXB1YmxpYyBBZGFwdGVyIGNhc2VEaXJlY3RlZFJlbGF0aW9uc2hpcFByb3BlcnR5UGF0aChEaXJlY3RlZFJlbGF0aW9uc2hpcFByb3BlcnR5UGF0aCBvYmplY3QpIHsNCisJCQkJcmV0dXJuIGNyZWF0ZURpcmVjdGVkUmVsYXRpb25zaGlwUHJvcGVydHlQYXRoQWRhcHRlcigpOw0KKwkJCX0NCisJCQlAT3ZlcnJpZGUNCisJCQlwdWJsaWMgQWRhcHRlciBjYXNlU3RhbmRhcmRfVHJhY2Uob3JnLmVjbGlwc2UudW1sMi51bWwucHJvZmlsZS5zdGFuZGFyZC5UcmFjZSBvYmplY3QpIHsNCisJCQkJcmV0dXJuIGNyZWF0ZVN0YW5kYXJkX1RyYWNlQWRhcHRlcigpOw0KKwkJCX0NCisJCQlAT3ZlcnJpZGUNCisJCQlwdWJsaWMgQWRhcHRlciBjYXNlU3RhbmRhcmRfUmVmaW5lKG9yZy5lY2xpcHNlLnVtbDIudW1sLnByb2ZpbGUuc3RhbmRhcmQuUmVmaW5lIG9iamVjdCkgew0KKwkJCQlyZXR1cm4gY3JlYXRlU3RhbmRhcmRfUmVmaW5lQWRhcHRlcigpOw0KKwkJCX0NCisJCQlAT3ZlcnJpZGUNCisJCQlwdWJsaWMgQWRhcHRlciBkZWZhdWx0Q2FzZShFT2JqZWN0IG9iamVjdCkgew0KKwkJCQlyZXR1cm4gY3JlYXRlRU9iamVjdEFkYXB0ZXIoKTsNCisJCQl9DQorCQl9Ow0KKw0KKwkvKioNCisJICogQ3JlYXRlcyBhbiBhZGFwdGVyIGZvciB0aGUgPGNvZGU+dGFyZ2V0PC9jb2RlPi4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBwYXJhbSB0YXJnZXQgdGhlIG9iamVjdCB0byBhZGFwdC4NCisJICogQHJldHVybiB0aGUgYWRhcHRlciBmb3IgdGhlIDxjb2RlPnRhcmdldDwvY29kZT4uDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgQWRhcHRlciBjcmVhdGVBZGFwdGVyKE5vdGlmaWVyIHRhcmdldCkgew0KKwkJcmV0dXJuIG1vZGVsU3dpdGNoLmRvU3dpdGNoKChFT2JqZWN0KXRhcmdldCk7DQorCX0NCisNCisNCisJLyoqDQorCSAqIENyZWF0ZXMgYSBuZXcgYWRhcHRlciBmb3IgYW4gb2JqZWN0IG9mIGNsYXNzICd7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnJlcXVpcmVtZW50cy5EZXJpdmVSZXF0IDxlbT5EZXJpdmUgUmVxdDwvZW0+fScuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIFRoaXMgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiByZXR1cm5zIG51bGwgc28gdGhhdCB3ZSBjYW4gZWFzaWx5IGlnbm9yZSBjYXNlczsNCisJICogaXQncyB1c2VmdWwgdG8gaWdub3JlIGEgY2FzZSB3aGVuIGluaGVyaXRhbmNlIHdpbGwgY2F0Y2ggYWxsIHRoZSBjYXNlcyBhbnl3YXkuDQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAcmV0dXJuIHRoZSBuZXcgYWRhcHRlci4NCisJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucmVxdWlyZW1lbnRzLkRlcml2ZVJlcXQNCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIEFkYXB0ZXIgY3JlYXRlRGVyaXZlUmVxdEFkYXB0ZXIoKSB7DQorCQlyZXR1cm4gbnVsbDsNCisJfQ0KKw0KKwkvKioNCisJICogQ3JlYXRlcyBhIG5ldyBhZGFwdGVyIGZvciBhbiBvYmplY3Qgb2YgY2xhc3MgJ3tAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucmVxdWlyZW1lbnRzLlRyYWNlIDxlbT5UcmFjZTwvZW0+fScuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIFRoaXMgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiByZXR1cm5zIG51bGwgc28gdGhhdCB3ZSBjYW4gZWFzaWx5IGlnbm9yZSBjYXNlczsNCisJICogaXQncyB1c2VmdWwgdG8gaWdub3JlIGEgY2FzZSB3aGVuIGluaGVyaXRhbmNlIHdpbGwgY2F0Y2ggYWxsIHRoZSBjYXNlcyBhbnl3YXkuDQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAcmV0dXJuIHRoZSBuZXcgYWRhcHRlci4NCisJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucmVxdWlyZW1lbnRzLlRyYWNlDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBBZGFwdGVyIGNyZWF0ZVRyYWNlQWRhcHRlcigpIHsNCisJCXJldHVybiBudWxsOw0KKwl9DQorDQorCS8qKg0KKwkgKiBDcmVhdGVzIGEgbmV3IGFkYXB0ZXIgZm9yIGFuIG9iamVjdCBvZiBjbGFzcyAne0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5yZXF1aXJlbWVudHMuUmVxdWlyZW1lbnQgPGVtPlJlcXVpcmVtZW50PC9lbT59Jy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogVGhpcyBkZWZhdWx0IGltcGxlbWVudGF0aW9uIHJldHVybnMgbnVsbCBzbyB0aGF0IHdlIGNhbiBlYXNpbHkgaWdub3JlIGNhc2VzOw0KKwkgKiBpdCdzIHVzZWZ1bCB0byBpZ25vcmUgYSBjYXNlIHdoZW4gaW5oZXJpdGFuY2Ugd2lsbCBjYXRjaCBhbGwgdGhlIGNhc2VzIGFueXdheS4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEByZXR1cm4gdGhlIG5ldyBhZGFwdGVyLg0KKwkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5yZXF1aXJlbWVudHMuUmVxdWlyZW1lbnQNCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIEFkYXB0ZXIgY3JlYXRlUmVxdWlyZW1lbnRBZGFwdGVyKCkgew0KKwkJcmV0dXJuIG51bGw7DQorCX0NCisNCisJLyoqDQorCSAqIENyZWF0ZXMgYSBuZXcgYWRhcHRlciBmb3IgYW4gb2JqZWN0IG9mIGNsYXNzICd7QGxpbmsgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnJlcXVpcmVtZW50cy5Db3B5IDxlbT5Db3B5PC9lbT59Jy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogVGhpcyBkZWZhdWx0IGltcGxlbWVudGF0aW9uIHJldHVybnMgbnVsbCBzbyB0aGF0IHdlIGNhbiBlYXNpbHkgaWdub3JlIGNhc2VzOw0KKwkgKiBpdCdzIHVzZWZ1bCB0byBpZ25vcmUgYSBjYXNlIHdoZW4gaW5oZXJpdGFuY2Ugd2lsbCBjYXRjaCBhbGwgdGhlIGNhc2VzIGFueXdheS4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEByZXR1cm4gdGhlIG5ldyBhZGFwdGVyLg0KKwkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5yZXF1aXJlbWVudHMuQ29weQ0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgQWRhcHRlciBjcmVhdGVDb3B5QWRhcHRlcigpIHsNCisJCXJldHVybiBudWxsOw0KKwl9DQorDQorCS8qKg0KKwkgKiBDcmVhdGVzIGEgbmV3IGFkYXB0ZXIgZm9yIGFuIG9iamVjdCBvZiBjbGFzcyAne0BsaW5rIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5yZXF1aXJlbWVudHMuU2F0aXNmeSA8ZW0+U2F0aXNmeTwvZW0+fScuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIFRoaXMgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiByZXR1cm5zIG51bGwgc28gdGhhdCB3ZSBjYW4gZWFzaWx5IGlnbm9yZSBjYXNlczsNCisJICogaXQncyB1c2VmdWwgdG8gaWdub3JlIGEgY2FzZSB3aGVuIGluaGVyaXRhbmNlIHdpbGwgY2F0Y2ggYWxsIHRoZSBjYXNlcyBhbnl3YXkuDQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAcmV0dXJuIHRoZSBuZXcgYWRhcHRlci4NCisJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucmVxdWlyZW1lbnRzLlNhdGlzZnkNCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIEFkYXB0ZXIgY3JlYXRlU2F0aXNmeUFkYXB0ZXIoKSB7DQorCQlyZXR1cm4gbnVsbDsNCisJfQ0KKw0KKwkvKioNCisJICogQ3JlYXRlcyBhIG5ldyBhZGFwdGVyIGZvciBhbiBvYmplY3Qgb2YgY2xhc3MgJ3tAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucmVxdWlyZW1lbnRzLlRlc3RDYXNlIDxlbT5UZXN0IENhc2U8L2VtPn0nLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiBUaGlzIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gcmV0dXJucyBudWxsIHNvIHRoYXQgd2UgY2FuIGVhc2lseSBpZ25vcmUgY2FzZXM7DQorCSAqIGl0J3MgdXNlZnVsIHRvIGlnbm9yZSBhIGNhc2Ugd2hlbiBpbmhlcml0YW5jZSB3aWxsIGNhdGNoIGFsbCB0aGUgY2FzZXMgYW55d2F5Lg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHJldHVybiB0aGUgbmV3IGFkYXB0ZXIuDQorCSAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnJlcXVpcmVtZW50cy5UZXN0Q2FzZQ0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgQWRhcHRlciBjcmVhdGVUZXN0Q2FzZUFkYXB0ZXIoKSB7DQorCQlyZXR1cm4gbnVsbDsNCisJfQ0KKw0KKwkvKioNCisJICogQ3JlYXRlcyBhIG5ldyBhZGFwdGVyIGZvciBhbiBvYmplY3Qgb2YgY2xhc3MgJ3tAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucmVxdWlyZW1lbnRzLlZlcmlmeSA8ZW0+VmVyaWZ5PC9lbT59Jy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogVGhpcyBkZWZhdWx0IGltcGxlbWVudGF0aW9uIHJldHVybnMgbnVsbCBzbyB0aGF0IHdlIGNhbiBlYXNpbHkgaWdub3JlIGNhc2VzOw0KKwkgKiBpdCdzIHVzZWZ1bCB0byBpZ25vcmUgYSBjYXNlIHdoZW4gaW5oZXJpdGFuY2Ugd2lsbCBjYXRjaCBhbGwgdGhlIGNhc2VzIGFueXdheS4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEByZXR1cm4gdGhlIG5ldyBhZGFwdGVyLg0KKwkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5yZXF1aXJlbWVudHMuVmVyaWZ5DQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBBZGFwdGVyIGNyZWF0ZVZlcmlmeUFkYXB0ZXIoKSB7DQorCQlyZXR1cm4gbnVsbDsNCisJfQ0KKw0KKwkvKioNCisJICogQ3JlYXRlcyBhIG5ldyBhZGFwdGVyIGZvciBhbiBvYmplY3Qgb2YgY2xhc3MgJ3tAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucmVxdWlyZW1lbnRzLlJlZmluZSA8ZW0+UmVmaW5lPC9lbT59Jy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogVGhpcyBkZWZhdWx0IGltcGxlbWVudGF0aW9uIHJldHVybnMgbnVsbCBzbyB0aGF0IHdlIGNhbiBlYXNpbHkgaWdub3JlIGNhc2VzOw0KKwkgKiBpdCdzIHVzZWZ1bCB0byBpZ25vcmUgYSBjYXNlIHdoZW4gaW5oZXJpdGFuY2Ugd2lsbCBjYXRjaCBhbGwgdGhlIGNhc2VzIGFueXdheS4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEByZXR1cm4gdGhlIG5ldyBhZGFwdGVyLg0KKwkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5yZXF1aXJlbWVudHMuUmVmaW5lDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBBZGFwdGVyIGNyZWF0ZVJlZmluZUFkYXB0ZXIoKSB7DQorCQlyZXR1cm4gbnVsbDsNCisJfQ0KKw0KKwkvKioNCisJICogQ3JlYXRlcyBhIG5ldyBhZGFwdGVyIGZvciBhbiBvYmplY3Qgb2YgY2xhc3MgJ3tAbGluayBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYmxvY2tzLkRpcmVjdGVkUmVsYXRpb25zaGlwUHJvcGVydHlQYXRoIDxlbT5EaXJlY3RlZCBSZWxhdGlvbnNoaXAgUHJvcGVydHkgUGF0aDwvZW0+fScuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIFRoaXMgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiByZXR1cm5zIG51bGwgc28gdGhhdCB3ZSBjYW4gZWFzaWx5IGlnbm9yZSBjYXNlczsNCisJICogaXQncyB1c2VmdWwgdG8gaWdub3JlIGEgY2FzZSB3aGVuIGluaGVyaXRhbmNlIHdpbGwgY2F0Y2ggYWxsIHRoZSBjYXNlcyBhbnl3YXkuDQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAcmV0dXJuIHRoZSBuZXcgYWRhcHRlci4NCisJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYmxvY2tzLkRpcmVjdGVkUmVsYXRpb25zaGlwUHJvcGVydHlQYXRoDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBBZGFwdGVyIGNyZWF0ZURpcmVjdGVkUmVsYXRpb25zaGlwUHJvcGVydHlQYXRoQWRhcHRlcigpIHsNCisJCXJldHVybiBudWxsOw0KKwl9DQorDQorCS8qKg0KKwkgKiBDcmVhdGVzIGEgbmV3IGFkYXB0ZXIgZm9yIGFuIG9iamVjdCBvZiBjbGFzcyAne0BsaW5rIG9yZy5lY2xpcHNlLnVtbDIudW1sLnByb2ZpbGUuc3RhbmRhcmQuVHJhY2UgPGVtPlRyYWNlPC9lbT59Jy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogVGhpcyBkZWZhdWx0IGltcGxlbWVudGF0aW9uIHJldHVybnMgbnVsbCBzbyB0aGF0IHdlIGNhbiBlYXNpbHkgaWdub3JlIGNhc2VzOw0KKwkgKiBpdCdzIHVzZWZ1bCB0byBpZ25vcmUgYSBjYXNlIHdoZW4gaW5oZXJpdGFuY2Ugd2lsbCBjYXRjaCBhbGwgdGhlIGNhc2VzIGFueXdheS4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEByZXR1cm4gdGhlIG5ldyBhZGFwdGVyLg0KKwkgKiBAc2VlIG9yZy5lY2xpcHNlLnVtbDIudW1sLnByb2ZpbGUuc3RhbmRhcmQuVHJhY2UNCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIEFkYXB0ZXIgY3JlYXRlU3RhbmRhcmRfVHJhY2VBZGFwdGVyKCkgew0KKwkJcmV0dXJuIG51bGw7DQorCX0NCisNCisJLyoqDQorCSAqIENyZWF0ZXMgYSBuZXcgYWRhcHRlciBmb3IgYW4gb2JqZWN0IG9mIGNsYXNzICd7QGxpbmsgb3JnLmVjbGlwc2UudW1sMi51bWwucHJvZmlsZS5zdGFuZGFyZC5SZWZpbmUgPGVtPlJlZmluZTwvZW0+fScuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIFRoaXMgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiByZXR1cm5zIG51bGwgc28gdGhhdCB3ZSBjYW4gZWFzaWx5IGlnbm9yZSBjYXNlczsNCisJICogaXQncyB1c2VmdWwgdG8gaWdub3JlIGEgY2FzZSB3aGVuIGluaGVyaXRhbmNlIHdpbGwgY2F0Y2ggYWxsIHRoZSBjYXNlcyBhbnl3YXkuDQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAcmV0dXJuIHRoZSBuZXcgYWRhcHRlci4NCisJICogQHNlZSBvcmcuZWNsaXBzZS51bWwyLnVtbC5wcm9maWxlLnN0YW5kYXJkLlJlZmluZQ0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgQWRhcHRlciBjcmVhdGVTdGFuZGFyZF9SZWZpbmVBZGFwdGVyKCkgew0KKwkJcmV0dXJuIG51bGw7DQorCX0NCisNCisJLyoqDQorCSAqIENyZWF0ZXMgYSBuZXcgYWRhcHRlciBmb3IgdGhlIGRlZmF1bHQgY2FzZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogVGhpcyBkZWZhdWx0IGltcGxlbWVudGF0aW9uIHJldHVybnMgbnVsbC4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEByZXR1cm4gdGhlIG5ldyBhZGFwdGVyLg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgQWRhcHRlciBjcmVhdGVFT2JqZWN0QWRhcHRlcigpIHsNCisJCXJldHVybiBudWxsOw0KKwl9DQorDQorfSAvL1JlcXVpcmVtZW50c0FkYXB0ZXJGYWN0b3J5DQpkaWZmIC0tZ2l0IGEvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvcmVxdWlyZW1lbnRzL3V0aWwvUmVxdWlyZW1lbnRzU3dpdGNoLmphdmEgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC9zcmMtZ2VuL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9yZXF1aXJlbWVudHMvdXRpbC9SZXF1aXJlbWVudHNTd2l0Y2guamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zOTg4NWQ2Ci0tLSAvZGV2L251bGwKKysrIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQvc3JjLWdlbi9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvcmVxdWlyZW1lbnRzL3V0aWwvUmVxdWlyZW1lbnRzU3dpdGNoLmphdmEKQEAgLTAsMCArMSwzMjYgQEAKKy8qKg0KKyAqIENvcHlyaWdodCAoYykgMjAxNSBDRUEgTElTVC4NCisgKiANCisgKiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KKyAqICBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCisgKiAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCisgKiAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgKi8NCitwYWNrYWdlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5yZXF1aXJlbWVudHMudXRpbDsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVPYmplY3Q7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FUGFja2FnZTsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLnV0aWwuU3dpdGNoOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYmxvY2tzLkRpcmVjdGVkUmVsYXRpb25zaGlwUHJvcGVydHlQYXRoOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucmVxdWlyZW1lbnRzLio7DQorDQorLyoqDQorICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisgKiBUaGUgPGI+U3dpdGNoPC9iPiBmb3IgdGhlIG1vZGVsJ3MgaW5oZXJpdGFuY2UgaGllcmFyY2h5Lg0KKyAqIEl0IHN1cHBvcnRzIHRoZSBjYWxsIHtAbGluayAjZG9Td2l0Y2goRU9iamVjdCkgZG9Td2l0Y2gob2JqZWN0KX0NCisgKiB0byBpbnZva2UgdGhlIDxjb2RlPmNhc2VYWFg8L2NvZGU+IG1ldGhvZCBmb3IgZWFjaCBjbGFzcyBvZiB0aGUgbW9kZWwsDQorICogc3RhcnRpbmcgd2l0aCB0aGUgYWN0dWFsIGNsYXNzIG9mIHRoZSBvYmplY3QNCisgKiBhbmQgcHJvY2VlZGluZyB1cCB0aGUgaW5oZXJpdGFuY2UgaGllcmFyY2h5DQorICogdW50aWwgYSBub24tbnVsbCByZXN1bHQgaXMgcmV0dXJuZWQsDQorICogd2hpY2ggaXMgdGhlIHJlc3VsdCBvZiB0aGUgc3dpdGNoLg0KKyAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKyAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnJlcXVpcmVtZW50cy5SZXF1aXJlbWVudHNQYWNrYWdlDQorICogQGdlbmVyYXRlZA0KKyAqLw0KK3B1YmxpYyBjbGFzcyBSZXF1aXJlbWVudHNTd2l0Y2g8VD4gZXh0ZW5kcyBTd2l0Y2g8VD4gew0KKwkvKioNCisJICogVGhlIGNhY2hlZCBtb2RlbCBwYWNrYWdlDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwcm90ZWN0ZWQgc3RhdGljIFJlcXVpcmVtZW50c1BhY2thZ2UgbW9kZWxQYWNrYWdlOw0KKw0KKwkvKioNCisJICogQ3JlYXRlcyBhbiBpbnN0YW5jZSBvZiB0aGUgc3dpdGNoLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIFJlcXVpcmVtZW50c1N3aXRjaCgpIHsNCisJCWlmIChtb2RlbFBhY2thZ2UgPT0gbnVsbCkgew0KKwkJCW1vZGVsUGFja2FnZSA9IFJlcXVpcmVtZW50c1BhY2thZ2UuZUlOU1RBTkNFOw0KKwkJfQ0KKwl9DQorDQorCS8qKg0KKwkgKiBDaGVja3Mgd2hldGhlciB0aGlzIGlzIGEgc3dpdGNoIGZvciB0aGUgZ2l2ZW4gcGFja2FnZS4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBwYXJhbSBlUGFja2FnZSB0aGUgcGFja2FnZSBpbiBxdWVzdGlvbi4NCisJICogQHJldHVybiB3aGV0aGVyIHRoaXMgaXMgYSBzd2l0Y2ggZm9yIHRoZSBnaXZlbiBwYWNrYWdlLg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHJvdGVjdGVkIGJvb2xlYW4gaXNTd2l0Y2hGb3IoRVBhY2thZ2UgZVBhY2thZ2UpIHsNCisJCXJldHVybiBlUGFja2FnZSA9PSBtb2RlbFBhY2thZ2U7DQorCX0NCisNCisJLyoqDQorCSAqIENhbGxzIDxjb2RlPmNhc2VYWFg8L2NvZGU+IGZvciBlYWNoIGNsYXNzIG9mIHRoZSBtb2RlbCB1bnRpbCBvbmUgcmV0dXJucyBhIG5vbiBudWxsIHJlc3VsdDsgaXQgeWllbGRzIHRoYXQgcmVzdWx0Lg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHJldHVybiB0aGUgZmlyc3Qgbm9uLW51bGwgcmVzdWx0IHJldHVybmVkIGJ5IGEgPGNvZGU+Y2FzZVhYWDwvY29kZT4gY2FsbC4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXByb3RlY3RlZCBUIGRvU3dpdGNoKGludCBjbGFzc2lmaWVySUQsIEVPYmplY3QgdGhlRU9iamVjdCkgew0KKwkJc3dpdGNoIChjbGFzc2lmaWVySUQpIHsNCisJCQljYXNlIFJlcXVpcmVtZW50c1BhY2thZ2UuREVSSVZFX1JFUVQ6IHsNCisJCQkJRGVyaXZlUmVxdCBkZXJpdmVSZXF0ID0gKERlcml2ZVJlcXQpdGhlRU9iamVjdDsNCisJCQkJVCByZXN1bHQgPSBjYXNlRGVyaXZlUmVxdChkZXJpdmVSZXF0KTsNCisJCQkJaWYgKHJlc3VsdCA9PSBudWxsKSByZXN1bHQgPSBjYXNlVHJhY2UoZGVyaXZlUmVxdCk7DQorCQkJCWlmIChyZXN1bHQgPT0gbnVsbCkgcmVzdWx0ID0gY2FzZURpcmVjdGVkUmVsYXRpb25zaGlwUHJvcGVydHlQYXRoKGRlcml2ZVJlcXQpOw0KKwkJCQlpZiAocmVzdWx0ID09IG51bGwpIHJlc3VsdCA9IGNhc2VTdGFuZGFyZF9UcmFjZShkZXJpdmVSZXF0KTsNCisJCQkJaWYgKHJlc3VsdCA9PSBudWxsKSByZXN1bHQgPSBkZWZhdWx0Q2FzZSh0aGVFT2JqZWN0KTsNCisJCQkJcmV0dXJuIHJlc3VsdDsNCisJCQl9DQorCQkJY2FzZSBSZXF1aXJlbWVudHNQYWNrYWdlLlRSQUNFOiB7DQorCQkJCVRyYWNlIHRyYWNlID0gKFRyYWNlKXRoZUVPYmplY3Q7DQorCQkJCVQgcmVzdWx0ID0gY2FzZVRyYWNlKHRyYWNlKTsNCisJCQkJaWYgKHJlc3VsdCA9PSBudWxsKSByZXN1bHQgPSBjYXNlRGlyZWN0ZWRSZWxhdGlvbnNoaXBQcm9wZXJ0eVBhdGgodHJhY2UpOw0KKwkJCQlpZiAocmVzdWx0ID09IG51bGwpIHJlc3VsdCA9IGNhc2VTdGFuZGFyZF9UcmFjZSh0cmFjZSk7DQorCQkJCWlmIChyZXN1bHQgPT0gbnVsbCkgcmVzdWx0ID0gZGVmYXVsdENhc2UodGhlRU9iamVjdCk7DQorCQkJCXJldHVybiByZXN1bHQ7DQorCQkJfQ0KKwkJCWNhc2UgUmVxdWlyZW1lbnRzUGFja2FnZS5SRVFVSVJFTUVOVDogew0KKwkJCQlSZXF1aXJlbWVudCByZXF1aXJlbWVudCA9IChSZXF1aXJlbWVudCl0aGVFT2JqZWN0Ow0KKwkJCQlUIHJlc3VsdCA9IGNhc2VSZXF1aXJlbWVudChyZXF1aXJlbWVudCk7DQorCQkJCWlmIChyZXN1bHQgPT0gbnVsbCkgcmVzdWx0ID0gZGVmYXVsdENhc2UodGhlRU9iamVjdCk7DQorCQkJCXJldHVybiByZXN1bHQ7DQorCQkJfQ0KKwkJCWNhc2UgUmVxdWlyZW1lbnRzUGFja2FnZS5DT1BZOiB7DQorCQkJCUNvcHkgY29weSA9IChDb3B5KXRoZUVPYmplY3Q7DQorCQkJCVQgcmVzdWx0ID0gY2FzZUNvcHkoY29weSk7DQorCQkJCWlmIChyZXN1bHQgPT0gbnVsbCkgcmVzdWx0ID0gY2FzZVRyYWNlKGNvcHkpOw0KKwkJCQlpZiAocmVzdWx0ID09IG51bGwpIHJlc3VsdCA9IGNhc2VEaXJlY3RlZFJlbGF0aW9uc2hpcFByb3BlcnR5UGF0aChjb3B5KTsNCisJCQkJaWYgKHJlc3VsdCA9PSBudWxsKSByZXN1bHQgPSBjYXNlU3RhbmRhcmRfVHJhY2UoY29weSk7DQorCQkJCWlmIChyZXN1bHQgPT0gbnVsbCkgcmVzdWx0ID0gZGVmYXVsdENhc2UodGhlRU9iamVjdCk7DQorCQkJCXJldHVybiByZXN1bHQ7DQorCQkJfQ0KKwkJCWNhc2UgUmVxdWlyZW1lbnRzUGFja2FnZS5TQVRJU0ZZOiB7DQorCQkJCVNhdGlzZnkgc2F0aXNmeSA9IChTYXRpc2Z5KXRoZUVPYmplY3Q7DQorCQkJCVQgcmVzdWx0ID0gY2FzZVNhdGlzZnkoc2F0aXNmeSk7DQorCQkJCWlmIChyZXN1bHQgPT0gbnVsbCkgcmVzdWx0ID0gY2FzZVRyYWNlKHNhdGlzZnkpOw0KKwkJCQlpZiAocmVzdWx0ID09IG51bGwpIHJlc3VsdCA9IGNhc2VEaXJlY3RlZFJlbGF0aW9uc2hpcFByb3BlcnR5UGF0aChzYXRpc2Z5KTsNCisJCQkJaWYgKHJlc3VsdCA9PSBudWxsKSByZXN1bHQgPSBjYXNlU3RhbmRhcmRfVHJhY2Uoc2F0aXNmeSk7DQorCQkJCWlmIChyZXN1bHQgPT0gbnVsbCkgcmVzdWx0ID0gZGVmYXVsdENhc2UodGhlRU9iamVjdCk7DQorCQkJCXJldHVybiByZXN1bHQ7DQorCQkJfQ0KKwkJCWNhc2UgUmVxdWlyZW1lbnRzUGFja2FnZS5URVNUX0NBU0U6IHsNCisJCQkJVGVzdENhc2UgdGVzdENhc2UgPSAoVGVzdENhc2UpdGhlRU9iamVjdDsNCisJCQkJVCByZXN1bHQgPSBjYXNlVGVzdENhc2UodGVzdENhc2UpOw0KKwkJCQlpZiAocmVzdWx0ID09IG51bGwpIHJlc3VsdCA9IGRlZmF1bHRDYXNlKHRoZUVPYmplY3QpOw0KKwkJCQlyZXR1cm4gcmVzdWx0Ow0KKwkJCX0NCisJCQljYXNlIFJlcXVpcmVtZW50c1BhY2thZ2UuVkVSSUZZOiB7DQorCQkJCVZlcmlmeSB2ZXJpZnkgPSAoVmVyaWZ5KXRoZUVPYmplY3Q7DQorCQkJCVQgcmVzdWx0ID0gY2FzZVZlcmlmeSh2ZXJpZnkpOw0KKwkJCQlpZiAocmVzdWx0ID09IG51bGwpIHJlc3VsdCA9IGNhc2VUcmFjZSh2ZXJpZnkpOw0KKwkJCQlpZiAocmVzdWx0ID09IG51bGwpIHJlc3VsdCA9IGNhc2VEaXJlY3RlZFJlbGF0aW9uc2hpcFByb3BlcnR5UGF0aCh2ZXJpZnkpOw0KKwkJCQlpZiAocmVzdWx0ID09IG51bGwpIHJlc3VsdCA9IGNhc2VTdGFuZGFyZF9UcmFjZSh2ZXJpZnkpOw0KKwkJCQlpZiAocmVzdWx0ID09IG51bGwpIHJlc3VsdCA9IGRlZmF1bHRDYXNlKHRoZUVPYmplY3QpOw0KKwkJCQlyZXR1cm4gcmVzdWx0Ow0KKwkJCX0NCisJCQljYXNlIFJlcXVpcmVtZW50c1BhY2thZ2UuUkVGSU5FOiB7DQorCQkJCVJlZmluZSByZWZpbmUgPSAoUmVmaW5lKXRoZUVPYmplY3Q7DQorCQkJCVQgcmVzdWx0ID0gY2FzZVJlZmluZShyZWZpbmUpOw0KKwkJCQlpZiAocmVzdWx0ID09IG51bGwpIHJlc3VsdCA9IGNhc2VEaXJlY3RlZFJlbGF0aW9uc2hpcFByb3BlcnR5UGF0aChyZWZpbmUpOw0KKwkJCQlpZiAocmVzdWx0ID09IG51bGwpIHJlc3VsdCA9IGNhc2VTdGFuZGFyZF9SZWZpbmUocmVmaW5lKTsNCisJCQkJaWYgKHJlc3VsdCA9PSBudWxsKSByZXN1bHQgPSBkZWZhdWx0Q2FzZSh0aGVFT2JqZWN0KTsNCisJCQkJcmV0dXJuIHJlc3VsdDsNCisJCQl9DQorCQkJZGVmYXVsdDogcmV0dXJuIGRlZmF1bHRDYXNlKHRoZUVPYmplY3QpOw0KKwkJfQ0KKwl9DQorDQorCS8qKg0KKwkgKiBSZXR1cm5zIHRoZSByZXN1bHQgb2YgaW50ZXJwcmV0aW5nIHRoZSBvYmplY3QgYXMgYW4gaW5zdGFuY2Ugb2YgJzxlbT5EZXJpdmUgUmVxdDwvZW0+Jy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogVGhpcyBpbXBsZW1lbnRhdGlvbiByZXR1cm5zIG51bGw7DQorCSAqIHJldHVybmluZyBhIG5vbi1udWxsIHJlc3VsdCB3aWxsIHRlcm1pbmF0ZSB0aGUgc3dpdGNoLg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHBhcmFtIG9iamVjdCB0aGUgdGFyZ2V0IG9mIHRoZSBzd2l0Y2guDQorCSAqIEByZXR1cm4gdGhlIHJlc3VsdCBvZiBpbnRlcnByZXRpbmcgdGhlIG9iamVjdCBhcyBhbiBpbnN0YW5jZSBvZiAnPGVtPkRlcml2ZSBSZXF0PC9lbT4nLg0KKwkgKiBAc2VlICNkb1N3aXRjaChvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRU9iamVjdCkgZG9Td2l0Y2goRU9iamVjdCkNCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIFQgY2FzZURlcml2ZVJlcXQoRGVyaXZlUmVxdCBvYmplY3QpIHsNCisJCXJldHVybiBudWxsOw0KKwl9DQorDQorCS8qKg0KKwkgKiBSZXR1cm5zIHRoZSByZXN1bHQgb2YgaW50ZXJwcmV0aW5nIHRoZSBvYmplY3QgYXMgYW4gaW5zdGFuY2Ugb2YgJzxlbT5UcmFjZTwvZW0+Jy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogVGhpcyBpbXBsZW1lbnRhdGlvbiByZXR1cm5zIG51bGw7DQorCSAqIHJldHVybmluZyBhIG5vbi1udWxsIHJlc3VsdCB3aWxsIHRlcm1pbmF0ZSB0aGUgc3dpdGNoLg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHBhcmFtIG9iamVjdCB0aGUgdGFyZ2V0IG9mIHRoZSBzd2l0Y2guDQorCSAqIEByZXR1cm4gdGhlIHJlc3VsdCBvZiBpbnRlcnByZXRpbmcgdGhlIG9iamVjdCBhcyBhbiBpbnN0YW5jZSBvZiAnPGVtPlRyYWNlPC9lbT4nLg0KKwkgKiBAc2VlICNkb1N3aXRjaChvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRU9iamVjdCkgZG9Td2l0Y2goRU9iamVjdCkNCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIFQgY2FzZVRyYWNlKFRyYWNlIG9iamVjdCkgew0KKwkJcmV0dXJuIG51bGw7DQorCX0NCisNCisJLyoqDQorCSAqIFJldHVybnMgdGhlIHJlc3VsdCBvZiBpbnRlcnByZXRpbmcgdGhlIG9iamVjdCBhcyBhbiBpbnN0YW5jZSBvZiAnPGVtPlJlcXVpcmVtZW50PC9lbT4nLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiBUaGlzIGltcGxlbWVudGF0aW9uIHJldHVybnMgbnVsbDsNCisJICogcmV0dXJuaW5nIGEgbm9uLW51bGwgcmVzdWx0IHdpbGwgdGVybWluYXRlIHRoZSBzd2l0Y2guDQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAcGFyYW0gb2JqZWN0IHRoZSB0YXJnZXQgb2YgdGhlIHN3aXRjaC4NCisJICogQHJldHVybiB0aGUgcmVzdWx0IG9mIGludGVycHJldGluZyB0aGUgb2JqZWN0IGFzIGFuIGluc3RhbmNlIG9mICc8ZW0+UmVxdWlyZW1lbnQ8L2VtPicuDQorCSAqIEBzZWUgI2RvU3dpdGNoKG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FT2JqZWN0KSBkb1N3aXRjaChFT2JqZWN0KQ0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgVCBjYXNlUmVxdWlyZW1lbnQoUmVxdWlyZW1lbnQgb2JqZWN0KSB7DQorCQlyZXR1cm4gbnVsbDsNCisJfQ0KKw0KKwkvKioNCisJICogUmV0dXJucyB0aGUgcmVzdWx0IG9mIGludGVycHJldGluZyB0aGUgb2JqZWN0IGFzIGFuIGluc3RhbmNlIG9mICc8ZW0+Q29weTwvZW0+Jy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogVGhpcyBpbXBsZW1lbnRhdGlvbiByZXR1cm5zIG51bGw7DQorCSAqIHJldHVybmluZyBhIG5vbi1udWxsIHJlc3VsdCB3aWxsIHRlcm1pbmF0ZSB0aGUgc3dpdGNoLg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHBhcmFtIG9iamVjdCB0aGUgdGFyZ2V0IG9mIHRoZSBzd2l0Y2guDQorCSAqIEByZXR1cm4gdGhlIHJlc3VsdCBvZiBpbnRlcnByZXRpbmcgdGhlIG9iamVjdCBhcyBhbiBpbnN0YW5jZSBvZiAnPGVtPkNvcHk8L2VtPicuDQorCSAqIEBzZWUgI2RvU3dpdGNoKG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FT2JqZWN0KSBkb1N3aXRjaChFT2JqZWN0KQ0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgVCBjYXNlQ29weShDb3B5IG9iamVjdCkgew0KKwkJcmV0dXJuIG51bGw7DQorCX0NCisNCisJLyoqDQorCSAqIFJldHVybnMgdGhlIHJlc3VsdCBvZiBpbnRlcnByZXRpbmcgdGhlIG9iamVjdCBhcyBhbiBpbnN0YW5jZSBvZiAnPGVtPlNhdGlzZnk8L2VtPicuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIFRoaXMgaW1wbGVtZW50YXRpb24gcmV0dXJucyBudWxsOw0KKwkgKiByZXR1cm5pbmcgYSBub24tbnVsbCByZXN1bHQgd2lsbCB0ZXJtaW5hdGUgdGhlIHN3aXRjaC4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBwYXJhbSBvYmplY3QgdGhlIHRhcmdldCBvZiB0aGUgc3dpdGNoLg0KKwkgKiBAcmV0dXJuIHRoZSByZXN1bHQgb2YgaW50ZXJwcmV0aW5nIHRoZSBvYmplY3QgYXMgYW4gaW5zdGFuY2Ugb2YgJzxlbT5TYXRpc2Z5PC9lbT4nLg0KKwkgKiBAc2VlICNkb1N3aXRjaChvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRU9iamVjdCkgZG9Td2l0Y2goRU9iamVjdCkNCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIFQgY2FzZVNhdGlzZnkoU2F0aXNmeSBvYmplY3QpIHsNCisJCXJldHVybiBudWxsOw0KKwl9DQorDQorCS8qKg0KKwkgKiBSZXR1cm5zIHRoZSByZXN1bHQgb2YgaW50ZXJwcmV0aW5nIHRoZSBvYmplY3QgYXMgYW4gaW5zdGFuY2Ugb2YgJzxlbT5UZXN0IENhc2U8L2VtPicuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIFRoaXMgaW1wbGVtZW50YXRpb24gcmV0dXJucyBudWxsOw0KKwkgKiByZXR1cm5pbmcgYSBub24tbnVsbCByZXN1bHQgd2lsbCB0ZXJtaW5hdGUgdGhlIHN3aXRjaC4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBwYXJhbSBvYmplY3QgdGhlIHRhcmdldCBvZiB0aGUgc3dpdGNoLg0KKwkgKiBAcmV0dXJuIHRoZSByZXN1bHQgb2YgaW50ZXJwcmV0aW5nIHRoZSBvYmplY3QgYXMgYW4gaW5zdGFuY2Ugb2YgJzxlbT5UZXN0IENhc2U8L2VtPicuDQorCSAqIEBzZWUgI2RvU3dpdGNoKG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FT2JqZWN0KSBkb1N3aXRjaChFT2JqZWN0KQ0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgVCBjYXNlVGVzdENhc2UoVGVzdENhc2Ugb2JqZWN0KSB7DQorCQlyZXR1cm4gbnVsbDsNCisJfQ0KKw0KKwkvKioNCisJICogUmV0dXJucyB0aGUgcmVzdWx0IG9mIGludGVycHJldGluZyB0aGUgb2JqZWN0IGFzIGFuIGluc3RhbmNlIG9mICc8ZW0+VmVyaWZ5PC9lbT4nLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiBUaGlzIGltcGxlbWVudGF0aW9uIHJldHVybnMgbnVsbDsNCisJICogcmV0dXJuaW5nIGEgbm9uLW51bGwgcmVzdWx0IHdpbGwgdGVybWluYXRlIHRoZSBzd2l0Y2guDQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAcGFyYW0gb2JqZWN0IHRoZSB0YXJnZXQgb2YgdGhlIHN3aXRjaC4NCisJICogQHJldHVybiB0aGUgcmVzdWx0IG9mIGludGVycHJldGluZyB0aGUgb2JqZWN0IGFzIGFuIGluc3RhbmNlIG9mICc8ZW0+VmVyaWZ5PC9lbT4nLg0KKwkgKiBAc2VlICNkb1N3aXRjaChvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRU9iamVjdCkgZG9Td2l0Y2goRU9iamVjdCkNCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIFQgY2FzZVZlcmlmeShWZXJpZnkgb2JqZWN0KSB7DQorCQlyZXR1cm4gbnVsbDsNCisJfQ0KKw0KKwkvKioNCisJICogUmV0dXJucyB0aGUgcmVzdWx0IG9mIGludGVycHJldGluZyB0aGUgb2JqZWN0IGFzIGFuIGluc3RhbmNlIG9mICc8ZW0+UmVmaW5lPC9lbT4nLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiBUaGlzIGltcGxlbWVudGF0aW9uIHJldHVybnMgbnVsbDsNCisJICogcmV0dXJuaW5nIGEgbm9uLW51bGwgcmVzdWx0IHdpbGwgdGVybWluYXRlIHRoZSBzd2l0Y2guDQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAcGFyYW0gb2JqZWN0IHRoZSB0YXJnZXQgb2YgdGhlIHN3aXRjaC4NCisJICogQHJldHVybiB0aGUgcmVzdWx0IG9mIGludGVycHJldGluZyB0aGUgb2JqZWN0IGFzIGFuIGluc3RhbmNlIG9mICc8ZW0+UmVmaW5lPC9lbT4nLg0KKwkgKiBAc2VlICNkb1N3aXRjaChvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRU9iamVjdCkgZG9Td2l0Y2goRU9iamVjdCkNCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIFQgY2FzZVJlZmluZShSZWZpbmUgb2JqZWN0KSB7DQorCQlyZXR1cm4gbnVsbDsNCisJfQ0KKw0KKwkvKioNCisJICogUmV0dXJucyB0aGUgcmVzdWx0IG9mIGludGVycHJldGluZyB0aGUgb2JqZWN0IGFzIGFuIGluc3RhbmNlIG9mICc8ZW0+RGlyZWN0ZWQgUmVsYXRpb25zaGlwIFByb3BlcnR5IFBhdGg8L2VtPicuDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIFRoaXMgaW1wbGVtZW50YXRpb24gcmV0dXJucyBudWxsOw0KKwkgKiByZXR1cm5pbmcgYSBub24tbnVsbCByZXN1bHQgd2lsbCB0ZXJtaW5hdGUgdGhlIHN3aXRjaC4NCisJICogPCEtLSBlbmQtdXNlci1kb2MgLS0+DQorCSAqIEBwYXJhbSBvYmplY3QgdGhlIHRhcmdldCBvZiB0aGUgc3dpdGNoLg0KKwkgKiBAcmV0dXJuIHRoZSByZXN1bHQgb2YgaW50ZXJwcmV0aW5nIHRoZSBvYmplY3QgYXMgYW4gaW5zdGFuY2Ugb2YgJzxlbT5EaXJlY3RlZCBSZWxhdGlvbnNoaXAgUHJvcGVydHkgUGF0aDwvZW0+Jy4NCisJICogQHNlZSAjZG9Td2l0Y2gob3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVPYmplY3QpIGRvU3dpdGNoKEVPYmplY3QpDQorCSAqIEBnZW5lcmF0ZWQNCisJICovDQorCXB1YmxpYyBUIGNhc2VEaXJlY3RlZFJlbGF0aW9uc2hpcFByb3BlcnR5UGF0aChEaXJlY3RlZFJlbGF0aW9uc2hpcFByb3BlcnR5UGF0aCBvYmplY3QpIHsNCisJCXJldHVybiBudWxsOw0KKwl9DQorDQorCS8qKg0KKwkgKiBSZXR1cm5zIHRoZSByZXN1bHQgb2YgaW50ZXJwcmV0aW5nIHRoZSBvYmplY3QgYXMgYW4gaW5zdGFuY2Ugb2YgJzxlbT5UcmFjZTwvZW0+Jy4NCisJICogPCEtLSBiZWdpbi11c2VyLWRvYyAtLT4NCisJICogVGhpcyBpbXBsZW1lbnRhdGlvbiByZXR1cm5zIG51bGw7DQorCSAqIHJldHVybmluZyBhIG5vbi1udWxsIHJlc3VsdCB3aWxsIHRlcm1pbmF0ZSB0aGUgc3dpdGNoLg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHBhcmFtIG9iamVjdCB0aGUgdGFyZ2V0IG9mIHRoZSBzd2l0Y2guDQorCSAqIEByZXR1cm4gdGhlIHJlc3VsdCBvZiBpbnRlcnByZXRpbmcgdGhlIG9iamVjdCBhcyBhbiBpbnN0YW5jZSBvZiAnPGVtPlRyYWNlPC9lbT4nLg0KKwkgKiBAc2VlICNkb1N3aXRjaChvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRU9iamVjdCkgZG9Td2l0Y2goRU9iamVjdCkNCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIFQgY2FzZVN0YW5kYXJkX1RyYWNlKG9yZy5lY2xpcHNlLnVtbDIudW1sLnByb2ZpbGUuc3RhbmRhcmQuVHJhY2Ugb2JqZWN0KSB7DQorCQlyZXR1cm4gbnVsbDsNCisJfQ0KKw0KKwkvKioNCisJICogUmV0dXJucyB0aGUgcmVzdWx0IG9mIGludGVycHJldGluZyB0aGUgb2JqZWN0IGFzIGFuIGluc3RhbmNlIG9mICc8ZW0+UmVmaW5lPC9lbT4nLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiBUaGlzIGltcGxlbWVudGF0aW9uIHJldHVybnMgbnVsbDsNCisJICogcmV0dXJuaW5nIGEgbm9uLW51bGwgcmVzdWx0IHdpbGwgdGVybWluYXRlIHRoZSBzd2l0Y2guDQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAcGFyYW0gb2JqZWN0IHRoZSB0YXJnZXQgb2YgdGhlIHN3aXRjaC4NCisJICogQHJldHVybiB0aGUgcmVzdWx0IG9mIGludGVycHJldGluZyB0aGUgb2JqZWN0IGFzIGFuIGluc3RhbmNlIG9mICc8ZW0+UmVmaW5lPC9lbT4nLg0KKwkgKiBAc2VlICNkb1N3aXRjaChvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRU9iamVjdCkgZG9Td2l0Y2goRU9iamVjdCkNCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIFQgY2FzZVN0YW5kYXJkX1JlZmluZShvcmcuZWNsaXBzZS51bWwyLnVtbC5wcm9maWxlLnN0YW5kYXJkLlJlZmluZSBvYmplY3QpIHsNCisJCXJldHVybiBudWxsOw0KKwl9DQorDQorCS8qKg0KKwkgKiBSZXR1cm5zIHRoZSByZXN1bHQgb2YgaW50ZXJwcmV0aW5nIHRoZSBvYmplY3QgYXMgYW4gaW5zdGFuY2Ugb2YgJzxlbT5FT2JqZWN0PC9lbT4nLg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiBUaGlzIGltcGxlbWVudGF0aW9uIHJldHVybnMgbnVsbDsNCisJICogcmV0dXJuaW5nIGEgbm9uLW51bGwgcmVzdWx0IHdpbGwgdGVybWluYXRlIHRoZSBzd2l0Y2gsIGJ1dCB0aGlzIGlzIHRoZSBsYXN0IGNhc2UgYW55d2F5Lg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQHBhcmFtIG9iamVjdCB0aGUgdGFyZ2V0IG9mIHRoZSBzd2l0Y2guDQorCSAqIEByZXR1cm4gdGhlIHJlc3VsdCBvZiBpbnRlcnByZXRpbmcgdGhlIG9iamVjdCBhcyBhbiBpbnN0YW5jZSBvZiAnPGVtPkVPYmplY3Q8L2VtPicuDQorCSAqIEBzZWUgI2RvU3dpdGNoKG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FT2JqZWN0KQ0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIFQgZGVmYXVsdENhc2UoRU9iamVjdCBvYmplY3QpIHsNCisJCXJldHVybiBudWxsOw0KKwl9DQorDQorfSAvL1JlcXVpcmVtZW50c1N3aXRjaA0KZGlmZiAtLWdpdCBhL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0L3NyYy9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvQWN0aXZhdG9yLmphdmEgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC9zcmMvb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L0FjdGl2YXRvci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY4NDg3MDcKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC9zcmMvb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L0FjdGl2YXRvci5qYXZhCkBAIC0wLDAgKzEsNTggQEAKKy8qKg0KKyAqIENvcHlyaWdodCAoYykgMjAxNSBDRUEgTElTVC4NCisgKiANCisgKiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KKyAqICBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCisgKiAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCisgKiAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgKi8NCitwYWNrYWdlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNDsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UudWkucGx1Z2luLkFic3RyYWN0VUlQbHVnaW47DQoraW1wb3J0IG9yZy5vc2dpLmZyYW1ld29yay5CdW5kbGVDb250ZXh0Ow0KKw0KKy8qKg0KKyAqIFRoZSBhY3RpdmF0b3IgY2xhc3MgY29udHJvbHMgdGhlIHBsdWctaW4gbGlmZSBjeWNsZQ0KKyAqLw0KK3B1YmxpYyBjbGFzcyBBY3RpdmF0b3IgZXh0ZW5kcyBBYnN0cmFjdFVJUGx1Z2luIHsNCisNCisJLy8gVGhlIHBsdWctaW4gSUQNCisJcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgUExVR0lOX0lEID0gIm9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNCI7IC8vJE5PTi1OTFMtMSQNCisNCisJLy8gVGhlIHNoYXJlZCBpbnN0YW5jZQ0KKwlwcml2YXRlIHN0YXRpYyBBY3RpdmF0b3IgcGx1Z2luOw0KKwkNCisJLyoqDQorCSAqIFRoZSBjb25zdHJ1Y3Rvcg0KKwkgKi8NCisJcHVibGljIEFjdGl2YXRvcigpIHsNCisJfQ0KKw0KKwkvKg0KKwkgKiAobm9uLUphdmFkb2MpDQorCSAqIEBzZWUgb3JnLmVjbGlwc2UudWkucGx1Z2luLkFic3RyYWN0VUlQbHVnaW4jc3RhcnQob3JnLm9zZ2kuZnJhbWV3b3JrLkJ1bmRsZUNvbnRleHQpDQorCSAqLw0KKwlwdWJsaWMgdm9pZCBzdGFydChCdW5kbGVDb250ZXh0IGNvbnRleHQpIHRocm93cyBFeGNlcHRpb24gew0KKwkJc3VwZXIuc3RhcnQoY29udGV4dCk7DQorCQlwbHVnaW4gPSB0aGlzOw0KKwl9DQorDQorCS8qDQorCSAqIChub24tSmF2YWRvYykNCisJICogQHNlZSBvcmcuZWNsaXBzZS51aS5wbHVnaW4uQWJzdHJhY3RVSVBsdWdpbiNzdG9wKG9yZy5vc2dpLmZyYW1ld29yay5CdW5kbGVDb250ZXh0KQ0KKwkgKi8NCisJcHVibGljIHZvaWQgc3RvcChCdW5kbGVDb250ZXh0IGNvbnRleHQpIHRocm93cyBFeGNlcHRpb24gew0KKwkJcGx1Z2luID0gbnVsbDsNCisJCXN1cGVyLnN0b3AoY29udGV4dCk7DQorCX0NCisNCisJLyoqDQorCSAqIFJldHVybnMgdGhlIHNoYXJlZCBpbnN0YW5jZQ0KKwkgKg0KKwkgKiBAcmV0dXJuIHRoZSBzaGFyZWQgaW5zdGFuY2UNCisJICovDQorCXB1YmxpYyBzdGF0aWMgQWN0aXZhdG9yIGdldERlZmF1bHQoKSB7DQorCQlyZXR1cm4gcGx1Z2luOw0KKwl9DQorDQorfQ0KZGlmZiAtLWdpdCBhL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0L3NyYy9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvZGVmaW5pdGlvbi9TeXNtbEZhY3RvcnkuamF2YSBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0L3NyYy9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvZGVmaW5pdGlvbi9TeXNtbEZhY3RvcnkuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45YzcyMDk4Ci0tLSAvZGV2L251bGwKKysrIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQvc3JjL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9kZWZpbml0aW9uL1N5c21sRmFjdG9yeS5qYXZhCkBAIC0wLDAgKzEsMjggQEAKKy8qKg0KKyAqIENvcHlyaWdodCAoYykgMjAxNSBDRUEgTElTVC4NCisgKiANCisgKiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KKyAqICBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCisgKiAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCisgKiAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgKiAgDQorICogIEJlbm9pdCBNYWdnaSAoQ0VBIExJU1QpIGJlbm9pdC5tYWdnaUBjZWEuZnIgLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24NCisgKi8NCitwYWNrYWdlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kZWZpbml0aW9uOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRUZhY3Rvcnk7DQorDQorcHVibGljIGludGVyZmFjZSBTeXNtbEZhY3RvcnkgZXh0ZW5kcyBFRmFjdG9yeSB7DQorCQ0KKwkvKioNCisJICogVGhlIHNpbmdsZXRvbiBpbnN0YW5jZSBvZiB0aGUgZmFjdG9yeS4NCisJICovDQorCVN5c21sRmFjdG9yeSBlSU5TVEFOQ0UgPSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGVmaW5pdGlvbi5pbnRlcm5hbC5pbXBsLlN5c21sRmFjdG9yeUltcGwuaW5pdCgpOw0KKw0KKwkvKioNCisJICogUmV0dXJucyB0aGUgcGFja2FnZSBzdXBwb3J0ZWQgYnkgdGhpcyBmYWN0b3J5Lg0KKwkgKiBAcmV0dXJuIHRoZSBwYWNrYWdlIHN1cHBvcnRlZCBieSB0aGlzIGZhY3RvcnkuDQorCSAqLw0KKwlTeXNtbFBhY2thZ2UgZ2V0U3lzbWxQYWNrYWdlKCk7DQorDQorfQ0KZGlmZiAtLWdpdCBhL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0L3NyYy9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvZGVmaW5pdGlvbi9TeXNtbFBhY2thZ2UuamF2YSBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0L3NyYy9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvZGVmaW5pdGlvbi9TeXNtbFBhY2thZ2UuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NWQ3YzgwCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQvc3JjL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9kZWZpbml0aW9uL1N5c21sUGFja2FnZS5qYXZhCkBAIC0wLDAgKzEsNTcgQEAKKy8qKg0KKyAqIENvcHlyaWdodCAoYykgMjAxNSBDRUEgTElTVC4NCisgKiANCisgKiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KKyAqICBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCisgKiAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCisgKiAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgKiAgDQorICogIEJlbm9pdCBNYWdnaSAoQ0VBIExJU1QpIGJlbm9pdC5tYWdnaUBjZWEuZnIgLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24NCisgKi8NCitwYWNrYWdlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kZWZpbml0aW9uOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRVBhY2thZ2U7DQorDQorDQorLyoqDQorICogVGhlIDxiPlBhY2thZ2U8L2I+IGZvciB0aGUgbW9kZWwuDQorICogSXQgY29udGFpbnMgYWNjZXNzb3JzIGZvciB0aGUgbWV0YSBvYmplY3RzIHRvIHJlcHJlc2VudA0KKyAqIDx1bD4NCisgKiAgIDxsaT5lYWNoIGNsYXNzLDwvbGk+DQorICogICA8bGk+ZWFjaCBmZWF0dXJlIG9mIGVhY2ggY2xhc3MsPC9saT4NCisgKiAgIDxsaT5lYWNoIG9wZXJhdGlvbiBvZiBlYWNoIGNsYXNzLDwvbGk+DQorICogICA8bGk+ZWFjaCBlbnVtLDwvbGk+DQorICogICA8bGk+YW5kIGVhY2ggZGF0YSB0eXBlPC9saT4NCisgKiA8L3VsPg0KKyAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbC5TeXNtbEZhY3RvcnkNCisgKiBAbW9kZWwga2luZD0icGFja2FnZSINCisgKiAgICAgICAgYW5ub3RhdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy91bWwyLzIuMC4wL1VNTCBvcmlnaW5hbE5hbWU9J1N5c01MJyINCisgKi8NCitwdWJsaWMgaW50ZXJmYWNlIFN5c21sUGFja2FnZSBleHRlbmRzIEVQYWNrYWdlIHsNCisJLyoqDQorCSAqIFRoZSBwYWNrYWdlIG5hbWUuDQorCSAqLw0KKwlTdHJpbmcgZU5BTUUgPSAic3lzbWwiOyAvLyROT04tTkxTLTEkDQorDQorCS8qKg0KKwkgKiBUaGUgcGFja2FnZSBuYW1lc3BhY2UgVVJJLg0KKwkgKi8NCisJU3RyaW5nIGVOU19VUkkgPSAiaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9wYXB5cnVzLzEuNC9TeXNNTCI7IC8vJE5PTi1OTFMtMSQNCisNCisJLyoqDQorCSAqIFRoZSBwYWNrYWdlIG5hbWVzcGFjZSBuYW1lLg0KKwkgKi8NCisJU3RyaW5nIGVOU19QUkVGSVggPSAiU3lzTUwiOyAvLyROT04tTkxTLTEkDQorDQorCS8qKg0KKwkgKiBUaGUgc2luZ2xldG9uIGluc3RhbmNlIG9mIHRoZSBwYWNrYWdlLg0KKwkgKi8NCisJU3lzbWxQYWNrYWdlIGVJTlNUQU5DRSA9IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kZWZpbml0aW9uLmludGVybmFsLmltcGwuU3lzbWxQYWNrYWdlSW1wbC5pbml0KCk7DQorDQorCS8qKg0KKwkgKiBSZXR1cm5zIHRoZSBmYWN0b3J5IHRoYXQgY3JlYXRlcyB0aGUgaW5zdGFuY2VzIG9mIHRoZSBtb2RlbC4NCisJICogQHJldHVybiB0aGUgZmFjdG9yeSB0aGF0IGNyZWF0ZXMgdGhlIGluc3RhbmNlcyBvZiB0aGUgbW9kZWwuDQorCSAqLw0KKwlTeXNtbEZhY3RvcnkgZ2V0U3lzbWxGYWN0b3J5KCk7DQorDQorfSANCmRpZmYgLS1naXQgYS9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC9zcmMvb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L2RlZmluaXRpb24vaW50ZXJuYWwvaW1wbC9TeXNtbEZhY3RvcnlJbXBsLmphdmEgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC9zcmMvb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L2RlZmluaXRpb24vaW50ZXJuYWwvaW1wbC9TeXNtbEZhY3RvcnlJbXBsLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzg4YThlNAotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0L3NyYy9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvZGVmaW5pdGlvbi9pbnRlcm5hbC9pbXBsL1N5c21sRmFjdG9yeUltcGwuamF2YQpAQCAtMCwwICsxLDg1IEBACisvKioNCisgKiBDb3B5cmlnaHQgKGMpIDIwMTUgQ0VBIExJU1QuDQorICogDQorICogIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCisgKiAgYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQorICogIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQorICogIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICogIA0KKyAqICBCZW5vaXQgTWFnZ2kgKENFQSBMSVNUKSBiZW5vaXQubWFnZ2lAY2VhLmZyIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uDQorICovDQorcGFja2FnZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGVmaW5pdGlvbi5pbnRlcm5hbC5pbXBsOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRUNsYXNzOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRURhdGFUeXBlOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRU9iamVjdDsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVQYWNrYWdlOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuaW1wbC5FRmFjdG9yeUltcGw7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5wbHVnaW4uRWNvcmVQbHVnaW47DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kZWZpbml0aW9uLlN5c21sRmFjdG9yeTsNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRlZmluaXRpb24uU3lzbWxQYWNrYWdlOw0KKw0KKy8qKg0KKyAqIEFuIGltcGxlbWVudGF0aW9uIG9mIHRoZSBtb2RlbCA8Yj5GYWN0b3J5PC9iPi4NCisgKi8NCitwdWJsaWMgY2xhc3MgU3lzbWxGYWN0b3J5SW1wbCBleHRlbmRzIEVGYWN0b3J5SW1wbCBpbXBsZW1lbnRzIFN5c21sRmFjdG9yeSB7DQorCS8qKg0KKwkgKiBDcmVhdGVzIHRoZSBkZWZhdWx0IGZhY3RvcnkgaW1wbGVtZW50YXRpb24uDQorCSAqIDwhLS0gYmVnaW4tdXNlci1kb2MgLS0+DQorCSAqIDwhLS0gZW5kLXVzZXItZG9jIC0tPg0KKwkgKiBAZ2VuZXJhdGVkDQorCSAqLw0KKwlwdWJsaWMgc3RhdGljIFN5c21sRmFjdG9yeSBpbml0KCkgew0KKwkJdHJ5IHsNCisJCQlTeXNtbEZhY3RvcnkgdGhlc3lzbWxGYWN0b3J5ID0gKFN5c21sRmFjdG9yeSlFUGFja2FnZS5SZWdpc3RyeS5JTlNUQU5DRS5nZXRFRmFjdG9yeShTeXNtbFBhY2thZ2UuZU5TX1VSSSk7DQorCQkJaWYgKHRoZXN5c21sRmFjdG9yeSAhPSBudWxsKSB7DQorCQkJCXJldHVybiB0aGVzeXNtbEZhY3Rvcnk7DQorCQkJfQ0KKwkJfQ0KKwkJY2F0Y2ggKEV4Y2VwdGlvbiBleGNlcHRpb24pIHsNCisJCQlFY29yZVBsdWdpbi5JTlNUQU5DRS5sb2coZXhjZXB0aW9uKTsNCisJCX0NCisJCXJldHVybiBuZXcgU3lzbWxGYWN0b3J5SW1wbCgpOw0KKwl9DQorDQorCS8qKg0KKwkgKiBDcmVhdGVzIGFuIGluc3RhbmNlIG9mIHRoZSBmYWN0b3J5Lg0KKwkgKiA8IS0tIGJlZ2luLXVzZXItZG9jIC0tPg0KKwkgKiA8IS0tIGVuZC11c2VyLWRvYyAtLT4NCisJICogQGdlbmVyYXRlZA0KKwkgKi8NCisJcHVibGljIFN5c21sRmFjdG9yeUltcGwoKSB7DQorCQlzdXBlcigpOw0KKwl9DQorDQorCS8qKg0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXB1YmxpYyBFT2JqZWN0IGNyZWF0ZShFQ2xhc3MgZUNsYXNzKSB7DQorCQlzd2l0Y2ggKGVDbGFzcy5nZXRDbGFzc2lmaWVySUQoKSkgew0KKwkJCWRlZmF1bHQ6DQorCQkJCXRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIlRoZSBjbGFzcyAnIiArIGVDbGFzcy5nZXROYW1lKCkgKyAiJyBpcyBub3QgYSB2YWxpZCBjbGFzc2lmaWVyIik7IC8vJE5PTi1OTFMtMSQgLy8kTk9OLU5MUy0yJA0KKwkJfQ0KKwl9DQorDQorCS8qKg0KKwkgKi8NCisJcHVibGljIFN0cmluZyBjcmVhdGVEdW1teUZyb21TdHJpbmcoRURhdGFUeXBlIGVEYXRhVHlwZSwgU3RyaW5nIGluaXRpYWxWYWx1ZSkgew0KKwkJcmV0dXJuIChTdHJpbmcpc3VwZXIuY3JlYXRlRnJvbVN0cmluZyhlRGF0YVR5cGUsIGluaXRpYWxWYWx1ZSk7DQorCX0NCisJDQorCS8qKg0KKwkgKi8NCisJcHVibGljIFN5c21sUGFja2FnZSBnZXRTeXNtbFBhY2thZ2UoKSB7DQorCQlyZXR1cm4gKFN5c21sUGFja2FnZSlnZXRFUGFja2FnZSgpOw0KKwl9DQorDQorCS8qKg0KKwkgKi8NCisJQERlcHJlY2F0ZWQNCisJcHVibGljIHN0YXRpYyBTeXNtbFBhY2thZ2UgZ2V0UGFja2FnZSgpIHsNCisJCXJldHVybiBTeXNtbFBhY2thZ2UuZUlOU1RBTkNFOw0KKwl9DQorDQorfSANCmRpZmYgLS1naXQgYS9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC9zcmMvb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L2RlZmluaXRpb24vaW50ZXJuYWwvaW1wbC9TeXNtbFBhY2thZ2VJbXBsLmphdmEgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC9zcmMvb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L2RlZmluaXRpb24vaW50ZXJuYWwvaW1wbC9TeXNtbFBhY2thZ2VJbXBsLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDA4ZDNlMgotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0L3NyYy9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvZGVmaW5pdGlvbi9pbnRlcm5hbC9pbXBsL1N5c21sUGFja2FnZUltcGwuamF2YQpAQCAtMCwwICsxLDIwNiBAQAorLyoqDQorICogQ29weXJpZ2h0IChjKSAyMDE1IENFQSBMSVNULg0KKyAqIA0KKyAqICBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQorICogIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KKyAqICB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KKyAqICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqICANCisgKiAgQmVub2l0IE1hZ2dpIChDRUEgTElTVCkgYmVub2l0Lm1hZ2dpQGNlYS5mciAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbg0KKyAqLw0KK3BhY2thZ2Ugb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRlZmluaXRpb24uaW50ZXJuYWwuaW1wbDsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVQYWNrYWdlOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuaW1wbC5FUGFja2FnZUltcGw7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5hY3Rpdml0aWVzLkFjdGl2aXRpZXNQYWNrYWdlOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYWN0aXZpdGllcy5pbnRlcm5hbC5pbXBsLkFjdGl2aXRpZXNQYWNrYWdlSW1wbDsNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmFsbG9jYXRpb25zLkFsbG9jYXRpb25zUGFja2FnZTsNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmFsbG9jYXRpb25zLmludGVybmFsLmltcGwuQWxsb2NhdGlvbnNQYWNrYWdlSW1wbDsNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmJsb2Nrcy5CbG9ja3NQYWNrYWdlOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuYmxvY2tzLmludGVybmFsLmltcGwuQmxvY2tzUGFja2FnZUltcGw7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5jb25zdHJhaW50YmxvY2tzLkNvbnN0cmFpbnRibG9ja3NQYWNrYWdlOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuY29uc3RyYWludGJsb2Nrcy5pbnRlcm5hbC5pbXBsLkNvbnN0cmFpbnRibG9ja3NQYWNrYWdlSW1wbDsNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRlZmluaXRpb24uU3lzbWxGYWN0b3J5Ow0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGVmaW5pdGlvbi5TeXNtbFBhY2thZ2U7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kZXByZWNhdGVkZWxlbWVudHMuRGVwcmVjYXRlZGVsZW1lbnRzUGFja2FnZTsNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRlcHJlY2F0ZWRlbGVtZW50cy5pbnRlcm5hbC5pbXBsLkRlcHJlY2F0ZWRlbGVtZW50c1BhY2thZ2VJbXBsOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQubW9kZWxlbGVtZW50cy5Nb2RlbGVsZW1lbnRzUGFja2FnZTsNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0Lm1vZGVsZWxlbWVudHMuaW50ZXJuYWwuaW1wbC5Nb2RlbGVsZW1lbnRzUGFja2FnZUltcGw7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5wb3J0YW5kZmxvd3MuUG9ydGFuZGZsb3dzUGFja2FnZTsNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnBvcnRhbmRmbG93cy5pbnRlcm5hbC5pbXBsLlBvcnRhbmRmbG93c1BhY2thZ2VJbXBsOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucmVxdWlyZW1lbnRzLlJlcXVpcmVtZW50c1BhY2thZ2U7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5yZXF1aXJlbWVudHMuaW50ZXJuYWwuaW1wbC5SZXF1aXJlbWVudHNQYWNrYWdlSW1wbDsNCitpbXBvcnQgb3JnLmVjbGlwc2UudW1sMi51bWwucHJvZmlsZS5zdGFuZGFyZC5TdGFuZGFyZFBhY2thZ2U7DQorDQorLyoqDQorICogQW4gaW1wbGVtZW50YXRpb24gb2YgdGhlIG1vZGVsIDxiPlBhY2thZ2U8L2I+Lg0KKyAqLw0KK3B1YmxpYyBjbGFzcyBTeXNtbFBhY2thZ2VJbXBsIGV4dGVuZHMgRVBhY2thZ2VJbXBsIGltcGxlbWVudHMgU3lzbWxQYWNrYWdlIHsNCisNCisJLyoqDQorCSAqIENyZWF0ZXMgYW4gaW5zdGFuY2Ugb2YgdGhlIG1vZGVsIDxiPlBhY2thZ2U8L2I+LCByZWdpc3RlcmVkIHdpdGgNCisJICoge0BsaW5rIG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FUGFja2FnZS5SZWdpc3RyeSBFUGFja2FnZS5SZWdpc3RyeX0gYnkgdGhlIHBhY2thZ2UNCisJICogcGFja2FnZSBVUkkgdmFsdWUuDQorCSAqIDxwPk5vdGU6IHRoZSBjb3JyZWN0IHdheSB0byBjcmVhdGUgdGhlIHBhY2thZ2UgaXMgdmlhIHRoZSBzdGF0aWMNCisJICogZmFjdG9yeSBtZXRob2Qge0BsaW5rICNpbml0IGluaXQoKX0sIHdoaWNoIGFsc28gcGVyZm9ybXMNCisJICogaW5pdGlhbGl6YXRpb24gb2YgdGhlIHBhY2thZ2UsIG9yIHJldHVybnMgdGhlIHJlZ2lzdGVyZWQgcGFja2FnZSwNCisJICogaWYgb25lIGFscmVhZHkgZXhpc3RzLg0KKwkgKiANCisJICogQHNlZSBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRVBhY2thZ2UuUmVnaXN0cnkNCisJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGVmaW5pdGlvbi5TeXNtbFBhY2thZ2UjZU5TX1VSSQ0KKwkgKiBAc2VlICNpbml0KCkNCisJICogDQorCSAqLw0KKwlwcml2YXRlIFN5c21sUGFja2FnZUltcGwoKSB7DQorCQlzdXBlcihlTlNfVVJJLCBTeXNtbEZhY3RvcnkuZUlOU1RBTkNFKTsNCisJfQ0KKw0KKwkvKioNCisJICogDQorCSAqIA0KKwkgKiANCisJICovDQorCXByaXZhdGUgc3RhdGljIGJvb2xlYW4gaXNJbml0ZWQgPSBmYWxzZTsNCisNCisJLyoqDQorCSAqIENyZWF0ZXMsIHJlZ2lzdGVycywgYW5kIGluaXRpYWxpemVzIHRoZSA8Yj5QYWNrYWdlPC9iPiBmb3IgdGhpcyBtb2RlbCwgYW5kIGZvciBhbnkgb3RoZXJzIHVwb24gd2hpY2ggaXQgZGVwZW5kcy4NCisJICogDQorCSAqIDxwPlRoaXMgbWV0aG9kIGlzIHVzZWQgdG8gaW5pdGlhbGl6ZSB7QGxpbmsgU3lzbWxQYWNrYWdlI2VJTlNUQU5DRX0gd2hlbiB0aGF0IGZpZWxkIGlzIGFjY2Vzc2VkLg0KKwkgKiBDbGllbnRzIHNob3VsZCBub3QgaW52b2tlIGl0IGRpcmVjdGx5LiBJbnN0ZWFkLCB0aGV5IHNob3VsZCBzaW1wbHkgYWNjZXNzIHRoYXQgZmllbGQgdG8gb2J0YWluIHRoZSBwYWNrYWdlLg0KKwkgKiANCisJICogDQorCSAqIEBzZWUgI2VOU19VUkkNCisJICogQHNlZSAjY3JlYXRlUGFja2FnZUNvbnRlbnRzKCkNCisJICogQHNlZSAjaW5pdGlhbGl6ZVBhY2thZ2VDb250ZW50cygpDQorCSAqIA0KKwkgKi8NCisJcHVibGljIHN0YXRpYyBTeXNtbFBhY2thZ2UgaW5pdCgpIHsNCisJCWlmIChpc0luaXRlZCkgcmV0dXJuIChTeXNtbFBhY2thZ2UpRVBhY2thZ2UuUmVnaXN0cnkuSU5TVEFOQ0UuZ2V0RVBhY2thZ2UoU3lzbWxQYWNrYWdlLmVOU19VUkkpOw0KKw0KKwkJLy8gT2J0YWluIG9yIGNyZWF0ZSBhbmQgcmVnaXN0ZXIgcGFja2FnZQ0KKwkJU3lzbWxQYWNrYWdlSW1wbCB0aGVzeXNtbFBhY2thZ2UgPSAoU3lzbWxQYWNrYWdlSW1wbCkoRVBhY2thZ2UuUmVnaXN0cnkuSU5TVEFOQ0UuZ2V0KGVOU19VUkkpIGluc3RhbmNlb2YgU3lzbWxQYWNrYWdlSW1wbCA/IEVQYWNrYWdlLlJlZ2lzdHJ5LklOU1RBTkNFLmdldChlTlNfVVJJKSA6IG5ldyBTeXNtbFBhY2thZ2VJbXBsKCkpOw0KKw0KKwkJaXNJbml0ZWQgPSB0cnVlOw0KKw0KKwkJLy8gSW5pdGlhbGl6ZSBzaW1wbGUgZGVwZW5kZW5jaWVzDQorCQlTdGFuZGFyZFBhY2thZ2UuZUlOU1RBTkNFLmVDbGFzcygpOw0KKw0KKwkJLy8gT2J0YWluIG9yIGNyZWF0ZSBhbmQgcmVnaXN0ZXIgaW50ZXJkZXBlbmRlbmNpZXMNCisJCUJsb2Nrc1BhY2thZ2VJbXBsIHRoZUJsb2Nrc1BhY2thZ2UgPSAoQmxvY2tzUGFja2FnZUltcGwpKEVQYWNrYWdlLlJlZ2lzdHJ5LklOU1RBTkNFLmdldEVQYWNrYWdlKEJsb2Nrc1BhY2thZ2UuZU5TX1VSSSkgaW5zdGFuY2VvZiBCbG9ja3NQYWNrYWdlSW1wbCA/IEVQYWNrYWdlLlJlZ2lzdHJ5LklOU1RBTkNFLmdldEVQYWNrYWdlKEJsb2Nrc1BhY2thZ2UuZU5TX1VSSSkgOiBCbG9ja3NQYWNrYWdlLmVJTlNUQU5DRSk7DQorCQlQb3J0YW5kZmxvd3NQYWNrYWdlSW1wbCB0aGVQb3J0YW5kZmxvd3NQYWNrYWdlID0gKFBvcnRhbmRmbG93c1BhY2thZ2VJbXBsKShFUGFja2FnZS5SZWdpc3RyeS5JTlNUQU5DRS5nZXRFUGFja2FnZShQb3J0YW5kZmxvd3NQYWNrYWdlLmVOU19VUkkpIGluc3RhbmNlb2YgUG9ydGFuZGZsb3dzUGFja2FnZUltcGwgPyBFUGFja2FnZS5SZWdpc3RyeS5JTlNUQU5DRS5nZXRFUGFja2FnZShQb3J0YW5kZmxvd3NQYWNrYWdlLmVOU19VUkkpIDogUG9ydGFuZGZsb3dzUGFja2FnZS5lSU5TVEFOQ0UpOw0KKwkJQWN0aXZpdGllc1BhY2thZ2VJbXBsIHRoZUFjdGl2aXRpZXNQYWNrYWdlID0gKEFjdGl2aXRpZXNQYWNrYWdlSW1wbCkoRVBhY2thZ2UuUmVnaXN0cnkuSU5TVEFOQ0UuZ2V0RVBhY2thZ2UoQWN0aXZpdGllc1BhY2thZ2UuZU5TX1VSSSkgaW5zdGFuY2VvZiBBY3Rpdml0aWVzUGFja2FnZUltcGwgPyBFUGFja2FnZS5SZWdpc3RyeS5JTlNUQU5DRS5nZXRFUGFja2FnZShBY3Rpdml0aWVzUGFja2FnZS5lTlNfVVJJKSA6IEFjdGl2aXRpZXNQYWNrYWdlLmVJTlNUQU5DRSk7DQorCQlNb2RlbGVsZW1lbnRzUGFja2FnZUltcGwgdGhlTW9kZWxlbGVtZW50c1BhY2thZ2UgPSAoTW9kZWxlbGVtZW50c1BhY2thZ2VJbXBsKShFUGFja2FnZS5SZWdpc3RyeS5JTlNUQU5DRS5nZXRFUGFja2FnZShNb2RlbGVsZW1lbnRzUGFja2FnZS5lTlNfVVJJKSBpbnN0YW5jZW9mIE1vZGVsZWxlbWVudHNQYWNrYWdlSW1wbCA/IEVQYWNrYWdlLlJlZ2lzdHJ5LklOU1RBTkNFLmdldEVQYWNrYWdlKE1vZGVsZWxlbWVudHNQYWNrYWdlLmVOU19VUkkpIDogTW9kZWxlbGVtZW50c1BhY2thZ2UuZUlOU1RBTkNFKTsNCisJCUNvbnN0cmFpbnRibG9ja3NQYWNrYWdlSW1wbCB0aGVDb25zdHJhaW50YmxvY2tzUGFja2FnZSA9IChDb25zdHJhaW50YmxvY2tzUGFja2FnZUltcGwpKEVQYWNrYWdlLlJlZ2lzdHJ5LklOU1RBTkNFLmdldEVQYWNrYWdlKENvbnN0cmFpbnRibG9ja3NQYWNrYWdlLmVOU19VUkkpIGluc3RhbmNlb2YgQ29uc3RyYWludGJsb2Nrc1BhY2thZ2VJbXBsID8gRVBhY2thZ2UuUmVnaXN0cnkuSU5TVEFOQ0UuZ2V0RVBhY2thZ2UoQ29uc3RyYWludGJsb2Nrc1BhY2thZ2UuZU5TX1VSSSkgOiBDb25zdHJhaW50YmxvY2tzUGFja2FnZS5lSU5TVEFOQ0UpOw0KKwkJQWxsb2NhdGlvbnNQYWNrYWdlSW1wbCB0aGVBbGxvY2F0aW9uc1BhY2thZ2UgPSAoQWxsb2NhdGlvbnNQYWNrYWdlSW1wbCkoRVBhY2thZ2UuUmVnaXN0cnkuSU5TVEFOQ0UuZ2V0RVBhY2thZ2UoQWxsb2NhdGlvbnNQYWNrYWdlLmVOU19VUkkpIGluc3RhbmNlb2YgQWxsb2NhdGlvbnNQYWNrYWdlSW1wbCA/IEVQYWNrYWdlLlJlZ2lzdHJ5LklOU1RBTkNFLmdldEVQYWNrYWdlKEFsbG9jYXRpb25zUGFja2FnZS5lTlNfVVJJKSA6IEFsbG9jYXRpb25zUGFja2FnZS5lSU5TVEFOQ0UpOw0KKwkJUmVxdWlyZW1lbnRzUGFja2FnZUltcGwgdGhlUmVxdWlyZW1lbnRzUGFja2FnZSA9IChSZXF1aXJlbWVudHNQYWNrYWdlSW1wbCkoRVBhY2thZ2UuUmVnaXN0cnkuSU5TVEFOQ0UuZ2V0RVBhY2thZ2UoUmVxdWlyZW1lbnRzUGFja2FnZS5lTlNfVVJJKSBpbnN0YW5jZW9mIFJlcXVpcmVtZW50c1BhY2thZ2VJbXBsID8gRVBhY2thZ2UuUmVnaXN0cnkuSU5TVEFOQ0UuZ2V0RVBhY2thZ2UoUmVxdWlyZW1lbnRzUGFja2FnZS5lTlNfVVJJKSA6IFJlcXVpcmVtZW50c1BhY2thZ2UuZUlOU1RBTkNFKTsNCisJCURlcHJlY2F0ZWRlbGVtZW50c1BhY2thZ2VJbXBsIHRoZURlcHJlY2F0ZWRlbGVtZW50c1BhY2thZ2UgPSAoRGVwcmVjYXRlZGVsZW1lbnRzUGFja2FnZUltcGwpKEVQYWNrYWdlLlJlZ2lzdHJ5LklOU1RBTkNFLmdldEVQYWNrYWdlKERlcHJlY2F0ZWRlbGVtZW50c1BhY2thZ2UuZU5TX1VSSSkgaW5zdGFuY2VvZiBEZXByZWNhdGVkZWxlbWVudHNQYWNrYWdlSW1wbCA/IEVQYWNrYWdlLlJlZ2lzdHJ5LklOU1RBTkNFLmdldEVQYWNrYWdlKERlcHJlY2F0ZWRlbGVtZW50c1BhY2thZ2UuZU5TX1VSSSkgOiBEZXByZWNhdGVkZWxlbWVudHNQYWNrYWdlLmVJTlNUQU5DRSk7DQorDQorCQkvLyBDcmVhdGUgcGFja2FnZSBtZXRhLWRhdGEgb2JqZWN0cw0KKwkJdGhlc3lzbWxQYWNrYWdlLmNyZWF0ZVBhY2thZ2VDb250ZW50cygpOw0KKwkJdGhlQmxvY2tzUGFja2FnZS5jcmVhdGVQYWNrYWdlQ29udGVudHMoKTsNCisJCXRoZVBvcnRhbmRmbG93c1BhY2thZ2UuY3JlYXRlUGFja2FnZUNvbnRlbnRzKCk7DQorCQl0aGVBY3Rpdml0aWVzUGFja2FnZS5jcmVhdGVQYWNrYWdlQ29udGVudHMoKTsNCisJCXRoZU1vZGVsZWxlbWVudHNQYWNrYWdlLmNyZWF0ZVBhY2thZ2VDb250ZW50cygpOw0KKwkJdGhlQ29uc3RyYWludGJsb2Nrc1BhY2thZ2UuY3JlYXRlUGFja2FnZUNvbnRlbnRzKCk7DQorCQl0aGVBbGxvY2F0aW9uc1BhY2thZ2UuY3JlYXRlUGFja2FnZUNvbnRlbnRzKCk7DQorCQl0aGVSZXF1aXJlbWVudHNQYWNrYWdlLmNyZWF0ZVBhY2thZ2VDb250ZW50cygpOw0KKwkJdGhlRGVwcmVjYXRlZGVsZW1lbnRzUGFja2FnZS5jcmVhdGVQYWNrYWdlQ29udGVudHMoKTsNCisNCisJCS8vIEluaXRpYWxpemUgY3JlYXRlZCBtZXRhLWRhdGENCisJCXRoZXN5c21sUGFja2FnZS5pbml0aWFsaXplUGFja2FnZUNvbnRlbnRzKCk7DQorCQl0aGVCbG9ja3NQYWNrYWdlLmluaXRpYWxpemVQYWNrYWdlQ29udGVudHMoKTsNCisJCXRoZVBvcnRhbmRmbG93c1BhY2thZ2UuaW5pdGlhbGl6ZVBhY2thZ2VDb250ZW50cygpOw0KKwkJdGhlQWN0aXZpdGllc1BhY2thZ2UuaW5pdGlhbGl6ZVBhY2thZ2VDb250ZW50cygpOw0KKwkJdGhlTW9kZWxlbGVtZW50c1BhY2thZ2UuaW5pdGlhbGl6ZVBhY2thZ2VDb250ZW50cygpOw0KKwkJdGhlQ29uc3RyYWludGJsb2Nrc1BhY2thZ2UuaW5pdGlhbGl6ZVBhY2thZ2VDb250ZW50cygpOw0KKwkJdGhlQWxsb2NhdGlvbnNQYWNrYWdlLmluaXRpYWxpemVQYWNrYWdlQ29udGVudHMoKTsNCisJCXRoZVJlcXVpcmVtZW50c1BhY2thZ2UuaW5pdGlhbGl6ZVBhY2thZ2VDb250ZW50cygpOw0KKwkJdGhlRGVwcmVjYXRlZGVsZW1lbnRzUGFja2FnZS5pbml0aWFsaXplUGFja2FnZUNvbnRlbnRzKCk7DQorDQorCQkvLyBNYXJrIG1ldGEtZGF0YSB0byBpbmRpY2F0ZSBpdCBjYW4ndCBiZSBjaGFuZ2VkDQorCQl0aGVzeXNtbFBhY2thZ2UuZnJlZXplKCk7DQorDQorICANCisJCS8vIFVwZGF0ZSB0aGUgcmVnaXN0cnkgYW5kIHJldHVybiB0aGUgcGFja2FnZQ0KKwkJRVBhY2thZ2UuUmVnaXN0cnkuSU5TVEFOQ0UucHV0KFN5c21sUGFja2FnZS5lTlNfVVJJLCB0aGVzeXNtbFBhY2thZ2UpOw0KKwkJcmV0dXJuIHRoZXN5c21sUGFja2FnZTsNCisJfQ0KKw0KKwlwdWJsaWMgU3lzbWxGYWN0b3J5IGdldFN5c21sRmFjdG9yeSgpIHsNCisJCXJldHVybiAoU3lzbWxGYWN0b3J5KWdldEVGYWN0b3J5SW5zdGFuY2UoKTsNCisJfQ0KKw0KKwlwcml2YXRlIGJvb2xlYW4gaXNDcmVhdGVkID0gZmFsc2U7DQorDQorCS8qKg0KKwkgKiBDcmVhdGVzIHRoZSBtZXRhLW1vZGVsIG9iamVjdHMgZm9yIHRoZSBwYWNrYWdlLiAgVGhpcyBtZXRob2QgaXMNCisJICogZ3VhcmRlZCB0byBoYXZlIG5vIGFmZmVjdCBvbiBhbnkgaW52b2NhdGlvbiBidXQgaXRzIGZpcnN0Lg0KKwkgKi8NCisJcHVibGljIHZvaWQgY3JlYXRlUGFja2FnZUNvbnRlbnRzKCkgew0KKwkJaWYgKGlzQ3JlYXRlZCkgcmV0dXJuOw0KKwkJaXNDcmVhdGVkID0gdHJ1ZTsJDQorCX0NCisNCisJLyoqDQorCSAqIA0KKwkgKiANCisJICogDQorCSAqLw0KKwlwcml2YXRlIGJvb2xlYW4gaXNJbml0aWFsaXplZCA9IGZhbHNlOw0KKw0KKwkvKioNCisJICogQ29tcGxldGUgdGhlIGluaXRpYWxpemF0aW9uIG9mIHRoZSBwYWNrYWdlIGFuZCBpdHMgbWV0YS1tb2RlbC4gIFRoaXMNCisJICogbWV0aG9kIGlzIGd1YXJkZWQgdG8gaGF2ZSBubyBhZmZlY3Qgb24gYW55IGludm9jYXRpb24gYnV0IGl0cyBmaXJzdC4NCisJICovDQorCXB1YmxpYyB2b2lkIGluaXRpYWxpemVQYWNrYWdlQ29udGVudHMoKSB7DQorCQlpZiAoaXNJbml0aWFsaXplZCkgcmV0dXJuOw0KKwkJaXNJbml0aWFsaXplZCA9IHRydWU7DQorDQorCQkvLyBJbml0aWFsaXplIHBhY2thZ2UNCisJCXNldE5hbWUoZU5BTUUpOw0KKwkJc2V0TnNQcmVmaXgoZU5TX1BSRUZJWCk7DQorCQlzZXROc1VSSShlTlNfVVJJKTsNCisNCisJCS8vIE9idGFpbiBvdGhlciBkZXBlbmRlbnQgcGFja2FnZXMNCisJCUJsb2Nrc1BhY2thZ2UgdGhlQmxvY2tzUGFja2FnZSA9IChCbG9ja3NQYWNrYWdlKUVQYWNrYWdlLlJlZ2lzdHJ5LklOU1RBTkNFLmdldEVQYWNrYWdlKEJsb2Nrc1BhY2thZ2UuZU5TX1VSSSk7DQorCQlQb3J0YW5kZmxvd3NQYWNrYWdlIHRoZVBvcnRhbmRmbG93c1BhY2thZ2UgPSAoUG9ydGFuZGZsb3dzUGFja2FnZSlFUGFja2FnZS5SZWdpc3RyeS5JTlNUQU5DRS5nZXRFUGFja2FnZShQb3J0YW5kZmxvd3NQYWNrYWdlLmVOU19VUkkpOw0KKwkJQWN0aXZpdGllc1BhY2thZ2UgdGhlQWN0aXZpdGllc1BhY2thZ2UgPSAoQWN0aXZpdGllc1BhY2thZ2UpRVBhY2thZ2UuUmVnaXN0cnkuSU5TVEFOQ0UuZ2V0RVBhY2thZ2UoQWN0aXZpdGllc1BhY2thZ2UuZU5TX1VSSSk7DQorCQlNb2RlbGVsZW1lbnRzUGFja2FnZSB0aGVNb2RlbGVsZW1lbnRzUGFja2FnZSA9IChNb2RlbGVsZW1lbnRzUGFja2FnZSlFUGFja2FnZS5SZWdpc3RyeS5JTlNUQU5DRS5nZXRFUGFja2FnZShNb2RlbGVsZW1lbnRzUGFja2FnZS5lTlNfVVJJKTsNCisJCUNvbnN0cmFpbnRibG9ja3NQYWNrYWdlIHRoZUNvbnN0cmFpbnRibG9ja3NQYWNrYWdlID0gKENvbnN0cmFpbnRibG9ja3NQYWNrYWdlKUVQYWNrYWdlLlJlZ2lzdHJ5LklOU1RBTkNFLmdldEVQYWNrYWdlKENvbnN0cmFpbnRibG9ja3NQYWNrYWdlLmVOU19VUkkpOw0KKwkJQWxsb2NhdGlvbnNQYWNrYWdlIHRoZUFsbG9jYXRpb25zUGFja2FnZSA9IChBbGxvY2F0aW9uc1BhY2thZ2UpRVBhY2thZ2UuUmVnaXN0cnkuSU5TVEFOQ0UuZ2V0RVBhY2thZ2UoQWxsb2NhdGlvbnNQYWNrYWdlLmVOU19VUkkpOw0KKwkJUmVxdWlyZW1lbnRzUGFja2FnZSB0aGVSZXF1aXJlbWVudHNQYWNrYWdlID0gKFJlcXVpcmVtZW50c1BhY2thZ2UpRVBhY2thZ2UuUmVnaXN0cnkuSU5TVEFOQ0UuZ2V0RVBhY2thZ2UoUmVxdWlyZW1lbnRzUGFja2FnZS5lTlNfVVJJKTsNCisJCURlcHJlY2F0ZWRlbGVtZW50c1BhY2thZ2UgdGhlRGVwcmVjYXRlZGVsZW1lbnRzUGFja2FnZSA9IChEZXByZWNhdGVkZWxlbWVudHNQYWNrYWdlKUVQYWNrYWdlLlJlZ2lzdHJ5LklOU1RBTkNFLmdldEVQYWNrYWdlKERlcHJlY2F0ZWRlbGVtZW50c1BhY2thZ2UuZU5TX1VSSSk7DQorDQorCQkvLyBBZGQgc3VicGFja2FnZXMNCisJCWdldEVTdWJwYWNrYWdlcygpLmFkZCh0aGVCbG9ja3NQYWNrYWdlKTsNCisJCWdldEVTdWJwYWNrYWdlcygpLmFkZCh0aGVQb3J0YW5kZmxvd3NQYWNrYWdlKTsNCisJCWdldEVTdWJwYWNrYWdlcygpLmFkZCh0aGVBY3Rpdml0aWVzUGFja2FnZSk7DQorCQlnZXRFU3VicGFja2FnZXMoKS5hZGQodGhlTW9kZWxlbGVtZW50c1BhY2thZ2UpOw0KKwkJZ2V0RVN1YnBhY2thZ2VzKCkuYWRkKHRoZUNvbnN0cmFpbnRibG9ja3NQYWNrYWdlKTsNCisJCWdldEVTdWJwYWNrYWdlcygpLmFkZCh0aGVBbGxvY2F0aW9uc1BhY2thZ2UpOw0KKwkJZ2V0RVN1YnBhY2thZ2VzKCkuYWRkKHRoZVJlcXVpcmVtZW50c1BhY2thZ2UpOw0KKwkJZ2V0RVN1YnBhY2thZ2VzKCkuYWRkKHRoZURlcHJlY2F0ZWRlbGVtZW50c1BhY2thZ2UpOw0KKw0KKwkJLy8gQ3JlYXRlIHJlc291cmNlDQorCQljcmVhdGVSZXNvdXJjZShlTlNfVVJJKTsNCisNCisJCS8vIENyZWF0ZSBhbm5vdGF0aW9ucw0KKwkJLy8gaHR0cDovL3d3dy5lY2xpcHNlLm9yZy91bWwyLzIuMC4wL1VNTA0KKwkJY3JlYXRlVU1MQW5ub3RhdGlvbnMoKTsNCisJfQ0KKw0KKwkvKioNCisJICogSW5pdGlhbGl6ZXMgdGhlIGFubm90YXRpb25zIGZvciA8Yj5odHRwOi8vd3d3LmVjbGlwc2Uub3JnL3VtbDIvMi4wLjAvVU1MPC9iPi4NCisJICovDQorCXByb3RlY3RlZCB2b2lkIGNyZWF0ZVVNTEFubm90YXRpb25zKCkgew0KKwkJU3RyaW5nIHNvdXJjZSA9ICJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3VtbDIvMi4wLjAvVU1MIjsgLy8kTk9OLU5MUy0xJAkNCisJCWFkZEFubm90YXRpb24NCisJCSAgKHRoaXMsIA0KKwkJICAgc291cmNlLCANCisJCSAgIG5ldyBTdHJpbmdbXSB7DQorCQkJICJvcmlnaW5hbE5hbWUiLCAiU3lzTUwiIC8vJE5PTi1OTFMtMSQgLy8kTk9OLU5MUy0yJA0KKwkJICAgfSk7DQorCX0NCisNCit9IA0KZGlmZiAtLWdpdCBhL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0L3NyYy9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvZGVmaW5pdGlvbi9wYWNrYWdlLWluZm8uamF2YSBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0L3NyYy9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvZGVmaW5pdGlvbi9wYWNrYWdlLWluZm8uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zY2Y4MGE5Ci0tLSAvZGV2L251bGwKKysrIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQvc3JjL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9kZWZpbml0aW9uL3BhY2thZ2UtaW5mby5qYXZhCkBAIC0wLDAgKzEsMjIgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyAqIENvcHlyaWdodCAoYykgMjAxNSBDRUEgTElTVCBhbmQgb3RoZXJzLg0KKyAqIA0KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCisgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCisgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICoNCisgKiBDb250cmlidXRvcnM6DQorICogICBDRUEgTElTVCAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbg0KKyAqICAgDQorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KKw0KKy8qKg0KKyAqIFRoaXMgcGFja2FnZSBpcyB1c2VkIHRvIG1hbnVhbGx5IGRlZmluZSB0aGUgcm9vdCBvZiB0aGUgcHJvZmlsZSANCisgKiBzaW5jZSBlbWZnZW4gaXMgbm90IGFibGUgdG8gZ2VuZXJhdGUgZWxlbWVudCBmb3IgZW1wdHkgcGFja2FnZS9wcm9maWxlDQorICogKFRoZSBvbmx5IG90aGVyIHNvbHV0aW9uIGlzIHRvIHVzZSBhIDw8RHVtbXk+PiBlbGVtZW50LCB3ZSB3YW50IHRvIGF2b2lkIHRoaXMgc29sdXRpb24gDQorICogc2luY2UgdGhlIHByb2ZpbGUgaXMgcHJvdmlkZWQgYnkgdGhlIE9NRykNCisgKiBAYXV0aG9yIEJlbm9pdCBNYWdnaSAoQ0VBIExJU1QpIGJlbm9pdC5tYWdnaUBjZWEuZnINCisgKg0KKyAqLw0KK3BhY2thZ2Ugb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRlZmluaXRpb247ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQvc3JjL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9kZXByZWNhdGVkZWxlbWVudHMvQ3VzdG9tQWxsb2NhdGVkSW1wbC5qYXZhIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQvc3JjL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9kZXByZWNhdGVkZWxlbWVudHMvQ3VzdG9tQWxsb2NhdGVkSW1wbC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZiZDdmODUKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC9zcmMvb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L2RlcHJlY2F0ZWRlbGVtZW50cy9DdXN0b21BbGxvY2F0ZWRJbXBsLmphdmEKQEAgLTAsMCArMSw5MiBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorICogQ29weXJpZ2h0IChjKSAyMDE1IENFQSBMSVNULg0KKyAqDQorICoNCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQorICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCisgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqDQorICogQ29udHJpYnV0b3JzOg0KKyAqICBCZW5vaXQgTWFnZ2kgKENFQSBMSVNUKSBiZW5vaXQubWFnZ2lAY2VhLmZyIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uDQorICoNCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorcGFja2FnZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGVwcmVjYXRlZGVsZW1lbnRzOw0KKw0KK2ltcG9ydCBqYXZhLnV0aWwuSXRlcmF0b3I7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jb21tb24udXRpbC5CYXNpY0VMaXN0Ow0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY29tbW9uLnV0aWwuRUxpc3Q7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS51dGlsLkVjb3JlRUxpc3QuVW5tb2RpZmlhYmxlRUxpc3Q7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5hbGxvY2F0aW9ucy5BbGxvY2F0ZTsNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRlcHJlY2F0ZWRlbGVtZW50cy5pbnRlcm5hbC5pbXBsLkFsbG9jYXRlZEltcGw7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnVtbDIudW1sLkRlcGVuZGVuY3k7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnVtbDIudW1sLkRpcmVjdGVkUmVsYXRpb25zaGlwOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS51bWwyLnVtbC5FbGVtZW50Ow0KK2ltcG9ydCBvcmcuZWNsaXBzZS51bWwyLnVtbC5OYW1lZEVsZW1lbnQ7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnVtbDIudW1sLnV0aWwuVU1MVXRpbDsNCisNCisvKioNCisgKiB0aGlzIGNsYXNzIGhhcyBiZWVuIGltcGxlbWVudGVkIGluIG9yZGVyIHRvIGNhbGN1bGF0ZSBkZXJpdmVkIHByb3BlcnRpZXMgb2YgIkFsbG9jYXRlZCIgc3RlcmVvdHlwZSBzZWUgUmVxdWlyZW1lbnQgRGVyaXZlZFByb3BlcnRpZXMgUmVxMDAxMCANCisgKg0KKyAqLw0KK3B1YmxpYyBjbGFzcyBDdXN0b21BbGxvY2F0ZWRJbXBsIGV4dGVuZHMgQWxsb2NhdGVkSW1wbCBpbXBsZW1lbnRzIEFsbG9jYXRlZCB7DQorDQorDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgRUxpc3Q8TmFtZWRFbGVtZW50PiBnZXRBbGxvY2F0ZWRGcm9tKCkgew0KKwkJLy8gQWxsb2NhdGVkRnJvbSBwcm9wZXJ0eSBsaXN0cyBhbGwgdGhlIG5hbWVkIGVsZW1lbnRzIGxpbmtlZCB0byBjdXJyZW50DQorCQkvLyBieSBhbiBBbGxvY2F0ZSBsaW5rLg0KKwkJLy8gQ3VycmVudCBlbGVtZW50IGlzIHRoZSB0YXJnZXQgb2YgdGhlIEFsbG9jYXRlIGxpbmsuDQorCQlFTGlzdDxOYW1lZEVsZW1lbnQ+IGFsbG9jYXRlZEZyb20gPSBuZXcgQmFzaWNFTGlzdDxOYW1lZEVsZW1lbnQ+KCk7DQorCQlBbGxvY2F0ZSBjdXJyZW50QWxsb2NhdGUgPSBudWxsOw0KKw0KKwkJaWYgKGdldEJhc2VfTmFtZWRFbGVtZW50KCkgIT0gbnVsbCkgew0KKwkJCS8vIEZpbmQgQWxsb2NhdGUgbGluaw0KKwkJCUl0ZXJhdG9yPERpcmVjdGVkUmVsYXRpb25zaGlwPiBpdERlcCA9IGdldEJhc2VfTmFtZWRFbGVtZW50KCkuZ2V0VGFyZ2V0RGlyZWN0ZWRSZWxhdGlvbnNoaXBzKCkuaXRlcmF0b3IoKTsNCisJCQl3aGlsZSAoaXREZXAuaGFzTmV4dCgpKSB7DQorCQkJCURpcmVjdGVkUmVsYXRpb25zaGlwIGN1cnJlbnREUmVsYXRpb25zaGlwID0gaXREZXAubmV4dCgpOw0KKwkJCQljdXJyZW50QWxsb2NhdGUgPSBVTUxVdGlsLmdldFN0ZXJlb3R5cGVBcHBsaWNhdGlvbihjdXJyZW50RFJlbGF0aW9uc2hpcCwgQWxsb2NhdGUuY2xhc3MpOw0KKw0KKwkJCQlpZiAoY3VycmVudEFsbG9jYXRlICE9IG51bGwpIHsNCisJCQkJCUVMaXN0PEVsZW1lbnQ+IHRhcmdldHMgPSBjdXJyZW50QWxsb2NhdGUuZ2V0QmFzZV9BYnN0cmFjdGlvbigpLmdldFNvdXJjZXMoKTsNCisJCQkJCUl0ZXJhdG9yPEVsZW1lbnQ+IGl0ID0gdGFyZ2V0cy5pdGVyYXRvcigpOw0KKwkJCQkJd2hpbGUgKGl0Lmhhc05leHQoKSkgew0KKwkJCQkJCUVsZW1lbnQgY3VycmVudEVsdCA9IGl0Lm5leHQoKTsNCisJCQkJCQlpZiAoY3VycmVudEVsdCBpbnN0YW5jZW9mIE5hbWVkRWxlbWVudCkgew0KKwkJCQkJCQlhbGxvY2F0ZWRGcm9tLmFkZCgoTmFtZWRFbGVtZW50KSBjdXJyZW50RWx0KTsNCisJCQkJCQl9DQorCQkJCQl9DQorCQkJCX0NCisJCQl9DQorCQl9DQorDQorCQlVbm1vZGlmaWFibGVFTGlzdDxOYW1lZEVsZW1lbnQ+IHJlc3VsdExpc3QgPSBuZXcgVW5tb2RpZmlhYmxlRUxpc3Q8TmFtZWRFbGVtZW50Pih0aGlzLCBEZXByZWNhdGVkZWxlbWVudHNQYWNrYWdlLmVJTlNUQU5DRS5nZXRBbGxvY2F0ZWRfQWxsb2NhdGVkRnJvbSgpLCBhbGxvY2F0ZWRGcm9tLnNpemUoKSwgYWxsb2NhdGVkRnJvbS50b0FycmF5KCkpOw0KKwkJcmV0dXJuIHJlc3VsdExpc3Q7DQorCX0NCisNCisJQE92ZXJyaWRlDQorCXB1YmxpYyBFTGlzdDxOYW1lZEVsZW1lbnQ+IGdldEFsbG9jYXRlZFRvKCkgew0KKwkJLy8gQWxsb2NhdGVkRnJvbSBwcm9wZXJ0eSBsaXN0cyBhbGwgdGhlIG5hbWVkIGVsZW1lbnRzIGxpbmtlZCB0byBjdXJyZW50DQorCQkvLyBieSBhbiBBbGxvY2F0ZSBsaW5rLg0KKwkJLy8gQ3VycmVudCBlbGVtZW50IGlzIHRoZSB0YXJnZXQgb2YgdGhlIEFsbG9jYXRlIGxpbmsuDQorCQlFTGlzdDxOYW1lZEVsZW1lbnQ+IGFsbG9jYXRlZFRvID0gbmV3IEJhc2ljRUxpc3Q8TmFtZWRFbGVtZW50PigpOw0KKwkJQWxsb2NhdGUgY3VycmVudEFsbG9jYXRlID0gbnVsbDsNCisNCisJCWlmIChnZXRCYXNlX05hbWVkRWxlbWVudCgpICE9IG51bGwpIHsNCisJCQkvLyBGaW5kIEFsbG9jYXRlIGxpbmsNCisJCQlJdGVyYXRvcjxEZXBlbmRlbmN5PiBpdERlcCA9IGdldEJhc2VfTmFtZWRFbGVtZW50KCkuZ2V0Q2xpZW50RGVwZW5kZW5jaWVzKCkuaXRlcmF0b3IoKTsNCisJCQl3aGlsZSAoaXREZXAuaGFzTmV4dCgpKSB7DQorCQkJCURlcGVuZGVuY3kgY3VycmVudERlcGVuZGVuY3kgPSBpdERlcC5uZXh0KCk7DQorCQkJCWN1cnJlbnRBbGxvY2F0ZSA9IFVNTFV0aWwuZ2V0U3RlcmVvdHlwZUFwcGxpY2F0aW9uKGN1cnJlbnREZXBlbmRlbmN5LCBBbGxvY2F0ZS5jbGFzcyk7DQorDQorCQkJCWlmIChjdXJyZW50QWxsb2NhdGUgIT0gbnVsbCkgew0KKwkJCQkJYWxsb2NhdGVkVG8uYWRkQWxsKGN1cnJlbnRBbGxvY2F0ZS5nZXRCYXNlX0Fic3RyYWN0aW9uKCkuZ2V0U3VwcGxpZXJzKCkpOw0KKwkJCQl9DQorCQkJfQ0KKwkJfQ0KKwkJVW5tb2RpZmlhYmxlRUxpc3Q8TmFtZWRFbGVtZW50PiByZXN1bHRMaXN0ID0gbmV3IFVubW9kaWZpYWJsZUVMaXN0PE5hbWVkRWxlbWVudD4odGhpcywgRGVwcmVjYXRlZGVsZW1lbnRzUGFja2FnZS5lSU5TVEFOQ0UuZ2V0QWxsb2NhdGVkX0FsbG9jYXRlZFRvKCksIGFsbG9jYXRlZFRvLnNpemUoKSwgYWxsb2NhdGVkVG8udG9BcnJheSgpKTsNCisJCXJldHVybiByZXN1bHRMaXN0Ow0KKwl9DQorDQorfQ0KZGlmZiAtLWdpdCBhL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0L3NyYy9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvZGVwcmVjYXRlZGVsZW1lbnRzL0N1c3RvbURlcHJlY2F0ZWRlbGVtZW50c0ZhY3RvcnlJbXBsLmphdmEgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC9zcmMvb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L2RlcHJlY2F0ZWRlbGVtZW50cy9DdXN0b21EZXByZWNhdGVkZWxlbWVudHNGYWN0b3J5SW1wbC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRhNTBjY2MKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC9zcmMvb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L2RlcHJlY2F0ZWRlbGVtZW50cy9DdXN0b21EZXByZWNhdGVkZWxlbWVudHNGYWN0b3J5SW1wbC5qYXZhCkBAIC0wLDAgKzEsNDYgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyAqIENvcHlyaWdodCAoYykgMjAxNSBDRUEgTElTVC4NCisgKg0KKyAqDQorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KKyAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQorICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgKg0KKyAqIENvbnRyaWJ1dG9yczoNCisgKiAgQmVub2l0IE1hZ2dpIChDRUEgTElTVCkgYmVub2l0Lm1hZ2dpQGNlYS5mciAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbg0KKyAqDQorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KK3BhY2thZ2Ugb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRlcHJlY2F0ZWRlbGVtZW50czsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRlcHJlY2F0ZWRlbGVtZW50cy5pbnRlcm5hbC5pbXBsLkRlcHJlY2F0ZWRlbGVtZW50c0ZhY3RvcnlJbXBsOw0KKw0KKw0KKy8qKg0KKyAqIHRoaXMgY2xhc3MgaGFzIGJlZW4gYWRkZWQgaW4gb3JkZXIgdG8gaW50ZWdyYXRlZCBzcGVjaWZpYyBpbXBsZW1lbnRhdGlvbiBvZiBTdGVyZW90eXBlczogRmxvd1BvcnQsIEFsbG9jYXRlZCwgUmVxdWlyZW1lbnRSZWxhdGVkLg0KKyAqIFNwZWNpZmljIGNvZGUgaGFzIGJlZW4gYWRkZWQgdG8gY2FsY3VsYXRlIGRlcml2ZWQgcHJvcGVydGllcyBzZWUgUmVxdWlyZW1lbnQgUmVxMDAxMCBEZXJpdmVkUHJvcGVydGllcw0KKyAqIA0KKyAqDQorICovDQorcHVibGljIGNsYXNzIEN1c3RvbURlcHJlY2F0ZWRlbGVtZW50c0ZhY3RvcnlJbXBsIGV4dGVuZHMgRGVwcmVjYXRlZGVsZW1lbnRzRmFjdG9yeUltcGwgaW1wbGVtZW50cw0KKwkJRGVwcmVjYXRlZGVsZW1lbnRzRmFjdG9yeSB7DQorDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgRmxvd1BvcnQgY3JlYXRlRmxvd1BvcnQoKSB7DQorCQlDdXN0b21GbG93UG9ydEltcGwgY3VzdG9tRmxvd1BvcnRJbXBsID0gbmV3IEN1c3RvbUZsb3dQb3J0SW1wbCgpOw0KKwkJcmV0dXJuIGN1c3RvbUZsb3dQb3J0SW1wbDsNCisJfQ0KKw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIEFsbG9jYXRlZCBjcmVhdGVBbGxvY2F0ZWQoKSB7DQorCQlDdXN0b21BbGxvY2F0ZWRJbXBsIGN1c3RvbUFsbG9jYXRlZEltcGwgPSBuZXcgQ3VzdG9tQWxsb2NhdGVkSW1wbCgpOw0KKwkJcmV0dXJuIGN1c3RvbUFsbG9jYXRlZEltcGw7DQorCX0NCisNCisJQE92ZXJyaWRlDQorCXB1YmxpYyBSZXF1aXJlbWVudFJlbGF0ZWQgY3JlYXRlUmVxdWlyZW1lbnRSZWxhdGVkKCkgew0KKwkJQ3VzdG9tUmVxdWlyZW1lbnRSZWxhdGVkSW1wbCBjdXN0b21SZXF1aXJlbWVudFJlbGF0ZWRJbXBsID0gbmV3IEN1c3RvbVJlcXVpcmVtZW50UmVsYXRlZEltcGwoKTsNCisJCXJldHVybiBjdXN0b21SZXF1aXJlbWVudFJlbGF0ZWRJbXBsOw0KKwl9DQorDQorfQ0KZGlmZiAtLWdpdCBhL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0L3NyYy9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvZGVwcmVjYXRlZGVsZW1lbnRzL0N1c3RvbUZsb3dQb3J0SW1wbC5qYXZhIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQvc3JjL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9kZXByZWNhdGVkZWxlbWVudHMvQ3VzdG9tRmxvd1BvcnRJbXBsLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjU4YTE2MQotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0L3NyYy9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvZGVwcmVjYXRlZGVsZW1lbnRzL0N1c3RvbUZsb3dQb3J0SW1wbC5qYXZhCkBAIC0wLDAgKzEsNTYgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyAqIENvcHlyaWdodCAoYykgMjAxNSBDRUEgTElTVC4NCisgKg0KKyAqDQorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KKyAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQorICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgKg0KKyAqIENvbnRyaWJ1dG9yczoNCisgKiAgQmVub2l0IE1hZ2dpIChDRUEgTElTVCkgYmVub2l0Lm1hZ2dpQGNlYS5mciAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbg0KKyAqDQorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KK3BhY2thZ2Ugb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRlcHJlY2F0ZWRlbGVtZW50czsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRlcHJlY2F0ZWRlbGVtZW50cy5pbnRlcm5hbC5pbXBsLkZsb3dQb3J0SW1wbDsNCitpbXBvcnQgb3JnLmVjbGlwc2UudW1sMi51bWwuSW50ZXJmYWNlOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS51bWwyLnVtbC5UeXBlOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS51bWwyLnVtbC51dGlsLlVNTFV0aWw7DQorDQorLyoqDQorICogdGhpcyBjbGFzcyBoYXMgYmVlbiBpbXBsZW1lbnRlZCBpbiBvcmRlciB0byBjYWxjdWxhdGUgZGVyaXZlZCBwcm9wZXJ0aWVzIG9mICJGbG93UG9ydCIgc3RlcmVvdHlwZSBzZWUgUmVxdWlyZW1lbnQgRGVyaXZlZFByb3BlcnRpZXMgUmVxMDAxMCANCisgKg0KKyAqLw0KK3B1YmxpYyBjbGFzcyBDdXN0b21GbG93UG9ydEltcGwgZXh0ZW5kcyBGbG93UG9ydEltcGwgaW1wbGVtZW50cyBGbG93UG9ydCB7DQorDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgYm9vbGVhbiBpc0F0b21pYygpIHsNCisJCS8vIFRoZSBGbG93UG9ydCBpcyBBdG9taWMgaWYgaXQgaXMgbm90IHR5cGVkIGJ5IGEgRmxvd1NwZWNpZmljYXRpb24NCisJCUJvb2xlYW4gaXNBdG9taWMgPSB0cnVlOw0KKwkJRmxvd1NwZWNpZmljYXRpb24gZmxvd1NwZWMgPSBudWxsOw0KKw0KKwkJaWYgKGdldEJhc2VfUG9ydCgpICE9IG51bGwpIHsNCisJCQkvLyBGaW5kIEZsb3dQb3J0IHR5cGUNCisJCQlUeXBlIHR5cGUgPSBnZXRCYXNlX1BvcnQoKS5nZXRUeXBlKCk7DQorCQkJaWYgKCh0eXBlICE9IG51bGwpICYmICh0eXBlIGluc3RhbmNlb2YgSW50ZXJmYWNlKSkgew0KKwkJCQlmbG93U3BlYyA9IFVNTFV0aWwuZ2V0U3RlcmVvdHlwZUFwcGxpY2F0aW9uKHR5cGUsIEZsb3dTcGVjaWZpY2F0aW9uLmNsYXNzKTsNCisJCQl9DQorDQorCQkJaWYgKGZsb3dTcGVjICE9IG51bGwpIHsNCisJCQkJaXNBdG9taWMgPSBmYWxzZTsNCisJCQl9DQorCQl9DQorCQlyZXR1cm4gaXNBdG9taWM7DQorCX0NCisNCisNCisNCisJQE92ZXJyaWRlDQorCXB1YmxpYyB2b2lkIHNldElzQXRvbWljKGJvb2xlYW4gbmV3SXNBdG9taWMpIHsNCisJCS8vIFRPRE86IGltcGxlbWVudCB0aGlzIG1ldGhvZCB0byBzZXQgdGhlICdJcyBBdG9taWMnIGF0dHJpYnV0ZQ0KKwkJLy8gRW5zdXJlIHRoYXQgeW91IHJlbW92ZSBAZ2VuZXJhdGVkIG9yIG1hcmsgaXQgQGdlbmVyYXRlZCBOT1QNCisJCS8vIHRocm93IG5ldyBVbnN1cHBvcnRlZE9wZXJhdGlvbkV4Y2VwdGlvbigpOw0KKwl9DQorDQorfQ0KZGlmZiAtLWdpdCBhL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0L3NyYy9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvZGVwcmVjYXRlZGVsZW1lbnRzL0N1c3RvbVJlcXVpcmVtZW50UmVsYXRlZEltcGwuamF2YSBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0L3NyYy9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvZGVwcmVjYXRlZGVsZW1lbnRzL0N1c3RvbVJlcXVpcmVtZW50UmVsYXRlZEltcGwuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZTM0ZGNhCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQvc3JjL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9kZXByZWNhdGVkZWxlbWVudHMvQ3VzdG9tUmVxdWlyZW1lbnRSZWxhdGVkSW1wbC5qYXZhCkBAIC0wLDAgKzEsMTcxIEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisgKiBDb3B5cmlnaHQgKGMpIDIwMTUgQ0VBIExJU1QuDQorICoNCisgKg0KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCisgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCisgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICoNCisgKiBDb250cmlidXRvcnM6DQorICogIEJlbm9pdCBNYWdnaSAoQ0VBIExJU1QpIGJlbm9pdC5tYWdnaUBjZWEuZnIgLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24NCisgKg0KKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCitwYWNrYWdlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kZXByZWNhdGVkZWxlbWVudHM7DQorDQoraW1wb3J0IGphdmEudXRpbC5JdGVyYXRvcjsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi51dGlsLkJhc2ljRUxpc3Q7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5jb21tb24udXRpbC5FTGlzdDsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLnV0aWwuRWNvcmVFTGlzdC5Vbm1vZGlmaWFibGVFTGlzdDsNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRlcHJlY2F0ZWRlbGVtZW50cy5pbnRlcm5hbC5pbXBsLlJlcXVpcmVtZW50UmVsYXRlZEltcGw7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5yZXF1aXJlbWVudHMuUmVxdWlyZW1lbnQ7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5yZXF1aXJlbWVudHMuU2F0aXNmeTsNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnJlcXVpcmVtZW50cy5WZXJpZnk7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnVtbDIudW1sLkRlcGVuZGVuY3k7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnVtbDIudW1sLkRpcmVjdGVkUmVsYXRpb25zaGlwOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS51bWwyLnVtbC5OYW1lZEVsZW1lbnQ7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnVtbDIudW1sLnByb2ZpbGUuc3RhbmRhcmQuUmVmaW5lOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS51bWwyLnVtbC5wcm9maWxlLnN0YW5kYXJkLlN0YW5kYXJkUGFja2FnZTsNCitpbXBvcnQgb3JnLmVjbGlwc2UudW1sMi51bWwucHJvZmlsZS5zdGFuZGFyZC5UcmFjZTsNCitpbXBvcnQgb3JnLmVjbGlwc2UudW1sMi51bWwudXRpbC5VTUxVdGlsOw0KKw0KKy8qKg0KKyAqIHRoaXMgY2xhc3MgaGFzIGJlZW4gaW1wbGVtZW50ZWQgaW4gb3JkZXIgdG8gY2FsY3VsYXRlIGRlcml2ZWQgcHJvcGVydGllcyBvZiAiUmVxdWlyZW1lbnRSZWxhdGVkIiBzdGVyZW90eXBlIHNlZSBSZXF1aXJlbWVudCBEZXJpdmVkUHJvcGVydGllcyBSZXEwMDEwIA0KKyAqDQorICovDQorcHVibGljIGNsYXNzIEN1c3RvbVJlcXVpcmVtZW50UmVsYXRlZEltcGwgZXh0ZW5kcyBSZXF1aXJlbWVudFJlbGF0ZWRJbXBsIGltcGxlbWVudHMgUmVxdWlyZW1lbnRSZWxhdGVkIHsNCisNCisNCisJQE92ZXJyaWRlDQorCXB1YmxpYyBFTGlzdDxSZXF1aXJlbWVudD4gZ2V0UmVmaW5lcygpIHsNCisJCS8vIFRoaXMgc2hvdWxkIHJldHVybiB0aGUgUmVxdWlyZW1lbnQocykgcmVmaW5lZCBieSBjdXJyZW50IGVsZW1lbnQNCisJCUVMaXN0PFJlcXVpcmVtZW50PiByZWZpbmVzID0gbmV3IEJhc2ljRUxpc3Q8UmVxdWlyZW1lbnQ+KCk7DQorCQlSZWZpbmUgY3VycmVudFJlZmluZSA9IG51bGw7DQorDQorCQlpZiAoZ2V0QmFzZV9OYW1lZEVsZW1lbnQoKSAhPSBudWxsKSB7DQorCQkJLy8gRmluZCBSZWZpbmUgbGluaw0KKwkJCUl0ZXJhdG9yPERlcGVuZGVuY3k+IGl0RGVwID0gZ2V0QmFzZV9OYW1lZEVsZW1lbnQoKS5nZXRDbGllbnREZXBlbmRlbmNpZXMoKS5pdGVyYXRvcigpOw0KKw0KKwkJCXdoaWxlIChpdERlcC5oYXNOZXh0KCkpIHsNCisJCQkJRGVwZW5kZW5jeSBjdXJyZW50RGVwZW5kZW5jeSA9IGl0RGVwLm5leHQoKTsNCisJCQkJY3VycmVudFJlZmluZSA9IFVNTFV0aWwuZ2V0U3RlcmVvdHlwZUFwcGxpY2F0aW9uKGN1cnJlbnREZXBlbmRlbmN5LCBSZWZpbmUuY2xhc3MpOw0KKw0KKwkJCQlpZiAoY3VycmVudFJlZmluZSAhPSBudWxsKSB7DQorCQkJCQlFTGlzdDxOYW1lZEVsZW1lbnQ+IHN1cHBsaWVycyA9IGN1cnJlbnRSZWZpbmUuZ2V0QmFzZV9BYnN0cmFjdGlvbigpLmdldFN1cHBsaWVycygpOw0KKwkJCQkJSXRlcmF0b3I8TmFtZWRFbGVtZW50PiBpdCA9IHN1cHBsaWVycy5pdGVyYXRvcigpOw0KKwkJCQkJd2hpbGUgKGl0Lmhhc05leHQoKSkgew0KKwkJCQkJCVJlcXVpcmVtZW50IGN1cnJlbnRSZXF1aXJlbWVudCA9IFVNTFV0aWwuZ2V0U3RlcmVvdHlwZUFwcGxpY2F0aW9uKGl0Lm5leHQoKSwgUmVxdWlyZW1lbnQuY2xhc3MpOw0KKwkJCQkJCWlmIChjdXJyZW50UmVxdWlyZW1lbnQgIT0gbnVsbCkgew0KKwkJCQkJCQlyZWZpbmVzLmFkZChjdXJyZW50UmVxdWlyZW1lbnQpOw0KKwkJCQkJCX0NCisJCQkJCX0NCisJCQkJfQ0KKwkJCX0NCisJCX0NCisNCisJCVVubW9kaWZpYWJsZUVMaXN0PFJlcXVpcmVtZW50PiByZXN1bHRMaXN0ID0gbmV3IFVubW9kaWZpYWJsZUVMaXN0PFJlcXVpcmVtZW50Pih0aGlzLCBEZXByZWNhdGVkZWxlbWVudHNQYWNrYWdlLmVJTlNUQU5DRS5nZXRSZXF1aXJlbWVudFJlbGF0ZWRfUmVmaW5lcygpLCByZWZpbmVzLnNpemUoKSwgcmVmaW5lcy50b0FycmF5KCkpOw0KKwkJcmV0dXJuIHJlc3VsdExpc3Q7DQorCX0NCisNCisJQE92ZXJyaWRlDQorCXB1YmxpYyBFTGlzdDxSZXF1aXJlbWVudD4gZ2V0U2F0aXNmaWVzKCkgew0KKwkJLy8gVGhpcyBzaG91bGQgcmV0dXJuIHRoZSBSZXF1aXJlbWVudChzKSBzYXRpc2ZpZWQgYnkgY3VycmVudCBlbGVtZW50DQorCQlFTGlzdDxSZXF1aXJlbWVudD4gc2F0aXNmaWVzID0gbmV3IEJhc2ljRUxpc3Q8UmVxdWlyZW1lbnQ+KCk7DQorCQlTYXRpc2Z5IGN1cnJlbnRTYXRpc2Z5ID0gbnVsbDsNCisNCisJCWlmIChnZXRCYXNlX05hbWVkRWxlbWVudCgpICE9IG51bGwpIHsNCisJCQkvLyBGaW5kIFNhdGlzZnkgbGluaw0KKwkJCUl0ZXJhdG9yPERlcGVuZGVuY3k+IGl0RGVwID0gZ2V0QmFzZV9OYW1lZEVsZW1lbnQoKS5nZXRDbGllbnREZXBlbmRlbmNpZXMoKS5pdGVyYXRvcigpOw0KKw0KKwkJCXdoaWxlIChpdERlcC5oYXNOZXh0KCkpIHsNCisJCQkJRGVwZW5kZW5jeSBjdXJyZW50RGVwZW5kZW5jeSA9IGl0RGVwLm5leHQoKTsNCisJCQkJY3VycmVudFNhdGlzZnkgPSBVTUxVdGlsLmdldFN0ZXJlb3R5cGVBcHBsaWNhdGlvbihjdXJyZW50RGVwZW5kZW5jeSwgU2F0aXNmeS5jbGFzcyk7DQorDQorCQkJCWlmIChjdXJyZW50U2F0aXNmeSAhPSBudWxsKSB7DQorCQkJCQlFTGlzdDxOYW1lZEVsZW1lbnQ+IHN1cHBsaWVycyA9IGN1cnJlbnRTYXRpc2Z5LmdldEJhc2VfQWJzdHJhY3Rpb24oKS5nZXRTdXBwbGllcnMoKTsNCisJCQkJCUl0ZXJhdG9yPE5hbWVkRWxlbWVudD4gaXQgPSBzdXBwbGllcnMuaXRlcmF0b3IoKTsNCisJCQkJCXdoaWxlIChpdC5oYXNOZXh0KCkpIHsNCisJCQkJCQlSZXF1aXJlbWVudCBjdXJyZW50UmVxdWlyZW1lbnQgPSBVTUxVdGlsLmdldFN0ZXJlb3R5cGVBcHBsaWNhdGlvbihpdC5uZXh0KCksIFJlcXVpcmVtZW50LmNsYXNzKTsNCisJCQkJCQlpZiAoY3VycmVudFJlcXVpcmVtZW50ICE9IG51bGwpIHsNCisJCQkJCQkJc2F0aXNmaWVzLmFkZChjdXJyZW50UmVxdWlyZW1lbnQpOw0KKwkJCQkJCX0NCisJCQkJCX0NCisJCQkJfQ0KKwkJCX0NCisJCX0NCisNCisJCVVubW9kaWZpYWJsZUVMaXN0PFJlcXVpcmVtZW50PiByZXN1bHRMaXN0ID0gbmV3IFVubW9kaWZpYWJsZUVMaXN0PFJlcXVpcmVtZW50Pih0aGlzLCBEZXByZWNhdGVkZWxlbWVudHNQYWNrYWdlLmVJTlNUQU5DRS5nZXRSZXF1aXJlbWVudFJlbGF0ZWRfU2F0aXNmaWVzKCksIHNhdGlzZmllcy5zaXplKCksIHNhdGlzZmllcy50b0FycmF5KCkpOw0KKwkJcmV0dXJuIHJlc3VsdExpc3Q7DQorCX0NCisNCisJQE92ZXJyaWRlDQorCXB1YmxpYyBFTGlzdDxSZXF1aXJlbWVudD4gZ2V0VHJhY2VkRnJvbSgpIHsNCisNCisJCS8vIERlcml2ZWQgZnJvbSBhbGwgcmVxdWlyZW1lbnRzIHRoYXQgYXJlIHN1cHBsaWVyIG9mIGEgInRyYWNlIg0KKwkJLy8gcmVsYXRpb25zaGlwIGZvcg0KKwkJLy8gd2hpY2ggdGhpcyBlbGVtZW50IGlzIGEgY2xpZW50Lg0KKwkJLy8gInRyYWNlIiBzdWJ0eXBlcyBhcmUgbm90IGluY2x1ZGVkIChzZWUgYnVnICMzNTI1NjMpLg0KKwkJRUxpc3Q8UmVxdWlyZW1lbnQ+IHRyYWNlZEZyb20gPSBuZXcgQmFzaWNFTGlzdDxSZXF1aXJlbWVudD4oKTsNCisJCVRyYWNlIGN1cnJlbnRUcmFjZSA9IG51bGw7DQorDQorCQlpZiAoZ2V0QmFzZV9OYW1lZEVsZW1lbnQoKSAhPSBudWxsKSB7DQorCQkJLy8gRmluZCBUcmFjZSBsaW5rDQorCQkJRUxpc3Q8RGlyZWN0ZWRSZWxhdGlvbnNoaXA+IHJlbGF0aW9uc2hpcHMgPSBnZXRCYXNlX05hbWVkRWxlbWVudCgpLmdldFNvdXJjZURpcmVjdGVkUmVsYXRpb25zaGlwcygpOw0KKwkJCUl0ZXJhdG9yPERpcmVjdGVkUmVsYXRpb25zaGlwPiBpdERlcCA9IHJlbGF0aW9uc2hpcHMuaXRlcmF0b3IoKTsNCisNCisJCQl3aGlsZSAoaXREZXAuaGFzTmV4dCgpKSB7DQorCQkJCURpcmVjdGVkUmVsYXRpb25zaGlwIGN1cnJlbnREUmVsYXRpb25zaGlwID0gaXREZXAubmV4dCgpOw0KKwkJCQljdXJyZW50VHJhY2UgPSBVTUxVdGlsLmdldFN0ZXJlb3R5cGVBcHBsaWNhdGlvbihjdXJyZW50RFJlbGF0aW9uc2hpcCwgVHJhY2UuY2xhc3MpOw0KKw0KKwkJCQkvLyBNdXN0IGJlIGEgVHJhY2Ugbm90IGEgc3VidHlwZSAoc2VlIGJ1ZyAjMzUyNTYzKS4NCisJCQkJaWYgKChjdXJyZW50VHJhY2UgIT0gbnVsbCkgJiYgKGN1cnJlbnRUcmFjZS5lQ2xhc3MoKSA9PSBTdGFuZGFyZFBhY2thZ2UuZUlOU1RBTkNFLmdldFRyYWNlKCkpKSB7DQorCQkJCQlFTGlzdDxOYW1lZEVsZW1lbnQ+IGNsaWVudHMgPSBjdXJyZW50VHJhY2UuZ2V0QmFzZV9BYnN0cmFjdGlvbigpLmdldFN1cHBsaWVycygpOw0KKwkJCQkJSXRlcmF0b3I8TmFtZWRFbGVtZW50PiBpdCA9IGNsaWVudHMuaXRlcmF0b3IoKTsNCisJCQkJCXdoaWxlIChpdC5oYXNOZXh0KCkpIHsNCisJCQkJCQlSZXF1aXJlbWVudCBjdXJyZW50UmVxdWlyZW1lbnQgPSBVTUxVdGlsLmdldFN0ZXJlb3R5cGVBcHBsaWNhdGlvbihpdC5uZXh0KCksIFJlcXVpcmVtZW50LmNsYXNzKTsNCisJCQkJCQlpZiAoY3VycmVudFJlcXVpcmVtZW50ICE9IG51bGwpIHsNCisJCQkJCQkJdHJhY2VkRnJvbS5hZGQoY3VycmVudFJlcXVpcmVtZW50KTsNCisJCQkJCQl9DQorCQkJCQl9DQorCQkJCX0NCisJCQl9DQorCQl9DQorDQorCQlVbm1vZGlmaWFibGVFTGlzdDxSZXF1aXJlbWVudD4gcmVzdWx0TGlzdCA9IG5ldyBVbm1vZGlmaWFibGVFTGlzdDxSZXF1aXJlbWVudD4odGhpcywgRGVwcmVjYXRlZGVsZW1lbnRzUGFja2FnZS5lSU5TVEFOQ0UuZ2V0UmVxdWlyZW1lbnRSZWxhdGVkX1RyYWNlZEZyb20oKSwgdHJhY2VkRnJvbS5zaXplKCksIHRyYWNlZEZyb20udG9BcnJheSgpKTsNCisJCXJldHVybiByZXN1bHRMaXN0Ow0KKwl9DQorDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgRUxpc3Q8UmVxdWlyZW1lbnQ+IGdldFZlcmlmaWVzKCkgew0KKwkJLy8gVGhpcyBzaG91bGQgcmV0dXJuIHRoZSBSZXF1aXJlbWVudChzKSB2ZXJpZmllZCBieSBjdXJyZW50IGVsZW1lbnQNCisJCUVMaXN0PFJlcXVpcmVtZW50PiB2ZXJpZmllcyA9IG5ldyBCYXNpY0VMaXN0PFJlcXVpcmVtZW50PigpOw0KKwkJVmVyaWZ5IGN1cnJlbnRWZXJpZnkgPSBudWxsOw0KKw0KKwkJaWYgKGdldEJhc2VfTmFtZWRFbGVtZW50KCkgIT0gbnVsbCkgew0KKwkJCS8vIEZpbmQgU2F0aXNmeSBsaW5rDQorCQkJSXRlcmF0b3I8RGVwZW5kZW5jeT4gaXREZXAgPSBnZXRCYXNlX05hbWVkRWxlbWVudCgpLmdldENsaWVudERlcGVuZGVuY2llcygpLml0ZXJhdG9yKCk7DQorDQorCQkJd2hpbGUgKGl0RGVwLmhhc05leHQoKSkgew0KKwkJCQlEZXBlbmRlbmN5IGN1cnJlbnREZXBlbmRlbmN5ID0gaXREZXAubmV4dCgpOw0KKwkJCQljdXJyZW50VmVyaWZ5ID0gVU1MVXRpbC5nZXRTdGVyZW90eXBlQXBwbGljYXRpb24oY3VycmVudERlcGVuZGVuY3ksIFZlcmlmeS5jbGFzcyk7DQorDQorCQkJCWlmIChjdXJyZW50VmVyaWZ5ICE9IG51bGwpIHsNCisJCQkJCUVMaXN0PE5hbWVkRWxlbWVudD4gc3VwcGxpZXJzID0gY3VycmVudFZlcmlmeS5nZXRCYXNlX0Fic3RyYWN0aW9uKCkuZ2V0U3VwcGxpZXJzKCk7DQorCQkJCQlJdGVyYXRvcjxOYW1lZEVsZW1lbnQ+IGl0ID0gc3VwcGxpZXJzLml0ZXJhdG9yKCk7DQorCQkJCQl3aGlsZSAoaXQuaGFzTmV4dCgpKSB7DQorCQkJCQkJUmVxdWlyZW1lbnQgY3VycmVudFJlcXVpcmVtZW50ID0gVU1MVXRpbC5nZXRTdGVyZW90eXBlQXBwbGljYXRpb24oaXQubmV4dCgpLCBSZXF1aXJlbWVudC5jbGFzcyk7DQorCQkJCQkJaWYgKGN1cnJlbnRSZXF1aXJlbWVudCAhPSBudWxsKSB7DQorCQkJCQkJCXZlcmlmaWVzLmFkZChjdXJyZW50UmVxdWlyZW1lbnQpOw0KKwkJCQkJCX0NCisJCQkJCX0NCisJCQkJfQ0KKwkJCX0NCisJCX0NCisNCisNCisJCVVubW9kaWZpYWJsZUVMaXN0PFJlcXVpcmVtZW50PiByZXN1bHRMaXN0ID0gbmV3IFVubW9kaWZpYWJsZUVMaXN0PFJlcXVpcmVtZW50Pih0aGlzLCBEZXByZWNhdGVkZWxlbWVudHNQYWNrYWdlLmVJTlNUQU5DRS5nZXRSZXF1aXJlbWVudFJlbGF0ZWRfVmVyaWZpZXMoKSwgdmVyaWZpZXMuc2l6ZSgpLCB2ZXJpZmllcy50b0FycmF5KCkpOw0KKwkJcmV0dXJuIHJlc3VsdExpc3Q7DQorCX0NCisNCit9IA0KZGlmZiAtLWdpdCBhL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0L3NyYy9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvbW9kZWxlbGVtZW50cy9DdXN0b21Nb2RlbGVsZW1lbnRzRmFjdG9yeUltcGwuamF2YSBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0L3NyYy9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvbW9kZWxlbGVtZW50cy9DdXN0b21Nb2RlbGVsZW1lbnRzRmFjdG9yeUltcGwuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NDJjMTA4Ci0tLSAvZGV2L251bGwKKysrIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQvc3JjL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9tb2RlbGVsZW1lbnRzL0N1c3RvbU1vZGVsZWxlbWVudHNGYWN0b3J5SW1wbC5qYXZhCkBAIC0wLDAgKzEsMzIgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyAqIENvcHlyaWdodCAoYykgMjAxNSBDRUEgTElTVC4NCisgKg0KKyAqDQorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KKyAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQorICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgKg0KKyAqIENvbnRyaWJ1dG9yczoNCisgKiAgQmVub2l0IE1hZ2dpIChDRUEgTElTVCkgYmVub2l0Lm1hZ2dpQGNlYS5mciAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbg0KKyAqDQorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KK3BhY2thZ2Ugb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0Lm1vZGVsZWxlbWVudHM7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5tb2RlbGVsZW1lbnRzLmludGVybmFsLmltcGwuTW9kZWxlbGVtZW50c0ZhY3RvcnlJbXBsOw0KKw0KKy8qKg0KKyAqIHRoaXMgY2xhc3MgaGFzIGJlZW4gYWRkZWQgaW4gb3JkZXIgdG8gaW50ZWdyYXRlZCBzcGVjaWZpYyBpbXBsZW1lbnRhdGlvbiBvZiBTdGVyZW90eXBlczogVmlldy4NCisgKiBTcGVjaWZpYyBjb2RlIGhhcyBiZWVuIGFkZGVkIHRvIGNhbGN1bGF0ZSBkZXJpdmVkIHByb3BlcnRpZXMgc2VlIFJlcXVpcmVtZW50IFJlcTAwMTAgRGVyaXZlZFByb3BlcnRpZXMNCisgKiANCisgKg0KKyAqLw0KK3B1YmxpYyBjbGFzcyBDdXN0b21Nb2RlbGVsZW1lbnRzRmFjdG9yeUltcGwgZXh0ZW5kcyBNb2RlbGVsZW1lbnRzRmFjdG9yeUltcGwgaW1wbGVtZW50cyBNb2RlbGVsZW1lbnRzRmFjdG9yeSB7DQorDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgVmlldyBjcmVhdGVWaWV3KCkgew0KKwkJQ3VzdG9tVmlld0ltcGwgY3VzdG9tVmlld0ltcGwgPSBuZXcgQ3VzdG9tVmlld0ltcGwoKTsNCisJCXJldHVybiBjdXN0b21WaWV3SW1wbDsNCisJfQ0KKw0KK30NCmRpZmYgLS1naXQgYS9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC9zcmMvb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L21vZGVsZWxlbWVudHMvQ3VzdG9tVmlld0ltcGwuamF2YSBiL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0L3NyYy9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvbW9kZWxlbGVtZW50cy9DdXN0b21WaWV3SW1wbC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjllMTM5NzYKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC9zcmMvb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L21vZGVsZWxlbWVudHMvQ3VzdG9tVmlld0ltcGwuamF2YQpAQCAtMCwwICsxLDY2IEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisgKiBDb3B5cmlnaHQgKGMpIDIwMTUgQ0VBIExJU1QuDQorICoNCisgKg0KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCisgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCisgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICoNCisgKiBDb250cmlidXRvcnM6DQorICogIEJlbm9pdCBNYWdnaSAoQ0VBIExJU1QpIGJlbm9pdC5tYWdnaUBjZWEuZnIgLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24NCisgKg0KKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCitwYWNrYWdlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5tb2RlbGVsZW1lbnRzOw0KKw0KK2ltcG9ydCBqYXZhLnV0aWwuSXRlcmF0b3I7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5tb2RlbGVsZW1lbnRzLmludGVybmFsLmltcGwuVmlld0ltcGw7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnVtbDIudW1sLkRlcGVuZGVuY3k7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnVtbDIudW1sLkVsZW1lbnQ7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnVtbDIudW1sLnV0aWwuVU1MVXRpbDsNCisNCisvKioNCisgKiB0aGlzIGNsYXNzIGhhcyBiZWVuIGltcGxlbWVudGVkIGluIG9yZGVyIHRvIGNhbGN1bGF0ZSBkZXJpdmVkIHByb3BlcnRpZXMgb2YgIlZpZXciIHN0ZXJlb3R5cGUgc2VlIFJlcXVpcmVtZW50IERlcml2ZWRQcm9wZXJ0aWVzIFJlcTAwMTAgDQorICoNCisgKi8NCitwdWJsaWMgY2xhc3MgQ3VzdG9tVmlld0ltcGwgZXh0ZW5kcyBWaWV3SW1wbCBpbXBsZW1lbnRzIFZpZXcgew0KKw0KKw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIFZpZXdQb2ludCBiYXNpY0dldFZpZXdQb2ludCgpIHsNCisJCS8vIFZpZXdQb2ludCBpcyByZWxhdGVkIHRvIFZpZXcgdmlhIGEgQ29uZm9ybSBkZXBlbmRlbmN5DQorCQlWaWV3UG9pbnQgdmlld1BvaW50ID0gbnVsbDsNCisJCUNvbmZvcm0gY29uZm9ybSA9IG51bGw7DQorDQorCQlpZiAoZ2V0QmFzZV9QYWNrYWdlKCkgIT0gbnVsbCkgew0KKwkJCS8vIEZpbmQgQ29uZm9ybSBsaW5rDQorCQkJSXRlcmF0b3I8RGVwZW5kZW5jeT4gaXREZXAgPSBnZXRCYXNlX1BhY2thZ2UoKS5nZXRDbGllbnREZXBlbmRlbmNpZXMoKS5pdGVyYXRvcigpOw0KKwkJCXdoaWxlIChpdERlcC5oYXNOZXh0KCkgJiYgKGNvbmZvcm0gPT0gbnVsbCkpIHsNCisJCQkJRGVwZW5kZW5jeSBjdXJyZW50RGVwZW5kZW5jeSA9IGl0RGVwLm5leHQoKTsNCisJCQkJY29uZm9ybSA9IFVNTFV0aWwuZ2V0U3RlcmVvdHlwZUFwcGxpY2F0aW9uKGN1cnJlbnREZXBlbmRlbmN5LCBDb25mb3JtLmNsYXNzKTsNCisJCQl9DQorDQorCQkJLy8gRmluZCBWaWV3UG9pbnQNCisJCQlpZiAoY29uZm9ybSAhPSBudWxsKSB7DQorCQkJCUl0ZXJhdG9yPEVsZW1lbnQ+IGl0RWx0ID0gY29uZm9ybS5nZXRCYXNlX0RlcGVuZGVuY3koKS5nZXRUYXJnZXRzKCkuaXRlcmF0b3IoKTsNCisJCQkJd2hpbGUgKGl0RWx0Lmhhc05leHQoKSkgew0KKwkJCQkJRWxlbWVudCBjdXJyZW50RWx0ID0gaXRFbHQubmV4dCgpOw0KKwkJCQkJdmlld1BvaW50ID0gVU1MVXRpbC5nZXRTdGVyZW90eXBlQXBwbGljYXRpb24oY3VycmVudEVsdCwgVmlld1BvaW50LmNsYXNzKTsNCisJCQkJfQ0KKwkJCX0NCisJCX0NCisJCXJldHVybiB2aWV3UG9pbnQ7DQorCX0NCisNCisNCisJQE92ZXJyaWRlDQorCXB1YmxpYyB2b2lkIHNldFZpZXdQb2ludChWaWV3UG9pbnQgbmV3Vmlld1BvaW50KSB7DQorCQkvLyBUT0RPOiBpbXBsZW1lbnQgdGhpcyBtZXRob2QgdG8gc2V0IHRoZSAnVmlldyBQb2ludCcgcmVmZXJlbmNlDQorCQkvLyBFbnN1cmUgdGhhdCB5b3UgcmVtb3ZlIEBnZW5lcmF0ZWQgb3IgbWFyayBpdCBAZ2VuZXJhdGVkIE5PVA0KKw0KKwkJLy8gVGhlIGV4Y2VwdGlvbiBtYWtlcyB0aGUgbW9kZWwgb3BlbmluZyB0byBmYWlsLi4uDQorCQkvLyB0aHJvdyBuZXcgVW5zdXBwb3J0ZWRPcGVyYXRpb25FeGNlcHRpb24oKTsNCisJfQ0KKw0KK30gDQpkaWZmIC0tZ2l0IGEvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQvc3JjL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9yZXF1aXJlbWVudHMvQ3VzdG9tUmVxdWlyZW1lbnRJbXBsLmphdmEgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC9zcmMvb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L3JlcXVpcmVtZW50cy9DdXN0b21SZXF1aXJlbWVudEltcGwuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMjY5ZGU1Ci0tLSAvZGV2L251bGwKKysrIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQvc3JjL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9yZXF1aXJlbWVudHMvQ3VzdG9tUmVxdWlyZW1lbnRJbXBsLmphdmEKQEAgLTAsMCArMSwyNTcgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyAqIENvcHlyaWdodCAoYykgMjAxNSBDRUEgTElTVC4NCisgKg0KKyAqDQorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KKyAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQorICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgKg0KKyAqIENvbnRyaWJ1dG9yczoNCisgKiAgQmVub2l0IE1hZ2dpIChDRUEgTElTVCkgYmVub2l0Lm1hZ2dpQGNlYS5mciAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbg0KKyAqDQorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KK3BhY2thZ2Ugb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnJlcXVpcmVtZW50czsNCisNCitpbXBvcnQgamF2YS51dGlsLkl0ZXJhdG9yOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY29tbW9uLnV0aWwuQmFzaWNFTGlzdDsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmNvbW1vbi51dGlsLkVMaXN0Ow0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUudXRpbC5FY29yZUVMaXN0LlVubW9kaWZpYWJsZUVMaXN0Ow0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucmVxdWlyZW1lbnRzLkNvcHk7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5yZXF1aXJlbWVudHMuRGVyaXZlUmVxdDsNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnJlcXVpcmVtZW50cy5SZXF1aXJlbWVudDsNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnJlcXVpcmVtZW50cy5SZXF1aXJlbWVudHNQYWNrYWdlOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucmVxdWlyZW1lbnRzLlNhdGlzZnk7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5yZXF1aXJlbWVudHMuVmVyaWZ5Ow0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQucmVxdWlyZW1lbnRzLmludGVybmFsLmltcGwuUmVxdWlyZW1lbnRJbXBsOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS51bWwyLnVtbC5EZXBlbmRlbmN5Ow0KK2ltcG9ydCBvcmcuZWNsaXBzZS51bWwyLnVtbC5EaXJlY3RlZFJlbGF0aW9uc2hpcDsNCitpbXBvcnQgb3JnLmVjbGlwc2UudW1sMi51bWwuTmFtZWRFbGVtZW50Ow0KK2ltcG9ydCBvcmcuZWNsaXBzZS51bWwyLnVtbC5wcm9maWxlLnN0YW5kYXJkLlJlZmluZTsNCitpbXBvcnQgb3JnLmVjbGlwc2UudW1sMi51bWwucHJvZmlsZS5zdGFuZGFyZC5TdGFuZGFyZFBhY2thZ2U7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnVtbDIudW1sLnByb2ZpbGUuc3RhbmRhcmQuVHJhY2U7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnVtbDIudW1sLnV0aWwuVU1MVXRpbDsNCisNCisvKioNCisgKiB0aGlzIGNsYXNzIGhhcyBiZWVuIGltcGxlbWVudGVkIGluIG9yZGVyIHRvIGNhbGN1bGF0ZSBkZXJpdmVkIHByb3BlcnRpZXMgb2YgIlJlcXVpcmVtZW50IiBzdGVyZW90eXBlIHNlZSBSZXF1aXJlbWVudCBEZXJpdmVkUHJvcGVydGllcyBSZXEwMDEwIA0KKyAqDQorICovDQorcHVibGljIGNsYXNzIEN1c3RvbVJlcXVpcmVtZW50SW1wbCBleHRlbmRzIFJlcXVpcmVtZW50SW1wbCBpbXBsZW1lbnRzIFJlcXVpcmVtZW50IHsNCisNCisJQE92ZXJyaWRlDQorCXB1YmxpYyBSZXF1aXJlbWVudCBiYXNpY0dldE1hc3RlcigpIHsNCisJCS8vIFRoZSBSZXF1aXJlbWVudCBpcyB0aGUgc3VwcGxpZXIgb2YgdGhlIENvcHkgbGluayBiZXR3ZWVuIHRoZSBtYXN0ZXINCisJCS8vIFJlcXVpcmVtZW50IGFuZA0KKwkJLy8gY3VycmVudA0KKwkJLy8gVGhpcyBzaG91bGQgcmV0dXJuIHRoZSBUZXN0Q2FzZSB2ZXJpZnlpbmcgY3VycmVudCBSZXF1aXJlbWVudA0KKwkJUmVxdWlyZW1lbnQgbWFzdGVyID0gbnVsbDsNCisJCUNvcHkgY3VycmVudENvcHkgPSBudWxsOw0KKw0KKwkJaWYgKGdldEJhc2VfQ2xhc3MoKSAhPSBudWxsKSB7DQorCQkJSXRlcmF0b3I8RGVwZW5kZW5jeT4gaXREZXAgPSBnZXRCYXNlX0NsYXNzKCkuZ2V0Q2xpZW50RGVwZW5kZW5jaWVzKCkuaXRlcmF0b3IoKTsNCisNCisJCQkvLyBGaW5kIENvcHkgbGluaw0KKwkJCXdoaWxlIChpdERlcC5oYXNOZXh0KCkpIHsNCisJCQkJRGVwZW5kZW5jeSBjdXJyZW50RGVwID0gaXREZXAubmV4dCgpOw0KKwkJCQljdXJyZW50Q29weSA9IFVNTFV0aWwuZ2V0U3RlcmVvdHlwZUFwcGxpY2F0aW9uKGN1cnJlbnREZXAsIENvcHkuY2xhc3MpOw0KKw0KKwkJCQlpZiAoY3VycmVudENvcHkgIT0gbnVsbCkgew0KKwkJCQkJRUxpc3Q8TmFtZWRFbGVtZW50PiBzdXBwbGllcnMgPSBjdXJyZW50Q29weS5nZXRCYXNlX0Fic3RyYWN0aW9uKCkuZ2V0U3VwcGxpZXJzKCk7DQorCQkJCQlJdGVyYXRvcjxOYW1lZEVsZW1lbnQ+IGl0ID0gc3VwcGxpZXJzLml0ZXJhdG9yKCk7DQorCQkJCQl3aGlsZSAoaXQuaGFzTmV4dCgpICYmIChtYXN0ZXIgPT0gbnVsbCkpIHsNCisJCQkJCQlSZXF1aXJlbWVudCBjdXJyZW50UmVxdWlyZW1lbnQgPSBVTUxVdGlsLmdldFN0ZXJlb3R5cGVBcHBsaWNhdGlvbihpdC5uZXh0KCksIFJlcXVpcmVtZW50LmNsYXNzKTsNCisJCQkJCQlpZiAoY3VycmVudFJlcXVpcmVtZW50ICE9IG51bGwpIHsNCisJCQkJCQkJbWFzdGVyID0gY3VycmVudFJlcXVpcmVtZW50Ow0KKwkJCQkJCX0NCisJCQkJCX0NCisJCQkJfQ0KKwkJCX0NCisJCX0NCisJCXJldHVybiBtYXN0ZXI7DQorCX0NCisNCisNCisJQE92ZXJyaWRlDQorCXB1YmxpYyBFTGlzdDxSZXF1aXJlbWVudD4gZ2V0RGVyaXZlZCgpIHsNCisJCS8vIFRoaXMgc2hvdWxkIHJldHVybiB0aGUgUmVxdWlyZW1lbnQocykgZGVyaXZlZCBmcm9tIGN1cnJlbnQNCisJCUVMaXN0PFJlcXVpcmVtZW50PiBkZXJpdmVkID0gbmV3IEJhc2ljRUxpc3Q8UmVxdWlyZW1lbnQ+KCk7DQorCQlEZXJpdmVSZXF0IGN1cnJlbnREZXJpdmVSZXF0ID0gbnVsbDsNCisNCisJCWlmIChnZXRCYXNlX0NsYXNzKCkgIT0gbnVsbCkgew0KKwkJCUl0ZXJhdG9yPERpcmVjdGVkUmVsYXRpb25zaGlwPiBpdERlcCA9IGdldEJhc2VfQ2xhc3MoKS5nZXRUYXJnZXREaXJlY3RlZFJlbGF0aW9uc2hpcHMoKS5pdGVyYXRvcigpOw0KKw0KKwkJCS8vIEZpbmQgRGVyaXZlUmVxdCBsaW5rDQorCQkJd2hpbGUgKGl0RGVwLmhhc05leHQoKSkgew0KKwkJCQlEaXJlY3RlZFJlbGF0aW9uc2hpcCBjdXJyZW50RGlyZWN0ZWRSZWxhdGlvbnNoaXAgPSBpdERlcC5uZXh0KCk7DQorCQkJCWN1cnJlbnREZXJpdmVSZXF0ID0gVU1MVXRpbC5nZXRTdGVyZW90eXBlQXBwbGljYXRpb24oY3VycmVudERpcmVjdGVkUmVsYXRpb25zaGlwLCBEZXJpdmVSZXF0LmNsYXNzKTsNCisNCisJCQkJaWYgKGN1cnJlbnREZXJpdmVSZXF0ICE9IG51bGwpIHsNCisJCQkJCUVMaXN0PE5hbWVkRWxlbWVudD4gY2xpZW50cyA9IGN1cnJlbnREZXJpdmVSZXF0LmdldEJhc2VfQWJzdHJhY3Rpb24oKS5nZXRDbGllbnRzKCk7DQorCQkJCQlJdGVyYXRvcjxOYW1lZEVsZW1lbnQ+IGl0ID0gY2xpZW50cy5pdGVyYXRvcigpOw0KKwkJCQkJd2hpbGUgKGl0Lmhhc05leHQoKSkgew0KKwkJCQkJCVJlcXVpcmVtZW50IGN1cnJlbnRSZXF1aXJlbWVudCA9IFVNTFV0aWwuZ2V0U3RlcmVvdHlwZUFwcGxpY2F0aW9uKGl0Lm5leHQoKSwgUmVxdWlyZW1lbnQuY2xhc3MpOw0KKwkJCQkJCWlmIChjdXJyZW50UmVxdWlyZW1lbnQgIT0gbnVsbCkgew0KKwkJCQkJCQlkZXJpdmVkLmFkZChjdXJyZW50UmVxdWlyZW1lbnQpOw0KKwkJCQkJCX0NCisJCQkJCX0NCisJCQkJfQ0KKwkJCX0NCisJCX0NCisNCisJCVVubW9kaWZpYWJsZUVMaXN0PFJlcXVpcmVtZW50PiByZXN1bHRMaXN0ID0gbmV3IFVubW9kaWZpYWJsZUVMaXN0PFJlcXVpcmVtZW50Pih0aGlzLCBSZXF1aXJlbWVudHNQYWNrYWdlLmVJTlNUQU5DRS5nZXRSZXF1aXJlbWVudF9EZXJpdmVkKCksIGRlcml2ZWQuc2l6ZSgpLCBkZXJpdmVkLnRvQXJyYXkoKSk7DQorCQlyZXR1cm4gcmVzdWx0TGlzdDsNCisJfQ0KKw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIEVMaXN0PFJlcXVpcmVtZW50PiBnZXREZXJpdmVkRnJvbSgpIHsNCisJCS8vIFRoaXMgc2hvdWxkIHJldHVybiB0aGUgUmVxdWlyZW1lbnQocykgdGhpcyBSZXF1aXJlbWVudCBpcyBkZXJpdmVkDQorCQkvLyBmcm9tDQorCQlFTGlzdDxSZXF1aXJlbWVudD4gZGVyaXZlZEZyb20gPSBuZXcgQmFzaWNFTGlzdDxSZXF1aXJlbWVudD4oKTsNCisJCURlcml2ZVJlcXQgY3VycmVudERlcml2ZVJlcXQgPSBudWxsOw0KKwkJaWYgKGdldEJhc2VfQ2xhc3MoKSAhPSBudWxsKSB7DQorCQkJSXRlcmF0b3I8RGlyZWN0ZWRSZWxhdGlvbnNoaXA+IGl0RGVwID0gZ2V0QmFzZV9DbGFzcygpLmdldFNvdXJjZURpcmVjdGVkUmVsYXRpb25zaGlwcygpLml0ZXJhdG9yKCk7DQorDQorCQkJLy8gRmluZCBEZXJpdmVSZXF0IGxpbmsNCisJCQl3aGlsZSAoaXREZXAuaGFzTmV4dCgpKSB7DQorCQkJCURpcmVjdGVkUmVsYXRpb25zaGlwIGN1cnJlbnREUmVsYXRpb25zaGlwID0gaXREZXAubmV4dCgpOw0KKwkJCQljdXJyZW50RGVyaXZlUmVxdCA9IFVNTFV0aWwuZ2V0U3RlcmVvdHlwZUFwcGxpY2F0aW9uKGN1cnJlbnREUmVsYXRpb25zaGlwLCBEZXJpdmVSZXF0LmNsYXNzKTsNCisNCisJCQkJaWYgKGN1cnJlbnREZXJpdmVSZXF0ICE9IG51bGwpIHsNCisJCQkJCUVMaXN0PE5hbWVkRWxlbWVudD4gc3VwcGxpZXJzID0gY3VycmVudERlcml2ZVJlcXQuZ2V0QmFzZV9BYnN0cmFjdGlvbigpLmdldFN1cHBsaWVycygpOw0KKwkJCQkJSXRlcmF0b3I8TmFtZWRFbGVtZW50PiBpdCA9IHN1cHBsaWVycy5pdGVyYXRvcigpOw0KKwkJCQkJd2hpbGUgKGl0Lmhhc05leHQoKSkgew0KKwkJCQkJCVJlcXVpcmVtZW50IGN1cnJlbnRSZXF1aXJlbWVudCA9IFVNTFV0aWwuZ2V0U3RlcmVvdHlwZUFwcGxpY2F0aW9uKGl0Lm5leHQoKSwgUmVxdWlyZW1lbnQuY2xhc3MpOw0KKwkJCQkJCWlmIChjdXJyZW50UmVxdWlyZW1lbnQgIT0gbnVsbCkgew0KKwkJCQkJCQlkZXJpdmVkRnJvbS5hZGQoY3VycmVudFJlcXVpcmVtZW50KTsNCisJCQkJCQl9DQorCQkJCQl9DQorCQkJCX0NCisJCQl9DQorCQl9DQorDQorCQlVbm1vZGlmaWFibGVFTGlzdDxSZXF1aXJlbWVudD4gcmVzdWx0TGlzdCA9IG5ldyBVbm1vZGlmaWFibGVFTGlzdDxSZXF1aXJlbWVudD4odGhpcywgUmVxdWlyZW1lbnRzUGFja2FnZS5lSU5TVEFOQ0UuZ2V0UmVxdWlyZW1lbnRfRGVyaXZlZEZyb20oKSwgZGVyaXZlZEZyb20uc2l6ZSgpLCBkZXJpdmVkRnJvbS50b0FycmF5KCkpOw0KKwkJcmV0dXJuIHJlc3VsdExpc3Q7DQorCX0NCisNCisNCisJQE92ZXJyaWRlDQorCXB1YmxpYyBFTGlzdDxOYW1lZEVsZW1lbnQ+IGdldFJlZmluZWRCeSgpIHsNCisJCS8vIFRoaXMgc2hvdWxkIHJldHVybiB0aGUgTmFtZWRFbGVtZW50KHMpIHRoYXQgcmVmaW5lIGN1cnJlbnQNCisJCS8vIFJlcXVpcmVtZW50DQorCQlFTGlzdDxOYW1lZEVsZW1lbnQ+IHJlZmluZWRCeSA9IG5ldyBCYXNpY0VMaXN0PE5hbWVkRWxlbWVudD4oKTsNCisJCVJlZmluZSBjdXJyZW50UmVmaW5lID0gbnVsbDsNCisNCisJCWlmIChnZXRCYXNlX0NsYXNzKCkgIT0gbnVsbCkgew0KKwkJCUl0ZXJhdG9yPERpcmVjdGVkUmVsYXRpb25zaGlwPiBpdERlcCA9IGdldEJhc2VfQ2xhc3MoKS5nZXRUYXJnZXREaXJlY3RlZFJlbGF0aW9uc2hpcHMoKS5pdGVyYXRvcigpOw0KKw0KKwkJCS8vIEZpbmQgUmVmaW5lIGxpbmsNCisJCQl3aGlsZSAoaXREZXAuaGFzTmV4dCgpKSB7DQorCQkJCURpcmVjdGVkUmVsYXRpb25zaGlwIGN1cnJlbnREUmVsYXRpb25zaGlwID0gaXREZXAubmV4dCgpOw0KKwkJCQljdXJyZW50UmVmaW5lID0gVU1MVXRpbC5nZXRTdGVyZW90eXBlQXBwbGljYXRpb24oY3VycmVudERSZWxhdGlvbnNoaXAsIFJlZmluZS5jbGFzcyk7DQorDQorCQkJCWlmIChjdXJyZW50UmVmaW5lICE9IG51bGwpIHsNCisJCQkJCXJlZmluZWRCeS5hZGRBbGwoY3VycmVudFJlZmluZS5nZXRCYXNlX0Fic3RyYWN0aW9uKCkuZ2V0Q2xpZW50cygpKTsNCisJCQkJfQ0KKwkJCX0NCisJCX0NCisNCisJCVVubW9kaWZpYWJsZUVMaXN0PE5hbWVkRWxlbWVudD4gcmVzdWx0TGlzdCA9IG5ldyBVbm1vZGlmaWFibGVFTGlzdDxOYW1lZEVsZW1lbnQ+KHRoaXMsIFJlcXVpcmVtZW50c1BhY2thZ2UuZUlOU1RBTkNFLmdldFJlcXVpcmVtZW50X1JlZmluZWRCeSgpLCByZWZpbmVkQnkuc2l6ZSgpLCByZWZpbmVkQnkudG9BcnJheSgpKTsNCisJCXJldHVybiByZXN1bHRMaXN0Ow0KKwl9DQorDQorCQ0KKw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIEVMaXN0PE5hbWVkRWxlbWVudD4gZ2V0U2F0aXNmaWVkQnkoKSB7DQorCQkvLyBUaGlzIHNob3VsZCByZXR1cm4gdGhlIE5hbWVkRWxlbWVudChzKSB0aGF0IHNhdGlzZnkgY3VycmVudA0KKwkJLy8gUmVxdWlyZW1lbnQNCisJCUVMaXN0PE5hbWVkRWxlbWVudD4gc2F0aXNmeUJ5ID0gbmV3IEJhc2ljRUxpc3Q8TmFtZWRFbGVtZW50PigpOw0KKwkJU2F0aXNmeSBjdXJyZW50U2F0aXNmeSA9IG51bGw7DQorDQorCQlpZiAoZ2V0QmFzZV9DbGFzcygpICE9IG51bGwpIHsNCisJCQlJdGVyYXRvcjxEaXJlY3RlZFJlbGF0aW9uc2hpcD4gaXREZXAgPSBnZXRCYXNlX0NsYXNzKCkuZ2V0VGFyZ2V0RGlyZWN0ZWRSZWxhdGlvbnNoaXBzKCkuaXRlcmF0b3IoKTsNCisNCisJCQkvLyBGaW5kIFNhdGlzZnkgbGluaw0KKwkJCXdoaWxlIChpdERlcC5oYXNOZXh0KCkpIHsNCisJCQkJRGlyZWN0ZWRSZWxhdGlvbnNoaXAgY3VycmVudERSZWxhdGlvbnNoaXAgPSBpdERlcC5uZXh0KCk7DQorCQkJCWN1cnJlbnRTYXRpc2Z5ID0gVU1MVXRpbC5nZXRTdGVyZW90eXBlQXBwbGljYXRpb24oY3VycmVudERSZWxhdGlvbnNoaXAsIFNhdGlzZnkuY2xhc3MpOw0KKw0KKwkJCQlpZiAoY3VycmVudFNhdGlzZnkgIT0gbnVsbCkgew0KKwkJCQkJc2F0aXNmeUJ5LmFkZEFsbChjdXJyZW50U2F0aXNmeS5nZXRCYXNlX0Fic3RyYWN0aW9uKCkuZ2V0Q2xpZW50cygpKTsNCisJCQkJfQ0KKwkJCX0NCisJCX0NCisNCisJCVVubW9kaWZpYWJsZUVMaXN0PE5hbWVkRWxlbWVudD4gcmVzdWx0TGlzdCA9IG5ldyBVbm1vZGlmaWFibGVFTGlzdDxOYW1lZEVsZW1lbnQ+KHRoaXMsIFJlcXVpcmVtZW50c1BhY2thZ2UuZUlOU1RBTkNFLmdldFJlcXVpcmVtZW50X1NhdGlzZmllZEJ5KCksIHNhdGlzZnlCeS5zaXplKCksIHNhdGlzZnlCeS50b0FycmF5KCkpOw0KKwkJcmV0dXJuIHJlc3VsdExpc3Q7DQorCX0NCisNCisNCisJQE92ZXJyaWRlDQorCXB1YmxpYyBFTGlzdDxOYW1lZEVsZW1lbnQ+IGdldFRyYWNlZFRvKCkgew0KKwkJLy8gVGhpcyBzaG91bGQgcmV0dXJuIHRoZSBOYW1lZEVsZW1lbnQocykgdHJhY2VkIGJ5IGN1cnJlbnQgUmVxdWlyZW1lbnQNCisJCS8vIFN5c01MIHNwZWMuIDogRGVyaXZlZCBmcm9tIGFsbCBlbGVtZW50cyB0aGF0IGFyZSB0aGUgY2xpZW50IG9mIGENCisJCS8vIKt0cmFjZbsgcmVsYXRpb25zaGlwDQorCQkvLyBmb3Igd2hpY2ggdGhpcyByZXF1aXJlbWVudCBpcyBhIHN1cHBsaWVyLg0KKwkJRUxpc3Q8TmFtZWRFbGVtZW50PiB0cmFjZWRUbyA9IG5ldyBCYXNpY0VMaXN0PE5hbWVkRWxlbWVudD4oKTsNCisJCVRyYWNlIGN1cnJlbnRUcmFjZSA9IG51bGw7DQorDQorCQlpZiAoZ2V0QmFzZV9DbGFzcygpICE9IG51bGwpIHsNCisJCQlJdGVyYXRvcjxEaXJlY3RlZFJlbGF0aW9uc2hpcD4gaXREZXAgPSBnZXRCYXNlX0NsYXNzKCkuZ2V0VGFyZ2V0RGlyZWN0ZWRSZWxhdGlvbnNoaXBzKCkuaXRlcmF0b3IoKTsNCisNCisJCQkvLyBGaW5kIFRyYWNlIGxpbmsNCisJCQl3aGlsZSAoaXREZXAuaGFzTmV4dCgpKSB7DQorCQkJCURpcmVjdGVkUmVsYXRpb25zaGlwIGN1cnJlbnREUiA9IGl0RGVwLm5leHQoKTsNCisJCQkJY3VycmVudFRyYWNlID0gVU1MVXRpbC5nZXRTdGVyZW90eXBlQXBwbGljYXRpb24oY3VycmVudERSLCBUcmFjZS5jbGFzcyk7DQorDQorCQkJCS8vIE11c3QgYmUgYSBUcmFjZSBub3QgYSBzdWJ0eXBlIChzZWUgYnVnICMzNTI1NjMpLg0KKwkJCQlpZiAoKGN1cnJlbnRUcmFjZSAhPSBudWxsKSAmJiAoY3VycmVudFRyYWNlLmVDbGFzcygpID09IFN0YW5kYXJkUGFja2FnZS5lSU5TVEFOQ0UuZ2V0VHJhY2UoKSkpIHsNCisJCQkJCUVMaXN0PE5hbWVkRWxlbWVudD4gc3VwcGxpZXJzID0gY3VycmVudFRyYWNlLmdldEJhc2VfQWJzdHJhY3Rpb24oKS5nZXRDbGllbnRzKCk7DQorCQkJCQl0cmFjZWRUby5hZGRBbGwoc3VwcGxpZXJzKTsNCisJCQkJfQ0KKwkJCX0NCisJCX0NCisNCisJCVVubW9kaWZpYWJsZUVMaXN0PE5hbWVkRWxlbWVudD4gcmVzdWx0TGlzdCA9IG5ldyBVbm1vZGlmaWFibGVFTGlzdDxOYW1lZEVsZW1lbnQ+KHRoaXMsIFJlcXVpcmVtZW50c1BhY2thZ2UuZUlOU1RBTkNFLmdldFJlcXVpcmVtZW50X1RyYWNlZFRvKCksIHRyYWNlZFRvLnNpemUoKSwgdHJhY2VkVG8udG9BcnJheSgpKTsNCisJCXJldHVybiByZXN1bHRMaXN0Ow0KKwl9DQorDQorCQ0KKw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIEVMaXN0PE5hbWVkRWxlbWVudD4gZ2V0VmVyaWZpZWRCeSgpIHsNCisJCS8vIFRoaXMgc2hvdWxkIHJldHVybiB0aGUgbGlzdCBvZiBOYW1lZEVsZW1lbnQgdmVyaWZ5aW5nIGN1cnJlbnQNCisJCS8vIFJlcXVpcmVtZW50DQorCQlFTGlzdDxOYW1lZEVsZW1lbnQ+IHZlcmlmaWVkQnkgPSBuZXcgQmFzaWNFTGlzdDxOYW1lZEVsZW1lbnQ+KCk7DQorCQlWZXJpZnkgY3VycmVudFZlcmlmeSA9IG51bGw7DQorDQorCQlpZiAoZ2V0QmFzZV9DbGFzcygpICE9IG51bGwpIHsNCisJCQlJdGVyYXRvcjxEaXJlY3RlZFJlbGF0aW9uc2hpcD4gaXREZXAgPSBnZXRCYXNlX0NsYXNzKCkuZ2V0VGFyZ2V0RGlyZWN0ZWRSZWxhdGlvbnNoaXBzKCkuaXRlcmF0b3IoKTsNCisNCisJCQkvLyBGaW5kIFZlcmlmeSBsaW5rDQorCQkJd2hpbGUgKGl0RGVwLmhhc05leHQoKSkgew0KKwkJCQlEaXJlY3RlZFJlbGF0aW9uc2hpcCBjdXJyZW50RFJlbGF0aW9uc2hpcCA9IGl0RGVwLm5leHQoKTsNCisJCQkJY3VycmVudFZlcmlmeSA9IFVNTFV0aWwuZ2V0U3RlcmVvdHlwZUFwcGxpY2F0aW9uKGN1cnJlbnREUmVsYXRpb25zaGlwLCBWZXJpZnkuY2xhc3MpOw0KKw0KKwkJCQlpZiAoY3VycmVudFZlcmlmeSAhPSBudWxsKSB7DQorCQkJCQl2ZXJpZmllZEJ5LmFkZEFsbChjdXJyZW50VmVyaWZ5LmdldEJhc2VfQWJzdHJhY3Rpb24oKS5nZXRDbGllbnRzKCkpOw0KKwkJCQl9DQorCQkJfQ0KKwkJfQ0KKw0KKwkJVW5tb2RpZmlhYmxlRUxpc3Q8TmFtZWRFbGVtZW50PiByZXN1bHRMaXN0ID0gbmV3IFVubW9kaWZpYWJsZUVMaXN0PE5hbWVkRWxlbWVudD4odGhpcywgUmVxdWlyZW1lbnRzUGFja2FnZS5lSU5TVEFOQ0UuZ2V0UmVxdWlyZW1lbnRfVmVyaWZpZWRCeSgpLCB2ZXJpZmllZEJ5LnNpemUoKSwgdmVyaWZpZWRCeS50b0FycmF5KCkpOw0KKwkJcmV0dXJuIHJlc3VsdExpc3Q7DQorCX0NCisNCisNCisJDQorDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgdm9pZCBzZXRNYXN0ZXIoUmVxdWlyZW1lbnQgbmV3TWFzdGVyKSB7DQorDQorCX0NCisNCisJDQorDQorfSANCmRpZmYgLS1naXQgYS9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC9zcmMvb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L3JlcXVpcmVtZW50cy9DdXN0b21SZXF1aXJlbWVudHNGYWN0b3J5SW1wbC5qYXZhIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQvc3JjL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9yZXF1aXJlbWVudHMvQ3VzdG9tUmVxdWlyZW1lbnRzRmFjdG9yeUltcGwuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNjcwYzliCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQvc3JjL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9yZXF1aXJlbWVudHMvQ3VzdG9tUmVxdWlyZW1lbnRzRmFjdG9yeUltcGwuamF2YQpAQCAtMCwwICsxLDMyIEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisgKiBDb3B5cmlnaHQgKGMpIDIwMTUgQ0VBIExJU1QuDQorICoNCisgKg0KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCisgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCisgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICoNCisgKiBDb250cmlidXRvcnM6DQorICogIEJlbm9pdCBNYWdnaSAoQ0VBIExJU1QpIGJlbm9pdC5tYWdnaUBjZWEuZnIgLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24NCisgKg0KKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCitwYWNrYWdlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5yZXF1aXJlbWVudHM7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5yZXF1aXJlbWVudHMuaW50ZXJuYWwuaW1wbC5SZXF1aXJlbWVudHNGYWN0b3J5SW1wbDsNCisNCisvKioNCisgKiB0aGlzIGNsYXNzIGhhcyBiZWVuIGFkZGVkIGluIG9yZGVyIHRvIGludGVncmF0ZWQgc3BlY2lmaWMgaW1wbGVtZW50YXRpb24gb2YgU3RlcmVvdHlwZXM6IFJlcXVpcmVtZW50Lg0KKyAqIFNwZWNpZmljIGNvZGUgaGFzIGJlZW4gYWRkZWQgdG8gY2FsY3VsYXRlIGRlcml2ZWQgcHJvcGVydGllcyBzZWUgUmVxdWlyZW1lbnQgUmVxMDAxMCBEZXJpdmVkUHJvcGVydGllcw0KKyAqIA0KKyAqDQorICovDQorcHVibGljIGNsYXNzIEN1c3RvbVJlcXVpcmVtZW50c0ZhY3RvcnlJbXBsIGV4dGVuZHMgUmVxdWlyZW1lbnRzRmFjdG9yeUltcGwgaW1wbGVtZW50cyBSZXF1aXJlbWVudHNGYWN0b3J5IHsNCisNCisJQE92ZXJyaWRlDQorCXB1YmxpYyBSZXF1aXJlbWVudCBjcmVhdGVSZXF1aXJlbWVudCgpIHsNCisJCUN1c3RvbVJlcXVpcmVtZW50SW1wbCBjdXN0b21SZXF1aXJlbWVudEltcGwgPSBuZXcgQ3VzdG9tUmVxdWlyZW1lbnRJbXBsKCk7DQorCQlyZXR1cm4gY3VzdG9tUmVxdWlyZW1lbnRJbXBsOw0KKwl9DQorDQorfQ0KZGlmZiAtLWdpdCBhL2NvcmUvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0L3NyYy9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvdXRpbC9TeXNtbFJlc291cmNlLmphdmEgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC9zcmMvb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L3V0aWwvU3lzbWxSZXNvdXJjZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQzYTQ5MmQKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC9zcmMvb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L3V0aWwvU3lzbWxSZXNvdXJjZS5qYXZhCkBAIC0wLDAgKzEsMjIgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyAqIENvcHlyaWdodCAoYykgMjAxNSBDRUEgTElTVC4NCisgKg0KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCisgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCisgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICoNCisgKiBDb250cmlidXRvcnM6DQorICogIEJlbm9pdCBNYWdnaSAoQ0VBIExJU1QpIGJlbm9pdC5tYWdnaUBjZWEuZnIgLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24NCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorcGFja2FnZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQudXRpbDsNCisNCitwdWJsaWMgY2xhc3MgU3lzbWxSZXNvdXJjZSB7DQorDQorCXB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFBST0ZJTEVfUEFUSCA9ICJwbGF0Zm9ybTovcGx1Z2luL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC9tb2RlbC9TeXNNTC5wcm9maWxlLnVtbCI7IC8vJE5PTi1OTFMtMSQNCisNCisJcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgUFJPRklMRV9VUkkgPSAiaHR0cDovL3d3dy5vbWcub3JnL3NwZWMvU3lzTUwvMjAxMzEyMDEvU3lzTUwiOyAvLyROT04tTkxTLTEkDQorDQorCXB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIExJQlJBUllfUEFUSCA9ICJwbGF0Zm9ybTovcGx1Z2luL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC9tb2RlbC9TeU1MTGlicmFyaWVzLnVtbCI7IC8vJE5PTi1OTFMtMSQNCisNCit9DQpkaWZmIC0tZ2l0IGEvY29yZS9wb20ueG1sIGIvY29yZS9wb20ueG1sCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjljNmRiMzEKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3BvbS54bWwKQEAgLTAsMCArMSwyMCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxwcm9qZWN0PgorCTxtb2RlbFZlcnNpb24+NC4wLjA8L21vZGVsVmVyc2lvbj4KKwk8cGFyZW50PgorCQk8YXJ0aWZhY3RJZD5vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sPC9hcnRpZmFjdElkPgorCQk8Z3JvdXBJZD5vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sPC9ncm91cElkPgorCQk8dmVyc2lvbj4wLjcuMC1TTkFQU0hPVDwvdmVyc2lvbj4KKwk8L3BhcmVudD4JCisJPGdyb3VwSWQ+b3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDwvZ3JvdXBJZD4KKwk8YXJ0aWZhY3RJZD5vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sLmNvcmU8L2FydGlmYWN0SWQ+CisJPHZlcnNpb24+MC43LjAtU05BUFNIT1Q8L3ZlcnNpb24+CisJPHBhY2thZ2luZz5wb208L3BhY2thZ2luZz4KKwk8bW9kdWxlcz4KKwkJPG1vZHVsZT5vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQ8L21vZHVsZT4KKwkJPCEtLTxtb2R1bGU+b3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnRlc3RzPC9tb2R1bGU+LS0+CisJCTxtb2R1bGU+b3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmVkaXQ8L21vZHVsZT4KKwkJPG1vZHVsZT5vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuc2VydmljZS50eXBlczwvbW9kdWxlPgorCQk8bW9kdWxlPm9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5zZXJ2aWNlLnR5cGVzLnRlc3RzPC9tb2R1bGU+CisJPC9tb2R1bGVzPgorPC9wcm9qZWN0PgpkaWZmIC0tZ2l0IGEvZGlhZ3JhbS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGlhZ3JhbS5ibG9ja2RlZmluaXRpb24vLmNsYXNzcGF0aCBiL2RpYWdyYW0vb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRpYWdyYW0uYmxvY2tkZWZpbml0aW9uLy5jbGFzc3BhdGgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGE4ZjE2NgotLS0gL2Rldi9udWxsCisrKyBiL2RpYWdyYW0vb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRpYWdyYW0uYmxvY2tkZWZpbml0aW9uLy5jbGFzc3BhdGgKQEAgLTAsMCArMSw3IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/Pg0KKzxjbGFzc3BhdGg+DQorCTxjbGFzc3BhdGhlbnRyeSBraW5kPSJjb24iIHBhdGg9Im9yZy5lY2xpcHNlLmpkdC5sYXVuY2hpbmcuSlJFX0NPTlRBSU5FUi9vcmcuZWNsaXBzZS5qZHQuaW50ZXJuYWwuZGVidWcudWkubGF1bmNoZXIuU3RhbmRhcmRWTVR5cGUvSmF2YVNFLTEuNiIvPg0KKwk8Y2xhc3NwYXRoZW50cnkga2luZD0iY29uIiBwYXRoPSJvcmcuZWNsaXBzZS5wZGUuY29yZS5yZXF1aXJlZFBsdWdpbnMiLz4NCisJPGNsYXNzcGF0aGVudHJ5IGtpbmQ9InNyYyIgcGF0aD0ic3JjIi8+DQorCTxjbGFzc3BhdGhlbnRyeSBraW5kPSJvdXRwdXQiIHBhdGg9ImJpbiIvPg0KKzwvY2xhc3NwYXRoPg0KZGlmZiAtLWdpdCBhL2RpYWdyYW0vb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRpYWdyYW0uYmxvY2tkZWZpbml0aW9uLy5wcm9qZWN0IGIvZGlhZ3JhbS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGlhZ3JhbS5ibG9ja2RlZmluaXRpb24vLnByb2plY3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWNmYTk0YQotLS0gL2Rldi9udWxsCisrKyBiL2RpYWdyYW0vb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRpYWdyYW0uYmxvY2tkZWZpbml0aW9uLy5wcm9qZWN0CkBAIC0wLDAgKzEsMjggQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+DQorPHByb2plY3REZXNjcmlwdGlvbj4NCisJPG5hbWU+b3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRpYWdyYW0uYmxvY2tkZWZpbml0aW9uPC9uYW1lPg0KKwk8Y29tbWVudD48L2NvbW1lbnQ+DQorCTxwcm9qZWN0cz4NCisJPC9wcm9qZWN0cz4NCisJPGJ1aWxkU3BlYz4NCisJCTxidWlsZENvbW1hbmQ+DQorCQkJPG5hbWU+b3JnLmVjbGlwc2UuamR0LmNvcmUuamF2YWJ1aWxkZXI8L25hbWU+DQorCQkJPGFyZ3VtZW50cz4NCisJCQk8L2FyZ3VtZW50cz4NCisJCTwvYnVpbGRDb21tYW5kPg0KKwkJPGJ1aWxkQ29tbWFuZD4NCisJCQk8bmFtZT5vcmcuZWNsaXBzZS5wZGUuTWFuaWZlc3RCdWlsZGVyPC9uYW1lPg0KKwkJCTxhcmd1bWVudHM+DQorCQkJPC9hcmd1bWVudHM+DQorCQk8L2J1aWxkQ29tbWFuZD4NCisJCTxidWlsZENvbW1hbmQ+DQorCQkJPG5hbWU+b3JnLmVjbGlwc2UucGRlLlNjaGVtYUJ1aWxkZXI8L25hbWU+DQorCQkJPGFyZ3VtZW50cz4NCisJCQk8L2FyZ3VtZW50cz4NCisJCTwvYnVpbGRDb21tYW5kPg0KKwk8L2J1aWxkU3BlYz4NCisJPG5hdHVyZXM+DQorCQk8bmF0dXJlPm9yZy5lY2xpcHNlLnBkZS5QbHVnaW5OYXR1cmU8L25hdHVyZT4NCisJCTxuYXR1cmU+b3JnLmVjbGlwc2UuamR0LmNvcmUuamF2YW5hdHVyZTwvbmF0dXJlPg0KKwk8L25hdHVyZXM+DQorPC9wcm9qZWN0RGVzY3JpcHRpb24+DQpkaWZmIC0tZ2l0IGEvZGlhZ3JhbS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGlhZ3JhbS5ibG9ja2RlZmluaXRpb24vLnNldHRpbmdzL29yZy5lY2xpcHNlLmpkdC5jb3JlLnByZWZzIGIvZGlhZ3JhbS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGlhZ3JhbS5ibG9ja2RlZmluaXRpb24vLnNldHRpbmdzL29yZy5lY2xpcHNlLmpkdC5jb3JlLnByZWZzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQxMDI0NGQKLS0tIC9kZXYvbnVsbAorKysgYi9kaWFncmFtL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kaWFncmFtLmJsb2NrZGVmaW5pdGlvbi8uc2V0dGluZ3Mvb3JnLmVjbGlwc2UuamR0LmNvcmUucHJlZnMKQEAgLTAsMCArMSwyOTEgQEAKK2VjbGlwc2UucHJlZmVyZW5jZXMudmVyc2lvbj0xDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIuY29kZWdlbi5pbmxpbmVKc3JCeXRlY29kZT1lbmFibGVkDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIuY29kZWdlbi50YXJnZXRQbGF0Zm9ybT0xLjYNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5jb21wbGlhbmNlPTEuNg0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0uYXNzZXJ0SWRlbnRpZmllcj1lcnJvcg0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0uZW51bUlkZW50aWZpZXI9ZXJyb3INCitvcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5zb3VyY2U9MS42DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmFsaWduX3R5cGVfbWVtYmVyc19vbl9jb2x1bW5zPWZhbHNlDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmFsaWdubWVudF9mb3JfYXJndW1lbnRzX2luX2FsbG9jYXRpb25fZXhwcmVzc2lvbj0xNg0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5hbGlnbm1lbnRfZm9yX2FyZ3VtZW50c19pbl9hbm5vdGF0aW9uPTANCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuYWxpZ25tZW50X2Zvcl9hcmd1bWVudHNfaW5fZW51bV9jb25zdGFudD0xNg0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5hbGlnbm1lbnRfZm9yX2FyZ3VtZW50c19pbl9leHBsaWNpdF9jb25zdHJ1Y3Rvcl9jYWxsPTE2DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmFsaWdubWVudF9mb3JfYXJndW1lbnRzX2luX21ldGhvZF9pbnZvY2F0aW9uPTE2DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmFsaWdubWVudF9mb3JfYXJndW1lbnRzX2luX3F1YWxpZmllZF9hbGxvY2F0aW9uX2V4cHJlc3Npb249MTYNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuYWxpZ25tZW50X2Zvcl9hc3NpZ25tZW50PTANCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuYWxpZ25tZW50X2Zvcl9iaW5hcnlfZXhwcmVzc2lvbj0xNg0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5hbGlnbm1lbnRfZm9yX2NvbXBhY3RfaWY9MTYNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuYWxpZ25tZW50X2Zvcl9jb25kaXRpb25hbF9leHByZXNzaW9uPTgwDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmFsaWdubWVudF9mb3JfZW51bV9jb25zdGFudHM9MA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5hbGlnbm1lbnRfZm9yX2V4cHJlc3Npb25zX2luX2FycmF5X2luaXRpYWxpemVyPTE2DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmFsaWdubWVudF9mb3JfbWV0aG9kX2RlY2xhcmF0aW9uPTANCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuYWxpZ25tZW50X2Zvcl9tdWx0aXBsZV9maWVsZHM9MTYNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuYWxpZ25tZW50X2Zvcl9wYXJhbWV0ZXJzX2luX2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uPTE2DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmFsaWdubWVudF9mb3JfcGFyYW1ldGVyc19pbl9tZXRob2RfZGVjbGFyYXRpb249MTYNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuYWxpZ25tZW50X2Zvcl9yZXNvdXJjZXNfaW5fdHJ5PTgwDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmFsaWdubWVudF9mb3Jfc2VsZWN0b3JfaW5fbWV0aG9kX2ludm9jYXRpb249MTYNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuYWxpZ25tZW50X2Zvcl9zdXBlcmNsYXNzX2luX3R5cGVfZGVjbGFyYXRpb249MTYNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuYWxpZ25tZW50X2Zvcl9zdXBlcmludGVyZmFjZXNfaW5fZW51bV9kZWNsYXJhdGlvbj0xNg0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5hbGlnbm1lbnRfZm9yX3N1cGVyaW50ZXJmYWNlc19pbl90eXBlX2RlY2xhcmF0aW9uPTE2DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmFsaWdubWVudF9mb3JfdGhyb3dzX2NsYXVzZV9pbl9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbj0xNg0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5hbGlnbm1lbnRfZm9yX3Rocm93c19jbGF1c2VfaW5fbWV0aG9kX2RlY2xhcmF0aW9uPTE2DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmFsaWdubWVudF9mb3JfdW5pb25fdHlwZV9pbl9tdWx0aWNhdGNoPTE2DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmJsYW5rX2xpbmVzX2FmdGVyX2ltcG9ydHM9MQ0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5ibGFua19saW5lc19hZnRlcl9wYWNrYWdlPTENCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuYmxhbmtfbGluZXNfYmVmb3JlX2ZpZWxkPTANCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuYmxhbmtfbGluZXNfYmVmb3JlX2ZpcnN0X2NsYXNzX2JvZHlfZGVjbGFyYXRpb249MA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5ibGFua19saW5lc19iZWZvcmVfaW1wb3J0cz0xDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmJsYW5rX2xpbmVzX2JlZm9yZV9tZW1iZXJfdHlwZT0xDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmJsYW5rX2xpbmVzX2JlZm9yZV9tZXRob2Q9MQ0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5ibGFua19saW5lc19iZWZvcmVfbmV3X2NodW5rPTENCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuYmxhbmtfbGluZXNfYmVmb3JlX3BhY2thZ2U9MA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5ibGFua19saW5lc19iZXR3ZWVuX2ltcG9ydF9ncm91cHM9MQ0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5ibGFua19saW5lc19iZXR3ZWVuX3R5cGVfZGVjbGFyYXRpb25zPTENCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuYnJhY2VfcG9zaXRpb25fZm9yX2Fubm90YXRpb25fdHlwZV9kZWNsYXJhdGlvbj1lbmRfb2ZfbGluZQ0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5icmFjZV9wb3NpdGlvbl9mb3JfYW5vbnltb3VzX3R5cGVfZGVjbGFyYXRpb249ZW5kX29mX2xpbmUNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuYnJhY2VfcG9zaXRpb25fZm9yX2FycmF5X2luaXRpYWxpemVyPWVuZF9vZl9saW5lDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmJyYWNlX3Bvc2l0aW9uX2Zvcl9ibG9jaz1lbmRfb2ZfbGluZQ0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5icmFjZV9wb3NpdGlvbl9mb3JfYmxvY2tfaW5fY2FzZT1lbmRfb2ZfbGluZQ0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5icmFjZV9wb3NpdGlvbl9mb3JfY29uc3RydWN0b3JfZGVjbGFyYXRpb249ZW5kX29mX2xpbmUNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuYnJhY2VfcG9zaXRpb25fZm9yX2VudW1fY29uc3RhbnQ9ZW5kX29mX2xpbmUNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuYnJhY2VfcG9zaXRpb25fZm9yX2VudW1fZGVjbGFyYXRpb249ZW5kX29mX2xpbmUNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuYnJhY2VfcG9zaXRpb25fZm9yX2xhbWJkYV9ib2R5PWVuZF9vZl9saW5lDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmJyYWNlX3Bvc2l0aW9uX2Zvcl9tZXRob2RfZGVjbGFyYXRpb249ZW5kX29mX2xpbmUNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuYnJhY2VfcG9zaXRpb25fZm9yX3N3aXRjaD1lbmRfb2ZfbGluZQ0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5icmFjZV9wb3NpdGlvbl9mb3JfdHlwZV9kZWNsYXJhdGlvbj1lbmRfb2ZfbGluZQ0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5jb21tZW50LmNsZWFyX2JsYW5rX2xpbmVzX2luX2Jsb2NrX2NvbW1lbnQ9ZmFsc2UNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuY29tbWVudC5jbGVhcl9ibGFua19saW5lc19pbl9qYXZhZG9jX2NvbW1lbnQ9ZmFsc2UNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuY29tbWVudC5mb3JtYXRfYmxvY2tfY29tbWVudHM9dHJ1ZQ0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5jb21tZW50LmZvcm1hdF9oZWFkZXI9ZmFsc2UNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuY29tbWVudC5mb3JtYXRfaHRtbD10cnVlDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmNvbW1lbnQuZm9ybWF0X2phdmFkb2NfY29tbWVudHM9dHJ1ZQ0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5jb21tZW50LmZvcm1hdF9saW5lX2NvbW1lbnRzPXRydWUNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuY29tbWVudC5mb3JtYXRfc291cmNlX2NvZGU9dHJ1ZQ0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5jb21tZW50LmluZGVudF9wYXJhbWV0ZXJfZGVzY3JpcHRpb249dHJ1ZQ0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5jb21tZW50LmluZGVudF9yb290X3RhZ3M9dHJ1ZQ0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5jb21tZW50Lmluc2VydF9uZXdfbGluZV9iZWZvcmVfcm9vdF90YWdzPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5jb21tZW50Lmluc2VydF9uZXdfbGluZV9mb3JfcGFyYW1ldGVyPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5jb21tZW50LmxpbmVfbGVuZ3RoPTI2MA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5jb21tZW50Lm5ld19saW5lc19hdF9ibG9ja19ib3VuZGFyaWVzPXRydWUNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuY29tbWVudC5uZXdfbGluZXNfYXRfamF2YWRvY19ib3VuZGFyaWVzPXRydWUNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuY29tbWVudC5wcmVzZXJ2ZV93aGl0ZV9zcGFjZV9iZXR3ZWVuX2NvZGVfYW5kX2xpbmVfY29tbWVudHM9ZmFsc2UNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuY29tcGFjdF9lbHNlX2lmPXRydWUNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuY29udGludWF0aW9uX2luZGVudGF0aW9uPTINCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuY29udGludWF0aW9uX2luZGVudGF0aW9uX2Zvcl9hcnJheV9pbml0aWFsaXplcj0yDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmRpc2FibGluZ190YWc9QGZvcm1hdHRlclw6b2ZmDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmVuYWJsaW5nX3RhZz1AZm9ybWF0dGVyXDpvbg0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5mb3JtYXRfZ3VhcmRpYW5fY2xhdXNlX29uX29uZV9saW5lPWZhbHNlDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmZvcm1hdF9saW5lX2NvbW1lbnRfc3RhcnRpbmdfb25fZmlyc3RfY29sdW1uPXRydWUNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5kZW50X2JvZHlfZGVjbGFyYXRpb25zX2NvbXBhcmVfdG9fYW5ub3RhdGlvbl9kZWNsYXJhdGlvbl9oZWFkZXI9dHJ1ZQ0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbmRlbnRfYm9keV9kZWNsYXJhdGlvbnNfY29tcGFyZV90b19lbnVtX2NvbnN0YW50X2hlYWRlcj10cnVlDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluZGVudF9ib2R5X2RlY2xhcmF0aW9uc19jb21wYXJlX3RvX2VudW1fZGVjbGFyYXRpb25faGVhZGVyPXRydWUNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5kZW50X2JvZHlfZGVjbGFyYXRpb25zX2NvbXBhcmVfdG9fdHlwZV9oZWFkZXI9dHJ1ZQ0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbmRlbnRfYnJlYWtzX2NvbXBhcmVfdG9fY2FzZXM9dHJ1ZQ0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbmRlbnRfZW1wdHlfbGluZXM9ZmFsc2UNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5kZW50X3N0YXRlbWVudHNfY29tcGFyZV90b19ibG9jaz10cnVlDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluZGVudF9zdGF0ZW1lbnRzX2NvbXBhcmVfdG9fYm9keT10cnVlDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluZGVudF9zd2l0Y2hzdGF0ZW1lbnRzX2NvbXBhcmVfdG9fY2FzZXM9dHJ1ZQ0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbmRlbnRfc3dpdGNoc3RhdGVtZW50c19jb21wYXJlX3RvX3N3aXRjaD1mYWxzZQ0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbmRlbnRhdGlvbi5zaXplPTQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X25ld19saW5lX2FmdGVyX2Fubm90YXRpb25fb25fZmllbGQ9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9uZXdfbGluZV9hZnRlcl9hbm5vdGF0aW9uX29uX2xvY2FsX3ZhcmlhYmxlPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfbmV3X2xpbmVfYWZ0ZXJfYW5ub3RhdGlvbl9vbl9tZXRob2Q9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9uZXdfbGluZV9hZnRlcl9hbm5vdGF0aW9uX29uX3BhY2thZ2U9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9uZXdfbGluZV9hZnRlcl9hbm5vdGF0aW9uX29uX3BhcmFtZXRlcj1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9uZXdfbGluZV9hZnRlcl9hbm5vdGF0aW9uX29uX3R5cGU9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9uZXdfbGluZV9hZnRlcl9sYWJlbD1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9uZXdfbGluZV9hZnRlcl9vcGVuaW5nX2JyYWNlX2luX2FycmF5X2luaXRpYWxpemVyPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X25ld19saW5lX2FmdGVyX3R5cGVfYW5ub3RhdGlvbj1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9uZXdfbGluZV9hdF9lbmRfb2ZfZmlsZV9pZl9taXNzaW5nPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X25ld19saW5lX2JlZm9yZV9jYXRjaF9pbl90cnlfc3RhdGVtZW50PWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X25ld19saW5lX2JlZm9yZV9jbG9zaW5nX2JyYWNlX2luX2FycmF5X2luaXRpYWxpemVyPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X25ld19saW5lX2JlZm9yZV9lbHNlX2luX2lmX3N0YXRlbWVudD1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9uZXdfbGluZV9iZWZvcmVfZmluYWxseV9pbl90cnlfc3RhdGVtZW50PWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X25ld19saW5lX2JlZm9yZV93aGlsZV9pbl9kb19zdGF0ZW1lbnQ9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfbmV3X2xpbmVfaW5fZW1wdHlfYW5ub3RhdGlvbl9kZWNsYXJhdGlvbj1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X25ld19saW5lX2luX2VtcHR5X2Fub255bW91c190eXBlX2RlY2xhcmF0aW9uPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfbmV3X2xpbmVfaW5fZW1wdHlfYmxvY2s9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9uZXdfbGluZV9pbl9lbXB0eV9lbnVtX2NvbnN0YW50PWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfbmV3X2xpbmVfaW5fZW1wdHlfZW51bV9kZWNsYXJhdGlvbj1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X25ld19saW5lX2luX2VtcHR5X21ldGhvZF9ib2R5PWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfbmV3X2xpbmVfaW5fZW1wdHlfdHlwZV9kZWNsYXJhdGlvbj1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX2FuZF9pbl90eXBlX3BhcmFtZXRlcj1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX2Fzc2lnbm1lbnRfb3BlcmF0b3I9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9hdF9pbl9hbm5vdGF0aW9uPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX2F0X2luX2Fubm90YXRpb25fdHlwZV9kZWNsYXJhdGlvbj1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9iaW5hcnlfb3BlcmF0b3I9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9jbG9zaW5nX2FuZ2xlX2JyYWNrZXRfaW5fdHlwZV9hcmd1bWVudHM9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9jbG9zaW5nX2FuZ2xlX2JyYWNrZXRfaW5fdHlwZV9wYXJhbWV0ZXJzPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfY2xvc2luZ19icmFjZV9pbl9ibG9jaz1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX2Nsb3NpbmdfcGFyZW5faW5fY2FzdD1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX2NvbG9uX2luX2Fzc2VydD1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX2NvbG9uX2luX2Nhc2U9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9jb2xvbl9pbl9jb25kaXRpb25hbD1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX2NvbG9uX2luX2Zvcj1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX2NvbG9uX2luX2xhYmVsZWRfc3RhdGVtZW50PWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfY29tbWFfaW5fYWxsb2NhdGlvbl9leHByZXNzaW9uPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfY29tbWFfaW5fYW5ub3RhdGlvbj1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX2NvbW1hX2luX2FycmF5X2luaXRpYWxpemVyPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfY29tbWFfaW5fY29uc3RydWN0b3JfZGVjbGFyYXRpb25fcGFyYW1ldGVycz1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX2NvbW1hX2luX2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uX3Rocm93cz1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX2NvbW1hX2luX2VudW1fY29uc3RhbnRfYXJndW1lbnRzPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfY29tbWFfaW5fZW51bV9kZWNsYXJhdGlvbnM9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9jb21tYV9pbl9leHBsaWNpdGNvbnN0cnVjdG9yY2FsbF9hcmd1bWVudHM9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9jb21tYV9pbl9mb3JfaW5jcmVtZW50cz1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX2NvbW1hX2luX2Zvcl9pbml0cz1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX2NvbW1hX2luX21ldGhvZF9kZWNsYXJhdGlvbl9wYXJhbWV0ZXJzPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfY29tbWFfaW5fbWV0aG9kX2RlY2xhcmF0aW9uX3Rocm93cz1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX2NvbW1hX2luX21ldGhvZF9pbnZvY2F0aW9uX2FyZ3VtZW50cz1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX2NvbW1hX2luX211bHRpcGxlX2ZpZWxkX2RlY2xhcmF0aW9ucz1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX2NvbW1hX2luX211bHRpcGxlX2xvY2FsX2RlY2xhcmF0aW9ucz1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX2NvbW1hX2luX3BhcmFtZXRlcml6ZWRfdHlwZV9yZWZlcmVuY2U9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9jb21tYV9pbl9zdXBlcmludGVyZmFjZXM9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9jb21tYV9pbl90eXBlX2FyZ3VtZW50cz1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX2NvbW1hX2luX3R5cGVfcGFyYW1ldGVycz1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX2VsbGlwc2lzPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfbGFtYmRhX2Fycm93PWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfb3BlbmluZ19hbmdsZV9icmFja2V0X2luX3BhcmFtZXRlcml6ZWRfdHlwZV9yZWZlcmVuY2U9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfb3BlbmluZ19hbmdsZV9icmFja2V0X2luX3R5cGVfYXJndW1lbnRzPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX29wZW5pbmdfYW5nbGVfYnJhY2tldF9pbl90eXBlX3BhcmFtZXRlcnM9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfb3BlbmluZ19icmFjZV9pbl9hcnJheV9pbml0aWFsaXplcj1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX29wZW5pbmdfYnJhY2tldF9pbl9hcnJheV9hbGxvY2F0aW9uX2V4cHJlc3Npb249ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfb3BlbmluZ19icmFja2V0X2luX2FycmF5X3JlZmVyZW5jZT1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9vcGVuaW5nX3BhcmVuX2luX2Fubm90YXRpb249ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfb3BlbmluZ19wYXJlbl9pbl9jYXN0PWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX29wZW5pbmdfcGFyZW5faW5fY2F0Y2g9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfb3BlbmluZ19wYXJlbl9pbl9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbj1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9vcGVuaW5nX3BhcmVuX2luX2VudW1fY29uc3RhbnQ9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfb3BlbmluZ19wYXJlbl9pbl9mb3I9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfb3BlbmluZ19wYXJlbl9pbl9pZj1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9vcGVuaW5nX3BhcmVuX2luX21ldGhvZF9kZWNsYXJhdGlvbj1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9vcGVuaW5nX3BhcmVuX2luX21ldGhvZF9pbnZvY2F0aW9uPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX29wZW5pbmdfcGFyZW5faW5fcGFyZW50aGVzaXplZF9leHByZXNzaW9uPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX29wZW5pbmdfcGFyZW5faW5fc3dpdGNoPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX29wZW5pbmdfcGFyZW5faW5fc3luY2hyb25pemVkPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX29wZW5pbmdfcGFyZW5faW5fdHJ5PWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX29wZW5pbmdfcGFyZW5faW5fd2hpbGU9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfcG9zdGZpeF9vcGVyYXRvcj1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9wcmVmaXhfb3BlcmF0b3I9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfcXVlc3Rpb25faW5fY29uZGl0aW9uYWw9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9xdWVzdGlvbl9pbl93aWxkY2FyZD1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9zZW1pY29sb25faW5fZm9yPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfc2VtaWNvbG9uX2luX3RyeV9yZXNvdXJjZXM9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl91bmFyeV9vcGVyYXRvcj1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfYW5kX2luX3R5cGVfcGFyYW1ldGVyPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2Fzc2lnbm1lbnRfb3BlcmF0b3I9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfYXRfaW5fYW5ub3RhdGlvbl90eXBlX2RlY2xhcmF0aW9uPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2JpbmFyeV9vcGVyYXRvcj1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9jbG9zaW5nX2FuZ2xlX2JyYWNrZXRfaW5fcGFyYW1ldGVyaXplZF90eXBlX3JlZmVyZW5jZT1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfY2xvc2luZ19hbmdsZV9icmFja2V0X2luX3R5cGVfYXJndW1lbnRzPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9jbG9zaW5nX2FuZ2xlX2JyYWNrZXRfaW5fdHlwZV9wYXJhbWV0ZXJzPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9jbG9zaW5nX2JyYWNlX2luX2FycmF5X2luaXRpYWxpemVyPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2Nsb3NpbmdfYnJhY2tldF9pbl9hcnJheV9hbGxvY2F0aW9uX2V4cHJlc3Npb249ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2Nsb3NpbmdfYnJhY2tldF9pbl9hcnJheV9yZWZlcmVuY2U9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2Nsb3NpbmdfcGFyZW5faW5fYW5ub3RhdGlvbj1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfY2xvc2luZ19wYXJlbl9pbl9jYXN0PWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9jbG9zaW5nX3BhcmVuX2luX2NhdGNoPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9jbG9zaW5nX3BhcmVuX2luX2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9jbG9zaW5nX3BhcmVuX2luX2VudW1fY29uc3RhbnQ9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2Nsb3NpbmdfcGFyZW5faW5fZm9yPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9jbG9zaW5nX3BhcmVuX2luX2lmPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9jbG9zaW5nX3BhcmVuX2luX21ldGhvZF9kZWNsYXJhdGlvbj1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfY2xvc2luZ19wYXJlbl9pbl9tZXRob2RfaW52b2NhdGlvbj1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfY2xvc2luZ19wYXJlbl9pbl9wYXJlbnRoZXNpemVkX2V4cHJlc3Npb249ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2Nsb3NpbmdfcGFyZW5faW5fc3dpdGNoPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9jbG9zaW5nX3BhcmVuX2luX3N5bmNocm9uaXplZD1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfY2xvc2luZ19wYXJlbl9pbl90cnk9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2Nsb3NpbmdfcGFyZW5faW5fd2hpbGU9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2NvbG9uX2luX2Fzc2VydD1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9jb2xvbl9pbl9jYXNlPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9jb2xvbl9pbl9jb25kaXRpb25hbD1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9jb2xvbl9pbl9kZWZhdWx0PWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9jb2xvbl9pbl9mb3I9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfY29sb25faW5fbGFiZWxlZF9zdGF0ZW1lbnQ9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2NvbW1hX2luX2FsbG9jYXRpb25fZXhwcmVzc2lvbj1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfY29tbWFfaW5fYW5ub3RhdGlvbj1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfY29tbWFfaW5fYXJyYXlfaW5pdGlhbGl6ZXI9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2NvbW1hX2luX2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uX3BhcmFtZXRlcnM9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2NvbW1hX2luX2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uX3Rocm93cz1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfY29tbWFfaW5fZW51bV9jb25zdGFudF9hcmd1bWVudHM9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2NvbW1hX2luX2VudW1fZGVjbGFyYXRpb25zPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9jb21tYV9pbl9leHBsaWNpdGNvbnN0cnVjdG9yY2FsbF9hcmd1bWVudHM9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2NvbW1hX2luX2Zvcl9pbmNyZW1lbnRzPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9jb21tYV9pbl9mb3JfaW5pdHM9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2NvbW1hX2luX21ldGhvZF9kZWNsYXJhdGlvbl9wYXJhbWV0ZXJzPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9jb21tYV9pbl9tZXRob2RfZGVjbGFyYXRpb25fdGhyb3dzPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9jb21tYV9pbl9tZXRob2RfaW52b2NhdGlvbl9hcmd1bWVudHM9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2NvbW1hX2luX211bHRpcGxlX2ZpZWxkX2RlY2xhcmF0aW9ucz1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfY29tbWFfaW5fbXVsdGlwbGVfbG9jYWxfZGVjbGFyYXRpb25zPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9jb21tYV9pbl9wYXJhbWV0ZXJpemVkX3R5cGVfcmVmZXJlbmNlPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9jb21tYV9pbl9zdXBlcmludGVyZmFjZXM9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2NvbW1hX2luX3R5cGVfYXJndW1lbnRzPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9jb21tYV9pbl90eXBlX3BhcmFtZXRlcnM9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2VsbGlwc2lzPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9sYW1iZGFfYXJyb3c9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfb3BlbmluZ19hbmdsZV9icmFja2V0X2luX3BhcmFtZXRlcml6ZWRfdHlwZV9yZWZlcmVuY2U9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX29wZW5pbmdfYW5nbGVfYnJhY2tldF9pbl90eXBlX2FyZ3VtZW50cz1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfb3BlbmluZ19hbmdsZV9icmFja2V0X2luX3R5cGVfcGFyYW1ldGVycz1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfb3BlbmluZ19icmFjZV9pbl9hbm5vdGF0aW9uX3R5cGVfZGVjbGFyYXRpb249aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfb3BlbmluZ19icmFjZV9pbl9hbm9ueW1vdXNfdHlwZV9kZWNsYXJhdGlvbj1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9vcGVuaW5nX2JyYWNlX2luX2FycmF5X2luaXRpYWxpemVyPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX29wZW5pbmdfYnJhY2VfaW5fYmxvY2s9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfb3BlbmluZ19icmFjZV9pbl9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbj1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9vcGVuaW5nX2JyYWNlX2luX2VudW1fY29uc3RhbnQ9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfb3BlbmluZ19icmFjZV9pbl9lbnVtX2RlY2xhcmF0aW9uPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX29wZW5pbmdfYnJhY2VfaW5fbWV0aG9kX2RlY2xhcmF0aW9uPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX29wZW5pbmdfYnJhY2VfaW5fc3dpdGNoPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX29wZW5pbmdfYnJhY2VfaW5fdHlwZV9kZWNsYXJhdGlvbj1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9vcGVuaW5nX2JyYWNrZXRfaW5fYXJyYXlfYWxsb2NhdGlvbl9leHByZXNzaW9uPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9vcGVuaW5nX2JyYWNrZXRfaW5fYXJyYXlfcmVmZXJlbmNlPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9vcGVuaW5nX2JyYWNrZXRfaW5fYXJyYXlfdHlwZV9yZWZlcmVuY2U9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX29wZW5pbmdfcGFyZW5faW5fYW5ub3RhdGlvbj1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfb3BlbmluZ19wYXJlbl9pbl9hbm5vdGF0aW9uX3R5cGVfbWVtYmVyX2RlY2xhcmF0aW9uPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9vcGVuaW5nX3BhcmVuX2luX2NhdGNoPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX29wZW5pbmdfcGFyZW5faW5fY29uc3RydWN0b3JfZGVjbGFyYXRpb249ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX29wZW5pbmdfcGFyZW5faW5fZW51bV9jb25zdGFudD1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfb3BlbmluZ19wYXJlbl9pbl9mb3I9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfb3BlbmluZ19wYXJlbl9pbl9pZj1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9vcGVuaW5nX3BhcmVuX2luX21ldGhvZF9kZWNsYXJhdGlvbj1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfb3BlbmluZ19wYXJlbl9pbl9tZXRob2RfaW52b2NhdGlvbj1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfb3BlbmluZ19wYXJlbl9pbl9wYXJlbnRoZXNpemVkX2V4cHJlc3Npb249ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX29wZW5pbmdfcGFyZW5faW5fc3dpdGNoPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX29wZW5pbmdfcGFyZW5faW5fc3luY2hyb25pemVkPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX29wZW5pbmdfcGFyZW5faW5fdHJ5PWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX29wZW5pbmdfcGFyZW5faW5fd2hpbGU9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfcGFyZW50aGVzaXplZF9leHByZXNzaW9uX2luX3JldHVybj1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9wYXJlbnRoZXNpemVkX2V4cHJlc3Npb25faW5fdGhyb3c9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfcG9zdGZpeF9vcGVyYXRvcj1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfcHJlZml4X29wZXJhdG9yPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9xdWVzdGlvbl9pbl9jb25kaXRpb25hbD1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9xdWVzdGlvbl9pbl93aWxkY2FyZD1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfc2VtaWNvbG9uPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9zZW1pY29sb25faW5fZm9yPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9zZW1pY29sb25faW5fdHJ5X3Jlc291cmNlcz1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfdW5hcnlfb3BlcmF0b3I9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmV0d2Vlbl9icmFja2V0c19pbl9hcnJheV90eXBlX3JlZmVyZW5jZT1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZXR3ZWVuX2VtcHR5X2JyYWNlc19pbl9hcnJheV9pbml0aWFsaXplcj1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZXR3ZWVuX2VtcHR5X2JyYWNrZXRzX2luX2FycmF5X2FsbG9jYXRpb25fZXhwcmVzc2lvbj1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZXR3ZWVuX2VtcHR5X3BhcmVuc19pbl9hbm5vdGF0aW9uX3R5cGVfbWVtYmVyX2RlY2xhcmF0aW9uPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JldHdlZW5fZW1wdHlfcGFyZW5zX2luX2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JldHdlZW5fZW1wdHlfcGFyZW5zX2luX2VudW1fY29uc3RhbnQ9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmV0d2Vlbl9lbXB0eV9wYXJlbnNfaW5fbWV0aG9kX2RlY2xhcmF0aW9uPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JldHdlZW5fZW1wdHlfcGFyZW5zX2luX21ldGhvZF9pbnZvY2F0aW9uPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuam9pbl9saW5lc19pbl9jb21tZW50cz1mYWxzZQ0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5qb2luX3dyYXBwZWRfbGluZXM9ZmFsc2UNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIua2VlcF9lbHNlX3N0YXRlbWVudF9vbl9zYW1lX2xpbmU9ZmFsc2UNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIua2VlcF9lbXB0eV9hcnJheV9pbml0aWFsaXplcl9vbl9vbmVfbGluZT1mYWxzZQ0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5rZWVwX2ltcGxlX2lmX29uX29uZV9saW5lPWZhbHNlDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmtlZXBfdGhlbl9zdGF0ZW1lbnRfb25fc2FtZV9saW5lPWZhbHNlDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmxpbmVTcGxpdD0yNjANCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIubmV2ZXJfaW5kZW50X2Jsb2NrX2NvbW1lbnRzX29uX2ZpcnN0X2NvbHVtbj1mYWxzZQ0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5uZXZlcl9pbmRlbnRfbGluZV9jb21tZW50c19vbl9maXJzdF9jb2x1bW49ZmFsc2UNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIubnVtYmVyX29mX2JsYW5rX2xpbmVzX2F0X2JlZ2lubmluZ19vZl9tZXRob2RfYm9keT0wDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLm51bWJlcl9vZl9lbXB0eV9saW5lc190b19wcmVzZXJ2ZT01DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLnB1dF9lbXB0eV9zdGF0ZW1lbnRfb25fbmV3X2xpbmU9dHJ1ZQ0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci50YWJ1bGF0aW9uLmNoYXI9dGFiDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLnRhYnVsYXRpb24uc2l6ZT00DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLnVzZV9vbl9vZmZfdGFncz1mYWxzZQ0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci51c2VfdGFic19vbmx5X2Zvcl9sZWFkaW5nX2luZGVudGF0aW9ucz1mYWxzZQ0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci53cmFwX2JlZm9yZV9iaW5hcnlfb3BlcmF0b3I9dHJ1ZQ0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci53cmFwX2JlZm9yZV9vcl9vcGVyYXRvcl9tdWx0aWNhdGNoPXRydWUNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIud3JhcF9vdXRlcl9leHByZXNzaW9uc193aGVuX25lc3RlZD10cnVlDQpkaWZmIC0tZ2l0IGEvZGlhZ3JhbS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGlhZ3JhbS5ibG9ja2RlZmluaXRpb24vLnNldHRpbmdzL29yZy5lY2xpcHNlLmpkdC51aS5wcmVmcyBiL2RpYWdyYW0vb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRpYWdyYW0uYmxvY2tkZWZpbml0aW9uLy5zZXR0aW5ncy9vcmcuZWNsaXBzZS5qZHQudWkucHJlZnMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDFkNzA0YgotLS0gL2Rldi9udWxsCisrKyBiL2RpYWdyYW0vb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRpYWdyYW0uYmxvY2tkZWZpbml0aW9uLy5zZXR0aW5ncy9vcmcuZWNsaXBzZS5qZHQudWkucHJlZnMKQEAgLTAsMCArMSw2OCBAQAorY2xlYW51cC5hZGRfZGVmYXVsdF9zZXJpYWxfdmVyc2lvbl9pZD10cnVlDQorY2xlYW51cC5hZGRfZ2VuZXJhdGVkX3NlcmlhbF92ZXJzaW9uX2lkPWZhbHNlDQorY2xlYW51cC5hZGRfbWlzc2luZ19hbm5vdGF0aW9ucz10cnVlDQorY2xlYW51cC5hZGRfbWlzc2luZ19kZXByZWNhdGVkX2Fubm90YXRpb25zPXRydWUNCitjbGVhbnVwLmFkZF9taXNzaW5nX21ldGhvZHM9ZmFsc2UNCitjbGVhbnVwLmFkZF9taXNzaW5nX25sc190YWdzPWZhbHNlDQorY2xlYW51cC5hZGRfbWlzc2luZ19vdmVycmlkZV9hbm5vdGF0aW9ucz10cnVlDQorY2xlYW51cC5hZGRfbWlzc2luZ19vdmVycmlkZV9hbm5vdGF0aW9uc19pbnRlcmZhY2VfbWV0aG9kcz10cnVlDQorY2xlYW51cC5hZGRfc2VyaWFsX3ZlcnNpb25faWQ9ZmFsc2UNCitjbGVhbnVwLmFsd2F5c191c2VfYmxvY2tzPXRydWUNCitjbGVhbnVwLmFsd2F5c191c2VfcGFyZW50aGVzZXNfaW5fZXhwcmVzc2lvbnM9ZmFsc2UNCitjbGVhbnVwLmFsd2F5c191c2VfdGhpc19mb3Jfbm9uX3N0YXRpY19maWVsZF9hY2Nlc3M9ZmFsc2UNCitjbGVhbnVwLmFsd2F5c191c2VfdGhpc19mb3Jfbm9uX3N0YXRpY19tZXRob2RfYWNjZXNzPWZhbHNlDQorY2xlYW51cC5jb252ZXJ0X2Z1bmN0aW9uYWxfaW50ZXJmYWNlcz1mYWxzZQ0KK2NsZWFudXAuY29udmVydF90b19lbmhhbmNlZF9mb3JfbG9vcD1mYWxzZQ0KK2NsZWFudXAuY29ycmVjdF9pbmRlbnRhdGlvbj1mYWxzZQ0KK2NsZWFudXAuZm9ybWF0X3NvdXJjZV9jb2RlPWZhbHNlDQorY2xlYW51cC5mb3JtYXRfc291cmNlX2NvZGVfY2hhbmdlc19vbmx5PWZhbHNlDQorY2xlYW51cC5pbnNlcnRfaW5mZXJyZWRfdHlwZV9hcmd1bWVudHM9ZmFsc2UNCitjbGVhbnVwLm1ha2VfbG9jYWxfdmFyaWFibGVfZmluYWw9dHJ1ZQ0KK2NsZWFudXAubWFrZV9wYXJhbWV0ZXJzX2ZpbmFsPWZhbHNlDQorY2xlYW51cC5tYWtlX3ByaXZhdGVfZmllbGRzX2ZpbmFsPXRydWUNCitjbGVhbnVwLm1ha2VfdHlwZV9hYnN0cmFjdF9pZl9taXNzaW5nX21ldGhvZD1mYWxzZQ0KK2NsZWFudXAubWFrZV92YXJpYWJsZV9kZWNsYXJhdGlvbnNfZmluYWw9ZmFsc2UNCitjbGVhbnVwLm5ldmVyX3VzZV9ibG9ja3M9ZmFsc2UNCitjbGVhbnVwLm5ldmVyX3VzZV9wYXJlbnRoZXNlc19pbl9leHByZXNzaW9ucz10cnVlDQorY2xlYW51cC5vcmdhbml6ZV9pbXBvcnRzPWZhbHNlDQorY2xlYW51cC5xdWFsaWZ5X3N0YXRpY19maWVsZF9hY2Nlc3Nlc193aXRoX2RlY2xhcmluZ19jbGFzcz1mYWxzZQ0KK2NsZWFudXAucXVhbGlmeV9zdGF0aWNfbWVtYmVyX2FjY2Vzc2VzX3Rocm91Z2hfaW5zdGFuY2VzX3dpdGhfZGVjbGFyaW5nX2NsYXNzPXRydWUNCitjbGVhbnVwLnF1YWxpZnlfc3RhdGljX21lbWJlcl9hY2Nlc3Nlc190aHJvdWdoX3N1YnR5cGVzX3dpdGhfZGVjbGFyaW5nX2NsYXNzPXRydWUNCitjbGVhbnVwLnF1YWxpZnlfc3RhdGljX21lbWJlcl9hY2Nlc3Nlc193aXRoX2RlY2xhcmluZ19jbGFzcz10cnVlDQorY2xlYW51cC5xdWFsaWZ5X3N0YXRpY19tZXRob2RfYWNjZXNzZXNfd2l0aF9kZWNsYXJpbmdfY2xhc3M9ZmFsc2UNCitjbGVhbnVwLnJlbW92ZV9wcml2YXRlX2NvbnN0cnVjdG9ycz10cnVlDQorY2xlYW51cC5yZW1vdmVfcmVkdW5kYW50X3R5cGVfYXJndW1lbnRzPXRydWUNCitjbGVhbnVwLnJlbW92ZV90cmFpbGluZ193aGl0ZXNwYWNlcz10cnVlDQorY2xlYW51cC5yZW1vdmVfdHJhaWxpbmdfd2hpdGVzcGFjZXNfYWxsPXRydWUNCitjbGVhbnVwLnJlbW92ZV90cmFpbGluZ193aGl0ZXNwYWNlc19pZ25vcmVfZW1wdHk9ZmFsc2UNCitjbGVhbnVwLnJlbW92ZV91bm5lY2Vzc2FyeV9jYXN0cz10cnVlDQorY2xlYW51cC5yZW1vdmVfdW5uZWNlc3NhcnlfbmxzX3RhZ3M9dHJ1ZQ0KK2NsZWFudXAucmVtb3ZlX3VudXNlZF9pbXBvcnRzPXRydWUNCitjbGVhbnVwLnJlbW92ZV91bnVzZWRfbG9jYWxfdmFyaWFibGVzPWZhbHNlDQorY2xlYW51cC5yZW1vdmVfdW51c2VkX3ByaXZhdGVfZmllbGRzPXRydWUNCitjbGVhbnVwLnJlbW92ZV91bnVzZWRfcHJpdmF0ZV9tZW1iZXJzPWZhbHNlDQorY2xlYW51cC5yZW1vdmVfdW51c2VkX3ByaXZhdGVfbWV0aG9kcz10cnVlDQorY2xlYW51cC5yZW1vdmVfdW51c2VkX3ByaXZhdGVfdHlwZXM9dHJ1ZQ0KK2NsZWFudXAuc29ydF9tZW1iZXJzPWZhbHNlDQorY2xlYW51cC5zb3J0X21lbWJlcnNfYWxsPWZhbHNlDQorY2xlYW51cC51c2VfYW5vbnltb3VzX2NsYXNzX2NyZWF0aW9uPWZhbHNlDQorY2xlYW51cC51c2VfYmxvY2tzPXRydWUNCitjbGVhbnVwLnVzZV9ibG9ja3Nfb25seV9mb3JfcmV0dXJuX2FuZF90aHJvdz1mYWxzZQ0KK2NsZWFudXAudXNlX2xhbWJkYT10cnVlDQorY2xlYW51cC51c2VfcGFyZW50aGVzZXNfaW5fZXhwcmVzc2lvbnM9ZmFsc2UNCitjbGVhbnVwLnVzZV90aGlzX2Zvcl9ub25fc3RhdGljX2ZpZWxkX2FjY2Vzcz1mYWxzZQ0KK2NsZWFudXAudXNlX3RoaXNfZm9yX25vbl9zdGF0aWNfZmllbGRfYWNjZXNzX29ubHlfaWZfbmVjZXNzYXJ5PXRydWUNCitjbGVhbnVwLnVzZV90aGlzX2Zvcl9ub25fc3RhdGljX21ldGhvZF9hY2Nlc3M9ZmFsc2UNCitjbGVhbnVwLnVzZV90aGlzX2Zvcl9ub25fc3RhdGljX21ldGhvZF9hY2Nlc3Nfb25seV9pZl9uZWNlc3Nhcnk9dHJ1ZQ0KK2NsZWFudXAudXNlX3R5cGVfYXJndW1lbnRzPWZhbHNlDQorY2xlYW51cF9wcm9maWxlPV9QYXB5cnVzDQorY2xlYW51cF9zZXR0aW5nc192ZXJzaW9uPTINCitlY2xpcHNlLnByZWZlcmVuY2VzLnZlcnNpb249MQ0KK2Zvcm1hdHRlcl9wcm9maWxlPV9QYXB5cnVzDQorZm9ybWF0dGVyX3NldHRpbmdzX3ZlcnNpb249MTINCitvcmcuZWNsaXBzZS5qZHQudWkuaWdub3JlbG93ZXJjYXNlbmFtZXM9dHJ1ZQ0KK29yZy5lY2xpcHNlLmpkdC51aS5pbXBvcnRvcmRlcj1qYXZhO2phdmF4O29yZztjb207DQorb3JnLmVjbGlwc2UuamR0LnVpLmphdmFkb2M9dHJ1ZQ0KK29yZy5lY2xpcHNlLmpkdC51aS5vbmRlbWFuZHRocmVzaG9sZD05OQ0KK29yZy5lY2xpcHNlLmpkdC51aS5zdGF0aWNvbmRlbWFuZHRocmVzaG9sZD05OQ0KK29yZy5lY2xpcHNlLmpkdC51aS50ZXh0LmN1c3RvbV9jb2RlX3RlbXBsYXRlcz08P3htbCB2ZXJzaW9uXD0iMS4wIiBlbmNvZGluZ1w9IlVURi04IiBzdGFuZGFsb25lXD0ibm8iPz48dGVtcGxhdGVzPjx0ZW1wbGF0ZSBhdXRvaW5zZXJ0XD0idHJ1ZSIgY29udGV4dFw9ImdldHRlcmNvbW1lbnRfY29udGV4dCIgZGVsZXRlZFw9ImZhbHNlIiBkZXNjcmlwdGlvblw9IkNvbW1lbnQgZm9yIGdldHRlciBtZXRob2QiIGVuYWJsZWRcPSJ0cnVlIiBpZFw9Im9yZy5lY2xpcHNlLmpkdC51aS50ZXh0LmNvZGV0ZW1wbGF0ZXMuZ2V0dGVyY29tbWVudCIgbmFtZVw9ImdldHRlcmNvbW1lbnQiPi8qKlxuICogQHJldHVybiB0aGUgJHtiYXJlX2ZpZWxkX25hbWV9XG4gKi88L3RlbXBsYXRlPjx0ZW1wbGF0ZSBhdXRvaW5zZXJ0XD0idHJ1ZSIgY29udGV4dFw9InNldHRlcmNvbW1lbnRfY29udGV4dCIgZGVsZXRlZFw9ImZhbHNlIiBkZXNjcmlwdGlvblw9IkNvbW1lbnQgZm9yIHNldHRlciBtZXRob2QiIGVuYWJsZWRcPSJ0cnVlIiBpZFw9Im9yZy5lY2xpcHNlLmpkdC51aS50ZXh0LmNvZGV0ZW1wbGF0ZXMuc2V0dGVyY29tbWVudCIgbmFtZVw9InNldHRlcmNvbW1lbnQiPi8qKlxuICogQHBhcmFtICR7cGFyYW19IHRoZSAke2JhcmVfZmllbGRfbmFtZX0gdG8gc2V0XG4gKi88L3RlbXBsYXRlPjx0ZW1wbGF0ZSBhdXRvaW5zZXJ0XD0iZmFsc2UiIGNvbnRleHRcPSJjb25zdHJ1Y3RvcmNvbW1lbnRfY29udGV4dCIgZGVsZXRlZFw9ImZhbHNlIiBkZXNjcmlwdGlvblw9IkNvbW1lbnQgZm9yIGNyZWF0ZWQgY29uc3RydWN0b3JzIiBlbmFibGVkXD0idHJ1ZSIgaWRcPSJvcmcuZWNsaXBzZS5qZHQudWkudGV4dC5jb2RldGVtcGxhdGVzLmNvbnN0cnVjdG9yY29tbWVudCIgbmFtZVw9ImNvbnN0cnVjdG9yY29tbWVudCI+LyoqXG4gKiBDb25zdHJ1Y3Rvci5cbiAqXG4gKiAke3RhZ3N9XG4gKi88L3RlbXBsYXRlPjx0ZW1wbGF0ZSBhdXRvaW5zZXJ0XD0iZmFsc2UiIGNvbnRleHRcPSJmaWxlY29tbWVudF9jb250ZXh0IiBkZWxldGVkXD0iZmFsc2UiIGRlc2NyaXB0aW9uXD0iQ29tbWVudCBmb3IgY3JlYXRlZCBKYXZhIGZpbGVzIiBlbmFibGVkXD0idHJ1ZSIgaWRcPSJvcmcuZWNsaXBzZS5qZHQudWkudGV4dC5jb2RldGVtcGxhdGVzLmZpbGVjb21tZW50IiBuYW1lXD0iZmlsZWNvbW1lbnQiPi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICogQ29weXJpZ2h0IChjKSAke3llYXJ9IENFQSBMSVNUIGFuZCBvdGhlcnMuXG4gKiBcbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHNcbiAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMFxuICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXRcbiAqIGh0dHBcOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbFxuICpcbiAqIENvbnRyaWJ1dG9yc1w6XG4gKiAgIENFQSBMSVNUIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uXG4gKiAgIFxuICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuPC90ZW1wbGF0ZT48dGVtcGxhdGUgYXV0b2luc2VydFw9InRydWUiIGNvbnRleHRcPSJ0eXBlY29tbWVudF9jb250ZXh0IiBkZWxldGVkXD0iZmFsc2UiIGRlc2NyaXB0aW9uXD0iQ29tbWVudCBmb3IgY3JlYXRlZCB0eXBlcyIgZW5hYmxlZFw9InRydWUiIGlkXD0ib3JnLmVjbGlwc2UuamR0LnVpLnRleHQuY29kZXRlbXBsYXRlcy50eXBlY29tbWVudCIgbmFtZVw9InR5cGVjb21tZW50Ij4vKipcbiAqIEBhdXRob3IgJHt1c2VyfVxuICpcbiAqICR7dGFnc31cbiAqLzwvdGVtcGxhdGU+PHRlbXBsYXRlIGF1dG9pbnNlcnRcPSJ0cnVlIiBjb250ZXh0XD0iZmllbGRjb21tZW50X2NvbnRleHQiIGRlbGV0ZWRcPSJmYWxzZSIgZGVzY3JpcHRpb25cPSJDb21tZW50IGZvciBmaWVsZHMiIGVuYWJsZWRcPSJ0cnVlIiBpZFw9Im9yZy5lY2xpcHNlLmpkdC51aS50ZXh0LmNvZGV0ZW1wbGF0ZXMuZmllbGRjb21tZW50IiBuYW1lXD0iZmllbGRjb21tZW50Ij4vKipcbiAqIFxuICovPC90ZW1wbGF0ZT48dGVtcGxhdGUgYXV0b2luc2VydFw9InRydWUiIGNvbnRleHRcPSJtZXRob2Rjb21tZW50X2NvbnRleHQiIGRlbGV0ZWRcPSJmYWxzZSIgZGVzY3JpcHRpb25cPSJDb21tZW50IGZvciBub24tb3ZlcnJpZGluZyBtZXRob2RzIiBlbmFibGVkXD0idHJ1ZSIgaWRcPSJvcmcuZWNsaXBzZS5qZHQudWkudGV4dC5jb2RldGVtcGxhdGVzLm1ldGhvZGNvbW1lbnQiIG5hbWVcPSJtZXRob2Rjb21tZW50Ij4vKipcbiAqICR7dGFnc31cbiAqLzwvdGVtcGxhdGU+PHRlbXBsYXRlIGF1dG9pbnNlcnRcPSJmYWxzZSIgY29udGV4dFw9Im92ZXJyaWRlY29tbWVudF9jb250ZXh0IiBkZWxldGVkXD0iZmFsc2UiIGRlc2NyaXB0aW9uXD0iQ29tbWVudCBmb3Igb3ZlcnJpZGluZyBtZXRob2RzIiBlbmFibGVkXD0idHJ1ZSIgaWRcPSJvcmcuZWNsaXBzZS5qZHQudWkudGV4dC5jb2RldGVtcGxhdGVzLm92ZXJyaWRlY29tbWVudCIgbmFtZVw9Im92ZXJyaWRlY29tbWVudCI+LyoqXG4gKiAke3NlZV90b19vdmVycmlkZGVufVxuICpcbiAqICR7dGFnc31cbiAqLzwvdGVtcGxhdGU+PHRlbXBsYXRlIGF1dG9pbnNlcnRcPSJmYWxzZSIgY29udGV4dFw9ImRlbGVnYXRlY29tbWVudF9jb250ZXh0IiBkZWxldGVkXD0iZmFsc2UiIGRlc2NyaXB0aW9uXD0iQ29tbWVudCBmb3IgZGVsZWdhdGUgbWV0aG9kcyIgZW5hYmxlZFw9InRydWUiIGlkXD0ib3JnLmVjbGlwc2UuamR0LnVpLnRleHQuY29kZXRlbXBsYXRlcy5kZWxlZ2F0ZWNvbW1lbnQiIG5hbWVcPSJkZWxlZ2F0ZWNvbW1lbnQiPi8qKlxuICogJHtzZWVfdG9fdGFyZ2V0fVxuICpcbiAqICR7dGFnc31cbiAqLzwvdGVtcGxhdGU+PHRlbXBsYXRlIGF1dG9pbnNlcnRcPSJ0cnVlIiBjb250ZXh0XD0ibmV3dHlwZV9jb250ZXh0IiBkZWxldGVkXD0iZmFsc2UiIGRlc2NyaXB0aW9uXD0iTmV3bHkgY3JlYXRlZCBmaWxlcyIgZW5hYmxlZFw9InRydWUiIGlkXD0ib3JnLmVjbGlwc2UuamR0LnVpLnRleHQuY29kZXRlbXBsYXRlcy5uZXd0eXBlIiBuYW1lXD0ibmV3dHlwZSI+JHtmaWxlY29tbWVudH1cbiR7cGFja2FnZV9kZWNsYXJhdGlvbn1cblxuJHt0eXBlY29tbWVudH1cbiR7dHlwZV9kZWNsYXJhdGlvbn08L3RlbXBsYXRlPjx0ZW1wbGF0ZSBhdXRvaW5zZXJ0XD0idHJ1ZSIgY29udGV4dFw9ImNsYXNzYm9keV9jb250ZXh0IiBkZWxldGVkXD0iZmFsc2UiIGRlc2NyaXB0aW9uXD0iQ29kZSBpbiBuZXcgY2xhc3MgdHlwZSBib2RpZXMiIGVuYWJsZWRcPSJ0cnVlIiBpZFw9Im9yZy5lY2xpcHNlLmpkdC51aS50ZXh0LmNvZGV0ZW1wbGF0ZXMuY2xhc3Nib2R5IiBuYW1lXD0iY2xhc3Nib2R5Ij5cbjwvdGVtcGxhdGU+PHRlbXBsYXRlIGF1dG9pbnNlcnRcPSJ0cnVlIiBjb250ZXh0XD0iaW50ZXJmYWNlYm9keV9jb250ZXh0IiBkZWxldGVkXD0iZmFsc2UiIGRlc2NyaXB0aW9uXD0iQ29kZSBpbiBuZXcgaW50ZXJmYWNlIHR5cGUgYm9kaWVzIiBlbmFibGVkXD0idHJ1ZSIgaWRcPSJvcmcuZWNsaXBzZS5qZHQudWkudGV4dC5jb2RldGVtcGxhdGVzLmludGVyZmFjZWJvZHkiIG5hbWVcPSJpbnRlcmZhY2Vib2R5Ij5cbjwvdGVtcGxhdGU+PHRlbXBsYXRlIGF1dG9pbnNlcnRcPSJ0cnVlIiBjb250ZXh0XD0iZW51bWJvZHlfY29udGV4dCIgZGVsZXRlZFw9ImZhbHNlIiBkZXNjcmlwdGlvblw9IkNvZGUgaW4gbmV3IGVudW0gdHlwZSBib2RpZXMiIGVuYWJsZWRcPSJ0cnVlIiBpZFw9Im9yZy5lY2xpcHNlLmpkdC51aS50ZXh0LmNvZGV0ZW1wbGF0ZXMuZW51bWJvZHkiIG5hbWVcPSJlbnVtYm9keSI+XG48L3RlbXBsYXRlPjx0ZW1wbGF0ZSBhdXRvaW5zZXJ0XD0idHJ1ZSIgY29udGV4dFw9ImFubm90YXRpb25ib2R5X2NvbnRleHQiIGRlbGV0ZWRcPSJmYWxzZSIgZGVzY3JpcHRpb25cPSJDb2RlIGluIG5ldyBhbm5vdGF0aW9uIHR5cGUgYm9kaWVzIiBlbmFibGVkXD0idHJ1ZSIgaWRcPSJvcmcuZWNsaXBzZS5qZHQudWkudGV4dC5jb2RldGVtcGxhdGVzLmFubm90YXRpb25ib2R5IiBuYW1lXD0iYW5ub3RhdGlvbmJvZHkiPlxuPC90ZW1wbGF0ZT48dGVtcGxhdGUgYXV0b2luc2VydFw9InRydWUiIGNvbnRleHRcPSJjYXRjaGJsb2NrX2NvbnRleHQiIGRlbGV0ZWRcPSJmYWxzZSIgZGVzY3JpcHRpb25cPSJDb2RlIGluIG5ldyBjYXRjaCBibG9ja3MiIGVuYWJsZWRcPSJ0cnVlIiBpZFw9Im9yZy5lY2xpcHNlLmpkdC51aS50ZXh0LmNvZGV0ZW1wbGF0ZXMuY2F0Y2hibG9jayIgbmFtZVw9ImNhdGNoYmxvY2siPi8vICR7dG9kb30gQXV0by1nZW5lcmF0ZWQgY2F0Y2ggYmxvY2tcbiR7ZXhjZXB0aW9uX3Zhcn0ucHJpbnRTdGFja1RyYWNlKCk7PC90ZW1wbGF0ZT48dGVtcGxhdGUgYXV0b2luc2VydFw9InRydWUiIGNvbnRleHRcPSJtZXRob2Rib2R5X2NvbnRleHQiIGRlbGV0ZWRcPSJmYWxzZSIgZGVzY3JpcHRpb25cPSJDb2RlIGluIGNyZWF0ZWQgbWV0aG9kIHN0dWJzIiBlbmFibGVkXD0idHJ1ZSIgaWRcPSJvcmcuZWNsaXBzZS5qZHQudWkudGV4dC5jb2RldGVtcGxhdGVzLm1ldGhvZGJvZHkiIG5hbWVcPSJtZXRob2Rib2R5Ij4vLyAke3RvZG99IEF1dG8tZ2VuZXJhdGVkIG1ldGhvZCBzdHViXG4ke2JvZHlfc3RhdGVtZW50fTwvdGVtcGxhdGU+PHRlbXBsYXRlIGF1dG9pbnNlcnRcPSJ0cnVlIiBjb250ZXh0XD0iY29uc3RydWN0b3Jib2R5X2NvbnRleHQiIGRlbGV0ZWRcPSJmYWxzZSIgZGVzY3JpcHRpb25cPSJDb2RlIGluIGNyZWF0ZWQgY29uc3RydWN0b3Igc3R1YnMiIGVuYWJsZWRcPSJ0cnVlIiBpZFw9Im9yZy5lY2xpcHNlLmpkdC51aS50ZXh0LmNvZGV0ZW1wbGF0ZXMuY29uc3RydWN0b3Jib2R5IiBuYW1lXD0iY29uc3RydWN0b3Jib2R5Ij4ke2JvZHlfc3RhdGVtZW50fVxuLy8gJHt0b2RvfSBBdXRvLWdlbmVyYXRlZCBjb25zdHJ1Y3RvciBzdHViPC90ZW1wbGF0ZT48dGVtcGxhdGUgYXV0b2luc2VydFw9InRydWUiIGNvbnRleHRcPSJnZXR0ZXJib2R5X2NvbnRleHQiIGRlbGV0ZWRcPSJmYWxzZSIgZGVzY3JpcHRpb25cPSJDb2RlIGluIGNyZWF0ZWQgZ2V0dGVycyIgZW5hYmxlZFw9InRydWUiIGlkXD0ib3JnLmVjbGlwc2UuamR0LnVpLnRleHQuY29kZXRlbXBsYXRlcy5nZXR0ZXJib2R5IiBuYW1lXD0iZ2V0dGVyYm9keSI+cmV0dXJuICR7ZmllbGR9OzwvdGVtcGxhdGU+PHRlbXBsYXRlIGF1dG9pbnNlcnRcPSJ0cnVlIiBjb250ZXh0XD0ic2V0dGVyYm9keV9jb250ZXh0IiBkZWxldGVkXD0iZmFsc2UiIGRlc2NyaXB0aW9uXD0iQ29kZSBpbiBjcmVhdGVkIHNldHRlcnMiIGVuYWJsZWRcPSJ0cnVlIiBpZFw9Im9yZy5lY2xpcHNlLmpkdC51aS50ZXh0LmNvZGV0ZW1wbGF0ZXMuc2V0dGVyYm9keSIgbmFtZVw9InNldHRlcmJvZHkiPiR7ZmllbGR9IFw9ICR7cGFyYW19OzwvdGVtcGxhdGU+PC90ZW1wbGF0ZXM+DQpkaWZmIC0tZ2l0IGEvZGlhZ3JhbS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGlhZ3JhbS5ibG9ja2RlZmluaXRpb24vTUVUQS1JTkYvTUFOSUZFU1QuTUYgYi9kaWFncmFtL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kaWFncmFtLmJsb2NrZGVmaW5pdGlvbi9NRVRBLUlORi9NQU5JRkVTVC5NRgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZjYxOTE5Ci0tLSAvZGV2L251bGwKKysrIGIvZGlhZ3JhbS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGlhZ3JhbS5ibG9ja2RlZmluaXRpb24vTUVUQS1JTkYvTUFOSUZFU1QuTUYKQEAgLTAsMCArMSwyNCBAQAorTWFuaWZlc3QtVmVyc2lvbjogMS4wDQorQnVuZGxlLU1hbmlmZXN0VmVyc2lvbjogMg0KK0J1bmRsZS1OYW1lOiAlcGx1Z2luTmFtZQ0KK0J1bmRsZS1TeW1ib2xpY05hbWU6IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kaWFncmFtLmJsb2NrZGVmaW5pdGlvbjtzaW5nbGV0b246PXRydWUNCitCdW5kbGUtVmVyc2lvbjogMC43LjAucXVhbGlmaWVyDQorQnVuZGxlLUFjdGl2YXRvcjogb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRpYWdyYW0uYmxvY2tkZWZpbml0aW9uLkFjdGl2YXRvcg0KK0J1bmRsZS1WZW5kb3I6ICVwcm92aWRlck5hbWUNCitSZXF1aXJlLUJ1bmRsZTogb3JnLmVjbGlwc2UudWksDQorIG9yZy5lY2xpcHNlLmNvcmUucnVudGltZSwNCisgb3JnLmVjbGlwc2UucGFweXJ1cy5pbmZyYS52aWV3cG9pbnRzLnBvbGljeTtidW5kbGUtdmVyc2lvbj0iMS4xLjAiLA0KKyBvcmcuZWNsaXBzZS51bWwyLnVtbCwNCisgb3JnLmVjbGlwc2UucGFweXJ1cy5pbmZyYS5jb3JlO2J1bmRsZS12ZXJzaW9uPSIxLjEuMCIsDQorIGNvbS5nb29nbGUuZ3VhdmE7YnVuZGxlLXZlcnNpb249IjExLjAuMCIsDQorIG9yZy5lY2xpcHNlLnBhcHlydXMuaW5mcmEuZW1mO2J1bmRsZS12ZXJzaW9uPSIxLjEuMCIsDQorIG9yZy5lY2xpcHNlLnBhcHlydXMudW1sLmRpYWdyYW0uY29tbW9uO2J1bmRsZS12ZXJzaW9uPSIxLjEuMCIsDQorIG9yZy5lY2xpcHNlLnBhcHlydXMuaW5mcmEuZ21mZGlhZy5jb21tb247YnVuZGxlLXZlcnNpb249IjEuMS4wIiwNCisgb3JnLmVjbGlwc2UucGFweXJ1cy51bWwuZGlhZ3JhbS5jbGF6ejtidW5kbGUtdmVyc2lvbj0iMS4xLjAiLA0KKyBvcmcuZWNsaXBzZS5nbWYudG9vbGluZy5ydW50aW1lLA0KKyBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGlhZ3JhbS5jb21tb247YnVuZGxlLXZlcnNpb249IjAuNy4wIg0KK0J1bmRsZS1SZXF1aXJlZEV4ZWN1dGlvbkVudmlyb25tZW50OiBKYXZhU0UtMS42DQorRWNsaXBzZS1CdWRkeVBvbGljeTogZGVwZW5kZW50DQorQnVuZGxlLUFjdGl2YXRpb25Qb2xpY3k6IGxhenkNCitFeHBvcnQtUGFja2FnZTogb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRpYWdyYW0uYmxvY2tkZWZpbml0aW9uLA0KKyBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGlhZ3JhbS5ibG9ja2RlZmluaXRpb24uZmFjdG9yeQ0KZGlmZiAtLWdpdCBhL2RpYWdyYW0vb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRpYWdyYW0uYmxvY2tkZWZpbml0aW9uL2Fib3V0Lmh0bWwgYi9kaWFncmFtL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kaWFncmFtLmJsb2NrZGVmaW5pdGlvbi9hYm91dC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgyZDQ5YmYKLS0tIC9kZXYvbnVsbAorKysgYi9kaWFncmFtL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kaWFncmFtLmJsb2NrZGVmaW5pdGlvbi9hYm91dC5odG1sCkBAIC0wLDAgKzEsMjggQEAKKzwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgWEhUTUwgMS4wIFN0cmljdC8vRU4iDQorICAgICJodHRwOi8vd3d3LnczLm9yZy9UUi94aHRtbDEvRFREL3hodG1sMS1zdHJpY3QuZHRkIj4NCis8aHRtbCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCI+DQorPGhlYWQ+DQorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9SVNPLTg4NTktMSIvPg0KKzx0aXRsZT5BYm91dDwvdGl0bGU+DQorPC9oZWFkPg0KKzxib2R5IGxhbmc9IkVOLVVTIj4NCis8aDI+QWJvdXQgVGhpcyBDb250ZW50PC9oMj4NCisgDQorPHA+SnVuZSA1LCAyMDA3PC9wPgkNCis8aDM+TGljZW5zZTwvaDM+DQorDQorPHA+VGhlIEVjbGlwc2UgRm91bmRhdGlvbiBtYWtlcyBhdmFpbGFibGUgYWxsIGNvbnRlbnQgaW4gdGhpcyBwbHVnLWluICgmcXVvdDtDb250ZW50JnF1b3Q7KS4gIFVubGVzcyBvdGhlcndpc2UgDQoraW5kaWNhdGVkIGJlbG93LCB0aGUgQ29udGVudCBpcyBwcm92aWRlZCB0byB5b3UgdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZQ0KK0VjbGlwc2UgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAxLjAgKCZxdW90O0VQTCZxdW90OykuICBBIGNvcHkgb2YgdGhlIEVQTCBpcyBhdmFpbGFibGUgDQorYXQgPGEgaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwiPmh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sPC9hPi4NCitGb3IgcHVycG9zZXMgb2YgdGhlIEVQTCwgJnF1b3Q7UHJvZ3JhbSZxdW90OyB3aWxsIG1lYW4gdGhlIENvbnRlbnQuPC9wPg0KKw0KKzxwPklmIHlvdSBkaWQgbm90IHJlY2VpdmUgdGhpcyBDb250ZW50IGRpcmVjdGx5IGZyb20gdGhlIEVjbGlwc2UgRm91bmRhdGlvbiwgdGhlIENvbnRlbnQgaXMgDQorYmVpbmcgcmVkaXN0cmlidXRlZCBieSBhbm90aGVyIHBhcnR5ICgmcXVvdDtSZWRpc3RyaWJ1dG9yJnF1b3Q7KSBhbmQgZGlmZmVyZW50IHRlcm1zIGFuZCBjb25kaXRpb25zIG1heQ0KK2FwcGx5IHRvIHlvdXIgdXNlIG9mIGFueSBvYmplY3QgY29kZSBpbiB0aGUgQ29udGVudC4gIENoZWNrIHRoZSBSZWRpc3RyaWJ1dG9yJ3MgbGljZW5zZSB0aGF0IHdhcyANCitwcm92aWRlZCB3aXRoIHRoZSBDb250ZW50LiAgSWYgbm8gc3VjaCBsaWNlbnNlIGV4aXN0cywgY29udGFjdCB0aGUgUmVkaXN0cmlidXRvci4gIFVubGVzcyBvdGhlcndpc2UNCitpbmRpY2F0ZWQgYmVsb3csIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgRVBMIHN0aWxsIGFwcGx5IHRvIGFueSBzb3VyY2UgY29kZSBpbiB0aGUgQ29udGVudA0KK2FuZCBzdWNoIHNvdXJjZSBjb2RlIG1heSBiZSBvYnRhaW5lZCBhdCA8YSBocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnLyI+aHR0cDovL3d3dy5lY2xpcHNlLm9yZzwvYT4uPC9wPg0KKw0KKzwvYm9keT4NCis8L2h0bWw+DQpkaWZmIC0tZ2l0IGEvZGlhZ3JhbS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGlhZ3JhbS5ibG9ja2RlZmluaXRpb24vYnVpbGQucHJvcGVydGllcyBiL2RpYWdyYW0vb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRpYWdyYW0uYmxvY2tkZWZpbml0aW9uL2J1aWxkLnByb3BlcnRpZXMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDQ4MTM4MAotLS0gL2Rldi9udWxsCisrKyBiL2RpYWdyYW0vb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRpYWdyYW0uYmxvY2tkZWZpbml0aW9uL2J1aWxkLnByb3BlcnRpZXMKQEAgLTAsMCArMSw4IEBACitzb3VyY2UuLiA9IHNyYy8NCitvdXRwdXQuLiA9IGJpbi8NCitiaW4uaW5jbHVkZXMgPSBwbHVnaW4ueG1sLFwNCisgICAgICAgICAgICAgICBNRVRBLUlORi8sXA0KKyAgICAgICAgICAgICAgIC4sXA0KKyAgICAgICAgICAgICAgIGFib3V0Lmh0bWwsXA0KKyAgICAgICAgICAgICAgIHJlc291cmNlcy8NCitzcmMuaW5jbHVkZXMgPSBhYm91dC5odG1sDQpkaWZmIC0tZ2l0IGEvZGlhZ3JhbS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGlhZ3JhbS5ibG9ja2RlZmluaXRpb24vcGx1Z2luLnByb3BlcnRpZXMgYi9kaWFncmFtL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kaWFncmFtLmJsb2NrZGVmaW5pdGlvbi9wbHVnaW4ucHJvcGVydGllcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MzVkMTM2Ci0tLSAvZGV2L251bGwKKysrIGIvZGlhZ3JhbS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGlhZ3JhbS5ibG9ja2RlZmluaXRpb24vcGx1Z2luLnByb3BlcnRpZXMKQEAgLTAsMCArMSwxNSBAQAorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQorIyBDb3B5cmlnaHQgKGMpIDIwMTUgQ0VBIExJU1QuDQorIyBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQorIyBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCisjIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQorIyBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyMNCisjIENvbnRyaWJ1dG9yczoNCisjICAgICBCZW5vaXQgTWFnZ2kgKENFQSBMSVNUKSBiZW5vaXQubWFnZ2lAY2VhLmZyIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uDQorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KK3BsdWdpbk5hbWU9b3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRpYWdyYW0uYmxvY2tkZWZpbml0aW9uDQorcGx1Z2luRGVzY3JpcHRpb249VGhpcyBwbHVnLWluIGNvbnRhaW5zIHRoZSBibG9jayBkZWZpbml0aW9uIGRpYWdyYW0NCitwcm92aWRlck5hbWU9RWNsaXBzZSBNb2RlbGluZyBQcm9qZWN0DQorDQorDQpkaWZmIC0tZ2l0IGEvZGlhZ3JhbS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGlhZ3JhbS5ibG9ja2RlZmluaXRpb24vcGx1Z2luLnhtbCBiL2RpYWdyYW0vb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRpYWdyYW0uYmxvY2tkZWZpbml0aW9uL3BsdWdpbi54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNThhZjhiYgotLS0gL2Rldi9udWxsCisrKyBiL2RpYWdyYW0vb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRpYWdyYW0uYmxvY2tkZWZpbml0aW9uL3BsdWdpbi54bWwKQEAgLTAsMCArMSwzNyBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4NCis8P2VjbGlwc2UgdmVyc2lvbj0iMy40Ij8+DQorPCEtLQ0KKyAgQ29weXJpZ2h0IChjKSAyMDE1IENFQSBMSVNULg0KKyANCisgIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCisgIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KKyAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCisgIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorIA0KKyAgQ29udHJpYnV0b3JzOg0KKyAgQmVub2l0IE1hZ2dpIChDRUEgTElTVCkgYmVub2l0Lm1hZ2dpQGNlYS5mciAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbg0KKy0tPg0KKw0KKzxwbHVnaW4+DQorICAgPGV4dGVuc2lvbg0KKyAgICAgICAgIHBvaW50PSJvcmcuZWNsaXBzZS5wYXB5cnVzLmluZnJhLnZpZXdwb2ludHMucG9saWN5LmN1c3RvbSI+DQorICAgICAgPGNvbnRyaWJ1dGlvbg0KKyAgICAgICAgICAgIGZpbGU9InJlc291cmNlcy9jb25maWd1cmF0aW9uL0Jsb2NrRGVmaW5pdGlvbkRpYWdyYW0uY29uZmlndXJhdGlvbiINCisgICAgICAgICAgICBvcmlnaW5hbD0icGxhdGZvcm06L3BsdWdpbi9vcmcuZWNsaXBzZS5wYXB5cnVzLmluZnJhLnZpZXdwb2ludHMucG9saWN5L2J1aWx0aW4vZGVmYXVsdC5jb25maWd1cmF0aW9uIj4NCisgICAgICA8L2NvbnRyaWJ1dGlvbj4NCisgICA8L2V4dGVuc2lvbj4NCisgICA8ZXh0ZW5zaW9uDQorICAgICAgICAgcG9pbnQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuaW5mcmEuZ21mZGlhZy5jb21tb24uZGlhZ3JhbUV4cGFuc2lvbiI+DQorICAgICAgPGRpYWdyYW1leHBhbnNpb24NCisgICAgICAgICAgICBtb2RlbD0icmVzb3VyY2VzL2NvbmZpZ3VyYXRpb24vQkREY29uZmlnLnhtaSI+DQorICAgICAgPC9kaWFncmFtZXhwYW5zaW9uPg0KKyAgIDwvZXh0ZW5zaW9uPg0KKyAgIA0KKyAgIA0KKyAgIDwhLS0gUGFyc2VyIHByb3ZpZGVyIGRlY2xhcmF0aW9uIC0tPg0KKzxleHRlbnNpb24gcG9pbnQ9Im9yZy5lY2xpcHNlLmdtZi5ydW50aW1lLmNvbW1vbi51aS5zZXJ2aWNlcy5wYXJzZXJQcm92aWRlcnMiPg0KKwk8UGFyc2VyUHJvdmlkZXIgY2xhc3M9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kaWFncmFtLmJsb2NrZGVmaW5pdGlvbi5wcm92aWRlci5QYXJzZXJQcm92aWRlciI+DQorCQk8UHJpb3JpdHkgbmFtZT0iTG93Ii8+DQorCTwvUGFyc2VyUHJvdmlkZXI+DQorPC9leHRlbnNpb24+DQorPC9wbHVnaW4+DQpkaWZmIC0tZ2l0IGEvZGlhZ3JhbS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGlhZ3JhbS5ibG9ja2RlZmluaXRpb24vcG9tLnhtbCBiL2RpYWdyYW0vb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRpYWdyYW0uYmxvY2tkZWZpbml0aW9uL3BvbS54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGQ0NzdlMQotLS0gL2Rldi9udWxsCisrKyBiL2RpYWdyYW0vb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRpYWdyYW0uYmxvY2tkZWZpbml0aW9uL3BvbS54bWwKQEAgLTAsMCArMSwxMSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4NCis8cHJvamVjdD4NCisJPG1vZGVsVmVyc2lvbj40LjAuMDwvbW9kZWxWZXJzaW9uPg0KKwk8cGFyZW50Pg0KKwkJPGdyb3VwSWQ+b3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDwvZ3JvdXBJZD4JDQorCQk8YXJ0aWZhY3RJZD5vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sLmRpYWdyYW08L2FydGlmYWN0SWQ+DQorCQk8dmVyc2lvbj4wLjcuMC1TTkFQU0hPVDwvdmVyc2lvbj4NCisJPC9wYXJlbnQ+DQorCTxhcnRpZmFjdElkPm9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kaWFncmFtLmJsb2NrZGVmaW5pdGlvbjwvYXJ0aWZhY3RJZD4NCisJPHBhY2thZ2luZz5lY2xpcHNlLXBsdWdpbjwvcGFja2FnaW5nPg0KKzwvcHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kaWFncmFtL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kaWFncmFtLmJsb2NrZGVmaW5pdGlvbi9yZXNvdXJjZXMvY29uZmlndXJhdGlvbi9CRERjb25maWcueG1pIGIvZGlhZ3JhbS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGlhZ3JhbS5ibG9ja2RlZmluaXRpb24vcmVzb3VyY2VzL2NvbmZpZ3VyYXRpb24vQkREY29uZmlnLnhtaQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ODNmN2M0Ci0tLSAvZGV2L251bGwKKysrIGIvZGlhZ3JhbS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGlhZ3JhbS5ibG9ja2RlZmluaXRpb24vcmVzb3VyY2VzL2NvbmZpZ3VyYXRpb24vQkREY29uZmlnLnhtaQpAQCAtMCwwICsxLDQ4IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/Pg0KKzxleHBhbnNpb25tb2RlbDpEaWFncmFtRXhwYW5zaW9uIHhtaTp2ZXJzaW9uPSIyLjAiIHhtbG5zOnhtaT0iaHR0cDovL3d3dy5vbWcub3JnL1hNSSIgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIgeG1sbnM6ZXhwYW5zaW9ubW9kZWw9Imh0dHA6Ly8vZXhwYW5zaW9ubW9kZWwuZWNvcmUiIHhtaTppZD0iX0JPWDk4Tm5rRWVTRnR1NTExYi15YXciIElEPSJTeXNNTCAxLjQgQkREIj4NCisgIDx1c2FnZXMgeG1pOmlkPSJfckMxOW9Obm9FZVNxd09lNV9mcldtMSIgZGlhZ3JhbVR5cGU9IlN5c01MIDEuNCBCbG9jayBEZWZpbml0aW9uIiByZXByZXNlbnRhdGlvbnM9Il9yQzE5b05ub0VlU3F3T2U1X2ZyV20yIC8vQGxpYnJhcmllcy4wL0ByZXByZXNlbnRhdGlvbnMuMSIgbmFtZT0iU3lzTUwgMS40IEJERCBDb250ZXh0Ij4NCisgICAgPGdtZnRSZXByZXNlbnRhdGlvbnMgeG1pOmlkPSJfckMxOW9Obm9FZVNxd09lNV9mcldtMiIgZWRpdFBhcnRRdWFsaWZpZWROYW1lPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnVtbC5kaWFncmFtLmNsYXp6LmVkaXQucGFydHMuQ2xhc3NFZGl0UGFydCIgbmFtZT0iQmxvY2sgYmFzZWQgb24gQ2xhc3MgcmVwcmVzZW50YXRpb24gb2YgY2xhc3MgZGlhZ3JhbSIgdmlld0ZhY3Rvcnk9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kaWFncmFtLmJsb2NrZGVmaW5pdGlvbi5mYWN0b3J5LkJsb2NrQ2xhc3NpZmllclZpZXdGYWN0b3J5IiBpbmR1Y2VkUmVwcmVzZW50YXRpb25zPSJfckMxOW9Obm9FZVNxd09lNV9mcldtNiAvL0BsaWJyYXJpZXMuMS9AcmVwcmVzZW50YXRpb25zLjQgX3JDMTlvTm5vRWVTcXdPZTVfZnJXbTcgLy9AbGlicmFyaWVzLjEvQHJlcHJlc2VudGF0aW9ucy41IC8vQGxpYnJhcmllcy4xL0ByZXByZXNlbnRhdGlvbnMuNiIgc3ViUmVwcmVzZW50YXRpb25zPSIvL0BsaWJyYXJpZXMuMC9AcmVwcmVzZW50YXRpb25zLjIgLy9AbGlicmFyaWVzLjAvQHJlcHJlc2VudGF0aW9ucy40IC8vQGxpYnJhcmllcy4wL0ByZXByZXNlbnRhdGlvbnMuNSAvL0BsaWJyYXJpZXMuMC9AcmVwcmVzZW50YXRpb25zLjYiIHJldXNlZElEPSIyMDA4Ii8+DQorICA8L3VzYWdlcz4NCisgIDxsaWJyYXJpZXMgeG1pOmlkPSJfckMxOW9Obm9FZVNxd09lNV9mcldtMyIgbmFtZT0iSW5kZXBlbmRhbnQgUmVwcmVzZW50YXRpb25zIj4NCisgICAgPHJlcHJlc2VudGF0aW9ucyB4c2k6dHlwZT0iZXhwYW5zaW9ubW9kZWw6UmVwcmVzZW50YXRpb24iIHhtaTppZD0iX3JDMTlvTm5vRWVTcXdPZTVfZnJXbTQiIGVkaXRQYXJ0UXVhbGlmaWVkTmFtZT0ib3JnLmVjbGlwc2UucGFweXJ1cy51bWwuZGlhZ3JhbS5jbGF6ei5lZGl0LnBhcnRzLlByb3BlcnR5Rm9yQ2xhc3NFZGl0UGFydCIgbmFtZT0iRmxvdyBQb3J0IEFzIExhYmVsIiB2aWV3RmFjdG9yeT0ib3JnLmVjbGlwc2UucGFweXJ1cy5nbWYuZGlhZ3JhbS5jb21tb24uZmFjdG9yeS5TaGFwZVZpZXdGYWN0b3J5IiBncmFwaGljYWxFbGVtZW50VHlwZT0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5GbG93UG9ydF9MYWJlbCIvPg0KKyAgICA8cmVwcmVzZW50YXRpb25zIHhzaTp0eXBlPSJleHBhbnNpb25tb2RlbDpSZXByZXNlbnRhdGlvbiIgZWRpdFBhcnRRdWFsaWZpZWROYW1lPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnVtbC5kaWFncmFtLmNvbW1vbi5lZGl0LnBhcnQuRGVwZW5kZW5jeUVkaXRQYXJ0IiBuYW1lPSJWZXJpZnkgTGluayIgdmlld0ZhY3Rvcnk9Im9yZy5lY2xpcHNlLmdtZi5ydW50aW1lLmRpYWdyYW0udWkudmlldy5mYWN0b3JpZXMub3B0aW1hbC5Db25uZWN0b3JWaWV3RmFjdG9yeSIgZ3JhcGhpY2FsRWxlbWVudFR5cGU9Im9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5WZXJpZnlfQWJzdHJhY3Rpb25fVmVyaWZ5X0xpbmsiLz4NCisgICAgPHJlcHJlc2VudGF0aW9ucyB4c2k6dHlwZT0iZXhwYW5zaW9ubW9kZWw6UmVwcmVzZW50YXRpb24iIG5hbWU9Ik9wZXJhdGlvbiBCb3JkZXIgSXRlbSIgdmlld0ZhY3Rvcnk9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kaWFncmFtLmJsb2NrZGVmaW5pdGlvbi5mYWN0b3J5Lk9wZXJhdGlvblBvcnRWaWV3RmFjdG9yeSIgZ3JhcGhpY2FsRWxlbWVudFR5cGU9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuQ29udHJvbE9wZXJhdG9yX09wZXJhdGlvbl9PcGVyYXRpb25fQm9yZGVySXRlbSIgaW5kdWNlZFJlcHJlc2VudGF0aW9ucz0iLy9AbGlicmFyaWVzLjEvQHJlcHJlc2VudGF0aW9ucy4zIC8vQGxpYnJhcmllcy4xL0ByZXByZXNlbnRhdGlvbnMuMiI+DQorICAgICAgPGtpbmQgaHJlZj0icGxhdGZvcm06L3BsdWdpbi9vcmcuZWNsaXBzZS5wYXB5cnVzLnVtbC5kaWFncmFtLmNvbW1vbi9tb2RlbC9VTUxSZXByZXNlbnRhdGlvbktpbmQueG1pI19Fb0FPSU4wREVlU2lPZXhseUgzSWZ3Ii8+DQorICAgIDwvcmVwcmVzZW50YXRpb25zPg0KKyAgICA8cmVwcmVzZW50YXRpb25zIHhzaTp0eXBlPSJleHBhbnNpb25tb2RlbDpSZXByZXNlbnRhdGlvbiIgZWRpdFBhcnRRdWFsaWZpZWROYW1lPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnVtbC5kaWFncmFtLmNvbW1vbi5lZGl0LnBhcnQuRGVmYXVsdENoaWxkTGFiZWxFZGl0UGFydCIgbmFtZT0iQ29uc3RyYWludCBBcyBMYWJlbCIgdmlld0ZhY3Rvcnk9Im9yZy5lY2xpcHNlLnBhcHlydXMuZ21mLmRpYWdyYW0uY29tbW9uLmZhY3RvcnkuU2hhcGVWaWV3RmFjdG9yeSIgZ3JhcGhpY2FsRWxlbWVudFR5cGU9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuQ29uc3RyYWludF9MYWJlbCIvPg0KKyAgICA8cmVwcmVzZW50YXRpb25zIHhzaTp0eXBlPSJleHBhbnNpb25tb2RlbDpSZXByZXNlbnRhdGlvbiIgbmFtZT0iQ2xhc3MgUG9ydCIgdmlld0ZhY3Rvcnk9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kaWFncmFtLmJsb2NrZGVmaW5pdGlvbi5mYWN0b3J5LlBvcnRWaWV3RmFjdG9yeSIgZ3JhcGhpY2FsRWxlbWVudFR5cGU9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuQ2xhc3NfUG9ydCIgaW5kdWNlZFJlcHJlc2VudGF0aW9ucz0iLy9AbGlicmFyaWVzLjEvQHJlcHJlc2VudGF0aW9ucy4zIj4NCisgICAgICA8a2luZCBocmVmPSJwbGF0Zm9ybTovcGx1Z2luL29yZy5lY2xpcHNlLnBhcHlydXMudW1sLmRpYWdyYW0uY29tbW9uL21vZGVsL1VNTFJlcHJlc2VudGF0aW9uS2luZC54bWkjX0VvQU9JTjBERWVTaU9leGx5SDNJZnciLz4NCisgICAgPC9yZXByZXNlbnRhdGlvbnM+DQorICAgIDxyZXByZXNlbnRhdGlvbnMgeHNpOnR5cGU9ImV4cGFuc2lvbm1vZGVsOlJlcHJlc2VudGF0aW9uIiBuYW1lPSJDbGFzcyBQcm94eVBvcnQiIHZpZXdGYWN0b3J5PSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGlhZ3JhbS5ibG9ja2RlZmluaXRpb24uZmFjdG9yeS5Qb3J0Vmlld0ZhY3RvcnkiIGdyYXBoaWNhbEVsZW1lbnRUeXBlPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLkNsYXNzX1Byb3h5UG9ydCIgaW5kdWNlZFJlcHJlc2VudGF0aW9ucz0iLy9AbGlicmFyaWVzLjEvQHJlcHJlc2VudGF0aW9ucy4zIj4NCisgICAgICA8a2luZCBocmVmPSJwbGF0Zm9ybTovcGx1Z2luL29yZy5lY2xpcHNlLnBhcHlydXMudW1sLmRpYWdyYW0uY29tbW9uL21vZGVsL1VNTFJlcHJlc2VudGF0aW9uS2luZC54bWkjX0VvQU9JTjBERWVTaU9leGx5SDNJZnciLz4NCisgICAgPC9yZXByZXNlbnRhdGlvbnM+DQorICAgIDxyZXByZXNlbnRhdGlvbnMgeHNpOnR5cGU9ImV4cGFuc2lvbm1vZGVsOlJlcHJlc2VudGF0aW9uIiBuYW1lPSJDbGFzcyBGdWxsUG9ydCIgdmlld0ZhY3Rvcnk9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kaWFncmFtLmJsb2NrZGVmaW5pdGlvbi5mYWN0b3J5LlBvcnRWaWV3RmFjdG9yeSIgZ3JhcGhpY2FsRWxlbWVudFR5cGU9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuQ2xhc3NfRnVsbFBvcnQiIGluZHVjZWRSZXByZXNlbnRhdGlvbnM9Ii8vQGxpYnJhcmllcy4xL0ByZXByZXNlbnRhdGlvbnMuMyI+DQorICAgICAgPGtpbmQgaHJlZj0icGxhdGZvcm06L3BsdWdpbi9vcmcuZWNsaXBzZS5wYXB5cnVzLnVtbC5kaWFncmFtLmNvbW1vbi9tb2RlbC9VTUxSZXByZXNlbnRhdGlvbktpbmQueG1pI19Fb0FPSU4wREVlU2lPZXhseUgzSWZ3Ii8+DQorICAgIDwvcmVwcmVzZW50YXRpb25zPg0KKyAgICA8cmVwcmVzZW50YXRpb25zIHhzaTp0eXBlPSJleHBhbnNpb25tb2RlbDpSZXByZXNlbnRhdGlvbiIgZWRpdFBhcnRRdWFsaWZpZWROYW1lPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnVtbC5kaWFncmFtLmNsYXp6LmVkaXQucGFydHMuUHJvcGVydHlGb3JDbGFzc0VkaXRQYXJ0IiBuYW1lPSJQcm94eVBvcnQgQXMgTGFiZWwiIHZpZXdGYWN0b3J5PSJvcmcuZWNsaXBzZS5wYXB5cnVzLmdtZi5kaWFncmFtLmNvbW1vbi5mYWN0b3J5LlNoYXBlVmlld0ZhY3RvcnkiIGdyYXBoaWNhbEVsZW1lbnRUeXBlPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLlByb3h5UG9ydF9MYWJlbCIvPg0KKyAgICA8cmVwcmVzZW50YXRpb25zIHhzaTp0eXBlPSJleHBhbnNpb25tb2RlbDpSZXByZXNlbnRhdGlvbiIgZWRpdFBhcnRRdWFsaWZpZWROYW1lPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnVtbC5kaWFncmFtLmNsYXp6LmVkaXQucGFydHMuUHJvcGVydHlGb3JDbGFzc0VkaXRQYXJ0IiBuYW1lPSJGdWxsUG9ydCBBcyBMYWJlbCIgdmlld0ZhY3Rvcnk9Im9yZy5lY2xpcHNlLnBhcHlydXMuZ21mLmRpYWdyYW0uY29tbW9uLmZhY3RvcnkuU2hhcGVWaWV3RmFjdG9yeSIgZ3JhcGhpY2FsRWxlbWVudFR5cGU9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuRnVsbFBvcnRfTGFiZWwiLz4NCisgIDwvbGlicmFyaWVzPg0KKyAgPGxpYnJhcmllcyB4bWk6aWQ9Il9yQzE5b05ub0VlU3F3T2U1X2ZyV201IiBuYW1lPSJJbmRlcGVuZGFudCBDb21wYXJ0bWVudHMiPg0KKyAgICA8cmVwcmVzZW50YXRpb25zIHhzaTp0eXBlPSJleHBhbnNpb25tb2RlbDpJbmR1Y2VkUmVwcmVzZW50YXRpb24iIHhtaTppZD0iX3JDMTlvTm5vRWVTcXdPZTVfZnJXbTYiIG5hbWU9IkZsb3dQb3J0IENvbXBhcnRtZW50IiBoaW50PSJGbG93IFBvcnRzIiBjaGlsZHJlbj0iX3JDMTlvTm5vRWVTcXdPZTVfZnJXbTQiPg0KKyAgICAgIDxraW5kIGhyZWY9InBsYXRmb3JtOi9wbHVnaW4vb3JnLmVjbGlwc2UucGFweXJ1cy51bWwuZGlhZ3JhbS5jb21tb24vbW9kZWwvVU1MUmVwcmVzZW50YXRpb25LaW5kLnhtaSNfdmJUS1lOMERFZVMtWDRsQjJVdC1ZQSIvPg0KKyAgICA8L3JlcHJlc2VudGF0aW9ucz4NCisgICAgPHJlcHJlc2VudGF0aW9ucyB4c2k6dHlwZT0iZXhwYW5zaW9ubW9kZWw6SW5kdWNlZFJlcHJlc2VudGF0aW9uIiB4bWk6aWQ9Il9yQzE5b05ub0VlU3F3T2U1X2ZyV203IiBlZGl0UGFydFF1YWxpZmllZE5hbWU9IiIgbmFtZT0iTmVzdGVkIFBhcnRzIENvbXBhcnRtZW50IiBoaW50PSJOZXN0ZWQgUGFydHMiIGNoaWxkcmVuPSJfckMxOW9Obm9FZVNxd09lNV9mcldtMiI+DQorICAgICAgPGtpbmQgaHJlZj0icGxhdGZvcm06L3BsdWdpbi9vcmcuZWNsaXBzZS5wYXB5cnVzLnVtbC5kaWFncmFtLmNvbW1vbi9tb2RlbC9VTUxSZXByZXNlbnRhdGlvbktpbmQueG1pI18xdVhxOE4wREVlUy1YNGxCMlV0LVlBIi8+DQorICAgIDwvcmVwcmVzZW50YXRpb25zPg0KKyAgICA8cmVwcmVzZW50YXRpb25zIHhzaTp0eXBlPSJleHBhbnNpb25tb2RlbDpJbmR1Y2VkUmVwcmVzZW50YXRpb24iIGVkaXRQYXJ0UXVhbGlmaWVkTmFtZT0iIiBuYW1lPSJTdGVyZW90eXBlIExhYmVsIHJlcHJlc2VudGF0aW9uIGZvciBCb3JkZXJJdGVtIiBoaW50PSJPcGVyYXRpb25fQm9yZGVySXRlbV9TdGVyZW90eXBlX0xhYmVsIj4NCisgICAgICA8a2luZCBocmVmPSJwbGF0Zm9ybTovcGx1Z2luL29yZy5lY2xpcHNlLnBhcHlydXMudW1sLmRpYWdyYW0uY29tbW9uL21vZGVsL1VNTFJlcHJlc2VudGF0aW9uS2luZC54bWkjX2RHLWhvTjBIRWVTZlRmVG5LaDJHMVEiLz4NCisgICAgPC9yZXByZXNlbnRhdGlvbnM+DQorICAgIDxyZXByZXNlbnRhdGlvbnMgeHNpOnR5cGU9ImV4cGFuc2lvbm1vZGVsOkluZHVjZWRSZXByZXNlbnRhdGlvbiIgZWRpdFBhcnRRdWFsaWZpZWROYW1lPSIiIG5hbWU9IiBOYW1lIExhYmVsIHJlcHJlc2VudGF0aW9uIGZvciBCb3JkZXJJdGVtIiBoaW50PSJPcGVyYXRpb25fQm9yZGVySXRlbV9MYWJlbCI+DQorICAgICAgPGtpbmQgaHJlZj0icGxhdGZvcm06L3BsdWdpbi9vcmcuZWNsaXBzZS5wYXB5cnVzLnVtbC5kaWFncmFtLmNvbW1vbi9tb2RlbC9VTUxSZXByZXNlbnRhdGlvbktpbmQueG1pI19kRy1ob04wSEVlU2ZUZlRuS2gyRzFRIi8+DQorICAgIDwvcmVwcmVzZW50YXRpb25zPg0KKyAgICA8cmVwcmVzZW50YXRpb25zIHhzaTp0eXBlPSJleHBhbnNpb25tb2RlbDpJbmR1Y2VkUmVwcmVzZW50YXRpb24iIG5hbWU9IkNvbnN0cmFpbnQgQ29tcGFydG1lbnQiIGhpbnQ9ImNvbnN0cmFpbnRzIiBjaGlsZHJlbj0iLy9AbGlicmFyaWVzLjAvQHJlcHJlc2VudGF0aW9ucy4zIj4NCisgICAgICA8a2luZCBocmVmPSJwbGF0Zm9ybTovcGx1Z2luL29yZy5lY2xpcHNlLnBhcHlydXMudW1sLmRpYWdyYW0uY29tbW9uL21vZGVsL1VNTFJlcHJlc2VudGF0aW9uS2luZC54bWkjX3ZiVEtZTjBERWVTLVg0bEIyVXQtWUEiLz4NCisgICAgPC9yZXByZXNlbnRhdGlvbnM+DQorICAgIDxyZXByZXNlbnRhdGlvbnMgeHNpOnR5cGU9ImV4cGFuc2lvbm1vZGVsOkluZHVjZWRSZXByZXNlbnRhdGlvbiIgbmFtZT0iUHJveHlQb3J0IENvbXBhcnRtZW50IiBoaW50PSJQcm94eSBQb3J0cyIgY2hpbGRyZW49Ii8vQGxpYnJhcmllcy4wL0ByZXByZXNlbnRhdGlvbnMuNyI+DQorICAgICAgPGtpbmQgaHJlZj0icGxhdGZvcm06L3BsdWdpbi9vcmcuZWNsaXBzZS5wYXB5cnVzLnVtbC5kaWFncmFtLmNvbW1vbi9tb2RlbC9VTUxSZXByZXNlbnRhdGlvbktpbmQueG1pI192YlRLWU4wREVlUy1YNGxCMlV0LVlBIi8+DQorICAgIDwvcmVwcmVzZW50YXRpb25zPg0KKyAgICA8cmVwcmVzZW50YXRpb25zIHhzaTp0eXBlPSJleHBhbnNpb25tb2RlbDpJbmR1Y2VkUmVwcmVzZW50YXRpb24iIG5hbWU9IkZ1bGxQb3J0IENvbXBhcnRtZW50IiBoaW50PSJGdWxsIFBvcnRzIiBjaGlsZHJlbj0iLy9AbGlicmFyaWVzLjAvQHJlcHJlc2VudGF0aW9ucy44Ij4NCisgICAgICA8a2luZCBocmVmPSJwbGF0Zm9ybTovcGx1Z2luL29yZy5lY2xpcHNlLnBhcHlydXMudW1sLmRpYWdyYW0uY29tbW9uL21vZGVsL1VNTFJlcHJlc2VudGF0aW9uS2luZC54bWkjX3ZiVEtZTjBERWVTLVg0bEIyVXQtWUEiLz4NCisgICAgPC9yZXByZXNlbnRhdGlvbnM+DQorICA8L2xpYnJhcmllcz4NCis8L2V4cGFuc2lvbm1vZGVsOkRpYWdyYW1FeHBhbnNpb24+DQpkaWZmIC0tZ2l0IGEvZGlhZ3JhbS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGlhZ3JhbS5ibG9ja2RlZmluaXRpb24vcmVzb3VyY2VzL2NvbmZpZ3VyYXRpb24vQmxvY2tEZWZpbml0aW9uRGlhZ3JhbS5jb25maWd1cmF0aW9uIGIvZGlhZ3JhbS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGlhZ3JhbS5ibG9ja2RlZmluaXRpb24vcmVzb3VyY2VzL2NvbmZpZ3VyYXRpb24vQmxvY2tEZWZpbml0aW9uRGlhZ3JhbS5jb25maWd1cmF0aW9uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmViZmVjZGMKLS0tIC9kZXYvbnVsbAorKysgYi9kaWFncmFtL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kaWFncmFtLmJsb2NrZGVmaW5pdGlvbi9yZXNvdXJjZXMvY29uZmlndXJhdGlvbi9CbG9ja0RlZmluaXRpb25EaWFncmFtLmNvbmZpZ3VyYXRpb24KQEAgLTAsMCArMSwxOSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4NCis8Y29uZmlndXJhdGlvbjpQYXB5cnVzQ29uZmlndXJhdGlvbiB4bWk6dmVyc2lvbj0iMi4wIiB4bWxuczp4bWk9Imh0dHA6Ly93d3cub21nLm9yZy9YTUkiIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIHhtbG5zOmNvbmZpZ3VyYXRpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvcGFweXJ1cy9pbmZyYS92aWV3cG9pbnRzL2NvbmZpZ3VyYXRpb24iIHhtaTppZD0iX2tvMDdJRXJiRWVTZFFLelNSYXRCamciPg0KKyAgPHZpZXdwb2ludHMgeHNpOnR5cGU9ImNvbmZpZ3VyYXRpb246UGFweXJ1c1ZpZXdwb2ludCIgeG1pOmlkPSJfeG9nZG9FcmJFZVNkUUt6U1JhdEJqZyIgbmFtZT0iRGVmYXVsdCBQYXB5cnVzIFZpZXdwb2ludCI+DQorICAgIDxtb2RlbEtpbmRzIHhzaTp0eXBlPSJjb25maWd1cmF0aW9uOlBhcHlydXNEaWFncmFtIiB4bWk6aWQ9Il9ackJmNEphQkVlUzhlTnZTd0QwbGdBIiBuYW1lPSJTeXNNTCAxLjQgQmxvY2sgRGVmaW5pdGlvbiIgaWNvbj0icGxhdGZvcm06L3BsdWdpbi9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sLmRpYWdyYW0uYmxvY2tkZWZpbml0aW9uL2ljb25zL29iajE2L0RpYWdyYW1fQmxvY2tEZWZpbml0aW9uLmdpZiIgaW1wbGVtZW50YXRpb25JRD0iUGFweXJ1c1VNTENsYXNzRGlhZ3JhbSIgY2F0ZWdvcmllcz0iXzhwQTBzTXlqRWVTdVliUGRad1dseXciIGN1c3RvbVBhbGV0dGU9InBsYXRmb3JtOi9wbHVnaW4vb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRpYWdyYW0uYmxvY2tkZWZpbml0aW9uL3Jlc291cmNlcy9wYWxldHRlL2Jsb2NrRGlhZ3JhbS5wYWxldHRlY29uZmlndXJhdGlvbiIgY3VzdG9tU3R5bGU9InBsYXRmb3JtOi9wbHVnaW4vb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRpYWdyYW0uYmxvY2tkZWZpbml0aW9uL3Jlc291cmNlcy9zdHlsZS9ibG9ja2RpYWdyYW0uY3NzIj4NCisgICAgICA8cHJvZmlsZXMgaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9wYXB5cnVzLzEuNC9TeXNNTCMvIi8+DQorICAgICAgPG1vZGVsUnVsZXMgeG1pOmlkPSJfWnJCZjRaYUJFZVM4ZU52U3dEMGxnQSI+DQorICAgICAgICA8ZWxlbWVudCBocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3VtbDIvNS4wLjAvVU1MIy8vUGFja2FnZSIvPg0KKyAgICAgIDwvbW9kZWxSdWxlcz4NCisgICAgICA8b3duaW5nUnVsZXMgeG1pOmlkPSJfWnJCZjQ1YUJFZVM4ZU52U3dEMGxnQSI+DQorICAgICAgICA8ZWxlbWVudCBocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3VtbDIvNS4wLjAvVU1MIy8vUGFja2FnZSIvPg0KKyAgICAgIDwvb3duaW5nUnVsZXM+DQorICAgICAgPGNoaWxkUnVsZXMgeG1pOmlkPSJfWnJCZjVaYUJFZVM4ZU52U3dEMGxnQSIvPg0KKyAgICAgIDxwYWxldHRlUnVsZXMgeG1pOmlkPSJfTjRHeklLRlFFZVN4Nk1ZZGVpMXJLQSIgcGVybWl0PSJmYWxzZSIgZWxlbWVudD0iY2xhenouZ3JvdXAuKiIvPg0KKyAgICA8L21vZGVsS2luZHM+DQorICA8L3ZpZXdwb2ludHM+DQorICA8ZGVmYXVsdFN0YWtlaG9sZGVyIGhyZWY9InBsYXRmb3JtOi9wbHVnaW4vb3JnLmVjbGlwc2UucGFweXJ1cy5pbmZyYS52aWV3cG9pbnRzLnBvbGljeS9idWlsdGluL2RlZmF1bHQuY29uZmlndXJhdGlvbiNfN3dMbWtkeGhFZU9xSHZSeWlOODdoQSIvPg0KKyAgPG1ldGFtb2RlbCBocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3VtbDIvNS4wLjAvVU1MIy8iLz4NCisgIDxjYXRlZ29yaWVzIHhtaTppZD0iXzhwQTBzTXlqRWVTdVliUGRad1dseXciIG5hbWU9IlN5c01MMTQiLz4NCis8L2NvbmZpZ3VyYXRpb246UGFweXJ1c0NvbmZpZ3VyYXRpb24+DQpkaWZmIC0tZ2l0IGEvZGlhZ3JhbS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGlhZ3JhbS5ibG9ja2RlZmluaXRpb24vcmVzb3VyY2VzL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwuMTQuZGlhZ3JhbS5ibG9ja2RlZmluaXRpb24uZGkgYi9kaWFncmFtL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kaWFncmFtLmJsb2NrZGVmaW5pdGlvbi9yZXNvdXJjZXMvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbC4xNC5kaWFncmFtLmJsb2NrZGVmaW5pdGlvbi5kaQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NjM0ZDRjCi0tLSAvZGV2L251bGwKKysrIGIvZGlhZ3JhbS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGlhZ3JhbS5ibG9ja2RlZmluaXRpb24vcmVzb3VyY2VzL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwuMTQuZGlhZ3JhbS5ibG9ja2RlZmluaXRpb24uZGkKQEAgLTAsMCArMSwyIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/Pg0KKzx4bWk6WE1JIHhtaTp2ZXJzaW9uPSIyLjAiIHhtbG5zOnhtaT0iaHR0cDovL3d3dy5vbWcub3JnL1hNSSIvPg0KZGlmZiAtLWdpdCBhL2RpYWdyYW0vb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRpYWdyYW0uYmxvY2tkZWZpbml0aW9uL3Jlc291cmNlcy9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sLjE0LmRpYWdyYW0uYmxvY2tkZWZpbml0aW9uLm5vdGF0aW9uIGIvZGlhZ3JhbS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGlhZ3JhbS5ibG9ja2RlZmluaXRpb24vcmVzb3VyY2VzL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwuMTQuZGlhZ3JhbS5ibG9ja2RlZmluaXRpb24ubm90YXRpb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTZmY2RjMgotLS0gL2Rldi9udWxsCisrKyBiL2RpYWdyYW0vb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRpYWdyYW0uYmxvY2tkZWZpbml0aW9uL3Jlc291cmNlcy9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sLjE0LmRpYWdyYW0uYmxvY2tkZWZpbml0aW9uLm5vdGF0aW9uCkBAIC0wLDAgKzEsMTMwIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/Pg0KKzx4bWk6WE1JIHhtaTp2ZXJzaW9uPSIyLjAiIHhtbG5zOnhtaT0iaHR0cDovL3d3dy5vbWcub3JnL1hNSSIgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIgeG1sbnM6Y29uZmlndXJhdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9wYXB5cnVzL2luZnJhL3ZpZXdwb2ludHMvY29uZmlndXJhdGlvbiIgeG1sbnM6Y3NzPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3BhcHlydXMvaW5mcmEvZ21mZGlhZy9jc3MiIHhtbG5zOmVjb3JlPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2VtZi8yMDAyL0Vjb3JlIiB4bWxuczpuYXR0YWJsZT0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9wYXB5cnVzL25hdHRhYmxlL21vZGVsIiB4bWxuczpuYXR0YWJsZWF4aXM9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvcGFweXJ1cy9uYXR0YWJsZS9tb2RlbC90YWJsZS9uYXR0YWJsZWF4aXMiIHhtbG5zOm5hdHRhYmxlYXhpc2NvbmZpZ3VyYXRpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvcGFweXJ1cy9uYXR0YWJsZS9tb2RlbC90YWJsZS9uYXR0YWJsZWF4aXNjb25maWd1cmF0aW9uIiB4bWxuczpuYXR0YWJsZWF4aXNwcm92aWRlcj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9wYXB5cnVzL25hdHRhYmxlL21vZGVsL3RhYmxlL25hdHRhYmxlYXhpc3Byb3ZpZGVyIiB4bWxuczpuYXR0YWJsZWNvbmZpZ3VyYXRpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvcGFweXJ1cy9uYXR0YWJsZS9tb2RlbC9uYXR0YWJsZWNvbmZpZ3VyYXRpb24iIHhtbG5zOm5hdHRhYmxlc3R5bGU9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvcGFweXJ1cy9uYXR0YWJsZS9tb2RlbC90YWJsZS9uYXR0YWJsZXN0eWxlIiB4bWxuczpub3RhdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9nbWYvcnVudGltZS8xLjAuMi9ub3RhdGlvbiIgeG1sbnM6c3R5bGU9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvcGFweXJ1cy9pbmZyYS92aWV3cG9pbnRzL3BvbGljeS9zdHlsZSIgeG1sbnM6dW1sPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3VtbDIvNS4wLjAvVU1MIiB4c2k6c2NoZW1hTG9jYXRpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvcGFweXJ1cy9uYXR0YWJsZS9tb2RlbC90YWJsZS9uYXR0YWJsZWF4aXMgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9wYXB5cnVzL25hdHRhYmxlL21vZGVsIy8vbmF0dGFibGVheGlzIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvcGFweXJ1cy9uYXR0YWJsZS9tb2RlbC90YWJsZS9uYXR0YWJsZWF4aXNjb25maWd1cmF0aW9uIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvcGFweXJ1cy9uYXR0YWJsZS9tb2RlbCMvL25hdHRhYmxlYXhpc2NvbmZpZ3VyYXRpb24gaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9wYXB5cnVzL25hdHRhYmxlL21vZGVsL3RhYmxlL25hdHRhYmxlYXhpc3Byb3ZpZGVyIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvcGFweXJ1cy9uYXR0YWJsZS9tb2RlbCMvL25hdHRhYmxlYXhpc3Byb3ZpZGVyIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvcGFweXJ1cy9uYXR0YWJsZS9tb2RlbC9uYXR0YWJsZWNvbmZpZ3VyYXRpb24gaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9wYXB5cnVzL25hdHRhYmxlL21vZGVsIy8vbmF0dGFibGVjb25maWd1cmF0aW9uIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvcGFweXJ1cy9uYXR0YWJsZS9tb2RlbC90YWJsZS9uYXR0YWJsZXN0eWxlIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvcGFweXJ1cy9uYXR0YWJsZS9tb2RlbCMvL25hdHRhYmxlc3R5bGUiPg0KKyAgPG5vdGF0aW9uOkRpYWdyYW0geG1pOmlkPSJfT0YyM2dPTElFZVN2NWR3dlo5TlNEdyIgdHlwZT0iUGFweXJ1c1VNTENsYXNzRGlhZ3JhbSIgbmFtZT0iT3ZlcnZpZXciIG1lYXN1cmVtZW50VW5pdD0iUGl4ZWwiPg0KKyAgICA8Y2hpbGRyZW4geG1pOnR5cGU9Im5vdGF0aW9uOlNoYXBlIiB4bWk6aWQ9Il9PRjNla09MSUVlU3Y1ZHd2WjlOU0R3IiB0eXBlPSIyMDA1Ij4NCisgICAgICA8Y2hpbGRyZW4geG1pOnR5cGU9Im5vdGF0aW9uOkRlY29yYXRpb25Ob2RlIiB4bWk6aWQ9Il9PRjNla2VMSUVlU3Y1ZHd2WjlOU0R3IiB0eXBlPSI1MDIwIi8+DQorICAgICAgPGNoaWxkcmVuIHhtaTp0eXBlPSJub3RhdGlvbjpEZWNvcmF0aW9uTm9kZSIgeG1pOmlkPSJfT0YzZWt1TElFZVN2NWR3dlo5TlNEdyIgdHlwZT0iNzAwOSI+DQorICAgICAgICA8c3R5bGVzIHhtaTp0eXBlPSJub3RhdGlvbjpUaXRsZVN0eWxlIiB4bWk6aWQ9Il9PRjNlay1MSUVlU3Y1ZHd2WjlOU0R3Ii8+DQorICAgICAgICA8bGF5b3V0Q29uc3RyYWludCB4bWk6dHlwZT0ibm90YXRpb246Qm91bmRzIiB4bWk6aWQ9Il9PRjNlbE9MSUVlU3Y1ZHd2WjlOU0R3Ii8+DQorICAgICAgPC9jaGlsZHJlbj4NCisgICAgICA8ZWxlbWVudCB4bWk6dHlwZT0idW1sOk1vZGVsIiBocmVmPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sLjE0LmRpYWdyYW0uYmxvY2tkZWZpbml0aW9uLnVtbCNfT0ZzZmN1TElFZVN2NWR3dlo5TlNEdyIvPg0KKyAgICAgIDxsYXlvdXRDb25zdHJhaW50IHhtaTp0eXBlPSJub3RhdGlvbjpCb3VuZHMiIHhtaTppZD0iX09GM2VsZUxJRWVTdjVkd3ZaOU5TRHciIHg9IjIwMSIgeT0iMzgiLz4NCisgICAgPC9jaGlsZHJlbj4NCisgICAgPGNoaWxkcmVuIHhtaTp0eXBlPSJub3RhdGlvbjpTaGFwZSIgeG1pOmlkPSJfT0YzZWx1TElFZVN2NWR3dlo5TlNEdyIgdHlwZT0iMjAwNSI+DQorICAgICAgPGNoaWxkcmVuIHhtaTp0eXBlPSJub3RhdGlvbjpEZWNvcmF0aW9uTm9kZSIgeG1pOmlkPSJfT0YzZWwtTElFZVN2NWR3dlo5TlNEdyIgdHlwZT0iNTAyMCIvPg0KKyAgICAgIDxjaGlsZHJlbiB4bWk6dHlwZT0ibm90YXRpb246RGVjb3JhdGlvbk5vZGUiIHhtaTppZD0iX09GM2VtT0xJRWVTdjVkd3ZaOU5TRHciIHR5cGU9IjcwMDkiPg0KKyAgICAgICAgPHN0eWxlcyB4bWk6dHlwZT0ibm90YXRpb246VGl0bGVTdHlsZSIgeG1pOmlkPSJfT0YzZW1lTElFZVN2NWR3dlo5TlNEdyIvPg0KKyAgICAgICAgPGxheW91dENvbnN0cmFpbnQgeG1pOnR5cGU9Im5vdGF0aW9uOkJvdW5kcyIgeG1pOmlkPSJfT0YzZW11TElFZVN2NWR3dlo5TlNEdyIvPg0KKyAgICAgIDwvY2hpbGRyZW4+DQorICAgICAgPGVsZW1lbnQgeG1pOnR5cGU9InVtbDpNb2RlbCIgaHJlZj0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbC4xNC5kaWFncmFtLmJsb2NrZGVmaW5pdGlvbi51bWwjX09Gc2ZjLUxJRWVTdjVkd3ZaOU5TRHciLz4NCisgICAgICA8bGF5b3V0Q29uc3RyYWludCB4bWk6dHlwZT0ibm90YXRpb246Qm91bmRzIiB4bWk6aWQ9Il9PRjNlbS1MSUVlU3Y1ZHd2WjlOU0R3IiB4PSIyMDQiIHk9IjE3MyIvPg0KKyAgICA8L2NoaWxkcmVuPg0KKyAgICA8Y2hpbGRyZW4geG1pOnR5cGU9Im5vdGF0aW9uOlNoYXBlIiB4bWk6aWQ9Il9PRjNlbk9MSUVlU3Y1ZHd2WjlOU0R3IiB0eXBlPSIyMDA1Ij4NCisgICAgICA8Y2hpbGRyZW4geG1pOnR5cGU9Im5vdGF0aW9uOkRlY29yYXRpb25Ob2RlIiB4bWk6aWQ9Il9PRjNlbmVMSUVlU3Y1ZHd2WjlOU0R3IiB0eXBlPSI1MDIwIi8+DQorICAgICAgPGNoaWxkcmVuIHhtaTp0eXBlPSJub3RhdGlvbjpEZWNvcmF0aW9uTm9kZSIgeG1pOmlkPSJfT0YzZW51TElFZVN2NWR3dlo5TlNEdyIgdHlwZT0iNzAwOSI+DQorICAgICAgICA8c3R5bGVzIHhtaTp0eXBlPSJub3RhdGlvbjpUaXRsZVN0eWxlIiB4bWk6aWQ9Il9PRjNlbi1MSUVlU3Y1ZHd2WjlOU0R3Ii8+DQorICAgICAgICA8bGF5b3V0Q29uc3RyYWludCB4bWk6dHlwZT0ibm90YXRpb246Qm91bmRzIiB4bWk6aWQ9Il9PRjNlb09MSUVlU3Y1ZHd2WjlOU0R3Ii8+DQorICAgICAgPC9jaGlsZHJlbj4NCisgICAgICA8ZWxlbWVudCB4bWk6dHlwZT0idW1sOk1vZGVsIiBocmVmPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sLjE0LmRpYWdyYW0uYmxvY2tkZWZpbml0aW9uLnVtbCNfT0ZzZmR1TElFZVN2NWR3dlo5TlNEdyIvPg0KKyAgICAgIDxsYXlvdXRDb25zdHJhaW50IHhtaTp0eXBlPSJub3RhdGlvbjpCb3VuZHMiIHhtaTppZD0iX09GM2VvZUxJRWVTdjVkd3ZaOU5TRHciIHg9IjIwNiIgeT0iMzI5Ii8+DQorICAgIDwvY2hpbGRyZW4+DQorICAgIDxjaGlsZHJlbiB4bWk6dHlwZT0ibm90YXRpb246U2hhcGUiIHhtaTppZD0iX09GM2VvdUxJRWVTdjVkd3ZaOU5TRHciIHR5cGU9IjIwMDUiPg0KKyAgICAgIDxjaGlsZHJlbiB4bWk6dHlwZT0ibm90YXRpb246RGVjb3JhdGlvbk5vZGUiIHhtaTppZD0iX09GM2VvLUxJRWVTdjVkd3ZaOU5TRHciIHR5cGU9IjUwMjAiLz4NCisgICAgICA8Y2hpbGRyZW4geG1pOnR5cGU9Im5vdGF0aW9uOkRlY29yYXRpb25Ob2RlIiB4bWk6aWQ9Il9PRjNlcE9MSUVlU3Y1ZHd2WjlOU0R3IiB0eXBlPSI3MDA5Ij4NCisgICAgICAgIDxzdHlsZXMgeG1pOnR5cGU9Im5vdGF0aW9uOlRpdGxlU3R5bGUiIHhtaTppZD0iX09GM2VwZUxJRWVTdjVkd3ZaOU5TRHciLz4NCisgICAgICAgIDxsYXlvdXRDb25zdHJhaW50IHhtaTp0eXBlPSJub3RhdGlvbjpCb3VuZHMiIHhtaTppZD0iX09GM2VwdUxJRWVTdjVkd3ZaOU5TRHciLz4NCisgICAgICA8L2NoaWxkcmVuPg0KKyAgICAgIDxlbGVtZW50IHhtaTp0eXBlPSJ1bWw6TW9kZWwiIGhyZWY9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwuMTQuZGlhZ3JhbS5ibG9ja2RlZmluaXRpb24udW1sI19PRnNmZU9MSUVlU3Y1ZHd2WjlOU0R3Ii8+DQorICAgICAgPGxheW91dENvbnN0cmFpbnQgeG1pOnR5cGU9Im5vdGF0aW9uOkJvdW5kcyIgeG1pOmlkPSJfT0YzZXAtTElFZVN2NWR3dlo5TlNEdyIgeD0iNjM1IiB5PSIzMjQiLz4NCisgICAgPC9jaGlsZHJlbj4NCisgICAgPHN0eWxlcyB4bWk6dHlwZT0ibm90YXRpb246RGlhZ3JhbVN0eWxlIiB4bWk6aWQ9Il9PRjNlcU9MSUVlU3Y1ZHd2WjlOU0R3Ii8+DQorICAgIDxzdHlsZXMgeG1pOnR5cGU9InN0eWxlOlBhcHlydXNWaWV3U3R5bGUiIHhtaTppZD0iX09GM2VxZUxJRWVTdjVkd3ZaOU5TRHciPg0KKyAgICAgIDxvd25lciB4bWk6dHlwZT0idW1sOk1vZGVsIiBocmVmPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sLjE0LmRpYWdyYW0uYmxvY2tkZWZpbml0aW9uLnVtbCNfT0ZzZmNPTElFZVN2NWR3dlo5TlNEdyIvPg0KKyAgICAgIDxjb25maWd1cmF0aW9uIHhtaTp0eXBlPSJjb25maWd1cmF0aW9uOlBhcHlydXNEaWFncmFtIiBocmVmPSJwbGF0Zm9ybTovcGx1Z2luL29yZy5lY2xpcHNlLnBhcHlydXMuaW5mcmEudmlld3BvaW50cy5wb2xpY3kvYnVpbHRpbi9kZWZhdWx0LmNvbmZpZ3VyYXRpb24jXzd3TG1wTnhoRWVPcUh2UnlpTjg3aEEiLz4NCisgICAgPC9zdHlsZXM+DQorICAgIDxlbGVtZW50IHhtaTp0eXBlPSJ1bWw6TW9kZWwiIGhyZWY9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwuMTQuZGlhZ3JhbS5ibG9ja2RlZmluaXRpb24udW1sI19PRnNmY09MSUVlU3Y1ZHd2WjlOU0R3Ii8+DQorICAgIDxlZGdlcyB4bWk6dHlwZT0ibm90YXRpb246Q29ubmVjdG9yIiB4bWk6aWQ9Il9PRjNlcXVMSUVlU3Y1ZHd2WjlOU0R3IiB0eXBlPSI0MDA2IiBzb3VyY2U9Il9PRjNlbHVMSUVlU3Y1ZHd2WjlOU0R3IiB0YXJnZXQ9Il9PRjNla09MSUVlU3Y1ZHd2WjlOU0R3Ij4NCisgICAgICA8Y2hpbGRyZW4geG1pOnR5cGU9Im5vdGF0aW9uOkRlY29yYXRpb25Ob2RlIiB4bWk6aWQ9Il9PRjNlcS1MSUVlU3Y1ZHd2WjlOU0R3IiB2aXNpYmxlPSJmYWxzZSIgdHlwZT0iNjAxNCI+DQorICAgICAgICA8bGF5b3V0Q29uc3RyYWludCB4bWk6dHlwZT0ibm90YXRpb246TG9jYXRpb24iIHhtaTppZD0iX09GM2VyT0xJRWVTdjVkd3ZaOU5TRHciIHk9IjQwIi8+DQorICAgICAgPC9jaGlsZHJlbj4NCisgICAgICA8Y2hpbGRyZW4geG1pOnR5cGU9Im5vdGF0aW9uOkRlY29yYXRpb25Ob2RlIiB4bWk6aWQ9Il9PRjNlcmVMSUVlU3Y1ZHd2WjlOU0R3IiB2aXNpYmxlPSJmYWxzZSIgdHlwZT0iNjAxNSI+DQorICAgICAgICA8bGF5b3V0Q29uc3RyYWludCB4bWk6dHlwZT0ibm90YXRpb246TG9jYXRpb24iIHhtaTppZD0iX09GM2VydUxJRWVTdjVkd3ZaOU5TRHciIHk9IjYwIi8+DQorICAgICAgPC9jaGlsZHJlbj4NCisgICAgICA8c3R5bGVzIHhtaTp0eXBlPSJub3RhdGlvbjpGb250U3R5bGUiIHhtaTppZD0iX09GM2VyLUxJRWVTdjVkd3ZaOU5TRHciLz4NCisgICAgICA8ZWxlbWVudCB4bWk6dHlwZT0idW1sOkFic3RyYWN0aW9uIiBocmVmPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sLjE0LmRpYWdyYW0uYmxvY2tkZWZpbml0aW9uLnVtbCNfT0ZzZmRPTElFZVN2NWR3dlo5TlNEdyIvPg0KKyAgICAgIDxiZW5kcG9pbnRzIHhtaTp0eXBlPSJub3RhdGlvbjpSZWxhdGl2ZUJlbmRwb2ludHMiIHhtaTppZD0iX09GM2VzT0xJRWVTdjVkd3ZaOU5TRHciIHBvaW50cz0iWy0yLCAtMTAsIDgsIDQ4XSRbLTI3LCAtNDUsIC0xNywgMTNdIi8+DQorICAgICAgPHNvdXJjZUFuY2hvciB4bWk6dHlwZT0ibm90YXRpb246SWRlbnRpdHlBbmNob3IiIHhtaTppZD0iX09GM2VzZUxJRWVTdjVkd3ZaOU5TRHciIGlkPSIoMC4zMDUsMC4xKSIvPg0KKyAgICAgIDx0YXJnZXRBbmNob3IgeG1pOnR5cGU9Im5vdGF0aW9uOklkZW50aXR5QW5jaG9yIiB4bWk6aWQ9Il9PRjNlc3VMSUVlU3Y1ZHd2WjlOU0R3IiBpZD0iKDAuMjcsMC44NykiLz4NCisgICAgPC9lZGdlcz4NCisgICAgPGVkZ2VzIHhtaTp0eXBlPSJub3RhdGlvbjpDb25uZWN0b3IiIHhtaTppZD0iX09GM2VzLUxJRWVTdjVkd3ZaOU5TRHciIHR5cGU9IjQwMDYiIHNvdXJjZT0iX09GM2VuT0xJRWVTdjVkd3ZaOU5TRHciIHRhcmdldD0iX09GM2VsdUxJRWVTdjVkd3ZaOU5TRHciPg0KKyAgICAgIDxjaGlsZHJlbiB4bWk6dHlwZT0ibm90YXRpb246RGVjb3JhdGlvbk5vZGUiIHhtaTppZD0iX09GM2V0T0xJRWVTdjVkd3ZaOU5TRHciIHZpc2libGU9ImZhbHNlIiB0eXBlPSI2MDE0Ij4NCisgICAgICAgIDxsYXlvdXRDb25zdHJhaW50IHhtaTp0eXBlPSJub3RhdGlvbjpMb2NhdGlvbiIgeG1pOmlkPSJfT0YzZXRlTElFZVN2NWR3dlo5TlNEdyIgeT0iNDAiLz4NCisgICAgICA8L2NoaWxkcmVuPg0KKyAgICAgIDxjaGlsZHJlbiB4bWk6dHlwZT0ibm90YXRpb246RGVjb3JhdGlvbk5vZGUiIHhtaTppZD0iX09GM2V0dUxJRWVTdjVkd3ZaOU5TRHciIHZpc2libGU9ImZhbHNlIiB0eXBlPSI2MDE1Ij4NCisgICAgICAgIDxsYXlvdXRDb25zdHJhaW50IHhtaTp0eXBlPSJub3RhdGlvbjpMb2NhdGlvbiIgeG1pOmlkPSJfT0YzZXQtTElFZVN2NWR3dlo5TlNEdyIgeT0iNjAiLz4NCisgICAgICA8L2NoaWxkcmVuPg0KKyAgICAgIDxzdHlsZXMgeG1pOnR5cGU9Im5vdGF0aW9uOkZvbnRTdHlsZSIgeG1pOmlkPSJfT0YzZXVPTElFZVN2NWR3dlo5TlNEdyIvPg0KKyAgICAgIDxlbGVtZW50IHhtaTp0eXBlPSJ1bWw6QWJzdHJhY3Rpb24iIGhyZWY9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwuMTQuZGlhZ3JhbS5ibG9ja2RlZmluaXRpb24udW1sI19PRnNmZC1MSUVlU3Y1ZHd2WjlOU0R3Ii8+DQorICAgICAgPGJlbmRwb2ludHMgeG1pOnR5cGU9Im5vdGF0aW9uOlJlbGF0aXZlQmVuZHBvaW50cyIgeG1pOmlkPSJfT0YzZXVlTElFZVN2NWR3dlo5TlNEdyIgcG9pbnRzPSJbLTksIC0xNiwgMCwgNjddJFstMjQsIC03MiwgLTE1LCAxMV0iLz4NCisgICAgICA8c291cmNlQW5jaG9yIHhtaTp0eXBlPSJub3RhdGlvbjpJZGVudGl0eUFuY2hvciIgeG1pOmlkPSJfT0YzZXV1TElFZVN2NWR3dlo5TlNEdyIgaWQ9IigwLjI3LDAuMTYpIi8+DQorICAgICAgPHRhcmdldEFuY2hvciB4bWk6dHlwZT0ibm90YXRpb246SWRlbnRpdHlBbmNob3IiIHhtaTppZD0iX09GM2V1LUxJRWVTdjVkd3ZaOU5TRHciIGlkPSIoMC4yMzUsMC44OSkiLz4NCisgICAgPC9lZGdlcz4NCisgICAgPGVkZ2VzIHhtaTp0eXBlPSJub3RhdGlvbjpDb25uZWN0b3IiIHhtaTppZD0iX09GM2V2T0xJRWVTdjVkd3ZaOU5TRHciIHR5cGU9IjQwMDgiIHNvdXJjZT0iX09GM2VvdUxJRWVTdjVkd3ZaOU5TRHciIHRhcmdldD0iX09GM2VsdUxJRWVTdjVkd3ZaOU5TRHciPg0KKyAgICAgIDxjaGlsZHJlbiB4bWk6dHlwZT0ibm90YXRpb246RGVjb3JhdGlvbk5vZGUiIHhtaTppZD0iX09GM2V2ZUxJRWVTdjVkd3ZaOU5TRHciIHZpc2libGU9ImZhbHNlIiB0eXBlPSI2MDI2Ij4NCisgICAgICAgIDxsYXlvdXRDb25zdHJhaW50IHhtaTp0eXBlPSJub3RhdGlvbjpMb2NhdGlvbiIgeG1pOmlkPSJfT0YzZXZ1TElFZVN2NWR3dlo5TlNEdyIgeT0iNDAiLz4NCisgICAgICA8L2NoaWxkcmVuPg0KKyAgICAgIDxjaGlsZHJlbiB4bWk6dHlwZT0ibm90YXRpb246RGVjb3JhdGlvbk5vZGUiIHhtaTppZD0iX09GM2V2LUxJRWVTdjVkd3ZaOU5TRHciIHZpc2libGU9ImZhbHNlIiB0eXBlPSI2MDI3Ij4NCisgICAgICAgIDxsYXlvdXRDb25zdHJhaW50IHhtaTp0eXBlPSJub3RhdGlvbjpMb2NhdGlvbiIgeG1pOmlkPSJfT0YzZXdPTElFZVN2NWR3dlo5TlNEdyIgeT0iNjAiLz4NCisgICAgICA8L2NoaWxkcmVuPg0KKyAgICAgIDxzdHlsZXMgeG1pOnR5cGU9Im5vdGF0aW9uOkZvbnRTdHlsZSIgeG1pOmlkPSJfT0YzZXdlTElFZVN2NWR3dlo5TlNEdyIvPg0KKyAgICAgIDxlbGVtZW50IHhtaTp0eXBlPSJ1bWw6RGVwZW5kZW5jeSIgaHJlZj0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbC4xNC5kaWFncmFtLmJsb2NrZGVmaW5pdGlvbi51bWwjX09Gc2ZlZUxJRWVTdjVkd3ZaOU5TRHciLz4NCisgICAgICA8YmVuZHBvaW50cyB4bWk6dHlwZT0ibm90YXRpb246UmVsYXRpdmVCZW5kcG9pbnRzIiB4bWk6aWQ9Il9PRjNld3VMSUVlU3Y1ZHd2WjlOU0R3IiBwb2ludHM9IlstNDYsIC0yMCwgMjY1LCAxMTNdJFstMjc1LCAtMTM1LCAzNiwgLTJdIi8+DQorICAgICAgPHNvdXJjZUFuY2hvciB4bWk6dHlwZT0ibm90YXRpb246SWRlbnRpdHlBbmNob3IiIHhtaTppZD0iX09GM2V3LUxJRWVTdjVkd3ZaOU5TRHciIGlkPSIoMC4wLDAuMjQpIi8+DQorICAgICAgPHRhcmdldEFuY2hvciB4bWk6dHlwZT0ibm90YXRpb246SWRlbnRpdHlBbmNob3IiIHhtaTppZD0iX09GM2V4T0xJRWVTdjVkd3ZaOU5TRHciIGlkPSIoMS4wLDAuNjUpIi8+DQorICAgIDwvZWRnZXM+DQorICAgIDxlZGdlcyB4bWk6dHlwZT0ibm90YXRpb246Q29ubmVjdG9yIiB4bWk6aWQ9Il9PRjNleGVMSUVlU3Y1ZHd2WjlOU0R3IiB0eXBlPSI0MDA4IiBzb3VyY2U9Il9PRjNlb3VMSUVlU3Y1ZHd2WjlOU0R3IiB0YXJnZXQ9Il9PRjNlbk9MSUVlU3Y1ZHd2WjlOU0R3Ij4NCisgICAgICA8Y2hpbGRyZW4geG1pOnR5cGU9Im5vdGF0aW9uOkRlY29yYXRpb25Ob2RlIiB4bWk6aWQ9Il9PRjNleHVMSUVlU3Y1ZHd2WjlOU0R3IiB2aXNpYmxlPSJmYWxzZSIgdHlwZT0iNjAyNiI+DQorICAgICAgICA8bGF5b3V0Q29uc3RyYWludCB4bWk6dHlwZT0ibm90YXRpb246TG9jYXRpb24iIHhtaTppZD0iX09GM2V4LUxJRWVTdjVkd3ZaOU5TRHciIHk9IjQwIi8+DQorICAgICAgPC9jaGlsZHJlbj4NCisgICAgICA8Y2hpbGRyZW4geG1pOnR5cGU9Im5vdGF0aW9uOkRlY29yYXRpb25Ob2RlIiB4bWk6aWQ9Il9PRjNleU9MSUVlU3Y1ZHd2WjlOU0R3IiB2aXNpYmxlPSJmYWxzZSIgdHlwZT0iNjAyNyI+DQorICAgICAgICA8bGF5b3V0Q29uc3RyYWludCB4bWk6dHlwZT0ibm90YXRpb246TG9jYXRpb24iIHhtaTppZD0iX09GM2V5ZUxJRWVTdjVkd3ZaOU5TRHciIHk9IjYwIi8+DQorICAgICAgPC9jaGlsZHJlbj4NCisgICAgICA8c3R5bGVzIHhtaTp0eXBlPSJub3RhdGlvbjpGb250U3R5bGUiIHhtaTppZD0iX09GM2V5dUxJRWVTdjVkd3ZaOU5TRHciLz4NCisgICAgICA8ZWxlbWVudCB4bWk6dHlwZT0idW1sOkRlcGVuZGVuY3kiIGhyZWY9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwuMTQuZGlhZ3JhbS5ibG9ja2RlZmluaXRpb24udW1sI19PRnNmZXVMSUVlU3Y1ZHd2WjlOU0R3Ii8+DQorICAgICAgPGJlbmRwb2ludHMgeG1pOnR5cGU9Im5vdGF0aW9uOlJlbGF0aXZlQmVuZHBvaW50cyIgeG1pOmlkPSJfT0YzZXktTElFZVN2NWR3dlo5TlNEdyIgcG9pbnRzPSJbLTQwLCAxLCAyNjIsIC0xMl0kWy0yNjcsIDIwLCAzNSwgN10iLz4NCisgICAgICA8c291cmNlQW5jaG9yIHhtaTp0eXBlPSJub3RhdGlvbjpJZGVudGl0eUFuY2hvciIgeG1pOmlkPSJfT0YzZXpPTElFZVN2NWR3dlo5TlNEdyIgaWQ9IigwLjAsMC42OSkiLz4NCisgICAgICA8dGFyZ2V0QW5jaG9yIHhtaTp0eXBlPSJub3RhdGlvbjpJZGVudGl0eUFuY2hvciIgeG1pOmlkPSJfT0YzZXplTElFZVN2NWR3dlo5TlNEdyIgaWQ9IigxLjAsMC42NCkiLz4NCisgICAgPC9lZGdlcz4NCisgIDwvbm90YXRpb246RGlhZ3JhbT4NCisgIDxjc3M6TW9kZWxTdHlsZVNoZWV0cyB4bWk6aWQ9Il9NWEJsVU9jMUVlU0xkUEdlMnE5UjBnIi8+DQorICA8bmF0dGFibGU6VGFibGUgeG1pOmlkPSJfRkI0aXNPZ0VFZVNVUXZYaEVWUWg4dyIgbmFtZT0iUGFsZXR0ZSBSZXF1aXJlbWVudCBUYWJsZSIgY3VycmVudFJvd0F4aXNQcm92aWRlcj0iX0ZCNGl0ZWdFRWVTVVF2WGhFVlFoOHciIGN1cnJlbnRDb2x1bW5BeGlzUHJvdmlkZXI9Il9GQjRpc2VnRUVlU1VRdlhoRVZRaDh3Ij4NCisgICAgPGNvbnRleHQgeG1pOnR5cGU9InVtbDpNb2RlbCIgaHJlZj0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbC4xNC5kaWFncmFtLmJsb2NrZGVmaW5pdGlvbi51bWwjX09Gc2ZjdUxJRWVTdjVkd3ZaOU5TRHciLz4NCisgICAgPG93bmVyIHhtaTp0eXBlPSJ1bWw6TW9kZWwiIGhyZWY9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwuMTQuZGlhZ3JhbS5ibG9ja2RlZmluaXRpb24udW1sI19PRnNmY3VMSUVlU3Y1ZHd2WjlOU0R3Ii8+DQorICAgIDxwcm90b3R5cGUgeG1pOnR5cGU9ImNvbmZpZ3VyYXRpb246UGFweXJ1c1N5bmNUYWJsZSIgaHJlZj0icGxhdGZvcm06L3BsdWdpbi9vcmcuZWNsaXBzZS5wYXB5cnVzLmluZnJhLnZpZXdwb2ludHMucG9saWN5L2J1aWx0aW4vZGVmYXVsdC5jb25maWd1cmF0aW9uI183d05iM3R4aEVlT3FIdlJ5aU44N2hBIi8+DQorICAgIDx0YWJsZUNvbmZpZ3VyYXRpb24geG1pOnR5cGU9Im5hdHRhYmxlY29uZmlndXJhdGlvbjpUYWJsZUNvbmZpZ3VyYXRpb24iIGhyZWY9InBsYXRmb3JtOi9wbHVnaW4vb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbC5uYXR0YWJsZS5yZXF1aXJlbWVudC5jb25maWcvY29uZmlncy9yZXF1aXJlbWVudC5uYXR0YWJsZWNvbmZpZ3VyYXRpb24jLyIvPg0KKyAgICA8Y29sdW1uQXhpc1Byb3ZpZGVyc0hpc3RvcnkgeG1pOnR5cGU9Im5hdHRhYmxlYXhpc3Byb3ZpZGVyOlNsYXZlT2JqZWN0QXhpc1Byb3ZpZGVyIiB4bWk6aWQ9Il9GQjRpc2VnRUVlU1VRdlhoRVZRaDh3IiBkZXNjcmlwdGlvbj0iUHJvdmlkZXMgdGhlIGNvbHVtbnMgb2YgdGhlIHRhYmxlcyB3aXRoIGEgZGVmYXVsdCBjb25maWd1cmF0aW9uIiBuYW1lPSJSZXF1aXJlbWVudHMgRmVhdHVyZSBDb2x1bW5zIFByb3ZpZGVyIj4NCisgICAgICA8YXhpcyB4bWk6dHlwZT0ibmF0dGFibGVheGlzOkZlYXR1cmVJZEF4aXMiIHhtaTppZD0iX0ZCNGlzdWdFRWVTVVF2WGhFVlFoOHciIGVsZW1lbnQ9InByb3BlcnR5X29mX3N0ZXJlb3R5cGU6L1N5c01MOjpSZXF1aXJlbWVudHM6OlJlcXVpcmVtZW50OjppZCI+DQorICAgICAgICA8c3R5bGVzIHhtaTp0eXBlPSJuYXR0YWJsZXN0eWxlOkludFZhbHVlU3R5bGUiIHhtaTppZD0iXzBDWDdVT2dJRWVTVVF2WGhFVlFoOHciIG5hbWU9ImF4aXNXaWR0aCIgaW50VmFsdWU9IjMyMCIvPg0KKyAgICAgICAgPG1hbmFnZXIgeG1pOnR5cGU9Im5hdHRhYmxlYXhpc2NvbmZpZ3VyYXRpb246QXhpc01hbmFnZXJSZXByZXNlbnRhdGlvbiIgaHJlZj0icGxhdGZvcm06L3BsdWdpbi9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sLm5hdHRhYmxlLnJlcXVpcmVtZW50LmNvbmZpZy9jb25maWdzL3JlcXVpcmVtZW50Lm5hdHRhYmxlY29uZmlndXJhdGlvbiMvL0Bjb2x1bW5IZWFkZXJBeGlzQ29uZmlndXJhdGlvbi9AYXhpc01hbmFnZXJzLjEiLz4NCisgICAgICA8L2F4aXM+DQorICAgICAgPGF4aXMgeG1pOnR5cGU9Im5hdHRhYmxlYXhpczpFU3RydWN0dXJhbEZlYXR1cmVBeGlzIiB4bWk6aWQ9Il9GQjRpcy1nRUVlU1VRdlhoRVZRaDh3Ij4NCisgICAgICAgIDxzdHlsZXMgeG1pOnR5cGU9Im5hdHRhYmxlc3R5bGU6SW50VmFsdWVTdHlsZSIgeG1pOmlkPSJfMEM3OEFPZ0lFZVNVUXZYaEVWUWg4dyIgbmFtZT0iYXhpc1dpZHRoIiBpbnRWYWx1ZT0iMjIwIi8+DQorICAgICAgICA8bWFuYWdlciB4bWk6dHlwZT0ibmF0dGFibGVheGlzY29uZmlndXJhdGlvbjpBeGlzTWFuYWdlclJlcHJlc2VudGF0aW9uIiBocmVmPSJwbGF0Zm9ybTovcGx1Z2luL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwubmF0dGFibGUucmVxdWlyZW1lbnQuY29uZmlnL2NvbmZpZ3MvcmVxdWlyZW1lbnQubmF0dGFibGVjb25maWd1cmF0aW9uIy8vQGNvbHVtbkhlYWRlckF4aXNDb25maWd1cmF0aW9uL0BheGlzTWFuYWdlcnMuMCIvPg0KKyAgICAgICAgPGVsZW1lbnQgeG1pOnR5cGU9ImVjb3JlOkVBdHRyaWJ1dGUiIGhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvdW1sMi81LjAuMC9VTUwjLy9OYW1lZEVsZW1lbnQvbmFtZSIvPg0KKyAgICAgIDwvYXhpcz4NCisgICAgICA8YXhpcyB4bWk6dHlwZT0ibmF0dGFibGVheGlzOkZlYXR1cmVJZEF4aXMiIHhtaTppZD0iX0ZCNGl0T2dFRWVTVVF2WGhFVlFoOHciIGVsZW1lbnQ9InByb3BlcnR5X29mX3N0ZXJlb3R5cGU6L1N5c01MOjpSZXF1aXJlbWVudHM6OlJlcXVpcmVtZW50Ojp0ZXh0Ij4NCisgICAgICAgIDxzdHlsZXMgeG1pOnR5cGU9Im5hdHRhYmxlc3R5bGU6SW50VmFsdWVTdHlsZSIgeG1pOmlkPSJfMEM5S0lPZ0lFZVNVUXZYaEVWUWg4dyIgbmFtZT0iYXhpc1dpZHRoIiBpbnRWYWx1ZT0iMjIwIi8+DQorICAgICAgICA8bWFuYWdlciB4bWk6dHlwZT0ibmF0dGFibGVheGlzY29uZmlndXJhdGlvbjpBeGlzTWFuYWdlclJlcHJlc2VudGF0aW9uIiBocmVmPSJwbGF0Zm9ybTovcGx1Z2luL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwubmF0dGFibGUucmVxdWlyZW1lbnQuY29uZmlnL2NvbmZpZ3MvcmVxdWlyZW1lbnQubmF0dGFibGVjb25maWd1cmF0aW9uIy8vQGNvbHVtbkhlYWRlckF4aXNDb25maWd1cmF0aW9uL0BheGlzTWFuYWdlcnMuMSIvPg0KKyAgICAgIDwvYXhpcz4NCisgICAgPC9jb2x1bW5BeGlzUHJvdmlkZXJzSGlzdG9yeT4NCisgICAgPHJvd0F4aXNQcm92aWRlcnNIaXN0b3J5IHhtaTp0eXBlPSJuYXR0YWJsZWF4aXNwcm92aWRlcjpNYXN0ZXJPYmplY3RBeGlzUHJvdmlkZXIiIHhtaTppZD0iX0ZCNGl0ZWdFRWVTVVF2WGhFVlFoOHciIGRlc2NyaXB0aW9uPSJQcm92aWRlcyB0aGUgcmVxdWlyZW1lbnRzIGRpcmVjdGx5IG93bmVkIGJ5IHRoZSBjb250ZXh0IG9mIHRoZSB0YWJsZSIgbmFtZT0iUmVxdWlyZW1lbnQgQXhpcyBQcm92aWRlciIgZGlzY29ubmVjdFNsYXZlPSJ0cnVlIi8+DQorICAgIDxsb2NhbFJvd0hlYWRlckF4aXNDb25maWd1cmF0aW9uIHhtaTp0eXBlPSJuYXR0YWJsZWF4aXNjb25maWd1cmF0aW9uOkxvY2FsVGFibGVIZWFkZXJBeGlzQ29uZmlndXJhdGlvbiIgeG1pOmlkPSJfOWVua2dCVEVFZVdWZEx2WDFUcUJWZyIgaW5kZXhTdHlsZT0iTlVNRVJJQyI+DQorICAgICAgPHN0eWxlcyB4bWk6dHlwZT0ibmF0dGFibGVzdHlsZTpJbnRWYWx1ZVN0eWxlIiB4bWk6aWQ9Il85ZXRySUJURUVlV1ZkTHZYMVRxQlZnIiBuYW1lPSJyb3dMYWJlbFdpZHRoIiBpbnRWYWx1ZT0iMzQ1Ii8+DQorICAgICAgPHN0eWxlcyB4bWk6dHlwZT0ibmF0dGFibGVzdHlsZTpJbnRWYWx1ZVN0eWxlIiB4bWk6aWQ9Il85Z0JTc0JURUVlV1ZkTHZYMVRxQlZnIiBuYW1lPSJyb3dJbmRleFdpZHRoIiBpbnRWYWx1ZT0iMTY1Ii8+DQorICAgIDwvbG9jYWxSb3dIZWFkZXJBeGlzQ29uZmlndXJhdGlvbj4NCisgICAgPGxvY2FsQ29sdW1uSGVhZGVyQXhpc0NvbmZpZ3VyYXRpb24geG1pOnR5cGU9Im5hdHRhYmxlYXhpc2NvbmZpZ3VyYXRpb246TG9jYWxUYWJsZUhlYWRlckF4aXNDb25maWd1cmF0aW9uIiB4bWk6aWQ9Il85Zi1QWUJURUVlV1ZkTHZYMVRxQlZnIj4NCisgICAgICA8c3R5bGVzIHhtaTp0eXBlPSJuYXR0YWJsZXN0eWxlOkludFZhbHVlU3R5bGUiIHhtaTppZD0iXzlmLTJjQlRFRWVXVmRMdlgxVHFCVmciIG5hbWU9ImNvbHVtbkluZGV4SGVpZ2h0IiBpbnRWYWx1ZT0iMjUiLz4NCisgICAgICA8c3R5bGVzIHhtaTp0eXBlPSJuYXR0YWJsZXN0eWxlOkludFZhbHVlU3R5bGUiIHhtaTppZD0iXzlmX2RnQlRFRWVXVmRMdlgxVHFCVmciIG5hbWU9ImNvbHVtbkxhYmVsSGVpZ2h0IiBpbnRWYWx1ZT0iMjUiLz4NCisgICAgPC9sb2NhbENvbHVtbkhlYWRlckF4aXNDb25maWd1cmF0aW9uPg0KKyAgPC9uYXR0YWJsZTpUYWJsZT4NCis8L3htaTpYTUk+DQpkaWZmIC0tZ2l0IGEvZGlhZ3JhbS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGlhZ3JhbS5ibG9ja2RlZmluaXRpb24vcmVzb3VyY2VzL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwuMTQuZGlhZ3JhbS5ibG9ja2RlZmluaXRpb24udW1sIGIvZGlhZ3JhbS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGlhZ3JhbS5ibG9ja2RlZmluaXRpb24vcmVzb3VyY2VzL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwuMTQuZGlhZ3JhbS5ibG9ja2RlZmluaXRpb24udW1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlhZTE0NzcKLS0tIC9kZXYvbnVsbAorKysgYi9kaWFncmFtL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kaWFncmFtLmJsb2NrZGVmaW5pdGlvbi9yZXNvdXJjZXMvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbC4xNC5kaWFncmFtLmJsb2NrZGVmaW5pdGlvbi51bWwKQEAgLTAsMCArMSwxMTkgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+DQorPHhtaTpYTUkgeG1pOnZlcnNpb249IjIwMTMxMDAxIiB4bWxuczp4bWk9Imh0dHA6Ly93d3cub21nLm9yZy9zcGVjL1hNSS8yMDEzMTAwMSIgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIgeG1sbnM6UmVxdWlyZW1lbnRzPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3BhcHlydXMvMC43LjAvU3lzTUwvUmVxdWlyZW1lbnRzIiB4bWxuczplY29yZT0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9lbWYvMjAwMi9FY29yZSIgeG1sbnM6dW1sPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3VtbDIvNS4wLjAvVU1MIiB4c2k6c2NoZW1hTG9jYXRpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvcGFweXJ1cy8wLjcuMC9TeXNNTC9SZXF1aXJlbWVudHMgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9wYXB5cnVzLzAuNy4wL1N5c01MIy8vcmVxdWlyZW1lbnRzIj4NCisgIDx1bWw6TW9kZWwgeG1pOmlkPSJfT0ZzZmNPTElFZVN2NWR3dlo5TlNEdyIgbmFtZT0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbC4xNC5kaWFncmFtLmJsb2NrZGVmaW5pdGlvbiI+DQorICAgIDxwYWNrYWdlSW1wb3J0IHhtaTp0eXBlPSJ1bWw6UGFja2FnZUltcG9ydCIgeG1pOmlkPSJfT0ZzZmNlTElFZVN2NWR3dlo5TlNEdyI+DQorICAgICAgPGltcG9ydGVkUGFja2FnZSB4bWk6dHlwZT0idW1sOk1vZGVsIiBocmVmPSJwYXRobWFwOi8vVU1MX0xJQlJBUklFUy9VTUxQcmltaXRpdmVUeXBlcy5saWJyYXJ5LnVtbCNfMCIvPg0KKyAgICA8L3BhY2thZ2VJbXBvcnQ+DQorICAgIDxwYWNrYWdlZEVsZW1lbnQgeG1pOnR5cGU9InVtbDpNb2RlbCIgeG1pOmlkPSJfT0ZzZmN1TElFZVN2NWR3dlo5TlNEdyIgbmFtZT0iUmVxdWlyZW1lbnRzIj4NCisgICAgICA8b3duZWRDb21tZW50IHhtaTp0eXBlPSJ1bWw6Q29tbWVudCIgeG1pOmlkPSJfZElDTzhPYzJFZVNMZFBHZTJxOVIwZyI+DQorICAgICAgICA8Ym9keT5UaGlzIHBhY2thZ2Ugd2lsbCBjb250YWlucyBhbGwgZ3JhcGhpY2FsIHJlcXVpcmVtZW50cyBmb3IgU3lzbWwgZWxlbWVudHMgY29udGFpbmVkIGludCBoZSBCbG9jayBwYWNrYWdlIGFuZCBkaXNwbGF5ZWQgaW4gdGhlIEJERCBkaWFncmFtPC9ib2R5Pg0KKyAgICAgIDwvb3duZWRDb21tZW50Pg0KKyAgICAgIDxwYWNrYWdlZEVsZW1lbnQgeG1pOnR5cGU9InVtbDpDbGFzcyIgeG1pOmlkPSJfVEVCVElDWS1FZVd0bjZoam10dWZ1ZyIgbmFtZT0iRWxlbWVudHMgaW4gdGhlIEJERCBwYWxldHRlIj4NCisgICAgICAgIDxuZXN0ZWRDbGFzc2lmaWVyIHhtaTp0eXBlPSJ1bWw6Q2xhc3MiIHhtaTppZD0iX0lhVnNRT2dFRWVTVVF2WGhFVlFoOHciIG5hbWU9IkJsb2NrIGluIEJERCBQYWxldHRlIi8+DQorICAgICAgICA8bmVzdGVkQ2xhc3NpZmllciB4bWk6dHlwZT0idW1sOkNsYXNzIiB4bWk6aWQ9Il9hTVRTQU9nRUVlU1VRdlhoRVZRaDh3IiBuYW1lPSJBY3RvciBpbiBCREQgUGFsZXR0ZSIvPg0KKyAgICAgICAgPG5lc3RlZENsYXNzaWZpZXIgeG1pOnR5cGU9InVtbDpDbGFzcyIgeG1pOmlkPSJfYXBuZ0lPZ0VFZVNVUXZYaEVWUWg4dyIgbmFtZT0iVmFsdWUgVHlwZSBpbiBCREQgUGFsZXR0ZSIvPg0KKyAgICAgICAgPG5lc3RlZENsYXNzaWZpZXIgeG1pOnR5cGU9InVtbDpDbGFzcyIgeG1pOmlkPSJfYXhvTW9PZ0VFZVNVUXZYaEVWUWg4dyIgbmFtZT0iRW51bWVyYXRpb24gaW4gQkREIFBhbGV0dGUiLz4NCisgICAgICAgIDxuZXN0ZWRDbGFzc2lmaWVyIHhtaTp0eXBlPSJ1bWw6Q2xhc3MiIHhtaTppZD0iX2E0d3ZZT2dFRWVTVVF2WGhFVlFoOHciIG5hbWU9IkFic3RyYWN0IERlZmluaXRpb24gaW4gQkREIFBhbGV0dGUiLz4NCisgICAgICAgIDxuZXN0ZWRDbGFzc2lmaWVyIHhtaTp0eXBlPSJ1bWw6Q2xhc3MiIHhtaTppZD0iX2FfZDBVT2dFRWVTVVF2WGhFVlFoOHciIG5hbWU9IlN0ZXJlb3R5cGVQcm9wZXJ0eSBpbiBCREQgUGFsZXR0ZSIvPg0KKyAgICAgICAgPG5lc3RlZENsYXNzaWZpZXIgeG1pOnR5cGU9InVtbDpDbGFzcyIgeG1pOmlkPSJfYkdQeHdPZ0VFZVNVUXZYaEVWUWg4dyIgbmFtZT0iQmVoYXZpb3IgQ29tcGFydG1lbnQgaW4gQkREIFBhbGV0dGUiLz4NCisgICAgICAgIDxuZXN0ZWRDbGFzc2lmaWVyIHhtaTp0eXBlPSJ1bWw6Q2xhc3MiIHhtaTppZD0iX2JON3VJT2dFRWVTVVF2WGhFVlFoOHciIG5hbWU9Ik5hbWVzcGFjZSBDb21wYXJ0bWVudCBpbiBCREQgUGFsZXR0ZSIvPg0KKyAgICAgICAgPG5lc3RlZENsYXNzaWZpZXIgeG1pOnR5cGU9InVtbDpDbGFzcyIgeG1pOmlkPSJfYlU3dUFPZ0VFZVNVUXZYaEVWUWg4dyIgbmFtZT0iU3RydWN0dXJlIENvbXBhcnRtZW50IGluIEJERCBQYWxldHRlIi8+DQorICAgICAgICA8bmVzdGVkQ2xhc3NpZmllciB4bWk6dHlwZT0idW1sOkNsYXNzIiB4bWk6aWQ9Il9CaTdURU9nRkVlU1VRdlhoRVZRaDh3IiBuYW1lPSJTdHJ1Y3R1cmUgQ29tcGFydG1lbnQgaW4gQkREIFBhbGV0dGUiLz4NCisgICAgICAgIDxuZXN0ZWRDbGFzc2lmaWVyIHhtaTp0eXBlPSJ1bWw6Q2xhc3MiIHhtaTppZD0iX0J6UmNNT2dGRWVTVVF2WGhFVlFoOHciIG5hbWU9IkJvdW5kUmVmZXJlbmNlIGluIEJERCBQYWxldHRlIi8+DQorICAgICAgICA8bmVzdGVkQ2xhc3NpZmllciB4bWk6dHlwZT0idW1sOkNsYXNzIiB4bWk6aWQ9Il9CNzllSU9nRkVlU1VRdlhoRVZRaDh3IiBuYW1lPSJVbml0IGluIEJERCBQYWxldHRlIi8+DQorICAgICAgICA8bmVzdGVkQ2xhc3NpZmllciB4bWk6dHlwZT0idW1sOkNsYXNzIiB4bWk6aWQ9Il9CLV9rQU9nRkVlU1VRdlhoRVZRaDh3IiBuYW1lPSJRdWFudGl0eUtpbmQgaW4gQkREIFBhbGV0dGUiLz4NCisgICAgICAgIDxuZXN0ZWRDbGFzc2lmaWVyIHhtaTp0eXBlPSJ1bWw6Q2xhc3MiIHhtaTppZD0iX0NGRTk0T2dGRWVTVVF2WGhFVlFoOHciIG5hbWU9Ikluc3RhbmNlU3BlY2lmaWNhdGlvbiBpbiBCREQgUGFsZXR0ZSIvPg0KKyAgICAgICAgPG5lc3RlZENsYXNzaWZpZXIgeG1pOnR5cGU9InVtbDpDbGFzcyIgeG1pOmlkPSJfQ00wa29PZ0ZFZVNVUXZYaEVWUWg4dyIgbmFtZT0iRGVwZW5kZW5jeSBpbiBCREQgUGFsZXR0ZSIvPg0KKyAgICAgICAgPG5lc3RlZENsYXNzaWZpZXIgeG1pOnR5cGU9InVtbDpDbGFzcyIgeG1pOmlkPSJfQ1NQUUlPZ0ZFZVNVUXZYaEVWUWg4dyIgbmFtZT0iUmVmZXJlbmNlQXNzb2NpYXRpb24gaW4gQkREIFBhbGV0dGUiLz4NCisgICAgICAgIDxuZXN0ZWRDbGFzc2lmaWVyIHhtaTp0eXBlPSJ1bWw6Q2xhc3MiIHhtaTppZD0iX0NYNXpRT2dGRWVTVVF2WGhFVlFoOHciIG5hbWU9IlBhcnRBc3NvY2lhdGlvbiBpbiBCREQgUGFsZXR0ZSIvPg0KKyAgICAgICAgPG5lc3RlZENsYXNzaWZpZXIgeG1pOnR5cGU9InVtbDpDbGFzcyIgeG1pOmlkPSJfQ2RFQUVPZ0ZFZVNVUXZYaEVWUWg4dyIgbmFtZT0iU2hhcmVkQXNzb2NpYXRpb24gaW4gQkREIFBhbGV0dGUiLz4NCisgICAgICAgIDxuZXN0ZWRDbGFzc2lmaWVyIHhtaTp0eXBlPSJ1bWw6Q2xhc3MiIHhtaTppZD0iX0NqblVBT2dGRWVTVVF2WGhFVlFoOHciIG5hbWU9Ik11bHRpYnJhbmNoUGFydCBBc3NvY2lhdGlvbiBpbiBCREQgUGFsZXR0ZSIvPg0KKyAgICAgICAgPG5lc3RlZENsYXNzaWZpZXIgeG1pOnR5cGU9InVtbDpDbGFzcyIgeG1pOmlkPSJfVnhSSndPZ0hFZVNVUXZYaEVWUWg4dyIgbmFtZT0iTXVsdGlicmFuY2ggIFNoYXJlZCBBc3NvY2lhdGlvbiBpbiBCREQgUGFsZXR0ZSIvPg0KKyAgICAgICAgPG5lc3RlZENsYXNzaWZpZXIgeG1pOnR5cGU9InVtbDpDbGFzcyIgeG1pOmlkPSJfVl9kV3dPZ0hFZVNVUXZYaEVWUWg4dyIgbmFtZT0iR2VuZXJhbGl6YXRpb24gaW4gQkREIFBhbGV0dGUiLz4NCisgICAgICAgIDxuZXN0ZWRDbGFzc2lmaWVyIHhtaTp0eXBlPSJ1bWw6Q2xhc3MiIHhtaTppZD0iX1dJRkhRT2dIRWVTVVF2WGhFVlFoOHciIG5hbWU9Ik11bHRpYnJhbmNoIEdlbmVyYWxpemF0aW9uIGluIEJERCBQYWxldHRlIi8+DQorICAgICAgICA8bmVzdGVkQ2xhc3NpZmllciB4bWk6dHlwZT0idW1sOkNsYXNzIiB4bWk6aWQ9Il9XWGdxWU9nSEVlU1VRdlhoRVZRaDh3IiBuYW1lPSJHZW5lcmFsaXphdGlvblNldCBpbiBCREQgUGFsZXR0ZSIvPg0KKyAgICAgICAgPG5lc3RlZENsYXNzaWZpZXIgeG1pOnR5cGU9InVtbDpDbGFzcyIgeG1pOmlkPSJfV2VZSFlPZ0hFZVNVUXZYaEVWUWg4dyIgbmFtZT0iQmxvY2tOYW1lc3BhY2UgQ29udGFpbm1lbnQgaW4gQkREIFBhbGV0dGUiLz4NCisgICAgICAgIDxuZXN0ZWRDbGFzc2lmaWVyIHhtaTp0eXBlPSJ1bWw6Q2xhc3MiIHhtaTppZD0iX1drVS1ZT2dIRWVTVVF2WGhFVlFoOHciIG5hbWU9IlBhcnRpY2lwYW50UHJvcGVydHkgaW4gQkREIFBhbGV0dGUiLz4NCisgICAgICAgIDxuZXN0ZWRDbGFzc2lmaWVyIHhtaTp0eXBlPSJ1bWw6Q2xhc3MiIHhtaTppZD0iX1dxQjl3T2dIRWVTVVF2WGhFVlFoOHciIG5hbWU9IkNvbm5lY3RvclByb3BlcnR5IGluIEJERCBQYWxldHRlIi8+DQorICAgICAgICA8bmVzdGVkQ2xhc3NpZmllciB4bWk6dHlwZT0idW1sOkNsYXNzIiB4bWk6aWQ9Il9wMkdLQU9nSEVlU1VRdlhoRVZRaDh3IiBuYW1lPSJJbnRlcm5hbEJsb2NrRGlhZ3JhbSBpbiBCREQgUGFsZXR0ZSIvPg0KKyAgICAgICAgPG5lc3RlZENsYXNzaWZpZXIgeG1pOnR5cGU9InVtbDpDbGFzcyIgeG1pOmlkPSJfcURYSjhPZ0hFZVNVUXZYaEVWUWg4dyIgbmFtZT0iUG9ydCBpbiBCREQgUGFsZXR0ZSIvPg0KKyAgICAgICAgPG5lc3RlZENsYXNzaWZpZXIgeG1pOnR5cGU9InVtbDpDbGFzcyIgeG1pOmlkPSJfcU9oUkVPZ0hFZVNVUXZYaEVWUWg4dyIgbmFtZT0iUG9ydCAoQ29tcGFydG1lbnQgTm90YXRpb24pIGluIEJERCBQYWxldHRlIi8+DQorICAgICAgICA8bmVzdGVkQ2xhc3NpZmllciB4bWk6dHlwZT0idW1sOkNsYXNzIiB4bWk6aWQ9Il9xYTc4Y09nSEVlU1VRdlhoRVZRaDh3IiBuYW1lPSJQb3J0ICh3aXRoIENvbXBhcnRtZW50KSBpbiBCREQgUGFsZXR0ZSIvPg0KKyAgICAgICAgPG5lc3RlZENsYXNzaWZpZXIgeG1pOnR5cGU9InVtbDpDbGFzcyIgeG1pOmlkPSJfcXBMejBPZ0hFZVNVUXZYaEVWUWg4dyIgbmFtZT0iUG9ydCAoTmVzdGVkKSBpbiBCREQgUGFsZXR0ZSIvPg0KKyAgICAgICAgPG5lc3RlZENsYXNzaWZpZXIgeG1pOnR5cGU9InVtbDpDbGFzcyIgeG1pOmlkPSJfcTBSQ2NPZ0hFZVNVUXZYaEVWUWg4dyIgbmFtZT0iIFByb3h5UG9ydCBpbiBCREQgUGFsZXR0ZSIvPg0KKyAgICAgICAgPG5lc3RlZENsYXNzaWZpZXIgeG1pOnR5cGU9InVtbDpDbGFzcyIgeG1pOmlkPSJfcS1YWm9PZ0hFZVNVUXZYaEVWUWg4dyIgbmFtZT0iRnVsbFBvcnQgaW4gQkREIFBhbGV0dGUiLz4NCisgICAgICAgIDxuZXN0ZWRDbGFzc2lmaWVyIHhtaTp0eXBlPSJ1bWw6Q2xhc3MiIHhtaTppZD0iX3JIdGk0T2dIRWVTVVF2WGhFVlFoOHciIG5hbWU9IkZsb3dQcm9wZXJ0eSBpbiBCREQgUGFsZXR0ZSIvPg0KKyAgICAgICAgPG5lc3RlZENsYXNzaWZpZXIgeG1pOnR5cGU9InVtbDpDbGFzcyIgeG1pOmlkPSJfck9hQXdPZ0hFZVNVUXZYaEVWUWg4dyIgbmFtZT0iUmVxdWlyZWQgYW5kIFByb3ZpZGVkIGZlYXR1cmVzIGluIEJERCBQYWxldHRlIi8+DQorICAgICAgICA8bmVzdGVkQ2xhc3NpZmllciB4bWk6dHlwZT0idW1sOkNsYXNzIiB4bWk6aWQ9Il9yVUhuTU9nSEVlU1VRdlhoRVZRaDh3IiBuYW1lPSJJbnRlcmZhY2VCbG9jayBpbiBCREQgUGFsZXR0ZSIvPg0KKyAgICAgICAgPG5lc3RlZENsYXNzaWZpZXIgeG1pOnR5cGU9InVtbDpDbGFzcyIgeG1pOmlkPSJfclpYNm9PZ0hFZVNVUXZYaEVWUWg4dyIgbmFtZT0iSXRlbSBGbG93IGluIEJERCBQYWxldHRlIi8+DQorICAgICAgICA8bmVzdGVkQ2xhc3NpZmllciB4bWk6dHlwZT0idW1sOkNsYXNzIiB4bWk6aWQ9Il9yZWF5c09nSEVlU1VRdlhoRVZRaDh3IiBuYW1lPSJJbnRlcmZhY2UgaW4gQkREIFBhbGV0dGUiLz4NCisgICAgICAgIDxuZXN0ZWRDbGFzc2lmaWVyIHhtaTp0eXBlPSJ1bWw6Q2xhc3MiIHhtaTppZD0iX3JqVzlFT2dIRWVTVVF2WGhFVlFoOHciIG5hbWU9IlJlcXVpcmVkIGFuZCBQcm92aWRlZCBJbnRlcmZhY2VzIGluIEJERCBQYWxldHRlIi8+DQorICAgICAgICA8bmVzdGVkQ2xhc3NpZmllciB4bWk6dHlwZT0idW1sOkNsYXNzIiB4bWk6aWQ9Il9yb3N3RU9nSEVlU1VRdlhoRVZRaDh3IiBuYW1lPSJDb25zdHJhaW50QmxvY2sgaW4gQkREIFBhbGV0dGUiLz4NCisgICAgICA8L3BhY2thZ2VkRWxlbWVudD4NCisgICAgICA8cGFja2FnZWRFbGVtZW50IHhtaTp0eXBlPSJ1bWw6Q2xhc3MiIHhtaTppZD0iX2EwR3J3T0xJRWVTdjVkd3ZaOU5TRHciIG5hbWU9IkJsb2NrIGRpc3BsYXkiLz4NCisgICAgICA8cGFja2FnZWRFbGVtZW50IHhtaTp0eXBlPSJ1bWw6Q2xhc3MiIHhtaTppZD0iX2xMWkJZT2MyRWVTTGRQR2UycTlSMGciIG5hbWU9IlRoZSBibG9jayBjYW4gZGlzcGxheSBjb25zdHJhaW50cyAiLz4NCisgICAgICA8cGFja2FnZWRFbGVtZW50IHhtaTp0eXBlPSJ1bWw6Q2xhc3MiIHhtaTppZD0iX1NublBvQl9LRWVXcDlySjJnbXc1OUEiIG5hbWU9IkZsb3dQb3J0Q29tcGFydG1lbnQiLz4NCisgICAgPC9wYWNrYWdlZEVsZW1lbnQ+DQorICAgIDxwYWNrYWdlZEVsZW1lbnQgeG1pOnR5cGU9InVtbDpNb2RlbCIgeG1pOmlkPSJfT0ZzZmMtTElFZVN2NWR3dlo5TlNEdyIgbmFtZT0iVXNlQ2FzZXMiPg0KKyAgICAgIDxwYWNrYWdlZEVsZW1lbnQgeG1pOnR5cGU9InVtbDpBYnN0cmFjdGlvbiIgeG1pOmlkPSJfT0ZzZmRPTElFZVN2NWR3dlo5TlNEdyIgbmFtZT0idXNlQ2FzZXNBYnN0cmFjdGlvbiIgY2xpZW50PSJfT0ZzZmMtTElFZVN2NWR3dlo5TlNEdyIgc3VwcGxpZXI9Il9PRnNmY3VMSUVlU3Y1ZHd2WjlOU0R3Ii8+DQorICAgICAgPHBhY2thZ2VkRWxlbWVudCB4bWk6dHlwZT0idW1sOkNvbXBvbmVudCIgeG1pOmlkPSJfT0ZzZmRlTElFZVN2NWR3dlo5TlNEdyIgbmFtZT0iTXlTeXN0ZW0iLz4NCisgICAgPC9wYWNrYWdlZEVsZW1lbnQ+DQorICAgIDxwYWNrYWdlZEVsZW1lbnQgeG1pOnR5cGU9InVtbDpNb2RlbCIgeG1pOmlkPSJfT0ZzZmR1TElFZVN2NWR3dlo5TlNEdyIgbmFtZT0iRGVzaWduIj4NCisgICAgICA8cGFja2FnZWRFbGVtZW50IHhtaTp0eXBlPSJ1bWw6QWJzdHJhY3Rpb24iIHhtaTppZD0iX09Gc2ZkLUxJRWVTdjVkd3ZaOU5TRHciIG5hbWU9IkRlc2lnbkFic3RyYWN0aW9uIiBjbGllbnQ9Il9PRnNmZHVMSUVlU3Y1ZHd2WjlOU0R3IiBzdXBwbGllcj0iX09Gc2ZjLUxJRWVTdjVkd3ZaOU5TRHciLz4NCisgICAgPC9wYWNrYWdlZEVsZW1lbnQ+DQorICAgIDxwYWNrYWdlZEVsZW1lbnQgeG1pOnR5cGU9InVtbDpNb2RlbCIgeG1pOmlkPSJfT0ZzZmVPTElFZVN2NWR3dlo5TlNEdyIgbmFtZT0iVGVzdCI+DQorICAgICAgPHBhY2thZ2VkRWxlbWVudCB4bWk6dHlwZT0idW1sOkRlcGVuZGVuY3kiIHhtaTppZD0iX09Gc2ZlZUxJRWVTdjVkd3ZaOU5TRHciIG5hbWU9IkRlcGVuZGVuY3kxIiBjbGllbnQ9Il9PRnNmZU9MSUVlU3Y1ZHd2WjlOU0R3IiBzdXBwbGllcj0iX09Gc2ZjLUxJRWVTdjVkd3ZaOU5TRHciLz4NCisgICAgICA8cGFja2FnZWRFbGVtZW50IHhtaTp0eXBlPSJ1bWw6RGVwZW5kZW5jeSIgeG1pOmlkPSJfT0ZzZmV1TElFZVN2NWR3dlo5TlNEdyIgbmFtZT0iRGVwZW5kZW5jeTIiIGNsaWVudD0iX09Gc2ZlT0xJRWVTdjVkd3ZaOU5TRHciIHN1cHBsaWVyPSJfT0ZzZmR1TElFZVN2NWR3dlo5TlNEdyIvPg0KKyAgICA8L3BhY2thZ2VkRWxlbWVudD4NCisgICAgPHByb2ZpbGVBcHBsaWNhdGlvbiB4bWk6dHlwZT0idW1sOlByb2ZpbGVBcHBsaWNhdGlvbiIgeG1pOmlkPSJfT0ZzZmdlTElFZVN2NWR3dlo5TlNEdyI+DQorICAgICAgPGVBbm5vdGF0aW9ucyB4bWk6dHlwZT0iZWNvcmU6RUFubm90YXRpb24iIHhtaTppZD0iX09Gc2ZndUxJRWVTdjVkd3ZaOU5TRHciIHNvdXJjZT0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy91bWwyLzIuMC4wL1VNTCI+DQorICAgICAgICA8cmVmZXJlbmNlcyB4bWk6dHlwZT0iZWNvcmU6RVBhY2thZ2UiIGhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvcGFweXJ1cy8wLjcuMC9TeXNNTCMvL3JlcXVpcmVtZW50cyIvPg0KKyAgICAgIDwvZUFubm90YXRpb25zPg0KKyAgICAgIDxhcHBsaWVkUHJvZmlsZSB4bWk6dHlwZT0idW1sOlByb2ZpbGUiIGhyZWY9InBhdGhtYXA6Ly9TeXNNTF9QUk9GSUxFUy9TeXNNTC5wcm9maWxlLnVtbCNfT09KQzRMWDhFZHVGbXFRc3JOQjlsdyIvPg0KKyAgICA8L3Byb2ZpbGVBcHBsaWNhdGlvbj4NCisgIDwvdW1sOk1vZGVsPg0KKyAgPFJlcXVpcmVtZW50czpSZXF1aXJlbWVudCB4bWk6aWQ9Il9hME9BZ09MSUVlU3Y1ZHd2WjlOU0R3IiB0ZXh0PSJUaGUgYmxvY2sgY2FuIGRpc3BsYXkgY29uc3RyYWludHMsIG9wZXJhdGlvbnMsIHBhcnRzLCByZWZlcmVuY2VzLCB2YWx1ZXMsIHByb3BlcnRpZXMgY29tcGFydG1lbnRzIiBpZD0iUmVxMDAxIiBiYXNlX0NsYXNzPSJfYTBHcndPTElFZVN2NWR3dlo5TlNEdyIvPg0KKyAgPFJlcXVpcmVtZW50czpSZXF1aXJlbWVudCB4bWk6aWQ9Il9sTGEya09jMkVlU0xkUEdlMnE5UjBnIiB0ZXh0PSJUaGUgYmxvY2sgY2FuIGRpc3BsYXkgYSBjb25zdHJhaW50IGNvbXBhcnRtZW50IDogJiN4RDsmI3hBOyAgICAtIHRoaXMgY29tcGFydG1lbnQgaXMgcHJlc2VudCBieSBkZWZhdWx0IGluIHBhbGV0dGUgY3JlYXRpb24gYW5kIGRyb3AmI3hEOyYjeEE7ICAgIC0gdGhlIGNvbXBhcnRtZW50IGlzIG5hbWVkICZxdW90O2NvbnN0cmFpbnRzJnF1b3Q7JiN4RDsmI3hBOyAgIC0gZWFjaCBjb25zdHJhaW50IHNob3VsZCB0YWtlIGEgbGluZSBhbmQgZGlzcGxheSBieSBkZWZhdWx0IDogJiN4RDsmI3hBOyAgICAgICAgIC0gdGhlIGNvbnN0cmFpbnQgaWNvbiYjeEQ7JiN4QTsgICAgICAgICAtIHRoZSBjb25zdHJhaW50IHNwZWNpZmljYXRpb24gdmFsdWUgIiBpZD0iLlJlcTAwMiIgYmFzZV9DbGFzcz0iX2xMWkJZT2MyRWVTTGRQR2UycTlSMGciLz4NCisgIDxSZXF1aXJlbWVudHM6UmVxdWlyZW1lbnQgeG1pOmlkPSJfSWFZSWdPZ0VFZVNVUXZYaEVWUWg4dyIgdGV4dD0iIiBpZD0iUmVxMDA0LjAwMSIgYmFzZV9DbGFzcz0iX0lhVnNRT2dFRWVTVVF2WGhFVlFoOHciLz4NCisgIDxSZXF1aXJlbWVudHM6UmVxdWlyZW1lbnQgeG1pOmlkPSJfYU1UNUVPZ0VFZVNVUXZYaEVWUWg4dyIgdGV4dD0iQWN0b3Igc2hvdWxkIGJlIHByZXNlbnQgYXMgYSBzdGljayBtYW4gZmlndXJlIG9yIGFzIGEgcmVjdGFuZ2xlIiBpZD0iUmVxMDA0LjAwMiIgYmFzZV9DbGFzcz0iX2FNVFNBT2dFRWVTVVF2WGhFVlFoOHciLz4NCisgIDxSZXF1aXJlbWVudHM6UmVxdWlyZW1lbnQgeG1pOmlkPSJfYXBwVlVPZ0VFZVNVUXZYaEVWUWg4dyIgaWQ9IlJlcTAwNC4wMDMiIGJhc2VfQ2xhc3M9Il9hcG5nSU9nRUVlU1VRdlhoRVZRaDh3Ii8+DQorICA8UmVxdWlyZW1lbnRzOlJlcXVpcmVtZW50IHhtaTppZD0iX2F4cGF3T2dFRWVTVVF2WGhFVlFoOHciIGlkPSJSZXEwMDQuMDA0IiBiYXNlX0NsYXNzPSJfYXhvTW9PZ0VFZVNVUXZYaEVWUWg4dyIvPg0KKyAgPFJlcXVpcmVtZW50czpSZXF1aXJlbWVudCB4bWk6aWQ9Il9hNHg5Z09nRUVlU1VRdlhoRVZRaDh3IiB0ZXh0PSJVTUw0U3lzTUw6OkNsYXNzaWZpZXIgd2l0aCYjeEQ7JiN4QTtpc0Fic3RyYWN0IGVxdWFsIHRydWUiIGlkPSJSZXEwMDQuMDA1IiBiYXNlX0NsYXNzPSJfYTR3dllPZ0VFZVNVUXZYaEVWUWg4dyIvPg0KKyAgPFJlcXVpcmVtZW50czpSZXF1aXJlbWVudCB4bWk6aWQ9Il9hX2ZwZ09nRUVlU1VRdlhoRVZRaDh3IiB0ZXh0PSIiIGlkPSJSZXEwMDQuMDA2IiBiYXNlX0NsYXNzPSJfYV9kMFVPZ0VFZVNVUXZYaEVWUWg4dyIvPg0KKyAgPFJlcXVpcmVtZW50czpSZXF1aXJlbWVudCB4bWk6aWQ9Il9iR1JtOE9nRUVlU1VRdlhoRVZRaDh3IiBpZD0iUmVxMDA0LjAwNyIgYmFzZV9DbGFzcz0iX2JHUHh3T2dFRWVTVVF2WGhFVlFoOHciLz4NCisgIDxSZXF1aXJlbWVudHM6UmVxdWlyZW1lbnQgeG1pOmlkPSJfYk45alVPZ0VFZVNVUXZYaEVWUWg4dyIgaWQ9IlJlcTAwNC4wMDgiIGJhc2VfQ2xhc3M9Il9iTjd1SU9nRUVlU1VRdlhoRVZRaDh3Ii8+DQorICA8UmVxdWlyZW1lbnRzOlJlcXVpcmVtZW50IHhtaTppZD0iX2JVODhJT2dFRWVTVVF2WGhFVlFoOHciIGlkPSJSZXEwMDQuMDA5IiBiYXNlX0NsYXNzPSJfYlU3dUFPZ0VFZVNVUXZYaEVWUWg4dyIvPg0KKyAgPFJlcXVpcmVtZW50czpSZXF1aXJlbWVudCB4bWk6aWQ9Il9CaThoTU9nRkVlU1VRdlhoRVZRaDh3IiBpZD0iUmVxMDA0LjAxMCIgYmFzZV9DbGFzcz0iX0JpN1RFT2dGRWVTVVF2WGhFVlFoOHciLz4NCisgIDxSZXF1aXJlbWVudHM6UmVxdWlyZW1lbnQgeG1pOmlkPSJfQnpUUllPZ0ZFZVNVUXZYaEVWUWg4dyIgaWQ9IlJlcTAwNC4wMTEiIGJhc2VfQ2xhc3M9Il9CelJjTU9nRkVlU1VRdlhoRVZRaDh3Ii8+DQorICA8UmVxdWlyZW1lbnRzOlJlcXVpcmVtZW50IHhtaTppZD0iX0I3XzZZT2dGRWVTVVF2WGhFVlFoOHciIHRleHQ9IkNyZWF0ZSBhbiB1bWwgSW5zdGFuY2VTcGVjaWZpYWN0aW9uIGZyb20gdGhlIFVuaXQgdHlwZSAoZGVmaW5lZGJ5IHRoZSBTeXNtbCBsaWJyYXJ5KSIgaWQ9IlJlcTAwNC4wMTIiIGJhc2VfQ2xhc3M9Il9CNzllSU9nRkVlU1VRdlhoRVZRaDh3Ii8+DQorICA8UmVxdWlyZW1lbnRzOlJlcXVpcmVtZW50IHhtaTppZD0iX0JfQUxFT2dGRWVTVVF2WGhFVlFoOHciIHRleHQ9IkNyZWF0ZSBhbiB1bWwgSW5zdGFuY2VTcGVjaWZpYWN0aW9uIGZyb20gdGhlIFF1YW50aXR5IEtpbmQgdHlwZSAoZGVmaW5lZGJ5IHRoZSBTeXNtbCBsaWJyYXJ5KSIgaWQ9IlJlcTAwNC4wMTMiIGJhc2VfQ2xhc3M9Il9CLV9rQU9nRkVlU1VRdlhoRVZRaDh3Ii8+DQorICA8UmVxdWlyZW1lbnRzOlJlcXVpcmVtZW50IHhtaTppZD0iX0NGRms4T2dGRWVTVVF2WGhFVlFoOHciIHRleHQ9IkNyZWF0ZSBhbiBVTUwgaW5zdGFuY2Ugc3BlY2lmaWNhdGlvbiIgaWQ9IlJlcTAwNC4wMTQiIGJhc2VfQ2xhc3M9Il9DRkU5NE9nRkVlU1VRdlhoRVZRaDh3Ii8+DQorICA8UmVxdWlyZW1lbnRzOlJlcXVpcmVtZW50IHhtaTppZD0iX0NNMlowT2dGRWVTVVF2WGhFVlFoOHciIHRleHQ9IkNyZWF0ZSBhbiBVTUwgZGVwZW5kZW5jeSIgaWQ9IlJlcTAwNC4wMTUiIGJhc2VfQ2xhc3M9Il9DTTBrb09nRkVlU1VRdlhoRVZRaDh3Ii8+DQorICA8UmVxdWlyZW1lbnRzOlJlcXVpcmVtZW50IHhtaTppZD0iX0NTUFFJZWdGRWVTVVF2WGhFVlFoOHciIGlkPSJSZXEwMDQuMDE2IiBiYXNlX0NsYXNzPSJfQ1NQUUlPZ0ZFZVNVUXZYaEVWUWg4dyIvPg0KKyAgPFJlcXVpcmVtZW50czpSZXF1aXJlbWVudCB4bWk6aWQ9Il9DWDdCWU9nRkVlU1VRdlhoRVZRaDh3IiBpZD0iUmVxMDA0LjAxNyIgYmFzZV9DbGFzcz0iX0NYNXpRT2dGRWVTVVF2WGhFVlFoOHciLz4NCisgIDxSZXF1aXJlbWVudHM6UmVxdWlyZW1lbnQgeG1pOmlkPSJfQ2RFbklPZ0ZFZVNVUXZYaEVWUWg4dyIgaWQ9IlJlcTAwNC4wMTgiIGJhc2VfQ2xhc3M9Il9DZEVBRU9nRkVlU1VRdlhoRVZRaDh3Ii8+DQorICA8UmVxdWlyZW1lbnRzOlJlcXVpcmVtZW50IHhtaTppZD0iX0NqcEpNT2dGRWVTVVF2WGhFVlFoOHciIGlkPSJSZXEwMDQuMDE5IiBiYXNlX0NsYXNzPSJfQ2puVUFPZ0ZFZVNVUXZYaEVWUWg4dyIvPg0KKyAgPFJlcXVpcmVtZW50czpSZXF1aXJlbWVudCB4bWk6aWQ9Il9WeFMtOE9nSEVlU1VRdlhoRVZRaDh3IiBpZD0iUmVxMDA0LjAyMCIgYmFzZV9DbGFzcz0iX1Z4Ukp3T2dIRWVTVVF2WGhFVlFoOHciLz4NCisgIDxSZXF1aXJlbWVudHM6UmVxdWlyZW1lbnQgeG1pOmlkPSJfVl9lazRPZ0hFZVNVUXZYaEVWUWg4dyIgdGV4dD0iVGFibGUgOC4yIC0gR3JhcGhpY2FsIHBhdGhzIGRlZmluZWQgYnkgaW4gQmxvY2sgRGVmaW5pdGlvbiBkaWFncmFtcyIgaWQ9IlJlcTAwNC4wMjEiIGJhc2VfQ2xhc3M9Il9WX2RXd09nSEVlU1VRdlhoRVZRaDh3Ii8+DQorICA8UmVxdWlyZW1lbnRzOlJlcXVpcmVtZW50IHhtaTppZD0iX1dJR1ZZT2dIRWVTVVF2WGhFVlFoOHciIGlkPSJSZXEwMDQuMDIyIiBiYXNlX0NsYXNzPSJfV0lGSFFPZ0hFZVNVUXZYaEVWUWg4dyIvPg0KKyAgPFJlcXVpcmVtZW50czpSZXF1aXJlbWVudCB4bWk6aWQ9Il9XWGhSY09nSEVlU1VRdlhoRVZRaDh3IiBpZD0iUmVxMDA0LjAyMyIgYmFzZV9DbGFzcz0iX1dYZ3FZT2dIRWVTVVF2WGhFVlFoOHciLz4NCisgIDxSZXF1aXJlbWVudHM6UmVxdWlyZW1lbnQgeG1pOmlkPSJfV2VaVmdPZ0hFZVNVUXZYaEVWUWg4dyIgaWQ9IlJlcTAwNC4wMjQiIGJhc2VfQ2xhc3M9Il9XZVlIWU9nSEVlU1VRdlhoRVZRaDh3Ii8+DQorICA8UmVxdWlyZW1lbnRzOlJlcXVpcmVtZW50IHhtaTppZD0iX1drV01nT2dIRWVTVVF2WGhFVlFoOHciIGlkPSJSZXEwMDQuMDI1IiBiYXNlX0NsYXNzPSJfV2tVLVlPZ0hFZVNVUXZYaEVWUWg4dyIvPg0KKyAgPFJlcXVpcmVtZW50czpSZXF1aXJlbWVudCB4bWk6aWQ9Il9XcURMNE9nSEVlU1VRdlhoRVZRaDh3IiBpZD0iUmVxMDA0LjAyNiIgYmFzZV9DbGFzcz0iX1dxQjl3T2dIRWVTVVF2WGhFVlFoOHciLz4NCisgIDxSZXF1aXJlbWVudHM6UmVxdWlyZW1lbnQgeG1pOmlkPSJfcDJIWUlPZ0hFZVNVUXZYaEVWUWg4dyIgaWQ9IlJlcTAwNC4wMjciIGJhc2VfQ2xhc3M9Il9wMkdLQU9nSEVlU1VRdlhoRVZRaDh3Ii8+DQorICA8UmVxdWlyZW1lbnRzOlJlcXVpcmVtZW50IHhtaTppZD0iX3FEWHhBT2dIRWVTVVF2WGhFVlFoOHciIGlkPSJSZXEwMDQuMDI4IiBiYXNlX0NsYXNzPSJfcURYSjhPZ0hFZVNVUXZYaEVWUWg4dyIvPg0KKyAgPFJlcXVpcmVtZW50czpSZXF1aXJlbWVudCB4bWk6aWQ9Il9xT2p0VU9nSEVlU1VRdlhoRVZRaDh3IiB0ZXh0PSIiIGlkPSJSZXEwMDQuMDI5IiBiYXNlX0NsYXNzPSJfcU9oUkVPZ0hFZVNVUXZYaEVWUWg4dyIvPg0KKyAgPFJlcXVpcmVtZW50czpSZXF1aXJlbWVudCB4bWk6aWQ9Il9xYTl4b09nSEVlU1VRdlhoRVZRaDh3IiBpZD0iUmVxMDA0LjAzMCIgYmFzZV9DbGFzcz0iX3FhNzhjT2dIRWVTVVF2WGhFVlFoOHciLz4NCisgIDxSZXF1aXJlbWVudHM6UmVxdWlyZW1lbnQgeG1pOmlkPSJfcXBOQjhPZ0hFZVNVUXZYaEVWUWg4dyIgaWQ9IlJlcTAwNC4wMzEiIGJhc2VfQ2xhc3M9Il9xcEx6ME9nSEVlU1VRdlhoRVZRaDh3Ii8+DQorICA8UmVxdWlyZW1lbnRzOlJlcXVpcmVtZW50IHhtaTppZD0iX3EwUzNvT2dIRWVTVVF2WGhFVlFoOHciIHRleHQ9IiBQcm94eVBvcnQgaW4gQkREIFBhbGV0dGUiIGlkPSJSZXEwMDQuMDMyIiBiYXNlX0NsYXNzPSJfcTBSQ2NPZ0hFZVNVUXZYaEVWUWg4dyIvPg0KKyAgPFJlcXVpcmVtZW50czpSZXF1aXJlbWVudCB4bWk6aWQ9Il9xLVlud09nSEVlU1VRdlhoRVZRaDh3IiBpZD0iUmVxMDA0LjAzMyIgYmFzZV9DbGFzcz0iX3EtWFpvT2dIRWVTVVF2WGhFVlFoOHciLz4NCisgIDxSZXF1aXJlbWVudHM6UmVxdWlyZW1lbnQgeG1pOmlkPSJfckh2WUVPZ0hFZVNVUXZYaEVWUWg4dyIgaWQ9IlJlcTAwNC4wMzQiIGJhc2VfQ2xhc3M9Il9ySHRpNE9nSEVlU1VRdlhoRVZRaDh3Ii8+DQorICA8UmVxdWlyZW1lbnRzOlJlcXVpcmVtZW50IHhtaTppZD0iX3JPY2RBT2dIRWVTVVF2WGhFVlFoOHciIGlkPSJSZXEwMDQuMDM1IiBiYXNlX0NsYXNzPSJfck9hQXdPZ0hFZVNVUXZYaEVWUWg4dyIvPg0KKyAgPFJlcXVpcmVtZW50czpSZXF1aXJlbWVudCB4bWk6aWQ9Il9yVUkxVU9nSEVlU1VRdlhoRVZRaDh3IiBpZD0iUmVxMDA0LjAzNiIgYmFzZV9DbGFzcz0iX3JVSG5NT2dIRWVTVVF2WGhFVlFoOHciLz4NCisgIDxSZXF1aXJlbWVudHM6UmVxdWlyZW1lbnQgeG1pOmlkPSJfclpZaHNPZ0hFZVNVUXZYaEVWUWg4dyIgaWQ9IlJlcTAwNC4wMzciIGJhc2VfQ2xhc3M9Il9yWlg2b09nSEVlU1VRdlhoRVZRaDh3Ii8+DQorICA8UmVxdWlyZW1lbnRzOlJlcXVpcmVtZW50IHhtaTppZD0iX3JlYlp3T2dIRWVTVVF2WGhFVlFoOHciIGlkPSJSZXEwMDQuMDM4IiBiYXNlX0NsYXNzPSJfcmVheXNPZ0hFZVNVUXZYaEVWUWg4dyIvPg0KKyAgPFJlcXVpcmVtZW50czpSZXF1aXJlbWVudCB4bWk6aWQ9Il9yalhrSU9nSEVlU1VRdlhoRVZRaDh3IiBpZD0iUmVxMDA0LjAzOSIgYmFzZV9DbGFzcz0iX3JqVzlFT2dIRWVTVVF2WGhFVlFoOHciLz4NCisgIDxSZXF1aXJlbWVudHM6UmVxdWlyZW1lbnQgeG1pOmlkPSJfcm90LU1PZ0hFZVNVUXZYaEVWUWg4dyIgaWQ9IlJlcTAwNC4wNDAiIGJhc2VfQ2xhc3M9Il9yb3N3RU9nSEVlU1VRdlhoRVZRaDh3Ii8+DQorICA8UmVxdWlyZW1lbnRzOlJlcXVpcmVtZW50IHhtaTppZD0iX1NucTZBQl9LRWVXcDlySjJnbXc1OUEiIHRleHQ9IlRoZSBGbG93UG9ydENvbXBhcnRtZW50IHNob3VsZCdudCBiZSBwcmVuc2V0IGJ5IGRlZmF1bHQgc2luY2UgRmxvd1BvcnRzIGFyZXIgRGVwcmVjYXRlZCIgaWQ9IlJlcTAwMyIgYmFzZV9DbGFzcz0iX1NublBvQl9LRWVXcDlySjJnbXc1OUEiLz4NCisgIDxSZXF1aXJlbWVudHM6UmVxdWlyZW1lbnQgeG1pOmlkPSJfVEVFOWdDWS1FZVd0bjZoam10dWZ1ZyIgdGV4dD0iIiBpZD0iUmVxMDA0IiBiYXNlX0NsYXNzPSJfVEVCVElDWS1FZVd0bjZoam10dWZ1ZyIvPg0KKzwveG1pOlhNST4NCmRpZmYgLS1naXQgYS9kaWFncmFtL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kaWFncmFtLmJsb2NrZGVmaW5pdGlvbi9yZXNvdXJjZXMvcGFsZXR0ZS9ibG9ja0RpYWdyYW0ucGFsZXR0ZWNvbmZpZ3VyYXRpb24gYi9kaWFncmFtL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kaWFncmFtLmJsb2NrZGVmaW5pdGlvbi9yZXNvdXJjZXMvcGFsZXR0ZS9ibG9ja0RpYWdyYW0ucGFsZXR0ZWNvbmZpZ3VyYXRpb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGEwZTBjMAotLS0gL2Rldi9udWxsCisrKyBiL2RpYWdyYW0vb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRpYWdyYW0uYmxvY2tkZWZpbml0aW9uL3Jlc291cmNlcy9wYWxldHRlL2Jsb2NrRGlhZ3JhbS5wYWxldHRlY29uZmlndXJhdGlvbgpAQCAtMCwwICsxLDkyNCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iQVNDSUkiPz4NCis8cGFsZXR0ZWNvbmZpZ3VyYXRpb246UGFsZXR0ZUNvbmZpZ3VyYXRpb24NCisgICAgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSINCisgICAgeG1sbnM6cGFsZXR0ZWNvbmZpZ3VyYXRpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvcGFweXJ1cy9kaWFncmFtL3BhbGV0dGVjb25maWd1cmF0aW9uLzAuNyINCisgICAgaWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuYmRkLnBhbGV0dGUubW9kZWwiDQorICAgIGxhYmVsPSJTeXNNTCBCREQgUGFsZXR0ZSI+DQorICA8ZHJhd2VyQ29uZmlndXJhdGlvbnMNCisgICAgICBpZD0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5iZGQucGFsZXR0ZS5ub2RlIg0KKyAgICAgIGxhYmVsPSJOb2RlcyINCisgICAgICBkZXNjcmlwdGlvbj0iTm9kZXMiPg0KKyAgICA8b3duZWRDb25maWd1cmF0aW9ucw0KKyAgICAgICAgeHNpOnR5cGU9InBhbGV0dGVjb25maWd1cmF0aW9uOlRvb2xDb25maWd1cmF0aW9uIg0KKyAgICAgICAgaWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuYmRkLnBhbGV0dGUubm9kZS5BY3RvciINCisgICAgICAgIGxhYmVsPSJBY3RvciINCisgICAgICAgIGRlc2NyaXB0aW9uPSJDcmVhdGUgYW4gQWN0b3IiPg0KKyAgICAgIDxpY29uDQorICAgICAgICAgIHBsdWdpbklEPSJvcmcuZWNsaXBzZS51bWwyLnVtbC5lZGl0Ig0KKyAgICAgICAgICBpY29uUGF0aD0iaWNvbnMvZnVsbC9vYmoxNi9BY3Rvci5naWYiLz4NCisgICAgICA8ZWxlbWVudERlc2NyaXB0b3JzDQorICAgICAgICAgIGVsZW1lbnRUeXBlSWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuQWN0b3JfMjAwOCIvPg0KKyAgICA8L293bmVkQ29uZmlndXJhdGlvbnM+DQorICAgIDxvd25lZENvbmZpZ3VyYXRpb25zDQorICAgICAgICB4c2k6dHlwZT0icGFsZXR0ZWNvbmZpZ3VyYXRpb246VG9vbENvbmZpZ3VyYXRpb24iDQorICAgICAgICBpZD0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5iZGQucGFsZXR0ZS5ub2RlLkJsb2NrIg0KKyAgICAgICAgbGFiZWw9IkJsb2NrIg0KKyAgICAgICAgZGVzY3JpcHRpb249IkNyZWF0ZSBhIEJsb2NrIj4NCisgICAgICA8aWNvbg0KKyAgICAgICAgICBwbHVnaW5JRD0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbCINCisgICAgICAgICAgaWNvblBhdGg9Imljb25zL2Jsb2Nrcy9CbG9jay5naWYiLz4NCisgICAgICA8ZWxlbWVudERlc2NyaXB0b3JzDQorICAgICAgICAgIGVsZW1lbnRUeXBlSWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuQmxvY2tfMjAwOCIvPg0KKyAgICAgIDxlbGVtZW50RGVzY3JpcHRvcnMNCisgICAgICAgICAgZWxlbWVudFR5cGVJZD0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5CbG9ja18zMDA0Ii8+DQorICAgICAgPGVsZW1lbnREZXNjcmlwdG9ycw0KKyAgICAgICAgICBlbGVtZW50VHlwZUlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLkJsb2NrXzMwMDgiLz4NCisgICAgICA8ZWxlbWVudERlc2NyaXB0b3JzDQorICAgICAgICAgIGVsZW1lbnRUeXBlSWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuQmxvY2tfMzAxMCIvPg0KKyAgICAgIDxlbGVtZW50RGVzY3JpcHRvcnMNCisgICAgICAgICAgZWxlbWVudFR5cGVJZD0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5CbG9ja18zMDE0Ii8+DQorICAgIDwvb3duZWRDb25maWd1cmF0aW9ucz4NCisgICAgPG93bmVkQ29uZmlndXJhdGlvbnMNCisgICAgICAgIHhzaTp0eXBlPSJwYWxldHRlY29uZmlndXJhdGlvbjpUb29sQ29uZmlndXJhdGlvbiINCisgICAgICAgIGlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLmJkZC5wYWxldHRlLm5vZGUuQ2xhc3NfUG9ydCINCisgICAgICAgIGxhYmVsPSJQb3J0Ig0KKyAgICAgICAgZGVzY3JpcHRpb249IkNyZWF0ZSBhIFBvcnQiPg0KKyAgICAgIDxpY29uDQorICAgICAgICAgIHBsdWdpbklEPSJvcmcuZWNsaXBzZS51bWwyLnVtbC5lZGl0Ig0KKyAgICAgICAgICBpY29uUGF0aD0iL2ljb25zL2Z1bGwvb2JqMTYvUG9ydC5naWYiLz4NCisgICAgICA8ZWxlbWVudERlc2NyaXB0b3JzDQorICAgICAgICAgIGVsZW1lbnRUeXBlSWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuQ2xhc3NfUG9ydCIvPg0KKyAgICA8L293bmVkQ29uZmlndXJhdGlvbnM+DQorICAgIDxvd25lZENvbmZpZ3VyYXRpb25zDQorICAgICAgICB4c2k6dHlwZT0icGFsZXR0ZWNvbmZpZ3VyYXRpb246VG9vbENvbmZpZ3VyYXRpb24iDQorICAgICAgICBpZD0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5iZGQucGFsZXR0ZS5ub2RlLlByb3BlcnR5Ig0KKyAgICAgICAgbGFiZWw9IlByb3BlcnR5Ig0KKyAgICAgICAgZGVzY3JpcHRpb249IkNyZWF0ZSBhIFByb3BlcnR5Ij4NCisgICAgICA8aWNvbg0KKyAgICAgICAgICBwbHVnaW5JRD0ib3JnLmVjbGlwc2UudW1sMi51bWwuZWRpdCINCisgICAgICAgICAgaWNvblBhdGg9Imljb25zL2Z1bGwvb2JqMTYvUHJvcGVydHkuZ2lmIi8+DQorICAgICAgPGVsZW1lbnREZXNjcmlwdG9ycw0KKyAgICAgICAgICBlbGVtZW50VHlwZUlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnVtbC5kaWFncmFtLmNsYXp6LlByb3BlcnR5XzMwMDIiLz4NCisgICAgICA8ZWxlbWVudERlc2NyaXB0b3JzDQorICAgICAgICAgIGVsZW1lbnRUeXBlSWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMudW1sLmRpYWdyYW0uY2xhenouUHJvcGVydHlfMzAwNSIvPg0KKyAgICAgIDxlbGVtZW50RGVzY3JpcHRvcnMNCisgICAgICAgICAgZWxlbWVudFR5cGVJZD0ib3JnLmVjbGlwc2UucGFweXJ1cy51bWwuZGlhZ3JhbS5jbGF6ei5Qcm9wZXJ0eV8zMDA2Ii8+DQorICAgICAgPGVsZW1lbnREZXNjcmlwdG9ycw0KKyAgICAgICAgICBlbGVtZW50VHlwZUlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnVtbC5kaWFncmFtLmNsYXp6LlByb3BlcnR5XzMwMTIiLz4NCisgICAgICA8ZWxlbWVudERlc2NyaXB0b3JzDQorICAgICAgICAgIGVsZW1lbnRUeXBlSWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMudW1sLmRpYWdyYW0uY2xhenouUHJvcGVydHlfMzAxOCIvPg0KKyAgICAgIDxlbGVtZW50RGVzY3JpcHRvcnMNCisgICAgICAgICAgZWxlbWVudFR5cGVJZD0ib3JnLmVjbGlwc2UucGFweXJ1cy51bWwuZGlhZ3JhbS5jbGF6ei5Qcm9wZXJ0eV8zMDQxIi8+DQorICAgIDwvb3duZWRDb25maWd1cmF0aW9ucz4NCisgICAgPG93bmVkQ29uZmlndXJhdGlvbnMNCisgICAgICAgIHhzaTp0eXBlPSJwYWxldHRlY29uZmlndXJhdGlvbjpUb29sQ29uZmlndXJhdGlvbiINCisgICAgICAgIGlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLmJkZC5wYWxldHRlLm5vZGUuQ2xhc3NfRnVsbFBvcnQiDQorICAgICAgICBsYWJlbD0iRnVsbFBvcnQiDQorICAgICAgICBkZXNjcmlwdGlvbj0iQ3JlYXRlIGEgRnVsbFBvcnQiPg0KKyAgICAgIDxpY29uDQorICAgICAgICAgIHBsdWdpbklEPSJvcmcuZWNsaXBzZS51bWwyLnVtbC5lZGl0Ig0KKyAgICAgICAgICBpY29uUGF0aD0iL2ljb25zL2Z1bGwvb2JqMTYvUG9ydC5naWYiLz4NCisgICAgICA8ZWxlbWVudERlc2NyaXB0b3JzDQorICAgICAgICAgIGVsZW1lbnRUeXBlSWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuQ2xhc3NfRnVsbFBvcnQiLz4NCisgICAgICA8ZWxlbWVudERlc2NyaXB0b3JzDQorICAgICAgICAgIGVsZW1lbnRUeXBlSWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuRnVsbFBvcnRfTGFiZWwiLz4NCisgICAgPC9vd25lZENvbmZpZ3VyYXRpb25zPg0KKyAgICA8b3duZWRDb25maWd1cmF0aW9ucw0KKyAgICAgICAgeHNpOnR5cGU9InBhbGV0dGVjb25maWd1cmF0aW9uOlRvb2xDb25maWd1cmF0aW9uIg0KKyAgICAgICAgaWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuYmRkLnBhbGV0dGUubm9kZS5DbGFzc19Qcm94eVBvcnQiDQorICAgICAgICBsYWJlbD0iUHJveHlQb3J0Ig0KKyAgICAgICAgZGVzY3JpcHRpb249IkNyZWF0ZSBhIFByb3h5UG9ydCI+DQorICAgICAgPGljb24NCisgICAgICAgICAgcGx1Z2luSUQ9Im9yZy5lY2xpcHNlLnVtbDIudW1sLmVkaXQiDQorICAgICAgICAgIGljb25QYXRoPSIvaWNvbnMvZnVsbC9vYmoxNi9Qb3J0LmdpZiIvPg0KKyAgICAgIDxlbGVtZW50RGVzY3JpcHRvcnMNCisgICAgICAgICAgZWxlbWVudFR5cGVJZD0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5DbGFzc19Qcm94eVBvcnQiLz4NCisgICAgICA8ZWxlbWVudERlc2NyaXB0b3JzDQorICAgICAgICAgIGVsZW1lbnRUeXBlSWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuUHJveHlQb3J0X0xhYmVsIi8+DQorICAgIDwvb3duZWRDb25maWd1cmF0aW9ucz4NCisgICAgPG93bmVkQ29uZmlndXJhdGlvbnMNCisgICAgICAgIHhzaTp0eXBlPSJwYWxldHRlY29uZmlndXJhdGlvbjpUb29sQ29uZmlndXJhdGlvbiINCisgICAgICAgIGlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLmJkZC5wYWxldHRlLm5vZGUuQ29tbWVudCINCisgICAgICAgIGxhYmVsPSJDb21tZW50Ig0KKyAgICAgICAgZGVzY3JpcHRpb249IkNyZWF0ZSBhIGNvbW1lbnQiPg0KKyAgICAgIDxpY29uDQorICAgICAgICAgIHBsdWdpbklEPSJvcmcuZWNsaXBzZS51bWwyLnVtbC5lZGl0Ig0KKyAgICAgICAgICBpY29uUGF0aD0iaWNvbnMvZnVsbC9vYmoxNi9Db21tZW50LmdpZiIvPg0KKyAgICAgIDxlbGVtZW50RGVzY3JpcHRvcnMNCisgICAgICAgICAgZWxlbWVudFR5cGVJZD0ib3JnLmVjbGlwc2UucGFweXJ1cy51bWwuZGlhZ3JhbS5jbGF6ei5Db21tZW50XzIwMTIiLz4NCisgICAgICA8ZWxlbWVudERlc2NyaXB0b3JzDQorICAgICAgICAgIGVsZW1lbnRUeXBlSWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMudW1sLmRpYWdyYW0uY2xhenouQ29tbWVudF8zMDI4Ii8+DQorICAgIDwvb3duZWRDb25maWd1cmF0aW9ucz4NCisgICAgPG93bmVkQ29uZmlndXJhdGlvbnMNCisgICAgICAgIHhzaTp0eXBlPSJwYWxldHRlY29uZmlndXJhdGlvbjpUb29sQ29uZmlndXJhdGlvbiINCisgICAgICAgIGlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLmJkZC5wYWxldHRlLm5vZGUuQ29udHJvbE9wZXJhdG9yX09wZXJhdGlvbl9PcGVyYXRpb25fQm9yZGVySXRlbSINCisgICAgICAgIGxhYmVsPSJDb250cm9sT3BlcmF0b3IiDQorICAgICAgICBkZXNjcmlwdGlvbj0iQ3JlYXRlIENvbnRyb2xPcGVyYXRvciI+DQorICAgICAgPGljb24NCisgICAgICAgICAgcGx1Z2luSUQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwiDQorICAgICAgICAgIGljb25QYXRoPSJpY29ucy9wb3J0YW5kZmxvd3MvRmxvd1Byb3BlcnR5LmdpZiIvPg0KKyAgICAgIDxlbGVtZW50RGVzY3JpcHRvcnMNCisgICAgICAgICAgZWxlbWVudFR5cGVJZD0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5Db250cm9sT3BlcmF0b3JfT3BlcmF0aW9uX09wZXJhdGlvbl9Cb3JkZXJJdGVtIi8+DQorICAgIDwvb3duZWRDb25maWd1cmF0aW9ucz4NCisgICAgPG93bmVkQ29uZmlndXJhdGlvbnMNCisgICAgICAgIHhzaTp0eXBlPSJwYWxldHRlY29uZmlndXJhdGlvbjpUb29sQ29uZmlndXJhdGlvbiINCisgICAgICAgIGlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLmJkZC5wYWxldHRlLm5vZGUuQ29uc3RyYWludCINCisgICAgICAgIGxhYmVsPSJDb25zdHJhaW50Ig0KKyAgICAgICAgZGVzY3JpcHRpb249IkNyZWF0ZSBhIGNvbnN0cmFpbnQiPg0KKyAgICAgIDxpY29uDQorICAgICAgICAgIHBsdWdpbklEPSJvcmcuZWNsaXBzZS51bWwyLnVtbC5lZGl0Ig0KKyAgICAgICAgICBpY29uUGF0aD0iaWNvbnMvZnVsbC9vYmoxNi9Db25zdHJhaW50LmdpZiIvPg0KKyAgICAgIDxlbGVtZW50RGVzY3JpcHRvcnMNCisgICAgICAgICAgZWxlbWVudFR5cGVJZD0ib3JnLmVjbGlwc2UucGFweXJ1cy51bWwuZGlhZ3JhbS5jbGF6ei5Db25zdHJhaW50XzIwMTEiLz4NCisgICAgICA8ZWxlbWVudERlc2NyaXB0b3JzDQorICAgICAgICAgIGVsZW1lbnRUeXBlSWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMudW1sLmRpYWdyYW0uY2xhenouQ29uc3RyYWludF8zMDI5Ii8+DQorICAgICAgPGVsZW1lbnREZXNjcmlwdG9ycw0KKyAgICAgICAgICBlbGVtZW50VHlwZUlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLkNvbnN0cmFpbnRfTGFiZWwiLz4NCisgICAgPC9vd25lZENvbmZpZ3VyYXRpb25zPg0KKyAgICA8b3duZWRDb25maWd1cmF0aW9ucw0KKyAgICAgICAgeHNpOnR5cGU9InBhbGV0dGVjb25maWd1cmF0aW9uOlRvb2xDb25maWd1cmF0aW9uIg0KKyAgICAgICAgaWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuYmRkLnBhbGV0dGUubm9kZS5Db25zdHJhaW50QmxvY2siDQorICAgICAgICBsYWJlbD0iQ29uc3RyYWludEJsb2NrIg0KKyAgICAgICAgZGVzY3JpcHRpb249IkNyZWF0ZSBhIENvbnN0cmFpbnRCbG9jayI+DQorICAgICAgPGljb24NCisgICAgICAgICAgcGx1Z2luSUQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwiDQorICAgICAgICAgIGljb25QYXRoPSJpY29ucy9jb25zdHJhaW50cy9Db25zdHJhaW50QmxvY2suZ2lmIi8+DQorICAgICAgPGVsZW1lbnREZXNjcmlwdG9ycw0KKyAgICAgICAgICBlbGVtZW50VHlwZUlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLkNvbnN0cmFpbnRCbG9ja18yMDA4Ii8+DQorICAgICAgPGVsZW1lbnREZXNjcmlwdG9ycw0KKyAgICAgICAgICBlbGVtZW50VHlwZUlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLkNvbnN0cmFpbnRCbG9ja18zMDA0Ii8+DQorICAgICAgPGVsZW1lbnREZXNjcmlwdG9ycw0KKyAgICAgICAgICBlbGVtZW50VHlwZUlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLkNvbnN0cmFpbnRCbG9ja18zMDA4Ii8+DQorICAgICAgPGVsZW1lbnREZXNjcmlwdG9ycw0KKyAgICAgICAgICBlbGVtZW50VHlwZUlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLkNvbnN0cmFpbnRCbG9ja18zMDEwIi8+DQorICAgICAgPGVsZW1lbnREZXNjcmlwdG9ycw0KKyAgICAgICAgICBlbGVtZW50VHlwZUlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLkNvbnN0cmFpbnRCbG9ja18zMDE0Ii8+DQorICAgIDwvb3duZWRDb25maWd1cmF0aW9ucz4NCisgICAgPG93bmVkQ29uZmlndXJhdGlvbnMNCisgICAgICAgIHhzaTp0eXBlPSJwYWxldHRlY29uZmlndXJhdGlvbjpUb29sQ29uZmlndXJhdGlvbiINCisgICAgICAgIGlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLmJkZC5wYWxldHRlLm5vZGUuRWxlbWVudEdyb3VwIg0KKyAgICAgICAgbGFiZWw9IkVsZW1lbnRHcm91cCINCisgICAgICAgIGRlc2NyaXB0aW9uPSJDcmVhdGUgYSBFbGVtZW50R3JvdXAiPg0KKyAgICAgIDxpY29uDQorICAgICAgICAgIHBsdWdpbklEPSJvcmcuZWNsaXBzZS51bWwyLnVtbC5lZGl0Ig0KKyAgICAgICAgICBpY29uUGF0aD0iaWNvbnMvZnVsbC9vYmoxNi9Db21tZW50LmdpZiIvPg0KKyAgICAgIDxlbGVtZW50RGVzY3JpcHRvcnMNCisgICAgICAgICAgZWxlbWVudFR5cGVJZD0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5FbGVtZW50R3JvdXBfMjAxMiIvPg0KKyAgICAgIDxlbGVtZW50RGVzY3JpcHRvcnMNCisgICAgICAgICAgZWxlbWVudFR5cGVJZD0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5FbGVtZW50R3JvdXBfMzAyOCIvPg0KKyAgICA8L293bmVkQ29uZmlndXJhdGlvbnM+DQorICAgIDxvd25lZENvbmZpZ3VyYXRpb25zDQorICAgICAgICB4c2k6dHlwZT0icGFsZXR0ZWNvbmZpZ3VyYXRpb246VG9vbENvbmZpZ3VyYXRpb24iDQorICAgICAgICBpZD0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5iZGQucGFsZXR0ZS5ub2RlLkVudW1lcmF0aW9uIg0KKyAgICAgICAgbGFiZWw9IkVudW1lcmF0aW9uIg0KKyAgICAgICAgZGVzY3JpcHRpb249IkNyZWF0ZSBhbiBFbnVtZXJhdGlvbiI+DQorICAgICAgPGljb24NCisgICAgICAgICAgcGx1Z2luSUQ9Im9yZy5lY2xpcHNlLnVtbDIudW1sLmVkaXQiDQorICAgICAgICAgIGljb25QYXRoPSJpY29ucy9mdWxsL29iajE2L0VudW1lcmF0aW9uLmdpZiIvPg0KKyAgICAgIDxlbGVtZW50RGVzY3JpcHRvcnMNCisgICAgICAgICAgZWxlbWVudFR5cGVJZD0ib3JnLmVjbGlwc2UucGFweXJ1cy51bWwuZGlhZ3JhbS5jbGF6ei5FbnVtZXJhdGlvbl8yMDA2Ii8+DQorICAgICAgPGVsZW1lbnREZXNjcmlwdG9ycw0KKyAgICAgICAgICBlbGVtZW50VHlwZUlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnVtbC5kaWFncmFtLmNsYXp6LkVudW1lcmF0aW9uXzMwMjUiLz4NCisgICAgICA8ZWxlbWVudERlc2NyaXB0b3JzDQorICAgICAgICAgIGVsZW1lbnRUeXBlSWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMudW1sLmRpYWdyYW0uY2xhenouRW51bWVyYXRpb25fMzA1MiIvPg0KKyAgICAgIDxlbGVtZW50RGVzY3JpcHRvcnMNCisgICAgICAgICAgZWxlbWVudFR5cGVJZD0ib3JnLmVjbGlwc2UucGFweXJ1cy51bWwuZGlhZ3JhbS5jbGF6ei5FbnVtZXJhdGlvbl8zMDUzIi8+DQorICAgICAgPGVsZW1lbnREZXNjcmlwdG9ycw0KKyAgICAgICAgICBlbGVtZW50VHlwZUlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnVtbC5kaWFncmFtLmNsYXp6LkVudW1lcmF0aW9uXzMwNTQiLz4NCisgICAgPC9vd25lZENvbmZpZ3VyYXRpb25zPg0KKyAgICA8b3duZWRDb25maWd1cmF0aW9ucw0KKyAgICAgICAgeHNpOnR5cGU9InBhbGV0dGVjb25maWd1cmF0aW9uOlRvb2xDb25maWd1cmF0aW9uIg0KKyAgICAgICAgaWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuYmRkLnBhbGV0dGUubm9kZS5GbG93UG9ydCINCisgICAgICAgIGxhYmVsPSJGbG93UG9ydCINCisgICAgICAgIGRlc2NyaXB0aW9uPSJDcmVhdGUgYSBGbG93UG9ydCI+DQorICAgICAgPGljb24NCisgICAgICAgICAgcGx1Z2luSUQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwiDQorICAgICAgICAgIGljb25QYXRoPSJpY29ucy9wb3J0YW5kZmxvd3MvRmxvd1Byb3BlcnR5LmdpZiIvPg0KKyAgICAgIDxlbGVtZW50RGVzY3JpcHRvcnMNCisgICAgICAgICAgZWxlbWVudFR5cGVJZD0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5GbG93UG9ydF9MYWJlbCIvPg0KKyAgICA8L293bmVkQ29uZmlndXJhdGlvbnM+DQorICAgIDxvd25lZENvbmZpZ3VyYXRpb25zDQorICAgICAgICB4c2k6dHlwZT0icGFsZXR0ZWNvbmZpZ3VyYXRpb246VG9vbENvbmZpZ3VyYXRpb24iDQorICAgICAgICBpZD0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5iZGQucGFsZXR0ZS5ub2RlLkluc3RhbmNlU3BlY2lmaWNhdGlvbiINCisgICAgICAgIGxhYmVsPSJJbnN0YW5jZSBTcGVjaWZpY2F0aW9uIg0KKyAgICAgICAgZGVzY3JpcHRpb249IkNyZWF0ZSBhbiBVbWwgSW5zdGFuY2UgU3BlY2lmaWNhdGlvbiI+DQorICAgICAgPGljb24NCisgICAgICAgICAgcGx1Z2luSUQ9Im9yZy5lY2xpcHNlLnVtbDIudW1sLmVkaXQiDQorICAgICAgICAgIGljb25QYXRoPSIvaWNvbnMvZnVsbC9vYmoxNi9JbnN0YW5jZVNwZWNpZmljYXRpb24uZ2lmIi8+DQorICAgICAgPGVsZW1lbnREZXNjcmlwdG9ycw0KKyAgICAgICAgICBlbGVtZW50VHlwZUlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnVtbC5kaWFncmFtLmNsYXp6Lkluc3RhbmNlU3BlY2lmaWNhdGlvbl8yMDAxIi8+DQorICAgICAgPGVsZW1lbnREZXNjcmlwdG9ycw0KKyAgICAgICAgICBlbGVtZW50VHlwZUlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnVtbC5kaWFncmFtLmNsYXp6Lkluc3RhbmNlU3BlY2lmaWNhdGlvbl8zMDIwIi8+DQorICAgIDwvb3duZWRDb25maWd1cmF0aW9ucz4NCisgICAgPG93bmVkQ29uZmlndXJhdGlvbnMNCisgICAgICAgIHhzaTp0eXBlPSJwYWxldHRlY29uZmlndXJhdGlvbjpUb29sQ29uZmlndXJhdGlvbiINCisgICAgICAgIGlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLmJkZC5wYWxldHRlLm5vZGUuSW50ZXJmYWNlIg0KKyAgICAgICAgbGFiZWw9IkludGVyZmFjZSINCisgICAgICAgIGRlc2NyaXB0aW9uPSJDcmVhdGUgYW4gVW1sIEludGVyZmFjZSI+DQorICAgICAgPGljb24NCisgICAgICAgICAgcGx1Z2luSUQ9Im9yZy5lY2xpcHNlLnVtbDIudW1sLmVkaXQiDQorICAgICAgICAgIGljb25QYXRoPSIvaWNvbnMvZnVsbC9vYmoxNi9JbnRlcmZhY2UuZ2lmIi8+DQorICAgICAgPGVsZW1lbnREZXNjcmlwdG9ycw0KKyAgICAgICAgICBlbGVtZW50VHlwZUlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnVtbC5kaWFncmFtLmNsYXp6LkludGVyZmFjZV8yMDA0Ii8+DQorICAgICAgPGVsZW1lbnREZXNjcmlwdG9ycw0KKyAgICAgICAgICBlbGVtZW50VHlwZUlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnVtbC5kaWFncmFtLmNsYXp6LkludGVyZmFjZV8zMDIzIi8+DQorICAgICAgPGVsZW1lbnREZXNjcmlwdG9ycw0KKyAgICAgICAgICBlbGVtZW50VHlwZUlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnVtbC5kaWFncmFtLmNsYXp6LkludGVyZmFjZV8zMDM2Ii8+DQorICAgICAgPGVsZW1lbnREZXNjcmlwdG9ycw0KKyAgICAgICAgICBlbGVtZW50VHlwZUlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnVtbC5kaWFncmFtLmNsYXp6LkludGVyZmFjZV8zMDM3Ii8+DQorICAgICAgPGVsZW1lbnREZXNjcmlwdG9ycw0KKyAgICAgICAgICBlbGVtZW50VHlwZUlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnVtbC5kaWFncmFtLmNsYXp6LkludGVyZmFjZV8zMDM4Ii8+DQorICAgIDwvb3duZWRDb25maWd1cmF0aW9ucz4NCisgICAgPG93bmVkQ29uZmlndXJhdGlvbnMNCisgICAgICAgIHhzaTp0eXBlPSJwYWxldHRlY29uZmlndXJhdGlvbjpUb29sQ29uZmlndXJhdGlvbiINCisgICAgICAgIGlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLmJkZC5wYWxldHRlLm5vZGUuUGFydCINCisgICAgICAgIGxhYmVsPSJQYXJ0Ig0KKyAgICAgICAgZGVzY3JpcHRpb249IkNyZWF0ZSBhIFBhcnQiPg0KKyAgICAgIDxpY29uDQorICAgICAgICAgIHBsdWdpbklEPSJvcmcuZWNsaXBzZS51bWwyLnVtbC5lZGl0Ig0KKyAgICAgICAgICBpY29uUGF0aD0iaWNvbnMvZnVsbC9vYmoxNi9Qcm9wZXJ0eS5naWYiLz4NCisgICAgICA8ZWxlbWVudERlc2NyaXB0b3JzDQorICAgICAgICAgIGVsZW1lbnRUeXBlSWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuUGFydF8zMDAyIi8+DQorICAgICAgPGVsZW1lbnREZXNjcmlwdG9ycw0KKyAgICAgICAgICBlbGVtZW50VHlwZUlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLlBhcnRfMzAwNSIvPg0KKyAgICAgIDxlbGVtZW50RGVzY3JpcHRvcnMNCisgICAgICAgICAgZWxlbWVudFR5cGVJZD0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5QYXJ0XzMwMDYiLz4NCisgICAgICA8ZWxlbWVudERlc2NyaXB0b3JzDQorICAgICAgICAgIGVsZW1lbnRUeXBlSWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuUGFydF8zMDEyIi8+DQorICAgICAgPGVsZW1lbnREZXNjcmlwdG9ycw0KKyAgICAgICAgICBlbGVtZW50VHlwZUlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLlBhcnRfMzAxOCIvPg0KKyAgICAgIDxlbGVtZW50RGVzY3JpcHRvcnMNCisgICAgICAgICAgZWxlbWVudFR5cGVJZD0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5QYXJ0XzMwNDEiLz4NCisgICAgPC9vd25lZENvbmZpZ3VyYXRpb25zPg0KKyAgICA8b3duZWRDb25maWd1cmF0aW9ucw0KKyAgICAgICAgeHNpOnR5cGU9InBhbGV0dGVjb25maWd1cmF0aW9uOlRvb2xDb25maWd1cmF0aW9uIg0KKyAgICAgICAgaWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuYmRkLnBhbGV0dGUubm9kZS5Qcm9ibGVtIg0KKyAgICAgICAgbGFiZWw9IlByb2JsZW0iDQorICAgICAgICBkZXNjcmlwdGlvbj0iQ3JlYXRlIGEgUHJvYmxlbSI+DQorICAgICAgPGljb24NCisgICAgICAgICAgcGx1Z2luSUQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwiDQorICAgICAgICAgIGljb25QYXRoPSJpY29ucy9tb2RlbGVsZW1lbnRzL1Byb2JsZW0uZ2lmIi8+DQorICAgICAgPGVsZW1lbnREZXNjcmlwdG9ycw0KKyAgICAgICAgICBlbGVtZW50VHlwZUlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLlByb2JsZW1fMjAxMiIvPg0KKyAgICAgIDxlbGVtZW50RGVzY3JpcHRvcnMNCisgICAgICAgICAgZWxlbWVudFR5cGVJZD0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5Qcm9ibGVtXzMwMjgiLz4NCisgICAgPC9vd25lZENvbmZpZ3VyYXRpb25zPg0KKyAgICA8b3duZWRDb25maWd1cmF0aW9ucw0KKyAgICAgICAgeHNpOnR5cGU9InBhbGV0dGVjb25maWd1cmF0aW9uOlRvb2xDb25maWd1cmF0aW9uIg0KKyAgICAgICAgaWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuYmRkLnBhbGV0dGUubm9kZS5RdWFudGl0eUtpbmQiDQorICAgICAgICBsYWJlbD0iUXVhbnRpdHlLaW5kIg0KKyAgICAgICAgZGVzY3JpcHRpb249IkNyZWF0ZSBhIFN5c21sIFF1YW50aXR5S2luZCI+DQorICAgICAgPGljb24NCisgICAgICAgICAgcGx1Z2luSUQ9Im9yZy5lY2xpcHNlLnVtbDIudW1sLmVkaXQiDQorICAgICAgICAgIGljb25QYXRoPSIvaWNvbnMvZnVsbC9vYmoxNi9JbnN0YW5jZVNwZWNpZmljYXRpb24uZ2lmIi8+DQorICAgICAgPGVsZW1lbnREZXNjcmlwdG9ycw0KKyAgICAgICAgICBlbGVtZW50VHlwZUlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLlF1YW50aXR5S2luZF8yMDAxIi8+DQorICAgICAgPGVsZW1lbnREZXNjcmlwdG9ycw0KKyAgICAgICAgICBlbGVtZW50VHlwZUlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLlF1YW50aXR5S2luZF8zMDIwIi8+DQorICAgIDwvb3duZWRDb25maWd1cmF0aW9ucz4NCisgICAgPG93bmVkQ29uZmlndXJhdGlvbnMNCisgICAgICAgIHhzaTp0eXBlPSJwYWxldHRlY29uZmlndXJhdGlvbjpUb29sQ29uZmlndXJhdGlvbiINCisgICAgICAgIGlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLmJkZC5wYWxldHRlLm5vZGUuUmF0aW9uYWxlIg0KKyAgICAgICAgbGFiZWw9IlJhdGlvbmFsZSINCisgICAgICAgIGRlc2NyaXB0aW9uPSJDcmVhdGUgYSBSYXRpb25hbGUiPg0KKyAgICAgIDxpY29uDQorICAgICAgICAgIHBsdWdpbklEPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sIg0KKyAgICAgICAgICBpY29uUGF0aD0iaWNvbnMvbW9kZWxlbGVtZW50cy9SYXRpb25hbGUuZ2lmIi8+DQorICAgICAgPGVsZW1lbnREZXNjcmlwdG9ycw0KKyAgICAgICAgICBlbGVtZW50VHlwZUlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLlJhdGlvbmFsZV8yMDEyIi8+DQorICAgICAgPGVsZW1lbnREZXNjcmlwdG9ycw0KKyAgICAgICAgICBlbGVtZW50VHlwZUlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLlJhdGlvbmFsZV8zMDI4Ii8+DQorICAgIDwvb3duZWRDb25maWd1cmF0aW9ucz4NCisgICAgPG93bmVkQ29uZmlndXJhdGlvbnMNCisgICAgICAgIHhzaTp0eXBlPSJwYWxldHRlY29uZmlndXJhdGlvbjpUb29sQ29uZmlndXJhdGlvbiINCisgICAgICAgIGlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLmJkZC5wYWxldHRlLm5vZGUuUmVmZXJlbmNlIg0KKyAgICAgICAgbGFiZWw9IlJlZmVyZW5jZSINCisgICAgICAgIGRlc2NyaXB0aW9uPSJDcmVhdGUgYSBSZWZlcmVuY2UiPg0KKyAgICAgIDxpY29uDQorICAgICAgICAgIHBsdWdpbklEPSJvcmcuZWNsaXBzZS51bWwyLnVtbC5lZGl0Ig0KKyAgICAgICAgICBpY29uUGF0aD0iaWNvbnMvZnVsbC9vYmoxNi9Qcm9wZXJ0eS5naWYiLz4NCisgICAgICA8ZWxlbWVudERlc2NyaXB0b3JzDQorICAgICAgICAgIGVsZW1lbnRUeXBlSWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuUmVmZXJlbmNlXzMwMDIiLz4NCisgICAgICA8ZWxlbWVudERlc2NyaXB0b3JzDQorICAgICAgICAgIGVsZW1lbnRUeXBlSWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuUmVmZXJlbmNlXzMwMDUiLz4NCisgICAgICA8ZWxlbWVudERlc2NyaXB0b3JzDQorICAgICAgICAgIGVsZW1lbnRUeXBlSWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuUmVmZXJlbmNlXzMwMDYiLz4NCisgICAgICA8ZWxlbWVudERlc2NyaXB0b3JzDQorICAgICAgICAgIGVsZW1lbnRUeXBlSWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuUmVmZXJlbmNlXzMwMTIiLz4NCisgICAgICA8ZWxlbWVudERlc2NyaXB0b3JzDQorICAgICAgICAgIGVsZW1lbnRUeXBlSWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuUmVmZXJlbmNlXzMwMTgiLz4NCisgICAgICA8ZWxlbWVudERlc2NyaXB0b3JzDQorICAgICAgICAgIGVsZW1lbnRUeXBlSWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuUmVmZXJlbmNlXzMwNDEiLz4NCisgICAgPC9vd25lZENvbmZpZ3VyYXRpb25zPg0KKyAgICA8b3duZWRDb25maWd1cmF0aW9ucw0KKyAgICAgICAgeHNpOnR5cGU9InBhbGV0dGVjb25maWd1cmF0aW9uOlRvb2xDb25maWd1cmF0aW9uIg0KKyAgICAgICAgaWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuYmRkLnBhbGV0dGUubm9kZS5TbG90Ig0KKyAgICAgICAgbGFiZWw9IlNsb3QiDQorICAgICAgICBkZXNjcmlwdGlvbj0iQ3JlYXRlIGEgU2xvdCI+DQorICAgICAgPGljb24NCisgICAgICAgICAgcGx1Z2luSUQ9Im9yZy5lY2xpcHNlLnVtbDIudW1sLmVkaXQiDQorICAgICAgICAgIGljb25QYXRoPSIvaWNvbnMvZnVsbC9vYmoxNi9TbG90LmdpZiIvPg0KKyAgICAgIDxlbGVtZW50RGVzY3JpcHRvcnMNCisgICAgICAgICAgZWxlbWVudFR5cGVJZD0ib3JnLmVjbGlwc2UucGFweXJ1cy51bWwuZGlhZ3JhbS5jbGF6ei5TbG90XzMwMzAiLz4NCisgICAgPC9vd25lZENvbmZpZ3VyYXRpb25zPg0KKyAgICA8b3duZWRDb25maWd1cmF0aW9ucw0KKyAgICAgICAgeHNpOnR5cGU9InBhbGV0dGVjb25maWd1cmF0aW9uOlRvb2xDb25maWd1cmF0aW9uIg0KKyAgICAgICAgaWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuYmRkLnBhbGV0dGUubm9kZS5Vbml0Ig0KKyAgICAgICAgbGFiZWw9IlVuaXQiDQorICAgICAgICBkZXNjcmlwdGlvbj0iQ3JlYXRlIGEgU3lzbWwgVW5pdCI+DQorICAgICAgPGljb24NCisgICAgICAgICAgcGx1Z2luSUQ9Im9yZy5lY2xpcHNlLnVtbDIudW1sLmVkaXQiDQorICAgICAgICAgIGljb25QYXRoPSIvaWNvbnMvZnVsbC9vYmoxNi9JbnN0YW5jZVNwZWNpZmljYXRpb24uZ2lmIi8+DQorICAgICAgPGVsZW1lbnREZXNjcmlwdG9ycw0KKyAgICAgICAgICBlbGVtZW50VHlwZUlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLlVuaXRfMjAwMSIvPg0KKyAgICAgIDxlbGVtZW50RGVzY3JpcHRvcnMNCisgICAgICAgICAgZWxlbWVudFR5cGVJZD0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5Vbml0XzMwMjAiLz4NCisgICAgPC9vd25lZENvbmZpZ3VyYXRpb25zPg0KKyAgICA8b3duZWRDb25maWd1cmF0aW9ucw0KKyAgICAgICAgeHNpOnR5cGU9InBhbGV0dGVjb25maWd1cmF0aW9uOlRvb2xDb25maWd1cmF0aW9uIg0KKyAgICAgICAgaWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuYmRkLnBhbGV0dGUubm9kZS5WYWx1ZSINCisgICAgICAgIGxhYmVsPSJWYWx1ZSINCisgICAgICAgIGRlc2NyaXB0aW9uPSJDcmVhdGUgYSBWYWx1ZSI+DQorICAgICAgPGljb24NCisgICAgICAgICAgcGx1Z2luSUQ9Im9yZy5lY2xpcHNlLnVtbDIudW1sLmVkaXQiDQorICAgICAgICAgIGljb25QYXRoPSJpY29ucy9mdWxsL29iajE2L1Byb3BlcnR5LmdpZiIvPg0KKyAgICAgIDxlbGVtZW50RGVzY3JpcHRvcnMNCisgICAgICAgICAgZWxlbWVudFR5cGVJZD0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5WYWx1ZV8zMDAyIi8+DQorICAgICAgPGVsZW1lbnREZXNjcmlwdG9ycw0KKyAgICAgICAgICBlbGVtZW50VHlwZUlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLlZhbHVlXzMwMDUiLz4NCisgICAgICA8ZWxlbWVudERlc2NyaXB0b3JzDQorICAgICAgICAgIGVsZW1lbnRUeXBlSWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuVmFsdWVfMzAwNiIvPg0KKyAgICAgIDxlbGVtZW50RGVzY3JpcHRvcnMNCisgICAgICAgICAgZWxlbWVudFR5cGVJZD0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5WYWx1ZV8zMDEyIi8+DQorICAgICAgPGVsZW1lbnREZXNjcmlwdG9ycw0KKyAgICAgICAgICBlbGVtZW50VHlwZUlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLlZhbHVlXzMwMTgiLz4NCisgICAgICA8ZWxlbWVudERlc2NyaXB0b3JzDQorICAgICAgICAgIGVsZW1lbnRUeXBlSWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuVmFsdWVfMzA0MSIvPg0KKyAgICA8L293bmVkQ29uZmlndXJhdGlvbnM+DQorICAgIDxvd25lZENvbmZpZ3VyYXRpb25zDQorICAgICAgICB4c2k6dHlwZT0icGFsZXR0ZWNvbmZpZ3VyYXRpb246VG9vbENvbmZpZ3VyYXRpb24iDQorICAgICAgICBpZD0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5iZGQucGFsZXR0ZS5ub2RlLlZpZXdfUGFja2FnZSINCisgICAgICAgIGxhYmVsPSJWaWV3Ig0KKyAgICAgICAgZGVzY3JpcHRpb249IkNyZWF0ZSBhIFZpZXciPg0KKyAgICAgIDxpY29uDQorICAgICAgICAgIHBsdWdpbklEPSJvcmcuZWNsaXBzZS51bWwyLnVtbC5lZGl0Ig0KKyAgICAgICAgICBpY29uUGF0aD0iaWNvbnMvZnVsbC9vYmoxNi9QYWNrYWdlLmdpZiIvPg0KKyAgICAgIDxlbGVtZW50RGVzY3JpcHRvcnMNCisgICAgICAgICAgZWxlbWVudFR5cGVJZD0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5WaWV3X1BhY2thZ2VfMjAwNyIvPg0KKyAgICAgIDxlbGVtZW50RGVzY3JpcHRvcnMNCisgICAgICAgICAgZWxlbWVudFR5cGVJZD0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5WaWV3X1BhY2thZ2VfMzAwOSIvPg0KKyAgICA8L293bmVkQ29uZmlndXJhdGlvbnM+DQorICAgIDxvd25lZENvbmZpZ3VyYXRpb25zDQorICAgICAgICB4c2k6dHlwZT0icGFsZXR0ZWNvbmZpZ3VyYXRpb246VG9vbENvbmZpZ3VyYXRpb24iDQorICAgICAgICBpZD0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5iZGQucGFsZXR0ZS5ub2RlLlZpZXdfQ2xhc3MiDQorICAgICAgICBsYWJlbD0iVmlldyBDbGFzcyINCisgICAgICAgIGRlc2NyaXB0aW9uPSJDcmVhdGUgYSBWaWV3IENsYXNzIj4NCisgICAgICA8aWNvbg0KKyAgICAgICAgICBwbHVnaW5JRD0ib3JnLmVjbGlwc2UudW1sMi51bWwuZWRpdCINCisgICAgICAgICAgaWNvblBhdGg9Imljb25zL2Z1bGwvb2JqMTYvQ2xhc3MuZ2lmIi8+DQorICAgICAgPGVsZW1lbnREZXNjcmlwdG9ycw0KKyAgICAgICAgICBlbGVtZW50VHlwZUlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLlZpZXdfQ2xhc3NfMjAwOCIvPg0KKyAgICAgIDxlbGVtZW50RGVzY3JpcHRvcnMNCisgICAgICAgICAgZWxlbWVudFR5cGVJZD0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5WaWV3X0NsYXNzXzMwMDQiLz4NCisgICAgICA8ZWxlbWVudERlc2NyaXB0b3JzDQorICAgICAgICAgIGVsZW1lbnRUeXBlSWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuVmlld19DbGFzc18zMDA4Ii8+DQorICAgICAgPGVsZW1lbnREZXNjcmlwdG9ycw0KKyAgICAgICAgICBlbGVtZW50VHlwZUlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLlZpZXdfQ2xhc3NfMzAxMCIvPg0KKyAgICAgIDxlbGVtZW50RGVzY3JpcHRvcnMNCisgICAgICAgICAgZWxlbWVudFR5cGVJZD0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5WaWV3X0NsYXNzXzMwMTQiLz4NCisgICAgPC9vd25lZENvbmZpZ3VyYXRpb25zPg0KKyAgICA8b3duZWRDb25maWd1cmF0aW9ucw0KKyAgICAgICAgeHNpOnR5cGU9InBhbGV0dGVjb25maWd1cmF0aW9uOlRvb2xDb25maWd1cmF0aW9uIg0KKyAgICAgICAgaWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuYmRkLnBhbGV0dGUubm9kZS5WYWx1ZVR5cGUiDQorICAgICAgICBsYWJlbD0iVmFsdWVUeXBlIg0KKyAgICAgICAgZGVzY3JpcHRpb249IkNyZWF0ZSBhIFZhbHVlVHlwZSI+DQorICAgICAgPGljb24NCisgICAgICAgICAgcGx1Z2luSUQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwiDQorICAgICAgICAgIGljb25QYXRoPSJpY29ucy9ibG9ja3MvVmFsdWVUeXBlLmdpZiIvPg0KKyAgICAgIDxlbGVtZW50RGVzY3JpcHRvcnMNCisgICAgICAgICAgZWxlbWVudFR5cGVJZD0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5WYWx1ZVR5cGVfMjAxMCIvPg0KKyAgICAgIDxlbGVtZW50RGVzY3JpcHRvcnMNCisgICAgICAgICAgZWxlbWVudFR5cGVJZD0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5WYWx1ZVR5cGVfMzAyNyIvPg0KKyAgICAgIDxlbGVtZW50RGVzY3JpcHRvcnMNCisgICAgICAgICAgZWxlbWVudFR5cGVJZD0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5WYWx1ZVR5cGVfMzA0MyIvPg0KKyAgICAgIDxlbGVtZW50RGVzY3JpcHRvcnMNCisgICAgICAgICAgZWxlbWVudFR5cGVJZD0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5WYWx1ZVR5cGVfMzA0NCIvPg0KKyAgICAgIDxlbGVtZW50RGVzY3JpcHRvcnMNCisgICAgICAgICAgZWxlbWVudFR5cGVJZD0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5WYWx1ZVR5cGVfMzA0NSIvPg0KKyAgICA8L293bmVkQ29uZmlndXJhdGlvbnM+DQorICAgIDxvd25lZENvbmZpZ3VyYXRpb25zDQorICAgICAgICB4c2k6dHlwZT0icGFsZXR0ZWNvbmZpZ3VyYXRpb246VG9vbENvbmZpZ3VyYXRpb24iDQorICAgICAgICBpZD0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5iZGQucGFsZXR0ZS5ub2RlLlZpZXdQb2ludCINCisgICAgICAgIGxhYmVsPSJWaWV3UG9pbnQiDQorICAgICAgICBkZXNjcmlwdGlvbj0iQ3JlYXRlIGEgVmlld1BvaW50Ij4NCisgICAgICA8aWNvbg0KKyAgICAgICAgICBwbHVnaW5JRD0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbC5lZGl0Ig0KKyAgICAgICAgICBpY29uUGF0aD0iaWNvbnMvZnVsbC9vYmoxNi9WaWV3UG9pbnQuZ2lmIi8+DQorICAgICAgPGVsZW1lbnREZXNjcmlwdG9ycw0KKyAgICAgICAgICBlbGVtZW50VHlwZUlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLlZpZXdQb2ludF8yMDA4Ii8+DQorICAgICAgPGVsZW1lbnREZXNjcmlwdG9ycw0KKyAgICAgICAgICBlbGVtZW50VHlwZUlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLlZpZXdQb2ludF8zMDA0Ii8+DQorICAgICAgPGVsZW1lbnREZXNjcmlwdG9ycw0KKyAgICAgICAgICBlbGVtZW50VHlwZUlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLlZpZXdQb2ludF8zMDA4Ii8+DQorICAgICAgPGVsZW1lbnREZXNjcmlwdG9ycw0KKyAgICAgICAgICBlbGVtZW50VHlwZUlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLlZpZXdQb2ludF8zMDEwIi8+DQorICAgICAgPGVsZW1lbnREZXNjcmlwdG9ycw0KKyAgICAgICAgICBlbGVtZW50VHlwZUlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLlZpZXdQb2ludF8zMDE0Ii8+DQorICAgIDwvb3duZWRDb25maWd1cmF0aW9ucz4NCisgIDwvZHJhd2VyQ29uZmlndXJhdGlvbnM+DQorICA8ZHJhd2VyQ29uZmlndXJhdGlvbnMNCisgICAgICBpZD0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5iZGQucGFsZXR0ZS5lZGdlIg0KKyAgICAgIGxhYmVsPSJFZGdlcyINCisgICAgICBkZXNjcmlwdGlvbj0iRWRnZXMiPg0KKyAgICA8b3duZWRDb25maWd1cmF0aW9ucw0KKyAgICAgICAgeHNpOnR5cGU9InBhbGV0dGVjb25maWd1cmF0aW9uOlRvb2xDb25maWd1cmF0aW9uIg0KKyAgICAgICAgaWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuYmRkLnBhbGV0dGUuZWRnZS5Db25mb3JtX0dlbmVyYWxpemF0aW9uIg0KKyAgICAgICAgbGFiZWw9IkNvbmZvcm0iDQorICAgICAgICBkZXNjcmlwdGlvbj0iQ3JlYXRlIGEgQ29uZm9ybSBHZW5lcmFsaXphdGlvbiINCisgICAgICAgIGtpbmQ9IkNvbm5lY3Rpb25Ub29sIj4NCisgICAgICA8aWNvbg0KKyAgICAgICAgICBwbHVnaW5JRD0ib3JnLmVjbGlwc2UudW1sMi51bWwuZWRpdCINCisgICAgICAgICAgaWNvblBhdGg9Imljb25zL2Z1bGwvb2JqMTYvR2VuZXJhbGl6YXRpb24uZ2lmIi8+DQorICAgICAgPGVsZW1lbnREZXNjcmlwdG9ycw0KKyAgICAgICAgICBlbGVtZW50VHlwZUlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLkNvbmZvcm1fR2VuZXJhbGl6YXRpb25fNDAwMiIvPg0KKyAgICA8L293bmVkQ29uZmlndXJhdGlvbnM+DQorICAgIDxvd25lZENvbmZpZ3VyYXRpb25zDQorICAgICAgICB4c2k6dHlwZT0icGFsZXR0ZWNvbmZpZ3VyYXRpb246VG9vbENvbmZpZ3VyYXRpb24iDQorICAgICAgICBpZD0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5iZGQucGFsZXR0ZS5lZGdlLkNvbmZvcm1fRGVwZW5kZW5jeSINCisgICAgICAgIGxhYmVsPSJDb25mb3JtIg0KKyAgICAgICAgZGVzY3JpcHRpb249IkNyZWF0ZSBhIENvbmZvcm0gIg0KKyAgICAgICAga2luZD0iQ29ubmVjdGlvblRvb2wiPg0KKyAgICAgIDxpY29uDQorICAgICAgICAgIHBsdWdpbklEPSJvcmcuZWNsaXBzZS51bWwyLnVtbC5lZGl0Ig0KKyAgICAgICAgICBpY29uUGF0aD0iaWNvbnMvZnVsbC9vYmoxNi9EZXBlbmRlbmN5LmdpZiIvPg0KKyAgICAgIDxlbGVtZW50RGVzY3JpcHRvcnMNCisgICAgICAgICAgZWxlbWVudFR5cGVJZD0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5Db25mb3JtX0RlcGVuZGVuY3lfMjAxNCIvPg0KKyAgICAgIDxlbGVtZW50RGVzY3JpcHRvcnMNCisgICAgICAgICAgZWxlbWVudFR5cGVJZD0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5Db25mb3JtX0RlcGVuZGVuY3lfNDAwOCIvPg0KKyAgICAgIDxlbGVtZW50RGVzY3JpcHRvcnMNCisgICAgICAgICAgZWxlbWVudFR5cGVJZD0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5Db25mb3JtX0RlcGVuZGVuY3lfNDAxOCIvPg0KKyAgICA8L293bmVkQ29uZmlndXJhdGlvbnM+DQorICAgIDxvd25lZENvbmZpZ3VyYXRpb25zDQorICAgICAgICB4c2k6dHlwZT0icGFsZXR0ZWNvbmZpZ3VyYXRpb246VG9vbENvbmZpZ3VyYXRpb24iDQorICAgICAgICBpZD0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5iZGQucGFsZXR0ZS5lZGdlLkRlcGVuZGVuY3kiDQorICAgICAgICBsYWJlbD0iRGVwZW5kZW5jeSINCisgICAgICAgIGRlc2NyaXB0aW9uPSJDcmVhdGUgYSBkZXBlbmRlbmN5Ig0KKyAgICAgICAga2luZD0iQ29ubmVjdGlvblRvb2wiPg0KKyAgICAgIDxpY29uDQorICAgICAgICAgIHBsdWdpbklEPSJvcmcuZWNsaXBzZS51bWwyLnVtbC5lZGl0Ig0KKyAgICAgICAgICBpY29uUGF0aD0iL2ljb25zL2Z1bGwvb2JqMTYvRGVwZW5kZW5jeS5naWYiLz4NCisgICAgICA8ZWxlbWVudERlc2NyaXB0b3JzDQorICAgICAgICAgIGVsZW1lbnRUeXBlSWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMudW1sLmRpYWdyYW0uY2xhenouRGVwZW5kZW5jeV80MDA4Ii8+DQorICAgIDwvb3duZWRDb25maWd1cmF0aW9ucz4NCisgICAgPG93bmVkQ29uZmlndXJhdGlvbnMNCisgICAgICAgIHhzaTp0eXBlPSJwYWxldHRlY29uZmlndXJhdGlvbjpUb29sQ29uZmlndXJhdGlvbiINCisgICAgICAgIGlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLmJkZC5wYWxldHRlLmVkZ2UuRXhwb3NlIg0KKyAgICAgICAgbGFiZWw9IkV4cG9zZSINCisgICAgICAgIGRlc2NyaXB0aW9uPSJDcmVhdGUgYSBFeHBvc2UiDQorICAgICAgICBraW5kPSJDb25uZWN0aW9uVG9vbCI+DQorICAgICAgPGljb24NCisgICAgICAgICAgcGx1Z2luSUQ9Im9yZy5lY2xpcHNlLnVtbDIudW1sLmVkaXQiDQorICAgICAgICAgIGljb25QYXRoPSJpY29ucy9mdWxsL29iajE2L0RlcGVuZGVuY3kuZ2lmIi8+DQorICAgICAgPGVsZW1lbnREZXNjcmlwdG9ycw0KKyAgICAgICAgICBlbGVtZW50VHlwZUlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLkV4cG9zZV8yMDE0Ii8+DQorICAgICAgPGVsZW1lbnREZXNjcmlwdG9ycw0KKyAgICAgICAgICBlbGVtZW50VHlwZUlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLkV4cG9zZV80MDA4Ii8+DQorICAgICAgPGVsZW1lbnREZXNjcmlwdG9ycw0KKyAgICAgICAgICBlbGVtZW50VHlwZUlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLkV4cG9zZV80MDE4Ii8+DQorICAgIDwvb3duZWRDb25maWd1cmF0aW9ucz4NCisgICAgPG93bmVkQ29uZmlndXJhdGlvbnMNCisgICAgICAgIHhzaTp0eXBlPSJwYWxldHRlY29uZmlndXJhdGlvbjpUb29sQ29uZmlndXJhdGlvbiINCisgICAgICAgIGlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLmJkZC5wYWxldHRlLmVkZ2UuR2VuZXJhbGl6YXRpb24iDQorICAgICAgICBsYWJlbD0iR2VuZXJhbGl6YXRpb24iDQorICAgICAgICBkZXNjcmlwdGlvbj0iQ3JlYXRlIGEgZ2VuZXJhbGl6YXRpb24iDQorICAgICAgICBraW5kPSJDb25uZWN0aW9uVG9vbCI+DQorICAgICAgPGljb24NCisgICAgICAgICAgcGx1Z2luSUQ9Im9yZy5lY2xpcHNlLnVtbDIudW1sLmVkaXQiDQorICAgICAgICAgIGljb25QYXRoPSIvaWNvbnMvZnVsbC9vYmoxNi9HZW5lcmFsaXphdGlvbi5naWYiLz4NCisgICAgICA8ZWxlbWVudERlc2NyaXB0b3JzDQorICAgICAgICAgIGVsZW1lbnRUeXBlSWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMudW1sLmRpYWdyYW0uY2xhenouR2VuZXJhbGl6YXRpb25fNDAwMiIvPg0KKyAgICA8L293bmVkQ29uZmlndXJhdGlvbnM+DQorICAgIDxvd25lZENvbmZpZ3VyYXRpb25zDQorICAgICAgICB4c2k6dHlwZT0icGFsZXR0ZWNvbmZpZ3VyYXRpb246VG9vbENvbmZpZ3VyYXRpb24iDQorICAgICAgICBpZD0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5iZGQucGFsZXR0ZS5lZGdlLlBhcnRBc3NvY2lhdGlvbiINCisgICAgICAgIGxhYmVsPSJQYXJ0QXNzb2NpYXRpb24iDQorICAgICAgICBkZXNjcmlwdGlvbj0iQ3JlYXRlIGEgUGFydCBBc3NvY2lhdGlvbiINCisgICAgICAgIGtpbmQ9IkNvbm5lY3Rpb25Ub29sIj4NCisgICAgICA8aWNvbg0KKyAgICAgICAgICBwbHVnaW5JRD0ib3JnLmVjbGlwc2UudW1sMi51bWwuZWRpdCINCisgICAgICAgICAgaWNvblBhdGg9Imljb25zL2Z1bGwvb2JqMTYvQXNzb2NpYXRpb25fY29tcG9zaXRlLmdpZiIvPg0KKyAgICAgIDxlbGVtZW50RGVzY3JpcHRvcnMNCisgICAgICAgICAgZWxlbWVudFR5cGVJZD0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5QYXJ0QXNzb2NpYXRpb25fNDAwMSIvPg0KKyAgICA8L293bmVkQ29uZmlndXJhdGlvbnM+DQorICAgIDxvd25lZENvbmZpZ3VyYXRpb25zDQorICAgICAgICB4c2k6dHlwZT0icGFsZXR0ZWNvbmZpZ3VyYXRpb246VG9vbENvbmZpZ3VyYXRpb24iDQorICAgICAgICBpZD0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5iZGQucGFsZXR0ZS5lZGdlLlJlZmluZV9BYnN0cmFjdGlvbiINCisgICAgICAgIGxhYmVsPSJSZWZpbmUiDQorICAgICAgICBkZXNjcmlwdGlvbj0iQ3JlYXRlIGEgUmVmaW5lIg0KKyAgICAgICAga2luZD0iQ29ubmVjdGlvblRvb2wiPg0KKyAgICAgIDxpY29uDQorICAgICAgICAgIHBsdWdpbklEPSJvcmcuZWNsaXBzZS51bWwyLnVtbC5lZGl0Ig0KKyAgICAgICAgICBpY29uUGF0aD0iaWNvbnMvZnVsbC9vYmoxNi9BYnN0cmFjdGlvbi5naWYiLz4NCisgICAgICA8ZWxlbWVudERlc2NyaXB0b3JzDQorICAgICAgICAgIGVsZW1lbnRUeXBlSWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuUmVmaW5lX0Fic3RyYWN0aW9uXzQwMDYiLz4NCisgICAgPC9vd25lZENvbmZpZ3VyYXRpb25zPg0KKyAgICA8b3duZWRDb25maWd1cmF0aW9ucw0KKyAgICAgICAgeHNpOnR5cGU9InBhbGV0dGVjb25maWd1cmF0aW9uOlRvb2xDb25maWd1cmF0aW9uIg0KKyAgICAgICAgaWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuYmRkLnBhbGV0dGUuZWRnZS5TYXRpc2Z5X0Fic3RyYWN0aW9uIg0KKyAgICAgICAgbGFiZWw9IlNhdGlzZnkiDQorICAgICAgICBkZXNjcmlwdGlvbj0iQ3JlYXRlIGEgU2F0aXNmeSINCisgICAgICAgIGtpbmQ9IkNvbm5lY3Rpb25Ub29sIj4NCisgICAgICA8aWNvbg0KKyAgICAgICAgICBwbHVnaW5JRD0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbCINCisgICAgICAgICAgaWNvblBhdGg9Imljb25zL3JlcXVpcmVtZW50cy9TYXRpc2Z5LmdpZiIvPg0KKyAgICAgIDxlbGVtZW50RGVzY3JpcHRvcnMNCisgICAgICAgICAgZWxlbWVudFR5cGVJZD0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5TYXRpc2Z5X0Fic3RyYWN0aW9uXzQwMDYiLz4NCisgICAgPC9vd25lZENvbmZpZ3VyYXRpb25zPg0KKyAgICA8b3duZWRDb25maWd1cmF0aW9ucw0KKyAgICAgICAgeHNpOnR5cGU9InBhbGV0dGVjb25maWd1cmF0aW9uOlRvb2xDb25maWd1cmF0aW9uIg0KKyAgICAgICAgaWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuYmRkLnBhbGV0dGUuZWRnZS5TaGFyZWRBc3NvY2lhdGlvbiINCisgICAgICAgIGxhYmVsPSJTaGFyZWRBc3NvY2lhdGlvbiINCisgICAgICAgIGRlc2NyaXB0aW9uPSJDcmVhdGUgYSBTaGFyZWRBc3NvY2lhdGlvbiINCisgICAgICAgIGtpbmQ9IkNvbm5lY3Rpb25Ub29sIj4NCisgICAgICA8aWNvbg0KKyAgICAgICAgICBwbHVnaW5JRD0ib3JnLmVjbGlwc2UudW1sMi51bWwuZWRpdCINCisgICAgICAgICAgaWNvblBhdGg9Imljb25zL2Z1bGwvb2JqMTYvQXNzb2NpYXRpb25fc2hhcmVkLmdpZiIvPg0KKyAgICAgIDxlbGVtZW50RGVzY3JpcHRvcnMNCisgICAgICAgICAgZWxlbWVudFR5cGVJZD0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5TaGFyZWRBc3NvY2lhdGlvbl80MDAxIi8+DQorICAgIDwvb3duZWRDb25maWd1cmF0aW9ucz4NCisgICAgPG93bmVkQ29uZmlndXJhdGlvbnMNCisgICAgICAgIHhzaTp0eXBlPSJwYWxldHRlY29uZmlndXJhdGlvbjpUb29sQ29uZmlndXJhdGlvbiINCisgICAgICAgIGlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLmJkZC5wYWxldHRlLmVkZ2UuVmVyaWZ5X0Fic3RyYWN0aW9uX1ZlcmlmeV9MaW5rIg0KKyAgICAgICAgbGFiZWw9IlZlcmlmeV9MaW5rIg0KKyAgICAgICAga2luZD0iQ29ubmVjdGlvblRvb2wiPg0KKyAgICAgIDxpY29uDQorICAgICAgICAgIHBsdWdpbklEPSJvcmcuZWNsaXBzZS51bWwyLnVtbC5lZGl0Ig0KKyAgICAgICAgICBpY29uUGF0aD0iaWNvbnMvZnVsbC9vYmoxNi9JbmZvcm1hdGlvbkZsb3cuZ2lmIi8+DQorICAgICAgPGVsZW1lbnREZXNjcmlwdG9ycw0KKyAgICAgICAgICBlbGVtZW50VHlwZUlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuVmVyaWZ5X0Fic3RyYWN0aW9uX1ZlcmlmeV9MaW5rIi8+DQorICAgIDwvb3duZWRDb25maWd1cmF0aW9ucz4NCisgIDwvZHJhd2VyQ29uZmlndXJhdGlvbnM+DQorICA8ZHJhd2VyQ29uZmlndXJhdGlvbnMNCisgICAgICBpZD0iTm9kZXMiDQorICAgICAgbGFiZWw9Ik90aGVyIE5vZGVzIg0KKyAgICAgIGRlc2NyaXB0aW9uPSJPdGhlciBOb2RlcyI+DQorICAgIDxvd25lZENvbmZpZ3VyYXRpb25zDQorICAgICAgICB4c2k6dHlwZT0icGFsZXR0ZWNvbmZpZ3VyYXRpb246VG9vbENvbmZpZ3VyYXRpb24iDQorICAgICAgICBpZD0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5iZGQucGFsZXR0ZS5ub2RlLkFkanVuY3RQcm9wZXJ0eSINCisgICAgICAgIGxhYmVsPSJBZGp1bmN0UHJvcGVydHkiDQorICAgICAgICBkZXNjcmlwdGlvbj0iQ3JlYXRlIGEgQWRqdW5jdFByb3BlcnR5Ij4NCisgICAgICA8aWNvbg0KKyAgICAgICAgICBwbHVnaW5JRD0ib3JnLmVjbGlwc2UudW1sMi51bWwuZWRpdCINCisgICAgICAgICAgaWNvblBhdGg9Imljb25zL2Z1bGwvb2JqMTYvUHJvcGVydHkuZ2lmIi8+DQorICAgICAgPGVsZW1lbnREZXNjcmlwdG9ycw0KKyAgICAgICAgICBlbGVtZW50VHlwZUlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLkFkanVuY3RQcm9wZXJ0eV8zMDAyIi8+DQorICAgICAgPGVsZW1lbnREZXNjcmlwdG9ycw0KKyAgICAgICAgICBlbGVtZW50VHlwZUlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLkFkanVuY3RQcm9wZXJ0eV8zMDA1Ii8+DQorICAgICAgPGVsZW1lbnREZXNjcmlwdG9ycw0KKyAgICAgICAgICBlbGVtZW50VHlwZUlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLkFkanVuY3RQcm9wZXJ0eV8zMDA2Ii8+DQorICAgICAgPGVsZW1lbnREZXNjcmlwdG9ycw0KKyAgICAgICAgICBlbGVtZW50VHlwZUlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLkFkanVuY3RQcm9wZXJ0eV8zMDEyIi8+DQorICAgICAgPGVsZW1lbnREZXNjcmlwdG9ycw0KKyAgICAgICAgICBlbGVtZW50VHlwZUlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLkFkanVuY3RQcm9wZXJ0eV8zMDE4Ii8+DQorICAgICAgPGVsZW1lbnREZXNjcmlwdG9ycw0KKyAgICAgICAgICBlbGVtZW50VHlwZUlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLkFkanVuY3RQcm9wZXJ0eV8zMDQxIi8+DQorICAgIDwvb3duZWRDb25maWd1cmF0aW9ucz4NCisgICAgPG93bmVkQ29uZmlndXJhdGlvbnMNCisgICAgICAgIHhzaTp0eXBlPSJwYWxldHRlY29uZmlndXJhdGlvbjpUb29sQ29uZmlndXJhdGlvbiINCisgICAgICAgIGlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLmJkZC5wYWxldHRlLm5vZGUuQm91bmRSZWZlcmVuY2UiDQorICAgICAgICBsYWJlbD0iQm91bmRSZWZlcmVuY2UiDQorICAgICAgICBkZXNjcmlwdGlvbj0iQ3JlYXRlIGEgQm91bmRSZWZlcmVuY2UiPg0KKyAgICAgIDxpY29uDQorICAgICAgICAgIHBsdWdpbklEPSJvcmcuZWNsaXBzZS51bWwyLnVtbC5lZGl0Ig0KKyAgICAgICAgICBpY29uUGF0aD0iaWNvbnMvZnVsbC9vYmoxNi9Qcm9wZXJ0eS5naWYiLz4NCisgICAgICA8ZWxlbWVudERlc2NyaXB0b3JzDQorICAgICAgICAgIGVsZW1lbnRUeXBlSWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuQm91bmRSZWZlcmVuY2VfMzAwMiIvPg0KKyAgICAgIDxlbGVtZW50RGVzY3JpcHRvcnMNCisgICAgICAgICAgZWxlbWVudFR5cGVJZD0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5Cb3VuZFJlZmVyZW5jZV8zMDA1Ii8+DQorICAgICAgPGVsZW1lbnREZXNjcmlwdG9ycw0KKyAgICAgICAgICBlbGVtZW50VHlwZUlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLkJvdW5kUmVmZXJlbmNlXzMwMDYiLz4NCisgICAgICA8ZWxlbWVudERlc2NyaXB0b3JzDQorICAgICAgICAgIGVsZW1lbnRUeXBlSWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuQm91bmRSZWZlcmVuY2VfMzAxMiIvPg0KKyAgICAgIDxlbGVtZW50RGVzY3JpcHRvcnMNCisgICAgICAgICAgZWxlbWVudFR5cGVJZD0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5Cb3VuZFJlZmVyZW5jZV8zMDE4Ii8+DQorICAgICAgPGVsZW1lbnREZXNjcmlwdG9ycw0KKyAgICAgICAgICBlbGVtZW50VHlwZUlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLkJvdW5kUmVmZXJlbmNlXzMwNDEiLz4NCisgICAgPC9vd25lZENvbmZpZ3VyYXRpb25zPg0KKyAgICA8b3duZWRDb25maWd1cmF0aW9ucw0KKyAgICAgICAgeHNpOnR5cGU9InBhbGV0dGVjb25maWd1cmF0aW9uOlRvb2xDb25maWd1cmF0aW9uIg0KKyAgICAgICAgaWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuYmRkLnBhbGV0dGUubm9kZS5DbGFzc2lmaWVyQmVoYXZpb3JQcm9wZXJ0eSINCisgICAgICAgIGxhYmVsPSJDbGFzc2lmaWVyQmVoYXZpb3JQcm9wZXJ0eSINCisgICAgICAgIGRlc2NyaXB0aW9uPSJDcmVhdGUgYSBDbGFzc2lmaWVyQmVoYXZpb3JQcm9wZXJ0eSI+DQorICAgICAgPGljb24NCisgICAgICAgICAgcGx1Z2luSUQ9Im9yZy5lY2xpcHNlLnVtbDIudW1sLmVkaXQiDQorICAgICAgICAgIGljb25QYXRoPSJpY29ucy9mdWxsL29iajE2L1Byb3BlcnR5LmdpZiIvPg0KKyAgICAgIDxlbGVtZW50RGVzY3JpcHRvcnMNCisgICAgICAgICAgZWxlbWVudFR5cGVJZD0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5DbGFzc2lmaWVyQmVoYXZpb3JQcm9wZXJ0eV8zMDAyIi8+DQorICAgICAgPGVsZW1lbnREZXNjcmlwdG9ycw0KKyAgICAgICAgICBlbGVtZW50VHlwZUlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLkNsYXNzaWZpZXJCZWhhdmlvclByb3BlcnR5XzMwMDUiLz4NCisgICAgICA8ZWxlbWVudERlc2NyaXB0b3JzDQorICAgICAgICAgIGVsZW1lbnRUeXBlSWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuQ2xhc3NpZmllckJlaGF2aW9yUHJvcGVydHlfMzAwNiIvPg0KKyAgICAgIDxlbGVtZW50RGVzY3JpcHRvcnMNCisgICAgICAgICAgZWxlbWVudFR5cGVJZD0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5DbGFzc2lmaWVyQmVoYXZpb3JQcm9wZXJ0eV8zMDEyIi8+DQorICAgICAgPGVsZW1lbnREZXNjcmlwdG9ycw0KKyAgICAgICAgICBlbGVtZW50VHlwZUlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLkNsYXNzaWZpZXJCZWhhdmlvclByb3BlcnR5XzMwMTgiLz4NCisgICAgICA8ZWxlbWVudERlc2NyaXB0b3JzDQorICAgICAgICAgIGVsZW1lbnRUeXBlSWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuQ2xhc3NpZmllckJlaGF2aW9yUHJvcGVydHlfMzA0MSIvPg0KKyAgICA8L293bmVkQ29uZmlndXJhdGlvbnM+DQorICAgIDxvd25lZENvbmZpZ3VyYXRpb25zDQorICAgICAgICB4c2k6dHlwZT0icGFsZXR0ZWNvbmZpZ3VyYXRpb246VG9vbENvbmZpZ3VyYXRpb24iDQorICAgICAgICBpZD0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5iZGQucGFsZXR0ZS5ub2RlLkNvbm5lY3RvclByb3BlcnR5Ig0KKyAgICAgICAgbGFiZWw9IkNvbm5lY3RvclByb3BlcnR5Ig0KKyAgICAgICAgZGVzY3JpcHRpb249IkNyZWF0ZSBhIENvbm5lY3RvclByb3BlcnR5Ij4NCisgICAgICA8aWNvbg0KKyAgICAgICAgICBwbHVnaW5JRD0ib3JnLmVjbGlwc2UudW1sMi51bWwuZWRpdCINCisgICAgICAgICAgaWNvblBhdGg9Imljb25zL2Z1bGwvb2JqMTYvUHJvcGVydHkuZ2lmIi8+DQorICAgICAgPGVsZW1lbnREZXNjcmlwdG9ycw0KKyAgICAgICAgICBlbGVtZW50VHlwZUlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLkNvbm5lY3RvclByb3BlcnR5XzMwMDIiLz4NCisgICAgICA8ZWxlbWVudERlc2NyaXB0b3JzDQorICAgICAgICAgIGVsZW1lbnRUeXBlSWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuQ29ubmVjdG9yUHJvcGVydHlfMzAwNSIvPg0KKyAgICAgIDxlbGVtZW50RGVzY3JpcHRvcnMNCisgICAgICAgICAgZWxlbWVudFR5cGVJZD0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5Db25uZWN0b3JQcm9wZXJ0eV8zMDA2Ii8+DQorICAgICAgPGVsZW1lbnREZXNjcmlwdG9ycw0KKyAgICAgICAgICBlbGVtZW50VHlwZUlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLkNvbm5lY3RvclByb3BlcnR5XzMwMTIiLz4NCisgICAgICA8ZWxlbWVudERlc2NyaXB0b3JzDQorICAgICAgICAgIGVsZW1lbnRUeXBlSWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuQ29ubmVjdG9yUHJvcGVydHlfMzAxOCIvPg0KKyAgICAgIDxlbGVtZW50RGVzY3JpcHRvcnMNCisgICAgICAgICAgZWxlbWVudFR5cGVJZD0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5Db25uZWN0b3JQcm9wZXJ0eV8zMDQxIi8+DQorICAgIDwvb3duZWRDb25maWd1cmF0aW9ucz4NCisgICAgPG93bmVkQ29uZmlndXJhdGlvbnMNCisgICAgICAgIHhzaTp0eXBlPSJwYWxldHRlY29uZmlndXJhdGlvbjpUb29sQ29uZmlndXJhdGlvbiINCisgICAgICAgIGlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLmJkZC5wYWxldHRlLm5vZGUuQ29uc3RyYWludEJsb2NrIg0KKyAgICAgICAgbGFiZWw9IkNvbnN0cmFpbnRCbG9jayINCisgICAgICAgIGRlc2NyaXB0aW9uPSJDcmVhdGUgYSBDb25zdHJhaW50QmxvY2siPg0KKyAgICAgIDxpY29uDQorICAgICAgICAgIHBsdWdpbklEPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sIg0KKyAgICAgICAgICBpY29uUGF0aD0iaWNvbnMvY29uc3RyYWludHMvQ29uc3RyYWludEJsb2NrLmdpZiIvPg0KKyAgICAgIDxlbGVtZW50RGVzY3JpcHRvcnMNCisgICAgICAgICAgZWxlbWVudFR5cGVJZD0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5Db25zdHJhaW50QmxvY2tfMjAwOCIvPg0KKyAgICAgIDxlbGVtZW50RGVzY3JpcHRvcnMNCisgICAgICAgICAgZWxlbWVudFR5cGVJZD0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5Db25zdHJhaW50QmxvY2tfMzAwNCIvPg0KKyAgICAgIDxlbGVtZW50RGVzY3JpcHRvcnMNCisgICAgICAgICAgZWxlbWVudFR5cGVJZD0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5Db25zdHJhaW50QmxvY2tfMzAwOCIvPg0KKyAgICAgIDxlbGVtZW50RGVzY3JpcHRvcnMNCisgICAgICAgICAgZWxlbWVudFR5cGVJZD0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5Db25zdHJhaW50QmxvY2tfMzAxMCIvPg0KKyAgICAgIDxlbGVtZW50RGVzY3JpcHRvcnMNCisgICAgICAgICAgZWxlbWVudFR5cGVJZD0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5Db25zdHJhaW50QmxvY2tfMzAxNCIvPg0KKyAgICA8L293bmVkQ29uZmlndXJhdGlvbnM+DQorICAgIDxvd25lZENvbmZpZ3VyYXRpb25zDQorICAgICAgICB4c2k6dHlwZT0icGFsZXR0ZWNvbmZpZ3VyYXRpb246VG9vbENvbmZpZ3VyYXRpb24iDQorICAgICAgICBpZD0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5iZGQucGFsZXR0ZS5ub2RlLkNvbnRyb2xPcGVyYXRvcl9PcGVyYXRpb24iDQorICAgICAgICBsYWJlbD0iQ29udHJvbE9wZXJhdG9yIg0KKyAgICAgICAgZGVzY3JpcHRpb249IkNyZWF0ZSBhIENvbnRyb2xPcGVyYXRvciI+DQorICAgICAgPGljb24NCisgICAgICAgICAgcGx1Z2luSUQ9Im9yZy5lY2xpcHNlLnVtbDIudW1sLmVkaXQiDQorICAgICAgICAgIGljb25QYXRoPSJpY29ucy9mdWxsL29iajE2L09wZXJhdGlvbi5naWYiLz4NCisgICAgICA8ZWxlbWVudERlc2NyaXB0b3JzDQorICAgICAgICAgIGVsZW1lbnRUeXBlSWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuQ29udHJvbE9wZXJhdG9yX09wZXJhdGlvbl8zMDAzIi8+DQorICAgICAgPGVsZW1lbnREZXNjcmlwdG9ycw0KKyAgICAgICAgICBlbGVtZW50VHlwZUlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLkNvbnRyb2xPcGVyYXRvcl9PcGVyYXRpb25fMzAwNyIvPg0KKyAgICAgIDxlbGVtZW50RGVzY3JpcHRvcnMNCisgICAgICAgICAgZWxlbWVudFR5cGVJZD0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5Db250cm9sT3BlcmF0b3JfT3BlcmF0aW9uXzMwMTMiLz4NCisgICAgICA8ZWxlbWVudERlc2NyaXB0b3JzDQorICAgICAgICAgIGVsZW1lbnRUeXBlSWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuQ29udHJvbE9wZXJhdG9yX09wZXJhdGlvbl8zMDE5Ii8+DQorICAgICAgPGVsZW1lbnREZXNjcmlwdG9ycw0KKyAgICAgICAgICBlbGVtZW50VHlwZUlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLkNvbnRyb2xPcGVyYXRvcl9PcGVyYXRpb25fMzA0MiIvPg0KKyAgICA8L293bmVkQ29uZmlndXJhdGlvbnM+DQorICAgIDxvd25lZENvbmZpZ3VyYXRpb25zDQorICAgICAgICB4c2k6dHlwZT0icGFsZXR0ZWNvbmZpZ3VyYXRpb246VG9vbENvbmZpZ3VyYXRpb24iDQorICAgICAgICBpZD0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5iZGQucGFsZXR0ZS5ub2RlLkRpc3RyaWJ1dGVkUHJvcGVydHkiDQorICAgICAgICBsYWJlbD0iRGlzdHJpYnV0ZWRQcm9wZXJ0eSINCisgICAgICAgIGRlc2NyaXB0aW9uPSJDcmVhdGUgYSBEaXN0cmlidXRlZFByb3BlcnR5Ij4NCisgICAgICA8aWNvbg0KKyAgICAgICAgICBwbHVnaW5JRD0ib3JnLmVjbGlwc2UudW1sMi51bWwuZWRpdCINCisgICAgICAgICAgaWNvblBhdGg9Imljb25zL2Z1bGwvb2JqMTYvUHJvcGVydHkuZ2lmIi8+DQorICAgICAgPGVsZW1lbnREZXNjcmlwdG9ycw0KKyAgICAgICAgICBlbGVtZW50VHlwZUlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLkRpc3RyaWJ1dGVkUHJvcGVydHlfMzAwMiIvPg0KKyAgICAgIDxlbGVtZW50RGVzY3JpcHRvcnMNCisgICAgICAgICAgZWxlbWVudFR5cGVJZD0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5EaXN0cmlidXRlZFByb3BlcnR5XzMwMDUiLz4NCisgICAgICA8ZWxlbWVudERlc2NyaXB0b3JzDQorICAgICAgICAgIGVsZW1lbnRUeXBlSWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuRGlzdHJpYnV0ZWRQcm9wZXJ0eV8zMDA2Ii8+DQorICAgICAgPGVsZW1lbnREZXNjcmlwdG9ycw0KKyAgICAgICAgICBlbGVtZW50VHlwZUlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLkRpc3RyaWJ1dGVkUHJvcGVydHlfMzAxMiIvPg0KKyAgICAgIDxlbGVtZW50RGVzY3JpcHRvcnMNCisgICAgICAgICAgZWxlbWVudFR5cGVJZD0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5EaXN0cmlidXRlZFByb3BlcnR5XzMwMTgiLz4NCisgICAgICA8ZWxlbWVudERlc2NyaXB0b3JzDQorICAgICAgICAgIGVsZW1lbnRUeXBlSWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuRGlzdHJpYnV0ZWRQcm9wZXJ0eV8zMDQxIi8+DQorICAgIDwvb3duZWRDb25maWd1cmF0aW9ucz4NCisgICAgPG93bmVkQ29uZmlndXJhdGlvbnMNCisgICAgICAgIHhzaTp0eXBlPSJwYWxldHRlY29uZmlndXJhdGlvbjpUb29sQ29uZmlndXJhdGlvbiINCisgICAgICAgIGlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLmJkZC5wYWxldHRlLm5vZGUuRW5kUGF0aE11bHRpcGxpY2l0eSINCisgICAgICAgIGxhYmVsPSJFbmRQYXRoTXVsdGlwbGljaXR5Ig0KKyAgICAgICAgZGVzY3JpcHRpb249IkNyZWF0ZSBhIEVuZFBhdGhNdWx0aXBsaWNpdHkiPg0KKyAgICAgIDxpY29uDQorICAgICAgICAgIHBsdWdpbklEPSJvcmcuZWNsaXBzZS51bWwyLnVtbC5lZGl0Ig0KKyAgICAgICAgICBpY29uUGF0aD0iaWNvbnMvZnVsbC9vYmoxNi9Qcm9wZXJ0eS5naWYiLz4NCisgICAgICA8ZWxlbWVudERlc2NyaXB0b3JzDQorICAgICAgICAgIGVsZW1lbnRUeXBlSWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuRW5kUGF0aE11bHRpcGxpY2l0eV8zMDAyIi8+DQorICAgICAgPGVsZW1lbnREZXNjcmlwdG9ycw0KKyAgICAgICAgICBlbGVtZW50VHlwZUlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLkVuZFBhdGhNdWx0aXBsaWNpdHlfMzAwNSIvPg0KKyAgICAgIDxlbGVtZW50RGVzY3JpcHRvcnMNCisgICAgICAgICAgZWxlbWVudFR5cGVJZD0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5FbmRQYXRoTXVsdGlwbGljaXR5XzMwMDYiLz4NCisgICAgICA8ZWxlbWVudERlc2NyaXB0b3JzDQorICAgICAgICAgIGVsZW1lbnRUeXBlSWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuRW5kUGF0aE11bHRpcGxpY2l0eV8zMDEyIi8+DQorICAgICAgPGVsZW1lbnREZXNjcmlwdG9ycw0KKyAgICAgICAgICBlbGVtZW50VHlwZUlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLkVuZFBhdGhNdWx0aXBsaWNpdHlfMzAxOCIvPg0KKyAgICAgIDxlbGVtZW50RGVzY3JpcHRvcnMNCisgICAgICAgICAgZWxlbWVudFR5cGVJZD0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5FbmRQYXRoTXVsdGlwbGljaXR5XzMwNDEiLz4NCisgICAgPC9vd25lZENvbmZpZ3VyYXRpb25zPg0KKyAgICA8b3duZWRDb25maWd1cmF0aW9ucw0KKyAgICAgICAgeHNpOnR5cGU9InBhbGV0dGVjb25maWd1cmF0aW9uOlRvb2xDb25maWd1cmF0aW9uIg0KKyAgICAgICAgaWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuYmRkLnBhbGV0dGUubm9kZS5GbG93UHJvcGVydHkiDQorICAgICAgICBsYWJlbD0iRmxvd1Byb3BlcnR5Ig0KKyAgICAgICAgZGVzY3JpcHRpb249IkNyZWF0ZSBhIEZsb3dQcm9wZXJ0eSI+DQorICAgICAgPGljb24NCisgICAgICAgICAgcGx1Z2luSUQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwiDQorICAgICAgICAgIGljb25QYXRoPSJpY29ucy9wb3J0YW5kZmxvd3MvRmxvd1Byb3BlcnR5LmdpZiIvPg0KKyAgICAgIDxlbGVtZW50RGVzY3JpcHRvcnMNCisgICAgICAgICAgZWxlbWVudFR5cGVJZD0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5GbG93UHJvcGVydHlfMzAwMiIvPg0KKyAgICAgIDxlbGVtZW50RGVzY3JpcHRvcnMNCisgICAgICAgICAgZWxlbWVudFR5cGVJZD0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5GbG93UHJvcGVydHlfMzAwNSIvPg0KKyAgICAgIDxlbGVtZW50RGVzY3JpcHRvcnMNCisgICAgICAgICAgZWxlbWVudFR5cGVJZD0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5GbG93UHJvcGVydHlfMzAwNiIvPg0KKyAgICAgIDxlbGVtZW50RGVzY3JpcHRvcnMNCisgICAgICAgICAgZWxlbWVudFR5cGVJZD0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5GbG93UHJvcGVydHlfMzAxMiIvPg0KKyAgICAgIDxlbGVtZW50RGVzY3JpcHRvcnMNCisgICAgICAgICAgZWxlbWVudFR5cGVJZD0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5GbG93UHJvcGVydHlfMzAxOCIvPg0KKyAgICAgIDxlbGVtZW50RGVzY3JpcHRvcnMNCisgICAgICAgICAgZWxlbWVudFR5cGVJZD0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5GbG93UHJvcGVydHlfMzA0MSIvPg0KKyAgICA8L293bmVkQ29uZmlndXJhdGlvbnM+DQorICAgIDxvd25lZENvbmZpZ3VyYXRpb25zDQorICAgICAgICB4c2k6dHlwZT0icGFsZXR0ZWNvbmZpZ3VyYXRpb246VG9vbENvbmZpZ3VyYXRpb24iDQorICAgICAgICBpZD0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5iZGQucGFsZXR0ZS5ub2RlLkZsb3dTcGVjaWZpY2F0aW9uIg0KKyAgICAgICAgbGFiZWw9IkZsb3dTcGVjaWZpY2F0aW9uIg0KKyAgICAgICAgZGVzY3JpcHRpb249IkNyZWF0ZSBhIEZsb3dTcGVjaWZpY2F0aW9uIj4NCisgICAgICA8aWNvbg0KKyAgICAgICAgICBwbHVnaW5JRD0ib3JnLmVjbGlwc2UudW1sMi51bWwuZWRpdCINCisgICAgICAgICAgaWNvblBhdGg9Imljb25zL2Z1bGwvb2JqMTYvSW50ZXJmYWNlLmdpZiIvPg0KKyAgICAgIDxlbGVtZW50RGVzY3JpcHRvcnMNCisgICAgICAgICAgZWxlbWVudFR5cGVJZD0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5GbG93U3BlY2lmaWNhdGlvbl8yMDA0Ii8+DQorICAgICAgPGVsZW1lbnREZXNjcmlwdG9ycw0KKyAgICAgICAgICBlbGVtZW50VHlwZUlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLkZsb3dTcGVjaWZpY2F0aW9uXzMwMjMiLz4NCisgICAgICA8ZWxlbWVudERlc2NyaXB0b3JzDQorICAgICAgICAgIGVsZW1lbnRUeXBlSWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuRmxvd1NwZWNpZmljYXRpb25fMzAzNiIvPg0KKyAgICAgIDxlbGVtZW50RGVzY3JpcHRvcnMNCisgICAgICAgICAgZWxlbWVudFR5cGVJZD0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5GbG93U3BlY2lmaWNhdGlvbl8zMDM3Ii8+DQorICAgICAgPGVsZW1lbnREZXNjcmlwdG9ycw0KKyAgICAgICAgICBlbGVtZW50VHlwZUlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLkZsb3dTcGVjaWZpY2F0aW9uXzMwMzgiLz4NCisgICAgPC9vd25lZENvbmZpZ3VyYXRpb25zPg0KKyAgICA8b3duZWRDb25maWd1cmF0aW9ucw0KKyAgICAgICAgeHNpOnR5cGU9InBhbGV0dGVjb25maWd1cmF0aW9uOlRvb2xDb25maWd1cmF0aW9uIg0KKyAgICAgICAgaWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuYmRkLnBhbGV0dGUubm9kZS5JbnRlcmZhY2VCbG9jayINCisgICAgICAgIGxhYmVsPSJJbnRlcmZhY2VCbG9jayINCisgICAgICAgIGRlc2NyaXB0aW9uPSJDcmVhdGUgYSBJbnRlcmZhY2VCbG9jayI+DQorICAgICAgPGljb24NCisgICAgICAgICAgcGx1Z2luSUQ9Im9yZy5lY2xpcHNlLnVtbDIudW1sLmVkaXQiDQorICAgICAgICAgIGljb25QYXRoPSJpY29ucy9mdWxsL29iajE2L0NsYXNzLmdpZiIvPg0KKyAgICAgIDxlbGVtZW50RGVzY3JpcHRvcnMNCisgICAgICAgICAgZWxlbWVudFR5cGVJZD0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5JbnRlcmZhY2VCbG9ja18yMDA4Ii8+DQorICAgICAgPGVsZW1lbnREZXNjcmlwdG9ycw0KKyAgICAgICAgICBlbGVtZW50VHlwZUlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLkludGVyZmFjZUJsb2NrXzMwMDQiLz4NCisgICAgICA8ZWxlbWVudERlc2NyaXB0b3JzDQorICAgICAgICAgIGVsZW1lbnRUeXBlSWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuSW50ZXJmYWNlQmxvY2tfMzAwOCIvPg0KKyAgICAgIDxlbGVtZW50RGVzY3JpcHRvcnMNCisgICAgICAgICAgZWxlbWVudFR5cGVJZD0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5JbnRlcmZhY2VCbG9ja18zMDEwIi8+DQorICAgICAgPGVsZW1lbnREZXNjcmlwdG9ycw0KKyAgICAgICAgICBlbGVtZW50VHlwZUlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLkludGVyZmFjZUJsb2NrXzMwMTQiLz4NCisgICAgPC9vd25lZENvbmZpZ3VyYXRpb25zPg0KKyAgICA8b3duZWRDb25maWd1cmF0aW9ucw0KKyAgICAgICAgeHNpOnR5cGU9InBhbGV0dGVjb25maWd1cmF0aW9uOlRvb2xDb25maWd1cmF0aW9uIg0KKyAgICAgICAgaWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuYmRkLnBhbGV0dGUubm9kZS5QYXJ0aWNpcGFudFByb3BlcnR5Ig0KKyAgICAgICAgbGFiZWw9IlBhcnRpY2lwYW50UHJvcGVydHkiDQorICAgICAgICBkZXNjcmlwdGlvbj0iQ3JlYXRlIGEgUGFydGljaXBhbnRQcm9wZXJ0eSI+DQorICAgICAgPGljb24NCisgICAgICAgICAgcGx1Z2luSUQ9Im9yZy5lY2xpcHNlLnVtbDIudW1sLmVkaXQiDQorICAgICAgICAgIGljb25QYXRoPSJpY29ucy9mdWxsL29iajE2L1Byb3BlcnR5LmdpZiIvPg0KKyAgICAgIDxlbGVtZW50RGVzY3JpcHRvcnMNCisgICAgICAgICAgZWxlbWVudFR5cGVJZD0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5QYXJ0aWNpcGFudFByb3BlcnR5XzMwMDIiLz4NCisgICAgICA8ZWxlbWVudERlc2NyaXB0b3JzDQorICAgICAgICAgIGVsZW1lbnRUeXBlSWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuUGFydGljaXBhbnRQcm9wZXJ0eV8zMDA1Ii8+DQorICAgICAgPGVsZW1lbnREZXNjcmlwdG9ycw0KKyAgICAgICAgICBlbGVtZW50VHlwZUlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLlBhcnRpY2lwYW50UHJvcGVydHlfMzAwNiIvPg0KKyAgICAgIDxlbGVtZW50RGVzY3JpcHRvcnMNCisgICAgICAgICAgZWxlbWVudFR5cGVJZD0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5QYXJ0aWNpcGFudFByb3BlcnR5XzMwMTIiLz4NCisgICAgICA8ZWxlbWVudERlc2NyaXB0b3JzDQorICAgICAgICAgIGVsZW1lbnRUeXBlSWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuUGFydGljaXBhbnRQcm9wZXJ0eV8zMDE4Ii8+DQorICAgICAgPGVsZW1lbnREZXNjcmlwdG9ycw0KKyAgICAgICAgICBlbGVtZW50VHlwZUlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLlBhcnRpY2lwYW50UHJvcGVydHlfMzA0MSIvPg0KKyAgICA8L293bmVkQ29uZmlndXJhdGlvbnM+DQorICAgIDxvd25lZENvbmZpZ3VyYXRpb25zDQorICAgICAgICB4c2k6dHlwZT0icGFsZXR0ZWNvbmZpZ3VyYXRpb246VG9vbENvbmZpZ3VyYXRpb24iDQorICAgICAgICBpZD0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5iZGQucGFsZXR0ZS5ub2RlLlRlc3RDYXNlX09wZXJhdGlvbiINCisgICAgICAgIGxhYmVsPSJUZXN0Q2FzZSINCisgICAgICAgIGRlc2NyaXB0aW9uPSJDcmVhdGUgYSBUZXN0Q2FzZSI+DQorICAgICAgPGljb24NCisgICAgICAgICAgcGx1Z2luSUQ9Im9yZy5lY2xpcHNlLnVtbDIudW1sLmVkaXQiDQorICAgICAgICAgIGljb25QYXRoPSJpY29ucy9mdWxsL29iajE2L09wZXJhdGlvbi5naWYiLz4NCisgICAgICA8ZWxlbWVudERlc2NyaXB0b3JzDQorICAgICAgICAgIGVsZW1lbnRUeXBlSWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuVGVzdENhc2VfT3BlcmF0aW9uXzMwMDMiLz4NCisgICAgICA8ZWxlbWVudERlc2NyaXB0b3JzDQorICAgICAgICAgIGVsZW1lbnRUeXBlSWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuVGVzdENhc2VfT3BlcmF0aW9uXzMwMDciLz4NCisgICAgICA8ZWxlbWVudERlc2NyaXB0b3JzDQorICAgICAgICAgIGVsZW1lbnRUeXBlSWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuVGVzdENhc2VfT3BlcmF0aW9uXzMwMTMiLz4NCisgICAgICA8ZWxlbWVudERlc2NyaXB0b3JzDQorICAgICAgICAgIGVsZW1lbnRUeXBlSWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuVGVzdENhc2VfT3BlcmF0aW9uXzMwMTkiLz4NCisgICAgICA8ZWxlbWVudERlc2NyaXB0b3JzDQorICAgICAgICAgIGVsZW1lbnRUeXBlSWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuVGVzdENhc2VfT3BlcmF0aW9uXzMwNDIiLz4NCisgICAgPC9vd25lZENvbmZpZ3VyYXRpb25zPg0KKyAgICA8b3duZWRDb25maWd1cmF0aW9ucw0KKyAgICAgICAgeHNpOnR5cGU9InBhbGV0dGVjb25maWd1cmF0aW9uOlRvb2xDb25maWd1cmF0aW9uIg0KKyAgICAgICAgaWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuYmRkLnBhbGV0dGUubm9kZS5SZXF1aXJlbWVudCINCisgICAgICAgIGxhYmVsPSJSZXF1aXJlbWVudCINCisgICAgICAgIGRlc2NyaXB0aW9uPSJDcmVhdGUgYSBSZXF1aXJlbWVudCI+DQorICAgICAgPGljb24NCisgICAgICAgICAgcGx1Z2luSUQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwiDQorICAgICAgICAgIGljb25QYXRoPSJpY29ucy9yZXF1aXJlbWVudHMvUmVxdWlyZW1lbnQuZ2lmIi8+DQorICAgICAgPGVsZW1lbnREZXNjcmlwdG9ycw0KKyAgICAgICAgICBlbGVtZW50VHlwZUlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLlJlcXVpcmVtZW50XzIwMDgiLz4NCisgICAgICA8ZWxlbWVudERlc2NyaXB0b3JzDQorICAgICAgICAgIGVsZW1lbnRUeXBlSWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuUmVxdWlyZW1lbnRfMzAwNCIvPg0KKyAgICAgIDxlbGVtZW50RGVzY3JpcHRvcnMNCisgICAgICAgICAgZWxlbWVudFR5cGVJZD0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5SZXF1aXJlbWVudF8zMDA4Ii8+DQorICAgICAgPGVsZW1lbnREZXNjcmlwdG9ycw0KKyAgICAgICAgICBlbGVtZW50VHlwZUlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLlJlcXVpcmVtZW50XzMwMTAiLz4NCisgICAgICA8ZWxlbWVudERlc2NyaXB0b3JzDQorICAgICAgICAgIGVsZW1lbnRUeXBlSWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuUmVxdWlyZW1lbnRfMzAxNCIvPg0KKyAgICA8L293bmVkQ29uZmlndXJhdGlvbnM+DQorICA8L2RyYXdlckNvbmZpZ3VyYXRpb25zPg0KKyAgPGRyYXdlckNvbmZpZ3VyYXRpb25zDQorICAgICAgaWQ9IkVkZ2VzIg0KKyAgICAgIGxhYmVsPSJPdGhlciBFZGdlcyINCisgICAgICBkZXNjcmlwdGlvbj0iT3RoZXIgRWRnZXMiPg0KKyAgICA8b3duZWRDb25maWd1cmF0aW9ucw0KKyAgICAgICAgeHNpOnR5cGU9InBhbGV0dGVjb25maWd1cmF0aW9uOlRvb2xDb25maWd1cmF0aW9uIg0KKyAgICAgICAgaWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuYmRkLnBhbGV0dGUuZWRnZS5Db3B5X0Fic3RyYWN0aW9uIg0KKyAgICAgICAgbGFiZWw9IkNvcHkiDQorICAgICAgICBkZXNjcmlwdGlvbj0iQ3JlYXRlIGEgQ29weSINCisgICAgICAgIGtpbmQ9IkNvbm5lY3Rpb25Ub29sIj4NCisgICAgICA8aWNvbg0KKyAgICAgICAgICBwbHVnaW5JRD0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbCINCisgICAgICAgICAgaWNvblBhdGg9Imljb25zL3JlcXVpcmVtZW50cy9Db3B5LmdpZiIvPg0KKyAgICAgIDxlbGVtZW50RGVzY3JpcHRvcnMNCisgICAgICAgICAgZWxlbWVudFR5cGVJZD0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5Db3B5X0Fic3RyYWN0aW9uXzQwMDYiLz4NCisgICAgPC9vd25lZENvbmZpZ3VyYXRpb25zPg0KKyAgICA8b3duZWRDb25maWd1cmF0aW9ucw0KKyAgICAgICAgeHNpOnR5cGU9InBhbGV0dGVjb25maWd1cmF0aW9uOlRvb2xDb25maWd1cmF0aW9uIg0KKyAgICAgICAgaWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuYmRkLnBhbGV0dGUuZWRnZS5WZXJpZnlfQWJzdHJhY3Rpb24iDQorICAgICAgICBsYWJlbD0iVmVyaWZ5Ig0KKyAgICAgICAgZGVzY3JpcHRpb249IkNyZWF0ZSBhIFZlcmlmeSI+DQorICAgICAgPGljb24NCisgICAgICAgICAgcGx1Z2luSUQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwiDQorICAgICAgICAgIGljb25QYXRoPSJpY29ucy9yZXF1aXJlbWVudHMvVmVyaWZ5LmdpZiIvPg0KKyAgICAgIDxlbGVtZW50RGVzY3JpcHRvcnMNCisgICAgICAgICAgZWxlbWVudFR5cGVJZD0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5WZXJpZnlfQWJzdHJhY3Rpb25fNDAwNiIvPg0KKyAgICA8L293bmVkQ29uZmlndXJhdGlvbnM+DQorICAgIDxvd25lZENvbmZpZ3VyYXRpb25zDQorICAgICAgICB4c2k6dHlwZT0icGFsZXR0ZWNvbmZpZ3VyYXRpb246VG9vbENvbmZpZ3VyYXRpb24iDQorICAgICAgICBpZD0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5iZGQucGFsZXR0ZS5lZGdlLlRyYWNlX0Fic3RyYWN0aW9uIg0KKyAgICAgICAgbGFiZWw9IlRyYWNlIg0KKyAgICAgICAgZGVzY3JpcHRpb249IkNyZWF0ZSBhIFRyYWNlIg0KKyAgICAgICAga2luZD0iQ29ubmVjdGlvblRvb2wiPg0KKyAgICAgIDxpY29uDQorICAgICAgICAgIHBsdWdpbklEPSJvcmcuZWNsaXBzZS51bWwyLnVtbC5lZGl0Ig0KKyAgICAgICAgICBpY29uUGF0aD0iaWNvbnMvZnVsbC9vYmoxNi9BYnN0cmFjdGlvbi5naWYiLz4NCisgICAgICA8ZWxlbWVudERlc2NyaXB0b3JzDQorICAgICAgICAgIGVsZW1lbnRUeXBlSWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuVHJhY2VfQWJzdHJhY3Rpb25fNDAwNiIvPg0KKyAgICA8L293bmVkQ29uZmlndXJhdGlvbnM+DQorICAgIDxvd25lZENvbmZpZ3VyYXRpb25zDQorICAgICAgICB4c2k6dHlwZT0icGFsZXR0ZWNvbmZpZ3VyYXRpb246VG9vbENvbmZpZ3VyYXRpb24iDQorICAgICAgICBpZD0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5iZGQucGFsZXR0ZS5lZGdlLkFsbG9jYXRlX0Fic3RyYWN0aW9uIg0KKyAgICAgICAgbGFiZWw9IkFsbG9jYXRlIg0KKyAgICAgICAgZGVzY3JpcHRpb249IkNyZWF0ZSBhIEFsbG9jYXRlIEFic3RyYWN0aW9uIg0KKyAgICAgICAga2luZD0iQ29ubmVjdGlvblRvb2wiPg0KKyAgICAgIDxpY29uDQorICAgICAgICAgIHBsdWdpbklEPSJvcmcuZWNsaXBzZS51bWwyLnVtbC5lZGl0Ig0KKyAgICAgICAgICBpY29uUGF0aD0iaWNvbnMvZnVsbC9vYmoxNi9BYnN0cmFjdGlvbi5naWYiLz4NCisgICAgICA8ZWxlbWVudERlc2NyaXB0b3JzDQorICAgICAgICAgIGVsZW1lbnRUeXBlSWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuQWxsb2NhdGVfQWJzdHJhY3Rpb25fNDAwNiIvPg0KKyAgICA8L293bmVkQ29uZmlndXJhdGlvbnM+DQorICAgIDxvd25lZENvbmZpZ3VyYXRpb25zDQorICAgICAgICB4c2k6dHlwZT0icGFsZXR0ZWNvbmZpZ3VyYXRpb246VG9vbENvbmZpZ3VyYXRpb24iDQorICAgICAgICBpZD0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5iZGQucGFsZXR0ZS5lZGdlLkRlcml2ZVJlcXRfQWJzdHJhY3Rpb24iDQorICAgICAgICBsYWJlbD0iRGVyaXZlUmVxdCINCisgICAgICAgIGRlc2NyaXB0aW9uPSJDcmVhdGUgYSBEZXJpdmVSZXF0IEFic3RyYWN0aW9uIg0KKyAgICAgICAga2luZD0iQ29ubmVjdGlvblRvb2wiPg0KKyAgICAgIDxpY29uDQorICAgICAgICAgIHBsdWdpbklEPSJvcmcuZWNsaXBzZS51bWwyLnVtbC5lZGl0Ig0KKyAgICAgICAgICBpY29uUGF0aD0iaWNvbnMvZnVsbC9vYmoxNi9BYnN0cmFjdGlvbi5naWYiLz4NCisgICAgICA8ZWxlbWVudERlc2NyaXB0b3JzDQorICAgICAgICAgIGVsZW1lbnRUeXBlSWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuRGVyaXZlUmVxdF9BYnN0cmFjdGlvbl80MDA2Ii8+DQorICAgIDwvb3duZWRDb25maWd1cmF0aW9ucz4NCisgICAgPG93bmVkQ29uZmlndXJhdGlvbnMNCisgICAgICAgIHhzaTp0eXBlPSJwYWxldHRlY29uZmlndXJhdGlvbjpUb29sQ29uZmlndXJhdGlvbiINCisgICAgICAgIGlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLmJkZC5wYWxldHRlLmVkZ2UuSXRlbUZsb3ciDQorICAgICAgICBsYWJlbD0iSXRlbUZsb3ciDQorICAgICAgICBkZXNjcmlwdGlvbj0iQ3JlYXRlIGEgSXRlbUZsb3ciDQorICAgICAgICBraW5kPSJDb25uZWN0aW9uVG9vbCI+DQorICAgICAgPGljb24NCisgICAgICAgICAgcGx1Z2luSUQ9Im9yZy5lY2xpcHNlLnVtbDIudW1sLmVkaXQiDQorICAgICAgICAgIGljb25QYXRoPSJpY29ucy9mdWxsL29iajE2L0luZm9ybWF0aW9uRmxvdy5naWYiLz4NCisgICAgICA8ZWxlbWVudERlc2NyaXB0b3JzDQorICAgICAgICAgIGVsZW1lbnRUeXBlSWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuSXRlbUZsb3dfNDAyNiIvPg0KKyAgICA8L293bmVkQ29uZmlndXJhdGlvbnM+DQorICA8L2RyYXdlckNvbmZpZ3VyYXRpb25zPg0KKzwvcGFsZXR0ZWNvbmZpZ3VyYXRpb246UGFsZXR0ZUNvbmZpZ3VyYXRpb24+DQpkaWZmIC0tZ2l0IGEvZGlhZ3JhbS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGlhZ3JhbS5ibG9ja2RlZmluaXRpb24vcmVzb3VyY2VzL3N0eWxlL2Jsb2NrZGlhZ3JhbS5jc3MgYi9kaWFncmFtL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kaWFncmFtLmJsb2NrZGVmaW5pdGlvbi9yZXNvdXJjZXMvc3R5bGUvYmxvY2tkaWFncmFtLmNzcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MmE3ZjQ4Ci0tLSAvZGV2L251bGwKKysrIGIvZGlhZ3JhbS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGlhZ3JhbS5ibG9ja2RlZmluaXRpb24vcmVzb3VyY2VzL3N0eWxlL2Jsb2NrZGlhZ3JhbS5jc3MKQEAgLTAsMCArMSw5OCBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorICogQ29weXJpZ2h0IChjKSAyMDE1IENFQSBMSVNULg0KKyAqIA0KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCisgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCisgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICoNCisgKiBDb250cmlidXRvcnM6DQorICogIEJlbm9pdCBNYWdnaSAoQ0VBIExJU1QpIGJlbm9pdC5tYWdnaUBjZWEuZnINCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorQ2xhc3N7DQorCWZvbnROYW1lOiAiU2Vnb2UgVUkiOw0KKwlmaWxsQ29sb3I6ICNDM0Q3REQ7DQorCXRyYW5zcGFyZW5jeTogMDsNCisJZ3JhZGllbnQ6ICNGRkZGRkYgdmVydGljYWw7DQorCWxpbmVDb2xvcjogIzAwMDAwMDsNCisJZWxlbWVudEljb246IGZhbHNlOw0KK30NCisNCitDb21wYXJ0bWVudCB7DQorCXZpc2libGU6ZmFsc2U7DQorfQ0KKw0KK0NsYXNzW2FwcGxpZWRTdGVyZW90eXBlc349IkJsb2NrIl0gPiBDb21wYXJ0bWVudFtraW5kPSJhdHRyaWJ1dGVzIl0gew0KKyAgICB2aXNpYmxlOnRydWU7DQorICAgIHNob3dUaXRsZTp0cnVlOw0KK30NCisNCitDbGFzc1thcHBsaWVkU3RlcmVvdHlwZXN+PSJCbG9jayJdID4gQ29tcGFydG1lbnRba2luZD0ib3BlcmF0aW9ucyJdIHsNCisgICAgdmlzaWJsZTp0cnVlOw0KKyAgICBzaG93VGl0bGU6dHJ1ZTsNCisgICAgZWxlbWVudEljb246IGZhbHNlOw0KK30NCisNCitDbGFzc1thcHBsaWVkU3RlcmVvdHlwZXN+PSJCbG9jayJdID4gQ29tcGFydG1lbnRba2luZD0iY29uc3RyYWludHMiXSB7DQorICAgIHZpc2libGU6dHJ1ZTsNCisgICAgc2hvd1RpdGxlOnRydWU7DQorfQ0KKw0KK1NpZ25hbCAgPiBDb21wYXJ0bWVudCB7DQorCXZpc2libGU6ZmFsc2U7DQorfQ0KKw0KK0VudW1lcmF0aW9uICA+IENvbXBhcnRtZW50IHsNCisJdmlzaWJsZTpmYWxzZTsNCit9DQorDQorRW51bWVyYXRpb24gPiBDb21wYXJ0bWVudFtraW5kPSJsaXRlcmFscyJdIHsNCisgICAgdmlzaWJsZTp0cnVlOw0KKyAgICBzaG93VGl0bGU6dHJ1ZTsNCit9CQ0KKw0KK0RhdGFUeXBlW2FwcGxpZWRTdGVyZW90eXBlc349IlZhbHVlVHlwZSJdICA+IENvbXBhcnRtZW50IHsNCisJdmlzaWJsZTpmYWxzZTsNCit9DQorDQorRGF0YVR5cGVbYXBwbGllZFN0ZXJlb3R5cGVzfj0iVmFsdWVUeXBlIl0gPiBDb21wYXJ0bWVudFtraW5kPSJwcm9wZXJ0aWVzIl0gew0KKyAgICB2aXNpYmxlOnRydWU7DQorICAgIHNob3dUaXRsZTp0cnVlOw0KK30NCisNCitEYXRhVHlwZVthcHBsaWVkU3RlcmVvdHlwZXN+PSJWYWx1ZVR5cGUiXSA+IENvbXBhcnRtZW50W2tpbmQ9Im9wZXJhdGlvbnMiXSB7DQorICAgIHZpc2libGU6dHJ1ZTsNCisgICAgc2hvd1RpdGxlOnRydWU7DQorfQ0KKw0KK0RhdGFUeXBlW2FwcGxpZWRTdGVyZW90eXBlc349IlZhbHVlVHlwZSJdID4gQ29tcGFydG1lbnRbdHlwZT1TdGVyZW90eXBlQ29tcGFydG1lbnRdIHsNCisgICAgdmlzaWJsZTp0cnVlOw0KKyAgICBzaG93VGl0bGU6dHJ1ZTsNCit9DQorDQorSW5zdGFuY2VTcGVjaWZpY2F0aW9uPiBDb21wYXJ0bWVudFtraW5kPSJzbG90cyJdIHsNCisgICAgdmlzaWJsZTp0cnVlOw0KKyAgICBzaG93VGl0bGU6ZmFsc2U7DQorfQ0KKw0KK0FjdG9yDQorew0KKwlkaXNwbGF5Qm9yZGVyOmZhbHNlOw0KKwlkaXNwbGF5TmFtZTpmYWxzZTsNCisJZGlwbGF5SWNvbjpmYWxzZTsNCisJZGlzcGxheVRhZzpmYWxzZTsNCisJZm9sbG93U1ZHU3ltYm9sOnRydWU7DQorCW1haW50YWluU3ltYm9sUmF0aW86dHJ1ZTsNCisJdHJhbnNwYXJlbmN5OjEwMDsNCisJLypkaXNwbGF5RmxvYXRpbmdMYWJlbDp0cnVlOyovDQorCW1heE51bWJlck9mU3ltYm9sOjE7DQorCXVzZU9yaWdpbmFsQ29sb3JzOmZhbHNlOw0KKwlncmFkaWVudDpub25lOw0KKwlmaWxsQ29sb3I6d2hpdGU7DQorfQ0KKw0KK0FjdG9yID4gQ29tcGFydG1lbnRba2luZD0ic3ltYm9sIl0NCit7DQorICAgIHZpc2libGU6dHJ1ZTsNCit9DQorDQpkaWZmIC0tZ2l0IGEvZGlhZ3JhbS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGlhZ3JhbS5ibG9ja2RlZmluaXRpb24vc3JjL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9kaWFncmFtL2Jsb2NrZGVmaW5pdGlvbi9BY3RpdmF0b3IuamF2YSBiL2RpYWdyYW0vb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRpYWdyYW0uYmxvY2tkZWZpbml0aW9uL3NyYy9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvZGlhZ3JhbS9ibG9ja2RlZmluaXRpb24vQWN0aXZhdG9yLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDM2Y2VmNAotLS0gL2Rldi9udWxsCisrKyBiL2RpYWdyYW0vb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRpYWdyYW0uYmxvY2tkZWZpbml0aW9uL3NyYy9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvZGlhZ3JhbS9ibG9ja2RlZmluaXRpb24vQWN0aXZhdG9yLmphdmEKQEAgLTAsMCArMSw3MyBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorICogQ29weXJpZ2h0IChjKSAyMDE1IENFQSBMSVNULg0KKyAqDQorICoNCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQorICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCisgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqDQorICogQ29udHJpYnV0b3JzOg0KKyAqICBCZW5vaXQgTWFnZ2kgYmVub2l0Lm1hZ2dpQGNlYS5mciAgLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24NCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorcGFja2FnZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGlhZ3JhbS5ibG9ja2RlZmluaXRpb247DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLmpmYWNlLnJlc291cmNlLkltYWdlRGVzY3JpcHRvcjsNCitpbXBvcnQgb3JnLmVjbGlwc2UudWkucGx1Z2luLkFic3RyYWN0VUlQbHVnaW47DQoraW1wb3J0IG9yZy5vc2dpLmZyYW1ld29yay5CdW5kbGVDb250ZXh0Ow0KKw0KKy8qKg0KKyAqIFRoZSBhY3RpdmF0b3IgY2xhc3MgY29udHJvbHMgdGhlIHBsdWctaW4gbGlmZSBjeWNsZQ0KKyAqLw0KK3B1YmxpYyBjbGFzcyBBY3RpdmF0b3IgZXh0ZW5kcyBBYnN0cmFjdFVJUGx1Z2luIHsNCisNCisJLy8gVGhlIHBsdWctaW4gSUQNCisJcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgUExVR0lOX0lEID0gIm9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kaWFncmFtLmJsb2NrZGVmaW5pdGlvbiI7IC8vJE5PTi1OTFMtMSQNCisNCisJLy8gVGhlIHNoYXJlZCBpbnN0YW5jZQ0KKwlwcml2YXRlIHN0YXRpYyBBY3RpdmF0b3IgcGx1Z2luOw0KKwkNCisJLyoqDQorCSAqIFRoZSBjb25zdHJ1Y3Rvcg0KKwkgKi8NCisJcHVibGljIEFjdGl2YXRvcigpIHsNCisJfQ0KKw0KKwkvKg0KKwkgKiAobm9uLUphdmFkb2MpDQorCSAqIEBzZWUgb3JnLmVjbGlwc2UudWkucGx1Z2luLkFic3RyYWN0VUlQbHVnaW4jc3RhcnQob3JnLm9zZ2kuZnJhbWV3b3JrLkJ1bmRsZUNvbnRleHQpDQorCSAqLw0KKwlwdWJsaWMgdm9pZCBzdGFydChCdW5kbGVDb250ZXh0IGNvbnRleHQpIHRocm93cyBFeGNlcHRpb24gew0KKwkJc3VwZXIuc3RhcnQoY29udGV4dCk7DQorCQlwbHVnaW4gPSB0aGlzOw0KKwl9DQorDQorCS8qDQorCSAqIChub24tSmF2YWRvYykNCisJICogQHNlZSBvcmcuZWNsaXBzZS51aS5wbHVnaW4uQWJzdHJhY3RVSVBsdWdpbiNzdG9wKG9yZy5vc2dpLmZyYW1ld29yay5CdW5kbGVDb250ZXh0KQ0KKwkgKi8NCisJcHVibGljIHZvaWQgc3RvcChCdW5kbGVDb250ZXh0IGNvbnRleHQpIHRocm93cyBFeGNlcHRpb24gew0KKwkJcGx1Z2luID0gbnVsbDsNCisJCXN1cGVyLnN0b3AoY29udGV4dCk7DQorCX0NCisNCisJLyoqDQorCSAqIFJldHVybnMgdGhlIHNoYXJlZCBpbnN0YW5jZQ0KKwkgKg0KKwkgKiBAcmV0dXJuIHRoZSBzaGFyZWQgaW5zdGFuY2UNCisJICovDQorCXB1YmxpYyBzdGF0aWMgQWN0aXZhdG9yIGdldERlZmF1bHQoKSB7DQorCQlyZXR1cm4gcGx1Z2luOw0KKwl9DQorDQorCS8qKg0KKwkgKiBSZXR1cm5zIGFuIGltYWdlIGRlc2NyaXB0b3IgZm9yIHRoZSBpbWFnZSBmaWxlIGF0IHRoZSBnaXZlbg0KKwkgKiBwbHVnLWluIHJlbGF0aXZlIHBhdGgNCisJICoNCisJICogQHBhcmFtIHBhdGggdGhlIHBhdGgNCisJICogQHJldHVybiB0aGUgaW1hZ2UgZGVzY3JpcHRvcg0KKwkgKi8NCisJcHVibGljIHN0YXRpYyBJbWFnZURlc2NyaXB0b3IgZ2V0SW1hZ2VEZXNjcmlwdG9yKFN0cmluZyBwYXRoKSB7DQorCQlyZXR1cm4gaW1hZ2VEZXNjcmlwdG9yRnJvbVBsdWdpbihQTFVHSU5fSUQsIHBhdGgpOw0KKwl9DQorfQ0KZGlmZiAtLWdpdCBhL2RpYWdyYW0vb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRpYWdyYW0uYmxvY2tkZWZpbml0aW9uL3NyYy9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvZGlhZ3JhbS9ibG9ja2RlZmluaXRpb24vZmFjdG9yeS9CbG9ja0NsYXNzaWZpZXJWaWV3RmFjdG9yeS5qYXZhIGIvZGlhZ3JhbS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGlhZ3JhbS5ibG9ja2RlZmluaXRpb24vc3JjL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9kaWFncmFtL2Jsb2NrZGVmaW5pdGlvbi9mYWN0b3J5L0Jsb2NrQ2xhc3NpZmllclZpZXdGYWN0b3J5LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGZlMmZmMAotLS0gL2Rldi9udWxsCisrKyBiL2RpYWdyYW0vb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRpYWdyYW0uYmxvY2tkZWZpbml0aW9uL3NyYy9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvZGlhZ3JhbS9ibG9ja2RlZmluaXRpb24vZmFjdG9yeS9CbG9ja0NsYXNzaWZpZXJWaWV3RmFjdG9yeS5qYXZhCkBAIC0wLDAgKzEsMTE2IEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisgKiBDb3B5cmlnaHQgKGMpIDIwMTUgQ0VBIExJU1QgYW5kIG90aGVycy4NCisgKiANCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQorICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCisgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqDQorICogQ29udHJpYnV0b3JzOg0KKyAqICAgQ0VBIExJU1QgLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24NCisgKiAgIA0KKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCitwYWNrYWdlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kaWFncmFtLmJsb2NrZGVmaW5pdGlvbi5mYWN0b3J5Ow0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSUFkYXB0YWJsZTsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVBbm5vdGF0aW9uOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRU9iamVjdDsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZW1mLmVjb3JlLkVjb3JlRmFjdG9yeTsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZ21mLnJ1bnRpbWUuZGlhZ3JhbS5jb3JlLnByZWZlcmVuY2VzLlByZWZlcmVuY2VzSGludDsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZ21mLnJ1bnRpbWUuZGlhZ3JhbS5jb3JlLnV0aWwuVmlld1V0aWw7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmdtZi5ydW50aW1lLmRpYWdyYW0uY29yZS52aWV3LmZhY3Rvcmllcy5WaWV3RmFjdG9yeTsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZ21mLnJ1bnRpbWUubm90YXRpb24uRGVjb3JhdGlvbk5vZGU7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmdtZi5ydW50aW1lLm5vdGF0aW9uLkxvY2F0aW9uOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5nbWYucnVudGltZS5ub3RhdGlvbi5Ob2RlOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5nbWYucnVudGltZS5ub3RhdGlvbi5Ob3RhdGlvbkZhY3Rvcnk7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmdtZi5ydW50aW1lLm5vdGF0aW9uLlNoYXBlOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5nbWYucnVudGltZS5ub3RhdGlvbi5UaXRsZVN0eWxlOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5nbWYucnVudGltZS5ub3RhdGlvbi5WaWV3Ow0KK2ltcG9ydCBvcmcuZWNsaXBzZS5qZmFjZS5wcmVmZXJlbmNlLklQcmVmZXJlbmNlU3RvcmU7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMudW1sLmRpYWdyYW0uY2xhenouZWRpdC5wYXJ0cy5DbGFzc0F0dHJpYnV0ZUNvbXBhcnRtZW50RWRpdFBhcnQ7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMudW1sLmRpYWdyYW0uY2xhenouZWRpdC5wYXJ0cy5DbGFzc0Zsb2F0aW5nTmFtZUVkaXRQYXJ0Ow0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnVtbC5kaWFncmFtLmNsYXp6LmVkaXQucGFydHMuQ2xhc3NOYW1lRWRpdFBhcnQ7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMudW1sLmRpYWdyYW0uY2xhenouZWRpdC5wYXJ0cy5DbGFzc05lc3RlZENsYXNzaWZpZXJDb21wYXJ0bWVudEVkaXRQYXJ0Ow0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnVtbC5kaWFncmFtLmNsYXp6LmVkaXQucGFydHMuQ2xhc3NPcGVyYXRpb25Db21wYXJ0bWVudEVkaXRQYXJ0Ow0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnVtbC5kaWFncmFtLmNsYXp6LmVkaXQucGFydHMuTW9kZWxFZGl0UGFydDsNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy51bWwuZGlhZ3JhbS5jbGF6ei5wYXJ0LlVNTFZpc3VhbElEUmVnaXN0cnk7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMudW1sLmRpYWdyYW0uY29tbW9uLmhlbHBlci5QcmVmZXJlbmNlSW5pdGlhbGl6ZXJGb3JFbGVtZW50SGVscGVyOw0KKw0KKy8qKg0KKyAqIA0KKyAqIGV4dHJhY3Rpb24gZnJvbSBjbGFzc2RpYWdyYW0gVU1MIHZpZXcgUHJvdmlkZXINCisgKg0KKyAqLw0KK3B1YmxpYyBjbGFzcyBCbG9ja0NsYXNzaWZpZXJWaWV3RmFjdG9yeSBpbXBsZW1lbnRzIFZpZXdGYWN0b3J5IHsNCisNCisJQE92ZXJyaWRlDQorCXB1YmxpYyBWaWV3IGNyZWF0ZVZpZXcoSUFkYXB0YWJsZSBzZW1hbnRpY0FkYXB0ZXIsIFZpZXcgY29udGFpbmVyVmlldywgU3RyaW5nIHNlbWFudGljSGludCwgaW50IGluZGV4LA0KKwkJCWJvb2xlYW4gcGVyc2lzdGVkLCBQcmVmZXJlbmNlc0hpbnQgcHJlZmVyZW5jZXNIaW50KSB7DQorCQlyZXR1cm4gY3JlYXRlQ2xhc3NfMjAwOCgoRU9iamVjdClzZW1hbnRpY0FkYXB0ZXIuZ2V0QWRhcHRlcihFT2JqZWN0LmNsYXNzKSwgY29udGFpbmVyVmlldyxzZW1hbnRpY0hpbnQsIGluZGV4LCBwZXJzaXN0ZWQsIHByZWZlcmVuY2VzSGludCk7DQorCX0NCisNCisJcHVibGljIE5vZGUgY3JlYXRlQ2xhc3NfMjAwOChFT2JqZWN0IGRvbWFpbkVsZW1lbnQsIFZpZXcgY29udGFpbmVyVmlldywgU3RyaW5nIHNlbWFudGljSGludCxpbnQgaW5kZXgsIGJvb2xlYW4gcGVyc2lzdGVkLCBQcmVmZXJlbmNlc0hpbnQgcHJlZmVyZW5jZXNIaW50KSB7DQorCQlTaGFwZSBub2RlID0gTm90YXRpb25GYWN0b3J5LmVJTlNUQU5DRS5jcmVhdGVTaGFwZSgpOw0KKwkJbm9kZS5zZXRMYXlvdXRDb25zdHJhaW50KE5vdGF0aW9uRmFjdG9yeS5lSU5TVEFOQ0UuY3JlYXRlQm91bmRzKCkpOw0KKwkJbm9kZS5zZXRUeXBlKHNlbWFudGljSGludCk7DQorCQlWaWV3VXRpbC5pbnNlcnRDaGlsZFZpZXcoY29udGFpbmVyVmlldywgbm9kZSwgaW5kZXgsIHBlcnNpc3RlZCk7DQorCQlub2RlLnNldEVsZW1lbnQoZG9tYWluRWxlbWVudCk7DQorCQlzdGFtcFNob3J0Y3V0KGNvbnRhaW5lclZpZXcsIG5vZGUpOw0KKwkJLy8gaW5pdGlhbGl6ZUZyb21QcmVmZXJlbmNlcw0KKwkJZmluYWwgSVByZWZlcmVuY2VTdG9yZSBwcmVmU3RvcmUgPSAoSVByZWZlcmVuY2VTdG9yZSkgcHJlZmVyZW5jZXNIaW50LmdldFByZWZlcmVuY2VTdG9yZSgpOw0KKw0KKwkJUHJlZmVyZW5jZUluaXRpYWxpemVyRm9yRWxlbWVudEhlbHBlci5pbml0Rm9udFN0eWxlRnJvbVByZWZzKG5vZGUsIHByZWZTdG9yZSwgIkNsYXNzIik7DQorCQlOb2RlIGxhYmVsNTAyOSA9IGNyZWF0ZUxhYmVsKG5vZGUsIFVNTFZpc3VhbElEUmVnaXN0cnkuZ2V0VHlwZShDbGFzc05hbWVFZGl0UGFydC5WSVNVQUxfSUQpKTsNCisJCU5vZGUgbGFiZWw4NTEwID0gY3JlYXRlTGFiZWwobm9kZSwgVU1MVmlzdWFsSURSZWdpc3RyeS5nZXRUeXBlKENsYXNzRmxvYXRpbmdOYW1lRWRpdFBhcnQuVklTVUFMX0lEKSk7DQorCQlsYWJlbDg1MTAuc2V0TGF5b3V0Q29uc3RyYWludChOb3RhdGlvbkZhY3RvcnkuZUlOU1RBTkNFLmNyZWF0ZUxvY2F0aW9uKCkpOw0KKwkJTG9jYXRpb24gbG9jYXRpb244NTEwID0gKExvY2F0aW9uKSBsYWJlbDg1MTAuZ2V0TGF5b3V0Q29uc3RyYWludCgpOw0KKwkJbG9jYXRpb244NTEwLnNldFgoMCk7DQorCQlsb2NhdGlvbjg1MTAuc2V0WSg1KTsNCisJCWNyZWF0ZUNvbXBhcnRtZW50KG5vZGUsIFVNTFZpc3VhbElEUmVnaXN0cnkuZ2V0VHlwZShDbGFzc0F0dHJpYnV0ZUNvbXBhcnRtZW50RWRpdFBhcnQuVklTVUFMX0lEKSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSk7DQorCQljcmVhdGVDb21wYXJ0bWVudChub2RlLCBVTUxWaXN1YWxJRFJlZ2lzdHJ5LmdldFR5cGUoQ2xhc3NPcGVyYXRpb25Db21wYXJ0bWVudEVkaXRQYXJ0LlZJU1VBTF9JRCksIHRydWUsIHRydWUsIHRydWUsIHRydWUpOw0KKwkJY3JlYXRlQ29tcGFydG1lbnQobm9kZSwgVU1MVmlzdWFsSURSZWdpc3RyeS5nZXRUeXBlKENsYXNzTmVzdGVkQ2xhc3NpZmllckNvbXBhcnRtZW50RWRpdFBhcnQuVklTVUFMX0lEKSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSwgdHJ1ZSk7DQorCQlQcmVmZXJlbmNlSW5pdGlhbGl6ZXJGb3JFbGVtZW50SGVscGVyLmluaXRDb21wYXJ0bWVudHNTdGF0dXNGcm9tUHJlZnMobm9kZSwgcHJlZlN0b3JlLCAiQ2xhc3MiKTsNCisJCXJldHVybiBub2RlOw0KKwl9DQorCXByb3RlY3RlZCB2b2lkIHN0YW1wU2hvcnRjdXQoVmlldyBjb250YWluZXJWaWV3LCBOb2RlIHRhcmdldCkgew0KKwkJaWYgKCFNb2RlbEVkaXRQYXJ0Lk1PREVMX0lELmVxdWFscyhVTUxWaXN1YWxJRFJlZ2lzdHJ5LmdldE1vZGVsSUQoY29udGFpbmVyVmlldykpKSB7DQorCQkJRUFubm90YXRpb24gc2hvcnRjdXRBbm5vdGF0aW9uID0gRWNvcmVGYWN0b3J5LmVJTlNUQU5DRS5jcmVhdGVFQW5ub3RhdGlvbigpOw0KKwkJCXNob3J0Y3V0QW5ub3RhdGlvbi5zZXRTb3VyY2UoIlNob3J0Y3V0Iik7IC8vJE5PTi1OTFMtMSQNCisJCQlzaG9ydGN1dEFubm90YXRpb24uZ2V0RGV0YWlscygpLnB1dCgibW9kZWxJRCIsIE1vZGVsRWRpdFBhcnQuTU9ERUxfSUQpOyAvLyROT04tTkxTLTEkDQorCQkJdGFyZ2V0LmdldEVBbm5vdGF0aW9ucygpLmFkZChzaG9ydGN1dEFubm90YXRpb24pOw0KKwkJfQ0KKwl9DQorCXByb3RlY3RlZCBOb2RlIGNyZWF0ZUxhYmVsKFZpZXcgb3duZXIsIFN0cmluZyBoaW50KSB7DQorCQlEZWNvcmF0aW9uTm9kZSBydiA9IE5vdGF0aW9uRmFjdG9yeS5lSU5TVEFOQ0UuY3JlYXRlRGVjb3JhdGlvbk5vZGUoKTsNCisJCXJ2LnNldFR5cGUoaGludCk7DQorCQlWaWV3VXRpbC5pbnNlcnRDaGlsZFZpZXcob3duZXIsIHJ2LCBWaWV3VXRpbC5BUFBFTkQsIHRydWUpOw0KKwkJcmV0dXJuIHJ2Ow0KKwl9DQorCXByb3RlY3RlZCBOb2RlIGNyZWF0ZUNvbXBhcnRtZW50KFZpZXcgb3duZXIsIFN0cmluZyBoaW50LCBib29sZWFuIGNhbkNvbGxhcHNlLCBib29sZWFuIGhhc1RpdGxlLCBib29sZWFuIGNhblNvcnQsIGJvb2xlYW4gY2FuRmlsdGVyKSB7DQorCQkvLyBTZW1hbnRpY0xpc3RDb21wYXJ0bWVudCBydiA9IE5vdGF0aW9uRmFjdG9yeS5lSU5TVEFOQ0UuY3JlYXRlU2VtYW50aWNMaXN0Q29tcGFydG1lbnQoKTsNCisJCS8vIHJ2LnNldFNob3dUaXRsZShzaG93VGl0bGUpOw0KKwkJLy8gcnYuc2V0Q29sbGFwc2VkKGlzQ29sbGFwc2VkKTsNCisJCU5vZGUgcnY7DQorCQlpZiAoY2FuQ29sbGFwc2UpIHsNCisJCQlydiA9IE5vdGF0aW9uRmFjdG9yeS5lSU5TVEFOQ0UuY3JlYXRlQmFzaWNDb21wYXJ0bWVudCgpOw0KKwkJfSBlbHNlIHsNCisJCQlydiA9IE5vdGF0aW9uRmFjdG9yeS5lSU5TVEFOQ0UuY3JlYXRlRGVjb3JhdGlvbk5vZGUoKTsNCisJCX0NCisNCisJCXJ2LnNldExheW91dENvbnN0cmFpbnQoTm90YXRpb25GYWN0b3J5LmVJTlNUQU5DRS5jcmVhdGVCb3VuZHMoKSk7DQorDQorCQlpZiAoaGFzVGl0bGUpIHsNCisJCQlUaXRsZVN0eWxlIHRzID0gTm90YXRpb25GYWN0b3J5LmVJTlNUQU5DRS5jcmVhdGVUaXRsZVN0eWxlKCk7DQorCQkJcnYuZ2V0U3R5bGVzKCkuYWRkKHRzKTsNCisJCX0NCisJCWlmIChjYW5Tb3J0KSB7DQorCQkJcnYuZ2V0U3R5bGVzKCkuYWRkKE5vdGF0aW9uRmFjdG9yeS5lSU5TVEFOQ0UuY3JlYXRlU29ydGluZ1N0eWxlKCkpOw0KKwkJfQ0KKwkJaWYgKGNhbkZpbHRlcikgew0KKwkJCXJ2LmdldFN0eWxlcygpLmFkZChOb3RhdGlvbkZhY3RvcnkuZUlOU1RBTkNFLmNyZWF0ZUZpbHRlcmluZ1N0eWxlKCkpOw0KKwkJfQ0KKwkJcnYuc2V0VHlwZShoaW50KTsNCisJCVZpZXdVdGlsLmluc2VydENoaWxkVmlldyhvd25lciwgcnYsIFZpZXdVdGlsLkFQUEVORCwgdHJ1ZSk7DQorCQlyZXR1cm4gcnY7DQorCX0NCit9DQpkaWZmIC0tZ2l0IGEvZGlhZ3JhbS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGlhZ3JhbS5ibG9ja2RlZmluaXRpb24vc3JjL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9kaWFncmFtL2Jsb2NrZGVmaW5pdGlvbi9mYWN0b3J5L09wZXJhdGlvblBvcnRWaWV3RmFjdG9yeS5qYXZhIGIvZGlhZ3JhbS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGlhZ3JhbS5ibG9ja2RlZmluaXRpb24vc3JjL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9kaWFncmFtL2Jsb2NrZGVmaW5pdGlvbi9mYWN0b3J5L09wZXJhdGlvblBvcnRWaWV3RmFjdG9yeS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU2ODEwMDAKLS0tIC9kZXYvbnVsbAorKysgYi9kaWFncmFtL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kaWFncmFtLmJsb2NrZGVmaW5pdGlvbi9zcmMvb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L2RpYWdyYW0vYmxvY2tkZWZpbml0aW9uL2ZhY3RvcnkvT3BlcmF0aW9uUG9ydFZpZXdGYWN0b3J5LmphdmEKQEAgLTAsMCArMSw3MSBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorICogQ29weXJpZ2h0IChjKSAyMDE1IENFQSBMSVNUIGFuZCBvdGhlcnMuDQorICogDQorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KKyAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQorICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgKg0KKyAqIENvbnRyaWJ1dG9yczoNCisgKiAgIENFQSBMSVNUIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uDQorICogICANCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorcGFja2FnZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGlhZ3JhbS5ibG9ja2RlZmluaXRpb24uZmFjdG9yeTsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklBZGFwdGFibGU7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FT2JqZWN0Ow0KK2ltcG9ydCBvcmcuZWNsaXBzZS5nbWYucnVudGltZS5kaWFncmFtLmNvcmUucHJlZmVyZW5jZXMuUHJlZmVyZW5jZXNIaW50Ow0KK2ltcG9ydCBvcmcuZWNsaXBzZS5nbWYucnVudGltZS5kaWFncmFtLmNvcmUudXRpbC5WaWV3VXRpbDsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZ21mLnJ1bnRpbWUuZGlhZ3JhbS5jb3JlLnZpZXcuZmFjdG9yaWVzLlZpZXdGYWN0b3J5Ow0KK2ltcG9ydCBvcmcuZWNsaXBzZS5nbWYucnVudGltZS5ub3RhdGlvbi5EZWNvcmF0aW9uTm9kZTsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZ21mLnJ1bnRpbWUubm90YXRpb24uTG9jYXRpb247DQoraW1wb3J0IG9yZy5lY2xpcHNlLmdtZi5ydW50aW1lLm5vdGF0aW9uLk5vZGU7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmdtZi5ydW50aW1lLm5vdGF0aW9uLk5vdGF0aW9uRmFjdG9yeTsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZ21mLnJ1bnRpbWUubm90YXRpb24uU2hhcGU7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmdtZi5ydW50aW1lLm5vdGF0aW9uLlZpZXc7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmpmYWNlLnByZWZlcmVuY2UuSVByZWZlcmVuY2VTdG9yZTsNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy51bWwuZGlhZ3JhbS5jb21tb24uaGVscGVyLlByZWZlcmVuY2VJbml0aWFsaXplckZvckVsZW1lbnRIZWxwZXI7DQorDQorcHVibGljIGNsYXNzIE9wZXJhdGlvblBvcnRWaWV3RmFjdG9yeSBpbXBsZW1lbnRzIFZpZXdGYWN0b3J5IHsNCisNCisJLyoqDQorCSAqIHZpc3VhbCBJRCBmb3Igc3RlcmVvdHlwZSBsYWJlbCBvZiBib3JkZXIgaXRlbQ0KKwkgKi8NCisJcHJvdGVjdGVkIHN0YXRpYyBmaW5hbCBTdHJpbmcgT1BFUkFUSU9OX0JPUkRFUl9JVEVNX1NURVJFT1RZUEVfTEFCRUwgPSAiT3BlcmF0aW9uX0JvcmRlckl0ZW1fU3RlcmVvdHlwZV9MYWJlbCI7DQorCS8qKg0KKwkgKiB2aXN1YWwgSUQgZm9yIG5hbWUgbGFiZWwgb2YgYm9yZGVyIGl0ZW0NCisJICovDQorCXByb3RlY3RlZCBzdGF0aWMgZmluYWwgU3RyaW5nIE9QRVJBVElPTl9CT1JERVJfSVRFTV9MQUJFTCA9ICJPcGVyYXRpb25fQm9yZGVySXRlbV9MYWJlbCI7DQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgVmlldyBjcmVhdGVWaWV3KElBZGFwdGFibGUgc2VtYW50aWNBZGFwdGVyLCBWaWV3IGNvbnRhaW5lclZpZXcsIFN0cmluZyBzZW1hbnRpY0hpbnQsIGludCBpbmRleCwJYm9vbGVhbiBwZXJzaXN0ZWQsIFByZWZlcmVuY2VzSGludCBwcmVmZXJlbmNlc0hpbnQpIHsNCisJCXJldHVybiBjcmVhdGVQb3J0KChFT2JqZWN0KXNlbWFudGljQWRhcHRlci5nZXRBZGFwdGVyKEVPYmplY3QuY2xhc3MpLCBjb250YWluZXJWaWV3LHNlbWFudGljSGludCwgaW5kZXgsIHBlcnNpc3RlZCwgcHJlZmVyZW5jZXNIaW50KTsNCisJfQ0KKwlwdWJsaWMgTm9kZSBjcmVhdGVQb3J0KEVPYmplY3QgZG9tYWluRWxlbWVudCwgVmlldyBjb250YWluZXJWaWV3LFN0cmluZyBzZW1hbnRpY0hpbnQsIGludCBpbmRleCwgYm9vbGVhbiBwZXJzaXN0ZWQsIFByZWZlcmVuY2VzSGludCBwcmVmZXJlbmNlc0hpbnQpIHsNCisJCVNoYXBlIG5vZGUgPSBOb3RhdGlvbkZhY3RvcnkuZUlOU1RBTkNFLmNyZWF0ZVNoYXBlKCk7DQorCQlub2RlLnNldExheW91dENvbnN0cmFpbnQoTm90YXRpb25GYWN0b3J5LmVJTlNUQU5DRS5jcmVhdGVCb3VuZHMoKSk7DQorCQlub2RlLnNldFR5cGUoc2VtYW50aWNIaW50KTsNCisJCVZpZXdVdGlsLmluc2VydENoaWxkVmlldyhjb250YWluZXJWaWV3LCBub2RlLCBpbmRleCwgcGVyc2lzdGVkKTsNCisJCW5vZGUuc2V0RWxlbWVudChkb21haW5FbGVtZW50KTsNCisJCS8vIGluaXRpYWxpemVGcm9tUHJlZmVyZW5jZXMgDQorCQlmaW5hbCBJUHJlZmVyZW5jZVN0b3JlIHByZWZTdG9yZSA9IChJUHJlZmVyZW5jZVN0b3JlKXByZWZlcmVuY2VzSGludC5nZXRQcmVmZXJlbmNlU3RvcmUoKTsNCisJCVByZWZlcmVuY2VJbml0aWFsaXplckZvckVsZW1lbnRIZWxwZXIuaW5pdEZvbnRTdHlsZUZyb21QcmVmcyhub2RlLCBwcmVmU3RvcmUsICJQb3J0Iik7DQorCQlOb2RlIGxhYmVsNTEyNSA9IGNyZWF0ZUxhYmVsKG5vZGUsIE9QRVJBVElPTl9CT1JERVJfSVRFTV9MQUJFTCk7DQorCQlsYWJlbDUxMjUuc2V0TGF5b3V0Q29uc3RyYWludChOb3RhdGlvbkZhY3RvcnkuZUlOU1RBTkNFLmNyZWF0ZUxvY2F0aW9uKCkpOw0KKwkJTG9jYXRpb24gbG9jYXRpb241MTI1ID0gKExvY2F0aW9uKWxhYmVsNTEyNS5nZXRMYXlvdXRDb25zdHJhaW50KCk7DQorCQlsb2NhdGlvbjUxMjUuc2V0WCgyNSk7DQorCQlsb2NhdGlvbjUxMjUuc2V0WSgzKTsNCisJCU5vZGUgbGFiZWw2MDI5ID0gY3JlYXRlTGFiZWwobm9kZSwgT1BFUkFUSU9OX0JPUkRFUl9JVEVNX1NURVJFT1RZUEVfTEFCRUwpOw0KKwkJbGFiZWw2MDI5LnNldExheW91dENvbnN0cmFpbnQoTm90YXRpb25GYWN0b3J5LmVJTlNUQU5DRS5jcmVhdGVMb2NhdGlvbigpKTsNCisJCUxvY2F0aW9uIGxvY2F0aW9uNjAyOSA9IChMb2NhdGlvbilsYWJlbDYwMjkuZ2V0TGF5b3V0Q29uc3RyYWludCgpOw0KKwkJbG9jYXRpb242MDI5LnNldFgoMjUpOw0KKwkJbG9jYXRpb242MDI5LnNldFkoLTEwKTsNCisJCXJldHVybiBub2RlOw0KKwl9DQorCXByb3RlY3RlZCBOb2RlIGNyZWF0ZUxhYmVsKFZpZXcgb3duZXIsIFN0cmluZyBoaW50KSB7DQorCQlEZWNvcmF0aW9uTm9kZSBydiA9IE5vdGF0aW9uRmFjdG9yeS5lSU5TVEFOQ0UuY3JlYXRlRGVjb3JhdGlvbk5vZGUoKTsNCisJCXJ2LnNldFR5cGUoaGludCk7DQorCQlWaWV3VXRpbC5pbnNlcnRDaGlsZFZpZXcob3duZXIsIHJ2LCBWaWV3VXRpbC5BUFBFTkQsIHRydWUpOw0KKwkJcmV0dXJuIHJ2Ow0KKwl9DQorDQorfQ0KZGlmZiAtLWdpdCBhL2RpYWdyYW0vb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRpYWdyYW0uYmxvY2tkZWZpbml0aW9uL3NyYy9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvZGlhZ3JhbS9ibG9ja2RlZmluaXRpb24vZmFjdG9yeS9Qb3J0Vmlld0ZhY3RvcnkuamF2YSBiL2RpYWdyYW0vb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRpYWdyYW0uYmxvY2tkZWZpbml0aW9uL3NyYy9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvZGlhZ3JhbS9ibG9ja2RlZmluaXRpb24vZmFjdG9yeS9Qb3J0Vmlld0ZhY3RvcnkuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYTc4ZGUxCi0tLSAvZGV2L251bGwKKysrIGIvZGlhZ3JhbS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGlhZ3JhbS5ibG9ja2RlZmluaXRpb24vc3JjL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9kaWFncmFtL2Jsb2NrZGVmaW5pdGlvbi9mYWN0b3J5L1BvcnRWaWV3RmFjdG9yeS5qYXZhCkBAIC0wLDAgKzEsNjkgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyAqIENvcHlyaWdodCAoYykgMjAxNSBDRUEgTElTVC4NCisgKg0KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCisgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCisgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICoNCisgKiBDb250cmlidXRvcnM6DQorICogIEJlbm9pdCBNYWdnaSAoQ0VBIExJU1QpIGJlbm9pdC5tYWdnaUBjZWEuZnIgLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24NCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorcGFja2FnZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGlhZ3JhbS5ibG9ja2RlZmluaXRpb24uZmFjdG9yeTsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklBZGFwdGFibGU7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmVtZi5lY29yZS5FT2JqZWN0Ow0KK2ltcG9ydCBvcmcuZWNsaXBzZS5nbWYucnVudGltZS5kaWFncmFtLmNvcmUucHJlZmVyZW5jZXMuUHJlZmVyZW5jZXNIaW50Ow0KK2ltcG9ydCBvcmcuZWNsaXBzZS5nbWYucnVudGltZS5kaWFncmFtLmNvcmUudXRpbC5WaWV3VXRpbDsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZ21mLnJ1bnRpbWUuZGlhZ3JhbS5jb3JlLnZpZXcuZmFjdG9yaWVzLlZpZXdGYWN0b3J5Ow0KK2ltcG9ydCBvcmcuZWNsaXBzZS5nbWYucnVudGltZS5ub3RhdGlvbi5EZWNvcmF0aW9uTm9kZTsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZ21mLnJ1bnRpbWUubm90YXRpb24uTG9jYXRpb247DQoraW1wb3J0IG9yZy5lY2xpcHNlLmdtZi5ydW50aW1lLm5vdGF0aW9uLk5vZGU7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmdtZi5ydW50aW1lLm5vdGF0aW9uLk5vdGF0aW9uRmFjdG9yeTsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZ21mLnJ1bnRpbWUubm90YXRpb24uU2hhcGU7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmdtZi5ydW50aW1lLm5vdGF0aW9uLlZpZXc7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmpmYWNlLnByZWZlcmVuY2UuSVByZWZlcmVuY2VTdG9yZTsNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy51bWwuZGlhZ3JhbS5jb21tb24uaGVscGVyLlByZWZlcmVuY2VJbml0aWFsaXplckZvckVsZW1lbnRIZWxwZXI7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnVtbDIudW1sLk9wZXJhdGlvbjsNCisNCitwdWJsaWMgY2xhc3MgUG9ydFZpZXdGYWN0b3J5IGltcGxlbWVudHMgVmlld0ZhY3Rvcnkgew0KKw0KKwkvKioNCisJICogdmlzdWFsIElEIGZvciBzdGVyZW90eXBlIGxhYmVsIG9mIGJvcmRlciBpdGVtDQorCSAqLw0KKy8vCXByb3RlY3RlZCBzdGF0aWMgZmluYWwgU3RyaW5nIE9QRVJBVElPTl9CT1JERVJfSVRFTV9TVEVSRU9UWVBFX0xBQkVMID0gIk9wZXJhdGlvbl9Cb3JkZXJJdGVtX1N0ZXJlb3R5cGVfTGFiZWwiOw0KKwkvKioNCisJICogdmlzdWFsIElEIGZvciBuYW1lIGxhYmVsIG9mIGJvcmRlciBpdGVtDQorCSAqLw0KKwlwcm90ZWN0ZWQgc3RhdGljIGZpbmFsIFN0cmluZyBPUEVSQVRJT05fQk9SREVSX0lURU1fTEFCRUwgPSAiT3BlcmF0aW9uX0JvcmRlckl0ZW1fTGFiZWwiOw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIFZpZXcgY3JlYXRlVmlldyhJQWRhcHRhYmxlIHNlbWFudGljQWRhcHRlciwgVmlldyBjb250YWluZXJWaWV3LCBTdHJpbmcgc2VtYW50aWNIaW50LCBpbnQgaW5kZXgsCWJvb2xlYW4gcGVyc2lzdGVkLCBQcmVmZXJlbmNlc0hpbnQgcHJlZmVyZW5jZXNIaW50KSB7DQorCQlyZXR1cm4gY3JlYXRlUG9ydCgoRU9iamVjdClzZW1hbnRpY0FkYXB0ZXIuZ2V0QWRhcHRlcihFT2JqZWN0LmNsYXNzKSwgY29udGFpbmVyVmlldyxzZW1hbnRpY0hpbnQsIGluZGV4LCBwZXJzaXN0ZWQsIHByZWZlcmVuY2VzSGludCk7DQorCX0NCisJcHVibGljIE5vZGUgY3JlYXRlUG9ydChFT2JqZWN0IGRvbWFpbkVsZW1lbnQsIFZpZXcgY29udGFpbmVyVmlldyxTdHJpbmcgc2VtYW50aWNIaW50LCBpbnQgaW5kZXgsIGJvb2xlYW4gcGVyc2lzdGVkLCBQcmVmZXJlbmNlc0hpbnQgcHJlZmVyZW5jZXNIaW50KSB7DQorCQkNCisJCU9wZXJhdGlvbiBvOw0KKwkJDQorCQlTaGFwZSBub2RlID0gTm90YXRpb25GYWN0b3J5LmVJTlNUQU5DRS5jcmVhdGVTaGFwZSgpOw0KKwkJbm9kZS5zZXRMYXlvdXRDb25zdHJhaW50KE5vdGF0aW9uRmFjdG9yeS5lSU5TVEFOQ0UuY3JlYXRlQm91bmRzKCkpOw0KKwkJbm9kZS5zZXRUeXBlKHNlbWFudGljSGludCk7DQorCQlWaWV3VXRpbC5pbnNlcnRDaGlsZFZpZXcoY29udGFpbmVyVmlldywgbm9kZSwgaW5kZXgsIHBlcnNpc3RlZCk7DQorCQlub2RlLnNldEVsZW1lbnQoZG9tYWluRWxlbWVudCk7DQorCQkvLyBpbml0aWFsaXplRnJvbVByZWZlcmVuY2VzIA0KKwkJZmluYWwgSVByZWZlcmVuY2VTdG9yZSBwcmVmU3RvcmUgPSAoSVByZWZlcmVuY2VTdG9yZSlwcmVmZXJlbmNlc0hpbnQuZ2V0UHJlZmVyZW5jZVN0b3JlKCk7DQorCQlQcmVmZXJlbmNlSW5pdGlhbGl6ZXJGb3JFbGVtZW50SGVscGVyLmluaXRGb250U3R5bGVGcm9tUHJlZnMobm9kZSwgcHJlZlN0b3JlLCAiUG9ydCIpOw0KKwkJTm9kZSBsYWJlbDUxMjUgPSBjcmVhdGVMYWJlbChub2RlLCBPUEVSQVRJT05fQk9SREVSX0lURU1fTEFCRUwpOw0KKwkJbGFiZWw1MTI1LnNldExheW91dENvbnN0cmFpbnQoTm90YXRpb25GYWN0b3J5LmVJTlNUQU5DRS5jcmVhdGVMb2NhdGlvbigpKTsNCisJCUxvY2F0aW9uIGxvY2F0aW9uNTEyNSA9IChMb2NhdGlvbilsYWJlbDUxMjUuZ2V0TGF5b3V0Q29uc3RyYWludCgpOw0KKwkJbG9jYXRpb241MTI1LnNldFgoMjUpOw0KKwkJbG9jYXRpb241MTI1LnNldFkoMyk7DQorCQlyZXR1cm4gbm9kZTsNCisJfQ0KKwlwcm90ZWN0ZWQgTm9kZSBjcmVhdGVMYWJlbChWaWV3IG93bmVyLCBTdHJpbmcgaGludCkgew0KKwkJRGVjb3JhdGlvbk5vZGUgcnYgPSBOb3RhdGlvbkZhY3RvcnkuZUlOU1RBTkNFLmNyZWF0ZURlY29yYXRpb25Ob2RlKCk7DQorCQlydi5zZXRUeXBlKGhpbnQpOw0KKwkJVmlld1V0aWwuaW5zZXJ0Q2hpbGRWaWV3KG93bmVyLCBydiwgVmlld1V0aWwuQVBQRU5ELCB0cnVlKTsNCisJCXJldHVybiBydjsNCisJfQ0KKw0KK30NCmRpZmYgLS1naXQgYS9kaWFncmFtL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kaWFncmFtLmJsb2NrZGVmaW5pdGlvbi9zcmMvb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L2RpYWdyYW0vYmxvY2tkZWZpbml0aW9uL3Byb3ZpZGVyL1BhcnNlclByb3ZpZGVyLmphdmEgYi9kaWFncmFtL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kaWFncmFtLmJsb2NrZGVmaW5pdGlvbi9zcmMvb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L2RpYWdyYW0vYmxvY2tkZWZpbml0aW9uL3Byb3ZpZGVyL1BhcnNlclByb3ZpZGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2QxMmQ2OAotLS0gL2Rldi9udWxsCisrKyBiL2RpYWdyYW0vb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRpYWdyYW0uYmxvY2tkZWZpbml0aW9uL3NyYy9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvZGlhZ3JhbS9ibG9ja2RlZmluaXRpb24vcHJvdmlkZXIvUGFyc2VyUHJvdmlkZXIuamF2YQpAQCAtMCwwICsxLDg2IEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisgKiBDb3B5cmlnaHQgKGMpIDIwMTUgQ0VBIExJU1QuDQorICoNCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQorICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCisgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqDQorICogQ29udHJpYnV0b3JzOg0KKyAqDQorICoJCUNFQSBMSVNUIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uDQorICoNCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorcGFja2FnZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGlhZ3JhbS5ibG9ja2RlZmluaXRpb24ucHJvdmlkZXI7DQorDQoraW1wb3J0IGphdmEudXRpbC5IYXNoTWFwOw0KK2ltcG9ydCBqYXZhLnV0aWwuTWFwOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuSUFkYXB0YWJsZTsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZ21mLnJ1bnRpbWUuY29tbW9uLmNvcmUuc2VydmljZS5BYnN0cmFjdFByb3ZpZGVyOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5nbWYucnVudGltZS5jb21tb24uY29yZS5zZXJ2aWNlLklPcGVyYXRpb247DQoraW1wb3J0IG9yZy5lY2xpcHNlLmdtZi5ydW50aW1lLmNvbW1vbi51aS5zZXJ2aWNlcy5wYXJzZXIuR2V0UGFyc2VyT3BlcmF0aW9uOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5nbWYucnVudGltZS5jb21tb24udWkuc2VydmljZXMucGFyc2VyLklQYXJzZXI7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmdtZi5ydW50aW1lLmNvbW1vbi51aS5zZXJ2aWNlcy5wYXJzZXIuSVBhcnNlclByb3ZpZGVyOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5nbWYucnVudGltZS5ub3RhdGlvbi5EaWFncmFtOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5nbWYucnVudGltZS5ub3RhdGlvbi5WaWV3Ow0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnVtbC5kaWFncmFtLmNvbW1vbi5wYXJzZXIuQ29uc3RyYWludExhYmVsUGFyc2VyOw0KKw0KKy8qKg0KKyAqIFBhcnNlciBwcm92aWRlciBmb3IgbGFiZWxzIHVzZWQgYnkgdGhpcyBkaWFncmFtLg0KKyAqLw0KK3B1YmxpYyBjbGFzcyBQYXJzZXJQcm92aWRlciBleHRlbmRzIEFic3RyYWN0UHJvdmlkZXIgaW1wbGVtZW50cyBJUGFyc2VyUHJvdmlkZXIgew0KKw0KKwkvKiogbWFwIGZyb20gZ3JhcGhpY2FsIGhpbnQgdG8gcGFyc2VycyAqLw0KKwlwcml2YXRlIHN0YXRpYyBmaW5hbCBNYXA8U3RyaW5nLCBJUGFyc2VyPiBncmFwaGljYWxIaW50VG9QYXJzZXIgPSBuZXcgSGFzaE1hcDxTdHJpbmcsIElQYXJzZXI+KCk7DQorDQorCXN0YXRpYyB7DQorCQlncmFwaGljYWxIaW50VG9QYXJzZXIucHV0KCJDb25zdHJhaW50X0xhYmVsIiwgbmV3IENvbnN0cmFpbnRMYWJlbFBhcnNlcigpKTsNCisJCX0NCisNCisJLyoqDQorCSAqIHtAaW5oZXJpdERvY30NCisJICovDQorCXB1YmxpYyBib29sZWFuIHByb3ZpZGVzKElPcGVyYXRpb24gb3BlcmF0aW9uKSB7DQorCQlpZiAob3BlcmF0aW9uIGluc3RhbmNlb2YgR2V0UGFyc2VyT3BlcmF0aW9uKSB7DQorCQkJSUFkYXB0YWJsZSBoaW50ID0gKChHZXRQYXJzZXJPcGVyYXRpb24pIG9wZXJhdGlvbikuZ2V0SGludCgpOw0KKw0KKw0KKwkJCXJldHVybiBnZXRQYXJzZXIoaGludCkgIT0gbnVsbDsNCisJCX0NCisJCXJldHVybiBmYWxzZTsNCisJfQ0KKw0KKwkvKioNCisJICoge0Bpbmhlcml0RG9jfQ0KKwkgKi8NCisJcHVibGljIElQYXJzZXIgZ2V0UGFyc2VyKElBZGFwdGFibGUgaGludCkgew0KKwkJU3RyaW5nIHBhcnNlckhpbnQgPSAoU3RyaW5nKSBoaW50LmdldEFkYXB0ZXIoU3RyaW5nLmNsYXNzKTsNCisJCWlmIChwYXJzZXJIaW50ICE9IG51bGwpIHsNCisJCQlJUGFyc2VyIHBhcnNlciA9IGdyYXBoaWNhbEhpbnRUb1BhcnNlci5nZXQocGFyc2VySGludCk7DQorCQkJaWYgKHBhcnNlciAhPSBudWxsKSB7DQorCQkJCXJldHVybiBwYXJzZXI7DQorCQkJfQ0KKwkJfQ0KKw0KKwkJVmlldyB2aWV3ID0gKFZpZXcpIGhpbnQuZ2V0QWRhcHRlcihWaWV3LmNsYXNzKTsNCisJCWlmICh2aWV3ICE9IG51bGwpIHsNCisJCQlJUGFyc2VyIHBhcnNlciA9IGdyYXBoaWNhbEhpbnRUb1BhcnNlci5nZXQodmlldy5nZXRUeXBlKCkpOw0KKwkJCWlmIChwYXJzZXIgIT0gbnVsbCkgew0KKwkJCQlyZXR1cm4gcGFyc2VyOw0KKwkJCX0NCisJCX0NCisNCisJCXJldHVybiBudWxsOw0KKwl9DQorDQorCXByaXZhdGUgU3RyaW5nIGdldERpYWdyYW1UeXBlKElBZGFwdGFibGUgaGludCkgew0KKwkJRGlhZ3JhbSBkaWFncmFtID0gKERpYWdyYW0pIGhpbnQuZ2V0QWRhcHRlcihEaWFncmFtLmNsYXNzKTsNCisJCWlmIChkaWFncmFtICE9IG51bGwpIHsNCisJCQlyZXR1cm4gZGlhZ3JhbS5nZXRUeXBlKCk7DQorCQl9DQorDQorCQlyZXR1cm4gInVuZGVmaW5lZCI7DQorCX0NCisNCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGlhZ3JhbS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGlhZ3JhbS5jb21tb24udGVzdHMvLmNsYXNzcGF0aCBiL2RpYWdyYW0vb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRpYWdyYW0uY29tbW9uLnRlc3RzLy5jbGFzc3BhdGgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmQxYTQzMAotLS0gL2Rldi9udWxsCisrKyBiL2RpYWdyYW0vb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRpYWdyYW0uY29tbW9uLnRlc3RzLy5jbGFzc3BhdGgKQEAgLTAsMCArMSw3IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/Pg0KKzxjbGFzc3BhdGg+DQorCTxjbGFzc3BhdGhlbnRyeSBraW5kPSJjb24iIHBhdGg9Im9yZy5lY2xpcHNlLmpkdC5sYXVuY2hpbmcuSlJFX0NPTlRBSU5FUi9vcmcuZWNsaXBzZS5qZHQuaW50ZXJuYWwuZGVidWcudWkubGF1bmNoZXIuU3RhbmRhcmRWTVR5cGUvSjJTRS0xLjUiLz4NCisJPGNsYXNzcGF0aGVudHJ5IGtpbmQ9ImNvbiIgcGF0aD0ib3JnLmVjbGlwc2UucGRlLmNvcmUucmVxdWlyZWRQbHVnaW5zIi8+DQorCTxjbGFzc3BhdGhlbnRyeSBraW5kPSJzcmMiIHBhdGg9InNyYyIvPg0KKwk8Y2xhc3NwYXRoZW50cnkga2luZD0ib3V0cHV0IiBwYXRoPSJiaW4iLz4NCis8L2NsYXNzcGF0aD4NCmRpZmYgLS1naXQgYS9kaWFncmFtL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kaWFncmFtLmNvbW1vbi50ZXN0cy8ucHJvamVjdCBiL2RpYWdyYW0vb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRpYWdyYW0uY29tbW9uLnRlc3RzLy5wcm9qZWN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ4ZmM0MDIKLS0tIC9kZXYvbnVsbAorKysgYi9kaWFncmFtL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kaWFncmFtLmNvbW1vbi50ZXN0cy8ucHJvamVjdApAQCAtMCwwICsxLDI4IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/Pg0KKzxwcm9qZWN0RGVzY3JpcHRpb24+DQorCTxuYW1lPm9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kaWFncmFtLmNvbW1vbi50ZXN0czwvbmFtZT4NCisJPGNvbW1lbnQ+PC9jb21tZW50Pg0KKwk8cHJvamVjdHM+DQorCTwvcHJvamVjdHM+DQorCTxidWlsZFNwZWM+DQorCQk8YnVpbGRDb21tYW5kPg0KKwkJCTxuYW1lPm9yZy5lY2xpcHNlLmpkdC5jb3JlLmphdmFidWlsZGVyPC9uYW1lPg0KKwkJCTxhcmd1bWVudHM+DQorCQkJPC9hcmd1bWVudHM+DQorCQk8L2J1aWxkQ29tbWFuZD4NCisJCTxidWlsZENvbW1hbmQ+DQorCQkJPG5hbWU+b3JnLmVjbGlwc2UucGRlLk1hbmlmZXN0QnVpbGRlcjwvbmFtZT4NCisJCQk8YXJndW1lbnRzPg0KKwkJCTwvYXJndW1lbnRzPg0KKwkJPC9idWlsZENvbW1hbmQ+DQorCQk8YnVpbGRDb21tYW5kPg0KKwkJCTxuYW1lPm9yZy5lY2xpcHNlLnBkZS5TY2hlbWFCdWlsZGVyPC9uYW1lPg0KKwkJCTxhcmd1bWVudHM+DQorCQkJPC9hcmd1bWVudHM+DQorCQk8L2J1aWxkQ29tbWFuZD4NCisJPC9idWlsZFNwZWM+DQorCTxuYXR1cmVzPg0KKwkJPG5hdHVyZT5vcmcuZWNsaXBzZS5wZGUuUGx1Z2luTmF0dXJlPC9uYXR1cmU+DQorCQk8bmF0dXJlPm9yZy5lY2xpcHNlLmpkdC5jb3JlLmphdmFuYXR1cmU8L25hdHVyZT4NCisJPC9uYXR1cmVzPg0KKzwvcHJvamVjdERlc2NyaXB0aW9uPg0KZGlmZiAtLWdpdCBhL2RpYWdyYW0vb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRpYWdyYW0uY29tbW9uLnRlc3RzLy5zZXR0aW5ncy9vcmcuZWNsaXBzZS5qZHQuY29yZS5wcmVmcyBiL2RpYWdyYW0vb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRpYWdyYW0uY29tbW9uLnRlc3RzLy5zZXR0aW5ncy9vcmcuZWNsaXBzZS5qZHQuY29yZS5wcmVmcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NzU5OTQ3Ci0tLSAvZGV2L251bGwKKysrIGIvZGlhZ3JhbS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGlhZ3JhbS5jb21tb24udGVzdHMvLnNldHRpbmdzL29yZy5lY2xpcHNlLmpkdC5jb3JlLnByZWZzCkBAIC0wLDAgKzEsMjkxIEBACitlY2xpcHNlLnByZWZlcmVuY2VzLnZlcnNpb249MQ0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLmNvZGVnZW4uaW5saW5lSnNyQnl0ZWNvZGU9ZW5hYmxlZA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLmNvZGVnZW4udGFyZ2V0UGxhdGZvcm09MS41DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIuY29tcGxpYW5jZT0xLjUNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLmFzc2VydElkZW50aWZpZXI9ZXJyb3INCitvcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLmVudW1JZGVudGlmaWVyPWVycm9yDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIuc291cmNlPTEuNQ0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5hbGlnbl90eXBlX21lbWJlcnNfb25fY29sdW1ucz1mYWxzZQ0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5hbGlnbm1lbnRfZm9yX2FyZ3VtZW50c19pbl9hbGxvY2F0aW9uX2V4cHJlc3Npb249MTYNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuYWxpZ25tZW50X2Zvcl9hcmd1bWVudHNfaW5fYW5ub3RhdGlvbj0wDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmFsaWdubWVudF9mb3JfYXJndW1lbnRzX2luX2VudW1fY29uc3RhbnQ9MTYNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuYWxpZ25tZW50X2Zvcl9hcmd1bWVudHNfaW5fZXhwbGljaXRfY29uc3RydWN0b3JfY2FsbD0xNg0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5hbGlnbm1lbnRfZm9yX2FyZ3VtZW50c19pbl9tZXRob2RfaW52b2NhdGlvbj0xNg0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5hbGlnbm1lbnRfZm9yX2FyZ3VtZW50c19pbl9xdWFsaWZpZWRfYWxsb2NhdGlvbl9leHByZXNzaW9uPTE2DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmFsaWdubWVudF9mb3JfYXNzaWdubWVudD0wDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmFsaWdubWVudF9mb3JfYmluYXJ5X2V4cHJlc3Npb249MTYNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuYWxpZ25tZW50X2Zvcl9jb21wYWN0X2lmPTE2DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmFsaWdubWVudF9mb3JfY29uZGl0aW9uYWxfZXhwcmVzc2lvbj04MA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5hbGlnbm1lbnRfZm9yX2VudW1fY29uc3RhbnRzPTANCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuYWxpZ25tZW50X2Zvcl9leHByZXNzaW9uc19pbl9hcnJheV9pbml0aWFsaXplcj0xNg0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5hbGlnbm1lbnRfZm9yX21ldGhvZF9kZWNsYXJhdGlvbj0wDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmFsaWdubWVudF9mb3JfbXVsdGlwbGVfZmllbGRzPTE2DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmFsaWdubWVudF9mb3JfcGFyYW1ldGVyc19pbl9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbj0xNg0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5hbGlnbm1lbnRfZm9yX3BhcmFtZXRlcnNfaW5fbWV0aG9kX2RlY2xhcmF0aW9uPTE2DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmFsaWdubWVudF9mb3JfcmVzb3VyY2VzX2luX3RyeT04MA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5hbGlnbm1lbnRfZm9yX3NlbGVjdG9yX2luX21ldGhvZF9pbnZvY2F0aW9uPTE2DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmFsaWdubWVudF9mb3Jfc3VwZXJjbGFzc19pbl90eXBlX2RlY2xhcmF0aW9uPTE2DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmFsaWdubWVudF9mb3Jfc3VwZXJpbnRlcmZhY2VzX2luX2VudW1fZGVjbGFyYXRpb249MTYNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuYWxpZ25tZW50X2Zvcl9zdXBlcmludGVyZmFjZXNfaW5fdHlwZV9kZWNsYXJhdGlvbj0xNg0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5hbGlnbm1lbnRfZm9yX3Rocm93c19jbGF1c2VfaW5fY29uc3RydWN0b3JfZGVjbGFyYXRpb249MTYNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuYWxpZ25tZW50X2Zvcl90aHJvd3NfY2xhdXNlX2luX21ldGhvZF9kZWNsYXJhdGlvbj0xNg0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5hbGlnbm1lbnRfZm9yX3VuaW9uX3R5cGVfaW5fbXVsdGljYXRjaD0xNg0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5ibGFua19saW5lc19hZnRlcl9pbXBvcnRzPTENCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuYmxhbmtfbGluZXNfYWZ0ZXJfcGFja2FnZT0xDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmJsYW5rX2xpbmVzX2JlZm9yZV9maWVsZD0wDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmJsYW5rX2xpbmVzX2JlZm9yZV9maXJzdF9jbGFzc19ib2R5X2RlY2xhcmF0aW9uPTANCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuYmxhbmtfbGluZXNfYmVmb3JlX2ltcG9ydHM9MQ0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5ibGFua19saW5lc19iZWZvcmVfbWVtYmVyX3R5cGU9MQ0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5ibGFua19saW5lc19iZWZvcmVfbWV0aG9kPTENCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuYmxhbmtfbGluZXNfYmVmb3JlX25ld19jaHVuaz0xDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmJsYW5rX2xpbmVzX2JlZm9yZV9wYWNrYWdlPTANCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuYmxhbmtfbGluZXNfYmV0d2Vlbl9pbXBvcnRfZ3JvdXBzPTENCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuYmxhbmtfbGluZXNfYmV0d2Vlbl90eXBlX2RlY2xhcmF0aW9ucz0xDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmJyYWNlX3Bvc2l0aW9uX2Zvcl9hbm5vdGF0aW9uX3R5cGVfZGVjbGFyYXRpb249ZW5kX29mX2xpbmUNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuYnJhY2VfcG9zaXRpb25fZm9yX2Fub255bW91c190eXBlX2RlY2xhcmF0aW9uPWVuZF9vZl9saW5lDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmJyYWNlX3Bvc2l0aW9uX2Zvcl9hcnJheV9pbml0aWFsaXplcj1lbmRfb2ZfbGluZQ0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5icmFjZV9wb3NpdGlvbl9mb3JfYmxvY2s9ZW5kX29mX2xpbmUNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuYnJhY2VfcG9zaXRpb25fZm9yX2Jsb2NrX2luX2Nhc2U9ZW5kX29mX2xpbmUNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuYnJhY2VfcG9zaXRpb25fZm9yX2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uPWVuZF9vZl9saW5lDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmJyYWNlX3Bvc2l0aW9uX2Zvcl9lbnVtX2NvbnN0YW50PWVuZF9vZl9saW5lDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmJyYWNlX3Bvc2l0aW9uX2Zvcl9lbnVtX2RlY2xhcmF0aW9uPWVuZF9vZl9saW5lDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmJyYWNlX3Bvc2l0aW9uX2Zvcl9sYW1iZGFfYm9keT1lbmRfb2ZfbGluZQ0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5icmFjZV9wb3NpdGlvbl9mb3JfbWV0aG9kX2RlY2xhcmF0aW9uPWVuZF9vZl9saW5lDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmJyYWNlX3Bvc2l0aW9uX2Zvcl9zd2l0Y2g9ZW5kX29mX2xpbmUNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuYnJhY2VfcG9zaXRpb25fZm9yX3R5cGVfZGVjbGFyYXRpb249ZW5kX29mX2xpbmUNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuY29tbWVudC5jbGVhcl9ibGFua19saW5lc19pbl9ibG9ja19jb21tZW50PWZhbHNlDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmNvbW1lbnQuY2xlYXJfYmxhbmtfbGluZXNfaW5famF2YWRvY19jb21tZW50PWZhbHNlDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmNvbW1lbnQuZm9ybWF0X2Jsb2NrX2NvbW1lbnRzPXRydWUNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuY29tbWVudC5mb3JtYXRfaGVhZGVyPWZhbHNlDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmNvbW1lbnQuZm9ybWF0X2h0bWw9dHJ1ZQ0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5jb21tZW50LmZvcm1hdF9qYXZhZG9jX2NvbW1lbnRzPXRydWUNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuY29tbWVudC5mb3JtYXRfbGluZV9jb21tZW50cz10cnVlDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmNvbW1lbnQuZm9ybWF0X3NvdXJjZV9jb2RlPXRydWUNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuY29tbWVudC5pbmRlbnRfcGFyYW1ldGVyX2Rlc2NyaXB0aW9uPXRydWUNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuY29tbWVudC5pbmRlbnRfcm9vdF90YWdzPXRydWUNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuY29tbWVudC5pbnNlcnRfbmV3X2xpbmVfYmVmb3JlX3Jvb3RfdGFncz1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuY29tbWVudC5pbnNlcnRfbmV3X2xpbmVfZm9yX3BhcmFtZXRlcj1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuY29tbWVudC5saW5lX2xlbmd0aD0yNjANCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuY29tbWVudC5uZXdfbGluZXNfYXRfYmxvY2tfYm91bmRhcmllcz10cnVlDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmNvbW1lbnQubmV3X2xpbmVzX2F0X2phdmFkb2NfYm91bmRhcmllcz10cnVlDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmNvbW1lbnQucHJlc2VydmVfd2hpdGVfc3BhY2VfYmV0d2Vlbl9jb2RlX2FuZF9saW5lX2NvbW1lbnRzPWZhbHNlDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmNvbXBhY3RfZWxzZV9pZj10cnVlDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmNvbnRpbnVhdGlvbl9pbmRlbnRhdGlvbj0yDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmNvbnRpbnVhdGlvbl9pbmRlbnRhdGlvbl9mb3JfYXJyYXlfaW5pdGlhbGl6ZXI9Mg0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5kaXNhYmxpbmdfdGFnPUBmb3JtYXR0ZXJcOm9mZg0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5lbmFibGluZ190YWc9QGZvcm1hdHRlclw6b24NCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuZm9ybWF0X2d1YXJkaWFuX2NsYXVzZV9vbl9vbmVfbGluZT1mYWxzZQ0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5mb3JtYXRfbGluZV9jb21tZW50X3N0YXJ0aW5nX29uX2ZpcnN0X2NvbHVtbj10cnVlDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluZGVudF9ib2R5X2RlY2xhcmF0aW9uc19jb21wYXJlX3RvX2Fubm90YXRpb25fZGVjbGFyYXRpb25faGVhZGVyPXRydWUNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5kZW50X2JvZHlfZGVjbGFyYXRpb25zX2NvbXBhcmVfdG9fZW51bV9jb25zdGFudF9oZWFkZXI9dHJ1ZQ0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbmRlbnRfYm9keV9kZWNsYXJhdGlvbnNfY29tcGFyZV90b19lbnVtX2RlY2xhcmF0aW9uX2hlYWRlcj10cnVlDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluZGVudF9ib2R5X2RlY2xhcmF0aW9uc19jb21wYXJlX3RvX3R5cGVfaGVhZGVyPXRydWUNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5kZW50X2JyZWFrc19jb21wYXJlX3RvX2Nhc2VzPXRydWUNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5kZW50X2VtcHR5X2xpbmVzPWZhbHNlDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluZGVudF9zdGF0ZW1lbnRzX2NvbXBhcmVfdG9fYmxvY2s9dHJ1ZQ0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbmRlbnRfc3RhdGVtZW50c19jb21wYXJlX3RvX2JvZHk9dHJ1ZQ0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbmRlbnRfc3dpdGNoc3RhdGVtZW50c19jb21wYXJlX3RvX2Nhc2VzPXRydWUNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5kZW50X3N3aXRjaHN0YXRlbWVudHNfY29tcGFyZV90b19zd2l0Y2g9ZmFsc2UNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5kZW50YXRpb24uc2l6ZT00DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9uZXdfbGluZV9hZnRlcl9hbm5vdGF0aW9uX29uX2ZpZWxkPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfbmV3X2xpbmVfYWZ0ZXJfYW5ub3RhdGlvbl9vbl9sb2NhbF92YXJpYWJsZT1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X25ld19saW5lX2FmdGVyX2Fubm90YXRpb25fb25fbWV0aG9kPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfbmV3X2xpbmVfYWZ0ZXJfYW5ub3RhdGlvbl9vbl9wYWNrYWdlPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfbmV3X2xpbmVfYWZ0ZXJfYW5ub3RhdGlvbl9vbl9wYXJhbWV0ZXI9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfbmV3X2xpbmVfYWZ0ZXJfYW5ub3RhdGlvbl9vbl90eXBlPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfbmV3X2xpbmVfYWZ0ZXJfbGFiZWw9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfbmV3X2xpbmVfYWZ0ZXJfb3BlbmluZ19icmFjZV9pbl9hcnJheV9pbml0aWFsaXplcj1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9uZXdfbGluZV9hZnRlcl90eXBlX2Fubm90YXRpb249ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfbmV3X2xpbmVfYXRfZW5kX29mX2ZpbGVfaWZfbWlzc2luZz1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9uZXdfbGluZV9iZWZvcmVfY2F0Y2hfaW5fdHJ5X3N0YXRlbWVudD1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9uZXdfbGluZV9iZWZvcmVfY2xvc2luZ19icmFjZV9pbl9hcnJheV9pbml0aWFsaXplcj1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9uZXdfbGluZV9iZWZvcmVfZWxzZV9pbl9pZl9zdGF0ZW1lbnQ9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfbmV3X2xpbmVfYmVmb3JlX2ZpbmFsbHlfaW5fdHJ5X3N0YXRlbWVudD1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9uZXdfbGluZV9iZWZvcmVfd2hpbGVfaW5fZG9fc3RhdGVtZW50PWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X25ld19saW5lX2luX2VtcHR5X2Fubm90YXRpb25fZGVjbGFyYXRpb249aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9uZXdfbGluZV9pbl9lbXB0eV9hbm9ueW1vdXNfdHlwZV9kZWNsYXJhdGlvbj1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X25ld19saW5lX2luX2VtcHR5X2Jsb2NrPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfbmV3X2xpbmVfaW5fZW1wdHlfZW51bV9jb25zdGFudD1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X25ld19saW5lX2luX2VtcHR5X2VudW1fZGVjbGFyYXRpb249aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9uZXdfbGluZV9pbl9lbXB0eV9tZXRob2RfYm9keT1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X25ld19saW5lX2luX2VtcHR5X3R5cGVfZGVjbGFyYXRpb249aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9hbmRfaW5fdHlwZV9wYXJhbWV0ZXI9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9hc3NpZ25tZW50X29wZXJhdG9yPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfYXRfaW5fYW5ub3RhdGlvbj1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9hdF9pbl9hbm5vdGF0aW9uX3R5cGVfZGVjbGFyYXRpb249ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfYmluYXJ5X29wZXJhdG9yPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfY2xvc2luZ19hbmdsZV9icmFja2V0X2luX3R5cGVfYXJndW1lbnRzPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfY2xvc2luZ19hbmdsZV9icmFja2V0X2luX3R5cGVfcGFyYW1ldGVycz1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX2Nsb3NpbmdfYnJhY2VfaW5fYmxvY2s9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9jbG9zaW5nX3BhcmVuX2luX2Nhc3Q9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9jb2xvbl9pbl9hc3NlcnQ9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9jb2xvbl9pbl9jYXNlPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfY29sb25faW5fY29uZGl0aW9uYWw9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9jb2xvbl9pbl9mb3I9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9jb2xvbl9pbl9sYWJlbGVkX3N0YXRlbWVudD1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX2NvbW1hX2luX2FsbG9jYXRpb25fZXhwcmVzc2lvbj1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX2NvbW1hX2luX2Fubm90YXRpb249aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9jb21tYV9pbl9hcnJheV9pbml0aWFsaXplcj1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX2NvbW1hX2luX2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uX3BhcmFtZXRlcnM9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9jb21tYV9pbl9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbl90aHJvd3M9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9jb21tYV9pbl9lbnVtX2NvbnN0YW50X2FyZ3VtZW50cz1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX2NvbW1hX2luX2VudW1fZGVjbGFyYXRpb25zPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfY29tbWFfaW5fZXhwbGljaXRjb25zdHJ1Y3RvcmNhbGxfYXJndW1lbnRzPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfY29tbWFfaW5fZm9yX2luY3JlbWVudHM9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9jb21tYV9pbl9mb3JfaW5pdHM9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9jb21tYV9pbl9tZXRob2RfZGVjbGFyYXRpb25fcGFyYW1ldGVycz1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX2NvbW1hX2luX21ldGhvZF9kZWNsYXJhdGlvbl90aHJvd3M9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9jb21tYV9pbl9tZXRob2RfaW52b2NhdGlvbl9hcmd1bWVudHM9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9jb21tYV9pbl9tdWx0aXBsZV9maWVsZF9kZWNsYXJhdGlvbnM9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9jb21tYV9pbl9tdWx0aXBsZV9sb2NhbF9kZWNsYXJhdGlvbnM9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9jb21tYV9pbl9wYXJhbWV0ZXJpemVkX3R5cGVfcmVmZXJlbmNlPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfY29tbWFfaW5fc3VwZXJpbnRlcmZhY2VzPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfY29tbWFfaW5fdHlwZV9hcmd1bWVudHM9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9jb21tYV9pbl90eXBlX3BhcmFtZXRlcnM9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9lbGxpcHNpcz1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX2xhbWJkYV9hcnJvdz1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX29wZW5pbmdfYW5nbGVfYnJhY2tldF9pbl9wYXJhbWV0ZXJpemVkX3R5cGVfcmVmZXJlbmNlPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX29wZW5pbmdfYW5nbGVfYnJhY2tldF9pbl90eXBlX2FyZ3VtZW50cz1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9vcGVuaW5nX2FuZ2xlX2JyYWNrZXRfaW5fdHlwZV9wYXJhbWV0ZXJzPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX29wZW5pbmdfYnJhY2VfaW5fYXJyYXlfaW5pdGlhbGl6ZXI9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9vcGVuaW5nX2JyYWNrZXRfaW5fYXJyYXlfYWxsb2NhdGlvbl9leHByZXNzaW9uPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX29wZW5pbmdfYnJhY2tldF9pbl9hcnJheV9yZWZlcmVuY2U9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfb3BlbmluZ19wYXJlbl9pbl9hbm5vdGF0aW9uPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX29wZW5pbmdfcGFyZW5faW5fY2FzdD1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9vcGVuaW5nX3BhcmVuX2luX2NhdGNoPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX29wZW5pbmdfcGFyZW5faW5fY29uc3RydWN0b3JfZGVjbGFyYXRpb249ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfb3BlbmluZ19wYXJlbl9pbl9lbnVtX2NvbnN0YW50PWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX29wZW5pbmdfcGFyZW5faW5fZm9yPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX29wZW5pbmdfcGFyZW5faW5faWY9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfb3BlbmluZ19wYXJlbl9pbl9tZXRob2RfZGVjbGFyYXRpb249ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfb3BlbmluZ19wYXJlbl9pbl9tZXRob2RfaW52b2NhdGlvbj1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9vcGVuaW5nX3BhcmVuX2luX3BhcmVudGhlc2l6ZWRfZXhwcmVzc2lvbj1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9vcGVuaW5nX3BhcmVuX2luX3N3aXRjaD1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9vcGVuaW5nX3BhcmVuX2luX3N5bmNocm9uaXplZD1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9vcGVuaW5nX3BhcmVuX2luX3RyeT1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9vcGVuaW5nX3BhcmVuX2luX3doaWxlPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX3Bvc3RmaXhfb3BlcmF0b3I9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfcHJlZml4X29wZXJhdG9yPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX3F1ZXN0aW9uX2luX2NvbmRpdGlvbmFsPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfcXVlc3Rpb25faW5fd2lsZGNhcmQ9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfc2VtaWNvbG9uX2luX2Zvcj1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX3NlbWljb2xvbl9pbl90cnlfcmVzb3VyY2VzPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfdW5hcnlfb3BlcmF0b3I9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2FuZF9pbl90eXBlX3BhcmFtZXRlcj1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9hc3NpZ25tZW50X29wZXJhdG9yPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2F0X2luX2Fubm90YXRpb25fdHlwZV9kZWNsYXJhdGlvbj1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9iaW5hcnlfb3BlcmF0b3I9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfY2xvc2luZ19hbmdsZV9icmFja2V0X2luX3BhcmFtZXRlcml6ZWRfdHlwZV9yZWZlcmVuY2U9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2Nsb3NpbmdfYW5nbGVfYnJhY2tldF9pbl90eXBlX2FyZ3VtZW50cz1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfY2xvc2luZ19hbmdsZV9icmFja2V0X2luX3R5cGVfcGFyYW1ldGVycz1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfY2xvc2luZ19icmFjZV9pbl9hcnJheV9pbml0aWFsaXplcj1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9jbG9zaW5nX2JyYWNrZXRfaW5fYXJyYXlfYWxsb2NhdGlvbl9leHByZXNzaW9uPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9jbG9zaW5nX2JyYWNrZXRfaW5fYXJyYXlfcmVmZXJlbmNlPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9jbG9zaW5nX3BhcmVuX2luX2Fubm90YXRpb249ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2Nsb3NpbmdfcGFyZW5faW5fY2FzdD1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfY2xvc2luZ19wYXJlbl9pbl9jYXRjaD1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfY2xvc2luZ19wYXJlbl9pbl9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbj1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfY2xvc2luZ19wYXJlbl9pbl9lbnVtX2NvbnN0YW50PWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9jbG9zaW5nX3BhcmVuX2luX2Zvcj1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfY2xvc2luZ19wYXJlbl9pbl9pZj1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfY2xvc2luZ19wYXJlbl9pbl9tZXRob2RfZGVjbGFyYXRpb249ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2Nsb3NpbmdfcGFyZW5faW5fbWV0aG9kX2ludm9jYXRpb249ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2Nsb3NpbmdfcGFyZW5faW5fcGFyZW50aGVzaXplZF9leHByZXNzaW9uPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9jbG9zaW5nX3BhcmVuX2luX3N3aXRjaD1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfY2xvc2luZ19wYXJlbl9pbl9zeW5jaHJvbml6ZWQ9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2Nsb3NpbmdfcGFyZW5faW5fdHJ5PWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9jbG9zaW5nX3BhcmVuX2luX3doaWxlPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9jb2xvbl9pbl9hc3NlcnQ9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfY29sb25faW5fY2FzZT1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfY29sb25faW5fY29uZGl0aW9uYWw9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfY29sb25faW5fZGVmYXVsdD1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfY29sb25faW5fZm9yPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2NvbG9uX2luX2xhYmVsZWRfc3RhdGVtZW50PWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9jb21tYV9pbl9hbGxvY2F0aW9uX2V4cHJlc3Npb249ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2NvbW1hX2luX2Fubm90YXRpb249ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2NvbW1hX2luX2FycmF5X2luaXRpYWxpemVyPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9jb21tYV9pbl9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbl9wYXJhbWV0ZXJzPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9jb21tYV9pbl9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbl90aHJvd3M9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2NvbW1hX2luX2VudW1fY29uc3RhbnRfYXJndW1lbnRzPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9jb21tYV9pbl9lbnVtX2RlY2xhcmF0aW9ucz1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfY29tbWFfaW5fZXhwbGljaXRjb25zdHJ1Y3RvcmNhbGxfYXJndW1lbnRzPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9jb21tYV9pbl9mb3JfaW5jcmVtZW50cz1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfY29tbWFfaW5fZm9yX2luaXRzPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9jb21tYV9pbl9tZXRob2RfZGVjbGFyYXRpb25fcGFyYW1ldGVycz1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfY29tbWFfaW5fbWV0aG9kX2RlY2xhcmF0aW9uX3Rocm93cz1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfY29tbWFfaW5fbWV0aG9kX2ludm9jYXRpb25fYXJndW1lbnRzPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9jb21tYV9pbl9tdWx0aXBsZV9maWVsZF9kZWNsYXJhdGlvbnM9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2NvbW1hX2luX211bHRpcGxlX2xvY2FsX2RlY2xhcmF0aW9ucz1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfY29tbWFfaW5fcGFyYW1ldGVyaXplZF90eXBlX3JlZmVyZW5jZT1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfY29tbWFfaW5fc3VwZXJpbnRlcmZhY2VzPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9jb21tYV9pbl90eXBlX2FyZ3VtZW50cz1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfY29tbWFfaW5fdHlwZV9wYXJhbWV0ZXJzPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9lbGxpcHNpcz1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfbGFtYmRhX2Fycm93PWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX29wZW5pbmdfYW5nbGVfYnJhY2tldF9pbl9wYXJhbWV0ZXJpemVkX3R5cGVfcmVmZXJlbmNlPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9vcGVuaW5nX2FuZ2xlX2JyYWNrZXRfaW5fdHlwZV9hcmd1bWVudHM9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX29wZW5pbmdfYW5nbGVfYnJhY2tldF9pbl90eXBlX3BhcmFtZXRlcnM9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX29wZW5pbmdfYnJhY2VfaW5fYW5ub3RhdGlvbl90eXBlX2RlY2xhcmF0aW9uPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX29wZW5pbmdfYnJhY2VfaW5fYW5vbnltb3VzX3R5cGVfZGVjbGFyYXRpb249aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfb3BlbmluZ19icmFjZV9pbl9hcnJheV9pbml0aWFsaXplcj1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9vcGVuaW5nX2JyYWNlX2luX2Jsb2NrPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX29wZW5pbmdfYnJhY2VfaW5fY29uc3RydWN0b3JfZGVjbGFyYXRpb249aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfb3BlbmluZ19icmFjZV9pbl9lbnVtX2NvbnN0YW50PWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX29wZW5pbmdfYnJhY2VfaW5fZW51bV9kZWNsYXJhdGlvbj1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9vcGVuaW5nX2JyYWNlX2luX21ldGhvZF9kZWNsYXJhdGlvbj1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9vcGVuaW5nX2JyYWNlX2luX3N3aXRjaD1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9vcGVuaW5nX2JyYWNlX2luX3R5cGVfZGVjbGFyYXRpb249aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfb3BlbmluZ19icmFja2V0X2luX2FycmF5X2FsbG9jYXRpb25fZXhwcmVzc2lvbj1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfb3BlbmluZ19icmFja2V0X2luX2FycmF5X3JlZmVyZW5jZT1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfb3BlbmluZ19icmFja2V0X2luX2FycmF5X3R5cGVfcmVmZXJlbmNlPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9vcGVuaW5nX3BhcmVuX2luX2Fubm90YXRpb249ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX29wZW5pbmdfcGFyZW5faW5fYW5ub3RhdGlvbl90eXBlX21lbWJlcl9kZWNsYXJhdGlvbj1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfb3BlbmluZ19wYXJlbl9pbl9jYXRjaD1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9vcGVuaW5nX3BhcmVuX2luX2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9vcGVuaW5nX3BhcmVuX2luX2VudW1fY29uc3RhbnQ9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX29wZW5pbmdfcGFyZW5faW5fZm9yPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX29wZW5pbmdfcGFyZW5faW5faWY9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfb3BlbmluZ19wYXJlbl9pbl9tZXRob2RfZGVjbGFyYXRpb249ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX29wZW5pbmdfcGFyZW5faW5fbWV0aG9kX2ludm9jYXRpb249ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX29wZW5pbmdfcGFyZW5faW5fcGFyZW50aGVzaXplZF9leHByZXNzaW9uPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9vcGVuaW5nX3BhcmVuX2luX3N3aXRjaD1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9vcGVuaW5nX3BhcmVuX2luX3N5bmNocm9uaXplZD1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9vcGVuaW5nX3BhcmVuX2luX3RyeT1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9vcGVuaW5nX3BhcmVuX2luX3doaWxlPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX3BhcmVudGhlc2l6ZWRfZXhwcmVzc2lvbl9pbl9yZXR1cm49aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfcGFyZW50aGVzaXplZF9leHByZXNzaW9uX2luX3Rocm93PWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX3Bvc3RmaXhfb3BlcmF0b3I9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX3ByZWZpeF9vcGVyYXRvcj1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfcXVlc3Rpb25faW5fY29uZGl0aW9uYWw9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfcXVlc3Rpb25faW5fd2lsZGNhcmQ9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX3NlbWljb2xvbj1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfc2VtaWNvbG9uX2luX2Zvcj1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfc2VtaWNvbG9uX2luX3RyeV9yZXNvdXJjZXM9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX3VuYXJ5X29wZXJhdG9yPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JldHdlZW5fYnJhY2tldHNfaW5fYXJyYXlfdHlwZV9yZWZlcmVuY2U9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmV0d2Vlbl9lbXB0eV9icmFjZXNfaW5fYXJyYXlfaW5pdGlhbGl6ZXI9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmV0d2Vlbl9lbXB0eV9icmFja2V0c19pbl9hcnJheV9hbGxvY2F0aW9uX2V4cHJlc3Npb249ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmV0d2Vlbl9lbXB0eV9wYXJlbnNfaW5fYW5ub3RhdGlvbl90eXBlX21lbWJlcl9kZWNsYXJhdGlvbj1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZXR3ZWVuX2VtcHR5X3BhcmVuc19pbl9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbj1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZXR3ZWVuX2VtcHR5X3BhcmVuc19pbl9lbnVtX2NvbnN0YW50PWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JldHdlZW5fZW1wdHlfcGFyZW5zX2luX21ldGhvZF9kZWNsYXJhdGlvbj1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZXR3ZWVuX2VtcHR5X3BhcmVuc19pbl9tZXRob2RfaW52b2NhdGlvbj1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmpvaW5fbGluZXNfaW5fY29tbWVudHM9ZmFsc2UNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuam9pbl93cmFwcGVkX2xpbmVzPWZhbHNlDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmtlZXBfZWxzZV9zdGF0ZW1lbnRfb25fc2FtZV9saW5lPWZhbHNlDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmtlZXBfZW1wdHlfYXJyYXlfaW5pdGlhbGl6ZXJfb25fb25lX2xpbmU9ZmFsc2UNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIua2VlcF9pbXBsZV9pZl9vbl9vbmVfbGluZT1mYWxzZQ0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5rZWVwX3RoZW5fc3RhdGVtZW50X29uX3NhbWVfbGluZT1mYWxzZQ0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5saW5lU3BsaXQ9MjYwDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLm5ldmVyX2luZGVudF9ibG9ja19jb21tZW50c19vbl9maXJzdF9jb2x1bW49ZmFsc2UNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIubmV2ZXJfaW5kZW50X2xpbmVfY29tbWVudHNfb25fZmlyc3RfY29sdW1uPWZhbHNlDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLm51bWJlcl9vZl9ibGFua19saW5lc19hdF9iZWdpbm5pbmdfb2ZfbWV0aG9kX2JvZHk9MA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5udW1iZXJfb2ZfZW1wdHlfbGluZXNfdG9fcHJlc2VydmU9NQ0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5wdXRfZW1wdHlfc3RhdGVtZW50X29uX25ld19saW5lPXRydWUNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIudGFidWxhdGlvbi5jaGFyPXRhYg0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci50YWJ1bGF0aW9uLnNpemU9NA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci51c2Vfb25fb2ZmX3RhZ3M9ZmFsc2UNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIudXNlX3RhYnNfb25seV9mb3JfbGVhZGluZ19pbmRlbnRhdGlvbnM9ZmFsc2UNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIud3JhcF9iZWZvcmVfYmluYXJ5X29wZXJhdG9yPXRydWUNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIud3JhcF9iZWZvcmVfb3Jfb3BlcmF0b3JfbXVsdGljYXRjaD10cnVlDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLndyYXBfb3V0ZXJfZXhwcmVzc2lvbnNfd2hlbl9uZXN0ZWQ9dHJ1ZQ0KZGlmZiAtLWdpdCBhL2RpYWdyYW0vb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRpYWdyYW0uY29tbW9uLnRlc3RzLy5zZXR0aW5ncy9vcmcuZWNsaXBzZS5qZHQudWkucHJlZnMgYi9kaWFncmFtL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kaWFncmFtLmNvbW1vbi50ZXN0cy8uc2V0dGluZ3Mvb3JnLmVjbGlwc2UuamR0LnVpLnByZWZzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAxZDcwNGIKLS0tIC9kZXYvbnVsbAorKysgYi9kaWFncmFtL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kaWFncmFtLmNvbW1vbi50ZXN0cy8uc2V0dGluZ3Mvb3JnLmVjbGlwc2UuamR0LnVpLnByZWZzCkBAIC0wLDAgKzEsNjggQEAKK2NsZWFudXAuYWRkX2RlZmF1bHRfc2VyaWFsX3ZlcnNpb25faWQ9dHJ1ZQ0KK2NsZWFudXAuYWRkX2dlbmVyYXRlZF9zZXJpYWxfdmVyc2lvbl9pZD1mYWxzZQ0KK2NsZWFudXAuYWRkX21pc3NpbmdfYW5ub3RhdGlvbnM9dHJ1ZQ0KK2NsZWFudXAuYWRkX21pc3NpbmdfZGVwcmVjYXRlZF9hbm5vdGF0aW9ucz10cnVlDQorY2xlYW51cC5hZGRfbWlzc2luZ19tZXRob2RzPWZhbHNlDQorY2xlYW51cC5hZGRfbWlzc2luZ19ubHNfdGFncz1mYWxzZQ0KK2NsZWFudXAuYWRkX21pc3Npbmdfb3ZlcnJpZGVfYW5ub3RhdGlvbnM9dHJ1ZQ0KK2NsZWFudXAuYWRkX21pc3Npbmdfb3ZlcnJpZGVfYW5ub3RhdGlvbnNfaW50ZXJmYWNlX21ldGhvZHM9dHJ1ZQ0KK2NsZWFudXAuYWRkX3NlcmlhbF92ZXJzaW9uX2lkPWZhbHNlDQorY2xlYW51cC5hbHdheXNfdXNlX2Jsb2Nrcz10cnVlDQorY2xlYW51cC5hbHdheXNfdXNlX3BhcmVudGhlc2VzX2luX2V4cHJlc3Npb25zPWZhbHNlDQorY2xlYW51cC5hbHdheXNfdXNlX3RoaXNfZm9yX25vbl9zdGF0aWNfZmllbGRfYWNjZXNzPWZhbHNlDQorY2xlYW51cC5hbHdheXNfdXNlX3RoaXNfZm9yX25vbl9zdGF0aWNfbWV0aG9kX2FjY2Vzcz1mYWxzZQ0KK2NsZWFudXAuY29udmVydF9mdW5jdGlvbmFsX2ludGVyZmFjZXM9ZmFsc2UNCitjbGVhbnVwLmNvbnZlcnRfdG9fZW5oYW5jZWRfZm9yX2xvb3A9ZmFsc2UNCitjbGVhbnVwLmNvcnJlY3RfaW5kZW50YXRpb249ZmFsc2UNCitjbGVhbnVwLmZvcm1hdF9zb3VyY2VfY29kZT1mYWxzZQ0KK2NsZWFudXAuZm9ybWF0X3NvdXJjZV9jb2RlX2NoYW5nZXNfb25seT1mYWxzZQ0KK2NsZWFudXAuaW5zZXJ0X2luZmVycmVkX3R5cGVfYXJndW1lbnRzPWZhbHNlDQorY2xlYW51cC5tYWtlX2xvY2FsX3ZhcmlhYmxlX2ZpbmFsPXRydWUNCitjbGVhbnVwLm1ha2VfcGFyYW1ldGVyc19maW5hbD1mYWxzZQ0KK2NsZWFudXAubWFrZV9wcml2YXRlX2ZpZWxkc19maW5hbD10cnVlDQorY2xlYW51cC5tYWtlX3R5cGVfYWJzdHJhY3RfaWZfbWlzc2luZ19tZXRob2Q9ZmFsc2UNCitjbGVhbnVwLm1ha2VfdmFyaWFibGVfZGVjbGFyYXRpb25zX2ZpbmFsPWZhbHNlDQorY2xlYW51cC5uZXZlcl91c2VfYmxvY2tzPWZhbHNlDQorY2xlYW51cC5uZXZlcl91c2VfcGFyZW50aGVzZXNfaW5fZXhwcmVzc2lvbnM9dHJ1ZQ0KK2NsZWFudXAub3JnYW5pemVfaW1wb3J0cz1mYWxzZQ0KK2NsZWFudXAucXVhbGlmeV9zdGF0aWNfZmllbGRfYWNjZXNzZXNfd2l0aF9kZWNsYXJpbmdfY2xhc3M9ZmFsc2UNCitjbGVhbnVwLnF1YWxpZnlfc3RhdGljX21lbWJlcl9hY2Nlc3Nlc190aHJvdWdoX2luc3RhbmNlc193aXRoX2RlY2xhcmluZ19jbGFzcz10cnVlDQorY2xlYW51cC5xdWFsaWZ5X3N0YXRpY19tZW1iZXJfYWNjZXNzZXNfdGhyb3VnaF9zdWJ0eXBlc193aXRoX2RlY2xhcmluZ19jbGFzcz10cnVlDQorY2xlYW51cC5xdWFsaWZ5X3N0YXRpY19tZW1iZXJfYWNjZXNzZXNfd2l0aF9kZWNsYXJpbmdfY2xhc3M9dHJ1ZQ0KK2NsZWFudXAucXVhbGlmeV9zdGF0aWNfbWV0aG9kX2FjY2Vzc2VzX3dpdGhfZGVjbGFyaW5nX2NsYXNzPWZhbHNlDQorY2xlYW51cC5yZW1vdmVfcHJpdmF0ZV9jb25zdHJ1Y3RvcnM9dHJ1ZQ0KK2NsZWFudXAucmVtb3ZlX3JlZHVuZGFudF90eXBlX2FyZ3VtZW50cz10cnVlDQorY2xlYW51cC5yZW1vdmVfdHJhaWxpbmdfd2hpdGVzcGFjZXM9dHJ1ZQ0KK2NsZWFudXAucmVtb3ZlX3RyYWlsaW5nX3doaXRlc3BhY2VzX2FsbD10cnVlDQorY2xlYW51cC5yZW1vdmVfdHJhaWxpbmdfd2hpdGVzcGFjZXNfaWdub3JlX2VtcHR5PWZhbHNlDQorY2xlYW51cC5yZW1vdmVfdW5uZWNlc3NhcnlfY2FzdHM9dHJ1ZQ0KK2NsZWFudXAucmVtb3ZlX3VubmVjZXNzYXJ5X25sc190YWdzPXRydWUNCitjbGVhbnVwLnJlbW92ZV91bnVzZWRfaW1wb3J0cz10cnVlDQorY2xlYW51cC5yZW1vdmVfdW51c2VkX2xvY2FsX3ZhcmlhYmxlcz1mYWxzZQ0KK2NsZWFudXAucmVtb3ZlX3VudXNlZF9wcml2YXRlX2ZpZWxkcz10cnVlDQorY2xlYW51cC5yZW1vdmVfdW51c2VkX3ByaXZhdGVfbWVtYmVycz1mYWxzZQ0KK2NsZWFudXAucmVtb3ZlX3VudXNlZF9wcml2YXRlX21ldGhvZHM9dHJ1ZQ0KK2NsZWFudXAucmVtb3ZlX3VudXNlZF9wcml2YXRlX3R5cGVzPXRydWUNCitjbGVhbnVwLnNvcnRfbWVtYmVycz1mYWxzZQ0KK2NsZWFudXAuc29ydF9tZW1iZXJzX2FsbD1mYWxzZQ0KK2NsZWFudXAudXNlX2Fub255bW91c19jbGFzc19jcmVhdGlvbj1mYWxzZQ0KK2NsZWFudXAudXNlX2Jsb2Nrcz10cnVlDQorY2xlYW51cC51c2VfYmxvY2tzX29ubHlfZm9yX3JldHVybl9hbmRfdGhyb3c9ZmFsc2UNCitjbGVhbnVwLnVzZV9sYW1iZGE9dHJ1ZQ0KK2NsZWFudXAudXNlX3BhcmVudGhlc2VzX2luX2V4cHJlc3Npb25zPWZhbHNlDQorY2xlYW51cC51c2VfdGhpc19mb3Jfbm9uX3N0YXRpY19maWVsZF9hY2Nlc3M9ZmFsc2UNCitjbGVhbnVwLnVzZV90aGlzX2Zvcl9ub25fc3RhdGljX2ZpZWxkX2FjY2Vzc19vbmx5X2lmX25lY2Vzc2FyeT10cnVlDQorY2xlYW51cC51c2VfdGhpc19mb3Jfbm9uX3N0YXRpY19tZXRob2RfYWNjZXNzPWZhbHNlDQorY2xlYW51cC51c2VfdGhpc19mb3Jfbm9uX3N0YXRpY19tZXRob2RfYWNjZXNzX29ubHlfaWZfbmVjZXNzYXJ5PXRydWUNCitjbGVhbnVwLnVzZV90eXBlX2FyZ3VtZW50cz1mYWxzZQ0KK2NsZWFudXBfcHJvZmlsZT1fUGFweXJ1cw0KK2NsZWFudXBfc2V0dGluZ3NfdmVyc2lvbj0yDQorZWNsaXBzZS5wcmVmZXJlbmNlcy52ZXJzaW9uPTENCitmb3JtYXR0ZXJfcHJvZmlsZT1fUGFweXJ1cw0KK2Zvcm1hdHRlcl9zZXR0aW5nc192ZXJzaW9uPTEyDQorb3JnLmVjbGlwc2UuamR0LnVpLmlnbm9yZWxvd2VyY2FzZW5hbWVzPXRydWUNCitvcmcuZWNsaXBzZS5qZHQudWkuaW1wb3J0b3JkZXI9amF2YTtqYXZheDtvcmc7Y29tOw0KK29yZy5lY2xpcHNlLmpkdC51aS5qYXZhZG9jPXRydWUNCitvcmcuZWNsaXBzZS5qZHQudWkub25kZW1hbmR0aHJlc2hvbGQ9OTkNCitvcmcuZWNsaXBzZS5qZHQudWkuc3RhdGljb25kZW1hbmR0aHJlc2hvbGQ9OTkNCitvcmcuZWNsaXBzZS5qZHQudWkudGV4dC5jdXN0b21fY29kZV90ZW1wbGF0ZXM9PD94bWwgdmVyc2lvblw9IjEuMCIgZW5jb2RpbmdcPSJVVEYtOCIgc3RhbmRhbG9uZVw9Im5vIj8+PHRlbXBsYXRlcz48dGVtcGxhdGUgYXV0b2luc2VydFw9InRydWUiIGNvbnRleHRcPSJnZXR0ZXJjb21tZW50X2NvbnRleHQiIGRlbGV0ZWRcPSJmYWxzZSIgZGVzY3JpcHRpb25cPSJDb21tZW50IGZvciBnZXR0ZXIgbWV0aG9kIiBlbmFibGVkXD0idHJ1ZSIgaWRcPSJvcmcuZWNsaXBzZS5qZHQudWkudGV4dC5jb2RldGVtcGxhdGVzLmdldHRlcmNvbW1lbnQiIG5hbWVcPSJnZXR0ZXJjb21tZW50Ij4vKipcbiAqIEByZXR1cm4gdGhlICR7YmFyZV9maWVsZF9uYW1lfVxuICovPC90ZW1wbGF0ZT48dGVtcGxhdGUgYXV0b2luc2VydFw9InRydWUiIGNvbnRleHRcPSJzZXR0ZXJjb21tZW50X2NvbnRleHQiIGRlbGV0ZWRcPSJmYWxzZSIgZGVzY3JpcHRpb25cPSJDb21tZW50IGZvciBzZXR0ZXIgbWV0aG9kIiBlbmFibGVkXD0idHJ1ZSIgaWRcPSJvcmcuZWNsaXBzZS5qZHQudWkudGV4dC5jb2RldGVtcGxhdGVzLnNldHRlcmNvbW1lbnQiIG5hbWVcPSJzZXR0ZXJjb21tZW50Ij4vKipcbiAqIEBwYXJhbSAke3BhcmFtfSB0aGUgJHtiYXJlX2ZpZWxkX25hbWV9IHRvIHNldFxuICovPC90ZW1wbGF0ZT48dGVtcGxhdGUgYXV0b2luc2VydFw9ImZhbHNlIiBjb250ZXh0XD0iY29uc3RydWN0b3Jjb21tZW50X2NvbnRleHQiIGRlbGV0ZWRcPSJmYWxzZSIgZGVzY3JpcHRpb25cPSJDb21tZW50IGZvciBjcmVhdGVkIGNvbnN0cnVjdG9ycyIgZW5hYmxlZFw9InRydWUiIGlkXD0ib3JnLmVjbGlwc2UuamR0LnVpLnRleHQuY29kZXRlbXBsYXRlcy5jb25zdHJ1Y3RvcmNvbW1lbnQiIG5hbWVcPSJjb25zdHJ1Y3RvcmNvbW1lbnQiPi8qKlxuICogQ29uc3RydWN0b3IuXG4gKlxuICogJHt0YWdzfVxuICovPC90ZW1wbGF0ZT48dGVtcGxhdGUgYXV0b2luc2VydFw9ImZhbHNlIiBjb250ZXh0XD0iZmlsZWNvbW1lbnRfY29udGV4dCIgZGVsZXRlZFw9ImZhbHNlIiBkZXNjcmlwdGlvblw9IkNvbW1lbnQgZm9yIGNyZWF0ZWQgSmF2YSBmaWxlcyIgZW5hYmxlZFw9InRydWUiIGlkXD0ib3JnLmVjbGlwc2UuamR0LnVpLnRleHQuY29kZXRlbXBsYXRlcy5maWxlY29tbWVudCIgbmFtZVw9ImZpbGVjb21tZW50Ij4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAqIENvcHlyaWdodCAoYykgJHt5ZWFyfSBDRUEgTElTVCBhbmQgb3RoZXJzLlxuICogXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzXG4gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjBcbiAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0XG4gKiBodHRwXDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWxcbiAqXG4gKiBDb250cmlidXRvcnNcOlxuICogICBDRUEgTElTVCAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvblxuICogICBcbiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbjwvdGVtcGxhdGU+PHRlbXBsYXRlIGF1dG9pbnNlcnRcPSJ0cnVlIiBjb250ZXh0XD0idHlwZWNvbW1lbnRfY29udGV4dCIgZGVsZXRlZFw9ImZhbHNlIiBkZXNjcmlwdGlvblw9IkNvbW1lbnQgZm9yIGNyZWF0ZWQgdHlwZXMiIGVuYWJsZWRcPSJ0cnVlIiBpZFw9Im9yZy5lY2xpcHNlLmpkdC51aS50ZXh0LmNvZGV0ZW1wbGF0ZXMudHlwZWNvbW1lbnQiIG5hbWVcPSJ0eXBlY29tbWVudCI+LyoqXG4gKiBAYXV0aG9yICR7dXNlcn1cbiAqXG4gKiAke3RhZ3N9XG4gKi88L3RlbXBsYXRlPjx0ZW1wbGF0ZSBhdXRvaW5zZXJ0XD0idHJ1ZSIgY29udGV4dFw9ImZpZWxkY29tbWVudF9jb250ZXh0IiBkZWxldGVkXD0iZmFsc2UiIGRlc2NyaXB0aW9uXD0iQ29tbWVudCBmb3IgZmllbGRzIiBlbmFibGVkXD0idHJ1ZSIgaWRcPSJvcmcuZWNsaXBzZS5qZHQudWkudGV4dC5jb2RldGVtcGxhdGVzLmZpZWxkY29tbWVudCIgbmFtZVw9ImZpZWxkY29tbWVudCI+LyoqXG4gKiBcbiAqLzwvdGVtcGxhdGU+PHRlbXBsYXRlIGF1dG9pbnNlcnRcPSJ0cnVlIiBjb250ZXh0XD0ibWV0aG9kY29tbWVudF9jb250ZXh0IiBkZWxldGVkXD0iZmFsc2UiIGRlc2NyaXB0aW9uXD0iQ29tbWVudCBmb3Igbm9uLW92ZXJyaWRpbmcgbWV0aG9kcyIgZW5hYmxlZFw9InRydWUiIGlkXD0ib3JnLmVjbGlwc2UuamR0LnVpLnRleHQuY29kZXRlbXBsYXRlcy5tZXRob2Rjb21tZW50IiBuYW1lXD0ibWV0aG9kY29tbWVudCI+LyoqXG4gKiAke3RhZ3N9XG4gKi88L3RlbXBsYXRlPjx0ZW1wbGF0ZSBhdXRvaW5zZXJ0XD0iZmFsc2UiIGNvbnRleHRcPSJvdmVycmlkZWNvbW1lbnRfY29udGV4dCIgZGVsZXRlZFw9ImZhbHNlIiBkZXNjcmlwdGlvblw9IkNvbW1lbnQgZm9yIG92ZXJyaWRpbmcgbWV0aG9kcyIgZW5hYmxlZFw9InRydWUiIGlkXD0ib3JnLmVjbGlwc2UuamR0LnVpLnRleHQuY29kZXRlbXBsYXRlcy5vdmVycmlkZWNvbW1lbnQiIG5hbWVcPSJvdmVycmlkZWNvbW1lbnQiPi8qKlxuICogJHtzZWVfdG9fb3ZlcnJpZGRlbn1cbiAqXG4gKiAke3RhZ3N9XG4gKi88L3RlbXBsYXRlPjx0ZW1wbGF0ZSBhdXRvaW5zZXJ0XD0iZmFsc2UiIGNvbnRleHRcPSJkZWxlZ2F0ZWNvbW1lbnRfY29udGV4dCIgZGVsZXRlZFw9ImZhbHNlIiBkZXNjcmlwdGlvblw9IkNvbW1lbnQgZm9yIGRlbGVnYXRlIG1ldGhvZHMiIGVuYWJsZWRcPSJ0cnVlIiBpZFw9Im9yZy5lY2xpcHNlLmpkdC51aS50ZXh0LmNvZGV0ZW1wbGF0ZXMuZGVsZWdhdGVjb21tZW50IiBuYW1lXD0iZGVsZWdhdGVjb21tZW50Ij4vKipcbiAqICR7c2VlX3RvX3RhcmdldH1cbiAqXG4gKiAke3RhZ3N9XG4gKi88L3RlbXBsYXRlPjx0ZW1wbGF0ZSBhdXRvaW5zZXJ0XD0idHJ1ZSIgY29udGV4dFw9Im5ld3R5cGVfY29udGV4dCIgZGVsZXRlZFw9ImZhbHNlIiBkZXNjcmlwdGlvblw9Ik5ld2x5IGNyZWF0ZWQgZmlsZXMiIGVuYWJsZWRcPSJ0cnVlIiBpZFw9Im9yZy5lY2xpcHNlLmpkdC51aS50ZXh0LmNvZGV0ZW1wbGF0ZXMubmV3dHlwZSIgbmFtZVw9Im5ld3R5cGUiPiR7ZmlsZWNvbW1lbnR9XG4ke3BhY2thZ2VfZGVjbGFyYXRpb259XG5cbiR7dHlwZWNvbW1lbnR9XG4ke3R5cGVfZGVjbGFyYXRpb259PC90ZW1wbGF0ZT48dGVtcGxhdGUgYXV0b2luc2VydFw9InRydWUiIGNvbnRleHRcPSJjbGFzc2JvZHlfY29udGV4dCIgZGVsZXRlZFw9ImZhbHNlIiBkZXNjcmlwdGlvblw9IkNvZGUgaW4gbmV3IGNsYXNzIHR5cGUgYm9kaWVzIiBlbmFibGVkXD0idHJ1ZSIgaWRcPSJvcmcuZWNsaXBzZS5qZHQudWkudGV4dC5jb2RldGVtcGxhdGVzLmNsYXNzYm9keSIgbmFtZVw9ImNsYXNzYm9keSI+XG48L3RlbXBsYXRlPjx0ZW1wbGF0ZSBhdXRvaW5zZXJ0XD0idHJ1ZSIgY29udGV4dFw9ImludGVyZmFjZWJvZHlfY29udGV4dCIgZGVsZXRlZFw9ImZhbHNlIiBkZXNjcmlwdGlvblw9IkNvZGUgaW4gbmV3IGludGVyZmFjZSB0eXBlIGJvZGllcyIgZW5hYmxlZFw9InRydWUiIGlkXD0ib3JnLmVjbGlwc2UuamR0LnVpLnRleHQuY29kZXRlbXBsYXRlcy5pbnRlcmZhY2Vib2R5IiBuYW1lXD0iaW50ZXJmYWNlYm9keSI+XG48L3RlbXBsYXRlPjx0ZW1wbGF0ZSBhdXRvaW5zZXJ0XD0idHJ1ZSIgY29udGV4dFw9ImVudW1ib2R5X2NvbnRleHQiIGRlbGV0ZWRcPSJmYWxzZSIgZGVzY3JpcHRpb25cPSJDb2RlIGluIG5ldyBlbnVtIHR5cGUgYm9kaWVzIiBlbmFibGVkXD0idHJ1ZSIgaWRcPSJvcmcuZWNsaXBzZS5qZHQudWkudGV4dC5jb2RldGVtcGxhdGVzLmVudW1ib2R5IiBuYW1lXD0iZW51bWJvZHkiPlxuPC90ZW1wbGF0ZT48dGVtcGxhdGUgYXV0b2luc2VydFw9InRydWUiIGNvbnRleHRcPSJhbm5vdGF0aW9uYm9keV9jb250ZXh0IiBkZWxldGVkXD0iZmFsc2UiIGRlc2NyaXB0aW9uXD0iQ29kZSBpbiBuZXcgYW5ub3RhdGlvbiB0eXBlIGJvZGllcyIgZW5hYmxlZFw9InRydWUiIGlkXD0ib3JnLmVjbGlwc2UuamR0LnVpLnRleHQuY29kZXRlbXBsYXRlcy5hbm5vdGF0aW9uYm9keSIgbmFtZVw9ImFubm90YXRpb25ib2R5Ij5cbjwvdGVtcGxhdGU+PHRlbXBsYXRlIGF1dG9pbnNlcnRcPSJ0cnVlIiBjb250ZXh0XD0iY2F0Y2hibG9ja19jb250ZXh0IiBkZWxldGVkXD0iZmFsc2UiIGRlc2NyaXB0aW9uXD0iQ29kZSBpbiBuZXcgY2F0Y2ggYmxvY2tzIiBlbmFibGVkXD0idHJ1ZSIgaWRcPSJvcmcuZWNsaXBzZS5qZHQudWkudGV4dC5jb2RldGVtcGxhdGVzLmNhdGNoYmxvY2siIG5hbWVcPSJjYXRjaGJsb2NrIj4vLyAke3RvZG99IEF1dG8tZ2VuZXJhdGVkIGNhdGNoIGJsb2NrXG4ke2V4Y2VwdGlvbl92YXJ9LnByaW50U3RhY2tUcmFjZSgpOzwvdGVtcGxhdGU+PHRlbXBsYXRlIGF1dG9pbnNlcnRcPSJ0cnVlIiBjb250ZXh0XD0ibWV0aG9kYm9keV9jb250ZXh0IiBkZWxldGVkXD0iZmFsc2UiIGRlc2NyaXB0aW9uXD0iQ29kZSBpbiBjcmVhdGVkIG1ldGhvZCBzdHVicyIgZW5hYmxlZFw9InRydWUiIGlkXD0ib3JnLmVjbGlwc2UuamR0LnVpLnRleHQuY29kZXRlbXBsYXRlcy5tZXRob2Rib2R5IiBuYW1lXD0ibWV0aG9kYm9keSI+Ly8gJHt0b2RvfSBBdXRvLWdlbmVyYXRlZCBtZXRob2Qgc3R1YlxuJHtib2R5X3N0YXRlbWVudH08L3RlbXBsYXRlPjx0ZW1wbGF0ZSBhdXRvaW5zZXJ0XD0idHJ1ZSIgY29udGV4dFw9ImNvbnN0cnVjdG9yYm9keV9jb250ZXh0IiBkZWxldGVkXD0iZmFsc2UiIGRlc2NyaXB0aW9uXD0iQ29kZSBpbiBjcmVhdGVkIGNvbnN0cnVjdG9yIHN0dWJzIiBlbmFibGVkXD0idHJ1ZSIgaWRcPSJvcmcuZWNsaXBzZS5qZHQudWkudGV4dC5jb2RldGVtcGxhdGVzLmNvbnN0cnVjdG9yYm9keSIgbmFtZVw9ImNvbnN0cnVjdG9yYm9keSI+JHtib2R5X3N0YXRlbWVudH1cbi8vICR7dG9kb30gQXV0by1nZW5lcmF0ZWQgY29uc3RydWN0b3Igc3R1YjwvdGVtcGxhdGU+PHRlbXBsYXRlIGF1dG9pbnNlcnRcPSJ0cnVlIiBjb250ZXh0XD0iZ2V0dGVyYm9keV9jb250ZXh0IiBkZWxldGVkXD0iZmFsc2UiIGRlc2NyaXB0aW9uXD0iQ29kZSBpbiBjcmVhdGVkIGdldHRlcnMiIGVuYWJsZWRcPSJ0cnVlIiBpZFw9Im9yZy5lY2xpcHNlLmpkdC51aS50ZXh0LmNvZGV0ZW1wbGF0ZXMuZ2V0dGVyYm9keSIgbmFtZVw9ImdldHRlcmJvZHkiPnJldHVybiAke2ZpZWxkfTs8L3RlbXBsYXRlPjx0ZW1wbGF0ZSBhdXRvaW5zZXJ0XD0idHJ1ZSIgY29udGV4dFw9InNldHRlcmJvZHlfY29udGV4dCIgZGVsZXRlZFw9ImZhbHNlIiBkZXNjcmlwdGlvblw9IkNvZGUgaW4gY3JlYXRlZCBzZXR0ZXJzIiBlbmFibGVkXD0idHJ1ZSIgaWRcPSJvcmcuZWNsaXBzZS5qZHQudWkudGV4dC5jb2RldGVtcGxhdGVzLnNldHRlcmJvZHkiIG5hbWVcPSJzZXR0ZXJib2R5Ij4ke2ZpZWxkfSBcPSAke3BhcmFtfTs8L3RlbXBsYXRlPjwvdGVtcGxhdGVzPg0KZGlmZiAtLWdpdCBhL2RpYWdyYW0vb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRpYWdyYW0uY29tbW9uLnRlc3RzL01FVEEtSU5GL01BTklGRVNULk1GIGIvZGlhZ3JhbS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGlhZ3JhbS5jb21tb24udGVzdHMvTUVUQS1JTkYvTUFOSUZFU1QuTUYKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTY0ZDhmOQotLS0gL2Rldi9udWxsCisrKyBiL2RpYWdyYW0vb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRpYWdyYW0uY29tbW9uLnRlc3RzL01FVEEtSU5GL01BTklGRVNULk1GCkBAIC0wLDAgKzEsMTggQEAKK01hbmlmZXN0LVZlcnNpb246IDEuMA0KK1JlcXVpcmUtQnVuZGxlOiBvcmcuanVuaXQ7YnVuZGxlLXZlcnNpb249IjQuMTAuMCIsDQorIG9yZy5lY2xpcHNlLnBhcHlydXMuanVuaXQuZnJhbWV3b3JrO2J1bmRsZS12ZXJzaW9uPSIxLjEuMCIsDQorIG9yZy5lY2xpcHNlLnBhcHlydXMuaW5mcmEuc2VydmljZXMuZWRpdDtidW5kbGUtdmVyc2lvbj0iMS4xLjAiLA0KKyBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQ7YnVuZGxlLXZlcnNpb249IjAuNy4wIiwNCisgb3JnLmVjbGlwc2UuZ21mLnJ1bnRpbWUuZW1mLmNvcmU7YnVuZGxlLXZlcnNpb249IjEuNy4wIiwNCisgb3JnLmVjbGlwc2UuZ21mLnJ1bnRpbWUuZW1mLnR5cGUuY29yZTtidW5kbGUtdmVyc2lvbj0iMS45LjAiLA0KKyBvcmcuZWNsaXBzZS5wYXB5cnVzLmluZnJhLmVsZW1lbnR0eXBlc2NvbmZpZ3VyYXRpb25zO2J1bmRsZS12ZXJzaW9uPSIxLjEuMCIsDQorIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kaWFncmFtLmNvbW1vbjtidW5kbGUtdmVyc2lvbj0iMC43LjAiDQorRXhwb3J0LVBhY2thZ2U6IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kaWFncmFtLmNvbW1vbi50ZXN0cw0KK0J1bmRsZS1WZW5kb3I6ICVwcm92aWRlck5hbWUNCitCdW5kbGUtVmVyc2lvbjogMC43LjAucXVhbGlmaWVyDQorQnVuZGxlLU5hbWU6ICVwbHVnaW5OYW1lDQorQnVuZGxlLUxvY2FsaXphdGlvbjogcGx1Z2luDQorQnVuZGxlLU1hbmlmZXN0VmVyc2lvbjogMg0KK0J1bmRsZS1TeW1ib2xpY05hbWU6IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kaWFncmFtLmNvbW1vbi50ZXN0cw0KK0J1bmRsZS1SZXF1aXJlZEV4ZWN1dGlvbkVudmlyb25tZW50OiBKMlNFLTEuNQ0KKw0KZGlmZiAtLWdpdCBhL2RpYWdyYW0vb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRpYWdyYW0uY29tbW9uLnRlc3RzL2Fib3V0Lmh0bWwgYi9kaWFncmFtL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kaWFncmFtLmNvbW1vbi50ZXN0cy9hYm91dC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgyZDQ5YmYKLS0tIC9kZXYvbnVsbAorKysgYi9kaWFncmFtL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kaWFncmFtLmNvbW1vbi50ZXN0cy9hYm91dC5odG1sCkBAIC0wLDAgKzEsMjggQEAKKzwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgWEhUTUwgMS4wIFN0cmljdC8vRU4iDQorICAgICJodHRwOi8vd3d3LnczLm9yZy9UUi94aHRtbDEvRFREL3hodG1sMS1zdHJpY3QuZHRkIj4NCis8aHRtbCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCI+DQorPGhlYWQ+DQorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9SVNPLTg4NTktMSIvPg0KKzx0aXRsZT5BYm91dDwvdGl0bGU+DQorPC9oZWFkPg0KKzxib2R5IGxhbmc9IkVOLVVTIj4NCis8aDI+QWJvdXQgVGhpcyBDb250ZW50PC9oMj4NCisgDQorPHA+SnVuZSA1LCAyMDA3PC9wPgkNCis8aDM+TGljZW5zZTwvaDM+DQorDQorPHA+VGhlIEVjbGlwc2UgRm91bmRhdGlvbiBtYWtlcyBhdmFpbGFibGUgYWxsIGNvbnRlbnQgaW4gdGhpcyBwbHVnLWluICgmcXVvdDtDb250ZW50JnF1b3Q7KS4gIFVubGVzcyBvdGhlcndpc2UgDQoraW5kaWNhdGVkIGJlbG93LCB0aGUgQ29udGVudCBpcyBwcm92aWRlZCB0byB5b3UgdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZQ0KK0VjbGlwc2UgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAxLjAgKCZxdW90O0VQTCZxdW90OykuICBBIGNvcHkgb2YgdGhlIEVQTCBpcyBhdmFpbGFibGUgDQorYXQgPGEgaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwiPmh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sPC9hPi4NCitGb3IgcHVycG9zZXMgb2YgdGhlIEVQTCwgJnF1b3Q7UHJvZ3JhbSZxdW90OyB3aWxsIG1lYW4gdGhlIENvbnRlbnQuPC9wPg0KKw0KKzxwPklmIHlvdSBkaWQgbm90IHJlY2VpdmUgdGhpcyBDb250ZW50IGRpcmVjdGx5IGZyb20gdGhlIEVjbGlwc2UgRm91bmRhdGlvbiwgdGhlIENvbnRlbnQgaXMgDQorYmVpbmcgcmVkaXN0cmlidXRlZCBieSBhbm90aGVyIHBhcnR5ICgmcXVvdDtSZWRpc3RyaWJ1dG9yJnF1b3Q7KSBhbmQgZGlmZmVyZW50IHRlcm1zIGFuZCBjb25kaXRpb25zIG1heQ0KK2FwcGx5IHRvIHlvdXIgdXNlIG9mIGFueSBvYmplY3QgY29kZSBpbiB0aGUgQ29udGVudC4gIENoZWNrIHRoZSBSZWRpc3RyaWJ1dG9yJ3MgbGljZW5zZSB0aGF0IHdhcyANCitwcm92aWRlZCB3aXRoIHRoZSBDb250ZW50LiAgSWYgbm8gc3VjaCBsaWNlbnNlIGV4aXN0cywgY29udGFjdCB0aGUgUmVkaXN0cmlidXRvci4gIFVubGVzcyBvdGhlcndpc2UNCitpbmRpY2F0ZWQgYmVsb3csIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgRVBMIHN0aWxsIGFwcGx5IHRvIGFueSBzb3VyY2UgY29kZSBpbiB0aGUgQ29udGVudA0KK2FuZCBzdWNoIHNvdXJjZSBjb2RlIG1heSBiZSBvYnRhaW5lZCBhdCA8YSBocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnLyI+aHR0cDovL3d3dy5lY2xpcHNlLm9yZzwvYT4uPC9wPg0KKw0KKzwvYm9keT4NCis8L2h0bWw+DQpkaWZmIC0tZ2l0IGEvZGlhZ3JhbS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGlhZ3JhbS5jb21tb24udGVzdHMvYnVpbGQucHJvcGVydGllcyBiL2RpYWdyYW0vb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRpYWdyYW0uY29tbW9uLnRlc3RzL2J1aWxkLnByb3BlcnRpZXMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWIwOGY4NAotLS0gL2Rldi9udWxsCisrKyBiL2RpYWdyYW0vb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRpYWdyYW0uY29tbW9uLnRlc3RzL2J1aWxkLnByb3BlcnRpZXMKQEAgLTAsMCArMSw3IEBACitzb3VyY2UuLiA9IHNyYy8NCitvdXRwdXQuLiA9IGJpbi8NCitiaW4uaW5jbHVkZXMgPSBNRVRBLUlORi8sXA0KKyAgICAgICAgICAgICAgIC4sXA0KKyAgICAgICAgICAgICAgIGFib3V0Lmh0bWwsXA0KKyAgICAgICAgICAgICAgIHBsdWdpbi5wcm9wZXJ0aWVzDQorc3JjLmluY2x1ZGVzID0gYWJvdXQuaHRtbA0KZGlmZiAtLWdpdCBhL2RpYWdyYW0vb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRpYWdyYW0uY29tbW9uLnRlc3RzL3BsdWdpbi5wcm9wZXJ0aWVzIGIvZGlhZ3JhbS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGlhZ3JhbS5jb21tb24udGVzdHMvcGx1Z2luLnByb3BlcnRpZXMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWZkOTU5MgotLS0gL2Rldi9udWxsCisrKyBiL2RpYWdyYW0vb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRpYWdyYW0uY29tbW9uLnRlc3RzL3BsdWdpbi5wcm9wZXJ0aWVzCkBAIC0wLDAgKzEsMTQgQEAKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KKyMgQ29weXJpZ2h0IChjKSAyMDExIENFQSBMSVNULg0KKyMgQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KKyMgYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQorIyB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KKyMgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisjDQorIyBDb250cmlidXRvcnM6DQorIw0KKyMgICAgIENFQSBMSVNUIC0gSW5pdGlhbCBBUEkgYW5kIEltcGxlbWVudGF0aW9uLg0KKyMNCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQorcGx1Z2luTmFtZT1QYXB5cnVzIFN5c01MIDEuNCBDb21tb24gRGlhZ3JhbSBUZXN0cw0KK3Byb3ZpZGVyTmFtZT1FY2xpcHNlIE1vZGVsaW5nIFByb2plY3QNCmRpZmYgLS1naXQgYS9kaWFncmFtL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kaWFncmFtLmNvbW1vbi50ZXN0cy9wb20ueG1sIGIvZGlhZ3JhbS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGlhZ3JhbS5jb21tb24udGVzdHMvcG9tLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYTcwNjZkCi0tLSAvZGV2L251bGwKKysrIGIvZGlhZ3JhbS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGlhZ3JhbS5jb21tb24udGVzdHMvcG9tLnhtbApAQCAtMCwwICsxLDEyIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/Pg0KKzxwcm9qZWN0IHhzaTpzY2hlbWFMb2NhdGlvbj0iaHR0cDovL21hdmVuLmFwYWNoZS5vcmcvUE9NLzQuMC4wIGh0dHA6Ly9tYXZlbi5hcGFjaGUub3JnL3hzZC9tYXZlbi00LjAuMC54c2QiIHhtbG5zPSJodHRwOi8vbWF2ZW4uYXBhY2hlLm9yZy9QT00vNC4wLjAiDQorICAgIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiPg0KKyAgPG1vZGVsVmVyc2lvbj40LjAuMDwvbW9kZWxWZXJzaW9uPg0KKyAgPHBhcmVudD4NCisJCTxncm91cElkPm9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWw8L2dyb3VwSWQ+CQ0KKwkJPGFydGlmYWN0SWQ+b3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbC5kaWFncmFtPC9hcnRpZmFjdElkPg0KKwkJPHZlcnNpb24+MC43LjAtU05BUFNIT1Q8L3ZlcnNpb24+DQorICA8L3BhcmVudD4NCisgIDxhcnRpZmFjdElkPm9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kaWFncmFtLmNvbW1vbi50ZXN0czwvYXJ0aWZhY3RJZD4NCisgIDxwYWNrYWdpbmc+ZWNsaXBzZS10ZXN0LXBsdWdpbjwvcGFja2FnaW5nPg0KKzwvcHJvamVjdD4NCmRpZmYgLS1naXQgYS9kaWFncmFtL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kaWFncmFtLmNvbW1vbi50ZXN0cy9zcmMvb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L2RpYWdyYW0vY29tbW9uL3Rlc3RzL0FsbFRlc3RzLmphdmEgYi9kaWFncmFtL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kaWFncmFtLmNvbW1vbi50ZXN0cy9zcmMvb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L2RpYWdyYW0vY29tbW9uL3Rlc3RzL0FsbFRlc3RzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzM1ZTE2NwotLS0gL2Rldi9udWxsCisrKyBiL2RpYWdyYW0vb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRpYWdyYW0uY29tbW9uLnRlc3RzL3NyYy9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvZGlhZ3JhbS9jb21tb24vdGVzdHMvQWxsVGVzdHMuamF2YQpAQCAtMCwwICsxLDI3IEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisgKiBDb3B5cmlnaHQgKGMpIDIwMTUgQ0VBIExJU1QuDQorICoNCisgKiAgICANCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQorICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCisgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqDQorICogQ29udHJpYnV0b3JzOg0KKyAqICBCZW5vaXQgTWFnZ2kgKENFQSBMSVNUKSBiZW5vaXQubWFnZ2lAY2VhLmZyIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uDQorICogIA0KKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCitwYWNrYWdlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kaWFncmFtLmNvbW1vbi50ZXN0czsNCisNCitpbXBvcnQgb3JnLmp1bml0LnJ1bm5lci5SdW5XaXRoOw0KK2ltcG9ydCBvcmcuanVuaXQucnVubmVycy5TdWl0ZTsNCitpbXBvcnQgb3JnLmp1bml0LnJ1bm5lcnMuU3VpdGUuU3VpdGVDbGFzc2VzOw0KKw0KKy8qKg0KKyAqIE1haW4gVGVzdCBzdWl0ZS4NCisgKi8NCitAUnVuV2l0aChTdWl0ZS5jbGFzcykNCitAU3VpdGVDbGFzc2VzKHsgU3lzTUwxNENvbXBvc2l0ZVN0cnVjdHVyZURpYWdyYW1FbGVtZW50VHlwZXNUZXN0LmNsYXNzLCBTeXNNTDE0VU1MQ2xhc3NEaWFncmFtRWxlbWVudFR5cGVzVGVzdC5jbGFzcyB9KQ0KK3B1YmxpYyBjbGFzcyBBbGxUZXN0cyB7DQorDQorfQ0KZGlmZiAtLWdpdCBhL2RpYWdyYW0vb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRpYWdyYW0uY29tbW9uLnRlc3RzL3NyYy9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvZGlhZ3JhbS9jb21tb24vdGVzdHMvU3lzTUwxNENvbXBvc2l0ZVN0cnVjdHVyZURpYWdyYW1FbGVtZW50VHlwZXNUZXN0LmphdmEgYi9kaWFncmFtL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kaWFncmFtLmNvbW1vbi50ZXN0cy9zcmMvb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L2RpYWdyYW0vY29tbW9uL3Rlc3RzL1N5c01MMTRDb21wb3NpdGVTdHJ1Y3R1cmVEaWFncmFtRWxlbWVudFR5cGVzVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZhOTNkMTcKLS0tIC9kZXYvbnVsbAorKysgYi9kaWFncmFtL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kaWFncmFtLmNvbW1vbi50ZXN0cy9zcmMvb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L2RpYWdyYW0vY29tbW9uL3Rlc3RzL1N5c01MMTRDb21wb3NpdGVTdHJ1Y3R1cmVEaWFncmFtRWxlbWVudFR5cGVzVGVzdC5qYXZhCkBAIC0wLDAgKzEsMzQzIEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisgKiBDb3B5cmlnaHQgKGMpIDIwMTUgQ0VBIExJU1QuDQorICoNCisgKiAgICANCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQorICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCisgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqDQorICogQ29udHJpYnV0b3JzOg0KKyAqICBCZW5vaXQgTWFnZ2kgKENFQSBMSVNUKSBiZW5vaXQubWFnZ2lAY2VhLmZyIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uDQorICogIA0KKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCitwYWNrYWdlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kaWFncmFtLmNvbW1vbi50ZXN0czsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5pbmZyYS5lbGVtZW50dHlwZXNjb25maWd1cmF0aW9ucy5FbGVtZW50VHlwZVNldENvbmZpZ3VyYXRpb247DQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuaW5mcmEuZWxlbWVudHR5cGVzY29uZmlndXJhdGlvbnMucmVnaXN0cmllcy5FbGVtZW50VHlwZVNldENvbmZpZ3VyYXRpb25SZWdpc3RyeTsNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5pbmZyYS5zZXJ2aWNlcy5lZGl0LnNlcnZpY2UuRWxlbWVudEVkaXRTZXJ2aWNlVXRpbHM7DQoraW1wb3J0IG9yZy5qdW5pdC5Bc3NlcnQ7DQoraW1wb3J0IG9yZy5qdW5pdC5CZWZvcmVDbGFzczsNCitpbXBvcnQgb3JnLmp1bml0LlRlc3Q7DQorDQorLyoqDQorICogVGhpcyBjbGFzcyBpcyB0byBjaGVjayBhbnkgY2hhbmdlIGluIHRoZSBTeXNNTCAxLjQgQ29tcG9zaXRlIFN0cnVjdHVyZSBEaWFncmFtIGVsZW1lbnQgdHlwZSBpZA0KKyAqIChzaW5jZSB0aGUgaWRzIGNhbiBiZSB1c2VkIGEgc3BlY2lhbGl6YXRpb24gdGhleSBhcmUgcGFydCBvZiBwdWJsaWMgQVBJKQ0KKyAqDQorICovDQorcHVibGljIGNsYXNzIFN5c01MMTRDb21wb3NpdGVTdHJ1Y3R1cmVEaWFncmFtRWxlbWVudFR5cGVzVGVzdCB7DQorDQorCQ0KKwlAQmVmb3JlQ2xhc3MNCisJcHVibGljIHN0YXRpYyB2b2lkIGxvYWRTeXNNTDE0Q29tcG9zaXRlU3RydWN0dXJlRGlhZ3JhbURlZmluaXRpb24oKSB7DQorCQlFbGVtZW50VHlwZVNldENvbmZpZ3VyYXRpb25SZWdpc3RyeSBpbnN0YW5jZSA9IEVsZW1lbnRUeXBlU2V0Q29uZmlndXJhdGlvblJlZ2lzdHJ5LmdldEluc3RhbmNlKCk7DQorCQlFbGVtZW50VHlwZVNldENvbmZpZ3VyYXRpb24gZWxlbWVudFR5cGVTZXRDb25maWd1cmF0aW9uID0gaW5zdGFuY2UuZ2V0RWxlbWVudFR5cGVTZXRDb25maWd1cmF0aW9ucygpLmdldCgib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnNlcnZpY2UudHlwZXMuZWxlbWVudFR5cGVTZXQuY29tcG9zaXRlIik7DQorCQlBc3NlcnQuYXNzZXJ0Tm90TnVsbCgiVGhlIFN5c01MIDEuNCBDb21wb3NpdGUgU3RydWN0dXJlIERpYWdyYW0gZWxlbWVudCB0eXBlIHNldCBkZWZpbml0aW9uIGlzIG1pc3NpbmciLCBlbGVtZW50VHlwZVNldENvbmZpZ3VyYXRpb24pOw0KKwl9DQorCQ0KKwkgICBAVGVzdA0KKwkJcHVibGljIHZvaWQgdGVzdFJlZ2lzdHJ5Q29udGVudEZvclZhbHVlVHlwZV8zMDgwKCkgew0KKwkJCUFzc2VydC5hc3NlcnRUcnVlKCJWYWx1ZVR5cGUgKDMwODApIGVsZW1lbnQgdHlwZSBub3QgZm91bmQgaW4gU3lzTUwgZWxlbWVudCB0eXBlIHNldCAiLCBFbGVtZW50RWRpdFNlcnZpY2VVdGlscy5nZXRFZGl0U2VydmljZVByb3ZpZGVyKCkuaXNLbm93bkVsZW1lbnRUeXBlKCJvcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuVmFsdWVUeXBlXzMwODAiKSk7DQorCQl9DQorDQorCSAgICBAVGVzdA0KKwkJcHVibGljIHZvaWQgdGVzdFJlZ2lzdHJ5Q29udGVudEZvclZhbHVlVHlwZV8yMDY4KCkgew0KKwkJCUFzc2VydC5hc3NlcnRUcnVlKCJWYWx1ZVR5cGUgKDIwNjgpIGVsZW1lbnQgdHlwZSBub3QgZm91bmQgaW4gU3lzTUwgZWxlbWVudCB0eXBlIHNldCAiLCBFbGVtZW50RWRpdFNlcnZpY2VVdGlscy5nZXRFZGl0U2VydmljZVByb3ZpZGVyKCkuaXNLbm93bkVsZW1lbnRUeXBlKCJvcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuVmFsdWVUeXBlXzIwNjgiKSk7DQorCQl9DQorDQorCSAgICBAVGVzdA0KKwkJcHVibGljIHZvaWQgdGVzdFJlZ2lzdHJ5Q29udGVudEZvckRpc3RyaWJ1dGVkUHJvcGVydHlfMzA3MCgpIHsNCisJCQlBc3NlcnQuYXNzZXJ0VHJ1ZSgiRGlzdHJpYnV0ZWRQcm9wZXJ0eSAoMzA3MCkgZWxlbWVudCB0eXBlIG5vdCBmb3VuZCBpbiBTeXNNTCBlbGVtZW50IHR5cGUgc2V0ICIsIEVsZW1lbnRFZGl0U2VydmljZVV0aWxzLmdldEVkaXRTZXJ2aWNlUHJvdmlkZXIoKS5pc0tub3duRWxlbWVudFR5cGUoIm9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5EaXN0cmlidXRlZFByb3BlcnR5XzMwNzAiKSk7DQorCQl9DQorDQorCSAgICBAVGVzdA0KKwkJcHVibGljIHZvaWQgdGVzdFJlZ2lzdHJ5Q29udGVudEZvckRpc3RyaWJ1dGVkUHJvcGVydHlfMzEwMSgpIHsNCisJCQlBc3NlcnQuYXNzZXJ0VHJ1ZSgiRGlzdHJpYnV0ZWRQcm9wZXJ0eSAoMzEwMSkgZWxlbWVudCB0eXBlIG5vdCBmb3VuZCBpbiBTeXNNTCBlbGVtZW50IHR5cGUgc2V0ICIsIEVsZW1lbnRFZGl0U2VydmljZVV0aWxzLmdldEVkaXRTZXJ2aWNlUHJvdmlkZXIoKS5pc0tub3duRWxlbWVudFR5cGUoIm9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5EaXN0cmlidXRlZFByb3BlcnR5XzMxMDEiKSk7DQorCQl9DQorDQorCSAgICBAVGVzdA0KKwkJcHVibGljIHZvaWQgdGVzdFJlZ2lzdHJ5Q29udGVudEZvckNvbm5lY3RvclByb3BlcnR5XzMwNzAoKSB7DQorCQkJQXNzZXJ0LmFzc2VydFRydWUoIkNvbm5lY3RvclByb3BlcnR5ICgzMDcwKSBlbGVtZW50IHR5cGUgbm90IGZvdW5kIGluIFN5c01MIGVsZW1lbnQgdHlwZSBzZXQgIiwgRWxlbWVudEVkaXRTZXJ2aWNlVXRpbHMuZ2V0RWRpdFNlcnZpY2VQcm92aWRlcigpLmlzS25vd25FbGVtZW50VHlwZSgib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LkNvbm5lY3RvclByb3BlcnR5XzMwNzAiKSk7DQorCQl9DQorDQorCSAgICBAVGVzdA0KKwkJcHVibGljIHZvaWQgdGVzdFJlZ2lzdHJ5Q29udGVudEZvckNvbm5lY3RvclByb3BlcnR5XzMxMDEoKSB7DQorCQkJQXNzZXJ0LmFzc2VydFRydWUoIkNvbm5lY3RvclByb3BlcnR5ICgzMTAxKSBlbGVtZW50IHR5cGUgbm90IGZvdW5kIGluIFN5c01MIGVsZW1lbnQgdHlwZSBzZXQgIiwgRWxlbWVudEVkaXRTZXJ2aWNlVXRpbHMuZ2V0RWRpdFNlcnZpY2VQcm92aWRlcigpLmlzS25vd25FbGVtZW50VHlwZSgib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LkNvbm5lY3RvclByb3BlcnR5XzMxMDEiKSk7DQorCQl9DQorDQorCSAgICBAVGVzdA0KKwkJcHVibGljIHZvaWQgdGVzdFJlZ2lzdHJ5Q29udGVudEZvclBhcnRpY2lwYW50UHJvcGVydHlfMzA3MCgpIHsNCisJCQlBc3NlcnQuYXNzZXJ0VHJ1ZSgiUGFydGljaXBhbnRQcm9wZXJ0eSAoMzA3MCkgZWxlbWVudCB0eXBlIG5vdCBmb3VuZCBpbiBTeXNNTCBlbGVtZW50IHR5cGUgc2V0ICIsIEVsZW1lbnRFZGl0U2VydmljZVV0aWxzLmdldEVkaXRTZXJ2aWNlUHJvdmlkZXIoKS5pc0tub3duRWxlbWVudFR5cGUoIm9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5QYXJ0aWNpcGFudFByb3BlcnR5XzMwNzAiKSk7DQorCQl9DQorDQorCSAgICBAVGVzdA0KKwkJcHVibGljIHZvaWQgdGVzdFJlZ2lzdHJ5Q29udGVudEZvclBhcnRpY2lwYW50UHJvcGVydHlfMzEwMSgpIHsNCisJCQlBc3NlcnQuYXNzZXJ0VHJ1ZSgiUGFydGljaXBhbnRQcm9wZXJ0eSAoMzEwMSkgZWxlbWVudCB0eXBlIG5vdCBmb3VuZCBpbiBTeXNNTCBlbGVtZW50IHR5cGUgc2V0ICIsIEVsZW1lbnRFZGl0U2VydmljZVV0aWxzLmdldEVkaXRTZXJ2aWNlUHJvdmlkZXIoKS5pc0tub3duRWxlbWVudFR5cGUoIm9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5QYXJ0aWNpcGFudFByb3BlcnR5XzMxMDEiKSk7DQorCQl9DQorDQorCSAgICBAVGVzdA0KKwkJcHVibGljIHZvaWQgdGVzdFJlZ2lzdHJ5Q29udGVudEZvckJpbmRpbmdDb25uZWN0b3IoKSB7DQorCQkJQXNzZXJ0LmFzc2VydFRydWUoIkJpbmRpbmdDb25uZWN0b3IgZWxlbWVudCB0eXBlIG5vdCBmb3VuZCBpbiBTeXNNTCBlbGVtZW50IHR5cGUgc2V0ICIsIEVsZW1lbnRFZGl0U2VydmljZVV0aWxzLmdldEVkaXRTZXJ2aWNlUHJvdmlkZXIoKS5pc0tub3duRWxlbWVudFR5cGUoIm9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5CaW5kaW5nQ29ubmVjdG9yXzQwMTMiKSk7DQorCQl9DQorDQorCSAgICBAVGVzdA0KKwkJcHVibGljIHZvaWQgdGVzdFJlZ2lzdHJ5Q29udGVudEZvckJsb2NrXzMwODUoKSB7DQorCQkJQXNzZXJ0LmFzc2VydFRydWUoIkJsb2NrICgzMDg1KSBlbGVtZW50IHR5cGUgbm90IGZvdW5kIGluIFN5c01MIGVsZW1lbnQgdHlwZSBzZXQgIiwgRWxlbWVudEVkaXRTZXJ2aWNlVXRpbHMuZ2V0RWRpdFNlcnZpY2VQcm92aWRlcigpLmlzS25vd25FbGVtZW50VHlwZSgib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LkJsb2NrXzMwODUiKSk7DQorCQl9DQorDQorCSAgICBAVGVzdA0KKwkJcHVibGljIHZvaWQgdGVzdFJlZ2lzdHJ5Q29udGVudEZvckJsb2NrXzIwNzMoKSB7DQorCQkJQXNzZXJ0LmFzc2VydFRydWUoIkJsb2NrICgyMDczKSBlbGVtZW50IHR5cGUgbm90IGZvdW5kIGluIFN5c01MIGVsZW1lbnQgdHlwZSBzZXQgIiwgRWxlbWVudEVkaXRTZXJ2aWNlVXRpbHMuZ2V0RWRpdFNlcnZpY2VQcm92aWRlcigpLmlzS25vd25FbGVtZW50VHlwZSgib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LkJsb2NrXzIwNzMiKSk7DQorCQl9DQorDQorCSAgICBAVGVzdA0KKwkJcHVibGljIHZvaWQgdGVzdFJlZ2lzdHJ5Q29udGVudEZvckVuZFBhdGhNdWx0aXBsaWNpdHlfMzA3MCgpIHsNCisJCQlBc3NlcnQuYXNzZXJ0VHJ1ZSgiRW5kUGF0aE11bHRpcGxpY2l0eSAoMzA3MCkgZWxlbWVudCB0eXBlIG5vdCBmb3VuZCBpbiBTeXNNTCBlbGVtZW50IHR5cGUgc2V0ICIsIEVsZW1lbnRFZGl0U2VydmljZVV0aWxzLmdldEVkaXRTZXJ2aWNlUHJvdmlkZXIoKS5pc0tub3duRWxlbWVudFR5cGUoIm9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5FbmRQYXRoTXVsdGlwbGljaXR5XzMwNzAiKSk7DQorCQl9DQorDQorCSAgICBAVGVzdA0KKwkJcHVibGljIHZvaWQgdGVzdFJlZ2lzdHJ5Q29udGVudEZvckVuZFBhdGhNdWx0aXBsaWNpdHlfMzEwMSgpIHsNCisJCQlBc3NlcnQuYXNzZXJ0VHJ1ZSgiRW5kUGF0aE11bHRpcGxpY2l0eSAoMzEwMSkgZWxlbWVudCB0eXBlIG5vdCBmb3VuZCBpbiBTeXNNTCBlbGVtZW50IHR5cGUgc2V0ICIsIEVsZW1lbnRFZGl0U2VydmljZVV0aWxzLmdldEVkaXRTZXJ2aWNlUHJvdmlkZXIoKS5pc0tub3duRWxlbWVudFR5cGUoIm9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5FbmRQYXRoTXVsdGlwbGljaXR5XzMxMDEiKSk7DQorCQl9DQorDQorCSAgICBAVGVzdA0KKwkJcHVibGljIHZvaWQgdGVzdFJlZ2lzdHJ5Q29udGVudEZvckJvdW5kUmVmZXJlbmNlXzMwNzAoKSB7DQorCQkJQXNzZXJ0LmFzc2VydFRydWUoIkJvdW5kUmVmZXJlbmNlICgzMDcwKSBlbGVtZW50IHR5cGUgbm90IGZvdW5kIGluIFN5c01MIGVsZW1lbnQgdHlwZSBzZXQgIiwgRWxlbWVudEVkaXRTZXJ2aWNlVXRpbHMuZ2V0RWRpdFNlcnZpY2VQcm92aWRlcigpLmlzS25vd25FbGVtZW50VHlwZSgib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LkJvdW5kUmVmZXJlbmNlXzMwNzAiKSk7DQorCQl9DQorDQorCSAgICBAVGVzdA0KKwkJcHVibGljIHZvaWQgdGVzdFJlZ2lzdHJ5Q29udGVudEZvckJvdW5kUmVmZXJlbmNlXzMxMDEoKSB7DQorCQkJQXNzZXJ0LmFzc2VydFRydWUoIkJvdW5kUmVmZXJlbmNlICgzMTAxKSBlbGVtZW50IHR5cGUgbm90IGZvdW5kIGluIFN5c01MIGVsZW1lbnQgdHlwZSBzZXQgIiwgRWxlbWVudEVkaXRTZXJ2aWNlVXRpbHMuZ2V0RWRpdFNlcnZpY2VQcm92aWRlcigpLmlzS25vd25FbGVtZW50VHlwZSgib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LkJvdW5kUmVmZXJlbmNlXzMxMDEiKSk7DQorCQl9DQorDQorCSAgICBAVGVzdA0KKwkJcHVibGljIHZvaWQgdGVzdFJlZ2lzdHJ5Q29udGVudEZvckFkanVuY3RQcm9wZXJ0eV8zMDcwKCkgew0KKwkJCUFzc2VydC5hc3NlcnRUcnVlKCJBZGp1bmN0UHJvcGVydHkgKDMwNzApIGVsZW1lbnQgdHlwZSBub3QgZm91bmQgaW4gU3lzTUwgZWxlbWVudCB0eXBlIHNldCAiLCBFbGVtZW50RWRpdFNlcnZpY2VVdGlscy5nZXRFZGl0U2VydmljZVByb3ZpZGVyKCkuaXNLbm93bkVsZW1lbnRUeXBlKCJvcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuQWRqdW5jdFByb3BlcnR5XzMwNzAiKSk7DQorCQl9DQorDQorCSAgICBAVGVzdA0KKwkJcHVibGljIHZvaWQgdGVzdFJlZ2lzdHJ5Q29udGVudEZvckFkanVuY3RQcm9wZXJ0eV8zMTAxKCkgew0KKwkJCUFzc2VydC5hc3NlcnRUcnVlKCJBZGp1bmN0UHJvcGVydHkgKDMxMDEpIGVsZW1lbnQgdHlwZSBub3QgZm91bmQgaW4gU3lzTUwgZWxlbWVudCB0eXBlIHNldCAiLCBFbGVtZW50RWRpdFNlcnZpY2VVdGlscy5nZXRFZGl0U2VydmljZVByb3ZpZGVyKCkuaXNLbm93bkVsZW1lbnRUeXBlKCJvcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuQWRqdW5jdFByb3BlcnR5XzMxMDEiKSk7DQorCQl9DQorDQorCSAgICBAVGVzdA0KKwkJcHVibGljIHZvaWQgdGVzdFJlZ2lzdHJ5Q29udGVudEZvckNsYXNzaWZpZXJCZWhhdmlvclByb3BlcnR5XzMwNzAoKSB7DQorCQkJQXNzZXJ0LmFzc2VydFRydWUoIkNsYXNzaWZpZXJCZWhhdmlvclByb3BlcnR5ICgzMDcwKSBlbGVtZW50IHR5cGUgbm90IGZvdW5kIGluIFN5c01MIGVsZW1lbnQgdHlwZSBzZXQgIiwgRWxlbWVudEVkaXRTZXJ2aWNlVXRpbHMuZ2V0RWRpdFNlcnZpY2VQcm92aWRlcigpLmlzS25vd25FbGVtZW50VHlwZSgib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LkNsYXNzaWZpZXJCZWhhdmlvclByb3BlcnR5XzMwNzAiKSk7DQorCQl9DQorDQorCSAgICBAVGVzdA0KKwkJcHVibGljIHZvaWQgdGVzdFJlZ2lzdHJ5Q29udGVudEZvckNsYXNzaWZpZXJCZWhhdmlvclByb3BlcnR5XzMxMDEoKSB7DQorCQkJQXNzZXJ0LmFzc2VydFRydWUoIkNsYXNzaWZpZXJCZWhhdmlvclByb3BlcnR5ICgzMTAxKSBlbGVtZW50IHR5cGUgbm90IGZvdW5kIGluIFN5c01MIGVsZW1lbnQgdHlwZSBzZXQgIiwgRWxlbWVudEVkaXRTZXJ2aWNlVXRpbHMuZ2V0RWRpdFNlcnZpY2VQcm92aWRlcigpLmlzS25vd25FbGVtZW50VHlwZSgib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LkNsYXNzaWZpZXJCZWhhdmlvclByb3BlcnR5XzMxMDEiKSk7DQorCQl9DQorDQorCSAgICBAVGVzdA0KKwkJcHVibGljIHZvaWQgdGVzdFJlZ2lzdHJ5Q29udGVudEZvckl0ZW1GbG93KCkgew0KKwkJCUFzc2VydC5hc3NlcnRUcnVlKCJJdGVtRmxvdyBlbGVtZW50IHR5cGUgbm90IGZvdW5kIGluIFN5c01MIGVsZW1lbnQgdHlwZSBzZXQgIiwgRWxlbWVudEVkaXRTZXJ2aWNlVXRpbHMuZ2V0RWRpdFNlcnZpY2VQcm92aWRlcigpLmlzS25vd25FbGVtZW50VHlwZSgib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0Lkl0ZW1GbG93XzQwMjEiKSk7DQorCQl9DQorDQorCSAgICBAVGVzdA0KKwkJcHVibGljIHZvaWQgdGVzdFJlZ2lzdHJ5Q29udGVudEZvckZsb3dQcm9wZXJ0eV8zMDcwKCkgew0KKwkJCUFzc2VydC5hc3NlcnRUcnVlKCJGbG93UHJvcGVydHkgKDMwNzApIGVsZW1lbnQgdHlwZSBub3QgZm91bmQgaW4gU3lzTUwgZWxlbWVudCB0eXBlIHNldCAiLCBFbGVtZW50RWRpdFNlcnZpY2VVdGlscy5nZXRFZGl0U2VydmljZVByb3ZpZGVyKCkuaXNLbm93bkVsZW1lbnRUeXBlKCJvcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuRmxvd1Byb3BlcnR5XzMwNzAiKSk7DQorCQl9DQorDQorCSAgICBAVGVzdA0KKwkJcHVibGljIHZvaWQgdGVzdFJlZ2lzdHJ5Q29udGVudEZvckZsb3dQcm9wZXJ0eV8zMTAxKCkgew0KKwkJCUFzc2VydC5hc3NlcnRUcnVlKCJGbG93UHJvcGVydHkgKDMxMDEpIGVsZW1lbnQgdHlwZSBub3QgZm91bmQgaW4gU3lzTUwgZWxlbWVudCB0eXBlIHNldCAiLCBFbGVtZW50RWRpdFNlcnZpY2VVdGlscy5nZXRFZGl0U2VydmljZVByb3ZpZGVyKCkuaXNLbm93bkVsZW1lbnRUeXBlKCJvcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuRmxvd1Byb3BlcnR5XzMxMDEiKSk7DQorCQl9DQorDQorCSAgICBAVGVzdA0KKwkJcHVibGljIHZvaWQgdGVzdFJlZ2lzdHJ5Q29udGVudEZvckZ1bGxQb3J0KCkgew0KKwkJCUFzc2VydC5hc3NlcnRUcnVlKCJGdWxsUG9ydCBlbGVtZW50IHR5cGUgbm90IGZvdW5kIGluIFN5c01MIGVsZW1lbnQgdHlwZSBzZXQgIiwgRWxlbWVudEVkaXRTZXJ2aWNlVXRpbHMuZ2V0RWRpdFNlcnZpY2VQcm92aWRlcigpLmlzS25vd25FbGVtZW50VHlwZSgib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LkZ1bGxQb3J0XzMwNjkiKSk7DQorCQl9DQorDQorCSAgICBAVGVzdA0KKwkJcHVibGljIHZvaWQgdGVzdFJlZ2lzdHJ5Q29udGVudEZvckludGVyZmFjZUJsb2NrXzMwODUoKSB7DQorCQkJQXNzZXJ0LmFzc2VydFRydWUoIkludGVyZmFjZUJsb2NrICgzMDg1KSBlbGVtZW50IHR5cGUgbm90IGZvdW5kIGluIFN5c01MIGVsZW1lbnQgdHlwZSBzZXQgIiwgRWxlbWVudEVkaXRTZXJ2aWNlVXRpbHMuZ2V0RWRpdFNlcnZpY2VQcm92aWRlcigpLmlzS25vd25FbGVtZW50VHlwZSgib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LkludGVyZmFjZUJsb2NrXzMwODUiKSk7DQorCQl9DQorDQorCSAgICBAVGVzdA0KKwkJcHVibGljIHZvaWQgdGVzdFJlZ2lzdHJ5Q29udGVudEZvckludGVyZmFjZUJsb2NrXzIwNzMoKSB7DQorCQkJQXNzZXJ0LmFzc2VydFRydWUoIkludGVyZmFjZUJsb2NrICgyMDczKSBlbGVtZW50IHR5cGUgbm90IGZvdW5kIGluIFN5c01MIGVsZW1lbnQgdHlwZSBzZXQgIiwgRWxlbWVudEVkaXRTZXJ2aWNlVXRpbHMuZ2V0RWRpdFNlcnZpY2VQcm92aWRlcigpLmlzS25vd25FbGVtZW50VHlwZSgib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LkludGVyZmFjZUJsb2NrXzIwNzMiKSk7DQorCQl9DQorDQorCSAgICBAVGVzdA0KKwkJcHVibGljIHZvaWQgdGVzdFJlZ2lzdHJ5Q29udGVudEZvclByb3h5UG9ydCgpIHsNCisJCQlBc3NlcnQuYXNzZXJ0VHJ1ZSgiUHJveHlQb3J0IGVsZW1lbnQgdHlwZSBub3QgZm91bmQgaW4gU3lzTUwgZWxlbWVudCB0eXBlIHNldCAiLCBFbGVtZW50RWRpdFNlcnZpY2VVdGlscy5nZXRFZGl0U2VydmljZVByb3ZpZGVyKCkuaXNLbm93bkVsZW1lbnRUeXBlKCJvcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuUHJveHlQb3J0XzMwNjkiKSk7DQorCQl9DQorDQorCSAgICBAVGVzdA0KKwkJcHVibGljIHZvaWQgdGVzdFJlZ2lzdHJ5Q29udGVudEZvckNoYW5nZVN0cnVjdHVyYWxGZWF0dXJlRXZlbnQoKSB7DQorCQkJQXNzZXJ0LmFzc2VydFRydWUoIkNoYW5nZVN0cnVjdHVyYWxGZWF0dXJlRXZlbnQgZWxlbWVudCB0eXBlIG5vdCBmb3VuZCBpbiBTeXNNTCBlbGVtZW50IHR5cGUgc2V0ICIsIEVsZW1lbnRFZGl0U2VydmljZVV0aWxzLmdldEVkaXRTZXJ2aWNlUHJvdmlkZXIoKS5pc0tub3duRWxlbWVudFR5cGUoIm9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5DaGFuZ2VTdHJ1Y3R1cmFsRmVhdHVyZUV2ZW50XzIwODgiKSk7DQorCQl9DQorDQorCSAgICBAVGVzdA0KKwkJcHVibGljIHZvaWQgdGVzdFJlZ2lzdHJ5Q29udGVudEZvckNvbnRyb2xPcGVyYXRvcl9PcGVyYXRpb24oKSB7DQorCQkJQXNzZXJ0LmFzc2VydFRydWUoIkNvbnRyb2xPcGVyYXRvciBPcGVyYXRpb24gZWxlbWVudCB0eXBlIG5vdCBmb3VuZCBpbiBTeXNNTCBlbGVtZW50IHR5cGUgc2V0ICIsIEVsZW1lbnRFZGl0U2VydmljZVV0aWxzLmdldEVkaXRTZXJ2aWNlUHJvdmlkZXIoKS5pc0tub3duRWxlbWVudFR5cGUoIm9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5Db250cm9sT3BlcmF0b3JfT3BlcmF0aW9uXzMxMDIiKSk7DQorCQl9DQorDQorCSAgICBAVGVzdA0KKwkJcHVibGljIHZvaWQgdGVzdFJlZ2lzdHJ5Q29udGVudEZvclJhdGVfUGFyYW1ldGVyKCkgew0KKwkJCUFzc2VydC5hc3NlcnRUcnVlKCJSYXRlIFBhcmFtZXRlciBlbGVtZW50IHR5cGUgbm90IGZvdW5kIGluIFN5c01MIGVsZW1lbnQgdHlwZSBzZXQgIiwgRWxlbWVudEVkaXRTZXJ2aWNlVXRpbHMuZ2V0RWRpdFNlcnZpY2VQcm92aWRlcigpLmlzS25vd25FbGVtZW50VHlwZSgib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LlJhdGVfUGFyYW1ldGVyXzMwODgiKSk7DQorCQl9DQorDQorCSAgICBAVGVzdA0KKwkJcHVibGljIHZvaWQgdGVzdFJlZ2lzdHJ5Q29udGVudEZvckRpc2NyZXRlX1BhcmFtZXRlcigpIHsNCisJCQlBc3NlcnQuYXNzZXJ0VHJ1ZSgiRGlzY3JldGUgUGFyYW1ldGVyIGVsZW1lbnQgdHlwZSBub3QgZm91bmQgaW4gU3lzTUwgZWxlbWVudCB0eXBlIHNldCAiLCBFbGVtZW50RWRpdFNlcnZpY2VVdGlscy5nZXRFZGl0U2VydmljZVByb3ZpZGVyKCkuaXNLbm93bkVsZW1lbnRUeXBlKCJvcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuRGlzY3JldGVfUGFyYW1ldGVyXzMwODgiKSk7DQorCQl9DQorDQorCSAgICBAVGVzdA0KKwkJcHVibGljIHZvaWQgdGVzdFJlZ2lzdHJ5Q29udGVudEZvckNvbnRpbnVvdXNfUGFyYW1ldGVyKCkgew0KKwkJCUFzc2VydC5hc3NlcnRUcnVlKCJDb250aW51b3VzIFBhcmFtZXRlciBlbGVtZW50IHR5cGUgbm90IGZvdW5kIGluIFN5c01MIGVsZW1lbnQgdHlwZSBzZXQgIiwgRWxlbWVudEVkaXRTZXJ2aWNlVXRpbHMuZ2V0RWRpdFNlcnZpY2VQcm92aWRlcigpLmlzS25vd25FbGVtZW50VHlwZSgib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LkNvbnRpbnVvdXNfUGFyYW1ldGVyXzMwODgiKSk7DQorCQl9DQorDQorCSAgICBAVGVzdA0KKwkJcHVibGljIHZvaWQgdGVzdFJlZ2lzdHJ5Q29udGVudEZvck9wdGlvbmFsKCkgew0KKwkJCUFzc2VydC5hc3NlcnRUcnVlKCJPcHRpb25hbCBlbGVtZW50IHR5cGUgbm90IGZvdW5kIGluIFN5c01MIGVsZW1lbnQgdHlwZSBzZXQgIiwgRWxlbWVudEVkaXRTZXJ2aWNlVXRpbHMuZ2V0RWRpdFNlcnZpY2VQcm92aWRlcigpLmlzS25vd25FbGVtZW50VHlwZSgib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0Lk9wdGlvbmFsXzMwODgiKSk7DQorCQl9DQorDQorCSAgICBAVGVzdA0KKwkJcHVibGljIHZvaWQgdGVzdFJlZ2lzdHJ5Q29udGVudEZvclJhdGlvbmFsZV8zMDk3KCkgew0KKwkJCUFzc2VydC5hc3NlcnRUcnVlKCJSYXRpb25hbGUgKDMwOTcpIGVsZW1lbnQgdHlwZSBub3QgZm91bmQgaW4gU3lzTUwgZWxlbWVudCB0eXBlIHNldCAiLCBFbGVtZW50RWRpdFNlcnZpY2VVdGlscy5nZXRFZGl0U2VydmljZVByb3ZpZGVyKCkuaXNLbm93bkVsZW1lbnRUeXBlKCJvcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuUmF0aW9uYWxlXzMwOTciKSk7DQorCQl9DQorDQorCSAgICBAVGVzdA0KKwkJcHVibGljIHZvaWQgdGVzdFJlZ2lzdHJ5Q29udGVudEZvclJhdGlvbmFsZV8yMTA5KCkgew0KKwkJCUFzc2VydC5hc3NlcnRUcnVlKCJSYXRpb25hbGUgKDIxMDkpIGVsZW1lbnQgdHlwZSBub3QgZm91bmQgaW4gU3lzTUwgZWxlbWVudCB0eXBlIHNldCAiLCBFbGVtZW50RWRpdFNlcnZpY2VVdGlscy5nZXRFZGl0U2VydmljZVByb3ZpZGVyKCkuaXNLbm93bkVsZW1lbnRUeXBlKCJvcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuUmF0aW9uYWxlXzIxMDkiKSk7DQorCQl9DQorDQorCSAgICBAVGVzdA0KKwkJcHVibGljIHZvaWQgdGVzdFJlZ2lzdHJ5Q29udGVudEZvclZpZXdfUGFja2FnZSgpIHsNCisJCQlBc3NlcnQuYXNzZXJ0VHJ1ZSgiVmlldyBQYWNrYWdlIGVsZW1lbnQgdHlwZSBub3QgZm91bmQgaW4gU3lzTUwgZWxlbWVudCB0eXBlIHNldCAiLCBFbGVtZW50RWRpdFNlcnZpY2VVdGlscy5nZXRFZGl0U2VydmljZVByb3ZpZGVyKCkuaXNLbm93bkVsZW1lbnRUeXBlKCJvcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuVmlld19QYWNrYWdlX0NvbXBvc2l0ZVN0cnVjdHVyZSIpKTsNCisJCX0NCisNCisJICAgIEBUZXN0DQorCQlwdWJsaWMgdm9pZCB0ZXN0UmVnaXN0cnlDb250ZW50Rm9yVmlld18zMDg1KCkgew0KKwkJCUFzc2VydC5hc3NlcnRUcnVlKCJWaWV3ICgzMDg1KSBlbGVtZW50IHR5cGUgbm90IGZvdW5kIGluIFN5c01MIGVsZW1lbnQgdHlwZSBzZXQgIiwgRWxlbWVudEVkaXRTZXJ2aWNlVXRpbHMuZ2V0RWRpdFNlcnZpY2VQcm92aWRlcigpLmlzS25vd25FbGVtZW50VHlwZSgib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LlZpZXdfQ2xhc3NfMzA4NSIpKTsNCisJCX0NCisNCisJICAgIEBUZXN0DQorCQlwdWJsaWMgdm9pZCB0ZXN0UmVnaXN0cnlDb250ZW50Rm9yVmlld18yMDczKCkgew0KKwkJCUFzc2VydC5hc3NlcnRUcnVlKCJWaWV3ICgyMDczKSBlbGVtZW50IHR5cGUgbm90IGZvdW5kIGluIFN5c01MIGVsZW1lbnQgdHlwZSBzZXQgIiwgRWxlbWVudEVkaXRTZXJ2aWNlVXRpbHMuZ2V0RWRpdFNlcnZpY2VQcm92aWRlcigpLmlzS25vd25FbGVtZW50VHlwZSgib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LlZpZXdfQ2xhc3NfMjA3MyIpKTsNCisJCX0NCisNCisJICAgIEBUZXN0DQorCQlwdWJsaWMgdm9pZCB0ZXN0UmVnaXN0cnlDb250ZW50Rm9yQ29uZm9ybV9EZXBlbmRlbmN5KCkgew0KKwkJCUFzc2VydC5hc3NlcnRUcnVlKCJDb25mb3JtIERlcGVuZGVuY3kgZWxlbWVudCB0eXBlIG5vdCBmb3VuZCBpbiBTeXNNTCBlbGVtZW50IHR5cGUgc2V0ICIsIEVsZW1lbnRFZGl0U2VydmljZVV0aWxzLmdldEVkaXRTZXJ2aWNlUHJvdmlkZXIoKS5pc0tub3duRWxlbWVudFR5cGUoIm9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5Db25mb3JtX0RlcGVuZGVuY3lfNDAxMCIpKTsNCisJCX0NCisNCisJICAgIEBUZXN0DQorCQlwdWJsaWMgdm9pZCB0ZXN0UmVnaXN0cnlDb250ZW50Rm9yQ29uZm9ybV9HZW5lcmFsaXphdGlvbigpIHsNCisJCQlBc3NlcnQuYXNzZXJ0VHJ1ZSgiQ29uZm9ybSBHZW5lcmFsaXphdGlvbiBlbGVtZW50IHR5cGUgbm90IGZvdW5kIGluIFN5c01MIGVsZW1lbnQgdHlwZSBzZXQgIiwgRWxlbWVudEVkaXRTZXJ2aWNlVXRpbHMuZ2V0RWRpdFNlcnZpY2VQcm92aWRlcigpLmlzS25vd25FbGVtZW50VHlwZSgib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LkNvbmZvcm1fR2VuZXJhbGl6YXRpb25fNDAxNSIpKTsNCisJCX0NCisNCisJICAgIEBUZXN0DQorCQlwdWJsaWMgdm9pZCB0ZXN0UmVnaXN0cnlDb250ZW50Rm9yUHJvYmxlbV8zMDk3KCkgew0KKwkJCUFzc2VydC5hc3NlcnRUcnVlKCJQcm9ibGVtICgzMDk3KSBlbGVtZW50IHR5cGUgbm90IGZvdW5kIGluIFN5c01MIGVsZW1lbnQgdHlwZSBzZXQgIiwgRWxlbWVudEVkaXRTZXJ2aWNlVXRpbHMuZ2V0RWRpdFNlcnZpY2VQcm92aWRlcigpLmlzS25vd25FbGVtZW50VHlwZSgib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LlByb2JsZW1fMzA5NyIpKTsNCisJCX0NCisNCisJICAgIEBUZXN0DQorCQlwdWJsaWMgdm9pZCB0ZXN0UmVnaXN0cnlDb250ZW50Rm9yUHJvYmxlbV8yMTA5KCkgew0KKwkJCUFzc2VydC5hc3NlcnRUcnVlKCJQcm9ibGVtICgyMTA5KSBlbGVtZW50IHR5cGUgbm90IGZvdW5kIGluIFN5c01MIGVsZW1lbnQgdHlwZSBzZXQgIiwgRWxlbWVudEVkaXRTZXJ2aWNlVXRpbHMuZ2V0RWRpdFNlcnZpY2VQcm92aWRlcigpLmlzS25vd25FbGVtZW50VHlwZSgib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LlByb2JsZW1fMjEwOSIpKTsNCisJCX0NCisNCisJICAgIEBUZXN0DQorCQlwdWJsaWMgdm9pZCB0ZXN0UmVnaXN0cnlDb250ZW50Rm9yVmlld1BvaW50XzMwODUoKSB7DQorCQkJQXNzZXJ0LmFzc2VydFRydWUoIlZpZXdQb2ludCAoMzA4NSkgZWxlbWVudCB0eXBlIG5vdCBmb3VuZCBpbiBTeXNNTCBlbGVtZW50IHR5cGUgc2V0ICIsIEVsZW1lbnRFZGl0U2VydmljZVV0aWxzLmdldEVkaXRTZXJ2aWNlUHJvdmlkZXIoKS5pc0tub3duRWxlbWVudFR5cGUoIm9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5WaWV3UG9pbnRfMzA4NSIpKTsNCisJCX0NCisNCisJICAgIEBUZXN0DQorCQlwdWJsaWMgdm9pZCB0ZXN0UmVnaXN0cnlDb250ZW50Rm9yVmlld1BvaW50XzIwNzMoKSB7DQorCQkJQXNzZXJ0LmFzc2VydFRydWUoIlZpZXdQb2ludCAoMjA3MykgZWxlbWVudCB0eXBlIG5vdCBmb3VuZCBpbiBTeXNNTCBlbGVtZW50IHR5cGUgc2V0ICIsIEVsZW1lbnRFZGl0U2VydmljZVV0aWxzLmdldEVkaXRTZXJ2aWNlUHJvdmlkZXIoKS5pc0tub3duRWxlbWVudFR5cGUoIm9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5WaWV3UG9pbnRfMjA3MyIpKTsNCisJCX0NCisNCisJICAgIEBUZXN0DQorCQlwdWJsaWMgdm9pZCB0ZXN0UmVnaXN0cnlDb250ZW50Rm9yRXhwb3NlKCkgew0KKwkJCUFzc2VydC5hc3NlcnRUcnVlKCJFeHBvc2UgZWxlbWVudCB0eXBlIG5vdCBmb3VuZCBpbiBTeXNNTCBlbGVtZW50IHR5cGUgc2V0ICIsIEVsZW1lbnRFZGl0U2VydmljZVV0aWxzLmdldEVkaXRTZXJ2aWNlUHJvdmlkZXIoKS5pc0tub3duRWxlbWVudFR5cGUoIm9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5FeHBvc2VfNDAxMCIpKTsNCisJCX0NCisNCisJICAgIEBUZXN0DQorCQlwdWJsaWMgdm9pZCB0ZXN0UmVnaXN0cnlDb250ZW50Rm9yRWxlbWVudEdyb3VwXzMwOTcoKSB7DQorCQkJQXNzZXJ0LmFzc2VydFRydWUoIkVsZW1lbnRHcm91cCAoMzA5NykgZWxlbWVudCB0eXBlIG5vdCBmb3VuZCBpbiBTeXNNTCBlbGVtZW50IHR5cGUgc2V0ICIsIEVsZW1lbnRFZGl0U2VydmljZVV0aWxzLmdldEVkaXRTZXJ2aWNlUHJvdmlkZXIoKS5pc0tub3duRWxlbWVudFR5cGUoIm9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5FbGVtZW50R3JvdXBfMzA5NyIpKTsNCisJCX0NCisNCisJICAgIEBUZXN0DQorCQlwdWJsaWMgdm9pZCB0ZXN0UmVnaXN0cnlDb250ZW50Rm9yRWxlbWVudEdyb3VwXzIxMDkoKSB7DQorCQkJQXNzZXJ0LmFzc2VydFRydWUoIkVsZW1lbnRHcm91cCAoMjEwOSkgZWxlbWVudCB0eXBlIG5vdCBmb3VuZCBpbiBTeXNNTCBlbGVtZW50IHR5cGUgc2V0ICIsIEVsZW1lbnRFZGl0U2VydmljZVV0aWxzLmdldEVkaXRTZXJ2aWNlUHJvdmlkZXIoKS5pc0tub3duRWxlbWVudFR5cGUoIm9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5FbGVtZW50R3JvdXBfMjEwOSIpKTsNCisJCX0NCisNCisJICAgIEBUZXN0DQorCQlwdWJsaWMgdm9pZCB0ZXN0UmVnaXN0cnlDb250ZW50Rm9yQ29uc3RyYWludEJsb2NrXzMwODUoKSB7DQorCQkJQXNzZXJ0LmFzc2VydFRydWUoIkNvbnN0cmFpbnRCbG9jayAoMzA4NSkgZWxlbWVudCB0eXBlIG5vdCBmb3VuZCBpbiBTeXNNTCBlbGVtZW50IHR5cGUgc2V0ICIsIEVsZW1lbnRFZGl0U2VydmljZVV0aWxzLmdldEVkaXRTZXJ2aWNlUHJvdmlkZXIoKS5pc0tub3duRWxlbWVudFR5cGUoIm9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5Db25zdHJhaW50QmxvY2tfMzA4NSIpKTsNCisJCX0NCisNCisJICAgIEBUZXN0DQorCQlwdWJsaWMgdm9pZCB0ZXN0UmVnaXN0cnlDb250ZW50Rm9yQ29uc3RyYWludEJsb2NrXzIwNzMoKSB7DQorCQkJQXNzZXJ0LmFzc2VydFRydWUoIkNvbnN0cmFpbnRCbG9jayAoMjA3MykgZWxlbWVudCB0eXBlIG5vdCBmb3VuZCBpbiBTeXNNTCBlbGVtZW50IHR5cGUgc2V0ICIsIEVsZW1lbnRFZGl0U2VydmljZVV0aWxzLmdldEVkaXRTZXJ2aWNlUHJvdmlkZXIoKS5pc0tub3duRWxlbWVudFR5cGUoIm9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5Db25zdHJhaW50QmxvY2tfMjA3MyIpKTsNCisJCX0NCisNCisJICAgIEBUZXN0DQorCQlwdWJsaWMgdm9pZCB0ZXN0UmVnaXN0cnlDb250ZW50Rm9yQWxsb2NhdGVfQWJzdHJhY3Rpb24oKSB7DQorCQkJQXNzZXJ0LmFzc2VydFRydWUoIkFsbG9jYXRlIEFic3RyYWN0aW9uIGVsZW1lbnQgdHlwZSBub3QgZm91bmQgaW4gU3lzTUwgZWxlbWVudCB0eXBlIHNldCAiLCBFbGVtZW50RWRpdFNlcnZpY2VVdGlscy5nZXRFZGl0U2VydmljZVByb3ZpZGVyKCkuaXNLbm93bkVsZW1lbnRUeXBlKCJvcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuQWxsb2NhdGVfQWJzdHJhY3Rpb25fNDAwNyIpKTsNCisJCX0NCisNCisJICAgIEBUZXN0DQorCQlwdWJsaWMgdm9pZCB0ZXN0UmVnaXN0cnlDb250ZW50Rm9yRGVyaXZlUmVxdF9BYnN0cmFjdGlvbigpIHsNCisJCQlBc3NlcnQuYXNzZXJ0VHJ1ZSgiRGVyaXZlUmVxdCBBYnN0cmFjdGlvbiBlbGVtZW50IHR5cGUgbm90IGZvdW5kIGluIFN5c01MIGVsZW1lbnQgdHlwZSBzZXQgIiwgRWxlbWVudEVkaXRTZXJ2aWNlVXRpbHMuZ2V0RWRpdFNlcnZpY2VQcm92aWRlcigpLmlzS25vd25FbGVtZW50VHlwZSgib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LkRlcml2ZVJlcXRfQWJzdHJhY3Rpb25fNDAwNyIpKTsNCisJCX0NCisNCisJICAgIEBUZXN0DQorCQlwdWJsaWMgdm9pZCB0ZXN0UmVnaXN0cnlDb250ZW50Rm9yQ29weV9BYnN0cmFjdGlvbigpIHsNCisJCQlBc3NlcnQuYXNzZXJ0VHJ1ZSgiQ29weSBBYnN0cmFjdGlvbiBlbGVtZW50IHR5cGUgbm90IGZvdW5kIGluIFN5c01MIGVsZW1lbnQgdHlwZSBzZXQgIiwgRWxlbWVudEVkaXRTZXJ2aWNlVXRpbHMuZ2V0RWRpdFNlcnZpY2VQcm92aWRlcigpLmlzS25vd25FbGVtZW50VHlwZSgib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LkNvcHlfQWJzdHJhY3Rpb25fNDAwNyIpKTsNCisJCX0NCisNCisJICAgIEBUZXN0DQorCQlwdWJsaWMgdm9pZCB0ZXN0UmVnaXN0cnlDb250ZW50Rm9yU2F0aXNmeV9BYnN0cmFjdGlvbigpIHsNCisJCQlBc3NlcnQuYXNzZXJ0VHJ1ZSgiU2F0aXNmeSBBYnN0cmFjdGlvbiBlbGVtZW50IHR5cGUgbm90IGZvdW5kIGluIFN5c01MIGVsZW1lbnQgdHlwZSBzZXQgIiwgRWxlbWVudEVkaXRTZXJ2aWNlVXRpbHMuZ2V0RWRpdFNlcnZpY2VQcm92aWRlcigpLmlzS25vd25FbGVtZW50VHlwZSgib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LlNhdGlzZnlfQWJzdHJhY3Rpb25fNDAwNyIpKTsNCisJCX0NCisNCisJICAgIEBUZXN0DQorCQlwdWJsaWMgdm9pZCB0ZXN0UmVnaXN0cnlDb250ZW50Rm9yVGVzdENhc2VfT3BlcmF0aW9uKCkgew0KKwkJCUFzc2VydC5hc3NlcnRUcnVlKCJUZXN0Q2FzZSBPcGVyYXRpb24gZWxlbWVudCB0eXBlIG5vdCBmb3VuZCBpbiBTeXNNTCBlbGVtZW50IHR5cGUgc2V0ICIsIEVsZW1lbnRFZGl0U2VydmljZVV0aWxzLmdldEVkaXRTZXJ2aWNlUHJvdmlkZXIoKS5pc0tub3duRWxlbWVudFR5cGUoIm9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5UZXN0Q2FzZV9PcGVyYXRpb25fMzEwMiIpKTsNCisJCX0NCisNCisJICAgIEBUZXN0DQorCQlwdWJsaWMgdm9pZCB0ZXN0UmVnaXN0cnlDb250ZW50Rm9yUmVxdWlyZW1lbnRfMzA4NSgpIHsNCisJCQlBc3NlcnQuYXNzZXJ0VHJ1ZSgiUmVxdWlyZW1lbnQgKDMwODUpIGVsZW1lbnQgdHlwZSBub3QgZm91bmQgaW4gU3lzTUwgZWxlbWVudCB0eXBlIHNldCAiLCBFbGVtZW50RWRpdFNlcnZpY2VVdGlscy5nZXRFZGl0U2VydmljZVByb3ZpZGVyKCkuaXNLbm93bkVsZW1lbnRUeXBlKCJvcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuUmVxdWlyZW1lbnRfMzA4NSIpKTsNCisJCX0NCisNCisJICAgIEBUZXN0DQorCQlwdWJsaWMgdm9pZCB0ZXN0UmVnaXN0cnlDb250ZW50Rm9yUmVxdWlyZW1lbnRfMjA3MygpIHsNCisJCQlBc3NlcnQuYXNzZXJ0VHJ1ZSgiUmVxdWlyZW1lbnQgKDIwNzMpIGVsZW1lbnQgdHlwZSBub3QgZm91bmQgaW4gU3lzTUwgZWxlbWVudCB0eXBlIHNldCAiLCBFbGVtZW50RWRpdFNlcnZpY2VVdGlscy5nZXRFZGl0U2VydmljZVByb3ZpZGVyKCkuaXNLbm93bkVsZW1lbnRUeXBlKCJvcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuUmVxdWlyZW1lbnRfMjA3MyIpKTsNCisJCX0NCisNCisJICAgIEBUZXN0DQorCQlwdWJsaWMgdm9pZCB0ZXN0UmVnaXN0cnlDb250ZW50Rm9yVmVyaWZ5X0Fic3RyYWN0aW9uKCkgew0KKwkJCUFzc2VydC5hc3NlcnRUcnVlKCJWZXJpZnkgQWJzdHJhY3Rpb24gZWxlbWVudCB0eXBlIG5vdCBmb3VuZCBpbiBTeXNNTCBlbGVtZW50IHR5cGUgc2V0ICIsIEVsZW1lbnRFZGl0U2VydmljZVV0aWxzLmdldEVkaXRTZXJ2aWNlUHJvdmlkZXIoKS5pc0tub3duRWxlbWVudFR5cGUoIm9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5WZXJpZnlfQWJzdHJhY3Rpb25fNDAwNyIpKTsNCisJCX0NCisNCisJICAgIEBUZXN0DQorCQlwdWJsaWMgdm9pZCB0ZXN0UmVnaXN0cnlDb250ZW50Rm9yVHJhY2VfQWJzdHJhY3Rpb24oKSB7DQorCQkJQXNzZXJ0LmFzc2VydFRydWUoIlRyYWNlIEFic3RyYWN0aW9uIGVsZW1lbnQgdHlwZSBub3QgZm91bmQgaW4gU3lzTUwgZWxlbWVudCB0eXBlIHNldCAiLCBFbGVtZW50RWRpdFNlcnZpY2VVdGlscy5nZXRFZGl0U2VydmljZVByb3ZpZGVyKCkuaXNLbm93bkVsZW1lbnRUeXBlKCJvcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuVHJhY2VfQWJzdHJhY3Rpb25fNDAwNyIpKTsNCisJCX0NCisNCisJICAgIEBUZXN0DQorCQlwdWJsaWMgdm9pZCB0ZXN0UmVnaXN0cnlDb250ZW50Rm9yUmVmaW5lX0Fic3RyYWN0aW9uKCkgew0KKwkJCUFzc2VydC5hc3NlcnRUcnVlKCJSZWZpbmUgQWJzdHJhY3Rpb24gZWxlbWVudCB0eXBlIG5vdCBmb3VuZCBpbiBTeXNNTCBlbGVtZW50IHR5cGUgc2V0ICIsIEVsZW1lbnRFZGl0U2VydmljZVV0aWxzLmdldEVkaXRTZXJ2aWNlUHJvdmlkZXIoKS5pc0tub3duRWxlbWVudFR5cGUoIm9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5SZWZpbmVfQWJzdHJhY3Rpb25fNDAwNyIpKTsNCisJCX0NCisNCisJICAgIEBUZXN0DQorCQlwdWJsaWMgdm9pZCB0ZXN0UmVnaXN0cnlDb250ZW50Rm9yRmxvd1BvcnQoKSB7DQorCQkJQXNzZXJ0LmFzc2VydFRydWUoIkZsb3dQb3J0IGVsZW1lbnQgdHlwZSBub3QgZm91bmQgaW4gU3lzTUwgZWxlbWVudCB0eXBlIHNldCAiLCBFbGVtZW50RWRpdFNlcnZpY2VVdGlscy5nZXRFZGl0U2VydmljZVByb3ZpZGVyKCkuaXNLbm93bkVsZW1lbnRUeXBlKCJvcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuRmxvd1BvcnRfMzA2OSIpKTsNCisJCX0NCisNCisJICAgIEBUZXN0DQorCQlwdWJsaWMgdm9pZCB0ZXN0UmVnaXN0cnlDb250ZW50Rm9yRmxvd1NwZWNpZmljYXRpb25fMzA4NygpIHsNCisJCQlBc3NlcnQuYXNzZXJ0VHJ1ZSgiRmxvd1NwZWNpZmljYXRpb24gKDMwODcpIGVsZW1lbnQgdHlwZSBub3QgZm91bmQgaW4gU3lzTUwgZWxlbWVudCB0eXBlIHNldCAiLCBFbGVtZW50RWRpdFNlcnZpY2VVdGlscy5nZXRFZGl0U2VydmljZVByb3ZpZGVyKCkuaXNLbm93bkVsZW1lbnRUeXBlKCJvcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuRmxvd1NwZWNpZmljYXRpb25fMzA4NyIpKTsNCisJCX0NCisNCisJICAgIEBUZXN0DQorCQlwdWJsaWMgdm9pZCB0ZXN0UmVnaXN0cnlDb250ZW50Rm9yRmxvd1NwZWNpZmljYXRpb25fMjA3NigpIHsNCisJCQlBc3NlcnQuYXNzZXJ0VHJ1ZSgiRmxvd1NwZWNpZmljYXRpb24gKDIwNzYpIGVsZW1lbnQgdHlwZSBub3QgZm91bmQgaW4gU3lzTUwgZWxlbWVudCB0eXBlIHNldCAiLCBFbGVtZW50RWRpdFNlcnZpY2VVdGlscy5nZXRFZGl0U2VydmljZVByb3ZpZGVyKCkuaXNLbm93bkVsZW1lbnRUeXBlKCJvcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuRmxvd1NwZWNpZmljYXRpb25fMjA3NiIpKTsNCisJCX0NCisNCit9DQpkaWZmIC0tZ2l0IGEvZGlhZ3JhbS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGlhZ3JhbS5jb21tb24udGVzdHMvc3JjL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9kaWFncmFtL2NvbW1vbi90ZXN0cy9TeXNNTDE0VU1MQ2xhc3NEaWFncmFtRWxlbWVudFR5cGVzVGVzdC5qYXZhIGIvZGlhZ3JhbS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGlhZ3JhbS5jb21tb24udGVzdHMvc3JjL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9kaWFncmFtL2NvbW1vbi90ZXN0cy9TeXNNTDE0VU1MQ2xhc3NEaWFncmFtRWxlbWVudFR5cGVzVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgxYTViZmYKLS0tIC9kZXYvbnVsbAorKysgYi9kaWFncmFtL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kaWFncmFtLmNvbW1vbi50ZXN0cy9zcmMvb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L2RpYWdyYW0vY29tbW9uL3Rlc3RzL1N5c01MMTRVTUxDbGFzc0RpYWdyYW1FbGVtZW50VHlwZXNUZXN0LmphdmEKQEAgLTAsMCArMSw3MzcgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyAqIENvcHlyaWdodCAoYykgMjAxNSBDRUEgTElTVC4NCisgKg0KKyAqICAgIA0KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCisgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCisgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICoNCisgKiBDb250cmlidXRvcnM6DQorICogIEJlbm9pdCBNYWdnaSAoQ0VBIExJU1QpIGJlbm9pdC5tYWdnaUBjZWEuZnIgLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24NCisgKiAgDQorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KK3BhY2thZ2Ugb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRpYWdyYW0uY29tbW9uLnRlc3RzOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLmluZnJhLmVsZW1lbnR0eXBlc2NvbmZpZ3VyYXRpb25zLkVsZW1lbnRUeXBlU2V0Q29uZmlndXJhdGlvbjsNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5pbmZyYS5lbGVtZW50dHlwZXNjb25maWd1cmF0aW9ucy5yZWdpc3RyaWVzLkVsZW1lbnRUeXBlU2V0Q29uZmlndXJhdGlvblJlZ2lzdHJ5Ow0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLmluZnJhLnNlcnZpY2VzLmVkaXQuc2VydmljZS5FbGVtZW50RWRpdFNlcnZpY2VVdGlsczsNCitpbXBvcnQgb3JnLmp1bml0LkFzc2VydDsNCitpbXBvcnQgb3JnLmp1bml0LkJlZm9yZUNsYXNzOw0KK2ltcG9ydCBvcmcuanVuaXQuVGVzdDsNCisNCisvKioNCisgKiBUaGlzIGNsYXNzIGlzIHRvIGNoZWNrIGFueSBjaGFuZ2UgaW4gdGhlIFN5c01MIDEuNCBlbGVtZW50IHR5cGUgaWQNCisgKiAoc2luY2UgdGhlIGlkcyBjYW4gYmUgdXNlZCBhIHNwZWNpYWxpemF0aW9uIHRoZXkgYXJlIHBhcnQgb2YgcHVibGljIEFQSSkNCisgKg0KKyAqLw0KK3B1YmxpYyBjbGFzcyBTeXNNTDE0VU1MQ2xhc3NEaWFncmFtRWxlbWVudFR5cGVzVGVzdCB7DQorDQorCUBCZWZvcmVDbGFzcw0KKwlwdWJsaWMgc3RhdGljIHZvaWQgbG9hZFN5c01MMTRVTUxDbGFzc0RpYWdyYW1EZWZpbml0aW9uKCkgew0KKwkJRWxlbWVudFR5cGVTZXRDb25maWd1cmF0aW9uUmVnaXN0cnkgaW5zdGFuY2UgPSBFbGVtZW50VHlwZVNldENvbmZpZ3VyYXRpb25SZWdpc3RyeS5nZXRJbnN0YW5jZSgpOwkJDQorCQlFbGVtZW50VHlwZVNldENvbmZpZ3VyYXRpb24gY2VsZW1lbnRUeXBlU2V0Q29uZmlndXJhdGlvbiA9IGluc3RhbmNlLmdldEVsZW1lbnRUeXBlU2V0Q29uZmlndXJhdGlvbnMoKS5nZXQoIm9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5zZXJ2aWNlLnR5cGVzLmVsZW1lbnRUeXBlU2V0LmNsYXNzIik7DQorCQlBc3NlcnQuYXNzZXJ0Tm90TnVsbCgiVGhlIFN5c01MIDEuNCBVTUwgQ2xhc3MgRGlhZ3JhbSBlbGVtZW50IHR5cGUgc2V0IGRlZmluaXRpb24gaXMgbWlzc2luZyIsIGNlbGVtZW50VHlwZVNldENvbmZpZ3VyYXRpb24pOwkJDQorCX0JDQorCQ0KKyAgICBAVGVzdA0KKwlwdWJsaWMgdm9pZCB0ZXN0UmVnaXN0cnlDb250ZW50Rm9yVmFsdWVUeXBlXzIwMTAoKSB7DQorCQlBc3NlcnQuYXNzZXJ0VHJ1ZSgiVmFsdWVUeXBlICgyMDEwKSBlbGVtZW50IHR5cGUgbm90IGZvdW5kIGluIFN5c01MIGVsZW1lbnQgdHlwZSBzZXQgIiwgRWxlbWVudEVkaXRTZXJ2aWNlVXRpbHMuZ2V0RWRpdFNlcnZpY2VQcm92aWRlcigpLmlzS25vd25FbGVtZW50VHlwZSgib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5WYWx1ZVR5cGVfMjAxMCIpKTsNCisJfQ0KKw0KKyAgICBAVGVzdA0KKwlwdWJsaWMgdm9pZCB0ZXN0UmVnaXN0cnlDb250ZW50Rm9yVmFsdWVUeXBlXzMwMjcoKSB7DQorCQlBc3NlcnQuYXNzZXJ0VHJ1ZSgiVmFsdWVUeXBlICgzMDI3KSBlbGVtZW50IHR5cGUgbm90IGZvdW5kIGluIFN5c01MIGVsZW1lbnQgdHlwZSBzZXQgIiwgRWxlbWVudEVkaXRTZXJ2aWNlVXRpbHMuZ2V0RWRpdFNlcnZpY2VQcm92aWRlcigpLmlzS25vd25FbGVtZW50VHlwZSgib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5WYWx1ZVR5cGVfMzAyNyIpKTsNCisJfQ0KKw0KKyAgICBAVGVzdA0KKwlwdWJsaWMgdm9pZCB0ZXN0UmVnaXN0cnlDb250ZW50Rm9yVmFsdWVUeXBlXzMwNDMoKSB7DQorCQlBc3NlcnQuYXNzZXJ0VHJ1ZSgiVmFsdWVUeXBlICgzMDQzKSBlbGVtZW50IHR5cGUgbm90IGZvdW5kIGluIFN5c01MIGVsZW1lbnQgdHlwZSBzZXQgIiwgRWxlbWVudEVkaXRTZXJ2aWNlVXRpbHMuZ2V0RWRpdFNlcnZpY2VQcm92aWRlcigpLmlzS25vd25FbGVtZW50VHlwZSgib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5WYWx1ZVR5cGVfMzA0MyIpKTsNCisJfQ0KKw0KKyAgICBAVGVzdA0KKwlwdWJsaWMgdm9pZCB0ZXN0UmVnaXN0cnlDb250ZW50Rm9yVmFsdWVUeXBlXzMwNDQoKSB7DQorCQlBc3NlcnQuYXNzZXJ0VHJ1ZSgiVmFsdWVUeXBlICgzMDQ0KSBlbGVtZW50IHR5cGUgbm90IGZvdW5kIGluIFN5c01MIGVsZW1lbnQgdHlwZSBzZXQgIiwgRWxlbWVudEVkaXRTZXJ2aWNlVXRpbHMuZ2V0RWRpdFNlcnZpY2VQcm92aWRlcigpLmlzS25vd25FbGVtZW50VHlwZSgib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5WYWx1ZVR5cGVfMzA0NCIpKTsNCisJfQ0KKw0KKyAgICBAVGVzdA0KKwlwdWJsaWMgdm9pZCB0ZXN0UmVnaXN0cnlDb250ZW50Rm9yVmFsdWVUeXBlXzMwNDUoKSB7DQorCQlBc3NlcnQuYXNzZXJ0VHJ1ZSgiVmFsdWVUeXBlICgzMDQ1KSBlbGVtZW50IHR5cGUgbm90IGZvdW5kIGluIFN5c01MIGVsZW1lbnQgdHlwZSBzZXQgIiwgRWxlbWVudEVkaXRTZXJ2aWNlVXRpbHMuZ2V0RWRpdFNlcnZpY2VQcm92aWRlcigpLmlzS25vd25FbGVtZW50VHlwZSgib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5WYWx1ZVR5cGVfMzA0NSIpKTsNCisJfQ0KKw0KKyAgICBAVGVzdA0KKwlwdWJsaWMgdm9pZCB0ZXN0UmVnaXN0cnlDb250ZW50Rm9yRGlzdHJpYnV0ZWRQcm9wZXJ0eV8zMDAyKCkgew0KKwkJQXNzZXJ0LmFzc2VydFRydWUoIkRpc3RyaWJ1dGVkUHJvcGVydHkgKDMwMDIpIGVsZW1lbnQgdHlwZSBub3QgZm91bmQgaW4gU3lzTUwgZWxlbWVudCB0eXBlIHNldCAiLCBFbGVtZW50RWRpdFNlcnZpY2VVdGlscy5nZXRFZGl0U2VydmljZVByb3ZpZGVyKCkuaXNLbm93bkVsZW1lbnRUeXBlKCJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLkRpc3RyaWJ1dGVkUHJvcGVydHlfMzAwMiIpKTsNCisJfQ0KKw0KKyAgICBAVGVzdA0KKwlwdWJsaWMgdm9pZCB0ZXN0UmVnaXN0cnlDb250ZW50Rm9yRGlzdHJpYnV0ZWRQcm9wZXJ0eV8zMDA1KCkgew0KKwkJQXNzZXJ0LmFzc2VydFRydWUoIkRpc3RyaWJ1dGVkUHJvcGVydHkgKDMwMDUpIGVsZW1lbnQgdHlwZSBub3QgZm91bmQgaW4gU3lzTUwgZWxlbWVudCB0eXBlIHNldCAiLCBFbGVtZW50RWRpdFNlcnZpY2VVdGlscy5nZXRFZGl0U2VydmljZVByb3ZpZGVyKCkuaXNLbm93bkVsZW1lbnRUeXBlKCJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLkRpc3RyaWJ1dGVkUHJvcGVydHlfMzAwNSIpKTsNCisJfQ0KKw0KKyAgICBAVGVzdA0KKwlwdWJsaWMgdm9pZCB0ZXN0UmVnaXN0cnlDb250ZW50Rm9yRGlzdHJpYnV0ZWRQcm9wZXJ0eV8zMDA2KCkgew0KKwkJQXNzZXJ0LmFzc2VydFRydWUoIkRpc3RyaWJ1dGVkUHJvcGVydHkgKDMwMDYpIGVsZW1lbnQgdHlwZSBub3QgZm91bmQgaW4gU3lzTUwgZWxlbWVudCB0eXBlIHNldCAiLCBFbGVtZW50RWRpdFNlcnZpY2VVdGlscy5nZXRFZGl0U2VydmljZVByb3ZpZGVyKCkuaXNLbm93bkVsZW1lbnRUeXBlKCJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLkRpc3RyaWJ1dGVkUHJvcGVydHlfMzAwNiIpKTsNCisJfQ0KKw0KKyAgICBAVGVzdA0KKwlwdWJsaWMgdm9pZCB0ZXN0UmVnaXN0cnlDb250ZW50Rm9yRGlzdHJpYnV0ZWRQcm9wZXJ0eV8zMDEyKCkgew0KKwkJQXNzZXJ0LmFzc2VydFRydWUoIkRpc3RyaWJ1dGVkUHJvcGVydHkgKDMwMTIpIGVsZW1lbnQgdHlwZSBub3QgZm91bmQgaW4gU3lzTUwgZWxlbWVudCB0eXBlIHNldCAiLCBFbGVtZW50RWRpdFNlcnZpY2VVdGlscy5nZXRFZGl0U2VydmljZVByb3ZpZGVyKCkuaXNLbm93bkVsZW1lbnRUeXBlKCJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLkRpc3RyaWJ1dGVkUHJvcGVydHlfMzAxMiIpKTsNCisJfQ0KKw0KKyAgICBAVGVzdA0KKwlwdWJsaWMgdm9pZCB0ZXN0UmVnaXN0cnlDb250ZW50Rm9yRGlzdHJpYnV0ZWRQcm9wZXJ0eV8zMDE4KCkgew0KKwkJQXNzZXJ0LmFzc2VydFRydWUoIkRpc3RyaWJ1dGVkUHJvcGVydHkgKDMwMTgpIGVsZW1lbnQgdHlwZSBub3QgZm91bmQgaW4gU3lzTUwgZWxlbWVudCB0eXBlIHNldCAiLCBFbGVtZW50RWRpdFNlcnZpY2VVdGlscy5nZXRFZGl0U2VydmljZVByb3ZpZGVyKCkuaXNLbm93bkVsZW1lbnRUeXBlKCJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLkRpc3RyaWJ1dGVkUHJvcGVydHlfMzAxOCIpKTsNCisJfQ0KKw0KKyAgICBAVGVzdA0KKwlwdWJsaWMgdm9pZCB0ZXN0UmVnaXN0cnlDb250ZW50Rm9yRGlzdHJpYnV0ZWRQcm9wZXJ0eV8zMDQxKCkgew0KKwkJQXNzZXJ0LmFzc2VydFRydWUoIkRpc3RyaWJ1dGVkUHJvcGVydHkgKDMwNDEpIGVsZW1lbnQgdHlwZSBub3QgZm91bmQgaW4gU3lzTUwgZWxlbWVudCB0eXBlIHNldCAiLCBFbGVtZW50RWRpdFNlcnZpY2VVdGlscy5nZXRFZGl0U2VydmljZVByb3ZpZGVyKCkuaXNLbm93bkVsZW1lbnRUeXBlKCJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLkRpc3RyaWJ1dGVkUHJvcGVydHlfMzA0MSIpKTsNCisJfQ0KKw0KKyAgICBAVGVzdA0KKwlwdWJsaWMgdm9pZCB0ZXN0UmVnaXN0cnlDb250ZW50Rm9yQ29ubmVjdG9yUHJvcGVydHlfMzAwMigpIHsNCisJCUFzc2VydC5hc3NlcnRUcnVlKCJDb25uZWN0b3JQcm9wZXJ0eSAoMzAwMikgZWxlbWVudCB0eXBlIG5vdCBmb3VuZCBpbiBTeXNNTCBlbGVtZW50IHR5cGUgc2V0ICIsIEVsZW1lbnRFZGl0U2VydmljZVV0aWxzLmdldEVkaXRTZXJ2aWNlUHJvdmlkZXIoKS5pc0tub3duRWxlbWVudFR5cGUoIm9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuQ29ubmVjdG9yUHJvcGVydHlfMzAwMiIpKTsNCisJfQ0KKw0KKyAgICBAVGVzdA0KKwlwdWJsaWMgdm9pZCB0ZXN0UmVnaXN0cnlDb250ZW50Rm9yQ29ubmVjdG9yUHJvcGVydHlfMzAwNSgpIHsNCisJCUFzc2VydC5hc3NlcnRUcnVlKCJDb25uZWN0b3JQcm9wZXJ0eSAoMzAwNSkgZWxlbWVudCB0eXBlIG5vdCBmb3VuZCBpbiBTeXNNTCBlbGVtZW50IHR5cGUgc2V0ICIsIEVsZW1lbnRFZGl0U2VydmljZVV0aWxzLmdldEVkaXRTZXJ2aWNlUHJvdmlkZXIoKS5pc0tub3duRWxlbWVudFR5cGUoIm9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuQ29ubmVjdG9yUHJvcGVydHlfMzAwNSIpKTsNCisJfQ0KKw0KKyAgICBAVGVzdA0KKwlwdWJsaWMgdm9pZCB0ZXN0UmVnaXN0cnlDb250ZW50Rm9yQ29ubmVjdG9yUHJvcGVydHlfMzAwNigpIHsNCisJCUFzc2VydC5hc3NlcnRUcnVlKCJDb25uZWN0b3JQcm9wZXJ0eSAoMzAwNikgZWxlbWVudCB0eXBlIG5vdCBmb3VuZCBpbiBTeXNNTCBlbGVtZW50IHR5cGUgc2V0ICIsIEVsZW1lbnRFZGl0U2VydmljZVV0aWxzLmdldEVkaXRTZXJ2aWNlUHJvdmlkZXIoKS5pc0tub3duRWxlbWVudFR5cGUoIm9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuQ29ubmVjdG9yUHJvcGVydHlfMzAwNiIpKTsNCisJfQ0KKw0KKyAgICBAVGVzdA0KKwlwdWJsaWMgdm9pZCB0ZXN0UmVnaXN0cnlDb250ZW50Rm9yQ29ubmVjdG9yUHJvcGVydHlfMzAxMigpIHsNCisJCUFzc2VydC5hc3NlcnRUcnVlKCJDb25uZWN0b3JQcm9wZXJ0eSAoMzAxMikgZWxlbWVudCB0eXBlIG5vdCBmb3VuZCBpbiBTeXNNTCBlbGVtZW50IHR5cGUgc2V0ICIsIEVsZW1lbnRFZGl0U2VydmljZVV0aWxzLmdldEVkaXRTZXJ2aWNlUHJvdmlkZXIoKS5pc0tub3duRWxlbWVudFR5cGUoIm9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuQ29ubmVjdG9yUHJvcGVydHlfMzAxMiIpKTsNCisJfQ0KKw0KKyAgICBAVGVzdA0KKwlwdWJsaWMgdm9pZCB0ZXN0UmVnaXN0cnlDb250ZW50Rm9yQ29ubmVjdG9yUHJvcGVydHlfMzAxOCgpIHsNCisJCUFzc2VydC5hc3NlcnRUcnVlKCJDb25uZWN0b3JQcm9wZXJ0eSAoMzAxOCkgZWxlbWVudCB0eXBlIG5vdCBmb3VuZCBpbiBTeXNNTCBlbGVtZW50IHR5cGUgc2V0ICIsIEVsZW1lbnRFZGl0U2VydmljZVV0aWxzLmdldEVkaXRTZXJ2aWNlUHJvdmlkZXIoKS5pc0tub3duRWxlbWVudFR5cGUoIm9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuQ29ubmVjdG9yUHJvcGVydHlfMzAxOCIpKTsNCisJfQ0KKw0KKyAgICBAVGVzdA0KKwlwdWJsaWMgdm9pZCB0ZXN0UmVnaXN0cnlDb250ZW50Rm9yQ29ubmVjdG9yUHJvcGVydHlfMzA0MSgpIHsNCisJCUFzc2VydC5hc3NlcnRUcnVlKCJDb25uZWN0b3JQcm9wZXJ0eSAoMzA0MSkgZWxlbWVudCB0eXBlIG5vdCBmb3VuZCBpbiBTeXNNTCBlbGVtZW50IHR5cGUgc2V0ICIsIEVsZW1lbnRFZGl0U2VydmljZVV0aWxzLmdldEVkaXRTZXJ2aWNlUHJvdmlkZXIoKS5pc0tub3duRWxlbWVudFR5cGUoIm9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuQ29ubmVjdG9yUHJvcGVydHlfMzA0MSIpKTsNCisJfQ0KKw0KKyAgICBAVGVzdA0KKwlwdWJsaWMgdm9pZCB0ZXN0UmVnaXN0cnlDb250ZW50Rm9yUGFydGljaXBhbnRQcm9wZXJ0eV8zMDAyKCkgew0KKwkJQXNzZXJ0LmFzc2VydFRydWUoIlBhcnRpY2lwYW50UHJvcGVydHkgKDMwMDIpIGVsZW1lbnQgdHlwZSBub3QgZm91bmQgaW4gU3lzTUwgZWxlbWVudCB0eXBlIHNldCAiLCBFbGVtZW50RWRpdFNlcnZpY2VVdGlscy5nZXRFZGl0U2VydmljZVByb3ZpZGVyKCkuaXNLbm93bkVsZW1lbnRUeXBlKCJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLlBhcnRpY2lwYW50UHJvcGVydHlfMzAwMiIpKTsNCisJfQ0KKw0KKyAgICBAVGVzdA0KKwlwdWJsaWMgdm9pZCB0ZXN0UmVnaXN0cnlDb250ZW50Rm9yUGFydGljaXBhbnRQcm9wZXJ0eV8zMDA1KCkgew0KKwkJQXNzZXJ0LmFzc2VydFRydWUoIlBhcnRpY2lwYW50UHJvcGVydHkgKDMwMDUpIGVsZW1lbnQgdHlwZSBub3QgZm91bmQgaW4gU3lzTUwgZWxlbWVudCB0eXBlIHNldCAiLCBFbGVtZW50RWRpdFNlcnZpY2VVdGlscy5nZXRFZGl0U2VydmljZVByb3ZpZGVyKCkuaXNLbm93bkVsZW1lbnRUeXBlKCJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLlBhcnRpY2lwYW50UHJvcGVydHlfMzAwNSIpKTsNCisJfQ0KKw0KKyAgICBAVGVzdA0KKwlwdWJsaWMgdm9pZCB0ZXN0UmVnaXN0cnlDb250ZW50Rm9yUGFydGljaXBhbnRQcm9wZXJ0eV8zMDA2KCkgew0KKwkJQXNzZXJ0LmFzc2VydFRydWUoIlBhcnRpY2lwYW50UHJvcGVydHkgKDMwMDYpIGVsZW1lbnQgdHlwZSBub3QgZm91bmQgaW4gU3lzTUwgZWxlbWVudCB0eXBlIHNldCAiLCBFbGVtZW50RWRpdFNlcnZpY2VVdGlscy5nZXRFZGl0U2VydmljZVByb3ZpZGVyKCkuaXNLbm93bkVsZW1lbnRUeXBlKCJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLlBhcnRpY2lwYW50UHJvcGVydHlfMzAwNiIpKTsNCisJfQ0KKw0KKyAgICBAVGVzdA0KKwlwdWJsaWMgdm9pZCB0ZXN0UmVnaXN0cnlDb250ZW50Rm9yUGFydGljaXBhbnRQcm9wZXJ0eV8zMDEyKCkgew0KKwkJQXNzZXJ0LmFzc2VydFRydWUoIlBhcnRpY2lwYW50UHJvcGVydHkgKDMwMTIpIGVsZW1lbnQgdHlwZSBub3QgZm91bmQgaW4gU3lzTUwgZWxlbWVudCB0eXBlIHNldCAiLCBFbGVtZW50RWRpdFNlcnZpY2VVdGlscy5nZXRFZGl0U2VydmljZVByb3ZpZGVyKCkuaXNLbm93bkVsZW1lbnRUeXBlKCJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLlBhcnRpY2lwYW50UHJvcGVydHlfMzAxMiIpKTsNCisJfQ0KKw0KKyAgICBAVGVzdA0KKwlwdWJsaWMgdm9pZCB0ZXN0UmVnaXN0cnlDb250ZW50Rm9yUGFydGljaXBhbnRQcm9wZXJ0eV8zMDE4KCkgew0KKwkJQXNzZXJ0LmFzc2VydFRydWUoIlBhcnRpY2lwYW50UHJvcGVydHkgKDMwMTgpIGVsZW1lbnQgdHlwZSBub3QgZm91bmQgaW4gU3lzTUwgZWxlbWVudCB0eXBlIHNldCAiLCBFbGVtZW50RWRpdFNlcnZpY2VVdGlscy5nZXRFZGl0U2VydmljZVByb3ZpZGVyKCkuaXNLbm93bkVsZW1lbnRUeXBlKCJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLlBhcnRpY2lwYW50UHJvcGVydHlfMzAxOCIpKTsNCisJfQ0KKw0KKyAgICBAVGVzdA0KKwlwdWJsaWMgdm9pZCB0ZXN0UmVnaXN0cnlDb250ZW50Rm9yUGFydGljaXBhbnRQcm9wZXJ0eV8zMDQxKCkgew0KKwkJQXNzZXJ0LmFzc2VydFRydWUoIlBhcnRpY2lwYW50UHJvcGVydHkgKDMwNDEpIGVsZW1lbnQgdHlwZSBub3QgZm91bmQgaW4gU3lzTUwgZWxlbWVudCB0eXBlIHNldCAiLCBFbGVtZW50RWRpdFNlcnZpY2VVdGlscy5nZXRFZGl0U2VydmljZVByb3ZpZGVyKCkuaXNLbm93bkVsZW1lbnRUeXBlKCJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLlBhcnRpY2lwYW50UHJvcGVydHlfMzA0MSIpKTsNCisJfQ0KKw0KKyAgICBAVGVzdA0KKwlwdWJsaWMgdm9pZCB0ZXN0UmVnaXN0cnlDb250ZW50Rm9yQmxvY2tfMjAwOCgpIHsNCisJCUFzc2VydC5hc3NlcnRUcnVlKCJCbG9jayAoMjAwOCkgZWxlbWVudCB0eXBlIG5vdCBmb3VuZCBpbiBTeXNNTCBlbGVtZW50IHR5cGUgc2V0ICIsIEVsZW1lbnRFZGl0U2VydmljZVV0aWxzLmdldEVkaXRTZXJ2aWNlUHJvdmlkZXIoKS5pc0tub3duRWxlbWVudFR5cGUoIm9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuQmxvY2tfMjAwOCIpKTsNCisJfQ0KKw0KKyAgICBAVGVzdA0KKwlwdWJsaWMgdm9pZCB0ZXN0UmVnaXN0cnlDb250ZW50Rm9yQmxvY2tfTmVzdGVkQmxvY2tfQ2xhc3NpZmllcigpIHsNCisJCUFzc2VydC5hc3NlcnRUcnVlKCJCbG9jayAoTmVzdGVkQmxvY2tfQ2xhc3NpZmllcikgZWxlbWVudCB0eXBlIG5vdCBmb3VuZCBpbiBTeXNNTCBlbGVtZW50IHR5cGUgc2V0ICIsIEVsZW1lbnRFZGl0U2VydmljZVV0aWxzLmdldEVkaXRTZXJ2aWNlUHJvdmlkZXIoKS5pc0tub3duRWxlbWVudFR5cGUoIm9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuQmxvY2tfTmVzdGVkQmxvY2tfQ2xhc3NpZmllciIpKTsNCisJfQ0KKw0KKyAgICBAVGVzdA0KKwlwdWJsaWMgdm9pZCB0ZXN0UmVnaXN0cnlDb250ZW50Rm9yQmxvY2tfMzAwNCgpIHsNCisJCUFzc2VydC5hc3NlcnRUcnVlKCJCbG9jayAoMzAwNCkgZWxlbWVudCB0eXBlIG5vdCBmb3VuZCBpbiBTeXNNTCBlbGVtZW50IHR5cGUgc2V0ICIsIEVsZW1lbnRFZGl0U2VydmljZVV0aWxzLmdldEVkaXRTZXJ2aWNlUHJvdmlkZXIoKS5pc0tub3duRWxlbWVudFR5cGUoIm9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuQmxvY2tfMzAwNCIpKTsNCisJfQ0KKw0KKyAgICBAVGVzdA0KKwlwdWJsaWMgdm9pZCB0ZXN0UmVnaXN0cnlDb250ZW50Rm9yQmxvY2tfMzAwOCgpIHsNCisJCUFzc2VydC5hc3NlcnRUcnVlKCJCbG9jayAoMzAwOCkgZWxlbWVudCB0eXBlIG5vdCBmb3VuZCBpbiBTeXNNTCBlbGVtZW50IHR5cGUgc2V0ICIsIEVsZW1lbnRFZGl0U2VydmljZVV0aWxzLmdldEVkaXRTZXJ2aWNlUHJvdmlkZXIoKS5pc0tub3duRWxlbWVudFR5cGUoIm9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuQmxvY2tfMzAwOCIpKTsNCisJfQ0KKw0KKyAgICBAVGVzdA0KKwlwdWJsaWMgdm9pZCB0ZXN0UmVnaXN0cnlDb250ZW50Rm9yQmxvY2tfMzAxMCgpIHsNCisJCUFzc2VydC5hc3NlcnRUcnVlKCJCbG9jayAoMzAxMCkgZWxlbWVudCB0eXBlIG5vdCBmb3VuZCBpbiBTeXNNTCBlbGVtZW50IHR5cGUgc2V0ICIsIEVsZW1lbnRFZGl0U2VydmljZVV0aWxzLmdldEVkaXRTZXJ2aWNlUHJvdmlkZXIoKS5pc0tub3duRWxlbWVudFR5cGUoIm9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuQmxvY2tfMzAxMCIpKTsNCisJfQ0KKw0KKyAgICBAVGVzdA0KKwlwdWJsaWMgdm9pZCB0ZXN0UmVnaXN0cnlDb250ZW50Rm9yQmxvY2tfMzAxNCgpIHsNCisJCUFzc2VydC5hc3NlcnRUcnVlKCJCbG9jayAoMzAxNCkgZWxlbWVudCB0eXBlIG5vdCBmb3VuZCBpbiBTeXNNTCBlbGVtZW50IHR5cGUgc2V0ICIsIEVsZW1lbnRFZGl0U2VydmljZVV0aWxzLmdldEVkaXRTZXJ2aWNlUHJvdmlkZXIoKS5pc0tub3duRWxlbWVudFR5cGUoIm9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuQmxvY2tfMzAxNCIpKTsNCisJfQ0KKw0KKyAgICBAVGVzdA0KKwlwdWJsaWMgdm9pZCB0ZXN0UmVnaXN0cnlDb250ZW50Rm9yRW5kUGF0aE11bHRpcGxpY2l0eV8zMDAyKCkgew0KKwkJQXNzZXJ0LmFzc2VydFRydWUoIkVuZFBhdGhNdWx0aXBsaWNpdHkgKDMwMDIpIGVsZW1lbnQgdHlwZSBub3QgZm91bmQgaW4gU3lzTUwgZWxlbWVudCB0eXBlIHNldCAiLCBFbGVtZW50RWRpdFNlcnZpY2VVdGlscy5nZXRFZGl0U2VydmljZVByb3ZpZGVyKCkuaXNLbm93bkVsZW1lbnRUeXBlKCJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLkVuZFBhdGhNdWx0aXBsaWNpdHlfMzAwMiIpKTsNCisJfQ0KKw0KKyAgICBAVGVzdA0KKwlwdWJsaWMgdm9pZCB0ZXN0UmVnaXN0cnlDb250ZW50Rm9yRW5kUGF0aE11bHRpcGxpY2l0eV8zMDA1KCkgew0KKwkJQXNzZXJ0LmFzc2VydFRydWUoIkVuZFBhdGhNdWx0aXBsaWNpdHkgKDMwMDUpIGVsZW1lbnQgdHlwZSBub3QgZm91bmQgaW4gU3lzTUwgZWxlbWVudCB0eXBlIHNldCAiLCBFbGVtZW50RWRpdFNlcnZpY2VVdGlscy5nZXRFZGl0U2VydmljZVByb3ZpZGVyKCkuaXNLbm93bkVsZW1lbnRUeXBlKCJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLkVuZFBhdGhNdWx0aXBsaWNpdHlfMzAwNSIpKTsNCisJfQ0KKw0KKyAgICBAVGVzdA0KKwlwdWJsaWMgdm9pZCB0ZXN0UmVnaXN0cnlDb250ZW50Rm9yRW5kUGF0aE11bHRpcGxpY2l0eV8zMDA2KCkgew0KKwkJQXNzZXJ0LmFzc2VydFRydWUoIkVuZFBhdGhNdWx0aXBsaWNpdHkgKDMwMDYpIGVsZW1lbnQgdHlwZSBub3QgZm91bmQgaW4gU3lzTUwgZWxlbWVudCB0eXBlIHNldCAiLCBFbGVtZW50RWRpdFNlcnZpY2VVdGlscy5nZXRFZGl0U2VydmljZVByb3ZpZGVyKCkuaXNLbm93bkVsZW1lbnRUeXBlKCJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLkVuZFBhdGhNdWx0aXBsaWNpdHlfMzAwNiIpKTsNCisJfQ0KKw0KKyAgICBAVGVzdA0KKwlwdWJsaWMgdm9pZCB0ZXN0UmVnaXN0cnlDb250ZW50Rm9yRW5kUGF0aE11bHRpcGxpY2l0eV8zMDEyKCkgew0KKwkJQXNzZXJ0LmFzc2VydFRydWUoIkVuZFBhdGhNdWx0aXBsaWNpdHkgKDMwMTIpIGVsZW1lbnQgdHlwZSBub3QgZm91bmQgaW4gU3lzTUwgZWxlbWVudCB0eXBlIHNldCAiLCBFbGVtZW50RWRpdFNlcnZpY2VVdGlscy5nZXRFZGl0U2VydmljZVByb3ZpZGVyKCkuaXNLbm93bkVsZW1lbnRUeXBlKCJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLkVuZFBhdGhNdWx0aXBsaWNpdHlfMzAxMiIpKTsNCisJfQ0KKw0KKyAgICBAVGVzdA0KKwlwdWJsaWMgdm9pZCB0ZXN0UmVnaXN0cnlDb250ZW50Rm9yRW5kUGF0aE11bHRpcGxpY2l0eV8zMDE4KCkgew0KKwkJQXNzZXJ0LmFzc2VydFRydWUoIkVuZFBhdGhNdWx0aXBsaWNpdHkgKDMwMTgpIGVsZW1lbnQgdHlwZSBub3QgZm91bmQgaW4gU3lzTUwgZWxlbWVudCB0eXBlIHNldCAiLCBFbGVtZW50RWRpdFNlcnZpY2VVdGlscy5nZXRFZGl0U2VydmljZVByb3ZpZGVyKCkuaXNLbm93bkVsZW1lbnRUeXBlKCJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLkVuZFBhdGhNdWx0aXBsaWNpdHlfMzAxOCIpKTsNCisJfQ0KKw0KKyAgICBAVGVzdA0KKwlwdWJsaWMgdm9pZCB0ZXN0UmVnaXN0cnlDb250ZW50Rm9yRW5kUGF0aE11bHRpcGxpY2l0eV8zMDQxKCkgew0KKwkJQXNzZXJ0LmFzc2VydFRydWUoIkVuZFBhdGhNdWx0aXBsaWNpdHkgKDMwNDEpIGVsZW1lbnQgdHlwZSBub3QgZm91bmQgaW4gU3lzTUwgZWxlbWVudCB0eXBlIHNldCAiLCBFbGVtZW50RWRpdFNlcnZpY2VVdGlscy5nZXRFZGl0U2VydmljZVByb3ZpZGVyKCkuaXNLbm93bkVsZW1lbnRUeXBlKCJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLkVuZFBhdGhNdWx0aXBsaWNpdHlfMzA0MSIpKTsNCisJfQ0KKw0KKyAgICBAVGVzdA0KKwlwdWJsaWMgdm9pZCB0ZXN0UmVnaXN0cnlDb250ZW50Rm9yQm91bmRSZWZlcmVuY2VfMzAwMigpIHsNCisJCUFzc2VydC5hc3NlcnRUcnVlKCJCb3VuZFJlZmVyZW5jZSAoMzAwMikgZWxlbWVudCB0eXBlIG5vdCBmb3VuZCBpbiBTeXNNTCBlbGVtZW50IHR5cGUgc2V0ICIsIEVsZW1lbnRFZGl0U2VydmljZVV0aWxzLmdldEVkaXRTZXJ2aWNlUHJvdmlkZXIoKS5pc0tub3duRWxlbWVudFR5cGUoIm9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuQm91bmRSZWZlcmVuY2VfMzAwMiIpKTsNCisJfQ0KKw0KKyAgICBAVGVzdA0KKwlwdWJsaWMgdm9pZCB0ZXN0UmVnaXN0cnlDb250ZW50Rm9yQm91bmRSZWZlcmVuY2VfMzAwNSgpIHsNCisJCUFzc2VydC5hc3NlcnRUcnVlKCJCb3VuZFJlZmVyZW5jZSAoMzAwNSkgZWxlbWVudCB0eXBlIG5vdCBmb3VuZCBpbiBTeXNNTCBlbGVtZW50IHR5cGUgc2V0ICIsIEVsZW1lbnRFZGl0U2VydmljZVV0aWxzLmdldEVkaXRTZXJ2aWNlUHJvdmlkZXIoKS5pc0tub3duRWxlbWVudFR5cGUoIm9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuQm91bmRSZWZlcmVuY2VfMzAwNSIpKTsNCisJfQ0KKw0KKyAgICBAVGVzdA0KKwlwdWJsaWMgdm9pZCB0ZXN0UmVnaXN0cnlDb250ZW50Rm9yQm91bmRSZWZlcmVuY2VfMzAwNigpIHsNCisJCUFzc2VydC5hc3NlcnRUcnVlKCJCb3VuZFJlZmVyZW5jZSAoMzAwNikgZWxlbWVudCB0eXBlIG5vdCBmb3VuZCBpbiBTeXNNTCBlbGVtZW50IHR5cGUgc2V0ICIsIEVsZW1lbnRFZGl0U2VydmljZVV0aWxzLmdldEVkaXRTZXJ2aWNlUHJvdmlkZXIoKS5pc0tub3duRWxlbWVudFR5cGUoIm9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuQm91bmRSZWZlcmVuY2VfMzAwNiIpKTsNCisJfQ0KKw0KKyAgICBAVGVzdA0KKwlwdWJsaWMgdm9pZCB0ZXN0UmVnaXN0cnlDb250ZW50Rm9yQm91bmRSZWZlcmVuY2VfMzAxMigpIHsNCisJCUFzc2VydC5hc3NlcnRUcnVlKCJCb3VuZFJlZmVyZW5jZSAoMzAxMikgZWxlbWVudCB0eXBlIG5vdCBmb3VuZCBpbiBTeXNNTCBlbGVtZW50IHR5cGUgc2V0ICIsIEVsZW1lbnRFZGl0U2VydmljZVV0aWxzLmdldEVkaXRTZXJ2aWNlUHJvdmlkZXIoKS5pc0tub3duRWxlbWVudFR5cGUoIm9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuQm91bmRSZWZlcmVuY2VfMzAxMiIpKTsNCisJfQ0KKw0KKyAgICBAVGVzdA0KKwlwdWJsaWMgdm9pZCB0ZXN0UmVnaXN0cnlDb250ZW50Rm9yQm91bmRSZWZlcmVuY2VfMzAxOCgpIHsNCisJCUFzc2VydC5hc3NlcnRUcnVlKCJCb3VuZFJlZmVyZW5jZSAoMzAxOCkgZWxlbWVudCB0eXBlIG5vdCBmb3VuZCBpbiBTeXNNTCBlbGVtZW50IHR5cGUgc2V0ICIsIEVsZW1lbnRFZGl0U2VydmljZVV0aWxzLmdldEVkaXRTZXJ2aWNlUHJvdmlkZXIoKS5pc0tub3duRWxlbWVudFR5cGUoIm9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuQm91bmRSZWZlcmVuY2VfMzAxOCIpKTsNCisJfQ0KKw0KKyAgICBAVGVzdA0KKwlwdWJsaWMgdm9pZCB0ZXN0UmVnaXN0cnlDb250ZW50Rm9yQm91bmRSZWZlcmVuY2VfMzA0MSgpIHsNCisJCUFzc2VydC5hc3NlcnRUcnVlKCJCb3VuZFJlZmVyZW5jZSAoMzA0MSkgZWxlbWVudCB0eXBlIG5vdCBmb3VuZCBpbiBTeXNNTCBlbGVtZW50IHR5cGUgc2V0ICIsIEVsZW1lbnRFZGl0U2VydmljZVV0aWxzLmdldEVkaXRTZXJ2aWNlUHJvdmlkZXIoKS5pc0tub3duRWxlbWVudFR5cGUoIm9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuQm91bmRSZWZlcmVuY2VfMzA0MSIpKTsNCisJfQ0KKw0KKyAgICBAVGVzdA0KKwlwdWJsaWMgdm9pZCB0ZXN0UmVnaXN0cnlDb250ZW50Rm9yQWRqdW5jdFByb3BlcnR5XzMwMDIoKSB7DQorCQlBc3NlcnQuYXNzZXJ0VHJ1ZSgiQWRqdW5jdFByb3BlcnR5ICgzMDAyKSBlbGVtZW50IHR5cGUgbm90IGZvdW5kIGluIFN5c01MIGVsZW1lbnQgdHlwZSBzZXQgIiwgRWxlbWVudEVkaXRTZXJ2aWNlVXRpbHMuZ2V0RWRpdFNlcnZpY2VQcm92aWRlcigpLmlzS25vd25FbGVtZW50VHlwZSgib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5BZGp1bmN0UHJvcGVydHlfMzAwMiIpKTsNCisJfQ0KKw0KKyAgICBAVGVzdA0KKwlwdWJsaWMgdm9pZCB0ZXN0UmVnaXN0cnlDb250ZW50Rm9yQWRqdW5jdFByb3BlcnR5XzMwMDUoKSB7DQorCQlBc3NlcnQuYXNzZXJ0VHJ1ZSgiQWRqdW5jdFByb3BlcnR5ICgzMDA1KSBlbGVtZW50IHR5cGUgbm90IGZvdW5kIGluIFN5c01MIGVsZW1lbnQgdHlwZSBzZXQgIiwgRWxlbWVudEVkaXRTZXJ2aWNlVXRpbHMuZ2V0RWRpdFNlcnZpY2VQcm92aWRlcigpLmlzS25vd25FbGVtZW50VHlwZSgib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5BZGp1bmN0UHJvcGVydHlfMzAwNSIpKTsNCisJfQ0KKw0KKyAgICBAVGVzdA0KKwlwdWJsaWMgdm9pZCB0ZXN0UmVnaXN0cnlDb250ZW50Rm9yQWRqdW5jdFByb3BlcnR5XzMwMDYoKSB7DQorCQlBc3NlcnQuYXNzZXJ0VHJ1ZSgiQWRqdW5jdFByb3BlcnR5ICgzMDA2KSBlbGVtZW50IHR5cGUgbm90IGZvdW5kIGluIFN5c01MIGVsZW1lbnQgdHlwZSBzZXQgIiwgRWxlbWVudEVkaXRTZXJ2aWNlVXRpbHMuZ2V0RWRpdFNlcnZpY2VQcm92aWRlcigpLmlzS25vd25FbGVtZW50VHlwZSgib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5BZGp1bmN0UHJvcGVydHlfMzAwNiIpKTsNCisJfQ0KKw0KKyAgICBAVGVzdA0KKwlwdWJsaWMgdm9pZCB0ZXN0UmVnaXN0cnlDb250ZW50Rm9yQWRqdW5jdFByb3BlcnR5XzMwMTIoKSB7DQorCQlBc3NlcnQuYXNzZXJ0VHJ1ZSgiQWRqdW5jdFByb3BlcnR5ICgzMDEyKSBlbGVtZW50IHR5cGUgbm90IGZvdW5kIGluIFN5c01MIGVsZW1lbnQgdHlwZSBzZXQgIiwgRWxlbWVudEVkaXRTZXJ2aWNlVXRpbHMuZ2V0RWRpdFNlcnZpY2VQcm92aWRlcigpLmlzS25vd25FbGVtZW50VHlwZSgib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5BZGp1bmN0UHJvcGVydHlfMzAxMiIpKTsNCisJfQ0KKw0KKyAgICBAVGVzdA0KKwlwdWJsaWMgdm9pZCB0ZXN0UmVnaXN0cnlDb250ZW50Rm9yQWRqdW5jdFByb3BlcnR5XzMwMTgoKSB7DQorCQlBc3NlcnQuYXNzZXJ0VHJ1ZSgiQWRqdW5jdFByb3BlcnR5ICgzMDE4KSBlbGVtZW50IHR5cGUgbm90IGZvdW5kIGluIFN5c01MIGVsZW1lbnQgdHlwZSBzZXQgIiwgRWxlbWVudEVkaXRTZXJ2aWNlVXRpbHMuZ2V0RWRpdFNlcnZpY2VQcm92aWRlcigpLmlzS25vd25FbGVtZW50VHlwZSgib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5BZGp1bmN0UHJvcGVydHlfMzAxOCIpKTsNCisJfQ0KKw0KKyAgICBAVGVzdA0KKwlwdWJsaWMgdm9pZCB0ZXN0UmVnaXN0cnlDb250ZW50Rm9yQWRqdW5jdFByb3BlcnR5XzMwNDEoKSB7DQorCQlBc3NlcnQuYXNzZXJ0VHJ1ZSgiQWRqdW5jdFByb3BlcnR5ICgzMDQxKSBlbGVtZW50IHR5cGUgbm90IGZvdW5kIGluIFN5c01MIGVsZW1lbnQgdHlwZSBzZXQgIiwgRWxlbWVudEVkaXRTZXJ2aWNlVXRpbHMuZ2V0RWRpdFNlcnZpY2VQcm92aWRlcigpLmlzS25vd25FbGVtZW50VHlwZSgib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5BZGp1bmN0UHJvcGVydHlfMzA0MSIpKTsNCisJfQ0KKw0KKyAgICBAVGVzdA0KKwlwdWJsaWMgdm9pZCB0ZXN0UmVnaXN0cnlDb250ZW50Rm9yQ2xhc3NpZmllckJlaGF2aW9yUHJvcGVydHlfMzAwMigpIHsNCisJCUFzc2VydC5hc3NlcnRUcnVlKCJDbGFzc2lmaWVyQmVoYXZpb3JQcm9wZXJ0eSAoMzAwMikgZWxlbWVudCB0eXBlIG5vdCBmb3VuZCBpbiBTeXNNTCBlbGVtZW50IHR5cGUgc2V0ICIsIEVsZW1lbnRFZGl0U2VydmljZVV0aWxzLmdldEVkaXRTZXJ2aWNlUHJvdmlkZXIoKS5pc0tub3duRWxlbWVudFR5cGUoIm9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuQ2xhc3NpZmllckJlaGF2aW9yUHJvcGVydHlfMzAwMiIpKTsNCisJfQ0KKw0KKyAgICBAVGVzdA0KKwlwdWJsaWMgdm9pZCB0ZXN0UmVnaXN0cnlDb250ZW50Rm9yQ2xhc3NpZmllckJlaGF2aW9yUHJvcGVydHlfMzAwNSgpIHsNCisJCUFzc2VydC5hc3NlcnRUcnVlKCJDbGFzc2lmaWVyQmVoYXZpb3JQcm9wZXJ0eSAoMzAwNSkgZWxlbWVudCB0eXBlIG5vdCBmb3VuZCBpbiBTeXNNTCBlbGVtZW50IHR5cGUgc2V0ICIsIEVsZW1lbnRFZGl0U2VydmljZVV0aWxzLmdldEVkaXRTZXJ2aWNlUHJvdmlkZXIoKS5pc0tub3duRWxlbWVudFR5cGUoIm9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuQ2xhc3NpZmllckJlaGF2aW9yUHJvcGVydHlfMzAwNSIpKTsNCisJfQ0KKw0KKyAgICBAVGVzdA0KKwlwdWJsaWMgdm9pZCB0ZXN0UmVnaXN0cnlDb250ZW50Rm9yQ2xhc3NpZmllckJlaGF2aW9yUHJvcGVydHlfMzAwNigpIHsNCisJCUFzc2VydC5hc3NlcnRUcnVlKCJDbGFzc2lmaWVyQmVoYXZpb3JQcm9wZXJ0eSAoMzAwNikgZWxlbWVudCB0eXBlIG5vdCBmb3VuZCBpbiBTeXNNTCBlbGVtZW50IHR5cGUgc2V0ICIsIEVsZW1lbnRFZGl0U2VydmljZVV0aWxzLmdldEVkaXRTZXJ2aWNlUHJvdmlkZXIoKS5pc0tub3duRWxlbWVudFR5cGUoIm9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuQ2xhc3NpZmllckJlaGF2aW9yUHJvcGVydHlfMzAwNiIpKTsNCisJfQ0KKw0KKyAgICBAVGVzdA0KKwlwdWJsaWMgdm9pZCB0ZXN0UmVnaXN0cnlDb250ZW50Rm9yQ2xhc3NpZmllckJlaGF2aW9yUHJvcGVydHlfMzAxMigpIHsNCisJCUFzc2VydC5hc3NlcnRUcnVlKCJDbGFzc2lmaWVyQmVoYXZpb3JQcm9wZXJ0eSAoMzAxMikgZWxlbWVudCB0eXBlIG5vdCBmb3VuZCBpbiBTeXNNTCBlbGVtZW50IHR5cGUgc2V0ICIsIEVsZW1lbnRFZGl0U2VydmljZVV0aWxzLmdldEVkaXRTZXJ2aWNlUHJvdmlkZXIoKS5pc0tub3duRWxlbWVudFR5cGUoIm9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuQ2xhc3NpZmllckJlaGF2aW9yUHJvcGVydHlfMzAxMiIpKTsNCisJfQ0KKw0KKyAgICBAVGVzdA0KKwlwdWJsaWMgdm9pZCB0ZXN0UmVnaXN0cnlDb250ZW50Rm9yQ2xhc3NpZmllckJlaGF2aW9yUHJvcGVydHlfMzAxOCgpIHsNCisJCUFzc2VydC5hc3NlcnRUcnVlKCJDbGFzc2lmaWVyQmVoYXZpb3JQcm9wZXJ0eSAoMzAxOCkgZWxlbWVudCB0eXBlIG5vdCBmb3VuZCBpbiBTeXNNTCBlbGVtZW50IHR5cGUgc2V0ICIsIEVsZW1lbnRFZGl0U2VydmljZVV0aWxzLmdldEVkaXRTZXJ2aWNlUHJvdmlkZXIoKS5pc0tub3duRWxlbWVudFR5cGUoIm9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuQ2xhc3NpZmllckJlaGF2aW9yUHJvcGVydHlfMzAxOCIpKTsNCisJfQ0KKw0KKyAgICBAVGVzdA0KKwlwdWJsaWMgdm9pZCB0ZXN0UmVnaXN0cnlDb250ZW50Rm9yQ2xhc3NpZmllckJlaGF2aW9yUHJvcGVydHlfMzA0MSgpIHsNCisJCUFzc2VydC5hc3NlcnRUcnVlKCJDbGFzc2lmaWVyQmVoYXZpb3JQcm9wZXJ0eSAoMzA0MSkgZWxlbWVudCB0eXBlIG5vdCBmb3VuZCBpbiBTeXNNTCBlbGVtZW50IHR5cGUgc2V0ICIsIEVsZW1lbnRFZGl0U2VydmljZVV0aWxzLmdldEVkaXRTZXJ2aWNlUHJvdmlkZXIoKS5pc0tub3duRWxlbWVudFR5cGUoIm9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuQ2xhc3NpZmllckJlaGF2aW9yUHJvcGVydHlfMzA0MSIpKTsNCisJfQ0KKw0KKyAgICBAVGVzdA0KKwlwdWJsaWMgdm9pZCB0ZXN0UmVnaXN0cnlDb250ZW50Rm9ySXRlbUZsb3coKSB7DQorCQlBc3NlcnQuYXNzZXJ0VHJ1ZSgiSXRlbUZsb3cgZWxlbWVudCB0eXBlIG5vdCBmb3VuZCBpbiBTeXNNTCBlbGVtZW50IHR5cGUgc2V0ICIsIEVsZW1lbnRFZGl0U2VydmljZVV0aWxzLmdldEVkaXRTZXJ2aWNlUHJvdmlkZXIoKS5pc0tub3duRWxlbWVudFR5cGUoIm9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuSXRlbUZsb3dfNDAyNiIpKTsNCisJfQ0KKw0KKyAgICBAVGVzdA0KKwlwdWJsaWMgdm9pZCB0ZXN0UmVnaXN0cnlDb250ZW50Rm9yRmxvd1Byb3BlcnR5XzMwMDIoKSB7DQorCQlBc3NlcnQuYXNzZXJ0VHJ1ZSgiRmxvd1Byb3BlcnR5ICgzMDAyKSBlbGVtZW50IHR5cGUgbm90IGZvdW5kIGluIFN5c01MIGVsZW1lbnQgdHlwZSBzZXQgIiwgRWxlbWVudEVkaXRTZXJ2aWNlVXRpbHMuZ2V0RWRpdFNlcnZpY2VQcm92aWRlcigpLmlzS25vd25FbGVtZW50VHlwZSgib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5GbG93UHJvcGVydHlfMzAwMiIpKTsNCisJfQ0KKw0KKyAgICBAVGVzdA0KKwlwdWJsaWMgdm9pZCB0ZXN0UmVnaXN0cnlDb250ZW50Rm9yRmxvd1Byb3BlcnR5XzMwMDUoKSB7DQorCQlBc3NlcnQuYXNzZXJ0VHJ1ZSgiRmxvd1Byb3BlcnR5ICgzMDA1KSBlbGVtZW50IHR5cGUgbm90IGZvdW5kIGluIFN5c01MIGVsZW1lbnQgdHlwZSBzZXQgIiwgRWxlbWVudEVkaXRTZXJ2aWNlVXRpbHMuZ2V0RWRpdFNlcnZpY2VQcm92aWRlcigpLmlzS25vd25FbGVtZW50VHlwZSgib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5GbG93UHJvcGVydHlfMzAwNSIpKTsNCisJfQ0KKw0KKyAgICBAVGVzdA0KKwlwdWJsaWMgdm9pZCB0ZXN0UmVnaXN0cnlDb250ZW50Rm9yRmxvd1Byb3BlcnR5XzMwMDYoKSB7DQorCQlBc3NlcnQuYXNzZXJ0VHJ1ZSgiRmxvd1Byb3BlcnR5ICgzMDA2KSBlbGVtZW50IHR5cGUgbm90IGZvdW5kIGluIFN5c01MIGVsZW1lbnQgdHlwZSBzZXQgIiwgRWxlbWVudEVkaXRTZXJ2aWNlVXRpbHMuZ2V0RWRpdFNlcnZpY2VQcm92aWRlcigpLmlzS25vd25FbGVtZW50VHlwZSgib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5GbG93UHJvcGVydHlfMzAwNiIpKTsNCisJfQ0KKw0KKyAgICBAVGVzdA0KKwlwdWJsaWMgdm9pZCB0ZXN0UmVnaXN0cnlDb250ZW50Rm9yRmxvd1Byb3BlcnR5XzMwMTIoKSB7DQorCQlBc3NlcnQuYXNzZXJ0VHJ1ZSgiRmxvd1Byb3BlcnR5ICgzMDEyKSBlbGVtZW50IHR5cGUgbm90IGZvdW5kIGluIFN5c01MIGVsZW1lbnQgdHlwZSBzZXQgIiwgRWxlbWVudEVkaXRTZXJ2aWNlVXRpbHMuZ2V0RWRpdFNlcnZpY2VQcm92aWRlcigpLmlzS25vd25FbGVtZW50VHlwZSgib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5GbG93UHJvcGVydHlfMzAxMiIpKTsNCisJfQ0KKw0KKyAgICBAVGVzdA0KKwlwdWJsaWMgdm9pZCB0ZXN0UmVnaXN0cnlDb250ZW50Rm9yRmxvd1Byb3BlcnR5XzMwMTgoKSB7DQorCQlBc3NlcnQuYXNzZXJ0VHJ1ZSgiRmxvd1Byb3BlcnR5ICgzMDE4KSBlbGVtZW50IHR5cGUgbm90IGZvdW5kIGluIFN5c01MIGVsZW1lbnQgdHlwZSBzZXQgIiwgRWxlbWVudEVkaXRTZXJ2aWNlVXRpbHMuZ2V0RWRpdFNlcnZpY2VQcm92aWRlcigpLmlzS25vd25FbGVtZW50VHlwZSgib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5GbG93UHJvcGVydHlfMzAxOCIpKTsNCisJfQ0KKw0KKyAgICBAVGVzdA0KKwlwdWJsaWMgdm9pZCB0ZXN0UmVnaXN0cnlDb250ZW50Rm9yRmxvd1Byb3BlcnR5XzMwNDEoKSB7DQorCQlBc3NlcnQuYXNzZXJ0VHJ1ZSgiRmxvd1Byb3BlcnR5ICgzMDQxKSBlbGVtZW50IHR5cGUgbm90IGZvdW5kIGluIFN5c01MIGVsZW1lbnQgdHlwZSBzZXQgIiwgRWxlbWVudEVkaXRTZXJ2aWNlVXRpbHMuZ2V0RWRpdFNlcnZpY2VQcm92aWRlcigpLmlzS25vd25FbGVtZW50VHlwZSgib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5GbG93UHJvcGVydHlfMzA0MSIpKTsNCisJfQ0KKw0KKyAgICBAVGVzdA0KKwlwdWJsaWMgdm9pZCB0ZXN0UmVnaXN0cnlDb250ZW50Rm9ySW50ZXJmYWNlQmxvY2tfMjAwOCgpIHsNCisJCUFzc2VydC5hc3NlcnRUcnVlKCJJbnRlcmZhY2VCbG9jayAoMjAwOCkgZWxlbWVudCB0eXBlIG5vdCBmb3VuZCBpbiBTeXNNTCBlbGVtZW50IHR5cGUgc2V0ICIsIEVsZW1lbnRFZGl0U2VydmljZVV0aWxzLmdldEVkaXRTZXJ2aWNlUHJvdmlkZXIoKS5pc0tub3duRWxlbWVudFR5cGUoIm9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuSW50ZXJmYWNlQmxvY2tfMjAwOCIpKTsNCisJfQ0KKw0KKyAgICBAVGVzdA0KKwlwdWJsaWMgdm9pZCB0ZXN0UmVnaXN0cnlDb250ZW50Rm9ySW50ZXJmYWNlQmxvY2tfMzAwNCgpIHsNCisJCUFzc2VydC5hc3NlcnRUcnVlKCJJbnRlcmZhY2VCbG9jayAoMzAwNCkgZWxlbWVudCB0eXBlIG5vdCBmb3VuZCBpbiBTeXNNTCBlbGVtZW50IHR5cGUgc2V0ICIsIEVsZW1lbnRFZGl0U2VydmljZVV0aWxzLmdldEVkaXRTZXJ2aWNlUHJvdmlkZXIoKS5pc0tub3duRWxlbWVudFR5cGUoIm9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuSW50ZXJmYWNlQmxvY2tfMzAwNCIpKTsNCisJfQ0KKw0KKyAgICBAVGVzdA0KKwlwdWJsaWMgdm9pZCB0ZXN0UmVnaXN0cnlDb250ZW50Rm9ySW50ZXJmYWNlQmxvY2tfMzAwOCgpIHsNCisJCUFzc2VydC5hc3NlcnRUcnVlKCJJbnRlcmZhY2VCbG9jayAoMzAwOCkgZWxlbWVudCB0eXBlIG5vdCBmb3VuZCBpbiBTeXNNTCBlbGVtZW50IHR5cGUgc2V0ICIsIEVsZW1lbnRFZGl0U2VydmljZVV0aWxzLmdldEVkaXRTZXJ2aWNlUHJvdmlkZXIoKS5pc0tub3duRWxlbWVudFR5cGUoIm9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuSW50ZXJmYWNlQmxvY2tfMzAwOCIpKTsNCisJfQ0KKw0KKyAgICBAVGVzdA0KKwlwdWJsaWMgdm9pZCB0ZXN0UmVnaXN0cnlDb250ZW50Rm9ySW50ZXJmYWNlQmxvY2tfMzAxMCgpIHsNCisJCUFzc2VydC5hc3NlcnRUcnVlKCJJbnRlcmZhY2VCbG9jayAoMzAxMCkgZWxlbWVudCB0eXBlIG5vdCBmb3VuZCBpbiBTeXNNTCBlbGVtZW50IHR5cGUgc2V0ICIsIEVsZW1lbnRFZGl0U2VydmljZVV0aWxzLmdldEVkaXRTZXJ2aWNlUHJvdmlkZXIoKS5pc0tub3duRWxlbWVudFR5cGUoIm9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuSW50ZXJmYWNlQmxvY2tfMzAxMCIpKTsNCisJfQ0KKw0KKyAgICBAVGVzdA0KKwlwdWJsaWMgdm9pZCB0ZXN0UmVnaXN0cnlDb250ZW50Rm9ySW50ZXJmYWNlQmxvY2tfMzAxNCgpIHsNCisJCUFzc2VydC5hc3NlcnRUcnVlKCJJbnRlcmZhY2VCbG9jayAoMzAxNCkgZWxlbWVudCB0eXBlIG5vdCBmb3VuZCBpbiBTeXNNTCBlbGVtZW50IHR5cGUgc2V0ICIsIEVsZW1lbnRFZGl0U2VydmljZVV0aWxzLmdldEVkaXRTZXJ2aWNlUHJvdmlkZXIoKS5pc0tub3duRWxlbWVudFR5cGUoIm9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuSW50ZXJmYWNlQmxvY2tfMzAxNCIpKTsNCisJfQ0KKw0KKyAgICBAVGVzdA0KKwlwdWJsaWMgdm9pZCB0ZXN0UmVnaXN0cnlDb250ZW50Rm9yQ29udHJvbE9wZXJhdG9yXzMwMDMoKSB7DQorCQlBc3NlcnQuYXNzZXJ0VHJ1ZSgiQ29udHJvbE9wZXJhdG9yICgzMDAzKSBlbGVtZW50IHR5cGUgbm90IGZvdW5kIGluIFN5c01MIGVsZW1lbnQgdHlwZSBzZXQgIiwgRWxlbWVudEVkaXRTZXJ2aWNlVXRpbHMuZ2V0RWRpdFNlcnZpY2VQcm92aWRlcigpLmlzS25vd25FbGVtZW50VHlwZSgib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5Db250cm9sT3BlcmF0b3JfT3BlcmF0aW9uXzMwMDMiKSk7DQorCX0NCisNCisgICAgQFRlc3QNCisJcHVibGljIHZvaWQgdGVzdFJlZ2lzdHJ5Q29udGVudEZvckNvbnRyb2xPcGVyYXRvcl8zMDA3KCkgew0KKwkJQXNzZXJ0LmFzc2VydFRydWUoIkNvbnRyb2xPcGVyYXRvciAoMzAwNykgZWxlbWVudCB0eXBlIG5vdCBmb3VuZCBpbiBTeXNNTCBlbGVtZW50IHR5cGUgc2V0ICIsIEVsZW1lbnRFZGl0U2VydmljZVV0aWxzLmdldEVkaXRTZXJ2aWNlUHJvdmlkZXIoKS5pc0tub3duRWxlbWVudFR5cGUoIm9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuQ29udHJvbE9wZXJhdG9yX09wZXJhdGlvbl8zMDA3IikpOw0KKwl9DQorDQorICAgIEBUZXN0DQorCXB1YmxpYyB2b2lkIHRlc3RSZWdpc3RyeUNvbnRlbnRGb3JDb250cm9sT3BlcmF0b3JfMzAxMygpIHsNCisJCUFzc2VydC5hc3NlcnRUcnVlKCJDb250cm9sT3BlcmF0b3IgKDMwMTMpIGVsZW1lbnQgdHlwZSBub3QgZm91bmQgaW4gU3lzTUwgZWxlbWVudCB0eXBlIHNldCAiLCBFbGVtZW50RWRpdFNlcnZpY2VVdGlscy5nZXRFZGl0U2VydmljZVByb3ZpZGVyKCkuaXNLbm93bkVsZW1lbnRUeXBlKCJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLkNvbnRyb2xPcGVyYXRvcl9PcGVyYXRpb25fMzAxMyIpKTsNCisJfQ0KKw0KKyAgICBAVGVzdA0KKwlwdWJsaWMgdm9pZCB0ZXN0UmVnaXN0cnlDb250ZW50Rm9yQ29udHJvbE9wZXJhdG9yXzMwMTkoKSB7DQorCQlBc3NlcnQuYXNzZXJ0VHJ1ZSgiQ29udHJvbE9wZXJhdG9yICgzMDE5KSBlbGVtZW50IHR5cGUgbm90IGZvdW5kIGluIFN5c01MIGVsZW1lbnQgdHlwZSBzZXQgIiwgRWxlbWVudEVkaXRTZXJ2aWNlVXRpbHMuZ2V0RWRpdFNlcnZpY2VQcm92aWRlcigpLmlzS25vd25FbGVtZW50VHlwZSgib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5Db250cm9sT3BlcmF0b3JfT3BlcmF0aW9uXzMwMTkiKSk7DQorCX0NCisNCisgICAgQFRlc3QNCisJcHVibGljIHZvaWQgdGVzdFJlZ2lzdHJ5Q29udGVudEZvckNvbnRyb2xPcGVyYXRvcl8zMDQyKCkgew0KKwkJQXNzZXJ0LmFzc2VydFRydWUoIkNvbnRyb2xPcGVyYXRvciAoMzA0MikgZWxlbWVudCB0eXBlIG5vdCBmb3VuZCBpbiBTeXNNTCBlbGVtZW50IHR5cGUgc2V0ICIsIEVsZW1lbnRFZGl0U2VydmljZVV0aWxzLmdldEVkaXRTZXJ2aWNlUHJvdmlkZXIoKS5pc0tub3duRWxlbWVudFR5cGUoIm9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuQ29udHJvbE9wZXJhdG9yX09wZXJhdGlvbl8zMDQyIikpOw0KKwl9DQorDQorICAgIEBUZXN0DQorCXB1YmxpYyB2b2lkIHRlc3RSZWdpc3RyeUNvbnRlbnRGb3JSYXRpb25hbGVfMjAxMigpIHsNCisJCUFzc2VydC5hc3NlcnRUcnVlKCJSYXRpb25hbGUgKDIwMTIpIGVsZW1lbnQgdHlwZSBub3QgZm91bmQgaW4gU3lzTUwgZWxlbWVudCB0eXBlIHNldCAiLCBFbGVtZW50RWRpdFNlcnZpY2VVdGlscy5nZXRFZGl0U2VydmljZVByb3ZpZGVyKCkuaXNLbm93bkVsZW1lbnRUeXBlKCJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLlJhdGlvbmFsZV8yMDEyIikpOw0KKwl9DQorDQorICAgIEBUZXN0DQorCXB1YmxpYyB2b2lkIHRlc3RSZWdpc3RyeUNvbnRlbnRGb3JSYXRpb25hbGVfMzAyOCgpIHsNCisJCUFzc2VydC5hc3NlcnRUcnVlKCJSYXRpb25hbGUgKDMwMjgpIGVsZW1lbnQgdHlwZSBub3QgZm91bmQgaW4gU3lzTUwgZWxlbWVudCB0eXBlIHNldCAiLCBFbGVtZW50RWRpdFNlcnZpY2VVdGlscy5nZXRFZGl0U2VydmljZVByb3ZpZGVyKCkuaXNLbm93bkVsZW1lbnRUeXBlKCJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLlJhdGlvbmFsZV8zMDI4IikpOw0KKwl9DQorDQorICAgIEBUZXN0DQorCXB1YmxpYyB2b2lkIHRlc3RSZWdpc3RyeUNvbnRlbnRGb3JWaWV3XzIwMDcoKSB7DQorCQlBc3NlcnQuYXNzZXJ0VHJ1ZSgiVmlldyAoMjAwNykgZWxlbWVudCB0eXBlIG5vdCBmb3VuZCBpbiBTeXNNTCBlbGVtZW50IHR5cGUgc2V0ICIsIEVsZW1lbnRFZGl0U2VydmljZVV0aWxzLmdldEVkaXRTZXJ2aWNlUHJvdmlkZXIoKS5pc0tub3duRWxlbWVudFR5cGUoIm9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuVmlld19QYWNrYWdlXzIwMDciKSk7DQorCX0NCisNCisgICAgQFRlc3QNCisJcHVibGljIHZvaWQgdGVzdFJlZ2lzdHJ5Q29udGVudEZvclZpZXdfMzAwOSgpIHsNCisJCUFzc2VydC5hc3NlcnRUcnVlKCJWaWV3ICgzMDA5KSBlbGVtZW50IHR5cGUgbm90IGZvdW5kIGluIFN5c01MIGVsZW1lbnQgdHlwZSBzZXQgIiwgRWxlbWVudEVkaXRTZXJ2aWNlVXRpbHMuZ2V0RWRpdFNlcnZpY2VQcm92aWRlcigpLmlzS25vd25FbGVtZW50VHlwZSgib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5WaWV3X1BhY2thZ2VfMzAwOSIpKTsNCisJfQ0KKw0KKyAgICBAVGVzdA0KKwlwdWJsaWMgdm9pZCB0ZXN0UmVnaXN0cnlDb250ZW50Rm9yVmlld19QYXB5cnVzVU1MQ2xhc3NEaWFncmFtKCkgew0KKwkJQXNzZXJ0LmFzc2VydFRydWUoIlZpZXcgKFBhcHlydXNVTUxDbGFzc0RpYWdyYW0pIGVsZW1lbnQgdHlwZSBub3QgZm91bmQgaW4gU3lzTUwgZWxlbWVudCB0eXBlIHNldCAiLCBFbGVtZW50RWRpdFNlcnZpY2VVdGlscy5nZXRFZGl0U2VydmljZVByb3ZpZGVyKCkuaXNLbm93bkVsZW1lbnRUeXBlKCJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLlZpZXdfUGFja2FnZV9QYXB5cnVzVU1MQ2xhc3NEaWFncmFtIikpOw0KKwl9DQorDQorICAgIEBUZXN0DQorCXB1YmxpYyB2b2lkIHRlc3RSZWdpc3RyeUNvbnRlbnRGb3JWaWV3XzIwMDgoKSB7DQorCQlBc3NlcnQuYXNzZXJ0VHJ1ZSgiVmlldyAoMjAwOCkgZWxlbWVudCB0eXBlIG5vdCBmb3VuZCBpbiBTeXNNTCBlbGVtZW50IHR5cGUgc2V0ICIsIEVsZW1lbnRFZGl0U2VydmljZVV0aWxzLmdldEVkaXRTZXJ2aWNlUHJvdmlkZXIoKS5pc0tub3duRWxlbWVudFR5cGUoIm9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuVmlld19DbGFzc18yMDA4IikpOw0KKwl9DQorDQorICAgIEBUZXN0DQorCXB1YmxpYyB2b2lkIHRlc3RSZWdpc3RyeUNvbnRlbnRGb3JWaWV3XzMwMDQoKSB7DQorCQlBc3NlcnQuYXNzZXJ0VHJ1ZSgiVmlldyAoMzAwNCkgZWxlbWVudCB0eXBlIG5vdCBmb3VuZCBpbiBTeXNNTCBlbGVtZW50IHR5cGUgc2V0ICIsIEVsZW1lbnRFZGl0U2VydmljZVV0aWxzLmdldEVkaXRTZXJ2aWNlUHJvdmlkZXIoKS5pc0tub3duRWxlbWVudFR5cGUoIm9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuVmlld19DbGFzc18zMDA0IikpOw0KKwl9DQorDQorICAgIEBUZXN0DQorCXB1YmxpYyB2b2lkIHRlc3RSZWdpc3RyeUNvbnRlbnRGb3JWaWV3XzMwMDgoKSB7DQorCQlBc3NlcnQuYXNzZXJ0VHJ1ZSgiVmlldyAoMzAwOCkgZWxlbWVudCB0eXBlIG5vdCBmb3VuZCBpbiBTeXNNTCBlbGVtZW50IHR5cGUgc2V0ICIsIEVsZW1lbnRFZGl0U2VydmljZVV0aWxzLmdldEVkaXRTZXJ2aWNlUHJvdmlkZXIoKS5pc0tub3duRWxlbWVudFR5cGUoIm9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuVmlld19DbGFzc18zMDA4IikpOw0KKwl9DQorDQorICAgIEBUZXN0DQorCXB1YmxpYyB2b2lkIHRlc3RSZWdpc3RyeUNvbnRlbnRGb3JWaWV3XzMwMTAoKSB7DQorCQlBc3NlcnQuYXNzZXJ0VHJ1ZSgiVmlldyAoMzAxMCkgZWxlbWVudCB0eXBlIG5vdCBmb3VuZCBpbiBTeXNNTCBlbGVtZW50IHR5cGUgc2V0ICIsIEVsZW1lbnRFZGl0U2VydmljZVV0aWxzLmdldEVkaXRTZXJ2aWNlUHJvdmlkZXIoKS5pc0tub3duRWxlbWVudFR5cGUoIm9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuVmlld19DbGFzc18zMDEwIikpOw0KKwl9DQorDQorICAgIEBUZXN0DQorCXB1YmxpYyB2b2lkIHRlc3RSZWdpc3RyeUNvbnRlbnRGb3JWaWV3XzMwMTQoKSB7DQorCQlBc3NlcnQuYXNzZXJ0VHJ1ZSgiVmlldyAoMzAxNCkgZWxlbWVudCB0eXBlIG5vdCBmb3VuZCBpbiBTeXNNTCBlbGVtZW50IHR5cGUgc2V0ICIsIEVsZW1lbnRFZGl0U2VydmljZVV0aWxzLmdldEVkaXRTZXJ2aWNlUHJvdmlkZXIoKS5pc0tub3duRWxlbWVudFR5cGUoIm9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuVmlld19DbGFzc18zMDE0IikpOw0KKwl9DQorDQorICAgIEBUZXN0DQorCXB1YmxpYyB2b2lkIHRlc3RSZWdpc3RyeUNvbnRlbnRGb3JDb25mb3JtXzIwMTQoKSB7DQorCQlBc3NlcnQuYXNzZXJ0VHJ1ZSgiQ29uZm9ybSAoMjAxNCkgZWxlbWVudCB0eXBlIG5vdCBmb3VuZCBpbiBTeXNNTCBlbGVtZW50IHR5cGUgc2V0ICIsIEVsZW1lbnRFZGl0U2VydmljZVV0aWxzLmdldEVkaXRTZXJ2aWNlUHJvdmlkZXIoKS5pc0tub3duRWxlbWVudFR5cGUoIm9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuQ29uZm9ybV9EZXBlbmRlbmN5XzIwMTQiKSk7DQorCX0NCisNCisgICAgQFRlc3QNCisJcHVibGljIHZvaWQgdGVzdFJlZ2lzdHJ5Q29udGVudEZvckNvbmZvcm1fNDAwOCgpIHsNCisJCUFzc2VydC5hc3NlcnRUcnVlKCJDb25mb3JtICg0MDA4KSBlbGVtZW50IHR5cGUgbm90IGZvdW5kIGluIFN5c01MIGVsZW1lbnQgdHlwZSBzZXQgIiwgRWxlbWVudEVkaXRTZXJ2aWNlVXRpbHMuZ2V0RWRpdFNlcnZpY2VQcm92aWRlcigpLmlzS25vd25FbGVtZW50VHlwZSgib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5Db25mb3JtX0RlcGVuZGVuY3lfNDAwOCIpKTsNCisJfQ0KKw0KKyAgICBAVGVzdA0KKwlwdWJsaWMgdm9pZCB0ZXN0UmVnaXN0cnlDb250ZW50Rm9yQ29uZm9ybV80MDE4KCkgew0KKwkJQXNzZXJ0LmFzc2VydFRydWUoIkNvbmZvcm0gKDQwMTgpIGVsZW1lbnQgdHlwZSBub3QgZm91bmQgaW4gU3lzTUwgZWxlbWVudCB0eXBlIHNldCAiLCBFbGVtZW50RWRpdFNlcnZpY2VVdGlscy5nZXRFZGl0U2VydmljZVByb3ZpZGVyKCkuaXNLbm93bkVsZW1lbnRUeXBlKCJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLkNvbmZvcm1fRGVwZW5kZW5jeV80MDE4IikpOw0KKwl9DQorDQorICAgIEBUZXN0DQorCXB1YmxpYyB2b2lkIHRlc3RSZWdpc3RyeUNvbnRlbnRGb3JDb25mb3JtX0dlbmVyYWxpemF0aW9uKCkgew0KKwkJQXNzZXJ0LmFzc2VydFRydWUoIkNvbmZvcm0gR2VuZXJhbGl6YXRpb24gZWxlbWVudCB0eXBlIG5vdCBmb3VuZCBpbiBTeXNNTCBlbGVtZW50IHR5cGUgc2V0ICIsIEVsZW1lbnRFZGl0U2VydmljZVV0aWxzLmdldEVkaXRTZXJ2aWNlUHJvdmlkZXIoKS5pc0tub3duRWxlbWVudFR5cGUoIm9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuQ29uZm9ybV9HZW5lcmFsaXphdGlvbl80MDAyIikpOw0KKwl9DQorDQorICAgIEBUZXN0DQorCXB1YmxpYyB2b2lkIHRlc3RSZWdpc3RyeUNvbnRlbnRGb3JQcm9ibGVtXzIwMTIoKSB7DQorCQlBc3NlcnQuYXNzZXJ0VHJ1ZSgiUHJvYmxlbSAoMjAxMikgZWxlbWVudCB0eXBlIG5vdCBmb3VuZCBpbiBTeXNNTCBlbGVtZW50IHR5cGUgc2V0ICIsIEVsZW1lbnRFZGl0U2VydmljZVV0aWxzLmdldEVkaXRTZXJ2aWNlUHJvdmlkZXIoKS5pc0tub3duRWxlbWVudFR5cGUoIm9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuUHJvYmxlbV8yMDEyIikpOw0KKwl9DQorDQorICAgIEBUZXN0DQorCXB1YmxpYyB2b2lkIHRlc3RSZWdpc3RyeUNvbnRlbnRGb3JQcm9ibGVtXzMwMjgoKSB7DQorCQlBc3NlcnQuYXNzZXJ0VHJ1ZSgiUHJvYmxlbSAoMzAyOCkgZWxlbWVudCB0eXBlIG5vdCBmb3VuZCBpbiBTeXNNTCBlbGVtZW50IHR5cGUgc2V0ICIsIEVsZW1lbnRFZGl0U2VydmljZVV0aWxzLmdldEVkaXRTZXJ2aWNlUHJvdmlkZXIoKS5pc0tub3duRWxlbWVudFR5cGUoIm9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuUHJvYmxlbV8zMDI4IikpOw0KKwl9DQorDQorICAgIEBUZXN0DQorCXB1YmxpYyB2b2lkIHRlc3RSZWdpc3RyeUNvbnRlbnRGb3JWaWV3UG9pbnRfMjAwOCgpIHsNCisJCUFzc2VydC5hc3NlcnRUcnVlKCJWaWV3UG9pbnQgKDIwMDgpIGVsZW1lbnQgdHlwZSBub3QgZm91bmQgaW4gU3lzTUwgZWxlbWVudCB0eXBlIHNldCAiLCBFbGVtZW50RWRpdFNlcnZpY2VVdGlscy5nZXRFZGl0U2VydmljZVByb3ZpZGVyKCkuaXNLbm93bkVsZW1lbnRUeXBlKCJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLlZpZXdQb2ludF8yMDA4IikpOw0KKwl9DQorDQorICAgIEBUZXN0DQorCXB1YmxpYyB2b2lkIHRlc3RSZWdpc3RyeUNvbnRlbnRGb3JWaWV3UG9pbnRfMzAwNCgpIHsNCisJCUFzc2VydC5hc3NlcnRUcnVlKCJWaWV3UG9pbnQgKDMwMDQpIGVsZW1lbnQgdHlwZSBub3QgZm91bmQgaW4gU3lzTUwgZWxlbWVudCB0eXBlIHNldCAiLCBFbGVtZW50RWRpdFNlcnZpY2VVdGlscy5nZXRFZGl0U2VydmljZVByb3ZpZGVyKCkuaXNLbm93bkVsZW1lbnRUeXBlKCJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLlZpZXdQb2ludF8zMDA0IikpOw0KKwl9DQorDQorICAgIEBUZXN0DQorCXB1YmxpYyB2b2lkIHRlc3RSZWdpc3RyeUNvbnRlbnRGb3JWaWV3UG9pbnRfMzAwOCgpIHsNCisJCUFzc2VydC5hc3NlcnRUcnVlKCJWaWV3UG9pbnQgKDMwMDgpIGVsZW1lbnQgdHlwZSBub3QgZm91bmQgaW4gU3lzTUwgZWxlbWVudCB0eXBlIHNldCAiLCBFbGVtZW50RWRpdFNlcnZpY2VVdGlscy5nZXRFZGl0U2VydmljZVByb3ZpZGVyKCkuaXNLbm93bkVsZW1lbnRUeXBlKCJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLlZpZXdQb2ludF8zMDA4IikpOw0KKwl9DQorDQorICAgIEBUZXN0DQorCXB1YmxpYyB2b2lkIHRlc3RSZWdpc3RyeUNvbnRlbnRGb3JWaWV3UG9pbnRfMzAxMCgpIHsNCisJCUFzc2VydC5hc3NlcnRUcnVlKCJWaWV3UG9pbnQgKDMwMTApIGVsZW1lbnQgdHlwZSBub3QgZm91bmQgaW4gU3lzTUwgZWxlbWVudCB0eXBlIHNldCAiLCBFbGVtZW50RWRpdFNlcnZpY2VVdGlscy5nZXRFZGl0U2VydmljZVByb3ZpZGVyKCkuaXNLbm93bkVsZW1lbnRUeXBlKCJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLlZpZXdQb2ludF8zMDEwIikpOw0KKwl9DQorDQorICAgIEBUZXN0DQorCXB1YmxpYyB2b2lkIHRlc3RSZWdpc3RyeUNvbnRlbnRGb3JWaWV3UG9pbnRfMzAxNCgpIHsNCisJCUFzc2VydC5hc3NlcnRUcnVlKCJWaWV3UG9pbnQgKDMwMTQpIGVsZW1lbnQgdHlwZSBub3QgZm91bmQgaW4gU3lzTUwgZWxlbWVudCB0eXBlIHNldCAiLCBFbGVtZW50RWRpdFNlcnZpY2VVdGlscy5nZXRFZGl0U2VydmljZVByb3ZpZGVyKCkuaXNLbm93bkVsZW1lbnRUeXBlKCJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLlZpZXdQb2ludF8zMDE0IikpOw0KKwl9DQorDQorICAgIEBUZXN0DQorCXB1YmxpYyB2b2lkIHRlc3RSZWdpc3RyeUNvbnRlbnRGb3JFeHBvc2VfMjAxNCgpIHsNCisJCUFzc2VydC5hc3NlcnRUcnVlKCJFeHBvc2UgKDIwMTQpIGVsZW1lbnQgdHlwZSBub3QgZm91bmQgaW4gU3lzTUwgZWxlbWVudCB0eXBlIHNldCAiLCBFbGVtZW50RWRpdFNlcnZpY2VVdGlscy5nZXRFZGl0U2VydmljZVByb3ZpZGVyKCkuaXNLbm93bkVsZW1lbnRUeXBlKCJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLkV4cG9zZV8yMDE0IikpOw0KKwl9DQorDQorICAgIEBUZXN0DQorCXB1YmxpYyB2b2lkIHRlc3RSZWdpc3RyeUNvbnRlbnRGb3JFeHBvc2VfNDAwOCgpIHsNCisJCUFzc2VydC5hc3NlcnRUcnVlKCJFeHBvc2UgKDQwMDgpIGVsZW1lbnQgdHlwZSBub3QgZm91bmQgaW4gU3lzTUwgZWxlbWVudCB0eXBlIHNldCAiLCBFbGVtZW50RWRpdFNlcnZpY2VVdGlscy5nZXRFZGl0U2VydmljZVByb3ZpZGVyKCkuaXNLbm93bkVsZW1lbnRUeXBlKCJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLkV4cG9zZV80MDA4IikpOw0KKwl9DQorDQorICAgIEBUZXN0DQorCXB1YmxpYyB2b2lkIHRlc3RSZWdpc3RyeUNvbnRlbnRGb3JFeHBvc2VfNDAxOCgpIHsNCisJCUFzc2VydC5hc3NlcnRUcnVlKCJFeHBvc2UgKDQwMTgpIGVsZW1lbnQgdHlwZSBub3QgZm91bmQgaW4gU3lzTUwgZWxlbWVudCB0eXBlIHNldCAiLCBFbGVtZW50RWRpdFNlcnZpY2VVdGlscy5nZXRFZGl0U2VydmljZVByb3ZpZGVyKCkuaXNLbm93bkVsZW1lbnRUeXBlKCJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLkV4cG9zZV80MDE4IikpOw0KKwl9DQorDQorICAgIEBUZXN0DQorCXB1YmxpYyB2b2lkIHRlc3RSZWdpc3RyeUNvbnRlbnRGb3JFbGVtZW50R3JvdXBfMjAxMigpIHsNCisJCUFzc2VydC5hc3NlcnRUcnVlKCJFbGVtZW50R3JvdXAgKDIwMTIpIGVsZW1lbnQgdHlwZSBub3QgZm91bmQgaW4gU3lzTUwgZWxlbWVudCB0eXBlIHNldCAiLCBFbGVtZW50RWRpdFNlcnZpY2VVdGlscy5nZXRFZGl0U2VydmljZVByb3ZpZGVyKCkuaXNLbm93bkVsZW1lbnRUeXBlKCJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLkVsZW1lbnRHcm91cF8yMDEyIikpOw0KKwl9DQorDQorICAgIEBUZXN0DQorCXB1YmxpYyB2b2lkIHRlc3RSZWdpc3RyeUNvbnRlbnRGb3JFbGVtZW50R3JvdXBfMzAyOCgpIHsNCisJCUFzc2VydC5hc3NlcnRUcnVlKCJFbGVtZW50R3JvdXAgKDMwMjgpIGVsZW1lbnQgdHlwZSBub3QgZm91bmQgaW4gU3lzTUwgZWxlbWVudCB0eXBlIHNldCAiLCBFbGVtZW50RWRpdFNlcnZpY2VVdGlscy5nZXRFZGl0U2VydmljZVByb3ZpZGVyKCkuaXNLbm93bkVsZW1lbnRUeXBlKCJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLkVsZW1lbnRHcm91cF8zMDI4IikpOw0KKwl9DQorDQorICAgIEBUZXN0DQorCXB1YmxpYyB2b2lkIHRlc3RSZWdpc3RyeUNvbnRlbnRGb3JDb25zdHJhaW50QmxvY2tfMjAwOCgpIHsNCisJCUFzc2VydC5hc3NlcnRUcnVlKCJDb25zdHJhaW50QmxvY2sgKDIwMDgpIGVsZW1lbnQgdHlwZSBub3QgZm91bmQgaW4gU3lzTUwgZWxlbWVudCB0eXBlIHNldCAiLCBFbGVtZW50RWRpdFNlcnZpY2VVdGlscy5nZXRFZGl0U2VydmljZVByb3ZpZGVyKCkuaXNLbm93bkVsZW1lbnRUeXBlKCJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLkNvbnN0cmFpbnRCbG9ja18yMDA4IikpOw0KKwl9DQorDQorICAgIEBUZXN0DQorCXB1YmxpYyB2b2lkIHRlc3RSZWdpc3RyeUNvbnRlbnRGb3JDb25zdHJhaW50QmxvY2tfMzAwNCgpIHsNCisJCUFzc2VydC5hc3NlcnRUcnVlKCJDb25zdHJhaW50QmxvY2sgKDMwMDQpIGVsZW1lbnQgdHlwZSBub3QgZm91bmQgaW4gU3lzTUwgZWxlbWVudCB0eXBlIHNldCAiLCBFbGVtZW50RWRpdFNlcnZpY2VVdGlscy5nZXRFZGl0U2VydmljZVByb3ZpZGVyKCkuaXNLbm93bkVsZW1lbnRUeXBlKCJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLkNvbnN0cmFpbnRCbG9ja18zMDA0IikpOw0KKwl9DQorDQorICAgIEBUZXN0DQorCXB1YmxpYyB2b2lkIHRlc3RSZWdpc3RyeUNvbnRlbnRGb3JDb25zdHJhaW50QmxvY2tfMzAwOCgpIHsNCisJCUFzc2VydC5hc3NlcnRUcnVlKCJDb25zdHJhaW50QmxvY2sgKDMwMDgpIGVsZW1lbnQgdHlwZSBub3QgZm91bmQgaW4gU3lzTUwgZWxlbWVudCB0eXBlIHNldCAiLCBFbGVtZW50RWRpdFNlcnZpY2VVdGlscy5nZXRFZGl0U2VydmljZVByb3ZpZGVyKCkuaXNLbm93bkVsZW1lbnRUeXBlKCJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLkNvbnN0cmFpbnRCbG9ja18zMDA4IikpOw0KKwl9DQorDQorICAgIEBUZXN0DQorCXB1YmxpYyB2b2lkIHRlc3RSZWdpc3RyeUNvbnRlbnRGb3JDb25zdHJhaW50QmxvY2tfMzAxMCgpIHsNCisJCUFzc2VydC5hc3NlcnRUcnVlKCJDb25zdHJhaW50QmxvY2sgKDMwMTApIGVsZW1lbnQgdHlwZSBub3QgZm91bmQgaW4gU3lzTUwgZWxlbWVudCB0eXBlIHNldCAiLCBFbGVtZW50RWRpdFNlcnZpY2VVdGlscy5nZXRFZGl0U2VydmljZVByb3ZpZGVyKCkuaXNLbm93bkVsZW1lbnRUeXBlKCJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLkNvbnN0cmFpbnRCbG9ja18zMDEwIikpOw0KKwl9DQorDQorICAgIEBUZXN0DQorCXB1YmxpYyB2b2lkIHRlc3RSZWdpc3RyeUNvbnRlbnRGb3JDb25zdHJhaW50QmxvY2tfMzAxNCgpIHsNCisJCUFzc2VydC5hc3NlcnRUcnVlKCJDb25zdHJhaW50QmxvY2sgKDMwMTQpIGVsZW1lbnQgdHlwZSBub3QgZm91bmQgaW4gU3lzTUwgZWxlbWVudCB0eXBlIHNldCAiLCBFbGVtZW50RWRpdFNlcnZpY2VVdGlscy5nZXRFZGl0U2VydmljZVByb3ZpZGVyKCkuaXNLbm93bkVsZW1lbnRUeXBlKCJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLkNvbnN0cmFpbnRCbG9ja18zMDE0IikpOw0KKwl9DQorDQorICAgIEBUZXN0DQorCXB1YmxpYyB2b2lkIHRlc3RSZWdpc3RyeUNvbnRlbnRGb3JBbGxvY2F0ZV9BYnN0cmFjdGlvbigpIHsNCisJCUFzc2VydC5hc3NlcnRUcnVlKCJBbGxvY2F0ZSBBYnN0cmFjdGlvbiBlbGVtZW50IHR5cGUgbm90IGZvdW5kIGluIFN5c01MIGVsZW1lbnQgdHlwZSBzZXQgIiwgRWxlbWVudEVkaXRTZXJ2aWNlVXRpbHMuZ2V0RWRpdFNlcnZpY2VQcm92aWRlcigpLmlzS25vd25FbGVtZW50VHlwZSgib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5BbGxvY2F0ZV9BYnN0cmFjdGlvbl80MDA2IikpOw0KKwl9DQorDQorICAgIEBUZXN0DQorCXB1YmxpYyB2b2lkIHRlc3RSZWdpc3RyeUNvbnRlbnRGb3JEZXJpdmVSZXF0X0Fic3RyYWN0aW9uKCkgew0KKwkJQXNzZXJ0LmFzc2VydFRydWUoIkRlcml2ZVJlcXQgQWJzdHJhY3Rpb24gZWxlbWVudCB0eXBlIG5vdCBmb3VuZCBpbiBTeXNNTCBlbGVtZW50IHR5cGUgc2V0ICIsIEVsZW1lbnRFZGl0U2VydmljZVV0aWxzLmdldEVkaXRTZXJ2aWNlUHJvdmlkZXIoKS5pc0tub3duRWxlbWVudFR5cGUoIm9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuRGVyaXZlUmVxdF9BYnN0cmFjdGlvbl80MDA2IikpOw0KKwl9DQorDQorICAgIEBUZXN0DQorCXB1YmxpYyB2b2lkIHRlc3RSZWdpc3RyeUNvbnRlbnRGb3JDb3B5X0Fic3RyYWN0aW9uKCkgew0KKwkJQXNzZXJ0LmFzc2VydFRydWUoIkNvcHkgQWJzdHJhY3Rpb24gZWxlbWVudCB0eXBlIG5vdCBmb3VuZCBpbiBTeXNNTCBlbGVtZW50IHR5cGUgc2V0ICIsIEVsZW1lbnRFZGl0U2VydmljZVV0aWxzLmdldEVkaXRTZXJ2aWNlUHJvdmlkZXIoKS5pc0tub3duRWxlbWVudFR5cGUoIm9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuQ29weV9BYnN0cmFjdGlvbl80MDA2IikpOw0KKwl9DQorDQorICAgIEBUZXN0DQorCXB1YmxpYyB2b2lkIHRlc3RSZWdpc3RyeUNvbnRlbnRGb3JTYXRpc2Z5X0Fic3RyYWN0aW9uKCkgew0KKwkJQXNzZXJ0LmFzc2VydFRydWUoIlNhdGlzZnkgQWJzdHJhY3Rpb24gZWxlbWVudCB0eXBlIG5vdCBmb3VuZCBpbiBTeXNNTCBlbGVtZW50IHR5cGUgc2V0ICIsIEVsZW1lbnRFZGl0U2VydmljZVV0aWxzLmdldEVkaXRTZXJ2aWNlUHJvdmlkZXIoKS5pc0tub3duRWxlbWVudFR5cGUoIm9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuU2F0aXNmeV9BYnN0cmFjdGlvbl80MDA2IikpOw0KKwl9DQorDQorICAgIEBUZXN0DQorCXB1YmxpYyB2b2lkIHRlc3RSZWdpc3RyeUNvbnRlbnRGb3JUZXN0Q2FzZV8zMDAzKCkgew0KKwkJQXNzZXJ0LmFzc2VydFRydWUoIlRlc3RDYXNlICgzMDAzKSBlbGVtZW50IHR5cGUgbm90IGZvdW5kIGluIFN5c01MIGVsZW1lbnQgdHlwZSBzZXQgIiwgRWxlbWVudEVkaXRTZXJ2aWNlVXRpbHMuZ2V0RWRpdFNlcnZpY2VQcm92aWRlcigpLmlzS25vd25FbGVtZW50VHlwZSgib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5UZXN0Q2FzZV9PcGVyYXRpb25fMzAwMyIpKTsNCisJfQ0KKw0KKyAgICBAVGVzdA0KKwlwdWJsaWMgdm9pZCB0ZXN0UmVnaXN0cnlDb250ZW50Rm9yVGVzdENhc2VfMzAwNygpIHsNCisJCUFzc2VydC5hc3NlcnRUcnVlKCJUZXN0Q2FzZSAoMzAwNykgZWxlbWVudCB0eXBlIG5vdCBmb3VuZCBpbiBTeXNNTCBlbGVtZW50IHR5cGUgc2V0ICIsIEVsZW1lbnRFZGl0U2VydmljZVV0aWxzLmdldEVkaXRTZXJ2aWNlUHJvdmlkZXIoKS5pc0tub3duRWxlbWVudFR5cGUoIm9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuVGVzdENhc2VfT3BlcmF0aW9uXzMwMDciKSk7DQorCX0NCisNCisgICAgQFRlc3QNCisJcHVibGljIHZvaWQgdGVzdFJlZ2lzdHJ5Q29udGVudEZvclRlc3RDYXNlXzMwMTMoKSB7DQorCQlBc3NlcnQuYXNzZXJ0VHJ1ZSgiVGVzdENhc2UgKDMwMTMpIGVsZW1lbnQgdHlwZSBub3QgZm91bmQgaW4gU3lzTUwgZWxlbWVudCB0eXBlIHNldCAiLCBFbGVtZW50RWRpdFNlcnZpY2VVdGlscy5nZXRFZGl0U2VydmljZVByb3ZpZGVyKCkuaXNLbm93bkVsZW1lbnRUeXBlKCJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLlRlc3RDYXNlX09wZXJhdGlvbl8zMDEzIikpOw0KKwl9DQorDQorICAgIEBUZXN0DQorCXB1YmxpYyB2b2lkIHRlc3RSZWdpc3RyeUNvbnRlbnRGb3JUZXN0Q2FzZV8zMDE5KCkgew0KKwkJQXNzZXJ0LmFzc2VydFRydWUoIlRlc3RDYXNlICgzMDE5KSBlbGVtZW50IHR5cGUgbm90IGZvdW5kIGluIFN5c01MIGVsZW1lbnQgdHlwZSBzZXQgIiwgRWxlbWVudEVkaXRTZXJ2aWNlVXRpbHMuZ2V0RWRpdFNlcnZpY2VQcm92aWRlcigpLmlzS25vd25FbGVtZW50VHlwZSgib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5UZXN0Q2FzZV9PcGVyYXRpb25fMzAxOSIpKTsNCisJfQ0KKw0KKyAgICBAVGVzdA0KKwlwdWJsaWMgdm9pZCB0ZXN0UmVnaXN0cnlDb250ZW50Rm9yVGVzdENhc2VfMzA0MigpIHsNCisJCUFzc2VydC5hc3NlcnRUcnVlKCJUZXN0Q2FzZSAoMzA0MikgZWxlbWVudCB0eXBlIG5vdCBmb3VuZCBpbiBTeXNNTCBlbGVtZW50IHR5cGUgc2V0ICIsIEVsZW1lbnRFZGl0U2VydmljZVV0aWxzLmdldEVkaXRTZXJ2aWNlUHJvdmlkZXIoKS5pc0tub3duRWxlbWVudFR5cGUoIm9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuVGVzdENhc2VfT3BlcmF0aW9uXzMwNDIiKSk7DQorCX0NCisNCisgICAgQFRlc3QNCisJcHVibGljIHZvaWQgdGVzdFJlZ2lzdHJ5Q29udGVudEZvclJlcXVpcmVtZW50XzIwMDgoKSB7DQorCQlBc3NlcnQuYXNzZXJ0VHJ1ZSgiUmVxdWlyZW1lbnQgKDIwMDgpIGVsZW1lbnQgdHlwZSBub3QgZm91bmQgaW4gU3lzTUwgZWxlbWVudCB0eXBlIHNldCAiLCBFbGVtZW50RWRpdFNlcnZpY2VVdGlscy5nZXRFZGl0U2VydmljZVByb3ZpZGVyKCkuaXNLbm93bkVsZW1lbnRUeXBlKCJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLlJlcXVpcmVtZW50XzIwMDgiKSk7DQorCX0NCisNCisgICAgQFRlc3QNCisJcHVibGljIHZvaWQgdGVzdFJlZ2lzdHJ5Q29udGVudEZvclJlcXVpcmVtZW50XzMwMDQoKSB7DQorCQlBc3NlcnQuYXNzZXJ0VHJ1ZSgiUmVxdWlyZW1lbnQgKDMwMDQpIGVsZW1lbnQgdHlwZSBub3QgZm91bmQgaW4gU3lzTUwgZWxlbWVudCB0eXBlIHNldCAiLCBFbGVtZW50RWRpdFNlcnZpY2VVdGlscy5nZXRFZGl0U2VydmljZVByb3ZpZGVyKCkuaXNLbm93bkVsZW1lbnRUeXBlKCJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLlJlcXVpcmVtZW50XzMwMDQiKSk7DQorCX0NCisNCisgICAgQFRlc3QNCisJcHVibGljIHZvaWQgdGVzdFJlZ2lzdHJ5Q29udGVudEZvclJlcXVpcmVtZW50XzMwMDgoKSB7DQorCQlBc3NlcnQuYXNzZXJ0VHJ1ZSgiUmVxdWlyZW1lbnQgKDMwMDgpIGVsZW1lbnQgdHlwZSBub3QgZm91bmQgaW4gU3lzTUwgZWxlbWVudCB0eXBlIHNldCAiLCBFbGVtZW50RWRpdFNlcnZpY2VVdGlscy5nZXRFZGl0U2VydmljZVByb3ZpZGVyKCkuaXNLbm93bkVsZW1lbnRUeXBlKCJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLlJlcXVpcmVtZW50XzMwMDgiKSk7DQorCX0NCisNCisgICAgQFRlc3QNCisJcHVibGljIHZvaWQgdGVzdFJlZ2lzdHJ5Q29udGVudEZvclJlcXVpcmVtZW50XzMwMTAoKSB7DQorCQlBc3NlcnQuYXNzZXJ0VHJ1ZSgiUmVxdWlyZW1lbnQgKDMwMTApIGVsZW1lbnQgdHlwZSBub3QgZm91bmQgaW4gU3lzTUwgZWxlbWVudCB0eXBlIHNldCAiLCBFbGVtZW50RWRpdFNlcnZpY2VVdGlscy5nZXRFZGl0U2VydmljZVByb3ZpZGVyKCkuaXNLbm93bkVsZW1lbnRUeXBlKCJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLlJlcXVpcmVtZW50XzMwMTAiKSk7DQorCX0NCisNCisgICAgQFRlc3QNCisJcHVibGljIHZvaWQgdGVzdFJlZ2lzdHJ5Q29udGVudEZvclJlcXVpcmVtZW50XzMwMTQoKSB7DQorCQlBc3NlcnQuYXNzZXJ0VHJ1ZSgiUmVxdWlyZW1lbnQgKDMwMTQpIGVsZW1lbnQgdHlwZSBub3QgZm91bmQgaW4gU3lzTUwgZWxlbWVudCB0eXBlIHNldCAiLCBFbGVtZW50RWRpdFNlcnZpY2VVdGlscy5nZXRFZGl0U2VydmljZVByb3ZpZGVyKCkuaXNLbm93bkVsZW1lbnRUeXBlKCJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLlJlcXVpcmVtZW50XzMwMTQiKSk7DQorCX0NCisNCisgICAgQFRlc3QNCisJcHVibGljIHZvaWQgdGVzdFJlZ2lzdHJ5Q29udGVudEZvclZlcmlmeV9BYnN0cmFjdGlvbigpIHsNCisJCUFzc2VydC5hc3NlcnRUcnVlKCJWZXJpZnkgQWJzdHJhY3Rpb24gZWxlbWVudCB0eXBlIG5vdCBmb3VuZCBpbiBTeXNNTCBlbGVtZW50IHR5cGUgc2V0ICIsIEVsZW1lbnRFZGl0U2VydmljZVV0aWxzLmdldEVkaXRTZXJ2aWNlUHJvdmlkZXIoKS5pc0tub3duRWxlbWVudFR5cGUoIm9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuVmVyaWZ5X0Fic3RyYWN0aW9uXzQwMDYiKSk7DQorCX0NCisNCisgICAgQFRlc3QNCisJcHVibGljIHZvaWQgdGVzdFJlZ2lzdHJ5Q29udGVudEZvclRyYWNlX0Fic3RyYWN0aW9uKCkgew0KKwkJQXNzZXJ0LmFzc2VydFRydWUoIlRyYWNlIEFic3RyYWN0aW9uIGVsZW1lbnQgdHlwZSBub3QgZm91bmQgaW4gU3lzTUwgZWxlbWVudCB0eXBlIHNldCAiLCBFbGVtZW50RWRpdFNlcnZpY2VVdGlscy5nZXRFZGl0U2VydmljZVByb3ZpZGVyKCkuaXNLbm93bkVsZW1lbnRUeXBlKCJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLlRyYWNlX0Fic3RyYWN0aW9uXzQwMDYiKSk7DQorCX0NCisNCisgICAgQFRlc3QNCisJcHVibGljIHZvaWQgdGVzdFJlZ2lzdHJ5Q29udGVudEZvclJlZmluZV9BYnN0cmFjdGlvbigpIHsNCisJCUFzc2VydC5hc3NlcnRUcnVlKCJSZWZpbmUgQWJzdHJhY3Rpb24gZWxlbWVudCB0eXBlIG5vdCBmb3VuZCBpbiBTeXNNTCBlbGVtZW50IHR5cGUgc2V0ICIsIEVsZW1lbnRFZGl0U2VydmljZVV0aWxzLmdldEVkaXRTZXJ2aWNlUHJvdmlkZXIoKS5pc0tub3duRWxlbWVudFR5cGUoIm9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuUmVmaW5lX0Fic3RyYWN0aW9uXzQwMDYiKSk7DQorCX0NCisNCisgICAgQFRlc3QNCisJcHVibGljIHZvaWQgdGVzdFJlZ2lzdHJ5Q29udGVudEZvckZsb3dTcGVjaWZpY2F0aW9uXzIwMDQoKSB7DQorCQlBc3NlcnQuYXNzZXJ0VHJ1ZSgiRmxvd1NwZWNpZmljYXRpb24gKDIwMDQpIGVsZW1lbnQgdHlwZSBub3QgZm91bmQgaW4gU3lzTUwgZWxlbWVudCB0eXBlIHNldCAiLCBFbGVtZW50RWRpdFNlcnZpY2VVdGlscy5nZXRFZGl0U2VydmljZVByb3ZpZGVyKCkuaXNLbm93bkVsZW1lbnRUeXBlKCJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLkZsb3dTcGVjaWZpY2F0aW9uXzIwMDQiKSk7DQorCX0NCisNCisgICAgQFRlc3QNCisJcHVibGljIHZvaWQgdGVzdFJlZ2lzdHJ5Q29udGVudEZvckZsb3dTcGVjaWZpY2F0aW9uXzMwMjMoKSB7DQorCQlBc3NlcnQuYXNzZXJ0VHJ1ZSgiRmxvd1NwZWNpZmljYXRpb24gKDMwMjMpIGVsZW1lbnQgdHlwZSBub3QgZm91bmQgaW4gU3lzTUwgZWxlbWVudCB0eXBlIHNldCAiLCBFbGVtZW50RWRpdFNlcnZpY2VVdGlscy5nZXRFZGl0U2VydmljZVByb3ZpZGVyKCkuaXNLbm93bkVsZW1lbnRUeXBlKCJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLkZsb3dTcGVjaWZpY2F0aW9uXzMwMjMiKSk7DQorCX0NCisNCisgICAgQFRlc3QNCisJcHVibGljIHZvaWQgdGVzdFJlZ2lzdHJ5Q29udGVudEZvckZsb3dTcGVjaWZpY2F0aW9uXzMwMzYoKSB7DQorCQlBc3NlcnQuYXNzZXJ0VHJ1ZSgiRmxvd1NwZWNpZmljYXRpb24gKDMwMzYpIGVsZW1lbnQgdHlwZSBub3QgZm91bmQgaW4gU3lzTUwgZWxlbWVudCB0eXBlIHNldCAiLCBFbGVtZW50RWRpdFNlcnZpY2VVdGlscy5nZXRFZGl0U2VydmljZVByb3ZpZGVyKCkuaXNLbm93bkVsZW1lbnRUeXBlKCJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLkZsb3dTcGVjaWZpY2F0aW9uXzMwMzYiKSk7DQorCX0NCisNCisgICAgQFRlc3QNCisJcHVibGljIHZvaWQgdGVzdFJlZ2lzdHJ5Q29udGVudEZvckZsb3dTcGVjaWZpY2F0aW9uXzMwMzcoKSB7DQorCQlBc3NlcnQuYXNzZXJ0VHJ1ZSgiRmxvd1NwZWNpZmljYXRpb24gKDMwMzcpIGVsZW1lbnQgdHlwZSBub3QgZm91bmQgaW4gU3lzTUwgZWxlbWVudCB0eXBlIHNldCAiLCBFbGVtZW50RWRpdFNlcnZpY2VVdGlscy5nZXRFZGl0U2VydmljZVByb3ZpZGVyKCkuaXNLbm93bkVsZW1lbnRUeXBlKCJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLkZsb3dTcGVjaWZpY2F0aW9uXzMwMzciKSk7DQorCX0NCisNCisgICAgQFRlc3QNCisJcHVibGljIHZvaWQgdGVzdFJlZ2lzdHJ5Q29udGVudEZvckZsb3dTcGVjaWZpY2F0aW9uXzMwMzgoKSB7DQorCQlBc3NlcnQuYXNzZXJ0VHJ1ZSgiRmxvd1NwZWNpZmljYXRpb24gKDMwMzgpIGVsZW1lbnQgdHlwZSBub3QgZm91bmQgaW4gU3lzTUwgZWxlbWVudCB0eXBlIHNldCAiLCBFbGVtZW50RWRpdFNlcnZpY2VVdGlscy5nZXRFZGl0U2VydmljZVByb3ZpZGVyKCkuaXNLbm93bkVsZW1lbnRUeXBlKCJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLkZsb3dTcGVjaWZpY2F0aW9uXzMwMzgiKSk7DQorCX0NCisNCisgICAgQFRlc3QNCisJcHVibGljIHZvaWQgdGVzdFJlZ2lzdHJ5Q29udGVudEZvckFsbG9jYXRlZCgpIHsNCisJCUFzc2VydC5hc3NlcnRUcnVlKCJBbGxvY2F0ZWQgZWxlbWVudCB0eXBlIG5vdCBmb3VuZCBpbiBTeXNNTCBlbGVtZW50IHR5cGUgc2V0ICIsIEVsZW1lbnRFZGl0U2VydmljZVV0aWxzLmdldEVkaXRTZXJ2aWNlUHJvdmlkZXIoKS5pc0tub3duRWxlbWVudFR5cGUoIm9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuQWxsb2NhdGVkXzIwOTciKSk7DQorCX0NCisNCisgICAgQFRlc3QNCisJcHVibGljIHZvaWQgdGVzdFJlZ2lzdHJ5Q29udGVudEZvclJlcXVpcmVtZW50UmVsYXRlZCgpIHsNCisJCUFzc2VydC5hc3NlcnRUcnVlKCJSZXF1aXJlbWVudFJlbGF0ZWQgZWxlbWVudCB0eXBlIG5vdCBmb3VuZCBpbiBTeXNNTCBlbGVtZW50IHR5cGUgc2V0ICIsIEVsZW1lbnRFZGl0U2VydmljZVV0aWxzLmdldEVkaXRTZXJ2aWNlUHJvdmlkZXIoKS5pc0tub3duRWxlbWVudFR5cGUoIm9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuUmVxdWlyZW1lbnRSZWxhdGVkXzIwOTciKSk7DQorCX0NCisNCisgICAgQFRlc3QNCisJcHVibGljIHZvaWQgdGVzdFJlZ2lzdHJ5Q29udGVudEZvckZsb3dQb3J0X0Zsb3dQb3J0X0xhYmVsKCkgew0KKwkJQXNzZXJ0LmFzc2VydFRydWUoIkZsb3dQb3J0IChGbG93UG9ydF9MYWJlbCkgZWxlbWVudCB0eXBlIG5vdCBmb3VuZCBpbiBTeXNNTCBlbGVtZW50IHR5cGUgc2V0ICIsIEVsZW1lbnRFZGl0U2VydmljZVV0aWxzLmdldEVkaXRTZXJ2aWNlUHJvdmlkZXIoKS5pc0tub3duRWxlbWVudFR5cGUoIm9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuRmxvd1BvcnRfTGFiZWwiKSk7DQorCX0NCisNCisgICAgQFRlc3QNCisJcHVibGljIHZvaWQgdGVzdFJlZ2lzdHJ5Q29udGVudEZvckZsb3dQb3J0XzMwMDUoKSB7DQorCQlBc3NlcnQuYXNzZXJ0VHJ1ZSgiRmxvd1BvcnQgKDMwMDUpIGVsZW1lbnQgdHlwZSBub3QgZm91bmQgaW4gU3lzTUwgZWxlbWVudCB0eXBlIHNldCAiLCBFbGVtZW50RWRpdFNlcnZpY2VVdGlscy5nZXRFZGl0U2VydmljZVByb3ZpZGVyKCkuaXNLbm93bkVsZW1lbnRUeXBlKCJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLkZsb3dQb3J0XzMwMDUiKSk7DQorCX0NCisNCisgICAgQFRlc3QNCisJcHVibGljIHZvaWQgdGVzdFJlZ2lzdHJ5Q29udGVudEZvckZsb3dQb3J0XzMwMDYoKSB7DQorCQlBc3NlcnQuYXNzZXJ0VHJ1ZSgiRmxvd1BvcnQgKDMwMDYpIGVsZW1lbnQgdHlwZSBub3QgZm91bmQgaW4gU3lzTUwgZWxlbWVudCB0eXBlIHNldCAiLCBFbGVtZW50RWRpdFNlcnZpY2VVdGlscy5nZXRFZGl0U2VydmljZVByb3ZpZGVyKCkuaXNLbm93bkVsZW1lbnRUeXBlKCJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLkZsb3dQb3J0XzMwMDYiKSk7DQorCX0NCisNCisgICAgQFRlc3QNCisJcHVibGljIHZvaWQgdGVzdFJlZ2lzdHJ5Q29udGVudEZvckZsb3dQb3J0XzMwMTIoKSB7DQorCQlBc3NlcnQuYXNzZXJ0VHJ1ZSgiRmxvd1BvcnQgKDMwMTIpIGVsZW1lbnQgdHlwZSBub3QgZm91bmQgaW4gU3lzTUwgZWxlbWVudCB0eXBlIHNldCAiLCBFbGVtZW50RWRpdFNlcnZpY2VVdGlscy5nZXRFZGl0U2VydmljZVByb3ZpZGVyKCkuaXNLbm93bkVsZW1lbnRUeXBlKCJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLkZsb3dQb3J0XzMwMTIiKSk7DQorCX0NCisNCisgICAgQFRlc3QNCisJcHVibGljIHZvaWQgdGVzdFJlZ2lzdHJ5Q29udGVudEZvckZsb3dQb3J0XzMwMTgoKSB7DQorCQlBc3NlcnQuYXNzZXJ0VHJ1ZSgiRmxvd1BvcnQgKDMwMTgpIGVsZW1lbnQgdHlwZSBub3QgZm91bmQgaW4gU3lzTUwgZWxlbWVudCB0eXBlIHNldCAiLCBFbGVtZW50RWRpdFNlcnZpY2VVdGlscy5nZXRFZGl0U2VydmljZVByb3ZpZGVyKCkuaXNLbm93bkVsZW1lbnRUeXBlKCJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLkZsb3dQb3J0XzMwMTgiKSk7DQorCX0NCisNCisgICAgQFRlc3QNCisJcHVibGljIHZvaWQgdGVzdFJlZ2lzdHJ5Q29udGVudEZvckZsb3dQb3J0XzMwNDEoKSB7DQorCQlBc3NlcnQuYXNzZXJ0VHJ1ZSgiRmxvd1BvcnQgKDMwNDEpIGVsZW1lbnQgdHlwZSBub3QgZm91bmQgaW4gU3lzTUwgZWxlbWVudCB0eXBlIHNldCAiLCBFbGVtZW50RWRpdFNlcnZpY2VVdGlscy5nZXRFZGl0U2VydmljZVByb3ZpZGVyKCkuaXNLbm93bkVsZW1lbnRUeXBlKCJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLkZsb3dQb3J0XzMwNDEiKSk7DQorCX0NCisNCisgICAgQFRlc3QNCisJcHVibGljIHZvaWQgdGVzdFJlZ2lzdHJ5Q29udGVudEZvckNvbnRyb2xPcGVyYXRvcl9PcGVyYXRpb25fQm9yZGVySXRlbSgpIHsNCisJCUFzc2VydC5hc3NlcnRUcnVlKCJDb250cm9sT3BlcmF0b3IgKE9wZXJhdGlvbl9Cb3JkZXJJdGVtKSBlbGVtZW50IHR5cGUgbm90IGZvdW5kIGluIFN5c01MIGVsZW1lbnQgdHlwZSBzZXQgIiwgRWxlbWVudEVkaXRTZXJ2aWNlVXRpbHMuZ2V0RWRpdFNlcnZpY2VQcm92aWRlcigpLmlzS25vd25FbGVtZW50VHlwZSgib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5Db250cm9sT3BlcmF0b3JfT3BlcmF0aW9uX09wZXJhdGlvbl9Cb3JkZXJJdGVtIikpOw0KKwl9DQorDQorICAgIEBUZXN0DQorCXB1YmxpYyB2b2lkIHRlc3RSZWdpc3RyeUNvbnRlbnRGb3JWZXJpZnlfTGluaygpIHsNCisJCUFzc2VydC5hc3NlcnRUcnVlKCJWZXJpZnlfTGluayBlbGVtZW50IHR5cGUgbm90IGZvdW5kIGluIFN5c01MIGVsZW1lbnQgdHlwZSBzZXQgIiwgRWxlbWVudEVkaXRTZXJ2aWNlVXRpbHMuZ2V0RWRpdFNlcnZpY2VQcm92aWRlcigpLmlzS25vd25FbGVtZW50VHlwZSgib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LlZlcmlmeV9BYnN0cmFjdGlvbl9WZXJpZnlfTGluayIpKTsNCisJfQ0KKw0KKyAgICBAVGVzdA0KKwlwdWJsaWMgdm9pZCB0ZXN0UmVnaXN0cnlDb250ZW50Rm9yQ29uc3RyYWludF9Db25zdHJhaW50X0xhYmVsKCkgew0KKwkJQXNzZXJ0LmFzc2VydFRydWUoIkNvbnN0cmFpbnQgKENvbnN0cmFpbnRfTGFiZWwpIGVsZW1lbnQgdHlwZSBub3QgZm91bmQgaW4gU3lzTUwgZWxlbWVudCB0eXBlIHNldCAiLCBFbGVtZW50RWRpdFNlcnZpY2VVdGlscy5nZXRFZGl0U2VydmljZVByb3ZpZGVyKCkuaXNLbm93bkVsZW1lbnRUeXBlKCJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLkNvbnN0cmFpbnRfTGFiZWwiKSk7DQorCX0NCisNCisgICAgQFRlc3QNCisJcHVibGljIHZvaWQgdGVzdFJlZ2lzdHJ5Q29udGVudEZvckFjdG9yKCkgew0KKwkJQXNzZXJ0LmFzc2VydFRydWUoIkFjdG9yIGVsZW1lbnQgdHlwZSBub3QgZm91bmQgaW4gU3lzTUwgZWxlbWVudCB0eXBlIHNldCAiLCBFbGVtZW50RWRpdFNlcnZpY2VVdGlscy5nZXRFZGl0U2VydmljZVByb3ZpZGVyKCkuaXNLbm93bkVsZW1lbnRUeXBlKCJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLkFjdG9yXzIwMDgiKSk7DQorCX0NCisNCisgICAgQFRlc3QNCisJcHVibGljIHZvaWQgdGVzdFJlZ2lzdHJ5Q29udGVudEZvclVuaXRfMjAwMSgpIHsNCisJCUFzc2VydC5hc3NlcnRUcnVlKCJVbml0XzIwMDEgZWxlbWVudCB0eXBlIG5vdCBmb3VuZCBpbiBTeXNNTCBlbGVtZW50IHR5cGUgc2V0ICIsIEVsZW1lbnRFZGl0U2VydmljZVV0aWxzLmdldEVkaXRTZXJ2aWNlUHJvdmlkZXIoKS5pc0tub3duRWxlbWVudFR5cGUoIm9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuVW5pdF8yMDAxIikpOw0KKwl9DQorDQorICAgIEBUZXN0DQorCXB1YmxpYyB2b2lkIHRlc3RSZWdpc3RyeUNvbnRlbnRGb3JVbml0XzMwMjAoKSB7DQorCQlBc3NlcnQuYXNzZXJ0VHJ1ZSgiVW5pdF8zMDIwIGVsZW1lbnQgdHlwZSBub3QgZm91bmQgaW4gU3lzTUwgZWxlbWVudCB0eXBlIHNldCAiLCBFbGVtZW50RWRpdFNlcnZpY2VVdGlscy5nZXRFZGl0U2VydmljZVByb3ZpZGVyKCkuaXNLbm93bkVsZW1lbnRUeXBlKCJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLlVuaXRfMzAyMCIpKTsNCisJfQ0KKw0KKyAgICBAVGVzdA0KKwlwdWJsaWMgdm9pZCB0ZXN0UmVnaXN0cnlDb250ZW50Rm9yUXVhbnRpdHlLaW5kXzIwMDEoKSB7DQorCQlBc3NlcnQuYXNzZXJ0VHJ1ZSgiUXVhbnRpdHlLaW5kXzIwMDEgZWxlbWVudCB0eXBlIG5vdCBmb3VuZCBpbiBTeXNNTCBlbGVtZW50IHR5cGUgc2V0ICIsIEVsZW1lbnRFZGl0U2VydmljZVV0aWxzLmdldEVkaXRTZXJ2aWNlUHJvdmlkZXIoKS5pc0tub3duRWxlbWVudFR5cGUoIm9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuUXVhbnRpdHlLaW5kXzIwMDEiKSk7DQorCX0NCisNCisgICAgQFRlc3QNCisJcHVibGljIHZvaWQgdGVzdFJlZ2lzdHJ5Q29udGVudEZvclF1YW50aXR5S2luZF8zMDIwKCkgew0KKwkJQXNzZXJ0LmFzc2VydFRydWUoIlF1YW50aXR5S2luZF8zMDIwIGVsZW1lbnQgdHlwZSBub3QgZm91bmQgaW4gU3lzTUwgZWxlbWVudCB0eXBlIHNldCAiLCBFbGVtZW50RWRpdFNlcnZpY2VVdGlscy5nZXRFZGl0U2VydmljZVByb3ZpZGVyKCkuaXNLbm93bkVsZW1lbnRUeXBlKCJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLlF1YW50aXR5S2luZF8zMDIwIikpOw0KKwl9DQorDQorICAgIEBUZXN0DQorCXB1YmxpYyB2b2lkIHRlc3RSZWdpc3RyeUNvbnRlbnRGb3JQYXJ0QXNzb2NpYXRpb25fNDAwMSgpIHsNCisJCUFzc2VydC5hc3NlcnRUcnVlKCJQYXJ0QXNzb2NpYXRpb25fNDAwMSBlbGVtZW50IHR5cGUgbm90IGZvdW5kIGluIFN5c01MIGVsZW1lbnQgdHlwZSBzZXQgIiwgRWxlbWVudEVkaXRTZXJ2aWNlVXRpbHMuZ2V0RWRpdFNlcnZpY2VQcm92aWRlcigpLmlzS25vd25FbGVtZW50VHlwZSgib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5QYXJ0QXNzb2NpYXRpb25fNDAwMSIpKTsNCisJfQ0KKw0KK30NCmRpZmYgLS1naXQgYS9kaWFncmFtL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kaWFncmFtLmNvbW1vbi8uY2xhc3NwYXRoIGIvZGlhZ3JhbS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGlhZ3JhbS5jb21tb24vLmNsYXNzcGF0aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YThmMTY2Ci0tLSAvZGV2L251bGwKKysrIGIvZGlhZ3JhbS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGlhZ3JhbS5jb21tb24vLmNsYXNzcGF0aApAQCAtMCwwICsxLDcgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+DQorPGNsYXNzcGF0aD4NCisJPGNsYXNzcGF0aGVudHJ5IGtpbmQ9ImNvbiIgcGF0aD0ib3JnLmVjbGlwc2UuamR0LmxhdW5jaGluZy5KUkVfQ09OVEFJTkVSL29yZy5lY2xpcHNlLmpkdC5pbnRlcm5hbC5kZWJ1Zy51aS5sYXVuY2hlci5TdGFuZGFyZFZNVHlwZS9KYXZhU0UtMS42Ii8+DQorCTxjbGFzc3BhdGhlbnRyeSBraW5kPSJjb24iIHBhdGg9Im9yZy5lY2xpcHNlLnBkZS5jb3JlLnJlcXVpcmVkUGx1Z2lucyIvPg0KKwk8Y2xhc3NwYXRoZW50cnkga2luZD0ic3JjIiBwYXRoPSJzcmMiLz4NCisJPGNsYXNzcGF0aGVudHJ5IGtpbmQ9Im91dHB1dCIgcGF0aD0iYmluIi8+DQorPC9jbGFzc3BhdGg+DQpkaWZmIC0tZ2l0IGEvZGlhZ3JhbS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGlhZ3JhbS5jb21tb24vLnByb2plY3QgYi9kaWFncmFtL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kaWFncmFtLmNvbW1vbi8ucHJvamVjdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44OGE0MWM1Ci0tLSAvZGV2L251bGwKKysrIGIvZGlhZ3JhbS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGlhZ3JhbS5jb21tb24vLnByb2plY3QKQEAgLTAsMCArMSwyOCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4NCis8cHJvamVjdERlc2NyaXB0aW9uPg0KKwk8bmFtZT5vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGlhZ3JhbS5jb21tb248L25hbWU+DQorCTxjb21tZW50PjwvY29tbWVudD4NCisJPHByb2plY3RzPg0KKwk8L3Byb2plY3RzPg0KKwk8YnVpbGRTcGVjPg0KKwkJPGJ1aWxkQ29tbWFuZD4NCisJCQk8bmFtZT5vcmcuZWNsaXBzZS5qZHQuY29yZS5qYXZhYnVpbGRlcjwvbmFtZT4NCisJCQk8YXJndW1lbnRzPg0KKwkJCTwvYXJndW1lbnRzPg0KKwkJPC9idWlsZENvbW1hbmQ+DQorCQk8YnVpbGRDb21tYW5kPg0KKwkJCTxuYW1lPm9yZy5lY2xpcHNlLnBkZS5NYW5pZmVzdEJ1aWxkZXI8L25hbWU+DQorCQkJPGFyZ3VtZW50cz4NCisJCQk8L2FyZ3VtZW50cz4NCisJCTwvYnVpbGRDb21tYW5kPg0KKwkJPGJ1aWxkQ29tbWFuZD4NCisJCQk8bmFtZT5vcmcuZWNsaXBzZS5wZGUuU2NoZW1hQnVpbGRlcjwvbmFtZT4NCisJCQk8YXJndW1lbnRzPg0KKwkJCTwvYXJndW1lbnRzPg0KKwkJPC9idWlsZENvbW1hbmQ+DQorCTwvYnVpbGRTcGVjPg0KKwk8bmF0dXJlcz4NCisJCTxuYXR1cmU+b3JnLmVjbGlwc2UucGRlLlBsdWdpbk5hdHVyZTwvbmF0dXJlPg0KKwkJPG5hdHVyZT5vcmcuZWNsaXBzZS5qZHQuY29yZS5qYXZhbmF0dXJlPC9uYXR1cmU+DQorCTwvbmF0dXJlcz4NCis8L3Byb2plY3REZXNjcmlwdGlvbj4NCmRpZmYgLS1naXQgYS9kaWFncmFtL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kaWFncmFtLmNvbW1vbi8uc2V0dGluZ3Mvb3JnLmVjbGlwc2UuamR0LmNvcmUucHJlZnMgYi9kaWFncmFtL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kaWFncmFtLmNvbW1vbi8uc2V0dGluZ3Mvb3JnLmVjbGlwc2UuamR0LmNvcmUucHJlZnMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDEwMjQ0ZAotLS0gL2Rldi9udWxsCisrKyBiL2RpYWdyYW0vb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRpYWdyYW0uY29tbW9uLy5zZXR0aW5ncy9vcmcuZWNsaXBzZS5qZHQuY29yZS5wcmVmcwpAQCAtMCwwICsxLDI5MSBAQAorZWNsaXBzZS5wcmVmZXJlbmNlcy52ZXJzaW9uPTENCitvcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5jb2RlZ2VuLmlubGluZUpzckJ5dGVjb2RlPWVuYWJsZWQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5jb2RlZ2VuLnRhcmdldFBsYXRmb3JtPTEuNg0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLmNvbXBsaWFuY2U9MS42DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5hc3NlcnRJZGVudGlmaWVyPWVycm9yDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5lbnVtSWRlbnRpZmllcj1lcnJvcg0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnNvdXJjZT0xLjYNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuYWxpZ25fdHlwZV9tZW1iZXJzX29uX2NvbHVtbnM9ZmFsc2UNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuYWxpZ25tZW50X2Zvcl9hcmd1bWVudHNfaW5fYWxsb2NhdGlvbl9leHByZXNzaW9uPTE2DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmFsaWdubWVudF9mb3JfYXJndW1lbnRzX2luX2Fubm90YXRpb249MA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5hbGlnbm1lbnRfZm9yX2FyZ3VtZW50c19pbl9lbnVtX2NvbnN0YW50PTE2DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmFsaWdubWVudF9mb3JfYXJndW1lbnRzX2luX2V4cGxpY2l0X2NvbnN0cnVjdG9yX2NhbGw9MTYNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuYWxpZ25tZW50X2Zvcl9hcmd1bWVudHNfaW5fbWV0aG9kX2ludm9jYXRpb249MTYNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuYWxpZ25tZW50X2Zvcl9hcmd1bWVudHNfaW5fcXVhbGlmaWVkX2FsbG9jYXRpb25fZXhwcmVzc2lvbj0xNg0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5hbGlnbm1lbnRfZm9yX2Fzc2lnbm1lbnQ9MA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5hbGlnbm1lbnRfZm9yX2JpbmFyeV9leHByZXNzaW9uPTE2DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmFsaWdubWVudF9mb3JfY29tcGFjdF9pZj0xNg0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5hbGlnbm1lbnRfZm9yX2NvbmRpdGlvbmFsX2V4cHJlc3Npb249ODANCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuYWxpZ25tZW50X2Zvcl9lbnVtX2NvbnN0YW50cz0wDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmFsaWdubWVudF9mb3JfZXhwcmVzc2lvbnNfaW5fYXJyYXlfaW5pdGlhbGl6ZXI9MTYNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuYWxpZ25tZW50X2Zvcl9tZXRob2RfZGVjbGFyYXRpb249MA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5hbGlnbm1lbnRfZm9yX211bHRpcGxlX2ZpZWxkcz0xNg0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5hbGlnbm1lbnRfZm9yX3BhcmFtZXRlcnNfaW5fY29uc3RydWN0b3JfZGVjbGFyYXRpb249MTYNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuYWxpZ25tZW50X2Zvcl9wYXJhbWV0ZXJzX2luX21ldGhvZF9kZWNsYXJhdGlvbj0xNg0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5hbGlnbm1lbnRfZm9yX3Jlc291cmNlc19pbl90cnk9ODANCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuYWxpZ25tZW50X2Zvcl9zZWxlY3Rvcl9pbl9tZXRob2RfaW52b2NhdGlvbj0xNg0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5hbGlnbm1lbnRfZm9yX3N1cGVyY2xhc3NfaW5fdHlwZV9kZWNsYXJhdGlvbj0xNg0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5hbGlnbm1lbnRfZm9yX3N1cGVyaW50ZXJmYWNlc19pbl9lbnVtX2RlY2xhcmF0aW9uPTE2DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmFsaWdubWVudF9mb3Jfc3VwZXJpbnRlcmZhY2VzX2luX3R5cGVfZGVjbGFyYXRpb249MTYNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuYWxpZ25tZW50X2Zvcl90aHJvd3NfY2xhdXNlX2luX2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uPTE2DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmFsaWdubWVudF9mb3JfdGhyb3dzX2NsYXVzZV9pbl9tZXRob2RfZGVjbGFyYXRpb249MTYNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuYWxpZ25tZW50X2Zvcl91bmlvbl90eXBlX2luX211bHRpY2F0Y2g9MTYNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuYmxhbmtfbGluZXNfYWZ0ZXJfaW1wb3J0cz0xDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmJsYW5rX2xpbmVzX2FmdGVyX3BhY2thZ2U9MQ0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5ibGFua19saW5lc19iZWZvcmVfZmllbGQ9MA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5ibGFua19saW5lc19iZWZvcmVfZmlyc3RfY2xhc3NfYm9keV9kZWNsYXJhdGlvbj0wDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmJsYW5rX2xpbmVzX2JlZm9yZV9pbXBvcnRzPTENCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuYmxhbmtfbGluZXNfYmVmb3JlX21lbWJlcl90eXBlPTENCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuYmxhbmtfbGluZXNfYmVmb3JlX21ldGhvZD0xDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmJsYW5rX2xpbmVzX2JlZm9yZV9uZXdfY2h1bms9MQ0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5ibGFua19saW5lc19iZWZvcmVfcGFja2FnZT0wDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmJsYW5rX2xpbmVzX2JldHdlZW5faW1wb3J0X2dyb3Vwcz0xDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmJsYW5rX2xpbmVzX2JldHdlZW5fdHlwZV9kZWNsYXJhdGlvbnM9MQ0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5icmFjZV9wb3NpdGlvbl9mb3JfYW5ub3RhdGlvbl90eXBlX2RlY2xhcmF0aW9uPWVuZF9vZl9saW5lDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmJyYWNlX3Bvc2l0aW9uX2Zvcl9hbm9ueW1vdXNfdHlwZV9kZWNsYXJhdGlvbj1lbmRfb2ZfbGluZQ0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5icmFjZV9wb3NpdGlvbl9mb3JfYXJyYXlfaW5pdGlhbGl6ZXI9ZW5kX29mX2xpbmUNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuYnJhY2VfcG9zaXRpb25fZm9yX2Jsb2NrPWVuZF9vZl9saW5lDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmJyYWNlX3Bvc2l0aW9uX2Zvcl9ibG9ja19pbl9jYXNlPWVuZF9vZl9saW5lDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmJyYWNlX3Bvc2l0aW9uX2Zvcl9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbj1lbmRfb2ZfbGluZQ0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5icmFjZV9wb3NpdGlvbl9mb3JfZW51bV9jb25zdGFudD1lbmRfb2ZfbGluZQ0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5icmFjZV9wb3NpdGlvbl9mb3JfZW51bV9kZWNsYXJhdGlvbj1lbmRfb2ZfbGluZQ0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5icmFjZV9wb3NpdGlvbl9mb3JfbGFtYmRhX2JvZHk9ZW5kX29mX2xpbmUNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuYnJhY2VfcG9zaXRpb25fZm9yX21ldGhvZF9kZWNsYXJhdGlvbj1lbmRfb2ZfbGluZQ0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5icmFjZV9wb3NpdGlvbl9mb3Jfc3dpdGNoPWVuZF9vZl9saW5lDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmJyYWNlX3Bvc2l0aW9uX2Zvcl90eXBlX2RlY2xhcmF0aW9uPWVuZF9vZl9saW5lDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmNvbW1lbnQuY2xlYXJfYmxhbmtfbGluZXNfaW5fYmxvY2tfY29tbWVudD1mYWxzZQ0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5jb21tZW50LmNsZWFyX2JsYW5rX2xpbmVzX2luX2phdmFkb2NfY29tbWVudD1mYWxzZQ0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5jb21tZW50LmZvcm1hdF9ibG9ja19jb21tZW50cz10cnVlDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmNvbW1lbnQuZm9ybWF0X2hlYWRlcj1mYWxzZQ0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5jb21tZW50LmZvcm1hdF9odG1sPXRydWUNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuY29tbWVudC5mb3JtYXRfamF2YWRvY19jb21tZW50cz10cnVlDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmNvbW1lbnQuZm9ybWF0X2xpbmVfY29tbWVudHM9dHJ1ZQ0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5jb21tZW50LmZvcm1hdF9zb3VyY2VfY29kZT10cnVlDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmNvbW1lbnQuaW5kZW50X3BhcmFtZXRlcl9kZXNjcmlwdGlvbj10cnVlDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmNvbW1lbnQuaW5kZW50X3Jvb3RfdGFncz10cnVlDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmNvbW1lbnQuaW5zZXJ0X25ld19saW5lX2JlZm9yZV9yb290X3RhZ3M9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmNvbW1lbnQuaW5zZXJ0X25ld19saW5lX2Zvcl9wYXJhbWV0ZXI9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmNvbW1lbnQubGluZV9sZW5ndGg9MjYwDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmNvbW1lbnQubmV3X2xpbmVzX2F0X2Jsb2NrX2JvdW5kYXJpZXM9dHJ1ZQ0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5jb21tZW50Lm5ld19saW5lc19hdF9qYXZhZG9jX2JvdW5kYXJpZXM9dHJ1ZQ0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5jb21tZW50LnByZXNlcnZlX3doaXRlX3NwYWNlX2JldHdlZW5fY29kZV9hbmRfbGluZV9jb21tZW50cz1mYWxzZQ0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5jb21wYWN0X2Vsc2VfaWY9dHJ1ZQ0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5jb250aW51YXRpb25faW5kZW50YXRpb249Mg0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5jb250aW51YXRpb25faW5kZW50YXRpb25fZm9yX2FycmF5X2luaXRpYWxpemVyPTINCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuZGlzYWJsaW5nX3RhZz1AZm9ybWF0dGVyXDpvZmYNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuZW5hYmxpbmdfdGFnPUBmb3JtYXR0ZXJcOm9uDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmZvcm1hdF9ndWFyZGlhbl9jbGF1c2Vfb25fb25lX2xpbmU9ZmFsc2UNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuZm9ybWF0X2xpbmVfY29tbWVudF9zdGFydGluZ19vbl9maXJzdF9jb2x1bW49dHJ1ZQ0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbmRlbnRfYm9keV9kZWNsYXJhdGlvbnNfY29tcGFyZV90b19hbm5vdGF0aW9uX2RlY2xhcmF0aW9uX2hlYWRlcj10cnVlDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluZGVudF9ib2R5X2RlY2xhcmF0aW9uc19jb21wYXJlX3RvX2VudW1fY29uc3RhbnRfaGVhZGVyPXRydWUNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5kZW50X2JvZHlfZGVjbGFyYXRpb25zX2NvbXBhcmVfdG9fZW51bV9kZWNsYXJhdGlvbl9oZWFkZXI9dHJ1ZQ0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbmRlbnRfYm9keV9kZWNsYXJhdGlvbnNfY29tcGFyZV90b190eXBlX2hlYWRlcj10cnVlDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluZGVudF9icmVha3NfY29tcGFyZV90b19jYXNlcz10cnVlDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluZGVudF9lbXB0eV9saW5lcz1mYWxzZQ0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbmRlbnRfc3RhdGVtZW50c19jb21wYXJlX3RvX2Jsb2NrPXRydWUNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5kZW50X3N0YXRlbWVudHNfY29tcGFyZV90b19ib2R5PXRydWUNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5kZW50X3N3aXRjaHN0YXRlbWVudHNfY29tcGFyZV90b19jYXNlcz10cnVlDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluZGVudF9zd2l0Y2hzdGF0ZW1lbnRzX2NvbXBhcmVfdG9fc3dpdGNoPWZhbHNlDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluZGVudGF0aW9uLnNpemU9NA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfbmV3X2xpbmVfYWZ0ZXJfYW5ub3RhdGlvbl9vbl9maWVsZD1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X25ld19saW5lX2FmdGVyX2Fubm90YXRpb25fb25fbG9jYWxfdmFyaWFibGU9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9uZXdfbGluZV9hZnRlcl9hbm5vdGF0aW9uX29uX21ldGhvZD1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X25ld19saW5lX2FmdGVyX2Fubm90YXRpb25fb25fcGFja2FnZT1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X25ld19saW5lX2FmdGVyX2Fubm90YXRpb25fb25fcGFyYW1ldGVyPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X25ld19saW5lX2FmdGVyX2Fubm90YXRpb25fb25fdHlwZT1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X25ld19saW5lX2FmdGVyX2xhYmVsPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X25ld19saW5lX2FmdGVyX29wZW5pbmdfYnJhY2VfaW5fYXJyYXlfaW5pdGlhbGl6ZXI9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfbmV3X2xpbmVfYWZ0ZXJfdHlwZV9hbm5vdGF0aW9uPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X25ld19saW5lX2F0X2VuZF9vZl9maWxlX2lmX21pc3Npbmc9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfbmV3X2xpbmVfYmVmb3JlX2NhdGNoX2luX3RyeV9zdGF0ZW1lbnQ9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfbmV3X2xpbmVfYmVmb3JlX2Nsb3NpbmdfYnJhY2VfaW5fYXJyYXlfaW5pdGlhbGl6ZXI9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfbmV3X2xpbmVfYmVmb3JlX2Vsc2VfaW5faWZfc3RhdGVtZW50PWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X25ld19saW5lX2JlZm9yZV9maW5hbGx5X2luX3RyeV9zdGF0ZW1lbnQ9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfbmV3X2xpbmVfYmVmb3JlX3doaWxlX2luX2RvX3N0YXRlbWVudD1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9uZXdfbGluZV9pbl9lbXB0eV9hbm5vdGF0aW9uX2RlY2xhcmF0aW9uPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfbmV3X2xpbmVfaW5fZW1wdHlfYW5vbnltb3VzX3R5cGVfZGVjbGFyYXRpb249aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9uZXdfbGluZV9pbl9lbXB0eV9ibG9jaz1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X25ld19saW5lX2luX2VtcHR5X2VudW1fY29uc3RhbnQ9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9uZXdfbGluZV9pbl9lbXB0eV9lbnVtX2RlY2xhcmF0aW9uPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfbmV3X2xpbmVfaW5fZW1wdHlfbWV0aG9kX2JvZHk9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9uZXdfbGluZV9pbl9lbXB0eV90eXBlX2RlY2xhcmF0aW9uPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfYW5kX2luX3R5cGVfcGFyYW1ldGVyPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfYXNzaWdubWVudF9vcGVyYXRvcj1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX2F0X2luX2Fubm90YXRpb249ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfYXRfaW5fYW5ub3RhdGlvbl90eXBlX2RlY2xhcmF0aW9uPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX2JpbmFyeV9vcGVyYXRvcj1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX2Nsb3NpbmdfYW5nbGVfYnJhY2tldF9pbl90eXBlX2FyZ3VtZW50cz1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX2Nsb3NpbmdfYW5nbGVfYnJhY2tldF9pbl90eXBlX3BhcmFtZXRlcnM9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9jbG9zaW5nX2JyYWNlX2luX2Jsb2NrPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfY2xvc2luZ19wYXJlbl9pbl9jYXN0PWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfY29sb25faW5fYXNzZXJ0PWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfY29sb25faW5fY2FzZT1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX2NvbG9uX2luX2NvbmRpdGlvbmFsPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfY29sb25faW5fZm9yPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfY29sb25faW5fbGFiZWxlZF9zdGF0ZW1lbnQ9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9jb21tYV9pbl9hbGxvY2F0aW9uX2V4cHJlc3Npb249aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9jb21tYV9pbl9hbm5vdGF0aW9uPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfY29tbWFfaW5fYXJyYXlfaW5pdGlhbGl6ZXI9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9jb21tYV9pbl9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbl9wYXJhbWV0ZXJzPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfY29tbWFfaW5fY29uc3RydWN0b3JfZGVjbGFyYXRpb25fdGhyb3dzPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfY29tbWFfaW5fZW51bV9jb25zdGFudF9hcmd1bWVudHM9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9jb21tYV9pbl9lbnVtX2RlY2xhcmF0aW9ucz1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX2NvbW1hX2luX2V4cGxpY2l0Y29uc3RydWN0b3JjYWxsX2FyZ3VtZW50cz1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX2NvbW1hX2luX2Zvcl9pbmNyZW1lbnRzPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfY29tbWFfaW5fZm9yX2luaXRzPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfY29tbWFfaW5fbWV0aG9kX2RlY2xhcmF0aW9uX3BhcmFtZXRlcnM9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9jb21tYV9pbl9tZXRob2RfZGVjbGFyYXRpb25fdGhyb3dzPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfY29tbWFfaW5fbWV0aG9kX2ludm9jYXRpb25fYXJndW1lbnRzPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfY29tbWFfaW5fbXVsdGlwbGVfZmllbGRfZGVjbGFyYXRpb25zPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfY29tbWFfaW5fbXVsdGlwbGVfbG9jYWxfZGVjbGFyYXRpb25zPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfY29tbWFfaW5fcGFyYW1ldGVyaXplZF90eXBlX3JlZmVyZW5jZT1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX2NvbW1hX2luX3N1cGVyaW50ZXJmYWNlcz1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX2NvbW1hX2luX3R5cGVfYXJndW1lbnRzPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfY29tbWFfaW5fdHlwZV9wYXJhbWV0ZXJzPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfZWxsaXBzaXM9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9sYW1iZGFfYXJyb3c9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9vcGVuaW5nX2FuZ2xlX2JyYWNrZXRfaW5fcGFyYW1ldGVyaXplZF90eXBlX3JlZmVyZW5jZT1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9vcGVuaW5nX2FuZ2xlX2JyYWNrZXRfaW5fdHlwZV9hcmd1bWVudHM9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfb3BlbmluZ19hbmdsZV9icmFja2V0X2luX3R5cGVfcGFyYW1ldGVycz1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9vcGVuaW5nX2JyYWNlX2luX2FycmF5X2luaXRpYWxpemVyPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfb3BlbmluZ19icmFja2V0X2luX2FycmF5X2FsbG9jYXRpb25fZXhwcmVzc2lvbj1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9vcGVuaW5nX2JyYWNrZXRfaW5fYXJyYXlfcmVmZXJlbmNlPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX29wZW5pbmdfcGFyZW5faW5fYW5ub3RhdGlvbj1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9vcGVuaW5nX3BhcmVuX2luX2Nhc3Q9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfb3BlbmluZ19wYXJlbl9pbl9jYXRjaD1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9vcGVuaW5nX3BhcmVuX2luX2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX29wZW5pbmdfcGFyZW5faW5fZW51bV9jb25zdGFudD1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9vcGVuaW5nX3BhcmVuX2luX2Zvcj1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9vcGVuaW5nX3BhcmVuX2luX2lmPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX29wZW5pbmdfcGFyZW5faW5fbWV0aG9kX2RlY2xhcmF0aW9uPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX29wZW5pbmdfcGFyZW5faW5fbWV0aG9kX2ludm9jYXRpb249ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfb3BlbmluZ19wYXJlbl9pbl9wYXJlbnRoZXNpemVkX2V4cHJlc3Npb249ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfb3BlbmluZ19wYXJlbl9pbl9zd2l0Y2g9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfb3BlbmluZ19wYXJlbl9pbl9zeW5jaHJvbml6ZWQ9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfb3BlbmluZ19wYXJlbl9pbl90cnk9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfb3BlbmluZ19wYXJlbl9pbl93aGlsZT1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9wb3N0Zml4X29wZXJhdG9yPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX3ByZWZpeF9vcGVyYXRvcj1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9xdWVzdGlvbl9pbl9jb25kaXRpb25hbD1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX3F1ZXN0aW9uX2luX3dpbGRjYXJkPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX3NlbWljb2xvbl9pbl9mb3I9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9zZW1pY29sb25faW5fdHJ5X3Jlc291cmNlcz1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX3VuYXJ5X29wZXJhdG9yPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9hbmRfaW5fdHlwZV9wYXJhbWV0ZXI9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfYXNzaWdubWVudF9vcGVyYXRvcj1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9hdF9pbl9hbm5vdGF0aW9uX3R5cGVfZGVjbGFyYXRpb249aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfYmluYXJ5X29wZXJhdG9yPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2Nsb3NpbmdfYW5nbGVfYnJhY2tldF9pbl9wYXJhbWV0ZXJpemVkX3R5cGVfcmVmZXJlbmNlPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9jbG9zaW5nX2FuZ2xlX2JyYWNrZXRfaW5fdHlwZV9hcmd1bWVudHM9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2Nsb3NpbmdfYW5nbGVfYnJhY2tldF9pbl90eXBlX3BhcmFtZXRlcnM9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2Nsb3NpbmdfYnJhY2VfaW5fYXJyYXlfaW5pdGlhbGl6ZXI9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfY2xvc2luZ19icmFja2V0X2luX2FycmF5X2FsbG9jYXRpb25fZXhwcmVzc2lvbj1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfY2xvc2luZ19icmFja2V0X2luX2FycmF5X3JlZmVyZW5jZT1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfY2xvc2luZ19wYXJlbl9pbl9hbm5vdGF0aW9uPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9jbG9zaW5nX3BhcmVuX2luX2Nhc3Q9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2Nsb3NpbmdfcGFyZW5faW5fY2F0Y2g9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2Nsb3NpbmdfcGFyZW5faW5fY29uc3RydWN0b3JfZGVjbGFyYXRpb249ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2Nsb3NpbmdfcGFyZW5faW5fZW51bV9jb25zdGFudD1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfY2xvc2luZ19wYXJlbl9pbl9mb3I9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2Nsb3NpbmdfcGFyZW5faW5faWY9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2Nsb3NpbmdfcGFyZW5faW5fbWV0aG9kX2RlY2xhcmF0aW9uPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9jbG9zaW5nX3BhcmVuX2luX21ldGhvZF9pbnZvY2F0aW9uPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9jbG9zaW5nX3BhcmVuX2luX3BhcmVudGhlc2l6ZWRfZXhwcmVzc2lvbj1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfY2xvc2luZ19wYXJlbl9pbl9zd2l0Y2g9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2Nsb3NpbmdfcGFyZW5faW5fc3luY2hyb25pemVkPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9jbG9zaW5nX3BhcmVuX2luX3RyeT1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfY2xvc2luZ19wYXJlbl9pbl93aGlsZT1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfY29sb25faW5fYXNzZXJ0PWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2NvbG9uX2luX2Nhc2U9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2NvbG9uX2luX2NvbmRpdGlvbmFsPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2NvbG9uX2luX2RlZmF1bHQ9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2NvbG9uX2luX2Zvcj1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9jb2xvbl9pbl9sYWJlbGVkX3N0YXRlbWVudD1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfY29tbWFfaW5fYWxsb2NhdGlvbl9leHByZXNzaW9uPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9jb21tYV9pbl9hbm5vdGF0aW9uPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9jb21tYV9pbl9hcnJheV9pbml0aWFsaXplcj1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfY29tbWFfaW5fY29uc3RydWN0b3JfZGVjbGFyYXRpb25fcGFyYW1ldGVycz1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfY29tbWFfaW5fY29uc3RydWN0b3JfZGVjbGFyYXRpb25fdGhyb3dzPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9jb21tYV9pbl9lbnVtX2NvbnN0YW50X2FyZ3VtZW50cz1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfY29tbWFfaW5fZW51bV9kZWNsYXJhdGlvbnM9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2NvbW1hX2luX2V4cGxpY2l0Y29uc3RydWN0b3JjYWxsX2FyZ3VtZW50cz1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfY29tbWFfaW5fZm9yX2luY3JlbWVudHM9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2NvbW1hX2luX2Zvcl9pbml0cz1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfY29tbWFfaW5fbWV0aG9kX2RlY2xhcmF0aW9uX3BhcmFtZXRlcnM9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2NvbW1hX2luX21ldGhvZF9kZWNsYXJhdGlvbl90aHJvd3M9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2NvbW1hX2luX21ldGhvZF9pbnZvY2F0aW9uX2FyZ3VtZW50cz1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfY29tbWFfaW5fbXVsdGlwbGVfZmllbGRfZGVjbGFyYXRpb25zPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9jb21tYV9pbl9tdWx0aXBsZV9sb2NhbF9kZWNsYXJhdGlvbnM9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2NvbW1hX2luX3BhcmFtZXRlcml6ZWRfdHlwZV9yZWZlcmVuY2U9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2NvbW1hX2luX3N1cGVyaW50ZXJmYWNlcz1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfY29tbWFfaW5fdHlwZV9hcmd1bWVudHM9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2NvbW1hX2luX3R5cGVfcGFyYW1ldGVycz1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfZWxsaXBzaXM9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2xhbWJkYV9hcnJvdz1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9vcGVuaW5nX2FuZ2xlX2JyYWNrZXRfaW5fcGFyYW1ldGVyaXplZF90eXBlX3JlZmVyZW5jZT1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfb3BlbmluZ19hbmdsZV9icmFja2V0X2luX3R5cGVfYXJndW1lbnRzPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9vcGVuaW5nX2FuZ2xlX2JyYWNrZXRfaW5fdHlwZV9wYXJhbWV0ZXJzPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9vcGVuaW5nX2JyYWNlX2luX2Fubm90YXRpb25fdHlwZV9kZWNsYXJhdGlvbj1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9vcGVuaW5nX2JyYWNlX2luX2Fub255bW91c190eXBlX2RlY2xhcmF0aW9uPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX29wZW5pbmdfYnJhY2VfaW5fYXJyYXlfaW5pdGlhbGl6ZXI9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfb3BlbmluZ19icmFjZV9pbl9ibG9jaz1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9vcGVuaW5nX2JyYWNlX2luX2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX29wZW5pbmdfYnJhY2VfaW5fZW51bV9jb25zdGFudD1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9vcGVuaW5nX2JyYWNlX2luX2VudW1fZGVjbGFyYXRpb249aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfb3BlbmluZ19icmFjZV9pbl9tZXRob2RfZGVjbGFyYXRpb249aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfb3BlbmluZ19icmFjZV9pbl9zd2l0Y2g9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfb3BlbmluZ19icmFjZV9pbl90eXBlX2RlY2xhcmF0aW9uPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX29wZW5pbmdfYnJhY2tldF9pbl9hcnJheV9hbGxvY2F0aW9uX2V4cHJlc3Npb249ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX29wZW5pbmdfYnJhY2tldF9pbl9hcnJheV9yZWZlcmVuY2U9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX29wZW5pbmdfYnJhY2tldF9pbl9hcnJheV90eXBlX3JlZmVyZW5jZT1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfb3BlbmluZ19wYXJlbl9pbl9hbm5vdGF0aW9uPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9vcGVuaW5nX3BhcmVuX2luX2Fubm90YXRpb25fdHlwZV9tZW1iZXJfZGVjbGFyYXRpb249ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX29wZW5pbmdfcGFyZW5faW5fY2F0Y2g9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfb3BlbmluZ19wYXJlbl9pbl9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbj1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfb3BlbmluZ19wYXJlbl9pbl9lbnVtX2NvbnN0YW50PWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9vcGVuaW5nX3BhcmVuX2luX2Zvcj1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9vcGVuaW5nX3BhcmVuX2luX2lmPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX29wZW5pbmdfcGFyZW5faW5fbWV0aG9kX2RlY2xhcmF0aW9uPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9vcGVuaW5nX3BhcmVuX2luX21ldGhvZF9pbnZvY2F0aW9uPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9vcGVuaW5nX3BhcmVuX2luX3BhcmVudGhlc2l6ZWRfZXhwcmVzc2lvbj1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfb3BlbmluZ19wYXJlbl9pbl9zd2l0Y2g9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfb3BlbmluZ19wYXJlbl9pbl9zeW5jaHJvbml6ZWQ9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfb3BlbmluZ19wYXJlbl9pbl90cnk9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfb3BlbmluZ19wYXJlbl9pbl93aGlsZT1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9wYXJlbnRoZXNpemVkX2V4cHJlc3Npb25faW5fcmV0dXJuPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX3BhcmVudGhlc2l6ZWRfZXhwcmVzc2lvbl9pbl90aHJvdz1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9wb3N0Zml4X29wZXJhdG9yPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9wcmVmaXhfb3BlcmF0b3I9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX3F1ZXN0aW9uX2luX2NvbmRpdGlvbmFsPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX3F1ZXN0aW9uX2luX3dpbGRjYXJkPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9zZW1pY29sb249ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX3NlbWljb2xvbl9pbl9mb3I9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX3NlbWljb2xvbl9pbl90cnlfcmVzb3VyY2VzPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV91bmFyeV9vcGVyYXRvcj1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZXR3ZWVuX2JyYWNrZXRzX2luX2FycmF5X3R5cGVfcmVmZXJlbmNlPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JldHdlZW5fZW1wdHlfYnJhY2VzX2luX2FycmF5X2luaXRpYWxpemVyPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JldHdlZW5fZW1wdHlfYnJhY2tldHNfaW5fYXJyYXlfYWxsb2NhdGlvbl9leHByZXNzaW9uPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JldHdlZW5fZW1wdHlfcGFyZW5zX2luX2Fubm90YXRpb25fdHlwZV9tZW1iZXJfZGVjbGFyYXRpb249ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmV0d2Vlbl9lbXB0eV9wYXJlbnNfaW5fY29uc3RydWN0b3JfZGVjbGFyYXRpb249ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmV0d2Vlbl9lbXB0eV9wYXJlbnNfaW5fZW51bV9jb25zdGFudD1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZXR3ZWVuX2VtcHR5X3BhcmVuc19pbl9tZXRob2RfZGVjbGFyYXRpb249ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmV0d2Vlbl9lbXB0eV9wYXJlbnNfaW5fbWV0aG9kX2ludm9jYXRpb249ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5qb2luX2xpbmVzX2luX2NvbW1lbnRzPWZhbHNlDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmpvaW5fd3JhcHBlZF9saW5lcz1mYWxzZQ0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5rZWVwX2Vsc2Vfc3RhdGVtZW50X29uX3NhbWVfbGluZT1mYWxzZQ0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5rZWVwX2VtcHR5X2FycmF5X2luaXRpYWxpemVyX29uX29uZV9saW5lPWZhbHNlDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmtlZXBfaW1wbGVfaWZfb25fb25lX2xpbmU9ZmFsc2UNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIua2VlcF90aGVuX3N0YXRlbWVudF9vbl9zYW1lX2xpbmU9ZmFsc2UNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIubGluZVNwbGl0PTI2MA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5uZXZlcl9pbmRlbnRfYmxvY2tfY29tbWVudHNfb25fZmlyc3RfY29sdW1uPWZhbHNlDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLm5ldmVyX2luZGVudF9saW5lX2NvbW1lbnRzX29uX2ZpcnN0X2NvbHVtbj1mYWxzZQ0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5udW1iZXJfb2ZfYmxhbmtfbGluZXNfYXRfYmVnaW5uaW5nX29mX21ldGhvZF9ib2R5PTANCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIubnVtYmVyX29mX2VtcHR5X2xpbmVzX3RvX3ByZXNlcnZlPTUNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIucHV0X2VtcHR5X3N0YXRlbWVudF9vbl9uZXdfbGluZT10cnVlDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLnRhYnVsYXRpb24uY2hhcj10YWINCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIudGFidWxhdGlvbi5zaXplPTQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIudXNlX29uX29mZl90YWdzPWZhbHNlDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLnVzZV90YWJzX29ubHlfZm9yX2xlYWRpbmdfaW5kZW50YXRpb25zPWZhbHNlDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLndyYXBfYmVmb3JlX2JpbmFyeV9vcGVyYXRvcj10cnVlDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLndyYXBfYmVmb3JlX29yX29wZXJhdG9yX211bHRpY2F0Y2g9dHJ1ZQ0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci53cmFwX291dGVyX2V4cHJlc3Npb25zX3doZW5fbmVzdGVkPXRydWUNCmRpZmYgLS1naXQgYS9kaWFncmFtL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kaWFncmFtLmNvbW1vbi8uc2V0dGluZ3Mvb3JnLmVjbGlwc2UuamR0LnVpLnByZWZzIGIvZGlhZ3JhbS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGlhZ3JhbS5jb21tb24vLnNldHRpbmdzL29yZy5lY2xpcHNlLmpkdC51aS5wcmVmcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMWQ3MDRiCi0tLSAvZGV2L251bGwKKysrIGIvZGlhZ3JhbS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGlhZ3JhbS5jb21tb24vLnNldHRpbmdzL29yZy5lY2xpcHNlLmpkdC51aS5wcmVmcwpAQCAtMCwwICsxLDY4IEBACitjbGVhbnVwLmFkZF9kZWZhdWx0X3NlcmlhbF92ZXJzaW9uX2lkPXRydWUNCitjbGVhbnVwLmFkZF9nZW5lcmF0ZWRfc2VyaWFsX3ZlcnNpb25faWQ9ZmFsc2UNCitjbGVhbnVwLmFkZF9taXNzaW5nX2Fubm90YXRpb25zPXRydWUNCitjbGVhbnVwLmFkZF9taXNzaW5nX2RlcHJlY2F0ZWRfYW5ub3RhdGlvbnM9dHJ1ZQ0KK2NsZWFudXAuYWRkX21pc3NpbmdfbWV0aG9kcz1mYWxzZQ0KK2NsZWFudXAuYWRkX21pc3NpbmdfbmxzX3RhZ3M9ZmFsc2UNCitjbGVhbnVwLmFkZF9taXNzaW5nX292ZXJyaWRlX2Fubm90YXRpb25zPXRydWUNCitjbGVhbnVwLmFkZF9taXNzaW5nX292ZXJyaWRlX2Fubm90YXRpb25zX2ludGVyZmFjZV9tZXRob2RzPXRydWUNCitjbGVhbnVwLmFkZF9zZXJpYWxfdmVyc2lvbl9pZD1mYWxzZQ0KK2NsZWFudXAuYWx3YXlzX3VzZV9ibG9ja3M9dHJ1ZQ0KK2NsZWFudXAuYWx3YXlzX3VzZV9wYXJlbnRoZXNlc19pbl9leHByZXNzaW9ucz1mYWxzZQ0KK2NsZWFudXAuYWx3YXlzX3VzZV90aGlzX2Zvcl9ub25fc3RhdGljX2ZpZWxkX2FjY2Vzcz1mYWxzZQ0KK2NsZWFudXAuYWx3YXlzX3VzZV90aGlzX2Zvcl9ub25fc3RhdGljX21ldGhvZF9hY2Nlc3M9ZmFsc2UNCitjbGVhbnVwLmNvbnZlcnRfZnVuY3Rpb25hbF9pbnRlcmZhY2VzPWZhbHNlDQorY2xlYW51cC5jb252ZXJ0X3RvX2VuaGFuY2VkX2Zvcl9sb29wPWZhbHNlDQorY2xlYW51cC5jb3JyZWN0X2luZGVudGF0aW9uPWZhbHNlDQorY2xlYW51cC5mb3JtYXRfc291cmNlX2NvZGU9ZmFsc2UNCitjbGVhbnVwLmZvcm1hdF9zb3VyY2VfY29kZV9jaGFuZ2VzX29ubHk9ZmFsc2UNCitjbGVhbnVwLmluc2VydF9pbmZlcnJlZF90eXBlX2FyZ3VtZW50cz1mYWxzZQ0KK2NsZWFudXAubWFrZV9sb2NhbF92YXJpYWJsZV9maW5hbD10cnVlDQorY2xlYW51cC5tYWtlX3BhcmFtZXRlcnNfZmluYWw9ZmFsc2UNCitjbGVhbnVwLm1ha2VfcHJpdmF0ZV9maWVsZHNfZmluYWw9dHJ1ZQ0KK2NsZWFudXAubWFrZV90eXBlX2Fic3RyYWN0X2lmX21pc3NpbmdfbWV0aG9kPWZhbHNlDQorY2xlYW51cC5tYWtlX3ZhcmlhYmxlX2RlY2xhcmF0aW9uc19maW5hbD1mYWxzZQ0KK2NsZWFudXAubmV2ZXJfdXNlX2Jsb2Nrcz1mYWxzZQ0KK2NsZWFudXAubmV2ZXJfdXNlX3BhcmVudGhlc2VzX2luX2V4cHJlc3Npb25zPXRydWUNCitjbGVhbnVwLm9yZ2FuaXplX2ltcG9ydHM9ZmFsc2UNCitjbGVhbnVwLnF1YWxpZnlfc3RhdGljX2ZpZWxkX2FjY2Vzc2VzX3dpdGhfZGVjbGFyaW5nX2NsYXNzPWZhbHNlDQorY2xlYW51cC5xdWFsaWZ5X3N0YXRpY19tZW1iZXJfYWNjZXNzZXNfdGhyb3VnaF9pbnN0YW5jZXNfd2l0aF9kZWNsYXJpbmdfY2xhc3M9dHJ1ZQ0KK2NsZWFudXAucXVhbGlmeV9zdGF0aWNfbWVtYmVyX2FjY2Vzc2VzX3Rocm91Z2hfc3VidHlwZXNfd2l0aF9kZWNsYXJpbmdfY2xhc3M9dHJ1ZQ0KK2NsZWFudXAucXVhbGlmeV9zdGF0aWNfbWVtYmVyX2FjY2Vzc2VzX3dpdGhfZGVjbGFyaW5nX2NsYXNzPXRydWUNCitjbGVhbnVwLnF1YWxpZnlfc3RhdGljX21ldGhvZF9hY2Nlc3Nlc193aXRoX2RlY2xhcmluZ19jbGFzcz1mYWxzZQ0KK2NsZWFudXAucmVtb3ZlX3ByaXZhdGVfY29uc3RydWN0b3JzPXRydWUNCitjbGVhbnVwLnJlbW92ZV9yZWR1bmRhbnRfdHlwZV9hcmd1bWVudHM9dHJ1ZQ0KK2NsZWFudXAucmVtb3ZlX3RyYWlsaW5nX3doaXRlc3BhY2VzPXRydWUNCitjbGVhbnVwLnJlbW92ZV90cmFpbGluZ193aGl0ZXNwYWNlc19hbGw9dHJ1ZQ0KK2NsZWFudXAucmVtb3ZlX3RyYWlsaW5nX3doaXRlc3BhY2VzX2lnbm9yZV9lbXB0eT1mYWxzZQ0KK2NsZWFudXAucmVtb3ZlX3VubmVjZXNzYXJ5X2Nhc3RzPXRydWUNCitjbGVhbnVwLnJlbW92ZV91bm5lY2Vzc2FyeV9ubHNfdGFncz10cnVlDQorY2xlYW51cC5yZW1vdmVfdW51c2VkX2ltcG9ydHM9dHJ1ZQ0KK2NsZWFudXAucmVtb3ZlX3VudXNlZF9sb2NhbF92YXJpYWJsZXM9ZmFsc2UNCitjbGVhbnVwLnJlbW92ZV91bnVzZWRfcHJpdmF0ZV9maWVsZHM9dHJ1ZQ0KK2NsZWFudXAucmVtb3ZlX3VudXNlZF9wcml2YXRlX21lbWJlcnM9ZmFsc2UNCitjbGVhbnVwLnJlbW92ZV91bnVzZWRfcHJpdmF0ZV9tZXRob2RzPXRydWUNCitjbGVhbnVwLnJlbW92ZV91bnVzZWRfcHJpdmF0ZV90eXBlcz10cnVlDQorY2xlYW51cC5zb3J0X21lbWJlcnM9ZmFsc2UNCitjbGVhbnVwLnNvcnRfbWVtYmVyc19hbGw9ZmFsc2UNCitjbGVhbnVwLnVzZV9hbm9ueW1vdXNfY2xhc3NfY3JlYXRpb249ZmFsc2UNCitjbGVhbnVwLnVzZV9ibG9ja3M9dHJ1ZQ0KK2NsZWFudXAudXNlX2Jsb2Nrc19vbmx5X2Zvcl9yZXR1cm5fYW5kX3Rocm93PWZhbHNlDQorY2xlYW51cC51c2VfbGFtYmRhPXRydWUNCitjbGVhbnVwLnVzZV9wYXJlbnRoZXNlc19pbl9leHByZXNzaW9ucz1mYWxzZQ0KK2NsZWFudXAudXNlX3RoaXNfZm9yX25vbl9zdGF0aWNfZmllbGRfYWNjZXNzPWZhbHNlDQorY2xlYW51cC51c2VfdGhpc19mb3Jfbm9uX3N0YXRpY19maWVsZF9hY2Nlc3Nfb25seV9pZl9uZWNlc3Nhcnk9dHJ1ZQ0KK2NsZWFudXAudXNlX3RoaXNfZm9yX25vbl9zdGF0aWNfbWV0aG9kX2FjY2Vzcz1mYWxzZQ0KK2NsZWFudXAudXNlX3RoaXNfZm9yX25vbl9zdGF0aWNfbWV0aG9kX2FjY2Vzc19vbmx5X2lmX25lY2Vzc2FyeT10cnVlDQorY2xlYW51cC51c2VfdHlwZV9hcmd1bWVudHM9ZmFsc2UNCitjbGVhbnVwX3Byb2ZpbGU9X1BhcHlydXMNCitjbGVhbnVwX3NldHRpbmdzX3ZlcnNpb249Mg0KK2VjbGlwc2UucHJlZmVyZW5jZXMudmVyc2lvbj0xDQorZm9ybWF0dGVyX3Byb2ZpbGU9X1BhcHlydXMNCitmb3JtYXR0ZXJfc2V0dGluZ3NfdmVyc2lvbj0xMg0KK29yZy5lY2xpcHNlLmpkdC51aS5pZ25vcmVsb3dlcmNhc2VuYW1lcz10cnVlDQorb3JnLmVjbGlwc2UuamR0LnVpLmltcG9ydG9yZGVyPWphdmE7amF2YXg7b3JnO2NvbTsNCitvcmcuZWNsaXBzZS5qZHQudWkuamF2YWRvYz10cnVlDQorb3JnLmVjbGlwc2UuamR0LnVpLm9uZGVtYW5kdGhyZXNob2xkPTk5DQorb3JnLmVjbGlwc2UuamR0LnVpLnN0YXRpY29uZGVtYW5kdGhyZXNob2xkPTk5DQorb3JnLmVjbGlwc2UuamR0LnVpLnRleHQuY3VzdG9tX2NvZGVfdGVtcGxhdGVzPTw/eG1sIHZlcnNpb25cPSIxLjAiIGVuY29kaW5nXD0iVVRGLTgiIHN0YW5kYWxvbmVcPSJubyI/Pjx0ZW1wbGF0ZXM+PHRlbXBsYXRlIGF1dG9pbnNlcnRcPSJ0cnVlIiBjb250ZXh0XD0iZ2V0dGVyY29tbWVudF9jb250ZXh0IiBkZWxldGVkXD0iZmFsc2UiIGRlc2NyaXB0aW9uXD0iQ29tbWVudCBmb3IgZ2V0dGVyIG1ldGhvZCIgZW5hYmxlZFw9InRydWUiIGlkXD0ib3JnLmVjbGlwc2UuamR0LnVpLnRleHQuY29kZXRlbXBsYXRlcy5nZXR0ZXJjb21tZW50IiBuYW1lXD0iZ2V0dGVyY29tbWVudCI+LyoqXG4gKiBAcmV0dXJuIHRoZSAke2JhcmVfZmllbGRfbmFtZX1cbiAqLzwvdGVtcGxhdGU+PHRlbXBsYXRlIGF1dG9pbnNlcnRcPSJ0cnVlIiBjb250ZXh0XD0ic2V0dGVyY29tbWVudF9jb250ZXh0IiBkZWxldGVkXD0iZmFsc2UiIGRlc2NyaXB0aW9uXD0iQ29tbWVudCBmb3Igc2V0dGVyIG1ldGhvZCIgZW5hYmxlZFw9InRydWUiIGlkXD0ib3JnLmVjbGlwc2UuamR0LnVpLnRleHQuY29kZXRlbXBsYXRlcy5zZXR0ZXJjb21tZW50IiBuYW1lXD0ic2V0dGVyY29tbWVudCI+LyoqXG4gKiBAcGFyYW0gJHtwYXJhbX0gdGhlICR7YmFyZV9maWVsZF9uYW1lfSB0byBzZXRcbiAqLzwvdGVtcGxhdGU+PHRlbXBsYXRlIGF1dG9pbnNlcnRcPSJmYWxzZSIgY29udGV4dFw9ImNvbnN0cnVjdG9yY29tbWVudF9jb250ZXh0IiBkZWxldGVkXD0iZmFsc2UiIGRlc2NyaXB0aW9uXD0iQ29tbWVudCBmb3IgY3JlYXRlZCBjb25zdHJ1Y3RvcnMiIGVuYWJsZWRcPSJ0cnVlIiBpZFw9Im9yZy5lY2xpcHNlLmpkdC51aS50ZXh0LmNvZGV0ZW1wbGF0ZXMuY29uc3RydWN0b3Jjb21tZW50IiBuYW1lXD0iY29uc3RydWN0b3Jjb21tZW50Ij4vKipcbiAqIENvbnN0cnVjdG9yLlxuICpcbiAqICR7dGFnc31cbiAqLzwvdGVtcGxhdGU+PHRlbXBsYXRlIGF1dG9pbnNlcnRcPSJmYWxzZSIgY29udGV4dFw9ImZpbGVjb21tZW50X2NvbnRleHQiIGRlbGV0ZWRcPSJmYWxzZSIgZGVzY3JpcHRpb25cPSJDb21tZW50IGZvciBjcmVhdGVkIEphdmEgZmlsZXMiIGVuYWJsZWRcPSJ0cnVlIiBpZFw9Im9yZy5lY2xpcHNlLmpkdC51aS50ZXh0LmNvZGV0ZW1wbGF0ZXMuZmlsZWNvbW1lbnQiIG5hbWVcPSJmaWxlY29tbWVudCI+LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gKiBDb3B5cmlnaHQgKGMpICR7eWVhcn0gQ0VBIExJU1QgYW5kIG90aGVycy5cbiAqIFxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFsc1xuICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wXG4gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdFxuICogaHR0cFw6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sXG4gKlxuICogQ29udHJpYnV0b3JzXDpcbiAqICAgQ0VBIExJU1QgLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb25cbiAqICAgXG4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG48L3RlbXBsYXRlPjx0ZW1wbGF0ZSBhdXRvaW5zZXJ0XD0idHJ1ZSIgY29udGV4dFw9InR5cGVjb21tZW50X2NvbnRleHQiIGRlbGV0ZWRcPSJmYWxzZSIgZGVzY3JpcHRpb25cPSJDb21tZW50IGZvciBjcmVhdGVkIHR5cGVzIiBlbmFibGVkXD0idHJ1ZSIgaWRcPSJvcmcuZWNsaXBzZS5qZHQudWkudGV4dC5jb2RldGVtcGxhdGVzLnR5cGVjb21tZW50IiBuYW1lXD0idHlwZWNvbW1lbnQiPi8qKlxuICogQGF1dGhvciAke3VzZXJ9XG4gKlxuICogJHt0YWdzfVxuICovPC90ZW1wbGF0ZT48dGVtcGxhdGUgYXV0b2luc2VydFw9InRydWUiIGNvbnRleHRcPSJmaWVsZGNvbW1lbnRfY29udGV4dCIgZGVsZXRlZFw9ImZhbHNlIiBkZXNjcmlwdGlvblw9IkNvbW1lbnQgZm9yIGZpZWxkcyIgZW5hYmxlZFw9InRydWUiIGlkXD0ib3JnLmVjbGlwc2UuamR0LnVpLnRleHQuY29kZXRlbXBsYXRlcy5maWVsZGNvbW1lbnQiIG5hbWVcPSJmaWVsZGNvbW1lbnQiPi8qKlxuICogXG4gKi88L3RlbXBsYXRlPjx0ZW1wbGF0ZSBhdXRvaW5zZXJ0XD0idHJ1ZSIgY29udGV4dFw9Im1ldGhvZGNvbW1lbnRfY29udGV4dCIgZGVsZXRlZFw9ImZhbHNlIiBkZXNjcmlwdGlvblw9IkNvbW1lbnQgZm9yIG5vbi1vdmVycmlkaW5nIG1ldGhvZHMiIGVuYWJsZWRcPSJ0cnVlIiBpZFw9Im9yZy5lY2xpcHNlLmpkdC51aS50ZXh0LmNvZGV0ZW1wbGF0ZXMubWV0aG9kY29tbWVudCIgbmFtZVw9Im1ldGhvZGNvbW1lbnQiPi8qKlxuICogJHt0YWdzfVxuICovPC90ZW1wbGF0ZT48dGVtcGxhdGUgYXV0b2luc2VydFw9ImZhbHNlIiBjb250ZXh0XD0ib3ZlcnJpZGVjb21tZW50X2NvbnRleHQiIGRlbGV0ZWRcPSJmYWxzZSIgZGVzY3JpcHRpb25cPSJDb21tZW50IGZvciBvdmVycmlkaW5nIG1ldGhvZHMiIGVuYWJsZWRcPSJ0cnVlIiBpZFw9Im9yZy5lY2xpcHNlLmpkdC51aS50ZXh0LmNvZGV0ZW1wbGF0ZXMub3ZlcnJpZGVjb21tZW50IiBuYW1lXD0ib3ZlcnJpZGVjb21tZW50Ij4vKipcbiAqICR7c2VlX3RvX292ZXJyaWRkZW59XG4gKlxuICogJHt0YWdzfVxuICovPC90ZW1wbGF0ZT48dGVtcGxhdGUgYXV0b2luc2VydFw9ImZhbHNlIiBjb250ZXh0XD0iZGVsZWdhdGVjb21tZW50X2NvbnRleHQiIGRlbGV0ZWRcPSJmYWxzZSIgZGVzY3JpcHRpb25cPSJDb21tZW50IGZvciBkZWxlZ2F0ZSBtZXRob2RzIiBlbmFibGVkXD0idHJ1ZSIgaWRcPSJvcmcuZWNsaXBzZS5qZHQudWkudGV4dC5jb2RldGVtcGxhdGVzLmRlbGVnYXRlY29tbWVudCIgbmFtZVw9ImRlbGVnYXRlY29tbWVudCI+LyoqXG4gKiAke3NlZV90b190YXJnZXR9XG4gKlxuICogJHt0YWdzfVxuICovPC90ZW1wbGF0ZT48dGVtcGxhdGUgYXV0b2luc2VydFw9InRydWUiIGNvbnRleHRcPSJuZXd0eXBlX2NvbnRleHQiIGRlbGV0ZWRcPSJmYWxzZSIgZGVzY3JpcHRpb25cPSJOZXdseSBjcmVhdGVkIGZpbGVzIiBlbmFibGVkXD0idHJ1ZSIgaWRcPSJvcmcuZWNsaXBzZS5qZHQudWkudGV4dC5jb2RldGVtcGxhdGVzLm5ld3R5cGUiIG5hbWVcPSJuZXd0eXBlIj4ke2ZpbGVjb21tZW50fVxuJHtwYWNrYWdlX2RlY2xhcmF0aW9ufVxuXG4ke3R5cGVjb21tZW50fVxuJHt0eXBlX2RlY2xhcmF0aW9ufTwvdGVtcGxhdGU+PHRlbXBsYXRlIGF1dG9pbnNlcnRcPSJ0cnVlIiBjb250ZXh0XD0iY2xhc3Nib2R5X2NvbnRleHQiIGRlbGV0ZWRcPSJmYWxzZSIgZGVzY3JpcHRpb25cPSJDb2RlIGluIG5ldyBjbGFzcyB0eXBlIGJvZGllcyIgZW5hYmxlZFw9InRydWUiIGlkXD0ib3JnLmVjbGlwc2UuamR0LnVpLnRleHQuY29kZXRlbXBsYXRlcy5jbGFzc2JvZHkiIG5hbWVcPSJjbGFzc2JvZHkiPlxuPC90ZW1wbGF0ZT48dGVtcGxhdGUgYXV0b2luc2VydFw9InRydWUiIGNvbnRleHRcPSJpbnRlcmZhY2Vib2R5X2NvbnRleHQiIGRlbGV0ZWRcPSJmYWxzZSIgZGVzY3JpcHRpb25cPSJDb2RlIGluIG5ldyBpbnRlcmZhY2UgdHlwZSBib2RpZXMiIGVuYWJsZWRcPSJ0cnVlIiBpZFw9Im9yZy5lY2xpcHNlLmpkdC51aS50ZXh0LmNvZGV0ZW1wbGF0ZXMuaW50ZXJmYWNlYm9keSIgbmFtZVw9ImludGVyZmFjZWJvZHkiPlxuPC90ZW1wbGF0ZT48dGVtcGxhdGUgYXV0b2luc2VydFw9InRydWUiIGNvbnRleHRcPSJlbnVtYm9keV9jb250ZXh0IiBkZWxldGVkXD0iZmFsc2UiIGRlc2NyaXB0aW9uXD0iQ29kZSBpbiBuZXcgZW51bSB0eXBlIGJvZGllcyIgZW5hYmxlZFw9InRydWUiIGlkXD0ib3JnLmVjbGlwc2UuamR0LnVpLnRleHQuY29kZXRlbXBsYXRlcy5lbnVtYm9keSIgbmFtZVw9ImVudW1ib2R5Ij5cbjwvdGVtcGxhdGU+PHRlbXBsYXRlIGF1dG9pbnNlcnRcPSJ0cnVlIiBjb250ZXh0XD0iYW5ub3RhdGlvbmJvZHlfY29udGV4dCIgZGVsZXRlZFw9ImZhbHNlIiBkZXNjcmlwdGlvblw9IkNvZGUgaW4gbmV3IGFubm90YXRpb24gdHlwZSBib2RpZXMiIGVuYWJsZWRcPSJ0cnVlIiBpZFw9Im9yZy5lY2xpcHNlLmpkdC51aS50ZXh0LmNvZGV0ZW1wbGF0ZXMuYW5ub3RhdGlvbmJvZHkiIG5hbWVcPSJhbm5vdGF0aW9uYm9keSI+XG48L3RlbXBsYXRlPjx0ZW1wbGF0ZSBhdXRvaW5zZXJ0XD0idHJ1ZSIgY29udGV4dFw9ImNhdGNoYmxvY2tfY29udGV4dCIgZGVsZXRlZFw9ImZhbHNlIiBkZXNjcmlwdGlvblw9IkNvZGUgaW4gbmV3IGNhdGNoIGJsb2NrcyIgZW5hYmxlZFw9InRydWUiIGlkXD0ib3JnLmVjbGlwc2UuamR0LnVpLnRleHQuY29kZXRlbXBsYXRlcy5jYXRjaGJsb2NrIiBuYW1lXD0iY2F0Y2hibG9jayI+Ly8gJHt0b2RvfSBBdXRvLWdlbmVyYXRlZCBjYXRjaCBibG9ja1xuJHtleGNlcHRpb25fdmFyfS5wcmludFN0YWNrVHJhY2UoKTs8L3RlbXBsYXRlPjx0ZW1wbGF0ZSBhdXRvaW5zZXJ0XD0idHJ1ZSIgY29udGV4dFw9Im1ldGhvZGJvZHlfY29udGV4dCIgZGVsZXRlZFw9ImZhbHNlIiBkZXNjcmlwdGlvblw9IkNvZGUgaW4gY3JlYXRlZCBtZXRob2Qgc3R1YnMiIGVuYWJsZWRcPSJ0cnVlIiBpZFw9Im9yZy5lY2xpcHNlLmpkdC51aS50ZXh0LmNvZGV0ZW1wbGF0ZXMubWV0aG9kYm9keSIgbmFtZVw9Im1ldGhvZGJvZHkiPi8vICR7dG9kb30gQXV0by1nZW5lcmF0ZWQgbWV0aG9kIHN0dWJcbiR7Ym9keV9zdGF0ZW1lbnR9PC90ZW1wbGF0ZT48dGVtcGxhdGUgYXV0b2luc2VydFw9InRydWUiIGNvbnRleHRcPSJjb25zdHJ1Y3RvcmJvZHlfY29udGV4dCIgZGVsZXRlZFw9ImZhbHNlIiBkZXNjcmlwdGlvblw9IkNvZGUgaW4gY3JlYXRlZCBjb25zdHJ1Y3RvciBzdHVicyIgZW5hYmxlZFw9InRydWUiIGlkXD0ib3JnLmVjbGlwc2UuamR0LnVpLnRleHQuY29kZXRlbXBsYXRlcy5jb25zdHJ1Y3RvcmJvZHkiIG5hbWVcPSJjb25zdHJ1Y3RvcmJvZHkiPiR7Ym9keV9zdGF0ZW1lbnR9XG4vLyAke3RvZG99IEF1dG8tZ2VuZXJhdGVkIGNvbnN0cnVjdG9yIHN0dWI8L3RlbXBsYXRlPjx0ZW1wbGF0ZSBhdXRvaW5zZXJ0XD0idHJ1ZSIgY29udGV4dFw9ImdldHRlcmJvZHlfY29udGV4dCIgZGVsZXRlZFw9ImZhbHNlIiBkZXNjcmlwdGlvblw9IkNvZGUgaW4gY3JlYXRlZCBnZXR0ZXJzIiBlbmFibGVkXD0idHJ1ZSIgaWRcPSJvcmcuZWNsaXBzZS5qZHQudWkudGV4dC5jb2RldGVtcGxhdGVzLmdldHRlcmJvZHkiIG5hbWVcPSJnZXR0ZXJib2R5Ij5yZXR1cm4gJHtmaWVsZH07PC90ZW1wbGF0ZT48dGVtcGxhdGUgYXV0b2luc2VydFw9InRydWUiIGNvbnRleHRcPSJzZXR0ZXJib2R5X2NvbnRleHQiIGRlbGV0ZWRcPSJmYWxzZSIgZGVzY3JpcHRpb25cPSJDb2RlIGluIGNyZWF0ZWQgc2V0dGVycyIgZW5hYmxlZFw9InRydWUiIGlkXD0ib3JnLmVjbGlwc2UuamR0LnVpLnRleHQuY29kZXRlbXBsYXRlcy5zZXR0ZXJib2R5IiBuYW1lXD0ic2V0dGVyYm9keSI+JHtmaWVsZH0gXD0gJHtwYXJhbX07PC90ZW1wbGF0ZT48L3RlbXBsYXRlcz4NCmRpZmYgLS1naXQgYS9kaWFncmFtL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kaWFncmFtLmNvbW1vbi9NRVRBLUlORi9NQU5JRkVTVC5NRiBiL2RpYWdyYW0vb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRpYWdyYW0uY29tbW9uL01FVEEtSU5GL01BTklGRVNULk1GCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA5M2E2ZDgKLS0tIC9kZXYvbnVsbAorKysgYi9kaWFncmFtL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kaWFncmFtLmNvbW1vbi9NRVRBLUlORi9NQU5JRkVTVC5NRgpAQCAtMCwwICsxLDM0IEBACitNYW5pZmVzdC1WZXJzaW9uOiAxLjANCitCdW5kbGUtTWFuaWZlc3RWZXJzaW9uOiAyDQorQnVuZGxlLU5hbWU6ICVwbHVnaW5OYW1lDQorQnVuZGxlLVN5bWJvbGljTmFtZTogb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRpYWdyYW0uY29tbW9uO3NpbmdsZXRvbjo9dHJ1ZQ0KK0J1bmRsZS1WZXJzaW9uOiAwLjcuMC5xdWFsaWZpZXINCitCdW5kbGUtQ2xhc3NQYXRoOiAuDQorQnVuZGxlLUFjdGl2YXRvcjogb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRpYWdyYW0uY29tbW9uLkFjdGl2YXRvcg0KK1JlcXVpcmUtQnVuZGxlOiBvcmcuZWNsaXBzZS51aSwNCisgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLA0KKyBvcmcuZWNsaXBzZS5wYXB5cnVzLnVtbC5kaWFncmFtLmNvbW1vbjtidW5kbGUtdmVyc2lvbj0iMS4xLjAiLA0KKyBvcmcuZWNsaXBzZS51bWwyLnVtbDtidW5kbGUtdmVyc2lvbj0iNS4xLjAiLA0KKyBvcmcuZWNsaXBzZS5wYXB5cnVzLnVtbC50b29scztidW5kbGUtdmVyc2lvbj0iMS4xLjAiLA0KKyBvcmcuZWNsaXBzZS5wYXB5cnVzLnVtbC50b29scy51dGlscztidW5kbGUtdmVyc2lvbj0iMS4xLjAiLA0KKyBvcmcuZWNsaXBzZS5wYXB5cnVzLmluZnJhLmNvcmU7YnVuZGxlLXZlcnNpb249IjEuMS4wIiwNCisgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0O2J1bmRsZS12ZXJzaW9uPSIwLjcuMCIsDQorIG9yZy5lY2xpcHNlLmdtZi5ydW50aW1lLmVtZi50eXBlLmNvcmUsDQorIG9yZy5lY2xpcHNlLnBhcHlydXMudW1sLmRpYWdyYW0uY2xheno7YnVuZGxlLXZlcnNpb249IjEuMS4wIiwNCisgb3JnLmVjbGlwc2UucGFweXJ1cy51bWwuc2VydmljZS50eXBlcztidW5kbGUtdmVyc2lvbj0iMS4xLjAiLA0KKyBvcmcuZWNsaXBzZS5wYXB5cnVzLmluZnJhLnNlcnZpY2VzLmVkaXQ7YnVuZGxlLXZlcnNpb249IjEuMS4wIiwNCisgb3JnLmVjbGlwc2UucGFweXJ1cy5pbmZyYS5nbWZkaWFnLmNvbW1vbjtidW5kbGUtdmVyc2lvbj0iMS4xLjAiLA0KKyBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuc2VydmljZS50eXBlcztidW5kbGUtdmVyc2lvbj0iMC43LjAiLA0KKyBvcmcuZWNsaXBzZS5nbWYucnVudGltZS5kaWFncmFtLnVpLA0KKyBvcmcuZWNsaXBzZS5wYXB5cnVzLmluZnJhLmVsZW1lbnR0eXBlc2NvbmZpZ3VyYXRpb25zO2J1bmRsZS12ZXJzaW9uPSIxLjEuMCIsDQorIG9yZy5lY2xpcHNlLnBhcHlydXMudW1sLnRvb2xzLmVsZW1lbnR0eXBlc2NvbmZpZ3VyYXRpb25zO2J1bmRsZS12ZXJzaW9uPSIxLjEuMCIsDQorIG9yZy5lY2xpcHNlLnBhcHlydXMudW1sLmRpYWdyYW0uY29tcG9zaXRlO2J1bmRsZS12ZXJzaW9uPSIxLjEuMCINCitCdW5kbGUtUmVxdWlyZWRFeGVjdXRpb25FbnZpcm9ubWVudDogSmF2YVNFLTEuNg0KK0V4cG9ydC1QYWNrYWdlOiBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGlhZ3JhbS5jb21tb247dXNlczo9Im9yZy5lY2xpcHNlLnVpLnBsdWdpbixvcmcub3NnaS5mcmFtZXdvcmsiLA0KKyBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGlhZ3JhbS5jb21tb24uYWR2aWNlcywNCisgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRpYWdyYW0uY29tbW9uLmNvbW1hbmQsDQorIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kaWFncmFtLmNvbW1vbi5kaWFsb2cNCitCdW5kbGUtQWN0aXZhdGlvblBvbGljeTogbGF6eQ0KK0J1bmRsZS1Mb2NhbGl6YXRpb246IHBsdWdpbg0KK0J1bmRsZS1EZXNjcmlwdGlvbjogJXBsdWdpbkRlc2NyaXB0aW9uDQorQnVuZGxlLVZlbmRvcjogJXByb3ZpZGVyTmFtZQ0KZGlmZiAtLWdpdCBhL2RpYWdyYW0vb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRpYWdyYW0uY29tbW9uL2Fib3V0Lmh0bWwgYi9kaWFncmFtL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kaWFncmFtLmNvbW1vbi9hYm91dC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgyZDQ5YmYKLS0tIC9kZXYvbnVsbAorKysgYi9kaWFncmFtL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kaWFncmFtLmNvbW1vbi9hYm91dC5odG1sCkBAIC0wLDAgKzEsMjggQEAKKzwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgWEhUTUwgMS4wIFN0cmljdC8vRU4iDQorICAgICJodHRwOi8vd3d3LnczLm9yZy9UUi94aHRtbDEvRFREL3hodG1sMS1zdHJpY3QuZHRkIj4NCis8aHRtbCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCI+DQorPGhlYWQ+DQorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9SVNPLTg4NTktMSIvPg0KKzx0aXRsZT5BYm91dDwvdGl0bGU+DQorPC9oZWFkPg0KKzxib2R5IGxhbmc9IkVOLVVTIj4NCis8aDI+QWJvdXQgVGhpcyBDb250ZW50PC9oMj4NCisgDQorPHA+SnVuZSA1LCAyMDA3PC9wPgkNCis8aDM+TGljZW5zZTwvaDM+DQorDQorPHA+VGhlIEVjbGlwc2UgRm91bmRhdGlvbiBtYWtlcyBhdmFpbGFibGUgYWxsIGNvbnRlbnQgaW4gdGhpcyBwbHVnLWluICgmcXVvdDtDb250ZW50JnF1b3Q7KS4gIFVubGVzcyBvdGhlcndpc2UgDQoraW5kaWNhdGVkIGJlbG93LCB0aGUgQ29udGVudCBpcyBwcm92aWRlZCB0byB5b3UgdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZQ0KK0VjbGlwc2UgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAxLjAgKCZxdW90O0VQTCZxdW90OykuICBBIGNvcHkgb2YgdGhlIEVQTCBpcyBhdmFpbGFibGUgDQorYXQgPGEgaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwiPmh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sPC9hPi4NCitGb3IgcHVycG9zZXMgb2YgdGhlIEVQTCwgJnF1b3Q7UHJvZ3JhbSZxdW90OyB3aWxsIG1lYW4gdGhlIENvbnRlbnQuPC9wPg0KKw0KKzxwPklmIHlvdSBkaWQgbm90IHJlY2VpdmUgdGhpcyBDb250ZW50IGRpcmVjdGx5IGZyb20gdGhlIEVjbGlwc2UgRm91bmRhdGlvbiwgdGhlIENvbnRlbnQgaXMgDQorYmVpbmcgcmVkaXN0cmlidXRlZCBieSBhbm90aGVyIHBhcnR5ICgmcXVvdDtSZWRpc3RyaWJ1dG9yJnF1b3Q7KSBhbmQgZGlmZmVyZW50IHRlcm1zIGFuZCBjb25kaXRpb25zIG1heQ0KK2FwcGx5IHRvIHlvdXIgdXNlIG9mIGFueSBvYmplY3QgY29kZSBpbiB0aGUgQ29udGVudC4gIENoZWNrIHRoZSBSZWRpc3RyaWJ1dG9yJ3MgbGljZW5zZSB0aGF0IHdhcyANCitwcm92aWRlZCB3aXRoIHRoZSBDb250ZW50LiAgSWYgbm8gc3VjaCBsaWNlbnNlIGV4aXN0cywgY29udGFjdCB0aGUgUmVkaXN0cmlidXRvci4gIFVubGVzcyBvdGhlcndpc2UNCitpbmRpY2F0ZWQgYmVsb3csIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgRVBMIHN0aWxsIGFwcGx5IHRvIGFueSBzb3VyY2UgY29kZSBpbiB0aGUgQ29udGVudA0KK2FuZCBzdWNoIHNvdXJjZSBjb2RlIG1heSBiZSBvYnRhaW5lZCBhdCA8YSBocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnLyI+aHR0cDovL3d3dy5lY2xpcHNlLm9yZzwvYT4uPC9wPg0KKw0KKzwvYm9keT4NCis8L2h0bWw+DQpkaWZmIC0tZ2l0IGEvZGlhZ3JhbS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGlhZ3JhbS5jb21tb24vYnVpbGQucHJvcGVydGllcyBiL2RpYWdyYW0vb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRpYWdyYW0uY29tbW9uL2J1aWxkLnByb3BlcnRpZXMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTcxNWRmMgotLS0gL2Rldi9udWxsCisrKyBiL2RpYWdyYW0vb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRpYWdyYW0uY29tbW9uL2J1aWxkLnByb3BlcnRpZXMKQEAgLTAsMCArMSwxMiBAQAorIw0KKw0KK2Jpbi5pbmNsdWRlcyA9IC4sXA0KKyAgICAgICAgICAgICAgIE1FVEEtSU5GLyxcDQorICAgICAgICAgICAgICAgcGx1Z2luLnhtbCxcDQorICAgICAgICAgICAgICAgcGx1Z2luLnByb3BlcnRpZXMsXA0KKyAgICAgICAgICAgICAgIHJlc291cmNlcy8sXA0KKyAgICAgICAgICAgICAgIGFib3V0Lmh0bWwNCitqYXJzLmNvbXBpbGUub3JkZXIgPSAuDQorc291cmNlLi4gPSBzcmMvDQorb3V0cHV0Li4gPSBiaW4vDQorc3JjLmluY2x1ZGVzID0gYWJvdXQuaHRtbA0KZGlmZiAtLWdpdCBhL2RpYWdyYW0vb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRpYWdyYW0uY29tbW9uL3BsdWdpbi5wcm9wZXJ0aWVzIGIvZGlhZ3JhbS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGlhZ3JhbS5jb21tb24vcGx1Z2luLnByb3BlcnRpZXMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzVjZjZjMwotLS0gL2Rldi9udWxsCisrKyBiL2RpYWdyYW0vb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRpYWdyYW0uY29tbW9uL3BsdWdpbi5wcm9wZXJ0aWVzCkBAIC0wLDAgKzEsMTUgQEAKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KKyMgQ29weXJpZ2h0IChjKSAyMDE1IENFQSBMSVNULg0KKyMgQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KKyMgYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQorIyB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KKyMgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisjDQorIyBDb250cmlidXRvcnM6DQorIyAgICAgQmVub2l0IE1hZ2dpIChDRUEgTElTVCkgYmVub2l0Lm1hZ2dpQGNlYS5mciAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbg0KKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCitwbHVnaW5OYW1lPW9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kaWFncmFtLmNvbW1vbg0KK3BsdWdpbkRlc2NyaXB0aW9uPVRoaXMgcGx1Zy1pbiBjb250YWlucyB0aGUgY29tbW9uIHBhcnQgb2YgYWxsIFN5c01MIDEuNCBkaWFncmFtDQorcHJvdmlkZXJOYW1lPUVjbGlwc2UgTW9kZWxpbmcgUHJvamVjdA0KKw0KKw0KZGlmZiAtLWdpdCBhL2RpYWdyYW0vb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRpYWdyYW0uY29tbW9uL3BsdWdpbi54bWwgYi9kaWFncmFtL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kaWFncmFtLmNvbW1vbi9wbHVnaW4ueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ4ZDI1NzAKLS0tIC9kZXYvbnVsbAorKysgYi9kaWFncmFtL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kaWFncmFtLmNvbW1vbi9wbHVnaW4ueG1sCkBAIC0wLDAgKzEsMjYgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+DQorPD9lY2xpcHNlIHZlcnNpb249IjMuMCI/Pg0KKw0KKzwhLS0NCistLT4NCisNCis8cGx1Z2luPiANCisgICANCisgICANCisgICAgICAgICA8ZXh0ZW5zaW9uDQorICAgICAgICAgcG9pbnQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuaW5mcmEuZWxlbWVudHR5cGVzY29uZmlndXJhdGlvbnMuZWxlbWVudFR5cGVTZXRDb25maWd1cmF0aW9uIj4NCisgICAgICA8ZWxlbWVudFR5cGVTZXQNCisgICAgICAgICAgICBpZD0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnNlcnZpY2UudHlwZXMuZWxlbWVudFR5cGVTZXQuY29tcG9zaXRlIg0KKyAgICAgICAgICAgIHBhdGg9InJlc291cmNlcy9TeXNNTDE0Q29tcG9zaXRlU3RydWN0dXJlRGlhZ3JhbS5lbGVtZW50dHlwZXNjb25maWd1cmF0aW9ucyI+DQorICAgICAgPC9lbGVtZW50VHlwZVNldD4NCisgICA8L2V4dGVuc2lvbj4NCisgICANCisgICAgICAgICA8ZXh0ZW5zaW9uDQorICAgICAgICAgcG9pbnQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuaW5mcmEuZWxlbWVudHR5cGVzY29uZmlndXJhdGlvbnMuZWxlbWVudFR5cGVTZXRDb25maWd1cmF0aW9uIj4NCisgICAgICA8ZWxlbWVudFR5cGVTZXQNCisgICAgICAgICAgICBpZD0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnNlcnZpY2UudHlwZXMuZWxlbWVudFR5cGVTZXQuY2xhc3MiDQorICAgICAgICAgICAgcGF0aD0icmVzb3VyY2VzL1N5c01MMTRVTUxDbGFzc0RpYWdyYW0uZWxlbWVudHR5cGVzY29uZmlndXJhdGlvbnMiPg0KKyAgICAgIDwvZWxlbWVudFR5cGVTZXQ+DQorICAgPC9leHRlbnNpb24+DQorICAgDQorPC9wbHVnaW4+DQpkaWZmIC0tZ2l0IGEvZGlhZ3JhbS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGlhZ3JhbS5jb21tb24vcG9tLnhtbCBiL2RpYWdyYW0vb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRpYWdyYW0uY29tbW9uL3BvbS54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTcwYjMzZgotLS0gL2Rldi9udWxsCisrKyBiL2RpYWdyYW0vb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRpYWdyYW0uY29tbW9uL3BvbS54bWwKQEAgLTAsMCArMSwxMiBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4NCis8cHJvamVjdD4NCisJPG1vZGVsVmVyc2lvbj40LjAuMDwvbW9kZWxWZXJzaW9uPg0KKwk8cGFyZW50Pg0KKwkJPGdyb3VwSWQ+b3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDwvZ3JvdXBJZD4JDQorCQk8YXJ0aWZhY3RJZD5vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sLmRpYWdyYW08L2FydGlmYWN0SWQ+DQorCQk8dmVyc2lvbj4wLjcuMC1TTkFQU0hPVDwvdmVyc2lvbj4NCisJPC9wYXJlbnQ+DQorCTxhcnRpZmFjdElkPm9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kaWFncmFtLmNvbW1vbjwvYXJ0aWZhY3RJZD4NCisJPHZlcnNpb24+MC43LjAtU05BUFNIT1Q8L3ZlcnNpb24+DQorCTxwYWNrYWdpbmc+ZWNsaXBzZS1wbHVnaW48L3BhY2thZ2luZz4NCis8L3Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGlhZ3JhbS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGlhZ3JhbS5jb21tb24vcmVzb3VyY2VzL1N5c01MMTRDb21wb3NpdGVTdHJ1Y3R1cmVEaWFncmFtLmVsZW1lbnR0eXBlc2NvbmZpZ3VyYXRpb25zIGIvZGlhZ3JhbS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGlhZ3JhbS5jb21tb24vcmVzb3VyY2VzL1N5c01MMTRDb21wb3NpdGVTdHJ1Y3R1cmVEaWFncmFtLmVsZW1lbnR0eXBlc2NvbmZpZ3VyYXRpb25zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIyNTUwYzgKLS0tIC9kZXYvbnVsbAorKysgYi9kaWFncmFtL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kaWFncmFtLmNvbW1vbi9yZXNvdXJjZXMvU3lzTUwxNENvbXBvc2l0ZVN0cnVjdHVyZURpYWdyYW0uZWxlbWVudHR5cGVzY29uZmlndXJhdGlvbnMKQEAgLTAsMCArMSw4NzcgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IkFTQ0lJIj8+DQorPGVsZW1lbnR0eXBlc2NvbmZpZ3VyYXRpb25zOkVsZW1lbnRUeXBlU2V0Q29uZmlndXJhdGlvbg0KKyAgICB4bWk6dmVyc2lvbj0iMi4wIg0KKyAgICB4bWxuczp4bWk9Imh0dHA6Ly93d3cub21nLm9yZy9YTUkiDQorICAgIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiDQorICAgIHhtbG5zOmFwcGx5c3RlcmVvdHlwZWFkdmljZWNvbmZpZ3VyYXRpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvcGFweXJ1cy9pbmZyYS9lbGVtZW50dHlwZXNjb25maWd1cmF0aW9ucy91bWwvYXBwbHlzdGVyZW90eXBlYWR2aWNlLzEuMCINCisgICAgeG1sbnM6ZWxlbWVudHR5cGVzY29uZmlndXJhdGlvbnM9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvcGFweXJ1cy9pbmZyYS9lbGVtZW50dHlwZXNjb25maWd1cmF0aW9ucy8xLjAiDQorICAgIHhtbG5zOnN0ZXJlb3R5cGVhcHBsaWNhdGlvbm1hdGNoZXJjb25maWd1cmF0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3BheXJ1cy9lbGVtZW50dHlwZXNjb25maWd1cmF0aW9ucy91bWwvc3RlcmVvdHlwZW1hdGNoZXJjb25maWd1cmF0aW9uIg0KKyAgICB4bWk6aWQ9Il9RdDljNE12NEVlUzVCcEUzaE9ibHl3Ig0KKyAgICBuYW1lPSJTeXNNTCINCisgICAgaWRlbnRpZmllcj0ib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LmVsZW1lbnRUeXBlcyINCisgICAgbWV0YW1vZGVsTnNVUkk9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvdW1sMi81LjAuMC9VTUwiPg0KKyAgPGVsZW1lbnRUeXBlQ29uZmlndXJhdGlvbnMNCisgICAgICB4c2k6dHlwZT0iZWxlbWVudHR5cGVzY29uZmlndXJhdGlvbnM6U3BlY2lhbGl6YXRpb25UeXBlQ29uZmlndXJhdGlvbiINCisgICAgICB4bWk6aWQ9Il9RdDljNGN2NEVlUzVCcEUzaE9ibHl3Ig0KKyAgICAgIG5hbWU9IlZhbHVlVHlwZSAoMzA4MCkiDQorICAgICAgaWRlbnRpZmllcj0ib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LlZhbHVlVHlwZV8zMDgwIg0KKyAgICAgIGhpbnQ9IjMwODAiPg0KKyAgICA8aWNvbkVudHJ5DQorICAgICAgICB4bWk6aWQ9Il9RdDljNHN2NEVlUzVCcEUzaE9ibHl3Ig0KKyAgICAgICAgaWNvblBhdGg9Ii9pY29ucy9mdWxsL29iajE2L0RhdGFUeXBlLmdpZiINCisgICAgICAgIGJ1bmRsZUlkPSJvcmcuZWNsaXBzZS51bWwyLnVtbC5lZGl0Ii8+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LlZhbHVlVHlwZTwvc3BlY2lhbGl6ZWRUeXBlc0lEPg0KKyAgICA8c3BlY2lhbGl6ZWRUeXBlc0lEPm9yZy5lY2xpcHNlLnBhcHlydXMudW1sLmRpYWdyYW0uY29tcG9zaXRlLkRhdGFUeXBlXzMwODA8L3NwZWNpYWxpemVkVHlwZXNJRD4NCisgIDwvZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucz4NCisgIDxlbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zDQorICAgICAgeHNpOnR5cGU9ImVsZW1lbnR0eXBlc2NvbmZpZ3VyYXRpb25zOlNwZWNpYWxpemF0aW9uVHlwZUNvbmZpZ3VyYXRpb24iDQorICAgICAgeG1pOmlkPSJfUXQ5YzQ4djRFZVM1QnBFM2hPYmx5dyINCisgICAgICBuYW1lPSJWYWx1ZVR5cGUgKDIwNjgpIg0KKyAgICAgIGlkZW50aWZpZXI9Im9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5WYWx1ZVR5cGVfMjA2OCINCisgICAgICBoaW50PSIyMDY4Ij4NCisgICAgPGljb25FbnRyeQ0KKyAgICAgICAgeG1pOmlkPSJfUXQ5YzVNdjRFZVM1QnBFM2hPYmx5dyINCisgICAgICAgIGljb25QYXRoPSIvaWNvbnMvZnVsbC9vYmoxNi9EYXRhVHlwZS5naWYiDQorICAgICAgICBidW5kbGVJZD0ib3JnLmVjbGlwc2UudW1sMi51bWwuZWRpdCIvPg0KKyAgICA8c3BlY2lhbGl6ZWRUeXBlc0lEPm9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5WYWx1ZVR5cGU8L3NwZWNpYWxpemVkVHlwZXNJRD4NCisgICAgPHNwZWNpYWxpemVkVHlwZXNJRD5vcmcuZWNsaXBzZS5wYXB5cnVzLnVtbC5kaWFncmFtLmNvbXBvc2l0ZS5EYXRhVHlwZV8yMDY4PC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICA8L2VsZW1lbnRUeXBlQ29uZmlndXJhdGlvbnM+DQorICA8ZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucw0KKyAgICAgIHhzaTp0eXBlPSJlbGVtZW50dHlwZXNjb25maWd1cmF0aW9uczpTcGVjaWFsaXphdGlvblR5cGVDb25maWd1cmF0aW9uIg0KKyAgICAgIHhtaTppZD0iX1F0OWM1Y3Y0RWVTNUJwRTNoT2JseXciDQorICAgICAgbmFtZT0iRGlzdHJpYnV0ZWRQcm9wZXJ0eSAoMzA3MCkiDQorICAgICAgaWRlbnRpZmllcj0ib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LkRpc3RyaWJ1dGVkUHJvcGVydHlfMzA3MCINCisgICAgICBoaW50PSIzMDcwIj4NCisgICAgPGljb25FbnRyeQ0KKyAgICAgICAgeG1pOmlkPSJfUXQ5YzVzdjRFZVM1QnBFM2hPYmx5dyINCisgICAgICAgIGljb25QYXRoPSIvaWNvbnMvZnVsbC9vYmoxNi9Qcm9wZXJ0eS5naWYiDQorICAgICAgICBidW5kbGVJZD0ib3JnLmVjbGlwc2UudW1sMi51bWwuZWRpdCIvPg0KKyAgICA8c3BlY2lhbGl6ZWRUeXBlc0lEPm9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5EaXN0cmlidXRlZFByb3BlcnR5PC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy51bWwuZGlhZ3JhbS5jb21wb3NpdGUuUHJvcGVydHlfMzA3MDwvc3BlY2lhbGl6ZWRUeXBlc0lEPg0KKyAgPC9lbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zPg0KKyAgPGVsZW1lbnRUeXBlQ29uZmlndXJhdGlvbnMNCisgICAgICB4c2k6dHlwZT0iZWxlbWVudHR5cGVzY29uZmlndXJhdGlvbnM6U3BlY2lhbGl6YXRpb25UeXBlQ29uZmlndXJhdGlvbiINCisgICAgICB4bWk6aWQ9Il9RdDljNTh2NEVlUzVCcEUzaE9ibHl3Ig0KKyAgICAgIG5hbWU9IkRpc3RyaWJ1dGVkUHJvcGVydHkgKDMxMDEpIg0KKyAgICAgIGlkZW50aWZpZXI9Im9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5EaXN0cmlidXRlZFByb3BlcnR5XzMxMDEiDQorICAgICAgaGludD0iMzEwMSI+DQorICAgIDxpY29uRW50cnkNCisgICAgICAgIHhtaTppZD0iX1F0OWM2TXY0RWVTNUJwRTNoT2JseXciDQorICAgICAgICBpY29uUGF0aD0iL2ljb25zL2Z1bGwvb2JqMTYvUHJvcGVydHkuZ2lmIg0KKyAgICAgICAgYnVuZGxlSWQ9Im9yZy5lY2xpcHNlLnVtbDIudW1sLmVkaXQiLz4NCisgICAgPHNwZWNpYWxpemVkVHlwZXNJRD5vcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuRGlzdHJpYnV0ZWRQcm9wZXJ0eTwvc3BlY2lhbGl6ZWRUeXBlc0lEPg0KKyAgICA8c3BlY2lhbGl6ZWRUeXBlc0lEPm9yZy5lY2xpcHNlLnBhcHlydXMudW1sLmRpYWdyYW0uY29tcG9zaXRlLlByb3BlcnR5XzMxMDE8L3NwZWNpYWxpemVkVHlwZXNJRD4NCisgIDwvZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucz4NCisgIDxlbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zDQorICAgICAgeHNpOnR5cGU9ImVsZW1lbnR0eXBlc2NvbmZpZ3VyYXRpb25zOlNwZWNpYWxpemF0aW9uVHlwZUNvbmZpZ3VyYXRpb24iDQorICAgICAgeG1pOmlkPSJfUXQ5YzZjdjRFZVM1QnBFM2hPYmx5dyINCisgICAgICBuYW1lPSJDb25uZWN0b3JQcm9wZXJ0eSAoMzA3MCkiDQorICAgICAgaWRlbnRpZmllcj0ib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LkNvbm5lY3RvclByb3BlcnR5XzMwNzAiDQorICAgICAgaGludD0iMzA3MCI+DQorICAgIDxpY29uRW50cnkNCisgICAgICAgIHhtaTppZD0iX1F0OWM2c3Y0RWVTNUJwRTNoT2JseXciDQorICAgICAgICBpY29uUGF0aD0iL2ljb25zL2Z1bGwvb2JqMTYvUHJvcGVydHkuZ2lmIg0KKyAgICAgICAgYnVuZGxlSWQ9Im9yZy5lY2xpcHNlLnVtbDIudW1sLmVkaXQiLz4NCisgICAgPHNwZWNpYWxpemVkVHlwZXNJRD5vcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuQ29ubmVjdG9yUHJvcGVydHk8L3NwZWNpYWxpemVkVHlwZXNJRD4NCisgICAgPHNwZWNpYWxpemVkVHlwZXNJRD5vcmcuZWNsaXBzZS5wYXB5cnVzLnVtbC5kaWFncmFtLmNvbXBvc2l0ZS5Qcm9wZXJ0eV8zMDcwPC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICA8L2VsZW1lbnRUeXBlQ29uZmlndXJhdGlvbnM+DQorICA8ZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucw0KKyAgICAgIHhzaTp0eXBlPSJlbGVtZW50dHlwZXNjb25maWd1cmF0aW9uczpTcGVjaWFsaXphdGlvblR5cGVDb25maWd1cmF0aW9uIg0KKyAgICAgIHhtaTppZD0iX1F0OWM2OHY0RWVTNUJwRTNoT2JseXciDQorICAgICAgbmFtZT0iQ29ubmVjdG9yUHJvcGVydHkgKDMxMDEpIg0KKyAgICAgIGlkZW50aWZpZXI9Im9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5Db25uZWN0b3JQcm9wZXJ0eV8zMTAxIg0KKyAgICAgIGhpbnQ9IjMxMDEiPg0KKyAgICA8aWNvbkVudHJ5DQorICAgICAgICB4bWk6aWQ9Il9RdDljN012NEVlUzVCcEUzaE9ibHl3Ig0KKyAgICAgICAgaWNvblBhdGg9Ii9pY29ucy9mdWxsL29iajE2L1Byb3BlcnR5LmdpZiINCisgICAgICAgIGJ1bmRsZUlkPSJvcmcuZWNsaXBzZS51bWwyLnVtbC5lZGl0Ii8+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LkNvbm5lY3RvclByb3BlcnR5PC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy51bWwuZGlhZ3JhbS5jb21wb3NpdGUuUHJvcGVydHlfMzEwMTwvc3BlY2lhbGl6ZWRUeXBlc0lEPg0KKyAgPC9lbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zPg0KKyAgPGVsZW1lbnRUeXBlQ29uZmlndXJhdGlvbnMNCisgICAgICB4c2k6dHlwZT0iZWxlbWVudHR5cGVzY29uZmlndXJhdGlvbnM6U3BlY2lhbGl6YXRpb25UeXBlQ29uZmlndXJhdGlvbiINCisgICAgICB4bWk6aWQ9Il9RdDljN2N2NEVlUzVCcEUzaE9ibHl3Ig0KKyAgICAgIG5hbWU9IlBhcnRpY2lwYW50UHJvcGVydHkgKDMwNzApIg0KKyAgICAgIGlkZW50aWZpZXI9Im9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5QYXJ0aWNpcGFudFByb3BlcnR5XzMwNzAiDQorICAgICAgaGludD0iMzA3MCI+DQorICAgIDxpY29uRW50cnkNCisgICAgICAgIHhtaTppZD0iX1F0OWM3c3Y0RWVTNUJwRTNoT2JseXciDQorICAgICAgICBpY29uUGF0aD0iL2ljb25zL2Z1bGwvb2JqMTYvUHJvcGVydHkuZ2lmIg0KKyAgICAgICAgYnVuZGxlSWQ9Im9yZy5lY2xpcHNlLnVtbDIudW1sLmVkaXQiLz4NCisgICAgPHNwZWNpYWxpemVkVHlwZXNJRD5vcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuUGFydGljaXBhbnRQcm9wZXJ0eTwvc3BlY2lhbGl6ZWRUeXBlc0lEPg0KKyAgICA8c3BlY2lhbGl6ZWRUeXBlc0lEPm9yZy5lY2xpcHNlLnBhcHlydXMudW1sLmRpYWdyYW0uY29tcG9zaXRlLlByb3BlcnR5XzMwNzA8L3NwZWNpYWxpemVkVHlwZXNJRD4NCisgIDwvZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucz4NCisgIDxlbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zDQorICAgICAgeHNpOnR5cGU9ImVsZW1lbnR0eXBlc2NvbmZpZ3VyYXRpb25zOlNwZWNpYWxpemF0aW9uVHlwZUNvbmZpZ3VyYXRpb24iDQorICAgICAgeG1pOmlkPSJfUXQ5Yzc4djRFZVM1QnBFM2hPYmx5dyINCisgICAgICBuYW1lPSJQYXJ0aWNpcGFudFByb3BlcnR5ICgzMTAxKSINCisgICAgICBpZGVudGlmaWVyPSJvcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuUGFydGljaXBhbnRQcm9wZXJ0eV8zMTAxIg0KKyAgICAgIGhpbnQ9IjMxMDEiPg0KKyAgICA8aWNvbkVudHJ5DQorICAgICAgICB4bWk6aWQ9Il9RdDljOE12NEVlUzVCcEUzaE9ibHl3Ig0KKyAgICAgICAgaWNvblBhdGg9Ii9pY29ucy9mdWxsL29iajE2L1Byb3BlcnR5LmdpZiINCisgICAgICAgIGJ1bmRsZUlkPSJvcmcuZWNsaXBzZS51bWwyLnVtbC5lZGl0Ii8+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LlBhcnRpY2lwYW50UHJvcGVydHk8L3NwZWNpYWxpemVkVHlwZXNJRD4NCisgICAgPHNwZWNpYWxpemVkVHlwZXNJRD5vcmcuZWNsaXBzZS5wYXB5cnVzLnVtbC5kaWFncmFtLmNvbXBvc2l0ZS5Qcm9wZXJ0eV8zMTAxPC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICA8L2VsZW1lbnRUeXBlQ29uZmlndXJhdGlvbnM+DQorICA8ZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucw0KKyAgICAgIHhzaTp0eXBlPSJlbGVtZW50dHlwZXNjb25maWd1cmF0aW9uczpTcGVjaWFsaXphdGlvblR5cGVDb25maWd1cmF0aW9uIg0KKyAgICAgIHhtaTppZD0iX1F0OWM4Y3Y0RWVTNUJwRTNoT2JseXciDQorICAgICAgbmFtZT0iQmluZGluZ0Nvbm5lY3RvciINCisgICAgICBpZGVudGlmaWVyPSJvcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuQmluZGluZ0Nvbm5lY3Rvcl80MDEzIg0KKyAgICAgIGhpbnQ9IjQwMTMiPg0KKyAgICA8aWNvbkVudHJ5DQorICAgICAgICB4bWk6aWQ9Il9RdDljOHN2NEVlUzVCcEUzaE9ibHl3Ig0KKyAgICAgICAgaWNvblBhdGg9Ii9pY29ucy9mdWxsL29iajE2L0Nvbm5lY3Rvci5naWYiDQorICAgICAgICBidW5kbGVJZD0ib3JnLmVjbGlwc2UudW1sMi51bWwuZWRpdCIvPg0KKyAgICA8c3BlY2lhbGl6ZWRUeXBlc0lEPm9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5CaW5kaW5nQ29ubmVjdG9yPC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy51bWwuZGlhZ3JhbS5jb21wb3NpdGUuQ29ubmVjdG9yXzQwMTM8L3NwZWNpYWxpemVkVHlwZXNJRD4NCisgIDwvZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucz4NCisgIDxlbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zDQorICAgICAgeHNpOnR5cGU9ImVsZW1lbnR0eXBlc2NvbmZpZ3VyYXRpb25zOlNwZWNpYWxpemF0aW9uVHlwZUNvbmZpZ3VyYXRpb24iDQorICAgICAgeG1pOmlkPSJfUXQ5Yzg4djRFZVM1QnBFM2hPYmx5dyINCisgICAgICBuYW1lPSJCbG9jayAoMzA4NSkiDQorICAgICAgaWRlbnRpZmllcj0ib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LkJsb2NrXzMwODUiDQorICAgICAgaGludD0iMzA4NSI+DQorICAgIDxpY29uRW50cnkNCisgICAgICAgIHhtaTppZD0iX1F0OWM5TXY0RWVTNUJwRTNoT2JseXciDQorICAgICAgICBpY29uUGF0aD0iL2ljb25zL2Z1bGwvb2JqMTYvQ2xhc3MuZ2lmIg0KKyAgICAgICAgYnVuZGxlSWQ9Im9yZy5lY2xpcHNlLnVtbDIudW1sLmVkaXQiLz4NCisgICAgPHNwZWNpYWxpemVkVHlwZXNJRD5vcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuQmxvY2s8L3NwZWNpYWxpemVkVHlwZXNJRD4NCisgICAgPHNwZWNpYWxpemVkVHlwZXNJRD5vcmcuZWNsaXBzZS5wYXB5cnVzLnVtbC5kaWFncmFtLmNvbXBvc2l0ZS5DbGFzc18zMDg1PC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICA8L2VsZW1lbnRUeXBlQ29uZmlndXJhdGlvbnM+DQorICA8ZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucw0KKyAgICAgIHhzaTp0eXBlPSJlbGVtZW50dHlwZXNjb25maWd1cmF0aW9uczpTcGVjaWFsaXphdGlvblR5cGVDb25maWd1cmF0aW9uIg0KKyAgICAgIHhtaTppZD0iX1F0OWM5Y3Y0RWVTNUJwRTNoT2JseXciDQorICAgICAgbmFtZT0iQmxvY2sgKDIwNzMpIg0KKyAgICAgIGlkZW50aWZpZXI9Im9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5CbG9ja18yMDczIg0KKyAgICAgIGhpbnQ9IjIwNzMiPg0KKyAgICA8aWNvbkVudHJ5DQorICAgICAgICB4bWk6aWQ9Il9RdDljOXN2NEVlUzVCcEUzaE9ibHl3Ig0KKyAgICAgICAgaWNvblBhdGg9Ii9pY29ucy9mdWxsL29iajE2L0NsYXNzLmdpZiINCisgICAgICAgIGJ1bmRsZUlkPSJvcmcuZWNsaXBzZS51bWwyLnVtbC5lZGl0Ii8+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LkJsb2NrPC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy51bWwuZGlhZ3JhbS5jb21wb3NpdGUuQ2xhc3NfMjA3Mzwvc3BlY2lhbGl6ZWRUeXBlc0lEPg0KKyAgPC9lbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zPg0KKyAgPGVsZW1lbnRUeXBlQ29uZmlndXJhdGlvbnMNCisgICAgICB4c2k6dHlwZT0iZWxlbWVudHR5cGVzY29uZmlndXJhdGlvbnM6U3BlY2lhbGl6YXRpb25UeXBlQ29uZmlndXJhdGlvbiINCisgICAgICB4bWk6aWQ9Il9RdDljOTh2NEVlUzVCcEUzaE9ibHl3Ig0KKyAgICAgIG5hbWU9IkVuZFBhdGhNdWx0aXBsaWNpdHkgKDMwNzApIg0KKyAgICAgIGlkZW50aWZpZXI9Im9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5FbmRQYXRoTXVsdGlwbGljaXR5XzMwNzAiDQorICAgICAgaGludD0iMzA3MCI+DQorICAgIDxpY29uRW50cnkNCisgICAgICAgIHhtaTppZD0iX1F0OWMtTXY0RWVTNUJwRTNoT2JseXciDQorICAgICAgICBpY29uUGF0aD0iL2ljb25zL2Z1bGwvb2JqMTYvUHJvcGVydHkuZ2lmIg0KKyAgICAgICAgYnVuZGxlSWQ9Im9yZy5lY2xpcHNlLnVtbDIudW1sLmVkaXQiLz4NCisgICAgPHNwZWNpYWxpemVkVHlwZXNJRD5vcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuRW5kUGF0aE11bHRpcGxpY2l0eTwvc3BlY2lhbGl6ZWRUeXBlc0lEPg0KKyAgICA8c3BlY2lhbGl6ZWRUeXBlc0lEPm9yZy5lY2xpcHNlLnBhcHlydXMudW1sLmRpYWdyYW0uY29tcG9zaXRlLlByb3BlcnR5XzMwNzA8L3NwZWNpYWxpemVkVHlwZXNJRD4NCisgIDwvZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucz4NCisgIDxlbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zDQorICAgICAgeHNpOnR5cGU9ImVsZW1lbnR0eXBlc2NvbmZpZ3VyYXRpb25zOlNwZWNpYWxpemF0aW9uVHlwZUNvbmZpZ3VyYXRpb24iDQorICAgICAgeG1pOmlkPSJfUXQ5Yy1jdjRFZVM1QnBFM2hPYmx5dyINCisgICAgICBuYW1lPSJFbmRQYXRoTXVsdGlwbGljaXR5ICgzMTAxKSINCisgICAgICBpZGVudGlmaWVyPSJvcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuRW5kUGF0aE11bHRpcGxpY2l0eV8zMTAxIg0KKyAgICAgIGhpbnQ9IjMxMDEiPg0KKyAgICA8aWNvbkVudHJ5DQorICAgICAgICB4bWk6aWQ9Il9RdDljLXN2NEVlUzVCcEUzaE9ibHl3Ig0KKyAgICAgICAgaWNvblBhdGg9Ii9pY29ucy9mdWxsL29iajE2L1Byb3BlcnR5LmdpZiINCisgICAgICAgIGJ1bmRsZUlkPSJvcmcuZWNsaXBzZS51bWwyLnVtbC5lZGl0Ii8+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LkVuZFBhdGhNdWx0aXBsaWNpdHk8L3NwZWNpYWxpemVkVHlwZXNJRD4NCisgICAgPHNwZWNpYWxpemVkVHlwZXNJRD5vcmcuZWNsaXBzZS5wYXB5cnVzLnVtbC5kaWFncmFtLmNvbXBvc2l0ZS5Qcm9wZXJ0eV8zMTAxPC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICA8L2VsZW1lbnRUeXBlQ29uZmlndXJhdGlvbnM+DQorICA8ZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucw0KKyAgICAgIHhzaTp0eXBlPSJlbGVtZW50dHlwZXNjb25maWd1cmF0aW9uczpTcGVjaWFsaXphdGlvblR5cGVDb25maWd1cmF0aW9uIg0KKyAgICAgIHhtaTppZD0iX1F0OWMtOHY0RWVTNUJwRTNoT2JseXciDQorICAgICAgbmFtZT0iQm91bmRSZWZlcmVuY2UgKDMwNzApIg0KKyAgICAgIGlkZW50aWZpZXI9Im9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5Cb3VuZFJlZmVyZW5jZV8zMDcwIg0KKyAgICAgIGhpbnQ9IjMwNzAiPg0KKyAgICA8aWNvbkVudHJ5DQorICAgICAgICB4bWk6aWQ9Il9RdDljX012NEVlUzVCcEUzaE9ibHl3Ig0KKyAgICAgICAgaWNvblBhdGg9Ii9pY29ucy9mdWxsL29iajE2L1Byb3BlcnR5LmdpZiINCisgICAgICAgIGJ1bmRsZUlkPSJvcmcuZWNsaXBzZS51bWwyLnVtbC5lZGl0Ii8+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LkJvdW5kUmVmZXJlbmNlPC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy51bWwuZGlhZ3JhbS5jb21wb3NpdGUuUHJvcGVydHlfMzA3MDwvc3BlY2lhbGl6ZWRUeXBlc0lEPg0KKyAgPC9lbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zPg0KKyAgPGVsZW1lbnRUeXBlQ29uZmlndXJhdGlvbnMNCisgICAgICB4c2k6dHlwZT0iZWxlbWVudHR5cGVzY29uZmlndXJhdGlvbnM6U3BlY2lhbGl6YXRpb25UeXBlQ29uZmlndXJhdGlvbiINCisgICAgICB4bWk6aWQ9Il9RdDljX2N2NEVlUzVCcEUzaE9ibHl3Ig0KKyAgICAgIG5hbWU9IkJvdW5kUmVmZXJlbmNlICgzMTAxKSINCisgICAgICBpZGVudGlmaWVyPSJvcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuQm91bmRSZWZlcmVuY2VfMzEwMSINCisgICAgICBoaW50PSIzMTAxIj4NCisgICAgPGljb25FbnRyeQ0KKyAgICAgICAgeG1pOmlkPSJfUXQ5Y19zdjRFZVM1QnBFM2hPYmx5dyINCisgICAgICAgIGljb25QYXRoPSIvaWNvbnMvZnVsbC9vYmoxNi9Qcm9wZXJ0eS5naWYiDQorICAgICAgICBidW5kbGVJZD0ib3JnLmVjbGlwc2UudW1sMi51bWwuZWRpdCIvPg0KKyAgICA8c3BlY2lhbGl6ZWRUeXBlc0lEPm9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5Cb3VuZFJlZmVyZW5jZTwvc3BlY2lhbGl6ZWRUeXBlc0lEPg0KKyAgICA8c3BlY2lhbGl6ZWRUeXBlc0lEPm9yZy5lY2xpcHNlLnBhcHlydXMudW1sLmRpYWdyYW0uY29tcG9zaXRlLlByb3BlcnR5XzMxMDE8L3NwZWNpYWxpemVkVHlwZXNJRD4NCisgIDwvZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucz4NCisgIDxlbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zDQorICAgICAgeHNpOnR5cGU9ImVsZW1lbnR0eXBlc2NvbmZpZ3VyYXRpb25zOlNwZWNpYWxpemF0aW9uVHlwZUNvbmZpZ3VyYXRpb24iDQorICAgICAgeG1pOmlkPSJfUXQ5Y184djRFZVM1QnBFM2hPYmx5dyINCisgICAgICBuYW1lPSJBZGp1bmN0UHJvcGVydHkgKDMwNzApIg0KKyAgICAgIGlkZW50aWZpZXI9Im9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5BZGp1bmN0UHJvcGVydHlfMzA3MCINCisgICAgICBoaW50PSIzMDcwIj4NCisgICAgPGljb25FbnRyeQ0KKyAgICAgICAgeG1pOmlkPSJfUXQ5ZEFNdjRFZVM1QnBFM2hPYmx5dyINCisgICAgICAgIGljb25QYXRoPSIvaWNvbnMvZnVsbC9vYmoxNi9Qcm9wZXJ0eS5naWYiDQorICAgICAgICBidW5kbGVJZD0ib3JnLmVjbGlwc2UudW1sMi51bWwuZWRpdCIvPg0KKyAgICA8c3BlY2lhbGl6ZWRUeXBlc0lEPm9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5BZGp1bmN0UHJvcGVydHk8L3NwZWNpYWxpemVkVHlwZXNJRD4NCisgICAgPHNwZWNpYWxpemVkVHlwZXNJRD5vcmcuZWNsaXBzZS5wYXB5cnVzLnVtbC5kaWFncmFtLmNvbXBvc2l0ZS5Qcm9wZXJ0eV8zMDcwPC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICA8L2VsZW1lbnRUeXBlQ29uZmlndXJhdGlvbnM+DQorICA8ZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucw0KKyAgICAgIHhzaTp0eXBlPSJlbGVtZW50dHlwZXNjb25maWd1cmF0aW9uczpTcGVjaWFsaXphdGlvblR5cGVDb25maWd1cmF0aW9uIg0KKyAgICAgIHhtaTppZD0iX1F0OWRBY3Y0RWVTNUJwRTNoT2JseXciDQorICAgICAgbmFtZT0iQWRqdW5jdFByb3BlcnR5ICgzMTAxKSINCisgICAgICBpZGVudGlmaWVyPSJvcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuQWRqdW5jdFByb3BlcnR5XzMxMDEiDQorICAgICAgaGludD0iMzEwMSI+DQorICAgIDxpY29uRW50cnkNCisgICAgICAgIHhtaTppZD0iX1F0OWRBc3Y0RWVTNUJwRTNoT2JseXciDQorICAgICAgICBpY29uUGF0aD0iL2ljb25zL2Z1bGwvb2JqMTYvUHJvcGVydHkuZ2lmIg0KKyAgICAgICAgYnVuZGxlSWQ9Im9yZy5lY2xpcHNlLnVtbDIudW1sLmVkaXQiLz4NCisgICAgPHNwZWNpYWxpemVkVHlwZXNJRD5vcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuQWRqdW5jdFByb3BlcnR5PC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy51bWwuZGlhZ3JhbS5jb21wb3NpdGUuUHJvcGVydHlfMzEwMTwvc3BlY2lhbGl6ZWRUeXBlc0lEPg0KKyAgPC9lbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zPg0KKyAgPGVsZW1lbnRUeXBlQ29uZmlndXJhdGlvbnMNCisgICAgICB4c2k6dHlwZT0iZWxlbWVudHR5cGVzY29uZmlndXJhdGlvbnM6U3BlY2lhbGl6YXRpb25UeXBlQ29uZmlndXJhdGlvbiINCisgICAgICB4bWk6aWQ9Il9RdDlkQTh2NEVlUzVCcEUzaE9ibHl3Ig0KKyAgICAgIG5hbWU9IkNsYXNzaWZpZXJCZWhhdmlvclByb3BlcnR5ICgzMDcwKSINCisgICAgICBpZGVudGlmaWVyPSJvcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuQ2xhc3NpZmllckJlaGF2aW9yUHJvcGVydHlfMzA3MCINCisgICAgICBoaW50PSIzMDcwIj4NCisgICAgPGljb25FbnRyeQ0KKyAgICAgICAgeG1pOmlkPSJfUXQ5ZEJNdjRFZVM1QnBFM2hPYmx5dyINCisgICAgICAgIGljb25QYXRoPSIvaWNvbnMvZnVsbC9vYmoxNi9Qcm9wZXJ0eS5naWYiDQorICAgICAgICBidW5kbGVJZD0ib3JnLmVjbGlwc2UudW1sMi51bWwuZWRpdCIvPg0KKyAgICA8c3BlY2lhbGl6ZWRUeXBlc0lEPm9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5DbGFzc2lmaWVyQmVoYXZpb3JQcm9wZXJ0eTwvc3BlY2lhbGl6ZWRUeXBlc0lEPg0KKyAgICA8c3BlY2lhbGl6ZWRUeXBlc0lEPm9yZy5lY2xpcHNlLnBhcHlydXMudW1sLmRpYWdyYW0uY29tcG9zaXRlLlByb3BlcnR5XzMwNzA8L3NwZWNpYWxpemVkVHlwZXNJRD4NCisgIDwvZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucz4NCisgIDxlbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zDQorICAgICAgeHNpOnR5cGU9ImVsZW1lbnR0eXBlc2NvbmZpZ3VyYXRpb25zOlNwZWNpYWxpemF0aW9uVHlwZUNvbmZpZ3VyYXRpb24iDQorICAgICAgeG1pOmlkPSJfUXQ5ZEJjdjRFZVM1QnBFM2hPYmx5dyINCisgICAgICBuYW1lPSJDbGFzc2lmaWVyQmVoYXZpb3JQcm9wZXJ0eSAoMzEwMSkiDQorICAgICAgaWRlbnRpZmllcj0ib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LkNsYXNzaWZpZXJCZWhhdmlvclByb3BlcnR5XzMxMDEiDQorICAgICAgaGludD0iMzEwMSI+DQorICAgIDxpY29uRW50cnkNCisgICAgICAgIHhtaTppZD0iX1F0OWRCc3Y0RWVTNUJwRTNoT2JseXciDQorICAgICAgICBpY29uUGF0aD0iL2ljb25zL2Z1bGwvb2JqMTYvUHJvcGVydHkuZ2lmIg0KKyAgICAgICAgYnVuZGxlSWQ9Im9yZy5lY2xpcHNlLnVtbDIudW1sLmVkaXQiLz4NCisgICAgPHNwZWNpYWxpemVkVHlwZXNJRD5vcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuQ2xhc3NpZmllckJlaGF2aW9yUHJvcGVydHk8L3NwZWNpYWxpemVkVHlwZXNJRD4NCisgICAgPHNwZWNpYWxpemVkVHlwZXNJRD5vcmcuZWNsaXBzZS5wYXB5cnVzLnVtbC5kaWFncmFtLmNvbXBvc2l0ZS5Qcm9wZXJ0eV8zMTAxPC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICA8L2VsZW1lbnRUeXBlQ29uZmlndXJhdGlvbnM+DQorICA8ZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucw0KKyAgICAgIHhzaTp0eXBlPSJlbGVtZW50dHlwZXNjb25maWd1cmF0aW9uczpTcGVjaWFsaXphdGlvblR5cGVDb25maWd1cmF0aW9uIg0KKyAgICAgIHhtaTppZD0iX1F0OWRCOHY0RWVTNUJwRTNoT2JseXciDQorICAgICAgbmFtZT0iSXRlbUZsb3ciDQorICAgICAgaWRlbnRpZmllcj0ib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0Lkl0ZW1GbG93XzQwMjEiDQorICAgICAgaGludD0iNDAyMSI+DQorICAgIDxpY29uRW50cnkNCisgICAgICAgIHhtaTppZD0iX1F0OWRDTXY0RWVTNUJwRTNoT2JseXciDQorICAgICAgICBpY29uUGF0aD0iL2ljb25zL2Z1bGwvb2JqMTYvSW5mb3JtYXRpb25GbG93LmdpZiINCisgICAgICAgIGJ1bmRsZUlkPSJvcmcuZWNsaXBzZS51bWwyLnVtbC5lZGl0Ii8+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0Lkl0ZW1GbG93PC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy51bWwuZGlhZ3JhbS5jb21wb3NpdGUuSW5mb3JtYXRpb25GbG93XzQwMjE8L3NwZWNpYWxpemVkVHlwZXNJRD4NCisgIDwvZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucz4NCisgIDxlbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zDQorICAgICAgeHNpOnR5cGU9ImVsZW1lbnR0eXBlc2NvbmZpZ3VyYXRpb25zOlNwZWNpYWxpemF0aW9uVHlwZUNvbmZpZ3VyYXRpb24iDQorICAgICAgeG1pOmlkPSJfUXQ5ZENjdjRFZVM1QnBFM2hPYmx5dyINCisgICAgICBuYW1lPSJGbG93UHJvcGVydHkgKDMwNzApIg0KKyAgICAgIGlkZW50aWZpZXI9Im9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5GbG93UHJvcGVydHlfMzA3MCINCisgICAgICBoaW50PSIzMDcwIj4NCisgICAgPGljb25FbnRyeQ0KKyAgICAgICAgeG1pOmlkPSJfUXQ5ZENzdjRFZVM1QnBFM2hPYmx5dyINCisgICAgICAgIGljb25QYXRoPSIvaWNvbnMvZnVsbC9vYmoxNi9Qcm9wZXJ0eS5naWYiDQorICAgICAgICBidW5kbGVJZD0ib3JnLmVjbGlwc2UudW1sMi51bWwuZWRpdCIvPg0KKyAgICA8c3BlY2lhbGl6ZWRUeXBlc0lEPm9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5GbG93UHJvcGVydHk8L3NwZWNpYWxpemVkVHlwZXNJRD4NCisgICAgPHNwZWNpYWxpemVkVHlwZXNJRD5vcmcuZWNsaXBzZS5wYXB5cnVzLnVtbC5kaWFncmFtLmNvbXBvc2l0ZS5Qcm9wZXJ0eV8zMDcwPC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICA8L2VsZW1lbnRUeXBlQ29uZmlndXJhdGlvbnM+DQorICA8ZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucw0KKyAgICAgIHhzaTp0eXBlPSJlbGVtZW50dHlwZXNjb25maWd1cmF0aW9uczpTcGVjaWFsaXphdGlvblR5cGVDb25maWd1cmF0aW9uIg0KKyAgICAgIHhtaTppZD0iX1F0OWRDOHY0RWVTNUJwRTNoT2JseXciDQorICAgICAgbmFtZT0iRmxvd1Byb3BlcnR5ICgzMTAxKSINCisgICAgICBpZGVudGlmaWVyPSJvcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuRmxvd1Byb3BlcnR5XzMxMDEiDQorICAgICAgaGludD0iMzEwMSI+DQorICAgIDxpY29uRW50cnkNCisgICAgICAgIHhtaTppZD0iX1F0OWRETXY0RWVTNUJwRTNoT2JseXciDQorICAgICAgICBpY29uUGF0aD0iL2ljb25zL2Z1bGwvb2JqMTYvUHJvcGVydHkuZ2lmIg0KKyAgICAgICAgYnVuZGxlSWQ9Im9yZy5lY2xpcHNlLnVtbDIudW1sLmVkaXQiLz4NCisgICAgPHNwZWNpYWxpemVkVHlwZXNJRD5vcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuRmxvd1Byb3BlcnR5PC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy51bWwuZGlhZ3JhbS5jb21wb3NpdGUuUHJvcGVydHlfMzEwMTwvc3BlY2lhbGl6ZWRUeXBlc0lEPg0KKyAgPC9lbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zPg0KKyAgPGVsZW1lbnRUeXBlQ29uZmlndXJhdGlvbnMNCisgICAgICB4c2k6dHlwZT0iZWxlbWVudHR5cGVzY29uZmlndXJhdGlvbnM6U3BlY2lhbGl6YXRpb25UeXBlQ29uZmlndXJhdGlvbiINCisgICAgICB4bWk6aWQ9Il9RdDlkRGN2NEVlUzVCcEUzaE9ibHl3Ig0KKyAgICAgIG5hbWU9IkZ1bGxQb3J0Ig0KKyAgICAgIGlkZW50aWZpZXI9Im9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5GdWxsUG9ydF8zMDY5Ig0KKyAgICAgIGhpbnQ9IjMwNjkiPg0KKyAgICA8aWNvbkVudHJ5DQorICAgICAgICB4bWk6aWQ9Il9RdDlkRHN2NEVlUzVCcEUzaE9ibHl3Ig0KKyAgICAgICAgaWNvblBhdGg9Ii9pY29ucy9mdWxsL29iajE2L1BvcnQuZ2lmIg0KKyAgICAgICAgYnVuZGxlSWQ9Im9yZy5lY2xpcHNlLnVtbDIudW1sLmVkaXQiLz4NCisgICAgPHNwZWNpYWxpemVkVHlwZXNJRD5vcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuRnVsbFBvcnQ8L3NwZWNpYWxpemVkVHlwZXNJRD4NCisgICAgPHNwZWNpYWxpemVkVHlwZXNJRD5vcmcuZWNsaXBzZS5wYXB5cnVzLnVtbC5kaWFncmFtLmNvbXBvc2l0ZS5Qb3J0XzMwNjk8L3NwZWNpYWxpemVkVHlwZXNJRD4NCisgIDwvZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucz4NCisgIDxlbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zDQorICAgICAgeHNpOnR5cGU9ImVsZW1lbnR0eXBlc2NvbmZpZ3VyYXRpb25zOlNwZWNpYWxpemF0aW9uVHlwZUNvbmZpZ3VyYXRpb24iDQorICAgICAgeG1pOmlkPSJfUXQ5ZEQ4djRFZVM1QnBFM2hPYmx5dyINCisgICAgICBuYW1lPSJJbnRlcmZhY2VCbG9jayAoMzA4NSkiDQorICAgICAgaWRlbnRpZmllcj0ib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LkludGVyZmFjZUJsb2NrXzMwODUiDQorICAgICAgaGludD0iMzA4NSI+DQorICAgIDxpY29uRW50cnkNCisgICAgICAgIHhtaTppZD0iX1F0OWRFTXY0RWVTNUJwRTNoT2JseXciDQorICAgICAgICBpY29uUGF0aD0iL2ljb25zL2Z1bGwvb2JqMTYvQ2xhc3MuZ2lmIg0KKyAgICAgICAgYnVuZGxlSWQ9Im9yZy5lY2xpcHNlLnVtbDIudW1sLmVkaXQiLz4NCisgICAgPHNwZWNpYWxpemVkVHlwZXNJRD5vcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuSW50ZXJmYWNlQmxvY2s8L3NwZWNpYWxpemVkVHlwZXNJRD4NCisgICAgPHNwZWNpYWxpemVkVHlwZXNJRD5vcmcuZWNsaXBzZS5wYXB5cnVzLnVtbC5kaWFncmFtLmNvbXBvc2l0ZS5DbGFzc18zMDg1PC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICA8L2VsZW1lbnRUeXBlQ29uZmlndXJhdGlvbnM+DQorICA8ZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucw0KKyAgICAgIHhzaTp0eXBlPSJlbGVtZW50dHlwZXNjb25maWd1cmF0aW9uczpTcGVjaWFsaXphdGlvblR5cGVDb25maWd1cmF0aW9uIg0KKyAgICAgIHhtaTppZD0iX1F0OWRFY3Y0RWVTNUJwRTNoT2JseXciDQorICAgICAgbmFtZT0iSW50ZXJmYWNlQmxvY2sgKDIwNzMpIg0KKyAgICAgIGlkZW50aWZpZXI9Im9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5JbnRlcmZhY2VCbG9ja18yMDczIg0KKyAgICAgIGhpbnQ9IjIwNzMiPg0KKyAgICA8aWNvbkVudHJ5DQorICAgICAgICB4bWk6aWQ9Il9RdDlkRXN2NEVlUzVCcEUzaE9ibHl3Ig0KKyAgICAgICAgaWNvblBhdGg9Ii9pY29ucy9mdWxsL29iajE2L0NsYXNzLmdpZiINCisgICAgICAgIGJ1bmRsZUlkPSJvcmcuZWNsaXBzZS51bWwyLnVtbC5lZGl0Ii8+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LkludGVyZmFjZUJsb2NrPC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy51bWwuZGlhZ3JhbS5jb21wb3NpdGUuQ2xhc3NfMjA3Mzwvc3BlY2lhbGl6ZWRUeXBlc0lEPg0KKyAgPC9lbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zPg0KKyAgPGVsZW1lbnRUeXBlQ29uZmlndXJhdGlvbnMNCisgICAgICB4c2k6dHlwZT0iZWxlbWVudHR5cGVzY29uZmlndXJhdGlvbnM6U3BlY2lhbGl6YXRpb25UeXBlQ29uZmlndXJhdGlvbiINCisgICAgICB4bWk6aWQ9Il9RdDlkRTh2NEVlUzVCcEUzaE9ibHl3Ig0KKyAgICAgIG5hbWU9IlByb3h5UG9ydCINCisgICAgICBpZGVudGlmaWVyPSJvcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuUHJveHlQb3J0XzMwNjkiDQorICAgICAgaGludD0iMzA2OSI+DQorICAgIDxpY29uRW50cnkNCisgICAgICAgIHhtaTppZD0iX1F0OWRGTXY0RWVTNUJwRTNoT2JseXciDQorICAgICAgICBpY29uUGF0aD0iL2ljb25zL2Z1bGwvb2JqMTYvUG9ydC5naWYiDQorICAgICAgICBidW5kbGVJZD0ib3JnLmVjbGlwc2UudW1sMi51bWwuZWRpdCIvPg0KKyAgICA8c3BlY2lhbGl6ZWRUeXBlc0lEPm9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5Qcm94eVBvcnQ8L3NwZWNpYWxpemVkVHlwZXNJRD4NCisgICAgPHNwZWNpYWxpemVkVHlwZXNJRD5vcmcuZWNsaXBzZS5wYXB5cnVzLnVtbC5kaWFncmFtLmNvbXBvc2l0ZS5Qb3J0XzMwNjk8L3NwZWNpYWxpemVkVHlwZXNJRD4NCisgIDwvZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucz4NCisgIDxlbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zDQorICAgICAgeHNpOnR5cGU9ImVsZW1lbnR0eXBlc2NvbmZpZ3VyYXRpb25zOlNwZWNpYWxpemF0aW9uVHlwZUNvbmZpZ3VyYXRpb24iDQorICAgICAgeG1pOmlkPSJfUXQ5ZEZjdjRFZVM1QnBFM2hPYmx5dyINCisgICAgICBuYW1lPSJDaGFuZ2VTdHJ1Y3R1cmFsRmVhdHVyZUV2ZW50Ig0KKyAgICAgIGlkZW50aWZpZXI9Im9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5DaGFuZ2VTdHJ1Y3R1cmFsRmVhdHVyZUV2ZW50XzIwODgiDQorICAgICAgaGludD0iMjA4OCI+DQorICAgIDxpY29uRW50cnkNCisgICAgICAgIHhtaTppZD0iX1F0OWRGc3Y0RWVTNUJwRTNoT2JseXciDQorICAgICAgICBpY29uUGF0aD0iL2ljb25zL2Z1bGwvb2JqMTYvQ2hhbmdlRXZlbnQuZ2lmIg0KKyAgICAgICAgYnVuZGxlSWQ9Im9yZy5lY2xpcHNlLnVtbDIudW1sLmVkaXQiLz4NCisgICAgPHNwZWNpYWxpemVkVHlwZXNJRD5vcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuQ2hhbmdlU3RydWN0dXJhbEZlYXR1cmVFdmVudDwvc3BlY2lhbGl6ZWRUeXBlc0lEPg0KKyAgICA8c3BlY2lhbGl6ZWRUeXBlc0lEPm9yZy5lY2xpcHNlLnBhcHlydXMudW1sLmRpYWdyYW0uY29tcG9zaXRlLkNoYW5nZUV2ZW50XzIwODg8L3NwZWNpYWxpemVkVHlwZXNJRD4NCisgIDwvZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucz4NCisgIDxlbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zDQorICAgICAgeHNpOnR5cGU9ImVsZW1lbnR0eXBlc2NvbmZpZ3VyYXRpb25zOlNwZWNpYWxpemF0aW9uVHlwZUNvbmZpZ3VyYXRpb24iDQorICAgICAgeG1pOmlkPSJfUXQ5ZEY4djRFZVM1QnBFM2hPYmx5dyINCisgICAgICBuYW1lPSJDb250cm9sT3BlcmF0b3IgT3BlcmF0aW9uIg0KKyAgICAgIGlkZW50aWZpZXI9Im9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5Db250cm9sT3BlcmF0b3JfT3BlcmF0aW9uXzMxMDIiDQorICAgICAgaGludD0iMzEwMiI+DQorICAgIDxpY29uRW50cnkNCisgICAgICAgIHhtaTppZD0iX1F0OWRHTXY0RWVTNUJwRTNoT2JseXciDQorICAgICAgICBpY29uUGF0aD0iL2ljb25zL2Z1bGwvb2JqMTYvT3BlcmF0aW9uLmdpZiINCisgICAgICAgIGJ1bmRsZUlkPSJvcmcuZWNsaXBzZS51bWwyLnVtbC5lZGl0Ii8+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LkNvbnRyb2xPcGVyYXRvcl9PcGVyYXRpb248L3NwZWNpYWxpemVkVHlwZXNJRD4NCisgICAgPHNwZWNpYWxpemVkVHlwZXNJRD5vcmcuZWNsaXBzZS5wYXB5cnVzLnVtbC5kaWFncmFtLmNvbXBvc2l0ZS5PcGVyYXRpb25fMzEwMjwvc3BlY2lhbGl6ZWRUeXBlc0lEPg0KKyAgPC9lbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zPg0KKyAgPGVsZW1lbnRUeXBlQ29uZmlndXJhdGlvbnMNCisgICAgICB4c2k6dHlwZT0iZWxlbWVudHR5cGVzY29uZmlndXJhdGlvbnM6U3BlY2lhbGl6YXRpb25UeXBlQ29uZmlndXJhdGlvbiINCisgICAgICB4bWk6aWQ9Il9RdDlkR2N2NEVlUzVCcEUzaE9ibHl3Ig0KKyAgICAgIG5hbWU9IlJhdGUgUGFyYW1ldGVyIg0KKyAgICAgIGlkZW50aWZpZXI9Im9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5SYXRlX1BhcmFtZXRlcl8zMDg4Ig0KKyAgICAgIGhpbnQ9IjMwODgiPg0KKyAgICA8aWNvbkVudHJ5DQorICAgICAgICB4bWk6aWQ9Il9RdDlkR3N2NEVlUzVCcEUzaE9ibHl3Ig0KKyAgICAgICAgaWNvblBhdGg9Ii9pY29ucy9mdWxsL29iajE2L1BhcmFtZXRlci5naWYiDQorICAgICAgICBidW5kbGVJZD0ib3JnLmVjbGlwc2UudW1sMi51bWwuZWRpdCIvPg0KKyAgICA8c3BlY2lhbGl6ZWRUeXBlc0lEPm9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5SYXRlX1BhcmFtZXRlcjwvc3BlY2lhbGl6ZWRUeXBlc0lEPg0KKyAgICA8c3BlY2lhbGl6ZWRUeXBlc0lEPm9yZy5lY2xpcHNlLnBhcHlydXMudW1sLmRpYWdyYW0uY29tcG9zaXRlLlBhcmFtZXRlcl8zMDg4PC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICA8L2VsZW1lbnRUeXBlQ29uZmlndXJhdGlvbnM+DQorICA8ZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucw0KKyAgICAgIHhzaTp0eXBlPSJlbGVtZW50dHlwZXNjb25maWd1cmF0aW9uczpTcGVjaWFsaXphdGlvblR5cGVDb25maWd1cmF0aW9uIg0KKyAgICAgIHhtaTppZD0iX1F0OWRHOHY0RWVTNUJwRTNoT2JseXciDQorICAgICAgbmFtZT0iRGlzY3JldGUgUGFyYW1ldGVyIg0KKyAgICAgIGlkZW50aWZpZXI9Im9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5EaXNjcmV0ZV9QYXJhbWV0ZXJfMzA4OCINCisgICAgICBoaW50PSIzMDg4Ij4NCisgICAgPGljb25FbnRyeQ0KKyAgICAgICAgeG1pOmlkPSJfUXQ5ZEhNdjRFZVM1QnBFM2hPYmx5dyINCisgICAgICAgIGljb25QYXRoPSIvaWNvbnMvZnVsbC9vYmoxNi9QYXJhbWV0ZXIuZ2lmIg0KKyAgICAgICAgYnVuZGxlSWQ9Im9yZy5lY2xpcHNlLnVtbDIudW1sLmVkaXQiLz4NCisgICAgPHNwZWNpYWxpemVkVHlwZXNJRD5vcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuRGlzY3JldGVfUGFyYW1ldGVyPC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy51bWwuZGlhZ3JhbS5jb21wb3NpdGUuUGFyYW1ldGVyXzMwODg8L3NwZWNpYWxpemVkVHlwZXNJRD4NCisgIDwvZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucz4NCisgIDxlbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zDQorICAgICAgeHNpOnR5cGU9ImVsZW1lbnR0eXBlc2NvbmZpZ3VyYXRpb25zOlNwZWNpYWxpemF0aW9uVHlwZUNvbmZpZ3VyYXRpb24iDQorICAgICAgeG1pOmlkPSJfUXQ5ZEhjdjRFZVM1QnBFM2hPYmx5dyINCisgICAgICBuYW1lPSJDb250aW51b3VzIFBhcmFtZXRlciINCisgICAgICBpZGVudGlmaWVyPSJvcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuQ29udGludW91c19QYXJhbWV0ZXJfMzA4OCINCisgICAgICBoaW50PSIzMDg4Ij4NCisgICAgPGljb25FbnRyeQ0KKyAgICAgICAgeG1pOmlkPSJfUXQ5ZEhzdjRFZVM1QnBFM2hPYmx5dyINCisgICAgICAgIGljb25QYXRoPSIvaWNvbnMvZnVsbC9vYmoxNi9QYXJhbWV0ZXIuZ2lmIg0KKyAgICAgICAgYnVuZGxlSWQ9Im9yZy5lY2xpcHNlLnVtbDIudW1sLmVkaXQiLz4NCisgICAgPHNwZWNpYWxpemVkVHlwZXNJRD5vcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuQ29udGludW91c19QYXJhbWV0ZXI8L3NwZWNpYWxpemVkVHlwZXNJRD4NCisgICAgPHNwZWNpYWxpemVkVHlwZXNJRD5vcmcuZWNsaXBzZS5wYXB5cnVzLnVtbC5kaWFncmFtLmNvbXBvc2l0ZS5QYXJhbWV0ZXJfMzA4ODwvc3BlY2lhbGl6ZWRUeXBlc0lEPg0KKyAgPC9lbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zPg0KKyAgPGVsZW1lbnRUeXBlQ29uZmlndXJhdGlvbnMNCisgICAgICB4c2k6dHlwZT0iZWxlbWVudHR5cGVzY29uZmlndXJhdGlvbnM6U3BlY2lhbGl6YXRpb25UeXBlQ29uZmlndXJhdGlvbiINCisgICAgICB4bWk6aWQ9Il9RdDlkSDh2NEVlUzVCcEUzaE9ibHl3Ig0KKyAgICAgIG5hbWU9Ik9wdGlvbmFsIg0KKyAgICAgIGlkZW50aWZpZXI9Im9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5PcHRpb25hbF8zMDg4Ig0KKyAgICAgIGhpbnQ9IjMwODgiPg0KKyAgICA8aWNvbkVudHJ5DQorICAgICAgICB4bWk6aWQ9Il9RdDlkSU12NEVlUzVCcEUzaE9ibHl3Ig0KKyAgICAgICAgaWNvblBhdGg9Ii9pY29ucy9mdWxsL29iajE2L1BhcmFtZXRlci5naWYiDQorICAgICAgICBidW5kbGVJZD0ib3JnLmVjbGlwc2UudW1sMi51bWwuZWRpdCIvPg0KKyAgICA8c3BlY2lhbGl6ZWRUeXBlc0lEPm9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5PcHRpb25hbDwvc3BlY2lhbGl6ZWRUeXBlc0lEPg0KKyAgICA8c3BlY2lhbGl6ZWRUeXBlc0lEPm9yZy5lY2xpcHNlLnBhcHlydXMudW1sLmRpYWdyYW0uY29tcG9zaXRlLlBhcmFtZXRlcl8zMDg4PC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICA8L2VsZW1lbnRUeXBlQ29uZmlndXJhdGlvbnM+DQorICA8ZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucw0KKyAgICAgIHhzaTp0eXBlPSJlbGVtZW50dHlwZXNjb25maWd1cmF0aW9uczpTcGVjaWFsaXphdGlvblR5cGVDb25maWd1cmF0aW9uIg0KKyAgICAgIHhtaTppZD0iX1F0OWRJY3Y0RWVTNUJwRTNoT2JseXciDQorICAgICAgbmFtZT0iUmF0aW9uYWxlICgzMDk3KSINCisgICAgICBpZGVudGlmaWVyPSJvcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuUmF0aW9uYWxlXzMwOTciDQorICAgICAgaGludD0iMzA5NyI+DQorICAgIDxpY29uRW50cnkNCisgICAgICAgIHhtaTppZD0iX1F0OWRJc3Y0RWVTNUJwRTNoT2JseXciDQorICAgICAgICBpY29uUGF0aD0iL2ljb25zL2Z1bGwvb2JqMTYvQ29tbWVudC5naWYiDQorICAgICAgICBidW5kbGVJZD0ib3JnLmVjbGlwc2UudW1sMi51bWwuZWRpdCIvPg0KKyAgICA8c3BlY2lhbGl6ZWRUeXBlc0lEPm9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5SYXRpb25hbGU8L3NwZWNpYWxpemVkVHlwZXNJRD4NCisgICAgPHNwZWNpYWxpemVkVHlwZXNJRD5vcmcuZWNsaXBzZS5wYXB5cnVzLnVtbC5kaWFncmFtLmNvbXBvc2l0ZS5Db21tZW50XzMwOTc8L3NwZWNpYWxpemVkVHlwZXNJRD4NCisgIDwvZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucz4NCisgIDxlbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zDQorICAgICAgeHNpOnR5cGU9ImVsZW1lbnR0eXBlc2NvbmZpZ3VyYXRpb25zOlNwZWNpYWxpemF0aW9uVHlwZUNvbmZpZ3VyYXRpb24iDQorICAgICAgeG1pOmlkPSJfUXQ5ZEk4djRFZVM1QnBFM2hPYmx5dyINCisgICAgICBuYW1lPSJSYXRpb25hbGUgKDIxMDkpIg0KKyAgICAgIGlkZW50aWZpZXI9Im9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5SYXRpb25hbGVfMjEwOSINCisgICAgICBoaW50PSIyMTA5Ij4NCisgICAgPGljb25FbnRyeQ0KKyAgICAgICAgeG1pOmlkPSJfUXQ5ZEpNdjRFZVM1QnBFM2hPYmx5dyINCisgICAgICAgIGljb25QYXRoPSIvaWNvbnMvZnVsbC9vYmoxNi9Db21tZW50LmdpZiINCisgICAgICAgIGJ1bmRsZUlkPSJvcmcuZWNsaXBzZS51bWwyLnVtbC5lZGl0Ii8+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LlJhdGlvbmFsZTwvc3BlY2lhbGl6ZWRUeXBlc0lEPg0KKyAgICA8c3BlY2lhbGl6ZWRUeXBlc0lEPm9yZy5lY2xpcHNlLnBhcHlydXMudW1sLmRpYWdyYW0uY29tcG9zaXRlLkNvbW1lbnRfMjEwOTwvc3BlY2lhbGl6ZWRUeXBlc0lEPg0KKyAgPC9lbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zPg0KKyAgPGVsZW1lbnRUeXBlQ29uZmlndXJhdGlvbnMNCisgICAgICB4c2k6dHlwZT0iZWxlbWVudHR5cGVzY29uZmlndXJhdGlvbnM6U3BlY2lhbGl6YXRpb25UeXBlQ29uZmlndXJhdGlvbiINCisgICAgICB4bWk6aWQ9Il9RdDlkSmN2NEVlUzVCcEUzaE9ibHl3Ig0KKyAgICAgIG5hbWU9IlZpZXcgUGFja2FnZSINCisgICAgICBpZGVudGlmaWVyPSJvcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuVmlld19QYWNrYWdlX0NvbXBvc2l0ZVN0cnVjdHVyZSINCisgICAgICBoaW50PSJDb21wb3NpdGVTdHJ1Y3R1cmUiPg0KKyAgICA8aWNvbkVudHJ5DQorICAgICAgICB4bWk6aWQ9Il9RdDlkSnN2NEVlUzVCcEUzaE9ibHl3Ig0KKyAgICAgICAgaWNvblBhdGg9Ii9pY29ucy9mdWxsL29iajE2L1BhY2thZ2UuZ2lmIg0KKyAgICAgICAgYnVuZGxlSWQ9Im9yZy5lY2xpcHNlLnVtbDIudW1sLmVkaXQiLz4NCisgICAgPHNwZWNpYWxpemVkVHlwZXNJRD5vcmcuZWNsaXBzZS5wYXB5cnVzLnVtbC5kaWFncmFtLmNvbXBvc2l0ZS5QYWNrYWdlXzEwMDA8L3NwZWNpYWxpemVkVHlwZXNJRD4NCisgICAgPG1hdGNoZXJDb25maWd1cmF0aW9uDQorICAgICAgICB4c2k6dHlwZT0ic3RlcmVvdHlwZWFwcGxpY2F0aW9ubWF0Y2hlcmNvbmZpZ3VyYXRpb246U3RlcmVvdHlwZUFwcGxpY2F0aW9uTWF0Y2hlckNvbmZpZ3VyYXRpb24iDQorICAgICAgICB4bWk6aWQ9Il9RdDlkSjh2NEVlUzVCcEUzaE9ibHl3Ij4NCisgICAgICA8c3RlcmVvdHlwZXNRdWFsaWZpZWROYW1lcz5TeXNNTDo6TW9kZWxFbGVtZW50czo6Vmlldzwvc3RlcmVvdHlwZXNRdWFsaWZpZWROYW1lcz4NCisgICAgPC9tYXRjaGVyQ29uZmlndXJhdGlvbj4NCisgIDwvZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucz4NCisgIDxlbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zDQorICAgICAgeHNpOnR5cGU9ImVsZW1lbnR0eXBlc2NvbmZpZ3VyYXRpb25zOlNwZWNpYWxpemF0aW9uVHlwZUNvbmZpZ3VyYXRpb24iDQorICAgICAgeG1pOmlkPSJfUXQ5ZEtNdjRFZVM1QnBFM2hPYmx5dyINCisgICAgICBuYW1lPSJWaWV3ICgzMDg1KSINCisgICAgICBpZGVudGlmaWVyPSJvcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuVmlld19DbGFzc18zMDg1Ig0KKyAgICAgIGhpbnQ9IjMwODUiPg0KKyAgICA8aWNvbkVudHJ5DQorICAgICAgICB4bWk6aWQ9Il9RdDlkS2N2NEVlUzVCcEUzaE9ibHl3Ig0KKyAgICAgICAgaWNvblBhdGg9Ii9pY29ucy9mdWxsL29iajE2L0NsYXNzLmdpZiINCisgICAgICAgIGJ1bmRsZUlkPSJvcmcuZWNsaXBzZS51bWwyLnVtbC5lZGl0Ii8+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LlZpZXdfQ2xhc3M8L3NwZWNpYWxpemVkVHlwZXNJRD4NCisgICAgPHNwZWNpYWxpemVkVHlwZXNJRD5vcmcuZWNsaXBzZS5wYXB5cnVzLnVtbC5kaWFncmFtLmNvbXBvc2l0ZS5DbGFzc18zMDg1PC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICA8L2VsZW1lbnRUeXBlQ29uZmlndXJhdGlvbnM+DQorICA8ZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucw0KKyAgICAgIHhzaTp0eXBlPSJlbGVtZW50dHlwZXNjb25maWd1cmF0aW9uczpTcGVjaWFsaXphdGlvblR5cGVDb25maWd1cmF0aW9uIg0KKyAgICAgIHhtaTppZD0iX1F0OWRLc3Y0RWVTNUJwRTNoT2JseXciDQorICAgICAgbmFtZT0iVmlldyAoMjA3MykiDQorICAgICAgaWRlbnRpZmllcj0ib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LlZpZXdfQ2xhc3NfMjA3MyINCisgICAgICBoaW50PSIyMDczIj4NCisgICAgPGljb25FbnRyeQ0KKyAgICAgICAgeG1pOmlkPSJfUXQ5ZEs4djRFZVM1QnBFM2hPYmx5dyINCisgICAgICAgIGljb25QYXRoPSIvaWNvbnMvZnVsbC9vYmoxNi9DbGFzcy5naWYiDQorICAgICAgICBidW5kbGVJZD0ib3JnLmVjbGlwc2UudW1sMi51bWwuZWRpdCIvPg0KKyAgICA8c3BlY2lhbGl6ZWRUeXBlc0lEPm9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5WaWV3X0NsYXNzPC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy51bWwuZGlhZ3JhbS5jb21wb3NpdGUuQ2xhc3NfMjA3Mzwvc3BlY2lhbGl6ZWRUeXBlc0lEPg0KKyAgPC9lbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zPg0KKyAgPGVsZW1lbnRUeXBlQ29uZmlndXJhdGlvbnMNCisgICAgICB4c2k6dHlwZT0iZWxlbWVudHR5cGVzY29uZmlndXJhdGlvbnM6U3BlY2lhbGl6YXRpb25UeXBlQ29uZmlndXJhdGlvbiINCisgICAgICB4bWk6aWQ9Il9RdDlkTE12NEVlUzVCcEUzaE9ibHl3Ig0KKyAgICAgIG5hbWU9IkNvbmZvcm0gRGVwZW5kZW5jeSINCisgICAgICBpZGVudGlmaWVyPSJvcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuQ29uZm9ybV9EZXBlbmRlbmN5XzQwMTAiDQorICAgICAgaGludD0iNDAxMCI+DQorICAgIDxpY29uRW50cnkNCisgICAgICAgIHhtaTppZD0iX1F0OWRMY3Y0RWVTNUJwRTNoT2JseXciDQorICAgICAgICBpY29uUGF0aD0iL2ljb25zL2Z1bGwvb2JqMTYvRGVwZW5kZW5jeS5naWYiDQorICAgICAgICBidW5kbGVJZD0ib3JnLmVjbGlwc2UudW1sMi51bWwuZWRpdCIvPg0KKyAgICA8c3BlY2lhbGl6ZWRUeXBlc0lEPm9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5Db25mb3JtX0RlcGVuZGVuY3k8L3NwZWNpYWxpemVkVHlwZXNJRD4NCisgICAgPHNwZWNpYWxpemVkVHlwZXNJRD5vcmcuZWNsaXBzZS5wYXB5cnVzLnVtbC5kaWFncmFtLmNvbXBvc2l0ZS5EZXBlbmRlbmN5XzQwMTA8L3NwZWNpYWxpemVkVHlwZXNJRD4NCisgIDwvZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucz4NCisgIDxlbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zDQorICAgICAgeHNpOnR5cGU9ImVsZW1lbnR0eXBlc2NvbmZpZ3VyYXRpb25zOlNwZWNpYWxpemF0aW9uVHlwZUNvbmZpZ3VyYXRpb24iDQorICAgICAgeG1pOmlkPSJfUXQ5ZExzdjRFZVM1QnBFM2hPYmx5dyINCisgICAgICBuYW1lPSJDb25mb3JtIEdlbmVyYWxpemF0aW9uIg0KKyAgICAgIGlkZW50aWZpZXI9Im9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5Db25mb3JtX0dlbmVyYWxpemF0aW9uXzQwMTUiDQorICAgICAgaGludD0iNDAxNSI+DQorICAgIDxpY29uRW50cnkNCisgICAgICAgIHhtaTppZD0iX1F0OWRMOHY0RWVTNUJwRTNoT2JseXciDQorICAgICAgICBpY29uUGF0aD0iL2ljb25zL2Z1bGwvb2JqMTYvR2VuZXJhbGl6YXRpb24uZ2lmIg0KKyAgICAgICAgYnVuZGxlSWQ9Im9yZy5lY2xpcHNlLnVtbDIudW1sLmVkaXQiLz4NCisgICAgPHNwZWNpYWxpemVkVHlwZXNJRD5vcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuQ29uZm9ybV9HZW5lcmFsaXphdGlvbjwvc3BlY2lhbGl6ZWRUeXBlc0lEPg0KKyAgICA8c3BlY2lhbGl6ZWRUeXBlc0lEPm9yZy5lY2xpcHNlLnBhcHlydXMudW1sLmRpYWdyYW0uY29tcG9zaXRlLkdlbmVyYWxpemF0aW9uXzQwMTU8L3NwZWNpYWxpemVkVHlwZXNJRD4NCisgIDwvZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucz4NCisgIDxlbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zDQorICAgICAgeHNpOnR5cGU9ImVsZW1lbnR0eXBlc2NvbmZpZ3VyYXRpb25zOlNwZWNpYWxpemF0aW9uVHlwZUNvbmZpZ3VyYXRpb24iDQorICAgICAgeG1pOmlkPSJfUXQ5ZE1NdjRFZVM1QnBFM2hPYmx5dyINCisgICAgICBuYW1lPSJQcm9ibGVtICgzMDk3KSINCisgICAgICBpZGVudGlmaWVyPSJvcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuUHJvYmxlbV8zMDk3Ig0KKyAgICAgIGhpbnQ9IjMwOTciPg0KKyAgICA8aWNvbkVudHJ5DQorICAgICAgICB4bWk6aWQ9Il9RdDlkTWN2NEVlUzVCcEUzaE9ibHl3Ig0KKyAgICAgICAgaWNvblBhdGg9Ii9pY29ucy9mdWxsL29iajE2L0NvbW1lbnQuZ2lmIg0KKyAgICAgICAgYnVuZGxlSWQ9Im9yZy5lY2xpcHNlLnVtbDIudW1sLmVkaXQiLz4NCisgICAgPHNwZWNpYWxpemVkVHlwZXNJRD5vcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuUHJvYmxlbTwvc3BlY2lhbGl6ZWRUeXBlc0lEPg0KKyAgICA8c3BlY2lhbGl6ZWRUeXBlc0lEPm9yZy5lY2xpcHNlLnBhcHlydXMudW1sLmRpYWdyYW0uY29tcG9zaXRlLkNvbW1lbnRfMzA5Nzwvc3BlY2lhbGl6ZWRUeXBlc0lEPg0KKyAgPC9lbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zPg0KKyAgPGVsZW1lbnRUeXBlQ29uZmlndXJhdGlvbnMNCisgICAgICB4c2k6dHlwZT0iZWxlbWVudHR5cGVzY29uZmlndXJhdGlvbnM6U3BlY2lhbGl6YXRpb25UeXBlQ29uZmlndXJhdGlvbiINCisgICAgICB4bWk6aWQ9Il9RdDlkTXN2NEVlUzVCcEUzaE9ibHl3Ig0KKyAgICAgIG5hbWU9IlByb2JsZW0gKDIxMDkpIg0KKyAgICAgIGlkZW50aWZpZXI9Im9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5Qcm9ibGVtXzIxMDkiDQorICAgICAgaGludD0iMjEwOSI+DQorICAgIDxpY29uRW50cnkNCisgICAgICAgIHhtaTppZD0iX1F0OWRNOHY0RWVTNUJwRTNoT2JseXciDQorICAgICAgICBpY29uUGF0aD0iL2ljb25zL2Z1bGwvb2JqMTYvQ29tbWVudC5naWYiDQorICAgICAgICBidW5kbGVJZD0ib3JnLmVjbGlwc2UudW1sMi51bWwuZWRpdCIvPg0KKyAgICA8c3BlY2lhbGl6ZWRUeXBlc0lEPm9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5Qcm9ibGVtPC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy51bWwuZGlhZ3JhbS5jb21wb3NpdGUuQ29tbWVudF8yMTA5PC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICA8L2VsZW1lbnRUeXBlQ29uZmlndXJhdGlvbnM+DQorICA8ZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucw0KKyAgICAgIHhzaTp0eXBlPSJlbGVtZW50dHlwZXNjb25maWd1cmF0aW9uczpTcGVjaWFsaXphdGlvblR5cGVDb25maWd1cmF0aW9uIg0KKyAgICAgIHhtaTppZD0iX1F0OWROTXY0RWVTNUJwRTNoT2JseXciDQorICAgICAgbmFtZT0iVmlld1BvaW50ICgzMDg1KSINCisgICAgICBpZGVudGlmaWVyPSJvcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuVmlld1BvaW50XzMwODUiDQorICAgICAgaGludD0iMzA4NSI+DQorICAgIDxpY29uRW50cnkNCisgICAgICAgIHhtaTppZD0iX1F0OWROY3Y0RWVTNUJwRTNoT2JseXciDQorICAgICAgICBpY29uUGF0aD0iL2ljb25zL2Z1bGwvb2JqMTYvQ2xhc3MuZ2lmIg0KKyAgICAgICAgYnVuZGxlSWQ9Im9yZy5lY2xpcHNlLnVtbDIudW1sLmVkaXQiLz4NCisgICAgPHNwZWNpYWxpemVkVHlwZXNJRD5vcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuVmlld1BvaW50PC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy51bWwuZGlhZ3JhbS5jb21wb3NpdGUuQ2xhc3NfMzA4NTwvc3BlY2lhbGl6ZWRUeXBlc0lEPg0KKyAgPC9lbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zPg0KKyAgPGVsZW1lbnRUeXBlQ29uZmlndXJhdGlvbnMNCisgICAgICB4c2k6dHlwZT0iZWxlbWVudHR5cGVzY29uZmlndXJhdGlvbnM6U3BlY2lhbGl6YXRpb25UeXBlQ29uZmlndXJhdGlvbiINCisgICAgICB4bWk6aWQ9Il9RdDlkTnN2NEVlUzVCcEUzaE9ibHl3Ig0KKyAgICAgIG5hbWU9IlZpZXdQb2ludCAoMjA3MykiDQorICAgICAgaWRlbnRpZmllcj0ib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LlZpZXdQb2ludF8yMDczIg0KKyAgICAgIGhpbnQ9IjIwNzMiPg0KKyAgICA8aWNvbkVudHJ5DQorICAgICAgICB4bWk6aWQ9Il9RdDlkTjh2NEVlUzVCcEUzaE9ibHl3Ig0KKyAgICAgICAgaWNvblBhdGg9Ii9pY29ucy9mdWxsL29iajE2L0NsYXNzLmdpZiINCisgICAgICAgIGJ1bmRsZUlkPSJvcmcuZWNsaXBzZS51bWwyLnVtbC5lZGl0Ii8+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LlZpZXdQb2ludDwvc3BlY2lhbGl6ZWRUeXBlc0lEPg0KKyAgICA8c3BlY2lhbGl6ZWRUeXBlc0lEPm9yZy5lY2xpcHNlLnBhcHlydXMudW1sLmRpYWdyYW0uY29tcG9zaXRlLkNsYXNzXzIwNzM8L3NwZWNpYWxpemVkVHlwZXNJRD4NCisgIDwvZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucz4NCisgIDxlbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zDQorICAgICAgeHNpOnR5cGU9ImVsZW1lbnR0eXBlc2NvbmZpZ3VyYXRpb25zOlNwZWNpYWxpemF0aW9uVHlwZUNvbmZpZ3VyYXRpb24iDQorICAgICAgeG1pOmlkPSJfUXQ5ZE9NdjRFZVM1QnBFM2hPYmx5dyINCisgICAgICBuYW1lPSJFeHBvc2UiDQorICAgICAgaWRlbnRpZmllcj0ib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LkV4cG9zZV80MDEwIg0KKyAgICAgIGhpbnQ9IjQwMTAiPg0KKyAgICA8aWNvbkVudHJ5DQorICAgICAgICB4bWk6aWQ9Il9RdDlkT2N2NEVlUzVCcEUzaE9ibHl3Ig0KKyAgICAgICAgaWNvblBhdGg9Ii9pY29ucy9mdWxsL29iajE2L0RlcGVuZGVuY3kuZ2lmIg0KKyAgICAgICAgYnVuZGxlSWQ9Im9yZy5lY2xpcHNlLnVtbDIudW1sLmVkaXQiLz4NCisgICAgPHNwZWNpYWxpemVkVHlwZXNJRD5vcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuRXhwb3NlPC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy51bWwuZGlhZ3JhbS5jb21wb3NpdGUuRGVwZW5kZW5jeV80MDEwPC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICA8L2VsZW1lbnRUeXBlQ29uZmlndXJhdGlvbnM+DQorICA8ZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucw0KKyAgICAgIHhzaTp0eXBlPSJlbGVtZW50dHlwZXNjb25maWd1cmF0aW9uczpTcGVjaWFsaXphdGlvblR5cGVDb25maWd1cmF0aW9uIg0KKyAgICAgIHhtaTppZD0iX1F0OWRPc3Y0RWVTNUJwRTNoT2JseXciDQorICAgICAgbmFtZT0iRWxlbWVudEdyb3VwICgzMDk3KSINCisgICAgICBpZGVudGlmaWVyPSJvcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuRWxlbWVudEdyb3VwXzMwOTciDQorICAgICAgaGludD0iMzA5NyI+DQorICAgIDxpY29uRW50cnkNCisgICAgICAgIHhtaTppZD0iX1F0OWRPOHY0RWVTNUJwRTNoT2JseXciDQorICAgICAgICBpY29uUGF0aD0iL2ljb25zL2Z1bGwvb2JqMTYvQ29tbWVudC5naWYiDQorICAgICAgICBidW5kbGVJZD0ib3JnLmVjbGlwc2UudW1sMi51bWwuZWRpdCIvPg0KKyAgICA8c3BlY2lhbGl6ZWRUeXBlc0lEPm9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5FbGVtZW50R3JvdXA8L3NwZWNpYWxpemVkVHlwZXNJRD4NCisgICAgPHNwZWNpYWxpemVkVHlwZXNJRD5vcmcuZWNsaXBzZS5wYXB5cnVzLnVtbC5kaWFncmFtLmNvbXBvc2l0ZS5Db21tZW50XzMwOTc8L3NwZWNpYWxpemVkVHlwZXNJRD4NCisgIDwvZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucz4NCisgIDxlbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zDQorICAgICAgeHNpOnR5cGU9ImVsZW1lbnR0eXBlc2NvbmZpZ3VyYXRpb25zOlNwZWNpYWxpemF0aW9uVHlwZUNvbmZpZ3VyYXRpb24iDQorICAgICAgeG1pOmlkPSJfUXQ5ZFBNdjRFZVM1QnBFM2hPYmx5dyINCisgICAgICBuYW1lPSJFbGVtZW50R3JvdXAgKDIxMDkpIg0KKyAgICAgIGlkZW50aWZpZXI9Im9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5FbGVtZW50R3JvdXBfMjEwOSINCisgICAgICBoaW50PSIyMTA5Ij4NCisgICAgPGljb25FbnRyeQ0KKyAgICAgICAgeG1pOmlkPSJfUXQ5ZFBjdjRFZVM1QnBFM2hPYmx5dyINCisgICAgICAgIGljb25QYXRoPSIvaWNvbnMvZnVsbC9vYmoxNi9Db21tZW50LmdpZiINCisgICAgICAgIGJ1bmRsZUlkPSJvcmcuZWNsaXBzZS51bWwyLnVtbC5lZGl0Ii8+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LkVsZW1lbnRHcm91cDwvc3BlY2lhbGl6ZWRUeXBlc0lEPg0KKyAgICA8c3BlY2lhbGl6ZWRUeXBlc0lEPm9yZy5lY2xpcHNlLnBhcHlydXMudW1sLmRpYWdyYW0uY29tcG9zaXRlLkNvbW1lbnRfMjEwOTwvc3BlY2lhbGl6ZWRUeXBlc0lEPg0KKyAgPC9lbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zPg0KKyAgPGVsZW1lbnRUeXBlQ29uZmlndXJhdGlvbnMNCisgICAgICB4c2k6dHlwZT0iZWxlbWVudHR5cGVzY29uZmlndXJhdGlvbnM6U3BlY2lhbGl6YXRpb25UeXBlQ29uZmlndXJhdGlvbiINCisgICAgICB4bWk6aWQ9Il9RdDlkUHN2NEVlUzVCcEUzaE9ibHl3Ig0KKyAgICAgIG5hbWU9IkNvbnN0cmFpbnRCbG9jayAoMzA4NSkiDQorICAgICAgaWRlbnRpZmllcj0ib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LkNvbnN0cmFpbnRCbG9ja18zMDg1Ig0KKyAgICAgIGhpbnQ9IjMwODUiPg0KKyAgICA8aWNvbkVudHJ5DQorICAgICAgICB4bWk6aWQ9Il9RdDlkUDh2NEVlUzVCcEUzaE9ibHl3Ig0KKyAgICAgICAgaWNvblBhdGg9Ii9pY29ucy9mdWxsL29iajE2L0NsYXNzLmdpZiINCisgICAgICAgIGJ1bmRsZUlkPSJvcmcuZWNsaXBzZS51bWwyLnVtbC5lZGl0Ii8+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LkNvbnN0cmFpbnRCbG9jazwvc3BlY2lhbGl6ZWRUeXBlc0lEPg0KKyAgICA8c3BlY2lhbGl6ZWRUeXBlc0lEPm9yZy5lY2xpcHNlLnBhcHlydXMudW1sLmRpYWdyYW0uY29tcG9zaXRlLkNsYXNzXzMwODU8L3NwZWNpYWxpemVkVHlwZXNJRD4NCisgIDwvZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucz4NCisgIDxlbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zDQorICAgICAgeHNpOnR5cGU9ImVsZW1lbnR0eXBlc2NvbmZpZ3VyYXRpb25zOlNwZWNpYWxpemF0aW9uVHlwZUNvbmZpZ3VyYXRpb24iDQorICAgICAgeG1pOmlkPSJfUXQ5ZFFNdjRFZVM1QnBFM2hPYmx5dyINCisgICAgICBuYW1lPSJDb25zdHJhaW50QmxvY2sgKDIwNzMpIg0KKyAgICAgIGlkZW50aWZpZXI9Im9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5Db25zdHJhaW50QmxvY2tfMjA3MyINCisgICAgICBoaW50PSIyMDczIj4NCisgICAgPGljb25FbnRyeQ0KKyAgICAgICAgeG1pOmlkPSJfUXQ5ZFFjdjRFZVM1QnBFM2hPYmx5dyINCisgICAgICAgIGljb25QYXRoPSIvaWNvbnMvZnVsbC9vYmoxNi9DbGFzcy5naWYiDQorICAgICAgICBidW5kbGVJZD0ib3JnLmVjbGlwc2UudW1sMi51bWwuZWRpdCIvPg0KKyAgICA8c3BlY2lhbGl6ZWRUeXBlc0lEPm9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5Db25zdHJhaW50QmxvY2s8L3NwZWNpYWxpemVkVHlwZXNJRD4NCisgICAgPHNwZWNpYWxpemVkVHlwZXNJRD5vcmcuZWNsaXBzZS5wYXB5cnVzLnVtbC5kaWFncmFtLmNvbXBvc2l0ZS5DbGFzc18yMDczPC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICA8L2VsZW1lbnRUeXBlQ29uZmlndXJhdGlvbnM+DQorICA8ZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucw0KKyAgICAgIHhzaTp0eXBlPSJlbGVtZW50dHlwZXNjb25maWd1cmF0aW9uczpTcGVjaWFsaXphdGlvblR5cGVDb25maWd1cmF0aW9uIg0KKyAgICAgIHhtaTppZD0iX1F0OWRRc3Y0RWVTNUJwRTNoT2JseXciDQorICAgICAgbmFtZT0iQWxsb2NhdGUgQWJzdHJhY3Rpb24iDQorICAgICAgaWRlbnRpZmllcj0ib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LkFsbG9jYXRlX0Fic3RyYWN0aW9uXzQwMDciDQorICAgICAgaGludD0iNDAwNyI+DQorICAgIDxpY29uRW50cnkNCisgICAgICAgIHhtaTppZD0iX1F0OWRROHY0RWVTNUJwRTNoT2JseXciDQorICAgICAgICBpY29uUGF0aD0iL2ljb25zL2Z1bGwvb2JqMTYvQWJzdHJhY3Rpb24uZ2lmIg0KKyAgICAgICAgYnVuZGxlSWQ9Im9yZy5lY2xpcHNlLnVtbDIudW1sLmVkaXQiLz4NCisgICAgPHNwZWNpYWxpemVkVHlwZXNJRD5vcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuQWxsb2NhdGVfQWJzdHJhY3Rpb248L3NwZWNpYWxpemVkVHlwZXNJRD4NCisgICAgPHNwZWNpYWxpemVkVHlwZXNJRD5vcmcuZWNsaXBzZS5wYXB5cnVzLnVtbC5kaWFncmFtLmNvbXBvc2l0ZS5BYnN0cmFjdGlvbl80MDA3PC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICA8L2VsZW1lbnRUeXBlQ29uZmlndXJhdGlvbnM+DQorICA8ZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucw0KKyAgICAgIHhzaTp0eXBlPSJlbGVtZW50dHlwZXNjb25maWd1cmF0aW9uczpTcGVjaWFsaXphdGlvblR5cGVDb25maWd1cmF0aW9uIg0KKyAgICAgIHhtaTppZD0iX1F0OWRSTXY0RWVTNUJwRTNoT2JseXciDQorICAgICAgbmFtZT0iRGVyaXZlUmVxdCBBYnN0cmFjdGlvbiINCisgICAgICBpZGVudGlmaWVyPSJvcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuRGVyaXZlUmVxdF9BYnN0cmFjdGlvbl80MDA3Ig0KKyAgICAgIGhpbnQ9IjQwMDciPg0KKyAgICA8aWNvbkVudHJ5DQorICAgICAgICB4bWk6aWQ9Il9RdDlkUmN2NEVlUzVCcEUzaE9ibHl3Ig0KKyAgICAgICAgaWNvblBhdGg9Ii9pY29ucy9mdWxsL29iajE2L0Fic3RyYWN0aW9uLmdpZiINCisgICAgICAgIGJ1bmRsZUlkPSJvcmcuZWNsaXBzZS51bWwyLnVtbC5lZGl0Ii8+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LkRlcml2ZVJlcXRfQWJzdHJhY3Rpb248L3NwZWNpYWxpemVkVHlwZXNJRD4NCisgICAgPHNwZWNpYWxpemVkVHlwZXNJRD5vcmcuZWNsaXBzZS5wYXB5cnVzLnVtbC5kaWFncmFtLmNvbXBvc2l0ZS5BYnN0cmFjdGlvbl80MDA3PC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICA8L2VsZW1lbnRUeXBlQ29uZmlndXJhdGlvbnM+DQorICA8ZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucw0KKyAgICAgIHhzaTp0eXBlPSJlbGVtZW50dHlwZXNjb25maWd1cmF0aW9uczpTcGVjaWFsaXphdGlvblR5cGVDb25maWd1cmF0aW9uIg0KKyAgICAgIHhtaTppZD0iX1F0OWRSc3Y0RWVTNUJwRTNoT2JseXciDQorICAgICAgbmFtZT0iQ29weSBBYnN0cmFjdGlvbiINCisgICAgICBpZGVudGlmaWVyPSJvcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuQ29weV9BYnN0cmFjdGlvbl80MDA3Ig0KKyAgICAgIGhpbnQ9IjQwMDciPg0KKyAgICA8aWNvbkVudHJ5DQorICAgICAgICB4bWk6aWQ9Il9RdDlkUjh2NEVlUzVCcEUzaE9ibHl3Ig0KKyAgICAgICAgaWNvblBhdGg9Ii9pY29ucy9mdWxsL29iajE2L0Fic3RyYWN0aW9uLmdpZiINCisgICAgICAgIGJ1bmRsZUlkPSJvcmcuZWNsaXBzZS51bWwyLnVtbC5lZGl0Ii8+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LkNvcHlfQWJzdHJhY3Rpb248L3NwZWNpYWxpemVkVHlwZXNJRD4NCisgICAgPHNwZWNpYWxpemVkVHlwZXNJRD5vcmcuZWNsaXBzZS5wYXB5cnVzLnVtbC5kaWFncmFtLmNvbXBvc2l0ZS5BYnN0cmFjdGlvbl80MDA3PC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICA8L2VsZW1lbnRUeXBlQ29uZmlndXJhdGlvbnM+DQorICA8ZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucw0KKyAgICAgIHhzaTp0eXBlPSJlbGVtZW50dHlwZXNjb25maWd1cmF0aW9uczpTcGVjaWFsaXphdGlvblR5cGVDb25maWd1cmF0aW9uIg0KKyAgICAgIHhtaTppZD0iX1F0OWRTTXY0RWVTNUJwRTNoT2JseXciDQorICAgICAgbmFtZT0iU2F0aXNmeSBBYnN0cmFjdGlvbiINCisgICAgICBpZGVudGlmaWVyPSJvcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuU2F0aXNmeV9BYnN0cmFjdGlvbl80MDA3Ig0KKyAgICAgIGhpbnQ9IjQwMDciPg0KKyAgICA8aWNvbkVudHJ5DQorICAgICAgICB4bWk6aWQ9Il9RdDlkU2N2NEVlUzVCcEUzaE9ibHl3Ig0KKyAgICAgICAgaWNvblBhdGg9Ii9pY29ucy9mdWxsL29iajE2L0Fic3RyYWN0aW9uLmdpZiINCisgICAgICAgIGJ1bmRsZUlkPSJvcmcuZWNsaXBzZS51bWwyLnVtbC5lZGl0Ii8+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LlNhdGlzZnlfQWJzdHJhY3Rpb248L3NwZWNpYWxpemVkVHlwZXNJRD4NCisgICAgPHNwZWNpYWxpemVkVHlwZXNJRD5vcmcuZWNsaXBzZS5wYXB5cnVzLnVtbC5kaWFncmFtLmNvbXBvc2l0ZS5BYnN0cmFjdGlvbl80MDA3PC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICA8L2VsZW1lbnRUeXBlQ29uZmlndXJhdGlvbnM+DQorICA8ZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucw0KKyAgICAgIHhzaTp0eXBlPSJlbGVtZW50dHlwZXNjb25maWd1cmF0aW9uczpTcGVjaWFsaXphdGlvblR5cGVDb25maWd1cmF0aW9uIg0KKyAgICAgIHhtaTppZD0iX1F0OWRTc3Y0RWVTNUJwRTNoT2JseXciDQorICAgICAgbmFtZT0iVGVzdENhc2UgT3BlcmF0aW9uIg0KKyAgICAgIGlkZW50aWZpZXI9Im9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5UZXN0Q2FzZV9PcGVyYXRpb25fMzEwMiINCisgICAgICBoaW50PSIzMTAyIj4NCisgICAgPGljb25FbnRyeQ0KKyAgICAgICAgeG1pOmlkPSJfUXQ5ZFM4djRFZVM1QnBFM2hPYmx5dyINCisgICAgICAgIGljb25QYXRoPSIvaWNvbnMvZnVsbC9vYmoxNi9PcGVyYXRpb24uZ2lmIg0KKyAgICAgICAgYnVuZGxlSWQ9Im9yZy5lY2xpcHNlLnVtbDIudW1sLmVkaXQiLz4NCisgICAgPHNwZWNpYWxpemVkVHlwZXNJRD5vcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuVGVzdENhc2VfT3BlcmF0aW9uPC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy51bWwuZGlhZ3JhbS5jb21wb3NpdGUuT3BlcmF0aW9uXzMxMDI8L3NwZWNpYWxpemVkVHlwZXNJRD4NCisgIDwvZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucz4NCisgIDxlbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zDQorICAgICAgeHNpOnR5cGU9ImVsZW1lbnR0eXBlc2NvbmZpZ3VyYXRpb25zOlNwZWNpYWxpemF0aW9uVHlwZUNvbmZpZ3VyYXRpb24iDQorICAgICAgeG1pOmlkPSJfUXQ5ZFRNdjRFZVM1QnBFM2hPYmx5dyINCisgICAgICBuYW1lPSJSZXF1aXJlbWVudCAoMzA4NSkiDQorICAgICAgaWRlbnRpZmllcj0ib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LlJlcXVpcmVtZW50XzMwODUiDQorICAgICAgaGludD0iMzA4NSI+DQorICAgIDxpY29uRW50cnkNCisgICAgICAgIHhtaTppZD0iX1F0OWRUY3Y0RWVTNUJwRTNoT2JseXciDQorICAgICAgICBpY29uUGF0aD0iL2ljb25zL2Z1bGwvb2JqMTYvQ2xhc3MuZ2lmIg0KKyAgICAgICAgYnVuZGxlSWQ9Im9yZy5lY2xpcHNlLnVtbDIudW1sLmVkaXQiLz4NCisgICAgPHNwZWNpYWxpemVkVHlwZXNJRD5vcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuUmVxdWlyZW1lbnQ8L3NwZWNpYWxpemVkVHlwZXNJRD4NCisgICAgPHNwZWNpYWxpemVkVHlwZXNJRD5vcmcuZWNsaXBzZS5wYXB5cnVzLnVtbC5kaWFncmFtLmNvbXBvc2l0ZS5DbGFzc18zMDg1PC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICA8L2VsZW1lbnRUeXBlQ29uZmlndXJhdGlvbnM+DQorICA8ZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucw0KKyAgICAgIHhzaTp0eXBlPSJlbGVtZW50dHlwZXNjb25maWd1cmF0aW9uczpTcGVjaWFsaXphdGlvblR5cGVDb25maWd1cmF0aW9uIg0KKyAgICAgIHhtaTppZD0iX1F0OWRUc3Y0RWVTNUJwRTNoT2JseXciDQorICAgICAgbmFtZT0iUmVxdWlyZW1lbnQgKDIwNzMpIg0KKyAgICAgIGlkZW50aWZpZXI9Im9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5SZXF1aXJlbWVudF8yMDczIg0KKyAgICAgIGhpbnQ9IjIwNzMiPg0KKyAgICA8aWNvbkVudHJ5DQorICAgICAgICB4bWk6aWQ9Il9RdDlkVDh2NEVlUzVCcEUzaE9ibHl3Ig0KKyAgICAgICAgaWNvblBhdGg9Ii9pY29ucy9mdWxsL29iajE2L0NsYXNzLmdpZiINCisgICAgICAgIGJ1bmRsZUlkPSJvcmcuZWNsaXBzZS51bWwyLnVtbC5lZGl0Ii8+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LlJlcXVpcmVtZW50PC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy51bWwuZGlhZ3JhbS5jb21wb3NpdGUuQ2xhc3NfMjA3Mzwvc3BlY2lhbGl6ZWRUeXBlc0lEPg0KKyAgPC9lbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zPg0KKyAgPGVsZW1lbnRUeXBlQ29uZmlndXJhdGlvbnMNCisgICAgICB4c2k6dHlwZT0iZWxlbWVudHR5cGVzY29uZmlndXJhdGlvbnM6U3BlY2lhbGl6YXRpb25UeXBlQ29uZmlndXJhdGlvbiINCisgICAgICB4bWk6aWQ9Il9RdDlkVU12NEVlUzVCcEUzaE9ibHl3Ig0KKyAgICAgIG5hbWU9IlZlcmlmeSBBYnN0cmFjdGlvbiINCisgICAgICBpZGVudGlmaWVyPSJvcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuVmVyaWZ5X0Fic3RyYWN0aW9uXzQwMDciDQorICAgICAgaGludD0iNDAwNyI+DQorICAgIDxpY29uRW50cnkNCisgICAgICAgIHhtaTppZD0iX1F0OWRVY3Y0RWVTNUJwRTNoT2JseXciDQorICAgICAgICBpY29uUGF0aD0iL2ljb25zL2Z1bGwvb2JqMTYvQWJzdHJhY3Rpb24uZ2lmIg0KKyAgICAgICAgYnVuZGxlSWQ9Im9yZy5lY2xpcHNlLnVtbDIudW1sLmVkaXQiLz4NCisgICAgPHNwZWNpYWxpemVkVHlwZXNJRD5vcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuVmVyaWZ5X0Fic3RyYWN0aW9uPC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy51bWwuZGlhZ3JhbS5jb21wb3NpdGUuQWJzdHJhY3Rpb25fNDAwNzwvc3BlY2lhbGl6ZWRUeXBlc0lEPg0KKyAgPC9lbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zPg0KKyAgPGVsZW1lbnRUeXBlQ29uZmlndXJhdGlvbnMNCisgICAgICB4c2k6dHlwZT0iZWxlbWVudHR5cGVzY29uZmlndXJhdGlvbnM6U3BlY2lhbGl6YXRpb25UeXBlQ29uZmlndXJhdGlvbiINCisgICAgICB4bWk6aWQ9Il9RdDlkVXN2NEVlUzVCcEUzaE9ibHl3Ig0KKyAgICAgIG5hbWU9IlRyYWNlIEFic3RyYWN0aW9uIg0KKyAgICAgIGlkZW50aWZpZXI9Im9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5UcmFjZV9BYnN0cmFjdGlvbl80MDA3Ig0KKyAgICAgIGhpbnQ9IjQwMDciPg0KKyAgICA8aWNvbkVudHJ5DQorICAgICAgICB4bWk6aWQ9Il9RdDlkVTh2NEVlUzVCcEUzaE9ibHl3Ig0KKyAgICAgICAgaWNvblBhdGg9Ii9pY29ucy9mdWxsL29iajE2L0Fic3RyYWN0aW9uLmdpZiINCisgICAgICAgIGJ1bmRsZUlkPSJvcmcuZWNsaXBzZS51bWwyLnVtbC5lZGl0Ii8+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LlRyYWNlX0Fic3RyYWN0aW9uPC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy51bWwuZGlhZ3JhbS5jb21wb3NpdGUuQWJzdHJhY3Rpb25fNDAwNzwvc3BlY2lhbGl6ZWRUeXBlc0lEPg0KKyAgPC9lbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zPg0KKyAgPGVsZW1lbnRUeXBlQ29uZmlndXJhdGlvbnMNCisgICAgICB4c2k6dHlwZT0iZWxlbWVudHR5cGVzY29uZmlndXJhdGlvbnM6U3BlY2lhbGl6YXRpb25UeXBlQ29uZmlndXJhdGlvbiINCisgICAgICB4bWk6aWQ9Il9RdDlkVk12NEVlUzVCcEUzaE9ibHl3Ig0KKyAgICAgIG5hbWU9IlJlZmluZSBBYnN0cmFjdGlvbiINCisgICAgICBpZGVudGlmaWVyPSJvcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuUmVmaW5lX0Fic3RyYWN0aW9uXzQwMDciDQorICAgICAgaGludD0iNDAwNyI+DQorICAgIDxpY29uRW50cnkNCisgICAgICAgIHhtaTppZD0iX1F0OWRWY3Y0RWVTNUJwRTNoT2JseXciDQorICAgICAgICBpY29uUGF0aD0iL2ljb25zL2Z1bGwvb2JqMTYvQWJzdHJhY3Rpb24uZ2lmIg0KKyAgICAgICAgYnVuZGxlSWQ9Im9yZy5lY2xpcHNlLnVtbDIudW1sLmVkaXQiLz4NCisgICAgPHNwZWNpYWxpemVkVHlwZXNJRD5vcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuUmVmaW5lX0Fic3RyYWN0aW9uPC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy51bWwuZGlhZ3JhbS5jb21wb3NpdGUuQWJzdHJhY3Rpb25fNDAwNzwvc3BlY2lhbGl6ZWRUeXBlc0lEPg0KKyAgPC9lbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zPg0KKyAgPGVsZW1lbnRUeXBlQ29uZmlndXJhdGlvbnMNCisgICAgICB4c2k6dHlwZT0iZWxlbWVudHR5cGVzY29uZmlndXJhdGlvbnM6U3BlY2lhbGl6YXRpb25UeXBlQ29uZmlndXJhdGlvbiINCisgICAgICB4bWk6aWQ9Il9RdDlkVnN2NEVlUzVCcEUzaE9ibHl3Ig0KKyAgICAgIG5hbWU9IkZsb3dQb3J0Ig0KKyAgICAgIGlkZW50aWZpZXI9Im9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5GbG93UG9ydF8zMDY5Ig0KKyAgICAgIGhpbnQ9IjMwNjkiPg0KKyAgICA8aWNvbkVudHJ5DQorICAgICAgICB4bWk6aWQ9Il9RdDlkVjh2NEVlUzVCcEUzaE9ibHl3Ig0KKyAgICAgICAgaWNvblBhdGg9Ii9pY29ucy9mdWxsL29iajE2L1BvcnQuZ2lmIg0KKyAgICAgICAgYnVuZGxlSWQ9Im9yZy5lY2xpcHNlLnVtbDIudW1sLmVkaXQiLz4NCisgICAgPHNwZWNpYWxpemVkVHlwZXNJRD5vcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuRmxvd1BvcnQ8L3NwZWNpYWxpemVkVHlwZXNJRD4NCisgICAgPHNwZWNpYWxpemVkVHlwZXNJRD5vcmcuZWNsaXBzZS5wYXB5cnVzLnVtbC5kaWFncmFtLmNvbXBvc2l0ZS5Qb3J0XzMwNjk8L3NwZWNpYWxpemVkVHlwZXNJRD4NCisgIDwvZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucz4NCisgIDxlbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zDQorICAgICAgeHNpOnR5cGU9ImVsZW1lbnR0eXBlc2NvbmZpZ3VyYXRpb25zOlNwZWNpYWxpemF0aW9uVHlwZUNvbmZpZ3VyYXRpb24iDQorICAgICAgeG1pOmlkPSJfUXQ5ZFdNdjRFZVM1QnBFM2hPYmx5dyINCisgICAgICBuYW1lPSJGbG93U3BlY2lmaWNhdGlvbiAoMzA4NykiDQorICAgICAgaWRlbnRpZmllcj0ib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LkZsb3dTcGVjaWZpY2F0aW9uXzMwODciDQorICAgICAgaGludD0iMzA4NyI+DQorICAgIDxpY29uRW50cnkNCisgICAgICAgIHhtaTppZD0iX1F0OWRXY3Y0RWVTNUJwRTNoT2JseXciDQorICAgICAgICBpY29uUGF0aD0iL2ljb25zL2Z1bGwvb2JqMTYvSW50ZXJmYWNlLmdpZiINCisgICAgICAgIGJ1bmRsZUlkPSJvcmcuZWNsaXBzZS51bWwyLnVtbC5lZGl0Ii8+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LkZsb3dTcGVjaWZpY2F0aW9uPC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy51bWwuZGlhZ3JhbS5jb21wb3NpdGUuSW50ZXJmYWNlXzMwODc8L3NwZWNpYWxpemVkVHlwZXNJRD4NCisgIDwvZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucz4NCisgIDxlbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zDQorICAgICAgeHNpOnR5cGU9ImVsZW1lbnR0eXBlc2NvbmZpZ3VyYXRpb25zOlNwZWNpYWxpemF0aW9uVHlwZUNvbmZpZ3VyYXRpb24iDQorICAgICAgeG1pOmlkPSJfUXQ5ZFdzdjRFZVM1QnBFM2hPYmx5dyINCisgICAgICBuYW1lPSJGbG93U3BlY2lmaWNhdGlvbiAoMjA3NikiDQorICAgICAgaWRlbnRpZmllcj0ib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LkZsb3dTcGVjaWZpY2F0aW9uXzIwNzYiDQorICAgICAgaGludD0iMjA3NiI+DQorICAgIDxpY29uRW50cnkNCisgICAgICAgIHhtaTppZD0iX1F0OWRXOHY0RWVTNUJwRTNoT2JseXciDQorICAgICAgICBpY29uUGF0aD0iL2ljb25zL2Z1bGwvb2JqMTYvSW50ZXJmYWNlLmdpZiINCisgICAgICAgIGJ1bmRsZUlkPSJvcmcuZWNsaXBzZS51bWwyLnVtbC5lZGl0Ii8+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LkZsb3dTcGVjaWZpY2F0aW9uPC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy51bWwuZGlhZ3JhbS5jb21wb3NpdGUuSW50ZXJmYWNlXzIwNzY8L3NwZWNpYWxpemVkVHlwZXNJRD4NCisgIDwvZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucz4NCisgIDxlbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zDQorICAgICAgeHNpOnR5cGU9ImVsZW1lbnR0eXBlc2NvbmZpZ3VyYXRpb25zOlNwZWNpYWxpemF0aW9uVHlwZUNvbmZpZ3VyYXRpb24iDQorICAgICAgeG1pOmlkPSJfTklCU1VPNWxFZVNOQjlRMEQ1Z0ppQSINCisgICAgICBuYW1lPSJDb25zdHJhaW50UHJvcGVydHkgKDMwNzApIg0KKyAgICAgIGlkZW50aWZpZXI9Im9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5Db25zdHJhaW50UHJvcGVydHlfMzA3MCINCisgICAgICBoaW50PSIzMDcwIj4NCisgICAgPGljb25FbnRyeQ0KKyAgICAgICAgeG1pOmlkPSJfTklCU1VlNWxFZVNOQjlRMEQ1Z0ppQSINCisgICAgICAgIGljb25QYXRoPSIvaWNvbnMvZnVsbC9vYmoxNi9Qcm9wZXJ0eS5naWYiDQorICAgICAgICBidW5kbGVJZD0ib3JnLmVjbGlwc2UudW1sMi51bWwuZWRpdCIvPg0KKyAgICA8c3BlY2lhbGl6ZWRUeXBlc0lEPm9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5Db25zdHJhaW50UHJvcGVydHk8L3NwZWNpYWxpemVkVHlwZXNJRD4NCisgICAgPHNwZWNpYWxpemVkVHlwZXNJRD5vcmcuZWNsaXBzZS5wYXB5cnVzLnVtbC5kaWFncmFtLmNvbXBvc2l0ZS5Qcm9wZXJ0eV8zMDcwPC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICAgIDxlZGl0SGVscGVyQWR2aWNlQ29uZmlndXJhdGlvbg0KKyAgICAgICAgeG1pOmlkPSJfOFlmX29QZnBFZVN4a3VlSGNGdzFsdyINCisgICAgICAgIG5hbWU9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kaWFncmFtLmNvbW1vbi5hZHZpY2VzLkNvbnN0cmFpbnRQcm9wZXJ0eUdyYXBoaWNhbEVkaXRIZWxwZXJBZHZpY2UiDQorICAgICAgICBpZGVudGlmaWVyPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGlhZ3JhbS5jb21tb24uYWR2aWNlcy5Db25zdHJhaW50UHJvcGVydHlHcmFwaGljYWxFZGl0SGVscGVyQWR2aWNlIg0KKyAgICAgICAgZWRpdEhlbHBlckFkdmljZUNsYXNzTmFtZT0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRpYWdyYW0uY29tbW9uLmFkdmljZXMuQ29uc3RyYWludFByb3BlcnR5R3JhcGhpY2FsRWRpdEhlbHBlckFkdmljZSIvPg0KKyAgPC9lbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zPg0KKyAgPGVsZW1lbnRUeXBlQ29uZmlndXJhdGlvbnMNCisgICAgICB4c2k6dHlwZT0iZWxlbWVudHR5cGVzY29uZmlndXJhdGlvbnM6U3BlY2lhbGl6YXRpb25UeXBlQ29uZmlndXJhdGlvbiINCisgICAgICB4bWk6aWQ9Il9OSUJTVXU1bEVlU05COVEwRDVnSmlBIg0KKyAgICAgIG5hbWU9IkNvbnN0cmFpbnRQcm9wZXJ0eSAoMzEwMSkiDQorICAgICAgaWRlbnRpZmllcj0ib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LkNvbnN0cmFpbnRQcm9wZXJ0eV8zMTAxIg0KKyAgICAgIGhpbnQ9IjMxMDEiPg0KKyAgICA8aWNvbkVudHJ5DQorICAgICAgICB4bWk6aWQ9Il9OSUJTVS01bEVlU05COVEwRDVnSmlBIg0KKyAgICAgICAgaWNvblBhdGg9Ii9pY29ucy9mdWxsL29iajE2L1Byb3BlcnR5LmdpZiINCisgICAgICAgIGJ1bmRsZUlkPSJvcmcuZWNsaXBzZS51bWwyLnVtbC5lZGl0Ii8+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LkNvbnN0cmFpbnRQcm9wZXJ0eTwvc3BlY2lhbGl6ZWRUeXBlc0lEPg0KKyAgICA8c3BlY2lhbGl6ZWRUeXBlc0lEPm9yZy5lY2xpcHNlLnBhcHlydXMudW1sLmRpYWdyYW0uY29tcG9zaXRlLlByb3BlcnR5XzMxMDE8L3NwZWNpYWxpemVkVHlwZXNJRD4NCisgICAgPGVkaXRIZWxwZXJBZHZpY2VDb25maWd1cmF0aW9uDQorICAgICAgICB4bWk6aWQ9Il9KT3VyTVBmcUVlU3hrdWVIY0Z3MWx3Ig0KKyAgICAgICAgbmFtZT0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRpYWdyYW0uY29tbW9uLmFkdmljZXMuQ29uc3RyYWludFByb3BlcnR5R3JhcGhpY2FsRWRpdEhlbHBlckFkdmljZSINCisgICAgICAgIGlkZW50aWZpZXI9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kaWFncmFtLmNvbW1vbi5hZHZpY2VzLkNvbnN0cmFpbnRQcm9wZXJ0eUdyYXBoaWNhbEVkaXRIZWxwZXJBZHZpY2UiDQorICAgICAgICBlZGl0SGVscGVyQWR2aWNlQ2xhc3NOYW1lPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGlhZ3JhbS5jb21tb24uYWR2aWNlcy5Db25zdHJhaW50UHJvcGVydHlHcmFwaGljYWxFZGl0SGVscGVyQWR2aWNlIi8+DQorICA8L2VsZW1lbnRUeXBlQ29uZmlndXJhdGlvbnM+DQorICA8ZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucw0KKyAgICAgIHhzaTp0eXBlPSJlbGVtZW50dHlwZXNjb25maWd1cmF0aW9uczpTcGVjaWFsaXphdGlvblR5cGVDb25maWd1cmF0aW9uIg0KKyAgICAgIHhtaTppZD0iX1M1WXd3Ql81RWVXcDlySjJnbXc1OUEiDQorICAgICAgbmFtZT0iQWN0b3JQYXJ0Ig0KKyAgICAgIGlkZW50aWZpZXI9Im9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5BY3RvclBhcnRfMzA3MCINCisgICAgICBoaW50PSIzMDcwIj4NCisgICAgPGljb25FbnRyeQ0KKyAgICAgICAgeG1pOmlkPSJfUzVZd3dSXzVFZVdwOXJKMmdtdzU5QSINCisgICAgICAgIGljb25QYXRoPSIvaWNvbnMvZnVsbC9vYmoxNi9Qcm9wZXJ0eS5naWYiDQorICAgICAgICBidW5kbGVJZD0ib3JnLmVjbGlwc2UudW1sMi51bWwuZWRpdCIvPg0KKyAgICA8c3BlY2lhbGl6ZWRUeXBlc0lEPm9yZy5lY2xpcHNlLnBhcHlydXMudW1sLmRpYWdyYW0uY29tcG9zaXRlLlByb3BlcnR5XzMxMDE8L3NwZWNpYWxpemVkVHlwZXNJRD4NCisgICAgPHNwZWNpYWxpemVkVHlwZXNJRD5vcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuQWN0b3JQYXJ0PC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICAgIDxlZGl0SGVscGVyQWR2aWNlQ29uZmlndXJhdGlvbg0KKyAgICAgICAgeG1pOmlkPSJfNXdpQWdCXzVFZVdwOXJKMmdtdzU5QSINCisgICAgICAgIG5hbWU9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kaWFncmFtLmNvbW1vbi5hZHZpY2VzLkFjdG9yUGFydEdyYXBoaWNhbEVkaXRIZWxwZXJBZHZpY2UiDQorICAgICAgICBpZGVudGlmaWVyPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGlhZ3JhbS5jb21tb24uYWR2aWNlcy5BY3RvclBhcnRHcmFwaGljYWxFZGl0SGVscGVyQWR2aWNlIg0KKyAgICAgICAgZWRpdEhlbHBlckFkdmljZUNsYXNzTmFtZT0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRpYWdyYW0uY29tbW9uLmFkdmljZXMuQWN0b3JQYXJ0R3JhcGhpY2FsRWRpdEhlbHBlckFkdmljZSIvPg0KKyAgPC9lbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zPg0KKyAgPGFkdmljZUJpbmRpbmdzQ29uZmlndXJhdGlvbnMNCisgICAgICB4c2k6dHlwZT0iYXBwbHlzdGVyZW90eXBlYWR2aWNlY29uZmlndXJhdGlvbjpBcHBseVN0ZXJlb3R5cGVBZHZpY2VDb25maWd1cmF0aW9uIg0KKyAgICAgIHhtaTppZD0iX1F0OWRhc3Y0RWVTNUJwRTNoT2JseXciDQorICAgICAgbmFtZT0iQXBwbHkgVmlldyINCisgICAgICBpZGVudGlmaWVyPSJvcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQudmlld19Db21wb3NpdGVTdHJ1Y3R1cmUiDQorICAgICAgdGFyZ2V0PSJfUXQ5ZEpjdjRFZVM1QnBFM2hPYmx5dyI+DQorICAgIDxzdGVyZW90eXBlc1RvQXBwbHkNCisgICAgICAgIHhtaTppZD0iX1F0OWRhOHY0RWVTNUJwRTNoT2JseXciDQorICAgICAgICBzdGVyZW90eXBlUXVhbGlmaWVkTmFtZT0iU3lzTUw6Ok1vZGVsRWxlbWVudHM6OlZpZXciDQorICAgICAgICB1cGRhdGVOYW1lPSJ0cnVlIj4NCisgICAgICA8cmVxdWlyZWRQcm9maWxlcz5TeXNNTDwvcmVxdWlyZWRQcm9maWxlcz4NCisgICAgPC9zdGVyZW90eXBlc1RvQXBwbHk+DQorICA8L2FkdmljZUJpbmRpbmdzQ29uZmlndXJhdGlvbnM+DQorPC9lbGVtZW50dHlwZXNjb25maWd1cmF0aW9uczpFbGVtZW50VHlwZVNldENvbmZpZ3VyYXRpb24+DQpkaWZmIC0tZ2l0IGEvZGlhZ3JhbS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGlhZ3JhbS5jb21tb24vcmVzb3VyY2VzL1N5c01MMTRVTUxDbGFzc0RpYWdyYW0uZWxlbWVudHR5cGVzY29uZmlndXJhdGlvbnMgYi9kaWFncmFtL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kaWFncmFtLmNvbW1vbi9yZXNvdXJjZXMvU3lzTUwxNFVNTENsYXNzRGlhZ3JhbS5lbGVtZW50dHlwZXNjb25maWd1cmF0aW9ucwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YWNiMDQ3Ci0tLSAvZGV2L251bGwKKysrIGIvZGlhZ3JhbS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGlhZ3JhbS5jb21tb24vcmVzb3VyY2VzL1N5c01MMTRVTUxDbGFzc0RpYWdyYW0uZWxlbWVudHR5cGVzY29uZmlndXJhdGlvbnMKQEAgLTAsMCArMSwyOTI2IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJBU0NJSSI/Pg0KKzxlbGVtZW50dHlwZXNjb25maWd1cmF0aW9uczpFbGVtZW50VHlwZVNldENvbmZpZ3VyYXRpb24NCisgICAgeG1pOnZlcnNpb249IjIuMCINCisgICAgeG1sbnM6eG1pPSJodHRwOi8vd3d3Lm9tZy5vcmcvWE1JIg0KKyAgICB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIg0KKyAgICB4bWxuczplbGVtZW50dHlwZXNjb25maWd1cmF0aW9ucz0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9wYXB5cnVzL2luZnJhL2VsZW1lbnR0eXBlc2NvbmZpZ3VyYXRpb25zLzEuMCINCisgICAgeG1sbnM6c3RlcmVvdHlwZWFwcGxpY2F0aW9ubWF0Y2hlcmNvbmZpZ3VyYXRpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvcGF5cnVzL2VsZW1lbnR0eXBlc2NvbmZpZ3VyYXRpb25zL3VtbC9zdGVyZW90eXBlbWF0Y2hlcmNvbmZpZ3VyYXRpb24iDQorICAgIHhtaTppZD0iX0xvS1hBTUpRRWVTWDlNb0tNQlY1R3ciDQorICAgIG5hbWU9IlN5c01MIg0KKyAgICBpZGVudGlmaWVyPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLmVsZW1lbnRUeXBlcyINCisgICAgbWV0YW1vZGVsTnNVUkk9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvdW1sMi81LjAuMC9VTUwiPg0KKyAgPGVsZW1lbnRUeXBlQ29uZmlndXJhdGlvbnMNCisgICAgICB4c2k6dHlwZT0iZWxlbWVudHR5cGVzY29uZmlndXJhdGlvbnM6U3BlY2lhbGl6YXRpb25UeXBlQ29uZmlndXJhdGlvbiINCisgICAgICB4bWk6aWQ9Il9Mb0tYQWNKUUVlU1g5TW9LTUJWNUd3Ig0KKyAgICAgIG5hbWU9IlZhbHVlVHlwZSAoMjAxMCkiDQorICAgICAgaWRlbnRpZmllcj0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5WYWx1ZVR5cGVfMjAxMCINCisgICAgICBoaW50PSIyMDEwIj4NCisgICAgPGljb25FbnRyeQ0KKyAgICAgICAgeG1pOmlkPSJfTG9LWEFzSlFFZVNYOU1vS01CVjVHdyINCisgICAgICAgIGljb25QYXRoPSIvaWNvbnMvZnVsbC9vYmoxNi9EYXRhVHlwZS5naWYiDQorICAgICAgICBidW5kbGVJZD0ib3JnLmVjbGlwc2UudW1sMi51bWwuZWRpdCIvPg0KKyAgICA8c3BlY2lhbGl6ZWRUeXBlc0lEPm9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5WYWx1ZVR5cGU8L3NwZWNpYWxpemVkVHlwZXNJRD4NCisgICAgPHNwZWNpYWxpemVkVHlwZXNJRD5vcmcuZWNsaXBzZS5wYXB5cnVzLnVtbC5kaWFncmFtLmNsYXp6LkRhdGFUeXBlXzIwMTA8L3NwZWNpYWxpemVkVHlwZXNJRD4NCisgICAgPG1hdGNoZXJDb25maWd1cmF0aW9uDQorICAgICAgICB4c2k6dHlwZT0ic3RlcmVvdHlwZWFwcGxpY2F0aW9ubWF0Y2hlcmNvbmZpZ3VyYXRpb246U3RlcmVvdHlwZUFwcGxpY2F0aW9uTWF0Y2hlckNvbmZpZ3VyYXRpb24iDQorICAgICAgICB4bWk6aWQ9Il9Mb0tYQThKUUVlU1g5TW9LTUJWNUd3Ij4NCisgICAgICA8c3RlcmVvdHlwZXNRdWFsaWZpZWROYW1lcz5TeXNNTDo6QmxvY2tzOjpWYWx1ZVR5cGU8L3N0ZXJlb3R5cGVzUXVhbGlmaWVkTmFtZXM+DQorICAgIDwvbWF0Y2hlckNvbmZpZ3VyYXRpb24+DQorICA8L2VsZW1lbnRUeXBlQ29uZmlndXJhdGlvbnM+DQorICA8ZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucw0KKyAgICAgIHhzaTp0eXBlPSJlbGVtZW50dHlwZXNjb25maWd1cmF0aW9uczpTcGVjaWFsaXphdGlvblR5cGVDb25maWd1cmF0aW9uIg0KKyAgICAgIHhtaTppZD0iX0xvS1hCTUpRRWVTWDlNb0tNQlY1R3ciDQorICAgICAgbmFtZT0iVmFsdWVUeXBlICgzMDI3KSINCisgICAgICBpZGVudGlmaWVyPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLlZhbHVlVHlwZV8zMDI3Ig0KKyAgICAgIGhpbnQ9IjMwMjciPg0KKyAgICA8aWNvbkVudHJ5DQorICAgICAgICB4bWk6aWQ9Il9Mb0tYQmNKUUVlU1g5TW9LTUJWNUd3Ig0KKyAgICAgICAgaWNvblBhdGg9Ii9pY29ucy9mdWxsL29iajE2L0RhdGFUeXBlLmdpZiINCisgICAgICAgIGJ1bmRsZUlkPSJvcmcuZWNsaXBzZS51bWwyLnVtbC5lZGl0Ii8+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LlZhbHVlVHlwZTwvc3BlY2lhbGl6ZWRUeXBlc0lEPg0KKyAgICA8c3BlY2lhbGl6ZWRUeXBlc0lEPm9yZy5lY2xpcHNlLnBhcHlydXMudW1sLmRpYWdyYW0uY2xhenouRGF0YVR5cGVfMzAyNzwvc3BlY2lhbGl6ZWRUeXBlc0lEPg0KKyAgICA8bWF0Y2hlckNvbmZpZ3VyYXRpb24NCisgICAgICAgIHhzaTp0eXBlPSJzdGVyZW90eXBlYXBwbGljYXRpb25tYXRjaGVyY29uZmlndXJhdGlvbjpTdGVyZW90eXBlQXBwbGljYXRpb25NYXRjaGVyQ29uZmlndXJhdGlvbiINCisgICAgICAgIHhtaTppZD0iX0xvS1hCc0pRRWVTWDlNb0tNQlY1R3ciPg0KKyAgICAgIDxzdGVyZW90eXBlc1F1YWxpZmllZE5hbWVzPlN5c01MOjpCbG9ja3M6OlZhbHVlVHlwZTwvc3RlcmVvdHlwZXNRdWFsaWZpZWROYW1lcz4NCisgICAgPC9tYXRjaGVyQ29uZmlndXJhdGlvbj4NCisgIDwvZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucz4NCisgIDxlbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zDQorICAgICAgeHNpOnR5cGU9ImVsZW1lbnR0eXBlc2NvbmZpZ3VyYXRpb25zOlNwZWNpYWxpemF0aW9uVHlwZUNvbmZpZ3VyYXRpb24iDQorICAgICAgeG1pOmlkPSJfTG9LWEI4SlFFZVNYOU1vS01CVjVHdyINCisgICAgICBuYW1lPSJWYWx1ZVR5cGUgKDMwNDMpIg0KKyAgICAgIGlkZW50aWZpZXI9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuVmFsdWVUeXBlXzMwNDMiDQorICAgICAgaGludD0iMzA0MyI+DQorICAgIDxpY29uRW50cnkNCisgICAgICAgIHhtaTppZD0iX0xvS1hDTUpRRWVTWDlNb0tNQlY1R3ciDQorICAgICAgICBpY29uUGF0aD0iL2ljb25zL2Z1bGwvb2JqMTYvRGF0YVR5cGUuZ2lmIg0KKyAgICAgICAgYnVuZGxlSWQ9Im9yZy5lY2xpcHNlLnVtbDIudW1sLmVkaXQiLz4NCisgICAgPHNwZWNpYWxpemVkVHlwZXNJRD5vcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuVmFsdWVUeXBlPC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy51bWwuZGlhZ3JhbS5jbGF6ei5EYXRhVHlwZV8zMDQzPC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICAgIDxtYXRjaGVyQ29uZmlndXJhdGlvbg0KKyAgICAgICAgeHNpOnR5cGU9InN0ZXJlb3R5cGVhcHBsaWNhdGlvbm1hdGNoZXJjb25maWd1cmF0aW9uOlN0ZXJlb3R5cGVBcHBsaWNhdGlvbk1hdGNoZXJDb25maWd1cmF0aW9uIg0KKyAgICAgICAgeG1pOmlkPSJfTG9LWENjSlFFZVNYOU1vS01CVjVHdyI+DQorICAgICAgPHN0ZXJlb3R5cGVzUXVhbGlmaWVkTmFtZXM+U3lzTUw6OkJsb2Nrczo6VmFsdWVUeXBlPC9zdGVyZW90eXBlc1F1YWxpZmllZE5hbWVzPg0KKyAgICA8L21hdGNoZXJDb25maWd1cmF0aW9uPg0KKyAgPC9lbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zPg0KKyAgPGVsZW1lbnRUeXBlQ29uZmlndXJhdGlvbnMNCisgICAgICB4c2k6dHlwZT0iZWxlbWVudHR5cGVzY29uZmlndXJhdGlvbnM6U3BlY2lhbGl6YXRpb25UeXBlQ29uZmlndXJhdGlvbiINCisgICAgICB4bWk6aWQ9Il9Mb0tYQ3NKUUVlU1g5TW9LTUJWNUd3Ig0KKyAgICAgIG5hbWU9IlZhbHVlVHlwZSAoMzA0NCkiDQorICAgICAgaWRlbnRpZmllcj0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5WYWx1ZVR5cGVfMzA0NCINCisgICAgICBoaW50PSIzMDQ0Ij4NCisgICAgPGljb25FbnRyeQ0KKyAgICAgICAgeG1pOmlkPSJfTG9LWEM4SlFFZVNYOU1vS01CVjVHdyINCisgICAgICAgIGljb25QYXRoPSIvaWNvbnMvZnVsbC9vYmoxNi9EYXRhVHlwZS5naWYiDQorICAgICAgICBidW5kbGVJZD0ib3JnLmVjbGlwc2UudW1sMi51bWwuZWRpdCIvPg0KKyAgICA8c3BlY2lhbGl6ZWRUeXBlc0lEPm9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5WYWx1ZVR5cGU8L3NwZWNpYWxpemVkVHlwZXNJRD4NCisgICAgPHNwZWNpYWxpemVkVHlwZXNJRD5vcmcuZWNsaXBzZS5wYXB5cnVzLnVtbC5kaWFncmFtLmNsYXp6LkRhdGFUeXBlXzMwNDQ8L3NwZWNpYWxpemVkVHlwZXNJRD4NCisgICAgPG1hdGNoZXJDb25maWd1cmF0aW9uDQorICAgICAgICB4c2k6dHlwZT0ic3RlcmVvdHlwZWFwcGxpY2F0aW9ubWF0Y2hlcmNvbmZpZ3VyYXRpb246U3RlcmVvdHlwZUFwcGxpY2F0aW9uTWF0Y2hlckNvbmZpZ3VyYXRpb24iDQorICAgICAgICB4bWk6aWQ9Il9Mb0tYRE1KUUVlU1g5TW9LTUJWNUd3Ij4NCisgICAgICA8c3RlcmVvdHlwZXNRdWFsaWZpZWROYW1lcz5TeXNNTDo6QmxvY2tzOjpWYWx1ZVR5cGU8L3N0ZXJlb3R5cGVzUXVhbGlmaWVkTmFtZXM+DQorICAgIDwvbWF0Y2hlckNvbmZpZ3VyYXRpb24+DQorICA8L2VsZW1lbnRUeXBlQ29uZmlndXJhdGlvbnM+DQorICA8ZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucw0KKyAgICAgIHhzaTp0eXBlPSJlbGVtZW50dHlwZXNjb25maWd1cmF0aW9uczpTcGVjaWFsaXphdGlvblR5cGVDb25maWd1cmF0aW9uIg0KKyAgICAgIHhtaTppZD0iX0xvS1hEY0pRRWVTWDlNb0tNQlY1R3ciDQorICAgICAgbmFtZT0iVmFsdWVUeXBlICgzMDQ1KSINCisgICAgICBpZGVudGlmaWVyPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLlZhbHVlVHlwZV8zMDQ1Ig0KKyAgICAgIGhpbnQ9IjMwNDUiPg0KKyAgICA8aWNvbkVudHJ5DQorICAgICAgICB4bWk6aWQ9Il9Mb0tYRHNKUUVlU1g5TW9LTUJWNUd3Ig0KKyAgICAgICAgaWNvblBhdGg9Ii9pY29ucy9mdWxsL29iajE2L0RhdGFUeXBlLmdpZiINCisgICAgICAgIGJ1bmRsZUlkPSJvcmcuZWNsaXBzZS51bWwyLnVtbC5lZGl0Ii8+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LlZhbHVlVHlwZTwvc3BlY2lhbGl6ZWRUeXBlc0lEPg0KKyAgICA8c3BlY2lhbGl6ZWRUeXBlc0lEPm9yZy5lY2xpcHNlLnBhcHlydXMudW1sLmRpYWdyYW0uY2xhenouRGF0YVR5cGVfMzA0NTwvc3BlY2lhbGl6ZWRUeXBlc0lEPg0KKyAgICA8bWF0Y2hlckNvbmZpZ3VyYXRpb24NCisgICAgICAgIHhzaTp0eXBlPSJzdGVyZW90eXBlYXBwbGljYXRpb25tYXRjaGVyY29uZmlndXJhdGlvbjpTdGVyZW90eXBlQXBwbGljYXRpb25NYXRjaGVyQ29uZmlndXJhdGlvbiINCisgICAgICAgIHhtaTppZD0iX0xvS1hEOEpRRWVTWDlNb0tNQlY1R3ciPg0KKyAgICAgIDxzdGVyZW90eXBlc1F1YWxpZmllZE5hbWVzPlN5c01MOjpCbG9ja3M6OlZhbHVlVHlwZTwvc3RlcmVvdHlwZXNRdWFsaWZpZWROYW1lcz4NCisgICAgPC9tYXRjaGVyQ29uZmlndXJhdGlvbj4NCisgIDwvZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucz4NCisgIDxlbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zDQorICAgICAgeHNpOnR5cGU9ImVsZW1lbnR0eXBlc2NvbmZpZ3VyYXRpb25zOlNwZWNpYWxpemF0aW9uVHlwZUNvbmZpZ3VyYXRpb24iDQorICAgICAgeG1pOmlkPSJfTG9LWEVNSlFFZVNYOU1vS01CVjVHdyINCisgICAgICBuYW1lPSJEaXN0cmlidXRlZFByb3BlcnR5ICgzMDAyKSINCisgICAgICBpZGVudGlmaWVyPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLkRpc3RyaWJ1dGVkUHJvcGVydHlfMzAwMiINCisgICAgICBoaW50PSIzMDAyIj4NCisgICAgPGljb25FbnRyeQ0KKyAgICAgICAgeG1pOmlkPSJfTG9LWEVjSlFFZVNYOU1vS01CVjVHdyINCisgICAgICAgIGljb25QYXRoPSIvaWNvbnMvZnVsbC9vYmoxNi9Qcm9wZXJ0eS5naWYiDQorICAgICAgICBidW5kbGVJZD0ib3JnLmVjbGlwc2UudW1sMi51bWwuZWRpdCIvPg0KKyAgICA8c3BlY2lhbGl6ZWRUeXBlc0lEPm9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5EaXN0cmlidXRlZFByb3BlcnR5PC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy51bWwuZGlhZ3JhbS5jbGF6ei5Qcm9wZXJ0eV8zMDAyPC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICAgIDxtYXRjaGVyQ29uZmlndXJhdGlvbg0KKyAgICAgICAgeHNpOnR5cGU9InN0ZXJlb3R5cGVhcHBsaWNhdGlvbm1hdGNoZXJjb25maWd1cmF0aW9uOlN0ZXJlb3R5cGVBcHBsaWNhdGlvbk1hdGNoZXJDb25maWd1cmF0aW9uIg0KKyAgICAgICAgeG1pOmlkPSJfTG9LWEVzSlFFZVNYOU1vS01CVjVHdyI+DQorICAgICAgPHN0ZXJlb3R5cGVzUXVhbGlmaWVkTmFtZXM+U3lzTUw6OkJsb2Nrczo6RGlzdHJpYnV0ZWRQcm9wZXJ0eTwvc3RlcmVvdHlwZXNRdWFsaWZpZWROYW1lcz4NCisgICAgPC9tYXRjaGVyQ29uZmlndXJhdGlvbj4NCisgIDwvZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucz4NCisgIDxlbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zDQorICAgICAgeHNpOnR5cGU9ImVsZW1lbnR0eXBlc2NvbmZpZ3VyYXRpb25zOlNwZWNpYWxpemF0aW9uVHlwZUNvbmZpZ3VyYXRpb24iDQorICAgICAgeG1pOmlkPSJfTG9LWEU4SlFFZVNYOU1vS01CVjVHdyINCisgICAgICBuYW1lPSJEaXN0cmlidXRlZFByb3BlcnR5ICgzMDA1KSINCisgICAgICBpZGVudGlmaWVyPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLkRpc3RyaWJ1dGVkUHJvcGVydHlfMzAwNSINCisgICAgICBoaW50PSIzMDA1Ij4NCisgICAgPGljb25FbnRyeQ0KKyAgICAgICAgeG1pOmlkPSJfTG9LWEZNSlFFZVNYOU1vS01CVjVHdyINCisgICAgICAgIGljb25QYXRoPSIvaWNvbnMvZnVsbC9vYmoxNi9Qcm9wZXJ0eS5naWYiDQorICAgICAgICBidW5kbGVJZD0ib3JnLmVjbGlwc2UudW1sMi51bWwuZWRpdCIvPg0KKyAgICA8c3BlY2lhbGl6ZWRUeXBlc0lEPm9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5EaXN0cmlidXRlZFByb3BlcnR5PC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy51bWwuZGlhZ3JhbS5jbGF6ei5Qcm9wZXJ0eV8zMDA1PC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICAgIDxtYXRjaGVyQ29uZmlndXJhdGlvbg0KKyAgICAgICAgeHNpOnR5cGU9InN0ZXJlb3R5cGVhcHBsaWNhdGlvbm1hdGNoZXJjb25maWd1cmF0aW9uOlN0ZXJlb3R5cGVBcHBsaWNhdGlvbk1hdGNoZXJDb25maWd1cmF0aW9uIg0KKyAgICAgICAgeG1pOmlkPSJfTG9LWEZjSlFFZVNYOU1vS01CVjVHdyI+DQorICAgICAgPHN0ZXJlb3R5cGVzUXVhbGlmaWVkTmFtZXM+U3lzTUw6OkJsb2Nrczo6RGlzdHJpYnV0ZWRQcm9wZXJ0eTwvc3RlcmVvdHlwZXNRdWFsaWZpZWROYW1lcz4NCisgICAgPC9tYXRjaGVyQ29uZmlndXJhdGlvbj4NCisgIDwvZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucz4NCisgIDxlbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zDQorICAgICAgeHNpOnR5cGU9ImVsZW1lbnR0eXBlc2NvbmZpZ3VyYXRpb25zOlNwZWNpYWxpemF0aW9uVHlwZUNvbmZpZ3VyYXRpb24iDQorICAgICAgeG1pOmlkPSJfTG9LWEZzSlFFZVNYOU1vS01CVjVHdyINCisgICAgICBuYW1lPSJEaXN0cmlidXRlZFByb3BlcnR5ICgzMDA2KSINCisgICAgICBpZGVudGlmaWVyPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLkRpc3RyaWJ1dGVkUHJvcGVydHlfMzAwNiINCisgICAgICBoaW50PSIzMDA2Ij4NCisgICAgPGljb25FbnRyeQ0KKyAgICAgICAgeG1pOmlkPSJfTG9LWEY4SlFFZVNYOU1vS01CVjVHdyINCisgICAgICAgIGljb25QYXRoPSIvaWNvbnMvZnVsbC9vYmoxNi9Qcm9wZXJ0eS5naWYiDQorICAgICAgICBidW5kbGVJZD0ib3JnLmVjbGlwc2UudW1sMi51bWwuZWRpdCIvPg0KKyAgICA8c3BlY2lhbGl6ZWRUeXBlc0lEPm9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5EaXN0cmlidXRlZFByb3BlcnR5PC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy51bWwuZGlhZ3JhbS5jbGF6ei5Qcm9wZXJ0eV8zMDA2PC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICAgIDxtYXRjaGVyQ29uZmlndXJhdGlvbg0KKyAgICAgICAgeHNpOnR5cGU9InN0ZXJlb3R5cGVhcHBsaWNhdGlvbm1hdGNoZXJjb25maWd1cmF0aW9uOlN0ZXJlb3R5cGVBcHBsaWNhdGlvbk1hdGNoZXJDb25maWd1cmF0aW9uIg0KKyAgICAgICAgeG1pOmlkPSJfTG9LWEdNSlFFZVNYOU1vS01CVjVHdyI+DQorICAgICAgPHN0ZXJlb3R5cGVzUXVhbGlmaWVkTmFtZXM+U3lzTUw6OkJsb2Nrczo6RGlzdHJpYnV0ZWRQcm9wZXJ0eTwvc3RlcmVvdHlwZXNRdWFsaWZpZWROYW1lcz4NCisgICAgPC9tYXRjaGVyQ29uZmlndXJhdGlvbj4NCisgIDwvZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucz4NCisgIDxlbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zDQorICAgICAgeHNpOnR5cGU9ImVsZW1lbnR0eXBlc2NvbmZpZ3VyYXRpb25zOlNwZWNpYWxpemF0aW9uVHlwZUNvbmZpZ3VyYXRpb24iDQorICAgICAgeG1pOmlkPSJfTG9LWEdjSlFFZVNYOU1vS01CVjVHdyINCisgICAgICBuYW1lPSJEaXN0cmlidXRlZFByb3BlcnR5ICgzMDEyKSINCisgICAgICBpZGVudGlmaWVyPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLkRpc3RyaWJ1dGVkUHJvcGVydHlfMzAxMiINCisgICAgICBoaW50PSIzMDEyIj4NCisgICAgPGljb25FbnRyeQ0KKyAgICAgICAgeG1pOmlkPSJfTG9LWEdzSlFFZVNYOU1vS01CVjVHdyINCisgICAgICAgIGljb25QYXRoPSIvaWNvbnMvZnVsbC9vYmoxNi9Qcm9wZXJ0eS5naWYiDQorICAgICAgICBidW5kbGVJZD0ib3JnLmVjbGlwc2UudW1sMi51bWwuZWRpdCIvPg0KKyAgICA8c3BlY2lhbGl6ZWRUeXBlc0lEPm9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5EaXN0cmlidXRlZFByb3BlcnR5PC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy51bWwuZGlhZ3JhbS5jbGF6ei5Qcm9wZXJ0eV8zMDEyPC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICAgIDxtYXRjaGVyQ29uZmlndXJhdGlvbg0KKyAgICAgICAgeHNpOnR5cGU9InN0ZXJlb3R5cGVhcHBsaWNhdGlvbm1hdGNoZXJjb25maWd1cmF0aW9uOlN0ZXJlb3R5cGVBcHBsaWNhdGlvbk1hdGNoZXJDb25maWd1cmF0aW9uIg0KKyAgICAgICAgeG1pOmlkPSJfTG9LWEc4SlFFZVNYOU1vS01CVjVHdyI+DQorICAgICAgPHN0ZXJlb3R5cGVzUXVhbGlmaWVkTmFtZXM+U3lzTUw6OkJsb2Nrczo6RGlzdHJpYnV0ZWRQcm9wZXJ0eTwvc3RlcmVvdHlwZXNRdWFsaWZpZWROYW1lcz4NCisgICAgPC9tYXRjaGVyQ29uZmlndXJhdGlvbj4NCisgIDwvZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucz4NCisgIDxlbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zDQorICAgICAgeHNpOnR5cGU9ImVsZW1lbnR0eXBlc2NvbmZpZ3VyYXRpb25zOlNwZWNpYWxpemF0aW9uVHlwZUNvbmZpZ3VyYXRpb24iDQorICAgICAgeG1pOmlkPSJfTG9LWEhNSlFFZVNYOU1vS01CVjVHdyINCisgICAgICBuYW1lPSJEaXN0cmlidXRlZFByb3BlcnR5ICgzMDE4KSINCisgICAgICBpZGVudGlmaWVyPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLkRpc3RyaWJ1dGVkUHJvcGVydHlfMzAxOCINCisgICAgICBoaW50PSIzMDE4Ij4NCisgICAgPGljb25FbnRyeQ0KKyAgICAgICAgeG1pOmlkPSJfTG9LWEhjSlFFZVNYOU1vS01CVjVHdyINCisgICAgICAgIGljb25QYXRoPSIvaWNvbnMvZnVsbC9vYmoxNi9Qcm9wZXJ0eS5naWYiDQorICAgICAgICBidW5kbGVJZD0ib3JnLmVjbGlwc2UudW1sMi51bWwuZWRpdCIvPg0KKyAgICA8c3BlY2lhbGl6ZWRUeXBlc0lEPm9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5EaXN0cmlidXRlZFByb3BlcnR5PC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy51bWwuZGlhZ3JhbS5jbGF6ei5Qcm9wZXJ0eV8zMDE4PC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICAgIDxtYXRjaGVyQ29uZmlndXJhdGlvbg0KKyAgICAgICAgeHNpOnR5cGU9InN0ZXJlb3R5cGVhcHBsaWNhdGlvbm1hdGNoZXJjb25maWd1cmF0aW9uOlN0ZXJlb3R5cGVBcHBsaWNhdGlvbk1hdGNoZXJDb25maWd1cmF0aW9uIg0KKyAgICAgICAgeG1pOmlkPSJfTG9LWEhzSlFFZVNYOU1vS01CVjVHdyI+DQorICAgICAgPHN0ZXJlb3R5cGVzUXVhbGlmaWVkTmFtZXM+U3lzTUw6OkJsb2Nrczo6RGlzdHJpYnV0ZWRQcm9wZXJ0eTwvc3RlcmVvdHlwZXNRdWFsaWZpZWROYW1lcz4NCisgICAgPC9tYXRjaGVyQ29uZmlndXJhdGlvbj4NCisgIDwvZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucz4NCisgIDxlbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zDQorICAgICAgeHNpOnR5cGU9ImVsZW1lbnR0eXBlc2NvbmZpZ3VyYXRpb25zOlNwZWNpYWxpemF0aW9uVHlwZUNvbmZpZ3VyYXRpb24iDQorICAgICAgeG1pOmlkPSJfTG9LWEg4SlFFZVNYOU1vS01CVjVHdyINCisgICAgICBuYW1lPSJEaXN0cmlidXRlZFByb3BlcnR5ICgzMDQxKSINCisgICAgICBpZGVudGlmaWVyPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLkRpc3RyaWJ1dGVkUHJvcGVydHlfMzA0MSINCisgICAgICBoaW50PSIzMDQxIj4NCisgICAgPGljb25FbnRyeQ0KKyAgICAgICAgeG1pOmlkPSJfTG9LWElNSlFFZVNYOU1vS01CVjVHdyINCisgICAgICAgIGljb25QYXRoPSIvaWNvbnMvZnVsbC9vYmoxNi9Qcm9wZXJ0eS5naWYiDQorICAgICAgICBidW5kbGVJZD0ib3JnLmVjbGlwc2UudW1sMi51bWwuZWRpdCIvPg0KKyAgICA8c3BlY2lhbGl6ZWRUeXBlc0lEPm9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5EaXN0cmlidXRlZFByb3BlcnR5PC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy51bWwuZGlhZ3JhbS5jbGF6ei5Qcm9wZXJ0eV8zMDQxPC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICAgIDxtYXRjaGVyQ29uZmlndXJhdGlvbg0KKyAgICAgICAgeHNpOnR5cGU9InN0ZXJlb3R5cGVhcHBsaWNhdGlvbm1hdGNoZXJjb25maWd1cmF0aW9uOlN0ZXJlb3R5cGVBcHBsaWNhdGlvbk1hdGNoZXJDb25maWd1cmF0aW9uIg0KKyAgICAgICAgeG1pOmlkPSJfTG9LWEljSlFFZVNYOU1vS01CVjVHdyI+DQorICAgICAgPHN0ZXJlb3R5cGVzUXVhbGlmaWVkTmFtZXM+U3lzTUw6OkJsb2Nrczo6RGlzdHJpYnV0ZWRQcm9wZXJ0eTwvc3RlcmVvdHlwZXNRdWFsaWZpZWROYW1lcz4NCisgICAgPC9tYXRjaGVyQ29uZmlndXJhdGlvbj4NCisgIDwvZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucz4NCisgIDxlbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zDQorICAgICAgeHNpOnR5cGU9ImVsZW1lbnR0eXBlc2NvbmZpZ3VyYXRpb25zOlNwZWNpYWxpemF0aW9uVHlwZUNvbmZpZ3VyYXRpb24iDQorICAgICAgeG1pOmlkPSJfTG9LWElzSlFFZVNYOU1vS01CVjVHdyINCisgICAgICBuYW1lPSJDb25uZWN0b3JQcm9wZXJ0eSAoMzAwMikiDQorICAgICAgaWRlbnRpZmllcj0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5Db25uZWN0b3JQcm9wZXJ0eV8zMDAyIg0KKyAgICAgIGhpbnQ9IjMwMDIiPg0KKyAgICA8aWNvbkVudHJ5DQorICAgICAgICB4bWk6aWQ9Il9Mb0tYSThKUUVlU1g5TW9LTUJWNUd3Ig0KKyAgICAgICAgaWNvblBhdGg9Ii9pY29ucy9mdWxsL29iajE2L1Byb3BlcnR5LmdpZiINCisgICAgICAgIGJ1bmRsZUlkPSJvcmcuZWNsaXBzZS51bWwyLnVtbC5lZGl0Ii8+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LkRpc3RyaWJ1dGVkUHJvcGVydHk8L3NwZWNpYWxpemVkVHlwZXNJRD4NCisgICAgPHNwZWNpYWxpemVkVHlwZXNJRD5vcmcuZWNsaXBzZS5wYXB5cnVzLnVtbC5kaWFncmFtLmNsYXp6LlByb3BlcnR5XzMwMDI8L3NwZWNpYWxpemVkVHlwZXNJRD4NCisgICAgPG1hdGNoZXJDb25maWd1cmF0aW9uDQorICAgICAgICB4c2k6dHlwZT0ic3RlcmVvdHlwZWFwcGxpY2F0aW9ubWF0Y2hlcmNvbmZpZ3VyYXRpb246U3RlcmVvdHlwZUFwcGxpY2F0aW9uTWF0Y2hlckNvbmZpZ3VyYXRpb24iDQorICAgICAgICB4bWk6aWQ9Il9Mb0tYSk1KUUVlU1g5TW9LTUJWNUd3Ij4NCisgICAgICA8c3RlcmVvdHlwZXNRdWFsaWZpZWROYW1lcz5TeXNNTDo6QmxvY2tzOjpDb25uZWN0b3JQcm9wZXJ0eTwvc3RlcmVvdHlwZXNRdWFsaWZpZWROYW1lcz4NCisgICAgPC9tYXRjaGVyQ29uZmlndXJhdGlvbj4NCisgIDwvZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucz4NCisgIDxlbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zDQorICAgICAgeHNpOnR5cGU9ImVsZW1lbnR0eXBlc2NvbmZpZ3VyYXRpb25zOlNwZWNpYWxpemF0aW9uVHlwZUNvbmZpZ3VyYXRpb24iDQorICAgICAgeG1pOmlkPSJfTG9LWEpjSlFFZVNYOU1vS01CVjVHdyINCisgICAgICBuYW1lPSJDb25uZWN0b3JQcm9wZXJ0eSAoMzAwNSkiDQorICAgICAgaWRlbnRpZmllcj0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5Db25uZWN0b3JQcm9wZXJ0eV8zMDA1Ig0KKyAgICAgIGhpbnQ9IjMwMDUiPg0KKyAgICA8aWNvbkVudHJ5DQorICAgICAgICB4bWk6aWQ9Il9Mb0tYSnNKUUVlU1g5TW9LTUJWNUd3Ig0KKyAgICAgICAgaWNvblBhdGg9Ii9pY29ucy9mdWxsL29iajE2L1Byb3BlcnR5LmdpZiINCisgICAgICAgIGJ1bmRsZUlkPSJvcmcuZWNsaXBzZS51bWwyLnVtbC5lZGl0Ii8+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LkNvbm5lY3RvclByb3BlcnR5PC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy51bWwuZGlhZ3JhbS5jbGF6ei5Qcm9wZXJ0eV8zMDA1PC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICAgIDxtYXRjaGVyQ29uZmlndXJhdGlvbg0KKyAgICAgICAgeHNpOnR5cGU9InN0ZXJlb3R5cGVhcHBsaWNhdGlvbm1hdGNoZXJjb25maWd1cmF0aW9uOlN0ZXJlb3R5cGVBcHBsaWNhdGlvbk1hdGNoZXJDb25maWd1cmF0aW9uIg0KKyAgICAgICAgeG1pOmlkPSJfTG9LWEo4SlFFZVNYOU1vS01CVjVHdyI+DQorICAgICAgPHN0ZXJlb3R5cGVzUXVhbGlmaWVkTmFtZXM+U3lzTUw6OkJsb2Nrczo6Q29ubmVjdG9yUHJvcGVydHk8L3N0ZXJlb3R5cGVzUXVhbGlmaWVkTmFtZXM+DQorICAgIDwvbWF0Y2hlckNvbmZpZ3VyYXRpb24+DQorICA8L2VsZW1lbnRUeXBlQ29uZmlndXJhdGlvbnM+DQorICA8ZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucw0KKyAgICAgIHhzaTp0eXBlPSJlbGVtZW50dHlwZXNjb25maWd1cmF0aW9uczpTcGVjaWFsaXphdGlvblR5cGVDb25maWd1cmF0aW9uIg0KKyAgICAgIHhtaTppZD0iX0xvS1hLTUpRRWVTWDlNb0tNQlY1R3ciDQorICAgICAgbmFtZT0iQ29ubmVjdG9yUHJvcGVydHkgKDMwMDYpIg0KKyAgICAgIGlkZW50aWZpZXI9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuQ29ubmVjdG9yUHJvcGVydHlfMzAwNiINCisgICAgICBoaW50PSIzMDA2Ij4NCisgICAgPGljb25FbnRyeQ0KKyAgICAgICAgeG1pOmlkPSJfTG9LWEtjSlFFZVNYOU1vS01CVjVHdyINCisgICAgICAgIGljb25QYXRoPSIvaWNvbnMvZnVsbC9vYmoxNi9Qcm9wZXJ0eS5naWYiDQorICAgICAgICBidW5kbGVJZD0ib3JnLmVjbGlwc2UudW1sMi51bWwuZWRpdCIvPg0KKyAgICA8c3BlY2lhbGl6ZWRUeXBlc0lEPm9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5Db25uZWN0b3JQcm9wZXJ0eTwvc3BlY2lhbGl6ZWRUeXBlc0lEPg0KKyAgICA8c3BlY2lhbGl6ZWRUeXBlc0lEPm9yZy5lY2xpcHNlLnBhcHlydXMudW1sLmRpYWdyYW0uY2xhenouUHJvcGVydHlfMzAwNjwvc3BlY2lhbGl6ZWRUeXBlc0lEPg0KKyAgICA8bWF0Y2hlckNvbmZpZ3VyYXRpb24NCisgICAgICAgIHhzaTp0eXBlPSJzdGVyZW90eXBlYXBwbGljYXRpb25tYXRjaGVyY29uZmlndXJhdGlvbjpTdGVyZW90eXBlQXBwbGljYXRpb25NYXRjaGVyQ29uZmlndXJhdGlvbiINCisgICAgICAgIHhtaTppZD0iX0xvS1hLc0pRRWVTWDlNb0tNQlY1R3ciPg0KKyAgICAgIDxzdGVyZW90eXBlc1F1YWxpZmllZE5hbWVzPlN5c01MOjpCbG9ja3M6OkNvbm5lY3RvclByb3BlcnR5PC9zdGVyZW90eXBlc1F1YWxpZmllZE5hbWVzPg0KKyAgICA8L21hdGNoZXJDb25maWd1cmF0aW9uPg0KKyAgPC9lbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zPg0KKyAgPGVsZW1lbnRUeXBlQ29uZmlndXJhdGlvbnMNCisgICAgICB4c2k6dHlwZT0iZWxlbWVudHR5cGVzY29uZmlndXJhdGlvbnM6U3BlY2lhbGl6YXRpb25UeXBlQ29uZmlndXJhdGlvbiINCisgICAgICB4bWk6aWQ9Il9Mb0tYSzhKUUVlU1g5TW9LTUJWNUd3Ig0KKyAgICAgIG5hbWU9IkNvbm5lY3RvclByb3BlcnR5ICgzMDEyKSINCisgICAgICBpZGVudGlmaWVyPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLkNvbm5lY3RvclByb3BlcnR5XzMwMTIiDQorICAgICAgaGludD0iMzAxMiI+DQorICAgIDxpY29uRW50cnkNCisgICAgICAgIHhtaTppZD0iX0xvS1hMTUpRRWVTWDlNb0tNQlY1R3ciDQorICAgICAgICBpY29uUGF0aD0iL2ljb25zL2Z1bGwvb2JqMTYvUHJvcGVydHkuZ2lmIg0KKyAgICAgICAgYnVuZGxlSWQ9Im9yZy5lY2xpcHNlLnVtbDIudW1sLmVkaXQiLz4NCisgICAgPHNwZWNpYWxpemVkVHlwZXNJRD5vcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuQ29ubmVjdG9yUHJvcGVydHk8L3NwZWNpYWxpemVkVHlwZXNJRD4NCisgICAgPHNwZWNpYWxpemVkVHlwZXNJRD5vcmcuZWNsaXBzZS5wYXB5cnVzLnVtbC5kaWFncmFtLmNsYXp6LlByb3BlcnR5XzMwMTI8L3NwZWNpYWxpemVkVHlwZXNJRD4NCisgICAgPG1hdGNoZXJDb25maWd1cmF0aW9uDQorICAgICAgICB4c2k6dHlwZT0ic3RlcmVvdHlwZWFwcGxpY2F0aW9ubWF0Y2hlcmNvbmZpZ3VyYXRpb246U3RlcmVvdHlwZUFwcGxpY2F0aW9uTWF0Y2hlckNvbmZpZ3VyYXRpb24iDQorICAgICAgICB4bWk6aWQ9Il9Mb0tYTGNKUUVlU1g5TW9LTUJWNUd3Ij4NCisgICAgICA8c3RlcmVvdHlwZXNRdWFsaWZpZWROYW1lcz5TeXNNTDo6QmxvY2tzOjpDb25uZWN0b3JQcm9wZXJ0eTwvc3RlcmVvdHlwZXNRdWFsaWZpZWROYW1lcz4NCisgICAgPC9tYXRjaGVyQ29uZmlndXJhdGlvbj4NCisgIDwvZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucz4NCisgIDxlbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zDQorICAgICAgeHNpOnR5cGU9ImVsZW1lbnR0eXBlc2NvbmZpZ3VyYXRpb25zOlNwZWNpYWxpemF0aW9uVHlwZUNvbmZpZ3VyYXRpb24iDQorICAgICAgeG1pOmlkPSJfTG9LWExzSlFFZVNYOU1vS01CVjVHdyINCisgICAgICBuYW1lPSJDb25uZWN0b3JQcm9wZXJ0eSAoMzAxOCkiDQorICAgICAgaWRlbnRpZmllcj0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5Db25uZWN0b3JQcm9wZXJ0eV8zMDE4Ig0KKyAgICAgIGhpbnQ9IjMwMTgiPg0KKyAgICA8aWNvbkVudHJ5DQorICAgICAgICB4bWk6aWQ9Il9Mb0tYTDhKUUVlU1g5TW9LTUJWNUd3Ig0KKyAgICAgICAgaWNvblBhdGg9Ii9pY29ucy9mdWxsL29iajE2L1Byb3BlcnR5LmdpZiINCisgICAgICAgIGJ1bmRsZUlkPSJvcmcuZWNsaXBzZS51bWwyLnVtbC5lZGl0Ii8+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LkNvbm5lY3RvclByb3BlcnR5PC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy51bWwuZGlhZ3JhbS5jbGF6ei5Qcm9wZXJ0eV8zMDE4PC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICAgIDxtYXRjaGVyQ29uZmlndXJhdGlvbg0KKyAgICAgICAgeHNpOnR5cGU9InN0ZXJlb3R5cGVhcHBsaWNhdGlvbm1hdGNoZXJjb25maWd1cmF0aW9uOlN0ZXJlb3R5cGVBcHBsaWNhdGlvbk1hdGNoZXJDb25maWd1cmF0aW9uIg0KKyAgICAgICAgeG1pOmlkPSJfTG9LWE1NSlFFZVNYOU1vS01CVjVHdyI+DQorICAgICAgPHN0ZXJlb3R5cGVzUXVhbGlmaWVkTmFtZXM+U3lzTUw6OkJsb2Nrczo6Q29ubmVjdG9yUHJvcGVydHk8L3N0ZXJlb3R5cGVzUXVhbGlmaWVkTmFtZXM+DQorICAgIDwvbWF0Y2hlckNvbmZpZ3VyYXRpb24+DQorICA8L2VsZW1lbnRUeXBlQ29uZmlndXJhdGlvbnM+DQorICA8ZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucw0KKyAgICAgIHhzaTp0eXBlPSJlbGVtZW50dHlwZXNjb25maWd1cmF0aW9uczpTcGVjaWFsaXphdGlvblR5cGVDb25maWd1cmF0aW9uIg0KKyAgICAgIHhtaTppZD0iX0xvS1hNY0pRRWVTWDlNb0tNQlY1R3ciDQorICAgICAgbmFtZT0iQ29ubmVjdG9yUHJvcGVydHkgKDMwNDEpIg0KKyAgICAgIGlkZW50aWZpZXI9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuQ29ubmVjdG9yUHJvcGVydHlfMzA0MSINCisgICAgICBoaW50PSIzMDQxIj4NCisgICAgPGljb25FbnRyeQ0KKyAgICAgICAgeG1pOmlkPSJfTG9LWE1zSlFFZVNYOU1vS01CVjVHdyINCisgICAgICAgIGljb25QYXRoPSIvaWNvbnMvZnVsbC9vYmoxNi9Qcm9wZXJ0eS5naWYiDQorICAgICAgICBidW5kbGVJZD0ib3JnLmVjbGlwc2UudW1sMi51bWwuZWRpdCIvPg0KKyAgICA8c3BlY2lhbGl6ZWRUeXBlc0lEPm9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5Db25uZWN0b3JQcm9wZXJ0eTwvc3BlY2lhbGl6ZWRUeXBlc0lEPg0KKyAgICA8c3BlY2lhbGl6ZWRUeXBlc0lEPm9yZy5lY2xpcHNlLnBhcHlydXMudW1sLmRpYWdyYW0uY2xhenouUHJvcGVydHlfMzA0MTwvc3BlY2lhbGl6ZWRUeXBlc0lEPg0KKyAgICA8bWF0Y2hlckNvbmZpZ3VyYXRpb24NCisgICAgICAgIHhzaTp0eXBlPSJzdGVyZW90eXBlYXBwbGljYXRpb25tYXRjaGVyY29uZmlndXJhdGlvbjpTdGVyZW90eXBlQXBwbGljYXRpb25NYXRjaGVyQ29uZmlndXJhdGlvbiINCisgICAgICAgIHhtaTppZD0iX0xvS1hNOEpRRWVTWDlNb0tNQlY1R3ciPg0KKyAgICAgIDxzdGVyZW90eXBlc1F1YWxpZmllZE5hbWVzPlN5c01MOjpCbG9ja3M6OkNvbm5lY3RvclByb3BlcnR5PC9zdGVyZW90eXBlc1F1YWxpZmllZE5hbWVzPg0KKyAgICA8L21hdGNoZXJDb25maWd1cmF0aW9uPg0KKyAgPC9lbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zPg0KKyAgPGVsZW1lbnRUeXBlQ29uZmlndXJhdGlvbnMNCisgICAgICB4c2k6dHlwZT0iZWxlbWVudHR5cGVzY29uZmlndXJhdGlvbnM6U3BlY2lhbGl6YXRpb25UeXBlQ29uZmlndXJhdGlvbiINCisgICAgICB4bWk6aWQ9Il9Mb0tYTk1KUUVlU1g5TW9LTUJWNUd3Ig0KKyAgICAgIG5hbWU9IlBhcnRpY2lwYW50UHJvcGVydHkgKDMwMDIpIg0KKyAgICAgIGlkZW50aWZpZXI9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuUGFydGljaXBhbnRQcm9wZXJ0eV8zMDAyIg0KKyAgICAgIGhpbnQ9IjMwMDIiPg0KKyAgICA8aWNvbkVudHJ5DQorICAgICAgICB4bWk6aWQ9Il9Mb0tYTmNKUUVlU1g5TW9LTUJWNUd3Ig0KKyAgICAgICAgaWNvblBhdGg9Ii9pY29ucy9mdWxsL29iajE2L1Byb3BlcnR5LmdpZiINCisgICAgICAgIGJ1bmRsZUlkPSJvcmcuZWNsaXBzZS51bWwyLnVtbC5lZGl0Ii8+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LkNvbm5lY3RvclByb3BlcnR5PC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy51bWwuZGlhZ3JhbS5jbGF6ei5Qcm9wZXJ0eV8zMDAyPC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICAgIDxtYXRjaGVyQ29uZmlndXJhdGlvbg0KKyAgICAgICAgeHNpOnR5cGU9InN0ZXJlb3R5cGVhcHBsaWNhdGlvbm1hdGNoZXJjb25maWd1cmF0aW9uOlN0ZXJlb3R5cGVBcHBsaWNhdGlvbk1hdGNoZXJDb25maWd1cmF0aW9uIg0KKyAgICAgICAgeG1pOmlkPSJfTG9LWE5zSlFFZVNYOU1vS01CVjVHdyI+DQorICAgICAgPHN0ZXJlb3R5cGVzUXVhbGlmaWVkTmFtZXM+U3lzTUw6OkJsb2Nrczo6UGFydGljaXBhbnRQcm9wZXJ0eTwvc3RlcmVvdHlwZXNRdWFsaWZpZWROYW1lcz4NCisgICAgPC9tYXRjaGVyQ29uZmlndXJhdGlvbj4NCisgIDwvZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucz4NCisgIDxlbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zDQorICAgICAgeHNpOnR5cGU9ImVsZW1lbnR0eXBlc2NvbmZpZ3VyYXRpb25zOlNwZWNpYWxpemF0aW9uVHlwZUNvbmZpZ3VyYXRpb24iDQorICAgICAgeG1pOmlkPSJfTG9LWE44SlFFZVNYOU1vS01CVjVHdyINCisgICAgICBuYW1lPSJQYXJ0aWNpcGFudFByb3BlcnR5ICgzMDA1KSINCisgICAgICBpZGVudGlmaWVyPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLlBhcnRpY2lwYW50UHJvcGVydHlfMzAwNSINCisgICAgICBoaW50PSIzMDA1Ij4NCisgICAgPGljb25FbnRyeQ0KKyAgICAgICAgeG1pOmlkPSJfTG9LWE9NSlFFZVNYOU1vS01CVjVHdyINCisgICAgICAgIGljb25QYXRoPSIvaWNvbnMvZnVsbC9vYmoxNi9Qcm9wZXJ0eS5naWYiDQorICAgICAgICBidW5kbGVJZD0ib3JnLmVjbGlwc2UudW1sMi51bWwuZWRpdCIvPg0KKyAgICA8c3BlY2lhbGl6ZWRUeXBlc0lEPm9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5QYXJ0aWNpcGFudFByb3BlcnR5PC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy51bWwuZGlhZ3JhbS5jbGF6ei5Qcm9wZXJ0eV8zMDA1PC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICAgIDxtYXRjaGVyQ29uZmlndXJhdGlvbg0KKyAgICAgICAgeHNpOnR5cGU9InN0ZXJlb3R5cGVhcHBsaWNhdGlvbm1hdGNoZXJjb25maWd1cmF0aW9uOlN0ZXJlb3R5cGVBcHBsaWNhdGlvbk1hdGNoZXJDb25maWd1cmF0aW9uIg0KKyAgICAgICAgeG1pOmlkPSJfTG9LWE9jSlFFZVNYOU1vS01CVjVHdyI+DQorICAgICAgPHN0ZXJlb3R5cGVzUXVhbGlmaWVkTmFtZXM+U3lzTUw6OkJsb2Nrczo6UGFydGljaXBhbnRQcm9wZXJ0eTwvc3RlcmVvdHlwZXNRdWFsaWZpZWROYW1lcz4NCisgICAgPC9tYXRjaGVyQ29uZmlndXJhdGlvbj4NCisgIDwvZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucz4NCisgIDxlbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zDQorICAgICAgeHNpOnR5cGU9ImVsZW1lbnR0eXBlc2NvbmZpZ3VyYXRpb25zOlNwZWNpYWxpemF0aW9uVHlwZUNvbmZpZ3VyYXRpb24iDQorICAgICAgeG1pOmlkPSJfTG9LWE9zSlFFZVNYOU1vS01CVjVHdyINCisgICAgICBuYW1lPSJQYXJ0aWNpcGFudFByb3BlcnR5ICgzMDA2KSINCisgICAgICBpZGVudGlmaWVyPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLlBhcnRpY2lwYW50UHJvcGVydHlfMzAwNiINCisgICAgICBoaW50PSIzMDA2Ij4NCisgICAgPGljb25FbnRyeQ0KKyAgICAgICAgeG1pOmlkPSJfTG9LWE84SlFFZVNYOU1vS01CVjVHdyINCisgICAgICAgIGljb25QYXRoPSIvaWNvbnMvZnVsbC9vYmoxNi9Qcm9wZXJ0eS5naWYiDQorICAgICAgICBidW5kbGVJZD0ib3JnLmVjbGlwc2UudW1sMi51bWwuZWRpdCIvPg0KKyAgICA8c3BlY2lhbGl6ZWRUeXBlc0lEPm9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5QYXJ0aWNpcGFudFByb3BlcnR5PC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy51bWwuZGlhZ3JhbS5jbGF6ei5Qcm9wZXJ0eV8zMDA2PC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICAgIDxtYXRjaGVyQ29uZmlndXJhdGlvbg0KKyAgICAgICAgeHNpOnR5cGU9InN0ZXJlb3R5cGVhcHBsaWNhdGlvbm1hdGNoZXJjb25maWd1cmF0aW9uOlN0ZXJlb3R5cGVBcHBsaWNhdGlvbk1hdGNoZXJDb25maWd1cmF0aW9uIg0KKyAgICAgICAgeG1pOmlkPSJfTG9LWFBNSlFFZVNYOU1vS01CVjVHdyI+DQorICAgICAgPHN0ZXJlb3R5cGVzUXVhbGlmaWVkTmFtZXM+U3lzTUw6OkJsb2Nrczo6UGFydGljaXBhbnRQcm9wZXJ0eTwvc3RlcmVvdHlwZXNRdWFsaWZpZWROYW1lcz4NCisgICAgPC9tYXRjaGVyQ29uZmlndXJhdGlvbj4NCisgIDwvZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucz4NCisgIDxlbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zDQorICAgICAgeHNpOnR5cGU9ImVsZW1lbnR0eXBlc2NvbmZpZ3VyYXRpb25zOlNwZWNpYWxpemF0aW9uVHlwZUNvbmZpZ3VyYXRpb24iDQorICAgICAgeG1pOmlkPSJfTG9LWFBjSlFFZVNYOU1vS01CVjVHdyINCisgICAgICBuYW1lPSJQYXJ0aWNpcGFudFByb3BlcnR5ICgzMDEyKSINCisgICAgICBpZGVudGlmaWVyPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLlBhcnRpY2lwYW50UHJvcGVydHlfMzAxMiINCisgICAgICBoaW50PSIzMDEyIj4NCisgICAgPGljb25FbnRyeQ0KKyAgICAgICAgeG1pOmlkPSJfTG9LWFBzSlFFZVNYOU1vS01CVjVHdyINCisgICAgICAgIGljb25QYXRoPSIvaWNvbnMvZnVsbC9vYmoxNi9Qcm9wZXJ0eS5naWYiDQorICAgICAgICBidW5kbGVJZD0ib3JnLmVjbGlwc2UudW1sMi51bWwuZWRpdCIvPg0KKyAgICA8c3BlY2lhbGl6ZWRUeXBlc0lEPm9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5QYXJ0aWNpcGFudFByb3BlcnR5PC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy51bWwuZGlhZ3JhbS5jbGF6ei5Qcm9wZXJ0eV8zMDEyPC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICAgIDxtYXRjaGVyQ29uZmlndXJhdGlvbg0KKyAgICAgICAgeHNpOnR5cGU9InN0ZXJlb3R5cGVhcHBsaWNhdGlvbm1hdGNoZXJjb25maWd1cmF0aW9uOlN0ZXJlb3R5cGVBcHBsaWNhdGlvbk1hdGNoZXJDb25maWd1cmF0aW9uIg0KKyAgICAgICAgeG1pOmlkPSJfTG9LWFA4SlFFZVNYOU1vS01CVjVHdyI+DQorICAgICAgPHN0ZXJlb3R5cGVzUXVhbGlmaWVkTmFtZXM+U3lzTUw6OkJsb2Nrczo6UGFydGljaXBhbnRQcm9wZXJ0eTwvc3RlcmVvdHlwZXNRdWFsaWZpZWROYW1lcz4NCisgICAgPC9tYXRjaGVyQ29uZmlndXJhdGlvbj4NCisgIDwvZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucz4NCisgIDxlbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zDQorICAgICAgeHNpOnR5cGU9ImVsZW1lbnR0eXBlc2NvbmZpZ3VyYXRpb25zOlNwZWNpYWxpemF0aW9uVHlwZUNvbmZpZ3VyYXRpb24iDQorICAgICAgeG1pOmlkPSJfTG9LWFFNSlFFZVNYOU1vS01CVjVHdyINCisgICAgICBuYW1lPSJQYXJ0aWNpcGFudFByb3BlcnR5ICgzMDE4KSINCisgICAgICBpZGVudGlmaWVyPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLlBhcnRpY2lwYW50UHJvcGVydHlfMzAxOCINCisgICAgICBoaW50PSIzMDE4Ij4NCisgICAgPGljb25FbnRyeQ0KKyAgICAgICAgeG1pOmlkPSJfTG9LWFFjSlFFZVNYOU1vS01CVjVHdyINCisgICAgICAgIGljb25QYXRoPSIvaWNvbnMvZnVsbC9vYmoxNi9Qcm9wZXJ0eS5naWYiDQorICAgICAgICBidW5kbGVJZD0ib3JnLmVjbGlwc2UudW1sMi51bWwuZWRpdCIvPg0KKyAgICA8c3BlY2lhbGl6ZWRUeXBlc0lEPm9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5QYXJ0aWNpcGFudFByb3BlcnR5PC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy51bWwuZGlhZ3JhbS5jbGF6ei5Qcm9wZXJ0eV8zMDE4PC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICAgIDxtYXRjaGVyQ29uZmlndXJhdGlvbg0KKyAgICAgICAgeHNpOnR5cGU9InN0ZXJlb3R5cGVhcHBsaWNhdGlvbm1hdGNoZXJjb25maWd1cmF0aW9uOlN0ZXJlb3R5cGVBcHBsaWNhdGlvbk1hdGNoZXJDb25maWd1cmF0aW9uIg0KKyAgICAgICAgeG1pOmlkPSJfTG9LWFFzSlFFZVNYOU1vS01CVjVHdyI+DQorICAgICAgPHN0ZXJlb3R5cGVzUXVhbGlmaWVkTmFtZXM+U3lzTUw6OkJsb2Nrczo6UGFydGljaXBhbnRQcm9wZXJ0eTwvc3RlcmVvdHlwZXNRdWFsaWZpZWROYW1lcz4NCisgICAgPC9tYXRjaGVyQ29uZmlndXJhdGlvbj4NCisgIDwvZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucz4NCisgIDxlbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zDQorICAgICAgeHNpOnR5cGU9ImVsZW1lbnR0eXBlc2NvbmZpZ3VyYXRpb25zOlNwZWNpYWxpemF0aW9uVHlwZUNvbmZpZ3VyYXRpb24iDQorICAgICAgeG1pOmlkPSJfTG9LWFE4SlFFZVNYOU1vS01CVjVHdyINCisgICAgICBuYW1lPSJQYXJ0aWNpcGFudFByb3BlcnR5ICgzMDQxKSINCisgICAgICBpZGVudGlmaWVyPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLlBhcnRpY2lwYW50UHJvcGVydHlfMzA0MSINCisgICAgICBoaW50PSIzMDQxIj4NCisgICAgPGljb25FbnRyeQ0KKyAgICAgICAgeG1pOmlkPSJfTG9LWFJNSlFFZVNYOU1vS01CVjVHdyINCisgICAgICAgIGljb25QYXRoPSIvaWNvbnMvZnVsbC9vYmoxNi9Qcm9wZXJ0eS5naWYiDQorICAgICAgICBidW5kbGVJZD0ib3JnLmVjbGlwc2UudW1sMi51bWwuZWRpdCIvPg0KKyAgICA8c3BlY2lhbGl6ZWRUeXBlc0lEPm9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5QYXJ0aWNpcGFudFByb3BlcnR5PC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy51bWwuZGlhZ3JhbS5jbGF6ei5Qcm9wZXJ0eV8zMDQxPC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICAgIDxtYXRjaGVyQ29uZmlndXJhdGlvbg0KKyAgICAgICAgeHNpOnR5cGU9InN0ZXJlb3R5cGVhcHBsaWNhdGlvbm1hdGNoZXJjb25maWd1cmF0aW9uOlN0ZXJlb3R5cGVBcHBsaWNhdGlvbk1hdGNoZXJDb25maWd1cmF0aW9uIg0KKyAgICAgICAgeG1pOmlkPSJfTG9LWFJjSlFFZVNYOU1vS01CVjVHdyI+DQorICAgICAgPHN0ZXJlb3R5cGVzUXVhbGlmaWVkTmFtZXM+U3lzTUw6OkJsb2Nrczo6UGFydGljaXBhbnRQcm9wZXJ0eTwvc3RlcmVvdHlwZXNRdWFsaWZpZWROYW1lcz4NCisgICAgPC9tYXRjaGVyQ29uZmlndXJhdGlvbj4NCisgIDwvZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucz4NCisgIDxlbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zDQorICAgICAgeHNpOnR5cGU9ImVsZW1lbnR0eXBlc2NvbmZpZ3VyYXRpb25zOlNwZWNpYWxpemF0aW9uVHlwZUNvbmZpZ3VyYXRpb24iDQorICAgICAgeG1pOmlkPSJfTG9LWFJzSlFFZVNYOU1vS01CVjVHdyINCisgICAgICBuYW1lPSJCbG9jayAoMjAwOCkiDQorICAgICAgaWRlbnRpZmllcj0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5CbG9ja18yMDA4Ig0KKyAgICAgIGhpbnQ9IjIwMDgiPg0KKyAgICA8aWNvbkVudHJ5DQorICAgICAgICB4bWk6aWQ9Il9Mb0tYUjhKUUVlU1g5TW9LTUJWNUd3Ig0KKyAgICAgICAgaWNvblBhdGg9Ii9pY29ucy9mdWxsL29iajE2L0NsYXNzLmdpZiINCisgICAgICAgIGJ1bmRsZUlkPSJvcmcuZWNsaXBzZS51bWwyLnVtbC5lZGl0Ii8+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LkJsb2NrPC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy51bWwuZGlhZ3JhbS5jbGF6ei5DbGFzc18yMDA4PC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICAgIDxtYXRjaGVyQ29uZmlndXJhdGlvbg0KKyAgICAgICAgeHNpOnR5cGU9InN0ZXJlb3R5cGVhcHBsaWNhdGlvbm1hdGNoZXJjb25maWd1cmF0aW9uOlN0ZXJlb3R5cGVBcHBsaWNhdGlvbk1hdGNoZXJDb25maWd1cmF0aW9uIg0KKyAgICAgICAgeG1pOmlkPSJfTG9LWFNNSlFFZVNYOU1vS01CVjVHdyI+DQorICAgICAgPHN0ZXJlb3R5cGVzUXVhbGlmaWVkTmFtZXM+U3lzTUw6OkJsb2Nrczo6QmxvY2s8L3N0ZXJlb3R5cGVzUXVhbGlmaWVkTmFtZXM+DQorICAgIDwvbWF0Y2hlckNvbmZpZ3VyYXRpb24+DQorICA8L2VsZW1lbnRUeXBlQ29uZmlndXJhdGlvbnM+DQorICA8ZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucw0KKyAgICAgIHhzaTp0eXBlPSJlbGVtZW50dHlwZXNjb25maWd1cmF0aW9uczpTcGVjaWFsaXphdGlvblR5cGVDb25maWd1cmF0aW9uIg0KKyAgICAgIHhtaTppZD0iX245QllnTkZlRWVTeGZfaEttaHJhaEEiDQorICAgICAgbmFtZT0iQmxvY2sgKE5lc3RlZEJsb2NrX0NsYXNzaWZpZXIpIg0KKyAgICAgIGlkZW50aWZpZXI9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuQmxvY2tfTmVzdGVkQmxvY2tfQ2xhc3NpZmllciINCisgICAgICBoaW50PSJOZXN0ZWRCbG9ja19DbGFzc2lmaWVyIj4NCisgICAgPGljb25FbnRyeQ0KKyAgICAgICAgeG1pOmlkPSJfbjlCWWdkRmVFZVN4Zl9oS21ocmFoQSINCisgICAgICAgIGljb25QYXRoPSIvaWNvbnMvZnVsbC9vYmoxNi9DbGFzcy5naWYiDQorICAgICAgICBidW5kbGVJZD0ib3JnLmVjbGlwc2UudW1sMi51bWwuZWRpdCIvPg0KKyAgICA8c3BlY2lhbGl6ZWRUeXBlc0lEPm9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5CbG9jazwvc3BlY2lhbGl6ZWRUeXBlc0lEPg0KKyAgICA8bWF0Y2hlckNvbmZpZ3VyYXRpb24NCisgICAgICAgIHhzaTp0eXBlPSJzdGVyZW90eXBlYXBwbGljYXRpb25tYXRjaGVyY29uZmlndXJhdGlvbjpTdGVyZW90eXBlQXBwbGljYXRpb25NYXRjaGVyQ29uZmlndXJhdGlvbiINCisgICAgICAgIHhtaTppZD0iX245QllndEZlRWVTeGZfaEttaHJhaEEiPg0KKyAgICAgIDxzdGVyZW90eXBlc1F1YWxpZmllZE5hbWVzPlN5c01MOjpCbG9ja3M6OkJsb2NrPC9zdGVyZW90eXBlc1F1YWxpZmllZE5hbWVzPg0KKyAgICA8L21hdGNoZXJDb25maWd1cmF0aW9uPg0KKyAgPC9lbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zPg0KKyAgPGVsZW1lbnRUeXBlQ29uZmlndXJhdGlvbnMNCisgICAgICB4c2k6dHlwZT0iZWxlbWVudHR5cGVzY29uZmlndXJhdGlvbnM6U3BlY2lhbGl6YXRpb25UeXBlQ29uZmlndXJhdGlvbiINCisgICAgICB4bWk6aWQ9Il9Mb0tYU2NKUUVlU1g5TW9LTUJWNUd3Ig0KKyAgICAgIG5hbWU9IkJsb2NrICgzMDA0KSINCisgICAgICBpZGVudGlmaWVyPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLkJsb2NrXzMwMDQiDQorICAgICAgaGludD0iMzAwNCI+DQorICAgIDxpY29uRW50cnkNCisgICAgICAgIHhtaTppZD0iX0xvS1hTc0pRRWVTWDlNb0tNQlY1R3ciDQorICAgICAgICBpY29uUGF0aD0iL2ljb25zL2Z1bGwvb2JqMTYvQ2xhc3MuZ2lmIg0KKyAgICAgICAgYnVuZGxlSWQ9Im9yZy5lY2xpcHNlLnVtbDIudW1sLmVkaXQiLz4NCisgICAgPHNwZWNpYWxpemVkVHlwZXNJRD5vcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuQmxvY2s8L3NwZWNpYWxpemVkVHlwZXNJRD4NCisgICAgPHNwZWNpYWxpemVkVHlwZXNJRD5vcmcuZWNsaXBzZS5wYXB5cnVzLnVtbC5kaWFncmFtLmNsYXp6LkNsYXNzXzMwMDQ8L3NwZWNpYWxpemVkVHlwZXNJRD4NCisgICAgPG1hdGNoZXJDb25maWd1cmF0aW9uDQorICAgICAgICB4c2k6dHlwZT0ic3RlcmVvdHlwZWFwcGxpY2F0aW9ubWF0Y2hlcmNvbmZpZ3VyYXRpb246U3RlcmVvdHlwZUFwcGxpY2F0aW9uTWF0Y2hlckNvbmZpZ3VyYXRpb24iDQorICAgICAgICB4bWk6aWQ9Il9Mb0tYUzhKUUVlU1g5TW9LTUJWNUd3Ij4NCisgICAgICA8c3RlcmVvdHlwZXNRdWFsaWZpZWROYW1lcz5TeXNNTDo6QmxvY2tzOjpCbG9jazwvc3RlcmVvdHlwZXNRdWFsaWZpZWROYW1lcz4NCisgICAgPC9tYXRjaGVyQ29uZmlndXJhdGlvbj4NCisgIDwvZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucz4NCisgIDxlbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zDQorICAgICAgeHNpOnR5cGU9ImVsZW1lbnR0eXBlc2NvbmZpZ3VyYXRpb25zOlNwZWNpYWxpemF0aW9uVHlwZUNvbmZpZ3VyYXRpb24iDQorICAgICAgeG1pOmlkPSJfTG9LWFRNSlFFZVNYOU1vS01CVjVHdyINCisgICAgICBuYW1lPSJCbG9jayAoMzAwOCkiDQorICAgICAgaWRlbnRpZmllcj0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5CbG9ja18zMDA4Ig0KKyAgICAgIGhpbnQ9IjMwMDgiPg0KKyAgICA8aWNvbkVudHJ5DQorICAgICAgICB4bWk6aWQ9Il9Mb0tYVGNKUUVlU1g5TW9LTUJWNUd3Ig0KKyAgICAgICAgaWNvblBhdGg9Ii9pY29ucy9mdWxsL29iajE2L0NsYXNzLmdpZiINCisgICAgICAgIGJ1bmRsZUlkPSJvcmcuZWNsaXBzZS51bWwyLnVtbC5lZGl0Ii8+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LkJsb2NrPC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy51bWwuZGlhZ3JhbS5jbGF6ei5DbGFzc18zMDA4PC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICAgIDxtYXRjaGVyQ29uZmlndXJhdGlvbg0KKyAgICAgICAgeHNpOnR5cGU9InN0ZXJlb3R5cGVhcHBsaWNhdGlvbm1hdGNoZXJjb25maWd1cmF0aW9uOlN0ZXJlb3R5cGVBcHBsaWNhdGlvbk1hdGNoZXJDb25maWd1cmF0aW9uIg0KKyAgICAgICAgeG1pOmlkPSJfTG9LWFRzSlFFZVNYOU1vS01CVjVHdyI+DQorICAgICAgPHN0ZXJlb3R5cGVzUXVhbGlmaWVkTmFtZXM+U3lzTUw6OkJsb2Nrczo6QmxvY2s8L3N0ZXJlb3R5cGVzUXVhbGlmaWVkTmFtZXM+DQorICAgIDwvbWF0Y2hlckNvbmZpZ3VyYXRpb24+DQorICA8L2VsZW1lbnRUeXBlQ29uZmlndXJhdGlvbnM+DQorICA8ZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucw0KKyAgICAgIHhzaTp0eXBlPSJlbGVtZW50dHlwZXNjb25maWd1cmF0aW9uczpTcGVjaWFsaXphdGlvblR5cGVDb25maWd1cmF0aW9uIg0KKyAgICAgIHhtaTppZD0iX0xvS1hUOEpRRWVTWDlNb0tNQlY1R3ciDQorICAgICAgbmFtZT0iQmxvY2sgKDMwMTApIg0KKyAgICAgIGlkZW50aWZpZXI9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuQmxvY2tfMzAxMCINCisgICAgICBoaW50PSIzMDEwIj4NCisgICAgPGljb25FbnRyeQ0KKyAgICAgICAgeG1pOmlkPSJfTG9LWFVNSlFFZVNYOU1vS01CVjVHdyINCisgICAgICAgIGljb25QYXRoPSIvaWNvbnMvZnVsbC9vYmoxNi9DbGFzcy5naWYiDQorICAgICAgICBidW5kbGVJZD0ib3JnLmVjbGlwc2UudW1sMi51bWwuZWRpdCIvPg0KKyAgICA8c3BlY2lhbGl6ZWRUeXBlc0lEPm9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5CbG9jazwvc3BlY2lhbGl6ZWRUeXBlc0lEPg0KKyAgICA8c3BlY2lhbGl6ZWRUeXBlc0lEPm9yZy5lY2xpcHNlLnBhcHlydXMudW1sLmRpYWdyYW0uY2xhenouQ2xhc3NfMzAxMDwvc3BlY2lhbGl6ZWRUeXBlc0lEPg0KKyAgICA8bWF0Y2hlckNvbmZpZ3VyYXRpb24NCisgICAgICAgIHhzaTp0eXBlPSJzdGVyZW90eXBlYXBwbGljYXRpb25tYXRjaGVyY29uZmlndXJhdGlvbjpTdGVyZW90eXBlQXBwbGljYXRpb25NYXRjaGVyQ29uZmlndXJhdGlvbiINCisgICAgICAgIHhtaTppZD0iX0xvS1hVY0pRRWVTWDlNb0tNQlY1R3ciPg0KKyAgICAgIDxzdGVyZW90eXBlc1F1YWxpZmllZE5hbWVzPlN5c01MOjpCbG9ja3M6OkJsb2NrPC9zdGVyZW90eXBlc1F1YWxpZmllZE5hbWVzPg0KKyAgICA8L21hdGNoZXJDb25maWd1cmF0aW9uPg0KKyAgPC9lbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zPg0KKyAgPGVsZW1lbnRUeXBlQ29uZmlndXJhdGlvbnMNCisgICAgICB4c2k6dHlwZT0iZWxlbWVudHR5cGVzY29uZmlndXJhdGlvbnM6U3BlY2lhbGl6YXRpb25UeXBlQ29uZmlndXJhdGlvbiINCisgICAgICB4bWk6aWQ9Il9Mb0tYVXNKUUVlU1g5TW9LTUJWNUd3Ig0KKyAgICAgIG5hbWU9IkJsb2NrICgzMDE0KSINCisgICAgICBpZGVudGlmaWVyPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLkJsb2NrXzMwMTQiDQorICAgICAgaGludD0iMzAxNCI+DQorICAgIDxpY29uRW50cnkNCisgICAgICAgIHhtaTppZD0iX0xvS1hVOEpRRWVTWDlNb0tNQlY1R3ciDQorICAgICAgICBpY29uUGF0aD0iL2ljb25zL2Z1bGwvb2JqMTYvQ2xhc3MuZ2lmIg0KKyAgICAgICAgYnVuZGxlSWQ9Im9yZy5lY2xpcHNlLnVtbDIudW1sLmVkaXQiLz4NCisgICAgPHNwZWNpYWxpemVkVHlwZXNJRD5vcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuQmxvY2s8L3NwZWNpYWxpemVkVHlwZXNJRD4NCisgICAgPHNwZWNpYWxpemVkVHlwZXNJRD5vcmcuZWNsaXBzZS5wYXB5cnVzLnVtbC5kaWFncmFtLmNsYXp6LkNsYXNzXzMwMTQ8L3NwZWNpYWxpemVkVHlwZXNJRD4NCisgICAgPG1hdGNoZXJDb25maWd1cmF0aW9uDQorICAgICAgICB4c2k6dHlwZT0ic3RlcmVvdHlwZWFwcGxpY2F0aW9ubWF0Y2hlcmNvbmZpZ3VyYXRpb246U3RlcmVvdHlwZUFwcGxpY2F0aW9uTWF0Y2hlckNvbmZpZ3VyYXRpb24iDQorICAgICAgICB4bWk6aWQ9Il9Mb0tYVk1KUUVlU1g5TW9LTUJWNUd3Ij4NCisgICAgICA8c3RlcmVvdHlwZXNRdWFsaWZpZWROYW1lcz5TeXNNTDo6QmxvY2tzOjpCbG9jazwvc3RlcmVvdHlwZXNRdWFsaWZpZWROYW1lcz4NCisgICAgPC9tYXRjaGVyQ29uZmlndXJhdGlvbj4NCisgIDwvZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucz4NCisgIDxlbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zDQorICAgICAgeHNpOnR5cGU9ImVsZW1lbnR0eXBlc2NvbmZpZ3VyYXRpb25zOlNwZWNpYWxpemF0aW9uVHlwZUNvbmZpZ3VyYXRpb24iDQorICAgICAgeG1pOmlkPSJfTG9LWFZjSlFFZVNYOU1vS01CVjVHdyINCisgICAgICBuYW1lPSJFbmRQYXRoTXVsdGlwbGljaXR5ICgzMDAyKSINCisgICAgICBpZGVudGlmaWVyPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLkVuZFBhdGhNdWx0aXBsaWNpdHlfMzAwMiINCisgICAgICBoaW50PSIzMDAyIj4NCisgICAgPGljb25FbnRyeQ0KKyAgICAgICAgeG1pOmlkPSJfTG9LWFZzSlFFZVNYOU1vS01CVjVHdyINCisgICAgICAgIGljb25QYXRoPSIvaWNvbnMvZnVsbC9vYmoxNi9Qcm9wZXJ0eS5naWYiDQorICAgICAgICBidW5kbGVJZD0ib3JnLmVjbGlwc2UudW1sMi51bWwuZWRpdCIvPg0KKyAgICA8c3BlY2lhbGl6ZWRUeXBlc0lEPm9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5FbmRQYXRoTXVsdGlwbGljaXR5PC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy51bWwuZGlhZ3JhbS5jbGF6ei5Qcm9wZXJ0eV8zMDAyPC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICAgIDxtYXRjaGVyQ29uZmlndXJhdGlvbg0KKyAgICAgICAgeHNpOnR5cGU9InN0ZXJlb3R5cGVhcHBsaWNhdGlvbm1hdGNoZXJjb25maWd1cmF0aW9uOlN0ZXJlb3R5cGVBcHBsaWNhdGlvbk1hdGNoZXJDb25maWd1cmF0aW9uIg0KKyAgICAgICAgeG1pOmlkPSJfTG9LWFY4SlFFZVNYOU1vS01CVjVHdyI+DQorICAgICAgPHN0ZXJlb3R5cGVzUXVhbGlmaWVkTmFtZXM+U3lzTUw6OkJsb2Nrczo6RW5kUGF0aE11bHRpcGxpY2l0eTwvc3RlcmVvdHlwZXNRdWFsaWZpZWROYW1lcz4NCisgICAgPC9tYXRjaGVyQ29uZmlndXJhdGlvbj4NCisgIDwvZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucz4NCisgIDxlbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zDQorICAgICAgeHNpOnR5cGU9ImVsZW1lbnR0eXBlc2NvbmZpZ3VyYXRpb25zOlNwZWNpYWxpemF0aW9uVHlwZUNvbmZpZ3VyYXRpb24iDQorICAgICAgeG1pOmlkPSJfTG9LWFdNSlFFZVNYOU1vS01CVjVHdyINCisgICAgICBuYW1lPSJFbmRQYXRoTXVsdGlwbGljaXR5ICgzMDA1KSINCisgICAgICBpZGVudGlmaWVyPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLkVuZFBhdGhNdWx0aXBsaWNpdHlfMzAwNSINCisgICAgICBoaW50PSIzMDA1Ij4NCisgICAgPGljb25FbnRyeQ0KKyAgICAgICAgeG1pOmlkPSJfTG9LWFdjSlFFZVNYOU1vS01CVjVHdyINCisgICAgICAgIGljb25QYXRoPSIvaWNvbnMvZnVsbC9vYmoxNi9Qcm9wZXJ0eS5naWYiDQorICAgICAgICBidW5kbGVJZD0ib3JnLmVjbGlwc2UudW1sMi51bWwuZWRpdCIvPg0KKyAgICA8c3BlY2lhbGl6ZWRUeXBlc0lEPm9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5FbmRQYXRoTXVsdGlwbGljaXR5PC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy51bWwuZGlhZ3JhbS5jbGF6ei5Qcm9wZXJ0eV8zMDA1PC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICAgIDxtYXRjaGVyQ29uZmlndXJhdGlvbg0KKyAgICAgICAgeHNpOnR5cGU9InN0ZXJlb3R5cGVhcHBsaWNhdGlvbm1hdGNoZXJjb25maWd1cmF0aW9uOlN0ZXJlb3R5cGVBcHBsaWNhdGlvbk1hdGNoZXJDb25maWd1cmF0aW9uIg0KKyAgICAgICAgeG1pOmlkPSJfTG9LWFdzSlFFZVNYOU1vS01CVjVHdyI+DQorICAgICAgPHN0ZXJlb3R5cGVzUXVhbGlmaWVkTmFtZXM+U3lzTUw6OkJsb2Nrczo6RW5kUGF0aE11bHRpcGxpY2l0eTwvc3RlcmVvdHlwZXNRdWFsaWZpZWROYW1lcz4NCisgICAgPC9tYXRjaGVyQ29uZmlndXJhdGlvbj4NCisgIDwvZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucz4NCisgIDxlbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zDQorICAgICAgeHNpOnR5cGU9ImVsZW1lbnR0eXBlc2NvbmZpZ3VyYXRpb25zOlNwZWNpYWxpemF0aW9uVHlwZUNvbmZpZ3VyYXRpb24iDQorICAgICAgeG1pOmlkPSJfTG9LWFc4SlFFZVNYOU1vS01CVjVHdyINCisgICAgICBuYW1lPSJFbmRQYXRoTXVsdGlwbGljaXR5ICgzMDA2KSINCisgICAgICBpZGVudGlmaWVyPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLkVuZFBhdGhNdWx0aXBsaWNpdHlfMzAwNiINCisgICAgICBoaW50PSIzMDA2Ij4NCisgICAgPGljb25FbnRyeQ0KKyAgICAgICAgeG1pOmlkPSJfTG9LWFhNSlFFZVNYOU1vS01CVjVHdyINCisgICAgICAgIGljb25QYXRoPSIvaWNvbnMvZnVsbC9vYmoxNi9Qcm9wZXJ0eS5naWYiDQorICAgICAgICBidW5kbGVJZD0ib3JnLmVjbGlwc2UudW1sMi51bWwuZWRpdCIvPg0KKyAgICA8c3BlY2lhbGl6ZWRUeXBlc0lEPm9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5FbmRQYXRoTXVsdGlwbGljaXR5PC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy51bWwuZGlhZ3JhbS5jbGF6ei5Qcm9wZXJ0eV8zMDA2PC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICAgIDxtYXRjaGVyQ29uZmlndXJhdGlvbg0KKyAgICAgICAgeHNpOnR5cGU9InN0ZXJlb3R5cGVhcHBsaWNhdGlvbm1hdGNoZXJjb25maWd1cmF0aW9uOlN0ZXJlb3R5cGVBcHBsaWNhdGlvbk1hdGNoZXJDb25maWd1cmF0aW9uIg0KKyAgICAgICAgeG1pOmlkPSJfTG9LWFhjSlFFZVNYOU1vS01CVjVHdyI+DQorICAgICAgPHN0ZXJlb3R5cGVzUXVhbGlmaWVkTmFtZXM+U3lzTUw6OkJsb2Nrczo6RW5kUGF0aE11bHRpcGxpY2l0eTwvc3RlcmVvdHlwZXNRdWFsaWZpZWROYW1lcz4NCisgICAgPC9tYXRjaGVyQ29uZmlndXJhdGlvbj4NCisgIDwvZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucz4NCisgIDxlbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zDQorICAgICAgeHNpOnR5cGU9ImVsZW1lbnR0eXBlc2NvbmZpZ3VyYXRpb25zOlNwZWNpYWxpemF0aW9uVHlwZUNvbmZpZ3VyYXRpb24iDQorICAgICAgeG1pOmlkPSJfTG9LWFhzSlFFZVNYOU1vS01CVjVHdyINCisgICAgICBuYW1lPSJFbmRQYXRoTXVsdGlwbGljaXR5ICgzMDEyKSINCisgICAgICBpZGVudGlmaWVyPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLkVuZFBhdGhNdWx0aXBsaWNpdHlfMzAxMiINCisgICAgICBoaW50PSIzMDEyIj4NCisgICAgPGljb25FbnRyeQ0KKyAgICAgICAgeG1pOmlkPSJfTG9LWFg4SlFFZVNYOU1vS01CVjVHdyINCisgICAgICAgIGljb25QYXRoPSIvaWNvbnMvZnVsbC9vYmoxNi9Qcm9wZXJ0eS5naWYiDQorICAgICAgICBidW5kbGVJZD0ib3JnLmVjbGlwc2UudW1sMi51bWwuZWRpdCIvPg0KKyAgICA8c3BlY2lhbGl6ZWRUeXBlc0lEPm9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5FbmRQYXRoTXVsdGlwbGljaXR5PC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy51bWwuZGlhZ3JhbS5jbGF6ei5Qcm9wZXJ0eV8zMDEyPC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICAgIDxtYXRjaGVyQ29uZmlndXJhdGlvbg0KKyAgICAgICAgeHNpOnR5cGU9InN0ZXJlb3R5cGVhcHBsaWNhdGlvbm1hdGNoZXJjb25maWd1cmF0aW9uOlN0ZXJlb3R5cGVBcHBsaWNhdGlvbk1hdGNoZXJDb25maWd1cmF0aW9uIg0KKyAgICAgICAgeG1pOmlkPSJfTG9LWFlNSlFFZVNYOU1vS01CVjVHdyI+DQorICAgICAgPHN0ZXJlb3R5cGVzUXVhbGlmaWVkTmFtZXM+U3lzTUw6OkJsb2Nrczo6RW5kUGF0aE11bHRpcGxpY2l0eTwvc3RlcmVvdHlwZXNRdWFsaWZpZWROYW1lcz4NCisgICAgPC9tYXRjaGVyQ29uZmlndXJhdGlvbj4NCisgIDwvZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucz4NCisgIDxlbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zDQorICAgICAgeHNpOnR5cGU9ImVsZW1lbnR0eXBlc2NvbmZpZ3VyYXRpb25zOlNwZWNpYWxpemF0aW9uVHlwZUNvbmZpZ3VyYXRpb24iDQorICAgICAgeG1pOmlkPSJfTG9LWFljSlFFZVNYOU1vS01CVjVHdyINCisgICAgICBuYW1lPSJFbmRQYXRoTXVsdGlwbGljaXR5ICgzMDE4KSINCisgICAgICBpZGVudGlmaWVyPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLkVuZFBhdGhNdWx0aXBsaWNpdHlfMzAxOCINCisgICAgICBoaW50PSIzMDE4Ij4NCisgICAgPGljb25FbnRyeQ0KKyAgICAgICAgeG1pOmlkPSJfTG9LWFlzSlFFZVNYOU1vS01CVjVHdyINCisgICAgICAgIGljb25QYXRoPSIvaWNvbnMvZnVsbC9vYmoxNi9Qcm9wZXJ0eS5naWYiDQorICAgICAgICBidW5kbGVJZD0ib3JnLmVjbGlwc2UudW1sMi51bWwuZWRpdCIvPg0KKyAgICA8c3BlY2lhbGl6ZWRUeXBlc0lEPm9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5FbmRQYXRoTXVsdGlwbGljaXR5PC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy51bWwuZGlhZ3JhbS5jbGF6ei5Qcm9wZXJ0eV8zMDE4PC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICAgIDxtYXRjaGVyQ29uZmlndXJhdGlvbg0KKyAgICAgICAgeHNpOnR5cGU9InN0ZXJlb3R5cGVhcHBsaWNhdGlvbm1hdGNoZXJjb25maWd1cmF0aW9uOlN0ZXJlb3R5cGVBcHBsaWNhdGlvbk1hdGNoZXJDb25maWd1cmF0aW9uIg0KKyAgICAgICAgeG1pOmlkPSJfTG9LWFk4SlFFZVNYOU1vS01CVjVHdyI+DQorICAgICAgPHN0ZXJlb3R5cGVzUXVhbGlmaWVkTmFtZXM+U3lzTUw6OkJsb2Nrczo6RW5kUGF0aE11bHRpcGxpY2l0eTwvc3RlcmVvdHlwZXNRdWFsaWZpZWROYW1lcz4NCisgICAgPC9tYXRjaGVyQ29uZmlndXJhdGlvbj4NCisgIDwvZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucz4NCisgIDxlbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zDQorICAgICAgeHNpOnR5cGU9ImVsZW1lbnR0eXBlc2NvbmZpZ3VyYXRpb25zOlNwZWNpYWxpemF0aW9uVHlwZUNvbmZpZ3VyYXRpb24iDQorICAgICAgeG1pOmlkPSJfTG9LWFpNSlFFZVNYOU1vS01CVjVHdyINCisgICAgICBuYW1lPSJFbmRQYXRoTXVsdGlwbGljaXR5ICgzMDQxKSINCisgICAgICBpZGVudGlmaWVyPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLkVuZFBhdGhNdWx0aXBsaWNpdHlfMzA0MSINCisgICAgICBoaW50PSIzMDQxIj4NCisgICAgPGljb25FbnRyeQ0KKyAgICAgICAgeG1pOmlkPSJfTG9LWFpjSlFFZVNYOU1vS01CVjVHdyINCisgICAgICAgIGljb25QYXRoPSIvaWNvbnMvZnVsbC9vYmoxNi9Qcm9wZXJ0eS5naWYiDQorICAgICAgICBidW5kbGVJZD0ib3JnLmVjbGlwc2UudW1sMi51bWwuZWRpdCIvPg0KKyAgICA8c3BlY2lhbGl6ZWRUeXBlc0lEPm9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5FbmRQYXRoTXVsdGlwbGljaXR5PC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy51bWwuZGlhZ3JhbS5jbGF6ei5Qcm9wZXJ0eV8zMDQxPC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICAgIDxtYXRjaGVyQ29uZmlndXJhdGlvbg0KKyAgICAgICAgeHNpOnR5cGU9InN0ZXJlb3R5cGVhcHBsaWNhdGlvbm1hdGNoZXJjb25maWd1cmF0aW9uOlN0ZXJlb3R5cGVBcHBsaWNhdGlvbk1hdGNoZXJDb25maWd1cmF0aW9uIg0KKyAgICAgICAgeG1pOmlkPSJfTG9LWFpzSlFFZVNYOU1vS01CVjVHdyI+DQorICAgICAgPHN0ZXJlb3R5cGVzUXVhbGlmaWVkTmFtZXM+U3lzTUw6OkJsb2Nrczo6RW5kUGF0aE11bHRpcGxpY2l0eTwvc3RlcmVvdHlwZXNRdWFsaWZpZWROYW1lcz4NCisgICAgPC9tYXRjaGVyQ29uZmlndXJhdGlvbj4NCisgIDwvZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucz4NCisgIDxlbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zDQorICAgICAgeHNpOnR5cGU9ImVsZW1lbnR0eXBlc2NvbmZpZ3VyYXRpb25zOlNwZWNpYWxpemF0aW9uVHlwZUNvbmZpZ3VyYXRpb24iDQorICAgICAgeG1pOmlkPSJfTG9LWFo4SlFFZVNYOU1vS01CVjVHdyINCisgICAgICBuYW1lPSJCb3VuZFJlZmVyZW5jZSAoMzAwMikiDQorICAgICAgaWRlbnRpZmllcj0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5Cb3VuZFJlZmVyZW5jZV8zMDAyIg0KKyAgICAgIGhpbnQ9IjMwMDIiPg0KKyAgICA8aWNvbkVudHJ5DQorICAgICAgICB4bWk6aWQ9Il9Mb0tYYU1KUUVlU1g5TW9LTUJWNUd3Ig0KKyAgICAgICAgaWNvblBhdGg9Ii9pY29ucy9mdWxsL29iajE2L1Byb3BlcnR5LmdpZiINCisgICAgICAgIGJ1bmRsZUlkPSJvcmcuZWNsaXBzZS51bWwyLnVtbC5lZGl0Ii8+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LkJvdW5kUmVmZXJlbmNlPC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy51bWwuZGlhZ3JhbS5jbGF6ei5Qcm9wZXJ0eV8zMDAyPC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICAgIDxtYXRjaGVyQ29uZmlndXJhdGlvbg0KKyAgICAgICAgeHNpOnR5cGU9InN0ZXJlb3R5cGVhcHBsaWNhdGlvbm1hdGNoZXJjb25maWd1cmF0aW9uOlN0ZXJlb3R5cGVBcHBsaWNhdGlvbk1hdGNoZXJDb25maWd1cmF0aW9uIg0KKyAgICAgICAgeG1pOmlkPSJfTG9LWGFjSlFFZVNYOU1vS01CVjVHdyI+DQorICAgICAgPHN0ZXJlb3R5cGVzUXVhbGlmaWVkTmFtZXM+U3lzTUw6OkJsb2Nrczo6Qm91bmRSZWZlcmVuY2U8L3N0ZXJlb3R5cGVzUXVhbGlmaWVkTmFtZXM+DQorICAgIDwvbWF0Y2hlckNvbmZpZ3VyYXRpb24+DQorICA8L2VsZW1lbnRUeXBlQ29uZmlndXJhdGlvbnM+DQorICA8ZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucw0KKyAgICAgIHhzaTp0eXBlPSJlbGVtZW50dHlwZXNjb25maWd1cmF0aW9uczpTcGVjaWFsaXphdGlvblR5cGVDb25maWd1cmF0aW9uIg0KKyAgICAgIHhtaTppZD0iX0xvS1hhc0pRRWVTWDlNb0tNQlY1R3ciDQorICAgICAgbmFtZT0iQm91bmRSZWZlcmVuY2UgKDMwMDUpIg0KKyAgICAgIGlkZW50aWZpZXI9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuQm91bmRSZWZlcmVuY2VfMzAwNSINCisgICAgICBoaW50PSIzMDA1Ij4NCisgICAgPGljb25FbnRyeQ0KKyAgICAgICAgeG1pOmlkPSJfTG9LWGE4SlFFZVNYOU1vS01CVjVHdyINCisgICAgICAgIGljb25QYXRoPSIvaWNvbnMvZnVsbC9vYmoxNi9Qcm9wZXJ0eS5naWYiDQorICAgICAgICBidW5kbGVJZD0ib3JnLmVjbGlwc2UudW1sMi51bWwuZWRpdCIvPg0KKyAgICA8c3BlY2lhbGl6ZWRUeXBlc0lEPm9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5Cb3VuZFJlZmVyZW5jZTwvc3BlY2lhbGl6ZWRUeXBlc0lEPg0KKyAgICA8c3BlY2lhbGl6ZWRUeXBlc0lEPm9yZy5lY2xpcHNlLnBhcHlydXMudW1sLmRpYWdyYW0uY2xhenouUHJvcGVydHlfMzAwNTwvc3BlY2lhbGl6ZWRUeXBlc0lEPg0KKyAgICA8bWF0Y2hlckNvbmZpZ3VyYXRpb24NCisgICAgICAgIHhzaTp0eXBlPSJzdGVyZW90eXBlYXBwbGljYXRpb25tYXRjaGVyY29uZmlndXJhdGlvbjpTdGVyZW90eXBlQXBwbGljYXRpb25NYXRjaGVyQ29uZmlndXJhdGlvbiINCisgICAgICAgIHhtaTppZD0iX0xvS1hiTUpRRWVTWDlNb0tNQlY1R3ciPg0KKyAgICAgIDxzdGVyZW90eXBlc1F1YWxpZmllZE5hbWVzPlN5c01MOjpCbG9ja3M6OkJvdW5kUmVmZXJlbmNlPC9zdGVyZW90eXBlc1F1YWxpZmllZE5hbWVzPg0KKyAgICA8L21hdGNoZXJDb25maWd1cmF0aW9uPg0KKyAgPC9lbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zPg0KKyAgPGVsZW1lbnRUeXBlQ29uZmlndXJhdGlvbnMNCisgICAgICB4c2k6dHlwZT0iZWxlbWVudHR5cGVzY29uZmlndXJhdGlvbnM6U3BlY2lhbGl6YXRpb25UeXBlQ29uZmlndXJhdGlvbiINCisgICAgICB4bWk6aWQ9Il9Mb0tYYmNKUUVlU1g5TW9LTUJWNUd3Ig0KKyAgICAgIG5hbWU9IkJvdW5kUmVmZXJlbmNlICgzMDA2KSINCisgICAgICBpZGVudGlmaWVyPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLkJvdW5kUmVmZXJlbmNlXzMwMDYiDQorICAgICAgaGludD0iMzAwNiI+DQorICAgIDxpY29uRW50cnkNCisgICAgICAgIHhtaTppZD0iX0xvS1hic0pRRWVTWDlNb0tNQlY1R3ciDQorICAgICAgICBpY29uUGF0aD0iL2ljb25zL2Z1bGwvb2JqMTYvUHJvcGVydHkuZ2lmIg0KKyAgICAgICAgYnVuZGxlSWQ9Im9yZy5lY2xpcHNlLnVtbDIudW1sLmVkaXQiLz4NCisgICAgPHNwZWNpYWxpemVkVHlwZXNJRD5vcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuQm91bmRSZWZlcmVuY2U8L3NwZWNpYWxpemVkVHlwZXNJRD4NCisgICAgPHNwZWNpYWxpemVkVHlwZXNJRD5vcmcuZWNsaXBzZS5wYXB5cnVzLnVtbC5kaWFncmFtLmNsYXp6LlByb3BlcnR5XzMwMDY8L3NwZWNpYWxpemVkVHlwZXNJRD4NCisgICAgPG1hdGNoZXJDb25maWd1cmF0aW9uDQorICAgICAgICB4c2k6dHlwZT0ic3RlcmVvdHlwZWFwcGxpY2F0aW9ubWF0Y2hlcmNvbmZpZ3VyYXRpb246U3RlcmVvdHlwZUFwcGxpY2F0aW9uTWF0Y2hlckNvbmZpZ3VyYXRpb24iDQorICAgICAgICB4bWk6aWQ9Il9Mb0tYYjhKUUVlU1g5TW9LTUJWNUd3Ij4NCisgICAgICA8c3RlcmVvdHlwZXNRdWFsaWZpZWROYW1lcz5TeXNNTDo6QmxvY2tzOjpCb3VuZFJlZmVyZW5jZTwvc3RlcmVvdHlwZXNRdWFsaWZpZWROYW1lcz4NCisgICAgPC9tYXRjaGVyQ29uZmlndXJhdGlvbj4NCisgIDwvZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucz4NCisgIDxlbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zDQorICAgICAgeHNpOnR5cGU9ImVsZW1lbnR0eXBlc2NvbmZpZ3VyYXRpb25zOlNwZWNpYWxpemF0aW9uVHlwZUNvbmZpZ3VyYXRpb24iDQorICAgICAgeG1pOmlkPSJfTG9LWGNNSlFFZVNYOU1vS01CVjVHdyINCisgICAgICBuYW1lPSJCb3VuZFJlZmVyZW5jZSAoMzAxMikiDQorICAgICAgaWRlbnRpZmllcj0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5Cb3VuZFJlZmVyZW5jZV8zMDEyIg0KKyAgICAgIGhpbnQ9IjMwMTIiPg0KKyAgICA8aWNvbkVudHJ5DQorICAgICAgICB4bWk6aWQ9Il9Mb0tYY2NKUUVlU1g5TW9LTUJWNUd3Ig0KKyAgICAgICAgaWNvblBhdGg9Ii9pY29ucy9mdWxsL29iajE2L1Byb3BlcnR5LmdpZiINCisgICAgICAgIGJ1bmRsZUlkPSJvcmcuZWNsaXBzZS51bWwyLnVtbC5lZGl0Ii8+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LkJvdW5kUmVmZXJlbmNlPC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy51bWwuZGlhZ3JhbS5jbGF6ei5Qcm9wZXJ0eV8zMDEyPC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICAgIDxtYXRjaGVyQ29uZmlndXJhdGlvbg0KKyAgICAgICAgeHNpOnR5cGU9InN0ZXJlb3R5cGVhcHBsaWNhdGlvbm1hdGNoZXJjb25maWd1cmF0aW9uOlN0ZXJlb3R5cGVBcHBsaWNhdGlvbk1hdGNoZXJDb25maWd1cmF0aW9uIg0KKyAgICAgICAgeG1pOmlkPSJfTG9LWGNzSlFFZVNYOU1vS01CVjVHdyI+DQorICAgICAgPHN0ZXJlb3R5cGVzUXVhbGlmaWVkTmFtZXM+U3lzTUw6OkJsb2Nrczo6Qm91bmRSZWZlcmVuY2U8L3N0ZXJlb3R5cGVzUXVhbGlmaWVkTmFtZXM+DQorICAgIDwvbWF0Y2hlckNvbmZpZ3VyYXRpb24+DQorICA8L2VsZW1lbnRUeXBlQ29uZmlndXJhdGlvbnM+DQorICA8ZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucw0KKyAgICAgIHhzaTp0eXBlPSJlbGVtZW50dHlwZXNjb25maWd1cmF0aW9uczpTcGVjaWFsaXphdGlvblR5cGVDb25maWd1cmF0aW9uIg0KKyAgICAgIHhtaTppZD0iX0xvS1hjOEpRRWVTWDlNb0tNQlY1R3ciDQorICAgICAgbmFtZT0iQm91bmRSZWZlcmVuY2UgKDMwMTgpIg0KKyAgICAgIGlkZW50aWZpZXI9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuQm91bmRSZWZlcmVuY2VfMzAxOCINCisgICAgICBoaW50PSIzMDE4Ij4NCisgICAgPGljb25FbnRyeQ0KKyAgICAgICAgeG1pOmlkPSJfTG9LWGRNSlFFZVNYOU1vS01CVjVHdyINCisgICAgICAgIGljb25QYXRoPSIvaWNvbnMvZnVsbC9vYmoxNi9Qcm9wZXJ0eS5naWYiDQorICAgICAgICBidW5kbGVJZD0ib3JnLmVjbGlwc2UudW1sMi51bWwuZWRpdCIvPg0KKyAgICA8c3BlY2lhbGl6ZWRUeXBlc0lEPm9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5Cb3VuZFJlZmVyZW5jZTwvc3BlY2lhbGl6ZWRUeXBlc0lEPg0KKyAgICA8c3BlY2lhbGl6ZWRUeXBlc0lEPm9yZy5lY2xpcHNlLnBhcHlydXMudW1sLmRpYWdyYW0uY2xhenouUHJvcGVydHlfMzAxODwvc3BlY2lhbGl6ZWRUeXBlc0lEPg0KKyAgICA8bWF0Y2hlckNvbmZpZ3VyYXRpb24NCisgICAgICAgIHhzaTp0eXBlPSJzdGVyZW90eXBlYXBwbGljYXRpb25tYXRjaGVyY29uZmlndXJhdGlvbjpTdGVyZW90eXBlQXBwbGljYXRpb25NYXRjaGVyQ29uZmlndXJhdGlvbiINCisgICAgICAgIHhtaTppZD0iX0xvS1hkY0pRRWVTWDlNb0tNQlY1R3ciPg0KKyAgICAgIDxzdGVyZW90eXBlc1F1YWxpZmllZE5hbWVzPlN5c01MOjpCbG9ja3M6OkJvdW5kUmVmZXJlbmNlPC9zdGVyZW90eXBlc1F1YWxpZmllZE5hbWVzPg0KKyAgICA8L21hdGNoZXJDb25maWd1cmF0aW9uPg0KKyAgPC9lbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zPg0KKyAgPGVsZW1lbnRUeXBlQ29uZmlndXJhdGlvbnMNCisgICAgICB4c2k6dHlwZT0iZWxlbWVudHR5cGVzY29uZmlndXJhdGlvbnM6U3BlY2lhbGl6YXRpb25UeXBlQ29uZmlndXJhdGlvbiINCisgICAgICB4bWk6aWQ9Il9Mb0tYZHNKUUVlU1g5TW9LTUJWNUd3Ig0KKyAgICAgIG5hbWU9IkJvdW5kUmVmZXJlbmNlICgzMDQxKSINCisgICAgICBpZGVudGlmaWVyPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLkJvdW5kUmVmZXJlbmNlXzMwNDEiDQorICAgICAgaGludD0iMzA0MSI+DQorICAgIDxpY29uRW50cnkNCisgICAgICAgIHhtaTppZD0iX0xvS1hkOEpRRWVTWDlNb0tNQlY1R3ciDQorICAgICAgICBpY29uUGF0aD0iL2ljb25zL2Z1bGwvb2JqMTYvUHJvcGVydHkuZ2lmIg0KKyAgICAgICAgYnVuZGxlSWQ9Im9yZy5lY2xpcHNlLnVtbDIudW1sLmVkaXQiLz4NCisgICAgPHNwZWNpYWxpemVkVHlwZXNJRD5vcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuQm91bmRSZWZlcmVuY2U8L3NwZWNpYWxpemVkVHlwZXNJRD4NCisgICAgPHNwZWNpYWxpemVkVHlwZXNJRD5vcmcuZWNsaXBzZS5wYXB5cnVzLnVtbC5kaWFncmFtLmNsYXp6LlByb3BlcnR5XzMwNDE8L3NwZWNpYWxpemVkVHlwZXNJRD4NCisgICAgPG1hdGNoZXJDb25maWd1cmF0aW9uDQorICAgICAgICB4c2k6dHlwZT0ic3RlcmVvdHlwZWFwcGxpY2F0aW9ubWF0Y2hlcmNvbmZpZ3VyYXRpb246U3RlcmVvdHlwZUFwcGxpY2F0aW9uTWF0Y2hlckNvbmZpZ3VyYXRpb24iDQorICAgICAgICB4bWk6aWQ9Il9Mb0tYZU1KUUVlU1g5TW9LTUJWNUd3Ij4NCisgICAgICA8c3RlcmVvdHlwZXNRdWFsaWZpZWROYW1lcz5TeXNNTDo6QmxvY2tzOjpCb3VuZFJlZmVyZW5jZTwvc3RlcmVvdHlwZXNRdWFsaWZpZWROYW1lcz4NCisgICAgPC9tYXRjaGVyQ29uZmlndXJhdGlvbj4NCisgIDwvZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucz4NCisgIDxlbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zDQorICAgICAgeHNpOnR5cGU9ImVsZW1lbnR0eXBlc2NvbmZpZ3VyYXRpb25zOlNwZWNpYWxpemF0aW9uVHlwZUNvbmZpZ3VyYXRpb24iDQorICAgICAgeG1pOmlkPSJfTG9LWGVjSlFFZVNYOU1vS01CVjVHdyINCisgICAgICBuYW1lPSJBZGp1bmN0UHJvcGVydHkgKDMwMDIpIg0KKyAgICAgIGlkZW50aWZpZXI9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuQWRqdW5jdFByb3BlcnR5XzMwMDIiDQorICAgICAgaGludD0iMzAwMiI+DQorICAgIDxpY29uRW50cnkNCisgICAgICAgIHhtaTppZD0iX0xvS1hlc0pRRWVTWDlNb0tNQlY1R3ciDQorICAgICAgICBpY29uUGF0aD0iL2ljb25zL2Z1bGwvb2JqMTYvUHJvcGVydHkuZ2lmIg0KKyAgICAgICAgYnVuZGxlSWQ9Im9yZy5lY2xpcHNlLnVtbDIudW1sLmVkaXQiLz4NCisgICAgPHNwZWNpYWxpemVkVHlwZXNJRD5vcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuQWRqdW5jdFByb3BlcnR5PC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy51bWwuZGlhZ3JhbS5jbGF6ei5Qcm9wZXJ0eV8zMDAyPC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICAgIDxtYXRjaGVyQ29uZmlndXJhdGlvbg0KKyAgICAgICAgeHNpOnR5cGU9InN0ZXJlb3R5cGVhcHBsaWNhdGlvbm1hdGNoZXJjb25maWd1cmF0aW9uOlN0ZXJlb3R5cGVBcHBsaWNhdGlvbk1hdGNoZXJDb25maWd1cmF0aW9uIg0KKyAgICAgICAgeG1pOmlkPSJfTG9LWGU4SlFFZVNYOU1vS01CVjVHdyI+DQorICAgICAgPHN0ZXJlb3R5cGVzUXVhbGlmaWVkTmFtZXM+U3lzTUw6OkJsb2Nrczo6QWRqdW5jdFByb3BlcnR5PC9zdGVyZW90eXBlc1F1YWxpZmllZE5hbWVzPg0KKyAgICA8L21hdGNoZXJDb25maWd1cmF0aW9uPg0KKyAgPC9lbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zPg0KKyAgPGVsZW1lbnRUeXBlQ29uZmlndXJhdGlvbnMNCisgICAgICB4c2k6dHlwZT0iZWxlbWVudHR5cGVzY29uZmlndXJhdGlvbnM6U3BlY2lhbGl6YXRpb25UeXBlQ29uZmlndXJhdGlvbiINCisgICAgICB4bWk6aWQ9Il9Mb0tYZk1KUUVlU1g5TW9LTUJWNUd3Ig0KKyAgICAgIG5hbWU9IkFkanVuY3RQcm9wZXJ0eSAoMzAwNSkiDQorICAgICAgaWRlbnRpZmllcj0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5BZGp1bmN0UHJvcGVydHlfMzAwNSINCisgICAgICBoaW50PSIzMDA1Ij4NCisgICAgPGljb25FbnRyeQ0KKyAgICAgICAgeG1pOmlkPSJfTG9LWGZjSlFFZVNYOU1vS01CVjVHdyINCisgICAgICAgIGljb25QYXRoPSIvaWNvbnMvZnVsbC9vYmoxNi9Qcm9wZXJ0eS5naWYiDQorICAgICAgICBidW5kbGVJZD0ib3JnLmVjbGlwc2UudW1sMi51bWwuZWRpdCIvPg0KKyAgICA8c3BlY2lhbGl6ZWRUeXBlc0lEPm9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5BZGp1bmN0UHJvcGVydHk8L3NwZWNpYWxpemVkVHlwZXNJRD4NCisgICAgPHNwZWNpYWxpemVkVHlwZXNJRD5vcmcuZWNsaXBzZS5wYXB5cnVzLnVtbC5kaWFncmFtLmNsYXp6LlByb3BlcnR5XzMwMDU8L3NwZWNpYWxpemVkVHlwZXNJRD4NCisgICAgPG1hdGNoZXJDb25maWd1cmF0aW9uDQorICAgICAgICB4c2k6dHlwZT0ic3RlcmVvdHlwZWFwcGxpY2F0aW9ubWF0Y2hlcmNvbmZpZ3VyYXRpb246U3RlcmVvdHlwZUFwcGxpY2F0aW9uTWF0Y2hlckNvbmZpZ3VyYXRpb24iDQorICAgICAgICB4bWk6aWQ9Il9Mb0tYZnNKUUVlU1g5TW9LTUJWNUd3Ij4NCisgICAgICA8c3RlcmVvdHlwZXNRdWFsaWZpZWROYW1lcz5TeXNNTDo6QmxvY2tzOjpBZGp1bmN0UHJvcGVydHk8L3N0ZXJlb3R5cGVzUXVhbGlmaWVkTmFtZXM+DQorICAgIDwvbWF0Y2hlckNvbmZpZ3VyYXRpb24+DQorICA8L2VsZW1lbnRUeXBlQ29uZmlndXJhdGlvbnM+DQorICA8ZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucw0KKyAgICAgIHhzaTp0eXBlPSJlbGVtZW50dHlwZXNjb25maWd1cmF0aW9uczpTcGVjaWFsaXphdGlvblR5cGVDb25maWd1cmF0aW9uIg0KKyAgICAgIHhtaTppZD0iX0xvS1hmOEpRRWVTWDlNb0tNQlY1R3ciDQorICAgICAgbmFtZT0iQWRqdW5jdFByb3BlcnR5ICgzMDA2KSINCisgICAgICBpZGVudGlmaWVyPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLkFkanVuY3RQcm9wZXJ0eV8zMDA2Ig0KKyAgICAgIGhpbnQ9IjMwMDYiPg0KKyAgICA8aWNvbkVudHJ5DQorICAgICAgICB4bWk6aWQ9Il9Mb0tYZ01KUUVlU1g5TW9LTUJWNUd3Ig0KKyAgICAgICAgaWNvblBhdGg9Ii9pY29ucy9mdWxsL29iajE2L1Byb3BlcnR5LmdpZiINCisgICAgICAgIGJ1bmRsZUlkPSJvcmcuZWNsaXBzZS51bWwyLnVtbC5lZGl0Ii8+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LkFkanVuY3RQcm9wZXJ0eTwvc3BlY2lhbGl6ZWRUeXBlc0lEPg0KKyAgICA8c3BlY2lhbGl6ZWRUeXBlc0lEPm9yZy5lY2xpcHNlLnBhcHlydXMudW1sLmRpYWdyYW0uY2xhenouUHJvcGVydHlfMzAwNjwvc3BlY2lhbGl6ZWRUeXBlc0lEPg0KKyAgICA8bWF0Y2hlckNvbmZpZ3VyYXRpb24NCisgICAgICAgIHhzaTp0eXBlPSJzdGVyZW90eXBlYXBwbGljYXRpb25tYXRjaGVyY29uZmlndXJhdGlvbjpTdGVyZW90eXBlQXBwbGljYXRpb25NYXRjaGVyQ29uZmlndXJhdGlvbiINCisgICAgICAgIHhtaTppZD0iX0xvS1hnY0pRRWVTWDlNb0tNQlY1R3ciPg0KKyAgICAgIDxzdGVyZW90eXBlc1F1YWxpZmllZE5hbWVzPlN5c01MOjpCbG9ja3M6OkFkanVuY3RQcm9wZXJ0eTwvc3RlcmVvdHlwZXNRdWFsaWZpZWROYW1lcz4NCisgICAgPC9tYXRjaGVyQ29uZmlndXJhdGlvbj4NCisgIDwvZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucz4NCisgIDxlbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zDQorICAgICAgeHNpOnR5cGU9ImVsZW1lbnR0eXBlc2NvbmZpZ3VyYXRpb25zOlNwZWNpYWxpemF0aW9uVHlwZUNvbmZpZ3VyYXRpb24iDQorICAgICAgeG1pOmlkPSJfTG9LWGdzSlFFZVNYOU1vS01CVjVHdyINCisgICAgICBuYW1lPSJBZGp1bmN0UHJvcGVydHkgKDMwMTIpIg0KKyAgICAgIGlkZW50aWZpZXI9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuQWRqdW5jdFByb3BlcnR5XzMwMTIiDQorICAgICAgaGludD0iMzAxMiI+DQorICAgIDxpY29uRW50cnkNCisgICAgICAgIHhtaTppZD0iX0xvS1hnOEpRRWVTWDlNb0tNQlY1R3ciDQorICAgICAgICBpY29uUGF0aD0iL2ljb25zL2Z1bGwvb2JqMTYvUHJvcGVydHkuZ2lmIg0KKyAgICAgICAgYnVuZGxlSWQ9Im9yZy5lY2xpcHNlLnVtbDIudW1sLmVkaXQiLz4NCisgICAgPHNwZWNpYWxpemVkVHlwZXNJRD5vcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuQWRqdW5jdFByb3BlcnR5PC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy51bWwuZGlhZ3JhbS5jbGF6ei5Qcm9wZXJ0eV8zMDEyPC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICAgIDxtYXRjaGVyQ29uZmlndXJhdGlvbg0KKyAgICAgICAgeHNpOnR5cGU9InN0ZXJlb3R5cGVhcHBsaWNhdGlvbm1hdGNoZXJjb25maWd1cmF0aW9uOlN0ZXJlb3R5cGVBcHBsaWNhdGlvbk1hdGNoZXJDb25maWd1cmF0aW9uIg0KKyAgICAgICAgeG1pOmlkPSJfTG9LWGhNSlFFZVNYOU1vS01CVjVHdyI+DQorICAgICAgPHN0ZXJlb3R5cGVzUXVhbGlmaWVkTmFtZXM+U3lzTUw6OkJsb2Nrczo6QWRqdW5jdFByb3BlcnR5PC9zdGVyZW90eXBlc1F1YWxpZmllZE5hbWVzPg0KKyAgICA8L21hdGNoZXJDb25maWd1cmF0aW9uPg0KKyAgPC9lbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zPg0KKyAgPGVsZW1lbnRUeXBlQ29uZmlndXJhdGlvbnMNCisgICAgICB4c2k6dHlwZT0iZWxlbWVudHR5cGVzY29uZmlndXJhdGlvbnM6U3BlY2lhbGl6YXRpb25UeXBlQ29uZmlndXJhdGlvbiINCisgICAgICB4bWk6aWQ9Il9Mb0tYaGNKUUVlU1g5TW9LTUJWNUd3Ig0KKyAgICAgIG5hbWU9IkFkanVuY3RQcm9wZXJ0eSAoMzAxOCkiDQorICAgICAgaWRlbnRpZmllcj0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5BZGp1bmN0UHJvcGVydHlfMzAxOCINCisgICAgICBoaW50PSIzMDE4Ij4NCisgICAgPGljb25FbnRyeQ0KKyAgICAgICAgeG1pOmlkPSJfTG9LWGhzSlFFZVNYOU1vS01CVjVHdyINCisgICAgICAgIGljb25QYXRoPSIvaWNvbnMvZnVsbC9vYmoxNi9Qcm9wZXJ0eS5naWYiDQorICAgICAgICBidW5kbGVJZD0ib3JnLmVjbGlwc2UudW1sMi51bWwuZWRpdCIvPg0KKyAgICA8c3BlY2lhbGl6ZWRUeXBlc0lEPm9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5BZGp1bmN0UHJvcGVydHk8L3NwZWNpYWxpemVkVHlwZXNJRD4NCisgICAgPHNwZWNpYWxpemVkVHlwZXNJRD5vcmcuZWNsaXBzZS5wYXB5cnVzLnVtbC5kaWFncmFtLmNsYXp6LlByb3BlcnR5XzMwMTg8L3NwZWNpYWxpemVkVHlwZXNJRD4NCisgICAgPG1hdGNoZXJDb25maWd1cmF0aW9uDQorICAgICAgICB4c2k6dHlwZT0ic3RlcmVvdHlwZWFwcGxpY2F0aW9ubWF0Y2hlcmNvbmZpZ3VyYXRpb246U3RlcmVvdHlwZUFwcGxpY2F0aW9uTWF0Y2hlckNvbmZpZ3VyYXRpb24iDQorICAgICAgICB4bWk6aWQ9Il9Mb0tYaDhKUUVlU1g5TW9LTUJWNUd3Ij4NCisgICAgICA8c3RlcmVvdHlwZXNRdWFsaWZpZWROYW1lcz5TeXNNTDo6QmxvY2tzOjpBZGp1bmN0UHJvcGVydHk8L3N0ZXJlb3R5cGVzUXVhbGlmaWVkTmFtZXM+DQorICAgIDwvbWF0Y2hlckNvbmZpZ3VyYXRpb24+DQorICA8L2VsZW1lbnRUeXBlQ29uZmlndXJhdGlvbnM+DQorICA8ZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucw0KKyAgICAgIHhzaTp0eXBlPSJlbGVtZW50dHlwZXNjb25maWd1cmF0aW9uczpTcGVjaWFsaXphdGlvblR5cGVDb25maWd1cmF0aW9uIg0KKyAgICAgIHhtaTppZD0iX0xvS1hpTUpRRWVTWDlNb0tNQlY1R3ciDQorICAgICAgbmFtZT0iQWRqdW5jdFByb3BlcnR5ICgzMDQxKSINCisgICAgICBpZGVudGlmaWVyPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLkFkanVuY3RQcm9wZXJ0eV8zMDQxIg0KKyAgICAgIGhpbnQ9IjMwNDEiPg0KKyAgICA8aWNvbkVudHJ5DQorICAgICAgICB4bWk6aWQ9Il9Mb0tYaWNKUUVlU1g5TW9LTUJWNUd3Ig0KKyAgICAgICAgaWNvblBhdGg9Ii9pY29ucy9mdWxsL29iajE2L1Byb3BlcnR5LmdpZiINCisgICAgICAgIGJ1bmRsZUlkPSJvcmcuZWNsaXBzZS51bWwyLnVtbC5lZGl0Ii8+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LkFkanVuY3RQcm9wZXJ0eTwvc3BlY2lhbGl6ZWRUeXBlc0lEPg0KKyAgICA8c3BlY2lhbGl6ZWRUeXBlc0lEPm9yZy5lY2xpcHNlLnBhcHlydXMudW1sLmRpYWdyYW0uY2xhenouUHJvcGVydHlfMzA0MTwvc3BlY2lhbGl6ZWRUeXBlc0lEPg0KKyAgICA8bWF0Y2hlckNvbmZpZ3VyYXRpb24NCisgICAgICAgIHhzaTp0eXBlPSJzdGVyZW90eXBlYXBwbGljYXRpb25tYXRjaGVyY29uZmlndXJhdGlvbjpTdGVyZW90eXBlQXBwbGljYXRpb25NYXRjaGVyQ29uZmlndXJhdGlvbiINCisgICAgICAgIHhtaTppZD0iX0xvS1hpc0pRRWVTWDlNb0tNQlY1R3ciPg0KKyAgICAgIDxzdGVyZW90eXBlc1F1YWxpZmllZE5hbWVzPlN5c01MOjpCbG9ja3M6OkFkanVuY3RQcm9wZXJ0eTwvc3RlcmVvdHlwZXNRdWFsaWZpZWROYW1lcz4NCisgICAgPC9tYXRjaGVyQ29uZmlndXJhdGlvbj4NCisgIDwvZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucz4NCisgIDxlbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zDQorICAgICAgeHNpOnR5cGU9ImVsZW1lbnR0eXBlc2NvbmZpZ3VyYXRpb25zOlNwZWNpYWxpemF0aW9uVHlwZUNvbmZpZ3VyYXRpb24iDQorICAgICAgeG1pOmlkPSJfTG9LWGk4SlFFZVNYOU1vS01CVjVHdyINCisgICAgICBuYW1lPSJDbGFzc2lmaWVyQmVoYXZpb3JQcm9wZXJ0eSAoMzAwMikiDQorICAgICAgaWRlbnRpZmllcj0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5DbGFzc2lmaWVyQmVoYXZpb3JQcm9wZXJ0eV8zMDAyIg0KKyAgICAgIGhpbnQ9IjMwMDIiPg0KKyAgICA8aWNvbkVudHJ5DQorICAgICAgICB4bWk6aWQ9Il9Mb0tYak1KUUVlU1g5TW9LTUJWNUd3Ig0KKyAgICAgICAgaWNvblBhdGg9Ii9pY29ucy9mdWxsL29iajE2L1Byb3BlcnR5LmdpZiINCisgICAgICAgIGJ1bmRsZUlkPSJvcmcuZWNsaXBzZS51bWwyLnVtbC5lZGl0Ii8+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LkNsYXNzaWZpZXJCZWhhdmlvclByb3BlcnR5PC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy51bWwuZGlhZ3JhbS5jbGF6ei5Qcm9wZXJ0eV8zMDAyPC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICAgIDxtYXRjaGVyQ29uZmlndXJhdGlvbg0KKyAgICAgICAgeHNpOnR5cGU9InN0ZXJlb3R5cGVhcHBsaWNhdGlvbm1hdGNoZXJjb25maWd1cmF0aW9uOlN0ZXJlb3R5cGVBcHBsaWNhdGlvbk1hdGNoZXJDb25maWd1cmF0aW9uIg0KKyAgICAgICAgeG1pOmlkPSJfTG9LWGpjSlFFZVNYOU1vS01CVjVHdyI+DQorICAgICAgPHN0ZXJlb3R5cGVzUXVhbGlmaWVkTmFtZXM+U3lzTUw6OkJsb2Nrczo6Q2xhc3NpZmllckJlaGF2aW9yUHJvcGVydHk8L3N0ZXJlb3R5cGVzUXVhbGlmaWVkTmFtZXM+DQorICAgIDwvbWF0Y2hlckNvbmZpZ3VyYXRpb24+DQorICA8L2VsZW1lbnRUeXBlQ29uZmlndXJhdGlvbnM+DQorICA8ZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucw0KKyAgICAgIHhzaTp0eXBlPSJlbGVtZW50dHlwZXNjb25maWd1cmF0aW9uczpTcGVjaWFsaXphdGlvblR5cGVDb25maWd1cmF0aW9uIg0KKyAgICAgIHhtaTppZD0iX0xvS1hqc0pRRWVTWDlNb0tNQlY1R3ciDQorICAgICAgbmFtZT0iQ2xhc3NpZmllckJlaGF2aW9yUHJvcGVydHkgKDMwMDUpIg0KKyAgICAgIGlkZW50aWZpZXI9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuQ2xhc3NpZmllckJlaGF2aW9yUHJvcGVydHlfMzAwNSINCisgICAgICBoaW50PSIzMDA1Ij4NCisgICAgPGljb25FbnRyeQ0KKyAgICAgICAgeG1pOmlkPSJfTG9LWGo4SlFFZVNYOU1vS01CVjVHdyINCisgICAgICAgIGljb25QYXRoPSIvaWNvbnMvZnVsbC9vYmoxNi9Qcm9wZXJ0eS5naWYiDQorICAgICAgICBidW5kbGVJZD0ib3JnLmVjbGlwc2UudW1sMi51bWwuZWRpdCIvPg0KKyAgICA8c3BlY2lhbGl6ZWRUeXBlc0lEPm9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5DbGFzc2lmaWVyQmVoYXZpb3JQcm9wZXJ0eTwvc3BlY2lhbGl6ZWRUeXBlc0lEPg0KKyAgICA8c3BlY2lhbGl6ZWRUeXBlc0lEPm9yZy5lY2xpcHNlLnBhcHlydXMudW1sLmRpYWdyYW0uY2xhenouUHJvcGVydHlfMzAwNTwvc3BlY2lhbGl6ZWRUeXBlc0lEPg0KKyAgICA8bWF0Y2hlckNvbmZpZ3VyYXRpb24NCisgICAgICAgIHhzaTp0eXBlPSJzdGVyZW90eXBlYXBwbGljYXRpb25tYXRjaGVyY29uZmlndXJhdGlvbjpTdGVyZW90eXBlQXBwbGljYXRpb25NYXRjaGVyQ29uZmlndXJhdGlvbiINCisgICAgICAgIHhtaTppZD0iX0xvS1hrTUpRRWVTWDlNb0tNQlY1R3ciPg0KKyAgICAgIDxzdGVyZW90eXBlc1F1YWxpZmllZE5hbWVzPlN5c01MOjpCbG9ja3M6OkNsYXNzaWZpZXJCZWhhdmlvclByb3BlcnR5PC9zdGVyZW90eXBlc1F1YWxpZmllZE5hbWVzPg0KKyAgICA8L21hdGNoZXJDb25maWd1cmF0aW9uPg0KKyAgPC9lbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zPg0KKyAgPGVsZW1lbnRUeXBlQ29uZmlndXJhdGlvbnMNCisgICAgICB4c2k6dHlwZT0iZWxlbWVudHR5cGVzY29uZmlndXJhdGlvbnM6U3BlY2lhbGl6YXRpb25UeXBlQ29uZmlndXJhdGlvbiINCisgICAgICB4bWk6aWQ9Il9Mb0tYa2NKUUVlU1g5TW9LTUJWNUd3Ig0KKyAgICAgIG5hbWU9IkNsYXNzaWZpZXJCZWhhdmlvclByb3BlcnR5ICgzMDA2KSINCisgICAgICBpZGVudGlmaWVyPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLkNsYXNzaWZpZXJCZWhhdmlvclByb3BlcnR5XzMwMDYiDQorICAgICAgaGludD0iMzAwNiI+DQorICAgIDxpY29uRW50cnkNCisgICAgICAgIHhtaTppZD0iX0xvS1hrc0pRRWVTWDlNb0tNQlY1R3ciDQorICAgICAgICBpY29uUGF0aD0iL2ljb25zL2Z1bGwvb2JqMTYvUHJvcGVydHkuZ2lmIg0KKyAgICAgICAgYnVuZGxlSWQ9Im9yZy5lY2xpcHNlLnVtbDIudW1sLmVkaXQiLz4NCisgICAgPHNwZWNpYWxpemVkVHlwZXNJRD5vcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuQ2xhc3NpZmllckJlaGF2aW9yUHJvcGVydHk8L3NwZWNpYWxpemVkVHlwZXNJRD4NCisgICAgPHNwZWNpYWxpemVkVHlwZXNJRD5vcmcuZWNsaXBzZS5wYXB5cnVzLnVtbC5kaWFncmFtLmNsYXp6LlByb3BlcnR5XzMwMDY8L3NwZWNpYWxpemVkVHlwZXNJRD4NCisgICAgPG1hdGNoZXJDb25maWd1cmF0aW9uDQorICAgICAgICB4c2k6dHlwZT0ic3RlcmVvdHlwZWFwcGxpY2F0aW9ubWF0Y2hlcmNvbmZpZ3VyYXRpb246U3RlcmVvdHlwZUFwcGxpY2F0aW9uTWF0Y2hlckNvbmZpZ3VyYXRpb24iDQorICAgICAgICB4bWk6aWQ9Il9Mb0tYazhKUUVlU1g5TW9LTUJWNUd3Ij4NCisgICAgICA8c3RlcmVvdHlwZXNRdWFsaWZpZWROYW1lcz5TeXNNTDo6QmxvY2tzOjpDbGFzc2lmaWVyQmVoYXZpb3JQcm9wZXJ0eTwvc3RlcmVvdHlwZXNRdWFsaWZpZWROYW1lcz4NCisgICAgPC9tYXRjaGVyQ29uZmlndXJhdGlvbj4NCisgIDwvZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucz4NCisgIDxlbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zDQorICAgICAgeHNpOnR5cGU9ImVsZW1lbnR0eXBlc2NvbmZpZ3VyYXRpb25zOlNwZWNpYWxpemF0aW9uVHlwZUNvbmZpZ3VyYXRpb24iDQorICAgICAgeG1pOmlkPSJfTG9LWGxNSlFFZVNYOU1vS01CVjVHdyINCisgICAgICBuYW1lPSJDbGFzc2lmaWVyQmVoYXZpb3JQcm9wZXJ0eSAoMzAxMikiDQorICAgICAgaWRlbnRpZmllcj0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5DbGFzc2lmaWVyQmVoYXZpb3JQcm9wZXJ0eV8zMDEyIg0KKyAgICAgIGhpbnQ9IjMwMTIiPg0KKyAgICA8aWNvbkVudHJ5DQorICAgICAgICB4bWk6aWQ9Il9Mb0tYbGNKUUVlU1g5TW9LTUJWNUd3Ig0KKyAgICAgICAgaWNvblBhdGg9Ii9pY29ucy9mdWxsL29iajE2L1Byb3BlcnR5LmdpZiINCisgICAgICAgIGJ1bmRsZUlkPSJvcmcuZWNsaXBzZS51bWwyLnVtbC5lZGl0Ii8+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LkNsYXNzaWZpZXJCZWhhdmlvclByb3BlcnR5PC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy51bWwuZGlhZ3JhbS5jbGF6ei5Qcm9wZXJ0eV8zMDEyPC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICAgIDxtYXRjaGVyQ29uZmlndXJhdGlvbg0KKyAgICAgICAgeHNpOnR5cGU9InN0ZXJlb3R5cGVhcHBsaWNhdGlvbm1hdGNoZXJjb25maWd1cmF0aW9uOlN0ZXJlb3R5cGVBcHBsaWNhdGlvbk1hdGNoZXJDb25maWd1cmF0aW9uIg0KKyAgICAgICAgeG1pOmlkPSJfTG9LWGxzSlFFZVNYOU1vS01CVjVHdyI+DQorICAgICAgPHN0ZXJlb3R5cGVzUXVhbGlmaWVkTmFtZXM+U3lzTUw6OkJsb2Nrczo6Q2xhc3NpZmllckJlaGF2aW9yUHJvcGVydHk8L3N0ZXJlb3R5cGVzUXVhbGlmaWVkTmFtZXM+DQorICAgIDwvbWF0Y2hlckNvbmZpZ3VyYXRpb24+DQorICA8L2VsZW1lbnRUeXBlQ29uZmlndXJhdGlvbnM+DQorICA8ZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucw0KKyAgICAgIHhzaTp0eXBlPSJlbGVtZW50dHlwZXNjb25maWd1cmF0aW9uczpTcGVjaWFsaXphdGlvblR5cGVDb25maWd1cmF0aW9uIg0KKyAgICAgIHhtaTppZD0iX0xvS1hsOEpRRWVTWDlNb0tNQlY1R3ciDQorICAgICAgbmFtZT0iQ2xhc3NpZmllckJlaGF2aW9yUHJvcGVydHkgKDMwMTgpIg0KKyAgICAgIGlkZW50aWZpZXI9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuQ2xhc3NpZmllckJlaGF2aW9yUHJvcGVydHlfMzAxOCINCisgICAgICBoaW50PSIzMDE4Ij4NCisgICAgPGljb25FbnRyeQ0KKyAgICAgICAgeG1pOmlkPSJfTG9LWG1NSlFFZVNYOU1vS01CVjVHdyINCisgICAgICAgIGljb25QYXRoPSIvaWNvbnMvZnVsbC9vYmoxNi9Qcm9wZXJ0eS5naWYiDQorICAgICAgICBidW5kbGVJZD0ib3JnLmVjbGlwc2UudW1sMi51bWwuZWRpdCIvPg0KKyAgICA8c3BlY2lhbGl6ZWRUeXBlc0lEPm9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5DbGFzc2lmaWVyQmVoYXZpb3JQcm9wZXJ0eTwvc3BlY2lhbGl6ZWRUeXBlc0lEPg0KKyAgICA8c3BlY2lhbGl6ZWRUeXBlc0lEPm9yZy5lY2xpcHNlLnBhcHlydXMudW1sLmRpYWdyYW0uY2xhenouUHJvcGVydHlfMzAxODwvc3BlY2lhbGl6ZWRUeXBlc0lEPg0KKyAgICA8bWF0Y2hlckNvbmZpZ3VyYXRpb24NCisgICAgICAgIHhzaTp0eXBlPSJzdGVyZW90eXBlYXBwbGljYXRpb25tYXRjaGVyY29uZmlndXJhdGlvbjpTdGVyZW90eXBlQXBwbGljYXRpb25NYXRjaGVyQ29uZmlndXJhdGlvbiINCisgICAgICAgIHhtaTppZD0iX0xvS1htY0pRRWVTWDlNb0tNQlY1R3ciPg0KKyAgICAgIDxzdGVyZW90eXBlc1F1YWxpZmllZE5hbWVzPlN5c01MOjpCbG9ja3M6OkNsYXNzaWZpZXJCZWhhdmlvclByb3BlcnR5PC9zdGVyZW90eXBlc1F1YWxpZmllZE5hbWVzPg0KKyAgICA8L21hdGNoZXJDb25maWd1cmF0aW9uPg0KKyAgPC9lbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zPg0KKyAgPGVsZW1lbnRUeXBlQ29uZmlndXJhdGlvbnMNCisgICAgICB4c2k6dHlwZT0iZWxlbWVudHR5cGVzY29uZmlndXJhdGlvbnM6U3BlY2lhbGl6YXRpb25UeXBlQ29uZmlndXJhdGlvbiINCisgICAgICB4bWk6aWQ9Il9Mb0tYbXNKUUVlU1g5TW9LTUJWNUd3Ig0KKyAgICAgIG5hbWU9IkNsYXNzaWZpZXJCZWhhdmlvclByb3BlcnR5ICgzMDQxKSINCisgICAgICBpZGVudGlmaWVyPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLkNsYXNzaWZpZXJCZWhhdmlvclByb3BlcnR5XzMwNDEiDQorICAgICAgaGludD0iMzA0MSI+DQorICAgIDxpY29uRW50cnkNCisgICAgICAgIHhtaTppZD0iX0xvS1htOEpRRWVTWDlNb0tNQlY1R3ciDQorICAgICAgICBpY29uUGF0aD0iL2ljb25zL2Z1bGwvb2JqMTYvUHJvcGVydHkuZ2lmIg0KKyAgICAgICAgYnVuZGxlSWQ9Im9yZy5lY2xpcHNlLnVtbDIudW1sLmVkaXQiLz4NCisgICAgPHNwZWNpYWxpemVkVHlwZXNJRD5vcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuQ2xhc3NpZmllckJlaGF2aW9yUHJvcGVydHk8L3NwZWNpYWxpemVkVHlwZXNJRD4NCisgICAgPHNwZWNpYWxpemVkVHlwZXNJRD5vcmcuZWNsaXBzZS5wYXB5cnVzLnVtbC5kaWFncmFtLmNsYXp6LlByb3BlcnR5XzMwNDE8L3NwZWNpYWxpemVkVHlwZXNJRD4NCisgICAgPG1hdGNoZXJDb25maWd1cmF0aW9uDQorICAgICAgICB4c2k6dHlwZT0ic3RlcmVvdHlwZWFwcGxpY2F0aW9ubWF0Y2hlcmNvbmZpZ3VyYXRpb246U3RlcmVvdHlwZUFwcGxpY2F0aW9uTWF0Y2hlckNvbmZpZ3VyYXRpb24iDQorICAgICAgICB4bWk6aWQ9Il9Mb0tYbk1KUUVlU1g5TW9LTUJWNUd3Ij4NCisgICAgICA8c3RlcmVvdHlwZXNRdWFsaWZpZWROYW1lcz5TeXNNTDo6QmxvY2tzOjpDbGFzc2lmaWVyQmVoYXZpb3JQcm9wZXJ0eTwvc3RlcmVvdHlwZXNRdWFsaWZpZWROYW1lcz4NCisgICAgPC9tYXRjaGVyQ29uZmlndXJhdGlvbj4NCisgIDwvZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucz4NCisgIDxlbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zDQorICAgICAgeHNpOnR5cGU9ImVsZW1lbnR0eXBlc2NvbmZpZ3VyYXRpb25zOlNwZWNpYWxpemF0aW9uVHlwZUNvbmZpZ3VyYXRpb24iDQorICAgICAgeG1pOmlkPSJfTG9LWG5jSlFFZVNYOU1vS01CVjVHdyINCisgICAgICBuYW1lPSJJdGVtRmxvdyINCisgICAgICBpZGVudGlmaWVyPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLkl0ZW1GbG93XzQwMjYiDQorICAgICAgaGludD0iNDAyNiI+DQorICAgIDxpY29uRW50cnkNCisgICAgICAgIHhtaTppZD0iX0xvS1huc0pRRWVTWDlNb0tNQlY1R3ciDQorICAgICAgICBpY29uUGF0aD0iL2ljb25zL2Z1bGwvb2JqMTYvSW5mb3JtYXRpb25GbG93LmdpZiINCisgICAgICAgIGJ1bmRsZUlkPSJvcmcuZWNsaXBzZS51bWwyLnVtbC5lZGl0Ii8+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0Lkl0ZW1GbG93PC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy51bWwuZGlhZ3JhbS5jbGF6ei5JbmZvcm1hdGlvbkZsb3dfNDAyNjwvc3BlY2lhbGl6ZWRUeXBlc0lEPg0KKyAgICA8bWF0Y2hlckNvbmZpZ3VyYXRpb24NCisgICAgICAgIHhzaTp0eXBlPSJzdGVyZW90eXBlYXBwbGljYXRpb25tYXRjaGVyY29uZmlndXJhdGlvbjpTdGVyZW90eXBlQXBwbGljYXRpb25NYXRjaGVyQ29uZmlndXJhdGlvbiINCisgICAgICAgIHhtaTppZD0iX0xvS1huOEpRRWVTWDlNb0tNQlY1R3ciPg0KKyAgICAgIDxzdGVyZW90eXBlc1F1YWxpZmllZE5hbWVzPlN5c01MOjpQb3J0c2FuZEZsb3dzOjpJdGVtRmxvdzwvc3RlcmVvdHlwZXNRdWFsaWZpZWROYW1lcz4NCisgICAgPC9tYXRjaGVyQ29uZmlndXJhdGlvbj4NCisgIDwvZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucz4NCisgIDxlbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zDQorICAgICAgeHNpOnR5cGU9ImVsZW1lbnR0eXBlc2NvbmZpZ3VyYXRpb25zOlNwZWNpYWxpemF0aW9uVHlwZUNvbmZpZ3VyYXRpb24iDQorICAgICAgeG1pOmlkPSJfTG9LWG9NSlFFZVNYOU1vS01CVjVHdyINCisgICAgICBuYW1lPSJGbG93UHJvcGVydHkgKDMwMDIpIg0KKyAgICAgIGlkZW50aWZpZXI9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuRmxvd1Byb3BlcnR5XzMwMDIiDQorICAgICAgaGludD0iMzAwMiI+DQorICAgIDxpY29uRW50cnkNCisgICAgICAgIHhtaTppZD0iX0xvS1hvY0pRRWVTWDlNb0tNQlY1R3ciDQorICAgICAgICBpY29uUGF0aD0iL2ljb25zL2Z1bGwvb2JqMTYvUHJvcGVydHkuZ2lmIg0KKyAgICAgICAgYnVuZGxlSWQ9Im9yZy5lY2xpcHNlLnVtbDIudW1sLmVkaXQiLz4NCisgICAgPHNwZWNpYWxpemVkVHlwZXNJRD5vcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuRmxvd1Byb3BlcnR5PC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy51bWwuZGlhZ3JhbS5jbGF6ei5Qcm9wZXJ0eV8zMDAyPC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICAgIDxtYXRjaGVyQ29uZmlndXJhdGlvbg0KKyAgICAgICAgeHNpOnR5cGU9InN0ZXJlb3R5cGVhcHBsaWNhdGlvbm1hdGNoZXJjb25maWd1cmF0aW9uOlN0ZXJlb3R5cGVBcHBsaWNhdGlvbk1hdGNoZXJDb25maWd1cmF0aW9uIg0KKyAgICAgICAgeG1pOmlkPSJfTG9LWG9zSlFFZVNYOU1vS01CVjVHdyI+DQorICAgICAgPHN0ZXJlb3R5cGVzUXVhbGlmaWVkTmFtZXM+U3lzTUw6OlBvcnRzYW5kRmxvd3M6OkZsb3dQcm9wZXJ0eTwvc3RlcmVvdHlwZXNRdWFsaWZpZWROYW1lcz4NCisgICAgPC9tYXRjaGVyQ29uZmlndXJhdGlvbj4NCisgIDwvZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucz4NCisgIDxlbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zDQorICAgICAgeHNpOnR5cGU9ImVsZW1lbnR0eXBlc2NvbmZpZ3VyYXRpb25zOlNwZWNpYWxpemF0aW9uVHlwZUNvbmZpZ3VyYXRpb24iDQorICAgICAgeG1pOmlkPSJfTG9LWG84SlFFZVNYOU1vS01CVjVHdyINCisgICAgICBuYW1lPSJGbG93UHJvcGVydHkgKDMwMDUpIg0KKyAgICAgIGlkZW50aWZpZXI9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuRmxvd1Byb3BlcnR5XzMwMDUiDQorICAgICAgaGludD0iMzAwNSI+DQorICAgIDxpY29uRW50cnkNCisgICAgICAgIHhtaTppZD0iX0xvS1hwTUpRRWVTWDlNb0tNQlY1R3ciDQorICAgICAgICBpY29uUGF0aD0iL2ljb25zL2Z1bGwvb2JqMTYvUHJvcGVydHkuZ2lmIg0KKyAgICAgICAgYnVuZGxlSWQ9Im9yZy5lY2xpcHNlLnVtbDIudW1sLmVkaXQiLz4NCisgICAgPHNwZWNpYWxpemVkVHlwZXNJRD5vcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuRmxvd1Byb3BlcnR5PC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy51bWwuZGlhZ3JhbS5jbGF6ei5Qcm9wZXJ0eV8zMDA1PC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICAgIDxtYXRjaGVyQ29uZmlndXJhdGlvbg0KKyAgICAgICAgeHNpOnR5cGU9InN0ZXJlb3R5cGVhcHBsaWNhdGlvbm1hdGNoZXJjb25maWd1cmF0aW9uOlN0ZXJlb3R5cGVBcHBsaWNhdGlvbk1hdGNoZXJDb25maWd1cmF0aW9uIg0KKyAgICAgICAgeG1pOmlkPSJfTG9LWHBjSlFFZVNYOU1vS01CVjVHdyI+DQorICAgICAgPHN0ZXJlb3R5cGVzUXVhbGlmaWVkTmFtZXM+U3lzTUw6OlBvcnRzYW5kRmxvd3M6OkZsb3dQcm9wZXJ0eTwvc3RlcmVvdHlwZXNRdWFsaWZpZWROYW1lcz4NCisgICAgPC9tYXRjaGVyQ29uZmlndXJhdGlvbj4NCisgIDwvZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucz4NCisgIDxlbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zDQorICAgICAgeHNpOnR5cGU9ImVsZW1lbnR0eXBlc2NvbmZpZ3VyYXRpb25zOlNwZWNpYWxpemF0aW9uVHlwZUNvbmZpZ3VyYXRpb24iDQorICAgICAgeG1pOmlkPSJfTG9LWHBzSlFFZVNYOU1vS01CVjVHdyINCisgICAgICBuYW1lPSJGbG93UHJvcGVydHkgKDMwMDYpIg0KKyAgICAgIGlkZW50aWZpZXI9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuRmxvd1Byb3BlcnR5XzMwMDYiDQorICAgICAgaGludD0iMzAwNiI+DQorICAgIDxpY29uRW50cnkNCisgICAgICAgIHhtaTppZD0iX0xvS1hwOEpRRWVTWDlNb0tNQlY1R3ciDQorICAgICAgICBpY29uUGF0aD0iL2ljb25zL2Z1bGwvb2JqMTYvUHJvcGVydHkuZ2lmIg0KKyAgICAgICAgYnVuZGxlSWQ9Im9yZy5lY2xpcHNlLnVtbDIudW1sLmVkaXQiLz4NCisgICAgPHNwZWNpYWxpemVkVHlwZXNJRD5vcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuRmxvd1Byb3BlcnR5PC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy51bWwuZGlhZ3JhbS5jbGF6ei5Qcm9wZXJ0eV8zMDA2PC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICAgIDxtYXRjaGVyQ29uZmlndXJhdGlvbg0KKyAgICAgICAgeHNpOnR5cGU9InN0ZXJlb3R5cGVhcHBsaWNhdGlvbm1hdGNoZXJjb25maWd1cmF0aW9uOlN0ZXJlb3R5cGVBcHBsaWNhdGlvbk1hdGNoZXJDb25maWd1cmF0aW9uIg0KKyAgICAgICAgeG1pOmlkPSJfTG9LWHFNSlFFZVNYOU1vS01CVjVHdyI+DQorICAgICAgPHN0ZXJlb3R5cGVzUXVhbGlmaWVkTmFtZXM+U3lzTUw6OlBvcnRzYW5kRmxvd3M6OkZsb3dQcm9wZXJ0eTwvc3RlcmVvdHlwZXNRdWFsaWZpZWROYW1lcz4NCisgICAgPC9tYXRjaGVyQ29uZmlndXJhdGlvbj4NCisgIDwvZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucz4NCisgIDxlbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zDQorICAgICAgeHNpOnR5cGU9ImVsZW1lbnR0eXBlc2NvbmZpZ3VyYXRpb25zOlNwZWNpYWxpemF0aW9uVHlwZUNvbmZpZ3VyYXRpb24iDQorICAgICAgeG1pOmlkPSJfTG9LWHFjSlFFZVNYOU1vS01CVjVHdyINCisgICAgICBuYW1lPSJGbG93UHJvcGVydHkgKDMwMTIpIg0KKyAgICAgIGlkZW50aWZpZXI9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuRmxvd1Byb3BlcnR5XzMwMTIiDQorICAgICAgaGludD0iMzAxMiI+DQorICAgIDxpY29uRW50cnkNCisgICAgICAgIHhtaTppZD0iX0xvS1hxc0pRRWVTWDlNb0tNQlY1R3ciDQorICAgICAgICBpY29uUGF0aD0iL2ljb25zL2Z1bGwvb2JqMTYvUHJvcGVydHkuZ2lmIg0KKyAgICAgICAgYnVuZGxlSWQ9Im9yZy5lY2xpcHNlLnVtbDIudW1sLmVkaXQiLz4NCisgICAgPHNwZWNpYWxpemVkVHlwZXNJRD5vcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuRmxvd1Byb3BlcnR5PC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy51bWwuZGlhZ3JhbS5jbGF6ei5Qcm9wZXJ0eV8zMDEyPC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICAgIDxtYXRjaGVyQ29uZmlndXJhdGlvbg0KKyAgICAgICAgeHNpOnR5cGU9InN0ZXJlb3R5cGVhcHBsaWNhdGlvbm1hdGNoZXJjb25maWd1cmF0aW9uOlN0ZXJlb3R5cGVBcHBsaWNhdGlvbk1hdGNoZXJDb25maWd1cmF0aW9uIg0KKyAgICAgICAgeG1pOmlkPSJfTG9LWHE4SlFFZVNYOU1vS01CVjVHdyI+DQorICAgICAgPHN0ZXJlb3R5cGVzUXVhbGlmaWVkTmFtZXM+U3lzTUw6OlBvcnRzYW5kRmxvd3M6OkZsb3dQcm9wZXJ0eTwvc3RlcmVvdHlwZXNRdWFsaWZpZWROYW1lcz4NCisgICAgPC9tYXRjaGVyQ29uZmlndXJhdGlvbj4NCisgIDwvZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucz4NCisgIDxlbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zDQorICAgICAgeHNpOnR5cGU9ImVsZW1lbnR0eXBlc2NvbmZpZ3VyYXRpb25zOlNwZWNpYWxpemF0aW9uVHlwZUNvbmZpZ3VyYXRpb24iDQorICAgICAgeG1pOmlkPSJfTG9LWHJNSlFFZVNYOU1vS01CVjVHdyINCisgICAgICBuYW1lPSJGbG93UHJvcGVydHkgKDMwMTgpIg0KKyAgICAgIGlkZW50aWZpZXI9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuRmxvd1Byb3BlcnR5XzMwMTgiDQorICAgICAgaGludD0iMzAxOCI+DQorICAgIDxpY29uRW50cnkNCisgICAgICAgIHhtaTppZD0iX0xvS1hyY0pRRWVTWDlNb0tNQlY1R3ciDQorICAgICAgICBpY29uUGF0aD0iL2ljb25zL2Z1bGwvb2JqMTYvUHJvcGVydHkuZ2lmIg0KKyAgICAgICAgYnVuZGxlSWQ9Im9yZy5lY2xpcHNlLnVtbDIudW1sLmVkaXQiLz4NCisgICAgPHNwZWNpYWxpemVkVHlwZXNJRD5vcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuRmxvd1Byb3BlcnR5PC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy51bWwuZGlhZ3JhbS5jbGF6ei5Qcm9wZXJ0eV8zMDE4PC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICAgIDxtYXRjaGVyQ29uZmlndXJhdGlvbg0KKyAgICAgICAgeHNpOnR5cGU9InN0ZXJlb3R5cGVhcHBsaWNhdGlvbm1hdGNoZXJjb25maWd1cmF0aW9uOlN0ZXJlb3R5cGVBcHBsaWNhdGlvbk1hdGNoZXJDb25maWd1cmF0aW9uIg0KKyAgICAgICAgeG1pOmlkPSJfTG9LWHJzSlFFZVNYOU1vS01CVjVHdyI+DQorICAgICAgPHN0ZXJlb3R5cGVzUXVhbGlmaWVkTmFtZXM+U3lzTUw6OlBvcnRzYW5kRmxvd3M6OkZsb3dQcm9wZXJ0eTwvc3RlcmVvdHlwZXNRdWFsaWZpZWROYW1lcz4NCisgICAgPC9tYXRjaGVyQ29uZmlndXJhdGlvbj4NCisgIDwvZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucz4NCisgIDxlbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zDQorICAgICAgeHNpOnR5cGU9ImVsZW1lbnR0eXBlc2NvbmZpZ3VyYXRpb25zOlNwZWNpYWxpemF0aW9uVHlwZUNvbmZpZ3VyYXRpb24iDQorICAgICAgeG1pOmlkPSJfTG9LWHI4SlFFZVNYOU1vS01CVjVHdyINCisgICAgICBuYW1lPSJGbG93UHJvcGVydHkgKDMwNDEpIg0KKyAgICAgIGlkZW50aWZpZXI9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuRmxvd1Byb3BlcnR5XzMwNDEiDQorICAgICAgaGludD0iMzA0MSI+DQorICAgIDxpY29uRW50cnkNCisgICAgICAgIHhtaTppZD0iX0xvS1hzTUpRRWVTWDlNb0tNQlY1R3ciDQorICAgICAgICBpY29uUGF0aD0iL2ljb25zL2Z1bGwvb2JqMTYvUHJvcGVydHkuZ2lmIg0KKyAgICAgICAgYnVuZGxlSWQ9Im9yZy5lY2xpcHNlLnVtbDIudW1sLmVkaXQiLz4NCisgICAgPHNwZWNpYWxpemVkVHlwZXNJRD5vcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuRmxvd1Byb3BlcnR5PC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy51bWwuZGlhZ3JhbS5jbGF6ei5Qcm9wZXJ0eV8zMDQxPC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICAgIDxtYXRjaGVyQ29uZmlndXJhdGlvbg0KKyAgICAgICAgeHNpOnR5cGU9InN0ZXJlb3R5cGVhcHBsaWNhdGlvbm1hdGNoZXJjb25maWd1cmF0aW9uOlN0ZXJlb3R5cGVBcHBsaWNhdGlvbk1hdGNoZXJDb25maWd1cmF0aW9uIg0KKyAgICAgICAgeG1pOmlkPSJfTG9LWHNjSlFFZVNYOU1vS01CVjVHdyI+DQorICAgICAgPHN0ZXJlb3R5cGVzUXVhbGlmaWVkTmFtZXM+U3lzTUw6OlBvcnRzYW5kRmxvd3M6OkZsb3dQcm9wZXJ0eTwvc3RlcmVvdHlwZXNRdWFsaWZpZWROYW1lcz4NCisgICAgPC9tYXRjaGVyQ29uZmlndXJhdGlvbj4NCisgIDwvZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucz4NCisgIDxlbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zDQorICAgICAgeHNpOnR5cGU9ImVsZW1lbnR0eXBlc2NvbmZpZ3VyYXRpb25zOlNwZWNpYWxpemF0aW9uVHlwZUNvbmZpZ3VyYXRpb24iDQorICAgICAgeG1pOmlkPSJfTG9LWHNzSlFFZVNYOU1vS01CVjVHdyINCisgICAgICBuYW1lPSJJbnRlcmZhY2VCbG9jayAoMjAwOCkiDQorICAgICAgaWRlbnRpZmllcj0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5JbnRlcmZhY2VCbG9ja18yMDA4Ig0KKyAgICAgIGhpbnQ9IjIwMDgiPg0KKyAgICA8aWNvbkVudHJ5DQorICAgICAgICB4bWk6aWQ9Il9Mb0tYczhKUUVlU1g5TW9LTUJWNUd3Ig0KKyAgICAgICAgaWNvblBhdGg9Ii9pY29ucy9mdWxsL29iajE2L0NsYXNzLmdpZiINCisgICAgICAgIGJ1bmRsZUlkPSJvcmcuZWNsaXBzZS51bWwyLnVtbC5lZGl0Ii8+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LkludGVyZmFjZUJsb2NrPC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy51bWwuZGlhZ3JhbS5jbGF6ei5DbGFzc18yMDA4PC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICAgIDxtYXRjaGVyQ29uZmlndXJhdGlvbg0KKyAgICAgICAgeHNpOnR5cGU9InN0ZXJlb3R5cGVhcHBsaWNhdGlvbm1hdGNoZXJjb25maWd1cmF0aW9uOlN0ZXJlb3R5cGVBcHBsaWNhdGlvbk1hdGNoZXJDb25maWd1cmF0aW9uIg0KKyAgICAgICAgeG1pOmlkPSJfTG9LWHRNSlFFZVNYOU1vS01CVjVHdyI+DQorICAgICAgPHN0ZXJlb3R5cGVzUXVhbGlmaWVkTmFtZXM+U3lzTUw6OlBvcnRzYW5kRmxvd3M6OkludGVyZmFjZUJsb2NrPC9zdGVyZW90eXBlc1F1YWxpZmllZE5hbWVzPg0KKyAgICA8L21hdGNoZXJDb25maWd1cmF0aW9uPg0KKyAgPC9lbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zPg0KKyAgPGVsZW1lbnRUeXBlQ29uZmlndXJhdGlvbnMNCisgICAgICB4c2k6dHlwZT0iZWxlbWVudHR5cGVzY29uZmlndXJhdGlvbnM6U3BlY2lhbGl6YXRpb25UeXBlQ29uZmlndXJhdGlvbiINCisgICAgICB4bWk6aWQ9Il9Mb0tYdGNKUUVlU1g5TW9LTUJWNUd3Ig0KKyAgICAgIG5hbWU9IkludGVyZmFjZUJsb2NrICgzMDA0KSINCisgICAgICBpZGVudGlmaWVyPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLkludGVyZmFjZUJsb2NrXzMwMDQiDQorICAgICAgaGludD0iMzAwNCI+DQorICAgIDxpY29uRW50cnkNCisgICAgICAgIHhtaTppZD0iX0xvS1h0c0pRRWVTWDlNb0tNQlY1R3ciDQorICAgICAgICBpY29uUGF0aD0iL2ljb25zL2Z1bGwvb2JqMTYvQ2xhc3MuZ2lmIg0KKyAgICAgICAgYnVuZGxlSWQ9Im9yZy5lY2xpcHNlLnVtbDIudW1sLmVkaXQiLz4NCisgICAgPHNwZWNpYWxpemVkVHlwZXNJRD5vcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuSW50ZXJmYWNlQmxvY2s8L3NwZWNpYWxpemVkVHlwZXNJRD4NCisgICAgPHNwZWNpYWxpemVkVHlwZXNJRD5vcmcuZWNsaXBzZS5wYXB5cnVzLnVtbC5kaWFncmFtLmNsYXp6LkNsYXNzXzMwMDQ8L3NwZWNpYWxpemVkVHlwZXNJRD4NCisgICAgPG1hdGNoZXJDb25maWd1cmF0aW9uDQorICAgICAgICB4c2k6dHlwZT0ic3RlcmVvdHlwZWFwcGxpY2F0aW9ubWF0Y2hlcmNvbmZpZ3VyYXRpb246U3RlcmVvdHlwZUFwcGxpY2F0aW9uTWF0Y2hlckNvbmZpZ3VyYXRpb24iDQorICAgICAgICB4bWk6aWQ9Il9Mb0tYdDhKUUVlU1g5TW9LTUJWNUd3Ij4NCisgICAgICA8c3RlcmVvdHlwZXNRdWFsaWZpZWROYW1lcz5TeXNNTDo6UG9ydHNhbmRGbG93czo6SW50ZXJmYWNlQmxvY2s8L3N0ZXJlb3R5cGVzUXVhbGlmaWVkTmFtZXM+DQorICAgIDwvbWF0Y2hlckNvbmZpZ3VyYXRpb24+DQorICA8L2VsZW1lbnRUeXBlQ29uZmlndXJhdGlvbnM+DQorICA8ZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucw0KKyAgICAgIHhzaTp0eXBlPSJlbGVtZW50dHlwZXNjb25maWd1cmF0aW9uczpTcGVjaWFsaXphdGlvblR5cGVDb25maWd1cmF0aW9uIg0KKyAgICAgIHhtaTppZD0iX0xvS1h1TUpRRWVTWDlNb0tNQlY1R3ciDQorICAgICAgbmFtZT0iSW50ZXJmYWNlQmxvY2sgKDMwMDgpIg0KKyAgICAgIGlkZW50aWZpZXI9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuSW50ZXJmYWNlQmxvY2tfMzAwOCINCisgICAgICBoaW50PSIzMDA4Ij4NCisgICAgPGljb25FbnRyeQ0KKyAgICAgICAgeG1pOmlkPSJfTG9LWHVjSlFFZVNYOU1vS01CVjVHdyINCisgICAgICAgIGljb25QYXRoPSIvaWNvbnMvZnVsbC9vYmoxNi9DbGFzcy5naWYiDQorICAgICAgICBidW5kbGVJZD0ib3JnLmVjbGlwc2UudW1sMi51bWwuZWRpdCIvPg0KKyAgICA8c3BlY2lhbGl6ZWRUeXBlc0lEPm9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5JbnRlcmZhY2VCbG9jazwvc3BlY2lhbGl6ZWRUeXBlc0lEPg0KKyAgICA8c3BlY2lhbGl6ZWRUeXBlc0lEPm9yZy5lY2xpcHNlLnBhcHlydXMudW1sLmRpYWdyYW0uY2xhenouQ2xhc3NfMzAwODwvc3BlY2lhbGl6ZWRUeXBlc0lEPg0KKyAgICA8bWF0Y2hlckNvbmZpZ3VyYXRpb24NCisgICAgICAgIHhzaTp0eXBlPSJzdGVyZW90eXBlYXBwbGljYXRpb25tYXRjaGVyY29uZmlndXJhdGlvbjpTdGVyZW90eXBlQXBwbGljYXRpb25NYXRjaGVyQ29uZmlndXJhdGlvbiINCisgICAgICAgIHhtaTppZD0iX0xvS1h1c0pRRWVTWDlNb0tNQlY1R3ciPg0KKyAgICAgIDxzdGVyZW90eXBlc1F1YWxpZmllZE5hbWVzPlN5c01MOjpQb3J0c2FuZEZsb3dzOjpJbnRlcmZhY2VCbG9jazwvc3RlcmVvdHlwZXNRdWFsaWZpZWROYW1lcz4NCisgICAgPC9tYXRjaGVyQ29uZmlndXJhdGlvbj4NCisgIDwvZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucz4NCisgIDxlbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zDQorICAgICAgeHNpOnR5cGU9ImVsZW1lbnR0eXBlc2NvbmZpZ3VyYXRpb25zOlNwZWNpYWxpemF0aW9uVHlwZUNvbmZpZ3VyYXRpb24iDQorICAgICAgeG1pOmlkPSJfTG9LWHU4SlFFZVNYOU1vS01CVjVHdyINCisgICAgICBuYW1lPSJJbnRlcmZhY2VCbG9jayAoMzAxMCkiDQorICAgICAgaWRlbnRpZmllcj0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5JbnRlcmZhY2VCbG9ja18zMDEwIg0KKyAgICAgIGhpbnQ9IjMwMTAiPg0KKyAgICA8aWNvbkVudHJ5DQorICAgICAgICB4bWk6aWQ9Il9Mb0tYdk1KUUVlU1g5TW9LTUJWNUd3Ig0KKyAgICAgICAgaWNvblBhdGg9Ii9pY29ucy9mdWxsL29iajE2L0NsYXNzLmdpZiINCisgICAgICAgIGJ1bmRsZUlkPSJvcmcuZWNsaXBzZS51bWwyLnVtbC5lZGl0Ii8+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LkludGVyZmFjZUJsb2NrPC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy51bWwuZGlhZ3JhbS5jbGF6ei5DbGFzc18zMDEwPC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICAgIDxtYXRjaGVyQ29uZmlndXJhdGlvbg0KKyAgICAgICAgeHNpOnR5cGU9InN0ZXJlb3R5cGVhcHBsaWNhdGlvbm1hdGNoZXJjb25maWd1cmF0aW9uOlN0ZXJlb3R5cGVBcHBsaWNhdGlvbk1hdGNoZXJDb25maWd1cmF0aW9uIg0KKyAgICAgICAgeG1pOmlkPSJfTG9LWHZjSlFFZVNYOU1vS01CVjVHdyI+DQorICAgICAgPHN0ZXJlb3R5cGVzUXVhbGlmaWVkTmFtZXM+U3lzTUw6OlBvcnRzYW5kRmxvd3M6OkludGVyZmFjZUJsb2NrPC9zdGVyZW90eXBlc1F1YWxpZmllZE5hbWVzPg0KKyAgICA8L21hdGNoZXJDb25maWd1cmF0aW9uPg0KKyAgPC9lbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zPg0KKyAgPGVsZW1lbnRUeXBlQ29uZmlndXJhdGlvbnMNCisgICAgICB4c2k6dHlwZT0iZWxlbWVudHR5cGVzY29uZmlndXJhdGlvbnM6U3BlY2lhbGl6YXRpb25UeXBlQ29uZmlndXJhdGlvbiINCisgICAgICB4bWk6aWQ9Il9Mb0tYdnNKUUVlU1g5TW9LTUJWNUd3Ig0KKyAgICAgIG5hbWU9IkludGVyZmFjZUJsb2NrICgzMDE0KSINCisgICAgICBpZGVudGlmaWVyPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLkludGVyZmFjZUJsb2NrXzMwMTQiDQorICAgICAgaGludD0iMzAxNCI+DQorICAgIDxpY29uRW50cnkNCisgICAgICAgIHhtaTppZD0iX0xvS1h2OEpRRWVTWDlNb0tNQlY1R3ciDQorICAgICAgICBpY29uUGF0aD0iL2ljb25zL2Z1bGwvb2JqMTYvQ2xhc3MuZ2lmIg0KKyAgICAgICAgYnVuZGxlSWQ9Im9yZy5lY2xpcHNlLnVtbDIudW1sLmVkaXQiLz4NCisgICAgPHNwZWNpYWxpemVkVHlwZXNJRD5vcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuSW50ZXJmYWNlQmxvY2s8L3NwZWNpYWxpemVkVHlwZXNJRD4NCisgICAgPHNwZWNpYWxpemVkVHlwZXNJRD5vcmcuZWNsaXBzZS5wYXB5cnVzLnVtbC5kaWFncmFtLmNsYXp6LkNsYXNzXzMwMTQ8L3NwZWNpYWxpemVkVHlwZXNJRD4NCisgICAgPG1hdGNoZXJDb25maWd1cmF0aW9uDQorICAgICAgICB4c2k6dHlwZT0ic3RlcmVvdHlwZWFwcGxpY2F0aW9ubWF0Y2hlcmNvbmZpZ3VyYXRpb246U3RlcmVvdHlwZUFwcGxpY2F0aW9uTWF0Y2hlckNvbmZpZ3VyYXRpb24iDQorICAgICAgICB4bWk6aWQ9Il9Mb0tYd01KUUVlU1g5TW9LTUJWNUd3Ij4NCisgICAgICA8c3RlcmVvdHlwZXNRdWFsaWZpZWROYW1lcz5TeXNNTDo6UG9ydHNhbmRGbG93czo6SW50ZXJmYWNlQmxvY2s8L3N0ZXJlb3R5cGVzUXVhbGlmaWVkTmFtZXM+DQorICAgIDwvbWF0Y2hlckNvbmZpZ3VyYXRpb24+DQorICA8L2VsZW1lbnRUeXBlQ29uZmlndXJhdGlvbnM+DQorICA8ZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucw0KKyAgICAgIHhzaTp0eXBlPSJlbGVtZW50dHlwZXNjb25maWd1cmF0aW9uczpTcGVjaWFsaXphdGlvblR5cGVDb25maWd1cmF0aW9uIg0KKyAgICAgIHhtaTppZD0iX0xvS1h3Y0pRRWVTWDlNb0tNQlY1R3ciDQorICAgICAgbmFtZT0iQ29udHJvbE9wZXJhdG9yICgzMDAzKSINCisgICAgICBpZGVudGlmaWVyPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLkNvbnRyb2xPcGVyYXRvcl9PcGVyYXRpb25fMzAwMyINCisgICAgICBoaW50PSIzMDAzIj4NCisgICAgPGljb25FbnRyeQ0KKyAgICAgICAgeG1pOmlkPSJfTG9LWHdzSlFFZVNYOU1vS01CVjVHdyINCisgICAgICAgIGljb25QYXRoPSIvaWNvbnMvZnVsbC9vYmoxNi9PcGVyYXRpb24uZ2lmIg0KKyAgICAgICAgYnVuZGxlSWQ9Im9yZy5lY2xpcHNlLnVtbDIudW1sLmVkaXQiLz4NCisgICAgPHNwZWNpYWxpemVkVHlwZXNJRD5vcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuQ29udHJvbE9wZXJhdG9yX09wZXJhdGlvbjwvc3BlY2lhbGl6ZWRUeXBlc0lEPg0KKyAgICA8c3BlY2lhbGl6ZWRUeXBlc0lEPm9yZy5lY2xpcHNlLnBhcHlydXMudW1sLmRpYWdyYW0uY2xhenouT3BlcmF0aW9uXzMwMDM8L3NwZWNpYWxpemVkVHlwZXNJRD4NCisgICAgPG1hdGNoZXJDb25maWd1cmF0aW9uDQorICAgICAgICB4c2k6dHlwZT0ic3RlcmVvdHlwZWFwcGxpY2F0aW9ubWF0Y2hlcmNvbmZpZ3VyYXRpb246U3RlcmVvdHlwZUFwcGxpY2F0aW9uTWF0Y2hlckNvbmZpZ3VyYXRpb24iDQorICAgICAgICB4bWk6aWQ9Il9Mb0tYdzhKUUVlU1g5TW9LTUJWNUd3Ij4NCisgICAgICA8c3RlcmVvdHlwZXNRdWFsaWZpZWROYW1lcz5TeXNNTDo6QWN0aXZpdGllczo6Q29udHJvbE9wZXJhdG9yPC9zdGVyZW90eXBlc1F1YWxpZmllZE5hbWVzPg0KKyAgICA8L21hdGNoZXJDb25maWd1cmF0aW9uPg0KKyAgPC9lbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zPg0KKyAgPGVsZW1lbnRUeXBlQ29uZmlndXJhdGlvbnMNCisgICAgICB4c2k6dHlwZT0iZWxlbWVudHR5cGVzY29uZmlndXJhdGlvbnM6U3BlY2lhbGl6YXRpb25UeXBlQ29uZmlndXJhdGlvbiINCisgICAgICB4bWk6aWQ9Il9Mb0tYeE1KUUVlU1g5TW9LTUJWNUd3Ig0KKyAgICAgIG5hbWU9IkNvbnRyb2xPcGVyYXRvciAoMzAwNykiDQorICAgICAgaWRlbnRpZmllcj0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5Db250cm9sT3BlcmF0b3JfT3BlcmF0aW9uXzMwMDciDQorICAgICAgaGludD0iMzAwNyI+DQorICAgIDxpY29uRW50cnkNCisgICAgICAgIHhtaTppZD0iX0xvS1h4Y0pRRWVTWDlNb0tNQlY1R3ciDQorICAgICAgICBpY29uUGF0aD0iL2ljb25zL2Z1bGwvb2JqMTYvT3BlcmF0aW9uLmdpZiINCisgICAgICAgIGJ1bmRsZUlkPSJvcmcuZWNsaXBzZS51bWwyLnVtbC5lZGl0Ii8+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LkNvbnRyb2xPcGVyYXRvcl9PcGVyYXRpb248L3NwZWNpYWxpemVkVHlwZXNJRD4NCisgICAgPHNwZWNpYWxpemVkVHlwZXNJRD5vcmcuZWNsaXBzZS5wYXB5cnVzLnVtbC5kaWFncmFtLmNsYXp6Lk9wZXJhdGlvbl8zMDA3PC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICAgIDxtYXRjaGVyQ29uZmlndXJhdGlvbg0KKyAgICAgICAgeHNpOnR5cGU9InN0ZXJlb3R5cGVhcHBsaWNhdGlvbm1hdGNoZXJjb25maWd1cmF0aW9uOlN0ZXJlb3R5cGVBcHBsaWNhdGlvbk1hdGNoZXJDb25maWd1cmF0aW9uIg0KKyAgICAgICAgeG1pOmlkPSJfTG9LWHhzSlFFZVNYOU1vS01CVjVHdyI+DQorICAgICAgPHN0ZXJlb3R5cGVzUXVhbGlmaWVkTmFtZXM+U3lzTUw6OkFjdGl2aXRpZXM6OkNvbnRyb2xPcGVyYXRvcjwvc3RlcmVvdHlwZXNRdWFsaWZpZWROYW1lcz4NCisgICAgPC9tYXRjaGVyQ29uZmlndXJhdGlvbj4NCisgIDwvZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucz4NCisgIDxlbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zDQorICAgICAgeHNpOnR5cGU9ImVsZW1lbnR0eXBlc2NvbmZpZ3VyYXRpb25zOlNwZWNpYWxpemF0aW9uVHlwZUNvbmZpZ3VyYXRpb24iDQorICAgICAgeG1pOmlkPSJfTG9LWHg4SlFFZVNYOU1vS01CVjVHdyINCisgICAgICBuYW1lPSJDb250cm9sT3BlcmF0b3IgKDMwMTMpIg0KKyAgICAgIGlkZW50aWZpZXI9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuQ29udHJvbE9wZXJhdG9yX09wZXJhdGlvbl8zMDEzIg0KKyAgICAgIGhpbnQ9IjMwMTMiPg0KKyAgICA8aWNvbkVudHJ5DQorICAgICAgICB4bWk6aWQ9Il9Mb0tYeU1KUUVlU1g5TW9LTUJWNUd3Ig0KKyAgICAgICAgaWNvblBhdGg9Ii9pY29ucy9mdWxsL29iajE2L09wZXJhdGlvbi5naWYiDQorICAgICAgICBidW5kbGVJZD0ib3JnLmVjbGlwc2UudW1sMi51bWwuZWRpdCIvPg0KKyAgICA8c3BlY2lhbGl6ZWRUeXBlc0lEPm9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5Db250cm9sT3BlcmF0b3JfT3BlcmF0aW9uPC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy51bWwuZGlhZ3JhbS5jbGF6ei5PcGVyYXRpb25fMzAxMzwvc3BlY2lhbGl6ZWRUeXBlc0lEPg0KKyAgICA8bWF0Y2hlckNvbmZpZ3VyYXRpb24NCisgICAgICAgIHhzaTp0eXBlPSJzdGVyZW90eXBlYXBwbGljYXRpb25tYXRjaGVyY29uZmlndXJhdGlvbjpTdGVyZW90eXBlQXBwbGljYXRpb25NYXRjaGVyQ29uZmlndXJhdGlvbiINCisgICAgICAgIHhtaTppZD0iX0xvS1h5Y0pRRWVTWDlNb0tNQlY1R3ciPg0KKyAgICAgIDxzdGVyZW90eXBlc1F1YWxpZmllZE5hbWVzPlN5c01MOjpBY3Rpdml0aWVzOjpDb250cm9sT3BlcmF0b3I8L3N0ZXJlb3R5cGVzUXVhbGlmaWVkTmFtZXM+DQorICAgIDwvbWF0Y2hlckNvbmZpZ3VyYXRpb24+DQorICA8L2VsZW1lbnRUeXBlQ29uZmlndXJhdGlvbnM+DQorICA8ZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucw0KKyAgICAgIHhzaTp0eXBlPSJlbGVtZW50dHlwZXNjb25maWd1cmF0aW9uczpTcGVjaWFsaXphdGlvblR5cGVDb25maWd1cmF0aW9uIg0KKyAgICAgIHhtaTppZD0iX0xvS1h5c0pRRWVTWDlNb0tNQlY1R3ciDQorICAgICAgbmFtZT0iQ29udHJvbE9wZXJhdG9yICgzMDE5KSINCisgICAgICBpZGVudGlmaWVyPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLkNvbnRyb2xPcGVyYXRvcl9PcGVyYXRpb25fMzAxOSINCisgICAgICBoaW50PSIzMDE5Ij4NCisgICAgPGljb25FbnRyeQ0KKyAgICAgICAgeG1pOmlkPSJfTG9LWHk4SlFFZVNYOU1vS01CVjVHdyINCisgICAgICAgIGljb25QYXRoPSIvaWNvbnMvZnVsbC9vYmoxNi9PcGVyYXRpb24uZ2lmIg0KKyAgICAgICAgYnVuZGxlSWQ9Im9yZy5lY2xpcHNlLnVtbDIudW1sLmVkaXQiLz4NCisgICAgPHNwZWNpYWxpemVkVHlwZXNJRD5vcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuQ29udHJvbE9wZXJhdG9yX09wZXJhdGlvbjwvc3BlY2lhbGl6ZWRUeXBlc0lEPg0KKyAgICA8c3BlY2lhbGl6ZWRUeXBlc0lEPm9yZy5lY2xpcHNlLnBhcHlydXMudW1sLmRpYWdyYW0uY2xhenouT3BlcmF0aW9uXzMwMTk8L3NwZWNpYWxpemVkVHlwZXNJRD4NCisgICAgPG1hdGNoZXJDb25maWd1cmF0aW9uDQorICAgICAgICB4c2k6dHlwZT0ic3RlcmVvdHlwZWFwcGxpY2F0aW9ubWF0Y2hlcmNvbmZpZ3VyYXRpb246U3RlcmVvdHlwZUFwcGxpY2F0aW9uTWF0Y2hlckNvbmZpZ3VyYXRpb24iDQorICAgICAgICB4bWk6aWQ9Il9Mb0tYek1KUUVlU1g5TW9LTUJWNUd3Ij4NCisgICAgICA8c3RlcmVvdHlwZXNRdWFsaWZpZWROYW1lcz5TeXNNTDo6QWN0aXZpdGllczo6Q29udHJvbE9wZXJhdG9yPC9zdGVyZW90eXBlc1F1YWxpZmllZE5hbWVzPg0KKyAgICA8L21hdGNoZXJDb25maWd1cmF0aW9uPg0KKyAgPC9lbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zPg0KKyAgPGVsZW1lbnRUeXBlQ29uZmlndXJhdGlvbnMNCisgICAgICB4c2k6dHlwZT0iZWxlbWVudHR5cGVzY29uZmlndXJhdGlvbnM6U3BlY2lhbGl6YXRpb25UeXBlQ29uZmlndXJhdGlvbiINCisgICAgICB4bWk6aWQ9Il9Mb0tYemNKUUVlU1g5TW9LTUJWNUd3Ig0KKyAgICAgIG5hbWU9IkNvbnRyb2xPcGVyYXRvciAoMzA0MikiDQorICAgICAgaWRlbnRpZmllcj0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5Db250cm9sT3BlcmF0b3JfT3BlcmF0aW9uXzMwNDIiDQorICAgICAgaGludD0iMzA0MiI+DQorICAgIDxpY29uRW50cnkNCisgICAgICAgIHhtaTppZD0iX0xvS1h6c0pRRWVTWDlNb0tNQlY1R3ciDQorICAgICAgICBpY29uUGF0aD0iL2ljb25zL2Z1bGwvb2JqMTYvT3BlcmF0aW9uLmdpZiINCisgICAgICAgIGJ1bmRsZUlkPSJvcmcuZWNsaXBzZS51bWwyLnVtbC5lZGl0Ii8+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LkNvbnRyb2xPcGVyYXRvcl9PcGVyYXRpb248L3NwZWNpYWxpemVkVHlwZXNJRD4NCisgICAgPHNwZWNpYWxpemVkVHlwZXNJRD5vcmcuZWNsaXBzZS5wYXB5cnVzLnVtbC5kaWFncmFtLmNsYXp6Lk9wZXJhdGlvbl8zMDQyPC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICAgIDxtYXRjaGVyQ29uZmlndXJhdGlvbg0KKyAgICAgICAgeHNpOnR5cGU9InN0ZXJlb3R5cGVhcHBsaWNhdGlvbm1hdGNoZXJjb25maWd1cmF0aW9uOlN0ZXJlb3R5cGVBcHBsaWNhdGlvbk1hdGNoZXJDb25maWd1cmF0aW9uIg0KKyAgICAgICAgeG1pOmlkPSJfTG9LWHo4SlFFZVNYOU1vS01CVjVHdyI+DQorICAgICAgPHN0ZXJlb3R5cGVzUXVhbGlmaWVkTmFtZXM+U3lzTUw6OkFjdGl2aXRpZXM6OkNvbnRyb2xPcGVyYXRvcjwvc3RlcmVvdHlwZXNRdWFsaWZpZWROYW1lcz4NCisgICAgPC9tYXRjaGVyQ29uZmlndXJhdGlvbj4NCisgIDwvZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucz4NCisgIDxlbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zDQorICAgICAgeHNpOnR5cGU9ImVsZW1lbnR0eXBlc2NvbmZpZ3VyYXRpb25zOlNwZWNpYWxpemF0aW9uVHlwZUNvbmZpZ3VyYXRpb24iDQorICAgICAgeG1pOmlkPSJfTG9LWDBNSlFFZVNYOU1vS01CVjVHdyINCisgICAgICBuYW1lPSJSYXRpb25hbGUgKDIwMTIpIg0KKyAgICAgIGlkZW50aWZpZXI9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuUmF0aW9uYWxlXzIwMTIiDQorICAgICAgaGludD0iMjAxMiI+DQorICAgIDxpY29uRW50cnkNCisgICAgICAgIHhtaTppZD0iX0xvS1gwY0pRRWVTWDlNb0tNQlY1R3ciDQorICAgICAgICBpY29uUGF0aD0iL2ljb25zL2Z1bGwvb2JqMTYvQ29tbWVudC5naWYiDQorICAgICAgICBidW5kbGVJZD0ib3JnLmVjbGlwc2UudW1sMi51bWwuZWRpdCIvPg0KKyAgICA8c3BlY2lhbGl6ZWRUeXBlc0lEPm9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5SYXRpb25hbGU8L3NwZWNpYWxpemVkVHlwZXNJRD4NCisgICAgPHNwZWNpYWxpemVkVHlwZXNJRD5vcmcuZWNsaXBzZS5wYXB5cnVzLnVtbC5kaWFncmFtLmNsYXp6LkNvbW1lbnRfMjAxMjwvc3BlY2lhbGl6ZWRUeXBlc0lEPg0KKyAgICA8bWF0Y2hlckNvbmZpZ3VyYXRpb24NCisgICAgICAgIHhzaTp0eXBlPSJzdGVyZW90eXBlYXBwbGljYXRpb25tYXRjaGVyY29uZmlndXJhdGlvbjpTdGVyZW90eXBlQXBwbGljYXRpb25NYXRjaGVyQ29uZmlndXJhdGlvbiINCisgICAgICAgIHhtaTppZD0iX0xvS1gwc0pRRWVTWDlNb0tNQlY1R3ciPg0KKyAgICAgIDxzdGVyZW90eXBlc1F1YWxpZmllZE5hbWVzPlN5c01MOjpNb2RlbEVsZW1lbnRzOjpSYXRpb25hbGU8L3N0ZXJlb3R5cGVzUXVhbGlmaWVkTmFtZXM+DQorICAgIDwvbWF0Y2hlckNvbmZpZ3VyYXRpb24+DQorICA8L2VsZW1lbnRUeXBlQ29uZmlndXJhdGlvbnM+DQorICA8ZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucw0KKyAgICAgIHhzaTp0eXBlPSJlbGVtZW50dHlwZXNjb25maWd1cmF0aW9uczpTcGVjaWFsaXphdGlvblR5cGVDb25maWd1cmF0aW9uIg0KKyAgICAgIHhtaTppZD0iX0xvS1gwOEpRRWVTWDlNb0tNQlY1R3ciDQorICAgICAgbmFtZT0iUmF0aW9uYWxlICgzMDI4KSINCisgICAgICBpZGVudGlmaWVyPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLlJhdGlvbmFsZV8zMDI4Ig0KKyAgICAgIGhpbnQ9IjMwMjgiPg0KKyAgICA8aWNvbkVudHJ5DQorICAgICAgICB4bWk6aWQ9Il9Mb0tYMU1KUUVlU1g5TW9LTUJWNUd3Ig0KKyAgICAgICAgaWNvblBhdGg9Ii9pY29ucy9mdWxsL29iajE2L0NvbW1lbnQuZ2lmIg0KKyAgICAgICAgYnVuZGxlSWQ9Im9yZy5lY2xpcHNlLnVtbDIudW1sLmVkaXQiLz4NCisgICAgPHNwZWNpYWxpemVkVHlwZXNJRD5vcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuUmF0aW9uYWxlPC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy51bWwuZGlhZ3JhbS5jbGF6ei5Db21tZW50XzMwMjg8L3NwZWNpYWxpemVkVHlwZXNJRD4NCisgICAgPG1hdGNoZXJDb25maWd1cmF0aW9uDQorICAgICAgICB4c2k6dHlwZT0ic3RlcmVvdHlwZWFwcGxpY2F0aW9ubWF0Y2hlcmNvbmZpZ3VyYXRpb246U3RlcmVvdHlwZUFwcGxpY2F0aW9uTWF0Y2hlckNvbmZpZ3VyYXRpb24iDQorICAgICAgICB4bWk6aWQ9Il9Mb0tYMWNKUUVlU1g5TW9LTUJWNUd3Ij4NCisgICAgICA8c3RlcmVvdHlwZXNRdWFsaWZpZWROYW1lcz5TeXNNTDo6TW9kZWxFbGVtZW50czo6UmF0aW9uYWxlPC9zdGVyZW90eXBlc1F1YWxpZmllZE5hbWVzPg0KKyAgICA8L21hdGNoZXJDb25maWd1cmF0aW9uPg0KKyAgPC9lbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zPg0KKyAgPGVsZW1lbnRUeXBlQ29uZmlndXJhdGlvbnMNCisgICAgICB4c2k6dHlwZT0iZWxlbWVudHR5cGVzY29uZmlndXJhdGlvbnM6U3BlY2lhbGl6YXRpb25UeXBlQ29uZmlndXJhdGlvbiINCisgICAgICB4bWk6aWQ9Il9Mb0tYMXNKUUVlU1g5TW9LTUJWNUd3Ig0KKyAgICAgIG5hbWU9IlZpZXcgKDIwMDcpIg0KKyAgICAgIGlkZW50aWZpZXI9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuVmlld19QYWNrYWdlXzIwMDciDQorICAgICAgaGludD0iMjAwNyI+DQorICAgIDxpY29uRW50cnkNCisgICAgICAgIHhtaTppZD0iX0xvS1gxOEpRRWVTWDlNb0tNQlY1R3ciDQorICAgICAgICBpY29uUGF0aD0iL2ljb25zL2Z1bGwvb2JqMTYvUGFja2FnZS5naWYiDQorICAgICAgICBidW5kbGVJZD0ib3JnLmVjbGlwc2UudW1sMi51bWwuZWRpdCIvPg0KKyAgICA8c3BlY2lhbGl6ZWRUeXBlc0lEPm9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5WaWV3X1BhY2thZ2U8L3NwZWNpYWxpemVkVHlwZXNJRD4NCisgICAgPHNwZWNpYWxpemVkVHlwZXNJRD5vcmcuZWNsaXBzZS5wYXB5cnVzLnVtbC5kaWFncmFtLmNsYXp6LlBhY2thZ2VfMjAwNzwvc3BlY2lhbGl6ZWRUeXBlc0lEPg0KKyAgICA8bWF0Y2hlckNvbmZpZ3VyYXRpb24NCisgICAgICAgIHhzaTp0eXBlPSJzdGVyZW90eXBlYXBwbGljYXRpb25tYXRjaGVyY29uZmlndXJhdGlvbjpTdGVyZW90eXBlQXBwbGljYXRpb25NYXRjaGVyQ29uZmlndXJhdGlvbiINCisgICAgICAgIHhtaTppZD0iX0xvS1gyTUpRRWVTWDlNb0tNQlY1R3ciPg0KKyAgICAgIDxzdGVyZW90eXBlc1F1YWxpZmllZE5hbWVzPlN5c01MOjpNb2RlbEVsZW1lbnRzOjpWaWV3PC9zdGVyZW90eXBlc1F1YWxpZmllZE5hbWVzPg0KKyAgICA8L21hdGNoZXJDb25maWd1cmF0aW9uPg0KKyAgPC9lbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zPg0KKyAgPGVsZW1lbnRUeXBlQ29uZmlndXJhdGlvbnMNCisgICAgICB4c2k6dHlwZT0iZWxlbWVudHR5cGVzY29uZmlndXJhdGlvbnM6U3BlY2lhbGl6YXRpb25UeXBlQ29uZmlndXJhdGlvbiINCisgICAgICB4bWk6aWQ9Il9Mb0tYMmNKUUVlU1g5TW9LTUJWNUd3Ig0KKyAgICAgIG5hbWU9IlZpZXcgKDMwMDkpIg0KKyAgICAgIGlkZW50aWZpZXI9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuVmlld19QYWNrYWdlXzMwMDkiDQorICAgICAgaGludD0iMzAwOSI+DQorICAgIDxpY29uRW50cnkNCisgICAgICAgIHhtaTppZD0iX0xvS1gyc0pRRWVTWDlNb0tNQlY1R3ciDQorICAgICAgICBpY29uUGF0aD0iL2ljb25zL2Z1bGwvb2JqMTYvUGFja2FnZS5naWYiDQorICAgICAgICBidW5kbGVJZD0ib3JnLmVjbGlwc2UudW1sMi51bWwuZWRpdCIvPg0KKyAgICA8c3BlY2lhbGl6ZWRUeXBlc0lEPm9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5WaWV3X1BhY2thZ2U8L3NwZWNpYWxpemVkVHlwZXNJRD4NCisgICAgPHNwZWNpYWxpemVkVHlwZXNJRD5vcmcuZWNsaXBzZS5wYXB5cnVzLnVtbC5kaWFncmFtLmNsYXp6LlBhY2thZ2VfMzAwOTwvc3BlY2lhbGl6ZWRUeXBlc0lEPg0KKyAgICA8bWF0Y2hlckNvbmZpZ3VyYXRpb24NCisgICAgICAgIHhzaTp0eXBlPSJzdGVyZW90eXBlYXBwbGljYXRpb25tYXRjaGVyY29uZmlndXJhdGlvbjpTdGVyZW90eXBlQXBwbGljYXRpb25NYXRjaGVyQ29uZmlndXJhdGlvbiINCisgICAgICAgIHhtaTppZD0iX0xvS1gyOEpRRWVTWDlNb0tNQlY1R3ciPg0KKyAgICAgIDxzdGVyZW90eXBlc1F1YWxpZmllZE5hbWVzPlN5c01MOjpNb2RlbEVsZW1lbnRzOjpWaWV3PC9zdGVyZW90eXBlc1F1YWxpZmllZE5hbWVzPg0KKyAgICA8L21hdGNoZXJDb25maWd1cmF0aW9uPg0KKyAgPC9lbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zPg0KKyAgPGVsZW1lbnRUeXBlQ29uZmlndXJhdGlvbnMNCisgICAgICB4c2k6dHlwZT0iZWxlbWVudHR5cGVzY29uZmlndXJhdGlvbnM6U3BlY2lhbGl6YXRpb25UeXBlQ29uZmlndXJhdGlvbiINCisgICAgICB4bWk6aWQ9Il9Mb0tYM01KUUVlU1g5TW9LTUJWNUd3Ig0KKyAgICAgIG5hbWU9IlZpZXcgKFBhcHlydXNVTUxDbGFzc0RpYWdyYW0pIg0KKyAgICAgIGlkZW50aWZpZXI9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuVmlld19QYWNrYWdlX1BhcHlydXNVTUxDbGFzc0RpYWdyYW0iDQorICAgICAgaGludD0iUGFweXJ1c1VNTENsYXNzRGlhZ3JhbSI+DQorICAgIDxpY29uRW50cnkNCisgICAgICAgIHhtaTppZD0iX0xvS1gzY0pRRWVTWDlNb0tNQlY1R3ciDQorICAgICAgICBpY29uUGF0aD0iL2ljb25zL2Z1bGwvb2JqMTYvUGFja2FnZS5naWYiDQorICAgICAgICBidW5kbGVJZD0ib3JnLmVjbGlwc2UudW1sMi51bWwuZWRpdCIvPg0KKyAgICA8c3BlY2lhbGl6ZWRUeXBlc0lEPm9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5WaWV3X1BhY2thZ2U8L3NwZWNpYWxpemVkVHlwZXNJRD4NCisgICAgPHNwZWNpYWxpemVkVHlwZXNJRD5vcmcuZWNsaXBzZS5wYXB5cnVzLnVtbC5kaWFncmFtLmNsYXp6LlBhY2thZ2VfMTAwMDwvc3BlY2lhbGl6ZWRUeXBlc0lEPg0KKyAgICA8bWF0Y2hlckNvbmZpZ3VyYXRpb24NCisgICAgICAgIHhzaTp0eXBlPSJzdGVyZW90eXBlYXBwbGljYXRpb25tYXRjaGVyY29uZmlndXJhdGlvbjpTdGVyZW90eXBlQXBwbGljYXRpb25NYXRjaGVyQ29uZmlndXJhdGlvbiINCisgICAgICAgIHhtaTppZD0iX0xvS1gzc0pRRWVTWDlNb0tNQlY1R3ciPg0KKyAgICAgIDxzdGVyZW90eXBlc1F1YWxpZmllZE5hbWVzPlN5c01MOjpNb2RlbEVsZW1lbnRzOjpWaWV3PC9zdGVyZW90eXBlc1F1YWxpZmllZE5hbWVzPg0KKyAgICA8L21hdGNoZXJDb25maWd1cmF0aW9uPg0KKyAgPC9lbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zPg0KKyAgPGVsZW1lbnRUeXBlQ29uZmlndXJhdGlvbnMNCisgICAgICB4c2k6dHlwZT0iZWxlbWVudHR5cGVzY29uZmlndXJhdGlvbnM6U3BlY2lhbGl6YXRpb25UeXBlQ29uZmlndXJhdGlvbiINCisgICAgICB4bWk6aWQ9Il9Mb0tYMzhKUUVlU1g5TW9LTUJWNUd3Ig0KKyAgICAgIG5hbWU9IlZpZXcgKDIwMDgpIg0KKyAgICAgIGlkZW50aWZpZXI9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuVmlld19DbGFzc18yMDA4Ig0KKyAgICAgIGhpbnQ9IjIwMDgiPg0KKyAgICA8aWNvbkVudHJ5DQorICAgICAgICB4bWk6aWQ9Il9Mb0tYNE1KUUVlU1g5TW9LTUJWNUd3Ig0KKyAgICAgICAgaWNvblBhdGg9Ii9pY29ucy9mdWxsL29iajE2L0NsYXNzLmdpZiINCisgICAgICAgIGJ1bmRsZUlkPSJvcmcuZWNsaXBzZS51bWwyLnVtbC5lZGl0Ii8+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LlZpZXdfQ2xhc3M8L3NwZWNpYWxpemVkVHlwZXNJRD4NCisgICAgPHNwZWNpYWxpemVkVHlwZXNJRD5vcmcuZWNsaXBzZS5wYXB5cnVzLnVtbC5kaWFncmFtLmNsYXp6LkNsYXNzXzIwMDg8L3NwZWNpYWxpemVkVHlwZXNJRD4NCisgICAgPG1hdGNoZXJDb25maWd1cmF0aW9uDQorICAgICAgICB4c2k6dHlwZT0ic3RlcmVvdHlwZWFwcGxpY2F0aW9ubWF0Y2hlcmNvbmZpZ3VyYXRpb246U3RlcmVvdHlwZUFwcGxpY2F0aW9uTWF0Y2hlckNvbmZpZ3VyYXRpb24iDQorICAgICAgICB4bWk6aWQ9Il9Mb0tYNGNKUUVlU1g5TW9LTUJWNUd3Ij4NCisgICAgICA8c3RlcmVvdHlwZXNRdWFsaWZpZWROYW1lcz5TeXNNTDo6TW9kZWxFbGVtZW50czo6Vmlldzwvc3RlcmVvdHlwZXNRdWFsaWZpZWROYW1lcz4NCisgICAgPC9tYXRjaGVyQ29uZmlndXJhdGlvbj4NCisgIDwvZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucz4NCisgIDxlbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zDQorICAgICAgeHNpOnR5cGU9ImVsZW1lbnR0eXBlc2NvbmZpZ3VyYXRpb25zOlNwZWNpYWxpemF0aW9uVHlwZUNvbmZpZ3VyYXRpb24iDQorICAgICAgeG1pOmlkPSJfTG9LWDRzSlFFZVNYOU1vS01CVjVHdyINCisgICAgICBuYW1lPSJWaWV3ICgzMDA0KSINCisgICAgICBpZGVudGlmaWVyPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLlZpZXdfQ2xhc3NfMzAwNCINCisgICAgICBoaW50PSIzMDA0Ij4NCisgICAgPGljb25FbnRyeQ0KKyAgICAgICAgeG1pOmlkPSJfTG9LWDQ4SlFFZVNYOU1vS01CVjVHdyINCisgICAgICAgIGljb25QYXRoPSIvaWNvbnMvZnVsbC9vYmoxNi9DbGFzcy5naWYiDQorICAgICAgICBidW5kbGVJZD0ib3JnLmVjbGlwc2UudW1sMi51bWwuZWRpdCIvPg0KKyAgICA8c3BlY2lhbGl6ZWRUeXBlc0lEPm9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5WaWV3X0NsYXNzPC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy51bWwuZGlhZ3JhbS5jbGF6ei5DbGFzc18zMDA0PC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICAgIDxtYXRjaGVyQ29uZmlndXJhdGlvbg0KKyAgICAgICAgeHNpOnR5cGU9InN0ZXJlb3R5cGVhcHBsaWNhdGlvbm1hdGNoZXJjb25maWd1cmF0aW9uOlN0ZXJlb3R5cGVBcHBsaWNhdGlvbk1hdGNoZXJDb25maWd1cmF0aW9uIg0KKyAgICAgICAgeG1pOmlkPSJfTG9LWDVNSlFFZVNYOU1vS01CVjVHdyI+DQorICAgICAgPHN0ZXJlb3R5cGVzUXVhbGlmaWVkTmFtZXM+U3lzTUw6Ok1vZGVsRWxlbWVudHM6OlZpZXc8L3N0ZXJlb3R5cGVzUXVhbGlmaWVkTmFtZXM+DQorICAgIDwvbWF0Y2hlckNvbmZpZ3VyYXRpb24+DQorICA8L2VsZW1lbnRUeXBlQ29uZmlndXJhdGlvbnM+DQorICA8ZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucw0KKyAgICAgIHhzaTp0eXBlPSJlbGVtZW50dHlwZXNjb25maWd1cmF0aW9uczpTcGVjaWFsaXphdGlvblR5cGVDb25maWd1cmF0aW9uIg0KKyAgICAgIHhtaTppZD0iX0xvS1g1Y0pRRWVTWDlNb0tNQlY1R3ciDQorICAgICAgbmFtZT0iVmlldyAoMzAwOCkiDQorICAgICAgaWRlbnRpZmllcj0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5WaWV3X0NsYXNzXzMwMDgiDQorICAgICAgaGludD0iMzAwOCI+DQorICAgIDxpY29uRW50cnkNCisgICAgICAgIHhtaTppZD0iX0xvS1g1c0pRRWVTWDlNb0tNQlY1R3ciDQorICAgICAgICBpY29uUGF0aD0iL2ljb25zL2Z1bGwvb2JqMTYvQ2xhc3MuZ2lmIg0KKyAgICAgICAgYnVuZGxlSWQ9Im9yZy5lY2xpcHNlLnVtbDIudW1sLmVkaXQiLz4NCisgICAgPHNwZWNpYWxpemVkVHlwZXNJRD5vcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuVmlld19DbGFzczwvc3BlY2lhbGl6ZWRUeXBlc0lEPg0KKyAgICA8c3BlY2lhbGl6ZWRUeXBlc0lEPm9yZy5lY2xpcHNlLnBhcHlydXMudW1sLmRpYWdyYW0uY2xhenouQ2xhc3NfMzAwODwvc3BlY2lhbGl6ZWRUeXBlc0lEPg0KKyAgICA8bWF0Y2hlckNvbmZpZ3VyYXRpb24NCisgICAgICAgIHhzaTp0eXBlPSJzdGVyZW90eXBlYXBwbGljYXRpb25tYXRjaGVyY29uZmlndXJhdGlvbjpTdGVyZW90eXBlQXBwbGljYXRpb25NYXRjaGVyQ29uZmlndXJhdGlvbiINCisgICAgICAgIHhtaTppZD0iX0xvS1g1OEpRRWVTWDlNb0tNQlY1R3ciPg0KKyAgICAgIDxzdGVyZW90eXBlc1F1YWxpZmllZE5hbWVzPlN5c01MOjpNb2RlbEVsZW1lbnRzOjpWaWV3PC9zdGVyZW90eXBlc1F1YWxpZmllZE5hbWVzPg0KKyAgICA8L21hdGNoZXJDb25maWd1cmF0aW9uPg0KKyAgPC9lbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zPg0KKyAgPGVsZW1lbnRUeXBlQ29uZmlndXJhdGlvbnMNCisgICAgICB4c2k6dHlwZT0iZWxlbWVudHR5cGVzY29uZmlndXJhdGlvbnM6U3BlY2lhbGl6YXRpb25UeXBlQ29uZmlndXJhdGlvbiINCisgICAgICB4bWk6aWQ9Il9Mb0tYNk1KUUVlU1g5TW9LTUJWNUd3Ig0KKyAgICAgIG5hbWU9IlZpZXcgKDMwMTApIg0KKyAgICAgIGlkZW50aWZpZXI9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuVmlld19DbGFzc18zMDEwIg0KKyAgICAgIGhpbnQ9IjMwMTAiPg0KKyAgICA8aWNvbkVudHJ5DQorICAgICAgICB4bWk6aWQ9Il9Mb0tYNmNKUUVlU1g5TW9LTUJWNUd3Ig0KKyAgICAgICAgaWNvblBhdGg9Ii9pY29ucy9mdWxsL29iajE2L0NsYXNzLmdpZiINCisgICAgICAgIGJ1bmRsZUlkPSJvcmcuZWNsaXBzZS51bWwyLnVtbC5lZGl0Ii8+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LlZpZXdfQ2xhc3M8L3NwZWNpYWxpemVkVHlwZXNJRD4NCisgICAgPHNwZWNpYWxpemVkVHlwZXNJRD5vcmcuZWNsaXBzZS5wYXB5cnVzLnVtbC5kaWFncmFtLmNsYXp6LkNsYXNzXzMwMTA8L3NwZWNpYWxpemVkVHlwZXNJRD4NCisgICAgPG1hdGNoZXJDb25maWd1cmF0aW9uDQorICAgICAgICB4c2k6dHlwZT0ic3RlcmVvdHlwZWFwcGxpY2F0aW9ubWF0Y2hlcmNvbmZpZ3VyYXRpb246U3RlcmVvdHlwZUFwcGxpY2F0aW9uTWF0Y2hlckNvbmZpZ3VyYXRpb24iDQorICAgICAgICB4bWk6aWQ9Il9Mb0tYNnNKUUVlU1g5TW9LTUJWNUd3Ij4NCisgICAgICA8c3RlcmVvdHlwZXNRdWFsaWZpZWROYW1lcz5TeXNNTDo6TW9kZWxFbGVtZW50czo6Vmlldzwvc3RlcmVvdHlwZXNRdWFsaWZpZWROYW1lcz4NCisgICAgPC9tYXRjaGVyQ29uZmlndXJhdGlvbj4NCisgIDwvZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucz4NCisgIDxlbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zDQorICAgICAgeHNpOnR5cGU9ImVsZW1lbnR0eXBlc2NvbmZpZ3VyYXRpb25zOlNwZWNpYWxpemF0aW9uVHlwZUNvbmZpZ3VyYXRpb24iDQorICAgICAgeG1pOmlkPSJfTG9LWDY4SlFFZVNYOU1vS01CVjVHdyINCisgICAgICBuYW1lPSJWaWV3ICgzMDE0KSINCisgICAgICBpZGVudGlmaWVyPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLlZpZXdfQ2xhc3NfMzAxNCINCisgICAgICBoaW50PSIzMDE0Ij4NCisgICAgPGljb25FbnRyeQ0KKyAgICAgICAgeG1pOmlkPSJfTG9LWDdNSlFFZVNYOU1vS01CVjVHdyINCisgICAgICAgIGljb25QYXRoPSIvaWNvbnMvZnVsbC9vYmoxNi9DbGFzcy5naWYiDQorICAgICAgICBidW5kbGVJZD0ib3JnLmVjbGlwc2UudW1sMi51bWwuZWRpdCIvPg0KKyAgICA8c3BlY2lhbGl6ZWRUeXBlc0lEPm9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5WaWV3X0NsYXNzPC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy51bWwuZGlhZ3JhbS5jbGF6ei5DbGFzc18zMDE0PC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICAgIDxtYXRjaGVyQ29uZmlndXJhdGlvbg0KKyAgICAgICAgeHNpOnR5cGU9InN0ZXJlb3R5cGVhcHBsaWNhdGlvbm1hdGNoZXJjb25maWd1cmF0aW9uOlN0ZXJlb3R5cGVBcHBsaWNhdGlvbk1hdGNoZXJDb25maWd1cmF0aW9uIg0KKyAgICAgICAgeG1pOmlkPSJfTG9LWDdjSlFFZVNYOU1vS01CVjVHdyI+DQorICAgICAgPHN0ZXJlb3R5cGVzUXVhbGlmaWVkTmFtZXM+U3lzTUw6Ok1vZGVsRWxlbWVudHM6OlZpZXc8L3N0ZXJlb3R5cGVzUXVhbGlmaWVkTmFtZXM+DQorICAgIDwvbWF0Y2hlckNvbmZpZ3VyYXRpb24+DQorICA8L2VsZW1lbnRUeXBlQ29uZmlndXJhdGlvbnM+DQorICA8ZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucw0KKyAgICAgIHhzaTp0eXBlPSJlbGVtZW50dHlwZXNjb25maWd1cmF0aW9uczpTcGVjaWFsaXphdGlvblR5cGVDb25maWd1cmF0aW9uIg0KKyAgICAgIHhtaTppZD0iX0xvS1g3c0pRRWVTWDlNb0tNQlY1R3ciDQorICAgICAgbmFtZT0iQ29uZm9ybSAoMjAxNCkiDQorICAgICAgaWRlbnRpZmllcj0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5Db25mb3JtX0RlcGVuZGVuY3lfMjAxNCINCisgICAgICBoaW50PSIyMDE0Ij4NCisgICAgPGljb25FbnRyeQ0KKyAgICAgICAgeG1pOmlkPSJfTG9LWDc4SlFFZVNYOU1vS01CVjVHdyINCisgICAgICAgIGljb25QYXRoPSIvaWNvbnMvZnVsbC9vYmoxNi9EZXBlbmRlbmN5LmdpZiINCisgICAgICAgIGJ1bmRsZUlkPSJvcmcuZWNsaXBzZS51bWwyLnVtbC5lZGl0Ii8+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LkNvbmZvcm1fRGVwZW5kZW5jeTwvc3BlY2lhbGl6ZWRUeXBlc0lEPg0KKyAgICA8c3BlY2lhbGl6ZWRUeXBlc0lEPm9yZy5lY2xpcHNlLnBhcHlydXMudW1sLmRpYWdyYW0uY2xhenouRGVwZW5kZW5jeV8yMDE0PC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICAgIDxtYXRjaGVyQ29uZmlndXJhdGlvbg0KKyAgICAgICAgeHNpOnR5cGU9InN0ZXJlb3R5cGVhcHBsaWNhdGlvbm1hdGNoZXJjb25maWd1cmF0aW9uOlN0ZXJlb3R5cGVBcHBsaWNhdGlvbk1hdGNoZXJDb25maWd1cmF0aW9uIg0KKyAgICAgICAgeG1pOmlkPSJfTG9LWDhNSlFFZVNYOU1vS01CVjVHdyI+DQorICAgICAgPHN0ZXJlb3R5cGVzUXVhbGlmaWVkTmFtZXM+U3lzTUw6Ok1vZGVsRWxlbWVudHM6OkNvbmZvcm08L3N0ZXJlb3R5cGVzUXVhbGlmaWVkTmFtZXM+DQorICAgIDwvbWF0Y2hlckNvbmZpZ3VyYXRpb24+DQorICA8L2VsZW1lbnRUeXBlQ29uZmlndXJhdGlvbnM+DQorICA8ZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucw0KKyAgICAgIHhzaTp0eXBlPSJlbGVtZW50dHlwZXNjb25maWd1cmF0aW9uczpTcGVjaWFsaXphdGlvblR5cGVDb25maWd1cmF0aW9uIg0KKyAgICAgIHhtaTppZD0iX0xvS1g4Y0pRRWVTWDlNb0tNQlY1R3ciDQorICAgICAgbmFtZT0iQ29uZm9ybSAoNDAwOCkiDQorICAgICAgaWRlbnRpZmllcj0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5Db25mb3JtX0RlcGVuZGVuY3lfNDAwOCINCisgICAgICBoaW50PSI0MDA4Ij4NCisgICAgPGljb25FbnRyeQ0KKyAgICAgICAgeG1pOmlkPSJfTG9LWDhzSlFFZVNYOU1vS01CVjVHdyINCisgICAgICAgIGljb25QYXRoPSIvaWNvbnMvZnVsbC9vYmoxNi9EZXBlbmRlbmN5LmdpZiINCisgICAgICAgIGJ1bmRsZUlkPSJvcmcuZWNsaXBzZS51bWwyLnVtbC5lZGl0Ii8+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LkNvbmZvcm1fRGVwZW5kZW5jeTwvc3BlY2lhbGl6ZWRUeXBlc0lEPg0KKyAgICA8c3BlY2lhbGl6ZWRUeXBlc0lEPm9yZy5lY2xpcHNlLnBhcHlydXMudW1sLmRpYWdyYW0uY2xhenouRGVwZW5kZW5jeV80MDA4PC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICAgIDxtYXRjaGVyQ29uZmlndXJhdGlvbg0KKyAgICAgICAgeHNpOnR5cGU9InN0ZXJlb3R5cGVhcHBsaWNhdGlvbm1hdGNoZXJjb25maWd1cmF0aW9uOlN0ZXJlb3R5cGVBcHBsaWNhdGlvbk1hdGNoZXJDb25maWd1cmF0aW9uIg0KKyAgICAgICAgeG1pOmlkPSJfTG9LWDg4SlFFZVNYOU1vS01CVjVHdyI+DQorICAgICAgPHN0ZXJlb3R5cGVzUXVhbGlmaWVkTmFtZXM+U3lzTUw6Ok1vZGVsRWxlbWVudHM6OkNvbmZvcm08L3N0ZXJlb3R5cGVzUXVhbGlmaWVkTmFtZXM+DQorICAgIDwvbWF0Y2hlckNvbmZpZ3VyYXRpb24+DQorICA8L2VsZW1lbnRUeXBlQ29uZmlndXJhdGlvbnM+DQorICA8ZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucw0KKyAgICAgIHhzaTp0eXBlPSJlbGVtZW50dHlwZXNjb25maWd1cmF0aW9uczpTcGVjaWFsaXphdGlvblR5cGVDb25maWd1cmF0aW9uIg0KKyAgICAgIHhtaTppZD0iX0xvS1g5TUpRRWVTWDlNb0tNQlY1R3ciDQorICAgICAgbmFtZT0iQ29uZm9ybSAoNDAxOCkiDQorICAgICAgaWRlbnRpZmllcj0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5Db25mb3JtX0RlcGVuZGVuY3lfNDAxOCINCisgICAgICBoaW50PSI0MDE4Ij4NCisgICAgPGljb25FbnRyeQ0KKyAgICAgICAgeG1pOmlkPSJfTG9LWDljSlFFZVNYOU1vS01CVjVHdyINCisgICAgICAgIGljb25QYXRoPSIvaWNvbnMvZnVsbC9vYmoxNi9EZXBlbmRlbmN5LmdpZiINCisgICAgICAgIGJ1bmRsZUlkPSJvcmcuZWNsaXBzZS51bWwyLnVtbC5lZGl0Ii8+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LkNvbmZvcm1fRGVwZW5kZW5jeTwvc3BlY2lhbGl6ZWRUeXBlc0lEPg0KKyAgICA8c3BlY2lhbGl6ZWRUeXBlc0lEPm9yZy5lY2xpcHNlLnBhcHlydXMudW1sLmRpYWdyYW0uY2xhenouRGVwZW5kZW5jeV80MDE4PC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICAgIDxtYXRjaGVyQ29uZmlndXJhdGlvbg0KKyAgICAgICAgeHNpOnR5cGU9InN0ZXJlb3R5cGVhcHBsaWNhdGlvbm1hdGNoZXJjb25maWd1cmF0aW9uOlN0ZXJlb3R5cGVBcHBsaWNhdGlvbk1hdGNoZXJDb25maWd1cmF0aW9uIg0KKyAgICAgICAgeG1pOmlkPSJfTG9LWDlzSlFFZVNYOU1vS01CVjVHdyI+DQorICAgICAgPHN0ZXJlb3R5cGVzUXVhbGlmaWVkTmFtZXM+U3lzTUw6Ok1vZGVsRWxlbWVudHM6OkNvbmZvcm08L3N0ZXJlb3R5cGVzUXVhbGlmaWVkTmFtZXM+DQorICAgIDwvbWF0Y2hlckNvbmZpZ3VyYXRpb24+DQorICA8L2VsZW1lbnRUeXBlQ29uZmlndXJhdGlvbnM+DQorICA8ZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucw0KKyAgICAgIHhzaTp0eXBlPSJlbGVtZW50dHlwZXNjb25maWd1cmF0aW9uczpTcGVjaWFsaXphdGlvblR5cGVDb25maWd1cmF0aW9uIg0KKyAgICAgIHhtaTppZD0iX0xvS1g5OEpRRWVTWDlNb0tNQlY1R3ciDQorICAgICAgbmFtZT0iQ29uZm9ybSBHZW5lcmFsaXphdGlvbiINCisgICAgICBpZGVudGlmaWVyPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLkNvbmZvcm1fR2VuZXJhbGl6YXRpb25fNDAwMiINCisgICAgICBoaW50PSI0MDAyIj4NCisgICAgPGljb25FbnRyeQ0KKyAgICAgICAgeG1pOmlkPSJfTG9LWC1NSlFFZVNYOU1vS01CVjVHdyINCisgICAgICAgIGljb25QYXRoPSIvaWNvbnMvZnVsbC9vYmoxNi9HZW5lcmFsaXphdGlvbi5naWYiDQorICAgICAgICBidW5kbGVJZD0ib3JnLmVjbGlwc2UudW1sMi51bWwuZWRpdCIvPg0KKyAgICA8c3BlY2lhbGl6ZWRUeXBlc0lEPm9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5Db25mb3JtX0dlbmVyYWxpemF0aW9uPC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy51bWwuZGlhZ3JhbS5jbGF6ei5HZW5lcmFsaXphdGlvbl80MDAyPC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICAgIDxtYXRjaGVyQ29uZmlndXJhdGlvbg0KKyAgICAgICAgeHNpOnR5cGU9InN0ZXJlb3R5cGVhcHBsaWNhdGlvbm1hdGNoZXJjb25maWd1cmF0aW9uOlN0ZXJlb3R5cGVBcHBsaWNhdGlvbk1hdGNoZXJDb25maWd1cmF0aW9uIg0KKyAgICAgICAgeG1pOmlkPSJfTG9LWC1jSlFFZVNYOU1vS01CVjVHdyI+DQorICAgICAgPHN0ZXJlb3R5cGVzUXVhbGlmaWVkTmFtZXM+U3lzTUw6Ok1vZGVsRWxlbWVudHM6OkNvbmZvcm08L3N0ZXJlb3R5cGVzUXVhbGlmaWVkTmFtZXM+DQorICAgIDwvbWF0Y2hlckNvbmZpZ3VyYXRpb24+DQorICA8L2VsZW1lbnRUeXBlQ29uZmlndXJhdGlvbnM+DQorICA8ZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucw0KKyAgICAgIHhzaTp0eXBlPSJlbGVtZW50dHlwZXNjb25maWd1cmF0aW9uczpTcGVjaWFsaXphdGlvblR5cGVDb25maWd1cmF0aW9uIg0KKyAgICAgIHhtaTppZD0iX0xvS1gtc0pRRWVTWDlNb0tNQlY1R3ciDQorICAgICAgbmFtZT0iUHJvYmxlbSAoMjAxMikiDQorICAgICAgaWRlbnRpZmllcj0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5Qcm9ibGVtXzIwMTIiDQorICAgICAgaGludD0iMjAxMiI+DQorICAgIDxpY29uRW50cnkNCisgICAgICAgIHhtaTppZD0iX0xvS1gtOEpRRWVTWDlNb0tNQlY1R3ciDQorICAgICAgICBpY29uUGF0aD0iL2ljb25zL2Z1bGwvb2JqMTYvQ29tbWVudC5naWYiDQorICAgICAgICBidW5kbGVJZD0ib3JnLmVjbGlwc2UudW1sMi51bWwuZWRpdCIvPg0KKyAgICA8c3BlY2lhbGl6ZWRUeXBlc0lEPm9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5Qcm9ibGVtPC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy51bWwuZGlhZ3JhbS5jbGF6ei5Db21tZW50XzIwMTI8L3NwZWNpYWxpemVkVHlwZXNJRD4NCisgICAgPG1hdGNoZXJDb25maWd1cmF0aW9uDQorICAgICAgICB4c2k6dHlwZT0ic3RlcmVvdHlwZWFwcGxpY2F0aW9ubWF0Y2hlcmNvbmZpZ3VyYXRpb246U3RlcmVvdHlwZUFwcGxpY2F0aW9uTWF0Y2hlckNvbmZpZ3VyYXRpb24iDQorICAgICAgICB4bWk6aWQ9Il9Mb0tYX01KUUVlU1g5TW9LTUJWNUd3Ij4NCisgICAgICA8c3RlcmVvdHlwZXNRdWFsaWZpZWROYW1lcz5TeXNNTDo6TW9kZWxFbGVtZW50czo6UHJvYmxlbTwvc3RlcmVvdHlwZXNRdWFsaWZpZWROYW1lcz4NCisgICAgPC9tYXRjaGVyQ29uZmlndXJhdGlvbj4NCisgIDwvZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucz4NCisgIDxlbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zDQorICAgICAgeHNpOnR5cGU9ImVsZW1lbnR0eXBlc2NvbmZpZ3VyYXRpb25zOlNwZWNpYWxpemF0aW9uVHlwZUNvbmZpZ3VyYXRpb24iDQorICAgICAgeG1pOmlkPSJfTG9LWF9jSlFFZVNYOU1vS01CVjVHdyINCisgICAgICBuYW1lPSJQcm9ibGVtICgzMDI4KSINCisgICAgICBpZGVudGlmaWVyPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLlByb2JsZW1fMzAyOCINCisgICAgICBoaW50PSIzMDI4Ij4NCisgICAgPGljb25FbnRyeQ0KKyAgICAgICAgeG1pOmlkPSJfTG9LWF9zSlFFZVNYOU1vS01CVjVHdyINCisgICAgICAgIGljb25QYXRoPSIvaWNvbnMvZnVsbC9vYmoxNi9Db21tZW50LmdpZiINCisgICAgICAgIGJ1bmRsZUlkPSJvcmcuZWNsaXBzZS51bWwyLnVtbC5lZGl0Ii8+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LlByb2JsZW08L3NwZWNpYWxpemVkVHlwZXNJRD4NCisgICAgPHNwZWNpYWxpemVkVHlwZXNJRD5vcmcuZWNsaXBzZS5wYXB5cnVzLnVtbC5kaWFncmFtLmNsYXp6LkNvbW1lbnRfMzAyODwvc3BlY2lhbGl6ZWRUeXBlc0lEPg0KKyAgICA8bWF0Y2hlckNvbmZpZ3VyYXRpb24NCisgICAgICAgIHhzaTp0eXBlPSJzdGVyZW90eXBlYXBwbGljYXRpb25tYXRjaGVyY29uZmlndXJhdGlvbjpTdGVyZW90eXBlQXBwbGljYXRpb25NYXRjaGVyQ29uZmlndXJhdGlvbiINCisgICAgICAgIHhtaTppZD0iX0xvS1hfOEpRRWVTWDlNb0tNQlY1R3ciPg0KKyAgICAgIDxzdGVyZW90eXBlc1F1YWxpZmllZE5hbWVzPlN5c01MOjpNb2RlbEVsZW1lbnRzOjpQcm9ibGVtPC9zdGVyZW90eXBlc1F1YWxpZmllZE5hbWVzPg0KKyAgICA8L21hdGNoZXJDb25maWd1cmF0aW9uPg0KKyAgPC9lbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zPg0KKyAgPGVsZW1lbnRUeXBlQ29uZmlndXJhdGlvbnMNCisgICAgICB4c2k6dHlwZT0iZWxlbWVudHR5cGVzY29uZmlndXJhdGlvbnM6U3BlY2lhbGl6YXRpb25UeXBlQ29uZmlndXJhdGlvbiINCisgICAgICB4bWk6aWQ9Il9Mb0tZQU1KUUVlU1g5TW9LTUJWNUd3Ig0KKyAgICAgIG5hbWU9IlZpZXdQb2ludCAoMjAwOCkiDQorICAgICAgaWRlbnRpZmllcj0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5WaWV3UG9pbnRfMjAwOCINCisgICAgICBoaW50PSIyMDA4Ij4NCisgICAgPGljb25FbnRyeQ0KKyAgICAgICAgeG1pOmlkPSJfTG9LWUFjSlFFZVNYOU1vS01CVjVHdyINCisgICAgICAgIGljb25QYXRoPSIvaWNvbnMvZnVsbC9vYmoxNi9DbGFzcy5naWYiDQorICAgICAgICBidW5kbGVJZD0ib3JnLmVjbGlwc2UudW1sMi51bWwuZWRpdCIvPg0KKyAgICA8c3BlY2lhbGl6ZWRUeXBlc0lEPm9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5WaWV3UG9pbnQ8L3NwZWNpYWxpemVkVHlwZXNJRD4NCisgICAgPHNwZWNpYWxpemVkVHlwZXNJRD5vcmcuZWNsaXBzZS5wYXB5cnVzLnVtbC5kaWFncmFtLmNsYXp6LkNsYXNzXzIwMDg8L3NwZWNpYWxpemVkVHlwZXNJRD4NCisgICAgPG1hdGNoZXJDb25maWd1cmF0aW9uDQorICAgICAgICB4c2k6dHlwZT0ic3RlcmVvdHlwZWFwcGxpY2F0aW9ubWF0Y2hlcmNvbmZpZ3VyYXRpb246U3RlcmVvdHlwZUFwcGxpY2F0aW9uTWF0Y2hlckNvbmZpZ3VyYXRpb24iDQorICAgICAgICB4bWk6aWQ9Il9Mb0tZQXNKUUVlU1g5TW9LTUJWNUd3Ij4NCisgICAgICA8c3RlcmVvdHlwZXNRdWFsaWZpZWROYW1lcz5TeXNNTDo6TW9kZWxFbGVtZW50czo6Vmlld1BvaW50PC9zdGVyZW90eXBlc1F1YWxpZmllZE5hbWVzPg0KKyAgICA8L21hdGNoZXJDb25maWd1cmF0aW9uPg0KKyAgPC9lbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zPg0KKyAgPGVsZW1lbnRUeXBlQ29uZmlndXJhdGlvbnMNCisgICAgICB4c2k6dHlwZT0iZWxlbWVudHR5cGVzY29uZmlndXJhdGlvbnM6U3BlY2lhbGl6YXRpb25UeXBlQ29uZmlndXJhdGlvbiINCisgICAgICB4bWk6aWQ9Il9Mb0tZQThKUUVlU1g5TW9LTUJWNUd3Ig0KKyAgICAgIG5hbWU9IlZpZXdQb2ludCAoMzAwNCkiDQorICAgICAgaWRlbnRpZmllcj0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5WaWV3UG9pbnRfMzAwNCINCisgICAgICBoaW50PSIzMDA0Ij4NCisgICAgPGljb25FbnRyeQ0KKyAgICAgICAgeG1pOmlkPSJfTG9LWUJNSlFFZVNYOU1vS01CVjVHdyINCisgICAgICAgIGljb25QYXRoPSIvaWNvbnMvZnVsbC9vYmoxNi9DbGFzcy5naWYiDQorICAgICAgICBidW5kbGVJZD0ib3JnLmVjbGlwc2UudW1sMi51bWwuZWRpdCIvPg0KKyAgICA8c3BlY2lhbGl6ZWRUeXBlc0lEPm9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5WaWV3UG9pbnQ8L3NwZWNpYWxpemVkVHlwZXNJRD4NCisgICAgPHNwZWNpYWxpemVkVHlwZXNJRD5vcmcuZWNsaXBzZS5wYXB5cnVzLnVtbC5kaWFncmFtLmNsYXp6LkNsYXNzXzMwMDQ8L3NwZWNpYWxpemVkVHlwZXNJRD4NCisgICAgPG1hdGNoZXJDb25maWd1cmF0aW9uDQorICAgICAgICB4c2k6dHlwZT0ic3RlcmVvdHlwZWFwcGxpY2F0aW9ubWF0Y2hlcmNvbmZpZ3VyYXRpb246U3RlcmVvdHlwZUFwcGxpY2F0aW9uTWF0Y2hlckNvbmZpZ3VyYXRpb24iDQorICAgICAgICB4bWk6aWQ9Il9Mb0tZQmNKUUVlU1g5TW9LTUJWNUd3Ij4NCisgICAgICA8c3RlcmVvdHlwZXNRdWFsaWZpZWROYW1lcz5TeXNNTDo6TW9kZWxFbGVtZW50czo6Vmlld1BvaW50PC9zdGVyZW90eXBlc1F1YWxpZmllZE5hbWVzPg0KKyAgICA8L21hdGNoZXJDb25maWd1cmF0aW9uPg0KKyAgPC9lbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zPg0KKyAgPGVsZW1lbnRUeXBlQ29uZmlndXJhdGlvbnMNCisgICAgICB4c2k6dHlwZT0iZWxlbWVudHR5cGVzY29uZmlndXJhdGlvbnM6U3BlY2lhbGl6YXRpb25UeXBlQ29uZmlndXJhdGlvbiINCisgICAgICB4bWk6aWQ9Il9Mb0tZQnNKUUVlU1g5TW9LTUJWNUd3Ig0KKyAgICAgIG5hbWU9IlZpZXdQb2ludCAoMzAwOCkiDQorICAgICAgaWRlbnRpZmllcj0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5WaWV3UG9pbnRfMzAwOCINCisgICAgICBoaW50PSIzMDA4Ij4NCisgICAgPGljb25FbnRyeQ0KKyAgICAgICAgeG1pOmlkPSJfTG9LWUI4SlFFZVNYOU1vS01CVjVHdyINCisgICAgICAgIGljb25QYXRoPSIvaWNvbnMvZnVsbC9vYmoxNi9DbGFzcy5naWYiDQorICAgICAgICBidW5kbGVJZD0ib3JnLmVjbGlwc2UudW1sMi51bWwuZWRpdCIvPg0KKyAgICA8c3BlY2lhbGl6ZWRUeXBlc0lEPm9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5WaWV3UG9pbnQ8L3NwZWNpYWxpemVkVHlwZXNJRD4NCisgICAgPHNwZWNpYWxpemVkVHlwZXNJRD5vcmcuZWNsaXBzZS5wYXB5cnVzLnVtbC5kaWFncmFtLmNsYXp6LkNsYXNzXzMwMDg8L3NwZWNpYWxpemVkVHlwZXNJRD4NCisgICAgPG1hdGNoZXJDb25maWd1cmF0aW9uDQorICAgICAgICB4c2k6dHlwZT0ic3RlcmVvdHlwZWFwcGxpY2F0aW9ubWF0Y2hlcmNvbmZpZ3VyYXRpb246U3RlcmVvdHlwZUFwcGxpY2F0aW9uTWF0Y2hlckNvbmZpZ3VyYXRpb24iDQorICAgICAgICB4bWk6aWQ9Il9Mb0tZQ01KUUVlU1g5TW9LTUJWNUd3Ij4NCisgICAgICA8c3RlcmVvdHlwZXNRdWFsaWZpZWROYW1lcz5TeXNNTDo6TW9kZWxFbGVtZW50czo6Vmlld1BvaW50PC9zdGVyZW90eXBlc1F1YWxpZmllZE5hbWVzPg0KKyAgICA8L21hdGNoZXJDb25maWd1cmF0aW9uPg0KKyAgPC9lbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zPg0KKyAgPGVsZW1lbnRUeXBlQ29uZmlndXJhdGlvbnMNCisgICAgICB4c2k6dHlwZT0iZWxlbWVudHR5cGVzY29uZmlndXJhdGlvbnM6U3BlY2lhbGl6YXRpb25UeXBlQ29uZmlndXJhdGlvbiINCisgICAgICB4bWk6aWQ9Il9Mb0tZQ2NKUUVlU1g5TW9LTUJWNUd3Ig0KKyAgICAgIG5hbWU9IlZpZXdQb2ludCAoMzAxMCkiDQorICAgICAgaWRlbnRpZmllcj0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5WaWV3UG9pbnRfMzAxMCINCisgICAgICBoaW50PSIzMDEwIj4NCisgICAgPGljb25FbnRyeQ0KKyAgICAgICAgeG1pOmlkPSJfTG9LWUNzSlFFZVNYOU1vS01CVjVHdyINCisgICAgICAgIGljb25QYXRoPSIvaWNvbnMvZnVsbC9vYmoxNi9DbGFzcy5naWYiDQorICAgICAgICBidW5kbGVJZD0ib3JnLmVjbGlwc2UudW1sMi51bWwuZWRpdCIvPg0KKyAgICA8c3BlY2lhbGl6ZWRUeXBlc0lEPm9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5WaWV3UG9pbnQ8L3NwZWNpYWxpemVkVHlwZXNJRD4NCisgICAgPHNwZWNpYWxpemVkVHlwZXNJRD5vcmcuZWNsaXBzZS5wYXB5cnVzLnVtbC5kaWFncmFtLmNsYXp6LkNsYXNzXzMwMTA8L3NwZWNpYWxpemVkVHlwZXNJRD4NCisgICAgPG1hdGNoZXJDb25maWd1cmF0aW9uDQorICAgICAgICB4c2k6dHlwZT0ic3RlcmVvdHlwZWFwcGxpY2F0aW9ubWF0Y2hlcmNvbmZpZ3VyYXRpb246U3RlcmVvdHlwZUFwcGxpY2F0aW9uTWF0Y2hlckNvbmZpZ3VyYXRpb24iDQorICAgICAgICB4bWk6aWQ9Il9Mb0tZQzhKUUVlU1g5TW9LTUJWNUd3Ij4NCisgICAgICA8c3RlcmVvdHlwZXNRdWFsaWZpZWROYW1lcz5TeXNNTDo6TW9kZWxFbGVtZW50czo6Vmlld1BvaW50PC9zdGVyZW90eXBlc1F1YWxpZmllZE5hbWVzPg0KKyAgICA8L21hdGNoZXJDb25maWd1cmF0aW9uPg0KKyAgPC9lbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zPg0KKyAgPGVsZW1lbnRUeXBlQ29uZmlndXJhdGlvbnMNCisgICAgICB4c2k6dHlwZT0iZWxlbWVudHR5cGVzY29uZmlndXJhdGlvbnM6U3BlY2lhbGl6YXRpb25UeXBlQ29uZmlndXJhdGlvbiINCisgICAgICB4bWk6aWQ9Il9Mb0tZRE1KUUVlU1g5TW9LTUJWNUd3Ig0KKyAgICAgIG5hbWU9IlZpZXdQb2ludCAoMzAxNCkiDQorICAgICAgaWRlbnRpZmllcj0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5WaWV3UG9pbnRfMzAxNCINCisgICAgICBoaW50PSIzMDE0Ij4NCisgICAgPGljb25FbnRyeQ0KKyAgICAgICAgeG1pOmlkPSJfTG9LWURjSlFFZVNYOU1vS01CVjVHdyINCisgICAgICAgIGljb25QYXRoPSIvaWNvbnMvZnVsbC9vYmoxNi9DbGFzcy5naWYiDQorICAgICAgICBidW5kbGVJZD0ib3JnLmVjbGlwc2UudW1sMi51bWwuZWRpdCIvPg0KKyAgICA8c3BlY2lhbGl6ZWRUeXBlc0lEPm9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5WaWV3UG9pbnQ8L3NwZWNpYWxpemVkVHlwZXNJRD4NCisgICAgPHNwZWNpYWxpemVkVHlwZXNJRD5vcmcuZWNsaXBzZS5wYXB5cnVzLnVtbC5kaWFncmFtLmNsYXp6LkNsYXNzXzMwMTQ8L3NwZWNpYWxpemVkVHlwZXNJRD4NCisgICAgPG1hdGNoZXJDb25maWd1cmF0aW9uDQorICAgICAgICB4c2k6dHlwZT0ic3RlcmVvdHlwZWFwcGxpY2F0aW9ubWF0Y2hlcmNvbmZpZ3VyYXRpb246U3RlcmVvdHlwZUFwcGxpY2F0aW9uTWF0Y2hlckNvbmZpZ3VyYXRpb24iDQorICAgICAgICB4bWk6aWQ9Il9Mb0tZRHNKUUVlU1g5TW9LTUJWNUd3Ij4NCisgICAgICA8c3RlcmVvdHlwZXNRdWFsaWZpZWROYW1lcz5TeXNNTDo6TW9kZWxFbGVtZW50czo6Vmlld1BvaW50PC9zdGVyZW90eXBlc1F1YWxpZmllZE5hbWVzPg0KKyAgICA8L21hdGNoZXJDb25maWd1cmF0aW9uPg0KKyAgPC9lbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zPg0KKyAgPGVsZW1lbnRUeXBlQ29uZmlndXJhdGlvbnMNCisgICAgICB4c2k6dHlwZT0iZWxlbWVudHR5cGVzY29uZmlndXJhdGlvbnM6U3BlY2lhbGl6YXRpb25UeXBlQ29uZmlndXJhdGlvbiINCisgICAgICB4bWk6aWQ9Il9Mb0tZRDhKUUVlU1g5TW9LTUJWNUd3Ig0KKyAgICAgIG5hbWU9IkV4cG9zZSAoMjAxNCkiDQorICAgICAgaWRlbnRpZmllcj0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5FeHBvc2VfMjAxNCINCisgICAgICBoaW50PSIyMDE0Ij4NCisgICAgPGljb25FbnRyeQ0KKyAgICAgICAgeG1pOmlkPSJfTG9LWUVNSlFFZVNYOU1vS01CVjVHdyINCisgICAgICAgIGljb25QYXRoPSIvaWNvbnMvZnVsbC9vYmoxNi9EZXBlbmRlbmN5LmdpZiINCisgICAgICAgIGJ1bmRsZUlkPSJvcmcuZWNsaXBzZS51bWwyLnVtbC5lZGl0Ii8+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LkV4cG9zZTwvc3BlY2lhbGl6ZWRUeXBlc0lEPg0KKyAgICA8c3BlY2lhbGl6ZWRUeXBlc0lEPm9yZy5lY2xpcHNlLnBhcHlydXMudW1sLmRpYWdyYW0uY2xhenouRGVwZW5kZW5jeV8yMDE0PC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICAgIDxtYXRjaGVyQ29uZmlndXJhdGlvbg0KKyAgICAgICAgeHNpOnR5cGU9InN0ZXJlb3R5cGVhcHBsaWNhdGlvbm1hdGNoZXJjb25maWd1cmF0aW9uOlN0ZXJlb3R5cGVBcHBsaWNhdGlvbk1hdGNoZXJDb25maWd1cmF0aW9uIg0KKyAgICAgICAgeG1pOmlkPSJfTG9LWUVjSlFFZVNYOU1vS01CVjVHdyI+DQorICAgICAgPHN0ZXJlb3R5cGVzUXVhbGlmaWVkTmFtZXM+U3lzTUw6Ok1vZGVsRWxlbWVudHM6OkV4cG9zZTwvc3RlcmVvdHlwZXNRdWFsaWZpZWROYW1lcz4NCisgICAgPC9tYXRjaGVyQ29uZmlndXJhdGlvbj4NCisgIDwvZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucz4NCisgIDxlbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zDQorICAgICAgeHNpOnR5cGU9ImVsZW1lbnR0eXBlc2NvbmZpZ3VyYXRpb25zOlNwZWNpYWxpemF0aW9uVHlwZUNvbmZpZ3VyYXRpb24iDQorICAgICAgeG1pOmlkPSJfTG9LWUVzSlFFZVNYOU1vS01CVjVHdyINCisgICAgICBuYW1lPSJFeHBvc2UgKDQwMDgpIg0KKyAgICAgIGlkZW50aWZpZXI9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuRXhwb3NlXzQwMDgiDQorICAgICAgaGludD0iNDAwOCI+DQorICAgIDxpY29uRW50cnkNCisgICAgICAgIHhtaTppZD0iX0xvS1lFOEpRRWVTWDlNb0tNQlY1R3ciDQorICAgICAgICBpY29uUGF0aD0iL2ljb25zL2Z1bGwvb2JqMTYvRGVwZW5kZW5jeS5naWYiDQorICAgICAgICBidW5kbGVJZD0ib3JnLmVjbGlwc2UudW1sMi51bWwuZWRpdCIvPg0KKyAgICA8c3BlY2lhbGl6ZWRUeXBlc0lEPm9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5FeHBvc2U8L3NwZWNpYWxpemVkVHlwZXNJRD4NCisgICAgPHNwZWNpYWxpemVkVHlwZXNJRD5vcmcuZWNsaXBzZS5wYXB5cnVzLnVtbC5kaWFncmFtLmNsYXp6LkRlcGVuZGVuY3lfNDAwODwvc3BlY2lhbGl6ZWRUeXBlc0lEPg0KKyAgICA8bWF0Y2hlckNvbmZpZ3VyYXRpb24NCisgICAgICAgIHhzaTp0eXBlPSJzdGVyZW90eXBlYXBwbGljYXRpb25tYXRjaGVyY29uZmlndXJhdGlvbjpTdGVyZW90eXBlQXBwbGljYXRpb25NYXRjaGVyQ29uZmlndXJhdGlvbiINCisgICAgICAgIHhtaTppZD0iX0xvS1lGTUpRRWVTWDlNb0tNQlY1R3ciPg0KKyAgICAgIDxzdGVyZW90eXBlc1F1YWxpZmllZE5hbWVzPlN5c01MOjpNb2RlbEVsZW1lbnRzOjpFeHBvc2U8L3N0ZXJlb3R5cGVzUXVhbGlmaWVkTmFtZXM+DQorICAgIDwvbWF0Y2hlckNvbmZpZ3VyYXRpb24+DQorICA8L2VsZW1lbnRUeXBlQ29uZmlndXJhdGlvbnM+DQorICA8ZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucw0KKyAgICAgIHhzaTp0eXBlPSJlbGVtZW50dHlwZXNjb25maWd1cmF0aW9uczpTcGVjaWFsaXphdGlvblR5cGVDb25maWd1cmF0aW9uIg0KKyAgICAgIHhtaTppZD0iX0xvS1lGY0pRRWVTWDlNb0tNQlY1R3ciDQorICAgICAgbmFtZT0iRXhwb3NlICg0MDE4KSINCisgICAgICBpZGVudGlmaWVyPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLkV4cG9zZV80MDE4Ig0KKyAgICAgIGhpbnQ9IjQwMTgiPg0KKyAgICA8aWNvbkVudHJ5DQorICAgICAgICB4bWk6aWQ9Il9Mb0tZRnNKUUVlU1g5TW9LTUJWNUd3Ig0KKyAgICAgICAgaWNvblBhdGg9Ii9pY29ucy9mdWxsL29iajE2L0RlcGVuZGVuY3kuZ2lmIg0KKyAgICAgICAgYnVuZGxlSWQ9Im9yZy5lY2xpcHNlLnVtbDIudW1sLmVkaXQiLz4NCisgICAgPHNwZWNpYWxpemVkVHlwZXNJRD5vcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuRXhwb3NlPC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy51bWwuZGlhZ3JhbS5jbGF6ei5EZXBlbmRlbmN5XzQwMTg8L3NwZWNpYWxpemVkVHlwZXNJRD4NCisgICAgPG1hdGNoZXJDb25maWd1cmF0aW9uDQorICAgICAgICB4c2k6dHlwZT0ic3RlcmVvdHlwZWFwcGxpY2F0aW9ubWF0Y2hlcmNvbmZpZ3VyYXRpb246U3RlcmVvdHlwZUFwcGxpY2F0aW9uTWF0Y2hlckNvbmZpZ3VyYXRpb24iDQorICAgICAgICB4bWk6aWQ9Il9Mb0tZRjhKUUVlU1g5TW9LTUJWNUd3Ij4NCisgICAgICA8c3RlcmVvdHlwZXNRdWFsaWZpZWROYW1lcz5TeXNNTDo6TW9kZWxFbGVtZW50czo6RXhwb3NlPC9zdGVyZW90eXBlc1F1YWxpZmllZE5hbWVzPg0KKyAgICA8L21hdGNoZXJDb25maWd1cmF0aW9uPg0KKyAgPC9lbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zPg0KKyAgPGVsZW1lbnRUeXBlQ29uZmlndXJhdGlvbnMNCisgICAgICB4c2k6dHlwZT0iZWxlbWVudHR5cGVzY29uZmlndXJhdGlvbnM6U3BlY2lhbGl6YXRpb25UeXBlQ29uZmlndXJhdGlvbiINCisgICAgICB4bWk6aWQ9Il9Mb0tZR01KUUVlU1g5TW9LTUJWNUd3Ig0KKyAgICAgIG5hbWU9IkVsZW1lbnRHcm91cCAoMjAxMikiDQorICAgICAgaWRlbnRpZmllcj0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5FbGVtZW50R3JvdXBfMjAxMiINCisgICAgICBoaW50PSIyMDEyIj4NCisgICAgPGljb25FbnRyeQ0KKyAgICAgICAgeG1pOmlkPSJfTG9LWUdjSlFFZVNYOU1vS01CVjVHdyINCisgICAgICAgIGljb25QYXRoPSIvaWNvbnMvZnVsbC9vYmoxNi9Db21tZW50LmdpZiINCisgICAgICAgIGJ1bmRsZUlkPSJvcmcuZWNsaXBzZS51bWwyLnVtbC5lZGl0Ii8+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LkVsZW1lbnRHcm91cDwvc3BlY2lhbGl6ZWRUeXBlc0lEPg0KKyAgICA8c3BlY2lhbGl6ZWRUeXBlc0lEPm9yZy5lY2xpcHNlLnBhcHlydXMudW1sLmRpYWdyYW0uY2xhenouQ29tbWVudF8yMDEyPC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICAgIDxtYXRjaGVyQ29uZmlndXJhdGlvbg0KKyAgICAgICAgeHNpOnR5cGU9InN0ZXJlb3R5cGVhcHBsaWNhdGlvbm1hdGNoZXJjb25maWd1cmF0aW9uOlN0ZXJlb3R5cGVBcHBsaWNhdGlvbk1hdGNoZXJDb25maWd1cmF0aW9uIg0KKyAgICAgICAgeG1pOmlkPSJfTG9LWUdzSlFFZVNYOU1vS01CVjVHdyI+DQorICAgICAgPHN0ZXJlb3R5cGVzUXVhbGlmaWVkTmFtZXM+U3lzTUw6Ok1vZGVsRWxlbWVudHM6OkVsZW1lbnRHcm91cDwvc3RlcmVvdHlwZXNRdWFsaWZpZWROYW1lcz4NCisgICAgPC9tYXRjaGVyQ29uZmlndXJhdGlvbj4NCisgIDwvZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucz4NCisgIDxlbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zDQorICAgICAgeHNpOnR5cGU9ImVsZW1lbnR0eXBlc2NvbmZpZ3VyYXRpb25zOlNwZWNpYWxpemF0aW9uVHlwZUNvbmZpZ3VyYXRpb24iDQorICAgICAgeG1pOmlkPSJfTG9LWUc4SlFFZVNYOU1vS01CVjVHdyINCisgICAgICBuYW1lPSJFbGVtZW50R3JvdXAgKDMwMjgpIg0KKyAgICAgIGlkZW50aWZpZXI9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuRWxlbWVudEdyb3VwXzMwMjgiDQorICAgICAgaGludD0iMzAyOCI+DQorICAgIDxpY29uRW50cnkNCisgICAgICAgIHhtaTppZD0iX0xvS1lITUpRRWVTWDlNb0tNQlY1R3ciDQorICAgICAgICBpY29uUGF0aD0iL2ljb25zL2Z1bGwvb2JqMTYvQ29tbWVudC5naWYiDQorICAgICAgICBidW5kbGVJZD0ib3JnLmVjbGlwc2UudW1sMi51bWwuZWRpdCIvPg0KKyAgICA8c3BlY2lhbGl6ZWRUeXBlc0lEPm9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5FbGVtZW50R3JvdXA8L3NwZWNpYWxpemVkVHlwZXNJRD4NCisgICAgPHNwZWNpYWxpemVkVHlwZXNJRD5vcmcuZWNsaXBzZS5wYXB5cnVzLnVtbC5kaWFncmFtLmNsYXp6LkNvbW1lbnRfMzAyODwvc3BlY2lhbGl6ZWRUeXBlc0lEPg0KKyAgICA8bWF0Y2hlckNvbmZpZ3VyYXRpb24NCisgICAgICAgIHhzaTp0eXBlPSJzdGVyZW90eXBlYXBwbGljYXRpb25tYXRjaGVyY29uZmlndXJhdGlvbjpTdGVyZW90eXBlQXBwbGljYXRpb25NYXRjaGVyQ29uZmlndXJhdGlvbiINCisgICAgICAgIHhtaTppZD0iX0xvS1lIY0pRRWVTWDlNb0tNQlY1R3ciPg0KKyAgICAgIDxzdGVyZW90eXBlc1F1YWxpZmllZE5hbWVzPlN5c01MOjpNb2RlbEVsZW1lbnRzOjpFbGVtZW50R3JvdXA8L3N0ZXJlb3R5cGVzUXVhbGlmaWVkTmFtZXM+DQorICAgIDwvbWF0Y2hlckNvbmZpZ3VyYXRpb24+DQorICA8L2VsZW1lbnRUeXBlQ29uZmlndXJhdGlvbnM+DQorICA8ZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucw0KKyAgICAgIHhzaTp0eXBlPSJlbGVtZW50dHlwZXNjb25maWd1cmF0aW9uczpTcGVjaWFsaXphdGlvblR5cGVDb25maWd1cmF0aW9uIg0KKyAgICAgIHhtaTppZD0iX0xvS1lIc0pRRWVTWDlNb0tNQlY1R3ciDQorICAgICAgbmFtZT0iQ29uc3RyYWludEJsb2NrICgyMDA4KSINCisgICAgICBpZGVudGlmaWVyPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLkNvbnN0cmFpbnRCbG9ja18yMDA4Ig0KKyAgICAgIGhpbnQ9IjIwMDgiPg0KKyAgICA8aWNvbkVudHJ5DQorICAgICAgICB4bWk6aWQ9Il9Mb0tZSDhKUUVlU1g5TW9LTUJWNUd3Ig0KKyAgICAgICAgaWNvblBhdGg9Ii9pY29ucy9mdWxsL29iajE2L0NsYXNzLmdpZiINCisgICAgICAgIGJ1bmRsZUlkPSJvcmcuZWNsaXBzZS51bWwyLnVtbC5lZGl0Ii8+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LkNvbnN0cmFpbnRCbG9jazwvc3BlY2lhbGl6ZWRUeXBlc0lEPg0KKyAgICA8c3BlY2lhbGl6ZWRUeXBlc0lEPm9yZy5lY2xpcHNlLnBhcHlydXMudW1sLmRpYWdyYW0uY2xhenouQ2xhc3NfMjAwODwvc3BlY2lhbGl6ZWRUeXBlc0lEPg0KKyAgICA8bWF0Y2hlckNvbmZpZ3VyYXRpb24NCisgICAgICAgIHhzaTp0eXBlPSJzdGVyZW90eXBlYXBwbGljYXRpb25tYXRjaGVyY29uZmlndXJhdGlvbjpTdGVyZW90eXBlQXBwbGljYXRpb25NYXRjaGVyQ29uZmlndXJhdGlvbiINCisgICAgICAgIHhtaTppZD0iX0xvS1lJTUpRRWVTWDlNb0tNQlY1R3ciPg0KKyAgICAgIDxzdGVyZW90eXBlc1F1YWxpZmllZE5hbWVzPlN5c01MOjpDb25zdHJhaW50QmxvY2tzOjpDb25zdHJhaW50QmxvY2s8L3N0ZXJlb3R5cGVzUXVhbGlmaWVkTmFtZXM+DQorICAgIDwvbWF0Y2hlckNvbmZpZ3VyYXRpb24+DQorICA8L2VsZW1lbnRUeXBlQ29uZmlndXJhdGlvbnM+DQorICA8ZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucw0KKyAgICAgIHhzaTp0eXBlPSJlbGVtZW50dHlwZXNjb25maWd1cmF0aW9uczpTcGVjaWFsaXphdGlvblR5cGVDb25maWd1cmF0aW9uIg0KKyAgICAgIHhtaTppZD0iX0xvS1lJY0pRRWVTWDlNb0tNQlY1R3ciDQorICAgICAgbmFtZT0iQ29uc3RyYWludEJsb2NrICgzMDA0KSINCisgICAgICBpZGVudGlmaWVyPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLkNvbnN0cmFpbnRCbG9ja18zMDA0Ig0KKyAgICAgIGhpbnQ9IjMwMDQiPg0KKyAgICA8aWNvbkVudHJ5DQorICAgICAgICB4bWk6aWQ9Il9Mb0tZSXNKUUVlU1g5TW9LTUJWNUd3Ig0KKyAgICAgICAgaWNvblBhdGg9Ii9pY29ucy9mdWxsL29iajE2L0NsYXNzLmdpZiINCisgICAgICAgIGJ1bmRsZUlkPSJvcmcuZWNsaXBzZS51bWwyLnVtbC5lZGl0Ii8+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LkNvbnN0cmFpbnRCbG9jazwvc3BlY2lhbGl6ZWRUeXBlc0lEPg0KKyAgICA8c3BlY2lhbGl6ZWRUeXBlc0lEPm9yZy5lY2xpcHNlLnBhcHlydXMudW1sLmRpYWdyYW0uY2xhenouQ2xhc3NfMzAwNDwvc3BlY2lhbGl6ZWRUeXBlc0lEPg0KKyAgICA8bWF0Y2hlckNvbmZpZ3VyYXRpb24NCisgICAgICAgIHhzaTp0eXBlPSJzdGVyZW90eXBlYXBwbGljYXRpb25tYXRjaGVyY29uZmlndXJhdGlvbjpTdGVyZW90eXBlQXBwbGljYXRpb25NYXRjaGVyQ29uZmlndXJhdGlvbiINCisgICAgICAgIHhtaTppZD0iX0xvS1lJOEpRRWVTWDlNb0tNQlY1R3ciPg0KKyAgICAgIDxzdGVyZW90eXBlc1F1YWxpZmllZE5hbWVzPlN5c01MOjpDb25zdHJhaW50QmxvY2tzOjpDb25zdHJhaW50QmxvY2s8L3N0ZXJlb3R5cGVzUXVhbGlmaWVkTmFtZXM+DQorICAgIDwvbWF0Y2hlckNvbmZpZ3VyYXRpb24+DQorICA8L2VsZW1lbnRUeXBlQ29uZmlndXJhdGlvbnM+DQorICA8ZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucw0KKyAgICAgIHhzaTp0eXBlPSJlbGVtZW50dHlwZXNjb25maWd1cmF0aW9uczpTcGVjaWFsaXphdGlvblR5cGVDb25maWd1cmF0aW9uIg0KKyAgICAgIHhtaTppZD0iX0xvS1lKTUpRRWVTWDlNb0tNQlY1R3ciDQorICAgICAgbmFtZT0iQ29uc3RyYWludEJsb2NrICgzMDA4KSINCisgICAgICBpZGVudGlmaWVyPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLkNvbnN0cmFpbnRCbG9ja18zMDA4Ig0KKyAgICAgIGhpbnQ9IjMwMDgiPg0KKyAgICA8aWNvbkVudHJ5DQorICAgICAgICB4bWk6aWQ9Il9Mb0tZSmNKUUVlU1g5TW9LTUJWNUd3Ig0KKyAgICAgICAgaWNvblBhdGg9Ii9pY29ucy9mdWxsL29iajE2L0NsYXNzLmdpZiINCisgICAgICAgIGJ1bmRsZUlkPSJvcmcuZWNsaXBzZS51bWwyLnVtbC5lZGl0Ii8+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LkNvbnN0cmFpbnRCbG9jazwvc3BlY2lhbGl6ZWRUeXBlc0lEPg0KKyAgICA8c3BlY2lhbGl6ZWRUeXBlc0lEPm9yZy5lY2xpcHNlLnBhcHlydXMudW1sLmRpYWdyYW0uY2xhenouQ2xhc3NfMzAwODwvc3BlY2lhbGl6ZWRUeXBlc0lEPg0KKyAgICA8bWF0Y2hlckNvbmZpZ3VyYXRpb24NCisgICAgICAgIHhzaTp0eXBlPSJzdGVyZW90eXBlYXBwbGljYXRpb25tYXRjaGVyY29uZmlndXJhdGlvbjpTdGVyZW90eXBlQXBwbGljYXRpb25NYXRjaGVyQ29uZmlndXJhdGlvbiINCisgICAgICAgIHhtaTppZD0iX0xvS1lKc0pRRWVTWDlNb0tNQlY1R3ciPg0KKyAgICAgIDxzdGVyZW90eXBlc1F1YWxpZmllZE5hbWVzPlN5c01MOjpDb25zdHJhaW50QmxvY2tzOjpDb25zdHJhaW50QmxvY2s8L3N0ZXJlb3R5cGVzUXVhbGlmaWVkTmFtZXM+DQorICAgIDwvbWF0Y2hlckNvbmZpZ3VyYXRpb24+DQorICA8L2VsZW1lbnRUeXBlQ29uZmlndXJhdGlvbnM+DQorICA8ZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucw0KKyAgICAgIHhzaTp0eXBlPSJlbGVtZW50dHlwZXNjb25maWd1cmF0aW9uczpTcGVjaWFsaXphdGlvblR5cGVDb25maWd1cmF0aW9uIg0KKyAgICAgIHhtaTppZD0iX0xvS1lKOEpRRWVTWDlNb0tNQlY1R3ciDQorICAgICAgbmFtZT0iQ29uc3RyYWludEJsb2NrICgzMDEwKSINCisgICAgICBpZGVudGlmaWVyPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLkNvbnN0cmFpbnRCbG9ja18zMDEwIg0KKyAgICAgIGhpbnQ9IjMwMTAiPg0KKyAgICA8aWNvbkVudHJ5DQorICAgICAgICB4bWk6aWQ9Il9Mb0tZS01KUUVlU1g5TW9LTUJWNUd3Ig0KKyAgICAgICAgaWNvblBhdGg9Ii9pY29ucy9mdWxsL29iajE2L0NsYXNzLmdpZiINCisgICAgICAgIGJ1bmRsZUlkPSJvcmcuZWNsaXBzZS51bWwyLnVtbC5lZGl0Ii8+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LkNvbnN0cmFpbnRCbG9jazwvc3BlY2lhbGl6ZWRUeXBlc0lEPg0KKyAgICA8c3BlY2lhbGl6ZWRUeXBlc0lEPm9yZy5lY2xpcHNlLnBhcHlydXMudW1sLmRpYWdyYW0uY2xhenouQ2xhc3NfMzAxMDwvc3BlY2lhbGl6ZWRUeXBlc0lEPg0KKyAgICA8bWF0Y2hlckNvbmZpZ3VyYXRpb24NCisgICAgICAgIHhzaTp0eXBlPSJzdGVyZW90eXBlYXBwbGljYXRpb25tYXRjaGVyY29uZmlndXJhdGlvbjpTdGVyZW90eXBlQXBwbGljYXRpb25NYXRjaGVyQ29uZmlndXJhdGlvbiINCisgICAgICAgIHhtaTppZD0iX0xvS1lLY0pRRWVTWDlNb0tNQlY1R3ciPg0KKyAgICAgIDxzdGVyZW90eXBlc1F1YWxpZmllZE5hbWVzPlN5c01MOjpDb25zdHJhaW50QmxvY2tzOjpDb25zdHJhaW50QmxvY2s8L3N0ZXJlb3R5cGVzUXVhbGlmaWVkTmFtZXM+DQorICAgIDwvbWF0Y2hlckNvbmZpZ3VyYXRpb24+DQorICA8L2VsZW1lbnRUeXBlQ29uZmlndXJhdGlvbnM+DQorICA8ZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucw0KKyAgICAgIHhzaTp0eXBlPSJlbGVtZW50dHlwZXNjb25maWd1cmF0aW9uczpTcGVjaWFsaXphdGlvblR5cGVDb25maWd1cmF0aW9uIg0KKyAgICAgIHhtaTppZD0iX0xvS1lLc0pRRWVTWDlNb0tNQlY1R3ciDQorICAgICAgbmFtZT0iQ29uc3RyYWludEJsb2NrICgzMDE0KSINCisgICAgICBpZGVudGlmaWVyPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLkNvbnN0cmFpbnRCbG9ja18zMDE0Ig0KKyAgICAgIGhpbnQ9IjMwMTQiPg0KKyAgICA8aWNvbkVudHJ5DQorICAgICAgICB4bWk6aWQ9Il9Mb0tZSzhKUUVlU1g5TW9LTUJWNUd3Ig0KKyAgICAgICAgaWNvblBhdGg9Ii9pY29ucy9mdWxsL29iajE2L0NsYXNzLmdpZiINCisgICAgICAgIGJ1bmRsZUlkPSJvcmcuZWNsaXBzZS51bWwyLnVtbC5lZGl0Ii8+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LkNvbnN0cmFpbnRCbG9jazwvc3BlY2lhbGl6ZWRUeXBlc0lEPg0KKyAgICA8c3BlY2lhbGl6ZWRUeXBlc0lEPm9yZy5lY2xpcHNlLnBhcHlydXMudW1sLmRpYWdyYW0uY2xhenouQ2xhc3NfMzAxNDwvc3BlY2lhbGl6ZWRUeXBlc0lEPg0KKyAgICA8bWF0Y2hlckNvbmZpZ3VyYXRpb24NCisgICAgICAgIHhzaTp0eXBlPSJzdGVyZW90eXBlYXBwbGljYXRpb25tYXRjaGVyY29uZmlndXJhdGlvbjpTdGVyZW90eXBlQXBwbGljYXRpb25NYXRjaGVyQ29uZmlndXJhdGlvbiINCisgICAgICAgIHhtaTppZD0iX0xvS1lMTUpRRWVTWDlNb0tNQlY1R3ciPg0KKyAgICAgIDxzdGVyZW90eXBlc1F1YWxpZmllZE5hbWVzPlN5c01MOjpDb25zdHJhaW50QmxvY2tzOjpDb25zdHJhaW50QmxvY2s8L3N0ZXJlb3R5cGVzUXVhbGlmaWVkTmFtZXM+DQorICAgIDwvbWF0Y2hlckNvbmZpZ3VyYXRpb24+DQorICA8L2VsZW1lbnRUeXBlQ29uZmlndXJhdGlvbnM+DQorICA8ZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucw0KKyAgICAgIHhzaTp0eXBlPSJlbGVtZW50dHlwZXNjb25maWd1cmF0aW9uczpTcGVjaWFsaXphdGlvblR5cGVDb25maWd1cmF0aW9uIg0KKyAgICAgIHhtaTppZD0iX0xvS1lMY0pRRWVTWDlNb0tNQlY1R3ciDQorICAgICAgbmFtZT0iQWxsb2NhdGUgQWJzdHJhY3Rpb24iDQorICAgICAgaWRlbnRpZmllcj0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5BbGxvY2F0ZV9BYnN0cmFjdGlvbl80MDA2Ig0KKyAgICAgIGhpbnQ9IjQwMDYiPg0KKyAgICA8aWNvbkVudHJ5DQorICAgICAgICB4bWk6aWQ9Il9Mb0tZTHNKUUVlU1g5TW9LTUJWNUd3Ig0KKyAgICAgICAgaWNvblBhdGg9Ii9pY29ucy9mdWxsL29iajE2L0Fic3RyYWN0aW9uLmdpZiINCisgICAgICAgIGJ1bmRsZUlkPSJvcmcuZWNsaXBzZS51bWwyLnVtbC5lZGl0Ii8+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LkFsbG9jYXRlX0Fic3RyYWN0aW9uPC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy51bWwuZGlhZ3JhbS5jbGF6ei5BYnN0cmFjdGlvbl80MDA2PC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICAgIDxtYXRjaGVyQ29uZmlndXJhdGlvbg0KKyAgICAgICAgeHNpOnR5cGU9InN0ZXJlb3R5cGVhcHBsaWNhdGlvbm1hdGNoZXJjb25maWd1cmF0aW9uOlN0ZXJlb3R5cGVBcHBsaWNhdGlvbk1hdGNoZXJDb25maWd1cmF0aW9uIg0KKyAgICAgICAgeG1pOmlkPSJfTG9LWUw4SlFFZVNYOU1vS01CVjVHdyI+DQorICAgICAgPHN0ZXJlb3R5cGVzUXVhbGlmaWVkTmFtZXM+U3lzTUw6OkFsbG9jYXRpb25zOjpBbGxvY2F0ZTwvc3RlcmVvdHlwZXNRdWFsaWZpZWROYW1lcz4NCisgICAgPC9tYXRjaGVyQ29uZmlndXJhdGlvbj4NCisgIDwvZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucz4NCisgIDxlbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zDQorICAgICAgeHNpOnR5cGU9ImVsZW1lbnR0eXBlc2NvbmZpZ3VyYXRpb25zOlNwZWNpYWxpemF0aW9uVHlwZUNvbmZpZ3VyYXRpb24iDQorICAgICAgeG1pOmlkPSJfTG9LWU1NSlFFZVNYOU1vS01CVjVHdyINCisgICAgICBuYW1lPSJEZXJpdmVSZXF0IEFic3RyYWN0aW9uIg0KKyAgICAgIGlkZW50aWZpZXI9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuRGVyaXZlUmVxdF9BYnN0cmFjdGlvbl80MDA2Ig0KKyAgICAgIGhpbnQ9IjQwMDYiPg0KKyAgICA8aWNvbkVudHJ5DQorICAgICAgICB4bWk6aWQ9Il9Mb0tZTWNKUUVlU1g5TW9LTUJWNUd3Ig0KKyAgICAgICAgaWNvblBhdGg9Ii9pY29ucy9mdWxsL29iajE2L0Fic3RyYWN0aW9uLmdpZiINCisgICAgICAgIGJ1bmRsZUlkPSJvcmcuZWNsaXBzZS51bWwyLnVtbC5lZGl0Ii8+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LkRlcml2ZVJlcXRfQWJzdHJhY3Rpb248L3NwZWNpYWxpemVkVHlwZXNJRD4NCisgICAgPHNwZWNpYWxpemVkVHlwZXNJRD5vcmcuZWNsaXBzZS5wYXB5cnVzLnVtbC5kaWFncmFtLmNsYXp6LkFic3RyYWN0aW9uXzQwMDY8L3NwZWNpYWxpemVkVHlwZXNJRD4NCisgICAgPG1hdGNoZXJDb25maWd1cmF0aW9uDQorICAgICAgICB4c2k6dHlwZT0ic3RlcmVvdHlwZWFwcGxpY2F0aW9ubWF0Y2hlcmNvbmZpZ3VyYXRpb246U3RlcmVvdHlwZUFwcGxpY2F0aW9uTWF0Y2hlckNvbmZpZ3VyYXRpb24iDQorICAgICAgICB4bWk6aWQ9Il9Mb0tZTXNKUUVlU1g5TW9LTUJWNUd3Ij4NCisgICAgICA8c3RlcmVvdHlwZXNRdWFsaWZpZWROYW1lcz5TeXNNTDo6UmVxdWlyZW1lbnRzOjpEZXJpdmVSZXF0PC9zdGVyZW90eXBlc1F1YWxpZmllZE5hbWVzPg0KKyAgICA8L21hdGNoZXJDb25maWd1cmF0aW9uPg0KKyAgPC9lbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zPg0KKyAgPGVsZW1lbnRUeXBlQ29uZmlndXJhdGlvbnMNCisgICAgICB4c2k6dHlwZT0iZWxlbWVudHR5cGVzY29uZmlndXJhdGlvbnM6U3BlY2lhbGl6YXRpb25UeXBlQ29uZmlndXJhdGlvbiINCisgICAgICB4bWk6aWQ9Il9Mb0tZTThKUUVlU1g5TW9LTUJWNUd3Ig0KKyAgICAgIG5hbWU9IkNvcHkgQWJzdHJhY3Rpb24iDQorICAgICAgaWRlbnRpZmllcj0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5Db3B5X0Fic3RyYWN0aW9uXzQwMDYiDQorICAgICAgaGludD0iNDAwNiI+DQorICAgIDxpY29uRW50cnkNCisgICAgICAgIHhtaTppZD0iX0xvS1lOTUpRRWVTWDlNb0tNQlY1R3ciDQorICAgICAgICBpY29uUGF0aD0iL2ljb25zL2Z1bGwvb2JqMTYvQWJzdHJhY3Rpb24uZ2lmIg0KKyAgICAgICAgYnVuZGxlSWQ9Im9yZy5lY2xpcHNlLnVtbDIudW1sLmVkaXQiLz4NCisgICAgPHNwZWNpYWxpemVkVHlwZXNJRD5vcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuQ29weV9BYnN0cmFjdGlvbjwvc3BlY2lhbGl6ZWRUeXBlc0lEPg0KKyAgICA8c3BlY2lhbGl6ZWRUeXBlc0lEPm9yZy5lY2xpcHNlLnBhcHlydXMudW1sLmRpYWdyYW0uY2xhenouQWJzdHJhY3Rpb25fNDAwNjwvc3BlY2lhbGl6ZWRUeXBlc0lEPg0KKyAgICA8bWF0Y2hlckNvbmZpZ3VyYXRpb24NCisgICAgICAgIHhzaTp0eXBlPSJzdGVyZW90eXBlYXBwbGljYXRpb25tYXRjaGVyY29uZmlndXJhdGlvbjpTdGVyZW90eXBlQXBwbGljYXRpb25NYXRjaGVyQ29uZmlndXJhdGlvbiINCisgICAgICAgIHhtaTppZD0iX0xvS1lOY0pRRWVTWDlNb0tNQlY1R3ciPg0KKyAgICAgIDxzdGVyZW90eXBlc1F1YWxpZmllZE5hbWVzPlN5c01MOjpSZXF1aXJlbWVudHM6OkNvcHk8L3N0ZXJlb3R5cGVzUXVhbGlmaWVkTmFtZXM+DQorICAgIDwvbWF0Y2hlckNvbmZpZ3VyYXRpb24+DQorICA8L2VsZW1lbnRUeXBlQ29uZmlndXJhdGlvbnM+DQorICA8ZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucw0KKyAgICAgIHhzaTp0eXBlPSJlbGVtZW50dHlwZXNjb25maWd1cmF0aW9uczpTcGVjaWFsaXphdGlvblR5cGVDb25maWd1cmF0aW9uIg0KKyAgICAgIHhtaTppZD0iX0xvS1lOc0pRRWVTWDlNb0tNQlY1R3ciDQorICAgICAgbmFtZT0iU2F0aXNmeSBBYnN0cmFjdGlvbiINCisgICAgICBpZGVudGlmaWVyPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLlNhdGlzZnlfQWJzdHJhY3Rpb25fNDAwNiINCisgICAgICBoaW50PSI0MDA2Ij4NCisgICAgPGljb25FbnRyeQ0KKyAgICAgICAgeG1pOmlkPSJfTG9LWU44SlFFZVNYOU1vS01CVjVHdyINCisgICAgICAgIGljb25QYXRoPSIvaWNvbnMvZnVsbC9vYmoxNi9BYnN0cmFjdGlvbi5naWYiDQorICAgICAgICBidW5kbGVJZD0ib3JnLmVjbGlwc2UudW1sMi51bWwuZWRpdCIvPg0KKyAgICA8c3BlY2lhbGl6ZWRUeXBlc0lEPm9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5TYXRpc2Z5X0Fic3RyYWN0aW9uPC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy51bWwuZGlhZ3JhbS5jbGF6ei5BYnN0cmFjdGlvbl80MDA2PC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICAgIDxtYXRjaGVyQ29uZmlndXJhdGlvbg0KKyAgICAgICAgeHNpOnR5cGU9InN0ZXJlb3R5cGVhcHBsaWNhdGlvbm1hdGNoZXJjb25maWd1cmF0aW9uOlN0ZXJlb3R5cGVBcHBsaWNhdGlvbk1hdGNoZXJDb25maWd1cmF0aW9uIg0KKyAgICAgICAgeG1pOmlkPSJfTG9LWU9NSlFFZVNYOU1vS01CVjVHdyI+DQorICAgICAgPHN0ZXJlb3R5cGVzUXVhbGlmaWVkTmFtZXM+U3lzTUw6OlJlcXVpcmVtZW50czo6U2F0aXNmeTwvc3RlcmVvdHlwZXNRdWFsaWZpZWROYW1lcz4NCisgICAgPC9tYXRjaGVyQ29uZmlndXJhdGlvbj4NCisgIDwvZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucz4NCisgIDxlbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zDQorICAgICAgeHNpOnR5cGU9ImVsZW1lbnR0eXBlc2NvbmZpZ3VyYXRpb25zOlNwZWNpYWxpemF0aW9uVHlwZUNvbmZpZ3VyYXRpb24iDQorICAgICAgeG1pOmlkPSJfTG9LWU9jSlFFZVNYOU1vS01CVjVHdyINCisgICAgICBuYW1lPSJUZXN0Q2FzZSAoMzAwMykiDQorICAgICAgaWRlbnRpZmllcj0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5UZXN0Q2FzZV9PcGVyYXRpb25fMzAwMyINCisgICAgICBoaW50PSIzMDAzIj4NCisgICAgPGljb25FbnRyeQ0KKyAgICAgICAgeG1pOmlkPSJfTG9LWU9zSlFFZVNYOU1vS01CVjVHdyINCisgICAgICAgIGljb25QYXRoPSIvaWNvbnMvZnVsbC9vYmoxNi9PcGVyYXRpb24uZ2lmIg0KKyAgICAgICAgYnVuZGxlSWQ9Im9yZy5lY2xpcHNlLnVtbDIudW1sLmVkaXQiLz4NCisgICAgPHNwZWNpYWxpemVkVHlwZXNJRD5vcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuVGVzdENhc2VfT3BlcmF0aW9uPC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy51bWwuZGlhZ3JhbS5jbGF6ei5PcGVyYXRpb25fMzAwMzwvc3BlY2lhbGl6ZWRUeXBlc0lEPg0KKyAgICA8bWF0Y2hlckNvbmZpZ3VyYXRpb24NCisgICAgICAgIHhzaTp0eXBlPSJzdGVyZW90eXBlYXBwbGljYXRpb25tYXRjaGVyY29uZmlndXJhdGlvbjpTdGVyZW90eXBlQXBwbGljYXRpb25NYXRjaGVyQ29uZmlndXJhdGlvbiINCisgICAgICAgIHhtaTppZD0iX0xvS1lPOEpRRWVTWDlNb0tNQlY1R3ciPg0KKyAgICAgIDxzdGVyZW90eXBlc1F1YWxpZmllZE5hbWVzPlN5c01MOjpSZXF1aXJlbWVudHM6OlRlc3RDYXNlPC9zdGVyZW90eXBlc1F1YWxpZmllZE5hbWVzPg0KKyAgICA8L21hdGNoZXJDb25maWd1cmF0aW9uPg0KKyAgPC9lbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zPg0KKyAgPGVsZW1lbnRUeXBlQ29uZmlndXJhdGlvbnMNCisgICAgICB4c2k6dHlwZT0iZWxlbWVudHR5cGVzY29uZmlndXJhdGlvbnM6U3BlY2lhbGl6YXRpb25UeXBlQ29uZmlndXJhdGlvbiINCisgICAgICB4bWk6aWQ9Il9Mb0tZUE1KUUVlU1g5TW9LTUJWNUd3Ig0KKyAgICAgIG5hbWU9IlRlc3RDYXNlICgzMDA3KSINCisgICAgICBpZGVudGlmaWVyPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLlRlc3RDYXNlX09wZXJhdGlvbl8zMDA3Ig0KKyAgICAgIGhpbnQ9IjMwMDciPg0KKyAgICA8aWNvbkVudHJ5DQorICAgICAgICB4bWk6aWQ9Il9Mb0tZUGNKUUVlU1g5TW9LTUJWNUd3Ig0KKyAgICAgICAgaWNvblBhdGg9Ii9pY29ucy9mdWxsL29iajE2L09wZXJhdGlvbi5naWYiDQorICAgICAgICBidW5kbGVJZD0ib3JnLmVjbGlwc2UudW1sMi51bWwuZWRpdCIvPg0KKyAgICA8c3BlY2lhbGl6ZWRUeXBlc0lEPm9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5UZXN0Q2FzZV9PcGVyYXRpb248L3NwZWNpYWxpemVkVHlwZXNJRD4NCisgICAgPHNwZWNpYWxpemVkVHlwZXNJRD5vcmcuZWNsaXBzZS5wYXB5cnVzLnVtbC5kaWFncmFtLmNsYXp6Lk9wZXJhdGlvbl8zMDA3PC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICAgIDxtYXRjaGVyQ29uZmlndXJhdGlvbg0KKyAgICAgICAgeHNpOnR5cGU9InN0ZXJlb3R5cGVhcHBsaWNhdGlvbm1hdGNoZXJjb25maWd1cmF0aW9uOlN0ZXJlb3R5cGVBcHBsaWNhdGlvbk1hdGNoZXJDb25maWd1cmF0aW9uIg0KKyAgICAgICAgeG1pOmlkPSJfTG9LWVBzSlFFZVNYOU1vS01CVjVHdyI+DQorICAgICAgPHN0ZXJlb3R5cGVzUXVhbGlmaWVkTmFtZXM+U3lzTUw6OlJlcXVpcmVtZW50czo6VGVzdENhc2U8L3N0ZXJlb3R5cGVzUXVhbGlmaWVkTmFtZXM+DQorICAgIDwvbWF0Y2hlckNvbmZpZ3VyYXRpb24+DQorICA8L2VsZW1lbnRUeXBlQ29uZmlndXJhdGlvbnM+DQorICA8ZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucw0KKyAgICAgIHhzaTp0eXBlPSJlbGVtZW50dHlwZXNjb25maWd1cmF0aW9uczpTcGVjaWFsaXphdGlvblR5cGVDb25maWd1cmF0aW9uIg0KKyAgICAgIHhtaTppZD0iX0xvS1lQOEpRRWVTWDlNb0tNQlY1R3ciDQorICAgICAgbmFtZT0iVGVzdENhc2UgKDMwMTMpIg0KKyAgICAgIGlkZW50aWZpZXI9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuVGVzdENhc2VfT3BlcmF0aW9uXzMwMTMiDQorICAgICAgaGludD0iMzAxMyI+DQorICAgIDxpY29uRW50cnkNCisgICAgICAgIHhtaTppZD0iX0xvS1lRTUpRRWVTWDlNb0tNQlY1R3ciDQorICAgICAgICBpY29uUGF0aD0iL2ljb25zL2Z1bGwvb2JqMTYvT3BlcmF0aW9uLmdpZiINCisgICAgICAgIGJ1bmRsZUlkPSJvcmcuZWNsaXBzZS51bWwyLnVtbC5lZGl0Ii8+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LlRlc3RDYXNlX09wZXJhdGlvbjwvc3BlY2lhbGl6ZWRUeXBlc0lEPg0KKyAgICA8c3BlY2lhbGl6ZWRUeXBlc0lEPm9yZy5lY2xpcHNlLnBhcHlydXMudW1sLmRpYWdyYW0uY2xhenouT3BlcmF0aW9uXzMwMTM8L3NwZWNpYWxpemVkVHlwZXNJRD4NCisgICAgPG1hdGNoZXJDb25maWd1cmF0aW9uDQorICAgICAgICB4c2k6dHlwZT0ic3RlcmVvdHlwZWFwcGxpY2F0aW9ubWF0Y2hlcmNvbmZpZ3VyYXRpb246U3RlcmVvdHlwZUFwcGxpY2F0aW9uTWF0Y2hlckNvbmZpZ3VyYXRpb24iDQorICAgICAgICB4bWk6aWQ9Il9Mb0tZUWNKUUVlU1g5TW9LTUJWNUd3Ij4NCisgICAgICA8c3RlcmVvdHlwZXNRdWFsaWZpZWROYW1lcz5TeXNNTDo6UmVxdWlyZW1lbnRzOjpUZXN0Q2FzZTwvc3RlcmVvdHlwZXNRdWFsaWZpZWROYW1lcz4NCisgICAgPC9tYXRjaGVyQ29uZmlndXJhdGlvbj4NCisgIDwvZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucz4NCisgIDxlbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zDQorICAgICAgeHNpOnR5cGU9ImVsZW1lbnR0eXBlc2NvbmZpZ3VyYXRpb25zOlNwZWNpYWxpemF0aW9uVHlwZUNvbmZpZ3VyYXRpb24iDQorICAgICAgeG1pOmlkPSJfTG9LWVFzSlFFZVNYOU1vS01CVjVHdyINCisgICAgICBuYW1lPSJUZXN0Q2FzZSAoMzAxOSkiDQorICAgICAgaWRlbnRpZmllcj0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5UZXN0Q2FzZV9PcGVyYXRpb25fMzAxOSINCisgICAgICBoaW50PSIzMDE5Ij4NCisgICAgPGljb25FbnRyeQ0KKyAgICAgICAgeG1pOmlkPSJfTG9LWVE4SlFFZVNYOU1vS01CVjVHdyINCisgICAgICAgIGljb25QYXRoPSIvaWNvbnMvZnVsbC9vYmoxNi9PcGVyYXRpb24uZ2lmIg0KKyAgICAgICAgYnVuZGxlSWQ9Im9yZy5lY2xpcHNlLnVtbDIudW1sLmVkaXQiLz4NCisgICAgPHNwZWNpYWxpemVkVHlwZXNJRD5vcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuVGVzdENhc2VfT3BlcmF0aW9uPC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy51bWwuZGlhZ3JhbS5jbGF6ei5PcGVyYXRpb25fMzAxOTwvc3BlY2lhbGl6ZWRUeXBlc0lEPg0KKyAgICA8bWF0Y2hlckNvbmZpZ3VyYXRpb24NCisgICAgICAgIHhzaTp0eXBlPSJzdGVyZW90eXBlYXBwbGljYXRpb25tYXRjaGVyY29uZmlndXJhdGlvbjpTdGVyZW90eXBlQXBwbGljYXRpb25NYXRjaGVyQ29uZmlndXJhdGlvbiINCisgICAgICAgIHhtaTppZD0iX0xvS1lSTUpRRWVTWDlNb0tNQlY1R3ciPg0KKyAgICAgIDxzdGVyZW90eXBlc1F1YWxpZmllZE5hbWVzPlN5c01MOjpSZXF1aXJlbWVudHM6OlRlc3RDYXNlPC9zdGVyZW90eXBlc1F1YWxpZmllZE5hbWVzPg0KKyAgICA8L21hdGNoZXJDb25maWd1cmF0aW9uPg0KKyAgPC9lbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zPg0KKyAgPGVsZW1lbnRUeXBlQ29uZmlndXJhdGlvbnMNCisgICAgICB4c2k6dHlwZT0iZWxlbWVudHR5cGVzY29uZmlndXJhdGlvbnM6U3BlY2lhbGl6YXRpb25UeXBlQ29uZmlndXJhdGlvbiINCisgICAgICB4bWk6aWQ9Il9Mb0tZUmNKUUVlU1g5TW9LTUJWNUd3Ig0KKyAgICAgIG5hbWU9IlRlc3RDYXNlICgzMDQyKSINCisgICAgICBpZGVudGlmaWVyPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLlRlc3RDYXNlX09wZXJhdGlvbl8zMDQyIg0KKyAgICAgIGhpbnQ9IjMwNDIiPg0KKyAgICA8aWNvbkVudHJ5DQorICAgICAgICB4bWk6aWQ9Il9Mb0tZUnNKUUVlU1g5TW9LTUJWNUd3Ig0KKyAgICAgICAgaWNvblBhdGg9Ii9pY29ucy9mdWxsL29iajE2L09wZXJhdGlvbi5naWYiDQorICAgICAgICBidW5kbGVJZD0ib3JnLmVjbGlwc2UudW1sMi51bWwuZWRpdCIvPg0KKyAgICA8c3BlY2lhbGl6ZWRUeXBlc0lEPm9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5UZXN0Q2FzZV9PcGVyYXRpb248L3NwZWNpYWxpemVkVHlwZXNJRD4NCisgICAgPHNwZWNpYWxpemVkVHlwZXNJRD5vcmcuZWNsaXBzZS5wYXB5cnVzLnVtbC5kaWFncmFtLmNsYXp6Lk9wZXJhdGlvbl8zMDQyPC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICAgIDxtYXRjaGVyQ29uZmlndXJhdGlvbg0KKyAgICAgICAgeHNpOnR5cGU9InN0ZXJlb3R5cGVhcHBsaWNhdGlvbm1hdGNoZXJjb25maWd1cmF0aW9uOlN0ZXJlb3R5cGVBcHBsaWNhdGlvbk1hdGNoZXJDb25maWd1cmF0aW9uIg0KKyAgICAgICAgeG1pOmlkPSJfTG9LWVI4SlFFZVNYOU1vS01CVjVHdyI+DQorICAgICAgPHN0ZXJlb3R5cGVzUXVhbGlmaWVkTmFtZXM+U3lzTUw6OlJlcXVpcmVtZW50czo6VGVzdENhc2U8L3N0ZXJlb3R5cGVzUXVhbGlmaWVkTmFtZXM+DQorICAgIDwvbWF0Y2hlckNvbmZpZ3VyYXRpb24+DQorICA8L2VsZW1lbnRUeXBlQ29uZmlndXJhdGlvbnM+DQorICA8ZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucw0KKyAgICAgIHhzaTp0eXBlPSJlbGVtZW50dHlwZXNjb25maWd1cmF0aW9uczpTcGVjaWFsaXphdGlvblR5cGVDb25maWd1cmF0aW9uIg0KKyAgICAgIHhtaTppZD0iX0xvS1lTTUpRRWVTWDlNb0tNQlY1R3ciDQorICAgICAgbmFtZT0iUmVxdWlyZW1lbnQgKDIwMDgpIg0KKyAgICAgIGlkZW50aWZpZXI9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuUmVxdWlyZW1lbnRfMjAwOCINCisgICAgICBoaW50PSIyMDA4Ij4NCisgICAgPGljb25FbnRyeQ0KKyAgICAgICAgeG1pOmlkPSJfTG9LWVNjSlFFZVNYOU1vS01CVjVHdyINCisgICAgICAgIGljb25QYXRoPSIvaWNvbnMvZnVsbC9vYmoxNi9DbGFzcy5naWYiDQorICAgICAgICBidW5kbGVJZD0ib3JnLmVjbGlwc2UudW1sMi51bWwuZWRpdCIvPg0KKyAgICA8c3BlY2lhbGl6ZWRUeXBlc0lEPm9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5SZXF1aXJlbWVudDwvc3BlY2lhbGl6ZWRUeXBlc0lEPg0KKyAgICA8c3BlY2lhbGl6ZWRUeXBlc0lEPm9yZy5lY2xpcHNlLnBhcHlydXMudW1sLmRpYWdyYW0uY2xhenouQ2xhc3NfMjAwODwvc3BlY2lhbGl6ZWRUeXBlc0lEPg0KKyAgICA8bWF0Y2hlckNvbmZpZ3VyYXRpb24NCisgICAgICAgIHhzaTp0eXBlPSJzdGVyZW90eXBlYXBwbGljYXRpb25tYXRjaGVyY29uZmlndXJhdGlvbjpTdGVyZW90eXBlQXBwbGljYXRpb25NYXRjaGVyQ29uZmlndXJhdGlvbiINCisgICAgICAgIHhtaTppZD0iX0xvS1lTc0pRRWVTWDlNb0tNQlY1R3ciPg0KKyAgICAgIDxzdGVyZW90eXBlc1F1YWxpZmllZE5hbWVzPlN5c01MOjpSZXF1aXJlbWVudHM6OlJlcXVpcmVtZW50PC9zdGVyZW90eXBlc1F1YWxpZmllZE5hbWVzPg0KKyAgICA8L21hdGNoZXJDb25maWd1cmF0aW9uPg0KKyAgPC9lbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zPg0KKyAgPGVsZW1lbnRUeXBlQ29uZmlndXJhdGlvbnMNCisgICAgICB4c2k6dHlwZT0iZWxlbWVudHR5cGVzY29uZmlndXJhdGlvbnM6U3BlY2lhbGl6YXRpb25UeXBlQ29uZmlndXJhdGlvbiINCisgICAgICB4bWk6aWQ9Il9Mb0tZUzhKUUVlU1g5TW9LTUJWNUd3Ig0KKyAgICAgIG5hbWU9IlJlcXVpcmVtZW50ICgzMDA0KSINCisgICAgICBpZGVudGlmaWVyPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLlJlcXVpcmVtZW50XzMwMDQiDQorICAgICAgaGludD0iMzAwNCI+DQorICAgIDxpY29uRW50cnkNCisgICAgICAgIHhtaTppZD0iX0xvS1lUTUpRRWVTWDlNb0tNQlY1R3ciDQorICAgICAgICBpY29uUGF0aD0iL2ljb25zL2Z1bGwvb2JqMTYvQ2xhc3MuZ2lmIg0KKyAgICAgICAgYnVuZGxlSWQ9Im9yZy5lY2xpcHNlLnVtbDIudW1sLmVkaXQiLz4NCisgICAgPHNwZWNpYWxpemVkVHlwZXNJRD5vcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuUmVxdWlyZW1lbnQ8L3NwZWNpYWxpemVkVHlwZXNJRD4NCisgICAgPHNwZWNpYWxpemVkVHlwZXNJRD5vcmcuZWNsaXBzZS5wYXB5cnVzLnVtbC5kaWFncmFtLmNsYXp6LkNsYXNzXzMwMDQ8L3NwZWNpYWxpemVkVHlwZXNJRD4NCisgICAgPG1hdGNoZXJDb25maWd1cmF0aW9uDQorICAgICAgICB4c2k6dHlwZT0ic3RlcmVvdHlwZWFwcGxpY2F0aW9ubWF0Y2hlcmNvbmZpZ3VyYXRpb246U3RlcmVvdHlwZUFwcGxpY2F0aW9uTWF0Y2hlckNvbmZpZ3VyYXRpb24iDQorICAgICAgICB4bWk6aWQ9Il9Mb0tZVGNKUUVlU1g5TW9LTUJWNUd3Ij4NCisgICAgICA8c3RlcmVvdHlwZXNRdWFsaWZpZWROYW1lcz5TeXNNTDo6UmVxdWlyZW1lbnRzOjpSZXF1aXJlbWVudDwvc3RlcmVvdHlwZXNRdWFsaWZpZWROYW1lcz4NCisgICAgPC9tYXRjaGVyQ29uZmlndXJhdGlvbj4NCisgIDwvZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucz4NCisgIDxlbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zDQorICAgICAgeHNpOnR5cGU9ImVsZW1lbnR0eXBlc2NvbmZpZ3VyYXRpb25zOlNwZWNpYWxpemF0aW9uVHlwZUNvbmZpZ3VyYXRpb24iDQorICAgICAgeG1pOmlkPSJfTG9LWVRzSlFFZVNYOU1vS01CVjVHdyINCisgICAgICBuYW1lPSJSZXF1aXJlbWVudCAoMzAwOCkiDQorICAgICAgaWRlbnRpZmllcj0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5SZXF1aXJlbWVudF8zMDA4Ig0KKyAgICAgIGhpbnQ9IjMwMDgiPg0KKyAgICA8aWNvbkVudHJ5DQorICAgICAgICB4bWk6aWQ9Il9Mb0tZVDhKUUVlU1g5TW9LTUJWNUd3Ig0KKyAgICAgICAgaWNvblBhdGg9Ii9pY29ucy9mdWxsL29iajE2L0NsYXNzLmdpZiINCisgICAgICAgIGJ1bmRsZUlkPSJvcmcuZWNsaXBzZS51bWwyLnVtbC5lZGl0Ii8+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LlJlcXVpcmVtZW50PC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy51bWwuZGlhZ3JhbS5jbGF6ei5DbGFzc18zMDA4PC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICAgIDxtYXRjaGVyQ29uZmlndXJhdGlvbg0KKyAgICAgICAgeHNpOnR5cGU9InN0ZXJlb3R5cGVhcHBsaWNhdGlvbm1hdGNoZXJjb25maWd1cmF0aW9uOlN0ZXJlb3R5cGVBcHBsaWNhdGlvbk1hdGNoZXJDb25maWd1cmF0aW9uIg0KKyAgICAgICAgeG1pOmlkPSJfTG9LWVVNSlFFZVNYOU1vS01CVjVHdyI+DQorICAgICAgPHN0ZXJlb3R5cGVzUXVhbGlmaWVkTmFtZXM+U3lzTUw6OlJlcXVpcmVtZW50czo6UmVxdWlyZW1lbnQ8L3N0ZXJlb3R5cGVzUXVhbGlmaWVkTmFtZXM+DQorICAgIDwvbWF0Y2hlckNvbmZpZ3VyYXRpb24+DQorICA8L2VsZW1lbnRUeXBlQ29uZmlndXJhdGlvbnM+DQorICA8ZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucw0KKyAgICAgIHhzaTp0eXBlPSJlbGVtZW50dHlwZXNjb25maWd1cmF0aW9uczpTcGVjaWFsaXphdGlvblR5cGVDb25maWd1cmF0aW9uIg0KKyAgICAgIHhtaTppZD0iX0xvS1lVY0pRRWVTWDlNb0tNQlY1R3ciDQorICAgICAgbmFtZT0iUmVxdWlyZW1lbnQgKDMwMTApIg0KKyAgICAgIGlkZW50aWZpZXI9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuUmVxdWlyZW1lbnRfMzAxMCINCisgICAgICBoaW50PSIzMDEwIj4NCisgICAgPGljb25FbnRyeQ0KKyAgICAgICAgeG1pOmlkPSJfTG9LWVVzSlFFZVNYOU1vS01CVjVHdyINCisgICAgICAgIGljb25QYXRoPSIvaWNvbnMvZnVsbC9vYmoxNi9DbGFzcy5naWYiDQorICAgICAgICBidW5kbGVJZD0ib3JnLmVjbGlwc2UudW1sMi51bWwuZWRpdCIvPg0KKyAgICA8c3BlY2lhbGl6ZWRUeXBlc0lEPm9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5SZXF1aXJlbWVudDwvc3BlY2lhbGl6ZWRUeXBlc0lEPg0KKyAgICA8c3BlY2lhbGl6ZWRUeXBlc0lEPm9yZy5lY2xpcHNlLnBhcHlydXMudW1sLmRpYWdyYW0uY2xhenouQ2xhc3NfMzAxMDwvc3BlY2lhbGl6ZWRUeXBlc0lEPg0KKyAgICA8bWF0Y2hlckNvbmZpZ3VyYXRpb24NCisgICAgICAgIHhzaTp0eXBlPSJzdGVyZW90eXBlYXBwbGljYXRpb25tYXRjaGVyY29uZmlndXJhdGlvbjpTdGVyZW90eXBlQXBwbGljYXRpb25NYXRjaGVyQ29uZmlndXJhdGlvbiINCisgICAgICAgIHhtaTppZD0iX0xvS1lVOEpRRWVTWDlNb0tNQlY1R3ciPg0KKyAgICAgIDxzdGVyZW90eXBlc1F1YWxpZmllZE5hbWVzPlN5c01MOjpSZXF1aXJlbWVudHM6OlJlcXVpcmVtZW50PC9zdGVyZW90eXBlc1F1YWxpZmllZE5hbWVzPg0KKyAgICA8L21hdGNoZXJDb25maWd1cmF0aW9uPg0KKyAgPC9lbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zPg0KKyAgPGVsZW1lbnRUeXBlQ29uZmlndXJhdGlvbnMNCisgICAgICB4c2k6dHlwZT0iZWxlbWVudHR5cGVzY29uZmlndXJhdGlvbnM6U3BlY2lhbGl6YXRpb25UeXBlQ29uZmlndXJhdGlvbiINCisgICAgICB4bWk6aWQ9Il9Mb0tZVk1KUUVlU1g5TW9LTUJWNUd3Ig0KKyAgICAgIG5hbWU9IlJlcXVpcmVtZW50ICgzMDE0KSINCisgICAgICBpZGVudGlmaWVyPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLlJlcXVpcmVtZW50XzMwMTQiDQorICAgICAgaGludD0iMzAxNCI+DQorICAgIDxpY29uRW50cnkNCisgICAgICAgIHhtaTppZD0iX0xvS1lWY0pRRWVTWDlNb0tNQlY1R3ciDQorICAgICAgICBpY29uUGF0aD0iL2ljb25zL2Z1bGwvb2JqMTYvQ2xhc3MuZ2lmIg0KKyAgICAgICAgYnVuZGxlSWQ9Im9yZy5lY2xpcHNlLnVtbDIudW1sLmVkaXQiLz4NCisgICAgPHNwZWNpYWxpemVkVHlwZXNJRD5vcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuUmVxdWlyZW1lbnQ8L3NwZWNpYWxpemVkVHlwZXNJRD4NCisgICAgPHNwZWNpYWxpemVkVHlwZXNJRD5vcmcuZWNsaXBzZS5wYXB5cnVzLnVtbC5kaWFncmFtLmNsYXp6LkNsYXNzXzMwMTQ8L3NwZWNpYWxpemVkVHlwZXNJRD4NCisgICAgPG1hdGNoZXJDb25maWd1cmF0aW9uDQorICAgICAgICB4c2k6dHlwZT0ic3RlcmVvdHlwZWFwcGxpY2F0aW9ubWF0Y2hlcmNvbmZpZ3VyYXRpb246U3RlcmVvdHlwZUFwcGxpY2F0aW9uTWF0Y2hlckNvbmZpZ3VyYXRpb24iDQorICAgICAgICB4bWk6aWQ9Il9Mb0tZVnNKUUVlU1g5TW9LTUJWNUd3Ij4NCisgICAgICA8c3RlcmVvdHlwZXNRdWFsaWZpZWROYW1lcz5TeXNNTDo6UmVxdWlyZW1lbnRzOjpSZXF1aXJlbWVudDwvc3RlcmVvdHlwZXNRdWFsaWZpZWROYW1lcz4NCisgICAgPC9tYXRjaGVyQ29uZmlndXJhdGlvbj4NCisgIDwvZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucz4NCisgIDxlbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zDQorICAgICAgeHNpOnR5cGU9ImVsZW1lbnR0eXBlc2NvbmZpZ3VyYXRpb25zOlNwZWNpYWxpemF0aW9uVHlwZUNvbmZpZ3VyYXRpb24iDQorICAgICAgeG1pOmlkPSJfTG9LWVY4SlFFZVNYOU1vS01CVjVHdyINCisgICAgICBuYW1lPSJWZXJpZnkgQWJzdHJhY3Rpb24iDQorICAgICAgaWRlbnRpZmllcj0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5WZXJpZnlfQWJzdHJhY3Rpb25fNDAwNiINCisgICAgICBoaW50PSI0MDA2Ij4NCisgICAgPGljb25FbnRyeQ0KKyAgICAgICAgeG1pOmlkPSJfTG9LWVdNSlFFZVNYOU1vS01CVjVHdyINCisgICAgICAgIGljb25QYXRoPSIvaWNvbnMvZnVsbC9vYmoxNi9BYnN0cmFjdGlvbi5naWYiDQorICAgICAgICBidW5kbGVJZD0ib3JnLmVjbGlwc2UudW1sMi51bWwuZWRpdCIvPg0KKyAgICA8c3BlY2lhbGl6ZWRUeXBlc0lEPm9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5WZXJpZnlfQWJzdHJhY3Rpb248L3NwZWNpYWxpemVkVHlwZXNJRD4NCisgICAgPHNwZWNpYWxpemVkVHlwZXNJRD5vcmcuZWNsaXBzZS5wYXB5cnVzLnVtbC5kaWFncmFtLmNsYXp6LkFic3RyYWN0aW9uXzQwMDY8L3NwZWNpYWxpemVkVHlwZXNJRD4NCisgICAgPG1hdGNoZXJDb25maWd1cmF0aW9uDQorICAgICAgICB4c2k6dHlwZT0ic3RlcmVvdHlwZWFwcGxpY2F0aW9ubWF0Y2hlcmNvbmZpZ3VyYXRpb246U3RlcmVvdHlwZUFwcGxpY2F0aW9uTWF0Y2hlckNvbmZpZ3VyYXRpb24iDQorICAgICAgICB4bWk6aWQ9Il9Mb0tZV2NKUUVlU1g5TW9LTUJWNUd3Ij4NCisgICAgICA8c3RlcmVvdHlwZXNRdWFsaWZpZWROYW1lcz5TeXNNTDo6UmVxdWlyZW1lbnRzOjpWZXJpZnk8L3N0ZXJlb3R5cGVzUXVhbGlmaWVkTmFtZXM+DQorICAgIDwvbWF0Y2hlckNvbmZpZ3VyYXRpb24+DQorICA8L2VsZW1lbnRUeXBlQ29uZmlndXJhdGlvbnM+DQorICA8ZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucw0KKyAgICAgIHhzaTp0eXBlPSJlbGVtZW50dHlwZXNjb25maWd1cmF0aW9uczpTcGVjaWFsaXphdGlvblR5cGVDb25maWd1cmF0aW9uIg0KKyAgICAgIHhtaTppZD0iX0xvS1lXc0pRRWVTWDlNb0tNQlY1R3ciDQorICAgICAgbmFtZT0iVHJhY2UgQWJzdHJhY3Rpb24iDQorICAgICAgaWRlbnRpZmllcj0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5UcmFjZV9BYnN0cmFjdGlvbl80MDA2Ig0KKyAgICAgIGhpbnQ9IjQwMDYiPg0KKyAgICA8aWNvbkVudHJ5DQorICAgICAgICB4bWk6aWQ9Il9Mb0tZVzhKUUVlU1g5TW9LTUJWNUd3Ig0KKyAgICAgICAgaWNvblBhdGg9Ii9pY29ucy9mdWxsL29iajE2L0Fic3RyYWN0aW9uLmdpZiINCisgICAgICAgIGJ1bmRsZUlkPSJvcmcuZWNsaXBzZS51bWwyLnVtbC5lZGl0Ii8+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LlRyYWNlX0Fic3RyYWN0aW9uPC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy51bWwuZGlhZ3JhbS5jbGF6ei5BYnN0cmFjdGlvbl80MDA2PC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICAgIDxtYXRjaGVyQ29uZmlndXJhdGlvbg0KKyAgICAgICAgeHNpOnR5cGU9InN0ZXJlb3R5cGVhcHBsaWNhdGlvbm1hdGNoZXJjb25maWd1cmF0aW9uOlN0ZXJlb3R5cGVBcHBsaWNhdGlvbk1hdGNoZXJDb25maWd1cmF0aW9uIg0KKyAgICAgICAgeG1pOmlkPSJfTG9LWVhNSlFFZVNYOU1vS01CVjVHdyI+DQorICAgICAgPHN0ZXJlb3R5cGVzUXVhbGlmaWVkTmFtZXM+U3lzTUw6OlJlcXVpcmVtZW50czo6VHJhY2U8L3N0ZXJlb3R5cGVzUXVhbGlmaWVkTmFtZXM+DQorICAgIDwvbWF0Y2hlckNvbmZpZ3VyYXRpb24+DQorICA8L2VsZW1lbnRUeXBlQ29uZmlndXJhdGlvbnM+DQorICA8ZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucw0KKyAgICAgIHhzaTp0eXBlPSJlbGVtZW50dHlwZXNjb25maWd1cmF0aW9uczpTcGVjaWFsaXphdGlvblR5cGVDb25maWd1cmF0aW9uIg0KKyAgICAgIHhtaTppZD0iX0xvS1lYY0pRRWVTWDlNb0tNQlY1R3ciDQorICAgICAgbmFtZT0iUmVmaW5lIEFic3RyYWN0aW9uIg0KKyAgICAgIGlkZW50aWZpZXI9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuUmVmaW5lX0Fic3RyYWN0aW9uXzQwMDYiDQorICAgICAgaGludD0iNDAwNiI+DQorICAgIDxpY29uRW50cnkNCisgICAgICAgIHhtaTppZD0iX0xvS1lYc0pRRWVTWDlNb0tNQlY1R3ciDQorICAgICAgICBpY29uUGF0aD0iL2ljb25zL2Z1bGwvb2JqMTYvQWJzdHJhY3Rpb24uZ2lmIg0KKyAgICAgICAgYnVuZGxlSWQ9Im9yZy5lY2xpcHNlLnVtbDIudW1sLmVkaXQiLz4NCisgICAgPHNwZWNpYWxpemVkVHlwZXNJRD5vcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuUmVmaW5lX0Fic3RyYWN0aW9uPC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy51bWwuZGlhZ3JhbS5jbGF6ei5BYnN0cmFjdGlvbl80MDA2PC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICAgIDxtYXRjaGVyQ29uZmlndXJhdGlvbg0KKyAgICAgICAgeHNpOnR5cGU9InN0ZXJlb3R5cGVhcHBsaWNhdGlvbm1hdGNoZXJjb25maWd1cmF0aW9uOlN0ZXJlb3R5cGVBcHBsaWNhdGlvbk1hdGNoZXJDb25maWd1cmF0aW9uIg0KKyAgICAgICAgeG1pOmlkPSJfTG9LWVg4SlFFZVNYOU1vS01CVjVHdyI+DQorICAgICAgPHN0ZXJlb3R5cGVzUXVhbGlmaWVkTmFtZXM+U3lzTUw6OlJlcXVpcmVtZW50czo6UmVmaW5lPC9zdGVyZW90eXBlc1F1YWxpZmllZE5hbWVzPg0KKyAgICA8L21hdGNoZXJDb25maWd1cmF0aW9uPg0KKyAgPC9lbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zPg0KKyAgPGVsZW1lbnRUeXBlQ29uZmlndXJhdGlvbnMNCisgICAgICB4c2k6dHlwZT0iZWxlbWVudHR5cGVzY29uZmlndXJhdGlvbnM6U3BlY2lhbGl6YXRpb25UeXBlQ29uZmlndXJhdGlvbiINCisgICAgICB4bWk6aWQ9Il9Mb0tZWU1KUUVlU1g5TW9LTUJWNUd3Ig0KKyAgICAgIG5hbWU9IkZsb3dTcGVjaWZpY2F0aW9uICgyMDA0KSINCisgICAgICBpZGVudGlmaWVyPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLkZsb3dTcGVjaWZpY2F0aW9uXzIwMDQiDQorICAgICAgaGludD0iMjAwNCI+DQorICAgIDxpY29uRW50cnkNCisgICAgICAgIHhtaTppZD0iX0xvS1lZY0pRRWVTWDlNb0tNQlY1R3ciDQorICAgICAgICBpY29uUGF0aD0iL2ljb25zL2Z1bGwvb2JqMTYvSW50ZXJmYWNlLmdpZiINCisgICAgICAgIGJ1bmRsZUlkPSJvcmcuZWNsaXBzZS51bWwyLnVtbC5lZGl0Ii8+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LkZsb3dTcGVjaWZpY2F0aW9uPC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy51bWwuZGlhZ3JhbS5jbGF6ei5JbnRlcmZhY2VfMjAwNDwvc3BlY2lhbGl6ZWRUeXBlc0lEPg0KKyAgICA8bWF0Y2hlckNvbmZpZ3VyYXRpb24NCisgICAgICAgIHhzaTp0eXBlPSJzdGVyZW90eXBlYXBwbGljYXRpb25tYXRjaGVyY29uZmlndXJhdGlvbjpTdGVyZW90eXBlQXBwbGljYXRpb25NYXRjaGVyQ29uZmlndXJhdGlvbiINCisgICAgICAgIHhtaTppZD0iX0xvS1lZc0pRRWVTWDlNb0tNQlY1R3ciPg0KKyAgICAgIDxzdGVyZW90eXBlc1F1YWxpZmllZE5hbWVzPlN5c01MOjpEZXByZWNhdGVkRWxlbWVudHM6OkZsb3dTcGVjaWZpY2F0aW9uPC9zdGVyZW90eXBlc1F1YWxpZmllZE5hbWVzPg0KKyAgICA8L21hdGNoZXJDb25maWd1cmF0aW9uPg0KKyAgPC9lbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zPg0KKyAgPGVsZW1lbnRUeXBlQ29uZmlndXJhdGlvbnMNCisgICAgICB4c2k6dHlwZT0iZWxlbWVudHR5cGVzY29uZmlndXJhdGlvbnM6U3BlY2lhbGl6YXRpb25UeXBlQ29uZmlndXJhdGlvbiINCisgICAgICB4bWk6aWQ9Il9Mb0tZWThKUUVlU1g5TW9LTUJWNUd3Ig0KKyAgICAgIG5hbWU9IkZsb3dTcGVjaWZpY2F0aW9uICgzMDIzKSINCisgICAgICBpZGVudGlmaWVyPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLkZsb3dTcGVjaWZpY2F0aW9uXzMwMjMiDQorICAgICAgaGludD0iMzAyMyI+DQorICAgIDxpY29uRW50cnkNCisgICAgICAgIHhtaTppZD0iX0xvS1laTUpRRWVTWDlNb0tNQlY1R3ciDQorICAgICAgICBpY29uUGF0aD0iL2ljb25zL2Z1bGwvb2JqMTYvSW50ZXJmYWNlLmdpZiINCisgICAgICAgIGJ1bmRsZUlkPSJvcmcuZWNsaXBzZS51bWwyLnVtbC5lZGl0Ii8+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LkZsb3dTcGVjaWZpY2F0aW9uPC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy51bWwuZGlhZ3JhbS5jbGF6ei5JbnRlcmZhY2VfMzAyMzwvc3BlY2lhbGl6ZWRUeXBlc0lEPg0KKyAgICA8bWF0Y2hlckNvbmZpZ3VyYXRpb24NCisgICAgICAgIHhzaTp0eXBlPSJzdGVyZW90eXBlYXBwbGljYXRpb25tYXRjaGVyY29uZmlndXJhdGlvbjpTdGVyZW90eXBlQXBwbGljYXRpb25NYXRjaGVyQ29uZmlndXJhdGlvbiINCisgICAgICAgIHhtaTppZD0iX0xvS1laY0pRRWVTWDlNb0tNQlY1R3ciPg0KKyAgICAgIDxzdGVyZW90eXBlc1F1YWxpZmllZE5hbWVzPlN5c01MOjpEZXByZWNhdGVkRWxlbWVudHM6OkZsb3dTcGVjaWZpY2F0aW9uPC9zdGVyZW90eXBlc1F1YWxpZmllZE5hbWVzPg0KKyAgICA8L21hdGNoZXJDb25maWd1cmF0aW9uPg0KKyAgPC9lbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zPg0KKyAgPGVsZW1lbnRUeXBlQ29uZmlndXJhdGlvbnMNCisgICAgICB4c2k6dHlwZT0iZWxlbWVudHR5cGVzY29uZmlndXJhdGlvbnM6U3BlY2lhbGl6YXRpb25UeXBlQ29uZmlndXJhdGlvbiINCisgICAgICB4bWk6aWQ9Il9Mb0tZWnNKUUVlU1g5TW9LTUJWNUd3Ig0KKyAgICAgIG5hbWU9IkZsb3dTcGVjaWZpY2F0aW9uICgzMDM2KSINCisgICAgICBpZGVudGlmaWVyPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLkZsb3dTcGVjaWZpY2F0aW9uXzMwMzYiDQorICAgICAgaGludD0iMzAzNiI+DQorICAgIDxpY29uRW50cnkNCisgICAgICAgIHhtaTppZD0iX0xvS1laOEpRRWVTWDlNb0tNQlY1R3ciDQorICAgICAgICBpY29uUGF0aD0iL2ljb25zL2Z1bGwvb2JqMTYvSW50ZXJmYWNlLmdpZiINCisgICAgICAgIGJ1bmRsZUlkPSJvcmcuZWNsaXBzZS51bWwyLnVtbC5lZGl0Ii8+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LkZsb3dTcGVjaWZpY2F0aW9uPC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy51bWwuZGlhZ3JhbS5jbGF6ei5JbnRlcmZhY2VfMzAzNjwvc3BlY2lhbGl6ZWRUeXBlc0lEPg0KKyAgICA8bWF0Y2hlckNvbmZpZ3VyYXRpb24NCisgICAgICAgIHhzaTp0eXBlPSJzdGVyZW90eXBlYXBwbGljYXRpb25tYXRjaGVyY29uZmlndXJhdGlvbjpTdGVyZW90eXBlQXBwbGljYXRpb25NYXRjaGVyQ29uZmlndXJhdGlvbiINCisgICAgICAgIHhtaTppZD0iX0xvS1lhTUpRRWVTWDlNb0tNQlY1R3ciPg0KKyAgICAgIDxzdGVyZW90eXBlc1F1YWxpZmllZE5hbWVzPlN5c01MOjpEZXByZWNhdGVkRWxlbWVudHM6OkZsb3dTcGVjaWZpY2F0aW9uPC9zdGVyZW90eXBlc1F1YWxpZmllZE5hbWVzPg0KKyAgICA8L21hdGNoZXJDb25maWd1cmF0aW9uPg0KKyAgPC9lbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zPg0KKyAgPGVsZW1lbnRUeXBlQ29uZmlndXJhdGlvbnMNCisgICAgICB4c2k6dHlwZT0iZWxlbWVudHR5cGVzY29uZmlndXJhdGlvbnM6U3BlY2lhbGl6YXRpb25UeXBlQ29uZmlndXJhdGlvbiINCisgICAgICB4bWk6aWQ9Il9Mb0tZYWNKUUVlU1g5TW9LTUJWNUd3Ig0KKyAgICAgIG5hbWU9IkZsb3dTcGVjaWZpY2F0aW9uICgzMDM3KSINCisgICAgICBpZGVudGlmaWVyPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLkZsb3dTcGVjaWZpY2F0aW9uXzMwMzciDQorICAgICAgaGludD0iMzAzNyI+DQorICAgIDxpY29uRW50cnkNCisgICAgICAgIHhtaTppZD0iX0xvS1lhc0pRRWVTWDlNb0tNQlY1R3ciDQorICAgICAgICBpY29uUGF0aD0iL2ljb25zL2Z1bGwvb2JqMTYvSW50ZXJmYWNlLmdpZiINCisgICAgICAgIGJ1bmRsZUlkPSJvcmcuZWNsaXBzZS51bWwyLnVtbC5lZGl0Ii8+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LkZsb3dTcGVjaWZpY2F0aW9uPC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy51bWwuZGlhZ3JhbS5jbGF6ei5JbnRlcmZhY2VfMzAzNzwvc3BlY2lhbGl6ZWRUeXBlc0lEPg0KKyAgICA8bWF0Y2hlckNvbmZpZ3VyYXRpb24NCisgICAgICAgIHhzaTp0eXBlPSJzdGVyZW90eXBlYXBwbGljYXRpb25tYXRjaGVyY29uZmlndXJhdGlvbjpTdGVyZW90eXBlQXBwbGljYXRpb25NYXRjaGVyQ29uZmlndXJhdGlvbiINCisgICAgICAgIHhtaTppZD0iX0xvS1lhOEpRRWVTWDlNb0tNQlY1R3ciPg0KKyAgICAgIDxzdGVyZW90eXBlc1F1YWxpZmllZE5hbWVzPlN5c01MOjpEZXByZWNhdGVkRWxlbWVudHM6OkZsb3dTcGVjaWZpY2F0aW9uPC9zdGVyZW90eXBlc1F1YWxpZmllZE5hbWVzPg0KKyAgICA8L21hdGNoZXJDb25maWd1cmF0aW9uPg0KKyAgPC9lbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zPg0KKyAgPGVsZW1lbnRUeXBlQ29uZmlndXJhdGlvbnMNCisgICAgICB4c2k6dHlwZT0iZWxlbWVudHR5cGVzY29uZmlndXJhdGlvbnM6U3BlY2lhbGl6YXRpb25UeXBlQ29uZmlndXJhdGlvbiINCisgICAgICB4bWk6aWQ9Il9Mb0tZYk1KUUVlU1g5TW9LTUJWNUd3Ig0KKyAgICAgIG5hbWU9IkZsb3dTcGVjaWZpY2F0aW9uICgzMDM4KSINCisgICAgICBpZGVudGlmaWVyPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLkZsb3dTcGVjaWZpY2F0aW9uXzMwMzgiDQorICAgICAgaGludD0iMzAzOCI+DQorICAgIDxpY29uRW50cnkNCisgICAgICAgIHhtaTppZD0iX0xvS1liY0pRRWVTWDlNb0tNQlY1R3ciDQorICAgICAgICBpY29uUGF0aD0iL2ljb25zL2Z1bGwvb2JqMTYvSW50ZXJmYWNlLmdpZiINCisgICAgICAgIGJ1bmRsZUlkPSJvcmcuZWNsaXBzZS51bWwyLnVtbC5lZGl0Ii8+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LkZsb3dTcGVjaWZpY2F0aW9uPC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy51bWwuZGlhZ3JhbS5jbGF6ei5JbnRlcmZhY2VfMzAzODwvc3BlY2lhbGl6ZWRUeXBlc0lEPg0KKyAgICA8bWF0Y2hlckNvbmZpZ3VyYXRpb24NCisgICAgICAgIHhzaTp0eXBlPSJzdGVyZW90eXBlYXBwbGljYXRpb25tYXRjaGVyY29uZmlndXJhdGlvbjpTdGVyZW90eXBlQXBwbGljYXRpb25NYXRjaGVyQ29uZmlndXJhdGlvbiINCisgICAgICAgIHhtaTppZD0iX0xvS1lic0pRRWVTWDlNb0tNQlY1R3ciPg0KKyAgICAgIDxzdGVyZW90eXBlc1F1YWxpZmllZE5hbWVzPlN5c01MOjpEZXByZWNhdGVkRWxlbWVudHM6OkZsb3dTcGVjaWZpY2F0aW9uPC9zdGVyZW90eXBlc1F1YWxpZmllZE5hbWVzPg0KKyAgICA8L21hdGNoZXJDb25maWd1cmF0aW9uPg0KKyAgPC9lbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zPg0KKyAgPGVsZW1lbnRUeXBlQ29uZmlndXJhdGlvbnMNCisgICAgICB4c2k6dHlwZT0iZWxlbWVudHR5cGVzY29uZmlndXJhdGlvbnM6U3BlY2lhbGl6YXRpb25UeXBlQ29uZmlndXJhdGlvbiINCisgICAgICB4bWk6aWQ9Il9Mb0tZYjhKUUVlU1g5TW9LTUJWNUd3Ig0KKyAgICAgIG5hbWU9IkFsbG9jYXRlZCINCisgICAgICBpZGVudGlmaWVyPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLkFsbG9jYXRlZF8yMDk3Ig0KKyAgICAgIGhpbnQ9IjIwOTciPg0KKyAgICA8aWNvbkVudHJ5DQorICAgICAgICB4bWk6aWQ9Il9Mb0tZY01KUUVlU1g5TW9LTUJWNUd3Ig0KKyAgICAgICAgaWNvblBhdGg9Ii9pY29ucy9mdWxsL29iajE2L05hbWVkRWxlbWVudC5naWYiDQorICAgICAgICBidW5kbGVJZD0ib3JnLmVjbGlwc2UudW1sMi51bWwuZWRpdCIvPg0KKyAgICA8c3BlY2lhbGl6ZWRUeXBlc0lEPm9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5BbGxvY2F0ZWQ8L3NwZWNpYWxpemVkVHlwZXNJRD4NCisgICAgPHNwZWNpYWxpemVkVHlwZXNJRD5vcmcuZWNsaXBzZS5wYXB5cnVzLnVtbC5kaWFncmFtLmNsYXp6Lk5hbWVkRWxlbWVudF8yMDk3PC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICAgIDxtYXRjaGVyQ29uZmlndXJhdGlvbg0KKyAgICAgICAgeHNpOnR5cGU9InN0ZXJlb3R5cGVhcHBsaWNhdGlvbm1hdGNoZXJjb25maWd1cmF0aW9uOlN0ZXJlb3R5cGVBcHBsaWNhdGlvbk1hdGNoZXJDb25maWd1cmF0aW9uIg0KKyAgICAgICAgeG1pOmlkPSJfTG9LWWNjSlFFZVNYOU1vS01CVjVHdyI+DQorICAgICAgPHN0ZXJlb3R5cGVzUXVhbGlmaWVkTmFtZXM+U3lzTUw6OkRlcHJlY2F0ZWRFbGVtZW50czo6QWxsb2NhdGVkPC9zdGVyZW90eXBlc1F1YWxpZmllZE5hbWVzPg0KKyAgICA8L21hdGNoZXJDb25maWd1cmF0aW9uPg0KKyAgPC9lbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zPg0KKyAgPGVsZW1lbnRUeXBlQ29uZmlndXJhdGlvbnMNCisgICAgICB4c2k6dHlwZT0iZWxlbWVudHR5cGVzY29uZmlndXJhdGlvbnM6U3BlY2lhbGl6YXRpb25UeXBlQ29uZmlndXJhdGlvbiINCisgICAgICB4bWk6aWQ9Il9Mb0tZY3NKUUVlU1g5TW9LTUJWNUd3Ig0KKyAgICAgIG5hbWU9IlJlcXVpcmVtZW50UmVsYXRlZCINCisgICAgICBpZGVudGlmaWVyPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLlJlcXVpcmVtZW50UmVsYXRlZF8yMDk3Ig0KKyAgICAgIGhpbnQ9IjIwOTciPg0KKyAgICA8aWNvbkVudHJ5DQorICAgICAgICB4bWk6aWQ9Il9Mb0tZYzhKUUVlU1g5TW9LTUJWNUd3Ig0KKyAgICAgICAgaWNvblBhdGg9Ii9pY29ucy9mdWxsL29iajE2L05hbWVkRWxlbWVudC5naWYiDQorICAgICAgICBidW5kbGVJZD0ib3JnLmVjbGlwc2UudW1sMi51bWwuZWRpdCIvPg0KKyAgICA8c3BlY2lhbGl6ZWRUeXBlc0lEPm9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5SZXF1aXJlbWVudFJlbGF0ZWQ8L3NwZWNpYWxpemVkVHlwZXNJRD4NCisgICAgPHNwZWNpYWxpemVkVHlwZXNJRD5vcmcuZWNsaXBzZS5wYXB5cnVzLnVtbC5kaWFncmFtLmNsYXp6Lk5hbWVkRWxlbWVudF8yMDk3PC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICAgIDxtYXRjaGVyQ29uZmlndXJhdGlvbg0KKyAgICAgICAgeHNpOnR5cGU9InN0ZXJlb3R5cGVhcHBsaWNhdGlvbm1hdGNoZXJjb25maWd1cmF0aW9uOlN0ZXJlb3R5cGVBcHBsaWNhdGlvbk1hdGNoZXJDb25maWd1cmF0aW9uIg0KKyAgICAgICAgeG1pOmlkPSJfTG9LWWRNSlFFZVNYOU1vS01CVjVHdyI+DQorICAgICAgPHN0ZXJlb3R5cGVzUXVhbGlmaWVkTmFtZXM+U3lzTUw6OkRlcHJlY2F0ZWRFbGVtZW50czo6UmVxdWlyZW1lbnRSZWxhdGVkPC9zdGVyZW90eXBlc1F1YWxpZmllZE5hbWVzPg0KKyAgICA8L21hdGNoZXJDb25maWd1cmF0aW9uPg0KKyAgPC9lbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zPg0KKyAgPGVsZW1lbnRUeXBlQ29uZmlndXJhdGlvbnMNCisgICAgICB4c2k6dHlwZT0iZWxlbWVudHR5cGVzY29uZmlndXJhdGlvbnM6U3BlY2lhbGl6YXRpb25UeXBlQ29uZmlndXJhdGlvbiINCisgICAgICB4bWk6aWQ9Il90alZEWU0xeEVlU3NSYk40aWhncURnIg0KKyAgICAgIG5hbWU9IkZsb3dQb3J0IChGbG93UG9ydF9MYWJlbCkiDQorICAgICAgZGVzY3JpcHRpb249IiINCisgICAgICBpZGVudGlmaWVyPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLkZsb3dQb3J0X0xhYmVsIg0KKyAgICAgIGhpbnQ9IkZsb3dQb3J0X0xhYmVsIj4NCisgICAgPGljb25FbnRyeQ0KKyAgICAgICAgeG1pOmlkPSJfdGpWRFljMXhFZVNzUmJONGloZ3FEZyINCisgICAgICAgIGljb25QYXRoPSIvaWNvbnMvZnVsbC9vYmoxNi9Qcm9wZXJ0eS5naWYiDQorICAgICAgICBidW5kbGVJZD0ib3JnLmVjbGlwc2UudW1sMi51bWwuZWRpdCIvPg0KKyAgICA8c3BlY2lhbGl6ZWRUeXBlc0lEPm9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5GbG93UG9ydDwvc3BlY2lhbGl6ZWRUeXBlc0lEPg0KKyAgICA8bWF0Y2hlckNvbmZpZ3VyYXRpb24NCisgICAgICAgIHhzaTp0eXBlPSJzdGVyZW90eXBlYXBwbGljYXRpb25tYXRjaGVyY29uZmlndXJhdGlvbjpTdGVyZW90eXBlQXBwbGljYXRpb25NYXRjaGVyQ29uZmlndXJhdGlvbiINCisgICAgICAgIHhtaTppZD0iX3RqVkRZczF4RWVTc1JiTjRpaGdxRGciDQorICAgICAgICBtYXRjaGVyQ2xhc3NOYW1lPSIiPg0KKyAgICAgIDxzdGVyZW90eXBlc1F1YWxpZmllZE5hbWVzPlN5c01MOjpEZXByZWNhdGVkRWxlbWVudHM6OkZsb3dQb3J0PC9zdGVyZW90eXBlc1F1YWxpZmllZE5hbWVzPg0KKyAgICA8L21hdGNoZXJDb25maWd1cmF0aW9uPg0KKyAgPC9lbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zPg0KKyAgPGVsZW1lbnRUeXBlQ29uZmlndXJhdGlvbnMNCisgICAgICB4c2k6dHlwZT0iZWxlbWVudHR5cGVzY29uZmlndXJhdGlvbnM6U3BlY2lhbGl6YXRpb25UeXBlQ29uZmlndXJhdGlvbiINCisgICAgICB4bWk6aWQ9Il8zOVNnME0xeEVlU3NSYk40aWhncURnIg0KKyAgICAgIG5hbWU9IkZsb3dQb3J0ICgzMDA1KSINCisgICAgICBkZXNjcmlwdGlvbj0iIg0KKyAgICAgIGlkZW50aWZpZXI9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuRmxvd1BvcnRfMzAwNSINCisgICAgICBoaW50PSIzMDA1Ij4NCisgICAgPGljb25FbnRyeQ0KKyAgICAgICAgeG1pOmlkPSJfMzlTZzBjMXhFZVNzUmJONGloZ3FEZyINCisgICAgICAgIGljb25QYXRoPSIvaWNvbnMvZnVsbC9vYmoxNi9Qcm9wZXJ0eS5naWYiDQorICAgICAgICBidW5kbGVJZD0ib3JnLmVjbGlwc2UudW1sMi51bWwuZWRpdCIvPg0KKyAgICA8c3BlY2lhbGl6ZWRUeXBlc0lEPm9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5GbG93UG9ydDwvc3BlY2lhbGl6ZWRUeXBlc0lEPg0KKyAgICA8c3BlY2lhbGl6ZWRUeXBlc0lEPm9yZy5lY2xpcHNlLnBhcHlydXMudW1sLmRpYWdyYW0uY2xhenouUHJvcGVydHlfMzAwNTwvc3BlY2lhbGl6ZWRUeXBlc0lEPg0KKyAgICA8bWF0Y2hlckNvbmZpZ3VyYXRpb24NCisgICAgICAgIHhzaTp0eXBlPSJzdGVyZW90eXBlYXBwbGljYXRpb25tYXRjaGVyY29uZmlndXJhdGlvbjpTdGVyZW90eXBlQXBwbGljYXRpb25NYXRjaGVyQ29uZmlndXJhdGlvbiINCisgICAgICAgIHhtaTppZD0iXzM5U2cwczF4RWVTc1JiTjRpaGdxRGciDQorICAgICAgICBtYXRjaGVyQ2xhc3NOYW1lPSIiPg0KKyAgICAgIDxzdGVyZW90eXBlc1F1YWxpZmllZE5hbWVzPlN5c01MOjpEZXByZWNhdGVkRWxlbWVudHM6OkZsb3dQb3J0PC9zdGVyZW90eXBlc1F1YWxpZmllZE5hbWVzPg0KKyAgICA8L21hdGNoZXJDb25maWd1cmF0aW9uPg0KKyAgPC9lbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zPg0KKyAgPGVsZW1lbnRUeXBlQ29uZmlndXJhdGlvbnMNCisgICAgICB4c2k6dHlwZT0iZWxlbWVudHR5cGVzY29uZmlndXJhdGlvbnM6U3BlY2lhbGl6YXRpb25UeXBlQ29uZmlndXJhdGlvbiINCisgICAgICB4bWk6aWQ9Il80MkJmb00xeEVlU3NSYk40aWhncURnIg0KKyAgICAgIG5hbWU9IkZsb3dQb3J0ICgzMDA2KSINCisgICAgICBkZXNjcmlwdGlvbj0iIg0KKyAgICAgIGlkZW50aWZpZXI9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuRmxvd1BvcnRfMzAwNiINCisgICAgICBoaW50PSIzMDA2Ij4NCisgICAgPGljb25FbnRyeQ0KKyAgICAgICAgeG1pOmlkPSJfNDJCZm9jMXhFZVNzUmJONGloZ3FEZyINCisgICAgICAgIGljb25QYXRoPSIvaWNvbnMvZnVsbC9vYmoxNi9Qcm9wZXJ0eS5naWYiDQorICAgICAgICBidW5kbGVJZD0ib3JnLmVjbGlwc2UudW1sMi51bWwuZWRpdCIvPg0KKyAgICA8c3BlY2lhbGl6ZWRUeXBlc0lEPm9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5GbG93UG9ydDwvc3BlY2lhbGl6ZWRUeXBlc0lEPg0KKyAgICA8c3BlY2lhbGl6ZWRUeXBlc0lEPm9yZy5lY2xpcHNlLnBhcHlydXMudW1sLmRpYWdyYW0uY2xhenouUHJvcGVydHlfMzAwNjwvc3BlY2lhbGl6ZWRUeXBlc0lEPg0KKyAgICA8bWF0Y2hlckNvbmZpZ3VyYXRpb24NCisgICAgICAgIHhzaTp0eXBlPSJzdGVyZW90eXBlYXBwbGljYXRpb25tYXRjaGVyY29uZmlndXJhdGlvbjpTdGVyZW90eXBlQXBwbGljYXRpb25NYXRjaGVyQ29uZmlndXJhdGlvbiINCisgICAgICAgIHhtaTppZD0iXzQyQmZvczF4RWVTc1JiTjRpaGdxRGciDQorICAgICAgICBtYXRjaGVyQ2xhc3NOYW1lPSIiPg0KKyAgICAgIDxzdGVyZW90eXBlc1F1YWxpZmllZE5hbWVzPlN5c01MOjpEZXByZWNhdGVkRWxlbWVudHM6OkZsb3dQb3J0PC9zdGVyZW90eXBlc1F1YWxpZmllZE5hbWVzPg0KKyAgICA8L21hdGNoZXJDb25maWd1cmF0aW9uPg0KKyAgPC9lbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zPg0KKyAgPGVsZW1lbnRUeXBlQ29uZmlndXJhdGlvbnMNCisgICAgICB4c2k6dHlwZT0iZWxlbWVudHR5cGVzY29uZmlndXJhdGlvbnM6U3BlY2lhbGl6YXRpb25UeXBlQ29uZmlndXJhdGlvbiINCisgICAgICB4bWk6aWQ9Il81aDM1QU0xeEVlU3NSYk40aWhncURnIg0KKyAgICAgIG5hbWU9IkZsb3dQb3J0ICgzMDEyKSINCisgICAgICBkZXNjcmlwdGlvbj0iIg0KKyAgICAgIGlkZW50aWZpZXI9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuRmxvd1BvcnRfMzAxMiINCisgICAgICBoaW50PSIzMDEyIj4NCisgICAgPGljb25FbnRyeQ0KKyAgICAgICAgeG1pOmlkPSJfNWgzNUFjMXhFZVNzUmJONGloZ3FEZyINCisgICAgICAgIGljb25QYXRoPSIvaWNvbnMvZnVsbC9vYmoxNi9Qcm9wZXJ0eS5naWYiDQorICAgICAgICBidW5kbGVJZD0ib3JnLmVjbGlwc2UudW1sMi51bWwuZWRpdCIvPg0KKyAgICA8c3BlY2lhbGl6ZWRUeXBlc0lEPm9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5GbG93UG9ydDwvc3BlY2lhbGl6ZWRUeXBlc0lEPg0KKyAgICA8c3BlY2lhbGl6ZWRUeXBlc0lEPm9yZy5lY2xpcHNlLnBhcHlydXMudW1sLmRpYWdyYW0uY2xhenouUHJvcGVydHlfMzAxMjwvc3BlY2lhbGl6ZWRUeXBlc0lEPg0KKyAgICA8bWF0Y2hlckNvbmZpZ3VyYXRpb24NCisgICAgICAgIHhzaTp0eXBlPSJzdGVyZW90eXBlYXBwbGljYXRpb25tYXRjaGVyY29uZmlndXJhdGlvbjpTdGVyZW90eXBlQXBwbGljYXRpb25NYXRjaGVyQ29uZmlndXJhdGlvbiINCisgICAgICAgIHhtaTppZD0iXzVoMzVBczF4RWVTc1JiTjRpaGdxRGciDQorICAgICAgICBtYXRjaGVyQ2xhc3NOYW1lPSIiPg0KKyAgICAgIDxzdGVyZW90eXBlc1F1YWxpZmllZE5hbWVzPlN5c01MOjpEZXByZWNhdGVkRWxlbWVudHM6OkZsb3dQb3J0PC9zdGVyZW90eXBlc1F1YWxpZmllZE5hbWVzPg0KKyAgICA8L21hdGNoZXJDb25maWd1cmF0aW9uPg0KKyAgPC9lbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zPg0KKyAgPGVsZW1lbnRUeXBlQ29uZmlndXJhdGlvbnMNCisgICAgICB4c2k6dHlwZT0iZWxlbWVudHR5cGVzY29uZmlndXJhdGlvbnM6U3BlY2lhbGl6YXRpb25UeXBlQ29uZmlndXJhdGlvbiINCisgICAgICB4bWk6aWQ9Il84ZThIRU0xeEVlU3NSYk40aWhncURnIg0KKyAgICAgIG5hbWU9IkZsb3dQb3J0ICgzMDE4KSINCisgICAgICBkZXNjcmlwdGlvbj0iIg0KKyAgICAgIGlkZW50aWZpZXI9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuRmxvd1BvcnRfMzAxOCINCisgICAgICBoaW50PSIzMDE4Ij4NCisgICAgPGljb25FbnRyeQ0KKyAgICAgICAgeG1pOmlkPSJfOGU4SEVjMXhFZVNzUmJONGloZ3FEZyINCisgICAgICAgIGljb25QYXRoPSIvaWNvbnMvZnVsbC9vYmoxNi9Qcm9wZXJ0eS5naWYiDQorICAgICAgICBidW5kbGVJZD0ib3JnLmVjbGlwc2UudW1sMi51bWwuZWRpdCIvPg0KKyAgICA8c3BlY2lhbGl6ZWRUeXBlc0lEPm9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5GbG93UG9ydDwvc3BlY2lhbGl6ZWRUeXBlc0lEPg0KKyAgICA8c3BlY2lhbGl6ZWRUeXBlc0lEPm9yZy5lY2xpcHNlLnBhcHlydXMudW1sLmRpYWdyYW0uY2xhenouUHJvcGVydHlfMzAxODwvc3BlY2lhbGl6ZWRUeXBlc0lEPg0KKyAgICA8bWF0Y2hlckNvbmZpZ3VyYXRpb24NCisgICAgICAgIHhzaTp0eXBlPSJzdGVyZW90eXBlYXBwbGljYXRpb25tYXRjaGVyY29uZmlndXJhdGlvbjpTdGVyZW90eXBlQXBwbGljYXRpb25NYXRjaGVyQ29uZmlndXJhdGlvbiINCisgICAgICAgIHhtaTppZD0iXzhlOEhFczF4RWVTc1JiTjRpaGdxRGciDQorICAgICAgICBtYXRjaGVyQ2xhc3NOYW1lPSIiPg0KKyAgICAgIDxzdGVyZW90eXBlc1F1YWxpZmllZE5hbWVzPlN5c01MOjpEZXByZWNhdGVkRWxlbWVudHM6OkZsb3dQb3J0PC9zdGVyZW90eXBlc1F1YWxpZmllZE5hbWVzPg0KKyAgICA8L21hdGNoZXJDb25maWd1cmF0aW9uPg0KKyAgPC9lbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zPg0KKyAgPGVsZW1lbnRUeXBlQ29uZmlndXJhdGlvbnMNCisgICAgICB4c2k6dHlwZT0iZWxlbWVudHR5cGVzY29uZmlndXJhdGlvbnM6U3BlY2lhbGl6YXRpb25UeXBlQ29uZmlndXJhdGlvbiINCisgICAgICB4bWk6aWQ9Il85RWNuNE0xeEVlU3NSYk40aWhncURnIg0KKyAgICAgIG5hbWU9IkZsb3dQb3J0ICgzMDQxKSINCisgICAgICBkZXNjcmlwdGlvbj0iIg0KKyAgICAgIGlkZW50aWZpZXI9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuRmxvd1BvcnRfMzA0MSINCisgICAgICBoaW50PSIzMDQxIj4NCisgICAgPGljb25FbnRyeQ0KKyAgICAgICAgeG1pOmlkPSJfOUVjbjRjMXhFZVNzUmJONGloZ3FEZyINCisgICAgICAgIGljb25QYXRoPSIvaWNvbnMvZnVsbC9vYmoxNi9Qcm9wZXJ0eS5naWYiDQorICAgICAgICBidW5kbGVJZD0ib3JnLmVjbGlwc2UudW1sMi51bWwuZWRpdCIvPg0KKyAgICA8c3BlY2lhbGl6ZWRUeXBlc0lEPm9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5GbG93UG9ydDwvc3BlY2lhbGl6ZWRUeXBlc0lEPg0KKyAgICA8c3BlY2lhbGl6ZWRUeXBlc0lEPm9yZy5lY2xpcHNlLnBhcHlydXMudW1sLmRpYWdyYW0uY2xhenouUHJvcGVydHlfMzA0MTwvc3BlY2lhbGl6ZWRUeXBlc0lEPg0KKyAgICA8bWF0Y2hlckNvbmZpZ3VyYXRpb24NCisgICAgICAgIHhzaTp0eXBlPSJzdGVyZW90eXBlYXBwbGljYXRpb25tYXRjaGVyY29uZmlndXJhdGlvbjpTdGVyZW90eXBlQXBwbGljYXRpb25NYXRjaGVyQ29uZmlndXJhdGlvbiINCisgICAgICAgIHhtaTppZD0iXzlFY240czF4RWVTc1JiTjRpaGdxRGciDQorICAgICAgICBtYXRjaGVyQ2xhc3NOYW1lPSIiPg0KKyAgICAgIDxzdGVyZW90eXBlc1F1YWxpZmllZE5hbWVzPlN5c01MOjpEZXByZWNhdGVkRWxlbWVudHM6OkZsb3dQb3J0PC9zdGVyZW90eXBlc1F1YWxpZmllZE5hbWVzPg0KKyAgICA8L21hdGNoZXJDb25maWd1cmF0aW9uPg0KKyAgPC9lbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zPg0KKyAgPGVsZW1lbnRUeXBlQ29uZmlndXJhdGlvbnMNCisgICAgICB4c2k6dHlwZT0iZWxlbWVudHR5cGVzY29uZmlndXJhdGlvbnM6U3BlY2lhbGl6YXRpb25UeXBlQ29uZmlndXJhdGlvbiINCisgICAgICB4bWk6aWQ9Il9SMDF1UU5IX0VlU3hmX2hLbWhyYWhBIg0KKyAgICAgIG5hbWU9IkNvbnRyb2xPcGVyYXRvciAoT3BlcmF0aW9uX0JvcmRlckl0ZW0pIg0KKyAgICAgIGlkZW50aWZpZXI9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuQ29udHJvbE9wZXJhdG9yX09wZXJhdGlvbl9PcGVyYXRpb25fQm9yZGVySXRlbSINCisgICAgICBoaW50PSJPcGVyYXRpb25fQm9yZGVySXRlbSI+DQorICAgIDxpY29uRW50cnkNCisgICAgICAgIHhtaTppZD0iX1IwMXVRZEhfRWVTeGZfaEttaHJhaEEiDQorICAgICAgICBpY29uUGF0aD0iL2ljb25zL2Z1bGwvb2JqMTYvT3BlcmF0aW9uLmdpZiINCisgICAgICAgIGJ1bmRsZUlkPSJvcmcuZWNsaXBzZS51bWwyLnVtbC5lZGl0Ii8+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LkNvbnRyb2xPcGVyYXRvcl9PcGVyYXRpb248L3NwZWNpYWxpemVkVHlwZXNJRD4NCisgICAgPG1hdGNoZXJDb25maWd1cmF0aW9uDQorICAgICAgICB4c2k6dHlwZT0ic3RlcmVvdHlwZWFwcGxpY2F0aW9ubWF0Y2hlcmNvbmZpZ3VyYXRpb246U3RlcmVvdHlwZUFwcGxpY2F0aW9uTWF0Y2hlckNvbmZpZ3VyYXRpb24iDQorICAgICAgICB4bWk6aWQ9Il9SMDF1UXRIX0VlU3hmX2hLbWhyYWhBIj4NCisgICAgICA8c3RlcmVvdHlwZXNRdWFsaWZpZWROYW1lcz5TeXNNTDo6QWN0aXZpdGllczo6Q29udHJvbE9wZXJhdG9yPC9zdGVyZW90eXBlc1F1YWxpZmllZE5hbWVzPg0KKyAgICA8L21hdGNoZXJDb25maWd1cmF0aW9uPg0KKyAgPC9lbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zPg0KKyAgPGVsZW1lbnRUeXBlQ29uZmlndXJhdGlvbnMNCisgICAgICB4c2k6dHlwZT0iZWxlbWVudHR5cGVzY29uZmlndXJhdGlvbnM6U3BlY2lhbGl6YXRpb25UeXBlQ29uZmlndXJhdGlvbiINCisgICAgICB4bWk6aWQ9Il9Ud0FOOE5QQkVlU1JOSTdpbWdfSHVBIg0KKyAgICAgIG5hbWU9IlZlcmlmeV9MaW5rIg0KKyAgICAgIGlkZW50aWZpZXI9Im9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5WZXJpZnlfQWJzdHJhY3Rpb25fVmVyaWZ5X0xpbmsiDQorICAgICAgaGludD0iVmVyaWZ5X0xpbmsiPg0KKyAgICA8aWNvbkVudHJ5DQorICAgICAgICB4bWk6aWQ9Il9ZakU3WU5QQkVlU1JOSTdpbWdfSHVBIg0KKyAgICAgICAgaWNvblBhdGg9Ii9pY29ucy9mdWxsL29iajE2L09wZXJhdGlvbi5naWYiDQorICAgICAgICBidW5kbGVJZD0ib3JnLmVjbGlwc2UudW1sMi51bWwuZWRpdCIvPg0KKyAgICA8c3BlY2lhbGl6ZWRUeXBlc0lEPm9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5WZXJpZnlfQWJzdHJhY3Rpb248L3NwZWNpYWxpemVkVHlwZXNJRD4NCisgICAgPG1hdGNoZXJDb25maWd1cmF0aW9uDQorICAgICAgICB4c2k6dHlwZT0ic3RlcmVvdHlwZWFwcGxpY2F0aW9ubWF0Y2hlcmNvbmZpZ3VyYXRpb246U3RlcmVvdHlwZUFwcGxpY2F0aW9uTWF0Y2hlckNvbmZpZ3VyYXRpb24iDQorICAgICAgICB4bWk6aWQ9Il9ZakU3WWRQQkVlU1JOSTdpbWdfSHVBIj4NCisgICAgICA8c3RlcmVvdHlwZXNRdWFsaWZpZWROYW1lcz5TeXNNTDo6QWN0aXZpdGllczo6Q29udHJvbE9wZXJhdG9yPC9zdGVyZW90eXBlc1F1YWxpZmllZE5hbWVzPg0KKyAgICA8L21hdGNoZXJDb25maWd1cmF0aW9uPg0KKyAgPC9lbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zPg0KKyAgPGVsZW1lbnRUeXBlQ29uZmlndXJhdGlvbnMNCisgICAgICB4c2k6dHlwZT0iZWxlbWVudHR5cGVzY29uZmlndXJhdGlvbnM6U3BlY2lhbGl6YXRpb25UeXBlQ29uZmlndXJhdGlvbiINCisgICAgICB4bWk6aWQ9Il9DLVQ5SU9ULUVlU2R1YVlhLTVOcjFBIg0KKyAgICAgIG5hbWU9IkNvbnN0cmFpbnQgKENvbnN0cmFpbnRfTGFiZWwpIg0KKyAgICAgIGRlc2NyaXB0aW9uPSIiDQorICAgICAgaWRlbnRpZmllcj0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5Db25zdHJhaW50X0xhYmVsIg0KKyAgICAgIGhpbnQ9IkNvbnN0cmFpbnRfTGFiZWwiPg0KKyAgICA8aWNvbkVudHJ5DQorICAgICAgICB4bWk6aWQ9Il9DLVQ5SWVULUVlU2R1YVlhLTVOcjFBIg0KKyAgICAgICAgaWNvblBhdGg9Ii9pY29ucy9mdWxsL29iajE2L0NvbnN0cmFpbnQuZ2lmIg0KKyAgICAgICAgYnVuZGxlSWQ9Im9yZy5lY2xpcHNlLnVtbDIudW1sLmVkaXQiLz4NCisgICAgPHNwZWNpYWxpemVkVHlwZXNJRD5vcmcuZWNsaXBzZS5wYXB5cnVzLnVtbC5Db25zdHJhaW50PC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICA8L2VsZW1lbnRUeXBlQ29uZmlndXJhdGlvbnM+DQorICA8ZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucw0KKyAgICAgIHhzaTp0eXBlPSJlbGVtZW50dHlwZXNjb25maWd1cmF0aW9uczpTcGVjaWFsaXphdGlvblR5cGVDb25maWd1cmF0aW9uIg0KKyAgICAgIHhtaTppZD0iX0hRRncwT2R1RWVTVVF2WGhFVlFoOHciDQorICAgICAgbmFtZT0iQWN0b3IiDQorICAgICAgZGVzY3JpcHRpb249IkNyZWF0ZSBhbiBBY3RvciBpbiBhIFVNTCBDbGFzcyBEaWFncmFtIg0KKyAgICAgIGlkZW50aWZpZXI9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuQWN0b3JfMjAwOCINCisgICAgICBoaW50PSIyMDA4Ij4NCisgICAgPGljb25FbnRyeQ0KKyAgICAgICAgeG1pOmlkPSJfSFFGdzBlZHVFZVNVUXZYaEVWUWg4dyINCisgICAgICAgIGljb25QYXRoPSIvaWNvbnMvZnVsbC9vYmoxNi9Db25zdHJhaW50LmdpZiINCisgICAgICAgIGJ1bmRsZUlkPSJvcmcuZWNsaXBzZS51bWwyLnVtbC5lZGl0Ii8+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy51bWwuQWN0b3I8L3NwZWNpYWxpemVkVHlwZXNJRD4NCisgIDwvZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucz4NCisgIDxlbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zDQorICAgICAgeHNpOnR5cGU9ImVsZW1lbnR0eXBlc2NvbmZpZ3VyYXRpb25zOlNwZWNpYWxpemF0aW9uVHlwZUNvbmZpZ3VyYXRpb24iDQorICAgICAgeG1pOmlkPSJfN2ZqeXNPZ1ZFZVNVUXZYaEVWUWg4dyINCisgICAgICBuYW1lPSJVbml0XzIwMDEiDQorICAgICAgZGVzY3JpcHRpb249IkNyZWF0ZSBhbiBVbml0IGluIGEgVU1MIENsYXNzIERpYWdyYW0iDQorICAgICAgaWRlbnRpZmllcj0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5Vbml0XzIwMDEiDQorICAgICAgaGludD0iMjAwMSI+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LlVuaXQ8L3NwZWNpYWxpemVkVHlwZXNJRD4NCisgICAgPHNwZWNpYWxpemVkVHlwZXNJRD5vcmcuZWNsaXBzZS5wYXB5cnVzLnVtbC5kaWFncmFtLmNsYXp6Lkluc3RhbmNlU3BlY2lmaWNhdGlvbl8yMDAxPC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICA8L2VsZW1lbnRUeXBlQ29uZmlndXJhdGlvbnM+DQorICA8ZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucw0KKyAgICAgIHhzaTp0eXBlPSJlbGVtZW50dHlwZXNjb25maWd1cmF0aW9uczpTcGVjaWFsaXphdGlvblR5cGVDb25maWd1cmF0aW9uIg0KKyAgICAgIHhtaTppZD0iX3Y3UEpBT2dYRWVTVVF2WGhFVlFoOHciDQorICAgICAgbmFtZT0iVW5pdF8zMDIwIg0KKyAgICAgIGRlc2NyaXB0aW9uPSJDcmVhdGUgYW4gVW5pdCBpbiBhIFVNTCBDbGFzcyBEaWFncmFtIg0KKyAgICAgIGlkZW50aWZpZXI9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuVW5pdF8zMDIwIg0KKyAgICAgIGhpbnQ9IjMwMjAiPg0KKyAgICA8c3BlY2lhbGl6ZWRUeXBlc0lEPm9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5Vbml0PC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy51bWwuZGlhZ3JhbS5jbGF6ei5JbnN0YW5jZVNwZWNpZmljYXRpb25fMzAyMDwvc3BlY2lhbGl6ZWRUeXBlc0lEPg0KKyAgPC9lbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zPg0KKyAgPGVsZW1lbnRUeXBlQ29uZmlndXJhdGlvbnMNCisgICAgICB4c2k6dHlwZT0iZWxlbWVudHR5cGVzY29uZmlndXJhdGlvbnM6U3BlY2lhbGl6YXRpb25UeXBlQ29uZmlndXJhdGlvbiINCisgICAgICB4bWk6aWQ9Il96V09PNE9nbkVlU1VRdlhoRVZRaDh3Ig0KKyAgICAgIG5hbWU9IlF1YW50aXR5S2luZF8yMDAxIg0KKyAgICAgIGRlc2NyaXB0aW9uPSJDcmVhdGUgYW4gUXVhbnRpdHlLaW5kIGluIGEgVU1MIENsYXNzIERpYWdyYW0iDQorICAgICAgaWRlbnRpZmllcj0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5RdWFudGl0eUtpbmRfMjAwMSINCisgICAgICBoaW50PSIyMDAxIj4NCisgICAgPHNwZWNpYWxpemVkVHlwZXNJRD5vcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuUXVhbnRpdHlLaW5kPC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy51bWwuZGlhZ3JhbS5jbGF6ei5JbnN0YW5jZVNwZWNpZmljYXRpb25fMjAwMTwvc3BlY2lhbGl6ZWRUeXBlc0lEPg0KKyAgPC9lbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zPg0KKyAgPGVsZW1lbnRUeXBlQ29uZmlndXJhdGlvbnMNCisgICAgICB4c2k6dHlwZT0iZWxlbWVudHR5cGVzY29uZmlndXJhdGlvbnM6U3BlY2lhbGl6YXRpb25UeXBlQ29uZmlndXJhdGlvbiINCisgICAgICB4bWk6aWQ9Il96V09PNGVnbkVlU1VRdlhoRVZRaDh3Ig0KKyAgICAgIG5hbWU9IlF1YW50aXR5S2luZF8zMDIwIg0KKyAgICAgIGRlc2NyaXB0aW9uPSJDcmVhdGUgYW4gUXVhbnRpdHlLaW5kIGluIGEgVU1MIENsYXNzIERpYWdyYW0iDQorICAgICAgaWRlbnRpZmllcj0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5RdWFudGl0eUtpbmRfMzAyMCINCisgICAgICBoaW50PSIzMDIwIj4NCisgICAgPHNwZWNpYWxpemVkVHlwZXNJRD5vcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuUXVhbnRpdHlLaW5kPC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy51bWwuZGlhZ3JhbS5jbGF6ei5JbnN0YW5jZVNwZWNpZmljYXRpb25fMzAyMDwvc3BlY2lhbGl6ZWRUeXBlc0lEPg0KKyAgPC9lbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zPg0KKyAgPGVsZW1lbnRUeXBlQ29uZmlndXJhdGlvbnMNCisgICAgICB4c2k6dHlwZT0iZWxlbWVudHR5cGVzY29uZmlndXJhdGlvbnM6U3BlY2lhbGl6YXRpb25UeXBlQ29uZmlndXJhdGlvbiINCisgICAgICB4bWk6aWQ9Il9uSkY3OE9ndEVlU1VRdlhoRVZRaDh3Ig0KKyAgICAgIG5hbWU9IlBhcnRBc3NvY2lhdGlvbl80MDAxIg0KKyAgICAgIGRlc2NyaXB0aW9uPSJDcmVhdGUgYW4gUGFydCBBc3NvY2lhdGlvbiBpbiBhIFVNTCBDbGFzcyBEaWFncmFtIg0KKyAgICAgIGlkZW50aWZpZXI9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuUGFydEFzc29jaWF0aW9uXzQwMDEiDQorICAgICAgaGludD0iNDAwMSI+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LlBhcnRBc3NvY2lhdGlvbjwvc3BlY2lhbGl6ZWRUeXBlc0lEPg0KKyAgICA8c3BlY2lhbGl6ZWRUeXBlc0lEPm9yZy5lY2xpcHNlLnBhcHlydXMudW1sLmRpYWdyYW0uY2xhenouQXNzb2NpYXRpb25fNDAwMTwvc3BlY2lhbGl6ZWRUeXBlc0lEPg0KKyAgPC9lbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zPg0KKyAgPGVsZW1lbnRUeXBlQ29uZmlndXJhdGlvbnMNCisgICAgICB4c2k6dHlwZT0iZWxlbWVudHR5cGVzY29uZmlndXJhdGlvbnM6U3BlY2lhbGl6YXRpb25UeXBlQ29uZmlndXJhdGlvbiINCisgICAgICB4bWk6aWQ9Il9nZExNZ09tc0VlU3J6SmhDamN6Um9nIg0KKyAgICAgIG5hbWU9IkNsYXNzX1BvcnQiDQorICAgICAgZGVzY3JpcHRpb249IkNyZWF0ZSBhbiBVTUwgUG9ydCBpbiBhbiBVTUwgQ2xhc3MgRGlhZ3JhbSINCisgICAgICBpZGVudGlmaWVyPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLkNsYXNzX1BvcnQiDQorICAgICAgaGludD0iQ2xhc3NfUG9ydCI+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy51bWwuUG9ydDwvc3BlY2lhbGl6ZWRUeXBlc0lEPg0KKyAgPC9lbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zPg0KKyAgPGVsZW1lbnRUeXBlQ29uZmlndXJhdGlvbnMNCisgICAgICB4c2k6dHlwZT0iZWxlbWVudHR5cGVzY29uZmlndXJhdGlvbnM6U3BlY2lhbGl6YXRpb25UeXBlQ29uZmlndXJhdGlvbiINCisgICAgICB4bWk6aWQ9Il9VWm11RU9xS0VlU3J6SmhDamN6Um9nIg0KKyAgICAgIG5hbWU9IkNsYXNzX1Byb3h5UG9ydCINCisgICAgICBkZXNjcmlwdGlvbj0iQ3JlYXRlIGFuIFVNTCBQcm94eVBvcnQgaW4gYW4gVU1MIENsYXNzIERpYWdyYW0iDQorICAgICAgaWRlbnRpZmllcj0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5DbGFzc19Qcm94eVBvcnQiDQorICAgICAgaGludD0iQ2xhc3NfUHJveHlQb3J0Ij4NCisgICAgPHNwZWNpYWxpemVkVHlwZXNJRD5vcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuUHJveHlQb3J0PC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICA8L2VsZW1lbnRUeXBlQ29uZmlndXJhdGlvbnM+DQorICA8ZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucw0KKyAgICAgIHhzaTp0eXBlPSJlbGVtZW50dHlwZXNjb25maWd1cmF0aW9uczpTcGVjaWFsaXphdGlvblR5cGVDb25maWd1cmF0aW9uIg0KKyAgICAgIHhtaTppZD0iX1U1NHdvT3FLRWVTcnpKaENqY3pSb2ciDQorICAgICAgbmFtZT0iQ2xhc3NfRnVsbFBvcnQiDQorICAgICAgZGVzY3JpcHRpb249IkNyZWF0ZSBhbiBVTUwgRnVsbFBvcnQgaW4gYW4gVU1MIENsYXNzIERpYWdyYW0iDQorICAgICAgaWRlbnRpZmllcj0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5DbGFzc19GdWxsUG9ydCINCisgICAgICBoaW50PSJDbGFzc19GdWxsUG9ydCI+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LkZ1bGxQb3J0PC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICA8L2VsZW1lbnRUeXBlQ29uZmlndXJhdGlvbnM+DQorICA8ZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucw0KKyAgICAgIHhzaTp0eXBlPSJlbGVtZW50dHlwZXNjb25maWd1cmF0aW9uczpTcGVjaWFsaXphdGlvblR5cGVDb25maWd1cmF0aW9uIg0KKyAgICAgIHhtaTppZD0iXzBzdTIwT3l4RWVTTkI5UTBENWdKaUEiDQorICAgICAgbmFtZT0iUHJveHlQb3J0IChQcm94eVBvcnRfTGFiZWwpIg0KKyAgICAgIGRlc2NyaXB0aW9uPSIiDQorICAgICAgaWRlbnRpZmllcj0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5Qcm94eVBvcnRfTGFiZWwiDQorICAgICAgaGludD0iUHJveHlQb3J0X0xhYmVsIj4NCisgICAgPGljb25FbnRyeQ0KKyAgICAgICAgeG1pOmlkPSJfMHN1MjBleXhFZVNOQjlRMEQ1Z0ppQSINCisgICAgICAgIGljb25QYXRoPSIvaWNvbnMvZnVsbC9vYmoxNi9Qcm9wZXJ0eS5naWYiDQorICAgICAgICBidW5kbGVJZD0ib3JnLmVjbGlwc2UudW1sMi51bWwuZWRpdCIvPg0KKyAgICA8c3BlY2lhbGl6ZWRUeXBlc0lEPm9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5Qcm94eVBvcnQ8L3NwZWNpYWxpemVkVHlwZXNJRD4NCisgICAgPG1hdGNoZXJDb25maWd1cmF0aW9uDQorICAgICAgICB4c2k6dHlwZT0ic3RlcmVvdHlwZWFwcGxpY2F0aW9ubWF0Y2hlcmNvbmZpZ3VyYXRpb246U3RlcmVvdHlwZUFwcGxpY2F0aW9uTWF0Y2hlckNvbmZpZ3VyYXRpb24iDQorICAgICAgICB4bWk6aWQ9Il8wc3UyMHV5eEVlU05COVEwRDVnSmlBIg0KKyAgICAgICAgbWF0Y2hlckNsYXNzTmFtZT0iIj4NCisgICAgICA8c3RlcmVvdHlwZXNRdWFsaWZpZWROYW1lcz5TeXNNTDo6RGVwcmVjYXRlZEVsZW1lbnRzOjpGbG93UG9ydDwvc3RlcmVvdHlwZXNRdWFsaWZpZWROYW1lcz4NCisgICAgPC9tYXRjaGVyQ29uZmlndXJhdGlvbj4NCisgIDwvZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucz4NCisgIDxlbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zDQorICAgICAgeHNpOnR5cGU9ImVsZW1lbnR0eXBlc2NvbmZpZ3VyYXRpb25zOlNwZWNpYWxpemF0aW9uVHlwZUNvbmZpZ3VyYXRpb24iDQorICAgICAgeG1pOmlkPSJfMUhkRDhPeXhFZVNOQjlRMEQ1Z0ppQSINCisgICAgICBuYW1lPSJGdWxsUG9ydCAoRnVsbFBvcnRfTGFiZWwpIg0KKyAgICAgIGRlc2NyaXB0aW9uPSIiDQorICAgICAgaWRlbnRpZmllcj0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5GdWxsUG9ydF9MYWJlbCINCisgICAgICBoaW50PSJGdWxsUG9ydF9MYWJlbCI+DQorICAgIDxpY29uRW50cnkNCisgICAgICAgIHhtaTppZD0iXzFIZEQ4ZXl4RWVTTkI5UTBENWdKaUEiDQorICAgICAgICBpY29uUGF0aD0iL2ljb25zL2Z1bGwvb2JqMTYvUHJvcGVydHkuZ2lmIg0KKyAgICAgICAgYnVuZGxlSWQ9Im9yZy5lY2xpcHNlLnVtbDIudW1sLmVkaXQiLz4NCisgICAgPHNwZWNpYWxpemVkVHlwZXNJRD5vcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuRnVsbFBvcnQ8L3NwZWNpYWxpemVkVHlwZXNJRD4NCisgICAgPG1hdGNoZXJDb25maWd1cmF0aW9uDQorICAgICAgICB4c2k6dHlwZT0ic3RlcmVvdHlwZWFwcGxpY2F0aW9ubWF0Y2hlcmNvbmZpZ3VyYXRpb246U3RlcmVvdHlwZUFwcGxpY2F0aW9uTWF0Y2hlckNvbmZpZ3VyYXRpb24iDQorICAgICAgICB4bWk6aWQ9Il8xSGREOHV5eEVlU05COVEwRDVnSmlBIg0KKyAgICAgICAgbWF0Y2hlckNsYXNzTmFtZT0iIj4NCisgICAgICA8c3RlcmVvdHlwZXNRdWFsaWZpZWROYW1lcz5TeXNNTDo6RGVwcmVjYXRlZEVsZW1lbnRzOjpGbG93UG9ydDwvc3RlcmVvdHlwZXNRdWFsaWZpZWROYW1lcz4NCisgICAgPC9tYXRjaGVyQ29uZmlndXJhdGlvbj4NCisgIDwvZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucz4NCisgIDxlbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zDQorICAgICAgeHNpOnR5cGU9ImVsZW1lbnR0eXBlc2NvbmZpZ3VyYXRpb25zOlNwZWNpYWxpemF0aW9uVHlwZUNvbmZpZ3VyYXRpb24iDQorICAgICAgeG1pOmlkPSJfOVpWa0VQSmpFZVNwVjhaZVdPcTEzUSINCisgICAgICBuYW1lPSJTaGFyZWRBc3NvY2lhdGlvbl80MDAxIg0KKyAgICAgIGRlc2NyaXB0aW9uPSJDcmVhdGUgYW4gUGFydCBBc3NvY2lhdGlvbiBpbiBhIFVNTCBDbGFzcyBEaWFncmFtIg0KKyAgICAgIGlkZW50aWZpZXI9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuU2hhcmVkQXNzb2NpYXRpb25fNDAwMSINCisgICAgICBoaW50PSI0MDAxIj4NCisgICAgPHNwZWNpYWxpemVkVHlwZXNJRD5vcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuU2hhcmVkQXNzb2NpYXRpb248L3NwZWNpYWxpemVkVHlwZXNJRD4NCisgICAgPHNwZWNpYWxpemVkVHlwZXNJRD5vcmcuZWNsaXBzZS5wYXB5cnVzLnVtbC5kaWFncmFtLmNsYXp6LkFzc29jaWF0aW9uXzQwMDE8L3NwZWNpYWxpemVkVHlwZXNJRD4NCisgIDwvZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucz4NCisgIDxlbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zDQorICAgICAgeHNpOnR5cGU9ImVsZW1lbnR0eXBlc2NvbmZpZ3VyYXRpb25zOlNwZWNpYWxpemF0aW9uVHlwZUNvbmZpZ3VyYXRpb24iDQorICAgICAgeG1pOmlkPSJfNnN3d0lDY0lFZVdaUzRoczhKMWZOUSINCisgICAgICBuYW1lPSJWYWx1ZSAoMzAwMikiDQorICAgICAgaWRlbnRpZmllcj0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5WYWx1ZV8zMDAyIg0KKyAgICAgIGhpbnQ9IjMwMDIiPg0KKyAgICA8aWNvbkVudHJ5DQorICAgICAgICB4bWk6aWQ9Il82c3d3SVNjSUVlV1pTNGhzOEoxZk5RIg0KKyAgICAgICAgaWNvblBhdGg9Ii9pY29ucy9mdWxsL29iajE2L1Byb3BlcnR5LmdpZiINCisgICAgICAgIGJ1bmRsZUlkPSJvcmcuZWNsaXBzZS51bWwyLnVtbC5lZGl0Ii8+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LlZhbHVlPC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy51bWwuZGlhZ3JhbS5jbGF6ei5Qcm9wZXJ0eV8zMDAyPC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICAgIDxlZGl0SGVscGVyQWR2aWNlQ29uZmlndXJhdGlvbg0KKyAgICAgICAgeG1pOmlkPSJfNnN3d0lpY0lFZVdaUzRoczhKMWZOUSINCisgICAgICAgIG5hbWU9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kaWFncmFtLmNvbW1vbi5hZHZpY2VzLlZhbHVlRWRpdEhlbHBlckFkdmljZSINCisgICAgICAgIGRlc2NyaXB0aW9uPSIiDQorICAgICAgICBpZGVudGlmaWVyPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGlhZ3JhbS5jb21tb24uYWR2aWNlcy5WYWx1ZUVkaXRIZWxwZXJBZHZpY2UiDQorICAgICAgICBlZGl0SGVscGVyQWR2aWNlQ2xhc3NOYW1lPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGlhZ3JhbS5jb21tb24uYWR2aWNlcy5WYWx1ZUVkaXRIZWxwZXJBZHZpY2UiLz4NCisgIDwvZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucz4NCisgIDxlbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zDQorICAgICAgeHNpOnR5cGU9ImVsZW1lbnR0eXBlc2NvbmZpZ3VyYXRpb25zOlNwZWNpYWxpemF0aW9uVHlwZUNvbmZpZ3VyYXRpb24iDQorICAgICAgeG1pOmlkPSJfVFNESlVDQ3lFZVdqLUlHTldjTkwwUSINCisgICAgICBuYW1lPSJWYWx1ZSAoMzAwMikiDQorICAgICAgaWRlbnRpZmllcj0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5WYWx1ZV8zMDAyIg0KKyAgICAgIGhpbnQ9IjMwMDIiPg0KKyAgICA8aWNvbkVudHJ5DQorICAgICAgICB4bWk6aWQ9Il9UU0RKVVNDeUVlV2otSUdOV2NOTDBRIg0KKyAgICAgICAgaWNvblBhdGg9Ii9pY29ucy9mdWxsL29iajE2L1Byb3BlcnR5LmdpZiINCisgICAgICAgIGJ1bmRsZUlkPSJvcmcuZWNsaXBzZS51bWwyLnVtbC5lZGl0Ii8+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LlZhbHVlPC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy51bWwuZGlhZ3JhbS5jbGF6ei5Qcm9wZXJ0eV8zMDAyPC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICAgIDxlZGl0SGVscGVyQWR2aWNlQ29uZmlndXJhdGlvbg0KKyAgICAgICAgeG1pOmlkPSJfcTlubXdDQ3lFZVdqLUlHTldjTkwwUSINCisgICAgICAgIG5hbWU9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kaWFncmFtLmNvbW1vbi5hZHZpY2VzLlZhbHVlRWRpdEhlbHBlckFkdmljZSINCisgICAgICAgIGRlc2NyaXB0aW9uPSIiDQorICAgICAgICBpZGVudGlmaWVyPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGlhZ3JhbS5jb21tb24uYWR2aWNlcy5WYWx1ZUVkaXRIZWxwZXJBZHZpY2UiDQorICAgICAgICBlZGl0SGVscGVyQWR2aWNlQ2xhc3NOYW1lPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGlhZ3JhbS5jb21tb24uYWR2aWNlcy5WYWx1ZUVkaXRIZWxwZXJBZHZpY2UiLz4NCisgIDwvZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucz4NCisgIDxlbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zDQorICAgICAgeHNpOnR5cGU9ImVsZW1lbnR0eXBlc2NvbmZpZ3VyYXRpb25zOlNwZWNpYWxpemF0aW9uVHlwZUNvbmZpZ3VyYXRpb24iDQorICAgICAgeG1pOmlkPSJfVFNESlV5Q3lFZVdqLUlHTldjTkwwUSINCisgICAgICBuYW1lPSJWYWx1ZSAoMzAwNSkiDQorICAgICAgaWRlbnRpZmllcj0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5WYWx1ZV8zMDA1Ig0KKyAgICAgIGhpbnQ9IjMwMDUiPg0KKyAgICA8aWNvbkVudHJ5DQorICAgICAgICB4bWk6aWQ9Il9UU0RKVkNDeUVlV2otSUdOV2NOTDBRIg0KKyAgICAgICAgaWNvblBhdGg9Ii9pY29ucy9mdWxsL29iajE2L1Byb3BlcnR5LmdpZiINCisgICAgICAgIGJ1bmRsZUlkPSJvcmcuZWNsaXBzZS51bWwyLnVtbC5lZGl0Ii8+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LlZhbHVlPC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy51bWwuZGlhZ3JhbS5jbGF6ei5Qcm9wZXJ0eV8zMDA1PC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICAgIDxlZGl0SGVscGVyQWR2aWNlQ29uZmlndXJhdGlvbg0KKyAgICAgICAgeG1pOmlkPSJfSV9HcklDQzRFZVdqLUlHTldjTkwwUSINCisgICAgICAgIG5hbWU9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kaWFncmFtLmNvbW1vbi5hZHZpY2VzLlZhbHVlRWRpdEhlbHBlckFkdmljZSINCisgICAgICAgIGRlc2NyaXB0aW9uPSIiDQorICAgICAgICBpZGVudGlmaWVyPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGlhZ3JhbS5jb21tb24uYWR2aWNlcy5WYWx1ZUVkaXRIZWxwZXJBZHZpY2UiDQorICAgICAgICBlZGl0SGVscGVyQWR2aWNlQ2xhc3NOYW1lPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGlhZ3JhbS5jb21tb24uYWR2aWNlcy5WYWx1ZUVkaXRIZWxwZXJBZHZpY2UiLz4NCisgIDwvZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucz4NCisgIDxlbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zDQorICAgICAgeHNpOnR5cGU9ImVsZW1lbnR0eXBlc2NvbmZpZ3VyYXRpb25zOlNwZWNpYWxpemF0aW9uVHlwZUNvbmZpZ3VyYXRpb24iDQorICAgICAgeG1pOmlkPSJfVFNESlZpQ3lFZVdqLUlHTldjTkwwUSINCisgICAgICBuYW1lPSJWYWx1ZSAoMzAwNikiDQorICAgICAgaWRlbnRpZmllcj0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5WYWx1ZV8zMDA2Ig0KKyAgICAgIGhpbnQ9IjMwMDYiPg0KKyAgICA8aWNvbkVudHJ5DQorICAgICAgICB4bWk6aWQ9Il9UU0RKVnlDeUVlV2otSUdOV2NOTDBRIg0KKyAgICAgICAgaWNvblBhdGg9Ii9pY29ucy9mdWxsL29iajE2L1Byb3BlcnR5LmdpZiINCisgICAgICAgIGJ1bmRsZUlkPSJvcmcuZWNsaXBzZS51bWwyLnVtbC5lZGl0Ii8+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LlZhbHVlPC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy51bWwuZGlhZ3JhbS5jbGF6ei5Qcm9wZXJ0eV8zMDA2PC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICAgIDxlZGl0SGVscGVyQWR2aWNlQ29uZmlndXJhdGlvbg0KKyAgICAgICAgeG1pOmlkPSJfSkgxd1lDQzRFZVdqLUlHTldjTkwwUSINCisgICAgICAgIG5hbWU9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kaWFncmFtLmNvbW1vbi5hZHZpY2VzLlZhbHVlRWRpdEhlbHBlckFkdmljZSINCisgICAgICAgIGRlc2NyaXB0aW9uPSIiDQorICAgICAgICBpZGVudGlmaWVyPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGlhZ3JhbS5jb21tb24uYWR2aWNlcy5WYWx1ZUVkaXRIZWxwZXJBZHZpY2UiDQorICAgICAgICBlZGl0SGVscGVyQWR2aWNlQ2xhc3NOYW1lPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGlhZ3JhbS5jb21tb24uYWR2aWNlcy5WYWx1ZUVkaXRIZWxwZXJBZHZpY2UiLz4NCisgIDwvZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucz4NCisgIDxlbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zDQorICAgICAgeHNpOnR5cGU9ImVsZW1lbnR0eXBlc2NvbmZpZ3VyYXRpb25zOlNwZWNpYWxpemF0aW9uVHlwZUNvbmZpZ3VyYXRpb24iDQorICAgICAgeG1pOmlkPSJfVFNESldTQ3lFZVdqLUlHTldjTkwwUSINCisgICAgICBuYW1lPSJWYWx1ZSAoMzAxMikiDQorICAgICAgaWRlbnRpZmllcj0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5WYWx1ZV8zMDEyIg0KKyAgICAgIGhpbnQ9IjMwMTIiPg0KKyAgICA8aWNvbkVudHJ5DQorICAgICAgICB4bWk6aWQ9Il9UU0RKV2lDeUVlV2otSUdOV2NOTDBRIg0KKyAgICAgICAgaWNvblBhdGg9Ii9pY29ucy9mdWxsL29iajE2L1Byb3BlcnR5LmdpZiINCisgICAgICAgIGJ1bmRsZUlkPSJvcmcuZWNsaXBzZS51bWwyLnVtbC5lZGl0Ii8+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LlZhbHVlPC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy51bWwuZGlhZ3JhbS5jbGF6ei5Qcm9wZXJ0eV8zMDEyPC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICAgIDxlZGl0SGVscGVyQWR2aWNlQ29uZmlndXJhdGlvbg0KKyAgICAgICAgeG1pOmlkPSJfSlNZTWNDQzRFZVdqLUlHTldjTkwwUSINCisgICAgICAgIG5hbWU9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kaWFncmFtLmNvbW1vbi5hZHZpY2VzLlZhbHVlRWRpdEhlbHBlckFkdmljZSINCisgICAgICAgIGRlc2NyaXB0aW9uPSIiDQorICAgICAgICBpZGVudGlmaWVyPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGlhZ3JhbS5jb21tb24uYWR2aWNlcy5WYWx1ZUVkaXRIZWxwZXJBZHZpY2UiDQorICAgICAgICBlZGl0SGVscGVyQWR2aWNlQ2xhc3NOYW1lPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGlhZ3JhbS5jb21tb24uYWR2aWNlcy5WYWx1ZUVkaXRIZWxwZXJBZHZpY2UiLz4NCisgIDwvZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucz4NCisgIDxlbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zDQorICAgICAgeHNpOnR5cGU9ImVsZW1lbnR0eXBlc2NvbmZpZ3VyYXRpb25zOlNwZWNpYWxpemF0aW9uVHlwZUNvbmZpZ3VyYXRpb24iDQorICAgICAgeG1pOmlkPSJfVFNESlhDQ3lFZVdqLUlHTldjTkwwUSINCisgICAgICBuYW1lPSJWYWx1ZSAoMzAxOCkiDQorICAgICAgaWRlbnRpZmllcj0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5WYWx1ZV8zMDE4Ig0KKyAgICAgIGhpbnQ9IjMwMTgiPg0KKyAgICA8aWNvbkVudHJ5DQorICAgICAgICB4bWk6aWQ9Il9UU0RKWFNDeUVlV2otSUdOV2NOTDBRIg0KKyAgICAgICAgaWNvblBhdGg9Ii9pY29ucy9mdWxsL29iajE2L1Byb3BlcnR5LmdpZiINCisgICAgICAgIGJ1bmRsZUlkPSJvcmcuZWNsaXBzZS51bWwyLnVtbC5lZGl0Ii8+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LlZhbHVlPC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy51bWwuZGlhZ3JhbS5jbGF6ei5Qcm9wZXJ0eV8zMDE4PC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICAgIDxlZGl0SGVscGVyQWR2aWNlQ29uZmlndXJhdGlvbg0KKyAgICAgICAgeG1pOmlkPSJfSmN0ME1DQzRFZVdqLUlHTldjTkwwUSINCisgICAgICAgIG5hbWU9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kaWFncmFtLmNvbW1vbi5hZHZpY2VzLlZhbHVlRWRpdEhlbHBlckFkdmljZSINCisgICAgICAgIGRlc2NyaXB0aW9uPSIiDQorICAgICAgICBpZGVudGlmaWVyPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGlhZ3JhbS5jb21tb24uYWR2aWNlcy5WYWx1ZUVkaXRIZWxwZXJBZHZpY2UiDQorICAgICAgICBlZGl0SGVscGVyQWR2aWNlQ2xhc3NOYW1lPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGlhZ3JhbS5jb21tb24uYWR2aWNlcy5WYWx1ZUVkaXRIZWxwZXJBZHZpY2UiLz4NCisgIDwvZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucz4NCisgIDxlbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zDQorICAgICAgeHNpOnR5cGU9ImVsZW1lbnR0eXBlc2NvbmZpZ3VyYXRpb25zOlNwZWNpYWxpemF0aW9uVHlwZUNvbmZpZ3VyYXRpb24iDQorICAgICAgeG1pOmlkPSJfVFNESlh5Q3lFZVdqLUlHTldjTkwwUSINCisgICAgICBuYW1lPSJWYWx1ZSAoMzA0MSkiDQorICAgICAgaWRlbnRpZmllcj0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5WYWx1ZV8zMDQxIg0KKyAgICAgIGhpbnQ9IjMwNDEiPg0KKyAgICA8aWNvbkVudHJ5DQorICAgICAgICB4bWk6aWQ9Il9UU0RKWUNDeUVlV2otSUdOV2NOTDBRIg0KKyAgICAgICAgaWNvblBhdGg9Ii9pY29ucy9mdWxsL29iajE2L1Byb3BlcnR5LmdpZiINCisgICAgICAgIGJ1bmRsZUlkPSJvcmcuZWNsaXBzZS51bWwyLnVtbC5lZGl0Ii8+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LlZhbHVlPC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy51bWwuZGlhZ3JhbS5jbGF6ei5Qcm9wZXJ0eV8zMDQxPC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICAgIDxlZGl0SGVscGVyQWR2aWNlQ29uZmlndXJhdGlvbg0KKyAgICAgICAgeG1pOmlkPSJfSm44TXdDQzRFZVdqLUlHTldjTkwwUSINCisgICAgICAgIG5hbWU9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kaWFncmFtLmNvbW1vbi5hZHZpY2VzLlZhbHVlRWRpdEhlbHBlckFkdmljZSINCisgICAgICAgIGRlc2NyaXB0aW9uPSIiDQorICAgICAgICBpZGVudGlmaWVyPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGlhZ3JhbS5jb21tb24uYWR2aWNlcy5WYWx1ZUVkaXRIZWxwZXJBZHZpY2UiDQorICAgICAgICBlZGl0SGVscGVyQWR2aWNlQ2xhc3NOYW1lPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGlhZ3JhbS5jb21tb24uYWR2aWNlcy5WYWx1ZUVkaXRIZWxwZXJBZHZpY2UiLz4NCisgIDwvZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucz4NCisgIDxlbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zDQorICAgICAgeHNpOnR5cGU9ImVsZW1lbnR0eXBlc2NvbmZpZ3VyYXRpb25zOlNwZWNpYWxpemF0aW9uVHlwZUNvbmZpZ3VyYXRpb24iDQorICAgICAgeG1pOmlkPSJfYm9iSDhDQy1FZVdqLUlHTldjTkwwUSINCisgICAgICBuYW1lPSJSZWZlcmVuY2UgKDMwMDIpIg0KKyAgICAgIGlkZW50aWZpZXI9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuUmVmZXJlbmNlXzMwMDIiDQorICAgICAgaGludD0iMzAwMiI+DQorICAgIDxpY29uRW50cnkNCisgICAgICAgIHhtaTppZD0iX2JvYkg4U0MtRWVXai1JR05XY05MMFEiDQorICAgICAgICBpY29uUGF0aD0iL2ljb25zL2Z1bGwvb2JqMTYvUHJvcGVydHkuZ2lmIg0KKyAgICAgICAgYnVuZGxlSWQ9Im9yZy5lY2xpcHNlLnVtbDIudW1sLmVkaXQiLz4NCisgICAgPHNwZWNpYWxpemVkVHlwZXNJRD5vcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuUmVmZXJlbmNlPC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy51bWwuZGlhZ3JhbS5jbGF6ei5Qcm9wZXJ0eV8zMDAyPC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICAgIDxlZGl0SGVscGVyQWR2aWNlQ29uZmlndXJhdGlvbg0KKyAgICAgICAgeG1pOmlkPSJfYm9iSDhpQy1FZVdqLUlHTldjTkwwUSINCisgICAgICAgIG5hbWU9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kaWFncmFtLmNvbW1vbi5hZHZpY2VzLlJlZmVyZW5jZUVkaXRIZWxwZXJBZHZpY2UiDQorICAgICAgICBkZXNjcmlwdGlvbj0iIg0KKyAgICAgICAgaWRlbnRpZmllcj0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRpYWdyYW0uY29tbW9uLmFkdmljZXMuUmVmZXJlbmNlRWRpdEhlbHBlckFkdmljZSINCisgICAgICAgIGVkaXRIZWxwZXJBZHZpY2VDbGFzc05hbWU9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kaWFncmFtLmNvbW1vbi5hZHZpY2VzLlJlZmVyZW5jZUVkaXRIZWxwZXJBZHZpY2UiLz4NCisgIDwvZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucz4NCisgIDxlbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zDQorICAgICAgeHNpOnR5cGU9ImVsZW1lbnR0eXBlc2NvbmZpZ3VyYXRpb25zOlNwZWNpYWxpemF0aW9uVHlwZUNvbmZpZ3VyYXRpb24iDQorICAgICAgeG1pOmlkPSJfenNOUkVDQy1FZVdqLUlHTldjTkwwUSINCisgICAgICBuYW1lPSJWYWx1ZSAoMzAwNSkiDQorICAgICAgaWRlbnRpZmllcj0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5SZWZlcmVuY2VfMzAwNSINCisgICAgICBoaW50PSIzMDA1Ij4NCisgICAgPGljb25FbnRyeQ0KKyAgICAgICAgeG1pOmlkPSJfenNOUkVTQy1FZVdqLUlHTldjTkwwUSINCisgICAgICAgIGljb25QYXRoPSIvaWNvbnMvZnVsbC9vYmoxNi9Qcm9wZXJ0eS5naWYiDQorICAgICAgICBidW5kbGVJZD0ib3JnLmVjbGlwc2UudW1sMi51bWwuZWRpdCIvPg0KKyAgICA8c3BlY2lhbGl6ZWRUeXBlc0lEPm9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5SZWZlcmVuY2U8L3NwZWNpYWxpemVkVHlwZXNJRD4NCisgICAgPHNwZWNpYWxpemVkVHlwZXNJRD5vcmcuZWNsaXBzZS5wYXB5cnVzLnVtbC5kaWFncmFtLmNsYXp6LlByb3BlcnR5XzMwMDU8L3NwZWNpYWxpemVkVHlwZXNJRD4NCisgICAgPGVkaXRIZWxwZXJBZHZpY2VDb25maWd1cmF0aW9uDQorICAgICAgICB4bWk6aWQ9Il96c05SRWlDLUVlV2otSUdOV2NOTDBRIg0KKyAgICAgICAgbmFtZT0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRpYWdyYW0uY29tbW9uLmFkdmljZXMuUmVmZXJlbmNlRWRpdEhlbHBlckFkdmljZSINCisgICAgICAgIGRlc2NyaXB0aW9uPSIiDQorICAgICAgICBpZGVudGlmaWVyPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGlhZ3JhbS5jb21tb24uYWR2aWNlcy5SZWZlcmVuY2VFZGl0SGVscGVyQWR2aWNlIg0KKyAgICAgICAgZWRpdEhlbHBlckFkdmljZUNsYXNzTmFtZT0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRpYWdyYW0uY29tbW9uLmFkdmljZXMuUmVmZXJlbmNlRWRpdEhlbHBlckFkdmljZSIvPg0KKyAgPC9lbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zPg0KKyAgPGVsZW1lbnRUeXBlQ29uZmlndXJhdGlvbnMNCisgICAgICB4c2k6dHlwZT0iZWxlbWVudHR5cGVzY29uZmlndXJhdGlvbnM6U3BlY2lhbGl6YXRpb25UeXBlQ29uZmlndXJhdGlvbiINCisgICAgICB4bWk6aWQ9Il96c05SRXlDLUVlV2otSUdOV2NOTDBRIg0KKyAgICAgIG5hbWU9IlJlZmVyZW5jZSAoMzAwNikiDQorICAgICAgaWRlbnRpZmllcj0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5SZWZlcmVuY2VfMzAwNiINCisgICAgICBoaW50PSIzMDA2Ij4NCisgICAgPGljb25FbnRyeQ0KKyAgICAgICAgeG1pOmlkPSJfenNOUkZDQy1FZVdqLUlHTldjTkwwUSINCisgICAgICAgIGljb25QYXRoPSIvaWNvbnMvZnVsbC9vYmoxNi9Qcm9wZXJ0eS5naWYiDQorICAgICAgICBidW5kbGVJZD0ib3JnLmVjbGlwc2UudW1sMi51bWwuZWRpdCIvPg0KKyAgICA8c3BlY2lhbGl6ZWRUeXBlc0lEPm9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5SZWZlcmVuY2U8L3NwZWNpYWxpemVkVHlwZXNJRD4NCisgICAgPHNwZWNpYWxpemVkVHlwZXNJRD5vcmcuZWNsaXBzZS5wYXB5cnVzLnVtbC5kaWFncmFtLmNsYXp6LlByb3BlcnR5XzMwMDY8L3NwZWNpYWxpemVkVHlwZXNJRD4NCisgICAgPGVkaXRIZWxwZXJBZHZpY2VDb25maWd1cmF0aW9uDQorICAgICAgICB4bWk6aWQ9Il96c05SRlNDLUVlV2otSUdOV2NOTDBRIg0KKyAgICAgICAgbmFtZT0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRpYWdyYW0uY29tbW9uLmFkdmljZXMuUmVmZXJlbmNlRWRpdEhlbHBlckFkdmljZSINCisgICAgICAgIGRlc2NyaXB0aW9uPSIiDQorICAgICAgICBpZGVudGlmaWVyPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGlhZ3JhbS5jb21tb24uYWR2aWNlcy5SZWZlcmVuY2VFZGl0SGVscGVyQWR2aWNlIg0KKyAgICAgICAgZWRpdEhlbHBlckFkdmljZUNsYXNzTmFtZT0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRpYWdyYW0uY29tbW9uLmFkdmljZXMuUmVmZXJlbmNlRWRpdEhlbHBlckFkdmljZSIvPg0KKyAgPC9lbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zPg0KKyAgPGVsZW1lbnRUeXBlQ29uZmlndXJhdGlvbnMNCisgICAgICB4c2k6dHlwZT0iZWxlbWVudHR5cGVzY29uZmlndXJhdGlvbnM6U3BlY2lhbGl6YXRpb25UeXBlQ29uZmlndXJhdGlvbiINCisgICAgICB4bWk6aWQ9Il96c05SRmlDLUVlV2otSUdOV2NOTDBRIg0KKyAgICAgIG5hbWU9IlJlZmVyZW5jZSAoMzAxMikiDQorICAgICAgaWRlbnRpZmllcj0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5SZWZlcmVuY2VfMzAxMiINCisgICAgICBoaW50PSIzMDEyIj4NCisgICAgPGljb25FbnRyeQ0KKyAgICAgICAgeG1pOmlkPSJfenNOUkZ5Qy1FZVdqLUlHTldjTkwwUSINCisgICAgICAgIGljb25QYXRoPSIvaWNvbnMvZnVsbC9vYmoxNi9Qcm9wZXJ0eS5naWYiDQorICAgICAgICBidW5kbGVJZD0ib3JnLmVjbGlwc2UudW1sMi51bWwuZWRpdCIvPg0KKyAgICA8c3BlY2lhbGl6ZWRUeXBlc0lEPm9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5SZWZlcmVuY2U8L3NwZWNpYWxpemVkVHlwZXNJRD4NCisgICAgPHNwZWNpYWxpemVkVHlwZXNJRD5vcmcuZWNsaXBzZS5wYXB5cnVzLnVtbC5kaWFncmFtLmNsYXp6LlByb3BlcnR5XzMwMTI8L3NwZWNpYWxpemVkVHlwZXNJRD4NCisgICAgPGVkaXRIZWxwZXJBZHZpY2VDb25maWd1cmF0aW9uDQorICAgICAgICB4bWk6aWQ9Il96c05SR0NDLUVlV2otSUdOV2NOTDBRIg0KKyAgICAgICAgbmFtZT0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRpYWdyYW0uY29tbW9uLmFkdmljZXMuUmVmZXJlbmNlRWRpdEhlbHBlckFkdmljZSINCisgICAgICAgIGRlc2NyaXB0aW9uPSIiDQorICAgICAgICBpZGVudGlmaWVyPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGlhZ3JhbS5jb21tb24uYWR2aWNlcy5SZWZlcmVuY2VFZGl0SGVscGVyQWR2aWNlIg0KKyAgICAgICAgZWRpdEhlbHBlckFkdmljZUNsYXNzTmFtZT0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRpYWdyYW0uY29tbW9uLmFkdmljZXMuUmVmZXJlbmNlRWRpdEhlbHBlckFkdmljZSIvPg0KKyAgPC9lbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zPg0KKyAgPGVsZW1lbnRUeXBlQ29uZmlndXJhdGlvbnMNCisgICAgICB4c2k6dHlwZT0iZWxlbWVudHR5cGVzY29uZmlndXJhdGlvbnM6U3BlY2lhbGl6YXRpb25UeXBlQ29uZmlndXJhdGlvbiINCisgICAgICB4bWk6aWQ9Il96c05SR1NDLUVlV2otSUdOV2NOTDBRIg0KKyAgICAgIG5hbWU9IlJlZmVyZW5jZSAoMzAxOCkiDQorICAgICAgaWRlbnRpZmllcj0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5SZWZlcmVuY2VfMzAxOCINCisgICAgICBoaW50PSIzMDE4Ij4NCisgICAgPGljb25FbnRyeQ0KKyAgICAgICAgeG1pOmlkPSJfenNOUkdpQy1FZVdqLUlHTldjTkwwUSINCisgICAgICAgIGljb25QYXRoPSIvaWNvbnMvZnVsbC9vYmoxNi9Qcm9wZXJ0eS5naWYiDQorICAgICAgICBidW5kbGVJZD0ib3JnLmVjbGlwc2UudW1sMi51bWwuZWRpdCIvPg0KKyAgICA8c3BlY2lhbGl6ZWRUeXBlc0lEPm9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5SZWZlcmVuY2U8L3NwZWNpYWxpemVkVHlwZXNJRD4NCisgICAgPHNwZWNpYWxpemVkVHlwZXNJRD5vcmcuZWNsaXBzZS5wYXB5cnVzLnVtbC5kaWFncmFtLmNsYXp6LlByb3BlcnR5XzMwMTg8L3NwZWNpYWxpemVkVHlwZXNJRD4NCisgICAgPGVkaXRIZWxwZXJBZHZpY2VDb25maWd1cmF0aW9uDQorICAgICAgICB4bWk6aWQ9Il96c05SR3lDLUVlV2otSUdOV2NOTDBRIg0KKyAgICAgICAgbmFtZT0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRpYWdyYW0uY29tbW9uLmFkdmljZXMuUmVmZXJlbmNlRWRpdEhlbHBlckFkdmljZSINCisgICAgICAgIGRlc2NyaXB0aW9uPSIiDQorICAgICAgICBpZGVudGlmaWVyPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGlhZ3JhbS5jb21tb24uYWR2aWNlcy5SZWZlcmVuY2VFZGl0SGVscGVyQWR2aWNlIg0KKyAgICAgICAgZWRpdEhlbHBlckFkdmljZUNsYXNzTmFtZT0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRpYWdyYW0uY29tbW9uLmFkdmljZXMuUmVmZXJlbmNlRWRpdEhlbHBlckFkdmljZSIvPg0KKyAgPC9lbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zPg0KKyAgPGVsZW1lbnRUeXBlQ29uZmlndXJhdGlvbnMNCisgICAgICB4c2k6dHlwZT0iZWxlbWVudHR5cGVzY29uZmlndXJhdGlvbnM6U3BlY2lhbGl6YXRpb25UeXBlQ29uZmlndXJhdGlvbiINCisgICAgICB4bWk6aWQ9Il96c05SSENDLUVlV2otSUdOV2NOTDBRIg0KKyAgICAgIG5hbWU9IlJlZmVyZW5jZSAoMzA0MSkiDQorICAgICAgaWRlbnRpZmllcj0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5SZWZlcmVuY2VfMzA0MSINCisgICAgICBoaW50PSIzMDQxIj4NCisgICAgPGljb25FbnRyeQ0KKyAgICAgICAgeG1pOmlkPSJfenNOUkhTQy1FZVdqLUlHTldjTkwwUSINCisgICAgICAgIGljb25QYXRoPSIvaWNvbnMvZnVsbC9vYmoxNi9Qcm9wZXJ0eS5naWYiDQorICAgICAgICBidW5kbGVJZD0ib3JnLmVjbGlwc2UudW1sMi51bWwuZWRpdCIvPg0KKyAgICA8c3BlY2lhbGl6ZWRUeXBlc0lEPm9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5SZWZlcmVuY2U8L3NwZWNpYWxpemVkVHlwZXNJRD4NCisgICAgPHNwZWNpYWxpemVkVHlwZXNJRD5vcmcuZWNsaXBzZS5wYXB5cnVzLnVtbC5kaWFncmFtLmNsYXp6LlByb3BlcnR5XzMwNDE8L3NwZWNpYWxpemVkVHlwZXNJRD4NCisgICAgPGVkaXRIZWxwZXJBZHZpY2VDb25maWd1cmF0aW9uDQorICAgICAgICB4bWk6aWQ9Il96c05SSGlDLUVlV2otSUdOV2NOTDBRIg0KKyAgICAgICAgbmFtZT0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRpYWdyYW0uY29tbW9uLmFkdmljZXMuUmVmZXJlbmNlRWRpdEhlbHBlckFkdmljZSINCisgICAgICAgIGRlc2NyaXB0aW9uPSIiDQorICAgICAgICBpZGVudGlmaWVyPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGlhZ3JhbS5jb21tb24uYWR2aWNlcy5SZWZlcmVuY2VFZGl0SGVscGVyQWR2aWNlIg0KKyAgICAgICAgZWRpdEhlbHBlckFkdmljZUNsYXNzTmFtZT0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRpYWdyYW0uY29tbW9uLmFkdmljZXMuUmVmZXJlbmNlRWRpdEhlbHBlckFkdmljZSIvPg0KKyAgPC9lbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zPg0KKyAgPGVsZW1lbnRUeXBlQ29uZmlndXJhdGlvbnMNCisgICAgICB4c2k6dHlwZT0iZWxlbWVudHR5cGVzY29uZmlndXJhdGlvbnM6U3BlY2lhbGl6YXRpb25UeXBlQ29uZmlndXJhdGlvbiINCisgICAgICB4bWk6aWQ9Il9jQ2ZVSUNER0VlV2otSUdOV2NOTDBRIg0KKyAgICAgIG5hbWU9IlZhbHVlICgzMDAyKSINCisgICAgICBpZGVudGlmaWVyPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLlBhcnRfMzAwMiINCisgICAgICBoaW50PSIzMDAyIj4NCisgICAgPGljb25FbnRyeQ0KKyAgICAgICAgeG1pOmlkPSJfY0NmVUlTREdFZVdqLUlHTldjTkwwUSINCisgICAgICAgIGljb25QYXRoPSIvaWNvbnMvZnVsbC9vYmoxNi9Qcm9wZXJ0eS5naWYiDQorICAgICAgICBidW5kbGVJZD0ib3JnLmVjbGlwc2UudW1sMi51bWwuZWRpdCIvPg0KKyAgICA8c3BlY2lhbGl6ZWRUeXBlc0lEPm9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5QYXJ0PC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy51bWwuZGlhZ3JhbS5jbGF6ei5Qcm9wZXJ0eV8zMDAyPC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICAgIDxlZGl0SGVscGVyQWR2aWNlQ29uZmlndXJhdGlvbg0KKyAgICAgICAgeG1pOmlkPSJfZno5YW9DREdFZVdqLUlHTldjTkwwUSINCisgICAgICAgIG5hbWU9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kaWFncmFtLmNvbW1vbi5hZHZpY2VzLlJlZmVyZW5jZUVkaXRIZWxwZXJBZHZpY2UiDQorICAgICAgICBkZXNjcmlwdGlvbj0iIg0KKyAgICAgICAgaWRlbnRpZmllcj0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRpYWdyYW0uY29tbW9uLmFkdmljZXMuUmVmZXJlbmNlRWRpdEhlbHBlckFkdmljZSINCisgICAgICAgIGVkaXRIZWxwZXJBZHZpY2VDbGFzc05hbWU9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kaWFncmFtLmNvbW1vbi5hZHZpY2VzLlJlZmVyZW5jZUVkaXRIZWxwZXJBZHZpY2UiLz4NCisgIDwvZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucz4NCisgIDxlbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zDQorICAgICAgeHNpOnR5cGU9ImVsZW1lbnR0eXBlc2NvbmZpZ3VyYXRpb25zOlNwZWNpYWxpemF0aW9uVHlwZUNvbmZpZ3VyYXRpb24iDQorICAgICAgeG1pOmlkPSJfY0NmVUl5REdFZVdqLUlHTldjTkwwUSINCisgICAgICBuYW1lPSJQYXJ0ICgzMDA1KSINCisgICAgICBpZGVudGlmaWVyPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLlBhcnRfMzAwNSINCisgICAgICBoaW50PSIzMDA1Ij4NCisgICAgPGljb25FbnRyeQ0KKyAgICAgICAgeG1pOmlkPSJfY0NmVUpDREdFZVdqLUlHTldjTkwwUSINCisgICAgICAgIGljb25QYXRoPSIvaWNvbnMvZnVsbC9vYmoxNi9Qcm9wZXJ0eS5naWYiDQorICAgICAgICBidW5kbGVJZD0ib3JnLmVjbGlwc2UudW1sMi51bWwuZWRpdCIvPg0KKyAgICA8c3BlY2lhbGl6ZWRUeXBlc0lEPm9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5QYXJ0PC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy51bWwuZGlhZ3JhbS5jbGF6ei5Qcm9wZXJ0eV8zMDA1PC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICAgIDxlZGl0SGVscGVyQWR2aWNlQ29uZmlndXJhdGlvbg0KKyAgICAgICAgeG1pOmlkPSJfZ0F5VnNDREdFZVdqLUlHTldjTkwwUSINCisgICAgICAgIG5hbWU9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kaWFncmFtLmNvbW1vbi5hZHZpY2VzLlJlZmVyZW5jZUVkaXRIZWxwZXJBZHZpY2UiDQorICAgICAgICBkZXNjcmlwdGlvbj0iIg0KKyAgICAgICAgaWRlbnRpZmllcj0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRpYWdyYW0uY29tbW9uLmFkdmljZXMuUmVmZXJlbmNlRWRpdEhlbHBlckFkdmljZSINCisgICAgICAgIGVkaXRIZWxwZXJBZHZpY2VDbGFzc05hbWU9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kaWFncmFtLmNvbW1vbi5hZHZpY2VzLlJlZmVyZW5jZUVkaXRIZWxwZXJBZHZpY2UiLz4NCisgIDwvZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucz4NCisgIDxlbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zDQorICAgICAgeHNpOnR5cGU9ImVsZW1lbnR0eXBlc2NvbmZpZ3VyYXRpb25zOlNwZWNpYWxpemF0aW9uVHlwZUNvbmZpZ3VyYXRpb24iDQorICAgICAgeG1pOmlkPSJfY0NmVUppREdFZVdqLUlHTldjTkwwUSINCisgICAgICBuYW1lPSJQYXJ0ICgzMDA2KSINCisgICAgICBpZGVudGlmaWVyPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLlBhcnRfMzAwNiINCisgICAgICBoaW50PSIzMDA2Ij4NCisgICAgPGljb25FbnRyeQ0KKyAgICAgICAgeG1pOmlkPSJfY0NmVUp5REdFZVdqLUlHTldjTkwwUSINCisgICAgICAgIGljb25QYXRoPSIvaWNvbnMvZnVsbC9vYmoxNi9Qcm9wZXJ0eS5naWYiDQorICAgICAgICBidW5kbGVJZD0ib3JnLmVjbGlwc2UudW1sMi51bWwuZWRpdCIvPg0KKyAgICA8c3BlY2lhbGl6ZWRUeXBlc0lEPm9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5QYXJ0PC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy51bWwuZGlhZ3JhbS5jbGF6ei5Qcm9wZXJ0eV8zMDA2PC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICAgIDxlZGl0SGVscGVyQWR2aWNlQ29uZmlndXJhdGlvbg0KKyAgICAgICAgeG1pOmlkPSJfZ0xFVEVDREdFZVdqLUlHTldjTkwwUSINCisgICAgICAgIG5hbWU9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kaWFncmFtLmNvbW1vbi5hZHZpY2VzLlJlZmVyZW5jZUVkaXRIZWxwZXJBZHZpY2UiDQorICAgICAgICBkZXNjcmlwdGlvbj0iIg0KKyAgICAgICAgaWRlbnRpZmllcj0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRpYWdyYW0uY29tbW9uLmFkdmljZXMuUmVmZXJlbmNlRWRpdEhlbHBlckFkdmljZSINCisgICAgICAgIGVkaXRIZWxwZXJBZHZpY2VDbGFzc05hbWU9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kaWFncmFtLmNvbW1vbi5hZHZpY2VzLlJlZmVyZW5jZUVkaXRIZWxwZXJBZHZpY2UiLz4NCisgIDwvZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucz4NCisgIDxlbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zDQorICAgICAgeHNpOnR5cGU9ImVsZW1lbnR0eXBlc2NvbmZpZ3VyYXRpb25zOlNwZWNpYWxpemF0aW9uVHlwZUNvbmZpZ3VyYXRpb24iDQorICAgICAgeG1pOmlkPSJfY0NmVUtTREdFZVdqLUlHTldjTkwwUSINCisgICAgICBuYW1lPSJQYXJ0ICgzMDEyKSINCisgICAgICBpZGVudGlmaWVyPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLlBhcnRfMzAxMiINCisgICAgICBoaW50PSIzMDEyIj4NCisgICAgPGljb25FbnRyeQ0KKyAgICAgICAgeG1pOmlkPSJfY0NmVUtpREdFZVdqLUlHTldjTkwwUSINCisgICAgICAgIGljb25QYXRoPSIvaWNvbnMvZnVsbC9vYmoxNi9Qcm9wZXJ0eS5naWYiDQorICAgICAgICBidW5kbGVJZD0ib3JnLmVjbGlwc2UudW1sMi51bWwuZWRpdCIvPg0KKyAgICA8c3BlY2lhbGl6ZWRUeXBlc0lEPm9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5QYXJ0PC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy51bWwuZGlhZ3JhbS5jbGF6ei5Qcm9wZXJ0eV8zMDEyPC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICAgIDxlZGl0SGVscGVyQWR2aWNlQ29uZmlndXJhdGlvbg0KKyAgICAgICAgeG1pOmlkPSJfZ1VXSzRDREdFZVdqLUlHTldjTkwwUSINCisgICAgICAgIG5hbWU9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kaWFncmFtLmNvbW1vbi5hZHZpY2VzLlJlZmVyZW5jZUVkaXRIZWxwZXJBZHZpY2UiDQorICAgICAgICBkZXNjcmlwdGlvbj0iIg0KKyAgICAgICAgaWRlbnRpZmllcj0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRpYWdyYW0uY29tbW9uLmFkdmljZXMuUmVmZXJlbmNlRWRpdEhlbHBlckFkdmljZSINCisgICAgICAgIGVkaXRIZWxwZXJBZHZpY2VDbGFzc05hbWU9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kaWFncmFtLmNvbW1vbi5hZHZpY2VzLlJlZmVyZW5jZUVkaXRIZWxwZXJBZHZpY2UiLz4NCisgIDwvZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucz4NCisgIDxlbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zDQorICAgICAgeHNpOnR5cGU9ImVsZW1lbnR0eXBlc2NvbmZpZ3VyYXRpb25zOlNwZWNpYWxpemF0aW9uVHlwZUNvbmZpZ3VyYXRpb24iDQorICAgICAgeG1pOmlkPSJfY0NmVUxDREdFZVdqLUlHTldjTkwwUSINCisgICAgICBuYW1lPSJQYXJ0ICgzMDE4KSINCisgICAgICBpZGVudGlmaWVyPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLlBhcnRfMzAxOCINCisgICAgICBoaW50PSIzMDE4Ij4NCisgICAgPGljb25FbnRyeQ0KKyAgICAgICAgeG1pOmlkPSJfY0NmVUxTREdFZVdqLUlHTldjTkwwUSINCisgICAgICAgIGljb25QYXRoPSIvaWNvbnMvZnVsbC9vYmoxNi9Qcm9wZXJ0eS5naWYiDQorICAgICAgICBidW5kbGVJZD0ib3JnLmVjbGlwc2UudW1sMi51bWwuZWRpdCIvPg0KKyAgICA8c3BlY2lhbGl6ZWRUeXBlc0lEPm9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5QYXJ0PC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICAgIDxzcGVjaWFsaXplZFR5cGVzSUQ+b3JnLmVjbGlwc2UucGFweXJ1cy51bWwuZGlhZ3JhbS5jbGF6ei5Qcm9wZXJ0eV8zMDE4PC9zcGVjaWFsaXplZFR5cGVzSUQ+DQorICAgIDxlZGl0SGVscGVyQWR2aWNlQ29uZmlndXJhdGlvbg0KKyAgICAgICAgeG1pOmlkPSJfZ2hPd1VDREdFZVdqLUlHTldjTkwwUSINCisgICAgICAgIG5hbWU9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kaWFncmFtLmNvbW1vbi5hZHZpY2VzLlJlZmVyZW5jZUVkaXRIZWxwZXJBZHZpY2UiDQorICAgICAgICBkZXNjcmlwdGlvbj0iIg0KKyAgICAgICAgaWRlbnRpZmllcj0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRpYWdyYW0uY29tbW9uLmFkdmljZXMuUmVmZXJlbmNlRWRpdEhlbHBlckFkdmljZSINCisgICAgICAgIGVkaXRIZWxwZXJBZHZpY2VDbGFzc05hbWU9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kaWFncmFtLmNvbW1vbi5hZHZpY2VzLlJlZmVyZW5jZUVkaXRIZWxwZXJBZHZpY2UiLz4NCisgIDwvZWxlbWVudFR5cGVDb25maWd1cmF0aW9ucz4NCisgIDxlbGVtZW50VHlwZUNvbmZpZ3VyYXRpb25zDQorICAgICAgeHNpOnR5cGU9ImVsZW1lbnR0eXBlc2NvbmZpZ3VyYXRpb25zOlNwZWNpYWxpemF0aW9uVHlwZUNvbmZpZ3VyYXRpb24iDQorICAgICAgeG1pOmlkPSJfY0NmVUx5REdFZVdqLUlHTldjTkwwUSINCisgICAgICBuYW1lPSJQYXJ0ICgzMDQxKSINCisgICAgICBpZGVudGlmaWVyPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLlBhcnRfMzA0MSINCisgICAgICBoaW50PSIzMDQxIj4NCisgICAgPGljb25FbnRyeQ0KKyAgICAgICAgeG1pOmlkPSJfY0NmVU1DREdFZVdqLUlHTldjTkwwUSINCisgICAgICAgIGljb25QYXRoPSIvaWNvbnMvZnVsbC9vYmoxNi9Qcm9wZXJ0eS5naWYiDQorICAgICAgICBidW5kbGVJZD0ib3JnLmVjbGlwc2UudW1sMi51bWwuZWRpdCIvPg0KKyAgICA8c3BlY2lhbGl6ZWRUeXBlc0lEPm9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5WYWx1ZTwvc3BlY2lhbGl6ZWRUeXBlc0lEPg0KKyAgICA8c3BlY2lhbGl6ZWRUeXBlc0lEPm9yZy5lY2xpcHNlLnBhcHlydXMudW1sLmRpYWdyYW0uY2xhenouUHJvcGVydHlfMzA0MTwvc3BlY2lhbGl6ZWRUeXBlc0lEPg0KKyAgICA8ZWRpdEhlbHBlckFkdmljZUNvbmZpZ3VyYXRpb24NCisgICAgICAgIHhtaTppZD0iX2d0YUxJQ0RHRWVXai1JR05XY05MMFEiDQorICAgICAgICBuYW1lPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGlhZ3JhbS5jb21tb24uYWR2aWNlcy5SZWZlcmVuY2VFZGl0SGVscGVyQWR2aWNlIg0KKyAgICAgICAgZGVzY3JpcHRpb249IiINCisgICAgICAgIGlkZW50aWZpZXI9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kaWFncmFtLmNvbW1vbi5hZHZpY2VzLlJlZmVyZW5jZUVkaXRIZWxwZXJBZHZpY2UiDQorICAgICAgICBlZGl0SGVscGVyQWR2aWNlQ2xhc3NOYW1lPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGlhZ3JhbS5jb21tb24uYWR2aWNlcy5SZWZlcmVuY2VFZGl0SGVscGVyQWR2aWNlIi8+DQorICA8L2VsZW1lbnRUeXBlQ29uZmlndXJhdGlvbnM+DQorPC9lbGVtZW50dHlwZXNjb25maWd1cmF0aW9uczpFbGVtZW50VHlwZVNldENvbmZpZ3VyYXRpb24+DQpkaWZmIC0tZ2l0IGEvZGlhZ3JhbS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGlhZ3JhbS5jb21tb24vc2l0ZS9tZWRpYXdpa2kvcGFsZXR0ZS5tZWRpYXdpa2kgYi9kaWFncmFtL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kaWFncmFtLmNvbW1vbi9zaXRlL21lZGlhd2lraS9wYWxldHRlLm1lZGlhd2lraQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZjUzNWEzCi0tLSAvZGV2L251bGwKKysrIGIvZGlhZ3JhbS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGlhZ3JhbS5jb21tb24vc2l0ZS9tZWRpYXdpa2kvcGFsZXR0ZS5tZWRpYXdpa2kKQEAgLTAsMCArMSwyMiBAQAorDQorPSAxIEludHJvZHVjdGlvbiA9DQorDQorDQorPSAyIENvbnZlbnRpb24gPQ0KKw0KKz09UGFsZXR0ZT09DQorDQorQWxsIHBhbGV0dGUgc2hvdWxkIGZvbGxvdyB0aGUgZm9sbG93aW5nIGNvbnZlbnRpb246DQorKiBkcmF3ZXJDb25maWd1cmF0aW9ucy5pZD1vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLltiZGR8aWJkfHBhcnxyZXFdLnBhbGV0dGUuW2VkZ2V8bm9kZV0NCisqIGRyYXdlckNvbmZpZ3VyYXRpb25zLmxhYmVsPVN5c01MIFtCRER8SUJEfFBBUnxSRVFdIFtFZGdlc3xOb2Rlc10NCisqIG93bmVkQ29uZmlndXJhdGlvbnMuaWQ9b3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5bYmRkfGliZHxwYXJ8cmVxXS5wYWxldHRlLltlZGdlfG5vZGVdLlhYWA0KKw0KKz0gMyBTdXBwb3J0ID0NCisNCitUbyByZXBvcnQgYnVncywgc3VnZ2VzdCBpbXByb3ZlbWVudHMsIHZpZXcgdGhlIHN0YXR1cyBvZiB0aGUgUGFweXJ1cyBTeXNNTCBwcm9qZWN0LCBkaXNjdXNzIGRpZmZlcmVudCBQYXB5cnVzIHN1YmplY3RzLCBldGMuIHBsZWFzZSB1c2UgdGhlIGZvbGxvd2luZyByZWZlcmVuY2VzOg0KKw0KKyogW2h0dHA6Ly93d3cuZWNsaXBzZS5vcmcvcGFweXJ1cy8gVGhlIFBhcHlydXMgcHJvamVjdCBob21lIHBhZ2VdDQorKiBbaHR0cHM6Ly9idWdzLmVjbGlwc2Uub3JnL2J1Z3MvZW50ZXJfYnVnLmNnaT9wcm9kdWN0PVBhcHlydXMgVGhlIFBhcHlydXMgYnVnIHN1Ym1pc3Npb24gaG9tZSBwYWdlXQ0KKw0KKz0gNCBSZWZlcmVuY2VzID0NCisjIFtodHRwOi8vd3d3Lm9tZy5vcmcvc3BlYy9TeXNNTC8gT01HIFN5c01MXQ0KZGlmZiAtLWdpdCBhL2RpYWdyYW0vb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRpYWdyYW0uY29tbW9uL3NpdGUveGRvYy9pbnRyby54bWwgYi9kaWFncmFtL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kaWFncmFtLmNvbW1vbi9zaXRlL3hkb2MvaW50cm8ueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRjMGUwN2MKLS0tIC9kZXYvbnVsbAorKysgYi9kaWFncmFtL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kaWFncmFtLmNvbW1vbi9zaXRlL3hkb2MvaW50cm8ueG1sCkBAIC0wLDAgKzEsNTcgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+DQorPGRvY3VtZW50IHhtbG5zPSJodHRwOi8vbWF2ZW4uYXBhY2hlLm9yZy9YRE9DLzIuMCIgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSINCisJeHNpOnNjaGVtYUxvY2F0aW9uPSJodHRwOi8vbWF2ZW4uYXBhY2hlLm9yZy9YRE9DLzIuMCBodHRwOi8vbWF2ZW4uYXBhY2hlLm9yZy94c2QveGRvYy0yLjAueHNkIj4NCisNCisJPHByb3BlcnRpZXM+DQorCQk8dGl0bGU+U3lzTUwgSW50cm88L3RpdGxlPg0KKwk8L3Byb3BlcnRpZXM+DQorDQorCTxib2R5Pg0KKw0KKwkJPHNlY3Rpb24gbmFtZT0iSW50cm9kdWN0aW9uIj4NCisJCQk8c3Vic2VjdGlvbiBuYW1lPSJQdXJwb3NlIj4NCisJCQkJPHA+SW4gb3JkZXIgdG8gZW5oYW5jZSB0aGUgY29tbXVuYXV0eSBhbmQgdGhlIGRpZmZ1c2lvbiBvZiBQYXB5cnVzLA0KKwkJCQkJbmV3IGZlYXR1cmVzIGFuZCBlbmhhbmNlbWVudHMgc2hvdWxkIGJlIGRvY3VtZW50ZWQgdGhyb3VnaCBhIHNtYWxsDQorCQkJCQl2aWRlbyB1cGxvYWRlZCB0byB5b3V0dWJlIGNoYW5uZWwuDQorCQkJCTwvcD4NCisJCQk8L3N1YnNlY3Rpb24+DQorCQk8L3NlY3Rpb24+DQorCQk8c2VjdGlvbiBuYW1lPSJDb252ZW50aW9uIj4NCisJCQk8c3Vic2VjdGlvbiBuYW1lPSJQYWxldHRlIj4NCisJCQkJPHA+ZWFjaCBwYWxldHRlIHNob3VsZCBmb2xsb3cgdGhlIGNvbnZlbnRpb246DQorCQkJCTwvcD4NCisJCQkJPHNvdXJjZT4NCisJCQkJPCFbQ0RBVEFbPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iQVNDSUkiPz4NCis8cGFsZXR0ZWNvbmZpZ3VyYXRpb246UGFsZXR0ZUNvbmZpZ3VyYXRpb24NCisgICAgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSINCisgICAgeG1sbnM6cGFsZXR0ZWNvbmZpZ3VyYXRpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvcGFweXJ1cy9kaWFncmFtL3BhbGV0dGVjb25maWd1cmF0aW9uLzAuNyINCisgICAgaWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuW2JkZCxpYmQscGFyLHJlcV0ucGFsZXR0ZS5tb2RlbCINCisgICAgbGFiZWw9IlN5c01MIFtCRER8SUJEfFBBUnxSRVFdIFBhbGV0dGUiPg0KKyAgPGRyYXdlckNvbmZpZ3VyYXRpb25zDQorICAgICAgaWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuW2JkZHxpYmR8cGFyfHJlcV0ucGFsZXR0ZS5bZWRnZXxub2RlXSINCisgICAgICBsYWJlbD0iU3lzTUwgSUJEIFtFZGdlc3xOb2Rlc10iDQorICAgICAgZGVzY3JpcHRpb249Ik5vZGVzIj4NCisgICAgPG93bmVkQ29uZmlndXJhdGlvbnMNCisgICAgICAgIHhzaTp0eXBlPSJwYWxldHRlY29uZmlndXJhdGlvbjpUb29sQ29uZmlndXJhdGlvbiINCisgICAgICAgIGlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLltiZGR8aWJkfHBhcnxyZXFdLnBhbGV0dGUuW2VkZ2V8bm9kZV0uWFhYWCINCisgICAgICAgIGxhYmVsPSJCbG9jayINCisgICAgICAgIGRlc2NyaXB0aW9uPSJDcmVhdGUgYSBCbG9jayI+DQorICAgICAgPGljb24NCisgICAgICAgICAgcGx1Z2luSUQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwiDQorICAgICAgICAgIGljb25QYXRoPSJpY29ucy9ibG9ja3MvQmxvY2suZ2lmIi8+DQorICAgICAgPGVsZW1lbnREZXNjcmlwdG9ycw0KKyAgICAgICAgICBlbGVtZW50VHlwZUlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuQmxvY2tfMzA4NSIvPg0KKyAgICAgIDxlbGVtZW50RGVzY3JpcHRvcnMNCisgICAgICAgICAgZWxlbWVudFR5cGVJZD0ib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LkJsb2NrXzIwNzMiLz4NCisgICAgPC9vd25lZENvbmZpZ3VyYXRpb25zPg0KKyAgICA8L2RyYXdlckNvbmZpZ3VyYXRpb25zPl1dPg0KKwkJCQk8L3NvdXJjZT4NCisJCQk8L3N1YnNlY3Rpb24+DQorCQk8L3NlY3Rpb24+DQorCQk8c2VjdGlvbiBuYW1lPSJSZWZlcmVuY2VzIj4NCisJCQk8dWw+DQorCQkJCTxsaT48YSBocmVmPSJodHRwOi8vd3d3Lm9tZy5vcmcvc3BlYy9TeXNNTC8iPk9NRyBTeXNNTDwvYT48L2xpPg0KKwkJCTwvdWw+DQorCQk8L3NlY3Rpb24+DQorCTwvYm9keT4NCis8L2RvY3VtZW50PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RpYWdyYW0vb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRpYWdyYW0uY29tbW9uL3NyYy9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvZGlhZ3JhbS9jb21tb24vQWN0aXZhdG9yLmphdmEgYi9kaWFncmFtL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kaWFncmFtLmNvbW1vbi9zcmMvb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L2RpYWdyYW0vY29tbW9uL0FjdGl2YXRvci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjliZTM3YTEKLS0tIC9kZXYvbnVsbAorKysgYi9kaWFncmFtL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kaWFncmFtLmNvbW1vbi9zcmMvb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L2RpYWdyYW0vY29tbW9uL0FjdGl2YXRvci5qYXZhCkBAIC0wLDAgKzEsNjEgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyAqIENvcHlyaWdodCAoYykgMjAxNSBDRUEgTElTVC4NCisgKg0KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCisgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCisgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICoNCisgKiBDb250cmlidXRvcnM6DQorICogIEJlbm9pdCBNYWdnaSAoQ0VBIExJU1QpIGJlbm9pdC5tYWdnaUBjZWEuZnIgLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24NCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorcGFja2FnZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGlhZ3JhbS5jb21tb247DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLnVpLnBsdWdpbi5BYnN0cmFjdFVJUGx1Z2luOw0KK2ltcG9ydCBvcmcub3NnaS5mcmFtZXdvcmsuQnVuZGxlQ29udGV4dDsNCisNCisvKioNCisgKiBUaGUgYWN0aXZhdG9yIGNsYXNzIGNvbnRyb2xzIHRoZSBwbHVnLWluIGxpZmUgY3ljbGUNCisgKi8NCitwdWJsaWMgY2xhc3MgQWN0aXZhdG9yIGV4dGVuZHMgQWJzdHJhY3RVSVBsdWdpbiB7DQorDQorCS8vIFRoZSBwbHVnLWluIElEDQorCXB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFBMVUdJTl9JRCA9ICJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGlhZ3JhbS5jb21tb24iOyAvLyROT04tTkxTLTEkDQorDQorCS8vIFRoZSBzaGFyZWQgaW5zdGFuY2UNCisJcHJpdmF0ZSBzdGF0aWMgQWN0aXZhdG9yIHBsdWdpbjsNCisJDQorCS8qKg0KKwkgKiBUaGUgY29uc3RydWN0b3INCisJICovDQorCXB1YmxpYyBBY3RpdmF0b3IoKSB7DQorCX0NCisNCisJLyoNCisJICogKG5vbi1KYXZhZG9jKQ0KKwkgKiBAc2VlIG9yZy5lY2xpcHNlLnVpLnBsdWdpbi5BYnN0cmFjdFVJUGx1Z2luI3N0YXJ0KG9yZy5vc2dpLmZyYW1ld29yay5CdW5kbGVDb250ZXh0KQ0KKwkgKi8NCisJcHVibGljIHZvaWQgc3RhcnQoQnVuZGxlQ29udGV4dCBjb250ZXh0KSB0aHJvd3MgRXhjZXB0aW9uIHsNCisJCXN1cGVyLnN0YXJ0KGNvbnRleHQpOw0KKwkJcGx1Z2luID0gdGhpczsNCisJfQ0KKw0KKwkvKg0KKwkgKiAobm9uLUphdmFkb2MpDQorCSAqIEBzZWUgb3JnLmVjbGlwc2UudWkucGx1Z2luLkFic3RyYWN0VUlQbHVnaW4jc3RvcChvcmcub3NnaS5mcmFtZXdvcmsuQnVuZGxlQ29udGV4dCkNCisJICovDQorCXB1YmxpYyB2b2lkIHN0b3AoQnVuZGxlQ29udGV4dCBjb250ZXh0KSB0aHJvd3MgRXhjZXB0aW9uIHsNCisJCXBsdWdpbiA9IG51bGw7DQorCQlzdXBlci5zdG9wKGNvbnRleHQpOw0KKwl9DQorDQorCS8qKg0KKwkgKiBSZXR1cm5zIHRoZSBzaGFyZWQgaW5zdGFuY2UNCisJICoNCisJICogQHJldHVybiB0aGUgc2hhcmVkIGluc3RhbmNlDQorCSAqLw0KKwlwdWJsaWMgc3RhdGljIEFjdGl2YXRvciBnZXREZWZhdWx0KCkgew0KKwkJcmV0dXJuIHBsdWdpbjsNCisJfQ0KKw0KK30NCmRpZmYgLS1naXQgYS9kaWFncmFtL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kaWFncmFtLmNvbW1vbi9zcmMvb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L2RpYWdyYW0vY29tbW9uL2FkdmljZXMvQWN0b3JQYXJ0R3JhcGhpY2FsRWRpdEhlbHBlckFkdmljZS5qYXZhIGIvZGlhZ3JhbS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGlhZ3JhbS5jb21tb24vc3JjL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9kaWFncmFtL2NvbW1vbi9hZHZpY2VzL0FjdG9yUGFydEdyYXBoaWNhbEVkaXRIZWxwZXJBZHZpY2UuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYzY2NDExCi0tLSAvZGV2L251bGwKKysrIGIvZGlhZ3JhbS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGlhZ3JhbS5jb21tb24vc3JjL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9kaWFncmFtL2NvbW1vbi9hZHZpY2VzL0FjdG9yUGFydEdyYXBoaWNhbEVkaXRIZWxwZXJBZHZpY2UuamF2YQpAQCAtMCwwICsxLDkyIEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisgKiBDb3B5cmlnaHQgKGMpIDIwMTUgQ0VBIExJU1QuDQorICoNCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQorICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCisgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqDQorICogQ29udHJpYnV0b3JzOg0KKyAqICBCZW5vaXQgTWFnZ2kgKENFQSBMSVNUKSBiZW5vaXQubWFnZ2lAY2VhLmZyIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uDQorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KK3BhY2thZ2Ugb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRpYWdyYW0uY29tbW9uLmFkdmljZXM7DQorDQorDQorDQoraW1wb3J0IGphdmEudXRpbC5IYXNoTWFwOw0KK2ltcG9ydCBqYXZhLnV0aWwuTWFwOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuT3BlcmF0aW9uQ2FuY2VsZWRFeGNlcHRpb247DQoraW1wb3J0IG9yZy5lY2xpcHNlLmdtZi5ydW50aW1lLmNvbW1vbi5jb3JlLmNvbW1hbmQuQ29tcG9zaXRlQ29tbWFuZDsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZ21mLnJ1bnRpbWUuY29tbW9uLmNvcmUuY29tbWFuZC5JQ29tbWFuZDsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZ21mLnJ1bnRpbWUuY29tbW9uLmNvcmUuY29tbWFuZC5VbmV4ZWN1dGFibGVDb21tYW5kOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5nbWYucnVudGltZS5lbWYudHlwZS5jb3JlLmVkaXRoZWxwZXIuQWJzdHJhY3RFZGl0SGVscGVyQWR2aWNlOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5nbWYucnVudGltZS5lbWYudHlwZS5jb3JlLnJlcXVlc3RzLkNvbmZpZ3VyZVJlcXVlc3Q7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmpmYWNlLndpbmRvdy5XaW5kb3c7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kaWFncmFtLmNvbW1vbi5jb21tYW5kLkNvbmZpZ3VyZVBhcnRDb21tYW5kOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGlhZ3JhbS5jb21tb24uZGlhbG9nLkNyZWF0ZU9yU2VsZWN0QWN0b3JQYXJ0VHlwZURpYWxvZzsNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnNlcnZpY2UudHlwZXMuYWR2aWNlLkFjdG9yUGFydEVkaXRIZWxwZXJBZHZpY2U7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnN3dC53aWRnZXRzLkRpc3BsYXk7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnN3dC53aWRnZXRzLlNoZWxsOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS51bWwyLnVtbC5QYWNrYWdlOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS51bWwyLnVtbC5Qcm9wZXJ0eTsNCitpbXBvcnQgb3JnLmVjbGlwc2UudW1sMi51bWwuVHlwZTsNCisNCisNCisvKioNCisgKiBUaGUgaGVscGVyYWR2aWNlIGNsYXNzIHVzZWQgZm9yIEFjdG9yUGFydA0KKyAqDQorICovDQorcHVibGljIGNsYXNzIEFjdG9yUGFydEdyYXBoaWNhbEVkaXRIZWxwZXJBZHZpY2UgZXh0ZW5kcyBBYnN0cmFjdEVkaXRIZWxwZXJBZHZpY2Ugew0KKwkNCisJLyoqDQorCSAqIEBzZWUgb3JnLmVjbGlwc2UuZ21mLnJ1bnRpbWUuZW1mLnR5cGUuY29yZS5lZGl0aGVscGVyLkFic3RyYWN0RWRpdEhlbHBlckFkdmljZSNnZXRCZWZvcmVDb25maWd1cmVDb21tYW5kKG9yZy5lY2xpcHNlLmdtZi5ydW50aW1lLmVtZi50eXBlLmNvcmUucmVxdWVzdHMuQ29uZmlndXJlUmVxdWVzdCkNCisJICoNCisJICogQHBhcmFtIHJlcXVlc3QNCisJICogQHJldHVybg0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXByb3RlY3RlZCBJQ29tbWFuZCBnZXRCZWZvcmVDb25maWd1cmVDb21tYW5kKENvbmZpZ3VyZVJlcXVlc3QgcmVxdWVzdCkgew0KKwkJY29uZmlndXJlUmVxdWVzdChyZXF1ZXN0KTsNCisJCXJldHVybiBzdXBlci5nZXRCZWZvcmVDb25maWd1cmVDb21tYW5kKHJlcXVlc3QpOwkJDQorCX0NCisJDQorCS8qKg0KKwkgKiBAcGFyYW0gcmVxdWVzdA0KKwkgKi8NCisJcHJpdmF0ZSB2b2lkIGNvbmZpZ3VyZVJlcXVlc3QoQ29uZmlndXJlUmVxdWVzdCByZXF1ZXN0KSB7DQorCQlNYXA8U3RyaW5nLCBPYmplY3Q+IG5ld1BhcmFtZXRlcnMgPSBuZXcgSGFzaE1hcDxTdHJpbmcsIE9iamVjdD4oKTsNCisJCQ0KKwkJSUNvbW1hbmQgY29uZmlndXJlQ29tbWFuZCA9IG51bGw7DQorDQorCQlTaGVsbCBzaGVsbCA9IERpc3BsYXkuZ2V0RGVmYXVsdCgpLmdldEFjdGl2ZVNoZWxsKCk7DQorCQkvLyBTdGFydCBkaWFsb2cgdG8gaWRlbnRpZnkgdGhlIG5ldyBwYXJ0IHR5cGUNCisJCVByb3BlcnR5IHBhcnQgPSAoUHJvcGVydHkpIHJlcXVlc3QuZ2V0RWxlbWVudFRvQ29uZmlndXJlKCk7DQorCQlQYWNrYWdlIHBhcnRQa2cgPSBwYXJ0LmdldE5lYXJlc3RQYWNrYWdlKCk7DQorDQorCQkNCisJCUNyZWF0ZU9yU2VsZWN0QWN0b3JQYXJ0VHlwZURpYWxvZyBkaWFsb2cgPSBuZXcgQ3JlYXRlT3JTZWxlY3RBY3RvclBhcnRUeXBlRGlhbG9nKHNoZWxsLCBwYXJ0UGtnKTsNCisJCWRpYWxvZy5vcGVuKCk7DQorCQlpZiAoZGlhbG9nLmdldFJldHVybkNvZGUoKSA9PSBXaW5kb3cuT0spIHsNCisNCisJCQlmaW5hbCBJQ29tbWFuZCB0eXBlQ3JlYXRpb25Db21tYW5kID0gZGlhbG9nLmdldE5ld1R5cGVDcmVhdGVDb21tYW5kKCk7DQorCQkJZmluYWwgVHlwZSBwYXJ0VHlwZSA9IChUeXBlKSBkaWFsb2cuZ2V0RXhpc3RpbmdUeXBlKCk7DQorDQorCQkJLy8gQWJvcnQgaWYgdHlwZSBjcmVhdGlvbiBjb21tYW5kIGV4aXN0cyBidXQgaXMgbm90IGV4ZWN1dGFibGUNCisJCQlpZiAoKHR5cGVDcmVhdGlvbkNvbW1hbmQgIT0gbnVsbCkgJiYgKCF0eXBlQ3JlYXRpb25Db21tYW5kLmNhbkV4ZWN1dGUoKSkpIHsNCisJCQkJY29uZmlndXJlQ29tbWFuZCA9IFVuZXhlY3V0YWJsZUNvbW1hbmQuSU5TVEFOQ0U7DQorCQkJfSBlbHNlIHsNCisJCQkJY29uZmlndXJlQ29tbWFuZCA9IENvbXBvc2l0ZUNvbW1hbmQuY29tcG9zZShjb25maWd1cmVDb21tYW5kLCB0eXBlQ3JlYXRpb25Db21tYW5kKTsNCisJCQl9DQorDQorCQkJLy8gQ3JlYXRlIHRoZSBjb25maWd1cmUgY29tbWFuZCB0aGF0IHdpbGwgc2V0IHRoZSBjb25zdHJhaW50IHByb3BlcnR5IHR5cGUNCisJCQlJQ29tbWFuZCBzZXRUeXBlQ29tbWFuZCA9IG5ldyBDb25maWd1cmVQYXJ0Q29tbWFuZChyZXF1ZXN0LHBhcnRUeXBlLHR5cGVDcmVhdGlvbkNvbW1hbmQpIDsNCisJCQljb25maWd1cmVDb21tYW5kID0gQ29tcG9zaXRlQ29tbWFuZC5jb21wb3NlKGNvbmZpZ3VyZUNvbW1hbmQsIHNldFR5cGVDb21tYW5kKTsNCisJCX0gZWxzZSB7DQorCQkJdGhyb3cgbmV3IE9wZXJhdGlvbkNhbmNlbGVkRXhjZXB0aW9uKCJBY3RvciBwYXJ0IGNyZWF0aW9uIGNhbmNlbGxlZCBieSB1c2VyIik7IC8vJE5PTi1OTFMtMSQNCisJCX0NCisJCQ0KKwkJbmV3UGFyYW1ldGVycy5wdXQoQWN0b3JQYXJ0RWRpdEhlbHBlckFkdmljZS5TRVRfQUNUT1JfSUNPTU1BTkQsIGNvbmZpZ3VyZUNvbW1hbmQpOw0KKwkJcmVxdWVzdC5hZGRQYXJhbWV0ZXJzKG5ld1BhcmFtZXRlcnMpOw0KKwl9DQorfQ0KZGlmZiAtLWdpdCBhL2RpYWdyYW0vb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRpYWdyYW0uY29tbW9uL3NyYy9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvZGlhZ3JhbS9jb21tb24vYWR2aWNlcy9Db25zdHJhaW50UHJvcGVydHlHcmFwaGljYWxFZGl0SGVscGVyQWR2aWNlLmphdmEgYi9kaWFncmFtL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kaWFncmFtLmNvbW1vbi9zcmMvb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L2RpYWdyYW0vY29tbW9uL2FkdmljZXMvQ29uc3RyYWludFByb3BlcnR5R3JhcGhpY2FsRWRpdEhlbHBlckFkdmljZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFkZGVkZjAKLS0tIC9kZXYvbnVsbAorKysgYi9kaWFncmFtL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kaWFncmFtLmNvbW1vbi9zcmMvb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L2RpYWdyYW0vY29tbW9uL2FkdmljZXMvQ29uc3RyYWludFByb3BlcnR5R3JhcGhpY2FsRWRpdEhlbHBlckFkdmljZS5qYXZhCkBAIC0wLDAgKzEsOTIgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyAqIENvcHlyaWdodCAoYykgMjAxNSBDRUEgTElTVC4NCisgKg0KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCisgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCisgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICoNCisgKiBDb250cmlidXRvcnM6DQorICogIEJlbm9pdCBNYWdnaSAoQ0VBIExJU1QpIGJlbm9pdC5tYWdnaUBjZWEuZnIgLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24NCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorcGFja2FnZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGlhZ3JhbS5jb21tb24uYWR2aWNlczsNCisNCisNCisNCitpbXBvcnQgamF2YS51dGlsLkhhc2hNYXA7DQoraW1wb3J0IGphdmEudXRpbC5NYXA7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5PcGVyYXRpb25DYW5jZWxlZEV4Y2VwdGlvbjsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZ21mLnJ1bnRpbWUuY29tbW9uLmNvcmUuY29tbWFuZC5Db21wb3NpdGVDb21tYW5kOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5nbWYucnVudGltZS5jb21tb24uY29yZS5jb21tYW5kLklDb21tYW5kOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5nbWYucnVudGltZS5jb21tb24uY29yZS5jb21tYW5kLlVuZXhlY3V0YWJsZUNvbW1hbmQ7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmdtZi5ydW50aW1lLmVtZi50eXBlLmNvcmUuZWRpdGhlbHBlci5BYnN0cmFjdEVkaXRIZWxwZXJBZHZpY2U7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmdtZi5ydW50aW1lLmVtZi50eXBlLmNvcmUucmVxdWVzdHMuQ29uZmlndXJlUmVxdWVzdDsNCitpbXBvcnQgb3JnLmVjbGlwc2UuamZhY2Uud2luZG93LldpbmRvdzsNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRpYWdyYW0uY29tbW9uLmNvbW1hbmQuQ29uZmlndXJlUGFydENvbW1hbmQ7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kaWFncmFtLmNvbW1vbi5kaWFsb2cuQ3JlYXRlT3JTZWxlY3RDb25zdHJhaW50UHJvcGVydHlUeXBlRGlhbG9nOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuc2VydmljZS50eXBlcy5hZHZpY2UuQ29uc3RyYWludFByb3BlcnR5RWRpdEhlbHBlckFkdmljZTsNCitpbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LndpZGdldHMuRGlzcGxheTsNCitpbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LndpZGdldHMuU2hlbGw7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnVtbDIudW1sLlBhY2thZ2U7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnVtbDIudW1sLlByb3BlcnR5Ow0KK2ltcG9ydCBvcmcuZWNsaXBzZS51bWwyLnVtbC5UeXBlOw0KKw0KKw0KKy8qKg0KKyAqIFRoZSBoZWxwZXJhZHZpY2UgY2xhc3MgdXNlZCBmb3IgQ29uc3RyYWludFByb3BlcnR5R3JhcGhpY2FsDQorICoNCisgKi8NCitwdWJsaWMgY2xhc3MgQ29uc3RyYWludFByb3BlcnR5R3JhcGhpY2FsRWRpdEhlbHBlckFkdmljZSBleHRlbmRzIEFic3RyYWN0RWRpdEhlbHBlckFkdmljZSB7DQorCQ0KKwkvKioNCisJICogQHNlZSBvcmcuZWNsaXBzZS5nbWYucnVudGltZS5lbWYudHlwZS5jb3JlLmVkaXRoZWxwZXIuQWJzdHJhY3RFZGl0SGVscGVyQWR2aWNlI2dldEJlZm9yZUNvbmZpZ3VyZUNvbW1hbmQob3JnLmVjbGlwc2UuZ21mLnJ1bnRpbWUuZW1mLnR5cGUuY29yZS5yZXF1ZXN0cy5Db25maWd1cmVSZXF1ZXN0KQ0KKwkgKg0KKwkgKiBAcGFyYW0gcmVxdWVzdA0KKwkgKiBAcmV0dXJuDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHJvdGVjdGVkIElDb21tYW5kIGdldEJlZm9yZUNvbmZpZ3VyZUNvbW1hbmQoQ29uZmlndXJlUmVxdWVzdCByZXF1ZXN0KSB7DQorCQljb25maWd1cmVSZXF1ZXN0KHJlcXVlc3QpOw0KKwkJcmV0dXJuIHN1cGVyLmdldEJlZm9yZUNvbmZpZ3VyZUNvbW1hbmQocmVxdWVzdCk7CQkNCisJfQ0KKwkNCisJLyoqDQorCSAqIEBwYXJhbSByZXF1ZXN0DQorCSAqLw0KKwlwcml2YXRlIHZvaWQgY29uZmlndXJlUmVxdWVzdChDb25maWd1cmVSZXF1ZXN0IHJlcXVlc3QpIHsNCisJCU1hcDxTdHJpbmcsIE9iamVjdD4gbmV3UGFyYW1ldGVycyA9IG5ldyBIYXNoTWFwPFN0cmluZywgT2JqZWN0PigpOw0KKwkJDQorCQlJQ29tbWFuZCBjb25maWd1cmVDb21tYW5kID0gbnVsbDsNCisNCisJCVNoZWxsIHNoZWxsID0gRGlzcGxheS5nZXREZWZhdWx0KCkuZ2V0QWN0aXZlU2hlbGwoKTsNCisJCS8vIFN0YXJ0IGRpYWxvZyB0byBpZGVudGlmeSB0aGUgbmV3IHBhcnQgdHlwZQ0KKwkJUHJvcGVydHkgcGFydCA9IChQcm9wZXJ0eSkgcmVxdWVzdC5nZXRFbGVtZW50VG9Db25maWd1cmUoKTsNCisJCVBhY2thZ2UgcGFydFBrZyA9IHBhcnQuZ2V0TmVhcmVzdFBhY2thZ2UoKTsNCisNCisJCQ0KKwkJQ3JlYXRlT3JTZWxlY3RDb25zdHJhaW50UHJvcGVydHlUeXBlRGlhbG9nIGRpYWxvZyA9IG5ldyBDcmVhdGVPclNlbGVjdENvbnN0cmFpbnRQcm9wZXJ0eVR5cGVEaWFsb2coc2hlbGwsIHBhcnRQa2cpOw0KKwkJZGlhbG9nLm9wZW4oKTsNCisJCWlmIChkaWFsb2cuZ2V0UmV0dXJuQ29kZSgpID09IFdpbmRvdy5PSykgew0KKw0KKwkJCWZpbmFsIElDb21tYW5kIHR5cGVDcmVhdGlvbkNvbW1hbmQgPSBkaWFsb2cuZ2V0TmV3VHlwZUNyZWF0ZUNvbW1hbmQoKTsNCisJCQlmaW5hbCBUeXBlIHBhcnRUeXBlID0gKFR5cGUpIGRpYWxvZy5nZXRFeGlzdGluZ1R5cGUoKTsNCisNCisJCQkvLyBBYm9ydCBpZiB0eXBlIGNyZWF0aW9uIGNvbW1hbmQgZXhpc3RzIGJ1dCBpcyBub3QgZXhlY3V0YWJsZQ0KKwkJCWlmICgodHlwZUNyZWF0aW9uQ29tbWFuZCAhPSBudWxsKSAmJiAoIXR5cGVDcmVhdGlvbkNvbW1hbmQuY2FuRXhlY3V0ZSgpKSkgew0KKwkJCQljb25maWd1cmVDb21tYW5kID0gVW5leGVjdXRhYmxlQ29tbWFuZC5JTlNUQU5DRTsNCisJCQl9IGVsc2Ugew0KKwkJCQljb25maWd1cmVDb21tYW5kID0gQ29tcG9zaXRlQ29tbWFuZC5jb21wb3NlKGNvbmZpZ3VyZUNvbW1hbmQsIHR5cGVDcmVhdGlvbkNvbW1hbmQpOw0KKwkJCX0NCisNCisJCQkvLyBDcmVhdGUgdGhlIGNvbmZpZ3VyZSBjb21tYW5kIHRoYXQgd2lsbCBzZXQgdGhlIGNvbnN0cmFpbnQgcHJvcGVydHkgdHlwZQ0KKwkJCUlDb21tYW5kIHNldFR5cGVDb21tYW5kID0gbmV3IENvbmZpZ3VyZVBhcnRDb21tYW5kKHJlcXVlc3QscGFydFR5cGUsdHlwZUNyZWF0aW9uQ29tbWFuZCkgOw0KKwkJCWNvbmZpZ3VyZUNvbW1hbmQgPSBDb21wb3NpdGVDb21tYW5kLmNvbXBvc2UoY29uZmlndXJlQ29tbWFuZCwgc2V0VHlwZUNvbW1hbmQpOw0KKwkJfSBlbHNlIHsNCisJCQl0aHJvdyBuZXcgT3BlcmF0aW9uQ2FuY2VsZWRFeGNlcHRpb24oIkNvbnN0cmFpbnQgUHJvcGVydHkgY3JlYXRpb24gY2FuY2VsbGVkIGJ5IHVzZXIiKTsgLy8kTk9OLU5MUy0xJA0KKwkJfQ0KKwkJDQorCQluZXdQYXJhbWV0ZXJzLnB1dChDb25zdHJhaW50UHJvcGVydHlFZGl0SGVscGVyQWR2aWNlLlNFVF9DT05TVFJBSU5UX0lDT01NQU5ELCBjb25maWd1cmVDb21tYW5kKTsNCisJCXJlcXVlc3QuYWRkUGFyYW1ldGVycyhuZXdQYXJhbWV0ZXJzKTsNCisJfQ0KK30NCmRpZmYgLS1naXQgYS9kaWFncmFtL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kaWFncmFtLmNvbW1vbi9zcmMvb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L2RpYWdyYW0vY29tbW9uL2FkdmljZXMvUmVmZXJlbmNlRWRpdEhlbHBlckFkdmljZS5qYXZhIGIvZGlhZ3JhbS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGlhZ3JhbS5jb21tb24vc3JjL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9kaWFncmFtL2NvbW1vbi9hZHZpY2VzL1JlZmVyZW5jZUVkaXRIZWxwZXJBZHZpY2UuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYmUyZWUzCi0tLSAvZGV2L251bGwKKysrIGIvZGlhZ3JhbS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGlhZ3JhbS5jb21tb24vc3JjL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9kaWFncmFtL2NvbW1vbi9hZHZpY2VzL1JlZmVyZW5jZUVkaXRIZWxwZXJBZHZpY2UuamF2YQpAQCAtMCwwICsxLDk0IEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisgKiBDb3B5cmlnaHQgKGMpIDIwMTUgQ0VBIExJU1QuDQorICoNCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQorICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCisgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqDQorICogQ29udHJpYnV0b3JzOg0KKyAqICBCZW5vaXQgTWFnZ2kgKENFQSBMSVNUKSBiZW5vaXQubWFnZ2lAY2VhLmZyIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uDQorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KK3BhY2thZ2Ugb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRpYWdyYW0uY29tbW9uLmFkdmljZXM7DQorDQorDQorDQoraW1wb3J0IGphdmEudXRpbC5IYXNoTWFwOw0KK2ltcG9ydCBqYXZhLnV0aWwuTWFwOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUuT3BlcmF0aW9uQ2FuY2VsZWRFeGNlcHRpb247DQoraW1wb3J0IG9yZy5lY2xpcHNlLmdtZi5ydW50aW1lLmNvbW1vbi5jb3JlLmNvbW1hbmQuQ29tcG9zaXRlQ29tbWFuZDsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZ21mLnJ1bnRpbWUuY29tbW9uLmNvcmUuY29tbWFuZC5JQ29tbWFuZDsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZ21mLnJ1bnRpbWUuY29tbW9uLmNvcmUuY29tbWFuZC5VbmV4ZWN1dGFibGVDb21tYW5kOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5nbWYucnVudGltZS5lbWYudHlwZS5jb3JlLmVkaXRoZWxwZXIuQWJzdHJhY3RFZGl0SGVscGVyQWR2aWNlOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5nbWYucnVudGltZS5lbWYudHlwZS5jb3JlLnJlcXVlc3RzLkNvbmZpZ3VyZVJlcXVlc3Q7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmpmYWNlLndpbmRvdy5XaW5kb3c7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kaWFncmFtLmNvbW1vbi5jb21tYW5kLkNvbmZpZ3VyZVBhcnRDb21tYW5kOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGlhZ3JhbS5jb21tb24uZGlhbG9nLkNyZWF0ZU9yU2VsZWN0QmxvY2tQcm9wZXJ0eVR5cGVEaWFsb2c7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5zZXJ2aWNlLnR5cGVzLmFkdmljZS5BZnRlckNvbmZpZ3VyZUNvbW1hbmRFZGl0SGVscGVyQWR2aWNlOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnVtbC5kaWFncmFtLmNvbW1vbi5kaWFsb2dzLkNyZWF0ZU9yU2VsZWN0VHlwZURpYWxvZzsNCitpbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LndpZGdldHMuRGlzcGxheTsNCitpbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LndpZGdldHMuU2hlbGw7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnVtbDIudW1sLlBhY2thZ2U7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnVtbDIudW1sLlByb3BlcnR5Ow0KK2ltcG9ydCBvcmcuZWNsaXBzZS51bWwyLnVtbC5UeXBlOw0KKw0KKw0KKy8qKg0KKyAqIFRoZSBoZWxwZXJhZHZpY2UgY2xhc3MgdXNlZCBmb3IgUmVmZXJlbmNlDQorICogQWRkIGEgcG9wdXAgdG8gaGVscCByZWZlcmVuY2UgY3JlYXRpb24NCisgKg0KKyAqLw0KK3B1YmxpYyBjbGFzcyBSZWZlcmVuY2VFZGl0SGVscGVyQWR2aWNlIGV4dGVuZHMgQWJzdHJhY3RFZGl0SGVscGVyQWR2aWNlIHsNCisJDQorCS8qKg0KKwkgKiBAc2VlIG9yZy5lY2xpcHNlLmdtZi5ydW50aW1lLmVtZi50eXBlLmNvcmUuZWRpdGhlbHBlci5BYnN0cmFjdEVkaXRIZWxwZXJBZHZpY2UjZ2V0QmVmb3JlQ29uZmlndXJlQ29tbWFuZChvcmcuZWNsaXBzZS5nbWYucnVudGltZS5lbWYudHlwZS5jb3JlLnJlcXVlc3RzLkNvbmZpZ3VyZVJlcXVlc3QpDQorCSAqDQorCSAqIEBwYXJhbSByZXF1ZXN0DQorCSAqIEByZXR1cm4NCisJICovDQorCUBPdmVycmlkZQ0KKwlwcm90ZWN0ZWQgSUNvbW1hbmQgZ2V0QmVmb3JlQ29uZmlndXJlQ29tbWFuZChDb25maWd1cmVSZXF1ZXN0IHJlcXVlc3QpIHsNCisJCWNvbmZpZ3VyZVJlcXVlc3QocmVxdWVzdCk7DQorCQlyZXR1cm4gc3VwZXIuZ2V0QmVmb3JlQ29uZmlndXJlQ29tbWFuZChyZXF1ZXN0KTsJCQ0KKwl9DQorCQ0KKwkvKioNCisJICogQHBhcmFtIHJlcXVlc3QNCisJICovDQorCXByb3RlY3RlZCB2b2lkIGNvbmZpZ3VyZVJlcXVlc3QoQ29uZmlndXJlUmVxdWVzdCByZXF1ZXN0KSB7DQorCQlNYXA8U3RyaW5nLCBPYmplY3Q+IG5ld1BhcmFtZXRlcnMgPSBuZXcgSGFzaE1hcDxTdHJpbmcsIE9iamVjdD4oKTsNCisJCQ0KKwkJSUNvbW1hbmQgY29uZmlndXJlQ29tbWFuZCA9IG51bGw7DQorDQorCQlTaGVsbCBzaGVsbCA9IERpc3BsYXkuZ2V0RGVmYXVsdCgpLmdldEFjdGl2ZVNoZWxsKCk7DQorCQlQcm9wZXJ0eSBwcm9wZXJ0eSA9IChQcm9wZXJ0eSkgcmVxdWVzdC5nZXRFbGVtZW50VG9Db25maWd1cmUoKTsNCisJCVBhY2thZ2Ugb3duZXIgPSBwcm9wZXJ0eS5nZXROZWFyZXN0UGFja2FnZSgpOw0KKw0KKwkJDQorCQlDcmVhdGVPclNlbGVjdFR5cGVEaWFsb2cgZGlhbG9nID0gbmV3IENyZWF0ZU9yU2VsZWN0QmxvY2tQcm9wZXJ0eVR5cGVEaWFsb2coc2hlbGwsIG93bmVyKTsNCisJCQ0KKwkJZGlhbG9nLm9wZW4oKTsNCisJCWlmIChkaWFsb2cuZ2V0UmV0dXJuQ29kZSgpID09IFdpbmRvdy5PSykgew0KKw0KKwkJCWZpbmFsIElDb21tYW5kIHR5cGVDcmVhdGlvbkNvbW1hbmQgPSBkaWFsb2cuZ2V0TmV3VHlwZUNyZWF0ZUNvbW1hbmQoKTsNCisJCQlmaW5hbCBUeXBlIHBhcnRUeXBlID0gKFR5cGUpIGRpYWxvZy5nZXRFeGlzdGluZ1R5cGUoKTsNCisNCisJCQkvLyBBYm9ydCBpZiB0eXBlIGNyZWF0aW9uIGNvbW1hbmQgZXhpc3RzIGJ1dCBpcyBub3QgZXhlY3V0YWJsZQ0KKwkJCWlmICgodHlwZUNyZWF0aW9uQ29tbWFuZCAhPSBudWxsKSAmJiAoIXR5cGVDcmVhdGlvbkNvbW1hbmQuY2FuRXhlY3V0ZSgpKSkgew0KKwkJCQljb25maWd1cmVDb21tYW5kID0gVW5leGVjdXRhYmxlQ29tbWFuZC5JTlNUQU5DRTsNCisJCQl9IGVsc2Ugew0KKwkJCQljb25maWd1cmVDb21tYW5kID0gQ29tcG9zaXRlQ29tbWFuZC5jb21wb3NlKGNvbmZpZ3VyZUNvbW1hbmQsIHR5cGVDcmVhdGlvbkNvbW1hbmQpOw0KKwkJCX0NCisNCisJCQkvLyBDcmVhdGUgdGhlIGNvbmZpZ3VyZSBjb21tYW5kIHRoYXQgd2lsbCBzZXQgdGhlIGNvbnN0cmFpbnQgcHJvcGVydHkgdHlwZQ0KKwkJCUlDb21tYW5kIHNldFR5cGVDb21tYW5kID0gbmV3IENvbmZpZ3VyZVBhcnRDb21tYW5kKHJlcXVlc3QscGFydFR5cGUsdHlwZUNyZWF0aW9uQ29tbWFuZCkgOw0KKwkJCWNvbmZpZ3VyZUNvbW1hbmQgPSBDb21wb3NpdGVDb21tYW5kLmNvbXBvc2UoY29uZmlndXJlQ29tbWFuZCwgc2V0VHlwZUNvbW1hbmQpOw0KKwkJfSBlbHNlIHsNCisJCQl0aHJvdyBuZXcgT3BlcmF0aW9uQ2FuY2VsZWRFeGNlcHRpb24oIlJlZmVyZW5jZSBjcmVhdGlvbiBjYW5jZWxsZWQgYnkgdXNlciIpOyAvLyROT04tTkxTLTEkDQorCQl9DQorCQkNCisJCW5ld1BhcmFtZXRlcnMucHV0KEFmdGVyQ29uZmlndXJlQ29tbWFuZEVkaXRIZWxwZXJBZHZpY2UuQUZURVJfQ09ORklHVVJFX0NPTU1BTkQsIGNvbmZpZ3VyZUNvbW1hbmQpOw0KKwkJcmVxdWVzdC5hZGRQYXJhbWV0ZXJzKG5ld1BhcmFtZXRlcnMpOw0KKwl9DQorfQ0KZGlmZiAtLWdpdCBhL2RpYWdyYW0vb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRpYWdyYW0uY29tbW9uL3NyYy9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvZGlhZ3JhbS9jb21tb24vYWR2aWNlcy9WYWx1ZUVkaXRIZWxwZXJBZHZpY2UuamF2YSBiL2RpYWdyYW0vb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRpYWdyYW0uY29tbW9uL3NyYy9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvZGlhZ3JhbS9jb21tb24vYWR2aWNlcy9WYWx1ZUVkaXRIZWxwZXJBZHZpY2UuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZTkyMzZlCi0tLSAvZGV2L251bGwKKysrIGIvZGlhZ3JhbS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGlhZ3JhbS5jb21tb24vc3JjL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9kaWFncmFtL2NvbW1vbi9hZHZpY2VzL1ZhbHVlRWRpdEhlbHBlckFkdmljZS5qYXZhCkBAIC0wLDAgKzEsOTUgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyAqIENvcHlyaWdodCAoYykgMjAxNSBDRUEgTElTVC4NCisgKg0KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCisgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCisgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICoNCisgKiBDb250cmlidXRvcnM6DQorICogIEJlbm9pdCBNYWdnaSAoQ0VBIExJU1QpIGJlbm9pdC5tYWdnaUBjZWEuZnIgLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24NCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorcGFja2FnZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGlhZ3JhbS5jb21tb24uYWR2aWNlczsNCisNCisNCisNCitpbXBvcnQgamF2YS51dGlsLkhhc2hNYXA7DQoraW1wb3J0IGphdmEudXRpbC5NYXA7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5PcGVyYXRpb25DYW5jZWxlZEV4Y2VwdGlvbjsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZ21mLnJ1bnRpbWUuY29tbW9uLmNvcmUuY29tbWFuZC5Db21wb3NpdGVDb21tYW5kOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5nbWYucnVudGltZS5jb21tb24uY29yZS5jb21tYW5kLklDb21tYW5kOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5nbWYucnVudGltZS5jb21tb24uY29yZS5jb21tYW5kLlVuZXhlY3V0YWJsZUNvbW1hbmQ7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmdtZi5ydW50aW1lLmVtZi50eXBlLmNvcmUuZWRpdGhlbHBlci5BYnN0cmFjdEVkaXRIZWxwZXJBZHZpY2U7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmdtZi5ydW50aW1lLmVtZi50eXBlLmNvcmUucmVxdWVzdHMuQ29uZmlndXJlUmVxdWVzdDsNCitpbXBvcnQgb3JnLmVjbGlwc2UuamZhY2Uud2luZG93LldpbmRvdzsNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRpYWdyYW0uY29tbW9uLmNvbW1hbmQuQ29uZmlndXJlUGFydENvbW1hbmQ7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kaWFncmFtLmNvbW1vbi5kaWFsb2cuQ3JlYXRlT3JTZWxlY3RWYWx1ZVByb3BlcnR5VHlwZURpYWxvZzsNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnNlcnZpY2UudHlwZXMuYWR2aWNlLkFmdGVyQ29uZmlndXJlQ29tbWFuZEVkaXRIZWxwZXJBZHZpY2U7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMudW1sLmRpYWdyYW0uY29tbW9uLmRpYWxvZ3MuQ3JlYXRlT3JTZWxlY3RUeXBlRGlhbG9nOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5zd3Qud2lkZ2V0cy5EaXNwbGF5Ow0KK2ltcG9ydCBvcmcuZWNsaXBzZS5zd3Qud2lkZ2V0cy5TaGVsbDsNCitpbXBvcnQgb3JnLmVjbGlwc2UudW1sMi51bWwuUGFja2FnZTsNCitpbXBvcnQgb3JnLmVjbGlwc2UudW1sMi51bWwuUHJvcGVydHk7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnVtbDIudW1sLlR5cGU7DQorDQorDQorLyoqDQorICogVGhlIGhlbHBlcmFkdmljZSBjbGFzcyB1c2VkIGZvciBWYWx1ZQ0KKyAqIEl0IGNyZWF0ZXMgdGhlIHBvcHVwIHRvIGhlbHAgdGhlIHZhbHVlIGNyZWF0aW9uDQorICoNCisgKi8NCitwdWJsaWMgY2xhc3MgVmFsdWVFZGl0SGVscGVyQWR2aWNlIGV4dGVuZHMgQWJzdHJhY3RFZGl0SGVscGVyQWR2aWNlIHsNCisJDQorCS8qKg0KKwkgKiBAc2VlIG9yZy5lY2xpcHNlLmdtZi5ydW50aW1lLmVtZi50eXBlLmNvcmUuZWRpdGhlbHBlci5BYnN0cmFjdEVkaXRIZWxwZXJBZHZpY2UjZ2V0QmVmb3JlQ29uZmlndXJlQ29tbWFuZChvcmcuZWNsaXBzZS5nbWYucnVudGltZS5lbWYudHlwZS5jb3JlLnJlcXVlc3RzLkNvbmZpZ3VyZVJlcXVlc3QpDQorCSAqDQorCSAqIEBwYXJhbSByZXF1ZXN0DQorCSAqIEByZXR1cm4NCisJICovDQorCUBPdmVycmlkZQ0KKwlwcm90ZWN0ZWQgSUNvbW1hbmQgZ2V0QmVmb3JlQ29uZmlndXJlQ29tbWFuZChDb25maWd1cmVSZXF1ZXN0IHJlcXVlc3QpIHsNCisJCWNvbmZpZ3VyZVJlcXVlc3QocmVxdWVzdCk7DQorCQlyZXR1cm4gc3VwZXIuZ2V0QmVmb3JlQ29uZmlndXJlQ29tbWFuZChyZXF1ZXN0KTsJCQ0KKwl9DQorCQ0KKwkvKioNCisJICogQHBhcmFtIHJlcXVlc3QNCisJICovDQorCXByb3RlY3RlZCB2b2lkIGNvbmZpZ3VyZVJlcXVlc3QoQ29uZmlndXJlUmVxdWVzdCByZXF1ZXN0KSB7DQorCQlNYXA8U3RyaW5nLCBPYmplY3Q+IG5ld1BhcmFtZXRlcnMgPSBuZXcgSGFzaE1hcDxTdHJpbmcsIE9iamVjdD4oKTsNCisJCQ0KKwkJSUNvbW1hbmQgY29uZmlndXJlQ29tbWFuZCA9IG51bGw7DQorDQorCQlTaGVsbCBzaGVsbCA9IERpc3BsYXkuZ2V0RGVmYXVsdCgpLmdldEFjdGl2ZVNoZWxsKCk7DQorCQlQcm9wZXJ0eSBwcm9wZXJ0eSA9IChQcm9wZXJ0eSkgcmVxdWVzdC5nZXRFbGVtZW50VG9Db25maWd1cmUoKTsNCisJCVBhY2thZ2Ugb3duZXIgPSBwcm9wZXJ0eS5nZXROZWFyZXN0UGFja2FnZSgpOw0KKw0KKwkJDQorCQkvL0NyZWF0ZU9yU2VsZWN0VHlwZURpYWxvZyBkaWFsb2cgPSBuZXcgVmFsdWVDcmVhdGVPclNlbGVjdFR5cGVEaWFsb2coc2hlbGwsIHBhcnRQa2cpOw0KKwkJQ3JlYXRlT3JTZWxlY3RUeXBlRGlhbG9nIGRpYWxvZyA9IG5ldyBDcmVhdGVPclNlbGVjdFZhbHVlUHJvcGVydHlUeXBlRGlhbG9nKHNoZWxsLCBvd25lcik7DQorCQkNCisJCWRpYWxvZy5vcGVuKCk7DQorCQlpZiAoZGlhbG9nLmdldFJldHVybkNvZGUoKSA9PSBXaW5kb3cuT0spIHsNCisNCisJCQlmaW5hbCBJQ29tbWFuZCB0eXBlQ3JlYXRpb25Db21tYW5kID0gZGlhbG9nLmdldE5ld1R5cGVDcmVhdGVDb21tYW5kKCk7DQorCQkJZmluYWwgVHlwZSBwYXJ0VHlwZSA9IChUeXBlKSBkaWFsb2cuZ2V0RXhpc3RpbmdUeXBlKCk7DQorDQorCQkJLy8gQWJvcnQgaWYgdHlwZSBjcmVhdGlvbiBjb21tYW5kIGV4aXN0cyBidXQgaXMgbm90IGV4ZWN1dGFibGUNCisJCQlpZiAoKHR5cGVDcmVhdGlvbkNvbW1hbmQgIT0gbnVsbCkgJiYgKCF0eXBlQ3JlYXRpb25Db21tYW5kLmNhbkV4ZWN1dGUoKSkpIHsNCisJCQkJY29uZmlndXJlQ29tbWFuZCA9IFVuZXhlY3V0YWJsZUNvbW1hbmQuSU5TVEFOQ0U7DQorCQkJfSBlbHNlIHsNCisJCQkJY29uZmlndXJlQ29tbWFuZCA9IENvbXBvc2l0ZUNvbW1hbmQuY29tcG9zZShjb25maWd1cmVDb21tYW5kLCB0eXBlQ3JlYXRpb25Db21tYW5kKTsNCisJCQl9DQorDQorCQkJLy8gQ3JlYXRlIHRoZSBjb25maWd1cmUgY29tbWFuZCB0aGF0IHdpbGwgc2V0IHRoZSBjb25zdHJhaW50IHByb3BlcnR5IHR5cGUNCisJCQlJQ29tbWFuZCBzZXRUeXBlQ29tbWFuZCA9IG5ldyBDb25maWd1cmVQYXJ0Q29tbWFuZChyZXF1ZXN0LHBhcnRUeXBlLHR5cGVDcmVhdGlvbkNvbW1hbmQpIDsNCisJCQljb25maWd1cmVDb21tYW5kID0gQ29tcG9zaXRlQ29tbWFuZC5jb21wb3NlKGNvbmZpZ3VyZUNvbW1hbmQsIHNldFR5cGVDb21tYW5kKTsNCisJCX0gZWxzZSB7DQorCQkJdGhyb3cgbmV3IE9wZXJhdGlvbkNhbmNlbGVkRXhjZXB0aW9uKCJWYWx1ZSBjcmVhdGlvbiBjYW5jZWxsZWQgYnkgdXNlciIpOyAvLyROT04tTkxTLTEkDQorCQl9DQorCQkNCisJCW5ld1BhcmFtZXRlcnMucHV0KEFmdGVyQ29uZmlndXJlQ29tbWFuZEVkaXRIZWxwZXJBZHZpY2UuQUZURVJfQ09ORklHVVJFX0NPTU1BTkQsIGNvbmZpZ3VyZUNvbW1hbmQpOw0KKwkJcmVxdWVzdC5hZGRQYXJhbWV0ZXJzKG5ld1BhcmFtZXRlcnMpOw0KKwl9DQorfQ0KZGlmZiAtLWdpdCBhL2RpYWdyYW0vb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRpYWdyYW0uY29tbW9uL3NyYy9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvZGlhZ3JhbS9jb21tb24vY29tbWFuZC9Db25maWd1cmVQYXJ0Q29tbWFuZC5qYXZhIGIvZGlhZ3JhbS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGlhZ3JhbS5jb21tb24vc3JjL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9kaWFncmFtL2NvbW1vbi9jb21tYW5kL0NvbmZpZ3VyZVBhcnRDb21tYW5kLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGVmODc1ZQotLS0gL2Rldi9udWxsCisrKyBiL2RpYWdyYW0vb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRpYWdyYW0uY29tbW9uL3NyYy9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvZGlhZ3JhbS9jb21tb24vY29tbWFuZC9Db25maWd1cmVQYXJ0Q29tbWFuZC5qYXZhCkBAIC0wLDAgKzEsNjIgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyAqIENvcHlyaWdodCAoYykgMjAxNSBDRUEgTElTVCBhbmQgb3RoZXJzLg0KKyAqIA0KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCisgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCisgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICoNCisgKiBDb250cmlidXRvcnM6DQorICogIEJlbm9pdCBNYWdnaSAoQ0VBIExJU1QpIGJlbm9pdC5tYWdnaUBjZWEuZnIgLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24NCisgKiAgIA0KKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCisNCitwYWNrYWdlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kaWFncmFtLmNvbW1vbi5jb21tYW5kOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5jb3JlLmNvbW1hbmRzLkV4ZWN1dGlvbkV4Y2VwdGlvbjsNCitpbXBvcnQgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLklBZGFwdGFibGU7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmNvcmUucnVudGltZS5JUHJvZ3Jlc3NNb25pdG9yOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5nbWYucnVudGltZS5jb21tb24uY29yZS5jb21tYW5kLkNvbW1hbmRSZXN1bHQ7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmdtZi5ydW50aW1lLmNvbW1vbi5jb3JlLmNvbW1hbmQuSUNvbW1hbmQ7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmdtZi5ydW50aW1lLmVtZi50eXBlLmNvcmUuY29tbWFuZHMuQ29uZmlndXJlRWxlbWVudENvbW1hbmQ7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmdtZi5ydW50aW1lLmVtZi50eXBlLmNvcmUucmVxdWVzdHMuQ29uZmlndXJlUmVxdWVzdDsNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5pbmZyYS5zZXJ2aWNlcy5lZGl0LnV0aWxzLkdNRkNvbW1hbmRVdGlsczsNCitpbXBvcnQgb3JnLmVjbGlwc2UudW1sMi51bWwuUHJvcGVydHk7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnVtbDIudW1sLlR5cGU7DQorDQorLyoqDQorICogQ29uZmlndXJlIGEgcGFydCB3aXRoIHRoZSBjcmVhdGVkL3NlbGVjdGVkIHR5cGUNCisgKi8NCitwdWJsaWMgY2xhc3MgQ29uZmlndXJlUGFydENvbW1hbmQgZXh0ZW5kcyBDb25maWd1cmVFbGVtZW50Q29tbWFuZCB7DQorDQorDQorCXByaXZhdGUgVHlwZSBwYXJ0VHlwZTsNCisJcHJpdmF0ZSBJQ29tbWFuZCB0eXBlQ3JlYXRpb25Db21tYW5kOw0KKw0KKw0KKwkvKioNCisJICogQ29uc3RydWN0b3IuDQorCSAqDQorCSAqIEBwYXJhbSByZXF1ZXN0IGNvbmZpZ3VyYXRpb24gcmVxdWVzdA0KKwkgKiBAcGFyYW0gcGFydFR5cGUgdGhlIGZlYXR1cmluZyB0eXBlIG9mIHRoZSBwYXJ0DQorCSAqIEBwYXJhbSB0eXBlQ3JlYXRpb25Db21tYW5kIGlmIG5lZWRlZCBjcmVhdGUgdGhlIHR5cGUNCisJICovDQorCXB1YmxpYyBDb25maWd1cmVQYXJ0Q29tbWFuZChDb25maWd1cmVSZXF1ZXN0IHJlcXVlc3QsIFR5cGUgcGFydFR5cGUsIElDb21tYW5kIHR5cGVDcmVhdGlvbkNvbW1hbmQpIHsNCisJCXN1cGVyKHJlcXVlc3QpOw0KKwkJdGhpcy5wYXJ0VHlwZT0gcGFydFR5cGU7DQorCQl0aGlzLnR5cGVDcmVhdGlvbkNvbW1hbmQgPSB0eXBlQ3JlYXRpb25Db21tYW5kOw0KKwl9DQorDQorCUBPdmVycmlkZQ0KKwlwcm90ZWN0ZWQgQ29tbWFuZFJlc3VsdCBkb0V4ZWN1dGVXaXRoUmVzdWx0KElQcm9ncmVzc01vbml0b3IgbW9uaXRvciwgSUFkYXB0YWJsZSBpbmZvKSB0aHJvd3MgRXhlY3V0aW9uRXhjZXB0aW9uIHsNCisNCisJCVByb3BlcnR5IHBhcnQgPSAoUHJvcGVydHkpIGdldEVsZW1lbnRUb0VkaXQoKTsNCisJCWlmIChwYXJ0VHlwZSAhPSBudWxsKSB7DQorCQkJcGFydC5zZXRUeXBlKHBhcnRUeXBlKTsNCisJCX0gZWxzZSB7DQorCQkJVHlwZSBuZXdUeXBlID0gKFR5cGUpIEdNRkNvbW1hbmRVdGlscy5nZXRDb21tYW5kRU9iamVjdFJlc3VsdCh0eXBlQ3JlYXRpb25Db21tYW5kKTsNCisJCQlwYXJ0LnNldFR5cGUobmV3VHlwZSk7DQorCQl9DQorCQlyZXR1cm4gQ29tbWFuZFJlc3VsdC5uZXdPS0NvbW1hbmRSZXN1bHQocGFydCk7DQorCX0NCit9DQpkaWZmIC0tZ2l0IGEvZGlhZ3JhbS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGlhZ3JhbS5jb21tb24vc3JjL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9kaWFncmFtL2NvbW1vbi9kaWFsb2cvQ3JlYXRlT3JTZWxlY3RBY3RvclBhcnRUeXBlRGlhbG9nLmphdmEgYi9kaWFncmFtL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kaWFncmFtLmNvbW1vbi9zcmMvb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L2RpYWdyYW0vY29tbW9uL2RpYWxvZy9DcmVhdGVPclNlbGVjdEFjdG9yUGFydFR5cGVEaWFsb2cuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iOGQ3ODcyCi0tLSAvZGV2L251bGwKKysrIGIvZGlhZ3JhbS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGlhZ3JhbS5jb21tb24vc3JjL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9kaWFncmFtL2NvbW1vbi9kaWFsb2cvQ3JlYXRlT3JTZWxlY3RBY3RvclBhcnRUeXBlRGlhbG9nLmphdmEKQEAgLTAsMCArMSwzNSBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorICogQ29weXJpZ2h0IChjKSAyMDE1IENFQSBMSVNULg0KKyAqDQorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KKyAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQorICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgKg0KKyAqIENvbnRyaWJ1dG9yczoNCisgKiAgQmVub2l0IE1hZ2dpIChDRUEgTElTVCkgYmVub2l0Lm1hZ2dpQGNlYS5mciAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbg0KKyAqDQorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KK3BhY2thZ2Ugb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRpYWdyYW0uY29tbW9uLmRpYWxvZzsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UuZ21mLnJ1bnRpbWUuZW1mLnR5cGUuY29yZS5FbGVtZW50VHlwZVJlZ2lzdHJ5Ow0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnVtbC5kaWFncmFtLmNvbW1vbi5kaWFsb2dzLkNyZWF0ZU9yU2VsZWN0VHlwZURpYWxvZzsNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy51bWwuc2VydmljZS50eXBlcy5lbGVtZW50LlVNTEVsZW1lbnRUeXBlczsNCitpbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LndpZGdldHMuU2hlbGw7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnVtbDIudW1sLk5hbWVkRWxlbWVudDsNCitpbXBvcnQgb3JnLmVjbGlwc2UudW1sMi51bWwuVU1MUGFja2FnZTsNCisNCisvKioNCisgKiBEaWFsb2cgZm9yIGluaXRpYWxpemF0aW9uIG9mIFBhcnQgKFByb3BlcnR5KSB0eXBlICh0aGUgdHlwZSBpcyBlaXRoZXIgc2VsZWN0ZWQgb3IgY3JlYXRlZCkuDQorICovDQorcHVibGljIGNsYXNzIENyZWF0ZU9yU2VsZWN0QWN0b3JQYXJ0VHlwZURpYWxvZyBleHRlbmRzIENyZWF0ZU9yU2VsZWN0VHlwZURpYWxvZyB7DQorDQorCS8qKiBDb25zdHJ1Y3RvciAqLw0KKwlwdWJsaWMgQ3JlYXRlT3JTZWxlY3RBY3RvclBhcnRUeXBlRGlhbG9nKFNoZWxsIHNoZWxsLCBOYW1lZEVsZW1lbnQgb3duZXIpIHsNCisJCXN1cGVyKHNoZWxsLCBvd25lciwgRWxlbWVudFR5cGVSZWdpc3RyeS5nZXRJbnN0YW5jZSgpLmdldFR5cGUoIm9yZy5lY2xpcHNlLnBhcHlydXMudW1sLkFjdG9yIiksIA0KKwkJCQlVTUxQYWNrYWdlLmVJTlNUQU5DRS5nZXRUeXBlZEVsZW1lbnRfVHlwZSgpLA0KKwkJCQlVTUxQYWNrYWdlLmVJTlNUQU5DRS5nZXRBY3RvcigpLA0KKwkJCQlVTUxFbGVtZW50VHlwZXMuUEFDS0FHRSwNCisJCQkJVU1MUGFja2FnZS5lSU5TVEFOQ0UuZ2V0UGFja2FnZV9QYWNrYWdlZEVsZW1lbnQoKSwgbnVsbCk7DQorCX0NCit9DQpkaWZmIC0tZ2l0IGEvZGlhZ3JhbS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGlhZ3JhbS5jb21tb24vc3JjL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9kaWFncmFtL2NvbW1vbi9kaWFsb2cvQ3JlYXRlT3JTZWxlY3RCbG9ja1Byb3BlcnR5VHlwZURpYWxvZy5qYXZhIGIvZGlhZ3JhbS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGlhZ3JhbS5jb21tb24vc3JjL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9kaWFncmFtL2NvbW1vbi9kaWFsb2cvQ3JlYXRlT3JTZWxlY3RCbG9ja1Byb3BlcnR5VHlwZURpYWxvZy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY5ZjBmYzQKLS0tIC9kZXYvbnVsbAorKysgYi9kaWFncmFtL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kaWFncmFtLmNvbW1vbi9zcmMvb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L2RpYWdyYW0vY29tbW9uL2RpYWxvZy9DcmVhdGVPclNlbGVjdEJsb2NrUHJvcGVydHlUeXBlRGlhbG9nLmphdmEKQEAgLTAsMCArMSw1MyBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorICogQ29weXJpZ2h0IChjKSAyMDExIENFQSBMSVNULg0KKyAqDQorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KKyAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQorICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgKg0KKyAqIENvbnRyaWJ1dG9yczoNCisgKg0KKyAqCQlDRUEgTElTVCAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbg0KKyAqDQorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KK3BhY2thZ2Ugb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRpYWdyYW0uY29tbW9uLmRpYWxvZzsNCisNCitpbXBvcnQgamF2YS51dGlsLkFycmF5czsNCitpbXBvcnQgamF2YS51dGlsLkxpc3Q7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLmdtZi5ydW50aW1lLmVtZi50eXBlLmNvcmUuRWxlbWVudFR5cGVSZWdpc3RyeTsNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmJsb2Nrcy5CbG9ja3NQYWNrYWdlOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuc2VydmljZS50eXBlcy51dGlsLlN5c21sU2VydmljZVR5cGVVdGlsOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnVtbC5kaWFncmFtLmNvbW1vbi5kaWFsb2dzLkNyZWF0ZU9yU2VsZWN0VHlwZURpYWxvZzsNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy51bWwuc2VydmljZS50eXBlcy5lbGVtZW50LlVNTEVsZW1lbnRUeXBlczsNCitpbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LndpZGdldHMuU2hlbGw7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnVtbDIudW1sLk5hbWVkRWxlbWVudDsNCitpbXBvcnQgb3JnLmVjbGlwc2UudW1sMi51bWwuU3RlcmVvdHlwZTsNCitpbXBvcnQgb3JnLmVjbGlwc2UudW1sMi51bWwuVU1MRmFjdG9yeTsNCitpbXBvcnQgb3JnLmVjbGlwc2UudW1sMi51bWwuVU1MUGFja2FnZTsNCisNCisvKioNCisgKiBEaWFsb2cgZm9yIGluaXRpYWxpemF0aW9uIG9mIFBhcnQgKFByb3BlcnR5KSB0eXBlICh0aGUgdHlwZSBpcyBlaXRoZXIgc2VsZWN0ZWQgb3IgY3JlYXRlZCkuDQorICovDQorcHVibGljIGNsYXNzIENyZWF0ZU9yU2VsZWN0QmxvY2tQcm9wZXJ0eVR5cGVEaWFsb2cgZXh0ZW5kcyBDcmVhdGVPclNlbGVjdFR5cGVEaWFsb2cgew0KKw0KKwlwdWJsaWMgQ3JlYXRlT3JTZWxlY3RCbG9ja1Byb3BlcnR5VHlwZURpYWxvZyhTaGVsbCBzaGVsbCwgTmFtZWRFbGVtZW50IG93bmVyKSB7DQorCQlzdXBlcihzaGVsbCwgb3duZXIsIEVsZW1lbnRUeXBlUmVnaXN0cnkuZ2V0SW5zdGFuY2UoKS5nZXRUeXBlKFN5c21sU2VydmljZVR5cGVVdGlsLk9SR19FQ0xJUFNFX1BBUFlSVVNfU1lTTUwxNF9CTE9DSyksIFVNTFBhY2thZ2UuZUlOU1RBTkNFLmdldFR5cGVkRWxlbWVudF9UeXBlKCksIEJsb2Nrc1BhY2thZ2UuZUlOU1RBTkNFLmdldEJsb2NrKCksIFVNTEVsZW1lbnRUeXBlcy5QQUNLQUdFLCBVTUxQYWNrYWdlLmVJTlNUQU5DRS5nZXRQYWNrYWdlX1BhY2thZ2VkRWxlbWVudCgpLCBudWxsLCBnZXRDb25zdHJhaW50QmxvY2tBc1N0ZXJlb3R5cGUoKSk7DQorCX0NCisNCisJLyoqDQorCSAqIElmIHdlIGNyZWF0ZSBhIFBhcnQgdHlwZSBieSBhIENvbnN0cmFpbnRCbG9jaywgdGhpc1BhcnQgd2lsbCBiZWNvbWUgYSBDb25zdHJhaW50UHJvcGVydHkgYW5kIHJlcHJlc2VudGF0aW9uIHdpbGwgaW1tZWRpYXRlbHkgZGlzYXBwZWFyLg0KKwkgKiBTbyB3ZSBmaWx0ZXIgQ29uc3RyYWludEJsb2NrIHR5cGUgPT4gT25seSBzdHJpY3QgQmxvY2sgYXJlIGFsbG93ZWQNCisJICoNCisJICogQHJldHVybg0KKwkgKi8NCisJcHJpdmF0ZSBzdGF0aWMgTGlzdDw/PiBnZXRDb25zdHJhaW50QmxvY2tBc1N0ZXJlb3R5cGUoKSB7DQorCQkvLyBXZSBjcmVhdGUgYSBtb2NrIFN0ZXJlb3R5cGUgdG8gcGFzcyBpbiB0aGUgZ29vZCBjb2RlIHNlY3Rpb24gb2YgU2VtYW50aWNVTUxDb250ZW50UHJvdmlkZXIuaXNDb21wYXRpYmxlTWV0YWNsYXNzIChiYWQgZ2VzdGlvbiBvZiBzdGF0aWMgc3RlcmVvdHlwZXMpDQorCQlTdGVyZW90eXBlIG1vY2tTdGVyZW90eXBlID0gVU1MRmFjdG9yeS5lSU5TVEFOQ0UuY3JlYXRlU3RlcmVvdHlwZSgpOw0KKwkJLy8gV2UgdXNlIHRoaXMgc3RlcmVvdHlwZSB3aXRoIG5hbWVzcGFjZSBpbnN0ZWFkIG9mIENvbnN0cmFpbnRzUGFja2FnZS5lSU5TVEFOQ0UuZ2V0Q29uc3RyYWludEJsb2NrKCkNCisJCW1vY2tTdGVyZW90eXBlLnNldE5hbWUoIlN5c01MOjpDb25zdHJhaW50czo6Q29uc3RyYWludEJsb2NrIik7DQorCQlyZXR1cm4gQXJyYXlzLmFzTGlzdChtb2NrU3RlcmVvdHlwZSk7DQorCX0NCisNCit9DQpkaWZmIC0tZ2l0IGEvZGlhZ3JhbS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGlhZ3JhbS5jb21tb24vc3JjL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9kaWFncmFtL2NvbW1vbi9kaWFsb2cvQ3JlYXRlT3JTZWxlY3RDb25zdHJhaW50UHJvcGVydHlUeXBlRGlhbG9nLmphdmEgYi9kaWFncmFtL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kaWFncmFtLmNvbW1vbi9zcmMvb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L2RpYWdyYW0vY29tbW9uL2RpYWxvZy9DcmVhdGVPclNlbGVjdENvbnN0cmFpbnRQcm9wZXJ0eVR5cGVEaWFsb2cuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZGNiNjIyCi0tLSAvZGV2L251bGwKKysrIGIvZGlhZ3JhbS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGlhZ3JhbS5jb21tb24vc3JjL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9kaWFncmFtL2NvbW1vbi9kaWFsb2cvQ3JlYXRlT3JTZWxlY3RDb25zdHJhaW50UHJvcGVydHlUeXBlRGlhbG9nLmphdmEKQEAgLTAsMCArMSw0MiBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorICogQ29weXJpZ2h0IChjKSAyMDExIENFQSBMSVNULg0KKyAqDQorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KKyAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQorICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgKg0KKyAqIENvbnRyaWJ1dG9yczoNCisgKg0KKyAqCQlDRUEgTElTVCAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbg0KKyAqDQorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KK3BhY2thZ2Ugb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRpYWdyYW0uY29tbW9uLmRpYWxvZzsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UuZ21mLnJ1bnRpbWUuZW1mLnR5cGUuY29yZS5FbGVtZW50VHlwZVJlZ2lzdHJ5Ow0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuY29uc3RyYWludGJsb2Nrcy5Db25zdHJhaW50YmxvY2tzUGFja2FnZTsNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnNlcnZpY2UudHlwZXMudXRpbC5TeXNtbFNlcnZpY2VUeXBlVXRpbDsNCisvL2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuY29uc3RyYWludHMuQ29uc3RyYWludHNQYWNrYWdlOw0KKy8vaW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kaWFncmFtLmNvbW1vbi5tZXNzYWdlcy5NZXNzYWdlczsNCisvL2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuc2VydmljZS50eXBlcy5lbGVtZW50LlN5c01MRWxlbWVudFR5cGVzOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnVtbC5kaWFncmFtLmNvbW1vbi5kaWFsb2dzLkNyZWF0ZU9yU2VsZWN0VHlwZURpYWxvZzsNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy51bWwuc2VydmljZS50eXBlcy5lbGVtZW50LlVNTEVsZW1lbnRUeXBlczsNCitpbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LndpZGdldHMuU2hlbGw7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnVtbDIudW1sLk5hbWVkRWxlbWVudDsNCitpbXBvcnQgb3JnLmVjbGlwc2UudW1sMi51bWwuVU1MUGFja2FnZTsNCisNCisvKioNCisgKiBEaWFsb2cgZm9yIGluaXRpYWxpemF0aW9uIG9mIFBhcnQgKFByb3BlcnR5KSB0eXBlICh0aGUgdHlwZSBpcyBlaXRoZXIgc2VsZWN0ZWQgb3IgY3JlYXRlZCkuDQorICovDQorcHVibGljIGNsYXNzIENyZWF0ZU9yU2VsZWN0Q29uc3RyYWludFByb3BlcnR5VHlwZURpYWxvZyBleHRlbmRzIENyZWF0ZU9yU2VsZWN0VHlwZURpYWxvZyB7DQorDQorCS8qKiBDb25zdHJ1Y3RvciAqLw0KKwlwdWJsaWMgQ3JlYXRlT3JTZWxlY3RDb25zdHJhaW50UHJvcGVydHlUeXBlRGlhbG9nKFNoZWxsIHNoZWxsLCBOYW1lZEVsZW1lbnQgb3duZXIpIHsNCisJCXN1cGVyKHNoZWxsLCBvd25lciwgRWxlbWVudFR5cGVSZWdpc3RyeS5nZXRJbnN0YW5jZSgpLmdldFR5cGUoU3lzbWxTZXJ2aWNlVHlwZVV0aWwuT1JHX0VDTElQU0VfUEFQWVJVU19TWVNNTDE0X0NPTlNUUkFJTlRCTE9DSyksIA0KKwkJCQlVTUxQYWNrYWdlLmVJTlNUQU5DRS5nZXRUeXBlZEVsZW1lbnRfVHlwZSgpLA0KKwkJCQlDb25zdHJhaW50YmxvY2tzUGFja2FnZS5lSU5TVEFOQ0UuZ2V0Q29uc3RyYWludEJsb2NrKCksDQorCQkJCVVNTEVsZW1lbnRUeXBlcy5QQUNLQUdFLA0KKwkJCQlVTUxQYWNrYWdlLmVJTlNUQU5DRS5nZXRQYWNrYWdlX1BhY2thZ2VkRWxlbWVudCgpLCBudWxsKTsNCisJfQ0KKw0KK30NCmRpZmYgLS1naXQgYS9kaWFncmFtL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kaWFncmFtLmNvbW1vbi9zcmMvb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L2RpYWdyYW0vY29tbW9uL2RpYWxvZy9DcmVhdGVPclNlbGVjdFZhbHVlUHJvcGVydHlUeXBlRGlhbG9nLmphdmEgYi9kaWFncmFtL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kaWFncmFtLmNvbW1vbi9zcmMvb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L2RpYWdyYW0vY29tbW9uL2RpYWxvZy9DcmVhdGVPclNlbGVjdFZhbHVlUHJvcGVydHlUeXBlRGlhbG9nLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTc4YjY3OAotLS0gL2Rldi9udWxsCisrKyBiL2RpYWdyYW0vb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRpYWdyYW0uY29tbW9uL3NyYy9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvZGlhZ3JhbS9jb21tb24vZGlhbG9nL0NyZWF0ZU9yU2VsZWN0VmFsdWVQcm9wZXJ0eVR5cGVEaWFsb2cuamF2YQpAQCAtMCwwICsxLDE5MiBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorICogQ29weXJpZ2h0IChjKSAyMDExIENFQSBMSVNULg0KKyAqDQorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KKyAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQorICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgKg0KKyAqIENvbnRyaWJ1dG9yczoNCisgKg0KKyAqCQlDRUEgTElTVCAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbg0KKyAqDQorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KK3BhY2thZ2Ugb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRpYWdyYW0uY29tbW9uLmRpYWxvZzsNCisNCitpbXBvcnQgb3JnLmVjbGlwc2UuZ21mLnJ1bnRpbWUuZGlhZ3JhbS51aS5pbnRlcm5hbC5jb21tYW5kcy5FbGVtZW50VHlwZUxhYmVsUHJvdmlkZXI7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmdtZi5ydW50aW1lLmVtZi50eXBlLmNvcmUuRWxlbWVudFR5cGVSZWdpc3RyeTsNCitpbXBvcnQgb3JnLmVjbGlwc2UuZ21mLnJ1bnRpbWUuZW1mLnR5cGUuY29yZS5JRWxlbWVudFR5cGU7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmdtZi5ydW50aW1lLmVtZi50eXBlLmNvcmUucmVxdWVzdHMuQ3JlYXRlRWxlbWVudFJlcXVlc3Q7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmpmYWNlLnZpZXdlcnMuQ29tYm9WaWV3ZXI7DQoraW1wb3J0IG9yZy5lY2xpcHNlLmpmYWNlLnZpZXdlcnMuSVNlbGVjdGlvbjsNCitpbXBvcnQgb3JnLmVjbGlwc2UuamZhY2Uudmlld2Vycy5TdHJ1Y3R1cmVkU2VsZWN0aW9uOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLmluZnJhLnNlcnZpY2VzLmVkaXQuY29tbWFuZHMuQ29uZmlndXJlRmVhdHVyZUNvbW1hbmRGYWN0b3J5Ow0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLmluZnJhLnNlcnZpY2VzLmVkaXQuY29tbWFuZHMuSUNvbmZpZ3VyZUNvbW1hbmRGYWN0b3J5Ow0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLmluZnJhLnNlcnZpY2VzLmVkaXQuc2VydmljZS5FbGVtZW50RWRpdFNlcnZpY2VVdGlsczsNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5pbmZyYS5zZXJ2aWNlcy5lZGl0LnNlcnZpY2UuSUVsZW1lbnRFZGl0U2VydmljZTsNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmJsb2Nrcy5CbG9ja3NQYWNrYWdlOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuc2VydmljZS50eXBlcy51dGlsLlN5c21sU2VydmljZVR5cGVVdGlsOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnVtbC5kaWFncmFtLmNvbW1vbi5kaWFsb2dzLkNyZWF0ZU9yU2VsZWN0VHlwZURpYWxvZzsNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy51bWwuc2VydmljZS50eXBlcy5lbGVtZW50LlVNTEVsZW1lbnRUeXBlczsNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy51bWwudG9vbHMudXRpbHMuTmFtZWRFbGVtZW50VXRpbDsNCitpbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LlNXVDsNCitpbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LmV2ZW50cy5Nb2RpZnlFdmVudDsNCitpbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LmV2ZW50cy5Nb2RpZnlMaXN0ZW5lcjsNCitpbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LmxheW91dC5HcmlkRGF0YTsNCitpbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LmxheW91dC5HcmlkTGF5b3V0Ow0KK2ltcG9ydCBvcmcuZWNsaXBzZS5zd3Qud2lkZ2V0cy5Db21ibzsNCitpbXBvcnQgb3JnLmVjbGlwc2Uuc3d0LndpZGdldHMuQ29tcG9zaXRlOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5zd3Qud2lkZ2V0cy5TaGVsbDsNCitpbXBvcnQgb3JnLmVjbGlwc2UudWkuZm9ybXMud2lkZ2V0cy5FeHBhbmRhYmxlQ29tcG9zaXRlOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS51aS5mb3Jtcy53aWRnZXRzLkZvcm1Ub29sa2l0Ow0KK2ltcG9ydCBvcmcuZWNsaXBzZS51aS5mb3Jtcy53aWRnZXRzLlNjcm9sbGVkRm9ybTsNCitpbXBvcnQgb3JnLmVjbGlwc2UudWkuZm9ybXMud2lkZ2V0cy5TZWN0aW9uOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS51bWwyLnVtbC5OYW1lZEVsZW1lbnQ7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnVtbDIudW1sLlVNTFBhY2thZ2U7DQorDQorLyoqDQorICogRGlhbG9nIGZvciBpbml0aWFsaXphdGlvbiBvZiBWYWx1ZSAoUHJvcGVydHkpIHR5cGUgKHRoZSB0eXBlIGlzIGVpdGhlciBzZWxlY3RlZCBvciBjcmVhdGVkKS4NCisgKi8NCitwdWJsaWMgY2xhc3MgQ3JlYXRlT3JTZWxlY3RWYWx1ZVByb3BlcnR5VHlwZURpYWxvZyBleHRlbmRzIENyZWF0ZU9yU2VsZWN0VHlwZURpYWxvZyB7DQorDQorCXByb3RlY3RlZCBDb21ib1ZpZXdlciBuZXdUeXBlS2luZENvbWJvVmlld2VyID0gbnVsbDsNCisNCisJcHJvdGVjdGVkIENvbWJvIG5ld1R5cGVLaW5kQ29tYm8gPSBudWxsOw0KKw0KKwlwcm90ZWN0ZWQgSUVsZW1lbnRUeXBlW10gdmFsdWVUeXBlS2luZCA9IHsgVU1MRWxlbWVudFR5cGVzLkRBVEFfVFlQRSwgDQorCQkJRWxlbWVudFR5cGVSZWdpc3RyeS5nZXRJbnN0YW5jZSgpLmdldFR5cGUoU3lzbWxTZXJ2aWNlVHlwZVV0aWwuT1JHX0VDTElQU0VfUEFQWVJVU19TWVNNTDE0X1ZBTFVFVFlQRSksIA0KKwkJCVVNTEVsZW1lbnRUeXBlcy5QUklNSVRJVkVfVFlQRSwgVU1MRWxlbWVudFR5cGVzLkVOVU1FUkFUSU9OIH07DQorDQorCXByb3RlY3RlZCBJRWxlbWVudFR5cGUgbmV3VHlwZUtpbmQgPSBVTUxFbGVtZW50VHlwZXMuREFUQV9UWVBFOw0KKw0KKwkvKiogQ29uc3RydWN0b3IgKi8NCisJcHVibGljIENyZWF0ZU9yU2VsZWN0VmFsdWVQcm9wZXJ0eVR5cGVEaWFsb2coU2hlbGwgc2hlbGwsIE5hbWVkRWxlbWVudCBvd25lcikgew0KKwkJc3VwZXIoc2hlbGwsIG93bmVyLCBVTUxFbGVtZW50VHlwZXMuREFUQV9UWVBFLCBVTUxQYWNrYWdlLmVJTlNUQU5DRS5nZXRUeXBlZEVsZW1lbnRfVHlwZSgpLCBudWxsLCBVTUxFbGVtZW50VHlwZXMuUEFDS0FHRSwgVU1MUGFja2FnZS5lSU5TVEFOQ0UuZ2V0UGFja2FnZV9QYWNrYWdlZEVsZW1lbnQoKSwgbnVsbCk7DQorCX0NCisNCisJLyoqDQorCSAqIHtAaW5oZXJpdERvY30NCisJICovDQorCUBPdmVycmlkZQ0KKwlwcm90ZWN0ZWQgdm9pZCBjcmVhdGVGb3JtQ3JlYXRpb25TZWN0aW9uKENvbXBvc2l0ZSBwUGFyZW50LCBGb3JtVG9vbGtpdCBwVG9vbGtpdCkgew0KKwkJLy8gY3JlYXRlIHRoZSBzZWN0aW9uDQorCQlTdHJpbmcgbFNlY3Rpb25UaXRsZSA9IGdldENyZWF0aW9uU2VjdGlvblRpdGxlKCk7DQorCQlTZWN0aW9uIGxTZWN0aW9uID0gcFRvb2xraXQuY3JlYXRlU2VjdGlvbihwUGFyZW50LCBFeHBhbmRhYmxlQ29tcG9zaXRlLkVYUEFOREVEIHwgRXhwYW5kYWJsZUNvbXBvc2l0ZS5USVRMRV9CQVIpOw0KKwkJbFNlY3Rpb24uc2V0TGF5b3V0RGF0YShuZXcgR3JpZERhdGEoR3JpZERhdGEuRklMTF9IT1JJWk9OVEFMKSk7DQorCQlpZiAobFNlY3Rpb25UaXRsZSAhPSBudWxsKSB7DQorCQkJbFNlY3Rpb24uc2V0VGV4dChsU2VjdGlvblRpdGxlKTsNCisJCX0NCisNCisJCVNjcm9sbGVkRm9ybSBsSW5zaWRlU2Nyb2xsZWRGb3JtID0gcFRvb2xraXQuY3JlYXRlU2Nyb2xsZWRGb3JtKGxTZWN0aW9uKTsNCisJCWxJbnNpZGVTY3JvbGxlZEZvcm0uc2V0RXhwYW5kSG9yaXpvbnRhbCh0cnVlKTsNCisJCWxJbnNpZGVTY3JvbGxlZEZvcm0uc2V0RXhwYW5kVmVydGljYWwodHJ1ZSk7DQorCQlDb21wb3NpdGUgbEJvZHkgPSBsSW5zaWRlU2Nyb2xsZWRGb3JtLmdldEJvZHkoKTsNCisNCisJCUdyaWRMYXlvdXQgbExheW91dCA9IG5ldyBHcmlkTGF5b3V0KCk7DQorCQlsTGF5b3V0Lm51bUNvbHVtbnMgPSAzOw0KKwkJbEJvZHkuc2V0TGF5b3V0KGxMYXlvdXQpOw0KKw0KKwkJLy8gY29udGVudCBvZiB0aGUgc2VjdGlvbg0KKwkJY3JlYXRpb25SYWRpbyA9IHBUb29sa2l0LmNyZWF0ZUJ1dHRvbihsQm9keSwgZ2V0Q3JlYXRpb25TZWN0aW9uUmFkaW9MYWJlbCgpLCBTV1QuUkFESU8pOw0KKwkJY3JlYXRpb25SYWRpby5zZXRMYXlvdXREYXRhKG5ldyBHcmlkRGF0YShTV1QuRklMTCwgU1dULkNFTlRFUiwgdHJ1ZSwgZmFsc2UsIDMsIDEpKTsNCisNCisJCXBUb29sa2l0LmNyZWF0ZUxhYmVsKGxCb2R5LCBnZXROZXdUeXBlTmFtZUxhYmVsKCksIFNXVC5OT05FKTsNCisJCW5ld1R5cGVOYW1lVGV4dCA9IHBUb29sa2l0LmNyZWF0ZVRleHQobEJvZHksICIiLCBTV1QuQk9SREVSKTsNCisJCW5ld1R5cGVOYW1lVGV4dC5zZXRMYXlvdXREYXRhKG5ldyBHcmlkRGF0YShTV1QuRklMTCwgU1dULkNFTlRFUiwgdHJ1ZSwgZmFsc2UsIDIsIDEpKTsNCisJCW5ld1R5cGVOYW1lVGV4dC5zZXRGb2N1cygpOw0KKw0KKwkJLy8gbWFuYWdlIHR5cGUgc2VsZWN0aW9uDQorCQlwVG9vbGtpdC5jcmVhdGVMYWJlbChsQm9keSwgZ2V0TmV3VHlwZUNvbnRhaW5lck5hbWVMYWJlbCgpLCBTV1QuTk9ORSk7DQorCQluZXdUeXBlQ29udGFpbmVyTmFtZVRleHQgPSBwVG9vbGtpdC5jcmVhdGVUZXh0KGxCb2R5LCBsYWJlbFByb3ZpZGVyLmdldFRleHQobmV3VHlwZUNvbnRhaW5lciksIFNXVC5CT1JERVIgfCBTV1QuUkVBRF9PTkxZKTsNCisJCW5ld1R5cGVDb250YWluZXJOYW1lVGV4dC5zZXRMYXlvdXREYXRhKG5ldyBHcmlkRGF0YShHcmlkRGF0YS5GSUxMX0hPUklaT05UQUwpKTsNCisJCW5ld1R5cGVDb250YWluZXJCdXR0b24gPSBwVG9vbGtpdC5jcmVhdGVCdXR0b24obEJvZHksICIuLi4iLCBTV1QuRkxBVCk7DQorCQkvLyBUT0RPIDogZ2V0SW1hZ2UNCisJCS8vIEltYWdlIGltYWdlID0gQWN0aXZhdG9yLmdldERlZmF1bHQoKS5nZXRJbWFnZShjb250YWluZXJUeXBlLmdldEVDbGFzcygpKTsNCisJCS8vIGlmIChjb250YWluZXJFQ2xhc3MgIT0gbnVsbCkgew0KKwkJLy8gaW1hZ2UgPSBBY3RpdmF0b3IuZ2V0RGVmYXVsdCgpLmdldEltYWdlKGNvbnRhaW5lckVDbGFzcyk7DQorCQkvLyB9DQorCQkvLyBJbWFnZSBpbWFnZSA9IG51bGw7DQorCQkvLyBuZXdUeXBlQ29udGFpbmVyQnV0dG9uLnNldEltYWdlKGltYWdlKTsNCisJCW5ld1R5cGVDb250YWluZXJCdXR0b24uc2V0TGF5b3V0RGF0YShuZXcgR3JpZERhdGEoU1dULk5PTkUpKTsNCisNCisJCXBUb29sa2l0LmNyZWF0ZUxhYmVsKGxCb2R5LCAiTmV3IExhYmVsIiwgU1dULk5PTkUpOw0KKwkJbmV3VHlwZUtpbmRDb21ibyA9IG5ldyBDb21ibyhsQm9keSwgU1dULkRST1BfRE9XTiB8IFNXVC5SRUFEX09OTFkpOw0KKwkJbmV3VHlwZUtpbmRDb21ib1ZpZXdlciA9IG5ldyBDb21ib1ZpZXdlcihuZXdUeXBlS2luZENvbWJvKTsNCisJCXBUb29sa2l0LmFkYXB0KG5ld1R5cGVLaW5kQ29tYm8pOw0KKwkJbmV3VHlwZUtpbmRDb21iby5zZXRMYXlvdXREYXRhKG5ldyBHcmlkRGF0YShTV1QuRklMTCwgU1dULkNFTlRFUiwgdHJ1ZSwgZmFsc2UsIDIsIDEpKTsNCisJCW5ld1R5cGVLaW5kQ29tYm9WaWV3ZXIuc2V0TGFiZWxQcm92aWRlcihuZXcgRWxlbWVudFR5cGVMYWJlbFByb3ZpZGVyKCkpOw0KKwkJbmV3VHlwZUtpbmRDb21ib1ZpZXdlci5hZGQodmFsdWVUeXBlS2luZCk7DQorCQluZXdUeXBlS2luZENvbWJvVmlld2VyLnNldFNlbGVjdGlvbihuZXcgU3RydWN0dXJlZFNlbGVjdGlvbih2YWx1ZVR5cGVLaW5kWzBdKSk7DQorDQorCQlsSW5zaWRlU2Nyb2xsZWRGb3JtLnJlZmxvdyh0cnVlKTsNCisJCWxTZWN0aW9uLnNldENsaWVudChsSW5zaWRlU2Nyb2xsZWRGb3JtKTsNCisJfQ0KKw0KKwkvKioNCisJICoge0Bpbmhlcml0RG9jfQ0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXByb3RlY3RlZCB2b2lkIGJ1aWxkTmV3VHlwZUNyZWF0ZUNvbW1hbmQoKSB7DQorCQkvLyBUaGUgbmV3IGVsZW1lbnQgaXMgZXhwZWN0ZWQgdG8gYmUgYSBOYW1lZEVsZW1lbnQuDQorCQlJRWxlbWVudEVkaXRTZXJ2aWNlIGNvbW1hbmRTZXJ2aWNlID0gRWxlbWVudEVkaXRTZXJ2aWNlVXRpbHMuZ2V0Q29tbWFuZFByb3ZpZGVyKG5ld1R5cGVDb250YWluZXIpOw0KKwkJaWYgKGNvbW1hbmRTZXJ2aWNlICE9IG51bGwpIHsNCisJCQlDcmVhdGVFbGVtZW50UmVxdWVzdCBjcmVhdGVUeXBlUmVxdWVzdCA9IG5ldyBDcmVhdGVFbGVtZW50UmVxdWVzdChuZXdUeXBlQ29udGFpbmVyLCBuZXdUeXBlS2luZCk7DQorCQkJY3JlYXRlVHlwZVJlcXVlc3Quc2V0UGFyYW1ldGVyKElDb25maWd1cmVDb21tYW5kRmFjdG9yeS5DT05GSUdVUkVfQ09NTUFORF9GQUNUT1JZX0lELCBuZXcgQ29uZmlndXJlRmVhdHVyZUNvbW1hbmRGYWN0b3J5KFVNTFBhY2thZ2UuZUlOU1RBTkNFLmdldE5hbWVkRWxlbWVudF9OYW1lKCksIG5ld1R5cGVOYW1lVGV4dC5nZXRUZXh0KCkpKTsNCisJCQluZXdUeXBlQ3JlYXRlQ29tbWFuZCA9IGNvbW1hbmRTZXJ2aWNlLmdldEVkaXRDb21tYW5kKGNyZWF0ZVR5cGVSZXF1ZXN0KTsNCisJCX0NCisJfQ0KKw0KKwkvKioNCisJICoge0Bpbmhlcml0RG9jfQ0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXByb3RlY3RlZCB2b2lkIGhvb2tMaXN0ZW5lcnMoKSB7DQorCQlzdXBlci5ob29rTGlzdGVuZXJzKCk7DQorDQorCQkvLyBsaXN0ZW5lciB0byBzZWxlY3QgaW52b2NhdGlvbiB0eXBlDQorCQlNb2RpZnlMaXN0ZW5lciBuZXdUeXBlS2luZExpc3RlbmVyID0gbmV3IE1vZGlmeUxpc3RlbmVyKCkgew0KKw0KKwkJCS8qKg0KKwkJCSAqIEBzZWUgb3JnLmVjbGlwc2Uuc3d0LmV2ZW50cy5Nb2RpZnlMaXN0ZW5lciNtb2RpZnlUZXh0KG9yZy5lY2xpcHNlLnN3dC5ldmVudHMuTW9kaWZ5RXZlbnQpDQorCQkJICovDQorCQkJQE92ZXJyaWRlDQorCQkJcHVibGljIHZvaWQgbW9kaWZ5VGV4dChNb2RpZnlFdmVudCBlKSB7DQorCQkJCUlTZWxlY3Rpb24gc2VsID0gbmV3VHlwZUtpbmRDb21ib1ZpZXdlci5nZXRTZWxlY3Rpb24oKTsNCisJCQkJaWYgKHNlbCBpbnN0YW5jZW9mIFN0cnVjdHVyZWRTZWxlY3Rpb24pIHsNCisJCQkJCU9iamVjdCB0eXBlID0gKChTdHJ1Y3R1cmVkU2VsZWN0aW9uKSBzZWwpLmdldEZpcnN0RWxlbWVudCgpOw0KKwkJCQkJaWYgKHR5cGUgaW5zdGFuY2VvZiBJRWxlbWVudFR5cGUpIHsNCisJCQkJCQluZXdUeXBlS2luZCA9IChJRWxlbWVudFR5cGUpIHR5cGU7DQorCQkJCQl9IGVsc2Ugew0KKwkJCQkJCW5ld1R5cGVLaW5kID0gbnVsbDsNCisJCQkJCX0NCisNCisJCQkJCS8vIHJlc2V0IG5hbWUNCisJCQkJCXNldE5ld1R5cGVOYW1lKG51bGwpOw0KKwkJCQl9DQorCQkJfQ0KKwkJfTsNCisJCW5ld1R5cGVLaW5kQ29tYm8uYWRkTW9kaWZ5TGlzdGVuZXIobmV3VHlwZUtpbmRMaXN0ZW5lcik7DQorCX0NCisNCisJLyoqDQorCSAqIHtAaW5oZXJpdERvY30NCisJICovDQorCUBPdmVycmlkZQ0KKwlwcm90ZWN0ZWQgdm9pZCBzZXROZXdUeXBlTmFtZShTdHJpbmcgdGV4dCkgew0KKwkJU3RyaW5nIG5hbWUgPSB0ZXh0Ow0KKwkJaWYgKHRleHQgPT0gbnVsbCkgew0KKwkJCW5hbWUgPSBOYW1lZEVsZW1lbnRVdGlsLmdldERlZmF1bHROYW1lV2l0aEluY3JlbWVudEZyb21CYXNlKG5ld1R5cGVLaW5kLmdldEVDbGFzcygpLmdldE5hbWUoKSwgbmV3VHlwZUNvbnRhaW5lci5lQ29udGVudHMoKSk7DQorCQkJaWYgKG5ld1R5cGVLaW5kID09IEVsZW1lbnRUeXBlUmVnaXN0cnkuZ2V0SW5zdGFuY2UoKS5nZXRUeXBlKFN5c21sU2VydmljZVR5cGVVdGlsLk9SR19FQ0xJUFNFX1BBUFlSVVNfU1lTTUwxNF9WQUxVRVRZUEUpKSB7DQorCQkJCW5hbWUgPSBOYW1lZEVsZW1lbnRVdGlsLmdldERlZmF1bHROYW1lV2l0aEluY3JlbWVudEZyb21CYXNlKEJsb2Nrc1BhY2thZ2UuZUlOU1RBTkNFLmdldFZhbHVlVHlwZSgpLmdldE5hbWUoKSwgbmV3VHlwZUNvbnRhaW5lci5lQ29udGVudHMoKSk7DQorCQkJfQ0KKwkJCW5ld1R5cGVOYW1lVGV4dC5zZXRUZXh0KG5hbWUpOw0KKw0KKwkJfSBlbHNlIHsNCisJCQluZXdUeXBlTmFtZVRleHQuc2V0VGV4dChuYW1lKTsNCisJCQluZXdUeXBlTmFtZSA9IG5hbWU7DQorCQl9DQorDQorCQl2YWxpZGF0ZU5ld1R5cGVOYW1lKCk7DQorCQlyZWZyZXNoT2tCdXR0b24oKTsNCisJfQ0KK30NCmRpZmYgLS1naXQgYS9kaWFncmFtL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kaWFncmFtLmludGVybmFsYmxvY2svLmNsYXNzcGF0aCBiL2RpYWdyYW0vb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRpYWdyYW0uaW50ZXJuYWxibG9jay8uY2xhc3NwYXRoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhhOGYxNjYKLS0tIC9kZXYvbnVsbAorKysgYi9kaWFncmFtL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kaWFncmFtLmludGVybmFsYmxvY2svLmNsYXNzcGF0aApAQCAtMCwwICsxLDcgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+DQorPGNsYXNzcGF0aD4NCisJPGNsYXNzcGF0aGVudHJ5IGtpbmQ9ImNvbiIgcGF0aD0ib3JnLmVjbGlwc2UuamR0LmxhdW5jaGluZy5KUkVfQ09OVEFJTkVSL29yZy5lY2xpcHNlLmpkdC5pbnRlcm5hbC5kZWJ1Zy51aS5sYXVuY2hlci5TdGFuZGFyZFZNVHlwZS9KYXZhU0UtMS42Ii8+DQorCTxjbGFzc3BhdGhlbnRyeSBraW5kPSJjb24iIHBhdGg9Im9yZy5lY2xpcHNlLnBkZS5jb3JlLnJlcXVpcmVkUGx1Z2lucyIvPg0KKwk8Y2xhc3NwYXRoZW50cnkga2luZD0ic3JjIiBwYXRoPSJzcmMiLz4NCisJPGNsYXNzcGF0aGVudHJ5IGtpbmQ9Im91dHB1dCIgcGF0aD0iYmluIi8+DQorPC9jbGFzc3BhdGg+DQpkaWZmIC0tZ2l0IGEvZGlhZ3JhbS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGlhZ3JhbS5pbnRlcm5hbGJsb2NrLy5wcm9qZWN0IGIvZGlhZ3JhbS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGlhZ3JhbS5pbnRlcm5hbGJsb2NrLy5wcm9qZWN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc1MmYwMzMKLS0tIC9kZXYvbnVsbAorKysgYi9kaWFncmFtL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kaWFncmFtLmludGVybmFsYmxvY2svLnByb2plY3QKQEAgLTAsMCArMSwyOCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4NCis8cHJvamVjdERlc2NyaXB0aW9uPg0KKwk8bmFtZT5vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGlhZ3JhbS5pbnRlcm5hbGJsb2NrPC9uYW1lPg0KKwk8Y29tbWVudD48L2NvbW1lbnQ+DQorCTxwcm9qZWN0cz4NCisJPC9wcm9qZWN0cz4NCisJPGJ1aWxkU3BlYz4NCisJCTxidWlsZENvbW1hbmQ+DQorCQkJPG5hbWU+b3JnLmVjbGlwc2UuamR0LmNvcmUuamF2YWJ1aWxkZXI8L25hbWU+DQorCQkJPGFyZ3VtZW50cz4NCisJCQk8L2FyZ3VtZW50cz4NCisJCTwvYnVpbGRDb21tYW5kPg0KKwkJPGJ1aWxkQ29tbWFuZD4NCisJCQk8bmFtZT5vcmcuZWNsaXBzZS5wZGUuTWFuaWZlc3RCdWlsZGVyPC9uYW1lPg0KKwkJCTxhcmd1bWVudHM+DQorCQkJPC9hcmd1bWVudHM+DQorCQk8L2J1aWxkQ29tbWFuZD4NCisJCTxidWlsZENvbW1hbmQ+DQorCQkJPG5hbWU+b3JnLmVjbGlwc2UucGRlLlNjaGVtYUJ1aWxkZXI8L25hbWU+DQorCQkJPGFyZ3VtZW50cz4NCisJCQk8L2FyZ3VtZW50cz4NCisJCTwvYnVpbGRDb21tYW5kPg0KKwk8L2J1aWxkU3BlYz4NCisJPG5hdHVyZXM+DQorCQk8bmF0dXJlPm9yZy5lY2xpcHNlLnBkZS5QbHVnaW5OYXR1cmU8L25hdHVyZT4NCisJCTxuYXR1cmU+b3JnLmVjbGlwc2UuamR0LmNvcmUuamF2YW5hdHVyZTwvbmF0dXJlPg0KKwk8L25hdHVyZXM+DQorPC9wcm9qZWN0RGVzY3JpcHRpb24+DQpkaWZmIC0tZ2l0IGEvZGlhZ3JhbS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGlhZ3JhbS5pbnRlcm5hbGJsb2NrLy5zZXR0aW5ncy9vcmcuZWNsaXBzZS5qZHQuY29yZS5wcmVmcyBiL2RpYWdyYW0vb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRpYWdyYW0uaW50ZXJuYWxibG9jay8uc2V0dGluZ3Mvb3JnLmVjbGlwc2UuamR0LmNvcmUucHJlZnMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDEwMjQ0ZAotLS0gL2Rldi9udWxsCisrKyBiL2RpYWdyYW0vb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRpYWdyYW0uaW50ZXJuYWxibG9jay8uc2V0dGluZ3Mvb3JnLmVjbGlwc2UuamR0LmNvcmUucHJlZnMKQEAgLTAsMCArMSwyOTEgQEAKK2VjbGlwc2UucHJlZmVyZW5jZXMudmVyc2lvbj0xDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIuY29kZWdlbi5pbmxpbmVKc3JCeXRlY29kZT1lbmFibGVkDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIuY29kZWdlbi50YXJnZXRQbGF0Zm9ybT0xLjYNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5jb21wbGlhbmNlPTEuNg0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0uYXNzZXJ0SWRlbnRpZmllcj1lcnJvcg0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0uZW51bUlkZW50aWZpZXI9ZXJyb3INCitvcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5zb3VyY2U9MS42DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmFsaWduX3R5cGVfbWVtYmVyc19vbl9jb2x1bW5zPWZhbHNlDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmFsaWdubWVudF9mb3JfYXJndW1lbnRzX2luX2FsbG9jYXRpb25fZXhwcmVzc2lvbj0xNg0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5hbGlnbm1lbnRfZm9yX2FyZ3VtZW50c19pbl9hbm5vdGF0aW9uPTANCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuYWxpZ25tZW50X2Zvcl9hcmd1bWVudHNfaW5fZW51bV9jb25zdGFudD0xNg0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5hbGlnbm1lbnRfZm9yX2FyZ3VtZW50c19pbl9leHBsaWNpdF9jb25zdHJ1Y3Rvcl9jYWxsPTE2DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmFsaWdubWVudF9mb3JfYXJndW1lbnRzX2luX21ldGhvZF9pbnZvY2F0aW9uPTE2DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmFsaWdubWVudF9mb3JfYXJndW1lbnRzX2luX3F1YWxpZmllZF9hbGxvY2F0aW9uX2V4cHJlc3Npb249MTYNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuYWxpZ25tZW50X2Zvcl9hc3NpZ25tZW50PTANCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuYWxpZ25tZW50X2Zvcl9iaW5hcnlfZXhwcmVzc2lvbj0xNg0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5hbGlnbm1lbnRfZm9yX2NvbXBhY3RfaWY9MTYNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuYWxpZ25tZW50X2Zvcl9jb25kaXRpb25hbF9leHByZXNzaW9uPTgwDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmFsaWdubWVudF9mb3JfZW51bV9jb25zdGFudHM9MA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5hbGlnbm1lbnRfZm9yX2V4cHJlc3Npb25zX2luX2FycmF5X2luaXRpYWxpemVyPTE2DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmFsaWdubWVudF9mb3JfbWV0aG9kX2RlY2xhcmF0aW9uPTANCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuYWxpZ25tZW50X2Zvcl9tdWx0aXBsZV9maWVsZHM9MTYNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuYWxpZ25tZW50X2Zvcl9wYXJhbWV0ZXJzX2luX2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uPTE2DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmFsaWdubWVudF9mb3JfcGFyYW1ldGVyc19pbl9tZXRob2RfZGVjbGFyYXRpb249MTYNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuYWxpZ25tZW50X2Zvcl9yZXNvdXJjZXNfaW5fdHJ5PTgwDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmFsaWdubWVudF9mb3Jfc2VsZWN0b3JfaW5fbWV0aG9kX2ludm9jYXRpb249MTYNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuYWxpZ25tZW50X2Zvcl9zdXBlcmNsYXNzX2luX3R5cGVfZGVjbGFyYXRpb249MTYNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuYWxpZ25tZW50X2Zvcl9zdXBlcmludGVyZmFjZXNfaW5fZW51bV9kZWNsYXJhdGlvbj0xNg0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5hbGlnbm1lbnRfZm9yX3N1cGVyaW50ZXJmYWNlc19pbl90eXBlX2RlY2xhcmF0aW9uPTE2DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmFsaWdubWVudF9mb3JfdGhyb3dzX2NsYXVzZV9pbl9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbj0xNg0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5hbGlnbm1lbnRfZm9yX3Rocm93c19jbGF1c2VfaW5fbWV0aG9kX2RlY2xhcmF0aW9uPTE2DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmFsaWdubWVudF9mb3JfdW5pb25fdHlwZV9pbl9tdWx0aWNhdGNoPTE2DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmJsYW5rX2xpbmVzX2FmdGVyX2ltcG9ydHM9MQ0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5ibGFua19saW5lc19hZnRlcl9wYWNrYWdlPTENCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuYmxhbmtfbGluZXNfYmVmb3JlX2ZpZWxkPTANCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuYmxhbmtfbGluZXNfYmVmb3JlX2ZpcnN0X2NsYXNzX2JvZHlfZGVjbGFyYXRpb249MA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5ibGFua19saW5lc19iZWZvcmVfaW1wb3J0cz0xDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmJsYW5rX2xpbmVzX2JlZm9yZV9tZW1iZXJfdHlwZT0xDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmJsYW5rX2xpbmVzX2JlZm9yZV9tZXRob2Q9MQ0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5ibGFua19saW5lc19iZWZvcmVfbmV3X2NodW5rPTENCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuYmxhbmtfbGluZXNfYmVmb3JlX3BhY2thZ2U9MA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5ibGFua19saW5lc19iZXR3ZWVuX2ltcG9ydF9ncm91cHM9MQ0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5ibGFua19saW5lc19iZXR3ZWVuX3R5cGVfZGVjbGFyYXRpb25zPTENCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuYnJhY2VfcG9zaXRpb25fZm9yX2Fubm90YXRpb25fdHlwZV9kZWNsYXJhdGlvbj1lbmRfb2ZfbGluZQ0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5icmFjZV9wb3NpdGlvbl9mb3JfYW5vbnltb3VzX3R5cGVfZGVjbGFyYXRpb249ZW5kX29mX2xpbmUNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuYnJhY2VfcG9zaXRpb25fZm9yX2FycmF5X2luaXRpYWxpemVyPWVuZF9vZl9saW5lDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmJyYWNlX3Bvc2l0aW9uX2Zvcl9ibG9jaz1lbmRfb2ZfbGluZQ0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5icmFjZV9wb3NpdGlvbl9mb3JfYmxvY2tfaW5fY2FzZT1lbmRfb2ZfbGluZQ0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5icmFjZV9wb3NpdGlvbl9mb3JfY29uc3RydWN0b3JfZGVjbGFyYXRpb249ZW5kX29mX2xpbmUNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuYnJhY2VfcG9zaXRpb25fZm9yX2VudW1fY29uc3RhbnQ9ZW5kX29mX2xpbmUNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuYnJhY2VfcG9zaXRpb25fZm9yX2VudW1fZGVjbGFyYXRpb249ZW5kX29mX2xpbmUNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuYnJhY2VfcG9zaXRpb25fZm9yX2xhbWJkYV9ib2R5PWVuZF9vZl9saW5lDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmJyYWNlX3Bvc2l0aW9uX2Zvcl9tZXRob2RfZGVjbGFyYXRpb249ZW5kX29mX2xpbmUNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuYnJhY2VfcG9zaXRpb25fZm9yX3N3aXRjaD1lbmRfb2ZfbGluZQ0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5icmFjZV9wb3NpdGlvbl9mb3JfdHlwZV9kZWNsYXJhdGlvbj1lbmRfb2ZfbGluZQ0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5jb21tZW50LmNsZWFyX2JsYW5rX2xpbmVzX2luX2Jsb2NrX2NvbW1lbnQ9ZmFsc2UNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuY29tbWVudC5jbGVhcl9ibGFua19saW5lc19pbl9qYXZhZG9jX2NvbW1lbnQ9ZmFsc2UNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuY29tbWVudC5mb3JtYXRfYmxvY2tfY29tbWVudHM9dHJ1ZQ0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5jb21tZW50LmZvcm1hdF9oZWFkZXI9ZmFsc2UNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuY29tbWVudC5mb3JtYXRfaHRtbD10cnVlDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmNvbW1lbnQuZm9ybWF0X2phdmFkb2NfY29tbWVudHM9dHJ1ZQ0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5jb21tZW50LmZvcm1hdF9saW5lX2NvbW1lbnRzPXRydWUNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuY29tbWVudC5mb3JtYXRfc291cmNlX2NvZGU9dHJ1ZQ0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5jb21tZW50LmluZGVudF9wYXJhbWV0ZXJfZGVzY3JpcHRpb249dHJ1ZQ0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5jb21tZW50LmluZGVudF9yb290X3RhZ3M9dHJ1ZQ0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5jb21tZW50Lmluc2VydF9uZXdfbGluZV9iZWZvcmVfcm9vdF90YWdzPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5jb21tZW50Lmluc2VydF9uZXdfbGluZV9mb3JfcGFyYW1ldGVyPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5jb21tZW50LmxpbmVfbGVuZ3RoPTI2MA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5jb21tZW50Lm5ld19saW5lc19hdF9ibG9ja19ib3VuZGFyaWVzPXRydWUNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuY29tbWVudC5uZXdfbGluZXNfYXRfamF2YWRvY19ib3VuZGFyaWVzPXRydWUNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuY29tbWVudC5wcmVzZXJ2ZV93aGl0ZV9zcGFjZV9iZXR3ZWVuX2NvZGVfYW5kX2xpbmVfY29tbWVudHM9ZmFsc2UNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuY29tcGFjdF9lbHNlX2lmPXRydWUNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuY29udGludWF0aW9uX2luZGVudGF0aW9uPTINCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuY29udGludWF0aW9uX2luZGVudGF0aW9uX2Zvcl9hcnJheV9pbml0aWFsaXplcj0yDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmRpc2FibGluZ190YWc9QGZvcm1hdHRlclw6b2ZmDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmVuYWJsaW5nX3RhZz1AZm9ybWF0dGVyXDpvbg0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5mb3JtYXRfZ3VhcmRpYW5fY2xhdXNlX29uX29uZV9saW5lPWZhbHNlDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmZvcm1hdF9saW5lX2NvbW1lbnRfc3RhcnRpbmdfb25fZmlyc3RfY29sdW1uPXRydWUNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5kZW50X2JvZHlfZGVjbGFyYXRpb25zX2NvbXBhcmVfdG9fYW5ub3RhdGlvbl9kZWNsYXJhdGlvbl9oZWFkZXI9dHJ1ZQ0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbmRlbnRfYm9keV9kZWNsYXJhdGlvbnNfY29tcGFyZV90b19lbnVtX2NvbnN0YW50X2hlYWRlcj10cnVlDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluZGVudF9ib2R5X2RlY2xhcmF0aW9uc19jb21wYXJlX3RvX2VudW1fZGVjbGFyYXRpb25faGVhZGVyPXRydWUNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5kZW50X2JvZHlfZGVjbGFyYXRpb25zX2NvbXBhcmVfdG9fdHlwZV9oZWFkZXI9dHJ1ZQ0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbmRlbnRfYnJlYWtzX2NvbXBhcmVfdG9fY2FzZXM9dHJ1ZQ0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbmRlbnRfZW1wdHlfbGluZXM9ZmFsc2UNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5kZW50X3N0YXRlbWVudHNfY29tcGFyZV90b19ibG9jaz10cnVlDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluZGVudF9zdGF0ZW1lbnRzX2NvbXBhcmVfdG9fYm9keT10cnVlDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluZGVudF9zd2l0Y2hzdGF0ZW1lbnRzX2NvbXBhcmVfdG9fY2FzZXM9dHJ1ZQ0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbmRlbnRfc3dpdGNoc3RhdGVtZW50c19jb21wYXJlX3RvX3N3aXRjaD1mYWxzZQ0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbmRlbnRhdGlvbi5zaXplPTQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X25ld19saW5lX2FmdGVyX2Fubm90YXRpb25fb25fZmllbGQ9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9uZXdfbGluZV9hZnRlcl9hbm5vdGF0aW9uX29uX2xvY2FsX3ZhcmlhYmxlPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfbmV3X2xpbmVfYWZ0ZXJfYW5ub3RhdGlvbl9vbl9tZXRob2Q9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9uZXdfbGluZV9hZnRlcl9hbm5vdGF0aW9uX29uX3BhY2thZ2U9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9uZXdfbGluZV9hZnRlcl9hbm5vdGF0aW9uX29uX3BhcmFtZXRlcj1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9uZXdfbGluZV9hZnRlcl9hbm5vdGF0aW9uX29uX3R5cGU9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9uZXdfbGluZV9hZnRlcl9sYWJlbD1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9uZXdfbGluZV9hZnRlcl9vcGVuaW5nX2JyYWNlX2luX2FycmF5X2luaXRpYWxpemVyPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X25ld19saW5lX2FmdGVyX3R5cGVfYW5ub3RhdGlvbj1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9uZXdfbGluZV9hdF9lbmRfb2ZfZmlsZV9pZl9taXNzaW5nPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X25ld19saW5lX2JlZm9yZV9jYXRjaF9pbl90cnlfc3RhdGVtZW50PWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X25ld19saW5lX2JlZm9yZV9jbG9zaW5nX2JyYWNlX2luX2FycmF5X2luaXRpYWxpemVyPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X25ld19saW5lX2JlZm9yZV9lbHNlX2luX2lmX3N0YXRlbWVudD1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9uZXdfbGluZV9iZWZvcmVfZmluYWxseV9pbl90cnlfc3RhdGVtZW50PWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X25ld19saW5lX2JlZm9yZV93aGlsZV9pbl9kb19zdGF0ZW1lbnQ9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfbmV3X2xpbmVfaW5fZW1wdHlfYW5ub3RhdGlvbl9kZWNsYXJhdGlvbj1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X25ld19saW5lX2luX2VtcHR5X2Fub255bW91c190eXBlX2RlY2xhcmF0aW9uPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfbmV3X2xpbmVfaW5fZW1wdHlfYmxvY2s9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9uZXdfbGluZV9pbl9lbXB0eV9lbnVtX2NvbnN0YW50PWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfbmV3X2xpbmVfaW5fZW1wdHlfZW51bV9kZWNsYXJhdGlvbj1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X25ld19saW5lX2luX2VtcHR5X21ldGhvZF9ib2R5PWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfbmV3X2xpbmVfaW5fZW1wdHlfdHlwZV9kZWNsYXJhdGlvbj1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX2FuZF9pbl90eXBlX3BhcmFtZXRlcj1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX2Fzc2lnbm1lbnRfb3BlcmF0b3I9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9hdF9pbl9hbm5vdGF0aW9uPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX2F0X2luX2Fubm90YXRpb25fdHlwZV9kZWNsYXJhdGlvbj1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9iaW5hcnlfb3BlcmF0b3I9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9jbG9zaW5nX2FuZ2xlX2JyYWNrZXRfaW5fdHlwZV9hcmd1bWVudHM9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9jbG9zaW5nX2FuZ2xlX2JyYWNrZXRfaW5fdHlwZV9wYXJhbWV0ZXJzPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfY2xvc2luZ19icmFjZV9pbl9ibG9jaz1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX2Nsb3NpbmdfcGFyZW5faW5fY2FzdD1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX2NvbG9uX2luX2Fzc2VydD1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX2NvbG9uX2luX2Nhc2U9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9jb2xvbl9pbl9jb25kaXRpb25hbD1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX2NvbG9uX2luX2Zvcj1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX2NvbG9uX2luX2xhYmVsZWRfc3RhdGVtZW50PWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfY29tbWFfaW5fYWxsb2NhdGlvbl9leHByZXNzaW9uPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfY29tbWFfaW5fYW5ub3RhdGlvbj1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX2NvbW1hX2luX2FycmF5X2luaXRpYWxpemVyPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfY29tbWFfaW5fY29uc3RydWN0b3JfZGVjbGFyYXRpb25fcGFyYW1ldGVycz1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX2NvbW1hX2luX2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uX3Rocm93cz1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX2NvbW1hX2luX2VudW1fY29uc3RhbnRfYXJndW1lbnRzPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfY29tbWFfaW5fZW51bV9kZWNsYXJhdGlvbnM9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9jb21tYV9pbl9leHBsaWNpdGNvbnN0cnVjdG9yY2FsbF9hcmd1bWVudHM9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9jb21tYV9pbl9mb3JfaW5jcmVtZW50cz1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX2NvbW1hX2luX2Zvcl9pbml0cz1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX2NvbW1hX2luX21ldGhvZF9kZWNsYXJhdGlvbl9wYXJhbWV0ZXJzPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfY29tbWFfaW5fbWV0aG9kX2RlY2xhcmF0aW9uX3Rocm93cz1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX2NvbW1hX2luX21ldGhvZF9pbnZvY2F0aW9uX2FyZ3VtZW50cz1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX2NvbW1hX2luX211bHRpcGxlX2ZpZWxkX2RlY2xhcmF0aW9ucz1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX2NvbW1hX2luX211bHRpcGxlX2xvY2FsX2RlY2xhcmF0aW9ucz1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX2NvbW1hX2luX3BhcmFtZXRlcml6ZWRfdHlwZV9yZWZlcmVuY2U9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9jb21tYV9pbl9zdXBlcmludGVyZmFjZXM9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9jb21tYV9pbl90eXBlX2FyZ3VtZW50cz1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX2NvbW1hX2luX3R5cGVfcGFyYW1ldGVycz1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX2VsbGlwc2lzPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfbGFtYmRhX2Fycm93PWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfb3BlbmluZ19hbmdsZV9icmFja2V0X2luX3BhcmFtZXRlcml6ZWRfdHlwZV9yZWZlcmVuY2U9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfb3BlbmluZ19hbmdsZV9icmFja2V0X2luX3R5cGVfYXJndW1lbnRzPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX29wZW5pbmdfYW5nbGVfYnJhY2tldF9pbl90eXBlX3BhcmFtZXRlcnM9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfb3BlbmluZ19icmFjZV9pbl9hcnJheV9pbml0aWFsaXplcj1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX29wZW5pbmdfYnJhY2tldF9pbl9hcnJheV9hbGxvY2F0aW9uX2V4cHJlc3Npb249ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfb3BlbmluZ19icmFja2V0X2luX2FycmF5X3JlZmVyZW5jZT1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9vcGVuaW5nX3BhcmVuX2luX2Fubm90YXRpb249ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfb3BlbmluZ19wYXJlbl9pbl9jYXN0PWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX29wZW5pbmdfcGFyZW5faW5fY2F0Y2g9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfb3BlbmluZ19wYXJlbl9pbl9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbj1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9vcGVuaW5nX3BhcmVuX2luX2VudW1fY29uc3RhbnQ9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfb3BlbmluZ19wYXJlbl9pbl9mb3I9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfb3BlbmluZ19wYXJlbl9pbl9pZj1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9vcGVuaW5nX3BhcmVuX2luX21ldGhvZF9kZWNsYXJhdGlvbj1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9vcGVuaW5nX3BhcmVuX2luX21ldGhvZF9pbnZvY2F0aW9uPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX29wZW5pbmdfcGFyZW5faW5fcGFyZW50aGVzaXplZF9leHByZXNzaW9uPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX29wZW5pbmdfcGFyZW5faW5fc3dpdGNoPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX29wZW5pbmdfcGFyZW5faW5fc3luY2hyb25pemVkPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX29wZW5pbmdfcGFyZW5faW5fdHJ5PWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX29wZW5pbmdfcGFyZW5faW5fd2hpbGU9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfcG9zdGZpeF9vcGVyYXRvcj1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9wcmVmaXhfb3BlcmF0b3I9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfcXVlc3Rpb25faW5fY29uZGl0aW9uYWw9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9xdWVzdGlvbl9pbl93aWxkY2FyZD1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9zZW1pY29sb25faW5fZm9yPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfc2VtaWNvbG9uX2luX3RyeV9yZXNvdXJjZXM9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl91bmFyeV9vcGVyYXRvcj1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfYW5kX2luX3R5cGVfcGFyYW1ldGVyPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2Fzc2lnbm1lbnRfb3BlcmF0b3I9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfYXRfaW5fYW5ub3RhdGlvbl90eXBlX2RlY2xhcmF0aW9uPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2JpbmFyeV9vcGVyYXRvcj1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9jbG9zaW5nX2FuZ2xlX2JyYWNrZXRfaW5fcGFyYW1ldGVyaXplZF90eXBlX3JlZmVyZW5jZT1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfY2xvc2luZ19hbmdsZV9icmFja2V0X2luX3R5cGVfYXJndW1lbnRzPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9jbG9zaW5nX2FuZ2xlX2JyYWNrZXRfaW5fdHlwZV9wYXJhbWV0ZXJzPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9jbG9zaW5nX2JyYWNlX2luX2FycmF5X2luaXRpYWxpemVyPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2Nsb3NpbmdfYnJhY2tldF9pbl9hcnJheV9hbGxvY2F0aW9uX2V4cHJlc3Npb249ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2Nsb3NpbmdfYnJhY2tldF9pbl9hcnJheV9yZWZlcmVuY2U9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2Nsb3NpbmdfcGFyZW5faW5fYW5ub3RhdGlvbj1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfY2xvc2luZ19wYXJlbl9pbl9jYXN0PWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9jbG9zaW5nX3BhcmVuX2luX2NhdGNoPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9jbG9zaW5nX3BhcmVuX2luX2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9jbG9zaW5nX3BhcmVuX2luX2VudW1fY29uc3RhbnQ9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2Nsb3NpbmdfcGFyZW5faW5fZm9yPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9jbG9zaW5nX3BhcmVuX2luX2lmPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9jbG9zaW5nX3BhcmVuX2luX21ldGhvZF9kZWNsYXJhdGlvbj1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfY2xvc2luZ19wYXJlbl9pbl9tZXRob2RfaW52b2NhdGlvbj1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfY2xvc2luZ19wYXJlbl9pbl9wYXJlbnRoZXNpemVkX2V4cHJlc3Npb249ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2Nsb3NpbmdfcGFyZW5faW5fc3dpdGNoPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9jbG9zaW5nX3BhcmVuX2luX3N5bmNocm9uaXplZD1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfY2xvc2luZ19wYXJlbl9pbl90cnk9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2Nsb3NpbmdfcGFyZW5faW5fd2hpbGU9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2NvbG9uX2luX2Fzc2VydD1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9jb2xvbl9pbl9jYXNlPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9jb2xvbl9pbl9jb25kaXRpb25hbD1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9jb2xvbl9pbl9kZWZhdWx0PWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9jb2xvbl9pbl9mb3I9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfY29sb25faW5fbGFiZWxlZF9zdGF0ZW1lbnQ9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2NvbW1hX2luX2FsbG9jYXRpb25fZXhwcmVzc2lvbj1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfY29tbWFfaW5fYW5ub3RhdGlvbj1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfY29tbWFfaW5fYXJyYXlfaW5pdGlhbGl6ZXI9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2NvbW1hX2luX2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uX3BhcmFtZXRlcnM9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2NvbW1hX2luX2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uX3Rocm93cz1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfY29tbWFfaW5fZW51bV9jb25zdGFudF9hcmd1bWVudHM9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2NvbW1hX2luX2VudW1fZGVjbGFyYXRpb25zPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9jb21tYV9pbl9leHBsaWNpdGNvbnN0cnVjdG9yY2FsbF9hcmd1bWVudHM9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2NvbW1hX2luX2Zvcl9pbmNyZW1lbnRzPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9jb21tYV9pbl9mb3JfaW5pdHM9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2NvbW1hX2luX21ldGhvZF9kZWNsYXJhdGlvbl9wYXJhbWV0ZXJzPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9jb21tYV9pbl9tZXRob2RfZGVjbGFyYXRpb25fdGhyb3dzPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9jb21tYV9pbl9tZXRob2RfaW52b2NhdGlvbl9hcmd1bWVudHM9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2NvbW1hX2luX211bHRpcGxlX2ZpZWxkX2RlY2xhcmF0aW9ucz1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfY29tbWFfaW5fbXVsdGlwbGVfbG9jYWxfZGVjbGFyYXRpb25zPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9jb21tYV9pbl9wYXJhbWV0ZXJpemVkX3R5cGVfcmVmZXJlbmNlPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9jb21tYV9pbl9zdXBlcmludGVyZmFjZXM9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2NvbW1hX2luX3R5cGVfYXJndW1lbnRzPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9jb21tYV9pbl90eXBlX3BhcmFtZXRlcnM9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2VsbGlwc2lzPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9sYW1iZGFfYXJyb3c9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfb3BlbmluZ19hbmdsZV9icmFja2V0X2luX3BhcmFtZXRlcml6ZWRfdHlwZV9yZWZlcmVuY2U9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX29wZW5pbmdfYW5nbGVfYnJhY2tldF9pbl90eXBlX2FyZ3VtZW50cz1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfb3BlbmluZ19hbmdsZV9icmFja2V0X2luX3R5cGVfcGFyYW1ldGVycz1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfb3BlbmluZ19icmFjZV9pbl9hbm5vdGF0aW9uX3R5cGVfZGVjbGFyYXRpb249aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfb3BlbmluZ19icmFjZV9pbl9hbm9ueW1vdXNfdHlwZV9kZWNsYXJhdGlvbj1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9vcGVuaW5nX2JyYWNlX2luX2FycmF5X2luaXRpYWxpemVyPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX29wZW5pbmdfYnJhY2VfaW5fYmxvY2s9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfb3BlbmluZ19icmFjZV9pbl9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbj1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9vcGVuaW5nX2JyYWNlX2luX2VudW1fY29uc3RhbnQ9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfb3BlbmluZ19icmFjZV9pbl9lbnVtX2RlY2xhcmF0aW9uPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX29wZW5pbmdfYnJhY2VfaW5fbWV0aG9kX2RlY2xhcmF0aW9uPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX29wZW5pbmdfYnJhY2VfaW5fc3dpdGNoPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX29wZW5pbmdfYnJhY2VfaW5fdHlwZV9kZWNsYXJhdGlvbj1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9vcGVuaW5nX2JyYWNrZXRfaW5fYXJyYXlfYWxsb2NhdGlvbl9leHByZXNzaW9uPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9vcGVuaW5nX2JyYWNrZXRfaW5fYXJyYXlfcmVmZXJlbmNlPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9vcGVuaW5nX2JyYWNrZXRfaW5fYXJyYXlfdHlwZV9yZWZlcmVuY2U9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX29wZW5pbmdfcGFyZW5faW5fYW5ub3RhdGlvbj1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfb3BlbmluZ19wYXJlbl9pbl9hbm5vdGF0aW9uX3R5cGVfbWVtYmVyX2RlY2xhcmF0aW9uPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9vcGVuaW5nX3BhcmVuX2luX2NhdGNoPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX29wZW5pbmdfcGFyZW5faW5fY29uc3RydWN0b3JfZGVjbGFyYXRpb249ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX29wZW5pbmdfcGFyZW5faW5fZW51bV9jb25zdGFudD1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfb3BlbmluZ19wYXJlbl9pbl9mb3I9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfb3BlbmluZ19wYXJlbl9pbl9pZj1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9vcGVuaW5nX3BhcmVuX2luX21ldGhvZF9kZWNsYXJhdGlvbj1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfb3BlbmluZ19wYXJlbl9pbl9tZXRob2RfaW52b2NhdGlvbj1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfb3BlbmluZ19wYXJlbl9pbl9wYXJlbnRoZXNpemVkX2V4cHJlc3Npb249ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX29wZW5pbmdfcGFyZW5faW5fc3dpdGNoPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX29wZW5pbmdfcGFyZW5faW5fc3luY2hyb25pemVkPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX29wZW5pbmdfcGFyZW5faW5fdHJ5PWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX29wZW5pbmdfcGFyZW5faW5fd2hpbGU9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfcGFyZW50aGVzaXplZF9leHByZXNzaW9uX2luX3JldHVybj1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9wYXJlbnRoZXNpemVkX2V4cHJlc3Npb25faW5fdGhyb3c9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfcG9zdGZpeF9vcGVyYXRvcj1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfcHJlZml4X29wZXJhdG9yPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9xdWVzdGlvbl9pbl9jb25kaXRpb25hbD1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9xdWVzdGlvbl9pbl93aWxkY2FyZD1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfc2VtaWNvbG9uPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9zZW1pY29sb25faW5fZm9yPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9zZW1pY29sb25faW5fdHJ5X3Jlc291cmNlcz1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfdW5hcnlfb3BlcmF0b3I9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmV0d2Vlbl9icmFja2V0c19pbl9hcnJheV90eXBlX3JlZmVyZW5jZT1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZXR3ZWVuX2VtcHR5X2JyYWNlc19pbl9hcnJheV9pbml0aWFsaXplcj1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZXR3ZWVuX2VtcHR5X2JyYWNrZXRzX2luX2FycmF5X2FsbG9jYXRpb25fZXhwcmVzc2lvbj1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZXR3ZWVuX2VtcHR5X3BhcmVuc19pbl9hbm5vdGF0aW9uX3R5cGVfbWVtYmVyX2RlY2xhcmF0aW9uPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JldHdlZW5fZW1wdHlfcGFyZW5zX2luX2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JldHdlZW5fZW1wdHlfcGFyZW5zX2luX2VudW1fY29uc3RhbnQ9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmV0d2Vlbl9lbXB0eV9wYXJlbnNfaW5fbWV0aG9kX2RlY2xhcmF0aW9uPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JldHdlZW5fZW1wdHlfcGFyZW5zX2luX21ldGhvZF9pbnZvY2F0aW9uPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuam9pbl9saW5lc19pbl9jb21tZW50cz1mYWxzZQ0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5qb2luX3dyYXBwZWRfbGluZXM9ZmFsc2UNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIua2VlcF9lbHNlX3N0YXRlbWVudF9vbl9zYW1lX2xpbmU9ZmFsc2UNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIua2VlcF9lbXB0eV9hcnJheV9pbml0aWFsaXplcl9vbl9vbmVfbGluZT1mYWxzZQ0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5rZWVwX2ltcGxlX2lmX29uX29uZV9saW5lPWZhbHNlDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmtlZXBfdGhlbl9zdGF0ZW1lbnRfb25fc2FtZV9saW5lPWZhbHNlDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmxpbmVTcGxpdD0yNjANCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIubmV2ZXJfaW5kZW50X2Jsb2NrX2NvbW1lbnRzX29uX2ZpcnN0X2NvbHVtbj1mYWxzZQ0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5uZXZlcl9pbmRlbnRfbGluZV9jb21tZW50c19vbl9maXJzdF9jb2x1bW49ZmFsc2UNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIubnVtYmVyX29mX2JsYW5rX2xpbmVzX2F0X2JlZ2lubmluZ19vZl9tZXRob2RfYm9keT0wDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLm51bWJlcl9vZl9lbXB0eV9saW5lc190b19wcmVzZXJ2ZT01DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLnB1dF9lbXB0eV9zdGF0ZW1lbnRfb25fbmV3X2xpbmU9dHJ1ZQ0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci50YWJ1bGF0aW9uLmNoYXI9dGFiDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLnRhYnVsYXRpb24uc2l6ZT00DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLnVzZV9vbl9vZmZfdGFncz1mYWxzZQ0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci51c2VfdGFic19vbmx5X2Zvcl9sZWFkaW5nX2luZGVudGF0aW9ucz1mYWxzZQ0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci53cmFwX2JlZm9yZV9iaW5hcnlfb3BlcmF0b3I9dHJ1ZQ0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci53cmFwX2JlZm9yZV9vcl9vcGVyYXRvcl9tdWx0aWNhdGNoPXRydWUNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIud3JhcF9vdXRlcl9leHByZXNzaW9uc193aGVuX25lc3RlZD10cnVlDQpkaWZmIC0tZ2l0IGEvZGlhZ3JhbS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGlhZ3JhbS5pbnRlcm5hbGJsb2NrLy5zZXR0aW5ncy9vcmcuZWNsaXBzZS5qZHQudWkucHJlZnMgYi9kaWFncmFtL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kaWFncmFtLmludGVybmFsYmxvY2svLnNldHRpbmdzL29yZy5lY2xpcHNlLmpkdC51aS5wcmVmcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMWQ3MDRiCi0tLSAvZGV2L251bGwKKysrIGIvZGlhZ3JhbS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGlhZ3JhbS5pbnRlcm5hbGJsb2NrLy5zZXR0aW5ncy9vcmcuZWNsaXBzZS5qZHQudWkucHJlZnMKQEAgLTAsMCArMSw2OCBAQAorY2xlYW51cC5hZGRfZGVmYXVsdF9zZXJpYWxfdmVyc2lvbl9pZD10cnVlDQorY2xlYW51cC5hZGRfZ2VuZXJhdGVkX3NlcmlhbF92ZXJzaW9uX2lkPWZhbHNlDQorY2xlYW51cC5hZGRfbWlzc2luZ19hbm5vdGF0aW9ucz10cnVlDQorY2xlYW51cC5hZGRfbWlzc2luZ19kZXByZWNhdGVkX2Fubm90YXRpb25zPXRydWUNCitjbGVhbnVwLmFkZF9taXNzaW5nX21ldGhvZHM9ZmFsc2UNCitjbGVhbnVwLmFkZF9taXNzaW5nX25sc190YWdzPWZhbHNlDQorY2xlYW51cC5hZGRfbWlzc2luZ19vdmVycmlkZV9hbm5vdGF0aW9ucz10cnVlDQorY2xlYW51cC5hZGRfbWlzc2luZ19vdmVycmlkZV9hbm5vdGF0aW9uc19pbnRlcmZhY2VfbWV0aG9kcz10cnVlDQorY2xlYW51cC5hZGRfc2VyaWFsX3ZlcnNpb25faWQ9ZmFsc2UNCitjbGVhbnVwLmFsd2F5c191c2VfYmxvY2tzPXRydWUNCitjbGVhbnVwLmFsd2F5c191c2VfcGFyZW50aGVzZXNfaW5fZXhwcmVzc2lvbnM9ZmFsc2UNCitjbGVhbnVwLmFsd2F5c191c2VfdGhpc19mb3Jfbm9uX3N0YXRpY19maWVsZF9hY2Nlc3M9ZmFsc2UNCitjbGVhbnVwLmFsd2F5c191c2VfdGhpc19mb3Jfbm9uX3N0YXRpY19tZXRob2RfYWNjZXNzPWZhbHNlDQorY2xlYW51cC5jb252ZXJ0X2Z1bmN0aW9uYWxfaW50ZXJmYWNlcz1mYWxzZQ0KK2NsZWFudXAuY29udmVydF90b19lbmhhbmNlZF9mb3JfbG9vcD1mYWxzZQ0KK2NsZWFudXAuY29ycmVjdF9pbmRlbnRhdGlvbj1mYWxzZQ0KK2NsZWFudXAuZm9ybWF0X3NvdXJjZV9jb2RlPWZhbHNlDQorY2xlYW51cC5mb3JtYXRfc291cmNlX2NvZGVfY2hhbmdlc19vbmx5PWZhbHNlDQorY2xlYW51cC5pbnNlcnRfaW5mZXJyZWRfdHlwZV9hcmd1bWVudHM9ZmFsc2UNCitjbGVhbnVwLm1ha2VfbG9jYWxfdmFyaWFibGVfZmluYWw9dHJ1ZQ0KK2NsZWFudXAubWFrZV9wYXJhbWV0ZXJzX2ZpbmFsPWZhbHNlDQorY2xlYW51cC5tYWtlX3ByaXZhdGVfZmllbGRzX2ZpbmFsPXRydWUNCitjbGVhbnVwLm1ha2VfdHlwZV9hYnN0cmFjdF9pZl9taXNzaW5nX21ldGhvZD1mYWxzZQ0KK2NsZWFudXAubWFrZV92YXJpYWJsZV9kZWNsYXJhdGlvbnNfZmluYWw9ZmFsc2UNCitjbGVhbnVwLm5ldmVyX3VzZV9ibG9ja3M9ZmFsc2UNCitjbGVhbnVwLm5ldmVyX3VzZV9wYXJlbnRoZXNlc19pbl9leHByZXNzaW9ucz10cnVlDQorY2xlYW51cC5vcmdhbml6ZV9pbXBvcnRzPWZhbHNlDQorY2xlYW51cC5xdWFsaWZ5X3N0YXRpY19maWVsZF9hY2Nlc3Nlc193aXRoX2RlY2xhcmluZ19jbGFzcz1mYWxzZQ0KK2NsZWFudXAucXVhbGlmeV9zdGF0aWNfbWVtYmVyX2FjY2Vzc2VzX3Rocm91Z2hfaW5zdGFuY2VzX3dpdGhfZGVjbGFyaW5nX2NsYXNzPXRydWUNCitjbGVhbnVwLnF1YWxpZnlfc3RhdGljX21lbWJlcl9hY2Nlc3Nlc190aHJvdWdoX3N1YnR5cGVzX3dpdGhfZGVjbGFyaW5nX2NsYXNzPXRydWUNCitjbGVhbnVwLnF1YWxpZnlfc3RhdGljX21lbWJlcl9hY2Nlc3Nlc193aXRoX2RlY2xhcmluZ19jbGFzcz10cnVlDQorY2xlYW51cC5xdWFsaWZ5X3N0YXRpY19tZXRob2RfYWNjZXNzZXNfd2l0aF9kZWNsYXJpbmdfY2xhc3M9ZmFsc2UNCitjbGVhbnVwLnJlbW92ZV9wcml2YXRlX2NvbnN0cnVjdG9ycz10cnVlDQorY2xlYW51cC5yZW1vdmVfcmVkdW5kYW50X3R5cGVfYXJndW1lbnRzPXRydWUNCitjbGVhbnVwLnJlbW92ZV90cmFpbGluZ193aGl0ZXNwYWNlcz10cnVlDQorY2xlYW51cC5yZW1vdmVfdHJhaWxpbmdfd2hpdGVzcGFjZXNfYWxsPXRydWUNCitjbGVhbnVwLnJlbW92ZV90cmFpbGluZ193aGl0ZXNwYWNlc19pZ25vcmVfZW1wdHk9ZmFsc2UNCitjbGVhbnVwLnJlbW92ZV91bm5lY2Vzc2FyeV9jYXN0cz10cnVlDQorY2xlYW51cC5yZW1vdmVfdW5uZWNlc3NhcnlfbmxzX3RhZ3M9dHJ1ZQ0KK2NsZWFudXAucmVtb3ZlX3VudXNlZF9pbXBvcnRzPXRydWUNCitjbGVhbnVwLnJlbW92ZV91bnVzZWRfbG9jYWxfdmFyaWFibGVzPWZhbHNlDQorY2xlYW51cC5yZW1vdmVfdW51c2VkX3ByaXZhdGVfZmllbGRzPXRydWUNCitjbGVhbnVwLnJlbW92ZV91bnVzZWRfcHJpdmF0ZV9tZW1iZXJzPWZhbHNlDQorY2xlYW51cC5yZW1vdmVfdW51c2VkX3ByaXZhdGVfbWV0aG9kcz10cnVlDQorY2xlYW51cC5yZW1vdmVfdW51c2VkX3ByaXZhdGVfdHlwZXM9dHJ1ZQ0KK2NsZWFudXAuc29ydF9tZW1iZXJzPWZhbHNlDQorY2xlYW51cC5zb3J0X21lbWJlcnNfYWxsPWZhbHNlDQorY2xlYW51cC51c2VfYW5vbnltb3VzX2NsYXNzX2NyZWF0aW9uPWZhbHNlDQorY2xlYW51cC51c2VfYmxvY2tzPXRydWUNCitjbGVhbnVwLnVzZV9ibG9ja3Nfb25seV9mb3JfcmV0dXJuX2FuZF90aHJvdz1mYWxzZQ0KK2NsZWFudXAudXNlX2xhbWJkYT10cnVlDQorY2xlYW51cC51c2VfcGFyZW50aGVzZXNfaW5fZXhwcmVzc2lvbnM9ZmFsc2UNCitjbGVhbnVwLnVzZV90aGlzX2Zvcl9ub25fc3RhdGljX2ZpZWxkX2FjY2Vzcz1mYWxzZQ0KK2NsZWFudXAudXNlX3RoaXNfZm9yX25vbl9zdGF0aWNfZmllbGRfYWNjZXNzX29ubHlfaWZfbmVjZXNzYXJ5PXRydWUNCitjbGVhbnVwLnVzZV90aGlzX2Zvcl9ub25fc3RhdGljX21ldGhvZF9hY2Nlc3M9ZmFsc2UNCitjbGVhbnVwLnVzZV90aGlzX2Zvcl9ub25fc3RhdGljX21ldGhvZF9hY2Nlc3Nfb25seV9pZl9uZWNlc3Nhcnk9dHJ1ZQ0KK2NsZWFudXAudXNlX3R5cGVfYXJndW1lbnRzPWZhbHNlDQorY2xlYW51cF9wcm9maWxlPV9QYXB5cnVzDQorY2xlYW51cF9zZXR0aW5nc192ZXJzaW9uPTINCitlY2xpcHNlLnByZWZlcmVuY2VzLnZlcnNpb249MQ0KK2Zvcm1hdHRlcl9wcm9maWxlPV9QYXB5cnVzDQorZm9ybWF0dGVyX3NldHRpbmdzX3ZlcnNpb249MTINCitvcmcuZWNsaXBzZS5qZHQudWkuaWdub3JlbG93ZXJjYXNlbmFtZXM9dHJ1ZQ0KK29yZy5lY2xpcHNlLmpkdC51aS5pbXBvcnRvcmRlcj1qYXZhO2phdmF4O29yZztjb207DQorb3JnLmVjbGlwc2UuamR0LnVpLmphdmFkb2M9dHJ1ZQ0KK29yZy5lY2xpcHNlLmpkdC51aS5vbmRlbWFuZHRocmVzaG9sZD05OQ0KK29yZy5lY2xpcHNlLmpkdC51aS5zdGF0aWNvbmRlbWFuZHRocmVzaG9sZD05OQ0KK29yZy5lY2xpcHNlLmpkdC51aS50ZXh0LmN1c3RvbV9jb2RlX3RlbXBsYXRlcz08P3htbCB2ZXJzaW9uXD0iMS4wIiBlbmNvZGluZ1w9IlVURi04IiBzdGFuZGFsb25lXD0ibm8iPz48dGVtcGxhdGVzPjx0ZW1wbGF0ZSBhdXRvaW5zZXJ0XD0idHJ1ZSIgY29udGV4dFw9ImdldHRlcmNvbW1lbnRfY29udGV4dCIgZGVsZXRlZFw9ImZhbHNlIiBkZXNjcmlwdGlvblw9IkNvbW1lbnQgZm9yIGdldHRlciBtZXRob2QiIGVuYWJsZWRcPSJ0cnVlIiBpZFw9Im9yZy5lY2xpcHNlLmpkdC51aS50ZXh0LmNvZGV0ZW1wbGF0ZXMuZ2V0dGVyY29tbWVudCIgbmFtZVw9ImdldHRlcmNvbW1lbnQiPi8qKlxuICogQHJldHVybiB0aGUgJHtiYXJlX2ZpZWxkX25hbWV9XG4gKi88L3RlbXBsYXRlPjx0ZW1wbGF0ZSBhdXRvaW5zZXJ0XD0idHJ1ZSIgY29udGV4dFw9InNldHRlcmNvbW1lbnRfY29udGV4dCIgZGVsZXRlZFw9ImZhbHNlIiBkZXNjcmlwdGlvblw9IkNvbW1lbnQgZm9yIHNldHRlciBtZXRob2QiIGVuYWJsZWRcPSJ0cnVlIiBpZFw9Im9yZy5lY2xpcHNlLmpkdC51aS50ZXh0LmNvZGV0ZW1wbGF0ZXMuc2V0dGVyY29tbWVudCIgbmFtZVw9InNldHRlcmNvbW1lbnQiPi8qKlxuICogQHBhcmFtICR7cGFyYW19IHRoZSAke2JhcmVfZmllbGRfbmFtZX0gdG8gc2V0XG4gKi88L3RlbXBsYXRlPjx0ZW1wbGF0ZSBhdXRvaW5zZXJ0XD0iZmFsc2UiIGNvbnRleHRcPSJjb25zdHJ1Y3RvcmNvbW1lbnRfY29udGV4dCIgZGVsZXRlZFw9ImZhbHNlIiBkZXNjcmlwdGlvblw9IkNvbW1lbnQgZm9yIGNyZWF0ZWQgY29uc3RydWN0b3JzIiBlbmFibGVkXD0idHJ1ZSIgaWRcPSJvcmcuZWNsaXBzZS5qZHQudWkudGV4dC5jb2RldGVtcGxhdGVzLmNvbnN0cnVjdG9yY29tbWVudCIgbmFtZVw9ImNvbnN0cnVjdG9yY29tbWVudCI+LyoqXG4gKiBDb25zdHJ1Y3Rvci5cbiAqXG4gKiAke3RhZ3N9XG4gKi88L3RlbXBsYXRlPjx0ZW1wbGF0ZSBhdXRvaW5zZXJ0XD0iZmFsc2UiIGNvbnRleHRcPSJmaWxlY29tbWVudF9jb250ZXh0IiBkZWxldGVkXD0iZmFsc2UiIGRlc2NyaXB0aW9uXD0iQ29tbWVudCBmb3IgY3JlYXRlZCBKYXZhIGZpbGVzIiBlbmFibGVkXD0idHJ1ZSIgaWRcPSJvcmcuZWNsaXBzZS5qZHQudWkudGV4dC5jb2RldGVtcGxhdGVzLmZpbGVjb21tZW50IiBuYW1lXD0iZmlsZWNvbW1lbnQiPi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuICogQ29weXJpZ2h0IChjKSAke3llYXJ9IENFQSBMSVNUIGFuZCBvdGhlcnMuXG4gKiBcbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHNcbiAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMFxuICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXRcbiAqIGh0dHBcOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbFxuICpcbiAqIENvbnRyaWJ1dG9yc1w6XG4gKiAgIENFQSBMSVNUIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uXG4gKiAgIFxuICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuPC90ZW1wbGF0ZT48dGVtcGxhdGUgYXV0b2luc2VydFw9InRydWUiIGNvbnRleHRcPSJ0eXBlY29tbWVudF9jb250ZXh0IiBkZWxldGVkXD0iZmFsc2UiIGRlc2NyaXB0aW9uXD0iQ29tbWVudCBmb3IgY3JlYXRlZCB0eXBlcyIgZW5hYmxlZFw9InRydWUiIGlkXD0ib3JnLmVjbGlwc2UuamR0LnVpLnRleHQuY29kZXRlbXBsYXRlcy50eXBlY29tbWVudCIgbmFtZVw9InR5cGVjb21tZW50Ij4vKipcbiAqIEBhdXRob3IgJHt1c2VyfVxuICpcbiAqICR7dGFnc31cbiAqLzwvdGVtcGxhdGU+PHRlbXBsYXRlIGF1dG9pbnNlcnRcPSJ0cnVlIiBjb250ZXh0XD0iZmllbGRjb21tZW50X2NvbnRleHQiIGRlbGV0ZWRcPSJmYWxzZSIgZGVzY3JpcHRpb25cPSJDb21tZW50IGZvciBmaWVsZHMiIGVuYWJsZWRcPSJ0cnVlIiBpZFw9Im9yZy5lY2xpcHNlLmpkdC51aS50ZXh0LmNvZGV0ZW1wbGF0ZXMuZmllbGRjb21tZW50IiBuYW1lXD0iZmllbGRjb21tZW50Ij4vKipcbiAqIFxuICovPC90ZW1wbGF0ZT48dGVtcGxhdGUgYXV0b2luc2VydFw9InRydWUiIGNvbnRleHRcPSJtZXRob2Rjb21tZW50X2NvbnRleHQiIGRlbGV0ZWRcPSJmYWxzZSIgZGVzY3JpcHRpb25cPSJDb21tZW50IGZvciBub24tb3ZlcnJpZGluZyBtZXRob2RzIiBlbmFibGVkXD0idHJ1ZSIgaWRcPSJvcmcuZWNsaXBzZS5qZHQudWkudGV4dC5jb2RldGVtcGxhdGVzLm1ldGhvZGNvbW1lbnQiIG5hbWVcPSJtZXRob2Rjb21tZW50Ij4vKipcbiAqICR7dGFnc31cbiAqLzwvdGVtcGxhdGU+PHRlbXBsYXRlIGF1dG9pbnNlcnRcPSJmYWxzZSIgY29udGV4dFw9Im92ZXJyaWRlY29tbWVudF9jb250ZXh0IiBkZWxldGVkXD0iZmFsc2UiIGRlc2NyaXB0aW9uXD0iQ29tbWVudCBmb3Igb3ZlcnJpZGluZyBtZXRob2RzIiBlbmFibGVkXD0idHJ1ZSIgaWRcPSJvcmcuZWNsaXBzZS5qZHQudWkudGV4dC5jb2RldGVtcGxhdGVzLm92ZXJyaWRlY29tbWVudCIgbmFtZVw9Im92ZXJyaWRlY29tbWVudCI+LyoqXG4gKiAke3NlZV90b19vdmVycmlkZGVufVxuICpcbiAqICR7dGFnc31cbiAqLzwvdGVtcGxhdGU+PHRlbXBsYXRlIGF1dG9pbnNlcnRcPSJmYWxzZSIgY29udGV4dFw9ImRlbGVnYXRlY29tbWVudF9jb250ZXh0IiBkZWxldGVkXD0iZmFsc2UiIGRlc2NyaXB0aW9uXD0iQ29tbWVudCBmb3IgZGVsZWdhdGUgbWV0aG9kcyIgZW5hYmxlZFw9InRydWUiIGlkXD0ib3JnLmVjbGlwc2UuamR0LnVpLnRleHQuY29kZXRlbXBsYXRlcy5kZWxlZ2F0ZWNvbW1lbnQiIG5hbWVcPSJkZWxlZ2F0ZWNvbW1lbnQiPi8qKlxuICogJHtzZWVfdG9fdGFyZ2V0fVxuICpcbiAqICR7dGFnc31cbiAqLzwvdGVtcGxhdGU+PHRlbXBsYXRlIGF1dG9pbnNlcnRcPSJ0cnVlIiBjb250ZXh0XD0ibmV3dHlwZV9jb250ZXh0IiBkZWxldGVkXD0iZmFsc2UiIGRlc2NyaXB0aW9uXD0iTmV3bHkgY3JlYXRlZCBmaWxlcyIgZW5hYmxlZFw9InRydWUiIGlkXD0ib3JnLmVjbGlwc2UuamR0LnVpLnRleHQuY29kZXRlbXBsYXRlcy5uZXd0eXBlIiBuYW1lXD0ibmV3dHlwZSI+JHtmaWxlY29tbWVudH1cbiR7cGFja2FnZV9kZWNsYXJhdGlvbn1cblxuJHt0eXBlY29tbWVudH1cbiR7dHlwZV9kZWNsYXJhdGlvbn08L3RlbXBsYXRlPjx0ZW1wbGF0ZSBhdXRvaW5zZXJ0XD0idHJ1ZSIgY29udGV4dFw9ImNsYXNzYm9keV9jb250ZXh0IiBkZWxldGVkXD0iZmFsc2UiIGRlc2NyaXB0aW9uXD0iQ29kZSBpbiBuZXcgY2xhc3MgdHlwZSBib2RpZXMiIGVuYWJsZWRcPSJ0cnVlIiBpZFw9Im9yZy5lY2xpcHNlLmpkdC51aS50ZXh0LmNvZGV0ZW1wbGF0ZXMuY2xhc3Nib2R5IiBuYW1lXD0iY2xhc3Nib2R5Ij5cbjwvdGVtcGxhdGU+PHRlbXBsYXRlIGF1dG9pbnNlcnRcPSJ0cnVlIiBjb250ZXh0XD0iaW50ZXJmYWNlYm9keV9jb250ZXh0IiBkZWxldGVkXD0iZmFsc2UiIGRlc2NyaXB0aW9uXD0iQ29kZSBpbiBuZXcgaW50ZXJmYWNlIHR5cGUgYm9kaWVzIiBlbmFibGVkXD0idHJ1ZSIgaWRcPSJvcmcuZWNsaXBzZS5qZHQudWkudGV4dC5jb2RldGVtcGxhdGVzLmludGVyZmFjZWJvZHkiIG5hbWVcPSJpbnRlcmZhY2Vib2R5Ij5cbjwvdGVtcGxhdGU+PHRlbXBsYXRlIGF1dG9pbnNlcnRcPSJ0cnVlIiBjb250ZXh0XD0iZW51bWJvZHlfY29udGV4dCIgZGVsZXRlZFw9ImZhbHNlIiBkZXNjcmlwdGlvblw9IkNvZGUgaW4gbmV3IGVudW0gdHlwZSBib2RpZXMiIGVuYWJsZWRcPSJ0cnVlIiBpZFw9Im9yZy5lY2xpcHNlLmpkdC51aS50ZXh0LmNvZGV0ZW1wbGF0ZXMuZW51bWJvZHkiIG5hbWVcPSJlbnVtYm9keSI+XG48L3RlbXBsYXRlPjx0ZW1wbGF0ZSBhdXRvaW5zZXJ0XD0idHJ1ZSIgY29udGV4dFw9ImFubm90YXRpb25ib2R5X2NvbnRleHQiIGRlbGV0ZWRcPSJmYWxzZSIgZGVzY3JpcHRpb25cPSJDb2RlIGluIG5ldyBhbm5vdGF0aW9uIHR5cGUgYm9kaWVzIiBlbmFibGVkXD0idHJ1ZSIgaWRcPSJvcmcuZWNsaXBzZS5qZHQudWkudGV4dC5jb2RldGVtcGxhdGVzLmFubm90YXRpb25ib2R5IiBuYW1lXD0iYW5ub3RhdGlvbmJvZHkiPlxuPC90ZW1wbGF0ZT48dGVtcGxhdGUgYXV0b2luc2VydFw9InRydWUiIGNvbnRleHRcPSJjYXRjaGJsb2NrX2NvbnRleHQiIGRlbGV0ZWRcPSJmYWxzZSIgZGVzY3JpcHRpb25cPSJDb2RlIGluIG5ldyBjYXRjaCBibG9ja3MiIGVuYWJsZWRcPSJ0cnVlIiBpZFw9Im9yZy5lY2xpcHNlLmpkdC51aS50ZXh0LmNvZGV0ZW1wbGF0ZXMuY2F0Y2hibG9jayIgbmFtZVw9ImNhdGNoYmxvY2siPi8vICR7dG9kb30gQXV0by1nZW5lcmF0ZWQgY2F0Y2ggYmxvY2tcbiR7ZXhjZXB0aW9uX3Zhcn0ucHJpbnRTdGFja1RyYWNlKCk7PC90ZW1wbGF0ZT48dGVtcGxhdGUgYXV0b2luc2VydFw9InRydWUiIGNvbnRleHRcPSJtZXRob2Rib2R5X2NvbnRleHQiIGRlbGV0ZWRcPSJmYWxzZSIgZGVzY3JpcHRpb25cPSJDb2RlIGluIGNyZWF0ZWQgbWV0aG9kIHN0dWJzIiBlbmFibGVkXD0idHJ1ZSIgaWRcPSJvcmcuZWNsaXBzZS5qZHQudWkudGV4dC5jb2RldGVtcGxhdGVzLm1ldGhvZGJvZHkiIG5hbWVcPSJtZXRob2Rib2R5Ij4vLyAke3RvZG99IEF1dG8tZ2VuZXJhdGVkIG1ldGhvZCBzdHViXG4ke2JvZHlfc3RhdGVtZW50fTwvdGVtcGxhdGU+PHRlbXBsYXRlIGF1dG9pbnNlcnRcPSJ0cnVlIiBjb250ZXh0XD0iY29uc3RydWN0b3Jib2R5X2NvbnRleHQiIGRlbGV0ZWRcPSJmYWxzZSIgZGVzY3JpcHRpb25cPSJDb2RlIGluIGNyZWF0ZWQgY29uc3RydWN0b3Igc3R1YnMiIGVuYWJsZWRcPSJ0cnVlIiBpZFw9Im9yZy5lY2xpcHNlLmpkdC51aS50ZXh0LmNvZGV0ZW1wbGF0ZXMuY29uc3RydWN0b3Jib2R5IiBuYW1lXD0iY29uc3RydWN0b3Jib2R5Ij4ke2JvZHlfc3RhdGVtZW50fVxuLy8gJHt0b2RvfSBBdXRvLWdlbmVyYXRlZCBjb25zdHJ1Y3RvciBzdHViPC90ZW1wbGF0ZT48dGVtcGxhdGUgYXV0b2luc2VydFw9InRydWUiIGNvbnRleHRcPSJnZXR0ZXJib2R5X2NvbnRleHQiIGRlbGV0ZWRcPSJmYWxzZSIgZGVzY3JpcHRpb25cPSJDb2RlIGluIGNyZWF0ZWQgZ2V0dGVycyIgZW5hYmxlZFw9InRydWUiIGlkXD0ib3JnLmVjbGlwc2UuamR0LnVpLnRleHQuY29kZXRlbXBsYXRlcy5nZXR0ZXJib2R5IiBuYW1lXD0iZ2V0dGVyYm9keSI+cmV0dXJuICR7ZmllbGR9OzwvdGVtcGxhdGU+PHRlbXBsYXRlIGF1dG9pbnNlcnRcPSJ0cnVlIiBjb250ZXh0XD0ic2V0dGVyYm9keV9jb250ZXh0IiBkZWxldGVkXD0iZmFsc2UiIGRlc2NyaXB0aW9uXD0iQ29kZSBpbiBjcmVhdGVkIHNldHRlcnMiIGVuYWJsZWRcPSJ0cnVlIiBpZFw9Im9yZy5lY2xpcHNlLmpkdC51aS50ZXh0LmNvZGV0ZW1wbGF0ZXMuc2V0dGVyYm9keSIgbmFtZVw9InNldHRlcmJvZHkiPiR7ZmllbGR9IFw9ICR7cGFyYW19OzwvdGVtcGxhdGU+PC90ZW1wbGF0ZXM+DQpkaWZmIC0tZ2l0IGEvZGlhZ3JhbS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGlhZ3JhbS5pbnRlcm5hbGJsb2NrL01FVEEtSU5GL01BTklGRVNULk1GIGIvZGlhZ3JhbS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGlhZ3JhbS5pbnRlcm5hbGJsb2NrL01FVEEtSU5GL01BTklGRVNULk1GCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNlNGJhMzcKLS0tIC9kZXYvbnVsbAorKysgYi9kaWFncmFtL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kaWFncmFtLmludGVybmFsYmxvY2svTUVUQS1JTkYvTUFOSUZFU1QuTUYKQEAgLTAsMCArMSwxNyBAQAorTWFuaWZlc3QtVmVyc2lvbjogMS4wDQorQnVuZGxlLU1hbmlmZXN0VmVyc2lvbjogMg0KK0J1bmRsZS1OYW1lOiAlcGx1Z2luTmFtZQ0KK0J1bmRsZS1Mb2NhbGl6YXRpb246IHBsdWdpbg0KK0J1bmRsZS1TeW1ib2xpY05hbWU6IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kaWFncmFtLmludGVybmFsYmxvY2s7c2luZ2xldG9uOj10cnVlDQorQnVuZGxlLVZlcnNpb246IDAuNy4wLnF1YWxpZmllcg0KK0J1bmRsZS1BY3RpdmF0b3I6IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kaWFncmFtLmludGVybmFsYmxvY2suQWN0aXZhdG9yDQorQnVuZGxlLVZlbmRvcjogJXByb3ZpZGVyTmFtZQ0KK1JlcXVpcmUtQnVuZGxlOiBvcmcuZWNsaXBzZS51aSwNCisgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLA0KKyBvcmcuZWNsaXBzZS5wYXB5cnVzLmluZnJhLnZpZXdwb2ludHMucG9saWN5O2J1bmRsZS12ZXJzaW9uPSIxLjEuMCIsDQorIG9yZy5lY2xpcHNlLnVtbDIudW1sLA0KKyBjb20uZ29vZ2xlLmd1YXZhO2J1bmRsZS12ZXJzaW9uPSIxMS4wLjAiLA0KKyBvcmcuZWNsaXBzZS5wYXB5cnVzLmluZnJhLmVtZjtidW5kbGUtdmVyc2lvbj0iMS4xLjAiLA0KKyBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGlhZ3JhbS5jb21tb247YnVuZGxlLXZlcnNpb249IjAuNy4wIg0KK0J1bmRsZS1SZXF1aXJlZEV4ZWN1dGlvbkVudmlyb25tZW50OiBKYXZhU0UtMS42DQorQnVuZGxlLUFjdGl2YXRpb25Qb2xpY3k6IGxhenkNCmRpZmYgLS1naXQgYS9kaWFncmFtL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kaWFncmFtLmludGVybmFsYmxvY2svYWJvdXQuaHRtbCBiL2RpYWdyYW0vb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRpYWdyYW0uaW50ZXJuYWxibG9jay9hYm91dC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgyZDQ5YmYKLS0tIC9kZXYvbnVsbAorKysgYi9kaWFncmFtL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kaWFncmFtLmludGVybmFsYmxvY2svYWJvdXQuaHRtbApAQCAtMCwwICsxLDI4IEBACis8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIFhIVE1MIDEuMCBTdHJpY3QvL0VOIg0KKyAgICAiaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtc3RyaWN0LmR0ZCI+DQorPGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPg0KKzxoZWFkPg0KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PUlTTy04ODU5LTEiLz4NCis8dGl0bGU+QWJvdXQ8L3RpdGxlPg0KKzwvaGVhZD4NCis8Ym9keSBsYW5nPSJFTi1VUyI+DQorPGgyPkFib3V0IFRoaXMgQ29udGVudDwvaDI+DQorIA0KKzxwPkp1bmUgNSwgMjAwNzwvcD4JDQorPGgzPkxpY2Vuc2U8L2gzPg0KKw0KKzxwPlRoZSBFY2xpcHNlIEZvdW5kYXRpb24gbWFrZXMgYXZhaWxhYmxlIGFsbCBjb250ZW50IGluIHRoaXMgcGx1Zy1pbiAoJnF1b3Q7Q29udGVudCZxdW90OykuICBVbmxlc3Mgb3RoZXJ3aXNlIA0KK2luZGljYXRlZCBiZWxvdywgdGhlIENvbnRlbnQgaXMgcHJvdmlkZWQgdG8geW91IHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUNCitFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMS4wICgmcXVvdDtFUEwmcXVvdDspLiAgQSBjb3B5IG9mIHRoZSBFUEwgaXMgYXZhaWxhYmxlIA0KK2F0IDxhIGhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sIj5odHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbDwvYT4uDQorRm9yIHB1cnBvc2VzIG9mIHRoZSBFUEwsICZxdW90O1Byb2dyYW0mcXVvdDsgd2lsbCBtZWFuIHRoZSBDb250ZW50LjwvcD4NCisNCis8cD5JZiB5b3UgZGlkIG5vdCByZWNlaXZlIHRoaXMgQ29udGVudCBkaXJlY3RseSBmcm9tIHRoZSBFY2xpcHNlIEZvdW5kYXRpb24sIHRoZSBDb250ZW50IGlzIA0KK2JlaW5nIHJlZGlzdHJpYnV0ZWQgYnkgYW5vdGhlciBwYXJ0eSAoJnF1b3Q7UmVkaXN0cmlidXRvciZxdW90OykgYW5kIGRpZmZlcmVudCB0ZXJtcyBhbmQgY29uZGl0aW9ucyBtYXkNCithcHBseSB0byB5b3VyIHVzZSBvZiBhbnkgb2JqZWN0IGNvZGUgaW4gdGhlIENvbnRlbnQuICBDaGVjayB0aGUgUmVkaXN0cmlidXRvcidzIGxpY2Vuc2UgdGhhdCB3YXMgDQorcHJvdmlkZWQgd2l0aCB0aGUgQ29udGVudC4gIElmIG5vIHN1Y2ggbGljZW5zZSBleGlzdHMsIGNvbnRhY3QgdGhlIFJlZGlzdHJpYnV0b3IuICBVbmxlc3Mgb3RoZXJ3aXNlDQoraW5kaWNhdGVkIGJlbG93LCB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEVQTCBzdGlsbCBhcHBseSB0byBhbnkgc291cmNlIGNvZGUgaW4gdGhlIENvbnRlbnQNCithbmQgc3VjaCBzb3VyY2UgY29kZSBtYXkgYmUgb2J0YWluZWQgYXQgPGEgaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy8iPmh0dHA6Ly93d3cuZWNsaXBzZS5vcmc8L2E+LjwvcD4NCisNCis8L2JvZHk+DQorPC9odG1sPg0KZGlmZiAtLWdpdCBhL2RpYWdyYW0vb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRpYWdyYW0uaW50ZXJuYWxibG9jay9idWlsZC5wcm9wZXJ0aWVzIGIvZGlhZ3JhbS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGlhZ3JhbS5pbnRlcm5hbGJsb2NrL2J1aWxkLnByb3BlcnRpZXMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjAwYTBhOAotLS0gL2Rldi9udWxsCisrKyBiL2RpYWdyYW0vb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRpYWdyYW0uaW50ZXJuYWxibG9jay9idWlsZC5wcm9wZXJ0aWVzCkBAIC0wLDAgKzEsOSBAQAorc291cmNlLi4gPSBzcmMvDQorb3V0cHV0Li4gPSBiaW4vDQorYmluLmluY2x1ZGVzID0gcGx1Z2luLnhtbCxcDQorICAgICAgICAgICAgICAgTUVUQS1JTkYvLFwNCisgICAgICAgICAgICAgICAuLFwNCisgICAgICAgICAgICAgICBhYm91dC5odG1sLFwNCisgICAgICAgICAgICAgICByZXNvdXJjZXMvLFwNCisgICAgICAgICAgICAgICBwbHVnaW4ucHJvcGVydGllcw0KK3NyYy5pbmNsdWRlcyA9IGFib3V0Lmh0bWwNCmRpZmYgLS1naXQgYS9kaWFncmFtL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kaWFncmFtLmludGVybmFsYmxvY2svcGx1Z2luLnByb3BlcnRpZXMgYi9kaWFncmFtL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kaWFncmFtLmludGVybmFsYmxvY2svcGx1Z2luLnByb3BlcnRpZXMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDA2OGQyMQotLS0gL2Rldi9udWxsCisrKyBiL2RpYWdyYW0vb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRpYWdyYW0uaW50ZXJuYWxibG9jay9wbHVnaW4ucHJvcGVydGllcwpAQCAtMCwwICsxLDE1IEBACisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCisjIENvcHlyaWdodCAoYykgMjAxNSBDRUEgTElTVC4NCisjIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCisjIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KKyMgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCisjIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorIw0KKyMgQ29udHJpYnV0b3JzOg0KKyMgICAgIEJlbm9pdCBNYWdnaSAoQ0VBIExJU1QpIGJlbm9pdC5tYWdnaUBjZWEuZnIgLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24NCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQorcGx1Z2luTmFtZT1vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGlhZ3JhbS5pbnRlcm5hbGJsb2NrDQorcGx1Z2luRGVzY3JpcHRpb249VGhpcyBwbHVnLWluIGNvbnRhaW5zIHRoZSBpbnRlcm5hbCBibG9jayBkaWFncmFtIG9mIFN5c01MIDEuNA0KK3Byb3ZpZGVyTmFtZT1FY2xpcHNlIE1vZGVsaW5nIFByb2plY3QNCisNCisNCmRpZmYgLS1naXQgYS9kaWFncmFtL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kaWFncmFtLmludGVybmFsYmxvY2svcGx1Z2luLnhtbCBiL2RpYWdyYW0vb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRpYWdyYW0uaW50ZXJuYWxibG9jay9wbHVnaW4ueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUxY2Q5MzgKLS0tIC9kZXYvbnVsbAorKysgYi9kaWFncmFtL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kaWFncmFtLmludGVybmFsYmxvY2svcGx1Z2luLnhtbApAQCAtMCwwICsxLDIzIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/Pg0KKzw/ZWNsaXBzZSB2ZXJzaW9uPSIzLjQiPz4NCis8IS0tDQorICBDb3B5cmlnaHQgKGMpIDIwMTUgQ0VBIExJU1QuDQorIA0KKyAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KKyAgYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQorICB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KKyAgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgDQorICBDb250cmlidXRvcnM6DQorICBCZW5vaXQgTWFnZ2kgKENFQSBMSVNUKSBiZW5vaXQubWFnZ2lAY2VhLmZyIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uDQorLS0+DQorDQorPHBsdWdpbj4NCisgICA8ZXh0ZW5zaW9uDQorICAgICAgICAgcG9pbnQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuaW5mcmEudmlld3BvaW50cy5wb2xpY3kuY3VzdG9tIj4NCisgICAgICA8Y29udHJpYnV0aW9uDQorICAgICAgICAgICAgZmlsZT0icmVzb3VyY2VzL2NvbmZpZ3VyYXRpb24vSW50ZXJuYWxCbG9ja0RpYWdyYW0uY29uZmlndXJhdGlvbiINCisgICAgICAgICAgICBvcmlnaW5hbD0icGxhdGZvcm06L3BsdWdpbi9vcmcuZWNsaXBzZS5wYXB5cnVzLmluZnJhLnZpZXdwb2ludHMucG9saWN5L2J1aWx0aW4vZGVmYXVsdC5jb25maWd1cmF0aW9uIj4NCisgICAgICA8L2NvbnRyaWJ1dGlvbj4NCisgICA8L2V4dGVuc2lvbj4NCis8L3BsdWdpbj4NCmRpZmYgLS1naXQgYS9kaWFncmFtL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kaWFncmFtLmludGVybmFsYmxvY2svcG9tLnhtbCBiL2RpYWdyYW0vb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRpYWdyYW0uaW50ZXJuYWxibG9jay9wb20ueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI1NTk3ZTAKLS0tIC9kZXYvbnVsbAorKysgYi9kaWFncmFtL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kaWFncmFtLmludGVybmFsYmxvY2svcG9tLnhtbApAQCAtMCwwICsxLDExIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/Pg0KKzxwcm9qZWN0Pg0KKwk8bW9kZWxWZXJzaW9uPjQuMC4wPC9tb2RlbFZlcnNpb24+DQorCTxwYXJlbnQ+DQorCQk8Z3JvdXBJZD5vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sPC9ncm91cElkPgkNCisJCTxhcnRpZmFjdElkPm9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwuZGlhZ3JhbTwvYXJ0aWZhY3RJZD4NCisJCTx2ZXJzaW9uPjAuNy4wLVNOQVBTSE9UPC92ZXJzaW9uPg0KKwk8L3BhcmVudD4NCisJPGFydGlmYWN0SWQ+b3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRpYWdyYW0uaW50ZXJuYWxibG9jazwvYXJ0aWZhY3RJZD4NCisJPHBhY2thZ2luZz5lY2xpcHNlLXBsdWdpbjwvcGFja2FnaW5nPg0KKzwvcHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kaWFncmFtL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kaWFncmFtLmludGVybmFsYmxvY2svcmVzb3VyY2VzL2NvbmZpZ3VyYXRpb24vSW50ZXJuYWxCbG9ja0RpYWdyYW0uY29uZmlndXJhdGlvbiBiL2RpYWdyYW0vb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRpYWdyYW0uaW50ZXJuYWxibG9jay9yZXNvdXJjZXMvY29uZmlndXJhdGlvbi9JbnRlcm5hbEJsb2NrRGlhZ3JhbS5jb25maWd1cmF0aW9uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNmOGUxNTcKLS0tIC9kZXYvbnVsbAorKysgYi9kaWFncmFtL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kaWFncmFtLmludGVybmFsYmxvY2svcmVzb3VyY2VzL2NvbmZpZ3VyYXRpb24vSW50ZXJuYWxCbG9ja0RpYWdyYW0uY29uZmlndXJhdGlvbgpAQCAtMCwwICsxLDE5IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/Pg0KKzxjb25maWd1cmF0aW9uOlBhcHlydXNDb25maWd1cmF0aW9uIHhtaTp2ZXJzaW9uPSIyLjAiIHhtbG5zOnhtaT0iaHR0cDovL3d3dy5vbWcub3JnL1hNSSIgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIgeG1sbnM6Y29uZmlndXJhdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9wYXB5cnVzL2luZnJhL3ZpZXdwb2ludHMvY29uZmlndXJhdGlvbiIgeG1pOmlkPSJfa28wN0lFcmJFZVNkUUt6U1JhdEJqZyI+DQorICA8dmlld3BvaW50cyB4c2k6dHlwZT0iY29uZmlndXJhdGlvbjpQYXB5cnVzVmlld3BvaW50IiB4bWk6aWQ9Il94b2dkb0VyYkVlU2RRS3pTUmF0QmpnIiBuYW1lPSJEZWZhdWx0IFBhcHlydXMgVmlld3BvaW50Ij4NCisgICAgPG1vZGVsS2luZHMgeHNpOnR5cGU9ImNvbmZpZ3VyYXRpb246UGFweXJ1c0RpYWdyYW0iIHhtaTppZD0iX1pyQmY0SmFCRWVTOGVOdlN3RDBsZ0EiIG5hbWU9IlN5c01MIDEuNCBJbnRlcm5hbCBCbG9jayIgaWNvbj0icGxhdGZvcm06L3BsdWdpbi9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sLmRpYWdyYW0uaW50ZXJuYWxibG9jay9pY29ucy9vYmoxNi9EaWFncmFtX0ludGVybmFsQmxvY2suZ2lmIiBpbXBsZW1lbnRhdGlvbklEPSJDb21wb3NpdGVTdHJ1Y3R1cmUiIGNhdGVnb3JpZXM9Il9hNmNMME15a0VlU3VZYlBkWndXbHl3IiBjdXN0b21QYWxldHRlPSJwbGF0Zm9ybTovcGx1Z2luL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kaWFncmFtLmludGVybmFsYmxvY2svcmVzb3VyY2VzL3BhbGV0dGUvaW50ZXJuYWxCbG9ja0RpYWdyYW0ucGFsZXR0ZWNvbmZpZ3VyYXRpb24iPg0KKyAgICAgIDxwcm9maWxlcyBocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3BhcHlydXMvMS40L1N5c01MIy8iLz4NCisgICAgICA8bW9kZWxSdWxlcyB4bWk6aWQ9Il9ackJmNFphQkVlUzhlTnZTd0QwbGdBIj4NCisgICAgICAgIDxlbGVtZW50IGhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvdW1sMi81LjAuMC9VTUwjLy9QYWNrYWdlIi8+DQorICAgICAgPC9tb2RlbFJ1bGVzPg0KKyAgICAgIDxvd25pbmdSdWxlcyB4bWk6aWQ9Il9ackJmNDVhQkVlUzhlTnZTd0QwbGdBIj4NCisgICAgICAgIDxlbGVtZW50IGhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvdW1sMi81LjAuMC9VTUwjLy9QYWNrYWdlIi8+DQorICAgICAgPC9vd25pbmdSdWxlcz4NCisgICAgICA8Y2hpbGRSdWxlcyB4bWk6aWQ9Il9ackJmNVphQkVlUzhlTnZTd0QwbGdBIi8+DQorICAgICAgPHBhbGV0dGVSdWxlcyB4bWk6aWQ9Il9ONEd6SUtGUUVlU3g2TVlkZWkxcktBIiBwZXJtaXQ9ImZhbHNlIiBlbGVtZW50PSJjb21wb3NpdGUuZ3JvdXAuKiIvPg0KKyAgICA8L21vZGVsS2luZHM+DQorICA8L3ZpZXdwb2ludHM+DQorICA8ZGVmYXVsdFN0YWtlaG9sZGVyIGhyZWY9InBsYXRmb3JtOi9wbHVnaW4vb3JnLmVjbGlwc2UucGFweXJ1cy5pbmZyYS52aWV3cG9pbnRzLnBvbGljeS9idWlsdGluL2RlZmF1bHQuY29uZmlndXJhdGlvbiNfN3dMbWtkeGhFZU9xSHZSeWlOODdoQSIvPg0KKyAgPG1ldGFtb2RlbCBocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3VtbDIvNS4wLjAvVU1MIy8iLz4NCisgIDxjYXRlZ29yaWVzIHhtaTppZD0iX2E2Y0wwTXlrRWVTdVliUGRad1dseXciIG5hbWU9IlN5c01MMTQiLz4NCis8L2NvbmZpZ3VyYXRpb246UGFweXJ1c0NvbmZpZ3VyYXRpb24+DQpkaWZmIC0tZ2l0IGEvZGlhZ3JhbS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGlhZ3JhbS5pbnRlcm5hbGJsb2NrL3Jlc291cmNlcy9kb2Mvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRpYWdyYW0uaW50ZXJuYWxibG9jay5kaSBiL2RpYWdyYW0vb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRpYWdyYW0uaW50ZXJuYWxibG9jay9yZXNvdXJjZXMvZG9jL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kaWFncmFtLmludGVybmFsYmxvY2suZGkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODYzNGQ0YwotLS0gL2Rldi9udWxsCisrKyBiL2RpYWdyYW0vb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRpYWdyYW0uaW50ZXJuYWxibG9jay9yZXNvdXJjZXMvZG9jL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kaWFncmFtLmludGVybmFsYmxvY2suZGkKQEAgLTAsMCArMSwyIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/Pg0KKzx4bWk6WE1JIHhtaTp2ZXJzaW9uPSIyLjAiIHhtbG5zOnhtaT0iaHR0cDovL3d3dy5vbWcub3JnL1hNSSIvPg0KZGlmZiAtLWdpdCBhL2RpYWdyYW0vb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRpYWdyYW0uaW50ZXJuYWxibG9jay9yZXNvdXJjZXMvZG9jL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kaWFncmFtLmludGVybmFsYmxvY2subm90YXRpb24gYi9kaWFncmFtL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kaWFncmFtLmludGVybmFsYmxvY2svcmVzb3VyY2VzL2RvYy9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGlhZ3JhbS5pbnRlcm5hbGJsb2NrLm5vdGF0aW9uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVlNDU1ODIKLS0tIC9kZXYvbnVsbAorKysgYi9kaWFncmFtL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kaWFncmFtLmludGVybmFsYmxvY2svcmVzb3VyY2VzL2RvYy9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGlhZ3JhbS5pbnRlcm5hbGJsb2NrLm5vdGF0aW9uCkBAIC0wLDAgKzEsMTMwIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/Pg0KKzx4bWk6WE1JIHhtaTp2ZXJzaW9uPSIyLjAiIHhtbG5zOnhtaT0iaHR0cDovL3d3dy5vbWcub3JnL1hNSSIgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIgeG1sbnM6Y29uZmlndXJhdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9wYXB5cnVzL2luZnJhL3ZpZXdwb2ludHMvY29uZmlndXJhdGlvbiIgeG1sbnM6Y3NzPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3BhcHlydXMvaW5mcmEvZ21mZGlhZy9jc3MiIHhtbG5zOmVjb3JlPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2VtZi8yMDAyL0Vjb3JlIiB4bWxuczpuYXR0YWJsZT0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9wYXB5cnVzL25hdHRhYmxlL21vZGVsIiB4bWxuczpuYXR0YWJsZWF4aXM9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvcGFweXJ1cy9uYXR0YWJsZS9tb2RlbC90YWJsZS9uYXR0YWJsZWF4aXMiIHhtbG5zOm5hdHRhYmxlYXhpc2NvbmZpZ3VyYXRpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvcGFweXJ1cy9uYXR0YWJsZS9tb2RlbC90YWJsZS9uYXR0YWJsZWF4aXNjb25maWd1cmF0aW9uIiB4bWxuczpuYXR0YWJsZWF4aXNwcm92aWRlcj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9wYXB5cnVzL25hdHRhYmxlL21vZGVsL3RhYmxlL25hdHRhYmxlYXhpc3Byb3ZpZGVyIiB4bWxuczpuYXR0YWJsZWNvbmZpZ3VyYXRpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvcGFweXJ1cy9uYXR0YWJsZS9tb2RlbC9uYXR0YWJsZWNvbmZpZ3VyYXRpb24iIHhtbG5zOm5hdHRhYmxlc3R5bGU9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvcGFweXJ1cy9uYXR0YWJsZS9tb2RlbC90YWJsZS9uYXR0YWJsZXN0eWxlIiB4bWxuczpub3RhdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9nbWYvcnVudGltZS8xLjAuMi9ub3RhdGlvbiIgeG1sbnM6c3R5bGU9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvcGFweXJ1cy9pbmZyYS92aWV3cG9pbnRzL3BvbGljeS9zdHlsZSIgeG1sbnM6dW1sPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3VtbDIvNS4wLjAvVU1MIiB4c2k6c2NoZW1hTG9jYXRpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvcGFweXJ1cy9uYXR0YWJsZS9tb2RlbC90YWJsZS9uYXR0YWJsZWF4aXMgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9wYXB5cnVzL25hdHRhYmxlL21vZGVsIy8vbmF0dGFibGVheGlzIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvcGFweXJ1cy9uYXR0YWJsZS9tb2RlbC90YWJsZS9uYXR0YWJsZWF4aXNjb25maWd1cmF0aW9uIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvcGFweXJ1cy9uYXR0YWJsZS9tb2RlbCMvL25hdHRhYmxlYXhpc2NvbmZpZ3VyYXRpb24gaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9wYXB5cnVzL25hdHRhYmxlL21vZGVsL3RhYmxlL25hdHRhYmxlYXhpc3Byb3ZpZGVyIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvcGFweXJ1cy9uYXR0YWJsZS9tb2RlbCMvL25hdHRhYmxlYXhpc3Byb3ZpZGVyIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvcGFweXJ1cy9uYXR0YWJsZS9tb2RlbC9uYXR0YWJsZWNvbmZpZ3VyYXRpb24gaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9wYXB5cnVzL25hdHRhYmxlL21vZGVsIy8vbmF0dGFibGVjb25maWd1cmF0aW9uIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvcGFweXJ1cy9uYXR0YWJsZS9tb2RlbC90YWJsZS9uYXR0YWJsZXN0eWxlIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvcGFweXJ1cy9uYXR0YWJsZS9tb2RlbCMvL25hdHRhYmxlc3R5bGUiPg0KKyAgPG5vdGF0aW9uOkRpYWdyYW0geG1pOmlkPSJfT0YyM2dPTElFZVN2NWR3dlo5TlNEdyIgdHlwZT0iUGFweXJ1c1VNTENsYXNzRGlhZ3JhbSIgbmFtZT0iT3ZlcnZpZXciIG1lYXN1cmVtZW50VW5pdD0iUGl4ZWwiPg0KKyAgICA8Y2hpbGRyZW4geG1pOnR5cGU9Im5vdGF0aW9uOlNoYXBlIiB4bWk6aWQ9Il9PRjNla09MSUVlU3Y1ZHd2WjlOU0R3IiB0eXBlPSIyMDA1Ij4NCisgICAgICA8Y2hpbGRyZW4geG1pOnR5cGU9Im5vdGF0aW9uOkRlY29yYXRpb25Ob2RlIiB4bWk6aWQ9Il9PRjNla2VMSUVlU3Y1ZHd2WjlOU0R3IiB0eXBlPSI1MDIwIi8+DQorICAgICAgPGNoaWxkcmVuIHhtaTp0eXBlPSJub3RhdGlvbjpEZWNvcmF0aW9uTm9kZSIgeG1pOmlkPSJfT0YzZWt1TElFZVN2NWR3dlo5TlNEdyIgdHlwZT0iNzAwOSI+DQorICAgICAgICA8c3R5bGVzIHhtaTp0eXBlPSJub3RhdGlvbjpUaXRsZVN0eWxlIiB4bWk6aWQ9Il9PRjNlay1MSUVlU3Y1ZHd2WjlOU0R3Ii8+DQorICAgICAgICA8bGF5b3V0Q29uc3RyYWludCB4bWk6dHlwZT0ibm90YXRpb246Qm91bmRzIiB4bWk6aWQ9Il9PRjNlbE9MSUVlU3Y1ZHd2WjlOU0R3Ii8+DQorICAgICAgPC9jaGlsZHJlbj4NCisgICAgICA8ZWxlbWVudCB4bWk6dHlwZT0idW1sOk1vZGVsIiBocmVmPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGlhZ3JhbS5pbnRlcm5hbGJsb2NrLnVtbCNfT0ZzZmN1TElFZVN2NWR3dlo5TlNEdyIvPg0KKyAgICAgIDxsYXlvdXRDb25zdHJhaW50IHhtaTp0eXBlPSJub3RhdGlvbjpCb3VuZHMiIHhtaTppZD0iX09GM2VsZUxJRWVTdjVkd3ZaOU5TRHciIHg9IjIwMSIgeT0iMzgiLz4NCisgICAgPC9jaGlsZHJlbj4NCisgICAgPGNoaWxkcmVuIHhtaTp0eXBlPSJub3RhdGlvbjpTaGFwZSIgeG1pOmlkPSJfT0YzZWx1TElFZVN2NWR3dlo5TlNEdyIgdHlwZT0iMjAwNSI+DQorICAgICAgPGNoaWxkcmVuIHhtaTp0eXBlPSJub3RhdGlvbjpEZWNvcmF0aW9uTm9kZSIgeG1pOmlkPSJfT0YzZWwtTElFZVN2NWR3dlo5TlNEdyIgdHlwZT0iNTAyMCIvPg0KKyAgICAgIDxjaGlsZHJlbiB4bWk6dHlwZT0ibm90YXRpb246RGVjb3JhdGlvbk5vZGUiIHhtaTppZD0iX09GM2VtT0xJRWVTdjVkd3ZaOU5TRHciIHR5cGU9IjcwMDkiPg0KKyAgICAgICAgPHN0eWxlcyB4bWk6dHlwZT0ibm90YXRpb246VGl0bGVTdHlsZSIgeG1pOmlkPSJfT0YzZW1lTElFZVN2NWR3dlo5TlNEdyIvPg0KKyAgICAgICAgPGxheW91dENvbnN0cmFpbnQgeG1pOnR5cGU9Im5vdGF0aW9uOkJvdW5kcyIgeG1pOmlkPSJfT0YzZW11TElFZVN2NWR3dlo5TlNEdyIvPg0KKyAgICAgIDwvY2hpbGRyZW4+DQorICAgICAgPGVsZW1lbnQgeG1pOnR5cGU9InVtbDpNb2RlbCIgaHJlZj0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRpYWdyYW0uaW50ZXJuYWxibG9jay51bWwjX09Gc2ZjLUxJRWVTdjVkd3ZaOU5TRHciLz4NCisgICAgICA8bGF5b3V0Q29uc3RyYWludCB4bWk6dHlwZT0ibm90YXRpb246Qm91bmRzIiB4bWk6aWQ9Il9PRjNlbS1MSUVlU3Y1ZHd2WjlOU0R3IiB4PSIyMDQiIHk9IjE3MyIvPg0KKyAgICA8L2NoaWxkcmVuPg0KKyAgICA8Y2hpbGRyZW4geG1pOnR5cGU9Im5vdGF0aW9uOlNoYXBlIiB4bWk6aWQ9Il9PRjNlbk9MSUVlU3Y1ZHd2WjlOU0R3IiB0eXBlPSIyMDA1Ij4NCisgICAgICA8Y2hpbGRyZW4geG1pOnR5cGU9Im5vdGF0aW9uOkRlY29yYXRpb25Ob2RlIiB4bWk6aWQ9Il9PRjNlbmVMSUVlU3Y1ZHd2WjlOU0R3IiB0eXBlPSI1MDIwIi8+DQorICAgICAgPGNoaWxkcmVuIHhtaTp0eXBlPSJub3RhdGlvbjpEZWNvcmF0aW9uTm9kZSIgeG1pOmlkPSJfT0YzZW51TElFZVN2NWR3dlo5TlNEdyIgdHlwZT0iNzAwOSI+DQorICAgICAgICA8c3R5bGVzIHhtaTp0eXBlPSJub3RhdGlvbjpUaXRsZVN0eWxlIiB4bWk6aWQ9Il9PRjNlbi1MSUVlU3Y1ZHd2WjlOU0R3Ii8+DQorICAgICAgICA8bGF5b3V0Q29uc3RyYWludCB4bWk6dHlwZT0ibm90YXRpb246Qm91bmRzIiB4bWk6aWQ9Il9PRjNlb09MSUVlU3Y1ZHd2WjlOU0R3Ii8+DQorICAgICAgPC9jaGlsZHJlbj4NCisgICAgICA8ZWxlbWVudCB4bWk6dHlwZT0idW1sOk1vZGVsIiBocmVmPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGlhZ3JhbS5pbnRlcm5hbGJsb2NrLnVtbCNfT0ZzZmR1TElFZVN2NWR3dlo5TlNEdyIvPg0KKyAgICAgIDxsYXlvdXRDb25zdHJhaW50IHhtaTp0eXBlPSJub3RhdGlvbjpCb3VuZHMiIHhtaTppZD0iX09GM2VvZUxJRWVTdjVkd3ZaOU5TRHciIHg9IjIwNiIgeT0iMzI5Ii8+DQorICAgIDwvY2hpbGRyZW4+DQorICAgIDxjaGlsZHJlbiB4bWk6dHlwZT0ibm90YXRpb246U2hhcGUiIHhtaTppZD0iX09GM2VvdUxJRWVTdjVkd3ZaOU5TRHciIHR5cGU9IjIwMDUiPg0KKyAgICAgIDxjaGlsZHJlbiB4bWk6dHlwZT0ibm90YXRpb246RGVjb3JhdGlvbk5vZGUiIHhtaTppZD0iX09GM2VvLUxJRWVTdjVkd3ZaOU5TRHciIHR5cGU9IjUwMjAiLz4NCisgICAgICA8Y2hpbGRyZW4geG1pOnR5cGU9Im5vdGF0aW9uOkRlY29yYXRpb25Ob2RlIiB4bWk6aWQ9Il9PRjNlcE9MSUVlU3Y1ZHd2WjlOU0R3IiB0eXBlPSI3MDA5Ij4NCisgICAgICAgIDxzdHlsZXMgeG1pOnR5cGU9Im5vdGF0aW9uOlRpdGxlU3R5bGUiIHhtaTppZD0iX09GM2VwZUxJRWVTdjVkd3ZaOU5TRHciLz4NCisgICAgICAgIDxsYXlvdXRDb25zdHJhaW50IHhtaTp0eXBlPSJub3RhdGlvbjpCb3VuZHMiIHhtaTppZD0iX09GM2VwdUxJRWVTdjVkd3ZaOU5TRHciLz4NCisgICAgICA8L2NoaWxkcmVuPg0KKyAgICAgIDxlbGVtZW50IHhtaTp0eXBlPSJ1bWw6TW9kZWwiIGhyZWY9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kaWFncmFtLmludGVybmFsYmxvY2sudW1sI19PRnNmZU9MSUVlU3Y1ZHd2WjlOU0R3Ii8+DQorICAgICAgPGxheW91dENvbnN0cmFpbnQgeG1pOnR5cGU9Im5vdGF0aW9uOkJvdW5kcyIgeG1pOmlkPSJfT0YzZXAtTElFZVN2NWR3dlo5TlNEdyIgeD0iNjM1IiB5PSIzMjQiLz4NCisgICAgPC9jaGlsZHJlbj4NCisgICAgPHN0eWxlcyB4bWk6dHlwZT0ibm90YXRpb246RGlhZ3JhbVN0eWxlIiB4bWk6aWQ9Il9PRjNlcU9MSUVlU3Y1ZHd2WjlOU0R3Ii8+DQorICAgIDxzdHlsZXMgeG1pOnR5cGU9InN0eWxlOlBhcHlydXNWaWV3U3R5bGUiIHhtaTppZD0iX09GM2VxZUxJRWVTdjVkd3ZaOU5TRHciPg0KKyAgICAgIDxvd25lciB4bWk6dHlwZT0idW1sOk1vZGVsIiBocmVmPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGlhZ3JhbS5pbnRlcm5hbGJsb2NrLnVtbCNfT0ZzZmNPTElFZVN2NWR3dlo5TlNEdyIvPg0KKyAgICAgIDxjb25maWd1cmF0aW9uIHhtaTp0eXBlPSJjb25maWd1cmF0aW9uOlBhcHlydXNEaWFncmFtIiBocmVmPSJwbGF0Zm9ybTovcGx1Z2luL29yZy5lY2xpcHNlLnBhcHlydXMuaW5mcmEudmlld3BvaW50cy5wb2xpY3kvYnVpbHRpbi9kZWZhdWx0LmNvbmZpZ3VyYXRpb24jXzd3TG1wTnhoRWVPcUh2UnlpTjg3aEEiLz4NCisgICAgPC9zdHlsZXM+DQorICAgIDxlbGVtZW50IHhtaTp0eXBlPSJ1bWw6TW9kZWwiIGhyZWY9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kaWFncmFtLmludGVybmFsYmxvY2sudW1sI19PRnNmY09MSUVlU3Y1ZHd2WjlOU0R3Ii8+DQorICAgIDxlZGdlcyB4bWk6dHlwZT0ibm90YXRpb246Q29ubmVjdG9yIiB4bWk6aWQ9Il9PRjNlcXVMSUVlU3Y1ZHd2WjlOU0R3IiB0eXBlPSI0MDA2IiBzb3VyY2U9Il9PRjNlbHVMSUVlU3Y1ZHd2WjlOU0R3IiB0YXJnZXQ9Il9PRjNla09MSUVlU3Y1ZHd2WjlOU0R3Ij4NCisgICAgICA8Y2hpbGRyZW4geG1pOnR5cGU9Im5vdGF0aW9uOkRlY29yYXRpb25Ob2RlIiB4bWk6aWQ9Il9PRjNlcS1MSUVlU3Y1ZHd2WjlOU0R3IiB2aXNpYmxlPSJmYWxzZSIgdHlwZT0iNjAxNCI+DQorICAgICAgICA8bGF5b3V0Q29uc3RyYWludCB4bWk6dHlwZT0ibm90YXRpb246TG9jYXRpb24iIHhtaTppZD0iX09GM2VyT0xJRWVTdjVkd3ZaOU5TRHciIHk9IjQwIi8+DQorICAgICAgPC9jaGlsZHJlbj4NCisgICAgICA8Y2hpbGRyZW4geG1pOnR5cGU9Im5vdGF0aW9uOkRlY29yYXRpb25Ob2RlIiB4bWk6aWQ9Il9PRjNlcmVMSUVlU3Y1ZHd2WjlOU0R3IiB2aXNpYmxlPSJmYWxzZSIgdHlwZT0iNjAxNSI+DQorICAgICAgICA8bGF5b3V0Q29uc3RyYWludCB4bWk6dHlwZT0ibm90YXRpb246TG9jYXRpb24iIHhtaTppZD0iX09GM2VydUxJRWVTdjVkd3ZaOU5TRHciIHk9IjYwIi8+DQorICAgICAgPC9jaGlsZHJlbj4NCisgICAgICA8c3R5bGVzIHhtaTp0eXBlPSJub3RhdGlvbjpGb250U3R5bGUiIHhtaTppZD0iX09GM2VyLUxJRWVTdjVkd3ZaOU5TRHciLz4NCisgICAgICA8ZWxlbWVudCB4bWk6dHlwZT0idW1sOkFic3RyYWN0aW9uIiBocmVmPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGlhZ3JhbS5pbnRlcm5hbGJsb2NrLnVtbCNfT0ZzZmRPTElFZVN2NWR3dlo5TlNEdyIvPg0KKyAgICAgIDxiZW5kcG9pbnRzIHhtaTp0eXBlPSJub3RhdGlvbjpSZWxhdGl2ZUJlbmRwb2ludHMiIHhtaTppZD0iX09GM2VzT0xJRWVTdjVkd3ZaOU5TRHciIHBvaW50cz0iWy0yLCAtMTAsIDgsIDQ4XSRbLTI3LCAtNDUsIC0xNywgMTNdIi8+DQorICAgICAgPHNvdXJjZUFuY2hvciB4bWk6dHlwZT0ibm90YXRpb246SWRlbnRpdHlBbmNob3IiIHhtaTppZD0iX09GM2VzZUxJRWVTdjVkd3ZaOU5TRHciIGlkPSIoMC4zMDUsMC4xKSIvPg0KKyAgICAgIDx0YXJnZXRBbmNob3IgeG1pOnR5cGU9Im5vdGF0aW9uOklkZW50aXR5QW5jaG9yIiB4bWk6aWQ9Il9PRjNlc3VMSUVlU3Y1ZHd2WjlOU0R3IiBpZD0iKDAuMjcsMC44NykiLz4NCisgICAgPC9lZGdlcz4NCisgICAgPGVkZ2VzIHhtaTp0eXBlPSJub3RhdGlvbjpDb25uZWN0b3IiIHhtaTppZD0iX09GM2VzLUxJRWVTdjVkd3ZaOU5TRHciIHR5cGU9IjQwMDYiIHNvdXJjZT0iX09GM2VuT0xJRWVTdjVkd3ZaOU5TRHciIHRhcmdldD0iX09GM2VsdUxJRWVTdjVkd3ZaOU5TRHciPg0KKyAgICAgIDxjaGlsZHJlbiB4bWk6dHlwZT0ibm90YXRpb246RGVjb3JhdGlvbk5vZGUiIHhtaTppZD0iX09GM2V0T0xJRWVTdjVkd3ZaOU5TRHciIHZpc2libGU9ImZhbHNlIiB0eXBlPSI2MDE0Ij4NCisgICAgICAgIDxsYXlvdXRDb25zdHJhaW50IHhtaTp0eXBlPSJub3RhdGlvbjpMb2NhdGlvbiIgeG1pOmlkPSJfT0YzZXRlTElFZVN2NWR3dlo5TlNEdyIgeT0iNDAiLz4NCisgICAgICA8L2NoaWxkcmVuPg0KKyAgICAgIDxjaGlsZHJlbiB4bWk6dHlwZT0ibm90YXRpb246RGVjb3JhdGlvbk5vZGUiIHhtaTppZD0iX09GM2V0dUxJRWVTdjVkd3ZaOU5TRHciIHZpc2libGU9ImZhbHNlIiB0eXBlPSI2MDE1Ij4NCisgICAgICAgIDxsYXlvdXRDb25zdHJhaW50IHhtaTp0eXBlPSJub3RhdGlvbjpMb2NhdGlvbiIgeG1pOmlkPSJfT0YzZXQtTElFZVN2NWR3dlo5TlNEdyIgeT0iNjAiLz4NCisgICAgICA8L2NoaWxkcmVuPg0KKyAgICAgIDxzdHlsZXMgeG1pOnR5cGU9Im5vdGF0aW9uOkZvbnRTdHlsZSIgeG1pOmlkPSJfT0YzZXVPTElFZVN2NWR3dlo5TlNEdyIvPg0KKyAgICAgIDxlbGVtZW50IHhtaTp0eXBlPSJ1bWw6QWJzdHJhY3Rpb24iIGhyZWY9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kaWFncmFtLmludGVybmFsYmxvY2sudW1sI19PRnNmZC1MSUVlU3Y1ZHd2WjlOU0R3Ii8+DQorICAgICAgPGJlbmRwb2ludHMgeG1pOnR5cGU9Im5vdGF0aW9uOlJlbGF0aXZlQmVuZHBvaW50cyIgeG1pOmlkPSJfT0YzZXVlTElFZVN2NWR3dlo5TlNEdyIgcG9pbnRzPSJbLTksIC0xNiwgMCwgNjddJFstMjQsIC03MiwgLTE1LCAxMV0iLz4NCisgICAgICA8c291cmNlQW5jaG9yIHhtaTp0eXBlPSJub3RhdGlvbjpJZGVudGl0eUFuY2hvciIgeG1pOmlkPSJfT0YzZXV1TElFZVN2NWR3dlo5TlNEdyIgaWQ9IigwLjI3LDAuMTYpIi8+DQorICAgICAgPHRhcmdldEFuY2hvciB4bWk6dHlwZT0ibm90YXRpb246SWRlbnRpdHlBbmNob3IiIHhtaTppZD0iX09GM2V1LUxJRWVTdjVkd3ZaOU5TRHciIGlkPSIoMC4yMzUsMC44OSkiLz4NCisgICAgPC9lZGdlcz4NCisgICAgPGVkZ2VzIHhtaTp0eXBlPSJub3RhdGlvbjpDb25uZWN0b3IiIHhtaTppZD0iX09GM2V2T0xJRWVTdjVkd3ZaOU5TRHciIHR5cGU9IjQwMDgiIHNvdXJjZT0iX09GM2VvdUxJRWVTdjVkd3ZaOU5TRHciIHRhcmdldD0iX09GM2VsdUxJRWVTdjVkd3ZaOU5TRHciPg0KKyAgICAgIDxjaGlsZHJlbiB4bWk6dHlwZT0ibm90YXRpb246RGVjb3JhdGlvbk5vZGUiIHhtaTppZD0iX09GM2V2ZUxJRWVTdjVkd3ZaOU5TRHciIHZpc2libGU9ImZhbHNlIiB0eXBlPSI2MDI2Ij4NCisgICAgICAgIDxsYXlvdXRDb25zdHJhaW50IHhtaTp0eXBlPSJub3RhdGlvbjpMb2NhdGlvbiIgeG1pOmlkPSJfT0YzZXZ1TElFZVN2NWR3dlo5TlNEdyIgeT0iNDAiLz4NCisgICAgICA8L2NoaWxkcmVuPg0KKyAgICAgIDxjaGlsZHJlbiB4bWk6dHlwZT0ibm90YXRpb246RGVjb3JhdGlvbk5vZGUiIHhtaTppZD0iX09GM2V2LUxJRWVTdjVkd3ZaOU5TRHciIHZpc2libGU9ImZhbHNlIiB0eXBlPSI2MDI3Ij4NCisgICAgICAgIDxsYXlvdXRDb25zdHJhaW50IHhtaTp0eXBlPSJub3RhdGlvbjpMb2NhdGlvbiIgeG1pOmlkPSJfT0YzZXdPTElFZVN2NWR3dlo5TlNEdyIgeT0iNjAiLz4NCisgICAgICA8L2NoaWxkcmVuPg0KKyAgICAgIDxzdHlsZXMgeG1pOnR5cGU9Im5vdGF0aW9uOkZvbnRTdHlsZSIgeG1pOmlkPSJfT0YzZXdlTElFZVN2NWR3dlo5TlNEdyIvPg0KKyAgICAgIDxlbGVtZW50IHhtaTp0eXBlPSJ1bWw6RGVwZW5kZW5jeSIgaHJlZj0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRpYWdyYW0uaW50ZXJuYWxibG9jay51bWwjX09Gc2ZlZUxJRWVTdjVkd3ZaOU5TRHciLz4NCisgICAgICA8YmVuZHBvaW50cyB4bWk6dHlwZT0ibm90YXRpb246UmVsYXRpdmVCZW5kcG9pbnRzIiB4bWk6aWQ9Il9PRjNld3VMSUVlU3Y1ZHd2WjlOU0R3IiBwb2ludHM9IlstNDYsIC0yMCwgMjY1LCAxMTNdJFstMjc1LCAtMTM1LCAzNiwgLTJdIi8+DQorICAgICAgPHNvdXJjZUFuY2hvciB4bWk6dHlwZT0ibm90YXRpb246SWRlbnRpdHlBbmNob3IiIHhtaTppZD0iX09GM2V3LUxJRWVTdjVkd3ZaOU5TRHciIGlkPSIoMC4wLDAuMjQpIi8+DQorICAgICAgPHRhcmdldEFuY2hvciB4bWk6dHlwZT0ibm90YXRpb246SWRlbnRpdHlBbmNob3IiIHhtaTppZD0iX09GM2V4T0xJRWVTdjVkd3ZaOU5TRHciIGlkPSIoMS4wLDAuNjUpIi8+DQorICAgIDwvZWRnZXM+DQorICAgIDxlZGdlcyB4bWk6dHlwZT0ibm90YXRpb246Q29ubmVjdG9yIiB4bWk6aWQ9Il9PRjNleGVMSUVlU3Y1ZHd2WjlOU0R3IiB0eXBlPSI0MDA4IiBzb3VyY2U9Il9PRjNlb3VMSUVlU3Y1ZHd2WjlOU0R3IiB0YXJnZXQ9Il9PRjNlbk9MSUVlU3Y1ZHd2WjlOU0R3Ij4NCisgICAgICA8Y2hpbGRyZW4geG1pOnR5cGU9Im5vdGF0aW9uOkRlY29yYXRpb25Ob2RlIiB4bWk6aWQ9Il9PRjNleHVMSUVlU3Y1ZHd2WjlOU0R3IiB2aXNpYmxlPSJmYWxzZSIgdHlwZT0iNjAyNiI+DQorICAgICAgICA8bGF5b3V0Q29uc3RyYWludCB4bWk6dHlwZT0ibm90YXRpb246TG9jYXRpb24iIHhtaTppZD0iX09GM2V4LUxJRWVTdjVkd3ZaOU5TRHciIHk9IjQwIi8+DQorICAgICAgPC9jaGlsZHJlbj4NCisgICAgICA8Y2hpbGRyZW4geG1pOnR5cGU9Im5vdGF0aW9uOkRlY29yYXRpb25Ob2RlIiB4bWk6aWQ9Il9PRjNleU9MSUVlU3Y1ZHd2WjlOU0R3IiB2aXNpYmxlPSJmYWxzZSIgdHlwZT0iNjAyNyI+DQorICAgICAgICA8bGF5b3V0Q29uc3RyYWludCB4bWk6dHlwZT0ibm90YXRpb246TG9jYXRpb24iIHhtaTppZD0iX09GM2V5ZUxJRWVTdjVkd3ZaOU5TRHciIHk9IjYwIi8+DQorICAgICAgPC9jaGlsZHJlbj4NCisgICAgICA8c3R5bGVzIHhtaTp0eXBlPSJub3RhdGlvbjpGb250U3R5bGUiIHhtaTppZD0iX09GM2V5dUxJRWVTdjVkd3ZaOU5TRHciLz4NCisgICAgICA8ZWxlbWVudCB4bWk6dHlwZT0idW1sOkRlcGVuZGVuY3kiIGhyZWY9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kaWFncmFtLmludGVybmFsYmxvY2sudW1sI19PRnNmZXVMSUVlU3Y1ZHd2WjlOU0R3Ii8+DQorICAgICAgPGJlbmRwb2ludHMgeG1pOnR5cGU9Im5vdGF0aW9uOlJlbGF0aXZlQmVuZHBvaW50cyIgeG1pOmlkPSJfT0YzZXktTElFZVN2NWR3dlo5TlNEdyIgcG9pbnRzPSJbLTQwLCAxLCAyNjIsIC0xMl0kWy0yNjcsIDIwLCAzNSwgN10iLz4NCisgICAgICA8c291cmNlQW5jaG9yIHhtaTp0eXBlPSJub3RhdGlvbjpJZGVudGl0eUFuY2hvciIgeG1pOmlkPSJfT0YzZXpPTElFZVN2NWR3dlo5TlNEdyIgaWQ9IigwLjAsMC42OSkiLz4NCisgICAgICA8dGFyZ2V0QW5jaG9yIHhtaTp0eXBlPSJub3RhdGlvbjpJZGVudGl0eUFuY2hvciIgeG1pOmlkPSJfT0YzZXplTElFZVN2NWR3dlo5TlNEdyIgaWQ9IigxLjAsMC42NCkiLz4NCisgICAgPC9lZGdlcz4NCisgIDwvbm90YXRpb246RGlhZ3JhbT4NCisgIDxjc3M6TW9kZWxTdHlsZVNoZWV0cyB4bWk6aWQ9Il9NWEJsVU9jMUVlU0xkUEdlMnE5UjBnIi8+DQorICA8bmF0dGFibGU6VGFibGUgeG1pOmlkPSJfRkI0aXNPZ0VFZVNVUXZYaEVWUWg4dyIgbmFtZT0iUGFsZXR0ZSBSZXF1aXJlbWVudCBUYWJsZSIgY3VycmVudFJvd0F4aXNQcm92aWRlcj0iX0ZCNGl0ZWdFRWVTVVF2WGhFVlFoOHciIGN1cnJlbnRDb2x1bW5BeGlzUHJvdmlkZXI9Il9GQjRpc2VnRUVlU1VRdlhoRVZRaDh3Ij4NCisgICAgPGNvbnRleHQgeG1pOnR5cGU9InVtbDpNb2RlbCIgaHJlZj0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRpYWdyYW0uaW50ZXJuYWxibG9jay51bWwjX09Gc2ZjdUxJRWVTdjVkd3ZaOU5TRHciLz4NCisgICAgPG93bmVyIHhtaTp0eXBlPSJ1bWw6TW9kZWwiIGhyZWY9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kaWFncmFtLmludGVybmFsYmxvY2sudW1sI19PRnNmY3VMSUVlU3Y1ZHd2WjlOU0R3Ii8+DQorICAgIDxwcm90b3R5cGUgeG1pOnR5cGU9ImNvbmZpZ3VyYXRpb246UGFweXJ1c1N5bmNUYWJsZSIgaHJlZj0icGxhdGZvcm06L3BsdWdpbi9vcmcuZWNsaXBzZS5wYXB5cnVzLmluZnJhLnZpZXdwb2ludHMucG9saWN5L2J1aWx0aW4vZGVmYXVsdC5jb25maWd1cmF0aW9uI183d05iM3R4aEVlT3FIdlJ5aU44N2hBIi8+DQorICAgIDx0YWJsZUNvbmZpZ3VyYXRpb24geG1pOnR5cGU9Im5hdHRhYmxlY29uZmlndXJhdGlvbjpUYWJsZUNvbmZpZ3VyYXRpb24iIGhyZWY9InBsYXRmb3JtOi9wbHVnaW4vb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbC5uYXR0YWJsZS5yZXF1aXJlbWVudC5jb25maWcvY29uZmlncy9yZXF1aXJlbWVudC5uYXR0YWJsZWNvbmZpZ3VyYXRpb24jLyIvPg0KKyAgICA8Y29sdW1uQXhpc1Byb3ZpZGVyc0hpc3RvcnkgeG1pOnR5cGU9Im5hdHRhYmxlYXhpc3Byb3ZpZGVyOlNsYXZlT2JqZWN0QXhpc1Byb3ZpZGVyIiB4bWk6aWQ9Il9GQjRpc2VnRUVlU1VRdlhoRVZRaDh3IiBkZXNjcmlwdGlvbj0iUHJvdmlkZXMgdGhlIGNvbHVtbnMgb2YgdGhlIHRhYmxlcyB3aXRoIGEgZGVmYXVsdCBjb25maWd1cmF0aW9uIiBuYW1lPSJSZXF1aXJlbWVudHMgRmVhdHVyZSBDb2x1bW5zIFByb3ZpZGVyIj4NCisgICAgICA8YXhpcyB4bWk6dHlwZT0ibmF0dGFibGVheGlzOkZlYXR1cmVJZEF4aXMiIHhtaTppZD0iX0ZCNGlzdWdFRWVTVVF2WGhFVlFoOHciIGVsZW1lbnQ9InByb3BlcnR5X29mX3N0ZXJlb3R5cGU6L1N5c01MOjpSZXF1aXJlbWVudHM6OlJlcXVpcmVtZW50OjppZCI+DQorICAgICAgICA8c3R5bGVzIHhtaTp0eXBlPSJuYXR0YWJsZXN0eWxlOkludFZhbHVlU3R5bGUiIHhtaTppZD0iXzBDWDdVT2dJRWVTVVF2WGhFVlFoOHciIG5hbWU9ImF4aXNXaWR0aCIgaW50VmFsdWU9IjMyMCIvPg0KKyAgICAgICAgPG1hbmFnZXIgeG1pOnR5cGU9Im5hdHRhYmxlYXhpc2NvbmZpZ3VyYXRpb246QXhpc01hbmFnZXJSZXByZXNlbnRhdGlvbiIgaHJlZj0icGxhdGZvcm06L3BsdWdpbi9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sLm5hdHRhYmxlLnJlcXVpcmVtZW50LmNvbmZpZy9jb25maWdzL3JlcXVpcmVtZW50Lm5hdHRhYmxlY29uZmlndXJhdGlvbiMvL0Bjb2x1bW5IZWFkZXJBeGlzQ29uZmlndXJhdGlvbi9AYXhpc01hbmFnZXJzLjEiLz4NCisgICAgICA8L2F4aXM+DQorICAgICAgPGF4aXMgeG1pOnR5cGU9Im5hdHRhYmxlYXhpczpFU3RydWN0dXJhbEZlYXR1cmVBeGlzIiB4bWk6aWQ9Il9GQjRpcy1nRUVlU1VRdlhoRVZRaDh3Ij4NCisgICAgICAgIDxzdHlsZXMgeG1pOnR5cGU9Im5hdHRhYmxlc3R5bGU6SW50VmFsdWVTdHlsZSIgeG1pOmlkPSJfMEM3OEFPZ0lFZVNVUXZYaEVWUWg4dyIgbmFtZT0iYXhpc1dpZHRoIiBpbnRWYWx1ZT0iMjIwIi8+DQorICAgICAgICA8bWFuYWdlciB4bWk6dHlwZT0ibmF0dGFibGVheGlzY29uZmlndXJhdGlvbjpBeGlzTWFuYWdlclJlcHJlc2VudGF0aW9uIiBocmVmPSJwbGF0Zm9ybTovcGx1Z2luL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwubmF0dGFibGUucmVxdWlyZW1lbnQuY29uZmlnL2NvbmZpZ3MvcmVxdWlyZW1lbnQubmF0dGFibGVjb25maWd1cmF0aW9uIy8vQGNvbHVtbkhlYWRlckF4aXNDb25maWd1cmF0aW9uL0BheGlzTWFuYWdlcnMuMCIvPg0KKyAgICAgICAgPGVsZW1lbnQgeG1pOnR5cGU9ImVjb3JlOkVBdHRyaWJ1dGUiIGhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvdW1sMi81LjAuMC9VTUwjLy9OYW1lZEVsZW1lbnQvbmFtZSIvPg0KKyAgICAgIDwvYXhpcz4NCisgICAgICA8YXhpcyB4bWk6dHlwZT0ibmF0dGFibGVheGlzOkZlYXR1cmVJZEF4aXMiIHhtaTppZD0iX0ZCNGl0T2dFRWVTVVF2WGhFVlFoOHciIGVsZW1lbnQ9InByb3BlcnR5X29mX3N0ZXJlb3R5cGU6L1N5c01MOjpSZXF1aXJlbWVudHM6OlJlcXVpcmVtZW50Ojp0ZXh0Ij4NCisgICAgICAgIDxzdHlsZXMgeG1pOnR5cGU9Im5hdHRhYmxlc3R5bGU6SW50VmFsdWVTdHlsZSIgeG1pOmlkPSJfMEM5S0lPZ0lFZVNVUXZYaEVWUWg4dyIgbmFtZT0iYXhpc1dpZHRoIiBpbnRWYWx1ZT0iMjIwIi8+DQorICAgICAgICA8bWFuYWdlciB4bWk6dHlwZT0ibmF0dGFibGVheGlzY29uZmlndXJhdGlvbjpBeGlzTWFuYWdlclJlcHJlc2VudGF0aW9uIiBocmVmPSJwbGF0Zm9ybTovcGx1Z2luL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwubmF0dGFibGUucmVxdWlyZW1lbnQuY29uZmlnL2NvbmZpZ3MvcmVxdWlyZW1lbnQubmF0dGFibGVjb25maWd1cmF0aW9uIy8vQGNvbHVtbkhlYWRlckF4aXNDb25maWd1cmF0aW9uL0BheGlzTWFuYWdlcnMuMSIvPg0KKyAgICAgIDwvYXhpcz4NCisgICAgPC9jb2x1bW5BeGlzUHJvdmlkZXJzSGlzdG9yeT4NCisgICAgPHJvd0F4aXNQcm92aWRlcnNIaXN0b3J5IHhtaTp0eXBlPSJuYXR0YWJsZWF4aXNwcm92aWRlcjpNYXN0ZXJPYmplY3RBeGlzUHJvdmlkZXIiIHhtaTppZD0iX0ZCNGl0ZWdFRWVTVVF2WGhFVlFoOHciIGRlc2NyaXB0aW9uPSJQcm92aWRlcyB0aGUgcmVxdWlyZW1lbnRzIGRpcmVjdGx5IG93bmVkIGJ5IHRoZSBjb250ZXh0IG9mIHRoZSB0YWJsZSIgbmFtZT0iUmVxdWlyZW1lbnQgQXhpcyBQcm92aWRlciIgZGlzY29ubmVjdFNsYXZlPSJ0cnVlIi8+DQorICAgIDxsb2NhbFJvd0hlYWRlckF4aXNDb25maWd1cmF0aW9uIHhtaTp0eXBlPSJuYXR0YWJsZWF4aXNjb25maWd1cmF0aW9uOkxvY2FsVGFibGVIZWFkZXJBeGlzQ29uZmlndXJhdGlvbiIgeG1pOmlkPSJfOWVua2dCVEVFZVdWZEx2WDFUcUJWZyIgaW5kZXhTdHlsZT0iTlVNRVJJQyI+DQorICAgICAgPHN0eWxlcyB4bWk6dHlwZT0ibmF0dGFibGVzdHlsZTpJbnRWYWx1ZVN0eWxlIiB4bWk6aWQ9Il85ZXRySUJURUVlV1ZkTHZYMVRxQlZnIiBuYW1lPSJyb3dMYWJlbFdpZHRoIiBpbnRWYWx1ZT0iMzQ1Ii8+DQorICAgICAgPHN0eWxlcyB4bWk6dHlwZT0ibmF0dGFibGVzdHlsZTpJbnRWYWx1ZVN0eWxlIiB4bWk6aWQ9Il85Z0JTc0JURUVlV1ZkTHZYMVRxQlZnIiBuYW1lPSJyb3dJbmRleFdpZHRoIiBpbnRWYWx1ZT0iMTY1Ii8+DQorICAgIDwvbG9jYWxSb3dIZWFkZXJBeGlzQ29uZmlndXJhdGlvbj4NCisgICAgPGxvY2FsQ29sdW1uSGVhZGVyQXhpc0NvbmZpZ3VyYXRpb24geG1pOnR5cGU9Im5hdHRhYmxlYXhpc2NvbmZpZ3VyYXRpb246TG9jYWxUYWJsZUhlYWRlckF4aXNDb25maWd1cmF0aW9uIiB4bWk6aWQ9Il85Zi1QWUJURUVlV1ZkTHZYMVRxQlZnIj4NCisgICAgICA8c3R5bGVzIHhtaTp0eXBlPSJuYXR0YWJsZXN0eWxlOkludFZhbHVlU3R5bGUiIHhtaTppZD0iXzlmLTJjQlRFRWVXVmRMdlgxVHFCVmciIG5hbWU9ImNvbHVtbkluZGV4SGVpZ2h0IiBpbnRWYWx1ZT0iMjUiLz4NCisgICAgICA8c3R5bGVzIHhtaTp0eXBlPSJuYXR0YWJsZXN0eWxlOkludFZhbHVlU3R5bGUiIHhtaTppZD0iXzlmX2RnQlRFRWVXVmRMdlgxVHFCVmciIG5hbWU9ImNvbHVtbkxhYmVsSGVpZ2h0IiBpbnRWYWx1ZT0iMjUiLz4NCisgICAgPC9sb2NhbENvbHVtbkhlYWRlckF4aXNDb25maWd1cmF0aW9uPg0KKyAgPC9uYXR0YWJsZTpUYWJsZT4NCis8L3htaTpYTUk+DQpkaWZmIC0tZ2l0IGEvZGlhZ3JhbS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGlhZ3JhbS5pbnRlcm5hbGJsb2NrL3Jlc291cmNlcy9kb2Mvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRpYWdyYW0uaW50ZXJuYWxibG9jay51bWwgYi9kaWFncmFtL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kaWFncmFtLmludGVybmFsYmxvY2svcmVzb3VyY2VzL2RvYy9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGlhZ3JhbS5pbnRlcm5hbGJsb2NrLnVtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZDI4ZDc2Ci0tLSAvZGV2L251bGwKKysrIGIvZGlhZ3JhbS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGlhZ3JhbS5pbnRlcm5hbGJsb2NrL3Jlc291cmNlcy9kb2Mvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRpYWdyYW0uaW50ZXJuYWxibG9jay51bWwKQEAgLTAsMCArMSwzNCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4NCis8eG1pOlhNSSB4bWk6dmVyc2lvbj0iMjAxMzEwMDEiIHhtbG5zOnhtaT0iaHR0cDovL3d3dy5vbWcub3JnL3NwZWMvWE1JLzIwMTMxMDAxIiB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIiB4bWxuczpSZXF1aXJlbWVudHM9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvcGFweXJ1cy8wLjcuMC9TeXNNTC9SZXF1aXJlbWVudHMiIHhtbG5zOmVjb3JlPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2VtZi8yMDAyL0Vjb3JlIiB4bWxuczp1bWw9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvdW1sMi81LjAuMC9VTUwiIHhzaTpzY2hlbWFMb2NhdGlvbj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9wYXB5cnVzLzAuNy4wL1N5c01ML1JlcXVpcmVtZW50cyBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3BhcHlydXMvMC43LjAvU3lzTUwjLy9yZXF1aXJlbWVudHMiPg0KKyAgPHVtbDpNb2RlbCB4bWk6aWQ9Il9PRnNmY09MSUVlU3Y1ZHd2WjlOU0R3IiBuYW1lPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGlhZ3JhbS5pbnRlcm5hbGJsb2NrIj4NCisgICAgPHBhY2thZ2VJbXBvcnQgeG1pOnR5cGU9InVtbDpQYWNrYWdlSW1wb3J0IiB4bWk6aWQ9Il9PRnNmY2VMSUVlU3Y1ZHd2WjlOU0R3Ij4NCisgICAgICA8aW1wb3J0ZWRQYWNrYWdlIHhtaTp0eXBlPSJ1bWw6TW9kZWwiIGhyZWY9InBhdGhtYXA6Ly9VTUxfTElCUkFSSUVTL1VNTFByaW1pdGl2ZVR5cGVzLmxpYnJhcnkudW1sI18wIi8+DQorICAgIDwvcGFja2FnZUltcG9ydD4NCisgICAgPHBhY2thZ2VkRWxlbWVudCB4bWk6dHlwZT0idW1sOk1vZGVsIiB4bWk6aWQ9Il9PRnNmY3VMSUVlU3Y1ZHd2WjlOU0R3IiBuYW1lPSJSZXF1aXJlbWVudHMiPg0KKyAgICAgIDxwYWNrYWdlZEVsZW1lbnQgeG1pOnR5cGU9InVtbDpDbGFzcyIgeG1pOmlkPSJfV1BDZzBDWkNFZVd0bjZoam10dWZ1ZyIgbmFtZT0iRWxlbWVudHMgaW4gdGhlIHBhbGV0dGUiPg0KKyAgICAgICAgPG5lc3RlZENsYXNzaWZpZXIgeG1pOnR5cGU9InVtbDpDbGFzcyIgeG1pOmlkPSJfSWFWc1FPZ0VFZVNVUXZYaEVWUWg4dyIgbmFtZT0iQWN0b3IgcGFydCBpbiBJQkQgUGFsZXR0ZSIvPg0KKyAgICAgIDwvcGFja2FnZWRFbGVtZW50Pg0KKyAgICAgIDxwYWNrYWdlZEVsZW1lbnQgeG1pOnR5cGU9InVtbDpDbGFzcyIgeG1pOmlkPSJfR1o4RHNDQ01FZVdwOXJKMmdtdzU5QSIgbmFtZT0iQWN0b3IgcGFydCBjcmVhdGlvbiIvPg0KKyAgICA8L3BhY2thZ2VkRWxlbWVudD4NCisgICAgPHBhY2thZ2VkRWxlbWVudCB4bWk6dHlwZT0idW1sOk1vZGVsIiB4bWk6aWQ9Il9PRnNmYy1MSUVlU3Y1ZHd2WjlOU0R3IiBuYW1lPSJVc2VDYXNlcyI+DQorICAgICAgPHBhY2thZ2VkRWxlbWVudCB4bWk6dHlwZT0idW1sOkFic3RyYWN0aW9uIiB4bWk6aWQ9Il9PRnNmZE9MSUVlU3Y1ZHd2WjlOU0R3IiBuYW1lPSJ1c2VDYXNlc0Fic3RyYWN0aW9uIiBjbGllbnQ9Il9PRnNmYy1MSUVlU3Y1ZHd2WjlOU0R3IiBzdXBwbGllcj0iX09Gc2ZjdUxJRWVTdjVkd3ZaOU5TRHciLz4NCisgICAgICA8cGFja2FnZWRFbGVtZW50IHhtaTp0eXBlPSJ1bWw6Q29tcG9uZW50IiB4bWk6aWQ9Il9PRnNmZGVMSUVlU3Y1ZHd2WjlOU0R3IiBuYW1lPSJNeVN5c3RlbSIvPg0KKyAgICA8L3BhY2thZ2VkRWxlbWVudD4NCisgICAgPHBhY2thZ2VkRWxlbWVudCB4bWk6dHlwZT0idW1sOk1vZGVsIiB4bWk6aWQ9Il9PRnNmZHVMSUVlU3Y1ZHd2WjlOU0R3IiBuYW1lPSJEZXNpZ24iPg0KKyAgICAgIDxwYWNrYWdlZEVsZW1lbnQgeG1pOnR5cGU9InVtbDpBYnN0cmFjdGlvbiIgeG1pOmlkPSJfT0ZzZmQtTElFZVN2NWR3dlo5TlNEdyIgbmFtZT0iRGVzaWduQWJzdHJhY3Rpb24iIGNsaWVudD0iX09Gc2ZkdUxJRWVTdjVkd3ZaOU5TRHciIHN1cHBsaWVyPSJfT0ZzZmMtTElFZVN2NWR3dlo5TlNEdyIvPg0KKyAgICA8L3BhY2thZ2VkRWxlbWVudD4NCisgICAgPHBhY2thZ2VkRWxlbWVudCB4bWk6dHlwZT0idW1sOk1vZGVsIiB4bWk6aWQ9Il9PRnNmZU9MSUVlU3Y1ZHd2WjlOU0R3IiBuYW1lPSJUZXN0Ij4NCisgICAgICA8cGFja2FnZWRFbGVtZW50IHhtaTp0eXBlPSJ1bWw6RGVwZW5kZW5jeSIgeG1pOmlkPSJfT0ZzZmVlTElFZVN2NWR3dlo5TlNEdyIgbmFtZT0iRGVwZW5kZW5jeTEiIGNsaWVudD0iX09Gc2ZlT0xJRWVTdjVkd3ZaOU5TRHciIHN1cHBsaWVyPSJfT0ZzZmMtTElFZVN2NWR3dlo5TlNEdyIvPg0KKyAgICAgIDxwYWNrYWdlZEVsZW1lbnQgeG1pOnR5cGU9InVtbDpEZXBlbmRlbmN5IiB4bWk6aWQ9Il9PRnNmZXVMSUVlU3Y1ZHd2WjlOU0R3IiBuYW1lPSJEZXBlbmRlbmN5MiIgY2xpZW50PSJfT0ZzZmVPTElFZVN2NWR3dlo5TlNEdyIgc3VwcGxpZXI9Il9PRnNmZHVMSUVlU3Y1ZHd2WjlOU0R3Ii8+DQorICAgIDwvcGFja2FnZWRFbGVtZW50Pg0KKyAgICA8cHJvZmlsZUFwcGxpY2F0aW9uIHhtaTp0eXBlPSJ1bWw6UHJvZmlsZUFwcGxpY2F0aW9uIiB4bWk6aWQ9Il9PRnNmZ2VMSUVlU3Y1ZHd2WjlOU0R3Ij4NCisgICAgICA8ZUFubm90YXRpb25zIHhtaTp0eXBlPSJlY29yZTpFQW5ub3RhdGlvbiIgeG1pOmlkPSJfT0ZzZmd1TElFZVN2NWR3dlo5TlNEdyIgc291cmNlPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3VtbDIvMi4wLjAvVU1MIj4NCisgICAgICAgIDxyZWZlcmVuY2VzIHhtaTp0eXBlPSJlY29yZTpFUGFja2FnZSIgaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9wYXB5cnVzLzAuNy4wL1N5c01MIy8vcmVxdWlyZW1lbnRzIi8+DQorICAgICAgPC9lQW5ub3RhdGlvbnM+DQorICAgICAgPGFwcGxpZWRQcm9maWxlIHhtaTp0eXBlPSJ1bWw6UHJvZmlsZSIgaHJlZj0icGF0aG1hcDovL1N5c01MX1BST0ZJTEVTL1N5c01MLnByb2ZpbGUudW1sI19PT0pDNExYOEVkdUZtcVFzck5COWx3Ii8+DQorICAgIDwvcHJvZmlsZUFwcGxpY2F0aW9uPg0KKyAgPC91bWw6TW9kZWw+DQorICA8UmVxdWlyZW1lbnRzOlJlcXVpcmVtZW50IHhtaTppZD0iX0lhWUlnT2dFRWVTVVF2WGhFVlFoOHciIHRleHQ9IjguMi4yIEludGVybmFsIEJsb2NrIERpYWdyYW0mI3hEOyYjeEE7VGFibGUgOC4zIC0gR3JhcGhpY2FsIG5vZGVzIGRlZmluZWQgaW4gSW50ZXJuYWwgQmxvY2sgZGlhZ3JhbXMiIGlkPSJSZXEwMDEuMDAxIiBiYXNlX0NsYXNzPSJfSWFWc1FPZ0VFZVNVUXZYaEVWUWg4dyIvPg0KKyAgPFJlcXVpcmVtZW50czpSZXF1aXJlbWVudCB4bWk6aWQ9Il9HWjhxd0NDTUVlV3A5ckoyZ213NTlBIiB0ZXh0PSJUaGUgY3JlYXRpb24gb2YgYW4gYWN0b3IgcGFydCBzaG91bGQgYmUgZG9uZSBieSBhIHBvcHVwIHdpdGggMiBjaG9pY2VzIDogJiN4RDsmI3hBOyAgLSBjcmVhdGlvbiBvZiBhbiBBY3RvciYjeEQ7JiN4QTsgIC0gc2VsZWN0aW9uIG9mIGFuIEFjdG9yIiBpZD0iUmVxMDAyIiBiYXNlX0NsYXNzPSJfR1o4RHNDQ01FZVdwOXJKMmdtdzU5QSIvPg0KKyAgPFJlcXVpcmVtZW50czpSZXF1aXJlbWVudCB4bWk6aWQ9Il9XUERINENaQ0VlV3RuNmhqbXR1ZnVnIiBpZD0iUmVxXzAwMSIgYmFzZV9DbGFzcz0iX1dQQ2cwQ1pDRWVXdG42aGptdHVmdWciLz4NCis8L3htaTpYTUk+DQpkaWZmIC0tZ2l0IGEvZGlhZ3JhbS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGlhZ3JhbS5pbnRlcm5hbGJsb2NrL3Jlc291cmNlcy9wYWxldHRlL2ludGVybmFsQmxvY2tEaWFncmFtLnBhbGV0dGVjb25maWd1cmF0aW9uIGIvZGlhZ3JhbS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGlhZ3JhbS5pbnRlcm5hbGJsb2NrL3Jlc291cmNlcy9wYWxldHRlL2ludGVybmFsQmxvY2tEaWFncmFtLnBhbGV0dGVjb25maWd1cmF0aW9uCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRkYjRlYmEKLS0tIC9kZXYvbnVsbAorKysgYi9kaWFncmFtL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kaWFncmFtLmludGVybmFsYmxvY2svcmVzb3VyY2VzL3BhbGV0dGUvaW50ZXJuYWxCbG9ja0RpYWdyYW0ucGFsZXR0ZWNvbmZpZ3VyYXRpb24KQEAgLTAsMCArMSw1ODkgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IkFTQ0lJIj8+DQorPHBhbGV0dGVjb25maWd1cmF0aW9uOlBhbGV0dGVDb25maWd1cmF0aW9uDQorICAgIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiDQorICAgIHhtbG5zOnBhbGV0dGVjb25maWd1cmF0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3BhcHlydXMvZGlhZ3JhbS9wYWxldHRlY29uZmlndXJhdGlvbi8wLjciDQorICAgIGlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLmliZC5wYWxldHRlLm1vZGVsIg0KKyAgICBsYWJlbD0iU3lzTUwgSUJEIFBhbGV0dGUiPg0KKyAgPGRyYXdlckNvbmZpZ3VyYXRpb25zDQorICAgICAgaWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuaWJkLnBhbGV0dGUubm9kZSINCisgICAgICBsYWJlbD0iTm9kZXMiDQorICAgICAgZGVzY3JpcHRpb249Ik5vZGVzIj4NCisgICAgPG93bmVkQ29uZmlndXJhdGlvbnMNCisgICAgICAgIHhzaTp0eXBlPSJwYWxldHRlY29uZmlndXJhdGlvbjpUb29sQ29uZmlndXJhdGlvbiINCisgICAgICAgIGlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLmliZC5wYWxldHRlLm5vZGUuQmxvY2siDQorICAgICAgICBsYWJlbD0iQmxvY2siDQorICAgICAgICBkZXNjcmlwdGlvbj0iQ3JlYXRlIGEgQmxvY2siPg0KKyAgICAgIDxpY29uDQorICAgICAgICAgIHBsdWdpbklEPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sIg0KKyAgICAgICAgICBpY29uUGF0aD0iaWNvbnMvYmxvY2tzL0Jsb2NrLmdpZiIvPg0KKyAgICAgIDxlbGVtZW50RGVzY3JpcHRvcnMNCisgICAgICAgICAgZWxlbWVudFR5cGVJZD0ib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LkJsb2NrXzMwODUiLz4NCisgICAgICA8ZWxlbWVudERlc2NyaXB0b3JzDQorICAgICAgICAgIGVsZW1lbnRUeXBlSWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5CbG9ja18yMDczIi8+DQorICAgIDwvb3duZWRDb25maWd1cmF0aW9ucz4NCisgICAgPG93bmVkQ29uZmlndXJhdGlvbnMNCisgICAgICAgIHhzaTp0eXBlPSJwYWxldHRlY29uZmlndXJhdGlvbjpUb29sQ29uZmlndXJhdGlvbiINCisgICAgICAgIGlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLmliZC5wYWxldHRlLm5vZGUuQm91bmRSZWZlcmVuY2UiDQorICAgICAgICBsYWJlbD0iQm91bmRSZWZlcmVuY2UiDQorICAgICAgICBkZXNjcmlwdGlvbj0iQ3JlYXRlIGEgQm91bmRSZWZlcmVuY2UiPg0KKyAgICAgIDxpY29uDQorICAgICAgICAgIHBsdWdpbklEPSJvcmcuZWNsaXBzZS51bWwyLnVtbC5lZGl0Ig0KKyAgICAgICAgICBpY29uUGF0aD0iaWNvbnMvZnVsbC9vYmoxNi9Qcm9wZXJ0eS5naWYiLz4NCisgICAgICA8ZWxlbWVudERlc2NyaXB0b3JzDQorICAgICAgICAgIGVsZW1lbnRUeXBlSWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5Cb3VuZFJlZmVyZW5jZV8zMDcwIi8+DQorICAgICAgPGVsZW1lbnREZXNjcmlwdG9ycw0KKyAgICAgICAgICBlbGVtZW50VHlwZUlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuQm91bmRSZWZlcmVuY2VfMzEwMSIvPg0KKyAgICA8L293bmVkQ29uZmlndXJhdGlvbnM+DQorICAgIDxvd25lZENvbmZpZ3VyYXRpb25zDQorICAgICAgICB4c2k6dHlwZT0icGFsZXR0ZWNvbmZpZ3VyYXRpb246VG9vbENvbmZpZ3VyYXRpb24iDQorICAgICAgICBpZD0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5pYmQucGFsZXR0ZS5ub2RlLkNvbW1lbnQiDQorICAgICAgICBsYWJlbD0iQ29tbWVudCINCisgICAgICAgIGRlc2NyaXB0aW9uPSJDcmVhdGUgYSBjb21tZW50Ij4NCisgICAgICA8aWNvbg0KKyAgICAgICAgICBwbHVnaW5JRD0ib3JnLmVjbGlwc2UudW1sMi51bWwuZWRpdCINCisgICAgICAgICAgaWNvblBhdGg9Imljb25zL2Z1bGwvb2JqMTYvQ29tbWVudC5naWYiLz4NCisgICAgICA8ZWxlbWVudERlc2NyaXB0b3JzDQorICAgICAgICAgIGVsZW1lbnRUeXBlSWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMudW1sLmRpYWdyYW0uY29tcG9zaXRlLkNvbW1lbnRfMjEwOSIvPg0KKyAgICAgIDxlbGVtZW50RGVzY3JpcHRvcnMNCisgICAgICAgICAgZWxlbWVudFR5cGVJZD0ib3JnLmVjbGlwc2UucGFweXJ1cy51bWwuZGlhZ3JhbS5jb21wb3NpdGUuQ29tbWVudF8zMDk3Ii8+DQorICAgIDwvb3duZWRDb25maWd1cmF0aW9ucz4NCisgICAgPG93bmVkQ29uZmlndXJhdGlvbnMNCisgICAgICAgIHhzaTp0eXBlPSJwYWxldHRlY29uZmlndXJhdGlvbjpUb29sQ29uZmlndXJhdGlvbiINCisgICAgICAgIGlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLmliZC5wYWxldHRlLm5vZGUuQ29uc3RyYWludCINCisgICAgICAgIGxhYmVsPSJDb25zdHJhaW50Ig0KKyAgICAgICAgZGVzY3JpcHRpb249IkNyZWF0ZSBhIGNvbnN0cmFpbnQiPg0KKyAgICAgIDxpY29uDQorICAgICAgICAgIHBsdWdpbklEPSJvcmcuZWNsaXBzZS51bWwyLnVtbC5lZGl0Ig0KKyAgICAgICAgICBpY29uUGF0aD0iaWNvbnMvZnVsbC9vYmoxNi9Db25zdHJhaW50LmdpZiIvPg0KKyAgICAgIDxlbGVtZW50RGVzY3JpcHRvcnMNCisgICAgICAgICAgZWxlbWVudFR5cGVJZD0ib3JnLmVjbGlwc2UucGFweXJ1cy51bWwuZGlhZ3JhbS5jb21wb3NpdGUuQ29uc3RyYWludF8zMTIwIi8+DQorICAgICAgPGVsZW1lbnREZXNjcmlwdG9ycw0KKyAgICAgICAgICBlbGVtZW50VHlwZUlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnVtbC5kaWFncmFtLmNvbXBvc2l0ZS5Db25zdHJhaW50XzIxMTQiLz4NCisgICAgPC9vd25lZENvbmZpZ3VyYXRpb25zPg0KKyAgICA8b3duZWRDb25maWd1cmF0aW9ucw0KKyAgICAgICAgeHNpOnR5cGU9InBhbGV0dGVjb25maWd1cmF0aW9uOlRvb2xDb25maWd1cmF0aW9uIg0KKyAgICAgICAgaWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuaWJkLnBhbGV0dGUubm9kZS5FbGVtZW50R3JvdXAiDQorICAgICAgICBsYWJlbD0iRWxlbWVudEdyb3VwIg0KKyAgICAgICAgZGVzY3JpcHRpb249IkNyZWF0ZSBhIEVsZW1lbnRHcm91cCI+DQorICAgICAgPGljb24NCisgICAgICAgICAgcGx1Z2luSUQ9Im9yZy5lY2xpcHNlLnVtbDIudW1sLmVkaXQiDQorICAgICAgICAgIGljb25QYXRoPSJpY29ucy9mdWxsL29iajE2L0NvbW1lbnQuZ2lmIi8+DQorICAgICAgPGVsZW1lbnREZXNjcmlwdG9ycw0KKyAgICAgICAgICBlbGVtZW50VHlwZUlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuRWxlbWVudEdyb3VwXzMwOTciLz4NCisgICAgICA8ZWxlbWVudERlc2NyaXB0b3JzDQorICAgICAgICAgIGVsZW1lbnRUeXBlSWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5FbGVtZW50R3JvdXBfMjEwOSIvPg0KKyAgICA8L293bmVkQ29uZmlndXJhdGlvbnM+DQorICAgIDxvd25lZENvbmZpZ3VyYXRpb25zDQorICAgICAgICB4c2k6dHlwZT0icGFsZXR0ZWNvbmZpZ3VyYXRpb246VG9vbENvbmZpZ3VyYXRpb24iDQorICAgICAgICBpZD0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5pYmQucGFsZXR0ZS5ub2RlLkZ1bGxQb3J0Ig0KKyAgICAgICAgbGFiZWw9IkZ1bGwgUG9ydCINCisgICAgICAgIGRlc2NyaXB0aW9uPSJDcmVhdGUgYSBGdWxsUG9ydCI+DQorICAgICAgPGljb24NCisgICAgICAgICAgcGx1Z2luSUQ9Im9yZy5lY2xpcHNlLnVtbDIudW1sLmVkaXQiDQorICAgICAgICAgIGljb25QYXRoPSJpY29ucy9mdWxsL29iajE2L1BvcnQuZ2lmIi8+DQorICAgICAgPGVsZW1lbnREZXNjcmlwdG9ycw0KKyAgICAgICAgICBlbGVtZW50VHlwZUlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuRnVsbFBvcnRfMzA2OSIvPg0KKyAgICA8L293bmVkQ29uZmlndXJhdGlvbnM+DQorICAgIDxvd25lZENvbmZpZ3VyYXRpb25zDQorICAgICAgICB4c2k6dHlwZT0icGFsZXR0ZWNvbmZpZ3VyYXRpb246VG9vbENvbmZpZ3VyYXRpb24iDQorICAgICAgICBpZD0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5pYmQucGFsZXR0ZS5ub2RlLkludGVyZmFjZSINCisgICAgICAgIGxhYmVsPSJJbnRlcmZhY2UiDQorICAgICAgICBkZXNjcmlwdGlvbj0iQ3JlYXRlIGFuIEludGVyZmFjZSI+DQorICAgICAgPGljb24NCisgICAgICAgICAgcGx1Z2luSUQ9Im9yZy5lY2xpcHNlLnVtbDIudW1sLmVkaXQiDQorICAgICAgICAgIGljb25QYXRoPSJpY29ucy9mdWxsL29iajE2L0ludGVyZmFjZS5naWYiLz4NCisgICAgICA8ZWxlbWVudERlc2NyaXB0b3JzDQorICAgICAgICAgIGVsZW1lbnRUeXBlSWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMudW1sLmRpYWdyYW0uY29tcG9zaXRlLkludGVyZmFjZV8zMDg3Ii8+DQorICAgICAgPGVsZW1lbnREZXNjcmlwdG9ycw0KKyAgICAgICAgICBlbGVtZW50VHlwZUlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnVtbC5kaWFncmFtLmNvbXBvc2l0ZS5JbnRlcmZhY2VfMjA3NiIvPg0KKyAgICA8L293bmVkQ29uZmlndXJhdGlvbnM+DQorICAgIDxvd25lZENvbmZpZ3VyYXRpb25zDQorICAgICAgICB4c2k6dHlwZT0icGFsZXR0ZWNvbmZpZ3VyYXRpb246VG9vbENvbmZpZ3VyYXRpb24iDQorICAgICAgICBpZD0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5pYmQucGFsZXR0ZS5ub2RlLlBvcnQiDQorICAgICAgICBsYWJlbD0iUG9ydCINCisgICAgICAgIGRlc2NyaXB0aW9uPSJDcmVhdGUgYSBQb3J0Ij4NCisgICAgICA8aWNvbg0KKyAgICAgICAgICBwbHVnaW5JRD0ib3JnLmVjbGlwc2UudW1sMi51bWwuZWRpdCINCisgICAgICAgICAgaWNvblBhdGg9Imljb25zL2Z1bGwvb2JqMTYvUG9ydC5naWYiLz4NCisgICAgICA8ZWxlbWVudERlc2NyaXB0b3JzDQorICAgICAgICAgIGVsZW1lbnRUeXBlSWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMudW1sLmRpYWdyYW0uY29tcG9zaXRlLlBvcnRfMzA2OSIvPg0KKyAgICA8L293bmVkQ29uZmlndXJhdGlvbnM+DQorICAgIDxvd25lZENvbmZpZ3VyYXRpb25zDQorICAgICAgICB4c2k6dHlwZT0icGFsZXR0ZWNvbmZpZ3VyYXRpb246VG9vbENvbmZpZ3VyYXRpb24iDQorICAgICAgICBpZD0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5pYmQucGFsZXR0ZS5ub2RlLlByb2JsZW0iDQorICAgICAgICBsYWJlbD0iUHJvYmxlbSINCisgICAgICAgIGRlc2NyaXB0aW9uPSJDcmVhdGUgYSBQcm9ibGVtIj4NCisgICAgICA8aWNvbg0KKyAgICAgICAgICBwbHVnaW5JRD0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbCINCisgICAgICAgICAgaWNvblBhdGg9Imljb25zL21vZGVsZWxlbWVudHMvUHJvYmxlbS5naWYiLz4NCisgICAgICA8ZWxlbWVudERlc2NyaXB0b3JzDQorICAgICAgICAgIGVsZW1lbnRUeXBlSWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5Qcm9ibGVtXzMwOTciLz4NCisgICAgICA8ZWxlbWVudERlc2NyaXB0b3JzDQorICAgICAgICAgIGVsZW1lbnRUeXBlSWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5Qcm9ibGVtXzIxMDkiLz4NCisgICAgPC9vd25lZENvbmZpZ3VyYXRpb25zPg0KKyAgICA8b3duZWRDb25maWd1cmF0aW9ucw0KKyAgICAgICAgeHNpOnR5cGU9InBhbGV0dGVjb25maWd1cmF0aW9uOlRvb2xDb25maWd1cmF0aW9uIg0KKyAgICAgICAgaWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuaWJkLnBhbGV0dGUubm9kZS5Qcm94eVBvcnQiDQorICAgICAgICBsYWJlbD0iUHJveHkgUG9ydCINCisgICAgICAgIGRlc2NyaXB0aW9uPSJDcmVhdGUgYSBQcm94eVBvcnQiPg0KKyAgICAgIDxpY29uDQorICAgICAgICAgIHBsdWdpbklEPSJvcmcuZWNsaXBzZS51bWwyLnVtbC5lZGl0Ig0KKyAgICAgICAgICBpY29uUGF0aD0iaWNvbnMvZnVsbC9vYmoxNi9Qb3J0LmdpZiIvPg0KKyAgICAgIDxlbGVtZW50RGVzY3JpcHRvcnMNCisgICAgICAgICAgZWxlbWVudFR5cGVJZD0ib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LlByb3h5UG9ydF8zMDY5Ii8+DQorICAgIDwvb3duZWRDb25maWd1cmF0aW9ucz4NCisgICAgPG93bmVkQ29uZmlndXJhdGlvbnMNCisgICAgICAgIHhzaTp0eXBlPSJwYWxldHRlY29uZmlndXJhdGlvbjpUb29sQ29uZmlndXJhdGlvbiINCisgICAgICAgIGlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLmliZC5wYWxldHRlLm5vZGUuUmF0aW9uYWxlIg0KKyAgICAgICAgbGFiZWw9IlJhdGlvbmFsZSINCisgICAgICAgIGRlc2NyaXB0aW9uPSJDcmVhdGUgYSBSYXRpb25hbGUiPg0KKyAgICAgIDxpY29uDQorICAgICAgICAgIHBsdWdpbklEPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sIg0KKyAgICAgICAgICBpY29uUGF0aD0iaWNvbnMvbW9kZWxlbGVtZW50cy9SYXRpb25hbGUuZ2lmIi8+DQorICAgICAgPGVsZW1lbnREZXNjcmlwdG9ycw0KKyAgICAgICAgICBlbGVtZW50VHlwZUlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuUmF0aW9uYWxlXzMwOTciLz4NCisgICAgICA8ZWxlbWVudERlc2NyaXB0b3JzDQorICAgICAgICAgIGVsZW1lbnRUeXBlSWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5SYXRpb25hbGVfMjEwOSIvPg0KKyAgICA8L293bmVkQ29uZmlndXJhdGlvbnM+DQorICAgIDxvd25lZENvbmZpZ3VyYXRpb25zDQorICAgICAgICB4c2k6dHlwZT0icGFsZXR0ZWNvbmZpZ3VyYXRpb246VG9vbENvbmZpZ3VyYXRpb24iDQorICAgICAgICBpZD0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5pYmQucGFsZXR0ZS5ub2RlLlZpZXdQb2ludCINCisgICAgICAgIGxhYmVsPSJWaWV3UG9pbnQiDQorICAgICAgICBkZXNjcmlwdGlvbj0iQ3JlYXRlIGEgVmlld1BvaW50Ij4NCisgICAgICA8aWNvbg0KKyAgICAgICAgICBwbHVnaW5JRD0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbC5lZGl0Ig0KKyAgICAgICAgICBpY29uUGF0aD0iaWNvbnMvZnVsbC9vYmoxNi9WaWV3UG9pbnQuZ2lmIi8+DQorICAgICAgPGVsZW1lbnREZXNjcmlwdG9ycw0KKyAgICAgICAgICBlbGVtZW50VHlwZUlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuVmlld1BvaW50XzMwODUiLz4NCisgICAgICA8ZWxlbWVudERlc2NyaXB0b3JzDQorICAgICAgICAgIGVsZW1lbnRUeXBlSWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5WaWV3UG9pbnRfMjA3MyIvPg0KKyAgICA8L293bmVkQ29uZmlndXJhdGlvbnM+DQorICA8L2RyYXdlckNvbmZpZ3VyYXRpb25zPg0KKyAgPGRyYXdlckNvbmZpZ3VyYXRpb25zDQorICAgICAgaWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuaWJkLnBhbGV0dGUuZWRnZSINCisgICAgICBsYWJlbD0iRWRnZXMiDQorICAgICAgZGVzY3JpcHRpb249IkVkZ2VzIj4NCisgICAgPG93bmVkQ29uZmlndXJhdGlvbnMNCisgICAgICAgIHhzaTp0eXBlPSJwYWxldHRlY29uZmlndXJhdGlvbjpUb29sQ29uZmlndXJhdGlvbiINCisgICAgICAgIGlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLmliZC5wYWxldHRlLmVkZ2UuQmluZGluZ0Nvbm5lY3RvciINCisgICAgICAgIGxhYmVsPSJCaW5kaW5nIENvbm5lY3RvciINCisgICAgICAgIGRlc2NyaXB0aW9uPSJDcmVhdGUgYSBCaW5kaW5nQ29ubmVjdG9yIg0KKyAgICAgICAga2luZD0iQ29ubmVjdGlvblRvb2wiPg0KKyAgICAgIDxpY29uDQorICAgICAgICAgIHBsdWdpbklEPSJvcmcuZWNsaXBzZS51bWwyLnVtbC5lZGl0Ig0KKyAgICAgICAgICBpY29uUGF0aD0iaWNvbnMvZnVsbC9vYmoxNi9Db25uZWN0b3IuZ2lmIi8+DQorICAgICAgPGVsZW1lbnREZXNjcmlwdG9ycw0KKyAgICAgICAgICBlbGVtZW50VHlwZUlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuQmluZGluZ0Nvbm5lY3Rvcl80MDEzIi8+DQorICAgIDwvb3duZWRDb25maWd1cmF0aW9ucz4NCisgICAgPG93bmVkQ29uZmlndXJhdGlvbnMNCisgICAgICAgIHhzaTp0eXBlPSJwYWxldHRlY29uZmlndXJhdGlvbjpUb29sQ29uZmlndXJhdGlvbiINCisgICAgICAgIGlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLmliZC5wYWxldHRlLmVkZ2UuQ29uZm9ybV9EZXBlbmRlbmN5Ig0KKyAgICAgICAgbGFiZWw9IkNvbmZvcm0gRGVwZW5kZW5jeSINCisgICAgICAgIGRlc2NyaXB0aW9uPSJDcmVhdGUgYSBDb25mb3JtIERlcGVuZGVuY3kiDQorICAgICAgICBraW5kPSJDb25uZWN0aW9uVG9vbCI+DQorICAgICAgPGljb24NCisgICAgICAgICAgcGx1Z2luSUQ9Im9yZy5lY2xpcHNlLnVtbDIudW1sLmVkaXQiDQorICAgICAgICAgIGljb25QYXRoPSJpY29ucy9mdWxsL29iajE2L0RlcGVuZGVuY3kuZ2lmIi8+DQorICAgICAgPGVsZW1lbnREZXNjcmlwdG9ycw0KKyAgICAgICAgICBlbGVtZW50VHlwZUlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuQ29uZm9ybV9EZXBlbmRlbmN5XzQwMTAiLz4NCisgICAgPC9vd25lZENvbmZpZ3VyYXRpb25zPg0KKyAgICA8b3duZWRDb25maWd1cmF0aW9ucw0KKyAgICAgICAgeHNpOnR5cGU9InBhbGV0dGVjb25maWd1cmF0aW9uOlRvb2xDb25maWd1cmF0aW9uIg0KKyAgICAgICAgaWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuaWJkLnBhbGV0dGUuZWRnZS5Db25mb3JtX0dlbmVyYWxpemF0aW9uIg0KKyAgICAgICAgbGFiZWw9IkNvbmZvcm0gR2VuZXJhbGl6YXRpb24iDQorICAgICAgICBkZXNjcmlwdGlvbj0iQ3JlYXRlIGEgQ29uZm9ybSBHZW5lcmFsaXphdGlvbiINCisgICAgICAgIGtpbmQ9IkNvbm5lY3Rpb25Ub29sIj4NCisgICAgICA8aWNvbg0KKyAgICAgICAgICBwbHVnaW5JRD0ib3JnLmVjbGlwc2UudW1sMi51bWwuZWRpdCINCisgICAgICAgICAgaWNvblBhdGg9Imljb25zL2Z1bGwvb2JqMTYvR2VuZXJhbGl6YXRpb24uZ2lmIi8+DQorICAgICAgPGVsZW1lbnREZXNjcmlwdG9ycw0KKyAgICAgICAgICBlbGVtZW50VHlwZUlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuQ29uZm9ybV9HZW5lcmFsaXphdGlvbl80MDE1Ii8+DQorICAgIDwvb3duZWRDb25maWd1cmF0aW9ucz4NCisgICAgPG93bmVkQ29uZmlndXJhdGlvbnMNCisgICAgICAgIHhzaTp0eXBlPSJwYWxldHRlY29uZmlndXJhdGlvbjpUb29sQ29uZmlndXJhdGlvbiINCisgICAgICAgIGlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLmliZC5wYWxldHRlLmVkZ2UuRXhwb3NlIg0KKyAgICAgICAgbGFiZWw9IkV4cG9zZSINCisgICAgICAgIGRlc2NyaXB0aW9uPSJDcmVhdGUgYSBFeHBvc2UiDQorICAgICAgICBraW5kPSJDb25uZWN0aW9uVG9vbCI+DQorICAgICAgPGljb24NCisgICAgICAgICAgcGx1Z2luSUQ9Im9yZy5lY2xpcHNlLnVtbDIudW1sLmVkaXQiDQorICAgICAgICAgIGljb25QYXRoPSJpY29ucy9mdWxsL29iajE2L0RlcGVuZGVuY3kuZ2lmIi8+DQorICAgICAgPGVsZW1lbnREZXNjcmlwdG9ycw0KKyAgICAgICAgICBlbGVtZW50VHlwZUlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuRXhwb3NlXzQwMTAiLz4NCisgICAgPC9vd25lZENvbmZpZ3VyYXRpb25zPg0KKyAgICA8b3duZWRDb25maWd1cmF0aW9ucw0KKyAgICAgICAgeHNpOnR5cGU9InBhbGV0dGVjb25maWd1cmF0aW9uOlRvb2xDb25maWd1cmF0aW9uIg0KKyAgICAgICAgaWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuaWJkLnBhbGV0dGUuZWRnZS5JdGVtRmxvdyINCisgICAgICAgIGxhYmVsPSJJdGVtIEZsb3ciDQorICAgICAgICBkZXNjcmlwdGlvbj0iQ3JlYXRlIGEgSXRlbUZsb3ciDQorICAgICAgICBraW5kPSJDb25uZWN0aW9uVG9vbCI+DQorICAgICAgPGljb24NCisgICAgICAgICAgcGx1Z2luSUQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwiDQorICAgICAgICAgIGljb25QYXRoPSJpY29ucy9wb3J0YW5kZmxvd3MvSXRlbUZsb3cuZ2lmIi8+DQorICAgICAgPGVsZW1lbnREZXNjcmlwdG9ycw0KKyAgICAgICAgICBlbGVtZW50VHlwZUlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuSXRlbUZsb3dfNDAyMSIvPg0KKyAgICA8L293bmVkQ29uZmlndXJhdGlvbnM+DQorICAgIDxvd25lZENvbmZpZ3VyYXRpb25zDQorICAgICAgICB4c2k6dHlwZT0icGFsZXR0ZWNvbmZpZ3VyYXRpb246VG9vbENvbmZpZ3VyYXRpb24iDQorICAgICAgICBpZD0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5pYmQucGFsZXR0ZS5lZGdlLlJlZmluZV9BYnN0cmFjdGlvbiINCisgICAgICAgIGxhYmVsPSJSZWZpbmUgQWJzdHJhY3Rpb24iDQorICAgICAgICBkZXNjcmlwdGlvbj0iQ3JlYXRlIGEgUmVmaW5lIEFic3RyYWN0aW9uIg0KKyAgICAgICAga2luZD0iQ29ubmVjdGlvblRvb2wiPg0KKyAgICAgIDxpY29uDQorICAgICAgICAgIHBsdWdpbklEPSJvcmcuZWNsaXBzZS51bWwyLnVtbC5lZGl0Ig0KKyAgICAgICAgICBpY29uUGF0aD0iaWNvbnMvZnVsbC9vYmoxNi9BYnN0cmFjdGlvbi5naWYiLz4NCisgICAgICA8ZWxlbWVudERlc2NyaXB0b3JzDQorICAgICAgICAgIGVsZW1lbnRUeXBlSWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5SZWZpbmVfQWJzdHJhY3Rpb25fNDAwNyIvPg0KKyAgICA8L293bmVkQ29uZmlndXJhdGlvbnM+DQorICA8L2RyYXdlckNvbmZpZ3VyYXRpb25zPg0KKyAgPGRyYXdlckNvbmZpZ3VyYXRpb25zDQorICAgICAgaWQ9IlN5c01MIE5vZGVzIg0KKyAgICAgIGxhYmVsPSJPdGhlciBOb2RlcyINCisgICAgICBkZXNjcmlwdGlvbj0iT3RoZXIgTm9kZXMiPg0KKyAgICA8b3duZWRDb25maWd1cmF0aW9ucw0KKyAgICAgICAgeHNpOnR5cGU9InBhbGV0dGVjb25maWd1cmF0aW9uOlRvb2xDb25maWd1cmF0aW9uIg0KKyAgICAgICAgaWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuaWJkLnBhbGV0dGUubm9kZS5DbGFzc2lmaWVyQmVoYXZpb3JQcm9wZXJ0eSINCisgICAgICAgIGxhYmVsPSJDbGFzc2lmaWVyQmVoYXZpb3JQcm9wZXJ0eSINCisgICAgICAgIGRlc2NyaXB0aW9uPSJDcmVhdGUgYSBDbGFzc2lmaWVyQmVoYXZpb3JQcm9wZXJ0eSI+DQorICAgICAgPGljb24NCisgICAgICAgICAgcGx1Z2luSUQ9Im9yZy5lY2xpcHNlLnVtbDIudW1sLmVkaXQiDQorICAgICAgICAgIGljb25QYXRoPSJpY29ucy9mdWxsL29iajE2L1Byb3BlcnR5LmdpZiIvPg0KKyAgICAgIDxlbGVtZW50RGVzY3JpcHRvcnMNCisgICAgICAgICAgZWxlbWVudFR5cGVJZD0ib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LkNsYXNzaWZpZXJCZWhhdmlvclByb3BlcnR5XzMwNzAiLz4NCisgICAgICA8ZWxlbWVudERlc2NyaXB0b3JzDQorICAgICAgICAgIGVsZW1lbnRUeXBlSWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5DbGFzc2lmaWVyQmVoYXZpb3JQcm9wZXJ0eV8zMTAxIi8+DQorICAgIDwvb3duZWRDb25maWd1cmF0aW9ucz4NCisgICAgPG93bmVkQ29uZmlndXJhdGlvbnMNCisgICAgICAgIHhzaTp0eXBlPSJwYWxldHRlY29uZmlndXJhdGlvbjpUb29sQ29uZmlndXJhdGlvbiINCisgICAgICAgIGlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLmliZC5wYWxldHRlLm5vZGUuRGlzdHJpYnV0ZWRQcm9wZXJ0eSINCisgICAgICAgIGxhYmVsPSJEaXN0cmlidXRlZFByb3BlcnR5Ig0KKyAgICAgICAgZGVzY3JpcHRpb249IkNyZWF0ZSBhIERpc3RyaWJ1dGVkUHJvcGVydHkiPg0KKyAgICAgIDxpY29uDQorICAgICAgICAgIHBsdWdpbklEPSJvcmcuZWNsaXBzZS51bWwyLnVtbC5lZGl0Ig0KKyAgICAgICAgICBpY29uUGF0aD0iaWNvbnMvZnVsbC9vYmoxNi9Qcm9wZXJ0eS5naWYiLz4NCisgICAgICA8ZWxlbWVudERlc2NyaXB0b3JzDQorICAgICAgICAgIGVsZW1lbnRUeXBlSWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5EaXN0cmlidXRlZFByb3BlcnR5XzMwNzAiLz4NCisgICAgICA8ZWxlbWVudERlc2NyaXB0b3JzDQorICAgICAgICAgIGVsZW1lbnRUeXBlSWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5EaXN0cmlidXRlZFByb3BlcnR5XzMxMDEiLz4NCisgICAgPC9vd25lZENvbmZpZ3VyYXRpb25zPg0KKyAgICA8b3duZWRDb25maWd1cmF0aW9ucw0KKyAgICAgICAgeHNpOnR5cGU9InBhbGV0dGVjb25maWd1cmF0aW9uOlRvb2xDb25maWd1cmF0aW9uIg0KKyAgICAgICAgaWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuaWJkLnBhbGV0dGUubm9kZS5Db25uZWN0b3JQcm9wZXJ0eSINCisgICAgICAgIGxhYmVsPSJDb25uZWN0b3JQcm9wZXJ0eSINCisgICAgICAgIGRlc2NyaXB0aW9uPSJDcmVhdGUgYSBDb25uZWN0b3JQcm9wZXJ0eSI+DQorICAgICAgPGljb24NCisgICAgICAgICAgcGx1Z2luSUQ9Im9yZy5lY2xpcHNlLnVtbDIudW1sLmVkaXQiDQorICAgICAgICAgIGljb25QYXRoPSJpY29ucy9mdWxsL29iajE2L1Byb3BlcnR5LmdpZiIvPg0KKyAgICAgIDxlbGVtZW50RGVzY3JpcHRvcnMNCisgICAgICAgICAgZWxlbWVudFR5cGVJZD0ib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LkNvbm5lY3RvclByb3BlcnR5XzMwNzAiLz4NCisgICAgICA8ZWxlbWVudERlc2NyaXB0b3JzDQorICAgICAgICAgIGVsZW1lbnRUeXBlSWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5Db25uZWN0b3JQcm9wZXJ0eV8zMTAxIi8+DQorICAgIDwvb3duZWRDb25maWd1cmF0aW9ucz4NCisgICAgPG93bmVkQ29uZmlndXJhdGlvbnMNCisgICAgICAgIHhzaTp0eXBlPSJwYWxldHRlY29uZmlndXJhdGlvbjpUb29sQ29uZmlndXJhdGlvbiINCisgICAgICAgIGlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLmliZC5wYWxldHRlLm5vZGUuUGFydGljaXBhbnRQcm9wZXJ0eSINCisgICAgICAgIGxhYmVsPSJQYXJ0aWNpcGFudFByb3BlcnR5Ig0KKyAgICAgICAgZGVzY3JpcHRpb249IkNyZWF0ZSBhIFBhcnRpY2lwYW50UHJvcGVydHkiPg0KKyAgICAgIDxpY29uDQorICAgICAgICAgIHBsdWdpbklEPSJvcmcuZWNsaXBzZS51bWwyLnVtbC5lZGl0Ig0KKyAgICAgICAgICBpY29uUGF0aD0iaWNvbnMvZnVsbC9vYmoxNi9Qcm9wZXJ0eS5naWYiLz4NCisgICAgICA8ZWxlbWVudERlc2NyaXB0b3JzDQorICAgICAgICAgIGVsZW1lbnRUeXBlSWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5QYXJ0aWNpcGFudFByb3BlcnR5XzMwNzAiLz4NCisgICAgICA8ZWxlbWVudERlc2NyaXB0b3JzDQorICAgICAgICAgIGVsZW1lbnRUeXBlSWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5QYXJ0aWNpcGFudFByb3BlcnR5XzMxMDEiLz4NCisgICAgPC9vd25lZENvbmZpZ3VyYXRpb25zPg0KKyAgICA8b3duZWRDb25maWd1cmF0aW9ucw0KKyAgICAgICAgeHNpOnR5cGU9InBhbGV0dGVjb25maWd1cmF0aW9uOlRvb2xDb25maWd1cmF0aW9uIg0KKyAgICAgICAgaWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuaWJkLnBhbGV0dGUubm9kZS5GbG93UHJvcGVydHkiDQorICAgICAgICBsYWJlbD0iRmxvd1Byb3BlcnR5Ig0KKyAgICAgICAgZGVzY3JpcHRpb249IkNyZWF0ZSBhIEZsb3dQcm9wZXJ0eSI+DQorICAgICAgPGljb24NCisgICAgICAgICAgcGx1Z2luSUQ9Im9yZy5lY2xpcHNlLnVtbDIudW1sLmVkaXQiDQorICAgICAgICAgIGljb25QYXRoPSJpY29ucy9mdWxsL29iajE2L1Byb3BlcnR5LmdpZiIvPg0KKyAgICAgIDxlbGVtZW50RGVzY3JpcHRvcnMNCisgICAgICAgICAgZWxlbWVudFR5cGVJZD0ib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LkZsb3dQcm9wZXJ0eV8zMDcwIi8+DQorICAgICAgPGVsZW1lbnREZXNjcmlwdG9ycw0KKyAgICAgICAgICBlbGVtZW50VHlwZUlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuRmxvd1Byb3BlcnR5XzMxMDEiLz4NCisgICAgPC9vd25lZENvbmZpZ3VyYXRpb25zPg0KKyAgICA8b3duZWRDb25maWd1cmF0aW9ucw0KKyAgICAgICAgeHNpOnR5cGU9InBhbGV0dGVjb25maWd1cmF0aW9uOlRvb2xDb25maWd1cmF0aW9uIg0KKyAgICAgICAgaWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuaWJkLnBhbGV0dGUubm9kZS5WYWx1ZVR5cGUiDQorICAgICAgICBsYWJlbD0iVmFsdWVUeXBlIg0KKyAgICAgICAgZGVzY3JpcHRpb249IkNyZWF0ZSBhIFZhbHVlVHlwZSI+DQorICAgICAgPGljb24NCisgICAgICAgICAgcGx1Z2luSUQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwiDQorICAgICAgICAgIGljb25QYXRoPSJpY29ucy9ibG9ja3MvVmFsdWVUeXBlLmdpZiIvPg0KKyAgICAgIDxlbGVtZW50RGVzY3JpcHRvcnMNCisgICAgICAgICAgZWxlbWVudFR5cGVJZD0ib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LlZhbHVlVHlwZV8zMDgwIi8+DQorICAgICAgPGVsZW1lbnREZXNjcmlwdG9ycw0KKyAgICAgICAgICBlbGVtZW50VHlwZUlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuVmFsdWVUeXBlXzIwNjgiLz4NCisgICAgPC9vd25lZENvbmZpZ3VyYXRpb25zPg0KKyAgICA8b3duZWRDb25maWd1cmF0aW9ucw0KKyAgICAgICAgeHNpOnR5cGU9InBhbGV0dGVjb25maWd1cmF0aW9uOlRvb2xDb25maWd1cmF0aW9uIg0KKyAgICAgICAgaWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuaWJkLnBhbGV0dGUubm9kZS5Db25zdHJhaW50QmxvY2siDQorICAgICAgICBsYWJlbD0iQ29uc3RyYWludEJsb2NrIg0KKyAgICAgICAgZGVzY3JpcHRpb249IkNyZWF0ZSBhIENvbnN0cmFpbnRCbG9jayI+DQorICAgICAgPGljb24NCisgICAgICAgICAgcGx1Z2luSUQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwiDQorICAgICAgICAgIGljb25QYXRoPSJpY29ucy9jb25zdHJhaW50cy9Db25zdHJhaW50QmxvY2suZ2lmIi8+DQorICAgICAgPGVsZW1lbnREZXNjcmlwdG9ycw0KKyAgICAgICAgICBlbGVtZW50VHlwZUlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuQ29uc3RyYWludEJsb2NrXzMwODUiLz4NCisgICAgICA8ZWxlbWVudERlc2NyaXB0b3JzDQorICAgICAgICAgIGVsZW1lbnRUeXBlSWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5Db25zdHJhaW50QmxvY2tfMjA3MyIvPg0KKyAgICA8L293bmVkQ29uZmlndXJhdGlvbnM+DQorICAgIDxvd25lZENvbmZpZ3VyYXRpb25zDQorICAgICAgICB4c2k6dHlwZT0icGFsZXR0ZWNvbmZpZ3VyYXRpb246VG9vbENvbmZpZ3VyYXRpb24iDQorICAgICAgICBpZD0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5pYmQucGFsZXR0ZS5ub2RlLlJlcXVpcmVtZW50Ig0KKyAgICAgICAgbGFiZWw9IlJlcXVpcmVtZW50Ig0KKyAgICAgICAgZGVzY3JpcHRpb249IkNyZWF0ZSBhIFJlcXVpcmVtZW50Ij4NCisgICAgICA8aWNvbg0KKyAgICAgICAgICBwbHVnaW5JRD0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbCINCisgICAgICAgICAgaWNvblBhdGg9Imljb25zL3JlcXVpcmVtZW50cy9SZXF1aXJlbWVudC5naWYiLz4NCisgICAgICA8ZWxlbWVudERlc2NyaXB0b3JzDQorICAgICAgICAgIGVsZW1lbnRUeXBlSWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5SZXF1aXJlbWVudF8zMDg1Ii8+DQorICAgICAgPGVsZW1lbnREZXNjcmlwdG9ycw0KKyAgICAgICAgICBlbGVtZW50VHlwZUlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuUmVxdWlyZW1lbnRfMjA3MyIvPg0KKyAgICA8L293bmVkQ29uZmlndXJhdGlvbnM+DQorICAgIDxvd25lZENvbmZpZ3VyYXRpb25zDQorICAgICAgICB4c2k6dHlwZT0icGFsZXR0ZWNvbmZpZ3VyYXRpb246VG9vbENvbmZpZ3VyYXRpb24iDQorICAgICAgICBpZD0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5pYmQucGFsZXR0ZS5ub2RlLkZsb3dTcGVjaWZpY2F0aW9uIg0KKyAgICAgICAgbGFiZWw9IkZsb3dTcGVjaWZpY2F0aW9uIg0KKyAgICAgICAgZGVzY3JpcHRpb249IkNyZWF0ZSBhIEZsb3dTcGVjaWZpY2F0aW9uIj4NCisgICAgICA8aWNvbg0KKyAgICAgICAgICBwbHVnaW5JRD0ib3JnLmVjbGlwc2UudW1sMi51bWwuZWRpdCINCisgICAgICAgICAgaWNvblBhdGg9Imljb25zL2Z1bGwvb2JqMTYvSW50ZXJmYWNlLmdpZiIvPg0KKyAgICAgIDxlbGVtZW50RGVzY3JpcHRvcnMNCisgICAgICAgICAgZWxlbWVudFR5cGVJZD0ib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LkZsb3dTcGVjaWZpY2F0aW9uXzMwODciLz4NCisgICAgICA8ZWxlbWVudERlc2NyaXB0b3JzDQorICAgICAgICAgIGVsZW1lbnRUeXBlSWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5GbG93U3BlY2lmaWNhdGlvbl8yMDc2Ii8+DQorICAgIDwvb3duZWRDb25maWd1cmF0aW9ucz4NCisgICAgPG93bmVkQ29uZmlndXJhdGlvbnMNCisgICAgICAgIHhzaTp0eXBlPSJwYWxldHRlY29uZmlndXJhdGlvbjpUb29sQ29uZmlndXJhdGlvbiINCisgICAgICAgIGlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLmliZC5wYWxldHRlLm5vZGUuVGVzdENhc2VfT3BlcmF0aW9uIg0KKyAgICAgICAgbGFiZWw9IlRlc3RDYXNlIE9wZXJhdGlvbiINCisgICAgICAgIGRlc2NyaXB0aW9uPSJDcmVhdGUgYSBUZXN0Q2FzZSBPcGVyYXRpb24iPg0KKyAgICAgIDxpY29uDQorICAgICAgICAgIHBsdWdpbklEPSJvcmcuZWNsaXBzZS51bWwyLnVtbC5lZGl0Ig0KKyAgICAgICAgICBpY29uUGF0aD0iaWNvbnMvZnVsbC9vYmoxNi9PcGVyYXRpb24uZ2lmIi8+DQorICAgICAgPGVsZW1lbnREZXNjcmlwdG9ycw0KKyAgICAgICAgICBlbGVtZW50VHlwZUlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuVGVzdENhc2VfT3BlcmF0aW9uXzMxMDIiLz4NCisgICAgPC9vd25lZENvbmZpZ3VyYXRpb25zPg0KKyAgICA8b3duZWRDb25maWd1cmF0aW9ucw0KKyAgICAgICAgeHNpOnR5cGU9InBhbGV0dGVjb25maWd1cmF0aW9uOlRvb2xDb25maWd1cmF0aW9uIg0KKyAgICAgICAgaWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuaWJkLnBhbGV0dGUubm9kZS5Db250cm9sT3BlcmF0b3JfT3BlcmF0aW9uIg0KKyAgICAgICAgbGFiZWw9IkNvbnRyb2xPcGVyYXRvciBPcGVyYXRpb24iDQorICAgICAgICBkZXNjcmlwdGlvbj0iQ3JlYXRlIGEgQ29udHJvbE9wZXJhdG9yIE9wZXJhdGlvbiI+DQorICAgICAgPGljb24NCisgICAgICAgICAgcGx1Z2luSUQ9Im9yZy5lY2xpcHNlLnVtbDIudW1sLmVkaXQiDQorICAgICAgICAgIGljb25QYXRoPSJpY29ucy9mdWxsL29iajE2L09wZXJhdGlvbi5naWYiLz4NCisgICAgICA8ZWxlbWVudERlc2NyaXB0b3JzDQorICAgICAgICAgIGVsZW1lbnRUeXBlSWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5Db250cm9sT3BlcmF0b3JfT3BlcmF0aW9uXzMxMDIiLz4NCisgICAgPC9vd25lZENvbmZpZ3VyYXRpb25zPg0KKyAgICA8b3duZWRDb25maWd1cmF0aW9ucw0KKyAgICAgICAgeHNpOnR5cGU9InBhbGV0dGVjb25maWd1cmF0aW9uOlRvb2xDb25maWd1cmF0aW9uIg0KKyAgICAgICAgaWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuaWJkLnBhbGV0dGUubm9kZS5WaWV3X0NsYXNzIg0KKyAgICAgICAgbGFiZWw9IlZpZXciDQorICAgICAgICBkZXNjcmlwdGlvbj0iQ3JlYXRlIGEgVmlldyI+DQorICAgICAgPGljb24NCisgICAgICAgICAgcGx1Z2luSUQ9Im9yZy5lY2xpcHNlLnVtbDIudW1sLmVkaXQiDQorICAgICAgICAgIGljb25QYXRoPSJpY29ucy9mdWxsL29iajE2L0NsYXNzLmdpZiIvPg0KKyAgICAgIDxlbGVtZW50RGVzY3JpcHRvcnMNCisgICAgICAgICAgZWxlbWVudFR5cGVJZD0ib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LlZpZXdfQ2xhc3NfMzA4NSIvPg0KKyAgICAgIDxlbGVtZW50RGVzY3JpcHRvcnMNCisgICAgICAgICAgZWxlbWVudFR5cGVJZD0ib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LlZpZXdfQ2xhc3NfMjA3MyIvPg0KKyAgICA8L293bmVkQ29uZmlndXJhdGlvbnM+DQorICAgIDxvd25lZENvbmZpZ3VyYXRpb25zDQorICAgICAgICB4c2k6dHlwZT0icGFsZXR0ZWNvbmZpZ3VyYXRpb246VG9vbENvbmZpZ3VyYXRpb24iDQorICAgICAgICBpZD0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5pYmQucGFsZXR0ZS5ub2RlLlZpZXcgUGFja2FnZSINCisgICAgICAgIGxhYmVsPSJWaWV3IFBhY2thZ2UiDQorICAgICAgICBkZXNjcmlwdGlvbj0iQ3JlYXRlIGEgVmlldyBQYWNrYWdlIj4NCisgICAgICA8aWNvbg0KKyAgICAgICAgICBwbHVnaW5JRD0ib3JnLmVjbGlwc2UudW1sMi51bWwuZWRpdCINCisgICAgICAgICAgaWNvblBhdGg9Imljb25zL2Z1bGwvb2JqMTYvUGFja2FnZS5naWYiLz4NCisgICAgICA8ZWxlbWVudERlc2NyaXB0b3JzDQorICAgICAgICAgIGVsZW1lbnRUeXBlSWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5WaWV3X1BhY2thZ2VfQ29tcG9zaXRlU3RydWN0dXJlIi8+DQorICAgIDwvb3duZWRDb25maWd1cmF0aW9ucz4NCisgICAgPG93bmVkQ29uZmlndXJhdGlvbnMNCisgICAgICAgIHhzaTp0eXBlPSJwYWxldHRlY29uZmlndXJhdGlvbjpUb29sQ29uZmlndXJhdGlvbiINCisgICAgICAgIGlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLmliZC5wYWxldHRlLm5vZGUuSW50ZXJmYWNlQmxvY2sgIg0KKyAgICAgICAgbGFiZWw9IkludGVyZmFjZUJsb2NrIg0KKyAgICAgICAgZGVzY3JpcHRpb249IkNyZWF0ZSBhIEludGVyZmFjZUJsb2NrIj4NCisgICAgICA8aWNvbg0KKyAgICAgICAgICBwbHVnaW5JRD0ib3JnLmVjbGlwc2UudW1sMi51bWwuZWRpdCINCisgICAgICAgICAgaWNvblBhdGg9Imljb25zL2Z1bGwvb2JqMTYvQ2xhc3MuZ2lmIi8+DQorICAgICAgPGVsZW1lbnREZXNjcmlwdG9ycw0KKyAgICAgICAgICBlbGVtZW50VHlwZUlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuSW50ZXJmYWNlQmxvY2tfMzA4NSIvPg0KKyAgICAgIDxlbGVtZW50RGVzY3JpcHRvcnMNCisgICAgICAgICAgZWxlbWVudFR5cGVJZD0ib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LkludGVyZmFjZUJsb2NrXzIwNzMiLz4NCisgICAgPC9vd25lZENvbmZpZ3VyYXRpb25zPg0KKyAgICA8b3duZWRDb25maWd1cmF0aW9ucw0KKyAgICAgICAgeHNpOnR5cGU9InBhbGV0dGVjb25maWd1cmF0aW9uOlRvb2xDb25maWd1cmF0aW9uIg0KKyAgICAgICAgaWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuaWJkLnBhbGV0dGUubm9kZS5BZGp1bmN0UHJvcGVydHkiDQorICAgICAgICBsYWJlbD0iQWRqdW5jdFByb3BlcnR5Ig0KKyAgICAgICAgZGVzY3JpcHRpb249IkNyZWF0ZSBhIEFkanVuY3RQcm9wZXJ0eSAiPg0KKyAgICAgIDxpY29uDQorICAgICAgICAgIHBsdWdpbklEPSJvcmcuZWNsaXBzZS51bWwyLnVtbC5lZGl0Ig0KKyAgICAgICAgICBpY29uUGF0aD0iaWNvbnMvZnVsbC9vYmoxNi9Qcm9wZXJ0eS5naWYiLz4NCisgICAgICA8ZWxlbWVudERlc2NyaXB0b3JzDQorICAgICAgICAgIGVsZW1lbnRUeXBlSWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5BZGp1bmN0UHJvcGVydHlfMzA3MCIvPg0KKyAgICAgIDxlbGVtZW50RGVzY3JpcHRvcnMNCisgICAgICAgICAgZWxlbWVudFR5cGVJZD0ib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LkFkanVuY3RQcm9wZXJ0eV8zMTAxIi8+DQorICAgIDwvb3duZWRDb25maWd1cmF0aW9ucz4NCisgICAgPG93bmVkQ29uZmlndXJhdGlvbnMNCisgICAgICAgIHhzaTp0eXBlPSJwYWxldHRlY29uZmlndXJhdGlvbjpUb29sQ29uZmlndXJhdGlvbiINCisgICAgICAgIGlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLmliZC5wYWxldHRlLm5vZGUuRmxvd1BvcnQiDQorICAgICAgICBsYWJlbD0iRmxvd1BvcnQiDQorICAgICAgICBkZXNjcmlwdGlvbj0iQ3JlYXRlIGEgRmxvd1BvcnQiPg0KKyAgICAgIDxpY29uDQorICAgICAgICAgIHBsdWdpbklEPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sIg0KKyAgICAgICAgICBpY29uUGF0aD0iaWNvbnMvcG9ydGFuZGZsb3dzL0Zsb3dQb3J0LmdpZiIvPg0KKyAgICAgIDxlbGVtZW50RGVzY3JpcHRvcnMNCisgICAgICAgICAgZWxlbWVudFR5cGVJZD0ib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LkZsb3dQb3J0XzMwNjkiLz4NCisgICAgPC9vd25lZENvbmZpZ3VyYXRpb25zPg0KKyAgICA8b3duZWRDb25maWd1cmF0aW9ucw0KKyAgICAgICAgeHNpOnR5cGU9InBhbGV0dGVjb25maWd1cmF0aW9uOlRvb2xDb25maWd1cmF0aW9uIg0KKyAgICAgICAgaWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuaWJkLnBhbGV0dGUubm9kZS5FbmRQYXRoTXVsdGlwbGljaXR5ICINCisgICAgICAgIGxhYmVsPSJFbmRQYXRoTXVsdGlwbGljaXR5Ig0KKyAgICAgICAgZGVzY3JpcHRpb249IkNyZWF0ZSBhIEVuZFBhdGhNdWx0aXBsaWNpdHkiPg0KKyAgICAgIDxpY29uDQorICAgICAgICAgIHBsdWdpbklEPSJvcmcuZWNsaXBzZS51bWwyLnVtbC5lZGl0Ig0KKyAgICAgICAgICBpY29uUGF0aD0iaWNvbnMvZnVsbC9vYmoxNi9Qcm9wZXJ0eS5naWYiLz4NCisgICAgICA8ZWxlbWVudERlc2NyaXB0b3JzDQorICAgICAgICAgIGVsZW1lbnRUeXBlSWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5FbmRQYXRoTXVsdGlwbGljaXR5XzMwNzAiLz4NCisgICAgICA8ZWxlbWVudERlc2NyaXB0b3JzDQorICAgICAgICAgIGVsZW1lbnRUeXBlSWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5FbmRQYXRoTXVsdGlwbGljaXR5XzMxMDEiLz4NCisgICAgPC9vd25lZENvbmZpZ3VyYXRpb25zPg0KKyAgICA8b3duZWRDb25maWd1cmF0aW9ucw0KKyAgICAgICAgeHNpOnR5cGU9InBhbGV0dGVjb25maWd1cmF0aW9uOlRvb2xDb25maWd1cmF0aW9uIg0KKyAgICAgICAgaWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuaWJkLnBhbGV0dGUubm9kZS5SYXRlX1BhcmFtZXRlciINCisgICAgICAgIGxhYmVsPSJSYXRlIFBhcmFtZXRlciINCisgICAgICAgIGRlc2NyaXB0aW9uPSJDcmVhdGUgYSBSYXRlIFBhcmFtZXRlciI+DQorICAgICAgPGljb24NCisgICAgICAgICAgcGx1Z2luSUQ9Im9yZy5lY2xpcHNlLnVtbDIudW1sLmVkaXQiDQorICAgICAgICAgIGljb25QYXRoPSJpY29ucy9mdWxsL29iajE2L1BhcmFtZXRlci5naWYiLz4NCisgICAgICA8ZWxlbWVudERlc2NyaXB0b3JzDQorICAgICAgICAgIGVsZW1lbnRUeXBlSWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5SYXRlX1BhcmFtZXRlcl8zMDg4Ii8+DQorICAgIDwvb3duZWRDb25maWd1cmF0aW9ucz4NCisgICAgPG93bmVkQ29uZmlndXJhdGlvbnMNCisgICAgICAgIHhzaTp0eXBlPSJwYWxldHRlY29uZmlndXJhdGlvbjpUb29sQ29uZmlndXJhdGlvbiINCisgICAgICAgIGlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLmliZC5wYWxldHRlLm5vZGUuRGlzY3JldGVfUGFyYW1ldGVyIg0KKyAgICAgICAgbGFiZWw9IkRpc2NyZXRlIFBhcmFtZXRlciINCisgICAgICAgIGRlc2NyaXB0aW9uPSJDcmVhdGUgYSBEaXNjcmV0ZSBQYXJhbWV0ZXIiPg0KKyAgICAgIDxpY29uDQorICAgICAgICAgIHBsdWdpbklEPSJvcmcuZWNsaXBzZS51bWwyLnVtbC5lZGl0Ig0KKyAgICAgICAgICBpY29uUGF0aD0iaWNvbnMvZnVsbC9vYmoxNi9QYXJhbWV0ZXIuZ2lmIi8+DQorICAgICAgPGVsZW1lbnREZXNjcmlwdG9ycw0KKyAgICAgICAgICBlbGVtZW50VHlwZUlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuRGlzY3JldGVfUGFyYW1ldGVyXzMwODgiLz4NCisgICAgPC9vd25lZENvbmZpZ3VyYXRpb25zPg0KKyAgICA8b3duZWRDb25maWd1cmF0aW9ucw0KKyAgICAgICAgeHNpOnR5cGU9InBhbGV0dGVjb25maWd1cmF0aW9uOlRvb2xDb25maWd1cmF0aW9uIg0KKyAgICAgICAgaWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuaWJkLnBhbGV0dGUubm9kZS5Db250aW51b3VzX1BhcmFtZXRlciINCisgICAgICAgIGxhYmVsPSJDb250aW51b3VzIFBhcmFtZXRlciINCisgICAgICAgIGRlc2NyaXB0aW9uPSJDcmVhdGUgYSBDb250aW51b3VzIFBhcmFtZXRlciI+DQorICAgICAgPGljb24NCisgICAgICAgICAgcGx1Z2luSUQ9Im9yZy5lY2xpcHNlLnVtbDIudW1sLmVkaXQiDQorICAgICAgICAgIGljb25QYXRoPSJpY29ucy9mdWxsL29iajE2L1BhcmFtZXRlci5naWYiLz4NCisgICAgICA8ZWxlbWVudERlc2NyaXB0b3JzDQorICAgICAgICAgIGVsZW1lbnRUeXBlSWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5Db250aW51b3VzX1BhcmFtZXRlcl8zMDg4Ii8+DQorICAgIDwvb3duZWRDb25maWd1cmF0aW9ucz4NCisgICAgPG93bmVkQ29uZmlndXJhdGlvbnMNCisgICAgICAgIHhzaTp0eXBlPSJwYWxldHRlY29uZmlndXJhdGlvbjpUb29sQ29uZmlndXJhdGlvbiINCisgICAgICAgIGlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLmliZC5wYWxldHRlLm5vZGUuQ2hhbmdlU3RydWN0dXJhbEZlYXR1cmVFdmVudCINCisgICAgICAgIGxhYmVsPSJDaGFuZ2VTdHJ1Y3R1cmFsRmVhdHVyZUV2ZW50Ig0KKyAgICAgICAgZGVzY3JpcHRpb249IkNyZWF0ZSBhIENoYW5nZVN0cnVjdHVyYWxGZWF0dXJlRXZlbnQiPg0KKyAgICAgIDxpY29uDQorICAgICAgICAgIHBsdWdpbklEPSJvcmcuZWNsaXBzZS51bWwyLnVtbC5lZGl0Ig0KKyAgICAgICAgICBpY29uUGF0aD0iaWNvbnMvZnVsbC9vYmoxNi9DaGFuZ2VFdmVudC5naWYiLz4NCisgICAgICA8ZWxlbWVudERlc2NyaXB0b3JzDQorICAgICAgICAgIGVsZW1lbnRUeXBlSWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5DaGFuZ2VTdHJ1Y3R1cmFsRmVhdHVyZUV2ZW50XzIwODgiLz4NCisgICAgPC9vd25lZENvbmZpZ3VyYXRpb25zPg0KKyAgICA8b3duZWRDb25maWd1cmF0aW9ucw0KKyAgICAgICAgeHNpOnR5cGU9InBhbGV0dGVjb25maWd1cmF0aW9uOlRvb2xDb25maWd1cmF0aW9uIg0KKyAgICAgICAgaWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuaWJkLnBhbGV0dGUubm9kZS5PcHRpb25hbCINCisgICAgICAgIGxhYmVsPSJPcHRpb25hbCINCisgICAgICAgIGRlc2NyaXB0aW9uPSJDcmVhdGUgYSBPcHRpb25hbCI+DQorICAgICAgPGljb24NCisgICAgICAgICAgcGx1Z2luSUQ9Im9yZy5lY2xpcHNlLnVtbDIudW1sLmVkaXQiDQorICAgICAgICAgIGljb25QYXRoPSJpY29ucy9mdWxsL29iajE2L1BhcmFtZXRlci5naWYiLz4NCisgICAgICA8ZWxlbWVudERlc2NyaXB0b3JzDQorICAgICAgICAgIGVsZW1lbnRUeXBlSWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5PcHRpb25hbF8zMDg4Ii8+DQorICAgIDwvb3duZWRDb25maWd1cmF0aW9ucz4NCisgIDwvZHJhd2VyQ29uZmlndXJhdGlvbnM+DQorICA8ZHJhd2VyQ29uZmlndXJhdGlvbnMNCisgICAgICBpZD0iU3lzTUwgRWRnZXMiDQorICAgICAgbGFiZWw9Ik90aGVyIEVkZ2VzIg0KKyAgICAgIGRlc2NyaXB0aW9uPSJPdGhlciBFZGdlcyI+DQorICAgIDxvd25lZENvbmZpZ3VyYXRpb25zDQorICAgICAgICB4c2k6dHlwZT0icGFsZXR0ZWNvbmZpZ3VyYXRpb246VG9vbENvbmZpZ3VyYXRpb24iDQorICAgICAgICBpZD0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5pYmQucGFsZXR0ZS5lZGdlLkNvcHlfQWJzdHJhY3Rpb24iDQorICAgICAgICBsYWJlbD0iQ29weSBBYnN0cmFjdGlvbiINCisgICAgICAgIGRlc2NyaXB0aW9uPSJDcmVhdGUgYSBDb3B5IEFic3RyYWN0aW9uIg0KKyAgICAgICAga2luZD0iQ29ubmVjdGlvblRvb2wiPg0KKyAgICAgIDxpY29uDQorICAgICAgICAgIHBsdWdpbklEPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sIg0KKyAgICAgICAgICBpY29uUGF0aD0iaWNvbnMvcmVxdWlyZW1lbnRzL0NvcHkuZ2lmIi8+DQorICAgICAgPGVsZW1lbnREZXNjcmlwdG9ycw0KKyAgICAgICAgICBlbGVtZW50VHlwZUlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuQ29weV9BYnN0cmFjdGlvbl80MDA3Ii8+DQorICAgIDwvb3duZWRDb25maWd1cmF0aW9ucz4NCisgICAgPG93bmVkQ29uZmlndXJhdGlvbnMNCisgICAgICAgIHhzaTp0eXBlPSJwYWxldHRlY29uZmlndXJhdGlvbjpUb29sQ29uZmlndXJhdGlvbiINCisgICAgICAgIGlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLmliZC5wYWxldHRlLmVkZ2UuVmVyaWZ5X0Fic3RyYWN0aW9uIg0KKyAgICAgICAgbGFiZWw9IlZlcmlmeSBBYnN0cmFjdGlvbiINCisgICAgICAgIGRlc2NyaXB0aW9uPSJDcmVhdGUgYSBWZXJpZnkgQWJzdHJhY3Rpb24iDQorICAgICAgICBraW5kPSJDb25uZWN0aW9uVG9vbCI+DQorICAgICAgPGljb24NCisgICAgICAgICAgcGx1Z2luSUQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwiDQorICAgICAgICAgIGljb25QYXRoPSJpY29ucy9yZXF1aXJlbWVudHMvVmVyaWZ5LmdpZiIvPg0KKyAgICAgIDxlbGVtZW50RGVzY3JpcHRvcnMNCisgICAgICAgICAgZWxlbWVudFR5cGVJZD0ib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LlZlcmlmeV9BYnN0cmFjdGlvbl80MDA3Ii8+DQorICAgIDwvb3duZWRDb25maWd1cmF0aW9ucz4NCisgICAgPG93bmVkQ29uZmlndXJhdGlvbnMNCisgICAgICAgIHhzaTp0eXBlPSJwYWxldHRlY29uZmlndXJhdGlvbjpUb29sQ29uZmlndXJhdGlvbiINCisgICAgICAgIGlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLmliZC5wYWxldHRlLmVkZ2UuVHJhY2VfQWJzdHJhY3Rpb24iDQorICAgICAgICBsYWJlbD0iVHJhY2UgQWJzdHJhY3Rpb24iDQorICAgICAgICBkZXNjcmlwdGlvbj0iQ3JlYXRlIGEgVHJhY2UgQWJzdHJhY3Rpb24iDQorICAgICAgICBraW5kPSJDb25uZWN0aW9uVG9vbCI+DQorICAgICAgPGljb24NCisgICAgICAgICAgcGx1Z2luSUQ9Im9yZy5lY2xpcHNlLnVtbDIudW1sLmVkaXQiDQorICAgICAgICAgIGljb25QYXRoPSJpY29ucy9mdWxsL29iajE2L0Fic3RyYWN0aW9uLmdpZiIvPg0KKyAgICAgIDxlbGVtZW50RGVzY3JpcHRvcnMNCisgICAgICAgICAgZWxlbWVudFR5cGVJZD0ib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LlRyYWNlX0Fic3RyYWN0aW9uXzQwMDciLz4NCisgICAgPC9vd25lZENvbmZpZ3VyYXRpb25zPg0KKyAgICA8b3duZWRDb25maWd1cmF0aW9ucw0KKyAgICAgICAgeHNpOnR5cGU9InBhbGV0dGVjb25maWd1cmF0aW9uOlRvb2xDb25maWd1cmF0aW9uIg0KKyAgICAgICAgaWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuaWJkLnBhbGV0dGUuZWRnZS5BbGxvY2F0ZV9BYnN0cmFjdGlvbiINCisgICAgICAgIGxhYmVsPSJBbGxvY2F0ZSBBYnN0cmFjdGlvbiINCisgICAgICAgIGRlc2NyaXB0aW9uPSJDcmVhdGUgYSBBbGxvY2F0ZSBBYnN0cmFjdGlvbiINCisgICAgICAgIGtpbmQ9IkNvbm5lY3Rpb25Ub29sIj4NCisgICAgICA8aWNvbg0KKyAgICAgICAgICBwbHVnaW5JRD0ib3JnLmVjbGlwc2UudW1sMi51bWwuZWRpdCINCisgICAgICAgICAgaWNvblBhdGg9Imljb25zL2Z1bGwvb2JqMTYvQWJzdHJhY3Rpb24uZ2lmIi8+DQorICAgICAgPGVsZW1lbnREZXNjcmlwdG9ycw0KKyAgICAgICAgICBlbGVtZW50VHlwZUlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuQWxsb2NhdGVfQWJzdHJhY3Rpb25fNDAwNyIvPg0KKyAgICA8L293bmVkQ29uZmlndXJhdGlvbnM+DQorICAgIDxvd25lZENvbmZpZ3VyYXRpb25zDQorICAgICAgICB4c2k6dHlwZT0icGFsZXR0ZWNvbmZpZ3VyYXRpb246VG9vbENvbmZpZ3VyYXRpb24iDQorICAgICAgICBpZD0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5pYmQucGFsZXR0ZS5lZGdlLkRlcml2ZVJlcXRfQWJzdHJhY3Rpb24iDQorICAgICAgICBsYWJlbD0iRGVyaXZlUmVxdCBBYnN0cmFjdGlvbiINCisgICAgICAgIGRlc2NyaXB0aW9uPSJDcmVhdGUgYSBEZXJpdmVSZXF0IEFic3RyYWN0aW9uIg0KKyAgICAgICAga2luZD0iQ29ubmVjdGlvblRvb2wiPg0KKyAgICAgIDxpY29uDQorICAgICAgICAgIHBsdWdpbklEPSJvcmcuZWNsaXBzZS51bWwyLnVtbC5lZGl0Ig0KKyAgICAgICAgICBpY29uUGF0aD0iaWNvbnMvZnVsbC9vYmoxNi9BYnN0cmFjdGlvbi5naWYiLz4NCisgICAgICA8ZWxlbWVudERlc2NyaXB0b3JzDQorICAgICAgICAgIGVsZW1lbnRUeXBlSWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5EZXJpdmVSZXF0X0Fic3RyYWN0aW9uXzQwMDciLz4NCisgICAgPC9vd25lZENvbmZpZ3VyYXRpb25zPg0KKyAgICA8b3duZWRDb25maWd1cmF0aW9ucw0KKyAgICAgICAgeHNpOnR5cGU9InBhbGV0dGVjb25maWd1cmF0aW9uOlRvb2xDb25maWd1cmF0aW9uIg0KKyAgICAgICAgaWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuaWJkLnBhbGV0dGUuZWRnZS5TYXRpc2Z5X0Fic3RyYWN0aW9uIg0KKyAgICAgICAgbGFiZWw9IlNhdGlzZnkgQWJzdHJhY3Rpb24iDQorICAgICAgICBkZXNjcmlwdGlvbj0iQ3JlYXRlIGEgU2F0aXNmeSBBYnN0cmFjdGlvbiINCisgICAgICAgIGtpbmQ9IkNvbm5lY3Rpb25Ub29sIj4NCisgICAgICA8aWNvbg0KKyAgICAgICAgICBwbHVnaW5JRD0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbCINCisgICAgICAgICAgaWNvblBhdGg9Imljb25zL3JlcXVpcmVtZW50cy9TYXRpc2Z5LmdpZiIvPg0KKyAgICAgIDxlbGVtZW50RGVzY3JpcHRvcnMNCisgICAgICAgICAgZWxlbWVudFR5cGVJZD0ib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LlNhdGlzZnlfQWJzdHJhY3Rpb25fNDAwNyIvPg0KKyAgICA8L293bmVkQ29uZmlndXJhdGlvbnM+DQorICA8L2RyYXdlckNvbmZpZ3VyYXRpb25zPg0KKzwvcGFsZXR0ZWNvbmZpZ3VyYXRpb246UGFsZXR0ZUNvbmZpZ3VyYXRpb24+DQpkaWZmIC0tZ2l0IGEvZGlhZ3JhbS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGlhZ3JhbS5pbnRlcm5hbGJsb2NrL3NyYy9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvZGlhZ3JhbS9pbnRlcm5hbGJsb2NrL0FjdGl2YXRvci5qYXZhIGIvZGlhZ3JhbS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGlhZ3JhbS5pbnRlcm5hbGJsb2NrL3NyYy9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvZGlhZ3JhbS9pbnRlcm5hbGJsb2NrL0FjdGl2YXRvci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBlOGQ0NzMKLS0tIC9kZXYvbnVsbAorKysgYi9kaWFncmFtL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kaWFncmFtLmludGVybmFsYmxvY2svc3JjL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9kaWFncmFtL2ludGVybmFsYmxvY2svQWN0aXZhdG9yLmphdmEKQEAgLTAsMCArMSw3MyBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorICogQ29weXJpZ2h0IChjKSAyMDE1IENFQSBMSVNULg0KKyAqDQorICoNCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQorICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCisgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqDQorICogQ29udHJpYnV0b3JzOg0KKyAqICBCZW5vaXQgTWFnZ2kgYmVub2l0Lm1hZ2dpQGNlYS5mciAgLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24NCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorcGFja2FnZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGlhZ3JhbS5pbnRlcm5hbGJsb2NrOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5qZmFjZS5yZXNvdXJjZS5JbWFnZURlc2NyaXB0b3I7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnVpLnBsdWdpbi5BYnN0cmFjdFVJUGx1Z2luOw0KK2ltcG9ydCBvcmcub3NnaS5mcmFtZXdvcmsuQnVuZGxlQ29udGV4dDsNCisNCisvKioNCisgKiBUaGUgYWN0aXZhdG9yIGNsYXNzIGNvbnRyb2xzIHRoZSBwbHVnLWluIGxpZmUgY3ljbGUNCisgKi8NCitwdWJsaWMgY2xhc3MgQWN0aXZhdG9yIGV4dGVuZHMgQWJzdHJhY3RVSVBsdWdpbiB7DQorDQorCS8vIFRoZSBwbHVnLWluIElEDQorCXB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFBMVUdJTl9JRCA9ICJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGlhZ3JhbS5pbnRlcm5hbGJsb2NrIjsgLy8kTk9OLU5MUy0xJA0KKw0KKwkvLyBUaGUgc2hhcmVkIGluc3RhbmNlDQorCXByaXZhdGUgc3RhdGljIEFjdGl2YXRvciBwbHVnaW47DQorCQ0KKwkvKioNCisJICogVGhlIGNvbnN0cnVjdG9yDQorCSAqLw0KKwlwdWJsaWMgQWN0aXZhdG9yKCkgew0KKwl9DQorDQorCS8qDQorCSAqIChub24tSmF2YWRvYykNCisJICogQHNlZSBvcmcuZWNsaXBzZS51aS5wbHVnaW4uQWJzdHJhY3RVSVBsdWdpbiNzdGFydChvcmcub3NnaS5mcmFtZXdvcmsuQnVuZGxlQ29udGV4dCkNCisJICovDQorCXB1YmxpYyB2b2lkIHN0YXJ0KEJ1bmRsZUNvbnRleHQgY29udGV4dCkgdGhyb3dzIEV4Y2VwdGlvbiB7DQorCQlzdXBlci5zdGFydChjb250ZXh0KTsNCisJCXBsdWdpbiA9IHRoaXM7DQorCX0NCisNCisJLyoNCisJICogKG5vbi1KYXZhZG9jKQ0KKwkgKiBAc2VlIG9yZy5lY2xpcHNlLnVpLnBsdWdpbi5BYnN0cmFjdFVJUGx1Z2luI3N0b3Aob3JnLm9zZ2kuZnJhbWV3b3JrLkJ1bmRsZUNvbnRleHQpDQorCSAqLw0KKwlwdWJsaWMgdm9pZCBzdG9wKEJ1bmRsZUNvbnRleHQgY29udGV4dCkgdGhyb3dzIEV4Y2VwdGlvbiB7DQorCQlwbHVnaW4gPSBudWxsOw0KKwkJc3VwZXIuc3RvcChjb250ZXh0KTsNCisJfQ0KKw0KKwkvKioNCisJICogUmV0dXJucyB0aGUgc2hhcmVkIGluc3RhbmNlDQorCSAqDQorCSAqIEByZXR1cm4gdGhlIHNoYXJlZCBpbnN0YW5jZQ0KKwkgKi8NCisJcHVibGljIHN0YXRpYyBBY3RpdmF0b3IgZ2V0RGVmYXVsdCgpIHsNCisJCXJldHVybiBwbHVnaW47DQorCX0NCisNCisJLyoqDQorCSAqIFJldHVybnMgYW4gaW1hZ2UgZGVzY3JpcHRvciBmb3IgdGhlIGltYWdlIGZpbGUgYXQgdGhlIGdpdmVuDQorCSAqIHBsdWctaW4gcmVsYXRpdmUgcGF0aA0KKwkgKg0KKwkgKiBAcGFyYW0gcGF0aCB0aGUgcGF0aA0KKwkgKiBAcmV0dXJuIHRoZSBpbWFnZSBkZXNjcmlwdG9yDQorCSAqLw0KKwlwdWJsaWMgc3RhdGljIEltYWdlRGVzY3JpcHRvciBnZXRJbWFnZURlc2NyaXB0b3IoU3RyaW5nIHBhdGgpIHsNCisJCXJldHVybiBpbWFnZURlc2NyaXB0b3JGcm9tUGx1Z2luKFBMVUdJTl9JRCwgcGF0aCk7DQorCX0NCit9DQpkaWZmIC0tZ2l0IGEvZGlhZ3JhbS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGlhZ3JhbS5wYXJhbWV0cmljLy5jbGFzc3BhdGggYi9kaWFncmFtL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kaWFncmFtLnBhcmFtZXRyaWMvLmNsYXNzcGF0aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YThmMTY2Ci0tLSAvZGV2L251bGwKKysrIGIvZGlhZ3JhbS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGlhZ3JhbS5wYXJhbWV0cmljLy5jbGFzc3BhdGgKQEAgLTAsMCArMSw3IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/Pg0KKzxjbGFzc3BhdGg+DQorCTxjbGFzc3BhdGhlbnRyeSBraW5kPSJjb24iIHBhdGg9Im9yZy5lY2xpcHNlLmpkdC5sYXVuY2hpbmcuSlJFX0NPTlRBSU5FUi9vcmcuZWNsaXBzZS5qZHQuaW50ZXJuYWwuZGVidWcudWkubGF1bmNoZXIuU3RhbmRhcmRWTVR5cGUvSmF2YVNFLTEuNiIvPg0KKwk8Y2xhc3NwYXRoZW50cnkga2luZD0iY29uIiBwYXRoPSJvcmcuZWNsaXBzZS5wZGUuY29yZS5yZXF1aXJlZFBsdWdpbnMiLz4NCisJPGNsYXNzcGF0aGVudHJ5IGtpbmQ9InNyYyIgcGF0aD0ic3JjIi8+DQorCTxjbGFzc3BhdGhlbnRyeSBraW5kPSJvdXRwdXQiIHBhdGg9ImJpbiIvPg0KKzwvY2xhc3NwYXRoPg0KZGlmZiAtLWdpdCBhL2RpYWdyYW0vb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRpYWdyYW0ucGFyYW1ldHJpYy8ucHJvamVjdCBiL2RpYWdyYW0vb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRpYWdyYW0ucGFyYW1ldHJpYy8ucHJvamVjdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YmRhMjQ0Ci0tLSAvZGV2L251bGwKKysrIGIvZGlhZ3JhbS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGlhZ3JhbS5wYXJhbWV0cmljLy5wcm9qZWN0CkBAIC0wLDAgKzEsMjggQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+DQorPHByb2plY3REZXNjcmlwdGlvbj4NCisJPG5hbWU+b3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRpYWdyYW0ucGFyYW1ldHJpYzwvbmFtZT4NCisJPGNvbW1lbnQ+PC9jb21tZW50Pg0KKwk8cHJvamVjdHM+DQorCTwvcHJvamVjdHM+DQorCTxidWlsZFNwZWM+DQorCQk8YnVpbGRDb21tYW5kPg0KKwkJCTxuYW1lPm9yZy5lY2xpcHNlLmpkdC5jb3JlLmphdmFidWlsZGVyPC9uYW1lPg0KKwkJCTxhcmd1bWVudHM+DQorCQkJPC9hcmd1bWVudHM+DQorCQk8L2J1aWxkQ29tbWFuZD4NCisJCTxidWlsZENvbW1hbmQ+DQorCQkJPG5hbWU+b3JnLmVjbGlwc2UucGRlLk1hbmlmZXN0QnVpbGRlcjwvbmFtZT4NCisJCQk8YXJndW1lbnRzPg0KKwkJCTwvYXJndW1lbnRzPg0KKwkJPC9idWlsZENvbW1hbmQ+DQorCQk8YnVpbGRDb21tYW5kPg0KKwkJCTxuYW1lPm9yZy5lY2xpcHNlLnBkZS5TY2hlbWFCdWlsZGVyPC9uYW1lPg0KKwkJCTxhcmd1bWVudHM+DQorCQkJPC9hcmd1bWVudHM+DQorCQk8L2J1aWxkQ29tbWFuZD4NCisJPC9idWlsZFNwZWM+DQorCTxuYXR1cmVzPg0KKwkJPG5hdHVyZT5vcmcuZWNsaXBzZS5wZGUuUGx1Z2luTmF0dXJlPC9uYXR1cmU+DQorCQk8bmF0dXJlPm9yZy5lY2xpcHNlLmpkdC5jb3JlLmphdmFuYXR1cmU8L25hdHVyZT4NCisJPC9uYXR1cmVzPg0KKzwvcHJvamVjdERlc2NyaXB0aW9uPg0KZGlmZiAtLWdpdCBhL2RpYWdyYW0vb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRpYWdyYW0ucGFyYW1ldHJpYy8uc2V0dGluZ3Mvb3JnLmVjbGlwc2UuamR0LmNvcmUucHJlZnMgYi9kaWFncmFtL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kaWFncmFtLnBhcmFtZXRyaWMvLnNldHRpbmdzL29yZy5lY2xpcHNlLmpkdC5jb3JlLnByZWZzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQxMDI0NGQKLS0tIC9kZXYvbnVsbAorKysgYi9kaWFncmFtL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kaWFncmFtLnBhcmFtZXRyaWMvLnNldHRpbmdzL29yZy5lY2xpcHNlLmpkdC5jb3JlLnByZWZzCkBAIC0wLDAgKzEsMjkxIEBACitlY2xpcHNlLnByZWZlcmVuY2VzLnZlcnNpb249MQ0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLmNvZGVnZW4uaW5saW5lSnNyQnl0ZWNvZGU9ZW5hYmxlZA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLmNvZGVnZW4udGFyZ2V0UGxhdGZvcm09MS42DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIuY29tcGxpYW5jZT0xLjYNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLmFzc2VydElkZW50aWZpZXI9ZXJyb3INCitvcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLmVudW1JZGVudGlmaWVyPWVycm9yDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIuc291cmNlPTEuNg0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5hbGlnbl90eXBlX21lbWJlcnNfb25fY29sdW1ucz1mYWxzZQ0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5hbGlnbm1lbnRfZm9yX2FyZ3VtZW50c19pbl9hbGxvY2F0aW9uX2V4cHJlc3Npb249MTYNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuYWxpZ25tZW50X2Zvcl9hcmd1bWVudHNfaW5fYW5ub3RhdGlvbj0wDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmFsaWdubWVudF9mb3JfYXJndW1lbnRzX2luX2VudW1fY29uc3RhbnQ9MTYNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuYWxpZ25tZW50X2Zvcl9hcmd1bWVudHNfaW5fZXhwbGljaXRfY29uc3RydWN0b3JfY2FsbD0xNg0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5hbGlnbm1lbnRfZm9yX2FyZ3VtZW50c19pbl9tZXRob2RfaW52b2NhdGlvbj0xNg0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5hbGlnbm1lbnRfZm9yX2FyZ3VtZW50c19pbl9xdWFsaWZpZWRfYWxsb2NhdGlvbl9leHByZXNzaW9uPTE2DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmFsaWdubWVudF9mb3JfYXNzaWdubWVudD0wDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmFsaWdubWVudF9mb3JfYmluYXJ5X2V4cHJlc3Npb249MTYNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuYWxpZ25tZW50X2Zvcl9jb21wYWN0X2lmPTE2DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmFsaWdubWVudF9mb3JfY29uZGl0aW9uYWxfZXhwcmVzc2lvbj04MA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5hbGlnbm1lbnRfZm9yX2VudW1fY29uc3RhbnRzPTANCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuYWxpZ25tZW50X2Zvcl9leHByZXNzaW9uc19pbl9hcnJheV9pbml0aWFsaXplcj0xNg0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5hbGlnbm1lbnRfZm9yX21ldGhvZF9kZWNsYXJhdGlvbj0wDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmFsaWdubWVudF9mb3JfbXVsdGlwbGVfZmllbGRzPTE2DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmFsaWdubWVudF9mb3JfcGFyYW1ldGVyc19pbl9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbj0xNg0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5hbGlnbm1lbnRfZm9yX3BhcmFtZXRlcnNfaW5fbWV0aG9kX2RlY2xhcmF0aW9uPTE2DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmFsaWdubWVudF9mb3JfcmVzb3VyY2VzX2luX3RyeT04MA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5hbGlnbm1lbnRfZm9yX3NlbGVjdG9yX2luX21ldGhvZF9pbnZvY2F0aW9uPTE2DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmFsaWdubWVudF9mb3Jfc3VwZXJjbGFzc19pbl90eXBlX2RlY2xhcmF0aW9uPTE2DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmFsaWdubWVudF9mb3Jfc3VwZXJpbnRlcmZhY2VzX2luX2VudW1fZGVjbGFyYXRpb249MTYNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuYWxpZ25tZW50X2Zvcl9zdXBlcmludGVyZmFjZXNfaW5fdHlwZV9kZWNsYXJhdGlvbj0xNg0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5hbGlnbm1lbnRfZm9yX3Rocm93c19jbGF1c2VfaW5fY29uc3RydWN0b3JfZGVjbGFyYXRpb249MTYNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuYWxpZ25tZW50X2Zvcl90aHJvd3NfY2xhdXNlX2luX21ldGhvZF9kZWNsYXJhdGlvbj0xNg0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5hbGlnbm1lbnRfZm9yX3VuaW9uX3R5cGVfaW5fbXVsdGljYXRjaD0xNg0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5ibGFua19saW5lc19hZnRlcl9pbXBvcnRzPTENCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuYmxhbmtfbGluZXNfYWZ0ZXJfcGFja2FnZT0xDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmJsYW5rX2xpbmVzX2JlZm9yZV9maWVsZD0wDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmJsYW5rX2xpbmVzX2JlZm9yZV9maXJzdF9jbGFzc19ib2R5X2RlY2xhcmF0aW9uPTANCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuYmxhbmtfbGluZXNfYmVmb3JlX2ltcG9ydHM9MQ0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5ibGFua19saW5lc19iZWZvcmVfbWVtYmVyX3R5cGU9MQ0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5ibGFua19saW5lc19iZWZvcmVfbWV0aG9kPTENCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuYmxhbmtfbGluZXNfYmVmb3JlX25ld19jaHVuaz0xDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmJsYW5rX2xpbmVzX2JlZm9yZV9wYWNrYWdlPTANCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuYmxhbmtfbGluZXNfYmV0d2Vlbl9pbXBvcnRfZ3JvdXBzPTENCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuYmxhbmtfbGluZXNfYmV0d2Vlbl90eXBlX2RlY2xhcmF0aW9ucz0xDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmJyYWNlX3Bvc2l0aW9uX2Zvcl9hbm5vdGF0aW9uX3R5cGVfZGVjbGFyYXRpb249ZW5kX29mX2xpbmUNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuYnJhY2VfcG9zaXRpb25fZm9yX2Fub255bW91c190eXBlX2RlY2xhcmF0aW9uPWVuZF9vZl9saW5lDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmJyYWNlX3Bvc2l0aW9uX2Zvcl9hcnJheV9pbml0aWFsaXplcj1lbmRfb2ZfbGluZQ0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5icmFjZV9wb3NpdGlvbl9mb3JfYmxvY2s9ZW5kX29mX2xpbmUNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuYnJhY2VfcG9zaXRpb25fZm9yX2Jsb2NrX2luX2Nhc2U9ZW5kX29mX2xpbmUNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuYnJhY2VfcG9zaXRpb25fZm9yX2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uPWVuZF9vZl9saW5lDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmJyYWNlX3Bvc2l0aW9uX2Zvcl9lbnVtX2NvbnN0YW50PWVuZF9vZl9saW5lDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmJyYWNlX3Bvc2l0aW9uX2Zvcl9lbnVtX2RlY2xhcmF0aW9uPWVuZF9vZl9saW5lDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmJyYWNlX3Bvc2l0aW9uX2Zvcl9sYW1iZGFfYm9keT1lbmRfb2ZfbGluZQ0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5icmFjZV9wb3NpdGlvbl9mb3JfbWV0aG9kX2RlY2xhcmF0aW9uPWVuZF9vZl9saW5lDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmJyYWNlX3Bvc2l0aW9uX2Zvcl9zd2l0Y2g9ZW5kX29mX2xpbmUNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuYnJhY2VfcG9zaXRpb25fZm9yX3R5cGVfZGVjbGFyYXRpb249ZW5kX29mX2xpbmUNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuY29tbWVudC5jbGVhcl9ibGFua19saW5lc19pbl9ibG9ja19jb21tZW50PWZhbHNlDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmNvbW1lbnQuY2xlYXJfYmxhbmtfbGluZXNfaW5famF2YWRvY19jb21tZW50PWZhbHNlDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmNvbW1lbnQuZm9ybWF0X2Jsb2NrX2NvbW1lbnRzPXRydWUNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuY29tbWVudC5mb3JtYXRfaGVhZGVyPWZhbHNlDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmNvbW1lbnQuZm9ybWF0X2h0bWw9dHJ1ZQ0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5jb21tZW50LmZvcm1hdF9qYXZhZG9jX2NvbW1lbnRzPXRydWUNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuY29tbWVudC5mb3JtYXRfbGluZV9jb21tZW50cz10cnVlDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmNvbW1lbnQuZm9ybWF0X3NvdXJjZV9jb2RlPXRydWUNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuY29tbWVudC5pbmRlbnRfcGFyYW1ldGVyX2Rlc2NyaXB0aW9uPXRydWUNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuY29tbWVudC5pbmRlbnRfcm9vdF90YWdzPXRydWUNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuY29tbWVudC5pbnNlcnRfbmV3X2xpbmVfYmVmb3JlX3Jvb3RfdGFncz1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuY29tbWVudC5pbnNlcnRfbmV3X2xpbmVfZm9yX3BhcmFtZXRlcj1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuY29tbWVudC5saW5lX2xlbmd0aD0yNjANCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuY29tbWVudC5uZXdfbGluZXNfYXRfYmxvY2tfYm91bmRhcmllcz10cnVlDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmNvbW1lbnQubmV3X2xpbmVzX2F0X2phdmFkb2NfYm91bmRhcmllcz10cnVlDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmNvbW1lbnQucHJlc2VydmVfd2hpdGVfc3BhY2VfYmV0d2Vlbl9jb2RlX2FuZF9saW5lX2NvbW1lbnRzPWZhbHNlDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmNvbXBhY3RfZWxzZV9pZj10cnVlDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmNvbnRpbnVhdGlvbl9pbmRlbnRhdGlvbj0yDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmNvbnRpbnVhdGlvbl9pbmRlbnRhdGlvbl9mb3JfYXJyYXlfaW5pdGlhbGl6ZXI9Mg0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5kaXNhYmxpbmdfdGFnPUBmb3JtYXR0ZXJcOm9mZg0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5lbmFibGluZ190YWc9QGZvcm1hdHRlclw6b24NCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuZm9ybWF0X2d1YXJkaWFuX2NsYXVzZV9vbl9vbmVfbGluZT1mYWxzZQ0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5mb3JtYXRfbGluZV9jb21tZW50X3N0YXJ0aW5nX29uX2ZpcnN0X2NvbHVtbj10cnVlDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluZGVudF9ib2R5X2RlY2xhcmF0aW9uc19jb21wYXJlX3RvX2Fubm90YXRpb25fZGVjbGFyYXRpb25faGVhZGVyPXRydWUNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5kZW50X2JvZHlfZGVjbGFyYXRpb25zX2NvbXBhcmVfdG9fZW51bV9jb25zdGFudF9oZWFkZXI9dHJ1ZQ0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbmRlbnRfYm9keV9kZWNsYXJhdGlvbnNfY29tcGFyZV90b19lbnVtX2RlY2xhcmF0aW9uX2hlYWRlcj10cnVlDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluZGVudF9ib2R5X2RlY2xhcmF0aW9uc19jb21wYXJlX3RvX3R5cGVfaGVhZGVyPXRydWUNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5kZW50X2JyZWFrc19jb21wYXJlX3RvX2Nhc2VzPXRydWUNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5kZW50X2VtcHR5X2xpbmVzPWZhbHNlDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluZGVudF9zdGF0ZW1lbnRzX2NvbXBhcmVfdG9fYmxvY2s9dHJ1ZQ0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbmRlbnRfc3RhdGVtZW50c19jb21wYXJlX3RvX2JvZHk9dHJ1ZQ0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbmRlbnRfc3dpdGNoc3RhdGVtZW50c19jb21wYXJlX3RvX2Nhc2VzPXRydWUNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5kZW50X3N3aXRjaHN0YXRlbWVudHNfY29tcGFyZV90b19zd2l0Y2g9ZmFsc2UNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5kZW50YXRpb24uc2l6ZT00DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9uZXdfbGluZV9hZnRlcl9hbm5vdGF0aW9uX29uX2ZpZWxkPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfbmV3X2xpbmVfYWZ0ZXJfYW5ub3RhdGlvbl9vbl9sb2NhbF92YXJpYWJsZT1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X25ld19saW5lX2FmdGVyX2Fubm90YXRpb25fb25fbWV0aG9kPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfbmV3X2xpbmVfYWZ0ZXJfYW5ub3RhdGlvbl9vbl9wYWNrYWdlPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfbmV3X2xpbmVfYWZ0ZXJfYW5ub3RhdGlvbl9vbl9wYXJhbWV0ZXI9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfbmV3X2xpbmVfYWZ0ZXJfYW5ub3RhdGlvbl9vbl90eXBlPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfbmV3X2xpbmVfYWZ0ZXJfbGFiZWw9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfbmV3X2xpbmVfYWZ0ZXJfb3BlbmluZ19icmFjZV9pbl9hcnJheV9pbml0aWFsaXplcj1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9uZXdfbGluZV9hZnRlcl90eXBlX2Fubm90YXRpb249ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfbmV3X2xpbmVfYXRfZW5kX29mX2ZpbGVfaWZfbWlzc2luZz1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9uZXdfbGluZV9iZWZvcmVfY2F0Y2hfaW5fdHJ5X3N0YXRlbWVudD1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9uZXdfbGluZV9iZWZvcmVfY2xvc2luZ19icmFjZV9pbl9hcnJheV9pbml0aWFsaXplcj1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9uZXdfbGluZV9iZWZvcmVfZWxzZV9pbl9pZl9zdGF0ZW1lbnQ9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfbmV3X2xpbmVfYmVmb3JlX2ZpbmFsbHlfaW5fdHJ5X3N0YXRlbWVudD1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9uZXdfbGluZV9iZWZvcmVfd2hpbGVfaW5fZG9fc3RhdGVtZW50PWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X25ld19saW5lX2luX2VtcHR5X2Fubm90YXRpb25fZGVjbGFyYXRpb249aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9uZXdfbGluZV9pbl9lbXB0eV9hbm9ueW1vdXNfdHlwZV9kZWNsYXJhdGlvbj1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X25ld19saW5lX2luX2VtcHR5X2Jsb2NrPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfbmV3X2xpbmVfaW5fZW1wdHlfZW51bV9jb25zdGFudD1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X25ld19saW5lX2luX2VtcHR5X2VudW1fZGVjbGFyYXRpb249aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9uZXdfbGluZV9pbl9lbXB0eV9tZXRob2RfYm9keT1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X25ld19saW5lX2luX2VtcHR5X3R5cGVfZGVjbGFyYXRpb249aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9hbmRfaW5fdHlwZV9wYXJhbWV0ZXI9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9hc3NpZ25tZW50X29wZXJhdG9yPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfYXRfaW5fYW5ub3RhdGlvbj1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9hdF9pbl9hbm5vdGF0aW9uX3R5cGVfZGVjbGFyYXRpb249ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfYmluYXJ5X29wZXJhdG9yPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfY2xvc2luZ19hbmdsZV9icmFja2V0X2luX3R5cGVfYXJndW1lbnRzPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfY2xvc2luZ19hbmdsZV9icmFja2V0X2luX3R5cGVfcGFyYW1ldGVycz1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX2Nsb3NpbmdfYnJhY2VfaW5fYmxvY2s9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9jbG9zaW5nX3BhcmVuX2luX2Nhc3Q9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9jb2xvbl9pbl9hc3NlcnQ9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9jb2xvbl9pbl9jYXNlPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfY29sb25faW5fY29uZGl0aW9uYWw9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9jb2xvbl9pbl9mb3I9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9jb2xvbl9pbl9sYWJlbGVkX3N0YXRlbWVudD1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX2NvbW1hX2luX2FsbG9jYXRpb25fZXhwcmVzc2lvbj1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX2NvbW1hX2luX2Fubm90YXRpb249aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9jb21tYV9pbl9hcnJheV9pbml0aWFsaXplcj1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX2NvbW1hX2luX2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uX3BhcmFtZXRlcnM9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9jb21tYV9pbl9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbl90aHJvd3M9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9jb21tYV9pbl9lbnVtX2NvbnN0YW50X2FyZ3VtZW50cz1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX2NvbW1hX2luX2VudW1fZGVjbGFyYXRpb25zPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfY29tbWFfaW5fZXhwbGljaXRjb25zdHJ1Y3RvcmNhbGxfYXJndW1lbnRzPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfY29tbWFfaW5fZm9yX2luY3JlbWVudHM9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9jb21tYV9pbl9mb3JfaW5pdHM9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9jb21tYV9pbl9tZXRob2RfZGVjbGFyYXRpb25fcGFyYW1ldGVycz1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX2NvbW1hX2luX21ldGhvZF9kZWNsYXJhdGlvbl90aHJvd3M9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9jb21tYV9pbl9tZXRob2RfaW52b2NhdGlvbl9hcmd1bWVudHM9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9jb21tYV9pbl9tdWx0aXBsZV9maWVsZF9kZWNsYXJhdGlvbnM9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9jb21tYV9pbl9tdWx0aXBsZV9sb2NhbF9kZWNsYXJhdGlvbnM9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9jb21tYV9pbl9wYXJhbWV0ZXJpemVkX3R5cGVfcmVmZXJlbmNlPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfY29tbWFfaW5fc3VwZXJpbnRlcmZhY2VzPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfY29tbWFfaW5fdHlwZV9hcmd1bWVudHM9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9jb21tYV9pbl90eXBlX3BhcmFtZXRlcnM9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9lbGxpcHNpcz1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX2xhbWJkYV9hcnJvdz1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX29wZW5pbmdfYW5nbGVfYnJhY2tldF9pbl9wYXJhbWV0ZXJpemVkX3R5cGVfcmVmZXJlbmNlPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX29wZW5pbmdfYW5nbGVfYnJhY2tldF9pbl90eXBlX2FyZ3VtZW50cz1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9vcGVuaW5nX2FuZ2xlX2JyYWNrZXRfaW5fdHlwZV9wYXJhbWV0ZXJzPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX29wZW5pbmdfYnJhY2VfaW5fYXJyYXlfaW5pdGlhbGl6ZXI9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9vcGVuaW5nX2JyYWNrZXRfaW5fYXJyYXlfYWxsb2NhdGlvbl9leHByZXNzaW9uPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX29wZW5pbmdfYnJhY2tldF9pbl9hcnJheV9yZWZlcmVuY2U9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfb3BlbmluZ19wYXJlbl9pbl9hbm5vdGF0aW9uPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX29wZW5pbmdfcGFyZW5faW5fY2FzdD1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9vcGVuaW5nX3BhcmVuX2luX2NhdGNoPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX29wZW5pbmdfcGFyZW5faW5fY29uc3RydWN0b3JfZGVjbGFyYXRpb249ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfb3BlbmluZ19wYXJlbl9pbl9lbnVtX2NvbnN0YW50PWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX29wZW5pbmdfcGFyZW5faW5fZm9yPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX29wZW5pbmdfcGFyZW5faW5faWY9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfb3BlbmluZ19wYXJlbl9pbl9tZXRob2RfZGVjbGFyYXRpb249ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfb3BlbmluZ19wYXJlbl9pbl9tZXRob2RfaW52b2NhdGlvbj1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9vcGVuaW5nX3BhcmVuX2luX3BhcmVudGhlc2l6ZWRfZXhwcmVzc2lvbj1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9vcGVuaW5nX3BhcmVuX2luX3N3aXRjaD1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9vcGVuaW5nX3BhcmVuX2luX3N5bmNocm9uaXplZD1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9vcGVuaW5nX3BhcmVuX2luX3RyeT1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9vcGVuaW5nX3BhcmVuX2luX3doaWxlPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX3Bvc3RmaXhfb3BlcmF0b3I9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfcHJlZml4X29wZXJhdG9yPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX3F1ZXN0aW9uX2luX2NvbmRpdGlvbmFsPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfcXVlc3Rpb25faW5fd2lsZGNhcmQ9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfc2VtaWNvbG9uX2luX2Zvcj1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX3NlbWljb2xvbl9pbl90cnlfcmVzb3VyY2VzPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfdW5hcnlfb3BlcmF0b3I9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2FuZF9pbl90eXBlX3BhcmFtZXRlcj1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9hc3NpZ25tZW50X29wZXJhdG9yPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2F0X2luX2Fubm90YXRpb25fdHlwZV9kZWNsYXJhdGlvbj1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9iaW5hcnlfb3BlcmF0b3I9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfY2xvc2luZ19hbmdsZV9icmFja2V0X2luX3BhcmFtZXRlcml6ZWRfdHlwZV9yZWZlcmVuY2U9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2Nsb3NpbmdfYW5nbGVfYnJhY2tldF9pbl90eXBlX2FyZ3VtZW50cz1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfY2xvc2luZ19hbmdsZV9icmFja2V0X2luX3R5cGVfcGFyYW1ldGVycz1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfY2xvc2luZ19icmFjZV9pbl9hcnJheV9pbml0aWFsaXplcj1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9jbG9zaW5nX2JyYWNrZXRfaW5fYXJyYXlfYWxsb2NhdGlvbl9leHByZXNzaW9uPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9jbG9zaW5nX2JyYWNrZXRfaW5fYXJyYXlfcmVmZXJlbmNlPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9jbG9zaW5nX3BhcmVuX2luX2Fubm90YXRpb249ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2Nsb3NpbmdfcGFyZW5faW5fY2FzdD1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfY2xvc2luZ19wYXJlbl9pbl9jYXRjaD1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfY2xvc2luZ19wYXJlbl9pbl9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbj1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfY2xvc2luZ19wYXJlbl9pbl9lbnVtX2NvbnN0YW50PWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9jbG9zaW5nX3BhcmVuX2luX2Zvcj1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfY2xvc2luZ19wYXJlbl9pbl9pZj1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfY2xvc2luZ19wYXJlbl9pbl9tZXRob2RfZGVjbGFyYXRpb249ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2Nsb3NpbmdfcGFyZW5faW5fbWV0aG9kX2ludm9jYXRpb249ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2Nsb3NpbmdfcGFyZW5faW5fcGFyZW50aGVzaXplZF9leHByZXNzaW9uPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9jbG9zaW5nX3BhcmVuX2luX3N3aXRjaD1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfY2xvc2luZ19wYXJlbl9pbl9zeW5jaHJvbml6ZWQ9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2Nsb3NpbmdfcGFyZW5faW5fdHJ5PWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9jbG9zaW5nX3BhcmVuX2luX3doaWxlPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9jb2xvbl9pbl9hc3NlcnQ9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfY29sb25faW5fY2FzZT1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfY29sb25faW5fY29uZGl0aW9uYWw9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfY29sb25faW5fZGVmYXVsdD1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfY29sb25faW5fZm9yPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2NvbG9uX2luX2xhYmVsZWRfc3RhdGVtZW50PWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9jb21tYV9pbl9hbGxvY2F0aW9uX2V4cHJlc3Npb249ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2NvbW1hX2luX2Fubm90YXRpb249ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2NvbW1hX2luX2FycmF5X2luaXRpYWxpemVyPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9jb21tYV9pbl9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbl9wYXJhbWV0ZXJzPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9jb21tYV9pbl9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbl90aHJvd3M9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2NvbW1hX2luX2VudW1fY29uc3RhbnRfYXJndW1lbnRzPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9jb21tYV9pbl9lbnVtX2RlY2xhcmF0aW9ucz1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfY29tbWFfaW5fZXhwbGljaXRjb25zdHJ1Y3RvcmNhbGxfYXJndW1lbnRzPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9jb21tYV9pbl9mb3JfaW5jcmVtZW50cz1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfY29tbWFfaW5fZm9yX2luaXRzPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9jb21tYV9pbl9tZXRob2RfZGVjbGFyYXRpb25fcGFyYW1ldGVycz1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfY29tbWFfaW5fbWV0aG9kX2RlY2xhcmF0aW9uX3Rocm93cz1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfY29tbWFfaW5fbWV0aG9kX2ludm9jYXRpb25fYXJndW1lbnRzPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9jb21tYV9pbl9tdWx0aXBsZV9maWVsZF9kZWNsYXJhdGlvbnM9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2NvbW1hX2luX211bHRpcGxlX2xvY2FsX2RlY2xhcmF0aW9ucz1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfY29tbWFfaW5fcGFyYW1ldGVyaXplZF90eXBlX3JlZmVyZW5jZT1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfY29tbWFfaW5fc3VwZXJpbnRlcmZhY2VzPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9jb21tYV9pbl90eXBlX2FyZ3VtZW50cz1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfY29tbWFfaW5fdHlwZV9wYXJhbWV0ZXJzPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9lbGxpcHNpcz1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfbGFtYmRhX2Fycm93PWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX29wZW5pbmdfYW5nbGVfYnJhY2tldF9pbl9wYXJhbWV0ZXJpemVkX3R5cGVfcmVmZXJlbmNlPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9vcGVuaW5nX2FuZ2xlX2JyYWNrZXRfaW5fdHlwZV9hcmd1bWVudHM9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX29wZW5pbmdfYW5nbGVfYnJhY2tldF9pbl90eXBlX3BhcmFtZXRlcnM9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX29wZW5pbmdfYnJhY2VfaW5fYW5ub3RhdGlvbl90eXBlX2RlY2xhcmF0aW9uPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX29wZW5pbmdfYnJhY2VfaW5fYW5vbnltb3VzX3R5cGVfZGVjbGFyYXRpb249aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfb3BlbmluZ19icmFjZV9pbl9hcnJheV9pbml0aWFsaXplcj1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9vcGVuaW5nX2JyYWNlX2luX2Jsb2NrPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX29wZW5pbmdfYnJhY2VfaW5fY29uc3RydWN0b3JfZGVjbGFyYXRpb249aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfb3BlbmluZ19icmFjZV9pbl9lbnVtX2NvbnN0YW50PWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX29wZW5pbmdfYnJhY2VfaW5fZW51bV9kZWNsYXJhdGlvbj1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9vcGVuaW5nX2JyYWNlX2luX21ldGhvZF9kZWNsYXJhdGlvbj1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9vcGVuaW5nX2JyYWNlX2luX3N3aXRjaD1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9vcGVuaW5nX2JyYWNlX2luX3R5cGVfZGVjbGFyYXRpb249aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfb3BlbmluZ19icmFja2V0X2luX2FycmF5X2FsbG9jYXRpb25fZXhwcmVzc2lvbj1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfb3BlbmluZ19icmFja2V0X2luX2FycmF5X3JlZmVyZW5jZT1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfb3BlbmluZ19icmFja2V0X2luX2FycmF5X3R5cGVfcmVmZXJlbmNlPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9vcGVuaW5nX3BhcmVuX2luX2Fubm90YXRpb249ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX29wZW5pbmdfcGFyZW5faW5fYW5ub3RhdGlvbl90eXBlX21lbWJlcl9kZWNsYXJhdGlvbj1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfb3BlbmluZ19wYXJlbl9pbl9jYXRjaD1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9vcGVuaW5nX3BhcmVuX2luX2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9vcGVuaW5nX3BhcmVuX2luX2VudW1fY29uc3RhbnQ9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX29wZW5pbmdfcGFyZW5faW5fZm9yPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX29wZW5pbmdfcGFyZW5faW5faWY9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfb3BlbmluZ19wYXJlbl9pbl9tZXRob2RfZGVjbGFyYXRpb249ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX29wZW5pbmdfcGFyZW5faW5fbWV0aG9kX2ludm9jYXRpb249ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX29wZW5pbmdfcGFyZW5faW5fcGFyZW50aGVzaXplZF9leHByZXNzaW9uPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9vcGVuaW5nX3BhcmVuX2luX3N3aXRjaD1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9vcGVuaW5nX3BhcmVuX2luX3N5bmNocm9uaXplZD1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9vcGVuaW5nX3BhcmVuX2luX3RyeT1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9vcGVuaW5nX3BhcmVuX2luX3doaWxlPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX3BhcmVudGhlc2l6ZWRfZXhwcmVzc2lvbl9pbl9yZXR1cm49aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfcGFyZW50aGVzaXplZF9leHByZXNzaW9uX2luX3Rocm93PWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX3Bvc3RmaXhfb3BlcmF0b3I9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX3ByZWZpeF9vcGVyYXRvcj1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfcXVlc3Rpb25faW5fY29uZGl0aW9uYWw9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfcXVlc3Rpb25faW5fd2lsZGNhcmQ9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX3NlbWljb2xvbj1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfc2VtaWNvbG9uX2luX2Zvcj1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfc2VtaWNvbG9uX2luX3RyeV9yZXNvdXJjZXM9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX3VuYXJ5X29wZXJhdG9yPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JldHdlZW5fYnJhY2tldHNfaW5fYXJyYXlfdHlwZV9yZWZlcmVuY2U9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmV0d2Vlbl9lbXB0eV9icmFjZXNfaW5fYXJyYXlfaW5pdGlhbGl6ZXI9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmV0d2Vlbl9lbXB0eV9icmFja2V0c19pbl9hcnJheV9hbGxvY2F0aW9uX2V4cHJlc3Npb249ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmV0d2Vlbl9lbXB0eV9wYXJlbnNfaW5fYW5ub3RhdGlvbl90eXBlX21lbWJlcl9kZWNsYXJhdGlvbj1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZXR3ZWVuX2VtcHR5X3BhcmVuc19pbl9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbj1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZXR3ZWVuX2VtcHR5X3BhcmVuc19pbl9lbnVtX2NvbnN0YW50PWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JldHdlZW5fZW1wdHlfcGFyZW5zX2luX21ldGhvZF9kZWNsYXJhdGlvbj1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZXR3ZWVuX2VtcHR5X3BhcmVuc19pbl9tZXRob2RfaW52b2NhdGlvbj1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmpvaW5fbGluZXNfaW5fY29tbWVudHM9ZmFsc2UNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuam9pbl93cmFwcGVkX2xpbmVzPWZhbHNlDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmtlZXBfZWxzZV9zdGF0ZW1lbnRfb25fc2FtZV9saW5lPWZhbHNlDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmtlZXBfZW1wdHlfYXJyYXlfaW5pdGlhbGl6ZXJfb25fb25lX2xpbmU9ZmFsc2UNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIua2VlcF9pbXBsZV9pZl9vbl9vbmVfbGluZT1mYWxzZQ0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5rZWVwX3RoZW5fc3RhdGVtZW50X29uX3NhbWVfbGluZT1mYWxzZQ0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5saW5lU3BsaXQ9MjYwDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLm5ldmVyX2luZGVudF9ibG9ja19jb21tZW50c19vbl9maXJzdF9jb2x1bW49ZmFsc2UNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIubmV2ZXJfaW5kZW50X2xpbmVfY29tbWVudHNfb25fZmlyc3RfY29sdW1uPWZhbHNlDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLm51bWJlcl9vZl9ibGFua19saW5lc19hdF9iZWdpbm5pbmdfb2ZfbWV0aG9kX2JvZHk9MA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5udW1iZXJfb2ZfZW1wdHlfbGluZXNfdG9fcHJlc2VydmU9NQ0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5wdXRfZW1wdHlfc3RhdGVtZW50X29uX25ld19saW5lPXRydWUNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIudGFidWxhdGlvbi5jaGFyPXRhYg0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci50YWJ1bGF0aW9uLnNpemU9NA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci51c2Vfb25fb2ZmX3RhZ3M9ZmFsc2UNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIudXNlX3RhYnNfb25seV9mb3JfbGVhZGluZ19pbmRlbnRhdGlvbnM9ZmFsc2UNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIud3JhcF9iZWZvcmVfYmluYXJ5X29wZXJhdG9yPXRydWUNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIud3JhcF9iZWZvcmVfb3Jfb3BlcmF0b3JfbXVsdGljYXRjaD10cnVlDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLndyYXBfb3V0ZXJfZXhwcmVzc2lvbnNfd2hlbl9uZXN0ZWQ9dHJ1ZQ0KZGlmZiAtLWdpdCBhL2RpYWdyYW0vb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRpYWdyYW0ucGFyYW1ldHJpYy8uc2V0dGluZ3Mvb3JnLmVjbGlwc2UuamR0LnVpLnByZWZzIGIvZGlhZ3JhbS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGlhZ3JhbS5wYXJhbWV0cmljLy5zZXR0aW5ncy9vcmcuZWNsaXBzZS5qZHQudWkucHJlZnMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDFkNzA0YgotLS0gL2Rldi9udWxsCisrKyBiL2RpYWdyYW0vb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRpYWdyYW0ucGFyYW1ldHJpYy8uc2V0dGluZ3Mvb3JnLmVjbGlwc2UuamR0LnVpLnByZWZzCkBAIC0wLDAgKzEsNjggQEAKK2NsZWFudXAuYWRkX2RlZmF1bHRfc2VyaWFsX3ZlcnNpb25faWQ9dHJ1ZQ0KK2NsZWFudXAuYWRkX2dlbmVyYXRlZF9zZXJpYWxfdmVyc2lvbl9pZD1mYWxzZQ0KK2NsZWFudXAuYWRkX21pc3NpbmdfYW5ub3RhdGlvbnM9dHJ1ZQ0KK2NsZWFudXAuYWRkX21pc3NpbmdfZGVwcmVjYXRlZF9hbm5vdGF0aW9ucz10cnVlDQorY2xlYW51cC5hZGRfbWlzc2luZ19tZXRob2RzPWZhbHNlDQorY2xlYW51cC5hZGRfbWlzc2luZ19ubHNfdGFncz1mYWxzZQ0KK2NsZWFudXAuYWRkX21pc3Npbmdfb3ZlcnJpZGVfYW5ub3RhdGlvbnM9dHJ1ZQ0KK2NsZWFudXAuYWRkX21pc3Npbmdfb3ZlcnJpZGVfYW5ub3RhdGlvbnNfaW50ZXJmYWNlX21ldGhvZHM9dHJ1ZQ0KK2NsZWFudXAuYWRkX3NlcmlhbF92ZXJzaW9uX2lkPWZhbHNlDQorY2xlYW51cC5hbHdheXNfdXNlX2Jsb2Nrcz10cnVlDQorY2xlYW51cC5hbHdheXNfdXNlX3BhcmVudGhlc2VzX2luX2V4cHJlc3Npb25zPWZhbHNlDQorY2xlYW51cC5hbHdheXNfdXNlX3RoaXNfZm9yX25vbl9zdGF0aWNfZmllbGRfYWNjZXNzPWZhbHNlDQorY2xlYW51cC5hbHdheXNfdXNlX3RoaXNfZm9yX25vbl9zdGF0aWNfbWV0aG9kX2FjY2Vzcz1mYWxzZQ0KK2NsZWFudXAuY29udmVydF9mdW5jdGlvbmFsX2ludGVyZmFjZXM9ZmFsc2UNCitjbGVhbnVwLmNvbnZlcnRfdG9fZW5oYW5jZWRfZm9yX2xvb3A9ZmFsc2UNCitjbGVhbnVwLmNvcnJlY3RfaW5kZW50YXRpb249ZmFsc2UNCitjbGVhbnVwLmZvcm1hdF9zb3VyY2VfY29kZT1mYWxzZQ0KK2NsZWFudXAuZm9ybWF0X3NvdXJjZV9jb2RlX2NoYW5nZXNfb25seT1mYWxzZQ0KK2NsZWFudXAuaW5zZXJ0X2luZmVycmVkX3R5cGVfYXJndW1lbnRzPWZhbHNlDQorY2xlYW51cC5tYWtlX2xvY2FsX3ZhcmlhYmxlX2ZpbmFsPXRydWUNCitjbGVhbnVwLm1ha2VfcGFyYW1ldGVyc19maW5hbD1mYWxzZQ0KK2NsZWFudXAubWFrZV9wcml2YXRlX2ZpZWxkc19maW5hbD10cnVlDQorY2xlYW51cC5tYWtlX3R5cGVfYWJzdHJhY3RfaWZfbWlzc2luZ19tZXRob2Q9ZmFsc2UNCitjbGVhbnVwLm1ha2VfdmFyaWFibGVfZGVjbGFyYXRpb25zX2ZpbmFsPWZhbHNlDQorY2xlYW51cC5uZXZlcl91c2VfYmxvY2tzPWZhbHNlDQorY2xlYW51cC5uZXZlcl91c2VfcGFyZW50aGVzZXNfaW5fZXhwcmVzc2lvbnM9dHJ1ZQ0KK2NsZWFudXAub3JnYW5pemVfaW1wb3J0cz1mYWxzZQ0KK2NsZWFudXAucXVhbGlmeV9zdGF0aWNfZmllbGRfYWNjZXNzZXNfd2l0aF9kZWNsYXJpbmdfY2xhc3M9ZmFsc2UNCitjbGVhbnVwLnF1YWxpZnlfc3RhdGljX21lbWJlcl9hY2Nlc3Nlc190aHJvdWdoX2luc3RhbmNlc193aXRoX2RlY2xhcmluZ19jbGFzcz10cnVlDQorY2xlYW51cC5xdWFsaWZ5X3N0YXRpY19tZW1iZXJfYWNjZXNzZXNfdGhyb3VnaF9zdWJ0eXBlc193aXRoX2RlY2xhcmluZ19jbGFzcz10cnVlDQorY2xlYW51cC5xdWFsaWZ5X3N0YXRpY19tZW1iZXJfYWNjZXNzZXNfd2l0aF9kZWNsYXJpbmdfY2xhc3M9dHJ1ZQ0KK2NsZWFudXAucXVhbGlmeV9zdGF0aWNfbWV0aG9kX2FjY2Vzc2VzX3dpdGhfZGVjbGFyaW5nX2NsYXNzPWZhbHNlDQorY2xlYW51cC5yZW1vdmVfcHJpdmF0ZV9jb25zdHJ1Y3RvcnM9dHJ1ZQ0KK2NsZWFudXAucmVtb3ZlX3JlZHVuZGFudF90eXBlX2FyZ3VtZW50cz10cnVlDQorY2xlYW51cC5yZW1vdmVfdHJhaWxpbmdfd2hpdGVzcGFjZXM9dHJ1ZQ0KK2NsZWFudXAucmVtb3ZlX3RyYWlsaW5nX3doaXRlc3BhY2VzX2FsbD10cnVlDQorY2xlYW51cC5yZW1vdmVfdHJhaWxpbmdfd2hpdGVzcGFjZXNfaWdub3JlX2VtcHR5PWZhbHNlDQorY2xlYW51cC5yZW1vdmVfdW5uZWNlc3NhcnlfY2FzdHM9dHJ1ZQ0KK2NsZWFudXAucmVtb3ZlX3VubmVjZXNzYXJ5X25sc190YWdzPXRydWUNCitjbGVhbnVwLnJlbW92ZV91bnVzZWRfaW1wb3J0cz10cnVlDQorY2xlYW51cC5yZW1vdmVfdW51c2VkX2xvY2FsX3ZhcmlhYmxlcz1mYWxzZQ0KK2NsZWFudXAucmVtb3ZlX3VudXNlZF9wcml2YXRlX2ZpZWxkcz10cnVlDQorY2xlYW51cC5yZW1vdmVfdW51c2VkX3ByaXZhdGVfbWVtYmVycz1mYWxzZQ0KK2NsZWFudXAucmVtb3ZlX3VudXNlZF9wcml2YXRlX21ldGhvZHM9dHJ1ZQ0KK2NsZWFudXAucmVtb3ZlX3VudXNlZF9wcml2YXRlX3R5cGVzPXRydWUNCitjbGVhbnVwLnNvcnRfbWVtYmVycz1mYWxzZQ0KK2NsZWFudXAuc29ydF9tZW1iZXJzX2FsbD1mYWxzZQ0KK2NsZWFudXAudXNlX2Fub255bW91c19jbGFzc19jcmVhdGlvbj1mYWxzZQ0KK2NsZWFudXAudXNlX2Jsb2Nrcz10cnVlDQorY2xlYW51cC51c2VfYmxvY2tzX29ubHlfZm9yX3JldHVybl9hbmRfdGhyb3c9ZmFsc2UNCitjbGVhbnVwLnVzZV9sYW1iZGE9dHJ1ZQ0KK2NsZWFudXAudXNlX3BhcmVudGhlc2VzX2luX2V4cHJlc3Npb25zPWZhbHNlDQorY2xlYW51cC51c2VfdGhpc19mb3Jfbm9uX3N0YXRpY19maWVsZF9hY2Nlc3M9ZmFsc2UNCitjbGVhbnVwLnVzZV90aGlzX2Zvcl9ub25fc3RhdGljX2ZpZWxkX2FjY2Vzc19vbmx5X2lmX25lY2Vzc2FyeT10cnVlDQorY2xlYW51cC51c2VfdGhpc19mb3Jfbm9uX3N0YXRpY19tZXRob2RfYWNjZXNzPWZhbHNlDQorY2xlYW51cC51c2VfdGhpc19mb3Jfbm9uX3N0YXRpY19tZXRob2RfYWNjZXNzX29ubHlfaWZfbmVjZXNzYXJ5PXRydWUNCitjbGVhbnVwLnVzZV90eXBlX2FyZ3VtZW50cz1mYWxzZQ0KK2NsZWFudXBfcHJvZmlsZT1fUGFweXJ1cw0KK2NsZWFudXBfc2V0dGluZ3NfdmVyc2lvbj0yDQorZWNsaXBzZS5wcmVmZXJlbmNlcy52ZXJzaW9uPTENCitmb3JtYXR0ZXJfcHJvZmlsZT1fUGFweXJ1cw0KK2Zvcm1hdHRlcl9zZXR0aW5nc192ZXJzaW9uPTEyDQorb3JnLmVjbGlwc2UuamR0LnVpLmlnbm9yZWxvd2VyY2FzZW5hbWVzPXRydWUNCitvcmcuZWNsaXBzZS5qZHQudWkuaW1wb3J0b3JkZXI9amF2YTtqYXZheDtvcmc7Y29tOw0KK29yZy5lY2xpcHNlLmpkdC51aS5qYXZhZG9jPXRydWUNCitvcmcuZWNsaXBzZS5qZHQudWkub25kZW1hbmR0aHJlc2hvbGQ9OTkNCitvcmcuZWNsaXBzZS5qZHQudWkuc3RhdGljb25kZW1hbmR0aHJlc2hvbGQ9OTkNCitvcmcuZWNsaXBzZS5qZHQudWkudGV4dC5jdXN0b21fY29kZV90ZW1wbGF0ZXM9PD94bWwgdmVyc2lvblw9IjEuMCIgZW5jb2RpbmdcPSJVVEYtOCIgc3RhbmRhbG9uZVw9Im5vIj8+PHRlbXBsYXRlcz48dGVtcGxhdGUgYXV0b2luc2VydFw9InRydWUiIGNvbnRleHRcPSJnZXR0ZXJjb21tZW50X2NvbnRleHQiIGRlbGV0ZWRcPSJmYWxzZSIgZGVzY3JpcHRpb25cPSJDb21tZW50IGZvciBnZXR0ZXIgbWV0aG9kIiBlbmFibGVkXD0idHJ1ZSIgaWRcPSJvcmcuZWNsaXBzZS5qZHQudWkudGV4dC5jb2RldGVtcGxhdGVzLmdldHRlcmNvbW1lbnQiIG5hbWVcPSJnZXR0ZXJjb21tZW50Ij4vKipcbiAqIEByZXR1cm4gdGhlICR7YmFyZV9maWVsZF9uYW1lfVxuICovPC90ZW1wbGF0ZT48dGVtcGxhdGUgYXV0b2luc2VydFw9InRydWUiIGNvbnRleHRcPSJzZXR0ZXJjb21tZW50X2NvbnRleHQiIGRlbGV0ZWRcPSJmYWxzZSIgZGVzY3JpcHRpb25cPSJDb21tZW50IGZvciBzZXR0ZXIgbWV0aG9kIiBlbmFibGVkXD0idHJ1ZSIgaWRcPSJvcmcuZWNsaXBzZS5qZHQudWkudGV4dC5jb2RldGVtcGxhdGVzLnNldHRlcmNvbW1lbnQiIG5hbWVcPSJzZXR0ZXJjb21tZW50Ij4vKipcbiAqIEBwYXJhbSAke3BhcmFtfSB0aGUgJHtiYXJlX2ZpZWxkX25hbWV9IHRvIHNldFxuICovPC90ZW1wbGF0ZT48dGVtcGxhdGUgYXV0b2luc2VydFw9ImZhbHNlIiBjb250ZXh0XD0iY29uc3RydWN0b3Jjb21tZW50X2NvbnRleHQiIGRlbGV0ZWRcPSJmYWxzZSIgZGVzY3JpcHRpb25cPSJDb21tZW50IGZvciBjcmVhdGVkIGNvbnN0cnVjdG9ycyIgZW5hYmxlZFw9InRydWUiIGlkXD0ib3JnLmVjbGlwc2UuamR0LnVpLnRleHQuY29kZXRlbXBsYXRlcy5jb25zdHJ1Y3RvcmNvbW1lbnQiIG5hbWVcPSJjb25zdHJ1Y3RvcmNvbW1lbnQiPi8qKlxuICogQ29uc3RydWN0b3IuXG4gKlxuICogJHt0YWdzfVxuICovPC90ZW1wbGF0ZT48dGVtcGxhdGUgYXV0b2luc2VydFw9ImZhbHNlIiBjb250ZXh0XD0iZmlsZWNvbW1lbnRfY29udGV4dCIgZGVsZXRlZFw9ImZhbHNlIiBkZXNjcmlwdGlvblw9IkNvbW1lbnQgZm9yIGNyZWF0ZWQgSmF2YSBmaWxlcyIgZW5hYmxlZFw9InRydWUiIGlkXD0ib3JnLmVjbGlwc2UuamR0LnVpLnRleHQuY29kZXRlbXBsYXRlcy5maWxlY29tbWVudCIgbmFtZVw9ImZpbGVjb21tZW50Ij4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiAqIENvcHlyaWdodCAoYykgJHt5ZWFyfSBDRUEgTElTVCBhbmQgb3RoZXJzLlxuICogXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzXG4gKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjBcbiAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0XG4gKiBodHRwXDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWxcbiAqXG4gKiBDb250cmlidXRvcnNcOlxuICogICBDRUEgTElTVCAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvblxuICogICBcbiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbjwvdGVtcGxhdGU+PHRlbXBsYXRlIGF1dG9pbnNlcnRcPSJ0cnVlIiBjb250ZXh0XD0idHlwZWNvbW1lbnRfY29udGV4dCIgZGVsZXRlZFw9ImZhbHNlIiBkZXNjcmlwdGlvblw9IkNvbW1lbnQgZm9yIGNyZWF0ZWQgdHlwZXMiIGVuYWJsZWRcPSJ0cnVlIiBpZFw9Im9yZy5lY2xpcHNlLmpkdC51aS50ZXh0LmNvZGV0ZW1wbGF0ZXMudHlwZWNvbW1lbnQiIG5hbWVcPSJ0eXBlY29tbWVudCI+LyoqXG4gKiBAYXV0aG9yICR7dXNlcn1cbiAqXG4gKiAke3RhZ3N9XG4gKi88L3RlbXBsYXRlPjx0ZW1wbGF0ZSBhdXRvaW5zZXJ0XD0idHJ1ZSIgY29udGV4dFw9ImZpZWxkY29tbWVudF9jb250ZXh0IiBkZWxldGVkXD0iZmFsc2UiIGRlc2NyaXB0aW9uXD0iQ29tbWVudCBmb3IgZmllbGRzIiBlbmFibGVkXD0idHJ1ZSIgaWRcPSJvcmcuZWNsaXBzZS5qZHQudWkudGV4dC5jb2RldGVtcGxhdGVzLmZpZWxkY29tbWVudCIgbmFtZVw9ImZpZWxkY29tbWVudCI+LyoqXG4gKiBcbiAqLzwvdGVtcGxhdGU+PHRlbXBsYXRlIGF1dG9pbnNlcnRcPSJ0cnVlIiBjb250ZXh0XD0ibWV0aG9kY29tbWVudF9jb250ZXh0IiBkZWxldGVkXD0iZmFsc2UiIGRlc2NyaXB0aW9uXD0iQ29tbWVudCBmb3Igbm9uLW92ZXJyaWRpbmcgbWV0aG9kcyIgZW5hYmxlZFw9InRydWUiIGlkXD0ib3JnLmVjbGlwc2UuamR0LnVpLnRleHQuY29kZXRlbXBsYXRlcy5tZXRob2Rjb21tZW50IiBuYW1lXD0ibWV0aG9kY29tbWVudCI+LyoqXG4gKiAke3RhZ3N9XG4gKi88L3RlbXBsYXRlPjx0ZW1wbGF0ZSBhdXRvaW5zZXJ0XD0iZmFsc2UiIGNvbnRleHRcPSJvdmVycmlkZWNvbW1lbnRfY29udGV4dCIgZGVsZXRlZFw9ImZhbHNlIiBkZXNjcmlwdGlvblw9IkNvbW1lbnQgZm9yIG92ZXJyaWRpbmcgbWV0aG9kcyIgZW5hYmxlZFw9InRydWUiIGlkXD0ib3JnLmVjbGlwc2UuamR0LnVpLnRleHQuY29kZXRlbXBsYXRlcy5vdmVycmlkZWNvbW1lbnQiIG5hbWVcPSJvdmVycmlkZWNvbW1lbnQiPi8qKlxuICogJHtzZWVfdG9fb3ZlcnJpZGRlbn1cbiAqXG4gKiAke3RhZ3N9XG4gKi88L3RlbXBsYXRlPjx0ZW1wbGF0ZSBhdXRvaW5zZXJ0XD0iZmFsc2UiIGNvbnRleHRcPSJkZWxlZ2F0ZWNvbW1lbnRfY29udGV4dCIgZGVsZXRlZFw9ImZhbHNlIiBkZXNjcmlwdGlvblw9IkNvbW1lbnQgZm9yIGRlbGVnYXRlIG1ldGhvZHMiIGVuYWJsZWRcPSJ0cnVlIiBpZFw9Im9yZy5lY2xpcHNlLmpkdC51aS50ZXh0LmNvZGV0ZW1wbGF0ZXMuZGVsZWdhdGVjb21tZW50IiBuYW1lXD0iZGVsZWdhdGVjb21tZW50Ij4vKipcbiAqICR7c2VlX3RvX3RhcmdldH1cbiAqXG4gKiAke3RhZ3N9XG4gKi88L3RlbXBsYXRlPjx0ZW1wbGF0ZSBhdXRvaW5zZXJ0XD0idHJ1ZSIgY29udGV4dFw9Im5ld3R5cGVfY29udGV4dCIgZGVsZXRlZFw9ImZhbHNlIiBkZXNjcmlwdGlvblw9Ik5ld2x5IGNyZWF0ZWQgZmlsZXMiIGVuYWJsZWRcPSJ0cnVlIiBpZFw9Im9yZy5lY2xpcHNlLmpkdC51aS50ZXh0LmNvZGV0ZW1wbGF0ZXMubmV3dHlwZSIgbmFtZVw9Im5ld3R5cGUiPiR7ZmlsZWNvbW1lbnR9XG4ke3BhY2thZ2VfZGVjbGFyYXRpb259XG5cbiR7dHlwZWNvbW1lbnR9XG4ke3R5cGVfZGVjbGFyYXRpb259PC90ZW1wbGF0ZT48dGVtcGxhdGUgYXV0b2luc2VydFw9InRydWUiIGNvbnRleHRcPSJjbGFzc2JvZHlfY29udGV4dCIgZGVsZXRlZFw9ImZhbHNlIiBkZXNjcmlwdGlvblw9IkNvZGUgaW4gbmV3IGNsYXNzIHR5cGUgYm9kaWVzIiBlbmFibGVkXD0idHJ1ZSIgaWRcPSJvcmcuZWNsaXBzZS5qZHQudWkudGV4dC5jb2RldGVtcGxhdGVzLmNsYXNzYm9keSIgbmFtZVw9ImNsYXNzYm9keSI+XG48L3RlbXBsYXRlPjx0ZW1wbGF0ZSBhdXRvaW5zZXJ0XD0idHJ1ZSIgY29udGV4dFw9ImludGVyZmFjZWJvZHlfY29udGV4dCIgZGVsZXRlZFw9ImZhbHNlIiBkZXNjcmlwdGlvblw9IkNvZGUgaW4gbmV3IGludGVyZmFjZSB0eXBlIGJvZGllcyIgZW5hYmxlZFw9InRydWUiIGlkXD0ib3JnLmVjbGlwc2UuamR0LnVpLnRleHQuY29kZXRlbXBsYXRlcy5pbnRlcmZhY2Vib2R5IiBuYW1lXD0iaW50ZXJmYWNlYm9keSI+XG48L3RlbXBsYXRlPjx0ZW1wbGF0ZSBhdXRvaW5zZXJ0XD0idHJ1ZSIgY29udGV4dFw9ImVudW1ib2R5X2NvbnRleHQiIGRlbGV0ZWRcPSJmYWxzZSIgZGVzY3JpcHRpb25cPSJDb2RlIGluIG5ldyBlbnVtIHR5cGUgYm9kaWVzIiBlbmFibGVkXD0idHJ1ZSIgaWRcPSJvcmcuZWNsaXBzZS5qZHQudWkudGV4dC5jb2RldGVtcGxhdGVzLmVudW1ib2R5IiBuYW1lXD0iZW51bWJvZHkiPlxuPC90ZW1wbGF0ZT48dGVtcGxhdGUgYXV0b2luc2VydFw9InRydWUiIGNvbnRleHRcPSJhbm5vdGF0aW9uYm9keV9jb250ZXh0IiBkZWxldGVkXD0iZmFsc2UiIGRlc2NyaXB0aW9uXD0iQ29kZSBpbiBuZXcgYW5ub3RhdGlvbiB0eXBlIGJvZGllcyIgZW5hYmxlZFw9InRydWUiIGlkXD0ib3JnLmVjbGlwc2UuamR0LnVpLnRleHQuY29kZXRlbXBsYXRlcy5hbm5vdGF0aW9uYm9keSIgbmFtZVw9ImFubm90YXRpb25ib2R5Ij5cbjwvdGVtcGxhdGU+PHRlbXBsYXRlIGF1dG9pbnNlcnRcPSJ0cnVlIiBjb250ZXh0XD0iY2F0Y2hibG9ja19jb250ZXh0IiBkZWxldGVkXD0iZmFsc2UiIGRlc2NyaXB0aW9uXD0iQ29kZSBpbiBuZXcgY2F0Y2ggYmxvY2tzIiBlbmFibGVkXD0idHJ1ZSIgaWRcPSJvcmcuZWNsaXBzZS5qZHQudWkudGV4dC5jb2RldGVtcGxhdGVzLmNhdGNoYmxvY2siIG5hbWVcPSJjYXRjaGJsb2NrIj4vLyAke3RvZG99IEF1dG8tZ2VuZXJhdGVkIGNhdGNoIGJsb2NrXG4ke2V4Y2VwdGlvbl92YXJ9LnByaW50U3RhY2tUcmFjZSgpOzwvdGVtcGxhdGU+PHRlbXBsYXRlIGF1dG9pbnNlcnRcPSJ0cnVlIiBjb250ZXh0XD0ibWV0aG9kYm9keV9jb250ZXh0IiBkZWxldGVkXD0iZmFsc2UiIGRlc2NyaXB0aW9uXD0iQ29kZSBpbiBjcmVhdGVkIG1ldGhvZCBzdHVicyIgZW5hYmxlZFw9InRydWUiIGlkXD0ib3JnLmVjbGlwc2UuamR0LnVpLnRleHQuY29kZXRlbXBsYXRlcy5tZXRob2Rib2R5IiBuYW1lXD0ibWV0aG9kYm9keSI+Ly8gJHt0b2RvfSBBdXRvLWdlbmVyYXRlZCBtZXRob2Qgc3R1YlxuJHtib2R5X3N0YXRlbWVudH08L3RlbXBsYXRlPjx0ZW1wbGF0ZSBhdXRvaW5zZXJ0XD0idHJ1ZSIgY29udGV4dFw9ImNvbnN0cnVjdG9yYm9keV9jb250ZXh0IiBkZWxldGVkXD0iZmFsc2UiIGRlc2NyaXB0aW9uXD0iQ29kZSBpbiBjcmVhdGVkIGNvbnN0cnVjdG9yIHN0dWJzIiBlbmFibGVkXD0idHJ1ZSIgaWRcPSJvcmcuZWNsaXBzZS5qZHQudWkudGV4dC5jb2RldGVtcGxhdGVzLmNvbnN0cnVjdG9yYm9keSIgbmFtZVw9ImNvbnN0cnVjdG9yYm9keSI+JHtib2R5X3N0YXRlbWVudH1cbi8vICR7dG9kb30gQXV0by1nZW5lcmF0ZWQgY29uc3RydWN0b3Igc3R1YjwvdGVtcGxhdGU+PHRlbXBsYXRlIGF1dG9pbnNlcnRcPSJ0cnVlIiBjb250ZXh0XD0iZ2V0dGVyYm9keV9jb250ZXh0IiBkZWxldGVkXD0iZmFsc2UiIGRlc2NyaXB0aW9uXD0iQ29kZSBpbiBjcmVhdGVkIGdldHRlcnMiIGVuYWJsZWRcPSJ0cnVlIiBpZFw9Im9yZy5lY2xpcHNlLmpkdC51aS50ZXh0LmNvZGV0ZW1wbGF0ZXMuZ2V0dGVyYm9keSIgbmFtZVw9ImdldHRlcmJvZHkiPnJldHVybiAke2ZpZWxkfTs8L3RlbXBsYXRlPjx0ZW1wbGF0ZSBhdXRvaW5zZXJ0XD0idHJ1ZSIgY29udGV4dFw9InNldHRlcmJvZHlfY29udGV4dCIgZGVsZXRlZFw9ImZhbHNlIiBkZXNjcmlwdGlvblw9IkNvZGUgaW4gY3JlYXRlZCBzZXR0ZXJzIiBlbmFibGVkXD0idHJ1ZSIgaWRcPSJvcmcuZWNsaXBzZS5qZHQudWkudGV4dC5jb2RldGVtcGxhdGVzLnNldHRlcmJvZHkiIG5hbWVcPSJzZXR0ZXJib2R5Ij4ke2ZpZWxkfSBcPSAke3BhcmFtfTs8L3RlbXBsYXRlPjwvdGVtcGxhdGVzPg0KZGlmZiAtLWdpdCBhL2RpYWdyYW0vb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRpYWdyYW0ucGFyYW1ldHJpYy9NRVRBLUlORi9NQU5JRkVTVC5NRiBiL2RpYWdyYW0vb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRpYWdyYW0ucGFyYW1ldHJpYy9NRVRBLUlORi9NQU5JRkVTVC5NRgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZDlkNDk0Ci0tLSAvZGV2L251bGwKKysrIGIvZGlhZ3JhbS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGlhZ3JhbS5wYXJhbWV0cmljL01FVEEtSU5GL01BTklGRVNULk1GCkBAIC0wLDAgKzEsMjAgQEAKK01hbmlmZXN0LVZlcnNpb246IDEuMA0KK0J1bmRsZS1NYW5pZmVzdFZlcnNpb246IDINCitCdW5kbGUtTmFtZTogJXBsdWdpbk5hbWUNCitCdW5kbGUtTG9jYWxpemF0aW9uOiBwbHVnaW4NCitCdW5kbGUtU3ltYm9saWNOYW1lOiBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGlhZ3JhbS5wYXJhbWV0cmljO3NpbmdsZXRvbjo9dHJ1ZQ0KK0J1bmRsZS1WZXJzaW9uOiAwLjcuMC5xdWFsaWZpZXINCitCdW5kbGUtQWN0aXZhdG9yOiBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGlhZ3JhbS5wYXJhbWV0cmljLkFjdGl2YXRvcg0KK0J1bmRsZS1WZW5kb3I6ICVwcm92aWRlck5hbWUNCitSZXF1aXJlLUJ1bmRsZTogb3JnLmVjbGlwc2UudWksDQorIG9yZy5lY2xpcHNlLmNvcmUucnVudGltZSwNCisgb3JnLmVjbGlwc2UucGFweXJ1cy5pbmZyYS52aWV3cG9pbnRzLnBvbGljeTtidW5kbGUtdmVyc2lvbj0iMS4xLjAiLA0KKyBvcmcuZWNsaXBzZS51bWwyLnVtbCwNCisgY29tLmdvb2dsZS5ndWF2YTtidW5kbGUtdmVyc2lvbj0iMTEuMC4wIiwNCisgb3JnLmVjbGlwc2UucGFweXJ1cy5pbmZyYS5lbWY7YnVuZGxlLXZlcnNpb249IjEuMS4wIiwNCisgb3JnLmVjbGlwc2UucGFweXJ1cy51bWwuZGlhZ3JhbS5jb21tb247YnVuZGxlLXZlcnNpb249IjEuMS4wIiwNCisgb3JnLmVjbGlwc2UuZ21mLnJ1bnRpbWUuZGlhZ3JhbS5jb3JlLA0KKyBvcmcuZWNsaXBzZS5wYXB5cnVzLnVtbC5kaWFncmFtLmNvbXBvc2l0ZTtidW5kbGUtdmVyc2lvbj0iMS4xLjAiLA0KKyBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGlhZ3JhbS5jb21tb247YnVuZGxlLXZlcnNpb249IjAuNy4wIg0KK0J1bmRsZS1SZXF1aXJlZEV4ZWN1dGlvbkVudmlyb25tZW50OiBKYXZhU0UtMS42DQorQnVuZGxlLUFjdGl2YXRpb25Qb2xpY3k6IGxhenkNCmRpZmYgLS1naXQgYS9kaWFncmFtL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kaWFncmFtLnBhcmFtZXRyaWMvYWJvdXQuaHRtbCBiL2RpYWdyYW0vb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRpYWdyYW0ucGFyYW1ldHJpYy9hYm91dC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgyZDQ5YmYKLS0tIC9kZXYvbnVsbAorKysgYi9kaWFncmFtL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kaWFncmFtLnBhcmFtZXRyaWMvYWJvdXQuaHRtbApAQCAtMCwwICsxLDI4IEBACis8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIFhIVE1MIDEuMCBTdHJpY3QvL0VOIg0KKyAgICAiaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtc3RyaWN0LmR0ZCI+DQorPGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPg0KKzxoZWFkPg0KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PUlTTy04ODU5LTEiLz4NCis8dGl0bGU+QWJvdXQ8L3RpdGxlPg0KKzwvaGVhZD4NCis8Ym9keSBsYW5nPSJFTi1VUyI+DQorPGgyPkFib3V0IFRoaXMgQ29udGVudDwvaDI+DQorIA0KKzxwPkp1bmUgNSwgMjAwNzwvcD4JDQorPGgzPkxpY2Vuc2U8L2gzPg0KKw0KKzxwPlRoZSBFY2xpcHNlIEZvdW5kYXRpb24gbWFrZXMgYXZhaWxhYmxlIGFsbCBjb250ZW50IGluIHRoaXMgcGx1Zy1pbiAoJnF1b3Q7Q29udGVudCZxdW90OykuICBVbmxlc3Mgb3RoZXJ3aXNlIA0KK2luZGljYXRlZCBiZWxvdywgdGhlIENvbnRlbnQgaXMgcHJvdmlkZWQgdG8geW91IHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUNCitFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMS4wICgmcXVvdDtFUEwmcXVvdDspLiAgQSBjb3B5IG9mIHRoZSBFUEwgaXMgYXZhaWxhYmxlIA0KK2F0IDxhIGhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sIj5odHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbDwvYT4uDQorRm9yIHB1cnBvc2VzIG9mIHRoZSBFUEwsICZxdW90O1Byb2dyYW0mcXVvdDsgd2lsbCBtZWFuIHRoZSBDb250ZW50LjwvcD4NCisNCis8cD5JZiB5b3UgZGlkIG5vdCByZWNlaXZlIHRoaXMgQ29udGVudCBkaXJlY3RseSBmcm9tIHRoZSBFY2xpcHNlIEZvdW5kYXRpb24sIHRoZSBDb250ZW50IGlzIA0KK2JlaW5nIHJlZGlzdHJpYnV0ZWQgYnkgYW5vdGhlciBwYXJ0eSAoJnF1b3Q7UmVkaXN0cmlidXRvciZxdW90OykgYW5kIGRpZmZlcmVudCB0ZXJtcyBhbmQgY29uZGl0aW9ucyBtYXkNCithcHBseSB0byB5b3VyIHVzZSBvZiBhbnkgb2JqZWN0IGNvZGUgaW4gdGhlIENvbnRlbnQuICBDaGVjayB0aGUgUmVkaXN0cmlidXRvcidzIGxpY2Vuc2UgdGhhdCB3YXMgDQorcHJvdmlkZWQgd2l0aCB0aGUgQ29udGVudC4gIElmIG5vIHN1Y2ggbGljZW5zZSBleGlzdHMsIGNvbnRhY3QgdGhlIFJlZGlzdHJpYnV0b3IuICBVbmxlc3Mgb3RoZXJ3aXNlDQoraW5kaWNhdGVkIGJlbG93LCB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEVQTCBzdGlsbCBhcHBseSB0byBhbnkgc291cmNlIGNvZGUgaW4gdGhlIENvbnRlbnQNCithbmQgc3VjaCBzb3VyY2UgY29kZSBtYXkgYmUgb2J0YWluZWQgYXQgPGEgaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy8iPmh0dHA6Ly93d3cuZWNsaXBzZS5vcmc8L2E+LjwvcD4NCisNCis8L2JvZHk+DQorPC9odG1sPg0KZGlmZiAtLWdpdCBhL2RpYWdyYW0vb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRpYWdyYW0ucGFyYW1ldHJpYy9idWlsZC5wcm9wZXJ0aWVzIGIvZGlhZ3JhbS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGlhZ3JhbS5wYXJhbWV0cmljL2J1aWxkLnByb3BlcnRpZXMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjAwYTBhOAotLS0gL2Rldi9udWxsCisrKyBiL2RpYWdyYW0vb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRpYWdyYW0ucGFyYW1ldHJpYy9idWlsZC5wcm9wZXJ0aWVzCkBAIC0wLDAgKzEsOSBAQAorc291cmNlLi4gPSBzcmMvDQorb3V0cHV0Li4gPSBiaW4vDQorYmluLmluY2x1ZGVzID0gcGx1Z2luLnhtbCxcDQorICAgICAgICAgICAgICAgTUVUQS1JTkYvLFwNCisgICAgICAgICAgICAgICAuLFwNCisgICAgICAgICAgICAgICBhYm91dC5odG1sLFwNCisgICAgICAgICAgICAgICByZXNvdXJjZXMvLFwNCisgICAgICAgICAgICAgICBwbHVnaW4ucHJvcGVydGllcw0KK3NyYy5pbmNsdWRlcyA9IGFib3V0Lmh0bWwNCmRpZmYgLS1naXQgYS9kaWFncmFtL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kaWFncmFtLnBhcmFtZXRyaWMvcGx1Z2luLnByb3BlcnRpZXMgYi9kaWFncmFtL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kaWFncmFtLnBhcmFtZXRyaWMvcGx1Z2luLnByb3BlcnRpZXMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjIyMDI5ZgotLS0gL2Rldi9udWxsCisrKyBiL2RpYWdyYW0vb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRpYWdyYW0ucGFyYW1ldHJpYy9wbHVnaW4ucHJvcGVydGllcwpAQCAtMCwwICsxLDE1IEBACisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCisjIENvcHlyaWdodCAoYykgMjAxNSBDRUEgTElTVC4NCisjIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCisjIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KKyMgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCisjIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorIw0KKyMgQ29udHJpYnV0b3JzOg0KKyMgICAgIEJlbm9pdCBNYWdnaSAoQ0VBIExJU1QpIGJlbm9pdC5tYWdnaUBjZWEuZnIgLSBpbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24NCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQorcGx1Z2luTmFtZT1vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGlhZ3JhbS5wYXJhbWV0cmljDQorcGx1Z2luRGVzY3JpcHRpb249VGhpcyBwbHVnLWluIGNvbnRhaW5zIHRoZSBwYXJhbWV0cmljIGRpYWdyYW0gb2YgU3lzTUwgMS40DQorcHJvdmlkZXJOYW1lPUVjbGlwc2UgTW9kZWxpbmcgUHJvamVjdA0KKw0KKw0KZGlmZiAtLWdpdCBhL2RpYWdyYW0vb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRpYWdyYW0ucGFyYW1ldHJpYy9wbHVnaW4ueG1sIGIvZGlhZ3JhbS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGlhZ3JhbS5wYXJhbWV0cmljL3BsdWdpbi54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWY2OGRiNAotLS0gL2Rldi9udWxsCisrKyBiL2RpYWdyYW0vb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRpYWdyYW0ucGFyYW1ldHJpYy9wbHVnaW4ueG1sCkBAIC0wLDAgKzEsMjMgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+DQorPD9lY2xpcHNlIHZlcnNpb249IjMuNCI/Pg0KKzwhLS0NCisgIENvcHlyaWdodCAoYykgMjAxNSBDRUEgTElTVC4NCisgDQorICBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQorICBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCisgIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQorICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyANCisgIENvbnRyaWJ1dG9yczoNCisgIEJlbm9pdCBNYWdnaSAoQ0VBIExJU1QpIGJlbm9pdC5tYWdnaUBjZWEuZnIgLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24NCistLT4NCisNCis8cGx1Z2luPg0KKyAgIDxleHRlbnNpb24NCisgICAgICAgICBwb2ludD0ib3JnLmVjbGlwc2UucGFweXJ1cy5pbmZyYS52aWV3cG9pbnRzLnBvbGljeS5jdXN0b20iPg0KKyAgICAgIDxjb250cmlidXRpb24NCisgICAgICAgICAgICBmaWxlPSJyZXNvdXJjZXMvY29uZmlndXJhdGlvbi9QYXJhbWV0cmljRGlhZ3JhbS5jb25maWd1cmF0aW9uIg0KKyAgICAgICAgICAgIG9yaWdpbmFsPSJwbGF0Zm9ybTovcGx1Z2luL29yZy5lY2xpcHNlLnBhcHlydXMuaW5mcmEudmlld3BvaW50cy5wb2xpY3kvYnVpbHRpbi9kZWZhdWx0LmNvbmZpZ3VyYXRpb24iPg0KKyAgICAgIDwvY29udHJpYnV0aW9uPg0KKyAgIDwvZXh0ZW5zaW9uPg0KKzwvcGx1Z2luPg0KZGlmZiAtLWdpdCBhL2RpYWdyYW0vb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRpYWdyYW0ucGFyYW1ldHJpYy9wb20ueG1sIGIvZGlhZ3JhbS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGlhZ3JhbS5wYXJhbWV0cmljL3BvbS54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmU3MDEwOQotLS0gL2Rldi9udWxsCisrKyBiL2RpYWdyYW0vb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRpYWdyYW0ucGFyYW1ldHJpYy9wb20ueG1sCkBAIC0wLDAgKzEsMTEgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+DQorPHByb2plY3Q+DQorCTxtb2RlbFZlcnNpb24+NC4wLjA8L21vZGVsVmVyc2lvbj4NCisJPHBhcmVudD4NCisJCTxncm91cElkPm9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWw8L2dyb3VwSWQ+CQ0KKwkJPGFydGlmYWN0SWQ+b3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbC5kaWFncmFtPC9hcnRpZmFjdElkPg0KKwkJPHZlcnNpb24+MC43LjAtU05BUFNIT1Q8L3ZlcnNpb24+DQorCTwvcGFyZW50Pg0KKwk8YXJ0aWZhY3RJZD5vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGlhZ3JhbS5wYXJhbWV0cmljPC9hcnRpZmFjdElkPg0KKwk8cGFja2FnaW5nPmVjbGlwc2UtcGx1Z2luPC9wYWNrYWdpbmc+DQorPC9wcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RpYWdyYW0vb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRpYWdyYW0ucGFyYW1ldHJpYy9yZXNvdXJjZXMvY29uZmlndXJhdGlvbi9QYXJhbWV0cmljRGlhZ3JhbS5jb25maWd1cmF0aW9uIGIvZGlhZ3JhbS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGlhZ3JhbS5wYXJhbWV0cmljL3Jlc291cmNlcy9jb25maWd1cmF0aW9uL1BhcmFtZXRyaWNEaWFncmFtLmNvbmZpZ3VyYXRpb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTg0ZWRlYQotLS0gL2Rldi9udWxsCisrKyBiL2RpYWdyYW0vb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRpYWdyYW0ucGFyYW1ldHJpYy9yZXNvdXJjZXMvY29uZmlndXJhdGlvbi9QYXJhbWV0cmljRGlhZ3JhbS5jb25maWd1cmF0aW9uCkBAIC0wLDAgKzEsMTkgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+DQorPGNvbmZpZ3VyYXRpb246UGFweXJ1c0NvbmZpZ3VyYXRpb24geG1pOnZlcnNpb249IjIuMCIgeG1sbnM6eG1pPSJodHRwOi8vd3d3Lm9tZy5vcmcvWE1JIiB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIiB4bWxuczpjb25maWd1cmF0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3BhcHlydXMvaW5mcmEvdmlld3BvaW50cy9jb25maWd1cmF0aW9uIiB4bWk6aWQ9Il9rbzA3SUVyYkVlU2RRS3pTUmF0QmpnIj4NCisgIDx2aWV3cG9pbnRzIHhzaTp0eXBlPSJjb25maWd1cmF0aW9uOlBhcHlydXNWaWV3cG9pbnQiIHhtaTppZD0iX3hvZ2RvRXJiRWVTZFFLelNSYXRCamciIG5hbWU9IkRlZmF1bHQgUGFweXJ1cyBWaWV3cG9pbnQiPg0KKyAgICA8bW9kZWxLaW5kcyB4c2k6dHlwZT0iY29uZmlndXJhdGlvbjpQYXB5cnVzRGlhZ3JhbSIgeG1pOmlkPSJfWnJCZjRKYUJFZVM4ZU52U3dEMGxnQSIgbmFtZT0iU3lzTUwgMS40IFBhcmFtZXRyaWMiIGljb249InBsYXRmb3JtOi9wbHVnaW4vb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbC5kaWFncmFtLnBhcmFtZXRyaWMvaWNvbnMvb2JqMTYvRGlhZ3JhbV9QYXJhbWV0cmljLnBuZyIgaW1wbGVtZW50YXRpb25JRD0iQ29tcG9zaXRlU3RydWN0dXJlIiBjYXRlZ29yaWVzPSJfZlVrMDBNeWtFZVN1WWJQZFp3V2x5dyIgY3VzdG9tUGFsZXR0ZT0icGxhdGZvcm06L3BsdWdpbi9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGlhZ3JhbS5wYXJhbWV0cmljL3Jlc291cmNlcy9wYWxldHRlL3BhcmFtZXRyaWNEaWFncmFtUGFsZXR0ZS5wYWxldHRlY29uZmlndXJhdGlvbiI+DQorICAgICAgPHByb2ZpbGVzIGhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvcGFweXJ1cy8xLjQvU3lzTUwjLyIvPg0KKyAgICAgIDxtb2RlbFJ1bGVzIHhtaTppZD0iX1pyQmY0WmFCRWVTOGVOdlN3RDBsZ0EiPg0KKyAgICAgICAgPGVsZW1lbnQgaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy91bWwyLzUuMC4wL1VNTCMvL1BhY2thZ2UiLz4NCisgICAgICA8L21vZGVsUnVsZXM+DQorICAgICAgPG93bmluZ1J1bGVzIHhtaTppZD0iX1pyQmY0NWFCRWVTOGVOdlN3RDBsZ0EiPg0KKyAgICAgICAgPGVsZW1lbnQgaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy91bWwyLzUuMC4wL1VNTCMvL1BhY2thZ2UiLz4NCisgICAgICA8L293bmluZ1J1bGVzPg0KKyAgICAgIDxjaGlsZFJ1bGVzIHhtaTppZD0iX1pyQmY1WmFCRWVTOGVOdlN3RDBsZ0EiLz4NCisgICAgICA8cGFsZXR0ZVJ1bGVzIHhtaTppZD0iX040R3pJS0ZRRWVTeDZNWWRlaTFyS0EiIHBlcm1pdD0iZmFsc2UiIGVsZW1lbnQ9ImNvbXBvc2l0ZS5ncm91cC4qIi8+DQorICAgIDwvbW9kZWxLaW5kcz4NCisgIDwvdmlld3BvaW50cz4NCisgIDxkZWZhdWx0U3Rha2Vob2xkZXIgaHJlZj0icGxhdGZvcm06L3BsdWdpbi9vcmcuZWNsaXBzZS5wYXB5cnVzLmluZnJhLnZpZXdwb2ludHMucG9saWN5L2J1aWx0aW4vZGVmYXVsdC5jb25maWd1cmF0aW9uI183d0xta2R4aEVlT3FIdlJ5aU44N2hBIi8+DQorICA8bWV0YW1vZGVsIGhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvdW1sMi81LjAuMC9VTUwjLyIvPg0KKyAgPGNhdGVnb3JpZXMgeG1pOmlkPSJfZlVrMDBNeWtFZVN1WWJQZFp3V2x5dyIgbmFtZT0iU3lzTUwxNCIvPg0KKzwvY29uZmlndXJhdGlvbjpQYXB5cnVzQ29uZmlndXJhdGlvbj4NCmRpZmYgLS1naXQgYS9kaWFncmFtL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kaWFncmFtLnBhcmFtZXRyaWMvcmVzb3VyY2VzL3BhbGV0dGUvcGFyYW1ldHJpY0RpYWdyYW1QYWxldHRlLnBhbGV0dGVjb25maWd1cmF0aW9uIGIvZGlhZ3JhbS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGlhZ3JhbS5wYXJhbWV0cmljL3Jlc291cmNlcy9wYWxldHRlL3BhcmFtZXRyaWNEaWFncmFtUGFsZXR0ZS5wYWxldHRlY29uZmlndXJhdGlvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNDg0ZTFjCi0tLSAvZGV2L251bGwKKysrIGIvZGlhZ3JhbS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGlhZ3JhbS5wYXJhbWV0cmljL3Jlc291cmNlcy9wYWxldHRlL3BhcmFtZXRyaWNEaWFncmFtUGFsZXR0ZS5wYWxldHRlY29uZmlndXJhdGlvbgpAQCAtMCwwICsxLDU5MyBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iQVNDSUkiPz4NCis8cGFsZXR0ZWNvbmZpZ3VyYXRpb246UGFsZXR0ZUNvbmZpZ3VyYXRpb24NCisgICAgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSINCisgICAgeG1sbnM6cGFsZXR0ZWNvbmZpZ3VyYXRpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvcGFweXJ1cy9kaWFncmFtL3BhbGV0dGVjb25maWd1cmF0aW9uLzAuNyINCisgICAgaWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwucGFyLnBhbGV0dGUubW9kZWwiDQorICAgIGxhYmVsPSJTeXNNTCBQQVIgUGFsZXR0ZSI+DQorICA8ZHJhd2VyQ29uZmlndXJhdGlvbnMNCisgICAgICBpZD0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5wYXIucGFsZXR0ZS5ub2RlIg0KKyAgICAgIGxhYmVsPSJOb2RlcyINCisgICAgICBkZXNjcmlwdGlvbj0iTm9kZXMiPg0KKyAgICA8b3duZWRDb25maWd1cmF0aW9ucw0KKyAgICAgICAgeHNpOnR5cGU9InBhbGV0dGVjb25maWd1cmF0aW9uOlRvb2xDb25maWd1cmF0aW9uIg0KKyAgICAgICAgaWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwucGFyLnBhbGV0dGUubm9kZS5Db21tZW50Ig0KKyAgICAgICAgbGFiZWw9IkNvbW1lbnQiDQorICAgICAgICBkZXNjcmlwdGlvbj0iQ3JlYXRlIGEgY29tbWVudCI+DQorICAgICAgPGljb24NCisgICAgICAgICAgcGx1Z2luSUQ9Im9yZy5lY2xpcHNlLnVtbDIudW1sLmVkaXQiDQorICAgICAgICAgIGljb25QYXRoPSJpY29ucy9mdWxsL29iajE2L0NvbW1lbnQuZ2lmIi8+DQorICAgICAgPGVsZW1lbnREZXNjcmlwdG9ycw0KKyAgICAgICAgICBlbGVtZW50VHlwZUlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnVtbC5kaWFncmFtLmNvbXBvc2l0ZS5Db21tZW50XzIxMDkiLz4NCisgICAgICA8ZWxlbWVudERlc2NyaXB0b3JzDQorICAgICAgICAgIGVsZW1lbnRUeXBlSWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMudW1sLmRpYWdyYW0uY29tcG9zaXRlLkNvbW1lbnRfMzA5NyIvPg0KKyAgICA8L293bmVkQ29uZmlndXJhdGlvbnM+DQorICAgIDxvd25lZENvbmZpZ3VyYXRpb25zDQorICAgICAgICB4c2k6dHlwZT0icGFsZXR0ZWNvbmZpZ3VyYXRpb246VG9vbENvbmZpZ3VyYXRpb24iDQorICAgICAgICBpZD0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5wYXIucGFsZXR0ZS5ub2RlLkNvbnN0cmFpbnQiDQorICAgICAgICBsYWJlbD0iQ29uc3RyYWludCINCisgICAgICAgIGRlc2NyaXB0aW9uPSJDcmVhdGUgYSBjb25zdHJhaW50Ij4NCisgICAgICA8aWNvbg0KKyAgICAgICAgICBwbHVnaW5JRD0ib3JnLmVjbGlwc2UudW1sMi51bWwuZWRpdCINCisgICAgICAgICAgaWNvblBhdGg9Imljb25zL2Z1bGwvb2JqMTYvQ29uc3RyYWludC5naWYiLz4NCisgICAgICA8ZWxlbWVudERlc2NyaXB0b3JzDQorICAgICAgICAgIGVsZW1lbnRUeXBlSWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMudW1sLmRpYWdyYW0uY29tcG9zaXRlLkNvbnN0cmFpbnRfMzEyMCIvPg0KKyAgICAgIDxlbGVtZW50RGVzY3JpcHRvcnMNCisgICAgICAgICAgZWxlbWVudFR5cGVJZD0ib3JnLmVjbGlwc2UucGFweXJ1cy51bWwuZGlhZ3JhbS5jb21wb3NpdGUuQ29uc3RyYWludF8yMTE0Ii8+DQorICAgIDwvb3duZWRDb25maWd1cmF0aW9ucz4NCisgICAgPG93bmVkQ29uZmlndXJhdGlvbnMNCisgICAgICAgIHhzaTp0eXBlPSJwYWxldHRlY29uZmlndXJhdGlvbjpUb29sQ29uZmlndXJhdGlvbiINCisgICAgICAgIGlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLnBhci5wYWxldHRlLm5vZGUuQ29uc3RyYWludFByb3BlcnR5Ig0KKyAgICAgICAgbGFiZWw9IkNvbnN0cmFpbnRQcm9wZXJ0eSINCisgICAgICAgIGRlc2NyaXB0aW9uPSJDcmVhdGUgYSBDb25zdHJhaW50UHJvcGVydHkiPg0KKyAgICAgIDxpY29uDQorICAgICAgICAgIHBsdWdpbklEPSJvcmcuZWNsaXBzZS51bWwyLnVtbC5lZGl0Ig0KKyAgICAgICAgICBpY29uUGF0aD0iaWNvbnMvZnVsbC9vYmoxNi9Qcm9wZXJ0eS5naWYiLz4NCisgICAgICA8ZWxlbWVudERlc2NyaXB0b3JzDQorICAgICAgICAgIGVsZW1lbnRUeXBlSWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5Db25zdHJhaW50UHJvcGVydHlfMzA3MCIvPg0KKyAgICAgIDxlbGVtZW50RGVzY3JpcHRvcnMNCisgICAgICAgICAgZWxlbWVudFR5cGVJZD0ib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LkNvbnN0cmFpbnRQcm9wZXJ0eV8zMTAxIi8+DQorICAgIDwvb3duZWRDb25maWd1cmF0aW9ucz4NCisgICAgPG93bmVkQ29uZmlndXJhdGlvbnMNCisgICAgICAgIHhzaTp0eXBlPSJwYWxldHRlY29uZmlndXJhdGlvbjpUb29sQ29uZmlndXJhdGlvbiINCisgICAgICAgIGlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLnBhci5wYWxldHRlLm5vZGUuRWxlbWVudEdyb3VwIg0KKyAgICAgICAgbGFiZWw9IkVsZW1lbnRHcm91cCINCisgICAgICAgIGRlc2NyaXB0aW9uPSJDcmVhdGUgYSBFbGVtZW50R3JvdXAiPg0KKyAgICAgIDxpY29uDQorICAgICAgICAgIHBsdWdpbklEPSJvcmcuZWNsaXBzZS51bWwyLnVtbC5lZGl0Ig0KKyAgICAgICAgICBpY29uUGF0aD0iaWNvbnMvZnVsbC9vYmoxNi9Db21tZW50LmdpZiIvPg0KKyAgICAgIDxlbGVtZW50RGVzY3JpcHRvcnMNCisgICAgICAgICAgZWxlbWVudFR5cGVJZD0ib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LkVsZW1lbnRHcm91cF8zMDk3Ii8+DQorICAgICAgPGVsZW1lbnREZXNjcmlwdG9ycw0KKyAgICAgICAgICBlbGVtZW50VHlwZUlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuRWxlbWVudEdyb3VwXzIxMDkiLz4NCisgICAgPC9vd25lZENvbmZpZ3VyYXRpb25zPg0KKyAgICA8b3duZWRDb25maWd1cmF0aW9ucw0KKyAgICAgICAgeHNpOnR5cGU9InBhbGV0dGVjb25maWd1cmF0aW9uOlRvb2xDb25maWd1cmF0aW9uIg0KKyAgICAgICAgaWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwucGFyLnBhbGV0dGUubm9kZS5Qcm9ibGVtIg0KKyAgICAgICAgbGFiZWw9IlByb2JsZW0iDQorICAgICAgICBkZXNjcmlwdGlvbj0iQ3JlYXRlIGEgUHJvYmxlbSI+DQorICAgICAgPGljb24NCisgICAgICAgICAgcGx1Z2luSUQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwiDQorICAgICAgICAgIGljb25QYXRoPSJpY29ucy9tb2RlbGVsZW1lbnRzL1Byb2JsZW0uZ2lmIi8+DQorICAgICAgPGVsZW1lbnREZXNjcmlwdG9ycw0KKyAgICAgICAgICBlbGVtZW50VHlwZUlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuUHJvYmxlbV8zMDk3Ii8+DQorICAgICAgPGVsZW1lbnREZXNjcmlwdG9ycw0KKyAgICAgICAgICBlbGVtZW50VHlwZUlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuUHJvYmxlbV8yMTA5Ii8+DQorICAgIDwvb3duZWRDb25maWd1cmF0aW9ucz4NCisgICAgPG93bmVkQ29uZmlndXJhdGlvbnMNCisgICAgICAgIHhzaTp0eXBlPSJwYWxldHRlY29uZmlndXJhdGlvbjpUb29sQ29uZmlndXJhdGlvbiINCisgICAgICAgIGlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLnBhci5wYWxldHRlLm5vZGUuUmF0aW9uYWxlIg0KKyAgICAgICAgbGFiZWw9IlJhdGlvbmFsZSINCisgICAgICAgIGRlc2NyaXB0aW9uPSJDcmVhdGUgYSBSYXRpb25hbGUiPg0KKyAgICAgIDxpY29uDQorICAgICAgICAgIHBsdWdpbklEPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sIg0KKyAgICAgICAgICBpY29uUGF0aD0iaWNvbnMvbW9kZWxlbGVtZW50cy9SYXRpb25hbGUuZ2lmIi8+DQorICAgICAgPGVsZW1lbnREZXNjcmlwdG9ycw0KKyAgICAgICAgICBlbGVtZW50VHlwZUlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuUmF0aW9uYWxlXzMwOTciLz4NCisgICAgICA8ZWxlbWVudERlc2NyaXB0b3JzDQorICAgICAgICAgIGVsZW1lbnRUeXBlSWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5SYXRpb25hbGVfMjEwOSIvPg0KKyAgICA8L293bmVkQ29uZmlndXJhdGlvbnM+DQorICAgIDxvd25lZENvbmZpZ3VyYXRpb25zDQorICAgICAgICB4c2k6dHlwZT0icGFsZXR0ZWNvbmZpZ3VyYXRpb246VG9vbENvbmZpZ3VyYXRpb24iDQorICAgICAgICBpZD0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5wYXIucGFsZXR0ZS5ub2RlLlZpZXdfQ2xhc3MiDQorICAgICAgICBsYWJlbD0iVmlldyINCisgICAgICAgIGRlc2NyaXB0aW9uPSJDcmVhdGUgYSBWaWV3Ij4NCisgICAgICA8aWNvbg0KKyAgICAgICAgICBwbHVnaW5JRD0ib3JnLmVjbGlwc2UudW1sMi51bWwuZWRpdCINCisgICAgICAgICAgaWNvblBhdGg9Imljb25zL2Z1bGwvb2JqMTYvQ2xhc3MuZ2lmIi8+DQorICAgICAgPGVsZW1lbnREZXNjcmlwdG9ycw0KKyAgICAgICAgICBlbGVtZW50VHlwZUlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuVmlld19DbGFzc18zMDg1Ii8+DQorICAgICAgPGVsZW1lbnREZXNjcmlwdG9ycw0KKyAgICAgICAgICBlbGVtZW50VHlwZUlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuVmlld19DbGFzc18yMDczIi8+DQorICAgIDwvb3duZWRDb25maWd1cmF0aW9ucz4NCisgICAgPG93bmVkQ29uZmlndXJhdGlvbnMNCisgICAgICAgIHhzaTp0eXBlPSJwYWxldHRlY29uZmlndXJhdGlvbjpUb29sQ29uZmlndXJhdGlvbiINCisgICAgICAgIGlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLnBhci5wYWxldHRlLm5vZGUuVmlld19QYWNrYWdlIg0KKyAgICAgICAgbGFiZWw9IlZpZXcgUGFja2FnZSINCisgICAgICAgIGRlc2NyaXB0aW9uPSJDcmVhdGUgYSBWaWV3IFBhY2thZ2UiPg0KKyAgICAgIDxpY29uDQorICAgICAgICAgIHBsdWdpbklEPSJvcmcuZWNsaXBzZS51bWwyLnVtbC5lZGl0Ig0KKyAgICAgICAgICBpY29uUGF0aD0iaWNvbnMvZnVsbC9vYmoxNi9QYWNrYWdlLmdpZiIvPg0KKyAgICAgIDxlbGVtZW50RGVzY3JpcHRvcnMNCisgICAgICAgICAgZWxlbWVudFR5cGVJZD0ib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LlZpZXdfUGFja2FnZV9Db21wb3NpdGVTdHJ1Y3R1cmUiLz4NCisgICAgPC9vd25lZENvbmZpZ3VyYXRpb25zPg0KKyAgICA8b3duZWRDb25maWd1cmF0aW9ucw0KKyAgICAgICAgeHNpOnR5cGU9InBhbGV0dGVjb25maWd1cmF0aW9uOlRvb2xDb25maWd1cmF0aW9uIg0KKyAgICAgICAgaWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwucGFyLnBhbGV0dGUubm9kZS5WaWV3UG9pbnQiDQorICAgICAgICBsYWJlbD0iVmlld1BvaW50Ig0KKyAgICAgICAgZGVzY3JpcHRpb249IkNyZWF0ZSBhIFZpZXdQb2ludCI+DQorICAgICAgPGljb24NCisgICAgICAgICAgcGx1Z2luSUQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwuZWRpdCINCisgICAgICAgICAgaWNvblBhdGg9Imljb25zL2Z1bGwvb2JqMTYvVmlld1BvaW50LmdpZiIvPg0KKyAgICAgIDxlbGVtZW50RGVzY3JpcHRvcnMNCisgICAgICAgICAgZWxlbWVudFR5cGVJZD0ib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LlZpZXdQb2ludF8zMDg1Ii8+DQorICAgICAgPGVsZW1lbnREZXNjcmlwdG9ycw0KKyAgICAgICAgICBlbGVtZW50VHlwZUlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuVmlld1BvaW50XzIwNzMiLz4NCisgICAgPC9vd25lZENvbmZpZ3VyYXRpb25zPg0KKyAgPC9kcmF3ZXJDb25maWd1cmF0aW9ucz4NCisgIDxkcmF3ZXJDb25maWd1cmF0aW9ucw0KKyAgICAgIGlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLnBhci5wYWxldHRlLmVkZ2UiDQorICAgICAgbGFiZWw9IkVkZ2VzIg0KKyAgICAgIGRlc2NyaXB0aW9uPSJFZGdlcyI+DQorICAgIDxvd25lZENvbmZpZ3VyYXRpb25zDQorICAgICAgICB4c2k6dHlwZT0icGFsZXR0ZWNvbmZpZ3VyYXRpb246VG9vbENvbmZpZ3VyYXRpb24iDQorICAgICAgICBpZD0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5wYXIucGFsZXR0ZS5lZGdlLkNvbmZvcm1fRGVwZW5kZW5jeSINCisgICAgICAgIGxhYmVsPSJDb25mb3JtIERlcGVuZGVuY3kiDQorICAgICAgICBkZXNjcmlwdGlvbj0iQ3JlYXRlIGEgQ29uZm9ybSBEZXBlbmRlbmN5Ig0KKyAgICAgICAga2luZD0iQ29ubmVjdGlvblRvb2wiPg0KKyAgICAgIDxpY29uDQorICAgICAgICAgIHBsdWdpbklEPSJvcmcuZWNsaXBzZS51bWwyLnVtbC5lZGl0Ig0KKyAgICAgICAgICBpY29uUGF0aD0iaWNvbnMvZnVsbC9vYmoxNi9EZXBlbmRlbmN5LmdpZiIvPg0KKyAgICAgIDxlbGVtZW50RGVzY3JpcHRvcnMNCisgICAgICAgICAgZWxlbWVudFR5cGVJZD0ib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LkNvbmZvcm1fRGVwZW5kZW5jeV80MDEwIi8+DQorICAgIDwvb3duZWRDb25maWd1cmF0aW9ucz4NCisgICAgPG93bmVkQ29uZmlndXJhdGlvbnMNCisgICAgICAgIHhzaTp0eXBlPSJwYWxldHRlY29uZmlndXJhdGlvbjpUb29sQ29uZmlndXJhdGlvbiINCisgICAgICAgIGlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLnBhci5wYWxldHRlLmVkZ2UuQ29uZm9ybV9HZW5lcmFsaXphdGlvbiINCisgICAgICAgIGxhYmVsPSJDb25mb3JtIEdlbmVyYWxpemF0aW9uIg0KKyAgICAgICAgZGVzY3JpcHRpb249IkNyZWF0ZSBhIENvbmZvcm0gR2VuZXJhbGl6YXRpb24iDQorICAgICAgICBraW5kPSJDb25uZWN0aW9uVG9vbCI+DQorICAgICAgPGljb24NCisgICAgICAgICAgcGx1Z2luSUQ9Im9yZy5lY2xpcHNlLnVtbDIudW1sLmVkaXQiDQorICAgICAgICAgIGljb25QYXRoPSJpY29ucy9mdWxsL29iajE2L0dlbmVyYWxpemF0aW9uLmdpZiIvPg0KKyAgICAgIDxlbGVtZW50RGVzY3JpcHRvcnMNCisgICAgICAgICAgZWxlbWVudFR5cGVJZD0ib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LkNvbmZvcm1fR2VuZXJhbGl6YXRpb25fNDAxNSIvPg0KKyAgICA8L293bmVkQ29uZmlndXJhdGlvbnM+DQorICAgIDxvd25lZENvbmZpZ3VyYXRpb25zDQorICAgICAgICB4c2k6dHlwZT0icGFsZXR0ZWNvbmZpZ3VyYXRpb246VG9vbENvbmZpZ3VyYXRpb24iDQorICAgICAgICBpZD0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5wYXIucGFsZXR0ZS5lZGdlLkRlcGVuZGVuY3kiDQorICAgICAgICBsYWJlbD0iRGVwZW5kZW5jeSINCisgICAgICAgIGRlc2NyaXB0aW9uPSJDcmVhdGUgYSBkZXBlbmRlbmN5Ig0KKyAgICAgICAga2luZD0iQ29ubmVjdGlvblRvb2wiPg0KKyAgICAgIDxpY29uDQorICAgICAgICAgIHBsdWdpbklEPSJvcmcuZWNsaXBzZS51bWwyLnVtbC5lZGl0Ig0KKyAgICAgICAgICBpY29uUGF0aD0iL2ljb25zL2Z1bGwvb2JqMTYvRGVwZW5kZW5jeS5naWYiLz4NCisgICAgICA8ZWxlbWVudERlc2NyaXB0b3JzDQorICAgICAgICAgIGVsZW1lbnRUeXBlSWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMudW1sLmRpYWdyYW0uY2xhenouRGVwZW5kZW5jeV8yMDE0Ii8+DQorICAgICAgPGVsZW1lbnREZXNjcmlwdG9ycw0KKyAgICAgICAgICBlbGVtZW50VHlwZUlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnVtbC5kaWFncmFtLmNsYXp6LkRlcGVuZGVuY3lfNDAwOCIvPg0KKyAgICAgIDxlbGVtZW50RGVzY3JpcHRvcnMNCisgICAgICAgICAgZWxlbWVudFR5cGVJZD0ib3JnLmVjbGlwc2UucGFweXJ1cy51bWwuZGlhZ3JhbS5jbGF6ei5EZXBlbmRlbmN5XzQwMTgiLz4NCisgICAgPC9vd25lZENvbmZpZ3VyYXRpb25zPg0KKyAgICA8b3duZWRDb25maWd1cmF0aW9ucw0KKyAgICAgICAgeHNpOnR5cGU9InBhbGV0dGVjb25maWd1cmF0aW9uOlRvb2xDb25maWd1cmF0aW9uIg0KKyAgICAgICAgaWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwucGFyLnBhbGV0dGUuZWRnZS5FeHBvc2UiDQorICAgICAgICBsYWJlbD0iRXhwb3NlIg0KKyAgICAgICAgZGVzY3JpcHRpb249IkNyZWF0ZSBhIEV4cG9zZSINCisgICAgICAgIGtpbmQ9IkNvbm5lY3Rpb25Ub29sIj4NCisgICAgICA8aWNvbg0KKyAgICAgICAgICBwbHVnaW5JRD0ib3JnLmVjbGlwc2UudW1sMi51bWwuZWRpdCINCisgICAgICAgICAgaWNvblBhdGg9Imljb25zL2Z1bGwvb2JqMTYvRGVwZW5kZW5jeS5naWYiLz4NCisgICAgICA8ZWxlbWVudERlc2NyaXB0b3JzDQorICAgICAgICAgIGVsZW1lbnRUeXBlSWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5FeHBvc2VfNDAxMCIvPg0KKyAgICA8L293bmVkQ29uZmlndXJhdGlvbnM+DQorICAgIDxvd25lZENvbmZpZ3VyYXRpb25zDQorICAgICAgICB4c2k6dHlwZT0icGFsZXR0ZWNvbmZpZ3VyYXRpb246VG9vbENvbmZpZ3VyYXRpb24iDQorICAgICAgICBpZD0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5wYXIucGFsZXR0ZS5lZGdlLlJlZmluZV9BYnN0cmFjdGlvbiINCisgICAgICAgIGxhYmVsPSJSZWZpbmUgQWJzdHJhY3Rpb24iDQorICAgICAgICBkZXNjcmlwdGlvbj0iQ3JlYXRlIGEgUmVmaW5lIEFic3RyYWN0aW9uIg0KKyAgICAgICAga2luZD0iQ29ubmVjdGlvblRvb2wiPg0KKyAgICAgIDxpY29uDQorICAgICAgICAgIHBsdWdpbklEPSJvcmcuZWNsaXBzZS51bWwyLnVtbC5lZGl0Ig0KKyAgICAgICAgICBpY29uUGF0aD0iaWNvbnMvZnVsbC9vYmoxNi9BYnN0cmFjdGlvbi5naWYiLz4NCisgICAgICA8ZWxlbWVudERlc2NyaXB0b3JzDQorICAgICAgICAgIGVsZW1lbnRUeXBlSWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5SZWZpbmVfQWJzdHJhY3Rpb25fNDAwNyIvPg0KKyAgICA8L293bmVkQ29uZmlndXJhdGlvbnM+DQorICA8L2RyYXdlckNvbmZpZ3VyYXRpb25zPg0KKyAgPGRyYXdlckNvbmZpZ3VyYXRpb25zDQorICAgICAgaWQ9IlN5c01MIE5vZGVzIg0KKyAgICAgIGxhYmVsPSJPdGhlciBOb2RlcyINCisgICAgICBkZXNjcmlwdGlvbj0iT3RoZXIgTm9kZXMiPg0KKyAgICA8b3duZWRDb25maWd1cmF0aW9ucw0KKyAgICAgICAgeHNpOnR5cGU9InBhbGV0dGVjb25maWd1cmF0aW9uOlRvb2xDb25maWd1cmF0aW9uIg0KKyAgICAgICAgaWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwucGFyLnBhbGV0dGUubm9kZS5DbGFzc2lmaWVyQmVoYXZpb3JQcm9wZXJ0eSINCisgICAgICAgIGxhYmVsPSJDbGFzc2lmaWVyQmVoYXZpb3JQcm9wZXJ0eSINCisgICAgICAgIGRlc2NyaXB0aW9uPSJDcmVhdGUgYSBDbGFzc2lmaWVyQmVoYXZpb3JQcm9wZXJ0eSI+DQorICAgICAgPGljb24NCisgICAgICAgICAgcGx1Z2luSUQ9Im9yZy5lY2xpcHNlLnVtbDIudW1sLmVkaXQiDQorICAgICAgICAgIGljb25QYXRoPSJpY29ucy9mdWxsL29iajE2L1Byb3BlcnR5LmdpZiIvPg0KKyAgICAgIDxlbGVtZW50RGVzY3JpcHRvcnMNCisgICAgICAgICAgZWxlbWVudFR5cGVJZD0ib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LkNsYXNzaWZpZXJCZWhhdmlvclByb3BlcnR5XzMwNzAiLz4NCisgICAgICA8ZWxlbWVudERlc2NyaXB0b3JzDQorICAgICAgICAgIGVsZW1lbnRUeXBlSWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5DbGFzc2lmaWVyQmVoYXZpb3JQcm9wZXJ0eV8zMTAxIi8+DQorICAgIDwvb3duZWRDb25maWd1cmF0aW9ucz4NCisgICAgPG93bmVkQ29uZmlndXJhdGlvbnMNCisgICAgICAgIHhzaTp0eXBlPSJwYWxldHRlY29uZmlndXJhdGlvbjpUb29sQ29uZmlndXJhdGlvbiINCisgICAgICAgIGlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLnBhci5wYWxldHRlLm5vZGUuRGlzdHJpYnV0ZWRQcm9wZXJ0eSINCisgICAgICAgIGxhYmVsPSJEaXN0cmlidXRlZFByb3BlcnR5Ig0KKyAgICAgICAgZGVzY3JpcHRpb249IkNyZWF0ZSBhIERpc3RyaWJ1dGVkUHJvcGVydHkiPg0KKyAgICAgIDxpY29uDQorICAgICAgICAgIHBsdWdpbklEPSJvcmcuZWNsaXBzZS51bWwyLnVtbC5lZGl0Ig0KKyAgICAgICAgICBpY29uUGF0aD0iaWNvbnMvZnVsbC9vYmoxNi9Qcm9wZXJ0eS5naWYiLz4NCisgICAgICA8ZWxlbWVudERlc2NyaXB0b3JzDQorICAgICAgICAgIGVsZW1lbnRUeXBlSWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5EaXN0cmlidXRlZFByb3BlcnR5XzMwNzAiLz4NCisgICAgICA8ZWxlbWVudERlc2NyaXB0b3JzDQorICAgICAgICAgIGVsZW1lbnRUeXBlSWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5EaXN0cmlidXRlZFByb3BlcnR5XzMxMDEiLz4NCisgICAgPC9vd25lZENvbmZpZ3VyYXRpb25zPg0KKyAgICA8b3duZWRDb25maWd1cmF0aW9ucw0KKyAgICAgICAgeHNpOnR5cGU9InBhbGV0dGVjb25maWd1cmF0aW9uOlRvb2xDb25maWd1cmF0aW9uIg0KKyAgICAgICAgaWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwucGFyLnBhbGV0dGUubm9kZS5Db25uZWN0b3JQcm9wZXJ0eSINCisgICAgICAgIGxhYmVsPSJDb25uZWN0b3JQcm9wZXJ0eSINCisgICAgICAgIGRlc2NyaXB0aW9uPSJDcmVhdGUgYSBDb25uZWN0b3JQcm9wZXJ0eSI+DQorICAgICAgPGljb24NCisgICAgICAgICAgcGx1Z2luSUQ9Im9yZy5lY2xpcHNlLnVtbDIudW1sLmVkaXQiDQorICAgICAgICAgIGljb25QYXRoPSJpY29ucy9mdWxsL29iajE2L1Byb3BlcnR5LmdpZiIvPg0KKyAgICAgIDxlbGVtZW50RGVzY3JpcHRvcnMNCisgICAgICAgICAgZWxlbWVudFR5cGVJZD0ib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LkNvbm5lY3RvclByb3BlcnR5XzMwNzAiLz4NCisgICAgICA8ZWxlbWVudERlc2NyaXB0b3JzDQorICAgICAgICAgIGVsZW1lbnRUeXBlSWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5Db25uZWN0b3JQcm9wZXJ0eV8zMTAxIi8+DQorICAgIDwvb3duZWRDb25maWd1cmF0aW9ucz4NCisgICAgPG93bmVkQ29uZmlndXJhdGlvbnMNCisgICAgICAgIHhzaTp0eXBlPSJwYWxldHRlY29uZmlndXJhdGlvbjpUb29sQ29uZmlndXJhdGlvbiINCisgICAgICAgIGlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLnBhci5wYWxldHRlLm5vZGUuUGFydGljaXBhbnRQcm9wZXJ0eSINCisgICAgICAgIGxhYmVsPSJQYXJ0aWNpcGFudFByb3BlcnR5Ig0KKyAgICAgICAgZGVzY3JpcHRpb249IkNyZWF0ZSBhIFBhcnRpY2lwYW50UHJvcGVydHkiPg0KKyAgICAgIDxpY29uDQorICAgICAgICAgIHBsdWdpbklEPSJvcmcuZWNsaXBzZS51bWwyLnVtbC5lZGl0Ig0KKyAgICAgICAgICBpY29uUGF0aD0iaWNvbnMvZnVsbC9vYmoxNi9Qcm9wZXJ0eS5naWYiLz4NCisgICAgICA8ZWxlbWVudERlc2NyaXB0b3JzDQorICAgICAgICAgIGVsZW1lbnRUeXBlSWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5QYXJ0aWNpcGFudFByb3BlcnR5XzMwNzAiLz4NCisgICAgICA8ZWxlbWVudERlc2NyaXB0b3JzDQorICAgICAgICAgIGVsZW1lbnRUeXBlSWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5QYXJ0aWNpcGFudFByb3BlcnR5XzMxMDEiLz4NCisgICAgPC9vd25lZENvbmZpZ3VyYXRpb25zPg0KKyAgICA8b3duZWRDb25maWd1cmF0aW9ucw0KKyAgICAgICAgeHNpOnR5cGU9InBhbGV0dGVjb25maWd1cmF0aW9uOlRvb2xDb25maWd1cmF0aW9uIg0KKyAgICAgICAgaWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwucGFyLnBhbGV0dGUubm9kZS5GbG93UHJvcGVydHkiDQorICAgICAgICBsYWJlbD0iRmxvd1Byb3BlcnR5Ig0KKyAgICAgICAgZGVzY3JpcHRpb249IkNyZWF0ZSBhIEZsb3dQcm9wZXJ0eSI+DQorICAgICAgPGljb24NCisgICAgICAgICAgcGx1Z2luSUQ9Im9yZy5lY2xpcHNlLnVtbDIudW1sLmVkaXQiDQorICAgICAgICAgIGljb25QYXRoPSJpY29ucy9mdWxsL29iajE2L1Byb3BlcnR5LmdpZiIvPg0KKyAgICAgIDxlbGVtZW50RGVzY3JpcHRvcnMNCisgICAgICAgICAgZWxlbWVudFR5cGVJZD0ib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LkZsb3dQcm9wZXJ0eV8zMDcwIi8+DQorICAgICAgPGVsZW1lbnREZXNjcmlwdG9ycw0KKyAgICAgICAgICBlbGVtZW50VHlwZUlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuRmxvd1Byb3BlcnR5XzMxMDEiLz4NCisgICAgPC9vd25lZENvbmZpZ3VyYXRpb25zPg0KKyAgICA8b3duZWRDb25maWd1cmF0aW9ucw0KKyAgICAgICAgeHNpOnR5cGU9InBhbGV0dGVjb25maWd1cmF0aW9uOlRvb2xDb25maWd1cmF0aW9uIg0KKyAgICAgICAgaWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwucGFyLnBhbGV0dGUubm9kZS5CbG9jayINCisgICAgICAgIGxhYmVsPSJCbG9jayINCisgICAgICAgIGRlc2NyaXB0aW9uPSJDcmVhdGUgYSBCbG9jayI+DQorICAgICAgPGljb24NCisgICAgICAgICAgcGx1Z2luSUQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwiDQorICAgICAgICAgIGljb25QYXRoPSJpY29ucy9ibG9ja3MvQmxvY2suZ2lmIi8+DQorICAgICAgPGVsZW1lbnREZXNjcmlwdG9ycw0KKyAgICAgICAgICBlbGVtZW50VHlwZUlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuQmxvY2tfMzA4NSIvPg0KKyAgICAgIDxlbGVtZW50RGVzY3JpcHRvcnMNCisgICAgICAgICAgZWxlbWVudFR5cGVJZD0ib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LkJsb2NrXzIwNzMiLz4NCisgICAgPC9vd25lZENvbmZpZ3VyYXRpb25zPg0KKyAgICA8b3duZWRDb25maWd1cmF0aW9ucw0KKyAgICAgICAgeHNpOnR5cGU9InBhbGV0dGVjb25maWd1cmF0aW9uOlRvb2xDb25maWd1cmF0aW9uIg0KKyAgICAgICAgaWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwucGFyLnBhbGV0dGUubm9kZS5WYWx1ZVR5cGUiDQorICAgICAgICBsYWJlbD0iVmFsdWVUeXBlIg0KKyAgICAgICAgZGVzY3JpcHRpb249IkNyZWF0ZSBhIFZhbHVlVHlwZSI+DQorICAgICAgPGljb24NCisgICAgICAgICAgcGx1Z2luSUQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwiDQorICAgICAgICAgIGljb25QYXRoPSJpY29ucy9ibG9ja3MvVmFsdWVUeXBlLmdpZiIvPg0KKyAgICAgIDxlbGVtZW50RGVzY3JpcHRvcnMNCisgICAgICAgICAgZWxlbWVudFR5cGVJZD0ib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LlZhbHVlVHlwZV8zMDgwIi8+DQorICAgICAgPGVsZW1lbnREZXNjcmlwdG9ycw0KKyAgICAgICAgICBlbGVtZW50VHlwZUlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuVmFsdWVUeXBlXzIwNjgiLz4NCisgICAgPC9vd25lZENvbmZpZ3VyYXRpb25zPg0KKyAgICA8b3duZWRDb25maWd1cmF0aW9ucw0KKyAgICAgICAgeHNpOnR5cGU9InBhbGV0dGVjb25maWd1cmF0aW9uOlRvb2xDb25maWd1cmF0aW9uIg0KKyAgICAgICAgaWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwucGFyLnBhbGV0dGUubm9kZS5Db25zdHJhaW50QmxvY2siDQorICAgICAgICBsYWJlbD0iQ29uc3RyYWludEJsb2NrIg0KKyAgICAgICAgZGVzY3JpcHRpb249IkNyZWF0ZSBhIENvbnN0cmFpbnRCbG9jayI+DQorICAgICAgPGljb24NCisgICAgICAgICAgcGx1Z2luSUQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwiDQorICAgICAgICAgIGljb25QYXRoPSJpY29ucy9jb25zdHJhaW50cy9Db25zdHJhaW50QmxvY2suZ2lmIi8+DQorICAgICAgPGVsZW1lbnREZXNjcmlwdG9ycw0KKyAgICAgICAgICBlbGVtZW50VHlwZUlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuQ29uc3RyYWludEJsb2NrXzMwODUiLz4NCisgICAgICA8ZWxlbWVudERlc2NyaXB0b3JzDQorICAgICAgICAgIGVsZW1lbnRUeXBlSWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5Db25zdHJhaW50QmxvY2tfMjA3MyIvPg0KKyAgICA8L293bmVkQ29uZmlndXJhdGlvbnM+DQorICAgIDxvd25lZENvbmZpZ3VyYXRpb25zDQorICAgICAgICB4c2k6dHlwZT0icGFsZXR0ZWNvbmZpZ3VyYXRpb246VG9vbENvbmZpZ3VyYXRpb24iDQorICAgICAgICBpZD0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5wYXIucGFsZXR0ZS5ub2RlLlJlcXVpcmVtZW50Ig0KKyAgICAgICAgbGFiZWw9IlJlcXVpcmVtZW50Ig0KKyAgICAgICAgZGVzY3JpcHRpb249IkNyZWF0ZSBhIFJlcXVpcmVtZW50Ij4NCisgICAgICA8aWNvbg0KKyAgICAgICAgICBwbHVnaW5JRD0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbCINCisgICAgICAgICAgaWNvblBhdGg9Imljb25zL3JlcXVpcmVtZW50cy9SZXF1aXJlbWVudC5naWYiLz4NCisgICAgICA8ZWxlbWVudERlc2NyaXB0b3JzDQorICAgICAgICAgIGVsZW1lbnRUeXBlSWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5SZXF1aXJlbWVudF8zMDg1Ii8+DQorICAgICAgPGVsZW1lbnREZXNjcmlwdG9ycw0KKyAgICAgICAgICBlbGVtZW50VHlwZUlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuUmVxdWlyZW1lbnRfMjA3MyIvPg0KKyAgICA8L293bmVkQ29uZmlndXJhdGlvbnM+DQorICAgIDxvd25lZENvbmZpZ3VyYXRpb25zDQorICAgICAgICB4c2k6dHlwZT0icGFsZXR0ZWNvbmZpZ3VyYXRpb246VG9vbENvbmZpZ3VyYXRpb24iDQorICAgICAgICBpZD0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5wYXIucGFsZXR0ZS5ub2RlLkZsb3dTcGVjaWZpY2F0aW9uIg0KKyAgICAgICAgbGFiZWw9IkZsb3dTcGVjaWZpY2F0aW9uIg0KKyAgICAgICAgZGVzY3JpcHRpb249IkNyZWF0ZSBhIEZsb3dTcGVjaWZpY2F0aW9uIj4NCisgICAgICA8aWNvbg0KKyAgICAgICAgICBwbHVnaW5JRD0ib3JnLmVjbGlwc2UudW1sMi51bWwuZWRpdCINCisgICAgICAgICAgaWNvblBhdGg9Imljb25zL2Z1bGwvb2JqMTYvSW50ZXJmYWNlLmdpZiIvPg0KKyAgICAgIDxlbGVtZW50RGVzY3JpcHRvcnMNCisgICAgICAgICAgZWxlbWVudFR5cGVJZD0ib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LkZsb3dTcGVjaWZpY2F0aW9uXzMwODciLz4NCisgICAgICA8ZWxlbWVudERlc2NyaXB0b3JzDQorICAgICAgICAgIGVsZW1lbnRUeXBlSWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5GbG93U3BlY2lmaWNhdGlvbl8yMDc2Ii8+DQorICAgIDwvb3duZWRDb25maWd1cmF0aW9ucz4NCisgICAgPG93bmVkQ29uZmlndXJhdGlvbnMNCisgICAgICAgIHhzaTp0eXBlPSJwYWxldHRlY29uZmlndXJhdGlvbjpUb29sQ29uZmlndXJhdGlvbiINCisgICAgICAgIGlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLnBhci5wYWxldHRlLm5vZGUuVGVzdENhc2VfT3BlcmF0aW9uIg0KKyAgICAgICAgbGFiZWw9IlRlc3RDYXNlIE9wZXJhdGlvbiINCisgICAgICAgIGRlc2NyaXB0aW9uPSJDcmVhdGUgYSBUZXN0Q2FzZSBPcGVyYXRpb24iPg0KKyAgICAgIDxpY29uDQorICAgICAgICAgIHBsdWdpbklEPSJvcmcuZWNsaXBzZS51bWwyLnVtbC5lZGl0Ig0KKyAgICAgICAgICBpY29uUGF0aD0iaWNvbnMvZnVsbC9vYmoxNi9PcGVyYXRpb24uZ2lmIi8+DQorICAgICAgPGVsZW1lbnREZXNjcmlwdG9ycw0KKyAgICAgICAgICBlbGVtZW50VHlwZUlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuVGVzdENhc2VfT3BlcmF0aW9uXzMxMDIiLz4NCisgICAgPC9vd25lZENvbmZpZ3VyYXRpb25zPg0KKyAgICA8b3duZWRDb25maWd1cmF0aW9ucw0KKyAgICAgICAgeHNpOnR5cGU9InBhbGV0dGVjb25maWd1cmF0aW9uOlRvb2xDb25maWd1cmF0aW9uIg0KKyAgICAgICAgaWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwucGFyLnBhbGV0dGUubm9kZS5Db250cm9sT3BlcmF0b3JfT3BlcmF0aW9uIg0KKyAgICAgICAgbGFiZWw9IkNvbnRyb2xPcGVyYXRvciBPcGVyYXRpb24iDQorICAgICAgICBkZXNjcmlwdGlvbj0iQ3JlYXRlIGEgQ29udHJvbE9wZXJhdG9yIE9wZXJhdGlvbiI+DQorICAgICAgPGljb24NCisgICAgICAgICAgcGx1Z2luSUQ9Im9yZy5lY2xpcHNlLnVtbDIudW1sLmVkaXQiDQorICAgICAgICAgIGljb25QYXRoPSJpY29ucy9mdWxsL29iajE2L09wZXJhdGlvbi5naWYiLz4NCisgICAgICA8ZWxlbWVudERlc2NyaXB0b3JzDQorICAgICAgICAgIGVsZW1lbnRUeXBlSWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5Db250cm9sT3BlcmF0b3JfT3BlcmF0aW9uXzMxMDIiLz4NCisgICAgPC9vd25lZENvbmZpZ3VyYXRpb25zPg0KKyAgICA8b3duZWRDb25maWd1cmF0aW9ucw0KKyAgICAgICAgeHNpOnR5cGU9InBhbGV0dGVjb25maWd1cmF0aW9uOlRvb2xDb25maWd1cmF0aW9uIg0KKyAgICAgICAgaWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwucGFyLnBhbGV0dGUubm9kZS5JbnRlcmZhY2VCbG9jayAiDQorICAgICAgICBsYWJlbD0iSW50ZXJmYWNlQmxvY2siDQorICAgICAgICBkZXNjcmlwdGlvbj0iQ3JlYXRlIGEgSW50ZXJmYWNlQmxvY2siPg0KKyAgICAgIDxpY29uDQorICAgICAgICAgIHBsdWdpbklEPSJvcmcuZWNsaXBzZS51bWwyLnVtbC5lZGl0Ig0KKyAgICAgICAgICBpY29uUGF0aD0iaWNvbnMvZnVsbC9vYmoxNi9DbGFzcy5naWYiLz4NCisgICAgICA8ZWxlbWVudERlc2NyaXB0b3JzDQorICAgICAgICAgIGVsZW1lbnRUeXBlSWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5JbnRlcmZhY2VCbG9ja18zMDg1Ii8+DQorICAgICAgPGVsZW1lbnREZXNjcmlwdG9ycw0KKyAgICAgICAgICBlbGVtZW50VHlwZUlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuSW50ZXJmYWNlQmxvY2tfMjA3MyIvPg0KKyAgICA8L293bmVkQ29uZmlndXJhdGlvbnM+DQorICAgIDxvd25lZENvbmZpZ3VyYXRpb25zDQorICAgICAgICB4c2k6dHlwZT0icGFsZXR0ZWNvbmZpZ3VyYXRpb246VG9vbENvbmZpZ3VyYXRpb24iDQorICAgICAgICBpZD0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5wYXIucGFsZXR0ZS5ub2RlLkFkanVuY3RQcm9wZXJ0eSINCisgICAgICAgIGxhYmVsPSJBZGp1bmN0UHJvcGVydHkiDQorICAgICAgICBkZXNjcmlwdGlvbj0iQ3JlYXRlIGEgQWRqdW5jdFByb3BlcnR5ICI+DQorICAgICAgPGljb24NCisgICAgICAgICAgcGx1Z2luSUQ9Im9yZy5lY2xpcHNlLnVtbDIudW1sLmVkaXQiDQorICAgICAgICAgIGljb25QYXRoPSJpY29ucy9mdWxsL29iajE2L1Byb3BlcnR5LmdpZiIvPg0KKyAgICAgIDxlbGVtZW50RGVzY3JpcHRvcnMNCisgICAgICAgICAgZWxlbWVudFR5cGVJZD0ib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LkFkanVuY3RQcm9wZXJ0eV8zMDcwIi8+DQorICAgICAgPGVsZW1lbnREZXNjcmlwdG9ycw0KKyAgICAgICAgICBlbGVtZW50VHlwZUlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuQWRqdW5jdFByb3BlcnR5XzMxMDEiLz4NCisgICAgPC9vd25lZENvbmZpZ3VyYXRpb25zPg0KKyAgICA8b3duZWRDb25maWd1cmF0aW9ucw0KKyAgICAgICAgeHNpOnR5cGU9InBhbGV0dGVjb25maWd1cmF0aW9uOlRvb2xDb25maWd1cmF0aW9uIg0KKyAgICAgICAgaWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwucGFyLnBhbGV0dGUubm9kZS5GbG93UG9ydCINCisgICAgICAgIGxhYmVsPSJGbG93UG9ydCINCisgICAgICAgIGRlc2NyaXB0aW9uPSJDcmVhdGUgYSBGbG93UG9ydCI+DQorICAgICAgPGljb24NCisgICAgICAgICAgcGx1Z2luSUQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwiDQorICAgICAgICAgIGljb25QYXRoPSJpY29ucy9wb3J0YW5kZmxvd3MvRmxvd1BvcnQuZ2lmIi8+DQorICAgICAgPGVsZW1lbnREZXNjcmlwdG9ycw0KKyAgICAgICAgICBlbGVtZW50VHlwZUlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuRmxvd1BvcnRfMzA2OSIvPg0KKyAgICA8L293bmVkQ29uZmlndXJhdGlvbnM+DQorICAgIDxvd25lZENvbmZpZ3VyYXRpb25zDQorICAgICAgICB4c2k6dHlwZT0icGFsZXR0ZWNvbmZpZ3VyYXRpb246VG9vbENvbmZpZ3VyYXRpb24iDQorICAgICAgICBpZD0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5wYXIucGFsZXR0ZS5ub2RlLkVuZFBhdGhNdWx0aXBsaWNpdHkgIg0KKyAgICAgICAgbGFiZWw9IkVuZFBhdGhNdWx0aXBsaWNpdHkiDQorICAgICAgICBkZXNjcmlwdGlvbj0iQ3JlYXRlIGEgRW5kUGF0aE11bHRpcGxpY2l0eSI+DQorICAgICAgPGljb24NCisgICAgICAgICAgcGx1Z2luSUQ9Im9yZy5lY2xpcHNlLnVtbDIudW1sLmVkaXQiDQorICAgICAgICAgIGljb25QYXRoPSJpY29ucy9mdWxsL29iajE2L1Byb3BlcnR5LmdpZiIvPg0KKyAgICAgIDxlbGVtZW50RGVzY3JpcHRvcnMNCisgICAgICAgICAgZWxlbWVudFR5cGVJZD0ib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LkVuZFBhdGhNdWx0aXBsaWNpdHlfMzA3MCIvPg0KKyAgICAgIDxlbGVtZW50RGVzY3JpcHRvcnMNCisgICAgICAgICAgZWxlbWVudFR5cGVJZD0ib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LkVuZFBhdGhNdWx0aXBsaWNpdHlfMzEwMSIvPg0KKyAgICA8L293bmVkQ29uZmlndXJhdGlvbnM+DQorICAgIDxvd25lZENvbmZpZ3VyYXRpb25zDQorICAgICAgICB4c2k6dHlwZT0icGFsZXR0ZWNvbmZpZ3VyYXRpb246VG9vbENvbmZpZ3VyYXRpb24iDQorICAgICAgICBpZD0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5wYXIucGFsZXR0ZS5ub2RlLlJhdGVfUGFyYW1ldGVyIg0KKyAgICAgICAgbGFiZWw9IlJhdGUgUGFyYW1ldGVyIg0KKyAgICAgICAgZGVzY3JpcHRpb249IkNyZWF0ZSBhIFJhdGUgUGFyYW1ldGVyIj4NCisgICAgICA8aWNvbg0KKyAgICAgICAgICBwbHVnaW5JRD0ib3JnLmVjbGlwc2UudW1sMi51bWwuZWRpdCINCisgICAgICAgICAgaWNvblBhdGg9Imljb25zL2Z1bGwvb2JqMTYvUGFyYW1ldGVyLmdpZiIvPg0KKyAgICAgIDxlbGVtZW50RGVzY3JpcHRvcnMNCisgICAgICAgICAgZWxlbWVudFR5cGVJZD0ib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LlJhdGVfUGFyYW1ldGVyXzMwODgiLz4NCisgICAgPC9vd25lZENvbmZpZ3VyYXRpb25zPg0KKyAgICA8b3duZWRDb25maWd1cmF0aW9ucw0KKyAgICAgICAgeHNpOnR5cGU9InBhbGV0dGVjb25maWd1cmF0aW9uOlRvb2xDb25maWd1cmF0aW9uIg0KKyAgICAgICAgaWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwucGFyLnBhbGV0dGUubm9kZS5EaXNjcmV0ZV9QYXJhbWV0ZXIiDQorICAgICAgICBsYWJlbD0iRGlzY3JldGUgUGFyYW1ldGVyIg0KKyAgICAgICAgZGVzY3JpcHRpb249IkNyZWF0ZSBhIERpc2NyZXRlIFBhcmFtZXRlciI+DQorICAgICAgPGljb24NCisgICAgICAgICAgcGx1Z2luSUQ9Im9yZy5lY2xpcHNlLnVtbDIudW1sLmVkaXQiDQorICAgICAgICAgIGljb25QYXRoPSJpY29ucy9mdWxsL29iajE2L1BhcmFtZXRlci5naWYiLz4NCisgICAgICA8ZWxlbWVudERlc2NyaXB0b3JzDQorICAgICAgICAgIGVsZW1lbnRUeXBlSWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5EaXNjcmV0ZV9QYXJhbWV0ZXJfMzA4OCIvPg0KKyAgICA8L293bmVkQ29uZmlndXJhdGlvbnM+DQorICAgIDxvd25lZENvbmZpZ3VyYXRpb25zDQorICAgICAgICB4c2k6dHlwZT0icGFsZXR0ZWNvbmZpZ3VyYXRpb246VG9vbENvbmZpZ3VyYXRpb24iDQorICAgICAgICBpZD0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5wYXIucGFsZXR0ZS5ub2RlLkNvbnRpbnVvdXNfUGFyYW1ldGVyIg0KKyAgICAgICAgbGFiZWw9IkNvbnRpbnVvdXMgUGFyYW1ldGVyIg0KKyAgICAgICAgZGVzY3JpcHRpb249IkNyZWF0ZSBhIENvbnRpbnVvdXMgUGFyYW1ldGVyIj4NCisgICAgICA8aWNvbg0KKyAgICAgICAgICBwbHVnaW5JRD0ib3JnLmVjbGlwc2UudW1sMi51bWwuZWRpdCINCisgICAgICAgICAgaWNvblBhdGg9Imljb25zL2Z1bGwvb2JqMTYvUGFyYW1ldGVyLmdpZiIvPg0KKyAgICAgIDxlbGVtZW50RGVzY3JpcHRvcnMNCisgICAgICAgICAgZWxlbWVudFR5cGVJZD0ib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LkNvbnRpbnVvdXNfUGFyYW1ldGVyXzMwODgiLz4NCisgICAgPC9vd25lZENvbmZpZ3VyYXRpb25zPg0KKyAgICA8b3duZWRDb25maWd1cmF0aW9ucw0KKyAgICAgICAgeHNpOnR5cGU9InBhbGV0dGVjb25maWd1cmF0aW9uOlRvb2xDb25maWd1cmF0aW9uIg0KKyAgICAgICAgaWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwucGFyLnBhbGV0dGUubm9kZS5DaGFuZ2VTdHJ1Y3R1cmFsRmVhdHVyZUV2ZW50Ig0KKyAgICAgICAgbGFiZWw9IkNoYW5nZVN0cnVjdHVyYWxGZWF0dXJlRXZlbnQiDQorICAgICAgICBkZXNjcmlwdGlvbj0iQ3JlYXRlIGEgQ2hhbmdlU3RydWN0dXJhbEZlYXR1cmVFdmVudCI+DQorICAgICAgPGljb24NCisgICAgICAgICAgcGx1Z2luSUQ9Im9yZy5lY2xpcHNlLnVtbDIudW1sLmVkaXQiDQorICAgICAgICAgIGljb25QYXRoPSJpY29ucy9mdWxsL29iajE2L0NoYW5nZUV2ZW50LmdpZiIvPg0KKyAgICAgIDxlbGVtZW50RGVzY3JpcHRvcnMNCisgICAgICAgICAgZWxlbWVudFR5cGVJZD0ib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LkNoYW5nZVN0cnVjdHVyYWxGZWF0dXJlRXZlbnRfMjA4OCIvPg0KKyAgICA8L293bmVkQ29uZmlndXJhdGlvbnM+DQorICAgIDxvd25lZENvbmZpZ3VyYXRpb25zDQorICAgICAgICB4c2k6dHlwZT0icGFsZXR0ZWNvbmZpZ3VyYXRpb246VG9vbENvbmZpZ3VyYXRpb24iDQorICAgICAgICBpZD0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5wYXIucGFsZXR0ZS5ub2RlLk9wdGlvbmFsIg0KKyAgICAgICAgbGFiZWw9Ik9wdGlvbmFsIg0KKyAgICAgICAgZGVzY3JpcHRpb249IkNyZWF0ZSBhIE9wdGlvbmFsIj4NCisgICAgICA8aWNvbg0KKyAgICAgICAgICBwbHVnaW5JRD0ib3JnLmVjbGlwc2UudW1sMi51bWwuZWRpdCINCisgICAgICAgICAgaWNvblBhdGg9Imljb25zL2Z1bGwvb2JqMTYvUGFyYW1ldGVyLmdpZiIvPg0KKyAgICAgIDxlbGVtZW50RGVzY3JpcHRvcnMNCisgICAgICAgICAgZWxlbWVudFR5cGVJZD0ib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0Lk9wdGlvbmFsXzMwODgiLz4NCisgICAgPC9vd25lZENvbmZpZ3VyYXRpb25zPg0KKyAgICA8b3duZWRDb25maWd1cmF0aW9ucw0KKyAgICAgICAgeHNpOnR5cGU9InBhbGV0dGVjb25maWd1cmF0aW9uOlRvb2xDb25maWd1cmF0aW9uIg0KKyAgICAgICAgaWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwucGFyLnBhbGV0dGUubm9kZS5GdWxsUG9ydCINCisgICAgICAgIGxhYmVsPSJGdWxsUG9ydCINCisgICAgICAgIGRlc2NyaXB0aW9uPSJDcmVhdGUgYSBGdWxsUG9ydCI+DQorICAgICAgPGljb24NCisgICAgICAgICAgcGx1Z2luSUQ9Im9yZy5lY2xpcHNlLnVtbDIudW1sLmVkaXQiDQorICAgICAgICAgIGljb25QYXRoPSJpY29ucy9mdWxsL29iajE2L1BvcnQuZ2lmIi8+DQorICAgICAgPGVsZW1lbnREZXNjcmlwdG9ycw0KKyAgICAgICAgICBlbGVtZW50VHlwZUlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuRnVsbFBvcnRfMzA2OSIvPg0KKyAgICA8L293bmVkQ29uZmlndXJhdGlvbnM+DQorICAgIDxvd25lZENvbmZpZ3VyYXRpb25zDQorICAgICAgICB4c2k6dHlwZT0icGFsZXR0ZWNvbmZpZ3VyYXRpb246VG9vbENvbmZpZ3VyYXRpb24iDQorICAgICAgICBpZD0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5wYXIucGFsZXR0ZS5ub2RlLlByb3h5UG9ydCINCisgICAgICAgIGxhYmVsPSJQcm94eVBvcnQiDQorICAgICAgICBkZXNjcmlwdGlvbj0iQ3JlYXRlIGEgUHJveHlQb3J0Ij4NCisgICAgICA8aWNvbg0KKyAgICAgICAgICBwbHVnaW5JRD0ib3JnLmVjbGlwc2UudW1sMi51bWwuZWRpdCINCisgICAgICAgICAgaWNvblBhdGg9Imljb25zL2Z1bGwvb2JqMTYvUG9ydC5naWYiLz4NCisgICAgICA8ZWxlbWVudERlc2NyaXB0b3JzDQorICAgICAgICAgIGVsZW1lbnRUeXBlSWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5Qcm94eVBvcnRfMzA2OSIvPg0KKyAgICA8L293bmVkQ29uZmlndXJhdGlvbnM+DQorICAgIDxvd25lZENvbmZpZ3VyYXRpb25zDQorICAgICAgICB4c2k6dHlwZT0icGFsZXR0ZWNvbmZpZ3VyYXRpb246VG9vbENvbmZpZ3VyYXRpb24iDQorICAgICAgICBpZD0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5wYXIucGFsZXR0ZS5ub2RlLkJvdW5kUmVmZXJlbmNlIg0KKyAgICAgICAgbGFiZWw9IkJvdW5kUmVmZXJlbmNlIg0KKyAgICAgICAgZGVzY3JpcHRpb249IkNyZWF0ZSBhIEJvdW5kUmVmZXJlbmNlIj4NCisgICAgICA8aWNvbg0KKyAgICAgICAgICBwbHVnaW5JRD0ib3JnLmVjbGlwc2UudW1sMi51bWwuZWRpdCINCisgICAgICAgICAgaWNvblBhdGg9Imljb25zL2Z1bGwvb2JqMTYvUHJvcGVydHkuZ2lmIi8+DQorICAgICAgPGVsZW1lbnREZXNjcmlwdG9ycw0KKyAgICAgICAgICBlbGVtZW50VHlwZUlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuQm91bmRSZWZlcmVuY2VfMzA3MCIvPg0KKyAgICAgIDxlbGVtZW50RGVzY3JpcHRvcnMNCisgICAgICAgICAgZWxlbWVudFR5cGVJZD0ib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LkJvdW5kUmVmZXJlbmNlXzMxMDEiLz4NCisgICAgPC9vd25lZENvbmZpZ3VyYXRpb25zPg0KKyAgPC9kcmF3ZXJDb25maWd1cmF0aW9ucz4NCisgIDxkcmF3ZXJDb25maWd1cmF0aW9ucw0KKyAgICAgIGlkPSJTeXNNTCBFZGdlcyINCisgICAgICBsYWJlbD0iT3RoZXIgRWRnZXMiDQorICAgICAgZGVzY3JpcHRpb249Ik90aGVyIEVkZ2VzIj4NCisgICAgPG93bmVkQ29uZmlndXJhdGlvbnMNCisgICAgICAgIHhzaTp0eXBlPSJwYWxldHRlY29uZmlndXJhdGlvbjpUb29sQ29uZmlndXJhdGlvbiINCisgICAgICAgIGlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLnBhci5wYWxldHRlLmVkZ2UuQ29weV9BYnN0cmFjdGlvbiINCisgICAgICAgIGxhYmVsPSJDb3B5IEFic3RyYWN0aW9uIg0KKyAgICAgICAgZGVzY3JpcHRpb249IkNyZWF0ZSBhIENvcHkgQWJzdHJhY3Rpb24iDQorICAgICAgICBraW5kPSJDb25uZWN0aW9uVG9vbCI+DQorICAgICAgPGljb24NCisgICAgICAgICAgcGx1Z2luSUQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwiDQorICAgICAgICAgIGljb25QYXRoPSJpY29ucy9yZXF1aXJlbWVudHMvQ29weS5naWYiLz4NCisgICAgICA8ZWxlbWVudERlc2NyaXB0b3JzDQorICAgICAgICAgIGVsZW1lbnRUeXBlSWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5Db3B5X0Fic3RyYWN0aW9uXzQwMDciLz4NCisgICAgPC9vd25lZENvbmZpZ3VyYXRpb25zPg0KKyAgICA8b3duZWRDb25maWd1cmF0aW9ucw0KKyAgICAgICAgeHNpOnR5cGU9InBhbGV0dGVjb25maWd1cmF0aW9uOlRvb2xDb25maWd1cmF0aW9uIg0KKyAgICAgICAgaWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwucGFyLnBhbGV0dGUuZWRnZS5WZXJpZnlfQWJzdHJhY3Rpb24iDQorICAgICAgICBsYWJlbD0iVmVyaWZ5IEFic3RyYWN0aW9uIg0KKyAgICAgICAgZGVzY3JpcHRpb249IkNyZWF0ZSBhIFZlcmlmeSBBYnN0cmFjdGlvbiINCisgICAgICAgIGtpbmQ9IkNvbm5lY3Rpb25Ub29sIj4NCisgICAgICA8aWNvbg0KKyAgICAgICAgICBwbHVnaW5JRD0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbCINCisgICAgICAgICAgaWNvblBhdGg9Imljb25zL3JlcXVpcmVtZW50cy9WZXJpZnkuZ2lmIi8+DQorICAgICAgPGVsZW1lbnREZXNjcmlwdG9ycw0KKyAgICAgICAgICBlbGVtZW50VHlwZUlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuVmVyaWZ5X0Fic3RyYWN0aW9uXzQwMDciLz4NCisgICAgPC9vd25lZENvbmZpZ3VyYXRpb25zPg0KKyAgICA8b3duZWRDb25maWd1cmF0aW9ucw0KKyAgICAgICAgeHNpOnR5cGU9InBhbGV0dGVjb25maWd1cmF0aW9uOlRvb2xDb25maWd1cmF0aW9uIg0KKyAgICAgICAgaWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwucGFyLnBhbGV0dGUuZWRnZS5UcmFjZV9BYnN0cmFjdGlvbiINCisgICAgICAgIGxhYmVsPSJUcmFjZSBBYnN0cmFjdGlvbiINCisgICAgICAgIGRlc2NyaXB0aW9uPSJDcmVhdGUgYSBUcmFjZSBBYnN0cmFjdGlvbiINCisgICAgICAgIGtpbmQ9IkNvbm5lY3Rpb25Ub29sIj4NCisgICAgICA8aWNvbg0KKyAgICAgICAgICBwbHVnaW5JRD0ib3JnLmVjbGlwc2UudW1sMi51bWwuZWRpdCINCisgICAgICAgICAgaWNvblBhdGg9Imljb25zL2Z1bGwvb2JqMTYvQWJzdHJhY3Rpb24uZ2lmIi8+DQorICAgICAgPGVsZW1lbnREZXNjcmlwdG9ycw0KKyAgICAgICAgICBlbGVtZW50VHlwZUlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuVHJhY2VfQWJzdHJhY3Rpb25fNDAwNyIvPg0KKyAgICA8L293bmVkQ29uZmlndXJhdGlvbnM+DQorICAgIDxvd25lZENvbmZpZ3VyYXRpb25zDQorICAgICAgICB4c2k6dHlwZT0icGFsZXR0ZWNvbmZpZ3VyYXRpb246VG9vbENvbmZpZ3VyYXRpb24iDQorICAgICAgICBpZD0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5wYXIucGFsZXR0ZS5lZGdlLkFsbG9jYXRlX0Fic3RyYWN0aW9uIg0KKyAgICAgICAgbGFiZWw9IkFsbG9jYXRlIEFic3RyYWN0aW9uIg0KKyAgICAgICAgZGVzY3JpcHRpb249IkNyZWF0ZSBhIEFsbG9jYXRlIEFic3RyYWN0aW9uIg0KKyAgICAgICAga2luZD0iQ29ubmVjdGlvblRvb2wiPg0KKyAgICAgIDxpY29uDQorICAgICAgICAgIHBsdWdpbklEPSJvcmcuZWNsaXBzZS51bWwyLnVtbC5lZGl0Ig0KKyAgICAgICAgICBpY29uUGF0aD0iaWNvbnMvZnVsbC9vYmoxNi9BYnN0cmFjdGlvbi5naWYiLz4NCisgICAgICA8ZWxlbWVudERlc2NyaXB0b3JzDQorICAgICAgICAgIGVsZW1lbnRUeXBlSWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5BbGxvY2F0ZV9BYnN0cmFjdGlvbl80MDA3Ii8+DQorICAgIDwvb3duZWRDb25maWd1cmF0aW9ucz4NCisgICAgPG93bmVkQ29uZmlndXJhdGlvbnMNCisgICAgICAgIHhzaTp0eXBlPSJwYWxldHRlY29uZmlndXJhdGlvbjpUb29sQ29uZmlndXJhdGlvbiINCisgICAgICAgIGlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLnBhci5wYWxldHRlLmVkZ2UuRGVyaXZlUmVxdF9BYnN0cmFjdGlvbiINCisgICAgICAgIGxhYmVsPSJEZXJpdmVSZXF0IEFic3RyYWN0aW9uIg0KKyAgICAgICAgZGVzY3JpcHRpb249IkNyZWF0ZSBhIERlcml2ZVJlcXQgQWJzdHJhY3Rpb24iDQorICAgICAgICBraW5kPSJDb25uZWN0aW9uVG9vbCI+DQorICAgICAgPGljb24NCisgICAgICAgICAgcGx1Z2luSUQ9Im9yZy5lY2xpcHNlLnVtbDIudW1sLmVkaXQiDQorICAgICAgICAgIGljb25QYXRoPSJpY29ucy9mdWxsL29iajE2L0Fic3RyYWN0aW9uLmdpZiIvPg0KKyAgICAgIDxlbGVtZW50RGVzY3JpcHRvcnMNCisgICAgICAgICAgZWxlbWVudFR5cGVJZD0ib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LkRlcml2ZVJlcXRfQWJzdHJhY3Rpb25fNDAwNyIvPg0KKyAgICA8L293bmVkQ29uZmlndXJhdGlvbnM+DQorICAgIDxvd25lZENvbmZpZ3VyYXRpb25zDQorICAgICAgICB4c2k6dHlwZT0icGFsZXR0ZWNvbmZpZ3VyYXRpb246VG9vbENvbmZpZ3VyYXRpb24iDQorICAgICAgICBpZD0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5wYXIucGFsZXR0ZS5lZGdlLlNhdGlzZnlfQWJzdHJhY3Rpb24iDQorICAgICAgICBsYWJlbD0iU2F0aXNmeSBBYnN0cmFjdGlvbiINCisgICAgICAgIGRlc2NyaXB0aW9uPSJDcmVhdGUgYSBTYXRpc2Z5IEFic3RyYWN0aW9uIg0KKyAgICAgICAga2luZD0iQ29ubmVjdGlvblRvb2wiPg0KKyAgICAgIDxpY29uDQorICAgICAgICAgIHBsdWdpbklEPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sIg0KKyAgICAgICAgICBpY29uUGF0aD0iaWNvbnMvcmVxdWlyZW1lbnRzL1NhdGlzZnkuZ2lmIi8+DQorICAgICAgPGVsZW1lbnREZXNjcmlwdG9ycw0KKyAgICAgICAgICBlbGVtZW50VHlwZUlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuU2F0aXNmeV9BYnN0cmFjdGlvbl80MDA3Ii8+DQorICAgIDwvb3duZWRDb25maWd1cmF0aW9ucz4NCisgICAgPG93bmVkQ29uZmlndXJhdGlvbnMNCisgICAgICAgIHhzaTp0eXBlPSJwYWxldHRlY29uZmlndXJhdGlvbjpUb29sQ29uZmlndXJhdGlvbiINCisgICAgICAgIGlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLnBhci5wYWxldHRlLmVkZ2UuSXRlbUZsb3ciDQorICAgICAgICBsYWJlbD0iSXRlbUZsb3ciDQorICAgICAgICBkZXNjcmlwdGlvbj0iQ3JlYXRlIGEgSXRlbUZsb3ciDQorICAgICAgICBraW5kPSJDb25uZWN0aW9uVG9vbCI+DQorICAgICAgPGljb24NCisgICAgICAgICAgcGx1Z2luSUQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwiDQorICAgICAgICAgIGljb25QYXRoPSJpY29ucy9wb3J0YW5kZmxvd3MvSXRlbUZsb3cuZ2lmIi8+DQorICAgICAgPGVsZW1lbnREZXNjcmlwdG9ycw0KKyAgICAgICAgICBlbGVtZW50VHlwZUlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuSXRlbUZsb3dfNDAyMSIvPg0KKyAgICA8L293bmVkQ29uZmlndXJhdGlvbnM+DQorICAgIDxvd25lZENvbmZpZ3VyYXRpb25zDQorICAgICAgICB4c2k6dHlwZT0icGFsZXR0ZWNvbmZpZ3VyYXRpb246VG9vbENvbmZpZ3VyYXRpb24iDQorICAgICAgICBpZD0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5wYXIucGFsZXR0ZS5lZGdlLkJpbmRpbmdDb25uZWN0b3IiDQorICAgICAgICBsYWJlbD0iQmluZGluZ0Nvbm5lY3RvciINCisgICAgICAgIGRlc2NyaXB0aW9uPSJDcmVhdGUgYSBCaW5kaW5nQ29ubmVjdG9yIj4NCisgICAgICA8aWNvbg0KKyAgICAgICAgICBwbHVnaW5JRD0ib3JnLmVjbGlwc2UudW1sMi51bWwuZWRpdCINCisgICAgICAgICAgaWNvblBhdGg9Imljb25zL2Z1bGwvb2JqMTYvQ29ubmVjdG9yLmdpZiIvPg0KKyAgICAgIDxlbGVtZW50RGVzY3JpcHRvcnMNCisgICAgICAgICAgZWxlbWVudFR5cGVJZD0ib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LkJpbmRpbmdDb25uZWN0b3JfNDAxMyIvPg0KKyAgICA8L293bmVkQ29uZmlndXJhdGlvbnM+DQorICA8L2RyYXdlckNvbmZpZ3VyYXRpb25zPg0KKzwvcGFsZXR0ZWNvbmZpZ3VyYXRpb246UGFsZXR0ZUNvbmZpZ3VyYXRpb24+DQpkaWZmIC0tZ2l0IGEvZGlhZ3JhbS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGlhZ3JhbS5wYXJhbWV0cmljL3Jlc291cmNlcy9zdHlsZS9wYXJhbWV0cmljZGlhZ3JhbS5jc3MgYi9kaWFncmFtL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kaWFncmFtLnBhcmFtZXRyaWMvcmVzb3VyY2VzL3N0eWxlL3BhcmFtZXRyaWNkaWFncmFtLmNzcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NDllYTVhCi0tLSAvZGV2L251bGwKKysrIGIvZGlhZ3JhbS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGlhZ3JhbS5wYXJhbWV0cmljL3Jlc291cmNlcy9zdHlsZS9wYXJhbWV0cmljZGlhZ3JhbS5jc3MKQEAgLTAsMCArMSwxNiBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorICogQ29weXJpZ2h0IChjKSAyMDE1IENFQSBMSVNULg0KKyAqIA0KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCisgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCisgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICoNCisgKiBDb250cmlidXRvcnM6DQorICogIEJlbm9pdCBNYWdnaSAoQ0VBIExJU1QpIGJlbm9pdC5tYWdnaUBjZWEuZnINCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorDQorDQorQXR0cmlidXRlW2FwcGxpZWRTdGVyZW90eXBlc349IkJsb2NrIl0gID4gQ29tcGFydG1lbnQgew0KKwl2aXNpYmxlOmZhbHNlOw0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kaWFncmFtL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kaWFncmFtLnBhcmFtZXRyaWMvc3JjL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9kaWFncmFtL3BhcmFtZXRyaWMvQWN0aXZhdG9yLmphdmEgYi9kaWFncmFtL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kaWFncmFtLnBhcmFtZXRyaWMvc3JjL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC9kaWFncmFtL3BhcmFtZXRyaWMvQWN0aXZhdG9yLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWZhYTRmYwotLS0gL2Rldi9udWxsCisrKyBiL2RpYWdyYW0vb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRpYWdyYW0ucGFyYW1ldHJpYy9zcmMvb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L2RpYWdyYW0vcGFyYW1ldHJpYy9BY3RpdmF0b3IuamF2YQpAQCAtMCwwICsxLDczIEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisgKiBDb3B5cmlnaHQgKGMpIDIwMTUgQ0VBIExJU1QuDQorICoNCisgKg0KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCisgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCisgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICoNCisgKiBDb250cmlidXRvcnM6DQorICogIEJlbm9pdCBNYWdnaSBiZW5vaXQubWFnZ2lAY2VhLmZyICAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbg0KKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCitwYWNrYWdlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kaWFncmFtLnBhcmFtZXRyaWM7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLmpmYWNlLnJlc291cmNlLkltYWdlRGVzY3JpcHRvcjsNCitpbXBvcnQgb3JnLmVjbGlwc2UudWkucGx1Z2luLkFic3RyYWN0VUlQbHVnaW47DQoraW1wb3J0IG9yZy5vc2dpLmZyYW1ld29yay5CdW5kbGVDb250ZXh0Ow0KKw0KKy8qKg0KKyAqIFRoZSBhY3RpdmF0b3IgY2xhc3MgY29udHJvbHMgdGhlIHBsdWctaW4gbGlmZSBjeWNsZQ0KKyAqLw0KK3B1YmxpYyBjbGFzcyBBY3RpdmF0b3IgZXh0ZW5kcyBBYnN0cmFjdFVJUGx1Z2luIHsNCisNCisJLy8gVGhlIHBsdWctaW4gSUQNCisJcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgUExVR0lOX0lEID0gIm9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kaWFncmFtLnBhcmFtZXRyaWMiOyAvLyROT04tTkxTLTEkDQorDQorCS8vIFRoZSBzaGFyZWQgaW5zdGFuY2UNCisJcHJpdmF0ZSBzdGF0aWMgQWN0aXZhdG9yIHBsdWdpbjsNCisJDQorCS8qKg0KKwkgKiBUaGUgY29uc3RydWN0b3INCisJICovDQorCXB1YmxpYyBBY3RpdmF0b3IoKSB7DQorCX0NCisNCisJLyoNCisJICogKG5vbi1KYXZhZG9jKQ0KKwkgKiBAc2VlIG9yZy5lY2xpcHNlLnVpLnBsdWdpbi5BYnN0cmFjdFVJUGx1Z2luI3N0YXJ0KG9yZy5vc2dpLmZyYW1ld29yay5CdW5kbGVDb250ZXh0KQ0KKwkgKi8NCisJcHVibGljIHZvaWQgc3RhcnQoQnVuZGxlQ29udGV4dCBjb250ZXh0KSB0aHJvd3MgRXhjZXB0aW9uIHsNCisJCXN1cGVyLnN0YXJ0KGNvbnRleHQpOw0KKwkJcGx1Z2luID0gdGhpczsNCisJfQ0KKw0KKwkvKg0KKwkgKiAobm9uLUphdmFkb2MpDQorCSAqIEBzZWUgb3JnLmVjbGlwc2UudWkucGx1Z2luLkFic3RyYWN0VUlQbHVnaW4jc3RvcChvcmcub3NnaS5mcmFtZXdvcmsuQnVuZGxlQ29udGV4dCkNCisJICovDQorCXB1YmxpYyB2b2lkIHN0b3AoQnVuZGxlQ29udGV4dCBjb250ZXh0KSB0aHJvd3MgRXhjZXB0aW9uIHsNCisJCXBsdWdpbiA9IG51bGw7DQorCQlzdXBlci5zdG9wKGNvbnRleHQpOw0KKwl9DQorDQorCS8qKg0KKwkgKiBSZXR1cm5zIHRoZSBzaGFyZWQgaW5zdGFuY2UNCisJICoNCisJICogQHJldHVybiB0aGUgc2hhcmVkIGluc3RhbmNlDQorCSAqLw0KKwlwdWJsaWMgc3RhdGljIEFjdGl2YXRvciBnZXREZWZhdWx0KCkgew0KKwkJcmV0dXJuIHBsdWdpbjsNCisJfQ0KKw0KKwkvKioNCisJICogUmV0dXJucyBhbiBpbWFnZSBkZXNjcmlwdG9yIGZvciB0aGUgaW1hZ2UgZmlsZSBhdCB0aGUgZ2l2ZW4NCisJICogcGx1Zy1pbiByZWxhdGl2ZSBwYXRoDQorCSAqDQorCSAqIEBwYXJhbSBwYXRoIHRoZSBwYXRoDQorCSAqIEByZXR1cm4gdGhlIGltYWdlIGRlc2NyaXB0b3INCisJICovDQorCXB1YmxpYyBzdGF0aWMgSW1hZ2VEZXNjcmlwdG9yIGdldEltYWdlRGVzY3JpcHRvcihTdHJpbmcgcGF0aCkgew0KKwkJcmV0dXJuIGltYWdlRGVzY3JpcHRvckZyb21QbHVnaW4oUExVR0lOX0lELCBwYXRoKTsNCisJfQ0KK30NCmRpZmYgLS1naXQgYS9kaWFncmFtL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kaWFncmFtLnJlcXVpcmVtZW50Ly5jbGFzc3BhdGggYi9kaWFncmFtL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kaWFncmFtLnJlcXVpcmVtZW50Ly5jbGFzc3BhdGgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDk4MTk0YwotLS0gL2Rldi9udWxsCisrKyBiL2RpYWdyYW0vb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRpYWdyYW0ucmVxdWlyZW1lbnQvLmNsYXNzcGF0aApAQCAtMCwwICsxLDcgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8Y2xhc3NwYXRoPgorCTxjbGFzc3BhdGhlbnRyeSBraW5kPSJjb24iIHBhdGg9Im9yZy5lY2xpcHNlLmpkdC5sYXVuY2hpbmcuSlJFX0NPTlRBSU5FUi9vcmcuZWNsaXBzZS5qZHQuaW50ZXJuYWwuZGVidWcudWkubGF1bmNoZXIuU3RhbmRhcmRWTVR5cGUvSmF2YVNFLTEuNyIvPgorCTxjbGFzc3BhdGhlbnRyeSBraW5kPSJjb24iIHBhdGg9Im9yZy5lY2xpcHNlLnBkZS5jb3JlLnJlcXVpcmVkUGx1Z2lucyIvPgorCTxjbGFzc3BhdGhlbnRyeSBraW5kPSJzcmMiIHBhdGg9InNyYyIvPgorCTxjbGFzc3BhdGhlbnRyeSBraW5kPSJvdXRwdXQiIHBhdGg9ImJpbiIvPgorPC9jbGFzc3BhdGg+CmRpZmYgLS1naXQgYS9kaWFncmFtL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kaWFncmFtLnJlcXVpcmVtZW50Ly5wcm9qZWN0IGIvZGlhZ3JhbS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGlhZ3JhbS5yZXF1aXJlbWVudC8ucHJvamVjdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYWUxZDU5Ci0tLSAvZGV2L251bGwKKysrIGIvZGlhZ3JhbS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGlhZ3JhbS5yZXF1aXJlbWVudC8ucHJvamVjdApAQCAtMCwwICsxLDI4IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPHByb2plY3REZXNjcmlwdGlvbj4KKwk8bmFtZT5vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGlhZ3JhbS5yZXF1aXJlbWVudDwvbmFtZT4KKwk8Y29tbWVudD48L2NvbW1lbnQ+CisJPHByb2plY3RzPgorCTwvcHJvamVjdHM+CisJPGJ1aWxkU3BlYz4KKwkJPGJ1aWxkQ29tbWFuZD4KKwkJCTxuYW1lPm9yZy5lY2xpcHNlLmpkdC5jb3JlLmphdmFidWlsZGVyPC9uYW1lPgorCQkJPGFyZ3VtZW50cz4KKwkJCTwvYXJndW1lbnRzPgorCQk8L2J1aWxkQ29tbWFuZD4KKwkJPGJ1aWxkQ29tbWFuZD4KKwkJCTxuYW1lPm9yZy5lY2xpcHNlLnBkZS5NYW5pZmVzdEJ1aWxkZXI8L25hbWU+CisJCQk8YXJndW1lbnRzPgorCQkJPC9hcmd1bWVudHM+CisJCTwvYnVpbGRDb21tYW5kPgorCQk8YnVpbGRDb21tYW5kPgorCQkJPG5hbWU+b3JnLmVjbGlwc2UucGRlLlNjaGVtYUJ1aWxkZXI8L25hbWU+CisJCQk8YXJndW1lbnRzPgorCQkJPC9hcmd1bWVudHM+CisJCTwvYnVpbGRDb21tYW5kPgorCTwvYnVpbGRTcGVjPgorCTxuYXR1cmVzPgorCQk8bmF0dXJlPm9yZy5lY2xpcHNlLnBkZS5QbHVnaW5OYXR1cmU8L25hdHVyZT4KKwkJPG5hdHVyZT5vcmcuZWNsaXBzZS5qZHQuY29yZS5qYXZhbmF0dXJlPC9uYXR1cmU+CisJPC9uYXR1cmVzPgorPC9wcm9qZWN0RGVzY3JpcHRpb24+CmRpZmYgLS1naXQgYS9kaWFncmFtL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kaWFncmFtLnJlcXVpcmVtZW50Ly5zZXR0aW5ncy9vcmcuZWNsaXBzZS5qZHQuY29yZS5wcmVmcyBiL2RpYWdyYW0vb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRpYWdyYW0ucmVxdWlyZW1lbnQvLnNldHRpbmdzL29yZy5lY2xpcHNlLmpkdC5jb3JlLnByZWZzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYwOGJlMmIKLS0tIC9kZXYvbnVsbAorKysgYi9kaWFncmFtL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kaWFncmFtLnJlcXVpcmVtZW50Ly5zZXR0aW5ncy9vcmcuZWNsaXBzZS5qZHQuY29yZS5wcmVmcwpAQCAtMCwwICsxLDI5MSBAQAorZWNsaXBzZS5wcmVmZXJlbmNlcy52ZXJzaW9uPTEKK29yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLmNvZGVnZW4uaW5saW5lSnNyQnl0ZWNvZGU9ZW5hYmxlZAorb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIuY29kZWdlbi50YXJnZXRQbGF0Zm9ybT0xLjcKK29yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLmNvbXBsaWFuY2U9MS43CitvcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5wcm9ibGVtLmFzc2VydElkZW50aWZpZXI9ZXJyb3IKK29yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0uZW51bUlkZW50aWZpZXI9ZXJyb3IKK29yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnNvdXJjZT0xLjcKK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5hbGlnbl90eXBlX21lbWJlcnNfb25fY29sdW1ucz1mYWxzZQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmFsaWdubWVudF9mb3JfYXJndW1lbnRzX2luX2FsbG9jYXRpb25fZXhwcmVzc2lvbj0xNgorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmFsaWdubWVudF9mb3JfYXJndW1lbnRzX2luX2Fubm90YXRpb249MAorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmFsaWdubWVudF9mb3JfYXJndW1lbnRzX2luX2VudW1fY29uc3RhbnQ9MTYKK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5hbGlnbm1lbnRfZm9yX2FyZ3VtZW50c19pbl9leHBsaWNpdF9jb25zdHJ1Y3Rvcl9jYWxsPTE2CitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuYWxpZ25tZW50X2Zvcl9hcmd1bWVudHNfaW5fbWV0aG9kX2ludm9jYXRpb249MTYKK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5hbGlnbm1lbnRfZm9yX2FyZ3VtZW50c19pbl9xdWFsaWZpZWRfYWxsb2NhdGlvbl9leHByZXNzaW9uPTE2CitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuYWxpZ25tZW50X2Zvcl9hc3NpZ25tZW50PTAKK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5hbGlnbm1lbnRfZm9yX2JpbmFyeV9leHByZXNzaW9uPTE2CitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuYWxpZ25tZW50X2Zvcl9jb21wYWN0X2lmPTE2CitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuYWxpZ25tZW50X2Zvcl9jb25kaXRpb25hbF9leHByZXNzaW9uPTgwCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuYWxpZ25tZW50X2Zvcl9lbnVtX2NvbnN0YW50cz0wCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuYWxpZ25tZW50X2Zvcl9leHByZXNzaW9uc19pbl9hcnJheV9pbml0aWFsaXplcj0xNgorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmFsaWdubWVudF9mb3JfbWV0aG9kX2RlY2xhcmF0aW9uPTAKK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5hbGlnbm1lbnRfZm9yX211bHRpcGxlX2ZpZWxkcz0xNgorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmFsaWdubWVudF9mb3JfcGFyYW1ldGVyc19pbl9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbj0xNgorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmFsaWdubWVudF9mb3JfcGFyYW1ldGVyc19pbl9tZXRob2RfZGVjbGFyYXRpb249MTYKK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5hbGlnbm1lbnRfZm9yX3Jlc291cmNlc19pbl90cnk9ODAKK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5hbGlnbm1lbnRfZm9yX3NlbGVjdG9yX2luX21ldGhvZF9pbnZvY2F0aW9uPTE2CitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuYWxpZ25tZW50X2Zvcl9zdXBlcmNsYXNzX2luX3R5cGVfZGVjbGFyYXRpb249MTYKK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5hbGlnbm1lbnRfZm9yX3N1cGVyaW50ZXJmYWNlc19pbl9lbnVtX2RlY2xhcmF0aW9uPTE2CitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuYWxpZ25tZW50X2Zvcl9zdXBlcmludGVyZmFjZXNfaW5fdHlwZV9kZWNsYXJhdGlvbj0xNgorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmFsaWdubWVudF9mb3JfdGhyb3dzX2NsYXVzZV9pbl9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbj0xNgorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmFsaWdubWVudF9mb3JfdGhyb3dzX2NsYXVzZV9pbl9tZXRob2RfZGVjbGFyYXRpb249MTYKK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5hbGlnbm1lbnRfZm9yX3VuaW9uX3R5cGVfaW5fbXVsdGljYXRjaD0xNgorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmJsYW5rX2xpbmVzX2FmdGVyX2ltcG9ydHM9MQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmJsYW5rX2xpbmVzX2FmdGVyX3BhY2thZ2U9MQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmJsYW5rX2xpbmVzX2JlZm9yZV9maWVsZD0wCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuYmxhbmtfbGluZXNfYmVmb3JlX2ZpcnN0X2NsYXNzX2JvZHlfZGVjbGFyYXRpb249MAorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmJsYW5rX2xpbmVzX2JlZm9yZV9pbXBvcnRzPTEKK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5ibGFua19saW5lc19iZWZvcmVfbWVtYmVyX3R5cGU9MQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmJsYW5rX2xpbmVzX2JlZm9yZV9tZXRob2Q9MQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmJsYW5rX2xpbmVzX2JlZm9yZV9uZXdfY2h1bms9MQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmJsYW5rX2xpbmVzX2JlZm9yZV9wYWNrYWdlPTAKK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5ibGFua19saW5lc19iZXR3ZWVuX2ltcG9ydF9ncm91cHM9MQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmJsYW5rX2xpbmVzX2JldHdlZW5fdHlwZV9kZWNsYXJhdGlvbnM9MQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmJyYWNlX3Bvc2l0aW9uX2Zvcl9hbm5vdGF0aW9uX3R5cGVfZGVjbGFyYXRpb249ZW5kX29mX2xpbmUKK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5icmFjZV9wb3NpdGlvbl9mb3JfYW5vbnltb3VzX3R5cGVfZGVjbGFyYXRpb249ZW5kX29mX2xpbmUKK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5icmFjZV9wb3NpdGlvbl9mb3JfYXJyYXlfaW5pdGlhbGl6ZXI9ZW5kX29mX2xpbmUKK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5icmFjZV9wb3NpdGlvbl9mb3JfYmxvY2s9ZW5kX29mX2xpbmUKK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5icmFjZV9wb3NpdGlvbl9mb3JfYmxvY2tfaW5fY2FzZT1lbmRfb2ZfbGluZQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmJyYWNlX3Bvc2l0aW9uX2Zvcl9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbj1lbmRfb2ZfbGluZQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmJyYWNlX3Bvc2l0aW9uX2Zvcl9lbnVtX2NvbnN0YW50PWVuZF9vZl9saW5lCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuYnJhY2VfcG9zaXRpb25fZm9yX2VudW1fZGVjbGFyYXRpb249ZW5kX29mX2xpbmUKK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5icmFjZV9wb3NpdGlvbl9mb3JfbGFtYmRhX2JvZHk9ZW5kX29mX2xpbmUKK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5icmFjZV9wb3NpdGlvbl9mb3JfbWV0aG9kX2RlY2xhcmF0aW9uPWVuZF9vZl9saW5lCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuYnJhY2VfcG9zaXRpb25fZm9yX3N3aXRjaD1lbmRfb2ZfbGluZQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmJyYWNlX3Bvc2l0aW9uX2Zvcl90eXBlX2RlY2xhcmF0aW9uPWVuZF9vZl9saW5lCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuY29tbWVudC5jbGVhcl9ibGFua19saW5lc19pbl9ibG9ja19jb21tZW50PWZhbHNlCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuY29tbWVudC5jbGVhcl9ibGFua19saW5lc19pbl9qYXZhZG9jX2NvbW1lbnQ9ZmFsc2UKK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5jb21tZW50LmZvcm1hdF9ibG9ja19jb21tZW50cz10cnVlCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuY29tbWVudC5mb3JtYXRfaGVhZGVyPWZhbHNlCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuY29tbWVudC5mb3JtYXRfaHRtbD10cnVlCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuY29tbWVudC5mb3JtYXRfamF2YWRvY19jb21tZW50cz10cnVlCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuY29tbWVudC5mb3JtYXRfbGluZV9jb21tZW50cz10cnVlCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuY29tbWVudC5mb3JtYXRfc291cmNlX2NvZGU9dHJ1ZQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmNvbW1lbnQuaW5kZW50X3BhcmFtZXRlcl9kZXNjcmlwdGlvbj10cnVlCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuY29tbWVudC5pbmRlbnRfcm9vdF90YWdzPXRydWUKK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5jb21tZW50Lmluc2VydF9uZXdfbGluZV9iZWZvcmVfcm9vdF90YWdzPWluc2VydAorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmNvbW1lbnQuaW5zZXJ0X25ld19saW5lX2Zvcl9wYXJhbWV0ZXI9aW5zZXJ0CitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuY29tbWVudC5saW5lX2xlbmd0aD0yNjAKK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5jb21tZW50Lm5ld19saW5lc19hdF9ibG9ja19ib3VuZGFyaWVzPXRydWUKK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5jb21tZW50Lm5ld19saW5lc19hdF9qYXZhZG9jX2JvdW5kYXJpZXM9dHJ1ZQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmNvbW1lbnQucHJlc2VydmVfd2hpdGVfc3BhY2VfYmV0d2Vlbl9jb2RlX2FuZF9saW5lX2NvbW1lbnRzPWZhbHNlCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuY29tcGFjdF9lbHNlX2lmPXRydWUKK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5jb250aW51YXRpb25faW5kZW50YXRpb249Mgorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmNvbnRpbnVhdGlvbl9pbmRlbnRhdGlvbl9mb3JfYXJyYXlfaW5pdGlhbGl6ZXI9Mgorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmRpc2FibGluZ190YWc9QGZvcm1hdHRlclw6b2ZmCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuZW5hYmxpbmdfdGFnPUBmb3JtYXR0ZXJcOm9uCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuZm9ybWF0X2d1YXJkaWFuX2NsYXVzZV9vbl9vbmVfbGluZT1mYWxzZQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmZvcm1hdF9saW5lX2NvbW1lbnRfc3RhcnRpbmdfb25fZmlyc3RfY29sdW1uPXRydWUKK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbmRlbnRfYm9keV9kZWNsYXJhdGlvbnNfY29tcGFyZV90b19hbm5vdGF0aW9uX2RlY2xhcmF0aW9uX2hlYWRlcj10cnVlCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5kZW50X2JvZHlfZGVjbGFyYXRpb25zX2NvbXBhcmVfdG9fZW51bV9jb25zdGFudF9oZWFkZXI9dHJ1ZQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluZGVudF9ib2R5X2RlY2xhcmF0aW9uc19jb21wYXJlX3RvX2VudW1fZGVjbGFyYXRpb25faGVhZGVyPXRydWUKK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbmRlbnRfYm9keV9kZWNsYXJhdGlvbnNfY29tcGFyZV90b190eXBlX2hlYWRlcj10cnVlCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5kZW50X2JyZWFrc19jb21wYXJlX3RvX2Nhc2VzPXRydWUKK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbmRlbnRfZW1wdHlfbGluZXM9ZmFsc2UKK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbmRlbnRfc3RhdGVtZW50c19jb21wYXJlX3RvX2Jsb2NrPXRydWUKK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbmRlbnRfc3RhdGVtZW50c19jb21wYXJlX3RvX2JvZHk9dHJ1ZQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluZGVudF9zd2l0Y2hzdGF0ZW1lbnRzX2NvbXBhcmVfdG9fY2FzZXM9dHJ1ZQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluZGVudF9zd2l0Y2hzdGF0ZW1lbnRzX2NvbXBhcmVfdG9fc3dpdGNoPWZhbHNlCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5kZW50YXRpb24uc2l6ZT00CitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X25ld19saW5lX2FmdGVyX2Fubm90YXRpb25fb25fZmllbGQ9aW5zZXJ0CitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X25ld19saW5lX2FmdGVyX2Fubm90YXRpb25fb25fbG9jYWxfdmFyaWFibGU9aW5zZXJ0CitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X25ld19saW5lX2FmdGVyX2Fubm90YXRpb25fb25fbWV0aG9kPWluc2VydAorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9uZXdfbGluZV9hZnRlcl9hbm5vdGF0aW9uX29uX3BhY2thZ2U9aW5zZXJ0CitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X25ld19saW5lX2FmdGVyX2Fubm90YXRpb25fb25fcGFyYW1ldGVyPWRvIG5vdCBpbnNlcnQKK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfbmV3X2xpbmVfYWZ0ZXJfYW5ub3RhdGlvbl9vbl90eXBlPWluc2VydAorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9uZXdfbGluZV9hZnRlcl9sYWJlbD1kbyBub3QgaW5zZXJ0CitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X25ld19saW5lX2FmdGVyX29wZW5pbmdfYnJhY2VfaW5fYXJyYXlfaW5pdGlhbGl6ZXI9ZG8gbm90IGluc2VydAorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9uZXdfbGluZV9hZnRlcl90eXBlX2Fubm90YXRpb249ZG8gbm90IGluc2VydAorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9uZXdfbGluZV9hdF9lbmRfb2ZfZmlsZV9pZl9taXNzaW5nPWRvIG5vdCBpbnNlcnQKK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfbmV3X2xpbmVfYmVmb3JlX2NhdGNoX2luX3RyeV9zdGF0ZW1lbnQ9ZG8gbm90IGluc2VydAorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9uZXdfbGluZV9iZWZvcmVfY2xvc2luZ19icmFjZV9pbl9hcnJheV9pbml0aWFsaXplcj1kbyBub3QgaW5zZXJ0CitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X25ld19saW5lX2JlZm9yZV9lbHNlX2luX2lmX3N0YXRlbWVudD1kbyBub3QgaW5zZXJ0CitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X25ld19saW5lX2JlZm9yZV9maW5hbGx5X2luX3RyeV9zdGF0ZW1lbnQ9ZG8gbm90IGluc2VydAorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9uZXdfbGluZV9iZWZvcmVfd2hpbGVfaW5fZG9fc3RhdGVtZW50PWRvIG5vdCBpbnNlcnQKK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfbmV3X2xpbmVfaW5fZW1wdHlfYW5ub3RhdGlvbl9kZWNsYXJhdGlvbj1pbnNlcnQKK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfbmV3X2xpbmVfaW5fZW1wdHlfYW5vbnltb3VzX3R5cGVfZGVjbGFyYXRpb249aW5zZXJ0CitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X25ld19saW5lX2luX2VtcHR5X2Jsb2NrPWluc2VydAorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9uZXdfbGluZV9pbl9lbXB0eV9lbnVtX2NvbnN0YW50PWluc2VydAorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9uZXdfbGluZV9pbl9lbXB0eV9lbnVtX2RlY2xhcmF0aW9uPWluc2VydAorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9uZXdfbGluZV9pbl9lbXB0eV9tZXRob2RfYm9keT1pbnNlcnQKK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfbmV3X2xpbmVfaW5fZW1wdHlfdHlwZV9kZWNsYXJhdGlvbj1pbnNlcnQKK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfYW5kX2luX3R5cGVfcGFyYW1ldGVyPWluc2VydAorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9hc3NpZ25tZW50X29wZXJhdG9yPWluc2VydAorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9hdF9pbl9hbm5vdGF0aW9uPWRvIG5vdCBpbnNlcnQKK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfYXRfaW5fYW5ub3RhdGlvbl90eXBlX2RlY2xhcmF0aW9uPWRvIG5vdCBpbnNlcnQKK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfYmluYXJ5X29wZXJhdG9yPWluc2VydAorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9jbG9zaW5nX2FuZ2xlX2JyYWNrZXRfaW5fdHlwZV9hcmd1bWVudHM9aW5zZXJ0CitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX2Nsb3NpbmdfYW5nbGVfYnJhY2tldF9pbl90eXBlX3BhcmFtZXRlcnM9aW5zZXJ0CitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX2Nsb3NpbmdfYnJhY2VfaW5fYmxvY2s9aW5zZXJ0CitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX2Nsb3NpbmdfcGFyZW5faW5fY2FzdD1pbnNlcnQKK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfY29sb25faW5fYXNzZXJ0PWluc2VydAorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9jb2xvbl9pbl9jYXNlPWluc2VydAorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9jb2xvbl9pbl9jb25kaXRpb25hbD1pbnNlcnQKK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfY29sb25faW5fZm9yPWluc2VydAorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9jb2xvbl9pbl9sYWJlbGVkX3N0YXRlbWVudD1pbnNlcnQKK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfY29tbWFfaW5fYWxsb2NhdGlvbl9leHByZXNzaW9uPWluc2VydAorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9jb21tYV9pbl9hbm5vdGF0aW9uPWluc2VydAorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9jb21tYV9pbl9hcnJheV9pbml0aWFsaXplcj1pbnNlcnQKK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfY29tbWFfaW5fY29uc3RydWN0b3JfZGVjbGFyYXRpb25fcGFyYW1ldGVycz1pbnNlcnQKK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfY29tbWFfaW5fY29uc3RydWN0b3JfZGVjbGFyYXRpb25fdGhyb3dzPWluc2VydAorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9jb21tYV9pbl9lbnVtX2NvbnN0YW50X2FyZ3VtZW50cz1pbnNlcnQKK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfY29tbWFfaW5fZW51bV9kZWNsYXJhdGlvbnM9aW5zZXJ0CitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX2NvbW1hX2luX2V4cGxpY2l0Y29uc3RydWN0b3JjYWxsX2FyZ3VtZW50cz1pbnNlcnQKK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfY29tbWFfaW5fZm9yX2luY3JlbWVudHM9aW5zZXJ0CitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX2NvbW1hX2luX2Zvcl9pbml0cz1pbnNlcnQKK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfY29tbWFfaW5fbWV0aG9kX2RlY2xhcmF0aW9uX3BhcmFtZXRlcnM9aW5zZXJ0CitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX2NvbW1hX2luX21ldGhvZF9kZWNsYXJhdGlvbl90aHJvd3M9aW5zZXJ0CitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX2NvbW1hX2luX21ldGhvZF9pbnZvY2F0aW9uX2FyZ3VtZW50cz1pbnNlcnQKK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfY29tbWFfaW5fbXVsdGlwbGVfZmllbGRfZGVjbGFyYXRpb25zPWluc2VydAorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9jb21tYV9pbl9tdWx0aXBsZV9sb2NhbF9kZWNsYXJhdGlvbnM9aW5zZXJ0CitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX2NvbW1hX2luX3BhcmFtZXRlcml6ZWRfdHlwZV9yZWZlcmVuY2U9aW5zZXJ0CitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX2NvbW1hX2luX3N1cGVyaW50ZXJmYWNlcz1pbnNlcnQKK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfY29tbWFfaW5fdHlwZV9hcmd1bWVudHM9aW5zZXJ0CitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX2NvbW1hX2luX3R5cGVfcGFyYW1ldGVycz1pbnNlcnQKK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfZWxsaXBzaXM9aW5zZXJ0CitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX2xhbWJkYV9hcnJvdz1pbnNlcnQKK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfb3BlbmluZ19hbmdsZV9icmFja2V0X2luX3BhcmFtZXRlcml6ZWRfdHlwZV9yZWZlcmVuY2U9ZG8gbm90IGluc2VydAorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9vcGVuaW5nX2FuZ2xlX2JyYWNrZXRfaW5fdHlwZV9hcmd1bWVudHM9ZG8gbm90IGluc2VydAorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9vcGVuaW5nX2FuZ2xlX2JyYWNrZXRfaW5fdHlwZV9wYXJhbWV0ZXJzPWRvIG5vdCBpbnNlcnQKK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfb3BlbmluZ19icmFjZV9pbl9hcnJheV9pbml0aWFsaXplcj1pbnNlcnQKK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfb3BlbmluZ19icmFja2V0X2luX2FycmF5X2FsbG9jYXRpb25fZXhwcmVzc2lvbj1kbyBub3QgaW5zZXJ0CitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX29wZW5pbmdfYnJhY2tldF9pbl9hcnJheV9yZWZlcmVuY2U9ZG8gbm90IGluc2VydAorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9vcGVuaW5nX3BhcmVuX2luX2Fubm90YXRpb249ZG8gbm90IGluc2VydAorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9vcGVuaW5nX3BhcmVuX2luX2Nhc3Q9ZG8gbm90IGluc2VydAorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9vcGVuaW5nX3BhcmVuX2luX2NhdGNoPWRvIG5vdCBpbnNlcnQKK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfb3BlbmluZ19wYXJlbl9pbl9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbj1kbyBub3QgaW5zZXJ0CitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX29wZW5pbmdfcGFyZW5faW5fZW51bV9jb25zdGFudD1kbyBub3QgaW5zZXJ0CitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX29wZW5pbmdfcGFyZW5faW5fZm9yPWRvIG5vdCBpbnNlcnQKK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfb3BlbmluZ19wYXJlbl9pbl9pZj1kbyBub3QgaW5zZXJ0CitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX29wZW5pbmdfcGFyZW5faW5fbWV0aG9kX2RlY2xhcmF0aW9uPWRvIG5vdCBpbnNlcnQKK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfb3BlbmluZ19wYXJlbl9pbl9tZXRob2RfaW52b2NhdGlvbj1kbyBub3QgaW5zZXJ0CitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX29wZW5pbmdfcGFyZW5faW5fcGFyZW50aGVzaXplZF9leHByZXNzaW9uPWRvIG5vdCBpbnNlcnQKK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfb3BlbmluZ19wYXJlbl9pbl9zd2l0Y2g9ZG8gbm90IGluc2VydAorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9vcGVuaW5nX3BhcmVuX2luX3N5bmNocm9uaXplZD1kbyBub3QgaW5zZXJ0CitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX29wZW5pbmdfcGFyZW5faW5fdHJ5PWRvIG5vdCBpbnNlcnQKK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfb3BlbmluZ19wYXJlbl9pbl93aGlsZT1kbyBub3QgaW5zZXJ0CitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX3Bvc3RmaXhfb3BlcmF0b3I9ZG8gbm90IGluc2VydAorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9wcmVmaXhfb3BlcmF0b3I9ZG8gbm90IGluc2VydAorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9xdWVzdGlvbl9pbl9jb25kaXRpb25hbD1pbnNlcnQKK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfcXVlc3Rpb25faW5fd2lsZGNhcmQ9ZG8gbm90IGluc2VydAorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9zZW1pY29sb25faW5fZm9yPWluc2VydAorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9zZW1pY29sb25faW5fdHJ5X3Jlc291cmNlcz1pbnNlcnQKK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfdW5hcnlfb3BlcmF0b3I9ZG8gbm90IGluc2VydAorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfYW5kX2luX3R5cGVfcGFyYW1ldGVyPWluc2VydAorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfYXNzaWdubWVudF9vcGVyYXRvcj1pbnNlcnQKK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2F0X2luX2Fubm90YXRpb25fdHlwZV9kZWNsYXJhdGlvbj1pbnNlcnQKK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2JpbmFyeV9vcGVyYXRvcj1pbnNlcnQKK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2Nsb3NpbmdfYW5nbGVfYnJhY2tldF9pbl9wYXJhbWV0ZXJpemVkX3R5cGVfcmVmZXJlbmNlPWRvIG5vdCBpbnNlcnQKK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2Nsb3NpbmdfYW5nbGVfYnJhY2tldF9pbl90eXBlX2FyZ3VtZW50cz1kbyBub3QgaW5zZXJ0CitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9jbG9zaW5nX2FuZ2xlX2JyYWNrZXRfaW5fdHlwZV9wYXJhbWV0ZXJzPWRvIG5vdCBpbnNlcnQKK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2Nsb3NpbmdfYnJhY2VfaW5fYXJyYXlfaW5pdGlhbGl6ZXI9aW5zZXJ0CitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9jbG9zaW5nX2JyYWNrZXRfaW5fYXJyYXlfYWxsb2NhdGlvbl9leHByZXNzaW9uPWRvIG5vdCBpbnNlcnQKK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2Nsb3NpbmdfYnJhY2tldF9pbl9hcnJheV9yZWZlcmVuY2U9ZG8gbm90IGluc2VydAorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfY2xvc2luZ19wYXJlbl9pbl9hbm5vdGF0aW9uPWRvIG5vdCBpbnNlcnQKK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2Nsb3NpbmdfcGFyZW5faW5fY2FzdD1kbyBub3QgaW5zZXJ0CitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9jbG9zaW5nX3BhcmVuX2luX2NhdGNoPWRvIG5vdCBpbnNlcnQKK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2Nsb3NpbmdfcGFyZW5faW5fY29uc3RydWN0b3JfZGVjbGFyYXRpb249ZG8gbm90IGluc2VydAorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfY2xvc2luZ19wYXJlbl9pbl9lbnVtX2NvbnN0YW50PWRvIG5vdCBpbnNlcnQKK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2Nsb3NpbmdfcGFyZW5faW5fZm9yPWRvIG5vdCBpbnNlcnQKK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2Nsb3NpbmdfcGFyZW5faW5faWY9ZG8gbm90IGluc2VydAorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfY2xvc2luZ19wYXJlbl9pbl9tZXRob2RfZGVjbGFyYXRpb249ZG8gbm90IGluc2VydAorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfY2xvc2luZ19wYXJlbl9pbl9tZXRob2RfaW52b2NhdGlvbj1kbyBub3QgaW5zZXJ0CitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9jbG9zaW5nX3BhcmVuX2luX3BhcmVudGhlc2l6ZWRfZXhwcmVzc2lvbj1kbyBub3QgaW5zZXJ0CitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9jbG9zaW5nX3BhcmVuX2luX3N3aXRjaD1kbyBub3QgaW5zZXJ0CitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9jbG9zaW5nX3BhcmVuX2luX3N5bmNocm9uaXplZD1kbyBub3QgaW5zZXJ0CitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9jbG9zaW5nX3BhcmVuX2luX3RyeT1kbyBub3QgaW5zZXJ0CitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9jbG9zaW5nX3BhcmVuX2luX3doaWxlPWRvIG5vdCBpbnNlcnQKK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2NvbG9uX2luX2Fzc2VydD1pbnNlcnQKK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2NvbG9uX2luX2Nhc2U9ZG8gbm90IGluc2VydAorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfY29sb25faW5fY29uZGl0aW9uYWw9aW5zZXJ0CitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9jb2xvbl9pbl9kZWZhdWx0PWRvIG5vdCBpbnNlcnQKK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2NvbG9uX2luX2Zvcj1pbnNlcnQKK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2NvbG9uX2luX2xhYmVsZWRfc3RhdGVtZW50PWRvIG5vdCBpbnNlcnQKK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2NvbW1hX2luX2FsbG9jYXRpb25fZXhwcmVzc2lvbj1kbyBub3QgaW5zZXJ0CitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9jb21tYV9pbl9hbm5vdGF0aW9uPWRvIG5vdCBpbnNlcnQKK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2NvbW1hX2luX2FycmF5X2luaXRpYWxpemVyPWRvIG5vdCBpbnNlcnQKK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2NvbW1hX2luX2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uX3BhcmFtZXRlcnM9ZG8gbm90IGluc2VydAorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfY29tbWFfaW5fY29uc3RydWN0b3JfZGVjbGFyYXRpb25fdGhyb3dzPWRvIG5vdCBpbnNlcnQKK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2NvbW1hX2luX2VudW1fY29uc3RhbnRfYXJndW1lbnRzPWRvIG5vdCBpbnNlcnQKK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2NvbW1hX2luX2VudW1fZGVjbGFyYXRpb25zPWRvIG5vdCBpbnNlcnQKK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2NvbW1hX2luX2V4cGxpY2l0Y29uc3RydWN0b3JjYWxsX2FyZ3VtZW50cz1kbyBub3QgaW5zZXJ0CitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9jb21tYV9pbl9mb3JfaW5jcmVtZW50cz1kbyBub3QgaW5zZXJ0CitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9jb21tYV9pbl9mb3JfaW5pdHM9ZG8gbm90IGluc2VydAorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfY29tbWFfaW5fbWV0aG9kX2RlY2xhcmF0aW9uX3BhcmFtZXRlcnM9ZG8gbm90IGluc2VydAorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfY29tbWFfaW5fbWV0aG9kX2RlY2xhcmF0aW9uX3Rocm93cz1kbyBub3QgaW5zZXJ0CitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9jb21tYV9pbl9tZXRob2RfaW52b2NhdGlvbl9hcmd1bWVudHM9ZG8gbm90IGluc2VydAorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfY29tbWFfaW5fbXVsdGlwbGVfZmllbGRfZGVjbGFyYXRpb25zPWRvIG5vdCBpbnNlcnQKK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2NvbW1hX2luX211bHRpcGxlX2xvY2FsX2RlY2xhcmF0aW9ucz1kbyBub3QgaW5zZXJ0CitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9jb21tYV9pbl9wYXJhbWV0ZXJpemVkX3R5cGVfcmVmZXJlbmNlPWRvIG5vdCBpbnNlcnQKK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2NvbW1hX2luX3N1cGVyaW50ZXJmYWNlcz1kbyBub3QgaW5zZXJ0CitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9jb21tYV9pbl90eXBlX2FyZ3VtZW50cz1kbyBub3QgaW5zZXJ0CitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9jb21tYV9pbl90eXBlX3BhcmFtZXRlcnM9ZG8gbm90IGluc2VydAorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfZWxsaXBzaXM9ZG8gbm90IGluc2VydAorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfbGFtYmRhX2Fycm93PWluc2VydAorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfb3BlbmluZ19hbmdsZV9icmFja2V0X2luX3BhcmFtZXRlcml6ZWRfdHlwZV9yZWZlcmVuY2U9ZG8gbm90IGluc2VydAorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfb3BlbmluZ19hbmdsZV9icmFja2V0X2luX3R5cGVfYXJndW1lbnRzPWRvIG5vdCBpbnNlcnQKK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX29wZW5pbmdfYW5nbGVfYnJhY2tldF9pbl90eXBlX3BhcmFtZXRlcnM9ZG8gbm90IGluc2VydAorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfb3BlbmluZ19icmFjZV9pbl9hbm5vdGF0aW9uX3R5cGVfZGVjbGFyYXRpb249aW5zZXJ0CitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9vcGVuaW5nX2JyYWNlX2luX2Fub255bW91c190eXBlX2RlY2xhcmF0aW9uPWluc2VydAorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfb3BlbmluZ19icmFjZV9pbl9hcnJheV9pbml0aWFsaXplcj1pbnNlcnQKK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX29wZW5pbmdfYnJhY2VfaW5fYmxvY2s9aW5zZXJ0CitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9vcGVuaW5nX2JyYWNlX2luX2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uPWluc2VydAorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfb3BlbmluZ19icmFjZV9pbl9lbnVtX2NvbnN0YW50PWluc2VydAorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfb3BlbmluZ19icmFjZV9pbl9lbnVtX2RlY2xhcmF0aW9uPWluc2VydAorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfb3BlbmluZ19icmFjZV9pbl9tZXRob2RfZGVjbGFyYXRpb249aW5zZXJ0CitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9vcGVuaW5nX2JyYWNlX2luX3N3aXRjaD1pbnNlcnQKK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX29wZW5pbmdfYnJhY2VfaW5fdHlwZV9kZWNsYXJhdGlvbj1pbnNlcnQKK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX29wZW5pbmdfYnJhY2tldF9pbl9hcnJheV9hbGxvY2F0aW9uX2V4cHJlc3Npb249ZG8gbm90IGluc2VydAorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfb3BlbmluZ19icmFja2V0X2luX2FycmF5X3JlZmVyZW5jZT1kbyBub3QgaW5zZXJ0CitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9vcGVuaW5nX2JyYWNrZXRfaW5fYXJyYXlfdHlwZV9yZWZlcmVuY2U9ZG8gbm90IGluc2VydAorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfb3BlbmluZ19wYXJlbl9pbl9hbm5vdGF0aW9uPWRvIG5vdCBpbnNlcnQKK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX29wZW5pbmdfcGFyZW5faW5fYW5ub3RhdGlvbl90eXBlX21lbWJlcl9kZWNsYXJhdGlvbj1kbyBub3QgaW5zZXJ0CitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9vcGVuaW5nX3BhcmVuX2luX2NhdGNoPWluc2VydAorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfb3BlbmluZ19wYXJlbl9pbl9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbj1kbyBub3QgaW5zZXJ0CitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9vcGVuaW5nX3BhcmVuX2luX2VudW1fY29uc3RhbnQ9ZG8gbm90IGluc2VydAorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfb3BlbmluZ19wYXJlbl9pbl9mb3I9aW5zZXJ0CitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9vcGVuaW5nX3BhcmVuX2luX2lmPWluc2VydAorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfb3BlbmluZ19wYXJlbl9pbl9tZXRob2RfZGVjbGFyYXRpb249ZG8gbm90IGluc2VydAorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfb3BlbmluZ19wYXJlbl9pbl9tZXRob2RfaW52b2NhdGlvbj1kbyBub3QgaW5zZXJ0CitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9vcGVuaW5nX3BhcmVuX2luX3BhcmVudGhlc2l6ZWRfZXhwcmVzc2lvbj1kbyBub3QgaW5zZXJ0CitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9vcGVuaW5nX3BhcmVuX2luX3N3aXRjaD1pbnNlcnQKK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX29wZW5pbmdfcGFyZW5faW5fc3luY2hyb25pemVkPWluc2VydAorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfb3BlbmluZ19wYXJlbl9pbl90cnk9aW5zZXJ0CitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9vcGVuaW5nX3BhcmVuX2luX3doaWxlPWluc2VydAorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfcGFyZW50aGVzaXplZF9leHByZXNzaW9uX2luX3JldHVybj1pbnNlcnQKK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX3BhcmVudGhlc2l6ZWRfZXhwcmVzc2lvbl9pbl90aHJvdz1pbnNlcnQKK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX3Bvc3RmaXhfb3BlcmF0b3I9ZG8gbm90IGluc2VydAorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfcHJlZml4X29wZXJhdG9yPWRvIG5vdCBpbnNlcnQKK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX3F1ZXN0aW9uX2luX2NvbmRpdGlvbmFsPWluc2VydAorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfcXVlc3Rpb25faW5fd2lsZGNhcmQ9ZG8gbm90IGluc2VydAorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfc2VtaWNvbG9uPWRvIG5vdCBpbnNlcnQKK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX3NlbWljb2xvbl9pbl9mb3I9ZG8gbm90IGluc2VydAorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfc2VtaWNvbG9uX2luX3RyeV9yZXNvdXJjZXM9ZG8gbm90IGluc2VydAorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfdW5hcnlfb3BlcmF0b3I9ZG8gbm90IGluc2VydAorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZXR3ZWVuX2JyYWNrZXRzX2luX2FycmF5X3R5cGVfcmVmZXJlbmNlPWRvIG5vdCBpbnNlcnQKK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmV0d2Vlbl9lbXB0eV9icmFjZXNfaW5fYXJyYXlfaW5pdGlhbGl6ZXI9ZG8gbm90IGluc2VydAorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZXR3ZWVuX2VtcHR5X2JyYWNrZXRzX2luX2FycmF5X2FsbG9jYXRpb25fZXhwcmVzc2lvbj1kbyBub3QgaW5zZXJ0CitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JldHdlZW5fZW1wdHlfcGFyZW5zX2luX2Fubm90YXRpb25fdHlwZV9tZW1iZXJfZGVjbGFyYXRpb249ZG8gbm90IGluc2VydAorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZXR3ZWVuX2VtcHR5X3BhcmVuc19pbl9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbj1kbyBub3QgaW5zZXJ0CitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JldHdlZW5fZW1wdHlfcGFyZW5zX2luX2VudW1fY29uc3RhbnQ9ZG8gbm90IGluc2VydAorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZXR3ZWVuX2VtcHR5X3BhcmVuc19pbl9tZXRob2RfZGVjbGFyYXRpb249ZG8gbm90IGluc2VydAorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZXR3ZWVuX2VtcHR5X3BhcmVuc19pbl9tZXRob2RfaW52b2NhdGlvbj1kbyBub3QgaW5zZXJ0CitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuam9pbl9saW5lc19pbl9jb21tZW50cz1mYWxzZQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmpvaW5fd3JhcHBlZF9saW5lcz1mYWxzZQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmtlZXBfZWxzZV9zdGF0ZW1lbnRfb25fc2FtZV9saW5lPWZhbHNlCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIua2VlcF9lbXB0eV9hcnJheV9pbml0aWFsaXplcl9vbl9vbmVfbGluZT1mYWxzZQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmtlZXBfaW1wbGVfaWZfb25fb25lX2xpbmU9ZmFsc2UKK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5rZWVwX3RoZW5fc3RhdGVtZW50X29uX3NhbWVfbGluZT1mYWxzZQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmxpbmVTcGxpdD0yNjAKK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5uZXZlcl9pbmRlbnRfYmxvY2tfY29tbWVudHNfb25fZmlyc3RfY29sdW1uPWZhbHNlCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIubmV2ZXJfaW5kZW50X2xpbmVfY29tbWVudHNfb25fZmlyc3RfY29sdW1uPWZhbHNlCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIubnVtYmVyX29mX2JsYW5rX2xpbmVzX2F0X2JlZ2lubmluZ19vZl9tZXRob2RfYm9keT0wCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIubnVtYmVyX29mX2VtcHR5X2xpbmVzX3RvX3ByZXNlcnZlPTUKK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5wdXRfZW1wdHlfc3RhdGVtZW50X29uX25ld19saW5lPXRydWUKK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci50YWJ1bGF0aW9uLmNoYXI9dGFiCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIudGFidWxhdGlvbi5zaXplPTQKK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci51c2Vfb25fb2ZmX3RhZ3M9ZmFsc2UKK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci51c2VfdGFic19vbmx5X2Zvcl9sZWFkaW5nX2luZGVudGF0aW9ucz1mYWxzZQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLndyYXBfYmVmb3JlX2JpbmFyeV9vcGVyYXRvcj10cnVlCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIud3JhcF9iZWZvcmVfb3Jfb3BlcmF0b3JfbXVsdGljYXRjaD10cnVlCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIud3JhcF9vdXRlcl9leHByZXNzaW9uc193aGVuX25lc3RlZD10cnVlCmRpZmYgLS1naXQgYS9kaWFncmFtL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kaWFncmFtLnJlcXVpcmVtZW50Ly5zZXR0aW5ncy9vcmcuZWNsaXBzZS5qZHQudWkucHJlZnMgYi9kaWFncmFtL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kaWFncmFtLnJlcXVpcmVtZW50Ly5zZXR0aW5ncy9vcmcuZWNsaXBzZS5qZHQudWkucHJlZnMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDFkNzA0YgotLS0gL2Rldi9udWxsCisrKyBiL2RpYWdyYW0vb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRpYWdyYW0ucmVxdWlyZW1lbnQvLnNldHRpbmdzL29yZy5lY2xpcHNlLmpkdC51aS5wcmVmcwpAQCAtMCwwICsxLDY4IEBACitjbGVhbnVwLmFkZF9kZWZhdWx0X3NlcmlhbF92ZXJzaW9uX2lkPXRydWUNCitjbGVhbnVwLmFkZF9nZW5lcmF0ZWRfc2VyaWFsX3ZlcnNpb25faWQ9ZmFsc2UNCitjbGVhbnVwLmFkZF9taXNzaW5nX2Fubm90YXRpb25zPXRydWUNCitjbGVhbnVwLmFkZF9taXNzaW5nX2RlcHJlY2F0ZWRfYW5ub3RhdGlvbnM9dHJ1ZQ0KK2NsZWFudXAuYWRkX21pc3NpbmdfbWV0aG9kcz1mYWxzZQ0KK2NsZWFudXAuYWRkX21pc3NpbmdfbmxzX3RhZ3M9ZmFsc2UNCitjbGVhbnVwLmFkZF9taXNzaW5nX292ZXJyaWRlX2Fubm90YXRpb25zPXRydWUNCitjbGVhbnVwLmFkZF9taXNzaW5nX292ZXJyaWRlX2Fubm90YXRpb25zX2ludGVyZmFjZV9tZXRob2RzPXRydWUNCitjbGVhbnVwLmFkZF9zZXJpYWxfdmVyc2lvbl9pZD1mYWxzZQ0KK2NsZWFudXAuYWx3YXlzX3VzZV9ibG9ja3M9dHJ1ZQ0KK2NsZWFudXAuYWx3YXlzX3VzZV9wYXJlbnRoZXNlc19pbl9leHByZXNzaW9ucz1mYWxzZQ0KK2NsZWFudXAuYWx3YXlzX3VzZV90aGlzX2Zvcl9ub25fc3RhdGljX2ZpZWxkX2FjY2Vzcz1mYWxzZQ0KK2NsZWFudXAuYWx3YXlzX3VzZV90aGlzX2Zvcl9ub25fc3RhdGljX21ldGhvZF9hY2Nlc3M9ZmFsc2UNCitjbGVhbnVwLmNvbnZlcnRfZnVuY3Rpb25hbF9pbnRlcmZhY2VzPWZhbHNlDQorY2xlYW51cC5jb252ZXJ0X3RvX2VuaGFuY2VkX2Zvcl9sb29wPWZhbHNlDQorY2xlYW51cC5jb3JyZWN0X2luZGVudGF0aW9uPWZhbHNlDQorY2xlYW51cC5mb3JtYXRfc291cmNlX2NvZGU9ZmFsc2UNCitjbGVhbnVwLmZvcm1hdF9zb3VyY2VfY29kZV9jaGFuZ2VzX29ubHk9ZmFsc2UNCitjbGVhbnVwLmluc2VydF9pbmZlcnJlZF90eXBlX2FyZ3VtZW50cz1mYWxzZQ0KK2NsZWFudXAubWFrZV9sb2NhbF92YXJpYWJsZV9maW5hbD10cnVlDQorY2xlYW51cC5tYWtlX3BhcmFtZXRlcnNfZmluYWw9ZmFsc2UNCitjbGVhbnVwLm1ha2VfcHJpdmF0ZV9maWVsZHNfZmluYWw9dHJ1ZQ0KK2NsZWFudXAubWFrZV90eXBlX2Fic3RyYWN0X2lmX21pc3NpbmdfbWV0aG9kPWZhbHNlDQorY2xlYW51cC5tYWtlX3ZhcmlhYmxlX2RlY2xhcmF0aW9uc19maW5hbD1mYWxzZQ0KK2NsZWFudXAubmV2ZXJfdXNlX2Jsb2Nrcz1mYWxzZQ0KK2NsZWFudXAubmV2ZXJfdXNlX3BhcmVudGhlc2VzX2luX2V4cHJlc3Npb25zPXRydWUNCitjbGVhbnVwLm9yZ2FuaXplX2ltcG9ydHM9ZmFsc2UNCitjbGVhbnVwLnF1YWxpZnlfc3RhdGljX2ZpZWxkX2FjY2Vzc2VzX3dpdGhfZGVjbGFyaW5nX2NsYXNzPWZhbHNlDQorY2xlYW51cC5xdWFsaWZ5X3N0YXRpY19tZW1iZXJfYWNjZXNzZXNfdGhyb3VnaF9pbnN0YW5jZXNfd2l0aF9kZWNsYXJpbmdfY2xhc3M9dHJ1ZQ0KK2NsZWFudXAucXVhbGlmeV9zdGF0aWNfbWVtYmVyX2FjY2Vzc2VzX3Rocm91Z2hfc3VidHlwZXNfd2l0aF9kZWNsYXJpbmdfY2xhc3M9dHJ1ZQ0KK2NsZWFudXAucXVhbGlmeV9zdGF0aWNfbWVtYmVyX2FjY2Vzc2VzX3dpdGhfZGVjbGFyaW5nX2NsYXNzPXRydWUNCitjbGVhbnVwLnF1YWxpZnlfc3RhdGljX21ldGhvZF9hY2Nlc3Nlc193aXRoX2RlY2xhcmluZ19jbGFzcz1mYWxzZQ0KK2NsZWFudXAucmVtb3ZlX3ByaXZhdGVfY29uc3RydWN0b3JzPXRydWUNCitjbGVhbnVwLnJlbW92ZV9yZWR1bmRhbnRfdHlwZV9hcmd1bWVudHM9dHJ1ZQ0KK2NsZWFudXAucmVtb3ZlX3RyYWlsaW5nX3doaXRlc3BhY2VzPXRydWUNCitjbGVhbnVwLnJlbW92ZV90cmFpbGluZ193aGl0ZXNwYWNlc19hbGw9dHJ1ZQ0KK2NsZWFudXAucmVtb3ZlX3RyYWlsaW5nX3doaXRlc3BhY2VzX2lnbm9yZV9lbXB0eT1mYWxzZQ0KK2NsZWFudXAucmVtb3ZlX3VubmVjZXNzYXJ5X2Nhc3RzPXRydWUNCitjbGVhbnVwLnJlbW92ZV91bm5lY2Vzc2FyeV9ubHNfdGFncz10cnVlDQorY2xlYW51cC5yZW1vdmVfdW51c2VkX2ltcG9ydHM9dHJ1ZQ0KK2NsZWFudXAucmVtb3ZlX3VudXNlZF9sb2NhbF92YXJpYWJsZXM9ZmFsc2UNCitjbGVhbnVwLnJlbW92ZV91bnVzZWRfcHJpdmF0ZV9maWVsZHM9dHJ1ZQ0KK2NsZWFudXAucmVtb3ZlX3VudXNlZF9wcml2YXRlX21lbWJlcnM9ZmFsc2UNCitjbGVhbnVwLnJlbW92ZV91bnVzZWRfcHJpdmF0ZV9tZXRob2RzPXRydWUNCitjbGVhbnVwLnJlbW92ZV91bnVzZWRfcHJpdmF0ZV90eXBlcz10cnVlDQorY2xlYW51cC5zb3J0X21lbWJlcnM9ZmFsc2UNCitjbGVhbnVwLnNvcnRfbWVtYmVyc19hbGw9ZmFsc2UNCitjbGVhbnVwLnVzZV9hbm9ueW1vdXNfY2xhc3NfY3JlYXRpb249ZmFsc2UNCitjbGVhbnVwLnVzZV9ibG9ja3M9dHJ1ZQ0KK2NsZWFudXAudXNlX2Jsb2Nrc19vbmx5X2Zvcl9yZXR1cm5fYW5kX3Rocm93PWZhbHNlDQorY2xlYW51cC51c2VfbGFtYmRhPXRydWUNCitjbGVhbnVwLnVzZV9wYXJlbnRoZXNlc19pbl9leHByZXNzaW9ucz1mYWxzZQ0KK2NsZWFudXAudXNlX3RoaXNfZm9yX25vbl9zdGF0aWNfZmllbGRfYWNjZXNzPWZhbHNlDQorY2xlYW51cC51c2VfdGhpc19mb3Jfbm9uX3N0YXRpY19maWVsZF9hY2Nlc3Nfb25seV9pZl9uZWNlc3Nhcnk9dHJ1ZQ0KK2NsZWFudXAudXNlX3RoaXNfZm9yX25vbl9zdGF0aWNfbWV0aG9kX2FjY2Vzcz1mYWxzZQ0KK2NsZWFudXAudXNlX3RoaXNfZm9yX25vbl9zdGF0aWNfbWV0aG9kX2FjY2Vzc19vbmx5X2lmX25lY2Vzc2FyeT10cnVlDQorY2xlYW51cC51c2VfdHlwZV9hcmd1bWVudHM9ZmFsc2UNCitjbGVhbnVwX3Byb2ZpbGU9X1BhcHlydXMNCitjbGVhbnVwX3NldHRpbmdzX3ZlcnNpb249Mg0KK2VjbGlwc2UucHJlZmVyZW5jZXMudmVyc2lvbj0xDQorZm9ybWF0dGVyX3Byb2ZpbGU9X1BhcHlydXMNCitmb3JtYXR0ZXJfc2V0dGluZ3NfdmVyc2lvbj0xMg0KK29yZy5lY2xpcHNlLmpkdC51aS5pZ25vcmVsb3dlcmNhc2VuYW1lcz10cnVlDQorb3JnLmVjbGlwc2UuamR0LnVpLmltcG9ydG9yZGVyPWphdmE7amF2YXg7b3JnO2NvbTsNCitvcmcuZWNsaXBzZS5qZHQudWkuamF2YWRvYz10cnVlDQorb3JnLmVjbGlwc2UuamR0LnVpLm9uZGVtYW5kdGhyZXNob2xkPTk5DQorb3JnLmVjbGlwc2UuamR0LnVpLnN0YXRpY29uZGVtYW5kdGhyZXNob2xkPTk5DQorb3JnLmVjbGlwc2UuamR0LnVpLnRleHQuY3VzdG9tX2NvZGVfdGVtcGxhdGVzPTw/eG1sIHZlcnNpb25cPSIxLjAiIGVuY29kaW5nXD0iVVRGLTgiIHN0YW5kYWxvbmVcPSJubyI/Pjx0ZW1wbGF0ZXM+PHRlbXBsYXRlIGF1dG9pbnNlcnRcPSJ0cnVlIiBjb250ZXh0XD0iZ2V0dGVyY29tbWVudF9jb250ZXh0IiBkZWxldGVkXD0iZmFsc2UiIGRlc2NyaXB0aW9uXD0iQ29tbWVudCBmb3IgZ2V0dGVyIG1ldGhvZCIgZW5hYmxlZFw9InRydWUiIGlkXD0ib3JnLmVjbGlwc2UuamR0LnVpLnRleHQuY29kZXRlbXBsYXRlcy5nZXR0ZXJjb21tZW50IiBuYW1lXD0iZ2V0dGVyY29tbWVudCI+LyoqXG4gKiBAcmV0dXJuIHRoZSAke2JhcmVfZmllbGRfbmFtZX1cbiAqLzwvdGVtcGxhdGU+PHRlbXBsYXRlIGF1dG9pbnNlcnRcPSJ0cnVlIiBjb250ZXh0XD0ic2V0dGVyY29tbWVudF9jb250ZXh0IiBkZWxldGVkXD0iZmFsc2UiIGRlc2NyaXB0aW9uXD0iQ29tbWVudCBmb3Igc2V0dGVyIG1ldGhvZCIgZW5hYmxlZFw9InRydWUiIGlkXD0ib3JnLmVjbGlwc2UuamR0LnVpLnRleHQuY29kZXRlbXBsYXRlcy5zZXR0ZXJjb21tZW50IiBuYW1lXD0ic2V0dGVyY29tbWVudCI+LyoqXG4gKiBAcGFyYW0gJHtwYXJhbX0gdGhlICR7YmFyZV9maWVsZF9uYW1lfSB0byBzZXRcbiAqLzwvdGVtcGxhdGU+PHRlbXBsYXRlIGF1dG9pbnNlcnRcPSJmYWxzZSIgY29udGV4dFw9ImNvbnN0cnVjdG9yY29tbWVudF9jb250ZXh0IiBkZWxldGVkXD0iZmFsc2UiIGRlc2NyaXB0aW9uXD0iQ29tbWVudCBmb3IgY3JlYXRlZCBjb25zdHJ1Y3RvcnMiIGVuYWJsZWRcPSJ0cnVlIiBpZFw9Im9yZy5lY2xpcHNlLmpkdC51aS50ZXh0LmNvZGV0ZW1wbGF0ZXMuY29uc3RydWN0b3Jjb21tZW50IiBuYW1lXD0iY29uc3RydWN0b3Jjb21tZW50Ij4vKipcbiAqIENvbnN0cnVjdG9yLlxuICpcbiAqICR7dGFnc31cbiAqLzwvdGVtcGxhdGU+PHRlbXBsYXRlIGF1dG9pbnNlcnRcPSJmYWxzZSIgY29udGV4dFw9ImZpbGVjb21tZW50X2NvbnRleHQiIGRlbGV0ZWRcPSJmYWxzZSIgZGVzY3JpcHRpb25cPSJDb21tZW50IGZvciBjcmVhdGVkIEphdmEgZmlsZXMiIGVuYWJsZWRcPSJ0cnVlIiBpZFw9Im9yZy5lY2xpcHNlLmpkdC51aS50ZXh0LmNvZGV0ZW1wbGF0ZXMuZmlsZWNvbW1lbnQiIG5hbWVcPSJmaWxlY29tbWVudCI+LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gKiBDb3B5cmlnaHQgKGMpICR7eWVhcn0gQ0VBIExJU1QgYW5kIG90aGVycy5cbiAqIFxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFsc1xuICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wXG4gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdFxuICogaHR0cFw6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sXG4gKlxuICogQ29udHJpYnV0b3JzXDpcbiAqICAgQ0VBIExJU1QgLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb25cbiAqICAgXG4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG48L3RlbXBsYXRlPjx0ZW1wbGF0ZSBhdXRvaW5zZXJ0XD0idHJ1ZSIgY29udGV4dFw9InR5cGVjb21tZW50X2NvbnRleHQiIGRlbGV0ZWRcPSJmYWxzZSIgZGVzY3JpcHRpb25cPSJDb21tZW50IGZvciBjcmVhdGVkIHR5cGVzIiBlbmFibGVkXD0idHJ1ZSIgaWRcPSJvcmcuZWNsaXBzZS5qZHQudWkudGV4dC5jb2RldGVtcGxhdGVzLnR5cGVjb21tZW50IiBuYW1lXD0idHlwZWNvbW1lbnQiPi8qKlxuICogQGF1dGhvciAke3VzZXJ9XG4gKlxuICogJHt0YWdzfVxuICovPC90ZW1wbGF0ZT48dGVtcGxhdGUgYXV0b2luc2VydFw9InRydWUiIGNvbnRleHRcPSJmaWVsZGNvbW1lbnRfY29udGV4dCIgZGVsZXRlZFw9ImZhbHNlIiBkZXNjcmlwdGlvblw9IkNvbW1lbnQgZm9yIGZpZWxkcyIgZW5hYmxlZFw9InRydWUiIGlkXD0ib3JnLmVjbGlwc2UuamR0LnVpLnRleHQuY29kZXRlbXBsYXRlcy5maWVsZGNvbW1lbnQiIG5hbWVcPSJmaWVsZGNvbW1lbnQiPi8qKlxuICogXG4gKi88L3RlbXBsYXRlPjx0ZW1wbGF0ZSBhdXRvaW5zZXJ0XD0idHJ1ZSIgY29udGV4dFw9Im1ldGhvZGNvbW1lbnRfY29udGV4dCIgZGVsZXRlZFw9ImZhbHNlIiBkZXNjcmlwdGlvblw9IkNvbW1lbnQgZm9yIG5vbi1vdmVycmlkaW5nIG1ldGhvZHMiIGVuYWJsZWRcPSJ0cnVlIiBpZFw9Im9yZy5lY2xpcHNlLmpkdC51aS50ZXh0LmNvZGV0ZW1wbGF0ZXMubWV0aG9kY29tbWVudCIgbmFtZVw9Im1ldGhvZGNvbW1lbnQiPi8qKlxuICogJHt0YWdzfVxuICovPC90ZW1wbGF0ZT48dGVtcGxhdGUgYXV0b2luc2VydFw9ImZhbHNlIiBjb250ZXh0XD0ib3ZlcnJpZGVjb21tZW50X2NvbnRleHQiIGRlbGV0ZWRcPSJmYWxzZSIgZGVzY3JpcHRpb25cPSJDb21tZW50IGZvciBvdmVycmlkaW5nIG1ldGhvZHMiIGVuYWJsZWRcPSJ0cnVlIiBpZFw9Im9yZy5lY2xpcHNlLmpkdC51aS50ZXh0LmNvZGV0ZW1wbGF0ZXMub3ZlcnJpZGVjb21tZW50IiBuYW1lXD0ib3ZlcnJpZGVjb21tZW50Ij4vKipcbiAqICR7c2VlX3RvX292ZXJyaWRkZW59XG4gKlxuICogJHt0YWdzfVxuICovPC90ZW1wbGF0ZT48dGVtcGxhdGUgYXV0b2luc2VydFw9ImZhbHNlIiBjb250ZXh0XD0iZGVsZWdhdGVjb21tZW50X2NvbnRleHQiIGRlbGV0ZWRcPSJmYWxzZSIgZGVzY3JpcHRpb25cPSJDb21tZW50IGZvciBkZWxlZ2F0ZSBtZXRob2RzIiBlbmFibGVkXD0idHJ1ZSIgaWRcPSJvcmcuZWNsaXBzZS5qZHQudWkudGV4dC5jb2RldGVtcGxhdGVzLmRlbGVnYXRlY29tbWVudCIgbmFtZVw9ImRlbGVnYXRlY29tbWVudCI+LyoqXG4gKiAke3NlZV90b190YXJnZXR9XG4gKlxuICogJHt0YWdzfVxuICovPC90ZW1wbGF0ZT48dGVtcGxhdGUgYXV0b2luc2VydFw9InRydWUiIGNvbnRleHRcPSJuZXd0eXBlX2NvbnRleHQiIGRlbGV0ZWRcPSJmYWxzZSIgZGVzY3JpcHRpb25cPSJOZXdseSBjcmVhdGVkIGZpbGVzIiBlbmFibGVkXD0idHJ1ZSIgaWRcPSJvcmcuZWNsaXBzZS5qZHQudWkudGV4dC5jb2RldGVtcGxhdGVzLm5ld3R5cGUiIG5hbWVcPSJuZXd0eXBlIj4ke2ZpbGVjb21tZW50fVxuJHtwYWNrYWdlX2RlY2xhcmF0aW9ufVxuXG4ke3R5cGVjb21tZW50fVxuJHt0eXBlX2RlY2xhcmF0aW9ufTwvdGVtcGxhdGU+PHRlbXBsYXRlIGF1dG9pbnNlcnRcPSJ0cnVlIiBjb250ZXh0XD0iY2xhc3Nib2R5X2NvbnRleHQiIGRlbGV0ZWRcPSJmYWxzZSIgZGVzY3JpcHRpb25cPSJDb2RlIGluIG5ldyBjbGFzcyB0eXBlIGJvZGllcyIgZW5hYmxlZFw9InRydWUiIGlkXD0ib3JnLmVjbGlwc2UuamR0LnVpLnRleHQuY29kZXRlbXBsYXRlcy5jbGFzc2JvZHkiIG5hbWVcPSJjbGFzc2JvZHkiPlxuPC90ZW1wbGF0ZT48dGVtcGxhdGUgYXV0b2luc2VydFw9InRydWUiIGNvbnRleHRcPSJpbnRlcmZhY2Vib2R5X2NvbnRleHQiIGRlbGV0ZWRcPSJmYWxzZSIgZGVzY3JpcHRpb25cPSJDb2RlIGluIG5ldyBpbnRlcmZhY2UgdHlwZSBib2RpZXMiIGVuYWJsZWRcPSJ0cnVlIiBpZFw9Im9yZy5lY2xpcHNlLmpkdC51aS50ZXh0LmNvZGV0ZW1wbGF0ZXMuaW50ZXJmYWNlYm9keSIgbmFtZVw9ImludGVyZmFjZWJvZHkiPlxuPC90ZW1wbGF0ZT48dGVtcGxhdGUgYXV0b2luc2VydFw9InRydWUiIGNvbnRleHRcPSJlbnVtYm9keV9jb250ZXh0IiBkZWxldGVkXD0iZmFsc2UiIGRlc2NyaXB0aW9uXD0iQ29kZSBpbiBuZXcgZW51bSB0eXBlIGJvZGllcyIgZW5hYmxlZFw9InRydWUiIGlkXD0ib3JnLmVjbGlwc2UuamR0LnVpLnRleHQuY29kZXRlbXBsYXRlcy5lbnVtYm9keSIgbmFtZVw9ImVudW1ib2R5Ij5cbjwvdGVtcGxhdGU+PHRlbXBsYXRlIGF1dG9pbnNlcnRcPSJ0cnVlIiBjb250ZXh0XD0iYW5ub3RhdGlvbmJvZHlfY29udGV4dCIgZGVsZXRlZFw9ImZhbHNlIiBkZXNjcmlwdGlvblw9IkNvZGUgaW4gbmV3IGFubm90YXRpb24gdHlwZSBib2RpZXMiIGVuYWJsZWRcPSJ0cnVlIiBpZFw9Im9yZy5lY2xpcHNlLmpkdC51aS50ZXh0LmNvZGV0ZW1wbGF0ZXMuYW5ub3RhdGlvbmJvZHkiIG5hbWVcPSJhbm5vdGF0aW9uYm9keSI+XG48L3RlbXBsYXRlPjx0ZW1wbGF0ZSBhdXRvaW5zZXJ0XD0idHJ1ZSIgY29udGV4dFw9ImNhdGNoYmxvY2tfY29udGV4dCIgZGVsZXRlZFw9ImZhbHNlIiBkZXNjcmlwdGlvblw9IkNvZGUgaW4gbmV3IGNhdGNoIGJsb2NrcyIgZW5hYmxlZFw9InRydWUiIGlkXD0ib3JnLmVjbGlwc2UuamR0LnVpLnRleHQuY29kZXRlbXBsYXRlcy5jYXRjaGJsb2NrIiBuYW1lXD0iY2F0Y2hibG9jayI+Ly8gJHt0b2RvfSBBdXRvLWdlbmVyYXRlZCBjYXRjaCBibG9ja1xuJHtleGNlcHRpb25fdmFyfS5wcmludFN0YWNrVHJhY2UoKTs8L3RlbXBsYXRlPjx0ZW1wbGF0ZSBhdXRvaW5zZXJ0XD0idHJ1ZSIgY29udGV4dFw9Im1ldGhvZGJvZHlfY29udGV4dCIgZGVsZXRlZFw9ImZhbHNlIiBkZXNjcmlwdGlvblw9IkNvZGUgaW4gY3JlYXRlZCBtZXRob2Qgc3R1YnMiIGVuYWJsZWRcPSJ0cnVlIiBpZFw9Im9yZy5lY2xpcHNlLmpkdC51aS50ZXh0LmNvZGV0ZW1wbGF0ZXMubWV0aG9kYm9keSIgbmFtZVw9Im1ldGhvZGJvZHkiPi8vICR7dG9kb30gQXV0by1nZW5lcmF0ZWQgbWV0aG9kIHN0dWJcbiR7Ym9keV9zdGF0ZW1lbnR9PC90ZW1wbGF0ZT48dGVtcGxhdGUgYXV0b2luc2VydFw9InRydWUiIGNvbnRleHRcPSJjb25zdHJ1Y3RvcmJvZHlfY29udGV4dCIgZGVsZXRlZFw9ImZhbHNlIiBkZXNjcmlwdGlvblw9IkNvZGUgaW4gY3JlYXRlZCBjb25zdHJ1Y3RvciBzdHVicyIgZW5hYmxlZFw9InRydWUiIGlkXD0ib3JnLmVjbGlwc2UuamR0LnVpLnRleHQuY29kZXRlbXBsYXRlcy5jb25zdHJ1Y3RvcmJvZHkiIG5hbWVcPSJjb25zdHJ1Y3RvcmJvZHkiPiR7Ym9keV9zdGF0ZW1lbnR9XG4vLyAke3RvZG99IEF1dG8tZ2VuZXJhdGVkIGNvbnN0cnVjdG9yIHN0dWI8L3RlbXBsYXRlPjx0ZW1wbGF0ZSBhdXRvaW5zZXJ0XD0idHJ1ZSIgY29udGV4dFw9ImdldHRlcmJvZHlfY29udGV4dCIgZGVsZXRlZFw9ImZhbHNlIiBkZXNjcmlwdGlvblw9IkNvZGUgaW4gY3JlYXRlZCBnZXR0ZXJzIiBlbmFibGVkXD0idHJ1ZSIgaWRcPSJvcmcuZWNsaXBzZS5qZHQudWkudGV4dC5jb2RldGVtcGxhdGVzLmdldHRlcmJvZHkiIG5hbWVcPSJnZXR0ZXJib2R5Ij5yZXR1cm4gJHtmaWVsZH07PC90ZW1wbGF0ZT48dGVtcGxhdGUgYXV0b2luc2VydFw9InRydWUiIGNvbnRleHRcPSJzZXR0ZXJib2R5X2NvbnRleHQiIGRlbGV0ZWRcPSJmYWxzZSIgZGVzY3JpcHRpb25cPSJDb2RlIGluIGNyZWF0ZWQgc2V0dGVycyIgZW5hYmxlZFw9InRydWUiIGlkXD0ib3JnLmVjbGlwc2UuamR0LnVpLnRleHQuY29kZXRlbXBsYXRlcy5zZXR0ZXJib2R5IiBuYW1lXD0ic2V0dGVyYm9keSI+JHtmaWVsZH0gXD0gJHtwYXJhbX07PC90ZW1wbGF0ZT48L3RlbXBsYXRlcz4NCmRpZmYgLS1naXQgYS9kaWFncmFtL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kaWFncmFtLnJlcXVpcmVtZW50L01FVEEtSU5GL01BTklGRVNULk1GIGIvZGlhZ3JhbS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGlhZ3JhbS5yZXF1aXJlbWVudC9NRVRBLUlORi9NQU5JRkVTVC5NRgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wOTIyMzBiCi0tLSAvZGV2L251bGwKKysrIGIvZGlhZ3JhbS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGlhZ3JhbS5yZXF1aXJlbWVudC9NRVRBLUlORi9NQU5JRkVTVC5NRgpAQCAtMCwwICsxLDEyIEBACitNYW5pZmVzdC1WZXJzaW9uOiAxLjANCitCdW5kbGUtTWFuaWZlc3RWZXJzaW9uOiAyDQorQnVuZGxlLU5hbWU6ICVwbHVnaW5OYW1lDQorQnVuZGxlLVN5bWJvbGljTmFtZTogb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRpYWdyYW0ucmVxdWlyZW1lbnQ7c2luZ2xldG9uOj10cnVlDQorQnVuZGxlLVZlcnNpb246IDAuNy4wLnF1YWxpZmllcg0KK0J1bmRsZS1BY3RpdmF0b3I6IG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kaWFncmFtLnJlcXVpcmVtZW50LkFjdGl2YXRvcg0KK1JlcXVpcmUtQnVuZGxlOiBvcmcuZWNsaXBzZS5jb3JlLnJ1bnRpbWUsDQorIG9yZy5lY2xpcHNlLnBhcHlydXMuaW5mcmEudmlld3BvaW50cy5wb2xpY3k7YnVuZGxlLXZlcnNpb249IjEuMS4wIiwNCisgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRpYWdyYW0uY29tbW9uO2J1bmRsZS12ZXJzaW9uPSIwLjcuMCINCitCdW5kbGUtUmVxdWlyZWRFeGVjdXRpb25FbnZpcm9ubWVudDogSmF2YVNFLTEuNw0KK0J1bmRsZS1BY3RpdmF0aW9uUG9saWN5OiBsYXp5DQorQnVuZGxlLVZlbmRvcjogJXByb3ZpZGVyTmFtZQ0KZGlmZiAtLWdpdCBhL2RpYWdyYW0vb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRpYWdyYW0ucmVxdWlyZW1lbnQvYWJvdXQuaHRtbCBiL2RpYWdyYW0vb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRpYWdyYW0ucmVxdWlyZW1lbnQvYWJvdXQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MmQ0OWJmCi0tLSAvZGV2L251bGwKKysrIGIvZGlhZ3JhbS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGlhZ3JhbS5yZXF1aXJlbWVudC9hYm91dC5odG1sCkBAIC0wLDAgKzEsMjggQEAKKzwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgWEhUTUwgMS4wIFN0cmljdC8vRU4iDQorICAgICJodHRwOi8vd3d3LnczLm9yZy9UUi94aHRtbDEvRFREL3hodG1sMS1zdHJpY3QuZHRkIj4NCis8aHRtbCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCI+DQorPGhlYWQ+DQorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9SVNPLTg4NTktMSIvPg0KKzx0aXRsZT5BYm91dDwvdGl0bGU+DQorPC9oZWFkPg0KKzxib2R5IGxhbmc9IkVOLVVTIj4NCis8aDI+QWJvdXQgVGhpcyBDb250ZW50PC9oMj4NCisgDQorPHA+SnVuZSA1LCAyMDA3PC9wPgkNCis8aDM+TGljZW5zZTwvaDM+DQorDQorPHA+VGhlIEVjbGlwc2UgRm91bmRhdGlvbiBtYWtlcyBhdmFpbGFibGUgYWxsIGNvbnRlbnQgaW4gdGhpcyBwbHVnLWluICgmcXVvdDtDb250ZW50JnF1b3Q7KS4gIFVubGVzcyBvdGhlcndpc2UgDQoraW5kaWNhdGVkIGJlbG93LCB0aGUgQ29udGVudCBpcyBwcm92aWRlZCB0byB5b3UgdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZQ0KK0VjbGlwc2UgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAxLjAgKCZxdW90O0VQTCZxdW90OykuICBBIGNvcHkgb2YgdGhlIEVQTCBpcyBhdmFpbGFibGUgDQorYXQgPGEgaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwiPmh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sPC9hPi4NCitGb3IgcHVycG9zZXMgb2YgdGhlIEVQTCwgJnF1b3Q7UHJvZ3JhbSZxdW90OyB3aWxsIG1lYW4gdGhlIENvbnRlbnQuPC9wPg0KKw0KKzxwPklmIHlvdSBkaWQgbm90IHJlY2VpdmUgdGhpcyBDb250ZW50IGRpcmVjdGx5IGZyb20gdGhlIEVjbGlwc2UgRm91bmRhdGlvbiwgdGhlIENvbnRlbnQgaXMgDQorYmVpbmcgcmVkaXN0cmlidXRlZCBieSBhbm90aGVyIHBhcnR5ICgmcXVvdDtSZWRpc3RyaWJ1dG9yJnF1b3Q7KSBhbmQgZGlmZmVyZW50IHRlcm1zIGFuZCBjb25kaXRpb25zIG1heQ0KK2FwcGx5IHRvIHlvdXIgdXNlIG9mIGFueSBvYmplY3QgY29kZSBpbiB0aGUgQ29udGVudC4gIENoZWNrIHRoZSBSZWRpc3RyaWJ1dG9yJ3MgbGljZW5zZSB0aGF0IHdhcyANCitwcm92aWRlZCB3aXRoIHRoZSBDb250ZW50LiAgSWYgbm8gc3VjaCBsaWNlbnNlIGV4aXN0cywgY29udGFjdCB0aGUgUmVkaXN0cmlidXRvci4gIFVubGVzcyBvdGhlcndpc2UNCitpbmRpY2F0ZWQgYmVsb3csIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgRVBMIHN0aWxsIGFwcGx5IHRvIGFueSBzb3VyY2UgY29kZSBpbiB0aGUgQ29udGVudA0KK2FuZCBzdWNoIHNvdXJjZSBjb2RlIG1heSBiZSBvYnRhaW5lZCBhdCA8YSBocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnLyI+aHR0cDovL3d3dy5lY2xpcHNlLm9yZzwvYT4uPC9wPg0KKw0KKzwvYm9keT4NCis8L2h0bWw+DQpkaWZmIC0tZ2l0IGEvZGlhZ3JhbS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGlhZ3JhbS5yZXF1aXJlbWVudC9idWlsZC5wcm9wZXJ0aWVzIGIvZGlhZ3JhbS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGlhZ3JhbS5yZXF1aXJlbWVudC9idWlsZC5wcm9wZXJ0aWVzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg5ZmRiY2YKLS0tIC9kZXYvbnVsbAorKysgYi9kaWFncmFtL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kaWFncmFtLnJlcXVpcmVtZW50L2J1aWxkLnByb3BlcnRpZXMKQEAgLTAsMCArMSw4IEBACitzb3VyY2UuLiA9IHNyYy8NCitvdXRwdXQuLiA9IGJpbi8NCitiaW4uaW5jbHVkZXMgPSBNRVRBLUlORi8sXA0KKyAgICAgICAgICAgICAgIC4sXA0KKyAgICAgICAgICAgICAgIHBsdWdpbi54bWwsXA0KKyAgICAgICAgICAgICAgIGFib3V0Lmh0bWwsXA0KKyAgICAgICAgICAgICAgIHJlc291cmNlcy8NCitzcmMuaW5jbHVkZXMgPSBhYm91dC5odG1sDQpkaWZmIC0tZ2l0IGEvZGlhZ3JhbS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGlhZ3JhbS5yZXF1aXJlbWVudC9wbHVnaW4ucHJvcGVydGllcyBiL2RpYWdyYW0vb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRpYWdyYW0ucmVxdWlyZW1lbnQvcGx1Z2luLnByb3BlcnRpZXMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzI4ZGM3NwotLS0gL2Rldi9udWxsCisrKyBiL2RpYWdyYW0vb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRpYWdyYW0ucmVxdWlyZW1lbnQvcGx1Z2luLnByb3BlcnRpZXMKQEAgLTAsMCArMSwxNSBAQAorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQorIyBDb3B5cmlnaHQgKGMpIDIwMTUgQ0VBIExJU1QuDQorIyBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQorIyBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCisjIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQorIyBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyMNCisjIENvbnRyaWJ1dG9yczoNCisjICAgICBCZW5vaXQgTWFnZ2kgKENFQSBMSVNUKSBiZW5vaXQubWFnZ2lAY2VhLmZyIC0gaW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uDQorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KK3BsdWdpbk5hbWU9b3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRpYWdyYW0ucmVxdWlyZW1lbnQNCitwbHVnaW5EZXNjcmlwdGlvbj1UaGlzIHBsdWctaW4gY29udGFpbnMgdGhlIHJlcXVpcmVtZW50IGRpYWdyYW0gb2YgU3lzTUwgMS40DQorcHJvdmlkZXJOYW1lPUVjbGlwc2UgTW9kZWxpbmcgUHJvamVjdA0KKw0KKw0KZGlmZiAtLWdpdCBhL2RpYWdyYW0vb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRpYWdyYW0ucmVxdWlyZW1lbnQvcGx1Z2luLnhtbCBiL2RpYWdyYW0vb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRpYWdyYW0ucmVxdWlyZW1lbnQvcGx1Z2luLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iODFmNmMyCi0tLSAvZGV2L251bGwKKysrIGIvZGlhZ3JhbS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGlhZ3JhbS5yZXF1aXJlbWVudC9wbHVnaW4ueG1sCkBAIC0wLDAgKzEsMjQgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+DQorPD9lY2xpcHNlIHZlcnNpb249IjMuNCI/Pg0KKzwhLS0NCisgIENvcHlyaWdodCAoYykgMjAxNSBDRUEgTElTVC4NCisgDQorICBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQorICBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCisgIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQorICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyANCisgIENvbnRyaWJ1dG9yczoNCisgIEJlbm9pdCBNYWdnaSAoQ0VBIExJU1QpIGJlbm9pdC5tYWdnaUBjZWEuZnIgLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24NCistLT4NCisNCis8cGx1Z2luPg0KKyAgIDxleHRlbnNpb24NCisgICAgICAgICBwb2ludD0ib3JnLmVjbGlwc2UucGFweXJ1cy5pbmZyYS52aWV3cG9pbnRzLnBvbGljeS5jdXN0b20iPg0KKyAgICAgIDxjb250cmlidXRpb24NCisgICAgICAgICAgICBmaWxlPSJyZXNvdXJjZXMvY29uZmlndXJhdGlvbi9SZXF1aXJlbWVudERpYWdyYW0uY29uZmlndXJhdGlvbiINCisgICAgICAgICAgICBvcmlnaW5hbD0icGxhdGZvcm06L3BsdWdpbi9vcmcuZWNsaXBzZS5wYXB5cnVzLmluZnJhLnZpZXdwb2ludHMucG9saWN5L2J1aWx0aW4vZGVmYXVsdC5jb25maWd1cmF0aW9uIj4NCisgICAgICA8L2NvbnRyaWJ1dGlvbj4NCisgICA8L2V4dGVuc2lvbj4NCisNCis8L3BsdWdpbj4NCmRpZmYgLS1naXQgYS9kaWFncmFtL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kaWFncmFtLnJlcXVpcmVtZW50L3BvbS54bWwgYi9kaWFncmFtL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kaWFncmFtLnJlcXVpcmVtZW50L3BvbS54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjk2ZDM1MAotLS0gL2Rldi9udWxsCisrKyBiL2RpYWdyYW0vb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRpYWdyYW0ucmVxdWlyZW1lbnQvcG9tLnhtbApAQCAtMCwwICsxLDExIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/Pg0KKzxwcm9qZWN0Pg0KKwk8bW9kZWxWZXJzaW9uPjQuMC4wPC9tb2RlbFZlcnNpb24+DQorCTxwYXJlbnQ+DQorCQk8Z3JvdXBJZD5vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sPC9ncm91cElkPgkNCisJCTxhcnRpZmFjdElkPm9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwuZGlhZ3JhbTwvYXJ0aWZhY3RJZD4NCisJCTx2ZXJzaW9uPjAuNy4wLVNOQVBTSE9UPC92ZXJzaW9uPg0KKwk8L3BhcmVudD4NCisJPGFydGlmYWN0SWQ+b3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRpYWdyYW0ucmVxdWlyZW1lbnQ8L2FydGlmYWN0SWQ+DQorCTxwYWNrYWdpbmc+ZWNsaXBzZS1wbHVnaW48L3BhY2thZ2luZz4NCis8L3Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZGlhZ3JhbS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGlhZ3JhbS5yZXF1aXJlbWVudC9yZXNvdXJjZXMvY29uZmlndXJhdGlvbi9SZXF1aXJlbWVudERpYWdyYW0uY29uZmlndXJhdGlvbiBiL2RpYWdyYW0vb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRpYWdyYW0ucmVxdWlyZW1lbnQvcmVzb3VyY2VzL2NvbmZpZ3VyYXRpb24vUmVxdWlyZW1lbnREaWFncmFtLmNvbmZpZ3VyYXRpb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2QxYWUwNgotLS0gL2Rldi9udWxsCisrKyBiL2RpYWdyYW0vb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRpYWdyYW0ucmVxdWlyZW1lbnQvcmVzb3VyY2VzL2NvbmZpZ3VyYXRpb24vUmVxdWlyZW1lbnREaWFncmFtLmNvbmZpZ3VyYXRpb24KQEAgLTAsMCArMSwxOSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4NCis8Y29uZmlndXJhdGlvbjpQYXB5cnVzQ29uZmlndXJhdGlvbiB4bWk6dmVyc2lvbj0iMi4wIiB4bWxuczp4bWk9Imh0dHA6Ly93d3cub21nLm9yZy9YTUkiIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIHhtbG5zOmNvbmZpZ3VyYXRpb249Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvcGFweXJ1cy9pbmZyYS92aWV3cG9pbnRzL2NvbmZpZ3VyYXRpb24iIHhtaTppZD0iX2tvMDdJRXJiRWVTZFFLelNSYXRCamciPg0KKyAgPHZpZXdwb2ludHMgeHNpOnR5cGU9ImNvbmZpZ3VyYXRpb246UGFweXJ1c1ZpZXdwb2ludCIgeG1pOmlkPSJfeG9nZG9FcmJFZVNkUUt6U1JhdEJqZyIgbmFtZT0iRGVmYXVsdCBQYXB5cnVzIFZpZXdwb2ludCI+DQorICAgIDxtb2RlbEtpbmRzIHhzaTp0eXBlPSJjb25maWd1cmF0aW9uOlBhcHlydXNEaWFncmFtIiB4bWk6aWQ9Il9ackJmNEphQkVlUzhlTnZTd0QwbGdBIiBuYW1lPSJTeXNNTCAxLjQgUmVxdWlyZW1lbnQiIGljb249InBsYXRmb3JtOi9wbHVnaW4vb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbC5kaWFncmFtLnJlcXVpcmVtZW50L2ljb25zL29iajE2L0RpYWdyYW1fUmVxdWlyZW1lbnQuZ2lmIiBpbXBsZW1lbnRhdGlvbklEPSJQYXB5cnVzVU1MQ2xhc3NEaWFncmFtIiBjYXRlZ29yaWVzPSJfbGZ0aFlNeWtFZVN1WWJQZFp3V2x5dyIgY3VzdG9tUGFsZXR0ZT0icGxhdGZvcm06L3BsdWdpbi9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGlhZ3JhbS5yZXF1aXJlbWVudC9yZXNvdXJjZXMvcGFsZXR0ZS9yZXF1aXJlbWVudERpYWdyYW0ucGFsZXR0ZWNvbmZpZ3VyYXRpb24iIGN1c3RvbVN0eWxlPSJwbGF0Zm9ybTovcGx1Z2luL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kaWFncmFtLnJlcXVpcmVtZW50L3Jlc291cmNlcy9zdHlsZS9yZXF1aXJlbWVudGRpYWdyYW0uY3NzIj4NCisgICAgICA8cHJvZmlsZXMgaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9wYXB5cnVzLzEuNC9TeXNNTCMvIi8+DQorICAgICAgPG1vZGVsUnVsZXMgeG1pOmlkPSJfWnJCZjRaYUJFZVM4ZU52U3dEMGxnQSI+DQorICAgICAgICA8ZWxlbWVudCBocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3VtbDIvNS4wLjAvVU1MIy8vUGFja2FnZSIvPg0KKyAgICAgIDwvbW9kZWxSdWxlcz4NCisgICAgICA8b3duaW5nUnVsZXMgeG1pOmlkPSJfWnJCZjQ1YUJFZVM4ZU52U3dEMGxnQSI+DQorICAgICAgICA8ZWxlbWVudCBocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3VtbDIvNS4wLjAvVU1MIy8vUGFja2FnZSIvPg0KKyAgICAgIDwvb3duaW5nUnVsZXM+DQorICAgICAgPGNoaWxkUnVsZXMgeG1pOmlkPSJfWnJCZjVaYUJFZVM4ZU52U3dEMGxnQSIvPg0KKyAgICAgIDxwYWxldHRlUnVsZXMgeG1pOmlkPSJfUWRweUFLSmhFZVMzUnNyUkVOUVlpUSIgcGVybWl0PSJmYWxzZSIgZWxlbWVudD0iY2xhenouZ3JvdXAuKiIvPg0KKyAgICA8L21vZGVsS2luZHM+DQorICA8L3ZpZXdwb2ludHM+DQorICA8ZGVmYXVsdFN0YWtlaG9sZGVyIGhyZWY9InBsYXRmb3JtOi9wbHVnaW4vb3JnLmVjbGlwc2UucGFweXJ1cy5pbmZyYS52aWV3cG9pbnRzLnBvbGljeS9idWlsdGluL2RlZmF1bHQuY29uZmlndXJhdGlvbiNfN3dMbWtkeGhFZU9xSHZSeWlOODdoQSIvPg0KKyAgPG1ldGFtb2RlbCBocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3VtbDIvNS4wLjAvVU1MIy8iLz4NCisgIDxjYXRlZ29yaWVzIHhtaTppZD0iX2xmdGhZTXlrRWVTdVliUGRad1dseXciIG5hbWU9IlN5c01MMTQiLz4NCis8L2NvbmZpZ3VyYXRpb246UGFweXJ1c0NvbmZpZ3VyYXRpb24+DQpkaWZmIC0tZ2l0IGEvZGlhZ3JhbS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGlhZ3JhbS5yZXF1aXJlbWVudC9yZXNvdXJjZXMvcGFsZXR0ZS9yZXF1aXJlbWVudERpYWdyYW0ucGFsZXR0ZWNvbmZpZ3VyYXRpb24gYi9kaWFncmFtL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kaWFncmFtLnJlcXVpcmVtZW50L3Jlc291cmNlcy9wYWxldHRlL3JlcXVpcmVtZW50RGlhZ3JhbS5wYWxldHRlY29uZmlndXJhdGlvbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZDdjNTVjCi0tLSAvZGV2L251bGwKKysrIGIvZGlhZ3JhbS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGlhZ3JhbS5yZXF1aXJlbWVudC9yZXNvdXJjZXMvcGFsZXR0ZS9yZXF1aXJlbWVudERpYWdyYW0ucGFsZXR0ZWNvbmZpZ3VyYXRpb24KQEAgLTAsMCArMSw2NjUgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IkFTQ0lJIj8+DQorPHBhbGV0dGVjb25maWd1cmF0aW9uOlBhbGV0dGVDb25maWd1cmF0aW9uDQorICAgIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiDQorICAgIHhtbG5zOnBhbGV0dGVjb25maWd1cmF0aW9uPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3BhcHlydXMvZGlhZ3JhbS9wYWxldHRlY29uZmlndXJhdGlvbi8wLjciDQorICAgIGlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLnJlcS5wYWxldHRlLm1vZGVsIg0KKyAgICBsYWJlbD0iU3lzTUwgUkVRIFBhbGV0dGUiPg0KKyAgPGRyYXdlckNvbmZpZ3VyYXRpb25zDQorICAgICAgaWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwucmVxLnBhbGV0dGUubm9kZSINCisgICAgICBsYWJlbD0iTm9kZXMiDQorICAgICAgZGVzY3JpcHRpb249Ik5vZGVzIj4NCisgICAgPG93bmVkQ29uZmlndXJhdGlvbnMNCisgICAgICAgIHhzaTp0eXBlPSJwYWxldHRlY29uZmlndXJhdGlvbjpUb29sQ29uZmlndXJhdGlvbiINCisgICAgICAgIGlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLnJlcS5wYWxldHRlLm5vZGUuQ29tbWVudCINCisgICAgICAgIGxhYmVsPSJDb21tZW50Ig0KKyAgICAgICAgZGVzY3JpcHRpb249IkNyZWF0ZSBhIGNvbW1lbnQiPg0KKyAgICAgIDxpY29uDQorICAgICAgICAgIHBsdWdpbklEPSJvcmcuZWNsaXBzZS51bWwyLnVtbC5lZGl0Ig0KKyAgICAgICAgICBpY29uUGF0aD0iaWNvbnMvZnVsbC9vYmoxNi9Db21tZW50LmdpZiIvPg0KKyAgICAgIDxlbGVtZW50RGVzY3JpcHRvcnMNCisgICAgICAgICAgZWxlbWVudFR5cGVJZD0ib3JnLmVjbGlwc2UucGFweXJ1cy51bWwuZGlhZ3JhbS5jbGF6ei5Db21tZW50XzIwMTIiLz4NCisgICAgICA8ZWxlbWVudERlc2NyaXB0b3JzDQorICAgICAgICAgIGVsZW1lbnRUeXBlSWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMudW1sLmRpYWdyYW0uY2xhenouQ29tbWVudF8zMDI4Ii8+DQorICAgIDwvb3duZWRDb25maWd1cmF0aW9ucz4NCisgICAgPG93bmVkQ29uZmlndXJhdGlvbnMNCisgICAgICAgIHhzaTp0eXBlPSJwYWxldHRlY29uZmlndXJhdGlvbjpUb29sQ29uZmlndXJhdGlvbiINCisgICAgICAgIGlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLnJlcS5wYWxldHRlLm5vZGUuQ29uc3RyYWludCINCisgICAgICAgIGxhYmVsPSJDb25zdHJhaW50Ig0KKyAgICAgICAgZGVzY3JpcHRpb249IkNyZWF0ZSBhIGNvbnN0cmFpbnQiPg0KKyAgICAgIDxpY29uDQorICAgICAgICAgIHBsdWdpbklEPSJvcmcuZWNsaXBzZS51bWwyLnVtbC5lZGl0Ig0KKyAgICAgICAgICBpY29uUGF0aD0iaWNvbnMvZnVsbC9vYmoxNi9Db25zdHJhaW50LmdpZiIvPg0KKyAgICAgIDxlbGVtZW50RGVzY3JpcHRvcnMNCisgICAgICAgICAgZWxlbWVudFR5cGVJZD0ib3JnLmVjbGlwc2UucGFweXJ1cy51bWwuZGlhZ3JhbS5jbGF6ei5Db25zdHJhaW50XzIwMTEiLz4NCisgICAgICA8ZWxlbWVudERlc2NyaXB0b3JzDQorICAgICAgICAgIGVsZW1lbnRUeXBlSWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMudW1sLmRpYWdyYW0uY2xhenouQ29uc3RyYWludF8zMDI5Ii8+DQorICAgICAgPGVsZW1lbnREZXNjcmlwdG9ycw0KKyAgICAgICAgICBlbGVtZW50VHlwZUlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLkNvbnN0cmFpbnRfTGFiZWwiLz4NCisgICAgPC9vd25lZENvbmZpZ3VyYXRpb25zPg0KKyAgICA8b3duZWRDb25maWd1cmF0aW9ucw0KKyAgICAgICAgeHNpOnR5cGU9InBhbGV0dGVjb25maWd1cmF0aW9uOlRvb2xDb25maWd1cmF0aW9uIg0KKyAgICAgICAgaWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwucmVxLnBhbGV0dGUubm9kZS5FbGVtZW50R3JvdXAiDQorICAgICAgICBsYWJlbD0iRWxlbWVudEdyb3VwIg0KKyAgICAgICAgZGVzY3JpcHRpb249IkNyZWF0ZSBhIEVsZW1lbnRHcm91cCI+DQorICAgICAgPGljb24NCisgICAgICAgICAgcGx1Z2luSUQ9Im9yZy5lY2xpcHNlLnVtbDIudW1sLmVkaXQiDQorICAgICAgICAgIGljb25QYXRoPSJpY29ucy9mdWxsL29iajE2L0NvbW1lbnQuZ2lmIi8+DQorICAgICAgPGVsZW1lbnREZXNjcmlwdG9ycw0KKyAgICAgICAgICBlbGVtZW50VHlwZUlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLkVsZW1lbnRHcm91cF8yMDEyIi8+DQorICAgICAgPGVsZW1lbnREZXNjcmlwdG9ycw0KKyAgICAgICAgICBlbGVtZW50VHlwZUlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLkVsZW1lbnRHcm91cF8zMDI4Ii8+DQorICAgIDwvb3duZWRDb25maWd1cmF0aW9ucz4NCisgICAgPG93bmVkQ29uZmlndXJhdGlvbnMNCisgICAgICAgIHhzaTp0eXBlPSJwYWxldHRlY29uZmlndXJhdGlvbjpUb29sQ29uZmlndXJhdGlvbiINCisgICAgICAgIGlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLnJlcS5wYWxldHRlLm5vZGUuUGFja2FnZSINCisgICAgICAgIGxhYmVsPSJQYWNrYWdlIg0KKyAgICAgICAgZGVzY3JpcHRpb249IkNyZWF0ZSBhIHBhY2thZ2UiPg0KKyAgICAgIDxpY29uDQorICAgICAgICAgIHBsdWdpbklEPSJvcmcuZWNsaXBzZS51bWwyLnVtbC5lZGl0Ig0KKyAgICAgICAgICBpY29uUGF0aD0iaWNvbnMvZnVsbC9vYmoxNi9QYWNrYWdlLmdpZiIvPg0KKyAgICAgIDxlbGVtZW50RGVzY3JpcHRvcnMNCisgICAgICAgICAgZWxlbWVudFR5cGVJZD0ib3JnLmVjbGlwc2UucGFweXJ1cy51bWwuZGlhZ3JhbS5jbGF6ei5QYWNrYWdlXzIwMDciLz4NCisgICAgICA8ZWxlbWVudERlc2NyaXB0b3JzDQorICAgICAgICAgIGVsZW1lbnRUeXBlSWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMudW1sLmRpYWdyYW0uY2xhenouUGFja2FnZV8zMDA5Ii8+DQorICAgIDwvb3duZWRDb25maWd1cmF0aW9ucz4NCisgICAgPG93bmVkQ29uZmlndXJhdGlvbnMNCisgICAgICAgIHhzaTp0eXBlPSJwYWxldHRlY29uZmlndXJhdGlvbjpUb29sQ29uZmlndXJhdGlvbiINCisgICAgICAgIGlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLnJlcS5wYWxldHRlLm5vZGUuUHJvYmxlbSINCisgICAgICAgIGxhYmVsPSJQcm9ibGVtIg0KKyAgICAgICAgZGVzY3JpcHRpb249IkNyZWF0ZSBhIFByb2JsZW0iPg0KKyAgICAgIDxpY29uDQorICAgICAgICAgIHBsdWdpbklEPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sIg0KKyAgICAgICAgICBpY29uUGF0aD0iaWNvbnMvbW9kZWxlbGVtZW50cy9Qcm9ibGVtLmdpZiIvPg0KKyAgICAgIDxlbGVtZW50RGVzY3JpcHRvcnMNCisgICAgICAgICAgZWxlbWVudFR5cGVJZD0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5Qcm9ibGVtXzIwMTIiLz4NCisgICAgICA8ZWxlbWVudERlc2NyaXB0b3JzDQorICAgICAgICAgIGVsZW1lbnRUeXBlSWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuUHJvYmxlbV8zMDI4Ii8+DQorICAgIDwvb3duZWRDb25maWd1cmF0aW9ucz4NCisgICAgPG93bmVkQ29uZmlndXJhdGlvbnMNCisgICAgICAgIHhzaTp0eXBlPSJwYWxldHRlY29uZmlndXJhdGlvbjpUb29sQ29uZmlndXJhdGlvbiINCisgICAgICAgIGlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLnJlcS5wYWxldHRlLm5vZGUuUmF0aW9uYWxlIg0KKyAgICAgICAgbGFiZWw9IlJhdGlvbmFsZSINCisgICAgICAgIGRlc2NyaXB0aW9uPSJDcmVhdGUgYSBSYXRpb25hbGUiPg0KKyAgICAgIDxpY29uDQorICAgICAgICAgIHBsdWdpbklEPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sIg0KKyAgICAgICAgICBpY29uUGF0aD0iaWNvbnMvbW9kZWxlbGVtZW50cy9SYXRpb25hbGUuZ2lmIi8+DQorICAgICAgPGVsZW1lbnREZXNjcmlwdG9ycw0KKyAgICAgICAgICBlbGVtZW50VHlwZUlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLlJhdGlvbmFsZV8yMDEyIi8+DQorICAgICAgPGVsZW1lbnREZXNjcmlwdG9ycw0KKyAgICAgICAgICBlbGVtZW50VHlwZUlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLlJhdGlvbmFsZV8zMDI4Ii8+DQorICAgIDwvb3duZWRDb25maWd1cmF0aW9ucz4NCisgICAgPG93bmVkQ29uZmlndXJhdGlvbnMNCisgICAgICAgIHhzaTp0eXBlPSJwYWxldHRlY29uZmlndXJhdGlvbjpUb29sQ29uZmlndXJhdGlvbiINCisgICAgICAgIGlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLnJlcS5wYWxldHRlLm5vZGUuUmVxdWlyZW1lbnQiDQorICAgICAgICBsYWJlbD0iUmVxdWlyZW1lbnQiDQorICAgICAgICBkZXNjcmlwdGlvbj0iQ3JlYXRlIGEgUmVxdWlyZW1lbnQiPg0KKyAgICAgIDxpY29uDQorICAgICAgICAgIHBsdWdpbklEPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sIg0KKyAgICAgICAgICBpY29uUGF0aD0iaWNvbnMvcmVxdWlyZW1lbnRzL1JlcXVpcmVtZW50LmdpZiIvPg0KKyAgICAgIDxlbGVtZW50RGVzY3JpcHRvcnMNCisgICAgICAgICAgZWxlbWVudFR5cGVJZD0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5SZXF1aXJlbWVudF8yMDA4Ii8+DQorICAgICAgPGVsZW1lbnREZXNjcmlwdG9ycw0KKyAgICAgICAgICBlbGVtZW50VHlwZUlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLlJlcXVpcmVtZW50XzMwMDQiLz4NCisgICAgICA8ZWxlbWVudERlc2NyaXB0b3JzDQorICAgICAgICAgIGVsZW1lbnRUeXBlSWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuUmVxdWlyZW1lbnRfMzAwOCIvPg0KKyAgICAgIDxlbGVtZW50RGVzY3JpcHRvcnMNCisgICAgICAgICAgZWxlbWVudFR5cGVJZD0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5SZXF1aXJlbWVudF8zMDEwIi8+DQorICAgICAgPGVsZW1lbnREZXNjcmlwdG9ycw0KKyAgICAgICAgICBlbGVtZW50VHlwZUlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLlJlcXVpcmVtZW50XzMwMTQiLz4NCisgICAgPC9vd25lZENvbmZpZ3VyYXRpb25zPg0KKyAgICA8b3duZWRDb25maWd1cmF0aW9ucw0KKyAgICAgICAgeHNpOnR5cGU9InBhbGV0dGVjb25maWd1cmF0aW9uOlRvb2xDb25maWd1cmF0aW9uIg0KKyAgICAgICAgaWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwucmVxLnBhbGV0dGUubm9kZS5UZXN0Q2FzZV9PcGVyYXRpb24iDQorICAgICAgICBsYWJlbD0iVGVzdENhc2UiDQorICAgICAgICBkZXNjcmlwdGlvbj0iQ3JlYXRlIGEgVGVzdENhc2UiPg0KKyAgICAgIDxpY29uDQorICAgICAgICAgIHBsdWdpbklEPSJvcmcuZWNsaXBzZS51bWwyLnVtbC5lZGl0Ig0KKyAgICAgICAgICBpY29uUGF0aD0iaWNvbnMvZnVsbC9vYmoxNi9PcGVyYXRpb24uZ2lmIi8+DQorICAgICAgPGVsZW1lbnREZXNjcmlwdG9ycw0KKyAgICAgICAgICBlbGVtZW50VHlwZUlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLlRlc3RDYXNlX09wZXJhdGlvbl8zMDAzIi8+DQorICAgICAgPGVsZW1lbnREZXNjcmlwdG9ycw0KKyAgICAgICAgICBlbGVtZW50VHlwZUlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLlRlc3RDYXNlX09wZXJhdGlvbl8zMDA3Ii8+DQorICAgICAgPGVsZW1lbnREZXNjcmlwdG9ycw0KKyAgICAgICAgICBlbGVtZW50VHlwZUlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLlRlc3RDYXNlX09wZXJhdGlvbl8zMDEzIi8+DQorICAgICAgPGVsZW1lbnREZXNjcmlwdG9ycw0KKyAgICAgICAgICBlbGVtZW50VHlwZUlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLlRlc3RDYXNlX09wZXJhdGlvbl8zMDE5Ii8+DQorICAgICAgPGVsZW1lbnREZXNjcmlwdG9ycw0KKyAgICAgICAgICBlbGVtZW50VHlwZUlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLlRlc3RDYXNlX09wZXJhdGlvbl8zMDQyIi8+DQorICAgIDwvb3duZWRDb25maWd1cmF0aW9ucz4NCisgICAgPG93bmVkQ29uZmlndXJhdGlvbnMNCisgICAgICAgIHhzaTp0eXBlPSJwYWxldHRlY29uZmlndXJhdGlvbjpUb29sQ29uZmlndXJhdGlvbiINCisgICAgICAgIGlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLnJlcS5wYWxldHRlLm5vZGUuVmlld19QYWNrYWdlIg0KKyAgICAgICAgbGFiZWw9IlZpZXciDQorICAgICAgICBkZXNjcmlwdGlvbj0iQ3JlYXRlIGEgVmlldyI+DQorICAgICAgPGljb24NCisgICAgICAgICAgcGx1Z2luSUQ9Im9yZy5lY2xpcHNlLnVtbDIudW1sLmVkaXQiDQorICAgICAgICAgIGljb25QYXRoPSJpY29ucy9mdWxsL29iajE2L1BhY2thZ2UuZ2lmIi8+DQorICAgICAgPGVsZW1lbnREZXNjcmlwdG9ycw0KKyAgICAgICAgICBlbGVtZW50VHlwZUlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLlZpZXdfUGFja2FnZV8yMDA3Ii8+DQorICAgICAgPGVsZW1lbnREZXNjcmlwdG9ycw0KKyAgICAgICAgICBlbGVtZW50VHlwZUlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLlZpZXdfUGFja2FnZV8zMDA5Ii8+DQorICAgIDwvb3duZWRDb25maWd1cmF0aW9ucz4NCisgICAgPG93bmVkQ29uZmlndXJhdGlvbnMNCisgICAgICAgIHhzaTp0eXBlPSJwYWxldHRlY29uZmlndXJhdGlvbjpUb29sQ29uZmlndXJhdGlvbiINCisgICAgICAgIGlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLnJlcS5wYWxldHRlLm5vZGUuVmlld19DbGFzcyINCisgICAgICAgIGxhYmVsPSJWaWV3IENsYXNzIg0KKyAgICAgICAgZGVzY3JpcHRpb249IkNyZWF0ZSBhIFZpZXcgQ2xhc3MiPg0KKyAgICAgIDxpY29uDQorICAgICAgICAgIHBsdWdpbklEPSJvcmcuZWNsaXBzZS51bWwyLnVtbC5lZGl0Ig0KKyAgICAgICAgICBpY29uUGF0aD0iaWNvbnMvZnVsbC9vYmoxNi9DbGFzcy5naWYiLz4NCisgICAgICA8ZWxlbWVudERlc2NyaXB0b3JzDQorICAgICAgICAgIGVsZW1lbnRUeXBlSWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuVmlld19DbGFzc18yMDA4Ii8+DQorICAgICAgPGVsZW1lbnREZXNjcmlwdG9ycw0KKyAgICAgICAgICBlbGVtZW50VHlwZUlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLlZpZXdfQ2xhc3NfMzAwNCIvPg0KKyAgICAgIDxlbGVtZW50RGVzY3JpcHRvcnMNCisgICAgICAgICAgZWxlbWVudFR5cGVJZD0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5WaWV3X0NsYXNzXzMwMDgiLz4NCisgICAgICA8ZWxlbWVudERlc2NyaXB0b3JzDQorICAgICAgICAgIGVsZW1lbnRUeXBlSWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuVmlld19DbGFzc18zMDEwIi8+DQorICAgICAgPGVsZW1lbnREZXNjcmlwdG9ycw0KKyAgICAgICAgICBlbGVtZW50VHlwZUlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLlZpZXdfQ2xhc3NfMzAxNCIvPg0KKyAgICA8L293bmVkQ29uZmlndXJhdGlvbnM+DQorICAgIDxvd25lZENvbmZpZ3VyYXRpb25zDQorICAgICAgICB4c2k6dHlwZT0icGFsZXR0ZWNvbmZpZ3VyYXRpb246VG9vbENvbmZpZ3VyYXRpb24iDQorICAgICAgICBpZD0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5yZXEucGFsZXR0ZS5ub2RlLlZpZXdQb2ludCINCisgICAgICAgIGxhYmVsPSJWaWV3UG9pbnQiDQorICAgICAgICBkZXNjcmlwdGlvbj0iQ3JlYXRlIGEgVmlld1BvaW50Ij4NCisgICAgICA8aWNvbg0KKyAgICAgICAgICBwbHVnaW5JRD0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbC5lZGl0Ig0KKyAgICAgICAgICBpY29uUGF0aD0iaWNvbnMvZnVsbC9vYmoxNi9WaWV3UG9pbnQuZ2lmIi8+DQorICAgICAgPGVsZW1lbnREZXNjcmlwdG9ycw0KKyAgICAgICAgICBlbGVtZW50VHlwZUlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLlZpZXdQb2ludF8yMDA4Ii8+DQorICAgICAgPGVsZW1lbnREZXNjcmlwdG9ycw0KKyAgICAgICAgICBlbGVtZW50VHlwZUlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLlZpZXdQb2ludF8zMDA0Ii8+DQorICAgICAgPGVsZW1lbnREZXNjcmlwdG9ycw0KKyAgICAgICAgICBlbGVtZW50VHlwZUlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLlZpZXdQb2ludF8zMDA4Ii8+DQorICAgICAgPGVsZW1lbnREZXNjcmlwdG9ycw0KKyAgICAgICAgICBlbGVtZW50VHlwZUlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLlZpZXdQb2ludF8zMDEwIi8+DQorICAgICAgPGVsZW1lbnREZXNjcmlwdG9ycw0KKyAgICAgICAgICBlbGVtZW50VHlwZUlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLlZpZXdQb2ludF8zMDE0Ii8+DQorICAgIDwvb3duZWRDb25maWd1cmF0aW9ucz4NCisgIDwvZHJhd2VyQ29uZmlndXJhdGlvbnM+DQorICA8ZHJhd2VyQ29uZmlndXJhdGlvbnMNCisgICAgICBpZD0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5yZXEucGFsZXR0ZS5lZGdlIg0KKyAgICAgIGxhYmVsPSJFZGdlcyINCisgICAgICBkZXNjcmlwdGlvbj0iRWRnZXMiPg0KKyAgICA8b3duZWRDb25maWd1cmF0aW9ucw0KKyAgICAgICAgeHNpOnR5cGU9InBhbGV0dGVjb25maWd1cmF0aW9uOlRvb2xDb25maWd1cmF0aW9uIg0KKyAgICAgICAgaWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwucmVxLnBhbGV0dGUuZWRnZS5Db3B5X0Fic3RyYWN0aW9uIg0KKyAgICAgICAgbGFiZWw9IkNvcHkiDQorICAgICAgICBkZXNjcmlwdGlvbj0iQ3JlYXRlIGEgQ29weSINCisgICAgICAgIGtpbmQ9IkNvbm5lY3Rpb25Ub29sIj4NCisgICAgICA8aWNvbg0KKyAgICAgICAgICBwbHVnaW5JRD0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbCINCisgICAgICAgICAgaWNvblBhdGg9Imljb25zL3JlcXVpcmVtZW50cy9Db3B5LmdpZiIvPg0KKyAgICAgIDxlbGVtZW50RGVzY3JpcHRvcnMNCisgICAgICAgICAgZWxlbWVudFR5cGVJZD0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5Db3B5X0Fic3RyYWN0aW9uXzQwMDYiLz4NCisgICAgPC9vd25lZENvbmZpZ3VyYXRpb25zPg0KKyAgICA8b3duZWRDb25maWd1cmF0aW9ucw0KKyAgICAgICAgeHNpOnR5cGU9InBhbGV0dGVjb25maWd1cmF0aW9uOlRvb2xDb25maWd1cmF0aW9uIg0KKyAgICAgICAgaWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwucmVxLnBhbGV0dGUuZWRnZS5Db250YWlubWVudExpbmsiDQorICAgICAgICBsYWJlbD0iQ29udGFpbm1lbnQgTGluayINCisgICAgICAgIGRlc2NyaXB0aW9uPSJDcmVhdGUgYSBDb250YWlubWVudCBMaW5rIg0KKyAgICAgICAga2luZD0iQ29ubmVjdGlvblRvb2wiPg0KKyAgICAgIDxpY29uDQorICAgICAgICAgIHBsdWdpbklEPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnVtbC5kaWFncmFtLmNsYXp6Ig0KKyAgICAgICAgICBpY29uUGF0aD0iL2ljb25zL29iajE2L0NvbnRhaW5tZW50Q29ubmVjdGlvbi5naWYiLz4NCisgICAgICA8ZWxlbWVudERlc2NyaXB0b3JzDQorICAgICAgICAgIGVsZW1lbnRUeXBlSWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMudW1sLmRpYWdyYW0uY2xhenouQ29udGFpbm1lbnRMaW5rXzQwMjMiLz4NCisgICAgPC9vd25lZENvbmZpZ3VyYXRpb25zPg0KKyAgICA8b3duZWRDb25maWd1cmF0aW9ucw0KKyAgICAgICAgeHNpOnR5cGU9InBhbGV0dGVjb25maWd1cmF0aW9uOlRvb2xDb25maWd1cmF0aW9uIg0KKyAgICAgICAgaWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwucmVxLnBhbGV0dGUuZWRnZS5Db25mb3JtX0RlcGVuZGVuY3kiDQorICAgICAgICBsYWJlbD0iQ29uZm9ybSINCisgICAgICAgIGRlc2NyaXB0aW9uPSJDcmVhdGUgYSBDb25mb3JtICINCisgICAgICAgIGtpbmQ9IkNvbm5lY3Rpb25Ub29sIj4NCisgICAgICA8aWNvbg0KKyAgICAgICAgICBwbHVnaW5JRD0ib3JnLmVjbGlwc2UudW1sMi51bWwuZWRpdCINCisgICAgICAgICAgaWNvblBhdGg9Imljb25zL2Z1bGwvb2JqMTYvRGVwZW5kZW5jeS5naWYiLz4NCisgICAgICA8ZWxlbWVudERlc2NyaXB0b3JzDQorICAgICAgICAgIGVsZW1lbnRUeXBlSWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuQ29uZm9ybV9EZXBlbmRlbmN5XzIwMTQiLz4NCisgICAgICA8ZWxlbWVudERlc2NyaXB0b3JzDQorICAgICAgICAgIGVsZW1lbnRUeXBlSWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuQ29uZm9ybV9EZXBlbmRlbmN5XzQwMDgiLz4NCisgICAgICA8ZWxlbWVudERlc2NyaXB0b3JzDQorICAgICAgICAgIGVsZW1lbnRUeXBlSWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuQ29uZm9ybV9EZXBlbmRlbmN5XzQwMTgiLz4NCisgICAgPC9vd25lZENvbmZpZ3VyYXRpb25zPg0KKyAgICA8b3duZWRDb25maWd1cmF0aW9ucw0KKyAgICAgICAgeHNpOnR5cGU9InBhbGV0dGVjb25maWd1cmF0aW9uOlRvb2xDb25maWd1cmF0aW9uIg0KKyAgICAgICAgaWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwucmVxLnBhbGV0dGUuZWRnZS5Db25mb3JtX0dlbmVyYWxpemF0aW9uIg0KKyAgICAgICAgbGFiZWw9IkNvbmZvcm0iDQorICAgICAgICBkZXNjcmlwdGlvbj0iQ3JlYXRlIGEgQ29uZm9ybSBHZW5lcmFsaXphdGlvbiINCisgICAgICAgIGtpbmQ9IkNvbm5lY3Rpb25Ub29sIj4NCisgICAgICA8aWNvbg0KKyAgICAgICAgICBwbHVnaW5JRD0ib3JnLmVjbGlwc2UudW1sMi51bWwuZWRpdCINCisgICAgICAgICAgaWNvblBhdGg9Imljb25zL2Z1bGwvb2JqMTYvR2VuZXJhbGl6YXRpb24uZ2lmIi8+DQorICAgICAgPGVsZW1lbnREZXNjcmlwdG9ycw0KKyAgICAgICAgICBlbGVtZW50VHlwZUlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLkNvbmZvcm1fR2VuZXJhbGl6YXRpb25fNDAwMiIvPg0KKyAgICA8L293bmVkQ29uZmlndXJhdGlvbnM+DQorICAgIDxvd25lZENvbmZpZ3VyYXRpb25zDQorICAgICAgICB4c2k6dHlwZT0icGFsZXR0ZWNvbmZpZ3VyYXRpb246VG9vbENvbmZpZ3VyYXRpb24iDQorICAgICAgICBpZD0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5yZXEucGFsZXR0ZS5lZGdlLkRlcGVuZGVuY3kiDQorICAgICAgICBsYWJlbD0iRGVwZW5kZW5jeSINCisgICAgICAgIGRlc2NyaXB0aW9uPSJDcmVhdGUgYSBkZXBlbmRlbmN5Ig0KKyAgICAgICAga2luZD0iQ29ubmVjdGlvblRvb2wiPg0KKyAgICAgIDxpY29uDQorICAgICAgICAgIHBsdWdpbklEPSJvcmcuZWNsaXBzZS51bWwyLnVtbC5lZGl0Ig0KKyAgICAgICAgICBpY29uUGF0aD0iL2ljb25zL2Z1bGwvb2JqMTYvRGVwZW5kZW5jeS5naWYiLz4NCisgICAgICA8ZWxlbWVudERlc2NyaXB0b3JzDQorICAgICAgICAgIGVsZW1lbnRUeXBlSWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMudW1sLmRpYWdyYW0uY2xhenouRGVwZW5kZW5jeV80MDA4Ii8+DQorICAgIDwvb3duZWRDb25maWd1cmF0aW9ucz4NCisgICAgPG93bmVkQ29uZmlndXJhdGlvbnMNCisgICAgICAgIHhzaTp0eXBlPSJwYWxldHRlY29uZmlndXJhdGlvbjpUb29sQ29uZmlndXJhdGlvbiINCisgICAgICAgIGlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLnJlcS5wYWxldHRlLmVkZ2UuRGVyaXZlUmVxdF9BYnN0cmFjdGlvbiINCisgICAgICAgIGxhYmVsPSJEZXJpdmVSZXF0Ig0KKyAgICAgICAgZGVzY3JpcHRpb249IkNyZWF0ZSBhIERlcml2ZVJlcXQgQWJzdHJhY3Rpb24iDQorICAgICAgICBraW5kPSJDb25uZWN0aW9uVG9vbCI+DQorICAgICAgPGljb24NCisgICAgICAgICAgcGx1Z2luSUQ9Im9yZy5lY2xpcHNlLnVtbDIudW1sLmVkaXQiDQorICAgICAgICAgIGljb25QYXRoPSJpY29ucy9mdWxsL29iajE2L0Fic3RyYWN0aW9uLmdpZiIvPg0KKyAgICAgIDxlbGVtZW50RGVzY3JpcHRvcnMNCisgICAgICAgICAgZWxlbWVudFR5cGVJZD0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5EZXJpdmVSZXF0X0Fic3RyYWN0aW9uXzQwMDYiLz4NCisgICAgPC9vd25lZENvbmZpZ3VyYXRpb25zPg0KKyAgICA8b3duZWRDb25maWd1cmF0aW9ucw0KKyAgICAgICAgeHNpOnR5cGU9InBhbGV0dGVjb25maWd1cmF0aW9uOlRvb2xDb25maWd1cmF0aW9uIg0KKyAgICAgICAgaWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwucmVxLnBhbGV0dGUuZWRnZS5FeHBvc2UiDQorICAgICAgICBsYWJlbD0iRXhwb3NlIg0KKyAgICAgICAgZGVzY3JpcHRpb249IkNyZWF0ZSBhIEV4cG9zZSINCisgICAgICAgIGtpbmQ9IkNvbm5lY3Rpb25Ub29sIj4NCisgICAgICA8aWNvbg0KKyAgICAgICAgICBwbHVnaW5JRD0ib3JnLmVjbGlwc2UudW1sMi51bWwuZWRpdCINCisgICAgICAgICAgaWNvblBhdGg9Imljb25zL2Z1bGwvb2JqMTYvRGVwZW5kZW5jeS5naWYiLz4NCisgICAgICA8ZWxlbWVudERlc2NyaXB0b3JzDQorICAgICAgICAgIGVsZW1lbnRUeXBlSWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuRXhwb3NlXzIwMTQiLz4NCisgICAgICA8ZWxlbWVudERlc2NyaXB0b3JzDQorICAgICAgICAgIGVsZW1lbnRUeXBlSWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuRXhwb3NlXzQwMDgiLz4NCisgICAgICA8ZWxlbWVudERlc2NyaXB0b3JzDQorICAgICAgICAgIGVsZW1lbnRUeXBlSWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuRXhwb3NlXzQwMTgiLz4NCisgICAgPC9vd25lZENvbmZpZ3VyYXRpb25zPg0KKyAgICA8b3duZWRDb25maWd1cmF0aW9ucw0KKyAgICAgICAgeHNpOnR5cGU9InBhbGV0dGVjb25maWd1cmF0aW9uOlRvb2xDb25maWd1cmF0aW9uIg0KKyAgICAgICAgaWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwucmVxLnBhbGV0dGUuZWRnZS5MaW5rIg0KKyAgICAgICAgbGFiZWw9IkxpbmsiDQorICAgICAgICBkZXNjcmlwdGlvbj0iQ3JlYXRlIGEgTGluayINCisgICAgICAgIGtpbmQ9IkNvbm5lY3Rpb25Ub29sIj4NCisgICAgICA8aWNvbg0KKyAgICAgICAgICBwbHVnaW5JRD0ib3JnLmVjbGlwc2UucGFweXJ1cy51bWwuZGlhZ3JhbS5jbGF6eiINCisgICAgICAgICAgaWNvblBhdGg9Imljb25zL29iajE2L0xpbmsuZ2lmIi8+DQorICAgICAgPGVsZW1lbnREZXNjcmlwdG9ycw0KKyAgICAgICAgICBlbGVtZW50VHlwZUlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnVtbC5kaWFncmFtLmNsYXp6LkxpbmtfNDAxNiIvPg0KKyAgICA8L293bmVkQ29uZmlndXJhdGlvbnM+DQorICAgIDxvd25lZENvbmZpZ3VyYXRpb25zDQorICAgICAgICB4c2k6dHlwZT0icGFsZXR0ZWNvbmZpZ3VyYXRpb246VG9vbENvbmZpZ3VyYXRpb24iDQorICAgICAgICBpZD0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5yZXEucGFsZXR0ZS5lZGdlLlBhY2thZ2VJbXBvcnQiDQorICAgICAgICBsYWJlbD0iUGFja2FnZUltcG9ydCINCisgICAgICAgIGRlc2NyaXB0aW9uPSJDcmVhdGUgYSBQYWNrYWdlSW1wb3J0Ig0KKyAgICAgICAga2luZD0iQ29ubmVjdGlvblRvb2wiPg0KKyAgICAgIDxpY29uDQorICAgICAgICAgIHBsdWdpbklEPSJvcmcuZWNsaXBzZS51bWwyLnVtbC5lZGl0Ig0KKyAgICAgICAgICBpY29uUGF0aD0iL2ljb25zL2Z1bGwvb2JqMTYvUGFja2FnZUltcG9ydC5naWYiLz4NCisgICAgICA8ZWxlbWVudERlc2NyaXB0b3JzDQorICAgICAgICAgIGVsZW1lbnRUeXBlSWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMudW1sLmRpYWdyYW0uY2xhenouUGFja2FnZUltcG9ydF80MDEwIi8+DQorICAgIDwvb3duZWRDb25maWd1cmF0aW9ucz4NCisgICAgPG93bmVkQ29uZmlndXJhdGlvbnMNCisgICAgICAgIHhzaTp0eXBlPSJwYWxldHRlY29uZmlndXJhdGlvbjpUb29sQ29uZmlndXJhdGlvbiINCisgICAgICAgIGlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLnJlcS5wYWxldHRlLmVkZ2UuUmVmaW5lX0Fic3RyYWN0aW9uIg0KKyAgICAgICAgbGFiZWw9IlJlZmluZSINCisgICAgICAgIGRlc2NyaXB0aW9uPSJDcmVhdGUgYSBSZWZpbmUiDQorICAgICAgICBraW5kPSJDb25uZWN0aW9uVG9vbCI+DQorICAgICAgPGljb24NCisgICAgICAgICAgcGx1Z2luSUQ9Im9yZy5lY2xpcHNlLnVtbDIudW1sLmVkaXQiDQorICAgICAgICAgIGljb25QYXRoPSJpY29ucy9mdWxsL29iajE2L0Fic3RyYWN0aW9uLmdpZiIvPg0KKyAgICAgIDxlbGVtZW50RGVzY3JpcHRvcnMNCisgICAgICAgICAgZWxlbWVudFR5cGVJZD0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5SZWZpbmVfQWJzdHJhY3Rpb25fNDAwNiIvPg0KKyAgICA8L293bmVkQ29uZmlndXJhdGlvbnM+DQorICAgIDxvd25lZENvbmZpZ3VyYXRpb25zDQorICAgICAgICB4c2k6dHlwZT0icGFsZXR0ZWNvbmZpZ3VyYXRpb246VG9vbENvbmZpZ3VyYXRpb24iDQorICAgICAgICBpZD0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5yZXEucGFsZXR0ZS5lZGdlLlNhdGlzZnlfQWJzdHJhY3Rpb24iDQorICAgICAgICBsYWJlbD0iU2F0aXNmeSINCisgICAgICAgIGRlc2NyaXB0aW9uPSJDcmVhdGUgYSBTYXRpc2Z5Ig0KKyAgICAgICAga2luZD0iQ29ubmVjdGlvblRvb2wiPg0KKyAgICAgIDxpY29uDQorICAgICAgICAgIHBsdWdpbklEPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sIg0KKyAgICAgICAgICBpY29uUGF0aD0iaWNvbnMvcmVxdWlyZW1lbnRzL1NhdGlzZnkuZ2lmIi8+DQorICAgICAgPGVsZW1lbnREZXNjcmlwdG9ycw0KKyAgICAgICAgICBlbGVtZW50VHlwZUlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLlNhdGlzZnlfQWJzdHJhY3Rpb25fNDAwNiIvPg0KKyAgICA8L293bmVkQ29uZmlndXJhdGlvbnM+DQorICAgIDxvd25lZENvbmZpZ3VyYXRpb25zDQorICAgICAgICB4c2k6dHlwZT0icGFsZXR0ZWNvbmZpZ3VyYXRpb246VG9vbENvbmZpZ3VyYXRpb24iDQorICAgICAgICBpZD0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5yZXEucGFsZXR0ZS5lZGdlLlRyYWNlX0Fic3RyYWN0aW9uIg0KKyAgICAgICAgbGFiZWw9IlRyYWNlIg0KKyAgICAgICAgZGVzY3JpcHRpb249IkNyZWF0ZSBhIFRyYWNlIg0KKyAgICAgICAga2luZD0iQ29ubmVjdGlvblRvb2wiPg0KKyAgICAgIDxpY29uDQorICAgICAgICAgIHBsdWdpbklEPSJvcmcuZWNsaXBzZS51bWwyLnVtbC5lZGl0Ig0KKyAgICAgICAgICBpY29uUGF0aD0iaWNvbnMvZnVsbC9vYmoxNi9BYnN0cmFjdGlvbi5naWYiLz4NCisgICAgICA8ZWxlbWVudERlc2NyaXB0b3JzDQorICAgICAgICAgIGVsZW1lbnRUeXBlSWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuVHJhY2VfQWJzdHJhY3Rpb25fNDAwNiIvPg0KKyAgICA8L293bmVkQ29uZmlndXJhdGlvbnM+DQorICAgIDxvd25lZENvbmZpZ3VyYXRpb25zDQorICAgICAgICB4c2k6dHlwZT0icGFsZXR0ZWNvbmZpZ3VyYXRpb246VG9vbENvbmZpZ3VyYXRpb24iDQorICAgICAgICBpZD0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5yZXEucGFsZXR0ZS5lZGdlLlZlcmlmeV9BYnN0cmFjdGlvbiINCisgICAgICAgIGxhYmVsPSJWZXJpZnkiDQorICAgICAgICBkZXNjcmlwdGlvbj0iQ3JlYXRlIGEgVmVyaWZ5Ij4NCisgICAgICA8aWNvbg0KKyAgICAgICAgICBwbHVnaW5JRD0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbCINCisgICAgICAgICAgaWNvblBhdGg9Imljb25zL3JlcXVpcmVtZW50cy9WZXJpZnkuZ2lmIi8+DQorICAgICAgPGVsZW1lbnREZXNjcmlwdG9ycw0KKyAgICAgICAgICBlbGVtZW50VHlwZUlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLlZlcmlmeV9BYnN0cmFjdGlvbl80MDA2Ii8+DQorICAgIDwvb3duZWRDb25maWd1cmF0aW9ucz4NCisgIDwvZHJhd2VyQ29uZmlndXJhdGlvbnM+DQorICA8ZHJhd2VyQ29uZmlndXJhdGlvbnMNCisgICAgICBpZD0iTm9kZXMiDQorICAgICAgbGFiZWw9Ik90aGVyIE5vZGVzIg0KKyAgICAgIGRlc2NyaXB0aW9uPSJPdGhlciBOb2RlcyI+DQorICAgIDxvd25lZENvbmZpZ3VyYXRpb25zDQorICAgICAgICB4c2k6dHlwZT0icGFsZXR0ZWNvbmZpZ3VyYXRpb246VG9vbENvbmZpZ3VyYXRpb24iDQorICAgICAgICBpZD0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5yZXEucGFsZXR0ZS5ub2RlLkFkanVuY3RQcm9wZXJ0eSINCisgICAgICAgIGxhYmVsPSJBZGp1bmN0UHJvcGVydHkiDQorICAgICAgICBkZXNjcmlwdGlvbj0iQ3JlYXRlIGEgQWRqdW5jdFByb3BlcnR5Ij4NCisgICAgICA8aWNvbg0KKyAgICAgICAgICBwbHVnaW5JRD0ib3JnLmVjbGlwc2UudW1sMi51bWwuZWRpdCINCisgICAgICAgICAgaWNvblBhdGg9Imljb25zL2Z1bGwvb2JqMTYvUHJvcGVydHkuZ2lmIi8+DQorICAgICAgPGVsZW1lbnREZXNjcmlwdG9ycw0KKyAgICAgICAgICBlbGVtZW50VHlwZUlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLkFkanVuY3RQcm9wZXJ0eV8zMDAyIi8+DQorICAgICAgPGVsZW1lbnREZXNjcmlwdG9ycw0KKyAgICAgICAgICBlbGVtZW50VHlwZUlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLkFkanVuY3RQcm9wZXJ0eV8zMDA1Ii8+DQorICAgICAgPGVsZW1lbnREZXNjcmlwdG9ycw0KKyAgICAgICAgICBlbGVtZW50VHlwZUlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLkFkanVuY3RQcm9wZXJ0eV8zMDA2Ii8+DQorICAgICAgPGVsZW1lbnREZXNjcmlwdG9ycw0KKyAgICAgICAgICBlbGVtZW50VHlwZUlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLkFkanVuY3RQcm9wZXJ0eV8zMDEyIi8+DQorICAgICAgPGVsZW1lbnREZXNjcmlwdG9ycw0KKyAgICAgICAgICBlbGVtZW50VHlwZUlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLkFkanVuY3RQcm9wZXJ0eV8zMDE4Ii8+DQorICAgICAgPGVsZW1lbnREZXNjcmlwdG9ycw0KKyAgICAgICAgICBlbGVtZW50VHlwZUlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLkFkanVuY3RQcm9wZXJ0eV8zMDQxIi8+DQorICAgIDwvb3duZWRDb25maWd1cmF0aW9ucz4NCisgICAgPG93bmVkQ29uZmlndXJhdGlvbnMNCisgICAgICAgIHhzaTp0eXBlPSJwYWxldHRlY29uZmlndXJhdGlvbjpUb29sQ29uZmlndXJhdGlvbiINCisgICAgICAgIGlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLnJlcS5wYWxldHRlLm5vZGUuQm91bmRSZWZlcmVuY2UiDQorICAgICAgICBsYWJlbD0iQm91bmRSZWZlcmVuY2UiDQorICAgICAgICBkZXNjcmlwdGlvbj0iQ3JlYXRlIGEgQm91bmRSZWZlcmVuY2UiPg0KKyAgICAgIDxpY29uDQorICAgICAgICAgIHBsdWdpbklEPSJvcmcuZWNsaXBzZS51bWwyLnVtbC5lZGl0Ig0KKyAgICAgICAgICBpY29uUGF0aD0iaWNvbnMvZnVsbC9vYmoxNi9Qcm9wZXJ0eS5naWYiLz4NCisgICAgICA8ZWxlbWVudERlc2NyaXB0b3JzDQorICAgICAgICAgIGVsZW1lbnRUeXBlSWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuQm91bmRSZWZlcmVuY2VfMzAwMiIvPg0KKyAgICAgIDxlbGVtZW50RGVzY3JpcHRvcnMNCisgICAgICAgICAgZWxlbWVudFR5cGVJZD0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5Cb3VuZFJlZmVyZW5jZV8zMDA1Ii8+DQorICAgICAgPGVsZW1lbnREZXNjcmlwdG9ycw0KKyAgICAgICAgICBlbGVtZW50VHlwZUlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLkJvdW5kUmVmZXJlbmNlXzMwMDYiLz4NCisgICAgICA8ZWxlbWVudERlc2NyaXB0b3JzDQorICAgICAgICAgIGVsZW1lbnRUeXBlSWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuQm91bmRSZWZlcmVuY2VfMzAxMiIvPg0KKyAgICAgIDxlbGVtZW50RGVzY3JpcHRvcnMNCisgICAgICAgICAgZWxlbWVudFR5cGVJZD0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5Cb3VuZFJlZmVyZW5jZV8zMDE4Ii8+DQorICAgICAgPGVsZW1lbnREZXNjcmlwdG9ycw0KKyAgICAgICAgICBlbGVtZW50VHlwZUlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLkJvdW5kUmVmZXJlbmNlXzMwNDEiLz4NCisgICAgPC9vd25lZENvbmZpZ3VyYXRpb25zPg0KKyAgICA8b3duZWRDb25maWd1cmF0aW9ucw0KKyAgICAgICAgeHNpOnR5cGU9InBhbGV0dGVjb25maWd1cmF0aW9uOlRvb2xDb25maWd1cmF0aW9uIg0KKyAgICAgICAgaWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwucmVxLnBhbGV0dGUubm9kZS5DbGFzc2lmaWVyQmVoYXZpb3JQcm9wZXJ0eSINCisgICAgICAgIGxhYmVsPSJDbGFzc2lmaWVyQmVoYXZpb3JQcm9wZXJ0eSINCisgICAgICAgIGRlc2NyaXB0aW9uPSJDcmVhdGUgYSBDbGFzc2lmaWVyQmVoYXZpb3JQcm9wZXJ0eSI+DQorICAgICAgPGljb24NCisgICAgICAgICAgcGx1Z2luSUQ9Im9yZy5lY2xpcHNlLnVtbDIudW1sLmVkaXQiDQorICAgICAgICAgIGljb25QYXRoPSJpY29ucy9mdWxsL29iajE2L1Byb3BlcnR5LmdpZiIvPg0KKyAgICAgIDxlbGVtZW50RGVzY3JpcHRvcnMNCisgICAgICAgICAgZWxlbWVudFR5cGVJZD0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5DbGFzc2lmaWVyQmVoYXZpb3JQcm9wZXJ0eV8zMDAyIi8+DQorICAgICAgPGVsZW1lbnREZXNjcmlwdG9ycw0KKyAgICAgICAgICBlbGVtZW50VHlwZUlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLkNsYXNzaWZpZXJCZWhhdmlvclByb3BlcnR5XzMwMDUiLz4NCisgICAgICA8ZWxlbWVudERlc2NyaXB0b3JzDQorICAgICAgICAgIGVsZW1lbnRUeXBlSWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuQ2xhc3NpZmllckJlaGF2aW9yUHJvcGVydHlfMzAwNiIvPg0KKyAgICAgIDxlbGVtZW50RGVzY3JpcHRvcnMNCisgICAgICAgICAgZWxlbWVudFR5cGVJZD0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5DbGFzc2lmaWVyQmVoYXZpb3JQcm9wZXJ0eV8zMDEyIi8+DQorICAgICAgPGVsZW1lbnREZXNjcmlwdG9ycw0KKyAgICAgICAgICBlbGVtZW50VHlwZUlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLkNsYXNzaWZpZXJCZWhhdmlvclByb3BlcnR5XzMwMTgiLz4NCisgICAgICA8ZWxlbWVudERlc2NyaXB0b3JzDQorICAgICAgICAgIGVsZW1lbnRUeXBlSWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuQ2xhc3NpZmllckJlaGF2aW9yUHJvcGVydHlfMzA0MSIvPg0KKyAgICA8L293bmVkQ29uZmlndXJhdGlvbnM+DQorICAgIDxvd25lZENvbmZpZ3VyYXRpb25zDQorICAgICAgICB4c2k6dHlwZT0icGFsZXR0ZWNvbmZpZ3VyYXRpb246VG9vbENvbmZpZ3VyYXRpb24iDQorICAgICAgICBpZD0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5yZXEucGFsZXR0ZS5ub2RlLkNvbm5lY3RvclByb3BlcnR5Ig0KKyAgICAgICAgbGFiZWw9IkNvbm5lY3RvclByb3BlcnR5Ig0KKyAgICAgICAgZGVzY3JpcHRpb249IkNyZWF0ZSBhIENvbm5lY3RvclByb3BlcnR5Ij4NCisgICAgICA8aWNvbg0KKyAgICAgICAgICBwbHVnaW5JRD0ib3JnLmVjbGlwc2UudW1sMi51bWwuZWRpdCINCisgICAgICAgICAgaWNvblBhdGg9Imljb25zL2Z1bGwvb2JqMTYvUHJvcGVydHkuZ2lmIi8+DQorICAgICAgPGVsZW1lbnREZXNjcmlwdG9ycw0KKyAgICAgICAgICBlbGVtZW50VHlwZUlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLkNvbm5lY3RvclByb3BlcnR5XzMwMDIiLz4NCisgICAgICA8ZWxlbWVudERlc2NyaXB0b3JzDQorICAgICAgICAgIGVsZW1lbnRUeXBlSWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuQ29ubmVjdG9yUHJvcGVydHlfMzAwNSIvPg0KKyAgICAgIDxlbGVtZW50RGVzY3JpcHRvcnMNCisgICAgICAgICAgZWxlbWVudFR5cGVJZD0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5Db25uZWN0b3JQcm9wZXJ0eV8zMDA2Ii8+DQorICAgICAgPGVsZW1lbnREZXNjcmlwdG9ycw0KKyAgICAgICAgICBlbGVtZW50VHlwZUlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLkNvbm5lY3RvclByb3BlcnR5XzMwMTIiLz4NCisgICAgICA8ZWxlbWVudERlc2NyaXB0b3JzDQorICAgICAgICAgIGVsZW1lbnRUeXBlSWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuQ29ubmVjdG9yUHJvcGVydHlfMzAxOCIvPg0KKyAgICAgIDxlbGVtZW50RGVzY3JpcHRvcnMNCisgICAgICAgICAgZWxlbWVudFR5cGVJZD0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5Db25uZWN0b3JQcm9wZXJ0eV8zMDQxIi8+DQorICAgIDwvb3duZWRDb25maWd1cmF0aW9ucz4NCisgICAgPG93bmVkQ29uZmlndXJhdGlvbnMNCisgICAgICAgIHhzaTp0eXBlPSJwYWxldHRlY29uZmlndXJhdGlvbjpUb29sQ29uZmlndXJhdGlvbiINCisgICAgICAgIGlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLnJlcS5wYWxldHRlLm5vZGUuQ29uc3RyYWludEJsb2NrIg0KKyAgICAgICAgbGFiZWw9IkNvbnN0cmFpbnRCbG9jayINCisgICAgICAgIGRlc2NyaXB0aW9uPSJDcmVhdGUgYSBDb25zdHJhaW50QmxvY2siPg0KKyAgICAgIDxpY29uDQorICAgICAgICAgIHBsdWdpbklEPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sIg0KKyAgICAgICAgICBpY29uUGF0aD0iaWNvbnMvY29uc3RyYWludHMvQ29uc3RyYWludEJsb2NrLmdpZiIvPg0KKyAgICAgIDxlbGVtZW50RGVzY3JpcHRvcnMNCisgICAgICAgICAgZWxlbWVudFR5cGVJZD0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5Db25zdHJhaW50QmxvY2tfMjAwOCIvPg0KKyAgICAgIDxlbGVtZW50RGVzY3JpcHRvcnMNCisgICAgICAgICAgZWxlbWVudFR5cGVJZD0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5Db25zdHJhaW50QmxvY2tfMzAwNCIvPg0KKyAgICAgIDxlbGVtZW50RGVzY3JpcHRvcnMNCisgICAgICAgICAgZWxlbWVudFR5cGVJZD0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5Db25zdHJhaW50QmxvY2tfMzAwOCIvPg0KKyAgICAgIDxlbGVtZW50RGVzY3JpcHRvcnMNCisgICAgICAgICAgZWxlbWVudFR5cGVJZD0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5Db25zdHJhaW50QmxvY2tfMzAxMCIvPg0KKyAgICAgIDxlbGVtZW50RGVzY3JpcHRvcnMNCisgICAgICAgICAgZWxlbWVudFR5cGVJZD0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5Db25zdHJhaW50QmxvY2tfMzAxNCIvPg0KKyAgICA8L293bmVkQ29uZmlndXJhdGlvbnM+DQorICAgIDxvd25lZENvbmZpZ3VyYXRpb25zDQorICAgICAgICB4c2k6dHlwZT0icGFsZXR0ZWNvbmZpZ3VyYXRpb246VG9vbENvbmZpZ3VyYXRpb24iDQorICAgICAgICBpZD0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5yZXEucGFsZXR0ZS5ub2RlLkNvbnRyb2xPcGVyYXRvcl9PcGVyYXRpb24iDQorICAgICAgICBsYWJlbD0iQ29udHJvbE9wZXJhdG9yIg0KKyAgICAgICAgZGVzY3JpcHRpb249IkNyZWF0ZSBhIENvbnRyb2xPcGVyYXRvciI+DQorICAgICAgPGljb24NCisgICAgICAgICAgcGx1Z2luSUQ9Im9yZy5lY2xpcHNlLnVtbDIudW1sLmVkaXQiDQorICAgICAgICAgIGljb25QYXRoPSJpY29ucy9mdWxsL29iajE2L09wZXJhdGlvbi5naWYiLz4NCisgICAgICA8ZWxlbWVudERlc2NyaXB0b3JzDQorICAgICAgICAgIGVsZW1lbnRUeXBlSWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuQ29udHJvbE9wZXJhdG9yX09wZXJhdGlvbl8zMDAzIi8+DQorICAgICAgPGVsZW1lbnREZXNjcmlwdG9ycw0KKyAgICAgICAgICBlbGVtZW50VHlwZUlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLkNvbnRyb2xPcGVyYXRvcl9PcGVyYXRpb25fMzAwNyIvPg0KKyAgICAgIDxlbGVtZW50RGVzY3JpcHRvcnMNCisgICAgICAgICAgZWxlbWVudFR5cGVJZD0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5Db250cm9sT3BlcmF0b3JfT3BlcmF0aW9uXzMwMTMiLz4NCisgICAgICA8ZWxlbWVudERlc2NyaXB0b3JzDQorICAgICAgICAgIGVsZW1lbnRUeXBlSWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuQ29udHJvbE9wZXJhdG9yX09wZXJhdGlvbl8zMDE5Ii8+DQorICAgICAgPGVsZW1lbnREZXNjcmlwdG9ycw0KKyAgICAgICAgICBlbGVtZW50VHlwZUlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLkNvbnRyb2xPcGVyYXRvcl9PcGVyYXRpb25fMzA0MiIvPg0KKyAgICA8L293bmVkQ29uZmlndXJhdGlvbnM+DQorICAgIDxvd25lZENvbmZpZ3VyYXRpb25zDQorICAgICAgICB4c2k6dHlwZT0icGFsZXR0ZWNvbmZpZ3VyYXRpb246VG9vbENvbmZpZ3VyYXRpb24iDQorICAgICAgICBpZD0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5yZXEucGFsZXR0ZS5ub2RlLkRpc3RyaWJ1dGVkUHJvcGVydHkiDQorICAgICAgICBsYWJlbD0iRGlzdHJpYnV0ZWRQcm9wZXJ0eSINCisgICAgICAgIGRlc2NyaXB0aW9uPSJDcmVhdGUgYSBEaXN0cmlidXRlZFByb3BlcnR5Ij4NCisgICAgICA8aWNvbg0KKyAgICAgICAgICBwbHVnaW5JRD0ib3JnLmVjbGlwc2UudW1sMi51bWwuZWRpdCINCisgICAgICAgICAgaWNvblBhdGg9Imljb25zL2Z1bGwvb2JqMTYvUHJvcGVydHkuZ2lmIi8+DQorICAgICAgPGVsZW1lbnREZXNjcmlwdG9ycw0KKyAgICAgICAgICBlbGVtZW50VHlwZUlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLkRpc3RyaWJ1dGVkUHJvcGVydHlfMzAwMiIvPg0KKyAgICAgIDxlbGVtZW50RGVzY3JpcHRvcnMNCisgICAgICAgICAgZWxlbWVudFR5cGVJZD0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5EaXN0cmlidXRlZFByb3BlcnR5XzMwMDUiLz4NCisgICAgICA8ZWxlbWVudERlc2NyaXB0b3JzDQorICAgICAgICAgIGVsZW1lbnRUeXBlSWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuRGlzdHJpYnV0ZWRQcm9wZXJ0eV8zMDA2Ii8+DQorICAgICAgPGVsZW1lbnREZXNjcmlwdG9ycw0KKyAgICAgICAgICBlbGVtZW50VHlwZUlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLkRpc3RyaWJ1dGVkUHJvcGVydHlfMzAxMiIvPg0KKyAgICAgIDxlbGVtZW50RGVzY3JpcHRvcnMNCisgICAgICAgICAgZWxlbWVudFR5cGVJZD0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5EaXN0cmlidXRlZFByb3BlcnR5XzMwMTgiLz4NCisgICAgICA8ZWxlbWVudERlc2NyaXB0b3JzDQorICAgICAgICAgIGVsZW1lbnRUeXBlSWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuRGlzdHJpYnV0ZWRQcm9wZXJ0eV8zMDQxIi8+DQorICAgIDwvb3duZWRDb25maWd1cmF0aW9ucz4NCisgICAgPG93bmVkQ29uZmlndXJhdGlvbnMNCisgICAgICAgIHhzaTp0eXBlPSJwYWxldHRlY29uZmlndXJhdGlvbjpUb29sQ29uZmlndXJhdGlvbiINCisgICAgICAgIGlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLnJlcS5wYWxldHRlLm5vZGUuRW5kUGF0aE11bHRpcGxpY2l0eSINCisgICAgICAgIGxhYmVsPSJFbmRQYXRoTXVsdGlwbGljaXR5Ig0KKyAgICAgICAgZGVzY3JpcHRpb249IkNyZWF0ZSBhIEVuZFBhdGhNdWx0aXBsaWNpdHkiPg0KKyAgICAgIDxpY29uDQorICAgICAgICAgIHBsdWdpbklEPSJvcmcuZWNsaXBzZS51bWwyLnVtbC5lZGl0Ig0KKyAgICAgICAgICBpY29uUGF0aD0iaWNvbnMvZnVsbC9vYmoxNi9Qcm9wZXJ0eS5naWYiLz4NCisgICAgICA8ZWxlbWVudERlc2NyaXB0b3JzDQorICAgICAgICAgIGVsZW1lbnRUeXBlSWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuRW5kUGF0aE11bHRpcGxpY2l0eV8zMDAyIi8+DQorICAgICAgPGVsZW1lbnREZXNjcmlwdG9ycw0KKyAgICAgICAgICBlbGVtZW50VHlwZUlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLkVuZFBhdGhNdWx0aXBsaWNpdHlfMzAwNSIvPg0KKyAgICAgIDxlbGVtZW50RGVzY3JpcHRvcnMNCisgICAgICAgICAgZWxlbWVudFR5cGVJZD0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5FbmRQYXRoTXVsdGlwbGljaXR5XzMwMDYiLz4NCisgICAgICA8ZWxlbWVudERlc2NyaXB0b3JzDQorICAgICAgICAgIGVsZW1lbnRUeXBlSWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuRW5kUGF0aE11bHRpcGxpY2l0eV8zMDEyIi8+DQorICAgICAgPGVsZW1lbnREZXNjcmlwdG9ycw0KKyAgICAgICAgICBlbGVtZW50VHlwZUlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLkVuZFBhdGhNdWx0aXBsaWNpdHlfMzAxOCIvPg0KKyAgICAgIDxlbGVtZW50RGVzY3JpcHRvcnMNCisgICAgICAgICAgZWxlbWVudFR5cGVJZD0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5FbmRQYXRoTXVsdGlwbGljaXR5XzMwNDEiLz4NCisgICAgPC9vd25lZENvbmZpZ3VyYXRpb25zPg0KKyAgICA8b3duZWRDb25maWd1cmF0aW9ucw0KKyAgICAgICAgeHNpOnR5cGU9InBhbGV0dGVjb25maWd1cmF0aW9uOlRvb2xDb25maWd1cmF0aW9uIg0KKyAgICAgICAgaWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwucmVxLnBhbGV0dGUubm9kZS5GbG93UHJvcGVydHkiDQorICAgICAgICBsYWJlbD0iRmxvd1Byb3BlcnR5Ig0KKyAgICAgICAgZGVzY3JpcHRpb249IkNyZWF0ZSBhIEZsb3dQcm9wZXJ0eSI+DQorICAgICAgPGljb24NCisgICAgICAgICAgcGx1Z2luSUQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwiDQorICAgICAgICAgIGljb25QYXRoPSJpY29ucy9wb3J0YW5kZmxvd3MvRmxvd1Byb3BlcnR5LmdpZiIvPg0KKyAgICAgIDxlbGVtZW50RGVzY3JpcHRvcnMNCisgICAgICAgICAgZWxlbWVudFR5cGVJZD0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5GbG93UHJvcGVydHlfMzAwMiIvPg0KKyAgICAgIDxlbGVtZW50RGVzY3JpcHRvcnMNCisgICAgICAgICAgZWxlbWVudFR5cGVJZD0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5GbG93UHJvcGVydHlfMzAwNSIvPg0KKyAgICAgIDxlbGVtZW50RGVzY3JpcHRvcnMNCisgICAgICAgICAgZWxlbWVudFR5cGVJZD0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5GbG93UHJvcGVydHlfMzAwNiIvPg0KKyAgICAgIDxlbGVtZW50RGVzY3JpcHRvcnMNCisgICAgICAgICAgZWxlbWVudFR5cGVJZD0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5GbG93UHJvcGVydHlfMzAxMiIvPg0KKyAgICAgIDxlbGVtZW50RGVzY3JpcHRvcnMNCisgICAgICAgICAgZWxlbWVudFR5cGVJZD0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5GbG93UHJvcGVydHlfMzAxOCIvPg0KKyAgICAgIDxlbGVtZW50RGVzY3JpcHRvcnMNCisgICAgICAgICAgZWxlbWVudFR5cGVJZD0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5GbG93UHJvcGVydHlfMzA0MSIvPg0KKyAgICA8L293bmVkQ29uZmlndXJhdGlvbnM+DQorICAgIDxvd25lZENvbmZpZ3VyYXRpb25zDQorICAgICAgICB4c2k6dHlwZT0icGFsZXR0ZWNvbmZpZ3VyYXRpb246VG9vbENvbmZpZ3VyYXRpb24iDQorICAgICAgICBpZD0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5yZXEucGFsZXR0ZS5ub2RlLkZsb3dTcGVjaWZpY2F0aW9uIg0KKyAgICAgICAgbGFiZWw9IkZsb3dTcGVjaWZpY2F0aW9uIg0KKyAgICAgICAgZGVzY3JpcHRpb249IkNyZWF0ZSBhIEZsb3dTcGVjaWZpY2F0aW9uIj4NCisgICAgICA8aWNvbg0KKyAgICAgICAgICBwbHVnaW5JRD0ib3JnLmVjbGlwc2UudW1sMi51bWwuZWRpdCINCisgICAgICAgICAgaWNvblBhdGg9Imljb25zL2Z1bGwvb2JqMTYvSW50ZXJmYWNlLmdpZiIvPg0KKyAgICAgIDxlbGVtZW50RGVzY3JpcHRvcnMNCisgICAgICAgICAgZWxlbWVudFR5cGVJZD0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5GbG93U3BlY2lmaWNhdGlvbl8yMDA0Ii8+DQorICAgICAgPGVsZW1lbnREZXNjcmlwdG9ycw0KKyAgICAgICAgICBlbGVtZW50VHlwZUlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLkZsb3dTcGVjaWZpY2F0aW9uXzMwMjMiLz4NCisgICAgICA8ZWxlbWVudERlc2NyaXB0b3JzDQorICAgICAgICAgIGVsZW1lbnRUeXBlSWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuRmxvd1NwZWNpZmljYXRpb25fMzAzNiIvPg0KKyAgICAgIDxlbGVtZW50RGVzY3JpcHRvcnMNCisgICAgICAgICAgZWxlbWVudFR5cGVJZD0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5GbG93U3BlY2lmaWNhdGlvbl8zMDM3Ii8+DQorICAgICAgPGVsZW1lbnREZXNjcmlwdG9ycw0KKyAgICAgICAgICBlbGVtZW50VHlwZUlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLkZsb3dTcGVjaWZpY2F0aW9uXzMwMzgiLz4NCisgICAgPC9vd25lZENvbmZpZ3VyYXRpb25zPg0KKyAgICA8b3duZWRDb25maWd1cmF0aW9ucw0KKyAgICAgICAgeHNpOnR5cGU9InBhbGV0dGVjb25maWd1cmF0aW9uOlRvb2xDb25maWd1cmF0aW9uIg0KKyAgICAgICAgaWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwucmVxLnBhbGV0dGUubm9kZS5JbnRlcmZhY2VCbG9jayINCisgICAgICAgIGxhYmVsPSJJbnRlcmZhY2VCbG9jayINCisgICAgICAgIGRlc2NyaXB0aW9uPSJDcmVhdGUgYSBJbnRlcmZhY2VCbG9jayI+DQorICAgICAgPGljb24NCisgICAgICAgICAgcGx1Z2luSUQ9Im9yZy5lY2xpcHNlLnVtbDIudW1sLmVkaXQiDQorICAgICAgICAgIGljb25QYXRoPSJpY29ucy9mdWxsL29iajE2L0NsYXNzLmdpZiIvPg0KKyAgICAgIDxlbGVtZW50RGVzY3JpcHRvcnMNCisgICAgICAgICAgZWxlbWVudFR5cGVJZD0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5JbnRlcmZhY2VCbG9ja18yMDA4Ii8+DQorICAgICAgPGVsZW1lbnREZXNjcmlwdG9ycw0KKyAgICAgICAgICBlbGVtZW50VHlwZUlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLkludGVyZmFjZUJsb2NrXzMwMDQiLz4NCisgICAgICA8ZWxlbWVudERlc2NyaXB0b3JzDQorICAgICAgICAgIGVsZW1lbnRUeXBlSWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuSW50ZXJmYWNlQmxvY2tfMzAwOCIvPg0KKyAgICAgIDxlbGVtZW50RGVzY3JpcHRvcnMNCisgICAgICAgICAgZWxlbWVudFR5cGVJZD0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5JbnRlcmZhY2VCbG9ja18zMDEwIi8+DQorICAgICAgPGVsZW1lbnREZXNjcmlwdG9ycw0KKyAgICAgICAgICBlbGVtZW50VHlwZUlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLkludGVyZmFjZUJsb2NrXzMwMTQiLz4NCisgICAgPC9vd25lZENvbmZpZ3VyYXRpb25zPg0KKyAgICA8b3duZWRDb25maWd1cmF0aW9ucw0KKyAgICAgICAgeHNpOnR5cGU9InBhbGV0dGVjb25maWd1cmF0aW9uOlRvb2xDb25maWd1cmF0aW9uIg0KKyAgICAgICAgaWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwucmVxLnBhbGV0dGUubm9kZS5QYXJ0aWNpcGFudFByb3BlcnR5Ig0KKyAgICAgICAgbGFiZWw9IlBhcnRpY2lwYW50UHJvcGVydHkiDQorICAgICAgICBkZXNjcmlwdGlvbj0iQ3JlYXRlIGEgUGFydGljaXBhbnRQcm9wZXJ0eSI+DQorICAgICAgPGljb24NCisgICAgICAgICAgcGx1Z2luSUQ9Im9yZy5lY2xpcHNlLnVtbDIudW1sLmVkaXQiDQorICAgICAgICAgIGljb25QYXRoPSJpY29ucy9mdWxsL29iajE2L1Byb3BlcnR5LmdpZiIvPg0KKyAgICAgIDxlbGVtZW50RGVzY3JpcHRvcnMNCisgICAgICAgICAgZWxlbWVudFR5cGVJZD0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5QYXJ0aWNpcGFudFByb3BlcnR5XzMwMDIiLz4NCisgICAgICA8ZWxlbWVudERlc2NyaXB0b3JzDQorICAgICAgICAgIGVsZW1lbnRUeXBlSWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuUGFydGljaXBhbnRQcm9wZXJ0eV8zMDA1Ii8+DQorICAgICAgPGVsZW1lbnREZXNjcmlwdG9ycw0KKyAgICAgICAgICBlbGVtZW50VHlwZUlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLlBhcnRpY2lwYW50UHJvcGVydHlfMzAwNiIvPg0KKyAgICAgIDxlbGVtZW50RGVzY3JpcHRvcnMNCisgICAgICAgICAgZWxlbWVudFR5cGVJZD0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5QYXJ0aWNpcGFudFByb3BlcnR5XzMwMTIiLz4NCisgICAgICA8ZWxlbWVudERlc2NyaXB0b3JzDQorICAgICAgICAgIGVsZW1lbnRUeXBlSWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuUGFydGljaXBhbnRQcm9wZXJ0eV8zMDE4Ii8+DQorICAgICAgPGVsZW1lbnREZXNjcmlwdG9ycw0KKyAgICAgICAgICBlbGVtZW50VHlwZUlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLlBhcnRpY2lwYW50UHJvcGVydHlfMzA0MSIvPg0KKyAgICA8L293bmVkQ29uZmlndXJhdGlvbnM+DQorICAgIDxvd25lZENvbmZpZ3VyYXRpb25zDQorICAgICAgICB4c2k6dHlwZT0icGFsZXR0ZWNvbmZpZ3VyYXRpb246VG9vbENvbmZpZ3VyYXRpb24iDQorICAgICAgICBpZD0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5yZXEucGFsZXR0ZS5ub2RlLlZhbHVlVHlwZSINCisgICAgICAgIGxhYmVsPSJWYWx1ZVR5cGUiDQorICAgICAgICBkZXNjcmlwdGlvbj0iQ3JlYXRlIGEgVmFsdWVUeXBlIj4NCisgICAgICA8aWNvbg0KKyAgICAgICAgICBwbHVnaW5JRD0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbCINCisgICAgICAgICAgaWNvblBhdGg9Imljb25zL2Jsb2Nrcy9WYWx1ZVR5cGUuZ2lmIi8+DQorICAgICAgPGVsZW1lbnREZXNjcmlwdG9ycw0KKyAgICAgICAgICBlbGVtZW50VHlwZUlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLlZhbHVlVHlwZV8yMDEwIi8+DQorICAgICAgPGVsZW1lbnREZXNjcmlwdG9ycw0KKyAgICAgICAgICBlbGVtZW50VHlwZUlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLlZhbHVlVHlwZV8zMDI3Ii8+DQorICAgICAgPGVsZW1lbnREZXNjcmlwdG9ycw0KKyAgICAgICAgICBlbGVtZW50VHlwZUlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLlZhbHVlVHlwZV8zMDQzIi8+DQorICAgICAgPGVsZW1lbnREZXNjcmlwdG9ycw0KKyAgICAgICAgICBlbGVtZW50VHlwZUlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLlZhbHVlVHlwZV8zMDQ0Ii8+DQorICAgICAgPGVsZW1lbnREZXNjcmlwdG9ycw0KKyAgICAgICAgICBlbGVtZW50VHlwZUlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLlZhbHVlVHlwZV8zMDQ1Ii8+DQorICAgIDwvb3duZWRDb25maWd1cmF0aW9ucz4NCisgICAgPG93bmVkQ29uZmlndXJhdGlvbnMNCisgICAgICAgIHhzaTp0eXBlPSJwYWxldHRlY29uZmlndXJhdGlvbjpUb29sQ29uZmlndXJhdGlvbiINCisgICAgICAgIGlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLnJlcS5wYWxldHRlLm5vZGUuQmxvY2siDQorICAgICAgICBsYWJlbD0iQmxvY2siDQorICAgICAgICBkZXNjcmlwdGlvbj0iQ3JlYXRlIGEgQmxvY2siPg0KKyAgICAgIDxpY29uDQorICAgICAgICAgIHBsdWdpbklEPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sIg0KKyAgICAgICAgICBpY29uUGF0aD0iaWNvbnMvYmxvY2tzL0Jsb2NrLmdpZiIvPg0KKyAgICAgIDxlbGVtZW50RGVzY3JpcHRvcnMNCisgICAgICAgICAgZWxlbWVudFR5cGVJZD0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5CbG9ja18yMDA4Ii8+DQorICAgICAgPGVsZW1lbnREZXNjcmlwdG9ycw0KKyAgICAgICAgICBlbGVtZW50VHlwZUlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLkJsb2NrXzMwMDQiLz4NCisgICAgICA8ZWxlbWVudERlc2NyaXB0b3JzDQorICAgICAgICAgIGVsZW1lbnRUeXBlSWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuQmxvY2tfMzAwOCIvPg0KKyAgICAgIDxlbGVtZW50RGVzY3JpcHRvcnMNCisgICAgICAgICAgZWxlbWVudFR5cGVJZD0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5CbG9ja18zMDEwIi8+DQorICAgICAgPGVsZW1lbnREZXNjcmlwdG9ycw0KKyAgICAgICAgICBlbGVtZW50VHlwZUlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLkJsb2NrXzMwMTQiLz4NCisgICAgPC9vd25lZENvbmZpZ3VyYXRpb25zPg0KKyAgPC9kcmF3ZXJDb25maWd1cmF0aW9ucz4NCisgIDxkcmF3ZXJDb25maWd1cmF0aW9ucw0KKyAgICAgIGlkPSJFZGdlcyINCisgICAgICBsYWJlbD0iT3RoZXIgRWRnZXMiDQorICAgICAgZGVzY3JpcHRpb249Ik90aGVyIEVkZ2VzIj4NCisgICAgPG93bmVkQ29uZmlndXJhdGlvbnMNCisgICAgICAgIHhzaTp0eXBlPSJwYWxldHRlY29uZmlndXJhdGlvbjpUb29sQ29uZmlndXJhdGlvbiINCisgICAgICAgIGlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLnJlcS5wYWxldHRlLmVkZ2UuQWxsb2NhdGVfQWJzdHJhY3Rpb24iDQorICAgICAgICBsYWJlbD0iQWxsb2NhdGUiDQorICAgICAgICBkZXNjcmlwdGlvbj0iQ3JlYXRlIGEgQWxsb2NhdGUgQWJzdHJhY3Rpb24iDQorICAgICAgICBraW5kPSJDb25uZWN0aW9uVG9vbCI+DQorICAgICAgPGljb24NCisgICAgICAgICAgcGx1Z2luSUQ9Im9yZy5lY2xpcHNlLnVtbDIudW1sLmVkaXQiDQorICAgICAgICAgIGljb25QYXRoPSJpY29ucy9mdWxsL29iajE2L0Fic3RyYWN0aW9uLmdpZiIvPg0KKyAgICAgIDxlbGVtZW50RGVzY3JpcHRvcnMNCisgICAgICAgICAgZWxlbWVudFR5cGVJZD0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNNTC5BbGxvY2F0ZV9BYnN0cmFjdGlvbl80MDA2Ii8+DQorICAgIDwvb3duZWRDb25maWd1cmF0aW9ucz4NCisgICAgPG93bmVkQ29uZmlndXJhdGlvbnMNCisgICAgICAgIHhzaTp0eXBlPSJwYWxldHRlY29uZmlndXJhdGlvbjpUb29sQ29uZmlndXJhdGlvbiINCisgICAgICAgIGlkPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c01MLnJlcS5wYWxldHRlLmVkZ2UuSXRlbUZsb3ciDQorICAgICAgICBsYWJlbD0iSXRlbUZsb3ciDQorICAgICAgICBkZXNjcmlwdGlvbj0iQ3JlYXRlIGEgSXRlbUZsb3ciDQorICAgICAgICBraW5kPSJDb25uZWN0aW9uVG9vbCI+DQorICAgICAgPGljb24NCisgICAgICAgICAgcGx1Z2luSUQ9Im9yZy5lY2xpcHNlLnVtbDIudW1sLmVkaXQiDQorICAgICAgICAgIGljb25QYXRoPSJpY29ucy9mdWxsL29iajE2L0luZm9ybWF0aW9uRmxvdy5naWYiLz4NCisgICAgICA8ZWxlbWVudERlc2NyaXB0b3JzDQorICAgICAgICAgIGVsZW1lbnRUeXBlSWQ9Im9yZy5lY2xpcHNlLnBhcHlydXMuc3lzTUwuSXRlbUZsb3dfNDAyNiIvPg0KKyAgICA8L293bmVkQ29uZmlndXJhdGlvbnM+DQorICA8L2RyYXdlckNvbmZpZ3VyYXRpb25zPg0KKzwvcGFsZXR0ZWNvbmZpZ3VyYXRpb246UGFsZXR0ZUNvbmZpZ3VyYXRpb24+DQpkaWZmIC0tZ2l0IGEvZGlhZ3JhbS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGlhZ3JhbS5yZXF1aXJlbWVudC9yZXNvdXJjZXMvc3R5bGUvcmVxdWlyZW1lbnRkaWFncmFtLmNzcyBiL2RpYWdyYW0vb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRpYWdyYW0ucmVxdWlyZW1lbnQvcmVzb3VyY2VzL3N0eWxlL3JlcXVpcmVtZW50ZGlhZ3JhbS5jc3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTE5OTc4MgotLS0gL2Rldi9udWxsCisrKyBiL2RpYWdyYW0vb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRpYWdyYW0ucmVxdWlyZW1lbnQvcmVzb3VyY2VzL3N0eWxlL3JlcXVpcmVtZW50ZGlhZ3JhbS5jc3MKQEAgLTAsMCArMSw2NiBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorICogQ29weXJpZ2h0IChjKSAyMDE1IENFQSBMSVNULg0KKyAqIA0KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCisgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCisgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICoNCisgKiBDb250cmlidXRvcnM6DQorICogIEJlbm9pdCBNYWdnaSAoQ0VBIExJU1QpIGJlbm9pdC5tYWdnaUBjZWEuZnINCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorQ2xhc3N7DQorCWZvbnROYW1lOiAiU2Vnb2UgVUkiOw0KKwlmaWxsQ29sb3I6ICNDM0Q3REQ7DQorCXRyYW5zcGFyZW5jeTogMDsNCisJZ3JhZGllbnQ6ICNGRkZGRkYgdmVydGljYWw7DQorCWxpbmVDb2xvcjogIzAwMDAwMDsNCisJZWxlbWVudEljb246IGZhbHNlOw0KK30NCisNCitDb21wYXJ0bWVudCB7DQorCXZpc2libGU6ZmFsc2U7DQorfQ0KKw0KK1BhY2thZ2UgPiBDb21wYXJ0bWVudFtraW5kPSJwYWNrYWdlZGVsZW1lbnRzIl0gew0KKyAgICB2aXNpYmxlOnRydWU7DQorICAgIHNob3dUaXRsZTpmYWxzZTsNCit9DQorDQorQ2xhc3NbYXBwbGllZFN0ZXJlb3R5cGVzfj0iUmVxdWlyZW1lbnQiXSA+IENvbXBhcnRtZW50W3R5cGU9U3RlcmVvdHlwZUNvbXBhcnRtZW50XSB7DQorICAgIHZpc2libGU6dHJ1ZTsNCisgICAgc2hvd1RpdGxlOnRydWU7DQorfQ0KKw0KK0NsYXNzW2FwcGxpZWRTdGVyZW90eXBlc349IlJlcXVpcmVtZW50Il0gPiBDb21wYXJ0bWVudFt0eXBlPVN0ZXJlb3R5cGVDb21wYXJ0bWVudF0gPiBbcHJvcGVydHk9ImRlcml2ZWQiXXsNCisJdmlzaWJsZTpmYWxzZTsNCit9DQorDQorQ2xhc3NbYXBwbGllZFN0ZXJlb3R5cGVzfj0iUmVxdWlyZW1lbnQiXSA+IENvbXBhcnRtZW50W3R5cGU9U3RlcmVvdHlwZUNvbXBhcnRtZW50XSA+IFtwcm9wZXJ0eT0iZGVyaXZlZEZyb20iXXsNCisJdmlzaWJsZTpmYWxzZTsNCit9DQorDQorQ2xhc3NbYXBwbGllZFN0ZXJlb3R5cGVzfj0iUmVxdWlyZW1lbnQiXSA+IENvbXBhcnRtZW50W3R5cGU9U3RlcmVvdHlwZUNvbXBhcnRtZW50XSA+IFtwcm9wZXJ0eT0ic2F0aXNmaWVkQnkiXXsNCisJdmlzaWJsZTpmYWxzZTsNCit9DQorDQorQ2xhc3NbYXBwbGllZFN0ZXJlb3R5cGVzfj0iUmVxdWlyZW1lbnQiXSA+IENvbXBhcnRtZW50W3R5cGU9U3RlcmVvdHlwZUNvbXBhcnRtZW50XSA+IFtwcm9wZXJ0eT0icmVmaW5lZEJ5Il17DQorCXZpc2libGU6ZmFsc2U7DQorfQ0KKw0KK0NsYXNzW2FwcGxpZWRTdGVyZW90eXBlc349IlJlcXVpcmVtZW50Il0gPiBDb21wYXJ0bWVudFt0eXBlPVN0ZXJlb3R5cGVDb21wYXJ0bWVudF0gPiBbcHJvcGVydHk9InRyYWNlZFRvIl17DQorCXZpc2libGU6ZmFsc2U7DQorfQ0KKw0KK0NsYXNzW2FwcGxpZWRTdGVyZW90eXBlc349IlJlcXVpcmVtZW50Il0gPiBDb21wYXJ0bWVudFt0eXBlPVN0ZXJlb3R5cGVDb21wYXJ0bWVudF0gPiBbcHJvcGVydHk9InZlcmlmaWVkQnkiXXsNCisJdmlzaWJsZTpmYWxzZTsNCit9DQorDQorQ2xhc3NbYXBwbGllZFN0ZXJlb3R5cGVzfj0iUmVxdWlyZW1lbnQiXSA+IENvbXBhcnRtZW50W3R5cGU9U3RlcmVvdHlwZUNvbXBhcnRtZW50XSA+IFtwcm9wZXJ0eT0ibWFzdGVyIl17DQorCXZpc2libGU6ZmFsc2U7DQorfQ0KKw0KK0NsYXNzW2FwcGxpZWRTdGVyZW90eXBlc349IlJlcXVpcmVtZW50Il0gPiBDb21wYXJ0bWVudFtraW5kPSJvcGVyYXRpb25zIl0gew0KKyAgICB2aXNpYmxlOnRydWU7DQorICAgIHNob3dUaXRsZTpmYWxzZTsNCit9DQpkaWZmIC0tZ2l0IGEvZGlhZ3JhbS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGlhZ3JhbS5yZXF1aXJlbWVudC9zcmMvb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L2RpYWdyYW0vcmVxdWlyZW1lbnQvQWN0aXZhdG9yLmphdmEgYi9kaWFncmFtL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kaWFncmFtLnJlcXVpcmVtZW50L3NyYy9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvZGlhZ3JhbS9yZXF1aXJlbWVudC9BY3RpdmF0b3IuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMWUxY2Y0Ci0tLSAvZGV2L251bGwKKysrIGIvZGlhZ3JhbS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGlhZ3JhbS5yZXF1aXJlbWVudC9zcmMvb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L2RpYWdyYW0vcmVxdWlyZW1lbnQvQWN0aXZhdG9yLmphdmEKQEAgLTAsMCArMSw0MSBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorICogQ29weXJpZ2h0IChjKSAyMDE1IENFQSBMSVNULg0KKyAqDQorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KKyAqIGFyZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgdjEuMA0KKyAqIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQorICogaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisgKg0KKyAqIENvbnRyaWJ1dG9yczoNCisgKiAgQmVub2l0IE1hZ2dpIChDRUEgTElTVCkgYmVub2l0Lm1hZ2dpQGNlYS5mciAtIEluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbg0KKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCitwYWNrYWdlIG9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kaWFncmFtLnJlcXVpcmVtZW50Ow0KKw0KK2ltcG9ydCBvcmcub3NnaS5mcmFtZXdvcmsuQnVuZGxlQWN0aXZhdG9yOw0KK2ltcG9ydCBvcmcub3NnaS5mcmFtZXdvcmsuQnVuZGxlQ29udGV4dDsNCisNCitwdWJsaWMgY2xhc3MgQWN0aXZhdG9yIGltcGxlbWVudHMgQnVuZGxlQWN0aXZhdG9yIHsNCisNCisJcHJpdmF0ZSBzdGF0aWMgQnVuZGxlQ29udGV4dCBjb250ZXh0Ow0KKw0KKwlzdGF0aWMgQnVuZGxlQ29udGV4dCBnZXRDb250ZXh0KCkgew0KKwkJcmV0dXJuIGNvbnRleHQ7DQorCX0NCisNCisJLyoNCisJICogKG5vbi1KYXZhZG9jKQ0KKwkgKiBAc2VlIG9yZy5vc2dpLmZyYW1ld29yay5CdW5kbGVBY3RpdmF0b3Ijc3RhcnQob3JnLm9zZ2kuZnJhbWV3b3JrLkJ1bmRsZUNvbnRleHQpDQorCSAqLw0KKwlwdWJsaWMgdm9pZCBzdGFydChCdW5kbGVDb250ZXh0IGJ1bmRsZUNvbnRleHQpIHRocm93cyBFeGNlcHRpb24gew0KKwkJQWN0aXZhdG9yLmNvbnRleHQgPSBidW5kbGVDb250ZXh0Ow0KKwl9DQorDQorCS8qDQorCSAqIChub24tSmF2YWRvYykNCisJICogQHNlZSBvcmcub3NnaS5mcmFtZXdvcmsuQnVuZGxlQWN0aXZhdG9yI3N0b3Aob3JnLm9zZ2kuZnJhbWV3b3JrLkJ1bmRsZUNvbnRleHQpDQorCSAqLw0KKwlwdWJsaWMgdm9pZCBzdG9wKEJ1bmRsZUNvbnRleHQgYnVuZGxlQ29udGV4dCkgdGhyb3dzIEV4Y2VwdGlvbiB7DQorCQlBY3RpdmF0b3IuY29udGV4dCA9IG51bGw7DQorCX0NCisNCit9DQpkaWZmIC0tZ2l0IGEvZGlhZ3JhbS9wb20ueG1sIGIvZGlhZ3JhbS9wb20ueG1sCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjEwYzljMzkKLS0tIC9kZXYvbnVsbAorKysgYi9kaWFncmFtL3BvbS54bWwKQEAgLTAsMCArMSwyMSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxwcm9qZWN0PgorCTxtb2RlbFZlcnNpb24+NC4wLjA8L21vZGVsVmVyc2lvbj4KKwk8cGFyZW50PgorCQk8YXJ0aWZhY3RJZD5vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sPC9hcnRpZmFjdElkPgorCQk8Z3JvdXBJZD5vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sPC9ncm91cElkPgorCQk8dmVyc2lvbj4wLjcuMC1TTkFQU0hPVDwvdmVyc2lvbj4KKwk8L3BhcmVudD4JCisJPGdyb3VwSWQ+b3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDwvZ3JvdXBJZD4KKwk8YXJ0aWZhY3RJZD5vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sLmRpYWdyYW08L2FydGlmYWN0SWQ+CisJPHZlcnNpb24+MC43LjAtU05BUFNIT1Q8L3ZlcnNpb24+CisJPHBhY2thZ2luZz5wb208L3BhY2thZ2luZz4KKwk8bW9kdWxlcz4KKwkJPG1vZHVsZT5vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGlhZ3JhbS5jb21tb248L21vZHVsZT4KKwkJPG1vZHVsZT5vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGlhZ3JhbS5jb21tb24udGVzdHM8L21vZHVsZT4KKwkJPG1vZHVsZT5vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGlhZ3JhbS5ibG9ja2RlZmluaXRpb248L21vZHVsZT4KKwkJPG1vZHVsZT5vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuZGlhZ3JhbS5pbnRlcm5hbGJsb2NrPC9tb2R1bGU+CisJCTxtb2R1bGU+b3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LmRpYWdyYW0ucGFyYW1ldHJpYzwvbW9kdWxlPgorCQk8bW9kdWxlPm9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC5kaWFncmFtLnJlcXVpcmVtZW50PC9tb2R1bGU+CisJPC9tb2R1bGVzPgorPC9wcm9qZWN0PgpkaWZmIC0tZ2l0IGEvcG9tLnhtbCBiL3BvbS54bWwKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uMjE5ZGU4MgotLS0gL2Rldi9udWxsCisrKyBiL3BvbS54bWwKQEAgLTAsMCArMSwxNDAgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8cHJvamVjdD4KKwk8bW9kZWxWZXJzaW9uPjQuMC4wPC9tb2RlbFZlcnNpb24+CisJPGdyb3VwSWQ+b3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDwvZ3JvdXBJZD4KKwk8YXJ0aWZhY3RJZD5vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sPC9hcnRpZmFjdElkPgorCTx2ZXJzaW9uPjAuNy4wLVNOQVBTSE9UPC92ZXJzaW9uPgorCTxwYWNrYWdpbmc+cG9tPC9wYWNrYWdpbmc+CisJPG1vZHVsZXM+CisJCTxtb2R1bGU+Y29yZTwvbW9kdWxlPgorCQk8bW9kdWxlPmRpYWdyYW08L21vZHVsZT4KKwkJPCEtLTxtb2R1bGU+dGFibGU8L21vZHVsZT4tLT4KKwkJPG1vZHVsZT51aTwvbW9kdWxlPgorCQk8IS0tPG1vZHVsZT5yZWxlbmc8L21vZHVsZT4tLT4KKwk8L21vZHVsZXM+CisJPHByb3BlcnRpZXM+CisJCTx0eWNoby12ZXJzaW9uPjAuMjMuMDwvdHljaG8tdmVyc2lvbj4KKwkJPHR5Y2hvRXh0cmFzVmVyc2lvbj4wLjIzLjA8L3R5Y2hvRXh0cmFzVmVyc2lvbj4KKwk8L3Byb3BlcnRpZXM+CisJPHJlcG9zaXRvcmllcz4KKwkJPHJlcG9zaXRvcnk+CisJCQk8aWQ+ZWNsaXBzZS1tYXJzPC9pZD4KKwkJCTxsYXlvdXQ+cDI8L2xheW91dD4KKwkJCTx1cmw+aHR0cDovL2Rvd25sb2FkLmVjbGlwc2Uub3JnL3JlbGVhc2VzL21hcnMvPC91cmw+CisJCTwvcmVwb3NpdG9yeT4KKwkJPHJlcG9zaXRvcnk+CisJCQk8aWQ+cGFweXJ1cy1tYXJzLW5pZ2h0bHktZGV2ZWxvcGVyPC9pZD4KKwkJCTxsYXlvdXQ+cDI8L2xheW91dD4KKwkJCTx1cmw+aHR0cHM6Ly9odWRzb24uZWNsaXBzZS5vcmcvcGFweXJ1cy9qb2IvUGFweXJ1cy1NYXJzLURldmVsb3Blci9sYXN0U3VjY2Vzc2Z1bEJ1aWxkL2FydGlmYWN0L3JlcG9zaXRvcnkvPC91cmw+CisJCTwvcmVwb3NpdG9yeT4JCQorCTwvcmVwb3NpdG9yaWVzPgorCTxidWlsZD4KKwkJPHBsdWdpbnM+CisJCQk8cGx1Z2luPgorCQkJCTxncm91cElkPm9yZy5hcGFjaGUubWF2ZW4ucGx1Z2luczwvZ3JvdXBJZD4KKwkJCQk8YXJ0aWZhY3RJZD5tYXZlbi1yZXNvdXJjZXMtcGx1Z2luPC9hcnRpZmFjdElkPgorCQkJCTx2ZXJzaW9uPjIuNjwvdmVyc2lvbj4KKwkJCQk8Y29uZmlndXJhdGlvbj4KKwkJCQkJPGVuY29kaW5nPlVURi04PC9lbmNvZGluZz4KKwkJCQk8L2NvbmZpZ3VyYXRpb24+CisJCQk8L3BsdWdpbj4KKwkJCTxwbHVnaW4+CisJCQkJPGdyb3VwSWQ+b3JnLmVjbGlwc2UudHljaG88L2dyb3VwSWQ+CisJCQkJPGFydGlmYWN0SWQ+dHljaG8tY29tcGlsZXItcGx1Z2luPC9hcnRpZmFjdElkPgorCQkJCTx2ZXJzaW9uPiR7dHljaG8tdmVyc2lvbn08L3ZlcnNpb24+CisJCQkJPGNvbmZpZ3VyYXRpb24+CisJCQkJCTxzb3VyY2U+MS43PC9zb3VyY2U+CisJCQkJCTx0YXJnZXQ+MS43PC90YXJnZXQ+CisJCQkJCTxvcHRpbWl6ZT50cnVlPC9vcHRpbWl6ZT4KKwkJCQkJPHNob3dXYXJuaW5ncz50cnVlPC9zaG93V2FybmluZ3M+CisJCQkJPC9jb25maWd1cmF0aW9uPgorCQkJPC9wbHVnaW4+CisJCQk8IS0tIGVuYWJsZSB0eWNobyBidWlsZCBleHRlbnNpb24gLS0+CisJCQk8cGx1Z2luPgorCQkJCTxncm91cElkPm9yZy5lY2xpcHNlLnR5Y2hvPC9ncm91cElkPgorCQkJCTxhcnRpZmFjdElkPnR5Y2hvLW1hdmVuLXBsdWdpbjwvYXJ0aWZhY3RJZD4KKwkJCQk8dmVyc2lvbj4ke3R5Y2hvLXZlcnNpb259PC92ZXJzaW9uPgorCQkJCTxleHRlbnNpb25zPnRydWU8L2V4dGVuc2lvbnM+CisJCQk8L3BsdWdpbj4KKwkJCTxwbHVnaW4+CisJCQkJPGdyb3VwSWQ+b3JnLmVjbGlwc2UudHljaG88L2dyb3VwSWQ+CisJCQkJPGFydGlmYWN0SWQ+dHljaG8tcDItcmVwb3NpdG9yeS1wbHVnaW48L2FydGlmYWN0SWQ+CisJCQkJPHZlcnNpb24+JHt0eWNoby12ZXJzaW9ufTwvdmVyc2lvbj4KKwkJCTwvcGx1Z2luPgorCQkJPHBsdWdpbj48IS0tIGVuYWJsZSBzb3VyY2UgYnVuZGxlIGdlbmVyYXRpb24gLS0+CisJCQkJPGdyb3VwSWQ+b3JnLmVjbGlwc2UudHljaG88L2dyb3VwSWQ+CisJCQkJPGFydGlmYWN0SWQ+dHljaG8tc291cmNlLXBsdWdpbjwvYXJ0aWZhY3RJZD4KKwkJCQk8dmVyc2lvbj4ke3R5Y2hvLXZlcnNpb259PC92ZXJzaW9uPgorCQkJCTxleGVjdXRpb25zPgorCQkJCQk8ZXhlY3V0aW9uPgorCQkJCQkJPGlkPnBsdWdpbi1zb3VyY2U8L2lkPgorCQkJCQkJPGdvYWxzPgorCQkJCQkJCTxnb2FsPnBsdWdpbi1zb3VyY2U8L2dvYWw+CisJCQkJCQk8L2dvYWxzPgorCQkJCQk8L2V4ZWN1dGlvbj4KKwkJCQk8L2V4ZWN1dGlvbnM+CisJCQk8L3BsdWdpbj4KKwkJCTxwbHVnaW4+CisJCQkJPGdyb3VwSWQ+b3JnLmVjbGlwc2UudHljaG8uZXh0cmFzPC9ncm91cElkPgorCQkJCTxhcnRpZmFjdElkPnR5Y2hvLXNvdXJjZS1mZWF0dXJlLXBsdWdpbjwvYXJ0aWZhY3RJZD4KKwkJCQk8dmVyc2lvbj4ke3R5Y2hvRXh0cmFzVmVyc2lvbn08L3ZlcnNpb24+CisJCQkJPGV4ZWN1dGlvbnM+CisJCQkJCTxleGVjdXRpb24+CisJCQkJCQk8aWQ+c291cmNlLWZlYXR1cmU8L2lkPgorCQkJCQkJPHBoYXNlPnBhY2thZ2U8L3BoYXNlPgorCQkJCQkJPGdvYWxzPgorCQkJCQkJCTxnb2FsPnNvdXJjZS1mZWF0dXJlPC9nb2FsPgorCQkJCQkJPC9nb2Fscz4KKwkJCQkJPC9leGVjdXRpb24+CisJCQkJPC9leGVjdXRpb25zPgorCQkJPC9wbHVnaW4+CisJCQk8cGx1Z2luPgorCQkJCTxncm91cElkPm9yZy5lY2xpcHNlLnR5Y2hvPC9ncm91cElkPgorCQkJCTxhcnRpZmFjdElkPnR5Y2hvLXAyLXBsdWdpbjwvYXJ0aWZhY3RJZD4KKwkJCQk8dmVyc2lvbj4ke3R5Y2hvLXZlcnNpb259PC92ZXJzaW9uPgorCQkJCTxleGVjdXRpb25zPgorCQkJCQk8ZXhlY3V0aW9uPgorCQkJCQkJPGlkPmF0dGFjaC1wMi1tZXRhZGF0YTwvaWQ+CisJCQkJCQk8cGhhc2U+cGFja2FnZTwvcGhhc2U+CisJCQkJCQk8Z29hbHM+CisJCQkJCQkJPGdvYWw+cDItbWV0YWRhdGE8L2dvYWw+CisJCQkJCQk8L2dvYWxzPgorCQkJCQk8L2V4ZWN1dGlvbj4KKwkJCQk8L2V4ZWN1dGlvbnM+CisJCQk8L3BsdWdpbj4KKwkJCTxwbHVnaW4+CisJCQkJPGdyb3VwSWQ+b3JnLmVjbGlwc2UudHljaG88L2dyb3VwSWQ+CisJCQkJPGFydGlmYWN0SWQ+dHljaG8tdmVyc2lvbnMtcGx1Z2luPC9hcnRpZmFjdElkPgorCQkJCTx2ZXJzaW9uPiR7dHljaG8tdmVyc2lvbn08L3ZlcnNpb24+CisJCQk8L3BsdWdpbj4KKwkJCTxwbHVnaW4+CisJCQkJPGdyb3VwSWQ+b3JnLmVjbGlwc2UudHljaG88L2dyb3VwSWQ+CisJCQkJPGFydGlmYWN0SWQ+dHljaG8tc3VyZWZpcmUtcGx1Z2luPC9hcnRpZmFjdElkPgorCQkJCTx2ZXJzaW9uPiR7dHljaG8tdmVyc2lvbn08L3ZlcnNpb24+CisJCQkJPGNvbmZpZ3VyYXRpb24+CisJCQkJCTxmYWlsSWZOb1Rlc3RzPmZhbHNlPC9mYWlsSWZOb1Rlc3RzPgorCQkJCQk8dXNlVUlIYXJuZXNzPnRydWU8L3VzZVVJSGFybmVzcz4KKwkJCQkJPHVzZVVJVGhyZWFkPnRydWU8L3VzZVVJVGhyZWFkPgorCQkJCQk8IS0tPHNob3dFY2xpcHNlTG9nPnRydWU8L3Nob3dFY2xpcHNlTG9nPi0tPgorCQkJCQk8IS0tPHRlc3RGYWlsdXJlSWdub3JlPnRydWU8L3Rlc3RGYWlsdXJlSWdub3JlPi0tPgorCQkJCQk8YXJnTGluZT4tWG1zNTEybSAtWG14MjA0OG0gLVhYOk1heFBlcm1TaXplPTUxMk08L2FyZ0xpbmU+CisJCQkJCTwhLS08cHJvZHVjdD5vcmcuZWNsaXBzZS5zZGsuaWRlPC9wcm9kdWN0PgorCQkJCQkgPGRlcGVuZGVuY2llcz4KKwkJCQkJCTxkZXBlbmRlbmN5PgorCQkJCQkJICA8dHlwZT5lY2xpcHNlLXBsdWdpbjwvdHlwZT4KKwkJCQkJCSAgPGFydGlmYWN0SWQ+b3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnNlcnZpY2UudHlwZXM8L2FydGlmYWN0SWQ+CisJCQkJCQkgIDx2ZXJzaW9uPjAuMC4wPC92ZXJzaW9uPgorCQkJCQkJPC9kZXBlbmRlbmN5PgorCQkJCQkgIDwvZGVwZW5kZW5jaWVzPi0tPgorCQkJCQkgIDxidW5kbGVTdGFydExldmVsPgorICA8YnVuZGxlPgorICAgIDxpZD5vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQuc2VydmljZS50eXBlczwvaWQ+CisgICAgPGxldmVsPjY8L2xldmVsPgorICAgIDxhdXRvU3RhcnQ+dHJ1ZTwvYXV0b1N0YXJ0PgorICA8L2J1bmRsZT4KKzwvYnVuZGxlU3RhcnRMZXZlbD4KKwkJCQk8L2NvbmZpZ3VyYXRpb24+CisJCQk8L3BsdWdpbj4JCQkKKwkJPC9wbHVnaW5zPgorCTwvYnVpbGQ+Cis8L3Byb2plY3Q+CmRpZmYgLS1naXQgYS91aS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQudWkvLmNsYXNzcGF0aCBiL3VpL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC51aS8uY2xhc3NwYXRoCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjhhOGYxNjYKLS0tIC9kZXYvbnVsbAorKysgYi91aS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQudWkvLmNsYXNzcGF0aApAQCAtMCwwICsxLDcgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+DQorPGNsYXNzcGF0aD4NCisJPGNsYXNzcGF0aGVudHJ5IGtpbmQ9ImNvbiIgcGF0aD0ib3JnLmVjbGlwc2UuamR0LmxhdW5jaGluZy5KUkVfQ09OVEFJTkVSL29yZy5lY2xpcHNlLmpkdC5pbnRlcm5hbC5kZWJ1Zy51aS5sYXVuY2hlci5TdGFuZGFyZFZNVHlwZS9KYXZhU0UtMS42Ii8+DQorCTxjbGFzc3BhdGhlbnRyeSBraW5kPSJjb24iIHBhdGg9Im9yZy5lY2xpcHNlLnBkZS5jb3JlLnJlcXVpcmVkUGx1Z2lucyIvPg0KKwk8Y2xhc3NwYXRoZW50cnkga2luZD0ic3JjIiBwYXRoPSJzcmMiLz4NCisJPGNsYXNzcGF0aGVudHJ5IGtpbmQ9Im91dHB1dCIgcGF0aD0iYmluIi8+DQorPC9jbGFzc3BhdGg+DQpkaWZmIC0tZ2l0IGEvdWkvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnVpLy5wcm9qZWN0IGIvdWkvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnVpLy5wcm9qZWN0Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmI1NmE4YmQKLS0tIC9kZXYvbnVsbAorKysgYi91aS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQudWkvLnByb2plY3QKQEAgLTAsMCArMSwyOCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4NCis8cHJvamVjdERlc2NyaXB0aW9uPg0KKwk8bmFtZT5vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQudWk8L25hbWU+DQorCTxjb21tZW50PjwvY29tbWVudD4NCisJPHByb2plY3RzPg0KKwk8L3Byb2plY3RzPg0KKwk8YnVpbGRTcGVjPg0KKwkJPGJ1aWxkQ29tbWFuZD4NCisJCQk8bmFtZT5vcmcuZWNsaXBzZS5qZHQuY29yZS5qYXZhYnVpbGRlcjwvbmFtZT4NCisJCQk8YXJndW1lbnRzPg0KKwkJCTwvYXJndW1lbnRzPg0KKwkJPC9idWlsZENvbW1hbmQ+DQorCQk8YnVpbGRDb21tYW5kPg0KKwkJCTxuYW1lPm9yZy5lY2xpcHNlLnBkZS5NYW5pZmVzdEJ1aWxkZXI8L25hbWU+DQorCQkJPGFyZ3VtZW50cz4NCisJCQk8L2FyZ3VtZW50cz4NCisJCTwvYnVpbGRDb21tYW5kPg0KKwkJPGJ1aWxkQ29tbWFuZD4NCisJCQk8bmFtZT5vcmcuZWNsaXBzZS5wZGUuU2NoZW1hQnVpbGRlcjwvbmFtZT4NCisJCQk8YXJndW1lbnRzPg0KKwkJCTwvYXJndW1lbnRzPg0KKwkJPC9idWlsZENvbW1hbmQ+DQorCTwvYnVpbGRTcGVjPg0KKwk8bmF0dXJlcz4NCisJCTxuYXR1cmU+b3JnLmVjbGlwc2UucGRlLlBsdWdpbk5hdHVyZTwvbmF0dXJlPg0KKwkJPG5hdHVyZT5vcmcuZWNsaXBzZS5qZHQuY29yZS5qYXZhbmF0dXJlPC9uYXR1cmU+DQorCTwvbmF0dXJlcz4NCis8L3Byb2plY3REZXNjcmlwdGlvbj4NCmRpZmYgLS1naXQgYS91aS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQudWkvLnNldHRpbmdzL29yZy5lY2xpcHNlLmpkdC5jb3JlLnByZWZzIGIvdWkvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnVpLy5zZXR0aW5ncy9vcmcuZWNsaXBzZS5qZHQuY29yZS5wcmVmcwpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi40MTAyNDRkCi0tLSAvZGV2L251bGwKKysrIGIvdWkvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnVpLy5zZXR0aW5ncy9vcmcuZWNsaXBzZS5qZHQuY29yZS5wcmVmcwpAQCAtMCwwICsxLDI5MSBAQAorZWNsaXBzZS5wcmVmZXJlbmNlcy52ZXJzaW9uPTENCitvcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5jb2RlZ2VuLmlubGluZUpzckJ5dGVjb2RlPWVuYWJsZWQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5jb2RlZ2VuLnRhcmdldFBsYXRmb3JtPTEuNg0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLmNvbXBsaWFuY2U9MS42DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5hc3NlcnRJZGVudGlmaWVyPWVycm9yDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIucHJvYmxlbS5lbnVtSWRlbnRpZmllcj1lcnJvcg0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnNvdXJjZT0xLjYNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuYWxpZ25fdHlwZV9tZW1iZXJzX29uX2NvbHVtbnM9ZmFsc2UNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuYWxpZ25tZW50X2Zvcl9hcmd1bWVudHNfaW5fYWxsb2NhdGlvbl9leHByZXNzaW9uPTE2DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmFsaWdubWVudF9mb3JfYXJndW1lbnRzX2luX2Fubm90YXRpb249MA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5hbGlnbm1lbnRfZm9yX2FyZ3VtZW50c19pbl9lbnVtX2NvbnN0YW50PTE2DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmFsaWdubWVudF9mb3JfYXJndW1lbnRzX2luX2V4cGxpY2l0X2NvbnN0cnVjdG9yX2NhbGw9MTYNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuYWxpZ25tZW50X2Zvcl9hcmd1bWVudHNfaW5fbWV0aG9kX2ludm9jYXRpb249MTYNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuYWxpZ25tZW50X2Zvcl9hcmd1bWVudHNfaW5fcXVhbGlmaWVkX2FsbG9jYXRpb25fZXhwcmVzc2lvbj0xNg0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5hbGlnbm1lbnRfZm9yX2Fzc2lnbm1lbnQ9MA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5hbGlnbm1lbnRfZm9yX2JpbmFyeV9leHByZXNzaW9uPTE2DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmFsaWdubWVudF9mb3JfY29tcGFjdF9pZj0xNg0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5hbGlnbm1lbnRfZm9yX2NvbmRpdGlvbmFsX2V4cHJlc3Npb249ODANCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuYWxpZ25tZW50X2Zvcl9lbnVtX2NvbnN0YW50cz0wDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmFsaWdubWVudF9mb3JfZXhwcmVzc2lvbnNfaW5fYXJyYXlfaW5pdGlhbGl6ZXI9MTYNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuYWxpZ25tZW50X2Zvcl9tZXRob2RfZGVjbGFyYXRpb249MA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5hbGlnbm1lbnRfZm9yX211bHRpcGxlX2ZpZWxkcz0xNg0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5hbGlnbm1lbnRfZm9yX3BhcmFtZXRlcnNfaW5fY29uc3RydWN0b3JfZGVjbGFyYXRpb249MTYNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuYWxpZ25tZW50X2Zvcl9wYXJhbWV0ZXJzX2luX21ldGhvZF9kZWNsYXJhdGlvbj0xNg0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5hbGlnbm1lbnRfZm9yX3Jlc291cmNlc19pbl90cnk9ODANCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuYWxpZ25tZW50X2Zvcl9zZWxlY3Rvcl9pbl9tZXRob2RfaW52b2NhdGlvbj0xNg0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5hbGlnbm1lbnRfZm9yX3N1cGVyY2xhc3NfaW5fdHlwZV9kZWNsYXJhdGlvbj0xNg0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5hbGlnbm1lbnRfZm9yX3N1cGVyaW50ZXJmYWNlc19pbl9lbnVtX2RlY2xhcmF0aW9uPTE2DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmFsaWdubWVudF9mb3Jfc3VwZXJpbnRlcmZhY2VzX2luX3R5cGVfZGVjbGFyYXRpb249MTYNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuYWxpZ25tZW50X2Zvcl90aHJvd3NfY2xhdXNlX2luX2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uPTE2DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmFsaWdubWVudF9mb3JfdGhyb3dzX2NsYXVzZV9pbl9tZXRob2RfZGVjbGFyYXRpb249MTYNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuYWxpZ25tZW50X2Zvcl91bmlvbl90eXBlX2luX211bHRpY2F0Y2g9MTYNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuYmxhbmtfbGluZXNfYWZ0ZXJfaW1wb3J0cz0xDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmJsYW5rX2xpbmVzX2FmdGVyX3BhY2thZ2U9MQ0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5ibGFua19saW5lc19iZWZvcmVfZmllbGQ9MA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5ibGFua19saW5lc19iZWZvcmVfZmlyc3RfY2xhc3NfYm9keV9kZWNsYXJhdGlvbj0wDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmJsYW5rX2xpbmVzX2JlZm9yZV9pbXBvcnRzPTENCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuYmxhbmtfbGluZXNfYmVmb3JlX21lbWJlcl90eXBlPTENCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuYmxhbmtfbGluZXNfYmVmb3JlX21ldGhvZD0xDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmJsYW5rX2xpbmVzX2JlZm9yZV9uZXdfY2h1bms9MQ0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5ibGFua19saW5lc19iZWZvcmVfcGFja2FnZT0wDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmJsYW5rX2xpbmVzX2JldHdlZW5faW1wb3J0X2dyb3Vwcz0xDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmJsYW5rX2xpbmVzX2JldHdlZW5fdHlwZV9kZWNsYXJhdGlvbnM9MQ0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5icmFjZV9wb3NpdGlvbl9mb3JfYW5ub3RhdGlvbl90eXBlX2RlY2xhcmF0aW9uPWVuZF9vZl9saW5lDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmJyYWNlX3Bvc2l0aW9uX2Zvcl9hbm9ueW1vdXNfdHlwZV9kZWNsYXJhdGlvbj1lbmRfb2ZfbGluZQ0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5icmFjZV9wb3NpdGlvbl9mb3JfYXJyYXlfaW5pdGlhbGl6ZXI9ZW5kX29mX2xpbmUNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuYnJhY2VfcG9zaXRpb25fZm9yX2Jsb2NrPWVuZF9vZl9saW5lDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmJyYWNlX3Bvc2l0aW9uX2Zvcl9ibG9ja19pbl9jYXNlPWVuZF9vZl9saW5lDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmJyYWNlX3Bvc2l0aW9uX2Zvcl9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbj1lbmRfb2ZfbGluZQ0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5icmFjZV9wb3NpdGlvbl9mb3JfZW51bV9jb25zdGFudD1lbmRfb2ZfbGluZQ0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5icmFjZV9wb3NpdGlvbl9mb3JfZW51bV9kZWNsYXJhdGlvbj1lbmRfb2ZfbGluZQ0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5icmFjZV9wb3NpdGlvbl9mb3JfbGFtYmRhX2JvZHk9ZW5kX29mX2xpbmUNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuYnJhY2VfcG9zaXRpb25fZm9yX21ldGhvZF9kZWNsYXJhdGlvbj1lbmRfb2ZfbGluZQ0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5icmFjZV9wb3NpdGlvbl9mb3Jfc3dpdGNoPWVuZF9vZl9saW5lDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmJyYWNlX3Bvc2l0aW9uX2Zvcl90eXBlX2RlY2xhcmF0aW9uPWVuZF9vZl9saW5lDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmNvbW1lbnQuY2xlYXJfYmxhbmtfbGluZXNfaW5fYmxvY2tfY29tbWVudD1mYWxzZQ0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5jb21tZW50LmNsZWFyX2JsYW5rX2xpbmVzX2luX2phdmFkb2NfY29tbWVudD1mYWxzZQ0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5jb21tZW50LmZvcm1hdF9ibG9ja19jb21tZW50cz10cnVlDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmNvbW1lbnQuZm9ybWF0X2hlYWRlcj1mYWxzZQ0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5jb21tZW50LmZvcm1hdF9odG1sPXRydWUNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuY29tbWVudC5mb3JtYXRfamF2YWRvY19jb21tZW50cz10cnVlDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmNvbW1lbnQuZm9ybWF0X2xpbmVfY29tbWVudHM9dHJ1ZQ0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5jb21tZW50LmZvcm1hdF9zb3VyY2VfY29kZT10cnVlDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmNvbW1lbnQuaW5kZW50X3BhcmFtZXRlcl9kZXNjcmlwdGlvbj10cnVlDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmNvbW1lbnQuaW5kZW50X3Jvb3RfdGFncz10cnVlDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmNvbW1lbnQuaW5zZXJ0X25ld19saW5lX2JlZm9yZV9yb290X3RhZ3M9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmNvbW1lbnQuaW5zZXJ0X25ld19saW5lX2Zvcl9wYXJhbWV0ZXI9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmNvbW1lbnQubGluZV9sZW5ndGg9MjYwDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmNvbW1lbnQubmV3X2xpbmVzX2F0X2Jsb2NrX2JvdW5kYXJpZXM9dHJ1ZQ0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5jb21tZW50Lm5ld19saW5lc19hdF9qYXZhZG9jX2JvdW5kYXJpZXM9dHJ1ZQ0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5jb21tZW50LnByZXNlcnZlX3doaXRlX3NwYWNlX2JldHdlZW5fY29kZV9hbmRfbGluZV9jb21tZW50cz1mYWxzZQ0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5jb21wYWN0X2Vsc2VfaWY9dHJ1ZQ0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5jb250aW51YXRpb25faW5kZW50YXRpb249Mg0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5jb250aW51YXRpb25faW5kZW50YXRpb25fZm9yX2FycmF5X2luaXRpYWxpemVyPTINCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuZGlzYWJsaW5nX3RhZz1AZm9ybWF0dGVyXDpvZmYNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuZW5hYmxpbmdfdGFnPUBmb3JtYXR0ZXJcOm9uDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmZvcm1hdF9ndWFyZGlhbl9jbGF1c2Vfb25fb25lX2xpbmU9ZmFsc2UNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuZm9ybWF0X2xpbmVfY29tbWVudF9zdGFydGluZ19vbl9maXJzdF9jb2x1bW49dHJ1ZQ0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbmRlbnRfYm9keV9kZWNsYXJhdGlvbnNfY29tcGFyZV90b19hbm5vdGF0aW9uX2RlY2xhcmF0aW9uX2hlYWRlcj10cnVlDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluZGVudF9ib2R5X2RlY2xhcmF0aW9uc19jb21wYXJlX3RvX2VudW1fY29uc3RhbnRfaGVhZGVyPXRydWUNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5kZW50X2JvZHlfZGVjbGFyYXRpb25zX2NvbXBhcmVfdG9fZW51bV9kZWNsYXJhdGlvbl9oZWFkZXI9dHJ1ZQ0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbmRlbnRfYm9keV9kZWNsYXJhdGlvbnNfY29tcGFyZV90b190eXBlX2hlYWRlcj10cnVlDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluZGVudF9icmVha3NfY29tcGFyZV90b19jYXNlcz10cnVlDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluZGVudF9lbXB0eV9saW5lcz1mYWxzZQ0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbmRlbnRfc3RhdGVtZW50c19jb21wYXJlX3RvX2Jsb2NrPXRydWUNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5kZW50X3N0YXRlbWVudHNfY29tcGFyZV90b19ib2R5PXRydWUNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5kZW50X3N3aXRjaHN0YXRlbWVudHNfY29tcGFyZV90b19jYXNlcz10cnVlDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluZGVudF9zd2l0Y2hzdGF0ZW1lbnRzX2NvbXBhcmVfdG9fc3dpdGNoPWZhbHNlDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluZGVudGF0aW9uLnNpemU9NA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfbmV3X2xpbmVfYWZ0ZXJfYW5ub3RhdGlvbl9vbl9maWVsZD1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X25ld19saW5lX2FmdGVyX2Fubm90YXRpb25fb25fbG9jYWxfdmFyaWFibGU9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9uZXdfbGluZV9hZnRlcl9hbm5vdGF0aW9uX29uX21ldGhvZD1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X25ld19saW5lX2FmdGVyX2Fubm90YXRpb25fb25fcGFja2FnZT1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X25ld19saW5lX2FmdGVyX2Fubm90YXRpb25fb25fcGFyYW1ldGVyPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X25ld19saW5lX2FmdGVyX2Fubm90YXRpb25fb25fdHlwZT1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X25ld19saW5lX2FmdGVyX2xhYmVsPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X25ld19saW5lX2FmdGVyX29wZW5pbmdfYnJhY2VfaW5fYXJyYXlfaW5pdGlhbGl6ZXI9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfbmV3X2xpbmVfYWZ0ZXJfdHlwZV9hbm5vdGF0aW9uPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X25ld19saW5lX2F0X2VuZF9vZl9maWxlX2lmX21pc3Npbmc9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfbmV3X2xpbmVfYmVmb3JlX2NhdGNoX2luX3RyeV9zdGF0ZW1lbnQ9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfbmV3X2xpbmVfYmVmb3JlX2Nsb3NpbmdfYnJhY2VfaW5fYXJyYXlfaW5pdGlhbGl6ZXI9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfbmV3X2xpbmVfYmVmb3JlX2Vsc2VfaW5faWZfc3RhdGVtZW50PWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X25ld19saW5lX2JlZm9yZV9maW5hbGx5X2luX3RyeV9zdGF0ZW1lbnQ9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfbmV3X2xpbmVfYmVmb3JlX3doaWxlX2luX2RvX3N0YXRlbWVudD1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9uZXdfbGluZV9pbl9lbXB0eV9hbm5vdGF0aW9uX2RlY2xhcmF0aW9uPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfbmV3X2xpbmVfaW5fZW1wdHlfYW5vbnltb3VzX3R5cGVfZGVjbGFyYXRpb249aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9uZXdfbGluZV9pbl9lbXB0eV9ibG9jaz1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X25ld19saW5lX2luX2VtcHR5X2VudW1fY29uc3RhbnQ9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9uZXdfbGluZV9pbl9lbXB0eV9lbnVtX2RlY2xhcmF0aW9uPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfbmV3X2xpbmVfaW5fZW1wdHlfbWV0aG9kX2JvZHk9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9uZXdfbGluZV9pbl9lbXB0eV90eXBlX2RlY2xhcmF0aW9uPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfYW5kX2luX3R5cGVfcGFyYW1ldGVyPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfYXNzaWdubWVudF9vcGVyYXRvcj1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX2F0X2luX2Fubm90YXRpb249ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfYXRfaW5fYW5ub3RhdGlvbl90eXBlX2RlY2xhcmF0aW9uPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX2JpbmFyeV9vcGVyYXRvcj1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX2Nsb3NpbmdfYW5nbGVfYnJhY2tldF9pbl90eXBlX2FyZ3VtZW50cz1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX2Nsb3NpbmdfYW5nbGVfYnJhY2tldF9pbl90eXBlX3BhcmFtZXRlcnM9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9jbG9zaW5nX2JyYWNlX2luX2Jsb2NrPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfY2xvc2luZ19wYXJlbl9pbl9jYXN0PWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfY29sb25faW5fYXNzZXJ0PWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfY29sb25faW5fY2FzZT1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX2NvbG9uX2luX2NvbmRpdGlvbmFsPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfY29sb25faW5fZm9yPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfY29sb25faW5fbGFiZWxlZF9zdGF0ZW1lbnQ9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9jb21tYV9pbl9hbGxvY2F0aW9uX2V4cHJlc3Npb249aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9jb21tYV9pbl9hbm5vdGF0aW9uPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfY29tbWFfaW5fYXJyYXlfaW5pdGlhbGl6ZXI9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9jb21tYV9pbl9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbl9wYXJhbWV0ZXJzPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfY29tbWFfaW5fY29uc3RydWN0b3JfZGVjbGFyYXRpb25fdGhyb3dzPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfY29tbWFfaW5fZW51bV9jb25zdGFudF9hcmd1bWVudHM9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9jb21tYV9pbl9lbnVtX2RlY2xhcmF0aW9ucz1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX2NvbW1hX2luX2V4cGxpY2l0Y29uc3RydWN0b3JjYWxsX2FyZ3VtZW50cz1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX2NvbW1hX2luX2Zvcl9pbmNyZW1lbnRzPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfY29tbWFfaW5fZm9yX2luaXRzPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfY29tbWFfaW5fbWV0aG9kX2RlY2xhcmF0aW9uX3BhcmFtZXRlcnM9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9jb21tYV9pbl9tZXRob2RfZGVjbGFyYXRpb25fdGhyb3dzPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfY29tbWFfaW5fbWV0aG9kX2ludm9jYXRpb25fYXJndW1lbnRzPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfY29tbWFfaW5fbXVsdGlwbGVfZmllbGRfZGVjbGFyYXRpb25zPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfY29tbWFfaW5fbXVsdGlwbGVfbG9jYWxfZGVjbGFyYXRpb25zPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfY29tbWFfaW5fcGFyYW1ldGVyaXplZF90eXBlX3JlZmVyZW5jZT1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX2NvbW1hX2luX3N1cGVyaW50ZXJmYWNlcz1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX2NvbW1hX2luX3R5cGVfYXJndW1lbnRzPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfY29tbWFfaW5fdHlwZV9wYXJhbWV0ZXJzPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfZWxsaXBzaXM9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9sYW1iZGFfYXJyb3c9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9vcGVuaW5nX2FuZ2xlX2JyYWNrZXRfaW5fcGFyYW1ldGVyaXplZF90eXBlX3JlZmVyZW5jZT1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9vcGVuaW5nX2FuZ2xlX2JyYWNrZXRfaW5fdHlwZV9hcmd1bWVudHM9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfb3BlbmluZ19hbmdsZV9icmFja2V0X2luX3R5cGVfcGFyYW1ldGVycz1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9vcGVuaW5nX2JyYWNlX2luX2FycmF5X2luaXRpYWxpemVyPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfb3BlbmluZ19icmFja2V0X2luX2FycmF5X2FsbG9jYXRpb25fZXhwcmVzc2lvbj1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9vcGVuaW5nX2JyYWNrZXRfaW5fYXJyYXlfcmVmZXJlbmNlPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX29wZW5pbmdfcGFyZW5faW5fYW5ub3RhdGlvbj1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9vcGVuaW5nX3BhcmVuX2luX2Nhc3Q9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfb3BlbmluZ19wYXJlbl9pbl9jYXRjaD1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9vcGVuaW5nX3BhcmVuX2luX2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX29wZW5pbmdfcGFyZW5faW5fZW51bV9jb25zdGFudD1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9vcGVuaW5nX3BhcmVuX2luX2Zvcj1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9vcGVuaW5nX3BhcmVuX2luX2lmPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX29wZW5pbmdfcGFyZW5faW5fbWV0aG9kX2RlY2xhcmF0aW9uPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX29wZW5pbmdfcGFyZW5faW5fbWV0aG9kX2ludm9jYXRpb249ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfb3BlbmluZ19wYXJlbl9pbl9wYXJlbnRoZXNpemVkX2V4cHJlc3Npb249ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfb3BlbmluZ19wYXJlbl9pbl9zd2l0Y2g9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfb3BlbmluZ19wYXJlbl9pbl9zeW5jaHJvbml6ZWQ9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfb3BlbmluZ19wYXJlbl9pbl90cnk9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYWZ0ZXJfb3BlbmluZ19wYXJlbl9pbl93aGlsZT1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9wb3N0Zml4X29wZXJhdG9yPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX3ByZWZpeF9vcGVyYXRvcj1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9xdWVzdGlvbl9pbl9jb25kaXRpb25hbD1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX3F1ZXN0aW9uX2luX3dpbGRjYXJkPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX3NlbWljb2xvbl9pbl9mb3I9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9hZnRlcl9zZW1pY29sb25faW5fdHJ5X3Jlc291cmNlcz1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2FmdGVyX3VuYXJ5X29wZXJhdG9yPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9hbmRfaW5fdHlwZV9wYXJhbWV0ZXI9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfYXNzaWdubWVudF9vcGVyYXRvcj1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9hdF9pbl9hbm5vdGF0aW9uX3R5cGVfZGVjbGFyYXRpb249aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfYmluYXJ5X29wZXJhdG9yPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2Nsb3NpbmdfYW5nbGVfYnJhY2tldF9pbl9wYXJhbWV0ZXJpemVkX3R5cGVfcmVmZXJlbmNlPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9jbG9zaW5nX2FuZ2xlX2JyYWNrZXRfaW5fdHlwZV9hcmd1bWVudHM9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2Nsb3NpbmdfYW5nbGVfYnJhY2tldF9pbl90eXBlX3BhcmFtZXRlcnM9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2Nsb3NpbmdfYnJhY2VfaW5fYXJyYXlfaW5pdGlhbGl6ZXI9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfY2xvc2luZ19icmFja2V0X2luX2FycmF5X2FsbG9jYXRpb25fZXhwcmVzc2lvbj1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfY2xvc2luZ19icmFja2V0X2luX2FycmF5X3JlZmVyZW5jZT1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfY2xvc2luZ19wYXJlbl9pbl9hbm5vdGF0aW9uPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9jbG9zaW5nX3BhcmVuX2luX2Nhc3Q9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2Nsb3NpbmdfcGFyZW5faW5fY2F0Y2g9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2Nsb3NpbmdfcGFyZW5faW5fY29uc3RydWN0b3JfZGVjbGFyYXRpb249ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2Nsb3NpbmdfcGFyZW5faW5fZW51bV9jb25zdGFudD1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfY2xvc2luZ19wYXJlbl9pbl9mb3I9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2Nsb3NpbmdfcGFyZW5faW5faWY9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2Nsb3NpbmdfcGFyZW5faW5fbWV0aG9kX2RlY2xhcmF0aW9uPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9jbG9zaW5nX3BhcmVuX2luX21ldGhvZF9pbnZvY2F0aW9uPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9jbG9zaW5nX3BhcmVuX2luX3BhcmVudGhlc2l6ZWRfZXhwcmVzc2lvbj1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfY2xvc2luZ19wYXJlbl9pbl9zd2l0Y2g9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2Nsb3NpbmdfcGFyZW5faW5fc3luY2hyb25pemVkPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9jbG9zaW5nX3BhcmVuX2luX3RyeT1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfY2xvc2luZ19wYXJlbl9pbl93aGlsZT1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfY29sb25faW5fYXNzZXJ0PWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2NvbG9uX2luX2Nhc2U9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2NvbG9uX2luX2NvbmRpdGlvbmFsPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2NvbG9uX2luX2RlZmF1bHQ9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2NvbG9uX2luX2Zvcj1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9jb2xvbl9pbl9sYWJlbGVkX3N0YXRlbWVudD1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfY29tbWFfaW5fYWxsb2NhdGlvbl9leHByZXNzaW9uPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9jb21tYV9pbl9hbm5vdGF0aW9uPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9jb21tYV9pbl9hcnJheV9pbml0aWFsaXplcj1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfY29tbWFfaW5fY29uc3RydWN0b3JfZGVjbGFyYXRpb25fcGFyYW1ldGVycz1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfY29tbWFfaW5fY29uc3RydWN0b3JfZGVjbGFyYXRpb25fdGhyb3dzPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9jb21tYV9pbl9lbnVtX2NvbnN0YW50X2FyZ3VtZW50cz1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfY29tbWFfaW5fZW51bV9kZWNsYXJhdGlvbnM9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2NvbW1hX2luX2V4cGxpY2l0Y29uc3RydWN0b3JjYWxsX2FyZ3VtZW50cz1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfY29tbWFfaW5fZm9yX2luY3JlbWVudHM9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2NvbW1hX2luX2Zvcl9pbml0cz1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfY29tbWFfaW5fbWV0aG9kX2RlY2xhcmF0aW9uX3BhcmFtZXRlcnM9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2NvbW1hX2luX21ldGhvZF9kZWNsYXJhdGlvbl90aHJvd3M9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2NvbW1hX2luX21ldGhvZF9pbnZvY2F0aW9uX2FyZ3VtZW50cz1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfY29tbWFfaW5fbXVsdGlwbGVfZmllbGRfZGVjbGFyYXRpb25zPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9jb21tYV9pbl9tdWx0aXBsZV9sb2NhbF9kZWNsYXJhdGlvbnM9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2NvbW1hX2luX3BhcmFtZXRlcml6ZWRfdHlwZV9yZWZlcmVuY2U9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2NvbW1hX2luX3N1cGVyaW50ZXJmYWNlcz1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfY29tbWFfaW5fdHlwZV9hcmd1bWVudHM9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2NvbW1hX2luX3R5cGVfcGFyYW1ldGVycz1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfZWxsaXBzaXM9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX2xhbWJkYV9hcnJvdz1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9vcGVuaW5nX2FuZ2xlX2JyYWNrZXRfaW5fcGFyYW1ldGVyaXplZF90eXBlX3JlZmVyZW5jZT1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfb3BlbmluZ19hbmdsZV9icmFja2V0X2luX3R5cGVfYXJndW1lbnRzPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9vcGVuaW5nX2FuZ2xlX2JyYWNrZXRfaW5fdHlwZV9wYXJhbWV0ZXJzPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9vcGVuaW5nX2JyYWNlX2luX2Fubm90YXRpb25fdHlwZV9kZWNsYXJhdGlvbj1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9vcGVuaW5nX2JyYWNlX2luX2Fub255bW91c190eXBlX2RlY2xhcmF0aW9uPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX29wZW5pbmdfYnJhY2VfaW5fYXJyYXlfaW5pdGlhbGl6ZXI9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfb3BlbmluZ19icmFjZV9pbl9ibG9jaz1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9vcGVuaW5nX2JyYWNlX2luX2NvbnN0cnVjdG9yX2RlY2xhcmF0aW9uPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX29wZW5pbmdfYnJhY2VfaW5fZW51bV9jb25zdGFudD1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9vcGVuaW5nX2JyYWNlX2luX2VudW1fZGVjbGFyYXRpb249aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfb3BlbmluZ19icmFjZV9pbl9tZXRob2RfZGVjbGFyYXRpb249aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfb3BlbmluZ19icmFjZV9pbl9zd2l0Y2g9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfb3BlbmluZ19icmFjZV9pbl90eXBlX2RlY2xhcmF0aW9uPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX29wZW5pbmdfYnJhY2tldF9pbl9hcnJheV9hbGxvY2F0aW9uX2V4cHJlc3Npb249ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX29wZW5pbmdfYnJhY2tldF9pbl9hcnJheV9yZWZlcmVuY2U9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX29wZW5pbmdfYnJhY2tldF9pbl9hcnJheV90eXBlX3JlZmVyZW5jZT1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfb3BlbmluZ19wYXJlbl9pbl9hbm5vdGF0aW9uPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9vcGVuaW5nX3BhcmVuX2luX2Fubm90YXRpb25fdHlwZV9tZW1iZXJfZGVjbGFyYXRpb249ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX29wZW5pbmdfcGFyZW5faW5fY2F0Y2g9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfb3BlbmluZ19wYXJlbl9pbl9jb25zdHJ1Y3Rvcl9kZWNsYXJhdGlvbj1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfb3BlbmluZ19wYXJlbl9pbl9lbnVtX2NvbnN0YW50PWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9vcGVuaW5nX3BhcmVuX2luX2Zvcj1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9vcGVuaW5nX3BhcmVuX2luX2lmPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX29wZW5pbmdfcGFyZW5faW5fbWV0aG9kX2RlY2xhcmF0aW9uPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9vcGVuaW5nX3BhcmVuX2luX21ldGhvZF9pbnZvY2F0aW9uPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9vcGVuaW5nX3BhcmVuX2luX3BhcmVudGhlc2l6ZWRfZXhwcmVzc2lvbj1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfb3BlbmluZ19wYXJlbl9pbl9zd2l0Y2g9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfb3BlbmluZ19wYXJlbl9pbl9zeW5jaHJvbml6ZWQ9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfb3BlbmluZ19wYXJlbl9pbl90cnk9aW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZWZvcmVfb3BlbmluZ19wYXJlbl9pbl93aGlsZT1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9wYXJlbnRoZXNpemVkX2V4cHJlc3Npb25faW5fcmV0dXJuPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX3BhcmVudGhlc2l6ZWRfZXhwcmVzc2lvbl9pbl90aHJvdz1pbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9wb3N0Zml4X29wZXJhdG9yPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9wcmVmaXhfb3BlcmF0b3I9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX3F1ZXN0aW9uX2luX2NvbmRpdGlvbmFsPWluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX3F1ZXN0aW9uX2luX3dpbGRjYXJkPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV9zZW1pY29sb249ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX3NlbWljb2xvbl9pbl9mb3I9ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmVmb3JlX3NlbWljb2xvbl9pbl90cnlfcmVzb3VyY2VzPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JlZm9yZV91bmFyeV9vcGVyYXRvcj1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZXR3ZWVuX2JyYWNrZXRzX2luX2FycmF5X3R5cGVfcmVmZXJlbmNlPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JldHdlZW5fZW1wdHlfYnJhY2VzX2luX2FycmF5X2luaXRpYWxpemVyPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JldHdlZW5fZW1wdHlfYnJhY2tldHNfaW5fYXJyYXlfYWxsb2NhdGlvbl9leHByZXNzaW9uPWRvIG5vdCBpbnNlcnQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIuaW5zZXJ0X3NwYWNlX2JldHdlZW5fZW1wdHlfcGFyZW5zX2luX2Fubm90YXRpb25fdHlwZV9tZW1iZXJfZGVjbGFyYXRpb249ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmV0d2Vlbl9lbXB0eV9wYXJlbnNfaW5fY29uc3RydWN0b3JfZGVjbGFyYXRpb249ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmV0d2Vlbl9lbXB0eV9wYXJlbnNfaW5fZW51bV9jb25zdGFudD1kbyBub3QgaW5zZXJ0DQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmluc2VydF9zcGFjZV9iZXR3ZWVuX2VtcHR5X3BhcmVuc19pbl9tZXRob2RfZGVjbGFyYXRpb249ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5pbnNlcnRfc3BhY2VfYmV0d2Vlbl9lbXB0eV9wYXJlbnNfaW5fbWV0aG9kX2ludm9jYXRpb249ZG8gbm90IGluc2VydA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5qb2luX2xpbmVzX2luX2NvbW1lbnRzPWZhbHNlDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmpvaW5fd3JhcHBlZF9saW5lcz1mYWxzZQ0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5rZWVwX2Vsc2Vfc3RhdGVtZW50X29uX3NhbWVfbGluZT1mYWxzZQ0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5rZWVwX2VtcHR5X2FycmF5X2luaXRpYWxpemVyX29uX29uZV9saW5lPWZhbHNlDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLmtlZXBfaW1wbGVfaWZfb25fb25lX2xpbmU9ZmFsc2UNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIua2VlcF90aGVuX3N0YXRlbWVudF9vbl9zYW1lX2xpbmU9ZmFsc2UNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIubGluZVNwbGl0PTI2MA0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5uZXZlcl9pbmRlbnRfYmxvY2tfY29tbWVudHNfb25fZmlyc3RfY29sdW1uPWZhbHNlDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLm5ldmVyX2luZGVudF9saW5lX2NvbW1lbnRzX29uX2ZpcnN0X2NvbHVtbj1mYWxzZQ0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci5udW1iZXJfb2ZfYmxhbmtfbGluZXNfYXRfYmVnaW5uaW5nX29mX21ldGhvZF9ib2R5PTANCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIubnVtYmVyX29mX2VtcHR5X2xpbmVzX3RvX3ByZXNlcnZlPTUNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIucHV0X2VtcHR5X3N0YXRlbWVudF9vbl9uZXdfbGluZT10cnVlDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLnRhYnVsYXRpb24uY2hhcj10YWINCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIudGFidWxhdGlvbi5zaXplPTQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5mb3JtYXR0ZXIudXNlX29uX29mZl90YWdzPWZhbHNlDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLnVzZV90YWJzX29ubHlfZm9yX2xlYWRpbmdfaW5kZW50YXRpb25zPWZhbHNlDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLndyYXBfYmVmb3JlX2JpbmFyeV9vcGVyYXRvcj10cnVlDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuZm9ybWF0dGVyLndyYXBfYmVmb3JlX29yX29wZXJhdG9yX211bHRpY2F0Y2g9dHJ1ZQ0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmZvcm1hdHRlci53cmFwX291dGVyX2V4cHJlc3Npb25zX3doZW5fbmVzdGVkPXRydWUNCmRpZmYgLS1naXQgYS91aS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQudWkvLnNldHRpbmdzL29yZy5lY2xpcHNlLmpkdC51aS5wcmVmcyBiL3VpL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC51aS8uc2V0dGluZ3Mvb3JnLmVjbGlwc2UuamR0LnVpLnByZWZzCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjAxZDcwNGIKLS0tIC9kZXYvbnVsbAorKysgYi91aS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQudWkvLnNldHRpbmdzL29yZy5lY2xpcHNlLmpkdC51aS5wcmVmcwpAQCAtMCwwICsxLDY4IEBACitjbGVhbnVwLmFkZF9kZWZhdWx0X3NlcmlhbF92ZXJzaW9uX2lkPXRydWUNCitjbGVhbnVwLmFkZF9nZW5lcmF0ZWRfc2VyaWFsX3ZlcnNpb25faWQ9ZmFsc2UNCitjbGVhbnVwLmFkZF9taXNzaW5nX2Fubm90YXRpb25zPXRydWUNCitjbGVhbnVwLmFkZF9taXNzaW5nX2RlcHJlY2F0ZWRfYW5ub3RhdGlvbnM9dHJ1ZQ0KK2NsZWFudXAuYWRkX21pc3NpbmdfbWV0aG9kcz1mYWxzZQ0KK2NsZWFudXAuYWRkX21pc3NpbmdfbmxzX3RhZ3M9ZmFsc2UNCitjbGVhbnVwLmFkZF9taXNzaW5nX292ZXJyaWRlX2Fubm90YXRpb25zPXRydWUNCitjbGVhbnVwLmFkZF9taXNzaW5nX292ZXJyaWRlX2Fubm90YXRpb25zX2ludGVyZmFjZV9tZXRob2RzPXRydWUNCitjbGVhbnVwLmFkZF9zZXJpYWxfdmVyc2lvbl9pZD1mYWxzZQ0KK2NsZWFudXAuYWx3YXlzX3VzZV9ibG9ja3M9dHJ1ZQ0KK2NsZWFudXAuYWx3YXlzX3VzZV9wYXJlbnRoZXNlc19pbl9leHByZXNzaW9ucz1mYWxzZQ0KK2NsZWFudXAuYWx3YXlzX3VzZV90aGlzX2Zvcl9ub25fc3RhdGljX2ZpZWxkX2FjY2Vzcz1mYWxzZQ0KK2NsZWFudXAuYWx3YXlzX3VzZV90aGlzX2Zvcl9ub25fc3RhdGljX21ldGhvZF9hY2Nlc3M9ZmFsc2UNCitjbGVhbnVwLmNvbnZlcnRfZnVuY3Rpb25hbF9pbnRlcmZhY2VzPWZhbHNlDQorY2xlYW51cC5jb252ZXJ0X3RvX2VuaGFuY2VkX2Zvcl9sb29wPWZhbHNlDQorY2xlYW51cC5jb3JyZWN0X2luZGVudGF0aW9uPWZhbHNlDQorY2xlYW51cC5mb3JtYXRfc291cmNlX2NvZGU9ZmFsc2UNCitjbGVhbnVwLmZvcm1hdF9zb3VyY2VfY29kZV9jaGFuZ2VzX29ubHk9ZmFsc2UNCitjbGVhbnVwLmluc2VydF9pbmZlcnJlZF90eXBlX2FyZ3VtZW50cz1mYWxzZQ0KK2NsZWFudXAubWFrZV9sb2NhbF92YXJpYWJsZV9maW5hbD10cnVlDQorY2xlYW51cC5tYWtlX3BhcmFtZXRlcnNfZmluYWw9ZmFsc2UNCitjbGVhbnVwLm1ha2VfcHJpdmF0ZV9maWVsZHNfZmluYWw9dHJ1ZQ0KK2NsZWFudXAubWFrZV90eXBlX2Fic3RyYWN0X2lmX21pc3NpbmdfbWV0aG9kPWZhbHNlDQorY2xlYW51cC5tYWtlX3ZhcmlhYmxlX2RlY2xhcmF0aW9uc19maW5hbD1mYWxzZQ0KK2NsZWFudXAubmV2ZXJfdXNlX2Jsb2Nrcz1mYWxzZQ0KK2NsZWFudXAubmV2ZXJfdXNlX3BhcmVudGhlc2VzX2luX2V4cHJlc3Npb25zPXRydWUNCitjbGVhbnVwLm9yZ2FuaXplX2ltcG9ydHM9ZmFsc2UNCitjbGVhbnVwLnF1YWxpZnlfc3RhdGljX2ZpZWxkX2FjY2Vzc2VzX3dpdGhfZGVjbGFyaW5nX2NsYXNzPWZhbHNlDQorY2xlYW51cC5xdWFsaWZ5X3N0YXRpY19tZW1iZXJfYWNjZXNzZXNfdGhyb3VnaF9pbnN0YW5jZXNfd2l0aF9kZWNsYXJpbmdfY2xhc3M9dHJ1ZQ0KK2NsZWFudXAucXVhbGlmeV9zdGF0aWNfbWVtYmVyX2FjY2Vzc2VzX3Rocm91Z2hfc3VidHlwZXNfd2l0aF9kZWNsYXJpbmdfY2xhc3M9dHJ1ZQ0KK2NsZWFudXAucXVhbGlmeV9zdGF0aWNfbWVtYmVyX2FjY2Vzc2VzX3dpdGhfZGVjbGFyaW5nX2NsYXNzPXRydWUNCitjbGVhbnVwLnF1YWxpZnlfc3RhdGljX21ldGhvZF9hY2Nlc3Nlc193aXRoX2RlY2xhcmluZ19jbGFzcz1mYWxzZQ0KK2NsZWFudXAucmVtb3ZlX3ByaXZhdGVfY29uc3RydWN0b3JzPXRydWUNCitjbGVhbnVwLnJlbW92ZV9yZWR1bmRhbnRfdHlwZV9hcmd1bWVudHM9dHJ1ZQ0KK2NsZWFudXAucmVtb3ZlX3RyYWlsaW5nX3doaXRlc3BhY2VzPXRydWUNCitjbGVhbnVwLnJlbW92ZV90cmFpbGluZ193aGl0ZXNwYWNlc19hbGw9dHJ1ZQ0KK2NsZWFudXAucmVtb3ZlX3RyYWlsaW5nX3doaXRlc3BhY2VzX2lnbm9yZV9lbXB0eT1mYWxzZQ0KK2NsZWFudXAucmVtb3ZlX3VubmVjZXNzYXJ5X2Nhc3RzPXRydWUNCitjbGVhbnVwLnJlbW92ZV91bm5lY2Vzc2FyeV9ubHNfdGFncz10cnVlDQorY2xlYW51cC5yZW1vdmVfdW51c2VkX2ltcG9ydHM9dHJ1ZQ0KK2NsZWFudXAucmVtb3ZlX3VudXNlZF9sb2NhbF92YXJpYWJsZXM9ZmFsc2UNCitjbGVhbnVwLnJlbW92ZV91bnVzZWRfcHJpdmF0ZV9maWVsZHM9dHJ1ZQ0KK2NsZWFudXAucmVtb3ZlX3VudXNlZF9wcml2YXRlX21lbWJlcnM9ZmFsc2UNCitjbGVhbnVwLnJlbW92ZV91bnVzZWRfcHJpdmF0ZV9tZXRob2RzPXRydWUNCitjbGVhbnVwLnJlbW92ZV91bnVzZWRfcHJpdmF0ZV90eXBlcz10cnVlDQorY2xlYW51cC5zb3J0X21lbWJlcnM9ZmFsc2UNCitjbGVhbnVwLnNvcnRfbWVtYmVyc19hbGw9ZmFsc2UNCitjbGVhbnVwLnVzZV9hbm9ueW1vdXNfY2xhc3NfY3JlYXRpb249ZmFsc2UNCitjbGVhbnVwLnVzZV9ibG9ja3M9dHJ1ZQ0KK2NsZWFudXAudXNlX2Jsb2Nrc19vbmx5X2Zvcl9yZXR1cm5fYW5kX3Rocm93PWZhbHNlDQorY2xlYW51cC51c2VfbGFtYmRhPXRydWUNCitjbGVhbnVwLnVzZV9wYXJlbnRoZXNlc19pbl9leHByZXNzaW9ucz1mYWxzZQ0KK2NsZWFudXAudXNlX3RoaXNfZm9yX25vbl9zdGF0aWNfZmllbGRfYWNjZXNzPWZhbHNlDQorY2xlYW51cC51c2VfdGhpc19mb3Jfbm9uX3N0YXRpY19maWVsZF9hY2Nlc3Nfb25seV9pZl9uZWNlc3Nhcnk9dHJ1ZQ0KK2NsZWFudXAudXNlX3RoaXNfZm9yX25vbl9zdGF0aWNfbWV0aG9kX2FjY2Vzcz1mYWxzZQ0KK2NsZWFudXAudXNlX3RoaXNfZm9yX25vbl9zdGF0aWNfbWV0aG9kX2FjY2Vzc19vbmx5X2lmX25lY2Vzc2FyeT10cnVlDQorY2xlYW51cC51c2VfdHlwZV9hcmd1bWVudHM9ZmFsc2UNCitjbGVhbnVwX3Byb2ZpbGU9X1BhcHlydXMNCitjbGVhbnVwX3NldHRpbmdzX3ZlcnNpb249Mg0KK2VjbGlwc2UucHJlZmVyZW5jZXMudmVyc2lvbj0xDQorZm9ybWF0dGVyX3Byb2ZpbGU9X1BhcHlydXMNCitmb3JtYXR0ZXJfc2V0dGluZ3NfdmVyc2lvbj0xMg0KK29yZy5lY2xpcHNlLmpkdC51aS5pZ25vcmVsb3dlcmNhc2VuYW1lcz10cnVlDQorb3JnLmVjbGlwc2UuamR0LnVpLmltcG9ydG9yZGVyPWphdmE7amF2YXg7b3JnO2NvbTsNCitvcmcuZWNsaXBzZS5qZHQudWkuamF2YWRvYz10cnVlDQorb3JnLmVjbGlwc2UuamR0LnVpLm9uZGVtYW5kdGhyZXNob2xkPTk5DQorb3JnLmVjbGlwc2UuamR0LnVpLnN0YXRpY29uZGVtYW5kdGhyZXNob2xkPTk5DQorb3JnLmVjbGlwc2UuamR0LnVpLnRleHQuY3VzdG9tX2NvZGVfdGVtcGxhdGVzPTw/eG1sIHZlcnNpb25cPSIxLjAiIGVuY29kaW5nXD0iVVRGLTgiIHN0YW5kYWxvbmVcPSJubyI/Pjx0ZW1wbGF0ZXM+PHRlbXBsYXRlIGF1dG9pbnNlcnRcPSJ0cnVlIiBjb250ZXh0XD0iZ2V0dGVyY29tbWVudF9jb250ZXh0IiBkZWxldGVkXD0iZmFsc2UiIGRlc2NyaXB0aW9uXD0iQ29tbWVudCBmb3IgZ2V0dGVyIG1ldGhvZCIgZW5hYmxlZFw9InRydWUiIGlkXD0ib3JnLmVjbGlwc2UuamR0LnVpLnRleHQuY29kZXRlbXBsYXRlcy5nZXR0ZXJjb21tZW50IiBuYW1lXD0iZ2V0dGVyY29tbWVudCI+LyoqXG4gKiBAcmV0dXJuIHRoZSAke2JhcmVfZmllbGRfbmFtZX1cbiAqLzwvdGVtcGxhdGU+PHRlbXBsYXRlIGF1dG9pbnNlcnRcPSJ0cnVlIiBjb250ZXh0XD0ic2V0dGVyY29tbWVudF9jb250ZXh0IiBkZWxldGVkXD0iZmFsc2UiIGRlc2NyaXB0aW9uXD0iQ29tbWVudCBmb3Igc2V0dGVyIG1ldGhvZCIgZW5hYmxlZFw9InRydWUiIGlkXD0ib3JnLmVjbGlwc2UuamR0LnVpLnRleHQuY29kZXRlbXBsYXRlcy5zZXR0ZXJjb21tZW50IiBuYW1lXD0ic2V0dGVyY29tbWVudCI+LyoqXG4gKiBAcGFyYW0gJHtwYXJhbX0gdGhlICR7YmFyZV9maWVsZF9uYW1lfSB0byBzZXRcbiAqLzwvdGVtcGxhdGU+PHRlbXBsYXRlIGF1dG9pbnNlcnRcPSJmYWxzZSIgY29udGV4dFw9ImNvbnN0cnVjdG9yY29tbWVudF9jb250ZXh0IiBkZWxldGVkXD0iZmFsc2UiIGRlc2NyaXB0aW9uXD0iQ29tbWVudCBmb3IgY3JlYXRlZCBjb25zdHJ1Y3RvcnMiIGVuYWJsZWRcPSJ0cnVlIiBpZFw9Im9yZy5lY2xpcHNlLmpkdC51aS50ZXh0LmNvZGV0ZW1wbGF0ZXMuY29uc3RydWN0b3Jjb21tZW50IiBuYW1lXD0iY29uc3RydWN0b3Jjb21tZW50Ij4vKipcbiAqIENvbnN0cnVjdG9yLlxuICpcbiAqICR7dGFnc31cbiAqLzwvdGVtcGxhdGU+PHRlbXBsYXRlIGF1dG9pbnNlcnRcPSJmYWxzZSIgY29udGV4dFw9ImZpbGVjb21tZW50X2NvbnRleHQiIGRlbGV0ZWRcPSJmYWxzZSIgZGVzY3JpcHRpb25cPSJDb21tZW50IGZvciBjcmVhdGVkIEphdmEgZmlsZXMiIGVuYWJsZWRcPSJ0cnVlIiBpZFw9Im9yZy5lY2xpcHNlLmpkdC51aS50ZXh0LmNvZGV0ZW1wbGF0ZXMuZmlsZWNvbW1lbnQiIG5hbWVcPSJmaWxlY29tbWVudCI+LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4gKiBDb3B5cmlnaHQgKGMpICR7eWVhcn0gQ0VBIExJU1QgYW5kIG90aGVycy5cbiAqIFxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFsc1xuICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wXG4gKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdFxuICogaHR0cFw6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sXG4gKlxuICogQ29udHJpYnV0b3JzXDpcbiAqICAgQ0VBIExJU1QgLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb25cbiAqICAgXG4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG48L3RlbXBsYXRlPjx0ZW1wbGF0ZSBhdXRvaW5zZXJ0XD0idHJ1ZSIgY29udGV4dFw9InR5cGVjb21tZW50X2NvbnRleHQiIGRlbGV0ZWRcPSJmYWxzZSIgZGVzY3JpcHRpb25cPSJDb21tZW50IGZvciBjcmVhdGVkIHR5cGVzIiBlbmFibGVkXD0idHJ1ZSIgaWRcPSJvcmcuZWNsaXBzZS5qZHQudWkudGV4dC5jb2RldGVtcGxhdGVzLnR5cGVjb21tZW50IiBuYW1lXD0idHlwZWNvbW1lbnQiPi8qKlxuICogQGF1dGhvciAke3VzZXJ9XG4gKlxuICogJHt0YWdzfVxuICovPC90ZW1wbGF0ZT48dGVtcGxhdGUgYXV0b2luc2VydFw9InRydWUiIGNvbnRleHRcPSJmaWVsZGNvbW1lbnRfY29udGV4dCIgZGVsZXRlZFw9ImZhbHNlIiBkZXNjcmlwdGlvblw9IkNvbW1lbnQgZm9yIGZpZWxkcyIgZW5hYmxlZFw9InRydWUiIGlkXD0ib3JnLmVjbGlwc2UuamR0LnVpLnRleHQuY29kZXRlbXBsYXRlcy5maWVsZGNvbW1lbnQiIG5hbWVcPSJmaWVsZGNvbW1lbnQiPi8qKlxuICogXG4gKi88L3RlbXBsYXRlPjx0ZW1wbGF0ZSBhdXRvaW5zZXJ0XD0idHJ1ZSIgY29udGV4dFw9Im1ldGhvZGNvbW1lbnRfY29udGV4dCIgZGVsZXRlZFw9ImZhbHNlIiBkZXNjcmlwdGlvblw9IkNvbW1lbnQgZm9yIG5vbi1vdmVycmlkaW5nIG1ldGhvZHMiIGVuYWJsZWRcPSJ0cnVlIiBpZFw9Im9yZy5lY2xpcHNlLmpkdC51aS50ZXh0LmNvZGV0ZW1wbGF0ZXMubWV0aG9kY29tbWVudCIgbmFtZVw9Im1ldGhvZGNvbW1lbnQiPi8qKlxuICogJHt0YWdzfVxuICovPC90ZW1wbGF0ZT48dGVtcGxhdGUgYXV0b2luc2VydFw9ImZhbHNlIiBjb250ZXh0XD0ib3ZlcnJpZGVjb21tZW50X2NvbnRleHQiIGRlbGV0ZWRcPSJmYWxzZSIgZGVzY3JpcHRpb25cPSJDb21tZW50IGZvciBvdmVycmlkaW5nIG1ldGhvZHMiIGVuYWJsZWRcPSJ0cnVlIiBpZFw9Im9yZy5lY2xpcHNlLmpkdC51aS50ZXh0LmNvZGV0ZW1wbGF0ZXMub3ZlcnJpZGVjb21tZW50IiBuYW1lXD0ib3ZlcnJpZGVjb21tZW50Ij4vKipcbiAqICR7c2VlX3RvX292ZXJyaWRkZW59XG4gKlxuICogJHt0YWdzfVxuICovPC90ZW1wbGF0ZT48dGVtcGxhdGUgYXV0b2luc2VydFw9ImZhbHNlIiBjb250ZXh0XD0iZGVsZWdhdGVjb21tZW50X2NvbnRleHQiIGRlbGV0ZWRcPSJmYWxzZSIgZGVzY3JpcHRpb25cPSJDb21tZW50IGZvciBkZWxlZ2F0ZSBtZXRob2RzIiBlbmFibGVkXD0idHJ1ZSIgaWRcPSJvcmcuZWNsaXBzZS5qZHQudWkudGV4dC5jb2RldGVtcGxhdGVzLmRlbGVnYXRlY29tbWVudCIgbmFtZVw9ImRlbGVnYXRlY29tbWVudCI+LyoqXG4gKiAke3NlZV90b190YXJnZXR9XG4gKlxuICogJHt0YWdzfVxuICovPC90ZW1wbGF0ZT48dGVtcGxhdGUgYXV0b2luc2VydFw9InRydWUiIGNvbnRleHRcPSJuZXd0eXBlX2NvbnRleHQiIGRlbGV0ZWRcPSJmYWxzZSIgZGVzY3JpcHRpb25cPSJOZXdseSBjcmVhdGVkIGZpbGVzIiBlbmFibGVkXD0idHJ1ZSIgaWRcPSJvcmcuZWNsaXBzZS5qZHQudWkudGV4dC5jb2RldGVtcGxhdGVzLm5ld3R5cGUiIG5hbWVcPSJuZXd0eXBlIj4ke2ZpbGVjb21tZW50fVxuJHtwYWNrYWdlX2RlY2xhcmF0aW9ufVxuXG4ke3R5cGVjb21tZW50fVxuJHt0eXBlX2RlY2xhcmF0aW9ufTwvdGVtcGxhdGU+PHRlbXBsYXRlIGF1dG9pbnNlcnRcPSJ0cnVlIiBjb250ZXh0XD0iY2xhc3Nib2R5X2NvbnRleHQiIGRlbGV0ZWRcPSJmYWxzZSIgZGVzY3JpcHRpb25cPSJDb2RlIGluIG5ldyBjbGFzcyB0eXBlIGJvZGllcyIgZW5hYmxlZFw9InRydWUiIGlkXD0ib3JnLmVjbGlwc2UuamR0LnVpLnRleHQuY29kZXRlbXBsYXRlcy5jbGFzc2JvZHkiIG5hbWVcPSJjbGFzc2JvZHkiPlxuPC90ZW1wbGF0ZT48dGVtcGxhdGUgYXV0b2luc2VydFw9InRydWUiIGNvbnRleHRcPSJpbnRlcmZhY2Vib2R5X2NvbnRleHQiIGRlbGV0ZWRcPSJmYWxzZSIgZGVzY3JpcHRpb25cPSJDb2RlIGluIG5ldyBpbnRlcmZhY2UgdHlwZSBib2RpZXMiIGVuYWJsZWRcPSJ0cnVlIiBpZFw9Im9yZy5lY2xpcHNlLmpkdC51aS50ZXh0LmNvZGV0ZW1wbGF0ZXMuaW50ZXJmYWNlYm9keSIgbmFtZVw9ImludGVyZmFjZWJvZHkiPlxuPC90ZW1wbGF0ZT48dGVtcGxhdGUgYXV0b2luc2VydFw9InRydWUiIGNvbnRleHRcPSJlbnVtYm9keV9jb250ZXh0IiBkZWxldGVkXD0iZmFsc2UiIGRlc2NyaXB0aW9uXD0iQ29kZSBpbiBuZXcgZW51bSB0eXBlIGJvZGllcyIgZW5hYmxlZFw9InRydWUiIGlkXD0ib3JnLmVjbGlwc2UuamR0LnVpLnRleHQuY29kZXRlbXBsYXRlcy5lbnVtYm9keSIgbmFtZVw9ImVudW1ib2R5Ij5cbjwvdGVtcGxhdGU+PHRlbXBsYXRlIGF1dG9pbnNlcnRcPSJ0cnVlIiBjb250ZXh0XD0iYW5ub3RhdGlvbmJvZHlfY29udGV4dCIgZGVsZXRlZFw9ImZhbHNlIiBkZXNjcmlwdGlvblw9IkNvZGUgaW4gbmV3IGFubm90YXRpb24gdHlwZSBib2RpZXMiIGVuYWJsZWRcPSJ0cnVlIiBpZFw9Im9yZy5lY2xpcHNlLmpkdC51aS50ZXh0LmNvZGV0ZW1wbGF0ZXMuYW5ub3RhdGlvbmJvZHkiIG5hbWVcPSJhbm5vdGF0aW9uYm9keSI+XG48L3RlbXBsYXRlPjx0ZW1wbGF0ZSBhdXRvaW5zZXJ0XD0idHJ1ZSIgY29udGV4dFw9ImNhdGNoYmxvY2tfY29udGV4dCIgZGVsZXRlZFw9ImZhbHNlIiBkZXNjcmlwdGlvblw9IkNvZGUgaW4gbmV3IGNhdGNoIGJsb2NrcyIgZW5hYmxlZFw9InRydWUiIGlkXD0ib3JnLmVjbGlwc2UuamR0LnVpLnRleHQuY29kZXRlbXBsYXRlcy5jYXRjaGJsb2NrIiBuYW1lXD0iY2F0Y2hibG9jayI+Ly8gJHt0b2RvfSBBdXRvLWdlbmVyYXRlZCBjYXRjaCBibG9ja1xuJHtleGNlcHRpb25fdmFyfS5wcmludFN0YWNrVHJhY2UoKTs8L3RlbXBsYXRlPjx0ZW1wbGF0ZSBhdXRvaW5zZXJ0XD0idHJ1ZSIgY29udGV4dFw9Im1ldGhvZGJvZHlfY29udGV4dCIgZGVsZXRlZFw9ImZhbHNlIiBkZXNjcmlwdGlvblw9IkNvZGUgaW4gY3JlYXRlZCBtZXRob2Qgc3R1YnMiIGVuYWJsZWRcPSJ0cnVlIiBpZFw9Im9yZy5lY2xpcHNlLmpkdC51aS50ZXh0LmNvZGV0ZW1wbGF0ZXMubWV0aG9kYm9keSIgbmFtZVw9Im1ldGhvZGJvZHkiPi8vICR7dG9kb30gQXV0by1nZW5lcmF0ZWQgbWV0aG9kIHN0dWJcbiR7Ym9keV9zdGF0ZW1lbnR9PC90ZW1wbGF0ZT48dGVtcGxhdGUgYXV0b2luc2VydFw9InRydWUiIGNvbnRleHRcPSJjb25zdHJ1Y3RvcmJvZHlfY29udGV4dCIgZGVsZXRlZFw9ImZhbHNlIiBkZXNjcmlwdGlvblw9IkNvZGUgaW4gY3JlYXRlZCBjb25zdHJ1Y3RvciBzdHVicyIgZW5hYmxlZFw9InRydWUiIGlkXD0ib3JnLmVjbGlwc2UuamR0LnVpLnRleHQuY29kZXRlbXBsYXRlcy5jb25zdHJ1Y3RvcmJvZHkiIG5hbWVcPSJjb25zdHJ1Y3RvcmJvZHkiPiR7Ym9keV9zdGF0ZW1lbnR9XG4vLyAke3RvZG99IEF1dG8tZ2VuZXJhdGVkIGNvbnN0cnVjdG9yIHN0dWI8L3RlbXBsYXRlPjx0ZW1wbGF0ZSBhdXRvaW5zZXJ0XD0idHJ1ZSIgY29udGV4dFw9ImdldHRlcmJvZHlfY29udGV4dCIgZGVsZXRlZFw9ImZhbHNlIiBkZXNjcmlwdGlvblw9IkNvZGUgaW4gY3JlYXRlZCBnZXR0ZXJzIiBlbmFibGVkXD0idHJ1ZSIgaWRcPSJvcmcuZWNsaXBzZS5qZHQudWkudGV4dC5jb2RldGVtcGxhdGVzLmdldHRlcmJvZHkiIG5hbWVcPSJnZXR0ZXJib2R5Ij5yZXR1cm4gJHtmaWVsZH07PC90ZW1wbGF0ZT48dGVtcGxhdGUgYXV0b2luc2VydFw9InRydWUiIGNvbnRleHRcPSJzZXR0ZXJib2R5X2NvbnRleHQiIGRlbGV0ZWRcPSJmYWxzZSIgZGVzY3JpcHRpb25cPSJDb2RlIGluIGNyZWF0ZWQgc2V0dGVycyIgZW5hYmxlZFw9InRydWUiIGlkXD0ib3JnLmVjbGlwc2UuamR0LnVpLnRleHQuY29kZXRlbXBsYXRlcy5zZXR0ZXJib2R5IiBuYW1lXD0ic2V0dGVyYm9keSI+JHtmaWVsZH0gXD0gJHtwYXJhbX07PC90ZW1wbGF0ZT48L3RlbXBsYXRlcz4NCmRpZmYgLS1naXQgYS91aS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQudWkvTUVUQS1JTkYvTUFOSUZFU1QuTUYgYi91aS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQudWkvTUVUQS1JTkYvTUFOSUZFU1QuTUYKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uMWFiYWEwMQotLS0gL2Rldi9udWxsCisrKyBiL3VpL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC51aS9NRVRBLUlORi9NQU5JRkVTVC5NRgpAQCAtMCwwICsxLDI0IEBACitNYW5pZmVzdC1WZXJzaW9uOiAxLjANCitCdW5kbGUtTWFuaWZlc3RWZXJzaW9uOiAyDQorQnVuZGxlLU5hbWU6ICVwbHVnaW5OYW1lDQorQnVuZGxlLVN5bWJvbGljTmFtZTogb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnVpO3NpbmdsZXRvbjo9dHJ1ZQ0KK0J1bmRsZS1WZXJzaW9uOiAwLjcuMC5xdWFsaWZpZXINCitCdW5kbGUtQ2xhc3NQYXRoOiAuDQorQnVuZGxlLUFjdGl2YXRvcjogb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnVpLkFjdGl2YXRvcg0KK1JlcXVpcmUtQnVuZGxlOiBvcmcuZWNsaXBzZS51aSwNCisgb3JnLmVjbGlwc2UuY29yZS5ydW50aW1lLA0KKyBvcmcuZWNsaXBzZS5wYXB5cnVzLnVtbC5kaWFncmFtLmNvbW1vbjtidW5kbGUtdmVyc2lvbj0iMS4xLjAiLA0KKyBvcmcuZWNsaXBzZS51bWwyLnVtbDtidW5kbGUtdmVyc2lvbj0iNS4xLjAiLA0KKyBvcmcuZWNsaXBzZS5wYXB5cnVzLnVtbC50b29scztidW5kbGUtdmVyc2lvbj0iMS4xLjAiLA0KKyBvcmcuZWNsaXBzZS5wYXB5cnVzLnVtbC50b29scy51dGlscztidW5kbGUtdmVyc2lvbj0iMS4xLjAiLA0KKyBvcmcuZWNsaXBzZS5wYXB5cnVzLmluZnJhLmNvcmU7YnVuZGxlLXZlcnNpb249IjEuMS4wIiwNCisgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0O2J1bmRsZS12ZXJzaW9uPSIwLjcuMCIsDQorIG9yZy5lY2xpcHNlLnBhcHlydXMuaW5mcmEuY29uc3RyYWludHM7YnVuZGxlLXZlcnNpb249IjEuMS4wIiwNCisgb3JnLmVjbGlwc2UucGFweXJ1cy51bWwucHJvcGVydGllcztidW5kbGUtdmVyc2lvbj0iMS4xLjAiLA0KKyBvcmcuZWNsaXBzZS5wYXB5cnVzLmluZnJhLm5ld2NoaWxkO2J1bmRsZS12ZXJzaW9uPSIxLjEuMCINCitCdW5kbGUtUmVxdWlyZWRFeGVjdXRpb25FbnZpcm9ubWVudDogSmF2YVNFLTEuNg0KK0V4cG9ydC1QYWNrYWdlOiBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQudWkNCitCdW5kbGUtQWN0aXZhdGlvblBvbGljeTogbGF6eQ0KK0J1bmRsZS1Mb2NhbGl6YXRpb246IHBsdWdpbg0KK0J1bmRsZS1EZXNjcmlwdGlvbjogJXBsdWdpbkRlc2NyaXB0aW9uDQorQnVuZGxlLVZlbmRvcjogJXByb3ZpZGVyTmFtZQ0KZGlmZiAtLWdpdCBhL3VpL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC51aS9hYm91dC5odG1sIGIvdWkvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnVpL2Fib3V0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uODJkNDliZgotLS0gL2Rldi9udWxsCisrKyBiL3VpL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC51aS9hYm91dC5odG1sCkBAIC0wLDAgKzEsMjggQEAKKzwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgWEhUTUwgMS4wIFN0cmljdC8vRU4iDQorICAgICJodHRwOi8vd3d3LnczLm9yZy9UUi94aHRtbDEvRFREL3hodG1sMS1zdHJpY3QuZHRkIj4NCis8aHRtbCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCI+DQorPGhlYWQ+DQorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9SVNPLTg4NTktMSIvPg0KKzx0aXRsZT5BYm91dDwvdGl0bGU+DQorPC9oZWFkPg0KKzxib2R5IGxhbmc9IkVOLVVTIj4NCis8aDI+QWJvdXQgVGhpcyBDb250ZW50PC9oMj4NCisgDQorPHA+SnVuZSA1LCAyMDA3PC9wPgkNCis8aDM+TGljZW5zZTwvaDM+DQorDQorPHA+VGhlIEVjbGlwc2UgRm91bmRhdGlvbiBtYWtlcyBhdmFpbGFibGUgYWxsIGNvbnRlbnQgaW4gdGhpcyBwbHVnLWluICgmcXVvdDtDb250ZW50JnF1b3Q7KS4gIFVubGVzcyBvdGhlcndpc2UgDQoraW5kaWNhdGVkIGJlbG93LCB0aGUgQ29udGVudCBpcyBwcm92aWRlZCB0byB5b3UgdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZQ0KK0VjbGlwc2UgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAxLjAgKCZxdW90O0VQTCZxdW90OykuICBBIGNvcHkgb2YgdGhlIEVQTCBpcyBhdmFpbGFibGUgDQorYXQgPGEgaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwiPmh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sPC9hPi4NCitGb3IgcHVycG9zZXMgb2YgdGhlIEVQTCwgJnF1b3Q7UHJvZ3JhbSZxdW90OyB3aWxsIG1lYW4gdGhlIENvbnRlbnQuPC9wPg0KKw0KKzxwPklmIHlvdSBkaWQgbm90IHJlY2VpdmUgdGhpcyBDb250ZW50IGRpcmVjdGx5IGZyb20gdGhlIEVjbGlwc2UgRm91bmRhdGlvbiwgdGhlIENvbnRlbnQgaXMgDQorYmVpbmcgcmVkaXN0cmlidXRlZCBieSBhbm90aGVyIHBhcnR5ICgmcXVvdDtSZWRpc3RyaWJ1dG9yJnF1b3Q7KSBhbmQgZGlmZmVyZW50IHRlcm1zIGFuZCBjb25kaXRpb25zIG1heQ0KK2FwcGx5IHRvIHlvdXIgdXNlIG9mIGFueSBvYmplY3QgY29kZSBpbiB0aGUgQ29udGVudC4gIENoZWNrIHRoZSBSZWRpc3RyaWJ1dG9yJ3MgbGljZW5zZSB0aGF0IHdhcyANCitwcm92aWRlZCB3aXRoIHRoZSBDb250ZW50LiAgSWYgbm8gc3VjaCBsaWNlbnNlIGV4aXN0cywgY29udGFjdCB0aGUgUmVkaXN0cmlidXRvci4gIFVubGVzcyBvdGhlcndpc2UNCitpbmRpY2F0ZWQgYmVsb3csIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgRVBMIHN0aWxsIGFwcGx5IHRvIGFueSBzb3VyY2UgY29kZSBpbiB0aGUgQ29udGVudA0KK2FuZCBzdWNoIHNvdXJjZSBjb2RlIG1heSBiZSBvYnRhaW5lZCBhdCA8YSBocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnLyI+aHR0cDovL3d3dy5lY2xpcHNlLm9yZzwvYT4uPC9wPg0KKw0KKzwvYm9keT4NCis8L2h0bWw+DQpkaWZmIC0tZ2l0IGEvdWkvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnVpL2J1aWxkLnByb3BlcnRpZXMgYi91aS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQudWkvYnVpbGQucHJvcGVydGllcwpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5lNzE1ZGYyCi0tLSAvZGV2L251bGwKKysrIGIvdWkvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnVpL2J1aWxkLnByb3BlcnRpZXMKQEAgLTAsMCArMSwxMiBAQAorIw0KKw0KK2Jpbi5pbmNsdWRlcyA9IC4sXA0KKyAgICAgICAgICAgICAgIE1FVEEtSU5GLyxcDQorICAgICAgICAgICAgICAgcGx1Z2luLnhtbCxcDQorICAgICAgICAgICAgICAgcGx1Z2luLnByb3BlcnRpZXMsXA0KKyAgICAgICAgICAgICAgIHJlc291cmNlcy8sXA0KKyAgICAgICAgICAgICAgIGFib3V0Lmh0bWwNCitqYXJzLmNvbXBpbGUub3JkZXIgPSAuDQorc291cmNlLi4gPSBzcmMvDQorb3V0cHV0Li4gPSBiaW4vDQorc3JjLmluY2x1ZGVzID0gYWJvdXQuaHRtbA0KZGlmZiAtLWdpdCBhL3VpL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC51aS9wbHVnaW4ucHJvcGVydGllcyBiL3VpL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC51aS9wbHVnaW4ucHJvcGVydGllcwpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5iMWQ2NGZhCi0tLSAvZGV2L251bGwKKysrIGIvdWkvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnVpL3BsdWdpbi5wcm9wZXJ0aWVzCkBAIC0wLDAgKzEsMTUgQEAKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KKyMgQ29weXJpZ2h0IChjKSAyMDE1IENFQSBMSVNULg0KKyMgQWxsIHJpZ2h0cyByZXNlcnZlZC4gVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KKyMgYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQorIyB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KKyMgaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtdjEwLmh0bWwNCisjDQorIyBDb250cmlidXRvcnM6DQorIyAgICAgQmVub2l0IE1hZ2dpIChDRUEgTElTVCkgYmVub2l0Lm1hZ2dpQGNlYS5mciAtIGluaXRpYWwgQVBJIGFuZCBpbXBsZW1lbnRhdGlvbg0KKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCitwbHVnaW5OYW1lPW9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC51aQ0KK3BsdWdpbkRlc2NyaXB0aW9uPVRoaXMgcGx1Zy1pbiBjb250YWlucyBhbGwgZ3JhcGhpY2FsIGludGVyZmFjZSBmb3IgdGhlIFN5TUwgMS40IHRvb2xpbmcuDQorcHJvdmlkZXJOYW1lPUVjbGlwc2UgTW9kZWxpbmcgUHJvamVjdA0KKw0KKw0KZGlmZiAtLWdpdCBhL3VpL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC51aS9wbHVnaW4ueG1sIGIvdWkvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnVpL3BsdWdpbi54bWwKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uYzNhNzMwOQotLS0gL2Rldi9udWxsCisrKyBiL3VpL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC51aS9wbHVnaW4ueG1sCkBAIC0wLDAgKzEsNDEgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+DQorPD9lY2xpcHNlIHZlcnNpb249IjMuMCI/Pg0KKzwhLS0NCisgIENvcHlyaWdodCAoYykgMjAxNSBDRUEgTElTVC4NCisgDQorICBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQorICBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCisgIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLCBhbmQgaXMgYXZhaWxhYmxlIGF0DQorICBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyANCisgIENvbnRyaWJ1dG9yczoNCisgIEJlbm9pdCBNYWdnaSAoQ0VBIExJU1QpIGJlbm9pdC5tYWdnaUBjZWEuZnIgLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24NCistLT4NCisNCis8cGx1Z2luPiANCisgICANCisgICANCisgICAgPGV4dGVuc2lvbiBwb2ludD0ib3JnLmVjbGlwc2UucGFweXJ1cy5pbmZyYS5jb3JlLnBhcHlydXNEaWFncmFtIj4NCisJICAgICA8ZGlhZ3JhbUNhdGVnb3J5DQorCSAgICAgICAgICAgIGNsYXNzPSJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQudWkuQ3JlYXRlU3lzTUwxNE1vZGVsQ29tbWFuZCINCisJICAgICAgICAgICAgZGVzY3JpcHRpb249IlN5c01MIDEuNCBkaWFncmFtcyINCisJICAgICAgICAgICAgaWNvbj0icGxhdGZvcm06L3BsdWdpbi9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sLmRpYWdyYW0uY29tbW9uL2ljb25zL2NhdGVnb3J5X3N5c21sLmdpZiINCisJICAgICAgICAgICAgaWQ9IlN5c01MMTQiDQorCSAgICAgICAgICAgIGxhYmVsPSJTeXNNTCAxLjQiPg0KKwkgICAgIDwvZGlhZ3JhbUNhdGVnb3J5Pg0KKyAgICA8L2V4dGVuc2lvbj4NCisNCisgICANCisgICA8ZXh0ZW5zaW9uIHBvaW50PSJvcmcuZWNsaXBzZS5wYXB5cnVzLmluZnJhLm5ld2NoaWxkIj4NCisgICAgICA8bWVudUNyZWF0aW9uTW9kZWwgbW9kZWw9InJlc291cmNlcy9TeXNNTDE0LmNyZWF0aW9ubWVudW1vZGVsIj48L21lbnVDcmVhdGlvbk1vZGVsPg0KKyAgIDwvZXh0ZW5zaW9uPiAgICANCisgICANCisgICA8ZXh0ZW5zaW9uIHBvaW50PSJvcmcuZWNsaXBzZS5wYXB5cnVzLnZpZXdzLnByb3BlcnRpZXMuY29udGV4dCI+DQorICAgICAgPGNvbnRleHQgY29udGV4dE1vZGVsPSJyZXNvdXJjZXMvcHJvcGVydGllcy9TeXNNTDEuNC5jdHgiPjwvY29udGV4dD4NCisgICA8L2V4dGVuc2lvbj4NCisgICAgICANCisgICA8ZXh0ZW5zaW9uIHBvaW50PSJvcmcuZWNsaXBzZS5wYXB5cnVzLmluZnJhLmNvbnN0cmFpbnRzLkNvbnN0cmFpbnRFbnZpcm9ubWVudCI+DQorICAgICAgPGVudmlyb25tZW50IGVudmlyb25tZW50TW9kZWw9InJlc291cmNlcy9TeXNNTDEuNENvbnN0cmFpbnRFbnZpcm9ubWVudC54bWkiPjwvZW52aXJvbm1lbnQ+DQorICAgPC9leHRlbnNpb24+ICAgICAgDQorICAgICAgDQorPC9wbHVnaW4+DQpkaWZmIC0tZ2l0IGEvdWkvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnVpL3BvbS54bWwgYi91aS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQudWkvcG9tLnhtbApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi40Y2Q5YjFhCi0tLSAvZGV2L251bGwKKysrIGIvdWkvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnVpL3BvbS54bWwKQEAgLTAsMCArMSwxMSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4NCis8cHJvamVjdD4NCisJPG1vZGVsVmVyc2lvbj40LjAuMDwvbW9kZWxWZXJzaW9uPg0KKwk8cGFyZW50Pg0KKwkJPGFydGlmYWN0SWQ+b3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbC51aTwvYXJ0aWZhY3RJZD4NCisJCTxncm91cElkPm9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWw8L2dyb3VwSWQ+DQorCQk8dmVyc2lvbj4wLjcuMC1TTkFQU0hPVDwvdmVyc2lvbj4NCisJPC9wYXJlbnQ+DQorCTxhcnRpZmFjdElkPm9yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC51aTwvYXJ0aWZhY3RJZD4NCisJPHBhY2thZ2luZz5lY2xpcHNlLXBsdWdpbjwvcGFja2FnaW5nPg0KKzwvcHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS91aS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQudWkvcmVzb3VyY2VzL1N5c01MMS40Q29uc3RyYWludEVudmlyb25tZW50LnhtaSBiL3VpL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC51aS9yZXNvdXJjZXMvU3lzTUwxLjRDb25zdHJhaW50RW52aXJvbm1lbnQueG1pCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmRjYzA1NzgKLS0tIC9kZXYvbnVsbAorKysgYi91aS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQudWkvcmVzb3VyY2VzL1N5c01MMS40Q29uc3RyYWludEVudmlyb25tZW50LnhtaQpAQCAtMCwwICsxLDkgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IkFTQ0lJIj8+DQorPGVudmlyb25tZW50OkNvbnN0cmFpbnRFbnZpcm9ubWVudA0KKyAgICB4bWk6dmVyc2lvbj0iMi4wIg0KKyAgICB4bWxuczp4bWk9Imh0dHA6Ly93d3cub21nLm9yZy9YTUkiDQorICAgIHhtbG5zOmVudmlyb25tZW50PSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3BhcHlydXMvY29uc3RyYWludHMvZW52aXJvbm1lbnQvMC45Ij4NCisgIDxjb25zdHJhaW50VHlwZXMNCisgICAgICBsYWJlbD0iSGFzIFN0ZXJlb3R5cGUgU3lzbWwgMS40Ig0KKyAgICAgIGNvbnN0cmFpbnRDbGFzcz0ib3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnVpLmNvbnN0cmFpbnRzLkhhc1N0ZXJlb3R5cGVTeXNtbDE0Q29uc3RyYWludCIvPg0KKzwvZW52aXJvbm1lbnQ6Q29uc3RyYWludEVudmlyb25tZW50Pg0KZGlmZiAtLWdpdCBhL3VpL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC51aS9yZXNvdXJjZXMvU3lzTUwxNC5jcmVhdGlvbm1lbnVtb2RlbCBiL3VpL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC51aS9yZXNvdXJjZXMvU3lzTUwxNC5jcmVhdGlvbm1lbnVtb2RlbApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi43YzZhMWVjCi0tLSAvZGV2L251bGwKKysrIGIvdWkvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnVpL3Jlc291cmNlcy9TeXNNTDE0LmNyZWF0aW9ubWVudW1vZGVsCkBAIC0wLDAgKzEsMjgyIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJBU0NJSSI/Pg0KKzxFbGVtZW50Q3JlYXRpb25NZW51TW9kZWw6Rm9sZGVyDQorICAgIHhtaTp2ZXJzaW9uPSIyLjAiDQorICAgIHhtbG5zOnhtaT0iaHR0cDovL3d3dy5vbWcub3JnL1hNSSINCisgICAgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSINCisgICAgeG1sbnM6RWxlbWVudENyZWF0aW9uTWVudU1vZGVsPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3BhcHlydXMvaW5mcmEvbmV3Y2hpbGQvZWxlbWVudGNyZWF0aW9ubWVudW1vZGVsIg0KKyAgICB4bWk6aWQ9Il9GVWZMZ015dUVlU3VZYlBkWndXbHl3Ig0KKyAgICBsYWJlbD0iU3lzTUwgMS40Ig0KKyAgICBpY29uPSIiPg0KKyAgPG1lbnUgeHNpOnR5cGU9IkVsZW1lbnRDcmVhdGlvbk1lbnVNb2RlbDpDcmVhdGlvbk1lbnUiDQorICAgICAgeG1pOmlkPSJfRlVmeXBNeXVFZVN1WWJQZFp3V2x5dyINCisgICAgICBsYWJlbD0iQWNjZXB0Q2hhbmdlU3RydWN0dXJhbEZlYXR1cmVFdmVudEFjdGlvbiINCisgICAgICBlbGVtZW50VHlwZUlkUmVmPSJvcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuQWNjZXB0Q2hhbmdlU3RydWN0dXJhbEZlYXR1cmVFdmVudEFjdGlvbiIvPg0KKyAgPG1lbnUgeHNpOnR5cGU9IkVsZW1lbnRDcmVhdGlvbk1lbnVNb2RlbDpDcmVhdGlvbk1lbnUiDQorICAgICAgeG1pOmlkPSJfRlVmeW5jeXVFZVN1WWJQZFp3V2x5dyINCisgICAgICBsYWJlbD0iQWRqdW5jdFByb3BlcnR5Ig0KKyAgICAgIGVsZW1lbnRUeXBlSWRSZWY9Im9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5BZGp1bmN0UHJvcGVydHkiLz4NCisgIDxtZW51IHhzaTp0eXBlPSJFbGVtZW50Q3JlYXRpb25NZW51TW9kZWw6Q3JlYXRpb25NZW51Ig0KKyAgICAgIHhtaTppZD0iX0ZVZ1p1c3l1RWVTdVliUGRad1dseXciDQorICAgICAgbGFiZWw9IkFsbG9jYXRlIg0KKyAgICAgIGVsZW1lbnRUeXBlSWRSZWY9Im9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5BbGxvY2F0ZV9BYnN0cmFjdGlvbiIvPg0KKyAgPG1lbnUgeHNpOnR5cGU9IkVsZW1lbnRDcmVhdGlvbk1lbnVNb2RlbDpDcmVhdGlvbk1lbnUiDQorICAgICAgeG1pOmlkPSJfRlVnWnVjeXVFZVN1WWJQZFp3V2x5dyINCisgICAgICBsYWJlbD0iQWxsb2NhdGVBY3Rpdml0eVBhcnRpdGlvbiINCisgICAgICBlbGVtZW50VHlwZUlkUmVmPSJvcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuQWxsb2NhdGVBY3Rpdml0eVBhcnRpdGlvbiIvPg0KKyAgPG1lbnUgeHNpOnR5cGU9IkVsZW1lbnRDcmVhdGlvbk1lbnVNb2RlbDpDcmVhdGlvbk1lbnUiDQorICAgICAgeG1pOmlkPSJfRlVnWnpjeXVFZVN1WWJQZFp3V2x5dyINCisgICAgICBsYWJlbD0iQWxsb2NhdGVkIg0KKyAgICAgIGVsZW1lbnRUeXBlSWRSZWY9Im9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5BbGxvY2F0ZWQiLz4NCisgIDxtZW51IHhzaTp0eXBlPSJFbGVtZW50Q3JlYXRpb25NZW51TW9kZWw6Q3JlYXRpb25NZW51Ig0KKyAgICAgIHhtaTppZD0iX0ZVZnlsTXl1RWVTdVliUGRad1dseXciDQorICAgICAgbGFiZWw9IkJpbmRpbmdDb25uZWN0b3IiDQorICAgICAgaWNvbj0iIg0KKyAgICAgIGVsZW1lbnRUeXBlSWRSZWY9Im9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5CaW5kaW5nQ29ubmVjdG9yIg0KKyAgICAgIHJvbGU9IiIvPg0KKyAgPG1lbnUgeHNpOnR5cGU9IkVsZW1lbnRDcmVhdGlvbk1lbnVNb2RlbDpDcmVhdGlvbk1lbnUiDQorICAgICAgeG1pOmlkPSJfRlVmeWxjeXVFZVN1WWJQZFp3V2x5dyINCisgICAgICBsYWJlbD0iQmxvY2siDQorICAgICAgaWNvbj0iIg0KKyAgICAgIGVsZW1lbnRUeXBlSWRSZWY9Im9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5CbG9jayIvPg0KKyAgPG1lbnUgeHNpOnR5cGU9IkVsZW1lbnRDcmVhdGlvbk1lbnVNb2RlbDpDcmVhdGlvbk1lbnUiDQorICAgICAgeG1pOmlkPSJfRlVmeW5NeXVFZVN1WWJQZFp3V2x5dyINCisgICAgICBsYWJlbD0iQm91bmRSZWZlcmVuY2UiDQorICAgICAgZWxlbWVudFR5cGVJZFJlZj0ib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LkJvdW5kUmVmZXJlbmNlIi8+DQorICA8bWVudSB4c2k6dHlwZT0iRWxlbWVudENyZWF0aW9uTWVudU1vZGVsOkNyZWF0aW9uTWVudSINCisgICAgICB4bWk6aWQ9Il9GVWZ5cGN5dUVlU3VZYlBkWndXbHl3Ig0KKyAgICAgIGxhYmVsPSJDaGFuZ2VTdHJ1Y3R1cmFsRmVhdHVyZUV2ZW50Ig0KKyAgICAgIGVsZW1lbnRUeXBlSWRSZWY9Im9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5DaGFuZ2VTdHJ1Y3R1cmFsRmVhdHVyZUV2ZW50Ii8+DQorICA8bWVudSB4c2k6dHlwZT0iRWxlbWVudENyZWF0aW9uTWVudU1vZGVsOkNyZWF0aW9uTWVudSINCisgICAgICB4bWk6aWQ9Il9GVWZ5bnN5dUVlU3VZYlBkWndXbHl3Ig0KKyAgICAgIGxhYmVsPSJDbGFzc2lmaWVyQmVoYXZpb3JQcm9wZXJ0eSINCisgICAgICBlbGVtZW50VHlwZUlkUmVmPSJvcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuQ2xhc3NpZmllckJlaGF2aW9yUHJvcGVydHkiLz4NCisgIDxtZW51IHhzaTp0eXBlPSJFbGVtZW50Q3JlYXRpb25NZW51TW9kZWw6Q3JlYXRpb25NZW51Ig0KKyAgICAgIHhtaTppZD0iX0ZVZnlrc3l1RWVTdVliUGRad1dseXciDQorICAgICAgbGFiZWw9IkNvbm5lY3RvclByb3BlcnR5Ig0KKyAgICAgIGVsZW1lbnRUeXBlSWRSZWY9Im9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5Db25uZWN0b3JQcm9wZXJ0eSIvPg0KKyAgPG1lbnUgeHNpOnR5cGU9IkVsZW1lbnRDcmVhdGlvbk1lbnVNb2RlbDpDcmVhdGlvbk1lbnUiDQorICAgICAgeG1pOmlkPSJfRlVnWnVNeXVFZVN1WWJQZFp3V2x5dyINCisgICAgICBsYWJlbD0iQ29uc3RyYWludEJsb2NrIg0KKyAgICAgIGVsZW1lbnRUeXBlSWRSZWY9Im9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5Db25zdHJhaW50QmxvY2siLz4NCisgIDxtZW51IHhzaTp0eXBlPSJFbGVtZW50Q3JlYXRpb25NZW51TW9kZWw6Q3JlYXRpb25NZW51Ig0KKyAgICAgIHhtaTppZD0iX0ZVZ1pzY3l1RWVTdVliUGRad1dseXciDQorICAgICAgbGFiZWw9IkNvbmZvcm0gRGVwZW5kZW5jeSINCisgICAgICBlbGVtZW50VHlwZUlkUmVmPSJvcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuQ29uZm9ybV9EZXBlbmRlbmN5Ii8+DQorICA8bWVudSB4c2k6dHlwZT0iRWxlbWVudENyZWF0aW9uTWVudU1vZGVsOkNyZWF0aW9uTWVudSINCisgICAgICB4bWk6aWQ9Il9GVWdac3N5dUVlU3VZYlBkWndXbHl3Ig0KKyAgICAgIGxhYmVsPSJDb25mb3JtIEdlbmVyYWxpemF0aW9uIg0KKyAgICAgIGVsZW1lbnRUeXBlSWRSZWY9Im9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5Db25mb3JtX0dlbmVyYWxpemF0aW9uIi8+DQorICA8bWVudSB4c2k6dHlwZT0iRWxlbWVudENyZWF0aW9uTWVudU1vZGVsOkNyZWF0aW9uTWVudSINCisgICAgICB4bWk6aWQ9Il9GVWdacWN5dUVlU3VZYlBkWndXbHl3Ig0KKyAgICAgIGxhYmVsPSJDb250aW51b3VzIEFjdGl2aXR5RWRnZSINCisgICAgICBlbGVtZW50VHlwZUlkUmVmPSJvcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuQ29udGludW91c19BY3Rpdml0eUVkZ2UiLz4NCisgIDxtZW51IHhzaTp0eXBlPSJFbGVtZW50Q3JlYXRpb25NZW51TW9kZWw6Q3JlYXRpb25NZW51Ig0KKyAgICAgIHhtaTppZD0iX0ZVZ1pxc3l1RWVTdVliUGRad1dseXciDQorICAgICAgbGFiZWw9IkNvbnRpbnVvdXMgUGFyYW1ldGVyIg0KKyAgICAgIGVsZW1lbnRUeXBlSWRSZWY9Im9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5Db250aW51b3VzX1BhcmFtZXRlciIvPg0KKyAgPG1lbnUgeHNpOnR5cGU9IkVsZW1lbnRDcmVhdGlvbk1lbnVNb2RlbDpDcmVhdGlvbk1lbnUiDQorICAgICAgeG1pOmlkPSJfRlVnWm9zeXVFZVN1WWJQZFp3V2x5dyINCisgICAgICBsYWJlbD0iQ29udHJvbE9wZXJhdG9yIEJlaGF2aW9yIg0KKyAgICAgIGVsZW1lbnRUeXBlSWRSZWY9Im9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5Db250cm9sT3BlcmF0b3JfQmVoYXZpb3IiLz4NCisgIDxtZW51IHhzaTp0eXBlPSJFbGVtZW50Q3JlYXRpb25NZW51TW9kZWw6Q3JlYXRpb25NZW51Ig0KKyAgICAgIHhtaTppZD0iX0ZVZ1pvOHl1RWVTdVliUGRad1dseXciDQorICAgICAgbGFiZWw9IkNvbnRyb2xPcGVyYXRvciBPcGVyYXRpb24iDQorICAgICAgZWxlbWVudFR5cGVJZFJlZj0ib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LkNvbnRyb2xPcGVyYXRvcl9PcGVyYXRpb24iLz4NCisgIDxtZW51IHhzaTp0eXBlPSJFbGVtZW50Q3JlYXRpb25NZW51TW9kZWw6Q3JlYXRpb25NZW51Ig0KKyAgICAgIHhtaTppZD0iX0ZVZ1p2c3l1RWVTdVliUGRad1dseXciDQorICAgICAgbGFiZWw9IkNvcHkiDQorICAgICAgZWxlbWVudFR5cGVJZFJlZj0ib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LkNvcHlfQWJzdHJhY3Rpb24iLz4NCisgIDxtZW51IHhzaTp0eXBlPSJFbGVtZW50Q3JlYXRpb25NZW51TW9kZWw6Q3JlYXRpb25NZW51Ig0KKyAgICAgIHhtaTppZD0iX0ZVZ1p2TXl1RWVTdVliUGRad1dseXciDQorICAgICAgbGFiZWw9IkRlcml2ZVJlcXQiDQorICAgICAgZWxlbWVudFR5cGVJZFJlZj0ib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LkRlcml2ZVJlcXRfQWJzdHJhY3Rpb24iLz4NCisgIDxtZW51IHhzaTp0eXBlPSJFbGVtZW50Q3JlYXRpb25NZW51TW9kZWw6Q3JlYXRpb25NZW51Ig0KKyAgICAgIHhtaTppZD0iX0ZVZnlwc3l1RWVTdVliUGRad1dseXciDQorICAgICAgbGFiZWw9IkRpcmVjdGVkRmVhdHVyZSINCisgICAgICBlbGVtZW50VHlwZUlkUmVmPSJvcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuRGlyZWN0ZWRGZWF0dXJlIi8+DQorICA8bWVudSB4c2k6dHlwZT0iRWxlbWVudENyZWF0aW9uTWVudU1vZGVsOkNyZWF0aW9uTWVudSINCisgICAgICB4bWk6aWQ9Il9GVWZ5bWN5dUVlU3VZYlBkWndXbHl3Ig0KKyAgICAgIGxhYmVsPSJEaXJlY3RlZFJlbGF0aW9uc2hpcFByb3BlcnR5UGF0aCINCisgICAgICBlbGVtZW50VHlwZUlkUmVmPSJvcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuRGlyZWN0ZWRSZWxhdGlvbnNoaXBQcm9wZXJ0eVBhdGgiLz4NCisgIDxtZW51IHhzaTp0eXBlPSJFbGVtZW50Q3JlYXRpb25NZW51TW9kZWw6Q3JlYXRpb25NZW51Ig0KKyAgICAgIHhtaTppZD0iX0ZVZ1pwOHl1RWVTdVliUGRad1dseXciDQorICAgICAgbGFiZWw9IkRpc2NyZXRlIEFjdGl2aXR5RWRnZSINCisgICAgICBlbGVtZW50VHlwZUlkUmVmPSJvcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuRGlzY3JldGVfQWN0aXZpdHlFZGdlIi8+DQorICA8bWVudSB4c2k6dHlwZT0iRWxlbWVudENyZWF0aW9uTWVudU1vZGVsOkNyZWF0aW9uTWVudSINCisgICAgICB4bWk6aWQ9Il9GVWdacU15dUVlU3VZYlBkWndXbHl3Ig0KKyAgICAgIGxhYmVsPSJEaXNjcmV0ZSBQYXJhbWV0ZXIiDQorICAgICAgZWxlbWVudFR5cGVJZFJlZj0ib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LkRpc2NyZXRlX1BhcmFtZXRlciIvPg0KKyAgPG1lbnUgeHNpOnR5cGU9IkVsZW1lbnRDcmVhdGlvbk1lbnVNb2RlbDpDcmVhdGlvbk1lbnUiDQorICAgICAgeG1pOmlkPSJfRlVmeWtjeXVFZVN1WWJQZFp3V2x5dyINCisgICAgICBsYWJlbD0iRGlzdHJpYnV0ZWRQcm9wZXJ0eSINCisgICAgICBlbGVtZW50VHlwZUlkUmVmPSJvcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuRGlzdHJpYnV0ZWRQcm9wZXJ0eSIvPg0KKyAgPG1lbnUgeHNpOnR5cGU9IkVsZW1lbnRDcmVhdGlvbk1lbnVNb2RlbDpDcmVhdGlvbk1lbnUiDQorICAgICAgeG1pOmlkPSJfRlVnWnQ4eXVFZVN1WWJQZFp3V2x5dyINCisgICAgICBsYWJlbD0iRWxlbWVudEdyb3VwIg0KKyAgICAgIGVsZW1lbnRUeXBlSWRSZWY9Im9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5FbGVtZW50R3JvdXAiLz4NCisgIDxtZW51IHhzaTp0eXBlPSJFbGVtZW50Q3JlYXRpb25NZW51TW9kZWw6Q3JlYXRpb25NZW51Ig0KKyAgICAgIHhtaTppZD0iX0ZVZnltc3l1RWVTdVliUGRad1dseXciDQorICAgICAgbGFiZWw9IkVsZW1lbnRQcm9wZXJ0eVBhdGgiDQorICAgICAgZWxlbWVudFR5cGVJZFJlZj0ib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LkVsZW1lbnRQcm9wZXJ0eVBhdGgiLz4NCisgIDxtZW51IHhzaTp0eXBlPSJFbGVtZW50Q3JlYXRpb25NZW51TW9kZWw6Q3JlYXRpb25NZW51Ig0KKyAgICAgIHhtaTppZD0iX0ZVZnltOHl1RWVTdVliUGRad1dseXciDQorICAgICAgbGFiZWw9IkVuZFBhdGhNdWx0aXBsaWNpdHkiDQorICAgICAgZWxlbWVudFR5cGVJZFJlZj0ib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LkVuZFBhdGhNdWx0aXBsaWNpdHkiLz4NCisgIDxtZW51IHhzaTp0eXBlPSJFbGVtZW50Q3JlYXRpb25NZW51TW9kZWw6Q3JlYXRpb25NZW51Ig0KKyAgICAgIHhtaTppZD0iX0ZVZ1p0c3l1RWVTdVliUGRad1dseXciDQorICAgICAgbGFiZWw9IkV4cG9zZSINCisgICAgICBlbGVtZW50VHlwZUlkUmVmPSJvcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuRXhwb3NlIi8+DQorICA8bWVudSB4c2k6dHlwZT0iRWxlbWVudENyZWF0aW9uTWVudU1vZGVsOkNyZWF0aW9uTWVudSINCisgICAgICB4bWk6aWQ9Il9GVWZ5b015dUVlU3VZYlBkWndXbHl3Ig0KKyAgICAgIGxhYmVsPSJGbG93UHJvcGVydHkiDQorICAgICAgZWxlbWVudFR5cGVJZFJlZj0ib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LkZsb3dQcm9wZXJ0eSIvPg0KKyAgPG1lbnUgeHNpOnR5cGU9IkVsZW1lbnRDcmVhdGlvbk1lbnVNb2RlbDpDcmVhdGlvbk1lbnUiDQorICAgICAgeG1pOmlkPSJfRlVnWnk4eXVFZVN1WWJQZFp3V2x5dyINCisgICAgICBsYWJlbD0iRmxvd1BvcnQiDQorICAgICAgZWxlbWVudFR5cGVJZFJlZj0ib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LkZsb3dQb3J0Ii8+DQorICA8bWVudSB4c2k6dHlwZT0iRWxlbWVudENyZWF0aW9uTWVudU1vZGVsOkNyZWF0aW9uTWVudSINCisgICAgICB4bWk6aWQ9Il9GVWdaek15dUVlU3VZYlBkWndXbHl3Ig0KKyAgICAgIGxhYmVsPSJGbG93U3BlY2lmaWNhdGlvbiINCisgICAgICBlbGVtZW50VHlwZUlkUmVmPSJvcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuRmxvd1NwZWNpZmljYXRpb24iLz4NCisgIDxtZW51IHhzaTp0eXBlPSJFbGVtZW50Q3JlYXRpb25NZW51TW9kZWw6Q3JlYXRpb25NZW51Ig0KKyAgICAgIHhtaTppZD0iX0ZVZnlvY3l1RWVTdVliUGRad1dseXciDQorICAgICAgbGFiZWw9IkZ1bGxQb3J0Ig0KKyAgICAgIGVsZW1lbnRUeXBlSWRSZWY9Im9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5GdWxsUG9ydCIvPg0KKyAgPG1lbnUgeHNpOnR5cGU9IkVsZW1lbnRDcmVhdGlvbk1lbnVNb2RlbDpDcmVhdGlvbk1lbnUiDQorICAgICAgeG1pOmlkPSJfRlVmeW9zeXVFZVN1WWJQZFp3V2x5dyINCisgICAgICBsYWJlbD0iSW50ZXJmYWNlQmxvY2siDQorICAgICAgZWxlbWVudFR5cGVJZFJlZj0ib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LkludGVyZmFjZUJsb2NrIi8+DQorICA8bWVudSB4c2k6dHlwZT0iRWxlbWVudENyZWF0aW9uTWVudU1vZGVsOkNyZWF0aW9uTWVudSINCisgICAgICB4bWk6aWQ9Il9GVWZ5cDh5dUVlU3VZYlBkWndXbHl3Ig0KKyAgICAgIGxhYmVsPSJJbnZvY2F0aW9uT25OZXN0ZWRQb3J0QWN0aW9uIEludm9jYXRpb25BY3Rpb24iDQorICAgICAgZWxlbWVudFR5cGVJZFJlZj0ib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0Lkludm9jYXRpb25Pbk5lc3RlZFBvcnRBY3Rpb25fSW52b2NhdGlvbkFjdGlvbiIvPg0KKyAgPG1lbnUgeHNpOnR5cGU9IkVsZW1lbnRDcmVhdGlvbk1lbnVNb2RlbDpDcmVhdGlvbk1lbnUiDQorICAgICAgeG1pOmlkPSJfRlVmeXFNeXVFZVN1WWJQZFp3V2x5dyINCisgICAgICBsYWJlbD0iSW52b2NhdGlvbk9uTmVzdGVkUG9ydEFjdGlvbiBFbGVtZW50Ig0KKyAgICAgIGVsZW1lbnRUeXBlSWRSZWY9Im9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5JbnZvY2F0aW9uT25OZXN0ZWRQb3J0QWN0aW9uX0VsZW1lbnQiLz4NCisgIDxtZW51IHhzaTp0eXBlPSJFbGVtZW50Q3JlYXRpb25NZW51TW9kZWw6Q3JlYXRpb25NZW51Ig0KKyAgICAgIHhtaTppZD0iX0ZVZnluOHl1RWVTdVliUGRad1dseXciDQorICAgICAgbGFiZWw9Ikl0ZW1GbG93Ig0KKyAgICAgIGVsZW1lbnRUeXBlSWRSZWY9Im9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5JdGVtRmxvdyIvPg0KKyAgPG1lbnUgeHNpOnR5cGU9IkVsZW1lbnRDcmVhdGlvbk1lbnVNb2RlbDpDcmVhdGlvbk1lbnUiDQorICAgICAgeG1pOmlkPSJfRlVmeWw4eXVFZVN1WWJQZFp3V2x5dyINCisgICAgICBsYWJlbD0iTmVzdGVkQ29ubmVjdG9yRW5kIENvbm5lY3RvckVuZCINCisgICAgICBlbGVtZW50VHlwZUlkUmVmPSJvcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuTmVzdGVkQ29ubmVjdG9yRW5kX0Nvbm5lY3RvckVuZCIvPg0KKyAgPG1lbnUgeHNpOnR5cGU9IkVsZW1lbnRDcmVhdGlvbk1lbnVNb2RlbDpDcmVhdGlvbk1lbnUiDQorICAgICAgeG1pOmlkPSJfRlVmeW1NeXVFZVN1WWJQZFp3V2x5dyINCisgICAgICBsYWJlbD0iTmVzdGVkQ29ubmVjdG9yRW5kIEVsZW1lbnQiDQorICAgICAgZWxlbWVudFR5cGVJZFJlZj0ib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0Lk5lc3RlZENvbm5lY3RvckVuZF9FbGVtZW50Ii8+DQorICA8bWVudSB4c2k6dHlwZT0iRWxlbWVudENyZWF0aW9uTWVudU1vZGVsOkNyZWF0aW9uTWVudSINCisgICAgICB4bWk6aWQ9Il9GVWdacHN5dUVlU3VZYlBkWndXbHl3Ig0KKyAgICAgIGxhYmVsPSJOb0J1ZmZlciINCisgICAgICBlbGVtZW50VHlwZUlkUmVmPSJvcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuTm9CdWZmZXIiLz4NCisgIDxtZW51IHhzaTp0eXBlPSJFbGVtZW50Q3JlYXRpb25NZW51TW9kZWw6Q3JlYXRpb25NZW51Ig0KKyAgICAgIHhtaTppZD0iX0ZVZ1pyY3l1RWVTdVliUGRad1dseXciDQorICAgICAgbGFiZWw9Ik9wdGlvbmFsIg0KKyAgICAgIGVsZW1lbnRUeXBlSWRSZWY9Im9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5PcHRpb25hbCIvPg0KKyAgPG1lbnUgeHNpOnR5cGU9IkVsZW1lbnRDcmVhdGlvbk1lbnVNb2RlbDpDcmVhdGlvbk1lbnUiDQorICAgICAgeG1pOmlkPSJfRlVnWm9jeXVFZVN1WWJQZFp3V2x5dyINCisgICAgICBsYWJlbD0iT3ZlcndyaXRlIg0KKyAgICAgIGVsZW1lbnRUeXBlSWRSZWY9Im9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5PdmVyd3JpdGUiLz4NCisgIDxtZW51IHhzaTp0eXBlPSJFbGVtZW50Q3JlYXRpb25NZW51TW9kZWw6Q3JlYXRpb25NZW51Ig0KKyAgICAgIHhtaTppZD0iX0ZVZnlrOHl1RWVTdVliUGRad1dseXciDQorICAgICAgbGFiZWw9IlBhcnRpY2lwYW50UHJvcGVydHkiDQorICAgICAgZWxlbWVudFR5cGVJZFJlZj0ib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LlBhcnRpY2lwYW50UHJvcGVydHkiLz4NCisgIDxtZW51IHhzaTp0eXBlPSJFbGVtZW50Q3JlYXRpb25NZW51TW9kZWw6Q3JlYXRpb25NZW51Ig0KKyAgICAgIHhtaTppZD0iX0ZVZ1pzOHl1RWVTdVliUGRad1dseXciDQorICAgICAgbGFiZWw9IlByb2JsZW0iDQorICAgICAgZWxlbWVudFR5cGVJZFJlZj0ib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LlByb2JsZW0iLz4NCisgIDxtZW51IHhzaTp0eXBlPSJFbGVtZW50Q3JlYXRpb25NZW51TW9kZWw6Q3JlYXRpb25NZW51Ig0KKyAgICAgIHhtaTppZD0iX0ZVZ1pxOHl1RWVTdVliUGRad1dseXciDQorICAgICAgbGFiZWw9IlByb2JhYmlsaXR5IEFjdGl2aXR5RWRnZSINCisgICAgICBlbGVtZW50VHlwZUlkUmVmPSJvcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuUHJvYmFiaWxpdHlfQWN0aXZpdHlFZGdlIi8+DQorICA8bWVudSB4c2k6dHlwZT0iRWxlbWVudENyZWF0aW9uTWVudU1vZGVsOkNyZWF0aW9uTWVudSINCisgICAgICB4bWk6aWQ9Il9GVWdack15dUVlU3VZYlBkWndXbHl3Ig0KKyAgICAgIGxhYmVsPSJQcm9iYWJpbGl0eSBQYXJhbWV0ZXJTZXQiDQorICAgICAgZWxlbWVudFR5cGVJZFJlZj0ib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LlByb2JhYmlsaXR5X1BhcmFtZXRlclNldCIvPg0KKyAgPG1lbnUgeHNpOnR5cGU9IkVsZW1lbnRDcmVhdGlvbk1lbnVNb2RlbDpDcmVhdGlvbk1lbnUiDQorICAgICAgeG1pOmlkPSJfRlVmeWxzeXVFZVN1WWJQZFp3V2x5dyINCisgICAgICBsYWJlbD0iUHJvcGVydHlTcGVjaWZpY1R5cGUiDQorICAgICAgaWNvbj0iIg0KKyAgICAgIGVsZW1lbnRUeXBlSWRSZWY9Im9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5Qcm9wZXJ0eVNwZWNpZmljVHlwZSIvPg0KKyAgPG1lbnUgeHNpOnR5cGU9IkVsZW1lbnRDcmVhdGlvbk1lbnVNb2RlbDpDcmVhdGlvbk1lbnUiDQorICAgICAgeG1pOmlkPSJfRlVmeW84eXVFZVN1WWJQZFp3V2x5dyINCisgICAgICBsYWJlbD0iUHJveHlQb3J0Ig0KKyAgICAgIGVsZW1lbnRUeXBlSWRSZWY9Im9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5Qcm94eVBvcnQiLz4NCisgIDxtZW51IHhzaTp0eXBlPSJFbGVtZW50Q3JlYXRpb25NZW51TW9kZWw6Q3JlYXRpb25NZW51Ig0KKyAgICAgIHhtaTppZD0iX0ZVZ1pwTXl1RWVTdVliUGRad1dseXciDQorICAgICAgbGFiZWw9IlJhdGUgQWN0aXZpdHlFZGdlIg0KKyAgICAgIGVsZW1lbnRUeXBlSWRSZWY9Im9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5SYXRlX0FjdGl2aXR5RWRnZSIvPg0KKyAgPG1lbnUgeHNpOnR5cGU9IkVsZW1lbnRDcmVhdGlvbk1lbnVNb2RlbDpDcmVhdGlvbk1lbnUiDQorICAgICAgeG1pOmlkPSJfRlVnWnBjeXVFZVN1WWJQZFp3V2x5dyINCisgICAgICBsYWJlbD0iUmF0ZSBQYXJhbWV0ZXIiDQorICAgICAgZWxlbWVudFR5cGVJZFJlZj0ib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LlJhdGVfUGFyYW1ldGVyIi8+DQorICA8bWVudSB4c2k6dHlwZT0iRWxlbWVudENyZWF0aW9uTWVudU1vZGVsOkNyZWF0aW9uTWVudSINCisgICAgICB4bWk6aWQ9Il9GVWdacnN5dUVlU3VZYlBkWndXbHl3Ig0KKyAgICAgIGxhYmVsPSJSYXRpb25hbGUiDQorICAgICAgZWxlbWVudFR5cGVJZFJlZj0ib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LlJhdGlvbmFsZSIvPg0KKyAgPG1lbnUgeHNpOnR5cGU9IkVsZW1lbnRDcmVhdGlvbk1lbnVNb2RlbDpDcmVhdGlvbk1lbnUiDQorICAgICAgeG1pOmlkPSJfRlVnWnljeXVFZVN1WWJQZFp3V2x5dyINCisgICAgICBsYWJlbD0iUmVmaW5lIg0KKyAgICAgIGVsZW1lbnRUeXBlSWRSZWY9Im9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5SZWZpbmVfQWJzdHJhY3Rpb24iLz4NCisgIDxtZW51IHhzaTp0eXBlPSJFbGVtZW50Q3JlYXRpb25NZW51TW9kZWw6Q3JlYXRpb25NZW51Ig0KKyAgICAgIHhtaTppZD0iX0ZVZ1p4TXl1RWVTdVliUGRad1dseXciDQorICAgICAgbGFiZWw9IlJlcXVpcmVtZW50Ig0KKyAgICAgIGVsZW1lbnRUeXBlSWRSZWY9Im9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5SZXF1aXJlbWVudCIvPg0KKyAgPG1lbnUgeHNpOnR5cGU9IkVsZW1lbnRDcmVhdGlvbk1lbnVNb2RlbDpDcmVhdGlvbk1lbnUiDQorICAgICAgeG1pOmlkPSJfRlVnWnpzeXVFZVN1WWJQZFp3V2x5dyINCisgICAgICBsYWJlbD0iUmVxdWlyZW1lbnRSZWxhdGVkIg0KKyAgICAgIGVsZW1lbnRUeXBlSWRSZWY9Im9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5SZXF1aXJlbWVudFJlbGF0ZWQiLz4NCisgIDxtZW51IHhzaTp0eXBlPSJFbGVtZW50Q3JlYXRpb25NZW51TW9kZWw6Q3JlYXRpb25NZW51Ig0KKyAgICAgIHhtaTppZD0iX0ZVZ1p3TXl1RWVTdVliUGRad1dseXciDQorICAgICAgbGFiZWw9IlNhdGlzZnkiDQorICAgICAgZWxlbWVudFR5cGVJZFJlZj0ib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LlNhdGlzZnlfQWJzdHJhY3Rpb24iLz4NCisgIDxtZW51IHhzaTp0eXBlPSJFbGVtZW50Q3JlYXRpb25NZW51TW9kZWw6Q3JlYXRpb25NZW51Ig0KKyAgICAgIHhtaTppZD0iX0ZVZ1p0Y3l1RWVTdVliUGRad1dseXciDQorICAgICAgbGFiZWw9IlN0YWtlaG9sZGVyIg0KKyAgICAgIGVsZW1lbnRUeXBlSWRSZWY9Im9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5TdGFrZWhvbGRlciIvPg0KKyAgPG1lbnUgeHNpOnR5cGU9IkVsZW1lbnRDcmVhdGlvbk1lbnVNb2RlbDpDcmVhdGlvbk1lbnUiDQorICAgICAgeG1pOmlkPSJfRlVnWndzeXVFZVN1WWJQZFp3V2x5dyINCisgICAgICBsYWJlbD0iVGVzdENhc2UgT3BlcmF0aW9uIg0KKyAgICAgIGVsZW1lbnRUeXBlSWRSZWY9Im9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5UZXN0Q2FzZV9PcGVyYXRpb24iLz4NCisgIDxtZW51IHhzaTp0eXBlPSJFbGVtZW50Q3JlYXRpb25NZW51TW9kZWw6Q3JlYXRpb25NZW51Ig0KKyAgICAgIHhtaTppZD0iX0ZVZ1p3OHl1RWVTdVliUGRad1dseXciDQorICAgICAgbGFiZWw9IlRlc3RDYXNlIEJlaGF2aW9yIg0KKyAgICAgIGVsZW1lbnRUeXBlSWRSZWY9Im9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5UZXN0Q2FzZV9CZWhhdmlvciIvPg0KKyAgPG1lbnUgeHNpOnR5cGU9IkVsZW1lbnRDcmVhdGlvbk1lbnVNb2RlbDpDcmVhdGlvbk1lbnUiDQorICAgICAgeG1pOmlkPSJfRlVnWng4eXVFZVN1WWJQZFp3V2x5dyINCisgICAgICBsYWJlbD0iVHJhY2UiDQorICAgICAgZWxlbWVudFR5cGVJZFJlZj0ib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LlRyYWNlX0Fic3RyYWN0aW9uIi8+DQorICA8bWVudSB4c2k6dHlwZT0iRWxlbWVudENyZWF0aW9uTWVudU1vZGVsOkNyZWF0aW9uTWVudSINCisgICAgICB4bWk6aWQ9Il9GVWdab015dUVlU3VZYlBkWndXbHl3Ig0KKyAgICAgIGxhYmVsPSJUcmlnZ2VyT25OZXN0ZWRQb3J0IEVsZW1lbnQiDQorICAgICAgZWxlbWVudFR5cGVJZFJlZj0ib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LlRyaWdnZXJPbk5lc3RlZFBvcnRfRWxlbWVudCIvPg0KKyAgPG1lbnUgeHNpOnR5cGU9IkVsZW1lbnRDcmVhdGlvbk1lbnVNb2RlbDpDcmVhdGlvbk1lbnUiDQorICAgICAgeG1pOmlkPSJfRlVmeXFjeXVFZVN1WWJQZFp3V2x5dyINCisgICAgICBsYWJlbD0iVHJpZ2dlck9uTmVzdGVkUG9ydCBUcmlnZ2VyIg0KKyAgICAgIGVsZW1lbnRUeXBlSWRSZWY9Im9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5UcmlnZ2VyT25OZXN0ZWRQb3J0X1RyaWdnZXIiLz4NCisgIDxtZW51IHhzaTp0eXBlPSJFbGVtZW50Q3JlYXRpb25NZW51TW9kZWw6Q3JlYXRpb25NZW51Ig0KKyAgICAgIHhtaTppZD0iX1Y5RDhjT2pyRWVTMHNfUGUtRzNYTUEiDQorICAgICAgbGFiZWw9IlVuaXQiDQorICAgICAgZWxlbWVudFR5cGVJZFJlZj0ib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LlVuaXQiLz4NCisgIDxtZW51IHhzaTp0eXBlPSJFbGVtZW50Q3JlYXRpb25NZW51TW9kZWw6Q3JlYXRpb25NZW51Ig0KKyAgICAgIHhtaTppZD0iX0ZVZnlrTXl1RWVTdVliUGRad1dseXciDQorICAgICAgbGFiZWw9IlZhbHVlVHlwZSINCisgICAgICBlbGVtZW50VHlwZUlkUmVmPSJvcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuVmFsdWVUeXBlIi8+DQorICA8bWVudSB4c2k6dHlwZT0iRWxlbWVudENyZWF0aW9uTWVudU1vZGVsOkNyZWF0aW9uTWVudSINCisgICAgICB4bWk6aWQ9Il9GVWdaeGN5dUVlU3VZYlBkWndXbHl3Ig0KKyAgICAgIGxhYmVsPSJWZXJpZnkiDQorICAgICAgZWxlbWVudFR5cGVJZFJlZj0ib3JnLmVjbGlwc2UucGFweXJ1cy5TeXNNTDE0LlZlcmlmeV9BYnN0cmFjdGlvbiIvPg0KKyAgPG1lbnUgeHNpOnR5cGU9IkVsZW1lbnRDcmVhdGlvbk1lbnVNb2RlbDpDcmVhdGlvbk1lbnUiDQorICAgICAgeG1pOmlkPSJfRlVnWnNNeXVFZVN1WWJQZFp3V2x5dyINCisgICAgICBsYWJlbD0iVmlldyBDbGFzcyINCisgICAgICBlbGVtZW50VHlwZUlkUmVmPSJvcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuVmlld19DbGFzcyIvPg0KKyAgPG1lbnUgeHNpOnR5cGU9IkVsZW1lbnRDcmVhdGlvbk1lbnVNb2RlbDpDcmVhdGlvbk1lbnUiDQorICAgICAgeG1pOmlkPSJfRlVnWnI4eXVFZVN1WWJQZFp3V2x5dyINCisgICAgICBsYWJlbD0iVmlldyBQYWNrYWdlIg0KKyAgICAgIGVsZW1lbnRUeXBlSWRSZWY9Im9yZy5lY2xpcHNlLnBhcHlydXMuU3lzTUwxNC5WaWV3X1BhY2thZ2UiLz4NCisgIDxtZW51IHhzaTp0eXBlPSJFbGVtZW50Q3JlYXRpb25NZW51TW9kZWw6Q3JlYXRpb25NZW51Ig0KKyAgICAgIHhtaTppZD0iX0ZVZ1p0TXl1RWVTdVliUGRad1dseXciDQorICAgICAgbGFiZWw9IlZpZXdQb2ludCINCisgICAgICBlbGVtZW50VHlwZUlkUmVmPSJvcmcuZWNsaXBzZS5wYXB5cnVzLlN5c01MMTQuVmlld1BvaW50Ii8+DQorPC9FbGVtZW50Q3JlYXRpb25NZW51TW9kZWw6Rm9sZGVyPg0KZGlmZiAtLWdpdCBhL3VpL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC51aS9yZXNvdXJjZXMvcHJvcGVydGllcy9TeXNNTDEuNC5jdHggYi91aS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQudWkvcmVzb3VyY2VzL3Byb3BlcnRpZXMvU3lzTUwxLjQuY3R4Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmFmNDc0MTgKLS0tIC9kZXYvbnVsbAorKysgYi91aS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQudWkvcmVzb3VyY2VzL3Byb3BlcnRpZXMvU3lzTUwxLjQuY3R4CkBAIC0wLDAgKzEsMTI0MiBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iQVNDSUkiPz4NCis8Y29udGV4dHM6Q29udGV4dCB4bWk6dmVyc2lvbj0iMi4wIiB4bWxuczp4bWk9Imh0dHA6Ly93d3cub21nLm9yZy9YTUkiIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIHhtbG5zOmNvbnN0cmFpbnRzPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3BhcHlydXMvY29uc3RyYWludHMvMC45IiB4bWxuczpjb250ZXh0cz0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9wYXB5cnVzL3Byb3BlcnRpZXMvY29udGV4dHMvMC45IiB4bWk6aWQ9Il96LU5hOE0xWEVlU0dWYkZOTTRtOGdRIiBuYW1lPSJTeXNNTCAxLjQiPg0KKyAgPGRlcGVuZGVuY2llcyBocmVmPSJwcGU6L2NvbnRleHQvb3JnLmVjbGlwc2UucGFweXJ1cy51bWwucHJvcGVydGllcy9Nb2RlbC9VTUwvVU1MLmN0eCNfNjlRSmtLREpFZVNaeGZDWHpaejMtdyIvPg0KKyAgPHRhYnMgeG1pOmlkPSJfMnhYZkVNMVhFZVNHVmJGTk00bThnUSIgbGFiZWw9IlN5c01MIDEuNCIgaWQ9Im9zeXNtbDE0IiBwcmlvcml0eT0iMTAwIj4NCisgICAgPHNlY3Rpb25zIHhtaTppZD0iXzJ4b2swTTFYRWVTR1ZiRk5NNG04Z1EiIG5hbWU9IlNpbmdsZSBBbGxvY2F0ZWQiIHNlY3Rpb25GaWxlPSJ1aS9TaW5nbGVBbGxvY2F0ZWQueHd0Ij4NCisgICAgICA8d2lkZ2V0IGhyZWY9InVpL1NpbmdsZUFsbG9jYXRlZC54d3QjLyIvPg0KKyAgICA8L3NlY3Rpb25zPg0KKyAgICA8c2VjdGlvbnMgeG1pOmlkPSJfMnhwTDRNMVhFZVNHVmJGTk00bThnUSIgbmFtZT0iTXVsdGlwbGUgQWxsb2NhdGVkIiBzZWN0aW9uRmlsZT0idWkvTXVsdGlwbGVBbGxvY2F0ZWQueHd0Ij4NCisgICAgICA8d2lkZ2V0IGhyZWY9InVpL011bHRpcGxlQWxsb2NhdGVkLnh3dCMvIi8+DQorICAgIDwvc2VjdGlvbnM+DQorICAgIDxzZWN0aW9ucyB4bWk6aWQ9Il8yeHB5OE0xWEVlU0dWYkZOTTRtOGdRIiBuYW1lPSJTaW5nbGUgUmVxdWlyZW1lbnRSZWxhdGVkIiBzZWN0aW9uRmlsZT0idWkvU2luZ2xlUmVxdWlyZW1lbnRSZWxhdGVkLnh3dCI+DQorICAgICAgPHdpZGdldCBocmVmPSJ1aS9TaW5nbGVSZXF1aXJlbWVudFJlbGF0ZWQueHd0Iy8iLz4NCisgICAgPC9zZWN0aW9ucz4NCisgICAgPHNlY3Rpb25zIHhtaTppZD0iXzJ4cWFBTTFYRWVTR1ZiRk5NNG04Z1EiIG5hbWU9Ik11bHRpcGxlIFJlcXVpcmVtZW50UmVsYXRlZCIgc2VjdGlvbkZpbGU9InVpL011bHRpcGxlUmVxdWlyZW1lbnRSZWxhdGVkLnh3dCI+DQorICAgICAgPHdpZGdldCBocmVmPSJ1aS9NdWx0aXBsZVJlcXVpcmVtZW50UmVsYXRlZC54d3QjLyIvPg0KKyAgICA8L3NlY3Rpb25zPg0KKyAgICA8c2VjdGlvbnMgeG1pOmlkPSJfMnhzMlFNMVhFZVNHVmJGTk00bThnUSIgbmFtZT0iU2luZ2xlIERlcHJlY2F0ZWQiIHNlY3Rpb25GaWxlPSJ1aS9TaW5nbGVEZXByZWNhdGVkLnh3dCI+DQorICAgICAgPHdpZGdldCBocmVmPSJ1aS9TaW5nbGVEZXByZWNhdGVkLnh3dCMvIi8+DQorICAgIDwvc2VjdGlvbnM+DQorICAgIDxzZWN0aW9ucyB4bWk6aWQ9Il8yeHMyUWMxWEVlU0dWYkZOTTRtOGdRIiBuYW1lPSJNdWx0aXBsZSBEZXByZWNhdGVkIiBzZWN0aW9uRmlsZT0idWkvTXVsdGlwbGVEZXByZWNhdGVkLnh3dCI+DQorICAgICAgPHdpZGdldCBocmVmPSJ1aS9NdWx0aXBsZURlcHJlY2F0ZWQueHd0Iy8iLz4NCisgICAgPC9zZWN0aW9ucz4NCisgICAgPHNlY3Rpb25zIHhtaTppZD0iXzJ4dGRVTTFYRWVTR1ZiRk5NNG04Z1EiIG5hbWU9IlNpbmdsZSBGbG93U3BlY2lmaWNhdGlvbiIgc2VjdGlvbkZpbGU9InVpL1NpbmdsZUZsb3dTcGVjaWZpY2F0aW9uLnh3dCI+DQorICAgICAgPHdpZGdldCBocmVmPSJ1aS9TaW5nbGVGbG93U3BlY2lmaWNhdGlvbi54d3QjLyIvPg0KKyAgICA8L3NlY3Rpb25zPg0KKyAgICA8c2VjdGlvbnMgeG1pOmlkPSJfMnh0ZFVjMVhFZVNHVmJGTk00bThnUSIgbmFtZT0iTXVsdGlwbGUgRmxvd1NwZWNpZmljYXRpb24iIHNlY3Rpb25GaWxlPSJ1aS9NdWx0aXBsZUZsb3dTcGVjaWZpY2F0aW9uLnh3dCI+DQorICAgICAgPHdpZGdldCBocmVmPSJ1aS9NdWx0aXBsZUZsb3dTcGVjaWZpY2F0aW9uLnh3dCMvIi8+DQorICAgIDwvc2VjdGlvbnM+DQorICAgIDxzZWN0aW9ucyB4bWk6aWQ9Il8yeHVFWU0xWEVlU0dWYkZOTTRtOGdRIiBuYW1lPSJTaW5nbGUgRmxvd1BvcnQiIHNlY3Rpb25GaWxlPSJ1aS9TaW5nbGVGbG93UG9ydC54d3QiPg0KKyAgICAgIDx3aWRnZXQgaHJlZj0idWkvU2luZ2xlRmxvd1BvcnQueHd0Iy8iLz4NCisgICAgPC9zZWN0aW9ucz4NCisgICAgPHNlY3Rpb25zIHhtaTppZD0iXzJ4dUVZYzFYRWVTR1ZiRk5NNG04Z1EiIG5hbWU9Ik11bHRpcGxlIEZsb3dQb3J0IiBzZWN0aW9uRmlsZT0idWkvTXVsdGlwbGVGbG93UG9ydC54d3QiPg0KKyAgICAgIDx3aWRnZXQgaHJlZj0idWkvTXVsdGlwbGVGbG93UG9ydC54d3QjLyIvPg0KKyAgICA8L3NlY3Rpb25zPg0KKyAgICA8c2VjdGlvbnMgeG1pOmlkPSJfMnh1cmNNMVhFZVNHVmJGTk00bThnUSIgbmFtZT0iU2luZ2xlIE5lc3RlZENvbm5lY3RvckVuZCIgc2VjdGlvbkZpbGU9InVpL1NpbmdsZU5lc3RlZENvbm5lY3RvckVuZC54d3QiPg0KKyAgICAgIDx3aWRnZXQgaHJlZj0idWkvU2luZ2xlTmVzdGVkQ29ubmVjdG9yRW5kLnh3dCMvIi8+DQorICAgIDwvc2VjdGlvbnM+DQorICAgIDxzZWN0aW9ucyB4bWk6aWQ9Il8yeHVyY2MxWEVlU0dWYkZOTTRtOGdRIiBuYW1lPSJNdWx0aXBsZSBOZXN0ZWRDb25uZWN0b3JFbmQiIHNlY3Rpb25GaWxlPSJ1aS9NdWx0aXBsZU5lc3RlZENvbm5lY3RvckVuZC54d3QiPg0KKyAgICAgIDx3aWRnZXQgaHJlZj0idWkvTXVsdGlwbGVOZXN0ZWRDb25uZWN0b3JFbmQueHd0Iy8iLz4NCisgICAgPC9zZWN0aW9ucz4NCisgICAgPHNlY3Rpb25zIHhtaTppZD0iXzJ4dXJjczFYRWVTR1ZiRk5NNG04Z1EiIG5hbWU9IlNpbmdsZSBCb3VuZFJlZmVyZW5jZSIgc2VjdGlvbkZpbGU9InVpL1NpbmdsZUJvdW5kUmVmZXJlbmNlLnh3dCI+DQorICAgICAgPHdpZGdldCBocmVmPSJ1aS9TaW5nbGVCb3VuZFJlZmVyZW5jZS54d3QjLyIvPg0KKyAgICA8L3NlY3Rpb25zPg0KKyAgICA8c2VjdGlvbnMgeG1pOmlkPSJfMnh2U2dNMVhFZVNHVmJGTk00bThnUSIgbmFtZT0iTXVsdGlwbGUgQm91bmRSZWZlcmVuY2UiIHNlY3Rpb25GaWxlPSJ1aS9NdWx0aXBsZUJvdW5kUmVmZXJlbmNlLnh3dCI+DQorICAgICAgPHdpZGdldCBocmVmPSJ1aS9NdWx0aXBsZUJvdW5kUmVmZXJlbmNlLnh3dCMvIi8+DQorICAgIDwvc2VjdGlvbnM+DQorICAgIDxzZWN0aW9ucyB4bWk6aWQ9Il8yeHZTZ2MxWEVlU0dWYkZOTTRtOGdRIiBuYW1lPSJTaW5nbGUgVmFsdWVUeXBlIiBzZWN0aW9uRmlsZT0idWkvU2luZ2xlVmFsdWVUeXBlLnh3dCI+DQorICAgICAgPHdpZGdldCBocmVmPSJ1aS9TaW5nbGVWYWx1ZVR5cGUueHd0Iy8iLz4NCisgICAgPC9zZWN0aW9ucz4NCisgICAgPHNlY3Rpb25zIHhtaTppZD0iXzJ4djVrTTFYRWVTR1ZiRk5NNG04Z1EiIG5hbWU9Ik11bHRpcGxlIFZhbHVlVHlwZSIgc2VjdGlvbkZpbGU9InVpL011bHRpcGxlVmFsdWVUeXBlLnh3dCI+DQorICAgICAgPHdpZGdldCBocmVmPSJ1aS9NdWx0aXBsZVZhbHVlVHlwZS54d3QjLyIvPg0KKyAgICA8L3NlY3Rpb25zPg0KKyAgICA8c2VjdGlvbnMgeG1pOmlkPSJfMnh2NWtjMVhFZVNHVmJGTk00bThnUSIgbmFtZT0iU2luZ2xlIFByb3BlcnR5U3BlY2lmaWNUeXBlIiBzZWN0aW9uRmlsZT0idWkvU2luZ2xlUHJvcGVydHlTcGVjaWZpY1R5cGUueHd0Ij4NCisgICAgICA8d2lkZ2V0IGhyZWY9InVpL1NpbmdsZVByb3BlcnR5U3BlY2lmaWNUeXBlLnh3dCMvIi8+DQorICAgIDwvc2VjdGlvbnM+DQorICAgIDxzZWN0aW9ucyB4bWk6aWQ9Il8yeHY1a3MxWEVlU0dWYkZOTTRtOGdRIiBuYW1lPSJNdWx0aXBsZSBQcm9wZXJ0eVNwZWNpZmljVHlwZSIgc2VjdGlvbkZpbGU9InVpL011bHRpcGxlUHJvcGVydHlTcGVjaWZpY1R5cGUueHd0Ij4NCisgICAgICA8d2lkZ2V0IGhyZWY9InVpL011bHRpcGxlUHJvcGVydHlTcGVjaWZpY1R5cGUueHd0Iy8iLz4NCisgICAgPC9zZWN0aW9ucz4NCisgICAgPHNlY3Rpb25zIHhtaTppZD0iXzJ4d2dvTTFYRWVTR1ZiRk5NNG04Z1EiIG5hbWU9IlNpbmdsZSBCbG9jayIgc2VjdGlvbkZpbGU9InVpL1NpbmdsZUJsb2NrLnh3dCI+DQorICAgICAgPHdpZGdldCBocmVmPSJ1aS9TaW5nbGVCbG9jay54d3QjLyIvPg0KKyAgICA8L3NlY3Rpb25zPg0KKyAgICA8c2VjdGlvbnMgeG1pOmlkPSJfMnh4SHNNMVhFZVNHVmJGTk00bThnUSIgbmFtZT0iTXVsdGlwbGUgQmxvY2siIHNlY3Rpb25GaWxlPSJ1aS9NdWx0aXBsZUJsb2NrLnh3dCI+DQorICAgICAgPHdpZGdldCBocmVmPSJ1aS9NdWx0aXBsZUJsb2NrLnh3dCMvIi8+DQorICAgIDwvc2VjdGlvbnM+DQorICAgIDxzZWN0aW9ucyB4bWk6aWQ9Il8yeHhIc2MxWEVlU0dWYkZOTTRtOGdRIiBuYW1lPSJTaW5nbGUgQmluZGluZ0Nvbm5lY3RvciIgc2VjdGlvbkZpbGU9InVpL1NpbmdsZUJpbmRpbmdDb25uZWN0b3IueHd0Ij4NCisgICAgICA8d2lkZ2V0IGhyZWY9InVpL1NpbmdsZUJpbmRpbmdDb25uZWN0b3IueHd0Iy8iLz4NCisgICAgPC9zZWN0aW9ucz4NCisgICAgPHNlY3Rpb25zIHhtaTppZD0iXzJ4eEhzczFYRWVTR1ZiRk5NNG04Z1EiIG5hbWU9Ik11bHRpcGxlIEJpbmRpbmdDb25uZWN0b3IiIHNlY3Rpb25GaWxlPSJ1aS9NdWx0aXBsZUJpbmRpbmdDb25uZWN0b3IueHd0Ij4NCisgICAgICA8d2lkZ2V0IGhyZWY9InVpL011bHRpcGxlQmluZGluZ0Nvbm5lY3Rvci54d3QjLyIvPg0KKyAgICA8L3NlY3Rpb25zPg0KKyAgICA8c2VjdGlvbnMgeG1pOmlkPSJfMnh4SHM4MVhFZVNHVmJGTk00bThnUSIgbmFtZT0iU2luZ2xlIERpc3RyaWJ1dGVkUHJvcGVydHkiIHNlY3Rpb25GaWxlPSJ1aS9TaW5nbGVEaXN0cmlidXRlZFByb3BlcnR5Lnh3dCI+DQorICAgICAgPHdpZGdldCBocmVmPSJ1aS9TaW5nbGVEaXN0cmlidXRlZFByb3BlcnR5Lnh3dCMvIi8+DQorICAgIDwvc2VjdGlvbnM+DQorICAgIDxzZWN0aW9ucyB4bWk6aWQ9Il8yeHh1d00xWEVlU0dWYkZOTTRtOGdRIiBuYW1lPSJNdWx0aXBsZSBEaXN0cmlidXRlZFByb3BlcnR5IiBzZWN0aW9uRmlsZT0idWkvTXVsdGlwbGVEaXN0cmlidXRlZFByb3BlcnR5Lnh3dCI+DQorICAgICAgPHdpZGdldCBocmVmPSJ1aS9NdWx0aXBsZURpc3RyaWJ1dGVkUHJvcGVydHkueHd0Iy8iLz4NCisgICAgPC9zZWN0aW9ucz4NCisgICAgPHNlY3Rpb25zIHhtaTppZD0iXzJ4eHV3YzFYRWVTR1ZiRk5NNG04Z1EiIG5hbWU9IlNpbmdsZSBFbGVtZW50UHJvcGVydHlQYXRoIiBzZWN0aW9uRmlsZT0idWkvU2luZ2xlRWxlbWVudFByb3BlcnR5UGF0aC54d3QiPg0KKyAgICAgIDx3aWRnZXQgaHJlZj0idWkvU2luZ2xlRWxlbWVudFByb3BlcnR5UGF0aC54d3QjLyIvPg0KKyAgICA8L3NlY3Rpb25zPg0KKyAgICA8c2VjdGlvbnMgeG1pOmlkPSJfMnh4dXdzMVhFZVNHVmJGTk00bThnUSIgbmFtZT0iTXVsdGlwbGUgRWxlbWVudFByb3BlcnR5UGF0aCIgc2VjdGlvbkZpbGU9InVpL011bHRpcGxlRWxlbWVudFByb3BlcnR5UGF0aC54d3QiPg0KKyAgICAgIDx3aWRnZXQgaHJlZj0idWkvTXVsdGlwbGVFbGVtZW50UHJvcGVydHlQYXRoLnh3dCMvIi8+DQorICAgIDwvc2VjdGlvbnM+DQorICAgIDxzZWN0aW9ucyB4bWk6aWQ9Il8yeHlWME0xWEVlU0dWYkZOTTRtOGdRIiBuYW1lPSJTaW5nbGUgRW5kUGF0aE11bHRpcGxpY2l0eSIgc2VjdGlvbkZpbGU9InVpL1NpbmdsZUVuZFBhdGhNdWx0aXBsaWNpdHkueHd0Ij4NCisgICAgICA8d2lkZ2V0IGhyZWY9InVpL1NpbmdsZUVuZFBhdGhNdWx0aXBsaWNpdHkueHd0Iy8iLz4NCisgICAgPC9zZWN0aW9ucz4NCisgICAgPHNlY3Rpb25zIHhtaTppZD0iXzJ4eTg0TTFYRWVTR1ZiRk5NNG04Z1EiIG5hbWU9Ik11bHRpcGxlIEVuZFBhdGhNdWx0aXBsaWNpdHkiIHNlY3Rpb25GaWxlPSJ1aS9NdWx0aXBsZUVuZFBhdGhNdWx0aXBsaWNpdHkueHd0Ij4NCisgICAgICA8d2lkZ2V0IGhyZWY9InVpL011bHRpcGxlRW5kUGF0aE11bHRpcGxpY2l0eS54d3QjLyIvPg0KKyAgICA8L3NlY3Rpb25zPg0KKyAgICA8c2VjdGlvbnMgeG1pOmlkPSJfMnh5ODRjMVhFZVNHVmJGTk00bThnUSIgbmFtZT0iU2luZ2xlIENvbm5lY3RvclByb3BlcnR5IiBzZWN0aW9uRmlsZT0idWkvU2luZ2xlQ29ubmVjdG9yUHJvcGVydHkueHd0Ij4NCisgICAgICA8d2lkZ2V0IGhyZWY9InVpL1NpbmdsZUNvbm5lY3RvclByb3BlcnR5Lnh3dCMvIi8+DQorICAgIDwvc2VjdGlvbnM+DQorICAgIDxzZWN0aW9ucyB4bWk6aWQ9Il8yeHpqOE0xWEVlU0dWYkZOTTRtOGdRIiBuYW1lPSJNdWx0aXBsZSBDb25uZWN0b3JQcm9wZXJ0eSIgc2VjdGlvbkZpbGU9InVpL011bHRpcGxlQ29ubmVjdG9yUHJvcGVydHkueHd0Ij4NCisgICAgICA8d2lkZ2V0IGhyZWY9InVpL011bHRpcGxlQ29ubmVjdG9yUHJvcGVydHkueHd0Iy8iLz4NCisgICAgPC9zZWN0aW9ucz4NCisgICAgPHNlY3Rpb25zIHhtaTppZD0iXzJ4emo4YzFYRWVTR1ZiRk5NNG04Z1EiIG5hbWU9IlNpbmdsZSBDbGFzc2lmaWVyQmVoYXZpb3JQcm9wZXJ0eSIgc2VjdGlvbkZpbGU9InVpL1NpbmdsZUNsYXNzaWZpZXJCZWhhdmlvclByb3BlcnR5Lnh3dCI+DQorICAgICAgPHdpZGdldCBocmVmPSJ1aS9TaW5nbGVDbGFzc2lmaWVyQmVoYXZpb3JQcm9wZXJ0eS54d3QjLyIvPg0KKyAgICA8L3NlY3Rpb25zPg0KKyAgICA8c2VjdGlvbnMgeG1pOmlkPSJfMnh6ajhzMVhFZVNHVmJGTk00bThnUSIgbmFtZT0iTXVsdGlwbGUgQ2xhc3NpZmllckJlaGF2aW9yUHJvcGVydHkiIHNlY3Rpb25GaWxlPSJ1aS9NdWx0aXBsZUNsYXNzaWZpZXJCZWhhdmlvclByb3BlcnR5Lnh3dCI+DQorICAgICAgPHdpZGdldCBocmVmPSJ1aS9NdWx0aXBsZUNsYXNzaWZpZXJCZWhhdmlvclByb3BlcnR5Lnh3dCMvIi8+DQorICAgIDwvc2VjdGlvbnM+DQorICAgIDxzZWN0aW9ucyB4bWk6aWQ9Il8yeDBMQU0xWEVlU0dWYkZOTTRtOGdRIiBuYW1lPSJTaW5nbGUgRGlyZWN0ZWRSZWxhdGlvbnNoaXBQcm9wZXJ0eVBhdGgiIHNlY3Rpb25GaWxlPSJ1aS9TaW5nbGVEaXJlY3RlZFJlbGF0aW9uc2hpcFByb3BlcnR5UGF0aC54d3QiPg0KKyAgICAgIDx3aWRnZXQgaHJlZj0idWkvU2luZ2xlRGlyZWN0ZWRSZWxhdGlvbnNoaXBQcm9wZXJ0eVBhdGgueHd0Iy8iLz4NCisgICAgPC9zZWN0aW9ucz4NCisgICAgPHNlY3Rpb25zIHhtaTppZD0iXzJ4MHlFTTFYRWVTR1ZiRk5NNG04Z1EiIG5hbWU9Ik11bHRpcGxlIERpcmVjdGVkUmVsYXRpb25zaGlwUHJvcGVydHlQYXRoIiBzZWN0aW9uRmlsZT0idWkvTXVsdGlwbGVEaXJlY3RlZFJlbGF0aW9uc2hpcFByb3BlcnR5UGF0aC54d3QiPg0KKyAgICAgIDx3aWRnZXQgaHJlZj0idWkvTXVsdGlwbGVEaXJlY3RlZFJlbGF0aW9uc2hpcFByb3BlcnR5UGF0aC54d3QjLyIvPg0KKyAgICA8L3NlY3Rpb25zPg0KKyAgICA8c2VjdGlvbnMgeG1pOmlkPSJfMngweUVjMVhFZVNHVmJGTk00bThnUSIgbmFtZT0iU2luZ2xlIEFkanVuY3RQcm9wZXJ0eSIgc2VjdGlvbkZpbGU9InVpL1NpbmdsZUFkanVuY3RQcm9wZXJ0eS54d3QiPg0KKyAgICAgIDx3aWRnZXQgaHJlZj0idWkvU2luZ2xlQWRqdW5jdFByb3BlcnR5Lnh3dCMvIi8+DQorICAgIDwvc2VjdGlvbnM+DQorICAgIDxzZWN0aW9ucyB4bWk6aWQ9Il8yeDFaSU0xWEVlU0dWYkZOTTRtOGdRIiBuYW1lPSJNdWx0aXBsZSBBZGp1bmN0UHJvcGVydHkiIHNlY3Rpb25GaWxlPSJ1aS9NdWx0aXBsZUFkanVuY3RQcm9wZXJ0eS54d3QiPg0KKyAgICAgIDx3aWRnZXQgaHJlZj0idWkvTXVsdGlwbGVBZGp1bmN0UHJvcGVydHkueHd0Iy8iLz4NCisgICAgPC9zZWN0aW9ucz4NCisgICAgPHNlY3Rpb25zIHhtaTppZD0iXzJ4MVpJYzFYRWVTR1ZiRk5NNG04Z1EiIG5hbWU9IlNpbmdsZSBQYXJ0aWNpcGFudFByb3BlcnR5IiBzZWN0aW9uRmlsZT0idWkvU2luZ2xlUGFydGljaXBhbnRQcm9wZXJ0eS54d3QiPg0KKyAgICAgIDx3aWRnZXQgaHJlZj0idWkvU2luZ2xlUGFydGljaXBhbnRQcm9wZXJ0eS54d3QjLyIvPg0KKyAgICA8L3NlY3Rpb25zPg0KKyAgICA8c2VjdGlvbnMgeG1pOmlkPSJfMngxWklzMVhFZVNHVmJGTk00bThnUSIgbmFtZT0iTXVsdGlwbGUgUGFydGljaXBhbnRQcm9wZXJ0eSIgc2VjdGlvbkZpbGU9InVpL011bHRpcGxlUGFydGljaXBhbnRQcm9wZXJ0eS54d3QiPg0KKyAgICAgIDx3aWRnZXQgaHJlZj0idWkvTXVsdGlwbGVQYXJ0aWNpcGFudFByb3BlcnR5Lnh3dCMvIi8+DQorICAgIDwvc2VjdGlvbnM+DQorICAgIDxzZWN0aW9ucyB4bWk6aWQ9Il8yeDJuUU0xWEVlU0dWYkZOTTRtOGdRIiBuYW1lPSJTaW5nbGUgUmVxdWlyZW1lbnQiIHNlY3Rpb25GaWxlPSJ1aS9TaW5nbGVSZXF1aXJlbWVudC54d3QiPg0KKyAgICAgIDx3aWRnZXQgaHJlZj0idWkvU2luZ2xlUmVxdWlyZW1lbnQueHd0Iy8iLz4NCisgICAgPC9zZWN0aW9ucz4NCisgICAgPHNlY3Rpb25zIHhtaTppZD0iXzJ4M09VTTFYRWVTR1ZiRk5NNG04Z1EiIG5hbWU9Ik11bHRpcGxlIFJlcXVpcmVtZW50IiBzZWN0aW9uRmlsZT0idWkvTXVsdGlwbGVSZXF1aXJlbWVudC54d3QiPg0KKyAgICAgIDx3aWRnZXQgaHJlZj0idWkvTXVsdGlwbGVSZXF1aXJlbWVudC54d3QjLyIvPg0KKyAgICA8L3NlY3Rpb25zPg0KKyAgICA8c2VjdGlvbnMgeG1pOmlkPSJfMngzT1VjMVhFZVNHVmJGTk00bThnUSIgbmFtZT0iU2luZ2xlIFRyYWNlIiBzZWN0aW9uRmlsZT0idWkvU2luZ2xlVHJhY2UueHd0Ij4NCisgICAgICA8d2lkZ2V0IGhyZWY9InVpL1NpbmdsZVRyYWNlLnh3dCMvIi8+DQorICAgIDwvc2VjdGlvbnM+DQorICAgIDxzZWN0aW9ucyB4bWk6aWQ9Il8yeDNPVXMxWEVlU0dWYkZOTTRtOGdRIiBuYW1lPSJNdWx0aXBsZSBUcmFjZSIgc2VjdGlvbkZpbGU9InVpL011bHRpcGxlVHJhY2UueHd0Ij4NCisgICAgICA8d2lkZ2V0IGhyZWY9InVpL011bHRpcGxlVHJhY2UueHd0Iy8iLz4NCisgICAgPC9zZWN0aW9ucz4NCisgICAgPHNlY3Rpb25zIHhtaTppZD0iXzJ4M09VODFYRWVTR1ZiRk5NNG04Z1EiIG5hbWU9IlNpbmdsZSBDb3B5IiBzZWN0aW9uRmlsZT0idWkvU2luZ2xlQ29weS54d3QiPg0KKyAgICAgIDx3aWRnZXQgaHJlZj0idWkvU2luZ2xlQ29weS54d3QjLyIvPg0KKyAgICA8L3NlY3Rpb25zPg0KKyAgICA8c2VjdGlvbnMgeG1pOmlkPSJfMngzMVlNMVhFZVNHVmJGTk00bThnUSIgbmFtZT0iTXVsdGlwbGUgQ29weSIgc2VjdGlvbkZpbGU9InVpL011bHRpcGxlQ29weS54d3QiPg0KKyAgICAgIDx3aWRnZXQgaHJlZj0idWkvTXVsdGlwbGVDb3B5Lnh3dCMvIi8+DQorICAgIDwvc2VjdGlvbnM+DQorICAgIDxzZWN0aW9ucyB4bWk6aWQ9Il8yeDMxWWMxWEVlU0dWYkZOTTRtOGdRIiBuYW1lPSJTaW5nbGUgVmVyaWZ5IiBzZWN0aW9uRmlsZT0idWkvU2luZ2xlVmVyaWZ5Lnh3dCI+DQorICAgICAgPHdpZGdldCBocmVmPSJ1aS9TaW5nbGVWZXJpZnkueHd0Iy8iLz4NCisgICAgPC9zZWN0aW9ucz4NCisgICAgPHNlY3Rpb25zIHhtaTppZD0iXzJ4MzFZczFYRWVTR1ZiRk5NNG04Z1EiIG5hbWU9Ik11bHRpcGxlIFZlcmlmeSIgc2VjdGlvbkZpbGU9InVpL011bHRpcGxlVmVyaWZ5Lnh3dCI+DQorICAgICAgPHdpZGdldCBocmVmPSJ1aS9NdWx0aXBsZVZlcmlmeS54d3QjLyIvPg0KKyAgICA8L3NlY3Rpb25zPg0KKyAgICA8c2VjdGlvbnMgeG1pOmlkPSJfMng0Y2NNMVhFZVNHVmJGTk00bThnUSIgbmFtZT0iU2luZ2xlIFRlc3RDYXNlIiBzZWN0aW9uRmlsZT0idWkvU2luZ2xlVGVzdENhc2UueHd0Ij4NCisgICAgICA8d2lkZ2V0IGhyZWY9InVpL1NpbmdsZVRlc3RDYXNlLnh3dCMvIi8+DQorICAgIDwvc2VjdGlvbnM+DQorICAgIDxzZWN0aW9ucyB4bWk6aWQ9Il8yeDRjY2MxWEVlU0dWYkZOTTRtOGdRIiBuYW1lPSJNdWx0aXBsZSBUZXN0Q2FzZSIgc2VjdGlvbkZpbGU9InVpL011bHRpcGxlVGVzdENhc2UueHd0Ij4NCisgICAgICA8d2lkZ2V0IGhyZWY9InVpL011bHRpcGxlVGVzdENhc2UueHd0Iy8iLz4NCisgICAgPC9zZWN0aW9ucz4NCisgICAgPHNlY3Rpb25zIHhtaTppZD0iXzJ4NGNjczFYRWVTR1ZiRk5NNG04Z1EiIG5hbWU9IlNpbmdsZSBSZWZpbmUiIHNlY3Rpb25GaWxlPSJ1aS9TaW5nbGVSZWZpbmUueHd0Ij4NCisgICAgICA8d2lkZ2V0IGhyZWY9InVpL1NpbmdsZVJlZmluZS54d3QjLyIvPg0KKyAgICA8L3NlY3Rpb25zPg0KKyAgICA8c2VjdGlvbnMgeG1pOmlkPSJfMng0Y2M4MVhFZVNHVmJGTk00bThnUSIgbmFtZT0iTXVsdGlwbGUgUmVmaW5lIiBzZWN0aW9uRmlsZT0idWkvTXVsdGlwbGVSZWZpbmUueHd0Ij4NCisgICAgICA8d2lkZ2V0IGhyZWY9InVpL011bHRpcGxlUmVmaW5lLnh3dCMvIi8+DQorICAgIDwvc2VjdGlvbnM+DQorICAgIDxzZWN0aW9ucyB4bWk6aWQ9Il8yeDVEZ00xWEVlU0dWYkZOTTRtOGdRIiBuYW1lPSJTaW5nbGUgU2F0aXNmeSIgc2VjdGlvbkZpbGU9InVpL1NpbmdsZVNhdGlzZnkueHd0Ij4NCisgICAgICA8d2lkZ2V0IGhyZWY9InVpL1NpbmdsZVNhdGlzZnkueHd0Iy8iLz4NCisgICAgPC9zZWN0aW9ucz4NCisgICAgPHNlY3Rpb25zIHhtaTppZD0iXzJ4NURnYzFYRWVTR1ZiRk5NNG04Z1EiIG5hbWU9Ik11bHRpcGxlIFNhdGlzZnkiIHNlY3Rpb25GaWxlPSJ1aS9NdWx0aXBsZVNhdGlzZnkueHd0Ij4NCisgICAgICA8d2lkZ2V0IGhyZWY9InVpL011bHRpcGxlU2F0aXNmeS54d3QjLyIvPg0KKyAgICA8L3NlY3Rpb25zPg0KKyAgICA8c2VjdGlvbnMgeG1pOmlkPSJfMng1RGdzMVhFZVNHVmJGTk00bThnUSIgbmFtZT0iU2luZ2xlIERlcml2ZVJlcXQiIHNlY3Rpb25GaWxlPSJ1aS9TaW5nbGVEZXJpdmVSZXF0Lnh3dCI+DQorICAgICAgPHdpZGdldCBocmVmPSJ1aS9TaW5nbGVEZXJpdmVSZXF0Lnh3dCMvIi8+DQorICAgIDwvc2VjdGlvbnM+DQorICAgIDxzZWN0aW9ucyB4bWk6aWQ9Il8yeDVEZzgxWEVlU0dWYkZOTTRtOGdRIiBuYW1lPSJNdWx0aXBsZSBEZXJpdmVSZXF0IiBzZWN0aW9uRmlsZT0idWkvTXVsdGlwbGVEZXJpdmVSZXF0Lnh3dCI+DQorICAgICAgPHdpZGdldCBocmVmPSJ1aS9NdWx0aXBsZURlcml2ZVJlcXQueHd0Iy8iLz4NCisgICAgPC9zZWN0aW9ucz4NCisgICAgPHNlY3Rpb25zIHhtaTppZD0iXzJ4NURoTTFYRWVTR1ZiRk5NNG04Z1EiIG5hbWU9IlNpbmdsZSBDb25zdHJhaW50QmxvY2siIHNlY3Rpb25GaWxlPSJ1aS9TaW5nbGVDb25zdHJhaW50QmxvY2sueHd0Ij4NCisgICAgICA8d2lkZ2V0IGhyZWY9InVpL1NpbmdsZUNvbnN0cmFpbnRCbG9jay54d3QjLyIvPg0KKyAgICA8L3NlY3Rpb25zPg0KKyAgICA8c2VjdGlvbnMgeG1pOmlkPSJfMng1cWtNMVhFZVNHVmJGTk00bThnUSIgbmFtZT0iTXVsdGlwbGUgQ29uc3RyYWludEJsb2NrIiBzZWN0aW9uRmlsZT0idWkvTXVsdGlwbGVDb25zdHJhaW50QmxvY2sueHd0Ij4NCisgICAgICA8d2lkZ2V0IGhyZWY9InVpL011bHRpcGxlQ29uc3RyYWludEJsb2NrLnh3dCMvIi8+DQorICAgIDwvc2VjdGlvbnM+DQorICAgIDxzZWN0aW9ucyB4bWk6aWQ9Il8yeDVxa2MxWEVlU0dWYkZOTTRtOGdRIiBuYW1lPSJTaW5nbGUgRGlyZWN0ZWRGZWF0dXJlIiBzZWN0aW9uRmlsZT0idWkvU2luZ2xlRGlyZWN0ZWRGZWF0dXJlLnh3dCI+DQorICAgICAgPHdpZGdldCBocmVmPSJ1aS9TaW5nbGVEaXJlY3RlZEZlYXR1cmUueHd0Iy8iLz4NCisgICAgPC9zZWN0aW9ucz4NCisgICAgPHNlY3Rpb25zIHhtaTppZD0iXzJ4NlJvTTFYRWVTR1ZiRk5NNG04Z1EiIG5hbWU9Ik11bHRpcGxlIERpcmVjdGVkRmVhdHVyZSIgc2VjdGlvbkZpbGU9InVpL011bHRpcGxlRGlyZWN0ZWRGZWF0dXJlLnh3dCI+DQorICAgICAgPHdpZGdldCBocmVmPSJ1aS9NdWx0aXBsZURpcmVjdGVkRmVhdHVyZS54d3QjLyIvPg0KKyAgICA8L3NlY3Rpb25zPg0KKyAgICA8c2VjdGlvbnMgeG1pOmlkPSJfMng2Um9jMVhFZVNHVmJGTk00bThnUSIgbmFtZT0iU2luZ2xlIEZsb3dQcm9wZXJ0eSIgc2VjdGlvbkZpbGU9InVpL1NpbmdsZUZsb3dQcm9wZXJ0eS54d3QiPg0KKyAgICAgIDx3aWRnZXQgaHJlZj0idWkvU2luZ2xlRmxvd1Byb3BlcnR5Lnh3dCMvIi8+DQorICAgIDwvc2VjdGlvbnM+DQorICAgIDxzZWN0aW9ucyB4bWk6aWQ9Il8yeDY0c00xWEVlU0dWYkZOTTRtOGdRIiBuYW1lPSJNdWx0aXBsZSBGbG93UHJvcGVydHkiIHNlY3Rpb25GaWxlPSJ1aS9NdWx0aXBsZUZsb3dQcm9wZXJ0eS54d3QiPg0KKyAgICAgIDx3aWRnZXQgaHJlZj0idWkvTXVsdGlwbGVGbG93UHJvcGVydHkueHd0Iy8iLz4NCisgICAgPC9zZWN0aW9ucz4NCisgICAgPHNlY3Rpb25zIHhtaTppZD0iXzJ4NjRzYzFYRWVTR1ZiRk5NNG04Z1EiIG5hbWU9IlNpbmdsZSBBY2NlcHRDaGFuZ2VTdHJ1Y3R1cmFsRmVhdHVyZUV2ZW50QWN0aW9uIiBzZWN0aW9uRmlsZT0idWkvU2luZ2xlQWNjZXB0Q2hhbmdlU3RydWN0dXJhbEZlYXR1cmVFdmVudEFjdGlvbi54d3QiPg0KKyAgICAgIDx3aWRnZXQgaHJlZj0idWkvU2luZ2xlQWNjZXB0Q2hhbmdlU3RydWN0dXJhbEZlYXR1cmVFdmVudEFjdGlvbi54d3QjLyIvPg0KKyAgICA8L3NlY3Rpb25zPg0KKyAgICA8c2VjdGlvbnMgeG1pOmlkPSJfMng2NHNzMVhFZVNHVmJGTk00bThnUSIgbmFtZT0iTXVsdGlwbGUgQWNjZXB0Q2hhbmdlU3RydWN0dXJhbEZlYXR1cmVFdmVudEFjdGlvbiIgc2VjdGlvbkZpbGU9InVpL011bHRpcGxlQWNjZXB0Q2hhbmdlU3RydWN0dXJhbEZlYXR1cmVFdmVudEFjdGlvbi54d3QiPg0KKyAgICAgIDx3aWRnZXQgaHJlZj0idWkvTXVsdGlwbGVBY2NlcHRDaGFuZ2VTdHJ1Y3R1cmFsRmVhdHVyZUV2ZW50QWN0aW9uLnh3dCMvIi8+DQorICAgIDwvc2VjdGlvbnM+DQorICAgIDxzZWN0aW9ucyB4bWk6aWQ9Il8yeDdmd00xWEVlU0dWYkZOTTRtOGdRIiBuYW1lPSJTaW5nbGUgVHJpZ2dlck9uTmVzdGVkUG9ydCIgc2VjdGlvbkZpbGU9InVpL1NpbmdsZVRyaWdnZXJPbk5lc3RlZFBvcnQueHd0Ij4NCisgICAgICA8d2lkZ2V0IGhyZWY9InVpL1NpbmdsZVRyaWdnZXJPbk5lc3RlZFBvcnQueHd0Iy8iLz4NCisgICAgPC9zZWN0aW9ucz4NCisgICAgPHNlY3Rpb25zIHhtaTppZD0iXzJ4N2Z3YzFYRWVTR1ZiRk5NNG04Z1EiIG5hbWU9Ik11bHRpcGxlIFRyaWdnZXJPbk5lc3RlZFBvcnQiIHNlY3Rpb25GaWxlPSJ1aS9NdWx0aXBsZVRyaWdnZXJPbk5lc3RlZFBvcnQueHd0Ij4NCisgICAgICA8d2lkZ2V0IGhyZWY9InVpL011bHRpcGxlVHJpZ2dlck9uTmVzdGVkUG9ydC54d3QjLyIvPg0KKyAgICA8L3NlY3Rpb25zPg0KKyAgICA8c2VjdGlvbnMgeG1pOmlkPSJfMng3ZndzMVhFZVNHVmJGTk00bThnUSIgbmFtZT0iU2luZ2xlIEZ1bGxQb3J0IiBzZWN0aW9uRmlsZT0idWkvU2luZ2xlRnVsbFBvcnQueHd0Ij4NCisgICAgICA8d2lkZ2V0IGhyZWY9InVpL1NpbmdsZUZ1bGxQb3J0Lnh3dCMvIi8+DQorICAgIDwvc2VjdGlvbnM+DQorICAgIDxzZWN0aW9ucyB4bWk6aWQ9Il8yeDhHME0xWEVlU0dWYkZOTTRtOGdRIiBuYW1lPSJNdWx0aXBsZSBGdWxsUG9ydCIgc2VjdGlvbkZpbGU9InVpL011bHRpcGxlRnVsbFBvcnQueHd0Ij4NCisgICAgICA8d2lkZ2V0IGhyZWY9InVpL011bHRpcGxlRnVsbFBvcnQueHd0Iy8iLz4NCisgICAgPC9zZWN0aW9ucz4NCisgICAgPHNlY3Rpb25zIHhtaTppZD0iXzJ4OHQ0TTFYRWVTR1ZiRk5NNG04Z1EiIG5hbWU9IlNpbmdsZSBJbnRlcmZhY2VCbG9jayIgc2VjdGlvbkZpbGU9InVpL1NpbmdsZUludGVyZmFjZUJsb2NrLnh3dCI+DQorICAgICAgPHdpZGdldCBocmVmPSJ1aS9TaW5nbGVJbnRlcmZhY2VCbG9jay54d3QjLyIvPg0KKyAgICA8L3NlY3Rpb25zPg0KKyAgICA8c2VjdGlvbnMgeG1pOmlkPSJfMng4dDRjMVhFZVNHVmJGTk00bThnUSIgbmFtZT0iTXVsdGlwbGUgSW50ZXJmYWNlQmxvY2siIHNlY3Rpb25GaWxlPSJ1aS9NdWx0aXBsZUludGVyZmFjZUJsb2NrLnh3dCI+DQorICAgICAgPHdpZGdldCBocmVmPSJ1aS9NdWx0aXBsZUludGVyZmFjZUJsb2NrLnh3dCMvIi8+DQorICAgIDwvc2VjdGlvbnM+DQorICAgIDxzZWN0aW9ucyB4bWk6aWQ9Il8yeDh0NHMxWEVlU0dWYkZOTTRtOGdRIiBuYW1lPSJTaW5nbGUgSW52b2NhdGlvbk9uTmVzdGVkUG9ydEFjdGlvbiIgc2VjdGlvbkZpbGU9InVpL1NpbmdsZUludm9jYXRpb25Pbk5lc3RlZFBvcnRBY3Rpb24ueHd0Ij4NCisgICAgICA8d2lkZ2V0IGhyZWY9InVpL1NpbmdsZUludm9jYXRpb25Pbk5lc3RlZFBvcnRBY3Rpb24ueHd0Iy8iLz4NCisgICAgPC9zZWN0aW9ucz4NCisgICAgPHNlY3Rpb25zIHhtaTppZD0iXzJ4OHQ0ODFYRWVTR1ZiRk5NNG04Z1EiIG5hbWU9Ik11bHRpcGxlIEludm9jYXRpb25Pbk5lc3RlZFBvcnRBY3Rpb24iIHNlY3Rpb25GaWxlPSJ1aS9NdWx0aXBsZUludm9jYXRpb25Pbk5lc3RlZFBvcnRBY3Rpb24ueHd0Ij4NCisgICAgICA8d2lkZ2V0IGhyZWY9InVpL011bHRpcGxlSW52b2NhdGlvbk9uTmVzdGVkUG9ydEFjdGlvbi54d3QjLyIvPg0KKyAgICA8L3NlY3Rpb25zPg0KKyAgICA8c2VjdGlvbnMgeG1pOmlkPSJfMng5VThNMVhFZVNHVmJGTk00bThnUSIgbmFtZT0iU2luZ2xlIFByb3h5UG9ydCIgc2VjdGlvbkZpbGU9InVpL1NpbmdsZVByb3h5UG9ydC54d3QiPg0KKyAgICAgIDx3aWRnZXQgaHJlZj0idWkvU2luZ2xlUHJveHlQb3J0Lnh3dCMvIi8+DQorICAgIDwvc2VjdGlvbnM+DQorICAgIDxzZWN0aW9ucyB4bWk6aWQ9Il8yeDlVOGMxWEVlU0dWYkZOTTRtOGdRIiBuYW1lPSJNdWx0aXBsZSBQcm94eVBvcnQiIHNlY3Rpb25GaWxlPSJ1aS9NdWx0aXBsZVByb3h5UG9ydC54d3QiPg0KKyAgICAgIDx3aWRnZXQgaHJlZj0idWkvTXVsdGlwbGVQcm94eVBvcnQueHd0Iy8iLz4NCisgICAgPC9zZWN0aW9ucz4NCisgICAgPHNlY3Rpb25zIHhtaTppZD0iXzJ4OVU4czFYRWVTR1ZiRk5NNG04Z1EiIG5hbWU9IlNpbmdsZSBDaGFuZ2VTdHJ1Y3R1cmFsRmVhdHVyZUV2ZW50IiBzZWN0aW9uRmlsZT0idWkvU2luZ2xlQ2hhbmdlU3RydWN0dXJhbEZlYXR1cmVFdmVudC54d3QiPg0KKyAgICAgIDx3aWRnZXQgaHJlZj0idWkvU2luZ2xlQ2hhbmdlU3RydWN0dXJhbEZlYXR1cmVFdmVudC54d3QjLyIvPg0KKyAgICA8L3NlY3Rpb25zPg0KKyAgICA8c2VjdGlvbnMgeG1pOmlkPSJfMng5VTg4MVhFZVNHVmJGTk00bThnUSIgbmFtZT0iTXVsdGlwbGUgQ2hhbmdlU3RydWN0dXJhbEZlYXR1cmVFdmVudCIgc2VjdGlvbkZpbGU9InVpL011bHRpcGxlQ2hhbmdlU3RydWN0dXJhbEZlYXR1cmVFdmVudC54d3QiPg0KKyAgICAgIDx3aWRnZXQgaHJlZj0idWkvTXVsdGlwbGVDaGFuZ2VTdHJ1Y3R1cmFsRmVhdHVyZUV2ZW50Lnh3dCMvIi8+DQorICAgIDwvc2VjdGlvbnM+DQorICAgIDxzZWN0aW9ucyB4bWk6aWQ9Il8yeDk4QU0xWEVlU0dWYkZOTTRtOGdRIiBuYW1lPSJTaW5nbGUgSXRlbUZsb3ciIHNlY3Rpb25GaWxlPSJ1aS9TaW5nbGVJdGVtRmxvdy54d3QiPg0KKyAgICAgIDx3aWRnZXQgaHJlZj0idWkvU2luZ2xlSXRlbUZsb3cueHd0Iy8iLz4NCisgICAgPC9zZWN0aW9ucz4NCisgICAgPHNlY3Rpb25zIHhtaTppZD0iXzJ4OThBYzFYRWVTR1ZiRk5NNG04Z1EiIG5hbWU9Ik11bHRpcGxlIEl0ZW1GbG93IiBzZWN0aW9uRmlsZT0idWkvTXVsdGlwbGVJdGVtRmxvdy54d3QiPg0KKyAgICAgIDx3aWRnZXQgaHJlZj0idWkvTXVsdGlwbGVJdGVtRmxvdy54d3QjLyIvPg0KKyAgICA8L3NlY3Rpb25zPg0KKyAgICA8c2VjdGlvbnMgeG1pOmlkPSJfMng5OEFzMVhFZVNHVmJGTk00bThnUSIgbmFtZT0iU2luZ2xlIE5vQnVmZmVyIiBzZWN0aW9uRmlsZT0idWkvU2luZ2xlTm9CdWZmZXIueHd0Ij4NCisgICAgICA8d2lkZ2V0IGhyZWY9InVpL1NpbmdsZU5vQnVmZmVyLnh3dCMvIi8+DQorICAgIDwvc2VjdGlvbnM+DQorICAgIDxzZWN0aW9ucyB4bWk6aWQ9Il8yeDk4QTgxWEVlU0dWYkZOTTRtOGdRIiBuYW1lPSJNdWx0aXBsZSBOb0J1ZmZlciIgc2VjdGlvbkZpbGU9InVpL011bHRpcGxlTm9CdWZmZXIueHd0Ij4NCisgICAgICA8d2lkZ2V0IGhyZWY9InVpL011bHRpcGxlTm9CdWZmZXIueHd0Iy8iLz4NCisgICAgPC9zZWN0aW9ucz4NCisgICAgPHNlY3Rpb25zIHhtaTppZD0iXzJ4OThCTTFYRWVTR1ZiRk5NNG04Z1EiIG5hbWU9IlNpbmdsZSBDb250cm9sT3BlcmF0b3IiIHNlY3Rpb25GaWxlPSJ1aS9TaW5nbGVDb250cm9sT3BlcmF0b3IueHd0Ij4NCisgICAgICA8d2lkZ2V0IGhyZWY9InVpL1NpbmdsZUNvbnRyb2xPcGVyYXRvci54d3QjLyIvPg0KKyAgICA8L3NlY3Rpb25zPg0KKyAgICA8c2VjdGlvbnMgeG1pOmlkPSJfMngtakVNMVhFZVNHVmJGTk00bThnUSIgbmFtZT0iTXVsdGlwbGUgQ29udHJvbE9wZXJhdG9yIiBzZWN0aW9uRmlsZT0idWkvTXVsdGlwbGVDb250cm9sT3BlcmF0b3IueHd0Ij4NCisgICAgICA8d2lkZ2V0IGhyZWY9InVpL011bHRpcGxlQ29udHJvbE9wZXJhdG9yLnh3dCMvIi8+DQorICAgIDwvc2VjdGlvbnM+DQorICAgIDxzZWN0aW9ucyB4bWk6aWQ9Il8yeC1qRWMxWEVlU0dWYkZOTTRtOGdRIiBuYW1lPSJTaW5nbGUgQ29udGludW91cyIgc2VjdGlvbkZpbGU9InVpL1NpbmdsZUNvbnRpbnVvdXMueHd0Ij4NCisgICAgICA8d2lkZ2V0IGhyZWY9InVpL1NpbmdsZUNvbnRpbnVvdXMueHd0Iy8iLz4NCisgICAgPC9zZWN0aW9ucz4NCisgICAgPHNlY3Rpb25zIHhtaTppZD0iXzJ4LWpFczFYRWVTR1ZiRk5NNG04Z1EiIG5hbWU9Ik11bHRpcGxlIENvbnRpbnVvdXMiIHNlY3Rpb25GaWxlPSJ1aS9NdWx0aXBsZUNvbnRpbnVvdXMueHd0Ij4NCisgICAgICA8d2lkZ2V0IGhyZWY9InVpL011bHRpcGxlQ29udGludW91cy54d3QjLyIvPg0KKyAgICA8L3NlY3Rpb25zPg0KKyAgICA8c2VjdGlvbnMgeG1pOmlkPSJfMngtakU4MVhFZVNHVmJGTk00bThnUSIgbmFtZT0iU2luZ2xlIE92ZXJ3cml0ZSIgc2VjdGlvbkZpbGU9InVpL1NpbmdsZU92ZXJ3cml0ZS54d3QiPg0KKyAgICAgIDx3aWRnZXQgaHJlZj0idWkvU2luZ2xlT3ZlcndyaXRlLnh3dCMvIi8+DQorICAgIDwvc2VjdGlvbnM+DQorICAgIDxzZWN0aW9ucyB4bWk6aWQ9Il8yeC1qRk0xWEVlU0dWYkZOTTRtOGdRIiBuYW1lPSJNdWx0aXBsZSBPdmVyd3JpdGUiIHNlY3Rpb25GaWxlPSJ1aS9NdWx0aXBsZU92ZXJ3cml0ZS54d3QiPg0KKyAgICAgIDx3aWRnZXQgaHJlZj0idWkvTXVsdGlwbGVPdmVyd3JpdGUueHd0Iy8iLz4NCisgICAgPC9zZWN0aW9ucz4NCisgICAgPHNlY3Rpb25zIHhtaTppZD0iXzJ4LWpGYzFYRWVTR1ZiRk5NNG04Z1EiIG5hbWU9IlNpbmdsZSBEaXNjcmV0ZSIgc2VjdGlvbkZpbGU9InVpL1NpbmdsZURpc2NyZXRlLnh3dCI+DQorICAgICAgPHdpZGdldCBocmVmPSJ1aS9TaW5nbGVEaXNjcmV0ZS54d3QjLyIvPg0KKyAgICA8L3NlY3Rpb25zPg0KKyAgICA8c2VjdGlvbnMgeG1pOmlkPSJfMnhfS0lNMVhFZVNHVmJGTk00bThnUSIgbmFtZT0iTXVsdGlwbGUgRGlzY3JldGUiIHNlY3Rpb25GaWxlPSJ1aS9NdWx0aXBsZURpc2NyZXRlLnh3dCI+DQorICAgICAgPHdpZGdldCBocmVmPSJ1aS9NdWx0aXBsZURpc2NyZXRlLnh3dCMvIi8+DQorICAgIDwvc2VjdGlvbnM+DQorICAgIDxzZWN0aW9ucyB4bWk6aWQ9Il8yeF94TU0xWEVlU0dWYkZOTTRtOGdRIiBuYW1lPSJTaW5nbGUgT3B0aW9uYWwiIHNlY3Rpb25GaWxlPSJ1aS9TaW5nbGVPcHRpb25hbC54d3QiPg0KKyAgICAgIDx3aWRnZXQgaHJlZj0idWkvU2luZ2xlT3B0aW9uYWwueHd0Iy8iLz4NCisgICAgPC9zZWN0aW9ucz4NCisgICAgPHNlY3Rpb25zIHhtaTppZD0iXzJ4X3hNYzFYRWVTR1ZiRk5NNG04Z1EiIG5hbWU9Ik11bHRpcGxlIE9wdGlvbmFsIiBzZWN0aW9uRmlsZT0idWkvTXVsdGlwbGVPcHRpb25hbC54d3QiPg0KKyAgICAgIDx3aWRnZXQgaHJlZj0idWkvTXVsdGlwbGVPcHRpb25hbC54d3QjLyIvPg0KKyAgICA8L3NlY3Rpb25zPg0KKyAgICA8c2VjdGlvbnMgeG1pOmlkPSJfMnlBWVFNMVhFZVNHVmJGTk00bThnUSIgbmFtZT0iU2luZ2xlIFJhdGUiIHNlY3Rpb25GaWxlPSJ1aS9TaW5nbGVSYXRlLnh3dCI+DQorICAgICAgPHdpZGdldCBocmVmPSJ1aS9TaW5nbGVSYXRlLnh3dCMvIi8+DQorICAgIDwvc2VjdGlvbnM+DQorICAgIDxzZWN0aW9ucyB4bWk6aWQ9Il8yeUFZUWMxWEVlU0dWYkZOTTRtOGdRIiBuYW1lPSJNdWx0aXBsZSBSYXRlIiBzZWN0aW9uRmlsZT0idWkvTXVsdGlwbGVSYXRlLnh3dCI+DQorICAgICAgPHdpZGdldCBocmVmPSJ1aS9NdWx0aXBsZVJhdGUueHd0Iy8iLz4NCisgICAgPC9zZWN0aW9ucz4NCisgICAgPHNlY3Rpb25zIHhtaTppZD0iXzJ5QVlRczFYRWVTR1ZiRk5NNG04Z1EiIG5hbWU9IlNpbmdsZSBQcm9iYWJpbGl0eSIgc2VjdGlvbkZpbGU9InVpL1NpbmdsZVByb2JhYmlsaXR5Lnh3dCI+DQorICAgICAgPHdpZGdldCBocmVmPSJ1aS9TaW5nbGVQcm9iYWJpbGl0eS54d3QjLyIvPg0KKyAgICA8L3NlY3Rpb25zPg0KKyAgICA8c2VjdGlvbnMgeG1pOmlkPSJfMnlBWVE4MVhFZVNHVmJGTk00bThnUSIgbmFtZT0iTXVsdGlwbGUgUHJvYmFiaWxpdHkiIHNlY3Rpb25GaWxlPSJ1aS9NdWx0aXBsZVByb2JhYmlsaXR5Lnh3dCI+DQorICAgICAgPHdpZGdldCBocmVmPSJ1aS9NdWx0aXBsZVByb2JhYmlsaXR5Lnh3dCMvIi8+DQorICAgIDwvc2VjdGlvbnM+DQorICAgIDxzZWN0aW9ucyB4bWk6aWQ9Il8yeUFZUk0xWEVlU0dWYkZOTTRtOGdRIiBuYW1lPSJTaW5nbGUgQWxsb2NhdGVBY3Rpdml0eVBhcnRpdGlvbiIgc2VjdGlvbkZpbGU9InVpL1NpbmdsZUFsbG9jYXRlQWN0aXZpdHlQYXJ0aXRpb24ueHd0Ij4NCisgICAgICA8d2lkZ2V0IGhyZWY9InVpL1NpbmdsZUFsbG9jYXRlQWN0aXZpdHlQYXJ0aXRpb24ueHd0Iy8iLz4NCisgICAgPC9zZWN0aW9ucz4NCisgICAgPHNlY3Rpb25zIHhtaTppZD0iXzJ5QV9VTTFYRWVTR1ZiRk5NNG04Z1EiIG5hbWU9Ik11bHRpcGxlIEFsbG9jYXRlQWN0aXZpdHlQYXJ0aXRpb24iIHNlY3Rpb25GaWxlPSJ1aS9NdWx0aXBsZUFsbG9jYXRlQWN0aXZpdHlQYXJ0aXRpb24ueHd0Ij4NCisgICAgICA8d2lkZ2V0IGhyZWY9InVpL011bHRpcGxlQWxsb2NhdGVBY3Rpdml0eVBhcnRpdGlvbi54d3QjLyIvPg0KKyAgICA8L3NlY3Rpb25zPg0KKyAgICA8c2VjdGlvbnMgeG1pOmlkPSJfMnlBX1VjMVhFZVNHVmJGTk00bThnUSIgbmFtZT0iU2luZ2xlIEFsbG9jYXRlIiBzZWN0aW9uRmlsZT0idWkvU2luZ2xlQWxsb2NhdGUueHd0Ij4NCisgICAgICA8d2lkZ2V0IGhyZWY9InVpL1NpbmdsZUFsbG9jYXRlLnh3dCMvIi8+DQorICAgIDwvc2VjdGlvbnM+DQorICAgIDxzZWN0aW9ucyB4bWk6aWQ9Il8yeUFfVXMxWEVlU0dWYkZOTTRtOGdRIiBuYW1lPSJNdWx0aXBsZSBBbGxvY2F0ZSIgc2VjdGlvbkZpbGU9InVpL011bHRpcGxlQWxsb2NhdGUueHd0Ij4NCisgICAgICA8d2lkZ2V0IGhyZWY9InVpL011bHRpcGxlQWxsb2NhdGUueHd0Iy8iLz4NCisgICAgPC9zZWN0aW9ucz4NCisgICAgPHNlY3Rpb25zIHhtaTppZD0iXzJ5QV9VODFYRWVTR1ZiRk5NNG04Z1EiIG5hbWU9IlNpbmdsZSBQcm9ibGVtIiBzZWN0aW9uRmlsZT0idWkvU2luZ2xlUHJvYmxlbS54d3QiPg0KKyAgICAgIDx3aWRnZXQgaHJlZj0idWkvU2luZ2xlUHJvYmxlbS54d3QjLyIvPg0KKyAgICA8L3NlY3Rpb25zPg0KKyAgICA8c2VjdGlvbnMgeG1pOmlkPSJfMnlBX1ZNMVhFZVNHVmJGTk00bThnUSIgbmFtZT0iTXVsdGlwbGUgUHJvYmxlbSIgc2VjdGlvbkZpbGU9InVpL011bHRpcGxlUHJvYmxlbS54d3QiPg0KKyAgICAgIDx3aWRnZXQgaHJlZj0idWkvTXVsdGlwbGVQcm9ibGVtLnh3dCMvIi8+DQorICAgIDwvc2VjdGlvbnM+DQorICAgIDxzZWN0aW9ucyB4bWk6aWQ9Il8yeUFfVmMxWEVlU0dWYkZOTTRtOGdRIiBuYW1lPSJTaW5nbGUgQ29uZm9ybSIgc2VjdGlvbkZpbGU9InVpL1NpbmdsZUNvbmZvcm0ueHd0Ij4NCisgICAgICA8d2lkZ2V0IGhyZWY9InVpL1NpbmdsZUNvbmZvcm0ueHd0Iy8iLz4NCisgICAgPC9zZWN0aW9ucz4NCisgICAgPHNlY3Rpb25zIHhtaTppZD0iXzJ5QV9WczFYRWVTR1ZiRk5NNG04Z1EiIG5hbWU9Ik11bHRpcGxlIENvbmZvcm0iIHNlY3Rpb25GaWxlPSJ1aS9NdWx0aXBsZUNvbmZvcm0ueHd0Ij4NCisgICAgICA8d2lkZ2V0IGhyZWY9InVpL011bHRpcGxlQ29uZm9ybS54d3QjLyIvPg0KKyAgICA8L3NlY3Rpb25zPg0KKyAgICA8c2VjdGlvbnMgeG1pOmlkPSJfMnlCbVlNMVhFZVNHVmJGTk00bThnUSIgbmFtZT0iU2luZ2xlIFZpZXdQb2ludCIgc2VjdGlvbkZpbGU9InVpL1NpbmdsZVZpZXdQb2ludC54d3QiPg0KKyAgICAgIDx3aWRnZXQgaHJlZj0idWkvU2luZ2xlVmlld1BvaW50Lnh3dCMvIi8+DQorICAgIDwvc2VjdGlvbnM+DQorICAgIDxzZWN0aW9ucyB4bWk6aWQ9Il8yeUJtWWMxWEVlU0dWYkZOTTRtOGdRIiBuYW1lPSJNdWx0aXBsZSBWaWV3UG9pbnQiIHNlY3Rpb25GaWxlPSJ1aS9NdWx0aXBsZVZpZXdQb2ludC54d3QiPg0KKyAgICAgIDx3aWRnZXQgaHJlZj0idWkvTXVsdGlwbGVWaWV3UG9pbnQueHd0Iy8iLz4NCisgICAgPC9zZWN0aW9ucz4NCisgICAgPHNlY3Rpb25zIHhtaTppZD0iXzJ5Q05jTTFYRWVTR1ZiRk5NNG04Z1EiIG5hbWU9IlNpbmdsZSBWaWV3IiBzZWN0aW9uRmlsZT0idWkvU2luZ2xlVmlldy54d3QiPg0KKyAgICAgIDx3aWRnZXQgaHJlZj0idWkvU2luZ2xlVmlldy54d3QjLyIvPg0KKyAgICA8L3NlY3Rpb25zPg0KKyAgICA8c2VjdGlvbnMgeG1pOmlkPSJfMnlDTmNjMVhFZVNHVmJGTk00bThnUSIgbmFtZT0iTXVsdGlwbGUgVmlldyIgc2VjdGlvbkZpbGU9InVpL011bHRpcGxlVmlldy54d3QiPg0KKyAgICAgIDx3aWRnZXQgaHJlZj0idWkvTXVsdGlwbGVWaWV3Lnh3dCMvIi8+DQorICAgIDwvc2VjdGlvbnM+DQorICAgIDxzZWN0aW9ucyB4bWk6aWQ9Il8yeUNOY3MxWEVlU0dWYkZOTTRtOGdRIiBuYW1lPSJTaW5nbGUgRWxlbWVudEdyb3VwIiBzZWN0aW9uRmlsZT0idWkvU2luZ2xlRWxlbWVudEdyb3VwLnh3dCI+DQorICAgICAgPHdpZGdldCBocmVmPSJ1aS9TaW5nbGVFbGVtZW50R3JvdXAueHd0Iy8iLz4NCisgICAgPC9zZWN0aW9ucz4NCisgICAgPHNlY3Rpb25zIHhtaTppZD0iXzJ5QzBnTTFYRWVTR1ZiRk5NNG04Z1EiIG5hbWU9Ik11bHRpcGxlIEVsZW1lbnRHcm91cCIgc2VjdGlvbkZpbGU9InVpL011bHRpcGxlRWxlbWVudEdyb3VwLnh3dCI+DQorICAgICAgPHdpZGdldCBocmVmPSJ1aS9NdWx0aXBsZUVsZW1lbnRHcm91cC54d3QjLyIvPg0KKyAgICA8L3NlY3Rpb25zPg0KKyAgICA8c2VjdGlvbnMgeG1pOmlkPSJfMnlDMGdjMVhFZVNHVmJGTk00bThnUSIgbmFtZT0iU2luZ2xlIEV4cG9zZSIgc2VjdGlvbkZpbGU9InVpL1NpbmdsZUV4cG9zZS54d3QiPg0KKyAgICAgIDx3aWRnZXQgaHJlZj0idWkvU2luZ2xlRXhwb3NlLnh3dCMvIi8+DQorICAgIDwvc2VjdGlvbnM+DQorICAgIDxzZWN0aW9ucyB4bWk6aWQ9Il8yeUMwZ3MxWEVlU0dWYkZOTTRtOGdRIiBuYW1lPSJNdWx0aXBsZSBFeHBvc2UiIHNlY3Rpb25GaWxlPSJ1aS9NdWx0aXBsZUV4cG9zZS54d3QiPg0KKyAgICAgIDx3aWRnZXQgaHJlZj0idWkvTXVsdGlwbGVFeHBvc2UueHd0Iy8iLz4NCisgICAgPC9zZWN0aW9ucz4NCisgICAgPHNlY3Rpb25zIHhtaTppZD0iXzJ5QzBnODFYRWVTR1ZiRk5NNG04Z1EiIG5hbWU9IlNpbmdsZSBTdGFrZWhvbGRlciIgc2VjdGlvbkZpbGU9InVpL1NpbmdsZVN0YWtlaG9sZGVyLnh3dCI+DQorICAgICAgPHdpZGdldCBocmVmPSJ1aS9TaW5nbGVTdGFrZWhvbGRlci54d3QjLyIvPg0KKyAgICA8L3NlY3Rpb25zPg0KKyAgICA8c2VjdGlvbnMgeG1pOmlkPSJfMnlDMGhNMVhFZVNHVmJGTk00bThnUSIgbmFtZT0iTXVsdGlwbGUgU3Rha2Vob2xkZXIiIHNlY3Rpb25GaWxlPSJ1aS9NdWx0aXBsZVN0YWtlaG9sZGVyLnh3dCI+DQorICAgICAgPHdpZGdldCBocmVmPSJ1aS9NdWx0aXBsZVN0YWtlaG9sZGVyLnh3dCMvIi8+DQorICAgIDwvc2VjdGlvbnM+DQorICAgIDxzZWN0aW9ucyB4bWk6aWQ9Il8yeURia00xWEVlU0dWYkZOTTRtOGdRIiBuYW1lPSJTaW5nbGUgUmF0aW9uYWxlIiBzZWN0aW9uRmlsZT0idWkvU2luZ2xlUmF0aW9uYWxlLnh3dCI+DQorICAgICAgPHdpZGdldCBocmVmPSJ1aS9TaW5nbGVSYXRpb25hbGUueHd0Iy8iLz4NCisgICAgPC9zZWN0aW9ucz4NCisgICAgPHNlY3Rpb25zIHhtaTppZD0iXzJ5RGJrYzFYRWVTR1ZiRk5NNG04Z1EiIG5hbWU9Ik11bHRpcGxlIFJhdGlvbmFsZSIgc2VjdGlvbkZpbGU9InVpL011bHRpcGxlUmF0aW9uYWxlLnh3dCI+DQorICAgICAgPHdpZGdldCBocmVmPSJ1aS9NdWx0aXBsZVJhdGlvbmFsZS54d3QjLyIvPg0KKyAgICA8L3NlY3Rpb25zPg0KKyAgPC90YWJzPg0KKyAgPHZpZXdzIHhtaTppZD0iX3otT0NBTTFYRWVTR1ZiRk5NNG04Z1EiIG5hbWU9IlNpbmdsZSBBbGxvY2F0ZWQiIHNlY3Rpb25zPSJfMnhvazBNMVhFZVNHVmJGTk00bThnUSIgYXV0b21hdGljQ29udGV4dD0idHJ1ZSIgZGF0YWNvbnRleHRzPSJfei1PRFlNMVhFZVNHVmJGTk00bThnUSI+DQorICAgIDxjb25zdHJhaW50cyB4c2k6dHlwZT0iY29uc3RyYWludHM6U2ltcGxlQ29uc3RyYWludCIgeG1pOmlkPSJfei1PQ0FjMVhFZVNHVmJGTk00bThnUSIgbmFtZT0iaXNTaW5nbGVBbGxvY2F0ZWQiPg0KKyAgICAgIDxjb25zdHJhaW50VHlwZSBocmVmPSJwcGU6L2Vudmlyb25tZW50L29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC51aS9yZXNvdXJjZXMvU3lzTUwxLjRDb25zdHJhaW50RW52aXJvbm1lbnQueG1pIy8vQGNvbnN0cmFpbnRUeXBlcy4wIi8+DQorICAgICAgPHByb3BlcnRpZXMgeHNpOnR5cGU9ImNvbnN0cmFpbnRzOlZhbHVlUHJvcGVydHkiIHhtaTppZD0iX3otT0NBczFYRWVTR1ZiRk5NNG04Z1EiIG5hbWU9InN0ZXJlb3R5cGVOYW1lIiB2YWx1ZT0iU3lzTUw6OkRlcHJlY2F0ZWRFbGVtZW50czo6QWxsb2NhdGVkIi8+DQorICAgIDwvY29uc3RyYWludHM+DQorICA8L3ZpZXdzPg0KKyAgPHZpZXdzIHhtaTppZD0iX3otT0NBODFYRWVTR1ZiRk5NNG04Z1EiIGVsZW1lbnRNdWx0aXBsaWNpdHk9Ii0xIiBuYW1lPSJNdWx0aXBsZSBBbGxvY2F0ZWQiIHNlY3Rpb25zPSJfMnhwTDRNMVhFZVNHVmJGTk00bThnUSIgYXV0b21hdGljQ29udGV4dD0idHJ1ZSIgZGF0YWNvbnRleHRzPSJfei1PRFlNMVhFZVNHVmJGTk00bThnUSI+DQorICAgIDxjb25zdHJhaW50cyB4c2k6dHlwZT0iY29uc3RyYWludHM6U2ltcGxlQ29uc3RyYWludCIgeG1pOmlkPSJfei1PQ0JNMVhFZVNHVmJGTk00bThnUSIgbmFtZT0iaXNNdWx0aXBsZUFsbG9jYXRlZCI+DQorICAgICAgPGNvbnN0cmFpbnRUeXBlIGhyZWY9InBwZTovZW52aXJvbm1lbnQvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnVpL3Jlc291cmNlcy9TeXNNTDEuNENvbnN0cmFpbnRFbnZpcm9ubWVudC54bWkjLy9AY29uc3RyYWludFR5cGVzLjAiLz4NCisgICAgICA8cHJvcGVydGllcyB4c2k6dHlwZT0iY29uc3RyYWludHM6VmFsdWVQcm9wZXJ0eSIgeG1pOmlkPSJfei1PQ0JjMVhFZVNHVmJGTk00bThnUSIgbmFtZT0ic3RlcmVvdHlwZU5hbWUiIHZhbHVlPSJTeXNNTDo6RGVwcmVjYXRlZEVsZW1lbnRzOjpBbGxvY2F0ZWQiLz4NCisgICAgPC9jb25zdHJhaW50cz4NCisgIDwvdmlld3M+DQorICA8dmlld3MgeG1pOmlkPSJfei1PQ0JzMVhFZVNHVmJGTk00bThnUSIgbmFtZT0iU2luZ2xlIFJlcXVpcmVtZW50UmVsYXRlZCIgc2VjdGlvbnM9Il8yeHB5OE0xWEVlU0dWYkZOTTRtOGdRIiBhdXRvbWF0aWNDb250ZXh0PSJ0cnVlIiBkYXRhY29udGV4dHM9Il96LU9EWTgxWEVlU0dWYkZOTTRtOGdRIj4NCisgICAgPGNvbnN0cmFpbnRzIHhzaTp0eXBlPSJjb25zdHJhaW50czpTaW1wbGVDb25zdHJhaW50IiB4bWk6aWQ9Il96LU9DQjgxWEVlU0dWYkZOTTRtOGdRIiBuYW1lPSJpc1NpbmdsZVJlcXVpcmVtZW50UmVsYXRlZCI+DQorICAgICAgPGNvbnN0cmFpbnRUeXBlIGhyZWY9InBwZTovZW52aXJvbm1lbnQvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnVpL3Jlc291cmNlcy9TeXNNTDEuNENvbnN0cmFpbnRFbnZpcm9ubWVudC54bWkjLy9AY29uc3RyYWludFR5cGVzLjAiLz4NCisgICAgICA8cHJvcGVydGllcyB4c2k6dHlwZT0iY29uc3RyYWludHM6VmFsdWVQcm9wZXJ0eSIgeG1pOmlkPSJfei1PQ0NNMVhFZVNHVmJGTk00bThnUSIgbmFtZT0ic3RlcmVvdHlwZU5hbWUiIHZhbHVlPSJTeXNNTDo6RGVwcmVjYXRlZEVsZW1lbnRzOjpSZXF1aXJlbWVudFJlbGF0ZWQiLz4NCisgICAgPC9jb25zdHJhaW50cz4NCisgIDwvdmlld3M+DQorICA8dmlld3MgeG1pOmlkPSJfei1PQ0NjMVhFZVNHVmJGTk00bThnUSIgZWxlbWVudE11bHRpcGxpY2l0eT0iLTEiIG5hbWU9Ik11bHRpcGxlIFJlcXVpcmVtZW50UmVsYXRlZCIgc2VjdGlvbnM9Il8yeHFhQU0xWEVlU0dWYkZOTTRtOGdRIiBhdXRvbWF0aWNDb250ZXh0PSJ0cnVlIiBkYXRhY29udGV4dHM9Il96LU9EWTgxWEVlU0dWYkZOTTRtOGdRIj4NCisgICAgPGNvbnN0cmFpbnRzIHhzaTp0eXBlPSJjb25zdHJhaW50czpTaW1wbGVDb25zdHJhaW50IiB4bWk6aWQ9Il96LU9DQ3MxWEVlU0dWYkZOTTRtOGdRIiBuYW1lPSJpc011bHRpcGxlUmVxdWlyZW1lbnRSZWxhdGVkIj4NCisgICAgICA8Y29uc3RyYWludFR5cGUgaHJlZj0icHBlOi9lbnZpcm9ubWVudC9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQudWkvcmVzb3VyY2VzL1N5c01MMS40Q29uc3RyYWludEVudmlyb25tZW50LnhtaSMvL0Bjb25zdHJhaW50VHlwZXMuMCIvPg0KKyAgICAgIDxwcm9wZXJ0aWVzIHhzaTp0eXBlPSJjb25zdHJhaW50czpWYWx1ZVByb3BlcnR5IiB4bWk6aWQ9Il96LU9DQzgxWEVlU0dWYkZOTTRtOGdRIiBuYW1lPSJzdGVyZW90eXBlTmFtZSIgdmFsdWU9IlN5c01MOjpEZXByZWNhdGVkRWxlbWVudHM6OlJlcXVpcmVtZW50UmVsYXRlZCIvPg0KKyAgICA8L2NvbnN0cmFpbnRzPg0KKyAgPC92aWV3cz4NCisgIDx2aWV3cyB4bWk6aWQ9Il96LU9DRE0xWEVlU0dWYkZOTTRtOGdRIiBuYW1lPSJTaW5nbGUgRGVwcmVjYXRlZCIgc2VjdGlvbnM9Il8yeHMyUU0xWEVlU0dWYkZOTTRtOGdRIiBhdXRvbWF0aWNDb250ZXh0PSJ0cnVlIiBkYXRhY29udGV4dHM9Il96LU9EYWMxWEVlU0dWYkZOTTRtOGdRIj4NCisgICAgPGNvbnN0cmFpbnRzIHhzaTp0eXBlPSJjb25zdHJhaW50czpTaW1wbGVDb25zdHJhaW50IiB4bWk6aWQ9Il96LU9DRGMxWEVlU0dWYkZOTTRtOGdRIiBuYW1lPSJpc1NpbmdsZURlcHJlY2F0ZWQiPg0KKyAgICAgIDxjb25zdHJhaW50VHlwZSBocmVmPSJwcGU6L2Vudmlyb25tZW50L29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC51aS9yZXNvdXJjZXMvU3lzTUwxLjRDb25zdHJhaW50RW52aXJvbm1lbnQueG1pIy8vQGNvbnN0cmFpbnRUeXBlcy4wIi8+DQorICAgICAgPHByb3BlcnRpZXMgeHNpOnR5cGU9ImNvbnN0cmFpbnRzOlZhbHVlUHJvcGVydHkiIHhtaTppZD0iX3otT0NEczFYRWVTR1ZiRk5NNG04Z1EiIG5hbWU9InN0ZXJlb3R5cGVOYW1lIiB2YWx1ZT0iU3lzTUw6OkRlcHJlY2F0ZWRFbGVtZW50czo6RGVwcmVjYXRlZCIvPg0KKyAgICA8L2NvbnN0cmFpbnRzPg0KKyAgPC92aWV3cz4NCisgIDx2aWV3cyB4bWk6aWQ9Il96LU9DRDgxWEVlU0dWYkZOTTRtOGdRIiBlbGVtZW50TXVsdGlwbGljaXR5PSItMSIgbmFtZT0iTXVsdGlwbGUgRGVwcmVjYXRlZCIgc2VjdGlvbnM9Il8yeHMyUWMxWEVlU0dWYkZOTTRtOGdRIiBhdXRvbWF0aWNDb250ZXh0PSJ0cnVlIiBkYXRhY29udGV4dHM9Il96LU9EYWMxWEVlU0dWYkZOTTRtOGdRIj4NCisgICAgPGNvbnN0cmFpbnRzIHhzaTp0eXBlPSJjb25zdHJhaW50czpTaW1wbGVDb25zdHJhaW50IiB4bWk6aWQ9Il96LU9DRU0xWEVlU0dWYkZOTTRtOGdRIiBuYW1lPSJpc011bHRpcGxlRGVwcmVjYXRlZCI+DQorICAgICAgPGNvbnN0cmFpbnRUeXBlIGhyZWY9InBwZTovZW52aXJvbm1lbnQvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnVpL3Jlc291cmNlcy9TeXNNTDEuNENvbnN0cmFpbnRFbnZpcm9ubWVudC54bWkjLy9AY29uc3RyYWludFR5cGVzLjAiLz4NCisgICAgICA8cHJvcGVydGllcyB4c2k6dHlwZT0iY29uc3RyYWludHM6VmFsdWVQcm9wZXJ0eSIgeG1pOmlkPSJfei1PQ0VjMVhFZVNHVmJGTk00bThnUSIgbmFtZT0ic3RlcmVvdHlwZU5hbWUiIHZhbHVlPSJTeXNNTDo6RGVwcmVjYXRlZEVsZW1lbnRzOjpEZXByZWNhdGVkIi8+DQorICAgIDwvY29uc3RyYWludHM+DQorICA8L3ZpZXdzPg0KKyAgPHZpZXdzIHhtaTppZD0iX3otT0NFczFYRWVTR1ZiRk5NNG04Z1EiIG5hbWU9IlNpbmdsZSBGbG93U3BlY2lmaWNhdGlvbiIgc2VjdGlvbnM9Il8yeHRkVU0xWEVlU0dWYkZOTTRtOGdRIiBhdXRvbWF0aWNDb250ZXh0PSJ0cnVlIiBkYXRhY29udGV4dHM9Il96LU9EYU0xWEVlU0dWYkZOTTRtOGdRIj4NCisgICAgPGNvbnN0cmFpbnRzIHhzaTp0eXBlPSJjb25zdHJhaW50czpTaW1wbGVDb25zdHJhaW50IiB4bWk6aWQ9Il96LU9DRTgxWEVlU0dWYkZOTTRtOGdRIiBuYW1lPSJpc1NpbmdsZUZsb3dTcGVjaWZpY2F0aW9uIj4NCisgICAgICA8Y29uc3RyYWludFR5cGUgaHJlZj0icHBlOi9lbnZpcm9ubWVudC9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQudWkvcmVzb3VyY2VzL1N5c01MMS40Q29uc3RyYWludEVudmlyb25tZW50LnhtaSMvL0Bjb25zdHJhaW50VHlwZXMuMCIvPg0KKyAgICAgIDxwcm9wZXJ0aWVzIHhzaTp0eXBlPSJjb25zdHJhaW50czpWYWx1ZVByb3BlcnR5IiB4bWk6aWQ9Il96LU9DRk0xWEVlU0dWYkZOTTRtOGdRIiBuYW1lPSJzdGVyZW90eXBlTmFtZSIgdmFsdWU9IlN5c01MOjpEZXByZWNhdGVkRWxlbWVudHM6OkZsb3dTcGVjaWZpY2F0aW9uIi8+DQorICAgIDwvY29uc3RyYWludHM+DQorICA8L3ZpZXdzPg0KKyAgPHZpZXdzIHhtaTppZD0iX3otT0NGYzFYRWVTR1ZiRk5NNG04Z1EiIGVsZW1lbnRNdWx0aXBsaWNpdHk9Ii0xIiBuYW1lPSJNdWx0aXBsZSBGbG93U3BlY2lmaWNhdGlvbiIgc2VjdGlvbnM9Il8yeHRkVWMxWEVlU0dWYkZOTTRtOGdRIiBhdXRvbWF0aWNDb250ZXh0PSJ0cnVlIiBkYXRhY29udGV4dHM9Il96LU9EYU0xWEVlU0dWYkZOTTRtOGdRIj4NCisgICAgPGNvbnN0cmFpbnRzIHhzaTp0eXBlPSJjb25zdHJhaW50czpTaW1wbGVDb25zdHJhaW50IiB4bWk6aWQ9Il96LU9DRnMxWEVlU0dWYkZOTTRtOGdRIiBuYW1lPSJpc011bHRpcGxlRmxvd1NwZWNpZmljYXRpb24iPg0KKyAgICAgIDxjb25zdHJhaW50VHlwZSBocmVmPSJwcGU6L2Vudmlyb25tZW50L29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC51aS9yZXNvdXJjZXMvU3lzTUwxLjRDb25zdHJhaW50RW52aXJvbm1lbnQueG1pIy8vQGNvbnN0cmFpbnRUeXBlcy4wIi8+DQorICAgICAgPHByb3BlcnRpZXMgeHNpOnR5cGU9ImNvbnN0cmFpbnRzOlZhbHVlUHJvcGVydHkiIHhtaTppZD0iX3otT0NGODFYRWVTR1ZiRk5NNG04Z1EiIG5hbWU9InN0ZXJlb3R5cGVOYW1lIiB2YWx1ZT0iU3lzTUw6OkRlcHJlY2F0ZWRFbGVtZW50czo6Rmxvd1NwZWNpZmljYXRpb24iLz4NCisgICAgPC9jb25zdHJhaW50cz4NCisgIDwvdmlld3M+DQorICA8dmlld3MgeG1pOmlkPSJfei1PQ0dNMVhFZVNHVmJGTk00bThnUSIgbmFtZT0iU2luZ2xlIEZsb3dQb3J0IiBzZWN0aW9ucz0iXzJ4dUVZTTFYRWVTR1ZiRk5NNG04Z1EiIGF1dG9tYXRpY0NvbnRleHQ9InRydWUiIGRhdGFjb250ZXh0cz0iX3otT0RhODFYRWVTR1ZiRk5NNG04Z1EiPg0KKyAgICA8Y29uc3RyYWludHMgeHNpOnR5cGU9ImNvbnN0cmFpbnRzOlNpbXBsZUNvbnN0cmFpbnQiIHhtaTppZD0iX3otT0NHYzFYRWVTR1ZiRk5NNG04Z1EiIG5hbWU9ImlzU2luZ2xlRmxvd1BvcnQiPg0KKyAgICAgIDxjb25zdHJhaW50VHlwZSBocmVmPSJwcGU6L2Vudmlyb25tZW50L29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC51aS9yZXNvdXJjZXMvU3lzTUwxLjRDb25zdHJhaW50RW52aXJvbm1lbnQueG1pIy8vQGNvbnN0cmFpbnRUeXBlcy4wIi8+DQorICAgICAgPHByb3BlcnRpZXMgeHNpOnR5cGU9ImNvbnN0cmFpbnRzOlZhbHVlUHJvcGVydHkiIHhtaTppZD0iX3otT0NHczFYRWVTR1ZiRk5NNG04Z1EiIG5hbWU9InN0ZXJlb3R5cGVOYW1lIiB2YWx1ZT0iU3lzTUw6OkRlcHJlY2F0ZWRFbGVtZW50czo6Rmxvd1BvcnQiLz4NCisgICAgPC9jb25zdHJhaW50cz4NCisgIDwvdmlld3M+DQorICA8dmlld3MgeG1pOmlkPSJfei1PQ0c4MVhFZVNHVmJGTk00bThnUSIgZWxlbWVudE11bHRpcGxpY2l0eT0iLTEiIG5hbWU9Ik11bHRpcGxlIEZsb3dQb3J0IiBzZWN0aW9ucz0iXzJ4dUVZYzFYRWVTR1ZiRk5NNG04Z1EiIGF1dG9tYXRpY0NvbnRleHQ9InRydWUiIGRhdGFjb250ZXh0cz0iX3otT0RhODFYRWVTR1ZiRk5NNG04Z1EiPg0KKyAgICA8Y29uc3RyYWludHMgeHNpOnR5cGU9ImNvbnN0cmFpbnRzOlNpbXBsZUNvbnN0cmFpbnQiIHhtaTppZD0iX3otT0NITTFYRWVTR1ZiRk5NNG04Z1EiIG5hbWU9ImlzTXVsdGlwbGVGbG93UG9ydCI+DQorICAgICAgPGNvbnN0cmFpbnRUeXBlIGhyZWY9InBwZTovZW52aXJvbm1lbnQvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnVpL3Jlc291cmNlcy9TeXNNTDEuNENvbnN0cmFpbnRFbnZpcm9ubWVudC54bWkjLy9AY29uc3RyYWludFR5cGVzLjAiLz4NCisgICAgICA8cHJvcGVydGllcyB4c2k6dHlwZT0iY29uc3RyYWludHM6VmFsdWVQcm9wZXJ0eSIgeG1pOmlkPSJfei1PQ0hjMVhFZVNHVmJGTk00bThnUSIgbmFtZT0ic3RlcmVvdHlwZU5hbWUiIHZhbHVlPSJTeXNNTDo6RGVwcmVjYXRlZEVsZW1lbnRzOjpGbG93UG9ydCIvPg0KKyAgICA8L2NvbnN0cmFpbnRzPg0KKyAgPC92aWV3cz4NCisgIDx2aWV3cyB4bWk6aWQ9Il96LU9DSHMxWEVlU0dWYkZOTTRtOGdRIiBuYW1lPSJTaW5nbGUgTmVzdGVkQ29ubmVjdG9yRW5kIiBzZWN0aW9ucz0iXzJ4dXJjTTFYRWVTR1ZiRk5NNG04Z1EiIGF1dG9tYXRpY0NvbnRleHQ9InRydWUiIGRhdGFjb250ZXh0cz0iX3otT0RwYzFYRWVTR1ZiRk5NNG04Z1EiPg0KKyAgICA8Y29uc3RyYWludHMgeHNpOnR5cGU9ImNvbnN0cmFpbnRzOlNpbXBsZUNvbnN0cmFpbnQiIHhtaTppZD0iX3otT0NIODFYRWVTR1ZiRk5NNG04Z1EiIG5hbWU9ImlzU2luZ2xlTmVzdGVkQ29ubmVjdG9yRW5kIj4NCisgICAgICA8Y29uc3RyYWludFR5cGUgaHJlZj0icHBlOi9lbnZpcm9ubWVudC9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQudWkvcmVzb3VyY2VzL1N5c01MMS40Q29uc3RyYWludEVudmlyb25tZW50LnhtaSMvL0Bjb25zdHJhaW50VHlwZXMuMCIvPg0KKyAgICAgIDxwcm9wZXJ0aWVzIHhzaTp0eXBlPSJjb25zdHJhaW50czpWYWx1ZVByb3BlcnR5IiB4bWk6aWQ9Il96LU9DSU0xWEVlU0dWYkZOTTRtOGdRIiBuYW1lPSJzdGVyZW90eXBlTmFtZSIgdmFsdWU9IlN5c01MOjpCbG9ja3M6Ok5lc3RlZENvbm5lY3RvckVuZCIvPg0KKyAgICA8L2NvbnN0cmFpbnRzPg0KKyAgPC92aWV3cz4NCisgIDx2aWV3cyB4bWk6aWQ9Il96LU9DSWMxWEVlU0dWYkZOTTRtOGdRIiBlbGVtZW50TXVsdGlwbGljaXR5PSItMSIgbmFtZT0iTXVsdGlwbGUgTmVzdGVkQ29ubmVjdG9yRW5kIiBzZWN0aW9ucz0iXzJ4dXJjYzFYRWVTR1ZiRk5NNG04Z1EiIGF1dG9tYXRpY0NvbnRleHQ9InRydWUiIGRhdGFjb250ZXh0cz0iX3otT0RwYzFYRWVTR1ZiRk5NNG04Z1EiPg0KKyAgICA8Y29uc3RyYWludHMgeHNpOnR5cGU9ImNvbnN0cmFpbnRzOlNpbXBsZUNvbnN0cmFpbnQiIHhtaTppZD0iX3otT0NJczFYRWVTR1ZiRk5NNG04Z1EiIG5hbWU9ImlzTXVsdGlwbGVOZXN0ZWRDb25uZWN0b3JFbmQiPg0KKyAgICAgIDxjb25zdHJhaW50VHlwZSBocmVmPSJwcGU6L2Vudmlyb25tZW50L29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC51aS9yZXNvdXJjZXMvU3lzTUwxLjRDb25zdHJhaW50RW52aXJvbm1lbnQueG1pIy8vQGNvbnN0cmFpbnRUeXBlcy4wIi8+DQorICAgICAgPHByb3BlcnRpZXMgeHNpOnR5cGU9ImNvbnN0cmFpbnRzOlZhbHVlUHJvcGVydHkiIHhtaTppZD0iX3otT0NJODFYRWVTR1ZiRk5NNG04Z1EiIG5hbWU9InN0ZXJlb3R5cGVOYW1lIiB2YWx1ZT0iU3lzTUw6OkJsb2Nrczo6TmVzdGVkQ29ubmVjdG9yRW5kIi8+DQorICAgIDwvY29uc3RyYWludHM+DQorICA8L3ZpZXdzPg0KKyAgPHZpZXdzIHhtaTppZD0iX3otT0NKTTFYRWVTR1ZiRk5NNG04Z1EiIG5hbWU9IlNpbmdsZSBCb3VuZFJlZmVyZW5jZSIgc2VjdGlvbnM9Il8yeHVyY3MxWEVlU0dWYkZOTTRtOGdRIiBhdXRvbWF0aWNDb250ZXh0PSJ0cnVlIiBkYXRhY29udGV4dHM9Il96LU9Ec00xWEVlU0dWYkZOTTRtOGdRIj4NCisgICAgPGNvbnN0cmFpbnRzIHhzaTp0eXBlPSJjb25zdHJhaW50czpTaW1wbGVDb25zdHJhaW50IiB4bWk6aWQ9Il96LU9DSmMxWEVlU0dWYkZOTTRtOGdRIiBuYW1lPSJpc1NpbmdsZUJvdW5kUmVmZXJlbmNlIj4NCisgICAgICA8Y29uc3RyYWludFR5cGUgaHJlZj0icHBlOi9lbnZpcm9ubWVudC9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQudWkvcmVzb3VyY2VzL1N5c01MMS40Q29uc3RyYWludEVudmlyb25tZW50LnhtaSMvL0Bjb25zdHJhaW50VHlwZXMuMCIvPg0KKyAgICAgIDxwcm9wZXJ0aWVzIHhzaTp0eXBlPSJjb25zdHJhaW50czpWYWx1ZVByb3BlcnR5IiB4bWk6aWQ9Il96LU9DSnMxWEVlU0dWYkZOTTRtOGdRIiBuYW1lPSJzdGVyZW90eXBlTmFtZSIgdmFsdWU9IlN5c01MOjpCbG9ja3M6OkJvdW5kUmVmZXJlbmNlIi8+DQorICAgIDwvY29uc3RyYWludHM+DQorICA8L3ZpZXdzPg0KKyAgPHZpZXdzIHhtaTppZD0iX3otT0NKODFYRWVTR1ZiRk5NNG04Z1EiIGVsZW1lbnRNdWx0aXBsaWNpdHk9Ii0xIiBuYW1lPSJNdWx0aXBsZSBCb3VuZFJlZmVyZW5jZSIgc2VjdGlvbnM9Il8yeHZTZ00xWEVlU0dWYkZOTTRtOGdRIiBhdXRvbWF0aWNDb250ZXh0PSJ0cnVlIiBkYXRhY29udGV4dHM9Il96LU9Ec00xWEVlU0dWYkZOTTRtOGdRIj4NCisgICAgPGNvbnN0cmFpbnRzIHhzaTp0eXBlPSJjb25zdHJhaW50czpTaW1wbGVDb25zdHJhaW50IiB4bWk6aWQ9Il96LU9DS00xWEVlU0dWYkZOTTRtOGdRIiBuYW1lPSJpc011bHRpcGxlQm91bmRSZWZlcmVuY2UiPg0KKyAgICAgIDxjb25zdHJhaW50VHlwZSBocmVmPSJwcGU6L2Vudmlyb25tZW50L29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC51aS9yZXNvdXJjZXMvU3lzTUwxLjRDb25zdHJhaW50RW52aXJvbm1lbnQueG1pIy8vQGNvbnN0cmFpbnRUeXBlcy4wIi8+DQorICAgICAgPHByb3BlcnRpZXMgeHNpOnR5cGU9ImNvbnN0cmFpbnRzOlZhbHVlUHJvcGVydHkiIHhtaTppZD0iX3otT0NLYzFYRWVTR1ZiRk5NNG04Z1EiIG5hbWU9InN0ZXJlb3R5cGVOYW1lIiB2YWx1ZT0iU3lzTUw6OkJsb2Nrczo6Qm91bmRSZWZlcmVuY2UiLz4NCisgICAgPC9jb25zdHJhaW50cz4NCisgIDwvdmlld3M+DQorICA8dmlld3MgeG1pOmlkPSJfei1PQ0tzMVhFZVNHVmJGTk00bThnUSIgbmFtZT0iU2luZ2xlIFZhbHVlVHlwZSIgc2VjdGlvbnM9Il8yeHZTZ2MxWEVlU0dWYkZOTTRtOGdRIiBhdXRvbWF0aWNDb250ZXh0PSJ0cnVlIiBkYXRhY29udGV4dHM9Il96LU9EdHMxWEVlU0dWYkZOTTRtOGdRIj4NCisgICAgPGNvbnN0cmFpbnRzIHhzaTp0eXBlPSJjb25zdHJhaW50czpTaW1wbGVDb25zdHJhaW50IiB4bWk6aWQ9Il96LU9DSzgxWEVlU0dWYkZOTTRtOGdRIiBuYW1lPSJpc1NpbmdsZVZhbHVlVHlwZSI+DQorICAgICAgPGNvbnN0cmFpbnRUeXBlIGhyZWY9InBwZTovZW52aXJvbm1lbnQvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnVpL3Jlc291cmNlcy9TeXNNTDEuNENvbnN0cmFpbnRFbnZpcm9ubWVudC54bWkjLy9AY29uc3RyYWludFR5cGVzLjAiLz4NCisgICAgICA8cHJvcGVydGllcyB4c2k6dHlwZT0iY29uc3RyYWludHM6VmFsdWVQcm9wZXJ0eSIgeG1pOmlkPSJfei1PQ0xNMVhFZVNHVmJGTk00bThnUSIgbmFtZT0ic3RlcmVvdHlwZU5hbWUiIHZhbHVlPSJTeXNNTDo6QmxvY2tzOjpWYWx1ZVR5cGUiLz4NCisgICAgPC9jb25zdHJhaW50cz4NCisgIDwvdmlld3M+DQorICA8dmlld3MgeG1pOmlkPSJfei1PQ0xjMVhFZVNHVmJGTk00bThnUSIgZWxlbWVudE11bHRpcGxpY2l0eT0iLTEiIG5hbWU9Ik11bHRpcGxlIFZhbHVlVHlwZSIgc2VjdGlvbnM9Il8yeHY1a00xWEVlU0dWYkZOTTRtOGdRIiBhdXRvbWF0aWNDb250ZXh0PSJ0cnVlIiBkYXRhY29udGV4dHM9Il96LU9EdHMxWEVlU0dWYkZOTTRtOGdRIj4NCisgICAgPGNvbnN0cmFpbnRzIHhzaTp0eXBlPSJjb25zdHJhaW50czpTaW1wbGVDb25zdHJhaW50IiB4bWk6aWQ9Il96LU9DTHMxWEVlU0dWYkZOTTRtOGdRIiBuYW1lPSJpc011bHRpcGxlVmFsdWVUeXBlIj4NCisgICAgICA8Y29uc3RyYWludFR5cGUgaHJlZj0icHBlOi9lbnZpcm9ubWVudC9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQudWkvcmVzb3VyY2VzL1N5c01MMS40Q29uc3RyYWludEVudmlyb25tZW50LnhtaSMvL0Bjb25zdHJhaW50VHlwZXMuMCIvPg0KKyAgICAgIDxwcm9wZXJ0aWVzIHhzaTp0eXBlPSJjb25zdHJhaW50czpWYWx1ZVByb3BlcnR5IiB4bWk6aWQ9Il96LU9DTDgxWEVlU0dWYkZOTTRtOGdRIiBuYW1lPSJzdGVyZW90eXBlTmFtZSIgdmFsdWU9IlN5c01MOjpCbG9ja3M6OlZhbHVlVHlwZSIvPg0KKyAgICA8L2NvbnN0cmFpbnRzPg0KKyAgPC92aWV3cz4NCisgIDx2aWV3cyB4bWk6aWQ9Il96LU9DTU0xWEVlU0dWYkZOTTRtOGdRIiBuYW1lPSJTaW5nbGUgUHJvcGVydHlTcGVjaWZpY1R5cGUiIHNlY3Rpb25zPSJfMnh2NWtjMVhFZVNHVmJGTk00bThnUSIgYXV0b21hdGljQ29udGV4dD0idHJ1ZSIgZGF0YWNvbnRleHRzPSJfei1PRG9NMVhFZVNHVmJGTk00bThnUSI+DQorICAgIDxjb25zdHJhaW50cyB4c2k6dHlwZT0iY29uc3RyYWludHM6U2ltcGxlQ29uc3RyYWludCIgeG1pOmlkPSJfei1PQ01jMVhFZVNHVmJGTk00bThnUSIgbmFtZT0iaXNTaW5nbGVQcm9wZXJ0eVNwZWNpZmljVHlwZSI+DQorICAgICAgPGNvbnN0cmFpbnRUeXBlIGhyZWY9InBwZTovZW52aXJvbm1lbnQvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnVpL3Jlc291cmNlcy9TeXNNTDEuNENvbnN0cmFpbnRFbnZpcm9ubWVudC54bWkjLy9AY29uc3RyYWludFR5cGVzLjAiLz4NCisgICAgICA8cHJvcGVydGllcyB4c2k6dHlwZT0iY29uc3RyYWludHM6VmFsdWVQcm9wZXJ0eSIgeG1pOmlkPSJfei1PQ01zMVhFZVNHVmJGTk00bThnUSIgbmFtZT0ic3RlcmVvdHlwZU5hbWUiIHZhbHVlPSJTeXNNTDo6QmxvY2tzOjpQcm9wZXJ0eVNwZWNpZmljVHlwZSIvPg0KKyAgICA8L2NvbnN0cmFpbnRzPg0KKyAgPC92aWV3cz4NCisgIDx2aWV3cyB4bWk6aWQ9Il96LU9DTTgxWEVlU0dWYkZOTTRtOGdRIiBlbGVtZW50TXVsdGlwbGljaXR5PSItMSIgbmFtZT0iTXVsdGlwbGUgUHJvcGVydHlTcGVjaWZpY1R5cGUiIHNlY3Rpb25zPSJfMnh2NWtzMVhFZVNHVmJGTk00bThnUSIgYXV0b21hdGljQ29udGV4dD0idHJ1ZSIgZGF0YWNvbnRleHRzPSJfei1PRG9NMVhFZVNHVmJGTk00bThnUSI+DQorICAgIDxjb25zdHJhaW50cyB4c2k6dHlwZT0iY29uc3RyYWludHM6U2ltcGxlQ29uc3RyYWludCIgeG1pOmlkPSJfei1PQ05NMVhFZVNHVmJGTk00bThnUSIgbmFtZT0iaXNNdWx0aXBsZVByb3BlcnR5U3BlY2lmaWNUeXBlIj4NCisgICAgICA8Y29uc3RyYWludFR5cGUgaHJlZj0icHBlOi9lbnZpcm9ubWVudC9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQudWkvcmVzb3VyY2VzL1N5c01MMS40Q29uc3RyYWludEVudmlyb25tZW50LnhtaSMvL0Bjb25zdHJhaW50VHlwZXMuMCIvPg0KKyAgICAgIDxwcm9wZXJ0aWVzIHhzaTp0eXBlPSJjb25zdHJhaW50czpWYWx1ZVByb3BlcnR5IiB4bWk6aWQ9Il96LU9DTmMxWEVlU0dWYkZOTTRtOGdRIiBuYW1lPSJzdGVyZW90eXBlTmFtZSIgdmFsdWU9IlN5c01MOjpCbG9ja3M6OlByb3BlcnR5U3BlY2lmaWNUeXBlIi8+DQorICAgIDwvY29uc3RyYWludHM+DQorICA8L3ZpZXdzPg0KKyAgPHZpZXdzIHhtaTppZD0iX3otT0NOczFYRWVTR1ZiRk5NNG04Z1EiIG5hbWU9IlNpbmdsZSBCbG9jayIgc2VjdGlvbnM9Il8yeHdnb00xWEVlU0dWYkZOTTRtOGdRIiBhdXRvbWF0aWNDb250ZXh0PSJ0cnVlIiBkYXRhY29udGV4dHM9Il96LU9EcnMxWEVlU0dWYkZOTTRtOGdRIj4NCisgICAgPGNvbnN0cmFpbnRzIHhzaTp0eXBlPSJjb25zdHJhaW50czpTaW1wbGVDb25zdHJhaW50IiB4bWk6aWQ9Il85UUk3WU03dUVlU3ZEZFJLTnNVVFdRIiBuYW1lPSJpc0Jsb2NrIj4NCisgICAgICA8Y29uc3RyYWludFR5cGUgaHJlZj0icHBlOi9lbnZpcm9ubWVudC9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQudWkvcmVzb3VyY2VzL1N5c01MMS40Q29uc3RyYWludEVudmlyb25tZW50LnhtaSMvL0Bjb25zdHJhaW50VHlwZXMuMCIvPg0KKyAgICAgIDxwcm9wZXJ0aWVzIHhzaTp0eXBlPSJjb25zdHJhaW50czpWYWx1ZVByb3BlcnR5IiB4bWk6aWQ9Il96LU9DT00xWEVlU0dWYkZOTTRtOGdRIiBuYW1lPSJzdGVyZW90eXBlTmFtZSIgdmFsdWU9IlN5c01MOjpCbG9ja3M6OkJsb2NrIi8+DQorICAgIDwvY29uc3RyYWludHM+DQorICA8L3ZpZXdzPg0KKyAgPHZpZXdzIHhtaTppZD0iX3otT0NPYzFYRWVTR1ZiRk5NNG04Z1EiIGVsZW1lbnRNdWx0aXBsaWNpdHk9Ii0xIiBuYW1lPSJNdWx0aXBsZSBCbG9jayIgc2VjdGlvbnM9Il8yeHhIc00xWEVlU0dWYkZOTTRtOGdRIiBhdXRvbWF0aWNDb250ZXh0PSJ0cnVlIiBkYXRhY29udGV4dHM9Il96LU9EcnMxWEVlU0dWYkZOTTRtOGdRIj4NCisgICAgPGNvbnN0cmFpbnRzIHhzaTp0eXBlPSJjb25zdHJhaW50czpTaW1wbGVDb25zdHJhaW50IiB4bWk6aWQ9Il96LU9DT3MxWEVlU0dWYkZOTTRtOGdRIiBuYW1lPSJpc011bHRpcGxlQmxvY2siPg0KKyAgICAgIDxjb25zdHJhaW50VHlwZSBocmVmPSJwcGU6L2Vudmlyb25tZW50L29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC51aS9yZXNvdXJjZXMvU3lzTUwxLjRDb25zdHJhaW50RW52aXJvbm1lbnQueG1pIy8vQGNvbnN0cmFpbnRUeXBlcy4wIi8+DQorICAgICAgPHByb3BlcnRpZXMgeHNpOnR5cGU9ImNvbnN0cmFpbnRzOlZhbHVlUHJvcGVydHkiIHhtaTppZD0iX3otT0NPODFYRWVTR1ZiRk5NNG04Z1EiIG5hbWU9InN0ZXJlb3R5cGVOYW1lIiB2YWx1ZT0iU3lzTUw6OkJsb2Nrczo6QmxvY2siLz4NCisgICAgPC9jb25zdHJhaW50cz4NCisgIDwvdmlld3M+DQorICA8dmlld3MgeG1pOmlkPSJfei1PQ1BNMVhFZVNHVmJGTk00bThnUSIgbmFtZT0iU2luZ2xlIEJpbmRpbmdDb25uZWN0b3IiIHNlY3Rpb25zPSJfMnh4SHNjMVhFZVNHVmJGTk00bThnUSIgYXV0b21hdGljQ29udGV4dD0idHJ1ZSIgZGF0YWNvbnRleHRzPSJfei1PRHRjMVhFZVNHVmJGTk00bThnUSI+DQorICAgIDxjb25zdHJhaW50cyB4c2k6dHlwZT0iY29uc3RyYWludHM6U2ltcGxlQ29uc3RyYWludCIgeG1pOmlkPSJfei1PQ1BjMVhFZVNHVmJGTk00bThnUSIgbmFtZT0iaXNTaW5nbGVCaW5kaW5nQ29ubmVjdG9yIj4NCisgICAgICA8Y29uc3RyYWludFR5cGUgaHJlZj0icHBlOi9lbnZpcm9ubWVudC9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQudWkvcmVzb3VyY2VzL1N5c01MMS40Q29uc3RyYWludEVudmlyb25tZW50LnhtaSMvL0Bjb25zdHJhaW50VHlwZXMuMCIvPg0KKyAgICAgIDxwcm9wZXJ0aWVzIHhzaTp0eXBlPSJjb25zdHJhaW50czpWYWx1ZVByb3BlcnR5IiB4bWk6aWQ9Il96LU9DUHMxWEVlU0dWYkZOTTRtOGdRIiBuYW1lPSJzdGVyZW90eXBlTmFtZSIgdmFsdWU9IlN5c01MOjpCbG9ja3M6OkJpbmRpbmdDb25uZWN0b3IiLz4NCisgICAgPC9jb25zdHJhaW50cz4NCisgIDwvdmlld3M+DQorICA8dmlld3MgeG1pOmlkPSJfei1PQ1A4MVhFZVNHVmJGTk00bThnUSIgZWxlbWVudE11bHRpcGxpY2l0eT0iLTEiIG5hbWU9Ik11bHRpcGxlIEJpbmRpbmdDb25uZWN0b3IiIHNlY3Rpb25zPSJfMnh4SHNzMVhFZVNHVmJGTk00bThnUSIgYXV0b21hdGljQ29udGV4dD0idHJ1ZSIgZGF0YWNvbnRleHRzPSJfei1PRHRjMVhFZVNHVmJGTk00bThnUSI+DQorICAgIDxjb25zdHJhaW50cyB4c2k6dHlwZT0iY29uc3RyYWludHM6U2ltcGxlQ29uc3RyYWludCIgeG1pOmlkPSJfei1PQ1FNMVhFZVNHVmJGTk00bThnUSIgbmFtZT0iaXNNdWx0aXBsZUJpbmRpbmdDb25uZWN0b3IiPg0KKyAgICAgIDxjb25zdHJhaW50VHlwZSBocmVmPSJwcGU6L2Vudmlyb25tZW50L29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC51aS9yZXNvdXJjZXMvU3lzTUwxLjRDb25zdHJhaW50RW52aXJvbm1lbnQueG1pIy8vQGNvbnN0cmFpbnRUeXBlcy4wIi8+DQorICAgICAgPHByb3BlcnRpZXMgeHNpOnR5cGU9ImNvbnN0cmFpbnRzOlZhbHVlUHJvcGVydHkiIHhtaTppZD0iX3otT0NRYzFYRWVTR1ZiRk5NNG04Z1EiIG5hbWU9InN0ZXJlb3R5cGVOYW1lIiB2YWx1ZT0iU3lzTUw6OkJsb2Nrczo6QmluZGluZ0Nvbm5lY3RvciIvPg0KKyAgICA8L2NvbnN0cmFpbnRzPg0KKyAgPC92aWV3cz4NCisgIDx2aWV3cyB4bWk6aWQ9Il96LU9DUXMxWEVlU0dWYkZOTTRtOGdRIiBuYW1lPSJTaW5nbGUgRGlzdHJpYnV0ZWRQcm9wZXJ0eSIgc2VjdGlvbnM9Il8yeHhIczgxWEVlU0dWYkZOTTRtOGdRIiBhdXRvbWF0aWNDb250ZXh0PSJ0cnVlIiBkYXRhY29udGV4dHM9Il96LU9Ebk0xWEVlU0dWYkZOTTRtOGdRIj4NCisgICAgPGNvbnN0cmFpbnRzIHhzaTp0eXBlPSJjb25zdHJhaW50czpTaW1wbGVDb25zdHJhaW50IiB4bWk6aWQ9Il96LU9DUTgxWEVlU0dWYkZOTTRtOGdRIiBuYW1lPSJpc1NpbmdsZURpc3RyaWJ1dGVkUHJvcGVydHkiPg0KKyAgICAgIDxjb25zdHJhaW50VHlwZSBocmVmPSJwcGU6L2Vudmlyb25tZW50L29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC51aS9yZXNvdXJjZXMvU3lzTUwxLjRDb25zdHJhaW50RW52aXJvbm1lbnQueG1pIy8vQGNvbnN0cmFpbnRUeXBlcy4wIi8+DQorICAgICAgPHByb3BlcnRpZXMgeHNpOnR5cGU9ImNvbnN0cmFpbnRzOlZhbHVlUHJvcGVydHkiIHhtaTppZD0iX3otT0NSTTFYRWVTR1ZiRk5NNG04Z1EiIG5hbWU9InN0ZXJlb3R5cGVOYW1lIiB2YWx1ZT0iU3lzTUw6OkJsb2Nrczo6RGlzdHJpYnV0ZWRQcm9wZXJ0eSIvPg0KKyAgICA8L2NvbnN0cmFpbnRzPg0KKyAgPC92aWV3cz4NCisgIDx2aWV3cyB4bWk6aWQ9Il96LU9DUmMxWEVlU0dWYkZOTTRtOGdRIiBlbGVtZW50TXVsdGlwbGljaXR5PSItMSIgbmFtZT0iTXVsdGlwbGUgRGlzdHJpYnV0ZWRQcm9wZXJ0eSIgc2VjdGlvbnM9Il8yeHh1d00xWEVlU0dWYkZOTTRtOGdRIiBhdXRvbWF0aWNDb250ZXh0PSJ0cnVlIiBkYXRhY29udGV4dHM9Il96LU9Ebk0xWEVlU0dWYkZOTTRtOGdRIj4NCisgICAgPGNvbnN0cmFpbnRzIHhzaTp0eXBlPSJjb25zdHJhaW50czpTaW1wbGVDb25zdHJhaW50IiB4bWk6aWQ9Il96LU9DUnMxWEVlU0dWYkZOTTRtOGdRIiBuYW1lPSJpc011bHRpcGxlRGlzdHJpYnV0ZWRQcm9wZXJ0eSI+DQorICAgICAgPGNvbnN0cmFpbnRUeXBlIGhyZWY9InBwZTovZW52aXJvbm1lbnQvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnVpL3Jlc291cmNlcy9TeXNNTDEuNENvbnN0cmFpbnRFbnZpcm9ubWVudC54bWkjLy9AY29uc3RyYWludFR5cGVzLjAiLz4NCisgICAgICA8cHJvcGVydGllcyB4c2k6dHlwZT0iY29uc3RyYWludHM6VmFsdWVQcm9wZXJ0eSIgeG1pOmlkPSJfei1PQ1I4MVhFZVNHVmJGTk00bThnUSIgbmFtZT0ic3RlcmVvdHlwZU5hbWUiIHZhbHVlPSJTeXNNTDo6QmxvY2tzOjpEaXN0cmlidXRlZFByb3BlcnR5Ii8+DQorICAgIDwvY29uc3RyYWludHM+DQorICA8L3ZpZXdzPg0KKyAgPHZpZXdzIHhtaTppZD0iX3otT0NTTTFYRWVTR1ZiRk5NNG04Z1EiIG5hbWU9IlNpbmdsZSBFbGVtZW50UHJvcGVydHlQYXRoIiBzZWN0aW9ucz0iXzJ4eHV3YzFYRWVTR1ZiRk5NNG04Z1EiIGF1dG9tYXRpY0NvbnRleHQ9InRydWUiIGRhdGFjb250ZXh0cz0iX3otT0RzODFYRWVTR1ZiRk5NNG04Z1EiPg0KKyAgICA8Y29uc3RyYWludHMgeHNpOnR5cGU9ImNvbnN0cmFpbnRzOlNpbXBsZUNvbnN0cmFpbnQiIHhtaTppZD0iX3otT0NTYzFYRWVTR1ZiRk5NNG04Z1EiIG5hbWU9ImlzU2luZ2xlRWxlbWVudFByb3BlcnR5UGF0aCI+DQorICAgICAgPGNvbnN0cmFpbnRUeXBlIGhyZWY9InBwZTovZW52aXJvbm1lbnQvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnVpL3Jlc291cmNlcy9TeXNNTDEuNENvbnN0cmFpbnRFbnZpcm9ubWVudC54bWkjLy9AY29uc3RyYWludFR5cGVzLjAiLz4NCisgICAgICA8cHJvcGVydGllcyB4c2k6dHlwZT0iY29uc3RyYWludHM6VmFsdWVQcm9wZXJ0eSIgeG1pOmlkPSJfei1PQ1NzMVhFZVNHVmJGTk00bThnUSIgbmFtZT0ic3RlcmVvdHlwZU5hbWUiIHZhbHVlPSJTeXNNTDo6QmxvY2tzOjpFbGVtZW50UHJvcGVydHlQYXRoIi8+DQorICAgIDwvY29uc3RyYWludHM+DQorICA8L3ZpZXdzPg0KKyAgPHZpZXdzIHhtaTppZD0iX3otT0NTODFYRWVTR1ZiRk5NNG04Z1EiIGVsZW1lbnRNdWx0aXBsaWNpdHk9Ii0xIiBuYW1lPSJNdWx0aXBsZSBFbGVtZW50UHJvcGVydHlQYXRoIiBzZWN0aW9ucz0iXzJ4eHV3czFYRWVTR1ZiRk5NNG04Z1EiIGF1dG9tYXRpY0NvbnRleHQ9InRydWUiIGRhdGFjb250ZXh0cz0iX3otT0RzODFYRWVTR1ZiRk5NNG04Z1EiPg0KKyAgICA8Y29uc3RyYWludHMgeHNpOnR5cGU9ImNvbnN0cmFpbnRzOlNpbXBsZUNvbnN0cmFpbnQiIHhtaTppZD0iX3otT0NUTTFYRWVTR1ZiRk5NNG04Z1EiIG5hbWU9ImlzTXVsdGlwbGVFbGVtZW50UHJvcGVydHlQYXRoIj4NCisgICAgICA8Y29uc3RyYWludFR5cGUgaHJlZj0icHBlOi9lbnZpcm9ubWVudC9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQudWkvcmVzb3VyY2VzL1N5c01MMS40Q29uc3RyYWludEVudmlyb25tZW50LnhtaSMvL0Bjb25zdHJhaW50VHlwZXMuMCIvPg0KKyAgICAgIDxwcm9wZXJ0aWVzIHhzaTp0eXBlPSJjb25zdHJhaW50czpWYWx1ZVByb3BlcnR5IiB4bWk6aWQ9Il96LU9DVGMxWEVlU0dWYkZOTTRtOGdRIiBuYW1lPSJzdGVyZW90eXBlTmFtZSIgdmFsdWU9IlN5c01MOjpCbG9ja3M6OkVsZW1lbnRQcm9wZXJ0eVBhdGgiLz4NCisgICAgPC9jb25zdHJhaW50cz4NCisgIDwvdmlld3M+DQorICA8dmlld3MgeG1pOmlkPSJfei1PQ1RzMVhFZVNHVmJGTk00bThnUSIgbmFtZT0iU2luZ2xlIEVuZFBhdGhNdWx0aXBsaWNpdHkiIHNlY3Rpb25zPSJfMnh5VjBNMVhFZVNHVmJGTk00bThnUSIgYXV0b21hdGljQ29udGV4dD0idHJ1ZSIgZGF0YWNvbnRleHRzPSJfei1PRG5jMVhFZVNHVmJGTk00bThnUSI+DQorICAgIDxjb25zdHJhaW50cyB4c2k6dHlwZT0iY29uc3RyYWludHM6U2ltcGxlQ29uc3RyYWludCIgeG1pOmlkPSJfei1PQ1Q4MVhFZVNHVmJGTk00bThnUSIgbmFtZT0iaXNTaW5nbGVFbmRQYXRoTXVsdGlwbGljaXR5Ij4NCisgICAgICA8Y29uc3RyYWludFR5cGUgaHJlZj0icHBlOi9lbnZpcm9ubWVudC9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQudWkvcmVzb3VyY2VzL1N5c01MMS40Q29uc3RyYWludEVudmlyb25tZW50LnhtaSMvL0Bjb25zdHJhaW50VHlwZXMuMCIvPg0KKyAgICAgIDxwcm9wZXJ0aWVzIHhzaTp0eXBlPSJjb25zdHJhaW50czpWYWx1ZVByb3BlcnR5IiB4bWk6aWQ9Il96LU9DVU0xWEVlU0dWYkZOTTRtOGdRIiBuYW1lPSJzdGVyZW90eXBlTmFtZSIgdmFsdWU9IlN5c01MOjpCbG9ja3M6OkVuZFBhdGhNdWx0aXBsaWNpdHkiLz4NCisgICAgPC9jb25zdHJhaW50cz4NCisgIDwvdmlld3M+DQorICA8dmlld3MgeG1pOmlkPSJfei1PQ1VjMVhFZVNHVmJGTk00bThnUSIgZWxlbWVudE11bHRpcGxpY2l0eT0iLTEiIG5hbWU9Ik11bHRpcGxlIEVuZFBhdGhNdWx0aXBsaWNpdHkiIHNlY3Rpb25zPSJfMnh5ODRNMVhFZVNHVmJGTk00bThnUSIgYXV0b21hdGljQ29udGV4dD0idHJ1ZSIgZGF0YWNvbnRleHRzPSJfei1PRG5jMVhFZVNHVmJGTk00bThnUSI+DQorICAgIDxjb25zdHJhaW50cyB4c2k6dHlwZT0iY29uc3RyYWludHM6U2ltcGxlQ29uc3RyYWludCIgeG1pOmlkPSJfei1PQ1VzMVhFZVNHVmJGTk00bThnUSIgbmFtZT0iaXNNdWx0aXBsZUVuZFBhdGhNdWx0aXBsaWNpdHkiPg0KKyAgICAgIDxjb25zdHJhaW50VHlwZSBocmVmPSJwcGU6L2Vudmlyb25tZW50L29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC51aS9yZXNvdXJjZXMvU3lzTUwxLjRDb25zdHJhaW50RW52aXJvbm1lbnQueG1pIy8vQGNvbnN0cmFpbnRUeXBlcy4wIi8+DQorICAgICAgPHByb3BlcnRpZXMgeHNpOnR5cGU9ImNvbnN0cmFpbnRzOlZhbHVlUHJvcGVydHkiIHhtaTppZD0iX3otT0NVODFYRWVTR1ZiRk5NNG04Z1EiIG5hbWU9InN0ZXJlb3R5cGVOYW1lIiB2YWx1ZT0iU3lzTUw6OkJsb2Nrczo6RW5kUGF0aE11bHRpcGxpY2l0eSIvPg0KKyAgICA8L2NvbnN0cmFpbnRzPg0KKyAgPC92aWV3cz4NCisgIDx2aWV3cyB4bWk6aWQ9Il96LU9DVk0xWEVlU0dWYkZOTTRtOGdRIiBuYW1lPSJTaW5nbGUgQ29ubmVjdG9yUHJvcGVydHkiIHNlY3Rpb25zPSJfMnh5ODRjMVhFZVNHVmJGTk00bThnUSIgYXV0b21hdGljQ29udGV4dD0idHJ1ZSIgZGF0YWNvbnRleHRzPSJfei1PRG9jMVhFZVNHVmJGTk00bThnUSI+DQorICAgIDxjb25zdHJhaW50cyB4c2k6dHlwZT0iY29uc3RyYWludHM6U2ltcGxlQ29uc3RyYWludCIgeG1pOmlkPSJfei1PQ1ZjMVhFZVNHVmJGTk00bThnUSIgbmFtZT0iaXNTaW5nbGVDb25uZWN0b3JQcm9wZXJ0eSI+DQorICAgICAgPGNvbnN0cmFpbnRUeXBlIGhyZWY9InBwZTovZW52aXJvbm1lbnQvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnVpL3Jlc291cmNlcy9TeXNNTDEuNENvbnN0cmFpbnRFbnZpcm9ubWVudC54bWkjLy9AY29uc3RyYWludFR5cGVzLjAiLz4NCisgICAgICA8cHJvcGVydGllcyB4c2k6dHlwZT0iY29uc3RyYWludHM6VmFsdWVQcm9wZXJ0eSIgeG1pOmlkPSJfei1PQ1ZzMVhFZVNHVmJGTk00bThnUSIgbmFtZT0ic3RlcmVvdHlwZU5hbWUiIHZhbHVlPSJTeXNNTDo6QmxvY2tzOjpDb25uZWN0b3JQcm9wZXJ0eSIvPg0KKyAgICA8L2NvbnN0cmFpbnRzPg0KKyAgPC92aWV3cz4NCisgIDx2aWV3cyB4bWk6aWQ9Il96LU9DVjgxWEVlU0dWYkZOTTRtOGdRIiBlbGVtZW50TXVsdGlwbGljaXR5PSItMSIgbmFtZT0iTXVsdGlwbGUgQ29ubmVjdG9yUHJvcGVydHkiIHNlY3Rpb25zPSJfMnh6ajhNMVhFZVNHVmJGTk00bThnUSIgYXV0b21hdGljQ29udGV4dD0idHJ1ZSIgZGF0YWNvbnRleHRzPSJfei1PRG9jMVhFZVNHVmJGTk00bThnUSI+DQorICAgIDxjb25zdHJhaW50cyB4c2k6dHlwZT0iY29uc3RyYWludHM6U2ltcGxlQ29uc3RyYWludCIgeG1pOmlkPSJfei1PQ1dNMVhFZVNHVmJGTk00bThnUSIgbmFtZT0iaXNNdWx0aXBsZUNvbm5lY3RvclByb3BlcnR5Ij4NCisgICAgICA8Y29uc3RyYWludFR5cGUgaHJlZj0icHBlOi9lbnZpcm9ubWVudC9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQudWkvcmVzb3VyY2VzL1N5c01MMS40Q29uc3RyYWludEVudmlyb25tZW50LnhtaSMvL0Bjb25zdHJhaW50VHlwZXMuMCIvPg0KKyAgICAgIDxwcm9wZXJ0aWVzIHhzaTp0eXBlPSJjb25zdHJhaW50czpWYWx1ZVByb3BlcnR5IiB4bWk6aWQ9Il96LU9DV2MxWEVlU0dWYkZOTTRtOGdRIiBuYW1lPSJzdGVyZW90eXBlTmFtZSIgdmFsdWU9IlN5c01MOjpCbG9ja3M6OkNvbm5lY3RvclByb3BlcnR5Ii8+DQorICAgIDwvY29uc3RyYWludHM+DQorICA8L3ZpZXdzPg0KKyAgPHZpZXdzIHhtaTppZD0iX3otT0NXczFYRWVTR1ZiRk5NNG04Z1EiIG5hbWU9IlNpbmdsZSBDbGFzc2lmaWVyQmVoYXZpb3JQcm9wZXJ0eSIgc2VjdGlvbnM9Il8yeHpqOGMxWEVlU0dWYkZOTTRtOGdRIiBhdXRvbWF0aWNDb250ZXh0PSJ0cnVlIiBkYXRhY29udGV4dHM9Il96LU9EcmMxWEVlU0dWYkZOTTRtOGdRIj4NCisgICAgPGNvbnN0cmFpbnRzIHhzaTp0eXBlPSJjb25zdHJhaW50czpTaW1wbGVDb25zdHJhaW50IiB4bWk6aWQ9Il96LU9DVzgxWEVlU0dWYkZOTTRtOGdRIiBuYW1lPSJpc1NpbmdsZUNsYXNzaWZpZXJCZWhhdmlvclByb3BlcnR5Ij4NCisgICAgICA8Y29uc3RyYWludFR5cGUgaHJlZj0icHBlOi9lbnZpcm9ubWVudC9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQudWkvcmVzb3VyY2VzL1N5c01MMS40Q29uc3RyYWludEVudmlyb25tZW50LnhtaSMvL0Bjb25zdHJhaW50VHlwZXMuMCIvPg0KKyAgICAgIDxwcm9wZXJ0aWVzIHhzaTp0eXBlPSJjb25zdHJhaW50czpWYWx1ZVByb3BlcnR5IiB4bWk6aWQ9Il96LU9DWE0xWEVlU0dWYkZOTTRtOGdRIiBuYW1lPSJzdGVyZW90eXBlTmFtZSIgdmFsdWU9IlN5c01MOjpCbG9ja3M6OkNsYXNzaWZpZXJCZWhhdmlvclByb3BlcnR5Ii8+DQorICAgIDwvY29uc3RyYWludHM+DQorICA8L3ZpZXdzPg0KKyAgPHZpZXdzIHhtaTppZD0iX3otT0NYYzFYRWVTR1ZiRk5NNG04Z1EiIGVsZW1lbnRNdWx0aXBsaWNpdHk9Ii0xIiBuYW1lPSJNdWx0aXBsZSBDbGFzc2lmaWVyQmVoYXZpb3JQcm9wZXJ0eSIgc2VjdGlvbnM9Il8yeHpqOHMxWEVlU0dWYkZOTTRtOGdRIiBhdXRvbWF0aWNDb250ZXh0PSJ0cnVlIiBkYXRhY29udGV4dHM9Il96LU9EcmMxWEVlU0dWYkZOTTRtOGdRIj4NCisgICAgPGNvbnN0cmFpbnRzIHhzaTp0eXBlPSJjb25zdHJhaW50czpTaW1wbGVDb25zdHJhaW50IiB4bWk6aWQ9Il96LU9DWHMxWEVlU0dWYkZOTTRtOGdRIiBuYW1lPSJpc011bHRpcGxlQ2xhc3NpZmllckJlaGF2aW9yUHJvcGVydHkiPg0KKyAgICAgIDxjb25zdHJhaW50VHlwZSBocmVmPSJwcGU6L2Vudmlyb25tZW50L29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC51aS9yZXNvdXJjZXMvU3lzTUwxLjRDb25zdHJhaW50RW52aXJvbm1lbnQueG1pIy8vQGNvbnN0cmFpbnRUeXBlcy4wIi8+DQorICAgICAgPHByb3BlcnRpZXMgeHNpOnR5cGU9ImNvbnN0cmFpbnRzOlZhbHVlUHJvcGVydHkiIHhtaTppZD0iX3otT0NYODFYRWVTR1ZiRk5NNG04Z1EiIG5hbWU9InN0ZXJlb3R5cGVOYW1lIiB2YWx1ZT0iU3lzTUw6OkJsb2Nrczo6Q2xhc3NpZmllckJlaGF2aW9yUHJvcGVydHkiLz4NCisgICAgPC9jb25zdHJhaW50cz4NCisgIDwvdmlld3M+DQorICA8dmlld3MgeG1pOmlkPSJfei1PQ1lNMVhFZVNHVmJGTk00bThnUSIgbmFtZT0iU2luZ2xlIERpcmVjdGVkUmVsYXRpb25zaGlwUHJvcGVydHlQYXRoIiBzZWN0aW9ucz0iXzJ4MExBTTFYRWVTR1ZiRk5NNG04Z1EiIGF1dG9tYXRpY0NvbnRleHQ9InRydWUiIGRhdGFjb250ZXh0cz0iX3otT0RwczFYRWVTR1ZiRk5NNG04Z1EiPg0KKyAgICA8Y29uc3RyYWludHMgeHNpOnR5cGU9ImNvbnN0cmFpbnRzOlNpbXBsZUNvbnN0cmFpbnQiIHhtaTppZD0iX3otT0NZYzFYRWVTR1ZiRk5NNG04Z1EiIG5hbWU9ImlzU2luZ2xlRGlyZWN0ZWRSZWxhdGlvbnNoaXBQcm9wZXJ0eVBhdGgiPg0KKyAgICAgIDxjb25zdHJhaW50VHlwZSBocmVmPSJwcGU6L2Vudmlyb25tZW50L29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC51aS9yZXNvdXJjZXMvU3lzTUwxLjRDb25zdHJhaW50RW52aXJvbm1lbnQueG1pIy8vQGNvbnN0cmFpbnRUeXBlcy4wIi8+DQorICAgICAgPHByb3BlcnRpZXMgeHNpOnR5cGU9ImNvbnN0cmFpbnRzOlZhbHVlUHJvcGVydHkiIHhtaTppZD0iX3otT0NZczFYRWVTR1ZiRk5NNG04Z1EiIG5hbWU9InN0ZXJlb3R5cGVOYW1lIiB2YWx1ZT0iU3lzTUw6OkJsb2Nrczo6RGlyZWN0ZWRSZWxhdGlvbnNoaXBQcm9wZXJ0eVBhdGgiLz4NCisgICAgPC9jb25zdHJhaW50cz4NCisgIDwvdmlld3M+DQorICA8dmlld3MgeG1pOmlkPSJfei1PQ1k4MVhFZVNHVmJGTk00bThnUSIgZWxlbWVudE11bHRpcGxpY2l0eT0iLTEiIG5hbWU9Ik11bHRpcGxlIERpcmVjdGVkUmVsYXRpb25zaGlwUHJvcGVydHlQYXRoIiBzZWN0aW9ucz0iXzJ4MHlFTTFYRWVTR1ZiRk5NNG04Z1EiIGF1dG9tYXRpY0NvbnRleHQ9InRydWUiIGRhdGFjb250ZXh0cz0iX3otT0RwczFYRWVTR1ZiRk5NNG04Z1EiPg0KKyAgICA8Y29uc3RyYWludHMgeHNpOnR5cGU9ImNvbnN0cmFpbnRzOlNpbXBsZUNvbnN0cmFpbnQiIHhtaTppZD0iX3otT0NaTTFYRWVTR1ZiRk5NNG04Z1EiIG5hbWU9ImlzTXVsdGlwbGVEaXJlY3RlZFJlbGF0aW9uc2hpcFByb3BlcnR5UGF0aCI+DQorICAgICAgPGNvbnN0cmFpbnRUeXBlIGhyZWY9InBwZTovZW52aXJvbm1lbnQvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnVpL3Jlc291cmNlcy9TeXNNTDEuNENvbnN0cmFpbnRFbnZpcm9ubWVudC54bWkjLy9AY29uc3RyYWludFR5cGVzLjAiLz4NCisgICAgICA8cHJvcGVydGllcyB4c2k6dHlwZT0iY29uc3RyYWludHM6VmFsdWVQcm9wZXJ0eSIgeG1pOmlkPSJfei1PQ1pjMVhFZVNHVmJGTk00bThnUSIgbmFtZT0ic3RlcmVvdHlwZU5hbWUiIHZhbHVlPSJTeXNNTDo6QmxvY2tzOjpEaXJlY3RlZFJlbGF0aW9uc2hpcFByb3BlcnR5UGF0aCIvPg0KKyAgICA8L2NvbnN0cmFpbnRzPg0KKyAgPC92aWV3cz4NCisgIDx2aWV3cyB4bWk6aWQ9Il96LU9DWnMxWEVlU0dWYkZOTTRtOGdRIiBuYW1lPSJTaW5nbGUgQWRqdW5jdFByb3BlcnR5IiBzZWN0aW9ucz0iXzJ4MHlFYzFYRWVTR1ZiRk5NNG04Z1EiIGF1dG9tYXRpY0NvbnRleHQ9InRydWUiIGRhdGFjb250ZXh0cz0iX3otT0RxODFYRWVTR1ZiRk5NNG04Z1EiPg0KKyAgICA8Y29uc3RyYWludHMgeHNpOnR5cGU9ImNvbnN0cmFpbnRzOlNpbXBsZUNvbnN0cmFpbnQiIHhtaTppZD0iX3otT0NaODFYRWVTR1ZiRk5NNG04Z1EiIG5hbWU9ImlzU2luZ2xlQWRqdW5jdFByb3BlcnR5Ij4NCisgICAgICA8Y29uc3RyYWludFR5cGUgaHJlZj0icHBlOi9lbnZpcm9ubWVudC9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQudWkvcmVzb3VyY2VzL1N5c01MMS40Q29uc3RyYWludEVudmlyb25tZW50LnhtaSMvL0Bjb25zdHJhaW50VHlwZXMuMCIvPg0KKyAgICAgIDxwcm9wZXJ0aWVzIHhzaTp0eXBlPSJjb25zdHJhaW50czpWYWx1ZVByb3BlcnR5IiB4bWk6aWQ9Il96LU9DYU0xWEVlU0dWYkZOTTRtOGdRIiBuYW1lPSJzdGVyZW90eXBlTmFtZSIgdmFsdWU9IlN5c01MOjpCbG9ja3M6OkFkanVuY3RQcm9wZXJ0eSIvPg0KKyAgICA8L2NvbnN0cmFpbnRzPg0KKyAgPC92aWV3cz4NCisgIDx2aWV3cyB4bWk6aWQ9Il96LU9DYWMxWEVlU0dWYkZOTTRtOGdRIiBlbGVtZW50TXVsdGlwbGljaXR5PSItMSIgbmFtZT0iTXVsdGlwbGUgQWRqdW5jdFByb3BlcnR5IiBzZWN0aW9ucz0iXzJ4MVpJTTFYRWVTR1ZiRk5NNG04Z1EiIGF1dG9tYXRpY0NvbnRleHQ9InRydWUiIGRhdGFjb250ZXh0cz0iX3otT0RxODFYRWVTR1ZiRk5NNG04Z1EiPg0KKyAgICA8Y29uc3RyYWludHMgeHNpOnR5cGU9ImNvbnN0cmFpbnRzOlNpbXBsZUNvbnN0cmFpbnQiIHhtaTppZD0iX3otT0NhczFYRWVTR1ZiRk5NNG04Z1EiIG5hbWU9ImlzTXVsdGlwbGVBZGp1bmN0UHJvcGVydHkiPg0KKyAgICAgIDxjb25zdHJhaW50VHlwZSBocmVmPSJwcGU6L2Vudmlyb25tZW50L29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC51aS9yZXNvdXJjZXMvU3lzTUwxLjRDb25zdHJhaW50RW52aXJvbm1lbnQueG1pIy8vQGNvbnN0cmFpbnRUeXBlcy4wIi8+DQorICAgICAgPHByb3BlcnRpZXMgeHNpOnR5cGU9ImNvbnN0cmFpbnRzOlZhbHVlUHJvcGVydHkiIHhtaTppZD0iX3otT0NhODFYRWVTR1ZiRk5NNG04Z1EiIG5hbWU9InN0ZXJlb3R5cGVOYW1lIiB2YWx1ZT0iU3lzTUw6OkJsb2Nrczo6QWRqdW5jdFByb3BlcnR5Ii8+DQorICAgIDwvY29uc3RyYWludHM+DQorICA8L3ZpZXdzPg0KKyAgPHZpZXdzIHhtaTppZD0iX3otT0NiTTFYRWVTR1ZiRk5NNG04Z1EiIG5hbWU9IlNpbmdsZSBQYXJ0aWNpcGFudFByb3BlcnR5IiBzZWN0aW9ucz0iXzJ4MVpJYzFYRWVTR1ZiRk5NNG04Z1EiIGF1dG9tYXRpY0NvbnRleHQ9InRydWUiIGRhdGFjb250ZXh0cz0iX3otT0RvODFYRWVTR1ZiRk5NNG04Z1EiPg0KKyAgICA8Y29uc3RyYWludHMgeHNpOnR5cGU9ImNvbnN0cmFpbnRzOlNpbXBsZUNvbnN0cmFpbnQiIHhtaTppZD0iX3otT0NiYzFYRWVTR1ZiRk5NNG04Z1EiIG5hbWU9ImlzU2luZ2xlUGFydGljaXBhbnRQcm9wZXJ0eSI+DQorICAgICAgPGNvbnN0cmFpbnRUeXBlIGhyZWY9InBwZTovZW52aXJvbm1lbnQvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnVpL3Jlc291cmNlcy9TeXNNTDEuNENvbnN0cmFpbnRFbnZpcm9ubWVudC54bWkjLy9AY29uc3RyYWludFR5cGVzLjAiLz4NCisgICAgICA8cHJvcGVydGllcyB4c2k6dHlwZT0iY29uc3RyYWludHM6VmFsdWVQcm9wZXJ0eSIgeG1pOmlkPSJfei1PQ2JzMVhFZVNHVmJGTk00bThnUSIgbmFtZT0ic3RlcmVvdHlwZU5hbWUiIHZhbHVlPSJTeXNNTDo6QmxvY2tzOjpQYXJ0aWNpcGFudFByb3BlcnR5Ii8+DQorICAgIDwvY29uc3RyYWludHM+DQorICA8L3ZpZXdzPg0KKyAgPHZpZXdzIHhtaTppZD0iX3otT0NiODFYRWVTR1ZiRk5NNG04Z1EiIGVsZW1lbnRNdWx0aXBsaWNpdHk9Ii0xIiBuYW1lPSJNdWx0aXBsZSBQYXJ0aWNpcGFudFByb3BlcnR5IiBzZWN0aW9ucz0iXzJ4MVpJczFYRWVTR1ZiRk5NNG04Z1EiIGF1dG9tYXRpY0NvbnRleHQ9InRydWUiIGRhdGFjb250ZXh0cz0iX3otT0RvODFYRWVTR1ZiRk5NNG04Z1EiPg0KKyAgICA8Y29uc3RyYWludHMgeHNpOnR5cGU9ImNvbnN0cmFpbnRzOlNpbXBsZUNvbnN0cmFpbnQiIHhtaTppZD0iX3otT0NjTTFYRWVTR1ZiRk5NNG04Z1EiIG5hbWU9ImlzTXVsdGlwbGVQYXJ0aWNpcGFudFByb3BlcnR5Ij4NCisgICAgICA8Y29uc3RyYWludFR5cGUgaHJlZj0icHBlOi9lbnZpcm9ubWVudC9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQudWkvcmVzb3VyY2VzL1N5c01MMS40Q29uc3RyYWludEVudmlyb25tZW50LnhtaSMvL0Bjb25zdHJhaW50VHlwZXMuMCIvPg0KKyAgICAgIDxwcm9wZXJ0aWVzIHhzaTp0eXBlPSJjb25zdHJhaW50czpWYWx1ZVByb3BlcnR5IiB4bWk6aWQ9Il96LU9DY2MxWEVlU0dWYkZOTTRtOGdRIiBuYW1lPSJzdGVyZW90eXBlTmFtZSIgdmFsdWU9IlN5c01MOjpCbG9ja3M6OlBhcnRpY2lwYW50UHJvcGVydHkiLz4NCisgICAgPC9jb25zdHJhaW50cz4NCisgIDwvdmlld3M+DQorICA8dmlld3MgeG1pOmlkPSJfei1PQ2NzMVhFZVNHVmJGTk00bThnUSIgbmFtZT0iU2luZ2xlIFJlcXVpcmVtZW50IiBzZWN0aW9ucz0iXzJ4Mm5RTTFYRWVTR1ZiRk5NNG04Z1EiIGF1dG9tYXRpY0NvbnRleHQ9InRydWUiIGRhdGFjb250ZXh0cz0iX3otT0R2czFYRWVTR1ZiRk5NNG04Z1EiPg0KKyAgICA8Y29uc3RyYWludHMgeHNpOnR5cGU9ImNvbnN0cmFpbnRzOlNpbXBsZUNvbnN0cmFpbnQiIHhtaTppZD0iX3otT0NjODFYRWVTR1ZiRk5NNG04Z1EiIG5hbWU9ImlzU2luZ2xlUmVxdWlyZW1lbnQiPg0KKyAgICAgIDxjb25zdHJhaW50VHlwZSBocmVmPSJwcGU6L2Vudmlyb25tZW50L29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC51aS9yZXNvdXJjZXMvU3lzTUwxLjRDb25zdHJhaW50RW52aXJvbm1lbnQueG1pIy8vQGNvbnN0cmFpbnRUeXBlcy4wIi8+DQorICAgICAgPHByb3BlcnRpZXMgeHNpOnR5cGU9ImNvbnN0cmFpbnRzOlZhbHVlUHJvcGVydHkiIHhtaTppZD0iX3otT0NkTTFYRWVTR1ZiRk5NNG04Z1EiIG5hbWU9InN0ZXJlb3R5cGVOYW1lIiB2YWx1ZT0iU3lzTUw6OlJlcXVpcmVtZW50czo6UmVxdWlyZW1lbnQiLz4NCisgICAgPC9jb25zdHJhaW50cz4NCisgIDwvdmlld3M+DQorICA8dmlld3MgeG1pOmlkPSJfei1PQ2RjMVhFZVNHVmJGTk00bThnUSIgZWxlbWVudE11bHRpcGxpY2l0eT0iLTEiIG5hbWU9Ik11bHRpcGxlIFJlcXVpcmVtZW50IiBzZWN0aW9ucz0iXzJ4M09VTTFYRWVTR1ZiRk5NNG04Z1EiIGF1dG9tYXRpY0NvbnRleHQ9InRydWUiIGRhdGFjb250ZXh0cz0iX3otT0R2czFYRWVTR1ZiRk5NNG04Z1EiPg0KKyAgICA8Y29uc3RyYWludHMgeHNpOnR5cGU9ImNvbnN0cmFpbnRzOlNpbXBsZUNvbnN0cmFpbnQiIHhtaTppZD0iX3otT0NkczFYRWVTR1ZiRk5NNG04Z1EiIG5hbWU9ImlzTXVsdGlwbGVSZXF1aXJlbWVudCI+DQorICAgICAgPGNvbnN0cmFpbnRUeXBlIGhyZWY9InBwZTovZW52aXJvbm1lbnQvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnVpL3Jlc291cmNlcy9TeXNNTDEuNENvbnN0cmFpbnRFbnZpcm9ubWVudC54bWkjLy9AY29uc3RyYWludFR5cGVzLjAiLz4NCisgICAgICA8cHJvcGVydGllcyB4c2k6dHlwZT0iY29uc3RyYWludHM6VmFsdWVQcm9wZXJ0eSIgeG1pOmlkPSJfei1PQ2Q4MVhFZVNHVmJGTk00bThnUSIgbmFtZT0ic3RlcmVvdHlwZU5hbWUiIHZhbHVlPSJTeXNNTDo6UmVxdWlyZW1lbnRzOjpSZXF1aXJlbWVudCIvPg0KKyAgICA8L2NvbnN0cmFpbnRzPg0KKyAgPC92aWV3cz4NCisgIDx2aWV3cyB4bWk6aWQ9Il96LU9DZU0xWEVlU0dWYkZOTTRtOGdRIiBuYW1lPSJTaW5nbGUgVHJhY2UiIHNlY3Rpb25zPSJfMngzT1VjMVhFZVNHVmJGTk00bThnUSIgYXV0b21hdGljQ29udGV4dD0idHJ1ZSIgZGF0YWNvbnRleHRzPSJfei1PRHlNMVhFZVNHVmJGTk00bThnUSI+DQorICAgIDxjb25zdHJhaW50cyB4c2k6dHlwZT0iY29uc3RyYWludHM6U2ltcGxlQ29uc3RyYWludCIgeG1pOmlkPSJfei1PQ2VjMVhFZVNHVmJGTk00bThnUSIgbmFtZT0iaXNTaW5nbGVUcmFjZSI+DQorICAgICAgPGNvbnN0cmFpbnRUeXBlIGhyZWY9InBwZTovZW52aXJvbm1lbnQvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnVpL3Jlc291cmNlcy9TeXNNTDEuNENvbnN0cmFpbnRFbnZpcm9ubWVudC54bWkjLy9AY29uc3RyYWludFR5cGVzLjAiLz4NCisgICAgICA8cHJvcGVydGllcyB4c2k6dHlwZT0iY29uc3RyYWludHM6VmFsdWVQcm9wZXJ0eSIgeG1pOmlkPSJfei1PQ2VzMVhFZVNHVmJGTk00bThnUSIgbmFtZT0ic3RlcmVvdHlwZU5hbWUiIHZhbHVlPSJTeXNNTDo6UmVxdWlyZW1lbnRzOjpUcmFjZSIvPg0KKyAgICA8L2NvbnN0cmFpbnRzPg0KKyAgPC92aWV3cz4NCisgIDx2aWV3cyB4bWk6aWQ9Il96LU9DZTgxWEVlU0dWYkZOTTRtOGdRIiBlbGVtZW50TXVsdGlwbGljaXR5PSItMSIgbmFtZT0iTXVsdGlwbGUgVHJhY2UiIHNlY3Rpb25zPSJfMngzT1VzMVhFZVNHVmJGTk00bThnUSIgYXV0b21hdGljQ29udGV4dD0idHJ1ZSIgZGF0YWNvbnRleHRzPSJfei1PRHlNMVhFZVNHVmJGTk00bThnUSI+DQorICAgIDxjb25zdHJhaW50cyB4c2k6dHlwZT0iY29uc3RyYWludHM6U2ltcGxlQ29uc3RyYWludCIgeG1pOmlkPSJfei1PQ2ZNMVhFZVNHVmJGTk00bThnUSIgbmFtZT0iaXNNdWx0aXBsZVRyYWNlIj4NCisgICAgICA8Y29uc3RyYWludFR5cGUgaHJlZj0icHBlOi9lbnZpcm9ubWVudC9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQudWkvcmVzb3VyY2VzL1N5c01MMS40Q29uc3RyYWludEVudmlyb25tZW50LnhtaSMvL0Bjb25zdHJhaW50VHlwZXMuMCIvPg0KKyAgICAgIDxwcm9wZXJ0aWVzIHhzaTp0eXBlPSJjb25zdHJhaW50czpWYWx1ZVByb3BlcnR5IiB4bWk6aWQ9Il96LU9DZmMxWEVlU0dWYkZOTTRtOGdRIiBuYW1lPSJzdGVyZW90eXBlTmFtZSIgdmFsdWU9IlN5c01MOjpSZXF1aXJlbWVudHM6OlRyYWNlIi8+DQorICAgIDwvY29uc3RyYWludHM+DQorICA8L3ZpZXdzPg0KKyAgPHZpZXdzIHhtaTppZD0iX3otT0NmczFYRWVTR1ZiRk5NNG04Z1EiIG5hbWU9IlNpbmdsZSBDb3B5IiBzZWN0aW9ucz0iXzJ4M09VODFYRWVTR1ZiRk5NNG04Z1EiIGF1dG9tYXRpY0NvbnRleHQ9InRydWUiIGRhdGFjb250ZXh0cz0iX3otT0R5YzFYRWVTR1ZiRk5NNG04Z1EiPg0KKyAgICA8Y29uc3RyYWludHMgeHNpOnR5cGU9ImNvbnN0cmFpbnRzOlNpbXBsZUNvbnN0cmFpbnQiIHhtaTppZD0iX3otT0NmODFYRWVTR1ZiRk5NNG04Z1EiIG5hbWU9ImlzU2luZ2xlQ29weSI+DQorICAgICAgPGNvbnN0cmFpbnRUeXBlIGhyZWY9InBwZTovZW52aXJvbm1lbnQvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnVpL3Jlc291cmNlcy9TeXNNTDEuNENvbnN0cmFpbnRFbnZpcm9ubWVudC54bWkjLy9AY29uc3RyYWludFR5cGVzLjAiLz4NCisgICAgICA8cHJvcGVydGllcyB4c2k6dHlwZT0iY29uc3RyYWludHM6VmFsdWVQcm9wZXJ0eSIgeG1pOmlkPSJfei1PQ2dNMVhFZVNHVmJGTk00bThnUSIgbmFtZT0ic3RlcmVvdHlwZU5hbWUiIHZhbHVlPSJTeXNNTDo6UmVxdWlyZW1lbnRzOjpDb3B5Ii8+DQorICAgIDwvY29uc3RyYWludHM+DQorICA8L3ZpZXdzPg0KKyAgPHZpZXdzIHhtaTppZD0iX3otT0NnYzFYRWVTR1ZiRk5NNG04Z1EiIGVsZW1lbnRNdWx0aXBsaWNpdHk9Ii0xIiBuYW1lPSJNdWx0aXBsZSBDb3B5IiBzZWN0aW9ucz0iXzJ4MzFZTTFYRWVTR1ZiRk5NNG04Z1EiIGF1dG9tYXRpY0NvbnRleHQ9InRydWUiIGRhdGFjb250ZXh0cz0iX3otT0R5YzFYRWVTR1ZiRk5NNG04Z1EiPg0KKyAgICA8Y29uc3RyYWludHMgeHNpOnR5cGU9ImNvbnN0cmFpbnRzOlNpbXBsZUNvbnN0cmFpbnQiIHhtaTppZD0iX3otT0NnczFYRWVTR1ZiRk5NNG04Z1EiIG5hbWU9ImlzTXVsdGlwbGVDb3B5Ij4NCisgICAgICA8Y29uc3RyYWludFR5cGUgaHJlZj0icHBlOi9lbnZpcm9ubWVudC9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQudWkvcmVzb3VyY2VzL1N5c01MMS40Q29uc3RyYWludEVudmlyb25tZW50LnhtaSMvL0Bjb25zdHJhaW50VHlwZXMuMCIvPg0KKyAgICAgIDxwcm9wZXJ0aWVzIHhzaTp0eXBlPSJjb25zdHJhaW50czpWYWx1ZVByb3BlcnR5IiB4bWk6aWQ9Il96LU9DZzgxWEVlU0dWYkZOTTRtOGdRIiBuYW1lPSJzdGVyZW90eXBlTmFtZSIgdmFsdWU9IlN5c01MOjpSZXF1aXJlbWVudHM6OkNvcHkiLz4NCisgICAgPC9jb25zdHJhaW50cz4NCisgIDwvdmlld3M+DQorICA8dmlld3MgeG1pOmlkPSJfei1PQ2hNMVhFZVNHVmJGTk00bThnUSIgbmFtZT0iU2luZ2xlIFZlcmlmeSIgc2VjdGlvbnM9Il8yeDMxWWMxWEVlU0dWYkZOTTRtOGdRIiBhdXRvbWF0aWNDb250ZXh0PSJ0cnVlIiBkYXRhY29udGV4dHM9Il96LU9EeXMxWEVlU0dWYkZOTTRtOGdRIj4NCisgICAgPGNvbnN0cmFpbnRzIHhzaTp0eXBlPSJjb25zdHJhaW50czpTaW1wbGVDb25zdHJhaW50IiB4bWk6aWQ9Il96LU9DaGMxWEVlU0dWYkZOTTRtOGdRIiBuYW1lPSJpc1NpbmdsZVZlcmlmeSI+DQorICAgICAgPGNvbnN0cmFpbnRUeXBlIGhyZWY9InBwZTovZW52aXJvbm1lbnQvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnVpL3Jlc291cmNlcy9TeXNNTDEuNENvbnN0cmFpbnRFbnZpcm9ubWVudC54bWkjLy9AY29uc3RyYWludFR5cGVzLjAiLz4NCisgICAgICA8cHJvcGVydGllcyB4c2k6dHlwZT0iY29uc3RyYWludHM6VmFsdWVQcm9wZXJ0eSIgeG1pOmlkPSJfei1PQ2hzMVhFZVNHVmJGTk00bThnUSIgbmFtZT0ic3RlcmVvdHlwZU5hbWUiIHZhbHVlPSJTeXNNTDo6UmVxdWlyZW1lbnRzOjpWZXJpZnkiLz4NCisgICAgPC9jb25zdHJhaW50cz4NCisgIDwvdmlld3M+DQorICA8dmlld3MgeG1pOmlkPSJfei1PQ2g4MVhFZVNHVmJGTk00bThnUSIgZWxlbWVudE11bHRpcGxpY2l0eT0iLTEiIG5hbWU9Ik11bHRpcGxlIFZlcmlmeSIgc2VjdGlvbnM9Il8yeDMxWXMxWEVlU0dWYkZOTTRtOGdRIiBhdXRvbWF0aWNDb250ZXh0PSJ0cnVlIiBkYXRhY29udGV4dHM9Il96LU9EeXMxWEVlU0dWYkZOTTRtOGdRIj4NCisgICAgPGNvbnN0cmFpbnRzIHhzaTp0eXBlPSJjb25zdHJhaW50czpTaW1wbGVDb25zdHJhaW50IiB4bWk6aWQ9Il96LU9DaU0xWEVlU0dWYkZOTTRtOGdRIiBuYW1lPSJpc011bHRpcGxlVmVyaWZ5Ij4NCisgICAgICA8Y29uc3RyYWludFR5cGUgaHJlZj0icHBlOi9lbnZpcm9ubWVudC9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQudWkvcmVzb3VyY2VzL1N5c01MMS40Q29uc3RyYWludEVudmlyb25tZW50LnhtaSMvL0Bjb25zdHJhaW50VHlwZXMuMCIvPg0KKyAgICAgIDxwcm9wZXJ0aWVzIHhzaTp0eXBlPSJjb25zdHJhaW50czpWYWx1ZVByb3BlcnR5IiB4bWk6aWQ9Il96LU9DaWMxWEVlU0dWYkZOTTRtOGdRIiBuYW1lPSJzdGVyZW90eXBlTmFtZSIgdmFsdWU9IlN5c01MOjpSZXF1aXJlbWVudHM6OlZlcmlmeSIvPg0KKyAgICA8L2NvbnN0cmFpbnRzPg0KKyAgPC92aWV3cz4NCisgIDx2aWV3cyB4bWk6aWQ9Il96LU9DaXMxWEVlU0dWYkZOTTRtOGdRIiBuYW1lPSJTaW5nbGUgVGVzdENhc2UiIHNlY3Rpb25zPSJfMng0Y2NNMVhFZVNHVmJGTk00bThnUSIgYXV0b21hdGljQ29udGV4dD0idHJ1ZSIgZGF0YWNvbnRleHRzPSJfei1PRHZNMVhFZVNHVmJGTk00bThnUSI+DQorICAgIDxjb25zdHJhaW50cyB4c2k6dHlwZT0iY29uc3RyYWludHM6U2ltcGxlQ29uc3RyYWludCIgeG1pOmlkPSJfei1PQ2k4MVhFZVNHVmJGTk00bThnUSIgbmFtZT0iaXNTaW5nbGVUZXN0Q2FzZSI+DQorICAgICAgPGNvbnN0cmFpbnRUeXBlIGhyZWY9InBwZTovZW52aXJvbm1lbnQvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnVpL3Jlc291cmNlcy9TeXNNTDEuNENvbnN0cmFpbnRFbnZpcm9ubWVudC54bWkjLy9AY29uc3RyYWludFR5cGVzLjAiLz4NCisgICAgICA8cHJvcGVydGllcyB4c2k6dHlwZT0iY29uc3RyYWludHM6VmFsdWVQcm9wZXJ0eSIgeG1pOmlkPSJfei1PQ2pNMVhFZVNHVmJGTk00bThnUSIgbmFtZT0ic3RlcmVvdHlwZU5hbWUiIHZhbHVlPSJTeXNNTDo6UmVxdWlyZW1lbnRzOjpUZXN0Q2FzZSIvPg0KKyAgICA8L2NvbnN0cmFpbnRzPg0KKyAgPC92aWV3cz4NCisgIDx2aWV3cyB4bWk6aWQ9Il96LU9DamMxWEVlU0dWYkZOTTRtOGdRIiBlbGVtZW50TXVsdGlwbGljaXR5PSItMSIgbmFtZT0iTXVsdGlwbGUgVGVzdENhc2UiIHNlY3Rpb25zPSJfMng0Y2NjMVhFZVNHVmJGTk00bThnUSIgYXV0b21hdGljQ29udGV4dD0idHJ1ZSIgZGF0YWNvbnRleHRzPSJfei1PRHZNMVhFZVNHVmJGTk00bThnUSI+DQorICAgIDxjb25zdHJhaW50cyB4c2k6dHlwZT0iY29uc3RyYWludHM6U2ltcGxlQ29uc3RyYWludCIgeG1pOmlkPSJfei1PQ2pzMVhFZVNHVmJGTk00bThnUSIgbmFtZT0iaXNNdWx0aXBsZVRlc3RDYXNlIj4NCisgICAgICA8Y29uc3RyYWludFR5cGUgaHJlZj0icHBlOi9lbnZpcm9ubWVudC9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQudWkvcmVzb3VyY2VzL1N5c01MMS40Q29uc3RyYWludEVudmlyb25tZW50LnhtaSMvL0Bjb25zdHJhaW50VHlwZXMuMCIvPg0KKyAgICAgIDxwcm9wZXJ0aWVzIHhzaTp0eXBlPSJjb25zdHJhaW50czpWYWx1ZVByb3BlcnR5IiB4bWk6aWQ9Il96LU9DajgxWEVlU0dWYkZOTTRtOGdRIiBuYW1lPSJzdGVyZW90eXBlTmFtZSIgdmFsdWU9IlN5c01MOjpSZXF1aXJlbWVudHM6OlRlc3RDYXNlIi8+DQorICAgIDwvY29uc3RyYWludHM+DQorICA8L3ZpZXdzPg0KKyAgPHZpZXdzIHhtaTppZD0iX3otT0NrTTFYRWVTR1ZiRk5NNG04Z1EiIG5hbWU9IlNpbmdsZSBSZWZpbmUiIHNlY3Rpb25zPSJfMng0Y2NzMVhFZVNHVmJGTk00bThnUSIgYXV0b21hdGljQ29udGV4dD0idHJ1ZSIgZGF0YWNvbnRleHRzPSJfei1PRHZjMVhFZVNHVmJGTk00bThnUSI+DQorICAgIDxjb25zdHJhaW50cyB4c2k6dHlwZT0iY29uc3RyYWludHM6U2ltcGxlQ29uc3RyYWludCIgeG1pOmlkPSJfei1PQ2tjMVhFZVNHVmJGTk00bThnUSIgbmFtZT0iaXNTaW5nbGVSZWZpbmUiPg0KKyAgICAgIDxjb25zdHJhaW50VHlwZSBocmVmPSJwcGU6L2Vudmlyb25tZW50L29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC51aS9yZXNvdXJjZXMvU3lzTUwxLjRDb25zdHJhaW50RW52aXJvbm1lbnQueG1pIy8vQGNvbnN0cmFpbnRUeXBlcy4wIi8+DQorICAgICAgPHByb3BlcnRpZXMgeHNpOnR5cGU9ImNvbnN0cmFpbnRzOlZhbHVlUHJvcGVydHkiIHhtaTppZD0iX3otT0NrczFYRWVTR1ZiRk5NNG04Z1EiIG5hbWU9InN0ZXJlb3R5cGVOYW1lIiB2YWx1ZT0iU3lzTUw6OlJlcXVpcmVtZW50czo6UmVmaW5lIi8+DQorICAgIDwvY29uc3RyYWludHM+DQorICA8L3ZpZXdzPg0KKyAgPHZpZXdzIHhtaTppZD0iX3otT0NrODFYRWVTR1ZiRk5NNG04Z1EiIGVsZW1lbnRNdWx0aXBsaWNpdHk9Ii0xIiBuYW1lPSJNdWx0aXBsZSBSZWZpbmUiIHNlY3Rpb25zPSJfMng0Y2M4MVhFZVNHVmJGTk00bThnUSIgYXV0b21hdGljQ29udGV4dD0idHJ1ZSIgZGF0YWNvbnRleHRzPSJfei1PRHZjMVhFZVNHVmJGTk00bThnUSI+DQorICAgIDxjb25zdHJhaW50cyB4c2k6dHlwZT0iY29uc3RyYWludHM6U2ltcGxlQ29uc3RyYWludCIgeG1pOmlkPSJfei1PQ2xNMVhFZVNHVmJGTk00bThnUSIgbmFtZT0iaXNNdWx0aXBsZVJlZmluZSI+DQorICAgICAgPGNvbnN0cmFpbnRUeXBlIGhyZWY9InBwZTovZW52aXJvbm1lbnQvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnVpL3Jlc291cmNlcy9TeXNNTDEuNENvbnN0cmFpbnRFbnZpcm9ubWVudC54bWkjLy9AY29uc3RyYWludFR5cGVzLjAiLz4NCisgICAgICA8cHJvcGVydGllcyB4c2k6dHlwZT0iY29uc3RyYWludHM6VmFsdWVQcm9wZXJ0eSIgeG1pOmlkPSJfei1PQ2xjMVhFZVNHVmJGTk00bThnUSIgbmFtZT0ic3RlcmVvdHlwZU5hbWUiIHZhbHVlPSJTeXNNTDo6UmVxdWlyZW1lbnRzOjpSZWZpbmUiLz4NCisgICAgPC9jb25zdHJhaW50cz4NCisgIDwvdmlld3M+DQorICA8dmlld3MgeG1pOmlkPSJfei1PQ2xzMVhFZVNHVmJGTk00bThnUSIgbmFtZT0iU2luZ2xlIFNhdGlzZnkiIHNlY3Rpb25zPSJfMng1RGdNMVhFZVNHVmJGTk00bThnUSIgYXV0b21hdGljQ29udGV4dD0idHJ1ZSIgZGF0YWNvbnRleHRzPSJfei1PRHU4MVhFZVNHVmJGTk00bThnUSI+DQorICAgIDxjb25zdHJhaW50cyB4c2k6dHlwZT0iY29uc3RyYWludHM6U2ltcGxlQ29uc3RyYWludCIgeG1pOmlkPSJfei1PQ2w4MVhFZVNHVmJGTk00bThnUSIgbmFtZT0iaXNTaW5nbGVTYXRpc2Z5Ij4NCisgICAgICA8Y29uc3RyYWludFR5cGUgaHJlZj0icHBlOi9lbnZpcm9ubWVudC9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQudWkvcmVzb3VyY2VzL1N5c01MMS40Q29uc3RyYWludEVudmlyb25tZW50LnhtaSMvL0Bjb25zdHJhaW50VHlwZXMuMCIvPg0KKyAgICAgIDxwcm9wZXJ0aWVzIHhzaTp0eXBlPSJjb25zdHJhaW50czpWYWx1ZVByb3BlcnR5IiB4bWk6aWQ9Il96LU9DbU0xWEVlU0dWYkZOTTRtOGdRIiBuYW1lPSJzdGVyZW90eXBlTmFtZSIgdmFsdWU9IlN5c01MOjpSZXF1aXJlbWVudHM6OlNhdGlzZnkiLz4NCisgICAgPC9jb25zdHJhaW50cz4NCisgIDwvdmlld3M+DQorICA8dmlld3MgeG1pOmlkPSJfei1PQ21jMVhFZVNHVmJGTk00bThnUSIgZWxlbWVudE11bHRpcGxpY2l0eT0iLTEiIG5hbWU9Ik11bHRpcGxlIFNhdGlzZnkiIHNlY3Rpb25zPSJfMng1RGdjMVhFZVNHVmJGTk00bThnUSIgYXV0b21hdGljQ29udGV4dD0idHJ1ZSIgZGF0YWNvbnRleHRzPSJfei1PRHU4MVhFZVNHVmJGTk00bThnUSI+DQorICAgIDxjb25zdHJhaW50cyB4c2k6dHlwZT0iY29uc3RyYWludHM6U2ltcGxlQ29uc3RyYWludCIgeG1pOmlkPSJfei1PQ21zMVhFZVNHVmJGTk00bThnUSIgbmFtZT0iaXNNdWx0aXBsZVNhdGlzZnkiPg0KKyAgICAgIDxjb25zdHJhaW50VHlwZSBocmVmPSJwcGU6L2Vudmlyb25tZW50L29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC51aS9yZXNvdXJjZXMvU3lzTUwxLjRDb25zdHJhaW50RW52aXJvbm1lbnQueG1pIy8vQGNvbnN0cmFpbnRUeXBlcy4wIi8+DQorICAgICAgPHByb3BlcnRpZXMgeHNpOnR5cGU9ImNvbnN0cmFpbnRzOlZhbHVlUHJvcGVydHkiIHhtaTppZD0iX3otT0NtODFYRWVTR1ZiRk5NNG04Z1EiIG5hbWU9InN0ZXJlb3R5cGVOYW1lIiB2YWx1ZT0iU3lzTUw6OlJlcXVpcmVtZW50czo6U2F0aXNmeSIvPg0KKyAgICA8L2NvbnN0cmFpbnRzPg0KKyAgPC92aWV3cz4NCisgIDx2aWV3cyB4bWk6aWQ9Il96LU9Dbk0xWEVlU0dWYkZOTTRtOGdRIiBuYW1lPSJTaW5nbGUgRGVyaXZlUmVxdCIgc2VjdGlvbnM9Il8yeDVEZ3MxWEVlU0dWYkZOTTRtOGdRIiBhdXRvbWF0aWNDb250ZXh0PSJ0cnVlIiBkYXRhY29udGV4dHM9Il96LU9EdXMxWEVlU0dWYkZOTTRtOGdRIj4NCisgICAgPGNvbnN0cmFpbnRzIHhzaTp0eXBlPSJjb25zdHJhaW50czpTaW1wbGVDb25zdHJhaW50IiB4bWk6aWQ9Il96LU9DbmMxWEVlU0dWYkZOTTRtOGdRIiBuYW1lPSJpc1NpbmdsZURlcml2ZVJlcXQiPg0KKyAgICAgIDxjb25zdHJhaW50VHlwZSBocmVmPSJwcGU6L2Vudmlyb25tZW50L29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC51aS9yZXNvdXJjZXMvU3lzTUwxLjRDb25zdHJhaW50RW52aXJvbm1lbnQueG1pIy8vQGNvbnN0cmFpbnRUeXBlcy4wIi8+DQorICAgICAgPHByb3BlcnRpZXMgeHNpOnR5cGU9ImNvbnN0cmFpbnRzOlZhbHVlUHJvcGVydHkiIHhtaTppZD0iX3otT0NuczFYRWVTR1ZiRk5NNG04Z1EiIG5hbWU9InN0ZXJlb3R5cGVOYW1lIiB2YWx1ZT0iU3lzTUw6OlJlcXVpcmVtZW50czo6RGVyaXZlUmVxdCIvPg0KKyAgICA8L2NvbnN0cmFpbnRzPg0KKyAgPC92aWV3cz4NCisgIDx2aWV3cyB4bWk6aWQ9Il96LU9DbjgxWEVlU0dWYkZOTTRtOGdRIiBlbGVtZW50TXVsdGlwbGljaXR5PSItMSIgbmFtZT0iTXVsdGlwbGUgRGVyaXZlUmVxdCIgc2VjdGlvbnM9Il8yeDVEZzgxWEVlU0dWYkZOTTRtOGdRIiBhdXRvbWF0aWNDb250ZXh0PSJ0cnVlIiBkYXRhY29udGV4dHM9Il96LU9EdXMxWEVlU0dWYkZOTTRtOGdRIj4NCisgICAgPGNvbnN0cmFpbnRzIHhzaTp0eXBlPSJjb25zdHJhaW50czpTaW1wbGVDb25zdHJhaW50IiB4bWk6aWQ9Il96LU9Db00xWEVlU0dWYkZOTTRtOGdRIiBuYW1lPSJpc011bHRpcGxlRGVyaXZlUmVxdCI+DQorICAgICAgPGNvbnN0cmFpbnRUeXBlIGhyZWY9InBwZTovZW52aXJvbm1lbnQvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnVpL3Jlc291cmNlcy9TeXNNTDEuNENvbnN0cmFpbnRFbnZpcm9ubWVudC54bWkjLy9AY29uc3RyYWludFR5cGVzLjAiLz4NCisgICAgICA8cHJvcGVydGllcyB4c2k6dHlwZT0iY29uc3RyYWludHM6VmFsdWVQcm9wZXJ0eSIgeG1pOmlkPSJfei1PQ29jMVhFZVNHVmJGTk00bThnUSIgbmFtZT0ic3RlcmVvdHlwZU5hbWUiIHZhbHVlPSJTeXNNTDo6UmVxdWlyZW1lbnRzOjpEZXJpdmVSZXF0Ii8+DQorICAgIDwvY29uc3RyYWludHM+DQorICA8L3ZpZXdzPg0KKyAgPHZpZXdzIHhtaTppZD0iX3otT0NvczFYRWVTR1ZiRk5NNG04Z1EiIG5hbWU9IlNpbmdsZSBDb25zdHJhaW50QmxvY2siIHNlY3Rpb25zPSJfMng1RGhNMVhFZVNHVmJGTk00bThnUSIgYXV0b21hdGljQ29udGV4dD0idHJ1ZSIgZGF0YWNvbnRleHRzPSJfei1PRGI4MVhFZVNHVmJGTk00bThnUSI+DQorICAgIDxjb25zdHJhaW50cyB4c2k6dHlwZT0iY29uc3RyYWludHM6U2ltcGxlQ29uc3RyYWludCIgeG1pOmlkPSJfei1PQ284MVhFZVNHVmJGTk00bThnUSIgbmFtZT0iaXNTaW5nbGVDb25zdHJhaW50QmxvY2siPg0KKyAgICAgIDxjb25zdHJhaW50VHlwZSBocmVmPSJwcGU6L2Vudmlyb25tZW50L29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC51aS9yZXNvdXJjZXMvU3lzTUwxLjRDb25zdHJhaW50RW52aXJvbm1lbnQueG1pIy8vQGNvbnN0cmFpbnRUeXBlcy4wIi8+DQorICAgICAgPHByb3BlcnRpZXMgeHNpOnR5cGU9ImNvbnN0cmFpbnRzOlZhbHVlUHJvcGVydHkiIHhtaTppZD0iX3otT0NwTTFYRWVTR1ZiRk5NNG04Z1EiIG5hbWU9InN0ZXJlb3R5cGVOYW1lIiB2YWx1ZT0iU3lzTUw6OkNvbnN0cmFpbnRCbG9ja3M6OkNvbnN0cmFpbnRCbG9jayIvPg0KKyAgICA8L2NvbnN0cmFpbnRzPg0KKyAgPC92aWV3cz4NCisgIDx2aWV3cyB4bWk6aWQ9Il96LU9DcGMxWEVlU0dWYkZOTTRtOGdRIiBlbGVtZW50TXVsdGlwbGljaXR5PSItMSIgbmFtZT0iTXVsdGlwbGUgQ29uc3RyYWludEJsb2NrIiBzZWN0aW9ucz0iXzJ4NXFrTTFYRWVTR1ZiRk5NNG04Z1EiIGF1dG9tYXRpY0NvbnRleHQ9InRydWUiIGRhdGFjb250ZXh0cz0iX3otT0RiODFYRWVTR1ZiRk5NNG04Z1EiPg0KKyAgICA8Y29uc3RyYWludHMgeHNpOnR5cGU9ImNvbnN0cmFpbnRzOlNpbXBsZUNvbnN0cmFpbnQiIHhtaTppZD0iX3otT0NwczFYRWVTR1ZiRk5NNG04Z1EiIG5hbWU9ImlzTXVsdGlwbGVDb25zdHJhaW50QmxvY2siPg0KKyAgICAgIDxjb25zdHJhaW50VHlwZSBocmVmPSJwcGU6L2Vudmlyb25tZW50L29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC51aS9yZXNvdXJjZXMvU3lzTUwxLjRDb25zdHJhaW50RW52aXJvbm1lbnQueG1pIy8vQGNvbnN0cmFpbnRUeXBlcy4wIi8+DQorICAgICAgPHByb3BlcnRpZXMgeHNpOnR5cGU9ImNvbnN0cmFpbnRzOlZhbHVlUHJvcGVydHkiIHhtaTppZD0iX3otT0NwODFYRWVTR1ZiRk5NNG04Z1EiIG5hbWU9InN0ZXJlb3R5cGVOYW1lIiB2YWx1ZT0iU3lzTUw6OkNvbnN0cmFpbnRCbG9ja3M6OkNvbnN0cmFpbnRCbG9jayIvPg0KKyAgICA8L2NvbnN0cmFpbnRzPg0KKyAgPC92aWV3cz4NCisgIDx2aWV3cyB4bWk6aWQ9Il96LU9DcU0xWEVlU0dWYkZOTTRtOGdRIiBuYW1lPSJTaW5nbGUgRGlyZWN0ZWRGZWF0dXJlIiBzZWN0aW9ucz0iXzJ4NXFrYzFYRWVTR1ZiRk5NNG04Z1EiIGF1dG9tYXRpY0NvbnRleHQ9InRydWUiIGRhdGFjb250ZXh0cz0iX3otT0RjODFYRWVTR1ZiRk5NNG04Z1EiPg0KKyAgICA8Y29uc3RyYWludHMgeHNpOnR5cGU9ImNvbnN0cmFpbnRzOlNpbXBsZUNvbnN0cmFpbnQiIHhtaTppZD0iX3otT0NxYzFYRWVTR1ZiRk5NNG04Z1EiIG5hbWU9ImlzU2luZ2xlRGlyZWN0ZWRGZWF0dXJlIj4NCisgICAgICA8Y29uc3RyYWludFR5cGUgaHJlZj0icHBlOi9lbnZpcm9ubWVudC9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQudWkvcmVzb3VyY2VzL1N5c01MMS40Q29uc3RyYWludEVudmlyb25tZW50LnhtaSMvL0Bjb25zdHJhaW50VHlwZXMuMCIvPg0KKyAgICAgIDxwcm9wZXJ0aWVzIHhzaTp0eXBlPSJjb25zdHJhaW50czpWYWx1ZVByb3BlcnR5IiB4bWk6aWQ9Il96LU9DcXMxWEVlU0dWYkZOTTRtOGdRIiBuYW1lPSJzdGVyZW90eXBlTmFtZSIgdmFsdWU9IlN5c01MOjpQb3J0c2FuZEZsb3dzOjpEaXJlY3RlZEZlYXR1cmUiLz4NCisgICAgPC9jb25zdHJhaW50cz4NCisgIDwvdmlld3M+DQorICA8dmlld3MgeG1pOmlkPSJfei1PQ3E4MVhFZVNHVmJGTk00bThnUSIgZWxlbWVudE11bHRpcGxpY2l0eT0iLTEiIG5hbWU9Ik11bHRpcGxlIERpcmVjdGVkRmVhdHVyZSIgc2VjdGlvbnM9Il8yeDZSb00xWEVlU0dWYkZOTTRtOGdRIiBhdXRvbWF0aWNDb250ZXh0PSJ0cnVlIiBkYXRhY29udGV4dHM9Il96LU9EYzgxWEVlU0dWYkZOTTRtOGdRIj4NCisgICAgPGNvbnN0cmFpbnRzIHhzaTp0eXBlPSJjb25zdHJhaW50czpTaW1wbGVDb25zdHJhaW50IiB4bWk6aWQ9Il96LU9Dck0xWEVlU0dWYkZOTTRtOGdRIiBuYW1lPSJpc011bHRpcGxlRGlyZWN0ZWRGZWF0dXJlIj4NCisgICAgICA8Y29uc3RyYWludFR5cGUgaHJlZj0icHBlOi9lbnZpcm9ubWVudC9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQudWkvcmVzb3VyY2VzL1N5c01MMS40Q29uc3RyYWludEVudmlyb25tZW50LnhtaSMvL0Bjb25zdHJhaW50VHlwZXMuMCIvPg0KKyAgICAgIDxwcm9wZXJ0aWVzIHhzaTp0eXBlPSJjb25zdHJhaW50czpWYWx1ZVByb3BlcnR5IiB4bWk6aWQ9Il96LU9DcmMxWEVlU0dWYkZOTTRtOGdRIiBuYW1lPSJzdGVyZW90eXBlTmFtZSIgdmFsdWU9IlN5c01MOjpQb3J0c2FuZEZsb3dzOjpEaXJlY3RlZEZlYXR1cmUiLz4NCisgICAgPC9jb25zdHJhaW50cz4NCisgIDwvdmlld3M+DQorICA8dmlld3MgeG1pOmlkPSJfei1PQ3JzMVhFZVNHVmJGTk00bThnUSIgbmFtZT0iU2luZ2xlIEZsb3dQcm9wZXJ0eSIgc2VjdGlvbnM9Il8yeDZSb2MxWEVlU0dWYkZOTTRtOGdRIiBhdXRvbWF0aWNDb250ZXh0PSJ0cnVlIiBkYXRhY29udGV4dHM9Il96LU9EY2MxWEVlU0dWYkZOTTRtOGdRIj4NCisgICAgPGNvbnN0cmFpbnRzIHhzaTp0eXBlPSJjb25zdHJhaW50czpTaW1wbGVDb25zdHJhaW50IiB4bWk6aWQ9Il96LU9DcjgxWEVlU0dWYkZOTTRtOGdRIiBuYW1lPSJpc1NpbmdsZUZsb3dQcm9wZXJ0eSI+DQorICAgICAgPGNvbnN0cmFpbnRUeXBlIGhyZWY9InBwZTovZW52aXJvbm1lbnQvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnVpL3Jlc291cmNlcy9TeXNNTDEuNENvbnN0cmFpbnRFbnZpcm9ubWVudC54bWkjLy9AY29uc3RyYWludFR5cGVzLjAiLz4NCisgICAgICA8cHJvcGVydGllcyB4c2k6dHlwZT0iY29uc3RyYWludHM6VmFsdWVQcm9wZXJ0eSIgeG1pOmlkPSJfei1PQ3NNMVhFZVNHVmJGTk00bThnUSIgbmFtZT0ic3RlcmVvdHlwZU5hbWUiIHZhbHVlPSJTeXNNTDo6UG9ydHNhbmRGbG93czo6Rmxvd1Byb3BlcnR5Ii8+DQorICAgIDwvY29uc3RyYWludHM+DQorICA8L3ZpZXdzPg0KKyAgPHZpZXdzIHhtaTppZD0iX3otT0NzYzFYRWVTR1ZiRk5NNG04Z1EiIGVsZW1lbnRNdWx0aXBsaWNpdHk9Ii0xIiBuYW1lPSJNdWx0aXBsZSBGbG93UHJvcGVydHkiIHNlY3Rpb25zPSJfMng2NHNNMVhFZVNHVmJGTk00bThnUSIgYXV0b21hdGljQ29udGV4dD0idHJ1ZSIgZGF0YWNvbnRleHRzPSJfei1PRGNjMVhFZVNHVmJGTk00bThnUSI+DQorICAgIDxjb25zdHJhaW50cyB4c2k6dHlwZT0iY29uc3RyYWludHM6U2ltcGxlQ29uc3RyYWludCIgeG1pOmlkPSJfei1PQ3NzMVhFZVNHVmJGTk00bThnUSIgbmFtZT0iaXNNdWx0aXBsZUZsb3dQcm9wZXJ0eSI+DQorICAgICAgPGNvbnN0cmFpbnRUeXBlIGhyZWY9InBwZTovZW52aXJvbm1lbnQvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnVpL3Jlc291cmNlcy9TeXNNTDEuNENvbnN0cmFpbnRFbnZpcm9ubWVudC54bWkjLy9AY29uc3RyYWludFR5cGVzLjAiLz4NCisgICAgICA8cHJvcGVydGllcyB4c2k6dHlwZT0iY29uc3RyYWludHM6VmFsdWVQcm9wZXJ0eSIgeG1pOmlkPSJfei1PQ3M4MVhFZVNHVmJGTk00bThnUSIgbmFtZT0ic3RlcmVvdHlwZU5hbWUiIHZhbHVlPSJTeXNNTDo6UG9ydHNhbmRGbG93czo6Rmxvd1Byb3BlcnR5Ii8+DQorICAgIDwvY29uc3RyYWludHM+DQorICA8L3ZpZXdzPg0KKyAgPHZpZXdzIHhtaTppZD0iX3otT0N0TTFYRWVTR1ZiRk5NNG04Z1EiIG5hbWU9IlNpbmdsZSBBY2NlcHRDaGFuZ2VTdHJ1Y3R1cmFsRmVhdHVyZUV2ZW50QWN0aW9uIiBzZWN0aW9ucz0iXzJ4NjRzYzFYRWVTR1ZiRk5NNG04Z1EiIGF1dG9tYXRpY0NvbnRleHQ9InRydWUiIGRhdGFjb250ZXh0cz0iX3otT0RmTTFYRWVTR1ZiRk5NNG04Z1EiPg0KKyAgICA8Y29uc3RyYWludHMgeHNpOnR5cGU9ImNvbnN0cmFpbnRzOlNpbXBsZUNvbnN0cmFpbnQiIHhtaTppZD0iX3otT0N0YzFYRWVTR1ZiRk5NNG04Z1EiIG5hbWU9ImlzU2luZ2xlQWNjZXB0Q2hhbmdlU3RydWN0dXJhbEZlYXR1cmVFdmVudEFjdGlvbiI+DQorICAgICAgPGNvbnN0cmFpbnRUeXBlIGhyZWY9InBwZTovZW52aXJvbm1lbnQvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnVpL3Jlc291cmNlcy9TeXNNTDEuNENvbnN0cmFpbnRFbnZpcm9ubWVudC54bWkjLy9AY29uc3RyYWludFR5cGVzLjAiLz4NCisgICAgICA8cHJvcGVydGllcyB4c2k6dHlwZT0iY29uc3RyYWludHM6VmFsdWVQcm9wZXJ0eSIgeG1pOmlkPSJfei1PQ3RzMVhFZVNHVmJGTk00bThnUSIgbmFtZT0ic3RlcmVvdHlwZU5hbWUiIHZhbHVlPSJTeXNNTDo6UG9ydHNhbmRGbG93czo6QWNjZXB0Q2hhbmdlU3RydWN0dXJhbEZlYXR1cmVFdmVudEFjdGlvbiIvPg0KKyAgICA8L2NvbnN0cmFpbnRzPg0KKyAgPC92aWV3cz4NCisgIDx2aWV3cyB4bWk6aWQ9Il96LU9DdDgxWEVlU0dWYkZOTTRtOGdRIiBlbGVtZW50TXVsdGlwbGljaXR5PSItMSIgbmFtZT0iTXVsdGlwbGUgQWNjZXB0Q2hhbmdlU3RydWN0dXJhbEZlYXR1cmVFdmVudEFjdGlvbiIgc2VjdGlvbnM9Il8yeDY0c3MxWEVlU0dWYkZOTTRtOGdRIiBhdXRvbWF0aWNDb250ZXh0PSJ0cnVlIiBkYXRhY29udGV4dHM9Il96LU9EZk0xWEVlU0dWYkZOTTRtOGdRIj4NCisgICAgPGNvbnN0cmFpbnRzIHhzaTp0eXBlPSJjb25zdHJhaW50czpTaW1wbGVDb25zdHJhaW50IiB4bWk6aWQ9Il96LU9DdU0xWEVlU0dWYkZOTTRtOGdRIiBuYW1lPSJpc011bHRpcGxlQWNjZXB0Q2hhbmdlU3RydWN0dXJhbEZlYXR1cmVFdmVudEFjdGlvbiI+DQorICAgICAgPGNvbnN0cmFpbnRUeXBlIGhyZWY9InBwZTovZW52aXJvbm1lbnQvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnVpL3Jlc291cmNlcy9TeXNNTDEuNENvbnN0cmFpbnRFbnZpcm9ubWVudC54bWkjLy9AY29uc3RyYWludFR5cGVzLjAiLz4NCisgICAgICA8cHJvcGVydGllcyB4c2k6dHlwZT0iY29uc3RyYWludHM6VmFsdWVQcm9wZXJ0eSIgeG1pOmlkPSJfei1PQ3VjMVhFZVNHVmJGTk00bThnUSIgbmFtZT0ic3RlcmVvdHlwZU5hbWUiIHZhbHVlPSJTeXNNTDo6UG9ydHNhbmRGbG93czo6QWNjZXB0Q2hhbmdlU3RydWN0dXJhbEZlYXR1cmVFdmVudEFjdGlvbiIvPg0KKyAgICA8L2NvbnN0cmFpbnRzPg0KKyAgPC92aWV3cz4NCisgIDx2aWV3cyB4bWk6aWQ9Il96LU9DdXMxWEVlU0dWYkZOTTRtOGdRIiBuYW1lPSJTaW5nbGUgVHJpZ2dlck9uTmVzdGVkUG9ydCIgc2VjdGlvbnM9Il8yeDdmd00xWEVlU0dWYkZOTTRtOGdRIiBhdXRvbWF0aWNDb250ZXh0PSJ0cnVlIiBkYXRhY29udGV4dHM9Il96LU9EZnMxWEVlU0dWYkZOTTRtOGdRIj4NCisgICAgPGNvbnN0cmFpbnRzIHhzaTp0eXBlPSJjb25zdHJhaW50czpTaW1wbGVDb25zdHJhaW50IiB4bWk6aWQ9Il96LU9DdTgxWEVlU0dWYkZOTTRtOGdRIiBuYW1lPSJpc1NpbmdsZVRyaWdnZXJPbk5lc3RlZFBvcnQiPg0KKyAgICAgIDxjb25zdHJhaW50VHlwZSBocmVmPSJwcGU6L2Vudmlyb25tZW50L29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC51aS9yZXNvdXJjZXMvU3lzTUwxLjRDb25zdHJhaW50RW52aXJvbm1lbnQueG1pIy8vQGNvbnN0cmFpbnRUeXBlcy4wIi8+DQorICAgICAgPHByb3BlcnRpZXMgeHNpOnR5cGU9ImNvbnN0cmFpbnRzOlZhbHVlUHJvcGVydHkiIHhtaTppZD0iX3otT0N2TTFYRWVTR1ZiRk5NNG04Z1EiIG5hbWU9InN0ZXJlb3R5cGVOYW1lIiB2YWx1ZT0iU3lzTUw6OlBvcnRzYW5kRmxvd3M6OlRyaWdnZXJPbk5lc3RlZFBvcnQiLz4NCisgICAgPC9jb25zdHJhaW50cz4NCisgIDwvdmlld3M+DQorICA8dmlld3MgeG1pOmlkPSJfei1PQ3ZjMVhFZVNHVmJGTk00bThnUSIgZWxlbWVudE11bHRpcGxpY2l0eT0iLTEiIG5hbWU9Ik11bHRpcGxlIFRyaWdnZXJPbk5lc3RlZFBvcnQiIHNlY3Rpb25zPSJfMng3ZndjMVhFZVNHVmJGTk00bThnUSIgYXV0b21hdGljQ29udGV4dD0idHJ1ZSIgZGF0YWNvbnRleHRzPSJfei1PRGZzMVhFZVNHVmJGTk00bThnUSI+DQorICAgIDxjb25zdHJhaW50cyB4c2k6dHlwZT0iY29uc3RyYWludHM6U2ltcGxlQ29uc3RyYWludCIgeG1pOmlkPSJfei1PQ3ZzMVhFZVNHVmJGTk00bThnUSIgbmFtZT0iaXNNdWx0aXBsZVRyaWdnZXJPbk5lc3RlZFBvcnQiPg0KKyAgICAgIDxjb25zdHJhaW50VHlwZSBocmVmPSJwcGU6L2Vudmlyb25tZW50L29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC51aS9yZXNvdXJjZXMvU3lzTUwxLjRDb25zdHJhaW50RW52aXJvbm1lbnQueG1pIy8vQGNvbnN0cmFpbnRUeXBlcy4wIi8+DQorICAgICAgPHByb3BlcnRpZXMgeHNpOnR5cGU9ImNvbnN0cmFpbnRzOlZhbHVlUHJvcGVydHkiIHhtaTppZD0iX3otT0N2ODFYRWVTR1ZiRk5NNG04Z1EiIG5hbWU9InN0ZXJlb3R5cGVOYW1lIiB2YWx1ZT0iU3lzTUw6OlBvcnRzYW5kRmxvd3M6OlRyaWdnZXJPbk5lc3RlZFBvcnQiLz4NCisgICAgPC9jb25zdHJhaW50cz4NCisgIDwvdmlld3M+DQorICA8dmlld3MgeG1pOmlkPSJfei1PQ3dNMVhFZVNHVmJGTk00bThnUSIgbmFtZT0iU2luZ2xlIEZ1bGxQb3J0IiBzZWN0aW9ucz0iXzJ4N2Z3czFYRWVTR1ZiRk5NNG04Z1EiIGF1dG9tYXRpY0NvbnRleHQ9InRydWUiIGRhdGFjb250ZXh0cz0iX3otT0RmYzFYRWVTR1ZiRk5NNG04Z1EiPg0KKyAgICA8Y29uc3RyYWludHMgeHNpOnR5cGU9ImNvbnN0cmFpbnRzOlNpbXBsZUNvbnN0cmFpbnQiIHhtaTppZD0iX3otT0N3YzFYRWVTR1ZiRk5NNG04Z1EiIG5hbWU9ImlzU2luZ2xlRnVsbFBvcnQiPg0KKyAgICAgIDxjb25zdHJhaW50VHlwZSBocmVmPSJwcGU6L2Vudmlyb25tZW50L29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC51aS9yZXNvdXJjZXMvU3lzTUwxLjRDb25zdHJhaW50RW52aXJvbm1lbnQueG1pIy8vQGNvbnN0cmFpbnRUeXBlcy4wIi8+DQorICAgICAgPHByb3BlcnRpZXMgeHNpOnR5cGU9ImNvbnN0cmFpbnRzOlZhbHVlUHJvcGVydHkiIHhtaTppZD0iX3otT0N3czFYRWVTR1ZiRk5NNG04Z1EiIG5hbWU9InN0ZXJlb3R5cGVOYW1lIiB2YWx1ZT0iU3lzTUw6OlBvcnRzYW5kRmxvd3M6OkZ1bGxQb3J0Ii8+DQorICAgIDwvY29uc3RyYWludHM+DQorICA8L3ZpZXdzPg0KKyAgPHZpZXdzIHhtaTppZD0iX3otT0N3ODFYRWVTR1ZiRk5NNG04Z1EiIGVsZW1lbnRNdWx0aXBsaWNpdHk9Ii0xIiBuYW1lPSJNdWx0aXBsZSBGdWxsUG9ydCIgc2VjdGlvbnM9Il8yeDhHME0xWEVlU0dWYkZOTTRtOGdRIiBhdXRvbWF0aWNDb250ZXh0PSJ0cnVlIiBkYXRhY29udGV4dHM9Il96LU9EZmMxWEVlU0dWYkZOTTRtOGdRIj4NCisgICAgPGNvbnN0cmFpbnRzIHhzaTp0eXBlPSJjb25zdHJhaW50czpTaW1wbGVDb25zdHJhaW50IiB4bWk6aWQ9Il96LU9DeE0xWEVlU0dWYkZOTTRtOGdRIiBuYW1lPSJpc011bHRpcGxlRnVsbFBvcnQiPg0KKyAgICAgIDxjb25zdHJhaW50VHlwZSBocmVmPSJwcGU6L2Vudmlyb25tZW50L29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC51aS9yZXNvdXJjZXMvU3lzTUwxLjRDb25zdHJhaW50RW52aXJvbm1lbnQueG1pIy8vQGNvbnN0cmFpbnRUeXBlcy4wIi8+DQorICAgICAgPHByb3BlcnRpZXMgeHNpOnR5cGU9ImNvbnN0cmFpbnRzOlZhbHVlUHJvcGVydHkiIHhtaTppZD0iX3otT0N4YzFYRWVTR1ZiRk5NNG04Z1EiIG5hbWU9InN0ZXJlb3R5cGVOYW1lIiB2YWx1ZT0iU3lzTUw6OlBvcnRzYW5kRmxvd3M6OkZ1bGxQb3J0Ii8+DQorICAgIDwvY29uc3RyYWludHM+DQorICA8L3ZpZXdzPg0KKyAgPHZpZXdzIHhtaTppZD0iX3otT0N4czFYRWVTR1ZiRk5NNG04Z1EiIG5hbWU9IlNpbmdsZSBJbnRlcmZhY2VCbG9jayIgc2VjdGlvbnM9Il8yeDh0NE0xWEVlU0dWYkZOTTRtOGdRIiBhdXRvbWF0aWNDb250ZXh0PSJ0cnVlIiBkYXRhY29udGV4dHM9Il96LU9EZ00xWEVlU0dWYkZOTTRtOGdRIj4NCisgICAgPGNvbnN0cmFpbnRzIHhzaTp0eXBlPSJjb25zdHJhaW50czpTaW1wbGVDb25zdHJhaW50IiB4bWk6aWQ9Il96LU9DeDgxWEVlU0dWYkZOTTRtOGdRIiBuYW1lPSJpc1NpbmdsZUludGVyZmFjZUJsb2NrIj4NCisgICAgICA8Y29uc3RyYWludFR5cGUgaHJlZj0icHBlOi9lbnZpcm9ubWVudC9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQudWkvcmVzb3VyY2VzL1N5c01MMS40Q29uc3RyYWludEVudmlyb25tZW50LnhtaSMvL0Bjb25zdHJhaW50VHlwZXMuMCIvPg0KKyAgICAgIDxwcm9wZXJ0aWVzIHhzaTp0eXBlPSJjb25zdHJhaW50czpWYWx1ZVByb3BlcnR5IiB4bWk6aWQ9Il96LU9DeU0xWEVlU0dWYkZOTTRtOGdRIiBuYW1lPSJzdGVyZW90eXBlTmFtZSIgdmFsdWU9IlN5c01MOjpQb3J0c2FuZEZsb3dzOjpJbnRlcmZhY2VCbG9jayIvPg0KKyAgICA8L2NvbnN0cmFpbnRzPg0KKyAgPC92aWV3cz4NCisgIDx2aWV3cyB4bWk6aWQ9Il96LU9DeWMxWEVlU0dWYkZOTTRtOGdRIiBlbGVtZW50TXVsdGlwbGljaXR5PSItMSIgbmFtZT0iTXVsdGlwbGUgSW50ZXJmYWNlQmxvY2siIHNlY3Rpb25zPSJfMng4dDRjMVhFZVNHVmJGTk00bThnUSIgYXV0b21hdGljQ29udGV4dD0idHJ1ZSIgZGF0YWNvbnRleHRzPSJfei1PRGdNMVhFZVNHVmJGTk00bThnUSI+DQorICAgIDxjb25zdHJhaW50cyB4c2k6dHlwZT0iY29uc3RyYWludHM6U2ltcGxlQ29uc3RyYWludCIgeG1pOmlkPSJfei1PQ3lzMVhFZVNHVmJGTk00bThnUSIgbmFtZT0iaXNNdWx0aXBsZUludGVyZmFjZUJsb2NrIj4NCisgICAgICA8Y29uc3RyYWludFR5cGUgaHJlZj0icHBlOi9lbnZpcm9ubWVudC9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQudWkvcmVzb3VyY2VzL1N5c01MMS40Q29uc3RyYWludEVudmlyb25tZW50LnhtaSMvL0Bjb25zdHJhaW50VHlwZXMuMCIvPg0KKyAgICAgIDxwcm9wZXJ0aWVzIHhzaTp0eXBlPSJjb25zdHJhaW50czpWYWx1ZVByb3BlcnR5IiB4bWk6aWQ9Il96LU9DeTgxWEVlU0dWYkZOTTRtOGdRIiBuYW1lPSJzdGVyZW90eXBlTmFtZSIgdmFsdWU9IlN5c01MOjpQb3J0c2FuZEZsb3dzOjpJbnRlcmZhY2VCbG9jayIvPg0KKyAgICA8L2NvbnN0cmFpbnRzPg0KKyAgPC92aWV3cz4NCisgIDx2aWV3cyB4bWk6aWQ9Il96LU9Dek0xWEVlU0dWYkZOTTRtOGdRIiBuYW1lPSJTaW5nbGUgSW52b2NhdGlvbk9uTmVzdGVkUG9ydEFjdGlvbiIgc2VjdGlvbnM9Il8yeDh0NHMxWEVlU0dWYkZOTTRtOGdRIiBhdXRvbWF0aWNDb250ZXh0PSJ0cnVlIiBkYXRhY29udGV4dHM9Il96LU9EZDgxWEVlU0dWYkZOTTRtOGdRIj4NCisgICAgPGNvbnN0cmFpbnRzIHhzaTp0eXBlPSJjb25zdHJhaW50czpTaW1wbGVDb25zdHJhaW50IiB4bWk6aWQ9Il96LU9DemMxWEVlU0dWYkZOTTRtOGdRIiBuYW1lPSJpc1NpbmdsZUludm9jYXRpb25Pbk5lc3RlZFBvcnRBY3Rpb24iPg0KKyAgICAgIDxjb25zdHJhaW50VHlwZSBocmVmPSJwcGU6L2Vudmlyb25tZW50L29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC51aS9yZXNvdXJjZXMvU3lzTUwxLjRDb25zdHJhaW50RW52aXJvbm1lbnQueG1pIy8vQGNvbnN0cmFpbnRUeXBlcy4wIi8+DQorICAgICAgPHByb3BlcnRpZXMgeHNpOnR5cGU9ImNvbnN0cmFpbnRzOlZhbHVlUHJvcGVydHkiIHhtaTppZD0iX3otT0N6czFYRWVTR1ZiRk5NNG04Z1EiIG5hbWU9InN0ZXJlb3R5cGVOYW1lIiB2YWx1ZT0iU3lzTUw6OlBvcnRzYW5kRmxvd3M6Okludm9jYXRpb25Pbk5lc3RlZFBvcnRBY3Rpb24iLz4NCisgICAgPC9jb25zdHJhaW50cz4NCisgIDwvdmlld3M+DQorICA8dmlld3MgeG1pOmlkPSJfei1PQ3o4MVhFZVNHVmJGTk00bThnUSIgZWxlbWVudE11bHRpcGxpY2l0eT0iLTEiIG5hbWU9Ik11bHRpcGxlIEludm9jYXRpb25Pbk5lc3RlZFBvcnRBY3Rpb24iIHNlY3Rpb25zPSJfMng4dDQ4MVhFZVNHVmJGTk00bThnUSIgYXV0b21hdGljQ29udGV4dD0idHJ1ZSIgZGF0YWNvbnRleHRzPSJfei1PRGQ4MVhFZVNHVmJGTk00bThnUSI+DQorICAgIDxjb25zdHJhaW50cyB4c2k6dHlwZT0iY29uc3RyYWludHM6U2ltcGxlQ29uc3RyYWludCIgeG1pOmlkPSJfei1PQzBNMVhFZVNHVmJGTk00bThnUSIgbmFtZT0iaXNNdWx0aXBsZUludm9jYXRpb25Pbk5lc3RlZFBvcnRBY3Rpb24iPg0KKyAgICAgIDxjb25zdHJhaW50VHlwZSBocmVmPSJwcGU6L2Vudmlyb25tZW50L29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC51aS9yZXNvdXJjZXMvU3lzTUwxLjRDb25zdHJhaW50RW52aXJvbm1lbnQueG1pIy8vQGNvbnN0cmFpbnRUeXBlcy4wIi8+DQorICAgICAgPHByb3BlcnRpZXMgeHNpOnR5cGU9ImNvbnN0cmFpbnRzOlZhbHVlUHJvcGVydHkiIHhtaTppZD0iX3otT0MwYzFYRWVTR1ZiRk5NNG04Z1EiIG5hbWU9InN0ZXJlb3R5cGVOYW1lIiB2YWx1ZT0iU3lzTUw6OlBvcnRzYW5kRmxvd3M6Okludm9jYXRpb25Pbk5lc3RlZFBvcnRBY3Rpb24iLz4NCisgICAgPC9jb25zdHJhaW50cz4NCisgIDwvdmlld3M+DQorICA8dmlld3MgeG1pOmlkPSJfei1PQzBzMVhFZVNHVmJGTk00bThnUSIgbmFtZT0iU2luZ2xlIFByb3h5UG9ydCIgc2VjdGlvbnM9Il8yeDlVOE0xWEVlU0dWYkZOTTRtOGdRIiBhdXRvbWF0aWNDb250ZXh0PSJ0cnVlIiBkYXRhY29udGV4dHM9Il96LU9EZTgxWEVlU0dWYkZOTTRtOGdRIj4NCisgICAgPGNvbnN0cmFpbnRzIHhzaTp0eXBlPSJjb25zdHJhaW50czpTaW1wbGVDb25zdHJhaW50IiB4bWk6aWQ9Il96LU9DMDgxWEVlU0dWYkZOTTRtOGdRIiBuYW1lPSJpc1NpbmdsZVByb3h5UG9ydCI+DQorICAgICAgPGNvbnN0cmFpbnRUeXBlIGhyZWY9InBwZTovZW52aXJvbm1lbnQvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnVpL3Jlc291cmNlcy9TeXNNTDEuNENvbnN0cmFpbnRFbnZpcm9ubWVudC54bWkjLy9AY29uc3RyYWludFR5cGVzLjAiLz4NCisgICAgICA8cHJvcGVydGllcyB4c2k6dHlwZT0iY29uc3RyYWludHM6VmFsdWVQcm9wZXJ0eSIgeG1pOmlkPSJfei1PQzFNMVhFZVNHVmJGTk00bThnUSIgbmFtZT0ic3RlcmVvdHlwZU5hbWUiIHZhbHVlPSJTeXNNTDo6UG9ydHNhbmRGbG93czo6UHJveHlQb3J0Ii8+DQorICAgIDwvY29uc3RyYWludHM+DQorICA8L3ZpZXdzPg0KKyAgPHZpZXdzIHhtaTppZD0iX3otT0MxYzFYRWVTR1ZiRk5NNG04Z1EiIGVsZW1lbnRNdWx0aXBsaWNpdHk9Ii0xIiBuYW1lPSJNdWx0aXBsZSBQcm94eVBvcnQiIHNlY3Rpb25zPSJfMng5VThjMVhFZVNHVmJGTk00bThnUSIgYXV0b21hdGljQ29udGV4dD0idHJ1ZSIgZGF0YWNvbnRleHRzPSJfei1PRGU4MVhFZVNHVmJGTk00bThnUSI+DQorICAgIDxjb25zdHJhaW50cyB4c2k6dHlwZT0iY29uc3RyYWludHM6U2ltcGxlQ29uc3RyYWludCIgeG1pOmlkPSJfei1PQzFzMVhFZVNHVmJGTk00bThnUSIgbmFtZT0iaXNNdWx0aXBsZVByb3h5UG9ydCI+DQorICAgICAgPGNvbnN0cmFpbnRUeXBlIGhyZWY9InBwZTovZW52aXJvbm1lbnQvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnVpL3Jlc291cmNlcy9TeXNNTDEuNENvbnN0cmFpbnRFbnZpcm9ubWVudC54bWkjLy9AY29uc3RyYWludFR5cGVzLjAiLz4NCisgICAgICA8cHJvcGVydGllcyB4c2k6dHlwZT0iY29uc3RyYWludHM6VmFsdWVQcm9wZXJ0eSIgeG1pOmlkPSJfei1PQzE4MVhFZVNHVmJGTk00bThnUSIgbmFtZT0ic3RlcmVvdHlwZU5hbWUiIHZhbHVlPSJTeXNNTDo6UG9ydHNhbmRGbG93czo6UHJveHlQb3J0Ii8+DQorICAgIDwvY29uc3RyYWludHM+DQorICA8L3ZpZXdzPg0KKyAgPHZpZXdzIHhtaTppZD0iX3otT0MyTTFYRWVTR1ZiRk5NNG04Z1EiIG5hbWU9IlNpbmdsZSBDaGFuZ2VTdHJ1Y3R1cmFsRmVhdHVyZUV2ZW50IiBzZWN0aW9ucz0iXzJ4OVU4czFYRWVTR1ZiRk5NNG04Z1EiIGF1dG9tYXRpY0NvbnRleHQ9InRydWUiIGRhdGFjb250ZXh0cz0iX3otT0RkYzFYRWVTR1ZiRk5NNG04Z1EiPg0KKyAgICA8Y29uc3RyYWludHMgeHNpOnR5cGU9ImNvbnN0cmFpbnRzOlNpbXBsZUNvbnN0cmFpbnQiIHhtaTppZD0iX3otT0MyYzFYRWVTR1ZiRk5NNG04Z1EiIG5hbWU9ImlzU2luZ2xlQ2hhbmdlU3RydWN0dXJhbEZlYXR1cmVFdmVudCI+DQorICAgICAgPGNvbnN0cmFpbnRUeXBlIGhyZWY9InBwZTovZW52aXJvbm1lbnQvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnVpL3Jlc291cmNlcy9TeXNNTDEuNENvbnN0cmFpbnRFbnZpcm9ubWVudC54bWkjLy9AY29uc3RyYWludFR5cGVzLjAiLz4NCisgICAgICA8cHJvcGVydGllcyB4c2k6dHlwZT0iY29uc3RyYWludHM6VmFsdWVQcm9wZXJ0eSIgeG1pOmlkPSJfei1PQzJzMVhFZVNHVmJGTk00bThnUSIgbmFtZT0ic3RlcmVvdHlwZU5hbWUiIHZhbHVlPSJTeXNNTDo6UG9ydHNhbmRGbG93czo6Q2hhbmdlU3RydWN0dXJhbEZlYXR1cmVFdmVudCIvPg0KKyAgICA8L2NvbnN0cmFpbnRzPg0KKyAgPC92aWV3cz4NCisgIDx2aWV3cyB4bWk6aWQ9Il96LU9DMjgxWEVlU0dWYkZOTTRtOGdRIiBlbGVtZW50TXVsdGlwbGljaXR5PSItMSIgbmFtZT0iTXVsdGlwbGUgQ2hhbmdlU3RydWN0dXJhbEZlYXR1cmVFdmVudCIgc2VjdGlvbnM9Il8yeDlVODgxWEVlU0dWYkZOTTRtOGdRIiBhdXRvbWF0aWNDb250ZXh0PSJ0cnVlIiBkYXRhY29udGV4dHM9Il96LU9EZGMxWEVlU0dWYkZOTTRtOGdRIj4NCisgICAgPGNvbnN0cmFpbnRzIHhzaTp0eXBlPSJjb25zdHJhaW50czpTaW1wbGVDb25zdHJhaW50IiB4bWk6aWQ9Il96LU9DM00xWEVlU0dWYkZOTTRtOGdRIiBuYW1lPSJpc011bHRpcGxlQ2hhbmdlU3RydWN0dXJhbEZlYXR1cmVFdmVudCI+DQorICAgICAgPGNvbnN0cmFpbnRUeXBlIGhyZWY9InBwZTovZW52aXJvbm1lbnQvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnVpL3Jlc291cmNlcy9TeXNNTDEuNENvbnN0cmFpbnRFbnZpcm9ubWVudC54bWkjLy9AY29uc3RyYWludFR5cGVzLjAiLz4NCisgICAgICA8cHJvcGVydGllcyB4c2k6dHlwZT0iY29uc3RyYWludHM6VmFsdWVQcm9wZXJ0eSIgeG1pOmlkPSJfei1PQzNjMVhFZVNHVmJGTk00bThnUSIgbmFtZT0ic3RlcmVvdHlwZU5hbWUiIHZhbHVlPSJTeXNNTDo6UG9ydHNhbmRGbG93czo6Q2hhbmdlU3RydWN0dXJhbEZlYXR1cmVFdmVudCIvPg0KKyAgICA8L2NvbnN0cmFpbnRzPg0KKyAgPC92aWV3cz4NCisgIDx2aWV3cyB4bWk6aWQ9Il96LU9DM3MxWEVlU0dWYkZOTTRtOGdRIiBuYW1lPSJTaW5nbGUgSXRlbUZsb3ciIHNlY3Rpb25zPSJfMng5OEFNMVhFZVNHVmJGTk00bThnUSIgYXV0b21hdGljQ29udGV4dD0idHJ1ZSIgZGF0YWNvbnRleHRzPSJfei1PRGVjMVhFZVNHVmJGTk00bThnUSI+DQorICAgIDxjb25zdHJhaW50cyB4c2k6dHlwZT0iY29uc3RyYWludHM6U2ltcGxlQ29uc3RyYWludCIgeG1pOmlkPSJfei1PQzM4MVhFZVNHVmJGTk00bThnUSIgbmFtZT0iaXNTaW5nbGVJdGVtRmxvdyI+DQorICAgICAgPGNvbnN0cmFpbnRUeXBlIGhyZWY9InBwZTovZW52aXJvbm1lbnQvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnVpL3Jlc291cmNlcy9TeXNNTDEuNENvbnN0cmFpbnRFbnZpcm9ubWVudC54bWkjLy9AY29uc3RyYWludFR5cGVzLjAiLz4NCisgICAgICA8cHJvcGVydGllcyB4c2k6dHlwZT0iY29uc3RyYWludHM6VmFsdWVQcm9wZXJ0eSIgeG1pOmlkPSJfei1PQzRNMVhFZVNHVmJGTk00bThnUSIgbmFtZT0ic3RlcmVvdHlwZU5hbWUiIHZhbHVlPSJTeXNNTDo6UG9ydHNhbmRGbG93czo6SXRlbUZsb3ciLz4NCisgICAgPC9jb25zdHJhaW50cz4NCisgIDwvdmlld3M+DQorICA8dmlld3MgeG1pOmlkPSJfei1PQzRjMVhFZVNHVmJGTk00bThnUSIgZWxlbWVudE11bHRpcGxpY2l0eT0iLTEiIG5hbWU9Ik11bHRpcGxlIEl0ZW1GbG93IiBzZWN0aW9ucz0iXzJ4OThBYzFYRWVTR1ZiRk5NNG04Z1EiIGF1dG9tYXRpY0NvbnRleHQ9InRydWUiIGRhdGFjb250ZXh0cz0iX3otT0RlYzFYRWVTR1ZiRk5NNG04Z1EiPg0KKyAgICA8Y29uc3RyYWludHMgeHNpOnR5cGU9ImNvbnN0cmFpbnRzOlNpbXBsZUNvbnN0cmFpbnQiIHhtaTppZD0iX3otT0M0czFYRWVTR1ZiRk5NNG04Z1EiIG5hbWU9ImlzTXVsdGlwbGVJdGVtRmxvdyI+DQorICAgICAgPGNvbnN0cmFpbnRUeXBlIGhyZWY9InBwZTovZW52aXJvbm1lbnQvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnVpL3Jlc291cmNlcy9TeXNNTDEuNENvbnN0cmFpbnRFbnZpcm9ubWVudC54bWkjLy9AY29uc3RyYWludFR5cGVzLjAiLz4NCisgICAgICA8cHJvcGVydGllcyB4c2k6dHlwZT0iY29uc3RyYWludHM6VmFsdWVQcm9wZXJ0eSIgeG1pOmlkPSJfei1PQzQ4MVhFZVNHVmJGTk00bThnUSIgbmFtZT0ic3RlcmVvdHlwZU5hbWUiIHZhbHVlPSJTeXNNTDo6UG9ydHNhbmRGbG93czo6SXRlbUZsb3ciLz4NCisgICAgPC9jb25zdHJhaW50cz4NCisgIDwvdmlld3M+DQorICA8dmlld3MgeG1pOmlkPSJfei1PQzVNMVhFZVNHVmJGTk00bThnUSIgbmFtZT0iU2luZ2xlIE5vQnVmZmVyIiBzZWN0aW9ucz0iXzJ4OThBczFYRWVTR1ZiRk5NNG04Z1EiIGF1dG9tYXRpY0NvbnRleHQ9InRydWUiIGRhdGFjb250ZXh0cz0iX3otT0RXODFYRWVTR1ZiRk5NNG04Z1EiPg0KKyAgICA8Y29uc3RyYWludHMgeHNpOnR5cGU9ImNvbnN0cmFpbnRzOlNpbXBsZUNvbnN0cmFpbnQiIHhtaTppZD0iX3otT0M1YzFYRWVTR1ZiRk5NNG04Z1EiIG5hbWU9ImlzU2luZ2xlTm9CdWZmZXIiPg0KKyAgICAgIDxjb25zdHJhaW50VHlwZSBocmVmPSJwcGU6L2Vudmlyb25tZW50L29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC51aS9yZXNvdXJjZXMvU3lzTUwxLjRDb25zdHJhaW50RW52aXJvbm1lbnQueG1pIy8vQGNvbnN0cmFpbnRUeXBlcy4wIi8+DQorICAgICAgPHByb3BlcnRpZXMgeHNpOnR5cGU9ImNvbnN0cmFpbnRzOlZhbHVlUHJvcGVydHkiIHhtaTppZD0iX3otT0M1czFYRWVTR1ZiRk5NNG04Z1EiIG5hbWU9InN0ZXJlb3R5cGVOYW1lIiB2YWx1ZT0iU3lzTUw6OkFjdGl2aXRpZXM6Ok5vQnVmZmVyIi8+DQorICAgIDwvY29uc3RyYWludHM+DQorICA8L3ZpZXdzPg0KKyAgPHZpZXdzIHhtaTppZD0iX3otT0M1ODFYRWVTR1ZiRk5NNG04Z1EiIGVsZW1lbnRNdWx0aXBsaWNpdHk9Ii0xIiBuYW1lPSJNdWx0aXBsZSBOb0J1ZmZlciIgc2VjdGlvbnM9Il8yeDk4QTgxWEVlU0dWYkZOTTRtOGdRIiBhdXRvbWF0aWNDb250ZXh0PSJ0cnVlIiBkYXRhY29udGV4dHM9Il96LU9EVzgxWEVlU0dWYkZOTTRtOGdRIj4NCisgICAgPGNvbnN0cmFpbnRzIHhzaTp0eXBlPSJjb25zdHJhaW50czpTaW1wbGVDb25zdHJhaW50IiB4bWk6aWQ9Il96LU9DNk0xWEVlU0dWYkZOTTRtOGdRIiBuYW1lPSJpc011bHRpcGxlTm9CdWZmZXIiPg0KKyAgICAgIDxjb25zdHJhaW50VHlwZSBocmVmPSJwcGU6L2Vudmlyb25tZW50L29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC51aS9yZXNvdXJjZXMvU3lzTUwxLjRDb25zdHJhaW50RW52aXJvbm1lbnQueG1pIy8vQGNvbnN0cmFpbnRUeXBlcy4wIi8+DQorICAgICAgPHByb3BlcnRpZXMgeHNpOnR5cGU9ImNvbnN0cmFpbnRzOlZhbHVlUHJvcGVydHkiIHhtaTppZD0iX3otT0M2YzFYRWVTR1ZiRk5NNG04Z1EiIG5hbWU9InN0ZXJlb3R5cGVOYW1lIiB2YWx1ZT0iU3lzTUw6OkFjdGl2aXRpZXM6Ok5vQnVmZmVyIi8+DQorICAgIDwvY29uc3RyYWludHM+DQorICA8L3ZpZXdzPg0KKyAgPHZpZXdzIHhtaTppZD0iX3otT0M2czFYRWVTR1ZiRk5NNG04Z1EiIG5hbWU9IlNpbmdsZSBDb250cm9sT3BlcmF0b3IiIHNlY3Rpb25zPSJfMng5OEJNMVhFZVNHVmJGTk00bThnUSIgYXV0b21hdGljQ29udGV4dD0idHJ1ZSIgZGF0YWNvbnRleHRzPSJfei1PRFZNMVhFZVNHVmJGTk00bThnUSI+DQorICAgIDxjb25zdHJhaW50cyB4c2k6dHlwZT0iY29uc3RyYWludHM6U2ltcGxlQ29uc3RyYWludCIgeG1pOmlkPSJfei1PQzY4MVhFZVNHVmJGTk00bThnUSIgbmFtZT0iaXNTaW5nbGVDb250cm9sT3BlcmF0b3IiPg0KKyAgICAgIDxjb25zdHJhaW50VHlwZSBocmVmPSJwcGU6L2Vudmlyb25tZW50L29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC51aS9yZXNvdXJjZXMvU3lzTUwxLjRDb25zdHJhaW50RW52aXJvbm1lbnQueG1pIy8vQGNvbnN0cmFpbnRUeXBlcy4wIi8+DQorICAgICAgPHByb3BlcnRpZXMgeHNpOnR5cGU9ImNvbnN0cmFpbnRzOlZhbHVlUHJvcGVydHkiIHhtaTppZD0iX3otT0M3TTFYRWVTR1ZiRk5NNG04Z1EiIG5hbWU9InN0ZXJlb3R5cGVOYW1lIiB2YWx1ZT0iU3lzTUw6OkFjdGl2aXRpZXM6OkNvbnRyb2xPcGVyYXRvciIvPg0KKyAgICA8L2NvbnN0cmFpbnRzPg0KKyAgPC92aWV3cz4NCisgIDx2aWV3cyB4bWk6aWQ9Il96LU9DN2MxWEVlU0dWYkZOTTRtOGdRIiBlbGVtZW50TXVsdGlwbGljaXR5PSItMSIgbmFtZT0iTXVsdGlwbGUgQ29udHJvbE9wZXJhdG9yIiBzZWN0aW9ucz0iXzJ4LWpFTTFYRWVTR1ZiRk5NNG04Z1EiIGF1dG9tYXRpY0NvbnRleHQ9InRydWUiIGRhdGFjb250ZXh0cz0iX3otT0RWTTFYRWVTR1ZiRk5NNG04Z1EiPg0KKyAgICA8Y29uc3RyYWludHMgeHNpOnR5cGU9ImNvbnN0cmFpbnRzOlNpbXBsZUNvbnN0cmFpbnQiIHhtaTppZD0iX3otT0M3czFYRWVTR1ZiRk5NNG04Z1EiIG5hbWU9ImlzTXVsdGlwbGVDb250cm9sT3BlcmF0b3IiPg0KKyAgICAgIDxjb25zdHJhaW50VHlwZSBocmVmPSJwcGU6L2Vudmlyb25tZW50L29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC51aS9yZXNvdXJjZXMvU3lzTUwxLjRDb25zdHJhaW50RW52aXJvbm1lbnQueG1pIy8vQGNvbnN0cmFpbnRUeXBlcy4wIi8+DQorICAgICAgPHByb3BlcnRpZXMgeHNpOnR5cGU9ImNvbnN0cmFpbnRzOlZhbHVlUHJvcGVydHkiIHhtaTppZD0iX3otT0M3ODFYRWVTR1ZiRk5NNG04Z1EiIG5hbWU9InN0ZXJlb3R5cGVOYW1lIiB2YWx1ZT0iU3lzTUw6OkFjdGl2aXRpZXM6OkNvbnRyb2xPcGVyYXRvciIvPg0KKyAgICA8L2NvbnN0cmFpbnRzPg0KKyAgPC92aWV3cz4NCisgIDx2aWV3cyB4bWk6aWQ9Il96LU9DOE0xWEVlU0dWYkZOTTRtOGdRIiBuYW1lPSJTaW5nbGUgQ29udGludW91cyIgc2VjdGlvbnM9Il8yeC1qRWMxWEVlU0dWYkZOTTRtOGdRIiBhdXRvbWF0aWNDb250ZXh0PSJ0cnVlIiBkYXRhY29udGV4dHM9Il96LU9EVmMxWEVlU0dWYkZOTTRtOGdRIj4NCisgICAgPGNvbnN0cmFpbnRzIHhzaTp0eXBlPSJjb25zdHJhaW50czpTaW1wbGVDb25zdHJhaW50IiB4bWk6aWQ9Il96LU9DOGMxWEVlU0dWYkZOTTRtOGdRIiBuYW1lPSJpc1NpbmdsZUNvbnRpbnVvdXMiPg0KKyAgICAgIDxjb25zdHJhaW50VHlwZSBocmVmPSJwcGU6L2Vudmlyb25tZW50L29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC51aS9yZXNvdXJjZXMvU3lzTUwxLjRDb25zdHJhaW50RW52aXJvbm1lbnQueG1pIy8vQGNvbnN0cmFpbnRUeXBlcy4wIi8+DQorICAgICAgPHByb3BlcnRpZXMgeHNpOnR5cGU9ImNvbnN0cmFpbnRzOlZhbHVlUHJvcGVydHkiIHhtaTppZD0iX3otT0M4czFYRWVTR1ZiRk5NNG04Z1EiIG5hbWU9InN0ZXJlb3R5cGVOYW1lIiB2YWx1ZT0iU3lzTUw6OkFjdGl2aXRpZXM6OkNvbnRpbnVvdXMiLz4NCisgICAgPC9jb25zdHJhaW50cz4NCisgIDwvdmlld3M+DQorICA8dmlld3MgeG1pOmlkPSJfei1PQzg4MVhFZVNHVmJGTk00bThnUSIgZWxlbWVudE11bHRpcGxpY2l0eT0iLTEiIG5hbWU9Ik11bHRpcGxlIENvbnRpbnVvdXMiIHNlY3Rpb25zPSJfMngtakVzMVhFZVNHVmJGTk00bThnUSIgYXV0b21hdGljQ29udGV4dD0idHJ1ZSIgZGF0YWNvbnRleHRzPSJfei1PRFZjMVhFZVNHVmJGTk00bThnUSI+DQorICAgIDxjb25zdHJhaW50cyB4c2k6dHlwZT0iY29uc3RyYWludHM6U2ltcGxlQ29uc3RyYWludCIgeG1pOmlkPSJfei1PQzlNMVhFZVNHVmJGTk00bThnUSIgbmFtZT0iaXNNdWx0aXBsZUNvbnRpbnVvdXMiPg0KKyAgICAgIDxjb25zdHJhaW50VHlwZSBocmVmPSJwcGU6L2Vudmlyb25tZW50L29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC51aS9yZXNvdXJjZXMvU3lzTUwxLjRDb25zdHJhaW50RW52aXJvbm1lbnQueG1pIy8vQGNvbnN0cmFpbnRUeXBlcy4wIi8+DQorICAgICAgPHByb3BlcnRpZXMgeHNpOnR5cGU9ImNvbnN0cmFpbnRzOlZhbHVlUHJvcGVydHkiIHhtaTppZD0iX3otT0M5YzFYRWVTR1ZiRk5NNG04Z1EiIG5hbWU9InN0ZXJlb3R5cGVOYW1lIiB2YWx1ZT0iU3lzTUw6OkFjdGl2aXRpZXM6OkNvbnRpbnVvdXMiLz4NCisgICAgPC9jb25zdHJhaW50cz4NCisgIDwvdmlld3M+DQorICA8dmlld3MgeG1pOmlkPSJfei1PQzlzMVhFZVNHVmJGTk00bThnUSIgbmFtZT0iU2luZ2xlIE92ZXJ3cml0ZSIgc2VjdGlvbnM9Il8yeC1qRTgxWEVlU0dWYkZOTTRtOGdRIiBhdXRvbWF0aWNDb250ZXh0PSJ0cnVlIiBkYXRhY29udGV4dHM9Il96LU9EVTgxWEVlU0dWYkZOTTRtOGdRIj4NCisgICAgPGNvbnN0cmFpbnRzIHhzaTp0eXBlPSJjb25zdHJhaW50czpTaW1wbGVDb25zdHJhaW50IiB4bWk6aWQ9Il96LU9DOTgxWEVlU0dWYkZOTTRtOGdRIiBuYW1lPSJpc1NpbmdsZU92ZXJ3cml0ZSI+DQorICAgICAgPGNvbnN0cmFpbnRUeXBlIGhyZWY9InBwZTovZW52aXJvbm1lbnQvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnVpL3Jlc291cmNlcy9TeXNNTDEuNENvbnN0cmFpbnRFbnZpcm9ubWVudC54bWkjLy9AY29uc3RyYWludFR5cGVzLjAiLz4NCisgICAgICA8cHJvcGVydGllcyB4c2k6dHlwZT0iY29uc3RyYWludHM6VmFsdWVQcm9wZXJ0eSIgeG1pOmlkPSJfei1PQy1NMVhFZVNHVmJGTk00bThnUSIgbmFtZT0ic3RlcmVvdHlwZU5hbWUiIHZhbHVlPSJTeXNNTDo6QWN0aXZpdGllczo6T3ZlcndyaXRlIi8+DQorICAgIDwvY29uc3RyYWludHM+DQorICA8L3ZpZXdzPg0KKyAgPHZpZXdzIHhtaTppZD0iX3otT0MtYzFYRWVTR1ZiRk5NNG04Z1EiIGVsZW1lbnRNdWx0aXBsaWNpdHk9Ii0xIiBuYW1lPSJNdWx0aXBsZSBPdmVyd3JpdGUiIHNlY3Rpb25zPSJfMngtakZNMVhFZVNHVmJGTk00bThnUSIgYXV0b21hdGljQ29udGV4dD0idHJ1ZSIgZGF0YWNvbnRleHRzPSJfei1PRFU4MVhFZVNHVmJGTk00bThnUSI+DQorICAgIDxjb25zdHJhaW50cyB4c2k6dHlwZT0iY29uc3RyYWludHM6U2ltcGxlQ29uc3RyYWludCIgeG1pOmlkPSJfei1PQy1zMVhFZVNHVmJGTk00bThnUSIgbmFtZT0iaXNNdWx0aXBsZU92ZXJ3cml0ZSI+DQorICAgICAgPGNvbnN0cmFpbnRUeXBlIGhyZWY9InBwZTovZW52aXJvbm1lbnQvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnVpL3Jlc291cmNlcy9TeXNNTDEuNENvbnN0cmFpbnRFbnZpcm9ubWVudC54bWkjLy9AY29uc3RyYWludFR5cGVzLjAiLz4NCisgICAgICA8cHJvcGVydGllcyB4c2k6dHlwZT0iY29uc3RyYWludHM6VmFsdWVQcm9wZXJ0eSIgeG1pOmlkPSJfei1PQy04MVhFZVNHVmJGTk00bThnUSIgbmFtZT0ic3RlcmVvdHlwZU5hbWUiIHZhbHVlPSJTeXNNTDo6QWN0aXZpdGllczo6T3ZlcndyaXRlIi8+DQorICAgIDwvY29uc3RyYWludHM+DQorICA8L3ZpZXdzPg0KKyAgPHZpZXdzIHhtaTppZD0iX3otT0NfTTFYRWVTR1ZiRk5NNG04Z1EiIG5hbWU9IlNpbmdsZSBEaXNjcmV0ZSIgc2VjdGlvbnM9Il8yeC1qRmMxWEVlU0dWYkZOTTRtOGdRIiBhdXRvbWF0aWNDb250ZXh0PSJ0cnVlIiBkYXRhY29udGV4dHM9Il96LU9EVXMxWEVlU0dWYkZOTTRtOGdRIj4NCisgICAgPGNvbnN0cmFpbnRzIHhzaTp0eXBlPSJjb25zdHJhaW50czpTaW1wbGVDb25zdHJhaW50IiB4bWk6aWQ9Il96LU9DX2MxWEVlU0dWYkZOTTRtOGdRIiBuYW1lPSJpc1NpbmdsZURpc2NyZXRlIj4NCisgICAgICA8Y29uc3RyYWludFR5cGUgaHJlZj0icHBlOi9lbnZpcm9ubWVudC9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQudWkvcmVzb3VyY2VzL1N5c01MMS40Q29uc3RyYWludEVudmlyb25tZW50LnhtaSMvL0Bjb25zdHJhaW50VHlwZXMuMCIvPg0KKyAgICAgIDxwcm9wZXJ0aWVzIHhzaTp0eXBlPSJjb25zdHJhaW50czpWYWx1ZVByb3BlcnR5IiB4bWk6aWQ9Il96LU9DX3MxWEVlU0dWYkZOTTRtOGdRIiBuYW1lPSJzdGVyZW90eXBlTmFtZSIgdmFsdWU9IlN5c01MOjpBY3Rpdml0aWVzOjpEaXNjcmV0ZSIvPg0KKyAgICA8L2NvbnN0cmFpbnRzPg0KKyAgPC92aWV3cz4NCisgIDx2aWV3cyB4bWk6aWQ9Il96LU9DXzgxWEVlU0dWYkZOTTRtOGdRIiBlbGVtZW50TXVsdGlwbGljaXR5PSItMSIgbmFtZT0iTXVsdGlwbGUgRGlzY3JldGUiIHNlY3Rpb25zPSJfMnhfS0lNMVhFZVNHVmJGTk00bThnUSIgYXV0b21hdGljQ29udGV4dD0idHJ1ZSIgZGF0YWNvbnRleHRzPSJfei1PRFVzMVhFZVNHVmJGTk00bThnUSI+DQorICAgIDxjb25zdHJhaW50cyB4c2k6dHlwZT0iY29uc3RyYWludHM6U2ltcGxlQ29uc3RyYWludCIgeG1pOmlkPSJfei1PREFNMVhFZVNHVmJGTk00bThnUSIgbmFtZT0iaXNNdWx0aXBsZURpc2NyZXRlIj4NCisgICAgICA8Y29uc3RyYWludFR5cGUgaHJlZj0icHBlOi9lbnZpcm9ubWVudC9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQudWkvcmVzb3VyY2VzL1N5c01MMS40Q29uc3RyYWludEVudmlyb25tZW50LnhtaSMvL0Bjb25zdHJhaW50VHlwZXMuMCIvPg0KKyAgICAgIDxwcm9wZXJ0aWVzIHhzaTp0eXBlPSJjb25zdHJhaW50czpWYWx1ZVByb3BlcnR5IiB4bWk6aWQ9Il96LU9EQWMxWEVlU0dWYkZOTTRtOGdRIiBuYW1lPSJzdGVyZW90eXBlTmFtZSIgdmFsdWU9IlN5c01MOjpBY3Rpdml0aWVzOjpEaXNjcmV0ZSIvPg0KKyAgICA8L2NvbnN0cmFpbnRzPg0KKyAgPC92aWV3cz4NCisgIDx2aWV3cyB4bWk6aWQ9Il96LU9EQXMxWEVlU0dWYkZOTTRtOGdRIiBuYW1lPSJTaW5nbGUgT3B0aW9uYWwiIHNlY3Rpb25zPSJfMnhfeE1NMVhFZVNHVmJGTk00bThnUSIgYXV0b21hdGljQ29udGV4dD0idHJ1ZSIgZGF0YWNvbnRleHRzPSJfei1PRFdNMVhFZVNHVmJGTk00bThnUSI+DQorICAgIDxjb25zdHJhaW50cyB4c2k6dHlwZT0iY29uc3RyYWludHM6U2ltcGxlQ29uc3RyYWludCIgeG1pOmlkPSJfei1PREE4MVhFZVNHVmJGTk00bThnUSIgbmFtZT0iaXNTaW5nbGVPcHRpb25hbCI+DQorICAgICAgPGNvbnN0cmFpbnRUeXBlIGhyZWY9InBwZTovZW52aXJvbm1lbnQvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnVpL3Jlc291cmNlcy9TeXNNTDEuNENvbnN0cmFpbnRFbnZpcm9ubWVudC54bWkjLy9AY29uc3RyYWludFR5cGVzLjAiLz4NCisgICAgICA8cHJvcGVydGllcyB4c2k6dHlwZT0iY29uc3RyYWludHM6VmFsdWVQcm9wZXJ0eSIgeG1pOmlkPSJfei1PREJNMVhFZVNHVmJGTk00bThnUSIgbmFtZT0ic3RlcmVvdHlwZU5hbWUiIHZhbHVlPSJTeXNNTDo6QWN0aXZpdGllczo6T3B0aW9uYWwiLz4NCisgICAgPC9jb25zdHJhaW50cz4NCisgIDwvdmlld3M+DQorICA8dmlld3MgeG1pOmlkPSJfei1PREJjMVhFZVNHVmJGTk00bThnUSIgZWxlbWVudE11bHRpcGxpY2l0eT0iLTEiIG5hbWU9Ik11bHRpcGxlIE9wdGlvbmFsIiBzZWN0aW9ucz0iXzJ4X3hNYzFYRWVTR1ZiRk5NNG04Z1EiIGF1dG9tYXRpY0NvbnRleHQ9InRydWUiIGRhdGFjb250ZXh0cz0iX3otT0RXTTFYRWVTR1ZiRk5NNG04Z1EiPg0KKyAgICA8Y29uc3RyYWludHMgeHNpOnR5cGU9ImNvbnN0cmFpbnRzOlNpbXBsZUNvbnN0cmFpbnQiIHhtaTppZD0iX3otT0RCczFYRWVTR1ZiRk5NNG04Z1EiIG5hbWU9ImlzTXVsdGlwbGVPcHRpb25hbCI+DQorICAgICAgPGNvbnN0cmFpbnRUeXBlIGhyZWY9InBwZTovZW52aXJvbm1lbnQvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnVpL3Jlc291cmNlcy9TeXNNTDEuNENvbnN0cmFpbnRFbnZpcm9ubWVudC54bWkjLy9AY29uc3RyYWludFR5cGVzLjAiLz4NCisgICAgICA8cHJvcGVydGllcyB4c2k6dHlwZT0iY29uc3RyYWludHM6VmFsdWVQcm9wZXJ0eSIgeG1pOmlkPSJfei1PREI4MVhFZVNHVmJGTk00bThnUSIgbmFtZT0ic3RlcmVvdHlwZU5hbWUiIHZhbHVlPSJTeXNNTDo6QWN0aXZpdGllczo6T3B0aW9uYWwiLz4NCisgICAgPC9jb25zdHJhaW50cz4NCisgIDwvdmlld3M+DQorICA8dmlld3MgeG1pOmlkPSJfei1PRENNMVhFZVNHVmJGTk00bThnUSIgbmFtZT0iU2luZ2xlIFJhdGUiIHNlY3Rpb25zPSJfMnlBWVFNMVhFZVNHVmJGTk00bThnUSIgYXV0b21hdGljQ29udGV4dD0idHJ1ZSIgZGF0YWNvbnRleHRzPSJfei1PRFdjMVhFZVNHVmJGTk00bThnUSI+DQorICAgIDxjb25zdHJhaW50cyB4c2k6dHlwZT0iY29uc3RyYWludHM6U2ltcGxlQ29uc3RyYWludCIgeG1pOmlkPSJfei1PRENjMVhFZVNHVmJGTk00bThnUSIgbmFtZT0iaXNTaW5nbGVSYXRlIj4NCisgICAgICA8Y29uc3RyYWludFR5cGUgaHJlZj0icHBlOi9lbnZpcm9ubWVudC9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQudWkvcmVzb3VyY2VzL1N5c01MMS40Q29uc3RyYWludEVudmlyb25tZW50LnhtaSMvL0Bjb25zdHJhaW50VHlwZXMuMCIvPg0KKyAgICAgIDxwcm9wZXJ0aWVzIHhzaTp0eXBlPSJjb25zdHJhaW50czpWYWx1ZVByb3BlcnR5IiB4bWk6aWQ9Il96LU9EQ3MxWEVlU0dWYkZOTTRtOGdRIiBuYW1lPSJzdGVyZW90eXBlTmFtZSIgdmFsdWU9IlN5c01MOjpBY3Rpdml0aWVzOjpSYXRlIi8+DQorICAgIDwvY29uc3RyYWludHM+DQorICA8L3ZpZXdzPg0KKyAgPHZpZXdzIHhtaTppZD0iX3otT0RDODFYRWVTR1ZiRk5NNG04Z1EiIGVsZW1lbnRNdWx0aXBsaWNpdHk9Ii0xIiBuYW1lPSJNdWx0aXBsZSBSYXRlIiBzZWN0aW9ucz0iXzJ5QVlRYzFYRWVTR1ZiRk5NNG04Z1EiIGF1dG9tYXRpY0NvbnRleHQ9InRydWUiIGRhdGFjb250ZXh0cz0iX3otT0RXYzFYRWVTR1ZiRk5NNG04Z1EiPg0KKyAgICA8Y29uc3RyYWludHMgeHNpOnR5cGU9ImNvbnN0cmFpbnRzOlNpbXBsZUNvbnN0cmFpbnQiIHhtaTppZD0iX3otT0RETTFYRWVTR1ZiRk5NNG04Z1EiIG5hbWU9ImlzTXVsdGlwbGVSYXRlIj4NCisgICAgICA8Y29uc3RyYWludFR5cGUgaHJlZj0icHBlOi9lbnZpcm9ubWVudC9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQudWkvcmVzb3VyY2VzL1N5c01MMS40Q29uc3RyYWludEVudmlyb25tZW50LnhtaSMvL0Bjb25zdHJhaW50VHlwZXMuMCIvPg0KKyAgICAgIDxwcm9wZXJ0aWVzIHhzaTp0eXBlPSJjb25zdHJhaW50czpWYWx1ZVByb3BlcnR5IiB4bWk6aWQ9Il96LU9ERGMxWEVlU0dWYkZOTTRtOGdRIiBuYW1lPSJzdGVyZW90eXBlTmFtZSIgdmFsdWU9IlN5c01MOjpBY3Rpdml0aWVzOjpSYXRlIi8+DQorICAgIDwvY29uc3RyYWludHM+DQorICA8L3ZpZXdzPg0KKyAgPHZpZXdzIHhtaTppZD0iX3otT0REczFYRWVTR1ZiRk5NNG04Z1EiIG5hbWU9IlNpbmdsZSBQcm9iYWJpbGl0eSIgc2VjdGlvbnM9Il8yeUFZUXMxWEVlU0dWYkZOTTRtOGdRIiBhdXRvbWF0aWNDb250ZXh0PSJ0cnVlIiBkYXRhY29udGV4dHM9Il96LU9EVnMxWEVlU0dWYkZOTTRtOGdRIj4NCisgICAgPGNvbnN0cmFpbnRzIHhzaTp0eXBlPSJjb25zdHJhaW50czpTaW1wbGVDb25zdHJhaW50IiB4bWk6aWQ9Il96LU9ERDgxWEVlU0dWYkZOTTRtOGdRIiBuYW1lPSJpc1NpbmdsZVByb2JhYmlsaXR5Ij4NCisgICAgICA8Y29uc3RyYWludFR5cGUgaHJlZj0icHBlOi9lbnZpcm9ubWVudC9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQudWkvcmVzb3VyY2VzL1N5c01MMS40Q29uc3RyYWludEVudmlyb25tZW50LnhtaSMvL0Bjb25zdHJhaW50VHlwZXMuMCIvPg0KKyAgICAgIDxwcm9wZXJ0aWVzIHhzaTp0eXBlPSJjb25zdHJhaW50czpWYWx1ZVByb3BlcnR5IiB4bWk6aWQ9Il96LU9ERU0xWEVlU0dWYkZOTTRtOGdRIiBuYW1lPSJzdGVyZW90eXBlTmFtZSIgdmFsdWU9IlN5c01MOjpBY3Rpdml0aWVzOjpQcm9iYWJpbGl0eSIvPg0KKyAgICA8L2NvbnN0cmFpbnRzPg0KKyAgPC92aWV3cz4NCisgIDx2aWV3cyB4bWk6aWQ9Il96LU9ERWMxWEVlU0dWYkZOTTRtOGdRIiBlbGVtZW50TXVsdGlwbGljaXR5PSItMSIgbmFtZT0iTXVsdGlwbGUgUHJvYmFiaWxpdHkiIHNlY3Rpb25zPSJfMnlBWVE4MVhFZVNHVmJGTk00bThnUSIgYXV0b21hdGljQ29udGV4dD0idHJ1ZSIgZGF0YWNvbnRleHRzPSJfei1PRFZzMVhFZVNHVmJGTk00bThnUSI+DQorICAgIDxjb25zdHJhaW50cyB4c2k6dHlwZT0iY29uc3RyYWludHM6U2ltcGxlQ29uc3RyYWludCIgeG1pOmlkPSJfei1PREVzMVhFZVNHVmJGTk00bThnUSIgbmFtZT0iaXNNdWx0aXBsZVByb2JhYmlsaXR5Ij4NCisgICAgICA8Y29uc3RyYWludFR5cGUgaHJlZj0icHBlOi9lbnZpcm9ubWVudC9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQudWkvcmVzb3VyY2VzL1N5c01MMS40Q29uc3RyYWludEVudmlyb25tZW50LnhtaSMvL0Bjb25zdHJhaW50VHlwZXMuMCIvPg0KKyAgICAgIDxwcm9wZXJ0aWVzIHhzaTp0eXBlPSJjb25zdHJhaW50czpWYWx1ZVByb3BlcnR5IiB4bWk6aWQ9Il96LU9ERTgxWEVlU0dWYkZOTTRtOGdRIiBuYW1lPSJzdGVyZW90eXBlTmFtZSIgdmFsdWU9IlN5c01MOjpBY3Rpdml0aWVzOjpQcm9iYWJpbGl0eSIvPg0KKyAgICA8L2NvbnN0cmFpbnRzPg0KKyAgPC92aWV3cz4NCisgIDx2aWV3cyB4bWk6aWQ9Il96LU9ERk0xWEVlU0dWYkZOTTRtOGdRIiBuYW1lPSJTaW5nbGUgQWxsb2NhdGVBY3Rpdml0eVBhcnRpdGlvbiIgc2VjdGlvbnM9Il8yeUFZUk0xWEVlU0dWYkZOTTRtOGdRIiBhdXRvbWF0aWNDb250ZXh0PSJ0cnVlIiBkYXRhY29udGV4dHM9Il96LU9EWGMxWEVlU0dWYkZOTTRtOGdRIj4NCisgICAgPGNvbnN0cmFpbnRzIHhzaTp0eXBlPSJjb25zdHJhaW50czpTaW1wbGVDb25zdHJhaW50IiB4bWk6aWQ9Il96LU9ERmMxWEVlU0dWYkZOTTRtOGdRIiBuYW1lPSJpc1NpbmdsZUFsbG9jYXRlQWN0aXZpdHlQYXJ0aXRpb24iPg0KKyAgICAgIDxjb25zdHJhaW50VHlwZSBocmVmPSJwcGU6L2Vudmlyb25tZW50L29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC51aS9yZXNvdXJjZXMvU3lzTUwxLjRDb25zdHJhaW50RW52aXJvbm1lbnQueG1pIy8vQGNvbnN0cmFpbnRUeXBlcy4wIi8+DQorICAgICAgPHByb3BlcnRpZXMgeHNpOnR5cGU9ImNvbnN0cmFpbnRzOlZhbHVlUHJvcGVydHkiIHhtaTppZD0iX3otT0RGczFYRWVTR1ZiRk5NNG04Z1EiIG5hbWU9InN0ZXJlb3R5cGVOYW1lIiB2YWx1ZT0iU3lzTUw6OkFsbG9jYXRpb25zOjpBbGxvY2F0ZUFjdGl2aXR5UGFydGl0aW9uIi8+DQorICAgIDwvY29uc3RyYWludHM+DQorICA8L3ZpZXdzPg0KKyAgPHZpZXdzIHhtaTppZD0iX3otT0RGODFYRWVTR1ZiRk5NNG04Z1EiIGVsZW1lbnRNdWx0aXBsaWNpdHk9Ii0xIiBuYW1lPSJNdWx0aXBsZSBBbGxvY2F0ZUFjdGl2aXR5UGFydGl0aW9uIiBzZWN0aW9ucz0iXzJ5QV9VTTFYRWVTR1ZiRk5NNG04Z1EiIGF1dG9tYXRpY0NvbnRleHQ9InRydWUiIGRhdGFjb250ZXh0cz0iX3otT0RYYzFYRWVTR1ZiRk5NNG04Z1EiPg0KKyAgICA8Y29uc3RyYWludHMgeHNpOnR5cGU9ImNvbnN0cmFpbnRzOlNpbXBsZUNvbnN0cmFpbnQiIHhtaTppZD0iX3otT0RHTTFYRWVTR1ZiRk5NNG04Z1EiIG5hbWU9ImlzTXVsdGlwbGVBbGxvY2F0ZUFjdGl2aXR5UGFydGl0aW9uIj4NCisgICAgICA8Y29uc3RyYWludFR5cGUgaHJlZj0icHBlOi9lbnZpcm9ubWVudC9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQudWkvcmVzb3VyY2VzL1N5c01MMS40Q29uc3RyYWludEVudmlyb25tZW50LnhtaSMvL0Bjb25zdHJhaW50VHlwZXMuMCIvPg0KKyAgICAgIDxwcm9wZXJ0aWVzIHhzaTp0eXBlPSJjb25zdHJhaW50czpWYWx1ZVByb3BlcnR5IiB4bWk6aWQ9Il96LU9ER2MxWEVlU0dWYkZOTTRtOGdRIiBuYW1lPSJzdGVyZW90eXBlTmFtZSIgdmFsdWU9IlN5c01MOjpBbGxvY2F0aW9uczo6QWxsb2NhdGVBY3Rpdml0eVBhcnRpdGlvbiIvPg0KKyAgICA8L2NvbnN0cmFpbnRzPg0KKyAgPC92aWV3cz4NCisgIDx2aWV3cyB4bWk6aWQ9Il96LU9ER3MxWEVlU0dWYkZOTTRtOGdRIiBuYW1lPSJTaW5nbGUgQWxsb2NhdGUiIHNlY3Rpb25zPSJfMnlBX1VjMVhFZVNHVmJGTk00bThnUSIgYXV0b21hdGljQ29udGV4dD0idHJ1ZSIgZGF0YWNvbnRleHRzPSJfei1PRFhzMVhFZVNHVmJGTk00bThnUSI+DQorICAgIDxjb25zdHJhaW50cyB4c2k6dHlwZT0iY29uc3RyYWludHM6U2ltcGxlQ29uc3RyYWludCIgeG1pOmlkPSJfei1PREc4MVhFZVNHVmJGTk00bThnUSIgbmFtZT0iaXNTaW5nbGVBbGxvY2F0ZSI+DQorICAgICAgPGNvbnN0cmFpbnRUeXBlIGhyZWY9InBwZTovZW52aXJvbm1lbnQvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnVpL3Jlc291cmNlcy9TeXNNTDEuNENvbnN0cmFpbnRFbnZpcm9ubWVudC54bWkjLy9AY29uc3RyYWludFR5cGVzLjAiLz4NCisgICAgICA8cHJvcGVydGllcyB4c2k6dHlwZT0iY29uc3RyYWludHM6VmFsdWVQcm9wZXJ0eSIgeG1pOmlkPSJfei1PREhNMVhFZVNHVmJGTk00bThnUSIgbmFtZT0ic3RlcmVvdHlwZU5hbWUiIHZhbHVlPSJTeXNNTDo6QWxsb2NhdGlvbnM6OkFsbG9jYXRlIi8+DQorICAgIDwvY29uc3RyYWludHM+DQorICA8L3ZpZXdzPg0KKyAgPHZpZXdzIHhtaTppZD0iX3otT0RIYzFYRWVTR1ZiRk5NNG04Z1EiIGVsZW1lbnRNdWx0aXBsaWNpdHk9Ii0xIiBuYW1lPSJNdWx0aXBsZSBBbGxvY2F0ZSIgc2VjdGlvbnM9Il8yeUFfVXMxWEVlU0dWYkZOTTRtOGdRIiBhdXRvbWF0aWNDb250ZXh0PSJ0cnVlIiBkYXRhY29udGV4dHM9Il96LU9EWHMxWEVlU0dWYkZOTTRtOGdRIj4NCisgICAgPGNvbnN0cmFpbnRzIHhzaTp0eXBlPSJjb25zdHJhaW50czpTaW1wbGVDb25zdHJhaW50IiB4bWk6aWQ9Il96LU9ESHMxWEVlU0dWYkZOTTRtOGdRIiBuYW1lPSJpc011bHRpcGxlQWxsb2NhdGUiPg0KKyAgICAgIDxjb25zdHJhaW50VHlwZSBocmVmPSJwcGU6L2Vudmlyb25tZW50L29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC51aS9yZXNvdXJjZXMvU3lzTUwxLjRDb25zdHJhaW50RW52aXJvbm1lbnQueG1pIy8vQGNvbnN0cmFpbnRUeXBlcy4wIi8+DQorICAgICAgPHByb3BlcnRpZXMgeHNpOnR5cGU9ImNvbnN0cmFpbnRzOlZhbHVlUHJvcGVydHkiIHhtaTppZD0iX3otT0RIODFYRWVTR1ZiRk5NNG04Z1EiIG5hbWU9InN0ZXJlb3R5cGVOYW1lIiB2YWx1ZT0iU3lzTUw6OkFsbG9jYXRpb25zOjpBbGxvY2F0ZSIvPg0KKyAgICA8L2NvbnN0cmFpbnRzPg0KKyAgPC92aWV3cz4NCisgIDx2aWV3cyB4bWk6aWQ9Il96LU9ESU0xWEVlU0dWYkZOTTRtOGdRIiBuYW1lPSJTaW5nbGUgUHJvYmxlbSIgc2VjdGlvbnM9Il8yeUFfVTgxWEVlU0dWYkZOTTRtOGdRIiBhdXRvbWF0aWNDb250ZXh0PSJ0cnVlIiBkYXRhY29udGV4dHM9Il96LU9EazgxWEVlU0dWYkZOTTRtOGdRIj4NCisgICAgPGNvbnN0cmFpbnRzIHhzaTp0eXBlPSJjb25zdHJhaW50czpTaW1wbGVDb25zdHJhaW50IiB4bWk6aWQ9Il96LU9ESWMxWEVlU0dWYkZOTTRtOGdRIiBuYW1lPSJpc1NpbmdsZVByb2JsZW0iPg0KKyAgICAgIDxjb25zdHJhaW50VHlwZSBocmVmPSJwcGU6L2Vudmlyb25tZW50L29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC51aS9yZXNvdXJjZXMvU3lzTUwxLjRDb25zdHJhaW50RW52aXJvbm1lbnQueG1pIy8vQGNvbnN0cmFpbnRUeXBlcy4wIi8+DQorICAgICAgPHByb3BlcnRpZXMgeHNpOnR5cGU9ImNvbnN0cmFpbnRzOlZhbHVlUHJvcGVydHkiIHhtaTppZD0iX3otT0RJczFYRWVTR1ZiRk5NNG04Z1EiIG5hbWU9InN0ZXJlb3R5cGVOYW1lIiB2YWx1ZT0iU3lzTUw6Ok1vZGVsRWxlbWVudHM6OlByb2JsZW0iLz4NCisgICAgPC9jb25zdHJhaW50cz4NCisgIDwvdmlld3M+DQorICA8dmlld3MgeG1pOmlkPSJfei1PREk4MVhFZVNHVmJGTk00bThnUSIgZWxlbWVudE11bHRpcGxpY2l0eT0iLTEiIG5hbWU9Ik11bHRpcGxlIFByb2JsZW0iIHNlY3Rpb25zPSJfMnlBX1ZNMVhFZVNHVmJGTk00bThnUSIgYXV0b21hdGljQ29udGV4dD0idHJ1ZSIgZGF0YWNvbnRleHRzPSJfei1PRGs4MVhFZVNHVmJGTk00bThnUSI+DQorICAgIDxjb25zdHJhaW50cyB4c2k6dHlwZT0iY29uc3RyYWludHM6U2ltcGxlQ29uc3RyYWludCIgeG1pOmlkPSJfei1PREpNMVhFZVNHVmJGTk00bThnUSIgbmFtZT0iaXNNdWx0aXBsZVByb2JsZW0iPg0KKyAgICAgIDxjb25zdHJhaW50VHlwZSBocmVmPSJwcGU6L2Vudmlyb25tZW50L29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC51aS9yZXNvdXJjZXMvU3lzTUwxLjRDb25zdHJhaW50RW52aXJvbm1lbnQueG1pIy8vQGNvbnN0cmFpbnRUeXBlcy4wIi8+DQorICAgICAgPHByb3BlcnRpZXMgeHNpOnR5cGU9ImNvbnN0cmFpbnRzOlZhbHVlUHJvcGVydHkiIHhtaTppZD0iX3otT0RKYzFYRWVTR1ZiRk5NNG04Z1EiIG5hbWU9InN0ZXJlb3R5cGVOYW1lIiB2YWx1ZT0iU3lzTUw6Ok1vZGVsRWxlbWVudHM6OlByb2JsZW0iLz4NCisgICAgPC9jb25zdHJhaW50cz4NCisgIDwvdmlld3M+DQorICA8dmlld3MgeG1pOmlkPSJfei1PREpzMVhFZVNHVmJGTk00bThnUSIgbmFtZT0iU2luZ2xlIENvbmZvcm0iIHNlY3Rpb25zPSJfMnlBX1ZjMVhFZVNHVmJGTk00bThnUSIgYXV0b21hdGljQ29udGV4dD0idHJ1ZSIgZGF0YWNvbnRleHRzPSJfei1PRGxNMVhFZVNHVmJGTk00bThnUSI+DQorICAgIDxjb25zdHJhaW50cyB4c2k6dHlwZT0iY29uc3RyYWludHM6U2ltcGxlQ29uc3RyYWludCIgeG1pOmlkPSJfei1PREo4MVhFZVNHVmJGTk00bThnUSIgbmFtZT0iaXNTaW5nbGVDb25mb3JtIj4NCisgICAgICA8Y29uc3RyYWludFR5cGUgaHJlZj0icHBlOi9lbnZpcm9ubWVudC9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQudWkvcmVzb3VyY2VzL1N5c01MMS40Q29uc3RyYWludEVudmlyb25tZW50LnhtaSMvL0Bjb25zdHJhaW50VHlwZXMuMCIvPg0KKyAgICAgIDxwcm9wZXJ0aWVzIHhzaTp0eXBlPSJjb25zdHJhaW50czpWYWx1ZVByb3BlcnR5IiB4bWk6aWQ9Il96LU9ES00xWEVlU0dWYkZOTTRtOGdRIiBuYW1lPSJzdGVyZW90eXBlTmFtZSIgdmFsdWU9IlN5c01MOjpNb2RlbEVsZW1lbnRzOjpDb25mb3JtIi8+DQorICAgIDwvY29uc3RyYWludHM+DQorICA8L3ZpZXdzPg0KKyAgPHZpZXdzIHhtaTppZD0iX3otT0RLYzFYRWVTR1ZiRk5NNG04Z1EiIGVsZW1lbnRNdWx0aXBsaWNpdHk9Ii0xIiBuYW1lPSJNdWx0aXBsZSBDb25mb3JtIiBzZWN0aW9ucz0iXzJ5QV9WczFYRWVTR1ZiRk5NNG04Z1EiIGF1dG9tYXRpY0NvbnRleHQ9InRydWUiIGRhdGFjb250ZXh0cz0iX3otT0RsTTFYRWVTR1ZiRk5NNG04Z1EiPg0KKyAgICA8Y29uc3RyYWludHMgeHNpOnR5cGU9ImNvbnN0cmFpbnRzOlNpbXBsZUNvbnN0cmFpbnQiIHhtaTppZD0iX3otT0RLczFYRWVTR1ZiRk5NNG04Z1EiIG5hbWU9ImlzTXVsdGlwbGVDb25mb3JtIj4NCisgICAgICA8Y29uc3RyYWludFR5cGUgaHJlZj0icHBlOi9lbnZpcm9ubWVudC9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQudWkvcmVzb3VyY2VzL1N5c01MMS40Q29uc3RyYWludEVudmlyb25tZW50LnhtaSMvL0Bjb25zdHJhaW50VHlwZXMuMCIvPg0KKyAgICAgIDxwcm9wZXJ0aWVzIHhzaTp0eXBlPSJjb25zdHJhaW50czpWYWx1ZVByb3BlcnR5IiB4bWk6aWQ9Il96LU9ESzgxWEVlU0dWYkZOTTRtOGdRIiBuYW1lPSJzdGVyZW90eXBlTmFtZSIgdmFsdWU9IlN5c01MOjpNb2RlbEVsZW1lbnRzOjpDb25mb3JtIi8+DQorICAgIDwvY29uc3RyYWludHM+DQorICA8L3ZpZXdzPg0KKyAgPHZpZXdzIHhtaTppZD0iX3otT0RMTTFYRWVTR1ZiRk5NNG04Z1EiIG5hbWU9IlNpbmdsZSBWaWV3UG9pbnQiIHNlY3Rpb25zPSJfMnlCbVlNMVhFZVNHVmJGTk00bThnUSIgYXV0b21hdGljQ29udGV4dD0idHJ1ZSIgZGF0YWNvbnRleHRzPSJfei1PRGdzMVhFZVNHVmJGTk00bThnUSI+DQorICAgIDxjb25zdHJhaW50cyB4c2k6dHlwZT0iY29uc3RyYWludHM6U2ltcGxlQ29uc3RyYWludCIgeG1pOmlkPSJfei1PRExjMVhFZVNHVmJGTk00bThnUSIgbmFtZT0iaXNTaW5nbGVWaWV3UG9pbnQiPg0KKyAgICAgIDxjb25zdHJhaW50VHlwZSBocmVmPSJwcGU6L2Vudmlyb25tZW50L29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC51aS9yZXNvdXJjZXMvU3lzTUwxLjRDb25zdHJhaW50RW52aXJvbm1lbnQueG1pIy8vQGNvbnN0cmFpbnRUeXBlcy4wIi8+DQorICAgICAgPHByb3BlcnRpZXMgeHNpOnR5cGU9ImNvbnN0cmFpbnRzOlZhbHVlUHJvcGVydHkiIHhtaTppZD0iX3otT0RMczFYRWVTR1ZiRk5NNG04Z1EiIG5hbWU9InN0ZXJlb3R5cGVOYW1lIiB2YWx1ZT0iU3lzTUw6Ok1vZGVsRWxlbWVudHM6OlZpZXdQb2ludCIvPg0KKyAgICA8L2NvbnN0cmFpbnRzPg0KKyAgPC92aWV3cz4NCisgIDx2aWV3cyB4bWk6aWQ9Il96LU9ETDgxWEVlU0dWYkZOTTRtOGdRIiBlbGVtZW50TXVsdGlwbGljaXR5PSItMSIgbmFtZT0iTXVsdGlwbGUgVmlld1BvaW50IiBzZWN0aW9ucz0iXzJ5Qm1ZYzFYRWVTR1ZiRk5NNG04Z1EiIGF1dG9tYXRpY0NvbnRleHQ9InRydWUiIGRhdGFjb250ZXh0cz0iX3otT0RnczFYRWVTR1ZiRk5NNG04Z1EiPg0KKyAgICA8Y29uc3RyYWludHMgeHNpOnR5cGU9ImNvbnN0cmFpbnRzOlNpbXBsZUNvbnN0cmFpbnQiIHhtaTppZD0iX3otT0RNTTFYRWVTR1ZiRk5NNG04Z1EiIG5hbWU9ImlzTXVsdGlwbGVWaWV3UG9pbnQiPg0KKyAgICAgIDxjb25zdHJhaW50VHlwZSBocmVmPSJwcGU6L2Vudmlyb25tZW50L29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC51aS9yZXNvdXJjZXMvU3lzTUwxLjRDb25zdHJhaW50RW52aXJvbm1lbnQueG1pIy8vQGNvbnN0cmFpbnRUeXBlcy4wIi8+DQorICAgICAgPHByb3BlcnRpZXMgeHNpOnR5cGU9ImNvbnN0cmFpbnRzOlZhbHVlUHJvcGVydHkiIHhtaTppZD0iX3otT0RNYzFYRWVTR1ZiRk5NNG04Z1EiIG5hbWU9InN0ZXJlb3R5cGVOYW1lIiB2YWx1ZT0iU3lzTUw6Ok1vZGVsRWxlbWVudHM6OlZpZXdQb2ludCIvPg0KKyAgICA8L2NvbnN0cmFpbnRzPg0KKyAgPC92aWV3cz4NCisgIDx2aWV3cyB4bWk6aWQ9Il96LU9ETXMxWEVlU0dWYkZOTTRtOGdRIiBuYW1lPSJTaW5nbGUgVmlldyIgc2VjdGlvbnM9Il8yeUNOY00xWEVlU0dWYkZOTTRtOGdRIiBhdXRvbWF0aWNDb250ZXh0PSJ0cnVlIiBkYXRhY29udGV4dHM9Il96LU9EbGMxWEVlU0dWYkZOTTRtOGdRIj4NCisgICAgPGNvbnN0cmFpbnRzIHhzaTp0eXBlPSJjb25zdHJhaW50czpTaW1wbGVDb25zdHJhaW50IiB4bWk6aWQ9Il96LU9ETTgxWEVlU0dWYkZOTTRtOGdRIiBuYW1lPSJpc1NpbmdsZVZpZXciPg0KKyAgICAgIDxjb25zdHJhaW50VHlwZSBocmVmPSJwcGU6L2Vudmlyb25tZW50L29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC51aS9yZXNvdXJjZXMvU3lzTUwxLjRDb25zdHJhaW50RW52aXJvbm1lbnQueG1pIy8vQGNvbnN0cmFpbnRUeXBlcy4wIi8+DQorICAgICAgPHByb3BlcnRpZXMgeHNpOnR5cGU9ImNvbnN0cmFpbnRzOlZhbHVlUHJvcGVydHkiIHhtaTppZD0iX3otT0ROTTFYRWVTR1ZiRk5NNG04Z1EiIG5hbWU9InN0ZXJlb3R5cGVOYW1lIiB2YWx1ZT0iU3lzTUw6Ok1vZGVsRWxlbWVudHM6OlZpZXciLz4NCisgICAgPC9jb25zdHJhaW50cz4NCisgIDwvdmlld3M+DQorICA8dmlld3MgeG1pOmlkPSJfei1PRE5jMVhFZVNHVmJGTk00bThnUSIgZWxlbWVudE11bHRpcGxpY2l0eT0iLTEiIG5hbWU9Ik11bHRpcGxlIFZpZXciIHNlY3Rpb25zPSJfMnlDTmNjMVhFZVNHVmJGTk00bThnUSIgYXV0b21hdGljQ29udGV4dD0idHJ1ZSIgZGF0YWNvbnRleHRzPSJfei1PRGxjMVhFZVNHVmJGTk00bThnUSI+DQorICAgIDxjb25zdHJhaW50cyB4c2k6dHlwZT0iY29uc3RyYWludHM6U2ltcGxlQ29uc3RyYWludCIgeG1pOmlkPSJfei1PRE5zMVhFZVNHVmJGTk00bThnUSIgbmFtZT0iaXNNdWx0aXBsZVZpZXciPg0KKyAgICAgIDxjb25zdHJhaW50VHlwZSBocmVmPSJwcGU6L2Vudmlyb25tZW50L29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC51aS9yZXNvdXJjZXMvU3lzTUwxLjRDb25zdHJhaW50RW52aXJvbm1lbnQueG1pIy8vQGNvbnN0cmFpbnRUeXBlcy4wIi8+DQorICAgICAgPHByb3BlcnRpZXMgeHNpOnR5cGU9ImNvbnN0cmFpbnRzOlZhbHVlUHJvcGVydHkiIHhtaTppZD0iX3otT0ROODFYRWVTR1ZiRk5NNG04Z1EiIG5hbWU9InN0ZXJlb3R5cGVOYW1lIiB2YWx1ZT0iU3lzTUw6Ok1vZGVsRWxlbWVudHM6OlZpZXciLz4NCisgICAgPC9jb25zdHJhaW50cz4NCisgIDwvdmlld3M+DQorICA8dmlld3MgeG1pOmlkPSJfei1PRE9NMVhFZVNHVmJGTk00bThnUSIgbmFtZT0iU2luZ2xlIEVsZW1lbnRHcm91cCIgc2VjdGlvbnM9Il8yeUNOY3MxWEVlU0dWYkZOTTRtOGdRIiBhdXRvbWF0aWNDb250ZXh0PSJ0cnVlIiBkYXRhY29udGV4dHM9Il96LU9EaXMxWEVlU0dWYkZOTTRtOGdRIj4NCisgICAgPGNvbnN0cmFpbnRzIHhzaTp0eXBlPSJjb25zdHJhaW50czpTaW1wbGVDb25zdHJhaW50IiB4bWk6aWQ9Il96LU9ET2MxWEVlU0dWYkZOTTRtOGdRIiBuYW1lPSJpc1NpbmdsZUVsZW1lbnRHcm91cCI+DQorICAgICAgPGNvbnN0cmFpbnRUeXBlIGhyZWY9InBwZTovZW52aXJvbm1lbnQvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnVpL3Jlc291cmNlcy9TeXNNTDEuNENvbnN0cmFpbnRFbnZpcm9ubWVudC54bWkjLy9AY29uc3RyYWludFR5cGVzLjAiLz4NCisgICAgICA8cHJvcGVydGllcyB4c2k6dHlwZT0iY29uc3RyYWludHM6VmFsdWVQcm9wZXJ0eSIgeG1pOmlkPSJfei1PRE9zMVhFZVNHVmJGTk00bThnUSIgbmFtZT0ic3RlcmVvdHlwZU5hbWUiIHZhbHVlPSJTeXNNTDo6TW9kZWxFbGVtZW50czo6RWxlbWVudEdyb3VwIi8+DQorICAgIDwvY29uc3RyYWludHM+DQorICA8L3ZpZXdzPg0KKyAgPHZpZXdzIHhtaTppZD0iX3otT0RPODFYRWVTR1ZiRk5NNG04Z1EiIGVsZW1lbnRNdWx0aXBsaWNpdHk9Ii0xIiBuYW1lPSJNdWx0aXBsZSBFbGVtZW50R3JvdXAiIHNlY3Rpb25zPSJfMnlDMGdNMVhFZVNHVmJGTk00bThnUSIgYXV0b21hdGljQ29udGV4dD0idHJ1ZSIgZGF0YWNvbnRleHRzPSJfei1PRGlzMVhFZVNHVmJGTk00bThnUSI+DQorICAgIDxjb25zdHJhaW50cyB4c2k6dHlwZT0iY29uc3RyYWludHM6U2ltcGxlQ29uc3RyYWludCIgeG1pOmlkPSJfei1PRFBNMVhFZVNHVmJGTk00bThnUSIgbmFtZT0iaXNNdWx0aXBsZUVsZW1lbnRHcm91cCI+DQorICAgICAgPGNvbnN0cmFpbnRUeXBlIGhyZWY9InBwZTovZW52aXJvbm1lbnQvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnVpL3Jlc291cmNlcy9TeXNNTDEuNENvbnN0cmFpbnRFbnZpcm9ubWVudC54bWkjLy9AY29uc3RyYWludFR5cGVzLjAiLz4NCisgICAgICA8cHJvcGVydGllcyB4c2k6dHlwZT0iY29uc3RyYWludHM6VmFsdWVQcm9wZXJ0eSIgeG1pOmlkPSJfei1PRFBjMVhFZVNHVmJGTk00bThnUSIgbmFtZT0ic3RlcmVvdHlwZU5hbWUiIHZhbHVlPSJTeXNNTDo6TW9kZWxFbGVtZW50czo6RWxlbWVudEdyb3VwIi8+DQorICAgIDwvY29uc3RyYWludHM+DQorICA8L3ZpZXdzPg0KKyAgPHZpZXdzIHhtaTppZD0iX3otT0RQczFYRWVTR1ZiRk5NNG04Z1EiIG5hbWU9IlNpbmdsZSBFeHBvc2UiIHNlY3Rpb25zPSJfMnlDMGdjMVhFZVNHVmJGTk00bThnUSIgYXV0b21hdGljQ29udGV4dD0idHJ1ZSIgZGF0YWNvbnRleHRzPSJfei1PRGtzMVhFZVNHVmJGTk00bThnUSI+DQorICAgIDxjb25zdHJhaW50cyB4c2k6dHlwZT0iY29uc3RyYWludHM6U2ltcGxlQ29uc3RyYWludCIgeG1pOmlkPSJfei1PRFA4MVhFZVNHVmJGTk00bThnUSIgbmFtZT0iaXNTaW5nbGVFeHBvc2UiPg0KKyAgICAgIDxjb25zdHJhaW50VHlwZSBocmVmPSJwcGU6L2Vudmlyb25tZW50L29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC51aS9yZXNvdXJjZXMvU3lzTUwxLjRDb25zdHJhaW50RW52aXJvbm1lbnQueG1pIy8vQGNvbnN0cmFpbnRUeXBlcy4wIi8+DQorICAgICAgPHByb3BlcnRpZXMgeHNpOnR5cGU9ImNvbnN0cmFpbnRzOlZhbHVlUHJvcGVydHkiIHhtaTppZD0iX3otT0RRTTFYRWVTR1ZiRk5NNG04Z1EiIG5hbWU9InN0ZXJlb3R5cGVOYW1lIiB2YWx1ZT0iU3lzTUw6Ok1vZGVsRWxlbWVudHM6OkV4cG9zZSIvPg0KKyAgICA8L2NvbnN0cmFpbnRzPg0KKyAgPC92aWV3cz4NCisgIDx2aWV3cyB4bWk6aWQ9Il96LU9EUWMxWEVlU0dWYkZOTTRtOGdRIiBlbGVtZW50TXVsdGlwbGljaXR5PSItMSIgbmFtZT0iTXVsdGlwbGUgRXhwb3NlIiBzZWN0aW9ucz0iXzJ5QzBnczFYRWVTR1ZiRk5NNG04Z1EiIGF1dG9tYXRpY0NvbnRleHQ9InRydWUiIGRhdGFjb250ZXh0cz0iX3otT0RrczFYRWVTR1ZiRk5NNG04Z1EiPg0KKyAgICA8Y29uc3RyYWludHMgeHNpOnR5cGU9ImNvbnN0cmFpbnRzOlNpbXBsZUNvbnN0cmFpbnQiIHhtaTppZD0iX3otT0RRczFYRWVTR1ZiRk5NNG04Z1EiIG5hbWU9ImlzTXVsdGlwbGVFeHBvc2UiPg0KKyAgICAgIDxjb25zdHJhaW50VHlwZSBocmVmPSJwcGU6L2Vudmlyb25tZW50L29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC51aS9yZXNvdXJjZXMvU3lzTUwxLjRDb25zdHJhaW50RW52aXJvbm1lbnQueG1pIy8vQGNvbnN0cmFpbnRUeXBlcy4wIi8+DQorICAgICAgPHByb3BlcnRpZXMgeHNpOnR5cGU9ImNvbnN0cmFpbnRzOlZhbHVlUHJvcGVydHkiIHhtaTppZD0iX3otT0RRODFYRWVTR1ZiRk5NNG04Z1EiIG5hbWU9InN0ZXJlb3R5cGVOYW1lIiB2YWx1ZT0iU3lzTUw6Ok1vZGVsRWxlbWVudHM6OkV4cG9zZSIvPg0KKyAgICA8L2NvbnN0cmFpbnRzPg0KKyAgPC92aWV3cz4NCisgIDx2aWV3cyB4bWk6aWQ9Il96LU9EUk0xWEVlU0dWYkZOTTRtOGdRIiBuYW1lPSJTaW5nbGUgU3Rha2Vob2xkZXIiIHNlY3Rpb25zPSJfMnlDMGc4MVhFZVNHVmJGTk00bThnUSIgYXV0b21hdGljQ29udGV4dD0idHJ1ZSIgZGF0YWNvbnRleHRzPSJfei1PRG1NMVhFZVNHVmJGTk00bThnUSI+DQorICAgIDxjb25zdHJhaW50cyB4c2k6dHlwZT0iY29uc3RyYWludHM6U2ltcGxlQ29uc3RyYWludCIgeG1pOmlkPSJfei1PRFJjMVhFZVNHVmJGTk00bThnUSIgbmFtZT0iaXNTaW5nbGVTdGFrZWhvbGRlciI+DQorICAgICAgPGNvbnN0cmFpbnRUeXBlIGhyZWY9InBwZTovZW52aXJvbm1lbnQvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnVpL3Jlc291cmNlcy9TeXNNTDEuNENvbnN0cmFpbnRFbnZpcm9ubWVudC54bWkjLy9AY29uc3RyYWludFR5cGVzLjAiLz4NCisgICAgICA8cHJvcGVydGllcyB4c2k6dHlwZT0iY29uc3RyYWludHM6VmFsdWVQcm9wZXJ0eSIgeG1pOmlkPSJfei1PRFJzMVhFZVNHVmJGTk00bThnUSIgbmFtZT0ic3RlcmVvdHlwZU5hbWUiIHZhbHVlPSJTeXNNTDo6TW9kZWxFbGVtZW50czo6U3Rha2Vob2xkZXIiLz4NCisgICAgPC9jb25zdHJhaW50cz4NCisgIDwvdmlld3M+DQorICA8dmlld3MgeG1pOmlkPSJfei1PRFI4MVhFZVNHVmJGTk00bThnUSIgZWxlbWVudE11bHRpcGxpY2l0eT0iLTEiIG5hbWU9Ik11bHRpcGxlIFN0YWtlaG9sZGVyIiBzZWN0aW9ucz0iXzJ5QzBoTTFYRWVTR1ZiRk5NNG04Z1EiIGF1dG9tYXRpY0NvbnRleHQ9InRydWUiIGRhdGFjb250ZXh0cz0iX3otT0RtTTFYRWVTR1ZiRk5NNG04Z1EiPg0KKyAgICA8Y29uc3RyYWludHMgeHNpOnR5cGU9ImNvbnN0cmFpbnRzOlNpbXBsZUNvbnN0cmFpbnQiIHhtaTppZD0iX3otT0RTTTFYRWVTR1ZiRk5NNG04Z1EiIG5hbWU9ImlzTXVsdGlwbGVTdGFrZWhvbGRlciI+DQorICAgICAgPGNvbnN0cmFpbnRUeXBlIGhyZWY9InBwZTovZW52aXJvbm1lbnQvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnVpL3Jlc291cmNlcy9TeXNNTDEuNENvbnN0cmFpbnRFbnZpcm9ubWVudC54bWkjLy9AY29uc3RyYWludFR5cGVzLjAiLz4NCisgICAgICA8cHJvcGVydGllcyB4c2k6dHlwZT0iY29uc3RyYWludHM6VmFsdWVQcm9wZXJ0eSIgeG1pOmlkPSJfei1PRFNjMVhFZVNHVmJGTk00bThnUSIgbmFtZT0ic3RlcmVvdHlwZU5hbWUiIHZhbHVlPSJTeXNNTDo6TW9kZWxFbGVtZW50czo6U3Rha2Vob2xkZXIiLz4NCisgICAgPC9jb25zdHJhaW50cz4NCisgIDwvdmlld3M+DQorICA8dmlld3MgeG1pOmlkPSJfei1PRFNzMVhFZVNHVmJGTk00bThnUSIgbmFtZT0iU2luZ2xlIFJhdGlvbmFsZSIgc2VjdGlvbnM9Il8yeURia00xWEVlU0dWYkZOTTRtOGdRIiBhdXRvbWF0aWNDb250ZXh0PSJ0cnVlIiBkYXRhY29udGV4dHM9Il96LU9Ea00xWEVlU0dWYkZOTTRtOGdRIj4NCisgICAgPGNvbnN0cmFpbnRzIHhzaTp0eXBlPSJjb25zdHJhaW50czpTaW1wbGVDb25zdHJhaW50IiB4bWk6aWQ9Il96LU9EUzgxWEVlU0dWYkZOTTRtOGdRIiBuYW1lPSJpc1NpbmdsZVJhdGlvbmFsZSI+DQorICAgICAgPGNvbnN0cmFpbnRUeXBlIGhyZWY9InBwZTovZW52aXJvbm1lbnQvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnVpL3Jlc291cmNlcy9TeXNNTDEuNENvbnN0cmFpbnRFbnZpcm9ubWVudC54bWkjLy9AY29uc3RyYWludFR5cGVzLjAiLz4NCisgICAgICA8cHJvcGVydGllcyB4c2k6dHlwZT0iY29uc3RyYWludHM6VmFsdWVQcm9wZXJ0eSIgeG1pOmlkPSJfei1PRFRNMVhFZVNHVmJGTk00bThnUSIgbmFtZT0ic3RlcmVvdHlwZU5hbWUiIHZhbHVlPSJTeXNNTDo6TW9kZWxFbGVtZW50czo6UmF0aW9uYWxlIi8+DQorICAgIDwvY29uc3RyYWludHM+DQorICA8L3ZpZXdzPg0KKyAgPHZpZXdzIHhtaTppZD0iX3otT0RUYzFYRWVTR1ZiRk5NNG04Z1EiIGVsZW1lbnRNdWx0aXBsaWNpdHk9Ii0xIiBuYW1lPSJNdWx0aXBsZSBSYXRpb25hbGUiIHNlY3Rpb25zPSJfMnlEYmtjMVhFZVNHVmJGTk00bThnUSIgYXV0b21hdGljQ29udGV4dD0idHJ1ZSIgZGF0YWNvbnRleHRzPSJfei1PRGtNMVhFZVNHVmJGTk00bThnUSI+DQorICAgIDxjb25zdHJhaW50cyB4c2k6dHlwZT0iY29uc3RyYWludHM6U2ltcGxlQ29uc3RyYWludCIgeG1pOmlkPSJfei1PRFRzMVhFZVNHVmJGTk00bThnUSIgbmFtZT0iaXNNdWx0aXBsZVJhdGlvbmFsZSI+DQorICAgICAgPGNvbnN0cmFpbnRUeXBlIGhyZWY9InBwZTovZW52aXJvbm1lbnQvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnVpL3Jlc291cmNlcy9TeXNNTDEuNENvbnN0cmFpbnRFbnZpcm9ubWVudC54bWkjLy9AY29uc3RyYWludFR5cGVzLjAiLz4NCisgICAgICA8cHJvcGVydGllcyB4c2k6dHlwZT0iY29uc3RyYWludHM6VmFsdWVQcm9wZXJ0eSIgeG1pOmlkPSJfei1PRFQ4MVhFZVNHVmJGTk00bThnUSIgbmFtZT0ic3RlcmVvdHlwZU5hbWUiIHZhbHVlPSJTeXNNTDo6TW9kZWxFbGVtZW50czo6UmF0aW9uYWxlIi8+DQorICAgIDwvY29uc3RyYWludHM+DQorICA8L3ZpZXdzPg0KKyAgPGRhdGFDb250ZXh0cyB4bWk6aWQ9Il96LU9EVU0xWEVlU0dWYkZOTTRtOGdRIiBuYW1lPSJTeXNNTCI+DQorICAgIDxlbGVtZW50cyB4c2k6dHlwZT0iY29udGV4dHM6RGF0YUNvbnRleHRQYWNrYWdlIiB4bWk6aWQ9Il96LU9EVWMxWEVlU0dWYkZOTTRtOGdRIiBuYW1lPSJBY3Rpdml0aWVzIj4NCisgICAgICA8ZWxlbWVudHMgeG1pOmlkPSJfei1PRFVzMVhFZVNHVmJGTk00bThnUSIgbmFtZT0iRGlzY3JldGUiLz4NCisgICAgICA8ZWxlbWVudHMgeG1pOmlkPSJfei1PRFU4MVhFZVNHVmJGTk00bThnUSIgbmFtZT0iT3ZlcndyaXRlIj4NCisgICAgICAgIDxzdXBlcnR5cGVzIGhyZWY9InBwZTovY29udGV4dC9vcmcuZWNsaXBzZS5wYXB5cnVzLnVtbC5wcm9wZXJ0aWVzL01vZGVsL1VNTC9VTUwuY3R4I182OTB6YjZESkVlU1p4ZkNYelp6My13Ii8+DQorICAgICAgPC9lbGVtZW50cz4NCisgICAgICA8ZWxlbWVudHMgeG1pOmlkPSJfei1PRFZNMVhFZVNHVmJGTk00bThnUSIgbmFtZT0iQ29udHJvbE9wZXJhdG9yIj4NCisgICAgICAgIDxzdXBlcnR5cGVzIGhyZWY9InBwZTovY29udGV4dC9vcmcuZWNsaXBzZS5wYXB5cnVzLnVtbC5wcm9wZXJ0aWVzL01vZGVsL1VNTC9VTUwuY3R4I182OTB5UUtESkVlU1p4ZkNYelp6My13Ii8+DQorICAgICAgICA8c3VwZXJ0eXBlcyBocmVmPSJwcGU6L2NvbnRleHQvb3JnLmVjbGlwc2UucGFweXJ1cy51bWwucHJvcGVydGllcy9Nb2RlbC9VTUwvVU1MLmN0eCNfNjkweVZhREpFZVNaeGZDWHpaejMtdyIvPg0KKyAgICAgIDwvZWxlbWVudHM+DQorICAgICAgPGVsZW1lbnRzIHhtaTppZD0iX3otT0RWYzFYRWVTR1ZiRk5NNG04Z1EiIG5hbWU9IkNvbnRpbnVvdXMiLz4NCisgICAgICA8ZWxlbWVudHMgeG1pOmlkPSJfei1PRFZzMVhFZVNHVmJGTk00bThnUSIgbmFtZT0iUHJvYmFiaWxpdHkiPg0KKyAgICAgICAgPHByb3BlcnRpZXMgeG1pOmlkPSJfei1PRFY4MVhFZVNHVmJGTk00bThnUSIgbmFtZT0icHJvYmFiaWxpdHkiIHR5cGU9IlJlZmVyZW5jZSIvPg0KKyAgICAgICAgPHN1cGVydHlwZXMgaHJlZj0icHBlOi9jb250ZXh0L29yZy5lY2xpcHNlLnBhcHlydXMudW1sLnByb3BlcnRpZXMvTW9kZWwvVU1ML1VNTC5jdHgjXzY5MHpWS0RKRWVTWnhmQ1h6WnozLXciLz4NCisgICAgICAgIDxzdXBlcnR5cGVzIGhyZWY9InBwZTovY29udGV4dC9vcmcuZWNsaXBzZS5wYXB5cnVzLnVtbC5wcm9wZXJ0aWVzL01vZGVsL1VNTC9VTUwuY3R4I182OTB5MDZESkVlU1p4ZkNYelp6My13Ii8+DQorICAgICAgPC9lbGVtZW50cz4NCisgICAgICA8ZWxlbWVudHMgeG1pOmlkPSJfei1PRFdNMVhFZVNHVmJGTk00bThnUSIgbmFtZT0iT3B0aW9uYWwiPg0KKyAgICAgICAgPHN1cGVydHlwZXMgaHJlZj0icHBlOi9jb250ZXh0L29yZy5lY2xpcHNlLnBhcHlydXMudW1sLnByb3BlcnRpZXMvTW9kZWwvVU1ML1VNTC5jdHgjXzY5MHlCYURKRWVTWnhmQ1h6WnozLXciLz4NCisgICAgICA8L2VsZW1lbnRzPg0KKyAgICAgIDxlbGVtZW50cyB4bWk6aWQ9Il96LU9EV2MxWEVlU0dWYkZOTTRtOGdRIiBuYW1lPSJSYXRlIj4NCisgICAgICAgIDxwcm9wZXJ0aWVzIHhtaTppZD0iX3otT0RXczFYRWVTR1ZiRk5NNG04Z1EiIG5hbWU9InJhdGUiIHR5cGU9IlJlZmVyZW5jZSIvPg0KKyAgICAgIDwvZWxlbWVudHM+DQorICAgICAgPGVsZW1lbnRzIHhtaTppZD0iX3otT0RXODFYRWVTR1ZiRk5NNG04Z1EiIG5hbWU9Ik5vQnVmZmVyIj4NCisgICAgICAgIDxzdXBlcnR5cGVzIGhyZWY9InBwZTovY29udGV4dC9vcmcuZWNsaXBzZS5wYXB5cnVzLnVtbC5wcm9wZXJ0aWVzL01vZGVsL1VNTC9VTUwuY3R4I182OTB6YjZESkVlU1p4ZkNYelp6My13Ii8+DQorICAgICAgPC9lbGVtZW50cz4NCisgICAgPC9lbGVtZW50cz4NCisgICAgPGVsZW1lbnRzIHhzaTp0eXBlPSJjb250ZXh0czpEYXRhQ29udGV4dFBhY2thZ2UiIHhtaTppZD0iX3otT0RYTTFYRWVTR1ZiRk5NNG04Z1EiIG5hbWU9IkFsbG9jYXRpb25zIj4NCisgICAgICA8ZWxlbWVudHMgeG1pOmlkPSJfei1PRFhjMVhFZVNHVmJGTk00bThnUSIgbmFtZT0iQWxsb2NhdGVBY3Rpdml0eVBhcnRpdGlvbiI+DQorICAgICAgICA8c3VwZXJ0eXBlcyBocmVmPSJwcGU6L2NvbnRleHQvb3JnLmVjbGlwc2UucGFweXJ1cy51bWwucHJvcGVydGllcy9Nb2RlbC9VTUwvVU1MLmN0eCNfNjkwelg2REpFZVNaeGZDWHpaejMtdyIvPg0KKyAgICAgIDwvZWxlbWVudHM+DQorICAgICAgPGVsZW1lbnRzIHhtaTppZD0iX3otT0RYczFYRWVTR1ZiRk5NNG04Z1EiIG5hbWU9IkFsbG9jYXRlIi8+DQorICAgIDwvZWxlbWVudHM+DQorICAgIDxlbGVtZW50cyB4c2k6dHlwZT0iY29udGV4dHM6RGF0YUNvbnRleHRQYWNrYWdlIiB4bWk6aWQ9Il96LU9EWDgxWEVlU0dWYkZOTTRtOGdRIiBuYW1lPSJEZXByZWNhdGVkRWxlbWVudHMiPg0KKyAgICAgIDxlbGVtZW50cyB4bWk6aWQ9Il96LU9EWU0xWEVlU0dWYkZOTTRtOGdRIiBuYW1lPSJBbGxvY2F0ZWQiPg0KKyAgICAgICAgPHByb3BlcnRpZXMgeG1pOmlkPSJfei1PRFljMVhFZVNHVmJGTk00bThnUSIgbmFtZT0iYWxsb2NhdGVkRnJvbSIgdHlwZT0iUmVmZXJlbmNlIiBtdWx0aXBsaWNpdHk9Ii0xIiBkZXNjcmlwdGlvbj0iUmV2ZXJzZSBvZiBhbGxvY2F0ZWRUbzogdGhlIGVsZW1lbnQgdHlwZXMgYW5kIG5hbWVzIG9mIHRoZSBzZXQgb2YgZWxlbWVudHMgdGhhdCBhcmUgY2xpZW50cyAoZnJvbSkgb2YgYW4gJiN4YWI7YWxsb2NhdGUmI3hiYjsgd2hvc2Ugc3VwcGxpZXIgaXMgZXh0ZW5kZWQgYnkgdGhpcyBzdGVyZW90eXBlIChpbnN0YW5jZSkuIFRoZSBzYW1lIGNoYXJhY3RlcmlzdGljcyBhcHBseSBhcyB0byAvYWxsb2NhdGVkVG8uIEVhY2ggYWxsb2NhdGVkRnJvbSBwcm9wZXJ0eSB3aWxsIGJlIGV4cHJlc3NlZCBhcyAmI3hhYjtlbGVtZW50VHlwZSYjeGJiOyBFbGVtZW50TmFtZS4iLz4NCisgICAgICAgIDxwcm9wZXJ0aWVzIHhtaTppZD0iX3otT0RZczFYRWVTR1ZiRk5NNG04Z1EiIG5hbWU9ImFsbG9jYXRlZFRvIiB0eXBlPSJSZWZlcmVuY2UiIG11bHRpcGxpY2l0eT0iLTEiIGRlc2NyaXB0aW9uPSJUaGUgZWxlbWVudCB0eXBlcyBhbmQgbmFtZXMgb2YgdGhlIHNldCBvZiBlbGVtZW50cyB0aGF0IGFyZSBzdXBwbGllcnMgKCYjeDIwMWM7dG8mI3gyMDFkOyBlbmQgb2YgdGhlIGNvbmNyZXRlIHN5bnRheCkgb2YgYW4gJiN4YWI7YWxsb2NhdGUmI3hiYjsgd2hvc2UgY2xpZW50IGlzIGV4dGVuZGVkIGJ5IHRoaXMgc3RlcmVvdHlwZSAoaW5zdGFuY2UpLiBUaGlzIHByb3BlcnR5IGlzIHRoZSB1bmlvbiBvZiBhbGwgc3VwcGxpZXJzIHRvIHdoaWNoIHRoaXMgaW5zdGFuY2UgaXMgdGhlIGNsaWVudCwgaS5lLiwgdGhlcmUgbWF5IGJlIG1vcmUgdGhhbiBvbmUgL2FsbG9jYXRlZFRvIHByb3BlcnR5IHBlciBhbGxvY2F0ZWQgbW9kZWwgZWxlbWVudC4gRWFjaCBhbGxvY2F0ZWRUbyBwcm9wZXJ0eSB3aWxsIGJlIGV4cHJlc3NlZCBhcyAmI3hhYjtlbGVtZW50VHlwZSYjeGJiOyBFbGVtZW50TmFtZS4iLz4NCisgICAgICAgIDxzdXBlcnR5cGVzIGhyZWY9InBwZTovY29udGV4dC9vcmcuZWNsaXBzZS5wYXB5cnVzLnVtbC5wcm9wZXJ0aWVzL01vZGVsL1VNTC9VTUwuY3R4I182OTB4azZESkVlU1p4ZkNYelp6My13Ii8+DQorICAgICAgPC9lbGVtZW50cz4NCisgICAgICA8ZWxlbWVudHMgeG1pOmlkPSJfei1PRFk4MVhFZVNHVmJGTk00bThnUSIgbmFtZT0iUmVxdWlyZW1lbnRSZWxhdGVkIj4NCisgICAgICAgIDxwcm9wZXJ0aWVzIHhtaTppZD0iX3otT0RaTTFYRWVTR1ZiRk5NNG04Z1EiIG5hbWU9IlRyYWNlZEZyb20iIHR5cGU9IlJlZmVyZW5jZSIgbXVsdGlwbGljaXR5PSItMSIgZGVzY3JpcHRpb249IkRlcml2ZWQgZnJvbSBhbGwgcmVxdWlyZW1lbnRzIHRoYXQgYXJlIHRoZSBzdXBwbGllciBvZiBhICYjeGFiO3RyYWNlJiN4YmI7IHJlbGF0aW9uc2hpcCBmb3Igd2hpY2ggdGhpcyBlbGVtZW50IGlzIGEgY2xpZW50LiIvPg0KKyAgICAgICAgPHByb3BlcnRpZXMgeG1pOmlkPSJfei1PRFpjMVhFZVNHVmJGTk00bThnUSIgbmFtZT0iU2F0aXNmaWVzIiB0eXBlPSJSZWZlcmVuY2UiIG11bHRpcGxpY2l0eT0iLTEiIGRlc2NyaXB0aW9uPSJEZXJpdmVkIGZyb20gYWxsIHJlcXVpcmVtZW50cyB0aGF0IGFyZSB0aGUgc3VwcGxpZXIgb2YgYSAmI3hhYjtzYXRpc2Z5JiN4YmI7IHJlbGF0aW9uc2hpcCBmb3Igd2hpY2ggdGhpcyBlbGVtZW50IGlzIGEgY2xpZW50LiIvPg0KKyAgICAgICAgPHByb3BlcnRpZXMgeG1pOmlkPSJfei1PRFpzMVhFZVNHVmJGTk00bThnUSIgbmFtZT0iUmVmaW5lcyIgdHlwZT0iUmVmZXJlbmNlIiBtdWx0aXBsaWNpdHk9Ii0xIiBkZXNjcmlwdGlvbj0iRGVyaXZlZCBmcm9tIGFsbCByZXF1aXJlbWVudHMgdGhhdCBhcmUgdGhlIHN1cHBsaWVyIG9mIGEgJiN4YWI7cmVmaW5lJiN4YmI7IHJlbGF0aW9uc2hpcCBmb3Igd2hpY2ggdGhpcyBlbGVtZW50IGlzIGEgY2xpZW50LiIvPg0KKyAgICAgICAgPHByb3BlcnRpZXMgeG1pOmlkPSJfei1PRFo4MVhFZVNHVmJGTk00bThnUSIgbmFtZT0iVmVyaWZpZXMiIHR5cGU9IlJlZmVyZW5jZSIgbXVsdGlwbGljaXR5PSItMSIgZGVzY3JpcHRpb249IkRlcml2ZWQgZnJvbSBhbGwgcmVxdWlyZW1lbnRzIHRoYXQgYXJlIHRoZSBzdXBwbGllciBvZiBhICYjeGFiO3ZlcmlmeSYjeGJiOyByZWxhdGlvbnNoaXAgZm9yIHdoaWNoIHRoaXMgZWxlbWVudCBpcyBhIGNsaWVudC4iLz4NCisgICAgICAgIDxzdXBlcnR5cGVzIGhyZWY9InBwZTovY29udGV4dC9vcmcuZWNsaXBzZS5wYXB5cnVzLnVtbC5wcm9wZXJ0aWVzL01vZGVsL1VNTC9VTUwuY3R4I182OTB4azZESkVlU1p4ZkNYelp6My13Ii8+DQorICAgICAgPC9lbGVtZW50cz4NCisgICAgICA8ZWxlbWVudHMgeG1pOmlkPSJfei1PRGFNMVhFZVNHVmJGTk00bThnUSIgbmFtZT0iRmxvd1NwZWNpZmljYXRpb24iPg0KKyAgICAgICAgPHN1cGVydHlwZXMgaHJlZj0icHBlOi9jb250ZXh0L29yZy5lY2xpcHNlLnBhcHlydXMudW1sLnByb3BlcnRpZXMvTW9kZWwvVU1ML1VNTC5jdHgjXzY5MHliS0RKRWVTWnhmQ1h6WnozLXciLz4NCisgICAgICA8L2VsZW1lbnRzPg0KKyAgICAgIDxlbGVtZW50cyB4bWk6aWQ9Il96LU9EYWMxWEVlU0dWYkZOTTRtOGdRIiBuYW1lPSJEZXByZWNhdGVkIj4NCisgICAgICAgIDxwcm9wZXJ0aWVzIHhtaTppZD0iX3otT0RhczFYRWVTR1ZiRk5NNG04Z1EiIG5hbWU9ImRlcHJlY2F0ZWRSZWFzb24iLz4NCisgICAgICAgIDxzdXBlcnR5cGVzIGhyZWY9InBwZTovY29udGV4dC9vcmcuZWNsaXBzZS5wYXB5cnVzLnVtbC5wcm9wZXJ0aWVzL01vZGVsL1VNTC9VTUwuY3R4I182OTB5WHFESkVlU1p4ZkNYelp6My13Ii8+DQorICAgICAgICA8c3VwZXJ0eXBlcyBocmVmPSJwcGU6L2NvbnRleHQvb3JnLmVjbGlwc2UucGFweXJ1cy51bWwucHJvcGVydGllcy9Nb2RlbC9VTUwvVU1MLmN0eCNfNjkwekM2REpFZVNaeGZDWHpaejMtdyIvPg0KKyAgICAgICAgPHN1cGVydHlwZXMgaHJlZj0icHBlOi9jb250ZXh0L29yZy5lY2xpcHNlLnBhcHlydXMudW1sLnByb3BlcnRpZXMvTW9kZWwvVU1ML1VNTC5jdHgjXzY5MHh1NkRKRWVTWnhmQ1h6WnozLXciLz4NCisgICAgICAgIDxzdXBlcnR5cGVzIGhyZWY9InBwZTovY29udGV4dC9vcmcuZWNsaXBzZS5wYXB5cnVzLnVtbC5wcm9wZXJ0aWVzL01vZGVsL1VNTC9VTUwuY3R4I182OTB5RzZESkVlU1p4ZkNYelp6My13Ii8+DQorICAgICAgICA8c3VwZXJ0eXBlcyBocmVmPSJwcGU6L2NvbnRleHQvb3JnLmVjbGlwc2UucGFweXJ1cy51bWwucHJvcGVydGllcy9Nb2RlbC9VTUwvVU1MLmN0eCNfNjkweDdhREpFZVNaeGZDWHpaejMtdyIvPg0KKyAgICAgICAgPHN1cGVydHlwZXMgaHJlZj0icHBlOi9jb250ZXh0L29yZy5lY2xpcHNlLnBhcHlydXMudW1sLnByb3BlcnRpZXMvTW9kZWwvVU1ML1VNTC5jdHgjXzY5MHh0cURKRWVTWnhmQ1h6WnozLXciLz4NCisgICAgICAgIDxzdXBlcnR5cGVzIGhyZWY9InBwZTovY29udGV4dC9vcmcuZWNsaXBzZS5wYXB5cnVzLnVtbC5wcm9wZXJ0aWVzL01vZGVsL1VNTC9VTUwuY3R4I182OTB5MXFESkVlU1p4ZkNYelp6My13Ii8+DQorICAgICAgPC9lbGVtZW50cz4NCisgICAgICA8ZWxlbWVudHMgeG1pOmlkPSJfei1PRGE4MVhFZVNHVmJGTk00bThnUSIgbmFtZT0iRmxvd1BvcnQiPg0KKyAgICAgICAgPHByb3BlcnRpZXMgeG1pOmlkPSJfei1PRGJNMVhFZVNHVmJGTk00bThnUSIgbmFtZT0iZGlyZWN0aW9uIiB0eXBlPSJFbnVtZXJhdGlvbiIgZGVzY3JpcHRpb249IkluZGljYXRlcyB0aGUgZGlyZWN0aW9uIGluIHdoaWNoIGFuIGF0b21pYyBmbG93IHBvcnQgcmVsYXlzIGl0cyBpdGVtcy4gSWYgdGhlIGRpcmVjdGlvbiBpcyBzZXQgdG8gJiN4MjAxYztpbiwmI3gyMDFkOyB0aGVuIHRoZSBpdGVtcyBhcmUgcmVsYXllZCBmcm9tIGFuIGV4dGVybmFsIGNvbm5lY3RvciB2aWEgdGhlIGZsb3cgcG9ydCBpbnRvIHRoZSBmbG93IHBvcnQmI3gyMDE5O3Mgb3duZXIgKG9yIG9uZSBvZiBpdHMgcGFydHMpLiBJZiB0aGUgZGlyZWN0aW9uIGlzIHNldCB0byAmI3gyMDFjO291dCwmI3gyMDFkOyB0aGVuIHRoZSBpdGVtcyBhcmUgcmVsYXllZCBmcm9tIHRoZSBmbG93IHBvcnQmI3gyMDE5O3Mgb3duZXIsIHZpYSB0aGUgZmxvdyBwb3J0LCB0aHJvdWdoIGFuIGV4dGVybmFsIGNvbm5lY3RvciBhdHRhY2hlZCB0byB0aGUgZmxvdyBwb3J0LiBJZiB0aGUgZGlyZWN0aW9uIGlzIHNldCB0byAmI3gyMDFjO2lub3V0LCYjeDIwMWQ7IHRoZW4gaXRlbXMgY2FuIGZsb3cgYm90aCB3YXlzLiBCeSBkZWZhdWx0LCB0aGUgdmFsdWUgaXMgaW5vdXQuIi8+DQorICAgICAgICA8cHJvcGVydGllcyB4bWk6aWQ9Il96LU9EYmMxWEVlU0dWYkZOTTRtOGdRIiBuYW1lPSJpc0F0b21pYyIgdHlwZT0iQm9vbGVhbiIgZGVzY3JpcHRpb249IlRoaXMgaXMgYSBkZXJpdmVkIGF0dHJpYnV0ZSAoZGVyaXZlZCBmcm9tIHRoZSBmbG93IHBvcnQmI3gyMDE5O3MgdHlwZSkuIEZvciBhIGZsb3cgcG9ydCB0eXBlZCBieSBhIGZsb3cgc3BlY2lmaWNhdGlvbiB0aGUgdmFsdWUgb2YgdGhpcyBhdHRyaWJ1dGUgaXMgRmFsc2UsIG90aGVyd2lzZSB0aGUgdmFsdWUgaXMgVHJ1ZS4iLz4NCisgICAgICAgIDxzdXBlcnR5cGVzIGhyZWY9InBwZTovY29udGV4dC9vcmcuZWNsaXBzZS5wYXB5cnVzLnVtbC5wcm9wZXJ0aWVzL01vZGVsL1VNTC9VTUwuY3R4I182OTB5bGFESkVlU1p4ZkNYelp6My13Ii8+DQorICAgICAgPC9lbGVtZW50cz4NCisgICAgPC9lbGVtZW50cz4NCisgICAgPGVsZW1lbnRzIHhzaTp0eXBlPSJjb250ZXh0czpEYXRhQ29udGV4dFBhY2thZ2UiIHhtaTppZD0iX3otT0RiczFYRWVTR1ZiRk5NNG04Z1EiIG5hbWU9IkNvbnN0cmFpbnRCbG9ja3MiPg0KKyAgICAgIDxlbGVtZW50cyB4bWk6aWQ9Il96LU9EYjgxWEVlU0dWYkZOTTRtOGdRIiBuYW1lPSJDb25zdHJhaW50QmxvY2siLz4NCisgICAgPC9lbGVtZW50cz4NCisgICAgPGVsZW1lbnRzIHhzaTp0eXBlPSJjb250ZXh0czpEYXRhQ29udGV4dFBhY2thZ2UiIHhtaTppZD0iX3otT0RjTTFYRWVTR1ZiRk5NNG04Z1EiIG5hbWU9IlBvcnRzYW5kRmxvd3MiPg0KKyAgICAgIDxlbGVtZW50cyB4bWk6aWQ9Il96LU9EY2MxWEVlU0dWYkZOTTRtOGdRIiBuYW1lPSJGbG93UHJvcGVydHkiPg0KKyAgICAgICAgPHByb3BlcnRpZXMgeG1pOmlkPSJfei1PRGNzMVhFZVNHVmJGTk00bThnUSIgbmFtZT0iZGlyZWN0aW9uIiB0eXBlPSJFbnVtZXJhdGlvbiIgZGVzY3JpcHRpb249IlNwZWNpZmllcyBpZiB0aGUgcHJvcGVydHkgdmFsdWUgaXMgcmVjZWl2ZWQgZnJvbSBhbiBleHRlcm5hbCBibG9jayAoZGlyZWN0aW9uPSYjeDIwMWM7aW4mI3gyMDFkOyksIHRyYW5zbWl0dGVkIHRvIGFuIGV4dGVybmFsIEJsb2NrIChkaXJlY3Rpb249JiN4MjAxYztvdXQmI3gyMDFkOykgb3IgYm90aCAoZGlyZWN0aW9uPSYjeDIwMWM7aW5vdXQmI3gyMDFkOykuIi8+DQorICAgICAgICA8c3VwZXJ0eXBlcyBocmVmPSJwcGU6L2NvbnRleHQvb3JnLmVjbGlwc2UucGFweXJ1cy51bWwucHJvcGVydGllcy9Nb2RlbC9VTUwvVU1MLmN0eCNfNjkweUc2REpFZVNaeGZDWHpaejMtdyIvPg0KKyAgICAgIDwvZWxlbWVudHM+DQorICAgICAgPGVsZW1lbnRzIHhtaTppZD0iX3otT0RjODFYRWVTR1ZiRk5NNG04Z1EiIG5hbWU9IkRpcmVjdGVkRmVhdHVyZSI+DQorICAgICAgICA8cHJvcGVydGllcyB4bWk6aWQ9Il96LU9EZE0xWEVlU0dWYkZOTTRtOGdRIiBuYW1lPSJmZWF0dXJlRGlyZWN0aW9uIiB0eXBlPSJFbnVtZXJhdGlvbiIvPg0KKyAgICAgICAgPHN1cGVydHlwZXMgaHJlZj0icHBlOi9jb250ZXh0L29yZy5lY2xpcHNlLnBhcHlydXMudW1sLnByb3BlcnRpZXMvTW9kZWwvVU1ML1VNTC5jdHgjXzY5MHg5NkRKRWVTWnhmQ1h6WnozLXciLz4NCisgICAgICA8L2VsZW1lbnRzPg0KKyAgICAgIDxlbGVtZW50cyB4bWk6aWQ9Il96LU9EZGMxWEVlU0dWYkZOTTRtOGdRIiBuYW1lPSJDaGFuZ2VTdHJ1Y3R1cmFsRmVhdHVyZUV2ZW50Ij4NCisgICAgICAgIDxwcm9wZXJ0aWVzIHhtaTppZD0iX3otT0RkczFYRWVTR1ZiRk5NNG04Z1EiIG5hbWU9InN0cnVjdHVyYWxGZWF0dXJlIiB0eXBlPSJSZWZlcmVuY2UiLz4NCisgICAgICAgIDxzdXBlcnR5cGVzIGhyZWY9InBwZTovY29udGV4dC9vcmcuZWNsaXBzZS5wYXB5cnVzLnVtbC5wcm9wZXJ0aWVzL01vZGVsL1VNTC9VTUwuY3R4I182OTB6MGFESkVlU1p4ZkNYelp6My13Ii8+DQorICAgICAgPC9lbGVtZW50cz4NCisgICAgICA8ZWxlbWVudHMgeG1pOmlkPSJfei1PRGQ4MVhFZVNHVmJGTk00bThnUSIgbmFtZT0iSW52b2NhdGlvbk9uTmVzdGVkUG9ydEFjdGlvbiI+DQorICAgICAgICA8cHJvcGVydGllcyB4bWk6aWQ9Il96LU9EZU0xWEVlU0dWYkZOTTRtOGdRIiBuYW1lPSJvbk5lc3RlZFBvcnQiIHR5cGU9IlJlZmVyZW5jZSIgbXVsdGlwbGljaXR5PSItMSIvPg0KKyAgICAgIDwvZWxlbWVudHM+DQorICAgICAgPGVsZW1lbnRzIHhtaTppZD0iX3otT0RlYzFYRWVTR1ZiRk5NNG04Z1EiIG5hbWU9Ikl0ZW1GbG93Ij4NCisgICAgICAgIDxwcm9wZXJ0aWVzIHhtaTppZD0iX3otT0RlczFYRWVTR1ZiRk5NNG04Z1EiIG5hbWU9Iml0ZW1Qcm9wZXJ0eSIgdHlwZT0iUmVmZXJlbmNlIiBkZXNjcmlwdGlvbj0iQW4gb3B0aW9uYWwgcHJvcGVydHkgdGhhdCByZWxhdGVzIHRoZSBmbG93aW5nIGl0ZW0gdG8gdGhlIGluc3RhbmNlcyBvZiB0aGUgY29ubmVjdG9yJiN4MjAxOTtzIGVuY2xvc2luZyBibG9jay4gVGhpcyBwcm9wZXJ0eSBpcyBhcHBsaWNhYmxlIG9ubHkgZm9yIGl0ZW0gZmxvd3MgYXNzaWduZWQgdG8gY29ubmVjdG9ycy4gVGhlIG11bHRpcGxpY2l0eSBpcyB6ZXJvIGlmIHRoZSBpdGVtIGZsb3cgaXMgYXNzaWduZWQgdG8gYW4gQXNzb2NpYXRpb24uIi8+DQorICAgICAgICA8c3VwZXJ0eXBlcyBocmVmPSJwcGU6L2NvbnRleHQvb3JnLmVjbGlwc2UucGFweXJ1cy51bWwucHJvcGVydGllcy9Nb2RlbC9VTUwvVU1MLmN0eCNfNjk2NFBhREpFZVNaeGZDWHpaejMtdyIvPg0KKyAgICAgIDwvZWxlbWVudHM+DQorICAgICAgPGVsZW1lbnRzIHhtaTppZD0iX3otT0RlODFYRWVTR1ZiRk5NNG04Z1EiIG5hbWU9IlByb3h5UG9ydCI+DQorICAgICAgICA8c3VwZXJ0eXBlcyBocmVmPSJwcGU6L2NvbnRleHQvb3JnLmVjbGlwc2UucGFweXJ1cy51bWwucHJvcGVydGllcy9Nb2RlbC9VTUwvVU1MLmN0eCNfNjkweWxhREpFZVNaeGZDWHpaejMtdyIvPg0KKyAgICAgIDwvZWxlbWVudHM+DQorICAgICAgPGVsZW1lbnRzIHhtaTppZD0iX3otT0RmTTFYRWVTR1ZiRk5NNG04Z1EiIG5hbWU9IkFjY2VwdENoYW5nZVN0cnVjdHVyYWxGZWF0dXJlRXZlbnRBY3Rpb24iPg0KKyAgICAgICAgPHN1cGVydHlwZXMgaHJlZj0icHBlOi9jb250ZXh0L29yZy5lY2xpcHNlLnBhcHlydXMudW1sLnByb3BlcnRpZXMvTW9kZWwvVU1ML1VNTC5jdHgjXzY5NjRYcURKRWVTWnhmQ1h6WnozLXciLz4NCisgICAgICA8L2VsZW1lbnRzPg0KKyAgICAgIDxlbGVtZW50cyB4bWk6aWQ9Il96LU9EZmMxWEVlU0dWYkZOTTRtOGdRIiBuYW1lPSJGdWxsUG9ydCI+DQorICAgICAgICA8c3VwZXJ0eXBlcyBocmVmPSJwcGU6L2NvbnRleHQvb3JnLmVjbGlwc2UucGFweXJ1cy51bWwucHJvcGVydGllcy9Nb2RlbC9VTUwvVU1MLmN0eCNfNjkweWxhREpFZVNaeGZDWHpaejMtdyIvPg0KKyAgICAgIDwvZWxlbWVudHM+DQorICAgICAgPGVsZW1lbnRzIHhtaTppZD0iX3otT0RmczFYRWVTR1ZiRk5NNG04Z1EiIG5hbWU9IlRyaWdnZXJPbk5lc3RlZFBvcnQiPg0KKyAgICAgICAgPHByb3BlcnRpZXMgeG1pOmlkPSJfei1PRGY4MVhFZVNHVmJGTk00bThnUSIgbmFtZT0ib25OZXN0ZWRQb3J0IiB0eXBlPSJSZWZlcmVuY2UiIG11bHRpcGxpY2l0eT0iLTEiLz4NCisgICAgICA8L2VsZW1lbnRzPg0KKyAgICAgIDxlbGVtZW50cyB4bWk6aWQ9Il96LU9EZ00xWEVlU0dWYkZOTTRtOGdRIiBuYW1lPSJJbnRlcmZhY2VCbG9jayIvPg0KKyAgICA8L2VsZW1lbnRzPg0KKyAgICA8ZWxlbWVudHMgeHNpOnR5cGU9ImNvbnRleHRzOkRhdGFDb250ZXh0UGFja2FnZSIgeG1pOmlkPSJfei1PRGdjMVhFZVNHVmJGTk00bThnUSIgbmFtZT0iTW9kZWxFbGVtZW50cyI+DQorICAgICAgPGVsZW1lbnRzIHhtaTppZD0iX3otT0RnczFYRWVTR1ZiRk5NNG04Z1EiIG5hbWU9IlZpZXdQb2ludCI+DQorICAgICAgICA8cHJvcGVydGllcyB4bWk6aWQ9Il96LU9EZzgxWEVlU0dWYkZOTTRtOGdRIiBuYW1lPSJzdGFrZWhvbGRlciIgdHlwZT0iUmVmZXJlbmNlIiBtdWx0aXBsaWNpdHk9Ii0xIiBkZXNjcmlwdGlvbj0iU2V0IG9mIHN0YWtlaG9sZGVycy4iLz4NCisgICAgICAgIDxwcm9wZXJ0aWVzIHhtaTppZD0iX3otT0RoTTFYRWVTR1ZiRk5NNG04Z1EiIG5hbWU9InB1cnBvc2UiIGRlc2NyaXB0aW9uPSJUaGUgcHVycG9zZSBhZGRyZXNzZXMgdGhlIHN0YWtlaG9sZGVyIGNvbmNlcm5zLiIvPg0KKyAgICAgICAgPHByb3BlcnRpZXMgeG1pOmlkPSJfei1PRGhjMVhFZVNHVmJGTk00bThnUSIgbmFtZT0iY29uY2Vybkxpc3QiIHR5cGU9IlJlZmVyZW5jZSIgbXVsdGlwbGljaXR5PSItMSIgZGVzY3JpcHRpb249IlRoZSBpbnRlcmVzdCBvZiB0aGUgc3Rha2Vob2xkZXJzLiIvPg0KKyAgICAgICAgPHByb3BlcnRpZXMgeG1pOmlkPSJfei1PRGhzMVhFZVNHVmJGTk00bThnUSIgbmFtZT0ibGFuZ3VhZ2UiIG11bHRpcGxpY2l0eT0iLTEiIGRlc2NyaXB0aW9uPSJUaGUgbGFuZ3VhZ2VzIHVzZWQgdG8gY29uc3RydWN0IHRoZSB2aWV3cG9pbnQuIi8+DQorICAgICAgICA8cHJvcGVydGllcyB4bWk6aWQ9Il96LU9EaDgxWEVlU0dWYkZOTTRtOGdRIiBuYW1lPSJtZXRob2QiIHR5cGU9IlJlZmVyZW5jZSIgbXVsdGlwbGljaXR5PSItMSIgZGVzY3JpcHRpb249IlRoZSBtZXRob2RzIHVzZWQgdG8gY29uc3RydWN0IHRoZSB2aWV3cyBmb3IgdGhpcyB2aWV3cG9pbnQuIi8+DQorICAgICAgICA8cHJvcGVydGllcyB4bWk6aWQ9Il96LU9EaU0xWEVlU0dWYkZOTTRtOGdRIiBuYW1lPSJwcmVzZW50YXRpb24iIG11bHRpcGxpY2l0eT0iLTEiLz4NCisgICAgICAgIDxwcm9wZXJ0aWVzIHhtaTppZD0iX3otT0RpYzFYRWVTR1ZiRk5NNG04Z1EiIG5hbWU9ImNvbmNlcm4iIG11bHRpcGxpY2l0eT0iLTEiLz4NCisgICAgICAgIDxzdXBlcnR5cGVzIGhyZWY9InBwZTovY29udGV4dC9vcmcuZWNsaXBzZS5wYXB5cnVzLnVtbC5wcm9wZXJ0aWVzL01vZGVsL1VNTC9VTUwuY3R4I182OTB5WHFESkVlU1p4ZkNYelp6My13Ii8+DQorICAgICAgPC9lbGVtZW50cz4NCisgICAgICA8ZWxlbWVudHMgeG1pOmlkPSJfei1PRGlzMVhFZVNHVmJGTk00bThnUSIgbmFtZT0iRWxlbWVudEdyb3VwIj4NCisgICAgICAgIDxwcm9wZXJ0aWVzIHhtaTppZD0iX3otT0RpODFYRWVTR1ZiRk5NNG04Z1EiIG5hbWU9Im5hbWUiLz4NCisgICAgICAgIDxwcm9wZXJ0aWVzIHhtaTppZD0iX3otT0RqTTFYRWVTR1ZiRk5NNG04Z1EiIG5hbWU9ImNyaXRlcmlvbiIvPg0KKyAgICAgICAgPHByb3BlcnRpZXMgeG1pOmlkPSJfei1PRGpjMVhFZVNHVmJGTk00bThnUSIgbmFtZT0ic2l6ZSIgdHlwZT0iSW50ZWdlciIvPg0KKyAgICAgICAgPHByb3BlcnRpZXMgeG1pOmlkPSJfei1PRGpzMVhFZVNHVmJGTk00bThnUSIgbmFtZT0ibWVtYmVyIiB0eXBlPSJSZWZlcmVuY2UiIG11bHRpcGxpY2l0eT0iLTEiIGRlc2NyaXB0aW9uPSJTZXQgc3BlY2lmeWluZyB0aGUgbWVtYmVycyBvZiB0aGUgZ3JvdXAuJiN4QTtEZXJpdmVkIGZyb20gQ29tbWVudDo6YW5ub3RhdGVkRWxlbWVudC4iLz4NCisgICAgICAgIDxwcm9wZXJ0aWVzIHhtaTppZD0iX3otT0RqODFYRWVTR1ZiRk5NNG04Z1EiIG5hbWU9Im9yZGVyZWRNZW1iZXIiIHR5cGU9IlJlZmVyZW5jZSIgbXVsdGlwbGljaXR5PSItMSIgZGVzY3JpcHRpb249Ik9yZ2FuaXplIG1lbWJlciBhY2NvcmRpbmcgdG8gYW4gYXJiaXRyYXJ5IG9yZGVyLiBPcHRpb25hbC4iLz4NCisgICAgICAgIDxzdXBlcnR5cGVzIGhyZWY9InBwZTovY29udGV4dC9vcmcuZWNsaXBzZS5wYXB5cnVzLnVtbC5wcm9wZXJ0aWVzL01vZGVsL1VNTC9VTUwuY3R4I182OTB4Z3FESkVlU1p4ZkNYelp6My13Ii8+DQorICAgICAgPC9lbGVtZW50cz4NCisgICAgICA8ZWxlbWVudHMgeG1pOmlkPSJfei1PRGtNMVhFZVNHVmJGTk00bThnUSIgbmFtZT0iUmF0aW9uYWxlIj4NCisgICAgICAgIDxzdXBlcnR5cGVzIGhyZWY9InBwZTovY29udGV4dC9vcmcuZWNsaXBzZS5wYXB5cnVzLnVtbC5wcm9wZXJ0aWVzL01vZGVsL1VNTC9VTUwuY3R4I182OTB4Z3FESkVlU1p4ZkNYelp6My13Ii8+DQorICAgICAgPC9lbGVtZW50cz4NCisgICAgICA8ZWxlbWVudHMgeHNpOnR5cGU9ImNvbnRleHRzOkRhdGFDb250ZXh0UGFja2FnZSIgeG1pOmlkPSJfei1PRGtjMVhFZVNHVmJGTk00bThnUSIgbmFtZT0iRGVwcmVjYXRlZCIvPg0KKyAgICAgIDxlbGVtZW50cyB4bWk6aWQ9Il96LU9Ea3MxWEVlU0dWYkZOTTRtOGdRIiBuYW1lPSJFeHBvc2UiPg0KKyAgICAgICAgPHN1cGVydHlwZXMgaHJlZj0icHBlOi9jb250ZXh0L29yZy5lY2xpcHNlLnBhcHlydXMudW1sLnByb3BlcnRpZXMvTW9kZWwvVU1ML1VNTC5jdHgjXzY5MHhtcURKRWVTWnhmQ1h6WnozLXciLz4NCisgICAgICA8L2VsZW1lbnRzPg0KKyAgICAgIDxlbGVtZW50cyB4bWk6aWQ9Il96LU9EazgxWEVlU0dWYkZOTTRtOGdRIiBuYW1lPSJQcm9ibGVtIj4NCisgICAgICAgIDxzdXBlcnR5cGVzIGhyZWY9InBwZTovY29udGV4dC9vcmcuZWNsaXBzZS5wYXB5cnVzLnVtbC5wcm9wZXJ0aWVzL01vZGVsL1VNTC9VTUwuY3R4I182OTB4Z3FESkVlU1p4ZkNYelp6My13Ii8+DQorICAgICAgPC9lbGVtZW50cz4NCisgICAgICA8ZWxlbWVudHMgeG1pOmlkPSJfei1PRGxNMVhFZVNHVmJGTk00bThnUSIgbmFtZT0iQ29uZm9ybSI+DQorICAgICAgICA8c3VwZXJ0eXBlcyBocmVmPSJwcGU6L2NvbnRleHQvb3JnLmVjbGlwc2UucGFweXJ1cy51bWwucHJvcGVydGllcy9Nb2RlbC9VTUwvVU1MLmN0eCNfNjkweG1xREpFZVNaeGZDWHpaejMtdyIvPg0KKyAgICAgICAgPHN1cGVydHlwZXMgaHJlZj0icHBlOi9jb250ZXh0L29yZy5lY2xpcHNlLnBhcHlydXMudW1sLnByb3BlcnRpZXMvTW9kZWwvVU1ML1VNTC5jdHgjXzY5MHg3YURKRWVTWnhmQ1h6WnozLXciLz4NCisgICAgICA8L2VsZW1lbnRzPg0KKyAgICAgIDxlbGVtZW50cyB4bWk6aWQ9Il96LU9EbGMxWEVlU0dWYkZOTTRtOGdRIiBuYW1lPSJWaWV3Ij4NCisgICAgICAgIDxwcm9wZXJ0aWVzIHhtaTppZD0iX3otT0RsczFYRWVTR1ZiRk5NNG04Z1EiIG5hbWU9InZpZXdQb2ludCIgdHlwZT0iUmVmZXJlbmNlIiBkZXNjcmlwdGlvbj0iVGhlIHZpZXdwb2ludCBmb3IgdGhpcyBWaWV3LCBkZXJpdmVkIGZyb20gdGhlIHN1cHBsaWVyIG9mIHRoZSAmI3hhYjtjb25mb3JtJiN4YmI7IGRlcGVuZGVuY3kgd2hvc2UgY2xpZW50IGlzIHRoaXMgVmlldy4iLz4NCisgICAgICAgIDxwcm9wZXJ0aWVzIHhtaTppZD0iX3otT0RsODFYRWVTR1ZiRk5NNG04Z1EiIG5hbWU9InN0YWtlaG9sZGVyIiB0eXBlPSJSZWZlcmVuY2UiIG11bHRpcGxpY2l0eT0iLTEiLz4NCisgICAgICAgIDxzdXBlcnR5cGVzIGhyZWY9InBwZTovY29udGV4dC9vcmcuZWNsaXBzZS5wYXB5cnVzLnVtbC5wcm9wZXJ0aWVzL01vZGVsL1VNTC9VTUwuY3R4I182OTB4aWFESkVlU1p4ZkNYelp6My13Ii8+DQorICAgICAgICA8c3VwZXJ0eXBlcyBocmVmPSJwcGU6L2NvbnRleHQvb3JnLmVjbGlwc2UucGFweXJ1cy51bWwucHJvcGVydGllcy9Nb2RlbC9VTUwvVU1MLmN0eCNfNjkweVhxREpFZVNaeGZDWHpaejMtdyIvPg0KKyAgICAgIDwvZWxlbWVudHM+DQorICAgICAgPGVsZW1lbnRzIHhtaTppZD0iX3otT0RtTTFYRWVTR1ZiRk5NNG04Z1EiIG5hbWU9IlN0YWtlaG9sZGVyIj4NCisgICAgICAgIDxwcm9wZXJ0aWVzIHhtaTppZD0iX3otT0RtYzFYRWVTR1ZiRk5NNG04Z1EiIG5hbWU9ImNvbmNlcm4iIHR5cGU9IlJlZmVyZW5jZSIgbXVsdGlwbGljaXR5PSItMSIvPg0KKyAgICAgICAgPHByb3BlcnRpZXMgeG1pOmlkPSJfei1PRG1zMVhFZVNHVmJGTk00bThnUSIgbmFtZT0iY29uY2Vybkxpc3QiIHR5cGU9IlJlZmVyZW5jZSIvPg0KKyAgICAgICAgPHN1cGVydHlwZXMgaHJlZj0icHBlOi9jb250ZXh0L29yZy5lY2xpcHNlLnBhcHlydXMudW1sLnByb3BlcnRpZXMvTW9kZWwvVU1ML1VNTC5jdHgjXzY5MHh3YURKRWVTWnhmQ1h6WnozLXciLz4NCisgICAgICA8L2VsZW1lbnRzPg0KKyAgICA8L2VsZW1lbnRzPg0KKyAgICA8ZWxlbWVudHMgeHNpOnR5cGU9ImNvbnRleHRzOkRhdGFDb250ZXh0UGFja2FnZSIgeG1pOmlkPSJfei1PRG04MVhFZVNHVmJGTk00bThnUSIgbmFtZT0iQmxvY2tzIj4NCisgICAgICA8ZWxlbWVudHMgeG1pOmlkPSJfei1PRG5NMVhFZVNHVmJGTk00bThnUSIgbmFtZT0iRGlzdHJpYnV0ZWRQcm9wZXJ0eSI+DQorICAgICAgICA8c3VwZXJ0eXBlcyBocmVmPSJwcGU6L2NvbnRleHQvb3JnLmVjbGlwc2UucGFweXJ1cy51bWwucHJvcGVydGllcy9Nb2RlbC9VTUwvVU1MLmN0eCNfNjkweUc2REpFZVNaeGZDWHpaejMtdyIvPg0KKyAgICAgIDwvZWxlbWVudHM+DQorICAgICAgPGVsZW1lbnRzIHhtaTppZD0iX3otT0RuYzFYRWVTR1ZiRk5NNG04Z1EiIG5hbWU9IkVuZFBhdGhNdWx0aXBsaWNpdHkiPg0KKyAgICAgICAgPHByb3BlcnRpZXMgeG1pOmlkPSJfei1PRG5zMVhFZVNHVmJGTk00bThnUSIgbmFtZT0ibG93ZXIiIHR5cGU9IkludGVnZXIiIGRlc2NyaXB0aW9uPSJHaXZlcyB0aGUgbWluaW11bSBudW1iZXIgb2YgdmFsdWVzIG9mIHRoZSBwcm9wZXJ0eSBhdCB0aGUgZW5kIG9mIHRoZSByZWxhdGVkIGJpbmRpbmdQYXRoLCBmb3IgZWFjaCBvYmplY3QgcmVhY2hlZCBieSBuYXZpZ2F0aW9uIGFsb25nIHRoZSBiaW5kaW5nUGF0aCBmcm9tIGFuIGluc3RhbmNlIG9mIHRoZSBibG9jayBvd25pbmcgdGhlIHByb3BlcnR5IHRvIHdoaWNoIEVuZFBhdGhNdWx0aXBsaWNpdHkgaXMgYXBwbGllZCIvPg0KKyAgICAgICAgPHByb3BlcnRpZXMgeG1pOmlkPSJfei1PRG44MVhFZVNHVmJGTk00bThnUSIgbmFtZT0idXBwZXIiIGRlc2NyaXB0aW9uPSJHaXZlcyB0aGUgbWF4aW11bSBudW1iZXIgb2YgdmFsdWVzIG9mIHRoZSBwcm9wZXJ0eSBhdCB0aGUgZW5kIG9mIHRoZSByZWxhdGVkIGJpbmRpbmdQYXRoLCBmb3IgZWFjaCBvYmplY3QgcmVhY2hlZCBieSBuYXZpZ2F0aW9uIGFsb25nIHRoZSBiaW5kaW5nUGF0aCBmcm9tIGFuIGluc3RhbmNlIG9mIHRoZSBibG9jayBvd25pbmcgdGhlIHByb3BlcnR5IHRvIHdoaWNoIEVuZFBhdGhNdWx0aXBsaWNpdHkgaXMgYXBwbGllZC4iLz4NCisgICAgICAgIDxzdXBlcnR5cGVzIGhyZWY9InBwZTovY29udGV4dC9vcmcuZWNsaXBzZS5wYXB5cnVzLnVtbC5wcm9wZXJ0aWVzL01vZGVsL1VNTC9VTUwuY3R4I182OTB5RzZESkVlU1p4ZkNYelp6My13Ii8+DQorICAgICAgPC9lbGVtZW50cz4NCisgICAgICA8ZWxlbWVudHMgeG1pOmlkPSJfei1PRG9NMVhFZVNHVmJGTk00bThnUSIgbmFtZT0iUHJvcGVydHlTcGVjaWZpY1R5cGUiPg0KKyAgICAgICAgPHN1cGVydHlwZXMgaHJlZj0icHBlOi9jb250ZXh0L29yZy5lY2xpcHNlLnBhcHlydXMudW1sLnByb3BlcnRpZXMvTW9kZWwvVU1ML1VNTC5jdHgjXzY5MHh3YURKRWVTWnhmQ1h6WnozLXciLz4NCisgICAgICA8L2VsZW1lbnRzPg0KKyAgICAgIDxlbGVtZW50cyB4bWk6aWQ9Il96LU9Eb2MxWEVlU0dWYkZOTTRtOGdRIiBuYW1lPSJDb25uZWN0b3JQcm9wZXJ0eSI+DQorICAgICAgICA8cHJvcGVydGllcyB4bWk6aWQ9Il96LU9Eb3MxWEVlU0dWYkZOTTRtOGdRIiBuYW1lPSJjb25uZWN0b3IiIHR5cGU9IlJlZmVyZW5jZSIgZGVzY3JpcHRpb249IkEgY29ubmVjdG9yIG9mIHRoZSBibG9jayBvd25pbmcgdGhlIHByb3BlcnR5IG9uIHdoaWNoIHRoZSBzdGVyZW90eXBlIGlzIGFwcGxpZWQuIi8+DQorICAgICAgICA8c3VwZXJ0eXBlcyBocmVmPSJwcGU6L2NvbnRleHQvb3JnLmVjbGlwc2UucGFweXJ1cy51bWwucHJvcGVydGllcy9Nb2RlbC9VTUwvVU1MLmN0eCNfNjkweUc2REpFZVNaeGZDWHpaejMtdyIvPg0KKyAgICAgIDwvZWxlbWVudHM+DQorICAgICAgPGVsZW1lbnRzIHhtaTppZD0iX3otT0RvODFYRWVTR1ZiRk5NNG04Z1EiIG5hbWU9IlBhcnRpY2lwYW50UHJvcGVydHkiPg0KKyAgICAgICAgPHByb3BlcnRpZXMgeG1pOmlkPSJfei1PRHBNMVhFZVNHVmJGTk00bThnUSIgbmFtZT0iZW5kIiB0eXBlPSJSZWZlcmVuY2UiIGRlc2NyaXB0aW9uPSJBIG1lbWJlciBlbmQgb2YgdGhlIGFzc29jaWF0aW9uIGJsb2NrIG93bmluZyB0aGUgcHJvcGVydHkgb24gd2hpY2ggdGhlIHN0ZXJlb3R5cGUgaXMgYXBwbGllZC4iLz4NCisgICAgICAgIDxzdXBlcnR5cGVzIGhyZWY9InBwZTovY29udGV4dC9vcmcuZWNsaXBzZS5wYXB5cnVzLnVtbC5wcm9wZXJ0aWVzL01vZGVsL1VNTC9VTUwuY3R4I182OTB5RzZESkVlU1p4ZkNYelp6My13Ii8+DQorICAgICAgPC9lbGVtZW50cz4NCisgICAgICA8ZWxlbWVudHMgeG1pOmlkPSJfei1PRHBjMVhFZVNHVmJGTk00bThnUSIgbmFtZT0iTmVzdGVkQ29ubmVjdG9yRW5kIi8+DQorICAgICAgPGVsZW1lbnRzIHhtaTppZD0iX3otT0RwczFYRWVTR1ZiRk5NNG04Z1EiIG5hbWU9IkRpcmVjdGVkUmVsYXRpb25zaGlwUHJvcGVydHlQYXRoIj4NCisgICAgICAgIDxwcm9wZXJ0aWVzIHhtaTppZD0iX3otT0RwODFYRWVTR1ZiRk5NNG04Z1EiIG5hbWU9InNvdXJjZVByb3BlcnR5UGF0aCIgdHlwZT0iUmVmZXJlbmNlIiBtdWx0aXBsaWNpdHk9Ii0xIi8+DQorICAgICAgICA8cHJvcGVydGllcyB4bWk6aWQ9Il96LU9EcU0xWEVlU0dWYkZOTTRtOGdRIiBuYW1lPSJ0YXJnZXRQcm9wZXJ0eVBhdGgiIHR5cGU9IlJlZmVyZW5jZSIgbXVsdGlwbGljaXR5PSItMSIvPg0KKyAgICAgICAgPHByb3BlcnRpZXMgeG1pOmlkPSJfei1PRHFjMVhFZVNHVmJGTk00bThnUSIgbmFtZT0ic291cmNlQ29udGV4dCIgdHlwZT0iUmVmZXJlbmNlIi8+DQorICAgICAgICA8cHJvcGVydGllcyB4bWk6aWQ9Il96LU9EcXMxWEVlU0dWYkZOTTRtOGdRIiBuYW1lPSJ0YXJnZXRDb250ZXh0IiB0eXBlPSJSZWZlcmVuY2UiLz4NCisgICAgICAgIDxzdXBlcnR5cGVzIGhyZWY9InBwZTovY29udGV4dC9vcmcuZWNsaXBzZS5wYXB5cnVzLnVtbC5wcm9wZXJ0aWVzL01vZGVsL1VNTC9VTUwuY3R4I182OTB4bmFESkVlU1p4ZkNYelp6My13Ii8+DQorICAgICAgPC9lbGVtZW50cz4NCisgICAgICA8ZWxlbWVudHMgeG1pOmlkPSJfei1PRHE4MVhFZVNHVmJGTk00bThnUSIgbmFtZT0iQWRqdW5jdFByb3BlcnR5Ij4NCisgICAgICAgIDxwcm9wZXJ0aWVzIHhtaTppZD0iX3otT0RyTTFYRWVTR1ZiRk5NNG04Z1EiIG5hbWU9InByaW5jaXBhbCIgdHlwZT0iUmVmZXJlbmNlIiBkZXNjcmlwdGlvbj0iR2l2ZXMgdGhlIGVsZW1lbnQgdGhhdCBkZXRlcm1pbmVzIHRoZSB2YWx1ZXMgb2YgdGhlIHByb3BlcnR5LiAgTXVzdCBiZSBhIGNvbm5lY3RvciwgY2FsbCBhY3Rpb24sIG9iamVjdCBub2RlLCB2YXJpYWJsZSwgb3IgcGFyYW1ldGVyLiIvPg0KKyAgICAgICAgPHN1cGVydHlwZXMgaHJlZj0icHBlOi9jb250ZXh0L29yZy5lY2xpcHNlLnBhcHlydXMudW1sLnByb3BlcnRpZXMvTW9kZWwvVU1ML1VNTC5jdHgjXzY5MHlHNkRKRWVTWnhmQ1h6WnozLXciLz4NCisgICAgICA8L2VsZW1lbnRzPg0KKyAgICAgIDxlbGVtZW50cyB4bWk6aWQ9Il96LU9EcmMxWEVlU0dWYkZOTTRtOGdRIiBuYW1lPSJDbGFzc2lmaWVyQmVoYXZpb3JQcm9wZXJ0eSI+DQorICAgICAgICA8c3VwZXJ0eXBlcyBocmVmPSJwcGU6L2NvbnRleHQvb3JnLmVjbGlwc2UucGFweXJ1cy51bWwucHJvcGVydGllcy9Nb2RlbC9VTUwvVU1MLmN0eCNfNjkweUc2REpFZVNaeGZDWHpaejMtdyIvPg0KKyAgICAgIDwvZWxlbWVudHM+DQorICAgICAgPGVsZW1lbnRzIHhtaTppZD0iX3otT0RyczFYRWVTR1ZiRk5NNG04Z1EiIG5hbWU9IkJsb2NrIj4NCisgICAgICAgIDxwcm9wZXJ0aWVzIHhtaTppZD0iX3otT0RyODFYRWVTR1ZiRk5NNG04Z1EiIG5hbWU9ImlzRW5jYXBzdWxhdGVkIiB0eXBlPSJCb29sZWFuIiBkZXNjcmlwdGlvbj0iSWYgdHJ1ZSwgdGhlbiB0aGUgYmxvY2sgaXMgdHJlYXRlZCBhcyBhIGJsYWNrIGJveDsgYSBwYXJ0IHR5cGVkIGJ5IHRoaXMgYmxhY2sgYm94IGNhbiBvbmx5IGJlIGNvbm5lY3RlZCB2aWEgaXRzIHBvcnRzIG9yIGRpcmVjdGx5IHRvIGl0cyBvdXRlciBib3VuZGFyeS4gSWYgZmFsc2UsIG9yIGlmIGEgdmFsdWUgaXMgbm90IHByZXNlbnQsIHRoZW4gY29ubmVjdGlvbnMgY2FuIGJlIGVzdGFibGlzaGVkIHRvIGVsZW1lbnRzIG9mIGl0cyBpbnRlcm5hbCBzdHJ1Y3R1cmUgdmlhIGRlZXAtbmVzdGVkIGNvbm5lY3RvciBlbmRzLiIvPg0KKyAgICAgICAgPHN1cGVydHlwZXMgaHJlZj0icHBlOi9jb250ZXh0L29yZy5lY2xpcHNlLnBhcHlydXMudW1sLnByb3BlcnRpZXMvTW9kZWwvVU1ML1VNTC5jdHgjXzY5MHlYcURKRWVTWnhmQ1h6WnozLXciLz4NCisgICAgICA8L2VsZW1lbnRzPg0KKyAgICAgIDxlbGVtZW50cyB4bWk6aWQ9Il96LU9Ec00xWEVlU0dWYkZOTTRtOGdRIiBuYW1lPSJCb3VuZFJlZmVyZW5jZSI+DQorICAgICAgICA8cHJvcGVydGllcyB4bWk6aWQ9Il96LU9Ec2MxWEVlU0dWYkZOTTRtOGdRIiBuYW1lPSJib3VuZEVuZCIgdHlwZT0iUmVmZXJlbmNlIiBkZXNjcmlwdGlvbj0iR2l2ZXMgYSBjb25uZWN0b3IgZW5kIG9mIGEgYmluZGluZyBjb25uZWN0b3Igb3Bwb3NpdGUgdG8gdGhlIGVuZCBsaW5rZWQgdG8gdGhlIHN0ZXJlb3R5cGVkIHByb3BlcnR5LCBvciBsaW5rZWQgdG8gYSBwcm9wZXJ0eSB0aGF0IGdlbmVyYWxpemVzIHRoZSBzdGVyZW90eXBlZCBvbmUgdGhyb3VnaCByZWRlZmluaXRpb24uIi8+DQorICAgICAgICA8cHJvcGVydGllcyB4bWk6aWQ9Il96LU9Ec3MxWEVlU0dWYkZOTTRtOGdRIiBuYW1lPSJiaW5kaW5nUGF0aCIgdHlwZT0iUmVmZXJlbmNlIiBtdWx0aXBsaWNpdHk9Ii0xIiBkZXNjcmlwdGlvbj0iR2l2ZXMgdGhlIHByb3BlcnR5UGF0aCBvZiB0aGUgTmVzdGVkQ29ubmVjdG9yRW5kIGFwcGxpZWQsIGlmIGFueSwgdG8gdGhlIGJvdW5kRW5kLCBhcHBlbmRlZCB0byB0aGUgcm9sZSBvZiB0aGUgYm91bmRFbmQuICIvPg0KKyAgICAgIDwvZWxlbWVudHM+DQorICAgICAgPGVsZW1lbnRzIHhtaTppZD0iX3otT0RzODFYRWVTR1ZiRk5NNG04Z1EiIG5hbWU9IkVsZW1lbnRQcm9wZXJ0eVBhdGgiPg0KKyAgICAgICAgPHByb3BlcnRpZXMgeG1pOmlkPSJfei1PRHRNMVhFZVNHVmJGTk00bThnUSIgbmFtZT0icHJvcGVydHlQYXRoIiB0eXBlPSJSZWZlcmVuY2UiIG11bHRpcGxpY2l0eT0iLTEiIGRlc2NyaXB0aW9uPSJUaGUgcHJvcGVydHlQYXRoIGxpc3Qgb2YgdGhlIE5lc3RlZENvbm5lY3RvckVuZCBzdGVyZW90eXBlIG11c3QgaWRlbnRpZnkgYSBwYXRoIG9mIGNvbnRhaW5pbmcgcHJvcGVydGllcyB0aGF0IGlkZW50aWZ5IHRoZSBjb25uZWN0ZWQgcHJvcGVydHkgaW4gdGhlIGNvbnRleHQgb2YgdGhlIGJsb2NrIHRoYXQgb3ducyB0aGUgY29ubmVjdG9yLiBUaGUgb3JkZXJpbmcgb2YgcHJvcGVydGllcyBpcyBmcm9tIGEgcHJvcGVydHkgb2YgdGhlIGJsb2NrIHRoYXQgb3ducyB0aGUgY29ubmVjdG9yLCB0aHJvdWdoIGEgcHJvcGVydHkgb2YgZWFjaCBpbnRlcm1lZGlhdGUgYmxvY2sgdGhhdCB0eXBlcyB0aGUgcHJlY2VkaW5nIHByb3BlcnR5LCB1bnRpbCBhIHByb3BlcnR5IGlzIHJlYWNoZWQgdGhhdCBjb250YWlucyBhIGNvbm5lY3RvciBlbmQgcHJvcGVydHkgd2l0aGluIGl0cyB0eXBlLiBUaGUgY29ubmVjdG9yIGVuZCBwcm9wZXJ0eSBpcyBub3QgaW5jbHVkZWQgaW4gdGhlIHByb3BlcnR5UGF0aCBsaXN0LCBidXQgaW5zdGVhZCBpcyBoZWxkIGJ5IHRoZSByb2xlIHByb3BlcnR5IG9mIHRoZSBVTUwgQ29ubmVjdG9yRW5kIG1ldGFjbGFzcy4iLz4NCisgICAgICAgIDxzdXBlcnR5cGVzIGhyZWY9InBwZTovY29udGV4dC9vcmcuZWNsaXBzZS5wYXB5cnVzLnVtbC5wcm9wZXJ0aWVzL01vZGVsL1VNTC9VTUwuY3R4I182OTB4aGFESkVlU1p4ZkNYelp6My13Ii8+DQorICAgICAgPC9lbGVtZW50cz4NCisgICAgICA8ZWxlbWVudHMgeG1pOmlkPSJfei1PRHRjMVhFZVNHVmJGTk00bThnUSIgbmFtZT0iQmluZGluZ0Nvbm5lY3RvciI+DQorICAgICAgICA8c3VwZXJ0eXBlcyBocmVmPSJwcGU6L2NvbnRleHQvb3JnLmVjbGlwc2UucGFweXJ1cy51bWwucHJvcGVydGllcy9Nb2RlbC9VTUwvVU1MLmN0eCNfNjkweXZxREpFZVNaeGZDWHpaejMtdyIvPg0KKyAgICAgIDwvZWxlbWVudHM+DQorICAgICAgPGVsZW1lbnRzIHhtaTppZD0iX3otT0R0czFYRWVTR1ZiRk5NNG04Z1EiIG5hbWU9IlZhbHVlVHlwZSI+DQorICAgICAgICA8cHJvcGVydGllcyB4bWk6aWQ9Il96LU9EdDgxWEVlU0dWYkZOTTRtOGdRIiBuYW1lPSJ1bml0IiB0eXBlPSJSZWZlcmVuY2UiIGRlc2NyaXB0aW9uPSJBIHF1YW50aXR5IGluIHRlcm1zIG9mIHdoaWNoIHRoZSBtYWduaXR1ZGVzIG9mIG90aGVyIHF1YW50aXRpZXMgdGhhdCBoYXZlIHRoZSBzYW1lIGRpbWVuc2lvbiBjYW4gYmUgc3RhdGVkLCBhcyBpZGVudGlmaWVkIGJ5IGFuIGluc3RhbmNlIG9mIHRoZSBVbml0IHN0ZXJlb3R5cGUuIi8+DQorICAgICAgICA8cHJvcGVydGllcyB4bWk6aWQ9Il96LU9EdU0xWEVlU0dWYkZOTTRtOGdRIiBuYW1lPSJxdWFudGl0eUtpbmQiIHR5cGU9IlJlZmVyZW5jZSIgZGVzY3JpcHRpb249IkEga2luZCBvZiBxdWFudGl0eSB0aGF0IG1heSBiZSBzdGF0ZWQgYnkgbWVhbnMgb2YgZGVmaW5lZCB1bml0cywgYXMgaWRlbnRpZmllZCBieSBhbiBpbnN0YW5jZSBvZiB0aGUgRGltZW5zaW9uIHN0ZXJlb3R5cGUuIEEgdmFsdWUgdHlwZSBtYXkgb3B0aW9uYWxseSBzcGVjaWZ5IGEgZGltZW5zaW9uIHdpdGhvdXQgYW55IHVuaXQuIFN1Y2ggYSB2YWx1ZSBoYXMgbm8gY29uY3JldGUgcmVwcmVzZW50YXRpb24sIGJ1dCBtYXkgYmUgdXNlZCB0byBleHByZXNzIGEgdmFsdWUgaW4gYW4gYWJzdHJhY3QgZm9ybSBpbmRlcGVuZGVudCBvZiBhbnkgc3BlY2lmaWMgdW5pdHMuIi8+DQorICAgICAgICA8c3VwZXJ0eXBlcyBocmVmPSJwcGU6L2NvbnRleHQvb3JnLmVjbGlwc2UucGFweXJ1cy51bWwucHJvcGVydGllcy9Nb2RlbC9VTUwvVU1MLmN0eCNfNjkweTFxREpFZVNaeGZDWHpaejMtdyIvPg0KKyAgICAgIDwvZWxlbWVudHM+DQorICAgIDwvZWxlbWVudHM+DQorICAgIDxlbGVtZW50cyB4c2k6dHlwZT0iY29udGV4dHM6RGF0YUNvbnRleHRQYWNrYWdlIiB4bWk6aWQ9Il96LU9EdWMxWEVlU0dWYkZOTTRtOGdRIiBuYW1lPSJSZXF1aXJlbWVudHMiPg0KKyAgICAgIDxlbGVtZW50cyB4bWk6aWQ9Il96LU9EdXMxWEVlU0dWYkZOTTRtOGdRIiBuYW1lPSJEZXJpdmVSZXF0Ii8+DQorICAgICAgPGVsZW1lbnRzIHhtaTppZD0iX3otT0R1ODFYRWVTR1ZiRk5NNG04Z1EiIG5hbWU9IlNhdGlzZnkiLz4NCisgICAgICA8ZWxlbWVudHMgeG1pOmlkPSJfei1PRHZNMVhFZVNHVmJGTk00bThnUSIgbmFtZT0iVGVzdENhc2UiPg0KKyAgICAgICAgPHN1cGVydHlwZXMgaHJlZj0icHBlOi9jb250ZXh0L29yZy5lY2xpcHNlLnBhcHlydXMudW1sLnByb3BlcnRpZXMvTW9kZWwvVU1ML1VNTC5jdHgjXzY5MHlRS0RKRWVTWnhmQ1h6WnozLXciLz4NCisgICAgICAgIDxzdXBlcnR5cGVzIGhyZWY9InBwZTovY29udGV4dC9vcmcuZWNsaXBzZS5wYXB5cnVzLnVtbC5wcm9wZXJ0aWVzL01vZGVsL1VNTC9VTUwuY3R4I182OTB5VmFESkVlU1p4ZkNYelp6My13Ii8+DQorICAgICAgPC9lbGVtZW50cz4NCisgICAgICA8ZWxlbWVudHMgeG1pOmlkPSJfei1PRHZjMVhFZVNHVmJGTk00bThnUSIgbmFtZT0iUmVmaW5lIi8+DQorICAgICAgPGVsZW1lbnRzIHhtaTppZD0iX3otT0R2czFYRWVTR1ZiRk5NNG04Z1EiIG5hbWU9IlJlcXVpcmVtZW50Ij4NCisgICAgICAgIDxwcm9wZXJ0aWVzIHhtaTppZD0iX3otT0R2ODFYRWVTR1ZiRk5NNG04Z1EiIG5hbWU9InRleHQiIGRlc2NyaXB0aW9uPSJUaGUgdGV4dHVhbCByZXByZXNlbnRhdGlvbiBvciBhIHJlZmVyZW5jZSB0byB0aGUgdGV4dHVhbCByZXByZXNlbnRhdGlvbiBvZiB0aGUgcmVxdWlyZW1lbnQuIi8+DQorICAgICAgICA8cHJvcGVydGllcyB4bWk6aWQ9Il96LU9Ed00xWEVlU0dWYkZOTTRtOGdRIiBuYW1lPSJpZCIgZGVzY3JpcHRpb249IlRoZSB1bmlxdWUgaWQgb2YgdGhlIHJlcXVpcmVtZW50LiIvPg0KKyAgICAgICAgPHByb3BlcnRpZXMgeG1pOmlkPSJfei1PRHdjMVhFZVNHVmJGTk00bThnUSIgbmFtZT0iZGVyaXZlZCIgdHlwZT0iUmVmZXJlbmNlIiBtdWx0aXBsaWNpdHk9Ii0xIiBkZXNjcmlwdGlvbj0iRGVyaXZlZCBmcm9tIGFsbCByZXF1aXJlbWVudHMgdGhhdCBhcmUgdGhlIGNsaWVudCBvZiBhICYjeGFiO2Rlcml2ZVJlcXQmI3hiYjsgcmVsYXRpb25zaGlwIGZvciB3aGljaCB0aGlzIHJlcXVpcmVtZW50IGlzIGEgc3VwcGxpZXIuIi8+DQorICAgICAgICA8cHJvcGVydGllcyB4bWk6aWQ9Il96LU9Ed3MxWEVlU0dWYkZOTTRtOGdRIiBuYW1lPSJkZXJpdmVkRnJvbSIgdHlwZT0iUmVmZXJlbmNlIiBtdWx0aXBsaWNpdHk9Ii0xIiBkZXNjcmlwdGlvbj0iRGVyaXZlZCBmcm9tIGFsbCByZXF1aXJlbWVudHMgdGhhdCBhcmUgdGhlIHN1cHBsaWVyIG9mIGEgJiN4YWI7ZGVyaXZlUmVxdCYjeGJiOyByZWxhdGlvbnNoaXAgZm9yIHdoaWNoIHRoaXMgcmVxdWlyZW1lbnQgaXMgYSBjbGllbnQuIi8+DQorICAgICAgICA8cHJvcGVydGllcyB4bWk6aWQ9Il96LU9EdzgxWEVlU0dWYkZOTTRtOGdRIiBuYW1lPSJzYXRpc2ZpZWRCeSIgdHlwZT0iUmVmZXJlbmNlIiBtdWx0aXBsaWNpdHk9Ii0xIiBkZXNjcmlwdGlvbj0iRGVyaXZlZCBmcm9tIGFsbCBlbGVtZW50cyB0aGF0IGFyZSB0aGUgY2xpZW50IG9mIGEgJiN4YWI7c2F0aXNmeSYjeGJiOyByZWxhdGlvbnNoaXAgZm9yIHdoaWNoIHRoaXMgcmVxdWlyZW1lbnQgaXMgYSBzdXBwbGllci4iLz4NCisgICAgICAgIDxwcm9wZXJ0aWVzIHhtaTppZD0iX3otT0R4TTFYRWVTR1ZiRk5NNG04Z1EiIG5hbWU9InJlZmluZWRCeSIgdHlwZT0iUmVmZXJlbmNlIiBtdWx0aXBsaWNpdHk9Ii0xIiBkZXNjcmlwdGlvbj0iRGVyaXZlZCBmcm9tIGFsbCBlbGVtZW50cyB0aGF0IGFyZSB0aGUgY2xpZW50IG9mIGEgJiN4YWI7cmVmaW5lJiN4YmI7IHJlbGF0aW9uc2hpcCBmb3Igd2hpY2ggdGhpcyByZXF1aXJlbWVudCBpcyBhIHN1cHBsaWVyLiIvPg0KKyAgICAgICAgPHByb3BlcnRpZXMgeG1pOmlkPSJfei1PRHhjMVhFZVNHVmJGTk00bThnUSIgbmFtZT0idHJhY2VkVG8iIHR5cGU9IlJlZmVyZW5jZSIgbXVsdGlwbGljaXR5PSItMSIgZGVzY3JpcHRpb249IkRlcml2ZWQgZnJvbSBhbGwgZWxlbWVudHMgdGhhdCBhcmUgdGhlIGNsaWVudCBvZiBhICYjeGFiO3RyYWNlJiN4YmI7IHJlbGF0aW9uc2hpcCBmb3Igd2hpY2ggdGhpcyByZXF1aXJlbWVudCBpcyBhIHN1cHBsaWVyLiIvPg0KKyAgICAgICAgPHByb3BlcnRpZXMgeG1pOmlkPSJfei1PRHhzMVhFZVNHVmJGTk00bThnUSIgbmFtZT0idmVyaWZpZWRCeSIgdHlwZT0iUmVmZXJlbmNlIiBtdWx0aXBsaWNpdHk9Ii0xIiBkZXNjcmlwdGlvbj0iRGVyaXZlZCBmcm9tIGFsbCBlbGVtZW50cyB0aGF0IGFyZSB0aGUgY2xpZW50IG9mIGEgJiN4YWI7dmVyaWZ5JiN4YmI7IHJlbGF0aW9uc2hpcCBmb3Igd2hpY2ggdGhpcyByZXF1aXJlbWVudCBpcyBhIHN1cHBsaWVyLiIvPg0KKyAgICAgICAgPHByb3BlcnRpZXMgeG1pOmlkPSJfei1PRHg4MVhFZVNHVmJGTk00bThnUSIgbmFtZT0ibWFzdGVyIiB0eXBlPSJSZWZlcmVuY2UiIGRlc2NyaXB0aW9uPSJUaGlzIGlzIGEgZGVyaXZlZCBwcm9wZXJ0eSB0aGF0IGxpc3RzIHRoZSBtYXN0ZXIgcmVxdWlyZW1lbnQgZm9yIHRoaXMgc2xhdmUgcmVxdWlyZW1lbnQuIFRoZSBtYXN0ZXIgYXR0cmlidXRlIGlzIGRlcml2ZWQgZnJvbSB0aGUgc3VwcGxpZXIgb2YgdGhlIENvcHkgZGVwZW5kZW5jeSB0aGF0IGhhcyB0aGlzIHJlcXVpcmVtZW50IGFzIHRoZSBzbGF2ZS4iLz4NCisgICAgICAgIDxzdXBlcnR5cGVzIGhyZWY9InBwZTovY29udGV4dC9vcmcuZWNsaXBzZS5wYXB5cnVzLnVtbC5wcm9wZXJ0aWVzL01vZGVsL1VNTC9VTUwuY3R4I182OTB5WHFESkVlU1p4ZkNYelp6My13Ii8+DQorICAgICAgPC9lbGVtZW50cz4NCisgICAgICA8ZWxlbWVudHMgeG1pOmlkPSJfei1PRHlNMVhFZVNHVmJGTk00bThnUSIgbmFtZT0iVHJhY2UiLz4NCisgICAgICA8ZWxlbWVudHMgeG1pOmlkPSJfei1PRHljMVhFZVNHVmJGTk00bThnUSIgbmFtZT0iQ29weSIvPg0KKyAgICAgIDxlbGVtZW50cyB4bWk6aWQ9Il96LU9EeXMxWEVlU0dWYkZOTTRtOGdRIiBuYW1lPSJWZXJpZnkiLz4NCisgICAgPC9lbGVtZW50cz4NCisgICAgPG1vZGVsRWxlbWVudEZhY3RvcnkgaHJlZj0icHBlOi9lbnZpcm9ubWVudC9vcmcuZWNsaXBzZS5wYXB5cnVzLnVtbC5wcm9wZXJ0aWVzL01vZGVsL0Vudmlyb25tZW50LnhtaSMvL0Btb2RlbEVsZW1lbnRGYWN0b3JpZXMuMiIvPg0KKyAgPC9kYXRhQ29udGV4dHM+DQorPC9jb250ZXh0czpDb250ZXh0Pg0KZGlmZiAtLWdpdCBhL3VpL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC51aS9yZXNvdXJjZXMvcHJvcGVydGllcy91aS9NdWx0aXBsZUFjY2VwdENoYW5nZVN0cnVjdHVyYWxGZWF0dXJlRXZlbnRBY3Rpb24ueHd0IGIvdWkvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnVpL3Jlc291cmNlcy9wcm9wZXJ0aWVzL3VpL011bHRpcGxlQWNjZXB0Q2hhbmdlU3RydWN0dXJhbEZlYXR1cmVFdmVudEFjdGlvbi54d3QKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uOWJhNGNlOAotLS0gL2Rldi9udWxsCisrKyBiL3VpL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC51aS9yZXNvdXJjZXMvcHJvcGVydGllcy91aS9NdWx0aXBsZUFjY2VwdENoYW5nZVN0cnVjdHVyYWxGZWF0dXJlRXZlbnRBY3Rpb24ueHd0CkBAIC0wLDAgKzEsOCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4NCis8Q29tcG9zaXRlIHhtbG5zOmo9ImNsci1uYW1lc3BhY2U6amF2YS5sYW5nIg0KKwl4bWxuczpwcGVsPSJjbHItbmFtZXNwYWNlOm9yZy5lY2xpcHNlLnBhcHlydXMudmlld3MucHJvcGVydGllcy53aWRnZXRzLmxheW91dCINCisJeG1sbnM6eD0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy94d3QiIHhtbG5zPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3h3dC9wcmVzZW50YXRpb24iPg0KKwk8Q29tcG9zaXRlLmxheW91dD4NCisJCTxwcGVsOlByb3BlcnRpZXNMYXlvdXQ+PC9wcGVsOlByb3BlcnRpZXNMYXlvdXQ+DQorCTwvQ29tcG9zaXRlLmxheW91dD4NCis8L0NvbXBvc2l0ZT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS91aS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQudWkvcmVzb3VyY2VzL3Byb3BlcnRpZXMvdWkvTXVsdGlwbGVBZGp1bmN0UHJvcGVydHkueHd0IGIvdWkvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnVpL3Jlc291cmNlcy9wcm9wZXJ0aWVzL3VpL011bHRpcGxlQWRqdW5jdFByb3BlcnR5Lnh3dApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi45YmE0Y2U4Ci0tLSAvZGV2L251bGwKKysrIGIvdWkvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnVpL3Jlc291cmNlcy9wcm9wZXJ0aWVzL3VpL011bHRpcGxlQWRqdW5jdFByb3BlcnR5Lnh3dApAQCAtMCwwICsxLDggQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+DQorPENvbXBvc2l0ZSB4bWxuczpqPSJjbHItbmFtZXNwYWNlOmphdmEubGFuZyINCisJeG1sbnM6cHBlbD0iY2xyLW5hbWVzcGFjZTpvcmcuZWNsaXBzZS5wYXB5cnVzLnZpZXdzLnByb3BlcnRpZXMud2lkZ2V0cy5sYXlvdXQiDQorCXhtbG5zOng9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcveHd0IiB4bWxucz0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy94d3QvcHJlc2VudGF0aW9uIj4NCisJPENvbXBvc2l0ZS5sYXlvdXQ+DQorCQk8cHBlbDpQcm9wZXJ0aWVzTGF5b3V0PjwvcHBlbDpQcm9wZXJ0aWVzTGF5b3V0Pg0KKwk8L0NvbXBvc2l0ZS5sYXlvdXQ+DQorPC9Db21wb3NpdGU+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdWkvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnVpL3Jlc291cmNlcy9wcm9wZXJ0aWVzL3VpL011bHRpcGxlQWxsb2NhdGUueHd0IGIvdWkvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnVpL3Jlc291cmNlcy9wcm9wZXJ0aWVzL3VpL011bHRpcGxlQWxsb2NhdGUueHd0Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjQ4Mzk2ZDQKLS0tIC9kZXYvbnVsbAorKysgYi91aS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQudWkvcmVzb3VyY2VzL3Byb3BlcnRpZXMvdWkvTXVsdGlwbGVBbGxvY2F0ZS54d3QKQEAgLTAsMCArMSwxNCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4NCis8Q29tcG9zaXRlIHhtbG5zOmo9ImNsci1uYW1lc3BhY2U6amF2YS5sYW5nIg0KKwl4bWxuczpwcGVsPSJjbHItbmFtZXNwYWNlOm9yZy5lY2xpcHNlLnBhcHlydXMudmlld3MucHJvcGVydGllcy53aWRnZXRzLmxheW91dCINCisJeG1sbnM6eD0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy94d3QiIHhtbG5zPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3h3dC9wcmVzZW50YXRpb24iPg0KKwk8Q29tcG9zaXRlLmxheW91dD4NCisJCTxwcGVsOlByb3BlcnRpZXNMYXlvdXQ+PC9wcGVsOlByb3BlcnRpZXNMYXlvdXQ+DQorCTwvQ29tcG9zaXRlLmxheW91dD4NCisJPENvbXBvc2l0ZT4NCisJCTxDb21wb3NpdGUubGF5b3V0Pg0KKwkJCTxwcGVsOlByb3BlcnRpZXNMYXlvdXQ+PC9wcGVsOlByb3BlcnRpZXNMYXlvdXQ+DQorCQk8L0NvbXBvc2l0ZS5sYXlvdXQ+DQorCQk8cHBlbDpFbnVtQ29tYm8gaW5wdXQ9IntCaW5kaW5nfSIgcHJvcGVydHk9IlVNTDpOYW1lZEVsZW1lbnQ6dmlzaWJpbGl0eSI+PC9wcGVsOkVudW1Db21ibz4NCisJPC9Db21wb3NpdGU+DQorPC9Db21wb3NpdGU+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdWkvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnVpL3Jlc291cmNlcy9wcm9wZXJ0aWVzL3VpL011bHRpcGxlQWxsb2NhdGVBY3Rpdml0eVBhcnRpdGlvbi54d3QgYi91aS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQudWkvcmVzb3VyY2VzL3Byb3BlcnRpZXMvdWkvTXVsdGlwbGVBbGxvY2F0ZUFjdGl2aXR5UGFydGl0aW9uLnh3dApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5kYmVkZTY5Ci0tLSAvZGV2L251bGwKKysrIGIvdWkvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnVpL3Jlc291cmNlcy9wcm9wZXJ0aWVzL3VpL011bHRpcGxlQWxsb2NhdGVBY3Rpdml0eVBhcnRpdGlvbi54d3QKQEAgLTAsMCArMSwyNCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4NCis8Q29tcG9zaXRlIHhtbG5zOmo9ImNsci1uYW1lc3BhY2U6amF2YS5sYW5nIg0KKwl4bWxuczpwcGVsPSJjbHItbmFtZXNwYWNlOm9yZy5lY2xpcHNlLnBhcHlydXMudmlld3MucHJvcGVydGllcy53aWRnZXRzLmxheW91dCINCisJeG1sbnM6eD0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy94d3QiIHhtbG5zPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3h3dC9wcmVzZW50YXRpb24iDQorCXhtbG5zOnBwZT0iY2xyLW5hbWVzcGFjZTpvcmcuZWNsaXBzZS5wYXB5cnVzLnZpZXdzLnByb3BlcnRpZXMud2lkZ2V0cyI+DQorCTxDb21wb3NpdGUubGF5b3V0Pg0KKwkJPHBwZWw6UHJvcGVydGllc0xheW91dD48L3BwZWw6UHJvcGVydGllc0xheW91dD4NCisJPC9Db21wb3NpdGUubGF5b3V0Pg0KKwk8Q29tcG9zaXRlPg0KKwkJPENvbXBvc2l0ZS5sYXlvdXQ+DQorCQkJPHBwZWw6UHJvcGVydGllc0xheW91dCBudW1Db2x1bW5zPSIyIj48L3BwZWw6UHJvcGVydGllc0xheW91dD4NCisJCTwvQ29tcG9zaXRlLmxheW91dD4NCisJCTxwcGU6Qm9vbGVhblJhZGlvIGlucHV0PSJ7QmluZGluZ30iDQorCQkJcHJvcGVydHk9IlVNTDpBY3Rpdml0eVBhcnRpdGlvbjppc0RpbWVuc2lvbiI+PC9wcGU6Qm9vbGVhblJhZGlvPg0KKwkJPHBwZTpCb29sZWFuUmFkaW8gaW5wdXQ9IntCaW5kaW5nfSINCisJCQlwcm9wZXJ0eT0iVU1MOkFjdGl2aXR5UGFydGl0aW9uOmlzRXh0ZXJuYWwiPjwvcHBlOkJvb2xlYW5SYWRpbz4NCisJPC9Db21wb3NpdGU+DQorCTxDb21wb3NpdGU+DQorCQk8Q29tcG9zaXRlLmxheW91dD4NCisJCQk8cHBlbDpQcm9wZXJ0aWVzTGF5b3V0PjwvcHBlbDpQcm9wZXJ0aWVzTGF5b3V0Pg0KKwkJPC9Db21wb3NpdGUubGF5b3V0Pg0KKwkJPHBwZTpFbnVtQ29tYm8gaW5wdXQ9IntCaW5kaW5nfSIgcHJvcGVydHk9IlVNTDpOYW1lZEVsZW1lbnQ6dmlzaWJpbGl0eSI+PC9wcGU6RW51bUNvbWJvPg0KKwk8L0NvbXBvc2l0ZT4NCis8L0NvbXBvc2l0ZT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS91aS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQudWkvcmVzb3VyY2VzL3Byb3BlcnRpZXMvdWkvTXVsdGlwbGVBbGxvY2F0ZWQueHd0IGIvdWkvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnVpL3Jlc291cmNlcy9wcm9wZXJ0aWVzL3VpL011bHRpcGxlQWxsb2NhdGVkLnh3dApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5lNmMxOTEwCi0tLSAvZGV2L251bGwKKysrIGIvdWkvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnVpL3Jlc291cmNlcy9wcm9wZXJ0aWVzL3VpL011bHRpcGxlQWxsb2NhdGVkLnh3dApAQCAtMCwwICsxLDE1IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/Pg0KKzxDb21wb3NpdGUgeG1sbnM9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcveHd0L3ByZXNlbnRhdGlvbiINCisJeG1sbnM6aj0iY2xyLW5hbWVzcGFjZTpqYXZhLmxhbmciDQorCXhtbG5zOnBwZWw9ImNsci1uYW1lc3BhY2U6b3JnLmVjbGlwc2UucGFweXJ1cy52aWV3cy5wcm9wZXJ0aWVzLndpZGdldHMubGF5b3V0Ig0KKwl4bWxuczp4PSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3h3dCIgeG1sbnM6cHBlPSJjbHItbmFtZXNwYWNlOm9yZy5lY2xpcHNlLnBhcHlydXMudmlld3MucHJvcGVydGllcy53aWRnZXRzIj4NCisJPENvbXBvc2l0ZS5sYXlvdXQ+DQorCQk8cHBlbDpQcm9wZXJ0aWVzTGF5b3V0PjwvcHBlbDpQcm9wZXJ0aWVzTGF5b3V0Pg0KKwk8L0NvbXBvc2l0ZS5sYXlvdXQ+DQorCTxDb21wb3NpdGU+DQorCQk8Q29tcG9zaXRlLmxheW91dD4NCisJCQk8cHBlbDpQcm9wZXJ0aWVzTGF5b3V0PjwvcHBlbDpQcm9wZXJ0aWVzTGF5b3V0Pg0KKwkJPC9Db21wb3NpdGUubGF5b3V0Pg0KKwkJPHBwZTpFbnVtQ29tYm8gaW5wdXQ9IntCaW5kaW5nfSIgcHJvcGVydHk9IlVNTDpOYW1lZEVsZW1lbnQ6dmlzaWJpbGl0eSI+PC9wcGU6RW51bUNvbWJvPg0KKwk8L0NvbXBvc2l0ZT4NCis8L0NvbXBvc2l0ZT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS91aS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQudWkvcmVzb3VyY2VzL3Byb3BlcnRpZXMvdWkvTXVsdGlwbGVCaW5kaW5nQ29ubmVjdG9yLnh3dCBiL3VpL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC51aS9yZXNvdXJjZXMvcHJvcGVydGllcy91aS9NdWx0aXBsZUJpbmRpbmdDb25uZWN0b3IueHd0Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjkyMDdkNDIKLS0tIC9kZXYvbnVsbAorKysgYi91aS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQudWkvcmVzb3VyY2VzL3Byb3BlcnRpZXMvdWkvTXVsdGlwbGVCaW5kaW5nQ29ubmVjdG9yLnh3dApAQCAtMCwwICsxLDI0IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/Pg0KKzxDb21wb3NpdGUgeG1sbnM6aj0iY2xyLW5hbWVzcGFjZTpqYXZhLmxhbmciDQorCXhtbG5zOnBwZWw9ImNsci1uYW1lc3BhY2U6b3JnLmVjbGlwc2UucGFweXJ1cy52aWV3cy5wcm9wZXJ0aWVzLndpZGdldHMubGF5b3V0Ig0KKwl4bWxuczp4PSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3h3dCIgeG1sbnM9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcveHd0L3ByZXNlbnRhdGlvbiINCisJeG1sbnM6cHBlPSJjbHItbmFtZXNwYWNlOm9yZy5lY2xpcHNlLnBhcHlydXMudmlld3MucHJvcGVydGllcy53aWRnZXRzIj4NCisJPENvbXBvc2l0ZS5sYXlvdXQ+DQorCQk8cHBlbDpQcm9wZXJ0aWVzTGF5b3V0PjwvcHBlbDpQcm9wZXJ0aWVzTGF5b3V0Pg0KKwk8L0NvbXBvc2l0ZS5sYXlvdXQ+DQorCTxDb21wb3NpdGU+DQorCQk8Q29tcG9zaXRlLmxheW91dD4NCisJCQk8cHBlbDpQcm9wZXJ0aWVzTGF5b3V0IG51bUNvbHVtbnM9IjIiPjwvcHBlbDpQcm9wZXJ0aWVzTGF5b3V0Pg0KKwkJPC9Db21wb3NpdGUubGF5b3V0Pg0KKwkJPHBwZTpCb29sZWFuUmFkaW8gaW5wdXQ9IntCaW5kaW5nfSINCisJCQlwcm9wZXJ0eT0iVU1MOlJlZGVmaW5hYmxlRWxlbWVudDppc0xlYWYiPjwvcHBlOkJvb2xlYW5SYWRpbz4NCisJCTxwcGU6Qm9vbGVhblJhZGlvIGlucHV0PSJ7QmluZGluZ30iIHByb3BlcnR5PSJVTUw6RmVhdHVyZTppc1N0YXRpYyI+PC9wcGU6Qm9vbGVhblJhZGlvPg0KKwk8L0NvbXBvc2l0ZT4NCisJPENvbXBvc2l0ZT4NCisJCTxDb21wb3NpdGUubGF5b3V0Pg0KKwkJCTxwcGVsOlByb3BlcnRpZXNMYXlvdXQgbnVtQ29sdW1ucz0iMiI+PC9wcGVsOlByb3BlcnRpZXNMYXlvdXQ+DQorCQk8L0NvbXBvc2l0ZS5sYXlvdXQ+DQorCQk8cHBlOkVudW1Db21ibyBpbnB1dD0ie0JpbmRpbmd9IiBwcm9wZXJ0eT0iVU1MOkNvbm5lY3RvcjpraW5kIj48L3BwZTpFbnVtQ29tYm8+DQorCQk8cHBlOkVudW1Db21ibyBpbnB1dD0ie0JpbmRpbmd9IiBwcm9wZXJ0eT0iVU1MOk5hbWVkRWxlbWVudDp2aXNpYmlsaXR5Ij48L3BwZTpFbnVtQ29tYm8+DQorCTwvQ29tcG9zaXRlPg0KKzwvQ29tcG9zaXRlPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3VpL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC51aS9yZXNvdXJjZXMvcHJvcGVydGllcy91aS9NdWx0aXBsZUJsb2NrLnh3dCBiL3VpL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC51aS9yZXNvdXJjZXMvcHJvcGVydGllcy91aS9NdWx0aXBsZUJsb2NrLnh3dApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5mYjNhYzQwCi0tLSAvZGV2L251bGwKKysrIGIvdWkvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnVpL3Jlc291cmNlcy9wcm9wZXJ0aWVzL3VpL011bHRpcGxlQmxvY2sueHd0CkBAIC0wLDAgKzEsMjYgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+DQorPENvbXBvc2l0ZSB4bWxuczpqPSJjbHItbmFtZXNwYWNlOmphdmEubGFuZyINCisJeG1sbnM6cHBlbD0iY2xyLW5hbWVzcGFjZTpvcmcuZWNsaXBzZS5wYXB5cnVzLnZpZXdzLnByb3BlcnRpZXMud2lkZ2V0cy5sYXlvdXQiDQorCXhtbG5zOng9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcveHd0IiB4bWxucz0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy94d3QvcHJlc2VudGF0aW9uIg0KKwl4bWxuczpwcGU9ImNsci1uYW1lc3BhY2U6b3JnLmVjbGlwc2UucGFweXJ1cy52aWV3cy5wcm9wZXJ0aWVzLndpZGdldHMiPg0KKwk8Q29tcG9zaXRlLmxheW91dD4NCisJCTxwcGVsOlByb3BlcnRpZXNMYXlvdXQ+PC9wcGVsOlByb3BlcnRpZXNMYXlvdXQ+DQorCTwvQ29tcG9zaXRlLmxheW91dD4NCisJPENvbXBvc2l0ZT4NCisJCTxDb21wb3NpdGUubGF5b3V0Pg0KKwkJCTxwcGVsOlByb3BlcnRpZXNMYXlvdXQgbnVtQ29sdW1ucz0iMiI+PC9wcGVsOlByb3BlcnRpZXNMYXlvdXQ+DQorCQk8L0NvbXBvc2l0ZS5sYXlvdXQ+DQorCQk8cHBlOkJvb2xlYW5SYWRpbyBpbnB1dD0ie0JpbmRpbmd9IiBwcm9wZXJ0eT0iVU1MOkNsYXNzaWZpZXI6aXNBYnN0cmFjdCI+PC9wcGU6Qm9vbGVhblJhZGlvPg0KKwkJPHBwZTpCb29sZWFuUmFkaW8gaW5wdXQ9IntCaW5kaW5nfSIgcHJvcGVydHk9IlVNTDpDbGFzczppc0FjdGl2ZSI+PC9wcGU6Qm9vbGVhblJhZGlvPg0KKwkJPHBwZTpCb29sZWFuUmFkaW8gaW5wdXQ9IntCaW5kaW5nfSINCisJCQlwcm9wZXJ0eT0iVU1MOlJlZGVmaW5hYmxlRWxlbWVudDppc0xlYWYiPjwvcHBlOkJvb2xlYW5SYWRpbz4NCisJCTxwcGU6Qm9vbGVhblJhZGlvIGlucHV0PSJ7QmluZGluZ30iDQorCQkJcHJvcGVydHk9IlN5c01MOkJsb2NrczpCbG9jazppc0VuY2Fwc3VsYXRlZCI+PC9wcGU6Qm9vbGVhblJhZGlvPg0KKwk8L0NvbXBvc2l0ZT4NCisJPENvbXBvc2l0ZT4NCisJCTxDb21wb3NpdGUubGF5b3V0Pg0KKwkJCTxwcGVsOlByb3BlcnRpZXNMYXlvdXQ+PC9wcGVsOlByb3BlcnRpZXNMYXlvdXQ+DQorCQk8L0NvbXBvc2l0ZS5sYXlvdXQ+DQorCQk8cHBlOkVudW1Db21ibyBpbnB1dD0ie0JpbmRpbmd9IiBwcm9wZXJ0eT0iVU1MOk5hbWVkRWxlbWVudDp2aXNpYmlsaXR5Ij48L3BwZTpFbnVtQ29tYm8+DQorCTwvQ29tcG9zaXRlPg0KKzwvQ29tcG9zaXRlPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3VpL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC51aS9yZXNvdXJjZXMvcHJvcGVydGllcy91aS9NdWx0aXBsZUJvdW5kUmVmZXJlbmNlLnh3dCBiL3VpL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC51aS9yZXNvdXJjZXMvcHJvcGVydGllcy91aS9NdWx0aXBsZUJvdW5kUmVmZXJlbmNlLnh3dApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi45YmE0Y2U4Ci0tLSAvZGV2L251bGwKKysrIGIvdWkvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnVpL3Jlc291cmNlcy9wcm9wZXJ0aWVzL3VpL011bHRpcGxlQm91bmRSZWZlcmVuY2UueHd0CkBAIC0wLDAgKzEsOCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4NCis8Q29tcG9zaXRlIHhtbG5zOmo9ImNsci1uYW1lc3BhY2U6amF2YS5sYW5nIg0KKwl4bWxuczpwcGVsPSJjbHItbmFtZXNwYWNlOm9yZy5lY2xpcHNlLnBhcHlydXMudmlld3MucHJvcGVydGllcy53aWRnZXRzLmxheW91dCINCisJeG1sbnM6eD0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy94d3QiIHhtbG5zPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3h3dC9wcmVzZW50YXRpb24iPg0KKwk8Q29tcG9zaXRlLmxheW91dD4NCisJCTxwcGVsOlByb3BlcnRpZXNMYXlvdXQ+PC9wcGVsOlByb3BlcnRpZXNMYXlvdXQ+DQorCTwvQ29tcG9zaXRlLmxheW91dD4NCis8L0NvbXBvc2l0ZT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS91aS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQudWkvcmVzb3VyY2VzL3Byb3BlcnRpZXMvdWkvTXVsdGlwbGVDaGFuZ2VTdHJ1Y3R1cmFsRmVhdHVyZUV2ZW50Lnh3dCBiL3VpL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC51aS9yZXNvdXJjZXMvcHJvcGVydGllcy91aS9NdWx0aXBsZUNoYW5nZVN0cnVjdHVyYWxGZWF0dXJlRXZlbnQueHd0Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjliYTRjZTgKLS0tIC9kZXYvbnVsbAorKysgYi91aS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQudWkvcmVzb3VyY2VzL3Byb3BlcnRpZXMvdWkvTXVsdGlwbGVDaGFuZ2VTdHJ1Y3R1cmFsRmVhdHVyZUV2ZW50Lnh3dApAQCAtMCwwICsxLDggQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+DQorPENvbXBvc2l0ZSB4bWxuczpqPSJjbHItbmFtZXNwYWNlOmphdmEubGFuZyINCisJeG1sbnM6cHBlbD0iY2xyLW5hbWVzcGFjZTpvcmcuZWNsaXBzZS5wYXB5cnVzLnZpZXdzLnByb3BlcnRpZXMud2lkZ2V0cy5sYXlvdXQiDQorCXhtbG5zOng9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcveHd0IiB4bWxucz0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy94d3QvcHJlc2VudGF0aW9uIj4NCisJPENvbXBvc2l0ZS5sYXlvdXQ+DQorCQk8cHBlbDpQcm9wZXJ0aWVzTGF5b3V0PjwvcHBlbDpQcm9wZXJ0aWVzTGF5b3V0Pg0KKwk8L0NvbXBvc2l0ZS5sYXlvdXQ+DQorPC9Db21wb3NpdGU+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdWkvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnVpL3Jlc291cmNlcy9wcm9wZXJ0aWVzL3VpL011bHRpcGxlQ2xhc3NpZmllckJlaGF2aW9yUHJvcGVydHkueHd0IGIvdWkvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnVpL3Jlc291cmNlcy9wcm9wZXJ0aWVzL3VpL011bHRpcGxlQ2xhc3NpZmllckJlaGF2aW9yUHJvcGVydHkueHd0Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjliYTRjZTgKLS0tIC9kZXYvbnVsbAorKysgYi91aS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQudWkvcmVzb3VyY2VzL3Byb3BlcnRpZXMvdWkvTXVsdGlwbGVDbGFzc2lmaWVyQmVoYXZpb3JQcm9wZXJ0eS54d3QKQEAgLTAsMCArMSw4IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/Pg0KKzxDb21wb3NpdGUgeG1sbnM6aj0iY2xyLW5hbWVzcGFjZTpqYXZhLmxhbmciDQorCXhtbG5zOnBwZWw9ImNsci1uYW1lc3BhY2U6b3JnLmVjbGlwc2UucGFweXJ1cy52aWV3cy5wcm9wZXJ0aWVzLndpZGdldHMubGF5b3V0Ig0KKwl4bWxuczp4PSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3h3dCIgeG1sbnM9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcveHd0L3ByZXNlbnRhdGlvbiI+DQorCTxDb21wb3NpdGUubGF5b3V0Pg0KKwkJPHBwZWw6UHJvcGVydGllc0xheW91dD48L3BwZWw6UHJvcGVydGllc0xheW91dD4NCisJPC9Db21wb3NpdGUubGF5b3V0Pg0KKzwvQ29tcG9zaXRlPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3VpL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC51aS9yZXNvdXJjZXMvcHJvcGVydGllcy91aS9NdWx0aXBsZUNvbmZvcm0ueHd0IGIvdWkvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnVpL3Jlc291cmNlcy9wcm9wZXJ0aWVzL3VpL011bHRpcGxlQ29uZm9ybS54d3QKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uN2U1OTBkZQotLS0gL2Rldi9udWxsCisrKyBiL3VpL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC51aS9yZXNvdXJjZXMvcHJvcGVydGllcy91aS9NdWx0aXBsZUNvbmZvcm0ueHd0CkBAIC0wLDAgKzEsMTMgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+DQorPENvbXBvc2l0ZSB4bWxuczpqPSJjbHItbmFtZXNwYWNlOmphdmEubGFuZyINCisJeG1sbnM6cHBlbD0iY2xyLW5hbWVzcGFjZTpvcmcuZWNsaXBzZS5wYXB5cnVzLnZpZXdzLnByb3BlcnRpZXMud2lkZ2V0cy5sYXlvdXQiDQorCXhtbG5zOng9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcveHd0IiB4bWxucz0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy94d3QvcHJlc2VudGF0aW9uIg0KKwl4bWxuczpwcGU9ImNsci1uYW1lc3BhY2U6b3JnLmVjbGlwc2UucGFweXJ1cy52aWV3cy5wcm9wZXJ0aWVzLndpZGdldHMiPg0KKwk8Q29tcG9zaXRlLmxheW91dD4NCisJCTxwcGVsOlByb3BlcnRpZXNMYXlvdXQ+PC9wcGVsOlByb3BlcnRpZXNMYXlvdXQ+DQorCTwvQ29tcG9zaXRlLmxheW91dD4NCis8Q29tcG9zaXRlPg0KKzxDb21wb3NpdGUubGF5b3V0PjxwcGVsOlByb3BlcnRpZXNMYXlvdXQ+PC9wcGVsOlByb3BlcnRpZXNMYXlvdXQ+PC9Db21wb3NpdGUubGF5b3V0Pg0KKzxwcGU6RW51bUNvbWJvIGlucHV0PSJ7QmluZGluZ30iIHByb3BlcnR5PSJVTUw6TmFtZWRFbGVtZW50OnZpc2liaWxpdHkiPjwvcHBlOkVudW1Db21ibz4NCis8L0NvbXBvc2l0ZT4NCis8L0NvbXBvc2l0ZT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS91aS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQudWkvcmVzb3VyY2VzL3Byb3BlcnRpZXMvdWkvTXVsdGlwbGVDb25uZWN0b3JQcm9wZXJ0eS54d3QgYi91aS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQudWkvcmVzb3VyY2VzL3Byb3BlcnRpZXMvdWkvTXVsdGlwbGVDb25uZWN0b3JQcm9wZXJ0eS54d3QKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uYmJlZDExYgotLS0gL2Rldi9udWxsCisrKyBiL3VpL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC51aS9yZXNvdXJjZXMvcHJvcGVydGllcy91aS9NdWx0aXBsZUNvbm5lY3RvclByb3BlcnR5Lnh3dApAQCAtMCwwICsxLDMyIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/Pg0KKzxDb21wb3NpdGUgeG1sbnM6aj0iY2xyLW5hbWVzcGFjZTpqYXZhLmxhbmciDQorCXhtbG5zOnBwZWw9ImNsci1uYW1lc3BhY2U6b3JnLmVjbGlwc2UucGFweXJ1cy52aWV3cy5wcm9wZXJ0aWVzLndpZGdldHMubGF5b3V0Ig0KKwl4bWxuczp4PSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3h3dCIgeG1sbnM9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcveHd0L3ByZXNlbnRhdGlvbiINCisJeG1sbnM6cHBlPSJjbHItbmFtZXNwYWNlOm9yZy5lY2xpcHNlLnBhcHlydXMudmlld3MucHJvcGVydGllcy53aWRnZXRzIj4NCisJPENvbXBvc2l0ZS5sYXlvdXQ+DQorCQk8cHBlbDpQcm9wZXJ0aWVzTGF5b3V0PjwvcHBlbDpQcm9wZXJ0aWVzTGF5b3V0Pg0KKwk8L0NvbXBvc2l0ZS5sYXlvdXQ+DQorCTxDb21wb3NpdGU+DQorCQk8Q29tcG9zaXRlLmxheW91dD4NCisJCQk8cHBlbDpQcm9wZXJ0aWVzTGF5b3V0IG51bUNvbHVtbnM9IjIiPjwvcHBlbDpQcm9wZXJ0aWVzTGF5b3V0Pg0KKwkJPC9Db21wb3NpdGUubGF5b3V0Pg0KKwkJPHBwZTpCb29sZWFuUmFkaW8gaW5wdXQ9IntCaW5kaW5nfSIgcHJvcGVydHk9IlVNTDpQcm9wZXJ0eTppc0Rlcml2ZWQiPjwvcHBlOkJvb2xlYW5SYWRpbz4NCisJCTxwcGU6Qm9vbGVhblJhZGlvIGlucHV0PSJ7QmluZGluZ30iIHByb3BlcnR5PSJVTUw6UHJvcGVydHk6aXNEZXJpdmVkVW5pb24iPjwvcHBlOkJvb2xlYW5SYWRpbz4NCisJCTxwcGU6Qm9vbGVhblJhZGlvIGlucHV0PSJ7QmluZGluZ30iDQorCQkJcHJvcGVydHk9IlVNTDpSZWRlZmluYWJsZUVsZW1lbnQ6aXNMZWFmIj48L3BwZTpCb29sZWFuUmFkaW8+DQorCQk8cHBlOkJvb2xlYW5SYWRpbyBpbnB1dD0ie0JpbmRpbmd9Ig0KKwkJCXByb3BlcnR5PSJVTUw6TXVsdGlwbGljaXR5RWxlbWVudDppc09yZGVyZWQiPjwvcHBlOkJvb2xlYW5SYWRpbz4NCisJCTxwcGU6Qm9vbGVhblJhZGlvIGlucHV0PSJ7QmluZGluZ30iDQorCQkJcHJvcGVydHk9IlVNTDpTdHJ1Y3R1cmFsRmVhdHVyZTppc1JlYWRPbmx5Ij48L3BwZTpCb29sZWFuUmFkaW8+DQorCQk8cHBlOkJvb2xlYW5SYWRpbyBpbnB1dD0ie0JpbmRpbmd9IiBwcm9wZXJ0eT0iVU1MOkZlYXR1cmU6aXNTdGF0aWMiPjwvcHBlOkJvb2xlYW5SYWRpbz4NCisJCTxwcGU6Qm9vbGVhblJhZGlvIGlucHV0PSJ7QmluZGluZ30iDQorCQkJcHJvcGVydHk9IlVNTDpNdWx0aXBsaWNpdHlFbGVtZW50OmlzVW5pcXVlIj48L3BwZTpCb29sZWFuUmFkaW8+DQorCTwvQ29tcG9zaXRlPg0KKwk8Q29tcG9zaXRlPg0KKwkJPENvbXBvc2l0ZS5sYXlvdXQ+DQorCQkJPHBwZWw6UHJvcGVydGllc0xheW91dCBudW1Db2x1bW5zPSIyIj48L3BwZWw6UHJvcGVydGllc0xheW91dD4NCisJCTwvQ29tcG9zaXRlLmxheW91dD4NCisJCTxwcGU6RW51bUNvbWJvIGlucHV0PSJ7QmluZGluZ30iIHByb3BlcnR5PSJVTUw6UHJvcGVydHk6YWdncmVnYXRpb24iPjwvcHBlOkVudW1Db21ibz4NCisJCTxwcGU6RW51bUNvbWJvIGlucHV0PSJ7QmluZGluZ30iIHByb3BlcnR5PSJVTUw6TmFtZWRFbGVtZW50OnZpc2liaWxpdHkiPjwvcHBlOkVudW1Db21ibz4NCisJPC9Db21wb3NpdGU+DQorPC9Db21wb3NpdGU+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdWkvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnVpL3Jlc291cmNlcy9wcm9wZXJ0aWVzL3VpL011bHRpcGxlQ29uc3RyYWludEJsb2NrLnh3dCBiL3VpL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC51aS9yZXNvdXJjZXMvcHJvcGVydGllcy91aS9NdWx0aXBsZUNvbnN0cmFpbnRCbG9jay54d3QKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uYWMyOGUzOAotLS0gL2Rldi9udWxsCisrKyBiL3VpL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC51aS9yZXNvdXJjZXMvcHJvcGVydGllcy91aS9NdWx0aXBsZUNvbnN0cmFpbnRCbG9jay54d3QKQEAgLTAsMCArMSwyNCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4NCis8Q29tcG9zaXRlIHhtbG5zOmo9ImNsci1uYW1lc3BhY2U6amF2YS5sYW5nIg0KKwl4bWxuczpwcGVsPSJjbHItbmFtZXNwYWNlOm9yZy5lY2xpcHNlLnBhcHlydXMudmlld3MucHJvcGVydGllcy53aWRnZXRzLmxheW91dCINCisJeG1sbnM6eD0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy94d3QiIHhtbG5zPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3h3dC9wcmVzZW50YXRpb24iDQorCXhtbG5zOnBwZT0iY2xyLW5hbWVzcGFjZTpvcmcuZWNsaXBzZS5wYXB5cnVzLnZpZXdzLnByb3BlcnRpZXMud2lkZ2V0cyI+DQorCTxDb21wb3NpdGUubGF5b3V0Pg0KKwkJPHBwZWw6UHJvcGVydGllc0xheW91dD48L3BwZWw6UHJvcGVydGllc0xheW91dD4NCisJPC9Db21wb3NpdGUubGF5b3V0Pg0KKwk8Q29tcG9zaXRlPg0KKwkJPENvbXBvc2l0ZS5sYXlvdXQ+DQorCQkJPHBwZWw6UHJvcGVydGllc0xheW91dCBudW1Db2x1bW5zPSIyIj48L3BwZWw6UHJvcGVydGllc0xheW91dD4NCisJCTwvQ29tcG9zaXRlLmxheW91dD4NCisJCTxwcGU6Qm9vbGVhblJhZGlvIGlucHV0PSJ7QmluZGluZ30iIHByb3BlcnR5PSJVTUw6Q2xhc3NpZmllcjppc0Fic3RyYWN0Ij48L3BwZTpCb29sZWFuUmFkaW8+DQorCQk8cHBlOkJvb2xlYW5SYWRpbyBpbnB1dD0ie0JpbmRpbmd9IiBwcm9wZXJ0eT0iVU1MOkNsYXNzOmlzQWN0aXZlIj48L3BwZTpCb29sZWFuUmFkaW8+DQorCQk8cHBlOkJvb2xlYW5SYWRpbyBpbnB1dD0ie0JpbmRpbmd9Ig0KKwkJCXByb3BlcnR5PSJVTUw6UmVkZWZpbmFibGVFbGVtZW50OmlzTGVhZiI+PC9wcGU6Qm9vbGVhblJhZGlvPg0KKwk8L0NvbXBvc2l0ZT4NCisJPENvbXBvc2l0ZT4NCisJCTxDb21wb3NpdGUubGF5b3V0Pg0KKwkJCTxwcGVsOlByb3BlcnRpZXNMYXlvdXQ+PC9wcGVsOlByb3BlcnRpZXNMYXlvdXQ+DQorCQk8L0NvbXBvc2l0ZS5sYXlvdXQ+DQorCQk8cHBlOkVudW1Db21ibyBpbnB1dD0ie0JpbmRpbmd9IiBwcm9wZXJ0eT0iVU1MOk5hbWVkRWxlbWVudDp2aXNpYmlsaXR5Ij48L3BwZTpFbnVtQ29tYm8+DQorCTwvQ29tcG9zaXRlPg0KKzwvQ29tcG9zaXRlPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3VpL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC51aS9yZXNvdXJjZXMvcHJvcGVydGllcy91aS9NdWx0aXBsZUNvbnRpbnVvdXMueHd0IGIvdWkvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnVpL3Jlc291cmNlcy9wcm9wZXJ0aWVzL3VpL011bHRpcGxlQ29udGludW91cy54d3QKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uYzZjZGQ4ZAotLS0gL2Rldi9udWxsCisrKyBiL3VpL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC51aS9yZXNvdXJjZXMvcHJvcGVydGllcy91aS9NdWx0aXBsZUNvbnRpbnVvdXMueHd0CkBAIC0wLDAgKzEsMzAgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+DQorPENvbXBvc2l0ZSB4bWxuczpqPSJjbHItbmFtZXNwYWNlOmphdmEubGFuZyINCisJeG1sbnM6cHBlbD0iY2xyLW5hbWVzcGFjZTpvcmcuZWNsaXBzZS5wYXB5cnVzLnZpZXdzLnByb3BlcnRpZXMud2lkZ2V0cy5sYXlvdXQiDQorCXhtbG5zOng9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcveHd0IiB4bWxucz0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy94d3QvcHJlc2VudGF0aW9uIg0KKwl4bWxuczpwcGU9ImNsci1uYW1lc3BhY2U6b3JnLmVjbGlwc2UucGFweXJ1cy52aWV3cy5wcm9wZXJ0aWVzLndpZGdldHMiPg0KKwk8Q29tcG9zaXRlLmxheW91dD4NCisJCTxwcGVsOlByb3BlcnRpZXNMYXlvdXQ+PC9wcGVsOlByb3BlcnRpZXNMYXlvdXQ+DQorCTwvQ29tcG9zaXRlLmxheW91dD4NCisJPENvbXBvc2l0ZT4NCisJCTxDb21wb3NpdGUubGF5b3V0Pg0KKwkJCTxwcGVsOlByb3BlcnRpZXNMYXlvdXQgbnVtQ29sdW1ucz0iMiI+PC9wcGVsOlByb3BlcnRpZXNMYXlvdXQ+DQorCQk8L0NvbXBvc2l0ZS5sYXlvdXQ+DQorCQk8cHBlOkJvb2xlYW5SYWRpbyBpbnB1dD0ie0JpbmRpbmd9IiBwcm9wZXJ0eT0iVU1MOlBhcmFtZXRlcjppc0V4Y2VwdGlvbiI+PC9wcGU6Qm9vbGVhblJhZGlvPg0KKwkJPHBwZTpCb29sZWFuUmFkaW8gaW5wdXQ9IntCaW5kaW5nfSINCisJCQlwcm9wZXJ0eT0iVU1MOlJlZGVmaW5hYmxlRWxlbWVudDppc0xlYWYiPjwvcHBlOkJvb2xlYW5SYWRpbz4NCisJCTxwcGU6Qm9vbGVhblJhZGlvIGlucHV0PSJ7QmluZGluZ30iDQorCQkJcHJvcGVydHk9IlVNTDpNdWx0aXBsaWNpdHlFbGVtZW50OmlzT3JkZXJlZCI+PC9wcGU6Qm9vbGVhblJhZGlvPg0KKwkJPHBwZTpCb29sZWFuUmFkaW8gaW5wdXQ9IntCaW5kaW5nfSIgcHJvcGVydHk9IlVNTDpQYXJhbWV0ZXI6aXNTdHJlYW0iPjwvcHBlOkJvb2xlYW5SYWRpbz4NCisJCTxwcGU6Qm9vbGVhblJhZGlvIGlucHV0PSJ7QmluZGluZ30iDQorCQkJcHJvcGVydHk9IlVNTDpNdWx0aXBsaWNpdHlFbGVtZW50OmlzVW5pcXVlIj48L3BwZTpCb29sZWFuUmFkaW8+DQorCTwvQ29tcG9zaXRlPg0KKwk8Q29tcG9zaXRlPg0KKwkJPENvbXBvc2l0ZS5sYXlvdXQ+DQorCQkJPHBwZWw6UHJvcGVydGllc0xheW91dCBudW1Db2x1bW5zPSIyIj48L3BwZWw6UHJvcGVydGllc0xheW91dD4NCisJCTwvQ29tcG9zaXRlLmxheW91dD4NCisJCTxwcGU6RW51bUNvbWJvIGlucHV0PSJ7QmluZGluZ30iIHByb3BlcnR5PSJVTUw6UGFyYW1ldGVyOmRpcmVjdGlvbiI+PC9wcGU6RW51bUNvbWJvPg0KKwkJPHBwZTpFbnVtQ29tYm8gaW5wdXQ9IntCaW5kaW5nfSIgcHJvcGVydHk9IlVNTDpQYXJhbWV0ZXI6ZWZmZWN0Ij48L3BwZTpFbnVtQ29tYm8+DQorCQk8cHBlOkVudW1Db21ibyBpbnB1dD0ie0JpbmRpbmd9IiBwcm9wZXJ0eT0iVU1MOk5hbWVkRWxlbWVudDp2aXNpYmlsaXR5Ij48L3BwZTpFbnVtQ29tYm8+DQorCTwvQ29tcG9zaXRlPg0KKzwvQ29tcG9zaXRlPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3VpL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC51aS9yZXNvdXJjZXMvcHJvcGVydGllcy91aS9NdWx0aXBsZUNvbnRyb2xPcGVyYXRvci54d3QgYi91aS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQudWkvcmVzb3VyY2VzL3Byb3BlcnRpZXMvdWkvTXVsdGlwbGVDb250cm9sT3BlcmF0b3IueHd0Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjJjNWQ3YzQKLS0tIC9kZXYvbnVsbAorKysgYi91aS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQudWkvcmVzb3VyY2VzL3Byb3BlcnRpZXMvdWkvTXVsdGlwbGVDb250cm9sT3BlcmF0b3IueHd0CkBAIC0wLDAgKzEsMjggQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+DQorPENvbXBvc2l0ZSB4bWxuczpqPSJjbHItbmFtZXNwYWNlOmphdmEubGFuZyINCisJeG1sbnM6cHBlbD0iY2xyLW5hbWVzcGFjZTpvcmcuZWNsaXBzZS5wYXB5cnVzLnZpZXdzLnByb3BlcnRpZXMud2lkZ2V0cy5sYXlvdXQiDQorCXhtbG5zOng9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcveHd0IiB4bWxucz0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy94d3QvcHJlc2VudGF0aW9uIg0KKwl4bWxuczpwcGU9ImNsci1uYW1lc3BhY2U6b3JnLmVjbGlwc2UucGFweXJ1cy52aWV3cy5wcm9wZXJ0aWVzLndpZGdldHMiPg0KKwk8Q29tcG9zaXRlLmxheW91dD4NCisJCTxwcGVsOlByb3BlcnRpZXNMYXlvdXQ+PC9wcGVsOlByb3BlcnRpZXNMYXlvdXQ+DQorCTwvQ29tcG9zaXRlLmxheW91dD4NCisJPENvbXBvc2l0ZT4NCisJCTxDb21wb3NpdGUubGF5b3V0Pg0KKwkJCTxwcGVsOlByb3BlcnRpZXNMYXlvdXQgbnVtQ29sdW1ucz0iMiI+PC9wcGVsOlByb3BlcnRpZXNMYXlvdXQ+DQorCQk8L0NvbXBvc2l0ZS5sYXlvdXQ+DQorCQk8cHBlOkJvb2xlYW5SYWRpbyBpbnB1dD0ie0JpbmRpbmd9IiBwcm9wZXJ0eT0iVU1MOkNsYXNzaWZpZXI6aXNBYnN0cmFjdCI+PC9wcGU6Qm9vbGVhblJhZGlvPg0KKwkJPHBwZTpCb29sZWFuUmFkaW8gaW5wdXQ9IntCaW5kaW5nfSIgcHJvcGVydHk9IlVNTDpDbGFzczppc0FjdGl2ZSI+PC9wcGU6Qm9vbGVhblJhZGlvPg0KKwkJPHBwZTpCb29sZWFuUmFkaW8gaW5wdXQ9IntCaW5kaW5nfSINCisJCQlwcm9wZXJ0eT0iVU1MOlJlZGVmaW5hYmxlRWxlbWVudDppc0xlYWYiPjwvcHBlOkJvb2xlYW5SYWRpbz4NCisJCTxwcGU6Qm9vbGVhblJhZGlvIGlucHV0PSJ7QmluZGluZ30iIHByb3BlcnR5PSJVTUw6T3BlcmF0aW9uOmlzUXVlcnkiPjwvcHBlOkJvb2xlYW5SYWRpbz4NCisJCTxwcGU6Qm9vbGVhblJhZGlvIGlucHV0PSJ7QmluZGluZ30iIHByb3BlcnR5PSJVTUw6QmVoYXZpb3I6aXNSZWVudHJhbnQiPjwvcHBlOkJvb2xlYW5SYWRpbz4NCisJCTxwcGU6Qm9vbGVhblJhZGlvIGlucHV0PSJ7QmluZGluZ30iIHByb3BlcnR5PSJVTUw6RmVhdHVyZTppc1N0YXRpYyI+PC9wcGU6Qm9vbGVhblJhZGlvPg0KKwk8L0NvbXBvc2l0ZT4NCisJPENvbXBvc2l0ZT4NCisJCTxDb21wb3NpdGUubGF5b3V0Pg0KKwkJCTxwcGVsOlByb3BlcnRpZXNMYXlvdXQgbnVtQ29sdW1ucz0iMiI+PC9wcGVsOlByb3BlcnRpZXNMYXlvdXQ+DQorCQk8L0NvbXBvc2l0ZS5sYXlvdXQ+DQorCQk8cHBlOkVudW1Db21ibyBpbnB1dD0ie0JpbmRpbmd9IiBwcm9wZXJ0eT0iVU1MOkJlaGF2aW9yYWxGZWF0dXJlOmNvbmN1cnJlbmN5Ij48L3BwZTpFbnVtQ29tYm8+DQorCQk8cHBlOkVudW1Db21ibyBpbnB1dD0ie0JpbmRpbmd9IiBwcm9wZXJ0eT0iVU1MOk5hbWVkRWxlbWVudDp2aXNpYmlsaXR5Ij48L3BwZTpFbnVtQ29tYm8+DQorCTwvQ29tcG9zaXRlPg0KKzwvQ29tcG9zaXRlPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3VpL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC51aS9yZXNvdXJjZXMvcHJvcGVydGllcy91aS9NdWx0aXBsZUNvcHkueHd0IGIvdWkvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnVpL3Jlc291cmNlcy9wcm9wZXJ0aWVzL3VpL011bHRpcGxlQ29weS54d3QKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uOWJhNGNlOAotLS0gL2Rldi9udWxsCisrKyBiL3VpL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC51aS9yZXNvdXJjZXMvcHJvcGVydGllcy91aS9NdWx0aXBsZUNvcHkueHd0CkBAIC0wLDAgKzEsOCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4NCis8Q29tcG9zaXRlIHhtbG5zOmo9ImNsci1uYW1lc3BhY2U6amF2YS5sYW5nIg0KKwl4bWxuczpwcGVsPSJjbHItbmFtZXNwYWNlOm9yZy5lY2xpcHNlLnBhcHlydXMudmlld3MucHJvcGVydGllcy53aWRnZXRzLmxheW91dCINCisJeG1sbnM6eD0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy94d3QiIHhtbG5zPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3h3dC9wcmVzZW50YXRpb24iPg0KKwk8Q29tcG9zaXRlLmxheW91dD4NCisJCTxwcGVsOlByb3BlcnRpZXNMYXlvdXQ+PC9wcGVsOlByb3BlcnRpZXNMYXlvdXQ+DQorCTwvQ29tcG9zaXRlLmxheW91dD4NCis8L0NvbXBvc2l0ZT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS91aS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQudWkvcmVzb3VyY2VzL3Byb3BlcnRpZXMvdWkvTXVsdGlwbGVEZXByZWNhdGVkLnh3dCBiL3VpL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC51aS9yZXNvdXJjZXMvcHJvcGVydGllcy91aS9NdWx0aXBsZURlcHJlY2F0ZWQueHd0Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjliYTRjZTgKLS0tIC9kZXYvbnVsbAorKysgYi91aS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQudWkvcmVzb3VyY2VzL3Byb3BlcnRpZXMvdWkvTXVsdGlwbGVEZXByZWNhdGVkLnh3dApAQCAtMCwwICsxLDggQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+DQorPENvbXBvc2l0ZSB4bWxuczpqPSJjbHItbmFtZXNwYWNlOmphdmEubGFuZyINCisJeG1sbnM6cHBlbD0iY2xyLW5hbWVzcGFjZTpvcmcuZWNsaXBzZS5wYXB5cnVzLnZpZXdzLnByb3BlcnRpZXMud2lkZ2V0cy5sYXlvdXQiDQorCXhtbG5zOng9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcveHd0IiB4bWxucz0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy94d3QvcHJlc2VudGF0aW9uIj4NCisJPENvbXBvc2l0ZS5sYXlvdXQ+DQorCQk8cHBlbDpQcm9wZXJ0aWVzTGF5b3V0PjwvcHBlbDpQcm9wZXJ0aWVzTGF5b3V0Pg0KKwk8L0NvbXBvc2l0ZS5sYXlvdXQ+DQorPC9Db21wb3NpdGU+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdWkvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnVpL3Jlc291cmNlcy9wcm9wZXJ0aWVzL3VpL011bHRpcGxlRGVyaXZlUmVxdC54d3QgYi91aS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQudWkvcmVzb3VyY2VzL3Byb3BlcnRpZXMvdWkvTXVsdGlwbGVEZXJpdmVSZXF0Lnh3dApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi45YmE0Y2U4Ci0tLSAvZGV2L251bGwKKysrIGIvdWkvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnVpL3Jlc291cmNlcy9wcm9wZXJ0aWVzL3VpL011bHRpcGxlRGVyaXZlUmVxdC54d3QKQEAgLTAsMCArMSw4IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/Pg0KKzxDb21wb3NpdGUgeG1sbnM6aj0iY2xyLW5hbWVzcGFjZTpqYXZhLmxhbmciDQorCXhtbG5zOnBwZWw9ImNsci1uYW1lc3BhY2U6b3JnLmVjbGlwc2UucGFweXJ1cy52aWV3cy5wcm9wZXJ0aWVzLndpZGdldHMubGF5b3V0Ig0KKwl4bWxuczp4PSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3h3dCIgeG1sbnM9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcveHd0L3ByZXNlbnRhdGlvbiI+DQorCTxDb21wb3NpdGUubGF5b3V0Pg0KKwkJPHBwZWw6UHJvcGVydGllc0xheW91dD48L3BwZWw6UHJvcGVydGllc0xheW91dD4NCisJPC9Db21wb3NpdGUubGF5b3V0Pg0KKzwvQ29tcG9zaXRlPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3VpL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC51aS9yZXNvdXJjZXMvcHJvcGVydGllcy91aS9NdWx0aXBsZURpcmVjdGVkRmVhdHVyZS54d3QgYi91aS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQudWkvcmVzb3VyY2VzL3Byb3BlcnRpZXMvdWkvTXVsdGlwbGVEaXJlY3RlZEZlYXR1cmUueHd0Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjA1NmY2ZjgKLS0tIC9kZXYvbnVsbAorKysgYi91aS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQudWkvcmVzb3VyY2VzL3Byb3BlcnRpZXMvdWkvTXVsdGlwbGVEaXJlY3RlZEZlYXR1cmUueHd0CkBAIC0wLDAgKzEsMTYgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+DQorPENvbXBvc2l0ZSB4bWxuczpqPSJjbHItbmFtZXNwYWNlOmphdmEubGFuZyINCisJeG1sbnM6cHBlbD0iY2xyLW5hbWVzcGFjZTpvcmcuZWNsaXBzZS5wYXB5cnVzLnZpZXdzLnByb3BlcnRpZXMud2lkZ2V0cy5sYXlvdXQiDQorCXhtbG5zOng9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcveHd0IiB4bWxucz0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy94d3QvcHJlc2VudGF0aW9uIg0KKwl4bWxuczpwcGU9ImNsci1uYW1lc3BhY2U6b3JnLmVjbGlwc2UucGFweXJ1cy52aWV3cy5wcm9wZXJ0aWVzLndpZGdldHMiPg0KKwk8Q29tcG9zaXRlLmxheW91dD4NCisJCTxwcGVsOlByb3BlcnRpZXNMYXlvdXQ+PC9wcGVsOlByb3BlcnRpZXNMYXlvdXQ+DQorCTwvQ29tcG9zaXRlLmxheW91dD4NCisJPENvbXBvc2l0ZT4NCisJCTxDb21wb3NpdGUubGF5b3V0Pg0KKwkJCTxwcGVsOlByb3BlcnRpZXNMYXlvdXQgbnVtQ29sdW1ucz0iMSI+PC9wcGVsOlByb3BlcnRpZXNMYXlvdXQ+DQorCQk8L0NvbXBvc2l0ZS5sYXlvdXQ+DQorCQk8cHBlOkVudW1Db21ibyBpbnB1dD0ie0JpbmRpbmd9Ig0KKwkJCXByb3BlcnR5PSJTeXNNTDpQb3J0c2FuZEZsb3dzOkRpcmVjdGVkRmVhdHVyZTpmZWF0dXJlRGlyZWN0aW9uIj48L3BwZTpFbnVtQ29tYm8+DQorCTwvQ29tcG9zaXRlPg0KKzwvQ29tcG9zaXRlPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3VpL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC51aS9yZXNvdXJjZXMvcHJvcGVydGllcy91aS9NdWx0aXBsZURpcmVjdGVkUmVsYXRpb25zaGlwUHJvcGVydHlQYXRoLnh3dCBiL3VpL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC51aS9yZXNvdXJjZXMvcHJvcGVydGllcy91aS9NdWx0aXBsZURpcmVjdGVkUmVsYXRpb25zaGlwUHJvcGVydHlQYXRoLnh3dApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi45YmE0Y2U4Ci0tLSAvZGV2L251bGwKKysrIGIvdWkvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnVpL3Jlc291cmNlcy9wcm9wZXJ0aWVzL3VpL011bHRpcGxlRGlyZWN0ZWRSZWxhdGlvbnNoaXBQcm9wZXJ0eVBhdGgueHd0CkBAIC0wLDAgKzEsOCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4NCis8Q29tcG9zaXRlIHhtbG5zOmo9ImNsci1uYW1lc3BhY2U6amF2YS5sYW5nIg0KKwl4bWxuczpwcGVsPSJjbHItbmFtZXNwYWNlOm9yZy5lY2xpcHNlLnBhcHlydXMudmlld3MucHJvcGVydGllcy53aWRnZXRzLmxheW91dCINCisJeG1sbnM6eD0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy94d3QiIHhtbG5zPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3h3dC9wcmVzZW50YXRpb24iPg0KKwk8Q29tcG9zaXRlLmxheW91dD4NCisJCTxwcGVsOlByb3BlcnRpZXNMYXlvdXQ+PC9wcGVsOlByb3BlcnRpZXNMYXlvdXQ+DQorCTwvQ29tcG9zaXRlLmxheW91dD4NCis8L0NvbXBvc2l0ZT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS91aS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQudWkvcmVzb3VyY2VzL3Byb3BlcnRpZXMvdWkvTXVsdGlwbGVEaXNjcmV0ZS54d3QgYi91aS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQudWkvcmVzb3VyY2VzL3Byb3BlcnRpZXMvdWkvTXVsdGlwbGVEaXNjcmV0ZS54d3QKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uYzZjZGQ4ZAotLS0gL2Rldi9udWxsCisrKyBiL3VpL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC51aS9yZXNvdXJjZXMvcHJvcGVydGllcy91aS9NdWx0aXBsZURpc2NyZXRlLnh3dApAQCAtMCwwICsxLDMwIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/Pg0KKzxDb21wb3NpdGUgeG1sbnM6aj0iY2xyLW5hbWVzcGFjZTpqYXZhLmxhbmciDQorCXhtbG5zOnBwZWw9ImNsci1uYW1lc3BhY2U6b3JnLmVjbGlwc2UucGFweXJ1cy52aWV3cy5wcm9wZXJ0aWVzLndpZGdldHMubGF5b3V0Ig0KKwl4bWxuczp4PSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3h3dCIgeG1sbnM9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcveHd0L3ByZXNlbnRhdGlvbiINCisJeG1sbnM6cHBlPSJjbHItbmFtZXNwYWNlOm9yZy5lY2xpcHNlLnBhcHlydXMudmlld3MucHJvcGVydGllcy53aWRnZXRzIj4NCisJPENvbXBvc2l0ZS5sYXlvdXQ+DQorCQk8cHBlbDpQcm9wZXJ0aWVzTGF5b3V0PjwvcHBlbDpQcm9wZXJ0aWVzTGF5b3V0Pg0KKwk8L0NvbXBvc2l0ZS5sYXlvdXQ+DQorCTxDb21wb3NpdGU+DQorCQk8Q29tcG9zaXRlLmxheW91dD4NCisJCQk8cHBlbDpQcm9wZXJ0aWVzTGF5b3V0IG51bUNvbHVtbnM9IjIiPjwvcHBlbDpQcm9wZXJ0aWVzTGF5b3V0Pg0KKwkJPC9Db21wb3NpdGUubGF5b3V0Pg0KKwkJPHBwZTpCb29sZWFuUmFkaW8gaW5wdXQ9IntCaW5kaW5nfSIgcHJvcGVydHk9IlVNTDpQYXJhbWV0ZXI6aXNFeGNlcHRpb24iPjwvcHBlOkJvb2xlYW5SYWRpbz4NCisJCTxwcGU6Qm9vbGVhblJhZGlvIGlucHV0PSJ7QmluZGluZ30iDQorCQkJcHJvcGVydHk9IlVNTDpSZWRlZmluYWJsZUVsZW1lbnQ6aXNMZWFmIj48L3BwZTpCb29sZWFuUmFkaW8+DQorCQk8cHBlOkJvb2xlYW5SYWRpbyBpbnB1dD0ie0JpbmRpbmd9Ig0KKwkJCXByb3BlcnR5PSJVTUw6TXVsdGlwbGljaXR5RWxlbWVudDppc09yZGVyZWQiPjwvcHBlOkJvb2xlYW5SYWRpbz4NCisJCTxwcGU6Qm9vbGVhblJhZGlvIGlucHV0PSJ7QmluZGluZ30iIHByb3BlcnR5PSJVTUw6UGFyYW1ldGVyOmlzU3RyZWFtIj48L3BwZTpCb29sZWFuUmFkaW8+DQorCQk8cHBlOkJvb2xlYW5SYWRpbyBpbnB1dD0ie0JpbmRpbmd9Ig0KKwkJCXByb3BlcnR5PSJVTUw6TXVsdGlwbGljaXR5RWxlbWVudDppc1VuaXF1ZSI+PC9wcGU6Qm9vbGVhblJhZGlvPg0KKwk8L0NvbXBvc2l0ZT4NCisJPENvbXBvc2l0ZT4NCisJCTxDb21wb3NpdGUubGF5b3V0Pg0KKwkJCTxwcGVsOlByb3BlcnRpZXNMYXlvdXQgbnVtQ29sdW1ucz0iMiI+PC9wcGVsOlByb3BlcnRpZXNMYXlvdXQ+DQorCQk8L0NvbXBvc2l0ZS5sYXlvdXQ+DQorCQk8cHBlOkVudW1Db21ibyBpbnB1dD0ie0JpbmRpbmd9IiBwcm9wZXJ0eT0iVU1MOlBhcmFtZXRlcjpkaXJlY3Rpb24iPjwvcHBlOkVudW1Db21ibz4NCisJCTxwcGU6RW51bUNvbWJvIGlucHV0PSJ7QmluZGluZ30iIHByb3BlcnR5PSJVTUw6UGFyYW1ldGVyOmVmZmVjdCI+PC9wcGU6RW51bUNvbWJvPg0KKwkJPHBwZTpFbnVtQ29tYm8gaW5wdXQ9IntCaW5kaW5nfSIgcHJvcGVydHk9IlVNTDpOYW1lZEVsZW1lbnQ6dmlzaWJpbGl0eSI+PC9wcGU6RW51bUNvbWJvPg0KKwk8L0NvbXBvc2l0ZT4NCis8L0NvbXBvc2l0ZT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS91aS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQudWkvcmVzb3VyY2VzL3Byb3BlcnRpZXMvdWkvTXVsdGlwbGVEaXN0cmlidXRlZFByb3BlcnR5Lnh3dCBiL3VpL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC51aS9yZXNvdXJjZXMvcHJvcGVydGllcy91aS9NdWx0aXBsZURpc3RyaWJ1dGVkUHJvcGVydHkueHd0Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmJiZWQxMWIKLS0tIC9kZXYvbnVsbAorKysgYi91aS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQudWkvcmVzb3VyY2VzL3Byb3BlcnRpZXMvdWkvTXVsdGlwbGVEaXN0cmlidXRlZFByb3BlcnR5Lnh3dApAQCAtMCwwICsxLDMyIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/Pg0KKzxDb21wb3NpdGUgeG1sbnM6aj0iY2xyLW5hbWVzcGFjZTpqYXZhLmxhbmciDQorCXhtbG5zOnBwZWw9ImNsci1uYW1lc3BhY2U6b3JnLmVjbGlwc2UucGFweXJ1cy52aWV3cy5wcm9wZXJ0aWVzLndpZGdldHMubGF5b3V0Ig0KKwl4bWxuczp4PSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3h3dCIgeG1sbnM9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcveHd0L3ByZXNlbnRhdGlvbiINCisJeG1sbnM6cHBlPSJjbHItbmFtZXNwYWNlOm9yZy5lY2xpcHNlLnBhcHlydXMudmlld3MucHJvcGVydGllcy53aWRnZXRzIj4NCisJPENvbXBvc2l0ZS5sYXlvdXQ+DQorCQk8cHBlbDpQcm9wZXJ0aWVzTGF5b3V0PjwvcHBlbDpQcm9wZXJ0aWVzTGF5b3V0Pg0KKwk8L0NvbXBvc2l0ZS5sYXlvdXQ+DQorCTxDb21wb3NpdGU+DQorCQk8Q29tcG9zaXRlLmxheW91dD4NCisJCQk8cHBlbDpQcm9wZXJ0aWVzTGF5b3V0IG51bUNvbHVtbnM9IjIiPjwvcHBlbDpQcm9wZXJ0aWVzTGF5b3V0Pg0KKwkJPC9Db21wb3NpdGUubGF5b3V0Pg0KKwkJPHBwZTpCb29sZWFuUmFkaW8gaW5wdXQ9IntCaW5kaW5nfSIgcHJvcGVydHk9IlVNTDpQcm9wZXJ0eTppc0Rlcml2ZWQiPjwvcHBlOkJvb2xlYW5SYWRpbz4NCisJCTxwcGU6Qm9vbGVhblJhZGlvIGlucHV0PSJ7QmluZGluZ30iIHByb3BlcnR5PSJVTUw6UHJvcGVydHk6aXNEZXJpdmVkVW5pb24iPjwvcHBlOkJvb2xlYW5SYWRpbz4NCisJCTxwcGU6Qm9vbGVhblJhZGlvIGlucHV0PSJ7QmluZGluZ30iDQorCQkJcHJvcGVydHk9IlVNTDpSZWRlZmluYWJsZUVsZW1lbnQ6aXNMZWFmIj48L3BwZTpCb29sZWFuUmFkaW8+DQorCQk8cHBlOkJvb2xlYW5SYWRpbyBpbnB1dD0ie0JpbmRpbmd9Ig0KKwkJCXByb3BlcnR5PSJVTUw6TXVsdGlwbGljaXR5RWxlbWVudDppc09yZGVyZWQiPjwvcHBlOkJvb2xlYW5SYWRpbz4NCisJCTxwcGU6Qm9vbGVhblJhZGlvIGlucHV0PSJ7QmluZGluZ30iDQorCQkJcHJvcGVydHk9IlVNTDpTdHJ1Y3R1cmFsRmVhdHVyZTppc1JlYWRPbmx5Ij48L3BwZTpCb29sZWFuUmFkaW8+DQorCQk8cHBlOkJvb2xlYW5SYWRpbyBpbnB1dD0ie0JpbmRpbmd9IiBwcm9wZXJ0eT0iVU1MOkZlYXR1cmU6aXNTdGF0aWMiPjwvcHBlOkJvb2xlYW5SYWRpbz4NCisJCTxwcGU6Qm9vbGVhblJhZGlvIGlucHV0PSJ7QmluZGluZ30iDQorCQkJcHJvcGVydHk9IlVNTDpNdWx0aXBsaWNpdHlFbGVtZW50OmlzVW5pcXVlIj48L3BwZTpCb29sZWFuUmFkaW8+DQorCTwvQ29tcG9zaXRlPg0KKwk8Q29tcG9zaXRlPg0KKwkJPENvbXBvc2l0ZS5sYXlvdXQ+DQorCQkJPHBwZWw6UHJvcGVydGllc0xheW91dCBudW1Db2x1bW5zPSIyIj48L3BwZWw6UHJvcGVydGllc0xheW91dD4NCisJCTwvQ29tcG9zaXRlLmxheW91dD4NCisJCTxwcGU6RW51bUNvbWJvIGlucHV0PSJ7QmluZGluZ30iIHByb3BlcnR5PSJVTUw6UHJvcGVydHk6YWdncmVnYXRpb24iPjwvcHBlOkVudW1Db21ibz4NCisJCTxwcGU6RW51bUNvbWJvIGlucHV0PSJ7QmluZGluZ30iIHByb3BlcnR5PSJVTUw6TmFtZWRFbGVtZW50OnZpc2liaWxpdHkiPjwvcHBlOkVudW1Db21ibz4NCisJPC9Db21wb3NpdGU+DQorPC9Db21wb3NpdGU+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdWkvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnVpL3Jlc291cmNlcy9wcm9wZXJ0aWVzL3VpL011bHRpcGxlRWxlbWVudEdyb3VwLnh3dCBiL3VpL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC51aS9yZXNvdXJjZXMvcHJvcGVydGllcy91aS9NdWx0aXBsZUVsZW1lbnRHcm91cC54d3QKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uOWJhNGNlOAotLS0gL2Rldi9udWxsCisrKyBiL3VpL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC51aS9yZXNvdXJjZXMvcHJvcGVydGllcy91aS9NdWx0aXBsZUVsZW1lbnRHcm91cC54d3QKQEAgLTAsMCArMSw4IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/Pg0KKzxDb21wb3NpdGUgeG1sbnM6aj0iY2xyLW5hbWVzcGFjZTpqYXZhLmxhbmciDQorCXhtbG5zOnBwZWw9ImNsci1uYW1lc3BhY2U6b3JnLmVjbGlwc2UucGFweXJ1cy52aWV3cy5wcm9wZXJ0aWVzLndpZGdldHMubGF5b3V0Ig0KKwl4bWxuczp4PSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3h3dCIgeG1sbnM9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcveHd0L3ByZXNlbnRhdGlvbiI+DQorCTxDb21wb3NpdGUubGF5b3V0Pg0KKwkJPHBwZWw6UHJvcGVydGllc0xheW91dD48L3BwZWw6UHJvcGVydGllc0xheW91dD4NCisJPC9Db21wb3NpdGUubGF5b3V0Pg0KKzwvQ29tcG9zaXRlPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3VpL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC51aS9yZXNvdXJjZXMvcHJvcGVydGllcy91aS9NdWx0aXBsZUVsZW1lbnRQcm9wZXJ0eVBhdGgueHd0IGIvdWkvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnVpL3Jlc291cmNlcy9wcm9wZXJ0aWVzL3VpL011bHRpcGxlRWxlbWVudFByb3BlcnR5UGF0aC54d3QKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uOWJhNGNlOAotLS0gL2Rldi9udWxsCisrKyBiL3VpL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC51aS9yZXNvdXJjZXMvcHJvcGVydGllcy91aS9NdWx0aXBsZUVsZW1lbnRQcm9wZXJ0eVBhdGgueHd0CkBAIC0wLDAgKzEsOCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4NCis8Q29tcG9zaXRlIHhtbG5zOmo9ImNsci1uYW1lc3BhY2U6amF2YS5sYW5nIg0KKwl4bWxuczpwcGVsPSJjbHItbmFtZXNwYWNlOm9yZy5lY2xpcHNlLnBhcHlydXMudmlld3MucHJvcGVydGllcy53aWRnZXRzLmxheW91dCINCisJeG1sbnM6eD0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy94d3QiIHhtbG5zPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3h3dC9wcmVzZW50YXRpb24iPg0KKwk8Q29tcG9zaXRlLmxheW91dD4NCisJCTxwcGVsOlByb3BlcnRpZXNMYXlvdXQ+PC9wcGVsOlByb3BlcnRpZXNMYXlvdXQ+DQorCTwvQ29tcG9zaXRlLmxheW91dD4NCis8L0NvbXBvc2l0ZT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS91aS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQudWkvcmVzb3VyY2VzL3Byb3BlcnRpZXMvdWkvTXVsdGlwbGVFbmRQYXRoTXVsdGlwbGljaXR5Lnh3dCBiL3VpL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC51aS9yZXNvdXJjZXMvcHJvcGVydGllcy91aS9NdWx0aXBsZUVuZFBhdGhNdWx0aXBsaWNpdHkueHd0Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjE5YzZlMzQKLS0tIC9kZXYvbnVsbAorKysgYi91aS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQudWkvcmVzb3VyY2VzL3Byb3BlcnRpZXMvdWkvTXVsdGlwbGVFbmRQYXRoTXVsdGlwbGljaXR5Lnh3dApAQCAtMCwwICsxLDE2IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/Pg0KKzxDb21wb3NpdGUgeG1sbnM6aj0iY2xyLW5hbWVzcGFjZTpqYXZhLmxhbmciDQorCXhtbG5zOnBwZWw9ImNsci1uYW1lc3BhY2U6b3JnLmVjbGlwc2UucGFweXJ1cy52aWV3cy5wcm9wZXJ0aWVzLndpZGdldHMubGF5b3V0Ig0KKwl4bWxuczp4PSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3h3dCIgeG1sbnM9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcveHd0L3ByZXNlbnRhdGlvbiINCisJeG1sbnM6cHBlPSJjbHItbmFtZXNwYWNlOm9yZy5lY2xpcHNlLnBhcHlydXMudmlld3MucHJvcGVydGllcy53aWRnZXRzIj4NCisJPENvbXBvc2l0ZS5sYXlvdXQ+DQorCQk8cHBlbDpQcm9wZXJ0aWVzTGF5b3V0PjwvcHBlbDpQcm9wZXJ0aWVzTGF5b3V0Pg0KKwk8L0NvbXBvc2l0ZS5sYXlvdXQ+DQorCTxDb21wb3NpdGU+DQorCQk8Q29tcG9zaXRlLmxheW91dD4NCisJCQk8cHBlbDpQcm9wZXJ0aWVzTGF5b3V0IG51bUNvbHVtbnM9IjIiPjwvcHBlbDpQcm9wZXJ0aWVzTGF5b3V0Pg0KKwkJPC9Db21wb3NpdGUubGF5b3V0Pg0KKwkJPHBwZTpJbnRlZ2VyRWRpdG9yIGlucHV0PSJ7QmluZGluZ30iDQorCQkJcHJvcGVydHk9IlN5c01MOkJsb2NrczpFbmRQYXRoTXVsdGlwbGljaXR5Omxvd2VyIj48L3BwZTpJbnRlZ2VyRWRpdG9yPg0KKwk8L0NvbXBvc2l0ZT4NCis8L0NvbXBvc2l0ZT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS91aS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQudWkvcmVzb3VyY2VzL3Byb3BlcnRpZXMvdWkvTXVsdGlwbGVFeHBvc2UueHd0IGIvdWkvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnVpL3Jlc291cmNlcy9wcm9wZXJ0aWVzL3VpL011bHRpcGxlRXhwb3NlLnh3dApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi45YmE0Y2U4Ci0tLSAvZGV2L251bGwKKysrIGIvdWkvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnVpL3Jlc291cmNlcy9wcm9wZXJ0aWVzL3VpL011bHRpcGxlRXhwb3NlLnh3dApAQCAtMCwwICsxLDggQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+DQorPENvbXBvc2l0ZSB4bWxuczpqPSJjbHItbmFtZXNwYWNlOmphdmEubGFuZyINCisJeG1sbnM6cHBlbD0iY2xyLW5hbWVzcGFjZTpvcmcuZWNsaXBzZS5wYXB5cnVzLnZpZXdzLnByb3BlcnRpZXMud2lkZ2V0cy5sYXlvdXQiDQorCXhtbG5zOng9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcveHd0IiB4bWxucz0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy94d3QvcHJlc2VudGF0aW9uIj4NCisJPENvbXBvc2l0ZS5sYXlvdXQ+DQorCQk8cHBlbDpQcm9wZXJ0aWVzTGF5b3V0PjwvcHBlbDpQcm9wZXJ0aWVzTGF5b3V0Pg0KKwk8L0NvbXBvc2l0ZS5sYXlvdXQ+DQorPC9Db21wb3NpdGU+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdWkvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnVpL3Jlc291cmNlcy9wcm9wZXJ0aWVzL3VpL011bHRpcGxlRmxvd1BvcnQueHd0IGIvdWkvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnVpL3Jlc291cmNlcy9wcm9wZXJ0aWVzL3VpL011bHRpcGxlRmxvd1BvcnQueHd0Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjg1YzVjZGQKLS0tIC9kZXYvbnVsbAorKysgYi91aS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQudWkvcmVzb3VyY2VzL3Byb3BlcnRpZXMvdWkvTXVsdGlwbGVGbG93UG9ydC54d3QKQEAgLTAsMCArMSwzNyBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4NCis8Q29tcG9zaXRlIHhtbG5zOmo9ImNsci1uYW1lc3BhY2U6amF2YS5sYW5nIg0KKwl4bWxuczpwcGVsPSJjbHItbmFtZXNwYWNlOm9yZy5lY2xpcHNlLnBhcHlydXMudmlld3MucHJvcGVydGllcy53aWRnZXRzLmxheW91dCINCisJeG1sbnM6eD0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy94d3QiIHhtbG5zPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3h3dC9wcmVzZW50YXRpb24iDQorCXhtbG5zOnBwZT0iY2xyLW5hbWVzcGFjZTpvcmcuZWNsaXBzZS5wYXB5cnVzLnZpZXdzLnByb3BlcnRpZXMud2lkZ2V0cyI+DQorCTxDb21wb3NpdGUubGF5b3V0Pg0KKwkJPHBwZWw6UHJvcGVydGllc0xheW91dD48L3BwZWw6UHJvcGVydGllc0xheW91dD4NCisJPC9Db21wb3NpdGUubGF5b3V0Pg0KKwk8Q29tcG9zaXRlPg0KKwkJPENvbXBvc2l0ZS5sYXlvdXQ+DQorCQkJPHBwZWw6UHJvcGVydGllc0xheW91dCBudW1Db2x1bW5zPSIyIj48L3BwZWw6UHJvcGVydGllc0xheW91dD4NCisJCTwvQ29tcG9zaXRlLmxheW91dD4NCisJCTxwcGU6Qm9vbGVhblJhZGlvIGlucHV0PSJ7QmluZGluZ30iIHByb3BlcnR5PSJVTUw6UG9ydDppc0JlaGF2aW9yIj48L3BwZTpCb29sZWFuUmFkaW8+DQorCQk8cHBlOkJvb2xlYW5SYWRpbyBpbnB1dD0ie0JpbmRpbmd9IiBwcm9wZXJ0eT0iVU1MOlByb3BlcnR5OmlzRGVyaXZlZCI+PC9wcGU6Qm9vbGVhblJhZGlvPg0KKwkJPHBwZTpCb29sZWFuUmFkaW8gaW5wdXQ9IntCaW5kaW5nfSIgcHJvcGVydHk9IlVNTDpQcm9wZXJ0eTppc0Rlcml2ZWRVbmlvbiI+PC9wcGU6Qm9vbGVhblJhZGlvPg0KKwkJPHBwZTpCb29sZWFuUmFkaW8gaW5wdXQ9IntCaW5kaW5nfSINCisJCQlwcm9wZXJ0eT0iVU1MOlJlZGVmaW5hYmxlRWxlbWVudDppc0xlYWYiPjwvcHBlOkJvb2xlYW5SYWRpbz4NCisJCTxwcGU6Qm9vbGVhblJhZGlvIGlucHV0PSJ7QmluZGluZ30iDQorCQkJcHJvcGVydHk9IlVNTDpNdWx0aXBsaWNpdHlFbGVtZW50OmlzT3JkZXJlZCI+PC9wcGU6Qm9vbGVhblJhZGlvPg0KKwkJPHBwZTpCb29sZWFuUmFkaW8gaW5wdXQ9IntCaW5kaW5nfSINCisJCQlwcm9wZXJ0eT0iVU1MOlN0cnVjdHVyYWxGZWF0dXJlOmlzUmVhZE9ubHkiPjwvcHBlOkJvb2xlYW5SYWRpbz4NCisJCTxwcGU6Qm9vbGVhblJhZGlvIGlucHV0PSJ7QmluZGluZ30iIHByb3BlcnR5PSJVTUw6UG9ydDppc1NlcnZpY2UiPjwvcHBlOkJvb2xlYW5SYWRpbz4NCisJCTxwcGU6Qm9vbGVhblJhZGlvIGlucHV0PSJ7QmluZGluZ30iIHByb3BlcnR5PSJVTUw6RmVhdHVyZTppc1N0YXRpYyI+PC9wcGU6Qm9vbGVhblJhZGlvPg0KKwkJPHBwZTpCb29sZWFuUmFkaW8gaW5wdXQ9IntCaW5kaW5nfSINCisJCQlwcm9wZXJ0eT0iVU1MOk11bHRpcGxpY2l0eUVsZW1lbnQ6aXNVbmlxdWUiPjwvcHBlOkJvb2xlYW5SYWRpbz4NCisJPC9Db21wb3NpdGU+DQorCTxDb21wb3NpdGU+DQorCQk8Q29tcG9zaXRlLmxheW91dD4NCisJCQk8cHBlbDpQcm9wZXJ0aWVzTGF5b3V0IG51bUNvbHVtbnM9IjIiPjwvcHBlbDpQcm9wZXJ0aWVzTGF5b3V0Pg0KKwkJPC9Db21wb3NpdGUubGF5b3V0Pg0KKwkJPHBwZTpFbnVtQ29tYm8gaW5wdXQ9IntCaW5kaW5nfSIgcHJvcGVydHk9IlVNTDpQcm9wZXJ0eTphZ2dyZWdhdGlvbiI+PC9wcGU6RW51bUNvbWJvPg0KKwkJPHBwZTpFbnVtQ29tYm8gaW5wdXQ9IntCaW5kaW5nfSINCisJCQlwcm9wZXJ0eT0iU3lzTUw6RGVwcmVjYXRlZEVsZW1lbnRzOkZsb3dQb3J0OmRpcmVjdGlvbiI+PC9wcGU6RW51bUNvbWJvPg0KKwkJPHBwZTpFbnVtQ29tYm8gaW5wdXQ9IntCaW5kaW5nfSIgcHJvcGVydHk9IlVNTDpOYW1lZEVsZW1lbnQ6dmlzaWJpbGl0eSI+PC9wcGU6RW51bUNvbWJvPg0KKwkJDQorCTwvQ29tcG9zaXRlPg0KKzwvQ29tcG9zaXRlPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3VpL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC51aS9yZXNvdXJjZXMvcHJvcGVydGllcy91aS9NdWx0aXBsZUZsb3dQcm9wZXJ0eS54d3QgYi91aS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQudWkvcmVzb3VyY2VzL3Byb3BlcnRpZXMvdWkvTXVsdGlwbGVGbG93UHJvcGVydHkueHd0Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmFmMGU1MmIKLS0tIC9kZXYvbnVsbAorKysgYi91aS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQudWkvcmVzb3VyY2VzL3Byb3BlcnRpZXMvdWkvTXVsdGlwbGVGbG93UHJvcGVydHkueHd0CkBAIC0wLDAgKzEsMzQgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+DQorPENvbXBvc2l0ZSB4bWxuczpqPSJjbHItbmFtZXNwYWNlOmphdmEubGFuZyINCisJeG1sbnM6cHBlbD0iY2xyLW5hbWVzcGFjZTpvcmcuZWNsaXBzZS5wYXB5cnVzLnZpZXdzLnByb3BlcnRpZXMud2lkZ2V0cy5sYXlvdXQiDQorCXhtbG5zOng9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcveHd0IiB4bWxucz0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy94d3QvcHJlc2VudGF0aW9uIg0KKwl4bWxuczpwcGU9ImNsci1uYW1lc3BhY2U6b3JnLmVjbGlwc2UucGFweXJ1cy52aWV3cy5wcm9wZXJ0aWVzLndpZGdldHMiPg0KKwk8Q29tcG9zaXRlLmxheW91dD4NCisJCTxwcGVsOlByb3BlcnRpZXNMYXlvdXQ+PC9wcGVsOlByb3BlcnRpZXNMYXlvdXQ+DQorCTwvQ29tcG9zaXRlLmxheW91dD4NCisJPENvbXBvc2l0ZT4NCisJCTxDb21wb3NpdGUubGF5b3V0Pg0KKwkJCTxwcGVsOlByb3BlcnRpZXNMYXlvdXQgbnVtQ29sdW1ucz0iMiI+PC9wcGVsOlByb3BlcnRpZXNMYXlvdXQ+DQorCQk8L0NvbXBvc2l0ZS5sYXlvdXQ+DQorCQk8cHBlOkJvb2xlYW5SYWRpbyBpbnB1dD0ie0JpbmRpbmd9IiBwcm9wZXJ0eT0iVU1MOlByb3BlcnR5OmlzRGVyaXZlZCI+PC9wcGU6Qm9vbGVhblJhZGlvPg0KKwkJPHBwZTpCb29sZWFuUmFkaW8gaW5wdXQ9IntCaW5kaW5nfSIgcHJvcGVydHk9IlVNTDpQcm9wZXJ0eTppc0Rlcml2ZWRVbmlvbiI+PC9wcGU6Qm9vbGVhblJhZGlvPg0KKwkJPHBwZTpCb29sZWFuUmFkaW8gaW5wdXQ9IntCaW5kaW5nfSINCisJCQlwcm9wZXJ0eT0iVU1MOlJlZGVmaW5hYmxlRWxlbWVudDppc0xlYWYiPjwvcHBlOkJvb2xlYW5SYWRpbz4NCisJCTxwcGU6Qm9vbGVhblJhZGlvIGlucHV0PSJ7QmluZGluZ30iDQorCQkJcHJvcGVydHk9IlVNTDpNdWx0aXBsaWNpdHlFbGVtZW50OmlzT3JkZXJlZCI+PC9wcGU6Qm9vbGVhblJhZGlvPg0KKwkJPHBwZTpCb29sZWFuUmFkaW8gaW5wdXQ9IntCaW5kaW5nfSINCisJCQlwcm9wZXJ0eT0iVU1MOlN0cnVjdHVyYWxGZWF0dXJlOmlzUmVhZE9ubHkiPjwvcHBlOkJvb2xlYW5SYWRpbz4NCisJCTxwcGU6Qm9vbGVhblJhZGlvIGlucHV0PSJ7QmluZGluZ30iIHByb3BlcnR5PSJVTUw6RmVhdHVyZTppc1N0YXRpYyI+PC9wcGU6Qm9vbGVhblJhZGlvPg0KKwkJPHBwZTpCb29sZWFuUmFkaW8gaW5wdXQ9IntCaW5kaW5nfSINCisJCQlwcm9wZXJ0eT0iVU1MOk11bHRpcGxpY2l0eUVsZW1lbnQ6aXNVbmlxdWUiPjwvcHBlOkJvb2xlYW5SYWRpbz4NCisJPC9Db21wb3NpdGU+DQorCTxDb21wb3NpdGU+DQorCQk8Q29tcG9zaXRlLmxheW91dD4NCisJCQk8cHBlbDpQcm9wZXJ0aWVzTGF5b3V0IG51bUNvbHVtbnM9IjIiPjwvcHBlbDpQcm9wZXJ0aWVzTGF5b3V0Pg0KKwkJPC9Db21wb3NpdGUubGF5b3V0Pg0KKwkJPHBwZTpFbnVtQ29tYm8gaW5wdXQ9IntCaW5kaW5nfSIgcHJvcGVydHk9IlVNTDpQcm9wZXJ0eTphZ2dyZWdhdGlvbiI+PC9wcGU6RW51bUNvbWJvPg0KKwkJPHBwZTpFbnVtQ29tYm8gaW5wdXQ9IntCaW5kaW5nfSINCisJCQlwcm9wZXJ0eT0iU3lzTUw6UG9ydHNhbmRGbG93czpGbG93UHJvcGVydHk6ZGlyZWN0aW9uIj48L3BwZTpFbnVtQ29tYm8+DQorCQk8cHBlOkVudW1Db21ibyBpbnB1dD0ie0JpbmRpbmd9IiBwcm9wZXJ0eT0iVU1MOk5hbWVkRWxlbWVudDp2aXNpYmlsaXR5Ij48L3BwZTpFbnVtQ29tYm8+DQorCTwvQ29tcG9zaXRlPg0KKzwvQ29tcG9zaXRlPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3VpL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC51aS9yZXNvdXJjZXMvcHJvcGVydGllcy91aS9NdWx0aXBsZUZsb3dTcGVjaWZpY2F0aW9uLnh3dCBiL3VpL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC51aS9yZXNvdXJjZXMvcHJvcGVydGllcy91aS9NdWx0aXBsZUZsb3dTcGVjaWZpY2F0aW9uLnh3dApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi42MzVhOWM5Ci0tLSAvZGV2L251bGwKKysrIGIvdWkvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnVpL3Jlc291cmNlcy9wcm9wZXJ0aWVzL3VpL011bHRpcGxlRmxvd1NwZWNpZmljYXRpb24ueHd0CkBAIC0wLDAgKzEsMjMgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+DQorPENvbXBvc2l0ZSB4bWxuczpqPSJjbHItbmFtZXNwYWNlOmphdmEubGFuZyINCisJeG1sbnM6cHBlbD0iY2xyLW5hbWVzcGFjZTpvcmcuZWNsaXBzZS5wYXB5cnVzLnZpZXdzLnByb3BlcnRpZXMud2lkZ2V0cy5sYXlvdXQiDQorCXhtbG5zOng9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcveHd0IiB4bWxucz0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy94d3QvcHJlc2VudGF0aW9uIg0KKwl4bWxuczpwcGU9ImNsci1uYW1lc3BhY2U6b3JnLmVjbGlwc2UucGFweXJ1cy52aWV3cy5wcm9wZXJ0aWVzLndpZGdldHMiPg0KKwk8Q29tcG9zaXRlLmxheW91dD4NCisJCTxwcGVsOlByb3BlcnRpZXNMYXlvdXQ+PC9wcGVsOlByb3BlcnRpZXNMYXlvdXQ+DQorCTwvQ29tcG9zaXRlLmxheW91dD4NCisJPENvbXBvc2l0ZT4NCisJCTxDb21wb3NpdGUubGF5b3V0Pg0KKwkJCTxwcGVsOlByb3BlcnRpZXNMYXlvdXQgbnVtQ29sdW1ucz0iMiI+PC9wcGVsOlByb3BlcnRpZXNMYXlvdXQ+DQorCQk8L0NvbXBvc2l0ZS5sYXlvdXQ+DQorCQk8cHBlOkJvb2xlYW5SYWRpbyBpbnB1dD0ie0JpbmRpbmd9IiBwcm9wZXJ0eT0iVU1MOkNsYXNzaWZpZXI6aXNBYnN0cmFjdCI+PC9wcGU6Qm9vbGVhblJhZGlvPg0KKwkJPHBwZTpCb29sZWFuUmFkaW8gaW5wdXQ9IntCaW5kaW5nfSINCisJCQlwcm9wZXJ0eT0iVU1MOlJlZGVmaW5hYmxlRWxlbWVudDppc0xlYWYiPjwvcHBlOkJvb2xlYW5SYWRpbz4NCisJPC9Db21wb3NpdGU+DQorCTxDb21wb3NpdGU+DQorCQk8Q29tcG9zaXRlLmxheW91dD4NCisJCQk8cHBlbDpQcm9wZXJ0aWVzTGF5b3V0PjwvcHBlbDpQcm9wZXJ0aWVzTGF5b3V0Pg0KKwkJPC9Db21wb3NpdGUubGF5b3V0Pg0KKwkJPHBwZTpFbnVtQ29tYm8gaW5wdXQ9IntCaW5kaW5nfSIgcHJvcGVydHk9IlVNTDpOYW1lZEVsZW1lbnQ6dmlzaWJpbGl0eSI+PC9wcGU6RW51bUNvbWJvPg0KKwk8L0NvbXBvc2l0ZT4NCis8L0NvbXBvc2l0ZT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS91aS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQudWkvcmVzb3VyY2VzL3Byb3BlcnRpZXMvdWkvTXVsdGlwbGVGdWxsUG9ydC54d3QgYi91aS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQudWkvcmVzb3VyY2VzL3Byb3BlcnRpZXMvdWkvTXVsdGlwbGVGdWxsUG9ydC54d3QKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uOWJhNGNlOAotLS0gL2Rldi9udWxsCisrKyBiL3VpL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC51aS9yZXNvdXJjZXMvcHJvcGVydGllcy91aS9NdWx0aXBsZUZ1bGxQb3J0Lnh3dApAQCAtMCwwICsxLDggQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+DQorPENvbXBvc2l0ZSB4bWxuczpqPSJjbHItbmFtZXNwYWNlOmphdmEubGFuZyINCisJeG1sbnM6cHBlbD0iY2xyLW5hbWVzcGFjZTpvcmcuZWNsaXBzZS5wYXB5cnVzLnZpZXdzLnByb3BlcnRpZXMud2lkZ2V0cy5sYXlvdXQiDQorCXhtbG5zOng9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcveHd0IiB4bWxucz0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy94d3QvcHJlc2VudGF0aW9uIj4NCisJPENvbXBvc2l0ZS5sYXlvdXQ+DQorCQk8cHBlbDpQcm9wZXJ0aWVzTGF5b3V0PjwvcHBlbDpQcm9wZXJ0aWVzTGF5b3V0Pg0KKwk8L0NvbXBvc2l0ZS5sYXlvdXQ+DQorPC9Db21wb3NpdGU+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdWkvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnVpL3Jlc291cmNlcy9wcm9wZXJ0aWVzL3VpL011bHRpcGxlSW50ZXJmYWNlQmxvY2sueHd0IGIvdWkvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnVpL3Jlc291cmNlcy9wcm9wZXJ0aWVzL3VpL011bHRpcGxlSW50ZXJmYWNlQmxvY2sueHd0Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjliYTRjZTgKLS0tIC9kZXYvbnVsbAorKysgYi91aS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQudWkvcmVzb3VyY2VzL3Byb3BlcnRpZXMvdWkvTXVsdGlwbGVJbnRlcmZhY2VCbG9jay54d3QKQEAgLTAsMCArMSw4IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/Pg0KKzxDb21wb3NpdGUgeG1sbnM6aj0iY2xyLW5hbWVzcGFjZTpqYXZhLmxhbmciDQorCXhtbG5zOnBwZWw9ImNsci1uYW1lc3BhY2U6b3JnLmVjbGlwc2UucGFweXJ1cy52aWV3cy5wcm9wZXJ0aWVzLndpZGdldHMubGF5b3V0Ig0KKwl4bWxuczp4PSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3h3dCIgeG1sbnM9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcveHd0L3ByZXNlbnRhdGlvbiI+DQorCTxDb21wb3NpdGUubGF5b3V0Pg0KKwkJPHBwZWw6UHJvcGVydGllc0xheW91dD48L3BwZWw6UHJvcGVydGllc0xheW91dD4NCisJPC9Db21wb3NpdGUubGF5b3V0Pg0KKzwvQ29tcG9zaXRlPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3VpL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC51aS9yZXNvdXJjZXMvcHJvcGVydGllcy91aS9NdWx0aXBsZUludm9jYXRpb25Pbk5lc3RlZFBvcnRBY3Rpb24ueHd0IGIvdWkvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnVpL3Jlc291cmNlcy9wcm9wZXJ0aWVzL3VpL011bHRpcGxlSW52b2NhdGlvbk9uTmVzdGVkUG9ydEFjdGlvbi54d3QKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uOWJhNGNlOAotLS0gL2Rldi9udWxsCisrKyBiL3VpL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC51aS9yZXNvdXJjZXMvcHJvcGVydGllcy91aS9NdWx0aXBsZUludm9jYXRpb25Pbk5lc3RlZFBvcnRBY3Rpb24ueHd0CkBAIC0wLDAgKzEsOCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4NCis8Q29tcG9zaXRlIHhtbG5zOmo9ImNsci1uYW1lc3BhY2U6amF2YS5sYW5nIg0KKwl4bWxuczpwcGVsPSJjbHItbmFtZXNwYWNlOm9yZy5lY2xpcHNlLnBhcHlydXMudmlld3MucHJvcGVydGllcy53aWRnZXRzLmxheW91dCINCisJeG1sbnM6eD0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy94d3QiIHhtbG5zPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3h3dC9wcmVzZW50YXRpb24iPg0KKwk8Q29tcG9zaXRlLmxheW91dD4NCisJCTxwcGVsOlByb3BlcnRpZXNMYXlvdXQ+PC9wcGVsOlByb3BlcnRpZXNMYXlvdXQ+DQorCTwvQ29tcG9zaXRlLmxheW91dD4NCis8L0NvbXBvc2l0ZT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS91aS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQudWkvcmVzb3VyY2VzL3Byb3BlcnRpZXMvdWkvTXVsdGlwbGVJdGVtRmxvdy54d3QgYi91aS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQudWkvcmVzb3VyY2VzL3Byb3BlcnRpZXMvdWkvTXVsdGlwbGVJdGVtRmxvdy54d3QKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uMDA3NjhkZQotLS0gL2Rldi9udWxsCisrKyBiL3VpL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC51aS9yZXNvdXJjZXMvcHJvcGVydGllcy91aS9NdWx0aXBsZUl0ZW1GbG93Lnh3dApAQCAtMCwwICsxLDE1IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/Pg0KKzxDb21wb3NpdGUgeG1sbnM6aj0iY2xyLW5hbWVzcGFjZTpqYXZhLmxhbmciDQorCXhtbG5zOnBwZWw9ImNsci1uYW1lc3BhY2U6b3JnLmVjbGlwc2UucGFweXJ1cy52aWV3cy5wcm9wZXJ0aWVzLndpZGdldHMubGF5b3V0Ig0KKwl4bWxuczp4PSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3h3dCIgeG1sbnM9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcveHd0L3ByZXNlbnRhdGlvbiINCisJeG1sbnM6cHBlPSJjbHItbmFtZXNwYWNlOm9yZy5lY2xpcHNlLnBhcHlydXMudmlld3MucHJvcGVydGllcy53aWRnZXRzIj4NCisJPENvbXBvc2l0ZS5sYXlvdXQ+DQorCQk8cHBlbDpQcm9wZXJ0aWVzTGF5b3V0PjwvcHBlbDpQcm9wZXJ0aWVzTGF5b3V0Pg0KKwk8L0NvbXBvc2l0ZS5sYXlvdXQ+DQorCTxDb21wb3NpdGU+DQorCQk8Q29tcG9zaXRlLmxheW91dD4NCisJCQk8cHBlbDpQcm9wZXJ0aWVzTGF5b3V0PjwvcHBlbDpQcm9wZXJ0aWVzTGF5b3V0Pg0KKwkJPC9Db21wb3NpdGUubGF5b3V0Pg0KKwkJPHBwZTpFbnVtQ29tYm8gaW5wdXQ9IntCaW5kaW5nfSIgcHJvcGVydHk9IlVNTDpOYW1lZEVsZW1lbnQ6dmlzaWJpbGl0eSI+PC9wcGU6RW51bUNvbWJvPg0KKwk8L0NvbXBvc2l0ZT4NCis8L0NvbXBvc2l0ZT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS91aS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQudWkvcmVzb3VyY2VzL3Byb3BlcnRpZXMvdWkvTXVsdGlwbGVOZXN0ZWRDb25uZWN0b3JFbmQueHd0IGIvdWkvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnVpL3Jlc291cmNlcy9wcm9wZXJ0aWVzL3VpL011bHRpcGxlTmVzdGVkQ29ubmVjdG9yRW5kLnh3dApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi4wNzY1ZGI5Ci0tLSAvZGV2L251bGwKKysrIGIvdWkvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnVpL3Jlc291cmNlcy9wcm9wZXJ0aWVzL3VpL011bHRpcGxlTmVzdGVkQ29ubmVjdG9yRW5kLnh3dApAQCAtMCwwICsxLDE4IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/Pg0KKzxDb21wb3NpdGUgeG1sbnM6aj0iY2xyLW5hbWVzcGFjZTpqYXZhLmxhbmciDQorCXhtbG5zOnBwZWw9ImNsci1uYW1lc3BhY2U6b3JnLmVjbGlwc2UucGFweXJ1cy52aWV3cy5wcm9wZXJ0aWVzLndpZGdldHMubGF5b3V0Ig0KKwl4bWxuczp4PSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3h3dCIgeG1sbnM9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcveHd0L3ByZXNlbnRhdGlvbiINCisJeG1sbnM6cHBlPSJjbHItbmFtZXNwYWNlOm9yZy5lY2xpcHNlLnBhcHlydXMudmlld3MucHJvcGVydGllcy53aWRnZXRzIj4NCisJPENvbXBvc2l0ZS5sYXlvdXQ+DQorCQk8cHBlbDpQcm9wZXJ0aWVzTGF5b3V0PjwvcHBlbDpQcm9wZXJ0aWVzTGF5b3V0Pg0KKwk8L0NvbXBvc2l0ZS5sYXlvdXQ+DQorCTxDb21wb3NpdGU+DQorCQk8Q29tcG9zaXRlLmxheW91dD4NCisJCQk8cHBlbDpQcm9wZXJ0aWVzTGF5b3V0IG51bUNvbHVtbnM9IjIiPjwvcHBlbDpQcm9wZXJ0aWVzTGF5b3V0Pg0KKwkJPC9Db21wb3NpdGUubGF5b3V0Pg0KKwkJPHBwZTpCb29sZWFuUmFkaW8gaW5wdXQ9IntCaW5kaW5nfSINCisJCQlwcm9wZXJ0eT0iVU1MOk11bHRpcGxpY2l0eUVsZW1lbnQ6aXNPcmRlcmVkIj48L3BwZTpCb29sZWFuUmFkaW8+DQorCQk8cHBlOkJvb2xlYW5SYWRpbyBpbnB1dD0ie0JpbmRpbmd9Ig0KKwkJCXByb3BlcnR5PSJVTUw6TXVsdGlwbGljaXR5RWxlbWVudDppc1VuaXF1ZSI+PC9wcGU6Qm9vbGVhblJhZGlvPg0KKwk8L0NvbXBvc2l0ZT4NCis8L0NvbXBvc2l0ZT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS91aS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQudWkvcmVzb3VyY2VzL3Byb3BlcnRpZXMvdWkvTXVsdGlwbGVOb0J1ZmZlci54d3QgYi91aS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQudWkvcmVzb3VyY2VzL3Byb3BlcnRpZXMvdWkvTXVsdGlwbGVOb0J1ZmZlci54d3QKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uZjkyM2Y0MwotLS0gL2Rldi9udWxsCisrKyBiL3VpL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC51aS9yZXNvdXJjZXMvcHJvcGVydGllcy91aS9NdWx0aXBsZU5vQnVmZmVyLnh3dApAQCAtMCwwICsxLDI1IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/Pg0KKzxDb21wb3NpdGUgeG1sbnM6aj0iY2xyLW5hbWVzcGFjZTpqYXZhLmxhbmciDQorCXhtbG5zOnBwZWw9ImNsci1uYW1lc3BhY2U6b3JnLmVjbGlwc2UucGFweXJ1cy52aWV3cy5wcm9wZXJ0aWVzLndpZGdldHMubGF5b3V0Ig0KKwl4bWxuczp4PSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3h3dCIgeG1sbnM9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcveHd0L3ByZXNlbnRhdGlvbiINCisJeG1sbnM6cHBlPSJjbHItbmFtZXNwYWNlOm9yZy5lY2xpcHNlLnBhcHlydXMudmlld3MucHJvcGVydGllcy53aWRnZXRzIj4NCisJPENvbXBvc2l0ZS5sYXlvdXQ+DQorCQk8cHBlbDpQcm9wZXJ0aWVzTGF5b3V0PjwvcHBlbDpQcm9wZXJ0aWVzTGF5b3V0Pg0KKwk8L0NvbXBvc2l0ZS5sYXlvdXQ+DQorCTxDb21wb3NpdGU+DQorCQk8Q29tcG9zaXRlLmxheW91dD4NCisJCQk8cHBlbDpQcm9wZXJ0aWVzTGF5b3V0IG51bUNvbHVtbnM9IjIiPjwvcHBlbDpQcm9wZXJ0aWVzTGF5b3V0Pg0KKwkJPC9Db21wb3NpdGUubGF5b3V0Pg0KKwkJPHBwZTpCb29sZWFuUmFkaW8gaW5wdXQ9IntCaW5kaW5nfSINCisJCQlwcm9wZXJ0eT0iVU1MOk9iamVjdE5vZGU6aXNDb250cm9sVHlwZSI+PC9wcGU6Qm9vbGVhblJhZGlvPg0KKwkJPHBwZTpCb29sZWFuUmFkaW8gaW5wdXQ9IntCaW5kaW5nfSINCisJCQlwcm9wZXJ0eT0iVU1MOlJlZGVmaW5hYmxlRWxlbWVudDppc0xlYWYiPjwvcHBlOkJvb2xlYW5SYWRpbz4NCisJPC9Db21wb3NpdGU+DQorCTxDb21wb3NpdGU+DQorCQk8Q29tcG9zaXRlLmxheW91dD4NCisJCQk8cHBlbDpQcm9wZXJ0aWVzTGF5b3V0IG51bUNvbHVtbnM9IjIiPjwvcHBlbDpQcm9wZXJ0aWVzTGF5b3V0Pg0KKwkJPC9Db21wb3NpdGUubGF5b3V0Pg0KKwkJPHBwZTpFbnVtQ29tYm8gaW5wdXQ9IntCaW5kaW5nfSIgcHJvcGVydHk9IlVNTDpPYmplY3ROb2RlOm9yZGVyaW5nIj48L3BwZTpFbnVtQ29tYm8+DQorCQk8cHBlOkVudW1Db21ibyBpbnB1dD0ie0JpbmRpbmd9IiBwcm9wZXJ0eT0iVU1MOk5hbWVkRWxlbWVudDp2aXNpYmlsaXR5Ij48L3BwZTpFbnVtQ29tYm8+DQorCTwvQ29tcG9zaXRlPg0KKzwvQ29tcG9zaXRlPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3VpL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC51aS9yZXNvdXJjZXMvcHJvcGVydGllcy91aS9NdWx0aXBsZU9wdGlvbmFsLnh3dCBiL3VpL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC51aS9yZXNvdXJjZXMvcHJvcGVydGllcy91aS9NdWx0aXBsZU9wdGlvbmFsLnh3dApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi45ZWUyOWM0Ci0tLSAvZGV2L251bGwKKysrIGIvdWkvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnVpL3Jlc291cmNlcy9wcm9wZXJ0aWVzL3VpL011bHRpcGxlT3B0aW9uYWwueHd0CkBAIC0wLDAgKzEsMjggQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+DQorPENvbXBvc2l0ZSB4bWxuczpqPSJjbHItbmFtZXNwYWNlOmphdmEubGFuZyINCisJeG1sbnM6cHBlbD0iY2xyLW5hbWVzcGFjZTpvcmcuZWNsaXBzZS5wYXB5cnVzLnZpZXdzLnByb3BlcnRpZXMud2lkZ2V0cy5sYXlvdXQiDQorCXhtbG5zOng9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcveHd0IiB4bWxucz0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy94d3QvcHJlc2VudGF0aW9uIg0KKwl4bWxuczpwcGU9ImNsci1uYW1lc3BhY2U6b3JnLmVjbGlwc2UucGFweXJ1cy52aWV3cy5wcm9wZXJ0aWVzLndpZGdldHMiPg0KKwk8Q29tcG9zaXRlLmxheW91dD4NCisJCTxwcGVsOlByb3BlcnRpZXNMYXlvdXQ+PC9wcGVsOlByb3BlcnRpZXNMYXlvdXQ+DQorCTwvQ29tcG9zaXRlLmxheW91dD4NCisJPENvbXBvc2l0ZT4NCisJCTxDb21wb3NpdGUubGF5b3V0Pg0KKwkJCTxwcGVsOlByb3BlcnRpZXNMYXlvdXQgbnVtQ29sdW1ucz0iMiI+PC9wcGVsOlByb3BlcnRpZXNMYXlvdXQ+DQorCQk8L0NvbXBvc2l0ZS5sYXlvdXQ+DQorCQk8cHBlOkJvb2xlYW5SYWRpbyBpbnB1dD0ie0JpbmRpbmd9IiBwcm9wZXJ0eT0iVU1MOlBhcmFtZXRlcjppc0V4Y2VwdGlvbiI+PC9wcGU6Qm9vbGVhblJhZGlvPg0KKwkJPHBwZTpCb29sZWFuUmFkaW8gaW5wdXQ9IntCaW5kaW5nfSINCisJCQlwcm9wZXJ0eT0iVU1MOk11bHRpcGxpY2l0eUVsZW1lbnQ6aXNPcmRlcmVkIj48L3BwZTpCb29sZWFuUmFkaW8+DQorCQk8cHBlOkJvb2xlYW5SYWRpbyBpbnB1dD0ie0JpbmRpbmd9IiBwcm9wZXJ0eT0iVU1MOlBhcmFtZXRlcjppc1N0cmVhbSI+PC9wcGU6Qm9vbGVhblJhZGlvPg0KKwkJPHBwZTpCb29sZWFuUmFkaW8gaW5wdXQ9IntCaW5kaW5nfSINCisJCQlwcm9wZXJ0eT0iVU1MOk11bHRpcGxpY2l0eUVsZW1lbnQ6aXNVbmlxdWUiPjwvcHBlOkJvb2xlYW5SYWRpbz4NCisJPC9Db21wb3NpdGU+DQorCTxDb21wb3NpdGU+DQorCQk8Q29tcG9zaXRlLmxheW91dD4NCisJCQk8cHBlbDpQcm9wZXJ0aWVzTGF5b3V0IG51bUNvbHVtbnM9IjIiPjwvcHBlbDpQcm9wZXJ0aWVzTGF5b3V0Pg0KKwkJPC9Db21wb3NpdGUubGF5b3V0Pg0KKwkJPHBwZTpFbnVtQ29tYm8gaW5wdXQ9IntCaW5kaW5nfSIgcHJvcGVydHk9IlVNTDpQYXJhbWV0ZXI6ZGlyZWN0aW9uIj48L3BwZTpFbnVtQ29tYm8+DQorCQk8cHBlOkVudW1Db21ibyBpbnB1dD0ie0JpbmRpbmd9IiBwcm9wZXJ0eT0iVU1MOlBhcmFtZXRlcjplZmZlY3QiPjwvcHBlOkVudW1Db21ibz4NCisJCTxwcGU6RW51bUNvbWJvIGlucHV0PSJ7QmluZGluZ30iIHByb3BlcnR5PSJVTUw6TmFtZWRFbGVtZW50OnZpc2liaWxpdHkiPjwvcHBlOkVudW1Db21ibz4NCisJPC9Db21wb3NpdGU+DQorPC9Db21wb3NpdGU+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdWkvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnVpL3Jlc291cmNlcy9wcm9wZXJ0aWVzL3VpL011bHRpcGxlT3ZlcndyaXRlLnh3dCBiL3VpL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC51aS9yZXNvdXJjZXMvcHJvcGVydGllcy91aS9NdWx0aXBsZU92ZXJ3cml0ZS54d3QKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uZjkyM2Y0MwotLS0gL2Rldi9udWxsCisrKyBiL3VpL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC51aS9yZXNvdXJjZXMvcHJvcGVydGllcy91aS9NdWx0aXBsZU92ZXJ3cml0ZS54d3QKQEAgLTAsMCArMSwyNSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4NCis8Q29tcG9zaXRlIHhtbG5zOmo9ImNsci1uYW1lc3BhY2U6amF2YS5sYW5nIg0KKwl4bWxuczpwcGVsPSJjbHItbmFtZXNwYWNlOm9yZy5lY2xpcHNlLnBhcHlydXMudmlld3MucHJvcGVydGllcy53aWRnZXRzLmxheW91dCINCisJeG1sbnM6eD0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy94d3QiIHhtbG5zPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3h3dC9wcmVzZW50YXRpb24iDQorCXhtbG5zOnBwZT0iY2xyLW5hbWVzcGFjZTpvcmcuZWNsaXBzZS5wYXB5cnVzLnZpZXdzLnByb3BlcnRpZXMud2lkZ2V0cyI+DQorCTxDb21wb3NpdGUubGF5b3V0Pg0KKwkJPHBwZWw6UHJvcGVydGllc0xheW91dD48L3BwZWw6UHJvcGVydGllc0xheW91dD4NCisJPC9Db21wb3NpdGUubGF5b3V0Pg0KKwk8Q29tcG9zaXRlPg0KKwkJPENvbXBvc2l0ZS5sYXlvdXQ+DQorCQkJPHBwZWw6UHJvcGVydGllc0xheW91dCBudW1Db2x1bW5zPSIyIj48L3BwZWw6UHJvcGVydGllc0xheW91dD4NCisJCTwvQ29tcG9zaXRlLmxheW91dD4NCisJCTxwcGU6Qm9vbGVhblJhZGlvIGlucHV0PSJ7QmluZGluZ30iDQorCQkJcHJvcGVydHk9IlVNTDpPYmplY3ROb2RlOmlzQ29udHJvbFR5cGUiPjwvcHBlOkJvb2xlYW5SYWRpbz4NCisJCTxwcGU6Qm9vbGVhblJhZGlvIGlucHV0PSJ7QmluZGluZ30iDQorCQkJcHJvcGVydHk9IlVNTDpSZWRlZmluYWJsZUVsZW1lbnQ6aXNMZWFmIj48L3BwZTpCb29sZWFuUmFkaW8+DQorCTwvQ29tcG9zaXRlPg0KKwk8Q29tcG9zaXRlPg0KKwkJPENvbXBvc2l0ZS5sYXlvdXQ+DQorCQkJPHBwZWw6UHJvcGVydGllc0xheW91dCBudW1Db2x1bW5zPSIyIj48L3BwZWw6UHJvcGVydGllc0xheW91dD4NCisJCTwvQ29tcG9zaXRlLmxheW91dD4NCisJCTxwcGU6RW51bUNvbWJvIGlucHV0PSJ7QmluZGluZ30iIHByb3BlcnR5PSJVTUw6T2JqZWN0Tm9kZTpvcmRlcmluZyI+PC9wcGU6RW51bUNvbWJvPg0KKwkJPHBwZTpFbnVtQ29tYm8gaW5wdXQ9IntCaW5kaW5nfSIgcHJvcGVydHk9IlVNTDpOYW1lZEVsZW1lbnQ6dmlzaWJpbGl0eSI+PC9wcGU6RW51bUNvbWJvPg0KKwk8L0NvbXBvc2l0ZT4NCis8L0NvbXBvc2l0ZT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS91aS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQudWkvcmVzb3VyY2VzL3Byb3BlcnRpZXMvdWkvTXVsdGlwbGVQYXJ0aWNpcGFudFByb3BlcnR5Lnh3dCBiL3VpL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC51aS9yZXNvdXJjZXMvcHJvcGVydGllcy91aS9NdWx0aXBsZVBhcnRpY2lwYW50UHJvcGVydHkueHd0Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmJiZWQxMWIKLS0tIC9kZXYvbnVsbAorKysgYi91aS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQudWkvcmVzb3VyY2VzL3Byb3BlcnRpZXMvdWkvTXVsdGlwbGVQYXJ0aWNpcGFudFByb3BlcnR5Lnh3dApAQCAtMCwwICsxLDMyIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/Pg0KKzxDb21wb3NpdGUgeG1sbnM6aj0iY2xyLW5hbWVzcGFjZTpqYXZhLmxhbmciDQorCXhtbG5zOnBwZWw9ImNsci1uYW1lc3BhY2U6b3JnLmVjbGlwc2UucGFweXJ1cy52aWV3cy5wcm9wZXJ0aWVzLndpZGdldHMubGF5b3V0Ig0KKwl4bWxuczp4PSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3h3dCIgeG1sbnM9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcveHd0L3ByZXNlbnRhdGlvbiINCisJeG1sbnM6cHBlPSJjbHItbmFtZXNwYWNlOm9yZy5lY2xpcHNlLnBhcHlydXMudmlld3MucHJvcGVydGllcy53aWRnZXRzIj4NCisJPENvbXBvc2l0ZS5sYXlvdXQ+DQorCQk8cHBlbDpQcm9wZXJ0aWVzTGF5b3V0PjwvcHBlbDpQcm9wZXJ0aWVzTGF5b3V0Pg0KKwk8L0NvbXBvc2l0ZS5sYXlvdXQ+DQorCTxDb21wb3NpdGU+DQorCQk8Q29tcG9zaXRlLmxheW91dD4NCisJCQk8cHBlbDpQcm9wZXJ0aWVzTGF5b3V0IG51bUNvbHVtbnM9IjIiPjwvcHBlbDpQcm9wZXJ0aWVzTGF5b3V0Pg0KKwkJPC9Db21wb3NpdGUubGF5b3V0Pg0KKwkJPHBwZTpCb29sZWFuUmFkaW8gaW5wdXQ9IntCaW5kaW5nfSIgcHJvcGVydHk9IlVNTDpQcm9wZXJ0eTppc0Rlcml2ZWQiPjwvcHBlOkJvb2xlYW5SYWRpbz4NCisJCTxwcGU6Qm9vbGVhblJhZGlvIGlucHV0PSJ7QmluZGluZ30iIHByb3BlcnR5PSJVTUw6UHJvcGVydHk6aXNEZXJpdmVkVW5pb24iPjwvcHBlOkJvb2xlYW5SYWRpbz4NCisJCTxwcGU6Qm9vbGVhblJhZGlvIGlucHV0PSJ7QmluZGluZ30iDQorCQkJcHJvcGVydHk9IlVNTDpSZWRlZmluYWJsZUVsZW1lbnQ6aXNMZWFmIj48L3BwZTpCb29sZWFuUmFkaW8+DQorCQk8cHBlOkJvb2xlYW5SYWRpbyBpbnB1dD0ie0JpbmRpbmd9Ig0KKwkJCXByb3BlcnR5PSJVTUw6TXVsdGlwbGljaXR5RWxlbWVudDppc09yZGVyZWQiPjwvcHBlOkJvb2xlYW5SYWRpbz4NCisJCTxwcGU6Qm9vbGVhblJhZGlvIGlucHV0PSJ7QmluZGluZ30iDQorCQkJcHJvcGVydHk9IlVNTDpTdHJ1Y3R1cmFsRmVhdHVyZTppc1JlYWRPbmx5Ij48L3BwZTpCb29sZWFuUmFkaW8+DQorCQk8cHBlOkJvb2xlYW5SYWRpbyBpbnB1dD0ie0JpbmRpbmd9IiBwcm9wZXJ0eT0iVU1MOkZlYXR1cmU6aXNTdGF0aWMiPjwvcHBlOkJvb2xlYW5SYWRpbz4NCisJCTxwcGU6Qm9vbGVhblJhZGlvIGlucHV0PSJ7QmluZGluZ30iDQorCQkJcHJvcGVydHk9IlVNTDpNdWx0aXBsaWNpdHlFbGVtZW50OmlzVW5pcXVlIj48L3BwZTpCb29sZWFuUmFkaW8+DQorCTwvQ29tcG9zaXRlPg0KKwk8Q29tcG9zaXRlPg0KKwkJPENvbXBvc2l0ZS5sYXlvdXQ+DQorCQkJPHBwZWw6UHJvcGVydGllc0xheW91dCBudW1Db2x1bW5zPSIyIj48L3BwZWw6UHJvcGVydGllc0xheW91dD4NCisJCTwvQ29tcG9zaXRlLmxheW91dD4NCisJCTxwcGU6RW51bUNvbWJvIGlucHV0PSJ7QmluZGluZ30iIHByb3BlcnR5PSJVTUw6UHJvcGVydHk6YWdncmVnYXRpb24iPjwvcHBlOkVudW1Db21ibz4NCisJCTxwcGU6RW51bUNvbWJvIGlucHV0PSJ7QmluZGluZ30iIHByb3BlcnR5PSJVTUw6TmFtZWRFbGVtZW50OnZpc2liaWxpdHkiPjwvcHBlOkVudW1Db21ibz4NCisJPC9Db21wb3NpdGU+DQorPC9Db21wb3NpdGU+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdWkvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnVpL3Jlc291cmNlcy9wcm9wZXJ0aWVzL3VpL011bHRpcGxlUHJvYmFiaWxpdHkueHd0IGIvdWkvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnVpL3Jlc291cmNlcy9wcm9wZXJ0aWVzL3VpL011bHRpcGxlUHJvYmFiaWxpdHkueHd0Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjI5MDI3MWIKLS0tIC9kZXYvbnVsbAorKysgYi91aS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQudWkvcmVzb3VyY2VzL3Byb3BlcnRpZXMvdWkvTXVsdGlwbGVQcm9iYWJpbGl0eS54d3QKQEAgLTAsMCArMSwyMiBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4NCis8Q29tcG9zaXRlIHhtbG5zOmo9ImNsci1uYW1lc3BhY2U6amF2YS5sYW5nIg0KKwl4bWxuczpwcGVsPSJjbHItbmFtZXNwYWNlOm9yZy5lY2xpcHNlLnBhcHlydXMudmlld3MucHJvcGVydGllcy53aWRnZXRzLmxheW91dCINCisJeG1sbnM6eD0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy94d3QiIHhtbG5zPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3h3dC9wcmVzZW50YXRpb24iDQorCXhtbG5zOnBwZT0iY2xyLW5hbWVzcGFjZTpvcmcuZWNsaXBzZS5wYXB5cnVzLnZpZXdzLnByb3BlcnRpZXMud2lkZ2V0cyI+DQorCTxDb21wb3NpdGUubGF5b3V0Pg0KKwkJPHBwZWw6UHJvcGVydGllc0xheW91dD48L3BwZWw6UHJvcGVydGllc0xheW91dD4NCisJPC9Db21wb3NpdGUubGF5b3V0Pg0KKwk8Q29tcG9zaXRlPg0KKwkJPENvbXBvc2l0ZS5sYXlvdXQ+DQorCQkJPHBwZWw6UHJvcGVydGllc0xheW91dD48L3BwZWw6UHJvcGVydGllc0xheW91dD4NCisJCTwvQ29tcG9zaXRlLmxheW91dD4NCisJCTxwcGU6Qm9vbGVhblJhZGlvIGlucHV0PSJ7QmluZGluZ30iDQorCQkJcHJvcGVydHk9IlVNTDpSZWRlZmluYWJsZUVsZW1lbnQ6aXNMZWFmIj48L3BwZTpCb29sZWFuUmFkaW8+DQorCTwvQ29tcG9zaXRlPg0KKwk8Q29tcG9zaXRlPg0KKwkJPENvbXBvc2l0ZS5sYXlvdXQ+DQorCQkJPHBwZWw6UHJvcGVydGllc0xheW91dD48L3BwZWw6UHJvcGVydGllc0xheW91dD4NCisJCTwvQ29tcG9zaXRlLmxheW91dD4NCisJCTxwcGU6RW51bUNvbWJvIGlucHV0PSJ7QmluZGluZ30iIHByb3BlcnR5PSJVTUw6TmFtZWRFbGVtZW50OnZpc2liaWxpdHkiPjwvcHBlOkVudW1Db21ibz4NCisJPC9Db21wb3NpdGU+DQorPC9Db21wb3NpdGU+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdWkvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnVpL3Jlc291cmNlcy9wcm9wZXJ0aWVzL3VpL011bHRpcGxlUHJvYmxlbS54d3QgYi91aS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQudWkvcmVzb3VyY2VzL3Byb3BlcnRpZXMvdWkvTXVsdGlwbGVQcm9ibGVtLnh3dApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi45YmE0Y2U4Ci0tLSAvZGV2L251bGwKKysrIGIvdWkvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnVpL3Jlc291cmNlcy9wcm9wZXJ0aWVzL3VpL011bHRpcGxlUHJvYmxlbS54d3QKQEAgLTAsMCArMSw4IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/Pg0KKzxDb21wb3NpdGUgeG1sbnM6aj0iY2xyLW5hbWVzcGFjZTpqYXZhLmxhbmciDQorCXhtbG5zOnBwZWw9ImNsci1uYW1lc3BhY2U6b3JnLmVjbGlwc2UucGFweXJ1cy52aWV3cy5wcm9wZXJ0aWVzLndpZGdldHMubGF5b3V0Ig0KKwl4bWxuczp4PSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3h3dCIgeG1sbnM9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcveHd0L3ByZXNlbnRhdGlvbiI+DQorCTxDb21wb3NpdGUubGF5b3V0Pg0KKwkJPHBwZWw6UHJvcGVydGllc0xheW91dD48L3BwZWw6UHJvcGVydGllc0xheW91dD4NCisJPC9Db21wb3NpdGUubGF5b3V0Pg0KKzwvQ29tcG9zaXRlPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3VpL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC51aS9yZXNvdXJjZXMvcHJvcGVydGllcy91aS9NdWx0aXBsZVByb3BlcnR5U3BlY2lmaWNUeXBlLnh3dCBiL3VpL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC51aS9yZXNvdXJjZXMvcHJvcGVydGllcy91aS9NdWx0aXBsZVByb3BlcnR5U3BlY2lmaWNUeXBlLnh3dApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi42MzVhOWM5Ci0tLSAvZGV2L251bGwKKysrIGIvdWkvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnVpL3Jlc291cmNlcy9wcm9wZXJ0aWVzL3VpL011bHRpcGxlUHJvcGVydHlTcGVjaWZpY1R5cGUueHd0CkBAIC0wLDAgKzEsMjMgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+DQorPENvbXBvc2l0ZSB4bWxuczpqPSJjbHItbmFtZXNwYWNlOmphdmEubGFuZyINCisJeG1sbnM6cHBlbD0iY2xyLW5hbWVzcGFjZTpvcmcuZWNsaXBzZS5wYXB5cnVzLnZpZXdzLnByb3BlcnRpZXMud2lkZ2V0cy5sYXlvdXQiDQorCXhtbG5zOng9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcveHd0IiB4bWxucz0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy94d3QvcHJlc2VudGF0aW9uIg0KKwl4bWxuczpwcGU9ImNsci1uYW1lc3BhY2U6b3JnLmVjbGlwc2UucGFweXJ1cy52aWV3cy5wcm9wZXJ0aWVzLndpZGdldHMiPg0KKwk8Q29tcG9zaXRlLmxheW91dD4NCisJCTxwcGVsOlByb3BlcnRpZXNMYXlvdXQ+PC9wcGVsOlByb3BlcnRpZXNMYXlvdXQ+DQorCTwvQ29tcG9zaXRlLmxheW91dD4NCisJPENvbXBvc2l0ZT4NCisJCTxDb21wb3NpdGUubGF5b3V0Pg0KKwkJCTxwcGVsOlByb3BlcnRpZXNMYXlvdXQgbnVtQ29sdW1ucz0iMiI+PC9wcGVsOlByb3BlcnRpZXNMYXlvdXQ+DQorCQk8L0NvbXBvc2l0ZS5sYXlvdXQ+DQorCQk8cHBlOkJvb2xlYW5SYWRpbyBpbnB1dD0ie0JpbmRpbmd9IiBwcm9wZXJ0eT0iVU1MOkNsYXNzaWZpZXI6aXNBYnN0cmFjdCI+PC9wcGU6Qm9vbGVhblJhZGlvPg0KKwkJPHBwZTpCb29sZWFuUmFkaW8gaW5wdXQ9IntCaW5kaW5nfSINCisJCQlwcm9wZXJ0eT0iVU1MOlJlZGVmaW5hYmxlRWxlbWVudDppc0xlYWYiPjwvcHBlOkJvb2xlYW5SYWRpbz4NCisJPC9Db21wb3NpdGU+DQorCTxDb21wb3NpdGU+DQorCQk8Q29tcG9zaXRlLmxheW91dD4NCisJCQk8cHBlbDpQcm9wZXJ0aWVzTGF5b3V0PjwvcHBlbDpQcm9wZXJ0aWVzTGF5b3V0Pg0KKwkJPC9Db21wb3NpdGUubGF5b3V0Pg0KKwkJPHBwZTpFbnVtQ29tYm8gaW5wdXQ9IntCaW5kaW5nfSIgcHJvcGVydHk9IlVNTDpOYW1lZEVsZW1lbnQ6dmlzaWJpbGl0eSI+PC9wcGU6RW51bUNvbWJvPg0KKwk8L0NvbXBvc2l0ZT4NCis8L0NvbXBvc2l0ZT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS91aS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQudWkvcmVzb3VyY2VzL3Byb3BlcnRpZXMvdWkvTXVsdGlwbGVQcm94eVBvcnQueHd0IGIvdWkvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnVpL3Jlc291cmNlcy9wcm9wZXJ0aWVzL3VpL011bHRpcGxlUHJveHlQb3J0Lnh3dApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi45YmE0Y2U4Ci0tLSAvZGV2L251bGwKKysrIGIvdWkvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnVpL3Jlc291cmNlcy9wcm9wZXJ0aWVzL3VpL011bHRpcGxlUHJveHlQb3J0Lnh3dApAQCAtMCwwICsxLDggQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+DQorPENvbXBvc2l0ZSB4bWxuczpqPSJjbHItbmFtZXNwYWNlOmphdmEubGFuZyINCisJeG1sbnM6cHBlbD0iY2xyLW5hbWVzcGFjZTpvcmcuZWNsaXBzZS5wYXB5cnVzLnZpZXdzLnByb3BlcnRpZXMud2lkZ2V0cy5sYXlvdXQiDQorCXhtbG5zOng9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcveHd0IiB4bWxucz0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy94d3QvcHJlc2VudGF0aW9uIj4NCisJPENvbXBvc2l0ZS5sYXlvdXQ+DQorCQk8cHBlbDpQcm9wZXJ0aWVzTGF5b3V0PjwvcHBlbDpQcm9wZXJ0aWVzTGF5b3V0Pg0KKwk8L0NvbXBvc2l0ZS5sYXlvdXQ+DQorPC9Db21wb3NpdGU+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdWkvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnVpL3Jlc291cmNlcy9wcm9wZXJ0aWVzL3VpL011bHRpcGxlUmF0ZS54d3QgYi91aS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQudWkvcmVzb3VyY2VzL3Byb3BlcnRpZXMvdWkvTXVsdGlwbGVSYXRlLnh3dApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5jNmNkZDhkCi0tLSAvZGV2L251bGwKKysrIGIvdWkvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnVpL3Jlc291cmNlcy9wcm9wZXJ0aWVzL3VpL011bHRpcGxlUmF0ZS54d3QKQEAgLTAsMCArMSwzMCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4NCis8Q29tcG9zaXRlIHhtbG5zOmo9ImNsci1uYW1lc3BhY2U6amF2YS5sYW5nIg0KKwl4bWxuczpwcGVsPSJjbHItbmFtZXNwYWNlOm9yZy5lY2xpcHNlLnBhcHlydXMudmlld3MucHJvcGVydGllcy53aWRnZXRzLmxheW91dCINCisJeG1sbnM6eD0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy94d3QiIHhtbG5zPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3h3dC9wcmVzZW50YXRpb24iDQorCXhtbG5zOnBwZT0iY2xyLW5hbWVzcGFjZTpvcmcuZWNsaXBzZS5wYXB5cnVzLnZpZXdzLnByb3BlcnRpZXMud2lkZ2V0cyI+DQorCTxDb21wb3NpdGUubGF5b3V0Pg0KKwkJPHBwZWw6UHJvcGVydGllc0xheW91dD48L3BwZWw6UHJvcGVydGllc0xheW91dD4NCisJPC9Db21wb3NpdGUubGF5b3V0Pg0KKwk8Q29tcG9zaXRlPg0KKwkJPENvbXBvc2l0ZS5sYXlvdXQ+DQorCQkJPHBwZWw6UHJvcGVydGllc0xheW91dCBudW1Db2x1bW5zPSIyIj48L3BwZWw6UHJvcGVydGllc0xheW91dD4NCisJCTwvQ29tcG9zaXRlLmxheW91dD4NCisJCTxwcGU6Qm9vbGVhblJhZGlvIGlucHV0PSJ7QmluZGluZ30iIHByb3BlcnR5PSJVTUw6UGFyYW1ldGVyOmlzRXhjZXB0aW9uIj48L3BwZTpCb29sZWFuUmFkaW8+DQorCQk8cHBlOkJvb2xlYW5SYWRpbyBpbnB1dD0ie0JpbmRpbmd9Ig0KKwkJCXByb3BlcnR5PSJVTUw6UmVkZWZpbmFibGVFbGVtZW50OmlzTGVhZiI+PC9wcGU6Qm9vbGVhblJhZGlvPg0KKwkJPHBwZTpCb29sZWFuUmFkaW8gaW5wdXQ9IntCaW5kaW5nfSINCisJCQlwcm9wZXJ0eT0iVU1MOk11bHRpcGxpY2l0eUVsZW1lbnQ6aXNPcmRlcmVkIj48L3BwZTpCb29sZWFuUmFkaW8+DQorCQk8cHBlOkJvb2xlYW5SYWRpbyBpbnB1dD0ie0JpbmRpbmd9IiBwcm9wZXJ0eT0iVU1MOlBhcmFtZXRlcjppc1N0cmVhbSI+PC9wcGU6Qm9vbGVhblJhZGlvPg0KKwkJPHBwZTpCb29sZWFuUmFkaW8gaW5wdXQ9IntCaW5kaW5nfSINCisJCQlwcm9wZXJ0eT0iVU1MOk11bHRpcGxpY2l0eUVsZW1lbnQ6aXNVbmlxdWUiPjwvcHBlOkJvb2xlYW5SYWRpbz4NCisJPC9Db21wb3NpdGU+DQorCTxDb21wb3NpdGU+DQorCQk8Q29tcG9zaXRlLmxheW91dD4NCisJCQk8cHBlbDpQcm9wZXJ0aWVzTGF5b3V0IG51bUNvbHVtbnM9IjIiPjwvcHBlbDpQcm9wZXJ0aWVzTGF5b3V0Pg0KKwkJPC9Db21wb3NpdGUubGF5b3V0Pg0KKwkJPHBwZTpFbnVtQ29tYm8gaW5wdXQ9IntCaW5kaW5nfSIgcHJvcGVydHk9IlVNTDpQYXJhbWV0ZXI6ZGlyZWN0aW9uIj48L3BwZTpFbnVtQ29tYm8+DQorCQk8cHBlOkVudW1Db21ibyBpbnB1dD0ie0JpbmRpbmd9IiBwcm9wZXJ0eT0iVU1MOlBhcmFtZXRlcjplZmZlY3QiPjwvcHBlOkVudW1Db21ibz4NCisJCTxwcGU6RW51bUNvbWJvIGlucHV0PSJ7QmluZGluZ30iIHByb3BlcnR5PSJVTUw6TmFtZWRFbGVtZW50OnZpc2liaWxpdHkiPjwvcHBlOkVudW1Db21ibz4NCisJPC9Db21wb3NpdGU+DQorPC9Db21wb3NpdGU+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdWkvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnVpL3Jlc291cmNlcy9wcm9wZXJ0aWVzL3VpL011bHRpcGxlUmF0aW9uYWxlLnh3dCBiL3VpL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC51aS9yZXNvdXJjZXMvcHJvcGVydGllcy91aS9NdWx0aXBsZVJhdGlvbmFsZS54d3QKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uOWJhNGNlOAotLS0gL2Rldi9udWxsCisrKyBiL3VpL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC51aS9yZXNvdXJjZXMvcHJvcGVydGllcy91aS9NdWx0aXBsZVJhdGlvbmFsZS54d3QKQEAgLTAsMCArMSw4IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/Pg0KKzxDb21wb3NpdGUgeG1sbnM6aj0iY2xyLW5hbWVzcGFjZTpqYXZhLmxhbmciDQorCXhtbG5zOnBwZWw9ImNsci1uYW1lc3BhY2U6b3JnLmVjbGlwc2UucGFweXJ1cy52aWV3cy5wcm9wZXJ0aWVzLndpZGdldHMubGF5b3V0Ig0KKwl4bWxuczp4PSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3h3dCIgeG1sbnM9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcveHd0L3ByZXNlbnRhdGlvbiI+DQorCTxDb21wb3NpdGUubGF5b3V0Pg0KKwkJPHBwZWw6UHJvcGVydGllc0xheW91dD48L3BwZWw6UHJvcGVydGllc0xheW91dD4NCisJPC9Db21wb3NpdGUubGF5b3V0Pg0KKzwvQ29tcG9zaXRlPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3VpL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC51aS9yZXNvdXJjZXMvcHJvcGVydGllcy91aS9NdWx0aXBsZVJlZmluZS54d3QgYi91aS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQudWkvcmVzb3VyY2VzL3Byb3BlcnRpZXMvdWkvTXVsdGlwbGVSZWZpbmUueHd0Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjliYTRjZTgKLS0tIC9kZXYvbnVsbAorKysgYi91aS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQudWkvcmVzb3VyY2VzL3Byb3BlcnRpZXMvdWkvTXVsdGlwbGVSZWZpbmUueHd0CkBAIC0wLDAgKzEsOCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4NCis8Q29tcG9zaXRlIHhtbG5zOmo9ImNsci1uYW1lc3BhY2U6amF2YS5sYW5nIg0KKwl4bWxuczpwcGVsPSJjbHItbmFtZXNwYWNlOm9yZy5lY2xpcHNlLnBhcHlydXMudmlld3MucHJvcGVydGllcy53aWRnZXRzLmxheW91dCINCisJeG1sbnM6eD0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy94d3QiIHhtbG5zPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3h3dC9wcmVzZW50YXRpb24iPg0KKwk8Q29tcG9zaXRlLmxheW91dD4NCisJCTxwcGVsOlByb3BlcnRpZXNMYXlvdXQ+PC9wcGVsOlByb3BlcnRpZXNMYXlvdXQ+DQorCTwvQ29tcG9zaXRlLmxheW91dD4NCis8L0NvbXBvc2l0ZT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS91aS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQudWkvcmVzb3VyY2VzL3Byb3BlcnRpZXMvdWkvTXVsdGlwbGVSZXF1aXJlbWVudC54d3QgYi91aS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQudWkvcmVzb3VyY2VzL3Byb3BlcnRpZXMvdWkvTXVsdGlwbGVSZXF1aXJlbWVudC54d3QKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uNWQ5ZmM1NwotLS0gL2Rldi9udWxsCisrKyBiL3VpL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC51aS9yZXNvdXJjZXMvcHJvcGVydGllcy91aS9NdWx0aXBsZVJlcXVpcmVtZW50Lnh3dApAQCAtMCwwICsxLDE3IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/Pg0KKzxDb21wb3NpdGUgeG1sbnM6aj0iY2xyLW5hbWVzcGFjZTpqYXZhLmxhbmciDQorCXhtbG5zOnBwZWw9ImNsci1uYW1lc3BhY2U6b3JnLmVjbGlwc2UucGFweXJ1cy52aWV3cy5wcm9wZXJ0aWVzLndpZGdldHMubGF5b3V0Ig0KKwl4bWxuczp4PSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3h3dCIgeG1sbnM9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcveHd0L3ByZXNlbnRhdGlvbiINCisJeG1sbnM6cHBlPSJjbHItbmFtZXNwYWNlOm9yZy5lY2xpcHNlLnBhcHlydXMudmlld3MucHJvcGVydGllcy53aWRnZXRzIj4NCisJPENvbXBvc2l0ZS5sYXlvdXQ+DQorCQk8cHBlbDpQcm9wZXJ0aWVzTGF5b3V0PjwvcHBlbDpQcm9wZXJ0aWVzTGF5b3V0Pg0KKwk8L0NvbXBvc2l0ZS5sYXlvdXQ+DQorCTxDb21wb3NpdGU+DQorCQk8Q29tcG9zaXRlLmxheW91dD4NCisJCQk8cHBlbDpQcm9wZXJ0aWVzTGF5b3V0IG51bUNvbHVtbnM9IjIiPjwvcHBlbDpQcm9wZXJ0aWVzTGF5b3V0Pg0KKwkJPC9Db21wb3NpdGUubGF5b3V0Pg0KKwkJPHBwZTpCb29sZWFuUmFkaW8gaW5wdXQ9IntCaW5kaW5nfSIgcHJvcGVydHk9IlVNTDpDbGFzc2lmaWVyOmlzQWJzdHJhY3QiPjwvcHBlOkJvb2xlYW5SYWRpbz4NCisJCTxwcGU6Qm9vbGVhblJhZGlvIGlucHV0PSJ7QmluZGluZ30iDQorCQkJcHJvcGVydHk9IlVNTDpSZWRlZmluYWJsZUVsZW1lbnQ6aXNMZWFmIj48L3BwZTpCb29sZWFuUmFkaW8+DQorCTwvQ29tcG9zaXRlPg0KKzwvQ29tcG9zaXRlPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3VpL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC51aS9yZXNvdXJjZXMvcHJvcGVydGllcy91aS9NdWx0aXBsZVJlcXVpcmVtZW50UmVsYXRlZC54d3QgYi91aS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQudWkvcmVzb3VyY2VzL3Byb3BlcnRpZXMvdWkvTXVsdGlwbGVSZXF1aXJlbWVudFJlbGF0ZWQueHd0Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjg1NTY5ZTcKLS0tIC9kZXYvbnVsbAorKysgYi91aS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQudWkvcmVzb3VyY2VzL3Byb3BlcnRpZXMvdWkvTXVsdGlwbGVSZXF1aXJlbWVudFJlbGF0ZWQueHd0CkBAIC0wLDAgKzEsMTUgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+DQorPENvbXBvc2l0ZQ0KKwl4bWxuczpwcGVsPSJjbHItbmFtZXNwYWNlOm9yZy5lY2xpcHNlLnBhcHlydXMudmlld3MucHJvcGVydGllcy53aWRnZXRzLmxheW91dCINCisJeG1sbnM6aj0iY2xyLW5hbWVzcGFjZTpqYXZhLmxhbmciIHhtbG5zPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3h3dC9wcmVzZW50YXRpb24iDQorCXhtbG5zOng9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcveHd0IiB4bWxuczpwcGU9ImNsci1uYW1lc3BhY2U6b3JnLmVjbGlwc2UucGFweXJ1cy52aWV3cy5wcm9wZXJ0aWVzLndpZGdldHMiPg0KKwk8Q29tcG9zaXRlLmxheW91dD4NCisJCTxwcGVsOlByb3BlcnRpZXNMYXlvdXQ+PC9wcGVsOlByb3BlcnRpZXNMYXlvdXQ+DQorCTwvQ29tcG9zaXRlLmxheW91dD4NCisJPENvbXBvc2l0ZT4NCisJCTxDb21wb3NpdGUubGF5b3V0Pg0KKwkJCTxwcGVsOlByb3BlcnRpZXNMYXlvdXQ+PC9wcGVsOlByb3BlcnRpZXNMYXlvdXQ+DQorCQk8L0NvbXBvc2l0ZS5sYXlvdXQ+DQorCQk8cHBlOkVudW1Db21ibyBpbnB1dD0ie0JpbmRpbmd9IiBwcm9wZXJ0eT0iVU1MOk5hbWVkRWxlbWVudDp2aXNpYmlsaXR5Ij48L3BwZTpFbnVtQ29tYm8+DQorCTwvQ29tcG9zaXRlPg0KKzwvQ29tcG9zaXRlPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3VpL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC51aS9yZXNvdXJjZXMvcHJvcGVydGllcy91aS9NdWx0aXBsZVNhdGlzZnkueHd0IGIvdWkvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnVpL3Jlc291cmNlcy9wcm9wZXJ0aWVzL3VpL011bHRpcGxlU2F0aXNmeS54d3QKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uOWJhNGNlOAotLS0gL2Rldi9udWxsCisrKyBiL3VpL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC51aS9yZXNvdXJjZXMvcHJvcGVydGllcy91aS9NdWx0aXBsZVNhdGlzZnkueHd0CkBAIC0wLDAgKzEsOCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4NCis8Q29tcG9zaXRlIHhtbG5zOmo9ImNsci1uYW1lc3BhY2U6amF2YS5sYW5nIg0KKwl4bWxuczpwcGVsPSJjbHItbmFtZXNwYWNlOm9yZy5lY2xpcHNlLnBhcHlydXMudmlld3MucHJvcGVydGllcy53aWRnZXRzLmxheW91dCINCisJeG1sbnM6eD0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy94d3QiIHhtbG5zPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3h3dC9wcmVzZW50YXRpb24iPg0KKwk8Q29tcG9zaXRlLmxheW91dD4NCisJCTxwcGVsOlByb3BlcnRpZXNMYXlvdXQ+PC9wcGVsOlByb3BlcnRpZXNMYXlvdXQ+DQorCTwvQ29tcG9zaXRlLmxheW91dD4NCis8L0NvbXBvc2l0ZT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS91aS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQudWkvcmVzb3VyY2VzL3Byb3BlcnRpZXMvdWkvTXVsdGlwbGVTdGFrZWhvbGRlci54d3QgYi91aS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQudWkvcmVzb3VyY2VzL3Byb3BlcnRpZXMvdWkvTXVsdGlwbGVTdGFrZWhvbGRlci54d3QKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uOWJhNGNlOAotLS0gL2Rldi9udWxsCisrKyBiL3VpL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC51aS9yZXNvdXJjZXMvcHJvcGVydGllcy91aS9NdWx0aXBsZVN0YWtlaG9sZGVyLnh3dApAQCAtMCwwICsxLDggQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+DQorPENvbXBvc2l0ZSB4bWxuczpqPSJjbHItbmFtZXNwYWNlOmphdmEubGFuZyINCisJeG1sbnM6cHBlbD0iY2xyLW5hbWVzcGFjZTpvcmcuZWNsaXBzZS5wYXB5cnVzLnZpZXdzLnByb3BlcnRpZXMud2lkZ2V0cy5sYXlvdXQiDQorCXhtbG5zOng9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcveHd0IiB4bWxucz0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy94d3QvcHJlc2VudGF0aW9uIj4NCisJPENvbXBvc2l0ZS5sYXlvdXQ+DQorCQk8cHBlbDpQcm9wZXJ0aWVzTGF5b3V0PjwvcHBlbDpQcm9wZXJ0aWVzTGF5b3V0Pg0KKwk8L0NvbXBvc2l0ZS5sYXlvdXQ+DQorPC9Db21wb3NpdGU+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdWkvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnVpL3Jlc291cmNlcy9wcm9wZXJ0aWVzL3VpL011bHRpcGxlVGVzdENhc2UueHd0IGIvdWkvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnVpL3Jlc291cmNlcy9wcm9wZXJ0aWVzL3VpL011bHRpcGxlVGVzdENhc2UueHd0Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjJjNWQ3YzQKLS0tIC9kZXYvbnVsbAorKysgYi91aS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQudWkvcmVzb3VyY2VzL3Byb3BlcnRpZXMvdWkvTXVsdGlwbGVUZXN0Q2FzZS54d3QKQEAgLTAsMCArMSwyOCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4NCis8Q29tcG9zaXRlIHhtbG5zOmo9ImNsci1uYW1lc3BhY2U6amF2YS5sYW5nIg0KKwl4bWxuczpwcGVsPSJjbHItbmFtZXNwYWNlOm9yZy5lY2xpcHNlLnBhcHlydXMudmlld3MucHJvcGVydGllcy53aWRnZXRzLmxheW91dCINCisJeG1sbnM6eD0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy94d3QiIHhtbG5zPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3h3dC9wcmVzZW50YXRpb24iDQorCXhtbG5zOnBwZT0iY2xyLW5hbWVzcGFjZTpvcmcuZWNsaXBzZS5wYXB5cnVzLnZpZXdzLnByb3BlcnRpZXMud2lkZ2V0cyI+DQorCTxDb21wb3NpdGUubGF5b3V0Pg0KKwkJPHBwZWw6UHJvcGVydGllc0xheW91dD48L3BwZWw6UHJvcGVydGllc0xheW91dD4NCisJPC9Db21wb3NpdGUubGF5b3V0Pg0KKwk8Q29tcG9zaXRlPg0KKwkJPENvbXBvc2l0ZS5sYXlvdXQ+DQorCQkJPHBwZWw6UHJvcGVydGllc0xheW91dCBudW1Db2x1bW5zPSIyIj48L3BwZWw6UHJvcGVydGllc0xheW91dD4NCisJCTwvQ29tcG9zaXRlLmxheW91dD4NCisJCTxwcGU6Qm9vbGVhblJhZGlvIGlucHV0PSJ7QmluZGluZ30iIHByb3BlcnR5PSJVTUw6Q2xhc3NpZmllcjppc0Fic3RyYWN0Ij48L3BwZTpCb29sZWFuUmFkaW8+DQorCQk8cHBlOkJvb2xlYW5SYWRpbyBpbnB1dD0ie0JpbmRpbmd9IiBwcm9wZXJ0eT0iVU1MOkNsYXNzOmlzQWN0aXZlIj48L3BwZTpCb29sZWFuUmFkaW8+DQorCQk8cHBlOkJvb2xlYW5SYWRpbyBpbnB1dD0ie0JpbmRpbmd9Ig0KKwkJCXByb3BlcnR5PSJVTUw6UmVkZWZpbmFibGVFbGVtZW50OmlzTGVhZiI+PC9wcGU6Qm9vbGVhblJhZGlvPg0KKwkJPHBwZTpCb29sZWFuUmFkaW8gaW5wdXQ9IntCaW5kaW5nfSIgcHJvcGVydHk9IlVNTDpPcGVyYXRpb246aXNRdWVyeSI+PC9wcGU6Qm9vbGVhblJhZGlvPg0KKwkJPHBwZTpCb29sZWFuUmFkaW8gaW5wdXQ9IntCaW5kaW5nfSIgcHJvcGVydHk9IlVNTDpCZWhhdmlvcjppc1JlZW50cmFudCI+PC9wcGU6Qm9vbGVhblJhZGlvPg0KKwkJPHBwZTpCb29sZWFuUmFkaW8gaW5wdXQ9IntCaW5kaW5nfSIgcHJvcGVydHk9IlVNTDpGZWF0dXJlOmlzU3RhdGljIj48L3BwZTpCb29sZWFuUmFkaW8+DQorCTwvQ29tcG9zaXRlPg0KKwk8Q29tcG9zaXRlPg0KKwkJPENvbXBvc2l0ZS5sYXlvdXQ+DQorCQkJPHBwZWw6UHJvcGVydGllc0xheW91dCBudW1Db2x1bW5zPSIyIj48L3BwZWw6UHJvcGVydGllc0xheW91dD4NCisJCTwvQ29tcG9zaXRlLmxheW91dD4NCisJCTxwcGU6RW51bUNvbWJvIGlucHV0PSJ7QmluZGluZ30iIHByb3BlcnR5PSJVTUw6QmVoYXZpb3JhbEZlYXR1cmU6Y29uY3VycmVuY3kiPjwvcHBlOkVudW1Db21ibz4NCisJCTxwcGU6RW51bUNvbWJvIGlucHV0PSJ7QmluZGluZ30iIHByb3BlcnR5PSJVTUw6TmFtZWRFbGVtZW50OnZpc2liaWxpdHkiPjwvcHBlOkVudW1Db21ibz4NCisJPC9Db21wb3NpdGU+DQorPC9Db21wb3NpdGU+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdWkvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnVpL3Jlc291cmNlcy9wcm9wZXJ0aWVzL3VpL011bHRpcGxlVHJhY2UueHd0IGIvdWkvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnVpL3Jlc291cmNlcy9wcm9wZXJ0aWVzL3VpL011bHRpcGxlVHJhY2UueHd0Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjliYTRjZTgKLS0tIC9kZXYvbnVsbAorKysgYi91aS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQudWkvcmVzb3VyY2VzL3Byb3BlcnRpZXMvdWkvTXVsdGlwbGVUcmFjZS54d3QKQEAgLTAsMCArMSw4IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/Pg0KKzxDb21wb3NpdGUgeG1sbnM6aj0iY2xyLW5hbWVzcGFjZTpqYXZhLmxhbmciDQorCXhtbG5zOnBwZWw9ImNsci1uYW1lc3BhY2U6b3JnLmVjbGlwc2UucGFweXJ1cy52aWV3cy5wcm9wZXJ0aWVzLndpZGdldHMubGF5b3V0Ig0KKwl4bWxuczp4PSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3h3dCIgeG1sbnM9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcveHd0L3ByZXNlbnRhdGlvbiI+DQorCTxDb21wb3NpdGUubGF5b3V0Pg0KKwkJPHBwZWw6UHJvcGVydGllc0xheW91dD48L3BwZWw6UHJvcGVydGllc0xheW91dD4NCisJPC9Db21wb3NpdGUubGF5b3V0Pg0KKzwvQ29tcG9zaXRlPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3VpL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC51aS9yZXNvdXJjZXMvcHJvcGVydGllcy91aS9NdWx0aXBsZVRyaWdnZXJPbk5lc3RlZFBvcnQueHd0IGIvdWkvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnVpL3Jlc291cmNlcy9wcm9wZXJ0aWVzL3VpL011bHRpcGxlVHJpZ2dlck9uTmVzdGVkUG9ydC54d3QKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uOWJhNGNlOAotLS0gL2Rldi9udWxsCisrKyBiL3VpL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC51aS9yZXNvdXJjZXMvcHJvcGVydGllcy91aS9NdWx0aXBsZVRyaWdnZXJPbk5lc3RlZFBvcnQueHd0CkBAIC0wLDAgKzEsOCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4NCis8Q29tcG9zaXRlIHhtbG5zOmo9ImNsci1uYW1lc3BhY2U6amF2YS5sYW5nIg0KKwl4bWxuczpwcGVsPSJjbHItbmFtZXNwYWNlOm9yZy5lY2xpcHNlLnBhcHlydXMudmlld3MucHJvcGVydGllcy53aWRnZXRzLmxheW91dCINCisJeG1sbnM6eD0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy94d3QiIHhtbG5zPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3h3dC9wcmVzZW50YXRpb24iPg0KKwk8Q29tcG9zaXRlLmxheW91dD4NCisJCTxwcGVsOlByb3BlcnRpZXNMYXlvdXQ+PC9wcGVsOlByb3BlcnRpZXNMYXlvdXQ+DQorCTwvQ29tcG9zaXRlLmxheW91dD4NCis8L0NvbXBvc2l0ZT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS91aS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQudWkvcmVzb3VyY2VzL3Byb3BlcnRpZXMvdWkvTXVsdGlwbGVWYWx1ZVR5cGUueHd0IGIvdWkvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnVpL3Jlc291cmNlcy9wcm9wZXJ0aWVzL3VpL011bHRpcGxlVmFsdWVUeXBlLnh3dApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi42MzVhOWM5Ci0tLSAvZGV2L251bGwKKysrIGIvdWkvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnVpL3Jlc291cmNlcy9wcm9wZXJ0aWVzL3VpL011bHRpcGxlVmFsdWVUeXBlLnh3dApAQCAtMCwwICsxLDIzIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/Pg0KKzxDb21wb3NpdGUgeG1sbnM6aj0iY2xyLW5hbWVzcGFjZTpqYXZhLmxhbmciDQorCXhtbG5zOnBwZWw9ImNsci1uYW1lc3BhY2U6b3JnLmVjbGlwc2UucGFweXJ1cy52aWV3cy5wcm9wZXJ0aWVzLndpZGdldHMubGF5b3V0Ig0KKwl4bWxuczp4PSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3h3dCIgeG1sbnM9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcveHd0L3ByZXNlbnRhdGlvbiINCisJeG1sbnM6cHBlPSJjbHItbmFtZXNwYWNlOm9yZy5lY2xpcHNlLnBhcHlydXMudmlld3MucHJvcGVydGllcy53aWRnZXRzIj4NCisJPENvbXBvc2l0ZS5sYXlvdXQ+DQorCQk8cHBlbDpQcm9wZXJ0aWVzTGF5b3V0PjwvcHBlbDpQcm9wZXJ0aWVzTGF5b3V0Pg0KKwk8L0NvbXBvc2l0ZS5sYXlvdXQ+DQorCTxDb21wb3NpdGU+DQorCQk8Q29tcG9zaXRlLmxheW91dD4NCisJCQk8cHBlbDpQcm9wZXJ0aWVzTGF5b3V0IG51bUNvbHVtbnM9IjIiPjwvcHBlbDpQcm9wZXJ0aWVzTGF5b3V0Pg0KKwkJPC9Db21wb3NpdGUubGF5b3V0Pg0KKwkJPHBwZTpCb29sZWFuUmFkaW8gaW5wdXQ9IntCaW5kaW5nfSIgcHJvcGVydHk9IlVNTDpDbGFzc2lmaWVyOmlzQWJzdHJhY3QiPjwvcHBlOkJvb2xlYW5SYWRpbz4NCisJCTxwcGU6Qm9vbGVhblJhZGlvIGlucHV0PSJ7QmluZGluZ30iDQorCQkJcHJvcGVydHk9IlVNTDpSZWRlZmluYWJsZUVsZW1lbnQ6aXNMZWFmIj48L3BwZTpCb29sZWFuUmFkaW8+DQorCTwvQ29tcG9zaXRlPg0KKwk8Q29tcG9zaXRlPg0KKwkJPENvbXBvc2l0ZS5sYXlvdXQ+DQorCQkJPHBwZWw6UHJvcGVydGllc0xheW91dD48L3BwZWw6UHJvcGVydGllc0xheW91dD4NCisJCTwvQ29tcG9zaXRlLmxheW91dD4NCisJCTxwcGU6RW51bUNvbWJvIGlucHV0PSJ7QmluZGluZ30iIHByb3BlcnR5PSJVTUw6TmFtZWRFbGVtZW50OnZpc2liaWxpdHkiPjwvcHBlOkVudW1Db21ibz4NCisJPC9Db21wb3NpdGU+DQorPC9Db21wb3NpdGU+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdWkvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnVpL3Jlc291cmNlcy9wcm9wZXJ0aWVzL3VpL011bHRpcGxlVmVyaWZ5Lnh3dCBiL3VpL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC51aS9yZXNvdXJjZXMvcHJvcGVydGllcy91aS9NdWx0aXBsZVZlcmlmeS54d3QKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uOWJhNGNlOAotLS0gL2Rldi9udWxsCisrKyBiL3VpL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC51aS9yZXNvdXJjZXMvcHJvcGVydGllcy91aS9NdWx0aXBsZVZlcmlmeS54d3QKQEAgLTAsMCArMSw4IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/Pg0KKzxDb21wb3NpdGUgeG1sbnM6aj0iY2xyLW5hbWVzcGFjZTpqYXZhLmxhbmciDQorCXhtbG5zOnBwZWw9ImNsci1uYW1lc3BhY2U6b3JnLmVjbGlwc2UucGFweXJ1cy52aWV3cy5wcm9wZXJ0aWVzLndpZGdldHMubGF5b3V0Ig0KKwl4bWxuczp4PSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3h3dCIgeG1sbnM9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcveHd0L3ByZXNlbnRhdGlvbiI+DQorCTxDb21wb3NpdGUubGF5b3V0Pg0KKwkJPHBwZWw6UHJvcGVydGllc0xheW91dD48L3BwZWw6UHJvcGVydGllc0xheW91dD4NCisJPC9Db21wb3NpdGUubGF5b3V0Pg0KKzwvQ29tcG9zaXRlPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3VpL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC51aS9yZXNvdXJjZXMvcHJvcGVydGllcy91aS9NdWx0aXBsZVZpZXcueHd0IGIvdWkvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnVpL3Jlc291cmNlcy9wcm9wZXJ0aWVzL3VpL011bHRpcGxlVmlldy54d3QKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uMDA3NjhkZQotLS0gL2Rldi9udWxsCisrKyBiL3VpL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC51aS9yZXNvdXJjZXMvcHJvcGVydGllcy91aS9NdWx0aXBsZVZpZXcueHd0CkBAIC0wLDAgKzEsMTUgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+DQorPENvbXBvc2l0ZSB4bWxuczpqPSJjbHItbmFtZXNwYWNlOmphdmEubGFuZyINCisJeG1sbnM6cHBlbD0iY2xyLW5hbWVzcGFjZTpvcmcuZWNsaXBzZS5wYXB5cnVzLnZpZXdzLnByb3BlcnRpZXMud2lkZ2V0cy5sYXlvdXQiDQorCXhtbG5zOng9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcveHd0IiB4bWxucz0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy94d3QvcHJlc2VudGF0aW9uIg0KKwl4bWxuczpwcGU9ImNsci1uYW1lc3BhY2U6b3JnLmVjbGlwc2UucGFweXJ1cy52aWV3cy5wcm9wZXJ0aWVzLndpZGdldHMiPg0KKwk8Q29tcG9zaXRlLmxheW91dD4NCisJCTxwcGVsOlByb3BlcnRpZXNMYXlvdXQ+PC9wcGVsOlByb3BlcnRpZXNMYXlvdXQ+DQorCTwvQ29tcG9zaXRlLmxheW91dD4NCisJPENvbXBvc2l0ZT4NCisJCTxDb21wb3NpdGUubGF5b3V0Pg0KKwkJCTxwcGVsOlByb3BlcnRpZXNMYXlvdXQ+PC9wcGVsOlByb3BlcnRpZXNMYXlvdXQ+DQorCQk8L0NvbXBvc2l0ZS5sYXlvdXQ+DQorCQk8cHBlOkVudW1Db21ibyBpbnB1dD0ie0JpbmRpbmd9IiBwcm9wZXJ0eT0iVU1MOk5hbWVkRWxlbWVudDp2aXNpYmlsaXR5Ij48L3BwZTpFbnVtQ29tYm8+DQorCTwvQ29tcG9zaXRlPg0KKzwvQ29tcG9zaXRlPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3VpL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC51aS9yZXNvdXJjZXMvcHJvcGVydGllcy91aS9NdWx0aXBsZVZpZXdQb2ludC54d3QgYi91aS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQudWkvcmVzb3VyY2VzL3Byb3BlcnRpZXMvdWkvTXVsdGlwbGVWaWV3UG9pbnQueHd0Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmFjMjhlMzgKLS0tIC9kZXYvbnVsbAorKysgYi91aS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQudWkvcmVzb3VyY2VzL3Byb3BlcnRpZXMvdWkvTXVsdGlwbGVWaWV3UG9pbnQueHd0CkBAIC0wLDAgKzEsMjQgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+DQorPENvbXBvc2l0ZSB4bWxuczpqPSJjbHItbmFtZXNwYWNlOmphdmEubGFuZyINCisJeG1sbnM6cHBlbD0iY2xyLW5hbWVzcGFjZTpvcmcuZWNsaXBzZS5wYXB5cnVzLnZpZXdzLnByb3BlcnRpZXMud2lkZ2V0cy5sYXlvdXQiDQorCXhtbG5zOng9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcveHd0IiB4bWxucz0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy94d3QvcHJlc2VudGF0aW9uIg0KKwl4bWxuczpwcGU9ImNsci1uYW1lc3BhY2U6b3JnLmVjbGlwc2UucGFweXJ1cy52aWV3cy5wcm9wZXJ0aWVzLndpZGdldHMiPg0KKwk8Q29tcG9zaXRlLmxheW91dD4NCisJCTxwcGVsOlByb3BlcnRpZXNMYXlvdXQ+PC9wcGVsOlByb3BlcnRpZXNMYXlvdXQ+DQorCTwvQ29tcG9zaXRlLmxheW91dD4NCisJPENvbXBvc2l0ZT4NCisJCTxDb21wb3NpdGUubGF5b3V0Pg0KKwkJCTxwcGVsOlByb3BlcnRpZXNMYXlvdXQgbnVtQ29sdW1ucz0iMiI+PC9wcGVsOlByb3BlcnRpZXNMYXlvdXQ+DQorCQk8L0NvbXBvc2l0ZS5sYXlvdXQ+DQorCQk8cHBlOkJvb2xlYW5SYWRpbyBpbnB1dD0ie0JpbmRpbmd9IiBwcm9wZXJ0eT0iVU1MOkNsYXNzaWZpZXI6aXNBYnN0cmFjdCI+PC9wcGU6Qm9vbGVhblJhZGlvPg0KKwkJPHBwZTpCb29sZWFuUmFkaW8gaW5wdXQ9IntCaW5kaW5nfSIgcHJvcGVydHk9IlVNTDpDbGFzczppc0FjdGl2ZSI+PC9wcGU6Qm9vbGVhblJhZGlvPg0KKwkJPHBwZTpCb29sZWFuUmFkaW8gaW5wdXQ9IntCaW5kaW5nfSINCisJCQlwcm9wZXJ0eT0iVU1MOlJlZGVmaW5hYmxlRWxlbWVudDppc0xlYWYiPjwvcHBlOkJvb2xlYW5SYWRpbz4NCisJPC9Db21wb3NpdGU+DQorCTxDb21wb3NpdGU+DQorCQk8Q29tcG9zaXRlLmxheW91dD4NCisJCQk8cHBlbDpQcm9wZXJ0aWVzTGF5b3V0PjwvcHBlbDpQcm9wZXJ0aWVzTGF5b3V0Pg0KKwkJPC9Db21wb3NpdGUubGF5b3V0Pg0KKwkJPHBwZTpFbnVtQ29tYm8gaW5wdXQ9IntCaW5kaW5nfSIgcHJvcGVydHk9IlVNTDpOYW1lZEVsZW1lbnQ6dmlzaWJpbGl0eSI+PC9wcGU6RW51bUNvbWJvPg0KKwk8L0NvbXBvc2l0ZT4NCis8L0NvbXBvc2l0ZT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS91aS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQudWkvcmVzb3VyY2VzL3Byb3BlcnRpZXMvdWkvU2luZ2xlQWNjZXB0Q2hhbmdlU3RydWN0dXJhbEZlYXR1cmVFdmVudEFjdGlvbi54d3QgYi91aS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQudWkvcmVzb3VyY2VzL3Byb3BlcnRpZXMvdWkvU2luZ2xlQWNjZXB0Q2hhbmdlU3RydWN0dXJhbEZlYXR1cmVFdmVudEFjdGlvbi54d3QKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uOWJhNGNlOAotLS0gL2Rldi9udWxsCisrKyBiL3VpL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC51aS9yZXNvdXJjZXMvcHJvcGVydGllcy91aS9TaW5nbGVBY2NlcHRDaGFuZ2VTdHJ1Y3R1cmFsRmVhdHVyZUV2ZW50QWN0aW9uLnh3dApAQCAtMCwwICsxLDggQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+DQorPENvbXBvc2l0ZSB4bWxuczpqPSJjbHItbmFtZXNwYWNlOmphdmEubGFuZyINCisJeG1sbnM6cHBlbD0iY2xyLW5hbWVzcGFjZTpvcmcuZWNsaXBzZS5wYXB5cnVzLnZpZXdzLnByb3BlcnRpZXMud2lkZ2V0cy5sYXlvdXQiDQorCXhtbG5zOng9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcveHd0IiB4bWxucz0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy94d3QvcHJlc2VudGF0aW9uIj4NCisJPENvbXBvc2l0ZS5sYXlvdXQ+DQorCQk8cHBlbDpQcm9wZXJ0aWVzTGF5b3V0PjwvcHBlbDpQcm9wZXJ0aWVzTGF5b3V0Pg0KKwk8L0NvbXBvc2l0ZS5sYXlvdXQ+DQorPC9Db21wb3NpdGU+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdWkvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnVpL3Jlc291cmNlcy9wcm9wZXJ0aWVzL3VpL1NpbmdsZUFkanVuY3RQcm9wZXJ0eS54d3QgYi91aS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQudWkvcmVzb3VyY2VzL3Byb3BlcnRpZXMvdWkvU2luZ2xlQWRqdW5jdFByb3BlcnR5Lnh3dApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi4yYjMyZDg3Ci0tLSAvZGV2L251bGwKKysrIGIvdWkvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnVpL3Jlc291cmNlcy9wcm9wZXJ0aWVzL3VpL1NpbmdsZUFkanVuY3RQcm9wZXJ0eS54d3QKQEAgLTAsMCArMSwxNiBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4NCis8Q29tcG9zaXRlIHhtbG5zOmo9ImNsci1uYW1lc3BhY2U6amF2YS5sYW5nIg0KKwl4bWxuczpwcGVsPSJjbHItbmFtZXNwYWNlOm9yZy5lY2xpcHNlLnBhcHlydXMudmlld3MucHJvcGVydGllcy53aWRnZXRzLmxheW91dCINCisJeG1sbnM6eD0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy94d3QiIHhtbG5zPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3h3dC9wcmVzZW50YXRpb24iDQorCXhtbG5zOnBwZT0iY2xyLW5hbWVzcGFjZTpvcmcuZWNsaXBzZS5wYXB5cnVzLnZpZXdzLnByb3BlcnRpZXMud2lkZ2V0cyI+DQorCTxDb21wb3NpdGUubGF5b3V0Pg0KKwkJPHBwZWw6UHJvcGVydGllc0xheW91dD48L3BwZWw6UHJvcGVydGllc0xheW91dD4NCisJPC9Db21wb3NpdGUubGF5b3V0Pg0KKwk8Q29tcG9zaXRlPg0KKwkJPENvbXBvc2l0ZS5sYXlvdXQ+DQorCQkJPHBwZWw6UHJvcGVydGllc0xheW91dCBudW1Db2x1bW5zPSIxIj48L3BwZWw6UHJvcGVydGllc0xheW91dD4NCisJCTwvQ29tcG9zaXRlLmxheW91dD4NCisJCTxwcGU6UmVmZXJlbmNlRGlhbG9nIGlucHV0PSJ7QmluZGluZ30iDQorCQkJcHJvcGVydHk9IlN5c01MOkJsb2NrczpBZGp1bmN0UHJvcGVydHk6cHJpbmNpcGFsIj48L3BwZTpSZWZlcmVuY2VEaWFsb2c+DQorCTwvQ29tcG9zaXRlPg0KKzwvQ29tcG9zaXRlPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3VpL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC51aS9yZXNvdXJjZXMvcHJvcGVydGllcy91aS9TaW5nbGVBbGxvY2F0ZS54d3QgYi91aS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQudWkvcmVzb3VyY2VzL3Byb3BlcnRpZXMvdWkvU2luZ2xlQWxsb2NhdGUueHd0Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjI2ZWYwZDMKLS0tIC9kZXYvbnVsbAorKysgYi91aS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQudWkvcmVzb3VyY2VzL3Byb3BlcnRpZXMvdWkvU2luZ2xlQWxsb2NhdGUueHd0CkBAIC0wLDAgKzEsMjggQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+DQorPENvbXBvc2l0ZSB4bWxuczpqPSJjbHItbmFtZXNwYWNlOmphdmEubGFuZyINCisJeG1sbnM6cHBlbD0iY2xyLW5hbWVzcGFjZTpvcmcuZWNsaXBzZS5wYXB5cnVzLnZpZXdzLnByb3BlcnRpZXMud2lkZ2V0cy5sYXlvdXQiDQorCXhtbG5zOng9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcveHd0IiB4bWxucz0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy94d3QvcHJlc2VudGF0aW9uIg0KKwl4bWxuczpwcGU9ImNsci1uYW1lc3BhY2U6b3JnLmVjbGlwc2UucGFweXJ1cy52aWV3cy5wcm9wZXJ0aWVzLndpZGdldHMiPg0KKwk8Q29tcG9zaXRlLmxheW91dD4NCisJCTxwcGVsOlByb3BlcnRpZXNMYXlvdXQ+PC9wcGVsOlByb3BlcnRpZXNMYXlvdXQ+DQorCTwvQ29tcG9zaXRlLmxheW91dD4NCisJPENvbXBvc2l0ZT4NCisJCTxDb21wb3NpdGUubGF5b3V0Pg0KKwkJCTxwcGVsOlByb3BlcnRpZXNMYXlvdXQ+PC9wcGVsOlByb3BlcnRpZXNMYXlvdXQ+DQorCQk8L0NvbXBvc2l0ZS5sYXlvdXQ+DQorCQk8cHBlOlN0cmluZ0VkaXRvciBpbnB1dD0ie0JpbmRpbmd9IiBwcm9wZXJ0eT0iVU1MOk5hbWVkRWxlbWVudDpuYW1lIj48L3BwZTpTdHJpbmdFZGl0b3I+DQorCTwvQ29tcG9zaXRlPg0KKwk8Q29tcG9zaXRlPg0KKwkJPENvbXBvc2l0ZS5sYXlvdXQ+DQorCQkJPHBwZWw6UHJvcGVydGllc0xheW91dD48L3BwZWw6UHJvcGVydGllc0xheW91dD4NCisJCTwvQ29tcG9zaXRlLmxheW91dD4NCisJCTxwcGU6RW51bUNvbWJvIGlucHV0PSJ7QmluZGluZ30iIHByb3BlcnR5PSJVTUw6TmFtZWRFbGVtZW50OnZpc2liaWxpdHkiPjwvcHBlOkVudW1Db21ibz4NCisJPC9Db21wb3NpdGU+DQorCTxDb21wb3NpdGU+DQorCQk8Q29tcG9zaXRlLmxheW91dD4NCisJCQk8cHBlbDpQcm9wZXJ0aWVzTGF5b3V0IG51bUNvbHVtbnM9IjIiPjwvcHBlbDpQcm9wZXJ0aWVzTGF5b3V0Pg0KKwkJPC9Db21wb3NpdGUubGF5b3V0Pg0KKwkJPHBwZTpNdWx0aVJlZmVyZW5jZSBpbnB1dD0ie0JpbmRpbmd9IiBwcm9wZXJ0eT0iVU1MOkRlcGVuZGVuY3k6Y2xpZW50Ij48L3BwZTpNdWx0aVJlZmVyZW5jZT4NCisJCTxwcGU6TXVsdGlSZWZlcmVuY2UgaW5wdXQ9IntCaW5kaW5nfSIgcHJvcGVydHk9IlVNTDpEZXBlbmRlbmN5OnN1cHBsaWVyIj48L3BwZTpNdWx0aVJlZmVyZW5jZT4NCisJPC9Db21wb3NpdGU+DQorPC9Db21wb3NpdGU+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdWkvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnVpL3Jlc291cmNlcy9wcm9wZXJ0aWVzL3VpL1NpbmdsZUFsbG9jYXRlQWN0aXZpdHlQYXJ0aXRpb24ueHd0IGIvdWkvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnVpL3Jlc291cmNlcy9wcm9wZXJ0aWVzL3VpL1NpbmdsZUFsbG9jYXRlQWN0aXZpdHlQYXJ0aXRpb24ueHd0Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjJmZjllMDcKLS0tIC9kZXYvbnVsbAorKysgYi91aS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQudWkvcmVzb3VyY2VzL3Byb3BlcnRpZXMvdWkvU2luZ2xlQWxsb2NhdGVBY3Rpdml0eVBhcnRpdGlvbi54d3QKQEAgLTAsMCArMSwzMCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4NCis8Q29tcG9zaXRlIHhtbG5zOmo9ImNsci1uYW1lc3BhY2U6amF2YS5sYW5nIg0KKwl4bWxuczpwcGVsPSJjbHItbmFtZXNwYWNlOm9yZy5lY2xpcHNlLnBhcHlydXMudmlld3MucHJvcGVydGllcy53aWRnZXRzLmxheW91dCINCisJeG1sbnM6eD0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy94d3QiIHhtbG5zPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3h3dC9wcmVzZW50YXRpb24iDQorCXhtbG5zOnBwZT0iY2xyLW5hbWVzcGFjZTpvcmcuZWNsaXBzZS5wYXB5cnVzLnZpZXdzLnByb3BlcnRpZXMud2lkZ2V0cyI+DQorCTxDb21wb3NpdGUubGF5b3V0Pg0KKwkJPHBwZWw6UHJvcGVydGllc0xheW91dD48L3BwZWw6UHJvcGVydGllc0xheW91dD4NCisJPC9Db21wb3NpdGUubGF5b3V0Pg0KKwk8Q29tcG9zaXRlPg0KKwkJPENvbXBvc2l0ZS5sYXlvdXQ+DQorCQkJPHBwZWw6UHJvcGVydGllc0xheW91dD48L3BwZWw6UHJvcGVydGllc0xheW91dD4NCisJCTwvQ29tcG9zaXRlLmxheW91dD4NCisJCTxwcGU6U3RyaW5nRWRpdG9yIGlucHV0PSJ7QmluZGluZ30iIHByb3BlcnR5PSJVTUw6TmFtZWRFbGVtZW50Om5hbWUiPjwvcHBlOlN0cmluZ0VkaXRvcj4NCisJPC9Db21wb3NpdGU+DQorCTxDb21wb3NpdGU+DQorCQk8Q29tcG9zaXRlLmxheW91dD4NCisJCQk8cHBlbDpQcm9wZXJ0aWVzTGF5b3V0IG51bUNvbHVtbnM9IjIiPjwvcHBlbDpQcm9wZXJ0aWVzTGF5b3V0Pg0KKwkJPC9Db21wb3NpdGUubGF5b3V0Pg0KKwkJPHBwZTpCb29sZWFuUmFkaW8gaW5wdXQ9IntCaW5kaW5nfSINCisJCQlwcm9wZXJ0eT0iVU1MOkFjdGl2aXR5UGFydGl0aW9uOmlzRGltZW5zaW9uIj48L3BwZTpCb29sZWFuUmFkaW8+DQorCQk8cHBlOkJvb2xlYW5SYWRpbyBpbnB1dD0ie0JpbmRpbmd9Ig0KKwkJCXByb3BlcnR5PSJVTUw6QWN0aXZpdHlQYXJ0aXRpb246aXNFeHRlcm5hbCI+PC9wcGU6Qm9vbGVhblJhZGlvPg0KKwk8L0NvbXBvc2l0ZT4NCisJPENvbXBvc2l0ZT4NCisJCTxDb21wb3NpdGUubGF5b3V0Pg0KKwkJCTxwcGVsOlByb3BlcnRpZXNMYXlvdXQ+PC9wcGVsOlByb3BlcnRpZXNMYXlvdXQ+DQorCQk8L0NvbXBvc2l0ZS5sYXlvdXQ+DQorCQk8cHBlOkVudW1Db21ibyBpbnB1dD0ie0JpbmRpbmd9IiBwcm9wZXJ0eT0iVU1MOk5hbWVkRWxlbWVudDp2aXNpYmlsaXR5Ij48L3BwZTpFbnVtQ29tYm8+DQorCTwvQ29tcG9zaXRlPg0KKzwvQ29tcG9zaXRlPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3VpL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC51aS9yZXNvdXJjZXMvcHJvcGVydGllcy91aS9TaW5nbGVBbGxvY2F0ZWQueHd0IGIvdWkvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnVpL3Jlc291cmNlcy9wcm9wZXJ0aWVzL3VpL1NpbmdsZUFsbG9jYXRlZC54d3QKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uMzIwNzU3ZQotLS0gL2Rldi9udWxsCisrKyBiL3VpL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC51aS9yZXNvdXJjZXMvcHJvcGVydGllcy91aS9TaW5nbGVBbGxvY2F0ZWQueHd0CkBAIC0wLDAgKzEsMzAgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+DQorPENvbXBvc2l0ZSB4bWxuczpqPSJjbHItbmFtZXNwYWNlOmphdmEubGFuZyINCisJeG1sbnM6cHBlbD0iY2xyLW5hbWVzcGFjZTpvcmcuZWNsaXBzZS5wYXB5cnVzLnZpZXdzLnByb3BlcnRpZXMud2lkZ2V0cy5sYXlvdXQiDQorCXhtbG5zOng9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcveHd0IiB4bWxucz0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy94d3QvcHJlc2VudGF0aW9uIg0KKwl4bWxuczpwcGU9ImNsci1uYW1lc3BhY2U6b3JnLmVjbGlwc2UucGFweXJ1cy52aWV3cy5wcm9wZXJ0aWVzLndpZGdldHMiPg0KKwk8Q29tcG9zaXRlLmxheW91dD4NCisJCTxwcGVsOlByb3BlcnRpZXNMYXlvdXQ+PC9wcGVsOlByb3BlcnRpZXNMYXlvdXQ+DQorCTwvQ29tcG9zaXRlLmxheW91dD4NCisJPENvbXBvc2l0ZT4NCisJCTxDb21wb3NpdGUubGF5b3V0Pg0KKwkJCTxwcGVsOlByb3BlcnRpZXNMYXlvdXQ+PC9wcGVsOlByb3BlcnRpZXNMYXlvdXQ+DQorCQk8L0NvbXBvc2l0ZS5sYXlvdXQ+DQorCQk8cHBlOlN0cmluZ0VkaXRvciBpbnB1dD0ie0JpbmRpbmd9IiBwcm9wZXJ0eT0iVU1MOk5hbWVkRWxlbWVudDpuYW1lIj48L3BwZTpTdHJpbmdFZGl0b3I+DQorCTwvQ29tcG9zaXRlPg0KKwk8Q29tcG9zaXRlPg0KKwkJPENvbXBvc2l0ZS5sYXlvdXQ+DQorCQkJPHBwZWw6UHJvcGVydGllc0xheW91dD48L3BwZWw6UHJvcGVydGllc0xheW91dD4NCisJCTwvQ29tcG9zaXRlLmxheW91dD4NCisJCTxwcGU6RW51bUNvbWJvIGlucHV0PSJ7QmluZGluZ30iIHByb3BlcnR5PSJVTUw6TmFtZWRFbGVtZW50OnZpc2liaWxpdHkiPjwvcHBlOkVudW1Db21ibz4NCisJPC9Db21wb3NpdGU+DQorCTxDb21wb3NpdGU+DQorCQk8Q29tcG9zaXRlLmxheW91dD4NCisJCQk8cHBlbDpQcm9wZXJ0aWVzTGF5b3V0IG51bUNvbHVtbnM9IjIiPjwvcHBlbDpQcm9wZXJ0aWVzTGF5b3V0Pg0KKwkJPC9Db21wb3NpdGUubGF5b3V0Pg0KKwkJPHBwZTpNdWx0aVJlZmVyZW5jZSBpbnB1dD0ie0JpbmRpbmd9Ig0KKwkJCXByb3BlcnR5PSJTeXNNTDpBbGxvY2F0aW9uczpBbGxvY2F0ZWQ6YWxsb2NhdGVkRnJvbSI+PC9wcGU6TXVsdGlSZWZlcmVuY2U+DQorCQk8cHBlOk11bHRpUmVmZXJlbmNlIGlucHV0PSJ7QmluZGluZ30iDQorCQkJcHJvcGVydHk9IlN5c01MOkFsbG9jYXRpb25zOkFsbG9jYXRlZDphbGxvY2F0ZWRUbyI+PC9wcGU6TXVsdGlSZWZlcmVuY2U+DQorCTwvQ29tcG9zaXRlPg0KKzwvQ29tcG9zaXRlPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3VpL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC51aS9yZXNvdXJjZXMvcHJvcGVydGllcy91aS9TaW5nbGVCaW5kaW5nQ29ubmVjdG9yLnh3dCBiL3VpL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC51aS9yZXNvdXJjZXMvcHJvcGVydGllcy91aS9TaW5nbGVCaW5kaW5nQ29ubmVjdG9yLnh3dApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi45Yzg3MmY1Ci0tLSAvZGV2L251bGwKKysrIGIvdWkvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnVpL3Jlc291cmNlcy9wcm9wZXJ0aWVzL3VpL1NpbmdsZUJpbmRpbmdDb25uZWN0b3IueHd0CkBAIC0wLDAgKzEsMzAgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+DQorPENvbXBvc2l0ZSB4bWxuczpqPSJjbHItbmFtZXNwYWNlOmphdmEubGFuZyINCisJeG1sbnM6cHBlbD0iY2xyLW5hbWVzcGFjZTpvcmcuZWNsaXBzZS5wYXB5cnVzLnZpZXdzLnByb3BlcnRpZXMud2lkZ2V0cy5sYXlvdXQiDQorCXhtbG5zOng9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcveHd0IiB4bWxucz0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy94d3QvcHJlc2VudGF0aW9uIg0KKwl4bWxuczpwcGU9ImNsci1uYW1lc3BhY2U6b3JnLmVjbGlwc2UucGFweXJ1cy52aWV3cy5wcm9wZXJ0aWVzLndpZGdldHMiPg0KKwk8Q29tcG9zaXRlLmxheW91dD4NCisJCTxwcGVsOlByb3BlcnRpZXNMYXlvdXQ+PC9wcGVsOlByb3BlcnRpZXNMYXlvdXQ+DQorCTwvQ29tcG9zaXRlLmxheW91dD4NCisJPENvbXBvc2l0ZT4NCisJCTxDb21wb3NpdGUubGF5b3V0Pg0KKwkJCTxwcGVsOlByb3BlcnRpZXNMYXlvdXQ+PC9wcGVsOlByb3BlcnRpZXNMYXlvdXQ+DQorCQk8L0NvbXBvc2l0ZS5sYXlvdXQ+DQorCQk8cHBlOlN0cmluZ0VkaXRvciBpbnB1dD0ie0JpbmRpbmd9IiBwcm9wZXJ0eT0iVU1MOk5hbWVkRWxlbWVudDpuYW1lIj48L3BwZTpTdHJpbmdFZGl0b3I+DQorCTwvQ29tcG9zaXRlPg0KKwk8Q29tcG9zaXRlPg0KKwkJPENvbXBvc2l0ZS5sYXlvdXQ+DQorCQkJPHBwZWw6UHJvcGVydGllc0xheW91dCBudW1Db2x1bW5zPSIyIj48L3BwZWw6UHJvcGVydGllc0xheW91dD4NCisJCTwvQ29tcG9zaXRlLmxheW91dD4NCisJCTxwcGU6Qm9vbGVhblJhZGlvIGlucHV0PSJ7QmluZGluZ30iDQorCQkJcHJvcGVydHk9IlVNTDpSZWRlZmluYWJsZUVsZW1lbnQ6aXNMZWFmIj48L3BwZTpCb29sZWFuUmFkaW8+DQorCQk8cHBlOkJvb2xlYW5SYWRpbyBpbnB1dD0ie0JpbmRpbmd9IiBwcm9wZXJ0eT0iVU1MOkZlYXR1cmU6aXNTdGF0aWMiPjwvcHBlOkJvb2xlYW5SYWRpbz4NCisJPC9Db21wb3NpdGU+DQorCTxDb21wb3NpdGU+DQorCQk8Q29tcG9zaXRlLmxheW91dD4NCisJCQk8cHBlbDpQcm9wZXJ0aWVzTGF5b3V0IG51bUNvbHVtbnM9IjIiPjwvcHBlbDpQcm9wZXJ0aWVzTGF5b3V0Pg0KKwkJPC9Db21wb3NpdGUubGF5b3V0Pg0KKwkJPHBwZTpFbnVtQ29tYm8gaW5wdXQ9IntCaW5kaW5nfSIgcHJvcGVydHk9IlVNTDpDb25uZWN0b3I6a2luZCI+PC9wcGU6RW51bUNvbWJvPg0KKwkJPHBwZTpFbnVtQ29tYm8gaW5wdXQ9IntCaW5kaW5nfSIgcHJvcGVydHk9IlVNTDpOYW1lZEVsZW1lbnQ6dmlzaWJpbGl0eSI+PC9wcGU6RW51bUNvbWJvPg0KKwk8L0NvbXBvc2l0ZT4NCis8L0NvbXBvc2l0ZT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS91aS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQudWkvcmVzb3VyY2VzL3Byb3BlcnRpZXMvdWkvU2luZ2xlQmxvY2sueHd0IGIvdWkvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnVpL3Jlc291cmNlcy9wcm9wZXJ0aWVzL3VpL1NpbmdsZUJsb2NrLnh3dApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi40NjAxNzBjCi0tLSAvZGV2L251bGwKKysrIGIvdWkvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnVpL3Jlc291cmNlcy9wcm9wZXJ0aWVzL3VpL1NpbmdsZUJsb2NrLnh3dApAQCAtMCwwICsxLDMzIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/Pg0KKzxDb21wb3NpdGUNCisJeG1sbnM6cHBlbD0iY2xyLW5hbWVzcGFjZTpvcmcuZWNsaXBzZS5wYXB5cnVzLnZpZXdzLnByb3BlcnRpZXMud2lkZ2V0cy5sYXlvdXQiDQorCXhtbG5zOnBwZT0iY2xyLW5hbWVzcGFjZTpvcmcuZWNsaXBzZS5wYXB5cnVzLnZpZXdzLnByb3BlcnRpZXMud2lkZ2V0cyINCisJeG1sbnM9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcveHd0L3ByZXNlbnRhdGlvbiIgeG1sbnM6eD0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy94d3QiDQorCXhtbG5zOmo9ImNsci1uYW1lc3BhY2U6amF2YS5sYW5nIj4NCisJPENvbXBvc2l0ZS5sYXlvdXQ+DQorCQk8cHBlbDpQcm9wZXJ0aWVzTGF5b3V0PjwvcHBlbDpQcm9wZXJ0aWVzTGF5b3V0Pg0KKwk8L0NvbXBvc2l0ZS5sYXlvdXQ+DQorCTxDb21wb3NpdGU+DQorCQk8Q29tcG9zaXRlLmxheW91dD4NCisJCQk8cHBlbDpQcm9wZXJ0aWVzTGF5b3V0PjwvcHBlbDpQcm9wZXJ0aWVzTGF5b3V0Pg0KKwkJPC9Db21wb3NpdGUubGF5b3V0Pg0KKwkJPHBwZTpTdHJpbmdFZGl0b3IgaW5wdXQ9IntCaW5kaW5nfSIgcHJvcGVydHk9IlVNTDpOYW1lZEVsZW1lbnQ6bmFtZSI+PC9wcGU6U3RyaW5nRWRpdG9yPg0KKwk8L0NvbXBvc2l0ZT4NCisJPENvbXBvc2l0ZT4NCisJCTxDb21wb3NpdGUubGF5b3V0Pg0KKwkJCTxwcGVsOlByb3BlcnRpZXNMYXlvdXQgbnVtQ29sdW1ucz0iMiI+PC9wcGVsOlByb3BlcnRpZXNMYXlvdXQ+DQorCQk8L0NvbXBvc2l0ZS5sYXlvdXQ+DQorCQk8cHBlOkJvb2xlYW5SYWRpbyBpbnB1dD0ie0JpbmRpbmd9IiBwcm9wZXJ0eT0iVU1MOkNsYXNzaWZpZXI6aXNBYnN0cmFjdCI+PC9wcGU6Qm9vbGVhblJhZGlvPg0KKwkJPHBwZTpCb29sZWFuUmFkaW8gaW5wdXQ9IntCaW5kaW5nfSIgcHJvcGVydHk9IlVNTDpDbGFzczppc0FjdGl2ZSI+PC9wcGU6Qm9vbGVhblJhZGlvPg0KKwkJPHBwZTpCb29sZWFuUmFkaW8gaW5wdXQ9IntCaW5kaW5nfSINCisJCQlwcm9wZXJ0eT0iU3lzTUw6QmxvY2tzOkJsb2NrOmlzRW5jYXBzdWxhdGVkIj48L3BwZTpCb29sZWFuUmFkaW8+DQorCQk8cHBlOkJvb2xlYW5SYWRpbyBpbnB1dD0ie0JpbmRpbmd9Ig0KKwkJCXByb3BlcnR5PSJVTUw6UmVkZWZpbmFibGVFbGVtZW50OmlzTGVhZiI+PC9wcGU6Qm9vbGVhblJhZGlvPg0KKwk8L0NvbXBvc2l0ZT4NCisJPENvbXBvc2l0ZT4NCisJCTxDb21wb3NpdGUubGF5b3V0Pg0KKwkJCTxwcGVsOlByb3BlcnRpZXNMYXlvdXQ+PC9wcGVsOlByb3BlcnRpZXNMYXlvdXQ+DQorCQk8L0NvbXBvc2l0ZS5sYXlvdXQ+DQorCQk8cHBlOkVudW1Db21ibyBpbnB1dD0ie0JpbmRpbmd9IiBwcm9wZXJ0eT0iVU1MOk5hbWVkRWxlbWVudDp2aXNpYmlsaXR5Ij48L3BwZTpFbnVtQ29tYm8+DQorCTwvQ29tcG9zaXRlPg0KKzwvQ29tcG9zaXRlPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3VpL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC51aS9yZXNvdXJjZXMvcHJvcGVydGllcy91aS9TaW5nbGVCb3VuZFJlZmVyZW5jZS54d3QgYi91aS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQudWkvcmVzb3VyY2VzL3Byb3BlcnRpZXMvdWkvU2luZ2xlQm91bmRSZWZlcmVuY2UueHd0Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjI0MDNiNTcKLS0tIC9kZXYvbnVsbAorKysgYi91aS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQudWkvcmVzb3VyY2VzL3Byb3BlcnRpZXMvdWkvU2luZ2xlQm91bmRSZWZlcmVuY2UueHd0CkBAIC0wLDAgKzEsMTYgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+DQorPENvbXBvc2l0ZSB4bWxuczpqPSJjbHItbmFtZXNwYWNlOmphdmEubGFuZyINCisJeG1sbnM6cHBlbD0iY2xyLW5hbWVzcGFjZTpvcmcuZWNsaXBzZS5wYXB5cnVzLnZpZXdzLnByb3BlcnRpZXMud2lkZ2V0cy5sYXlvdXQiDQorCXhtbG5zOng9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcveHd0IiB4bWxucz0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy94d3QvcHJlc2VudGF0aW9uIg0KKwl4bWxuczpwcGU9ImNsci1uYW1lc3BhY2U6b3JnLmVjbGlwc2UucGFweXJ1cy52aWV3cy5wcm9wZXJ0aWVzLndpZGdldHMiPg0KKwk8Q29tcG9zaXRlLmxheW91dD4NCisJCTxwcGVsOlByb3BlcnRpZXNMYXlvdXQ+PC9wcGVsOlByb3BlcnRpZXNMYXlvdXQ+DQorCTwvQ29tcG9zaXRlLmxheW91dD4NCisJPENvbXBvc2l0ZT4NCisJCTxDb21wb3NpdGUubGF5b3V0Pg0KKwkJCTxwcGVsOlByb3BlcnRpZXNMYXlvdXQgbnVtQ29sdW1ucz0iMSI+PC9wcGVsOlByb3BlcnRpZXNMYXlvdXQ+DQorCQk8L0NvbXBvc2l0ZS5sYXlvdXQ+DQorCQk8cHBlOlJlZmVyZW5jZURpYWxvZyBpbnB1dD0ie0JpbmRpbmd9Ig0KKwkJCXByb3BlcnR5PSJTeXNNTDpCbG9ja3M6Qm91bmRSZWZlcmVuY2U6Ym91bmRFbmQiPjwvcHBlOlJlZmVyZW5jZURpYWxvZz4NCisJPC9Db21wb3NpdGU+DQorPC9Db21wb3NpdGU+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdWkvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnVpL3Jlc291cmNlcy9wcm9wZXJ0aWVzL3VpL1NpbmdsZUNoYW5nZVN0cnVjdHVyYWxGZWF0dXJlRXZlbnQueHd0IGIvdWkvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnVpL3Jlc291cmNlcy9wcm9wZXJ0aWVzL3VpL1NpbmdsZUNoYW5nZVN0cnVjdHVyYWxGZWF0dXJlRXZlbnQueHd0Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjQ1MTMwODYKLS0tIC9kZXYvbnVsbAorKysgYi91aS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQudWkvcmVzb3VyY2VzL3Byb3BlcnRpZXMvdWkvU2luZ2xlQ2hhbmdlU3RydWN0dXJhbEZlYXR1cmVFdmVudC54d3QKQEAgLTAsMCArMSwxNiBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4NCis8Q29tcG9zaXRlIHhtbG5zOmo9ImNsci1uYW1lc3BhY2U6amF2YS5sYW5nIg0KKwl4bWxuczpwcGVsPSJjbHItbmFtZXNwYWNlOm9yZy5lY2xpcHNlLnBhcHlydXMudmlld3MucHJvcGVydGllcy53aWRnZXRzLmxheW91dCINCisJeG1sbnM6eD0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy94d3QiIHhtbG5zPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3h3dC9wcmVzZW50YXRpb24iDQorCXhtbG5zOnBwZT0iY2xyLW5hbWVzcGFjZTpvcmcuZWNsaXBzZS5wYXB5cnVzLnZpZXdzLnByb3BlcnRpZXMud2lkZ2V0cyI+DQorCTxDb21wb3NpdGUubGF5b3V0Pg0KKwkJPHBwZWw6UHJvcGVydGllc0xheW91dD48L3BwZWw6UHJvcGVydGllc0xheW91dD4NCisJPC9Db21wb3NpdGUubGF5b3V0Pg0KKwk8Q29tcG9zaXRlPg0KKwkJPENvbXBvc2l0ZS5sYXlvdXQ+DQorCQkJPHBwZWw6UHJvcGVydGllc0xheW91dCBudW1Db2x1bW5zPSIxIj48L3BwZWw6UHJvcGVydGllc0xheW91dD4NCisJCTwvQ29tcG9zaXRlLmxheW91dD4NCisJCTxwcGU6UmVmZXJlbmNlRGlhbG9nIGlucHV0PSJ7QmluZGluZ30iDQorCQkJcHJvcGVydHk9IlN5c01MOlBvcnRzYW5kRmxvd3M6Q2hhbmdlU3RydWN0dXJhbEZlYXR1cmVFdmVudDpzdHJ1Y3R1cmFsRmVhdHVyZSI+PC9wcGU6UmVmZXJlbmNlRGlhbG9nPg0KKwk8L0NvbXBvc2l0ZT4NCis8L0NvbXBvc2l0ZT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS91aS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQudWkvcmVzb3VyY2VzL3Byb3BlcnRpZXMvdWkvU2luZ2xlQ2xhc3NpZmllckJlaGF2aW9yUHJvcGVydHkueHd0IGIvdWkvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnVpL3Jlc291cmNlcy9wcm9wZXJ0aWVzL3VpL1NpbmdsZUNsYXNzaWZpZXJCZWhhdmlvclByb3BlcnR5Lnh3dApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi45YmE0Y2U4Ci0tLSAvZGV2L251bGwKKysrIGIvdWkvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnVpL3Jlc291cmNlcy9wcm9wZXJ0aWVzL3VpL1NpbmdsZUNsYXNzaWZpZXJCZWhhdmlvclByb3BlcnR5Lnh3dApAQCAtMCwwICsxLDggQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+DQorPENvbXBvc2l0ZSB4bWxuczpqPSJjbHItbmFtZXNwYWNlOmphdmEubGFuZyINCisJeG1sbnM6cHBlbD0iY2xyLW5hbWVzcGFjZTpvcmcuZWNsaXBzZS5wYXB5cnVzLnZpZXdzLnByb3BlcnRpZXMud2lkZ2V0cy5sYXlvdXQiDQorCXhtbG5zOng9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcveHd0IiB4bWxucz0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy94d3QvcHJlc2VudGF0aW9uIj4NCisJPENvbXBvc2l0ZS5sYXlvdXQ+DQorCQk8cHBlbDpQcm9wZXJ0aWVzTGF5b3V0PjwvcHBlbDpQcm9wZXJ0aWVzTGF5b3V0Pg0KKwk8L0NvbXBvc2l0ZS5sYXlvdXQ+DQorPC9Db21wb3NpdGU+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdWkvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnVpL3Jlc291cmNlcy9wcm9wZXJ0aWVzL3VpL1NpbmdsZUNvbmZvcm0ueHd0IGIvdWkvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnVpL3Jlc291cmNlcy9wcm9wZXJ0aWVzL3VpL1NpbmdsZUNvbmZvcm0ueHd0Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjI2ZWYwZDMKLS0tIC9kZXYvbnVsbAorKysgYi91aS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQudWkvcmVzb3VyY2VzL3Byb3BlcnRpZXMvdWkvU2luZ2xlQ29uZm9ybS54d3QKQEAgLTAsMCArMSwyOCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4NCis8Q29tcG9zaXRlIHhtbG5zOmo9ImNsci1uYW1lc3BhY2U6amF2YS5sYW5nIg0KKwl4bWxuczpwcGVsPSJjbHItbmFtZXNwYWNlOm9yZy5lY2xpcHNlLnBhcHlydXMudmlld3MucHJvcGVydGllcy53aWRnZXRzLmxheW91dCINCisJeG1sbnM6eD0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy94d3QiIHhtbG5zPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3h3dC9wcmVzZW50YXRpb24iDQorCXhtbG5zOnBwZT0iY2xyLW5hbWVzcGFjZTpvcmcuZWNsaXBzZS5wYXB5cnVzLnZpZXdzLnByb3BlcnRpZXMud2lkZ2V0cyI+DQorCTxDb21wb3NpdGUubGF5b3V0Pg0KKwkJPHBwZWw6UHJvcGVydGllc0xheW91dD48L3BwZWw6UHJvcGVydGllc0xheW91dD4NCisJPC9Db21wb3NpdGUubGF5b3V0Pg0KKwk8Q29tcG9zaXRlPg0KKwkJPENvbXBvc2l0ZS5sYXlvdXQ+DQorCQkJPHBwZWw6UHJvcGVydGllc0xheW91dD48L3BwZWw6UHJvcGVydGllc0xheW91dD4NCisJCTwvQ29tcG9zaXRlLmxheW91dD4NCisJCTxwcGU6U3RyaW5nRWRpdG9yIGlucHV0PSJ7QmluZGluZ30iIHByb3BlcnR5PSJVTUw6TmFtZWRFbGVtZW50Om5hbWUiPjwvcHBlOlN0cmluZ0VkaXRvcj4NCisJPC9Db21wb3NpdGU+DQorCTxDb21wb3NpdGU+DQorCQk8Q29tcG9zaXRlLmxheW91dD4NCisJCQk8cHBlbDpQcm9wZXJ0aWVzTGF5b3V0PjwvcHBlbDpQcm9wZXJ0aWVzTGF5b3V0Pg0KKwkJPC9Db21wb3NpdGUubGF5b3V0Pg0KKwkJPHBwZTpFbnVtQ29tYm8gaW5wdXQ9IntCaW5kaW5nfSIgcHJvcGVydHk9IlVNTDpOYW1lZEVsZW1lbnQ6dmlzaWJpbGl0eSI+PC9wcGU6RW51bUNvbWJvPg0KKwk8L0NvbXBvc2l0ZT4NCisJPENvbXBvc2l0ZT4NCisJCTxDb21wb3NpdGUubGF5b3V0Pg0KKwkJCTxwcGVsOlByb3BlcnRpZXNMYXlvdXQgbnVtQ29sdW1ucz0iMiI+PC9wcGVsOlByb3BlcnRpZXNMYXlvdXQ+DQorCQk8L0NvbXBvc2l0ZS5sYXlvdXQ+DQorCQk8cHBlOk11bHRpUmVmZXJlbmNlIGlucHV0PSJ7QmluZGluZ30iIHByb3BlcnR5PSJVTUw6RGVwZW5kZW5jeTpjbGllbnQiPjwvcHBlOk11bHRpUmVmZXJlbmNlPg0KKwkJPHBwZTpNdWx0aVJlZmVyZW5jZSBpbnB1dD0ie0JpbmRpbmd9IiBwcm9wZXJ0eT0iVU1MOkRlcGVuZGVuY3k6c3VwcGxpZXIiPjwvcHBlOk11bHRpUmVmZXJlbmNlPg0KKwk8L0NvbXBvc2l0ZT4NCis8L0NvbXBvc2l0ZT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS91aS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQudWkvcmVzb3VyY2VzL3Byb3BlcnRpZXMvdWkvU2luZ2xlQ29ubmVjdG9yUHJvcGVydHkueHd0IGIvdWkvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnVpL3Jlc291cmNlcy9wcm9wZXJ0aWVzL3VpL1NpbmdsZUNvbm5lY3RvclByb3BlcnR5Lnh3dApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5mNDllMjYyCi0tLSAvZGV2L251bGwKKysrIGIvdWkvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnVpL3Jlc291cmNlcy9wcm9wZXJ0aWVzL3VpL1NpbmdsZUNvbm5lY3RvclByb3BlcnR5Lnh3dApAQCAtMCwwICsxLDQ1IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/Pg0KKzxDb21wb3NpdGUgeG1sbnM6aj0iY2xyLW5hbWVzcGFjZTpqYXZhLmxhbmciDQorCXhtbG5zOnBwZWw9ImNsci1uYW1lc3BhY2U6b3JnLmVjbGlwc2UucGFweXJ1cy52aWV3cy5wcm9wZXJ0aWVzLndpZGdldHMubGF5b3V0Ig0KKwl4bWxuczp4PSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3h3dCIgeG1sbnM9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcveHd0L3ByZXNlbnRhdGlvbiINCisJeG1sbnM6cHBlPSJjbHItbmFtZXNwYWNlOm9yZy5lY2xpcHNlLnBhcHlydXMudmlld3MucHJvcGVydGllcy53aWRnZXRzIj4NCisJPENvbXBvc2l0ZS5sYXlvdXQ+DQorCQk8cHBlbDpQcm9wZXJ0aWVzTGF5b3V0PjwvcHBlbDpQcm9wZXJ0aWVzTGF5b3V0Pg0KKwk8L0NvbXBvc2l0ZS5sYXlvdXQ+DQorCTxDb21wb3NpdGU+DQorCQk8Q29tcG9zaXRlLmxheW91dD4NCisJCQk8cHBlbDpQcm9wZXJ0aWVzTGF5b3V0PjwvcHBlbDpQcm9wZXJ0aWVzTGF5b3V0Pg0KKwkJPC9Db21wb3NpdGUubGF5b3V0Pg0KKwkJPHBwZTpTdHJpbmdFZGl0b3IgaW5wdXQ9IntCaW5kaW5nfSIgcHJvcGVydHk9IlVNTDpOYW1lZEVsZW1lbnQ6bmFtZSI+PC9wcGU6U3RyaW5nRWRpdG9yPg0KKwk8L0NvbXBvc2l0ZT4NCisJPENvbXBvc2l0ZT4NCisJCTxDb21wb3NpdGUubGF5b3V0Pg0KKwkJCTxwcGVsOlByb3BlcnRpZXNMYXlvdXQgbnVtQ29sdW1ucz0iMiI+PC9wcGVsOlByb3BlcnRpZXNMYXlvdXQ+DQorCQk8L0NvbXBvc2l0ZS5sYXlvdXQ+DQorCQk8cHBlOkJvb2xlYW5SYWRpbyBpbnB1dD0ie0JpbmRpbmd9IiBwcm9wZXJ0eT0iVU1MOlByb3BlcnR5OmlzRGVyaXZlZCI+PC9wcGU6Qm9vbGVhblJhZGlvPg0KKwkJPHBwZTpCb29sZWFuUmFkaW8gaW5wdXQ9IntCaW5kaW5nfSIgcHJvcGVydHk9IlVNTDpQcm9wZXJ0eTppc0Rlcml2ZWRVbmlvbiI+PC9wcGU6Qm9vbGVhblJhZGlvPg0KKwkJPHBwZTpCb29sZWFuUmFkaW8gaW5wdXQ9IntCaW5kaW5nfSINCisJCQlwcm9wZXJ0eT0iVU1MOlJlZGVmaW5hYmxlRWxlbWVudDppc0xlYWYiPjwvcHBlOkJvb2xlYW5SYWRpbz4NCisJCTxwcGU6Qm9vbGVhblJhZGlvIGlucHV0PSJ7QmluZGluZ30iDQorCQkJcHJvcGVydHk9IlVNTDpNdWx0aXBsaWNpdHlFbGVtZW50OmlzT3JkZXJlZCI+PC9wcGU6Qm9vbGVhblJhZGlvPg0KKwkJPHBwZTpCb29sZWFuUmFkaW8gaW5wdXQ9IntCaW5kaW5nfSINCisJCQlwcm9wZXJ0eT0iVU1MOlN0cnVjdHVyYWxGZWF0dXJlOmlzUmVhZE9ubHkiPjwvcHBlOkJvb2xlYW5SYWRpbz4NCisJCTxwcGU6Qm9vbGVhblJhZGlvIGlucHV0PSJ7QmluZGluZ30iIHByb3BlcnR5PSJVTUw6RmVhdHVyZTppc1N0YXRpYyI+PC9wcGU6Qm9vbGVhblJhZGlvPg0KKwkJPHBwZTpCb29sZWFuUmFkaW8gaW5wdXQ9IntCaW5kaW5nfSINCisJCQlwcm9wZXJ0eT0iVU1MOk11bHRpcGxpY2l0eUVsZW1lbnQ6aXNVbmlxdWUiPjwvcHBlOkJvb2xlYW5SYWRpbz4NCisJPC9Db21wb3NpdGU+DQorCTxDb21wb3NpdGU+DQorCQk8Q29tcG9zaXRlLmxheW91dD4NCisJCQk8cHBlbDpQcm9wZXJ0aWVzTGF5b3V0IG51bUNvbHVtbnM9IjIiPjwvcHBlbDpQcm9wZXJ0aWVzTGF5b3V0Pg0KKwkJPC9Db21wb3NpdGUubGF5b3V0Pg0KKwkJPHBwZTpFbnVtQ29tYm8gaW5wdXQ9IntCaW5kaW5nfSIgcHJvcGVydHk9IlVNTDpQcm9wZXJ0eTphZ2dyZWdhdGlvbiI+PC9wcGU6RW51bUNvbWJvPg0KKwkJPHBwZTpFbnVtQ29tYm8gaW5wdXQ9IntCaW5kaW5nfSIgcHJvcGVydHk9IlVNTDpOYW1lZEVsZW1lbnQ6dmlzaWJpbGl0eSI+PC9wcGU6RW51bUNvbWJvPg0KKwk8L0NvbXBvc2l0ZT4NCisJPENvbXBvc2l0ZT4NCisJCTxDb21wb3NpdGUubGF5b3V0Pg0KKwkJCTxwcGVsOlByb3BlcnRpZXNMYXlvdXQ+PC9wcGVsOlByb3BlcnRpZXNMYXlvdXQ+DQorCQk8L0NvbXBvc2l0ZS5sYXlvdXQ+DQorCQk8cHBlOlJlZmVyZW5jZURpYWxvZyBpbnB1dD0ie0JpbmRpbmd9Ig0KKwkJCXByb3BlcnR5PSJTeXNNTDpCbG9ja3M6Q29ubmVjdG9yUHJvcGVydHk6Y29ubmVjdG9yIj48L3BwZTpSZWZlcmVuY2VEaWFsb2c+DQorCTwvQ29tcG9zaXRlPg0KKzwvQ29tcG9zaXRlPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3VpL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC51aS9yZXNvdXJjZXMvcHJvcGVydGllcy91aS9TaW5nbGVDb25zdHJhaW50QmxvY2sueHd0IGIvdWkvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnVpL3Jlc291cmNlcy9wcm9wZXJ0aWVzL3VpL1NpbmdsZUNvbnN0cmFpbnRCbG9jay54d3QKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uNmNjNGUzZAotLS0gL2Rldi9udWxsCisrKyBiL3VpL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC51aS9yZXNvdXJjZXMvcHJvcGVydGllcy91aS9TaW5nbGVDb25zdHJhaW50QmxvY2sueHd0CkBAIC0wLDAgKzEsMzIgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+DQorPENvbXBvc2l0ZSB4bWxuczpqPSJjbHItbmFtZXNwYWNlOmphdmEubGFuZyINCisJeG1sbnM6cHBlbD0iY2xyLW5hbWVzcGFjZTpvcmcuZWNsaXBzZS5wYXB5cnVzLnZpZXdzLnByb3BlcnRpZXMud2lkZ2V0cy5sYXlvdXQiDQorCXhtbG5zOng9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcveHd0IiB4bWxucz0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy94d3QvcHJlc2VudGF0aW9uIg0KKwl4bWxuczpwcGU9ImNsci1uYW1lc3BhY2U6b3JnLmVjbGlwc2UucGFweXJ1cy52aWV3cy5wcm9wZXJ0aWVzLndpZGdldHMiPg0KKwk8Q29tcG9zaXRlLmxheW91dD4NCisJCTxwcGVsOlByb3BlcnRpZXNMYXlvdXQ+PC9wcGVsOlByb3BlcnRpZXNMYXlvdXQ+DQorCTwvQ29tcG9zaXRlLmxheW91dD4NCisJPENvbXBvc2l0ZT4NCisJCTxDb21wb3NpdGUubGF5b3V0Pg0KKwkJCTxwcGVsOlByb3BlcnRpZXNMYXlvdXQ+PC9wcGVsOlByb3BlcnRpZXNMYXlvdXQ+DQorCQk8L0NvbXBvc2l0ZS5sYXlvdXQ+DQorCQk8cHBlOlN0cmluZ0VkaXRvciBpbnB1dD0ie0JpbmRpbmd9IiBwcm9wZXJ0eT0iVU1MOk5hbWVkRWxlbWVudDpuYW1lIj48L3BwZTpTdHJpbmdFZGl0b3I+DQorCTwvQ29tcG9zaXRlPg0KKwk8Q29tcG9zaXRlPg0KKwkJPENvbXBvc2l0ZS5sYXlvdXQ+DQorCQkJPHBwZWw6UHJvcGVydGllc0xheW91dCBudW1Db2x1bW5zPSIyIj48L3BwZWw6UHJvcGVydGllc0xheW91dD4NCisJCTwvQ29tcG9zaXRlLmxheW91dD4NCisJCTxwcGU6Qm9vbGVhblJhZGlvIGlucHV0PSJ7QmluZGluZ30iIHByb3BlcnR5PSJVTUw6Q2xhc3NpZmllcjppc0Fic3RyYWN0Ij48L3BwZTpCb29sZWFuUmFkaW8+DQorCQk8cHBlOkJvb2xlYW5SYWRpbyBpbnB1dD0ie0JpbmRpbmd9IiBwcm9wZXJ0eT0iVU1MOkNsYXNzOmlzQWN0aXZlIj48L3BwZTpCb29sZWFuUmFkaW8+DQorCQkNCisJCTxwcGU6Qm9vbGVhblJhZGlvIGlucHV0PSJ7QmluZGluZ30iCXByb3BlcnR5PSJTeXNNTDpDb25zdHJhaW50QmxvY2tzOkNvbnN0cmFpbnRCbG9jazppc0VuY2Fwc3VsYXRlZCI+PC9wcGU6Qm9vbGVhblJhZGlvPg0KKwkJPHBwZTpCb29sZWFuUmFkaW8gaW5wdXQ9IntCaW5kaW5nfSIJcHJvcGVydHk9IlN5c01MOkJsb2NrczpCbG9jazppc0VuY2Fwc3VsYXRlZCI+PC9wcGU6Qm9vbGVhblJhZGlvPg0KKwkJPHBwZTpCb29sZWFuUmFkaW8gaW5wdXQ9IntCaW5kaW5nfSIJcHJvcGVydHk9IlVNTDpSZWRlZmluYWJsZUVsZW1lbnQ6aXNMZWFmIj48L3BwZTpCb29sZWFuUmFkaW8+DQorCTwvQ29tcG9zaXRlPg0KKwk8Q29tcG9zaXRlPg0KKwkJPENvbXBvc2l0ZS5sYXlvdXQ+DQorCQkJPHBwZWw6UHJvcGVydGllc0xheW91dD48L3BwZWw6UHJvcGVydGllc0xheW91dD4NCisJCTwvQ29tcG9zaXRlLmxheW91dD4NCisJCTxwcGU6RW51bUNvbWJvIGlucHV0PSJ7QmluZGluZ30iIHByb3BlcnR5PSJVTUw6TmFtZWRFbGVtZW50OnZpc2liaWxpdHkiPjwvcHBlOkVudW1Db21ibz4NCisJPC9Db21wb3NpdGU+DQorPC9Db21wb3NpdGU+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdWkvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnVpL3Jlc291cmNlcy9wcm9wZXJ0aWVzL3VpL1NpbmdsZUNvbnRpbnVvdXMueHd0IGIvdWkvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnVpL3Jlc291cmNlcy9wcm9wZXJ0aWVzL3VpL1NpbmdsZUNvbnRpbnVvdXMueHd0Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmQ0YmI3MWYKLS0tIC9kZXYvbnVsbAorKysgYi91aS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQudWkvcmVzb3VyY2VzL3Byb3BlcnRpZXMvdWkvU2luZ2xlQ29udGludW91cy54d3QKQEAgLTAsMCArMSw0MyBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4NCis8Q29tcG9zaXRlIHhtbG5zOmo9ImNsci1uYW1lc3BhY2U6amF2YS5sYW5nIg0KKwl4bWxuczpwcGVsPSJjbHItbmFtZXNwYWNlOm9yZy5lY2xpcHNlLnBhcHlydXMudmlld3MucHJvcGVydGllcy53aWRnZXRzLmxheW91dCINCisJeG1sbnM6eD0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy94d3QiIHhtbG5zPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3h3dC9wcmVzZW50YXRpb24iDQorCXhtbG5zOnBwZT0iY2xyLW5hbWVzcGFjZTpvcmcuZWNsaXBzZS5wYXB5cnVzLnZpZXdzLnByb3BlcnRpZXMud2lkZ2V0cyI+DQorCTxDb21wb3NpdGUubGF5b3V0Pg0KKwkJPHBwZWw6UHJvcGVydGllc0xheW91dD48L3BwZWw6UHJvcGVydGllc0xheW91dD4NCisJPC9Db21wb3NpdGUubGF5b3V0Pg0KKwk8Q29tcG9zaXRlPg0KKwkJPENvbXBvc2l0ZS5sYXlvdXQ+DQorCQkJPHBwZWw6UHJvcGVydGllc0xheW91dD48L3BwZWw6UHJvcGVydGllc0xheW91dD4NCisJCTwvQ29tcG9zaXRlLmxheW91dD4NCisJCTxwcGU6U3RyaW5nRWRpdG9yIGlucHV0PSJ7QmluZGluZ30iIHByb3BlcnR5PSJVTUw6TmFtZWRFbGVtZW50Om5hbWUiPjwvcHBlOlN0cmluZ0VkaXRvcj4NCisJPC9Db21wb3NpdGU+DQorCTxDb21wb3NpdGU+DQorCQk8Q29tcG9zaXRlLmxheW91dD4NCisJCQk8cHBlbDpQcm9wZXJ0aWVzTGF5b3V0IG51bUNvbHVtbnM9IjIiPjwvcHBlbDpQcm9wZXJ0aWVzTGF5b3V0Pg0KKwkJPC9Db21wb3NpdGUubGF5b3V0Pg0KKwkJPHBwZTpCb29sZWFuUmFkaW8gaW5wdXQ9IntCaW5kaW5nfSIgcHJvcGVydHk9IlVNTDpQYXJhbWV0ZXI6aXNFeGNlcHRpb24iPjwvcHBlOkJvb2xlYW5SYWRpbz4NCisJCTxwcGU6Qm9vbGVhblJhZGlvIGlucHV0PSJ7QmluZGluZ30iDQorCQkJcHJvcGVydHk9IlVNTDpSZWRlZmluYWJsZUVsZW1lbnQ6aXNMZWFmIj48L3BwZTpCb29sZWFuUmFkaW8+DQorCQk8cHBlOkJvb2xlYW5SYWRpbyBpbnB1dD0ie0JpbmRpbmd9Ig0KKwkJCXByb3BlcnR5PSJVTUw6TXVsdGlwbGljaXR5RWxlbWVudDppc09yZGVyZWQiPjwvcHBlOkJvb2xlYW5SYWRpbz4NCisJCTxwcGU6Qm9vbGVhblJhZGlvIGlucHV0PSJ7QmluZGluZ30iIHByb3BlcnR5PSJVTUw6UGFyYW1ldGVyOmlzU3RyZWFtIj48L3BwZTpCb29sZWFuUmFkaW8+DQorCQk8cHBlOkJvb2xlYW5SYWRpbyBpbnB1dD0ie0JpbmRpbmd9Ig0KKwkJCXByb3BlcnR5PSJVTUw6TXVsdGlwbGljaXR5RWxlbWVudDppc1VuaXF1ZSI+PC9wcGU6Qm9vbGVhblJhZGlvPg0KKwk8L0NvbXBvc2l0ZT4NCisJPENvbXBvc2l0ZT4NCisJCTxDb21wb3NpdGUubGF5b3V0Pg0KKwkJCTxwcGVsOlByb3BlcnRpZXNMYXlvdXQgbnVtQ29sdW1ucz0iMiI+PC9wcGVsOlByb3BlcnRpZXNMYXlvdXQ+DQorCQk8L0NvbXBvc2l0ZS5sYXlvdXQ+DQorCQk8cHBlOkVudW1Db21ibyBpbnB1dD0ie0JpbmRpbmd9IiBwcm9wZXJ0eT0iVU1MOlBhcmFtZXRlcjpkaXJlY3Rpb24iPjwvcHBlOkVudW1Db21ibz4NCisJCTxwcGU6RW51bUNvbWJvIGlucHV0PSJ7QmluZGluZ30iIHByb3BlcnR5PSJVTUw6UGFyYW1ldGVyOmVmZmVjdCI+PC9wcGU6RW51bUNvbWJvPg0KKwkJPHBwZTpFbnVtQ29tYm8gaW5wdXQ9IntCaW5kaW5nfSIgcHJvcGVydHk9IlVNTDpOYW1lZEVsZW1lbnQ6dmlzaWJpbGl0eSI+PC9wcGU6RW51bUNvbWJvPg0KKwk8L0NvbXBvc2l0ZT4NCisJPENvbXBvc2l0ZT4NCisJCTxDb21wb3NpdGUubGF5b3V0Pg0KKwkJCTxwcGVsOlByb3BlcnRpZXNMYXlvdXQ+PC9wcGVsOlByb3BlcnRpZXNMYXlvdXQ+DQorCQk8L0NvbXBvc2l0ZS5sYXlvdXQ+DQorCQk8cHBlOlJlZmVyZW5jZURpYWxvZyBpbnB1dD0ie0JpbmRpbmd9Ig0KKwkJCXByb3BlcnR5PSJTeXNNTDpBY3Rpdml0aWVzOlJhdGU6cmF0ZSI+PC9wcGU6UmVmZXJlbmNlRGlhbG9nPg0KKwk8L0NvbXBvc2l0ZT4NCis8L0NvbXBvc2l0ZT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS91aS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQudWkvcmVzb3VyY2VzL3Byb3BlcnRpZXMvdWkvU2luZ2xlQ29udHJvbE9wZXJhdG9yLnh3dCBiL3VpL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC51aS9yZXNvdXJjZXMvcHJvcGVydGllcy91aS9TaW5nbGVDb250cm9sT3BlcmF0b3IueHd0Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjI4ZjZkY2IKLS0tIC9kZXYvbnVsbAorKysgYi91aS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQudWkvcmVzb3VyY2VzL3Byb3BlcnRpZXMvdWkvU2luZ2xlQ29udHJvbE9wZXJhdG9yLnh3dApAQCAtMCwwICsxLDM0IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/Pg0KKzxDb21wb3NpdGUgeG1sbnM6aj0iY2xyLW5hbWVzcGFjZTpqYXZhLmxhbmciDQorCXhtbG5zOnBwZWw9ImNsci1uYW1lc3BhY2U6b3JnLmVjbGlwc2UucGFweXJ1cy52aWV3cy5wcm9wZXJ0aWVzLndpZGdldHMubGF5b3V0Ig0KKwl4bWxuczp4PSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3h3dCIgeG1sbnM9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcveHd0L3ByZXNlbnRhdGlvbiINCisJeG1sbnM6cHBlPSJjbHItbmFtZXNwYWNlOm9yZy5lY2xpcHNlLnBhcHlydXMudmlld3MucHJvcGVydGllcy53aWRnZXRzIj4NCisJPENvbXBvc2l0ZS5sYXlvdXQ+DQorCQk8cHBlbDpQcm9wZXJ0aWVzTGF5b3V0PjwvcHBlbDpQcm9wZXJ0aWVzTGF5b3V0Pg0KKwk8L0NvbXBvc2l0ZS5sYXlvdXQ+DQorCTxDb21wb3NpdGU+DQorCQk8Q29tcG9zaXRlLmxheW91dD4NCisJCQk8cHBlbDpQcm9wZXJ0aWVzTGF5b3V0PjwvcHBlbDpQcm9wZXJ0aWVzTGF5b3V0Pg0KKwkJPC9Db21wb3NpdGUubGF5b3V0Pg0KKwkJPHBwZTpTdHJpbmdFZGl0b3IgaW5wdXQ9IntCaW5kaW5nfSIgcHJvcGVydHk9IlVNTDpOYW1lZEVsZW1lbnQ6bmFtZSI+PC9wcGU6U3RyaW5nRWRpdG9yPg0KKwk8L0NvbXBvc2l0ZT4NCisJPENvbXBvc2l0ZT4NCisJCTxDb21wb3NpdGUubGF5b3V0Pg0KKwkJCTxwcGVsOlByb3BlcnRpZXNMYXlvdXQgbnVtQ29sdW1ucz0iMiI+PC9wcGVsOlByb3BlcnRpZXNMYXlvdXQ+DQorCQk8L0NvbXBvc2l0ZS5sYXlvdXQ+DQorCQk8cHBlOkJvb2xlYW5SYWRpbyBpbnB1dD0ie0JpbmRpbmd9IiBwcm9wZXJ0eT0iVU1MOkNsYXNzaWZpZXI6aXNBYnN0cmFjdCI+PC9wcGU6Qm9vbGVhblJhZGlvPg0KKwkJPHBwZTpCb29sZWFuUmFkaW8gaW5wdXQ9IntCaW5kaW5nfSIgcHJvcGVydHk9IlVNTDpDbGFzczppc0FjdGl2ZSI+PC9wcGU6Qm9vbGVhblJhZGlvPg0KKwkJPHBwZTpCb29sZWFuUmFkaW8gaW5wdXQ9IntCaW5kaW5nfSINCisJCQlwcm9wZXJ0eT0iVU1MOlJlZGVmaW5hYmxlRWxlbWVudDppc0xlYWYiPjwvcHBlOkJvb2xlYW5SYWRpbz4NCisJCTxwcGU6Qm9vbGVhblJhZGlvIGlucHV0PSJ7QmluZGluZ30iIHByb3BlcnR5PSJVTUw6T3BlcmF0aW9uOmlzUXVlcnkiPjwvcHBlOkJvb2xlYW5SYWRpbz4NCisJCTxwcGU6Qm9vbGVhblJhZGlvIGlucHV0PSJ7QmluZGluZ30iIHByb3BlcnR5PSJVTUw6QmVoYXZpb3I6aXNSZWVudHJhbnQiPjwvcHBlOkJvb2xlYW5SYWRpbz4NCisJCTxwcGU6Qm9vbGVhblJhZGlvIGlucHV0PSJ7QmluZGluZ30iIHByb3BlcnR5PSJVTUw6RmVhdHVyZTppc1N0YXRpYyI+PC9wcGU6Qm9vbGVhblJhZGlvPg0KKwk8L0NvbXBvc2l0ZT4NCisJPENvbXBvc2l0ZT4NCisJCTxDb21wb3NpdGUubGF5b3V0Pg0KKwkJCTxwcGVsOlByb3BlcnRpZXNMYXlvdXQgbnVtQ29sdW1ucz0iMiI+PC9wcGVsOlByb3BlcnRpZXNMYXlvdXQ+DQorCQk8L0NvbXBvc2l0ZS5sYXlvdXQ+DQorCQk8cHBlOkVudW1Db21ibyBpbnB1dD0ie0JpbmRpbmd9IiBwcm9wZXJ0eT0iVU1MOkJlaGF2aW9yYWxGZWF0dXJlOmNvbmN1cnJlbmN5Ij48L3BwZTpFbnVtQ29tYm8+DQorCQk8cHBlOkVudW1Db21ibyBpbnB1dD0ie0JpbmRpbmd9IiBwcm9wZXJ0eT0iVU1MOk5hbWVkRWxlbWVudDp2aXNpYmlsaXR5Ij48L3BwZTpFbnVtQ29tYm8+DQorCTwvQ29tcG9zaXRlPg0KKzwvQ29tcG9zaXRlPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3VpL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC51aS9yZXNvdXJjZXMvcHJvcGVydGllcy91aS9TaW5nbGVDb3B5Lnh3dCBiL3VpL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC51aS9yZXNvdXJjZXMvcHJvcGVydGllcy91aS9TaW5nbGVDb3B5Lnh3dApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi45YmE0Y2U4Ci0tLSAvZGV2L251bGwKKysrIGIvdWkvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnVpL3Jlc291cmNlcy9wcm9wZXJ0aWVzL3VpL1NpbmdsZUNvcHkueHd0CkBAIC0wLDAgKzEsOCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4NCis8Q29tcG9zaXRlIHhtbG5zOmo9ImNsci1uYW1lc3BhY2U6amF2YS5sYW5nIg0KKwl4bWxuczpwcGVsPSJjbHItbmFtZXNwYWNlOm9yZy5lY2xpcHNlLnBhcHlydXMudmlld3MucHJvcGVydGllcy53aWRnZXRzLmxheW91dCINCisJeG1sbnM6eD0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy94d3QiIHhtbG5zPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3h3dC9wcmVzZW50YXRpb24iPg0KKwk8Q29tcG9zaXRlLmxheW91dD4NCisJCTxwcGVsOlByb3BlcnRpZXNMYXlvdXQ+PC9wcGVsOlByb3BlcnRpZXNMYXlvdXQ+DQorCTwvQ29tcG9zaXRlLmxheW91dD4NCis8L0NvbXBvc2l0ZT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS91aS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQudWkvcmVzb3VyY2VzL3Byb3BlcnRpZXMvdWkvU2luZ2xlRGVwcmVjYXRlZC54d3QgYi91aS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQudWkvcmVzb3VyY2VzL3Byb3BlcnRpZXMvdWkvU2luZ2xlRGVwcmVjYXRlZC54d3QKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uZmY4NTIxYgotLS0gL2Rldi9udWxsCisrKyBiL3VpL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC51aS9yZXNvdXJjZXMvcHJvcGVydGllcy91aS9TaW5nbGVEZXByZWNhdGVkLnh3dApAQCAtMCwwICsxLDE3IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/Pg0KKzxDb21wb3NpdGUNCisJeG1sbnM6cHBlbD0iY2xyLW5hbWVzcGFjZTpvcmcuZWNsaXBzZS5wYXB5cnVzLnZpZXdzLnByb3BlcnRpZXMud2lkZ2V0cy5sYXlvdXQiDQorCXhtbG5zOnBwZT0iY2xyLW5hbWVzcGFjZTpvcmcuZWNsaXBzZS5wYXB5cnVzLnZpZXdzLnByb3BlcnRpZXMud2lkZ2V0cyINCisJeG1sbnM6eD0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy94d3QiIHhtbG5zOmo9ImNsci1uYW1lc3BhY2U6amF2YS5sYW5nIg0KKwl4bWxucz0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy94d3QvcHJlc2VudGF0aW9uIj4NCisJPENvbXBvc2l0ZS5sYXlvdXQ+DQorCQk8cHBlbDpQcm9wZXJ0aWVzTGF5b3V0PjwvcHBlbDpQcm9wZXJ0aWVzTGF5b3V0Pg0KKwk8L0NvbXBvc2l0ZS5sYXlvdXQ+DQorCTxDb21wb3NpdGU+DQorCQk8Q29tcG9zaXRlLmxheW91dD4NCisJCQk8cHBlbDpQcm9wZXJ0aWVzTGF5b3V0IG51bUNvbHVtbnM9IjEiPjwvcHBlbDpQcm9wZXJ0aWVzTGF5b3V0Pg0KKwkJPC9Db21wb3NpdGUubGF5b3V0Pg0KKwkJPHBwZTpTdHJpbmdFZGl0b3IgaW5wdXQ9IntCaW5kaW5nfSINCisJCQlwcm9wZXJ0eT0iU3lzTUw6RGVwcmVjYXRlZEVsZW1lbnRzOkRlcHJlY2F0ZWQ6ZGVwcmVjYXRlZFJlYXNvbiI+PC9wcGU6U3RyaW5nRWRpdG9yPg0KKwk8L0NvbXBvc2l0ZT4NCis8L0NvbXBvc2l0ZT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS91aS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQudWkvcmVzb3VyY2VzL3Byb3BlcnRpZXMvdWkvU2luZ2xlRGVyaXZlUmVxdC54d3QgYi91aS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQudWkvcmVzb3VyY2VzL3Byb3BlcnRpZXMvdWkvU2luZ2xlRGVyaXZlUmVxdC54d3QKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uOWJhNGNlOAotLS0gL2Rldi9udWxsCisrKyBiL3VpL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC51aS9yZXNvdXJjZXMvcHJvcGVydGllcy91aS9TaW5nbGVEZXJpdmVSZXF0Lnh3dApAQCAtMCwwICsxLDggQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+DQorPENvbXBvc2l0ZSB4bWxuczpqPSJjbHItbmFtZXNwYWNlOmphdmEubGFuZyINCisJeG1sbnM6cHBlbD0iY2xyLW5hbWVzcGFjZTpvcmcuZWNsaXBzZS5wYXB5cnVzLnZpZXdzLnByb3BlcnRpZXMud2lkZ2V0cy5sYXlvdXQiDQorCXhtbG5zOng9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcveHd0IiB4bWxucz0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy94d3QvcHJlc2VudGF0aW9uIj4NCisJPENvbXBvc2l0ZS5sYXlvdXQ+DQorCQk8cHBlbDpQcm9wZXJ0aWVzTGF5b3V0PjwvcHBlbDpQcm9wZXJ0aWVzTGF5b3V0Pg0KKwk8L0NvbXBvc2l0ZS5sYXlvdXQ+DQorPC9Db21wb3NpdGU+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdWkvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnVpL3Jlc291cmNlcy9wcm9wZXJ0aWVzL3VpL1NpbmdsZURpcmVjdGVkRmVhdHVyZS54d3QgYi91aS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQudWkvcmVzb3VyY2VzL3Byb3BlcnRpZXMvdWkvU2luZ2xlRGlyZWN0ZWRGZWF0dXJlLnh3dApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi4wNTZmNmY4Ci0tLSAvZGV2L251bGwKKysrIGIvdWkvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnVpL3Jlc291cmNlcy9wcm9wZXJ0aWVzL3VpL1NpbmdsZURpcmVjdGVkRmVhdHVyZS54d3QKQEAgLTAsMCArMSwxNiBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4NCis8Q29tcG9zaXRlIHhtbG5zOmo9ImNsci1uYW1lc3BhY2U6amF2YS5sYW5nIg0KKwl4bWxuczpwcGVsPSJjbHItbmFtZXNwYWNlOm9yZy5lY2xpcHNlLnBhcHlydXMudmlld3MucHJvcGVydGllcy53aWRnZXRzLmxheW91dCINCisJeG1sbnM6eD0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy94d3QiIHhtbG5zPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3h3dC9wcmVzZW50YXRpb24iDQorCXhtbG5zOnBwZT0iY2xyLW5hbWVzcGFjZTpvcmcuZWNsaXBzZS5wYXB5cnVzLnZpZXdzLnByb3BlcnRpZXMud2lkZ2V0cyI+DQorCTxDb21wb3NpdGUubGF5b3V0Pg0KKwkJPHBwZWw6UHJvcGVydGllc0xheW91dD48L3BwZWw6UHJvcGVydGllc0xheW91dD4NCisJPC9Db21wb3NpdGUubGF5b3V0Pg0KKwk8Q29tcG9zaXRlPg0KKwkJPENvbXBvc2l0ZS5sYXlvdXQ+DQorCQkJPHBwZWw6UHJvcGVydGllc0xheW91dCBudW1Db2x1bW5zPSIxIj48L3BwZWw6UHJvcGVydGllc0xheW91dD4NCisJCTwvQ29tcG9zaXRlLmxheW91dD4NCisJCTxwcGU6RW51bUNvbWJvIGlucHV0PSJ7QmluZGluZ30iDQorCQkJcHJvcGVydHk9IlN5c01MOlBvcnRzYW5kRmxvd3M6RGlyZWN0ZWRGZWF0dXJlOmZlYXR1cmVEaXJlY3Rpb24iPjwvcHBlOkVudW1Db21ibz4NCisJPC9Db21wb3NpdGU+DQorPC9Db21wb3NpdGU+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdWkvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnVpL3Jlc291cmNlcy9wcm9wZXJ0aWVzL3VpL1NpbmdsZURpcmVjdGVkUmVsYXRpb25zaGlwUHJvcGVydHlQYXRoLnh3dCBiL3VpL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC51aS9yZXNvdXJjZXMvcHJvcGVydGllcy91aS9TaW5nbGVEaXJlY3RlZFJlbGF0aW9uc2hpcFByb3BlcnR5UGF0aC54d3QKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uOTgzNjE1MwotLS0gL2Rldi9udWxsCisrKyBiL3VpL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC51aS9yZXNvdXJjZXMvcHJvcGVydGllcy91aS9TaW5nbGVEaXJlY3RlZFJlbGF0aW9uc2hpcFByb3BlcnR5UGF0aC54d3QKQEAgLTAsMCArMSwyNyBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4NCis8Q29tcG9zaXRlIHhtbG5zOmo9ImNsci1uYW1lc3BhY2U6amF2YS5sYW5nIg0KKwl4bWxuczpwcGVsPSJjbHItbmFtZXNwYWNlOm9yZy5lY2xpcHNlLnBhcHlydXMudmlld3MucHJvcGVydGllcy53aWRnZXRzLmxheW91dCINCisJeG1sbnM6eD0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy94d3QiIHhtbG5zPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3h3dC9wcmVzZW50YXRpb24iDQorCXhtbG5zOnBwZT0iY2xyLW5hbWVzcGFjZTpvcmcuZWNsaXBzZS5wYXB5cnVzLnZpZXdzLnByb3BlcnRpZXMud2lkZ2V0cyI+DQorCTxDb21wb3NpdGUubGF5b3V0Pg0KKwkJPHBwZWw6UHJvcGVydGllc0xheW91dD48L3BwZWw6UHJvcGVydGllc0xheW91dD4NCisJPC9Db21wb3NpdGUubGF5b3V0Pg0KKwk8Q29tcG9zaXRlPg0KKwkJPENvbXBvc2l0ZS5sYXlvdXQ+DQorCQkJPHBwZWw6UHJvcGVydGllc0xheW91dCBudW1Db2x1bW5zPSIxIj48L3BwZWw6UHJvcGVydGllc0xheW91dD4NCisJCTwvQ29tcG9zaXRlLmxheW91dD4NCisJCTxwcGU6UmVmZXJlbmNlRGlhbG9nIGlucHV0PSJ7QmluZGluZ30iDQorCQkJcHJvcGVydHk9IlN5c01MOkJsb2NrczpEaXJlY3RlZFJlbGF0aW9uc2hpcFByb3BlcnR5UGF0aDpzb3VyY2VDb250ZXh0Ij48L3BwZTpSZWZlcmVuY2VEaWFsb2c+DQorCQk8cHBlOlJlZmVyZW5jZURpYWxvZyBpbnB1dD0ie0JpbmRpbmd9Ig0KKwkJCXByb3BlcnR5PSJTeXNNTDpCbG9ja3M6RGlyZWN0ZWRSZWxhdGlvbnNoaXBQcm9wZXJ0eVBhdGg6dGFyZ2V0Q29udGV4dCI+PC9wcGU6UmVmZXJlbmNlRGlhbG9nPg0KKwk8L0NvbXBvc2l0ZT4NCisJPENvbXBvc2l0ZT4NCisJCTxDb21wb3NpdGUubGF5b3V0Pg0KKwkJCTxwcGVsOlByb3BlcnRpZXNMYXlvdXQgbnVtQ29sdW1ucz0iMSI+PC9wcGVsOlByb3BlcnRpZXNMYXlvdXQ+DQorCQk8L0NvbXBvc2l0ZS5sYXlvdXQ+DQorCQk8cHBlOk11bHRpUmVmZXJlbmNlIGlucHV0PSJ7QmluZGluZ30iDQorCQkJcHJvcGVydHk9IlN5c01MOkJsb2NrczpEaXJlY3RlZFJlbGF0aW9uc2hpcFByb3BlcnR5UGF0aDpzb3VyY2VQcm9wZXJ0eVBhdGgiPjwvcHBlOk11bHRpUmVmZXJlbmNlPg0KKwkJPHBwZTpNdWx0aVJlZmVyZW5jZSBpbnB1dD0ie0JpbmRpbmd9Ig0KKwkJCXByb3BlcnR5PSJTeXNNTDpCbG9ja3M6RGlyZWN0ZWRSZWxhdGlvbnNoaXBQcm9wZXJ0eVBhdGg6dGFyZ2V0UHJvcGVydHlQYXRoIj48L3BwZTpNdWx0aVJlZmVyZW5jZT4NCisJPC9Db21wb3NpdGU+DQorPC9Db21wb3NpdGU+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdWkvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnVpL3Jlc291cmNlcy9wcm9wZXJ0aWVzL3VpL1NpbmdsZURpc2NyZXRlLnh3dCBiL3VpL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC51aS9yZXNvdXJjZXMvcHJvcGVydGllcy91aS9TaW5nbGVEaXNjcmV0ZS54d3QKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uZDRiYjcxZgotLS0gL2Rldi9udWxsCisrKyBiL3VpL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC51aS9yZXNvdXJjZXMvcHJvcGVydGllcy91aS9TaW5nbGVEaXNjcmV0ZS54d3QKQEAgLTAsMCArMSw0MyBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4NCis8Q29tcG9zaXRlIHhtbG5zOmo9ImNsci1uYW1lc3BhY2U6amF2YS5sYW5nIg0KKwl4bWxuczpwcGVsPSJjbHItbmFtZXNwYWNlOm9yZy5lY2xpcHNlLnBhcHlydXMudmlld3MucHJvcGVydGllcy53aWRnZXRzLmxheW91dCINCisJeG1sbnM6eD0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy94d3QiIHhtbG5zPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3h3dC9wcmVzZW50YXRpb24iDQorCXhtbG5zOnBwZT0iY2xyLW5hbWVzcGFjZTpvcmcuZWNsaXBzZS5wYXB5cnVzLnZpZXdzLnByb3BlcnRpZXMud2lkZ2V0cyI+DQorCTxDb21wb3NpdGUubGF5b3V0Pg0KKwkJPHBwZWw6UHJvcGVydGllc0xheW91dD48L3BwZWw6UHJvcGVydGllc0xheW91dD4NCisJPC9Db21wb3NpdGUubGF5b3V0Pg0KKwk8Q29tcG9zaXRlPg0KKwkJPENvbXBvc2l0ZS5sYXlvdXQ+DQorCQkJPHBwZWw6UHJvcGVydGllc0xheW91dD48L3BwZWw6UHJvcGVydGllc0xheW91dD4NCisJCTwvQ29tcG9zaXRlLmxheW91dD4NCisJCTxwcGU6U3RyaW5nRWRpdG9yIGlucHV0PSJ7QmluZGluZ30iIHByb3BlcnR5PSJVTUw6TmFtZWRFbGVtZW50Om5hbWUiPjwvcHBlOlN0cmluZ0VkaXRvcj4NCisJPC9Db21wb3NpdGU+DQorCTxDb21wb3NpdGU+DQorCQk8Q29tcG9zaXRlLmxheW91dD4NCisJCQk8cHBlbDpQcm9wZXJ0aWVzTGF5b3V0IG51bUNvbHVtbnM9IjIiPjwvcHBlbDpQcm9wZXJ0aWVzTGF5b3V0Pg0KKwkJPC9Db21wb3NpdGUubGF5b3V0Pg0KKwkJPHBwZTpCb29sZWFuUmFkaW8gaW5wdXQ9IntCaW5kaW5nfSIgcHJvcGVydHk9IlVNTDpQYXJhbWV0ZXI6aXNFeGNlcHRpb24iPjwvcHBlOkJvb2xlYW5SYWRpbz4NCisJCTxwcGU6Qm9vbGVhblJhZGlvIGlucHV0PSJ7QmluZGluZ30iDQorCQkJcHJvcGVydHk9IlVNTDpSZWRlZmluYWJsZUVsZW1lbnQ6aXNMZWFmIj48L3BwZTpCb29sZWFuUmFkaW8+DQorCQk8cHBlOkJvb2xlYW5SYWRpbyBpbnB1dD0ie0JpbmRpbmd9Ig0KKwkJCXByb3BlcnR5PSJVTUw6TXVsdGlwbGljaXR5RWxlbWVudDppc09yZGVyZWQiPjwvcHBlOkJvb2xlYW5SYWRpbz4NCisJCTxwcGU6Qm9vbGVhblJhZGlvIGlucHV0PSJ7QmluZGluZ30iIHByb3BlcnR5PSJVTUw6UGFyYW1ldGVyOmlzU3RyZWFtIj48L3BwZTpCb29sZWFuUmFkaW8+DQorCQk8cHBlOkJvb2xlYW5SYWRpbyBpbnB1dD0ie0JpbmRpbmd9Ig0KKwkJCXByb3BlcnR5PSJVTUw6TXVsdGlwbGljaXR5RWxlbWVudDppc1VuaXF1ZSI+PC9wcGU6Qm9vbGVhblJhZGlvPg0KKwk8L0NvbXBvc2l0ZT4NCisJPENvbXBvc2l0ZT4NCisJCTxDb21wb3NpdGUubGF5b3V0Pg0KKwkJCTxwcGVsOlByb3BlcnRpZXNMYXlvdXQgbnVtQ29sdW1ucz0iMiI+PC9wcGVsOlByb3BlcnRpZXNMYXlvdXQ+DQorCQk8L0NvbXBvc2l0ZS5sYXlvdXQ+DQorCQk8cHBlOkVudW1Db21ibyBpbnB1dD0ie0JpbmRpbmd9IiBwcm9wZXJ0eT0iVU1MOlBhcmFtZXRlcjpkaXJlY3Rpb24iPjwvcHBlOkVudW1Db21ibz4NCisJCTxwcGU6RW51bUNvbWJvIGlucHV0PSJ7QmluZGluZ30iIHByb3BlcnR5PSJVTUw6UGFyYW1ldGVyOmVmZmVjdCI+PC9wcGU6RW51bUNvbWJvPg0KKwkJPHBwZTpFbnVtQ29tYm8gaW5wdXQ9IntCaW5kaW5nfSIgcHJvcGVydHk9IlVNTDpOYW1lZEVsZW1lbnQ6dmlzaWJpbGl0eSI+PC9wcGU6RW51bUNvbWJvPg0KKwk8L0NvbXBvc2l0ZT4NCisJPENvbXBvc2l0ZT4NCisJCTxDb21wb3NpdGUubGF5b3V0Pg0KKwkJCTxwcGVsOlByb3BlcnRpZXNMYXlvdXQ+PC9wcGVsOlByb3BlcnRpZXNMYXlvdXQ+DQorCQk8L0NvbXBvc2l0ZS5sYXlvdXQ+DQorCQk8cHBlOlJlZmVyZW5jZURpYWxvZyBpbnB1dD0ie0JpbmRpbmd9Ig0KKwkJCXByb3BlcnR5PSJTeXNNTDpBY3Rpdml0aWVzOlJhdGU6cmF0ZSI+PC9wcGU6UmVmZXJlbmNlRGlhbG9nPg0KKwk8L0NvbXBvc2l0ZT4NCis8L0NvbXBvc2l0ZT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS91aS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQudWkvcmVzb3VyY2VzL3Byb3BlcnRpZXMvdWkvU2luZ2xlRGlzdHJpYnV0ZWRQcm9wZXJ0eS54d3QgYi91aS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQudWkvcmVzb3VyY2VzL3Byb3BlcnRpZXMvdWkvU2luZ2xlRGlzdHJpYnV0ZWRQcm9wZXJ0eS54d3QKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uODdjZmQzMwotLS0gL2Rldi9udWxsCisrKyBiL3VpL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC51aS9yZXNvdXJjZXMvcHJvcGVydGllcy91aS9TaW5nbGVEaXN0cmlidXRlZFByb3BlcnR5Lnh3dApAQCAtMCwwICsxLDM4IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/Pg0KKzxDb21wb3NpdGUgeG1sbnM6aj0iY2xyLW5hbWVzcGFjZTpqYXZhLmxhbmciDQorCXhtbG5zOnBwZWw9ImNsci1uYW1lc3BhY2U6b3JnLmVjbGlwc2UucGFweXJ1cy52aWV3cy5wcm9wZXJ0aWVzLndpZGdldHMubGF5b3V0Ig0KKwl4bWxuczp4PSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3h3dCIgeG1sbnM9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcveHd0L3ByZXNlbnRhdGlvbiINCisJeG1sbnM6cHBlPSJjbHItbmFtZXNwYWNlOm9yZy5lY2xpcHNlLnBhcHlydXMudmlld3MucHJvcGVydGllcy53aWRnZXRzIj4NCisJPENvbXBvc2l0ZS5sYXlvdXQ+DQorCQk8cHBlbDpQcm9wZXJ0aWVzTGF5b3V0PjwvcHBlbDpQcm9wZXJ0aWVzTGF5b3V0Pg0KKwk8L0NvbXBvc2l0ZS5sYXlvdXQ+DQorCTxDb21wb3NpdGU+DQorCQk8Q29tcG9zaXRlLmxheW91dD4NCisJCQk8cHBlbDpQcm9wZXJ0aWVzTGF5b3V0PjwvcHBlbDpQcm9wZXJ0aWVzTGF5b3V0Pg0KKwkJPC9Db21wb3NpdGUubGF5b3V0Pg0KKwkJPHBwZTpTdHJpbmdFZGl0b3IgaW5wdXQ9IntCaW5kaW5nfSIgcHJvcGVydHk9IlVNTDpOYW1lZEVsZW1lbnQ6bmFtZSI+PC9wcGU6U3RyaW5nRWRpdG9yPg0KKwk8L0NvbXBvc2l0ZT4NCisJPENvbXBvc2l0ZT4NCisJCTxDb21wb3NpdGUubGF5b3V0Pg0KKwkJCTxwcGVsOlByb3BlcnRpZXNMYXlvdXQgbnVtQ29sdW1ucz0iMiI+PC9wcGVsOlByb3BlcnRpZXNMYXlvdXQ+DQorCQk8L0NvbXBvc2l0ZS5sYXlvdXQ+DQorCQk8cHBlOkJvb2xlYW5SYWRpbyBpbnB1dD0ie0JpbmRpbmd9IiBwcm9wZXJ0eT0iVU1MOlByb3BlcnR5OmlzRGVyaXZlZCI+PC9wcGU6Qm9vbGVhblJhZGlvPg0KKwkJPHBwZTpCb29sZWFuUmFkaW8gaW5wdXQ9IntCaW5kaW5nfSIgcHJvcGVydHk9IlVNTDpQcm9wZXJ0eTppc0Rlcml2ZWRVbmlvbiI+PC9wcGU6Qm9vbGVhblJhZGlvPg0KKwkJPHBwZTpCb29sZWFuUmFkaW8gaW5wdXQ9IntCaW5kaW5nfSINCisJCQlwcm9wZXJ0eT0iVU1MOlJlZGVmaW5hYmxlRWxlbWVudDppc0xlYWYiPjwvcHBlOkJvb2xlYW5SYWRpbz4NCisJCTxwcGU6Qm9vbGVhblJhZGlvIGlucHV0PSJ7QmluZGluZ30iDQorCQkJcHJvcGVydHk9IlVNTDpNdWx0aXBsaWNpdHlFbGVtZW50OmlzT3JkZXJlZCI+PC9wcGU6Qm9vbGVhblJhZGlvPg0KKwkJPHBwZTpCb29sZWFuUmFkaW8gaW5wdXQ9IntCaW5kaW5nfSINCisJCQlwcm9wZXJ0eT0iVU1MOlN0cnVjdHVyYWxGZWF0dXJlOmlzUmVhZE9ubHkiPjwvcHBlOkJvb2xlYW5SYWRpbz4NCisJCTxwcGU6Qm9vbGVhblJhZGlvIGlucHV0PSJ7QmluZGluZ30iIHByb3BlcnR5PSJVTUw6RmVhdHVyZTppc1N0YXRpYyI+PC9wcGU6Qm9vbGVhblJhZGlvPg0KKwkJPHBwZTpCb29sZWFuUmFkaW8gaW5wdXQ9IntCaW5kaW5nfSINCisJCQlwcm9wZXJ0eT0iVU1MOk11bHRpcGxpY2l0eUVsZW1lbnQ6aXNVbmlxdWUiPjwvcHBlOkJvb2xlYW5SYWRpbz4NCisJPC9Db21wb3NpdGU+DQorCTxDb21wb3NpdGU+DQorCQk8Q29tcG9zaXRlLmxheW91dD4NCisJCQk8cHBlbDpQcm9wZXJ0aWVzTGF5b3V0IG51bUNvbHVtbnM9IjIiPjwvcHBlbDpQcm9wZXJ0aWVzTGF5b3V0Pg0KKwkJPC9Db21wb3NpdGUubGF5b3V0Pg0KKwkJPHBwZTpFbnVtQ29tYm8gaW5wdXQ9IntCaW5kaW5nfSIgcHJvcGVydHk9IlVNTDpQcm9wZXJ0eTphZ2dyZWdhdGlvbiI+PC9wcGU6RW51bUNvbWJvPg0KKwkJPHBwZTpFbnVtQ29tYm8gaW5wdXQ9IntCaW5kaW5nfSIgcHJvcGVydHk9IlVNTDpOYW1lZEVsZW1lbnQ6dmlzaWJpbGl0eSI+PC9wcGU6RW51bUNvbWJvPg0KKwk8L0NvbXBvc2l0ZT4NCis8L0NvbXBvc2l0ZT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS91aS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQudWkvcmVzb3VyY2VzL3Byb3BlcnRpZXMvdWkvU2luZ2xlRWxlbWVudEdyb3VwLnh3dCBiL3VpL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC51aS9yZXNvdXJjZXMvcHJvcGVydGllcy91aS9TaW5nbGVFbGVtZW50R3JvdXAueHd0Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmM5NDg3YzEKLS0tIC9kZXYvbnVsbAorKysgYi91aS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQudWkvcmVzb3VyY2VzL3Byb3BlcnRpZXMvdWkvU2luZ2xlRWxlbWVudEdyb3VwLnh3dApAQCAtMCwwICsxLDIzIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/Pg0KKzxDb21wb3NpdGUgeG1sbnM6aj0iY2xyLW5hbWVzcGFjZTpqYXZhLmxhbmciDQorCXhtbG5zOnBwZWw9ImNsci1uYW1lc3BhY2U6b3JnLmVjbGlwc2UucGFweXJ1cy52aWV3cy5wcm9wZXJ0aWVzLndpZGdldHMubGF5b3V0Ig0KKwl4bWxuczp4PSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3h3dCIgeG1sbnM9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcveHd0L3ByZXNlbnRhdGlvbiINCisJeG1sbnM6cHBlPSJjbHItbmFtZXNwYWNlOm9yZy5lY2xpcHNlLnBhcHlydXMudmlld3MucHJvcGVydGllcy53aWRnZXRzIj4NCisJPENvbXBvc2l0ZS5sYXlvdXQ+DQorCQk8cHBlbDpQcm9wZXJ0aWVzTGF5b3V0PjwvcHBlbDpQcm9wZXJ0aWVzTGF5b3V0Pg0KKwk8L0NvbXBvc2l0ZS5sYXlvdXQ+DQorCTxDb21wb3NpdGU+DQorCQk8Q29tcG9zaXRlLmxheW91dD4NCisJCQk8cHBlbDpQcm9wZXJ0aWVzTGF5b3V0IG51bUNvbHVtbnM9IjEiPjwvcHBlbDpQcm9wZXJ0aWVzTGF5b3V0Pg0KKwkJPC9Db21wb3NpdGUubGF5b3V0Pg0KKwkJPHBwZTpTdHJpbmdFZGl0b3IgaW5wdXQ9IntCaW5kaW5nfSINCisJCQlwcm9wZXJ0eT0iU3lzTUw6TW9kZWxFbGVtZW50czpFbGVtZW50R3JvdXA6bmFtZSI+PC9wcGU6U3RyaW5nRWRpdG9yPg0KKwk8L0NvbXBvc2l0ZT4NCisJPENvbXBvc2l0ZT4NCisJCTxDb21wb3NpdGUubGF5b3V0Pg0KKwkJCTxwcGVsOlByb3BlcnRpZXNMYXlvdXQgbnVtQ29sdW1ucz0iMSI+PC9wcGVsOlByb3BlcnRpZXNMYXlvdXQ+DQorCQk8L0NvbXBvc2l0ZS5sYXlvdXQ+DQorCQk8cHBlOk11bHRpUmVmZXJlbmNlIGlucHV0PSJ7QmluZGluZ30iDQorCQkJcHJvcGVydHk9IlN5c01MOk1vZGVsRWxlbWVudHM6RWxlbWVudEdyb3VwOm9yZGVyZWRNZW1iZXIiPjwvcHBlOk11bHRpUmVmZXJlbmNlPg0KKwk8L0NvbXBvc2l0ZT4NCis8L0NvbXBvc2l0ZT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS91aS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQudWkvcmVzb3VyY2VzL3Byb3BlcnRpZXMvdWkvU2luZ2xlRWxlbWVudFByb3BlcnR5UGF0aC54d3QgYi91aS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQudWkvcmVzb3VyY2VzL3Byb3BlcnRpZXMvdWkvU2luZ2xlRWxlbWVudFByb3BlcnR5UGF0aC54d3QKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uODY5ZWY5MgotLS0gL2Rldi9udWxsCisrKyBiL3VpL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC51aS9yZXNvdXJjZXMvcHJvcGVydGllcy91aS9TaW5nbGVFbGVtZW50UHJvcGVydHlQYXRoLnh3dApAQCAtMCwwICsxLDE2IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/Pg0KKzxDb21wb3NpdGUgeG1sbnM6aj0iY2xyLW5hbWVzcGFjZTpqYXZhLmxhbmciDQorCXhtbG5zOnBwZWw9ImNsci1uYW1lc3BhY2U6b3JnLmVjbGlwc2UucGFweXJ1cy52aWV3cy5wcm9wZXJ0aWVzLndpZGdldHMubGF5b3V0Ig0KKwl4bWxuczp4PSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3h3dCIgeG1sbnM9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcveHd0L3ByZXNlbnRhdGlvbiINCisJeG1sbnM6cHBlPSJjbHItbmFtZXNwYWNlOm9yZy5lY2xpcHNlLnBhcHlydXMudmlld3MucHJvcGVydGllcy53aWRnZXRzIj4NCisJPENvbXBvc2l0ZS5sYXlvdXQ+DQorCQk8cHBlbDpQcm9wZXJ0aWVzTGF5b3V0PjwvcHBlbDpQcm9wZXJ0aWVzTGF5b3V0Pg0KKwk8L0NvbXBvc2l0ZS5sYXlvdXQ+DQorCTxDb21wb3NpdGU+DQorCQk8Q29tcG9zaXRlLmxheW91dD4NCisJCQk8cHBlbDpQcm9wZXJ0aWVzTGF5b3V0IG51bUNvbHVtbnM9IjEiPjwvcHBlbDpQcm9wZXJ0aWVzTGF5b3V0Pg0KKwkJPC9Db21wb3NpdGUubGF5b3V0Pg0KKwkJPHBwZTpNdWx0aVJlZmVyZW5jZSBpbnB1dD0ie0JpbmRpbmd9Ig0KKwkJCXByb3BlcnR5PSJTeXNNTDpCbG9ja3M6RWxlbWVudFByb3BlcnR5UGF0aDpwcm9wZXJ0eVBhdGgiPjwvcHBlOk11bHRpUmVmZXJlbmNlPg0KKwk8L0NvbXBvc2l0ZT4NCis8L0NvbXBvc2l0ZT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS91aS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQudWkvcmVzb3VyY2VzL3Byb3BlcnRpZXMvdWkvU2luZ2xlRW5kUGF0aE11bHRpcGxpY2l0eS54d3QgYi91aS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQudWkvcmVzb3VyY2VzL3Byb3BlcnRpZXMvdWkvU2luZ2xlRW5kUGF0aE11bHRpcGxpY2l0eS54d3QKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uZWYyNDI4MgotLS0gL2Rldi9udWxsCisrKyBiL3VpL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC51aS9yZXNvdXJjZXMvcHJvcGVydGllcy91aS9TaW5nbGVFbmRQYXRoTXVsdGlwbGljaXR5Lnh3dApAQCAtMCwwICsxLDIzIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/Pg0KKzxDb21wb3NpdGUgeG1sbnM6aj0iY2xyLW5hbWVzcGFjZTpqYXZhLmxhbmciDQorCXhtbG5zOnBwZWw9ImNsci1uYW1lc3BhY2U6b3JnLmVjbGlwc2UucGFweXJ1cy52aWV3cy5wcm9wZXJ0aWVzLndpZGdldHMubGF5b3V0Ig0KKwl4bWxuczp4PSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3h3dCIgeG1sbnM9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcveHd0L3ByZXNlbnRhdGlvbiINCisJeG1sbnM6cHBlPSJjbHItbmFtZXNwYWNlOm9yZy5lY2xpcHNlLnBhcHlydXMudmlld3MucHJvcGVydGllcy53aWRnZXRzIj4NCisJPENvbXBvc2l0ZS5sYXlvdXQ+DQorCQk8cHBlbDpQcm9wZXJ0aWVzTGF5b3V0PjwvcHBlbDpQcm9wZXJ0aWVzTGF5b3V0Pg0KKwk8L0NvbXBvc2l0ZS5sYXlvdXQ+DQorCTxDb21wb3NpdGU+DQorCQk8Q29tcG9zaXRlLmxheW91dD4NCisJCQk8cHBlbDpQcm9wZXJ0aWVzTGF5b3V0IG51bUNvbHVtbnM9IjEiPjwvcHBlbDpQcm9wZXJ0aWVzTGF5b3V0Pg0KKwkJPC9Db21wb3NpdGUubGF5b3V0Pg0KKwkJPHBwZTpTdHJpbmdFZGl0b3IgaW5wdXQ9IntCaW5kaW5nfSINCisJCQlwcm9wZXJ0eT0iU3lzTUw6QmxvY2tzOkVuZFBhdGhNdWx0aXBsaWNpdHk6dXBwZXIiPjwvcHBlOlN0cmluZ0VkaXRvcj4NCisJPC9Db21wb3NpdGU+DQorCTxDb21wb3NpdGU+DQorCQk8Q29tcG9zaXRlLmxheW91dD4NCisJCQk8cHBlbDpQcm9wZXJ0aWVzTGF5b3V0IG51bUNvbHVtbnM9IjIiPjwvcHBlbDpQcm9wZXJ0aWVzTGF5b3V0Pg0KKwkJPC9Db21wb3NpdGUubGF5b3V0Pg0KKwkJPHBwZTpJbnRlZ2VyRWRpdG9yIGlucHV0PSJ7QmluZGluZ30iDQorCQkJcHJvcGVydHk9IlN5c01MOkJsb2NrczpFbmRQYXRoTXVsdGlwbGljaXR5Omxvd2VyIj48L3BwZTpJbnRlZ2VyRWRpdG9yPg0KKwk8L0NvbXBvc2l0ZT4NCis8L0NvbXBvc2l0ZT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS91aS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQudWkvcmVzb3VyY2VzL3Byb3BlcnRpZXMvdWkvU2luZ2xlRXhwb3NlLnh3dCBiL3VpL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC51aS9yZXNvdXJjZXMvcHJvcGVydGllcy91aS9TaW5nbGVFeHBvc2UueHd0Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjliYTRjZTgKLS0tIC9kZXYvbnVsbAorKysgYi91aS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQudWkvcmVzb3VyY2VzL3Byb3BlcnRpZXMvdWkvU2luZ2xlRXhwb3NlLnh3dApAQCAtMCwwICsxLDggQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+DQorPENvbXBvc2l0ZSB4bWxuczpqPSJjbHItbmFtZXNwYWNlOmphdmEubGFuZyINCisJeG1sbnM6cHBlbD0iY2xyLW5hbWVzcGFjZTpvcmcuZWNsaXBzZS5wYXB5cnVzLnZpZXdzLnByb3BlcnRpZXMud2lkZ2V0cy5sYXlvdXQiDQorCXhtbG5zOng9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcveHd0IiB4bWxucz0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy94d3QvcHJlc2VudGF0aW9uIj4NCisJPENvbXBvc2l0ZS5sYXlvdXQ+DQorCQk8cHBlbDpQcm9wZXJ0aWVzTGF5b3V0PjwvcHBlbDpQcm9wZXJ0aWVzTGF5b3V0Pg0KKwk8L0NvbXBvc2l0ZS5sYXlvdXQ+DQorPC9Db21wb3NpdGU+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdWkvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnVpL3Jlc291cmNlcy9wcm9wZXJ0aWVzL3VpL1NpbmdsZUZsb3dQb3J0Lnh3dCBiL3VpL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC51aS9yZXNvdXJjZXMvcHJvcGVydGllcy91aS9TaW5nbGVGbG93UG9ydC54d3QKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uZjYwODU1ZgotLS0gL2Rldi9udWxsCisrKyBiL3VpL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC51aS9yZXNvdXJjZXMvcHJvcGVydGllcy91aS9TaW5nbGVGbG93UG9ydC54d3QKQEAgLTAsMCArMSw0NyBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4NCis8Q29tcG9zaXRlIHhtbG5zOmo9ImNsci1uYW1lc3BhY2U6amF2YS5sYW5nIg0KKwl4bWxuczpwcGVsPSJjbHItbmFtZXNwYWNlOm9yZy5lY2xpcHNlLnBhcHlydXMudmlld3MucHJvcGVydGllcy53aWRnZXRzLmxheW91dCINCisJeG1sbnM6eD0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy94d3QiIHhtbG5zPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3h3dC9wcmVzZW50YXRpb24iDQorCXhtbG5zOnBwZT0iY2xyLW5hbWVzcGFjZTpvcmcuZWNsaXBzZS5wYXB5cnVzLnZpZXdzLnByb3BlcnRpZXMud2lkZ2V0cyI+DQorCTxDb21wb3NpdGUubGF5b3V0Pg0KKwkJPHBwZWw6UHJvcGVydGllc0xheW91dD48L3BwZWw6UHJvcGVydGllc0xheW91dD4NCisJPC9Db21wb3NpdGUubGF5b3V0Pg0KKwk8Q29tcG9zaXRlPg0KKwkJPENvbXBvc2l0ZS5sYXlvdXQ+DQorCQkJPHBwZWw6UHJvcGVydGllc0xheW91dD48L3BwZWw6UHJvcGVydGllc0xheW91dD4NCisJCTwvQ29tcG9zaXRlLmxheW91dD4NCisJCTxwcGU6U3RyaW5nRWRpdG9yIGlucHV0PSJ7QmluZGluZ30iIHByb3BlcnR5PSJVTUw6TmFtZWRFbGVtZW50Om5hbWUiPjwvcHBlOlN0cmluZ0VkaXRvcj4NCisJPC9Db21wb3NpdGU+DQorCTxDb21wb3NpdGU+DQorCQk8Q29tcG9zaXRlLmxheW91dD4NCisJCQk8cHBlbDpQcm9wZXJ0aWVzTGF5b3V0IG51bUNvbHVtbnM9IjIiPjwvcHBlbDpQcm9wZXJ0aWVzTGF5b3V0Pg0KKwkJPC9Db21wb3NpdGUubGF5b3V0Pg0KKwkJPHBwZTpCb29sZWFuUmFkaW8gaW5wdXQ9IntCaW5kaW5nfSINCisJCQlwcm9wZXJ0eT0iU3lzTUw6UG9ydHNhbmRGbG93czpGbG93UG9ydDppc0F0b21pYyI+PC9wcGU6Qm9vbGVhblJhZGlvPg0KKwkJPHBwZTpCb29sZWFuUmFkaW8gaW5wdXQ9IntCaW5kaW5nfSIgcHJvcGVydHk9IlVNTDpQb3J0OmlzQmVoYXZpb3IiPjwvcHBlOkJvb2xlYW5SYWRpbz4NCisJCTxwcGU6Qm9vbGVhblJhZGlvIGlucHV0PSJ7QmluZGluZ30iDQorCQkJcHJvcGVydHk9IlN5c01MOlBvcnRzYW5kRmxvd3M6Rmxvd1BvcnQ6aXNDb25qdWdhdGVkIj48L3BwZTpCb29sZWFuUmFkaW8+DQorCQk8cHBlOkJvb2xlYW5SYWRpbyBpbnB1dD0ie0JpbmRpbmd9IiBwcm9wZXJ0eT0iVU1MOlByb3BlcnR5OmlzRGVyaXZlZCI+PC9wcGU6Qm9vbGVhblJhZGlvPg0KKwkJPHBwZTpCb29sZWFuUmFkaW8gaW5wdXQ9IntCaW5kaW5nfSIgcHJvcGVydHk9IlVNTDpQcm9wZXJ0eTppc0Rlcml2ZWRVbmlvbiI+PC9wcGU6Qm9vbGVhblJhZGlvPg0KKwkJPHBwZTpCb29sZWFuUmFkaW8gaW5wdXQ9IntCaW5kaW5nfSINCisJCQlwcm9wZXJ0eT0iVU1MOlJlZGVmaW5hYmxlRWxlbWVudDppc0xlYWYiPjwvcHBlOkJvb2xlYW5SYWRpbz4NCisJCTxwcGU6Qm9vbGVhblJhZGlvIGlucHV0PSJ7QmluZGluZ30iDQorCQkJcHJvcGVydHk9IlVNTDpNdWx0aXBsaWNpdHlFbGVtZW50OmlzT3JkZXJlZCI+PC9wcGU6Qm9vbGVhblJhZGlvPg0KKwkJPHBwZTpCb29sZWFuUmFkaW8gaW5wdXQ9IntCaW5kaW5nfSINCisJCQlwcm9wZXJ0eT0iVU1MOlN0cnVjdHVyYWxGZWF0dXJlOmlzUmVhZE9ubHkiPjwvcHBlOkJvb2xlYW5SYWRpbz4NCisJCTxwcGU6Qm9vbGVhblJhZGlvIGlucHV0PSJ7QmluZGluZ30iIHByb3BlcnR5PSJVTUw6UG9ydDppc1NlcnZpY2UiPjwvcHBlOkJvb2xlYW5SYWRpbz4NCisJCTxwcGU6Qm9vbGVhblJhZGlvIGlucHV0PSJ7QmluZGluZ30iIHByb3BlcnR5PSJVTUw6RmVhdHVyZTppc1N0YXRpYyI+PC9wcGU6Qm9vbGVhblJhZGlvPg0KKwkJPHBwZTpCb29sZWFuUmFkaW8gaW5wdXQ9IntCaW5kaW5nfSINCisJCQlwcm9wZXJ0eT0iVU1MOk11bHRpcGxpY2l0eUVsZW1lbnQ6aXNVbmlxdWUiPjwvcHBlOkJvb2xlYW5SYWRpbz4NCisJPC9Db21wb3NpdGU+DQorCTxDb21wb3NpdGU+DQorCQk8Q29tcG9zaXRlLmxheW91dD4NCisJCQk8cHBlbDpQcm9wZXJ0aWVzTGF5b3V0IG51bUNvbHVtbnM9IjIiPjwvcHBlbDpQcm9wZXJ0aWVzTGF5b3V0Pg0KKwkJPC9Db21wb3NpdGUubGF5b3V0Pg0KKwkJPHBwZTpFbnVtQ29tYm8gaW5wdXQ9IntCaW5kaW5nfSIgcHJvcGVydHk9IlVNTDpQcm9wZXJ0eTphZ2dyZWdhdGlvbiI+PC9wcGU6RW51bUNvbWJvPg0KKwkJPHBwZTpFbnVtQ29tYm8gaW5wdXQ9IntCaW5kaW5nfSINCisJCQlwcm9wZXJ0eT0iU3lzTUw6RGVwcmVjYXRlZEVsZW1lbnRzOkZsb3dQb3J0OmRpcmVjdGlvbiI+PC9wcGU6RW51bUNvbWJvPg0KKwkJCQkJPHBwZTpFbnVtQ29tYm8gaW5wdXQ9IntCaW5kaW5nfSIgcHJvcGVydHk9IlVNTDpOYW1lZEVsZW1lbnQ6dmlzaWJpbGl0eSI+PC9wcGU6RW51bUNvbWJvPg0KKwkJCQ0KKwk8L0NvbXBvc2l0ZT4NCis8L0NvbXBvc2l0ZT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS91aS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQudWkvcmVzb3VyY2VzL3Byb3BlcnRpZXMvdWkvU2luZ2xlRmxvd1Byb3BlcnR5Lnh3dCBiL3VpL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC51aS9yZXNvdXJjZXMvcHJvcGVydGllcy91aS9TaW5nbGVGbG93UHJvcGVydHkueHd0Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjg1NWQxYzUKLS0tIC9kZXYvbnVsbAorKysgYi91aS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQudWkvcmVzb3VyY2VzL3Byb3BlcnRpZXMvdWkvU2luZ2xlRmxvd1Byb3BlcnR5Lnh3dApAQCAtMCwwICsxLDQwIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/Pg0KKzxDb21wb3NpdGUgeG1sbnM6aj0iY2xyLW5hbWVzcGFjZTpqYXZhLmxhbmciDQorCXhtbG5zOnBwZWw9ImNsci1uYW1lc3BhY2U6b3JnLmVjbGlwc2UucGFweXJ1cy52aWV3cy5wcm9wZXJ0aWVzLndpZGdldHMubGF5b3V0Ig0KKwl4bWxuczp4PSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3h3dCIgeG1sbnM9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcveHd0L3ByZXNlbnRhdGlvbiINCisJeG1sbnM6cHBlPSJjbHItbmFtZXNwYWNlOm9yZy5lY2xpcHNlLnBhcHlydXMudmlld3MucHJvcGVydGllcy53aWRnZXRzIj4NCisJPENvbXBvc2l0ZS5sYXlvdXQ+DQorCQk8cHBlbDpQcm9wZXJ0aWVzTGF5b3V0PjwvcHBlbDpQcm9wZXJ0aWVzTGF5b3V0Pg0KKwk8L0NvbXBvc2l0ZS5sYXlvdXQ+DQorCTxDb21wb3NpdGU+DQorCQk8Q29tcG9zaXRlLmxheW91dD4NCisJCQk8cHBlbDpQcm9wZXJ0aWVzTGF5b3V0PjwvcHBlbDpQcm9wZXJ0aWVzTGF5b3V0Pg0KKwkJPC9Db21wb3NpdGUubGF5b3V0Pg0KKwkJPHBwZTpTdHJpbmdFZGl0b3IgaW5wdXQ9IntCaW5kaW5nfSIgcHJvcGVydHk9IlVNTDpOYW1lZEVsZW1lbnQ6bmFtZSI+PC9wcGU6U3RyaW5nRWRpdG9yPg0KKwk8L0NvbXBvc2l0ZT4NCisJPENvbXBvc2l0ZT4NCisJCTxDb21wb3NpdGUubGF5b3V0Pg0KKwkJCTxwcGVsOlByb3BlcnRpZXNMYXlvdXQgbnVtQ29sdW1ucz0iMiI+PC9wcGVsOlByb3BlcnRpZXNMYXlvdXQ+DQorCQk8L0NvbXBvc2l0ZS5sYXlvdXQ+DQorCQk8cHBlOkJvb2xlYW5SYWRpbyBpbnB1dD0ie0JpbmRpbmd9IiBwcm9wZXJ0eT0iVU1MOlByb3BlcnR5OmlzRGVyaXZlZCI+PC9wcGU6Qm9vbGVhblJhZGlvPg0KKwkJPHBwZTpCb29sZWFuUmFkaW8gaW5wdXQ9IntCaW5kaW5nfSIgcHJvcGVydHk9IlVNTDpQcm9wZXJ0eTppc0Rlcml2ZWRVbmlvbiI+PC9wcGU6Qm9vbGVhblJhZGlvPg0KKwkJPHBwZTpCb29sZWFuUmFkaW8gaW5wdXQ9IntCaW5kaW5nfSINCisJCQlwcm9wZXJ0eT0iVU1MOlJlZGVmaW5hYmxlRWxlbWVudDppc0xlYWYiPjwvcHBlOkJvb2xlYW5SYWRpbz4NCisJCTxwcGU6Qm9vbGVhblJhZGlvIGlucHV0PSJ7QmluZGluZ30iDQorCQkJcHJvcGVydHk9IlVNTDpNdWx0aXBsaWNpdHlFbGVtZW50OmlzT3JkZXJlZCI+PC9wcGU6Qm9vbGVhblJhZGlvPg0KKwkJPHBwZTpCb29sZWFuUmFkaW8gaW5wdXQ9IntCaW5kaW5nfSINCisJCQlwcm9wZXJ0eT0iVU1MOlN0cnVjdHVyYWxGZWF0dXJlOmlzUmVhZE9ubHkiPjwvcHBlOkJvb2xlYW5SYWRpbz4NCisJCTxwcGU6Qm9vbGVhblJhZGlvIGlucHV0PSJ7QmluZGluZ30iIHByb3BlcnR5PSJVTUw6RmVhdHVyZTppc1N0YXRpYyI+PC9wcGU6Qm9vbGVhblJhZGlvPg0KKwkJPHBwZTpCb29sZWFuUmFkaW8gaW5wdXQ9IntCaW5kaW5nfSINCisJCQlwcm9wZXJ0eT0iVU1MOk11bHRpcGxpY2l0eUVsZW1lbnQ6aXNVbmlxdWUiPjwvcHBlOkJvb2xlYW5SYWRpbz4NCisJPC9Db21wb3NpdGU+DQorCTxDb21wb3NpdGU+DQorCQk8Q29tcG9zaXRlLmxheW91dD4NCisJCQk8cHBlbDpQcm9wZXJ0aWVzTGF5b3V0IG51bUNvbHVtbnM9IjIiPjwvcHBlbDpQcm9wZXJ0aWVzTGF5b3V0Pg0KKwkJPC9Db21wb3NpdGUubGF5b3V0Pg0KKwkJPHBwZTpFbnVtQ29tYm8gaW5wdXQ9IntCaW5kaW5nfSIgcHJvcGVydHk9IlVNTDpQcm9wZXJ0eTphZ2dyZWdhdGlvbiI+PC9wcGU6RW51bUNvbWJvPg0KKwkJPHBwZTpFbnVtQ29tYm8gaW5wdXQ9IntCaW5kaW5nfSINCisJCQlwcm9wZXJ0eT0iU3lzTUw6UG9ydHNhbmRGbG93czpGbG93UHJvcGVydHk6ZGlyZWN0aW9uIj48L3BwZTpFbnVtQ29tYm8+DQorCQk8cHBlOkVudW1Db21ibyBpbnB1dD0ie0JpbmRpbmd9IiBwcm9wZXJ0eT0iVU1MOk5hbWVkRWxlbWVudDp2aXNpYmlsaXR5Ij48L3BwZTpFbnVtQ29tYm8+DQorCTwvQ29tcG9zaXRlPg0KKzwvQ29tcG9zaXRlPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3VpL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC51aS9yZXNvdXJjZXMvcHJvcGVydGllcy91aS9TaW5nbGVGbG93U3BlY2lmaWNhdGlvbi54d3QgYi91aS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQudWkvcmVzb3VyY2VzL3Byb3BlcnRpZXMvdWkvU2luZ2xlRmxvd1NwZWNpZmljYXRpb24ueHd0Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjg2MGE0NDAKLS0tIC9kZXYvbnVsbAorKysgYi91aS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQudWkvcmVzb3VyY2VzL3Byb3BlcnRpZXMvdWkvU2luZ2xlRmxvd1NwZWNpZmljYXRpb24ueHd0CkBAIC0wLDAgKzEsMjkgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+DQorPENvbXBvc2l0ZSB4bWxucz0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy94d3QvcHJlc2VudGF0aW9uIg0KKwl4bWxuczp4PSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3h3dCINCisJeG1sbnM6cHBlbD0iY2xyLW5hbWVzcGFjZTpvcmcuZWNsaXBzZS5wYXB5cnVzLnZpZXdzLnByb3BlcnRpZXMud2lkZ2V0cy5sYXlvdXQiDQorCXhtbG5zOmo9ImNsci1uYW1lc3BhY2U6amF2YS5sYW5nIiB4bWxuczpwcGU9ImNsci1uYW1lc3BhY2U6b3JnLmVjbGlwc2UucGFweXJ1cy52aWV3cy5wcm9wZXJ0aWVzLndpZGdldHMiPg0KKwk8Q29tcG9zaXRlLmxheW91dD4NCisJCTxwcGVsOlByb3BlcnRpZXNMYXlvdXQ+PC9wcGVsOlByb3BlcnRpZXNMYXlvdXQ+DQorCTwvQ29tcG9zaXRlLmxheW91dD4NCisJPENvbXBvc2l0ZT4NCisJCTxDb21wb3NpdGUubGF5b3V0Pg0KKwkJCTxwcGVsOlByb3BlcnRpZXNMYXlvdXQ+PC9wcGVsOlByb3BlcnRpZXNMYXlvdXQ+DQorCQk8L0NvbXBvc2l0ZS5sYXlvdXQ+DQorCQk8cHBlOlN0cmluZ0VkaXRvciBpbnB1dD0ie0JpbmRpbmd9IiBwcm9wZXJ0eT0iVU1MOk5hbWVkRWxlbWVudDpuYW1lIj48L3BwZTpTdHJpbmdFZGl0b3I+DQorCTwvQ29tcG9zaXRlPg0KKwk8Q29tcG9zaXRlPg0KKwkJPENvbXBvc2l0ZS5sYXlvdXQ+DQorCQkJPHBwZWw6UHJvcGVydGllc0xheW91dCBudW1Db2x1bW5zPSIyIj48L3BwZWw6UHJvcGVydGllc0xheW91dD4NCisJCTwvQ29tcG9zaXRlLmxheW91dD4NCisJCTxwcGU6Qm9vbGVhblJhZGlvIGlucHV0PSJ7QmluZGluZ30iIHByb3BlcnR5PSJVTUw6Q2xhc3NpZmllcjppc0Fic3RyYWN0Ij48L3BwZTpCb29sZWFuUmFkaW8+DQorCQk8cHBlOkJvb2xlYW5SYWRpbyBpbnB1dD0ie0JpbmRpbmd9Ig0KKwkJCXByb3BlcnR5PSJVTUw6UmVkZWZpbmFibGVFbGVtZW50OmlzTGVhZiI+PC9wcGU6Qm9vbGVhblJhZGlvPg0KKwk8L0NvbXBvc2l0ZT4NCisJPENvbXBvc2l0ZT4NCisJCTxDb21wb3NpdGUubGF5b3V0Pg0KKwkJCTxwcGVsOlByb3BlcnRpZXNMYXlvdXQ+PC9wcGVsOlByb3BlcnRpZXNMYXlvdXQ+DQorCQk8L0NvbXBvc2l0ZS5sYXlvdXQ+DQorCQk8cHBlOkVudW1Db21ibyBpbnB1dD0ie0JpbmRpbmd9IiBwcm9wZXJ0eT0iVU1MOk5hbWVkRWxlbWVudDp2aXNpYmlsaXR5Ij48L3BwZTpFbnVtQ29tYm8+DQorCTwvQ29tcG9zaXRlPg0KKzwvQ29tcG9zaXRlPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3VpL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC51aS9yZXNvdXJjZXMvcHJvcGVydGllcy91aS9TaW5nbGVGdWxsUG9ydC54d3QgYi91aS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQudWkvcmVzb3VyY2VzL3Byb3BlcnRpZXMvdWkvU2luZ2xlRnVsbFBvcnQueHd0Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjliYTRjZTgKLS0tIC9kZXYvbnVsbAorKysgYi91aS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQudWkvcmVzb3VyY2VzL3Byb3BlcnRpZXMvdWkvU2luZ2xlRnVsbFBvcnQueHd0CkBAIC0wLDAgKzEsOCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4NCis8Q29tcG9zaXRlIHhtbG5zOmo9ImNsci1uYW1lc3BhY2U6amF2YS5sYW5nIg0KKwl4bWxuczpwcGVsPSJjbHItbmFtZXNwYWNlOm9yZy5lY2xpcHNlLnBhcHlydXMudmlld3MucHJvcGVydGllcy53aWRnZXRzLmxheW91dCINCisJeG1sbnM6eD0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy94d3QiIHhtbG5zPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3h3dC9wcmVzZW50YXRpb24iPg0KKwk8Q29tcG9zaXRlLmxheW91dD4NCisJCTxwcGVsOlByb3BlcnRpZXNMYXlvdXQ+PC9wcGVsOlByb3BlcnRpZXNMYXlvdXQ+DQorCTwvQ29tcG9zaXRlLmxheW91dD4NCis8L0NvbXBvc2l0ZT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS91aS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQudWkvcmVzb3VyY2VzL3Byb3BlcnRpZXMvdWkvU2luZ2xlSW50ZXJmYWNlQmxvY2sueHd0IGIvdWkvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnVpL3Jlc291cmNlcy9wcm9wZXJ0aWVzL3VpL1NpbmdsZUludGVyZmFjZUJsb2NrLnh3dApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi45YmE0Y2U4Ci0tLSAvZGV2L251bGwKKysrIGIvdWkvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnVpL3Jlc291cmNlcy9wcm9wZXJ0aWVzL3VpL1NpbmdsZUludGVyZmFjZUJsb2NrLnh3dApAQCAtMCwwICsxLDggQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+DQorPENvbXBvc2l0ZSB4bWxuczpqPSJjbHItbmFtZXNwYWNlOmphdmEubGFuZyINCisJeG1sbnM6cHBlbD0iY2xyLW5hbWVzcGFjZTpvcmcuZWNsaXBzZS5wYXB5cnVzLnZpZXdzLnByb3BlcnRpZXMud2lkZ2V0cy5sYXlvdXQiDQorCXhtbG5zOng9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcveHd0IiB4bWxucz0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy94d3QvcHJlc2VudGF0aW9uIj4NCisJPENvbXBvc2l0ZS5sYXlvdXQ+DQorCQk8cHBlbDpQcm9wZXJ0aWVzTGF5b3V0PjwvcHBlbDpQcm9wZXJ0aWVzTGF5b3V0Pg0KKwk8L0NvbXBvc2l0ZS5sYXlvdXQ+DQorPC9Db21wb3NpdGU+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdWkvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnVpL3Jlc291cmNlcy9wcm9wZXJ0aWVzL3VpL1NpbmdsZUludm9jYXRpb25Pbk5lc3RlZFBvcnRBY3Rpb24ueHd0IGIvdWkvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnVpL3Jlc291cmNlcy9wcm9wZXJ0aWVzL3VpL1NpbmdsZUludm9jYXRpb25Pbk5lc3RlZFBvcnRBY3Rpb24ueHd0Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmE1YjY2NjkKLS0tIC9kZXYvbnVsbAorKysgYi91aS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQudWkvcmVzb3VyY2VzL3Byb3BlcnRpZXMvdWkvU2luZ2xlSW52b2NhdGlvbk9uTmVzdGVkUG9ydEFjdGlvbi54d3QKQEAgLTAsMCArMSwxNiBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4NCis8Q29tcG9zaXRlIHhtbG5zOmo9ImNsci1uYW1lc3BhY2U6amF2YS5sYW5nIg0KKwl4bWxuczpwcGVsPSJjbHItbmFtZXNwYWNlOm9yZy5lY2xpcHNlLnBhcHlydXMudmlld3MucHJvcGVydGllcy53aWRnZXRzLmxheW91dCINCisJeG1sbnM6eD0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy94d3QiIHhtbG5zPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3h3dC9wcmVzZW50YXRpb24iDQorCXhtbG5zOnBwZT0iY2xyLW5hbWVzcGFjZTpvcmcuZWNsaXBzZS5wYXB5cnVzLnZpZXdzLnByb3BlcnRpZXMud2lkZ2V0cyI+DQorCTxDb21wb3NpdGUubGF5b3V0Pg0KKwkJPHBwZWw6UHJvcGVydGllc0xheW91dD48L3BwZWw6UHJvcGVydGllc0xheW91dD4NCisJPC9Db21wb3NpdGUubGF5b3V0Pg0KKwk8Q29tcG9zaXRlPg0KKwkJPENvbXBvc2l0ZS5sYXlvdXQ+DQorCQkJPHBwZWw6UHJvcGVydGllc0xheW91dCBudW1Db2x1bW5zPSIxIj48L3BwZWw6UHJvcGVydGllc0xheW91dD4NCisJCTwvQ29tcG9zaXRlLmxheW91dD4NCisJCTxwcGU6TXVsdGlSZWZlcmVuY2UgaW5wdXQ9IntCaW5kaW5nfSINCisJCQlwcm9wZXJ0eT0iU3lzTUw6UG9ydHNhbmRGbG93czpJbnZvY2F0aW9uT25OZXN0ZWRQb3J0QWN0aW9uOm9uTmVzdGVkUG9ydCI+PC9wcGU6TXVsdGlSZWZlcmVuY2U+DQorCTwvQ29tcG9zaXRlPg0KKzwvQ29tcG9zaXRlPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3VpL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC51aS9yZXNvdXJjZXMvcHJvcGVydGllcy91aS9TaW5nbGVJdGVtRmxvdy54d3QgYi91aS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQudWkvcmVzb3VyY2VzL3Byb3BlcnRpZXMvdWkvU2luZ2xlSXRlbUZsb3cueHd0Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjYwNzI5MDEKLS0tIC9kZXYvbnVsbAorKysgYi91aS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQudWkvcmVzb3VyY2VzL3Byb3BlcnRpZXMvdWkvU2luZ2xlSXRlbUZsb3cueHd0CkBAIC0wLDAgKzEsMjggQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+DQorPENvbXBvc2l0ZSB4bWxuczpqPSJjbHItbmFtZXNwYWNlOmphdmEubGFuZyINCisJeG1sbnM6cHBlbD0iY2xyLW5hbWVzcGFjZTpvcmcuZWNsaXBzZS5wYXB5cnVzLnZpZXdzLnByb3BlcnRpZXMud2lkZ2V0cy5sYXlvdXQiDQorCXhtbG5zOng9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcveHd0IiB4bWxucz0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy94d3QvcHJlc2VudGF0aW9uIg0KKwl4bWxuczpwcGU9ImNsci1uYW1lc3BhY2U6b3JnLmVjbGlwc2UucGFweXJ1cy52aWV3cy5wcm9wZXJ0aWVzLndpZGdldHMiPg0KKwk8Q29tcG9zaXRlLmxheW91dD4NCisJCTxwcGVsOlByb3BlcnRpZXNMYXlvdXQ+PC9wcGVsOlByb3BlcnRpZXNMYXlvdXQ+DQorCTwvQ29tcG9zaXRlLmxheW91dD4NCisJPENvbXBvc2l0ZT4NCisJCTxDb21wb3NpdGUubGF5b3V0Pg0KKwkJCTxwcGVsOlByb3BlcnRpZXNMYXlvdXQ+PC9wcGVsOlByb3BlcnRpZXNMYXlvdXQ+DQorCQk8L0NvbXBvc2l0ZS5sYXlvdXQ+DQorCQk8cHBlOlN0cmluZ0VkaXRvciBpbnB1dD0ie0JpbmRpbmd9IiBwcm9wZXJ0eT0iVU1MOk5hbWVkRWxlbWVudDpuYW1lIj48L3BwZTpTdHJpbmdFZGl0b3I+DQorCTwvQ29tcG9zaXRlPg0KKwk8Q29tcG9zaXRlPg0KKwkJPENvbXBvc2l0ZS5sYXlvdXQ+DQorCQkJPHBwZWw6UHJvcGVydGllc0xheW91dD48L3BwZWw6UHJvcGVydGllc0xheW91dD4NCisJCTwvQ29tcG9zaXRlLmxheW91dD4NCisJCTxwcGU6RW51bUNvbWJvIGlucHV0PSJ7QmluZGluZ30iIHByb3BlcnR5PSJVTUw6TmFtZWRFbGVtZW50OnZpc2liaWxpdHkiPjwvcHBlOkVudW1Db21ibz4NCisJPC9Db21wb3NpdGU+DQorCTxDb21wb3NpdGU+DQorCQk8Q29tcG9zaXRlLmxheW91dD4NCisJCQk8cHBlbDpQcm9wZXJ0aWVzTGF5b3V0PjwvcHBlbDpQcm9wZXJ0aWVzTGF5b3V0Pg0KKwkJPC9Db21wb3NpdGUubGF5b3V0Pg0KKwkJPHBwZTpSZWZlcmVuY2VEaWFsb2cgaW5wdXQ9IntCaW5kaW5nfSINCisJCQlwcm9wZXJ0eT0iU3lzTUw6UG9ydHNhbmRGbG93czpJdGVtRmxvdzppdGVtUHJvcGVydHkiPjwvcHBlOlJlZmVyZW5jZURpYWxvZz4NCisJPC9Db21wb3NpdGU+DQorPC9Db21wb3NpdGU+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdWkvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnVpL3Jlc291cmNlcy9wcm9wZXJ0aWVzL3VpL1NpbmdsZU5lc3RlZENvbm5lY3RvckVuZC54d3QgYi91aS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQudWkvcmVzb3VyY2VzL3Byb3BlcnRpZXMvdWkvU2luZ2xlTmVzdGVkQ29ubmVjdG9yRW5kLnh3dApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi41ZjlhZDA3Ci0tLSAvZGV2L251bGwKKysrIGIvdWkvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnVpL3Jlc291cmNlcy9wcm9wZXJ0aWVzL3VpL1NpbmdsZU5lc3RlZENvbm5lY3RvckVuZC54d3QKQEAgLTAsMCArMSwyNSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4NCis8Q29tcG9zaXRlIHhtbG5zOmo9ImNsci1uYW1lc3BhY2U6amF2YS5sYW5nIg0KKwl4bWxuczpwcGVsPSJjbHItbmFtZXNwYWNlOm9yZy5lY2xpcHNlLnBhcHlydXMudmlld3MucHJvcGVydGllcy53aWRnZXRzLmxheW91dCINCisJeG1sbnM6eD0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy94d3QiIHhtbG5zPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3h3dC9wcmVzZW50YXRpb24iDQorCXhtbG5zOnBwZT0iY2xyLW5hbWVzcGFjZTpvcmcuZWNsaXBzZS5wYXB5cnVzLnZpZXdzLnByb3BlcnRpZXMud2lkZ2V0cyI+DQorCTxDb21wb3NpdGUubGF5b3V0Pg0KKwkJPHBwZWw6UHJvcGVydGllc0xheW91dD48L3BwZWw6UHJvcGVydGllc0xheW91dD4NCisJPC9Db21wb3NpdGUubGF5b3V0Pg0KKwk8Q29tcG9zaXRlPg0KKwkJPENvbXBvc2l0ZS5sYXlvdXQ+DQorCQkJPHBwZWw6UHJvcGVydGllc0xheW91dCBudW1Db2x1bW5zPSIyIj48L3BwZWw6UHJvcGVydGllc0xheW91dD4NCisJCTwvQ29tcG9zaXRlLmxheW91dD4NCisJCTxwcGU6Qm9vbGVhblJhZGlvIGlucHV0PSJ7QmluZGluZ30iDQorCQkJcHJvcGVydHk9IlVNTDpNdWx0aXBsaWNpdHlFbGVtZW50OmlzT3JkZXJlZCI+PC9wcGU6Qm9vbGVhblJhZGlvPg0KKwkJPHBwZTpCb29sZWFuUmFkaW8gaW5wdXQ9IntCaW5kaW5nfSINCisJCQlwcm9wZXJ0eT0iVU1MOk11bHRpcGxpY2l0eUVsZW1lbnQ6aXNVbmlxdWUiPjwvcHBlOkJvb2xlYW5SYWRpbz4NCisJPC9Db21wb3NpdGU+DQorCTxDb21wb3NpdGU+DQorCQk8Q29tcG9zaXRlLmxheW91dD4NCisJCQk8cHBlbDpQcm9wZXJ0aWVzTGF5b3V0PjwvcHBlbDpQcm9wZXJ0aWVzTGF5b3V0Pg0KKwkJPC9Db21wb3NpdGUubGF5b3V0Pg0KKwkJPHBwZTpNdWx0aVJlZmVyZW5jZSBpbnB1dD0ie0JpbmRpbmd9Ig0KKwkJCXByb3BlcnR5PSJTeXNNTDpCbG9ja3M6TmVzdGVkQ29ubmVjdG9yRW5kOnByb3BlcnR5UGF0aCI+PC9wcGU6TXVsdGlSZWZlcmVuY2U+DQorCTwvQ29tcG9zaXRlPg0KKzwvQ29tcG9zaXRlPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3VpL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC51aS9yZXNvdXJjZXMvcHJvcGVydGllcy91aS9TaW5nbGVOb0J1ZmZlci54d3QgYi91aS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQudWkvcmVzb3VyY2VzL3Byb3BlcnRpZXMvdWkvU2luZ2xlTm9CdWZmZXIueHd0Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjg5MTE5MmMKLS0tIC9kZXYvbnVsbAorKysgYi91aS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQudWkvcmVzb3VyY2VzL3Byb3BlcnRpZXMvdWkvU2luZ2xlTm9CdWZmZXIueHd0CkBAIC0wLDAgKzEsMzEgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+DQorPENvbXBvc2l0ZSB4bWxuczpqPSJjbHItbmFtZXNwYWNlOmphdmEubGFuZyINCisJeG1sbnM6cHBlbD0iY2xyLW5hbWVzcGFjZTpvcmcuZWNsaXBzZS5wYXB5cnVzLnZpZXdzLnByb3BlcnRpZXMud2lkZ2V0cy5sYXlvdXQiDQorCXhtbG5zOng9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcveHd0IiB4bWxucz0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy94d3QvcHJlc2VudGF0aW9uIg0KKwl4bWxuczpwcGU9ImNsci1uYW1lc3BhY2U6b3JnLmVjbGlwc2UucGFweXJ1cy52aWV3cy5wcm9wZXJ0aWVzLndpZGdldHMiPg0KKwk8Q29tcG9zaXRlLmxheW91dD4NCisJCTxwcGVsOlByb3BlcnRpZXNMYXlvdXQ+PC9wcGVsOlByb3BlcnRpZXNMYXlvdXQ+DQorCTwvQ29tcG9zaXRlLmxheW91dD4NCisJPENvbXBvc2l0ZT4NCisJCTxDb21wb3NpdGUubGF5b3V0Pg0KKwkJCTxwcGVsOlByb3BlcnRpZXNMYXlvdXQ+PC9wcGVsOlByb3BlcnRpZXNMYXlvdXQ+DQorCQk8L0NvbXBvc2l0ZS5sYXlvdXQ+DQorCQk8cHBlOlN0cmluZ0VkaXRvciBpbnB1dD0ie0JpbmRpbmd9IiBwcm9wZXJ0eT0iVU1MOk5hbWVkRWxlbWVudDpuYW1lIj48L3BwZTpTdHJpbmdFZGl0b3I+DQorCTwvQ29tcG9zaXRlPg0KKwk8Q29tcG9zaXRlPg0KKwkJPENvbXBvc2l0ZS5sYXlvdXQ+DQorCQkJPHBwZWw6UHJvcGVydGllc0xheW91dCBudW1Db2x1bW5zPSIyIj48L3BwZWw6UHJvcGVydGllc0xheW91dD4NCisJCTwvQ29tcG9zaXRlLmxheW91dD4NCisJCTxwcGU6Qm9vbGVhblJhZGlvIGlucHV0PSJ7QmluZGluZ30iDQorCQkJcHJvcGVydHk9IlVNTDpPYmplY3ROb2RlOmlzQ29udHJvbFR5cGUiPjwvcHBlOkJvb2xlYW5SYWRpbz4NCisJCTxwcGU6Qm9vbGVhblJhZGlvIGlucHV0PSJ7QmluZGluZ30iDQorCQkJcHJvcGVydHk9IlVNTDpSZWRlZmluYWJsZUVsZW1lbnQ6aXNMZWFmIj48L3BwZTpCb29sZWFuUmFkaW8+DQorCTwvQ29tcG9zaXRlPg0KKwk8Q29tcG9zaXRlPg0KKwkJPENvbXBvc2l0ZS5sYXlvdXQ+DQorCQkJPHBwZWw6UHJvcGVydGllc0xheW91dCBudW1Db2x1bW5zPSIyIj48L3BwZWw6UHJvcGVydGllc0xheW91dD4NCisJCTwvQ29tcG9zaXRlLmxheW91dD4NCisJCTxwcGU6RW51bUNvbWJvIGlucHV0PSJ7QmluZGluZ30iIHByb3BlcnR5PSJVTUw6T2JqZWN0Tm9kZTpvcmRlcmluZyI+PC9wcGU6RW51bUNvbWJvPg0KKwkJPHBwZTpFbnVtQ29tYm8gaW5wdXQ9IntCaW5kaW5nfSIgcHJvcGVydHk9IlVNTDpOYW1lZEVsZW1lbnQ6dmlzaWJpbGl0eSI+PC9wcGU6RW51bUNvbWJvPg0KKwk8L0NvbXBvc2l0ZT4NCis8L0NvbXBvc2l0ZT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS91aS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQudWkvcmVzb3VyY2VzL3Byb3BlcnRpZXMvdWkvU2luZ2xlT3B0aW9uYWwueHd0IGIvdWkvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnVpL3Jlc291cmNlcy9wcm9wZXJ0aWVzL3VpL1NpbmdsZU9wdGlvbmFsLnh3dApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi43Y2MwM2Q2Ci0tLSAvZGV2L251bGwKKysrIGIvdWkvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnVpL3Jlc291cmNlcy9wcm9wZXJ0aWVzL3VpL1NpbmdsZU9wdGlvbmFsLnh3dApAQCAtMCwwICsxLDM0IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/Pg0KKzxDb21wb3NpdGUgeG1sbnM6aj0iY2xyLW5hbWVzcGFjZTpqYXZhLmxhbmciDQorCXhtbG5zOnBwZWw9ImNsci1uYW1lc3BhY2U6b3JnLmVjbGlwc2UucGFweXJ1cy52aWV3cy5wcm9wZXJ0aWVzLndpZGdldHMubGF5b3V0Ig0KKwl4bWxuczp4PSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3h3dCIgeG1sbnM9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcveHd0L3ByZXNlbnRhdGlvbiINCisJeG1sbnM6cHBlPSJjbHItbmFtZXNwYWNlOm9yZy5lY2xpcHNlLnBhcHlydXMudmlld3MucHJvcGVydGllcy53aWRnZXRzIj4NCisJPENvbXBvc2l0ZS5sYXlvdXQ+DQorCQk8cHBlbDpQcm9wZXJ0aWVzTGF5b3V0PjwvcHBlbDpQcm9wZXJ0aWVzTGF5b3V0Pg0KKwk8L0NvbXBvc2l0ZS5sYXlvdXQ+DQorCTxDb21wb3NpdGU+DQorCQk8Q29tcG9zaXRlLmxheW91dD4NCisJCQk8cHBlbDpQcm9wZXJ0aWVzTGF5b3V0PjwvcHBlbDpQcm9wZXJ0aWVzTGF5b3V0Pg0KKwkJPC9Db21wb3NpdGUubGF5b3V0Pg0KKwkJPHBwZTpTdHJpbmdFZGl0b3IgaW5wdXQ9IntCaW5kaW5nfSIgcHJvcGVydHk9IlVNTDpOYW1lZEVsZW1lbnQ6bmFtZSI+PC9wcGU6U3RyaW5nRWRpdG9yPg0KKwk8L0NvbXBvc2l0ZT4NCisJPENvbXBvc2l0ZT4NCisJCTxDb21wb3NpdGUubGF5b3V0Pg0KKwkJCTxwcGVsOlByb3BlcnRpZXNMYXlvdXQgbnVtQ29sdW1ucz0iMiI+PC9wcGVsOlByb3BlcnRpZXNMYXlvdXQ+DQorCQk8L0NvbXBvc2l0ZS5sYXlvdXQ+DQorCQk8cHBlOkJvb2xlYW5SYWRpbyBpbnB1dD0ie0JpbmRpbmd9IiBwcm9wZXJ0eT0iVU1MOlBhcmFtZXRlcjppc0V4Y2VwdGlvbiI+PC9wcGU6Qm9vbGVhblJhZGlvPg0KKwkJPHBwZTpCb29sZWFuUmFkaW8gaW5wdXQ9IntCaW5kaW5nfSINCisJCQlwcm9wZXJ0eT0iVU1MOk11bHRpcGxpY2l0eUVsZW1lbnQ6aXNPcmRlcmVkIj48L3BwZTpCb29sZWFuUmFkaW8+DQorCQk8cHBlOkJvb2xlYW5SYWRpbyBpbnB1dD0ie0JpbmRpbmd9IiBwcm9wZXJ0eT0iVU1MOlBhcmFtZXRlcjppc1N0cmVhbSI+PC9wcGU6Qm9vbGVhblJhZGlvPg0KKwkJPHBwZTpCb29sZWFuUmFkaW8gaW5wdXQ9IntCaW5kaW5nfSINCisJCQlwcm9wZXJ0eT0iVU1MOk11bHRpcGxpY2l0eUVsZW1lbnQ6aXNVbmlxdWUiPjwvcHBlOkJvb2xlYW5SYWRpbz4NCisJPC9Db21wb3NpdGU+DQorCTxDb21wb3NpdGU+DQorCQk8Q29tcG9zaXRlLmxheW91dD4NCisJCQk8cHBlbDpQcm9wZXJ0aWVzTGF5b3V0IG51bUNvbHVtbnM9IjIiPjwvcHBlbDpQcm9wZXJ0aWVzTGF5b3V0Pg0KKwkJPC9Db21wb3NpdGUubGF5b3V0Pg0KKwkJPHBwZTpFbnVtQ29tYm8gaW5wdXQ9IntCaW5kaW5nfSIgcHJvcGVydHk9IlVNTDpQYXJhbWV0ZXI6ZGlyZWN0aW9uIj48L3BwZTpFbnVtQ29tYm8+DQorCQk8cHBlOkVudW1Db21ibyBpbnB1dD0ie0JpbmRpbmd9IiBwcm9wZXJ0eT0iVU1MOlBhcmFtZXRlcjplZmZlY3QiPjwvcHBlOkVudW1Db21ibz4NCisJCTxwcGU6RW51bUNvbWJvIGlucHV0PSJ7QmluZGluZ30iIHByb3BlcnR5PSJVTUw6TmFtZWRFbGVtZW50OnZpc2liaWxpdHkiPjwvcHBlOkVudW1Db21ibz4NCisJPC9Db21wb3NpdGU+DQorPC9Db21wb3NpdGU+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdWkvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnVpL3Jlc291cmNlcy9wcm9wZXJ0aWVzL3VpL1NpbmdsZU92ZXJ3cml0ZS54d3QgYi91aS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQudWkvcmVzb3VyY2VzL3Byb3BlcnRpZXMvdWkvU2luZ2xlT3ZlcndyaXRlLnh3dApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi44OTExOTJjCi0tLSAvZGV2L251bGwKKysrIGIvdWkvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnVpL3Jlc291cmNlcy9wcm9wZXJ0aWVzL3VpL1NpbmdsZU92ZXJ3cml0ZS54d3QKQEAgLTAsMCArMSwzMSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4NCis8Q29tcG9zaXRlIHhtbG5zOmo9ImNsci1uYW1lc3BhY2U6amF2YS5sYW5nIg0KKwl4bWxuczpwcGVsPSJjbHItbmFtZXNwYWNlOm9yZy5lY2xpcHNlLnBhcHlydXMudmlld3MucHJvcGVydGllcy53aWRnZXRzLmxheW91dCINCisJeG1sbnM6eD0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy94d3QiIHhtbG5zPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3h3dC9wcmVzZW50YXRpb24iDQorCXhtbG5zOnBwZT0iY2xyLW5hbWVzcGFjZTpvcmcuZWNsaXBzZS5wYXB5cnVzLnZpZXdzLnByb3BlcnRpZXMud2lkZ2V0cyI+DQorCTxDb21wb3NpdGUubGF5b3V0Pg0KKwkJPHBwZWw6UHJvcGVydGllc0xheW91dD48L3BwZWw6UHJvcGVydGllc0xheW91dD4NCisJPC9Db21wb3NpdGUubGF5b3V0Pg0KKwk8Q29tcG9zaXRlPg0KKwkJPENvbXBvc2l0ZS5sYXlvdXQ+DQorCQkJPHBwZWw6UHJvcGVydGllc0xheW91dD48L3BwZWw6UHJvcGVydGllc0xheW91dD4NCisJCTwvQ29tcG9zaXRlLmxheW91dD4NCisJCTxwcGU6U3RyaW5nRWRpdG9yIGlucHV0PSJ7QmluZGluZ30iIHByb3BlcnR5PSJVTUw6TmFtZWRFbGVtZW50Om5hbWUiPjwvcHBlOlN0cmluZ0VkaXRvcj4NCisJPC9Db21wb3NpdGU+DQorCTxDb21wb3NpdGU+DQorCQk8Q29tcG9zaXRlLmxheW91dD4NCisJCQk8cHBlbDpQcm9wZXJ0aWVzTGF5b3V0IG51bUNvbHVtbnM9IjIiPjwvcHBlbDpQcm9wZXJ0aWVzTGF5b3V0Pg0KKwkJPC9Db21wb3NpdGUubGF5b3V0Pg0KKwkJPHBwZTpCb29sZWFuUmFkaW8gaW5wdXQ9IntCaW5kaW5nfSINCisJCQlwcm9wZXJ0eT0iVU1MOk9iamVjdE5vZGU6aXNDb250cm9sVHlwZSI+PC9wcGU6Qm9vbGVhblJhZGlvPg0KKwkJPHBwZTpCb29sZWFuUmFkaW8gaW5wdXQ9IntCaW5kaW5nfSINCisJCQlwcm9wZXJ0eT0iVU1MOlJlZGVmaW5hYmxlRWxlbWVudDppc0xlYWYiPjwvcHBlOkJvb2xlYW5SYWRpbz4NCisJPC9Db21wb3NpdGU+DQorCTxDb21wb3NpdGU+DQorCQk8Q29tcG9zaXRlLmxheW91dD4NCisJCQk8cHBlbDpQcm9wZXJ0aWVzTGF5b3V0IG51bUNvbHVtbnM9IjIiPjwvcHBlbDpQcm9wZXJ0aWVzTGF5b3V0Pg0KKwkJPC9Db21wb3NpdGUubGF5b3V0Pg0KKwkJPHBwZTpFbnVtQ29tYm8gaW5wdXQ9IntCaW5kaW5nfSIgcHJvcGVydHk9IlVNTDpPYmplY3ROb2RlOm9yZGVyaW5nIj48L3BwZTpFbnVtQ29tYm8+DQorCQk8cHBlOkVudW1Db21ibyBpbnB1dD0ie0JpbmRpbmd9IiBwcm9wZXJ0eT0iVU1MOk5hbWVkRWxlbWVudDp2aXNpYmlsaXR5Ij48L3BwZTpFbnVtQ29tYm8+DQorCTwvQ29tcG9zaXRlPg0KKzwvQ29tcG9zaXRlPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3VpL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC51aS9yZXNvdXJjZXMvcHJvcGVydGllcy91aS9TaW5nbGVQYXJ0aWNpcGFudFByb3BlcnR5Lnh3dCBiL3VpL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC51aS9yZXNvdXJjZXMvcHJvcGVydGllcy91aS9TaW5nbGVQYXJ0aWNpcGFudFByb3BlcnR5Lnh3dApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi43ZmZiZjA1Ci0tLSAvZGV2L251bGwKKysrIGIvdWkvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnVpL3Jlc291cmNlcy9wcm9wZXJ0aWVzL3VpL1NpbmdsZVBhcnRpY2lwYW50UHJvcGVydHkueHd0CkBAIC0wLDAgKzEsNDUgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+DQorPENvbXBvc2l0ZSB4bWxuczpqPSJjbHItbmFtZXNwYWNlOmphdmEubGFuZyINCisJeG1sbnM6cHBlbD0iY2xyLW5hbWVzcGFjZTpvcmcuZWNsaXBzZS5wYXB5cnVzLnZpZXdzLnByb3BlcnRpZXMud2lkZ2V0cy5sYXlvdXQiDQorCXhtbG5zOng9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcveHd0IiB4bWxucz0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy94d3QvcHJlc2VudGF0aW9uIg0KKwl4bWxuczpwcGU9ImNsci1uYW1lc3BhY2U6b3JnLmVjbGlwc2UucGFweXJ1cy52aWV3cy5wcm9wZXJ0aWVzLndpZGdldHMiPg0KKwk8Q29tcG9zaXRlLmxheW91dD4NCisJCTxwcGVsOlByb3BlcnRpZXNMYXlvdXQ+PC9wcGVsOlByb3BlcnRpZXNMYXlvdXQ+DQorCTwvQ29tcG9zaXRlLmxheW91dD4NCisJPENvbXBvc2l0ZT4NCisJCTxDb21wb3NpdGUubGF5b3V0Pg0KKwkJCTxwcGVsOlByb3BlcnRpZXNMYXlvdXQ+PC9wcGVsOlByb3BlcnRpZXNMYXlvdXQ+DQorCQk8L0NvbXBvc2l0ZS5sYXlvdXQ+DQorCQk8cHBlOlN0cmluZ0VkaXRvciBpbnB1dD0ie0JpbmRpbmd9IiBwcm9wZXJ0eT0iVU1MOk5hbWVkRWxlbWVudDpuYW1lIj48L3BwZTpTdHJpbmdFZGl0b3I+DQorCTwvQ29tcG9zaXRlPg0KKwk8Q29tcG9zaXRlPg0KKwkJPENvbXBvc2l0ZS5sYXlvdXQ+DQorCQkJPHBwZWw6UHJvcGVydGllc0xheW91dCBudW1Db2x1bW5zPSIyIj48L3BwZWw6UHJvcGVydGllc0xheW91dD4NCisJCTwvQ29tcG9zaXRlLmxheW91dD4NCisJCTxwcGU6Qm9vbGVhblJhZGlvIGlucHV0PSJ7QmluZGluZ30iIHByb3BlcnR5PSJVTUw6UHJvcGVydHk6aXNEZXJpdmVkIj48L3BwZTpCb29sZWFuUmFkaW8+DQorCQk8cHBlOkJvb2xlYW5SYWRpbyBpbnB1dD0ie0JpbmRpbmd9IiBwcm9wZXJ0eT0iVU1MOlByb3BlcnR5OmlzRGVyaXZlZFVuaW9uIj48L3BwZTpCb29sZWFuUmFkaW8+DQorCQk8cHBlOkJvb2xlYW5SYWRpbyBpbnB1dD0ie0JpbmRpbmd9Ig0KKwkJCXByb3BlcnR5PSJVTUw6UmVkZWZpbmFibGVFbGVtZW50OmlzTGVhZiI+PC9wcGU6Qm9vbGVhblJhZGlvPg0KKwkJPHBwZTpCb29sZWFuUmFkaW8gaW5wdXQ9IntCaW5kaW5nfSINCisJCQlwcm9wZXJ0eT0iVU1MOk11bHRpcGxpY2l0eUVsZW1lbnQ6aXNPcmRlcmVkIj48L3BwZTpCb29sZWFuUmFkaW8+DQorCQk8cHBlOkJvb2xlYW5SYWRpbyBpbnB1dD0ie0JpbmRpbmd9Ig0KKwkJCXByb3BlcnR5PSJVTUw6U3RydWN0dXJhbEZlYXR1cmU6aXNSZWFkT25seSI+PC9wcGU6Qm9vbGVhblJhZGlvPg0KKwkJPHBwZTpCb29sZWFuUmFkaW8gaW5wdXQ9IntCaW5kaW5nfSIgcHJvcGVydHk9IlVNTDpGZWF0dXJlOmlzU3RhdGljIj48L3BwZTpCb29sZWFuUmFkaW8+DQorCQk8cHBlOkJvb2xlYW5SYWRpbyBpbnB1dD0ie0JpbmRpbmd9Ig0KKwkJCXByb3BlcnR5PSJVTUw6TXVsdGlwbGljaXR5RWxlbWVudDppc1VuaXF1ZSI+PC9wcGU6Qm9vbGVhblJhZGlvPg0KKwk8L0NvbXBvc2l0ZT4NCisJPENvbXBvc2l0ZT4NCisJCTxDb21wb3NpdGUubGF5b3V0Pg0KKwkJCTxwcGVsOlByb3BlcnRpZXNMYXlvdXQgbnVtQ29sdW1ucz0iMiI+PC9wcGVsOlByb3BlcnRpZXNMYXlvdXQ+DQorCQk8L0NvbXBvc2l0ZS5sYXlvdXQ+DQorCQk8cHBlOkVudW1Db21ibyBpbnB1dD0ie0JpbmRpbmd9IiBwcm9wZXJ0eT0iVU1MOlByb3BlcnR5OmFnZ3JlZ2F0aW9uIj48L3BwZTpFbnVtQ29tYm8+DQorCQk8cHBlOkVudW1Db21ibyBpbnB1dD0ie0JpbmRpbmd9IiBwcm9wZXJ0eT0iVU1MOk5hbWVkRWxlbWVudDp2aXNpYmlsaXR5Ij48L3BwZTpFbnVtQ29tYm8+DQorCTwvQ29tcG9zaXRlPg0KKwk8Q29tcG9zaXRlPg0KKwkJPENvbXBvc2l0ZS5sYXlvdXQ+DQorCQkJPHBwZWw6UHJvcGVydGllc0xheW91dD48L3BwZWw6UHJvcGVydGllc0xheW91dD4NCisJCTwvQ29tcG9zaXRlLmxheW91dD4NCisJCTxwcGU6UmVmZXJlbmNlRGlhbG9nIGlucHV0PSJ7QmluZGluZ30iDQorCQkJcHJvcGVydHk9IlN5c01MOkJsb2NrczpQYXJ0aWNpcGFudFByb3BlcnR5OmVuZCI+PC9wcGU6UmVmZXJlbmNlRGlhbG9nPg0KKwk8L0NvbXBvc2l0ZT4NCis8L0NvbXBvc2l0ZT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS91aS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQudWkvcmVzb3VyY2VzL3Byb3BlcnRpZXMvdWkvU2luZ2xlUHJvYmFiaWxpdHkueHd0IGIvdWkvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnVpL3Jlc291cmNlcy9wcm9wZXJ0aWVzL3VpL1NpbmdsZVByb2JhYmlsaXR5Lnh3dApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi4zYWU5NTJlCi0tLSAvZGV2L251bGwKKysrIGIvdWkvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnVpL3Jlc291cmNlcy9wcm9wZXJ0aWVzL3VpL1NpbmdsZVByb2JhYmlsaXR5Lnh3dApAQCAtMCwwICsxLDM1IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/Pg0KKzxDb21wb3NpdGUgeG1sbnM6aj0iY2xyLW5hbWVzcGFjZTpqYXZhLmxhbmciDQorCXhtbG5zOnBwZWw9ImNsci1uYW1lc3BhY2U6b3JnLmVjbGlwc2UucGFweXJ1cy52aWV3cy5wcm9wZXJ0aWVzLndpZGdldHMubGF5b3V0Ig0KKwl4bWxuczp4PSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3h3dCIgeG1sbnM9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcveHd0L3ByZXNlbnRhdGlvbiINCisJeG1sbnM6cHBlPSJjbHItbmFtZXNwYWNlOm9yZy5lY2xpcHNlLnBhcHlydXMudmlld3MucHJvcGVydGllcy53aWRnZXRzIj4NCisJPENvbXBvc2l0ZS5sYXlvdXQ+DQorCQk8cHBlbDpQcm9wZXJ0aWVzTGF5b3V0PjwvcHBlbDpQcm9wZXJ0aWVzTGF5b3V0Pg0KKwk8L0NvbXBvc2l0ZS5sYXlvdXQ+DQorCTxDb21wb3NpdGU+DQorCQk8Q29tcG9zaXRlLmxheW91dD4NCisJCQk8cHBlbDpQcm9wZXJ0aWVzTGF5b3V0PjwvcHBlbDpQcm9wZXJ0aWVzTGF5b3V0Pg0KKwkJPC9Db21wb3NpdGUubGF5b3V0Pg0KKwkJPHBwZTpTdHJpbmdFZGl0b3IgaW5wdXQ9IntCaW5kaW5nfSIgcHJvcGVydHk9IlVNTDpOYW1lZEVsZW1lbnQ6bmFtZSI+PC9wcGU6U3RyaW5nRWRpdG9yPg0KKwk8L0NvbXBvc2l0ZT4NCisJPENvbXBvc2l0ZT4NCisJCTxDb21wb3NpdGUubGF5b3V0Pg0KKwkJCTxwcGVsOlByb3BlcnRpZXNMYXlvdXQ+PC9wcGVsOlByb3BlcnRpZXNMYXlvdXQ+DQorCQk8L0NvbXBvc2l0ZS5sYXlvdXQ+DQorCQk8cHBlOkJvb2xlYW5SYWRpbyBpbnB1dD0ie0JpbmRpbmd9Ig0KKwkJCXByb3BlcnR5PSJVTUw6UmVkZWZpbmFibGVFbGVtZW50OmlzTGVhZiI+PC9wcGU6Qm9vbGVhblJhZGlvPg0KKwk8L0NvbXBvc2l0ZT4NCisJPENvbXBvc2l0ZT4NCisJCTxDb21wb3NpdGUubGF5b3V0Pg0KKwkJCTxwcGVsOlByb3BlcnRpZXNMYXlvdXQ+PC9wcGVsOlByb3BlcnRpZXNMYXlvdXQ+DQorCQk8L0NvbXBvc2l0ZS5sYXlvdXQ+DQorCQk8cHBlOkVudW1Db21ibyBpbnB1dD0ie0JpbmRpbmd9IiBwcm9wZXJ0eT0iVU1MOk5hbWVkRWxlbWVudDp2aXNpYmlsaXR5Ij48L3BwZTpFbnVtQ29tYm8+DQorCTwvQ29tcG9zaXRlPg0KKwk8Q29tcG9zaXRlPg0KKwkJPENvbXBvc2l0ZS5sYXlvdXQ+DQorCQkJPHBwZWw6UHJvcGVydGllc0xheW91dD48L3BwZWw6UHJvcGVydGllc0xheW91dD4NCisJCTwvQ29tcG9zaXRlLmxheW91dD4NCisJCTxwcGU6UmVmZXJlbmNlRGlhbG9nIGlucHV0PSJ7QmluZGluZ30iDQorCQkJcHJvcGVydHk9IlN5c01MOkFjdGl2aXRpZXM6UHJvYmFiaWxpdHk6cHJvYmFiaWxpdHkiPjwvcHBlOlJlZmVyZW5jZURpYWxvZz4NCisJPC9Db21wb3NpdGU+DQorPC9Db21wb3NpdGU+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdWkvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnVpL3Jlc291cmNlcy9wcm9wZXJ0aWVzL3VpL1NpbmdsZVByb2JsZW0ueHd0IGIvdWkvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnVpL3Jlc291cmNlcy9wcm9wZXJ0aWVzL3VpL1NpbmdsZVByb2JsZW0ueHd0Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjliYTRjZTgKLS0tIC9kZXYvbnVsbAorKysgYi91aS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQudWkvcmVzb3VyY2VzL3Byb3BlcnRpZXMvdWkvU2luZ2xlUHJvYmxlbS54d3QKQEAgLTAsMCArMSw4IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/Pg0KKzxDb21wb3NpdGUgeG1sbnM6aj0iY2xyLW5hbWVzcGFjZTpqYXZhLmxhbmciDQorCXhtbG5zOnBwZWw9ImNsci1uYW1lc3BhY2U6b3JnLmVjbGlwc2UucGFweXJ1cy52aWV3cy5wcm9wZXJ0aWVzLndpZGdldHMubGF5b3V0Ig0KKwl4bWxuczp4PSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3h3dCIgeG1sbnM9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcveHd0L3ByZXNlbnRhdGlvbiI+DQorCTxDb21wb3NpdGUubGF5b3V0Pg0KKwkJPHBwZWw6UHJvcGVydGllc0xheW91dD48L3BwZWw6UHJvcGVydGllc0xheW91dD4NCisJPC9Db21wb3NpdGUubGF5b3V0Pg0KKzwvQ29tcG9zaXRlPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3VpL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC51aS9yZXNvdXJjZXMvcHJvcGVydGllcy91aS9TaW5nbGVQcm9wZXJ0eVNwZWNpZmljVHlwZS54d3QgYi91aS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQudWkvcmVzb3VyY2VzL3Byb3BlcnRpZXMvdWkvU2luZ2xlUHJvcGVydHlTcGVjaWZpY1R5cGUueHd0Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmQ3NmZmMTYKLS0tIC9kZXYvbnVsbAorKysgYi91aS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQudWkvcmVzb3VyY2VzL3Byb3BlcnRpZXMvdWkvU2luZ2xlUHJvcGVydHlTcGVjaWZpY1R5cGUueHd0CkBAIC0wLDAgKzEsMjkgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+DQorPENvbXBvc2l0ZSB4bWxuczpqPSJjbHItbmFtZXNwYWNlOmphdmEubGFuZyINCisJeG1sbnM6cHBlbD0iY2xyLW5hbWVzcGFjZTpvcmcuZWNsaXBzZS5wYXB5cnVzLnZpZXdzLnByb3BlcnRpZXMud2lkZ2V0cy5sYXlvdXQiDQorCXhtbG5zOng9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcveHd0IiB4bWxucz0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy94d3QvcHJlc2VudGF0aW9uIg0KKwl4bWxuczpwcGU9ImNsci1uYW1lc3BhY2U6b3JnLmVjbGlwc2UucGFweXJ1cy52aWV3cy5wcm9wZXJ0aWVzLndpZGdldHMiPg0KKwk8Q29tcG9zaXRlLmxheW91dD4NCisJCTxwcGVsOlByb3BlcnRpZXNMYXlvdXQ+PC9wcGVsOlByb3BlcnRpZXNMYXlvdXQ+DQorCTwvQ29tcG9zaXRlLmxheW91dD4NCisJPENvbXBvc2l0ZT4NCisJCTxDb21wb3NpdGUubGF5b3V0Pg0KKwkJCTxwcGVsOlByb3BlcnRpZXNMYXlvdXQ+PC9wcGVsOlByb3BlcnRpZXNMYXlvdXQ+DQorCQk8L0NvbXBvc2l0ZS5sYXlvdXQ+DQorCQk8cHBlOlN0cmluZ0VkaXRvciBpbnB1dD0ie0JpbmRpbmd9IiBwcm9wZXJ0eT0iVU1MOk5hbWVkRWxlbWVudDpuYW1lIj48L3BwZTpTdHJpbmdFZGl0b3I+DQorCTwvQ29tcG9zaXRlPg0KKwk8Q29tcG9zaXRlPg0KKwkJPENvbXBvc2l0ZS5sYXlvdXQ+DQorCQkJPHBwZWw6UHJvcGVydGllc0xheW91dCBudW1Db2x1bW5zPSIyIj48L3BwZWw6UHJvcGVydGllc0xheW91dD4NCisJCTwvQ29tcG9zaXRlLmxheW91dD4NCisJCTxwcGU6Qm9vbGVhblJhZGlvIGlucHV0PSJ7QmluZGluZ30iIHByb3BlcnR5PSJVTUw6Q2xhc3NpZmllcjppc0Fic3RyYWN0Ij48L3BwZTpCb29sZWFuUmFkaW8+DQorCQk8cHBlOkJvb2xlYW5SYWRpbyBpbnB1dD0ie0JpbmRpbmd9Ig0KKwkJCXByb3BlcnR5PSJVTUw6UmVkZWZpbmFibGVFbGVtZW50OmlzTGVhZiI+PC9wcGU6Qm9vbGVhblJhZGlvPg0KKwk8L0NvbXBvc2l0ZT4NCisJPENvbXBvc2l0ZT4NCisJCTxDb21wb3NpdGUubGF5b3V0Pg0KKwkJCTxwcGVsOlByb3BlcnRpZXNMYXlvdXQ+PC9wcGVsOlByb3BlcnRpZXNMYXlvdXQ+DQorCQk8L0NvbXBvc2l0ZS5sYXlvdXQ+DQorCQk8cHBlOkVudW1Db21ibyBpbnB1dD0ie0JpbmRpbmd9IiBwcm9wZXJ0eT0iVU1MOk5hbWVkRWxlbWVudDp2aXNpYmlsaXR5Ij48L3BwZTpFbnVtQ29tYm8+DQorCTwvQ29tcG9zaXRlPg0KKzwvQ29tcG9zaXRlPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3VpL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC51aS9yZXNvdXJjZXMvcHJvcGVydGllcy91aS9TaW5nbGVQcm94eVBvcnQueHd0IGIvdWkvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnVpL3Jlc291cmNlcy9wcm9wZXJ0aWVzL3VpL1NpbmdsZVByb3h5UG9ydC54d3QKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uOWJhNGNlOAotLS0gL2Rldi9udWxsCisrKyBiL3VpL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC51aS9yZXNvdXJjZXMvcHJvcGVydGllcy91aS9TaW5nbGVQcm94eVBvcnQueHd0CkBAIC0wLDAgKzEsOCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4NCis8Q29tcG9zaXRlIHhtbG5zOmo9ImNsci1uYW1lc3BhY2U6amF2YS5sYW5nIg0KKwl4bWxuczpwcGVsPSJjbHItbmFtZXNwYWNlOm9yZy5lY2xpcHNlLnBhcHlydXMudmlld3MucHJvcGVydGllcy53aWRnZXRzLmxheW91dCINCisJeG1sbnM6eD0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy94d3QiIHhtbG5zPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3h3dC9wcmVzZW50YXRpb24iPg0KKwk8Q29tcG9zaXRlLmxheW91dD4NCisJCTxwcGVsOlByb3BlcnRpZXNMYXlvdXQ+PC9wcGVsOlByb3BlcnRpZXNMYXlvdXQ+DQorCTwvQ29tcG9zaXRlLmxheW91dD4NCis8L0NvbXBvc2l0ZT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS91aS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQudWkvcmVzb3VyY2VzL3Byb3BlcnRpZXMvdWkvU2luZ2xlUmF0ZS54d3QgYi91aS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQudWkvcmVzb3VyY2VzL3Byb3BlcnRpZXMvdWkvU2luZ2xlUmF0ZS54d3QKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uZDRiYjcxZgotLS0gL2Rldi9udWxsCisrKyBiL3VpL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC51aS9yZXNvdXJjZXMvcHJvcGVydGllcy91aS9TaW5nbGVSYXRlLnh3dApAQCAtMCwwICsxLDQzIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/Pg0KKzxDb21wb3NpdGUgeG1sbnM6aj0iY2xyLW5hbWVzcGFjZTpqYXZhLmxhbmciDQorCXhtbG5zOnBwZWw9ImNsci1uYW1lc3BhY2U6b3JnLmVjbGlwc2UucGFweXJ1cy52aWV3cy5wcm9wZXJ0aWVzLndpZGdldHMubGF5b3V0Ig0KKwl4bWxuczp4PSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3h3dCIgeG1sbnM9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcveHd0L3ByZXNlbnRhdGlvbiINCisJeG1sbnM6cHBlPSJjbHItbmFtZXNwYWNlOm9yZy5lY2xpcHNlLnBhcHlydXMudmlld3MucHJvcGVydGllcy53aWRnZXRzIj4NCisJPENvbXBvc2l0ZS5sYXlvdXQ+DQorCQk8cHBlbDpQcm9wZXJ0aWVzTGF5b3V0PjwvcHBlbDpQcm9wZXJ0aWVzTGF5b3V0Pg0KKwk8L0NvbXBvc2l0ZS5sYXlvdXQ+DQorCTxDb21wb3NpdGU+DQorCQk8Q29tcG9zaXRlLmxheW91dD4NCisJCQk8cHBlbDpQcm9wZXJ0aWVzTGF5b3V0PjwvcHBlbDpQcm9wZXJ0aWVzTGF5b3V0Pg0KKwkJPC9Db21wb3NpdGUubGF5b3V0Pg0KKwkJPHBwZTpTdHJpbmdFZGl0b3IgaW5wdXQ9IntCaW5kaW5nfSIgcHJvcGVydHk9IlVNTDpOYW1lZEVsZW1lbnQ6bmFtZSI+PC9wcGU6U3RyaW5nRWRpdG9yPg0KKwk8L0NvbXBvc2l0ZT4NCisJPENvbXBvc2l0ZT4NCisJCTxDb21wb3NpdGUubGF5b3V0Pg0KKwkJCTxwcGVsOlByb3BlcnRpZXNMYXlvdXQgbnVtQ29sdW1ucz0iMiI+PC9wcGVsOlByb3BlcnRpZXNMYXlvdXQ+DQorCQk8L0NvbXBvc2l0ZS5sYXlvdXQ+DQorCQk8cHBlOkJvb2xlYW5SYWRpbyBpbnB1dD0ie0JpbmRpbmd9IiBwcm9wZXJ0eT0iVU1MOlBhcmFtZXRlcjppc0V4Y2VwdGlvbiI+PC9wcGU6Qm9vbGVhblJhZGlvPg0KKwkJPHBwZTpCb29sZWFuUmFkaW8gaW5wdXQ9IntCaW5kaW5nfSINCisJCQlwcm9wZXJ0eT0iVU1MOlJlZGVmaW5hYmxlRWxlbWVudDppc0xlYWYiPjwvcHBlOkJvb2xlYW5SYWRpbz4NCisJCTxwcGU6Qm9vbGVhblJhZGlvIGlucHV0PSJ7QmluZGluZ30iDQorCQkJcHJvcGVydHk9IlVNTDpNdWx0aXBsaWNpdHlFbGVtZW50OmlzT3JkZXJlZCI+PC9wcGU6Qm9vbGVhblJhZGlvPg0KKwkJPHBwZTpCb29sZWFuUmFkaW8gaW5wdXQ9IntCaW5kaW5nfSIgcHJvcGVydHk9IlVNTDpQYXJhbWV0ZXI6aXNTdHJlYW0iPjwvcHBlOkJvb2xlYW5SYWRpbz4NCisJCTxwcGU6Qm9vbGVhblJhZGlvIGlucHV0PSJ7QmluZGluZ30iDQorCQkJcHJvcGVydHk9IlVNTDpNdWx0aXBsaWNpdHlFbGVtZW50OmlzVW5pcXVlIj48L3BwZTpCb29sZWFuUmFkaW8+DQorCTwvQ29tcG9zaXRlPg0KKwk8Q29tcG9zaXRlPg0KKwkJPENvbXBvc2l0ZS5sYXlvdXQ+DQorCQkJPHBwZWw6UHJvcGVydGllc0xheW91dCBudW1Db2x1bW5zPSIyIj48L3BwZWw6UHJvcGVydGllc0xheW91dD4NCisJCTwvQ29tcG9zaXRlLmxheW91dD4NCisJCTxwcGU6RW51bUNvbWJvIGlucHV0PSJ7QmluZGluZ30iIHByb3BlcnR5PSJVTUw6UGFyYW1ldGVyOmRpcmVjdGlvbiI+PC9wcGU6RW51bUNvbWJvPg0KKwkJPHBwZTpFbnVtQ29tYm8gaW5wdXQ9IntCaW5kaW5nfSIgcHJvcGVydHk9IlVNTDpQYXJhbWV0ZXI6ZWZmZWN0Ij48L3BwZTpFbnVtQ29tYm8+DQorCQk8cHBlOkVudW1Db21ibyBpbnB1dD0ie0JpbmRpbmd9IiBwcm9wZXJ0eT0iVU1MOk5hbWVkRWxlbWVudDp2aXNpYmlsaXR5Ij48L3BwZTpFbnVtQ29tYm8+DQorCTwvQ29tcG9zaXRlPg0KKwk8Q29tcG9zaXRlPg0KKwkJPENvbXBvc2l0ZS5sYXlvdXQ+DQorCQkJPHBwZWw6UHJvcGVydGllc0xheW91dD48L3BwZWw6UHJvcGVydGllc0xheW91dD4NCisJCTwvQ29tcG9zaXRlLmxheW91dD4NCisJCTxwcGU6UmVmZXJlbmNlRGlhbG9nIGlucHV0PSJ7QmluZGluZ30iDQorCQkJcHJvcGVydHk9IlN5c01MOkFjdGl2aXRpZXM6UmF0ZTpyYXRlIj48L3BwZTpSZWZlcmVuY2VEaWFsb2c+DQorCTwvQ29tcG9zaXRlPg0KKzwvQ29tcG9zaXRlPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3VpL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC51aS9yZXNvdXJjZXMvcHJvcGVydGllcy91aS9TaW5nbGVSYXRpb25hbGUueHd0IGIvdWkvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnVpL3Jlc291cmNlcy9wcm9wZXJ0aWVzL3VpL1NpbmdsZVJhdGlvbmFsZS54d3QKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uOWJhNGNlOAotLS0gL2Rldi9udWxsCisrKyBiL3VpL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC51aS9yZXNvdXJjZXMvcHJvcGVydGllcy91aS9TaW5nbGVSYXRpb25hbGUueHd0CkBAIC0wLDAgKzEsOCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4NCis8Q29tcG9zaXRlIHhtbG5zOmo9ImNsci1uYW1lc3BhY2U6amF2YS5sYW5nIg0KKwl4bWxuczpwcGVsPSJjbHItbmFtZXNwYWNlOm9yZy5lY2xpcHNlLnBhcHlydXMudmlld3MucHJvcGVydGllcy53aWRnZXRzLmxheW91dCINCisJeG1sbnM6eD0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy94d3QiIHhtbG5zPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3h3dC9wcmVzZW50YXRpb24iPg0KKwk8Q29tcG9zaXRlLmxheW91dD4NCisJCTxwcGVsOlByb3BlcnRpZXNMYXlvdXQ+PC9wcGVsOlByb3BlcnRpZXNMYXlvdXQ+DQorCTwvQ29tcG9zaXRlLmxheW91dD4NCis8L0NvbXBvc2l0ZT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS91aS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQudWkvcmVzb3VyY2VzL3Byb3BlcnRpZXMvdWkvU2luZ2xlUmVmaW5lLnh3dCBiL3VpL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC51aS9yZXNvdXJjZXMvcHJvcGVydGllcy91aS9TaW5nbGVSZWZpbmUueHd0Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjliYTRjZTgKLS0tIC9kZXYvbnVsbAorKysgYi91aS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQudWkvcmVzb3VyY2VzL3Byb3BlcnRpZXMvdWkvU2luZ2xlUmVmaW5lLnh3dApAQCAtMCwwICsxLDggQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+DQorPENvbXBvc2l0ZSB4bWxuczpqPSJjbHItbmFtZXNwYWNlOmphdmEubGFuZyINCisJeG1sbnM6cHBlbD0iY2xyLW5hbWVzcGFjZTpvcmcuZWNsaXBzZS5wYXB5cnVzLnZpZXdzLnByb3BlcnRpZXMud2lkZ2V0cy5sYXlvdXQiDQorCXhtbG5zOng9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcveHd0IiB4bWxucz0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy94d3QvcHJlc2VudGF0aW9uIj4NCisJPENvbXBvc2l0ZS5sYXlvdXQ+DQorCQk8cHBlbDpQcm9wZXJ0aWVzTGF5b3V0PjwvcHBlbDpQcm9wZXJ0aWVzTGF5b3V0Pg0KKwk8L0NvbXBvc2l0ZS5sYXlvdXQ+DQorPC9Db21wb3NpdGU+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdWkvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnVpL3Jlc291cmNlcy9wcm9wZXJ0aWVzL3VpL1NpbmdsZVJlcXVpcmVtZW50Lnh3dCBiL3VpL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC51aS9yZXNvdXJjZXMvcHJvcGVydGllcy91aS9TaW5nbGVSZXF1aXJlbWVudC54d3QKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uM2VlYzg5OQotLS0gL2Rldi9udWxsCisrKyBiL3VpL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC51aS9yZXNvdXJjZXMvcHJvcGVydGllcy91aS9TaW5nbGVSZXF1aXJlbWVudC54d3QKQEAgLTAsMCArMSw1NiBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4NCis8Q29tcG9zaXRlIHhtbG5zOmo9ImNsci1uYW1lc3BhY2U6amF2YS5sYW5nIg0KKwl4bWxuczpwcGVsPSJjbHItbmFtZXNwYWNlOm9yZy5lY2xpcHNlLnBhcHlydXMudmlld3MucHJvcGVydGllcy53aWRnZXRzLmxheW91dCINCisJeG1sbnM6eD0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy94d3QiIHhtbG5zPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3h3dC9wcmVzZW50YXRpb24iDQorCXhtbG5zOnBwZT0iY2xyLW5hbWVzcGFjZTpvcmcuZWNsaXBzZS5wYXB5cnVzLnZpZXdzLnByb3BlcnRpZXMud2lkZ2V0cyI+DQorCTxDb21wb3NpdGUubGF5b3V0Pg0KKwkJPHBwZWw6UHJvcGVydGllc0xheW91dD48L3BwZWw6UHJvcGVydGllc0xheW91dD4NCisJPC9Db21wb3NpdGUubGF5b3V0Pg0KKwk8Q29tcG9zaXRlPg0KKwkJPENvbXBvc2l0ZS5sYXlvdXQ+DQorCQkJPHBwZWw6UHJvcGVydGllc0xheW91dCBudW1Db2x1bW5zPSIyIj48L3BwZWw6UHJvcGVydGllc0xheW91dD4NCisJCTwvQ29tcG9zaXRlLmxheW91dD4NCisJCTxwcGU6U3RyaW5nRWRpdG9yIGlucHV0PSJ7QmluZGluZ30iDQorCQkJcHJvcGVydHk9IlN5c01MOlJlcXVpcmVtZW50czpSZXF1aXJlbWVudDppZCI+PC9wcGU6U3RyaW5nRWRpdG9yPg0KKwkJPHBwZTpTdHJpbmdFZGl0b3IgaW5wdXQ9IntCaW5kaW5nfSIgcHJvcGVydHk9IlVNTDpOYW1lZEVsZW1lbnQ6bmFtZSI+PC9wcGU6U3RyaW5nRWRpdG9yPg0KKwk8L0NvbXBvc2l0ZT4NCisJPENvbXBvc2l0ZT4NCisJCTxDb21wb3NpdGUubGF5b3V0Pg0KKwkJCTxwcGVsOlByb3BlcnRpZXNMYXlvdXQ+PC9wcGVsOlByb3BlcnRpZXNMYXlvdXQ+DQorCQk8L0NvbXBvc2l0ZS5sYXlvdXQ+DQorCQk8cHBlOlN0cmluZ011bHRpbGluZSBpbnB1dD0ie0JpbmRpbmd9Ig0KKwkJCXByb3BlcnR5PSJTeXNNTDpSZXF1aXJlbWVudHM6UmVxdWlyZW1lbnQ6dGV4dCI+PC9wcGU6U3RyaW5nTXVsdGlsaW5lPg0KKwk8L0NvbXBvc2l0ZT4NCisJPENvbXBvc2l0ZT4NCisJCTxDb21wb3NpdGUubGF5b3V0Pg0KKwkJCTxwcGVsOlByb3BlcnRpZXNMYXlvdXQgbnVtQ29sdW1ucz0iMiI+PC9wcGVsOlByb3BlcnRpZXNMYXlvdXQ+DQorCQk8L0NvbXBvc2l0ZS5sYXlvdXQ+DQorCQk8cHBlOkJvb2xlYW5SYWRpbyBpbnB1dD0ie0JpbmRpbmd9IiBwcm9wZXJ0eT0iVU1MOkNsYXNzaWZpZXI6aXNBYnN0cmFjdCI+PC9wcGU6Qm9vbGVhblJhZGlvPg0KKwkJPHBwZTpCb29sZWFuUmFkaW8gaW5wdXQ9IntCaW5kaW5nfSINCisJCQlwcm9wZXJ0eT0iVU1MOlJlZGVmaW5hYmxlRWxlbWVudDppc0xlYWYiPjwvcHBlOkJvb2xlYW5SYWRpbz4NCisJPC9Db21wb3NpdGU+DQorCTxDb21wb3NpdGU+DQorCQk8Q29tcG9zaXRlLmxheW91dD4NCisJCQk8cHBlbDpQcm9wZXJ0aWVzTGF5b3V0PjwvcHBlbDpQcm9wZXJ0aWVzTGF5b3V0Pg0KKwkJPC9Db21wb3NpdGUubGF5b3V0Pg0KKwkJPHBwZTpSZWZlcmVuY2VEaWFsb2cgaW5wdXQ9IntCaW5kaW5nfSINCisJCQlwcm9wZXJ0eT0iU3lzTUw6UmVxdWlyZW1lbnRzOlJlcXVpcmVtZW50Om1hc3RlciI+PC9wcGU6UmVmZXJlbmNlRGlhbG9nPg0KKwk8L0NvbXBvc2l0ZT4NCisJPENvbXBvc2l0ZT4NCisJCTxDb21wb3NpdGUubGF5b3V0Pg0KKwkJCTxwcGVsOlByb3BlcnRpZXNMYXlvdXQgbnVtQ29sdW1ucz0iMiI+PC9wcGVsOlByb3BlcnRpZXNMYXlvdXQ+DQorCQk8L0NvbXBvc2l0ZS5sYXlvdXQ+DQorCQk8cHBlOk11bHRpUmVmZXJlbmNlIGlucHV0PSJ7QmluZGluZ30iDQorCQkJcHJvcGVydHk9IlN5c01MOlJlcXVpcmVtZW50czpSZXF1aXJlbWVudDpkZXJpdmVkIj48L3BwZTpNdWx0aVJlZmVyZW5jZT4NCisJCTxwcGU6TXVsdGlSZWZlcmVuY2UgaW5wdXQ9IntCaW5kaW5nfSINCisJCQlwcm9wZXJ0eT0iU3lzTUw6UmVxdWlyZW1lbnRzOlJlcXVpcmVtZW50OmRlcml2ZWRGcm9tIj48L3BwZTpNdWx0aVJlZmVyZW5jZT4NCisJCTxwcGU6TXVsdGlSZWZlcmVuY2UgaW5wdXQ9IntCaW5kaW5nfSINCisJCQlwcm9wZXJ0eT0iU3lzTUw6UmVxdWlyZW1lbnRzOlJlcXVpcmVtZW50OnJlZmluZWRCeSI+PC9wcGU6TXVsdGlSZWZlcmVuY2U+DQorCQk8cHBlOk11bHRpUmVmZXJlbmNlIGlucHV0PSJ7QmluZGluZ30iDQorCQkJcHJvcGVydHk9IlN5c01MOlJlcXVpcmVtZW50czpSZXF1aXJlbWVudDpzYXRpc2ZpZWRCeSI+PC9wcGU6TXVsdGlSZWZlcmVuY2U+DQorCQk8cHBlOk11bHRpUmVmZXJlbmNlIGlucHV0PSJ7QmluZGluZ30iDQorCQkJcHJvcGVydHk9IlN5c01MOlJlcXVpcmVtZW50czpSZXF1aXJlbWVudDp0cmFjZWRUbyI+PC9wcGU6TXVsdGlSZWZlcmVuY2U+DQorCQk8cHBlOk11bHRpUmVmZXJlbmNlIGlucHV0PSJ7QmluZGluZ30iDQorCQkJcHJvcGVydHk9IlN5c01MOlJlcXVpcmVtZW50czpSZXF1aXJlbWVudDp2ZXJpZmllZEJ5Ij48L3BwZTpNdWx0aVJlZmVyZW5jZT4NCisJPC9Db21wb3NpdGU+DQorPC9Db21wb3NpdGU+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdWkvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnVpL3Jlc291cmNlcy9wcm9wZXJ0aWVzL3VpL1NpbmdsZVJlcXVpcmVtZW50UmVsYXRlZC54d3QgYi91aS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQudWkvcmVzb3VyY2VzL3Byb3BlcnRpZXMvdWkvU2luZ2xlUmVxdWlyZW1lbnRSZWxhdGVkLnh3dApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi4zZWFkYWU3Ci0tLSAvZGV2L251bGwKKysrIGIvdWkvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnVpL3Jlc291cmNlcy9wcm9wZXJ0aWVzL3VpL1NpbmdsZVJlcXVpcmVtZW50UmVsYXRlZC54d3QKQEAgLTAsMCArMSwzNCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4NCis8Q29tcG9zaXRlIHhtbG5zOmo9ImNsci1uYW1lc3BhY2U6amF2YS5sYW5nIg0KKwl4bWxuczpwcGVsPSJjbHItbmFtZXNwYWNlOm9yZy5lY2xpcHNlLnBhcHlydXMudmlld3MucHJvcGVydGllcy53aWRnZXRzLmxheW91dCINCisJeG1sbnM6eD0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy94d3QiIHhtbG5zPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3h3dC9wcmVzZW50YXRpb24iDQorCXhtbG5zOnBwZT0iY2xyLW5hbWVzcGFjZTpvcmcuZWNsaXBzZS5wYXB5cnVzLnZpZXdzLnByb3BlcnRpZXMud2lkZ2V0cyI+DQorCTxDb21wb3NpdGUubGF5b3V0Pg0KKwkJPHBwZWw6UHJvcGVydGllc0xheW91dD48L3BwZWw6UHJvcGVydGllc0xheW91dD4NCisJPC9Db21wb3NpdGUubGF5b3V0Pg0KKwk8Q29tcG9zaXRlPg0KKwkJPENvbXBvc2l0ZS5sYXlvdXQ+DQorCQkJPHBwZWw6UHJvcGVydGllc0xheW91dD48L3BwZWw6UHJvcGVydGllc0xheW91dD4NCisJCTwvQ29tcG9zaXRlLmxheW91dD4NCisJCTxwcGU6U3RyaW5nRWRpdG9yIGlucHV0PSJ7QmluZGluZ30iIHByb3BlcnR5PSJVTUw6TmFtZWRFbGVtZW50Om5hbWUiPjwvcHBlOlN0cmluZ0VkaXRvcj4NCisJPC9Db21wb3NpdGU+DQorCTxDb21wb3NpdGU+DQorCQk8Q29tcG9zaXRlLmxheW91dD4NCisJCQk8cHBlbDpQcm9wZXJ0aWVzTGF5b3V0PjwvcHBlbDpQcm9wZXJ0aWVzTGF5b3V0Pg0KKwkJPC9Db21wb3NpdGUubGF5b3V0Pg0KKwkJPHBwZTpFbnVtQ29tYm8gaW5wdXQ9IntCaW5kaW5nfSIgcHJvcGVydHk9IlVNTDpOYW1lZEVsZW1lbnQ6dmlzaWJpbGl0eSI+PC9wcGU6RW51bUNvbWJvPg0KKwk8L0NvbXBvc2l0ZT4NCisJPENvbXBvc2l0ZT4NCisJCTxDb21wb3NpdGUubGF5b3V0Pg0KKwkJCTxwcGVsOlByb3BlcnRpZXNMYXlvdXQgbnVtQ29sdW1ucz0iMiI+PC9wcGVsOlByb3BlcnRpZXNMYXlvdXQ+DQorCQk8L0NvbXBvc2l0ZS5sYXlvdXQ+DQorCQk8cHBlOk11bHRpUmVmZXJlbmNlIGlucHV0PSJ7QmluZGluZ30iDQorCQkJcHJvcGVydHk9IlN5c01MOlJlcXVpcmVtZW50czpSZXF1aXJlbWVudFJlbGF0ZWQ6cmVmaW5lcyI+PC9wcGU6TXVsdGlSZWZlcmVuY2U+DQorCQk8cHBlOk11bHRpUmVmZXJlbmNlIGlucHV0PSJ7QmluZGluZ30iDQorCQkJcHJvcGVydHk9IlN5c01MOlJlcXVpcmVtZW50czpSZXF1aXJlbWVudFJlbGF0ZWQ6c2F0aXNmaWVzIj48L3BwZTpNdWx0aVJlZmVyZW5jZT4NCisJCTxwcGU6TXVsdGlSZWZlcmVuY2UgaW5wdXQ9IntCaW5kaW5nfSINCisJCQlwcm9wZXJ0eT0iU3lzTUw6UmVxdWlyZW1lbnRzOlJlcXVpcmVtZW50UmVsYXRlZDp0cmFjZWRGcm9tIj48L3BwZTpNdWx0aVJlZmVyZW5jZT4NCisJCTxwcGU6TXVsdGlSZWZlcmVuY2UgaW5wdXQ9IntCaW5kaW5nfSINCisJCQlwcm9wZXJ0eT0iU3lzTUw6UmVxdWlyZW1lbnRzOlJlcXVpcmVtZW50UmVsYXRlZDp2ZXJpZmllcyI+PC9wcGU6TXVsdGlSZWZlcmVuY2U+DQorCTwvQ29tcG9zaXRlPg0KKzwvQ29tcG9zaXRlPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3VpL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC51aS9yZXNvdXJjZXMvcHJvcGVydGllcy91aS9TaW5nbGVTYXRpc2Z5Lnh3dCBiL3VpL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC51aS9yZXNvdXJjZXMvcHJvcGVydGllcy91aS9TaW5nbGVTYXRpc2Z5Lnh3dApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi45YmE0Y2U4Ci0tLSAvZGV2L251bGwKKysrIGIvdWkvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnVpL3Jlc291cmNlcy9wcm9wZXJ0aWVzL3VpL1NpbmdsZVNhdGlzZnkueHd0CkBAIC0wLDAgKzEsOCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4NCis8Q29tcG9zaXRlIHhtbG5zOmo9ImNsci1uYW1lc3BhY2U6amF2YS5sYW5nIg0KKwl4bWxuczpwcGVsPSJjbHItbmFtZXNwYWNlOm9yZy5lY2xpcHNlLnBhcHlydXMudmlld3MucHJvcGVydGllcy53aWRnZXRzLmxheW91dCINCisJeG1sbnM6eD0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy94d3QiIHhtbG5zPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3h3dC9wcmVzZW50YXRpb24iPg0KKwk8Q29tcG9zaXRlLmxheW91dD4NCisJCTxwcGVsOlByb3BlcnRpZXNMYXlvdXQ+PC9wcGVsOlByb3BlcnRpZXNMYXlvdXQ+DQorCTwvQ29tcG9zaXRlLmxheW91dD4NCis8L0NvbXBvc2l0ZT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS91aS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQudWkvcmVzb3VyY2VzL3Byb3BlcnRpZXMvdWkvU2luZ2xlU3Rha2Vob2xkZXIueHd0IGIvdWkvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnVpL3Jlc291cmNlcy9wcm9wZXJ0aWVzL3VpL1NpbmdsZVN0YWtlaG9sZGVyLnh3dApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi43MDA4YjA4Ci0tLSAvZGV2L251bGwKKysrIGIvdWkvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnVpL3Jlc291cmNlcy9wcm9wZXJ0aWVzL3VpL1NpbmdsZVN0YWtlaG9sZGVyLnh3dApAQCAtMCwwICsxLDE2IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/Pg0KKzxDb21wb3NpdGUgeG1sbnM6aj0iY2xyLW5hbWVzcGFjZTpqYXZhLmxhbmciDQorCXhtbG5zOnBwZWw9ImNsci1uYW1lc3BhY2U6b3JnLmVjbGlwc2UucGFweXJ1cy52aWV3cy5wcm9wZXJ0aWVzLndpZGdldHMubGF5b3V0Ig0KKwl4bWxuczp4PSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3h3dCIgeG1sbnM9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcveHd0L3ByZXNlbnRhdGlvbiINCisJeG1sbnM6cHBlPSJjbHItbmFtZXNwYWNlOm9yZy5lY2xpcHNlLnBhcHlydXMudmlld3MucHJvcGVydGllcy53aWRnZXRzIj4NCisJPENvbXBvc2l0ZS5sYXlvdXQ+DQorCQk8cHBlbDpQcm9wZXJ0aWVzTGF5b3V0PjwvcHBlbDpQcm9wZXJ0aWVzTGF5b3V0Pg0KKwk8L0NvbXBvc2l0ZS5sYXlvdXQ+DQorCTxDb21wb3NpdGU+DQorCQk8Q29tcG9zaXRlLmxheW91dD4NCisJCQk8cHBlbDpQcm9wZXJ0aWVzTGF5b3V0IG51bUNvbHVtbnM9IjEiPjwvcHBlbDpQcm9wZXJ0aWVzTGF5b3V0Pg0KKwkJPC9Db21wb3NpdGUubGF5b3V0Pg0KKwkJPHBwZTpNdWx0aVJlZmVyZW5jZSBpbnB1dD0ie0JpbmRpbmd9Ig0KKwkJCXByb3BlcnR5PSJTeXNNTDpNb2RlbEVsZW1lbnRzOlN0YWtlaG9sZGVyOmNvbmNlcm4iPjwvcHBlOk11bHRpUmVmZXJlbmNlPg0KKwk8L0NvbXBvc2l0ZT4NCis8L0NvbXBvc2l0ZT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS91aS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQudWkvcmVzb3VyY2VzL3Byb3BlcnRpZXMvdWkvU2luZ2xlVGVzdENhc2UueHd0IGIvdWkvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnVpL3Jlc291cmNlcy9wcm9wZXJ0aWVzL3VpL1NpbmdsZVRlc3RDYXNlLnh3dApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi4yZjUxZGY2Ci0tLSAvZGV2L251bGwKKysrIGIvdWkvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnVpL3Jlc291cmNlcy9wcm9wZXJ0aWVzL3VpL1NpbmdsZVRlc3RDYXNlLnh3dApAQCAtMCwwICsxLDQxIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/Pg0KKzxDb21wb3NpdGUgeG1sbnM6aj0iY2xyLW5hbWVzcGFjZTpqYXZhLmxhbmciDQorCXhtbG5zOnBwZWw9ImNsci1uYW1lc3BhY2U6b3JnLmVjbGlwc2UucGFweXJ1cy52aWV3cy5wcm9wZXJ0aWVzLndpZGdldHMubGF5b3V0Ig0KKwl4bWxuczp4PSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3h3dCIgeG1sbnM9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcveHd0L3ByZXNlbnRhdGlvbiINCisJeG1sbnM6cHBlPSJjbHItbmFtZXNwYWNlOm9yZy5lY2xpcHNlLnBhcHlydXMudmlld3MucHJvcGVydGllcy53aWRnZXRzIj4NCisJPENvbXBvc2l0ZS5sYXlvdXQ+DQorCQk8cHBlbDpQcm9wZXJ0aWVzTGF5b3V0PjwvcHBlbDpQcm9wZXJ0aWVzTGF5b3V0Pg0KKwk8L0NvbXBvc2l0ZS5sYXlvdXQ+DQorCTxDb21wb3NpdGU+DQorCQk8Q29tcG9zaXRlLmxheW91dD4NCisJCQk8cHBlbDpQcm9wZXJ0aWVzTGF5b3V0PjwvcHBlbDpQcm9wZXJ0aWVzTGF5b3V0Pg0KKwkJPC9Db21wb3NpdGUubGF5b3V0Pg0KKwkJPHBwZTpTdHJpbmdFZGl0b3IgaW5wdXQ9IntCaW5kaW5nfSIgcHJvcGVydHk9IlVNTDpOYW1lZEVsZW1lbnQ6bmFtZSI+PC9wcGU6U3RyaW5nRWRpdG9yPg0KKwk8L0NvbXBvc2l0ZT4NCisJPENvbXBvc2l0ZT4NCisJCTxDb21wb3NpdGUubGF5b3V0Pg0KKwkJCTxwcGVsOlByb3BlcnRpZXNMYXlvdXQgbnVtQ29sdW1ucz0iMiI+PC9wcGVsOlByb3BlcnRpZXNMYXlvdXQ+DQorCQk8L0NvbXBvc2l0ZS5sYXlvdXQ+DQorCQk8cHBlOkJvb2xlYW5SYWRpbyBpbnB1dD0ie0JpbmRpbmd9IiBwcm9wZXJ0eT0iVU1MOkNsYXNzaWZpZXI6aXNBYnN0cmFjdCI+PC9wcGU6Qm9vbGVhblJhZGlvPg0KKwkJPHBwZTpCb29sZWFuUmFkaW8gaW5wdXQ9IntCaW5kaW5nfSIgcHJvcGVydHk9IlVNTDpDbGFzczppc0FjdGl2ZSI+PC9wcGU6Qm9vbGVhblJhZGlvPg0KKwkJPHBwZTpCb29sZWFuUmFkaW8gaW5wdXQ9IntCaW5kaW5nfSINCisJCQlwcm9wZXJ0eT0iVU1MOlJlZGVmaW5hYmxlRWxlbWVudDppc0xlYWYiPjwvcHBlOkJvb2xlYW5SYWRpbz4NCisJCTxwcGU6Qm9vbGVhblJhZGlvIGlucHV0PSJ7QmluZGluZ30iIHByb3BlcnR5PSJVTUw6T3BlcmF0aW9uOmlzUXVlcnkiPjwvcHBlOkJvb2xlYW5SYWRpbz4NCisJCTxwcGU6Qm9vbGVhblJhZGlvIGlucHV0PSJ7QmluZGluZ30iIHByb3BlcnR5PSJVTUw6QmVoYXZpb3I6aXNSZWVudHJhbnQiPjwvcHBlOkJvb2xlYW5SYWRpbz4NCisJCTxwcGU6Qm9vbGVhblJhZGlvIGlucHV0PSJ7QmluZGluZ30iIHByb3BlcnR5PSJVTUw6RmVhdHVyZTppc1N0YXRpYyI+PC9wcGU6Qm9vbGVhblJhZGlvPg0KKwk8L0NvbXBvc2l0ZT4NCisJPENvbXBvc2l0ZT4NCisJCTxDb21wb3NpdGUubGF5b3V0Pg0KKwkJCTxwcGVsOlByb3BlcnRpZXNMYXlvdXQgbnVtQ29sdW1ucz0iMiI+PC9wcGVsOlByb3BlcnRpZXNMYXlvdXQ+DQorCQk8L0NvbXBvc2l0ZS5sYXlvdXQ+DQorCQk8cHBlOkVudW1Db21ibyBpbnB1dD0ie0JpbmRpbmd9IiBwcm9wZXJ0eT0iVU1MOkJlaGF2aW9yYWxGZWF0dXJlOmNvbmN1cnJlbmN5Ij48L3BwZTpFbnVtQ29tYm8+DQorCQk8cHBlOkVudW1Db21ibyBpbnB1dD0ie0JpbmRpbmd9IiBwcm9wZXJ0eT0iVU1MOk5hbWVkRWxlbWVudDp2aXNpYmlsaXR5Ij48L3BwZTpFbnVtQ29tYm8+DQorCTwvQ29tcG9zaXRlPg0KKwk8Q29tcG9zaXRlPg0KKwkJPENvbXBvc2l0ZS5sYXlvdXQ+DQorCQkJPHBwZWw6UHJvcGVydGllc0xheW91dD48L3BwZWw6UHJvcGVydGllc0xheW91dD4NCisJCTwvQ29tcG9zaXRlLmxheW91dD4NCisJCTxwcGU6TXVsdGlSZWZlcmVuY2UgaW5wdXQ9IntCaW5kaW5nfSINCisJCQlwcm9wZXJ0eT0iU3lzTUw6UmVxdWlyZW1lbnRzOlRlc3RDYXNlOnZlcmlmaWVzIj48L3BwZTpNdWx0aVJlZmVyZW5jZT4NCisJPC9Db21wb3NpdGU+DQorPC9Db21wb3NpdGU+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdWkvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnVpL3Jlc291cmNlcy9wcm9wZXJ0aWVzL3VpL1NpbmdsZVRyYWNlLnh3dCBiL3VpL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC51aS9yZXNvdXJjZXMvcHJvcGVydGllcy91aS9TaW5nbGVUcmFjZS54d3QKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uOWJhNGNlOAotLS0gL2Rldi9udWxsCisrKyBiL3VpL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC51aS9yZXNvdXJjZXMvcHJvcGVydGllcy91aS9TaW5nbGVUcmFjZS54d3QKQEAgLTAsMCArMSw4IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/Pg0KKzxDb21wb3NpdGUgeG1sbnM6aj0iY2xyLW5hbWVzcGFjZTpqYXZhLmxhbmciDQorCXhtbG5zOnBwZWw9ImNsci1uYW1lc3BhY2U6b3JnLmVjbGlwc2UucGFweXJ1cy52aWV3cy5wcm9wZXJ0aWVzLndpZGdldHMubGF5b3V0Ig0KKwl4bWxuczp4PSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3h3dCIgeG1sbnM9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcveHd0L3ByZXNlbnRhdGlvbiI+DQorCTxDb21wb3NpdGUubGF5b3V0Pg0KKwkJPHBwZWw6UHJvcGVydGllc0xheW91dD48L3BwZWw6UHJvcGVydGllc0xheW91dD4NCisJPC9Db21wb3NpdGUubGF5b3V0Pg0KKzwvQ29tcG9zaXRlPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3VpL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC51aS9yZXNvdXJjZXMvcHJvcGVydGllcy91aS9TaW5nbGVUcmlnZ2VyT25OZXN0ZWRQb3J0Lnh3dCBiL3VpL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC51aS9yZXNvdXJjZXMvcHJvcGVydGllcy91aS9TaW5nbGVUcmlnZ2VyT25OZXN0ZWRQb3J0Lnh3dApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi41MTI1N2Y4Ci0tLSAvZGV2L251bGwKKysrIGIvdWkvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnVpL3Jlc291cmNlcy9wcm9wZXJ0aWVzL3VpL1NpbmdsZVRyaWdnZXJPbk5lc3RlZFBvcnQueHd0CkBAIC0wLDAgKzEsMTYgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+DQorPENvbXBvc2l0ZSB4bWxuczpqPSJjbHItbmFtZXNwYWNlOmphdmEubGFuZyINCisJeG1sbnM6cHBlbD0iY2xyLW5hbWVzcGFjZTpvcmcuZWNsaXBzZS5wYXB5cnVzLnZpZXdzLnByb3BlcnRpZXMud2lkZ2V0cy5sYXlvdXQiDQorCXhtbG5zOng9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcveHd0IiB4bWxucz0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy94d3QvcHJlc2VudGF0aW9uIg0KKwl4bWxuczpwcGU9ImNsci1uYW1lc3BhY2U6b3JnLmVjbGlwc2UucGFweXJ1cy52aWV3cy5wcm9wZXJ0aWVzLndpZGdldHMiPg0KKwk8Q29tcG9zaXRlLmxheW91dD4NCisJCTxwcGVsOlByb3BlcnRpZXNMYXlvdXQ+PC9wcGVsOlByb3BlcnRpZXNMYXlvdXQ+DQorCTwvQ29tcG9zaXRlLmxheW91dD4NCisJPENvbXBvc2l0ZT4NCisJCTxDb21wb3NpdGUubGF5b3V0Pg0KKwkJCTxwcGVsOlByb3BlcnRpZXNMYXlvdXQgbnVtQ29sdW1ucz0iMSI+PC9wcGVsOlByb3BlcnRpZXNMYXlvdXQ+DQorCQk8L0NvbXBvc2l0ZS5sYXlvdXQ+DQorCQk8cHBlOk11bHRpUmVmZXJlbmNlIGlucHV0PSJ7QmluZGluZ30iDQorCQkJcHJvcGVydHk9IlN5c01MOlBvcnRzYW5kRmxvd3M6VHJpZ2dlck9uTmVzdGVkUG9ydDpvbk5lc3RlZFBvcnQiPjwvcHBlOk11bHRpUmVmZXJlbmNlPg0KKwk8L0NvbXBvc2l0ZT4NCis8L0NvbXBvc2l0ZT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS91aS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQudWkvcmVzb3VyY2VzL3Byb3BlcnRpZXMvdWkvU2luZ2xlVmFsdWVUeXBlLnh3dCBiL3VpL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC51aS9yZXNvdXJjZXMvcHJvcGVydGllcy91aS9TaW5nbGVWYWx1ZVR5cGUueHd0Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmZlZTYwN2YKLS0tIC9kZXYvbnVsbAorKysgYi91aS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQudWkvcmVzb3VyY2VzL3Byb3BlcnRpZXMvdWkvU2luZ2xlVmFsdWVUeXBlLnh3dApAQCAtMCwwICsxLDM4IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/Pg0KKzxDb21wb3NpdGUgeG1sbnM6aj0iY2xyLW5hbWVzcGFjZTpqYXZhLmxhbmciDQorCXhtbG5zOnBwZWw9ImNsci1uYW1lc3BhY2U6b3JnLmVjbGlwc2UucGFweXJ1cy52aWV3cy5wcm9wZXJ0aWVzLndpZGdldHMubGF5b3V0Ig0KKwl4bWxuczp4PSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3h3dCIgeG1sbnM9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcveHd0L3ByZXNlbnRhdGlvbiINCisJeG1sbnM6cHBlPSJjbHItbmFtZXNwYWNlOm9yZy5lY2xpcHNlLnBhcHlydXMudmlld3MucHJvcGVydGllcy53aWRnZXRzIj4NCisJPENvbXBvc2l0ZS5sYXlvdXQ+DQorCQk8cHBlbDpQcm9wZXJ0aWVzTGF5b3V0PjwvcHBlbDpQcm9wZXJ0aWVzTGF5b3V0Pg0KKwk8L0NvbXBvc2l0ZS5sYXlvdXQ+DQorCTxDb21wb3NpdGU+DQorCQk8Q29tcG9zaXRlLmxheW91dD4NCisJCQk8cHBlbDpQcm9wZXJ0aWVzTGF5b3V0PjwvcHBlbDpQcm9wZXJ0aWVzTGF5b3V0Pg0KKwkJPC9Db21wb3NpdGUubGF5b3V0Pg0KKwkJPHBwZTpTdHJpbmdFZGl0b3IgaW5wdXQ9IntCaW5kaW5nfSIgcHJvcGVydHk9IlVNTDpOYW1lZEVsZW1lbnQ6bmFtZSI+PC9wcGU6U3RyaW5nRWRpdG9yPg0KKwk8L0NvbXBvc2l0ZT4NCisJPENvbXBvc2l0ZT4NCisJCTxDb21wb3NpdGUubGF5b3V0Pg0KKwkJCTxwcGVsOlByb3BlcnRpZXNMYXlvdXQgbnVtQ29sdW1ucz0iMiI+PC9wcGVsOlByb3BlcnRpZXNMYXlvdXQ+DQorCQk8L0NvbXBvc2l0ZS5sYXlvdXQ+DQorCQk8cHBlOkJvb2xlYW5SYWRpbyBpbnB1dD0ie0JpbmRpbmd9IiBwcm9wZXJ0eT0iVU1MOkNsYXNzaWZpZXI6aXNBYnN0cmFjdCI+PC9wcGU6Qm9vbGVhblJhZGlvPg0KKwkJPHBwZTpCb29sZWFuUmFkaW8gaW5wdXQ9IntCaW5kaW5nfSINCisJCQlwcm9wZXJ0eT0iVU1MOlJlZGVmaW5hYmxlRWxlbWVudDppc0xlYWYiPjwvcHBlOkJvb2xlYW5SYWRpbz4NCisJPC9Db21wb3NpdGU+DQorCTxDb21wb3NpdGU+DQorCQk8Q29tcG9zaXRlLmxheW91dD4NCisJCQk8cHBlbDpQcm9wZXJ0aWVzTGF5b3V0PjwvcHBlbDpQcm9wZXJ0aWVzTGF5b3V0Pg0KKwkJPC9Db21wb3NpdGUubGF5b3V0Pg0KKwkJPHBwZTpFbnVtQ29tYm8gaW5wdXQ9IntCaW5kaW5nfSIgcHJvcGVydHk9IlVNTDpOYW1lZEVsZW1lbnQ6dmlzaWJpbGl0eSI+PC9wcGU6RW51bUNvbWJvPg0KKwk8L0NvbXBvc2l0ZT4NCisJPENvbXBvc2l0ZT4NCisJCTxDb21wb3NpdGUubGF5b3V0Pg0KKwkJCTxwcGVsOlByb3BlcnRpZXNMYXlvdXQgbnVtQ29sdW1ucz0iMiI+PC9wcGVsOlByb3BlcnRpZXNMYXlvdXQ+DQorCQk8L0NvbXBvc2l0ZS5sYXlvdXQ+DQorCQk8cHBlOlJlZmVyZW5jZURpYWxvZyBpbnB1dD0ie0JpbmRpbmd9Ig0KKwkJCXByb3BlcnR5PSJTeXNNTDpCbG9ja3M6VmFsdWVUeXBlOnVuaXQiPjwvcHBlOlJlZmVyZW5jZURpYWxvZz4NCisJCTxwcGU6UmVmZXJlbmNlRGlhbG9nIGlucHV0PSJ7QmluZGluZ30iDQorCQkJcHJvcGVydHk9IlN5c01MOkJsb2NrczpWYWx1ZVR5cGU6cXVhbnRpdHlLaW5kIj48L3BwZTpSZWZlcmVuY2VEaWFsb2c+DQorCTwvQ29tcG9zaXRlPg0KKzwvQ29tcG9zaXRlPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3VpL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC51aS9yZXNvdXJjZXMvcHJvcGVydGllcy91aS9TaW5nbGVWZXJpZnkueHd0IGIvdWkvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnVpL3Jlc291cmNlcy9wcm9wZXJ0aWVzL3VpL1NpbmdsZVZlcmlmeS54d3QKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uOWJhNGNlOAotLS0gL2Rldi9udWxsCisrKyBiL3VpL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC51aS9yZXNvdXJjZXMvcHJvcGVydGllcy91aS9TaW5nbGVWZXJpZnkueHd0CkBAIC0wLDAgKzEsOCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4NCis8Q29tcG9zaXRlIHhtbG5zOmo9ImNsci1uYW1lc3BhY2U6amF2YS5sYW5nIg0KKwl4bWxuczpwcGVsPSJjbHItbmFtZXNwYWNlOm9yZy5lY2xpcHNlLnBhcHlydXMudmlld3MucHJvcGVydGllcy53aWRnZXRzLmxheW91dCINCisJeG1sbnM6eD0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy94d3QiIHhtbG5zPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3h3dC9wcmVzZW50YXRpb24iPg0KKwk8Q29tcG9zaXRlLmxheW91dD4NCisJCTxwcGVsOlByb3BlcnRpZXNMYXlvdXQ+PC9wcGVsOlByb3BlcnRpZXNMYXlvdXQ+DQorCTwvQ29tcG9zaXRlLmxheW91dD4NCis8L0NvbXBvc2l0ZT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS91aS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQudWkvcmVzb3VyY2VzL3Byb3BlcnRpZXMvdWkvU2luZ2xlVmlldy54d3QgYi91aS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQudWkvcmVzb3VyY2VzL3Byb3BlcnRpZXMvdWkvU2luZ2xlVmlldy54d3QKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uNjEzYjNiOQotLS0gL2Rldi9udWxsCisrKyBiL3VpL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC51aS9yZXNvdXJjZXMvcHJvcGVydGllcy91aS9TaW5nbGVWaWV3Lnh3dApAQCAtMCwwICsxLDI4IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/Pg0KKzxDb21wb3NpdGUgeG1sbnM6aj0iY2xyLW5hbWVzcGFjZTpqYXZhLmxhbmciDQorCXhtbG5zOnBwZWw9ImNsci1uYW1lc3BhY2U6b3JnLmVjbGlwc2UucGFweXJ1cy52aWV3cy5wcm9wZXJ0aWVzLndpZGdldHMubGF5b3V0Ig0KKwl4bWxuczp4PSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3h3dCIgeG1sbnM9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcveHd0L3ByZXNlbnRhdGlvbiINCisJeG1sbnM6cHBlPSJjbHItbmFtZXNwYWNlOm9yZy5lY2xpcHNlLnBhcHlydXMudmlld3MucHJvcGVydGllcy53aWRnZXRzIj4NCisJPENvbXBvc2l0ZS5sYXlvdXQ+DQorCQk8cHBlbDpQcm9wZXJ0aWVzTGF5b3V0PjwvcHBlbDpQcm9wZXJ0aWVzTGF5b3V0Pg0KKwk8L0NvbXBvc2l0ZS5sYXlvdXQ+DQorCTxDb21wb3NpdGU+DQorCQk8Q29tcG9zaXRlLmxheW91dD4NCisJCQk8cHBlbDpQcm9wZXJ0aWVzTGF5b3V0PjwvcHBlbDpQcm9wZXJ0aWVzTGF5b3V0Pg0KKwkJPC9Db21wb3NpdGUubGF5b3V0Pg0KKwkJPHBwZTpTdHJpbmdFZGl0b3IgaW5wdXQ9IntCaW5kaW5nfSIgcHJvcGVydHk9IlVNTDpOYW1lZEVsZW1lbnQ6bmFtZSI+PC9wcGU6U3RyaW5nRWRpdG9yPg0KKwk8L0NvbXBvc2l0ZT4NCisJPENvbXBvc2l0ZT4NCisJCTxDb21wb3NpdGUubGF5b3V0Pg0KKwkJCTxwcGVsOlByb3BlcnRpZXNMYXlvdXQ+PC9wcGVsOlByb3BlcnRpZXNMYXlvdXQ+DQorCQk8L0NvbXBvc2l0ZS5sYXlvdXQ+DQorCQk8cHBlOkVudW1Db21ibyBpbnB1dD0ie0JpbmRpbmd9IiBwcm9wZXJ0eT0iVU1MOk5hbWVkRWxlbWVudDp2aXNpYmlsaXR5Ij48L3BwZTpFbnVtQ29tYm8+DQorCTwvQ29tcG9zaXRlPg0KKwk8Q29tcG9zaXRlPg0KKwkJPENvbXBvc2l0ZS5sYXlvdXQ+DQorCQkJPHBwZWw6UHJvcGVydGllc0xheW91dD48L3BwZWw6UHJvcGVydGllc0xheW91dD4NCisJCTwvQ29tcG9zaXRlLmxheW91dD4NCisJCTxwcGU6UmVmZXJlbmNlRGlhbG9nIGlucHV0PSJ7QmluZGluZ30iDQorCQkJcHJvcGVydHk9IlN5c01MOk1vZGVsRWxlbWVudHM6Vmlldzp2aWV3UG9pbnQiPjwvcHBlOlJlZmVyZW5jZURpYWxvZz4NCisJPC9Db21wb3NpdGU+DQorPC9Db21wb3NpdGU+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdWkvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnVpL3Jlc291cmNlcy9wcm9wZXJ0aWVzL3VpL1NpbmdsZVZpZXdQb2ludC54d3QgYi91aS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQudWkvcmVzb3VyY2VzL3Byb3BlcnRpZXMvdWkvU2luZ2xlVmlld1BvaW50Lnh3dApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi42NTYwZTU4Ci0tLSAvZGV2L251bGwKKysrIGIvdWkvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnVpL3Jlc291cmNlcy9wcm9wZXJ0aWVzL3VpL1NpbmdsZVZpZXdQb2ludC54d3QKQEAgLTAsMCArMSw0MyBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4NCis8Q29tcG9zaXRlIHhtbG5zOmo9ImNsci1uYW1lc3BhY2U6amF2YS5sYW5nIg0KKwl4bWxuczpwcGVsPSJjbHItbmFtZXNwYWNlOm9yZy5lY2xpcHNlLnBhcHlydXMudmlld3MucHJvcGVydGllcy53aWRnZXRzLmxheW91dCINCisJeG1sbnM6eD0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy94d3QiIHhtbG5zPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3h3dC9wcmVzZW50YXRpb24iDQorCXhtbG5zOnBwZT0iY2xyLW5hbWVzcGFjZTpvcmcuZWNsaXBzZS5wYXB5cnVzLnZpZXdzLnByb3BlcnRpZXMud2lkZ2V0cyI+DQorCTxDb21wb3NpdGUubGF5b3V0Pg0KKwkJPHBwZWw6UHJvcGVydGllc0xheW91dD48L3BwZWw6UHJvcGVydGllc0xheW91dD4NCisJPC9Db21wb3NpdGUubGF5b3V0Pg0KKwk8Q29tcG9zaXRlPg0KKwkJPENvbXBvc2l0ZS5sYXlvdXQ+DQorCQkJPHBwZWw6UHJvcGVydGllc0xheW91dCBudW1Db2x1bW5zPSIyIj48L3BwZWw6UHJvcGVydGllc0xheW91dD4NCisJCTwvQ29tcG9zaXRlLmxheW91dD4NCisJCTxwcGU6TXVsdGlTdHJpbmcgaW5wdXQ9IntCaW5kaW5nfSINCisJCQlwcm9wZXJ0eT0iU3lzTUw6TW9kZWxFbGVtZW50czpWaWV3UG9pbnQ6Y29uY2VybnMiPjwvcHBlOk11bHRpU3RyaW5nPg0KKwkJPHBwZTpNdWx0aVN0cmluZyBpbnB1dD0ie0JpbmRpbmd9Ig0KKwkJCXByb3BlcnR5PSJTeXNNTDpNb2RlbEVsZW1lbnRzOlZpZXdQb2ludDpsYW5ndWFnZXMiPjwvcHBlOk11bHRpU3RyaW5nPg0KKwkJPHBwZTpNdWx0aVN0cmluZyBpbnB1dD0ie0JpbmRpbmd9Ig0KKwkJCXByb3BlcnR5PSJTeXNNTDpNb2RlbEVsZW1lbnRzOlZpZXdQb2ludDptZXRob2RzIj48L3BwZTpNdWx0aVN0cmluZz4NCisJCTxwcGU6U3RyaW5nRWRpdG9yIGlucHV0PSJ7QmluZGluZ30iIHByb3BlcnR5PSJVTUw6TmFtZWRFbGVtZW50Om5hbWUiPjwvcHBlOlN0cmluZ0VkaXRvcj4NCisJCTxwcGU6U3RyaW5nRWRpdG9yIGlucHV0PSJ7QmluZGluZ30iDQorCQkJcHJvcGVydHk9IlN5c01MOk1vZGVsRWxlbWVudHM6Vmlld1BvaW50OnB1cnBvc2UiPjwvcHBlOlN0cmluZ0VkaXRvcj4NCisJCTxwcGU6TXVsdGlTdHJpbmcgaW5wdXQ9IntCaW5kaW5nfSINCisJCQlwcm9wZXJ0eT0iU3lzTUw6TW9kZWxFbGVtZW50czpWaWV3UG9pbnQ6c3Rha2VIb2xkZXJzIj48L3BwZTpNdWx0aVN0cmluZz4NCisJPC9Db21wb3NpdGU+DQorCTxDb21wb3NpdGU+DQorCQk8Q29tcG9zaXRlLmxheW91dD4NCisJCQk8cHBlbDpQcm9wZXJ0aWVzTGF5b3V0IG51bUNvbHVtbnM9IjIiPjwvcHBlbDpQcm9wZXJ0aWVzTGF5b3V0Pg0KKwkJPC9Db21wb3NpdGUubGF5b3V0Pg0KKwkJPHBwZTpNdWx0aVN0cmluZyBpbnB1dD0ie0JpbmRpbmd9Ig0KKwkJCXByb3BlcnR5PSJTeXNNTDpNb2RlbEVsZW1lbnRzOlZpZXdQb2ludDpsYW5ndWFnZSI+PC9wcGU6TXVsdGlTdHJpbmc+DQorCQk8cHBlOk11bHRpU3RyaW5nIGlucHV0PSJ7QmluZGluZ30iDQorCQkJcHJvcGVydHk9IlN5c01MOk1vZGVsRWxlbWVudHM6Vmlld1BvaW50OnByZXNlbnRhdGlvbiI+PC9wcGU6TXVsdGlTdHJpbmc+DQorCTwvQ29tcG9zaXRlPg0KKwk8Q29tcG9zaXRlPg0KKwkJPENvbXBvc2l0ZS5sYXlvdXQ+DQorCQkJPHBwZWw6UHJvcGVydGllc0xheW91dCBudW1Db2x1bW5zPSIxIj48L3BwZWw6UHJvcGVydGllc0xheW91dD4NCisJCTwvQ29tcG9zaXRlLmxheW91dD4NCisJCTxwcGU6TXVsdGlSZWZlcmVuY2UgaW5wdXQ9IntCaW5kaW5nfSINCisJCQlwcm9wZXJ0eT0iU3lzTUw6TW9kZWxFbGVtZW50czpWaWV3UG9pbnQ6c3Rha2Vob2xkZXIiPjwvcHBlOk11bHRpUmVmZXJlbmNlPg0KKwkJPHBwZTpNdWx0aVJlZmVyZW5jZSBpbnB1dD0ie0JpbmRpbmd9Ig0KKwkJCXByb3BlcnR5PSJTeXNNTDpNb2RlbEVsZW1lbnRzOlZpZXdQb2ludDpjb25jZXJuTGlzdCI+PC9wcGU6TXVsdGlSZWZlcmVuY2U+DQorCTwvQ29tcG9zaXRlPg0KKzwvQ29tcG9zaXRlPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3VpL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC51aS9zcmMvb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L3VpL0FjdGl2YXRvci5qYXZhIGIvdWkvb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnVpL3NyYy9vcmcvZWNsaXBzZS9wYXB5cnVzL3N5c21sMTQvdWkvQWN0aXZhdG9yLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uY2NhMzNhOQotLS0gL2Rldi9udWxsCisrKyBiL3VpL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC51aS9zcmMvb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L3VpL0FjdGl2YXRvci5qYXZhCkBAIC0wLDAgKzEsNjEgQEAKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyAqIENvcHlyaWdodCAoYykgMjAxNSBDRUEgTElTVC4NCisgKg0KKyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMNCisgKiBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYxLjANCisgKiB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbiwgYW5kIGlzIGF2YWlsYWJsZSBhdA0KKyAqIGh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvbGVnYWwvZXBsLXYxMC5odG1sDQorICoNCisgKiBDb250cmlidXRvcnM6DQorICogIEJlbm9pdCBNYWdnaSAoQ0VBIExJU1QpIGJlbm9pdC5tYWdnaUBjZWEuZnIgLSBJbml0aWFsIEFQSSBhbmQgaW1wbGVtZW50YXRpb24NCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorcGFja2FnZSBvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQudWk7DQorDQoraW1wb3J0IG9yZy5lY2xpcHNlLnVpLnBsdWdpbi5BYnN0cmFjdFVJUGx1Z2luOw0KK2ltcG9ydCBvcmcub3NnaS5mcmFtZXdvcmsuQnVuZGxlQ29udGV4dDsNCisNCisvKioNCisgKiBUaGUgYWN0aXZhdG9yIGNsYXNzIGNvbnRyb2xzIHRoZSBwbHVnLWluIGxpZmUgY3ljbGUNCisgKi8NCitwdWJsaWMgY2xhc3MgQWN0aXZhdG9yIGV4dGVuZHMgQWJzdHJhY3RVSVBsdWdpbiB7DQorDQorCS8vIFRoZSBwbHVnLWluIElEDQorCXB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFBMVUdJTl9JRCA9ICJvcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQudWkiOyAvLyROT04tTkxTLTEkDQorDQorCS8vIFRoZSBzaGFyZWQgaW5zdGFuY2UNCisJcHJpdmF0ZSBzdGF0aWMgQWN0aXZhdG9yIHBsdWdpbjsNCisJDQorCS8qKg0KKwkgKiBUaGUgY29uc3RydWN0b3INCisJICovDQorCXB1YmxpYyBBY3RpdmF0b3IoKSB7DQorCX0NCisNCisJLyoNCisJICogKG5vbi1KYXZhZG9jKQ0KKwkgKiBAc2VlIG9yZy5lY2xpcHNlLnVpLnBsdWdpbi5BYnN0cmFjdFVJUGx1Z2luI3N0YXJ0KG9yZy5vc2dpLmZyYW1ld29yay5CdW5kbGVDb250ZXh0KQ0KKwkgKi8NCisJcHVibGljIHZvaWQgc3RhcnQoQnVuZGxlQ29udGV4dCBjb250ZXh0KSB0aHJvd3MgRXhjZXB0aW9uIHsNCisJCXN1cGVyLnN0YXJ0KGNvbnRleHQpOw0KKwkJcGx1Z2luID0gdGhpczsNCisJfQ0KKw0KKwkvKg0KKwkgKiAobm9uLUphdmFkb2MpDQorCSAqIEBzZWUgb3JnLmVjbGlwc2UudWkucGx1Z2luLkFic3RyYWN0VUlQbHVnaW4jc3RvcChvcmcub3NnaS5mcmFtZXdvcmsuQnVuZGxlQ29udGV4dCkNCisJICovDQorCXB1YmxpYyB2b2lkIHN0b3AoQnVuZGxlQ29udGV4dCBjb250ZXh0KSB0aHJvd3MgRXhjZXB0aW9uIHsNCisJCXBsdWdpbiA9IG51bGw7DQorCQlzdXBlci5zdG9wKGNvbnRleHQpOw0KKwl9DQorDQorCS8qKg0KKwkgKiBSZXR1cm5zIHRoZSBzaGFyZWQgaW5zdGFuY2UNCisJICoNCisJICogQHJldHVybiB0aGUgc2hhcmVkIGluc3RhbmNlDQorCSAqLw0KKwlwdWJsaWMgc3RhdGljIEFjdGl2YXRvciBnZXREZWZhdWx0KCkgew0KKwkJcmV0dXJuIHBsdWdpbjsNCisJfQ0KKw0KK30NCmRpZmYgLS1naXQgYS91aS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQudWkvc3JjL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC91aS9DcmVhdGVTeXNNTDE0TW9kZWxDb21tYW5kLmphdmEgYi91aS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQudWkvc3JjL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC91aS9DcmVhdGVTeXNNTDE0TW9kZWxDb21tYW5kLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uMmViNDlkYwotLS0gL2Rldi9udWxsCisrKyBiL3VpL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC51aS9zcmMvb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L3VpL0NyZWF0ZVN5c01MMTRNb2RlbENvbW1hbmQuamF2YQpAQCAtMCwwICsxLDY1IEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisgKiBDb3B5cmlnaHQgKGMpIDIwMTUgQ0VBIExJU1QuDQorICoNCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQorICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCisgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqDQorICogQ29udHJpYnV0b3JzOg0KKyAqICBCZW5vaXQgTWFnZ2kgKENFQSBMSVNUKSBiZW5vaXQubWFnZ2lAY2VhLmZyIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uDQorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KK3BhY2thZ2Ugb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnVpOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY29tbW9uLnV0aWwuVVJJOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRU9iamVjdDsNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnV0aWwuU3lzbWxSZXNvdXJjZTsNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy51bWwuZGlhZ3JhbS5jb21tb24uY29tbWFuZHMuTW9kZWxDcmVhdGlvbkNvbW1hbmRCYXNlOw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5wYXB5cnVzLnVtbC50b29scy51dGlscy5QYWNrYWdlVXRpbDsNCitpbXBvcnQgb3JnLmVjbGlwc2UudW1sMi51bWwuUHJvZmlsZTsNCitpbXBvcnQgb3JnLmVjbGlwc2UudW1sMi51bWwuVU1MRmFjdG9yeTsNCisNCisNCisvKioNCisgKiBUaGUgQ2xhc3MgQ3JlYXRlU3lzTUxNb2RlbENvbW1hbmQuDQorICovDQorcHVibGljIGNsYXNzIENyZWF0ZVN5c01MMTRNb2RlbENvbW1hbmQgZXh0ZW5kcyBNb2RlbENyZWF0aW9uQ29tbWFuZEJhc2Ugew0KKw0KKwkvKioNCisJICogQHNlZSBvcmcuZWNsaXBzZS5wYXB5cnVzLmluZnJhLmNvcmUuZXh0ZW5zaW9uLmNvbW1hbmRzLk1vZGVsQ3JlYXRpb25Db21tYW5kQmFzZSNjcmVhdGVSb290RWxlbWVudCgpDQorCSAqDQorCSAqIEByZXR1cm4NCisJICovDQorDQorCUBPdmVycmlkZQ0KKwlwcm90ZWN0ZWQgRU9iamVjdCBjcmVhdGVSb290RWxlbWVudCgpIHsNCisJCXJldHVybiBVTUxGYWN0b3J5LmVJTlNUQU5DRS5jcmVhdGVNb2RlbCgpOw0KKwl9DQorDQorCS8qKg0KKwkgKiBAc2VlIG9yZy5lY2xpcHNlLnBhcHlydXMuaW5mcmEuY29yZS5leHRlbnNpb24uY29tbWFuZHMuTW9kZWxDcmVhdGlvbkNvbW1hbmRCYXNlI2luaXRpYWxpemVNb2RlbChvcmcuZWNsaXBzZS5lbWYuZWNvcmUuRU9iamVjdCkNCisJICoNCisJICogQHBhcmFtIG93bmVyDQorCSAqLw0KKw0KKwlAT3ZlcnJpZGUNCisJcHJvdGVjdGVkIHZvaWQgaW5pdGlhbGl6ZU1vZGVsKEVPYmplY3Qgb3duZXIpIHsNCisJCXN1cGVyLmluaXRpYWxpemVNb2RlbChvd25lcik7DQorCQkoKG9yZy5lY2xpcHNlLnVtbDIudW1sLlBhY2thZ2UpIG93bmVyKS5zZXROYW1lKGdldE1vZGVsTmFtZSgpKTsNCisNCisJCS8vIFJldHJpZXZlIFN5c01MIHByb2ZpbGUgYW5kIGFwcGx5IHdpdGggU3ViLXByb2ZpbGUNCisJCVByb2ZpbGUgc3lzbWwgPSAoUHJvZmlsZSkgUGFja2FnZVV0aWwubG9hZFBhY2thZ2UoVVJJLmNyZWF0ZVVSSShTeXNtbFJlc291cmNlLlBST0ZJTEVfUEFUSCksIG93bmVyLmVSZXNvdXJjZSgpLmdldFJlc291cmNlU2V0KCkpOw0KKwkJaWYgKHN5c21sICE9IG51bGwpIHsNCisJCQlQYWNrYWdlVXRpbC5hcHBseVByb2ZpbGUoKChvcmcuZWNsaXBzZS51bWwyLnVtbC5QYWNrYWdlKSBvd25lciksIHN5c21sLCB0cnVlKTsNCisJCX0NCisJfQ0KKw0KKwkvKioNCisJICogR2V0cyB0aGUgbW9kZWwgbmFtZS4NCisJICoNCisJICogQHJldHVybiB0aGUgbW9kZWwgbmFtZQ0KKwkgKi8NCisJcHJvdGVjdGVkIFN0cmluZyBnZXRNb2RlbE5hbWUoKSB7DQorCQlyZXR1cm4gIlN5c01MbW9kZWwgMS40IjsNCisJfQ0KK30NCmRpZmYgLS1naXQgYS91aS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQudWkvc3JjL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC91aS9jb25zdHJhaW50cy9IYXNTdGVyZW90eXBlU3lzbWwxNENvbnN0cmFpbnQuamF2YSBiL3VpL29yZy5lY2xpcHNlLnBhcHlydXMuc3lzbWwxNC51aS9zcmMvb3JnL2VjbGlwc2UvcGFweXJ1cy9zeXNtbDE0L3VpL2NvbnN0cmFpbnRzL0hhc1N0ZXJlb3R5cGVTeXNtbDE0Q29uc3RyYWludC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjdlYzNkYzIKLS0tIC9kZXYvbnVsbAorKysgYi91aS9vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sMTQudWkvc3JjL29yZy9lY2xpcHNlL3BhcHlydXMvc3lzbWwxNC91aS9jb25zdHJhaW50cy9IYXNTdGVyZW90eXBlU3lzbWwxNENvbnN0cmFpbnQuamF2YQpAQCAtMCwwICsxLDczIEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisgKiBDb3B5cmlnaHQgKGMpIDIwMTUgQ0VBIExJU1QuDQorICoNCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQorICogYXJlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgRWNsaXBzZSBQdWJsaWMgTGljZW5zZSB2MS4wDQorICogd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24sIGFuZCBpcyBhdmFpbGFibGUgYXQNCisgKiBodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2xlZ2FsL2VwbC12MTAuaHRtbA0KKyAqDQorICogQ29udHJpYnV0b3JzOg0KKyAqICBCZW5vaXQgTWFnZ2kgKENFQSBMSVNUKSBiZW5vaXQubWFnZ2lAY2VhLmZyIC0gSW5pdGlhbCBBUEkgYW5kIGltcGxlbWVudGF0aW9uDQorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KK3BhY2thZ2Ugb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnVpLmNvbnN0cmFpbnRzOw0KKw0KK2ltcG9ydCBvcmcuZWNsaXBzZS5lbWYuY29tbW9uLnV0aWwuRUxpc3Q7DQoraW1wb3J0IG9yZy5lY2xpcHNlLnBhcHlydXMuaW5mcmEuY29uc3RyYWludHMuY29uc3RyYWludHMuQ29uc3RyYWludDsNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnV0aWwuU3lzbWxSZXNvdXJjZTsNCitpbXBvcnQgb3JnLmVjbGlwc2UucGFweXJ1cy51bWwucHJvcGVydGllcy5jb25zdHJhaW50cy5IYXNTdGVyZW90eXBlQ29uc3RyYWludDsNCitpbXBvcnQgb3JnLmVjbGlwc2UudW1sMi51bWwuUHJvZmlsZTsNCisNCisvKioNCisgKiBBIGNvbnN0cmFpbnQgdG8gdGVzdCBpZiB0aGUgZ2l2ZW4gb2JqZWN0IGlzIGEgVU1MIEVsZW1lbnQgYW5kDQorICogaGFzIHRoZSBnaXZlbiBTdGVyZW90eXBlIGFuZCBTeXNtbDEuNCBwcm9maWxlIGFwcGxpZWQNCisgKg0KKyAqIEBhdXRob3IgQmVub2l0IE1hZ2dpDQorICovDQorcHVibGljIGNsYXNzIEhhc1N0ZXJlb3R5cGVTeXNtbDE0Q29uc3RyYWludCBleHRlbmRzIEhhc1N0ZXJlb3R5cGVDb25zdHJhaW50IHsNCisNCisJLyoqDQorCSAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5pbmZyYS5jb25zdHJhaW50cy5jb25zdHJhaW50cy5BYnN0cmFjdENvbnN0cmFpbnQjbWF0Y2goamF2YS5sYW5nLk9iamVjdCkNCisJICogQ2hlY2sgaWYgdGhlIGNvbnRhaW5pbmcgcGFja2FnZSBoYXMgcHJvZmlsVXJpIGFwcGxpZWQuDQorCSAqIEBwYXJhbSBzZWxlY3Rpb24NCisJICogQHJldHVybg0KKwkgKi8NCisJQE92ZXJyaWRlDQorCXB1YmxpYyBib29sZWFuIG1hdGNoKE9iamVjdCBzZWxlY3Rpb24pIHsNCisJCWlmIChzdXBlci5tYXRjaChzZWxlY3Rpb24pKXsNCisJCQlFTGlzdDxQcm9maWxlPiBhbGxBcHBsaWVkUHJvZmlsZXMgPSB1bWxFbGVtZW50LmdldE5lYXJlc3RQYWNrYWdlKCkuZ2V0QWxsQXBwbGllZFByb2ZpbGVzKCk7DQorCQkJZm9yIChQcm9maWxlIHByb2ZpbGUgOiBhbGxBcHBsaWVkUHJvZmlsZXMpIHsNCisJCQkJU3RyaW5nIHVyaSA9IHByb2ZpbGUuZ2V0VVJJKCk7DQorCQkJCWlmIChTeXNtbFJlc291cmNlLlBST0ZJTEVfVVJJLmVxdWFscyh1cmkpKXsNCisJCQkJCXJldHVybiB0cnVlOw0KKwkJCQl9DQorCQkJfQ0KKwkJfQ0KKwkJcmV0dXJuIGZhbHNlOyAvLyBhbHdheXMgY2FsbGVkIGV2ZW4gd2hlbiBub3QgZGVmaW5lZCANCisJfQ0KKw0KKwkNCisNCisJLyoqDQorCSAqIEBzZWUgamF2YS5sYW5nLk9iamVjdCN0b1N0cmluZygpDQorCSAqDQorCSAqIEByZXR1cm4NCisJICovDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgU3RyaW5nIHRvU3RyaW5nKCkgew0KKwkJcmV0dXJuIFN0cmluZy5mb3JtYXQoIkhhc1N0ZXJlb3R5cGVTeXNtbDE0ICVzICglcykiLCBzdGVyZW90eXBlTmFtZSwgZ2V0RGlzcGxheVVuaXQoKS5nZXRFbGVtZW50TXVsdGlwbGljaXR5KCkgPT0gMSA/ICJTaW5nbGUiIDogIk11bHRpcGxlIik7IC8vJE5PTi1OTFMtMSQgLy8kTk9OLU5MUy0yJCAvLyROT04tTkxTLTMkDQorCX0NCisNCisJLyoqDQorCSAqIEBzZWUgb3JnLmVjbGlwc2UucGFweXJ1cy5pbmZyYS5jb25zdHJhaW50cy5jb25zdHJhaW50cy5BYnN0cmFjdENvbnN0cmFpbnQjZXF1aXZhbGVudChvcmcuZWNsaXBzZS5wYXB5cnVzLmluZnJhLmNvbnN0cmFpbnRzLmNvbnN0cmFpbnRzLkNvbnN0cmFpbnQpDQorCSAqIA0KKwkgKiBAcGFyYW0gY29uc3RyYWludA0KKwkgKiBAcmV0dXJuDQorCSAqLw0KKwlAT3ZlcnJpZGUNCisJcHJvdGVjdGVkIGJvb2xlYW4gZXF1aXZhbGVudChDb25zdHJhaW50IGNvbnN0cmFpbnQpIHsgDQorCQlpZiAoc3VwZXIuZXF1aXZhbGVudChjb25zdHJhaW50KSkgew0KKwkJCXJldHVybiAoY29uc3RyYWludCBpbnN0YW5jZW9mIEhhc1N0ZXJlb3R5cGVTeXNtbDE0Q29uc3RyYWludCk7DQorCQl9DQorCQlyZXR1cm4gZmFsc2U7DQorCX0NCit9DQpkaWZmIC0tZ2l0IGEvdWkvcG9tLnhtbCBiL3VpL3BvbS54bWwKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uNzhmOGFlMAotLS0gL2Rldi9udWxsCisrKyBiL3VpL3BvbS54bWwKQEAgLTAsMCArMSwxNiBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxwcm9qZWN0PgorCTxtb2RlbFZlcnNpb24+NC4wLjA8L21vZGVsVmVyc2lvbj4KKwk8cGFyZW50PgorCQk8YXJ0aWZhY3RJZD5vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sPC9hcnRpZmFjdElkPgorCQk8Z3JvdXBJZD5vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sPC9ncm91cElkPgorCQk8dmVyc2lvbj4wLjcuMC1TTkFQU0hPVDwvdmVyc2lvbj4KKwk8L3BhcmVudD4JCisJPGdyb3VwSWQ+b3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDwvZ3JvdXBJZD4KKwk8YXJ0aWZhY3RJZD5vcmcuZWNsaXBzZS5wYXB5cnVzLnN5c21sLnVpPC9hcnRpZmFjdElkPgorCTx2ZXJzaW9uPjAuNy4wLVNOQVBTSE9UPC92ZXJzaW9uPgorCTxwYWNrYWdpbmc+cG9tPC9wYWNrYWdpbmc+CisJPG1vZHVsZXM+CisJCTxtb2R1bGU+b3JnLmVjbGlwc2UucGFweXJ1cy5zeXNtbDE0LnVpPC9tb2R1bGU+CisJPC9tb2R1bGVzPgorPC9wcm9qZWN0Pgo=