Q3VybCBhbmQgbGliY3VybCA3LjExLjIuIEEgYnVnZml4IHJlbGVhc2UuCgogUHVibGljIGN1cmwgcmVsZWFzZSBudW1iZXI6ICAgICAgICAgICAgICAgODAKIFJlbGVhc2VzIGNvdW50ZWQgZnJvbSB0aGUgdmVyeSBiZWdpbm5pbmc6IDEwNwogQXZhaWxhYmxlIGNvbW1hbmQgbGluZSBvcHRpb25zOiAgICAgICAgICAgOTQKIEF2YWlsYWJsZSBjdXJsX2Vhc3lfc2V0b3B0KCkgb3B0aW9uczogICAgIDExMwoKVGhpcyByZWxlYXNlIGluY2x1ZGVzIHRoZSBmb2xsb3dpbmcgY2hhbmdlczoKCiBvIHJlbW92ZWQgbWF4aW11bSB1c2VyK3Bhc3N3b3JkK2hvc3RuYW1lIHNpemUgbGltaXQKIG8gcmVtb3ZlZCBtYXhpbXVtIGRpciBkZXB0aCBsaW1pdCBmb3IgRlRQCiBvIHRoZSBhcmVzIGJ1aWxkIG5vdyByZXF1aXJlcyBjLWFyZXMgMS4yLjAgb3IgbGF0ZXIKIG8gLS10Y3Atbm9kZWxheSBhbmQgQ1VSTE9QVF9UQ1BfTk9ERUxBWSB3ZXJlIGFkZGVkCiBvIGN1cmwvY3VybHZlci5oIGNvbnRhaW5zIHRoZSBsaWJjdXJsIHZlcnNpb24gaW5mbyBub3cKClRoaXMgcmVsZWFzZSBpbmNsdWRlcyB0aGUgZm9sbG93aW5nIGJ1Z2ZpeGVzOgoKIG8gY29uZmlndXJlIC0tZGlzYWJsZS1tYW51YWwgd29ya3MgYmV0dGVyCiBvIHJlbW92ZWQgYSBtZW1vcnkgbGVhayB3aGVuIGRvaW5nIGEgd2luZG93cyB0aHJlYWRlZCByZXNvbHZlIGFuZCBpdCBmYWlsZWQKIG8gLS1wcm94eS1udGxtIG5vdyBjaGVja3MgaWYgbGliY3VybCBzdXBwb3J0cyBOVExNIGJlZm9yZSB1c2luZyBpdAogbyBtaW5vciAtLWZhaWwgd2l0aCBhdXRoZW50aWNhdGlvbiBidWdmaXgKIG8gQ1VSTE9QVF9JUFJFU09MVkUgc2V0IHRvIENVUkxfSVBSRVNPTFZFX1Y2IHdpbGwgbm93IGNhdXNlIGEgcmV0dXJuZWQgZXJyb3IKICAgaWYgdGhlIGhvc3Qgb25seSBjYW4gcmVzb2x2ZSBpcHY0IGFkZHJlc3NlcwogbyBjdXJsIC00Ly02IG5vdyBhY3R1YWxseSBzZXRzIHRoZSByZXF1ZXN0ZWQgb3B0aW9uIGluIGxpYmN1cmwKIG8gbXVsdGkgaW50ZXJmYWNlIG9uIFdpbmRvd3Mgd2l0aG91dCBhcmVzIHdvcmtzIGFnYWluCiBvIGltcHJvdmVkIHJlc29sdXRpb24gZm9yIHRoZSBDVVJMSU5GT18qX1RJTUUgaW5mbyB2YXJpYWJsZXMKIG8gZ2V0dGluZyBvbmx5IGEgMTAwIENvbnRpbnVlIHJlc3BvbnNlIGFuZCBub3RoaW5nIGVsc2UsIHdoZW4gdGFsa2luZyBIVFRQLAogICBpcyBub3cgdHJlYXRlZCBhcyBhbiBlcnJvciBieSBsaWJjdXJsCiBvIGZpeGVkIG1pbm9yIG1lbW9yeSBsZWFrIGluIGxpYmN1cmwgZm9yIFdpbmRvd3Mgd2hlbiBzdGF0aWNhbGx5IGxpbmtlZAogbyBQT1NUL1BVVCB1c2luZyBEaWdlc3QvTlRMTS9OZWdvdGlhdGUgKGluY2x1ZGluZyBhbnlhdXRoKSBub3cgd29yayBiZXR0ZXIKIG8gLS1saW1pdC1yYXRlIHdpdGggaGlnaCBzcGVlZCByYXRlcyBpcyBhIGxvdCBtb3JlIGFjY3VyYXRlIG5vdywgYW5kIHN1cHBvcnRzCiAgIGxpbWl0aW5nIHRvIHNwZWVkcyA+MkdCL3NlYyBvbiBzeXN0ZW1zIHdpdGggTGFyZ2UgRmlsZSBzdXBwb3J0LgogbyBjdXJsX3N0cm5xdWFsLjMgInJlZmVyLXRvIiBtYW4gcGFnZSBmaXgKIG8gZml4ZWQgYSBtaW5vciB2ZXJ5IG9sZCBwcm9ncmVzcyBtZXRlciBmaW5hbCB1cGRhdGUgYnVnCiBvIGFkZGVkIGNoZWNrcyBmb3IgYSB3b3JraW5nIE5JX1dJVEhTQ09QRUlEIGJlZm9yZSB0aGF0IGlzIHVzZWQKIG8gZml4ZWQgYSBmbGF3IHRoYXQgcHJldmVudGVkIGFyZXMgbmFtZSByZXNvbHZlIHRpbWVvdXRzIHRvIG9jY3VyCiBvIGdldHRpbmcgdXNlciBuYW1lIGZyb20gaHR0cF9wcm94eSBlbnYgdmFyaWFibGUgd29ya3Mgbm93CiBvIGZpeGVkIHRvbyBlYXJseSBuYW1lIHJlc29sdmUgdGltZW91dHMgd2l0aCBhcmVzCiBvIEhUVFAgRGlnZXN0ICJyZS1uZWdvdGlhdGlvbiIgd29ya3Mgbm93CiBvIENVUkxPUFRfRkFJTE9ORVJST1IgKC1mLy0tZmFpbCkgd29ya3Mgd2l0aCBhbGwga2luZHMgb2YgYXV0aGVudGljYXRpb24KIG8gYmV0dGVyIHRocmVhZC1zYWZldHkgdGhhbmtzIHRvIHRoZSBpbnRlcm5hbCBzdHJlcnJvcigpIHJlcGxhY2VtZW50CiBvIGJldHRlciB0aHJlYWQtc2FmZXR5IG9uIEFJWCB0aGFua3MgdG8gYmV0dGVyIGZ1bmN0aW9uIGRldGVjdGlvbgogbyBtaW5vciBpcHY2IGJ1aWxkIGZpeCBmb3Igd2luZG93cwogbyB0aGUgdGVzdCBzdWl0ZSBydW5zIGZpbmUgd2l0aCBtaW5ndy1idWlsdCBjdXJsCiBvIHRoZSBwb3N0aXQyLmMgZXhhbXBsZSB3b3JrcyBub3cKIG8gYmV0dGVyIGVycm9yIG1lc3NhZ2Ugd2hlbiAtLWludGVyZmFjZSBmYWlscyBvbiB3aW5kb3dzCiBvIHRoZSBwcm9ncmVzcyBtZXRlciBub3cgZGlzcGxheXMgdmVyeSBsb25nIHRpbWVzIGJldHRlcgogbyBDVVJMSU5GT19DT05URU5UX0xFTkdUSF9ET1dOTE9BRCB3aXRoIENVUkxPUFRfTk9CT0RZIHNldCBUUlVFIG5vdyB3b3JrcwogbyBwYXNzd29yZHMgbG9uZ2VyIHRoYW4gMTQgbGV0dGVycyB3b3JrIHdpdGggTlRMTQogbyAnbWFrZSBuZXR3YXJlJyBpbiB0aGUgcm9vdCBkaXIgd29ya3Mgbm93CiBvIGJ1aWxkcyBmaW5lIG9uIFZNUyBhZ2FpbiBhbmQgZXZlbiBuaWNlciB0aGFuIGJlZm9yZQoKT3RoZXIgY3VybC1yZWxhdGVkIG5ld3Mgc2luY2UgdGhlIHByZXZpb3VzIHB1YmxpYyByZWxlYXNlOgoKIG8gUHljVVJMIDcuMTEuMSB3YXMgcmVsZWFzZWQ6IGh0dHA6Ly9weWN1cmwuc2YubmV0LwogbyBDVVJMSGFuZGxlIDEuOSB3YXMgcmVsZWFzZWQ6IGh0dHA6Ly9jdXJsaGFuZGxlLnNvdXJjZWZvcmdlLm5ldC8KIG8gQSBjdXJsIG1vZHVsZSBmb3IgdGhlIFEgbGFuZ3VhZ2Ugd2FzIGFubm91bmNlZDoKICAgaHR0cDovL3EtbGFuZy5zb3VyY2Vmb3JnZS5uZXQvCiBvIGMtYXJlcyAxLjIuMCB3YXMgcmVsZWFzZWQ6IGh0dHA6Ly9kYW5pZWwuaGF4eC5zZS9wcm9qZWN0cy9jLWFyZXMvCiBvIE5ldyBjdXJsIHdlYiBtaXJyb3JzOgogICBHZXJtYW55ICBodHRwOi8vY3VybC5uZXRtaXJyb3Iub3JnLwogICBVU0EgICAgICBodHRwOi8vY3VybC5zaWduYWw0Mi5jb20vCiAgIERlbm1hcmsgIGh0dHA6Ly9jdXJsLmNvZm1hbi5kay8KClRoaXMgcmVsZWFzZSB3b3VsZCBub3QgaGF2ZSBsb29rZWQgbGlrZSB0aGlzIHdpdGhvdXQgaGVscCwgY29kZSwgcmVwb3J0cyBhbmQKYWR2aWNlIGZyb20gZnJpZW5kcyBsaWtlIHRoZXNlOgoKIFRob21hcyBTY2h3aW5nZSwgTWFydHkgS3VocnQsIEf8bnRlciBLbmF1ZiwgS2V2aW4gUm90aCwgR2xlbiBOYWthbXVyYSwgR2lzbGUKIFZhbmVtLCBHcmVnIEhld2dpbGwsIEpvZSBIYWxwaW4sIFRvciBBcm50c2VuLCBEaXJrIE1hbnNrZSwgUm95IFNoYW4sIE1pdHoKIFdhcmssIEFuZHLpcyBHYXJj7WEsIFJvYmluIEtheSwgQWxhbiBQaW5zdGVpbiwgRGF2aWQgQnlyb24sIE5hdGhhbgogTydTdWxsaXZhbiwgRXJ3aW4gQXV0aHJpZWQKIAoKICAgICAgICBUaGFua3MhIChhbmQgc29ycnkgaWYgSSBmb3Jnb3QgdG8gbWVudGlvbiBzb21lb25lKQo=