ICAgICAgICAgICAgQXBhY2hlIENvbW1vbnMgQ0xJCiAgICAgICAgICAgICAgICBWZXJzaW9uIDEuMy4xCiAgICAgICAgICAgICAgIFJlbGVhc2UgTm90ZXMKCgpJTlRST0RVQ1RJT046CgpUaGlzIGRvY3VtZW50IGNvbnRhaW5zIHRoZSByZWxlYXNlIG5vdGVzIGZvciB0aGlzIHZlcnNpb24gb2YgdGhlIENvbW1vbnMgQ0xJCnBhY2thZ2UuIENvbW1vbnMgQ0xJIHByb3ZpZGVzIGEgc2ltcGxlIEFQSSBmb3Igd29ya2luZyB3aXRoIHRoZSBjb21tYW5kIGxpbmUKYXJndW1lbnRzIGFuZCBvcHRpb25zLgoKQ29tbW9ucyBDTEkgMS4zLjEgaXMgYSBidWcgZml4IHJlbGVhc2UgYW5kIGJpbmFyeSBjb21wYXRpYmxlIHdpdGggdGhlCnByZXZpb3VzIHZlcnNpb25zLCBleGNlcHQgZm9yIHRoZSBPcHRpb25WYWxpZGF0b3IgY2xhc3MgdGhhdCBpcyBubyBsb25nZXIgcHVibGljCihjaGFuZ2UgaW50cm9kdWNlZCBpbiB2MS4yKS4gQ29tbW9ucyBDTEkgMS4zLjEgYXQgbGVhc3QgcmVxdWlyZXMgSmF2YSA1LjAuCgpNb3JlIGluZm9ybWF0aW9uIGNhbiBiZSBmb3VuZCBvbiB0aGUgcHJvamVjdCBzaXRlIGF0IApodHRwOi8vY29tbW9ucy5hcGFjaGUub3JnL2NsaS4KCkJVRyBGSVhFUwo9PT09PT09PT0KCm8gQ0xJLTI1MjogTG9uZ09wdCBmYWxzZWx5IGRldGVjdGVkIGFzIGFtYmlndW91cy4gVGhhbmtzIHRvIFNpbW9uIEhhcnJlci4KCgogICAgICAgICAgICAgICAgUmVsZWFzZSBOb3RlcyBmb3IgdmVyc2lvbiAxLjMKCk5PVEVTCj09PT09CgpBIG5ldyBwYXJzZXIgaXMgYXZhaWxhYmxlOiBEZWZhdWx0UGFyc2VyLiBJdCBjb21iaW5lcyB0aGUgZmVhdHVyZXMgb2YgdGhlCkdudVBhcnNlciBhbmQgdGhlIFBvc2l4UGFyc2VyLiBJdCBhbHNvIHByb3ZpZGVzIGFkZGl0aW9uYWwgZmVhdHVyZXMgbGlrZQpwYXJ0aWFsIG1hdGNoaW5nIGZvciB0aGUgbG9uZyBvcHRpb25zLCBhbmQgbG9uZyBvcHRpb25zIHdpdGhvdXQKc2VwYXJhdG9yIChpLmUgbGlrZSB0aGUgSlZNIG1lbW9yeSBzZXR0aW5nczogLVhteDUxMm0pLiBUaGlzIG5ldyBwYXJzZXIKZGVwcmVjYXRlcyB0aGUgcHJldmlvdXMgb25lcy4KCkRFUFJFQ0FUSU9OUwo9PT09PT09PT09PT0KCm8gb3JnLmFwYWNoZS5jb21tb25zLmNsaS5CYXNpY1BhcnNlciAKICAgIHJlcGxhY2VkIGJ5IG9yZy5hcGFjaGUuY29tbW9ucy5jbGkuRGVmYXVsdFBhcnNlcgoKbyBvcmcuYXBhY2hlLmNvbW1vbnMuY2xpLkdudVBhcnNlciAKICAgIHJlcGxhY2VkIGJ5IG9yZy5hcGFjaGUuY29tbW9ucy5jbGkuRGVmYXVsdFBhcnNlcgoKbyBvcmcuYXBhY2hlLmNvbW1vbnMuY2xpLk9wdGlvbkJ1aWxkZXIgCiAgICByZXBsYWNlZCBieSBvcmcuYXBhY2hlLmNvbW1vbnMuY2xpLk9wdGlvbi5idWlsZGVyKCkKICAgICAgICAgICAgICAgIG9yZy5hcGFjaGUuY29tbW9ucy5jbGkuT3B0aW9uLmJ1aWxkZXIoU3RyaW5nKQogICAgICAgICAgICAgICAgb3JnLmFwYWNoZS5jb21tb25zLmNsaS5PcHRpb24uQnVpbGRlcgoKbyBvcmcuYXBhY2hlLmNvbW1vbnMuY2xpLlBhcnNlciAKICAgIHJlcGxhY2VkIGJ5IG9yZy5hcGFjaGUuY29tbW9ucy5jbGkuRGVmYXVsdFBhcnNlcgoKbyBvcmcuYXBhY2hlLmNvbW1vbnMuY2xpLlBvc2l4UGFyc2VyIAogICAgcmVwbGFjZWQgYnkgb3JnLmFwYWNoZS5jb21tb25zLmNsaS5EZWZhdWx0UGFyc2VyCgoKTkVXIEZFQVRVUkVTCj09PT09PT09PT09PQoKbyBDTEktMTYxOiBQb3NpeFBhcnNlciBkb2Vzbid0IHN0b3AgdGhlIHBhcnNpbmcgb24gIi0tIiB0b2tlbnMgZm9sbG93aW5nIGFuCiAgICAgICAgICAgb3B0aW9uIHdpdGggYW4gYXJndW1lbnQKbyBDTEktMTY3OiBTdXBwb3J0IG9wdGlvbnMgbGlrZSBKYXZhIG1lbW9yeSBzZXR0aW5ncyAoLVhteDUxMk0pCm8gQ0xJLTE4MTogVW5pZmllZCBQYXJzZXIKbyBDTEktMjI0OiBBZGRlZCBuZXcgZmx1ZW50IEFQSSB0byBjcmVhdGUgT3B0aW9uIGluc3RhbmNlcyB2aWEgYnVpbGRlciBjbGFzcwogICAgICAgICAgIE9wdGlvbi5CdWlsZGVyLiBUaGlzIHJlcGxhY2VzIHRoZSBub3cgZGVwcmVjYXRlZCBPcHRpb25CdWlsZGVyLgogICAgICAgICAgIFRoYW5rcyB0byBEdW5jYW4gSm9uZXMsIEJyaWFuIEJsb3VudC4KbyBDTEktMTYwOiBQb3NpeFBhcnNlciBub3cgc3VwcG9ydHMgcGFydGlhbCBsb25nIG9wdGlvbnMgKC0tdmVyIGluc3RlYWQgb2YKICAgICAgICAgICAtLXZlcnNpb24pLiAKbyBDTEktMTY5OiBIZWxwRm9ybWF0dGVyIG5vdyBzdXBwb3J0cyBzZXR0aW5nIHRoZSBkaXNwbGF5ZWQgc2VwYXJhdG9yIG9mIGxvbmcKICAgICAgICAgICBvcHRpb25zLiBUaGFua3MgdG8gSi4gTGV3aXMgTXVpci4gCm8gQ0xJLTIxNDogQWRkZWQgbmV3IG1ldGhvZCBPcHRpb25zLmFkZE9wdGlvbihTdHJpbmcsIFN0cmluZykuIFRoYW5rcyB0bwogICAgICAgICAgIEFsZXhhbmRydSBNb2NhbnUuCgoKQlVHIEZJWEVTCj09PT09PT09PQoKbyBDTEktMjQ4OiBEZWFkIGxpbmtzIG9uIGRvYyBwYWdlLgpvIENMSS0yMzQ6IEZpeGVkIGNvZGUgZXhhbXBsZSBpbiBqYXZhZG9jIG9mCiAgICAgICAgICAgIk9wdGlvbiNCdWlsZGVyI3ZhbHVlU2VwYXJhdG9yKGNoYXIpIi4gVGhhbmtzIHRvIEdyZWcgVGhvbWFzLgpvIENMSS0yNDE6IENsYXJpZmllZCBiZWhhdmlvciBvZiAiT3B0aW9uVmFsaWRhdG9yI3ZhbGlkYXRlT3B0aW9uKFN0cmluZykiCiAgICAgICAgICAgaW4gY2FzZSBvZiBudWxsIGlucHV0LiBUaGFua3MgdG8gQmVsdWdhIEJlaHIuCm8gQ0xJLTIwMjogRGVmYXVsdCBvcHRpb25zIHdpbGwgbm93IHdvcmsgY29ycmVjdGx5IHdpdGggcmVxdWlyZWQgb3B0aW9ucyB0aGF0CiAgICAgICAgICAgYXJlIG1pc3NpbmcuCm8gQ0xJLTIwMzogRGVmYXVsdCBvcHRpb25zIHdpbGwgbm93IHdvcmsgY29ycmVjdGx5IHRvZ2V0aGVyIHdpdGggb3B0aW9uIGdyb3Vwcy4gCm8gQ0xJLTIwNTogSGVscEZvcm1hdHRlci5zZXRBcmdOYW1lKFN0cmluZykgbm93IGNvcnJlY3RseSBzZXRzIHRoZSBhcmd1bWVudAogICAgICAgICAgIG5hbWUuCm8gQ0xJLTIwNDogUGFzc2luZyBkZWZhdWx0IHZhbHVlcyBmb3Igbm90IGRlZmluZWQgb3B0aW9ucyB0byBhIHBhcnNlciB3aWxsIG5vdwogICAgICAgICAgIHRyaWdnZXIgYSBQYXJzZUV4Y2VwdGlvbiBpbnN0ZWFkIG9mIGEgTnVsbFBvaW50ZXJFeGNlcHRpb24uCm8gQ0xJLTIwMTogRGVmYXVsdCBwcm9wZXJ0aWVzIHByb3ZpZGVkIGFzIGlucHV0IHRvIHRoZSBQYXJzZXIucGFyc2UoKSBtZXRob2RzCiAgICAgICAgICAgYXJlIG5vdyBjb3JyZWN0bHkgcHJvY2Vzc2VkLgpvIENMSS0yMTU6IENvbW1hbmRMaW5lLmdldFBhcnNlZE9wdGlvblZhbHVlKCkgbm93IHJldHVybnMgYSBTdHJpbmcgb2JqZWN0IGlmIG5vCiAgICAgICAgICAgb3B0aW9uIHR5cGUgaGFzIGJlZW4gZXhwbGljaXRseSBzZXQuIFRoYW5rcyB0byBNYW51ZWwgTfxsbGVyLiAKbyBDTEktMjEyOiBIZWxwRm9ybWF0dGVyIG5vdyBwcmludHMgY29tbWFuZC1saW5lIG9wdGlvbnMgaW4gdGhlIHNhbWUgb3JkZXIgYXMKICAgICAgICAgICB0aGV5IGhhdmUgYmVlbiBhZGRlZC4gVGhhbmtzIHRvIFBlciBDZWRlcmJlcmcuCm8gQ0xJLTE4NjogU3RhbmRhcmQgaGVscCB0ZXh0IG5vdyBzaG93cyBtYW5kYXRvcnkgYXJndW1lbnRzIGFsc28gZm9yIHRoZSBmaXJzdAogICAgICAgICAgIG9wdGlvbi4gVGhhbmtzIHRvIEtyaXN0b2ZmIEtpZWZlci4KbyBDTEktMjA3OiBIZWxwRm9ybWF0dGVyIGRvZXMgbm90IHN0cmlwIGFueW1vcmUgbGVhZGluZyB3aGl0ZXNwYWNlIGluIHRoZQogICAgICAgICAgIGZvb3RlciB0ZXh0LiBUaGFua3MgdG8gVXJpIE1vc3prb3dpY3ouCm8gQ0xJLTE4NTogU3RyaXAgcXVvdGVzIGNvbnRhaW5lZCBpbiBhcmd1bWVudCB2YWx1ZXMgb25seSBpZiB0aGVyZSBpcyBleGFjdGx5CiAgICAgICAgICAgb25lIGF0IHRoZSBiZWdpbm5pbmcgYW5kIG9uZSBhdCB0aGUgZW5kLiBUaGFua3MgdG8KICAgICAgICAgICBFaW5hciBNLiBSLiBSb3NlbnZpbmdlLgpvIENMSS0xODQ6IE5lZ2F0aXZlIG51bWVyaWNhbCBhcmd1bWVudHMgdGFrZSBwcmVjZWRlbmNlIG92ZXIgbnVtZXJpY2FsIG9wdGlvbnMuIApvIENMSS0xOTM6IEZpeCBwb3NzaWJsZSBTdHJpbmdJbmRleE91dE9mQm91bmRzRXhjZXB0aW9uIGluIEhlbHBGb3JtYXR0ZXIuCiAgICAgICAgICAgVGhhbmtzIHRvIFRyYXZpcyBNY0xlc2tleS4KbyBDTEktMTgzOiBPcHRpb25Hcm91cHMgbm8gbG9uZ2VyIHRocm93IGFuIEFscmVhZHlTZWxlY3RlZEV4Y2VwdGlvbiB3aGVuIHJldXNlZAogICAgICAgICAgIGZvciBzZXZlcmFsIHBhcnNpbmdzLgpvIENMSS0xODI6IE9wdGlvbkdyb3VwIG5vdyBzZWxlY3RzIHByb3Blcmx5IGFuIG9wdGlvbiB3aXRoIG5vIHNob3J0IG5hbWUuCgoKQ0hBTkdFUwo9PT09PT09CgpvIENMSS0yNDA6IFNtYWxsIGNsZWFudXAgb2YgT3B0aW9uIGNsYXNzLiBUaGFua3MgdG8gQmVsdWdhIEJlaHIuCm8gQ0xJLTIzMDogT3B0aW9ucy5nZXRSZXF1aXJlZE9wdGlvbnMoKSBub3cgcmV0dXJucyBhbiB1bm1vZGlmaWFibGUgbGlzdC4gCm8gQ0xJLTIxODogQ2xhcmlmeSBqYXZhZG9jIGZvciBDb21tYW5kTGluZS5nZXRPcHRpb25WYWx1ZSgpIHRoYXQgdGhlIGZpcnN0CiAgICAgICAgICAgc3BlY2lmaWVkIGFyZ3VtZW50IHdpbGwgYmUgcmV0dXJuZWQuIFRoYW5rcyB0byBTdmVuLiAKbyBDTEktMjI3OiBDaGFuZ2VkIHVuaXQgdGVzdHMgdG8ganVuaXQgNCBhbm5vdGF0aW9uIHN0eWxlLiBUaGFua3MgdG8KICAgICAgICAgICBEdW5jYW4gSm9uZXMuIApvIENMSS0yMDk6IFRoZSBqYXZhZG9jIG9mIE9wdGlvbkJ1aWxkZXIgbm93IHN0YXRlcyB0aGF0IHRoZSBjbGFzcyBpcyBub3QKICAgICAgICAgICB0aHJlYWQtc2FmZS4gVGhhbmtzIHRvIFRob21hcyBIZXJyZS4gCm8gQ0xJLTIwMDogRml4ZWQgdHlwbyBpbiBqYXZhZG9jIG9mIGNsYXNzIENvbW1hbmRMaW5lLiBUaGFua3MgdG8KICAgICAgICAgICBHZXJhcmQgV2VhdGhlcmJ5LiAKbyBDTEktMjIzOiBTb3VyY2UgY29kZSBub3cgdXNlcyBnZW5lcmljIHR5cGVzIGluc3RlYWQgb2YgcmF3IHR5cGVzIHdoZXJlCiAgICAgICAgICAgcG9zc2libGUuIFRoYW5rcyB0byBHZXJhcmQgV2VhdGhlcmJ5LiAKbyBDTEktMjIwICBDb3JyZWN0ZWQgamF2YWRvYyBmb3IgcmV0dXJuIHR5cGUgb2YKICAgICAgICAgICBNaXNzaW5nT3B0aW9uRXhjZXB0aW9uLmdldE1pc3NpbmdPcHRpb25zKCkuIFRoYW5rcyB0byBKb2UgQ2FzYWRvbnRlLgpvIENMSS0xOTc6IEltcHJvdmUgZGVzY3JpcHRpb24gb2YgcGFyYW1ldGVyICJzdG9wQXROb25PcHRpb24iIGluIG1ldGhvZAogICAgICAgICAgIENvbW1hbmRMaW5lLnBhcnNlKE9wdGlvbnMsIFN0cmluZ1tdLCBib29sZWFuKS4gVGhhbmtzIHRvCiAgICAgICAgICAgQW5kZXJzIExhcnNzb24uCm8gQ0xJLTIzMTogUmVtb3ZlZCBEb3VibGVDaGVja2VkTG9ja2luZyB0ZXN0IGZyb20gY2hlY2tzdHlsZSBjb25maWd1cmF0aW9uLgogICAgICAgICAgIFRoYW5rcyB0byBEdW5jYW4gSm9uZXMuCgoKICAgICAgICAgICAgICAgIFJlbGVhc2UgTm90ZXMgZm9yIHZlcnNpb24gMS4yCgpORVcgRkVBVFVSRVMKPT09PT09PT09PT09CgpvIC0tICAgICA6IFRoZSBtZXRob2QgZ2V0T3B0aW9uUHJvcGVydGllcygpIGluIHRoZSBDb21tYW5kTGluZSBjbGFzcyB3YXMgYWRkZWQKICAgICAgICAgICB0byByZXRyaWV2ZSBlYXNpbHkgdGhlIGtleS92YWx1ZSBwYWlycyBzcGVjaWZpZWQgd2l0aCBvcHRpb25zIGxpa2UKICAgICAgICAgICAtRGtleTE9dmFsdWUxIC1Ea2V5Mj12YWx1ZTIuCm8gQ0xJLTE1NzogR251UGFyc2VyIG5vdyBzdXBwb3J0cyBsb25nIG9wdGlvbnMgd2l0aCBhbiAnPScgc2lnbiAKICAgICAgICAgICAoaWUuIC0tZm9vPWJhciBhbmQgLWZvbz1iYXIpCm8gQ0xJLTE1NTogVGhlIG9yZGVyaW5nIG9mIG9wdGlvbnMgY2FuIGJlIGRlZmluZWQgaW4gaGVscCBtZXNzYWdlcy4KCgpCVUcgRklYRVMKPT09PT09PT09CgpvIENMSS0xMzc6IFRoZSBudW1iZXIgb2YgYXJndW1lbnRzIGRlZmluZWQgZm9yIGFuIG9wdGlvbiBzcGVjaWZpZXMgdGhlCiAgICAgICAgICAgYXJndW1lbnRzIHBlciBvY2N1cmVuY2Ugb2YgdGhlIG9wdGlvbiBhbmQgbm90IGZvciBhbGwgb2NjdXJlbmNlcy4KbyBDTEktMTY0OiBQb3NpeFBhcnNlciBubyBsb25nZXIgaWdub3JlcyB1bnJlY29nbml6ZWQgc2hvcnQgb3B0aW9ucy4KbyBDTEktMTYzOiBQb3NpeFBhcnNlciBubyBsb25nZXIgc3RvcHMgdGhlIGJ1cnN0aW5nIHByb2Nlc3Mgb2YgYSB0b2tlbiBpZgogICAgICAgICAgIHN0b3BBdE5vbk9wdGlvbiBpcyBlbmFibGVkIGFuZCBhIG5vbiBvcHRpb24gY2hhcmFjdGVyIGlzCiAgICAgICAgICAgZW5jb3VudGVyZWQuCm8gQ0xJLTE2NTogUG9zaXhQYXJzZXIgbm8gbG9uZ2VyIGtlZXBzIHByb2Nlc3NpbmcgdGhlIHRva2VucyBhZnRlciBhbiAKICAgICAgICAgICB1bnJlY29nbml6ZWQgbG9uZyBvcHRpb24gd2hlbiBzdG9wQXROb25PcHRpb24gaXMgZW5hYmxlZC4KbyBDTEktMTU2OiBSZXF1aXJlZCBvcHRpb25zIGFyZSBwcm9wZXJseSBjaGVja2VkIGlmIGFuIE9wdGlvbnMgaW5zdGFuY2UgaXMgdXNlZAogICAgICAgICAgIHR3aWNlIHRvIHBhcnNlIGEgY29tbWFuZCBsaW5lLgpvIENMSS0xNTE6IFRoZSBsaW5lIHdyYXBwaW5nIGluIEhlbHBGb3JtYXR0ZXIgbm93IHdvcmtzIHByb3Blcmx5LgoKCkNIQU5HRVMKPT09PT09PQoKbyBDTEktMTQ5OiBUaGUgbWVzc2FnZSBvZiBNaXNzaW5nT3B0aW9uRXhjZXB0aW9uIGhhcyBiZWVuIGltcHJvdmVkLgpvIENMSS04NjogIFRoZSBleGNlcHRpb25zIGhhdmUgYmVlbiBlbmhhbmNlZCB3aXRoIG1ldGhvZHMgdG8gcmV0cmlldmUgZWFzaWx5CiAgICAgICAgICAgdGhlIHJlbGF0ZWQgb3B0aW9ucy4KbyBDTEktMTQxOiBPcHRpb24udG9TdHJpbmcoKSBub3cgcmVwb3J0cyBhcmd1bWVudHMgcHJvcGVybHkuCm8gQ0xJLTE0MjogVGhlIFBhcnNlciBjbGFzcyBoYXMgYmVlbiBjaGFuZ2VkIHRvIGJlIG1vcmUgZWFzaWx5IGV4dGVuZGFibGUuCm8gQ0xJLTE0MDogVGhlIGZvbGxvd2luZyBjbGFzc2VzIGFyZSBub3cgc2VyaWFsaXphYmxlOiBPcHRpb24sIE9wdGlvbkdyb3VwLAogICAgICAgICAgIENvbW1hbmRMaW5lIGFuZCBPcHRpb25zLgpvIC0tICAgICA6IE9wdGlvblZhbGlkYXRvciBpcyBubyBsb25nZXIgcHVibGljLCBpdHMgbWV0aG9kcyB3ZXJlIGFsbCBwcml2YXRlLgoKCiAgICAgICAgICAgICAgICBSZWxlYXNlIE5vdGVzIGZvciB2ZXJzaW9uIDEuMQoKTkVXIEZFQVRVUkVTCj09PT09PT09PT09PQoKbyBDTEktNzg6ICBTZXR0aW5nIGRlc2NyaXB0aW9uIG9mIGEgT3B0aW9uLiAKCkNIQU5HRVMKPT09PT09PQoKbyBDTEktMjogICBXcm9uZyB1c2FnZSBzdW1tYXJ5LiAKbyBDTEktNTogICBEZXBlbmRlY3kgb24gY29tbW9ucy1sYW5nLTIuMCBidXQgY29tbW9ucy1sYW5nLTEuMCBpcyBvYnRhaW5lZC4gCm8gQ0xJLTg6ICAgTGluZSBzZXBhcmF0b3IgYXMgZmlyc3QgY2hhciBmb3IgaGVscGZvcm1hdHRlciAoZm9vdGVyKSB0aHJvd3MKICAgICAgICAgICBleGNlcHRpb24uIApvIENMSS0xMzogIENvbW1hbmRMaW5lLmdldE9wdGlvblZhbHVlKCkgYmVoYXZlcyBjb250cmFyeSB0byBkb2NzLiAKbyBDTEktMjE6ICBjbG9uZSBtZXRob2QgaW4gT3B0aW9uIHNob3VsZCB1c2Ugc3VwZXIuY2xvbmUoKS4gCm8gQ0xJLTIzOiAgUGFzc2luZyBwcm9wZXJ0aWVzIGluIFBhcnNlciBkb2VzIG5vdCB3b3JrIGZvciBvcHRpb25zIHdpdGggYSBzaW5nbGUKICAgICAgICAgICBhcmd1bWVudC4gCm8gQ0xJLTI2OiAgT25seSBsb25nIG9wdGlvbnMgd2l0aG91dCBzaG9ydCBvcHRpb24gc2VlbXMgdG8gYmUgbm90aWNlZC4gCm8gQ0xJLTI4OiAgSW5maW5pdGUgTG9vcCBpbiBDb21tYW5kLUxpbmUgcHJvY2Vzc2luZy4gCm8gQ0xJLTI5OiAgT3B0aW9ucyBzaG91bGQgbm90IGJlIGFibGUgdG8gYmUgYWRkZWQgbW9yZSB0aGFuIG9uY2UuIApvIENMSS0zNTogIEhlbHBGb3JtYXR0ZXIgZG9lc24ndCBzb3J0IG9wdGlvbnMgcHJvcGVybHkuIApvIENMSS0zODogIEhlbHBGb3JtYXR0ZXIgZG9lc24ndCBmdW5jdGlvbiBjb3JyZWN0bHkgZm9yIG9wdGlvbnMgd2l0aCBvbmx5CiAgICAgICAgICAgTG9uZ09wdC4gCm8gQ0xJLTQ0OiAgRG9jdW1lbnQgZW5oYW5jZW1lbnQuIApvIENMSS00NTogIERvY3VtZW50YXRpb24gZXJyb3JzLiAKbyBDTEktNTE6ICBQYXJhbWV0ZXIgdmFsdWUgIi1zb21ldGhpbmciIG1pc2ludGVycHJldGVkIGFzIGEgcGFyYW1ldGVyLiAKbyBDTEktNTY6ICBjbG9uZSgpIG1ldGhvZCBkb2Vzbid0IGZ1bGx5IGNsb25lIGNvbnRlbnRzLiAKbyBDTEktNTk6ICBObyBKYXZhZG9jIGZvciBIZWxwRm9ybWF0dGVyIS4gCm8gQ0xJLTY1OiAgUGFyc2VyIGJyZWFrcyB1cCBjb21tYW5kIGxpbmUgcGFybXMgaW50byBzaW5nbGUgY2hhcmFjdGVycy4gCm8gQ0xJLTY3OiAgTWlzc2luZyBhcmd1bWVudHMgaW4gSGVscEZvcm1hdHRlci5yZW5kZXJPcHRpb25zKC4uKS4KbyBDTEktNjk6ICBFcnJvciBwYXJzaW5nIG9wdGlvbiBhcmd1bWVudHMuCm8gQ0xJLTcxOiAgQSB3ZWFrbmVzcyBvZiBwYXJzZXIuCm8gQ0xJLTEyOTogQ0xJXzFfQlJBTkNIIGJ1aWxkLnhtbCBkb2Vzbid0IHdvcmsuCm8gQ0xJLTEzMDogUmVtb3ZlIHRoZSBDb21tb25zIExhbmcgZGVwZW5kZW5jeS4KbyBDTEktMTMxOiBPcHRpb25zIGNsYXNzIHJldHVybnMgb3B0aW9ucyBpbiByYW5kb20gb3JkZXIuCm8gQ0xJLTEzMjogTWlzc2luZ09wdGlvbkV4Y2VwdGlvbiBzaG91bGQgY29udGFpbiBhIHVzZWZ1bCBlcnJvciBtZXNzYWdlLgpvIENMSS0xMzM6IE51bGxQb2ludGVyRXhjZXB0aW9uIGluIFV0aWwuc3RyaXBMZWFkaW5nSHlwaGVucyB3aGVuIHBhc3NlZCBhIG51bGwKICAgICAgICAgICBhcmd1bWVudC4gCm8gQ0xJLTEzNDogMS4xIGlzIG5vdCBiYWNrd2FyZHMgY29tcGF0aWJsZSBiZWNhdXNlIGl0IGFkZHMgbWV0aG9kcyB0byB0aGUKICAgICAgICAgICBDb21tYW5kTGluZVBhcnNlciBpbnRlcmZhY2UuIApvIENMSS0xMzU6IEJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IGJldHdlZW4gMS4xIGFuZCAxLjAgYnJva2VuIGR1ZSB0bwogICAgICAgICAgIE9wdGlvbi5hZGRWYWx1ZSByZW1vdmFsLiAKCgpIaXN0b3JpY2FsIGxpc3Qgb2YgY2hhbmdlczogaHR0cDovL2NvbW1vbnMuYXBhY2hlLm9yZy9jbGkvY2hhbmdlcy1yZXBvcnQuaHRtbAoKRm9yIGNvbXBsZXRlIGluZm9ybWF0aW9uIG9uIENvbW1vbnMgQ0xJLCBpbmNsdWRpbmcgaW5zdHJ1Y3Rpb25zIG9uIGhvdyB0bwpzdWJtaXQgYnVnIHJlcG9ydHMsIHBhdGNoZXMsIG9yIHN1Z2dlc3Rpb25zIGZvciBpbXByb3ZlbWVudCwgc2VlIHRoZSAKQXBhY2hlIENvbW1vbnMgQ0xJIHdlYnNpdGU6CgpodHRwOi8vY29tbW9ucy5hcGFjaGUub3JnL2NsaS8KCkhhdmUgZnVuIQotQXBhY2hlIENvbW1vbnMgQ0xJIHRlYW0K