IyBOb3RpY2VzIGZvciBFY2xpcHNlIE1ETXxCTAoKVGhpcyBjb250ZW50IGlzIHByb2R1Y2VkIGFuZCBtYWludGFpbmVkIGJ5IHRoZSBFY2xpcHNlIE1ETXxCTCBwcm9qZWN0LAppdCBpcyBhIHByb2plY3Qgb2YgdGhlIG9wZW5NRE0oUikgRWNsaXBzZSBXb3JraW5nIEdyb3VwLgoKKiBQcm9qZWN0IGhvbWU6IGh0dHBzOi8vcHJvamVjdHMuZWNsaXBzZS5vcmcvcHJvamVjdHMvdGVjaG5vbG9neS5tZG1ibAoKIyMgVHJhZGVtYXJrcwoKRWNsaXBzZSBNRE18QkwsIE1ETXxCTCBhbmQgRWNsaXBzZSBvcGVuTURNKFIpIGxvZ28gYXJlIHJlZ2lzdGVyZWQgdHJhZGVtYXJrcwpvZiB0aGUgRWNsaXBzZSBGb3VuZGF0aW9uLgoKIyMgQ29weXJpZ2h0CgpBbGwgY29udGVudCBpcyB0aGUgcHJvcGVydHkgb2YgdGhlIGZvbGxvd2luZyByZXNwZWN0aXZlIGF1dGhvcnMgb3IgdGhlaXIgZW1wbG95ZXJzLgpGb3IgbW9yZSBpbmZvcm1hdGlvbiByZWdhcmRpbmcgYXV0aG9yc2hpcCBvZiBjb250ZW50LCBwbGVhc2UgY29uc3VsdCB0aGUgbGlzdGVkCnNvdXJjZSBjb2RlIHJlcG9zaXRvcnkgbG9ncy4KCkNvcHlyaWdodCAoYykgMjAxNi0yMDE4IEdpZ2F0cm9uaWsgSW5nb2xzdGFkdCBHbWJICkNvcHlyaWdodCAoYykgMjAxNi0yMDE5IFBlYWsgU29sdXRpb24gR21iSApDb3B5cmlnaHQgKGMpIDIwMTctMjAxOCBzY2llbmNlICsgY29tcHV0aW5nIEFHIFR1ZWJpbmdlbiAoQVRPUyBTRSkKQ29weXJpZ2h0IChjKSAyMDE3LTIwMTggQ2Fub28gRW5naW5lZXJpbmcgQUcKQ29weXJpZ2h0IChjKSAyMDE3IEZsb3JpYW4gU2NobWl0dApDb3B5cmlnaHQgKGMpIDIwMTctMjAxOSBBbmdlbGlrYSBXaXR0ZWsKQ29weXJpZ2h0IChjKSAyMDE4IEVsZWt0cm9uaXNjaGUgRmFocndlcmtzeXN0ZW1lIEdNQkgKQ29weXJpZ2h0IChjKSAyMDE4LTIwMTkgS2FyYWt1biBBRwoKIyMgRGVjbGFyZWQgUHJvamVjdCBMaWNlbnNlcwoKVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscyBhcmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlCnRlcm1zIG9mIHRoZSBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIHYuIDIuMCB3aGljaCBpcyBhdmFpbGFibGUgYXQKaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9sZWdhbC9lcGwtMi4wLgoKU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEVQTC0yLjAKCiMjIFNvdXJjZSBDb2RlCgpUaGUgcHJvamVjdCBtYWludGFpbnMgdGhlIGZvbGxvd2luZyBzb3VyY2UgY29kZSByZXBvc2l0b3JpZXM6CgpvcmcuZWNsaXBzZS5tZG0uYXBpLmJhc2UuZ2l0CSAgICAgIC0gVGhlIG9wZW5NRE0oUikgQVBJLgpvcmcuZWNsaXBzZS5tZG0uYXBpLmRlZmF1bHQuZ2l0CSAgICAtIEV4dGVuc2lvbiBvZiB0aGUgb3Blbk1ETShSKSBBUEkgY29udGFpbmluZyBkZWZhdWx0IGVsZW1lbnRzLgpvcmcuZWNsaXBzZS5tZG0uYXBpLm9kc2FkYXB0ZXIuZ2l0CS0gT0RTIGltcGxlbWVudGF0aW9uIG9mIHBlcnNpc3RlbmNlIGFkYXB0ZXIuCm9yZy5lY2xpcHNlLm1kbS5udWNsZXVzLmdpdAkgICAgICAgIC0gQ29yZSBidWlsZGluZyBibG9ja3MgZm9yIHRoZSBvcGVuTURNIEJ1c2luZXNzIExvZ2ljIGFuZCBXZWIgRnJvbnRlbmQuCgojIyBUaGlyZC1wYXJ0eSBDb250ZW50CgpUaGUgQ29udGVudCBpbmNsdWRlcyBpdGVtcyB0aGF0IGhhdmUgYmVlbiBzb3VyY2VkIGZyb20gdGhpcmQgcGFydGllcyBhcyBzZXQgb3V0IGJlbG93LgpJZiB5b3UgZGlkIG5vdCByZWNlaXZlIHRoaXMgQ29udGVudCBkaXJlY3RseSBmcm9tIHRoZSBFY2xpcHNlIEZvdW5kYXRpb24sIHRoZSBmb2xsb3dpbmcKaXMgcHJvdmlkZWQgZm9yIGluZm9ybWF0aW9uYWwgcHVycG9zZXMgb25seSwgYW5kIHlvdSBzaG91bGQgbG9vayB0bwp0aGUgUmVkaXN0cmlidXRvcidzIGxpY2Vuc2UgZm9yIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHVzZS4KCmFudGxyNC00LjUuMy5qYXIoMi41LjMpCiAgICAqIExpY2Vuc2U6IE5ldyBCU0QgbGljZW5zZQoKYW9wYWxsaWFuY2UtcmVwYWNrYWdlZC0yLjUuMC1iMDUuamFyICgyLjUuMC1iMDUpCiAgICAqIExpY2Vuc2U6IENEREwKCmNvbW1vbnMtY29kZWMtMS4yLmphciAoMS4yKQogICAgKiBMaWNlbnNlOiBBcGFjaGUgTGljZW5zZSwgMi4wCgpjb21tb25zLWh0dHBjbGllbnQtMy4xLmphciAgKDMuMSkKICAgICogTGljZW5zZTogQXBhY2hlIExpY2Vuc2UsIDIuMAoKY29tbW9ucy1sYW5nMy0zLjguMS5qYXIgKDMuOC4xKQogICAgKiBMaWNlbnNlOiBBcGFjaGUgTGljZW5zZSwgMi4wCgpjb21tb25zLXRleHQtMS42LmphciAoMS42KQogICAgKiBMaWNlbnNlOiBBcGFjaGUgTGljZW5zZSwgMi4wCgpjb21tb25zLW1hdGgtMi4yLmphciAoMi4yKQogICAgKiBMaWNlbnNlOiBBcGFjaGUgTGljZW5zZSwgMi4wCgpnc29uLTIuNy5qYXIgKDIuNykKICAgICogTGljZW5zZTogQXBhY2hlIExpY2Vuc2UsIDIuMAoKR29vZ2xlIEd1YXZhIFZlcnNpb246IDI1LjAtanJlICAoMjUuMCkKICAgICogTGljZW5zZTogQXBhY2hlIExpY2Vuc2UsIDIuMAogICAgCkdyYWRsZSBXcmFwcGVyICg0LjEwLjIpCiAgICAqIExpY2Vuc2U6IEFwYWNoZSBMaWNlbnNlLCAyLjAKCmhrMi1hcGktMi41LjAtYjA1LmphciAoMi41LjAtYjA1KQogICAgKiBMaWNlbnNlOiBDRERMLTEuMQoKaGsyLWxvY2F0b3ItMi41LjAtYjA1LmphcigyLjUuMC1iMDUpCiAgICAqIExpY2Vuc2U6IENEREwKCmhrMi11dGlscy0yLjUuMC1iMDUuamFyICAoMi41LjAtYjA1KQogICAgKiBMaWNlbnNlOiBDRERMCgpqYWNrc29uLWFubm90YXRpb25zLTIuOS4wLmphciAgKDIuOS4wKQogICAgKiBMaWNlbnNlOiBBcGFjaGUgTGljZW5zZSwgMi4wCgpqYWNrc29uLWNvcmUtMi45LjIuamFyKDIuOS4yKQogICAgKiBMaWNlbnNlOiBBcGFjaGUgTGljZW5zZSwgMi4wCgpqYWNrc29uLWRhdGFiaW5kLTIuOS4yLmphciAgKDIuOS4yKQogICAgKiBMaWNlbnNlOiBBcGFjaGUgTGljZW5zZSwgMi4wCgpqYWNrc29uLWpheHJzLWJhc2UtMi45LjIuamFyKDIuOS4yKQogICAgKiBMaWNlbnNlOiBBcGFjaGUgTGljZW5zZSwgMi4wCgpqYWNrc29uLWpheHJzLWpzb24tcHJvdmlkZXItMi45LjIuamFyKDIuOS4yKQogICAgKiBMaWNlbnNlOiBBcGFjaGUgTGljZW5zZSwgMi4wCgpqYWNrc29uLW1vZHVsZS1qYXhiLWFubm90YXRpb25zLTIuOS4yLmphciAgKDIuOS4yKQogICAgKiBMaWNlbnNlOiBBcGFjaGUgTGljZW5zZSwgMi4wCgpqYXZhc3Npc3QtMy4yMC4wLUdBLmphciAgKDIuMjAuMC1HQSkKICAgICogTGljZW5zZTogQXBhY2hlIDIuMAoKamNsLW92ZXItc2xmNGotMS43LjI1LmphcigxLjcuMjUpCiAgICAqIExpY2Vuc2U6IE1JVCBMaWNlbnNlCiAgICAqIExpY2VuY2UgUGF0aDogaHR0cHM6Ly93d3cuc2xmNGoub3JnL2xpY2Vuc2UuaHRtbAogICAgKiBQcm9qZWN0IFVSTDogIGh0dHBzOi8vd3d3LnNsZjRqLm9yZwogICAgKiBTb3VyY2UgVVJMOiAgIGh0dHBzOi8vZ2l0aHViLmNvbS9xb3MtY2gvc2xmNGoKCmplcnNleS1jbGllbnQtMi4yMy4yLmphciAoMi4yMy4yKQogICAgICogTGljZW5zZTogQ0RETAoKamVyc2V5LWNvbW1vbi0yLjIzLjIuamFyICgyLjIzLjIpCiAgICAqIExpY2Vuc2U6IENEREwKCmplcnNleS1jb250YWluZXItc2VydmxldC0yLjIzLjIuamFyICAoMi4yMy4yKQogICAgKiBMaWNlbnNlOiBDRERMCgpqZXJzZXktY29udGFpbmVyLXNlcnZsZXQtY29yZS0yLjIzLjMuamFyKDIuMjMuMikKICAgICogTGljZW5zZTogQ0RETAoKamVyc2V5LWd1YXZhLTIuMjMuMi5qYXIgICgyLjIzLjIpCiAgICAqIExpY2Vuc2U6IEFwYWNoZSBMaWNlbnNlLCAyLjAKCmplcnNleS1tZWRpYS1qYXhiLTIuMjMuMi5qYXIoMi4yMy4yKQogICAgKiBMaWNlbnNlOiBDRERMCgpqZXJzZXktbWVkaWEtc3NlLTIuMjMuMi5qYXIgKDIuMjMuMikKICAgICogTGljZW5zZTogQ0RETAoKamVyc2V5LW1lZGlhLW11bHRpcGFydC0yLjIzLjIuamFyICgyLjIzLjIpCiAgICAqIExpY2Vuc2U6IENEREwKCmplcnNleS1zZXJ2ZXItMi4yMy4yLmphciAoMi4yMy4yKQogICAgKiBMaWNlbnNlOiBBcGFjaGUtMi4wCgpsb2diYWNrLWNsYXNzaWMtMS4yLjMuamFyKDEuMi4zKQogICAgKiBMaWNlbnNlOiBFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIDEuMAoKbG9nYmFjay1jb3JlLTEuMi4zLmphcigxLjIuMykKICAgICogTGljZW5zZTogRWNsaXBzZSBQdWJsaWMgTGljZW5zZSAxLjAKCm9zZ2ktcmVzb3VyY2UtbG9jYXRvci0xLjAuMS5qYXIoMS4wLjEpCiAgICAqIExpY2Vuc2U6IENEREwKCnByb3RvYnVmLWphdmEtMy4yLjAuamFyICgzLjIuMCkKICAgICogTGljZW5zZTogTmV3IEJTRCBsaWNlbnNlCgpwcm90b2J1Zi1qYXZhLXV0aWwtMy4yLjAuamFyICAoMy4yLjApCiAgICAqIExpY2Vuc2U6IE5ldyBCU0QgbGljZW5zZQoKc2xmNGotYXBpLTEuNy4yNS5qYXIgICgxLjcuMjUpCiAgICAqIExpY2Vuc2U6IE1JVCBsaWNlbnNlCiAgICAqIExpY2VuY2UgUGF0aDogaHR0cHM6Ly93d3cuc2xmNGoub3JnL2xpY2Vuc2UuaHRtbAogICAgKiBQcm9qZWN0IFVSTDogaHR0cHM6Ly9naXRodWIuY29tL3Fvcy1jaC9zbGY0agogICAgKiBTb3VyY2UgVVJMOiAgaHR0cHM6Ly9naXRodWIuY29tL3Fvcy1jaC9zbGY0ai9yZWxlYXNlcy90YWcvdl8xLjcuMjUKCnZhbGlkYXRpb24tYXBpLTEuMS4wLkZpbmFsLmphciAoMS4xLjAuRmluYWwpCiogTGljZW5zZTogQXBhY2hlIExpY2Vuc2UsIDIuMAoKdmF2ci0wLjkuMS1zb3VyY2VzLmphciAoMC45LjEpCiogTGljZW5zZTogQXBhY2hlIExpY2Vuc2UsIDIuMAoKQGFuZ3VsYXIvY29tbW9uQDIuNC44CiAgICAqIExpY2Vuc2U6IE1JVAogICAgKiBMaWNlbmNlIFBhdGg6IGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2FuZ3VsYXIvYmxvYi9tYXN0ZXIvTElDRU5TRQogICAgKiBQcm9qZWN0OiBodHRwczovL2dpdGh1Yi5jb20vYW5ndWxhci9hbmd1bGFyCiAgICAqIFNvdXJjZTogIGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2FuZ3VsYXIKCkBhbmd1bGFyL2NvbXBpbGVyQDIuNC44CiAgICAqIExpY2Vuc2U6IE1JVAogICAgKiBMaWNlbmNlIFBhdGg6IGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2FuZ3VsYXIvYmxvYi9tYXN0ZXIvTElDRU5TRQogICAgKiBMaWNlbmNlIFBhdGg6IGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2FuZ3VsYXIvYmxvYi9tYXN0ZXIvTElDRU5TRQogICAgKiBQcm9qZWN0OiBodHRwczovL2dpdGh1Yi5jb20vYW5ndWxhci9hbmd1bGFyCiAgICAqIFNvdXJjZTogIGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2FuZ3VsYXIKCkBhbmd1bGFyL2NvcmVAMi40LjgKICAgICogTGljZW5zZTogTUlUCiAgICAqIExpY2VuY2UgUGF0aDogaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvYW5ndWxhci9ibG9iL21hc3Rlci9MSUNFTlNFCiAgICAqIFByb2plY3Q6IGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2FuZ3VsYXIKICAgICogU291cmNlOiAgaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvYW5ndWxhcgoKQGFuZ3VsYXIvZm9ybXNAMi40LjgKICAgICogTGljZW5zZTogTUlUCiAgICAqIExpY2VuY2UgUGF0aDogaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvYW5ndWxhci9ibG9iL21hc3Rlci9MSUNFTlNFCiAgICAqIFByb2plY3Q6IGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2FuZ3VsYXIKICAgICogU291cmNlOiAgaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvYW5ndWxhcgoKQGFuZ3VsYXIvaHR0cEAyLjQuOAogICAgKiBMaWNlbnNlOiBNSVQKICAgICogTGljZW5jZSBQYXRoOiBodHRwczovL2dpdGh1Yi5jb20vYW5ndWxhci9hbmd1bGFyL2Jsb2IvbWFzdGVyL0xJQ0VOU0UKICAgICogUHJvamVjdDogaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvYW5ndWxhcgogICAgKiBTb3VyY2U6ICBodHRwczovL2dpdGh1Yi5jb20vYW5ndWxhci9hbmd1bGFyCgpAYW5ndWxhci9wbGF0Zm9ybS1icm93c2VyLWR5bmFtaWNAMi40LjgKICAgICogTGljZW5zZTogTUlUCiAgICAqIExpY2VuY2UgUGF0aDogaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvYW5ndWxhci9ibG9iL21hc3Rlci9MSUNFTlNFCiAgICAqIFByb2plY3Q6IGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2FuZ3VsYXIKICAgICogU291cmNlOiAgaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvYW5ndWxhcgoKQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3NlckAyLjQuOAogICAgKiBMaWNlbnNlOiBNSVQKICAgICogTGljZW5jZSBQYXRoOiBodHRwczovL2dpdGh1Yi5jb20vYW5ndWxhci9hbmd1bGFyL2Jsb2IvbWFzdGVyL0xJQ0VOU0UKICAgICogUHJvamVjdDogaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvYW5ndWxhcgogICAgKiBTb3VyY2U6ICBodHRwczovL2dpdGh1Yi5jb20vYW5ndWxhci9hbmd1bGFyCgpAYW5ndWxhci9yb3V0ZXJAMy40LjgKICAgICogTGljZW5zZTogTUlUCiAgICAqIExpY2VuY2UgUGF0aDogaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvYW5ndWxhci9ibG9iL21hc3Rlci9MSUNFTlNFCiAgICAqIFByb2plY3Q6IGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2FuZ3VsYXIKICAgICogU291cmNlOiAgaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvYW5ndWxhcgoKQHR5cGVzL2ZpbGUtc2F2ZXJAMC4wLjAKICAgICogTGljZW5zZTogTUlUCiAgICAqIExpY2VuY2UgUGF0aDogaHR0cHM6Ly9naXRodWIuY29tL0RlZmluaXRlbHlUeXBlZC9EZWZpbml0ZWx5VHlwZWQvYmxvYi9tYXN0ZXIvTElDRU5TRQogICAgKiBQcm9qZWN0OiBodHRwczovL2dpdGh1Yi5jb20vRGVmaW5pdGVseVR5cGVkL0RlZmluaXRlbHlUeXBlZAogICAgKiBTb3VyY2U6ICBodHRwczovL2dpdGh1Yi5jb20vRGVmaW5pdGVseVR5cGVkL0RlZmluaXRlbHlUeXBlZAoKYm9vdHN0cmFwQDMuMy43CiAgICAqIExpY2Vuc2U6IE1JVAogICAgKiBMaWNlbmNlIFBhdGg6IGh0dHBzOi8vZ2l0aHViLmNvbS90d2JzL2Jvb3RzdHJhcC9yYXcvbWFzdGVyL0xJQ0VOU0UKICAgICogUHJvamVjdDogaHR0cHM6Ly9naXRodWIuY29tL3R3YnMvYm9vdHN0cmFwCiAgICAqIFNvdXJjZTogIGh0dHBzOi8vZ2l0aHViLmNvbS90d2JzL2Jvb3RzdHJhcAoKY2xhc3MtdHJhbnNmb3JtZXJAMC4xLjYKICAgICogTGljZW5zZTogTUlUCiAgICAqIExpY2VuY2UgUGF0aDogaHR0cHM6Ly9naXRodWIuY29tL3R5cGVzdGFjay9jbGFzcy10cmFuc2Zvcm1lci9ibG9iL21hc3Rlci9MSUNFTlNFCiAgICAqIFByb2plY3Q6IGh0dHBzOi8vZ2l0aHViLmNvbS9wbGVlcm9jay9jbGFzcy10cmFuc2Zvcm1lcgogICAgKiBTb3VyY2U6ICBodHRwczovL2dpdGh1Yi5jb20vcGxlZXJvY2svY2xhc3MtdHJhbnNmb3JtZXIKCmNvcmUtanNAMi40LjEKICAgICogTGljZW5zZTogTUlUCiAgICAqIExpY2VuY2UgUGF0aDogaHR0cHM6Ly9naXRodWIuY29tL3psb2lyb2NrL2NvcmUtanMvcmF3L21hc3Rlci9MSUNFTlNFCiAgICAqIFByb2plY3Q6IGh0dHBzOi8vZ2l0aHViLmNvbS96bG9pcm9jay9jb3JlLWpzCiAgICAqIFNvdXJjZTogIGh0dHBzOi8vZ2l0aHViLmNvbS96bG9pcm9jay9jb3JlLWpzCgpmaWxlLXNhdmVyQDEuMy4zCiAgICAqIExpY2Vuc2U6IE1JVAogICAgKiBMaWNlbmNlIFBhdGg6IGh0dHBzOi8vZ2l0aHViLmNvbS9lbGlncmV5L0ZpbGVTYXZlci5qcy9yYXcvbWFzdGVyL0xJQ0VOU0UubWQKICAgICogUHJvamVjdDogaHR0cHM6Ly9naXRodWIuY29tL2VsaWdyZXkvRmlsZVNhdmVyLmpzCiAgICAqIFNvdXJjZTogIGh0dHBzOi8vZ2l0aHViLmNvbS9lbGlncmV5L0ZpbGVTYXZlci5qcwoKZm9udC1hd2Vzb21lQDQuNy4wCiAgICAqIExpY2Vuc2U6IE1JVAogICAgKiBMaWNlbmNlIFBhdGg6IGh0dHBzOi8vZ2l0aHViLmNvbS9Gb3J0QXdlc29tZS9Gb250LUF3ZXNvbWUvYmxvYi9tYXN0ZXIvTElDRU5TRS50eHQKICAgICogUHJvamVjdDogaHR0cHM6Ly9mb250YXdlc29tZS5jb20vCiAgICAqIFNvdXJjZTogIGh0dHBzOi8vZ2l0aHViLmNvbS9Gb3J0QXdlc29tZS9Gb250LUF3ZXNvbWUKCm1vbWVudEAyLjE3LjEKICAgICogTGljZW5zZTogTUlUCiAgICAqIExpY2VuY2UgUGF0aDogaHR0cHM6Ly9naXRodWIuY29tL21vbWVudC9tb21lbnQvcmF3L21hc3Rlci9MSUNFTlNFCiAgICAqIFByb2plY3Q6IGh0dHBzOi8vZ2l0aHViLmNvbS9tb21lbnQvbW9tZW50CiAgICAqIFNvdXJjZTogIGh0dHBzOi8vZ2l0aHViLmNvbS9tb21lbnQvbW9tZW50CgpuZ3gtYm9vdHN0cmFwQDEuOS4xCiAgICAqIExpY2Vuc2U6IE1JVAogICAgKiBMaWNlbmNlIFBhdGg6IGh0dHBzOi8vZ2l0aHViLmNvbS92YWxvci1zb2Z0d2FyZS9uZ3gtYm9vdHN0cmFwL2Jsb2IvZGV2ZWxvcG1lbnQvTElDRU5TRQogICAgKiBQcm9qZWN0OiBodHRwczovL3ZhbG9yLXNvZnR3YXJlLmNvbS9uZ3gtYm9vdHN0cmFwCiAgICAqIFNvdXJjZTogIGh0dHBzOi8vZ2l0aHViLmNvbS92YWxvci1zb2Z0d2FyZS9uZ3gtYm9vdHN0cmFwCgpuZzItc3BsaXQtcGFuZUAxLjMuMQogICAgKiBMaWNlbnNlOiBNSVQKICAgICogTGljZW5jZSBQYXRoOiBodHRwczovL2dpdGh1Yi5jb20vd2FubmFiZWdlZWsvbmcyLXNwbGl0LXBhbmUvcmF3L21hc3Rlci9MSUNFTlNFCiAgICAqIFByb2plY3Q6IGh0dHBzOi8vZ2l0aHViLmNvbS93YW5uYWJlZ2Vlay9uZzItc3BsaXQtcGFuZQogICAgKiBTb3VyY2U6ICBodHRwczovL2dpdGh1Yi5jb20vd2FubmFiZWdlZWsvbmcyLXNwbGl0LXBhbmUKCnByaW1lbmdAMi4wLjUKICAgICogTGljZW5zZTogTUlUCiAgICAqIExpY2VuY2UgUGF0aDogaHR0cHM6Ly9naXRodWIuY29tL3ByaW1lZmFjZXMvcHJpbWVuZy9yYXcvbWFzdGVyL0xJQ0VOU0UubWQKICAgICogUHJvamVjdDogaHR0cHM6Ly9naXRodWIuY29tL3ByaW1lZmFjZXMvcHJpbWVuZwogICAgKiBTb3VyY2U6ICBodHRwczovL2dpdGh1Yi5jb20vcHJpbWVmYWNlcy9wcmltZW5nCgpyZWZsZWN0LW1ldGFkYXRhQDAuMS4zCiAgICAqIExpY2Vuc2U6IEFwYWNoZS0yLjAKICAgICogUHJvamVjdDogaHR0cHM6Ly9naXRodWIuY29tL3JidWNrdG9uL1JlZmxlY3REZWNvcmF0b3JzCiAgICAqIFNvdXJjZTogIGh0dHBzOi8vZ2l0aHViLmNvbS9yYnVja3Rvbi9SZWZsZWN0RGVjb3JhdG9ycwoKcnhqc0A1LjEuMAogICAgKiBMaWNlbnNlOiBBcGFjaGUtMi4wCiAgICAqIFByb2plY3Q6IGh0dHBzOi8vZ2l0aHViLmNvbS9SZWFjdGl2ZVgvUnhKUwogICAgKiBTb3VyY2U6ICBodHRwczovL2dpdGh1Yi5jb20vUmVhY3RpdmVYL1J4SlMKCnN5bWJvbC1vYnNlcnZhYmxlQDEuMi4wCiAgICAqIExpY2Vuc2U6IE1JVAogICAgKiBMaWNlbmNlIFBhdGg6IGh0dHBzOi8vZ2l0aHViLmNvbS9ibGVzaC9zeW1ib2wtb2JzZXJ2YWJsZS9yYXcvbWFzdGVyL2xpY2Vuc2UKICAgICogUHJvamVjdDogaHR0cHM6Ly9naXRodWIuY29tL2JsZXNoL3N5bWJvbC1vYnNlcnZhYmxlCiAgICAqIFNvdXJjZTogIGh0dHBzOi8vZ2l0aHViLmNvbS9ibGVzaC9zeW1ib2wtb2JzZXJ2YWJsZQoKdHMtaGVscGVyc0AxLjEuMQogICAgKiBMaWNlbnNlOiBNSVQKICAgICogTGljZW5jZSBQYXRoOiBodHRwczovL2dpdGh1Yi5jb20vbmdQYXJ0eS90cy1oZWxwZXJzL3Jhdy9tYXN0ZXIvTElDRU5TRQogICAgKiBQcm9qZWN0OiBodHRwczovL2dpdGh1Yi5jb20vbmdQYXJ0eS90cy1oZWxwZXJzCiAgICAqIFNvdXJjZTogIGh0dHBzOi8vZ2l0aHViLmNvbS9uZ1BhcnR5L3RzLWhlbHBlcnMKCnpvbmUuanNAMC43LjYKICAgICogTGljZW5zZTogTUlUCiAgICAqIExpY2VuY2UgUGF0aDogaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvem9uZS5qcy9yYXcvbWFzdGVyL0xJQ0VOU0UKICAgICogUHJvamVjdDogaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIKICAgICogU291cmNlOiAgaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvem9uZS5qcwogICAgCkZGQU1GQU1GQU0gU2lsayBJY29uLCBWZXJzaW9uIDEuMwogICAgKiBMaWNlbnNlOiBDcmVhdGl2ZSBDb21tb25zIEF0dHJpYnV0aW9uIDMuMCBMaWNlbnNlIAogICAgKiBMaWNlbmNlIFBhdGg6IGh0dHBzOi8vY3JlYXRpdmVjb21tb25zLm9yZy9saWNlbnNlcy9ieS8zLjAvCiAgICAqIFByb2plY3Q6IGh0dHA6Ly93d3cuZmFtZmFtZmFtLmNvbS9sYWIvaWNvbnMvc2lsay8KICAgICogU291cmNlOiAgaHR0cDovL3d3dy5mYW1mYW1mYW0uY29tL2xhYi9pY29ucy9zaWxrLwoKb2RzNTMwLmlkbApQZXJtaXNzaW9uIG9mIHVzZToKRnJvbSBIYW5zLUdlb3JnIFN3b2xhbmEsIENoYWlybWFuIG9mIHRoZSBCb2FyZCBBU0FNIGUuVi4sCiBQcm9mLiBEci4gTWFyY3VzIFJpZWtlciwgTWVtYmVyIG9mIHRoZSBCb2FyZCBBU0FNIGUuVi4KRGF0ZTogSG9laGVua2lyY2hlbiwgMDYvMDEvMjAxNgoiVGhlIEFTQU0gQm9hcmQgb2YgRGlyZWN0b3JzIHJlbGVhc2VzIHRoZSBJREwgZmlsZXMgZm9yIHVzZSB1bmRlciB0aGUgRVBMIHRvIHRoZSBFY2xpcHNlIElXRyBvcGVuTURNLgpUaGlzIGlzIHZhbGlkIGZvciBhbGwgdmVyc2lvbnMgb2YgQVNBTSBPRFMgNS4zLnguClRoaXMgcGVybWlzc2lvbiBpcyB2YWxpZCB1bmRlciB0aGUgY29uZGl0aW9ucyBvZiBFY2xpcHNlIHdpbGwgbm90IG1vZGlmeSB0aGUgZmlsZS4iCgpBdmFsb25FdmVudC5pZGwsIENvcmJhRmlsZVNlcnZlci5pZGwKUGVybWlzc2lvbiBvZiB1c2U6CkZyb20gRHIuIFJhbHBoIE5vZXJlbmJlcmcKRGF0ZTogMDgvMTUvMjAxNgoiSGVyZXdpdGgsIHdlIHJlbGVhc2UgdGhlIGdlbmVyYXRlZCBDbGllbnQtU291cmNlLUNvZGUgZ2VuZXJhdGVkIGZyb20gb3VyIENPUkJBIElETHMsIG5hbWVseQoqIENPUkJBTm90aWZpY2F0aW9uIFNlcnZpY2UgKGdlbmVyYXRlZCBmcm9tIIRBdmFsb25FdmVudC5pZGyUKQoqIENPUkJBRmlsZVNlcnZlciAoZ2VuZXJhdGVkIGZyb20ghENvcmJhRmlsZVNlcnZlci5pZGyTKSwKVW5kZXIgdGhlIEVjbGlwc2UgUHVibGljIExpY2Vuc2UgKEVQTCkuIFRoaXMgYWdyZWVtZW50IGRvZXMgbm90IGluY2x1ZGUgdGhlIIRBdmFsb25FdmVudC5pZGyTIGFuZAqEQ29yYmFGaWxlU2VydmVyLmlkbJMgaXRzZWxmLCB3aGljaCByZW1haW4gcHJvdGVjdGVkIHByb3BlcnR5IG9mIEhpZ2hRU29mdC4gIgoKT01HIE5vdGlmaWNhdGlvbiBTZXJ2aWNlIFNwZWNpZmljYXRpb24gVmVyc2lvbjogMS4xClRoZSB0ZXJtcyBvZiB1c2UgYXJlIGRlZmluZWQgaW4gc2VjdGlvbiAiRnJlZWx5IEF2YWlsYWJsZSBBbmQgQXZhaWxhYmxlCkZyZWUiIHNlZTogaHR0cDovL3d3dy5vbWcub3JnL2dldHRpbmdzdGFydGVkL292ZXJ2aWV3Lmh0bQoKT01HIEV2ZW50IFNlcnZpY2UgU3BlY2lmaWNhdGlvbiBWZXJzaW9uOiAxLjIKVGhlIHRlcm1zIG9mIHVzZSBhcmUgZGVmaW5lZCBpbiBzZWN0aW9uICJGcmVlbHkgQXZhaWxhYmxlIEFuZCBBdmFpbGFibGUKRnJlZSIgc2VlOiBodHRwOi8vd3d3Lm9tZy5vcmcvZ2V0dGluZ3N0YXJ0ZWQvb3ZlcnZpZXcuaHRtCgoKIyMgQ3J5cHRvZ3JhcGh5CgpDb250ZW50IG1heSBjb250YWluIGVuY3J5cHRpb24gc29mdHdhcmUuIFRoZSBjb3VudHJ5IGluIHdoaWNoIHlvdSBhcmUgY3VycmVudGx5Cm1heSBoYXZlIHJlc3RyaWN0aW9ucyBvbiB0aGUgaW1wb3J0LCBwb3NzZXNzaW9uLCBhbmQgdXNlLCBhbmQvb3IgcmUtZXhwb3J0IHRvCmFub3RoZXIgY291bnRyeSwgb2YgZW5jcnlwdGlvbiBzb2Z0d2FyZS4gQkVGT1JFIHVzaW5nIGFueSBlbmNyeXB0aW9uIHNvZnR3YXJlLApwbGVhc2UgY2hlY2sgdGhlIGNvdW50cnkncyBsYXdzLCByZWd1bGF0aW9ucyBhbmQgcG9saWNpZXMgY29uY2VybmluZyB0aGUgaW1wb3J0LApwb3NzZXNzaW9uLCBvciB1c2UsIGFuZCByZS1leHBvcnQgb2YgZW5jcnlwdGlvbiBzb2Z0d2FyZSwgdG8gc2VlIGlmIHRoaXMgaXMKcGVybWl0dGVkLgo=