ZGlmZiAtLWdpdCBhL0FOTk9VTkNFIGIvQU5OT1VOQ0UKaW5kZXggZTA5ZTczMS4uODU4YzdmMiAxMDA2NDQKLS0tIGEvQU5OT1VOQ0UKKysrIGIvQU5OT1VOQ0UKQEAgLTEsMjY1ICsxLDgyMyBAQAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFubm91bmNpbmcgbmN1cnNlcyA1LjcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBBbm5vdW5jaW5nIG5jdXJzZXMgNi4wCisKK092ZXJ2aWV3CiAKICAgIFRoZSAgbmN1cnNlcyAgKG5ldyAgY3Vyc2VzKSAgbGlicmFyeSAgaXMgIGEgZnJlZSBzb2Z0d2FyZSBlbXVsYXRpb24gb2YKLSAgIGN1cnNlcyAgaW4gIFN5c3RlbSAgViAgUmVsZWFzZSA0LjAsIGFuZCBtb3JlLiBJdCB1c2VzIHRlcm1pbmZvIGZvcm1hdCwKLSAgIHN1cHBvcnRzICBwYWRzICBhbmQgY29sb3IgYW5kIG11bHRpcGxlIGhpZ2hsaWdodHMgYW5kIGZvcm1zIGNoYXJhY3RlcnMKLSAgIGFuZCAgIGZ1bmN0aW9uLWtleSAgIG1hcHBpbmcsICAgYW5kICBoYXMgIGFsbCAgdGhlICBvdGhlciAgU1lTVi1jdXJzZXMKLSAgIGVuaGFuY2VtZW50cyBvdmVyIEJTRCBjdXJzZXMuCisgICBjdXJzZXMgIGluICBTeXN0ZW0gIFYgIFJlbGVhc2UgIDQuMCAoU1ZyNCksIGFuZCBtb3JlLiBJdCB1c2VzIHRlcm1pbmZvCisgICBmb3JtYXQsICBzdXBwb3J0cyAgcGFkcyAgYW5kICBjb2xvciAgYW5kIG11bHRpcGxlIGhpZ2hsaWdodHMgYW5kIGZvcm1zCisgICBjaGFyYWN0ZXJzIGFuZCBmdW5jdGlvbi1rZXkgbWFwcGluZywgYW5kIGhhcyBhbGwgdGhlIG90aGVyIFNWcjQtY3Vyc2VzCisgICBlbmhhbmNlbWVudHMgIG92ZXIgIEJTRCAgY3Vyc2VzLiAgU1ZyNCBjdXJzZXMgaXMgYmV0dGVyIGtub3duIHRvZGF5IGFzCisgICBYL09wZW4gQ3Vyc2VzLgogCiAgICBJbiAgbWlkLUp1bmUgIDE5OTUsICB0aGUgIG1haW50YWluZXIgb2YgNC40QlNEIGN1cnNlcyBkZWNsYXJlZCB0aGF0IGhlCi0gICBjb25zaWRlcmVkICA0LjRCU0QgY3Vyc2VzIG9ic29sZXRlLCBhbmQgZW5jb3VyYWdlZCB0aGUga2VlcGVycyBvZiBVbml4CisgICBjb25zaWRlcmVkICA0LjRCU0QgY3Vyc2VzIG9ic29sZXRlLCBhbmQgZW5jb3VyYWdlZCB0aGUga2VlcGVycyBvZiB1bml4CiAgICByZWxlYXNlcyBzdWNoIGFzIEJTRC9PUywgRnJlZUJTRCBhbmQgTmV0QlNEIHRvIHN3aXRjaCBvdmVyIHRvIG5jdXJzZXMuCiAKLSAgIFRoZSBuY3Vyc2VzIGNvZGUgd2FzIGRldmVsb3BlZCB1bmRlciBHTlUvTGludXguIEl0IGhhcyBiZWVuIGluIHVzZSBmb3IKLSAgIHNvbWUgIHRpbWUgIHdpdGggIE9wZW5CU0QgYXMgdGhlIHN5c3RlbSBjdXJzZXMgbGlicmFyeSwgYW5kIG9uIEZyZWVCU0QKLSAgIGFuZCAgTmV0QlNEICBhcyAgYW4gIGV4dGVybmFsICBwYWNrYWdlLiAgSXQgIHNob3VsZCBwb3J0IGVhc2lseSB0byBhbnkKLSAgIEFOU0kvUE9TSVgtY29uZm9ybWluZyBVTklYLiBJdCBoYXMgZXZlbiBiZWVuIHBvcnRlZCB0byBPUy8yIFdhcnAhCisgICBTaW5jZSAxOTk1LCBuY3Vyc2VzIGhhcyBiZWVuIHBvcnRlZCB0byBtYW55IHN5c3RlbXM6CisgICAgICogSXQgaXMgdXNlZCBpbiBhbG1vc3QgZXZlcnkgc3lzdGVtIGJhc2VkIG9uIHRoZSBMaW51eCBrZXJuZWwgKGFzaWRlCisgICAgICAgZnJvbSBzb21lIGVtYmVkZGVkIGFwcGxpY2F0aW9ucykuCisgICAgICogSXQgIGlzICB1c2VkICBhcyB0aGUgc3lzdGVtIGN1cnNlcyBsaWJyYXJ5IG9uIE9wZW5CU0QsIEZyZWVCU0QgYW5kCisgICAgICAgT1NYLgorICAgICAqIEl0ICBpcyB1c2VkIGluIGVudmlyb25tZW50cyBzdWNoIGFzIEN5Z3dpbiBhbmQgTWluR1cuIFRoZSBmaXJzdCBvZgorICAgICAgIHRoZXNlIHdhcyBFTVggb24gT1MvMiBXYXJwLgorICAgICAqIEl0IGlzIHVzZWQgKHRob3VnaCB1c3VhbGx5IG5vdCBhcyB0aGUgc3lzdGVtIGN1cnNlcykgb24gYWxsIG9mIHRoZQorICAgICAgIHZlbmRvciAgdW5peCAgc3lzdGVtcywgIGUuZy4sICBBSVgsICBIUC1VWCwgIElSSVg2NCwgU0NPLCBTb2xhcmlzLAorICAgICAgIFRydTY0LgorICAgICAqIEl0IHNob3VsZCB3b3JrIHJlYWRpbHkgb24gYW55IEFOU0kvUE9TSVgtY29uZm9ybWluZyB1bml4LgogCiAgICBUaGUgZGlzdHJpYnV0aW9uIGluY2x1ZGVzIHRoZSBsaWJyYXJ5IGFuZCBzdXBwb3J0IHV0aWxpdGllcywgaW5jbHVkaW5nCi0gICBhICAgdGVybWluZm8gIGNvbXBpbGVyICB0aWMoMSksICBhICBkZWNvbXBpbGVyICBpbmZvY21wKDEpLCAgY2xlYXIoMSksCi0gICB0cHV0KDEpLCAgdHNldCgxKSwgIGFuZCAgYSAgdGVybWNhcCBjb252ZXJzaW9uIHRvb2wgY2FwdG9pbmZvKDEpLiBGdWxsCi0gICBtYW51YWwgcGFnZXMgYXJlIHByb3ZpZGVkIGZvciB0aGUgbGlicmFyeSBhbmQgdG9vbHMuCisgICAgICogWzFdY2FwdG9pbmZvLCBhIHRlcm1jYXAgY29udmVyc2lvbiB0b29sCisgICAgICogWzJdY2xlYXIsIHV0aWxpdHkgZm9yIGNsZWFyaW5nIHRoZSBzY3JlZW4KKyAgICAgKiBbM11pbmZvY21wLCB0aGUgdGVybWluZm8gZGVjb21waWxlcgorICAgICAqIFs0XXRhYnMsIHNldCB0YWJzIG9uIGEgdGVybWluYWwKKyAgICAgKiBbNV10aWMsIHRoZSB0ZXJtaW5mbyBjb21waWxlcgorICAgICAqIFs2XXRvZSwgbGlzdCAodGFibGUgb2YpIHRlcm1pbmZvIGVudHJpZXMKKyAgICAgKiBbN110cHV0LCAgdXRpbGl0eSAgZm9yICByZXRyaWV2aW5nICB0ZXJtaW5hbCBjYXBhYmlsaXRpZXMgaW4gc2hlbGwKKyAgICAgICBzY3JpcHRzCisgICAgICogWzhddHNldCwgdG8gaW5pdGlhbGl6ZSB0aGUgdGVybWluYWwKKworICAgRnVsbCBtYW51YWwgcGFnZXMgYXJlIHByb3ZpZGVkIGZvciB0aGUgbGlicmFyeSBhbmQgdG9vbHMuCiAKICAgIFRoZSAgbmN1cnNlcyAgZGlzdHJpYnV0aW9uICBpcyAgYXZhaWxhYmxlIHZpYSBhbm9ueW1vdXMgRlRQIGF0IHRoZSBHTlUKLSAgIGRpc3RyaWJ1dGlvbiBzaXRlIFsxXWZ0cDovL2Z0cC5nbnUub3JnL2dudS9uY3Vyc2VzLyAuCi0gICBJdCBpcyBhbHNvIGF2YWlsYWJsZSBhdCBbMl1mdHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9uY3Vyc2VzLyAuCisgICBkaXN0cmlidXRpb24gc2l0ZQogCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWxlYXNlIE5vdGVzCisgICAgIFs5XWZ0cDovL2Z0cC5nbnUub3JnL2dudS9uY3Vyc2VzLyAuCiAKLSAgIFRoaXMgIHJlbGVhc2UgIGlzICBkZXNpZ25lZCAgdG8gIGJlIHVwd2FyZCBjb21wYXRpYmxlIGZyb20gbmN1cnNlcyA1LjAKLSAgIHRocm91Z2ggICA1LjY7ICB2ZXJ5ICBmZXcgIGFwcGxpY2F0aW9ucyAgd2lsbCAgcmVxdWlyZSAgcmVjb21waWxhdGlvbiwKLSAgIGRlcGVuZGluZyAgIG9uICB0aGUgIHBsYXRmb3JtLiAgVGhlc2UgIGFyZSAgdGhlICBoaWdobGlnaHRzICBmcm9tICB0aGUKLSAgIGNoYW5nZS1sb2cgc2luY2UgbmN1cnNlcyA1LjYgcmVsZWFzZS4KKyAgIEl0IGlzIGFsc28gYXZhaWxhYmxlIGF0CiAKLSAgIEludGVyZmFjZSBjaGFuZ2VzOgotICAgICAqIGdlbmVyYXRlIGxpbmthYmxlIHN0dWJzIGZvciBzb21lIG1hY3JvczoKLSAgICAgICBnZXRhdHRycworICAgICBbMTBdZnRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvbmN1cnNlcy8gLgogCi0gICBOZXcgZmVhdHVyZXMgYW5kIGltcHJvdmVtZW50czoKLSAgICAgKiBsaWJyYXJ5Ci0gICAgICAgICAgKyBuZXcgIGZsYXZvciAgb2YgIHRoZSAgbmN1cnNlcyAgbGlicmFyeSAgcHJvdmlkZXMgIHJ1ZGltZW50YXJ5Ci0gICAgICAgICAgICBzdXBwb3J0ICBmb3IgIFBPU0lYIHRocmVhZHMuIFNldmVyYWwgZnVuY3Rpb25zIGFyZSByZWVudHJhbnQsCi0gICAgICAgICAgICBidXQgbW9zdCByZXF1aXJlIGVpdGhlciBhIHdpbmRvdy1sZXZlbCBvciBzY3JlZW4tbGV2ZWwgbXV0ZXguCi0gICAgICAgICAgICAoVGhpcyAgaXMgIEFQSS1jb21wYXRpYmxlLCAgYnV0ICBub3QgIEFCSS1jb21wYXRpYmxlIHdpdGggdGhlCi0gICAgICAgICAgICBub3JtYWwgbGlicmFyeSkuCi0gICAgICAgICAgKyBhZGQgIE5DVVJTRVNfT1BBUVVFICBzeW1ib2wgIHRvICBjdXJzZXMuaCwgIHdpbGwgIHVzZSB0byBtYWtlCi0gICAgICAgICAgICBzdHJ1Y3RzIG9wYXF1ZSBpbiBzZWxlY3RlZCBjb25maWd1cmF0aW9ucy4KLSAgICAgICAgICArIGFkZCAgIE5DVVJTRVNfRVhUX0ZVTkNTICBhbmQgIE5DVVJTRVNfRVhUX0NPTE9SUyAgc3ltYm9scyAgdG8KLSAgICAgICAgICAgIGN1cnNlcy5oIHRvIG1ha2UgaXQgc2ltcGxlciB0byB0ZWxsIGlmIHRoZSBleHRlbmRlZCBmdW5jdGlvbnMKLSAgICAgICAgICAgIGFuZC9vciBjb2xvcnMgYXJlIGRlY2xhcmVkLgotICAgICAgICAgICsgYWRkIHdyZXNpemUoKSB0byBDKysgYmluZGluZwotICAgICAgICAgICsgZWxpbWluYXRlIGZpeGVkLWJ1ZmZlciB2c3ByaW50ZigpIGNhbGxzIGluIEMrKyBiaW5kaW5nLgotICAgICAgICAgICsgYWRkICBzZXZlcmFsICBmdW5jdGlvbnMgdG8gQysrIGJpbmRpbmcgd2hpY2ggd3JhcCBDIGZ1bmN0aW9ucwotICAgICAgICAgICAgdGhhdCBwYXNzIGEgV0lORE9XKiBwYXJhbWV0ZXIuCi0gICAgICAgICAgKyBhZGFwdCBtb3VzZS1oYW5kbGluZyBjb2RlIGZyb20gbWVudSBsaWJyYXJ5IGluIGZvcm0tbGlicmFyeQotICAgICAgICAgICsgaW1wcm92ZSAgdHJhY2luZyAgZm9yICBmb3JtICBsaWJyYXJ5LCAgc2hvd2luZyBjcmVhdGVkIGZvcm1zLAotICAgICAgICAgICAgZmllbGRzLCBldGMuCi0gICAgICAgICAgKyBtYWtlICROQ1VSU0VTX05PX1BBRERJTkcgZmVhdHVyZSB3b3JrIGZvciB0ZXJtY2FwIGludGVyZmFjZSAuCi0gICAgICAgICAgKyBhZGQgIGNoZWNrICB0byAgdHJhY2UtZmlsZSAgb3BlbiwgIGlmICB0aGUgIGdpdmVuICBuYW1lICBpcyBhCi0gICAgICAgICAgICBkaXJlY3RvcnksIGFkZCAiLmxvZyIgdG8gdGhlIG5hbWUgYW5kIHRyeSBhZ2Fpbi4KLSAgICAgICAgICArIHNldmVyYWwgICBuZXcgICBtYW5wYWdlczogIGN1cnNfbGVnYWN5LjN4LCAgY3Vyc19tZW1sZWFrcy4zeCwKLSAgICAgICAgICAgIGN1cnNfb3BhcXVlLjN4IGFuZCBjdXJzX3RocmVhZHMuM3gKLSAgICAgKiBwcm9ncmFtczoKLSAgICAgICAgICArIG1vZGlmaWVkICB0aHJlZSAgdGVzdC1wcm9ncmFtcyAgdG8gIGRlbW9uc3RyYXRlIHRoZSB0aHJlYWRpbmcKLSAgICAgICAgICAgIHN1cHBvcnQgaW4gdGhpcyB2ZXJzaW9uOiBkaXR0bywgcmFpbiwgd29ybS4KLSAgICAgICAgICArIHNldmVyYWwgICAgbmV3ICAgIHRlc3QtcHJvZ3JhbXM6ICAgZGVtb19wYW5lbHMsICAgZG90c19tdmN1ciwKLSAgICAgICAgICAgIGluY2hfd2lkZSwgICAgaW5jaHMsICAgIGtleV9uYW1lLCAgICBrZXlfbmFtZXMsICAgc2F2ZXNjcmVlbiwKLSAgICAgICAgICAgIHNhdmVzY3JlZW4uc2ggICAgdGVzdF9hcnJheXMsICAgdGVzdF9nZXRfd3N0ciwgICB0ZXN0X2dldHN0ciwKLSAgICAgICAgICAgIHRlc3RfaW5zdHIsIHRlc3RfaW53c3RyIGFuZCB0ZXN0X29wYXF1ZS4KLSAgICAgICAgICArIGFkZCBhZGFjdXJzZXMtY29uZmlnIHRvIHRoZSBBZGE5NSBpbnN0YWxsLgotICAgICAgICAgICsgbW9kaWZ5ICB0aWMgIC1mIG9wdGlvbiB0byBmb3JtYXQgc3BhY2VzIGFzIFxzIHRvIHByZXZlbnQgdGhlbQotICAgICAgICAgICAgZnJvbSAgYmVpbmcgIGxvc3QgIHdoZW4gIHRoYXQgIGlzICByZWFkICBiYWNrICBpbiB1bmZvcm1hdHRlZAotICAgICAgICAgICAgc3RyaW5ncy4KLSAgICAgICAgICArIFRoZSB0YWNrIHByb2dyYW0gaXMgbm93IGRpc3RyaWJ1dGVkIHNlcGFyYXRlbHkgZnJvbSBuY3Vyc2VzLgotICAgICAqIHRlcm1pbmFsIGRhdGFiYXNlCi0gICAgICAgICAgKyBhZGRlZCBlbnRyaWVzOgotICAgICAgICAgICAgICAgbyBFdGVybS0yNTZjb2xvciwgRXRlcm0tODhjb2xvciBhbmQgcnh2dC04OGNvbG9yCi0gICAgICAgICAgICAgICBvIGF0ZXJtCi0gICAgICAgICAgICAgICBvIGtvbnNvbGUtMjU2Y29sb3IKLSAgICAgICAgICAgICAgIG8gbXJ4dnQKLSAgICAgICAgICAgICAgIG8gc2NyZWVuLm1sdGVybQotICAgICAgICAgICAgICAgbyBzY3JlZW4ucnh2dAotICAgICAgICAgICAgICAgbyB0ZXJhdGVybTQuNTkgIGlzIG5vdyB0aGUgcHJpbWFyeSBwcmltYXJ5IHRlcmF0ZXJtIGVudHJ5LAotICAgICAgICAgICAgICAgICByZW5hbWVkIG9yaWdpbmFsIHRvIHRlcmF0ZXJtMi4zCi0gICAgICAgICAgICAgICBvIDl0ZXJtIHRlcm1pbmFsCi0gICAgICAgICAgICAgICBvIE5ld2J1cnkgRGF0YSBlbnRyaWVzCi0gICAgICAgICAgKyB1cGRhdGVkL2ltcHJvdmVkIGVudHJpZXM6Ci0gICAgICAgICAgICAgICBvIGdub21lIHRvIHZlcnNpb24gMi4yMi4zCi0gICAgICAgICAgICAgICBvIGgxOSwgejEwMAotICAgICAgICAgICAgICAgbyBrb25zb2xlIHRvIHZlcnNpb24gMS42LjYKLSAgICAgICAgICAgICAgIG8gbWx0ZXJtLCBtbHRlcm0rcGNma2V5cwotICAgICAgICAgICAgICAgbyB4dGVybSwgYW5kIGJ1aWxkaW5nLWJsb2NrcyBmb3IgZnVuY3Rpb24ta2V5cyB0byBbM114dGVybQotICAgICAgICAgICAgICAgICBwYXRjaCAjMjMwLgorUmVsZWFzZSBOb3RlcwogCi0gICBNYWpvciBidWcgZml4ZXM6Ci0gICAgICogYWRkICAgbG9naWMgICB0byAgIHRpYyAgZm9yICBjYW5jZWxsaW5nICBzdHJpbmdzICBpbiAgdXNlci1kZWZpbmVkCi0gICAgICAgY2FwYWJpbGl0aWVzICh0aGlzIGlzIG5lZWRlZCBmb3IgY3VycmVudCBrb25zb2xlIHRlcm1pbmZvIGVudHJ5KS4KLSAgICAgKiBtb2RpZnkgIG1rLTFzdC5hd2sgIHNvIHRoZSBnZW5lcmF0ZWQgbWFrZWZpbGUgcnVsZXMgZm9yIGxpbmtpbmcgb3IKLSAgICAgICBpbnN0YWxsaW5nICBzaGFyZWQgIGxpYnJhcmllcyAgZG8gbm90IGZpcnN0IHJlbW92ZSB0aGUgbGlicmFyeSwgaW4KLSAgICAgICBjYXNlIGl0IGlzIGluIHVzZSwgZS5nLiwgbGlibmN1cnNlcy5zbyBieSAvYmluL3NoLgotICAgICAqIGNvcnJlY3QgY2hlY2sgZm9yIG5vdGltZW91dCgpIGluIHdnZXRjaCgpLgotICAgICAqIGZpeCBhIHNpZ24tZXh0ZW5zaW9uIGJ1ZyBpbiBpbmZvY21wJ3MgcmVwYWlyX2Fjc2MoKSBmdW5jdGlvbi4KLSAgICAgKiBjaGFuZ2Ugd2lubnN0cigpIHRvIHN0b3AgYXQgdGhlIGVuZCBvZiB0aGUgbGluZS4KLSAgICAgKiBtYWtlIEFkYTk1IGRlbW9fcGFuZWxzKCkgZXhhbXBsZSB3b3JrLgotICAgICAqIGZpeCBmb3IgYWRkaW5nIGEgbm9uLXNwYWNpbmcgY2hhcmFjdGVyIGF0IHRoZSBiZWdpbm5pbmcgb2YgYSBsaW5lLgotICAgICAqIGZpbGwgICBpbiAgIGV4dGVuZGVkLWNvbG9yICAgcGFpciAgIHRvICAgbWFrZSAgIGNvbG9ycyAgIHdvcmsgIGZvcgotICAgICAgIHdpZGUtY2hhcmFjdGVycyB1c2luZyBleHRlbmRlZC1jb2xvcnMuCi0gICAgICogaW1wcm92ZSAgcmVmcmVzaCAgb2YgIHdpbmRvdyAgb24gIHRvcCAgb2YgbXVsdGktY29sdW1uIGNoYXJhY3RlcnMsCi0gICAgICAgdGFraW5nICAgaW50byAgIGFjY291bnQgIHNwbGl0ICBjaGFyYWN0ZXJzICBvbiAgbGVmdC9yaWdodCAgd2luZG93Ci0gICAgICAgYm91bmRhcmllcy4KLSAgICAgKiBtb2RpZnkgIHdpbl93Y2huc3RyKCkgIHRvIGVuc3VyZSB0aGF0IG9ubHkgYSBiYXNlIGNlbGwgaXMgcmV0dXJuZWQKLSAgICAgICBmb3IgZWFjaCBtdWx0aS1jb2x1bW4gY2hhcmFjdGVyLgotICAgICAqIGltcHJvdmUgd2FkZGNoKCkgYW5kIHdpbnNjaCgpIGhhbmRsaW5nIG9mIEVJTFNFUSBmcm9tIG1icnRvd2MoKSBieQotICAgICAgIHVzaW5nICB1bmN0cmwoKSAgdG8gIGRpc3BsYXkgIGlsbGVnYWwgIGJ5dGVzIHJhdGhlciB0aGFuIHRyeWluZyB0bwotICAgICAgIGFwcGVuZCBmdXJ0aGVyIGJ5dGVzIHRvIG1ha2UgdXAgYSB2YWxpZCBzZXF1ZW5jZS4KLSAgICAgKiByZXN0b3JlIGN1cnNfc2V0KCkgc3RhdGUgYWZ0ZXIgZW5kd2luKCkvcmVmcmVzaCgpCi0gICAgICogbW9kaWZ5ICBrZXluYW1lKCkgdG8gdXNlICJeWCIgZm9ybSBvbmx5IGlmIG1ldGEoKSBoYXMgYmVlbiBjYWxsZWQsCi0gICAgICAgb3IgIGlmICBrZXluYW1lKCkgaXMgY2FsbGVkIHdpdGhvdXQgaW5pdGlhbGl6aW5nIGN1cnNlcywgZS5nLiwgdmlhCi0gICAgICAgaW5pdHNjcigpIG9yIG5ld3Rlcm0oKS4KLSAgICAgKiBtb2RpZnkgIHVuY3RybCgpIHRvIGNoZWNrIGNvZGVzIGluIDEyOC0yNTUgcmFuZ2UgdmVyc3VzIGlzcHJpbnQoKS4KLSAgICAgICBJZiAgdGhleSAgYXJlIG5vdCBwcmludGFibGUsIGFuZCBsb2NhbGUgd2FzIHNldCwgdXNlIGEgIk0tIiBvciAifiIKLSAgICAgICBzZXF1ZW5jZS4KLSAgICAgKiBpbXByb3ZlICByZXNpemV0ZXJtKCkgIGJ5ICBtb3ZpbmcgcmlwcGVkLW9mZiBsaW5lcywgYW5kIHJlcGFpbnRpbmcKLSAgICAgICB0aGUgc29mdC1rZXlzLgotICAgICAqIG1vZGlmeSAgZm9ybSAgbGlicmFyeSB0byBhY2NlcHQgY29udHJvbCBjaGFyYWN0ZXJzIHN1Y2ggYXMgbmV3bGluZQotICAgICAgIGluIHNldF9maWVsZF9idWZmZXIoKSwgd2hpY2ggaXMgY29tcGF0aWJsZSB3aXRoIFNvbGFyaXMuCi0gICAgICogdXNlICBOQ1VSU0VTX01PVVNFX01BU0soKSBpbiBkZWZpbml0aW9uIG9mIEJVVFRPTl9SRUxFQVNFKCksIGV0Yy4sCi0gICAgICAgdG8gICBtYWtlICAgdGhvc2UgICB3b3JrICAgcHJvcGVybHkgIHdpdGggIHRoZSAgLS1lbmFibGUtZXh0LW1vdXNlCi0gICAgICAgY29uZmlndXJhdGlvbgotICAgICAqIGNvcnJlY3QgIHNvbWUgIGZ1bmN0aW9ucyAgaW4gQWRhOTUgYmluZGluZyB3aGljaCB3ZXJlIHVzaW5nIHJldHVybgotICAgICAgIHZhbHVlIGZyb20gQyB3aGVyZSBub25lIHdhcyByZXR1cm5lZC4KLSAgICAgKiByZXZpZXdlZC9maXhlZCBpc3N1ZXMgcmVwb3J0ZWQgYnkgQ292ZXJpdHkgYW5kIEtsb2N3b3JrIHRvb2xzLgorICAgVGhlc2Ugbm90ZXMgYXJlIGZvciBuY3Vyc2VzIDYuMCwgcmVsZWFzZWQgQXVndXN0IDgsIDIwMTUuCiAKLSAgIFBvcnRhYmlsaXR5OgotICAgICAqIGNvbmZpZ3VyZSBzY3JpcHQ6Ci0gICAgICAgICAgKyBuZXcgb3B0aW9uczoKKyAgIFRoaXMgIHJlbGVhc2UgIGlzICBkZXNpZ25lZCAgdG8gIGJlIHNvdXJjZS1jb21wYXRpYmxlIHdpdGggbmN1cnNlcyA1LjAKKyAgIHRocm91Z2ggIDUuOTsgIHByb3ZpZGluZyAgYSAgbmV3ICBhcHBsaWNhdGlvbiAgYmluYXJ5IGludGVyZmFjZSAoQUJJKS4KKyAgIEFsdGhvdWdoICB0aGUgIHNvdXJjZSBjYW4gc3RpbGwgYmUgY29uZmlndXJlZCB0byBzdXBwb3J0IHRoZSBuY3Vyc2VzIDUKKyAgIEFCSSwgIHRoZSAgaW50ZW50ICBvZiAgdGhlICByZWxlYXNlIGlzIHRvIHByb3ZpZGUgZXh0ZW5zaW9ucyB3aGljaCBhcmUKKyAgIGdlbmVyYWxseSB1c2VmdWwsIGJ1dCBiaW5hcnktaW5jb21wYXRpYmxlIHdpdGggbmN1cnNlcyA1OgorICAgICAqIEV4dGVuZCAgdGhlICBjY2hhcl90ICBzdHJ1Y3R1cmUgdG8gYWxsb3cgbW9yZSB0aGFuIDE2IGNvbG9ycyB0byBiZQorICAgICAgIGVuY29kZWQuCisgICAgICogTW9kaWZ5ICB0aGUgIGVuY29kaW5nICBvZiBtb3VzZSBzdGF0ZSB0byBtYWtlIHJvb20gZm9yIGEgNXRoIG1vdXNlCisgICAgICAgYnV0dG9uLiAgVGhhdCAgYWxsb3dzICBvbmUgIHRvIHVzZSBuY3Vyc2VzIHdpdGggYSB3aGVlbCBtb3VzZSB3aXRoCisgICAgICAgeHRlcm0gb3Igc2ltaWxhciBYIHRlcm1pbmFsIGVtdWxhdG9ycy4KIAotICAgICAgICAgICAgICAtLWRpc2FibGUtYmlnLXN0cmluZ3MKLSAgICAgICAgICAgICAgICAgICAgICBjb250cm9sICB3aGV0aGVyIHN0YXRpYyBzdHJpbmcgdGFibGVzIGFyZSBnZW5lcmF0ZWQKLSAgICAgICAgICAgICAgICAgICAgICBhcyAgIHNpbmdsZSAgIGxhcmdlICBzdHJpbmdzICAodG8gIGltcHJvdmUgIHN0YXJ0dXAKLSAgICAgICAgICAgICAgICAgICAgICBwZXJmb3JtYW5jZSksIG9yIGFzIGFycmF5IG9mIGluZGl2aWR1YWwgc3RyaW5ncy4KKyAgIFRoZXJlIGFyZSwgb2YgY291cnNlLCBudW1lcm91cyBvdGhlciBpbXByb3ZlbWVudHMsIGluY2x1ZGluZworICAgICAqIGZpeGVzIG1hZGUgYmFzZWQgb24gdGhlIENsYW5nIGFuZCBDb3Zlcml0eSBzdGF0aWMgYW5hbHl6ZXJzLgorICAgICAqIG1lbW9yeSBsZWFrIGZpeGVzIHVzaW5nIFZhbGdyaW5kCiAKLSAgICAgICAgICAgICAgLS1kaXNhYmxlLXJlbGluawotICAgICAgICAgICAgICAgICAgICAgIGNvbnRyb2wgICB3aGV0aGVyICBzaGFyZWQgIGxpYnJhcmllcyAgYXJlICByZWxpbmtlZAotICAgICAgICAgICAgICAgICAgICAgIChkdXJpbmcgaW5zdGFsbCkgd2hlbiBycGF0aCBpcyBlbmFibGVkLgorICAgVGhlICByZWxlYXNlICBub3RlcyAgbWVudGlvbiAgc29tZSAgYnVnLWZpeGVzLCAgYnV0IGFyZSBmb2N1c2VkIG9uIG5ldworICAgZmVhdHVyZXMgIGFuZCAgaW1wcm92ZW1lbnRzIHRvIGV4aXN0aW5nIGZlYXR1cmVzIGxvZyBzaW5jZSBuY3Vyc2VzIDUuOQorICAgcmVsZWFzZS4KIAotICAgICAgICAgICAgICAtLWRpc2FibGUtdGljLWRlcGVuZHMKLSAgICAgICAgICAgICAgICAgICAgICBtYWtlICAgZXhwbGljaXQgIHdoZXRoZXIgIHRpYyAgbGlicmFyeSAgZGVwZW5kcyAgb24KLSAgICAgICAgICAgICAgICAgICAgICBuY3Vyc2VzL25jdXJzZXN3IGxpYnJhcnkuCisgICBXaGlsZSAgdGhlIGludGVudCBvZiB0aGUgcmVsZWFzZSBpcyB0byBwcm92aWRlIGEgbmV3IHN0YWJsZSBBQkksIHRoZXJlCisgICBhcmUgb3RoZXIgZGV2ZWxvcG1lbnQgYWN0aXZpdGllcyB3aGljaCBhcmUgc3VtbWFyaXplZCBiZWxvdy4KKyAgICAgKiBUaGUgIG9yaWdpbmFsICByZWxlYXNlICBwbGFuLCAgZS5nLiwgZm9yICI1LjEwIiB3YXMgdG8gaW1wcm92ZSB0aGUKKyAgICAgICBNaW5HVyBwb3J0LiBVbHRpbWF0ZWx5IHRoYXQgd2FzIGNvbXBsZXRlZCAod2lkZS1jaGFyYWN0ZXIgc3VwcG9ydCwKKyAgICAgICBtb3VzZSwgIGV0YyksICBidXQgIHdhcyAgZGVmZXJyZWQgIHRvIGZvY3VzIG9uIHRlcm1jYXAgc3VwcG9ydCBhbmQKKyAgICAgICBwZXJmb3JtYW5jZSAgaXNzdWVzLiAgQWxzbywgcGlucG9pbnRpbmcgdGhlIHByb2JsZW1zIHdpdGggQ29uc29sZTIKKyAgICAgICB0b29rIGEgd2hpbGUuCisgICAgICogQSAgcmV2aWV3ICBvZiAgdGVybWNhcCAgY29tcGF0aWJpbGl0eSBpbiAyMDExIGxlZCB0byBzZXZlcmFsIG1pbm9yCisgICAgICAgZml4ZXMgIGluICB0aGUgIGxpYnJhcnkgIGFuZCBpbXByb3ZlbWVudHMgdG8gdXRpbGl0aWVzLiBUbyBkbyB0aGlzCisgICAgICAgcHJvcGVybHksICBhICByZXZpZXcgb2YgdGhlIHZhcmlvdXMgZXh0ZW50IHRlcm1jYXAgaW1wbGVtZW50YXRpb25zCisgICAgICAgd2FzIG5lZWRlZC4KKyAgICAgICBUaGUgWzExXXRlcm1jYXAgbGlicmFyeSBjaGVja2VyICh0Y3Rlc3QpIChub3QgcGFydCBvZiBuY3Vyc2VzKSB3YXMKKyAgICAgICBvbmUgICAgcmVzdWx0LiAgICBBICAgZm9sbG93dXAgICByZXZpZXcgICBvZiAgIHBlcmZvcm1hbmNlICAgdXNpbmcKKyAgICAgICBbMTJdbmN1cnNlcy1leGFtcGxlcyBpbiAyMDE0IGxlZCB0byBhZGRpdGlvbmFsIGltcHJvdmVtZW50cy4KKyAgICAgKiBPdXRwdXQgYnVmZmVyaW5nIHByb3ZpZGVkIGEgZnVydGhlciwgYnV0IHdvcnRod2hpbGUgZGlzdHJhY3Rpb24uIEEKKyAgICAgICBidWcgIHJlcG9ydCAgaW4gIDIwMTIgIHJlZ2FyZGluZyAgdGhlICB1c2UgIG9mICBzaWduYWwgaGFuZGxlcnMgaW4KKyAgICAgICBuY3Vyc2VzKSAgcG9pbnRlZCAgb3V0ICBbMTNdYSAgcHJvYmxlbSAgd2l0aCAgdGhlICB1c2UgIG9mICB1bnNhZmUKKyAgICAgICBmdW5jdGlvbnMgIGZvciAgaGFuZGxpbmcgU0lHVFNUUC4gT3RoZXIgc2lnbmFscyBjb3VsZCBiZSBhZGRyZXNzZWQKKyAgICAgICB3aXRoIHdvcmthcm91bmRzOyByZXBhaXJpbmcgU0lHVFNUUCByZXF1aXJlZCBhIGRpZmZlcmVudCBhcHByb2FjaC4KKyAgICAgICBUaGUgIHNvbHV0aW9uICByZXF1aXJlZCBjaGFuZ2luZyBpbnRlcm5hbCBiZWhhdmlvciBvZiB0aGUgbGlicmFyeToKKyAgICAgICBob3cgaXQgaGFuZGxlcyBvdXRwdXQgYnVmZmVyaW5nLgorICAgICAgIE5vdyAgbmN1cnNlcyBidWZmZXJzIGl0cyBvd24gb3V0cHV0LCBpbmRlcGVuZGVudGx5IG9mIHRoZSBzdGFuZGFyZAorICAgICAgIG91dHB1dC4gIEEgZmV3IGFwcGxpY2F0aW9ucyByZWxpZWQgdXBvbiB0aGUgbGlicmFyeSdzIGRpcmVjdCByZXVzZQorICAgICAgIG9mICB0aGUgIHN0YW5kYXJkICBvdXRwdXQgIGJ1ZmZlcmluZzsgIGhvd2V2ZXIgdGhhdCBpcyB1bnNwZWNpZmllZAorICAgICAgIGJlaGF2aW9yICBhbmQgIGhhcyAgbmV2ZXIgYmVlbiBhIHJlY29tbWVuZGVkIHByYWN0aWNlLiBJZGVudGlmeWluZworICAgICAgIHRoZXNlICBhcHBsaWNhdGlvbnMgIGFzICB3ZWxsICBhcyAgcmVmaW5pbmcgIHRoZSAgY2hhbmdlIHRvIHBlcm1pdAorICAgICAgIGxvdy1sZXZlbCBhcHBsaWNhdGlvbnMgdG8gd29yayBjb25zaXN0ZW50bHkgdG9vayB0aW1lLgorICAgICAqIFNpbmNlICB0aGUgaW50cm9kdWN0aW9uIG9mIHRoZSBleHBlcmltZW50YWwgc3VwcG9ydCBmb3IgMjU2IGNvbG9ycworICAgICAgIGVhcmx5ICBpbiAgWzE0XTIwMDUgIChyZWxlYXNlZCBpbiBbMTVdbmN1cnNlcyA1LjUpLCB0aGVyZSBoYXMgYmVlbgorICAgICAgIGluY3JlYXNlZCAgdXNlciAgaW50ZXJlc3QuIEFsbW9zdCBhbGwgcGFja2FnZXJzIGNvbnRpbnVlIHByb3ZpZGluZworICAgICAgIHRoZSBuY3Vyc2VzIEFCSSA1IHdoaWNoIGNhbm5vdCBzdXBwb3J0IDI1NiBjb2xvcnMuCisgICAgICogU3ltYm9sICB2ZXJzaW9uaW5nLCAgb3IgIHRoZSAgbGFjayAgb2YgIGl0IGluIG5jdXJzZXMsIGlzIHRoZSBtYWluCisgICAgICAgcmVhc29uIHdoeSBwYWNrYWdlcnMgd291bGQgYmUgcmVsdWN0YW50IHRvIGFkZCBhIG5ldyBuY3Vyc2VzIEFCSS4KKyAgICAgICBUaGlzICByZWxlYXNlICBwcm92aWRlcyAgdGhlICBuZXcgIEFCSSBhbG9uZyB3aXRoIHNjcmlwdC1nZW5lcmF0ZWQKKyAgICAgICBsaXN0cyAgb2YgdmVyc2lvbmVkIHN5bWJvbHMgd2hpY2ggY2FuIGJlIHVzZWQgZm9yIGJvdGggQUJJIDUgYW5kIDYKKyAgICAgICAod2l0aCAgZGlzdGluY3QgbmFtZXMgdG8ga2VlcCB0aGUgdHdvIHNlcGFyYXRlKS4gVGhpcyB0b29rIHRpbWUgdG8KKyAgICAgICBkZXZlbG9wbWVudCwgYXMgcmVwb3J0ZWQgaW4gWzE2XVN5bWJvbCB2ZXJzaW9uaW5nIGluIG5jdXJzZXMuCiAKLSAgICAgICAgICAgICAgLS1lbmFibGUtbWl4ZWQtY2FzZQotICAgICAgICAgICAgICAgICAgICAgIG92ZXJyaWRlICAgdGhlICBjb25maWd1cmUgIHNjcmlwdCdzICBjaGVjayAgaWYgIHRoZQotICAgICAgICAgICAgICAgICAgICAgIGZpbGVzeXN0ZW0gICBzdXBwb3J0cyAgbWl4ZWQtY2FzZSAgZmlsZW5hbWVzLiAgVGhpcwotICAgICAgICAgICAgICAgICAgICAgIGFsbG93cyAgb25lICB0byAgY29udHJvbCAgaG93IHRoZSB0ZXJtaW5hbCBkYXRhYmFzZQotICAgICAgICAgICAgICAgICAgICAgIG1hcHMgdG8gdGhlIGZpbGVzeXN0ZW0uIEZvciBmaWxlc3lzdGVtcyB0aGF0IGRvIG5vdAotICAgICAgICAgICAgICAgICAgICAgIHN1cHBvcnQgICBtaXhlZC1jYXNlLCAgdGhlICBsaWJyYXJ5ICB1c2VzICBnZW5lcmF0ZQotICAgICAgICAgICAgICAgICAgICAgIDItY2hhcmFjdGVyIChoZXhhZGVjaW1hbCkgY29kZXMgZm9yIHRoZSBsb3dlci1sZXZlbAotICAgICAgICAgICAgICAgICAgICAgIG9mIHRoZSBmaWxlc3lzdGVtIHRlcm1pbmZvIGRhdGFiYXNlCisgIExpYnJhcnkgaW1wcm92ZW1lbnRzCiAKLSAgICAgICAgICAgICAgLS1lbmFibGUtcmVlbnRyYW50Ci0gICAgICAgICAgICAgICAgICAgICAgYnVpbGRzICBhICBkaWZmZXJlbnQgIGZsYXZvciBvZiB0aGUgbmN1cnNlcyBsaWJyYXJ5Ci0gICAgICAgICAgICAgICAgICAgICAgKG5jdXJzZXN0KSAgd2hpY2ggIGltcHJvdmVzICByZWVudHJhbnQgIHVzZSAgb2YgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgbGlicmFyeSAgYnkgIHJlZHVjaW5nICBnbG9iYWwgIGFuZCBzdGF0aWMgdmFyaWFibGVzCi0gICAgICAgICAgICAgICAgICAgICAgKHNlZSAgdGhlICAiLS13aXRoLXB0aHJlYWQiIG9wdGlvbiBmb3IgdGhlIHRocmVhZGVkCi0gICAgICAgICAgICAgICAgICAgICAgc3VwcG9ydCkuCisgIE91dHB1dCBidWZmZXJpbmcKIAotICAgICAgICAgICAgICAtLWVuYWJsZS13ZWFrLXN5bWJvbHMKLSAgICAgICAgICAgICAgICAgICAgICB1c2UgIHdlYWstc3ltYm9scyAgZm9yICBsaW5raW5nIHRvIHRoZSBQT1NJWCB0aHJlYWQKLSAgICAgICAgICAgICAgICAgICAgICBsaWJyYXJ5LCAgYW5kICB1c2UgIHRoZSBzYW1lIHNvbmFtZSBmb3IgdGhlIG5jdXJzZXMKLSAgICAgICAgICAgICAgICAgICAgICBzaGFyZWQgIGxpYnJhcnkgIGFzIHRoZSBub3JtYWwgbGlicmFyeSAoY2F2ZWF0OiB0aGUKLSAgICAgICAgICAgICAgICAgICAgICBBQkkgaXMgZm9yIHRoZSB0aHJlYWRlZCBsaWJyYXJ5LCB3aGljaCBtYWtlcyBnbG9iYWwKLSAgICAgICAgICAgICAgICAgICAgICBkYXRhIGFjY2Vzc2VkIHZpYSBmdW5jdGlvbnMpLgorICAgWC9PcGVuIGN1cnNlcyBwcm92aWRlcyBtb3JlIHRoYW4gb25lIGluaXRpYWxpemF0aW9uIGZ1bmN0aW9uOgorICAgICAqIFsxN11pbml0c2NyICh0aGUgc2ltcGxlc3QpIGFjY2VwdHMgbm8gcGFyYW1ldGVycy4KKyAgICAgKiBbMThdbmV3dGVybSBhY2NlcHRzIHBhcmFtZXRlcnMgZm9yIHRoZSBzdHJlYW0gaW5wdXQgYW5kIG91dHB1dAorICAgICAqIFsxOV1zZXR1cHRlcm0gKHRoZSBsb3ctbGV2ZWwgZnVuY3Rpb24pIGFjY2VwdHMgYSBwYXJhbWV0ZXIgZm9yIHRoZQorICAgICAgIGZpbGUgZGVzY3JpcHRvciBvZiB0aGUgb3V0cHV0LgogCi0gICAgICAgICAgICAgIC0td2l0aC1wdGhyZWFkCi0gICAgICAgICAgICAgICAgICAgICAgYnVpbGQgIHdpdGggIHRoZSAgUE9TSVggdGhyZWFkIGxpYnJhcnkgKHRlc3RlZCB3aXRoCi0gICAgICAgICAgICAgICAgICAgICAgQUlYLCAgIExpbnV4LCAgIEZyZWVCU0QsICAgT3BlbkJTRCwgIEhQVVgsICBJUklYNjQsCi0gICAgICAgICAgICAgICAgICAgICAgU29sYXJpcywgVHJ1NjQpLgorICAgVGhleSBhcmUgZG9jdW1lbnRlZCBpbiBYL09wZW4gYXMgaWYgaW5pdHNjciBjYWxscyBuZXd0ZXJtIHVzaW5nIHN0ZG91dAorICAgZm9yICAgb3V0cHV0ICBzdHJlYW0sICBhbmQgIGluICB0dXJuICBuZXd0ZXJtICBjYWxscyAgc2V0dXB0ZXJtICB1c2luZworICAgZmlsZW5vKHN0ZG91dCkgIGZvciAgdGhlIGZpbGUgZGVzY3JpcHRvci4gQXMgbG9uZyBhcyBhbiBpbXBsZW1lbnRhdGlvbgorICAgYWN0cyAgYXMgaWYgaXQgZG9lcyB0aGlzLCBpdCBjb25mb3Jtcy4gSW4gcHJhY3RpY2UsIGltcGxlbWVudGF0aW9ucyBkbworICAgd2hhdCAgaXMgIGltcGxpZWQuICBUaGlzICBjcmVhdGVzICBhICBwcm9ibGVtOiB0aGUgbG93LWxldmVsIHNldHVwdGVybQorICAgZnVuY3Rpb24ncyAgZmlsZSAgZGVzY3JpcHRvciAgaXMgIHVuYnVmZmVyZWQsICB3aGlsZSAgbmV3dGVybSAgaW1wbGllcworICAgYnVmZmVyZWQgIG91dHB1dC4gIFgvT3BlbiAgQ3Vyc2VzIHNheXMgdGhhdCBhbGwgb3V0cHV0IGlzIGRvbmUgdGhyb3VnaAorICAgdGhlICBmaWxlICBkZXNjcmlwdG9yLCAgYW5kICBkb2VzICBub3QgIHNheSAgaG93ICB0aGUgb3V0cHV0IHN0cmVhbSBpcworICAgYWN0dWFsbHkgdXNlZC4KIAotICAgICAgICAgICAgICAtLXdpdGgtdGljbGliCi0gICAgICAgICAgICAgICAgICAgICAgYnVpbGQvaW5zdGFsbCAgIHRoZSAgIHRpYy1zdXBwb3J0ICBmdW5jdGlvbnMgIGluICBhCi0gICAgICAgICAgICAgICAgICAgICAgc2VwYXJhdGUgbGlicmFyeQorICAgSW5pdGlhbGx5LCAgbmN1cnNlcyB1c2VkIHRoZSBmaWxlIGRlc2NyaXB0b3IgKG9idGFpbmVkIGZyb20gdGhlIG91dHB1dAorICAgc3RyZWFtICBwYXNzZWQgdG8gbmV3dGVybSkgZm9yIGNoYW5naW5nIHRoZSB0ZXJtaW5hbCBtb2RlcywgYW5kIHJlbGllZAorICAgdXBvbiAgdGhlICBvdXRwdXQgIHBhcmFtZXRlciBvZiBuZXd0ZXJtIGZvciBidWZmZXJlZCBvdXRwdXQuIExhdGVyICh0bworICAgYXZvaWQgIHVzaW5nICB1bnNhZmUgIGJ1ZmZlcmVkICBJL08gIGluICBzaWduYWwgaGFuZGxlcnMpLCBuY3Vyc2VzIHdhcworICAgbW9kaWZpZWQgIHRvIHVzZSB0aGUgZmlsZSBkZXNjcmlwdG9yICh1bmJ1ZmZlcmVkIG91dHB1dCkgd2hlbiBjbGVhbmluZworICAgdXAgIG9uIHJlY2VpcHQgb2YgYSBzaWduYWwuIE90aGVyd2lzZSAod2hlbiBub3QgaGFuZGxpbmcgYSBzaWduYWwpLCBpdAorICAgY29udGludWVkIHRvIHVzZSB0aGUgYnVmZmVyZWQgb3V0cHV0LgogCi0gICAgICAgICAgKyBpbXByb3ZlZCBvcHRpb25zOgorICAgVGhhdCAgYXBwcm9hY2ggIHdvcmtlZCByZWFzb25hYmx5IHdlbGwgYW5kIGFzIGEgc2lkZSBlZmZlY3QsIHVzaW5nIHRoZQorICAgc2FtZSBidWZmZXJlZCBvdXRwdXQgYXMgYW4gYXBwbGljYXRpb24gbWlnaHQgdXNlIGZvciBwcmludGYgbWVhbnQgdGhhdAorICAgbm8gICBmbHVzaGluZyAgIHdhcyAgIG5lZWRlZCAgIHdoZW4gICBzd2l0Y2hpbmcgIGJldHdlZW4gIG5vcm1hbC0gIGFuZAorICAgc2NyZWVuLW1vZGVzLgogCi0gICAgICAgICAgICAgIC0tZW5hYmxlLWV4dC1jb2xvcnMKLSAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlcyB0aGUgd2lkZS1jaGFyYWN0ZXIgY29uZmlndXJhdGlvbi4KKyAgIFRoZXJlIHdlcmUgYSBjb3VwbGUgb2YgcHJvYmxlbXM6CisgICAgICogdG8gZ2V0IGdvb2QgcGVyZm9ybWFuY2UsIGN1cnNlcyAobm90IG9ubHkgbmN1cnNlcywgYnV0IFNWcjQgY3Vyc2VzCisgICAgICAgaW4gZ2VuZXJhbCkgc2V0IGFuIG91dHB1dCBidWZmZXIgdXNpbmcgc2V0YnVmIG9yIHNpbWlsYXIgZnVuY3Rpb24uCisgICAgICAgVGhlcmUgIGlzIG5vIHN0YW5kYXJkIChvciBwb3J0YWJsZSkgd2F5IHRvIHR1cm4gdGhhdCBvdXRwdXQgYnVmZmVyCisgICAgICAgb2ZmLCAgYW5kICByZXZlcnQgIHRvICBsaW5lLWJ1ZmZlcmluZy4gIFRoZSAgWzIwXU5DVVJTRVNfTk9fU0VUQlVGCisgICAgICAgZW52aXJvbm1lbnQgdmFyaWFibGUgZGlkIG1ha2UgaXQgb3B0aW9uYWwuCisgICAgICogdG8gIGhhbmRsZSBTSUdUU1RQICh0aGUgInN0b3AiIHNpZ25hbCksIG5jdXJzZXMgcmVsaWVkIHVwb24gdW5zYWZlCisgICAgICAgZnVuY3Rpb25zLiAgVGhhdCAgaXMsICBkdWUgIHRvICB0aGUgIGNvbXBsZXhpdHkgb2YgdGhlIGZlYXR1cmUsIGl0CisgICAgICAgcmVsaWVkICB1cG9uIHJldXNpbmcgZXhpc3RpbmcgZnVuY3Rpb25zIHdoaWNoIHNob3VsZCBub3QgaGF2ZSBiZWVuCisgICAgICAgY2FsbGVkIHZpYSB0aGUgc2lnbmFsIGhhbmRsZXIuCiAKLSAgICAgICAgICAgICAgLS13aXRoLWNodHlwZQotICAgICAgICAgICAgICAgICAgICAgIGlnbm9yZSAgb3B0aW9uICB2YWx1ZSAidW5zaWduZWQiIGlzIGFsd2F5cyBhZGRlZCB0bwotICAgICAgICAgICAgICAgICAgICAgIHRoZSAgIHR5cGUgICBpbiAgIGN1cnNlcy5oOyAgIGRvICAgdGhlICAgc2FtZSAgIGZvcgotICAgICAgICAgICAgICAgICAgICAgIC0td2l0aC1tbWFzay10LgorICAgQ29udmVuaWVudGx5LCBzb2x2aW5nIHRoZSBzZWNvbmQgcHJvYmxlbSAoYnkgbWFraW5nIG5jdXJzZXMgZG8gaXRzIG93bgorICAgb3V0cHV0ICBidWZmZXJpbmcpICBhbHNvICBmaXhlZCAgdGhlIGZpcnN0IG9uZS4gQnV0IHRoZXJlIHdlcmUgc3BlY2lhbAorICAgY2FzZXMgdG8gcmVzb2x2ZTogWzIxXWxvdy1sZXZlbCBmdW5jdGlvbnMgc3VjaCBhcyBtdmN1ciwgcHV0cCwgdmlkYXR0cgorICAgZXhwbGljaXRseSAgdXNlICB0aGUgIHN0YW5kYXJkICBvdXRwdXQuICBUaG9zZSAgZnVuY3Rpb25zICB3ZXJlIHJldXNlZAorICAgaW50ZXJuYWxseSwgYW5kIHJlcXVpcmVkIG1vZGlmaWNhdGlvbiB0byBkaXN0aW5ndWlzaCB3aGV0aGVyIHRoZXkgd2VyZQorICAgdXNlZCBieSB0aGUgaGlnaC1sZXZlbCBvciBsb3ctbGV2ZWwgaW50ZXJmYWNlcy4KIAotICAgICAgICAgICAgICAtLXdpdGgtZG1hbGxvYwotICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkLWZpeCBmb3IgcmVkZWZpbml0aW9uIG9mIHN0cm5kdXAuCisgICBGaW5hbGx5LCB0aGVyZSBtYXkgc3RpbGwgYmUgYSBmZXcgcHJvZ3JhbXMgd2hpY2ggc2hvdWxkIGJlIG1vZGlmaWVkIHRvCisgICBpbXByb3ZlIHRoZWlyIHBvcnRhYmlsaXR5LCBlLmcuLCBhZGRpbmcgYW4KIAotICAgICAgICAgICAgICAtLXdpdGgtaGFzaGVkLWRiCi0gICAgICAgICAgICAgICAgICAgICAgYWNjZXB0cyAgYSBwYXJhbWV0ZXIgd2hpY2ggaXMgdGhlIGluc3RhbGwtcHJlZml4IG9mCi0gICAgICAgICAgICAgICAgICAgICAgYSBnaXZlbiBCZXJrZWxleSBEYXRhYmFzZS4KK2ZmbHVzaChzdGRvdXQpOwogCi0gICAgICAgICAgICAgIC0td2l0aC1oYXNoZWQtZGIKLSAgICAgICAgICAgICAgICAgICAgICB0aGUgJExJQlMgZW52aXJvbm1lbnQgdmFyaWFibGUgb3ZlcnJpZGVzIHRoZSBzZWFyY2gKLSAgICAgICAgICAgICAgICAgICAgICBmb3IgdGhlIGRiIGxpYnJhcnkuCisgICB3aGVuICBzd2l0Y2hpbmcgIGZyb20gIlsyMl1zaGVsbCIgbW9kZSB0byAiWzIzXXByb2dyYW0iIChjdXJzZXMpIG1vZGUuCisgICBUaG9zZSBhcmUgZmFpcmx5IHJhcmUgYmVjYXVzZSBtb3N0IHByb2dyYW1tZXJzIGhhdmUgbGVhcm5lZCBub3QgdG8gbWl4CisgICBwcmludGYgYW5kIFsyNF1wcmludHcuCiAKLSAgICAgICAgICAgICAgLS13aXRob3V0LWhhc2hlZC1kYgotICAgICAgICAgICAgICAgICAgICAgIGFzc3VtZWQgd2hlbiAiLS1kaXNhYmxlLWRhdGFiYXNlIiBpcyB1c2VkLgorICBTeW1ib2wgdmVyc2lvbmluZwogCi0gICAgICogb3RoZXIgY29uZmlndXJlL2J1aWxkIGlzc3VlczoKLSAgICAgICAgICArIGJ1aWxkLWZpeGVzIGZvciBMeW54T1MKLSAgICAgICAgICArIG1vZGlmeSAgc2hhcmVkLWxpYnJhcnkgIHJ1bGVzICB0byAgYWxsb3cgIEZyZWVCU0QgIDMueCB0byB1c2UKLSAgICAgICAgICAgIHJwYXRoLgotICAgICAgICAgICsgYnVpbGQtZml4IGZvciBGcmVlQlNEICJjb250ZW1wb3JhcnkiIFRUWSBpbnRlcmZhY2UuCi0gICAgICAgICAgKyBidWlsZC1maXhlcyBmb3IgQUlYIHdpdGggbGlidG9vbC4KLSAgICAgICAgICArIGJ1aWxkLWZpeGVzIGZvciBEYXJ3aW4gYW5kIGxpYnRvb2wuCi0gICAgICAgICAgKyBtb2RpZnkgQmVPUy1zcGVjaWZpYyBpZmRlZidzIHRvIGJ1aWxkIG9uIEhhaWt1LgotICAgICAgICAgICsgY29ycmVjdGVkICBnY2MgIG9wdGlvbnMgIGZvciAgYnVpbGRpbmcgIHNoYXJlZCAgbGlicmFyaWVzICBvbgotICAgICAgICAgICAgU29sYXJpcyBhbmQgSVJJWDY0LgotICAgICAgICAgICsgY2hhbmdlICBzaGFyZWQtbGlicmFyeSAgY29uZmlndXJhdGlvbiBmb3IgT3BlbkJTRCwgbWFrZSBycGF0aAotICAgICAgICAgICAgd29yay4KLSAgICAgICAgICArIGJ1aWxkLWZpeGVzIGZvciB1c2luZyBsaWJ1dGY4LCBlLmcuLCBvbiBPcGVuQlNEIDMuNwotICAgICAgICAgICsgYWRkICAgIi1lIiAgb3B0aW9uICBpbiAgbmN1cnNlcy9NYWtlZmlsZS5pbiAgd2hlbiAgZ2VuZXJhdGluZwotICAgICAgICAgICAgc291cmNlLWZpbGVzICB0byAgZm9yY2UgZWFybGllciBleGl0IGlmIHRoZSBidWlsZCBlbnZpcm9ubWVudAotICAgICAgICAgICAgZmFpbHMgdW5leHBlY3RlZGx5LgotICAgICAgICAgICsgYWRkIHN1cHBvcnQgZm9yIHNoYXJlZCBsaWJyYXJpZXMgZm9yIFFOWC4KLSAgICAgICAgICArIGNoYW5nZSAgZGVsaW1pdGVyICBpbiAgTUtsaWJfZ2VuLnNoIGZyb20gJyUnIHRvICdAJywgdG8gYXZvaWQKLSAgICAgICAgICAgIHN1YnN0aXR1dGlvbiAgYnkgIElCTSB4bGMgdG8gJyMnIGFzIHBhcnQgb2YgaXRzIGV4dGVuc2lvbnMgdG8KLSAgICAgICAgICAgIGRpZ3JhcGhzLgotICAgICAqIGxpYnJhcnk6Ci0gICAgICAgICAgKyByZXdyaXRlICB3cmFwcGVyICBmb3IgIHdjcnRvbWIoKSwgIG1ha2luZyBpdCB3b3JrIG9uIFNvbGFyaXMuCi0gICAgICAgICAgICBUaGlzICBpcyAgdXNlZCBpbiB0aGUgZm9ybSBsaWJyYXJ5IHRvIGRldGVybWluZSB0aGUgbGVuZ3RoIG9mCi0gICAgICAgICAgICB0aGUgYnVmZmVyIG5lZWRlZCBieSBmaWVsZF9idWZmZXIuCi0gICAgICAgICAgKyBhZGQvdXNlICBjb25maWd1cmUgIHNjcmlwdCAgbWFjcm8gIENGX1NJR19BVE9NSUNfVCwgIHVzZSAgdGhlCi0gICAgICAgICAgICBjb3JyZXNwb25kaW5nIHR5cGUgZm9yIGRhdGEgbWFuaXB1bGF0ZWQgYnkgc2lnbmFsIGhhbmRsZXJzLgotICAgICAgICAgICsgc2V0IGxvY2FsZSBpbiBtaXNjL25jdXJzZXMtY29uZmlnLmluIHNpbmNlIGl0IHVzZXMgYSByYW5nZQotICAgICAgICAgICsgZGlzYWJsZSAgR1BNICBtb3VzZSAgc3VwcG9ydCAgd2hlbiAgJFRFUk0gIGRvZXMgbm90IGhhcHBlbiB0bwotICAgICAgICAgICAgY29udGFpbiAgImxpbnV4IiwgIHNpbmNlICBHcG1fT3BlbigpICBubyAgbG9uZ2VyICBsaW1pdHMgIGl0cwotICAgICAgICAgICAgYXNzZXJ0aW9uICB0byAgdGVybWluYWxzICB0aGF0ICBpdCBtaWdodCBoYW5kbGUsIGUuZy4sIHdpdGhpbgotICAgICAgICAgICAgInNjcmVlbiIgaW4geHRlcm0uCi0gICAgICAgICAgKyByZXNldCBtb3VzZSBmaWxlLWRlc2NyaXB0b3Igd2hlbiB1bmxvYWRpbmcgR1BNIGxpYnJhcnkuCi0gICAgICogdGVzdCBwcm9ncmFtczoKLSAgICAgICAgICArIHVwZGF0ZSAgdGVzdCAgcHJvZ3JhbXMgdG8gYnVpbGQvd29yayB3aXRoIHZhcmlvdXMgVU5JWCBjdXJzZXMKLSAgICAgICAgICAgIGZvciBjb21wYXJpc29ucy4KKyAgIFRoaXMgIHJlbGVhc2UgIGludHJvZHVjZXMgc3ltYm9sLXZlcnNpb25pbmcgdG8gbmN1cnNlcyBiZWNhdXNlIHdpdGhvdXQKKyAgIGl0LCAgdGhlICBjaGFuZ2Ugb2YgQUJJIHdvdWxkIGJlIGxlc3Mgc3VjY2Vzc2Z1bC4gQSBsZW5ndGh5IGRpc2N1c3Npb24KKyAgIHdpbGwgIGJlICBwcmVzZW50ZWQgIGluICBbMjVdU3ltYm9sIHZlcnNpb25pbmcgaW4gbmN1cnNlcy4gVGhlc2Ugbm90ZXMKKyAgIHN1bW1hcml6ZSB3aGF0IGhhcyBjaGFuZ2VkLCBhbmQgd2hhdCBjYW4gYmUgZG9uZSB3aXRoIHRoZSBuZXcgcmVsZWFzZS4KIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmVhdHVyZXMgb2YgTmN1cnNlcworICAgU3ltYm9sLXZlcnNpb25pbmcgIGFsbG93cyAgdGhlICBkZXZlbG9wZXJzICBvZiAgYSBsaWJyYXJ5IHRvIG1hcmsgZWFjaAorICAgcHVibGljICBzeW1ib2wgIChib3RoICBkYXRhIGFuZCBmdW5jdGlvbnMpIHdpdGggYW4gaWRlbnRpZmllciBkZW5vdGluZworICAgdGhlICBsaWJyYXJ5ICBuYW1lICBhbmQgIHRoZSAgdmVyc2lvbiBmb3Igd2hpY2ggaXQgd2FzIGJ1aWx0LiBCeSBkb2luZworICAgdGhpcywgdXNlcnMgb2YgdGhlIGxpYnJhcnkgaGF2ZSBhIHdheSB0byBoZWxwIGVuc3VyZSB0aGF0IGFwcGxpY2F0aW9ucworICAgZG8gbm90IGFjY2lkZW50YWxseSBsb2FkIGFuIGluY29tcGF0aWJsZSBsaWJyYXJ5LiBJbiBhZGRpdGlvbiwgcHJpdmF0ZQorICAgc3ltYm9scyBjYW4gYmUgaGlkZGVuIGVudGlyZWx5LgogCi0gICBUaGUgbmN1cnNlcyBwYWNrYWdlIGlzIGZ1bGx5IGNvbXBhdGlibGUgd2l0aCBTVnI0IChTeXN0ZW0gViBSZWxlYXNlIDQpCi0gICBjdXJzZXM6Ci0gICAgICogQWxsICAyNTcgIG9mICB0aGUgIFNWcjQgIGNhbGxzICBoYXZlICBiZWVuICBpbXBsZW1lbnRlZCAgKGFuZCAgYXJlCi0gICAgICAgZG9jdW1lbnRlZCkuCi0gICAgICogRnVsbCAgc3VwcG9ydCBmb3IgU1ZyNCBjdXJzZXMgZmVhdHVyZXMgaW5jbHVkaW5nIGtleWJvYXJkIG1hcHBpbmcsCi0gICAgICAgY29sb3IsICAgZm9ybXMtZHJhd2luZyAgIHdpdGggICBBQ1MgICBjaGFyYWN0ZXJzLCAgIGFuZCAgYXV0b21hdGljCi0gICAgICAgcmVjb2duaXRpb24gb2Yga2V5cGFkIGFuZCBmdW5jdGlvbiBrZXlzLgotICAgICAqIEFuICBlbXVsYXRpb24gIG9mICB0aGUgIFNWcjQgcGFuZWxzIGxpYnJhcnksIHN1cHBvcnRpbmcgYSBzdGFjayBvZgotICAgICAgIHdpbmRvd3Mgd2l0aCBiYWNraW5nIHN0b3JlLCBpcyBpbmNsdWRlZC4KLSAgICAgKiBBbiAgZW11bGF0aW9uICBvZiB0aGUgU1ZyNCBtZW51cyBsaWJyYXJ5LCBzdXBwb3J0aW5nIGEgdW5pZm9ybSBidXQKLSAgICAgICBmbGV4aWJsZSBpbnRlcmZhY2UgZm9yIG1lbnUgcHJvZ3JhbW1pbmcsIGlzIGluY2x1ZGVkLgotICAgICAqIEFuICBlbXVsYXRpb24gb2YgdGhlIFNWcjQgZm9ybSBsaWJyYXJ5LCBzdXBwb3J0aW5nIGRhdGEgY29sbGVjdGlvbgotICAgICAgIHRocm91Z2ggb24tc2NyZWVuIGZvcm1zLCBpcyBpbmNsdWRlZC4KLSAgICAgKiBCaW5hcnkgICB0ZXJtaW5mbyAgIGVudHJpZXMgICBnZW5lcmF0ZWQgICBieSAgdGhlICBuY3Vyc2VzICB0aWMoMSkKLSAgICAgICBpbXBsZW1lbnRhdGlvbiAgYXJlICBiaXQtZm9yLWJpdC1jb21wYXRpYmxlICB3aXRoIHRoZSBlbnRyeSBmb3JtYXQKLSAgICAgICBTVnI0IGN1cnNlcyB1c2VzLgotICAgICAqIFRoZSB1dGlsaXRpZXMgaGF2ZSBvcHRpb25zIHRvIGFsbG93IHlvdSB0byBmaWx0ZXIgdGVybWluZm8gZW50cmllcwotICAgICAgIGZvciAgdXNlICB3aXRoICBsZXNzICBjYXBhYmxlIGN1cnNlcy90ZXJtaW5mbyB2ZXJzaW9ucyBzdWNoIGFzIHRoZQotICAgICAgIEhQL1VYIGFuZCBBSVggcG9ydHMuCisgICBUaGlzICAgcmVsZWFzZSAgIHByb3ZpZGVzICAgc2FtcGxlICAgZmlsZXMgICBmb3IgIHRoZSAgZm91ciAgcHJpbmNpcGFsCisgICBjb25maWd1cmF0aW9ucyAgb2YgIG5jdXJzZXMgbGlicmFyaWVzOiBuY3Vyc2VzLCBuY3Vyc2VzdywgbmN1cnNlc3QgYW5kCisgICBuY3Vyc2VzdHcuIEVhY2ggc2FtcGxlIGlzIGdpdmVuIGluIHR3byBmb3JtczoKKworICAgIi5tYXAiCisgICAgICAgICAgVGhlc2UgbGlzdCBhbGwgcHVibGljIHN5bWJvbHMsIHRvZ2V0aGVyIHdpdGggdmVyc2lvbiBuYW1lcy4KKworICAgIi5zeW0iCisgICAgICAgICAgVGhlc2UgbGlzdCBhbGwgcHVibGljIHN5bWJvbHMsIHdpdGhvdXQgdmVyc2lvbiBuYW1lcy4KKworICAgVGhlICBzYW1wbGUgIGZpbGVzICBhcmUgZ2VuZXJhdGVkIGJ5IHNjcmlwdHMgd2hpY2ggdGFrZSBpbnRvIGFjY291bnQgYQorICAgZmV3IHNwZWNpYWwgY2FzZXMgc3VjaCBhcyBbMjZddGFjayB0byBvbWl0IG1hbnkgb2YgdGhlIG5jdXJzZXMgcHJpdmF0ZQorICAgc3ltYm9scyAgKGJlZ2lubmluZyB3aXRoICJfbmNfIikuIEhlcmUgYXJlIGNvdW50cyBvZiBnbG9iYWxzIHZlcnN1cworICAgbG9jYWxzOgorCisgICAgICBDb25maWcgICBTeW1ib2xzIEdsb2JhbHMgTG9jYWxzICJfbmNfIgorICAgICBuY3Vyc2VzICAgICAgIDk3NiAgICAgNzk2ICAgIDE4MCAgICAzMzIKKyAgICAgbmN1cnNlc3cgICAgIDEwODkgICAgIDkwNSAgICAxODQgICAgMzQzCisgICAgIG5jdXJzZXN0ICAgICAgOTc5ICAgICA4MDQgICAgMTc1ICAgIDM1OAorICAgICBuY3Vyc2VzdHcgICAgMTA5OCAgICAgOTE0ICAgIDE4NCAgICAzNzIKKworICAgQWx0aG91Z2ggb25seSBmb3VyIHNhbXBsZSBjb25maWd1cmF0aW9ucyBhcmUgcHJlc2VudGVkLCBlYWNoIGlzIGZvcm1lZAorICAgYnkgIG1lcmdpbmcgIHN5bWJvbHMgIGZyb20gIHNldmVyYWwgIGNvbWJpbmF0aW9ucyAgb2YgY29uZmlndXJlLXNjcmlwdAorICAgb3B0aW9ucywgdGFraW5nIGludG8gYWNjb3VudCBhZHZpY2UgZnJvbSBkb3duc3RyZWFtIHBhY2thZ2Vycy4gQmVjYXVzZQorICAgdGhleSAgYXJlICBmb3JtZWQgYnkgbWVyZ2luZywgdGhlIHNhbXBsZSBmaWxlcyBtYXkgbGlzdCBhIHN5bWJvbCB3aGljaAorICAgaXMgIG5vdCAgaW4gIGEgIGdpdmVuIHBhY2thZ2UuIFRoYXQgaXMgZXhwZWN0ZWQuIFRoZSBzYW1wbGVzIGhhdmUgYmVlbgorICAgdGVzdGVkICBhbmQgIGFyZSAgd29ya2luZyAgd2l0aCAgc3lzdGVtcyAgKHN1Y2ggYXMgRmVkb3JhLCBGcmVlQlNEIGFuZAorICAgRGViaWFuKSAgd2hpY2ggIGZ1bGx5ICBzdXBwb3J0ICB0aGlzICBmZWF0dXJlLiBUaGVyZSBhcmUgb3RoZXIgc3lzdGVtcworICAgd2hpY2ggIGRvICBub3QgIHN1cHBvcnQgdGhlIGZlYXR1cmUsIGFuZCBhIGZldyAoc3VjaCBhcyBTb2xhcmlzKSB3aGljaAorICAgcHJvdmlkZSBpbmNvbXBsZXRlIHN1cHBvcnQuCisKKyAgIFRoZSAgdmVyc2lvbi1uYW1pbmcgY29udmVudGlvbiB1c2VkIGFsbG93cyB0aGVzZSBzYW1wbGUgZmlsZXMgdG8gYnVpbGQKKyAgIGRpc3RpbmN0IGxpYnJhcmllcyBmb3IgQUJJIDUgYW5kIDYuIFZlcnNpb24gbmFtZXMgY29uc2lzdCBvZgorICAgICAqIGNvbmZpZ3VyYXRpb24gICBuYW1lLCAgZS5nLiwgICJOQ1VSU0VTVyIgIGZvciAgdGhlICB3aWRlLWNoYXJhY3RlcgorICAgICAgIGxpYnJhcmllcworICAgICAqIEFCSSB2ZXJzaW9uIChpZiBub3QgNSkKKyAgICAgKiBsaWJyYXJ5ICBuYW1lICBmb3IgdHdvIHNwZWNpYWwgY2FzZXMgd2hpY2ggaGF2ZSB0aGUgc2FtZSBpbnRlcmZhY2UKKyAgICAgICBhY3Jvc3MgY29uZmlndXJhdGlvbnM6ICJUSU5GTyIgYW5kICJUSUMiCisgICAgICogcmVsZWFzZSB2ZXJzaW9uCisgICAgICogcGF0Y2ggZGF0ZSAoZm9yIHRoZSByZWxlYXNlIHZlcnNpb24pCisKKyAgIEZvciAgZXhhbXBsZSwgIHJ1bm5pbmcgIG5tICAtRCAgb24gIHRoZSBsaWJyYXJpZXMgaW4gdGhlIG5jdXJzZXM2IHRlc3QKKyAgIHBhY2thZ2Ugc2hvd3MgdGhlc2Ugc3ltYm9sLXZlcnNpb25zOgorCiswMDAwMDAwMDAwMDAwMDAwIEEgTkNVUlNFUzZfVElDXzUuMC4xOTk5MTAyMworMDAwMDAwMDAwMDAwMDAwMCBBIE5DVVJTRVM2X1RJQ181LjEuMjAwMDA3MDgKKzAwMDAwMDAwMDAwMDAwMDAgQSBOQ1VSU0VTNl9USUNfNS41LjIwMDUxMDEwCiswMDAwMDAwMDAwMDAwMDAwIEEgTkNVUlNFUzZfVElDXzUuNy4yMDA4MTEwMgorMDAwMDAwMDAwMDAwMDAwMCBBIE5DVVJTRVM2X1RJQ181LjkuMjAxNTA1MzAKKzAwMDAwMDAwMDAwMDAwMDAgQSBOQ1VSU0VTNl9USU5GT181LjAuMTk5OTEwMjMKKzAwMDAwMDAwMDAwMDAwMDAgQSBOQ1VSU0VTNl9USU5GT181LjEuMjAwMDA3MDgKKzAwMDAwMDAwMDAwMDAwMDAgQSBOQ1VSU0VTNl9USU5GT181LjIuMjAwMDEwMjEKKzAwMDAwMDAwMDAwMDAwMDAgQSBOQ1VSU0VTNl9USU5GT181LjMuMjAwMjEwMTkKKzAwMDAwMDAwMDAwMDAwMDAgQSBOQ1VSU0VTNl9USU5GT181LjQuMjAwNDAyMDgKKzAwMDAwMDAwMDAwMDAwMDAgQSBOQ1VSU0VTNl9USU5GT181LjUuMjAwNTEwMTAKKzAwMDAwMDAwMDAwMDAwMDAgQSBOQ1VSU0VTNl9USU5GT181LjYuMjAwNjEyMTcKKzAwMDAwMDAwMDAwMDAwMDAgQSBOQ1VSU0VTNl9USU5GT181LjcuMjAwODExMDIKKzAwMDAwMDAwMDAwMDAwMDAgQSBOQ1VSU0VTNl9USU5GT181LjguMjAxMTAyMjYKKzAwMDAwMDAwMDAwMDAwMDAgQSBOQ1VSU0VTNl9USU5GT181LjkuMjAxNTA1MzAKKzAwMDAwMDAwMDAwMDAwMDAgQSBOQ1VSU0VTVzZfNS4xLjIwMDAwNzA4CiswMDAwMDAwMDAwMDAwMDAwIEEgTkNVUlNFU1c2XzUuMy4yMDAyMTAxOQorMDAwMDAwMDAwMDAwMDAwMCBBIE5DVVJTRVNXNl81LjQuMjAwNDAyMDgKKzAwMDAwMDAwMDAwMDAwMDAgQSBOQ1VSU0VTVzZfNS41LjIwMDUxMDEwCiswMDAwMDAwMDAwMDAwMDAwIEEgTkNVUlNFU1c2XzUuNi4yMDA2MTIxNworMDAwMDAwMDAwMDAwMDAwMCBBIE5DVVJTRVNXNl81LjcuMjAwODExMDIKKzAwMDAwMDAwMDAwMDAwMDAgQSBOQ1VSU0VTVzZfNS44LjIwMTEwMjI2CiswMDAwMDAwMDAwMDAwMDAwIEEgTkNVUlNFU1c2XzUuOS4yMDE1MDUzMAorCisgICBBcyAgYSBzcGVjaWFsIGNhc2UsIHRoaXMgcmVsZWFzZSAod2hpY2ggbWFrZXMgdGhlIGZpbmFsIGNoYW5nZSBmb3IgQUJJCisgICA1KSBpcyBtYXJrZWQgd2l0aCByZWxlYXNlIHZlcnNpb24gNS45IGFuZCBwYXRjaCBkYXRlIDIwMTUwNTMwLgorCisgIE1pc2NlbGxhbmVvdXMKKworICAgVGhlIG5ldyByZWxlYXNlIGhhcyBzZXZlcmFsIGltcHJvdmVtZW50cyBmb3IgcGVyZm9ybWFuY2UgYW5kIGJ1aWxkaW5nLgorICAgRm9yIGluc3RhbmNlOgorICAgICAqIHNldmVyYWwgIGZpbGVzICBpbiBuY3Vyc2VzLSBhbmQgcHJvZ3MtZGlyZWN0b3JpZXMgd2VyZSBtb2RpZmllZCB0bworICAgICAgIGFsbG93ICBjb25zdCAgZGF0YSB1c2VkIGluIGludGVybmFsIHRhYmxlcyB0byBiZSBwdXQgYnkgdGhlIGxpbmtlcgorICAgICAgIGludG8gdGhlIHJlYWRvbmx5IHRleHQgc2VnbWVudC4KKyAgICAgKiB2YXJpb3VzIGltcHJvdmVtZW50cyB3ZXJlIG1hZGUgdG8gYnVpbGRpbmcgdGhlIEFkYTk1IGJpbmRpbmcsIGJvdGgKKyAgICAgICBpbiBzaW1wbGlmeWluZyB0aGUgZ2VuZXJhdGVkIGZpbGVzIGFzIHdlbGwgYXMgaW1wcm92aW5nIHRoZSB3YXkgaXQKKyAgICAgICB1c2VzIGduYXRtYWtlCisKKyAgIFRoZXJlIGFyZSBhbHNvIG5ldyBmZWF0dXJlcyBpbiB0aGUgbGlicmFyaWVzOgorICAgICAqIGFkZGVkIFsyN111c2VfdGlvY3RsIGZ1bmN0aW9uCisgICAgICogYWRkZWQgIFsyOF13Z2V0ZGVsYXkgIHRvICByZXRyaWV2ZSAgX2RlbGF5ICBtZW1iZXIgb2YgV0lORE9XIGlmIGl0CisgICAgICAgaGFwcGVucyB0byBiZSBvcGFxdWUsIGUuZy4sIGluIHRoZSBwdGhyZWFkIGNvbmZpZ3VyYXRpb24uCisgICAgICogYWRkZWQgWzI5XUFfSVRBTElDIGV4dGVuc2lvbi4KKyAgICAgKiBhZGRlZCAgZm9ybSAgbGlicmFyeSAgZXh0ZW5zaW9uIFszMF1PX0RZTkFNSUNfSlVTVElGWSBvcHRpb24gd2hpY2gKKyAgICAgICBjYW4gIGJlICB1c2VkIHRvIG92ZXJyaWRlIHRoZSBkaWZmZXJlbnQgdHJlYXRtZW50IG9mIGp1c3RpZmljYXRpb24KKyAgICAgICBmb3Igc3RhdGljIHZlcnN1cyBkeW5hbWljIGZpZWxkcyAuCisgICAgICogcmV3cm90ZSAgWzMxXXB1dHdpbiAgYW5kICBbMzJdZ2V0d2luLCAgbWFraW5nICBhbiBleHRlbmRlZCB2ZXJzaW9uCisgICAgICAgd2hpY2ggIGlzICBjYXBhYmxlIG9mIHJlYWRpbmcgc2NyZWVuLWR1bXBzIGJldHdlZW4gdGhlIHdpZGUvbm9ybWFsCisgICAgICAgbmN1cnNlcyAgY29uZmlndXJhdGlvbnMuICBUaGVzZSBhcmUgdGV4dCBmaWxlcywgZXhjZXB0IGZvciBhIG1hZ2ljCisgICAgICAgY29kZSBhdCB0aGUgYmVnaW5uaW5nOgorCiswICAgICAgIHN0cmluZyAgICAgICAgICBcMjEwXDIxMCAgICAgICAgU2NyZWVuLWR1bXAgKG5jdXJzZXMpCisKKyAgICAgKiBzZXZlcmFsIGNoYW5nZXMgdG8gbW91c2Ugc3VwcG9ydCBpbmNsdWRlOgorICAgICAgICAgICsgYWRkZWQgZGVjb2RlciBmb3IgeHRlcm0gU0dSIDEwMDYgbW91c2UgbW9kZS4KKyAgICAgICAgICArIGFkZGVkIGV4cGVyaW1lbnRhbCBzdXBwb3J0IGZvciAiJXUiIGZvcm1hdCB0byB0ZXJtaW5mby4KKyAgICAgICAgICArIGltcHJvdmVkICBiZWhhdmlvciAgb2YgIHdoZWVsLW1pY2UgZm9yIHh0ZXJtIHByb3RvY29sOiBub3RpbmcKKyAgICAgICAgICAgIHRoYXQgIHRoZXJlICBhcmUgb25seSBidXR0b24tcHJlc3NlcyBmb3IgYnV0dG9ucyAiNCIgYW5kICI1IiwKKyAgICAgICAgICAgIHNvICAgdGhlcmUgIGlzICBubyAgbmVlZCAgdG8gIHdhaXQgIHRvICBjb21iaW5lICBldmVudHMgIGludG8KKyAgICAgICAgICAgIGRvdWJsZS1jbGlja3MgLgorCisgICBUaGVyZSAgIGFyZSAgIGEgICBmZXcgIG5ldyAgY29uZmlndXJlICBvcHRpb25zICBkZWFsaW5nICB3aXRoICBsaWJyYXJ5CisgICBjdXN0b21pemF0aW9uOgorICAgICAqIGFkZCAiLS1lbmFibGUtZXh0LXB1dHdpbiIgY29uZmlndXJlIG9wdGlvbiB0byB0dXJuIG9uIHRoZSBleHRlbmRlZAorICAgICAgIHB1dHdpbi9nZXR3aW4uICBCeSBkZWZhdWx0LCB0aGlzIGlzIGVuYWJsZWQgZm9yIEFCSSA2IGFuZCBkaXNhYmxlZAorICAgICAgIHdpdGggQUJJIDUuCisgICAgICogYWRkICAiLS1lbmFibGUtc3RyaW5nLWhhY2tzIiBvcHRpb24gdG8gY29udHJvbCB3aGV0aGVyIHN0cmxjYXQgYW5kCisgICAgICAgc3RybGNweSAgbWF5ICBiZSAgdXNlZC4gQmVjYXVzZSBuY3Vyc2VzIGFscmVhZHkgZG9lcyB0aGUgcmVxdWlzaXRlCisgICAgICAgYnVmZmVyLWxpbWl0ICBjaGVja3MsICB0aGlzIGZlYXR1cmUgaXMgbWFpbmx5IG9mIGludGVyZXN0IHRvIHF1aWV0CisgICAgICAgY29tcGlsZXItd2FybmluZ3Mgb24gYSBmZXcgc3lzdGVtcy4KKyAgICAgKiBhZGQgIGNvbmZpZ3VyZSAgb3B0aW9uICAiLS13aXRoLXRwYXJtLWFyZyIgIHRvICBhbGxvdyAgWzMzXXRwYXJtJ3MKKyAgICAgICBwYXJhbWV0ZXJzICB0byAgYmUgIHNvbWV0aGluZyBtb3JlIGxpa2VseSB0byBiZSB0aGUgc2FtZSBzaXplIGFzIGEKKyAgICAgICBwb2ludGVyLCBlLmcuLCBpbnRwdHJfdCAoYWdhaW4sIHRoZSBkZWZhdWx0IGlzIHNldCBmb3IgQUJJIDYpLgorCisgIFByb2dyYW0gaW1wcm92ZW1lbnRzCisKKyAgICBVdGlsaXRpZXMKKworICAgTW9zdCBvZiB0aGUgdGVybWNhcC1yZWxhdGVkIGNoYW5nZXMgYmFzZWQgb24gZGV2ZWxvcG1lbnQgb2YgWzM0XXRjdGVzdAorICAgKHRlcm1jYXAgIGxpYnJhcnkgIGNoZWNrZXIpICBhcmUgIGltcGxlbWVudGVkICBpbiAgdGhlIHRpYyBhbmQgaW5mb2NtcAorICAgcHJvZ3JhbXMgICByYXRoZXIgICB0aGFuICBhZmZlY3RpbmcgIHRoZSAgbGlicmFyeS4gIEFzICBub3RlZCAgaW4gIHRoZQorICAgWzM1XWRpc2N1c3Npb24gIG9mICB0Y3Rlc3QsICBuY3Vyc2VzJ3MgIGFiaWxpdHkgIHRvICB0cmFuc2xhdGUgYmV0d2VlbgorICAgdGVybWluZm8gYW5kIHRlcm1jYXAgZm9ybWF0cyBoYXMgYmVlbiBpbXByb3ZlZCBhdCBkaWZmZXJlbnQgdGltZXMsIGJ1dAorICAgc3ViamVjdCAgdG8gIGZlZWRiYWNrIGZyb20gInJlYWwiIHRlcm1jYXAgdXNlcnMuIFRoZXJlIGFyZSB2ZXJ5IGZldyBvZgorICAgdGhvc2UuICBOb3dhZGF5cywgIHZpcnR1YWxseSAgYWxsICB0ZXJtY2FwIHVzZXJzIGFyZSB1c2luZyBuY3Vyc2VzIChvcgorICAgTmV0QlNELCB3aXRoIGl0cyBvd24gdGVybWluZm8gbGlicmFyeSkgYW5kIHRoZWlyIHByb2dyYW1zIGFyZSBhY3R1YWxseQorICAgdXNpbmcgdGVybWluZm8gcmF0aGVyIHRoYW4gdGVybWNhcCBkYXRhLgorCisgICBTdGlsbCwgIHRoZXJlICBhcmUgYSBmZXcuIEEgY29tbWVudCBhYm91dCB0aGUgdHJhbnNsYXRpb24gb2YgdGhlIEFTQ0lJCisgICBOVUwgY2hhcmFjdGVyIHByb21wdGVkIGEgcmV2aWV3OgorICAgICAqIEJvdGggICB0ZXJtaW5mbyAgIGFuZCAgIHRlcm1jYXAgICBzdG9yZSAgIHN0cmluZyAgY2FwYWJpbGl0aWVzICBhcworICAgICAgIE5VTC10ZXJtaW5hdGVkIHN0cmluZ3MuCisgICAgICogSW4gdGVybWluZm8sIGEgXDAgaW4gYSB0ZXJtaW5hbCBkZXNjcmlwdGlvbiBpcyBzdG9yZWQgYXMgXDIwMC4KKyAgICAgKiBUaGVyZSBhcmUgbm8gKGtub3duKSB0ZXJtaW5hbHMgd2hpY2ggd291bGQgYmVoYXZlIGRpZmZlcmVudGx5IHdoZW4KKyAgICAgICBzZW50IFwwIG9yIFwyMDAuCisgICAgICogV2hlbiAgdHJhbnNsYXRpbmcgIHRvICB0ZXJtaW5mbyAgZm9ybWF0IChvciBkaXNwbGF5aW5nIGEgcHJpbnRhYmxlCisgICAgICAgdmVyc2lvbiBvZiBhbiBlbnRyeSB1c2luZyBpbmZvY21wKSwgbmN1cnNlcyBzaG93cyBcMjAwIGFzIFwwLgorICAgICAqIEl0IGhhcyBkb25lIHRoaXMgc2luY2UgMTk5OCAocXVvdGluZyBmcm9tIHRoZSBORVdTIGZpbGUpOgorCitbMzZdOTgwMTAzCisuLi4KKyAgICAgICAgKyBtb2RpZnkgX25jX3RpY19leHBhbmQoKSB0byBnZW5lcmF0ZSBcMCByYXRoZXIgdGhhbiBcMjAwLgorLi4uCisgICAgICAgICsgY29ycmVjdCB0cmFuc2xhdGlvbiBvZiB0ZXJtaW5mbyAiXkAiLCB0byBcMjAwLCBsaWtlIFwwLgorCisgICAgICogSG93ZXZlciwgIHRoZSAgX25jX3RpY19leHBhbmQgIGZ1bmN0aW9uICh3aGljaCBvcHRpb25hbGx5IHByb2R1Y2VzCisgICAgICAgdGVybWluZm8gIG9yIHRlcm1jYXAgZm9ybWF0KSBkaWQgbm90IGFkZHJlc3MgdGhpcyBzcGVjaWFsIGNhc2UgZm9yCisgICAgICAgdGVybWNhcC4gIEV2ZW4gIHRoZSAgbGF0ZXIgIDQuNEJTRCAgWzM3XWNnZXRzdHIgIGludGVycHJldHMgIGEgIFwwCisgICAgICAgbGl0ZXJhbGx5LCAgZW5kaW5nICB0aGF0ICBzdHJpbmcgIChyYXRoZXIgIHRoYW4gdXNpbmcgdGhlIHRlcm1pbmZvCisgICAgICAgaW1wcm92ZW1lbnQpLgorCisgICBBcyAgYSAgcmVzdWx0IG9mIHRoZSByZXZpZXcsIHNldmVyYWwgaW1wcm92ZW1lbnRzIHdlcmUgbWFkZSB0byBuY3Vyc2VzCisgICB0cmFuc2xhdGlvbiB0by9mcm9tIHRlcm1jYXAgZm9ybWF0IC0tIGFuZCBpbXByb3ZpbmcgdGhlIGNoZWNrcyBtYWRlIGluCisgICB0aWMgIGZvciAgY29uc2lzdGVuY3kgIG9mICBlbnRyaWVzLiAgTW9zdCAgb2YgdGhlc2UgYXJlIG5vdCBvZiBnZW5lcmFsCisgICBpbnRlcmVzdCwgZXhjZXB0IGZvciB0d28gbmV3IGNvbW1hbmQtbGluZSBvcHRpb25zIGZvciB0aWMgYW5kIGluZm9jbXA6CisgICAgICogdGhlICAiLTAiICBvcHRpb24gIGdlbmVyYXRlcyAgdGVybWNhcC90ZXJtaW5mbyAgc291cmNlIG9uIGEgc2luZ2xlCisgICAgICAgbGluZS4KKyAgICAgKiB0aGUgICItSyIgIG9wdGlvbiAgcHJvdmlkZXMgc3RyaWN0ZXIgQlNELWNvbXBhdGliaWxpdHkgZm9yIHRlcm1jYXAKKyAgICAgICBvdXRwdXQuCisKKyAgIE90aGVyIHVzZXItdmlzaWJsZSBpbXByb3ZlbWVudHMgYW5kIG5ldyBmZWF0dXJlcyBpbmNsdWRlOgorICAgICAqIGFkZGVkICAiLUQiICBvcHRpb24gIHRvICB0aWMgIGFuZCAgaW5mb2NtcCwgIHRvICBzaG93IHRoZSBkYXRhYmFzZQorICAgICAgIGxvY2F0aW9ucyB0aGF0IGl0IGNvdWxkIHVzZS4KKyAgICAgKiBhZGRlZCAiLXMiIG9wdGlvbiB0byB0b2UsIHRvIHNvcnQgaXRzIG91dHB1dC4KKyAgICAgKiBleHRlbmRlZCAgIi1jIiBhbmQgIi1uIiBvcHRpb25zIG9mIGluZm9jbXAgdG8gYWxsb3cgY29tcGFyaW5nIG1vcmUKKyAgICAgICB0aGFuIHR3byBlbnRyaWVzLgorICAgICAqIG1vZGlmaWVkICB0b2UncyByZXBvcnQgd2hlbiAiLWEiIGFuZCAiLXMiIG9wdGlvbnMgYXJlIGNvbWJpbmVkLCB0bworICAgICAgIGFkZCBhIGNvbHVtbiBzaG93aW5nIHdoaWNoIGVudHJpZXMgYmVsb25nIHRvIGEgZ2l2ZW4gZGF0YWJhc2UuCisgICAgICogbW9kaWZpZWQgIHRoZSBjbGVhciBwcm9ncmFtIHRvIHRha2UgaW50byBhY2NvdW50IHRoZSAiRTMiIGV4dGVuZGVkCisgICAgICAgY2FwYWJpbGl0eSB0byBjbGVhciB0aGUgdGVybWluYWwncyBzY3JvbGxiYWNrIGJ1ZmZlci4KKworICAgIEV4YW1wbGVzCisKKyAgIEFsb25nICB3aXRoICB0aGUgbGlicmFyeSBhbmQgdXRpbGl0aWVzLCBtYW55IGltcHJvdmVtZW50cyB3ZXJlIG1hZGUgdG8KKyAgIHRoZSAgWzM4XW5jdXJzZXMtZXhhbXBsZXMuICBTb21lICB3ZXJlICBtYWRlICB0byAgYWxsb3cgIGJ1aWxkaW5nIChhbmQKKyAgIGNvbXBhcmlzb24tdGVzdGluZykgYWdhaW5zdCBOZXRCU0QgY3Vyc2VzIGFuZCBQREN1cnNlcy4gQm90aCBsYWNrIHNvbWUKKyAgIG9mICB0aGUgIFgvT3BlbiBDdXJzZXMgZmVhdHVyZXMsIG5lY2Vzc2l0YXRpbmcgY3VzdG9taXphdGlvbi4gQnV0IHRoaXMKKyAgIGFjdGl2aXR5ICB3YXMgIHVzZWZ1bCAgYmVjYXVzZSAgaXQgIHNob3dlZCAgc29tZSByZW1haW5pbmcgcGVyZm9ybWFuY2UKKyAgIGlzc3VlcyAod2hpY2ggaGF2ZSBiZWVuIHJlc29sdmVkIGluIHRoaXMgcmVsZWFzZSkuCisKKyAgIFRoZXNlIGNoYW5nZXMgd2VyZSBtYWRlIHRvIHZlcmlmeSBjb21wYXRpYmlsaXR5IG9yIGNvbXBhcmUgcGVyZm9ybWFuY2UKKyAgIG9mIG5jdXJzZXM6CisgICAgICogbWFkZSAgd29ya2Fyb3VuZHMgIGZvciBjb21waWxpbmcgdGVzdC1wcm9ncmFtcyB3aXRoIE5ldEJTRCBjdXJzZXMsCisgICAgICAgdGhvdWdoIGl0IGxhY2tzIHNvbWUgY29tbW9uIGZ1bmN0aW9ucyBzdWNoIGFzIFszOV11c2VfZW52LgorICAgICAqIGFkZGVkIGRvdHNfdGVybWNhcCB0ZXN0LXByb2dyYW0KKyAgICAgKiBhZGRlZCAgZG90c19jdXJzZXMgdGVzdC1wcm9ncmFtLCBmb3IgY29tcGFyaXNvbiB3aXRoIHRoZSBsb3ctbGV2ZWwKKyAgICAgICBleGFtcGxlcy4KKyAgICAgKiBhZGRlZCAgIHRlc3Rfc2V0dXB0ZXJtICB0ZXN0LXByb3JhbSAgdG8gIGRlbW9uc3RyYXRlICBub3JtYWwvZXJyb3IKKyAgICAgICByZXR1cm5zIGZyb20gdGhlIHNldHVwdGVybSBhbmQgcmVzdGFydHRlcm0gZnVuY3Rpb25zLgorICAgICAqIGFkZGVkICAiLWQiLCAgIi1lIiAgYW5kICAiLXEiICBvcHRpb25zICB0byAgdGhlICBkZW1vX3Rlcm1pbmZvIGFuZAorICAgICAgIGRlbW9fdGVybWNhcCB0ZXN0LXByb2dyYW1zLgorICAgICAqIGFkZGVkICAgIi15IiAgIG9wdGlvbiAgIHRvICAgZGVtb190ZXJtY2FwICBhbmQgIHRlc3QvZGVtb190ZXJtaW5mbworICAgICAgIHRlc3QtcHJvZ3JhbXMgICB0byAgIGRlbW9uc3RyYXRlICBiZWhhdmlvciAgd2l0aC93aXRob3V0ICBleHRlbmRlZAorICAgICAgIGNhcGFiaWxpdGllcy4KKyAgICAgKiBtb2RpZmllZCAgZGVtb190ZXJtY2FwICBhbmQgIGRlbW9fdGVybWluZm8gIHRlc3QtcHJvZ3JhbXMgIHRvIG1ha2UKKyAgICAgICB0aGVpciAgb3B0aW9ucyAgbW9yZSAgZGlyZWN0bHkgIGNvbXBhcmFibGUsIGFuZCBhZGQgIi1pIiBvcHRpb24gdG8KKyAgICAgICBzcGVjaWZ5ICBhICB0ZXJtaW5hbCAgZGVzY3JpcHRpb24gIGZpbGVuYW1lICB0byBwYXJzZSBmb3IgbmFtZXMgdG8KKyAgICAgICBsb29rdXAuCisgICAgICogcmV3cm90ZSAgIHRoZSAgdGVzdHMgIGZvciAgWzQwXW12ZGVyd2luICBhbmQgIHRlc3QgIGZvciAgcmVjdXJzaXZlCisgICAgICAgWzQxXW12d2luIGluIHRoZSBtb3Zld2luZG93IHRlc3QtcHJvZ3JhbS4KKworICAgVGhlc2UgY2hhbmdlcyB3ZXJlIG1hZGUgdG8gaGVscCB3aXRoIHRoZSBNaW5HVyBwb3J0OgorICAgICAqIGFkZGVkICAgdGVzdC1zY3JlZW5zICAgdG8gICB0aGUgICBuY3Vyc2VzICAgdGVzdC1wcm9ncmFtICB0byAgc2hvdworICAgICAgIDI1Ni1jaGFyYWN0ZXJzIGF0IGEgdGltZSwgdG8gaGVscCB3aXRoIE1pbkdXIHBvcnQuCisgICAgICogbW9kaWZpZWQgdGhlIHZpZXcgdGVzdC1wcm9ncmFtIHRvIGxvYWQgVVRGLTggd2hlbiBidWlsdCB3aXRoIE1pbkdXCisgICAgICAgYnkgIHVzaW5nICByZWd1bGFyIHdpbjMyIEFQSSBiZWNhdXNlIHRoZSBNaW5HVyBmdW5jdGlvbnMgbWJsZW4gYW5kCisgICAgICAgbWJ0b3djIGRvIG5vdCB3b3JrLgorICAgICAqIGFkZGVkICItcyIgb3B0aW9uIHRvIHRoZSB2aWV3IHRlc3QtcHJvZ3JhbSB0byBhbGxvdyBpdCB0byBzdGFydCBpbgorICAgICAgIHNpbmdsZS1zdGVwIG1vZGUsIHJlZHVjaW5nIHNpemUgb2YgdHJhY2UgZmlsZXMgd2hlbiBpdCBpcyB1c2VkIGZvcgorICAgICAgIGRlYnVnZ2luZyBNaW5HVyBjaGFuZ2VzLgorCisgICBUaGVzZSBjaGFuZ2VzIHdlcmUgbWFkZSB0byB2ZXJpZnkgbmV3IGV4dGVuc2lvbnMgaW4gbmN1cnNlczoKKyAgICAgKiBhZGRlZCAgIFs0Ml1mb3JtX2RyaXZlcl93ICAgZW50cnlwb2ludCAgIHRvICB3aWRlLWNoYXJhY3RlciAgZm9ybXMKKyAgICAgICBsaWJyYXJ5LCBhcyB3ZWxsIGFzIGZvcm1fZHJpdmVyX3cgdGVzdC1wcm9ncmFtLgorICAgICAqIG1vZGlmaWVkICBuY3Vyc2VzICB0ZXN0LXByb2dyYW0ncyAgYi9CIHRlc3RzIHRvIGRpc3BsYXkgbGluZXMgb25seQorICAgICAgIGZvciAgdGhlICBhdHRyaWJ1dGVzIHdoaWNoIGEgZ2l2ZW4gdGVybWluYWwgc3VwcG9ydHMsIHRvIG1ha2Ugcm9vbQorICAgICAgIGZvciBhbiBpdGFsaWNzIHRlc3QuCisgICAgICogbW9kaWZpZWQgIG5jdXJzZXMgIHRlc3QtcHJvZ3JhbSwgIGFkZGluZyAgIi1FIiBhbmQgIi1UIiBvcHRpb25zIHRvCisgICAgICAgZGVtb25zdHJhdGUgdXNlX2VudiB2ZXJzdXMgdXNlX3Rpb2N0bC4KKyAgICAgKiBtb2RpZmllZCBuY3Vyc2VzIHRlc3QtcHJvZ3JhbSdzIGMvQyB0ZXN0cyB0byBjeWNsZSB0aHJvdWdoIHN1YnNldHMKKyAgICAgICBvZiAgIHRoZSAgIHRvdGFsICAgbnVtYmVyICAgb2YgICBjb2xvcnMsICAgdG8gICBiZXR0ZXIgIGlsbHVzdHJhdGUKKyAgICAgICA4LzE2Lzg4LzI1Ni1jb2xvcnMgYnkgcHJvdmlkaW5nIGRpcmVjdGx5IGNvbXBhcmFibGUgc2NyZWVucy4KKyAgICAgKiBtb2RpZmllZCB0aGUgbmN1cnNlcyB0ZXN0LXByb2dyYW0gdG8gYWxzbyBzaG93IHBvc2l0aW9uIHJlcG9ydHMgaW4KKyAgICAgICAnYScgdGVzdC4KKworICAgVGhlc2UgY2hhbmdlcyB3ZXJlIG1hZGUgdG8gbWFrZSB0aGUgZXhhbXBsZXMgbW9yZSB1c2VmdWw6CisgICAgICogYWRkZWQgc2NyaXB0cyBmb3IgYnVpbGRpbmcgZHBrZyBhbmQgcnBtIHRlc3QtcGFja2FnZXMKKyAgICAgKiBtb2RpZmllZCAgdGhlICBoYW5vaSAgdGVzdC1wcm9ncmFtICB0byAgc2hvdyB0aGUgbWluaW11bSBudW1iZXIgb2YKKyAgICAgICBtb3ZlcyBwb3NzaWJsZSBmb3IgdGhlIGdpdmVuIG51bWJlciBvZiB0aWxlcy4KKyAgICAgKiBtb2RpZmllZCAgdGhlICBrbmlnaHQgIHRlc3QtcHJvZ3JhbSAgdG8gc2hvdyB0aGUgbnVtYmVyIG9mIGNob2ljZXMKKyAgICAgICBwb3NzaWJsZSBmb3IgZWFjaCBwb3NpdGlvbiBpbiBhdXRvbW92ZSBvcHRpb24sIGUuZy4sIHRvIGFsbG93IHVzZXIKKyAgICAgICB0byBmb2xsb3cgV2FybnNkb3JmZidzIHJ1bGUgdG8gc29sdmUgdGhlIHB1enpsZS4KKworICBUZXJtaW5hbCBkYXRhYmFzZQorCisgICBUaGlzICByZWxlYXNlICBwcm92aWRlcyAgaW1wcm92ZW1lbnRzICB0byAgdGljJ3MgIi1jIiBjaGVja2luZyBvcHRpb24sCisgICB3aGljaCB3YXMgdXNlZCBmb3IgZXhhbXBsZSB0bworICAgICAqIG1ha2Ugc2dyIGluIHNldmVyYWwgZW50cmllcyBhZ3JlZSB3aXRoIG90aGVyIGNhcHMuCisgICAgICogY29ycmVjdCAgcGFkZGluZyAgaW4gIHNvbWUgIGVudHJpZXMgIHdoZXJlICBlYXJsaWVyICB2ZXJzaW9ucyAgaGFkCisgICAgICAgbWlzY291bnRlZCB0aGUgbnVtYmVyIG9mIG9jdGFsIGRpZ2l0cy4KKworICAgVGhlcmUgYXJlIHNldmVyYWwgbmV3IHRlcm1pbmFsIGRlc2NyaXB0aW9uczoKKyAgICAgKiBbNDNdbWx0ZXJtIGlzIG5vdyBhbGlhc2VkIHRvIG1sdGVybTMKKyAgICAgKiBbNDRdbnN0ZXJtIGlzIG5vdyBkZXJpdmVkIGZyb20gbnN0ZXJtLTI1NmNvbG9yCisgICAgICogWzQ1XXB1dHR5LXNjbworICAgICAqIFs0Nl10ZWtlbiBpcyBGcmVlQlNEJ3MgInh0ZXJtIiBjb25zb2xlLgorICAgICAqIFs0N110ZXJtaW5hdG9yCisgICAgICogWzQ4XXRlcm1pbm9sb2d5CisgICAgICogWzQ5XXRtdXggaXMgZGVyaXZlZCBmcm9tIHNjcmVlbi4KKyAgICAgKiBzZXZlcmFsICBzY3JlZW4uWFhYICBlbnRyaWVzIHN1cHBvcnQgdGhlIHJlc3BlY3RpdmUgdmFyaWF0aW9ucyBmb3IKKyAgICAgICAyNTYgY29sb3JzLgorICAgICAqIFs1MF1zaW1wbGV0ZXJtIGlzIG5vdyAwLjUKKyAgICAgKiBbNTFddnRlIGlzIGFsaWFzZWQgdG8gdnRlLTIwMTIKKyAgICAgKiBbNTJddnQ1MjBhbnNpCisKKyAgIEEgZmV3IGVudHJpZXMgdXNlIGV4dGVuc2lvbnMgKHVzZXItZGVmaW5lZCB0ZXJtaW5hbCBjYXBhYmlsaXRpZXMpOgorICAgICAqIEUzLCAgdXNlZCAgaW4gIGxpbnV4LCAgcHV0dHkgIGFuZCAgeHRlcm0tYmFzaWMgIGlzICB0ZXN0ZWQgIGluIHRoZQorICAgICAgIFs1M11jbGVhciBwcm9ncmFtIHRvIGVyYXNlIGEgdGVybWluYWwncyBzY3JvbGxiYWNrLgorICAgICAqIFRTICBpcyAgdXNlZCAgaW4gdGhlIFs1NF14dGVybStzbCBidWlsZGluZyBibG9jayB0byBoZWxwIGRlcHJlY2F0ZQorICAgICAgIHRoZSBtaXN1c2Ugb2YgdHNsIGZvciB4dGVybSdzIHRpdGxlLXN0cmluZy4KKyAgICAgKiBYVCAgaXMgIHVzZWQgIGluICBzb21lICB0ZXJtaW5mbyBlbnRyaWVzIHRvIGltcHJvdmUgdXNlZnVsbmVzcyBmb3IKKyAgICAgICBvdGhlciAgYXBwbGljYXRpb25zICB0aGFuIHNjcmVlbiwgd2hpY2ggd291bGQgbGlrZSB0byBwcmV0ZW5kIHRoYXQKKyAgICAgICB4dGVybSdzIHRpdGxlIGlzIGEgc3RhdHVzLWxpbmUuCisgICAgICogeG0gIGlzICB1c2VkICBpbiAgZXhhbXBsZXMgIFs1NV14dGVybS0xMDA1ICBhbmQgIFs1Nl14dGVybS0xMDA2IHRvCisgICAgICAgaWxsdXN0cmF0ZSBhIHdheSB0byBtYWtlIG1vdXNlIGhhbmRsaW5nIG1vcmUgZ2VuZXJhbAorCisgICBBICAgZmV3ICAgdGVybWluYWxzICAgc3VwcG9ydCAgaXRhbGljcyAgYW5kL29yICBkaW0gIGNhcGFiaWxpdGllcy4gIEluCisgICBwYXJ0aWN1bGFyLCAgc2NyZWVuICBkb2VzICBub3QuICBEb2N1bWVudGVkIHRoYXQsIGFuZCBhY2NvbW1vZGF0ZWQgdGhlCisgICB0ZXJtaW5hbHMgd2hlcmUgdGhpcyBmZWF0dXJlIHdvcmtzIHdpdGggdGhlIEFfSVRBTElDIGV4dGVuc2lvbi4KKyAgICAgKiBrb25zb2xlLCBtbHRlcm0zIChpdGFsaWNzKQorICAgICAqIG5zdGVybSAoZGltKQorICAgICAqIHNjcmVlbiAoZGltKQorICAgICAqIHZ0ZSAoZGltLCBpdGFsaWNzKQorICAgICAqIHh0ZXJtIChkaW0sIGl0YWxpY3MpCisKKyAgRG9jdW1lbnRhdGlvbgorCisgICBBcyB1c3VhbCwgdGhpcyByZWxlYXNlCisgICAgICogaW1wcm92ZXMgZG9jdW1lbnRhdGlvbiBieSBkZXNjcmliaW5nIG5ldyBmZWF0dXJlcywKKyAgICAgKiBhdHRlbXB0cyAgdG8gIGltcHJvdmUgdGhlIGRlc2NyaXB0aW9uIG9mIGZlYXR1cmVzIHdoaWNoIHVzZXJzIGhhdmUKKyAgICAgICBmb3VuZCBjb25mdXNpbmcKKyAgICAgKiBmaWxscyAgaW4gb3Zlcmxvb2tlZCBkZXNjcmlwdGlvbnMgb2YgZmVhdHVyZXMgd2hpY2ggd2VyZSBkZXNjcmliZWQKKyAgICAgICBpbiB0aGUgWzU3XU5FV1MgZmlsZSBidXQgdHJlYXRlZCBza2V0Y2hpbHkgaW4gbWFudWFsIHBhZ2VzLgorCisgICBJbiAgYWRkaXRpb24sICB0aGUgIG1lY2hhbmlzbSAgZm9yICBwcm9kdWNpbmcgIEhUTUwgIHZlcnNpb25zICBvZiAgdGhlCisgICBkb2N1bWVudGF0aW9uIGhhcyBiZWVuIGltcHJvdmVkOgorICAgICAqIHVzZSBhbiBpbXByb3ZlZCB2ZXJzaW9uIG9mIFs1OF1tYW4yaHRtbCB0byBnZW5lcmF0ZSBodG1sIG1hbnBhZ2VzLgorICAgICAqIHJlZ2VuZXJhdGVkICBbNTldTkNVUlNFUy1Qcm9ncmFtbWluZy1IT1dUTy5odG1sIHRvIGZpeCBzb21lIG9mIHRoZQorICAgICAgIGJyb2tlbiBodG1sIGVtaXR0ZWQgYnkgZG9jYm9vay4KKworICBJbnRlcmVzdGluZyBidWctZml4ZXMKKworICAgICAqIEFkYTk1IGJpbmRpbmc6CisgICAgICAgICAgKyBtb2RpZnkgIG1ha2VmaWxlICBydWxlcyAgdG8gZW5zdXJlIHRoYXQgdGhlIFBJQyBvcHRpb24gaXMgbm90CisgICAgICAgICAgICB1c2VkIHdoZW4gYnVpbGRpbmcgYSBzdGF0aWMgbGlicmFyeQorICAgICAgICAgICsgbWFrZSAgQWRhOTUgIGJ1aWxkLWZpeCAgZm9yICBiaWctZW5kaWFuIGFyY2hpdGVjdHVyZXMgc3VjaCBhcworICAgICAgICAgICAgc3BhcmMuICBUaGlzIHVuZG9lcyBvbmUgb2YgdGhlIGZpeGVzIGZyb20gWzYwXTIwMTEwMzE5LCB3aGljaAorICAgICAgICAgICAgYWRkZWQgYW4gIlVudXNlZCIgbWVtYmVyIHRvIHJlcHJlc2VudGF0aW9uIGNsYXVzZXMsIHJlcGxhY2luZworICAgICAgICAgICAgdGhhdCB3aXRoIHByYWdtYXMgdG8gc3VwcHJlc3Mgd2FybmluZ3MgYWJvdXQgdW51c2VkIGJpdHMuCisgICAgICogQ29sb3IgYW5kIGF0dHJpYnV0ZXM6CisgICAgICAgICAgKyBwYXJlbnRoZXNpemUgIHBhcmFtZXRlciAgb2YgIENPTE9SX1BBSVIgIGFuZCAgUEFJUl9OVU1CRVIgIGluCisgICAgICAgICAgICBjdXJzZXMuaCBpbiBjYXNlIGl0IGhhcHBlbnMgdG8gYmUgYSBjb21tYS1leHByZXNzaW9uLgorICAgICAgICAgICsgaW1wcm92ZSAgWzYxXTIwMDIxMjIxICB3b3JrYXJvdW5kICBmb3IgYnJva2VuIGFjcywgaGFuZGxpbmcgYQorICAgICAgICAgICAgY2FzZSAgd2hlcmUgIHRoYXQgQUNTX3h4eCBjaGFyYWN0ZXIgaXMgbm90IGluIHRoZSBhY3NjIHN0cmluZworICAgICAgICAgICAgYnV0IHRoZXJlIGlzIGEga25vd24gd2lkZS1jaGFyYWN0ZXIgd2hpY2ggY2FuIGJlIHVzZWQuCisgICAgICAgICAgKyBtb2RpZnkgIFs2Ml1pbml0X3BhaXIgIHRvICBhY2NlcHQgIC0xJ3MgZm9yIGNvbG9yIHZhbHVlIGFmdGVyCisgICAgICAgICAgICBbNjNdYXNzdW1lX2RlZmF1bHRfY29sb3JzIGhhcyBiZWVuIGNhbGxlZC4KKyAgICAgICAgICArIGFkZCAgYSAgY2hlY2sgIGluIFs2NF1zdGFydF9jb2xvciB0byBsaW1pdCBjb2xvci1wYWlycyB0byAyNTYKKyAgICAgICAgICAgIHdoZW4gZXh0ZW5kZWQgY29sb3JzIGFyZSBub3Qgc3VwcG9ydGVkLgorICAgICAqIFJlc2l6aW5nIHRoZSBzY3JlZW46CisgICAgICAgICAgKyBwcm9wYWdhdGUgIGVycm9yLXJldHVybnMgIGZyb20gIHdyZXNpemUsICBpLmUuLCAgdGhlIGludGVybmFsCisgICAgICAgICAgICBpbmNyZWFzZV9zaXplICAgIGFuZCAgICBkZWNyZWFzZV9zaXplICAgIGZ1bmN0aW9ucyAgICB0aHJvdWdoCisgICAgICAgICAgICBbNjVdcmVzaXplX3Rlcm0uCisgICAgICAgICAgKyBhZGQgIGNoZWNrICBmb3IgIHplcm8vbmVnYXRpdmUgIGRpbWVuc2lvbnMgZm9yIHJlc2l6ZXRlcm0gYW5kCisgICAgICAgICAgICByZXNpemVfdGVybS4KKyAgICAgICAgICArIG1vZGlmeSAgcmVzaXpldGVybSB0byBhbHdheXMgcHVzaCBhIEtFWV9SRVNJWkUgb250byB0aGUgZmlmbywKKyAgICAgICAgICAgIGV2ZW4gIGlmICBzY3JlZW5zaXplICBpcyAgdW5jaGFuZ2VkLiBNb2RpZnkgbGlicmFyeSB0byBwdXNoIGEKKyAgICAgICAgICAgIEtFWV9SRVNJWkUgIGlmIHRoZXJlIHdhcyBhIFNJR1dJTkNILCBldmVuIGlmIGl0IGRvZXMgbm90IGNhbGwKKyAgICAgICAgICAgIHJlc2l6ZXRlcm0pLiAgIFRoZXNlICBjaGFuZ2VzICBlbGltaW5hdGUgIHRoZSAgY2FzZSAgd2hlcmUgIGEKKyAgICAgICAgICAgIFNJR1dJTkNIICBpcyAgcmVjZWl2ZWQsICBidXQgIEVSUiAgaXMgcmV0dXJuZWQgZnJvbSB3Z2V0Y2ggb3IKKyAgICAgICAgICAgIHdnZXRuc3RyIGJlY2F1c2UgdGhlIHNjcmVlbiBkaW1lbnNpb25zIGRpZCBub3QgY2hhbmdlLgorICAgICAqIExvdy1sZXZlbCBpbnRlcmZhY2VzCisgICAgICAgICAgKyBmaXggIGFuIG9sZCBidWcgaW4gdGhlIHRlcm1jYXAgZW11bGF0aW9uOyAiJWkiIHdhcyBpZ25vcmVkIGluCisgICAgICAgICAgICB0cGFybSAgYmVjYXVzZSAgdGhlIHBhcmFtZXRlcnMgdG8gYmUgaW5jcmVtZW50ZWQgd2VyZSBhbHJlYWR5CisgICAgICAgICAgICBvbiB0aGUgaW50ZXJuYWwgc3RhY2suCisgICAgICAgICAgKyBjaGFuZ2UgICIlbCIgYmVoYXZpb3IgaW4gdHBhcm0gdG8gcHVzaCB0aGUgc3RyaW5nIGxlbmd0aCBvbnRvCisgICAgICAgICAgICB0aGUgIHN0YWNrICByYXRoZXIgIHRoYW4gc2F2aW5nIHRoZSBmb3JtYXR0ZWQgbGVuZ3RoIGludG8gdGhlCisgICAgICAgICAgICBvdXRwdXQgYnVmZmVyLgorICAgICAgICAgICsgbW9kaWZ5ICBuYW1lLWNvbXBhcmlzb24gIGZvciAgdGdldHN0ciwgIGV0Yy4sICB0byBhY2NvbW1vZGF0ZQorICAgICAgICAgICAgbGVnYWN5ICBhcHBsaWNhdGlvbnMgIGFzIHdlbGwgYXMgdG8gaW1wcm92ZSBjb21wYXRiaWxpdHkgd2l0aAorICAgICAgICAgICAgQlNEIDQuMiB0ZXJtY2FwIGltcGxlbWVudGF0aW9ucyAoc2VlIG5vdGUgZm9yIFs2Nl05ODA3MjUpLgorICAgICAqIEhpZ2gtbGV2ZWwgaW50ZXJmYWNlcworICAgICAgICAgICsgbW9kaWZ5IGludGVybmFsIHJlY3Vyc2lvbiBpbiB3Z2V0Y2ggd2hpY2ggaGFuZGxlcyBjb29rZWQgbW9kZQorICAgICAgICAgICAgdG8gIGNoZWNrIGlmIHRoZSBjYWxsIHRvIHdnZXRuc3RyIHJldHVybmVkIGFuIGVycm9yLiBUaGlzIGNhbgorICAgICAgICAgICAgaGFwcGVuICB3aGVuICBib3RoIG5vY2JyZWFrIGFuZCBub2RlbGF5IGFyZSBzZXQsIGZvciBpbnN0YW5jZQorICAgICAgICAgICAgKHNlZSBub3RlIGZvciBbNjddOTYwNDE4KS4KKyAgICAgICAgICArIGFkZCBhIGNoZWNrIGluIGludGVybmFsIGZ1bmN0aW9uIHdhZGRjaF9ub3N5bmMgdG8gZW5zdXJlIHRoYXQKKyAgICAgICAgICAgIHRhYiBjaGFyYWN0ZXJzIGFyZSB0cmVhdGVkIGFzIGNvbnRyb2wgY2hhcmFjdGVyczsgc29tZSBicm9rZW4KKyAgICAgICAgICAgIGxvY2FsZXMgY2xhaW0gdGhleSBhcmUgcHJpbnRhYmxlLgorICAgICAgICAgICsgbW9kaWZ5ICBtZW51ICBsaWJyYXJ5ICB0byAgZW5zdXJlICB0aGF0ICBhICBtZW51J3MgdG9wLXJvdyBpcworICAgICAgICAgICAgYWRqdXN0ZWQgIGFzIG5lZWRlZCB0byBlbnN1cmUgdGhhdCB0aGUgY3VycmVudCBpdGVtIGlzIG9uIHRoZQorICAgICAgICAgICAgc2NyZWVuCisgICAgICAgICAgKyBmaXggIHNwZWNpYWwgIGNhc2UgIHdoZXJlIGRvdWJsZS13aWR0aCBjaGFyYWN0ZXIgb3ZlcndyaXRlcyBhCisgICAgICAgICAgICBzaW5nbGUtIHdpZHRoIGNoYXJhY3RlciBpbiB0aGUgZmlyc3QgY29sdW1uLgorCisgIENvbmZpZ3VyYXRpb24gY2hhbmdlcworCisgICAgTWFqb3IgY2hhbmdlcworCisgICBUaGUgbmN1cnNlcyA2LjAgY29uZmlndXJlIHNjcmlwdCBtYWtlcyBjaGFuZ2VzIHRvIHRoZSBkZWZhdWx0IHZhbHVlIG9mCisgICBzZXZlcmFsICBjb25maWd1cmUgb3B0aW9ucywgZGVwZW5kaW5nIG9uIHRoZSAtLXdpdGgtYWJpLXZlcnNpb24gb3B0aW9uCisgICAoaS5lLiwgd2hldGhlciBpdHMgdmFsdWUgaXMgIjUiIG9yICI2Iik6CisKKyAgIC0tZW5hYmxlLWNvbnN0CisgICAgICAgICAgRmVhdHVyZSAgaW50cm9kdWNlZCAgaW4gIFs2OF05NzA0MDUgIHN1cHBvcnRzICB0aGUgdXNlIG9mIGNvbnN0CisgICAgICAgICAgd2hlcmUgIFgvT3BlbiAgQ3Vyc2VzICBzaG91bGQgIGhhdmUsIGJ1dCBkaWQgbm90LiBOZXRCU0QgY3Vyc2VzCisgICAgICAgICAgZG9lcyBzb21ldGhpbmcgc2ltaWxhciB3aXRoIGNvbnN0LgorCisgICAtLWVuYWJsZS1leHQtY29sb3JzCisgICAgICAgICAgRXh0ZW5kcyAgdGhlICBjY2hhcl90IHN0cnVjdHVyZSB0byBhbGxvdyBtb3JlIHRoYW4gMTYgY29sb3JzIHRvCisgICAgICAgICAgYmUgICBlbmNvZGVkLiAgIFRoaXMgICBhcHBsaWVzICAgb25seSAgIHRvICB0aGUgIHdpZGUtY2hhcmFjdGVyCisgICAgICAgICAgKC0tZW5hYmxlLXdpZGVjKSBjb25maWd1cmF0aW9uLgorCisgICAtLWVuYWJsZS1leHQtbW91c2UKKyAgICAgICAgICBNb2RpZmllcyAgdGhlICBlbmNvZGluZyAgb2YgIG1vdXNlIHN0YXRlIHRvIG1ha2Ugcm9vbSBmb3IgYSA1dGgKKyAgICAgICAgICBtb3VzZSBidXR0b24uIFRoYXQgYWxsb3dzIG9uZSB0byB1c2UgbmN1cnNlcyB3aXRoIGEgd2hlZWwgbW91c2UKKyAgICAgICAgICB3aXRoIHh0ZXJtIG9yIHNpbWlsYXIgWCB0ZXJtaW5hbCBlbXVsYXRvcnMuCisKKyAgIC0tZW5hYmxlLWV4dC1wdXR3aW4KKyAgICAgICAgICBNb2RpZmllcyAgdGhlICBmaWxlLWZvcm1hdCAgd3JpdHRlbiAgYnkgcHV0d2luIHRvIHVzZSBwcmludGFibGUKKyAgICAgICAgICB0ZXh0ICByYXRoZXIgIHRoYW4gYmluYXJ5IGZpbGVzLCBhbGxvd2luZyBnZXR3aW4gdG8gcmVhZCBzY3JlZW4KKyAgICAgICAgICBkdW1wcyAgd3JpdHRlbiBieSBkaWZmZXJlbnRseS1jb25maWd1cmVkIG5jdXJzZXMgbGlicmFyaWVzLiBUaGUKKyAgICAgICAgICBleHRlbmRlZCAgZ2V0d2luICBjYW4gIHN0aWxsICByZWFkIGJpbmFyeSBzY3JlZW4gZHVtcHMgZnJvbSB0aGUKKyAgICAgICAgICBzYW1lICBjb25maWd1cmF0aW9uICBvZiAgbmN1cnNlcy4gIFRoaXMgZG9lcyBub3QgY2hhbmdlIHRoZSBBQkkKKyAgICAgICAgICAodGhlIGJpbmFyeSBpbnRlcmZhY2Ugc2VlbiBieSBjYWxsaW5nIGFwcGxpY2F0aW9ucykuCisKKyAgIC0tZW5hYmxlLWludGVyb3AKKyAgICAgICAgICBNb2RpZmllcyAgdGhlICBGSUVMRFRZUEUgc3RydWN0dXJlIHVzZWQgZm9yIHRoZSBmb3JtIGxpYnJhcnkgdG8KKyAgICAgICAgICBtYWtlIGl0IG1vcmUgZ2VuZXJpYy4KKworICAgLS1lbmFibGUtbHA2NAorICAgICAgICAgIEFsbG93cyAgYW4gIGFwcGxpY2F0aW9uICB0byAgZGVmaW5lIF9MUDY0IHRvIGRlY2xhcmUgY2h0eXBlIGFuZAorICAgICAgICAgIG1tYXNrX3QgIGFzICBzaW1wbHkgInVuc2lnbmVkIiByYXRoZXIgdGhhbiB0aGUgY29uZmlndXJlZCB0eXBlcworICAgICAgICAgIHVzaW5nIHRoZSAtLXdpdGgtY2h0eXBlIGFuZCAtLXdpdGgtbW1hc2tfdCBvcHRpb25zLgorCisgICAtLWVuYWJsZS1zcC1mdW5jcworICAgICAgICAgIENvbXBpbGUtaW4gc3VwcG9ydCBmb3IgZXh0ZW5kZWQgZnVuY3Rpb25zIHdoaWNoIGFjY2VwdCBhIFNDUkVFTgorICAgICAgICAgIHBvaW50ZXIsICByZWR1Y2luZyAgdGhlICBuZWVkICBmb3IganVnZ2xpbmcgdGhlIGdsb2JhbCBTUCB2YWx1ZQorICAgICAgICAgIHdpdGggWzY5XXNldF90ZXJtIGFuZCBbNzBdZGVsc2NyZWVuLgorCisgICAtLXdpdGgtY2h0eXBlPXVpbnQzMl90CisgICAgICAgICAgTWFrZXMgY2h0eXBlIGV4cGxpY2l0bHkgYSAzMi1iaXQgdW5zaWduZWQgdmFsdWUuCisKKyAgIC0td2l0aC1tbWFza190PXVpbnQzMl90CisgICAgICAgICAgTWFrZXMgbW1hc2tfdCBleHBsaWNpdGx5IGEgMzItYml0IHVuc2lnbmVkIHZhbHVlLgorCisgICAtLXdpdGgtdHBhcm0tYXJnPWludHB0cl90CisgICAgICAgICAgWC9PcGVuICBDdXJzZXMgIGRlY2xhcmVzICBbNzFddHBhcm0gIHVzaW5nIGxvbmcgZm9yIGVhY2ggb2YgdGhlCisgICAgICAgICAgcGFyYW1ldGVycyAgYXNpZGUgIGZyb20gIHRoZSAgZm9ybWF0dGluZyBzdHJpbmcsIHByZXN1bWluZyB0aGF0CisgICAgICAgICAgbG9uZyAgYW5kICBjaGFyKiAgYXJlIHRoZSBzYW1lIHNpemUuIFRoaXMgY29uZmlndXJlIG9wdGlvbiB1c2VzCisgICAgICAgICAgaW50cHRyX3Qgd2hpY2ggcHJvdmlkZXMgYSBiZXR0ZXIgZ3VhcmFudGVlIG9mIHRoZSBzaXplcy4KKworICAgVGhlICBjb25maWd1cmUgIHNjcmlwdCAgbm8gbG9uZ2VyIGNoZWNrcyBmb3IgYW50aXF1ZSBjb21waWxlcnM7IGM4OSBpcworICAgYXNzdW1lZCAgYXMgIGEgIG1pbmltdW0uIFRoZXJlIGFyZSBhIGZldyBmZWF0dXJlcyBmcm9tIGxhdGVyIHJldmlzaW9ucworICAgd2hpY2ggIGFyZSAgdXNlZCAgd2hlbiBhdmFpbGFibGUuIFRoZSBjb25maWd1cmUgc2NyaXB0IG1ha2VzIGNoZWNrcyB0bworICAgdHVybiBvbiB1c2VmdWwgd2FybmluZ3MgZnJvbSBjbGFuZywgZ2NjIGFuZCBpY2MuIFlvdSBzaG91bGQgYmUgYWJsZSB0bworICAgYnVpbGQgIG5jdXJzZXMgIDYuMCAgd2l0aCAgYW55ICBvZiAgdGhlICBjdXJyZW50IChvciBub3Qgc28gY3VycmVudCkgQworICAgY29tcGlsZXJzIGF2YWlsYWJsZSBpbiAyMDE1LgorCisgICBUaGUgY29uZmlndXJlIHNjcmlwdCwgYnkgdGhlIHdheSwgbWFrZXMgY2hhbmdlcyB3aGljaCBkbyBub3Qgd29yayB3aXRoCisgICBzeXN0ZW1zICB3aG9zZSAgL2Jpbi9zaCBpcyBub24tUE9TSVguIFRoaXMgbWFpbmx5IGFmZmVjdHMgU29sYXJpcyAodGhlCisgICBvdGhlciAgdmVuZG9yICB1bml4IHN5c3RlbXMgaGF2ZSBmb2xsb3dlZCB0aGUgUE9TSVggZ3VpZGVsaW5lcyBmb3IgdGhlCisgICBwYXN0ICB0d2VudHkgIHllYXJzKS4gIElmICB5b3UgIG11c3QgIGJ1aWxkICBvbiAgU29sYXJpcywgaXRzIFs3Ml14cGc0CisgICBiaW5hcmllcyBzdWZmaWNlLCBlLmcuLAorCisgICAgICMhL2Jpbi9zaAorICAgICBXSEFUPWBob3N0bmFtZXxzZWQgLWUgJ3MvXC4uKi8vJ2AKKyAgICAgT1VUPWNvbmZpZ3VyZS5vdXQKKyAgICAgY2F0ID4+JE9VVCA8PEVPRi8KKyAgICAgKiogYGRhdGVgCisgICAgICoqIG5vZGU6ICRXSEFUCisgICAgICoqIHVzZXI6IGBpZGAKKyAgICAgKiogY29uZjogJCoKKyAgICAgRU9GLworCisgICAgIFNIRUxMPS9iaW4vc2gKKyAgICAgaWYgdGVzdCAtZiAvdXNyL3hwZzQvYmluL3NoCisgICAgIHRoZW4KKyAgICAgICAgICAgICBDT05GSUdfU0hFTEw9L3Vzci94cGc0L2Jpbi9zaAorICAgICAgICAgICAgIGV4cG9ydCBDT05GSUdfU0hFTEwKKyAgICAgICAgICAgICBTSEVMTD0kQ09ORklHX1NIRUxMCisgICAgIGZpCisKKyAgICAgcm0gLWYgY29uZmlnLnN0YXR1cyBjb25maWcuY2FjaGUKKyAgICAgVE9QPSRIT01FLyRXSEFUCisgICAgICRTSEVMTCAuL2NvbmZpZ3VyZSAtLXZlcmJvc2UgXAorICAgICAgICAgICAgIC0tZGlzYWJsZS1lY2hvIFwKKyAgICAgICAgICAgICAtLWRpc2FibGUtb3ZlcndyaXRlIFwKKyAgICAgICAgICAgICAtLWVuYWJsZS13YXJuaW5ncyBcCisgICAgICAgICAgICAgLS13aXRoLXdhcm5pbmdzIFwKKyAgICAgICAgICAgICAtLXByZWZpeD0kVE9QICQqIDI+JjEgfCB0ZWUgLWEgJE9VVAorCisgICBPdGhlciBtYWpvciBjaGFuZ2VzIHRvIHRoZSBjb25maWd1cmUgc2NyaXB0IGluY2x1ZGU6CisgICAgICogQUJJIDYgaXMgbm93IHRoZSBkZWZhdWx0LCBpbnRlbmRpbmcgdGhhdCB0aGUgZXhpc3RpbmcgQUJJIDUgc2hvdWxkCisgICAgICAgYnVpbGQgYXMgYmVmb3JlIHVzaW5nIHRoZSAiLS13aXRoLWFiaS12ZXJzaW9uPTUiIG9wdGlvbi4KKyAgICAgKiBhZGRlZCAgIC0td2l0aC1leHRyYS1zdWZmaXggICBvcHRpb24gICB0byAgIGhlbHAgIHdpdGggIGluc3RhbGxpbmcKKyAgICAgICBub25jb25mbGljdGluZyAgbmN1cnNlczYgIHBhY2thZ2VzLCAgZS5nLiwgIGF2b2lkaW5nICBoZWFkZXItICBhbmQKKyAgICAgICBsaWJyYXJ5LWNvbmZsaWN0cy4KKyAgICAgICBOT1RFOiBhcyBhIHNpZGUtZWZmZWN0LCB0aGlzIHJlbmFtZXMKKworICAgICBhZGFjdXJzZXMtY29uZmlnIHRvIGFkYWN1cnNlczUtY29uZmlnIGFuZAorICAgICBhZGFjdXJzZXN3LWNvbmZpZyB0byBhZGFjdXJzZXN3NS1jb25maWcKKyAgICAgKiB0aGUgIGNvbmZpZ3VyZSAgc2NyaXB0ICBsb29rcyAgZm9yIGduYXRnY2MgaWYgdGhlIEFkYTk1IGJpbmRpbmcgaXMKKyAgICAgICBidWlsdCwgIGluICBwcmVmZXJlbmNlICB0byAgdGhlICBkZWZhdWx0ICBnY2MvY2MuICBUaGUgc2NyaXB0IGFsc28KKyAgICAgICBlbnN1cmVzICB0aGF0ICB0aGUgIEFkYTk1ICBiaW5kaW5nICBpcyAgYnVpbHQgIHdpdGggIHRoZSAgbGV2ZWwgb2YKKyAgICAgICBvcHRpbWl6YXRpb24gYXMgdGhlIEMgbGlicmFyaWVzLgorICAgICAqIHRoZSAgY29uZmlndXJlIHNjcmlwdCBjYXB0dXJlcyBkZWZpbmUncyByZWxhdGVkIHRvIC1EX1hPUEVOX1NPVVJDRQorICAgICAgIGZyb20gIHRoZSAgY29uZmlndXJlIGNoZWNrIGFuZCBhZGRzIHRob3NlIHRvIHRoZSAqLWNvbmZpZyBhbmQgKi5wYworICAgICAgIGZpbGVzLCB0byBzaW1wbGlmeSB1c2UgZm9yIHRoZSB3aWRlLWNoYXJhY3RlciBsaWJyYXJpZXMuCisKKyAgICBDb25maWd1cmF0aW9uIG9wdGlvbnMKKworICAgVGhlcmUgYXJlIHNldmVyYWwgbmV3IChvciBleHRlbmRlZCkgY29uZmlndXJlIG9wdGlvbnM6CisKKyAgIC0tZGlzYWJsZS1kYi1pbnN0YWxsCisgICAgICAgICAgRG8gIG5vdCAgaW5zdGFsbCAgdGhlICB0ZXJtaW5hbCAgZGF0YWJhc2UuIFRoaXMgaXMgdXNlZCB0byBvbWl0CisgICAgICAgICAgZmVhdHVyZXMgZm9yIHBhY2thZ2VzLCBhcyBkb25lIHdpdGggLS13aXRob3V0LXByb2dzLiBUaGUgb3B0aW9uCisgICAgICAgICAgc2ltcGxpZmllcyBidWlsZGluZyBjcm9zcy1jb21waWxlIHN1cHBvcnQgcGFja2FnZXMuCisKKyAgIC0tZGlzYWJsZS1nbmF0LXByb2plY3RzCisgICAgICAgICAgVGhpcyBvcHRpb24gaXMgdXNlZCBmb3IgcmVncmVzc2lvbiB0ZXN0aW5nCisKKyAgIC0tZGlzYWJsZS1saWItc3VmZml4ZXMKKyAgICAgICAgICBTdXBwcmVzcyAgdGhlICJ3IiwgInQiIG9yICJ0dyIgc3VmZml4ZXMgd2hpY2ggbm9ybWFsbHkgd291bGQgYmUKKyAgICAgICAgICBhZGRlZCAgIHRvICAgdGhlICBsaWJyYXJ5ICBuYW1lcyAgZm9yICB0aGUgIC0tZW5hYmxlLXdpZGVjICBhbmQKKyAgICAgICAgICAtLXdpdGgtcHRocmVhZCBvcHRpb25zLgorCisgICAtLXdpdGgtY3h4LXNoYXJlZAorICAgICAgICAgIFdoZW4gIC0td2l0aC1zaGFyZWQgIGlzICBzZXQsICBidWlsZCAgbGlibmN1cnNlcysrICBhcyBhIHNoYXJlZAorICAgICAgICAgIGxpYnJhcnkuICBUaGlzICBpbXBsaWNpdGx5ICByZWxpZXMgIHVwb24gYnVpbGRpbmcgd2l0aCBnY2MvZysrLAorICAgICAgICAgIHNpbmNlICBvdGhlciAgY29tcGlsZXIgIHN1aXRlcyAgbWF5IGhhdmUgZGlmZmVyZW5jZXMgaW4gdGhlIHdheQorICAgICAgICAgIHNoYXJlZCAgbGlicmFyaWVzICBhcmUgIGJ1aWx0LiAgbGlidG9vbCAgYnkgdGhlIHdheSBoYXMgc2ltaWxhcgorICAgICAgICAgIGxpbWl0YXRpb25zLgorCisgICAtLXdpdGgtaGFzaGVkLWRiCisgICAgICAgICAgRXh0ZW5kZWQgIHRoaXMgIGNvbmZpZ3VyZSAgb3B0aW9uICB0byAgc2ltcGxpZnkgIGJ1aWxkaW5nICB3aXRoCisgICAgICAgICAgZGlmZmVyZW50IHZlcnNpb25zIG9mIEJlcmtlbGV5IGRhdGFiYXNlIHVzaW5nIEZyZWVCU0QgcG9ydHMuCisKKyAgIC0td2l0aC1wYy1zdWZmaXgKKyAgICAgICAgICBJZiAgIi5wYyIgIGZpbGVzICBhcmUgaW5zdGFsbGVkLCBvcHRpb25hbGx5IGFkZCBhIHN1ZmZpeCB0byB0aGUKKyAgICAgICAgICBmaWxlcyAgYW5kICBjb3JyZXNwb25kaW5nICBwYWNrYWdlICBuYW1lcyAgdG8gIHNlcGFyYXRlIHVudXN1YWwKKyAgICAgICAgICBjb25maWd1cmF0aW9ucy4gIElmICBubyAgb3B0aW9uICB2YWx1ZSAgaXMgIGdpdmVuICAob3IgaWYgaXQgaXMKKyAgICAgICAgICAibm9uZSIpLCAgbm8gIHN1ZmZpeCAgaXMgYWRkZWQuIFRoaXMgb3B0aW9uIGlzIHVzZWQgaW4gdGhlIHRlc3QKKyAgICAgICAgICBwYWNrYWdlIGZvciBuY3Vyc2VzNi4KKworICAgLS13aXRoLXh0ZXJtLWticworICAgICAgICAgIENvbmZpZ3VyZSAgeHRlcm0ncyB0ZXJtaW5mbyBlbnRyaWVzIHRvIHVzZSBlaXRoZXIgQlMgKF5ILCBpLmUuLAorICAgICAgICAgIEFTQ0lJIGJhY2tzcGFjZSkgb3IgREVMIChePywgb3IgMTI3KS4KKworICBQb3J0YWJpbGl0eQorCisgICAgTWluR1cKKworICAgTW9zdCAgb2YgIHRoZSAgcG9ydGFiaWxpdHktcmVsYXRlZCB3b3JrIHNpbmNlIFs3M11uY3Vyc2VzIDUuOSBleHRlbmRlZAorICAgYW5kIGltcHJvdmVkIHRoZSBNaW5HVyBwb3J0IGludHJvZHVjZWQgaW4gWzc0XW5jdXJzZXMgNS44LgorCisgICBUaGUgTWluR1cgcG9ydCBjYW4gYmUgcmVhZGlseSBjcm9zcy1jb21waWxlZDoKKyAgICAgKiBtb2RpZmllZCAgY29uZmlndXJlICBzY3JpcHQgdG8gYWxsb3cgY3JlYXRpbmcgZGxsJ3MgZm9yIE1pbkdXIHdoZW4KKyAgICAgICBjcm9zcy1jb21waWxpbmcuCisgICAgICogZW5mb3JjZWQgV2luZG93cy1zdHlsZSBwYXRoLXNlcGFyYXRvciBpZiBjcm9zcy1jb21waWxpbmcsCisgICAgICogYWRkZWQgIHNjcmlwdHMgIGZvciAgdGVzdC1idWlsZHMgIG9mICBjcm9zcy1jb21waWxlZCAgcGFja2FnZXMgZm9yCisgICAgICAgbmN1cnNlczYgdG8gTWluR1cuCisgICAgICogYWRkZWQgcGMtZmlsZXMgdG8gdGhlIE1pbkdXIGNyb3NzLWNvbXBpbGluZyB0ZXN0LXBhY2thZ2VzLgorICAgICAqIGFkZGVkIHNjcmlwdCBmb3IgYnVpbGRpbmcgdGVzdC1wYWNrYWdlcyBvZiBiaW5hcmllcyBjcm9zcy1jb21waWxlZAorICAgICAgIHRvIE1pbkdXIHVzaW5nIE5TSVMuCisgICAgICogYWRkZWQgIG5jX21pbmd3LmggIHRvICBpbnN0YWxsZWQgIGhlYWRlcnMgIGZvciBNaW5HVyBwb3J0OyB0aGlzIGlzCisgICAgICAgbmVlZGVkIGZvciBjcm9zcy1jb21waWxpbmcgWzc1XW5jdXJzZXMtZXhhbXBsZXMuCisgICAgICogYWRkZWQgdGVzdC1wYWNrYWdlcyBmb3IgY3Jvc3MtY29tcGlsaW5nIG5jdXJzZXMtZXhhbXBsZXMgdXNpbmcgdGhlCisgICAgICAgTWluR1cgdGVzdC1wYWNrYWdlcy4KKworICAgVGhlIE1pbkdXLXNwZWNpZmljIFdpbmRvd3MgZHJpdmVyIGFjY291bnRzIGZvciBzZXZlcmFsIGNoYW5nZXM6CisgICAgICogd2lkZS1jaGFyYWN0ZXIgICBkaXNwbGF5ICBpcyAgbWFkZSAgdXNhYmxlICBieSAgcmVwbGFjaW5nICBNaW5HVydzCisgICAgICAgbm9uLXdvcmtpbmcgd2NydG9tYiBhbmQgd2N0b21iIGZ1bmN0aW9ucy4KKyAgICAgKiBpbXBsZW1lbnRlZCAgICBzb21lICAgZGlzcGxheSAgIGZlYXR1cmVzOiAgIFs3Nl1iZWVwLCAgIFs3N11mbGFzaCwKKyAgICAgICBbNzhdY3Vyc19zZXQuCisgICAgICogdGhlIGRyaXZlciBoYW5kbGVzIHJlcGFpbnRpbmcgb24gZW5kd2luL3JlZnJlc2ggY29tYmluYXRpb24uCisgICAgICogbW9kaWZpZWQgIHRyZWF0bWVudCAgb2YgIFRFUk0gIHZhcmlhYmxlICBmb3IgIE1pbkdXICBwb3J0IHRvIGFsbG93CisgICAgICAgZXhwbGljaXQgdXNlIG9mIHRoZSBXaW5kb3dzIGNvbnNvbGUgZHJpdmVyIGJ5IGNoZWNraW5nIGlmICRURVJNIGlzCisgICAgICAgc2V0IHRvICIjd2luMzJjb25zb2xlIiBvciBhbiBhYmJyZXZpYXRpb24gb2YgdGhhdC4KKyAgICAgKiB0aGUgV2luZG93cyBkcml2ZXIgYWxzbyBtYXRjaGVzIHRoZSBzcGVjaWFsIFRFUk0gdmFsdWUgInVua25vd24iCisgICAgICogdGhlIGRyaXZlciBub3cgcmV0dXJucyBjaGFyYWN0ZXJzIGZvciBzcGVjaWFsIGtleXMsIChsaWtlIGFuc2kuc3lzCisgICAgICAgZG9lcyksICB3aGVuICBrZXlwYWQgbW9kZSBpcyBvZmYsIHJhdGhlciB0aGFuIHJldHVybmluZyBub3RoaW5nIGF0CisgICAgICAgYWxsLgorICAgICAqIHRoZSAgZHJpdmVyIGNoZWNrcyBhIG5ldyBlbnZpcm9ubWVudCB2YXJpYWJsZSBbNzldTkNVUlNFU19DT05TT0xFMgorICAgICAgIHRvICBvcHRpb25hbGx5ICB3b3JrICBhcm91bmQgIGEgIGRlZmljaWVuY3kgIGluICBDb25zb2xlMiAoYW5kIGl0cworICAgICAgIGRlc2NlbmRlbnQgIENvbnNvbGVaKSAgd2hpY2ggIGhhbmcgIHdoZW4gIGFuIGFwcGxpY2F0aW9uIGNyZWF0ZXMgYQorICAgICAgIGNvbnNvbGUgYnVmZmVyLgorCisgICBGaW5hbGx5LCB0aGVyZSBhcmUgb3RoZXIgaW1wcm92ZW1lbnRzOgorICAgICAqIE1pbkdXICBpcyAgb25lICBvZiAgdGhlICBjb25maWd1cmF0aW9ucyAgd2hlcmUgbmN1cnNlcyBpbnN0YWxscyBieQorICAgICAgIGRlZmF1bHQgaW50byAvdXNyCisgICAgICogY29uZmlndXJhdGlvbiAgIGZvciAgIGNyb3NzLWNvbXBpbGluZyAgIHVzZXMgICBBQ19DSEVDS19UT09MUyAgIGluCisgICAgICAgcHJlZmVyZW5jZSAgdG8gIEFDX1BBVEhfUFJPR1MgIHdoZW4gc2VhcmNoaW5nIGZvciBuY3Vyc2VzKi1jb25maWcsCisgICAgICAgZS5nLiwgaW4gQWRhOTUvY29uZmlndXJlIGFuZCB0ZXN0L2NvbmZpZ3VyZS4KKyAgICAgKiBleHRlbmQgV2luZG93cyBzdXBwb3J0IHRvIHdvcmsgd2l0aCBNU1lTMjsKKyAgICAgICAgICArIHRoaXMgIHdvcmtzICB3aXRoICBhICBzY2VuYXJpbyAgd2hlcmUgdGhlcmUgaXMgYW4gQU5TSS1lc2NhcGUKKyAgICAgICAgICAgIGhhbmRsZXIgc3VjaCBhcyBhbnNpY29uIHJ1bm5pbmcgaW4gdGhlIGNvbnNvbGUgd2luZG93LgorICAgICAgICAgICsgd3JhcCAgaXNhdHR5ICBjYWxscyB3aXRoIGEgbWFjcm8sIHByb3ZpZGUgYSBjb3JyZXNwb25kaW5nIHNldAorICAgICAgICAgICAgb2YgIHN1cHBvcnQgcm91dGluZXMgdG8gYWRkcmVzcyBkaWZmZXJlbmNlcyBiZXR3ZWVuIE1pbkdXIGFuZAorICAgICAgICAgICAgTVNZUzIuCisgICAgICogZW5zdXJlIFdJTlZFUiBpcyBkZWZpbmVkIGluIG1ha2VmaWxlcyByYXRoZXIgdGhhbiB1c2luZyBoZWFkZXJzLgorICAgICAqIGFkZCBjaGVjayBmb3IgdGhlIGduYXRwcmVwICItVCIgb3B0aW9uLgorICAgICAqIHdvcmsgIGFyb3VuZCAgYSAgYnVnICBpbnRyb2R1Y2VkICBieSAgWzgwXWdjYyA0LjguMSBpbiBNaW5HVyB3aGljaAorICAgICAgIGJyZWFrcyAidHJhY2UiIGZlYXR1cmUuCisgICAgICogYWRkIGEgZHJpdmVyLW5hbWUgbWV0aG9kIHRvIGVhY2ggb2YgdGhlIGRyaXZlcnMuCisKKyAgICBPdGhlciBwb3J0cworCisgICBUaGVzZSBjaGFuZ2VzIGFmZmVjdCBjZXJ0YWluIHBsYXRmb3JtcyAocG9ydHMpOgorICAgICAqIHRoZSAgY29uZmlndXJlICBzY3JpcHQgIGtub3dzICBob3cgIHRvIGJ1aWxkIHNoYXJlZCBsaWJyYXJpZXMgd2l0aAorICAgICAgIERyYWdvbkZseUJTRCBhbmQgSW50ZXJpeC4KKyAgICAgKiBzdXBwb3J0IGZvciBBSVggc2hhcmVkIGxpYnJhcmllcyBpcyBpbXByb3ZlZCwgdGVzdGVkIHdpdGggQUlYIDUuMywKKyAgICAgICA2LjEgYW5kIDcuMSB3aXRoIGJvdGggZ2NjIDQuMi40IGFuZCBjYzoKKyAgICAgICAgICArIHRoZSBzaGFyZWQtbGlicmFyeSBzdWZmaXggZm9yIEFJWCA1IGFuZCA2IGlzIG5vdyAiLnNvIgorICAgICAgICAgICsgdGhlICAtYnJ0bCAgb3B0aW9uIGlzIHVzZWQgd2l0aCBBSVggNS03OyBpdCBpcyBuZWVkZWQgdG8gbGluaworICAgICAgICAgICAgd2l0aCB0aGUgc2hhcmVkIGxpYnJhcmllcy4KKyAgICAgKiB0aGUgIGNvbmZpZ3VyZSAgLS1lbmFibGUtcGMtZmlsZXMgIG9wdGlvbiAgdGFrZXMgIGludG8gYWNjb3VudCB0aGUKKyAgICAgICBbODFdUEtHX0NPTkZJR19QQVRIIHZhcmlhYmxlLgorICAgICAqIHRoZSAgY29uZmlndXJlICBvcHRpb24gIC0td2l0aC1wa2ctY29uZmlnLWxpYmRpciAgcHJvdmlkZXMgY29udHJvbAorICAgICAgIG92ZXIgdGhlIGFjdHVhbCBkaXJlY3RvcnkgaW50byB3aGljaCBwYy1maWxlcyBhcmUgaW5zdGFsbGVkLgorICAgICAqIHRoZSAgYnVpbGQgIHNjcmlwdHMgIGFkZCAgZXhwbGljaXQgLWx0aW5mbywgZXRjLiwgdG8gdGhlIGdlbmVyYXRlZAorICAgICAgICIucGMiICBmaWxlICB3aGVuIGxkIG9wdGlvbiAiLS1hcy1uZWVkZWQiIGlzIHVzZWQsIG9yIHdoZW4gbmN1cnNlcworICAgICAgIGFuZCB0aW5mbyBhcmUgaW5zdGFsbGVkIHdpdGhvdXQgdXNpbmcgcnBhdGguCisgICAgICogdGhlICAgICBjb25maWd1cmUgICAgc2NyaXB0ICAgIGRpc2FsbG93cyAgICBjb25mbGljdGluZyAgICBvcHRpb25zCisgICAgICAgIi0td2l0aC10ZXJtbGliIiBhbmQgIi0tZW5hYmxlLXRlcm0tZHJpdmVyIi4KKyAgICAgKiB0aGUgIGNoZWNrICBmb3IgIG1pc3NpbmcgIGMrKyAgY29tcGlsZXIgIHRvICB3b3JrIHdoZW4gbm8gZXJyb3IgaXMKKyAgICAgICByZXBvcnRlZCwgICBhbmQgIG5vICB2YXJpYWJsZXMgIHNldCAgaXMgIGltcHJvdmVkICAoc2VlICBub3RlICBmb3IKKyAgICAgICBbODJdMjAwMjEyMDYpLgorICAgICAqIHRoZSAgbWlzYy9nZW5fZWRpdC5zaCAgc2NyaXB0ICBzZWxlY3RzIGEgImxpbnV4IiBlbnRyeSB3aGljaCB3b3JrcworICAgICAgIHdpdGggIHRoZSAgY3VycmVudCAga2VybmVsICByYXRoZXIgIHRoYW4gIGFzc3VtaW5nICBpdCAgaXMgIGFsd2F5cworICAgICAgICJsaW51eDMuMCIKKyAgICAgKiB0aGUgIHRlc3QvY29uZmlndXJlICBzY3JpcHQgIG1ha2VzIGl0IHNpbXBsZXIgdG8gb3ZlcnJpZGUgbmFtZXMgb2YKKyAgICAgICBjdXJzZXMtcmVsYXRlZCAgbGlicmFyaWVzLCAgdG8gIGhlbHAgd2l0aCBsaW5raW5nIHdpdGggcGRjdXJzZXMgaW4KKyAgICAgICBNaW5HVyBlbnZpcm9ubWVudC4KKyAgICAgKiB0aGUgIGNvbmZpZ3VyZS1zY3JpcHQvaWZkZWYncyAgYWxsb3cgdGhlIEJTRCBPTERfVFRZIGZlYXR1cmUgdG8gYmUKKyAgICAgICBzdXBwcmVzc2VkICBpZiAgdGhlICB0eXBlIG9mIG9zcGVlZCBpcyBjb25maWd1cmVkIHVzaW5nIHRoZSBvcHRpb24KKyAgICAgICAtLXdpdGgtb3NwZWVkICB0byAgbm90ICBiZSAgYSBzaG9ydC4gQnkgZGVmYXVsdCwgaXQgaXMgYSBzaG9ydCBmb3IKKyAgICAgICB0ZXJtY2FwLWNvbXBhdGliaWxpdHkuCisgICAgICogdGhlICBNS2xpYl9nZW4uc2ggIHNjcmlwdCAgd29ya3MgIGFyb3VuZCAgYSByZWNlbnQgY2hhbmdlIGluIGdjYyA1CisgICAgICAgKHJlbGVhc2VkICBbODNdbWlkLTIwMTUpICB3aGljaCAgZXNzZW50aWFsbHkgIGVtaXRzIG11bHRpcGxlICNsaW5lCisgICAgICAgc3RhdGVtZW50cyBmb3IgdGhlIHNhbWUgcG9zaXRpb24gaW4gYSBmaWxlLgorICAgICAqIHRoZSAgIGNvbmZpZ3VyZSAgc2NyaXB0ICB3b3JrcyAgd2l0aCAgTWluaXgzLjIgIChzZWUgIFs4NF1ub3RlICBvbgorICAgICAgIHBvcnRhYmlsaXR5KQorICAgICAqIE9TLzIgcmVkdXg6CisgICAgICAgICAgKyB0aGUgY29uZmlndXJlIHNjcmlwdCBzdXBwb3J0cyBPUy8yIGtMSUJDLgorICAgICAgICAgICsgdGhlICAtLXdpdGgtbGliLXByZWZpeCAgb3B0aW9uIGFsbG93cyBjb25maWd1cmluZyBmb3Igb2xkL25ldworICAgICAgICAgICAgZmxhdm9ycyBvZiBPUy8yIEVNWC4KKyAgICAgKiBpbXByb3ZlZCBjb25maWd1cmUtc2NyaXB0IGNoZWNrcyBmb3IgX1hPUEVOX1NPVVJDRToKKyAgICAgICAgICArIHRoZSBkZWZpbml0aW9uIHdvcmtzIHN0YXJ0aW5nIHdpdGggU29sYXJpcyAxMC4KKyAgICAgICAgICArIHRoZSAgZGVmaW5pdGlvbiAgaXMgIHN1cHByZXNzZWQgIGZvciBJUklYNjQsIHNpbmNlIGl0cyBoZWFkZXIKKyAgICAgICAgICAgIGZpbGVzIGhhdmUgYSBjb25mbGljdCB2ZXJzdXMgX1NHSV9TT1VSQ0UuCisgICAgIF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCisKK0ZlYXR1cmVzIG9mIG5jdXJzZXMKKworICAgVGhlICBuY3Vyc2VzICBwYWNrYWdlICBpcyAgZnVsbHkgdXB3YXJkLWNvbXBhdGlibGUgd2l0aCBTVnI0IChTeXN0ZW0gVgorICAgUmVsZWFzZSA0KSBjdXJzZXM6CisgICAgICogQWxsIG9mIHRoZSBTVnI0IGNhbGxzIGhhdmUgYmVlbiBpbXBsZW1lbnRlZCAoYW5kIGFyZSBkb2N1bWVudGVkKS4KKyAgICAgKiBuY3Vyc2VzICBzdXBwb3J0cyAgYWxsICBvZiAgdGhlIGZvciBTVnI0IGN1cnNlcyBmZWF0dXJlcyBpbmNsdWRpbmcKKyAgICAgICBrZXlib2FyZCAgbWFwcGluZywgIGNvbG9yLCAgZm9ybXMtZHJhd2luZyB3aXRoIEFDUyBjaGFyYWN0ZXJzLCBhbmQKKyAgICAgICBhdXRvbWF0aWMgcmVjb2duaXRpb24gb2Yga2V5cGFkIGFuZCBmdW5jdGlvbiBrZXlzLgorICAgICAqIG5jdXJzZXMgIHByb3ZpZGVzICB0aGVzZSBTVnI0IGFkZC1vbiBsaWJyYXJpZXMgKG5vdCBwYXJ0IG9mIFgvT3BlbgorICAgICAgIEN1cnNlcyk6CisgICAgICAgICAgKyB0aGUgIHBhbmVscyAgbGlicmFyeSwgIHN1cHBvcnRpbmcgIGEgIHN0YWNrICBvZiAgd2luZG93cyB3aXRoCisgICAgICAgICAgICBiYWNraW5nIHN0b3JlLgorICAgICAgICAgICsgdGhlICAgbWVudXMgICBsaWJyYXJ5LCAgc3VwcG9ydGluZyAgYSAgdW5pZm9ybSAgYnV0ICBmbGV4aWJsZQorICAgICAgICAgICAgaW50ZXJmYWNlIGZvciBtZW51IHByb2dyYW1taW5nLgorICAgICAgICAgICsgdGhlICAgZm9ybSAgIGxpYnJhcnksICAgc3VwcG9ydGluZyAgZGF0YSAgY29sbGVjdGlvbiAgdGhyb3VnaAorICAgICAgICAgICAgb24tc2NyZWVuIGZvcm1zLgorICAgICAqIG5jdXJzZXMncyAgdGVybWluYWwgZGF0YWJhc2UgaXMgZnVsbHkgY29tcGF0aWJsZSB3aXRoIHRoYXQgdXNlZCBieQorICAgICAgIFNWcjQgY3Vyc2VzLgorICAgICAgICAgICsgbmN1cnNlcyAgc3VwcG9ydHMgdXNlci1kZWZpbmVkIGNhcGFiaWxpdGllcyB3aGljaCBpdCBjYW4gc2VlLAorICAgICAgICAgICAgYnV0ICB3aGljaCBhcmUgaGlkZGVuIGZyb20gU1ZyNCBjdXJzZXMgYXBwbGljYXRpb25zIHVzaW5nIHRoZQorICAgICAgICAgICAgc2FtZSB0ZXJtaW5hbCBkYXRhYmFzZS4KKyAgICAgICAgICArIEl0ICBjYW4gIGJlIG9wdGlvbmFsbHkgY29uZmlndXJlZCB0byBtYXRjaCB0aGUgZm9ybWF0IHVzZWQgaW4KKyAgICAgICAgICAgIHJlbGF0ZWQgc3lzdGVtcyBzdWNoIGFzIEFJWCBhbmQgVHJ1NjQuCisgICAgICAgICAgKyBBbHRlcm5hdGl2ZWx5LCAgbmN1cnNlcyAgY2FuICBiZSAgY29uZmlndXJlZCAgdG8gIHVzZSAgaGFzaGVkCisgICAgICAgICAgICBkYXRhYmFzZXMgIHJhdGhlciAgdGhhbiAgdGhlICBkaXJlY3Rvcnkgb2YgZmlsZXMgdXNlZCBieSBTVnI0CisgICAgICAgICAgICBjdXJzZXMuCisgICAgICogVGhlIG5jdXJzZXMgdXRpbGl0aWVzIGhhdmUgb3B0aW9ucyB0byBhbGxvdyB5b3UgdG8gZmlsdGVyIHRlcm1pbmZvCisgICAgICAgZW50cmllcyBmb3IgdXNlIHdpdGggbGVzcyBjYXBhYmxlIGN1cnNlcy90ZXJtaW5mbyB2ZXJzaW9ucyBzdWNoIGFzCisgICAgICAgdGhlIEhQL1VYIGFuZCBBSVggcG9ydHMuCiAKICAgIFRoZSBuY3Vyc2VzIHBhY2thZ2UgYWxzbyBoYXMgbWFueSB1c2VmdWwgZXh0ZW5zaW9ucyBvdmVyIFNWcjQ6CiAgICAgICogVGhlICBBUEkgIGlzIDgtYml0IGNsZWFuIGFuZCBiYXNlLWxldmVsIGNvbmZvcm1hbnQgd2l0aCB0aGUgWC9PUEVOCkBAIC0yNzQsMTcgKzgzMiwxNiBAQAogICAgICAqIFN1cHBvcnQgIGZvciBtb3VzZSBldmVudCByZXBvcnRpbmcgd2l0aCBYIFdpbmRvdyB4dGVybSBhbmQgRnJlZUJTRAogICAgICAgIGFuZCBPUy8yIGNvbnNvbGUgd2luZG93cy4KICAgICAgKiBFeHRlbmRlZCBtb3VzZSBzdXBwb3J0IHZpYSBBbGVzc2FuZHJvIFJ1YmluaSdzIGdwbSBwYWNrYWdlLgotICAgICAqIFRoZSAgZnVuY3Rpb24gIHdyZXNpemUoKSAgYWxsb3dzIHlvdSB0byByZXNpemUgd2luZG93cywgcHJlc2VydmluZworICAgICAqIFRoZSAgZnVuY3Rpb24gIHdyZXNpemUgIGFsbG93cyAgeW91ICB0byByZXNpemUgd2luZG93cywgcHJlc2VydmluZwogICAgICAgIHRoZWlyIGRhdGEuCi0gICAgICogVGhlIGZ1bmN0aW9uIHVzZV9kZWZhdWx0X2NvbG9ycygpIGFsbG93cyB5b3UgdG8gdXNlIHRoZSB0ZXJtaW5hbCdzCisgICAgICogVGhlICBmdW5jdGlvbiAgdXNlX2RlZmF1bHRfY29sb3JzIGFsbG93cyB5b3UgdG8gdXNlIHRoZSB0ZXJtaW5hbCdzCiAgICAgICAgZGVmYXVsdCBjb2xvcnMgZm9yIHRoZSBkZWZhdWx0IGNvbG9yIHBhaXIsIGFjaGlldmluZyB0aGUgZWZmZWN0IG9mCiAgICAgICAgdHJhbnNwYXJlbnQgY29sb3JzLgotICAgICAqIFRoZSBmdW5jdGlvbnMga2V5b2soKSBhbmQgZGVmaW5lX2tleSgpIGFsbG93IHlvdSB0byBiZXR0ZXIgY29udHJvbAotICAgICAgIHRoZSAgdXNlICBvZiBmdW5jdGlvbiBrZXlzLCBlLmcuLCBkaXNhYmxpbmcgdGhlIG5jdXJzZXMgS0VZX01PVVNFLAotICAgICAgIG9yICBieSAgZGVmaW5pbmcgIG1vcmUgdGhhbiBvbmUgY29udHJvbCBzZXF1ZW5jZSB0byBtYXAgdG8gYSBnaXZlbgotICAgICAgIGtleSBjb2RlLgotICAgICAqIFN1cHBvcnQgIGZvciAgMjU2LWNvbG9yICB0ZXJtaW5hbHMsICBzdWNoICBhcyAgbW9kZXJuICB4dGVybSwgd2hlbgotICAgICAgIGNvbmZpZ3VyZWQgdXNpbmcgdGhlIC0tZW5hYmxlLWV4dC1jb2xvcnMgb3B0aW9uLgorICAgICAqIFRoZSBmdW5jdGlvbnMga2V5b2sgYW5kIGRlZmluZV9rZXkgYWxsb3cgeW91IHRvIGJldHRlciBjb250cm9sIHRoZQorICAgICAgIHVzZSBvZiBmdW5jdGlvbiBrZXlzLCBlLmcuLCBkaXNhYmxpbmcgdGhlIG5jdXJzZXMgS0VZX01PVVNFLCBvciBieQorICAgICAgIGRlZmluaW5nICBtb3JlICB0aGFuICBvbmUgIGNvbnRyb2wgIHNlcXVlbmNlIHRvIG1hcCB0byBhIGdpdmVuIGtleQorICAgICAgIGNvZGUuCisgICAgICogU3VwcG9ydCBmb3IgMjU2LWNvbG9yIHRlcm1pbmFscywgc3VjaCBhcyBtb2Rlcm4geHRlcm0uCiAgICAgICogU3VwcG9ydCBmb3IgMTYtY29sb3IgdGVybWluYWxzLCBzdWNoIGFzIGFpeHRlcm0gYW5kIG1vZGVybiB4dGVybS4KICAgICAgKiBCZXR0ZXIgIGN1cnNvci1tb3ZlbWVudCAgb3B0aW1pemF0aW9uLiAgVGhlIHBhY2thZ2Ugbm93IGZlYXR1cmVzIGEKICAgICAgICBjdXJzb3ItbG9jYWwtbW92ZW1lbnQgY29tcHV0YXRpb24gbW9yZSBlZmZpY2llbnQgdGhhbiBlaXRoZXIgQlNEJ3MKQEAgLTI5Myw3ICs4NTAsNyBAQAogICAgICAgIGluY29ycG9yYXRlcyAgYSBub3ZlbCwgc2ltcGxlLCBhbmQgY2hlYXAgYWxnb3JpdGhtIHRoYXQgZW5hYmxlcyBpdAogICAgICAgIHRvICBtYWtlICBvcHRpbWFsICB1c2UgIG9mIGhhcmR3YXJlIHNjcm9sbGluZywgbGluZS1pbnNlcnRpb24sIGFuZAogICAgICAgIGxpbmUtZGVsZXRpb24gIGZvciAgc2NyZWVuLWxpbmUgIG1vdmVtZW50cy4gVGhpcyBhbGdvcml0aG0gaXMgbW9yZQotICAgICAgIHBvd2VyZnVsIHRoYW4gdGhlIDQuNEJTRCBjdXJzZXMgcXVpY2tjaCgpIHJvdXRpbmUuCisgICAgICAgcG93ZXJmdWwgdGhhbiB0aGUgNC40QlNEIGN1cnNlcyBxdWlja2NoIHJvdXRpbmUuCiAgICAgICogUmVhbCAgc3VwcG9ydCAgZm9yICB0ZXJtaW5hbHMgIHdpdGggIHRoZSAgbWFnaWMtY29va2llIGdsaXRjaC4gVGhlCiAgICAgICAgc2NyZWVuLXVwZGF0ZSAgY29kZSAgd2lsbCAgcmVmcmFpbiBmcm9tIGRyYXdpbmcgYSBoaWdobGlnaHQgaWYgdGhlCiAgICAgICAgbWFnaWMtICAgY29va2llICB1bmF0dHJpYnV0ZWQgIHNwYWNlcyAgcmVxdWlyZWQgIGp1c3QgIGJlZm9yZSAgdGhlCkBAIC0zMDYsMTAgKzg2MywxMCBAQAogICAgICAgIHR5cGVzICBldmVuICB3aGVuICBubyAgdGVybWluZm8gdHJlZSBvciB0ZXJtY2FwIGZpbGUgaXMgYWNjZXNzaWJsZQogICAgICAgICh0aGlzICBtYXkgIGJlIHVzZWZ1bCBmb3Igc3VwcG9ydCBvZiBzY3JlZW4tb3JpZW50ZWQgcHJvZ3JhbXMgdGhhdAogICAgICAgIG11c3QgcnVuIGluIHNpbmdsZS11c2VyIG1vZGUpLgotICAgICAqIFRoZSB0aWMoMSkvY2FwdG9pbmZvIHV0aWxpdHkgcHJvdmlkZWQgd2l0aCBuY3Vyc2VzIGhhcyB0aGUgYWJpbGl0eQotICAgICAgIHRvICB0cmFuc2xhdGUgbWFueSB0ZXJtY2FwcyBmcm9tIHRoZSBYRU5JWCwgSUJNIGFuZCBBVCZUIGV4dGVuc2lvbgotICAgICAgIHNldHMuCi0gICAgICogQSBCU0QtbGlrZSB0c2V0KDEpIHV0aWxpdHkgaXMgcHJvdmlkZWQuCisgICAgICogVGhlICBbODVddGljL1s4Nl1jYXB0b2luZm8gIHV0aWxpdHkgIHByb3ZpZGVkIHdpdGggbmN1cnNlcyBoYXMgdGhlCisgICAgICAgYWJpbGl0eSAgdG8gIHRyYW5zbGF0ZSAgbWFueSB0ZXJtY2FwcyBmcm9tIHRoZSBYRU5JWCwgSUJNIGFuZCBBVCZUCisgICAgICAgZXh0ZW5zaW9uIHNldHMuCisgICAgICogQSBCU0QtbGlrZSBbODdddHNldCB1dGlsaXR5IGlzIHByb3ZpZGVkLgogICAgICAqIFRoZSBuY3Vyc2VzIGxpYnJhcnkgYW5kIHV0aWxpdGllcyB3aWxsIGF1dG9tYXRpY2FsbHkgcmVhZCB0ZXJtaW5mbwogICAgICAgIGVudHJpZXMgIGZyb20gICRIT01FLy50ZXJtaW5mbyAgaWYgIGl0IGV4aXN0cywgYW5kIGNvbXBpbGUgdG8gdGhhdAogICAgICAgIGRpcmVjdG9yeSAgaWYgIGl0ICBleGlzdHMgIGFuZCB0aGUgdXNlciBoYXMgbm8gd3JpdGUgYWNjZXNzIHRvIHRoZQpAQCAtMzI0LDE1MCArODgxLDM0NSBAQAogICAgICAgIG90aGVyIGVudHJpZXMgaW4gdGhlIHNhbWUgc291cmNlIGZpbGUgKGFzIGluIFN5c3RlbSBWKSBidXQgYWxzbyB0bwogICAgICAgIGNvbXBpbGVkICBlbnRyaWVzICBpbiAgZWl0aGVyIHRoZSBzeXN0ZW0gdGVybWluZm8gZGlyZWN0b3J5IG9yIHRoZQogICAgICAgIHVzZXIncyAkSE9NRS8udGVybWluZm8gZGlyZWN0b3J5LgotICAgICAqIEEgIHNjcmlwdCAgKGNhcGNvbnZlcnQpICBpcyAgcHJvdmlkZWQgdG8gaGVscCBCU0QgdXNlcnMgdHJhbnNpdGlvbgotICAgICAgIGZyb20gIHRlcm1jYXAgdG8gdGVybWluZm8uIEl0IGdhdGhlcnMgdGhlIGluZm9ybWF0aW9uIGluIGEgVEVSTUNBUAotICAgICAgIGVudmlyb25tZW50ICB2YXJpYWJsZSAgYW5kL29yICBhIH4vLnRlcm1jYXAgbG9jYWwgZW50cmllcyBmaWxlIGFuZAotICAgICAgIGNvbnZlcnRzICAgaXQgICB0byAgIGFuICAgZXF1aXZhbGVudCAgbG9jYWwgIHRlcm1pbmZvICB0cmVlICB1bmRlcgotICAgICAgICRIT01FLy50ZXJtaW5mby4KLSAgICAgKiBBdXRvbWF0aWMgIGZhbGxiYWNrICB0byAgdGhlICAvZXRjL3Rlcm1jYXAgZmlsZSBjYW4gYmUgY29tcGlsZWQgaW4KLSAgICAgICB3aGVuICBpdCBpcyBub3QgcG9zc2libGUgdG8gYnVpbGQgYSB0ZXJtaW5mbyB0cmVlLiBUaGlzIGZlYXR1cmUgaXMKLSAgICAgICBuZWl0aGVyICBmYXN0ICBub3IgY2hlYXAsIHlvdSBkb24ndCB3YW50IHRvIHVzZSBpdCB1bmxlc3MgeW91IGhhdmUKLSAgICAgICB0bywgYnV0IGl0J3MgdGhlcmUuCi0gICAgICogVGhlICB0YWJsZS1vZi1lbnRyaWVzICB1dGlsaXR5ICB0b2UgbWFrZXMgaXQgZWFzeSBmb3IgdXNlcnMgdG8gc2VlCi0gICAgICAgZXhhY3RseSB3aGF0IHRlcm1pbmFsIHR5cGVzIGFyZSBhdmFpbGFibGUgb24gdGhlIHN5c3RlbS4KKyAgICAgKiBUaGUgIHRhYmxlLW9mLWVudHJpZXMgIHV0aWxpdHkgIFs4OF10b2UgbWFrZXMgaXQgZWFzeSBmb3IgdXNlcnMgdG8KKyAgICAgICBzZWUgZXhhY3RseSB3aGF0IHRlcm1pbmFsIHR5cGVzIGFyZSBhdmFpbGFibGUgb24gdGhlIHN5c3RlbS4KICAgICAgKiBUaGUgbGlicmFyeSBtZWV0cyB0aGUgWFNJIHJlcXVpcmVtZW50IHRoYXQgZXZlcnkgbWFjcm8gZW50cnkgcG9pbnQKICAgICAgICBoYXZlICBhICBjb3JyZXNwb25kaW5nICBmdW5jdGlvbiAgd2hpY2ggbWF5IGJlIGxpbmtlZCAoYW5kIHdpbGwgYmUKICAgICAgICBwcm90b3R5cGUtY2hlY2tlZCkgIGlmICB0aGUgIG1hY3JvICBkZWZpbml0aW9uICBpcyAgZGlzYWJsZWQgIHdpdGgKICAgICAgICAjdW5kZWYuCi0gICAgICogQW4gIEhUTUwgICJJbnRyb2R1Y3Rpb24gIHRvICBQcm9ncmFtbWluZyAgd2l0aCAgTkNVUlNFUyIgIGRvY3VtZW50Ci0gICAgICAgcHJvdmlkZXMgIGEgIG5hcnJhdGl2ZSAgaW50cm9kdWN0aW9uICB0byAgdGhlICBjdXJzZXMgIHByb2dyYW1taW5nCi0gICAgICAgaW50ZXJmYWNlLgorICAgICAqIEV4dGVuc2l2ZSAgIGRvY3VtZW50YXRpb24gIGlzICBwcm92aWRlZCAgKHNlZSAgdGhlICBbODldQWRkaXRpb25hbAorICAgICAgIFJlYWRpbmcgc2VjdGlvbiBvZiB0aGUgWzkwXW5jdXJzZXMgRkFRIGZvciBvbmxpbmUgZG9jdW1lbnRhdGlvbikuCiAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RhdGUgb2YgdGhlIFBhY2thZ2UKK0FwcGxpY2F0aW9ucyB1c2luZyBuY3Vyc2VzCiAKLSAgIE51bWVyb3VzIGJ1Z3MgcHJlc2VudCBpbiBlYXJsaWVyIHZlcnNpb25zIGhhdmUgYmVlbiBmaXhlZDsgdGhlIGxpYnJhcnkKLSAgIGlzICBmYXIgIG1vcmUgIHJlbGlhYmxlICB0aGFuICBpdCAgdXNlZCB0byBiZS4gQm91bmRzIGNoZWNraW5nIGluIG1hbnkKLSAgIGBkYW5nZXJvdXMnICBlbnRyeSBwb2ludHMgaGFzIGJlZW4gaW1wcm92ZWQuIFRoZSBjb2RlIGlzIG5vdyB0eXBlLXNhZmUKLSAgIGFjY29yZGluZyAgdG8gZ2NjIC1XYWxsLiBUaGUgbGlicmFyeSBoYXMgYmVlbiBjaGVja2VkIGZvciBtYWxsb2MgbGVha3MKLSAgIGFuZCBhcmVuYSBjb3JydXB0aW9uIGJ5IHRoZSBQdXJpZnkgbWVtb3J5LWFsbG9jYXRpb24gdGVzdGVyLgorICAgVGhlICBuY3Vyc2VzICBkaXN0cmlidXRpb24gIGluY2x1ZGVzICBhICBzZWxlY3Rpb24gIG9mICB0ZXN0ICBwcm9ncmFtcworICAgKGluY2x1ZGluZyAgIGEgICBmZXcgICBnYW1lcykuICAgVGhlc2UgIGFyZSAgYXZhaWxhYmxlICBzZXBhcmF0ZWx5ICBhcworICAgWzkxXW5jdXJzZXMtZXhhbXBsZXMKIAotICAgVGhlICBuY3Vyc2VzICBjb2RlIGhhcyBiZWVuIHRlc3RlZCB3aXRoIGEgd2lkZSB2YXJpZXR5IG9mIGFwcGxpY2F0aW9ucwotICAgaW5jbHVkaW5nICh2ZXJzaW9ucyBzdGFydGluZyB3aXRoIHRob3NlIG5vdGVkKToKKyAgIFRoZSAgIG5jdXJzZXMgICBsaWJyYXJ5ICBoYXMgIGJlZW4gIHRlc3RlZCAgd2l0aCAgYSAgd2lkZSAgdmFyaWV0eSAgb2YKKyAgIGFwcGxpY2F0aW9ucyBpbmNsdWRpbmc6CiAKICAgIGNkawogICAgICAgICAgIEN1cnNlcyBEZXZlbG9wbWVudCBLaXQKLSAgICAgICAgICBbNF1odHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvY2RrLwotICAgICAgICAgIFs1XWh0dHA6Ly93d3cudmV4dXMuY2EvcHJvZHVjdHMvQ0RLLworCisgICAgICAgICAgWzkyXWh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9jZGsvCiAKICAgIGRlZAogICAgICAgICAgIGRpcmVjdG9yeS1lZGl0b3IKLSAgICAgICAgICBbNl1odHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvZGVkLworCisgICAgICAgICAgWzkzXWh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9kZWQvCiAKICAgIGRpYWxvZwogICAgICAgICAgIHRoZSAgdW5kZXJseWluZyAgYXBwbGljYXRpb24gdXNlZCBpbiBTbGFja3dhcmUncyBzZXR1cCwgYW5kIHRoZQotICAgICAgICAgIGJhc2lzIGZvciBzaW1pbGFyIGFwcGxpY2F0aW9ucyBvbiBHTlUvTGludXguCi0gICAgICAgICAgWzddaHR0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L2RpYWxvZy8KKyAgICAgICAgICBiYXNpcyAgIGZvciAgc2ltaWxhciAgaW5zdGFsbC9jb25maWd1cmUgIGFwcGxpY2F0aW9ucyAgb24gIG1hbnkKKyAgICAgICAgICBzeXN0ZW1zLgorCisgICAgICAgICAgWzk0XWh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9kaWFsb2cvCiAKICAgIGx5bngKLSAgICAgICAgICB0aGUgY2hhcmFjdGVyLXNjcmVlbiBXV1cgYnJvd3NlcgotICAgICAgICAgIFs4XWh0dHA6Ly9seW54LmlzYy5vcmcvcmVsZWFzZS8KKyAgICAgICAgICB0aGUgdGV4dCBXV1cgYnJvd3NlcgorCisgICAgICAgICAgWzk1XWh0dHA6Ly9seW54LmlzYy5vcmcvCiAKICAgIE1pZG5pZ2h0IENvbW1hbmRlcgogICAgICAgICAgIGZpbGUgbWFuYWdlcgotICAgICAgICAgIFs5XWh0dHA6Ly93d3cuaWJpYmxpby5vcmcvbWMvCisKKyAgICAgICAgICBbOTZdaHR0cDovL3d3dy5taWRuaWdodC1jb21tYW5kZXIub3JnLwogCiAgICBtdXR0CiAgICAgICAgICAgbWFpbCB1dGlsaXR5Ci0gICAgICAgICAgWzEwXWh0dHA6Ly93d3cubXV0dC5vcmcvCisKKyAgICAgICAgICBbOTddaHR0cDovL3d3dy5tdXR0Lm9yZy8KIAogICAgbmNmdHAKICAgICAgICAgICBmaWxlLXRyYW5zZmVyIHV0aWxpdHkKLSAgICAgICAgICBbMTFdaHR0cDovL3d3dy5uY2Z0cC5jb20vCisKKyAgICAgICAgICBbOThdaHR0cDovL3d3dy5uY2Z0cC5jb20vCiAKICAgIG52aQotICAgICAgICAgIE5ldyB2aSB2ZXJzaW9ucyAxLjUwIGFyZSBhYmxlIHRvIHVzZSBuY3Vyc2VzIHZlcnNpb25zIDEuOS43IGFuZAotICAgICAgICAgIGxhdGVyLgotICAgICAgICAgIFsxMl1odHRwOi8vd3d3LmJvc3RpYy5jb20vdmkvCisgICAgICAgICAgTmV3IHZpIHVzZXMgbmN1cnNlcy4KIAotICAgcGluZm8KLSAgICAgICAgICBMeW54LWxpa2UgaW5mbyBicm93c2VyLgotICAgICAgICAgIFsxM11odHRwczovL2FsaW90aC5kZWJpYW4ub3JnL3Byb2plY3RzL3BpbmZvLworICAgICAgICAgIFs5OV1odHRwczovL3NpdGVzLmdvb2dsZS5jb20vYS9ib3N0aWMuY29tL2tlaXRoYm9zdGljL252aQogCiAgICB0aW4KLSAgICAgICAgICBuZXdzcmVhZGVyLCBzdXBwb3J0aW5nIGNvbG9yLCBNSU1FIFsxNF1odHRwOi8vd3d3LnRpbi5vcmcvCisgICAgICAgICAgbmV3c3JlYWRlciwgc3VwcG9ydGluZyBjb2xvciwgTUlNRQorCisgICAgICAgICAgWzEwMF1odHRwOi8vd3d3LnRpbi5vcmcvCiAKICAgIGFzIHdlbGwgYXMgc29tZSB0aGF0IHVzZSBuY3Vyc2VzIGZvciB0aGUgdGVybWluZm8gc3VwcG9ydCBhbG9uZToKIAogICAgbWluaWNvbQotICAgICAgICAgIHRlcm1pbmFsIGVtdWxhdG9yCi0gICAgICAgICAgWzE1XWh0dHA6Ly9hbGlvdGguZGViaWFuLm9yZy9wcm9qZWN0cy9taW5pY29tLworICAgICAgICAgIHRlcm1pbmFsIGVtdWxhdG9yIGZvciBzZXJpYWwgbW9kZW0gY29ubmVjdGlvbnMKKworICAgICAgICAgIFsxMDFdaHR0cDovL2FsaW90aC5kZWJpYW4ub3JnL3Byb2plY3RzL21pbmljb20vCisKKyAgIG1vc2gKKyAgICAgICAgICBhIHJlcGxhY2VtZW50IGZvciBzc2guCisKKyAgICAgICAgICBbMTAyXWh0dHBzOi8vbW9zaC5taXQuZWR1LworCisgICB0YWNrCisgICAgICAgICAgdGVybWluZm8gYWN0aW9uIGNoZWNrZXIKKworICAgICAgICAgIFsxMDNdaHR0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L25jdXJzZXMvdGFjay5odG1sCisKKyAgIHRtdXgKKyAgICAgICAgICB0ZXJtaW5hbCBtdWx0aXBsZXhvcgorCisgICAgICAgICAgWzEwNF1odHRwOi8vdG11eC5naXRodWIuaW8vCiAKICAgIHZpbGUKLSAgICAgICAgICB2aS1saWtlLWVtYWNzCi0gICAgICAgICAgWzE2XWh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC92aWxlLworICAgICAgICAgIHZpLWxpa2UtZW1hY3MgIG1heSAgYmUgIGJ1aWx0ICB0byAgdXNlIHRoZSB0ZXJtaW5mbywgdGVybWNhcCBvcgorICAgICAgICAgIGN1cnNlcyBpbnRlcmZhY2VzLgogCi0gICBUaGUgIG5jdXJzZXMgIGRpc3RyaWJ1dGlvbiAgaW5jbHVkZXMgIGEgIHNlbGVjdGlvbiAgb2YgIHRlc3QgIHByb2dyYW1zCi0gICAoaW5jbHVkaW5nIGEgZmV3IGdhbWVzKS4KKyAgICAgICAgICBbMTA1XWh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC92aWxlLwogCi1XaG8ncyBXaG8gYW5kIFdoYXQncyBXaGF0CisgICBhbmQgZmluYWxseSwgdGhvc2Ugd2hpY2ggdXNlIG9ubHkgdGhlIHRlcm1jYXAgaW50ZXJmYWNlOgogCi0gICBaZXlkICBCZW4tSGFsaW0gc3RhcnRlZCBpdCBmcm9tIGEgcHJldmlvdXMgcGFja2FnZSBwY3Vyc2VzLCB3cml0dGVuIGJ5Ci0gICBQYXZlbCAgQ3VydGlzLiAgRXJpYyAgUy4gUmF5bW9uZCBjb250aW51ZWQgZGV2ZWxvcG1lbnQuIEr8cmdlbiBQZmVpZmVyCi0gICB3cm90ZSAgbW9zdCBvZiB0aGUgZm9ybSBhbmQgbWVudSBsaWJyYXJpZXMuIE9uZ29pbmcgd29yayBpcyBiZWluZyBkb25lCi0gICBieSAgWzE3XVRob21hcyAgRGlja2V5LiAgVGhvbWFzICBEaWNrZXkgYWN0cyBhcyB0aGUgbWFpbnRhaW5lciBmb3IgdGhlCi0gICBGcmVlICBTb2Z0d2FyZSAgRm91bmRhdGlvbiwgIHdoaWNoICBob2xkcyAgdGhlICBjb3B5cmlnaHQgIG9uIG5jdXJzZXMuCi0gICBDb250YWN0IHRoZSBjdXJyZW50IG1haW50YWluZXJzIGF0IFsxOF1idWctbmN1cnNlc0BnbnUub3JnLgorICAgZW1hY3MKKyAgICAgICAgICB0ZXh0IGVkaXRvcgogCi0gICBUbyAgIGpvaW4gICB0aGUgICBuY3Vyc2VzICAgbWFpbGluZyAgIGxpc3QsICAgcGxlYXNlICB3cml0ZSAgZW1haWwgIHRvCi0gICBidWctbmN1cnNlcy1yZXF1ZXN0QGdudS5vcmcgY29udGFpbmluZyB0aGUgbGluZToKLSAgICAgICAgICAgICBzdWJzY3JpYmUgPG5hbWU+QDxob3N0LmRvbWFpbj4KKyAgICAgICAgICBbMTA2XWh0dHA6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9lbWFjcy8KKworICAgc2NyZWVuCisgICAgICAgICAgdGVybWluYWwgbXVsdGlwbGV4b3IKKworICAgICAgICAgIFsxMDddaHR0cDovL3d3dy5nbnUub3JnL3NvZnR3YXJlL3NjcmVlbi8KKworICAgdmltCisgICAgICAgICAgdGV4dCBlZGl0b3IKKworICAgICAgICAgIFsxMDhdaHR0cDovL3d3dy52aW0ub3JnLworCitEZXZlbG9wbWVudCBhY3Rpdml0aWVzCisKKyAgIFpleWQgIEJlbi1IYWxpbSAgc3RhcnRlZCAgbmN1cnNlcyAgZnJvbSAgYSAgcHJldmlvdXMgIHBhY2thZ2UgcGN1cnNlcywKKyAgIHdyaXR0ZW4gIGJ5ICBQYXZlbCAgQ3VydGlzLiAgRXJpYyAgUy4gIFJheW1vbmQgIGNvbnRpbnVlZCBkZXZlbG9wbWVudC4KKyAgIEp1ZXJnZW4gIFBmZWlmZXIgIHdyb3RlICBtb3N0ICBvZiB0aGUgZm9ybSBhbmQgbWVudSBsaWJyYXJpZXMuIE9uZ29pbmcKKyAgIGRldmVsb3BtZW50ICB3b3JrICBpcyAgZG9uZSAgYnkgWzEwOV1UaG9tYXMgRGlja2V5LiBUaG9tYXMgRGlja2V5IGFsc28KKyAgIGFjdHMgIGFzICB0aGUgbWFpbnRhaW5lciBmb3IgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2hpY2ggaG9sZHMKKyAgIHRoZSBbMTEwXWNvcHlyaWdodCBvbiBuY3Vyc2VzLgorCisgICBDb250YWN0IHRoZSBjdXJyZW50IG1haW50YWluZXJzIGF0CisKKyAgICAgWzExMV1idWctbmN1cnNlc0BnbnUub3JnCisKKyAgIFRvIGpvaW4gdGhlIG5jdXJzZXMgbWFpbGluZyBsaXN0LCBwbGVhc2Ugd3JpdGUgZW1haWwgdG8KKworICAgICBbMTEyXWJ1Zy1uY3Vyc2VzLXJlcXVlc3RAZ251Lm9yZworCisgICBjb250YWluaW5nIHRoZSBsaW5lOgorCisgICAgIHN1YnNjcmliZSA8bmFtZT5APGhvc3QuZG9tYWluPgogCiAgICBUaGlzIGxpc3QgaXMgb3BlbiB0byBhbnlvbmUgaW50ZXJlc3RlZCBpbiBoZWxwaW5nIHdpdGggdGhlIGRldmVsb3BtZW50CiAgICBhbmQgdGVzdGluZyBvZiB0aGlzIHBhY2thZ2UuCiAKICAgIEJldGEgIHZlcnNpb25zICBvZiBuY3Vyc2VzIGFuZCBwYXRjaGVzIHRvIHRoZSBjdXJyZW50IHJlbGVhc2UgYXJlIG1hZGUKLSAgIGF2YWlsYWJsZSBhdCBbMTldZnRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvbmN1cnNlcy8gLgorICAgYXZhaWxhYmxlIGF0CiAKLUZ1dHVyZSBQbGFucworICAgICBbMTEzXWZ0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L25jdXJzZXMvIC4KIAotICAgICAqIEV4dGVuZGVkLWxldmVsICAgWFBHNCAgIGNvbmZvcm1hbmNlLCAgIHdpdGggICBpbnRlcm5hdGlvbmFsaXphdGlvbgotICAgICAgIHN1cHBvcnQuCi0gICAgICogUG9ydHMgdG8gbW9yZSBzeXN0ZW1zLCBpbmNsdWRpbmcgRE9TIGFuZCBXaW5kb3dzLgorICAgVGhlcmUgaXMgYW4gYXJjaGl2ZSBvZiB0aGUgbWFpbGluZyBsaXN0IGhlcmU6CiAKLSAgIFdlICBuZWVkICBwZW9wbGUgdG8gaGVscCB3aXRoIHRoZXNlIHByb2plY3RzLiBJZiB5b3UgYXJlIGludGVyZXN0ZWQgaW4KLSAgIHdvcmtpbmcgb24gdGhlbSwgcGxlYXNlIGpvaW4gdGhlIG5jdXJzZXMgbGlzdC4KKyAgICAgWzExNF1odHRwOi8vbGlzdHMuZ251Lm9yZy9hcmNoaXZlL2h0bWwvYnVnLW5jdXJzZXMgICAgICAgICAgICAoYWxzbworICAgICBbMTE1XWh0dHBzKQogCi1PdGhlciBSZWxhdGVkIFJlc291cmNlcworUmVsYXRlZCByZXNvdXJjZXMKKworICAgVGhlICByZWxlYXNlIG5vdGVzIG1ha2Ugc2NhdHRlcmVkIHJlZmVyZW5jZXMgdG8gdGhlc2UgcGFnZXMsIHdoaWNoIG1heQorICAgYmUgaW50ZXJlc3RpbmcgYnkgdGhlbXNlbHZlczoKKyAgICAgKiBbMTE2XW1hbjJodG1sCisgICAgICogWzExN11uY3Vyc2VzIGxpY2Vuc2luZworICAgICAqIFsxMThdU3ltYm9sIHZlcnNpb25pbmcgaW4gbmN1cnNlcworICAgICAqIFsxMTldVGhlIE1pbkdXIHBvcnQgb2YgbmN1cnNlcworICAgICAqIFsxMjBddGFjayAtIHRlcm1pbmZvIGFjdGlvbiBjaGVja2VyCisgICAgICogWzEyMV10YXIgdmVyc3VzIHBvcnRhYmlsaXR5CisgICAgICogWzEyMl10Y3Rlc3QgLSB0ZXJtY2FwIGxpYnJhcnkgY2hlY2tlcgorICAgICAqIFsxMjNdVGVybWluYWwgRGF0YWJhc2UKKworT3RoZXIgcmVzb3VyY2VzCiAKICAgIFRoZSAgZGlzdHJpYnV0aW9uICBwcm92aWRlcyAgYSAgbmV3ZXIgIHZlcnNpb24gIG9mIHRoZSB0ZXJtaW5mby1mb3JtYXQKLSAgIHRlcm1pbmFsIGRlc2NyaXB0aW9uIGZpbGUgb25jZSBtYWludGFpbmVkIGJ5IFsyMF1FcmljIFJheW1vbmQgLiBVbmxpa2UKLSAgIHRoZSAgb2xkZXIgIHZlcnNpb24sIHRoZSB0ZXJtY2FwIGFuZCB0ZXJtaW5mbyBkYXRhIGFyZSBwcm92aWRlZCBpbiB0aGUKLSAgIHNhbWUgIGZpbGUsICBhbmQgcHJvdmlkZXMgc2V2ZXJhbCB1c2VyLWRlZmluYWJsZSBleHRlbnNpb25zIGJleW9uZCB0aGUKLSAgIFgvT3BlbiBzcGVjaWZpY2F0aW9uLgorICAgdGVybWluYWwgIGRlc2NyaXB0aW9uICBmaWxlICBvbmNlICBtYWludGFpbmVkICBieSAgWzEyNF1FcmljIFJheW1vbmQgLgorICAgVW5saWtlICB0aGUgIG9sZGVyIHZlcnNpb24sIHRoZSB0ZXJtY2FwIGFuZCB0ZXJtaW5mbyBkYXRhIGFyZSBwcm92aWRlZAorICAgaW4gIHRoZSAgc2FtZSAgZmlsZSwgIGFuZCAgcHJvdmlkZXMgIHNldmVyYWwgdXNlci1kZWZpbmFibGUgZXh0ZW5zaW9ucworICAgYmV5b25kIHRoZSBYL09wZW4gc3BlY2lmaWNhdGlvbi4KIAogICAgWW91ICBjYW4gIGZpbmQgIGxvdHMgIG9mICBpbmZvcm1hdGlvbiAgb24gIHRlcm1pbmFsLXJlbGF0ZWQgdG9waWNzIG5vdAotICAgY292ZXJlZCBpbiB0aGUgdGVybWluZm8gZmlsZSBhdCBbMjFdUmljaGFyZCBTaHVmb3JkJ3MgYXJjaGl2ZSAuCisgICBjb3ZlcmVkIGluIHRoZSB0ZXJtaW5mbyBmaWxlIGF0IFsxMjVdUmljaGFyZCBTaHVmb3JkJ3MgYXJjaGl2ZSAuCisKKyAgICAgKiBbMTI2XU92ZXJ2aWV3CisgICAgICogWzEyN11SZWxlYXNlIE5vdGVzCisgICAgICAgICAgKyBbMTI4XUxpYnJhcnkgaW1wcm92ZW1lbnRzCisgICAgICAgICAgICAgICBvIFsxMjldT3V0cHV0IGJ1ZmZlcmluZworICAgICAgICAgICAgICAgbyBbMTMwXVN5bWJvbCB2ZXJzaW9uaW5nCisgICAgICAgICAgICAgICBvIFsxMzFdTWlzY2VsbGFuZW91cworICAgICAgICAgICsgWzEzMl1Qcm9ncmFtIGltcHJvdmVtZW50cworICAgICAgICAgICAgICAgbyBbMTMzXVV0aWxpdGllcworICAgICAgICAgICAgICAgbyBbMTM0XUV4YW1wbGVzCisgICAgICAgICAgKyBbMTM1XVRlcm1pbmFsIGRhdGFiYXNlCisgICAgICAgICAgKyBbMTM2XURvY3VtZW50YXRpb24KKyAgICAgICAgICArIFsxMzddSW50ZXJlc3RpbmcgYnVnLWZpeGVzCisgICAgICAgICAgKyBbMTM4XUNvbmZpZ3VyYXRpb24gY2hhbmdlcworICAgICAgICAgICAgICAgbyBbMTM5XU1ham9yIGNoYW5nZXMKKyAgICAgICAgICAgICAgIG8gWzE0MF1Db25maWd1cmF0aW9uIG9wdGlvbnMKKyAgICAgICAgICArIFsxNDFdUG9ydGFiaWxpdHkKKyAgICAgICAgICAgICAgIG8gWzE0Ml1NaW5HVworICAgICAgICAgICAgICAgbyBbMTQzXU90aGVyIHBvcnRzCisgICAgICogWzE0NF1GZWF0dXJlcyBvZiBuY3Vyc2VzCisgICAgICogWzE0NV1BcHBsaWNhdGlvbnMgdXNpbmcgbmN1cnNlcworICAgICAqIFsxNDZdRGV2ZWxvcG1lbnQgYWN0aXZpdGllcworICAgICAqIFsxNDddUmVsYXRlZCByZXNvdXJjZXMKKyAgICAgKiBbMTQ4XU90aGVyIHJlc291cmNlcwogCiBSZWZlcmVuY2VzCiAKLSAgIDEuIGZ0cDovL2Z0cC5nbnUub3JnL2dudS9uY3Vyc2VzLwotICAgMi4gZnRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvbmN1cnNlcy8KLSAgIDMuIGh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC94dGVybS94dGVybS5sb2cuaHRtbCN4dGVybV8yMzAKLSAgIDQuIGh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9jZGsvCi0gICA1LiBodHRwOi8vd3d3LnZleHVzLmNhL3Byb2R1Y3RzL0NESy8KLSAgIDYuIGh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9kZWQvCi0gICA3LiBodHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvZGlhbG9nLwotICAgOC4gaHR0cDovL2x5bnguaXNjLm9yZy9yZWxlYXNlLwotICAgOS4gaHR0cDovL3d3dy5pYmlibGlvLm9yZy9tYy8KLSAgMTAuIGh0dHA6Ly93d3cubXV0dC5vcmcvCi0gIDExLiBodHRwOi8vd3d3Lm5jZnRwLmNvbS8KLSAgMTIuIGh0dHA6Ly93d3cuYm9zdGljLmNvbS92aS8KLSAgMTMuIGh0dHBzOi8vYWxpb3RoLmRlYmlhbi5vcmcvcHJvamVjdHMvcGluZm8vCi0gIDE0LiBodHRwOi8vd3d3LnRpbi5vcmcvCi0gIDE1LiBodHRwOi8vYWxpb3RoLmRlYmlhbi5vcmcvcHJvamVjdHMvbWluaWNvbS8KLSAgMTYuIGh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC92aWxlLwotICAxNy4gbWFpbHRvOmRpY2tleUBpbnZpc2libGUtaXNsYW5kLm5ldAotICAxOC4gbWFpbHRvOmJ1Zy1uY3Vyc2VzQGdudS5vcmcKLSAgMTkuIGZ0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L25jdXJzZXMvCi0gIDIwLiBodHRwOi8vd3d3LmNhdGIub3JnL35lc3IvdGVybWluZm8vCi0gIDIxLiBodHRwOi8vd3d3LmNzLnV0ay5lZHUvfnNodWZvcmQvdGVybWluYWxfaW5kZXguaHRtbAorICAgMS4gaHR0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L25jdXJzZXMvbWFuL2NhcHRvaW5mby4xbS5odG1sCisgICAyLiBodHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvbmN1cnNlcy9tYW4vY2xlYXIuMS5odG1sCisgICAzLiBodHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvbmN1cnNlcy9tYW4vaW5mb2NtcC4xbS5odG1sCisgICA0LiBodHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvbmN1cnNlcy9tYW4vdGFicy4xLmh0bWwKKyAgIDUuIGh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9uY3Vyc2VzL21hbi90aWMuMW0uaHRtbAorICAgNi4gaHR0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L25jdXJzZXMvbWFuL3RvZS4xbS5odG1sCisgICA3LiBodHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvbmN1cnNlcy9tYW4vdHB1dC4xLmh0bWwKKyAgIDguIGh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9uY3Vyc2VzL21hbi90c2V0LjEuaHRtbAorICAgOS4gZnRwOi8vZnRwLmdudS5vcmcvZ251L25jdXJzZXMvCisgIDEwLiBmdHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9uY3Vyc2VzLworICAxMS4gaHR0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L25jdXJzZXMvdGN0ZXN0Lmh0bWwKKyAgMTIuIGh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9uY3Vyc2VzL25jdXJzZXMtZXhhbXBsZXMuaHRtbAorICAxMy4gaHR0cDovL2xpc3RzLmdudS5vcmcvYXJjaGl2ZS9odG1sL2J1Zy1uY3Vyc2VzLzIwMTItMDcvbXNnMDAwMjkuaHRtbAorICAxNC4gaHR0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L25jdXJzZXMvTkVXUy5odG1sI3QyMDA1MDEwMQorICAxNS4gaHR0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L25jdXJzZXMvYW5ub3VuY2UtNS41Lmh0bWwKKyAgMTYuIGh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9uY3Vyc2VzL25jdXJzZXMtbWFwc3ltcy5odG1sCisgIDE3LiBodHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvbmN1cnNlcy9tYW4vY3Vyc19pbml0c2NyLjN4Lmh0bWwjaDMtaW5pdHNjcgorICAxOC4gaHR0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L25jdXJzZXMvbWFuL2N1cnNfaW5pdHNjci4zeC5odG1sI2gzLW5ld3Rlcm0KKyAgMTkuIGh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9uY3Vyc2VzL21hbi9jdXJzX3Rlcm1pbmZvLjN4Lmh0bWwjaDMtSW5pdGlhbGl6YXRpb24KKyAgMjAuIGh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9uY3Vyc2VzL21hbi9uY3Vyc2VzLjN4Lmh0bWwjaDMtTkNVUlNFU19OT19TRVRCVUYKKyAgMjEuIGh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9uY3Vyc2VzL21hbi9jdXJzX3Rlcm1pbmZvLjN4Lmh0bWwKKyAgMjIuIGh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9uY3Vyc2VzL21hbi9jdXJzX2tlcm5lbC4zeC5odG1sI2gzLXJlc2V0X3Byb2dfbW9kZV8tcmVzZXRfc2hlbGxfbW9kZQorICAyMy4gaHR0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L25jdXJzZXMvbWFuL2N1cnNfa2VybmVsLjN4Lmh0bWwjaDMtcmVzZXRfcHJvZ19tb2RlXy1yZXNldF9zaGVsbF9tb2RlCisgIDI0LiBodHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvbmN1cnNlcy9tYW4vY3Vyc19wcmludHcuM3guaHRtbAorICAyNS4gaHR0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L25jdXJzZXMvbmN1cnNlcy1tYXBzeW1zLmh0bWwKKyAgMjYuIGh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9uY3Vyc2VzL3RhY2suaHRtbAorICAyNy4gaHR0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L25jdXJzZXMvbWFuL2N1cnNfdXRpbC4zeC5odG1sI2gzLXVzZV90aW9jdGwKKyAgMjguIGh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9uY3Vyc2VzL21hbi9jdXJzX29wYXF1ZS4zeC5odG1sCisgIDI5LiBodHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvbmN1cnNlcy9tYW4vY3Vyc19hdHRyLjN4Lmh0bWwjaDItUE9SVEFCSUxJVFkKKyAgMzAuIGh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9uY3Vyc2VzL21hbi9mb3JtX2ZpZWxkX29wdHMuM3guaHRtbAorICAzMS4gaHR0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L25jdXJzZXMvbWFuL2N1cnNfdXRpbC4zeC5odG1sI2gzLXB1dHdpbl9nZXR3aW4KKyAgMzIuIGh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9uY3Vyc2VzL21hbi9jdXJzX3V0aWwuM3guaHRtbCNoMy1wdXR3aW5fZ2V0d2luCisgIDMzLiBodHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvbmN1cnNlcy9tYW4vY3Vyc190ZXJtaW5mby4zeC5odG1sI2gzLUZvcm1hdHRpbmctT3V0cHV0CisgIDM0LiBodHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvbmN1cnNlcy90Y3Rlc3QuaHRtbAorICAzNS4gaHR0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L25jdXJzZXMvdGN0ZXN0Lmh0bWwjbXktYmV0dGVyLXRyYW5zbGF0aW9uCisgIDM2LiBodHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvbmN1cnNlcy9ORVdTLmh0bWwjdDk4MDEwMworICAzNy4gaHR0cHM6Ly9zdm53ZWIuZnJlZWJzZC5vcmcvYmFzZS9oZWFkL2xpYi9saWJjL2dlbi9nZXRjYXAuYz9yZXZpc2lvbj0yNDQwOTImdmlldz1tYXJrdXAjbDc4NAorICAzOC4gaHR0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L25jdXJzZXMvbmN1cnNlcy1leGFtcGxlcy5odG1sCisgIDM5LiBodHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvbmN1cnNlcy9tYW4vY3Vyc191dGlsLjN4Lmh0bWwjaDMtdXNlX2VudgorICA0MC4gaHR0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L25jdXJzZXMvbWFuL2N1cnNfd2luZG93LjN4Lmh0bWwjaDMtZGVyd2luCisgIDQxLiBodHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvbmN1cnNlcy9tYW4vY3Vyc193aW5kb3cuM3guaHRtbCNoMy1tdndpbgorICA0Mi4gaHR0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L25jdXJzZXMvbWFuL2Zvcm1fZHJpdmVyLjN4Lmh0bWwjaDMtZm9ybV9kcml2ZXJfdworICA0My4gaHR0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L25jdXJzZXMvdGVybWluZm8uc3JjLmh0bWwjdG9jLV9NX0xfVF9FX1JfTQorICA0NC4gaHR0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L25jdXJzZXMvdGVybWluZm8uc3JjLmh0bWwjdGljLW5zdGVybQorICA0NS4gaHR0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L25jdXJzZXMvdGVybWluZm8uc3JjLmh0bWwjdGljLXB1dHR5LXNjbworICA0Ni4gaHR0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L25jdXJzZXMvdGVybWluZm8uc3JjLmh0bWwjdGljLXRla2VuCisgIDQ3LiBodHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvbmN1cnNlcy90ZXJtaW5mby5zcmMuaHRtbCN0b2MtX1RfRV9SX01fSV9OX0FfVF9PX1IKKyAgNDguIGh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9uY3Vyc2VzL3Rlcm1pbmZvLnNyYy5odG1sI3RvYy1fVF9FX1JfTV9JX05fT19MX09fR19ZCisgIDQ5LiBodHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvbmN1cnNlcy90ZXJtaW5mby5zcmMuaHRtbCN0aWMtdG11eAorICA1MC4gaHR0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L25jdXJzZXMvdGVybWluZm8uc3JjLmh0bWwjdG9jLV9TX0lfTV9QX0xfRV9UX0VfUl9NCisgIDUxLiBodHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvbmN1cnNlcy90ZXJtaW5mby5zcmMuaHRtbCN0aWMtdnRlCisgIDUyLiBodHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvbmN1cnNlcy90ZXJtaW5mby5zcmMuaHRtbCN0aWMtdnQ1MjBhbnNpCisgIDUzLiBodHRwOi8vYWVyaWUuamV4aXVtLWlzbGFuZC5uZXQvbmN1cnNlcy9tYW4vY2xlYXIuMS5odG1sCisgIDU0LiBodHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvbmN1cnNlcy90ZXJtaW5mby5zcmMuaHRtbCN0aWMteHRlcm1fc2wKKyAgNTUuIGh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9uY3Vyc2VzL3Rlcm1pbmZvLnNyYy5odG1sI3RpYy14dGVybS0xMDA1CisgIDU2LiBodHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvbmN1cnNlcy90ZXJtaW5mby5zcmMuaHRtbCN0aWMteHRlcm0tMTAwNgorICA1Ny4gaHR0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L25jdXJzZXMvTkVXUy5odG1sCisgIDU4LiBodHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvc2NyaXB0cy9tYW4yaHRtbC5odG1sCisgIDU5LiBodHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvbmN1cnNlcy9OQ1VSU0VTLVByb2dyYW1taW5nLUhPV1RPLmh0bWwKKyAgNjAuIGh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9uY3Vyc2VzL05FV1MuaHRtbCN0MjAxMTAzMTkKKyAgNjEuIGh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9uY3Vyc2VzL05FV1MuaHRtbCN0MjAwMjEyMjEKKyAgNjIuIGh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9uY3Vyc2VzL21hbi9jdXJzX2NvbG9yLjN4Lmh0bWwjaDMtUm91dGluZS1EZXNjcmlwdGlvbnMKKyAgNjMuIGh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9uY3Vyc2VzL21hbi9kZWZhdWx0X2NvbG9ycy4zeC5odG1sCisgIDY0LiBodHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvbmN1cnNlcy9tYW4vY3Vyc19jb2xvci4zeC5odG1sI2gzLVJvdXRpbmUtRGVzY3JpcHRpb25zCisgIDY1LiBodHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvbmN1cnNlcy9tYW4vcmVzaXpldGVybS4zeC5odG1sCisgIDY2LiBodHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvbmN1cnNlcy9ORVdTLmh0bWwjdDk4MDcyNQorICA2Ny4gaHR0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L25jdXJzZXMvTkVXUy5odG1sI3Q5NjA0MTgKKyAgNjguIGh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9uY3Vyc2VzL05FV1MuaHRtbCN0OTcwNDA1CisgIDY5LiBodHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvbmN1cnNlcy9tYW4vY3Vyc19pbml0c2NyLjN4Lmh0bWwjaDMtc2V0X3Rlcm0KKyAgNzAuIGh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9uY3Vyc2VzL21hbi9jdXJzX2luaXRzY3IuM3guaHRtbCNoMy1kZWxzY3JlZW4KKyAgNzEuIGh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9uY3Vyc2VzL21hbi9jdXJzX3Rlcm1pbmZvLjN4Lmh0bWwjaDMtRm9ybWF0dGluZy1PdXRwdXQKKyAgNzIuIGh0dHA6Ly9kb2NzLm9yYWNsZS5jb20vY2QvRTE5MjUzLTAxL2h0bWwvODE3LTA1NTIvZmhrcHkuaHRtbAorICA3My4gaHR0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L25jdXJzZXMvYW5ub3VuY2UtNS45Lmh0bWwKKyAgNzQuIGh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9uY3Vyc2VzL2Fubm91bmNlLTUuOC5odG1sCisgIDc1LiBodHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvbmN1cnNlcy9uY3Vyc2VzLWV4YW1wbGVzLmh0bWwKKyAgNzYuIGh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9uY3Vyc2VzL21hbi9jdXJzX2JlZXAuM3guaHRtbAorICA3Ny4gaHR0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L25jdXJzZXMvbWFuL2N1cnNfYmVlcC4zeC5odG1sCisgIDc4LiBodHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvbmN1cnNlcy9tYW4vY3Vyc19rZXJuZWwuM3guaHRtbCNoMy1jdXJzX3NldAorICA3OS4gaHR0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L25jdXJzZXMvbWFuL25jdXJzZXMuM3guaHRtbCNoMy1OQ1VSU0VTX0NPTlNPTEUyCisgIDgwLiBodHRwOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzIwODc3Njg5L2djYy00LTgtMS1taW5nZ3ctZC1vcHRpb24tZG9lcy1ub3Qtd29yay1hcy11c3VhbAorICA4MS4gaHR0cDovL2xpbnV4LmRpZS5uZXQvbWFuLzEvcGtnLWNvbmZpZworICA4Mi4gaHR0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L25jdXJzZXMvTkVXUy5odG1sI3QyMDAyMTIwNgorICA4My4gaHR0cHM6Ly9nY2MuZ251Lm9yZy9nY2MtNS8KKyAgODQuIGh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9hdXRvY29uZi9wb3J0YWJpbGl0eS10ZXN0Lmh0bWwKKyAgODUuIGh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9uY3Vyc2VzL21hbi90aWMuMW0uaHRtbAorICA4Ni4gaHR0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L25jdXJzZXMvbWFuL2NhcHRvaW5mby4xbS5odG1sCisgIDg3LiBodHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvbmN1cnNlcy9tYW4vdHNldC4xLmh0bWwKKyAgODguIGh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9uY3Vyc2VzL21hbi90b2UuMW0uaHRtbAorICA4OS4gaHR0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L25jdXJzZXMvbmN1cnNlcy5mYXEuaHRtbCNhZGRpdGlvbmFsX3JlYWRpbmcKKyAgOTAuIGh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9uY3Vyc2VzL25jdXJzZXMuZmFxLmh0bWwKKyAgOTEuIGh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9uY3Vyc2VzL25jdXJzZXMtZXhhbXBsZXMuaHRtbAorICA5Mi4gaHR0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L2Nkay8KKyAgOTMuIGh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9kZWQvCisgIDk0LiBodHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvZGlhbG9nLworICA5NS4gaHR0cDovL2x5bnguaXNjLm9yZy8KKyAgOTYuIGh0dHA6Ly93d3cubWlkbmlnaHQtY29tbWFuZGVyLm9yZy8KKyAgOTcuIGh0dHA6Ly93d3cubXV0dC5vcmcvCisgIDk4LiBodHRwOi8vd3d3Lm5jZnRwLmNvbS8KKyAgOTkuIGh0dHBzOi8vc2l0ZXMuZ29vZ2xlLmNvbS9hL2Jvc3RpYy5jb20va2VpdGhib3N0aWMvbnZpCisgMTAwLiBodHRwOi8vd3d3LnRpbi5vcmcvCisgMTAxLiBodHRwOi8vYWxpb3RoLmRlYmlhbi5vcmcvcHJvamVjdHMvbWluaWNvbS8KKyAxMDIuIGh0dHBzOi8vbW9zaC5taXQuZWR1LworIDEwMy4gaHR0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L25jdXJzZXMvdGFjay5odG1sCisgMTA0LiBodHRwOi8vdG11eC5naXRodWIuaW8vCisgMTA1LiBodHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvdmlsZS8KKyAxMDYuIGh0dHA6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9lbWFjcy8KKyAxMDcuIGh0dHA6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9zY3JlZW4vCisgMTA4LiBodHRwOi8vd3d3LnZpbS5vcmcvCisgMTA5LiBtYWlsdG86ZGlja2V5QGludmlzaWJsZS1pc2xhbmQubmV0CisgMTEwLiBodHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvbmN1cnNlcy9uY3Vyc2VzLWxpY2Vuc2UuaHRtbAorIDExMS4gbWFpbHRvOmJ1Zy1uY3Vyc2VzQGdudS5vcmcKKyAxMTIuIG1haWx0bzpidWctbmN1cnNlcy1yZXF1ZXN0QGdudS5vcmcKKyAxMTMuIGZ0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L25jdXJzZXMvCisgMTE0LiBodHRwOi8vbGlzdHMuZ251Lm9yZy9hcmNoaXZlL2h0bWwvYnVnLW5jdXJzZXMKKyAxMTUuIGh0dHBzOi8vbGlzdHMuZ251Lm9yZy9hcmNoaXZlL2h0bWwvYnVnLW5jdXJzZXMKKyAxMTYuIGh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9zY3JpcHRzL21hbjJodG1sLmh0bWwKKyAxMTcuIGh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldGh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9uY3Vyc2VzL25jdXJzZXMtbGljZW5zZS5odG1sCisgMTE4LiBodHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvbmN1cnNlcy9uY3Vyc2VzLW1hcHN5bXMuaHRtbAorIDExOS4gaHR0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L25jdXJzZXMvbmN1cnNlcy1taW5ndy5odG1sCisgMTIwLiBodHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvbmN1cnNlcy90YWNrLmh0bWwKKyAxMjEuIGh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9hdXRvY29uZi9wb3J0YWJpbGl0eS10YXIuaHRtbAorIDEyMi4gaHR0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L25jdXJzZXMvdGN0ZXN0Lmh0bWwKKyAxMjMuIGh0dHA6Ly9pbnZpc2libGUtaXNsYW5kLm5ldC9uY3Vyc2VzL25jdXJzZXMuaHRtbCNkb3dubG9hZF9kYXRhYmFzZQorIDEyNC4gaHR0cDovL3d3dy5jYXRiLm9yZy9+ZXNyL3Rlcm1pbmZvLworIDEyNS4gaHR0cDovL3dlYi5hcmNoaXZlLm9yZy93ZWIvKi9odHRwOi8vd3d3LmNzLnV0ay5lZHUvfnNodWZvcmQvdGVybWluYWwKKyAxMjYuIGZpbGU6Ly8vdXNyL2J1aWxkL25jdXJzZXMvbmN1cnNlcy02LjAtMjAxNTA4MDgvZG9jL2h0bWwvYW5ub3VuY2UuaHRtbCNoMi1vdmVydmlldworIDEyNy4gZmlsZTovLy91c3IvYnVpbGQvbmN1cnNlcy9uY3Vyc2VzLTYuMC0yMDE1MDgwOC9kb2MvaHRtbC9hbm5vdW5jZS5odG1sI2gyLXJlbGVhc2Utbm90ZXMKKyAxMjguIGZpbGU6Ly8vdXNyL2J1aWxkL25jdXJzZXMvbmN1cnNlcy02LjAtMjAxNTA4MDgvZG9jL2h0bWwvYW5ub3VuY2UuaHRtbCNoMy1saWJyYXJ5CisgMTI5LiBmaWxlOi8vL3Vzci9idWlsZC9uY3Vyc2VzL25jdXJzZXMtNi4wLTIwMTUwODA4L2RvYy9odG1sL2Fubm91bmNlLmh0bWwjaDMtbGliLXNldGJ1ZgorIDEzMC4gZmlsZTovLy91c3IvYnVpbGQvbmN1cnNlcy9uY3Vyc2VzLTYuMC0yMDE1MDgwOC9kb2MvaHRtbC9hbm5vdW5jZS5odG1sI2gzLWxpYi12ZXJzaW9uaW5nCisgMTMxLiBmaWxlOi8vL3Vzci9idWlsZC9uY3Vyc2VzL25jdXJzZXMtNi4wLTIwMTUwODA4L2RvYy9odG1sL2Fubm91bmNlLmh0bWwjaDMtbGliLW90aGVyCisgMTMyLiBmaWxlOi8vL3Vzci9idWlsZC9uY3Vyc2VzL25jdXJzZXMtNi4wLTIwMTUwODA4L2RvYy9odG1sL2Fubm91bmNlLmh0bWwjaDMtcHJvZ3JhbXMKKyAxMzMuIGZpbGU6Ly8vdXNyL2J1aWxkL25jdXJzZXMvbmN1cnNlcy02LjAtMjAxNTA4MDgvZG9jL2h0bWwvYW5ub3VuY2UuaHRtbCNoNC11dGlsaXRpZXMKKyAxMzQuIGZpbGU6Ly8vdXNyL2J1aWxkL25jdXJzZXMvbmN1cnNlcy02LjAtMjAxNTA4MDgvZG9jL2h0bWwvYW5ub3VuY2UuaHRtbCNoNC1leGFtcGxlcworIDEzNS4gZmlsZTovLy91c3IvYnVpbGQvbmN1cnNlcy9uY3Vyc2VzLTYuMC0yMDE1MDgwOC9kb2MvaHRtbC9hbm5vdW5jZS5odG1sI2gzLWRhdGFiYXNlCisgMTM2LiBmaWxlOi8vL3Vzci9idWlsZC9uY3Vyc2VzL25jdXJzZXMtNi4wLTIwMTUwODA4L2RvYy9odG1sL2Fubm91bmNlLmh0bWwjaDMtZG9jdW1lbnRhdGlvbgorIDEzNy4gZmlsZTovLy91c3IvYnVpbGQvbmN1cnNlcy9uY3Vyc2VzLTYuMC0yMDE1MDgwOC9kb2MvaHRtbC9hbm5vdW5jZS5odG1sI2gzLWJ1Zy1maXhlcworIDEzOC4gZmlsZTovLy91c3IvYnVpbGQvbmN1cnNlcy9uY3Vyc2VzLTYuMC0yMDE1MDgwOC9kb2MvaHRtbC9hbm5vdW5jZS5odG1sI2gzLWNvbmZpZy1jb25maWcKKyAxMzkuIGZpbGU6Ly8vdXNyL2J1aWxkL25jdXJzZXMvbmN1cnNlcy02LjAtMjAxNTA4MDgvZG9jL2h0bWwvYW5ub3VuY2UuaHRtbCNoNC1jb25maWctbWFqb3IKKyAxNDAuIGZpbGU6Ly8vdXNyL2J1aWxkL25jdXJzZXMvbmN1cnNlcy02LjAtMjAxNTA4MDgvZG9jL2h0bWwvYW5ub3VuY2UuaHRtbCNoNC1jb25maWctb3B0aW9ucworIDE0MS4gZmlsZTovLy91c3IvYnVpbGQvbmN1cnNlcy9uY3Vyc2VzLTYuMC0yMDE1MDgwOC9kb2MvaHRtbC9hbm5vdW5jZS5odG1sI2gzLXBvcnRhYmlsaXR5CisgMTQyLiBmaWxlOi8vL3Vzci9idWlsZC9uY3Vyc2VzL25jdXJzZXMtNi4wLTIwMTUwODA4L2RvYy9odG1sL2Fubm91bmNlLmh0bWwjaDQtcG9ydC1taW5ndworIDE0My4gZmlsZTovLy91c3IvYnVpbGQvbmN1cnNlcy9uY3Vyc2VzLTYuMC0yMDE1MDgwOC9kb2MvaHRtbC9hbm5vdW5jZS5odG1sI2g0LXBvcnQtc3lzdGVtcworIDE0NC4gZmlsZTovLy91c3IvYnVpbGQvbmN1cnNlcy9uY3Vyc2VzLTYuMC0yMDE1MDgwOC9kb2MvaHRtbC9hbm5vdW5jZS5odG1sI2gyLWZlYXR1cmVzCisgMTQ1LiBmaWxlOi8vL3Vzci9idWlsZC9uY3Vyc2VzL25jdXJzZXMtNi4wLTIwMTUwODA4L2RvYy9odG1sL2Fubm91bmNlLmh0bWwjaDItd2hvLXVzZXMKKyAxNDYuIGZpbGU6Ly8vdXNyL2J1aWxkL25jdXJzZXMvbmN1cnNlcy02LjAtMjAxNTA4MDgvZG9jL2h0bWwvYW5ub3VuY2UuaHRtbCNoMi1kZXZlbG9wbWVudAorIDE0Ny4gZmlsZTovLy91c3IvYnVpbGQvbmN1cnNlcy9uY3Vyc2VzLTYuMC0yMDE1MDgwOC9kb2MvaHRtbC9hbm5vdW5jZS5odG1sI2gyLXRoaXMtc3R1ZmYKKyAxNDguIGZpbGU6Ly8vdXNyL2J1aWxkL25jdXJzZXMvbmN1cnNlcy02LjAtMjAxNTA4MDgvZG9jL2h0bWwvYW5ub3VuY2UuaHRtbCNoMi1vdGhlci1zdHVmZgo=