Q3VybCBhbmQgbGliY3VybCA3LjEyLjAuCgogUHVibGljIGN1cmwgcmVsZWFzZSBudW1iZXI6ICAgICAgICAgICAgICAgODEKIFJlbGVhc2VzIGNvdW50ZWQgZnJvbSB0aGUgdmVyeSBiZWdpbm5pbmc6IDEwOAogQXZhaWxhYmxlIGNvbW1hbmQgbGluZSBvcHRpb25zOiAgICAgICAgICAgOTYKIEF2YWlsYWJsZSBjdXJsX2Vhc3lfc2V0b3B0KCkgb3B0aW9uczogICAgIDExMwogTnVtYmVyIG9mIHB1YmxpYyBmdW5jdGlvbnMgaW4gbGliY3VybDogICAgMzYKCkEgc3BlY2lhbCB0aGFua3MgdG86CgogYXJjaGl2YXMuY29tIGFuZCBBbGFuIFBpbnN0ZWluLCBmb3IgcGF5aW5nIG1lIHRvIGZvY3VzIG9uIHRoZWlyIHJlcXVlc3RzCgpUaGlzIHJlbGVhc2UgaW5jbHVkZXMgdGhlIGZvbGxvd2luZyBjaGFuZ2VzOgoKIG8gYWRkZWQgYWJpbGl0eSB0byAidXBsb2FkIiB0byBmaWxlOi8vIFVSTHMKIG8gYWRkZWQgY3VybF9nbG9iYWxfaW5pdF9tZW0oKQogbyByZW1vdmVkIGN1cmxfZm9ybXBhcnNlKCkKIG8gdGhlIE1TVkMgcHJvamVjdCBmaWxlIGluIHRoZSByZWxlYXNlIGFyY2hpdmUgaXMgYXV0b21hdGljYWxseSBidWlsdAogbyBjdXJsIC0tcHJveHktZGlnZXN0IGlzIGEgbmV3IGNvbW1hbmQgbGluZSBvcHRpb24KIG8gdGhlIFdpbmRvd3MgdmVyc2lvbiBvZiBsaWJjdXJsIGNhbiB1c2Ugd2xkYXAzMi5kbGwgZm9yIExEQVAKIG8gYWRkZWQgY3VybF9lYXN5X3N0cmVycm9yKCksIGN1cmxfbXVsdGlfc3RyZXJyb3IoKSBhbmQgY3VybF9zaGFyZV9zdHJlcnJvcigpCiBvIElQdjYtZW5hYmxlZCBXaW5kb3dzIGhvc3RzIG5vdyByZXNvbHZlcyBuYW1lcyB0aHJlYWRlZC9hc3luY2ggYXMgd2VsbAogbyBjb25maWd1cmUgLS13aXRoLWxpYmlkbiBjYW4gYmUgdXNlZCB0byBwb2ludCBvdXQgdGhlIHJvb3QgZGlyIG9mIGEgbGliaWRuCiAgIGluc3RhbGxhdGlvbiAodmVyc2lvbiAwLjQuNSBvciBsYXRlcikgZm9yIGN1cmwgdG8gdXNlLCB0aGVuIGxpYmN1cmwgY2FuCiAgIHJlc29sdmUgYW5kIHVzZSBJRE5BIG5hbWVzIChkb21haW4gbmFtZXMgd2l0aCAiaW50ZXJuYXRpb25hbCIgbGV0dGVycykKClRoaXMgcmVsZWFzZSBpbmNsdWRlcyB0aGUgZm9sbG93aW5nIGJ1Z2ZpeGVzOgoKIG8gaW5jb21pbmcgY29va2llcyB3aXRoIGRvbWFpbnMgc2V0IHdpdGggYSBwcmVmaXhlZCBkb3Qgbm93IHdvcmtzIGJldHRlcgogbyBDVVJMT1BUX0NPT0tJRUZJTEUgYW5kIENVUkxPUFRfQ09PS0lFIGNhbiBiZSB1c2VkIGluIHRoZSBzYW1lIHJlcXVlc3QKIG8gaW1wcm92ZWQgcGVlciBjZXJ0aWZpY2F0ZSBuYW1lIHZlcmlmaWNhdGlvbgogbyBhbGxvY2F0aW9uIGZhaWx1cmVzIGNhdXNlIG5vIGxlYWtzIG5vciBjcmFzaGVzCiBvIHRoZSBwcm9ncmVzcyBtZXRlciBkaXNwbGF5IG5vdyBoYW5kbGVzIGZpbGUgc2l6ZXMgdXAgdG8gZnVsbCA4IGV4YWJ5dGVzCiAgICh3aGljaCBpcyBhcyBoaWdoIGEgc2lnbmVkIDY0IGJpdCBudW1iZXIgY2FuIHJlYWNoKQogbyBnZW5lcmFsIEhUVFAgYXV0aGVudGljYXRpb24gaW1wcm92ZW1lbnRzCiBvIEhUVFAgRGlnZXN0IGF1dGhlbnRpY2F0aW9uIHdpdGggdGhlIHByb3h5IHdvcmtzCiBvIG11bGlwYXJ0IGZvcm1wb3N0aW5nIHdpdGggLUYgYW5kIGZpbGUgbmFtZXMgd2l0aCBzcGFjZXMgd29yayBhZ2FpbgogbyBjdXJsX2Vhc3lfZHVwaGFuZGxlKCkgbm93IHdvcmtzIHdoZW4gYXJlcy1lbmFibGVkCiBvIEhUVFAgRGlnZXN0IGF1dGhlbnRpY2F0aW9uIHdvcmtzIGEgbG90IG1vcmUgbGlrZSB0aGUgUkZDIHNheXMKIG8gY3VybCB3b3JrcyB3aXRoIHRlbG5ldCBhbmQgc3RkaW4gcHJvcGVybHkgb24gV2luZG93cwogbyBjb25maWd1cmUgLS13aXRob3V0LXNzbCB3b3JrcyBldmVuIHdoZW4gcGtnLWNvbmZpZyBoYXMgT3BlblNTTCBkZXRhaWxzCiBvIHNyYy9odWdlaGVscC5jIGJ1aWxkcyBjb3JyZWN0IGFnYWluIGluIG5vbi1jb25maWd1cmUgYnVpbGQgZW52aXJvbm1lbnRzCgpPdGhlciBjdXJsLXJlbGF0ZWQgbmV3cyBzaW5jZSB0aGUgcHJldmlvdXMgcHVibGljIHJlbGVhc2U6CgogbyBUaGUgQ1ZTIHJlcG9zaXRvcnkgd2FzIG1vdmVkIHRvIGNvb2wuaGF4eC5zZQogbyBBZGFjVVJMIDcuMTEuMiB3YXMgcmVsZWFzZWQ6IGh0dHA6Ly93d3cuYWxtcm90aC5jb20vYWRhY3VybC8KIG8gUHljVVJMIDcuMTEuMyB3YXMgcmVsZWFzZWQ6IGh0dHA6Ly9weWN1cmwuc291cmNlZm9yZ2UubmV0CiBvIEEgbmV3IEdlcm1hbiBkb3dubG9hZCBtaXJyb3I6IGh0dHA6Ly93d3cubWlycm9yc3BhY2Uub3JnL2N1cmwvCgpUaGlzIHJlbGVhc2Ugd291bGQgbm90IGhhdmUgbG9va2VkIGxpa2UgdGhpcyB3aXRob3V0IGhlbHAsIGNvZGUsIHJlcG9ydHMgYW5kCmFkdmljZSBmcm9tIGZyaWVuZHMgbGlrZSB0aGVzZToKCiBHaXNsZSBWYW5lbSwgVG9tbXkgVGFtLCBMdWNhIEFsdGVhLCBKYW1lcyBCdXJzYSwgTWloYWkgSW9uZXNjdSwgTWljaGFlbAogQmVuZWRpY3QsIEFuZHLpcyBHYXJj7WEsIEpvZSBIYWxwaW4sIFNlc2h1YmFidSBQYXNhbSwgUGV0ZXIgU3lsdmVzdGVyLCBSb2JlcnQKIEQuIFlvdW5nLCBKZXNzZSBOb2xsZXIsIERhdmlkIEJ5cm9uLCBNYXNzaW1pbGlhbm8gWmljY2FyZGksIE1vaHVuIEJpc3dhcwoKICAgICAgICBUaGFua3MhIChhbmQgc29ycnkgaWYgSSBmb3Jnb3QgdG8gbWVudGlvbiBzb21lb25lKQo=