LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKQ2hhbmdlczogVjUuMC42IC0+IFY1LjAuNwoKMjAwMy0wMS0xMSAwMToxNSAgcnN0b3J5CgogICAqIC5jdnNpZ25vcmU6CgogICBpZ25vcmUgY29uZmlndXJlLXN1bW1hcnkKICAgCjIwMDMtMDEtMTEgMDE6MTQgIHJzdG9yeQoKICAgKiBhZ2VudC9NYWtlZmlsZS5kZXBlbmQsIGFnZW50L2hlbHBlcnMvTWFrZWZpbGUuZGVwZW5kCiwgYWdlbnQvbWliZ3JvdXAvTWFrZWZpbGUuZGVwZW5kLCBhcHBzL01ha2VmaWxlLmRlcGVuZAosIGFwcHMvc25tcG5ldHN0YXQvTWFrZWZpbGUuZGVwZW5kLAogICBzbm1wbGliL01ha2VmaWxlLmRlcGVuZDoKCiAgIG1ha2UgZGVwZW5kCiAgIAoyMDAzLTAxLTExIDAxOjA4ICByc3RvcnkKCiAgICogLmN2c2lnbm9yZToKCiAgIGlnbm9yZSB2YXJpYXRpb25zIG9mIGNoYW5nZWxvZy5hZGQKICAgCjIwMDMtMDEtMTAgMjA6MDkgIGhhcmRha2VyCgogICAqIHNubXBsaWIvOiBtaWIuYywgc25tcF9hcGkuYzoKCiAgIGRveHlnZW4gb3V0cHV0IHRhZ3MgdG8gcHV0IHRoZSByZWNlbnRseSBkZWZpbmVkIGZ1bmN0aW9ucyBpbnRvIGdyb3Vwcy4KICAgCjIwMDMtMDEtMTAgMjA6MDkgIGhhcmRha2VyCgogICAqIG1hbi86IE1ha2VmaWxlLmluLCBuZXRzbm1wX2FnZW50LjMsCiAgIG5ldHNubXBfYnVsa190b19uZXh0LjMsIG5ldHNubXBfZGVidWcuMywKICAgbmV0c25tcF9oYW5kbGVyLjMsIG5ldHNubXBfaW5zdGFuY2UuMywKICAgbmV0c25tcF9saWJyYXJ5LjMsIG5ldHNubXBfbWliX3V0aWxpdGllcy4zLAogICBuZXRzbm1wX21vZGVfZW5kX2NhbGwuMywgbmV0c25tcF9tdWx0aXBsZXhlci4zLAogICBuZXRzbm1wX29sZF9hcGkuMywgbmV0c25tcF9yZWFkX29ubHkuMywKICAgbmV0c25tcF9zY2FsYXIuMywgbmV0c25tcF9zZXJpYWxpemUuMywgbmV0c25tcF90YWJsZS4zCiwgbmV0c25tcF90YWJsZV9hcnJheS4zLCBuZXRzbm1wX3RhYmxlX2RhdGEuMywKICAgbmV0c25tcF90YWJsZV9kYXRhc2V0LjMsIG5ldHNubXBfdGFibGVfaXRlcmF0b3IuMywKICAgbmV0c25tcF90b2RvLjMsIG5ldHNubXBfd2F0Y2hlci4zOgoKICAgZG94eWdlbiB1cGRhdGVzCiAgIAoyMDAzLTAxLTEwIDE3OjM4ICBoYXJkYWtlcgoKICAgKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbjoKCiAgIG9wcHMKICAgCjIwMDMtMDEtMTAgMTc6MjkgIGhhcmRha2VyCgogICAqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluOgoKICAgcmVtb3ZlIGRvdWJsZSBjaGVja2luZyBvdXRwdXQKICAgCjIwMDMtMDEtMTAgMTQ6MzMgIGhhcmRha2VyCgogICAqIHRlc3RpbmcvdGVzdHMvVDAxNjBzbm1wdjJjYnVsa2dldDoKCiAgIGZpeCBwb3NpdGlvbmFsIGFyZ3VtZW50cwogICAKMjAwMy0wMS0xMCAwOTowNCAgZHRzMTIKCiAgICogRkFROgoKICAgUmVmZXJlbmNlIEJydWNlIFNoYXcncyBkaXNjdXNzaW9uIG9mIHRoZSBwZXJsIGNvbXBpbGF0aW9uIHByb2JsZW1zCiAgIChzZWUgUkVBRE1FLnNvbGFyaXMpCiAgIAoyMDAzLTAxLTEwIDA4OjMxICBkdHMxMgoKICAgKiBGQVE6CgogICBNZW50aW9uIEFnZW50WCB1bmRlciB3aW5kb3dzLCBhbmQgYmVlZiB1cCB0aGUgcGVybCBzdHVmZiBhIGJpdC4KICAgQWRkIGEgbWlzc2luZyBlbnRyeSBpbiB0aGUgY29udGVudHMgbGlzdC4KICAgKFRoaXMgbWF5IHByb3ZlIHRvbyBsYXRlIGZvciA1LjAuOCwgYnV0IGF0IGxlYXN0IGl0J2xsIGJlIHJlYWR5IGZvciBuZXh0IHRpbWUhKQogICAKMjAwMy0wMS0wOSAxODo0MSAgaGFyZGFrZXIKCiAgICogbWFuL01ha2VmaWxlLmluOgoKICAgbWFrZSBkb2MgdXBkYXRlLgogICAKMjAwMy0wMS0wOSAxODozOCAgaGFyZGFrZXIKCiAgICogbWFuLzogbmV0c25tcF9hZ2VudC4zLCBuZXRzbm1wX2J1bGtfdG9fbmV4dC4zLAogICBuZXRzbm1wX2RlYnVnLjMsIG5ldHNubXBfaGFuZGxlci4zLCBuZXRzbm1wX2luc3RhbmNlLjMKLCBuZXRzbm1wX21vZGVfZW5kX2NhbGwuMywgbmV0c25tcF9tdWx0aXBsZXhlci4zLAogICBuZXRzbm1wX29sZF9hcGkuMywgbmV0c25tcF9yZWFkX29ubHkuMywKICAgbmV0c25tcF9zY2FsYXIuMywgbmV0c25tcF9zZXJpYWxpemUuMywgbmV0c25tcF90YWJsZS4zCiwgbmV0c25tcF90YWJsZV9hcnJheS4zLCBuZXRzbm1wX3RhYmxlX2RhdGEuMywKICAgbmV0c25tcF90YWJsZV9kYXRhc2V0LjMsIG5ldHNubXBfdGFibGVfaXRlcmF0b3IuMywKICAgbmV0c25tcF90b2RvLjMsIG5ldHNubXBfd2F0Y2hlci4zOgoKICAgbWFrZSBkb2MgdXBkYXRlLgogICAKMjAwMy0wMS0wOSAxODozNyAgaGFyZGFrZXIKCiAgICogYWdlbnQvaGVscGVycy9NYWtlZmlsZS5pbiwgYWdlbnQvaGVscGVycy9tb2RlX2VuZF9jYWxsLmMKLCBpbmNsdWRlL25ldC1zbm1wL2FnZW50L2FsbF9oZWxwZXJzLmgsCiAgIGluY2x1ZGUvbmV0LXNubXAvYWdlbnQvbW9kZV9lbmRfY2FsbC5oOgoKICAgZW5kLW9mLW1vZGUgaGVscGVyIHRvIGNhbGwgbW9yZSBoYW5kbGVycyBhZnRlciBwcm9jZXNzaW5nIHRoZSBtYWluCiAgIGxpbmUuICBGdW5jdGlvbmFsbHkgYWxsb3dzIHBhcmFsbGVsIGhhbmRsZXIgdHJlZXMgYW5kIGNhbGxiYWNrcyBhZnRlcgogICBhIHBhcnRpY3VsYXIgbW9kZSBpcyBjb21wbGV0ZWQgKHVzZWZ1bCBmb3IgdGhpbmdzIHJlZ2lzdGVyZWQgdW5kZXIgYQogICBzZXJpYWxpemUgaGFuZGxlciB3aGVuIHlvdSBkb24ndCBrbm93IHdoZW4gdGhlIG1vZGUgaXMgb3ZlcikuCiAgICAgIChub3QgdXNlZCBhbnl3aGVyZSBpbiBwcm9kdWN0aW9uIGNvZGUgeWV0LikuCiAgIAoyMDAzLTAxLTA5IDExOjU1ICBkdHMxMgoKICAgKiBGQVE6CgogICBNZW50aW9uIHRoZSBwZXJsIHNoYXJlZC9zdGF0aWMgbGlicmFyeSBwcm9ibGVtLAogICB0aGUgdW5yZXNwb25zaXZlIGFnZW50IHByb2JsZW0gKGFuZCBmaXgpLCBhbmQKICAgZGlzY2xhaW0gYWxsIGtub3dsZWRnZSBvZiBEYXZpZCBUb3duJ3MgTmV0OjpTTk1QIG1vZHVsZSwKICAgCjIwMDMtMDEtMDkgMTA6MjcgIGhhcmRha2VyCgogICAqIHRlc3RpbmcvdGVzdHMvOiBUMDE2MHNubXB2MmNidWxrZ2V0LCBUMDIyMHNubXB2M2J1bGtnZXQKOgoKICAgR2V0QnVsayB0ZXN0aW5nIHN1cHBsaWVkIGJ5IFhpYW9mZW5nIExpbmcKICAgCjIwMDMtMDEtMDkgMTA6MjYgIGhhcmRha2VyCgogICAqIHRlc3RpbmcvUlVOVEVTVFM6CgogICBBZGQgLXggZmxhZyBmb3IgY2FsbGluZyBzdWJ0ZXN0cyB3aXRoICJzaCAteCIuCiAgIEZpeCBudW1iZXIgY291bnRpbmcgZm9yIGludGVyYWN0aXZlIG91dHB1dC4KICAgCjIwMDMtMDEtMDcgMTg6NDkgIGhhcmRha2VyCgogICAqIENPUFlJTkcgKFY0LTItcGF0Y2hlcy44KSwgQ09QWUlORzoKCiAgIHllYXIgdXBkYXRlCiAgIAoyMDAzLTAxLTA3IDEzOjE4ICBoYXJkYWtlcgoKICAgKiBGQVEgKFY0LTItcGF0Y2hlcy41OCksIEZBUToKCiAgIGlyYyBzZXJ2ZXIgbmFtZSBjaGFuZ2UKICAgCjIwMDMtMDEtMDcgMTE6MDEgIGhhcmRha2VyCgogICAqIHNubXBsaWIvbWliLmM6CgogICBidWcgIzY2MzYyOCBhbmQgcGF0Y2g6IGZpeCBpcCBhZGRyZXNzIGluZGV4IHBhcnNpbmcgZnJvbSBPSURzCiAgIAoyMDAzLTAxLTA3IDA0OjUzICBkdHMxMgoKICAgKiBhZ2VudC9oZWxwZXJzL3RhYmxlX2l0ZXJhdG9yLmM6CgogICBSZW1vdmUgcmVkdW5kYW50IGNvZGUgdG8gZnJlZSAnY2FsbGJhY2tfZGF0YV9rZWVwJyBkYXRhLgogICBUaGlzIGJyYW5jaCB3b3VsZCBuZXZlciBiZSBpbnZva2VkLCBhbmQgaXMgaW4gdGhlIHdyb25nCiAgIHBsYWNlIGFueXdheS4gIFBhdGNoIHN1cHBsaWVkIGJ5IEpheSBQYXJsYXIKICAgCjIwMDMtMDEtMDYgMTE6MTYgIG5iYQoKICAgKiBNYWtlZmlsZS5pbjoKCiAgIEluc3RhbGwgU29sYXJpcyA5IGhlYWRlcgogICAKMjAwMy0wMS0wNSAxODoxNCAgbmJhCgogICAqIHdpbjMyL3dpbjMyLm9wdDoKCiAgIE1ha2UgaXQgY29tcGlsZSB3aXRoIFZDKysKICAgCjIwMDMtMDEtMDUgMTc6MjggIG5iYQoKICAgKiB3aW4zMi86IGVuY29kZV9rZXljaGFuZ2UvZW5jb2RlX2tleWNoYW5nZS5kc3AsIHdpbjMyLm9wdAosIGxpYnNubXBfZGxsL2xpYnNubXAuZGVmOgoKICAgTWFrZSBpdCBjb21waWxlIHdpdGggVkMrKwogICAKMjAwMy0wMS0wNSAxNTo0NSAgbmJhCgogICAqIG1pYnMvOiBNYWtlZmlsZS5taWIsIFNOTVAtRlJBTUVXT1JLLU1JQi50eHQsCiAgIFNOTVAtTVBELU1JQi50eHQsIFNOTVAtTk9USUZJQ0FUSU9OLU1JQi50eHQsCiAgIFNOTVAtUFJPWFktTUlCLnR4dCwgU05NUC1UQVJHRVQtTUlCLnR4dCwKICAgU05NUC1VU0VSLUJBU0VELVNNLU1JQi50eHQsIFNOTVAtVklFVy1CQVNFRC1BQ00tTUlCLnR4dAosIFNOTVB2Mi1NSUIudHh0LCBTTk1QdjItVE0udHh0LCByZmNsaXN0OgoKICAgVXBkYXRlIHRvIGN1cnJlbnQgUkZDIHZlcnNpb25zCiAgIAoyMDAzLTAxLTAzIDE1OjUwICByc3RvcnkKCiAgICogY29uZmlndXJlLCBjb25maWd1cmUuaW46CgogICBkb24ndCBjYWxsIEFDX0RJU0FCTEVfU0hBUkVELCBhcyBzZXRzIHRoZSBkZWZhdWx0IHRvIGRpc2FibGVkIChpdCdzIHZlcnkKICAgcHJlc2VuY2UgaW4gY29uZmlndXJlLmluIGdlbmVyYXRlcyBhIGNvbmZpZ3VyZSB3aXRoIHNoYXJlZCBkaXNhYmxlZCwgZXZlbgogICBpZiBpdCB3YXMgaW4gYW4gaWYgYmxvY2s7IGZvciBkZXZlbG9wZXIgZGVmYXVsdCwgc2V0IGVuYWJsZV9zaGFyZWQgZGlyZWN0bHkKICAgdW5sZXNzIGl0IHdhcyBwcmV2aW91c2x5IHNldDsgdGVzdCB0aGF0IGVuYWJsZV9zaGFyZWQ9eWVzIGZvciBlbWJlZGRlZC1wZXJsCiAgIAoyMDAzLTAxLTAzIDA4OjAyICBkdHMxMgoKICAgKiBGQVEgKFY0LTItcGF0Y2hlcy41NyksIEZBUToKCiAgIE1lbnRpb24gdGhlIFN0cmF0dXMgVk9TIHBvcnQuIChUaGFua3MgdG8gQnJhbmRvbiBIYWxsKQogICAKMjAwMy0wMS0wMiAxODowMCAgcnN0b3J5CgogICAqIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaDoKCiAgIHBhcmVucyBhcm91bmQgeCBpbiBtYWNybyBpbiBjYXNlIHggaXMgbXVsdGlwbGUgQyB0b2tlbnMKICAgCjIwMDItMTItMjIgMTI6MzIgIHJzdG9yeQoKICAgKiBzZWRzY3JpcHQuaW4sIHNubXBsaWIvc25tcF92ZXJzaW9uLmMsIEZBUSwKICAgUkVBRE1FLCBwZXJsL1NOTVAvU05NUC5wbToKCiAgIC0gKHNubXBsaWIvc25tcF92ZXJzaW9uLmMgc2Vkc2NyaXB0LmluKTogdmVyc2lvbiB0YWcgKCA1LjAuNy5wcmUyICkKICAgCjIwMDItMTItMjIgMTI6MzEgIHJzdG9yeQoKICAgKiBDaGFuZ2VMb2csIE5FV1M6CgogICB1cGRhdGUgZm9yIDUuMC43LnByZTIKICAgCjIwMDItMTItMjIgMTI6MjAgIHJzdG9yeQoKICAgKiBhZ2VudC9NYWtlZmlsZS5kZXBlbmQsIGFnZW50L2hlbHBlcnMvTWFrZWZpbGUuZGVwZW5kCiwgYWdlbnQvbWliZ3JvdXAvTWFrZWZpbGUuZGVwZW5kLCBhcHBzL01ha2VmaWxlLmRlcGVuZAosIGFwcHMvc25tcG5ldHN0YXQvTWFrZWZpbGUuZGVwZW5kLAogICBzbm1wbGliL01ha2VmaWxlLmRlcGVuZDoKCiAgIG1ha2UgZGVwZW5kCiAgIAoyMDAyLTEyLTIwIDA3OjU4ICBuYmEKCiAgICogTWFrZWZpbGUuaW46CgogICBjbGVhbiBhd2F5IG5ldC1zbm1wLWNvbmZpZyBvbiBtYWtlIGNsZWFuCiAgIAoyMDAyLTEyLTIwIDA3OjU3ICBuYmEKCiAgICogaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgsCiAgIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaCwgc25tcGxpYi9vaWRfc3Rhc2guYwo6CgogICBzdGFzaCB0aGUgb2lkX3N0YXNoIC4uLgogICAKMjAwMi0xMi0yMCAwNDo0OSAgbmJhCgogICAqIHNubXBsaWIvc25tcF9hcGkuYzoKCiAgIEEgcGF0Y2ggZnJvbSBWNCB0aGF0IGRpZG4ndCBtYWtlIGl0IC4uLiBhbGxvdyBsaXN0IG9mIG51bWVyaWMgYml0cyBzZXR0aW5nIEJJVFMKICAgCjIwMDItMTItMjAgMDI6NTAgIGhhcmRha2VyCgogICAqIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaCwgc25tcGxpYi9vaWRfc3Rhc2guYwo6CgogICBhZGQgYSBnbG9iYWwgY2FsbGJhY2sgZnVuY3Rpb24gZm9yIHJlZ2lzdGVyaW5nIGRpcmVjdGx5IHZpYSBhIGNhbGxiYWNrLgogICAKMjAwMi0xMi0yMCAwMjozNSAgaGFyZGFrZXIKCiAgICogaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaDoKCiAgIGFkZCBjYWxsYmFjay5oCiAgIAoyMDAyLTEyLTIwIDAyOjIyICBoYXJkYWtlcgoKICAgKiBzbm1wbGliL3JlYWRfY29uZmlnLmM6CgogICBmaXggcGVyc2lzdGVudCBzdG9yYWdlIGZpbGUgcmVuYW1pbmcuICAoc25wcmludGYgY2hhbmdlIG1pc3Rha2UpCiAgIAoyMDAyLTEyLTIwIDAyOjIxICBoYXJkYWtlcgoKICAgKiBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgsIHNubXBsaWIvb2lkX3N0YXNoLmMKOgoKICAgc29tZSBuZXcgcm91dGluZXMgZm9yIHNhdmluZyBvaWQgc3Rhc2ggZGF0YSB0byBwZXJzaXN0ZW50IHN0b3JhZ2UuCiAgICAgKG5vdCB1c2VkIGFueXdoZXJlIGluIGN1cnJlbnQgcHJvZHVjdGlvbiBjb2RlKQogICAKMjAwMi0xMi0xOSAxNzo1MSAgaGFyZGFrZXIKCiAgICogcGVybC9TTk1QL1NOTVAueHM6CgogICAtIHdhdGNoIGZvciB1bmRlZnMgcGFzc2VkIGluIGFzIGEgdmFsdWUgdG8gYSBTRVQgY2xhdXNlLgogICAtIGNoYW5nZSBCSVRTIHRvIGEgT2N0ZXQgU3RyaW5nIGFzIGl0IHNob3VsZCBiZS4KICAgICAtIG9uIGEgc2lkZSBub3RlLCBkbyB5b3Uga25vdyB0aGF0IHRoZSBOZXQtU05NUCBwYXJzZXIgZG9lc24ndAogICAgICAgZGlzdGluZ3Vpc2ggYmV0d2VlbiBCSVRTIGFuZCBCSVQgU1RSSU5HIGluIGl0J3MgbGlzdCBvZiB0eXBlcz8gIEkKICAgICAgIGRvbid0IHRoaW5rIGl0J3MgcG9zc2libGUgdG8gdXNlIGJvdGggdHlwZXMgaW4gdGhlIGNvZGUgdG9kYXkKICAgICAgICh3aGljaCBpcyBmaW5lLCBzaW5jZSBCSVQgU1RSSU5HIGlzIG5vdCB1c2VkIGluIFNOTVB2MiBhbmQgYmV5b25kKS4KICAgCjIwMDItMTItMTkgMTc6NDkgIGhhcmRha2VyCgogICAqIHBlcmwvT0lEL09JRC54czoKCiAgIHByaW50IGEgd2FybmluZyB3aGVuIHlvdSBjYW4ndCBwYXJzZSBhbiBPSUQgKGVyciwgbm90IGlkZWFsKQogICAKMjAwMi0xMi0xOSAxNzo0OCAgaGFyZGFrZXIKCiAgICogcGVybC9BbnlEYXRhX1NOTVAvU3RvcmFnZS5wbToKCiAgIC0gbWlzYyBidWcgZml4ZXMuCiAgIC0gc2tpcCBTRVRpbmcgY29sdW1ucyB3aXRoIG5vIHZhbHVlIHBhc3NlZCBpbi4KICAgCjIwMDItMTItMTkgMTQ6NDMgIG5iYQoKICAgKiBhZ2VudC9taWJncm91cC86IGV4YW1wbGVzL2V4YW1wbGUuYywgaG9zdC9ocl9uZXR3b3JrLmMKLCBob3N0L2hyX3N3aW5zdC5jOgoKICAgQmVpbmcgYSBiaXQgcXVpY2ssIGVoLCBEYXZlIC4uLgogICAKMjAwMi0xMi0xOSAxMToxNCAgZHRzMTIKCiAgICogYWdlbnQvbWliZ3JvdXAvbWliSUkvOiBhdC5jIChWNC0yLXBhdGNoZXMuMTIpLCBhdC5jOgoKICAgRW5zdXJlIHRoZSBpZm5hbWUgYnVmZmVyIGlzIGJpZyBlbm91Z2ggdG8gcmVhZCBpbiBhIGZ1bGwtbGVuZ3RoIG5hbWUuCiAgIChGcm9tIHRoZSBTVVNFICJhdWRpdCIgcGF0Y2gpCiAgIAoyMDAyLTEyLTE5IDExOjA1ICBkdHMxMgoKICAgKiBhZ2VudC9zbm1wZC5jLCBhZ2VudC9taWJncm91cC9ob3N0L2hyX3ByaW50LmMsCiAgIGFwcHMvZW5jb2RlX2tleWNoYW5nZS5jLCBhcHBzL3NubXB0cmFwZF9oYW5kbGVycy5jLCBzbm1wbGliL21pYi5jCiAgIChWNC0yLXBhdGNoZXMuWzI4LDksMywzLDMwXSksIGFnZW50L3NubXBkLmMsCiAgIGFnZW50L21pYmdyb3VwL2hvc3QvaHJfcHJpbnQuYywgYXBwcy9lbmNvZGVfa2V5Y2hhbmdlLmMKLCBhcHBzL3NubXB0cmFwZF9oYW5kbGVycy5jLCBzbm1wbGliL21pYi5jOgoKICAgRGV0ZWN0IHdoZW4gbWVtb3J5IGFsbG9jYXRpb25zIGZhaWwsIGFuZCBkb24ndCBwbG91Z2ggb24gcmVnYXJkbGVzcy4KICAgKEJhc2VkIG9uIGNoYW5nZXMgd2l0aGluIHRoZSBTVVNFICJhdWRpdCIgcGF0Y2gpCiAgIAoyMDAyLTEyLTE5IDEwOjA3ICBkdHMxMgoKICAgKiBhZ2VudC9hZ2VudF90cmFwLmMsIGFnZW50L3NubXBfYWdlbnQuYywKICAgYWdlbnQvbWliZ3JvdXAvdXRpbF9mdW5jcy5jLAogICBhZ2VudC9taWJncm91cC9leGFtcGxlcy9leGFtcGxlLmMsCiAgIGFnZW50L21pYmdyb3VwL2V4YW1wbGVzL3VjZERlbW9QdWJsaWMuYywKICAgYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9kZXZpY2UuYywKICAgYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9kaXNrLmMsCiAgIGFnZW50L21pYmdyb3VwL2hvc3QvaHJfZmlsZXN5cy5jLAogICBhZ2VudC9taWJncm91cC9ob3N0L2hyX25ldHdvcmsuYywKICAgYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9zdG9yYWdlLmMsCiAgIGFnZW50L21pYmdyb3VwL2hvc3QvaHJfc3dpbnN0LmMsCiAgIGFnZW50L21pYmdyb3VwL2hvc3QvaHJfc3dydW4uYywKICAgYWdlbnQvbWliZ3JvdXAvbWliSUkvaW50ZXJmYWNlcy5jLAogICBhZ2VudC9taWJncm91cC9taWJJSS9tdGFfc2VuZG1haWwuYywKICAgYWdlbnQvbWliZ3JvdXAvbWliSUkvc3lzdGVtX21pYi5jLAogICBhZ2VudC9taWJncm91cC9taWJJSS92YWNtX3ZhcnMuYywKICAgYWdlbnQvbWliZ3JvdXAvbWliSUkvdmFyX3JvdXRlLmMsCiAgIGFnZW50L21pYmdyb3VwL3RhcmdldC9zbm1wVGFyZ2V0QWRkckVudHJ5LmMsCiAgIGFnZW50L21pYmdyb3VwL3RhcmdldC9zbm1wVGFyZ2V0UGFyYW1zRW50cnkuYywKICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZGlzay5jLAogICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9kbG1vZC5jLAogICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9lcnJvcm1pYi5jLAogICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9leHRlbnNpYmxlLmMsCiAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Bhc3MuYywKICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvcGFzc19wZXJzaXN0LmMsCiAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Byb2MuYywgYXBwcy9lbmNvZGVfa2V5Y2hhbmdlLmMKLCBhcHBzL3NubXB0cmFwZC5jLCBhcHBzL3NubXB0cmFwZF9oYW5kbGVycy5jLAogICBhcHBzL3NubXBuZXRzdGF0L2luZXQuYywgYXBwcy9zbm1wbmV0c3RhdC9pbmV0Ni5jLAogICBzbm1wbGliL2FzbjEuYywgc25tcGxpYi9taWIuYywgc25tcGxpYi9wYXJzZS5jLAogICBzbm1wbGliL3JlYWRfY29uZmlnLmMsIHNubXBsaWIvc25tcF9hcGkuYywKICAgc25tcGxpYi9zbm1wdjMuYywgc25tcGxpYi92YWNtLmM6CgogICBUaGUgR3JlYXQgU1VTRSAnc3ByaW50ZicgSHVudC4uLi4uCiAgIAoyMDAyLTEyLTE5IDA2OjAyICBqYnBuCgogICAqIGluY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmguaW46CgogICAgIC0gY29kZSB3aXRoIEJTRGk0CiAgIAoyMDAyLTEyLTE5IDA1OjUwICBqYnBuCgogICAqIHNubXBsaWIvc25tcF9hcGkuYzoKCiAgICAgLSBjaGFuZ2UgYSBjb21tZW50IHRoYXQgZG9lc24ndCB0YWtlIGludG8gYWNjb3VudCB0aGUgdHJhbnNwb3J0IHN0dWZmCiAgICAgLSBmaXggc29tZSBwYXJ0aWN1bGFybHkgYmFkIGZvcm1hdHRpbmcgaW4gc25tcF9vcGVuX2V4CiAgIAoyMDAyLTEyLTE4IDEzOjUwICBoYXJkYWtlcgoKICAgKiBhZ2VudC9taWJncm91cC9hZ2VudC9uc01vZHVsZVRhYmxlLmM6CgogICByZW1vdmUgbWVtLWxlYWsgY29tbWVudC4gIE91dCBvZiBkYXRlIGFuZCB3YXMgZml4ZWQKICAgCjIwMDItMTItMTggMTM6NDcgIGhhcmRha2VyCgogICAqIGFnZW50L21pYmdyb3VwL2FnZW50eC9hZ2VudHhfY29uZmlnLmMsIG1hbi9zbm1wZC5jb25mLjUuZGVmCjoKCiAgIGRlbGV0ZSBleHBlcmltZW50YWwgd2FybmluZyBhYm91dCBhZ2VudHgKICAgCjIwMDItMTItMTggMTM6NDAgIGhhcmRha2VyCgogICAqIG1pYnMvVUNELVNOTVAtTUlCLnR4dDoKCiAgIGZpeCBidWcjNjU1NDg4OiBkZXNjcmlwdGlvbnMgb2Ygc3NJT1Jhd1JlY2VpdmVkIGFuZCBzc1Jhd0ludGVycnVwdHMgd2VyZSByZXZlcnNlZAogICAKMjAwMi0xMi0xOCAwODoxOSAgamJwbgoKICAgKiBhZ2VudC9zbm1wZC5jOgoKICAgICAtIHJlc3RhcnQgc3RkZXJyIGxvZ2dpbmcgb24gSFVQIChpZiAtTCB3YXMgZ2l2ZW4gb24gY29tbWFuZCBsaW5lKQogICAKMjAwMi0xMi0xNyAxOTozMyAgcnN0b3J5CgogICAqIGxvY2FsL21pYjJjLmFycmF5LXVzZXIuY29uZjoKCiAgIHJlbW92ZSAnOycgZnJvbSBkZWZpbmU7IGlmIHRhYmxlIGhhcyBhIHN0b3JhZ2UgdHlwZSwgY2hlY2sgdGhhdCBpdCdzIG5vdAogICByZWFkIG9ubHkgYmVmb3JlIGFsbG93aW5nIHNldHMKICAgCjIwMDItMTItMTcgMTk6MjYgIHJzdG9yeQoKICAgKiBsb2NhbC9taWIyYy5hcnJheS1wZXJzaXN0ZW50LmNvbmY6CgogICBuZXZlciBtaW5kCiAgIAoyMDAyLTEyLTE3IDE5OjAyICBoYXJkYWtlcgoKICAgKiBwZXJsL09JRC90ZXN0LnBsOgoKICAgRG9uJ3QgY2hlY2sgZm9yIHByZWZpeGVzIGluIHRlc3QuICBUaGV5IGRvbid0IGV4aXN0LiAgSG93ZXZlciwgZG8gc2V0IFNOTVBDT05GUEFUSCBpbiB0ZXN0IGluaXRpYWxpemF0aW9uIHRvIGEgYm9ndXMgdmFsdWUKICAgCjIwMDItMTItMTcgMTg6NTggIGhhcmRha2VyCgogICAqIHBlcmwvT0lEL09JRC54czoKCiAgIHJlbW92ZSBkaXJlY3QgY2FsbCB0byBpbml0X3NubXAoKS4gIFRoaXMgaXMgYWxyZWFkeSBjYWxsZWQgYnkgdGhlIC5wbSBmaWxlCiAgIAoyMDAyLTEyLTE3IDEwOjIyICByc3RvcnkKCiAgICogbG9jYWwvbWliMmMuYXJyYXktcGVyc2lzdGVudC5jb25mOgoKICAgcGVyc2lzdGVuY2UgZm9yIGFycmF5LXRhYmxlcwogICAKMjAwMi0xMi0xNyAxMDowNyAgcnN0b3J5CgogICAqIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oLAogICBzbm1wbGliL3JlYWRfY29uZmlnLmM6CgogICBhZGQgcmVhZF9jb25maWdfc3RvcmVfZGF0YV9wcmVmaXg7IGFkZCBBU05fVElNRVRJQ0tTIHcvQVNOX1VOU0lHTkVEIGNhc2VzCiAgIAoyMDAyLTEyLTE3IDA5OjQ0ICByc3RvcnkKCiAgICogc25tcGxpYi9zbm1wVURQRG9tYWluLmM6CgogICBkb24ndCB1c2UgU09fUkVVU0VfQUREUiBzbyBhZ2VudCBwb3J0IGNhbid0IGJlIGhpamFja2VkCiAgIAoyMDAyLTEyLTE3IDA5OjQzICByc3RvcnkKCiAgICogbmV0LXNubXAtY29uZmlnLmluOgoKICAgdXNlIGxvY2FsIHZhciBmb3IgYmFzZSBhZ2VudCBsaWJzOyByZW9yZGVyIGJhc2UgYWdlbnQgbGlicyBzbyBzdGF0aWMgbGlua2luZwogICB3b3JrcwogICAKMjAwMi0xMi0xNiAxODozMiAgbmJhCgogICAqIHNubXBsaWIvc2NhcGkuYywgYWdlbnQvbWliZ3JvdXAvbWliSUkvbXRhX3NlbmRtYWlsLmMsCiAgIGFnZW50L21pYmdyb3VwL21pYklJL210YV9zZW5kbWFpbC5oOgoKICAgWWV0IGFub3RoZXIgY29tcGlsZXIgd2FybmluZyAuLi4KICAgCjIwMDItMTItMTYgMTc6NTAgIGhhcmRha2VyCgogICAqIGxvY2FsL21pYjJjLml0ZXJhdGUuY29uZjoKCiAgIHJlbW92ZSBib2d1cyBjb21tZW50IHJlZmVyZW5jZSB0byB0YWJsZV9kYXRhc2V0IGhlbHBlci4KICAgCjIwMDItMTItMTYgMTc6NDIgIG5iYQoKICAgKiBhZ2VudC9taWJncm91cC9kaXNtYW4vbXRlRXZlbnROb3RpZmljYXRpb25UYWJsZS5jLAogICBhZ2VudC9taWJncm91cC9kaXNtYW4vbXRlRXZlbnRUYWJsZS5jLAogICBhZ2VudC9taWJncm91cC9kaXNtYW4vbXRlRXZlbnRUYWJsZS5oLAogICBhZ2VudC9taWJncm91cC9kaXNtYW4vbXRlVHJpZ2dlclRhYmxlLmMsCiAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9tdGVUcmlnZ2VyVGFibGUuaCwgYXBwcy9zbm1wdHJhcGQuYwosIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oLCBzbm1wbGliL3Rvb2xzLmMKOgoKICAgU3ByZWFkIHNvbWUgbWFnaWMgZHVzdCB0byBxdWVsbCBjb21waWxlciB3YXJuaW5ncyAod2h5IGlzbid0IC0tZW5hYmxlLXNsaWVudC1saWJ0b29sIHRoZSBkZWZhdWx0IC4uLikKICAgCjIwMDItMTItMTYgMTE6NDQgIGpicG4KCiAgICogYWdlbnQvbWliZ3JvdXAvYWdlbnR4L21hc3Rlci5jOgoKICAgICAtIGZpeCBzbWFsbCBtZW1vcnkgbGVhayAocGVlcm5hbWUgaXMgY29waWVkIGJ5IHNubXBfb3Blbl9leCkKICAgCjIwMDItMTItMTYgMTE6MzEgIGpicG4KCiAgICogc25tcGxpYi9taWIuYzoKCiAgICAgLSBmaXggc21hbGwgbWVtb3J5IGxlYWsKICAgCjIwMDItMTItMTYgMTE6MTkgIGpicG4KCiAgICogc25tcGxpYi9wYXJzZS5jOgoKICAgICAtIGZpeCBtZW1vcnkgbGVhawogICAKMjAwMi0xMi0xNiAxMDowMiAgcnN0b3J5CgogICAqIHNubXBsaWIvY29udGFpbmVyLmM6CgogICByZW1vdmUgcmVkdW5kYW50IGluY2x1ZGUgKGNhdXNlZCBwcm9ibGVtcyBvbiBTdW4gNS43LCByZXBvcnRlZCBieSBqYnBuKQogICAKMjAwMi0xMi0xNiAwODoyMiAgcnN0b3J5CgogICAqIGRpc3QvbnNiLWZ1bmN0aW9uczoKCiAgIGNvbmZpZ3VyZSB3L291dCBkZXZlbG9wZXIKICAgCjIwMDItMTItMTYgMDg6MTggIHJzdG9yeQoKICAgKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbjoKCiAgIERFVkZMQUdTPSIiIGlmIG5vdCBkZXZlbG9wZXIKICAgCjIwMDItMTItMTYgMDI6MzkgIG5iYQoKICAgKiBzbm1wbGliLzogb2lkX3N0YXNoLmMsIHNjYXBpLmMsIHNubXBBQUw1UFZDRG9tYWluLmMKLCBzbm1wSVBYRG9tYWluLmMsIHNubXBUQ1BJUHY2RG9tYWluLmMsCiAgIHNubXBVRFBJUHY2RG9tYWluLmM6CgogICBkbWFsbG9jIHN1cHBvcnQKICAgCjIwMDItMTItMTYgMDI6MzkgIG5iYQoKICAgKiBhZ2VudC9taWJncm91cC9taWJJSS9pcEFkZHIuYzoKCiAgIFBvc3NpYmxlIGxlYWsgb2YgZmQgb24gZXJyb3IgcmV0dXJuCiAgIAoyMDAyLTEyLTE0IDEwOjIyICByc3RvcnkKCiAgICogRkFRLCBSRUFETUUsIHNlZHNjcmlwdC5pbiwgcGVybC9TTk1QL1NOTVAucG0KLCBzbm1wbGliL3NubXBfdmVyc2lvbi5jOgoKICAgLSAoc25tcGxpYi9zbm1wX3ZlcnNpb24uYyBzZWRzY3JpcHQuaW4pOiB2ZXJzaW9uIHRhZyAoIDUuMC43LnByZTEgKQogICAKMjAwMi0xMi0xNCAxMDoyMSAgcnN0b3J5CgogICAqIENoYW5nZUxvZywgTkVXUzoKCiAgIHVwZGF0ZSBmb3IgNS4wLjcucHJlMQogICAKCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgpDaGFuZ2VzOiBWNS4wLjYgLT4gVjUuMC43cHJlMQoKMjAwMi0xMi0xNCAwOTo1OSAgcnN0b3J5CgogICAqIGRpc3QvbnNiLWZ1bmN0aW9uczoKCiAgIGNoZWNrIGZvciBhZ2VudC9taWJncm91cDsgZml4IG1vZHVsZXMgZm9yIGNvbmZpZ19kaXN0CiAgIAoyMDAyLTEyLTE0IDA5OjU4ICByc3RvcnkKCiAgICogbWFuLzogbmV0c25tcF9idWxrX3RvX25leHQuMywgbmV0c25tcF9kZWJ1Zy4zLAogICBuZXRzbm1wX2hhbmRsZXIuMywgbmV0c25tcF9vbGRfYXBpLjMsCiAgIG5ldHNubXBfcmVhZF9vbmx5LjMsIG5ldHNubXBfc2VyaWFsaXplLjMsCiAgIG5ldHNubXBfdGFibGUuMywgbmV0c25tcF90YWJsZV9hcnJheS4zLAogICBuZXRzbm1wX3RhYmxlX2RhdGEuMywgbmV0c25tcF90YWJsZV9kYXRhc2V0LjMsCiAgIG5ldHNubXBfdG9kby4zOgoKICAgdXBkYXRlIGZvciA1LjAuNy5wcmUxCiAgIAoyMDAyLTEyLTE0IDA5OjU0ICByc3RvcnkKCiAgICogTWFrZWZpbGUudG9wOgoKICAgYnVtcCByZXYgdG8gNS4wLjcKICAgCjIwMDItMTItMTQgMDk6NDkgIHJzdG9yeQoKICAgKiBNYWtlZmlsZS5pbjoKCiAgIGFkZCAtbiB0byBncmVwIGZvciBDKysgY29tbWVudHMKICAgCjIwMDItMTItMTQgMDk6NDcgIHJzdG9yeQoKICAgKiBhZ2VudC9NYWtlZmlsZS5kZXBlbmQsIGFnZW50L2hlbHBlcnMvTWFrZWZpbGUuZGVwZW5kLAogICBhZ2VudC9taWJncm91cC9NYWtlZmlsZS5kZXBlbmQsCiAgIGFwcHMvc25tcG5ldHN0YXQvTWFrZWZpbGUuZGVwZW5kLCBhcHBzL01ha2VmaWxlLmRlcGVuZCwKICAgc25tcGxpYi9NYWtlZmlsZS5kZXBlbmQ6CgogICBtYWtlIGRlcGVuZAogICAKMjAwMi0xMi0xNCAwOTo0NSAgcnN0b3J5CgogICAqIGFnZW50L21pYmdyb3VwL21pYklJL2lwQWRkci5jOgoKICAgcmVtb3ZlIEMrKyBjb21tZW50cwogICAKMjAwMi0xMi0xNCAwOTozMCAgcnN0b3J5CgogICAqIGluY2x1ZGUvbmV0LXNubXAvYWdlbnQvc25tcF9hZ2VudC5oOgoKICAgYWRkIGNvbW1lbnRzIHRvIHNvbWUgc3RydWN0dXJlIG1lbWJlcnMKICAgCjIwMDItMTItMTQgMDk6MjkgIHJzdG9yeQoKICAgKiBhZ2VudC9oZWxwZXJzL3RhYmxlX2FycmF5LmM6CgogICBlcnJvcnMgZHVyaW5nIGNvbW1pdCB1bmRvIHNob3VsZCBiZSB4eEZBSUxFRDsgdXNlIHNldF9yZXF1ZXN0X2Vycm9yIGluc3RlYWQgb2YKICAgc2V0X21vZGVfcmVxdWVzdF9lcnJvcjsgcmVtb3ZlIGluY29ycmVjdCBjb21tZW50OyBtb3JlIGRlYnVnZ2luZzsgY2hlY2sgZm9yCiAgIGFuZCBjYWxsIGxvd2VyIGhhbmRsZXJzCiAgIAoyMDAyLTEyLTE0IDA5OjI3ICByc3RvcnkKCiAgICogYWdlbnQvaGVscGVycy90YWJsZS5jOgoKICAgYWx3YXlzIHByb2Nlc3MgbGF0ZXIgcGFzc2VzIG9mIGEgc2V0IHJlcXVlc3QKICAgCjIwMDItMTItMTMgMTY6MDYgIG5iYQoKICAgKiBhZ2VudC9taWJncm91cC9ob3N0L2hyX3N3aW5zdC5jOgoKICAgUXVlbGwgY29tcGlsZXIgd2FybmluZ3MKICAgCjIwMDItMTItMTMgMTU6NDcgIG5iYQoKICAgKiBhZ2VudC9taWJncm91cC9taWJJSS92YXJfcm91dGUuYywgc25tcGxpYi9kZWZhdWx0X3N0b3JlLmMKOgoKICAgUXVlbGwgY29tcGlsZXIgd2FybmluZ3MKICAgCjIwMDItMTItMTMgMTU6NDAgIG5iYQoKICAgKiBzbm1wbGliL3NjYXBpLmM6CgogICBGaXggaW5jb21wbGV0ZSB6ZXJvaW5nIG9mIHNlY3VyaXR5IGRhdGEKICAgCjIwMDItMTItMTMgMTU6MzkgIG5iYQoKICAgKiBzbm1wbGliL3BhcnNlLmM6CgogICBGaXggYSBwb3NzaWJsZSBmcmVlaW5nIG9mIGEgTlVMTCBwb2ludGVyCiAgIAoyMDAyLTEyLTEzIDE1OjM4ICBuYmEKCiAgICogYWdlbnQvaGVscGVycy90YWJsZV9kYXRhc2V0LmMsCiAgIGFnZW50L21pYmdyb3VwL21pYklJL2lwQWRkci5jLCBhcHBzL3NubXB0cmFwZC5jLAogICBpbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2RhdGEuaCwgc25tcGxpYi9zbm1wX2FwaS5jCjoKCiAgIFF1ZWxsIGNvbXBpbGVyIHdhcm5pbmdzCiAgIAoyMDAyLTEyLTEzIDExOjM4ICBkdHMxMgoKICAgKiBhZ2VudC9hZ2VudF9oYW5kbGVyLmM6CgogICBDbGVhciB0aGUgJ3Byb2Nlc3NlZCcgZmxhZyBiZXR3ZWVuIHBhc3Nlcywgc28gdGhhdCBoYW5kbGVycwogICBjYW4gY29ycmVjdGx5IGNsZWFuIHVwIGFmdGVyIGVycm9ycyBoYXZlIGJlZW4gZGV0ZWN0ZWQuCiAgIAoyMDAyLTEyLTEzIDExOjA2ICByc3RvcnkKCiAgICogYWdlbnQvbWliZ3JvdXAvYWdlbnR4L3N1YmFnZW50LmM6CgogICBhZGQgYXNzZXIgdG8gdHJ5IGFuZCBjYXRoIGludGVybWl0dGVudCBjcmFzaCBpJ3ZlIGJlZW4gc2VlaW5nCiAgIAoyMDAyLTEyLTEzIDExOjA0ICByc3RvcnkKCiAgICogYWdlbnQvbWliZ3JvdXAvYWdlbnR4L21hc3Rlci5jOgoKICAgbG9nIHVua25vd24gYWdlbnR4IG9wZXJhdGlvbgogICAKMjAwMi0xMi0xMyAxMDoxMiAgcnN0b3J5CgogICAqIGFnZW50L2hlbHBlcnMvdGFibGVfYXJyYXkuYzoKCiAgIGlmIG5vIHJvdyBjcmVhdGUgY2FsbGJhY2sgb24gc2V0LCB1c2UgTk9UV1JJVEFCTEUgaW5zdGVhZCBvZiBOT1NVQ0hJTlNUQU5DRQogICAKMjAwMi0xMi0xMyAxMDowNCAgcnN0b3J5CgogICAqIGFnZW50L2hlbHBlcnMvZGVidWdfaGFuZGxlci5jOgoKICAgZml4IGN1dC1uLXBhc3RlIHNvIGRlbGVnYXRlZCBmbGFnIGRpc3BsYXllZCBwcm9wZXJseQogICAKMjAwMi0xMi0xMyAxMDowMSAgcnN0b3J5CgogICAqIHNubXBsaWIvZGVmYXVsdF9zdG9yZS5jOgoKICAgbG9nIHRleHQgKEFQUHxMSUJ8VE9LKSBpbnN0ZWFkIG9mIHN0b3JlIGlkIGluIGRlYnVnIG1zZ3MKICAgCjIwMDItMTItMTMgMDk6NTMgIHJzdG9yeQoKICAgKiBkaXN0L25zYi1mdW5jdGlvbnM6CgogICBhZGQgLS13aXRoLWxpYndyYXAKICAgCjIwMDItMTItMTMgMDk6NDkgIHJzdG9yeQoKICAgKiBGQVE6CgogICBncmFtbWFyL2luZGVudGlvbiB0d2VhayArIG1lbnRpb24gc3RyaXAgZm9yIG1lbW9yeSBmb290cHJpbnQgcXVlc3Rpb24KICAgCjIwMDItMTItMTMgMDk6MzIgIGR0czEyCgogICAqIHBlcmwvU05NUC9NYWtlZmlsZS5QTDoKCiAgIFJlbW92ZSBleHBsaWNpdCBtZW50aW9uIG9mIFNOTVAgbW9kdWxlIGRvY3VtZW50YXRpb24uCiAgIFRoaXMgc2V0dGluZyBkb2Vzbid0IHNlZW0gdG8gYmUgbmVjZXNzYXJ5LCBhbmQgd2l0aG91dCBpdCwKICAgdGhlIG1hbiBwYWdlIGlzIGluc3RhbGxlZCBhdXRvbWF0aWNhbGx5LgogICAKMjAwMi0xMi0xMyAwNzo0NyAgamJwbgoKICAgKiBhcHBzL3NubXB0cmFwZC5jOgoKICAgICAtIG1ha2UgLVMgZG8gdGhlIHNhbWUgYXMgc25tcGQgLVMgKHNldCB0aGUgc3lzbG9nIGZhY2lsaXR5KQogICAgIC0gbWFrZSAtbCBwcmludCBhIHdhcm5pbmcgc2F5aW5nIHRoYXQgaXQgaXMgZGVwcmVjYXRlZCBhbmQgLVMgc2hvdWxkCiAgICAgICBiZSB1c2VkIGluc3RlYWQKICAgCjIwMDItMTItMTMgMDc6MTQgIGpicG4KCiAgICogc25tcGxpYi9yZWFkX2NvbmZpZy5jOgoKICAgICAtIGluY3JlYXNlIHdpZHRoIG9mIHRva2VuIGZpZWxkIHRvIGltcHJvdmUgbGVnaWJpbGl0eSBvZgogICAgICAgY29uZmlndXJhdGlvbiBkaXJlY3RpdmUgaGVscCBvdXRwdXQKICAgCjIwMDItMTItMTIgMTc6NDYgIG5iYQoKICAgKiBhcHBzL3NubXB0YWJsZS5jOgoKICAgUHJvdGVjdCBhZ2FpbnN0IHVua25vd24gLU8gb3B0aW9ucwogICAKMjAwMi0xMi0xMiAxNTo1NiAgbmJhCgogICAqIGFnZW50L21pYmdyb3VwL3NtdXgvc211eC5jOgoKICAgRml4IHNvbWUgc2l6ZV90IHRoYXQgcmVhbGx5IHNob3VsZCBiZSBpbnQKICAgCjIwMDItMTItMTIgMTQ6MTggIG5iYQoKICAgKiBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oLAogICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgsIG1hbi9zbm1wLmNvbmYuNS5kZWYsCiAgIG1hbi9zbm1wY21kLjEuZGVmLCBzbm1wbGliL21pYi5jLCBzbm1wbGliL3NubXBfYXBpLmMKOgoKICAgQSBsb25nIG92ZXJkdWUgcGF0Y2ggKCM0MTUyNTIpIGZyb20gUm9iZXJ0IEhhc3RpbmdzIHRoYXQgaW1wbGVtZW50cwogICByZXZlcnNlIERJU1BMQVktSElOVCBwcm9jZXNzaW5nLCBpLmUuIGl0IGFsbG93cyB5b3UgdG8gaW5wdXQgZGF0YQogICBmb3JtYXR0ZWQgbGlrZSB0aGUgRElTUExBWS1ISU5UIHByZXNjcmliZXMuIEVuYWJsZWQgYnkgZGVmYXVsdCwgYnV0CiAgIGNhbiBiZSBkaXNhYmxlZCB3aXRoIHRoZSAtSWggb3B0aW9uIG9yIG5vRGlzcGxheUhpbnQgaW4gc25tcC5jb25mCiAgIAoyMDAyLTEyLTEyIDEzOjU2ICBuYmEKCiAgICogYWdlbnQvbWliZ3JvdXAvbWliSUkvdmFjbV92YXJzLmM6CgogICBwYXJzZSBvaWRzIGluIHZpZXcgc3RhdGVtZW50cyB0aGUgc2FtZSB3YXkgdGhlIGFwcHMgZG8gaXQgKGNvbnNpc3RlbmN5LCBoZSBzYWlkKQogICAKMjAwMi0xMi0xMiAxMzozNSAgaGFyZGFrZXIKCiAgICogcGVybC9hZ2VudC9hZ2VudC54czoKCiAgIEFkZCBhIGdldFJvb3RPSUQgZnVuY3Rpb24gdG8gdGhlIHJlZ2luZm8gcG9pbnRlciBwYXNzZWQgaW50byBoYW5kbGVycy4KICAgCjIwMDItMTItMTIgMTM6MzQgIHJzdG9yeQoKICAgKiBsb2NhbC9taWIyYy5hcnJheS11c2VyLmNvbmY6CgogICBjaGFuZ2UgY3JlYXRlIGFuZCBkdXBsaWNhdGUgcm93IHRvIHJldHVybiBzcGVjaWZpYyBjb250ZXh0IGluc3RlYWQgb2YgZ2VuZXJpYwogICBuZXRzbm1wX2luZGV4OyBjYXRjaCBlcnJvciBmcm9tIHBhcnNlX29pZF9pbmRleGVzIG9uIHJvdyBjcmVhdGlvbgogICAKMjAwMi0xMi0xMiAxMzozNCAgaGFyZGFrZXIKCiAgICogcGVybC9TTk1QL3QvbWliLnQ6CgogICBQcmludCBlcnJvcnMgdG8gU1RERVJSIGluc3RlYWQuCiAgICAgKGFjdHVhbGx5IGRvbid0IGJlY2F1c2UgdGhlc2Ugc3RhdGVtZW50cyBhcmUgY29tbWVudGVkIG91dCBpbiB0aGUKICAgICBmaXJzdCBwbGFjZSkKICAgCjIwMDItMTItMTIgMTM6MzMgIGhhcmRha2VyCgogICAqIGFnZW50L2FnZW50X3JlZ2lzdHJ5LmM6CgogICBSZXZlcnNlIHRoZSBjb250ZXh0IG9mIGEgY29udGV4dCBpZiBzdGF0ZW1lbnQgc28gaWYgbm90IHRoZSBjb250ZXh0CiAgIHRoZW4gZG9uJ3QgdXNlIHRoZSBjb250ZXh0IGluIHRoZSBnaXZlbiBjb250ZXh0LgogICAKMjAwMi0xMi0xMiAxMjo1NiAgamJwbgoKICAgKiBhcHBzL3NubXB0cmFwZC5jOgoKICAgICAtIGRyb3AgbG9uZy1kZXByZWNhdGVkIC1xIGFuZCAtUyBvcHRpb25zCiAgICAgLSBtaW5vciBmb3JtYXR0aW5nIGZpeGVzCiAgIAoyMDAyLTEyLTEyIDEyOjM1ICBqYnBuCgogICAqIGFnZW50L3NubXBkLmM6CgogICAgICAtIHJlbW92ZSBkdXBsaWNhdGUgbWVzc2FnZSBpbiB1c2FnZQogICAKMjAwMi0xMi0xMiAxMTozNyAgZHRzMTIKCiAgICogbWFuL3NubXBkLjEuZGVmLCBhZ2VudC9zbm1wZC5jOgoKICAgSW1wbGVtZW50IGEgY29tbWFuZC1saW5lIG9wdGlvbiAoLVMpIHRvIHNldCB0aGUgZmFjaWxpdHkgdG8gdXNlIHdoZW4KICAgbG9nZ2luZyB2aWEgc3lzbG9nLiAgIEJhc2VkIG9uIGFuIGlkZWEgYnkgSm9lbCBSb3NkYWhsIChQYXRjaCAjNjI3NzAxKQogICBOb3RlIHRoYXQgLWwgYW5kIC1MIGFyZSBhbHJlYWR5IHRha2VuOi0oCiAgIAogICBUb0RvOgogICAgIFByb3ZpZGUgY29uZmlndXJhdGlvbiBkaXJlY3RpdmVzIGZvciBib3RoIHRoaXMsIGFuZCB0aGUgc3lzbG9nIHRva2VuICgnc25tcGQnKS4KICAgCjIwMDItMTItMTIgMTE6MTggIGR0czEyCgogICAqIG1hbi9zbm1wZC5jb25mLjUuZGVmLCBhZ2VudC9taWJncm91cC9taWJJSS9zeXN0ZW1fbWliLmMKOgoKICAgU3VwcG9ydCBzZXR0aW5nIG9mIHN5c0Rlc2NyIGFuZCBzeXNPYmplY3RJRCB2aWEgc25tcGQuY29uZgogICBjb25maWd1cmF0aW9uIGRpcmVjdGl2ZXMgKHRob3VnaCBub3QgdmlhIFNOTVAgU0VUIHJlcWVzdHMpLgogICBQYXRjaGVzIHN1cHBsaWVkIGJ5IEpvZWwgUm9zZGFobCAoIzYyNzcwMiBhbmQgIzYyODAxMSkKICAgCjIwMDItMTItMTIgMTA6NTggIGR0czEyCgogICAqIGFnZW50L2hlbHBlcnMvOiBhbGxfaGVscGVycy5jLCB0YWJsZS5jOgoKICAgU3VwcHJlc3Mgc29tZSBjb21waWxlciB3YXJuaW5ncy4KICAgQmFzZWQgb24gcGF0Y2ggc3VwcGxpZWQgYnkgQ2hyaXMgSm9obnMgKCM2NDQwNDEpCiAgIAoyMDAyLTEyLTEyIDEwOjQyICBkdHMxMgoKICAgKiBhZ2VudC9taWJncm91cC91Y2Qtc25tcC86IG1lbW9yeV9zb2xhcmlzMi5jIChWNC0yLXBhdGNoZXMuNiksCiAgIG1lbW9yeV9zb2xhcmlzMi5jOgoKICAgVXNlICdzeXNjb25mJyB0byByZXBvcnQgb24gU29sYXJpcyBtZW1vcnkgdXNhZ2UuCiAgIEJhc2VkIG9uIHBhdGNoIHN1cHBsaWVkIGJ5IEJlbiBTdGVybiAoIzY1MTE4MikKICAgCjIwMDItMTItMTIgMTA6MDAgIGR0czEyCgogICAqIGFnZW50L21pYmdyb3VwL2FnZW50eC9tYXN0ZXIuYzoKCiAgIEJhc2ljIHN1cHBvcnQgZm9yIG11bHRpcGxlIEFnZW50WCBzb2NrZXRzIChvbiB0aGUgbWFzdGVyIHNpZGUgYXQgbGVhc3QpLgogICBTZWUgRmVhdHVyZSBSZXF1ZXN0ICM2MzI1NTYKICAgCjIwMDItMTItMTIgMDg6NTcgIHJzdG9yeQoKICAgKiBkaXN0L01ha2VmaWxlOgoKICAgY3JlYXRlIHZlcnNpb24gdGFnIGZyb20gdmVyc2lvbiBzbyBjdnMgZXhwb3J0IHdvcmtzOyBmaXggUkVMOyBhZGQgdGFyLmd6CiAgIG9mIHNvdXJjZSBhcyBkZXBlbmRlbmN5IGZvciBycG1maWxlcwogICAKMjAwMi0xMi0xMiAwODowNCAgbmJhCgogICAqIHNubXBsaWIvOiBkYXRhX2xpc3QuYywgc25tcENhbGxiYWNrRG9tYWluLmMsCiAgIHNubXBUQ1BEb21haW4uYywgc25tcFVEUERvbWFpbi5jLCBzbm1wVW5peERvbWFpbi5jCiwgc25tcF9lbnVtLmMsIHNubXBfc2VjbW9kLmMsIHNubXBfdHJhbnNwb3J0LmMKOgoKICAgZG1hbGxvYyBzdXBwb3J0CiAgIAoyMDAyLTEyLTEyIDA3OjE4ICBkdHMxMgoKICAgKiBzbm1wbGliL21pYi5jOgoKICAgRG9jdW1lbnQgdGhlIC1PVSBvcHRpb24sIGFuZCBhbHBoYWJldGlzZSB0aGUgaGFuZGxpbmcgb2Ygb3B0aW9ucy4KICAgCjIwMDItMTItMTIgMDY6MjUgIGR0czEyCgogICAqIGFwcHMvTWFrZWZpbGUuaW46CgogICBJbnN0YWxsICdzbm1waW5mb3JtJyBhcyBhIHJlbGF0aXZlIGxpbmssIHJhdGhlciB0aGFuIGFuIGFic29sdXRlIG9uZS4KICAgRml4IHByb3ZpZGVkIGJ5IHRoZSBpbmRlZmF0aWdhYmxlIFN0ZWZhbiBSYWRtYW4gKEJ1ZyAjNjUyNTg3KQogICAKMjAwMi0xMi0xMiAwNTo1NiAgZHRzMTIKCiAgICogY29uZmlndXJlLCBjb25maWd1cmUuaW46CgogICBRdW90ZSBjb25maWd1cmUgb3B0aW9ucyB3aGVuIGNvbnRydWN0aW5nIG5ldC1zbm1wLWNvbmZpZ3VyZSBhbmQgbmV0LXNubXAtY29uZmlndXJlLmgKICAgVGhpcyBhbGxvd3Mgb3B0aW9ucyBjb250YWluaW5nIHNwYWNlcywgZXRjLCB0byBiZSBoYW5kbGVkIGNvcnJlY3RseS4KICAgKFNlZSBGZWF0dXJlIFJlcXVlc3QgIzU0NzE1MikKICAgCjIwMDItMTItMTEgMTY6NTIgIG5iYQoKICAgKiBhZ2VudC9taWJncm91cC9ob3N0L2hyX2Rpc2suYzoKCiAgIFBhdGNoIGZvciBGcmVlQlNELiBUaGFua3MgdG8gSnVuIEt1cml5YW1hCiAgIAoyMDAyLTEyLTExIDEyOjE2ICBkdHMxMgoKICAgKiBzbm1wbGliLzogc25tcF9sb2dnaW5nLmMgKFY0LTItcGF0Y2hlcy40KSwgc25tcF9sb2dnaW5nLmM6CgogICBUcnkgZGlzYWJsaW5nIGxpbmUtYnVmZmVyaW5nIG9uIFdpbmRvd3Mgc3lzdGVtcyAoc2luY2UgaXQKICAgYXBwYXJlbnRseSBlbmFibGVzIGZ1bGwtYnVmZmVyaW5nIGluc3RlYWQpLiAgU2VlIEJ1ZyAjNTU4ODM3LgogICAKMjAwMi0xMi0xMSAxMToyNSAgZHRzMTIKCiAgICogcGVybC9TTk1QL3QvOiBhc3luYy50LCBnZXQudCwgZ2V0bmV4dC50LAogICBub3RpZnkudCwgc2V0LnQ6CgogICBFeHBsaWNpdGx5IHNldCBTTk1QIHZlcnNpb24gPSAxICh0aGUgb3JpZ2luYWwgZGVmYXVsdCBhcyBleHBlY3RlZCBieSB0aGUgdGVzdHMpCiAgIFRoaXMgc2hvdWxkIG5vdyBwYXNzIGFsbCB0ZXN0cyBhcGFydCBmcm9tIGNvbmYudCAjMwogICAKMjAwMi0xMi0xMSAwNjo0NiAgZHRzMTIKCiAgICogaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hdXRvX25saXN0Lmg6CgogICBCZSBtb3JlIHNlbGVjdGl2ZSBpbiB1c2luZyB0aGUgNjQtYml0IHZlcnNpb24gb2Ygbmxpc3QuIChCdWcgIzYxMTY1NSkKICAgCjIwMDItMTItMTEgMDY6MjcgIGR0czEyCgogICAqIFJFQURNRS5zb2xhcmlzOgoKICAgTWVudGlvbiB0aGUgbm9uLWZ1bmN0aW9uYWxpdHkgb2Ygb25lIG9mIHRoZSBzdWdnZXN0ZWQgYXBwcm9hY2hlcy4KICAgKEJ1ZyAjNjE3MTE5KS4gICBSZXBvcnRlZCBieSBRdWFuYWggR2lic29uLU1vdW50CiAgIAoyMDAyLTEyLTExIDA2OjIwICBkdHMxMgoKICAgKiBhZ2VudC9NYWtlZmlsZS5pbjoKCiAgIEVuc3VyZSB0aGF0IHRoZSBkZXN0aW5hdGlvbiBkaXJlY3RvcnkgZXhpc3RzIGJlZm9yZSBpbnN0YWxsaW5nIHRoZQogICBlbWJlZGRlZCBwZXJsIHNjcmlwdC4gIChCdWcgIzYxNzg5MSkgRml4IHByb3ZpZGVkIGJ5IFN0ZWZhbiBSYWRtYW4uCiAgIAoyMDAyLTEyLTExIDA1OjU2ICBkdHMxMgoKICAgKiBSRUFETUUuc25tcHYzIChWNC0yLXBhdGNoZXMuNCksIFJFQURNRS5zbm1wdjM6CgogICBEb2N1bWVudCB0aGUgbG9jYXRpb24gYXNzdW1wdGlvbnMgYmVpbmcgbWFkZSBpbiB0aGlzIGRlc2NyaXB0aW9uLgogICAKMjAwMi0xMi0xMSAwNDo0NyAgZHRzMTIKCiAgICogaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaCwKICAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oLCBzbm1wbGliL21pYi5jLAogICBtYW4vc25tcGNtZC4xLmRlZjoKCiAgIFByb3ZpZGUgYSBtZWNoYW5pc20gZm9yIGZvcmNpbmcgc3RyaW5ncyB0byBiZSBkaXNwbGF5ZWQgaW4gZWl0aGVyCiAgIEFTQ0lJIG9yIEhleCBmb3JtYXQsIGJ5cGFzc2luZyB0aGUgImd1ZXNzIiBtZWNoYW5pc20gYXMgdG8gd2hpY2gKICAgaXMgbW9yZSBhcHByb3ByaWF0ZS4gICBTdWdnZXN0ZWQgYnkgTmljayBLYW5ha2Frb3JuLgogICAgIE5vdGUgdGhhdCB0aGlzIGRvZXMgbm90IGFmZmVjdCBvYmplY3RzIHdpdGggYSBEaXNwbGF5LUhpbnQgaW4KICAgdGhlaXIgTUlCIGRlZmluaXRpb24uCiAgIAoyMDAyLTEyLTExIDA0OjMwICBkdHMxMgoKICAgKiBhZ2VudC9kc19hZ2VudC5oLCBhZ2VudC9zbm1wZC5jLCB0ZXN0aW5nL2V2YWxfdG9vbHMuc2gKICAgKFY0LTItcGF0Y2hlcy5bMiwyNiw2XSksIGFnZW50L2FnZW50X3JlYWRfY29uZmlnLmMsCiAgIGFnZW50L3NubXBkLmMsIGluY2x1ZGUvbmV0LXNubXAvYWdlbnQvZHNfYWdlbnQuaCwKICAgdGVzdGluZy9ldmFsX3Rvb2xzLnNoOgoKICAgQ29tbWFuZC1saW5lIG9wdGlvbiB0byBjb250cm9sIHdoZXRoZXIgdG8gdW5saW5rIHRoZSBQSUQgZmlsZSBvciBub3QuCiAgIE5lY2Vzc2FyeSBmb3IgY29ycmVjdCB0ZXN0IG9wZXJhdGlvbi4KICAgCjIwMDItMTItMTEgMDQ6MjEgIGR0czEyCgogICAqIHBlcmwvT0lEL3Rlc3QucGw6CgogICBUaGUgbGF0ZXN0IGxpYnJhcnkgZGVmYXVsdHMgdG8gTU9EVUxFOjpuYW1lIHN0eWxlIG91dHB1dCwKICAgc28gYWRqdXN0IHRoZSBleHBlY3RlZCBvdXRwdXQgY2hlY2tzIGFjY29yZGluZ2x5LgogICBBbHNvLCB0aGVyZSBhcmUgYWN0dWFsbHkgMzYgdGVzdHMsIG5vdCAzNSEKICAgCjIwMDItMTItMTEgMDQ6MTcgIGR0czEyCgogICAqIHBlcmwvT0lEL09JRC54czoKCiAgIEluaXRpYWxpc2UgdGhlIFNOTVAgbGlicmFyaWVzLCB0byBzZXQgdXAgdGhlIE9JRCB0cmVlLgogICBBZGRyZXNzZXMgYnVncyAjNjM4MDI0IGFuZCAjNjI3NjQzCiAgICAgW1FuOiBEbyB3ZSBuZWVkIHRvIHN1cHBseSBhbiAnYXBwbmFtZScgKGMuZCB0aGUgU05NUCBtb2R1bGUpID9dCiAgIAoyMDAyLTEyLTEwIDE5OjI5ICBuYmEKCiAgICogbWFuL3NubXAuY29uZi41LmRlZiwgc25tcGxpYi9zbm1wX2FwaS5jLAogICBhZ2VudC9taWJncm91cC91dGlsX2Z1bmNzLmMsCiAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL2xvZ21hdGNoLmM6CgogICBBbGxvdyBydW50aW1lIGNvbmZpZ3VyYXRpb24gb2YgcGVyc2lzdGVudCBkaXJlY3RvcnkKICAgCjIwMDItMTItMTAgMTk6MjQgIG5iYQoKICAgKiBzbm1wbGliL3JlYWRfY29uZmlnLmM6CgogICBSZXBvcnQgZXJyb3JzIGhhbmRsaW5nIHBlcnNpc3RlbnQgc3RvcmFnZSBmaWxlcwogICAKMjAwMi0xMi0xMCAxOToyMyAgbmJhCgogICAqIHNubXBsaWIvc3lzdGVtLmM6CgogICBQYXNzIHVwIGVycm9yIG9uIGRpcmVjdG9yeSBjcmVhdGlvbgogICAKMjAwMi0xMi0xMCAxNzoyNyAgbmJhCgogICAqIHNubXBsaWIvbWliLmM6CgogICBCZXR0ZXIgcmVzcGVjdCBmb3IgdGhlIG1heCB3aWR0aCBvcHRpb24gKHNubXB0cmFuc2xhdGUgLVRkKQogICAKMjAwMi0xMi0xMCAxNzoyNiAgbmJhCgogICAqIG1hbi9zbm1wLmNvbmYuNS5kZWY6CgogICBEb2N1bWVudCB0aGUgb2lkT3V0cHV0Rm9ybWF0IG9wdGlvbgogICAKMjAwMi0xMi0xMCAxNzoyNSAgbmJhCgogICAqIGFwcHMvc25tcHRhYmxlLmM6CgogICBDbGVhbiB1cC4gUmVtb3ZlIGNhbGxzIHRvIG9ic29sZXRlIGZ1bmN0aW9ucyBzbm1wX3NldF9xdWlja19wcmludCwKICAgc25tcF9nZXRfZHVtcF9wYWNrZXQsIHNubXBfZ2V0X3N1ZmZpeF9vbmx5LiBSZW1vdmUgbGFzdCB0cmFjZXMgb2YgdGhlCiAgIG5vbl9zZXF1ZW50aWFsIGJhY2t3YXJkcyBoYWNrLiBNYWtlIHN1cmUgaXQgd29ya3MgZm9yIGFsbCAtTyBvcHRpb25zLgogICAKMjAwMi0xMi0xMCAxMTo1OCAgZHRzMTIKCiAgICogYWdlbnQvbWliZ3JvdXAvbWliSUkvOiBpbnRlcmZhY2VzLmMgKFY0LTItcGF0Y2hlcy4yNiksCiAgIGludGVyZmFjZXMuYzoKCiAgIFByb3RlY3QgYWdhaW5zdCBlbXB0eSBsaW5lcyBpbiAvcHJvYy9uZXQvZGV2ICAoQnVnICM2MjU0MjYpCiAgIAoyMDAyLTEyLTEwIDExOjQxICBkdHMxMgoKICAgKiBzbm1wbGliLzogc25tcHYzLmMgKFY0LTItcGF0Y2hlcy41KSwgc25tcHYzLmM6CgogICBGcmVlIGRlc3RpbmF0aW9uIG1lbW9yeSBiZWZvcmUgY2xvbmluZyBTTk1QIEVuZ2luZSBJRC4KICAgRml4IHByb3ZpZGVkIGJ5IE1hcnRpbiBDYXJsc3Nvbi4gIChCdWcgIzgzNTQ4MSkKICAgCjIwMDItMTItMTAgMTE6MDcgIGR0czEyCgogICAqIHBlcmwvOiBBU04vTWFrZWZpbGUuUEwsIE9JRC9NYWtlZmlsZS5QTCwKICAgU05NUC9NYWtlZmlsZS5QTCwgYWdlbnQvTWFrZWZpbGUuUEwsCiAgIGFnZW50L2RlZmF1bHRfc3RvcmUvTWFrZWZpbGUuUEwsIGRlZmF1bHRfc3RvcmUvTWFrZWZpbGUuUEwKOgoKICAgQWRkICIkQ29uZmlne2NjZmxhZ3N9IiB0byBDQ0ZMQUdTLiAgIChTZWUgYnVnICM2NDA4OTkpCiAgIAoyMDAyLTEyLTEwIDEwOjQ2ICBkdHMxMgoKICAgKiBhZ2VudC9taWJncm91cC9taWJJSS86IGlwQWRkci5jIChWNC0yLXBhdGNoZXMuOCksIGlwQWRkci5jOgoKICAgQWRkIHN1cHBvcnQgZm9yIExpbnV4IHZpcnR1YWwgaW50ZXJmYWNlcyBpbiB0aGUgaXBBZGRyZXNzVGFibGUuCiAgIChOb3RlIHRoaXMgZG9lcyAqbm90KiBpbmNsdWRlIHNlcGFyYXRlIHBlci12LWludGVyZmFjZSBzdGF0aXN0aWNzCiAgICBpbiB0aGUgaW50ZXJmYWNlcyB0YWJsZSkuCiAgIAogICBQYXRjaCBzdXBwbGllZCBieSBKZW5zIFNpdHRuZXIgKCM2MjEyNzQpCiAgIAoyMDAyLTEyLTEwIDA0OjU5ICBkdHMxMgoKICAgKiBhZ2VudC9hZ2VudF9oYW5kbGVyLmM6CgogICBSZW1vdmUgYSBjb3VwbGUgb2YgZXh0cmFuZW91cyBeTSBjaGFyYWN0ZXJzLgogICAKMjAwMi0xMi0xMCAwMjozNiAgbmJhCgogICAqIHNubXBsaWIvbWliLmM6CgogICBXaGVuIHVzaW5nIC1PcXYgYW5kIHByaW50aW5nIGFuIGVtcHR5IHN0cmluZyB5b3UgY291bGQgZW5kIHVwIHdpdGgKICAgYSBOVUxMIHN0cmluZyBhbmQgbm90IGFuIGVtcHR5IHN0cmluZyBsZWFkaW5nIHRvIHNvbWUgdmVyeSBvYnNjdXJlCiAgIHByb2JsZW1zIGluIHNubXB0YWJsZSBhbmQgb3RoZXIgYXBwbGljYXRpb25zLgogICAKMjAwMi0xMi0wOSAxMToxMiAgZHRzMTIKCiAgICogc25tcGxpYi9zbm1wX2FwaS5jOgoKICAgSGFuZGxlIG1pc3NpbmcgaW50ZWdlciB2YWx1ZXMgKHdoZXRoZXIgMzItIG9yIDY0LWJpdCEpLiAgIE9vcHMhCiAgIAoyMDAyLTEyLTA5IDEwOjEyICBkdHMxMgoKICAgKiBzbm1wbGliLzogc25tcF9hcGkuYyAoVjQtMi1wYXRjaGVzLjM4KSwgc25tcF9hcGkuYzoKCiAgIEhhbmRsZSBpbnRlZ2VyLWJhc2VkIHZhbHVlcyBjb3JyZWN0bHkgb24gYSA2NC1iaXQgcGxhdGZvcm0uCiAgIFBhdGNoIHN1cHBsaWVkIGJ5IFRob21hcyBXZWJlciAoIzU2MTA3MSkKICAgCjIwMDItMTItMDkgMDk6NDUgIGR0czEyCgogICAqIGFnZW50L21pYmdyb3VwL2FnZW50eC9tYXN0ZXIuYzoKCiAgIFRha2Ugbm90ZSBvZiBzdWJhZ2VudC1yZXF1ZXN0ZWQgYnl0ZSBvcmRlcmluZyBpbiBzdWJzZXF1ZW50IGNvbW11bmljYXRpb25zLgogICBQYXRjaCBzdXBwbGllZCBieSBVcmJhbiAoIzYzMjI4NCkKICAgCjIwMDItMTItMDkgMDk6MzIgIGR0czEyCgogICAqIGFnZW50Lzogc25tcGQuYyAoVjQtMi1wYXRjaGVzLjI1KSwgc25tcGQuYzoKCiAgIFJlbW92ZSB0aGUgUElEIGZpbGUgb24gYWdlbnQgc2h1dGRvd24uCiAgIFBhdGNoIHN1cHBsaWVkIGJ5IEpvZWwgUm9zZGFobCAoIzYyNzY5OSkKICAgCjIwMDItMTItMDkgMDk6MjUgIGR0czEyCgogICAqIHNubXBsaWIvc3lzdGVtLmM6CgogICBIYW5kbGUgJ3N0cnVjdCBzb2NrYWRkcicgdGhhdCBjb250YWluICdzYV9sZW4nIGZpZWxkcyBkaWZmZXJlbnRseQogICB0byB0aG9zZSB0aGF0IGRvbid0IChjLmYgaWZpbHRlcl9pb2N0bC5jIGluIEJJTkQgOS4yLjEgc291cmNlcykKICAgUGF0Y2ggc3VwcGxpZWQgYnkgSm9lbCBSb3NkYWhsICgjNjI3Njk2KQogICAKMjAwMi0xMi0wOSAwNzoxMiAgZHRzMTIKCiAgICogYWNjb25maWcuaCwgY29uZmlndXJlLCBjb25maWd1cmUuaW46CgogICBSZWNvZ25pc2UgQlNEaTQsIGFuZCB0d2VhayB0aGUgcmVjb2duaXRpb24gb2YgJ2Rsb3BlbicuCiAgIFBhdGNoZXMgc3VwcGxpZWQgYnkgSm9lbCBSb3NkYWhsLgogICAKMjAwMi0xMi0wOSAwNjoxMCAgZHRzMTIKCiAgICogYWdlbnQvbWliZ3JvdXAvbWliSUkvOiBhdC5jLCBpbnRlcmZhY2VzLmMsIGlwLmMKOgoKICAgUmVtb3ZlIHNvbWUgd2FybmluZ3MsIGFuZCB0cnkgdG8gY29wZSB3aXRoICdzeXNjdGwnIGZhaWx1cmVzLgogICBQYXRjaGVzIHN1cHBsaWVkIGJ5IENocmlzIEpvaG5zLgogICAKMjAwMi0xMi0wOSAwNDoyMCAgZHRzMTIKCiAgICogUkVBRE1FLnNvbGFyaXM6CgogICBNZW50aW9uIHRoZSBsaW1pdGF0aW9ucyBvbiAvdXNyL3VjYi9zZWQsCiAgIGFuZCBwb2ludCBwZW9wbGUgdG93YXJkcyAvdXNyL2Jpbi9zZWQgaW5zdGVhZC4KICAgCjIwMDItMTItMDcgMDg6NDEgIGR0czEyCgogICAqIGFnZW50L2hlbHBlcnMvdGFibGVfZGF0YXNldC5jOgoKICAgSW5zZXJ0IG5ld2x5LWNyZWF0ZWQgcm93cyBpbnRvIHRoZSBwZXItcmVxdWVzdCBsaXN0cywgc28gdGhhdCBsb3dlcgogICBsZXZlbCBoYW5kbGVycyBjYW4gYWNjZXNzIHRoZW0uCiAgICAgW1FuOiBTaG91bGQgd2UgZG8gc29tZXRoaW5nIHNpbWlsYXIgd2l0aCB1cGRhdGVkIGxpc3RzIGFzIHdlbGw/XQogICAKMjAwMi0xMi0wNyAwODozNCAgZHRzMTIKCiAgICogYWdlbnQvaGVscGVycy90YWJsZV9kYXRhc2V0LmM6CgogICBSZXBvcnQgYmFjayB0aGUgY29ycmVjdCBlcnJvciBmb3Igcm93cyB0aGF0IGNvdWxkbid0IGJlIGNyZWF0ZWQuCiAgIAoyMDAyLTEyLTA3IDA4OjMyICBkdHMxMgoKICAgKiBhZ2VudC9oZWxwZXJzL3RhYmxlX2RhdGFzZXQuYzoKCiAgIFByb3RlY3QgYWdhaW5zdCBmcmVlaW5nIGEgcm93IHRoYXQgbmV2ZXIgZ290IGNyZWF0ZWQgaW4gdGhlIGZpcnN0IHBsYWNlLgogICAKMjAwMi0xMi0wNiAxODowNSAgaGFyZGFrZXIKCiAgICogdGVzdGluZy90ZXN0cy9UMDMwc25tcHYzdXNlcmNyZWF0aW9uOgoKICAgU2tpcCBvbiBub24tb3BlbnNzbCBtYWNoaW5lcy4gIFRIaXMgc2hvdWxkIGJlIGNoYW5nZWQgdG8ganVzdCBub3QgdXNpbmcgZW5jcnlwdGlvbiBvbiB0aG9zZSBtYWNoaW5lcywgYnV0IEkgZG8gbm90IGhhdmUgdGhlIHRpbWUgYXQgdGhlIG1vbWVudAogICAKMjAwMi0xMi0wNiAxMzoxMiAgaGFyZGFrZXIKCiAgICogY29uZmlndXJlLmluOgoKICAgcmVtb3ZlIHVjZERlbW9QdWJsaWMgZnJvbSAtLWVuYWJsZS1taW5pLWFnZW50CiAgIAoyMDAyLTEyLTA2IDEzOjAyICBoYXJkYWtlcgoKICAgKiBjb25maWd1cmU6CgogICByZW1vdmUgdWNkRGVtb1B1YmxpYyBmcm9tIC0tZW5hYmxlLW1pbmktYWdlbnQKICAgCjIwMDItMTItMDYgMTI6MDEgIGR0czEyCgogICAqIGFnZW50L2hlbHBlcnMvdGFibGVfZGF0YXNldC5jOgoKICAgRG9uJ3QgZGVsZXRlIHRoZSAib2xkIiAobm9uLWV4aXN0ZW50KSByb3csIHdoZW4gdGlkeWluZyB1cCBhZnRlcgogICBjcmVhdGluZyBhIG5ldyByb3cuCiAgIAoyMDAyLTEyLTA2IDExOjQwICBkdHMxMgoKICAgKiBhZ2VudC9oZWxwZXJzL3RhYmxlX2RhdGFzZXQuYzoKCiAgIFR3ZWFrIGhhbmRsaW5nIG9mIChpbnZhbGlkKSBSb3dTdGF0dXMgY3JlYXRpb24gcmVxdWVzdHMgaW4gYW4KICAgImF1dG9tYXRpYyBjcmVhdGlvbiIgdGFibGUuICAgVGhlc2Ugc2hvdWxkIHJldHVybiB3cm9uZ1ZhbHVlIG9yCiAgIGluY29uc2lzdGVudFZhbHVlLCByYXRoZXIgdGhhbiBub3RXcml0YWJsZS4KICAgCjIwMDItMTItMDUgMDU6NDcgIGR0czEyCgogICAqIGFnZW50L2hlbHBlcnMvdGFibGVfZGF0YXNldC5jOgoKICAgU3VwcG9ydCB1c2Ugb2YgUm93U3RhdHVzIG9iamVjdCB0byBjb250cm9sIGNyZWF0aW9uIG9mIG5ldyByb3dzCiAgIChpLmUuIHdoZW4gdGhlICdhbGxvd19jcmVhdGlvbicgZmxhZyBpcyBub3Qgc2V0KS4KICAgVGhpcyBzaG91bGQgZGVhbCB3aXRoIGV2ZXJ5dGhpbmcgZXhjZXB0IGRldGVybWluaW5nIHdoZXRoZXIgYQogICByb3cgaXMgcmVhZHkgdG8gZ28gJ2FjdGl2ZScgKGUuZy4gdmlhICdjcmVhdGVBbmRHbycpLiAgU3VjaCBhCiAgIGRlY2lzaW9uIGlzIGluaGVyZW50bHkgc3BlY2lmaWMgdG8gZWFjaCBpbmRpdmlkdWFsIE1JQiwgc28gbXVzdAogICByZWFsbHkgYmUgZG9uZSBpbiB0aGUgbG93ZXItbGV2ZWwgaGFuZGxlci4KICAgCjIwMDItMTItMDUgMDU6NDEgIGR0czEyCgogICAqIGFnZW50L2hlbHBlcnMvdGFibGVfZGF0YXNldC5jOgoKICAgU3RvcCBwcm9jZXNzaW5nIHdoZW4gYSAnbm9uLXdyaXRhYmxlIGNyZWF0ZScgaXMgZGV0ZWN0ZWQuCiAgIAoyMDAyLTEyLTA0IDE5OjM1ICBoYXJkYWtlcgoKICAgKiBhZ2VudC9taWJncm91cC9kaXNtYW4vbXRlVHJpZ2dlclRhYmxlLmM6CgogICAtIEJJVF9TVFIgLT4gT0NURVRfU1RSLCB3aGljaCBpcyB3aGF0IGl0IHNob3VsZCBiZS4KICAgLSBydW4gZXZlbnRUYWJsZSBlbnRyaWVzLgogICAKMjAwMi0xMi0wNCAxOTozNCAgaGFyZGFrZXIKCiAgICogYWdlbnQvbWliZ3JvdXAvZGlzbWFuL210ZVRyaWdnZXJFeGlzdGVuY2VUYWJsZS5jOgoKICAgQklUX1NUUiAtPiBPQ1RFVF9TVFIsIHdoaWNoIGlzIHdoYXQgaXQgc2hvdWxkIGJlLgogICAKMjAwMi0xMi0wNCAxOTozMyAgaGFyZGFrZXIKCiAgICogYWdlbnQvbWliZ3JvdXAvZGlzbWFuLzogbXRlT2JqZWN0c1RhYmxlLmMsCiAgIG10ZVRyaWdnZXJCb29sZWFuVGFibGUuYzoKCiAgIHVzZSBuZXRzbm1wX3N0cmR1cF9hbmRfbnVsbCB0byBnZXQgcmVhbCBzdHJpbmdzIGZyb20gbWliIGRhdGEuCiAgIAoyMDAyLTEyLTA0IDE5OjMyICBoYXJkYWtlcgoKICAgKiBhZ2VudC9taWJncm91cC9kaXNtYW4vOiBldmVudC1taWIuaCwKICAgbXRlRXZlbnROb3RpZmljYXRpb25UYWJsZS5jLCBtdGVFdmVudE5vdGlmaWNhdGlvblRhYmxlLmgKLCBtdGVFdmVudFRhYmxlLmMsIG10ZUV2ZW50VGFibGUuaDoKCiAgIC0gaW1wbGVtZW50ZWQgdGhlIG10ZUV2ZW50VGFibGUgYW5kIHRoZSBtdGVFdmVudE5vdGlmaWNhdGlvblRhYmxlCiAgICAgLSBGWUksIHRvdGFsIGltcGxlbWVudGF0aW9uIHRpbWU6IGFib3V0IDQgaG91cnMKICAgICAtIG5vIGVhc3ktdG8tdXNlIC5jb25mIHdyYXBwZXJzIHlldCB0aG91Z2guICBzbm1wc2V0IHN1cHBvcnQgb25seS4KICAgCjIwMDItMTItMDQgMTk6MjkgIGhhcmRha2VyCgogICAqIGxvY2FsL21pYjJjLmNyZWF0ZS1kYXRhc2V0LmNvbmY6CgogICAtIHVzZSB0aGUgbmV0c25tcF90YWJsZV9zZXRfYWRkX2luZGV4ZXMgZnVuY3Rpb24gd2hpY2ggYWN0dWFsbHkgd29ya3MuCiAgIAoyMDAyLTEyLTA0IDE5OjI5ICBoYXJkYWtlcgoKICAgKiBhZ2VudC9oZWxwZXJzL3RhYmxlX2RhdGFzZXQuYywKICAgaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9kYXRhc2V0Lmg6CgogICAtIGNyZWF0ZSBhIG5ldHNubXBfdGFibGVfc2V0X2FkZF9pbmRleGVzIGZ1bmN0aW9uLgogICAtIEFsbG93IHJvdyBjcmVhdGlvbiB1c2luZyByb3dTdGF0dXMgd2hlbiB0aGUgZGF0YSBjb2x1bW4gZXhpc3RzLCBidXQKICAgICB0aGVyZSBpcyBubyBhc3NpZ25lZCB2YWx1ZSAoaWUsIGlzIE5VTEwpLgogICAtIHVzZSBuZXRzbm1wX3N0cmR1cF9hbmRfbnVsbCBpbnN0ZWFkIG9mIG1lbWR1cCB0byBtYWtlIHN1cmUgYW4KICAgICBpbXBsaWNpdCBOVUxMIGlzIGluIHBsYWNlIGZvciB0aGluZ3MgdGhhdCB1c2UgdGhlIGRhdGEgYW5kIG5lZWQgaXQKICAgICBhcyBhIHJlYWwgc3RyaW5nLgogICAKMjAwMi0xMi0wNCAxOToyNyAgaGFyZGFrZXIKCiAgICogbmV0LXNubXAtY29uZmlnLmluOgoKICAgZG9jdW1lbnQgLS1wcmVmaXgKICAgCjIwMDItMTItMDQgMTM6MTYgIGhhcmRha2VyCgogICAqIE5FV1MgKFY0LTItcGF0Y2hlcy45KSwgTkVXUzoKCiAgIGRvY3VtZW50IDQuMi42CiAgIAoyMDAyLTEyLTAzIDA0OjQ0ICBkdHMxMgoKICAgKiBhZ2VudC9taWJncm91cC9ob3N0L2hyX3ByaW50LmM6CgogICBDbG9zZSBwcmludGVyIGZpbGUgaGFuZGxlIHdpdGggJ2ZjbG9zZScgcmF0aGVyIHRoYW4gJ3BjbG9zZScgdG8gYXZvaWQKICAgYSBtZW1vcnkgbGVhayBvbiBTb2xhcmlzIDIuNi4gICBGaXggcHJvdmlkZWQgYnkgSmFjb2JvIE1hdHV0ZS4KICAgCjIwMDItMTItMDMgMDQ6MzMgIGR0czEyCgogICAqIGFnZW50L2hlbHBlcnMvOiB0YWJsZV9kYXRhLmMsIHRhYmxlX2RhdGFzZXQuYzoKCiAgIFRyYW5zbGF0ZSBHZXROZXh0IChhbmQgR2V0QnVsaykgcmVxdWVzdHMgaW50byBzaW1wbGUgR2V0IHJlcXVlc3RzLAogICB3aGVuIHBhc3NpbmcgdGhlbSBmcm9tIHRoZSB0YWJsZV9kYXRhIGhhbmRsZXIgdG8gdGFibGVfZGF0YXNldC4KICAgICBUaGlzIGlzIGFuYWxvZ291cyB0byBob3cgdGhlIGl0ZXJhdGUgaGFuZGxlciB3b3JrcywgYW5kIGFsbG93cwogICBsb3dlciBsZXZlbCBoYW5kbGVycyB0byBvdmVycmlkZSB0aGUgYmFzaWMgYmVoYXZpb3VyICh3aXRob3V0CiAgIGhhdmluZyB0byBkdXBsaWNhdGUgYWxsIG9mIHRoZSAiZmluZCBuZXh0IHJvdyIgY29kZSBldmVyeSB0aW1lKS4KICAgCjIwMDItMTItMDIgMDQ6NDggIGR0czEyCgogICAqIGFnZW50L2hlbHBlcnMvdGFibGUuYzoKCiAgIFJldHVybiBTTk1QdjItc3R5bGUgZXhjZXB0aW9ucywgcmF0aGVyIHRoYW4gdGhlIFNOTVB2MSAnbm9TdWNoTmFtZScgZXJyb3IuCiAgIFRoaXMgdXNlZCB0byBicmVhayBBZ2VudFggc3ViYWdlbnRzLCBidXQgdGhlIGxhdGVzdCBjaGFuZ2UgdG8gc25tcF9hZ2VudC5jCiAgICh0byBjYXRjaCBub1N1Y2h7SW5zdGFuY2UsT2JqZWN0fSBleGNlcHRpb25zKSBzZWVtcyB0byBoYXZlIGZpeGVkIHRoYXQgcHJvYmxlbS4KICAgCjIwMDItMTItMDIgMDQ6NDAgIGR0czEyCgogICAqIGFnZW50L3NubXBfYWdlbnQuYzoKCiAgIEV4cGxpY2l0bHkgcGFyZW50aGVzaXNlIGEgY29tcGFyaXNvbiwgdG8ga2VlcCB0aGUgY29tcGlsZXIgaGFwcHkuCiAgIAoyMDAyLTEyLTAyIDA0OjM5ICBkdHMxMgoKICAgKiBhZ2VudC9zbm1wX2FnZW50LmM6CgogICBJbmNsdXNpdmUtcmFuZ2UgR2V0TmV4dCByZXF1ZXN0cyBhcmUgdHJhbnNtaXR0ZWQgYXMgR2V0IHJlcXVlc3RzLCBzbyBtYXkKICAgd2VsbCByZXR1cm4gbm9TdWNoe0luc3RhbmNlLE9iamVjdH0gZXhjZXB0aW9ucy4gIENhdGNoIHRoZXNlIGFzIHdlbGwuCiAgIAoyMDAyLTEyLTAyIDA0OjM2ICBkdHMxMgoKICAgKiBhZ2VudC9oZWxwZXJzL3RhYmxlX2RhdGFzZXQuYzoKCiAgIENhdGNoIChhbmQgcmVqZWN0KSBhdHRlbXB0cyB0byBjcmVhdGUgYSBuZXcgcm93IHZpYSBhIG5vbi13cml0YWJsZSBvYmplY3QuCiAgIAoyMDAyLTExLTI4IDA0OjI0ICBkdHMxMgoKICAgKiBhZ2VudC9oZWxwZXJzL3RhYmxlX2l0ZXJhdG9yLmM6CgogICBOdWxsIG91dCBvbmUgZmluYWwgbG9vcF9jb250ZXh0IHBvaW50ZXIgYWZ0ZXIgYmVpbmcgZnJlZWQuCiAgIChQYXRjaCBwcm92aWRlZCBieSBSb2dlciBNY0NhbG1hbikKICAgCjIwMDItMTEtMjYgMTc6NTkgIG5iYQoKICAgKiBzbm1wbGliL3BhcnNlLmM6CgogICBEaXNjYXJkIHRoZSBzZWNvbmRhcnkgKEdST1VQKSBERVNDUklQVElPTiBpbnNpemUgYSBNT0RVTEUtQ09NUExJQU5DRQogICB0byBhdm9pZCBsZWFraW5nIG1lbW9yeS4gVGhhbmtzIHRvIEV1Z2VuZV9CcnVrQGJtYy5jb20KICAgCjIwMDItMTEtMjYgMTc6NTMgIG5iYQoKICAgKiBhcHBzL3NubXB0cmFuc2xhdGUuYzoKCiAgIFJlaW5zdGF0ZSB0aGUgLXcgb3B0aW9ucyB0aGF0IHdhcyBsb3N0IGluIHRoZSBpbmRlbnQgZnVyeQogICAKMjAwMi0xMS0yNiAxMDo1MCAgaGFyZGFrZXIKCiAgICogYWdlbnQvbWliZ3JvdXAvZXhhbXBsZXMvbm90aWZpY2F0aW9uLmM6CgogICBUaGUgbm90aWZpY2F0aW9uIHZhcmlhYmxlIHNob3VsZG4ndCBiZSBzdGF0aWMuICBBIGJ1ZyBmb3VuZCB3aGlsZQogICB0cmFja2luZyBkb3duIGEgcHJvYmxlbSBwb2ludGVkIG91dCBieSBWZW5pY2Ugb24gSVJDLgogICAKMjAwMi0xMS0yNiAwNDoxMCAgZHRzMTIKCiAgICogc25tcGxpYi9zbm1wX2VudW0uYzoKCiAgIEZpeCBpbmNvcnJlY3QgdXNhZ2Ugb2YgU0VfTUFYX0lEUyB2cyBTRV9NQVhfU1VCSURTLgogICBSZXBvcnRlZCBieSAnc2hpbmVwZWFrJwogICAKMjAwMi0xMS0yNSAyMjo0MSAgaGFyZGFrZXIKCiAgICogbG9jYWwvRkFRMkhUTUw6CgogICBoYWNrIG9mIGEgaGFjayBvZiBhIGhhY2ssIG9yOiBmaXggbXVsdGktbGluZSBGQVEgcXVlc3Rpb25zCiAgIAoyMDAyLTExLTI1IDEwOjA4ICBoYXJkYWtlcgoKICAgKiBSRUFETUUuYWdlbnR4OgoKICAgbWVudGlvbiBhZ2VudHhQaW5nSW50ZXJ2YWwKICAgCjIwMDItMTEtMTggMjE6MzkgIGhhcmRha2VyCgogICAqIGFnZW50L21pYmdyb3VwL3NtdXgvc211eC5oOgoKICAgYXBwbGllZCBwYXRjaCAjNTI3NjUwCiAgIAoyMDAyLTExLTExIDE3OjEwICBuYmEKCiAgICogc25tcGxpYi9taWIuYzoKCiAgIFJlc3BlY3QgdGhlIG1pYmRpcnMgY29uZiBkaXJlY3RpdmUuIFRoYW5rcyB0byBTdGVmYW4gUmFkbWFuIChzcmFkbWFuKQogICAKMjAwMi0xMS0xMSAxNjo1NyAgbmJhCgogICAqIGFwcHMvc25tcHRyYXBkX2xvZy5jOgoKICAgRml4IGEgbWlzc2luZyBlcnJvciByZXR1cm4KICAgCjIwMDItMTEtMTEgMTQ6MjYgIGhhcmRha2VyCgogICAqIHNubXBsaWIvOiBzbm1wVENQRG9tYWluLmMsIHNubXBVRFBEb21haW4uYzoKCiAgIGZpeCB0YWRkciBnZW5lcmF0aW9uL3BhcnNpbmcgZm9yIHBvcnQgYmFzZWQgdHJhbnNwb3J0cyB0byBwcm9wZXJseSB1c2UKICAgbmV0d29yayBieXRlIG9yZGVyaW5nLgogICAKMjAwMi0xMS0xMSAxNDoyNSAgaGFyZGFrZXIKCiAgICogYWdlbnQvbWliZ3JvdXAvdGFyZ2V0L3NubXBUYXJnZXRBZGRyRW50cnkuYzoKCiAgIGZpeCB3cml0ZSBzdXBwb3J0IGZvciB0aGUgdGltZW91dCBjb2x1bW4KICAgCjIwMDItMTEtMDkgMTA6MDYgIG5iYQoKICAgKiBhZ2VudC9taWJfbW9kdWxlcy5jLCBhZ2VudC9zbm1wX3ZhcnMuYywKICAgYWdlbnQvbWliZ3JvdXAvYWdlbnR4L21hc3Rlci5jLAogICBhZ2VudC9taWJncm91cC9hZ2VudHgvbWFzdGVyX2FkbWluLmMsCiAgIGFnZW50L21pYmdyb3VwL2FnZW50eC9zdWJhZ2VudC5jLAogICBpbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVzLmgsCiAgIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oOgoKICAgRG8gYXdheSB3aXRoIGEgYnVuY2ggb2YgY29tcGlsZXIgd2FybmluZ3MKICAgCjIwMDItMTEtMDkgMDk6NTkgIG5iYQoKICAgKiBhZ2VudC9taWJncm91cC86IHV0aWxfZnVuY3MuYywgdWNkLXNubXAvZXh0ZW5zaWJsZS5jLAogICB1Y2Qtc25tcC9tZW1vcnkuYywgdWNkLXNubXAvbWVtb3J5X2ZyZWVic2QyLmMsCiAgIHVjZC1zbm1wL3Bhc3MuYywgdWNkLXNubXAvcHJvYy5jLCBob3N0L2hyX3ByaW50LmMKOgoKICAgWmVybyBpcyBhbiBPSyBmaWxlIGRlc2NyaXB0b3IuIC0xIGlzIHRoZSBlcnJvciByZXR1cm4KICAgCjIwMDItMTEtMDkgMDk6NTQgIG5iYQoKICAgKiBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaCwgc25tcGxpYi9wYXJzZS5jOgoKICAgTW9yZSB0byB0aGUgcG9pbnQgbWVzc2FnZSBmb3IgdW5kZWZpbmVkIGlkZW50aWZpZXJzLiBCcm91Z2h0IGZvcndhcmQgZnJvbSA0LjIKICAgCjIwMDItMTEtMDkgMDk6NTIgIG5iYQoKICAgKiBhcHBzL3NubXB2YWNtLmM6CgogICBQcmludCB0aGUgZXJyb3IgaW5mb3JtYXRpb24gaW4gY2FzZSBvZiBlcnJvcgogICAKMjAwMi0xMS0wOSAwOTo1MSAgbmJhCgogICAqIGFwcHMvc25tcG5ldHN0YXQvcm91dGUuYzoKCiAgIFByb3RlY3QgYWdhaW5zdCB2MiBleGNlcHRpb24gcmVzdWx0cwogICAKMjAwMi0xMS0wOSAwOTo0OSAgbmJhCgogICAqIHNlZHNjcmlwdC5pbiwgbWFuL3NubXBjbWQuMS5kZWY6CgogICBQcm90ZWN0IFBSRUZJWCB3aGVuIGl0IGlzIHRoZSBlbnYgdmFyLiBUaGFua3MgdG8gU3RlZmFuIFJhZG1hbiAoc3JhZG1hbikKICAgCjIwMDItMTEtMDkgMDk6NDcgIG5iYQoKICAgKiBtaWJzL3JmY2xpc3Q6CgogICBBZGQgUkZDIDMzNzEgTDJUUC1NSUIKICAgCjIwMDItMTEtMDkgMDk6NDYgIG5iYQoKICAgKiBtaWJzL0lBTkFpZlR5cGUtTUlCLnR4dDoKCiAgIFVwZGF0ZWQgZnJvbSBJQU5BCiAgIAoyMDAyLTExLTA3IDA1OjU1ICBqYnBuCgogICAqIGFwcHMvc25tcHRhYmxlLmM6CgogICAgIC0gZml4IC1DZiBhbmQgLUN3IG9wdGlvbiBwcm9jZXNzaW5nIChwcmV2aW91c2x5IHdvdWxkIGNvcmUgZHVtcCBpZgogICAgICAgbm8gb3B0aW9uIHBhc3NlZCksIGFzIHBvaW50ZWQgb3V0IGJ5IGhhbXBhIG9uICNuZXQtc25tcAogICAKMjAwMi0xMS0wNiAxNTozNSAgcnN0b3J5CgogICAqIG5ldC1zbm1wLWNvbmZpZy5pbjoKCiAgIGZpeCBjdXQvcGFzdGUKICAgCjIwMDItMTEtMDYgMTU6MDQgIHJzdG9yeQoKICAgKiBjb25maWd1cmU6CgogICBjb25maWd1cmUgdG8gbWF0Y2ggY29uZmlndXJlLmluICYgbWFrZWZpbGVzCiAgIAoyMDAyLTExLTA2IDE0OjA4ICByc3RvcnkKCiAgICogbmV0LXNubXAtY29uZmlnLmluOgoKICAgYWRkIG1pc3NpbmcgZW5kIHF1b3RlCiAgIAoyMDAyLTExLTA2IDEzOjM1ICByc3RvcnkKCiAgICogbmV0LXNubXAtY29uZmlnLmluOgoKICAgYWRkIEBERVZGTEFHU0Agd2VoZXJ2ZXIgdGhlcmUgaXMgYSBAQ0ZMQUdTQCwgZXhjZXB0IGZvciB0aGUgbmV3IC0tYmFzZS1jZmxhZ3MKICAgCjIwMDItMTEtMDYgMTM6MjIgIHJzdG9yeQoKICAgKiBNYWtlZmlsZS50b3A6CgogICBhZGQgQERFVkZMQUdTQCB0byBDRkxBR1MKICAgCjIwMDItMTEtMDYgMTM6MjEgIHJzdG9yeQoKICAgKiBjb25maWd1cmUuaW46CgogICBzZXBlcmF0ZSBkZXZlbG9wZXIgY2ZsYWdzIGZyb20gbm9ybWFsIGNmbGFncwogICAKMjAwMi0xMS0wNiAxMjo1NSAgcnN0b3J5CgogICAqIGFnZW50L21pYmdyb3VwL3V0aWxfZnVuY3MuaDoKCiAgIGNoYW5nZSBzdHJ1Y3QuaCBpbmNsdWRlIHRvIHVzZSAiIiBpbnN0ZWFkIG9mIDxuZXQtc25tcC8+LCBzaW5jZSBpdCBpdCBhIGxvY2FsCiAgIGluY2x1ZGUsIG5vdCBhIHN5c3RlbSBpbmNsdWRlCiAgIAoyMDAyLTExLTA2IDEyOjM5ICByc3RvcnkKCiAgICogYWNjb25maWcuaCwgYWdlbnQvbWliZ3JvdXAvdXRpbF9mdW5jcy5oLAogICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9sbVNlbnNvcnMuYywKICAgaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbiwKICAgc25tcGxpYi91Y2Qtc25tcC1pbmNsdWRlcy5oLCB3aW4zMi9jb25maWcuaCwKICAgd2luMzIvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg6CgogICBwdXJnZSBJTl9VQ0RfU05NUF9TT1VSQ0UKICAgCjIwMDItMTEtMDUgMTI6MjQgIGhhcmRha2VyCgogICAqIHBlcmwvQW55RGF0YV9TTk1QL25ldHNoOgoKICAgYWRkZWQgYSB4bWxzaG9ydCBkZWxpbWl0ZXIgYXMgcmVxdWVzdGVkIGJ5IGxhbmRzIG9uIElSQwogICAKMjAwMi0xMS0wNSAxMTo1OSAgcnN0b3J5CgogICAqIGRpc3QvY3ZzdXA6CgogICB0YWJzIC0+IHNwYWNlcyBvbmx5IHRyeSB0byBjaG1vZCBSTyBzcmMgZGlyIGlmIG93bmVyIG9mIGRpcnMKICAgCjIwMDItMTEtMDUgMTE6NTYgIHJzdG9yeQoKICAgKiBta2luc3RhbGxkaXJzOgoKICAgbWFraW5nIGEgZGlyZWN0b3J5IGlzIG5vdCBhbiBlcnJvciwgc28gZG9uJ3Qgc2VuZCBvdXRwdXQgdG8gc3RkZXJyCiAgIAoyMDAyLTExLTA0IDExOjE1ICBoYXJkYWtlcgoKICAgKiBhZ2VudC9taWJncm91cC90YXJnZXQvc25tcFRhcmdldFBhcmFtc0VudHJ5LmM6CgogICBhbGxvdyB1bnJlZ2lzdGVyZWQgc2VjdXJpdHkgbW9kZWxzIDw9IDIKICAgCjIwMDItMTEtMDQgMTE6MTQgIGhhcmRha2VyCgogICAqIGFnZW50L21pYmdyb3VwL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5VGFibGUuYzoKCiAgIGVuYWJsZSByb3cgY3JlYXRpb24gdG8gYmUgYmV0dGVyIHN1cHBvcnRlZCAocm93c3RhdHVzIG5vIGxvbmdlciBoYXMgdG8KICAgYmUgZmlyc3QgaW4gdGhlIGxpc3QsIC4uLikKICAgCjIwMDItMTEtMDQgMTE6MTMgIGhhcmRha2VyCgogICAqIG5ldC1zbm1wLWNvbmZpZy5pbjoKCiAgIGFkZCBjcHBmbGFncyB0byAtLWNmbGFncwogICAKMjAwMi0xMS0wNCAxMToxMyAgaGFyZGFrZXIKCiAgICogTkVXUzoKCiAgIGFkZCBzdHVmZiBmb3IgNS4wLjcgKG9yIHdoYXRldmVyKSBtZW50aW9uaW5nIGEgZmV3IG5ldyBmZWF0dXJlcy4KICAgCjIwMDItMTEtMDEgMTI6MDYgIGhhcmRha2VyCgogICAqIHNubXBsaWIvc25tcF9hcGkuYzoKCiAgIEZpeGVkIGJ1ZyAjNjMyMDk0IHVzaW5nIHRoZSBzdWdnZXN0ZWQgbWV0aG9kOiB3YXRjaCBmb3IgTlVMTCBzdHJlcnJvcigpIHJldHVybgogICAKMjAwMi0xMS0wMSAxMDowOSAgcnN0b3J5CgogICAqIE1ha2VmaWxlLmluOgoKICAgdW5kbyBteSBjaGFuZ2VzIGZyb20gciA1LjE3LCBhdHRlbXB0aW5nIHRvIHJlZHVjZSBydW5zIG9mIGNvbmZpZy5zdGF0dXMKICAgYnkgdXNpbmcgZXhwbGljaXQgcGF0aHMgdG8gc3JjZGlyLCBhbmQgbGV0IFZQQVRIIGRvIGl0J3MgdGhpbmcKICAgCjIwMDItMTAtMjkgMTQ6MzAgIHJzdG9yeQoKICAgKiBzbm1wbGliL01ha2VmaWxlLmluOgoKICAgdGFyZ2V0IHRvIGJ1aWxkIGJpbmFyeSBhcnJheSB0ZXN0IGFwcDsgdHdlYWsgdG8gcGFyc2UgdGVzdCB0YXJnZXQgKHJlZHVjZXMgbW9zdAogICBidXQgbm90IGFsbCBleHRlcm5hbCByZWZlcmVuY2VzKQogICAKMjAwMi0xMC0yOSAxNDoyNyAgcnN0b3J5CgogICAqIHNubXBsaWIvY29udGFpbmVyX2JpbmFyeV9hcnJheS5jOgoKICAgZml4IGZvciBiaW5hcnkgc2VhcmNoIHByb2JsZW0gbm90ZWQgYnkgUm9teSBDaHJpc3RlbnNlbiBvbiBjb2RlcnM7IHBhcnRpYWwKICAgKGlmZGVmJ2Qgb3V0KSBjb2RlIGZvciBhIGJpbmFyeSBhcnJheSBpdGVyYXRvcgogICAKMjAwMi0xMC0yOSAxNDoyNSAgcnN0b3J5CgogICAqIHNubXBsaWIvdGVzdF9iaW5hcnlfYXJyYXkuYzoKCiAgIHNpbXBsZSB0ZXN0IHByb2dyYW0gZm9yIGJpbmFyeSBhcnJheQogICAKMjAwMi0xMC0yOSAwOToyOCAgaGFyZGFrZXIKCiAgICogcGVybC9TTk1QL1NOTVAueHM6CgogICBGaXggZGVidWdnaW5nIGFzIG5vdGVkIGluIGJ1ZyAjNjMwMzQ4CiAgIAoyMDAyLTEwLTI4IDE5OjQ3ICBoYXJkYWtlcgoKICAgKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbjoKCiAgIGNoYW5nZWQgLjEuNi4zIHRvIDEuMy42IGFzIG5vdGVkIGluIGNvbXAucHJvdG9jb2xzLnNubXAKICAgCjIwMDItMTAtMjggMTU6MDEgIGhhcmRha2VyCgogICAqIGFnZW50L21pYmdyb3VwL2V4YW1wbGVzL3VjZERlbW9QdWJsaWMuY29uZjoKCiAgIGNoYW5nZWQgcGFzc3dvcmQKICAgCjIwMDItMTAtMjggMTQ6NTcgIGhhcmRha2VyCgogICAqIGFnZW50L21pYmdyb3VwL2V4YW1wbGVzL3VjZERlbW9QdWJsaWMuY29uZjoKCiAgIG1pc2MgdmFjbSBmaXhlcwogICAKMjAwMi0xMC0yOCAwODo0MSAgamJwbgoKICAgKiBzbm1wbGliL3NubXBfYXBpLmM6CgogICAgIC0gcmVtb3ZlIGVycm9uZW91cyBmcmVlKCkgb2YgcnhidWYKICAgCjIwMDItMTAtMjUgMTI6MzUgIGhhcmRha2VyCgogICAqIHNubXBsaWIvc25tcF9hcGkuYzoKCiAgIGZpeGVkIFNOTVBfQ0FMTEJBQ0tfT1BfRElTQ09OTkVDVCAtPiBORVRTTk1QX09QX0NBTExCQUNLX0RJU0NPTk5FQ1QgYXMgbm90ZWQgYnkgVHJvZ0wgb24gSVJDCiAgIAoyMDAyLTEwLTI1IDA3OjM0ICBqYnBuCgogICAqIHNubXBsaWIvc25tcF9hcGkuYzoKCiAgICAgLSBwZXJmb3JtIGEgTkVUU05NUF9DQUxMQkFDS19PUF9ESVNDT05ORUNUIHR5cGUgY2FsbGJhY2sgaWYgd2UKICAgICAgIGRlY2lkZSB0byBzaHV0ZG93biBhIHN0cmVhbSB0eXBlIGNvbm5lY3Rpb24gYmVjYXVzZSB3ZSByZWNlaXZlZAogICAgICAgYW4gZXhjZXNzaXZlbHkgbGFyZ2UgcGFja2V0LgogICAKMjAwMi0xMC0yNCAxMDo0MSAgaGFyZGFrZXIKCiAgICogUkVBRE1FOgoKICAgQWRkZWQgdGhlIHN1cGVyLWJ1Zy1wYXRjaCBnZW5lcmF0b3IgU3RlZmFuIFJhZG1hbiB0byB0aGUgVEhBTktTIGxpc3QKICAgCjIwMDItMTAtMjQgMTA6NDAgIGhhcmRha2VyCgogICAqIGNvbmZpZ3VyZS5pbjoKCiAgIGJ1ZyAjNjE3NTA4OiBhZGRlZCB0aGUgbXRhX3NlbmRtYWlsIG1vZHVsZSB0byAtLWhlbHAKICAgCjIwMDItMTAtMjQgMTA6MzUgIGhhcmRha2VyCgogICAqIGxvY2FsL01ha2VmaWxlLmluOgoKICAgdXBkYXRlIGluc3RhbGwgbGlzdCBmb3IgbWliMmMgY29uZiBmaWxlcyBhbmQgcmVtb3ZlIG9sZCBvbmUKICAgCjIwMDItMTAtMjMgMjA6MzQgIGhhcmRha2VyCgogICAqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluOgoKICAgZml4IGluY29ycmVjdCB2YXJpYWJsZSBuYW1lIEkgbm90aWNlZCB3aGVuIGNvcHlpbmcgdG8gYSBkaWZmZXJlbnQgY29uZmlndXJlIHNjcmlwdCBpbiBhbm90aGVyIHBhY2thZ2UKICAgCjIwMDItMTAtMjMgMjA6MjggIGhhcmRha2VyCgogICAqIE1ha2VmaWxlLmluOgoKICAgRml4ZWQgYnVnIzYxNzgzODogdmVyc2lvbnRhZyBpc24ndCBkaXN0cmlidXRlZCBhbmQgc2hvdWxkbid0IGJlIGFsd2F5cwogICB1c2VkIGluIHRoZSBtYWtlIGRpc3RjbGVhbiBjYWxscy4KICAgCjIwMDItMTAtMjMgMjA6MTIgIGhhcmRha2VyCgogICAqIGFnZW50L21pYmdyb3VwL2Rpc21hbi9tdGVUcmlnZ2VyVGFibGUuYzoKCiAgIGluY29uc2VxdWVuY2lhbCBtZW1vcnkgbGVha3MgZml4ZWQgKGluaXQgdGltZSBsZWFrcykuCiAgIAoyMDAyLTEwLTIzIDIwOjEwICBoYXJkYWtlcgoKICAgKiBhZ2VudC9oZWxwZXJzL3RhYmxlX2l0ZXJhdG9yLmM6CgogICBGaXhlZCB2YXJpb3VzIG1lbW9yeSBsZWFrcyBpbiB0aGUgdGFibGVfaXRlcmF0b3IgYXMgcG9pbnRlZCBvdXQgYnkKICAgUm9nZXIgTWNDYWxtYW4gYW5kIEpheSBQYXJsYXIgb24gdGhlIC1jb2RlcnMgbGlzdCAoaW5jbHVkaW5nIHRoZWlyIHBhdGNoZXMpCiAgIAoyMDAyLTEwLTIzIDE4OjQ0ICBoYXJkYWtlcgoKICAgKiBhZ2VudC9taWJncm91cC9ub3RpZmljYXRpb24vc25tcE5vdGlmeVRhYmxlLmM6CgogICBzbm1wTm90aWZ5VGFibGUuYwogICAKMjAwMi0xMC0yMyAxODo0MCAgaGFyZGFrZXIKCiAgICogYWdlbnQvbWliZ3JvdXAvZGlzbWFuL210ZVRyaWdnZXJUYWJsZS5jOgoKICAgZnJlZSBhIHByZXZpb3VzbHkgbWFsbG9jZWQgcG9pbnRlciB0byB0aGUgd2F0Y2ggdmFyaWFibGUgYmVmb3JlIHJlcGxhY2luZyBpdC4KICAgCjIwMDItMTAtMjMgMTg6NDAgIGhhcmRha2VyCgogICAqIGFnZW50L21pYmdyb3VwL2V4YW1wbGVzL2RlbGF5ZWRfaW5zdGFuY2UuYzoKCiAgIHJlbW92ZSBkdXBsaWNhdGUgdW51c2VkIG1hbGxvYy4KICAgCjIwMDItMTAtMjEgMTI6NDMgIGpicG4KCiAgICogaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc29sYXJpczIuOS5oOgoKICAgICAtIGFkZCBzeXN0ZW0gZmlsZSBmb3IgU29sYXJpcyA5CiAgIAoyMDAyLTEwLTE3IDIyOjQ0ICBoYXJkYWtlcgoKICAgKiBhZ2VudC9hZ2VudF9yZWdpc3RyeS5jLCBhZ2VudC9zbm1wX2FnZW50LmMsCiAgIGFnZW50L21pYmdyb3VwL21pYklJL3ZhY21fdmFycy5jLAogICBhZ2VudC9taWJncm91cC9taWJJSS92YWNtX3ZhcnMuaCwKICAgaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9jYWxsYmFja3MuaCwKICAgaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9yZWdpc3RyeS5oLAogICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdmFjbS5oLCBzbm1wbGliL3ZhY20uYzoKCiAgIE9wdGltaXplZCB0aGUgVkFDTSBjaGVja3MgaW4gdGhlIGNhc2Ugb2YgZ2V0bmV4dC9nZXRidWxrIHNvIHRoYXQgd2hlbgogICBsYXJnZSBwb3J0aW9ucyBvZiB0aGUgbWliIHRyZWUgYXJlIGV4Y2x1ZGVkLCB0aGUgc3ViLW1pYiBhY2Nlc3MgY29kZQogICB3b24ndCBiZSBjYWxsZWQgYXQgYWxsIChmaW5hbGx5IGltcGxlbWVudGluZyBhIHZlcnkgbG9uZyBuZWVkZWQgb3B0aW1pemF0aW9uKS4KICAgCjIwMDItMTAtMTcgMjI6NDEgIGhhcmRha2VyCgogICAqIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oLCBzbm1wbGliL3NubXBfYXBpLmMKOgoKICAgbmV3IGZ1bmN0aW9uIHRvIGZpbmQgdGhlIGNvbW1vbmFsaXR5IGJldHdlZW4gdHdvIG9pZHM6IG5ldHNubXBfb2lkX2ZpbmRfcHJlZml4CiAgIAoyMDAyLTEwLTE3IDIyOjM5ICBoYXJkYWtlcgoKICAgKiBNYWtlZmlsZS5pbiwgYWNsb2NhbC5tNCwgY29uZmlndXJlLAogICBjb25maWd1cmUuaW46CgogICBQcmludCBvdXQgYSAic3VtbWFyeSIgYXQgdGhlIGVuZCBvZiBhIHJ1bgogICAKMjAwMi0xMC0xNyAwNTo0MCAgZHRzMTIKCiAgICogbG9jYWwvbWliMmMub2xkLWFwaS5jb25mOgoKICAgUHJvcGVybHkgdGVybWluYXRlIGEgbG9vcCBjb25zdHJ1Y3QgKG1pc3NpbmcgJ0BlbmRAJykKICAgU3BvdHRlZCBieSBLYXJsIENvb3Blci4gICAgT29wcyEKICAgCjIwMDItMTAtMTYgMTc6MTkgIHJzdG9yeQoKICAgKiBhZ2VudC9zbm1wZC5jOgoKICAgcmVzdG9yZSBjb250aW51ZSBhZnRlciBFSU5UUiBjYXVzZWQgYnkgc2lnbmFsIHdlIGhhbmRsZWQgKGluc3RlYWQgb2YgZmFsbGluZwogICB0aG9yb3VnaCB0byBleGl0ISkKICAgCjIwMDItMTAtMTYgMTc6MDAgIHJzdG9yeQoKICAgKiBhZ2VudC9zbm1wZC5jOgoKICAgY2hlY2sgZm9yIG91ciBzaWduYWwgZmxhZ3Mgb24gRUlOVFIsIGFuZCBvbmx5IHJlbGVzZWN0IGlmIG5vdCBjaGFuZ2VkOwogICBkZWJ1ZyBtc2cgd2hlbiBzaWduYWxzIHJlZ2lzdGVyZWQgYW5kIGZvciBzZWxlY3QvZmRzZXRzOwogICAKMjAwMi0xMC0xNiAxNTo1MiAgcnN0b3J5CgogICAqIE1ha2VmaWxlLnRvcDoKCiAgIG1vdmUgQ1BQRkxBR1MgYmVmb3JlIHVzZXIgY29uZmlndXJlIENGTEFHUy4uIHNvIGlmIGEgdXNlciBhZGRzIHNvbWV0aGluZwogICBsaWtlIC91c3IvbG9jYWwvaW5jbHVkZSB0byBDRkxBR1MsIHdlIHdpbGwgcGljayB1cCBvdXIgbG9jYWwgaW5jbHVkZXMgZmlyc3QsCiAgIGluc3RlYWQgb2YgaW5jbHVkZXMgZnJvbSBhIHByZXZpb3VzIHJlbGVhc2UuLgogICAKMjAwMi0xMC0xNiAwMDowNiAgcnN0b3J5CgogICAqIGFwcHMvOiBzbm1wdHJhcGQuYywgc25tcHRyYXBkX2xvZy5jLCBzbm1wdHJhcGRfbG9nLmgKOgoKICAgbWFrZSBzdXJlIHNubXB0cmFwZCBhbHdheXMgaG9ub3JzIERTX0FQUF9OVU1FUklDX0lQIGZvciBsb2dnaW5nCiAgIAoyMDAyLTEwLTE1IDE3OjA5ICByc3RvcnkKCiAgICogc25tcGxpYi9taWIuYzoKCiAgIG5ldHNubXBfZ2V0X2Jvb2xlYW4gLT4gbmV0c25tcF9kc19nZXRfYm9vbGVhbgogICAKMjAwMi0xMC0xNSAxNDowOCAgcnN0b3J5CgogICAqIGFnZW50L2hlbHBlcnMvdGFibGUuYzoKCiAgIGZpeCBjb25zdGFudCB1c2VkIGluIGFzc2VydCwgbm90ZWQgb24gY29kZXJzCiAgIAoyMDAyLTEwLTE1IDE0OjA3ICByc3RvcnkKCiAgICogYWdlbnQvc25tcF9hZ2VudC5jOgoKICAgaW5jbHVkZSBzeXNsb2cgZm9yIGxpYndyYXAgbG9nIGxldmVscwogICAKMjAwMi0xMC0xNSAxMDozOSAgaGFyZGFrZXIKCiAgICogbWFuL3NubXBjbWQuMS5kZWY6CgogICBBZGQgeWV0IGFub3RoZXIgd2F5IHRvIHNwZWNpZnkgdjYgYWRkcmVzc2VzCiAgIAoyMDAyLTEwLTE0IDExOjU0ICBoYXJkYWtlcgoKICAgKiBtYW4vc25tcGNtZC4xLmRlZjoKCiAgIGZpeCBpcHY2IHRyYW5zcG9ydCBhZGRyZXNzIHNwZWNzCiAgIAoyMDAyLTEwLTExIDE5OjE4ICBoYXJkYWtlcgoKICAgKiBSRUFETUUuY211LCBkaXN0L25ldC1zbm1wLnNwZWM6CgogICBSZW1vdmUgdGhlIFJFQURNRS5jbXUgZmlsZSAoZW50aXJlbHkgb3V0IG9mIGRhdGUgYXQgdGhpcyBwb2ludCkuCiAgIAoyMDAyLTEwLTExIDE2OjU3ICBoYXJkYWtlcgoKICAgKiBhY2NvbmZpZy5oLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwKICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZGlzay5jLAogICBpbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLmluOgoKICAgcGF0Y2ggIzYwMDkzMyBmcm9tIERvbmFsIERpYW1vbmQ6IGRza1BlcmNlbnROb2RlIGZvciBGcmVlQlNENAogICAKMjAwMi0xMC0xMSAxNjo0OSAgaGFyZGFrZXIKCiAgICogc25tcGxpYi9taWIuYzoKCiAgIFBhdGNoICM1OTgyODAgZnJvbSBKZWZmIFdhdHNvbjogbWFrZSAtT1Egbm90IHByaW50IHR5cGUgd2FybmluZ3MuCiAgIAoyMDAyLTEwLTExIDE2OjQzICBoYXJkYWtlcgoKICAgKiBkaXN0L01ha2VmaWxlOgoKICAgZml4IGluY2x1ZGUgZGlyZWN0b3J5CiAgIAoyMDAyLTEwLTExIDE2OjQyICBoYXJkYWtlcgoKICAgKiBkaXN0Ly5jdnNpZ25vcmU6CgogICBpZ25vcmUgcnBtIHN1YmRpcgogICAKMjAwMi0xMC0xMSAxNjozMiAgaGFyZGFrZXIKCiAgICogZGlzdC9SRUxFQVNFLUlOU1RSVUNUSU9OUzoKCiAgIGJldHRlciBkb2NzIGFib3V0IGF1dG8tZXh0cmFjdGVkIFNGIG5ld3MKICAgCjIwMDItMTAtMTEgMTY6MDQgIGhhcmRha2VyCgogICAqIGRpc3QvOiBNYWtlZmlsZSwgbmV0LXNubXAuc3BlYzoKCiAgIG1lcmdlIGluIHBhdGNoICM1OTg4Njk6IE1hcmsgSGFyaWcncyBiZXR0ZXIgcnBtIHN0dWZmCiAgIAoyMDAyLTEwLTExIDE1OjIxICBoYXJkYWtlcgoKICAgKiBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oLCBzbm1wbGliL21pYi5jCjoKCiAgIEFsdGVybmF0aXZlIHRvIGEgcGF0Y2ggc3VnZ2VzdGlvbjogYWRkIC1PVSB0byBub3QgcHJpbnQgVU5JVFMgc3VmZml4ZXMuCiAgIAoyMDAyLTEwLTExIDE1OjE4ICBoYXJkYWtlcgoKICAgKiBtYW4vc25tcGNtZC4xLmRlZjoKCiAgIC4uL2FnZW50L3NubXBfYWdlbnQuYwogICAKMjAwMi0xMC0xMSAxNToxNCAgaGFyZGFrZXIKCiAgICogbWFuL3NubXAuY29uZi41LmRlZjoKCiAgIGRvY3VtZW50IGRvbnRQcmludFVuaXRzCiAgIAoyMDAyLTEwLTExIDE0OjQ4ICBoYXJkYWtlcgoKICAgKiBhZ2VudC9zbm1wX2FnZW50LmM6CgogICBQYXRjaCAjNjE3MTUxIGZyb20gQW5kcmV3IFJ1Y2tlciBKb25lczogZml4IGxpYndyYXAgaGVhZGVycy4KICAgICAtIEknbSBzdGlsbCB1bmhhcHB5IHdpdGggaG93IGxpYndyYXAgZnVuY3Rpb25zLi4uICBuZWVkcyB0aGlua2luZyBhYm91dC4KICAgCjIwMDItMTAtMTEgMTM6NTMgIGhhcmRha2VyCgogICAqIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL2Rpc2tpby5jOgoKICAgUGF0Y2ggIzMxMjY5NCBmcm9tIEpvaG4gU3VydmV5b3I6IGZpeCBkaXNraW8gb24gc29sYXJpcy4KICAgCjIwMDItMTAtMTEgMTM6MzcgIGhhcmRha2VyCgogICAqIGFnZW50L21pYmdyb3VwL21pYklJL2F0LmM6CgogICBBcHBsaWVkIHBhdGNoICM2MjEzOTggZnJvbSBNYXR0aGV3IEtyZW56ZXIgdG8gZml4IGxpbnV4IGFycCB0YWJsZS4KICAgCjIwMDItMTAtMTEgMDk6NDcgIHJzdG9yeQoKICAgKiB3aW4zMi9zbm1wZHNkay9zbm1wZC5kc3A6CgogICBjaGcgbmV0c25tcG1pYnMgLT4gbmV0c25tcG1pYnNza2QgKG5vdGVkIG9uIGNvZGVycyBieSBKZWQgV2hpdHRlbikKICAgCjIwMDItMTAtMTEgMDk6NDUgIGpicG4KCiAgICogbWFuL3NubXBjbWQuMS5kZWY6CgogICAgIC0gbm90ZSBzcXVhcmUgYnJhY2tldHMgZm9yIElQdjYgYWRkcmVzc2VzCiAgIAoyMDAyLTEwLTExIDA5OjQwICBqYnBuCgogICAqIGFnZW50L3NubXBkLmM6CgogICAgIC0gcmVzdGFydCBzZWxlY3QoKSBtb3JlIHF1aWNrbHkgaWYgYW4gRUlOVFIgaGFwcGVucwogICAKMjAwMi0xMC0xMSAwMTo1MSAgaGFyZGFrZXIKCiAgICogRkFROgoKICAgYXBwbGllZCBIYXJyaWUncyBwYXRjaCBkZXNjcmliaW5nIGxvdyBtZW1vcnkgZm9vdHByaW50cwogICAKMjAwMi0xMC0xMCAxMTozOCAgaGFyZGFrZXIKCiAgICogc25tcGxpYi9zbm1wa3NtLmM6CgogICBQYXRjaCBmcm9tIEtlbiBIb3JzdGVpbiB0byBmaXggS1NNIG1vZHVsZQogICAKMjAwMi0xMC0xMCAwNjoyMiAgamJwbgoKICAgKiBhZ2VudC9oZWxwZXJzL3RhYmxlX2FycmF5LmM6CgogICAgIC0gcmVtb3ZlIGJhZCBpbmxpbmVzIHdoaWNoIGNhdXNlIGZpbGUgbm90IHRvIGNvbXBpbGUgd2l0aCBTdW4gQ0MuCiAgICAgICBTZWUgYnVnICM2MjA4MjcuCiAgIAoyMDAyLTEwLTEwIDAyOjAzICBoYXJkYWtlcgoKICAgKiBkaXN0L25ldC1zbm1wLnNwZWM6CgogICBhZGQgLmxhIGZpbGVzCiAgIAoyMDAyLTEwLTEwIDAyOjAwICBoYXJkYWtlcgoKICAgKiBkaXN0L25ldC1zbm1wLnNwZWM6CgogICBtYWtlIHRoZSAuc3BlYyBmaWxlIGFsbW9zdCB1c2FibGUuCiAgIAoyMDAyLTEwLTA4IDE4OjU1ICBoYXJkYWtlcgoKICAgKiBGQVE6CgogICBGQVEgdXBkYXRlcyBmb3IgZG93bmxvYWQgc2l0ZXMuCiAgIAoyMDAyLTEwLTA4IDEwOjM2ICBoYXJkYWtlcgoKICAgKiBwZXJsL09JRC9PSUQucG06CgogICBQYXRjaCBmcm9tIEpvc2h1YSBLZXJvZXMgZm9yIHN0cmluZyBjb21wYXJpc29ucwogICAKMjAwMi0xMC0wNyAxMzo1NyAgaGFyZGFrZXIKCiAgICogRkFROgoKICAgYWRkZWQgYSBzdGF0ZW1lbnQgYWJvdXQgdGhlIENPUFlJTkcgZmlsZSAoc3VnZ2VzdGVkIGJ5IEhhcnJpZSkKICAgCjIwMDItMTAtMDYgMTQ6MzIgIHJzdG9yeQoKICAgKiBkaXN0L1JFQURNRS5idWlsZC1zY3JpcHRzOgoKICAgbnNiLSogbGlrZXMgZnVsbCBwYXRocywgdXBkYXRlIGV4YW1wbGVzOyBmaXggc291cmNlZm9yZ2UgdXBsb2FkIHNpdGUKICAgCjIwMDItMTAtMDUgMTc6NDIgIGhhcmRha2VyCgogICAqIFJFQURNRSwgc2Vkc2NyaXB0LmluLCBzbm1wbGliL3NubXBfdmVyc2lvbi5jCiwgRkFRLCBwZXJsL1NOTVAvU05NUC5wbToKCiAgIC0gKHNubXBsaWIvc25tcF92ZXJzaW9uLmMgc2Vkc2NyaXB0LmluKTogdmVyc2lvbiB0YWcgKCA1LjAuNiApCgoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKQ2hhbmdlczogVjUuMC41IC0+IFY1LjAuNgoKMjAwMi0xMC0wNSAxNDoyOSAgaGFyZGFrZXIKCiAgICogYWdlbnQvTWFrZWZpbGUuZGVwZW5kLCBhZ2VudC9oZWxwZXJzL01ha2VmaWxlLmRlcGVuZCwKICAgYWdlbnQvbWliZ3JvdXAvTWFrZWZpbGUuZGVwZW5kLCBhcHBzL01ha2VmaWxlLmRlcGVuZCwKICAgYXBwcy9zbm1wbmV0c3RhdC9NYWtlZmlsZS5kZXBlbmQsIHNubXBsaWIvTWFrZWZpbGUuZGVwZW5kCjoKCiAgIG1ha2UgZGVwZW5kCiAgIAoyMDAyLTEwLTA1IDE0OjA5ICBoYXJkYWtlcgoKICAgKiBNYWtlZmlsZS50b3A6CgogICB1cGRhdGUgZm9yIDUuMC42CiAgIAoyMDAyLTEwLTA1IDE0OjA4ICBoYXJkYWtlcgoKICAgKiBkaXN0L1JFTEVBU0UtSU5TVFJVQ1RJT05TOgoKICAgcmVtb3ZlIGlsbGVnYWwgZmxhZyBmcm9tIG5zYi1jb25maWcKICAgCjIwMDItMTAtMDUgMTM6NDEgIHJzdG9yeQoKICAgKiBhZ2VudC9zbm1wX2FnZW50LmM6CgogICBlZmVuY2UgaXMgeW91ciBmcmllbmQ6IGRvbid0IGFsbG9jYXRlIDAgYnl0ZXMKICAgCjIwMDItMTAtMDUgMTI6NTggIHJzdG9yeQoKICAgKiBhZ2VudC9taWJncm91cC9hZ2VudHgvc3ViYWdlbnQuYzoKCiAgIGVmZW5jZSBpcyB5b3VyIGZyaWVuZDogZG9uJ3QgcmVmZXJlbmNlIHB0ciBhZnRlciBpcyBoYXMgYmVlbiBmcmVlJ2QuCiAgIAoyMDAyLTEwLTA0IDA3OjE3ICBoYXJkYWtlcgoKICAgKiBhZ2VudC9zbm1wX2FnZW50LmM6CgogICBmaXggc2Vjb25kYXJ5IGVmZmVjdCBvZiBidWcgNjEzOTgzIGFuZCByZWFsbHkgZml4IGl0IHRoaXMgdGltZS4KICAgCjIwMDItMTAtMDIgMTA6NTYgIGhhcmRha2VyCgogICAqIGFnZW50L21pYmdyb3VwL3R1bm5lbC86IHR1bm5lbC5jIChWNC0yLXBhdGNoZXMuMiksIHR1bm5lbC5jCjoKCiAgIFBhdGNoIGZyb20gRnJhbmsgU3RyYXVzcyB0byBmaXggc29tZSBjb2RpbmcgZXJyb3JzCiAgIAoyMDAyLTEwLTAxIDA3OjM5ICByc3RvcnkKCiAgICogYWdlbnQvc25tcF92YXJzLmM6CgogICBvZmZpY2FsIHBhdGNoIDYxNzA0OTogaW5pdGlhbGl6ZSBjb250YWluZXIgbGlzdCBlYXJsaWVyIChpbiBpbml0X2FnZW50KQogICAKMjAwMi0xMC0wMSAwNzozNSAgcnN0b3J5CgogICAqIGFnZW50L3NubXBfdmFycy5jOgoKICAgcmVtb3ZlIF5NIGNoYXJhY3RlcnMgKGRhbW4gd2luZG93cyBlZGl0b3JzKQogICAKMjAwMi0wOS0zMCAxNToxNyAgcnN0b3J5CgogICAqIEZBUSwgUkVBRE1FLCBzZWRzY3JpcHQuaW4sIHBlcmwvU05NUC9TTk1QLnBtCiwgc25tcGxpYi9zbm1wX3ZlcnNpb24uYzoKCiAgIC0gKHNubXBsaWIvc25tcF92ZXJzaW9uLmMgc2Vkc2NyaXB0LmluKTogdmVyc2lvbiB0YWcgKCA1LjAuNSApCiAgIAoyMDAyLTA5LTMwIDE1OjE2ICByc3RvcnkKCiAgICogZGlzdC9SRUxFQVNFLUlOU1RSVUNUSU9OUzoKCiAgIGFkZCBpbmZvIG9uIG1kNXN1bXMgYW5kIGdwZyBzaWduaW5nCiAgIAoyMDAyLTA5LTMwIDE1OjE1ICByc3RvcnkKCiAgICogZGlzdC9jdnN1cDoKCiAgIGZpeCBjaG1vZCB0byBkbyB3aGF0IEkgd2FudGVkLCBub3Qgd2hhdCBJIHRvbGQgaXQKICAgCjIwMDItMDktMzAgMTU6MTQgIHJzdG9yeQoKICAgKiBDaGFuZ2VMb2csIE1ha2VmaWxlLnRvcCwgTkVXUzoKCiAgIHVwZGF0ZSBmb3IgNS4wLjUKICAgCjIwMDItMDktMzAgMTQ6MjcgIHJzdG9yeQoKICAgKiBDaGFuZ2VMb2c6CgogICBtZXJnZSBwcmUgY2hhbmdlcyBpbnRvIDUuMC40IGNvbW1lbnRzCiAgIAoyMDAyLTA5LTMwIDE0OjI1ICByc3RvcnkKCiAgICogTkVXUzoKCiAgIHVwZGF0ZSBmb3IgNS4wLjQKICAgCjIwMDItMDktMzAgMTQ6MjMgIGhhcmRha2VyCgogICAqIE5FV1M6CgogICBORVdTIHVwZGF0ZXMgZm9yIDUuMC40CiAgIAoyMDAyLTA5LTMwIDE0OjAzICByc3RvcnkKCiAgICogUkVBRE1FOgoKICAgdXBkYXRlIG15IGVtYWlsIGFkZHJlc3MKICAgCjIwMDItMDktMzAgMTQ6MDMgIHJzdG9yeQoKICAgKiBDaGFuZ2VMb2c6CgogICB1cGRhdGUgZm9yIHJlbGVhc2UgNS4wLjQKCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgpDaGFuZ2VzOiBWNS4wLjMgLT4gVjUuMC41CgoyMDAyLTA5LTMwIDE2OjA4ICByc3RvcnkKCiAgICogYWdlbnQvaGVscGVycy90YWJsZS5jOgoKICAgbWFrZSBsZW4gYSBzaXplX3QgdG8gZml4IHByb2JsZW0gb24gNjQgYml0IHN5c3RlbSwgcmVwb3J0ZWQgYnkgc2Vibm9kYCBpbiBJUkMKICAgCjIwMDItMDktMzAgMTY6MDUgIHJzdG9yeQoKICAgKiBhZ2VudC9oZWxwZXJzL3RhYmxlLmM6CgogICBkb24ndCB1c2Ugc3RhdGljIGxvY2FsIHZhcnMsIGFzIHRoZXkgYXJlIGxpa2VseSB0byBjYXVzZSBwcm9ibGVtcyB3aXRoIHRocmVhZHMKICAgCjIwMDItMDktMzAgMTU6NDggIHJzdG9yeQoKICAgKiBkaXN0L25zYi1wYWNrYWdlOgoKICAgbWFrZSBzdXJlIGluc3RhbGwgZGlyIGlzIHJlbGF0aXZlIHRvIGJ1aWxkIGRpcgogICAKMjAwMi0wOS0zMCAxNToyMCAgcnN0b3J5CgogICAqIHNubXBsaWIvdmFjbS5jOgoKICAgYWRkIG1pc3NpbmcgbmV3bGluZSBpbiBkZWJ1ZwogICAKMjAwMi0wOS0zMCAxNToxOSAgcnN0b3J5CgogICAqIGRpc3QvOiBuc2ItZnVuY3Rpb25zLCBuc2ItcGFja2FnZToKCiAgIGZpeCB0eXBvcwogICAKMjAwMi0wOS0zMCAxNToxOCAgcnN0b3J5CgogICAqIGFnZW50L3NubXBfYWdlbnQuYzoKCiAgIGF2b2lkIGluZmluaXRlIGxvb3AKICAgCjIwMDItMDktMzAgMTQ6NTkgIHJzdG9yeQoKICAgKiBkaXN0L25zYi1mdW5jdGlvbnM6CgogICBkb24ndCBhc3N1bWUgbWFrZSBpcyBHTlUgbWFrZSwgYW5kIHNlYXJjaCBmb3IgaXQuIHJlcXVpcmUgdXNlciB0byBzZXQgYW4KICAgZW52IHZhciBpZiBubyBHTlUgbWFrZSBpcyBmb3VuZCBpbiBQQVRICiAgIAoyMDAyLTA5LTMwIDE0OjU4ICByc3RvcnkKCiAgICogZGlzdC9jdnN1cDoKCiAgIGlmIENWUyBkaXIgaXMgcm8sIGF1dG9tYWdpY2FsbHkgbWFrZSBpdCBydyBiZWZvcmUgdXBkYXRlIGFuZCBybyBhZnRlciB1cGRhdGUKICAgCjIwMDItMDktMjcgMTQ6MDMgIGhhcmRha2VyCgogICAqIGFnZW50L3NubXBfYWdlbnQuYzoKCiAgIG1ha2UgZ2V0X3NldF9jYWNoZSgpIHJldHVybiBhbiBlcnJvciBpZiBubyBwcmV2aW91cyBTRVQgaGFzIGJlZW4gc3RhcnRlZC4KICAgCjIwMDItMDktMjcgMTQ6MDIgIGhhcmRha2VyCgogICAqIGFnZW50L2FnZW50X3JlZ2lzdHJ5LmM6CgogICBkb3VibGUgY2hlY2sgYWdhaW5zdCBzb21lIG51bGwgcG9pbnRlcnMgYmVmb3JlIHVzaW5nIHRoZW0gaW4gdGhlIGNhY2hlIGNvZGUuCiAgIAoyMDAyLTA5LTI3IDEzOjM2ICBoYXJkYWtlcgoKICAgKiBhZ2VudC9zbm1wX2FnZW50LmM6CgogICBzZXQgdHJlZWNhY2hlX251bSB0byAtMSBhdCBpbml0IG9mIG1lbW9yeSwgdG8gYmUgZXh0cmEgc2FmZS4KICAgCjIwMDItMDktMjYgMTQ6NTggIGhhcmRha2VyCgogICAqIGFnZW50Lzogc25tcF9hZ2VudC5jLCBzbm1wZC5jOgoKICAgbW92ZSBsaWJ3cmFwIHZhcmlhYmxlcwogICAKMjAwMi0wOS0yNiAxNDo1NyAgaGFyZGFrZXIKCiAgICogcGVybC9hZ2VudC9hZ2VudC54czoKCiAgIG9rLCByZW1vdmUgdGNwd3JhcHBlcnMgdmFycwogICAKMjAwMi0wOS0yNiAxMzo0NCAgaGFyZGFrZXIKCiAgICogcGVybC9hZ2VudC9hZ2VudC54czoKCiAgIGRlZmluZSBzdHVwaWQgdmFyaWFibGVzIG5lZWRlZCBieSB0Y3B3cmFwcGVycyBiZWNhdXNlIHRoZXkgZG9uJ3QgZ2V0CiAgIGNvbmNlcHRzIG9mIGVuY2Fwc3VsYXRpb24uICBhcmcuCiAgIAoyMDAyLTA5LTI2IDExOjI2ICBoYXJkYWtlcgoKICAgKiBwZXJsL2FnZW50L2FnZW50LnhzOgoKICAgY2hhbmdlIGNhbGxfcHYgdG8gcGVybF9jYWxsX3B2IGZvciBvbGRlciB2ZXJzaW9ucyBvZiBwZXJsLgogICAKMjAwMi0wOS0yNiAxMToxMCAgaGFyZGFrZXIKCiAgICogc25tcGxpYi9taWIuYzoKCiAgIHJ1biBzdHJkdXAoKSBvbiBnZXRfbWliX2RpcigpIHJlc3VsdHMgdG8gZml4IGJ1ZyBwb2ludGVkIG91dCBieSBFdWdlbmUgQnJ1ay4KICAgCjIwMDItMDktMjMgMTM6MTQgIGhhcmRha2VyCgogICAqIGRpc3QvUkVMRUFTRS1JTlNUUlVDVElPTlM6CgogICBtZW50aW9uIGZyZXNobWVhdAogICAKMjAwMi0wOS0yMyAxMzoxMyAgaGFyZGFrZXIKCiAgICogYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvdmVyc2lvbmluZm8uYywKICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvdmVyc2lvbmluZm8uaCwgbWlicy9VQ0QtU05NUC1NSUIudHh0CjoKCiAgIC0gaW1wbGVtZW50IGEgKGxvbmcgbmVlZGVkKSBzZXR0YWJsZSB2YXJpYWJsZSB0byBzdG9yZSB0aGUgY3VycmVudAogICAgIHBlcnNpc3RlbnQgaW5mb3JtYXRpb24uCiAgIAoyMDAyLTA5LTIzIDEyOjQ3ICBoYXJkYWtlcgoKICAgKiBzbm1wbGliL3NubXBfYXBpLmM6CgogICAtIG1ha2Ugbm90IGluIHRpbWUgd2luZG93IHJlcG9ydHMgdHJpZ2dlciBhIHJlc2VuZCBvZiBpbmZvcm1zLgogICAgIChzdWdnZXN0aW9uIGZyb20gRXJpayBBbmdnYXJkKQogICAKMjAwMi0wOS0yMCAxMToyOCAgamJwbgoKICAgKiBhZ2VudC9taWJncm91cC9taWJJSS92YWNtX3ZhcnMuaDoKCiAgICAgLSByZW1vdmUgZnVuY3Rpb25zIHZhY21fcGFyc2Vfc2VjdXJpdHkgYW5kIHZhY21fZnJlZV9zZWN1cml0eSB3aGljaAogICAgICAgZG9uJ3QgZXhpc3QKICAgCjIwMDItMDktMTkgMTc6MDEgIGhhcmRha2VyCgogICAqIHBlcmwvYWdlbnQvYWdlbnQueHM6CgogICAtIHN1cHBvcnQgYWdlbnQgc2h1dGRvd25zICh3ZWxsLCBvayBpdCdzIGp1c3QgYW4gYXBpIHNpbmNlIGl0IGRvZXNuJ3Qgd29yaykuCiAgIC0gbWlzYyBidWcgZml4ZXMuCiAgIAoyMDAyLTA5LTE5IDE2OjM4ICBoYXJkYWtlcgoKICAgKiBwZXJsL2FnZW50LzogYWdlbnQueHMsIG5ldHNubXBfcmVxdWVzdF9pbmZvUHRyLnBtOgoKICAgZml4IGFnZW50IHJlcXVlc3RfaW5mb1B0ciBwcm9ibGVtcy4KICAgCjIwMDItMDktMTkgMTI6MDQgIGR0czEyCgogICAqIHdpbjMyL3NubXB0cmFuc2xhdGUvc25tcHRyYW5zbGF0ZS5kc3A6CgogICBDb21waWxlIGFuZCBsaW5rIHdpdGggJ2dldG9wdC5jJyBleHBsaWNpdGx5LgogICAKICAgVGhpcyBzaG91bGQgbm90IGJlIG5lY2Vzc2FyeSwgYnV0IGZvciBzb21lIHJlYXNvbgogICAodGhhdCBjb21wbGV0ZWx5IGVzY2FwZXMgbWUhKSwgdXNpbmcgY29tbWFuZC1saW5lIG9wdGlvbnMKICAgKHN1Y2ggYXMgLUlSKSB3aXRoIHRoZSBSZWxlYXNlIHZlcnNpb24gb2Ygc25tcHRyYW5zbGF0ZQogICBjYXVzZXMgYSBydW4tdGltZSBETEwgZXJyb3IuICAoVGhlIERlYnVnIHZlcnNpb24gaXMgZmluZSkuCiAgIFRoZSBvdGhlciBhcHBsaWNhdGlvbnMgc2VlbSB0byBiZSBPSyAtIHRoaXMgcHJvYmxlbSBvbmx5CiAgIHNlZW1zIHRvIGhpdCBzbm1wdHJhbnNsYXRlLiAgU28gYXMgYSBzdGlja2luZy1wbGFzdGVyLAogICBjb21waWxpaW5nIGdldG9wdC5jIGluIGFzIHBhcnQgb2YgdGhlIHByb2plY3QsIGtlZXBzIGJvdGgKICAgdmVyc2lvbnMgb2YgdGhlIGFwcGxpY2F0aW9uIGhhcHB5LgogICAgIFNvbWVvbmUgd2l0aCBiZXR0ZXIgV2luZG93cyBrbm93bGVkZ2UgdGhhbiBtZSBuZWVkcyB0bwogICBsb29rIGF0IHRoaXMgYW5kIGZpeCBpdCBwcm9wZXJseS4KICAgCjIwMDItMDktMTkgMDY6MTQgIGpicG4KCiAgICogaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmg6CgogICAgIC0gdW5kbyB3b3JzdCBvZiBpbmRlbnQgZGFtYWdlCiAgIAoyMDAyLTA5LTE5IDA2OjAzICBqYnBuCgogICAqIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oOgoKICAgICAtIHJlbW92ZSBfZHBhcnNlIGZ1bmN0aW9ucyAod2hpY2ggZG9uJ3QgZXhpc3QpCiAgIAoyMDAyLTA5LTE4IDEwOjU1ICBoYXJkYWtlcgoKICAgKiB0ZXN0aW5nL2V2YWxfdG9vbHMuc2g6CgogICByZXNldCBTTk1QX1NMRUVQIGFmdGVyIGxvb3AKICAgCjIwMDItMDktMTggMTA6NDEgIGpicG4KCiAgICogc25tcGxpYi9zbm1wX2NsaWVudC5jOgoKICAgICAtIHJlbW92ZSB2ZXJ5IG9ic29sZXRlIChhbmQgbm90IHVzZWQgYW55d2hlcmUpICNkZWZpbml0aW9ucyBvZgogICAgICAgUEFSVFlfTUlCX0JBU0UgYW5kIENPTlRFWFRfTUlCX0JBU0UKICAgCjIwMDItMDktMTggMDI6NTkgIHJzdG9yeQoKICAgKiBDaGFuZ2VMb2c6CgogICB0d2VhayBmb3IgNS4wLjQgbGFzdCBtaW51dGUgdXBkYXRlCiAgIAoyMDAyLTA5LTE4IDAyOjQ4ICByc3RvcnkKCiAgICogdGVzdGluZy9ldmFsX3Rvb2xzLnNoOgoKICAgY2hnID4gdG8gLWd0IHRvIGFjaGlldmUgaW50ZW5kZWQgcmVzdWx0CiAgIAoyMDAyLTA5LTE4IDAxOjM5ICByc3RvcnkKCiAgICogTkVXUzoKCiAgIHVwZGF0ZSBmb3IgNS4wLjQKICAgCjIwMDItMDktMTggMDE6MzMgIHJzdG9yeQoKICAgKiBGQVEsIFJFQURNRSwgc2Vkc2NyaXB0LmluLCBwZXJsL1NOTVAvU05NUC5wbQosIHNubXBsaWIvc25tcF92ZXJzaW9uLmM6CgogICAtIChzbm1wbGliL3NubXBfdmVyc2lvbi5jIHNlZHNjcmlwdC5pbik6IHZlcnNpb24gdGFnICggNS4wLjQgKQogICAKMjAwMi0wOS0xOCAwMTozMiAgcnN0b3J5CgogICAqIENoYW5nZUxvZzoKCiAgIHVwZGF0ZSBmb3IgNS4wLjQKICAgCjIwMDItMDktMTggMDA6NTkgIHJzdG9yeQoKICAgKiBNYWtlZmlsZS5pbjoKCiAgIGFkZCAkKHNyY2RpcikgdG8gYSBmZXcgZGVwZW5kZW5jaWVzIHRvIHRyeSBhbmQgcmVkdWNlIHRoZSAjIG9mIHRpbWVzIHRoYXQKICAgY29uZmlnLnN0YXR1cyBpcyBydW4gd2hlbiBidWlsZGluZyBvdXRzaWRlIHRoZSBzcmMgZGlyCiAgIAoyMDAyLTA5LTE4IDAwOjU0ICByc3RvcnkKCiAgICogUkVBRE1FLndpbjMyOgoKICAgdmlzdWFsbHkgcHJvdm9jYXRpdmUgc2VjdGlvbiBoZWFkZXJzOyBhZGQgcmVjZW50IHN0YXR1cyAoYWxsIGJhZCBuZXdzKTsKICAgbm90IHRvIHVzZSBuZXcgd2luMzJzZGsuZHN3IHRvIGdldCBhZGRpdG9uYWwgZnVuY3Rpb25hbGl0eSB3aXRoIHBsYXRmb3JtIHNkazsKICAgcmVtb3ZlIGluZm8gb24gcmVtb3ZpbmcgYWdlbnR4LCBhcyBpdCdzIGJlZW4gYXJvdW5kIG5vdyBmb3IgYSB3aGlsZTsgYWRkCiAgIHNlY3Rpb24gb24gd2hhdCBmaWxlcyB0byBlZGl0IHRvIGFkZCBtaWIyYyBnZW5lcmF0ZWQgY29kZSB0byBhZ2VudDsgcmVtb3ZlCiAgIHJlZmVyZW5jZSB0byBzcGVjaWZpYyByZWxlYXNlIG51bWJlciBpbiBleGFtcGxlCiAgIAoyMDAyLTA5LTE4IDAwOjI1ICByc3RvcnkKCiAgICogd2luMzIvc25tcGRzZGsvc25tcGQuZHNwOgoKICAgdGFrZSAnc2RrJyBvdXQgb2YgZXhlIG5hbWUKICAgCjIwMDItMDktMTggMDA6MjUgIHJzdG9yeQoKICAgKiB3aW4zMi93aW4zMnNkay5kc3c6CgogICBzd2FwIHNubXBkc2RrIGZvciBzbm1wZAogICAKMjAwMi0wOS0xOCAwMDoxNCAgcnN0b3J5CgogICAqIHdpbjMyLzogZW5jb2RlX2tleWNoYW5nZS9lbmNvZGVfa2V5Y2hhbmdlLmRzcCwKICAgbGlic25tcC9saWJzbm1wLmRzcCwgbGlic25tcF9kbGwvbGlic25tcF9kbGwuZHNwLAogICBzbm1wYnVsa2dldC9zbm1wYnVsa2dldC5kc3AsIHNubXBidWxrd2Fsay9zbm1wYnVsa3dhbGsuZHNwCiwgc25tcGQvc25tcGQuZHNwLCBzbm1wZGVsdGEvc25tcGRlbHRhLmRzcCwKICAgc25tcGRmL3NubXBkZi5kc3AsIHNubXBnZXQvc25tcGdldC5kc3AsCiAgIHNubXBnZXRuZXh0L3NubXBnZXRuZXh0LmRzcCwgc25tcG5ldHN0YXQvc25tcG5ldHN0YXQuZHNwCiwgc25tcHNldC9zbm1wc2V0LmRzcCwgc25tcHN0YXR1cy9zbm1wc3RhdHVzLmRzcCwKICAgc25tcHRhYmxlL3NubXB0YWJsZS5kc3AsIHNubXB0ZXN0L3NubXB0ZXN0LmRzcCwKICAgc25tcHRyYW5zbGF0ZS9zbm1wdHJhbnNsYXRlLmRzcCwgc25tcHRyYXAvc25tcHRyYXAuZHNwLAogICBzbm1wdHJhcGQvc25tcHRyYXBkLmRzcCwgc25tcHVzbS9zbm1wdXNtLmRzcCwKICAgc25tcHZhY20vc25tcHZhY20uZHNwLCBzbm1wd2Fsay9zbm1wd2Fsay5kc3A6CgogICBnZXQgYWxsIG91ciBkdWNrcyBpbiBhIHJvdzogYWRkIGFkdmFwaTMyLmxpYiB0byBsaW5rIGxpbmVzLCBtYWtlIHN1cmUgYWxsCiAgIFJlbGVhc2UgYW5kIERlYnVnIGxpYnMvYXBwcyBhcmUgY29tcGlsZSB3aXRoIHNhbWUgQysrIHNldHRpbmdzCiAgIAoyMDAyLTA5LTE4IDAwOjEyICByc3RvcnkKCiAgICogd2luMzIvbmV0c25tcG1pYnMvbmV0c25tcG1pYnMuZHNwOgoKICAgcmVtb3ZlIHNkayBkZXBlbmRlbnQgbW9kdWxlcwogICAKMjAwMi0wOS0xOCAwMDoxMCAgcnN0b3J5CgogICAqIHdpbjMyL21pYl9tb2R1bGVfaW5pdHMuaDoKCiAgIGdyb3VwIG1vZHVsZXMgdGhhdCBkZXBlbmQgb24gd2luMzIgc2RrIHRvZ2V0aGVyLCB3aXRoIGlmZGVmCiAgIAoyMDAyLTA5LTE4IDAwOjA4ICByc3RvcnkKCiAgICogYWdlbnQvc25tcF92YXJzLmM6CgogICBubyBjYWxsYmFjayBmb3Igd2luMzIgdW50aWwgcGlwZSBmZCBwcm9ibGVtIGlzIGZpeGVkCiAgIAoyMDAyLTA5LTE4IDAwOjA3ICByc3RvcnkKCiAgICogd2luMzIvOiBuZXRzbm1wbWlic3Nkay9uZXRzbm1wbWlic3Nkay5kc3AsCiAgIHNubXBkc2RrL3NubXBkLmRzcDoKCiAgIG5ldyB2ZXJzaW9ucyBmb3Igc2RrIHVzZXJzCiAgIAoyMDAyLTA5LTE4IDAwOjA1ICByc3RvcnkKCiAgICogd2luMzIvd2luMzJzZGsuZHN3OgoKICAgbmV3IHdvcmtzcGFjZSBmb3Igc2RrIHVzZXJzCiAgIAoyMDAyLTA5LTE2IDE2OjI3ICBoYXJkYWtlcgoKICAgKiBwZXJsL1NOTVAvU05NUC5wbToKCiAgIG1pYiBtb2R1bGUgbG9hZGluZyBmaXhlcyBieSBjYWxsaW5nIGluaXRfc25tcCBmaXJzdAogICAKMjAwMi0wOS0xMyAxNTowNSAgcnN0b3J5CgogICAqIGRpc3QvUkVMRUFTRS1JTlNUUlVDVElPTlM6CgogICB0d2VhayBleGFtcGxlIG5zYi1jb25maWcgY29tbWFuZDsgYWRkIC1iIGJhY2sgdG8gY3ZzMmNsLCBvdGhlcndpc2UgeW91CiAgIGdldCBjaGFuZ2Vsb2cgbXNncyBmcm9tIG90aGVyIGJyYW5jaGVzIGFuZCBoYXZlIHRvIHdlZWQgdGhlbSBvdXQKICAgCjIwMDItMDktMTMgMTI6MzMgIGhhcmRha2VyCgogICAqIHBlcmwvT0lELzogT0lELnBtLCBPSUQueHMsIHRlc3QucGw6CgogICBmaXggaWxsZWdhbCBvaWRzIHRvIG5vdCByZXR1cm4gYSBwb2ludGVyLgogICAKMjAwMi0wOS0xMyAxMDo0MCAgamJwbgoKICAgKiBzbm1wbGliL3NubXBVRFBEb21haW4uYzoKCiAgICAgLSBtaW5vciBvcHRpbWlzYXRpb247IHdlIGRvbid0IG5lZWQgYSB6ZXJvLXRlcm1pbmF0ZWQgY29tbXVuaXR5CiAgICAgICBzdHJpbmcgZXhjZXB0IGZvciBkZWJ1Z2dpbmcgb3V0cHV0LgogICAKMjAwMi0wOS0xMyAxMDozNSAgaGFyZGFrZXIKCiAgICogbG9jYWwvbWliMmM6CgogICBhZGRlZCAtaSBvcHRpb24gdG8gcmVxdWVzdCBpbmRlbnQgbm90IGJlIHJ1bgogICAKMjAwMi0wOS0xMyAxMDowNiAgamJwbgoKICAgKiBDT1BZSU5HOgoKICAgICAtIGFkZCBtaXNzaW5nIHZlcmIgaW4gaW50cm9kdWN0aW9uCiAgIAoyMDAyLTA5LTEyIDE1OjU4ICBoYXJkYWtlcgoKICAgKiBwZXJsL1NOTVAvU05NUC54czoKCiAgIHByb3RlY3QgY2FsbGluZyBzb21lIFN2SVYgZGVyZWZlcmVuY2UgZnVuY3Rpb25zIGlmIGl0J3Mgbm90IGFuIElWLgogICAgIC0gZWxpbWluYXRlcyB0aGUgcmVtYWluaW5nIHBlcmwgd2FybmluZ3MuCiAgIAoyMDAyLTA5LTEyIDE0OjQ1ICBoYXJkYWtlcgoKICAgKiBuZXQtc25tcC1jb25maWcuaW46CgogICBpbmNsdWRlIGxkZmxhZ3Mgd2hlcmUgYXBwcm9wcmlhdGUgKC0tbGlicywgLS1hZ2VudC1saWJzLCAuLi4pCiAgIAoyMDAyLTA5LTEyIDAxOjQ4ICByc3RvcnkKCiAgICogZGlzdC86IG5zYi1uaWdodGx5LCBuc2ItcGFja2FnZToKCiAgIGFkZC91c2UgbmV3IG9wdGlvbiB0byByZW1vdmUgYnVpbGQgZGlyIGFmdGVyIHN1Y2Nlc3NmdWwgYnVpbGQKICAgCjIwMDItMDktMTIgMDE6NDcgIHJzdG9yeQoKICAgKiBkaXN0L25zYi1mdW5jdGlvbnM6CgogICBwcmludCBidWlsZCBkaXIKICAgCjIwMDItMDktMTIgMDE6MTkgIGhhcmRha2VyCgogICAqIHRlc3RpbmcvdGVzdHMvOiBTdjNjb25maWcsIFQwMzBzbm1wdjN1c2VyY3JlYXRpb246CgogICBtdWNoIG1vcmUgY29tcGxleCB0ZXN0cyBvZiBVU00gdXNlciBjcmVhdGlvbi9tb2RpZmljYXRpb24uCiAgIAoyMDAyLTA5LTEyIDAxOjA3ICBoYXJkYWtlcgoKICAgKiB0ZXN0aW5nLzogZXZhbF90b29scy5zaCwgdGVzdHMvVDAwMXNubXB2MWdldCwKICAgdGVzdHMvVDAwMnNubXB2MWdldG5leHQsIHRlc3RzL1QwMDNzbm1wdjFnZXRmYWlsLAogICB0ZXN0cy9UMDA0c25tcHYxbm9zdWNoOgoKICAgLSBzdXBwb3J0IGZvciBtdWx0aXBsZSB0ZXN0cyBhdCBvbmNlLgogICAtIG1lcmdlIHYxIHRlc3RzIGludG8gYSBzaW5nbGUgKGZhc3RlcikgdGVzdC4KICAgCjIwMDItMDktMTIgMDA6MzQgIHJzdG9yeQoKICAgKiBkaXN0L25zYi1mdW5jdGlvbnM6CgogICBkb24ndCBtb25rZXkgYXJvdW5kIHdpdGggcmV0dXJuaW5nIGVycm9yIGNvZGVzLCBqdXN0IGV4aXQ7IG1vcmUgcmVnZXhwIHR3ZWFrcwogICAKMjAwMi0wOS0xMSAxOTozNiAgaGFyZGFrZXIKCiAgICogdGVzdGluZy9ldmFsX3Rvb2xzLnNoOgoKICAgLSB1c2Ugc3ViLXNlY29uZCBzbGVlcHMgaWYgYXZhaWxhYmxlCiAgIC0gc2xlZXAgMSAoc3ViLSlzZWNvbmQgYXQgYSB0aW1lIHdoZW4gd2FpdGluZyBmb3IgcGFydGljdWxhciB0ZXN0cwogICAgIHJhdGhlciB0aGFuIHRoZSBmdWxsIFNOTVBfU0xFRVAgZHVyYXRpb24uCiAgIAoyMDAyLTA5LTExIDE5OjI0ICBoYXJkYWtlcgoKICAgKiBhcHBzL3NubXB0cmFwZC5jOgoKICAgdXNlIHNubXBfbG9nIGluc3RlYWQgb2YgcHJpbnRmIGZvciBzaHV0ZG93biBtZXNzYWdlLgogICAKMjAwMi0wOS0xMSAxODo0MiAgaGFyZGFrZXIKCiAgICogbG9jYWwvbWliMmMuaXRlcmF0ZS5jb25mOgoKICAgbWlzc2luZyB2YXJpYWJsZSBkZWNsIHBvaW50ZWQgb3V0IGJ5IGlyYzpkZgogICAKMjAwMi0wOS0xMCAxNjoxNiAgcnN0b3J5CgogICAqIGRpc3QvbnNiLWZ1bmN0aW9uczoKCiAgIHR3ZWFrIGVycm9yIHJlZ2V4cHMgJiBlcnJvciBtZXNzYWdlcwogICAKMjAwMi0wOS0xMCAxNToyOCAgcnN0b3J5CgogICAqIGxvY2FsL21pYjJjLmFycmF5LXVzZXIuY29uZjoKCiAgIGNvbXBpbGVyIHdhcm5pbmdzIGFyZSB5b3VyIGZyaWVuZCE7IGZpeCBlbWJlZGVkIGNvbW1lbnRzOyBmaXggbm9uLXZvaWQKICAgZnVuY3Rpb25zIHcvbm8gcnRuIHZhbHVlczsgY29kZSByZW9yZyB0byBmaXggZW1hY3MgaW5kZW50IGNvbXBsYWludHMKICAgCjIwMDItMDktMTAgMTU6MjYgIHJzdG9yeQoKICAgKiBNYWtlZmlsZS5pbjoKCiAgIG5ldyBzdGFydC1mbGFnIGVuZC1mbGFnIHRhcmdldHMgdG8gaGVscCBuaWdodGx5IGJ1aWxkIHNjcmlwdCBkZXRlcm1pbmUKICAgaWYgYSBtYWtlIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkKICAgCjIwMDItMDktMTAgMTU6MTIgIHJzdG9yeQoKICAgKiBkaXN0L25zYi1mdW5jdGlvbnM6CgogICB0d2Vha3MgZm9yIG5ldyBzY3JpcHQgZm9yIGF1dG9tYXRlZCBuaWdodGx5IGJ1aWxkczsgYWQgbnNiLWFib3J0LCBuc2ItZmxvdzsKICAgZGlyZWN0IHNvbWUgbWVzc2FnZXMgdG8gc3RkZXJyOyB1c2UgbmV3IHN0YXJ0LWZsYWcgZW5kLWZsYWcgbWFrZSB0YXJnZXRzOwogICB1cGRhdGUgZXJyb3IgZ3JlcCB0byBpbmNsdWRlICcqKionOyBjaGVjayBmb3IgbmV3IHZhbHVlIHRvIHJtIC1mUiBidWlsZCBkaXIKICAgCjIwMDItMDktMTAgMTU6MDggIHJzdG9yeQoKICAgKiBkaXN0L25zYi1uaWdodGx5OgoKICAgbmV3IHNjcmlwdCBmb3IgYXV0b21hdGVkIG5pZ2h0bHkgYnVpbGRzCiAgIAoyMDAyLTA5LTEwIDE1OjA4ICByc3RvcnkKCiAgICogZGlzdC9uc2ItcGFja2FnZToKCiAgIGFkZCBvcHRpb24gdG8gcm0gLWZSIGJ1aWxkIGRpciBhdCBzdGFydDsgY2hlY2sgc2NyaXAgcGF0aCBmb3IgbnNiLWZ1bmN0aW9uczsKICAgcHJlZml4IGRlZmF1bHQgYnVpbGQgZGlyIHcvdmVyc2lvbjsgZXhpdCB3L3JjIGZyb20gbnNiLWJ1aWxkCiAgIAoyMDAyLTA5LTEwIDE1OjA1ICByc3RvcnkKCiAgICogZGlzdC86IG5zYi1jb25maWcsIG5zYi1wbGF0Zm9ybToKCiAgIGFkZCBjdXJyZW50IHBhdGggdG8gc2NyaXB0IHRvIG5zYi1mdW5jdGlvbiBzZWFyY2ggcGF0aAogICAKMjAwMi0wOS0wOSAwOToyOCAgamJwbgoKICAgKiBzbm1wbGliL3NubXBfYXBpLmM6CgogICAgIC0gZml4IGJ1ZyBwb2ludGVkIG91dCBieSBKYXJlZCBTbWl0aC1NaWNrZWxzb24gKGJ1ZyAjNjA1MTQ3KQogICAgICAgd2hlcmVieSBwYXNzaW5nIGFuIHVua25vd24gdHlwZSBjaGFyYWN0ZXIgdG8gc25tcF9hZGRfdmFyIHdvdWxkCiAgICAgICBjYXVzZSBhIHNlZ2ZhdWx0LgogICAKMjAwMi0wOS0wOSAwOTowOSAgaGFyZGFrZXIKCiAgICogYXBwcy9zbm1wdHJhbnNsYXRlLmM6CgogICBkb3VibGUgY2hlY2sgYSBwb2ludGVyIHZhbHVlIGJlZm9yZSB1c2luZyBpdC4KICAgCjIwMDItMDktMDkgMDk6MDkgIGhhcmRha2VyCgogICAqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLAogICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9tZW1vcnlfbmV0YnNkMS5jLAogICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC92bXN0YXRfbmV0YnNkMS5jLAogICBpbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLmluOgoKICAgQ3VycmVudCBoZWFkZXIgdXBkYXRlIHBhdGNoIGZvciBuZXRic2QgZnJvbSBQYXRyaWNrIFdlbGNoZS4KICAgCjIwMDItMDktMDYgMTg6MzAgIGRyaWVodWlzCgogICAqIG1pYnMvVUNELVNOTVAtTUlCLnR4dDoKCiAgIE1hcmsgdGhlIG5vbi1yYXcgdmFyaWFudHMgb2Ygb2JqZWN0cyB0aGF0IGFyZSBhY2Nlc3NhYmxlIGFzIHJhdyBjb3VudGVycwogICBhcyBkZXByZWNhdGVkLCB0byAoaG9wZWZ1bGx5ISkgY3V0IGRvd24gb24gdGhlIG51bWJlciBvZiB1c2VycyB0aGF0IGdldAogICBiaXR0ZW4gYnkgaXQuLgogICAKMjAwMi0wOS0wNCAxNDozNiAgaGFyZGFrZXIKCiAgICogUkVBRE1FLnNvbGFyaXM6CgogICBhZGRlZCBCcnVjZSdzIGVtYWlsIGFkZHJlc3MKICAgCjIwMDItMDktMDQgMTQ6MjcgIGhhcmRha2VyCgogICAqIE1ha2VmaWxlLmluLCBNYWtlZmlsZS5ydWxlczoKCiAgIGZpeCBwZXJsY2xlYW4KICAgCjIwMDItMDktMDQgMTQ6MTAgIGhhcmRha2VyCgogICAqIGFnZW50L3NubXBkLmM6CgogICBGaXggcHJvY2VzcyBncm91cGluZyBieSBjYWxsaW5nIHNldHNpZCgpIChyZXBvcnRlZCBieSBpcmM6VHJvZ0wpCiAgIAoyMDAyLTA5LTA0IDE0OjA5ICBoYXJkYWtlcgoKICAgKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwKICAgaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbjoKCiAgIGNoZWNrIGZvciBzZXRzaWQoKS4KICAgCjIwMDItMDktMDMgMTM6NTEgIGhhcmRha2VyCgogICAqIGxvY2FsL21pYjJjOgoKICAgZml4IGNhc2VzIHdoZXJlIHRoZXJlIGVpdGhlciBhcmUgbm8gdGFibGVzIG9yIG5vIHNjYWxhcnMuCiAgIAoyMDAyLTA5LTAzIDEzOjIzICBoYXJkYWtlcgoKICAgKiBwZXJsL1NOTVAvU05NUC54czoKCiAgIGRvbid0IHVzZSBOVUxMIHZhcmlhYmxlcy4KICAgCjIwMDItMDktMDIgMjI6MzMgIHJzdG9yeQoKICAgKiBGQVEsIFJFQURNRSwgc2Vkc2NyaXB0LmluLCBwZXJsL1NOTVAvU05NUC5wbQosIHNubXBsaWIvc25tcF92ZXJzaW9uLmM6CgogICAtIChzbm1wbGliL3NubXBfdmVyc2lvbi5jIHNlZHNjcmlwdC5pbik6IHZlcnNpb24gdGFnICggNS4wLjQucHJlMiApCiAgIAoyMDAyLTA5LTAyIDIyOjMzICByc3RvcnkKCiAgICogQ2hhbmdlTG9nOgoKICAgdXBkYXRlIGZvciByZWxlYXNlIDUuMC40LnByZTIKICAgCjIwMDItMDktMDIgMjI6MjIgIHJzdG9yeQoKICAgKiBtYW4vbmV0c25tcF9oYW5kbGVyLjM6CgogICB1cGRhdGVkIGRvY3MKICAgCjIwMDItMDktMDIgMjI6MTkgIHJzdG9yeQoKICAgKiBhZ2VudC9NYWtlZmlsZS5kZXBlbmQsIGFnZW50L2hlbHBlcnMvTWFrZWZpbGUuZGVwZW5kLAogICBhZ2VudC9taWJncm91cC9NYWtlZmlsZS5kZXBlbmQsIGFwcHMvTWFrZWZpbGUuZGVwZW5kLAogICBhcHBzL3NubXBuZXRzdGF0L01ha2VmaWxlLmRlcGVuZCwgc25tcGxpYi9NYWtlZmlsZS5kZXBlbmQKOgoKICAgbWFrZSBkZXBlbmQKICAgCjIwMDItMDktMDIgMjI6MTYgIHJzdG9yeQoKICAgKiBkaXN0L25zYi1jb25maWc6CgogICB0cnkgYW5kIGd1ZXNzIGF0IHNyYyBkaXIgaWYgbm90IHNwZWNpZmllZAogICAKMjAwMi0wOS0wMiAyMjoxNSAgcnN0b3J5CgogICAqIGRpc3QvUkVBRE1FLmJ1aWxkLXNjcmlwdHM6CgogICBhZGQgbm90ZSBhYm91dCBlcnIgd2hlbiBidWlsZGluZyBpbiBhbmQgb3V0IG9mIHNvdXJjZSB0cmVlCiAgIAoyMDAyLTA5LTAyIDIxOjU1ICByc3RvcnkKCiAgICogTWFrZWZpbGUuaW46CgogICBmdWxsIHBhdGggdG8gdmVyc2lvbnRhZywgaW4gY2FzZSB3ZSBhcmUgYnVpbGRpbnQgb3V0c2lkZSBvZiBzcmMgZGlyZWN0b3J5CiAgIAoyMDAyLTA5LTAyIDIxOjM3ICByc3RvcnkKCiAgICogZGlzdC9uc2ItZnVuY3Rpb25zOgoKICAgcmVtb3ZlIGZvcmNlZCBwcm9tcHQgb24gZXJyb3JzCiAgIAoyMDAyLTA5LTAyIDIxOjM2ICByc3RvcnkKCiAgICogTWFrZWZpbGUuaW46CgogICBhZGQgd2FybmluZ3Mgd2hlbiBWRVJTSU9OIGlzIHJlcXVpcmVkOyBhZGQgdGFyY2xlYW4gdGFyZ2V0OyBhZGQgdGFyY2xlYW4gdG8KICAgZGlzdGNsZWFuIHRhcmdldAogICAKMjAwMi0wOS0wMiAyMTozNCAgcnN0b3J5CgogICAqIGFnZW50L21pYmdyb3VwL3ZlcnNpb250YWc6CgogICBhZGQgbXNnIG9uIGVycm9yOyBhZGQgY2xlYW4gdGFyZ2V0CiAgIAoyMDAyLTA5LTAyIDIwOjI3ICByc3RvcnkKCiAgICogTkVXUzoKCiAgIHVwZGF0ZSB3aW4zMiAmIEFnZW50WCBzdGF0dXMKICAgCjIwMDItMDktMDIgMjA6MjAgIHJzdG9yeQoKICAgKiBhZ2VudC9zbm1wX2FnZW50LmMsIGFnZW50L21pYmdyb3VwL2FnZW50eC9tYXN0ZXJfYWRtaW4uYwosIGluY2x1ZGUvbmV0LXNubXAvYWdlbnQvc25tcF9hZ2VudC5oOgoKICAgZml4IHRvIGF2b2lkIGxvY2tpbmcgdXAgdGhlIGFnZW50IHdoZW4gYSBzdWdhZ2VudCBkaWVzIGR1cmluZyBhIHNldCByZXF1ZXN0LiBXZQogICBtdXN0IGNsZWFuIHVwIHRoZSBkZWxlZ2F0ZWQgcmVxdWVzdHMgd2hlbiB0aGUgc2Vzc2lvbihzKSBhcmUgY2xvc2VkLCBzbyB0aGF0CiAgIHRoZXkgd2lsbCBiZSBwcm9jZXNzZWQgYW5kIHJlbW92ZWQsIGFsbG93aW5nIGZ1cnRoZXIgcmVxdWVzdHMgdG8gYmUgcHJvY2Vzc2VkLgogICAKMjAwMi0wOS0wMSAxMzo0MyAgcnN0b3J5CgogICAqIHNubXBsaWIvY29udGFpbmVyX2JpbmFyeV9hcnJheS5jOgoKICAgY2hhbmdlIHJlc3VsdCB0eXBlIGJhY2sgdG8gaW50LCBhcyBpdCBtYXkgcmVjZWl2ZSBhIG5lZ2F0aXZlIHZhbHVlCiAgIAogICBQTEVBU0UgY2hlY2sgdGhlIHVzZSBvZiBhIHZhcmlhYmxlIGJlZm9yZSBjaGFuZ2luZyBpcyBzaWduZWRuZXNzLCBlc3BlY2lhbGx5CiAgIGFyZW91bmQgcmVsZWFzZSB0aW1lIQogICAKMjAwMi0wOC0zMCAxNToxOCAgcnN0b3J5CgogICAqIGluY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmg6CgogICBpbmNsdWRlIGNoZWNrX3ZhcmJpbmQuaAogICAKMjAwMi0wOC0zMCAxNToxOCAgcnN0b3J5CgogICAqIGFnZW50L2hlbHBlcnMvdGFibGVfYXJyYXkuYzoKCiAgIGNoYW5nZSBOT1NVQ0hOQU1FIHRvIE5PU1VDSElOU1RBTkNFIGFnYWluLCBhcyBpdCBzZWVtcyB0aGUgYWdlbnRYIGZpeCBhbHNvCiAgIGNvcnJlY3RseSBkZWFscyB3aXRoIHRoaXMgZXJyb3IgY29kZQogICAKMjAwMi0wOC0zMCAwOToxNCAgaGFyZGFrZXIKCiAgICogRkFRLCBSRUFETUU6CgogICAtIGRlbGV0ZSBzdW5zaXRlLmNubGFiLXN3aXRjaC5jaCBtaXJyb3IsIGFzIGl0IGlzbid0IG9uZSBhbnltb3JlLgogICAKMjAwMi0wOC0yOSAxMzozMiAgcnN0b3J5CgogICAqIGRpc3QvbnNiLWZ1bmN0aW9uczoKCiAgIGNoZWNrIGZvciBtb2R1bGVzIGJlZm9yZSBjb25maWd1cmluZyB0aGVtCiAgIAoyMDAyLTA4LTI5IDEwOjUyICBoYXJkYWtlcgoKICAgKiBzbm1wbGliL3NjYXBpLmM6CgogICBGaXggdGhlIGxhc3QgQUVTIGJ1ZyBJIGtub3cgb2YuICBBRVMxMjggd29ya3MgZ3JlYXQuCiAgICAgSSBzdGlsbCBOZWVkIHRvIGZpeCAxOTIvMjU2IGZvciBsb25nZXIga2V5IGdlbmVyYXRpb24gZnJvbSBNRDUvU0hBCiAgIAoyMDAyLTA4LTI5IDEwOjUyICBoYXJkYWtlcgoKICAgKiBwZXJsL2FnZW50L2FnZW50LnBtOgoKICAgdXNlIHRoZSByaWdodCBwZXJsIG1vZHVsZSBuYW1lIGluIHRoZSB1c2UgbGluZS4KICAgCjIwMDItMDgtMjkgMDY6NDcgIGR0czEyCgogICAqIGFnZW50L2FnZW50X2hhbmRsZXIuYywgYWdlbnQvbWliZ3JvdXAvYWdlbnR4L21hc3Rlci5jCiwgaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9yZWdpc3RyeS5oLAogICB3aW4zMi9jb25maWcuaDoKCiAgIE1vcmUgV2luMzItcmVsYXRlZCB0aWR5aW5nIHVwLgogICBUaGUgYWdlbnQgbm93IGNvbXBpbGVzIHdpdGggcmVsYXRpdmVseSBmZXcgd2FybmluZ3MuCiAgIAoyMDAyLTA4LTI5IDA0OjUwICBkdHMxMgoKICAgKiBhZ2VudC9hZ2VudF90cmFwLmMsIGFnZW50L21pYmdyb3VwL2FnZW50eC9jbGllbnQuYywKICAgYWdlbnQvbWliZ3JvdXAvbWliSUkvdmFjbV92YXJzLmMsCiAgIGFnZW50L21pYmdyb3VwL3NubXB2My91c21Vc2VyLmMsCiAgIGFnZW50L21pYmdyb3VwL3V0aWxpdGllcy9vdmVycmlkZS5oLAogICBpbmNsdWRlL25ldC1zbm1wL2FnZW50L3NubXBfYWdlbnQuaCwKICAgaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9kYXRhc2V0LmgsCiAgIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgsCiAgIHNubXBsaWIvY29udGFpbmVyX2JpbmFyeV9hcnJheS5jLCBzbm1wbGliL3NubXB1c20uYywKICAgd2luMzIvY29uZmlnLmgsIHdpbjMyL2xpYnNubXBfZGxsL2xpYnNubXAuZGVmOgoKICAgRGVjbGFyZSBuZXcgcm91dGluZSAnbmV0c25tcF9vaWRfZXF1YWxzJywgYW5kIGFzc29ydGVkIFdpbjMyIGNsZWFudXAgZml4ZXMuCiAgIAoyMDAyLTA4LTI4IDE0OjE1ICByc3RvcnkKCiAgICogZGlzdC9SRUxFQVNFLUlOU1RSVUNUSU9OUzoKCiAgIGNsYXJpZnkgY3ZzMmNsIHNjcmlwdCBuYW1lOyByZW1vdmUgLWIgZmxhZyBmcm9tIGN2czJjbCBwZXIgRGF2ZTsgYSBsaXR0bGUKICAgcmVvcmdhbml6YXRpb247IHB1dCBjb21tYW5kcyBvbiBzZXBhcmF0ZSBsaW5lcyBwcmVmaXhlZCB3aXRoICQ7IG5vdGUgNS54LzQueAogICBkaWZmZXJlbmNlcyBwZXIgRGF2ZSdzIGVtYWlsOyBwbHVnIG15IG5ldyBzY3JpcHRzIHdoZXJlIGFwcHJvcHJpYXRlCiAgIAoyMDAyLTA4LTI3IDE0OjQ4ICByc3RvcnkKCiAgICogZGlzdC9SRUxFQVNFLUlOU1RSVUNUSU9OUzoKCiAgIGFkZCBVUkwgZm9yIGN2czJjbDsgdXBkYXRlIGN2czJjbCBjbWRzIHRvIGN2czJjbC5wbCwgc2luY2UgdGhhdCdzIHRoZSBmaWxlCiAgIHRoYXQncyBhY3R1YWxseSBkaXN0cmlidXRlZAogICAKMjAwMi0wOC0yNyAwMDo1OSAgcnN0b3J5CgogICAqIE1ha2VmaWxlLnRvcDoKCiAgIHVwZGF0ZSBmb3IgcmVsZWFzZSA1LjAuNC5wcmUxCiAgIAoyMDAyLTA4LTI3IDAwOjI1ICByc3RvcnkKCiAgICogc25tcGxpYi9zbm1wX3ZlcnNpb24uYywgRkFRLCBSRUFETUUsCiAgIHNlZHNjcmlwdC5pbiwgcGVybC9TTk1QL1NOTVAucG06CgogICAtIChzbm1wbGliL3NubXBfdmVyc2lvbi5jIHNlZHNjcmlwdC5pbik6IHZlcnNpb24gdGFnICggNS4wLjQucHJlMSApCiAgIAoyMDAyLTA4LTI3IDAwOjI0ICByc3RvcnkKCiAgICogQ2hhbmdlTG9nOgoKICAgdXBkYXRlIGZvciByZWxlYXNlIDUuMC40LnByZTEKICAgCjIwMDItMDgtMjcgMDA6MTkgIHJzdG9yeQoKICAgKiBhZ2VudC9NYWtlZmlsZS5kZXBlbmQgKDUuNiksIGFnZW50L2hlbHBlcnMvTWFrZWZpbGUuZGVwZW5kICg1LjUpLAogICBhZ2VudC9taWJncm91cC9NYWtlZmlsZS5kZXBlbmQgKDUuNiksIGFwcHMvTWFrZWZpbGUuZGVwZW5kICg1LjUpLAogICBhcHBzL3NubXBuZXRzdGF0L01ha2VmaWxlLmRlcGVuZCAoNS41KSwgc25tcGxpYi9NYWtlZmlsZS5kZXBlbmQKICAgKDUuNSk6CgogICBtYWtlIGRlcGVuZAogICAKMjAwMi0wOC0yNyAwMDoxNyAgcnN0b3J5CgogICAqIG1hbi86IG5ldHNubXBfYWdlbnQuMyAoNS4zKSwgbmV0c25tcF9idWxrX3RvX25leHQuMyAoNS4zKSwKICAgbmV0c25tcF9kZWJ1Zy4zICg1LjMpLCBuZXRzbm1wX2hhbmRsZXIuMyAoNS4zKSwgbmV0c25tcF9pbnN0YW5jZS4zCiAgICg1LjMpLCBuZXRzbm1wX211bHRpcGxleGVyLjMgKDUuMyksIG5ldHNubXBfb2xkX2FwaS4zICg1LjMpLAogICBuZXRzbm1wX3JlYWRfb25seS4zICg1LjMpLCBuZXRzbm1wX3NjYWxhci4zICg1LjIpLAogICBuZXRzbm1wX3NlcmlhbGl6ZS4zICg1LjMpLCBuZXRzbm1wX3RhYmxlLjMgKDUuMyksCiAgIG5ldHNubXBfdGFibGVfYXJyYXkuMyAoNS4zKSwgbmV0c25tcF90YWJsZV9kYXRhLjMgKDUuMyksCiAgIG5ldHNubXBfdGFibGVfZGF0YXNldC4zICg1LjMpLCBuZXRzbm1wX3RhYmxlX2l0ZXJhdG9yLjMgKDUuMyksCiAgIG5ldHNubXBfdG9kby4zICg1LjMpLCBuZXRzbm1wX3dhdGNoZXIuMyAoNS4yKToKCiAgIHVwZGF0ZSBtYW4gcGFnZXMgZm9yIDUuMC40LnByZTEKICAgCjIwMDItMDgtMjcgMDA6MTAgIHJzdG9yeQoKICAgKiBkaXN0L25zYi1jb25maWcgKDEuMSk6CgogICBuZXcgZmlsZSB0byBjb25maWd1cmUgdXNpbmcgc2FtZSBvcHRpb25zIGFzIG5zYi1wYWNrYWdlIGZvciB0ZXN0IG9yIGRpc3QKICAgCjIwMDItMDgtMjcgMDA6MDkgIHJzdG9yeQoKICAgKiBkaXN0L25zYi1wYWNrYWdlICgxLjMpOgoKICAgZG9uJ3QgYXBwZW5kIHN5cy1uYW1lIHdoZW4gYnVpbGRpbmcgaW4gc3JjIHRyZWUKICAgCjIwMDItMDgtMjcgMDA6MDkgIHJzdG9yeQoKICAgKiBkaXN0L25zYi1mdW5jdGlvbnMgKDEuMTkpOgoKICAgZml4IHR5cG8KICAgCjIwMDItMDgtMjcgMDA6MDYgIHJzdG9yeQoKICAgKiBkaXN0L25zYi1mdW5jdGlvbnMgKDEuMTgpOgoKICAgcmVuYW1lIG5zYi1nZXQtY29uZmcgLT4gbnNiLWNvbmZpZy1kaXN0OyB1c2UgZG91YmxlIHF1b3RlcyBjdXogb2Ygc29tZQogICB3aWVyZCBzaGVsbCB0aGluZyBJIGRvbid0IHlldCB1bmRlcnN0YW5kOyBjaGVjayBmb3Igc3JjIGRpciBpbiBjb25maWcqCiAgIAoyMDAyLTA4LTI2IDIzOjM0ICByc3RvcnkKCiAgICogTWFrZWZpbGUuaW4gKDUuMTIpOgoKICAgdHdlYWsgY29tbWVudGNoZWNrIHRhcmdldCB0byB3b3JrIG91dHNpZGUgdGhlIHNvdXJjZSB0cmVlCiAgIAoyMDAyLTA4LTI2IDIzOjMzICByc3RvcnkKCiAgICogYWdlbnQvbWliZ3JvdXAvbWliSUkvaW50ZXJmYWNlcy5jICg1LjMpLAogICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9wcm94eS5jICg1LjEpLAogICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oICg1LjIpLAogICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmggKDUuMSksIHNubXBsaWIvd2luc2VydmljZS5jCiAgICg1LjEpOgoKICAgcmVtb3ZlIEMrKyBzdHlsZSBjb21tZW50cyAoYW5kIGFueXRoaW5nIHRoYXQgZXZlbiByZW1vdGVseSByZXNlbWJsZXMgb25lKQogICAKMjAwMi0wOC0yNiAxNzo0NyAgcnN0b3J5CgogICAqIGRpc3QvbnNiLWZ1bmN0aW9ucyAoMS4xNyk6CgogICBwYXNzIG1ha2UgcGFyYW1zIHRvIG1ha2UsIHNvIHdlIGRvbid0IHRyeSB0byBpbnN0YWxsIGluIC91c3IvbG9jYWwvYmluIG9mCiAgIHRoZSBjb21waWxlIHNlcnZlcnMuLi4gOi0vCiAgIAoyMDAyLTA4LTI2IDE3OjM5ICByc3RvcnkKCiAgICogZGlzdC9uc2ItZnVuY3Rpb25zICgxLjE2KToKCiAgIG1ha2UgZGlzdCAmIGV4dHJhIHRyYW5zcG9ydHM7IG5vIGlwdjYgb24gRGFyd2luOyBtYWtlIHRvdWNoaXQgYmVmb3JlIG1ha2UKICAgCjIwMDItMDgtMjYgMTc6MDQgIHJzdG9yeQoKICAgKiBhZ2VudC9taWJncm91cC9SbW9uL2V2ZW50LmMgKDUuNCk6CgogICByZXBsYWNlIHVfaW50MzJfdCwgd2hpY2ggZG9lc24ndCBjb21waWxlIG9uIFN1biA1LjgsIHdpdGggdV9pbnQKICAgCjIwMDItMDgtMjYgMTY6NTMgIHJzdG9yeQoKICAgKiBhZ2VudC9taWJncm91cC9SbW9uL3Jvd3MuYyAoNS4yKToKCiAgIGZpeCB1bmRlY2xhcmVkIHZhcmlhYmxlIGVycm9yIHNwb3R0ZWQgb24gU3VuLCB3aGljaCBsaW51eCBtaXNzZWQgY29tcGxldGVseS4KICAgSSBoYXZlIG5vIGlkZWEgaG93IHRoaXMgY29tcGlsZWQgYmVmb3JlISEKICAgCjIwMDItMDgtMjYgMTY6NDMgIHJzdG9yeQoKICAgKiBkaXN0L25zYi1mdW5jdGlvbnMgKDEuMTUpOgoKICAgY2xlYW5lciB3YXkgdG8gYWRkIHN5c3RlbSBzcGVjaWZpYyBtb2R1bGVzOyBkaXNhYmxlIHBlcmwsIGFzIGl0IGJyZWFrcwogICBidWlsZHMgb3V0c2lkZSBvZiB0aGUgc291cmNlIHRyZWUKICAgCjIwMDItMDgtMjYgMTU6NDUgIHJzdG9yeQoKICAgKiBkaXN0L25zYi1mdW5jdGlvbnMgKDEuMTQpOgoKICAgb25seSBjb25maWd1cmUgSVBYIG9uIExpbnV4CiAgIAoyMDAyLTA4LTI2IDE1OjQ0ICByc3RvcnkKCiAgICogZGlzdC9uc2ItZnVuY3Rpb25zICgxLjEzKToKCiAgIG9ubHkgY29uZmlndXJlIElQWCBvbiBMaW51eDsgYmFpbCBvbiBjb25maWd1cmUgZXJyb3JzCiAgIAoyMDAyLTA4LTI2IDE1OjA0ICByc3RvcnkKCiAgICogZGlzdC9SRUFETUUuYnVpbGQtc2NyaXB0cyAoMS40KToKCiAgIGFkZCBzdWdnZXN0aW9uIHRvIHN5bWxpbmsgbnNiLSogaW4gbG9jYWwgYmluIGRpcgogICAKMjAwMi0wOC0yNiAxNTowMyAgcnN0b3J5CgogICAqIGRpc3QvOiBuc2ItcGFja2FnZSAoMS4yKSwgbnNiLWZ1bmN0aW9ucyAoMS4xMik6CgogICBhZGQgb3B0aW9uIGZvciBwcmUtcmVsZWFzZSB0ZXN0IGNvbmZpZ3VyZSBvcHRpb25zCiAgIAoyMDAyLTA4LTI2IDE1OjAyICByc3RvcnkKCiAgICogUkVBRE1FLnNubXB2MyAoNS4zKToKCiAgIG1ha2Ugc2VjdGlvbiBoZWFkZXJzIHN0YW5kIG91dCBtb3JlOyBtb3ZlIG5vdGUgYWJvdXQgZW5jcnlwdGlvbiBub3QgYmVpbmcKICAgZW5hYmxlZCB0byBhIG1vcmUgcHJvbWluZW50IHBsYWNlLgogICAKMjAwMi0wOC0yNCAyMToyNCAgZHJpZWh1aXMKCiAgICogY29uZmlndXJlLmluLCBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9kaXNraW8uYwogICAoVjQtMi1wYXRjaGVzLlszNywzXSk6CgogICBNZXJnZSBmcm9tIEhFQUQ6IGRldGVjdCB0aGUgcmVxdWlyZW1lbnQgZm9yIGxpbmtpbmcgd2l0aCAtbGRldnN0YXQuCiAgIFVnbHkgaGFjayB0byBtYWtlIHN1cmUgZGlza2lvIGRldmljZSBuYW1lcyBpbmNsdWRlIHRoZSBkZXZpY2UgbnVtYmVyLgogICAKMjAwMi0wOC0yMyAxMTo0NiAgZHRzMTIKCiAgICogc25tcGxpYi9NYWtlZmlsZS5pbiAoVjQtMi1wYXRjaGVzLjMpOgoKICAgbWFrZSBkZXBlbmQKICAgCjIwMDItMDgtMjIgMDg6MzEgIGpicG4KCiAgICogaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc29sYXJpczIuNy5oICg1LjIpOgoKICAgICAtIERPTlRfVVNFX05MSVNUIHJlaW5zdGF0ZWQsIHNvIE5PX0tNRU1fVVNBR0UgcmVkdW5kYW50CiAgIAoyMDAyLTA4LTIyIDA4OjI5ICBqYnBuCgogICAqIGFjY29uZmlnLmggKDUuOSksIGluY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmguaW4gKDUuMTApOgoKICAgICAtIHJlaW5zdGF0ZSB0ZXN0IGZvciBET05UX1VTRV9OTElTVAogICAKMjAwMi0wOC0yMiAwNzoxMSAgamJwbgoKICAgKiBhZ2VudC9zbm1wZC5jICg1LjEwKToKCiAgICAgLSBzdG9wIGFuZCByZXN0YXJ0IGxvZ2dpbmcgd2hlbiBIVVBwZWQuICBUaGlzIGFsbG93cyBsb2dmaWxlcyB0byBiZQogICAgICAgcm90YXRlZCBhbmQgc28gZm9ydGguCiAgIAoyMDAyLTA4LTIyIDA3OjA2ICBqYnBuCgogICAqIGFnZW50L3NubXBkLmMgKFY0LTItcGF0Y2hlcy4yNCk6CgogICAgIC0gc3RvcCBhbmQgcmVzdGFydCBsb2dnaW5nIHdoZW4gSFVQcGVkLiAgVGhpcyBhbGxvd3MgbG9nZmlsZXMgdG8gYmUKICAgICAgIHJvdGF0ZWQgYW5kIHNvIGZvcnRoLgogICAKMjAwMi0wOC0yMiAwNDozMSAgZHRzMTIKCiAgICogUkVBRE1FLnNubXB2MyAoNS4yKToKCiAgIEFkZCB0aGUgbWlzc2luZyAnLXgvWCcgb3B0aW9ucyB0byB0aGUgZXhhbXBsZSBhdXRoUHJpdiBjb21tYW5kIGxpbmUKICAgICAocmVwb3J0ZWQgYnkgUHJhc2FkYSBSIFZhbmtheWFsYXBhdGkpCiAgIAoyMDAyLTA4LTIwIDExOjA0ICBoYXJkYWtlcgoKICAgKiBhZ2VudC9taWJncm91cC9hZ2VudHgvc3ViYWdlbnQuYyAoNS42KSwgYXBwcy9zbm1wdHJhcGQuYyAoNS40KSwKICAgaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9kc19hZ2VudC5oICg1LjMpLCBGQVEgKDUuMTcpOgoKICAgcXVpZXQgc25tcHRyYXBkIHdoZW4gaXQgY2FuJ3QgY29ubmVjdCB0byB0aGUgYWdlbnR4IG1hc3Rlci4KICAgCjIwMDItMDgtMjAgMDg6NTQgIGpicG4KCiAgICogaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc29sYXJpczIuNy5oICg1LjEpOgoKICAgICAtIGFkZCAjZGVmaW5lIE5PX0tNRU1fVVNBR0UgMSBzaW5jZSBuZXQtc25tcC1jb25maWcuaC5pbiBubyBsb25nZXIKICAgICAgIHBheXMgYXR0ZW50aW9uIHRvIHRoZSBET05UX1VTRV9OTElTVCB0b2tlbi4gIE9taXNzaW9uIG9mIHRoaXMKICAgICAgIGNhdXNlcyB0aGUgYWdlbnQgdG8gZXhpdCB3aXRoIHRoZSBtZXNzYWdlICJpbml0X2ttZW06IGt2bV9vcGVuCiAgICAgICBmYWlsZWQ6IGVycm9yIDAiLgogICAKICAgICAgIE5PVEU6IHRoaXMgbWF5IG5lZWQgYXBwbHlpbmcgdG8gb3RoZXIgbWVtYmVycyBvZiB0aGUgU29sYXJpcyAyCiAgICAgICBmYW1pbHksIGJ1dCBJIGRvbid0IGhhdmUgbWFjaGluZXMgdG8gaGFuZCB0byB0ZXN0IHRoaXMuCiAgIAoyMDAyLTA4LTIwIDA4OjQ4ICBqYnBuCgogICAqIGFnZW50L21pYmdyb3VwL2tlcm5lbF9zdW5vczUuYyAoNS4yKToKCiAgICAgLSBkZXRlY3QgZ2lnYWJpdCBldGhlcm5ldCBkZXZpY2VzIChnZU4pCiAgICAgLSB1bmRvIGluZGVudCBtYXloZW0KICAgCjIwMDItMDgtMjAgMDU6NTcgIGpicG4KCiAgICogaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaCAoNS4xKToKCiAgICAgLSBmb3Igbm93LCBkb24ndCAjaW5jbHVkZSBzbm1wX2xvY2tpbmcuaCBzaW5jZSBpdCBicmVha3MgcmUtZW50cmFudAogICAgICAgc3VwcG9ydCAoYmVjYXVzZSBtdXRleF90eXBlIGdldHMgbXVsdGlwbHktZGVmaW5lZCkuICBGdXJ0aGVybW9yZSwgdGhlCiAgICAgICBmdW5jdGlvbnMgaXQgZGVjbGFyZXMgYXJlIG5ldmVyIHVzZWQgYW55d2hlcmUsIG5vciBkZWZpbmVkIGFueXdoZXJlLgogICAKMjAwMi0wOC0yMCAwNTo1NiAgamJwbgoKICAgKiBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oICg1LjEpOgoKICAgICAtIGRvbid0IGRlZmluZSAiZG8gbm90aGluZyIgbWFjcm9zIGZvciBzbm1wX3Jlc19sb2NrIGV0IGFsLiBmdW5jdGlvbnMKICAgICAgIG9uIFdpbjMyIHBsYXRmb3JtIChzaW5jZSByZWFsICJkbyBub3RoaW5nIiBmdW5jdGlvbnMgYXJlIHJlcXVpcmVkIGZvcgogICAgICAgcmVhc29ucyBiZXN0IGtub3duIHRvIHNvbWVvbmUgZWxzZSkuCiAgICAgLSB1bm1hbmdsaW5nCiAgIAoyMDAyLTA4LTIwIDA1OjU0ICBqYnBuCgogICAqIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvY2tpbmcuaCAoNS4xKToKCiAgICAgLSBmaXggaGlnaGx5IGJvZ3VzIG5vbi1DIHN5bnRheAogICAKMjAwMi0wOC0yMCAwNTo1MyAgamJwbgoKICAgKiBzbm1wbGliL210X3N1cHBvcnQuYyAoNS4xKToKCiAgICAgLSBzbm1wX3Jlc19sb2NrIGV0IGFsLiBmdW5jdGlvbnMgbm8gbG9uZ2VyICNkZWZpbmVkIHRvICJkbyBub3RoaW5nIgogICAgICAgdGFyZ2V0cyBmb3IgV2luMzIgaW4gbXRfc3VwcG9ydC5oLCB0aGVyZWZvcmUgbm8gbmVlZCB0byAjdW5kZWYgdGhlbQogICAgICAgaGVyZS4KICAgICAtIHVubWFuZ2xpbmcKICAgCjIwMDItMDgtMjAgMDE6MTMgIGhhcmRha2VyCgogICAqIGluY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfcmVnaXN0cnkuaCAoNS4yKToKCiAgIGhlYWRlcnMgZm9yIGNhY2hlIGVuYWJsaW5nIGZ1bmN0aW9ucy4KICAgCjIwMDItMDgtMjAgMDE6MTIgIGhhcmRha2VyCgogICAqIGFnZW50L21pYmdyb3VwL2Rpc21hbi9tdGVUcmlnZ2VyVGFibGUuYyAoNS4zKToKCiAgIGRvbid0IHVzZSBub24tZXhpc3RlbnQgbWVtb3J5IHBvaW50ZXJzIHRvIHRoZSByZXNwb25zZSBkYXRhIChlZzogInRpbWVvdXQiKQogICAKMjAwMi0wOC0xOSAxNzo0NiAgbmJhCgogICAqIGluY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaCAoNS4xKToKCiAgIENoYW5nZSBhIGZldyBjb25kaXRpb25hbHMgdG8gdXNlICNpZiBpbiBwbGFjZSBvZiAjaWZkZWYKICAgCjIwMDItMDgtMTkgMTc6MjggIG5iYQoKICAgKiBzbm1wbGliLzogbWliLmMgKDUuMTcpLCBwYXJzZS5jICg1LjQpOgoKICAgQWxpZ24gd2l0aCA0LjIgYnJhbmNoCiAgIAoyMDAyLTA4LTE5IDE3OjI2ICBuYmEKCiAgICogbWlicy86IERJU01BTi1TQ0hFRFVMRS1NSUIudHh0ICg1LjEpLAogICBJQU5BLUFERFJFU1MtRkFNSUxZLU5VTUJFUlMtTUlCLnR4dCAoNS4xKSwgSUFOQWlmVHlwZS1NSUIudHh0CiAgICg1LjEpLCBJTkVULUFERFJFU1MtTUlCLnR4dCAoNS4xKSwgTWFrZWZpbGUubWliICg1LjIpLCBpYW5hbGlzdAogICAoNS4xKSwgbWliZmV0Y2ggKDUuMSksIHJmY2xpc3QgKDUuMSk6CgogICBVcGRhdGUgdG8gY3VycmVudCBNSUJzCiAgIAoyMDAyLTA4LTE5IDE3OjI1ICBuYmEKCiAgICogYWdlbnQvbWliZ3JvdXAvbWliSUkvdmFjbV92YXJzLmMgKDUuNyk6CgogICBCYWlsIG91dCBmb3IgYmFkIHNubXBBZG1pblN0cmluZyB2YWx1ZQogICAKMjAwMi0wOC0xOSAxMDo0MyAgamJwbgoKICAgKiBGQVEgKFY0LTItcGF0Y2hlcy41MyksIEZBUSAoNS4xNik6CgogICAgIC0gZG9uJ3QgdXNlIHBvc2l0aW9uYWwgY29tbXVuaXR5IHBhcmFtZXRlciBpbiBleGFtcGxlcwogICAgIC0gYnJlYWsgYSBjb3VwbGUgb2Ygb3Zlci1sb25nIGxpbmVzCiAgICAgLSBtZW50aW9uIG5ldHNubXBfIHZhcmlhbnQgb2YgZHNfc2V0XyBmdW5jdGlvbgogICAKMjAwMi0wOC0xOSAwNTo0NCAgZHRzMTIKCiAgICogRkFRIChWNC0yLXBhdGNoZXMuNTIpLCBGQVEgKDUuMTUpOgoKICAgQWRkIGFuIGVudHJ5IGFib3V0IHRoZSBzbm1wdHJhcGQvQWdlbnRYIHdhcm5pbmcgbWVzc2FnZS4KICAgCjIwMDItMDgtMTggMjE6MjQgIHJzdG9yeQoKICAgKiBkaXN0L25zYi1mdW5jdGlvbnMgKDEuMTEpOgoKICAgZG9uJ3QgY29uZmlndXJlIHdpdGggYnVpbGQgaW5zdGFsbCBkaXIsIGl0IGlzIGFscmVhZHkgc3BlY2lmaWVkIG9uIGNtZCBsaW5lCiAgIGZvciBtYWtlIGluc3RhbGwKICAgCjIwMDItMDgtMTggMTM6NTkgIHJzdG9yeQoKICAgKiBhZ2VudC9oZWxwZXJzL3RhYmxlLmMgKDUuNyk6CgogICBtb3JlIGRlYnVnZ2luZyAtIGxvZyB2YWx1ZSByZXF1ZXN0IGlzIHRyeWluZyB0byBzZXQKICAgCjIwMDItMDgtMTYgMTg6MTMgIGhhcmRha2VyCgogICAqIFJFQURNRSAoNS45KToKCiAgIGFkZGVkIEJydWNlIFNoYXcgdG8gdGhlIHRoYW5rcyBsaXN0CiAgIAoyMDAyLTA4LTE2IDE4OjEyICBoYXJkYWtlcgoKICAgKiBSRUFETUUuc29sYXJpcyAoMS4yKToKCiAgIEEgZ3JlYXQgdXBkYXRlIHRhbGtpbmcgYWJvdXQgcGVybCBhbmQgc29sYXJpcyBmcm9tIEJydWNlIFNoYXcKICAgCjIwMDItMDgtMTYgMDQ6NTEgIGR0czEyCgogICAqIGFnZW50L2hlbHBlcnMvdGFibGVfaXRlcmF0b3IuYyAoNS40KToKCiAgIENhdGNoIGV4cGxpY2l0bHkgJ25vU3VjaEluc3RhbmNlJyBleGNlcHRpb25zLCB3aGVuIHdhbGtpbmcgYW4KICAgaXRlcmF0b3ItaGFuZGxlZCBtb2R1bGUsIHNvIHRoYXQgaG9sZXMgY2FuIGJlIHNraXBwZWQgYW5kIHRoZQogICBuZXh0IHJlYWwgaW5zdGFuY2UgcmV0cmlldmVkLiAgKFRoaXMgd2FzIGFscmVhZHkgaGFuZGxlZCBmb3IKICAgbW9kdWxlcyB0aGF0IGRpZG4ndCBtYXJrIG1pc3NpbmcgaW5zdGFuY2VzIGV4cGxpY2l0bHkpLgogICAKMjAwMi0wOC0xNiAwMzoxNyAgaGFyZGFrZXIKCiAgICogYWdlbnQvc25tcF9hZ2VudC5jICg1LjEzKToKCiAgIHR1cm4gb2ZmIGNhY2hpbmcgYnkgZGVmYXVsdCwgc2luY2UgdGhlIGFnZW50eCBjb2RlIGFwcGVhcnMgYnJva2VuLgogICAKMjAwMi0wOC0xNiAwMzowMyAgaGFyZGFrZXIKCiAgICogYWdlbnQvOiBhZ2VudF9yZWdpc3RyeS5jICg1LjUpLCBzbm1wX2FnZW50LmMgKDUuMTIpOgoKICAgc3BlZWQgZW5oYW5jZW1lbnRzIHZpYSBpbXBsZW1lbnRpbmcgYSByZWdpc3RyYXRpb24gc3VidHJlZSBsb29rdXAKICAgY2FjaGUuICBncmVhdGx5IHNwZWVkcyB0aGluZ3MgdXAgd2hlbiBzaW1pbGFyIHJlcXVlc3RzIGNvbWUgaW4KICAgKHNubXB3YWxrLCAuLi4pLgogICAKMjAwMi0wOC0xNSAxMzozNSAgaGFyZGFrZXIKCiAgICogc25tcGxpYi9wYXJzZS5jICg1LjMpOgoKICAgcHJvdGVjdCBhZ2FpbnN0IE5VTEwgbGFiZWxzIGluIHN1YnRyZWVzCiAgIAoyMDAyLTA4LTE1IDExOjE0ICBoYXJkYWtlcgoKICAgKiBhZ2VudC9hZ2VudF9pbmRleC5jICg1LjMpLCBhZ2VudC9hZ2VudF9yZWdpc3RyeS5jICg1LjQpLAogICBhZ2VudC9hZ2VudF90cmFwLmMgKDUuMSksIGFnZW50L2hlbHBlcnMvb2xkX2FwaS5jICg1LjIpLAogICBhZ2VudC9taWJncm91cC9oZWFkZXJfY29tcGxleC5jICg1LjEpLCBhZ2VudC9taWJncm91cC90ZXN0aGFuZGxlci5jCiAgICg1LjEpLCBzbm1wbGliL3NubXBfdHJhbnNwb3J0LmMgKDUuMiksIHNubXBsaWIvc25tcHVzbS5jICg1LjMpOgoKICAgdXNlIG5ldHNubXBfb2lkX2VxdWFscyAod2hpY2ggaXMgc29tZXRpbWVzIGZhc3RlciB0aGFuCiAgIHNubXBfb2lkX2NvbXBhcmUpIGluIGEgZmV3IHBsYWNlcyB0byBhY2hpZXZlIGJhcmVseSBub3RpY2VhYmxlIHNwZWVkIGdhaW5zLgogICAKMjAwMi0wOC0xNSAxMToxMiAgaGFyZGFrZXIKCiAgICogc25tcGxpYi9wYXJzZS5jICg1LjIpOgoKICAgZG91YmxlIGNoZWNrIGEgcG9pbnRlciBleGlzdHMgYmVmb3JlIHBhc3NpbmcgaXQgdG8gc3RyY21wKCkKICAgCjIwMDItMDgtMTUgMTE6MDUgIGhhcmRha2VyCgogICAqIHBlcmwvU05NUC9NYWtlZmlsZS5QTCAoNS43KToKCiAgIGNoYW5nZSBNQU4zUE9EUyB0byBzb21ldGhpbmcgY29tcGxpYW50IHdpdGggdGhlIHBlcmwgbWFudWFscy4gIEkgdGhpbmsuCiAgIAoyMDAyLTA4LTE0IDEzOjQyICByc3RvcnkKCiAgICogYXBwcy9zbm1wc2V0LmMgKDUuMik6CgogICBhZGQgZGVidWcgZm9yIGxvY2FsIHBhcnNpbmcgb2YgYXJncwogICAKMjAwMi0wOC0xNCAxMjoyNiAgcnN0b3J5CgogICAqIGFnZW50L21pYmdyb3VwL2FnZW50eC86IG1hc3Rlci5jICg1LjUpLCBtYXN0ZXJfYWRtaW4uYyAoNS40KSwKICAgc3ViYWdlbnQuYyAoNS41KToKCiAgIGFkZCBtb3JlIGRldGFpbGVkIGluIGRlYnVnIG1lc3NhZ2VzOyBhZGQgYSBmZXcgbmV3IGRlYnVncwogICAKMjAwMi0wOC0xNCAxMjoyMyAgcnN0b3J5CgogICAqIGFnZW50L3NubXBfYWdlbnQuYyAoNS4xMSk6CgogICB3aGVuIGFsbCBkZWxlZ2F0ZWQgcmVxdWVzdHMgaGF2ZSBmaW5pc2hlZCwgY2hlY2sgYWxsIHJlcXVlc3RzIHN0YXR1cyBzbyB0aGF0CiAgIGFzcCBzdGF0dXMgaXMgc2V0LCB3aGljaCBpcyBuZWNlc3NhcnkgZm9yIGNvcnJlY3QgYWdlbnR4IHNldCBwcm9jZXNzaW5nLgogICAobm93IGlmIEkgY2FuIGp1c3QgZ2V0IGFsbCB0aGlzIGhhaXIgb2ZmIHRoZSBmbG9vciwgYW5kIGdsdWUgaXQgYmFjayB0byBteQogICBoZWFkLCBhbmQgdGhlbiBmaXggdGhhdCBkZW50IGluIHRoZSB3YWxsIHdoZXJlIEkndmUgYmVlbiBiYW5naW5nIG15IGhlYWQuLi4uKQogICAKMjAwMi0wOC0xMyAxNzoyNSAgaGFyZGFrZXIKCiAgICogc25tcGxpYi9zbm1wX2FwaS5jICg1LjE0KToKCiAgIGZpeCBhIGxlbmd0aCBjb21wYXJpc29uIHByb2JsZW0gd2l0aCBuZXRzbm1wX29pZF9pc19zdWJ0cmVlKCkKICAgCjIwMDItMDgtMTMgMTc6MjQgIGhhcmRha2VyCgogICAqIE5FV1MgKDUuNik6CgogICBkb2N1bWVudCBhIGZldyByZWNlbnQgY2hhbmdlcy4KICAgCjIwMDItMDgtMTMgMTc6MDUgIGhhcmRha2VyCgogICAqIGFnZW50L21pYmdyb3VwL2hvc3QvaHJfcHJpbnQuYyAoNS4xKToKCiAgIEZpeCBvcGVuIGZpbGUgcnVuYXdheSBvbiBzb2xhcmlzLiAgU2VlIGJ1ZyAjNTkyODA2IHJlcG9ydGVkIGJ5IEphbWVzIElyd2luLgogICAKMjAwMi0wOC0xMyAxNTowNSAgcnN0b3J5CgogICAqIGluY2x1ZGUvbmV0LXNubXAvdHlwZXMuaCAoNS43KToKCiAgIGFycmF5IG9mIHBvaW50ZXJzID0gcG9pbnRlciB0byBhIHBvaW50ZXIKICAgCjIwMDItMDgtMDkgMTk6MzIgIGhhcmRha2VyCgogICAqIGxvY2FsL0ZBUTJIVE1MICg1LjEpOgoKICAgbWlzYyBkb2MgZml4ZXMuCiAgIAoyMDAyLTA4LTA5IDE5OjMxICBoYXJkYWtlcgoKICAgKiBzbm1wbGliL3NubXBfcGFyc2VfYXJncy5jICg1LjQpLAogICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHJhbnNmb3JtX29pZHMuaCAoNS4yKSwgc25tcGxpYi9zbm1wdXNtLmMKICAgKDUuMiksIHNubXBsaWIvc25tcHYzLmMgKDUuMyk6CgogICBpbml0aWFsIEFFUyBzdXBwb3J0LgogICAKMjAwMi0wOC0wOSAxOTozMSAgaGFyZGFrZXIKCiAgICogaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmggKDUuMiksIHNubXBsaWIvc25tcF9hcGkuYwogICAoNS4xMyk6CgogICBzbGlnaHQgc3BlZWQgdXBzIGZvciBzbm1wX29pZF9jb21wYXJlKCkgdG8gZG8gc2luZ2xlIGludCBjb21wYXJlcyB0aWxsICE9CiAgIAoyMDAyLTA4LTA5IDE5OjI5ICBoYXJkYWtlcgoKICAgKiBzbm1wbGliL3NjYXBpLmMgKDUuMik6CgogICAtIG9wZW5zc2wgMC45Ljcgc3VwcG9ydCBmb3IgREVTIGNoYW5nZXMuCiAgIC0gaW5pdGlhbCBBRVMgc3VwcG9ydC4KICAgCjIwMDItMDgtMDkgMTk6MjggIGhhcmRha2VyCgogICAqIHNubXBsaWIva2V5dG9vbHMuYyAoNS4yKToKCiAgIGluZGVudCBmaXhlcy4KICAgCjIwMDItMDgtMDkgMTk6MjcgIGhhcmRha2VyCgogICAqIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS86IHNjYXBpLmggKDUuMSksIHNubXB1c20uaCAoNS4xKToKCiAgIGRlZmluZSBBRVMga2V5IHNwZWNpZmljcwogICAKMjAwMi0wOC0wOSAxOToyNiAgaGFyZGFrZXIKCiAgICogYWNjb25maWcuaCAoNS44KSwgY29uZmlndXJlICg1LjE3KSwgY29uZmlndXJlLmluICg1LjE1KSwKICAgaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbiAoNS45KToKCiAgIC0gY2hlY2sgZm9yIG9wZW5zc2wgLjAuOS43IERFUyBzdHJ1Y3R1cmVzIGFuZCBmdW5jdGlvbnMuCiAgIC0gY2hlY2sgZm9yIEFFUyBzdXBwb3J0IGluIG9wZW5zc2wgKD4gMC45LjcpCiAgIAoyMDAyLTA4LTA5IDE5OjEwICBoYXJkYWtlcgoKICAgKiBhZ2VudC9taWJncm91cC9hZ2VudHgvc3ViYWdlbnQuYyAoNS40KToKCiAgIGZpeCBtb2RlIHByb2Nlc3NpbmcgZm9yIFJFU0VSVkUxL1JFU0VSVkUyIHRlc3QgZmFpbHVyZXMKICAgCjIwMDItMDgtMDkgMTg6MjkgIHJzdG9yeQoKICAgKiBhZ2VudC9zbm1wX2FnZW50LmMgKDUuMTApOgoKICAgbG9nIG1zZyB3aGVuIHdlIGlnbm9yZS9maXggaWxsZWdhbCBlcnJvcl92YWx1ZXMgZm9yIHRoZSBjbGllbnQgQVBJcwogICAKMjAwMi0wOC0wOSAxODoyOCAgcnN0b3J5CgogICAqIGxvY2FsL21pYjJjLmFycmF5LXVzZXIuY29uZiAoNS4xMik6CgogICBjb3JyZWN0aW9ucyB0byBleGFtcGxlIGNvZGUKICAgCjIwMDItMDgtMDkgMTg6MjcgIHJzdG9yeQoKICAgKiBhZ2VudC9oZWxwZXJzL3RhYmxlLmMgKDUuNik6CgogICByZXZlcnQgZXJyb3JzIHRvIHVuaW5mb3JtYXRpdmUgU05NUHYxIG5vU3VjaE5hbWUgZm9yIEFnZW50WCBnZXQtbmV4dC9pbmNsdXNpdmUKICAgcHJvY2Vzc2luZzsgYWxzbyBhZGQgbW9yZSBjb21tZW50cyBoZXJlIGFuZCB0aGVyZQogICAKMjAwMi0wOC0wOSAxNzowOCAgcnN0b3J5CgogICAqIGFnZW50L21pYmdyb3VwL2FnZW50eC9tYXN0ZXIuYyAoNS40KToKCiAgIGRlYnVnIG1zZyBmb3IgYWdlbnR4IG9pZCBmb3IgY2FzZXMgb3RoZXIgdGhhbiBnZXQvZ2V0bmV4dAogICAKMjAwMi0wOC0wOSAxMTo0NSAgcnN0b3J5CgogICAqIGFnZW50L21pYmdyb3VwL2FnZW50eC9tYXN0ZXJfYWRtaW4uYyAoNS4zKToKCiAgIGRvbid0IGZyZWUgcmVnaXN0cmF0aW9uIGluZm8gb24gZmFpbHVyZSwgYXMgbmV0c25tcF9yZWdpc3Rlcl9taWIgYWxyZWFkeSBkaWQgaXQKICAgCjIwMDItMDgtMDkgMDk6NTcgIGpicG4KCiAgICogc25tcGxpYi86IHNubXBBQUw1UFZDRG9tYWluLmMgKDUuMiksIHNubXBDYWxsYmFja0RvbWFpbi5jICg1LjEpLAogICBzbm1wSVBYRG9tYWluLmMgKDUuMSksIHNubXBUQ1BEb21haW4uYyAoNS40KSwgc25tcFRDUElQdjZEb21haW4uYwogICAoNS41KSwgc25tcFVEUERvbWFpbi5jICg1LjYpLCBzbm1wVURQSVB2NkRvbWFpbi5jICg1LjcpLAogICBzbm1wVW5peERvbWFpbi5jICg1LjQpLCBzbm1wX3RyYW5zcG9ydC5jICg1LjEpOgoKICAgICAtIHJlbmFtZSBzbm1wXzxkb21haW4+X2JsYWggZnVuY3Rpb25zIHRvIG5ldHNubXBfPGRvbWFpbj5fYmxhaAogICAgIC0gbWFrZSB0cmFuc3BvcnQgbWVtYmVyIGZ1bmN0aW9ucyBzdGF0aWMsIHRvIGVtcGhhc2lzZSB0aGF0IHRoZXkgc2hvdWxkCiAgICAgICBub3QgYmUgdXNlZCBkaXJlY3RseQogICAgIC0gaGFuZGxlIEVJTlRSIGluIHNlbmQgYW5kIHJlY3YgZnVuY3Rpb25zIChhcyBwb2ludGVkIG91dCBieSBBbnR0aSBLdW50c2kKICAgICAgIGluIGJ1ZyByZXBvcnQgIzU3NjgwNikKICAgICAtIGZvcm1hdHRpbmcgZml4ZXMKICAgCjIwMDItMDgtMDkgMDk6NTQgIGpicG4KCiAgICogaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5Lzogc25tcEFBTDVQVkNEb21haW4uaCAoNS4zKSwKICAgc25tcElQWERvbWFpbi5oICg1LjIpLCBzbm1wVENQRG9tYWluLmggKDUuMiksIHNubXBUQ1BJUHY2RG9tYWluLmgKICAgKDUuMyksIHNubXBVRFBEb21haW4uaCAoNS4yKToKCiAgICAgLSBtaW5vciBmb3JtYXR0aW5nIGZpeGVzCiAgIAoyMDAyLTA4LTA5IDA5OjU0ICBqYnBuCgogICAqIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oICg1LjMpOgoKICAgICAtIGRvbid0IGV4cG9ydCBuZXRzbm1wX3VuaXhfYmxhaCgpIGZ1bmN0aW9ucwogICAKMjAwMi0wOC0wOSAwOTo1MyAgamJwbgoKICAgKiBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaCAoNS4xKToKCiAgICAgLSBmaXggbmFzdHkgZm9ybWF0dGluZwogICAKMjAwMi0wOC0wOCAxMjoxNCAgcnN0b3J5CgogICAqIHNubXBsaWIvc25tcHYzLmMgKDUuMik6CgogICByZXdvcmQgY29uZmlnX3BlcnJvciBtc2dzIHRvIHJlbW92ZSAiRXJyb3IiLCBhcyBpdCBpcyByZWR1bmRhbnQKICAgCjIwMDItMDgtMDggMTI6MTEgIHJzdG9yeQoKICAgKiBzbm1wbGliL2tleXRvb2xzLmMgKDUuMSk6CgogICByZW1vdmUgaWZkZWYgdG8gbG9nIG1zZyB0byB1c2VyLCBhZnRlciBtYWtpbmcgbXNnIG1vcmUgaW5mb3JtYXRpdmU7IHJlbW92ZQogICBhbm5veWluZyBibGFuayBsaW5lcwogICAKMjAwMi0wOC0wOCAxMTozMyAgaGFyZGFrZXIKCiAgICogYWNjb25maWcuaCAoNS43KSwgY29uZmlndXJlICg1LjE2KSwgY29uZmlndXJlLmluICg1LjE0KToKCiAgIFBhdGNoIGZyb20gSGFycmllIHRvIGNvbXBsZXRlbHkgZGlzYWJsZSBrbWVtIHVzYWdlCiAgIAoyMDAyLTA4LTA2IDAzOjMwICBqYnBuCgogICAqIGFnZW50L21pYmdyb3VwL2FnZW50eC9zdWJhZ2VudC5jICg1LjMpOgoKICAgICAtIHNldCBtYWluX3Nlc3Npb24gdG8gTlVMTCBpbiBzdWJhZ2VudF9zaHV0ZG93bigpLiAgVGhpcyAoYWxvbmcgd2l0aCB0aGUKICAgICAgIGRlcmVnaXN0cmF0aW9uIG9mIGFsbCBhbGFybXMpIGFsbG93cyBBZ2VudFggZnVuY3Rpb25hbGl0eSB0byBiZQogICAgICAgc3RvcHBlZCBhbmQgcmVzdGFydGVkIGluIHN1YmFnZW50cy4KICAgICAtIFRoYW5rcyB0byBWaXNoYWwgVmVybWEgZm9yIG9yaWdpbmFsIHBhdGNoCiAgIAoyMDAyLTA4LTA2IDAzOjI3ICBqYnBuCgogICAqIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmggKDUuMSk6CgogICAgIC0gYWRkIHNubXBfYWxhcm1fdW5yZWdpc3Rlcl9hbGwoKSBmdW5jdGlvbgogICAKMjAwMi0wOC0wNiAwMzoyNiAgamJwbgoKICAgKiBzbm1wbGliLzogc25tcF9hbGFybS5jICg1LjMpLCBzbm1wX2FwaS5jICg1LjEyKToKCiAgICAgLSBhZGQgc25tcF9hbGFybV91bnJlZ2lzdGVyX2FsbCgpIGZ1bmN0aW9uCiAgICAgLSBjYWxsIGl0IGZyb20gc25tcF9zaHV0ZG93bigpCiAgICAgLSB0aGFua3MgdG8gVmlzaGFsIFZlcm1hIGZvciBvcmlnaW5hbCBwYXRjaAogICAKMjAwMi0wOC0wNiAwMzoxNyAgamJwbgoKICAgKiBzbm1wbGliL3NubXBfYWxhcm0uYyAoVjQtMi1wYXRjaGVzLjQpOgoKICAgICAtIGFkZCBkZWJ1Z2dpbmcgb3V0cHV0IHdoZW4gYWxsIGFsYXJtcyB1bnJlZ2lzdGVyZWQKICAgCjIwMDItMDgtMDYgMDM6MTAgIGpicG4KCiAgICogYWdlbnQvbWliZ3JvdXAvYWdlbnR4L3N1YmFnZW50LmMgKFY0LTItcGF0Y2hlcy40KToKCiAgICAgLSBzZXQgbWFpbl9zZXNzaW9uIHRvIE5VTEwgaW4gc3ViYWdlbnRfc2h1dGRvd24oKS4gIFRoaXMgKGFsb25nIHdpdGggdGhlCiAgICAgICBkZXJlZ2lzdHJhdGlvbiBvZiBhbGwgYWxhcm1zKSBhbGxvd3MgQWdlbnRYIGZ1bmN0aW9uYWxpdHkgdG8gYmUKICAgICAgIHN0b3BwZWQgYW5kIHJlc3RhcnRlZCBpbiBzdWJhZ2VudHMuCiAgICAgLSBUaGFua3MgdG8gVmlzaGFsIFZlcm1hIGZvciB0aGlzIHBhdGNoICgjNTU4NTE3KQogICAKMjAwMi0wOC0wNiAwMzowOCAgamJwbgoKICAgKiBzbm1wbGliLzogc25tcF9hbGFybS5jLCBzbm1wX2FsYXJtLmgsIHNubXBfYXBpLmMKICAgKFY0LTItcGF0Y2hlcy5bMywxLDM2XSk6CgogICAgIC0gYWRkIHNubXBfYWxhcm1fdW5yZWdpc3Rlcl9hbGwoKSBmdW5jdGlvbgogICAgIC0gY2FsbCBpdCBmcm9tIHNubXBfc2h1dGRvd24oKQogICAgIC0gdGhhbmtzIHRvIFZpc2hhbCBWZXJtYSBmb3IgcHJvdmlkaW5nIHRoaXMgcGF0Y2gKICAgCjIwMDItMDgtMDUgMTA6MDYgIHJzdG9yeQoKICAgKiBsb2NhbC9taWIyYy5pdGVyYXRlLmNvbmYgKDUuMyk6CgogICBtYXRjaCBmdW5jdGlvbiBkZWZpbml0aW9uIHcvTmV0c25tcF8qX0RhdGFQb2ludCB0eXBlZGVmczsgYWRkIGN2cyBJZAogICAKMjAwMi0wOC0wMyAxMTo1MiAgcnN0b3J5CgogICAqIGRpc3QvUkVMRUFTRS1JTlNUUlVDVElPTlMgKDEuNSk6CgogICBicmVhayB1cCBsaW5lcyBsb25nIHRoYW4gODAgY2hhcnM7IGFiY2RlLCBub3QgYWJjZGQKICAgCjIwMDItMDgtMDMgMDM6MjEgIGhhcmRha2VyCgogICAqIGRpc3QvUkVMRUFTRS1JTlNUUlVDVElPTlMgKDEuNCk6CgogICBtb3JlIHVwZGF0ZXMgYWJvdXQgdGhpbmdzIFdlcyBkb2VzIGF0IDEyOjMwIGFtCiAgIAoyMDAyLTA4LTAzIDAyOjQ0ICBoYXJkYWtlcgoKICAgKiBGQVEgKDUuMTQpLCBSRUFETUUgKDUuOCksIHNlZHNjcmlwdC5pbiAoNS42KSwgcGVybC9TTk1QL1NOTVAucG0KICAgKDUuMTIpLCBzbm1wbGliL3NubXBfdmVyc2lvbi5jICg1LjUpOgoKICAgLSAoc25tcGxpYi9zbm1wX3ZlcnNpb24uYyBzZWRzY3JpcHQuaW4pOiB2ZXJzaW9uIHRhZyAoIDUuMC4zICkKCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCkNoYW5nZXM6IFY1LjAuMiAtPiBWNS4wLjMKCjIwMDItMDgtMDIgMjM6NDEgIGhhcmRha2VyCgogICAqIGFnZW50L21pYmdyb3VwL2FnZW50Ly5jdnNpZ25vcmU6CgogICBhZGQgLmxpYnMKICAgCjIwMDItMDgtMDIgMjM6NDAgIGhhcmRha2VyCgogICAqIGFnZW50L21pYmdyb3VwL1Jtb24vLmN2c2lnbm9yZToKCiAgIGlnbm9yZSBmaWxlCiAgIAoyMDAyLTA4LTAyIDIzOjM5ICBoYXJkYWtlcgoKICAgKiBhZ2VudC9NYWtlZmlsZS5kZXBlbmQsIGFnZW50L2hlbHBlcnMvTWFrZWZpbGUuZGVwZW5kLAogICBhZ2VudC9taWJncm91cC9NYWtlZmlsZS5kZXBlbmQsIGFwcHMvTWFrZWZpbGUuZGVwZW5kLAogICBhcHBzL3NubXBuZXRzdGF0L01ha2VmaWxlLmRlcGVuZCwgc25tcGxpYi9NYWtlZmlsZS5kZXBlbmQKOgoKICAgbWFrZSBkZXBlbmQKICAgCjIwMDItMDgtMDIgMjM6MzcgIGhhcmRha2VyCgogICAqIGluY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmguaW46CgogICBmb3Jnb3R0ZW4gdG8gY2hlY2sgaW4gdGVzdCBmb3IgcGVybF9ldiBjaGFuZ2VzCiAgIAoyMDAyLTA4LTAyIDIzOjM1ICBoYXJkYWtlcgoKICAgKiBwZXJsL1NOTVAvU05NUC5wbToKCiAgIHJlbW92ZSBkZWJ1Z2dpbmcgcHJpbnQgKG9wcHMpCiAgIAoyMDAyLTA4LTAyIDIzOjM1ICBoYXJkYWtlcgoKICAgKiBwZXJsL1NOTVAvOiBTTk1QLnBtLCBTTk1QLnhzOgoKICAgZml4IGRlZmF1bHQgdmVyc2lvbiB1c2FnZS4KICAgCjIwMDItMDgtMDIgMjM6MzQgIGhhcmRha2VyCgogICAqIHNubXBsaWIvc25tcFVEUElQdjZEb21haW4uYzoKCiAgIFBhdGNoICM1NzIzOTQgZnJvbSBLYXRzdWhpc2EgQUJFOgogICAgIC0gc3VwcG9ydCBsaW5rIGxvY2FsIGFkZHJlc3NlcwogICAgIC0gYmluZCB0byBpcHY2IG9ubHkgaWYgSVBWNl9WNk9OTFkgaXMgZGVmaW5lZC4KICAgCjIwMDItMDgtMDIgMjM6MzEgIGhhcmRha2VyCgogICAqIHNubXBsaWIvc25tcF9wYXJzZV9hcmdzLmM6CgogICBmaXggY29uZmlndXJlIHNwZWNpZmllZCBkZWZhdWx0IHZlcnNpb25pbmcKICAgCjIwMDItMDgtMDIgMjI6NTggIGhhcmRha2VyCgogICAqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluOgoKICAgUGF0Y2ggIzU3MjM5NDogYWRkIGlwdjYgdHJhbnNwb3J0cyB3aGVuIC0tZW5hYmxlLWlwdjYgZGVmaW5lZC4gIFRoYW5rcyB0byBLYXRzdWhpc2EgQUJFLgogICAKMjAwMi0wOC0wMiAxNDo1OSAgaGFyZGFrZXIKCiAgICogTkVXUzoKCiAgIHVwZGF0ZSBmb3IgNS4wLjMKICAgCjIwMDItMDgtMDIgMTQ6NTUgIGhhcmRha2VyCgogICAqIG1hbi9zbm1wX2FnZW50X2FwaS4zLmRlZjoKCiAgIHVwZGF0ZQogICAKMjAwMi0wOC0wMiAxNDozOSAgaGFyZGFrZXIKCiAgICogZGlzdC9SRUxFQVNFLUlOU1RSVUNUSU9OUzoKCiAgIG1vcmUgZG9jcy4KICAgCjIwMDItMDgtMDIgMTQ6MjkgIGhhcmRha2VyCgogICAqIG1hbi86IG5ldHNubXBfYWdlbnQuMywgbmV0c25tcF9idWxrX3RvX25leHQuMywKICAgbmV0c25tcF9kZWJ1Zy4zLCBuZXRzbm1wX2hhbmRsZXIuMywgbmV0c25tcF9pbnN0YW5jZS4zCiwgbmV0c25tcF9tdWx0aXBsZXhlci4zLCBuZXRzbm1wX29sZF9hcGkuMywKICAgbmV0c25tcF9yZWFkX29ubHkuMywgbmV0c25tcF9zY2FsYXIuMywKICAgbmV0c25tcF9zZXJpYWxpemUuMywgbmV0c25tcF90YWJsZS4zLAogICBuZXRzbm1wX3RhYmxlX2FycmF5LjMsIG5ldHNubXBfdGFibGVfZGF0YS4zLAogICBuZXRzbm1wX3RhYmxlX2RhdGFzZXQuMywgbmV0c25tcF90YWJsZV9pdGVyYXRvci4zLAogICBuZXRzbm1wX3RvZG8uMywgbmV0c25tcF93YXRjaGVyLjMsIE1ha2VmaWxlLmluOgoKICAgZG94eWdlbiB1cGRhdGUuCiAgIAoyMDAyLTA4LTAyIDE0OjI2ICBoYXJkYWtlcgoKICAgKiBkaXN0L1JFTEVBU0UtSU5TVFJVQ1RJT05TOgoKICAgdXBkYXRlIGZvciB5ZXQgbW9yZSBzdHVmZi4KICAgCjIwMDItMDgtMDIgMTQ6MjYgIGhhcmRha2VyCgogICAqIHJlbW92ZS1maWxlczoKCiAgIHJlbW92ZSBhIGZldyBtb3JlIGRpc3QgcmVsYXRlZCBmaWxlcy4KICAgCjIwMDItMDgtMDIgMTQ6MjMgIGhhcmRha2VyCgogICAqIHNubXBsaWIvc25tcF9hcGkuYzoKCiAgIGVycm9yIG1lc3NhZ2UgY2hhbmdlIHRvIHJlbW92ZSBERVMgc3BlY2lmaWMgZXJyb3IgbXNnLgogICAKMjAwMi0wOC0wMiAxNDoyMyAgaGFyZGFrZXIKCiAgICogcGVybC9hZ2VudC90eXBlbWFwOgoKICAgc3BhY2luZyBmaXhlcy4KICAgCjIwMDItMDgtMDIgMTQ6MjIgIGhhcmRha2VyCgogICAqIHBlcmwvYWdlbnQvOiBNYWtlZmlsZS5QTCwgYWdlbnQueHM6CgogICByZW5hbWVkIGZpbGUuCiAgIAoyMDAyLTA4LTAyIDE0OjIyICBoYXJkYWtlcgoKICAgKiBwZXJsL2FnZW50LzogbmV0c25tcF9yZXF1ZXN0X2luZm8ucG0sCiAgIG5ldHNubXBfcmVxdWVzdF9pbmZvUHRyLnBtOgoKICAgcmVuYW1lZCBmaWxlCiAgIAoyMDAyLTA4LTAyIDE0OjIwICBoYXJkYWtlcgoKICAgKiBwZXJsL0FueURhdGFfU05NUC9uZXRzaDoKCiAgIEFkZCBhICJldmFsdmFycyIgZGlyZWN0aXZlIHRvIGRvIHNpbXBseSByZXBsYWNlbWVudHMuCiAgIAoyMDAyLTA4LTAyIDE0OjE2ICBoYXJkYWtlcgoKICAgKiBhZ2VudC9taWJncm91cC92ZXJzaW9udGFnOgoKICAgdXNlIENWU1VTRVIgdmFyaWFibGUgd2hlbiBkb2luZyBzdHVmZiBpbnN0ZWFkIG9mIG15IGhhcmQtY29kZWQgbmFtZS4KICAgCjIwMDItMDgtMDIgMTQ6MTQgIGhhcmRha2VyCgogICAqIE1ha2VmaWxlLnRvcDoKCiAgIHVwZGF0ZSBsaWJ0b29sIHZlcnNpb24gZm9yIDUuMC4zCiAgIAoyMDAyLTA4LTAyIDE0OjEzICBoYXJkYWtlcgoKICAgKiBNYWtlZmlsZS5pbjoKCiAgIGNoYW5nZSBjaGVja2NvbW1lbnQgdGFnIHRvIGV4Y2x1ZGUgd2luMzIgZmlsZXMuCiAgIAoyMDAyLTA4LTAyIDE0OjEzICBoYXJkYWtlcgoKICAgKiBDaGFuZ2VMb2c6CgogICB1cGRhdGUgY2hhbmdlbG9nIGJ1aWxkIG5vdGVzIGF0IHRoZSBib3R0b20gb2YgdGhlIGZpbGUuCiAgIAoyMDAyLTA4LTAyIDE0OjAxICBoYXJkYWtlcgoKICAgKiBkaXN0L1JFTEVBU0UtSU5TVFJVQ1RJT05TOgoKICAgY3JlYXRlZCBhIGhvdy10byBmaWxlIGZvciBtYWtpbmcgcmVsZWFzZXMKICAgCjIwMDItMDgtMDIgMTQ6MDEgIGhhcmRha2VyCgogICAqIGRpc3QvY2hhbmdlbG9nZml4OgoKICAgY2hhbmdlbG9nIGZpeC11cCBzY3JpcHQKICAgCjIwMDItMDgtMDIgMTA6MjEgIHJzdG9yeQoKICAgKiBkaXN0L25zYi1mdW5jdGlvbnM6CgogICB0cmFuc2xhdGUgJy8nIGluIHN5c3RlbSBuYW1lIHRvICdfJyAoZm9yIGN5Z3dpbikKICAgCjIwMDItMDgtMDIgMDk6NTYgIHJzdG9yeQoKICAgKiBkaXN0L1JFQURNRS5idWlsZC1zY3JpcHRzOgoKICAgZml4IHNlY3Rpb24gY3ZzIGdldCBjb21tYW5kIGV4YW1wbGUKICAgCjIwMDItMDgtMDIgMDk6MDYgIGR0czEyCgogICAqIGluY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2hwdXguaDoKCiAgIFN1cHByZXNzICdpbmxpbmUnIHdoZW4gbm90IHVzaW5nIEdDQy4gU3VnZ2VzdGVkIGJ5IEpvaGFubmVzIFNjaG1pZHQtRmlzY2hlcgogICAKMjAwMi0wOC0wMiAwODo1OSAgcnN0b3J5CgogICAqIGRpc3QvUkVBRE1FLmJ1aWxkLXNjcmlwdHM6CgogICBmaXggc2VjdGlvbiBvbiBza2lwcGluZyBtYWtlIHRlc3Q7IGFkZCAtcCBmbGFnIHRvIGV4YW1wbGVzCiAgIAoyMDAyLTA4LTAyIDA4OjUyICByc3RvcnkKCiAgICogZGlzdC9SRUFETUUuYnVpbGQtc2NyaXB0czoKCiAgIGRlc2NyaWJlIHVzZSBvZiBuc2ItcGFja2FnZSBzY3JpcHQuIFRlc3RlcnMgYW5kIGNvbW1lbnRzIGFwcHJlY2lhdGVkLi4uCiAgIAoyMDAyLTA4LTAyIDA4OjMzICByc3RvcnkKCiAgICogZGlzdC9uc2ItcGxhdGZvcm06CgogICBvdXRwdXQgcGxhdGZvcm0gaW5mbwogICAKMjAwMi0wOC0wMiAwODoxOCAgcnN0b3J5CgogICAqIGRpc3QvbnNiLWJ1aWxkOgoKICAgcmVuYW1lZCB0byBuc2ItcGFja2FnZQogICAKMjAwMi0wOC0wMiAwODoxOCAgcnN0b3J5CgogICAqIGRpc3QvbnNiLXBhY2thZ2U6CgogICByZW5hbWVkIG5zYi1idWlsZCB0byBhdm9pZCBjb25mdXNpb24gd2l0aCBzY3JpcHQgZnVuY3Rpb24KICAgCjIwMDItMDgtMDIgMDg6MTUgIGhhcmRha2VyCgogICAqIGRpc3QvbnNiLWZ1bmN0aW9uczoKCiAgIENoYW5nZSBsb2NhdGlvbiBuYW1lIHRvIFVua25vd24KICAgCjIwMDItMDgtMDIgMDg6MDggIGhhcmRha2VyCgogICAqIHBlcmwvOiBBU04vQVNOLnBtLCBhZ2VudC9hZ2VudC5wbSwKICAgYWdlbnQvbmV0c25tcF9yZXF1ZXN0X2luZm8ucG06CgogICBtb3JlIG9sZCBwZXJsIGZpeGVzCiAgIAoyMDAyLTA4LTAyIDA4OjA0ICBoYXJkYWtlcgoKICAgKiBwZXJsLzogT0lEL09JRC5wbSwgYWdlbnQvZGVmYXVsdF9zdG9yZS9kZWZhdWx0X3N0b3JlLnBtCjoKCiAgIG1vcmUgb2xkIHBlcmwgZml4ZXMKICAgCjIwMDItMDgtMDIgMDg6MDAgIGhhcmRha2VyCgogICAqIHBlcmwvZGVmYXVsdF9zdG9yZS9kZWZhdWx0X3N0b3JlLnBtOgoKICAgbW9yZSBvbGQgcGVybCBmaXhlcwogICAKMjAwMi0wOC0wMiAwNzo0OCAgcnN0b3J5CgogICAqIGRpc3QvbnNiLWZ1bmN0aW9uczoKCiAgIGZpeCByZXR1cm4gY29kZQogICAKMjAwMi0wOC0wMiAwNzo0OCAgcnN0b3J5CgogICAqIGRpc3QvbnNiLWJ1aWxkOgoKICAgZG9uJ3QgcHVsbCBmaXJzdCBhcmcgdGlsIGFmdGVyIGdldG9wdHMvc2hpZnQ7IG1vdmUgc2V0IG9mIGRlZmF1bHQgb3B0cwogICAKMjAwMi0wOC0wMiAwNzozNyAgcnN0b3J5CgogICAqIGRpc3QvbnNiLWZ1bmN0aW9uczoKCiAgIGFkZCBvcHRpb24gdG8gc2tpcCBidWlsZCBvciB0ZXN0IHN0ZXBzOyBhZGQgLWYgb3B0aW9uIHRvIHByb21wdCB0byBvdmVycmlkZQogICBubyBwcm9tcHQgZmxhZyAodXNlZnVsIGZvciBlcnJvcnMpOyBuZXcgbnNiLW1ha2UgbWV0aG9kOyBjaGVjayByYyBvZgogICBtYWtlIGNsZWFuCiAgIAoyMDAyLTA4LTAyIDA3OjM2ICByc3RvcnkKCiAgICogZGlzdC9uc2ItYnVpbGQ6CgogICBhZGQgb3B0aW9uIHRvIHNraXAgYnVpbGQgb3IgdGVzdCBzdGVwczsgdHdlYWsgdXNhZ2UKICAgCjIwMDItMDgtMDIgMDc6MTAgIHJzdG9yeQoKICAgKiBkaXN0L25zYi1idWlsZDoKCiAgIGZpeCB0eXBvOyByZW1vdmUgZXh0cmEgdHJhaWxpbmcgc2xhc2ggaW4gZGlyCiAgIAoyMDAyLTA4LTAyIDA2OjMzICByc3RvcnkKCiAgICogZGlzdC9uc2ItYnVpbGQ6CgogICBjaGVjayBtb3JlIHBsYWNlcyB0byBzb3VyY2UgbnNiLWZ1bmN0aW9uczsgZml4IGZvciBjbWQgbGluZSBidWlsZCBwYXRoCiAgIAoyMDAyLTA4LTAyIDA2OjI4ICByc3RvcnkKCiAgICogZGlzdC9uc2ItZnVuY3Rpb25zOgoKICAganVzdCBzaG93IGVycm9ycyBhZnRlciBidWlsZCwgbm90IHdhcm5pbmdzCiAgIAoyMDAyLTA4LTAxIDE3OjA0ICBoYXJkYWtlcgoKICAgKiBwZXJsL09JRC9PSUQueHM6CgogICByZXZlcnQgdG8gbm9uLWFuc2kgcHJvdG90eXBlcyBmb3Igb2xkZXIgcGVybCB3aXRoIG9sZGVyIGNvbXBpbGVycyBvbgogICBvbGRlciBzeXN0ZW1zLiAgTm90IHRoYXQgSSdtIGdydW1weSwgb2YgY291cnNlLgogICAKMjAwMi0wOC0wMSAxNjoyNSAgaGFyZGFrZXIKCiAgICogY29uZmlndXJlLmluLCBhZ2VudC9zbm1wX3BlcmwuYzoKCiAgIGNoZWNrIGZvciBvbGRlciBhbmQgbmV3IGVtYmVkZGVkIHBlcmwgY2FsbCBmdW5jdGlvbnMKICAgCjIwMDItMDgtMDEgMTQ6MDcgIHJzdG9yeQoKICAgKiBkaXN0L25zYi1mdW5jdGlvbnM6CgogICBkb24ndCBzeW1saW5rIHRvIHNyYyBmcm9tIGJ1aWxkOyB1cGRhdGUgbnNiLWdldC1jb25maWcKICAgCjIwMDItMDgtMDEgMTQ6MDYgIHJzdG9yeQoKICAgKiBkaXN0L25zYi1idWlsZDoKCiAgIGZpeCBmb3IgY21kIGxpbmUgYnVpbGQgZGlyCiAgIAoyMDAyLTA4LTAxIDEyOjU4ICByc3RvcnkKCiAgICogZGlzdC9uc2ItZnVuY3Rpb25zOgoKICAgZml4IGNvbmZpZyBpbnN0YWxsIHBhdGg7IHJlbW92ZSBwbGF0Zm9ybSBzcGVjaWZpYyBmcm9tIG5zYi1idWlsZAogICAKMjAwMi0wOC0wMSAxMjo1NiAgcnN0b3J5CgogICAqIGRpc3QvbnNiLWJ1aWxkOgoKICAgcmVtb3ZlIGhhcmQgY29kZWQgaW5mbwogICAKMjAwMi0wOC0wMSAxMjoyMiAgcnN0b3J5CgogICAqIGRpc3QvbnNiLWZ1bmN0aW9uczoKCiAgIGFkZCBvcHRpb24gdG8gc2tpcCBwcm9tcHRzOyByZW1vdmUgcHJldmlvdXMgaW5zdGFsbHM7IHR3ZWFrIGVyciBwYXR0ZXJuCiAgIAoyMDAyLTA4LTAxIDEyOjE0ICBqYnBuCgogICAqIG1hbi9zbm1wX2FsYXJtLjMuZGVmOgoKICAgICAtIHVzZSBuZXRzbm1wX2RzX3NldF9ib29sZWFuKCkgaW5zdGVhZCBvZiBkc19zZXRfYm9vbGVhbigpCiAgIAoyMDAyLTA4LTAxIDEyOjEyICBqYnBuCgogICAqIG1hbi9zbm1wX2FnZW50X2FwaS4zLmRlZjoKCiAgICAgLSBjaGFuZ2UgY29kZSBzYW1wbGUgdG8gdXNlIG5ldHNubXBfZHNfc2V0X2Jvb2xlYW4oKQogICAgIC0gdXBkYXRlIHJlZmVyZW5jZXMgdG8gbGlicmFyaWVzICh3aGljaCB3ZXJlIHN0aWxsIHRhbGtpbmcgYWJvdXQKICAgICAgIGxpYnVjZGFnZW50IGV0IGFsLikgLS0gUExFQVNFIFJFVklFVyBCRUZPUkUgNS4wLjMKICAgCjIwMDItMDgtMDEgMTI6MDcgIHJzdG9yeQoKICAgKiBkaXN0L25zYi1mdW5jdGlvbnM6CgogICBsb3RzIG9mIGZpeGVzIHRvIHByZXZpb3VzZSB1bnRlc3RlZCBzY3JpcHRzCiAgIAoyMDAyLTA4LTAxIDEyOjA0ICByc3RvcnkKCiAgICogZGlzdC9uc2ItYnVpbGQ6CgogICBzY3JpcHQgdG8gYnVpbGQgcmVsZWFzZXMuLi4gc3RpbGwgc29tZSBoYXJkY29kaW5nIHdoaWxlIHRlc3RpbmcsIGJ1dCBpdHMKICAgZ2V0dGluZyB0aGVyZS4uLgogICAKMjAwMi0wOC0wMSAxMTo1MSAgcnN0b3J5CgogICAqIGRpc3QvOiBjdnNzaG93LCBjdnN1cDoKCiAgIHV0aWxpdHkgc2NyaXB0cwogICAKMjAwMi0wOC0wMSAwOTozMCAgZHRzMTIKCiAgICogYWdlbnQvaGVscGVycy86IHNjYWxhci5jLCBzY2FsYXIyLmM6CgogICBHbyB3aXRoIHRoZSAic2NhbGFyIGFzIHN1cGVyLWhhbmRsZXIgb2YgaW5zdGFuY2UiIGltcGxlbWVudGF0aW9uLgogICBTY2FsYXIxLmMgaXMgcHJvYmFibHkgcmVkdW5kZW50LCBidXQgd2UgY2FuIHJlbW92ZSB0aGlzIGxhdGVyLgogICAoWXVwIC0gSSdtIGEgY293YXJkLi4uLikKICAgCjIwMDItMDgtMDEgMDE6MTEgIGR0czEyCgogICAqIFJFQURNRS53aW4zMjoKCiAgIE1pbm9yIHR5cG9zLCBwbHVzIGVtcGhhc2lzZSB0aGUgbmVlZCBmb3IgdGhlIElwSGxwQVBJIGxpYnJhcnkuCiAgIAoyMDAyLTA3LTMwIDA4OjI2ICBkdHMxMgoKICAgKiBsb2NhbC9zbm1wY29uZi5kaXIvc25tcC1kYXRhL291dHB1dDoKCiAgIFJlY29nbmlzZSAnMCcgYXMgYSB2YWxpZCBzZXR0aW5nIGZvciBzdWZmaXhQcmludGluZywgYW5kIHVwZGF0ZSB0aGUKICAgcHJvbXB0cyB0byBtYXRjaCB0aGUgdjUgb3V0cHV0IGZvcm1hdHMgZGVmYXVsdHMuIFNlZSBCdWcgIzU2NzQ1MQogICAKMjAwMi0wNy0zMCAwNzo1OSAgZHRzMTIKCiAgICogYXBwcy9zbm1wdGFibGUuYzoKCiAgIEZpcnN0IGF0dGVtcHQgYXQgdGFja2xpbmcgQnVnICM1NzQ0MzQKICAgUmVjb2duaXNlIHRoYXQgZGVmYXVsdCBvdXRwdXQgZm9ybWF0IGlzIGVxdWl2YWxlbnQgdG8gLU9TLgogICBTbm1wdGFibGUgc3RpbGwgY3Jhc2hlcyB3aXRoIC1PZiBvciAtT3UsIGJ1dCBhdCBsZWFzdCB0aGUKICAgZGVmYXVsdCBpbnZvY2F0aW9uIHdvcmtzLgogICAKMjAwMi0wNy0zMCAwNTo0MSAgZHRzMTIKCiAgICogd2luMzIvbGlic25tcF9kbGwvbGlic25tcC5kZWY6CgogICBFeHBvcnQgbmV3bHktZGVmaW5lZCBwdWJsaWMgbmFtZXMsIGFuZCByZS1leHBvcnQgc29tZSByb3V0aW5lcyB0aGF0CiAgIGhhdmUgY2hhbmdlZCBuYW1lLiAgVGhpcyBzaG91bGQgbm93IGNvbXBpbGUgdW5kZXIgVmlzdWFsIEMrKyBhZ2Fpbi4KICAgCjIwMDItMDctMzAgMDI6MjcgIGR0czEyCgogICAqIGFnZW50L2hlbHBlcnMvdGFibGVfZGF0YXNldC5jOgoKICAgRG9uJ3QgcmVtb3ZlIGEgUm93LVN0YXR1cyBhdXRvLWRlbGV0ZWQgcm93IHVudGlsIHRoZSBsYXN0IG1pbnV0ZSwKICAgaW4gY2FzZSBvdGhlciAobG93ZXIpIGhhbmRsZXJzIHRyeSB0byBhY2Nlc3MgaXQuCiAgIAoyMDAyLTA3LTMwIDAxOjM4ICBkdHMxMgoKICAgKiBGQVEgKFY0LTItcGF0Y2hlcy4xKSwgRkFROgoKICAgTWVudGlvbiB0aGUgbmVlZCB0byBlc2NhcGUgcXVvdGVzIHdoZW4gcXVlcnlpbmcgc3RyaW5nLWluZGV4ZWQgdGFibGVzLgogICAKMjAwMi0wNy0yOSAyMzo1NiAgcnN0b3J5CgogICAqIGluY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfYXJyYXkuaDoKCiAgIHVwZGF0ZSByZWdpc3RlciBmdW5jdGlvbiBuYW1lCiAgIAoyMDAyLTA3LTI5IDIzOjU1ICByc3RvcnkKCiAgICogbG9jYWwvbWliMmMuYXJyYXktdXNlci5jb25mOgoKICAgYXV0b2dlbiBleGFtcGxlIGNvZGUgZm9yIGluZGV4IGNoZWNraW5nIGluIGV4dHJhY3RfaW5kZXg7IHVwZGF0ZSByZWdpc3RlcgogICBmdW5jdGlvbiBuYW1lOyB1c2UgY29udGFpbmVyIGluICpfZ2V0X2J5X2lkeCgpCiAgIAoyMDAyLTA3LTI5IDE2OjIzICByc3RvcnkKCiAgICogbG9jYWwvbWliMmMuYXJyYXktdXNlci5jb25mOgoKICAgdXBkYXRlIGZvciBuZXcgc3RydWN0IG5hbWU7IGFkZCBleGFtcGxlIGNvZGUgYXMgY29tbWVudHMgaW5zdGVhZCBvZiB2YXJfWFhYCiAgIGFuZCBzdWNoOyBpbiBhIGZldyBpbXBvcnRhbnQgcGxhY2VzIGFkZCBjb2RlIHdoaWNoIHdpbGwgYWxsb3cgYSBuZXdseQogICBnZW5lcmF0ZWQgbW9kdWxlIHRvIGJlIGNvbXBpbGVkIGlmIC1EVEFCTEVfQ09OVEFJTkVSX1RPRE8gaXMgc3BlY2lmaWVkOwogICBwcm9iYWJseSBhIGZldyBvdGhlciB0d2Vha3MgSSBmb3Jnb3QKICAgCjIwMDItMDctMjkgMDM6MDYgIGR0czEyCgogICAqIGFnZW50L2hlbHBlcnMvOiB0YWJsZV9hcnJheS5jLCB0YWJsZS5jLCB0YWJsZV9kYXRhLmMKLCB0YWJsZV9kYXRhc2V0LmMsIHRhYmxlX2l0ZXJhdG9yLmM6CgogICBQcm90ZWN0IGFnYWluc3QgZGVmZXJlbmNpbmcgTlVMTCBwb2ludGVycy4KICAgKE1vc3Qgb2YgdGhlc2UgU2hvdWxkIE5ldmVyIEhhcHBlbiBidXQgWW91IENhbid0IEJlIFRvbyBDYXJlZnVsISkKICAgCjIwMDItMDctMjkgMDM6MDMgIGpicG4KCiAgICogYWdlbnQvbWliZ3JvdXAva2VybmVsX3N1bm9zNS5jOgoKICAgICAtIGRldGVjdCBgZG1mZScgZXRoZXJuZXQgY2FyZHMgYXMgZm91bmQgb24gTmV0cmEgWDEgbWFjaGluZXMuCiAgICAgICBUaGFua3MgdG8gSm9obiBPbHNvbiBmb3IgdmVyaWZ5aW5nIHRoaXMgZml4LgogICAKICAgICAgIEFsc28gbm90ZSB0aGF0IGBpbmRlbnQnIGhhcyAtLS0tZWQgdGhlIGZvcm1hdHRpbmcgb2YgdGhpcyBmaWxlCiAgICAgICBiZXlvbmQgbGVnaWJpbGl0eSBpbiBzZXZlcmFsIHBsYWNlcy4gIEkgZG9uJ3QgdGhpbmsgd2Ugd2FudCB0bwogICAgICAgZG8gKnRoYXQqIGFnYWluLgogICAKMjAwMi0wNy0yOSAwMjo0MCAgZHRzMTIKCiAgICogYWdlbnQvaGVscGVycy90YWJsZV9kYXRhc2V0LmM6CgogICBGdWxsZXIgdmFsaWRhdGlvbiBvZiBSb3dTdGF0dXMgdmFsdWVzIHdydCByb3cgY3JlYXRpb24vZXhpc3Rpbmcgcm93cy4KICAgCjIwMDItMDctMjkgMDE6MjUgIGR0czEyCgogICAqIHdpbjMyLzogbGlic25tcC9saWJzbm1wLmRzcCwgbGlic25tcF9kbGwvbGlic25tcF9kbGwuZHNwCiwgbmV0c25tcG1pYnMvbmV0c25tcG1pYnMuZHNwOgoKICAgVGFrZSBhY2NvdW50IG9mIHJlY2VudCBjaGFuZ2VzIGluIGxpYnJhcnkgZmlsZXMuCiAgICdSZWxlYXNlJyBhcHBsaWNhdGlvbnMgc3RpbGwgZG9uJ3QgbGluayBwcm9wZXJseSwgYnV0IGF0IGxlYXN0CiAgIHRoZSBsaWJyYXJpZXMgY29tcGlsZSwgYW5kIHRoZSAnRGVidWcnIHNpZGUgc2VlbXMgdG8gd29yay4KICAgCjIwMDItMDctMjkgMDE6MjMgIGR0czEyCgogICAqIGluY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2FpeC5oOgoKICAgVHdlYWsgaW5saW5lIGhhbmRsaW5nIGZvciBBSVggLSBzdWdnZXN0ZWQgYnkgQW5keSBIb29kLgogICAKMjAwMi0wNy0yNiAxMDo1MiAgcnN0b3J5CgogICAqIHNubXBsaWIvTWFrZWZpbGUuaW46CgogICByZW1vdmUgYXV0b2RlcGVuZGVuY2llcyB1bnRpbCBwb3J0YWJsZSBzb2x1dGlvbiBjYW4gYmUgZm91bmQKICAgCjIwMDItMDctMjYgMDg6NDEgIGR0czEyCgogICAqIHdpbjMyLzogbWliX21vZHVsZV9jb25maWcuaCwgbWliX21vZHVsZV9pbmNsdWRlcy5oLAogICBtaWJfbW9kdWxlX2luaXRzLmg6CgogICBSZW1vdmUgbWVudGlvbiBvZiB0aGUgKG9ic29sZXRlKSB1Y2Qtc25tcC9yZWdpc3RyeSBtb2R1bGUuCiAgIAoyMDAyLTA3LTI2IDA3OjMyICBkdHMxMgoKICAgKiB3aW4zMi9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaDoKCiAgIFByb3RlY3QgdGhlIFdpbjMyIHZlcnNpb24gb2YgdGhlIGNvbmZpZyBmaWxlLCBzbyB0aGF0IHRoZSBvdGhlciBoZWFkZXIKICAgZmlsZXMgcmVjb2duaXNlIHRoYXQgaXQgaGFzIGluZGVlZCBiZWVuIGluY2x1ZGVkLgogICAKMjAwMi0wNy0yNiAwNzoyNCAgZHRzMTIKCiAgICogRkFRIChWNC0yLXBhdGNoZXMuMCksIEZBUToKCiAgIEEgYml0IG1vcmUgZGV0YWlsIG9uIG1pYjJjLCBwbHVzIHRoZSBub24td3JpdGVhYmlsaXR5IG9mIHN5c3tMb2NhdGlvbixDb250YWN0fQogICAKMjAwMi0wNy0yNiAwNToyMiAgZHRzMTIKCiAgICogRkFRIChWNC0yLXBhdGNoZXMuOSksIEZBUToKCiAgIEFub3RoZXIgZW50cnkgYWJvdXQgaW52YWxpZCB1c2Ugb2YgbWliMmMuCiAgIAoyMDAyLTA3LTI2IDA1OjE2ICBkdHMxMgoKICAgKiBzbm1wbGliL01ha2VmaWxlLmluOgoKICAgU3VwcHJlc3MgdGhlICJub24tc3RhbmRhcmQiIGNvbmRpdGlvbmFsIGNvbnN0cnVjdCwKICAgc2luY2UgaXQncyBub3QgcmVjb2duaXNlZCBieSBzb21lIHZlcnNpb25zIG9mICdtYWtlJy4KICAgCjIwMDItMDctMjUgMDU6MDAgIGR0czEyCgogICAqIGFnZW50L2hlbHBlcnMvTWFrZWZpbGUuaW46CgogICBBZGQgdGhlICdzY2FsYXInIGFuZCAnd2F0Y2hlcicgaGVscGVycyB0byB0aGUgaGVscGVyIGxpYnJhcnkuCiAgIAoyMDAyLTA3LTI1IDAzOjI4ICBkdHMxMgoKICAgKiBhZ2VudC9oZWxwZXJzL3dhdGNoZXIuYywgaW5jbHVkZS9uZXQtc25tcC9hZ2VudC93YXRjaGVyLmgKOgoKICAgU3VwcG9ydCBmb3Igd2F0Y2hpbmcgYSBzeXNVcFRpbWUgbWFya2VyLgogICAKMjAwMi0wNy0yNSAwMzoyNCAgZHRzMTIKCiAgICogYWdlbnQvaGVscGVycy90YWJsZV9kYXRhc2V0LmMsCiAgIGluY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfZGF0YXNldC5oOgoKICAgTmV3IHJvdXRpbmUgZm9yIHJldHJpZXZpbmcgYSBjb2x1bW4gdmFsdWUgZGlyZWN0bHkgZnJvbSBhIHJlcXVlc3Qgc3RydWN0dXJlLgogICAKMjAwMi0wNy0yNCAxMzoxNyAgcnN0b3J5CgogICAqIHNubXBsaWIvZGVmYXVsdF9zdG9yZS5jOgoKICAgY2hlY2sgZm9yIHNldHRpbmcgc2FtZSB2YWx1ZSBpbiBkc19zZXRfc3RyaW5nLCBzaW5jZSBpdCBmcmVlcyB0aGUgb2xkCiAgIHZhbHVlIGJlZm9yZSBkdXBpbmcgdGhlIG5ldyBvbmUKICAgCjIwMDItMDctMjQgMTE6NTggIHJzdG9yeQoKICAgKiBkaXN0L3NubXBkLWluaXQuZDoKCiAgIGZpcnN0IHN0YWIgYXQgaW5pdC5kIHN0YXJ0dXAgc2NyaXB0IGZvciBzbm1wZAogICAKMjAwMi0wNy0yNCAwNjo0OCAgZHRzMTIKCiAgICogYWdlbnQvaGVscGVycy90YWJsZV9kYXRhc2V0LmM6CgogICBXaGVuIHJ1bm5pbmcgb2ZmIHRoZSBlbmQgb2Ygb25lIGNvbHVtbiwgYW5kIG1vdmluZyBvbiB0byB0aGUgbmV4dAogICAoaW4gYSBHZXROZXh0KSwgd2UgbmVlZCB0byBzdGFydCBhZ2FpbiB3aXRoIHRoZSBmaXJzdCByb3cuCiAgIFRoaXMgaXMgcHJvYmFibHkgdGhlIGludGVudGlvbiBvZiB0aGUgY29uZGl0aW9uYWwgYmxvY2sgYXQgdGhlIHN0YXJ0CiAgIG9mIHRoaXMgbG9vcCwgYnV0IEkgY2FuJ3Qgc2VlIGhvdyB0aGlzIHRlc3QgY291bGQgZXZlciBwb3NzaWJseSBtYXRjaC4KICAgCiAgIE5vdGUgdGhhdCB0aGVyZSBpcyBhbHNvIGEgcmVmZXJlbmNlIHRvIHRoZSByb3cgZGF0YSBhY2Nlc3NpYmxlIHZpYQogICB0aGUgJ3JlcXVlc3QtPnBhcmVudF9kYXRhJyBkYXRhIGxpc3QuICAgVGhpcyB3aWxsIGFsc28gbmVlZCB0byBiZQogICByZXdvdW5kLiAgU3VnZ2VzdGlvbnMgYXMgdG8gaG93IGJlc3QgdG8gZG8gc28gZ3JhdGVmdWxseSByZWNlaXZlZC4KICAgCjIwMDItMDctMjQgMDY6MzkgIGR0czEyCgogICAqIGFnZW50L2hlbHBlcnMvdGFibGVfZGF0YXNldC5jOgoKICAgVXNlIFNOTVB2Mi1zdHlsZSBleGNlcHRpb25zIHJhdGhlciB0aGFuIHRoZSB1bmluZm9ybWF0aXZlIFNOTVB2MQogICAnbm9TdWNoTmFtZScgZXJyb3IgZm9yIG1pc3NpbmcgdGFibGUgb2JqZWN0cy4KICAgCjIwMDItMDctMjQgMDY6MzcgIGR0czEyCgogICAqIGFnZW50L2hlbHBlcnMvdGFibGVfZGF0YS5jOgoKICAgUHJvdGVjdCBhZ2FpbnN0IHRoZSBwb3NzaWJpbGl0eSBvZiBmYWlsaW5nIHRvIGV4dHJhY3QgYSByb3cgc3RydWN0dXJlLgogICAKMjAwMi0wNy0yNCAwNjozNSAgZHRzMTIKCiAgICogYWdlbnQvaGVscGVycy90YWJsZV9kYXRhLmM6CgogICBVc2UgU05NUHYyLXN0eWxlIGV4Y2VwdGlvbnMgcmF0aGVyIHRoYW4gdGhlIHVuaW5mb3JtYXRpdmUgU05NUHYxCiAgICdub1N1Y2hOYW1lJyBlcnJvciBmb3IgbWlzc2luZyB0YWJsZSBvYmplY3RzLgogICAKMjAwMi0wNy0yNCAwNjozMiAgZHRzMTIKCiAgICogYWdlbnQvaGVscGVycy90YWJsZS5jOgoKICAgVXNlIFNOTVB2Mi1zdHlsZSBleGNlcHRpb25zIHJhdGhlciB0aGFuIHRoZSB1bmluZm9ybWF0aXZlIFNOTVB2MQogICAnbm9TdWNoTmFtZScgZXJyb3IgZm9yIGludmFsaWQgdGFibGUgb2JqZWN0cy4KICAgCjIwMDItMDctMjMgMTQ6NTkgIHJzdG9yeQoKICAgKiBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaDoKCiAgIG1pc3NpbmcgY29tbWVudCB0ZXJtaW5hdG9yLjotKAogICAKMjAwMi0wNy0yMyAxMjowMiAgcnN0b3J5CgogICAqIGFnZW50L29iamVjdF9tb25pdG9yLmMsIGFnZW50L3NubXBfYWdlbnQuYywKICAgYWdlbnQvaGVscGVycy90YWJsZS5jLCBhZ2VudC9oZWxwZXJzL3RhYmxlX2FycmF5LmMsCiAgIHNubXBsaWIvY29udGFpbmVyX2JpbmFyeV9hcnJheS5jOgoKICAgdXNlIG5ldyBuZXRzbm1wX2Fzc2VydCBpbnN0ZWFkIG9mIGFzc2VydAogICAKMjAwMi0wNy0yMyAxMjowMCAgcnN0b3J5CgogICAqIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oLCBzbm1wbGliL01ha2VmaWxlLmluCjoKCiAgIGFkZCBuZXcgbmV0c25tcF9hc3NlcnQsIHdoaWNoIGRlZmF1bHRzIHRvIGxvZ2dpbmcgYSBtZXNzYWdlCiAgIAoyMDAyLTA3LTIzIDA3OjQzICBkdHMxMgoKICAgKiBtYW4vOiBtaWJfYXBpLjMgKFY0LTItcGF0Y2hlcy4zKSwgbWliX2FwaS4zLmRlZjoKCiAgIEZpeCB0aGUgZGVzY3JpcHRpb25zIG9mIHRoZSAnc3ByaW50X3JlYWxsb2MnIGNhbGxzLCB0byBpbmNsdWRlIHRoZSAnYWxsb3dfcmVhbGxvYycgcGFyYW1ldGVyLgogICAKMjAwMi0wNy0yMiAxMDo1OCAgcnN0b3J5CgogICAqIGRpc3QvOiBuZXQtc25tcC5zcGVjLCBuc2ItZnVuY3Rpb25zOgoKICAgbmV3IChhbG1vc3QgZW1wdHkpIHNwZWMgZmlsZTsgc3RhcnQgY3JlYXRpbmcgZnVuY3Rpb25zIGZvciBhdXRvbWF0ZWQgYnVpbGRzCiAgIAoyMDAyLTA3LTIyIDAxOjQ2ICBkdHMxMgoKICAgKiBhZ2VudC9oZWxwZXJzL3dhdGNoZXIuYywgaW5jbHVkZS9uZXQtc25tcC9hZ2VudC93YXRjaGVyLmgKOgoKICAgQSBtb3JlIGdlbmVyYWxpc2VkIGZvcm0gb2YgdGhlICduc19yZWdpc3Rlcl97dHlwZX1faW5zdGFuY2UnIHJvdXRpbmVzLAogICBpbXBsZW1lbnRlZCBhcyBhIHNlcGFyYXRlIGhlbHBlciBtb2R1bGUsIGFuZCB1c2VhYmxlIHdpdGggYm90aCB0aGUKICAgaW5zdGFuY2UgYW5kIHNjYWxhciBoZWxwZXJzLgogICAgIFRoaXMgYWxzbyBzdXBwb3J0cyBhcmJpdHJhcnkgQVNOIHR5cGVzIChpbmNsdWRpbmcgc3RyaW5ncyBhbmQgT0lEcykuCiAgIAoyMDAyLTA3LTIyIDAxOjQzICBkdHMxMgoKICAgKiBhZ2VudC9oZWxwZXJzL3NjYWxhcjEuYywgYWdlbnQvaGVscGVycy9zY2FsYXIyLmMsCiAgIGluY2x1ZGUvbmV0LXNubXAvYWdlbnQvc2NhbGFyLmg6CgogICBBZ2VudCBoZWxwZXIgbW9kdWxlIGZvciBzdXBwb3J0IG9mIHNjYWxhciBvYmplY3RzLgogICBWZXJ5IHNpbWlsYXIgdG8gdGhlICJpbnN0YW5jZSIgaGVscGVyLCBleGNlcHQgdGhhdCB0aGlzIGRlYWxzIHdpdGgKICAgaW52YWxpZCBpbnN0YW5jZSBzdWJpZGVudGlmaWVycyBhcyB3ZWxsIChyZXBvcnRpbmcgbm9TdWNoSW5zdGFuY2UKICAgcmF0aGVyIHRoYXQgbm9TdWNoT2JqZWN0KS4KICAgCiAgIFRoZXJlIGFyZSB0d28gcGFyYWxsZWwgaW1wbGVtZW50YXRpb25zIGFzIHRoZSBtb21lbnQ6CiAgICAgLSBzY2FsYXIxIGlzIGVzc2VudGlhbGx5IGFuIGVuaGFuY2VkIGNvcHkgb2YgdGhlIGluc3RhbmNlIGhlbHBlciwKICAgICAgIGJ1dCBpcyBjb21wbGV0ZWx5IGluZGVwZW5kZW50IG9mIGl0LgogICAgIC0gc2NhbGFyMiBzaXRzIGFib3ZlIHRoZSBpbnN0YW5jZSBoZWxwZXIsIGFuZCB1c2VzIHRoYXQgdG8gZG8gbW9zdAogICAgICAgb2YgdGhlIHJlYWwgcHJvY2Vzc2luZy4KICAgU2NhbGFyMSBpcyBwcm9iYWJseSBzbGlnaHRseSBtb3JlIGVmZmljaWVudCwgd2hpbGUgc2NhbGFyMiBmZWVscyBtb3JlCiAgIGluIGtlZXBpbmcgd2l0aCB0aGUgZ2VuZXJhbCBldGhvcyBvZiB0aGUgaGFuZGxlciBtZWNoYW5pc20uCiAgIFdlIHByb2JhYmx5IG5lZWQgdG8gZGVjaWRlIHdoaWNoIHRvIGFkb3B0LCBhbmQganVuayB0aGUgb3RoZXIuCiAgIAoyMDAyLTA3LTE5IDE0OjI0ICByc3RvcnkKCiAgICogYWdlbnQvbWliZ3JvdXAvYWdlbnR4L21hc3Rlci5jOgoKICAgdXNlIG5ldCBhZ2VudHggcmV0aXJlcy90aW1lb3V0IGRzIHZhbHVlcwogICAKMjAwMi0wNy0xOSAxNDoyMiAgcnN0b3J5CgogICAqIGFnZW50L21pYmdyb3VwL2FnZW50eC9hZ2VudHhfY29uZmlnLmM6CgogICByZWdpc3RlciBwYXJzZXIgZm9yIGFnZW50eFRpbWVvdXQgYW5kIGFnZW50eFJldHJpZXMgdG9rZW5zCiAgIAoyMDAyLTA3LTE5IDE0OjE1ICByc3RvcnkKCiAgICogYWdlbnQvbWliZ3JvdXAvTWFrZWZpbGUuZGVwZW5kOgoKICAgcmVtb3ZlIHJlZnMgdG8gbm9uLWV4aXN0ZW50IG5zdEFnZW50KiBmaWxlcwogICAKMjAwMi0wNy0xOSAxNDoxNCAgcnN0b3J5CgogICAqIGFnZW50L3NubXBkLmM6CgogICBtb3ZlIE9ORV9TRUMgdG8gZGVmaW5pdGlvbnMuaDsgYWRkIEFHRU5UWF9USU1FT1VUIGFuZCBBR0VOVFhfUkVUUklFUyBkZWZhdWx0cwogICAKMjAwMi0wNy0xOSAxNDoxMCAgcnN0b3J5CgogICAqIGluY2x1ZGUvbmV0LXNubXAvYWdlbnQvZHNfYWdlbnQuaDoKCiAgIGFkZCBBR0VOVFhfVElNRU9VVCBhbmQgQUdFTlRYX1JFVFJJRVMKICAgCjIwMDItMDctMTkgMTQ6MTAgIHJzdG9yeQoKICAgKiBpbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmg6CgogICBtb3ZlIGRlZmluaXRpb24gb2YgT05FX1NFQyBoZXJlIGZyb20gc25tcGQuYwogICAKMjAwMi0wNy0xOSAxMToyMyAgcnN0b3J5CgogICAqIHNubXBsaWIvY29udGFpbmVyLmM6CgogICBwYXNzIGxvY2FsIG9iaiwgbm90IHJhbmRvbSB1bml0aWFsaXplZCBwb2ludGVyLjotKAogICAKMjAwMi0wNy0xOSAwNDowNCAgZHRzMTIKCiAgICogaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmg6CgogICBIYW5kbGUgc3lzdGVtcyB3aGVyZSBNQVhQQVRITEVOIGlzbid0IGRlZmluZWQuCiAgIAoyMDAyLTA3LTE5IDAzOjMxICBkdHMxMgoKICAgKiBhZ2VudC9taWJncm91cC9ob3N0L2hyX2ZpbGVzeXMuYzoKCiAgIFVzZSB0aGUgInN5c3RlbS1pbmRlcGVuZGVudCIgU05NUF9NQVhQQVRIIGxlbmd0aCBkZWZpbml0aW9uIGluc3RlYWQgb2YgTUFYUEFUSExFTgogICAKMjAwMi0wNy0xOCAyMjowMCAgcnN0b3J5CgogICAqIGFnZW50L01ha2VmaWxlLmRlcGVuZDoKCiAgIHJlbW92ZSByZWZzIHRvIG5vbmV4aXN0ZW50IG1pYmdyb3VwL25zdEFnZW50TW9kdWxlT2JqZWN0LmgKICAgCjIwMDItMDctMTggMTk6NDQgIGhhcmRha2VyCgogICAqIEZBUSwgUkVBRE1FLCBzZWRzY3JpcHQuaW4sIHBlcmwvU05NUC9TTk1QLnBtCiwgc25tcGxpYi9zbm1wX3ZlcnNpb24uYzoKCiAgIC0gKHNubXBsaWIvc25tcF92ZXJzaW9uLmMgc2Vkc2NyaXB0LmluKTogdmVyc2lvbiB0YWcgKCA1LjAuMiApCiAgIAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgpDaGFuZ2VzOiBWNS4wLjEgLT4gVjUuMC4yCgoyMDAyLTA3LTE4IDE5OjQxICBoYXJkYWtlcgoKICAgKiB0ZXN0aW5nL2V2YWxfdG9vbHMuc2g6CgogICBtaW5vciBwYXRjaCBmb3Igbm9uLWV4aXN0ZW50IChkaWVkKSBsb2cgZmlsZXMuCgoyMDAyLTA3LTE4IDE5OjQxICBoYXJkYWtlcgoKICAgKiBhZ2VudC9NYWtlZmlsZS5kZXBlbmQsIGFnZW50L2hlbHBlcnMvTWFrZWZpbGUuZGVwZW5kLAogICBhZ2VudC9taWJncm91cC9NYWtlZmlsZS5kZXBlbmQsIGFwcHMvTWFrZWZpbGUuZGVwZW5kLAogICBhcHBzL3NubXBuZXRzdGF0L01ha2VmaWxlLmRlcGVuZCwgc25tcGxpYi9NYWtlZmlsZS5kZXBlbmQ6CgogICBtYWtlIGRlcGVuZAoKMjAwMi0wNy0xOCAxOTo0MCAgaGFyZGFrZXIKCiAgICogTkVXUzoKCiAgIHVwZGF0ZSBmb3IgNS4wLjIKCjIwMDItMDctMTggMTk6NDAgIGhhcmRha2VyCgogICAqIE1ha2VmaWxlLnJ1bGVzOgoKICAgbWFrZSBkZXBlbmQgZml4ZXMuCgkKMjAwMi0wNy0xOCAxODo1NyAgaGFyZGFrZXIKCiAgICogYWdlbnQvbWliZ3JvdXAvUm1vbi86IGFsYXJtLmMsIGV2ZW50LmM6CgogICBtYWtlIHRoZSBybW9uIGNvZGUgY29tcGlsZS4KICAgIC0gbmV3IHN1YnRyZWUgcG9pbnRlciBzdHJ1Y3R1cmUuCiAgICAtIHNwcmludF9vYmppZCAtPiBzbnByaW50X29iamlkCiAgIAoyMDAyLTA3LTE4IDE4OjMyICBoYXJkYWtlcgoKICAgKiBNYWtlZmlsZS5pbjoKCiAgIHNpbGVuY2UgcGVybCBzdWJkaXJlY3RvcnkgYnVpbGQgY29tbWFuZHMuCiAgIAoyMDAyLTA3LTE4IDE4OjMxICBoYXJkYWtlcgoKICAgKiBwZXJsL0FueURhdGFfU05NUC9uZXRzaDoKCiAgIC0gVXNlIG5ldHNoIC10IC1kIHhtbCB0byBnZXQgeG1sIG91dHB1dCBmcm9tIG5ldHNoLgogICAgIChPaywgSSdtIHNpdHRpbmcgaGVyZSBhdCBhbiBJRVRGIGNvbmZlcmVuY2UgaGF2aW5nIGFuIGFyZ3VtZW50IGFib3V0CiAgICAgIHhtbCB2cyBCRVIgYW5kIG5lZWRlZCBhIFhNTCgtbGlrZSkgZXhhbXBsZSBvZiBhIGh1Z2UgZGF0YSBzZXQsIHNvIEkKICAgICAgbWFkZSBuZXRzaCBkbyBpdC4pCiAgIAoyMDAyLTA3LTE4IDE3OjU0ICBoYXJkYWtlcgoKICAgKiBwZXJsL0FueURhdGFfU05NUC9TdG9yYWdlLnBtOgoKICAgLSBpbml0aWFsIHN1cHBvcnQgZm9yIGRvaW5nIHJlcXVlc3RzIGZyb20gbXVsdGlwbGUgaG9zdHMgKHJldHJpZXZhbCwgbm90IHNldHMpCiAgIAoyMDAyLTA3LTE4IDE3OjUwICBoYXJkYWtlcgoKICAgKiBwZXJsL0FueURhdGFfU05NUC9uZXRzaDoKCiAgIG1vcmUgZml4ZXMgdG8gc3RpbGwgdWdseSBjb2xvcml6ZWQgdGV4dCAod2VsbCwgdGhlIHRleHQgaXMgcHJldHR5IGJ1dAogICB0aGUgc3VwcG9ydCBpcyB1Z2x5KS4KICAgCjIwMDItMDctMTggMTc6NDIgIGhhcmRha2VyCgogICAqIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaDoKCiAgIGNoYW5nZSB0ZXh0IHN0cmluZyBlcnJvciB0byBtYXRjaCBmdW5jdGlvbiBuYW1lIGNhbGxlZC4KICAgCjIwMDItMDctMTggMTU6MzEgIHJzdG9yeQoKICAgKiBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgsIHNubXBsaWIvY29udGFpbmVyLmMKLCBzbm1wbGliL2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuYzoKCiAgIHJlbmFtZSBmcmVlIC0+IGNmcmVlIHRvIGF2b2lkIHNvbWUgcHJvYmxlbSB3ZXMgaGFkLi4uIDstKQogICAKMjAwMi0wNy0xOCAxNDo0MSAgcnN0b3J5CgogICAqIHNubXBsaWIvbWliLmM6CgogICB0d28gcGVvcGxlIGZpeGluZyBtZW1vcnkgbGVhayBpbiBkaWZmZXJlbnQgcGxhY2VzID0gc2VnZmF1bHQKICAgCjIwMDItMDctMTggMTE6MDIgIHJzdG9yeQoKICAgKiBsb2NhbC9taWIyYy5hcnJheS11c2VyLmNvbmY6CgogICAkbmFtZSAtPiAkaQogICAKMjAwMi0wNy0xOCAxMDo1NiAgcnN0b3J5CgogICAqIGFnZW50L29iamVjdF9tb25pdG9yLmMsCiAgIGluY2x1ZGUvbmV0LXNubXAvYWdlbnQvb2JqZWN0X21vbml0b3IuaDoKCiAgIHVwZGF0ZSB0byB1c2UgY29udGFpbmVycwogICAKMjAwMi0wNy0xOCAwOTo0MCAgcnN0b3J5CgogICAqIG5ldC1zbm1wLWNvbmZpZy5pbjoKCiAgIGFkZCAtLWRlYnVnLXRva2VucywgLS1pbmRlbnQtb3B0aW9ucwogICAKMjAwMi0wNy0xOCAwOToxOCAgZHRzMTIKCiAgICogaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hdXRvX25saXN0LmgsIHNubXBsaWIvc25tcC10Yy5jCiwgaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vaXJpeC5oOgoKICAgQXBwbHkgcGF0Y2ggZnJvbSBCdWcgIzU4MjM0NywgZm9yIElyaXggNi41IHN1cHBvcnQuCiAgIFN1Ym1pdHRlZCBieSBKYW4gWWVueWEgS2FzcHJ6YWsKICAgCjIwMDItMDctMTggMDk6MTIgIGR0czEyCgogICAqIG1hbi86IHNubXB0cmFwZC44IChWNC0yLXBhdGNoZXMuNSksIHNubXB0cmFwZC44LmRlZjoKCiAgIEZpeCBtYXJrdXAgcHJvYmxlbSBvbiBzbm1wdHJhcGQgbWFuIHBhZ2UgKEJ1ZyAjNTgzMzI5KQogICAKMjAwMi0wNy0xOCAwOToxMCAgZHRzMTIKCiAgICogc25tcGxpYi9zbm1wLXRjLmM6CgogICBUaGUgZml4IGZvciB0aGUgdG1fZ210b2ZmIHByb2JsZW0gb24gQUlYIChCdWcgIzU2NTc2OSkgYWxzbyBhcHBsaWVzIHRvIEFJWCA1CiAgIAoyMDAyLTA3LTE4IDA5OjA2ICBkdHMxMgoKICAgKiBhcHBzLzogZW5jb2RlX2tleWNoYW5nZS5jIChWNC0yLXBhdGNoZXMuMSksIGVuY29kZV9rZXljaGFuZ2UuYwo6CgogICBGaXggb2ZmLWJ5LW9uZSBidWZmZXIgb3ZlcmZsb3cgKHBhdGNoICM1NzcyNjEpCiAgIAoyMDAyLTA3LTE4IDA4OjUxICBkdHMxMgoKICAgKiBsb2NhbC9taWIyYy5hcnJheS11c2VyLmNvbmY6CgogICBHZW5lcmF0ZSBvbmUgY29kZS1maWxlIHBlciB0YWJsZSAodG8gbWF0Y2ggdGhlIGhlYWRlciBzdHJ1Y3R1cmUpLgogICBNeSBhcG9sb2dpZXMgaWYgdGhpcyBpc24ndCBjb3JyZWN0LCBSb2JlcnQgLSBidXQgdGhlIHByZXZpb3VzIGJlaGF2aW91cgogICBzZWVtZWQgdG8gYmUgYnJva2VuLgogICAKMjAwMi0wNy0xOCAwODozNyAgZHRzMTIKCiAgICogbG9jYWwvbWliMmMub2xkLWFwaS5jb25mOgoKICAgVGFja2xlIHNvbWUgb2YgdGhlIGltbWVkaWF0ZSBkZWZpY2llbmNpZXMgaW4gdGhlIGZpcnN0IGRyYWZ0IG9sZC1hcGkgY29uZmlnLgogICAoTm93IHRoYXQgV2VzIGhhcyBwb2ludGVkIG1lIGluIHRoZSBkaXJlY3Rpb24gb2YgdGhlIGRvY3VtZW50YXRpb24hKQogICAKMjAwMi0wNy0xOCAwODoyMiAgZHRzMTIKCiAgICogbG9jYWwvbWliMmM6CgogICBGaXggdGhlICdkZWNsJyBzdWJzdGl0dXRpb24gaGFuZGxpbmcgKHNvIGl0IGRvZXNuJ3QgaW5jbHVkZSB0aGUgaW50ZXJuYWwgdG9rZW4gYXMgd2VsbCkuCiAgIAoyMDAyLTA3LTE4IDA3OjE4ICBkdHMxMgoKICAgKiBsb2NhbC9taWIyYy5zY2FsYXIuY29uZjoKCiAgIFByb3ZpZGUgdGhlIG1pc3NpbmcgcGFyYW1ldGVyIGluIGEgcmVhZF9vbmx5IGluc3RhbmNlIHJlZ2lzdHJhdGlvbi4KICAgCjIwMDItMDctMTggMDc6MDkgIGR0czEyCgogICAqIGFnZW50L2hlbHBlcnMvaW5zdGFuY2UuYywgaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9pbnN0YW5jZS5oCjoKCiAgIEJyaW5nIHRoZSAncmVhZF9vbmx5X2ludCcgaW5zdGFuY2UgaGFuZGxlciBpbiBsaW5lIHdpdGggdGhlIHJlc3Qgb2YKICAgdGhlIGNvbnZlbmllbmNlIGluc3RhbmNlIGhhbmRsZXJzLgogICAoYW5kIGV2ZW4gYnJlYWsgdGhlIGhhYml0IG9mIGEgbGlmZXRpbWUgYW5kIGRlY2xhcmUgdGhlIHRoaW5nLi4uLikKICAgCjIwMDItMDctMTggMDU6NDggIGhhcmRha2VyCgogICAqIGFnZW50L2hlbHBlcnMvdGFibGVfaXRlcmF0b3IuYzoKCiAgIGZpeCBhbm90aGVyIG1lbW9yeSBsZWFrIGR1ZSB0byBhbiBpbXByb3BlciBpZmRlZmVkIG91dCBzZWN0aW9uIG9mIGNvZGUKICAgCjIwMDItMDctMTggMDQ6NDUgIGhhcmRha2VyCgogICAqIHNubXBsaWIvc2NhcGkuYzoKCiAgIEknbSBiZWdpbm5pbmcgdG8gcmVncmV0IGV2ZXIgcnVubmluZyBpbmRlbnQgb24gdGhlIGNvZGUgYmFzZS4uLgogICAKMjAwMi0wNy0xNyAxNTo0MyAgaGFyZGFrZXIKCiAgICogbG9jYWwvOiBNYWtlZmlsZS5pbiwgbWliMmMuY29uZjoKCiAgIGRvY3VtZW50IGFuZCBpbnN0YWxsIG1pYjJjLm9sZC1hcGkuY29uZgogICAKMjAwMi0wNy0xNyAxMzowNyAgcnN0b3J5CgogICAqIGFnZW50L21pYmdyb3VwL2Rpc21hbi9tdGVUcmlnZ2VyVGFibGUuYzoKCiAgIGZpeCBzZWdmYXVsdCAocG9zc2libHkgY3JlYXRpbmcgbWVtb3J5IGxlYWspOyBhdXRob3IgbmVlZHMgdG8gZXhhbWluZSBjb2RlCiAgIAoyMDAyLTA3LTE3IDA3OjQxICBkdHMxMgoKICAgKiBsb2NhbC86IG1pYjJjLmFycmF5LXVzZXIuY29uZiwgbWliMmMuY29uZiwKICAgbWliMmMuY3JlYXRlLWRhdGFzZXQuY29uZiwgbWliMmMuaW50X3dhdGNoLmNvbmYsCiAgIG1pYjJjLml0ZXJhdGUuY29uZiwgbWliMmMuc2NhbGFyLmNvbmY6CgogICBEYXZlJ3MgYmVpbmcgdW5yZWFzb25hYmx5IHBpY2t5IGFib3V0IGdyYW1tYXIgJiBzcGVsbGluZyBhZ2Fpbi4KICAgSnVzdCBpZ25vcmUgaGltLCBhbmQgaGUnbGwgZ28gYXdheS4uLi4uCiAgIAoyMDAyLTA3LTE3IDA3OjIwICBkdHMxMgoKICAgKiBsb2NhbC9taWIyYy5vbGQtYXBpLmNvbmY6CgogICBJbml0aWFsIHN1cHBvcnQgZm9yIHRoZSBvbGQgNHgtc3R5bGUgYWdlbnQgQVBJIHVzaW5nIHRoZSBuZXcgdmVyc2lvbiBvZiBtaWIyYy4KICAgSXQgZG9lc24ndCBoYW5kbGUgdHlwZXMgcHJvcGVybHksIGFuZCBJJ20gc3VyZSBJJ2xsIGhhdmUgYnVnZ2VyZWQgdXAgc29tZSBvZgogICB0aGUgY29udHJvbCBzdHJ1Y3R1cmUgaGFuZGxpbmcsIGJ1dCBpdCBzZWVtcyB0byBnZW5lcmF0ZSBzb21ldGhpbmcgdGhhdCdzCiAgIHByZXR0eSBjbG9zZSB0byB0aGUgb2xkIG91dHB1dC4gICBJdCdzIGJldHRlciB0aGFuIG5vdGhpbmcuLi4uLgogICAKMjAwMi0wNy0xNiAyMjo0MCAgcnN0b3J5CgogICAqIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaCwgc25tcGxpYi9jb250YWluZXIuYwo6CgogICByZXN0b3JlIGlubGluZSBmdW5jdGlvbnMgKHNpZ2guIEkgZmVlbCBsaWtlIEknbSBwbGF5aW5nIHJpbmctYXJvdW5kLXRoZS1yb3NpZSkKICAgCjIwMDItMDctMTYgMjE6NTggIHJzdG9yeQoKICAgKiBhZ2VudC9oZWxwZXJzL3RhYmxlX2FycmF5LmMsCiAgIGluY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfYXJyYXkuaCwKICAgbG9jYWwvbWliMmMuYXJyYXktdXNlci5jb25mOgoKICAgcmVuYW1lIHNvbWUgc3RydWN0IG1lbWJlcnMgdG8gbWFrZSBjb2RlIGVhc2llciB0byByZWFkOyBhIGJpdCBvZiByZS1vcmRlcmluZwogICBpbiB0aGUgc2V0IGNvZGU7IG5ldyBmbGFncyBmb3IgbmV3IGFuZCBkZWxldGVkIHJvd3M7IHJvdyBkZWxldGVzIG5vdwogICBhY3R1YWx5IHdvcmshCiAgIAoyMDAyLTA3LTE2IDE5OjMyICByc3RvcnkKCiAgICogaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oLCBzbm1wbGliL2NvbnRhaW5lci5jCjoKCiAgIGNoYW5nZSBjb21wbGV4IG1hY3JvcyBpbnRvIGZ1bmN0aW9ucy4gd291bGQgYmUgbmljZSBpZiBDIGhhZCBpbmxpbmUuCiAgIAoyMDAyLTA3LTE2IDE4OjA3ICByc3RvcnkKCiAgICogaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oOgoKICAgdW1tLCB0cnkgdXNpbmcgY29ycmVjdCBkZWZpbmUuOi0vCiAgIAoyMDAyLTA3LTE2IDE4OjA1ICByc3RvcnkKCiAgICogaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oOgoKICAgdGVzdCB0aGF0IG5ldC1zbm1wLWNvbmZpZy5oIGhhcyBiZWVuIGluY2x1ZGVkLCBpbnN0ZWFkIG9mIGFjdHVhbGx5IGluY2x1ZGluZyBpdC4uCiAgIChzaG91bGRuJ3QgdGhpcyByZWFsbHkgYmUgaW4gYWxsIHRoZSBoZWFkZXIgZmlsZXM/KQogICAKMjAwMi0wNy0xNiAxMjoxNCAgcnN0b3J5CgogICAqIGxvY2FsL21pYjJjLmFycmF5LXVzZXIuY29uZjoKCiAgIHVwZGF0ZSBmb3IgY29udGFpbmVycwogICAKMjAwMi0wNy0xNiAxMToyMCAgcnN0b3J5CgogICAqIHNubXBsaWIvc25tcFRDUElQdjZEb21haW4uYzoKCiAgIGZpeCBjb21waWxlciB3YXJuaW5nCiAgIAoyMDAyLTA3LTE2IDExOjE2ICByc3RvcnkKCiAgICogYXBwcy9zbm1wbmV0c3RhdC9NYWtlZmlsZS5kZXBlbmQ6CgogICByZW1vdmUgb2lkX2FycmF5IHJlbGF0ZWQgZGVwZW5kZW5jaWVzIChncnVtYmxlIGdydW1ibGUpCiAgIAoyMDAyLTA3LTE2IDExOjE0ICByc3RvcnkKCiAgICogYXBwcy9NYWtlZmlsZS5kZXBlbmQ6CgogICByZW1vdmUgb2lkX2FycmF5IHJlbGF0ZWQgZGVwZW5kZW5jaWVzCiAgIAoyMDAyLTA3LTE2IDExOjAyICByc3RvcnkKCiAgICogYWdlbnQvOiBNYWtlZmlsZS5kZXBlbmQsIG1pYmdyb3VwL01ha2VmaWxlLmRlcGVuZDoKCiAgIHJlbW92ZSBvaWRfYXJyYXkgcmVsYXRlZCBkZXBlbmRlbmNpZXMKICAgCjIwMDItMDctMTYgMTA6NTIgIHJzdG9yeQoKICAgKiBzbm1wbGliL01ha2VmaWxlLmRlcGVuZCwgYWdlbnQvaGVscGVycy9NYWtlZmlsZS5kZXBlbmQKOgoKICAgcmVtb3ZlIG9pZF9hcnJheSByZWxhdGVkIGRlcGVuZGVuY2llcwogICAKMjAwMi0wNy0xNiAxMDo1MCAgcnN0b3J5CgogICAqIHNubXBsaWIvTWFrZWZpbGUuaW46CgogICByZW1vdmUgZmFjdG9yeS5jCiAgIAoyMDAyLTA3LTE2IDEwOjI5ICByc3RvcnkKCiAgICogc25tcGxpYi9zbm1wX2FwaS5jOgoKICAgYWRkIG5ldHNubXBfY29udGFpbmVyX2luaXRfbGlzdCgpIGluIHN0YXJ0dXAgaW5pdHMKICAgCjIwMDItMDctMTYgMTA6MjEgIHJzdG9yeQoKICAgKiBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX2FycmF5LmgsIHNubXBsaWIvb2lkX2FycmF5LmMKOgoKICAgcmVtb3ZlIHVudXNlZCBmaWxlcwogICAKMjAwMi0wNy0xNiAxMDoyMSAgcnN0b3J5CgogICAqIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaCwgc25tcGxpYi9jb250YWluZXIuYwo6CgogICBjaGcgcGFyYW0gdHlwZSBmcm9tIHZvaWQqIHRvIHN0cnVjdCAqCiAgIAoyMDAyLTA3LTE2IDEwOjAzICByc3RvcnkKCiAgICogc25tcGxpYi9NYWtlZmlsZS5pbjoKCiAgIHJlbW92ZSByZWNlbnRseSBkZWxldGVkIG9pZF9hcnJheS5oOyBhZGQgZmFjdG9yeSwgYmluYXJ5IGFycmF5IC5bY2hdOyBkZXJpdmUKICAgT0JKUyBhbmQgTE9CSlMgZnJvbSBDU1JDUzsgYWRkIChvcHRpb25hbCkgYXV0byBkZXBlbmRlbmN5IGdlbmVyYXRpb24KICAgCjIwMDItMDctMTYgMDk6NTMgIHJzdG9yeQoKICAgKiBpbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaDoKCiAgIHJlbW92ZSByZWNlbnRseSBkZWxldGVkIG9pZF9hcnJheS5oCiAgIAoyMDAyLTA3LTE2IDA5OjUyICByc3RvcnkKCiAgICogYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZXh0ZW5zaWJsZS5oOgoKICAgc3RydWN0IHN1YnRyZWUgLT4gbmV0c25tcF9zdWJ0cmVlCiAgIAoyMDAyLTA3LTE2IDA5OjQ2ICByc3RvcnkKCiAgICogYWdlbnQvaGVscGVycy90YWJsZV9hcnJheS5jLAogICBpbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2FycmF5Lmg6CgogICByZW1vdmUgbGFzdCByZW1haW5pbmcgcmVmcyB0byBub3cgZGVmdW5jdCBvaWRfYXJyYXkKICAgCjIwMDItMDctMTYgMDk6NDAgIHJzdG9yeQoKICAgKiBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oLAogICBzbm1wbGliL2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuYzoKCiAgIGdlbmVyaWMgYmluYXJ5IGFycmF5IGNvbnRhaW5lciBleHRyYWN0ZWQgZnJvbSBvaWRfYXJyYXkKICAgCjIwMDItMDctMTYgMDk6NDAgIHJzdG9yeQoKICAgKiBpbmNsdWRlL25ldC1zbm1wL3R5cGVzLmg6CgogICBpbmNsdWRlIG5ldC1zbm1wLWNvbmZpZy5oOyBuZXcgdHlwZWRlZiBzdHJ1Y3QgbmV0c25tcF9pbmRleCAob2lkIHB0ciArIGxlbikKICAgCjIwMDItMDctMTYgMDk6MzggIHJzdG9yeQoKICAgKiBhZ2VudC9oZWxwZXJzL3RhYmxlX2FycmF5LmMsCiAgIGluY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfYXJyYXkuaDoKCiAgIHVzZSBnZW5lcmljIGNvbnRhaW5lciBpbnRlcmZhY2U7IHVzZSBuZXcgbmV0c25tcF9pbmRleCBpbnN0ZWFkIG9mCiAgIG9pZF9hcnJheV9oZWFkZXI7IHJlbmFtZSBhcnJheV9ncm91cCAtPiByZXF1ZXN0X2dyb3VwCiAgIAoyMDAyLTA3LTE2IDA5OjM0ICByc3RvcnkKCiAgICogaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oLCBzbm1wbGliL2NvbnRhaW5lci5jCjoKCiAgIGFkZCBpdGVyYXRvcnM7IG1vcmUgZnVuY3Rpb24gdHlwZWRlZnM7IHJlbmFtZSBzb21lIGZ1bmMgcHRycywgYWRkIGZpbmRfbmV4dCwKICAgZ2V0X3N1YnNldCwgZ2V0X2l0ZXJhdG9yLCBmb3JfZWFjaCwgbmNvbXBhcmU7IGFkZCBhYmlsaXR5IHRvIGhhdmUgbmVzdGVkCiAgIGNvbnRhaW5lcnM7IG1vcmUgdXRpbGl0eSByb3V0aW5lczsgY29udmVuaWVuY2UgbWFyY3Jvczsgc3RhcnQgYWRkaW5nIGNvbW1lbnRzCiAgIAoyMDAyLTA3LTE2IDA5OjI5ICByc3RvcnkKCiAgICogaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaDoKCiAgIGRlY2xhcmF0aW9ucyBmb3IgYSBnZW5lcmljIGZhY3RvcnkKICAgCjIwMDItMDctMTYgMDg6NDggIGR0czEyCgogICAqIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wLzogbWVtb3J5X2R5bml4LmMsIG1lbW9yeV9ocHV4LmMKLCB2bXN0YXRfZHluaXguYywgdm1zdGF0X2hwdXguYzoKCiAgIEFwcGx5IHBhdGNoIGZyb20gYnVnIHJlcG9ydCA1ODE2MTggKGFsc28gYXBwbGljYWJsZSB0byBkeW5peCkKICAgUHJvdmlkZWQgYnkgTmljaG9sYXMgTC4gTmlnYXkKICAgCjIwMDItMDctMTYgMDY6NTQgIGhhcmRha2VyCgogICAqIHBlcmwvOiBBU04vQVNOLnBtLCBPSUQvT0lELnBtLCBhZ2VudC9hZ2VudC5wbSwKICAgYWdlbnQvZGVmYXVsdF9zdG9yZS9kZWZhdWx0X3N0b3JlLnBtLAogICBkZWZhdWx0X3N0b3JlL2RlZmF1bHRfc3RvcmUucG06CgogICByZW1vdmUgIm91ciIgcHJvYmxlbSBhbmQgdXNlIG9sZGVyICJ1c2UgdmFycyIgaW5zdGVhZCBmb3Igb2xkZXIgcGVybC4KICAgICAodGhpcyBzaG91bGQgbWFrZSBpdCB3b3JrIHdpdGggcGVybCA1LjAwNS4gIENvdWxkIHNvbWUgb25lIHRlc3QgdGhpcwogICAgICBmb3IgbWU/KQogICAKMjAwMi0wNy0xNSAwNjo0NSAgamJwbgoKICAgKiBhZ2VudC9taWJncm91cC9hZ2VudHgvbWFzdGVyLmM6CgogICAgIC0gbmFtZXMgb2YgbmV0c25tcF9zdWJ0cmVlIGVsZW1lbnRzIGNoYW5nZWQKICAgCjIwMDItMDctMTUgMDY6NDIgIGpicG4KCiAgICogYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZXh0ZW5zaWJsZS5jOgoKICAgICAtIHN0cnVjdCBzdWJ0cmVlIHJlbmFtZWQgdG8gbmV0c25tcF9zdWJ0cmVlCiAgIAoyMDAyLTA3LTE1IDA1OjI1ICBoYXJkYWtlcgoKICAgKiBwZXJsL0FueURhdGFfU05NUC9uZXRzaDoKCiAgIFNvbWUgcmVhbGx5IG5hc3R5IGhhY2tzIHRvIGdldCBjb2xvcml6ZWQgdGFibGVzIHRvIHdvcmsuCiAgIAoyMDAyLTA3LTE0IDIwOjUxICBoYXJkYWtlcgoKICAgKiBwZXJsL1NOTVAvdC86IGJ1bGt3YWxrLnQsIG1pYi50OgoKICAgY29tbWVudCBvdXQgYnJva2VuIHRlc3RzIGZvciBub3cgKFhYWCBtYXJrZWQpCiAgIAoyMDAyLTA3LTE0IDIwOjUwICBoYXJkYWtlcgoKICAgKiBwZXJsL1NOTVAvU05NUC54czoKCiAgIGZpeCBnZXRidWxrLgogICAKMjAwMi0wNy0xNCAyMDoyMCAgaGFyZGFrZXIKCiAgICogYWdlbnQvYWdlbnRfaGFuZGxlci5jLAogICBpbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X2hhbmRsZXIuaDoKCiAgIEEgbmV3IGZ1bmN0aW9uIHRvIGNhbGwgYSBzdWItaGFuZGxlciBidXQgcGFzc2luZyBpdCBvbmx5IG9uZSByZXF1ZXN0IHRvIGhhbmRsZS4KICAgCjIwMDItMDctMTAgMjE6MjEgIHJzdG9yeQoKICAgKiB3aW4zMi86IGNvbmZpZy5oLCBuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaDoKCiAgIGRlZmluZSBMT0dfREFFTU9OLCBzaW5jZSB3aW5kb3dzIGRvZXNuJ3QgaGF2ZSBpdAogICAKMjAwMi0wNy0xMCAyMTowNyAgcnN0b3J5CgogICAqIHdpbjMyLzogY29uZmlnLmgsIG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oOgoKICAgcmVtb3ZlIGRlZmluZSBvZiBpbl9hZGRyX3QsIHdoaWNoIGNhbiBiZSBmb3VuZCBpbiBuZXQtc25tcC90eXBlcy5oCiAgIAoyMDAyLTA3LTEwIDAyOjM2ICBqYnBuCgogICAqIGFnZW50L2FnZW50X2hhbmRsZXIuYzoKCiAgICAgLSBzdHJ1Y3Qgc3VidHJlZSByZW5hbWVkIHRvIG5ldHNubXBfc3VidHJlZQogICAKMjAwMi0wNy0xMCAwMjozNSAgamJwbgoKICAgKiBhZ2VudC9hZ2VudF9pbmRleC5jOgoKICAgICAtIGRvbid0IHVzZSAwIGluICVwIGZvcm1hdCBzcGVjaWZpZXJzCiAgIAoyMDAyLTA3LTEwIDAyOjM0ICBqYnBuCgogICAqIGFnZW50L3NubXBfYWdlbnQuYzoKCiAgICAgLSBzdHJ1Y3Qgc3VidHJlZSByZW5hbWVkIHRvIG5ldHNubXBfc3VidHJlZQogICAgIC0gZml4IHNvbWUgaG9ycmlibGUgaW5kZW50IGJyb2tlbiBmb3JtYXR0aW5nCiAgIAoyMDAyLTA3LTEwIDAyOjMzICBqYnBuCgogICAqIGFnZW50L3NubXBfdmFycy5jOgoKICAgICAtIHN0cnVjdCBzdWJ0cmVlIHJlbmFtZWQgdG8gbmV0c25tcF9zdWJ0cmVlCiAgICAgLSByZW1vdmUgc29tZSBvYnNvbGV0ZSB2YXJpYWJsZXMKICAgCjIwMDItMDctMTAgMDI6MzMgIGpicG4KCiAgICogYWdlbnQvbWliZ3JvdXAvbWliSUkvdmFjbV92YXJzLmM6CgogICAgIC0gcmVmbGVjdCBjaGFuZ2VkIGZ1bmN0aW9uIG5hbWVzIGZyb20gYWdlbnRfcmVnaXN0cnkKICAgCjIwMDItMDctMTAgMDI6MzIgIGpicG4KCiAgICogYWdlbnQvbWliZ3JvdXAvYWdlbnQvbnNNb2R1bGVUYWJsZS5jOgoKICAgICAtIGNoYW5nZXMgZHVlIHRvIHJlbmFtaW5nIG9mIHN0cnVjdCBzdWJ0cmVlIHRvIG5ldHNubXBfc3VidHJlZQogICAgIC0gTk9URSBNRU1PUlkgTEVBSyAod2hpY2ggSSBjYW4ndCBzZWUgaG93IHRvIGZpeCAtLSBuZXcgYWdlbnQgQVBJCiAgICAgICBleHBlcnRzIHBsZWFzZSBleGFtaW5lKQogICAKMjAwMi0wNy0xMCAwMjoyOSAgamJwbgoKICAgKiBhZ2VudC9hZ2VudF9yZWdpc3RyeS5jOgoKICAgICAtIHN0cnVjdCBzdWJ0cmVlIHJlbmFtZWQgdG8gbmV0c25tcF9zdWJ0cmVlCiAgICAgLSBuYW1lLCBzdGFydCwgZW5kIG1lbWJlcnMgYXJlIG5vdyBkeW5hbWljYWxseSBhbGxvY2F0ZWQgdG8gcmVkdWNlCiAgICAgICB3YXN0ZWQgbWVtb3J5IChieSBhIGZhY3RvciBvZiA1IG9yIHNvKQogICAgIC0gZnVuY3Rpb25zIGFyZSByZW5hbWVkIGNvbnNpc3RlbnRseQogICAKMjAwMi0wNy0xMCAwMjoyMCAgamJwbgoKICAgKiBpbmNsdWRlL25ldC1zbm1wL2FnZW50LzogYWdlbnRfcmVnaXN0cnkuaCwKICAgbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaCwgc25tcF9hZ2VudC5oLCBzbm1wX3ZhcnMuaAosIHZhcl9zdHJ1Y3QuaDoKCiAgICAgLSBzdHJ1Y3Qgc3VidHJlZSByZW5hbWVkIHRvIG5ldHNubXBfc3VidHJlZQogICAKMjAwMi0wNy0wOSAwNjowMiAgamJwbgoKICAgKiBhZ2VudC9taWJncm91cC9hZ2VudHgvbWFzdGVyX2FkbWluLmM6CgogICAgIC0gZnJlZSBjYWNoZV9pZCBzdG9yYWdlIHdoZW4gY2xvc2luZyBzZXNzaW9uCiAgIAoyMDAyLTA3LTA5IDA1OjU2ICBqYnBuCgogICAqIHNubXBsaWIvc25tcF9hcGkuYzoKCiAgICAgLSBqdXN0IGNhbGwgbmV0c25tcF9kc19zaHV0ZG93bigpIG9uY2UgaW4gc25tcF9zaHV0ZG93bigpCiAgIAoyMDAyLTA3LTA5IDA0OjE1ICBqYnBuCgogICAqIHNubXBsaWIvbWliLmM6CgogICAgIC0gZml4IG1lbW9yeSBsZWFrIGluIG5ldHNubXBfZml4dXBfbWliX2RpcmVjdG9yeSgpCiAgIAoyMDAyLTA3LTA5IDAzOjE0ICBqYnBuCgogICAqIGFnZW50L3NubXBkLmM6CgogICAgIC0gYWRkIGEgY2FzdCB0byBxdWVsbCBjb21waWxlciB3YXJuaW5nCiAgIAoyMDAyLTA3LTA4IDIyOjA5ICByc3RvcnkKCiAgICogYWdlbnQvbWliZ3JvdXAvdXRpbF9mdW5jcy5oOgoKICAgZXh0ZXJuIEMgZm9yIEMrKyBjb21waWxlcwogICAKMjAwMi0wNy0wOCAwNzoyMSAgamJwbgoKICAgKiBpbmNsdWRlL25ldC1zbm1wL2FnZW50L3NubXBfdmFycy5oOgoKICAgICAtIHJlbW92ZSBvYnNvbGV0ZSBmdW5jdGlvbiBwcm90b3R5cGVzCiAgIAoyMDAyLTA3LTA3IDE5OjQ1ICByc3RvcnkKCiAgICogbG9jYWwvbWliMmMuYXJyYXktdXNlci5jb25mOgoKICAgdXBkYXRlIHRvIHVzZSBjb250YWluZXJzCiAgIAoyMDAyLTA3LTA3IDE5OjM4ICByc3RvcnkKCiAgICogaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9hcnJheS5oOgoKICAgZml4IHR5cG8KICAgCjIwMDItMDctMDcgMTk6MzcgIHJzdG9yeQoKICAgKiBhZ2VudC9taWJncm91cC91Y2Qtc25tcC86IGRpc2suYywgcHJvYy5jOgoKICAgZml4IGNvbXBpbGVyIHdhcm5pbmcKICAgCjIwMDItMDctMDcgMTk6MzMgIHJzdG9yeQoKICAgKiBhZ2VudC9taWJncm91cC86IGFnZW50L25zTW9kdWxlVGFibGUuYywKICAgYWdlbnQvbnNUcmFuc2FjdGlvblRhYmxlLmMsIGhvc3QvaHJfc3dpbnN0LmM6CgogICBmaXggY29tcGlsZXIgd2FybmluZwogICAKMjAwMi0wNy0wNyAxOTowMyAgcnN0b3J5CgogICAqIHNubXBsaWIvc25tcFVEUElQdjZEb21haW4uYzoKCiAgIHJlbW92ZSB1bnVzZWQgdmFycwogICAKMjAwMi0wNy0wNyAxOTowMCAgcnN0b3J5CgogICAqIHNubXBsaWIvb2lkX3N0YXNoLmM6CgogICBmaXggY29tcGlsZXIgd2FybmluZ3MKICAgCjIwMDItMDctMDcgMTg6NTMgIHJzdG9yeQoKICAgKiBzbm1wbGliL2FzbjEuYzoKCiAgIGZpeCBjb21waWxlciB3YXJuaW5ncwogICAKMjAwMi0wNy0wNyAxODo1MCAgcnN0b3J5CgogICAqIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oLCBzbm1wbGliL3NubXBfYXBpLmMKOgoKICAgbWFrZSBwYXJhbSBjb25zdDsgZml4IGNvbXBpbGUgY29uc3Qgd2FybmluZwogICAKMjAwMi0wNy0wNyAxODoyNyAgcnN0b3J5CgogICAqIHNubXBsaWIvbWliLmM6CgogICBmaXggY29tcGlsZXIgd2FybmluZzsgZml4IG1lbW9yeSBsZWFrOyBwcmVwIGEgZmV3IGNvbW1lbnRzIGZvciBpbmRlbnQKICAgCjIwMDItMDctMDYgMTQ6MTEgIGhhcmRha2VyCgogICAqIFJFQURNRSwgc2Vkc2NyaXB0LmluLCBzbm1wbGliL3NubXBfdmVyc2lvbi5jLAogICBGQVEsIHBlcmwvU05NUC9TTk1QLnBtOgoKICAgLSAoc25tcGxpYi9zbm1wX3ZlcnNpb24uYyBzZWRzY3JpcHQuaW4pOiB2ZXJzaW9uIHRhZyAoIDUuMC4yLnByZTEgKQogICAKMjAwMi0wNy0wNiAxNDoxMCAgaGFyZGFrZXIKCiAgICogZG94eWdlbi5jb25mOgoKICAgY2hhbmdlIHByb2plY3QgdmVyc2lvbiB0byA1LjAuMgogICAKMjAwMi0wNy0wNiAxNDowOSAgaGFyZGFrZXIKCiAgICogcGVybC9TTk1QL01ha2VmaWxlLlBMOgoKICAgc25tcHRyYXBkIGlzIGFjdHVhbGx5IGJ1aWx0IGluIHRoZSBhcHBzIGRpcmVjdG9yeSwgbm90IHRoZSBhZ2VudCBkaXJlY3RvcnkuCiAgIAoyMDAyLTA3LTA1IDExOjU1ICByc3RvcnkKCiAgICogbG9jYWwvbWliMmM6CgogICBjbGFyaWZ5IGRpcmVjdGlvbnMgZm9yIG9idGFpbmluZyBwZXJsL1NOTVAgbW9kdWxlLgogICAKMjAwMi0wNy0wNSAwNToxOCAgamJwbgoKICAgKiBhZ2VudC9taWJncm91cC9hZ2VudHgvY2xpZW50LmM6CgogICAgIC0gSSBtdXN0IG5vdCBjaGVjayBpbiBjb2RlIHdpdGhvdXQgY29tcGlsaW5nIGl0CiAgICAgLSBJIG11c3Qgbm90IGNoZWNrIGluIGNvZGUgd2l0aG91dCBjb21waWxpbmcgaXQKICAgICAtIEkgbXVzdCBub3QgY2hlY2sgaW4gY29kZSB3aXRob3V0IGNvbXBpbGluZyBpdAogICAgIC0gSSBtdXN0IG5vdCBjaGVjayBpbiBjb2RlIHdpdGhvdXQgY29tcGlsaW5nIGl0CiAgICAgLSAuLi4KICAgCjIwMDItMDctMDUgMDM6MjMgIGpicG4KCiAgICogYWdlbnQvbWliZ3JvdXAvOiBhZ2VudHgvY2xpZW50LmMsIG1pYklJL3N5c3RlbV9taWIuYzoKCiAgICAgLSBzeXNPYmplY3RJRCB3YXMgYmVpbmcgcmV0dXJuZWQgbWludXMgaXRzIGxhc3Qgc3ViLWlkZW50aWZpZXIgYmVjYXVzZQogICAgICAgdGhlIGxlbmd0aCB2YXJpYWJsZSBoYWQgbm90IGJlZW4gdXBkYXRlZCB0byByZWZsZWN0IHRoZSBmYWN0IHRoYXQgaXQKICAgICAgIGlzIG5vdyBsb25nZXIuICBDb2RlIGNoYW5nZWQgdG8gdXNlIHNpemVvZigpIGluc3RlYWQsIHNvIHRoaXMgd29uJ3QKICAgICAgIGhhcHBlbiBhZ2Fpbi4gIFJlcG9ydGVkIGJ5IFN0aWFuIFNvaWxhbmQgKGJ1ZyAjNTc3NDM5KS4KICAgCjIwMDItMDctMDQgMTA6MTMgIHJzdG9yeQoKICAgKiBzbm1wbGliL3JlYWRfY29uZmlnLmM6CgogICB1Y2Qtc25tcCAtPiBuZXQtc25tcAogICAKMjAwMi0wNy0wNCAwNzowNiAgamJwbgoKICAgKiBzbm1wbGliL3NubXBfYXBpLmM6CgogICAgIC0gbW9kaWZpZWQgaGFuZGxpbmcgb2Ygb3BhcXVlIHBvaW50ZXIgZm9yIHN0cmVhbS1iYXNlZCB0cmFuc3BvcnRzIHRvCiAgICAgICBhdm9pZCBib3RoIG11bHRpcGxlIGZyZWUoKSBwcm9ibGVtIGFuZCB1bm5lY2Vzc2FyeSBjb3B5aW5nLgogICAKMjAwMi0wNy0wNCAwNjowMCAgZHRzMTIKCiAgICogbWFuL3NubXBkLmNvbmYuNS5kZWYsIGFnZW50L21pYmdyb3VwL2hvc3QvaHJfc3RvcmFnZS5jCiAgIChWNC0yLXBhdGNoZXMuWzUsOV0pLCBtYW4vc25tcGQuY29uZi41LmRlZiwKICAgYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9zdG9yYWdlLmM6CgogICBBcHBseSBKb2hhbm5lcyBTY2htaWR0LUZpc2NoZXIncyBOZXR3b3JrRGlzayBwYXRjaCAjNTU0NTU0CiAgIAoyMDAyLTA3LTA0IDA1OjU2ICBkdHMxMgoKICAgKiBhZ2VudC9taWJncm91cC9ob3N0LzogaHJfZmlsZXN5cy5jLCBocl9maWxlc3lzLmgKICAgKFY0LTItcGF0Y2hlcy5bNSwxXSksIGhyX2ZpbGVzeXMuYywgaHJfZmlsZXN5cy5oOgoKICAgQXBwbHkgSm9oYW5uZXMgU2NobWlkdC1GaXNjaGVyJ3MgTkZTIGZpbGVzeXN0ZW0gcGF0Y2ggIzU1NDU1MwogICAoc2ltcGxpZmllZCB0byBhdm9pZCB0aGUgcmUtaW5kZW50YXRpb24gLSB3aGljaCBtYWtlcyBpdCBlYXNpZXIgdG8gc2VlCiAgICB3aGF0J3MgY2hhbmdlZC4gIFRoZSB3aG9sZSBIb3N0UmVzIGdyb3VwIG5lZWRzIGNsZWFuaW5nIHVwIGFueXdheSEpCiAgIAoyMDAyLTA3LTA0IDA1OjUyICBkdHMxMgoKICAgKiBzbm1wbGliL3NubXBfYXBpLmM6CgogICBFbnN1cmUgdHJhbnNwb3J0IG9wYXF1ZSBkYXRhIGlzbid0IG11bHRpcGx5IGFzc2lnbmVkCiAgIChhbmQgaGVuY2UgbXVsdGlwbHkgZnJlZWQpIGZvciBzdHJlYW0tYmFzZWQgdHJhbnNwb3J0cy4KICAgRGF0YWdyYW0tYmFzZWQgdHJhbnNwb3J0cyBkb24ndCBzdWZmZXIgZnJvbSB0aGlzIHByb2JsZW0uCiAgIEJhc2VkIG9uIFBhdGNoIDU3Mzc3MQogICAKMjAwMi0wNy0wMyAxNjoyOCAgcnN0b3J5CgogICAqIGFnZW50L21pYmdyb3VwL21pYklJL3ZhY21fdmFycy5jOgoKICAgYmUgcHJlY2lzZSBhYm91dCB3aGF0IGZpbGUgbmVlZHMgdG8gYmUgY29uZmlndXJlZCBmb3IgYWNjZXNzIGNvbnRyb2wKICAgCjIwMDItMDctMDMgMTQ6MTMgIHJzdG9yeQoKICAgKiBsb2NhbC9taWIyYy5jb25mOgoKICAgZml4IG1pbm9yIGdyYW1tYXIgZXJyb3JzOyBhZGQgZGVzY3IgZm9yIG1pYjJjLmFycmF5LXVzZXI7IGFkZCBzZWN0aW9uIGhlYWRlcgogICBmb3IgZ2VuZXJhdGluZyBoZWFkZXIgZGVmaW5pdGlvbiBmaWxlcwogICAKMjAwMi0wNy0wMyAxMzoxMSAgcnN0b3J5CgogICAqIGluY2x1ZGUvbmV0LXNubXAvOiB0eXBlcy5oLCBsaWJyYXJ5L3N5c3RlbS5oOgoKICAgbW92ZSBpbmNsdWRlIGZvciBpbl9hZGRyX3QgdG8gbmV0LXNubXAvdHlwZXMuaCwgd2hlcmUgaW5fYWRkcl90IGlzIGRlZmluZWQKICAgZm9yIHN5c3RlbXMgdy9vdXQgbmV0aW5ldC9pbi5oCiAgIAoyMDAyLTA3LTAzIDEyOjUxICByc3RvcnkKCiAgICogbG9jYWwvbWliMmMuc2NhbGFyLmNvbmY6CgogICBtb3JlIHR3ZWFrcyBub3RpY2VkIG9uIHRoZSBtYWlsaW5nIGxpc3QKICAgCjIwMDItMDctMDMgMDg6MjMgIGhhcmRha2VyCgogICAqIHBlcmwvYWdlbnQvdGVzdC5wbDoKCiAgIG1ha2UgdGVzdCBjbGVhbnVwcyB0ZXN0LnBsCiAgIAoyMDAyLTA3LTAzIDAzOjQyICBkdHMxMgoKICAgKiBhZ2VudC9taWJncm91cC86IHV0aWxfZnVuY3MuYyAoVjQtMi1wYXRjaGVzLjEpLCB1dGlsX2Z1bmNzLmMKOgoKICAgU2h1dCB0aGUgYWdlbnQgZG93biBjbGVhbmx5IGJlZm9yZSByZXN0YXJ0aW5nLgogICBUaGlzIGNsb3NlcyBhbnkgU05NUC9BZ2VudFggcG9ydHMgYXMgd2VsbC4KICAgCjIwMDItMDctMDMgMDM6MjYgIGR0czEyCgogICAqIGFnZW50L21pYmdyb3VwL3V0aWxfZnVuY3MuYzoKCiAgIE9JRCBzdWItaWRlbnRpZmllcnMgYXJlIHVuc2lnbmVkLCBzbyB0cmVhdGluZyB0aGVtIGFzIHNpZ25lZCBjYW4KICAgZ2l2ZSB0aGUgd3JvbmcgcmVzdWx0cyB3aXRoIGxhcmdlIHZhbHVlcy4KICAgCjIwMDItMDctMDMgMDM6MjAgIGR0czEyCgogICAqIHNubXBsaWIvc3lzdGVtLmggKFY0LTItcGF0Y2hlcy41KSwKICAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oOgoKICAgRW5zdXJlIGluX2FkZHJfdCBpcyBkZWZpbmVkLgogICAKMjAwMi0wNy0wMyAwMjozNCAgZHRzMTIKCiAgICogYWNjb25maWcuaCwgY29uZmlndXJlLCBjb25maWd1cmUuaW4sCiAgIGluY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmguaW46CgogICBUZXN0aW5nIGZvciA8c3lzL2Rpc2tsYWJlbC5oPiByZXF1aXJlcyA8bWFjaGluZS90eXBlcy5oPiBvbiBOZXRCU0QgMS41LgogICBSZXBvcnRlZCBieSBGZWxpY2lhIE5lZmYuCiAgIChBcHBhcmVudGx5IGZyb20gdGhlIE5ldEJTRCBidWcgZGF0YWJhc2UgLSB3aHkgdGhleSBkaWRuJ3QgdGVsbCB1cyBhYm91dAogICBpdCBpcyBhIG15c3RlcnkgdG8gbWUuLi4uKQogICAKMjAwMi0wNy0wMyAwMjoxOSAgZHRzMTIKCiAgICogY29uZmlndXJlLmluOgoKICAgRml4IHRoZSBkZWZhdWx0IHZhbHVlIGZvciBzeXNPYmplY3RJRCBhcyByZXBvcnRlZCBpbiB0aGUgY29uZmlndXJlIC0taGVscCBvdXRwdXQuCiAgIChUaGUgYWN0dWFsIHZhbHVlIHVzZWQgaXMgY29ycmVjdCAtIGl0J3MganVzdCB0aGUgaGVscCBvdXRwdXQgdGhhdCdzIHdyb25nKS4KICAgU3BvdHRlZCBieSBTYW5kaHlhIFNhdHlhbmFyYXlhbi4KICAgCjIwMDItMDctMDIgMjM6MTUgIGhhcmRha2VyCgogICAqIGxvY2FsL21pYjJjLmNvbmY6CgogICB1cGRhdGUgdGV4dCBmb3IgdmFyaW91cyAuY29uZiBmaWxlcwogICAKMjAwMi0wNy0wMiAxMzo0NiAgcnN0b3J5CgogICAqIGxvY2FsL21pYjJjLnNjYWxhci5jb25mOgoKICAgZml4ZXMgbm90ZWQgb24gdGhlIG1haWxpbmcgbGlzdCBieSBQYXRyaWNlIEthZGlvbmlrIDxrYWRpb25pa0BlbnNlaXJiLmZyPgogICAKMjAwMi0wNy0wMiAwMjozOSAgZHRzMTIKCiAgICogcGVybC9TTk1QL01ha2VmaWxlLlBMOgoKICAgQWRkIHRoZSAnc25tcGQnIGFuZCAnc25tcHRyYXBkJyBiaW5hcnkgbmFtZXMgdG8gdGhlIGFwcHJvcHJpYXRlIHBhdGhzCiAgIHdoZW4gc2V0dGluZyB1cCB0aGUgdGVzdGluZyBmcmFtZXdvcmsuCiAgIAoyMDAyLTA3LTAxIDA3OjUzICBkdHMxMgoKICAgKiBzbm1wbGliLzogYXNuMS5jIChWNC0yLXBhdGNoZXMuOCksIGFzbjEuYzoKCiAgIEVuY29kZS9EZWNvZGUgT0lEcyBvZiB0aGUgZm9ybSAyLlggKFggPiA0MCkgY29ycmVjdGx5LgogICAKMjAwMi0wNy0wMSAwMjo0MCAgamJwbgoKICAgKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbjoKCiAgICAgLSBmaXggaG9ycmlibGUgZm9ybWF0dGluZyBpbiBoZWxwIGZvciB0cmFuc3BvcnRzCiAgIAoyMDAyLTA3LTAxIDAyOjIzICBkdHMxMgoKICAgKiBzZWRzY3JpcHQuaW46CgogICBQaWNrIHVwIHRoZSBjaGFuZ2VkIGRlZmluaXRpb24gZm9yIHRoZSByb290IG9mIHRoZSBVQ0QgZXh0ZW5zaWJsZSBhZ2VudCB0YWJsZXMKICAgKHNvIHRoYXQgdGhlIEVYQU1QTEUuY29uZiBmaWxlIGdldHMgc2V0IHVwIHdpdGggdGhlIGNvcnJlY3QgbnVtZXJpYyBPSURzKQogICAKMjAwMi0wNi0yOCAwNjo0NiAgamJwbgoKICAgKiBzbm1wbGliL3NubXBUQ1BEb21haW4uYzoKCiAgICAgLSByZW1vdmUgdHJhbnNwb3J0IHNwZWNpZmllciBhbmQgcG9ydCBudW1iZXIgZnJvbSBzdHJpbmdzIHJldHVybmVkCiAgICAgICBmcm9tIHNubXBfdGNwX2ZtdGFkZHIoKSB3aGljaCBicmVhayB0Y3Bfd3JhcHBlcnMgKGFuZCBwZXJoYXBzCiAgICAgICBvdGhlciB0aGluZ3MpLgogICAKMjAwMi0wNi0yOCAwNDo0MSAgZHRzMTIKCiAgICogcGVybC9hZ2VudC90ZXN0LnBsOgoKICAgVXBkYXRlIGRlZmF1bHQgc3RvcmUgcmV0cmlldmFsIGZ1bmN0aW9ucyB0byB1c2UgdGhlIGNvcnJlY3QgbmFtZS4KICAgCiAgIE5vdGUgdGhhdCB0aGlzIHRlc3Qgc2NyaXB0IGFwcGVhcnMgdG8gaW5jbHVkZSB0d28gaW5maW5pdGUgbG9vcHMuCiAgIEknbSBub3QgY2xlYXIgaG93IHRoaXMgaXMgZXhwZWN0ZWQgdG8gcnVuIHN1Y2Nlc3NmdWxseSA/CiAgIAoyMDAyLTA2LTI4IDA0OjM5ICBkdHMxMgoKICAgKiBwZXJsL2FnZW50L2FnZW50LnhzOgoKICAgUmVtb3ZlIHJlZmVyZW5jZSB0byBub24tZXhpc3RlbnQgZGVndWdnaW5nIGZ1bmN0aW9uLgogICAKMjAwMi0wNi0yOCAwNDozNyAgZHRzMTIKCiAgICogcGVybC9tYW5hZ2VyLzogTWFrZWZpbGUuUEwsIGRpc3BsYXl0YWJsZS5wbSwKICAgZ2V0VmFsdWVzLnBtLCBtYW5hZ2VyLnBtLCBzbm1wdG9zcWw6CgogICBCcmluZyBwZXJsICdtYW5hZ2VyJyBtb2R1bGUgdW5kZXIgdGhlIE5ldFNOTVAgYmFubmVyCiAgIChib3RoIGluIHRlcm1zIG9mIG1vZHVsZSBncm91cCBuYW1lLCBhbmQgcmVmZXJlbmNlcyB0byAndWNkLXNubXAnKS4KICAgUmVtb3ZlIHNvbWUgVUNELXNwZWNpZmljIHNldHRpbmdzLgogICAKICAgTm90ZSB0aGF0IHNubXB0b3NxbCBzdGlsbCByZWZlcnMgZXhwbGljaXRseSB0byBXZXMnIFVDRCBlbWFpbCBhZGRyZXNzLAogICBhbmQgbWFuYWdlci5wbSB0byBXZXMnIFVDRCBmaWxlc3RvcmUgcGF0aC4gIFRoZSByZWxldmFudCBsaW5lcyBoYXZlCiAgIGJlZW4gaGlnaGxpZ2h0ZWQsIHRvIGVuY291cmFnZSBhbnlvbmUgd2lzaGluZyB0byB1c2UgdGhpcyB0byBjaGFuZ2UgdGhlbS4KICAgCjIwMDItMDYtMjggMDQ6MTIgIGR0czEyCgogICAqIHBlcmwvOiBBbnlEYXRhX1NOTVAvTWFrZWZpbGUuUEwsIE9JRC9NYWtlZmlsZS5QTCwKICAgU05NUC9NYWtlZmlsZS5QTCwgYWdlbnQvTWFrZWZpbGUuUEwsCiAgIG1hbmFnZXIvTWFrZWZpbGUuUEw6CgogICBSZW1vdmUgY2hlY2tpbmcgZm9yICJpbnRlcm5hbCIgcHJlcmVxdWlzaXRlcywgc28gdGhhdCAicGVybCBNYWtlZmlsZS5QTCIKICAgYXQgdGhlIHRvcCBsZXZlbCB3aWxsIHdvcmsgLSBldmVuIG9uIGEgcHJpc3RpbmUgc3lzdGVtLgogICAKICAgUW46CiAgICAgSXMgaXQgbmVjZXNzYXJ5L2Rlc2lyYWJsZSB0byBzZXBhcmF0ZSB0aGUgTmV0U05NUCBtb2R1bGVzIHRvIHRoaXMgZXh0ZW50PwogICBXb3VsZCBpdCBub3QgYmUgc2ltcGxlciB0byBoYXZlIGFsbCBvZiB0aGUgbWFpbiAucG0vLnhzIGZpbGVzIGluIGEgc2luZ2xlCiAgIE5ldFNOTVAgZGlyZWN0b3J5LCBhbmQgY29tcGlsZS9pbnN0YWxsIHRoZW0gYWxsIGZyb20gdGhlcmU/CiAgIAoyMDAyLTA2LTI4IDAxOjQ1ICBkdHMxMgoKICAgKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbjoKCiAgIENoZWNrIGZvciAtLXdpdGgtZW50ZXJwcmlzZSAoZXQgYWwpIGJlaW5nIGludm9rZWQgd2l0aG91dCBhIHZhbHVlLCBhbmQgYm9tYiBvdXQuCiAgIAoyMDAyLTA2LTI3IDIxOjQzICByc3RvcnkKCiAgICogUkVBRE1FLnNvbGFyaXM6CgogICBuZXcgUkVBRE1FIGRldGFpbmxpbmcgdGhlIHVzZSBvZiBTRklPIHRvIGNpcmN1bXZlbnQgdGhlIDI1NSBmZCBsaW1pdCBvbgogICBzb2xhcmlzLgogICAKMjAwMi0wNi0yNyAxMTowOSAgcnN0b3J5CgogICAqIGFnZW50L2hlbHBlcnMvdGFibGVfYXJyYXkuYywKICAgaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9hcnJheS5oOgoKICAgcmVtb3ZlIGNoYW5naW5nIGFycmF5OyBhZGQgbmV0c25tcF90YWJsZV9hcnJheV9yZW1vdmVfcm93KCkKICAgCjIwMDItMDYtMjcgMDQ6MTUgIGR0czEyCgogICAqIE1ha2VmaWxlLnJ1bGVzOgoKICAgU29tZSB2ZXJzaW9ucyBvZiAnbWFrZWRlcGVuZCcgKGUuZy4gUmVkSGF0IDcuMSksIGNhbid0IGhhbmRsZSAiLW9zdWZmaXgiCiAgIGFzIGEgc2luZ2xlIG9wdGlvbi4gIEFsbCB2ZXJzaW9ucyBzZWVtIGhhcHB5IHdpdGggIi1vIHN1ZmZpeCIgc28gdXNlIHRoYXQuCiAgIAoyMDAyLTA2LTI3IDAzOjMxICBkdHMxMgoKICAgKiBzbm1wbGliL21pYi5jOgoKICAgVXNlIEVOVl9TRVBBUkFUT1JfQ0hBUiByYXRoZXIgdGhhbiBoYXJkd2lyaW5nICc6JyBpbiBuZXRzbm1wX3NldF9taWJfZGlyZWN0b3J5CiAgIChhcyBzdWdnZXN0ZWQgYnkgUm9iZXJ0KQogICAKMjAwMi0wNi0yNyAwMzoyMiAgamJwbgoKICAgKiBzbm1wbGliL3NubXBVRFBEb21haW4uYzoKCiAgICAgLSByZW1vdmUgdHJhbnNwb3J0IHNwZWNpZmllciBhbmQgcG9ydCBudW1iZXIgZnJvbSBzdHJpbmdzIHJldHVybmVkCiAgICAgICBmcm9tIHNubXBfdWRwX2ZtdGFkZHIoKSB3aGljaCBicmVhayB0Y3Bfd3JhcHBlcnMgKGFuZCBwZXJoYXBzCiAgICAgICBvdGhlciB0aGluZ3MpLgogICAKMjAwMi0wNi0yNyAwMzowOSAgZHRzMTIKCiAgICogYWdlbnQvbWliZ3JvdXAvbWliSUkvOiBzbm1wX21pYi5jIChWNC0yLXBhdGNoZXMuMiksIHNubXBfbWliLmMKOgoKICAgVmFsaWRhdGUgbmV3IHNubXBFbmFibGVBdXRoZW5UcmFwcyB2YWx1ZSBiZWZvcmUgdHJ5aW5nIHRvIHVzZSBpdC4KICAgU3BvdHRlZCAmIGZpeGVkIGJ5IFNoYW50aGEgS3VtYXJhCiAgIAoyMDAyLTA2LTI1IDE0OjA5ICByc3RvcnkKCiAgICogYXBwcy9zbm1wc2V0LmM6CgogICBhZGQgQVBQVE9QUyAoLUNxKSBmb3Igc3VwcHJlc3Npbmcgb3V0cHV0IG9mIHNldCByZXN1bHRzIG9uIHN1Y2Nlc3MKICAgCjIwMDItMDYtMjUgMDk6MjggIGR0czEyCgogICAqIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Byb2MuYzoKCiAgIEFwcGx5IHBhdGNoICM1NTk4NDggdG8gdXNlIHRoZSAvcHJvYyBwc2V1ZG8tZmlsZXN5c3RlbSB1bmRlciBMaW51eAogICAocmF0aGVyIHRoYW4gcGFyc2luZyB0aGUgb3V0cHV0IG9mIHBzKQogICAKMjAwMi0wNi0yNSAwODo1OSAgZHRzMTIKCiAgICogc25tcGxpYi9zbm1wLXRjLmM6CgogICBDaGVjayBmb3IgJ2FpeDQnICh3aGljaCBpcyB0aGUgdG9rZW4gZGVmaW5lZCBpbiB0aGUgc3lzdGVtIGhlYWRlciBmaWxlKQogICByYXRoZXIgdGhhbiAnYWl4Jy4gICBTZWUgYnVnICM1NjU3NjkKICAgCjIwMDItMDYtMjUgMDg6MzEgIGR0czEyCgogICAqIGFnZW50L21pYmdyb3VwL3V0aWxfZnVuY3MuYzoKCiAgIFRyZWF0ICcwJyBhcyBhbiBpbnZhbGlkIGluZGV4IGZvciBhICJzaW1wbGUgdGFibGUiLgogICAKMjAwMi0wNi0yNSAwNzozNiAgaGFyZGFrZXIKCiAgICogbG9jYWwvc25tcGNvbmYuZGlyL3NubXBkLWRhdGEvc3lzdGVtOgoKICAgZG9jdW1lbnQgcmVhZC1vbmx5IG5hdHVyZSBvZiBzeXNDb250YWN0LjAgYW5kIHN5c0xvY2F0aW9uLjAKICAgY29uZmlndXJhdGlvbiB0b2tlbnMuCiAgIAoyMDAyLTA2LTI1IDA2OjQwICBqYnBuCgogICAqIG1hbi86IE1ha2VmaWxlLmluLCBkZWZhdWx0X3N0b3JlLjMuYm90LAogICBkZWZhdWx0X3N0b3JlLjMudG9wOgoKICAgICAtIGFkZCBuZXRzbm1wXyBwcmVmaXggdG8gZGVmYXVsdF9zdG9yZSBmdW5jdGlvbnMKICAgCiAgICAgLSBjbGVhbiB1cCBtYW5wYWdlIGEgYml0CiAgIAogICAgIC0gZml4IGJyZWFrYWdlIGluIGdlbmVyYXRpb24gb2YgZGVmYXVsdF9zdG9yZS4zLmggZHVlIHRvIGF1dG8taW5kZW50YXRpb24KICAgICAgIG9mIGRlZmF1bHRfc3RvcmUuaAogICAKMjAwMi0wNi0yNSAwMjo1NSAgamJwbgoKICAgKiBFWEFNUExFLmNvbmYuZGVmIChWNC0yLXBhdGNoZXMuMyksIEVYQU1QTEUuY29uZi5kZWY6CgogICAgIC0gbWVudGlvbiB0aGF0IHNldHRpbmcgc3lzTG9jYXRpb24gZXQgYWwuIGluIHNubXBkLmNvbmYgbWFrZXMgdGhlbQogICAgICAgcmVhZC1vbmx5CiAgIAogICAgIC0gYWxzbyBjaGFuZ2Ugc3ludGF4IG9mIGFsbCBleGFtcGxlIGNvbW1hbmQgbGluZSB0b29scyB0byB1c2UgbmV3ZXIKICAgICAgIC1jIENPTU1VTklUWSBzeW50YXggbm90IHBvc2l0aW9uYWwgcGFyYW1ldGVyCiAgIAoyMDAyLTA2LTI0IDA4OjAzICBoYXJkYWtlcgoKICAgKiBhZ2VudC9taWJncm91cC91Y2Qtc25tcC92bXN0YXQuYzoKCiAgIG1ha2UgYnVmZmVyIHNpemUgaW5jcmVhc2Ugbm90ZSBhIGRlYnVnIHN0YXRlbWVudCByYXRoZXIgdGhhbiBhIGdlbmVyaWMKICAgbG9nIHN0YXRlbWVudC4KICAgCjIwMDItMDYtMjMgMTg6NDAgIGRyaWVodWlzCgogICAqIHBlcmwvU05NUC9TTk1QLnhzOgoKICAgSGFuZGxlIENPVU5URVI2NCBpbiBfX3RyYW5zbGF0ZV9hc25fdHlwZS4KICAgCjIwMDItMDYtMjMgMTY6MDMgIGhhcmRha2VyCgogICAqIHBlcmwvQW55RGF0YV9TTk1QL25ldHNoOgoKICAgZG9jdW1lbnRhdGlvbiBmb3IgdGhlIHNjcmlwdCBhbmQgdGhlIGxhbmd1YWdlIGl0IGhvdXNlcy4KICAgICAobWFuIHBhZ2UgYXV0by1nZW5lcmF0ZWQgZnJvbSB0aGUgY29udGFpbmVkIHBvZCBkb2N1bWVudGF0aW9uKQogICAKMjAwMi0wNi0yMyAxNTowMyAgaGFyZGFrZXIKCiAgICogcGVybC9TTk1QL1JFQURNRToKCiAgIHVwZGF0ZSB0byByZWZlcmVuY2UgdG9wIGxldmVsIE1ha2VmaWxlLlBMCiAgIAoyMDAyLTA2LTIzIDE0OjUxICBoYXJkYWtlcgoKICAgKiBwZXJsL1NOTVAvOiBTTk1QLnhzIChWNC0yLXBhdGNoZXMuMSksIFNOTVAueHM6CgogICBmaXggcmVwb3J0ZWQgYnkgV2lsbGVtIERla2tlciBmb3IgV2luZG93cy4gIEJ1ZyAjNTQzMTk0IGZpeGVkLgogICAKMjAwMi0wNi0yMiAwODozNyAgaGFyZGFrZXIKCiAgICogUkVBRE1FLnNubXB2MzoKCiAgIHVwZGF0ZSBmb3IgcmVjZW50IG1ldGhvZG9sb2dpZXMKICAgCjIwMDItMDYtMjEgMTY6MDcgIHJzdG9yeQoKICAgKiBzbm1wbGliL21pYi5jOgoKICAgZmluYWwgKGhvcGVmdWxseSEpIGZpeCBmb3IgcGFyc2luZyBpcCBhZGRyZXNzZXMgZnJvbQogICAiRmNvLiBKYXZpZXIgUmlkcnVlam8iIDxhY2JyaXBlZkBzaS5laHUuZXM+CiAgIAoyMDAyLTA2LTE5IDE0OjM4ICBoYXJkYWtlcgoKICAgKiBtYW4vOiBuZXRzbm1wX2FnZW50LjMsIG5ldHNubXBfYnVsa190b19uZXh0LjMsCiAgIG5ldHNubXBfZGVidWcuMywgbmV0c25tcF9oYW5kbGVyLjMsIG5ldHNubXBfaW5zdGFuY2UuMwosIG5ldHNubXBfbXVsdGlwbGV4ZXIuMywgbmV0c25tcF9vbGRfYXBpLjMsCiAgIG5ldHNubXBfcmVhZF9vbmx5LjMsIG5ldHNubXBfc2VyaWFsaXplLjMsCiAgIG5ldHNubXBfdGFibGUuMywgbmV0c25tcF90YWJsZV9hcnJheS4zLAogICBuZXRzbm1wX3RhYmxlX2RhdGEuMywgbmV0c25tcF90YWJsZV9kYXRhc2V0LjMsCiAgIG5ldHNubXBfdGFibGVfaXRlcmF0b3IuMywgbmV0c25tcF90b2RvLjM6CgogICB1cGRhdGUgZnJvbSBkb3h5Z2VuCiAgIAoyMDAyLTA2LTE5IDExOjUwICBoYXJkYWtlcgoKICAgKiBsb2NhbC86IG1pYjJjLmludF93YXRjaC5jb25mLCBtaWIyYy5zY2FsYXIuY29uZjoKCiAgIHNjYWxhciBtaWIyYyBjb25maWd1cmF0aW9uIGZpbGVzIGZvciBnZW5lcmF0aW5nIHNjYWxhciBjb2RlLgogICAKMjAwMi0wNi0xOSAxMTo0MyAgaGFyZGFrZXIKCiAgICogYWdlbnQvbWliZ3JvdXAvZXhhbXBsZXMvc2NhbGFyX2ludC5jOgoKICAgY2xlYW4gdXAgbXVsdGktbGluZSBjb21tZW5kIHdoaWNoIHdhcyBtZXNzZWQgdXAgYnkgaW5kZW50LgogICAKMjAwMi0wNi0xOSAxMTo0MiAgaGFyZGFrZXIKCiAgICogcGVybC9BbnlEYXRhX1NOTVAvbmV0c2g6CgogICAtIGFkZCBzdXBwb3J0IGZvciBwcm9tcHRpbmcgb2YgdW5rbm93biBwYXJhbWV0ZXJzIHRvIGFsaWFzZXMuCiAgIC0gbWlzYyBvdGhlciBpbXByb3ZlbWVudHMgKGxpa2UgInJlaGFzaCIpCiAgIAoyMDAyLTA2LTE5IDExOjM4ICBoYXJkYWtlcgoKICAgKiBuZXQtc25tcC1jb25maWcuaW46CgogICBmaXggZm9yIG5ldyBkZWZhdWx0IHN0b3JlIEFQSQogICAKMjAwMi0wNi0xOSAxMToyOSAgaGFyZGFrZXIKCiAgICogcGVybC86IE1ha2VmaWxlLlBMLCBNYWtlZmlsZS5tYWtlZmlsZXMsCiAgIE1ha2VmaWxlLnN1YnMucGwsIG1ha2UtcGVybC1tYWtlZmlsZXMsIEFTTi9NYWtlZmlsZS5QTAosIE9JRC9NYWtlZmlsZS5QTCwgU05NUC9NYWtlZmlsZS5QTCwKICAgYWdlbnQvTWFrZWZpbGUuUEwsIGFnZW50L2RlZmF1bHRfc3RvcmUvTWFrZWZpbGUuUEwsCiAgIGRlZmF1bHRfc3RvcmUvTWFrZWZpbGUuUEw6CgogICBBUkdHR0dHRwogICBJIGxvdmUgcGVybC4KICAgSSBoYXRlIHBlcmwncyBtYWtlIHN5c3RlbS4KICAgSSBoYXRlIHRoZSBmYWN0IHRoYXQgcGVybCBzZWdmYXVsdHMgaWYgR2V0T3B0aW9ucygpIGlzIGNhbGxlZCBtb3JlCiAgIHRoYW4gb25jZS4KICAgc2lnaC4KICAgVGhpcyBob3BlZnVsbHkgd2lsbCBmaXggdGhlIHBlcmwgbW9kdWxlIGJ1aWxkIHJvdXRpbmVzIHNvIGl0IGF0IGxlYXN0CiAgIHdvcmtzIChidXQgaXQncyBzdGlsbCB1Z2x5IGFuZCBjb3VsZCB1c2UgbW9yZSBjbGVhbmluZykuCiAgIAoyMDAyLTA2LTE5IDA3OjQ1ICByc3RvcnkKCiAgICogYWdlbnQvc25tcF9hZ2VudC5jOgoKICAgZml4IGluZmludGUgbG9vcCBhbmQgYWRkIGRlYnVnIGluIHJlbW92ZV9kZWxlZ2F0ZWQKICAgCjIwMDItMDYtMTggMDc6MzcgIGhhcmRha2VyCgogICAqIGFnZW50L21pYmdyb3VwL2FnZW50eC9tYXN0ZXJfYWRtaW4uYzoKCiAgIE5VTEwgdGhlIHByaXYgcG9pbnRlciBvbiBzZXNzaW9uIGR1cGxpY2F0aW9uLiAgdGhhbmtzIHRvIHJleml0b3oKICAgCjIwMDItMDYtMTcgMDY6MjMgIGhhcmRha2VyCgogICAqIFJFQURNRToKCiAgIENoYW5nZWQgS2F0c3VoaXNhJ3MgZW1haWwgYWRkcmVzcywgb24gcmVxdWVzdAogICAKMjAwMi0wNi0xNCAwNzo0NCAgaGFyZGFrZXIKCiAgICogYWdlbnQvaGVscGVycy90YWJsZV9pdGVyYXRvci5jOgoKICAgUGF0Y2ggIzU2OTAyMTogZnJvbSBMYXVyaSBNeWxsYXJpCiAgICAgLSBmaXggbWVtb3J5IGxlYWsgaW4gdGhlIHRhYmxlIGl0ZXJhdG9yIHN1cHBvcnQuCiAgIAoyMDAyLTA2LTE0IDA3OjAyICBoYXJkYWtlcgoKICAgKiBzbm1wbGliL3NubXBfYXBpLmM6CgogICBBcHBsaWVkIHBhdGNoICM1NjkwMjAgZnJvbSByZXppdG96IG9uIElSQyB0byBmaXggbm9uLWluaXRpYWxpemVkIHZhcmlhYmxlCiAgIAoyMDAyLTA2LTE0IDAzOjU3ICBkdHMxMgoKICAgKiBhZ2VudC9taWJncm91cC9SbW9uL2FsYXJtLmM6CgogICBBZGQgKG51bGwpIGNvbnRleHQsIHRvIGJyaW5nIGludG8gbGluZSB3aXRoIHRoZSB2NSByZWdpc3RyeSBBUElzLgogICBGaXhlcyBidWcgNTY4NTgwLgogICAKMjAwMi0wNi0xNCAwMjoyNyAgZHRzMTIKCiAgICogYWNsb2NhbC5tNCwgY29uZmlndXJlOgoKICAgVXNlIG1hdGNoaW5nICcgYW5kICIgcXVvdGVzIGZvciBBSVggY29uZmlndXJlIHRlc3QuCiAgIE1lbnRpb25lZCBpbiBwYXNzaW5nIGluIGJ1ZyA1NjU3NjkuCiAgIAoyMDAyLTA2LTEzIDE0OjMyICBoYXJkYWtlcgoKICAgKiBwZXJsL1NOTVAvdC9jb25mLnQ6CgogICBmaXggZGVmYXVsdF9zdG9yZSByb3V0aW5lcwogICAKMjAwMi0wNi0xMiAwNjo0MyAgZHRzMTIKCiAgICogd2luMzIvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg6CgogICBCcmluZyBXaW5kb3dzIE9JRCB1c2FnZSBpbnRvIGxpbmUgd2l0aCB0aGUgbWFpbiBjb25maWcgZmlsZSBzZXR0aW5ncy4KICAgCjIwMDItMDYtMTIgMDY6MzcgIGR0czEyCgogICAqIGFjY29uZmlnLmgsIGluY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmguaW46CgogICBDb3JyZWN0IHRoZSBkZWZhdWx0IEVudGVycHJpc2UgT0lEIHVzZWQgaW4gdHJhcHMsIHRvIGF2b2lkIGEgcmVwZWF0ZWQgMAogICBzdWJpZGVudGlmaWVyLiAgKEZpeGVzIGJ1ZyAjNTY2OTE3KQogICAKMjAwMi0wNi0xMiAwNToxNCAgZHRzMTIKCiAgICogc25tcGxpYi9zbm1wX2FwaS5jOgoKICAgRGVmaW5lICdsZW5ndGgnIGFzIGEgc2lnbmVkIHZhcmlhYmxlLCBzbyBpdCBjYW4gaGFuZGxlIGFuIGVycm9yIHZhbHVlIG9mIC0xLgogICBSZXBvcnRlZCBieSBKb2FraW0gQWx0aGluaS4KICAgCjIwMDItMDYtMTIgMDM6MTEgIGR0czEyCgogICAqIHNubXBsaWIvcmVhZF9jb25maWcuYzoKCiAgIE1ha2Ugc3VyZSB0aGUgYWRkcmVzcyBvZiB0aGUgbmV4dCBsaW5rIGlzIHByb3Blcmx5IHNhdmVkLCBiZWZvcmUgZnJlZWluZyBtZW1vcnkuCiAgIFByb2JsZW0gZGlzY292ZXJlZCBieSBIdWdvIENhY290ZS4KICAgCjIwMDItMDYtMTIgMDI6MTUgIGR0czEyCgogICAqIGluY2x1ZGUvbmV0LXNubXAvOiBhZ2VudC9hZ2VudF9pbmRleC5oLCBhZ2VudC9hZ2VudF90cmFwLmgKLCBhZ2VudC9hbGxfaGVscGVycy5oLCBhZ2VudC9hdXRvX25saXN0LmgsCiAgIGFnZW50L2J1bGtfdG9fbmV4dC5oLCBhZ2VudC9kZWJ1Z19oYW5kbGVyLmgsCiAgIGFnZW50L21pYl9tb2R1bGVzLmgsIGFnZW50L211bHRpcGxleGVyLmgsIGFnZW50L251bGwuaAosIGFnZW50L29sZF9hcGkuaCwgYWdlbnQvcmVhZF9vbmx5LmgsCiAgIGFnZW50L3NlcmlhbGl6ZS5oLCBhZ2VudC9zZXRfaGVscGVyLmgsCiAgIGxpYnJhcnkvY211X2NvbXBhdC5oLCBsaWJyYXJ5L3NubXBBQUw1UFZDRG9tYWluLmgsCiAgIGxpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgsIGxpYnJhcnkvc25tcElQWERvbWFpbi5oLAogICBsaWJyYXJ5L3NubXBUQ1BEb21haW4uaCwgbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oLAogICBsaWJyYXJ5L3NubXBVRFBEb21haW4uaCwgbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oLAogICBsaWJyYXJ5L3NubXBVbml4RG9tYWluLmgsIGxpYnJhcnkvc25tcF9wYXJzZV9hcmdzLmgsCiAgIGxpYnJhcnkvc25tcF9zZWNtb2QuaCwgbGlicmFyeS90cmFuc2Zvcm1fb2lkcy5oLAogICBsaWJyYXJ5L3VjZF9jb21wYXQuaDoKCiAgIFN1cHBseSBtaXNzaW5nICNpZm5kZWYvI2RlZmluZS8jZW5kaWYgYW5kIGV4dGVybiAiQyIge30gd3JhcHBlcnMKICAgCjIwMDItMDYtMTEgMTc6NTYgIHJzdG9yeQoKICAgKiBzbm1wbGliL21pYi5jOgoKICAgcmVtb3ZlIHNwdXJpb3VzIHByaW50ZiB0byBzdGRlcnIKICAgCjIwMDItMDYtMTEgMTQ6MjEgIHJzdG9yeQoKICAgKiBpbmNsdWRlL25ldC1zbm1wL3R5cGVzLmg6CgogICBhZGQgZXh0ZXJuICJDIjsgYWRkIHZvaWRfYXJyYXkgc3RydWN0CiAgIAoyMDAyLTA2LTExIDE0OjIwICByc3RvcnkKCiAgICogYWdlbnQvaGVscGVycy90YWJsZV9hcnJheS5jOgoKICAgcmVtb3ZlIHRzZWFyY2g7IHVzZSBuZXcgY29udGFpbmVyIGluc3RlYWQKICAgCjIwMDItMDYtMTEgMTQ6MTkgIHJzdG9yeQoKICAgKiBpbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2FycmF5Lmg6CgogICB1c2UgY29udGFpbmVyIGZvciBzZWNvbmRhcnkgaW5kZXgKICAgCjIwMDItMDYtMTEgMTQ6MTcgIHJzdG9yeQoKICAgKiBzbm1wbGliL01ha2VmaWxlLmluOgoKICAgYWRkIGNvbnRhaW5lciB0byBoZWFkZXJzOyBhZGQgY29udGFpbmVyLmMKICAgCjIwMDItMDYtMTEgMTQ6MTcgIHJzdG9yeQoKICAgKiBzbm1wbGliL2NvbnRhaW5lci5jOgoKICAgaW5pdCBmdW5jdGlvbnMgZm9yIGJhc2ljL3NvcnRlZCBjb250YWluZXIKICAgCjIwMDItMDYtMTEgMTQ6MTUgIHJzdG9yeQoKICAgKiBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmg6CgogICBtb3JlIG1ldGhvZHMgZm9yIGJhc2ljIGNvbnRhaW5lcjsgYWRkIHNvcnRlZCAod2lsbCBwcm9iYWJseSByZW5hbWUpIGNvbmF0aW5lcgogICAKMjAwMi0wNi0xMSAxMjoyMiAgcnN0b3J5CgogICAqIGluY2x1ZGUvbmV0LXNubXAvYWdlbnQvaW5zdGFuY2UuaDoKCiAgIHByb3RlY3QgYWdhaW5zdCBtdWx0aXBsZSBpbmNsdWRlczsgYWRkIGV4dGVybiAiQyIgZm9yIF9fY3BsdXNwbHVzCiAgIAoyMDAyLTA2LTExIDExOjExICBoYXJkYWtlcgoKICAgKiBwZXJsL0FueURhdGFfU05NUC86IElOU1RBTEwsIE1ha2VmaWxlLlBMLCBSRUFETUUKLCBuZXRzaCwgc25tcHNoOgoKICAgcmVuYW1lZCBzbm1wc2ggdG8gbmV0c2gsIGFzIEkgbGlrZSB0aGUgbmFtZSBiZXR0ZXIgYW5kIGl0IGFwcGVhbHMgdG8gYQogICB3aWRlciBudW1iZXIgb2YgcGVvcGxlLgogICAKMjAwMi0wNi0xMCAwOTo1MyAgcnN0b3J5CgogICAqIGFnZW50L3NubXBfYWdlbnQuYzoKCiAgIHdoZW4gZGVsZXRpbmcgYW4gYXNwIHBvaW50ZXIsIG1ha2Ugc3VyZSBpdCBpc24ndCBpbiB0aGUgZGVsZWdhdGVkIGxpc3QKICAgCjIwMDItMDYtMTAgMDg6NDYgIHJzdG9yeQoKICAgKiBzbm1wbGliL21pYi5jOgoKICAgZml4IHBhcnNlX29uZV9vaWRfaW5kZXggdG8gYWxsb3cgdG9vIHNob3J0IElQIGFkZHJlc3Mgd2hlbiBjb21wbGV0ZSBpcwogICBzcGVjaWZpZWQ7IGFkZCBuZXRzbm1wX29pZDJjaGFycyAmIG5ldHNubXBfb2lkMnN0cgogICAKMjAwMi0wNi0xMCAwNzo0MiAgaGFyZGFrZXIKCiAgICogcGVybC9kZWZhdWx0X3N0b3JlLzogZGVmYXVsdF9zdG9yZS5wbSwgZGVmYXVsdF9zdG9yZS54cwosIHRlc3QucGw6CgogICB1cGRhdGUgdG8gbGF0ZXN0IGRlZmF1bHRfc3RvcmUgZGVmaW5lcwogICAKMjAwMi0wNi0xMCAwNzozOSAgaGFyZGFrZXIKCiAgICogTWFrZWZpbGUuaW4sIHBlcmwvLmN2c2lnbm9yZSwgcGVybC9NYWtlZmlsZS5QTDoKCiAgIFRvcCBsZXZlbCBwZXJsIE1ha2VmaWxlLlBMIHRvIGluc3RhbGwgdGhlIHdob2xlIGJ1bmNoIHVuZGVybmVhdGguCiAgIFRoaXMgc2hvdWxkIG5vdyBiZSB1c2VkIGluc3RlYWQgb2YgdGhlIGxvd2VyIGxldmVsIG1ha2VmaWxlcyBmb3IKICAgc2ltcGxpY2l0eS4KICAgCjIwMDItMDYtMTAgMDc6MjcgIGR0czEyCgogICAqIHBlcmwvU05NUC90L21pYi50OgoKICAgQWNrbm93bGVkZ2Uga25vd24gZmFpbGluZyB0ZXN0cy4KICAgVGhpcyBtZXNzYWdlIGNhbiBiZSByZW1vdmVkIG9uY2UgdGhlIHByb2JsZW0gaGFzIGJlZW4gaXNvbGF0ZWQgYW5kIGZpeGVkLgogICAKMjAwMi0wNi0xMCAwNzoxNyAgaGFyZGFrZXIKCiAgICogc25tcGxpYi9taWIuYzoKCiAgIHN1cHBvcnQgZm9yIGlwYWRkcmVzcyBidWlsZGluZy9wYXJzaW5nIG9mIE9JRCBpbmRleGVzLgogICAKMjAwMi0wNi0xMCAwMjowNyAgZHRzMTIKCiAgICogRkFRIChWNC0yLXBhdGNoZXMuOCksIEZBUToKCiAgIE1lbnRpb24gdGhlIG90aGVyIHBlcmwgbW9kdWxlcywgaW50cm9kdWNlZCB3aXRoIHY1IChwYXJ0aWN1bGFybHkgJ2RlZmF1bHRfc3RvcmUnKQogICAKMjAwMi0wNi0xMCAwMToyOCAgZHRzMTIKCiAgICogRkFRIChWNC0yLXBhdGNoZXMuNyksIEZBUToKCiAgIE5ldyBlbnRyeSBkZXNjcmliaW5nIHBvc3NpYmxlIHByb2JsZW1zIHdpdGggdHJhcCBoYW5kbGVycy4KICAgCjIwMDItMDYtMDggMjE6MzkgIGhhcmRha2VyCgogICAqIHBlcmwvYWdlbnQvYWdlbnQucG06CgogICBkZWZhdWx0X3N0b3JlIGZpeGVzCiAgIAoyMDAyLTA2LTA4IDIwOjU0ICByc3RvcnkKCiAgICogTWFrZWZpbGUuaW46CgogICBicmVhayBwZXJsIG1ha2VmaWxlIGNyZWF0aW9uIGludG8gc2VwZXJhdGUgc3RlcDsgb25seSBjbGVhbiBwZXJsIGRpcmVjdG9yeQogICBpZiB0aGVyZSBpcyBhIG1ha2VmaWxlCiAgIAoyMDAyLTA2LTA4IDIwOjE1ICByc3RvcnkKCiAgICogTWFrZWZpbGUuaW46CgogICBhZGQgcGVybHRlc3QgdGFyZ2V0IHRvIG1ha2UgdGVzdCBpbiBhbGwgcGVybCBkaXJlY3RvcmllcwogICAKMjAwMi0wNi0wOCAwOTo0NyAgaGFyZGFrZXIKCiAgICogcGVybC9BbnlEYXRhX1NOTVAvU3RvcmFnZS5wbToKCiAgIGZpeCB0byBkZWFsIHdpdGggdXBkYXRlZCBTUUw6OlN0YXRlbWVudCBtb2R1bGUuCiAgIAoyMDAyLTA2LTA4IDA3OjA4ICBoYXJkYWtlcgoKICAgKiBwZXJsL0FueURhdGFfU05NUC9JTlNUQUxMOgoKICAgdXBkYXRlIHRvIFNRTC1TdGF0ZW1lbnQgcmVxdWlyZW1lbnQgb2YgMS4wMDQKICAgCjIwMDItMDYtMDggMDY6NDUgIGhhcmRha2VyCgogICAqIHBlcmwvU05NUC9TTk1QLnhzOgoKICAgcmVtb3ZlIG1pYiBpbml0IGNvZGUgZnJvbSBDIHNubXBfdHJhbnNsYXRlX29iaiBjYWxsCiAgIAoyMDAyLTA2LTA4IDA2OjQ0ICBoYXJkYWtlcgoKICAgKiBwZXJsL1NOTVAvU05NUC5wbToKCiAgIGluaXRfc25tcCBpbnNpZGUgdHJhbnNsYXRlT2JqCiAgIAoyMDAyLTA2LTA4IDA2OjQ0ICBoYXJkYWtlcgoKICAgKiBwZXJsL09JRC9PSUQucG06CgogICBjaGFuZ2UgdmVyc2lvbiB0byAwLjEKICAgCjIwMDItMDYtMDggMDY6NDMgIGhhcmRha2VyCgogICAqIHBlcmwvQW55RGF0YV9TTk1QL2NvbmZpZ3MvdW5peDoKCiAgIEEgZmV3IGNsZWFudXBzIHRvIGlmY29uZmlnIGFuZCBuZXRzdGF0IGNvbW1hbmRzCiAgIAoyMDAyLTA2LTA4IDA2OjM1ICBoYXJkYWtlcgoKICAgKiBwZXJsL0FueURhdGFfU05NUC9zbm1wc2g6CgogICAtIGJlZ2lubmluZyBzdXBwb3J0IGZvciBpbXBvcnQvZXhwb3J0IG9mIGRhdGEgKGN1cnJlbnRseSB0by9mcm9tIENTVikuCiAgIC0gc3VwcG9ydCBmb3IgImRpZmYiIHdoaWNoIGNvbXBhcmVzIG9sZCAocG9zc2libHkgaW1wb3J0ZWQgZGF0YSkgdG8gY3VycmVudC4KICAgCjIwMDItMDYtMDggMDY6MzQgIGhhcmRha2VyCgogICAqIHBlcmwvQW55RGF0YV9TTk1QL01ha2VmaWxlLlBMOgoKICAgY2hhbmdlIHJlcXVpcmVkIFNOTVAgbW9kdWxlIHZlcnNpb24gZnJvbSA0IHRvIDUKICAgCjIwMDItMDYtMDggMDY6MzQgIGhhcmRha2VyCgogICAqIG1pYnMvTkVULVNOTVAtRVhBTVBMRVMtTUlCLnR4dDoKCiAgIEFkZCBhIHR1dG9yaWFsIHBsYWNlIGhvbGRlciBjb21tZW50IE9JRC4KICAgCjIwMDItMDYtMDggMDY6MzMgIGhhcmRha2VyCgogICAqIGxvY2FsL3RrbWliOgoKICAgZml4IHRrbWliIGZvciBuZXdlciBwZXJsIG1vZHVsZXMuCiAgIAoyMDAyLTA2LTA4IDA2OjMzICBoYXJkYWtlcgoKICAgKiBsb2NhbC9zbm1wY29uZjoKCiAgIHR1cm4gb2ZmIGV4dHJhIGJvbGQvdW5kZXJsaW5lIGZvcm1hdHRpbmcgYnkgZGVmYXVsdC4KICAgCjIwMDItMDYtMDcgMTU6MDQgIHJzdG9yeQoKICAgKiBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmg6CgogICBnZW5lcmljIGNvbnRhaW5lciBzdHJ1Y3R1cmUgZm9yIHN0b3JpbmcgZGF0YQogICAKMjAwMi0wNi0wNyAxMzowMSAgcnN0b3J5CgogICAqIHBlcmwvQVNOL0FTTi54czoKCiAgIGluY2x1ZGUgbmV0LXNubXAtY29uZmlnLmgKICAgCjIwMDItMDYtMDcgMTA6MzcgIHJzdG9yeQoKICAgKiBjb25maWd1cmU6CgogICB1cGRhdGUgY29uZmlndXJlIHRvIGtlZXAgaW4gbGluZSB3aXRoIGNvbmZpZ3VyZS5pbiAod2h5PyBzaG91bGRuJ3QKICAgY29uZmlndXJlIG5vdCBiZSBpbiBDVlMgYW5kIGJlIGF1dG9nZW5lcmF0ZWQ/IE9uZSBvZiB0aGVzZSBkYXlzIEknbSBnb2luZwogICB0byBoYXZlIHRvIGxlYXJuIGF1dG9jb25mLi4uLikKICAgCjIwMDItMDYtMDcgMTA6MzUgIHJzdG9yeQoKICAgKiBNYWtlZmlsZS5pbiwgTWFrZWZpbGUucnVsZXM6CgogICBhbHdheXMgY2hlY2sgcmV0dXJuIHN0YXR1cyBvZiBtYWtlIHdoZW4gaW5zaWRlIGEgbG9vcCwgYW5kIGV4aXQgb24gZXJyb3JzCiAgIAoyMDAyLTA2LTA3IDA4OjE3ICBkdHMxMgoKICAgKiBhZ2VudC9taWJncm91cC9taWJJSS86IGludGVyZmFjZXMuYyAoVjQtMi1wYXRjaGVzLjMpLAogICBpbnRlcmZhY2VzLmM6CgogICBPbmx5IG51bGwtdGVybWluYXRlIHRoZSBpbnRlcmZhY2UgbmFtZSB3aGlsZSBpdCdzIGFjdHVhbGx5IGJlaW5nIGNvcGllZC4KICAgUmVzdG9yZSB0aGUgZGF0YSBsaW5lIGFmdGVyd2FyZHMsIHNvIHRoZSBkZWJ1Z2dpbmcgb3V0cHV0IGlzIG1lYW5pbmdmdWwuCiAgIAoyMDAyLTA2LTA3IDAxOjE2ICBkdHMxMgoKICAgKiBhZ2VudC9zbm1wX2FnZW50LmM6CgogICBGaXggZm9yIGluZGV4aW5nIGVycm9yLCB0aGF0IGNhdXNlcyBhIGNyYXNoIGlmIG1vcmUgdGhhbiAxNiB2YXJiaW5kcwogICBhcmUgYWRkZWQgdG8gdGhlIGNhY2hlIGluIG9uZSBnby4gIFNwb3R0ZWQgYnkgU2hhbnRoIEt1bWFyYQogICAKMjAwMi0wNi0wNiAwMToxMiAgZHRzMTIKCiAgICogYWNsb2NhbC5tNCwgY29uZmlndXJlIChWNC0yLXBhdGNoZXMuWzcsNV0pLCBhY2xvY2FsLm00LAogICBjb25maWd1cmU6CgogICBEb24ndCBkaWZmZXJlbmNpYXRlIGJldHdlZW4gZWxmLSBhbmQgYS5vdXQtYmFzZWQgTmV0QlNEIHN5c3RlbXMuCiAgIChQcm9ibGVtIGhpZ2hsaWdodGVkIGJ5IEZlbGljaWEgTmVmZikKICAgCjIwMDItMDYtMDUgMTg6NTAgIHJzdG9yeQoKICAgKiBhY2NvbmZpZy5oLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwKICAgaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbiwKICAgaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oOgoKICAgcHV0IGRlZmluZXMgZm9yIHNvY2tsZW5fdCBhbmQgaW5fYWRkcl90IGluIG5ldC1zbm1wL3R5cGVzLmggaW5zdGVhZCBvZiBoYXZpbmcKICAgY29uZmlndXJlIGdlbmVyYXRlIHRoZW07IGNvbmZpZ3VyZSBpbnN0ZWFkIGdlbmVyYXRlcyBIQVZFX1NPQ0tMRU5fVCBhbmQKICAgSEFWRV9JTl9BRERSX1QgZm9yIHN5c3RlbXMgd2hpY2ggZG9uJ3QgbmVlZCB0aGUgZGVmaW5lczsgdGhpcyBpcyBwcmltYXJpbHkKICAgZm9yIHRoZSBiZW5lZml0IG9mIHRoZSBXaW4zMiBwbGF0Zm9ybSwgd2hpY2ggZG9lc24ndCBoYXZlIGNvbmZpZ3VyZS4KICAgCjIwMDItMDYtMDUgMDk6MjAgIHJzdG9yeQoKICAgKiBsb2NhbC9taWIyYy5pdGVyYXRlLmNvbmY6CgogICBkb24ndCBhZHZhbmNlIHJlcXVlc3QgcG9pbnRlciBpbnNpZGUgZm9yIGxvb3AsIHNpbmNlIGZvciBsb29wIGRvZXMgaXQgZm9yCiAgIHVzOyBvdGhlcndpc2UgZm9yIGxvb3AgbWF5IGVuZCB1cCBkZXJlZmVyZW5jaW5nIE5VTEwgcG9pbnRlci4KICAgCjIwMDItMDYtMDUgMDY6NDEgIGhhcmRha2VyCgogICAqIHBlcmwvQW55RGF0YV9TTk1QL2NvbmZpZ3MvdW5peDoKCiAgIGV4YW1wbGUgY29uZmlndXJhdGlvbiBmaWxlIHRvIGR1cGxpY2F0ZSB2YXJpb3VzIHVuaXggdXRpbGl0aWVzOgogICAgLSBjdXJyZW50bHk6IG5ldHN0YXQsIHBzLCBkZiwgaWZjb25maWcKICAgCjIwMDItMDYtMDUgMDY6NDAgIGhhcmRha2VyCgogICAqIHBlcmwvQW55RGF0YV9TTk1QL2NvbmZpZ3Mvc2NsaToKCiAgIGV4YW1wbGUgY29uZmlndXJhdGlvbiBmaWxlIHRvIGR1cGxpY2F0ZSBmdW5jdGlvbmFsaXR5IGluIEp1ZXJnZW4ncwogICBzY2xpIGNvbW1hbmQuCiAgIAoyMDAyLTA2LTA1IDA2OjM5ICBoYXJkYWtlcgoKICAgKiBwZXJsL0FueURhdGFfU05NUC9zbm1wc2g6CgogICBuZXcgY29tbWFuZHM6CiAgICAgc291cmNlIGZpbGUgLS0gc291cmNlcyBhbiByYyBmaWxlCiAgICAgd2F0Y2ggZXhwcmVzc2lvbiAtLSByZXBlYXRlZGx5IHJ1bnMgYSBjb21tYW5kIGFuZCBjb2xvcml6ZXMKICAgICAgIGRpZmZlcmVuY2VzIGluIGRhdGEKICAgICBldmFsIGV4cHJlc3Npb24gLS0gZXZhbHVhdGVzIGFuIGV4cHJlc3Npb24gZGlyZWN0bHkgaW4gcGVybAogICAgICAgLSBiZWdpbm5pbmdzIG9mIG92ZXJsb2FkcyBpbiBwZXJsIHNvIHRoYXQgY2FsbGluZyBzeXNDb250YWN0KCkKICAgICAgICAgd2lsbCByZXR1cm4gdGhlIHN5c0NvbnRhY3QgdmFsdWUuICB0YWJsZXMgbm90IHJldHVybmVkIHlldC4KICAgZml4ZXM6CiAgICAgdHVybnMgb2Ygb3JuYW1lbnRhbCBwcm9tcHQgc3VwcG9ydCAoaWNrKSBieSBkZWZhdWx0CiAgIAoyMDAyLTA2LTA1IDA0OjQzICBkdHMxMgoKICAgKiBtYW4vOiBzbm1wY21kLjEgKFY0LTItcGF0Y2hlcy44KSwgc25tcGNtZC4xLmRlZjoKCiAgIEJyaWVmIG1lbnRpb24gb2YgdGhlIG5lZWQgdG8gcXVvdGUgT0lEcyBjb250YWluaW5nIHN0cmluZyBpbmRleGVzLAogICB0byBwcm90ZWN0IHRoZSBkb3VibGUgcXVvdGVzIGZyb20gdGhlIHNoZWxsLgogICAKMjAwMi0wNi0wNCAxMDozOCAgcnN0b3J5CgogICAqIGFnZW50L3NubXBfYWdlbnQuYzoKCiAgIHRlc3QgZm9yIGEgbnVsbCB0cmVlY2FjaGUgYmVmb3JlIGRlcmVmZXJlbmNpbmcgaXQ7IG5vdGVkIG9uIHRoZSBjb2RlcnMKICAgbGlzdCBieSBqb2FraW0uYWx0aGluaUByZWRkby5uZXQKICAgCjIwMDItMDYtMDQgMTA6MzMgIHJzdG9yeQoKICAgKiBhZ2VudC9zbm1wX2FnZW50LmM6CgogICB0ZXN0IGZvciBhc3AtPnBkdSA9PSBOVUxMIGJlZm9yZSBkZXJlZmVyZW5jaW5nIGl0OyBub3RlZCBvbiB0aGUgY29kZXJzCiAgIGxpc3QgYnkgam9ha2ltLmFsdGhpbmlAcmVkZG8ubmV0LgogICAKMjAwMi0wNi0wNCAwNTo1NCAgaGFyZGFrZXIKCiAgICogcGVybC9BbnlEYXRhX1NOTVAvc25tcHNoOgoKICAgc3VwcG9ydCBmb3IgcHJpbnRmLCBzaW5nbGUgcXVlcnkvc2V0cyBvZiBzY2FsYXJzLCBtdWx0aS1saW5lIGFsaWFzZXMuCiAgIAoyMDAyLTA1LTMwIDE1OjIzICBoYXJkYWtlcgoKICAgKiBwZXJsL1NOTVAvU05NUC5wbToKCiAgIGRlZmF1bHRfc3RvcmUgZml4ZXMKICAgCjIwMDItMDUtMzAgMTU6MjMgIGhhcmRha2VyCgogICAqIHBlcmwvT0lEL09JRC5wbToKCiAgIG1ha2UgbmV3KCkgb3BlcmF0b3IgYSBiaXQgc21hcnRlcgogICAKMjAwMi0wNS0yOSAxOTo1NyAgaGFyZGFrZXIKCiAgICogc25tcGxpYi86IHNubXBfYWxhcm0uYyAoVjQtMi1wYXRjaGVzLjIpLCBzbm1wX2FsYXJtLmM6CgogICBzZXQgdGhlIHN0b3JhZ2UgcG9pbnRlciB0byBOVUxMLCBhcyBwb2ludGVkIG91dCBieSBNYXJrIEhveS4KICAgCjIwMDItMDUtMjkgMDk6MjIgIGhhcmRha2VyCgogICAqIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgsCiAgIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaCwgc25tcGxpYi9taWIuYywKICAgc25tcGxpYi9zbm1wX3BhcnNlX2FyZ3MuYzoKCiAgIFBhdGNoIGZyb20gSGFycmllIEhhemV3aW5rZWwgdG8gQVBJaWZ5IE1JQkRJUlMgc3VwcG9ydAogICAKMjAwMi0wNS0yOSAwNzo0MyAgZHRzMTIKCiAgICogRkFRIChWNC0yLXBhdGNoZXMuNiksIEZBUToKCiAgIEV4cGFuZCBvbiB3aGVuIE9wZW5TU0wgaXMgbmVjZXNzYXJ5LCBhbmQgaG93IHRvIGNvbXBpbGUgdXNpbmcgaXQuCiAgIAoyMDAyLTA1LTI5IDA2OjUyICBkdHMxMgoKICAgKiBzbm1wbGliL3NubXBVRFBEb21haW4uYzoKCiAgIFNldCBSRVVTRUFERFIgc28gdGhhdCBzcGVjaWZ5aW5nIHRoZSBzYW1lIHBvcnQgdHdpY2UgZG9lc24ndCBraWxsIHRoZSBhZ2VudC4KICAgKFN1Z2dlc3RlZCBieSBSb2JlcnQgSGFzdGluZ3MpCiAgIAoyMDAyLTA1LTI5IDAyOjQxICBkdHMxMgoKICAgKiBGQVEgKFY0LTItcGF0Y2hlcy41KSwgRkFROgoKICAgUmVmZXJlbmNlIGJvdGggdmVyc2lvbnMgb2YgdGhlIHR1dG9yaWFsIChzaW5jZSB0aGlzIGRvY3VtZW50IGlzIHVzZWQKICAgZm9yIGJ1aWxkaW5nIHRoZSBvbi1saW5lIHZlcnNpb24gb2YgdGhlIEZBUSkKICAgCjIwMDItMDUtMjkgMDI6MTYgIGR0czEyCgogICAqIEZBUSAoVjQtMi1wYXRjaGVzLjQpLCBGQVE6CgogICBDbGFyaWZ5IHRoYXQgdHJhcCBmaWx0ZXJpbmcgaXMgbm90IHlldCBvcGVyYXRpb25hbC4KICAgCjIwMDItMDUtMjggMTQ6NTMgIHJzdG9yeQoKICAgKiBzbm1wbGliL29pZF9hcnJheS5jOgoKICAgcmVtb3ZlIF5NIGNoYXJzCiAgIAoyMDAyLTA1LTI4IDE0OjUyICByc3RvcnkKCiAgICogbG9jYWwvbWliMmMuYXJyYXktdXNlci5jb25mOgoKICAgZml4IGxvZ2ljIGluIGNhbl9kZWxldGU7IGNvbnNvbGlkYXRlIHVzZSBvZiBuZXRzbm1wX3NldF9tb2RlX3JlcXVlc3QgYnkgc2V0dGluZwogICByYyBmb3IgdXNlIGF0IGVuZCBvZiBsb29wOyBkb24ndCB1c2UgcmVtb3ZlZCBtYWNyb3MgZm9yIHJvd3N0YXR1cy9zdG9yYWdldHlwZSwKICAgdXNpbmcgbmV3IG5ldHNubXBfY2hlY2tfdmIqIHJvdXRpbmVzIGluc3RlYWQ7IGFkZCBhc3NlcnRzIGZvciBlcnJvciBjYXNlcyB0aGF0CiAgIHNob3VsZCBiZSBjYXVnaHQgYnkgZWFybGllciByb3V0aW5lcwogICAKMjAwMi0wNS0yOCAxNDo0NyAgcnN0b3J5CgogICAqIGluY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfYXJyYXkuaDoKCiAgIGFkZCBjYWxsYmFja3MgZm9yIHJvdyAoZGUpYWN0aXZhdGlvbgogICAKMjAwMi0wNS0yOCAwNjoyMyAgZHRzMTIKCiAgICogYWdlbnQvaGVscGVycy90YWJsZV9hcnJheS5jOgoKICAgUHJvdGVjdCAiI2luY2x1ZGUgPHNlYXJjaC5oPiIgd2l0aCB0aGUgSEFWRV9TRUFSQ0hfSCB0b2tlbi4gIChTdWdnZXN0ZWQgYnkgSGFycmllKQogICAKMjAwMi0wNS0yOCAwNjoyMCAgZHRzMTIKCiAgICogaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oOgoKICAgRml4IHRoZSBkZWNsYXJhdGlvbiBvZiBzbm1wX2VuYWJsZV9zeXNsb2dfaWRlbnQuIChTcG90dGVkIGJ5IEhhcnJpZSkKICAgCjIwMDItMDUtMjcgMDE6NTMgIGR0czEyCgogICAqIGFwcHMvc25tcHRyYXBkLmMsIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAosIHNubXBsaWIvc25tcF9sb2dnaW5nLmM6CgogICBEb24ndCBoYXJkd2lyZSBzeXNsb2cgZmFjaWxpdHkgdG8gTE9HX0RBRU1PTi4KICAgRml4IHByb3ZpZGVkIGJ5IEpvYWtpbSBGYWxsc2pvLgogICAKMjAwMi0wNS0yNyAwMTozMiAgZHRzMTIKCiAgICogYWdlbnQvbWliZ3JvdXAvc25tcHYzL3VzbVVzZXIuYywgYXBwcy9zbm1wdHJhcGQuYwogICAoVjQtMi1wYXRjaGVzLlsyLDhdKSwgYWdlbnQvbWliZ3JvdXAvc25tcHYzL3VzbVVzZXIuYywKICAgYXBwcy9zbm1wdHJhcGQuYzoKCiAgIFR3ZWFrICd1c21Vc2VyJyBoZWxwIHN0cmluZyB0byBhY2N1cmF0ZWx5IHJlZmxlY3Qgd2hpY2ggYml0cyBhcmUgb3B0aW9uYWwuCiAgIFJlcG9ydGVkIGJ5IEFsaSBDaGFuYXVpLgogICAKMjAwMi0wNS0yNyAwMToyMiAgZHRzMTIKCiAgICogbWFuLzogc25tcGQuY29uZi41LmRlZiAoVjQtMi1wYXRjaGVzLjQpLCBzbm1wZC5jb25mLjUuZGVmOgoKICAgRG9jdW1lbnQgdGhlIGxpbWl0IG9uIHRoZSBudW1iZXIgb2YgImZpbGUiIGRpcmVjdGl2ZXMuCiAgIAoyMDAyLTA1LTI3IDAxOjE3ICBkdHMxMgoKICAgKiBsb2NhbC9NYWtlZmlsZS5pbjoKCiAgIFJlbW92ZSBhbiBleHRyYW5lb3VzIHRyYWlsaW5nIGJhY2tzbGFzaCwgdGhhdCBjb25mdXNlcyBzb21lICdtYWtlJ3MKICAgCjIwMDItMDUtMjQgMDk6NTQgIGhhcmRha2VyCgogICAqIHBlcmwvYWdlbnQvbmV0c25tcF9yZXF1ZXN0X2luZm8ucG06CgogICBQcm9wZXIgY3JlYXRpb24gb2YgcmV0dXJuZWQgTmV0U05NUDo6T0lEIG9iamVjdC4KICAgCjIwMDItMDUtMjQgMDk6NTQgIGhhcmRha2VyCgogICAqIHBlcmwvYWdlbnQvYWdlbnQueHM6CgogICBpbmNyZWFzZSByZWZlcmVuY2UgY291bnRzIG9uIHJldHVybmVkIG1pYiByZWdpc3RyYXRpb24gb2JqZWN0cyBzbwogICB0aGV5J3JlIG5vdCBhdXRvLWNsZWFuZWQgYnkgcGVybCAodGhlIGFnZW50IG5vdyBoYXMgYSBjb3B5IG9mIHRoZSBwb2ludGVyKQogICAKMjAwMi0wNS0yNCAwOTo1MyAgaGFyZGFrZXIKCiAgICogcGVybC9TTk1QL1NOTVAueHM6CgogICBuZXcgZGVmYXVsdF9zdG9yZSBuZXRzbm1wXyBwcmVmaXhlcy4KICAgCjIwMDItMDUtMjQgMDk6NTMgIGhhcmRha2VyCgogICAqIGxvY2FsL21pYjJjOgoKICAgc3VwcG9ydCBmb3Igc2NhbGFycyAobWliMmMuc2NhbGFyLmNvbmYgZmlsZSBjb21pbmcgc2hvcnRseSkKICAgCjIwMDItMDUtMjQgMDk6NTIgIGhhcmRha2VyCgogICAqIE1ha2VmaWxlLmluOgoKICAgQSBuZXcgcnVsZSBjYWxsZWQgImNvbW1lbnRjaGVjayIgdG8gZ3JlcCBhbGwgc291cmNlcyBmb3IgLy8gY29tbWVudHMuCiAgIAoyMDAyLTA1LTI0IDA4OjA5ICBkdHMxMgoKICAgKiBhZ2VudC9hZ2VudF9yZWdpc3RyeS5jOgoKICAgRGVjbGFyZSAncmVnaXN0ZXJfbWliX2RldGFjaF9ub2RlJyBiZWZvcmUgaXQncyB1c2VkIGZvciB0aGUgZmlyc3QgdGltZS4KICAgKFNwb3R0ZWQgYnkgWGlhbmcgWmhhbmcpCiAgIAoyMDAyLTA1LTI0IDA3OjQ0ICBkdHMxMgoKICAgKiBhcHBzL01ha2VmaWxlLmluOgoKICAgUmVtb3ZlIGV4dHJhbmVvdXMgdHJhaWxpbmcgYmFja3NsYXNoLgogICAoVGhhdCAqbWlnaHQqIGJlIGNvbmZ1c2luZyBTdW4ncyBtYWtlLCBidXQgaXMgd3JvbmcgYW55d2F5KQogICAKMjAwMi0wNS0yMyAwMTozOSAgZHRzMTIKCiAgICogYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvOiB2bXN0YXQuYywgdm1zdGF0X2JzZGk0LmMsCiAgIHZtc3RhdF9keW5peC5jLCB2bXN0YXRfZnJlZWJzZDIuYywgdm1zdGF0X2hwdXguYywKICAgdm1zdGF0X25ldGJzZDEuYywgdm1zdGF0X3NvbGFyaXMyLmM6CgogICBCcmluZyB0aGUgdmFyaW91cyAndmFyX2V4dGVuc2libGVfdm1zdGF0JyBkZWZpbml0aW9ucyBpbnRvIGxpbmUKICAgd2l0aCB0aGUgZGVjbGFyYXRpb24gaW4gdGhlIGhlYWRlciBmaWxlIC0gaS5lLiBub24tc3RhdGljLgogICAKMjAwMi0wNS0yMSAxNToyNSAgcnN0b3J5CgogICAqIE1ha2VmaWxlLmluOgoKICAgYWRkIC1JJChzcmNkaXIpL2luY2x1ZGUgdG8gQ1BQIHBhdGggZm9yIHBlb3BsZSBidWlsZGluZyBvdXRzaWRlIG9mIHNyYyB0cmVlCiAgIAoyMDAyLTA1LTIxIDA4OjE0ICByc3RvcnkKCiAgICogYWdlbnQvbWliZ3JvdXAvdHVubmVsL3R1bm5lbC5jOgoKICAgYXBwbHkgcGF0Y2ggWyA1NTgxMjkgXSBNYWtlIHRoZSB0dW5uZWwgbWliIGNvbXBpbGUgaW4gNS4wLjEsIHN1Ym1pdHRlZAogICBieSBMb3JlbnpvIENvbGl0dGkgKGxjb2xpdHRpKSwgd2hpY2ggYWRkcyBtaXNzaW5nIG5ldC1zbm1wLWNvbmZpZy5oCiAgIAoyMDAyLTA1LTIxIDA1OjMyICBqYnBuCgogICAqIGFnZW50L3NubXBkLmM6CgogICAgIC0gZml4IGNvcmUgZHVtcCBpbiAtdSBvcHRpb24gcHJvY2Vzc2luZywgbm90ZWQgYnkgQW5kcmVhcyBNYXVzCiAgIAoyMDAyLTA1LTIxIDA1OjIwICBkdHMxMgoKICAgKiBhZ2VudC9taWJncm91cC91Y2Qtc25tcC86IG1lbW9yeS5jIChWNC0yLXBhdGNoZXMuOSksIG1lbW9yeS5jCjoKCiAgIExhdGNoIG1lbW9yeSByZXBvcnRpbmcgYXQgMl4zMS0xLCByYXRoZXIgdGhhbiAyXjMyLTEgc2luY2UgdGhlc2UKICAgb2JqZWN0cyBhcmUgZGVmaW5lZCBhcyAoc2lnbmVkKSBJbnRlZ2VyMzIuCiAgIE9ubHkgbGF0Y2ggaWYgdGhlIHZhbHVlIGlzICpncmVhdGVyKiB0aGFuIHRoaXMgdGhyZXNob2xkLCBub3QgbGVzcyEKICAgCjIwMDItMDUtMjEgMDE6MjAgIGpicG4KCiAgICogaW5jbHVkZS91Y2Qtc25tcC9kZWZhdWx0X3N0b3JlLmgsIHNubXBsaWIvdWNkX2NvbXBhdC5jCjoKCiAgICAgLSBhZGQgY29tcGF0aWJpbGl0eSBkZWZpbml0aW9ucyBhbmQgZnVuY3Rpb25zIGZvciBuZXdseS1yZW5hbWVkCiAgICAgICBkZWZhdWx0IHN0b3JlIG1hbmlwdWxhdGlvbiBmdW5jdGlvbnMgYW5kIGNvbnN0YW50cyAoZGVmaW5lZCBpZmYKICAgICAgIC0tZW5hYmxlLXVjZC1jb21wYXRpYmlsaXR5IGlzIGdpdmVuIHRvIGF0IGNvbmZpZ3VyYXRpb24gdGltZSkKICAgCjIwMDItMDUtMjEgMDA6NTEgIGpicG4KCiAgICogaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaCwKICAgc25tcGxpYi9kZWZhdWx0X3N0b3JlLmM6CgogICAgIC0gbW92ZSBkZWZpbml0aW9uIG9mIG5ldHNubXBfZHNfcmVhZF9jb25maWcgdHlwZSBmcm9tIGRlZmF1bHRfc3RvcmUuaAogICAgICAgaW50byBkZWZhdWx0X3N0b3JlLmMgKHNpbmNlIGl0IGlzIG5vdCwgYW5kIHNob3VsZCBub3QsIGJlIHVzZWQKICAgICAgIGVsc2V3aGVyZSkuCiAgIAoyMDAyLTA1LTIwIDAzOjQyICByc3RvcnkKCiAgICogYWdlbnQvbWliZ3JvdXAvbWliSUkvdmFjbV92YXJzLmM6CgogICByZWdpc3RlcnMgdG9rZW5zIGZvciBpcHY2IHJvL3J3IGNvbW11bml0eSwgYW5kIG1ha2Ugc3VyZSB0byBwYXJzZSB0aGVtCiAgIGFzIGlwdjYsIG5vdCB2NC4KICAgCjIwMDItMDUtMTkgMTE6MzggIGRyaWVodWlzCgogICAqIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL2Rpc2tpby5jOgoKICAgQnVnZml4IGZvciBGcmVlQlNEIHN1cHBvcnQgb2YgdGhlIGRpc2tJTyBtaWIuIFRoZSBvcmlnaW5hbCBjb2RlIG5lZ2xlY3RlZAogICB0aGUgZGV2aWNlIG51bWJlciwgd2hpY2ggbWFkZSBkaXN0aW5ndWlzaGluZyBiZXR3ZWVuLCBzYXksIGFkMCBhbmQgYWQxCiAgIGltcG9zc2libGUuCiAgIAoyMDAyLTA1LTE3IDA5OjA1ICBoYXJkYWtlcgoKICAgKiBhZ2VudC9taWJncm91cC9taWJJSS9hdC5jLCBhZ2VudC9taWJncm91cC9taWJJSS9pY21wLmMKLCBhZ2VudC9taWJncm91cC9taWJJSS9pbnRlcmZhY2VzLmMsCiAgIGFnZW50L21pYmdyb3VwL21pYklJL2lwLmMsIGFnZW50L21pYmdyb3VwL21pYklJL2lwdjYuYywKICAgYWdlbnQvbWliZ3JvdXAvbWliSUkvbXRhX3NlbmRtYWlsLmMsCiAgIGFnZW50L21pYmdyb3VwL21pYklJL3NubXBfbWliLmMsCiAgIGFnZW50L21pYmdyb3VwL21pYklJL3N5c09SVGFibGUuYywKICAgYWdlbnQvbWliZ3JvdXAvbWliSUkvc3lzdGVtX21pYi5jLCBhZ2VudC9taWJncm91cC9taWJJSS90Y3AuYwosIGFnZW50L21pYmdyb3VwL21pYklJL3VkcC5jLAogICBhZ2VudC9taWJncm91cC9taWJJSS92YWNtX3ZhcnMuYywKICAgaW5jbHVkZS9uZXQtc25tcC9hZ2VudC92YXJfc3RydWN0Lmg6CgogICBQYXRjaCBmcm9tIEhhcnJpZSBIYXpld2lua2VsIHRvIHNsaWdodGx5IHJlZHVjZSBtZW1vcnkgY29zdHMgb2YgcmVnaXN0YXJ0aW9ucwogICAKMjAwMi0wNS0xNiAxNzowNiAgaGFyZGFrZXIKCiAgICogcGVybC9TTk1QL1NOTVAueHM6CgogICBmaXggZGVmYXVsdCBzdG9yZSB0YWcgbmFtZXMuCiAgIGZpeCBpbml0X3NubXAoKSBkZWZpbml0aW9uIHRvIG1hdGNoIG5vcm1hbCBwZXJsIG5vbi1hbnNpIG1vZGUuCiAgIAoyMDAyLTA1LTE2IDE2OjM5ICBkcmllaHVpcwoKICAgKiBuZXQtc25tcC1jb25maWcuaW46CgogICBNYWtlIHN1cmUgLS1jZmxhZ3Mgc3BpdHMgb3V0IHRoZSByZXF1aXJlZCBpbmNsdWRlIHBhdGggd2hlbiBpbnN0YWxsaW5nCiAgIGluIGEgbm9uLWRlZmF1bHQgbG9jYXRpb24sIGFzIGRvY3VtZW50ZWQgaW4gdGhlIHVzYWdlIGluZm8gaW4gdGhlIHNjcmlwdC4KICAgCjIwMDItMDUtMTYgMTU6MzYgIGhhcmRha2VyCgogICAqIGxvY2FsL3NubXBjb25mLmRpci9zbm1wZC1kYXRhL3N5c3RlbToKCiAgIGFkZCBhIGxpbmUgdG8gdGhlIHN5c1NlcnZpY2VzIHByb21wdCBzYXlpbmcgaWYgeW91IGRvbid0IGtub3csIHNheSBuby4KICAgCjIwMDItMDUtMTYgMTI6NTUgIGhhcmRha2VyCgogICAqIHBlcmwvYWdlbnQvZGVmYXVsdF9zdG9yZS86IGRlZmF1bHRfc3RvcmUucG0sCiAgIGRlZmF1bHRfc3RvcmUueHM6CgogICB1cGRhdGUgdG8gbmV3IGRlZmluZSBsaXN0CiAgIAoyMDAyLTA1LTE2IDEyOjU1ICBoYXJkYWtlcgoKICAgKiBwZXJsL2FnZW50L2RlZmF1bHRfc3RvcmUvdGVzdC5wbDoKCiAgIHRlc3Qgc2NyaXB0CiAgIAoyMDAyLTA1LTE2IDEyOjQ5ICBoYXJkYWtlcgoKICAgKiBwZXJsL2FnZW50L2RlZmF1bHRfc3RvcmUvZ2VuOgoKICAgYXV0b2dlbmVyYXRpb24gc2NyaXB0CiAgIAoyMDAyLTA1LTE2IDEwOjU4ICBoYXJkYWtlcgoKICAgKiBwZXJsL2RlZmF1bHRfc3RvcmUvOiBkZWZhdWx0X3N0b3JlLnBtLCBkZWZhdWx0X3N0b3JlLnhzCiwgdGVzdC5wbDoKCiAgIHVwZGF0ZXMgdG8gbmV3IC5oIHRva2VucwogICAKMjAwMi0wNS0xNiAxMDo1OCAgaGFyZGFrZXIKCiAgICogcGVybC9kZWZhdWx0X3N0b3JlL2dlbjoKCiAgIC5oIC0+IHBlcmxtb2R1bGUgcmVnZW5lcmF0aW9uIHNjcmlwdAogICAKMjAwMi0wNS0xNiAwNzowOSAgZHRzMTIKCiAgICogaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaCwKICAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oLCBzbm1wbGliL21pYi5jLAogICBzbm1wbGliL3NubXBfYXBpLmMsIHNubXBsaWIvdWNkX2NvbXBhdC5jOgoKICAgQ29uc29saWRhdGUgdGhlIHZhcmlvdXMgT0lEIG91dHB1dCBjb25maWd1cmF0aW9uIG1lY2hhbmlzbXMgaW50byBvbmUuCiAgIFRoaXMgZG9lcyBub3QgYWZmZWN0IHRoZSBjb21tYW5kLWxpbmUgb3B0aW9ucyAoeWV0ISkgLSBqdXN0IHRoZSBpbnRlcm5hbHMuCiAgIAoyMDAyLTA1LTE1IDE3OjQ0ICBoYXJkYWtlcgoKICAgKiBzbm1wbGliL2RlZmF1bHRfc3RvcmUuYywKICAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaCwKICAgaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9kc19hZ2VudC5oOgoKICAgZml4IGRlZmF1bHRfc3RvcmUKICAgCjIwMDItMDUtMTUgMTc6MjAgIGhhcmRha2VyCgogICAqIGNvbmZpZ3VyZToKCiAgIHJ1biBhdXRvY29uZgogICAKMjAwMi0wNS0xNSAxNzoyMCAgaGFyZGFrZXIKCiAgICogYWNjb25maWcuaCwgaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbjoKCiAgIGNyZWF0ZSBhIGRlZmluZSBsb2NhdGlvbiBmb3IgSEFWRV9HRVRERVZTCiAgIAoyMDAyLTA1LTE1IDE3OjE2ICBoYXJkYWtlcgoKICAgKiBhZ2VudC9NYWtlZmlsZS5kZXBlbmQsIGFnZW50L2hlbHBlcnMvTWFrZWZpbGUuZGVwZW5kLAogICBhZ2VudC9taWJncm91cC9NYWtlZmlsZS5kZXBlbmQsIGFwcHMvTWFrZWZpbGUuZGVwZW5kLAogICBhcHBzL3NubXBuZXRzdGF0L01ha2VmaWxlLmRlcGVuZCwgc25tcGxpYi9NYWtlZmlsZS5kZXBlbmQKOgoKICAgZGVwZW5kIHVwZGF0ZSwgd2hpY2ggSSBtZWFudCB0byBjaGVjayBpbiBiZWZvcmUgdGhlIDUuMC4xIHJlbGVhc2UKICAgCjIwMDItMDUtMTUgMDU6NTMgIGpicG4KCiAgICogYWdlbnQvOiBhZ2VudF9pbmRleC5jLCBhZ2VudF9yZWFkX2NvbmZpZy5jLAogICBhZ2VudF9yZWdpc3RyeS5jLCBhdXRvX25saXN0LmMsIGtlcm5lbC5jLAogICBzbm1wX2FnZW50LmMsIHNubXBfcGVybC5jLCBzbm1wX3ZhcnMuYywgc25tcGQuYwo6CgogICAgIC0gdXNlIG5ldyBuZXRzbm1wX2RzX2JsYWggZnVuY3Rpb25zIGFuZCBjb25zdGFudHMKICAgCjIwMDItMDUtMTUgMDU6MzkgIGpicG4KCiAgICogYXBwcy9ub3RpZmljYXRpb25fbG9nLmMsIGFwcHMvbm90aWZpY2F0aW9uX2xvZy5oLAogICBhcHBzL3NubXBidWxrd2Fsay5jLCBhcHBzL3NubXBkZWx0YS5jLCBhcHBzL3NubXBnZXQuYwosIGFwcHMvc25tcGdldG5leHQuYywgYXBwcy9zbm1wc3RhdHVzLmMsCiAgIGFwcHMvc25tcHRhYmxlLmMsIGFwcHMvc25tcHRyYW5zbGF0ZS5jLCBhcHBzL3NubXB0cmFwLmMKLCBhcHBzL3NubXB0cmFwZC5jLCBhcHBzL3NubXB1c20uYywKICAgYXBwcy9zbm1wd2Fsay5jLCBhcHBzL3NubXBuZXRzdGF0L21haW4uYywKICAgYWdlbnQvbWliZ3JvdXAvYWdlbnR4L2FnZW50eF9jb25maWcuYywKICAgYWdlbnQvbWliZ3JvdXAvYWdlbnR4L21hc3Rlci5jLAogICBhZ2VudC9taWJncm91cC9hZ2VudHgvc3ViYWdlbnQuYywKICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL210ZVRyaWdnZXJUYWJsZS5jLAogICBhZ2VudC9taWJncm91cC9taWJJSS9zbm1wX21pYi5jLAogICBhZ2VudC9taWJncm91cC9taWJJSS9zeXNPUlRhYmxlLmMsCiAgIGFnZW50L21pYmdyb3VwL21pYklJL3N5c3RlbV9taWIuYywgYWdlbnQvbWliZ3JvdXAvc211eC9zbXV4LmMKLCBhZ2VudC9taWJncm91cC90dW5uZWwvdHVubmVsLmM6CgogICAgIC0gdXNlIG5ldyBuZXRzbm1wX2RzX2JsYWggZnVuY3Rpb25zIGFuZCBjb25zdGFudHMKICAgCjIwMDItMDUtMTUgMDU6MzcgIGpicG4KCiAgICogc25tcGxpYi86IGRlZmF1bHRfc3RvcmUuYywgbWliLmMsIHBhcnNlLmMsCiAgIHJlYWRfY29uZmlnLmMsIHNubXBVRFBEb21haW4uYywgc25tcFVEUElQdjZEb21haW4uYwosIHNubXBfYWxhcm0uYywgc25tcF9hcGkuYywgc25tcF9sb2dnaW5nLmMsCiAgIHNubXBfcGFyc2VfYXJncy5jLCBzbm1wX3NlY21vZC5jLCBzbm1wdXNtLmMsCiAgIHNubXB2My5jLCB1Y2RfY29tcGF0LmMsIHZhY20uYzoKCiAgICAgLSByZW5hbWUgZnVuY3Rpb25zIGFuZCBjb25zdGFudHMgZnJvbSBkZWZhdWx0X3N0b3JlIGZyb20gZHNfYmxhaAogICAgICAgdG8gbmV0c25tcF9kc19ibGFoCiAgIAoyMDAyLTA1LTE1IDAyOjAyICBqYnBuCgogICAqIGFnZW50L21pYmdyb3VwL3NtdXgvOiBzbXV4LmMgKFY0LTItcGF0Y2hlcy4wKSwgc211eC5jOgoKICAgICAtIGluaXRpYWxpc2Ugc211eF9saXN0ZW5fc2QgdG8gYXZvaWQgcHJvYmxlbXMgbm90ZWQgaW4gYnVnICM1NDU0NDgKICAgICAgIChhIGJpdCB1bnJlYXNvbmFibGUgaW4gbXkgdmlldyBidXQgaXQgY2FuJ3QgZG8gYW55IGhhcm0pLgogICAKMjAwMi0wNS0xNCAxMjo0MCAgcnN0b3J5CgogICAqIGFnZW50L2hlbHBlcnMvdGFibGVfYXJyYXkuYzoKCiAgIHByZWNpc2lvbiBleHRyYWN0aW9uIG9mIHR1bW9yIGluc3RlYWQgb2YgYW1wdXRhdGlvbiwgb3IsIGlmZGVmIHNlYXJjaC5oCiAgIGZ1bmN0aW9ucyB0aGF0IGFyZW4ndCBlc3NlbnRpYWwgdG8gdGFibGVfYXJyYXkgb3BlcmF0aW9uIGFuZCB3aWxsIHByb2JhYmx5CiAgIHZhbmlzaCBpbiB0aGUgbmVhciBmdXR1cmUgYW55d2F5LgogICAKMjAwMi0wNS0xMyAyMDoxNiAgcnN0b3J5CgogICAqIGFnZW50L29iamVjdF9tb25pdG9yLmM6CgogICBmaXggdHlwZSBpbiBzaXplb2YKICAgCjIwMDItMDUtMTMgMTM6MDQgIGhhcmRha2VyCgogICAqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBhZ2VudC9oZWxwZXJzL3RhYmxlX2FycmF5LmMKLCBpbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLmluOgoKICAgQ2hlY2sgZm9yIHNlYXJjaC5oIGJlZm9yZSBjb21waWxpbmcgdGhlIHRhYmxlX2FycmF5IGhlbHBlcgogICAKMjAwMi0wNS0xMyAwODowMCAgaGFyZGFrZXIKCiAgICogYWdlbnQvaGVscGVycy9vbGRfYXBpLmM6CgogICByZW1vdmUgQysrIGNvbW1lbnRzCiAgIAoyMDAyLTA1LTEzIDAwOjM5ICBkcmllaHVpcwoKICAgKiBDaGFuZ2VMb2c6CgogICBOb3RlIGNoYW5nZXMgdG8gY29uZmlndXJlLmluLgogICAKMjAwMi0wNS0xMiAxMDozMCAgZHJpZWh1aXMKCiAgICogY29uZmlndXJlLmluOgoKICAgTWFrZSBzdXJlIHRoZSBjaGVja3MgZm9yIGt2bSByZWxhdGVkIHN0dWZmIGhhcHBlbnMgd2hlbiAtbGt2bSBpcyBpbiBzY29wZS4KICAgQWRkIGRldGVjdGlvbiBvZiB0aGUgLWxkZXZzdGF0IHJlcXVpcmVtZW50IHdoZW4gYnVpbGRpbmcgd2l0aCB1Y2Qtc25tcC9kaXNraW8uCiAgIAoKCQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgpDaGFuZ2VzOiBWNS4wIC0+IFY1LjAuMQoKMjAwMjAtMDUtMTIgMTc6MzAgIGRyaWVodWlzCgogICAqIGNvbmZpZ3VyZS5pbjoKCiAgIGRldGVjdCAtbGRldnN0YXQgd2hlbiBuZWVkZWQ7IGZpeCAtbGt2bSBkZXRlY3Rpb24KCjIwMDItMDUtMTAgMTc6MDkgIGhhcmRha2VyCgogICAqIEZBUSwgTkVXUywgUkVBRE1FLCBSRUFETUUuYWdlbnR4OgoKICAgbWVudGlvbiB0dXRvcmlhbC01IGluc3RlYWQgb2YgdHV0b3JpYWwKICAgCjIwMDItMDUtMTAgMTc6MDQgIGhhcmRha2VyCgogICAqIHBlcmwvYWdlbnQvOiBNYWtlZmlsZS5QTCwgYWdlbnQucG0sCiAgIG5ldHNubXBfcmVxdWVzdF9pbmZvLnBtOgoKICAgcmVxdWVzdCBpbmZvIHBlcmwgY29kZSBtb3ZlZCB0byBzZXBhcmF0ZSBmaWxlLgogICAKMjAwMi0wNS0xMCAxNzowMSAgaGFyZGFrZXIKCiAgICogcGVybC9PSUQvT0lELnBtOgoKICAgZG9jdW1lbnRhdGlvbiBmb3IgdGhlIE9JRCBidWlsZGluZyBvdmVybG9hZHMuCiAgIAoyMDAyLTA1LTEwIDE2OjU1ICBoYXJkYWtlcgoKICAgKiBhcHBzL3NubXB2YWNtLmM6CgogICBBZGQgcHJvcGVyIGxlbmd0aCBzZWdtZW50IHRvIHRoZSBidWlsZCB2aWV3IE9JRC4KICAgCjIwMDItMDUtMTAgMTQ6NDEgIGhhcmRha2VyCgogICAqIHNubXBsaWIvbWliLmM6CgogICBuZXcgZG9jIHBhdGNoIGZyb20gQXhlbCBLaXR0ZW5iZXJnCiAgIAoyMDAyLTA1LTEwIDE0OjA0ICBoYXJkYWtlcgoKICAgKiBhZ2VudC9taWJncm91cC9taWJJSS86IHZhY21fdmFycy5jIChWNC0yLXBhdGNoZXMuMCksIHZhY21fdmFycy5jCjoKCiAgIGZpeCB2YWNtIHByb2JsZW0gb24gc2V0cyB3aXRoIE9JRHMgY29udGFpbmluZyBsYXJnZSBudW1iZXJzIGFzIG5vdGVkCiAgIGJ5IFZpbmF5IEdhb25rYXIgb24gdGhlIC1jb2RlcnMgbWFpbGluZyBsaXN0LgogICAKMjAwMi0wNS0xMCAxMzo0NiAgaGFyZGFrZXIKCiAgICogbG9jYWwvbWliMmM6CgogICBmaXggY2FsbGluZyBvbiBtdWx0aXBsZSB0YWJsZXMKICAgCjIwMDItMDUtMTAgMDM6MjMgIGR0czEyCgogICAqIHNubXBsaWIvbWliLmM6CgogICBNZXJnZSAiU1RSSU5HOiBIZXg6IiB0eXBlIHRva2VucyBpbnRvIGEgc2luZ2xlIHRva2VuICJIZXgtU1RSSU5HOiIKICAgCjIwMDItMDUtMTAgMDM6MTIgIGR0czEyCgogICAqIGFnZW50L2hlbHBlcnMvaW5zdGFuY2UuYzoKCiAgIFJlcG9ydCBub24tZXhpdGVudCBzdWJpbnN0YW5jZXMgYXMgJ25vU3VjaEluc3RhbmNlJyByYXRoZXIgdGhhbiAnbm9TdWNoT2JqZWN0Jy4KICAgInNubXBnZXQgLi4uLiAuMS4zLjYuMS42LjMuMTIuMS41LjAuOTkiIG5vdyByZXNwb25kcyBjb3JyZWN0bHkuCiAgICh0aG91Z2ggInNubXBnZXQgLi4uLiAuMS4zLjYuMS42LjMuMTIuMS41LjEiIHN0aWxsIHJldHVybnMgJ25vU3VjaE9iamVjdCcpCiAgIAogICBBbHNvIGd1ZXNzIHRoYXQgZmFpbGVkIFNFVCByZXF1ZXN0cyBhcmUgJ25vQ3JlYXRpb24nIGVycm9ycyAod2hpY2ggaXMKICAgcHJvYmFibHkgdGhlIG1vc3QgbGlrZWx5IG9wdGlvbikuCiAgIAoyMDAyLTA1LTA5IDE1OjU0ICBoYXJkYWtlcgoKICAgKiBNYWtlZmlsZS5ydWxlczoKCiAgIGV4aXQgcHJvcGVybHkgd2hlbiBhIHN1YmRpciBmYWlscyB0byBtYWtlIHByb3Blcmx5CiAgIAoyMDAyLTA1LTA5IDE1OjMwICBoYXJkYWtlcgoKICAgKiBzbm1wbGliL21pYi5jOgoKICAgY3JlYXRlIGEgdG9rZW4gZm9yIHRoZSAtT3YgZXF1aXZlbGFudAogICAKMjAwMi0wNS0wOSAwOToxMiAgaGFyZGFrZXIKCiAgICogYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvOiBtZW1vcnlfc29sYXJpczIuYyAoVjQtMi1wYXRjaGVzLjUpLAogICBtZW1vcnlfc29sYXJpczIuYzoKCiAgIHBhdGNoIGZyb20gVGFrdW1pIEthZG9kZSB0byBmaXggbWVtb3J5IHVzYWdlIG9uIHNvbGFyaXMKICAgCjIwMDItMDUtMDkgMDg6NTQgIGhhcmRha2VyCgogICAqIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Ztc3RhdC5jOgoKICAgdXBkYXRlcyBmcm9tIG1hbGxvY2VkIHZtc3RhdCBmaXhlcyBmcm9tIHBhdGNoZXMgYnJhbmNoCiAgIAoyMDAyLTA1LTA4IDE2OjM0ICBoYXJkYWtlcgoKICAgKiBuZXQtc25tcC1jb25maWcuaW46CgogICBuZXcgLS1jb21waWxlLXN1YmFnZW50IGZlYXR1cmVzOgogICAgIC0tY2ZsYWdzCiAgICAgLS1ub3JtCiAgICAgLS1sZGZsYWdzCiAgICAgaW5jbHVkZXMgaGVhZGVyIGZpbGVzCiAgICAgbWlzYyBvdGhlciBidWcgZml4ZXMuCiAgIAoyMDAyLTA1LTA4IDEzOjEzICBoYXJkYWtlcgoKICAgKiBhZ2VudC9taWJncm91cC9hZ2VudHgvc3ViYWdlbnQuYzoKCiAgIG1ha2UgdGhlIHN1YmFnZW50IHByb3Blcmx5IGNhbGwgdGhlIHJlc2VydmUyIHN0YXRlIGFnYWluLgogICAKMjAwMi0wNS0wOCAxMDowMiAgaGFyZGFrZXIKCiAgICogYWdlbnQvbWliZ3JvdXAvZXhhbXBsZXMvbm90aWZpY2F0aW9uLmM6CgogICBydW4gaW5kZW50CiAgIAoyMDAyLTA1LTA4IDA5OjAxICBoYXJkYWtlcgoKICAgKiBhZ2VudC9taWJncm91cC9leGFtcGxlcy9ub3RpZmljYXRpb24uYzoKCiAgIHVtLCB1c2UgMzAgc2Vjb25kcyBsaWtlIGFkdmVydGlzZWQuCiAgIAoyMDAyLTA1LTA4IDA4OjU5ICBoYXJkYWtlcgoKICAgKiBhZ2VudC9taWJncm91cC9leGFtcGxlcy9ub3RpZmljYXRpb24uYywKICAgYWdlbnQvbWliZ3JvdXAvZXhhbXBsZXMvbm90aWZpY2F0aW9uLmgsCiAgIG1pYnMvTkVULVNOTVAtRVhBTVBMRVMtTUlCLnR4dDoKCiAgIGRlZmluZSBhIGJldHRlciBub3RpZmljYXRpb24gZXhhbXBsZSAobm8gcmVxdWVzdHMuICBqdXN0IGFsYXJtIC0+IHNlbmQpCiAgIAoyMDAyLTA1LTA3IDIyOjQ1ICBoYXJkYWtlcgoKICAgKiBsb2NhbC9taWIyYzoKCiAgIHVwZGF0ZSB0byBjdXJyZW50IGluZGVudCBjb21tYW5kCiAgIAoyMDAyLTA1LTA3IDIyOjQ0ICBoYXJkYWtlcgoKICAgKiBsb2NhbC9taWIyYy5jcmVhdGUtZGF0YXNldC5jb25mOgoKICAgbW92ZSB0ZXh0IGluIGNvbW1lbnQgbGVmdCBzbGlnaHQgKHdhcyB0b28gbG9uZykuCiAgIAoyMDAyLTA1LTA3IDIyOjQzICBoYXJkYWtlcgoKICAgKiBsb2NhbC9taWIyYzoKCiAgIGVudW0gZml4ZXMuCiAgIAoyMDAyLTA1LTA3IDIyOjQyICBoYXJkYWtlcgoKICAgKiBsb2NhbC86IE1ha2VmaWxlLmluLCBtaWIyYy5jb2x1bW5fZGVmaW5lcy5jb25mLAogICBtaWIyYy5jb2x1bW5fZW51bXMuY29uZiwgbWliMmMuY29uZjoKCiAgIE5ldyBtaWIyYyBmaWxlcyBmb3IgZ2VuZXJhdGluZyBoZWFkZXJzIGZ1bGwgb2YgY29sdW1uIG51bWJlciBkZWZpbmVzCiAgIGFuZCBlbnVtIGRlZmluZXMuCiAgIAoyMDAyLTA1LTA3IDIyOjQwICBoYXJkYWtlcgoKICAgKiBuZXQtc25tcC1jb25maWcuaW46CgogICAtIC0tY29tcGlsZS1zdWJhZ2VudCBhZ2VudCBsaWJyYXJ5IHJlb3JkZXJpbmcgc28gaXQgYWN0dWFsbHkgd29ya3MuCiAgIC0gLS1jb21waWxlLXN1YmFnZW50IG5vdyBzdXBwb3J0cyAubyBmaWxlcyAocHJlY29tcGlsZWQgY29kZSkuCiAgIAoyMDAyLTA1LTA3IDIyOjMxICBoYXJkYWtlcgoKICAgKiBhY2NvbmZpZy5oLCBjb25maWd1cmU6CgogICBobW0uICBtaXNzZWQgc29tZSBjaGVja2luIGZpbGVzLgogICAKMjAwMi0wNS0wNyAxMToxNSAgaGFyZGFrZXIKCiAgICogcGVybC9TTk1QL3QvOiBjb25mdGVzdC5jb25mLCBzdGFydGFnZW50LnBsLCBjb25mLnQKOgoKICAgdGVzdCBmb3IgY29uZmlndXJhdGlvbiBmaWxlL2RlZmF1bHRfc3RvcmUgc3VwcG9ydAogICAKMjAwMi0wNS0wNyAxMToxNCAgaGFyZGFrZXIKCiAgICogcGVybC9TTk1QLzogU05NUC5wbSwgU05NUC54czoKCiAgIG1ha2UgaW5pdF9zbm1wKCkgdGFrZSBhIGNoYXIgKiBhcmd1bWVudCBsaWtlIHRoZSByZWFsIEFQSQogICAKMjAwMi0wNS0wNyAxMTowMCAgaGFyZGFrZXIKCiAgICogYWdlbnQvaGVscGVycy9pbnN0YW5jZS5jOgoKICAgdHlwb3MuCiAgIAoyMDAyLTA1LTA3IDA5OjQxICBoYXJkYWtlcgoKICAgKiBsb2NhbC9zbm1wY29uZjoKCiAgIGZpeCB0aGUgLWcgZmxhZy4KICAgCjIwMDItMDUtMDcgMDk6MTYgIGhhcmRha2VyCgogICAqIGFnZW50L2hlbHBlcnMvaW5zdGFuY2UuYzoKCiAgIGNhbGwgbmV0c25tcF9zZXRfcmVxdWVzdF9lcnJvciBsaWtlIGEgZ29vZCBib3kuCiAgIAoyMDAyLTA1LTA2IDIwOjQzICByc3RvcnkKCiAgICogbWlicy9NYWtlZmlsZS5taWI6CgogICBmaXggbWlzc2luZyAkIG5vdGVkIGJ5IEpvaG4gTWlsbHMgb24gdGhlIGNvZGVycyBsaXN0CiAgIAoyMDAyLTA1LTA2IDE2OjEyICBoYXJkYWtlcgoKICAgKiBjb25maWd1cmUsIGNvbmZpZy5oLmluLCBjb25maWd1cmUuaW4sIHNubXBsaWIvc25tcF9hcGkuYwogICAoVjQtMi1wYXRjaGVzLls0LDIsMywzXSksIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLAogICBpbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLmluLAogICBzbm1wbGliL3NubXBUQ1BEb21haW4uYywgc25tcGxpYi9zbm1wVENQSVB2NkRvbWFpbi5jLAogICBzbm1wbGliL3NubXBVRFBEb21haW4uYywgc25tcGxpYi9zbm1wVURQSVB2NkRvbWFpbi5jLAogICBzbm1wbGliL3NubXBVbml4RG9tYWluLmM6CgogICB1c2Ugc2l6ZV90IHdoZW4gc29ja2xlbl90IGlzIG5vdCBhdmFpbGFibGUgKGNvcnJlY3RseSBkb25lIHRoaXMgdGltZSkKICAgCjIwMDItMDUtMDYgMTU6NTkgIGhhcmRha2VyCgogICAqIHNubXBsaWIvOiBzbm1wVENQRG9tYWluLmMsIHNubXBUQ1BJUHY2RG9tYWluLmMsCiAgIHNubXBVRFBEb21haW4uYywgc25tcFVEUElQdjZEb21haW4uYywgc25tcFVuaXhEb21haW4uYwo6CgogICB1c2Ugc2l6ZV90IHdoZW4gc29ja2xlbl90IGlzIG5vdCBhdmFpbGFibGUKICAgCjIwMDItMDUtMDYgMTU6NDkgIGhhcmRha2VyCgogICAqIGNvbmZpZ3VyZSwgYWNjb25maWcuaCwgY29uZmlnLmguaW4sIGNvbmZpZ3VyZS5pbgogICAoVjQtMi1wYXRjaGVzLlszLDcsMSwyXSksIGFjY29uZmlnLmgsIGNvbmZpZ3VyZSwKICAgY29uZmlndXJlLmluLCBpbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLmluOgoKICAgdXNlIHNpemVfdCB3aGVuIHNvY2tsZW5fdCBpcyBub3QgYXZhaWxhYmxlCiAgIAoyMDAyLTA1LTA2IDE1OjExICBoYXJkYWtlcgoKICAgKiBhZ2VudC9taWJncm91cC91Y2Qtc25tcC86IG1lbW9yeV9ocHV4LmMsIG1lbW9yeV9ocHV4LmgKLCB2bXN0YXRfaHB1eC5jLCB2bXN0YXRfaHB1eC5oOgoKICAgcnVuIGluZGVudAogICAKMjAwMi0wNS0wNiAxNToxMCAgaGFyZGFrZXIKCiAgICogYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvOiBtZW1vcnlfaHB1eC5jLCBtZW1vcnlfaHB1eC5oCiwgdm1zdGF0X2hwdXguYywgdm1zdGF0X2hwdXguaDoKCiAgIFBhdGNoZXMgIzU1MTkxNCsgZnJvbSBHYXJ5IEVkd2FyZHMgdG8gc3VwcG9ydCBocHV4MTEgZm9yIG1lbW9yeSBhbmQgdm1zdGF0IG1vZHVsZXMKICAgCjIwMDItMDUtMDYgMTU6MDcgIGhhcmRha2VyCgogICAqIGFnZW50L21pYmdyb3VwL3VjZF9zbm1wLmg6CgogICBhZGQgbmV3IGhwdXggbW9kdWxlcwogICAKMjAwMi0wNS0wNiAxNDozNCAgaGFyZGFrZXIKCiAgICogUkVBRE1FOgoKICAgbmV3IGNvbnRyaWJ1dG9ycy4KICAgCjIwMDItMDUtMDYgMTQ6MzIgIGhhcmRha2VyCgogICAqIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgsIG1hbi9zbm1wY21kLjEuZGVmCiwgc25tcGxpYi9taWIuYzoKCiAgIFBhdGNoICM1NTE0ODk6IEZyb20gSmVmZnJleSBXYXRzb24gdG8gYWRkIGEgLVEgb3B0aW9uIGZvciBxdWljayBidXQgdy8gYW4gJz0nCiAgIAoyMDAyLTA1LTA2IDE0OjI4ICBoYXJkYWtlcgoKICAgKiBtYW4vc25tcGQuMS5kZWY6CgogICBjaGFuZ2UgLUQgZG9jdW1lbnRhdGlvbiB0byByZWZsZWN0IGN1cnJlbnQgY29kZS4KICAgCjIwMDItMDUtMDYgMTQ6MjcgIGhhcmRha2VyCgogICAqIGFnZW50L2FnZW50X2hhbmRsZXIuYzoKCiAgIG1pc2Mgc21hbGwgYnVncyBhbmQgZXJyb3IgbWVzc2FnZSB3b3JkaW5nIGZpeGVzLgogICAKMjAwMi0wNS0wNiAwOTozNyAgaGFyZGFrZXIKCiAgICogYWdlbnQvbWliZ3JvdXAvc211eC86IHNtdXguYyAoVjQtMi1wYXRjaGVzLjkpLCBzbXV4LmM6CgogICBidWcgIzU0NzAxMDogZml4IHNtdXggYXV0aCBidWcgYXMgcmVwb3J0ZWQgYW5kIGZpeGVkIGJ5IFN0ZWZhbiBSYWRtYW4KICAgCjIwMDItMDUtMDEgMjM6MDEgIHJzdG9yeQoKICAgKiBsb2NhbC9taWIyYy5hcnJheS11c2VyLmNvbmY6CgogICB0d2Vha3MgZm9yIHVwZGF0ZSB0byB0YWJsZV9hcnJheQogICAKMjAwMi0wNS0wMSAyMzowMCAgcnN0b3J5CgogICAqIGFnZW50L01ha2VmaWxlLmluOgoKICAgYWRkIG9iamVjdF9tb25pdG9yIHN0dWZmCiAgIAoyMDAyLTA1LTAxIDIyOjQ2ICByc3RvcnkKCiAgICogc25tcGxpYi9NYWtlZmlsZS5pbjoKCiAgIGFkZCBjaGVja192YXJiaW5kIHN0dWZmCiAgIAoyMDAyLTA1LTAxIDIyOjQ1ICByc3RvcnkKCiAgICogaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaCwKICAgc25tcGxpYi9jaGVja192YXJiaW5kLmM6CgogICBjb252ZW5pZW5jZSBmdW5jdGlvbnMgZm9yIHZhbGlkYXRpb24gdmFicmluZCBpbmZvCiAgIAoyMDAyLTA1LTAxIDIyOjQzICByc3RvcnkKCiAgICogYWdlbnQvaGVscGVycy90YWJsZV9hcnJheS5jLAogICBpbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2FycmF5Lmg6CgogICBkbyBJIHJlYWxseSBoYXZlIHRvIGRvIHRoaXM/IHNpZ2guIE9rLCByZW5hbWUgZGVidWcgdG9rZW47IHJldmFtcCBsb2dpYyB0bwogICBtb2RpZnkgcm93cyBpbiBwbGFjZSwga2VlcGluZyB1bmRvIGluZm8gKHZzIGFsd2F5cyBjaGFuZ2luZyBhIGNvcHkgb2YgYSByb3cKICAgYW5kIHN3YXBwaW5nIHJvd3Mgd2hlbiBzZXQgY29tcGxldGVkIHN1Y2Nlc3NmdWxseSkgdG8gYWxsb3cgZXh0ZXJuYWwgY29kZQogICB0byBrZWVwIHBvaW50ZXJzIHRoYXQgZG9uJ3QgZGlzYXBwZWFyIG9uIHRoZW07IGFkZCBhIGZldyBjYWxsYmFja3MsIGluY2x1ZGluZwogICByb3dfY29tcGFyZSwgc28gdGFibGVfYXJyYXkgY2FuIG1haW50YWluIHRoZSBzZWNvbmRhcnkgaW5kZXggdHJlZTsgZG9uJ3QgY2FsbAogICBjYW5fYWN0aXZhdGUvY2FuX2RlbGV0ZSB1bmxlc3Mgd2UgYXJlIGFjdHVhbGx5IHRyeWluZyB0byBhY3RpdmF0ZS9kZWxldGUgcm93OwogICBhZGQgc2tlbGV0b24gKGlmZGVmJ2Qgb3V0KSBjb2RlIGZvciBjb29wZXJhdGl2ZSBub3RpZmljYXRpb25zIG9mIHJvdyBldmVudHM7CiAgIHVwZGF0ZSBjaGFuZ2luZyBhcnJheSBpbiBjb21taXQgJiB1bmRvIGNhc2VzLCBub3QganVzdCBjb21taXQ7IGNoYW5nZSB0eXBkZWZzCiAgIGZvciBhIGZldyBjYWxsYmFjayBwb2ludGVyczsgdW1tbW0uLi4gSSAqdGhpbmsqIHRoYXQncyBpdC4uLi46LSkKICAgCjIwMDItMDUtMDEgMTc6MzAgIGhhcmRha2VyCgogICAqIHBlcmwvT0lELzogT0lELnBtLCBPSUQueHMsIHRlc3QucGw6CgogICBBZGQgaW5kZXggYnVpbGRpbmcgdG8gdGhlICsgb3BlcmF0b3IuCiAgIAoyMDAyLTA1LTAxIDA5OjUyICBoYXJkYWtlcgoKICAgKiBwZXJsLzogT0lEL09JRC5wbSwgT0lEL09JRC54cywgYWdlbnQvTWFrZWZpbGUuUEwKLCBhZ2VudC9hZ2VudC5wbSwgYWdlbnQvYWdlbnQueHMsIGFnZW50L3Rlc3QucGwKLCBhZ2VudC90eXBlbWFwOgoKICAgTWFrZSBnZXRPSUQgZm9yIHJlcXVlc3RzIHJldHVybmVkIGEgTmV0U05NUDo6T0lEIGJsZXNzZWQgcmVmZXJlbmNlLgogICBJJ20gbm90IGhhcHB5IGFib3V0IGhvdyB0aGlzIGlzIGRvbmUsIGJ1dCBhbGwgYXR0ZW1wdHMgdG8gZG8gaXQKICAgY29ycmVjdGx5IG9ubHkgbGVmdCBtZSBpbiBjb25mdXNpb24uCiAgIAoyMDAyLTA1LTAxIDA5OjMxICBoYXJkYWtlcgoKICAgKiBhZ2VudC9taWJncm91cC9taWJJSS92YWNtX3ZhcnMuYywKICAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBBQUw1UFZDRG9tYWluLmgsCiAgIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oLAogICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaCwKICAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgsCiAgIHNubXBsaWIvc25tcEFBTDVQVkNEb21haW4uYywgc25tcGxpYi9zbm1wVENQSVB2NkRvbWFpbi5jCiwgc25tcGxpYi9zbm1wVURQSVB2NkRvbWFpbi5jLCBzbm1wbGliL3NubXBVbml4RG9tYWluLmMKOgoKICAgQ2hhbmdlIHRoZSBkb21haW4gT0lEcyB0byBwb2ludCB0byB0aGUgbmV0LXNubXAgZG9tYWlucyBjcmVhdGVkIGJ5IERhdmUuCiAgIFRoaXMgZml4ZXMgYnVnICM1NDQyNDUgYXMgd2VsbC4KICAgCjIwMDItMDUtMDEgMDk6MzAgIGhhcmRha2VyCgogICAqIE1ha2VmaWxlLmluOgoKICAgQWRkIHRoZSBPSUQgcGVybCBtb2R1bGUgdG8gdGhlIGxpc3Qgb2YgbW9kdWxlcy4KICAgCjIwMDItMDUtMDEgMDc6NDUgIGhhcmRha2VyCgogICAqIG1pYnMvOiBVQ0QtU05NUC1NSUIudHh0IChWNC0yLXBhdGNoZXMuMCksIFVDRC1TTk1QLU1JQi50eHQ6CgogICByZW1vdmUgb2xkIChhbmQgY29uZmxpY3Rpbmcgd2l0aCB0cmFwcykgdHJhbnNwb3J0IGRvbWFpbiBPSURzCiAgIAoyMDAyLTA1LTAxIDA2OjE5ICBkdHMxMgoKICAgKiBtYW4vOiBzbm1wYnVsa2dldC4xLmRlZiwgc25tcGJ1bGt3YWxrLjEuZGVmLAogICBzbm1wY21kLjEuZGVmLCBzbm1wZGVsdGEuMSwgc25tcGdldC4xLmRlZiwKICAgc25tcHNldC4xLmRlZiwgc25tcHN0YXR1cy4xLmRlZiwgc25tcHRlc3QuMS5kZWYsCiAgIHNubXB3YWxrLjEuZGVmOgoKICAgQWRkIHR5cGUgdGFncyAiU1RSSU5HOiAiIGFuZCAiSU5URUdFUjogIiB0byBleGFtcGxlIG91dHB1dC4KICAgQWRkIGV4cGxpY2l0IHNldHRpbmcgb2YgcHJvdG9jb2wgdmVyc2lvbiB0byBleGFtcGxlIGNvbW1hbmRzLgogICAKMjAwMi0wNS0wMSAwMzozNCAgamJwbgoKICAgKiBhZ2VudC9taWJncm91cC9SbW9uLzogYWd1dGlsLmMsIGFndXRpbC5oLAogICBhZ3V0aWxfYXBpLmgsIGFsYXJtLmMsIGFsYXJtLmgsIGV2ZW50LmMsCiAgIGV2ZW50LmgsIGhpc3RvcnkuYywgaGlzdG9yeS5oLCByb3dfYXBpLmgsCiAgIHJvd3MuYywgcm93cy5oLCBzdGF0aXN0aWNzLmMsIHN0YXRpc3RpY3MuaDoKCiAgICAgLSByZW1vdmUgQ1ZTIExvZzogZW50cmllcyB3aGljaCBhcmUgY2F1c2luZyBwcm9ibGVtcyBzaW5jZSB0aGV5IGFyZQogICAgICAgZW1iZWRkZWQgaW4gYSBjb21tZW50LCBidXQgc29tZSBvZiB0aGUgbG9nIGVudHJpZXMgY29udGFpbiBjb21tZW50CiAgICAgICBkZWxpbWl0ZXJzLgogICAKMjAwMi0wNC0zMCAyMjoxNSAgcnN0b3J5CgogICAqIGFnZW50L3NubXBkLmM6CgogICByZW1vdmUgbmV0c25tcF9wcm9jZXNzaW5nX3NldCwgaXQgbGl2ZXMgaW4gc25tcF9hZ2VudC5jCiAgIAoyMDAyLTA0LTMwIDIyOjEzICByc3RvcnkKCiAgICogaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaCwgc25tcGxpYi9zbm1wLXRjLmMKOgoKICAgcmVtb3ZlIHVudXNlZCBwYXJhbWV0ZXI7IGFsbG93IE5PTkUgYXMgb2xkIHZhbHVlIGZvciBzdG9yYWdlIHR5cGUgdHJhbnN0aW9ucwogICAKMjAwMi0wNC0zMCAyMjoxMiAgcnN0b3J5CgogICAqIGluY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGUuaDoKCiAgIHJlbW92ZSBvdmVybHkgY29tcGxleCBtYWNybyBzdHVmZiBmb3Igcm93c3RhdHVzL3N0b3JhZ2V0eXBlCiAgIAoyMDAyLTA0LTMwIDA5OjI4ICBoYXJkYWtlcgoKICAgKiBwZXJsL09JRC86IE1ha2VmaWxlLlBMLCBPSUQucG0sIE9JRC54cywgUkVBRE1FCiwgdGVzdC5wbDoKCiAgIC0gYWxsb3cgY29udmVyc2lvbnMgdG8gYW4gYXJyYXkgKG5lZWRzIHRvIGJlIHRpZWQgc3RpbGwpLgogICAtIGRvY3VtZW50YXRpb24uCiAgIAoyMDAyLTA0LTMwIDA4OjE1ICBqYnBuCgogICAqIGFnZW50Lzogc25tcGQuYyAoVjQtMi1wYXRjaGVzLjMpLCBzbm1wZC5jOgoKICAgICAtIGZpeCBidWcgIzU0NTc3NSwgcmVwb3J0ZWQgYnkgRGF2ZSBEZW5zb24sIHdoZXJlYnkgdGhlIFBJRCBvZiBhbgogICAgICAgYWxyZWFkeS1ydW5uaW5nIHNubXBkIHdvdWxkIGJlIG92ZXJ3cml0dGVuIGJ5IHN0YXJ0aW5nIGEgbmV3IHNubXBkCiAgICAgICAod2hpY2ggd291bGQgdGhlbiBleGl0LCBsZWF2aW5nIHRoZSBvcmlnaW5hbCBzbm1wZCBydW5uaW5nIGFuZCB0aGUKICAgICAgIHdyb25nIFBJRCBpbiB0aGUgZmlsZSkuICBTb2x1dGlvbiBpcyBub3QgdG8gd3JpdGUgdGhlIFBJRCB1bnRpbCB3ZQogICAgICAgaGF2ZSBzdWNjZXNzZnVsbHkgb3BlbmVkIGFsbCBvdXIgc29ja2V0cy4KICAgCjIwMDItMDQtMzAgMDc6MjMgIGhhcmRha2VyCgogICAqIHBlcmwvT0lELzogLmN2c2lnbm9yZSwgQ2hhbmdlcywgTUFOSUZFU1QsCiAgIE1ha2VmaWxlLlBMLCBPSUQucG0sIE9JRC54cywgUkVBRE1FLAogICB0ZXN0LnBsLCB0eXBlbWFwOgoKICAgT0lEIHBlcmwgbW9kdWxlIHNvIHlvdSBjYW4gZG8gc2ltcGxlIE9JRCBtYW5pcHVsYXRpb25zIHdpdGhpbiBwZXJsIGVhc2lseToKICAgICAtIEV4YW1wbGU6ICBuZXcgTmV0U05NUDo6T0lEKCdpbnRlcmZhY2VzJykgPiBuZXcgTmV0U05NUDo6T0lEKCdzeXN0ZW0nKQogICAKMjAwMi0wNC0yOSAxNjo1MiAgaGFyZGFrZXIKCiAgICogYWdlbnQvbWliZ3JvdXAvdmVyc2lvbnRhZzoKCiAgIHJlZ2V4cCBmaXggZm9yIHdoaXRlIHNwYWNlIGNoZWNrcyBpbiBpbmRlbnQgZm9ybWF0dGVkIGNvZGUKICAgCjIwMDItMDQtMjkgMTY6NDcgIGhhcmRha2VyCgogICAqIE1ha2VmaWxlLmluOgoKICAgcmVvcmRlciBwZXJsIG1vZHVsZSBuYW1lcyB0byByZWZsZWN0IChuZXcpIGRlcGVuZGVuY2llcy4KICAgCjIwMDItMDQtMjkgMDk6NDIgIGhhcmRha2VyCgogICAqIHBlcmwvU05NUC90L21pYi50OgoKICAgZml4IGEgZmV3IHdhcm5pbmdzIG9uIGZhaWxlZCB0ZXN0cyAoanVzdCBzY3JlZW4gY2xlYW51cHMpCiAgIAoyMDAyLTA0LTI5IDA5OjQxICBoYXJkYWtlcgoKICAgKiBwZXJsL1NOTVAvOiBNYWtlZmlsZS5QTCwgU05NUC5wbToKCiAgIE1ha2UgdGhlIHBlcmwgbW9kdWxlIHJlc3BlY3Qgc25tcC5jb25mIHNldHRpbmdzIChmaW5hbGx5KS4KICAgICAtIE5vdyByZXF1aXJlcyBhIGRlcGVuZGVuY3kgb24gdGhlIE5ldFNOTVA6OmRlZmF1bHRfc3RvcmUgbW9kdWxlIHRob3VnaC4KICAgCjIwMDItMDQtMjcgMDg6MTkgIHJzdG9yeQoKICAgKiBhZ2VudC9zbm1wX2FnZW50LmM6CgogICBkb24ndCBwcm9jZXNzIHNldCByZXF1ZXN0IHRpbGwgZGVsZWdhdGVkIHJlcXVlc3RzIGFyZSBjb21wbGV0ZSwgYW5kIHF1ZXVlCiAgIGFueSBvdGhlciByZWNlaXZlZCBwYWNrZXRzIHVudGlsIGEgc2V0IGhhcyBjb21wbGV0ZWQgcHJvY2Vzc2luZy4KICAgCjIwMDItMDQtMjcgMDg6MTAgIHJzdG9yeQoKICAgKiBzbm1wbGliL3NubXBfYXBpLmM6CgogICBjbGVhbiB1cCBjb21tZW50cyBtdW5nZWQgYnkgaW5kZW50CiAgIAoyMDAyLTA0LTI3IDA4OjA4ICByc3RvcnkKCiAgICogYWdlbnQvbWliZ3JvdXAvYWdlbnR4L3N1YmFnZW50Lmg6CgogICBhZGQgbWlzc2luZyBwcm90b3R5cGUgdG8gZml4IGNvbXBpbGVyIHdhcm5pbmcKICAgCjIwMDItMDQtMjcgMDg6MDcgIHJzdG9yeQoKICAgKiBhZ2VudC86IG9iamVjdF9tb25pdG9yLmMsIGhlbHBlcnMvdGFibGUuYywKICAgaGVscGVycy90YWJsZV9hcnJheS5jOgoKICAgaWZkZWYgZ3ltbmFzdGljcyB0byBtYWtlIHN1cmUgYXNzZXJ0cyBhcmUgb25seSBjb21waWxlZCBpbiBvbmx5IGlmIGV4cGxpY2l0eQogICByZXF1ZXN0ZWQKICAgCjIwMDItMDQtMjYgMjE6MjYgIHJzdG9yeQoKICAgKiBhZ2VudC9taWJncm91cC9ob3N0L2hyX3N0b3JhZ2UuYzoKCiAgIGZpeCB1bmJhbGFuY2VkIGVuZGlmIG9uIGxpbnV4LiBob3BlIEkgZGlkbid0IGJyZWFrIGFueXRoaW5nIGVsc2UuCiAgIAoyMDAyLTA0LTI2IDE5OjE0ICByc3RvcnkKCiAgICogYWdlbnQvc25tcGQuYzoKCiAgIGZpeCB1bnVzZWQgdmFyIHdhcm5pbmcgZm9yICF3aW5kb3dzCiAgIAoyMDAyLTA0LTI2IDE0OjMzICBoYXJkYWtlcgoKICAgKiBhZ2VudC9taWJncm91cC9SbW9uL2V2ZW50LmMsCiAgIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmg6CgogICBmaXggT0lEX0xFTkdUSCBkZWZpbml0aW9ucwogICAKMjAwMi0wNC0yNiAxMDo1MyAgaGFyZGFrZXIKCiAgICogTWFrZWZpbGUuaW4sIHBlcmwvQVNOL01ha2VmaWxlLlBMLAogICBwZXJsL2FnZW50L01ha2VmaWxlLlBMLCBwZXJsL2FnZW50L2RlZmF1bHRfc3RvcmUvTWFrZWZpbGUuUEw6CgogICBmaXggLS13aXRoLXBlcmwtbW9kdWxlcyBpbiBtYWtlZmlsZXMuICBNYWtlIGV2ZXJ5dGhpbmcgdXNlCiAgIG5ldC1zbm1wLWNvbmZpZywgLi4uCiAgIAoyMDAyLTA0LTI2IDEwOjI3ICBoYXJkYWtlcgoKICAgKiBwZXJsL1NOTVAvOiBNYWtlZmlsZS5QTCwgUkVBRE1FLCBTTk1QLnBtOgoKICAgLSBDbGVhbnVwLgogICAtIE1ha2UgYnVpbGRhYmxlIGZyb20gd2l0aGluIHRoZSBzb3VyY2UuCiAgIC0gQ2hhbmdlIGRvY3VtZW50YXRpb24gcmVmZXJlbmNlcyBmb3IgdWNkLXNubXAKICAgLSBDaGFuZ2UgY29udGFjdCBsb2NhdGlvbiB0byBuZXQtc25tcC11c2VycyAocGVyIEpvZSdzIGFncmVlbWVudCkKICAgCjIwMDItMDQtMjYgMTA6MTkgIGhhcmRha2VyCgogICAqIHBlcmwvZGVmYXVsdF9zdG9yZS86IE1BTklGRVNULCBNYWtlZmlsZS5QTCwgUkVBRE1FLCAKCWRlZmF1bHRfc3RvcmUucG0sIHRlc3QucGw6CgogICAtIGNsZWFudXAuCiAgIC0gVXNlIG5ldC1zbm1wLWNvbmZpZyB0byBmaW5kIGxpYnJhcnksIGV0Yy4KICAgLSBNYWtlIGJ1aWxkYWJsZSBmcm9tIHdpdGhpbiB0aGUgc291cmNlLgogICAtIGEgZmV3IG1vcmUgdGVzdHMgYWRkZWQKICAgLSB1c2UgY29ycmVjdCBsaWJyYXJpZXMKICAgLSBhZGQgZG9jdW1lbnRhdGlvbgogICAKMjAwMi0wNC0yNiAwNDoyMiAgZHRzMTIKCiAgICogY29uZmlndXJlLCBjb25maWd1cmUuaW46CgogICBFeHRyYWN0aW5nIHRoZSB2ZXJzaW9uIGZyb20gJ3NubXBsaWIvc25tcF92ZXJzaW9uLmMnIG5lZWRzIHRvIHRha2UgYWNjb3VudAogICBvZiBibGFuayBzcGFjZS4gIFJlcG9ydGVkIGJ5IFN0ZWZhbiBSYWRtYW4gKEJ1ZyAjNTQ3Mzc5KQogICAKMjAwMi0wNC0yNiAwNDoxMSAgZHRzMTIKCiAgICogYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvOiBtZW1vcnkuYyAoVjQtMi1wYXRjaGVzLjgpLCBtZW1vcnkuYwo6CgogICBIYW5kbGUgbWVtb3J5IHZhbHVlcyA+IDMyYml0IChsYXRjaGluZyBhdCAyXjMyLTEpCiAgIFBhdGNoICM1NDg2NjMgZnJvbSBSb2IgTXllcnMKICAgCjIwMDItMDQtMjYgMDM6NTUgIGR0czEyCgogICAqIGFnZW50L3NubXBkLmM6CgogICBSZW1vdmUgcmVkdW5kYW50ICdJbnZhbGlkIG9wdGlvbicgbWVzc2FnZSwgc2luY2UgdGhpcyBpcyB0eXBpY2FsbHkKICAgcmVwb3J0ZWQgYnkgZ2V0b3B0KCkuICAoU3VnZ2VzdGVkIGJ5IEFuZHJldyBSdWNrZXIgSm9uZXMgLSBwYXRjaCAjNTQ4NzQ4ICkKICAgCjIwMDItMDQtMjYgMDM6NTEgIGR0czEyCgogICAqIGFnZW50L3NubXBkLmM6CgogICBBZGQgJ3YnIHRvIHRoZSBsaXN0IG9mIHZhbGlkIG9wdGlvbnMgKHBhdGNoICM1NDg3NDgpCiAgIFRoYW5rcyB0byBBbmRyZXcgUnVja2VyIEpvbmVzLgogICAKMjAwMi0wNC0yNiAwMzozNiAgZHRzMTIKCiAgICogUkVBRE1FLmhwdXgxMSwgYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9zdG9yYWdlLmMsCiAgIGFnZW50L21pYmdyb3VwL2hvc3QvaHJfc3lzdGVtLmMsCiAgIGFnZW50L21pYmdyb3VwL21pYklJL3Zhcl9yb3V0ZS5jLAogICBpbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9ocHV4LmgsCiAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL2xvYWRhdmUuYywKICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvbWVtb3J5LmMsCiAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL21lbW9yeS5oOgoKICAgQXBwbHkgSm9oYW5uZXMgU2NobWlkdC1GaXNjaGVyJ3MgaW1wcm92ZWQgSFAtVVggMTEgcGF0Y2gKICAgKCM1MzA3MjQpIHRvIHRoZSBtYWluIHY1IGxpbmUsIGFzIHdlbGwgYXMgdGhlIHY0LTIgYnJhbmNoLgogICBUaGUgY29kZSBub3cgY29tcGlsZXMgY2xlYW5seSB1bmRlciBIUC1VWCAxMSB1c2luZyBnY2MuCiAgIAoyMDAyLTA0LTI1IDA3OjE5ICBoYXJkYWtlcgoKICAgKiBSRUFETUUsIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS92YWNtLmgsCiAgIHNubXBsaWIvdmFjbS5jOgoKICAgUGF0Y2ggZnJvbSBBeGVsIEtpdHRlbmJlcmcgdG8gZml4IHBvc3NpYmxlIHZhcmlhYmxlIG5hbWUgY2xhc2gKICAgCjIwMDItMDQtMjQgMjI6MzkgIHJzdG9yeQoKICAgKiBhZ2VudC9vYmplY3RfbW9uaXRvci5jOgoKICAgaGFuZGxlIGNhbGxiYWNrcyBzZW5kaW5nIG5ldyBub3RpZmljYXRpb25zICh3aGlsZSBwcm9jZXNzaW5nIG5vdGlmaWNhdGlvbnMpCiAgIAoyMDAyLTA0LTI0IDIxOjM1ICByc3RvcnkKCiAgICogaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9vYmplY3RfbW9uaXRvci5oOgoKICAgaGVhZGVyIGZvciBuZXcgZnVjbnRpb25zIGZvciBtb25pdG9yaW5nIG9iamVjdHMKICAgCjIwMDItMDQtMjQgMjE6MzQgIHJzdG9yeQoKICAgKiBhZ2VudC9vYmplY3RfbW9uaXRvci5jOgoKICAgbmV3IGZ1bmN0aW9ucyBmb3IgbW9uaXRvcmluZyBvYmplY3QgdmFsdWVzCiAgIAoyMDAyLTA0LTI0IDE1OjAyICBoYXJkYWtlcgoKICAgKiBhZ2VudC9taWJncm91cC91Y2Qtc25tcC92bXN0YXQuYzoKCiAgIC9wcm9jL3N0YXQgY2FuIGJlIGxhcmdlciB0aGFuIDEwMjQKICAgCjIwMDItMDQtMjQgMDY6MTkgIGR0czEyCgogICAqIHNubXBsaWIvTWFrZWZpbGUuaW46CgogICBJbnN0YWxsIHRoZSBtaXNzaW5nICdtZDUuaCcgaGVhZGVyIGZpbGUuCiAgIAoyMDAyLTA0LTIzIDA5OjQzICByc3RvcnkKCiAgICogYWdlbnQvaGVscGVycy86IHRhYmxlLmMsIHRhYmxlX2FycmF5LmM6CgogICByZW1vdmUgbGFzdCBvZiB0aGUgI3dhcm5pbmdzLCBhZGQgeHh4LXJrcyBpZiBuZWNlc3NhcnkKICAgCjIwMDItMDQtMjMgMDc6NTMgIGhhcmRha2VyCgogICAqIGFnZW50L2hlbHBlcnMvdGFibGVfYXJyYXkuYzoKCiAgIHJlbW92ZSB3YXJuaW5ncwogICAKMjAwMi0wNC0yMiAxOToxMSAgcnN0b3J5CgogICAqIGFnZW50L21pYmdyb3VwL2lwZndjaGFpbnMvUkVBRE1FOgoKICAgdXBkYXRlIFVSTCB0byB1c2UgZnJlZW5tcC5jb20gbWlycm9yICh1bmxlc3Mgc29tZW9uZSBrbm93cyBhIGJldHRlciBwbGFjZT8pCiAgIAoyMDAyLTA0LTIyIDE0OjEwICByc3RvcnkKCiAgICogc25tcGxpYi9taWIuYzoKCiAgIGFwcGx5IGRvY3VtZW50YXRpbiBwYXRjaCBmcm9tIEF4ZWwgS2l0dGVuYmVyZ2VyIDxBeGVsLktpdHRlbmJlcmdlckBtYXh4aW8uY29tPgogICAKMjAwMi0wNC0yMiAxMzo1MCAgcnN0b3J5CgogICAqIGxvY2FsL21pYjJjLmFycmF5LXVzZXIuY29uZjoKCiAgIHJlbW92ZSBleHRyYSBAZW5kQCAoc3VyZSB3b3VsZCBiZSBuaWNlIGlmIG1pYjJjIHdvdWxkIGNoZWNrIGZvciB1bmJhbGFuY2VkCiAgIEBlbmRAcykKICAgCjIwMDItMDQtMjIgMDk6NDggIHJzdG9yeQoKICAgKiBzbm1wbGliL29pZF9hcnJheS5jOgoKICAgdXBkYXRlIGZ1bmN0aW9uIG5hbWVzIHRvIG1hdGNoIGhlYWRlciAobm8gbWl4ZWQgY2FzZSkKICAgCjIwMDItMDQtMjIgMDg6MTEgIGhhcmRha2VyCgogICAqIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2RlYnVnLmg6CgogICBmaXggYnVnICM1NDcxMTA6IHByb3Blcmx5IHNwZWxsIGRlZmluZQogICAKMjAwMi0wNC0yMSAxNjo0NCAgaGFyZGFrZXIKCiAgICogYWdlbnQvbWliZ3JvdXAvbWliSUkvc3lzT1JUYWJsZS5jOgoKICAgYWRkIHN0YXRpYyB0byBhIHJldHVybmVkIHZhcmlhYmxlCiAgIAoyMDAyLTA0LTIxIDE2OjQyICBoYXJkYWtlcgoKICAgKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbjoKCiAgIGZpeCAtLXdpdGgtcGVybC1tb2R1bGVzCiAgIAoyMDAyLTA0LTIxIDExOjM3ICByc3RvcnkKCiAgICogc25tcGxpYi9zbm1wX3ZlcnNpb24uYzoKCiAgIDUuMC5wcmUzIC0+IDUuMDsgKEknbSBzdXJlIHRoZXJlIGFyZSBvdGhlciBwbGFjZXMgdGhpcyBuZWVkcyB0byBjaGFuZ2UsCiAgIGJ1dCBJIHdhbnRlZCB0byBnZXQgdGhlIGZpcnN0IHBvc3QgNS4wIGNoZWNraW4uLi46LSkKICAgCjIwMDItMDQtMjAgMDA6MzcgIGhhcmRha2VyCgogICAqIEZBUSwgc2Vkc2NyaXB0LmluLCBwZXJsL1NOTVAvU05NUC5wbToKCiAgIC0gKHNubXBsaWIvc25tcF92ZXJzaW9uLmMgc2Vkc2NyaXB0LmluKTogdmVyc2lvbiB0YWcgKCA1LjAgKQoJCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCkNoYW5nZXM6IFY0LjIgLT4gVjUuMAoKMjAwMi0wNC0yMCAwMDoyNyAgaGFyZGFrZXIKCiAgICogZXZlcnl0aGluZzoKCiAgIHNldCBhbGwgQ1ZTL1JDUyByZXZpc2lvbiBjb250cm9sIG51bWJlcnMgdG8gNS4wCgkKMjAwMi0wNC0yMCAwMDowNyAgaGFyZGFrZXIKCiAgICogZXZlcnl0aGluZzoKCQogICBXaGl0ZSBzcGFjZSwgb2ggZ2xvcmlvdXMgd2hpdGUgc3BhY2UuCiAgIEhvdyBncmVhdCBvdXIgdGhvdWdoPwogICBUaGUgY29kZSBpcyBmaW5lLgogICBXZSBhZ3JlZSBvbiBmdW5jdGlvbmFsaXR5IGVhc2lseS4KICAgV2hhdCByZWFsbHkgdHJvdWJsZXMgdXM/CiAgIFNvbWV0aGluZyB3ZSBjYW4ndCBzZWUuCiAgIFNvbWV0aGluZyBiZXR3ZWVuIHRoZSBjb2RlLgogICBXZSBib3cgZG93biB0byB5b3VyIG1hZ25pZmljZW5jZSwKICAgRm9yIHlvdSBhcmUgZXZlcnl3aGVyZSwKICAgQmV0d2VlbiBldmVyeXRoaW5nLgogICBQcmV0dHkgbm90aGluZ25lc3MgeW91IGFyZS4KCQoyMDAyLTA0LTIwIDAwOjAxICBoYXJkYWtlcgoKICAgKiBjb25maWd1cmUgLCBjb25maWd1cmUuaW46CgogICB0dXJuIG9uIHVjZCBjb21wYXQgYnkgZGVmYXVsdC4KICAgCjIwMDItMDQtMjAgMDA6MDAgIGhhcmRha2VyCgogICAqIE5FV1M6CgogICBsYXN0IHVwZGF0ZXMKICAgCjIwMDItMDQtMTkgMjM6MzMgIGhhcmRha2VyCgogICAqIGFnZW50L21pYmdyb3VwL3Rlc3RkZWxheWVkLmg6CgogICByZW1vdmUgdGVzdGRlbGF5ZWQKICAgCjIwMDItMDQtMTkgMjM6MTggIGhhcmRha2VyCgogICAqIGFnZW50L21pYmdyb3VwL3V0aWxpdGllcy86IC5jdnNpZ25vcmUgLCAuY3ZzaWdub3JlOgoKICAgY3ZzIGlnbm9yZSBmaWxlCiAgIAoyMDAyLTA0LTE5IDIzOjE3ICBoYXJkYWtlcgoKICAgKiBhZ2VudC9zbm1wX3BlcmwuYzoKCiAgIGRvbid0IGRpZSBpZiBwZXJsIGRvZXNuJ3QgaW5pdC4KICAgCjIwMDItMDQtMTkgMjM6MDMgIGhhcmRha2VyCgogICAqIHBlcmwvU05NUC86IFJFQURNRSAsIFJFQURNRSAsIFNOTVAucG06CgogICBjaGFuZ2Ugd2FybmluZy4KICAgCjIwMDItMDQtMTkgMjI6MjkgIGhhcmRha2VyCgogICAqIGFnZW50L3NubXBfYWdlbnQuYzoKCiAgIGRvdWJsZSBjaGVjayB0aGF0IG11bHRpcGxlIGluc2VydHMgaW50byB0aGUgZGVsZWdhdGVkIGNoYWluIGRvbid0CiAgIGhhcHBlbiAocmVhZDogdGhleSBzaG91bGRuJ3QgYW55d2F5LCBidXQuLi4uLikuCiAgIAoyMDAyLTA0LTE5IDIyOjI5ICBoYXJkYWtlcgoKICAgKiBDb2RpbmdTdHlsZToKCiAgIHR5cGVkZWYgdXBkYXRlCiAgIAoyMDAyLTA0LTE5IDIyOjE2ICBoYXJkYWtlcgoKICAgKiBzbm1wbGliL3NubXBDYWxsYmFja0RvbWFpbi5jOgoKICAgRml4IHRoZSBjYWxsYmFjayBidWlsZCBob29rIHRvIHR1cm4gb2ZmIHRoZSBleHBlY3QgcmVzcG9uc2UgZmxhZyB3aGVuCiAgIG5vdCBhcHByb3ByaWF0ZS4KICAgCjIwMDItMDQtMTkgMTk6MDkgIHJzdG9yeQoKICAgKiBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX2FycmF5Lmg6CgogICBzcGVsbGluZyBtaXN0ZWFrOyByZW1vdmUgY2FwaXRhbCBsZXR0ZXJzIGluIGZ1bmN0aW9uIG5hbWVzCiAgIAoyMDAyLTA0LTE5IDE5OjA4ICByc3RvcnkKCiAgICogYWdlbnQvaGVscGVycy90YWJsZV9hcnJheS5jOgoKICAgdXBkYXRlIGZvciBmdW5jdGlvbiBuYW1lIGNoYW5nZWQgaW4gb2lkX2FycmF5LmgKICAgCjIwMDItMDQtMTkgMTg6MjAgIGhhcmRha2VyCgogICAqIGFnZW50L3NubXBfcGVybC5jOgoKICAgbWFrZSB0aGUgcGVybEluaXRGaWxlIGFuZCBkaXNhYmxlUGVybCB0b2tlbnMgcmVnaXN0ZXIgYXMgcHJlbWliIHN1Y2gKICAgdGhhdCB3aGVuIHBhc3NlZCBhcyBhIC0tRkxBRyBpdCdsbCBhY3R1YWxseSBkbyB0aGUgcmlnaHQgdGhpbmcgYW5kCiAgIGRpc2FibGUgdGhlIGxhdGVyICJwZXJsIiB0b2tlbiBoYW5kbGVycy4KICAgCjIwMDItMDQtMTkgMTc6MjkgIGhhcmRha2VyCgogICAqIE1ha2VmaWxlLmluICwgbWFuL01ha2VmaWxlLmluICwgbWFuL25ldHNubXBfYWdlbnQuMwogICAsIG1hbi9uZXRzbm1wX2J1bGtfdG9fbmV4dC4zICwgbWFuL25ldHNubXBfZGVidWcuMyAsCiAgIG1hbi9uZXRzbm1wX2V4YW1wbGVfc2NhbGFyX2ludC4zICwgbWFuL25ldHNubXBfaGFuZGxlci4zCiAgICwgbWFuL25ldHNubXBfaW5zdGFuY2UuMyAsCiAgIG1hbi9uZXRzbm1wX21pYl9oYW5kbGVyX21ldGhvZHMuMyAsIG1hbi9uZXRzbm1wX211bHRpcGxleGVyLjMKICAgLCBtYW4vbmV0c25tcF9vbGRfYXBpLjMgLCBtYW4vbmV0c25tcF9yZWFkX29ubHkuMyAsCiAgIG1hbi9uZXRzbm1wX3NlcmlhbGl6ZS4zICwgbWFuL25ldHNubXBfdGFibGUuMyAsCiAgIG1hbi9uZXRzbm1wX3RhYmxlX2FycmF5LjMgLCBtYW4vbmV0c25tcF90YWJsZV9kYXRhLjMgLAogICBtYW4vbmV0c25tcF90YWJsZV9kYXRhc2V0LjMgLCBtYW4vbmV0c25tcF90YWJsZV9pdGVyYXRvci4zCiAgICwgbWFuL25ldHNubXBfdG9kby4zOgoKICAgZG9jdW1lbnRhdGlvbi4gIENhbid0IGdldCBlbm91Z2guCiAgICAgLSBtYWtlIGRvY3Mgbm93IGluc3RhbGxzIG1hbiBwYWdlcyBpbnRvIHRoZSBtYW4gZGlyLCB3aGljaCBhcmUgdGhlbiBpbnN0YWxsZWQuCiAgIAoyMDAyLTA0LTE5IDE3OjE0ICBoYXJkYWtlcgoKICAgKiB0ZXN0aW5nL3Rlc3RzLzogVDExMWFnZW50eHNldCAsIFQxMjFwcm94eXNldDoKCiAgIENvcnJlY3QgZm9yIG5ldyBTVFJJTkcgcHJlZml4LgogICAKMjAwMi0wNC0xOSAxNzowMyAgaGFyZGFrZXIKCiAgICogUkVBRE1FOgoKICAgQWRkIEthdHN1aGlzYSBBQkUKICAgCjIwMDItMDQtMTkgMTc6MDMgIGhhcmRha2VyCgogICAqIHBlcmwvOiBBU04vQVNOLnhzICwgZGVmYXVsdF9zdG9yZS9kZWZhdWx0X3N0b3JlLnhzOgoKICAgZml4IGhlYWRlciBmaWxlcyBmb3IgbmV3IHBhdGhzLgogICAKMjAwMi0wNC0xOSAxNzowMCAgaGFyZGFrZXIKCiAgICogYWdlbnQvc25tcF92YXJzLmMgLCBhZ2VudC9taWJncm91cC9taWJJSS92YWNtX3ZhcnMuYwogICAsIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oICwKICAgbWFuL3NubXBkLmNvbmYuNS5kZWYgLCBzbm1wbGliL3NubXBVRFBJUHY2RG9tYWluLmM6CgogICBBcHBseSBwYXRjaCAjNTMyNTU1OiBpcHY2IGNvbTJzZWMgc3VwcG9ydCwgdGhhbmtzIHRvIEthdHN1aGlzYSBBQkUuCiAgIAoyMDAyLTA0LTE5IDE2OjE5ICBoYXJkYWtlcgoKICAgKiBhZ2VudC9hZ2VudF90cmFwLmMgLCBhZ2VudC9zbm1wX2FnZW50LmMgLAogICBhZ2VudC9taWJncm91cC9taWJJSS9zeXNPUlRhYmxlLmMgLAogICBhZ2VudC9taWJncm91cC9taWJJSS9zeXN0ZW1fbWliLmMgLAogICBpbmNsdWRlL25ldC1zbm1wL2FnZW50L3NubXBfYWdlbnQuaCAsCiAgIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oICwgc25tcGxpYi90b29scy5jOgoKICAgZml4IHN5c1VwVGltZSAoYW5kIHJlbGF0ZWQgZnVuY3Rpb25zKSB0byBoYW5kbGUgbXVjaCBsYXJnZXIgdXBUaW1lCiAgIHZhbHVlcyAoaWUsIGZpeCBzaWduZWQgaW50ZWdlciB3cmFwcGluZykuCiAgIAoyMDAyLTA0LTE5IDExOjM3ICBoYXJkYWtlcgoKICAgKiBtYW4vc25tcGQuY29uZi41LmRlZjoKCiAgIGRvY3VtZW50IGVtYmVkZGVkIHBlcmwgc3VwcG9ydC4KICAgCjIwMDItMDQtMTkgMTE6MzQgIGhhcmRha2VyCgogICAqIGNvbmZpZ3VyZSAsIGNvbmZpZ3VyZS5pbiAsIGFnZW50L01ha2VmaWxlLmluCiAgICwgYWdlbnQvc25tcF9wZXJsLmMgLCBhZ2VudC9zbm1wX3BlcmwucGwgLAogICBpbmNsdWRlL25ldC1zbm1wL2FnZW50L2RzX2FnZW50LmggLCBwZXJsL2FnZW50L01ha2VmaWxlLlBMOgoKICAgQWRkIHNvbWUgbmV3IHNubXBkLmNvbmYgdG9rZW5zIGZvciBjb250cm9sbGluZyBwZXJsIGJldHRlci4KICAgRml4IGVtYmVkZGVkIHBlcmwgc3VwcG9ydCBzbyBpdCBhY3R1YWxseSB3b3Jrcy4KICAgCjIwMDItMDQtMTkgMTE6MzIgIGhhcmRha2VyCgogICAqIHBlcmwvYWdlbnQvZGVmYXVsdF9zdG9yZS86IC5jdnNpZ25vcmUgLCBNYWtlZmlsZS5QTCAsCiAgIGRlZmF1bHRfc3RvcmUucG0gLCBkZWZhdWx0X3N0b3JlLnhzOgoKICAgQWRkZWQgbWlzc2luZyBhZ2VudCBkZWZhdWx0X3N0b3JlIHN0dWZmLiAgKHRoZXkgZXhpc3RlZCBvbiBteSBtYWNoaW5lLAogICBJIGRvbid0IGtub3cgd2h5IGV2ZXJ5b25lIGVsc2Ugd2FzIGhhdmluZyBwcm9ibGVtcykKICAgCjIwMDItMDQtMTkgMTA6MzAgIGhhcmRha2VyCgogICAqIGFnZW50L2hlbHBlcnMvdGFibGVfaXRlcmF0b3IuYzoKCiAgIFByb3RlY3QgYWdhaW5zdCB0aGluZ3MgdGhhdCBzaG91bGQgbmV2ZXIgZXZlciBoYXBwZW4KICAgCjIwMDItMDQtMTkgMDM6MTAgIGR0czEyCgogICAqIE1ha2VmaWxlLmluOgoKICAgPFNpZ2g+IEEgbGl0dGxlIGxlYXJuaW5nIGlzIGEgZGFuZ2Vyb3VzIHRoaW5nLgogICBBcHBseSB0aGUgcmVzdCBvZiB0aGUgcGF0Y2ggZnJvbSBBeGVsIC0gc29ycnkuCiAgIAoyMDAyLTA0LTE5IDAxOjQ5ICBkdHMxMgoKICAgKiBNYWtlZmlsZS5pbiAsIGRveHlnZW4uY29uZjoKCiAgIEhhbmRsZSBnZW5lcmF0aW5nIGRvY3VtZW5hdGlvbiB3aGVuIHNyY2RpciAhPSBjb25maWdkaXIKICAgKFBhdGNoIHN1cHBsaWVkIGJ5IEF4ZWwgS2l0dGVuYmVyZ2VyKQogICAKMjAwMi0wNC0xOCAxNzozOCAgaGFyZGFrZXIKCiAgICogc25tcGxpYi9zbm1wSVBYRG9tYWluLmM6CgogICBmaXggc25tcElQWERvbWFpbiAoYWdhaW4pCiAgIAoyMDAyLTA0LTE4IDE3OjMxICBoYXJkYWtlcgoKICAgKiBhZ2VudC9taWJncm91cC9hZ2VudHgvc3ViYWdlbnQuYzoKCiAgIFBhdGNoIGZyb20gVmlzaGFsIFZlcm1hOiBvbmx5IG9wZW4gc3ViYWdlbnQgY29ubmVjdGlvbnMgb25jZSBhdCBzdGFydHVwCiAgIAoyMDAyLTA0LTE4IDE3OjI4ICBoYXJkYWtlcgoKICAgKiBhZ2VudC9hZ2VudF9yZWdpc3RyeS5jOgoKICAgUGF0Y2ggZnJvbSBWaXNoYWwgVmVybWE6IGZvciBkb3duIHN1YmFnZW50IGNhc2VzLCBtYXJrIHJlZ2lzdHJhdGlvbnMgYXMgZGV0YWNoZWQKICAgCjIwMDItMDQtMTggMTc6MTcgIGhhcmRha2VyCgogICAqIHNubXBsaWIvc25tcF9hcGkuYzoKCiAgIGRlZmluZSBhIG1heGltdW0gcGFja2V0IHNpemUgd2UgY2FuIGFjY2VwdCB0byBwcm90ZWN0IGNlcnRhaW4gZXJyb3IKICAgY29uZGl0aW9ucyAoLTEgYWZ0ZXIgY29udmVyc2lvbiBpcyBub3cgdG9vIGxhcmdlKS4KICAgCjIwMDItMDQtMTggMTY6MjggIGhhcmRha2VyCgogICAqIGFjY29uZmlnLmg6CgogICBjaGFuZ2UgdGhlIGVudGVycHJpc2UgT0lEcyBpbiB0aGUgcHJvcGVyIHBsYWNlIChuZXQtc25tcC1jb25maWcuaC5pbgogICBpcyBnZW5lcmF0ZWQgZnJvbSB0aGlzIGZpbGUpLgogICAKMjAwMi0wNC0xOCAxMzo1MSAgaGFyZGFrZXIKCiAgICogY29uZmlndXJlICwgY29uZmlndXJlLmluICwgbmV0LXNubXAtY29uZmlnLmluOgoKICAgLSBBZGQgdHdvIG5ldyBvcHRpb25zIHRvIG5ldC1zbm1wLWNvbmZpZyBhcyByZXF1ZXN0ZWQgb24gdGhlIElSQyBjaGFubmVsLgogICAgIC0tY29uZmlndXJlLW9wdGlvbnMKICAgICAtLXNubXBkLW1vZHVsZS1saXN0CiAgIAoyMDAyLTA0LTE4IDExOjQzICByc3RvcnkKCiAgICogbWlicy9ORVQtU05NUC1BR0VOVC1NSUIudHh0OgoKICAgYWRkIG1pc3NpbmcgY29tbWEKICAgCjIwMDItMDQtMTggMDc6MzkgIGR0czEyCgogICAqIGNvbmZpZ3VyZSAsIGNvbmZpZ3VyZS5pbjoKCiAgIENhbGN1bGF0ZSB0aGUgbGVuZ3RoIG9mIHN1cHBsaWVkIGVudGVycHJpc2UgT0lEcyBjb3JyZWN0bHkKICAgKGFuZCB1c2UgYSBtb3JlIG1lYW5pbmdmdWwgb3V0cHV0IG1lc3NhZ2UpCiAgIAogICBTaGFtZSB0aGVzZSBzZXR0aW5ncyBhcmVuJ3QgY2FjaGVkIGZvciBsYXRlciByZS11c2UuLi4uCiAgIAoyMDAyLTA0LTE4IDA3OjE4ICBkdHMxMgoKICAgKiBhZ2VudC9zbm1wZC5jOgoKICAgTm90aWZ5IG9uIGFnZW50IHJlY29uZmlndXJhdGlvbi4KICAgCjIwMDItMDQtMTggMDc6MTYgIGR0czEyCgogICAqIGluY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmguaW46CgogICBVc2UgdGhlIE5ldC1TTk1QIG5vdGlmaWNhdGlvbnMgYnkgZGVmYXVsdCwgcmF0aGVyIHRoYW4gdGhlIHVjZGF2aXMgb25lcy4KICAgCjIwMDItMDQtMTggMDc6MDggIGR0czEyCgogICAqIG1pYnMvTkVULVNOTVAtQUdFTlQtTUlCLnR4dDoKCiAgIEZpeCB0aGUgdGFibGUtb2YtY29udGVudHMgc2VxdWVuY2UgZm9yIHRoZSBuc01vZHVsZVRhYmxlLCBhZGQgbm90aWZpY2F0aW9uCiAgIGRlZmluaXRpb25zIGZvciB0aGUgYWdlbnQsIGFuZCBkZWZpbmUgZ3JvdXBzIGZvciBldmVyeXRoaW5nLgogICAKMjAwMi0wNC0xOCAwMjo1MiAgZHRzMTIKCiAgICogc25tcGxpYi9taWIuYzoKCiAgIEJyaW5nIGludGVnZXIgYW5kIHN0cmluZyBvdXRwdXQgZm9ybWF0cyBpbnRvIGxpbmUgd2l0aCB0aGUgb3RoZXIgdHlwZXMKICAgYnkgcHJpbnRpbmcgYSB0eXBlIHRva2VuIGJlZm9yZSB0aGUgdmFsdWUgKHVubGVzcyBzdXByZXNzZWQgYnkgJ3F1aWNrIHByaW50JykKICAgVGhhbmtzIHRvIEVyaWsgZm9yIHRoZSBwYXRjaAogICAKMjAwMi0wNC0xOCAwMTo0NiAgZHRzMTIKCiAgICogRkFROgoKICAgUmVwbGFjZSB0aGUgZGxtb2QgJ1dIRVJFJyB3aXRoIHNvbWV0aGluZyBtb3JlIG1lYW5pbmdmdWwuLi4uCiAgIAoyMDAyLTA0LTE3IDEyOjEyICBoYXJkYWtlcgoKICAgKiBzbm1wbGliL3NubXBJUFhEb21haW4uYzoKCiAgIGRlZmluZSB0aGUgaXB4RG9tYWluIHZhcmlhYmxlcwogICAKMjAwMi0wNC0xNyAxMjoxMiAgaGFyZGFrZXIKCiAgICogYWdlbnQvbWliZ3JvdXAvZGlzbWFuL210ZVRyaWdnZXJUYWJsZS5jOgoKICAgRXJyb3IgY29uZGl0aW9uIHRlc3RzCiAgIAoyMDAyLTA0LTE3IDEwOjEwICBoYXJkYWtlcgoKICAgKiBhZ2VudC9hZ2VudF9yZWdpc3RyeS5jICwgYWdlbnQvc25tcF9hZ2VudC5jICwKICAgYWdlbnQvbWliZ3JvdXAvYWdlbnR4L21hc3Rlcl9hZG1pbi5jICwKICAgaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9oYW5kbGVyLmggLAogICBpbmNsdWRlL25ldC1zbm1wL2FnZW50L3NubXBfYWdlbnQuaCAsCiAgIGluY2x1ZGUvbmV0LXNubXAvYWdlbnQvdmFyX3N0cnVjdC5oOgoKICAgT2gsIGp1c3QgYSBzbWFsbCBwYXRjaCB0byBtYWtlIGl0IHBvc3NpYmxlIHRvIG1ha2UgbW9kdWxlcyByZXF1ZXN0CiAgIHRoYXQgYWxsIHF1ZXJpZXMgdG8gYSBzZXQgb2YgcmVnaXN0cmF0aW9ucyBnZXQgcGFzc2VkIGFsbCBhdCBvbmNlCiAgICh3aGljaCBhcHBhcmVudGx5IGlzIGltcG9ydGFudCBmb3IsIG9oLCBhZ2VudHgpCiAgIAoyMDAyLTA0LTE3IDEwOjA5ICBoYXJkYWtlcgoKICAgKiBhZ2VudC9taWJncm91cC9hZ2VudHgvbWFzdGVyLmM6CgogICBtaXNjIG5vbi1jaGFuZ2UgY2xlYW4gdXBzCiAgIAoyMDAyLTA0LTE3IDEwOjAzICBoYXJkYWtlcgoKICAgKiBpbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlLmg6CgogICByZW5hbWUgc3RydWN0dXJlcyBiZWdpbm5pbmcgd2l0aCBfIHRvIGVuZGluZyB3aXRoIF9zCiAgIAoyMDAyLTA0LTE3IDEwOjAyICBoYXJkYWtlcgoKICAgKiBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaDoKCiAgIGFkZCBhIHZvaWQgKiBwb2ludGVyIGZvciB0aGUgc2Vzc2lvbiBjcmVhdG9yIHRvIHVzZSBhdCB3aWxsIChkaWZmZXJlbnQKICAgZnJvbSB0aGUgY2FsbGJhY2sgbWFnaWMpLgogICAKMjAwMi0wNC0xNyAwOTowMCAgZHRzMTIKCiAgICogY29uZmlndXJlICwgY29uZmlndXJlLmluICwKICAgaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbjoKCiAgIFVzZSB0aGUgTmV0LVNOTVAgc3lzT0lEcyBieSBkZWZhdWx0LCByYXRoZXIgdGhhbiB0aGUgdWNkYXZpcyBvbmVzLgogICAKMjAwMi0wNC0xNyAwODoyNiAgZHRzMTIKCiAgICogYXBwcy9zbm1wbmV0c3RhdC9NYWtlZmlsZS5pbjoKCiAgIEJsYW5rIGNvbnRpbnVhdGlvbiBsaW5lcyBjb25mdXNlIEhQJ3MgdmVyc2lvbiBvZiBtYWtlLgogICAKMjAwMi0wNC0xNyAwODoxNiAgZHRzMTIKCiAgICogYWdlbnQvTWFrZWZpbGUuaW46CgogICBCbGFuayBjb250aW51YXRpb24gbGluZXMgY29uZnVzZSBIUCdzIHZlcnNpb24gb2YgbWFrZQogICAKMjAwMi0wNC0xNyAwNjo1NiAgaGFyZGFrZXIKCiAgICogYWdlbnQvbWliZ3JvdXAvYWdlbnQvbnNNb2R1bGVUYWJsZS5jICwKICAgbWlicy9ORVQtU05NUC1BR0VOVC1NSUIudHh0OgoKICAgbW92ZSBuc01vZHVsZVRhYmxlIGludG8gRGF2ZSdzIHN0cnVjdHVyZS4KICAgCjIwMDItMDQtMTcgMDY6NTQgIGhhcmRha2VyCgogICAqIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS86IHNubXBBQUw1UFZDRG9tYWluLmggLAogICBzbm1wVENQSVB2NkRvbWFpbi5oICwgc25tcFVEUElQdjZEb21haW4uaDoKCiAgIGZpeCBkZWNsYXJhdGlvbnMgb2YgRG9tYWluIG9iamVjdHMgKGNvbnN0IC0+IGV4dGVybikKICAgCjIwMDItMDQtMTcgMDY6MzEgIGhhcmRha2VyCgogICAqIGxvY2FsL3NubXBjb25mLmRpci86IHNubXAtZGF0YS9zbm1wY29uZi1jb25maWcgLAogICBzbm1wZC1kYXRhL3NubXBjb25mLWNvbmZpZyAsIHNubXB0cmFwZC1kYXRhL3NubXBjb25mLWNvbmZpZzoKCiAgIHNubXBjb25mIGNvbmZpZ3VyYXRpb24gZGF0YQogICAKMjAwMi0wNC0xNyAwMzowMSAgZHRzMTIKCiAgICogY29uZmlndXJlICwgY29uZmlndXJlLmluOgoKICAgQnJpbmcgdGhlIHJlcG9ydGVkIGRlZmF1bHQgc2V0dGluZ3MgZm9yIHN5c29pZCAmIG5vdGlmaWNhdGlvbiBPSURzCiAgIGJhY2sgaW50byBsaW5lIHdpdGggd2hhdCB3ZSBhY3R1YWxseSB1c2UgKGkuZS4gdGhlIHVjZGF2aXMgT0lEcykuCiAgIAogICBRbjogIERvIHdlIHdhbnQgdG8gc3dpdGNoIHRvIHVzaW5nIHRoZSBuZXQtc25tcCBlcXVpdmFsZW50IHN5c09JRHM/CiAgIFFuOiAgV2hhdCBhYm91dCBkZWZpbmluZyBuZXQtc25tcCBub3RpZmljYXRpb25zPwogICAKMjAwMi0wNC0xNyAwMjo1NSAgZHRzMTIKCiAgICogY29uZmlndXJlICwgY29uZmlndXJlLmluOgoKICAgRml4IC0td2l0aC1lbnRlcnByaXNlLXN5c29pZCBhbmQgLS13aXRoLWVudGVycHJpc2Utbm90aWZpY2F0aW9uLW9pZCwKICAgYW5kIHRyeSB0byBjbGFyaWZ5IHRoYXQgdGhlc2UgYXJlIE9JRHMsIHdoaWxlIC0td2l0aC1lbnRlcnByaXNlLW9pZAogICBpcyBhY3R1YWxseSBqdXN0IHRoZSBlbnRlcnByaXNlICpudW1iZXIqCiAgIAogICBRbjogIHNob3VsZCB3ZSBjaGFuZ2UgdGhlIG5hbWUgb2YgdGhlIGNvbmZpZ3VyZSBvcHRpb24gdG8gcmVmbGVjdCB0aGlzPwogICAKMjAwMi0wNC0xNiAxMDowNCAgaGFyZGFrZXIKCiAgICogc2Vkc2NyaXB0LmluICwgc25tcGxpYi9zbm1wX3ZlcnNpb24uYyAsIEZBUSAsCiAgIHBlcmwvU05NUC9TTk1QLnBtOgoKICAgLSAoc25tcGxpYi9zbm1wX3ZlcnNpb24uYyBzZWRzY3JpcHQuaW4pOiB2ZXJzaW9uIHRhZyAoIDUuMC5wcmUzICkKICAgCjIwMDItMDQtMTYgMTA6MDIgIGhhcmRha2VyCgogICAqIFJFQURNRToKCiAgIGRlbGV0ZSB0b3AgZGlzY2xhaW1lcnMKICAgCjIwMDItMDQtMTYgMTA6MDIgIGhhcmRha2VyCgogICAqIE5FV1M6CgogICBtaXNjIHVwZGF0ZXMKICAgCjIwMDItMDQtMTYgMTA6MDEgIGhhcmRha2VyCgogICAqIHBlcmwvU05NUC9TTk1QLnhzOgoKICAgbWlzYyBidWcgZml4ZXMKICAgCjIwMDItMDQtMTYgMDg6MTkgIGR0czEyCgogICAqIEZBUToKCiAgIEFkZCBhbiBlbnRyeSBjb25jZXJuaW5nIHRoZSAnbGliY3J5cHRvJyBSUE0gZGVwZW5kZW5jeS4KICAgCjIwMDItMDQtMTYgMDg6MDAgIGhhcmRha2VyCgogICAqIGFnZW50L21pYmdyb3VwL2FnZW50L25zTW9kdWxlVGFibGUuYzoKCiAgIGZpeCBtZW1vcnkgbGVhawogICAKMjAwMi0wNC0xNiAwNzoxMyAgaGFyZGFrZXIKCiAgICogYWdlbnQvc25tcF9hZ2VudC5jOgoKICAgcmVtb3ZlIGEgbm8gbG9uZ2VyIGFwcHJvcHJpYXRlIHRvZG8gY29tbWVudAogICAKMjAwMi0wNC0xNiAwNzoxMiAgaGFyZGFrZXIKCiAgICogY29uZmlndXJlOgoKICAgSSBndWVzcyBJIGZvcmdvdCB0byBydW4gYXV0b2NvbmYKICAgCjIwMDItMDQtMTUgMDg6NTggIGhhcmRha2VyCgogICAqIGxvY2FsLzogc25tcGNvbmYgLCBNYWtlZmlsZS5pbjoKCiAgIG1vdmUgc25tcGNvbmYgZGF0YSBkaXJlY3RvcmllcyB0byBkaWZmZXJlbnQgbmFtZXMgdG8gYXZvaWQgY29uZnVzaW9uCiAgIAoyMDAyLTA0LTE1IDA4OjM2ICBoYXJkYWtlcgoKICAgKiBsb2NhbC9zbm1wY29uZi5kaXIvOiBzbm1wLWRhdGEvYXV0aG9wdHMgLAogICBzbm1wLWRhdGEvZGVidWdnaW5nICwgc25tcC1kYXRhL21pYnMgLCBzbm1wLWRhdGEvb3V0cHV0CiAgICwgc25tcGQtZGF0YS9hY2wgLCBzbm1wZC1kYXRhL2Jhc2ljX3NldHVwICwKICAgc25tcGQtZGF0YS9leHRlbmRpbmcgLCBzbm1wZC1kYXRhL21vbml0b3IgLAogICBzbm1wZC1kYXRhL29wZXJhdGlvbiAsIHNubXBkLWRhdGEvc3lzdGVtICwKICAgc25tcGQtZGF0YS90cmFwc2lua3MgLCBzbm1wdHJhcGQtZGF0YS9mb3JtYXR0aW5nICwKICAgc25tcHRyYXBkLWRhdGEvdHJhcGhhbmRsZToKCiAgIGRhdGEgZmlsZSBtb3ZpbmcKICAgCjIwMDItMDQtMTIgMTQ6MzggIGhhcmRha2VyCgogICAqIGxvY2FsL3NubXBjb25mOgoKICAgTWFzc2l2ZSBjbGVhbnVwIGVmZm9ydC4gIEl0IHNob3VsZCBub3cgcmVzcGVjdCBvcmRlcmluZyBpbiB0aGUKICAgc25tcGNvbmYgY29uZmlndXJhdGlvbiBmaWxlcyBhcyB3ZWxsLgogICAKMjAwMi0wNC0xMiAxMzowMCAgcnN0b3J5CgogICAqIGluY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfcmVnaXN0cnkuaDoKCiAgIGZpeCBmb3Igb3ZlcnplYWxvdXMgcGVybCBzY3JpcHQKICAgCjIwMDItMDQtMTIgMDk6NDcgIGhhcmRha2VyCgogICAqIE1ha2VmaWxlLmluICwgY29uZmlndXJlICwgY29uZmlndXJlLmluOgoKICAgY29weSB1Y2QgcGVyc2lzZW50IGRpcmVjdG9yeSB0byBuZXQtc25tcCAocHJvbXB0cywgZmxhZ3MgYW5kIG90aGVyIGZ1bikKICAgCjIwMDItMDQtMTIgMDc6NTcgIGhhcmRha2VyCgogICAqIGxvY2FsL01ha2VmaWxlLmluOgoKICAgaW5zdGFsbCB0cmFwdG9lbWFpbAogICAKMjAwMi0wNC0xMiAwNzo1NSAgaGFyZGFrZXIKCiAgICogbG9jYWwvdHJhcG5vdGlmOgoKICAgcmVtb3ZlIHRyYXBub3RpZgogICAKMjAwMi0wNC0xMiAwNzo1MSAgaGFyZGFrZXIKCiAgICogbG9jYWwvOiBNYWtlZmlsZS5pbiAsIHJzbm1wOgoKICAgcmVtb3ZlIHJzbm1wLCB3aGljaCBpcyB2ZXJ5IHZlcnkgb2xkIGFuZCBvdXQgb2YgZGF0ZQogICAKMjAwMi0wNC0xMiAwNzo0NyAgaGFyZGFrZXIKCiAgICogbWFuLzogLmN2c2lnbm9yZSAsIE1ha2VmaWxlLmluICwgbWliMmMuMS5kZWY6CgogICBBIG1hbnVhbCBwYWdlIGZvciBtaWIyYyAoaGVscCwgSSdtIHR1cm5pbmcgaW50byBEYXZlKQogICAKMjAwMi0wNC0xMiAwNzoyOCAgaGFyZGFrZXIKCiAgICogZG90Z2RiaW5pdDoKCiAgIGEgZ2RiIGluaXRpYWxpemF0aW9uIGZpbGUgd2l0aCBoZWxwZnVsIGZ1bmN0aW9ucwogICAKMjAwMi0wNC0xMiAwMjo0MiAgZHRzMTIKCiAgICogbG9jYWwvTWFrZWZpbGUuaW46CgogICBBZGQgJ3NubXBjb25mJyBhbmQgJ21pYjJjJyB0byB0aGUgbGlzdCBvZiBzY3JpcHRzIHRvIGluc3RhbGwuCiAgIAogICBJJ3ZlIGxlZnQgJ3RyYXB0b2VtYWlsJyBvZmYgdGhpcyBsaXN0LCBzaW5jZSBpdCBzYXlzIGl0J3Mgbm90IGludGVuZGVkCiAgIGFzIGEgZGlyZWN0bHkgdXNlci1pbnZva2VkIGNvbW1hbmQsIHNvIHByb2JhYmx5IG91Z2h0IG5vdCB0byBiZSBpbnN0YWxsZWQKICAgaW50byBhIGJpbmFyeSBkaXJlY3RvcnkuCiAgIAoyMDAyLTA0LTEyIDAyOjQxICBkdHMxMgoKICAgKiBsb2NhbC9yc25tcDoKCiAgIEZpeCB0aGUgcGF0aCBvZiBzbm1wd2FsayB0byBiZSBzb21ldGhpbmcgbW9yZSBwbGF1c2libGUuCiAgIChJJ20gbm90IGNvbnZpbmNlZCBhYm91dCB0aGUgdmFsaWRpdHkgb2YgdGhhdCBpbml0aWFsICdydG9wbWliJyBPSUQgbWluZCEpCiAgIAoyMDAyLTA0LTEyIDAyOjM2ICBkdHMxMgoKICAgKiBsb2NhbC9taWIyYy5jb25mOgoKICAgRml4IHR5cG8gaW4gcmVmZXJlbmNlIHRvICdtaWIyYy5pdGVyYXRlLmNvbmYnCiAgIAoyMDAyLTA0LTEyIDAyOjMzICBkdHMxMgoKICAgKiBNYWtlZmlsZS5ydWxlcyAsIHNubXBsaWIvTWFrZWZpbGUuaW46CgogICBJbnN0YWxsIHRoZSBtYWluIGxpYnJhcnkgYXMgJ2xpYnNubXAnIGlmIGNvbmZpZ3VyZWQgdXNpbmcgVUNEIGNvbXBhdGliaWxpdHkuCiAgIFRoaXMgc2hvdWxkIGhhbmRsZSB0aGUgcmVxdWlyZW1lbnRzIG9mIGFwcGxpY2F0aW9uIGNvbXBhdGliaWxpdHkuCiAgIEFnZW50IGxpYnJhcnkgY29tcGF0aWJpbGl0eSBpcyBsaWtlbHkgdG8gcHJvdmUgYSBoYXJkZXIgcHJvYmxlbQogICAoc2luY2UgdGhlcmUgYXJlIG5vdyB0aHJlZSBsaWJyYXJpZXMsIG5vdCBqdXN0IHR3by4uLikKICAgCjIwMDItMDQtMTEgMjI6MjkgIGhhcmRha2VyCgogICAqIHBlcmwvU05NUC90L3N0YXJ0YWdlbnQucGw6CgogICBzZXQgU05NUENPTkZQQVRIIGlmZiBbc2ljXSBub3Qgc2V0CiAgIAoyMDAyLTA0LTExIDIyOjI3ICBoYXJkYWtlcgoKICAgKiBwZXJsL1NOTVAvU05NUC5wbToKCiAgIHJldHVybiBmcm9tIGluaXRNaWIgYmVmb3JlIGRvaW5nIGFueXRoaW5nLgogICAKMjAwMi0wNC0xMSAyMjoyNiAgaGFyZGFrZXIKCiAgICogcGVybC9TTk1QL01ha2VmaWxlLlBMOgoKICAgdHVybiBvZmYgY29tcGxpZXIgd2FybmluZ3MKICAgCjIwMDItMDQtMTEgMjI6MjYgIGhhcmRha2VyCgogICAqIHBlcmwvQW55RGF0YV9TTk1QL3NubXBzaDoKCiAgIHN1cHBvcnQgInNob3cgY29sdW1ucyBmcm9tIFRBQkxFIgogICAKMjAwMi0wNC0xMSAyMjoyNSAgaGFyZGFrZXIKCiAgICogbWlicy9ORVQtU05NUC1FWEFNUExFUy1NSUIudHh0OgoKICAgQWRkIGEgbmV3IGRlbW8gc2NhbGFyOiB0aGUgc2xlZXBlci4gIChkYWggZGFoIGRhaCBkdW1tbW1tKQogICAKMjAwMi0wNC0xMSAyMjoyNSAgaGFyZGFrZXIKCiAgICogYWdlbnQvbWliZ3JvdXAvZXhhbXBsZXMvc2NhbGFyX2ludC5jOgoKICAgaW5kZW50LgogICAKMjAwMi0wNC0xMSAyMjoyNSAgaGFyZGFrZXIKCiAgICogYWdlbnQvbWliZ3JvdXAvOiBleGFtcGxlcy5oICwgZXhhbXBsZXMvZGVsYXllZF9pbnN0YW5jZS5jCiAgICwgZXhhbXBsZXMvZGVsYXllZF9pbnN0YW5jZS5oOgoKICAgQWRkIGEgZGVsYXllZCBpbnN0YW5jZSBleGFtcGxlLCBzaG93aW5nIGhvdyB0byByZXR1cm4gbWliIHJlcXVlc3QKICAgcmVzdWx0cyBsYXRlciByYXRoZXIgdGhhbiBpbW1lZGlhdGVseS4KICAgCjIwMDItMDQtMTEgMjI6MjQgIGhhcmRha2VyCgogICAqIGFnZW50L21pYmdyb3VwL3Rlc3RkZWxheWVkLmM6CgogICByZW1vdmUgbGVnYWN5IGV4YW1wbGUuCiAgIAoyMDAyLTA0LTExIDIyOjIzICBoYXJkYWtlcgoKICAgKiBhZ2VudC9zbm1wX2FnZW50LmM6CgogICBhZGQgY29tbWVudCBhYm91dCBwb3NzaWJseSBmaXhpbmcgaW5jbHVzaXZlIHJlcXVlc3RzIGluIHRoZSBmdXR1cmUuCiAgIAoyMDAyLTA0LTExIDE3OjA4ICBoYXJkYWtlcgoKICAgKiBSRUFETUUud2luMzI6CgogICBjaGFuZ2UgbW9kdWtlcy0+IG1vZHVsZXMKICAgCjIwMDItMDQtMTEgMDc6MjMgIGhhcmRha2VyCgogICAqIHNubXBsaWIvc25tcF9sb2dnaW5nLmM6CgogICB0dXJuIG9mZiBkZWJ1Z2dpbmcgd2hlbiBjYWxsaW5nIGxvZ2dpbmcgY2FsbGJhY2tzCiAgIAoyMDAyLTA0LTEwIDEyOjUxICBoYXJkYWtlcgoKICAgKiBwZXJsL1NOTVAvOiBTTk1QLnBtICwgU05NUC54czoKCiAgIGZpeCBwZXJsIG1vZHVsZSBpbiBtYW55IG1hbnkgcGxhY2VzLiAgbW9zdCB0ZXN0cyBub3cgcGFzcy4KICAgCjIwMDItMDQtMTAgMTI6NTAgIGhhcmRha2VyCgogICAqIHBlcmwvU05NUC90L3N0YXJ0YWdlbnQucGw6CgogICBmb3JjZSBzZXR0aW5nIHRvIGEgImJvZ3VzIiBTTk1QQ09ORlBBVEguCiAgIAoyMDAyLTA0LTEwIDEyOjQ4ICBoYXJkYWtlcgoKICAgKiBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmggLCBzbm1wbGliL21pYi5jOgoKICAgRXhwb3J0aW5nIGZ1bmN0aW9ucyBnb29kLiAgSW50ZXJuYWxpemluZyBiYWQuCiAgIAoyMDAyLTA0LTEwIDA5OjI4ICBoYXJkYWtlcgoKICAgKiBwZXJsL1NOTVAvU05NUC54czoKCiAgIG9wcHMuICBzaWdoLgogICAKMjAwMi0wNC0xMCAwOToyNyAgaGFyZGFrZXIKCiAgICogcGVybC9TTk1QL1NOTVAueHM6CgogICBvcHBzLiAgcmVtb3ZlIGRlYnVnZ2luZyBzdGF0ZW1lbnRzLgogICAKMjAwMi0wNC0xMCAwOToyMyAgaGFyZGFrZXIKCiAgICogcGVybC9TTk1QL1NOTVAueHM6CgogICAtIE1ha2UgdGhlIHBlcmwgbW9kdWxlIGNhbGwgaW5pdF9zbm1wKCkKICAgICAtIHRoaXMgaXMgYSBmYWlybHkgbWFqb3IgY2hhbmdlLCBpcyBpdCBub3cgd2lsbCByZWFkIC5jb25mIGZpbGVzLgogICAgIC0gbWFueSBwZW9wbGUgaGF2ZSBhc2tlZCBmb3IgdGhpcy4KICAgLSBtaXNjIGNsZWFuIHVwcy4KICAgCjIwMDItMDQtMTAgMDk6MTggIGR0czEyCgogICAqIE1ha2VmaWxlLnJ1bGVzOgoKICAgRG9uJ3QgcmVjdXJzZSBpbnRvIHN1YmRpcmVjdG9yaWVzIGZvciB0aGUgY29uc2l0dWVudCBzdWJ0YXJnZXRzIG9mICJtYWtlIGluc3RhbGwiCiAgIAoyMDAyLTA0LTEwIDA5OjA5ICBoYXJkYWtlcgoKICAgKiBORVdTOgoKICAgYWRkZWQgYSBmZXcgdGhpbmdzLCBzZXBhcmF0ZWQgcGVybCBzdHVmZiBpbnRvIGl0J3Mgb3duIHNlY3Rpb24uCiAgIAoyMDAyLTA0LTEwIDA4OjQ2ICBkdHMxMgoKICAgKiBjb25maWd1cmUgLCBjb25maWd1cmUuaW46CgogICBCcmluZyB0aGUgaGVscCBtZXNzYWdlIGZvciB0aGUgVUNEIGNvbXBhdGFiaWxpdHkgb3B0aW9uIGludG8gbGluZSB3aXRoCiAgIHdoYXQncyBhY3R1YWxseSByZWNvZ25pc2VkLgogICAKMjAwMi0wNC0xMCAwNzo1MiAgaGFyZGFrZXIKCiAgICogTWFrZWZpbGUudG9wOgoKICAgY2hhbmdlIGxpYnRvb2wgdmVyc2lvbmluZyB0byB0aGVpciByZWNvbW1lbmRlZCBtZXRob2Qgb2YgZG9pbmcgdGhpbmdzCiAgICh3aGljaCBJIGhhdGUsIGJ1dCBpcyBzdGlsbCBiZXR0ZXIgdGhhbiB3aGF0IHdlIHdlcmUgZG9pbmcsIEkgZ3Vlc3MpCiAgIAoyMDAyLTA0LTEwIDA3OjEwICBkdHMxMgoKICAgKiBNYWtlZmlsZS5ydWxlczoKCiAgIEJyaW5nIHVzZSBvZiBCVUlMVFNVQkRJUiB3aXRoaW4gJ2luc3RhbGxsb2NhbGhlYWRlcnMnIGludG8gbGluZQogICB3aXRoIHRoZSBwcmVjZWRpbmcgY29tbWVudCwgYW5kIGFjdHVhbCB1c2FnZS4KICAgKGkuZS4gSU5TVEFMTEJVSUxUU1VCRElSIHJhdGhlciB0aGFuIElOQ0xVREVCVUlMVFNVQkRJUikKICAgCjIwMDItMDQtMTAgMDU6NTggIGR0czEyCgogICAqIHNubXBsaWIvTWFrZWZpbGUuaW46CgogICBUeXBvIGluIHNlY3VyaXR5LWluY2x1ZGUgaGVhZGVyIGRlc3RpbmF0aW9uIGRpcmVjdG9yeSB2YXJpYWJsZQogICAKMjAwMi0wNC0xMCAwNTo1NSAgZHRzMTIKCiAgICogbG9jYWwvTWFrZWZpbGUuaW46CgogICBFbnN1cmUgdGhlIGRlc3RpbmF0aW9uIGRpcmVjdG9yeSBleGlzdHMgYmVmb3JlIGluc3RhbGxpbmcgbWliMmMgY29uZiBmaWxlcy4KICAgCjIwMDItMDQtMTAgMDE6NTUgIGR0czEyCgogICAqIHRlc3RpbmcvdGVzdHMvOiBUMDA0c25tcHYxbm9zdWNoICwgVDAxOXNubXB2MmNub3N1Y2g6CgogICBUd28gbmV3IHRlc3RzIHRvIGNoZWNrIGhhbmRsaW5nIG9mIEdFVGluZyBub24tZXhpc3RhbnQgaW5zdGFuY2VzCiAgIAoyMDAyLTA0LTEwIDAxOjU0ICBkdHMxMgoKICAgKiBhZ2VudC9zbm1wX2FnZW50LmM6CgogICBBIGZpeCBmb3IgU05NUHYxIGVycm9ycyB0aGF0IGRvZXNuJ3QgZW5kIHVwIGJyZWFraW5nIEFnZW50WCBlcnJvciBoYW5kbGluZy4KICAgCjIwMDItMDQtMDkgMTA6MzggIGhhcmRha2VyCgogICAqIGFnZW50L3NubXBfYWdlbnQuYzoKCiAgIFBhdGNoIGZyb20gRGF2ZSB0byBmaXggdjEgZXJyb3IgcmVzdWx0cy4KICAgCjIwMDItMDQtMDggMjE6MDggIHJzdG9yeQoKICAgKiBzbm1wbGliL29pZF9hcnJheS5jOgoKICAgZml4IGluY29ycmVjdCBsZW5ndGggcmV0dXJuIHZhbHVlCiAgIAoyMDAyLTA0LTA4IDE4OjAwICBoYXJkYWtlcgoKICAgKiBhZ2VudC9taWJncm91cC9taWJJSS86IHZhY21fdmFycy5jICwgdmFjbV92YXJzLmg6CgogICBkb24ndCBhbGxvdyBuby1jb25maWd1cmF0aW9uIGFjY2VzcyBhbnltb3JlLgogICAKMjAwMi0wNC0wOCAxNzo1OSAgaGFyZGFrZXIKCiAgICogaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3RyYW5zZm9ybV9vaWRzLmggLAogICBzbm1wbGliL3NubXBBQUw1UFZDRG9tYWluLmMgLCBzbm1wbGliL3NubXBUQ1BJUHY2RG9tYWluLmMKICAgLCBzbm1wbGliL3NubXBVRFBJUHY2RG9tYWluLmMgLCBzbm1wbGliL3NubXB1c20uYzoKCiAgIG1vcmUgdW5jb25zdCBjb3JyZWN0bmVzcwogICAKMjAwMi0wNC0wOCAxNzozMSAgaGFyZGFrZXIKCiAgICogaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0Lmg6CgogICBzaXplX3QgZXh0ZXJucyBmb3IgZXhwb3J0ZWQgb2lkcwogICAKMjAwMi0wNC0wOCAxNzozMCAgaGFyZGFrZXIKCiAgICogc25tcGxpYi9zbm1wX2FwaS5jOgoKICAgcmVtb3ZlIHRlbXBvcmFyeSBkZWJ1Z2dpbmcgc3RhdGVtZW50cyB0aGF0IGFjY2lkZW50YWxseSBiZWNhbWUgcGVybWFuZW50LgogICAKMjAwMi0wNC0wOCAxNzoyNiAgaGFyZGFrZXIKCiAgICogc25tcGxpYi86IHNubXBVRFBEb21haW4uYyAsIHNubXBfdHJhbnNwb3J0LmM6CgogICBkZWZpbmUgbGVuZ3RoIHNpemVfdCdzIGZvciBvaWQgdmFyaWFibGVzLgogICAKMjAwMi0wNC0wOCAxNjo1MyAgaGFyZGFrZXIKCiAgICogYWdlbnQvbWliZ3JvdXAvdXRpbGl0aWVzL292ZXJyaWRlLmM6CgogICBzdXBwb3J0ICJudWxsIiB0eXBlcy4KICAgCjIwMDItMDQtMDggMTY6NTIgIGhhcmRha2VyCgogICAqIGFwcHMvc25tcHRyYXBkLmM6CgogICBpbml0aWFsaXplIG5vdGlmaWNhdGlvbiBsb2cgbWliIHN1cHBvcnQgYmVmb3JlIC1IIHVzYWdlLgogICAKMjAwMi0wNC0wOCAxNjo0OSAgaGFyZGFrZXIKCiAgICogYWdlbnQvaGVscGVycy9zZXJpYWxpemUuYzoKCiAgIGZpeCBhIGZldyB0aGluZ3MgYW5kIG1ha2Ugc3ViaGFuZGxlcnMgbm90IGFibGUgdG8gdGVsbCB0aGVyZSB3ZXJlIG1vcmUgcmVxdWVzdHMuCiAgIAoyMDAyLTA0LTA4IDE2OjQzICBoYXJkYWtlcgoKICAgKiBJTlNUQUxMOgoKICAgQSBjby13b3JrZXIgcG9pbnRlZCBvdXQgdGhhdCB0aGUgSU5TVEFMTCBzY3JpcHQgc3RpbGwgc2FpZCB0byBlZGl0IGNvbmZpZy5oCiAgIAoyMDAyLTA0LTA4IDE1OjEzICBoYXJkYWtlcgoKICAgKiBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oICwKICAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmggLAogICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaCAsCiAgIHNubXBsaWIvc25tcFRDUERvbWFpbi5jICwgc25tcGxpYi9zbm1wVW5peERvbWFpbi5jICwKICAgc25tcGxpYi9zbm1wX3RyYW5zcG9ydC5jOgoKICAgdW5zdGF0aWMtaXplIGEgZmV3IG9pZHMgdGhhdCBzaG91bGQgaGF2ZSBiZWVuIGV4dGVybmFsCiAgIAoyMDAyLTA0LTA4IDE0OjIzICBoYXJkYWtlcgoKICAgKiBzbm1wbGliLzogc25tcEFBTDVQVkNEb21haW4uYyAsIHNubXBUQ1BEb21haW4uYyAsCiAgIHNubXBUQ1BJUHY2RG9tYWluLmMgLCBzbm1wVURQSVB2NkRvbWFpbi5jICwKICAgc25tcFVuaXhEb21haW4uYyAsIHNubXBfYXBpLmMgLCBzbm1wX3RyYW5zcG9ydC5jCiAgICwgc25tcHVzbS5jOgoKICAgQ2hhbmdlIGNvbnN0IG9pZCBkZWNsYXJhdGlvbnMgaW50byBzdGF0aWMgb25lcyBzaW5jZSBzaGFyZWQgbGlicmFyaWVzCiAgIGhhdmUgYSBwcm9ibGVtIHdpdGggaW5pdGlhbGl6aW5nIHRoZW0gb24gbGludXggc3lzdGVtcyBhdCBsZWFzdC4KICAgCjIwMDItMDQtMDggMTE6NDUgIGhhcmRha2VyCgogICAqIG1hbi9zbm1wZC5jb25mLjUuZGVmOgoKICAgbWluaW1hbCBkb2N1bWVudGF0aW9uIGZvciBkZWJ1Z2dpbmcgYW5kIHRoZSBpbmplY3RIYW5kbGVyIHRva2VuCiAgIAoyMDAyLTA0LTA1IDE0OjMyICBoYXJkYWtlcgoKICAgKiBtYW4vOiBzbm1wdHJhcGQuOC5kZWYgLCBzbm1wdHJhcGQuY29uZi41LmRlZjoKCiAgIGRvY3VtZW50YXRpb24gZm9yIHRoZSBOT1RJRklDQVRJT04tTE9HLU1JQiBzdXBwb3J0LgogICAKMjAwMi0wNC0wNSAxNDowOSAgaGFyZGFrZXIKCiAgICogbWFuL3NubXBkLmNvbmYuNS5kZWY6CgogICBkb2N1bWVudCBjb250ZXh0IG5hbWUgc3VwcG9ydCBpbiBwcm94eSBjb2RlLgogICAKMjAwMi0wNC0wNSAxMzo1MSAgaGFyZGFrZXIKCiAgICogbWFuL3NubXBkLmNvbmYuNS5kZWY6CgogICBkb2N1bWVudCB0aGUgZGlzbWFuIGV2ZW50IG1pYiBzdXBwb3J0IGZvciBzZW5kaW5nIHRyYXBzIHZpYSBtb25pdG9yZWQgT0lEcy4KICAgCjIwMDItMDQtMDUgMTA6MTIgIGhhcmRha2VyCgogICAqIG1hbi9zbm1wZC5jb25mLjUuZGVmOgoKICAgcHV0IHRyYXAgY29uZmlnIGludG8gaXRzIG93biBzZWN0aW9uLgogICBkb2N1bWVudCB0aGUgIm92ZXJyaWRlIiB0b2tlbi4KICAgCjIwMDItMDQtMDUgMDY6MzkgIGhhcmRha2VyCgogICAqIFJFQURNRS5zbm1wdjM6CgogICBjaGFuZ2UgZGVmYXVsdCBjb250ZXh0IHRvIGFuIGVtcHR5IHN0cmluZwogICAKMjAwMi0wNC0wNCAxNToxNCAgaGFyZGFrZXIKCiAgICogYWdlbnQvOiBhZ2VudF9yZWdpc3RyeS5jIChWNC0yLXBhdGNoZXMuNSksIGFnZW50X3JlZ2lzdHJ5LmM6CgogICBkZWFsIHdpdGggZmQgdW5yZWdpc3RyYXRpb25zIHByb3Blcmx5LgogICAKMjAwMi0wNC0wMyAwOToxMiAgaGFyZGFrZXIKCiAgICogYWdlbnQvaGVscGVycy90YWJsZV9kYXRhc2V0LmMgLCBhZ2VudC9taWJncm91cC9leGFtcGxlcy5oCiAgICwgYWdlbnQvbWliZ3JvdXAvdGVzdGhhbmRsZXIuYyAsCiAgIGFnZW50L21pYmdyb3VwL2V4YW1wbGVzL2RhdGFfc2V0LmMgLAogICBhZ2VudC9taWJncm91cC9leGFtcGxlcy9kYXRhX3NldC5oICwKICAgYWdlbnQvbWliZ3JvdXAvZXhhbXBsZXMvc2NhbGFyX2ludC5jICwKICAgaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9kYXRhc2V0LmggLAogICBtaWJzL05FVC1TTk1QLUVYQU1QTEVTLU1JQi50eHQ6CgogICBNYWtlIGFuIGV4YW1wbGUgZGF0YXNldCB0YWJsZSB0byBob2xkIGFuZCBzdG9yZSBkYXRhIGluIChhZG1pdHRlZGx5CiAgIHVzZWxlc3MgZGF0YSBmcm9tIGEgbmV0d29yayBtYW5hZ2VtZW50IHBvaW50IG9mIHZpZXcsIGJ1dCBpdCdzIGFuIGV4YW1wbGUpLgogICAKMjAwMi0wNC0wMiAyMjoxMiAgaGFyZGFrZXIKCiAgICogbWFuL01ha2VmaWxlLmluOgoKICAgZml4IGluc3RhbGxhdGlvbiBmcm9tIHN1YmRpciBidWlsZCBjYXNlLgogICAKMjAwMi0wNC0wMiAyMTo0NSAgaGFyZGFrZXIKCiAgICogc25tcGxpYi9NYWtlZmlsZS5pbjoKCiAgIGluc3RhbGwgc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzIGZyb20gZnJvbSBidWlsZCBkaXIuCiAgIAoyMDAyLTA0LTAyIDIxOjQ1ICBoYXJkYWtlcgoKICAgKiBhZ2VudC9NYWtlZmlsZS5pbjoKCiAgIGluc3RhbGwgbWliX21vZHVsZV9jb25maWcuaCBhbmQgbWliX21vZHVsZV9pbmNsdWRlcy5oIGZyb20gYnVpbGQgZGlyLgogICAKMjAwMi0wNC0wMiAyMTo0MyAgaGFyZGFrZXIKCiAgICogTWFrZWZpbGUuaW46CgogICBpbnN0YWxsIG5ldC1zbm1wLWNvbmZpZy5oIGZyb20gdGhlIGJ1aWxkIGRpci4KICAgCjIwMDItMDQtMDIgMjE6NDMgIGhhcmRha2VyCgogICAqIE1ha2VmaWxlLnJ1bGVzOgoKICAgY3JlYXRlIHNvbWUgaW5zdGFsbCBmcm9tIGJ1aWx0IGhlYWRlciBydWxlcy4KICAgCjIwMDItMDQtMDIgMTc6MjcgIGhhcmRha2VyCgogICAqIGxvY2FsLzogTWFrZWZpbGUuaW4gLCBtaWIyYy5jb25mOgoKICAgcmVtb3ZlIGRlbGV0ZWQgYXJyYXktYXV0byBmcm9tIC5jb25mIGluc3RhbGwvcmVmZXJlbmNlIGxpc3RzCiAgIAoyMDAyLTA0LTAyIDE1OjAzICBoYXJkYWtlcgoKICAgKiBhZ2VudC9taWJncm91cC86IHVjZF9zbm1wLmggLCB1Y2Qtc25tcC9yZWdpc3RyeS5jICwKICAgdWNkLXNubXAvcmVnaXN0cnkuaDoKCiAgIHJlbW92ZSB0aGUgcmVnaXN0cnkgbW9kdWxlLCBhcyBpdCdzIG9ic29sZXRlIGR1ZSB0byBjb250ZXh0cy4gIFVzZSB0aGUgbnNNb2R1bGVUYWJsZSBpbnN0ZWFkCiAgIAoyMDAyLTA0LTAyIDE0OjU3ICBoYXJkYWtlcgoKICAgKiBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9kaXNrLmMgKFY0LTItcGF0Y2hlcy43KSwKICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZGlzay5jICwKICAgaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vZGFyd2luLmg6CgogICBBcHBseSBwYXRjaCAjNTI0NDI0IGZvciBkYXJ3aW4gZml4ZXMgZm9yIHVjZC1zbm1wL2Rpc2suYwogICAKMjAwMi0wNC0wMiAxNDo0NyAgaGFyZGFrZXIKCiAgICogYWdlbnQvbWliZ3JvdXAvOiBrZXJuZWxfc3Vub3M1LmMgKFY0LTItcGF0Y2hlcy44KSwKICAga2VybmVsX3N1bm9zNS5jOgoKICAgYXBwbHkgcGF0Y2ggNTI3NTczIHRvIGZpeCA2NCBiaXQgdHlwZXMgb24gc29sYXJpcwogICAKMjAwMi0wNC0wMiAwNzowNCAgaGFyZGFrZXIKCiAgICogc25tcGxpYi9zbm1wX3RyYW5zcG9ydC5jOgoKICAgY2hlY2sgY2hhciBmb3IgTlVMTCBiZWZvcmUgc2V0dGluZyB0bzoKICAgCjIwMDItMDQtMDEgMjI6MjggIGhhcmRha2VyCgogICAqIHNubXBsaWIvOiBzbm1wX2FwaS5jIChWNC0yLXBhdGNoZXMuOSksIGNtdV9jb21wYXQuYyAsCiAgIHNubXBfYXBpLmM6CgogICBMZXQgaW5pdF9zbm1wIHByb3RlY3QgaXRzZWxmLgogICAKMjAwMi0wMy0yOSAxNTowNCAgcnN0b3J5CgogICAqIGxvY2FsL21pYjJjLmFycmF5LXVzZXIuY29uZjoKCiAgIHR3ZWFrcyAmIHVwZGF0ZXMKICAgCjIwMDItMDMtMjkgMTA6NDAgIHJzdG9yeQoKICAgKiBzbm1wbGliL21pYi5jOgoKICAgYWRkIGNvbW1lbnQKICAgCjIwMDItMDMtMjkgMDg6MzYgIGhhcmRha2VyCgogICAqIGxvY2FsL21pYjJjLmNyZWF0ZS1kYXRhc2V0LmNvbmY6CgogICBhZGQgYSBhbGxvd19jcmVhdGlvbiBkZWZpbml0aW9uLgogICAKMjAwMi0wMy0yOSAwODoyMiAgaGFyZGFrZXIKCiAgICogTWFrZWZpbGUuaW46CgogICBtYWtlIG5ldC1zbm1wLWNvbmZpZyBleGVjdXRhYmxlIGFmdGVyIGl0J3MgYnVpbHQKICAgCjIwMDItMDMtMjkgMDg6MTMgIGhhcmRha2VyCgogICAqIGFnZW50L21pYmdyb3VwL21pYklJLzogc2V0U2VyaWFsTm8uYyAsIHNldFNlcmlhbE5vLmg6CgogICBvcHBzLiAgZm9yZ290IHRvIGNoZWNrIHRoZSBzZXRTZXJpYWwgY29kZSBpbgogICAKMjAwMi0wMy0yOCAyMzo0OCAgaGFyZGFrZXIKCiAgICogYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvOiBwYXNzLmMgKFY0LTItcGF0Y2hlcy40KSwgcGFzcy5jOgoKICAgZW5hYmxlIHJvdyBjcmVhdGlvbiBmb3IgcGFzcyBtb2R1bGVzLiAgUGF0Y2ggIzQ4MjAwNQogICAKMjAwMi0wMy0yOCAyMzo0NCAgaGFyZGFrZXIKCiAgICogYWdlbnQvbWliZ3JvdXAvbWliSUkvOiBpbnRlcmZhY2VzLmMgKFY0LTItcGF0Y2hlcy4yKSwKICAgaW50ZXJmYWNlcy5jOgoKICAgcGF0Y2ggIzUxNzM0MDogZnJlZWJzZDUgc3VwcG9ydAogICAKMjAwMi0wMy0yOCAyMzozOCAgaGFyZGFrZXIKCiAgICogYWdlbnQvbWliZ3JvdXAvaG9zdC86IGhyX2ZpbGVzeXMuYyAoVjQtMi1wYXRjaGVzLjQpLCBocl9maWxlc3lzLmM6CgogICBhcHBseSBmcmVlYnNkNSBwYXRjaCAjNTE3MzMzCiAgIAoyMDAyLTAzLTI4IDIzOjMyICBoYXJkYWtlcgoKICAgKiBhZ2VudC9taWJncm91cC86IGhvc3QvaHJfc3lzdGVtLmMgLCBtaWJJSS9pbnRlcmZhY2VzLmMKICAgLCBtaWJJSS9pcEFkZHIuYzoKCiAgIEFwcGx5IG5ldGJzZCBmaXggcGF0Y2ggIzUyOTczMwogICAKMjAwMi0wMy0yOCAyMzowMSAgaGFyZGFrZXIKCiAgICogc25tcGxpYi86IHNubXBfYXBpLmMgKFY0LTItcGF0Y2hlcy44KSwgc25tcF9hcGkuYyAsCiAgIHNubXBfYXBpLmM6CgogICB1c2UgYSBzdGF0aWMgdmFyaWFibGUgZm9yIGluaXQgY2hlY2tpbmcuICBCdWcgIzUzNjM4Ni4KICAgCjIwMDItMDMtMjggMTU6MjUgIGR0czEyCgogICAqIG1hbi86IGRlZmF1bHRfc3RvcmUuMy50b3AgLCByZWFkX2NvbmZpZy4zLmRlZiAsCiAgIHNubXBfYXBpLjMuZGVmOgoKICAgVHdlYWsgdG8gdXNlIHRoZSBuZXcgaW5jbHVkZSBzdHJ1Y3R1cmUuCiAgIAoyMDAyLTAzLTI4IDE1OjIzICBkdHMxMgoKICAgKiBGQVEgKFY0LTItcGF0Y2hlcy44KSwgRkFROgoKICAgQWRkIGEgZmV3IG5ldyBlbnRyaWVzIChtb3N0bHkgcmVsYXRpbmcgdG8gdHJhcHMpCiAgIAoyMDAyLTAzLTI4IDE0OjU2ICByc3RvcnkKCiAgICogYWdlbnQvaGVscGVycy90YWJsZV9hcnJheS5jOgoKICAgcmVuYW1lL3ByZWZpeCBmdW5jdGlvbnM7IGFkZCBkb3h5Z2VuIGRvY3VtZW50YXRpb24KICAgCjIwMDItMDMtMjggMTM6MDAgIHJzdG9yeQoKICAgKiBkb3h5Z2VuLmNvbmY6CgogICBhZGQgZGVmaW5lIGZvciBleGNsdWRpbmcgc3R1ZmYgKERPWFlHRU5fU0hPVUxEX1NLSVBfVEhJUykKICAgCjIwMDItMDMtMjggMTI6NTAgIGhhcmRha2VyCgogICAqIGFnZW50L21pYmdyb3VwL21pYklJLmg6CgogICBhZGQgc2V0U2VyaWFsTm8KICAgCjIwMDItMDMtMjggMTI6NDcgIGhhcmRha2VyCgogICAqIHNubXBsaWIvdWNkX2NvbXBhdC5jOgoKICAgZml4IGEgbmV2ZXItc2Vlbi1idXQtdmVyeS1vbGQtYnVnIHVzaW5nIHRoZSB3cm9uZyBkZWZhdWx0X3N0b3JlIHRva2VuLgogICAKMjAwMi0wMy0yOCAxMjo0NiAgaGFyZGFrZXIKCiAgICogc25tcGxpYi9zbm1wX2FwaS5jOgoKICAgb25seSBzZXQgdGhlIGRlZmF1bHQgb3V0cHV0IHN0eWxlIGlmIGl0J3Mgbm90IGFscmVhZHkgc2V0IHRvIHNvbWV0aGluZy4KICAgCjIwMDItMDMtMjggMTI6NDUgIGhhcmRha2VyCgogICAqIGFnZW50L2FnZW50X3JlYWRfY29uZmlnLmM6CgogICB3cmFwcGluZy4KICAgCjIwMDItMDMtMjggMTI6MTcgIGhhcmRha2VyCgogICAqIGRveHlnZW4uY29uZjoKCiAgIGNoYW5nZSB2ZXJzaW9uIG51bWJlcgogICAKMjAwMi0wMy0yOCAxMjowOCAgcnN0b3J5CgogICAqIGFwcHMvc25tcHRyYW5zbGF0ZS5jOgoKICAgYmFjayBvdXQgY2hhbmdlIGZyb20gdmVyc2lvbiAxLjY1IHVudGlsIGJldHRlciBzb2x1dGlvbiBjYW4gYmUgZm91bmQ7CiAgIGJ1ZyAjNTM1MDI5CiAgIAoyMDAyLTAzLTI4IDEyOjAzICByc3RvcnkKCiAgICogYWdlbnQvYWdlbnRfcmVnaXN0cnkuYzoKCiAgIHJldHVybiBzcGVjaWZpYyByZXN1bHQgY29kZSBmb3IgcmVnaXN0cmF0aW9uIGZhaWx1cmUgaWYgYXZhaWxhYmxlLgogICAKMjAwMi0wMy0yOCAxMTo1NyAgaGFyZGFrZXIKCiAgICogYWdlbnQvOiBhZ2VudF9yZWdpc3RyeS5jICwgbWliZ3JvdXAvYWdlbnR4L21hc3Rlcl9hZG1pbi5jOgoKICAgcGVybCB0eXBvCiAgIAoyMDAyLTAzLTI3IDE1OjQ4ICByc3RvcnkKCiAgICogbG9jYWwvbWliMmMuYXJyYXktYXV0by5jb25mOgoKICAgZGVsZXRlIG9sZCwgdW51c2VkIGNvbmYgZmlsZQogICAKMjAwMi0wMy0yNyAwODoyNyAgaGFyZGFrZXIKCiAgICogYXBwcy86IG5vdGlmaWNhdGlvbl9sb2cuYyAsIG5vdGlmaWNhdGlvbl9sb2cuaCAsCiAgIHNubXB0cmFwZC5jOgoKICAgYWRkICJkb250UmV0YWluTG9ncyIgdG9rZW4gdG8gc25tcHRyYXBkLmNvbmYgdG8gbm90IGVuYWJsZSB0aGUKICAgbm90aWZpY2F0aW9uIGxvZyBtaWIuCiAgIAoyMDAyLTAzLTI3IDAxOjU0ICBkdHMxMgoKICAgKiBjb25maWd1cmUuaW4sIGNvbmZpZ3VyZSAoVjQtMi1wYXRjaGVzLlsxLDFdKSwgY29uZmlndXJlICwKICAgY29uZmlndXJlLmluOgoKICAgVXNlIHRoZSBjb3JyZWN0IG5hbWUgb2YgdGhlIFdpbmRvd3MgSVAgSGVscGVyIEFQSSBsaWJyYXJ5LgogICAoQ29tcHV0ZXJzIGNhbiBiZSBzb29vbyBwaWNreSEpCiAgIAoyMDAyLTAzLTI2IDIzOjIzICBoYXJkYWtlcgoKICAgKiBhZ2VudC9zbm1wX2FnZW50LmMgLCBhZ2VudC9zbm1wZC5jICwKICAgYWdlbnQvaGVscGVycy9hbGxfaGVscGVycy5jICwgYWdlbnQvaGVscGVycy9idWxrX3RvX25leHQuYwogICAsIGFnZW50L2hlbHBlcnMvZGVidWdfaGFuZGxlci5jICwKICAgYWdlbnQvaGVscGVycy9yZWFkX29ubHkuYyAsIGFnZW50L21pYmdyb3VwL2FnZW50eC9tYXN0ZXIuYwogICAsIGluY2x1ZGUvbmV0LXNubXAvYWdlbnQvYnVsa190b19uZXh0LmggLAogICBpbmNsdWRlL25ldC1zbm1wL2FnZW50L2RlYnVnX2hhbmRsZXIuaCAsCiAgIGluY2x1ZGUvbmV0LXNubXAvYWdlbnQvcmVhZF9vbmx5LmggLAogICBpbmNsdWRlL25ldC1zbm1wL2FnZW50L3NubXBfYWdlbnQuaCAsCiAgIGluY2x1ZGUvbmV0LXNubXAvYWdlbnQvdmFyX3N0cnVjdC5oOgoKICAgLSBSZWFsbHkgZml4IHRoZSAidW5kbyBmYWlsZWQiIHByb2JsZW0uICBJRSwgbm90IGp1c3QgYW55IG9sZCBlcnJvcgogICAgIHdpbGwgY2F1c2UgYW4gdW5kbyBmYWlsZWQgbWVzc2FnZSB0byBnZXQgc2VudCBiYWNrLiAgT25seSB2YXJiaW5kcwogICAgIHdpdGggYW4gdW5kbyBmYWlsZWQgZXJyb3IgY29kZSB3aWxsIGNhdXNlIGFuIHVuZG8gZmFpbGVkIHJlc3VsdC4KICAgICB1bmRvIGZhaWxlZCByZXN1bHRzIGRvIHN0aWxsIHN1cGVyc2VkZSBhbGwgb3RoZXIgZXJyb3IgY29kZXMsCiAgICAgaG93ZXZlciwgd2hpY2ggaXMgd2hhdCB0aGUgb3JpZ2luYWwgcHJvYmxlbSB3YXMgYWxsIGFib3V0LiAgV2Ugc3RpbGwKICAgICBoYXZlIHRvIGRlcGVuZCBvbiB0aGUgbW9kdWxlcyByZXR1cm5pbmcgdGhlIHJpZ2h0IGVycm9yIGNvZGUgKGJ1dAogICAgIHRoYXQncyB0aGVpciBmYXVsdCBpZiB0aGV5IGRvbid0KS4KICAgLSBtaXNjIGNsZWFudXBzIGFuZCByZW5hbWVzCiAgIAoyMDAyLTAzLTI2IDIzOjIwICBoYXJkYWtlcgoKICAgKiBSRUFETUU6CgogICBhZGQgQ3JhaWcgU2V0ZXJhCiAgIAoyMDAyLTAzLTI2IDE0OjA3ICByc3RvcnkKCiAgICogVE9ETzoKCiAgIGFkZCBjcmVhdGluZyBzcmMgcnBtIHNwZWMgZmlsZQogICAKMjAwMi0wMy0yNiAwODoyOSAgaGFyZGFrZXIKCiAgICogYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvOiBkaXNraW8uYyAoVjQtMi1wYXRjaGVzLjIpLCBkaXNraW8uYzoKCiAgIGVuYWJsZSBkaXNraW8gb24gZnJlZWJzZDUuICBJbXBsZW1lbnRzIHBhdGNoIDUxNzMyOCBpbiBhIGRpZmZlcmVudCB3YXkuCiAgIAoyMDAyLTAzLTI2IDA3OjU4ICBoYXJkYWtlcgoKICAgKiBtaWJzL01ha2VmaWxlLmluOgoKICAgZml4IGZvciBvdGhlci1kaXIgYnVpbGRzCiAgIAoyMDAyLTAzLTI2IDA3OjU3ICBoYXJkYWtlcgoKICAgKiBhZ2VudC9hZ2VudF9yZWdpc3RyeS5jOgoKICAgZHVwbGljYXRlIHJlZ2lzdHJhdGlvbiBpbmZvIGluIHNwbGl0X3N1YnRyZWUKICAgCjIwMDItMDMtMjYgMDc6NDMgIGR0czEyCgogICAqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluIChWNC0yLXBhdGNoZXMuWzAsMF0pLCBjb25maWd1cmUgLAogICBjb25maWd1cmUuaW46CgogICBBZGQgL2V0Yy9maWxlc3lzdGVtcyB0byBsaXN0IG9mIG1vdW50IHRhYmxlIGZpbGVzIChmb3IgQUlYKQogICBTaG91bGQgZml4IGJ1Z3MgMjMyNTg4IGFuZCAoPyk1MTcxMTMKICAgCjIwMDItMDMtMjYgMDc6MzkgIGR0czEyCgogICAqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluIChWNC0yLXBhdGNoZXMuWzksOV0pLCBjb25maWd1cmUgLAogICBjb25maWd1cmUuaW46CgogICBSZW1vdmUgdHJhaWxpbmcgJzonIGZyb20gbGlzdCBvZiBNSUIgbW9kdWxlIG5hbWVzIGluIGNvbmZpZ3VyZSBvdXRwdXQsCiAgIHRvIGF2b2lkIGNvbmZ1c2lvbiAoc2VlIEJ1ZyAjNDkxMTI5KQogICAKMjAwMi0wMy0yNiAwNjo0MSAgZHRzMTIKCiAgICogY29uZmlndXJlICwgY29uZmlndXJlLmluOgoKICAgQWRkICctbGhscGFwaScgdG8gdGhlIGxpc3Qgb2YgYWdlbnQgbGlicmFyaWVzLCB3aGVuIHJ1bm5pbmcgb24gV2luZG93cwogICAodXNpbmcgQ3lnd2luKS4gIFNob3VsZCBmaXggQnVnICM1MzQ0MDkuCiAgIAoyMDAyLTAzLTI1IDIyOjMzICByc3RvcnkKCiAgICogc25tcGxpYi86IHBhcnNlLmMgKFY0LTItcGF0Y2hlcy4zKSwgcGFyc2UuYzoKCiAgIGZpeCBidWcjNTIwNDc4IHNob3dNaWJFcnJvcnMgdG9rZW4gaXMgaW52ZXJ0ZWQKICAgCjIwMDItMDMtMjUgMTU6MTggIHJzdG9yeQoKICAgKiBpbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaDoKCiAgIHJlbW92ZSBeTSBjaGFyYWN0ZXJzCiAgIAoyMDAyLTAzLTI1IDE0OjUzICBoYXJkYWtlcgoKICAgKiBhZ2VudC9zbm1wX2FnZW50LmMgLCBpbmNsdWRlL25ldC1zbm1wL2FnZW50L3NubXBfYWdlbnQuaDoKCiAgIHVzZSBlbWFjcyB0byBmaXggcGVybCBzZWFyY2ggYW5kIHJlcGxhY2UgZXJyb3JzLCBvZiBjb3Vyc2UKICAgCjIwMDItMDMtMjUgMTQ6NDcgIGhhcmRha2VyCgogICAqIGFnZW50L2FnZW50X3JlZ2lzdHJ5LmMgLCBhZ2VudC9zbm1wX2FnZW50LmMgLAogICBhZ2VudC9oZWxwZXJzL29sZF9hcGkuYyAsIGFnZW50L2hlbHBlcnMvdGFibGUuYyAsCiAgIGFnZW50L2hlbHBlcnMvdGFibGVfZGF0YS5jICwgYWdlbnQvaGVscGVycy90YWJsZV9kYXRhc2V0LmMKICAgLCBhZ2VudC9taWJncm91cC90ZXN0aGFuZGxlci5jICwKICAgYWdlbnQvbWliZ3JvdXAvYWdlbnR4L21hc3Rlcl9hZG1pbi5jICwKICAgYXBwcy9ub3RpZmljYXRpb25fbG9nLmMgLAogICBpbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X3JlZ2lzdHJ5LmggLAogICBpbmNsdWRlL25ldC1zbm1wL2FnZW50L3NubXBfYWdlbnQuaCAsCiAgIGluY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGUuaCAsCiAgIGluY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfZGF0YS5oICwKICAgaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9kYXRhc2V0LmggLAogICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmggLAogICBsb2NhbC9taWIyYy5jcmVhdGUtZGF0YXNldC5jb25mICwgc25tcGxpYi9taWIuYyAsCiAgIHNubXBsaWIvc25tcF9hcGkuYzoKCiAgIHVzZSBwZXJsIHRvIHNlYXJjaCBhbmQgcmVwbGFjZSBwZXJsIHNlYXJjaCBhbmQgcmVwbGFjZSBlcnJvcnMsIG9mIGNvdXJzZQogICAKMjAwMi0wMy0yNSAxNDoyMyAgaGFyZGFrZXIKCiAgICogYWdlbnQvbWliZ3JvdXAvc211eC9zbXV4LmM6CgogICBhcGkgY2hhbmdlcwogICAKMjAwMi0wMy0yNSAwODo0MyAgZHRzMTIKCiAgICogd2luMzIvOiB3aW4zMi5vcHQgLCBsaWJzbm1wX2RsbC9saWJzbm1wLmRlZiAsCiAgIHNubXBidWxrZ2V0L3NubXBidWxrZ2V0LmRzcCAsIHNubXBidWxrd2Fsay9zbm1wYnVsa3dhbGsuZHNwCiAgICwgc25tcGQvc25tcGQuZHNwICwgc25tcGRlbHRhL3NubXBkZWx0YS5kc3AgLAogICBzbm1wZGYvc25tcGRmLmRzcCAsIHNubXBnZXQvc25tcGdldC5kc3AgLAogICBzbm1wZ2V0bmV4dC9zbm1wZ2V0bmV4dC5kc3AgLCBzbm1wbmV0c3RhdC9zbm1wbmV0c3RhdC5kc3AKICAgLCBzbm1wc2V0L3NubXBzZXQuZHNwICwgc25tcHN0YXR1cy9zbm1wc3RhdHVzLmRzcAogICAsIHNubXB0YWJsZS9zbm1wdGFibGUuZHNwICwgc25tcHRlc3Qvc25tcHRlc3QuZHNwCiAgICwgc25tcHRyYW5zbGF0ZS9zbm1wdHJhbnNsYXRlLmRzcCAsCiAgIHNubXB0cmFwL3NubXB0cmFwLmRzcCAsIHNubXB0cmFwZC9zbm1wdHJhcGQuZHNwICwKICAgc25tcHVzbS9zbm1wdXNtLmRzcCAsIHNubXB2YWNtL3NubXB2YWNtLmRzcCAsCiAgIHNubXB3YWxrL3NubXB3YWxrLmRzcDoKCiAgIFJlbW92ZSByZWR1bmRhbnQgZGVjbGFyYXRpb25zIG9mICdnZXRvcHQuYycgYW5kICdzbm1wX3BhcnNlX2FyZ3MuYycgaW4KICAgZWFjaCBpbmRpdmlkdWFsIGFwcGxpY2F0aW9uIHByb2plY3QuICBUaGVzZSByb3V0aW5lcyBhcmUgaW5jbHVkZWQgd2l0aGluCiAgIHRoZSBsaWJyYXJpZXMsIHNvIHdlIG1pZ2h0IGFzIHdlbGwgdXNlIHRob3NlLgogICAKMjAwMi0wMy0yNSAwNTo1MyAgZHRzMTIKCiAgICogd2luMzIvOiBtaWJfbW9kdWxlX2luaXRzLmggLCB3aW4zMi5vcHQgLAogICBsaWJzbm1wX2RsbC9saWJzbm1wLmRlZiAsIGxpYnNubXBfZGxsL2xpYnNubXBfZGxsLmRzcCAsCiAgIHNubXBkL3NubXBkLmRzcDoKCiAgIEdvdGNoYSEgIEV2ZXJ5dGhpbmcgbm93IGJ1aWxkcyAobW9yZS1vci1sZXNzKSBjbGVhbmx5IHVuZGVyIFZpc3VhbCBDKysuCiAgIFlvdSBzdGlsbCBoYXZlIHRvIHVzZSB0aGUgIkJhdGNoIEJ1aWxkIiBtZWNoYW5pc20gKG9yIGVsc2UgYmUgY2FyZWZ1bCB3aGljaAogICBvZiBsaWJzbm1wL2xpYnNubXBfZGxsIHlvdSBidWlsZCBpbiBlYWNoIG9mIHRoZSBEZWJ1ZyAmIFJlbGVhc2UgbW9kZXMpLAogICBhbmQgeW91IG5lZWQgdG8gYnVpbGQgdHdpY2UgaW4gb3JkZXIgdG8gZ2V0IGVuY29kZV9rZXljaGFuZ2UgbGlua2luZy4KICAgQnV0IHRoaW5ncyAqZG8qIGZpbmFsbHkgYnVpbGQuCiAgIAoyMDAyLTAzLTI0IDA1OjIxICBuYmEKCiAgICogc25tcGxpYi9taWIuYzoKCiAgIE9vcHMgLSBzbnByaW50XyogY2Fubm90IHJlYWxsb2MKICAgCjIwMDItMDMtMjMgMDk6NDAgIGhhcmRha2VyCgogICAqIGFwcHMvTWFrZWZpbGUuaW46CgogICByZWFsbHkgZml4IHNubXBpbmZvcm0gaW5zdGFsbHMgdGhpcyB0aW1lLgogICAKMjAwMi0wMy0yMiAyMjozMiAgaGFyZGFrZXIKCiAgICogYXBwcy9ub3RpZmljYXRpb25fbG9nLmM6CgogICBmaW5hbCBjbGVhbnVwcyBvZiBub3RpZmljYXRpb24gbG9nIHN1cHBvcnQKICAgCjIwMDItMDMtMjIgMjI6MzIgIGhhcmRha2VyCgogICAqIGFwcHMvTWFrZWZpbGUuaW46CgogICBmaXggaW5zdGFsbGF0aW9uIG9mIHNubXBpbmZvcm0KICAgCjIwMDItMDMtMjIgMjI6MzIgIGhhcmRha2VyCgogICAqIGFnZW50L2hlbHBlcnMvdGFibGVfZGF0YS5jICwgYWdlbnQvbWliZ3JvdXAvdGVzdGhhbmRsZXIuYwogICAsIGluY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfcmVnaXN0cnkuaCAsCiAgIGluY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfZGF0YS5oICwKICAgaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9kYXRhc2V0Lmg6CgogICBSZW5hbWUgc3R1ZmYuICBGaXggc3R1ZmYuICBZb3Uga25vdywgbm9ybWFsIHJvdXRpbmUuCiAgIAoyMDAyLTAzLTIyIDIyOjMxICBoYXJkYWtlcgoKICAgKiBjb25maWd1cmUgLCBjb25maWd1cmUuaW46CgogICBmaXggdmVyc2lvbiBmaWxlIGxvY2F0aW9uIGZvciBub24tc291cmNlZGlyIGJ1aWxkcwogICAKMjAwMi0wMy0yMiAxNDoxMyAgaGFyZGFrZXIKCiAgICogaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmg6CgogICBmb3Jnb3QgdG8gY29tbWl0IGEgcHJvdG90eXBlLgogICAKMjAwMi0wMy0yMiAxNDoxMiAgaGFyZGFrZXIKCiAgICogYWdlbnQvYWdlbnRfaGFuZGxlci5jICwgYWdlbnQvYWdlbnRfcmVnaXN0cnkuYyAsCiAgIGFnZW50L21pYmdyb3VwL2FnZW50eC9tYXN0ZXJfYWRtaW4uYyAsCiAgIGluY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfcmVnaXN0cnkuaDoKCiAgIHJlZ2lzdGVyX21pYl9jb250ZXh0MiAtPiBuZXRzbm1wX3JlZ2lzdGVyX21pYiAoYW5kIG1hcmtlZCBhcyBpbnRlcm5hbCkKICAgCjIwMDItMDMtMjIgMTQ6MDEgIGhhcmRha2VyCgogICAqIGFnZW50L21pYmdyb3VwL2FnZW50eC86IG1hc3Rlci5jICwgc3ViYWdlbnQuYzoKCiAgIHVzZSBuZXcgZXJyb3IgbG9nZ2luZyBhcGkgd2hlbiAhcm9vdAogICAKMjAwMi0wMy0yMiAxNDowMCAgaGFyZGFrZXIKCiAgICogc25tcGxpYi9zbm1wX2FwaS5jOgoKICAgZW5hYmxlIGxvZ2dpbmcgc2Vzc2lvbiBlcnJvcnMgdG8gc29tZSBsb2cgbGV2ZWwgb3RoZXIgdGhhbiBFUlIuCiAgIAoyMDAyLTAzLTIyIDEzOjU1ICBoYXJkYWtlcgoKICAgKiBhZ2VudC9taWJncm91cC9hZ2VudHgvOiBtYXN0ZXIuYyAsIHN1YmFnZW50LmM6CgogICBiZXR0ZXIgYWdlbnR4IGNvbm5lY3Rpb24gcmVsYXRlZCBlcnJvciBtZXNzYWdlcy4KICAgCjIwMDItMDMtMjIgMDk6MzUgIGR0czEyCgogICAqIHdpbjMyLzogd2luMzIuZHN3ICwgd2luMzIub3B0ICwKICAgbGliaGVscGVycy9saWJoZWxwZXJzLmRzcCAsIGxpYnNubXBfZGxsL2xpYnNubXAuZGVmICwKICAgbmV0c25tcG1pYnMvbmV0c25tcG1pYnMuZHNwICwgc25tcGQvc25tcGQuZHNwOgoKICAgU2xvd2x5IG1ha2luZyBwcm9ncmVzcyBvbiA1LjAgV2luZG93cyBidWlsZC4KICAgRXZlcnl0aGluZyBub3cgY29tcGlsZXMsIHRob3VnaCB0aGUgUmVsZWFzZSB2ZXJzaW9uIGRvZXNuJ3QgbGluay4KICAgICAoY29tcGxhaW5zIGFib3V0IGFzc29ydGVkIHVua25vd24gcm91dGluZXMgdGhhdCBhcmUgdGhlcmUsCiAgICAgIHN0YXJpbmcgaXQgaW4gdGhlIGZhY2UuICBHcnJyISEhISkKICAgCjIwMDItMDMtMjIgMDg6MjQgIGpicG4KCiAgICogYWdlbnQvbWliZ3JvdXAvYWdlbnR4L3Byb3RvY29sLmM6CgogICAgIC0gZG8gbm90ICJ0d2VhayIgcmFuZ2Vfc3ViaWQgd2hlbiBkZWFsaW5nIHdpdGggY29tcHJlc3NlZCBPSURzLgogICAgICAgVGhhbmtzIHRvIENyYWlnIFNldGVyYSBmb3IgcG9pbnRpbmcgb3V0IHRoaXMgZGV2aWF0aW9uIGZyb20gUkZDCiAgICAgICAyNzQxLgogICAKMjAwMi0wMy0yMiAwNzo1MCAgZHRzMTIKCiAgICogaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaCAsCiAgIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oICwgc25tcGxpYi9vaWRfYXJyYXkuYwogICAsIHNubXBsaWIvc25tcFRDUERvbWFpbi5jICwgc25tcGxpYi9zbm1wVURQRG9tYWluLmMKICAgLCBzbm1wbGliL3NubXBfYXBpLmMgLCBzbm1wbGliL3NubXBfY2xpZW50LmM6CgogICBWYXJpb3VzIG1pbm9yIGluY29uc2lzdGVuY2llcyAobW9zdGx5IHRvIGRvIHdpdGggc3VidGxlIHZhcmlhdGlvbnMgaW4gdHlwZXMpCiAgIAoyMDAyLTAzLTIyIDA3OjMxICByc3RvcnkKCiAgICogc25tcGxpYi9zbm1wX3BhcnNlX2FyZ3MuYzoKCiAgIGZpeCB0eXBvCiAgIAoyMDAyLTAzLTIyIDA3OjI5ICBkdHMxMgoKICAgKiB3aW4zMi86IG1pYl9tb2R1bGVfaW5jbHVkZXMuaCAsIG1pYl9tb2R1bGVfaW5pdHMuaCAsCiAgIG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oICwKICAgbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaDoKCiAgIEJyaW5nIFdpbmRvd3MgdmVyc2lvbnMgb2YgImF1dG9tYXRpY2FsbHktZ2VuZXJhdGVkIiBoZWFkZXIgZmlsZXMgdXAgdG8gZGF0ZS4KICAgCjIwMDItMDMtMjIgMDI6MjMgIGpicG4KCiAgICogYWdlbnQvbWliZ3JvdXAva2VybmVsX3N1bm9zNS5jOgoKICAgICAtIGRvbid0IHVzZSAicmVnIiBhcyBhIHBhcmFtZXRlciBuYW1lIGluIGtlcm5lbF9zdW5vczVfY2FjaGVfYWdlKCkKICAgICAgIGFzIC91c3IvaW5jbHVkZS9pbmV0L2NvbW1vbi5oIHNheXM6CiAgICAgICAjZGVmaW5lIHJlZyByZWdpc3RlcgogICAgICAgKCEpIHdoaWNoIHRoZSBjb21waWxlciB0aGVuIGJhcmZzIG9uLiAgUmVwb3J0ZWQgYXMgYnVnICM1MzMzMzYgYnkKICAgICAgIEFub255bW91cy4KICAgCjIwMDItMDMtMjEgMDk6MjQgIGhhcmRha2VyCgogICAqIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oICwKICAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmggLCBzbm1wbGliL3JlYWRfY29uZmlnLmMKICAgLCBzbm1wbGliL3NubXBfYXBpLmMgLCBzbm1wbGliL3NubXBfcGFyc2VfYXJncy5jOgoKICAgLSBzbm1wX2NvbmZpZyogLT4gbmV0c25tcF9jb25maWcgKGZvciBuZXcgZnVuY3Rpb25zIG9ubHkpCiAgIC0gZml4IGJ1ZyB3aGVyZSBzbm1wX2NvbmZpZygpIHN0cmluZ3Mgd2VyZSBnZXR0aW5nIHBhcnNlZCB0d2ljZS4KICAgCjIwMDItMDMtMjEgMDk6MjMgIGhhcmRha2VyCgogICAqIGFwcHMvc25tcHRyYXBkLmM6CgogICB3cmFwIGFnZW50eCBzdHVmZiBpbiBhIHN0aWxsIHVudXNlZCB2YXJpYWJsZSAoYXQgdGhpcyBwb2ludCkuCiAgIAoyMDAyLTAzLTIxIDA5OjIzICBoYXJkYWtlcgoKICAgKiBhcHBzL3NubXB0cmFuc2xhdGUuYzoKCiAgIHJlbW92ZSB1bnVzZWQgdmFyaWFibGUuCiAgIAoyMDAyLTAzLTIxIDA5OjIzICBoYXJkYWtlcgoKICAgKiBhZ2VudC9taWJncm91cC91dGlsaXRpZXMvb3ZlcnJpZGUuYzoKCiAgIGZpeCBvaWQgcGFyc2luZy4KICAgCjIwMDItMDMtMjEgMDk6MjIgIGhhcmRha2VyCgogICAqIGFnZW50L21pYmdyb3VwLzogUm1vbi9hbGFybS5jICwgUm1vbi9zdGF0aXN0aWNzLmMgLAogICBtaWJJSS9hdC5jOgoKICAgY2hhbmdlIC8vIGNvbWVudHMgdG8gLyogKi8gY29tbWVudHMgKGJhZCBiYWQgYmFkKQogICAKMjAwMi0wMy0yMSAwNjo0MCAgaGFyZGFrZXIKCiAgICogc25tcGxpYi9zbm1wLXRjLmM6CgogICBjaGFuZ2UgLy8gY29tZW50cyB0byAvKiAqLyBjb21tZW50cyAoYmFkIGJhZCBiYWQpCiAgIAoyMDAyLTAzLTIwIDIwOjEyICBoYXJkYWtlcgoKICAgKiBzbm1wbGliL3NubXBfYXBpLmM6CgogICBhZGQgYSBsaXN0IG9mIHJlZ2lzdGVyZWQgdGV4dCBlbnVtcyB0byBBU05fKiB2YWx1ZXMuCiAgICAgKEluIHByb2JhYmx5IHRoZSB3cm9uZyBwbGFjZS4pCiAgIAoyMDAyLTAzLTIwIDIwOjExICBoYXJkYWtlcgoKICAgKiBjb25maWd1cmUgLCBjb25maWd1cmUuaW4gLAogICBhZ2VudC9taWJncm91cC91dGlsaXRpZXMuaCAsCiAgIGFnZW50L21pYmdyb3VwL3V0aWxpdGllcy9vdmVycmlkZS5jICwKICAgYWdlbnQvbWliZ3JvdXAvdXRpbGl0aWVzL292ZXJyaWRlLmg6CgogICBjcmVhdGUgYSBuZXcgIm92ZXJyaWRlIiBkaXJlY3RpdmUgdG8gZm9yY2UgYW4gT0lEIHRvIGEgcGFydGljdWxhciB2YWx1ZQogICAtIG5vdCBmaW5pc2hlZC4gIEl0J3MgZGVzaWduZWQgdG8gZG8gcmVhZC13cml0ZSBhcyB3ZWxsLCBidXQgZG9lc24ndC4KICAgCjIwMDItMDMtMjAgMjA6MDggIGhhcmRha2VyCgogICAqIGFnZW50L2hlbHBlcnMvaW5zdGFuY2UuYzoKCiAgIGNoZWNrIGZvciBpbmNsdXNpdmUKICAgCjIwMDItMDMtMjAgMTE6MzcgIGhhcmRha2VyCgogICAqIGluY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfZGF0YXNldC5oOgoKICAgaW5jbHVkZSBuZXcgZGVsZXRlL3JlbW92ZSBicmVha2Rvd24gQVBJcwogICAKMjAwMi0wMy0yMCAxMTozNiAgaGFyZGFrZXIKCiAgICogYXBwcy9ub3RpZmljYXRpb25fbG9nLmM6CgogICBBUEkgY2hhbmdlLgogICAKMjAwMi0wMy0yMCAxMTozNiAgaGFyZGFrZXIKCiAgICogYWdlbnQvaGVscGVycy90YWJsZV9kYXRhc2V0LmM6CgogICBzb21lICJ0aGlzIHdpbGwgY2hhbmdlIiBlYXJseSByb3cgc3RhdHVzIGltcGxlbWVudGF0aW9uLgogICAgLSAodGhpcyB3aWxsIG1vdmUgdG8gYSBzZXBhcmF0ZSBoYW5kbGVyKQogICAKMjAwMi0wMy0yMCAxMTozNSAgaGFyZGFrZXIKCiAgICogYWdlbnQvaGVscGVycy90YWJsZV9kYXRhLmM6CgogICBwb2ludGVyIGNoZWNraW5nIGFnYWluc3QgaWxsZWdhbCBhZGRzIChpZSwgc2hvdWxkbid0IGhhcHBlbiBidXQgY2hlY2sgYW55d2F5KQogICAKMjAwMi0wMy0yMCAwODo0MiAgaGFyZGFrZXIKCiAgICogbG9jYWwvbWliMmMuY3JlYXRlLWRhdGFzZXQuY29uZjoKCiAgIE9rLCBJIG1ha2UgbWlzdGFrZXMuICBJIGFkbWl0IGl0LiAgSXQgcmVhbGx5IHNob3VsZCBoYXZlIGJlZW4gYSBOVUxMLgogICAKMjAwMi0wMy0yMCAwODozNyAgaGFyZGFrZXIKCiAgICogbG9jYWwvbWliMmMuY3JlYXRlLWRhdGFzZXQuY29uZjoKCiAgIGFkZCBtaXNzaW5nIGNvbW1hCiAgIAoyMDAyLTAzLTIwIDA4OjM2ICBoYXJkYWtlcgoKICAgKiBhZ2VudC9oZWxwZXJzL3RhYmxlX2RhdGEuYyAsCiAgIGluY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfZGF0YS5oOgoKICAgc2VwYXJhdGUgb3V0IGRlbGV0ZS9yZW1vdmUgcm93IGZ1bmN0aW9uYWxpdHkKICAgCjIwMDItMDMtMjAgMDc6NDcgIGhhcmRha2VyCgogICAqIGFnZW50L21pYmdyb3VwL21pYklJLzogc3lzdGVtX21pYi5jIChWNC0yLXBhdGNoZXMuNiksCiAgIHN5c3RlbV9taWIuYzoKCiAgIHJlbW92ZSBpbGxlZ2FsIFNFVCBzdXBwb3J0IGZvciBzeXNEZXNjci4KICAgCjIwMDItMDMtMjAgMDY6MjcgIGhhcmRha2VyCgogICAqIENvZGluZ1N0eWxlICwgbG9jYWwvbWliMmM6CgogICAtIGFkZCBtYW55IG1hbnkgLVQgZmxhZ3MgZm9yIGRlZmluaW5nIHR5cGVzLgogICAKMjAwMi0wMy0xOSAyMToxMyAgaGFyZGFrZXIKCiAgICogYXBwcy9zbm1wdHJhcGQuYzoKCiAgIGZvcmNlIHNldHRpbmcgb2YgJyFyb290JyBmbGFnIHNvIHRoYXQgaXQgd2lsbCBydW4gZm9yIG5vbi1wcml2aWxlZ2VkCiAgIHVzZXJzIG9yIHdoZW4gYW4gYWdlbnR4IG1hc3RlciBzaW1wbHkgaGFzIG5ldmVyIGV4aXN0ZWQuCiAgIAoyMDAyLTAzLTE5IDE2OjAyICBoYXJkYWtlcgoKICAgKiBhZ2VudC9oZWxwZXJzL3RhYmxlX2RhdGFzZXQuYyAsCiAgIGluY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfZGF0YXNldC5oOgoKICAgLSBhbGxvdyB0YWJsZXMgdG8gYmUgbWFya2VkIHdoZXRoZXIgdGhleSBzaG91bGQgc3VwcG9ydCBjcmVhdGlvbiBvciBub3QuCiAgIC0gYnVnIGZpeGVzCiAgIAoyMDAyLTAzLTE5IDA3OjMyICBoYXJkYWtlcgoKICAgKiBhZ2VudC9oZWxwZXJzLzogdGFibGVfZGF0YS5jICwgdGFibGVfZGF0YXNldC5jOgoKICAgZG9jdW1lbnRhdGlvbiBjbGVhbiB1cAogICAKMjAwMi0wMy0xOSAwNzoyOCAgaGFyZGFrZXIKCiAgICogYWdlbnQvOiBhZ2VudF9oYW5kbGVyLmMgLCBoZWxwZXJzL3RhYmxlX2RhdGEuYzoKCiAgIGRvY3VtZW50YXRpb24gY2xlYW4gdXAKICAgCjIwMDItMDMtMTkgMDc6MTcgIGhhcmRha2VyCgogICAqIGFnZW50LzogYWdlbnRfaGFuZGxlci5jICwgaGVscGVycy9idWxrX3RvX25leHQuYyAsCiAgIGhlbHBlcnMvdGFibGVfZGF0YXNldC5jICwgbWliZ3JvdXAvZXhhbXBsZXMvc2NhbGFyX2ludC5jOgoKICAgZG9jdW1lbnRhdGlvbiBjbGVhbiB1cAogICAKMjAwMi0wMy0xOSAwNjo0MyAgaGFyZGFrZXIKCiAgICogYWdlbnQvYWdlbnRfaGFuZGxlci5jICwgYWdlbnQvYWdlbnRfcmVnaXN0cnkuYyAsCiAgIGFnZW50L3NubXBfYWdlbnQuYyAsIGFnZW50L2hlbHBlcnMvaW5zdGFuY2UuYyAsCiAgIGFnZW50L2hlbHBlcnMvb2xkX2FwaS5jICwgYWdlbnQvaGVscGVycy90YWJsZS5jICwKICAgYWdlbnQvaGVscGVycy90YWJsZV9hcnJheS5jICwgYWdlbnQvaGVscGVycy90YWJsZV9kYXRhLmMKICAgLCBhZ2VudC9oZWxwZXJzL3RhYmxlX2RhdGFzZXQuYyAsCiAgIGFnZW50L2hlbHBlcnMvdGFibGVfaXRlcmF0b3IuYyAsIGFnZW50L21pYmdyb3VwL3Rlc3RkZWxheWVkLmMKICAgLCBhZ2VudC9taWJncm91cC90ZXN0aGFuZGxlci5jICwKICAgYWdlbnQvbWliZ3JvdXAvYWdlbnR4L21hc3Rlcl9hZG1pbi5jICwKICAgYXBwcy9ub3RpZmljYXRpb25fbG9nLmMgLCBpbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oICwKICAgaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9oYW5kbGVyLmggLAogICBpbmNsdWRlL25ldC1zbm1wL2FnZW50L3NubXBfYWdlbnQuaCAsCiAgIGluY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGUuaCAsCiAgIGluY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfZGF0YS5oICwKICAgaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9kYXRhc2V0LmggLAogICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmggLAogICBsb2NhbC9taWIyYy5jcmVhdGUtZGF0YXNldC5jb25mICwgcGVybC9hZ2VudC9hZ2VudC54cyAsCiAgIHNubXBsaWIvZGF0YV9saXN0LmM6CgogICAtIHJlbmFtZWQgYSBmZXcgYmFkbHkgbmFtZWQgZnVuY3Rpb25zIChuZXRzbm1wXyBhcHBlYXJlZCB0d2ljZSkuCiAgIC0gaW1wbGVtZW50ZWQgdGhlIGJlZ2lubmluZyBvZiBjcmVhdGlvbiBzdXBwb3J0IGZvciBkYXRhc2V0cy4KICAgCjIwMDItMDMtMTkgMDY6MzUgIGhhcmRha2VyCgogICAqIGNvbmZpZ3VyZToKCiAgIEFwcGFyZW50bHkgSSByYW4gYXV0b2NvbmYgZWFybGllciBhbmQgbWlzc2VkIGNoZWNraW5nIGluIHRoZSByZXN1bHRzLgogICAKMjAwMi0wMy0xOSAwNjozNSAgaGFyZGFrZXIKCiAgICogQ29kaW5nU3R5bGU6CgogICBhZGQgLW5mY2EKICAgCjIwMDItMDMtMTcgMTY6MjUgIGhhcmRha2VyCgogICAqIGFwcHMvc25tcHRyYXAuYzoKCiAgIFNldCBkZWZhdWx0IHBvcnQgdG8gMTYyLgogICAKMjAwMi0wMy0xNyAxNTo1MSAgaGFyZGFrZXIKCiAgICogc25tcGxpYi86IHNubXBUQ1BEb21haW4uYyAsIHNubXBVRFBEb21haW4uYzoKCiAgIGltcHJvdmVkIGZvcm1hdHRpbmcgc3RyaW5ncyBzaG93aW5nIGJvdGggdHJhbnNwb3J0IHR5cGUgYW5kIHBvcnQgbnVtYmVyLgogICAKMjAwMi0wMy0xMyAyMzozMCAgaGFyZGFrZXIKCiAgICogTWFrZWZpbGUucnVsZXM6CgogICBhZGQgbWlzc2luZyAiaW5zdGFsbHN1YmRpcnMiIHRhcmdldCBtaXNzaW5nICh0aGFua3MgdG8gS2F0c3VoaXNhIEFCRSkKICAgCjIwMDItMDMtMTMgMjM6MjcgIGhhcmRha2VyCgogICAqIGNvbmZpZ3VyZS5pbiAsIG5ldC1zbm1wLWNvbmZpZy5pbjoKCiAgIGFkZCAtLWNyZWF0ZS1zbm1wdjMtdXNlciB0byBhdXRvbWF0ZSBhZGRpbmcgYSB2MyB1c2VyIHRvIGJvdGggdGhlIHVzbQogICBhbmQgdmFjbSB0YWJsZXMgKGJ5IGFkZGluZyBsaW5lcyB0byBib3RoIHRoZSBwZXJzaXN0ZW50IGFuZCBub3JtYWwKICAgY29uZiBmaWxlcykuCiAgIAoyMDAyLTAzLTEzIDE2OjMwICBoYXJkYWtlcgoKICAgKiBhZ2VudC9taWJncm91cC9hZ2VudC9uc01vZHVsZVRhYmxlLmM6CgogICBidWcgZml4IGZvciBwcmUtcHJvY2Vzc2VkIHJlcXVlc3RzLgogICAKMjAwMi0wMy0xMyAxNjozMCAgaGFyZGFrZXIKCiAgICogTWFrZWZpbGUucnVsZXMgLCBjb25maWd1cmUgLCBjb25maWd1cmUuaW4gLAogICBhZ2VudC9NYWtlZmlsZS5pbiAsIGFnZW50L21pYmdyb3VwL2FnZW50X21pYnMuaCAsCiAgIGluY2x1ZGUvdWNkLXNubXAvYWdlbnRfaW5kZXguaCAsCiAgIGluY2x1ZGUvdWNkLXNubXAvYWdlbnRfcmVhZF9jb25maWcuaCAsCiAgIGluY2x1ZGUvdWNkLXNubXAvYWdlbnRfcmVnaXN0cnkuaCAsCiAgIGluY2x1ZGUvdWNkLXNubXAvYWdlbnRfdHJhcC5oICwgaW5jbHVkZS91Y2Qtc25tcC9hc24xLmggLAogICBpbmNsdWRlL3VjZC1zbm1wL2F1dG9fbmxpc3QuaCAsIGluY2x1ZGUvdWNkLXNubXAvY2FsbGJhY2suaAogICAsIGluY2x1ZGUvdWNkLXNubXAvZGVmYXVsdF9zdG9yZS5oICwKICAgaW5jbHVkZS91Y2Qtc25tcC9kc19hZ2VudC5oICwKICAgaW5jbHVkZS91Y2Qtc25tcC9oZWFkZXJfY29tcGxleC5oICwgaW5jbHVkZS91Y2Qtc25tcC9pbnQ2NC5oCiAgICwgaW5jbHVkZS91Y2Qtc25tcC9rZXl0b29scy5oICwgaW5jbHVkZS91Y2Qtc25tcC9taWIuaAogICAsIGluY2x1ZGUvdWNkLXNubXAvbWliX21vZHVsZV9jb25maWcuaCAsCiAgIGluY2x1ZGUvdWNkLXNubXAvbWliaW5jbC5oICwgaW5jbHVkZS91Y2Qtc25tcC9wYXJzZS5oICwKICAgaW5jbHVkZS91Y2Qtc25tcC9yZWFkX2NvbmZpZy5oICwgaW5jbHVkZS91Y2Qtc25tcC9zY2FwaS5oCiAgICwgaW5jbHVkZS91Y2Qtc25tcC9zbm1wLXRjLmggLCBpbmNsdWRlL3VjZC1zbm1wL3NubXAuaAogICAsIGluY2x1ZGUvdWNkLXNubXAvc25tcF9hZ2VudC5oICwKICAgaW5jbHVkZS91Y2Qtc25tcC9zbm1wX2FsYXJtLmggLCBpbmNsdWRlL3VjZC1zbm1wL3NubXBfYXBpLmgKICAgLCBpbmNsdWRlL3VjZC1zbm1wL3NubXBfY2xpZW50LmggLAogICBpbmNsdWRlL3VjZC1zbm1wL3NubXBfZGVidWcuaCAsIGluY2x1ZGUvdWNkLXNubXAvc25tcF9pbXBsLmgKICAgLCBpbmNsdWRlL3VjZC1zbm1wL3NubXBfbG9nZ2luZy5oICwKICAgaW5jbHVkZS91Y2Qtc25tcC9zbm1wX3BhcnNlX2FyZ3MuaCAsCiAgIGluY2x1ZGUvdWNkLXNubXAvc25tcF92YXJzLmggLCBpbmNsdWRlL3VjZC1zbm1wL3NubXB1c20uaAogICAsIGluY2x1ZGUvdWNkLXNubXAvc25tcHYzLmggLCBpbmNsdWRlL3VjZC1zbm1wL3N0cnVjdC5oCiAgICwgaW5jbHVkZS91Y2Qtc25tcC9zeXN0ZW0uaCAsIGluY2x1ZGUvdWNkLXNubXAvdG9vbHMuaAogICAsIGluY2x1ZGUvdWNkLXNubXAvdHJhbnNmb3JtX29pZHMuaCAsCiAgIGluY2x1ZGUvdWNkLXNubXAvdWNkLXNubXAtYWdlbnQtaW5jbHVkZXMuaCAsCiAgIGluY2x1ZGUvdWNkLXNubXAvdWNkLXNubXAtaW5jbHVkZXMuaCAsCiAgIGluY2x1ZGUvdWNkLXNubXAvdXRpbF9mdW5jcy5oICwgaW5jbHVkZS91Y2Qtc25tcC92YXJfc3RydWN0LmgKICAgLCBpbmNsdWRlL3VjZC1zbm1wL3ZlcnNpb24uaDoKCiAgIC0gLS1lbmFibGUtdWNkLXNubXAtY29tcGF0aWJpbGl0eSBhY3R1YWxseSBpbnN0YWxscyBoZWFkZXJzIChhcyBvcHBvc2VkCiAgICAgdG8gYWx3YXlzLCB3aGljaCBpcyB3aGF0IGl0IHVzZWQgdG8gZG8pLgogICAtIGFkZCBhZ2VudF9taWJzIHRvIGNvbmZpZ3VyZSBkZWZhdWx0IG1pYiBtb2R1bGVzIGFuZCBkb2N1bWVudC4KICAgLSBjaGFuZ2UgaGVscCBkb2N1bWVudGF0aW9uIGEgYml0IGZvciB0aGUgbWliIG1vZHVsZXMuCiAgIC0gYWRkIGEgZm9yY2VkIGRlcGVuZGVuY3kgZm9yIG1pYl9tb2R1bGVzLmxvCiAgIAoyMDAyLTAzLTEzIDE2OjEzICBoYXJkYWtlcgoKICAgKiBhZ2VudC9taWJncm91cC9hZ2VudC5oOgoKICAgb3Bwcy4gIGR1cGxpY2F0ZXMgZXhpc3RpbmcgYWdlbnRfbWlicy5oCiAgIAoyMDAyLTAzLTEzIDE1OjUwICBoYXJkYWtlcgoKICAgKiBtaWJzLzogVUNELURFTU8tTUlCLnR4dCwgVUNELURJU0tJTy1NSUIudHh0LCBVQ0QtRExNT0QtTUlCLnR4dCwKICAgVUNELUlQRklMVEVSLU1JQi50eHQsIFVDRC1JUEZXQUNDLU1JQi50eHQsIFVDRC1TTk1QLU1JQi50eHQKICAgKFY0LTItcGF0Y2hlcy5bMSwxLDEsMSwxLDldKSwgVUNELURFTU8tTUlCLnR4dCAsCiAgIFVDRC1ESVNLSU8tTUlCLnR4dCAsIFVDRC1ETE1PRC1NSUIudHh0ICwKICAgVUNELUlQRklMVEVSLU1JQi50eHQgLCBVQ0QtSVBGV0FDQy1NSUIudHh0ICwKICAgVUNELVNOTVAtTUlCLnR4dDoKCiAgIGFkZHJlc3MgY2hhbmdlcyBmb3IgdWNkLXNubXAgLT4gbmV0LXNubXAgbm90ZSBzYXlpbmcgdGhlc2UgbWlicyBhcmUgbm8KICAgbG9uZ2VyIHN1cHBvcnRlZCBieSBVQ0QuCiAgIAoyMDAyLTAzLTEzIDE1OjM5ICBoYXJkYWtlcgoKICAgKiBhZ2VudC9taWJncm91cC9hZ2VudC5oICwKICAgYWdlbnQvbWliZ3JvdXAvYWdlbnQvbnNNb2R1bGVUYWJsZS5jICwKICAgYWdlbnQvbWliZ3JvdXAvYWdlbnQvbnNNb2R1bGVUYWJsZS5oICwKICAgbWlicy9ORVQtU05NUC1BR0VOVC1NSUIudHh0OgoKICAgQWRkZWQgYSBuc01vZHVsZVRhYmxlIHRhYmxlIHdoaWNoIHJlcGxhY2VzIHRoZSBvbGRlciBtclRhYmxlLgogICBGdW5jdGlvbmFsbHksIHRoaXMgaXMgYSBsaXN0IG9mIGFsbCByZWdpc3RlcmVkIGl0ZW1zIHdpdGhpbiB0aGUgTUlCCiAgIHRyZWUganVzdCBsaWtlIHRoZSBtclRhYmxlIHdhcywgYnV0IHdpdGggc3VwcG9ydCBmb3IgY29udGV4dHMgYW5kIGZvcgogICBkdXBsaWNhdGUgcmVnaXN0cmF0aW9ucyB3aXRoIGRpZmZlcmVudCBwcmlvcml0aWVzLgogICAKMjAwMi0wMy0xMyAxNToyMSAgaGFyZGFrZXIKCiAgICogc25tcGxpYi86IHRvb2xzLmMgKFY0LTItcGF0Y2hlcy40KSwgdG9vbHMuYzoKCiAgIG1hbGxvYyBhdCBsZWFzdCBvbmUgYnl0ZSBpbiBoZXhfdG9fYmluYXJ5MgogICAKMjAwMi0wMy0xMyAxNToxMSAgaGFyZGFrZXIKCiAgICogYWdlbnQvaGVscGVycy90YWJsZV9pdGVyYXRvci5jOgoKICAgcmVtb3ZlIHVubmVlZGVkIGRlYnVnIHN0YXRlbWVudAogICAKMjAwMi0wMy0xMyAxNDoxMCAgaGFyZGFrZXIKCiAgICogc25tcGxpYi9taWIuYzoKCiAgIFVzZSBsb2NhbCB2YXJpYWJsZSBuYW1lIGJ1ZmZlcnMgYnkgZGVmYXVsdCB3aGVuIGJ1aWxkaW5nIG9pZCBzZWdtZW50cy4KICAgCjIwMDItMDMtMTMgMTQ6MDkgIGhhcmRha2VyCgogICAqIGFnZW50L2hlbHBlcnMvdGFibGVfaXRlcmF0b3IuYzoKCiAgIC8qIHN0b3Agd2F0ZXIgZnJvbSBmbG93aW5nIHRocm91Z2ggZGFtICovCiAgIGZpbmdlci0+aW5zZXJ0KCJob2xlIikKICAgCjIwMDItMDMtMTMgMDQ6MDMgIGR0czEyCgogICAqIEZBUSAoVjQtMi1wYXRjaGVzLjcpLCBGQVE6CgogICBBZGQgYSBkZXNjcmlwdGlvbiBvZiAidW5saW5rZWQgT0lEcyIuCiAgIAoyMDAyLTAzLTEyIDIxOjMwICBoYXJkYWtlcgoKICAgKiBsb2NhbC86IG1pYjJjLmNyZWF0ZS1kYXRhc2V0LmNvbmYgLCBtaWIyYy5pdGVyYXRlLmNvbmY6CgogICBmaXggaGVhZGVycy4KICAgCjIwMDItMDMtMTIgMjE6MTUgIGhhcmRha2VyCgogICAqIGxvY2FsL21pYjJjOgoKICAgYWRkIGRvbid0IGZvcm1hdCBjb21tZW50cyBvcHRpb24KICAgCjIwMDItMDMtMTIgMjE6MTAgIGhhcmRha2VyCgogICAqIGFnZW50L2hlbHBlcnMvdGFibGVfZGF0YXNldC5jOgoKICAgZml4IGZvciB0YWJsZXMgd2l0aCBob2xlcy4KICAgCjIwMDItMDMtMTIgMjE6MDkgIGhhcmRha2VyCgogICAqIG1pYnMvTWFrZWZpbGUuaW46CgogICBtb3ZlIGRlZmF1bHQgbWlicyB0byB0aGVpciBvd24gdmFyaWFibGUuCiAgIAoyMDAyLTAzLTEyIDIxOjA2ICBoYXJkYWtlcgoKICAgKiBwZXJsLzogU05NUC9NYWtlZmlsZS5QTCAsIGFnZW50L01ha2VmaWxlLlBMICwKICAgYWdlbnQvYWdlbnQueHMgLCBhZ2VudC90eXBlbWFwOgoKICAgLSB1c2UgbmV0LXNubXAtY29uZmlnIHRvIGZpZ3VyZSB0aGluZ3Mgb3V0LgogICAtIHVwZGF0ZSBoZWFkZXJzIGFuZCB0eXBlaW5mbyBmb3IgcmVjZW50IGNoYW5nZXMuCiAgIAoyMDAyLTAzLTEyIDIwOjM0ICBoYXJkYWtlcgoKICAgKiBsb2NhbC86IEZBUTJIVE1MICwgUkVBRE1FLm1pYjJjICwgbWliMmMgLCB0a21pYgogICAsIG1pYjJjLmFycmF5LWF1dG8uY29uZiAsIG1pYjJjLmFycmF5LXVzZXIuY29uZjoKCiAgIHVjZC1zbm1wIC0+IG5ldC1zbm1wIGNoYW5nZXMuCiAgIAoyMDAyLTAzLTEyIDIwOjMzICBoYXJkYWtlcgoKICAgKiBsb2NhbC9taWIyYy5zdG9yYWdlLmNvbmY6CgogICByZW1vdmUgb2Jzb2xldGUgbWliMmMuY29uZiBmaWxlCiAgIAoyMDAyLTAzLTEyIDE4OjExICBoYXJkYWtlcgoKICAgKiBhZ2VudC9oZWxwZXJzL3RhYmxlX2RhdGEuYzoKCiAgIGRvbid0IGZvcmdldCB0byBzZXQgcm93LT5uZXh0LT5wcmV2IHRvIHNvbWV0aGluZyB3aGVuIHJlbW92aW5nIHJvdy4KICAgCjIwMDItMDMtMTIgMTc6NTQgIGhhcmRha2VyCgogICAqIGFnZW50L3NubXBfYWdlbnQuYzoKCiAgIGZpeCBhZ2VudHggaW5jbHVzaXZlIHNlYXJjaGVzIHRvIGlnbm9yZSBnZXQgZXJyb3JzLgogICAKMjAwMi0wMy0xMiAxNzo1MyAgaGFyZGFrZXIKCiAgICogc25tcGxpYi9zbm1wQ2FsbGJhY2tEb21haW4uYzoKCiAgIHNvbWUgbWluaW1hbCBkdW1wIGRlYnVnZ2luZy4KICAgCjIwMDItMDMtMTIgMDg6MzQgIGR0czEyCgogICAqIEZBUSAoVjQtMi1wYXRjaGVzLjYpLCBGQVE6CgogICBVcGRhdGluZyBvZiB0aGUgRkFRIHJlYWR5IGZvciB0aGUgbmV4dCByZWxlYXNlLgogICAoTW9zdGx5IHJlcGhyYXNpbmcgb2YgZXhpc3RpbmcgZW50cmllcywgYnV0IGEgZmV3IG5ldyBxdWVzdGlvbnMpCiAgIAoyMDAyLTAzLTExIDE4OjAwICByc3RvcnkKCiAgICogYWdlbnQvaGVscGVycy90YWJsZV9kYXRhc2V0LmM6CgogICBjYXN0IC0xIHRvIHVfY2hhciBzbyB0ZXN0IGRvZXNuJ3QgYWx3YXlzIGZhaWwgKGZpeCBjb21waWxlciB3YXJuaW5nKQogICAKMjAwMi0wMy0xMSAxNzoyNyAgaGFyZGFrZXIKCiAgICogYWdlbnQvbWliZ3JvdXAvYWdlbnR4L21hc3Rlci5jOgoKICAgdHJlYXQgKGlsbGVnYWwpIGVycm9ycyBmcm9tIHN1YmFnZW50cyBzcGVjaWFsbHkgZm9yIGdldG5leHQgY2FzZXMuCiAgIAoyMDAyLTAzLTExIDEzOjQxICBoYXJkYWtlcgoKICAgKiBuZXQtc25tcC1jb25maWcuaW46CgogICBhZGQgb3VyIHNubXAgbGlicmFyaWVzIHRvIG91dHB1dAogICAKMjAwMi0wMy0xMSAxMDozNCAgaGFyZGFrZXIKCiAgICogaW5jbHVkZS9uZXQtc25tcC9hZ2VudC86IHRhYmxlX2RhdGEuaCAsIHRhYmxlX2RhdGFzZXQuaDoKCiAgIGRlbGV0ZS9yZW1vdmUgc3VwcG9ydCBoZWFkZXIgY2hhbmdlcy4KICAgCjIwMDItMDMtMTEgMDk6MTMgIGpicG4KCiAgICogYWdlbnQvbWliZ3JvdXAvbWliSUkvdmFjbV92YXJzLmM6CgogICAgIC0gYWxsb3cgY29tcGlsYXRpb24gLS13aXRoLW91dC10cmFuc3BvcnRzPVRDUAogICAKMjAwMi0wMy0xMSAwODoyMSAgamJwbgoKICAgKiBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9kZWJ1Zy5oOgoKICAgICAtIGZpeGVzIGZvciAtLWRpc2FibGUtZGVidWdnaW5nCiAgIAoyMDAyLTAzLTExIDA3OjQxICBkdHMxMgoKICAgKiBGQVEgKFY0LTItcGF0Y2hlcy41KSwgRkFROgoKICAgQnJpbmcgdGhlIDR4LSBhbmQgbWFpbi1icmFuY2ggRkFRcyBpbnRvIGFncmVlbWVudC4KICAgCjIwMDItMDMtMTEgMDY6NTEgIGpicG4KCiAgICogYWdlbnQvbWliZ3JvdXAvYWdlbnR4L21hc3Rlci5jOgoKICAgICAtIHVzZSBjb3JyZWN0IHNlc3Npb24gSUQgd2hlbiB0YWxraW5nIHRvIHN1YmFnZW50cy4gIFRoYW5rcyB0byBDcmFpZwogICAgICAgU2V0ZXJhIGZvciB0aGlzIGZpeC4KICAgCjIwMDItMDMtMTEgMDU6MjAgIGpicG4KCiAgICogc25tcGxpYi9wYXJzZS5jOgoKICAgICAtIGZpeCBiYWQgdHlwZSBhc3NpZ25tZW50IGluIGJ1aWxkX3RyYW5zbGF0aW9uX3RhYmxlKCksIG5vdGljZWQgYnkKICAgICAgIFBldGVyIFN0ZXZlbnMuCiAgIAoyMDAyLTAzLTExIDAwOjEzICBoYXJkYWtlcgoKICAgKiBhcHBzL3NubXB0cmFwZC5jOgoKICAgY2hlY2sgZm9yIE5VTEwgZnJlZXMsIGV2ZW4gdGhvdWdoIGl0J3Mgc3VwcG9zZWQgdG8gYmUgb2sgYWNjb3JkaW5nIHRvIGFuc2kuCiAgIAoyMDAyLTAzLTExIDAwOjEyICBoYXJkYWtlcgoKICAgKiBhcHBzL25vdGlmaWNhdGlvbl9sb2cuYzoKCiAgIGJlZ2lubmluZyBzdXBwb3J0IGZvciBtYXhpbXVtIGxvZ2dlZCBjaGVja2luZy4KICAgCjIwMDItMDMtMTEgMDA6MTEgIGhhcmRha2VyCgogICAqIGFnZW50L2hlbHBlcnMvdGFibGVfZGF0YXNldC5jOgoKICAgLSByZW1vdmUvZGVsZXRlIHJvdyBzdXBwb3J0LgogICAtIG51bGwgY2hlY2sKICAgLSBkb2MgY29tbWVudHMuCiAgIAoyMDAyLTAzLTExIDAwOjEwICBoYXJkYWtlcgoKICAgKiBhZ2VudC9oZWxwZXJzL3RhYmxlX2RhdGEuYzoKCiAgIHJlbW92ZS9kZWxldGUgcm93IHN1cHBvcnQuCiAgIAoyMDAyLTAzLTExIDAwOjA4ICBoYXJkYWtlcgoKICAgKiBhZ2VudC9oZWxwZXJzL2luc3RhbmNlLmM6CgogICBjYWxsIG5leHQgaGFuZGxlcnMgKG9wcHMpLgogICAKMjAwMi0wMy0xMCAxNDoxMSAgbmJhCgogICAqIG1hbi9taWJfYXBpLjMuZGVmOgoKICAgRml4IG9uZSBzcHJpbnRfdmFyaWFibGUgPT4gc25wcmludF92YXJpYWJsZQogICAKMjAwMi0wMy0xMCAxNDowNiAgbmJhCgogICAqIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaCAsIHNubXBsaWIvbWliLmM6CgogICBBZGQgc25wcmludF8qIGZ1bmN0aW9ucyB0aGF0IHdlcmUgc3ByaW50XyogaW4gdWNkLXNubXAgNAogICAKMjAwMi0wMy0xMCAxNDowNSAgbmJhCgogICAqIGluY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaCAsIHNubXBsaWIvc25tcElQWERvbWFpbi5jCiAgICwgc25tcGxpYi9zbm1wX3RyYW5zcG9ydC5jOgoKICAgRml4IGNvbXBpbGF0aW9uIHdoZW4gSVBYLXRyYW5zcG9ydCBlbmFibGVkCiAgIAoyMDAyLTAzLTEwIDE0OjAzICBuYmEKCiAgICogYXBwcy9zbm1wbmV0c3RhdC9NYWtlZmlsZS5pbjoKCiAgIEZpeCBjb21waWxhdGlvbiBvdXRzaWRlIHNvdXJjZSBkaXJlY3RvcnkKICAgCjIwMDItMDMtMDggMjI6MjYgIGhhcmRha2VyCgogICAqIEZBUSAsIHNlZHNjcmlwdC5pbiAsIHBlcmwvU05NUC9TTk1QLnBtICwKICAgc25tcGxpYi9zbm1wX3ZlcnNpb24uYzoKCiAgIC0gKHNubXBsaWIvc25tcF92ZXJzaW9uLmMgc2Vkc2NyaXB0LmluKTogdmVyc2lvbiB0YWcgKCA1LjAucHJlMiApCiAgIAoyMDAyLTAzLTA4IDE4OjIzICBoYXJkYWtlcgoKICAgKiBSRUFETUU6CgogICBtaXNjIGNoYW5nZXMuCiAgIAoyMDAyLTAzLTA4IDE4OjIzICBoYXJkYWtlcgoKICAgKiBwZXJsL1NOTVAvU05NUC54czoKCiAgIG5ldyBhcGkgY2hhbmdlcwogICAKMjAwMi0wMy0wOCAxNzoyMCAgaGFyZGFrZXIKCiAgICogYWdlbnQvbWliZ3JvdXAvbWliSUkvbXRhX3NlbmRtYWlsLmM6CgogICBQYXRjaCBmcm9tIExhd3JlbmNlIEdyZWVuZmllbGQgdG8gZGVhbCB3aXRoIFNlbmRtYWlsIDguMTIgcXVldWVncm91cHMuCiAgIAoyMDAyLTAzLTA4IDE2OjU5ICBoYXJkYWtlcgoKICAgKiBhcHBzL3NubXBuZXRzdGF0L01ha2VmaWxlLmluOgoKICAgcGF0Y2ggZnJvbSBjc2V0ZSB0byBmaXggd2luMzIgYnVpbGRzCiAgIAoyMDAyLTAzLTA4IDE2OjU1ICBoYXJkYWtlcgoKICAgKiBjb25maWd1cmUgLCBjb25maWd1cmUuaW46CgogICBhZGQgQ2FsbGJhY2sgdHJhbnNwb3J0IHRvIGN5Z3dpbgogICAKMjAwMi0wMy0wOCAxNjo0OSAgaGFyZGFrZXIKCiAgICogTkVXUzoKCiAgIG1lbnRpb24gcm1vbiBzdXBwb3J0LgogICAKMjAwMi0wMy0wOCAxNjozOSAgaGFyZGFrZXIKCiAgICogc25tcGxpYi9zbm1wX2FwaS5jOgoKICAgcGF0Y2ggZnJvbSBIYXJyaWUgSGF6ZXdpbmtlbCB0byByZW1vdmUgb2xkIGFuIHVudXNlZCBwb2ludGVyCiAgIAoyMDAyLTAzLTA4IDE2OjI4ICBoYXJkYWtlcgoKICAgKiBhZ2VudC9hZ2VudF9pbmRleC5jICwgYWdlbnQvYWdlbnRfcmVnaXN0cnkuYyAsCiAgIGFnZW50L2FnZW50X3RyYXAuYyAsIGFnZW50L3NubXBfYWdlbnQuYyAsCiAgIGFnZW50L3NubXBfdmFycy5jICwgYWdlbnQvc25tcGQuYyAsCiAgIGFnZW50L2hlbHBlcnMvaW5zdGFuY2UuYyAsIGFnZW50L2hlbHBlcnMvb2xkX2FwaS5jICwKICAgYWdlbnQvaGVscGVycy90YWJsZS5jICwgYWdlbnQvaGVscGVycy90YWJsZV9hcnJheS5jICwKICAgYWdlbnQvaGVscGVycy90YWJsZV9kYXRhLmMgLCBhZ2VudC9oZWxwZXJzL3RhYmxlX2RhdGFzZXQuYwogICAsIGFnZW50L2hlbHBlcnMvdGFibGVfaXRlcmF0b3IuYyAsCiAgIGFnZW50L21pYmdyb3VwL2hlYWRlcl9jb21wbGV4LmMgLAogICBhZ2VudC9taWJncm91cC9oZWFkZXJfY29tcGxleC5oICwgYWdlbnQvbWliZ3JvdXAvdGVzdGhhbmRsZXIuYwogICAsIGFnZW50L21pYmdyb3VwL1Jtb24vZXZlbnQuYyAsCiAgIGFnZW50L21pYmdyb3VwL2FnZW50L25zVHJhbnNhY3Rpb25UYWJsZS5jICwKICAgYWdlbnQvbWliZ3JvdXAvYWdlbnR4L2NsaWVudC5jICwKICAgYWdlbnQvbWliZ3JvdXAvYWdlbnR4L2NsaWVudC5oICwKICAgYWdlbnQvbWliZ3JvdXAvYWdlbnR4L21hc3Rlci5jICwKICAgYWdlbnQvbWliZ3JvdXAvYWdlbnR4L21hc3Rlcl9hZG1pbi5jICwKICAgYWdlbnQvbWliZ3JvdXAvYWdlbnR4L21hc3Rlcl9hZG1pbi5oICwKICAgYWdlbnQvbWliZ3JvdXAvYWdlbnR4L3Byb3RvY29sLmMgLAogICBhZ2VudC9taWJncm91cC9hZ2VudHgvcHJvdG9jb2wuaCAsCiAgIGFnZW50L21pYmdyb3VwL2FnZW50eC9zdWJhZ2VudC5jICwKICAgYWdlbnQvbWliZ3JvdXAvYWdlbnR4L3N1YmFnZW50LmggLAogICBhZ2VudC9taWJncm91cC9kaXNtYW4vbXRlT2JqZWN0c1RhYmxlLmMgLAogICBhZ2VudC9taWJncm91cC9kaXNtYW4vbXRlT2JqZWN0c1RhYmxlLmggLAogICBhZ2VudC9taWJncm91cC9kaXNtYW4vbXRlVHJpZ2dlclRhYmxlLmMgLAogICBhZ2VudC9taWJncm91cC9kaXNtYW4vbXRlVHJpZ2dlclRhYmxlLmggLAogICBhZ2VudC9taWJncm91cC9leGFtcGxlcy9leGFtcGxlLmMgLAogICBhZ2VudC9taWJncm91cC9taWJJSS9zeXNPUlRhYmxlLmMgLAogICBhZ2VudC9taWJncm91cC9taWJJSS9zeXNPUlRhYmxlLmggLAogICBhZ2VudC9taWJncm91cC9taWJJSS92YWNtX2NvbnRleHQuYyAsCiAgIGFnZW50L21pYmdyb3VwL21pYklJL3ZhY21fdmFycy5jICwKICAgYWdlbnQvbWliZ3JvdXAvbWliSUkvdmFjbV92YXJzLmggLAogICBhZ2VudC9taWJncm91cC9ub3RpZmljYXRpb24vc25tcE5vdGlmeUZpbHRlclByb2ZpbGVUYWJsZS5jICwKICAgYWdlbnQvbWliZ3JvdXAvbm90aWZpY2F0aW9uL3NubXBOb3RpZnlGaWx0ZXJUYWJsZS5jICwKICAgYWdlbnQvbWliZ3JvdXAvbm90aWZpY2F0aW9uL3NubXBOb3RpZnlUYWJsZS5jICwKICAgYWdlbnQvbWliZ3JvdXAvc211eC9zbXV4LmMgLCBhZ2VudC9taWJncm91cC9zbXV4L3NtdXguaAogICAsIGFnZW50L21pYmdyb3VwL3RhcmdldC9zbm1wVGFyZ2V0QWRkckVudHJ5LmMgLAogICBhZ2VudC9taWJncm91cC90YXJnZXQvc25tcFRhcmdldEFkZHJFbnRyeS5oICwKICAgYWdlbnQvbWliZ3JvdXAvdGFyZ2V0L3RhcmdldC5jICwKICAgYWdlbnQvbWliZ3JvdXAvdGFyZ2V0L3RhcmdldC5oICwKICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvcHJveHkuYyAsCiAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Byb3h5LmggLCBhcHBzL25vdGlmaWNhdGlvbl9sb2cuYwogICAsIGFwcHMvbm90aWZpY2F0aW9uX2xvZy5oICwgYXBwcy9zbm1wYnVsa2dldC5jICwKICAgYXBwcy9zbm1wYnVsa3dhbGsuYyAsIGFwcHMvc25tcGRlbHRhLmMgLCBhcHBzL3NubXBkZi5jCiAgICwgYXBwcy9zbm1wZ2V0LmMgLCBhcHBzL3NubXBnZXRuZXh0LmMgLAogICBhcHBzL3NubXBzZXQuYyAsIGFwcHMvc25tcHN0YXR1cy5jICwgYXBwcy9zbm1wdGFibGUuYwogICAsIGFwcHMvc25tcHRlc3QuYyAsIGFwcHMvc25tcHRyYXAuYyAsCiAgIGFwcHMvc25tcHRyYXBkLmMgLCBhcHBzL3NubXB0cmFwZF9sb2cuYyAsCiAgIGFwcHMvc25tcHRyYXBkX2xvZy5oICwgYXBwcy9zbm1wdXNtLmMgLCBhcHBzL3NubXB2YWNtLmMKICAgLCBhcHBzL3NubXB3YWxrLmMgLCBhcHBzL3NubXBuZXRzdGF0L2lmLmMgLAogICBhcHBzL3NubXBuZXRzdGF0L2luZXQuYyAsIGFwcHMvc25tcG5ldHN0YXQvaW5ldDYuYyAsCiAgIGFwcHMvc25tcG5ldHN0YXQvbWFpbi5jICwgYXBwcy9zbm1wbmV0c3RhdC9uZXRzdGF0LmggLAogICBhcHBzL3NubXBuZXRzdGF0L3JvdXRlLmMgLAogICBpbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X2luZGV4LmggLAogICBpbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X3JlZ2lzdHJ5LmggLAogICBpbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X3RyYXAuaCAsCiAgIGluY2x1ZGUvbmV0LXNubXAvYWdlbnQvb2xkX2FwaS5oICwKICAgaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zbm1wX2FnZW50LmggLAogICBpbmNsdWRlL25ldC1zbm1wL2FnZW50L3NubXBfdmFycy5oICwKICAgaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZS5oICwKICAgaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9kYXRhLmggLAogICBpbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2l0ZXJhdG9yLmggLAogICBpbmNsdWRlL25ldC1zbm1wL2FnZW50L3Zhcl9zdHJ1Y3QuaCAsCiAgIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jbXVfY29tcGF0LmggLAogICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGlic25tcC5oICwKICAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oICwKICAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9hcnJheS5oICwKICAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmggLAogICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmggLAogICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaCAsCiAgIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oICwKICAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZGVidWcuaCAsCiAgIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3BhcnNlX2FyZ3MuaCAsCiAgIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oICwKICAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaCAsCiAgIGxvY2FsL21pYjJjLmFycmF5LXVzZXIuY29uZiAsIGxvY2FsL21pYjJjLml0ZXJhdGUuY29uZiAsCiAgIGxvY2FsL21pYjJjLnN0b3JhZ2UuY29uZiAsIHBlcmwvU05NUC9TTk1QLnhzICwKICAgc25tcGxpYi9jbXVfY29tcGF0LmMgLCBzbm1wbGliL21pYi5jICwKICAgc25tcGxpYi9zbm1wQ2FsbGJhY2tEb21haW4uYyAsIHNubXBsaWIvc25tcF9hcGkuYyAsCiAgIHNubXBsaWIvc25tcF9jbGllbnQuYyAsIHNubXBsaWIvc25tcF9kZWJ1Zy5jICwKICAgc25tcGxpYi9zbm1wX3BhcnNlX2FyZ3MuYyAsIHNubXBsaWIvc25tcF9zZWNtb2QuYyAsCiAgIHNubXBsaWIvc25tcGtzbS5jICwgc25tcGxpYi9zbm1wdXNtLmMgLCBzbm1wbGliL3NubXB2My5jCiAgICwgc25tcGxpYi91Y2RfY29tcGF0LmM6CgogICBzdHJ1Y3Qgc25tcF9zZXNzaW9uIHR5cGVkZWZlZCB0byBuZXRzbm1wX3Nlc3Npb24uICAmIHBkdS4gJiAuLi4KICAgCjIwMDItMDMtMDggMTQ6MDAgIGhhcmRha2VyCgogICAqIHBlcmwvU05NUC9TTk1QLnhzOgoKICAgZ2V0X3N5bWJvbCAtPiBnZXRfdHJlZQogICAKMjAwMi0wMy0wOCAwNzo0NSAgaGFyZGFrZXIKCiAgICogcGVybC86IFNOTVAvU05NUC54cyAsIGFnZW50L2FnZW50LnBtICwgYWdlbnQvYWdlbnQueHMKICAgLCBhZ2VudC90ZXN0LnBsOgoKICAgbWlzc2VkIHVwZGF0ZXMKICAgCjIwMDItMDMtMDggMDc6NDMgIGhhcmRha2VyCgogICAqIHNubXBsaWIvOiBkYXRhX2xpc3QuYyAsIGRlZmF1bHRfc3RvcmUuYyAsIG1pYi5jCiAgICwgb2lkX2FycmF5LmMgLCBvaWRfc3Rhc2guYyAsIHJlYWRfY29uZmlnLmMKICAgLCBzbm1wQUFMNVBWQ0RvbWFpbi5jICwgc25tcENhbGxiYWNrRG9tYWluLmMgLAogICBzbm1wSVBYRG9tYWluLmMgLCBzbm1wVENQRG9tYWluLmMgLCBzbm1wVENQSVB2NkRvbWFpbi5jCiAgICwgc25tcFVEUERvbWFpbi5jICwgc25tcFVEUElQdjZEb21haW4uYyAsCiAgIHNubXBVbml4RG9tYWluLmMgLCBzbm1wX2FwaS5jICwgc25tcF9kZWJ1Zy5jICwKICAgc25tcF90cmFuc3BvcnQuYyAsIHNubXB2My5jOgoKICAgbWlzc2luZyB1cGRhdGVkIGNvZGUKICAgCjIwMDItMDMtMDggMDI6MDcgIGpicG4KCiAgICogaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmggLAogICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaCAsIHNubXBsaWIvc25tcF9hcGkuYzoKCiAgICAgLSBzb21lIHNubXAgLT4gbmV0c25tcCBmaXhlcwogICAKMjAwMi0wMy0wNyAxMzo0MiAgaGFyZGFrZXIKCiAgICogYWdlbnQvc25tcF9hZ2VudC5jICwgYWdlbnQvc25tcF92YXJzLmMgLAogICBhZ2VudC9zbm1wZC5jICwgYWdlbnQvaGVscGVycy90YWJsZS5jICwKICAgYWdlbnQvaGVscGVycy90YWJsZV9hcnJheS5jICwgYWdlbnQvaGVscGVycy90YWJsZV9kYXRhLmMKICAgLCBhZ2VudC9oZWxwZXJzL3RhYmxlX2RhdGFzZXQuYyAsCiAgIGFnZW50L2hlbHBlcnMvdGFibGVfaXRlcmF0b3IuYyAsIGFnZW50L21pYmdyb3VwL3Rlc3RoYW5kbGVyLmMKICAgLCBhZ2VudC9taWJncm91cC9hZ2VudC9uc1RyYW5zYWN0aW9uVGFibGUuYyAsCiAgIGFnZW50L21pYmdyb3VwL2FnZW50eC9zdWJhZ2VudC5jICwKICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL210ZVRyaWdnZXJUYWJsZS5jICwKICAgYWdlbnQvbWliZ3JvdXAvbWliSUkvdmFjbV9jb250ZXh0LmMgLAogICBhZ2VudC9taWJncm91cC9taWJJSS92YWNtX3ZhcnMuYyAsIGFwcHMvbm90aWZpY2F0aW9uX2xvZy5jCiAgICwgYXBwcy9zbm1wdHJhcGQuYyAsIGFwcHMvc25tcHRyYXBkX2xvZy5jICwKICAgaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zbm1wX2FnZW50LmggLAogICBpbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlLmggLAogICBpbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2FycmF5LmggLAogICBpbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2RhdGEuaCAsCiAgIGluY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfZGF0YXNldC5oICwKICAgaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9pdGVyYXRvci5oICwKICAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBBQUw1UFZDRG9tYWluLmggLAogICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmggLAogICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oICwKICAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaCAsCiAgIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oICwKICAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaCAsCiAgIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oICwKICAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmggLAogICBsb2NhbC9taWIyYy5hcnJheS1hdXRvLmNvbmYgLCBsb2NhbC9taWIyYy5hcnJheS11c2VyLmNvbmYKICAgLCBsb2NhbC9taWIyYy5jcmVhdGUtZGF0YXNldC5jb25mICwKICAgbG9jYWwvbWliMmMuaXRlcmF0ZS5jb25mOgoKICAgbWFzc2l2ZSBuZXRzbm1wXyBwcmVmaXhpbmcgb2Ygc3R1ZmYgKHBhc3MgNCkKICAgCjIwMDItMDMtMDcgMTM6MjkgIGhhcmRha2VyCgogICAqIGFnZW50L2FnZW50X2hhbmRsZXIuYyAsIGFnZW50L2FnZW50X3JlYWRfY29uZmlnLmMgLAogICBhZ2VudC9hZ2VudF9yZWdpc3RyeS5jICwgYWdlbnQvc25tcF92YXJzLmMgLAogICBhZ2VudC9oZWxwZXJzL2FsbF9oZWxwZXJzLmMgLCBhZ2VudC9oZWxwZXJzL2J1bGtfdG9fbmV4dC5jCiAgICwgYWdlbnQvaGVscGVycy9kZWJ1Z19oYW5kbGVyLmMgLAogICBhZ2VudC9oZWxwZXJzL2luc3RhbmNlLmMgLCBhZ2VudC9oZWxwZXJzL211bHRpcGxleGVyLmMgLAogICBhZ2VudC9oZWxwZXJzL251bGwuYyAsIGFnZW50L2hlbHBlcnMvb2xkX2FwaS5jICwKICAgYWdlbnQvaGVscGVycy9yZWFkX29ubHkuYyAsIGFnZW50L2hlbHBlcnMvc2VyaWFsaXplLmMgLAogICBhZ2VudC9oZWxwZXJzL3RhYmxlLmMgLCBhZ2VudC9oZWxwZXJzL3RhYmxlX2FycmF5LmMgLAogICBhZ2VudC9oZWxwZXJzL3RhYmxlX2RhdGEuYyAsIGFnZW50L2hlbHBlcnMvdGFibGVfZGF0YXNldC5jCiAgICwgYWdlbnQvaGVscGVycy90YWJsZV9pdGVyYXRvci5jICwKICAgYWdlbnQvbWliZ3JvdXAvdGVzdGRlbGF5ZWQuYyAsIGFnZW50L21pYmdyb3VwL3Rlc3RoYW5kbGVyLmMKICAgLCBhZ2VudC9taWJncm91cC9hZ2VudC9uc1RyYW5zYWN0aW9uVGFibGUuYyAsCiAgIGFnZW50L21pYmdyb3VwL2FnZW50L25zVHJhbnNhY3Rpb25UYWJsZS5oICwKICAgYWdlbnQvbWliZ3JvdXAvYWdlbnR4L21hc3Rlcl9hZG1pbi5jICwKICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL210ZVRyaWdnZXJUYWJsZS5jICwKICAgYWdlbnQvbWliZ3JvdXAvZXhhbXBsZXMvc2NhbGFyX2ludC5jICwKICAgYWdlbnQvbWliZ3JvdXAvbWliSUkvdmFjbV9jb250ZXh0LmMgLAogICBhZ2VudC9taWJncm91cC90YXJnZXQvdGFyZ2V0LmMgLAogICBhZ2VudC9taWJncm91cC90YXJnZXQvdGFyZ2V0X2NvdW50ZXJzLmMgLAogICBhcHBzL25vdGlmaWNhdGlvbl9sb2cuYyAsCiAgIGluY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfcmVnaXN0cnkuaCAsCiAgIGluY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWxsX2hlbHBlcnMuaCAsCiAgIGluY2x1ZGUvbmV0LXNubXAvYWdlbnQvYnVsa190b19uZXh0LmggLAogICBpbmNsdWRlL25ldC1zbm1wL2FnZW50L2RlYnVnX2hhbmRsZXIuaCAsCiAgIGluY2x1ZGUvbmV0LXNubXAvYWdlbnQvaW5zdGFuY2UuaCAsCiAgIGluY2x1ZGUvbmV0LXNubXAvYWdlbnQvbXVsdGlwbGV4ZXIuaCAsCiAgIGluY2x1ZGUvbmV0LXNubXAvYWdlbnQvbnVsbC5oICwKICAgaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9vbGRfYXBpLmggLAogICBpbmNsdWRlL25ldC1zbm1wL2FnZW50L3JlYWRfb25seS5oICwKICAgaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zZXJpYWxpemUuaCAsCiAgIGluY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGUuaCAsCiAgIGluY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfYXJyYXkuaCAsCiAgIGluY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfZGF0YS5oICwKICAgaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9kYXRhc2V0LmggLAogICBpbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2l0ZXJhdG9yLmggLAogICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oICwKICAgbG9jYWwvbWliMmMuYXJyYXktYXV0by5jb25mICwgbG9jYWwvbWliMmMuYXJyYXktdXNlci5jb25mCiAgICwgbG9jYWwvbWliMmMuY3JlYXRlLWRhdGFzZXQuY29uZiAsCiAgIGxvY2FsL21pYjJjLml0ZXJhdGUuY29uZjoKCiAgIG1hc3NpdmUgbmV0c25tcF8gcHJlZml4aW5nIG9mIHN0dWZmIChwYXNzIDMpCiAgIAoyMDAyLTAzLTA3IDEzOjEzICBoYXJkYWtlcgoKICAgKiBhZ2VudC9hZ2VudF9oYW5kbGVyLmMgLCBhZ2VudC9hZ2VudF9yZWdpc3RyeS5jICwKICAgYWdlbnQvc25tcF9hZ2VudC5jICwgYWdlbnQvaGVscGVycy9kZWJ1Z19oYW5kbGVyLmMgLAogICBhZ2VudC9oZWxwZXJzL2luc3RhbmNlLmMgLCBhZ2VudC9oZWxwZXJzL29sZF9hcGkuYyAsCiAgIGFnZW50L2hlbHBlcnMvdGFibGUuYyAsIGFnZW50L2hlbHBlcnMvdGFibGVfYXJyYXkuYyAsCiAgIGFnZW50L2hlbHBlcnMvdGFibGVfZGF0YS5jICwgYWdlbnQvaGVscGVycy90YWJsZV9kYXRhc2V0LmMKICAgLCBhZ2VudC9oZWxwZXJzL3RhYmxlX2l0ZXJhdG9yLmMgLAogICBhZ2VudC9taWJncm91cC90ZXN0ZGVsYXllZC5jICwgYWdlbnQvbWliZ3JvdXAvdGVzdGhhbmRsZXIuYwogICAsIGFnZW50L21pYmdyb3VwL2FnZW50eC9tYXN0ZXJfYWRtaW4uYyAsCiAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9tdGVUcmlnZ2VyVGFibGUuYyAsCiAgIGFnZW50L21pYmdyb3VwL3RhcmdldC90YXJnZXQuYyAsIGFwcHMvc25tcHRyYXBkLmMgLAogICBpbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X2hhbmRsZXIuaCAsCiAgIGluY2x1ZGUvbmV0LXNubXAvYWdlbnQvc25tcF9hZ2VudC5oICwKICAgaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9hcnJheS5oICwKICAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oICwKICAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9hcnJheS5oICwKICAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oICwKICAgbG9jYWwvbWliMmMuYXJyYXktdXNlci5jb25mOgoKICAgbWFzc2l2ZSBuZXRzbm1wXyBwcmVmaXhpbmcgb2Ygc3R1ZmYgKHBhc3MgMikKICAgCjIwMDItMDMtMDcgMDg6NTYgIGhhcmRha2VyCgogICAqIGFnZW50L2FnZW50X2hhbmRsZXIuYyAsIGFnZW50L2FnZW50X3JlYWRfY29uZmlnLmMgLAogICBhZ2VudC9hZ2VudF9yZWdpc3RyeS5jICwgYWdlbnQvc25tcF9hZ2VudC5jICwKICAgYWdlbnQvc25tcF92YXJzLmMgLCBhZ2VudC9zbm1wZC5jICwKICAgYWdlbnQvaGVscGVycy9idWxrX3RvX25leHQuYyAsIGFnZW50L2hlbHBlcnMvZGVidWdfaGFuZGxlci5jCiAgICwgYWdlbnQvaGVscGVycy9pbnN0YW5jZS5jICwKICAgYWdlbnQvaGVscGVycy9tdWx0aXBsZXhlci5jICwgYWdlbnQvaGVscGVycy9udWxsLmMgLAogICBhZ2VudC9oZWxwZXJzL29sZF9hcGkuYyAsIGFnZW50L2hlbHBlcnMvcmVhZF9vbmx5LmMgLAogICBhZ2VudC9oZWxwZXJzL3NlcmlhbGl6ZS5jICwgYWdlbnQvaGVscGVycy90YWJsZS5jICwKICAgYWdlbnQvaGVscGVycy90YWJsZV9hcnJheS5jICwgYWdlbnQvaGVscGVycy90YWJsZV9kYXRhLmMKICAgLCBhZ2VudC9oZWxwZXJzL3RhYmxlX2RhdGFzZXQuYyAsCiAgIGFnZW50L2hlbHBlcnMvdGFibGVfaXRlcmF0b3IuYyAsIGFnZW50L21pYmdyb3VwL3Rlc3RkZWxheWVkLmMKICAgLCBhZ2VudC9taWJncm91cC90ZXN0ZGVsYXllZC5oICwKICAgYWdlbnQvbWliZ3JvdXAvdGVzdGhhbmRsZXIuYyAsIGFnZW50L21pYmdyb3VwL3Rlc3RoYW5kbGVyLmgKICAgLCBhZ2VudC9taWJncm91cC9hZ2VudC9uc1RyYW5zYWN0aW9uVGFibGUuYyAsCiAgIGFnZW50L21pYmdyb3VwL2FnZW50L25zVHJhbnNhY3Rpb25UYWJsZS5oICwKICAgYWdlbnQvbWliZ3JvdXAvYWdlbnR4L21hc3Rlci5jICwKICAgYWdlbnQvbWliZ3JvdXAvYWdlbnR4L21hc3Rlci5oICwKICAgYWdlbnQvbWliZ3JvdXAvYWdlbnR4L21hc3Rlcl9hZG1pbi5jICwKICAgYWdlbnQvbWliZ3JvdXAvYWdlbnR4L3N1YmFnZW50LmMgLAogICBhZ2VudC9taWJncm91cC9kaXNtYW4vbXRlVHJpZ2dlclRhYmxlLmMgLAogICBhZ2VudC9taWJncm91cC9taWJJSS9zeXNPUlRhYmxlLmMgLAogICBhZ2VudC9taWJncm91cC9taWJJSS9zeXN0ZW1fbWliLmMgLAogICBhZ2VudC9taWJncm91cC9taWJJSS92YWNtX2NvbnRleHQuYyAsCiAgIGFnZW50L21pYmdyb3VwL21pYklJL3ZhY21fY29udGV4dC5oICwKICAgYWdlbnQvbWliZ3JvdXAvbWliSUkvdmFjbV92YXJzLmMgLAogICBhZ2VudC9taWJncm91cC9ub3RpZmljYXRpb24vc25tcE5vdGlmeVRhYmxlLmMgLAogICBhZ2VudC9taWJncm91cC90YXJnZXQvc25tcFRhcmdldEFkZHJFbnRyeS5oICwKICAgYWdlbnQvbWliZ3JvdXAvdGFyZ2V0L3RhcmdldC5jICwKICAgYWdlbnQvbWliZ3JvdXAvdGFyZ2V0L3RhcmdldF9jb3VudGVycy5jICwKICAgYWdlbnQvbWliZ3JvdXAvdGFyZ2V0L3RhcmdldF9jb3VudGVycy5oICwKICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvcHJveHkuYyAsCiAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Byb3h5LmggLCBhcHBzL25vdGlmaWNhdGlvbl9sb2cuYwogICAsIGFwcHMvbm90aWZpY2F0aW9uX2xvZy5oICwgYXBwcy9zbm1wc3RhdHVzLmMgLAogICBhcHBzL3NubXB0ZXN0LmMgLCBhcHBzL3NubXB0cmFwZC5jICwKICAgYXBwcy9zbm1wdHJhcGRfbG9nLmMgLCBhcHBzL3NubXB0cmFwZF9sb2cuaCAsCiAgIGluY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaCAsCiAgIGluY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfaGFuZGxlci5oICwKICAgaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9yZWdpc3RyeS5oICwKICAgaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9idWxrX3RvX25leHQuaCAsCiAgIGluY2x1ZGUvbmV0LXNubXAvYWdlbnQvZGVidWdfaGFuZGxlci5oICwKICAgaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9pbnN0YW5jZS5oICwKICAgaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tdWx0aXBsZXhlci5oICwKICAgaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9udWxsLmggLAogICBpbmNsdWRlL25ldC1zbm1wL2FnZW50L29sZF9hcGkuaCAsCiAgIGluY2x1ZGUvbmV0LXNubXAvYWdlbnQvcmVhZF9vbmx5LmggLAogICBpbmNsdWRlL25ldC1zbm1wL2FnZW50L3NlcmlhbGl6ZS5oICwKICAgaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zZXRfaGVscGVyLmggLAogICBpbmNsdWRlL25ldC1zbm1wL2FnZW50L3NubXBfYWdlbnQuaCAsCiAgIGluY2x1ZGUvbmV0LXNubXAvYWdlbnQvc25tcF92YXJzLmggLAogICBpbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlLmggLAogICBpbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2FycmF5LmggLAogICBpbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2RhdGEuaCAsCiAgIGluY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfZGF0YXNldC5oICwKICAgaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9pdGVyYXRvci5oICwKICAgaW5jbHVkZS9uZXQtc25tcC9hZ2VudC92YXJfc3RydWN0LmggLAogICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmggLAogICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaCAsCiAgIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQUFMNVBWQ0RvbWFpbi5oICwKICAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oICwKICAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaCAsCiAgIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmggLAogICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaCAsCiAgIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmggLAogICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaCAsCiAgIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oICwKICAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmggLAogICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaCAsCiAgIGxvY2FsL21pYjJjLmFycmF5LWF1dG8uY29uZiAsIGxvY2FsL21pYjJjLmFycmF5LXVzZXIuY29uZgogICAsIGxvY2FsL21pYjJjLmNyZWF0ZS1kYXRhc2V0LmNvbmYgLAogICBsb2NhbC9taWIyYy5pdGVyYXRlLmNvbmY6CgogICBtYXNzaXZlIG5ldHNubXBfIHByZWZpeGluZyBvZiBzdHVmZiAocGFzcyAxKQogICAKMjAwMi0wMy0wNyAwNjoyMSAgamJwbgoKICAgKiBtYW4vc25tcF9zZXNzX2FwaS4zLmRlZjoKCiAgICAgLSBzdHlsZSB1cGRhdGUKICAgCjIwMDItMDMtMDcgMDU6NDcgIGpicG4KCiAgICogbWFuL3NubXBfdHJhcF9hcGkuMy5kZWY6CgogICAgIC0gbWlub3IgdXBkYXRlcwogICAKMjAwMi0wMy0wNyAwNTozOSAgamJwbgoKICAgKiBtYW4vc25tcF9hbGFybS4zLmRlZjoKCiAgICAgLSBzdHlsZSB1cGRhdGUKICAgCjIwMDItMDMtMDcgMDU6MDAgIGpicG4KCiAgICogbWFuL3JlYWRfY29uZmlnLjMuZGVmOgoKICAgICAtIG1ha2UgcHJvdG90eXBlcyBtYXRjaCBoZWFkZXIKICAgCiAgICAgLSBtYWtlIHN0eWxlIGNvbnNpc3RlbnQgd2l0aCBtaWJfYXBpCiAgIAoyMDAyLTAzLTA3IDAzOjA3ICBqYnBuCgogICAqIG1hbi9taWJfYXBpLjMuZGVmOgoKICAgICAtIGZpeCB1cCBzbnByaW50XyBkZWNsYXJhdGlvbnMsIGZpeCBzbWFsbCB0eXBvLiAgUGF0Y2ggYnkgR3V5CiAgIEhhcnJpcy4KICAgCjIwMDItMDMtMDcgMDI6NDQgIGpicG4KCiAgICogaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oOgoKICAgICAtIHJlbW92ZSBkdXBsaWNhdGUgZGVjbGFyYXRpb24gb2Ygc3ByaW50X3JlYWxsb2NfYnlfdHlwZSwgYXMgbm90ZWQKICAgICAgIGJ5IEd1eSBIYXJyaXMuCiAgIAoyMDAyLTAzLTA2IDE3OjE1ICBoYXJkYWtlcgoKICAgKiBpbmNsdWRlL25ldC1zbm1wL2FnZW50Ly5jdnNpZ25vcmUgLAogICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvLmN2c2lnbm9yZSAsIHBlcmwvU05NUC90Ly5jdnNpZ25vcmU6CgogICBuZXcgaWdub3JlIGZpbGVzCiAgIAoyMDAyLTAzLTA2IDE3OjEzICBoYXJkYWtlcgoKICAgKiAuY3ZzaWdub3JlOgoKICAgaWdub3JlIGRvY3MKICAgCjIwMDItMDMtMDYgMTc6MDggIGhhcmRha2VyCgogICAqIGFnZW50L21pYmdyb3VwL2V4YW1wbGVzLmg6CgogICBleGFtcGxlcyBtb2R1bGUgd3JhcHBlciB0byBpbmNsdWRlIGFsbCAobmV3KSBleGFtcGxlcy4KICAgCjIwMDItMDMtMDYgMTY6NTggIGhhcmRha2VyCgogICAqIGFnZW50L21pYmdyb3VwL2V4YW1wbGVzL3NjYWxhcl9pbnQuYzoKCiAgIGRvY3VtZW50IGJldHRlci4KICAgCjIwMDItMDMtMDYgMTY6NTggIGhhcmRha2VyCgogICAqIGRveHlnZW4uY29uZjoKCiAgIHNlYXJjaCBleGFtcGxlcyBmb3IgZG9jcy4KICAgCjIwMDItMDMtMDYgMTY6MjkgIGhhcmRha2VyCgogICAqIG1pYnMvTkVULVNOTVAtRVhBTVBMRVMtTUlCLnR4dDoKCiAgIGV4YW1wbGUgTUlCIHRlbXBsYXRlIChhbmQgb25lIG5vZGUpCiAgIAoyMDAyLTAzLTA2IDE2OjI4ICBoYXJkYWtlcgoKICAgKiBtaWJzL05FVC1TTk1QLU1JQi50eHQ6CgogICBpbnN0YW50aWF0ZSBleGFtcGxlcwogICAKMjAwMi0wMy0wNiAxNjoyNyAgaGFyZGFrZXIKCiAgICogbWlicy9NYWtlZmlsZS5pbjoKCiAgIGluc3RhbGwgc29tZSBOUyBtaWJzCiAgIAoyMDAyLTAzLTA2IDE2OjI3ICBoYXJkYWtlcgoKICAgKiBhZ2VudC9taWJncm91cC9leGFtcGxlcy86IHNjYWxhcl9pbnQuYyAsIHNjYWxhcl9pbnQuaDoKCiAgIEV4YW1wbGUgaW1wbGVtZW50YXRpb24gb2YgYSBTTk1QIGVuYWJsZWQgaW50IHJlZ2lzdGVyZWQgYXQgYSBzY2FsYXIuCiAgIAoyMDAyLTAzLTA2IDE2OjI1ICBoYXJkYWtlcgoKICAgKiBhZ2VudC9oZWxwZXJzL2luc3RhbmNlLmMgLCBpbmNsdWRlL25ldC1zbm1wL2FnZW50L2luc3RhbmNlLmg6CgogICBtYW55IGNoYW5nZXMgZm9yIGluc3RhbmNlcy4gIFNwZWNpZmljaWNhbGx5OgogICAgIC0gYWxsb3cgZm9yIHN1YmhhbmRsZXJzLgogICAgIC0gcHJvdmlkZSBhbiBpbnQgd3JhcHBlci4KICAgICAtIHJldXNlIG1vcmUgY29kZS4KICAgICAtIG51bWVyb3VzIGJ1ZyBmaXhlcy4KICAgCjIwMDItMDMtMDYgMTQ6MDUgIGhhcmRha2VyCgogICAqIE5FV1M6CgogICByZW1vdmUgYSBibGFuayBsaW5lLgogICAKMjAwMi0wMy0wNiAxNDowNSAgaGFyZGFrZXIKCiAgICogYWdlbnQvbWliZ3JvdXAvYWdlbnR4LzogbWFzdGVyLmMgLCBtYXN0ZXJfYWRtaW4uYzoKCiAgIEZpeCBtYXN0ZXIgYWdlbnQgZ2V0YnVsayBzdXBwb3J0LiAgdGhpcyBoYXMgdG8gYmUgaW5kZXBlbmRlbnRseSBvZiB0aGUKICAgbm9ybWFsIGJ1bGstPm5leHQgZml4ZXMgZHVlIHRvIGRlbGVnYXRpb24uICBMb25nIHN0b3J5LgogICAKMjAwMi0wMy0wNiAxNDowMyAgaGFyZGFrZXIKCiAgICogYWdlbnQvaGVscGVycy9idWxrX3RvX25leHQuYzoKCiAgIG1vdmUgYnVsa190b19uZXh0IGZpeGluZyBmdW5jdGlvbmFsaXR5IGludG8gYSBzZXBhcmF0ZSBmdW5jdGlvbiBmb3IgcmV1c2UuCiAgIAoyMDAyLTAzLTA2IDEwOjI2ICBqYnBuCgogICAqIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaCAsIHNubXBsaWIvbWliLmM6CgogICAgIC0gc3ByaW5rbGUgbWFnaWMgY29uc3QgZHVzdAogICAKMjAwMi0wMy0wNiAxMDoxOCAgamJwbgoKICAgKiBtYW4vbWliX2FwaS4zLmRlZjoKCiAgICAgLSBkb2N1bWVudCBjaGFuZ2VkIEFQSSwgaW5jb3Jwb3JhdGluZyBwYXRjaGVzIGJ5IEd1eSBIYXJyaXMuCiAgIAoyMDAyLTAzLTA2IDA5OjM0ICBoYXJkYWtlcgoKICAgKiB0ZXN0aW5nL3Rlc3RzLzogVDExMmFnZW50eHNldGZhaWwgLCBUMTIycHJveHlzZXRmYWlsOgoKICAgZml4IHRlc3RzLgogICAKMjAwMi0wMy0wNiAwOToyNCAgaGFyZGFrZXIKCiAgICogc25tcGxpYi9zbm1wX3BhcnNlX2FyZ3MuYzoKCiAgIHJlLWVuYWJsZSBzZXR0aW5nIG9wdGluZCB0byAxIHRpbGwgRGF2ZSB0ZWxscyBtZSB3aGVyZSB0aGlzIGJyZWFrcy4KICAgCjIwMDItMDMtMDYgMDk6MDggIGhhcmRha2VyCgogICAqIHRlc3RpbmcvdGVzdHMvOiBUMDUxc25tcHYyY3RyYXAgLCBUMDUyc25tcHYyY2luZm9ybSAsCiAgIFQwNThhZ2VudGF1dGh0cmFwOgoKICAgZml4ZXMgZm9yIG5ldyBjb21tYW5kIGxpbmUgdXNhZ2UuCiAgIAoyMDAyLTAzLTA2IDA5OjA3ICBoYXJkYWtlcgoKICAgKiBzbm1wbGliL3NubXBfY2xpZW50LmM6CgogICBtb3JlIGltcHJvdmVkIGVycm9yIG1lc3NhZ2VzIChtb3N0bHkpCiAgIAoyMDAyLTAzLTA2IDA4OjU0ICBoYXJkYWtlcgoKICAgKiBjb25maWd1cmU6CgogICBhdXRvY29uZgogICAKMjAwMi0wMy0wNiAwODo0MSAgZHRzMTIKCiAgICogc25tcGxpYi86IHNubXB2My5jIChWNC0yLXBhdGNoZXMuMyksIHNubXB2My5jOgoKICAgRml4IGEgY29uZnVzaW9uIGJldHdlZW4gZGVmQXV0aFR5cGUgYW5kIGRlZlByaXZUeXBlLgogICAKMjAwMi0wMy0wNiAwODozNiAgaGFyZGFrZXIKCiAgICogYWdlbnQvbWliZ3JvdXAvYWdlbnR4LzogbWFzdGVyLmMgLCBwcm90b2NvbC5jOgoKICAgcHJvcGVyIGZpeCBmb3Igbm90IHJlcXVpcmluZyByZXNwb25zZXMgdG8gQ0xFQU5VUCBtZXNzYWdlcy4KICAgCjIwMDItMDMtMDYgMDY6MDcgIGpicG4KCiAgICogYWdlbnQvc25tcF9hZ2VudC5jOgoKICAgICAtIHplcm8gdGhlIG5hbWUgb2YgZWxlbWVudHMgb2YgdGhlIGJ1bGsgY2FjaGUKICAgCjIwMDItMDMtMDYgMDY6MDYgIGpicG4KCiAgICogc25tcGxpYi9taWIuYzoKCiAgICAgLSBjYWxsb2MoKSBub3QgbWFsbG9jKCkgaW4gYSBmZXcgcGxhY2VzIHRvIGluaXRpYWxpc2Ugc29tZSBidWZmZXJzCiAgICAgICB0byB6ZXJvZXMuCiAgIAoyMDAyLTAzLTA2IDA1OjUyICBkdHMxMgoKICAgKiBzbm1wbGliLzogc25tcF9hcGkuYyAoVjQtMi1wYXRjaGVzLjYpLCBzbm1wX2FwaS5jOgoKICAgQWN0dWFsbHkgdXNlIHRoZSBjb21tb24gJ2RlZlBhc3NwaHJhc2UnIHZhbHVlIGlmICdkZWZ7QXV0aCxQcml2fVBhc3NwaHJhc2UnIGlzbid0IHNldC4KICAgUW46IFNob3VsZCB0aGUgQXV0aFBhc3NwaHJhc2UgYWxzbyBiZSB1c2VkIGZvciBwcml2YWN5IGlmIG5vIG90aGVyIHZhbHVlIGlzIGF2YWlsYWJsZT8KICAgCjIwMDItMDMtMDYgMDU6NDUgIGpicG4KCiAgICogYWdlbnQvbWliZ3JvdXAvYWdlbnR4L21hc3Rlci5jOgoKICAgICAtIGRvbid0IHNlbmQgcmVxdWVzdHMgZm9yIE9JRHMgcHJlY2VlZGluZyB0aGUgc3RhcnQgb2YgYSByZWdpb24KICAgICAgICh0aGlzIGNhbiBsZWFkIHRvIGxvb3BzIGlmIGUuZy4gYSBzdWJhZ2VudCBoYXMgcmVnaXN0ZXJlZCB0d28KICAgICAgIGFkamFjZW50IHJvd3MpLgogICAKMjAwMi0wMy0wNiAwNTowNyAgamJwbgoKICAgKiB0ZXN0aW5nL01ha2VmaWxlLmluOgoKICAgICAtIGlnbm9yZSBlcnJvcnMgZG9pbmcgcm0gLXJmIC90bXAvc25tcC10ZXN0KiB3aGVuIG1ha2luZyB0ZXN0Y2xlYW4KICAgCjIwMDItMDMtMDYgMDI6MjYgIGpicG4KCiAgICogc25tcGxpYi9taWIuYzoKCiAgICAgLSB1c2UgbW9yZSBlZmZpY2llbnQgZ2V0X3RyZWUoKSBpbiBzcHJpbnRfcmVhbGxvY192YWx1ZSgpCiAgIAoyMDAyLTAzLTA1IDE4OjI4ICBoYXJkYWtlcgoKICAgKiB0ZXN0aW5nL3Rlc3RzLzogVDAxNXNubXB2MmNnZXRuZXh0ICwgVDAwMXNubXB2MWdldCAsCiAgIFQwMDJzbm1wdjFnZXRuZXh0ICwgVDAwM3NubXB2MWdldGZhaWwgLCBUMDE0c25tcHYyY2dldAogICAsIFQwMTZzbm1wdjJjZ2V0ZmFpbCAsIFQwMTdzbm1wdjJjdG92MWdldGZhaWwgLAogICBUMDE4c25tcHYxdG92MmNnZXRmYWlsICwgVDEwMGFnZW50aHVwOgoKICAgZml4ZXMgZm9yIG5ldyBmb3JjZWQgLWMgZmxhZ3MKICAgCjIwMDItMDMtMDUgMTg6MjEgIGhhcmRha2VyCgogICAqIGluY2x1ZGUvbmV0LXNubXAvYWdlbnQvc25tcF9hZ2VudC5oOgoKICAgcmVtb3ZlIG5vIGxvbmdlciBhcHByb3ByaWF0ZSBjb21tZW50LgogICAKMjAwMi0wMy0wNSAxODoyMCAgaGFyZGFrZXIKCiAgICogYWdlbnQvbWliZ3JvdXAvYWdlbnR4L3N1YmFnZW50LmM6CgogICBmaXggZHVwbGljYXRlIGZyZWUgYnkgY2xvbmluZyB0aGUgcGR1IGJlZm9yZSBzZW5kaW5nIGl0IG91dCBhZ2FpbgogICAodGhvdWdodCBJIGhhZCBkb25lIHRoaXMgb25jZSBpbiB0aGUgcGFzdCBhbHJlYWR5LCBidXQgSSBnb3QgMS8yIGZ1bmN0aW9ucykuCiAgIAoyMDAyLTAzLTA1IDE4OjE5ICBoYXJkYWtlcgoKICAgKiBhZ2VudC9taWJncm91cC9hZ2VudHgvcHJvdG9jb2wuYzoKCiAgIFRlbXBvcmFyeSBmaXggdG8gZml4IGZvciBhZ2VudHggU0VUIHJlcXVlc3RzLiAgVGhpcyByZXZlcnNlcyBhCiAgIHByZXZpb3VzIEpvaG4gY2hhbmdlIHdoZXJlIHJlc3BvbnNlcyB0byBjbGVhbnVwcyBhcmUgbm93IGV4cGVjdGVkCiAgIGFnYWluLiAgVGhpcyB0b29rIG1lIGEgZ29vZCAyIGRheXMgdG8gdHJhY2sgZG93biwgc2lnaC4uLgogICAKMjAwMi0wMy0wNSAxODowNyAgaGFyZGFrZXIKCiAgICogYWdlbnQvbWliZ3JvdXAvYWdlbnR4L21hc3Rlci5jOgoKICAgLSBhZGQgKGFzY2lpKSBhZ2VudHggc3RhdGUgZGlhZ3JhbQogICAKMjAwMi0wMy0wNSAxODowNyAgaGFyZGFrZXIKCiAgICogYWdlbnQvc25tcF9hZ2VudC5jOgoKICAgLSBtdWx0aXBsZSBmcmVlIGJ1ZyBmaXhlcy4KICAgLSBpbXByb3ZlZCBkZWJ1Z2dpbmcgc3RhdGVtZW50cy4KICAgCjIwMDItMDMtMDUgMTA6NDQgIGhhcmRha2VyCgogICAqIGFnZW50L21pYmdyb3VwL2FnZW50eC86IG1hc3Rlcl9yZXF1ZXN0LmMgLCBtYXN0ZXJfcmVxdWVzdC5oOgoKICAgcmVtb3ZlZCB1bnVzZWQgZmlsZXMKICAgCjIwMDItMDMtMDUgMTA6MzEgIGpicG4KCiAgICogYWdlbnQvbWliZ3JvdXAvYWdlbnR4L3N1YmFnZW50LmM6CgogICAgIC0gb29wcywgZml4IGJhZCBjdXQgYW5kIHBhc3RlCiAgIAoyMDAyLTAzLTA1IDEwOjI1ICBqYnBuCgogICAqIGFnZW50L21pYmdyb3VwL2FnZW50eC9zdWJhZ2VudC5jOgoKICAgICAtIHJlaW50cm9kdWNlIHNjb3BlIHByb2Nlc3NpbmcgKHNlZSBSRkMgMjc0MSwgcC4gNjYsIHNlY3Rpb24gNy4yLjMuMgogICAgICAgcGFyYWdyYXBoIDIpOiAiSWYgdGhlIHN1YmFnZW50IGNhbid0IGxvY2F0ZSBhbiBhcHByb3ByaWF0ZQogICAgICAgdmFyaWFibGUsIF9fdi5uYW1lX2lzX3NldF90b190aGVfc3RhcnRpbmdfT0lEX18gW3RoZSBpbXBvcnRhbnQKICAgICAgIGJpdF0gYW5kIHRoZSBWYXJCaW5kIGlzIHNldCB0byBgZW5kT2ZNaWJWaWV3JyIKICAgCjIwMDItMDMtMDUgMDk6NTQgIGhhcmRha2VyCgogICAqIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL3ZlcnNpb25pbmZvLmM6CgogICBpbXBvc2UgbWF4IGxlbmd0aCByZXN0cmljdGlvbiBzdXBwbGllZCBieSBtaWIgZm9yIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4KICAgCjIwMDItMDMtMDUgMDg6NDggIGpicG4KCiAgICogYWdlbnQvOiBhZ2VudF9pbmRleC5jICwgc25tcF9hZ2VudC5jICwKICAgaGVscGVycy9kZWJ1Z19oYW5kbGVyLmMgLCBtaWJncm91cC9hZ2VudHgvbWFzdGVyLmM6CgogICAgIC0gdXNlIG5ldyBERUJVR01TR1ZBUiBtYWNybyBpbiBhIGZldyBwbGFjZXMKICAgCjIwMDItMDMtMDUgMDg6NDUgIGpicG4KCiAgICogc25tcGxpYi9zbm1wX2RlYnVnLmMgLAogICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9kZWJ1Zy5oOgoKICAgICAtIGFkZCBERUJVR01TR1ZBUiBtYWNybyB0byBwcmludCBvdXQgYSB2YXJpYWJsZQogICAKMjAwMi0wMy0wNSAwODozNCAgaGFyZGFrZXIKCiAgICogcGVybC9TTk1QLzogU05NUC5wbSAsIFNOTVAueHM6CgogICBwcmludF92YWx1ZSBmdW5jdGlvbiB1cGRhdGVzLgogICAKMjAwMi0wMy0wNSAwODowNSAgZHRzMTIKCiAgICogYWdlbnQvbWliZ3JvdXAvZXhhbXBsZXMvOiB1Y2REZW1vUHVibGljLmMgKFY0LTItcGF0Y2hlcy4yKSwKICAgdWNkRGVtb1B1YmxpYy5jOgoKICAgQWRkIG1pc3NpbmcgInN0YW5kYXJkIiBoZWFkZXJzLCBhbmQgdHdlYWsgYSB0eXBlIHNsaWdodGx5LgogICAoQmFzZWQgb24gcmVxdWVzdHMgZnJvbSBHcmVnb3J5IFRvdGgpLgogICAKMjAwMi0wMy0wNSAwODowNCAgamJwbgoKICAgKiBhZ2VudC9zbm1wX2FnZW50LmM6CgogICAgIC0gZ3JyciwgYm90Y2hlZCBsYXN0IGZpeAogICAKMjAwMi0wMy0wNSAwODowMSAgaGFyZGFrZXIKCiAgICogYWdlbnQvbWliZ3JvdXAvYWdlbnR4L3N1YmFnZW50LmMgLAogICBzbm1wbGliL3NubXBDYWxsYmFja0RvbWFpbi5jOgoKICAgU2V0IHRoZSBkZWZhdWx0IGNhbGxiYWNrIHNlc3Npb24gdmVyc2lvbiBudW1iZXIgdG8gdGhlIGdlbmVyaWMgLTEKICAgdmVyc2lvbiBhbGxvd2luZyB0aGUgcGR1IHRvIHBhc3NlZCB3aXRob3V0IHZlcnNpb24gY2hlY2tpbmcuCiAgIAoyMDAyLTAzLTA1IDA3OjU5ICBoYXJkYWtlcgoKICAgKiBhZ2VudC9taWJncm91cC9hZ2VudHgvbWFzdGVyLmM6CgogICBtb3ZlIE5VTEwgY2hlY2sgdG8gKmJlZm9yZSogeW91IGFjdHVhbGx5IHVzZSB0aGUgcG9pbnRlci4KICAgCjIwMDItMDMtMDUgMDc6NTkgIGpicG4KCiAgICogYWdlbnQvc25tcF9hZ2VudC5jOgoKICAgICAtIG1hcmsgSU5DTFVTSVZFIHJlcXVlc3RzIGFzIHN1Y2gKICAgCjIwMDItMDMtMDUgMDc6NTggIGhhcmRha2VyCgogICAqIGFnZW50L2hlbHBlcnMvb2xkX2FwaS5jOgoKICAgLSB1c2UgYSBmb3IgbG9vcCBpbnN0ZWFkIG9mIGEgd2hpbGUgbG9vcCwganVzdCBhIHByZWNhdXRpb24gZm9yIGZ1dHVyZSBwcm9ibGVtcy4KICAgCjIwMDItMDMtMDUgMDc6NTYgIGhhcmRha2VyCgogICAqIGFnZW50L3NubXBfYWdlbnQuYzoKCiAgIC0gKHNubXBfY2hlY2tfcGFyc2UpIGFsbG93IGludGVybmFsIHNldCB0cmFuc2FjdGlvbnMgdG8gYmUgcGFzc2VkIHRvCiAgICAgdGhlIGFnZW50LCBzaW5jZSBhZ2VudHggc2VuZHMgdGhlbS4KICAgCjIwMDItMDMtMDUgMDc6MjEgIGpicG4KCiAgICogc25tcGxpYi9taWIuYzoKCiAgICAgLSBkb24ndCBhZGQgdGhlICJtb2R1bGUgSUQiIHRvIE9JRHMgaWYgaXQgaXMgbnVtZXJpYyBiZWNhdXNlIHdlCiAgICAgICBjb3VsZG4ndCBsb29rIGl0IHVwIHByb3Blcmx5ICh0byBhdm9pZCBob3JyaWJsZSBsb29raW5nIG91dHB1dAogICAgICAgbGlrZSB0aGlzOiAiT0lEOiAjLTE6Omlzby4yLjMuNC41LiIpCiAgIAoyMDAyLTAzLTA1IDA3OjA1ICBqYnBuCgogICAqIGNvbmZpZ3VyZS5pbjoKCiAgICAgLSByZW1vdmUgcmVmZXJlbmNlIHRvIDJjIGluIGVycm9yIG1lc3NhZ2UgZnJvbSB2ZXJzaW9uIHByb21wdAogICAKMjAwMi0wMy0wNSAwNzowMSAgamJwbgoKICAgKiBjb25maWd1cmUuaW46CgogICAgIC0gcmVtb3ZlIGR1cGxpY2F0ZSB0ZXN0cwogICAKMjAwMi0wMy0wNSAwNjo1MSAgaGFyZGFrZXIKCiAgICogY29uZmlndXJlICwgY29uZmlndXJlLmluOgoKICAgLSByZS1lbXBoYXNpcyBhIHN1Z2dlc3Rpb24gdG8gc3dpdGNoIHRvIGEgc2VjdXJlIHZlcnNpb24gb2YgdGhlIHByb3RvY29sLgogICAtIGRlbGV0ZSBub3Rpb24gdGhhdCB2MyB3aXRob3V0IGF1dGgvcHJpdiBwcm92aWRlcyBiZXR0ZXIgc2VjdXJpdHkgKGl0IGRvZXNuJ3QpLgogICAtIERvbid0IGFjY2VwdCB2MmMgYXMgYW4gYWNjZXB0ZWQgdmFsdWUsIGFzIGl0J3MgdXNlZCBhcyBhbiBpbnQuCiAgICAgLSBidXQgZG8gY2hhbmdlIGhlbHAgbWVzc2FnZXMsIGV0YywgdG8gcmVmbGVjdCB0aGF0IDIgPSB2MmMuCiAgIAoyMDAyLTAzLTA1IDA2OjUwICBkdHMxMgoKICAgKiBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9kbG1vZC5jOgoKICAgQ2FzdCBhIGNhbGxvYyBhcHByb3ByaWF0ZWx5IChyZXF1ZXN0ZWQgYnkgR3JlZ29yeSBUb3RoKQogICAKMjAwMi0wMy0wNSAwNjoyMCAgamJwbgoKICAgKiBzbm1wbGliL01ha2VmaWxlLmluOgoKICAgICAtIGZpeCB0eXBvIGluIE9CSlMgZGVmaW5pdGlvbgogICAKMjAwMi0wMy0wNSAwNjoxOCAgamJwbgoKICAgKiBhZ2VudC9NYWtlZmlsZS5pbjoKCiAgICAgLSBjbGVhbiB0YXJnZXQgZGVwZW5kcyBvbiAkKE9CSlMpIGFuZCAkKExPQkpTKSwgc28gZGVmaW5lIHRoZW0KICAgCjIwMDItMDMtMDUgMDM6NTIgIGpicG4KCiAgICogY29uZmlndXJlLmluOgoKICAgICAtIGZpeCBkZWZhdWx0IHZlcnNpb24gdGVzdHMgKHNwbGl0dGluZyB0aGVtIG92ZXIgc2V2ZXJhbCBsaW5lcwogICAgICAgY29uZnVzZXMgc2ggb24gU29sYXJpcywgYXQgbGVhc3QpLgogICAKICAgICAtIGRpc2FtYmlndWF0ZSBzb21lIGluc3RhbmNlcyBvZiAidmVyc2lvbiIgaW4gZGVmYXVsdCB2ZXJzaW9uCiAgICAgICBwcm9tcHQgdGV4dC4KICAgCjIwMDItMDMtMDUgMDI6MzQgIGR0czEyCgogICAqIGNvbmZpZ3VyZSAsIGNvbmZpZ3VyZS5pbjoKCiAgIENvcnJlY3RseSBkZXRlY3Qgd2hlbiBubyBpbml0aWFsIGRlZmF1bHQgdmVyc2lvbiBoYXMgYmVlbiBzZXQuCiAgIEFjY2VwdCAnMmMnIGFzIHdlbGwgYXMgJzInIGZvciBhIGRlZmF1bHQgdmVyc2lvbiBjaG9pY2UuCiAgIEZpeCB0aGUgdGl0bGUgZm9yIHRoaXMgcHJvbXB0LCBhbmQgcmV3b3JkIHRoZSBkZXNjcmlwdGlvbiB0bwogICBtYWtlIGl0IGEgKnNsaWdodGx5KiBsZXNzIGxlYWRpbmcgcXVlc3Rpb24sIG0nbHVkLgogICAKICAgUW46IFNob3VsZCB3ZSBzdXBwb3J0IGEgIm5vIGRlZmF1bHQgdmVyc2lvbiIgb3B0aW9uID8KICAgICAoaGVuY2UgYWxsb3cgdGhlIGFkbWluIHRvIGZvcmNlIHRoZSBkZWNpc2lvbiBkb3duIHRvIHRoZSB1c2VyKQogICAKMjAwMi0wMy0wNCAxODoxNCAgaGFyZGFrZXIKCiAgICogYWdlbnQvbWliZ3JvdXAvYWdlbnR4L2NsaWVudC5jOgoKICAgdWNkLXNubXAgLT4gbmV0LXNubXAgY2hhbmdlCiAgIAoyMDAyLTAzLTA0IDE4OjEwICBoYXJkYWtlcgoKICAgKiBhZ2VudC9hZ2VudF9oYW5kbGVyLmM6CgogICAoVG8gSm9obik6IGRvIG5vdCBmcmVlIHRoZSBteXZvaWQgcG9pbnRlciBpbiBhIGhhbmRsZXIuICBZb3UgY2FuIG5vdAogICBhc3N1bWUgdGhhdCBpdCdzIGEgZnJlZWFibGUgcmVzb3VyY2UuICBGb3IgaW5zdGFuY2UsIHRoZSBhZ2VudHggbWFzdGVyCiAgIGFnZW50IHdhcyB1c2luZyBpdCB0byBzdG9yZSB0aGUgbWFzdGVyIHNlc3Npb24gcG9pbnRlciBpbiBpdCAod2hpY2gKICAgd291bGQgZXhpc3QgaW4gbXVsdGlwbGUgcmVnaXN0ZXJlZCBub2RlcykuCiAgIAoyMDAyLTAzLTA0IDE3OjI2ICBoYXJkYWtlcgoKICAgKiBjb25maWd1cmUuaW4gLCBpbmNsdWRlL25ldC1zbm1wL3NubXB2M19hcGkuaCAsCiAgIHNubXBsaWIvTWFrZWZpbGUuaW46CgogICB1c2UgYSBjb25maWd1cmUgZ2VuZXJhdGVkIHdyYXBwZXIgaGVhZGVyIGZvciB2MyBzZWN1cml0eSBtb2R1bGVzLgogICAKMjAwMi0wMy0wNCAxMTo1OCAgaGFyZGFrZXIKCiAgICogaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oOgoKICAgYWRkIGRtYWxsb2MuaCB0byB0aGUgcHJvcGVyIHBsYWNlLgogICAKMjAwMi0wMy0wNCAxMTo1MyAgaGFyZGFrZXIKCiAgICogYWdlbnQvbWliZ3JvdXAvZGlzbWFuL210ZVRyaWdnZXJUYWJsZS5jOgoKICAgc3RyaW5nIGNsZWFuIHVwcy4KICAgCjIwMDItMDMtMDQgMTE6NTIgIGhhcmRha2VyCgogICAqIGFjY29uZmlnLmggLCBhY2xvY2FsLm00ICwgY29uZmlndXJlICwKICAgY29uZmlndXJlLmluICwgaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbiAsCiAgIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmggLAogICBzbm1wbGliL3NubXBfcGFyc2VfYXJncy5jICwgc25tcGxpYi9zbm1wdjMuYzoKCiAgIEltcGxlbWVudCBhIGRlZmF1bHQgdmVyc2lvbiBwcm9tcHQgZm9yIGNvbmZpZ3VyZS4KICAgIC0gKFdlcyBkdWNrcyBhcyB0aGlzIGlzIGN1cnJlbnRseSBzZXQgdG8gJzMnIHdoaWNoIGhlIG1heSBoYXZlIHRvCiAgICAgICBjaGFuZ2UgYXMgaXQgaGFzbid0IGV4YWN0bHkgYmVlbiBhZ3JlZWQgdXBvbiBhcyB0aGUgcHJvcGVyIGRlZmF1bHQgeWV0KS4KICAgIC0gLS13aXRoLWRlZmF1bHQtc25tcC12ZXJzaW9uIGFsc28gY3JlYXRlZC4KICAgIC0gY2hhbmdlZCBoYW5kbGluZyBvZiBkZWZhdWx0IHN0b3JlIC8gc25tcC5jb25mIHVzYWdlIGJ1dCBpbXBhY3QKICAgICAgc2hvdWxkIGJlIGxvdywgaG9wZWZ1bGx5LgogICAKMjAwMi0wMy0wNCAxMTo0OSAgaGFyZGFrZXIKCiAgICogc25tcGxpYi9zbm1wX2FwaS5jOgoKICAgYSBmZXcgZXJyb3Igc3RyaW5ncyBzbGlnaHRseSBpbXByb3ZlZC4gIFdlIHJlYWxseSBuZWVkIHRvIGNoYW5nZSB0aGUKICAgd2F5IHRoZXNlIGFyZSBoYW5kbGVkIHRvIGdldCBiZXR0ZXIgaW1wcm92ZW1lbnQuCiAgIAoyMDAyLTAzLTA0IDA3OjQ5ICBoYXJkYWtlcgoKICAgKiB0ZXN0aW5nL01ha2VmaWxlLmluOgoKICAgc2VwYXJhdGUgb3V0IHRoZSBjbGVhbmluZyBvZiAvdG1wIGZyb20gdGhlIG1haW4gY2xlYW5pbmcgdG8gcHJvdmlkZSBpdAogICBhcyBhIHNwZWNpYWwgdGFyZ2V0LgogICAKMjAwMi0wMy0wNCAwNzozOCAgaGFyZGFrZXIKCiAgICogYWdlbnQvbWliZ3JvdXAvYWdlbnR4L3Byb3RvY29sLmM6CgogICAtV2FsbCBmaXhlcy4KICAgCjIwMDItMDMtMDQgMDU6MzIgIGpicG4KCiAgICogbWFuLzogc25tcGJ1bGtnZXQuMS5kZWYgLCBzbm1wYnVsa3dhbGsuMS5kZWYgLAogICBzbm1wZ2V0LjEuZGVmICwgc25tcGdldG5leHQuMS5kZWYgLCBzbm1wc3RhdHVzLjEuZGVmCiAgICwgc25tcHRlc3QuMS5kZWYgLCBzbm1wdHJhcC4xLmRlZjoKCiAgICAgLSByZW1vdmUgZnVydGhlciBpbnN0YW5jZXMgb2YgcG9zaXRpb25hbCBjb21tdW5pdHkgc3RyaW5nIHBhcmFtZXRlciwKICAgICAgIGFmdGVyIFBhdHJpY2sgV2VsY2hlCiAgIAoyMDAyLTAzLTA0IDA1OjI1ICBqYnBuCgogICAqIG1hbi86IHNubXBkLmNvbmYuNS5kZWYgLCBzbm1wd2Fsay4xLmRlZjoKCiAgICAgLSBwYXRjaGVzIGZyb20gUGF0cmljayBXZWxjaGUKICAgCjIwMDItMDMtMDQgMDE6MTYgIGR0czEyCgogICAqIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wLzogbWVtb3J5LmMgKFY0LTItcGF0Y2hlcy42KSwgbWVtb3J5LmM6CgogICBDb3JyZWN0IGRlYnVnIG91dHB1dCBtZXNzYWdlICh0aGFua3MgdG8gSmVyb2VuIFJ1aWdyb2spCiAgIAoyMDAyLTAzLTAxIDIyOjQ1ICBoYXJkYWtlcgoKICAgKiBhZ2VudC9taWJncm91cC9hZ2VudHgvcHJvdG9jb2wuYzoKCiAgIG1ha2luZyB0aGUgKHNhbWUpIGRlYnVnZ2luZyBzdGF0ZW1lbnQgbW9yZSB1c2VmdWwuCiAgIAoyMDAyLTAzLTAxIDIyOjQzICBoYXJkYWtlcgoKICAgKiBhZ2VudC9taWJncm91cC9hZ2VudHgvcHJvdG9jb2wuYzoKCiAgIGFkZCBtaXNzaW5nIG5ld2xpbmUgdG8gYSBkZWJ1Z2dpbmcgc3RhdGVtZW50LgogICAKMjAwMi0wMy0wMSAxMjo0OSAgaGFyZGFrZXIKCiAgICogc25tcGxpYi86IGtleXRvb2xzLmMgLCBtaWIuYyAsIHNubXBfYXBpLmMgLAogICBzbm1wX2NsaWVudC5jICwgc25tcF9wYXJzZV9hcmdzLmMgLCBzbm1wdjMuYzoKCiAgIEZpcnN0IHBhc3MgYXQgYSBmZXcgYmV0dGVyIGVycm9yIG1lc3NhZ2VzLgogICAKMjAwMi0wMy0wMSAxMjowMSAgaGFyZGFrZXIKCiAgICogbWlicy9NYWtlZmlsZS5pbjoKCiAgIGRvbid0IGluc3RhbGwgaGVhZGVycyBoZXJlLgogICAKMjAwMi0wMy0wMSAwNTo0MSAgamJwbgoKICAgKiBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmggLCBzbm1wbGliL21pYi5jOgoKICAgICAtIGFkZCBzbnByaW50X3ZhbHVlLCBzbnByaW50X3ZhcmlhYmxlLCBzbnByaW50X29iamlkCiAgIAoyMDAyLTAyLTI4IDA2OjU0ICBkdHMxMgoKICAgKiBhZ2VudC9zbm1wX3ZhcnMuYyAsIHNubXBsaWIvc25tcENhbGxiYWNrRG9tYWluLmMgLAogICB3aW4zMi9saWJzbm1wL2xpYnNubXAuZHNwICwgd2luMzIvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg6CgogICBBZGQgYmFjayB0aGUgJ3NubXBDYWxsYmFjaycgZG9tYWluIHVuZGVyIFdpbmRvd3MuCiAgIAoyMDAyLTAyLTI3IDEwOjA0ICBqYnBuCgogICAqIGFwcHMvOiBzbm1wYnVsa2dldC5jICwgc25tcGJ1bGt3YWxrLmMgLCBzbm1wZ2V0LmMKICAgLCBzbm1wZ2V0bmV4dC5jICwgc25tcHNldC5jICwgc25tcHN0YXR1cy5jCiAgICwgc25tcHRhYmxlLmMgLCBzbm1wdGVzdC5jICwgc25tcHRyYW5zbGF0ZS5jCiAgICwgc25tcHRyYXAuYyAsIHNubXB1c20uYyAsIHNubXB3YWxrLmM6CgogICAgIC0gdGFydCB1cCB1c2FnZSBtZXNzYWdlcywgbWFrZSB0aGVtIG1vcmUgY29uc2lzdGVudCBhbmQgYnJpbmcgaW4gbGluZQogICAgICAgd2l0aCBtYW51YWwgcGFnZXMKICAgCjIwMDItMDItMjcgMTA6MDMgIGpicG4KCiAgICogbWFuLzogc25tcHNldC4xLmRlZiAsIHNubXB0YWJsZS4xLmRlZiAsIHNubXB0cmFwLjEuZGVmCiAgICwgc25tcHVzbS4xLmRlZjoKCiAgICAgLSBtaW5vciBmb3JtYXR0aW5nIGNoYW5nZXMKICAgCjIwMDItMDItMjcgMTA6MDMgIGpicG4KCiAgICogc25tcGxpYi86IG1pYi5jICwgcGFyc2UuYyAsIHNubXBfcGFyc2VfYXJncy5jOgoKICAgICAtIGRyb3AgY29tbXVuaXR5IHBvc2l0aW9uYWwgcGFyYW1ldGVyCiAgIAogICAgIC0gdGFydCB1cCB1c2FnZSBtZXNzYWdlcyB0byBiZSBtb3JlIGNvbnNpc3RlbnQgYW5kIGluIGxpbmUgd2l0aCBtYW51YWwKICAgICAgIHBhZ2VzCiAgIAoyMDAyLTAyLTI3IDA5OjQ3ICBkdHMxMgoKICAgKiBzbm1wbGliLzogdmFjbS5jIChWNC0yLXBhdGNoZXMuNCksIHZhY20uYzoKCiAgIEhhbmRsZSB2aWV3cyB0aGF0IHNwZWNpZnkgYSBmdWxsIGluc3RhbmNlIE9JRC4KICAgKFNpbmNlIHRoZSBpbnRlcm5hbGx5IHN0b3JlZCBPSUQgcHJlcGVuZHMgdGhlIGxlbmd0aCBhcyB3ZWxsLAogICAgdGhlIGFwcGFyZW50IGxlbmd0aCBpcyBvbmUgZ3JlYXRlciB0aGFuIGl0IHJlYWxseSBpcykKICAgCjIwMDItMDItMjcgMDY6NTAgIGpicG4KCiAgICogYXBwcy9zbm1wdHJhcGQuYzoKCiAgICAgLSBbQUREUkVTU0VTXSAtPiBbTElTVEVOSU5HIEFERFJFU1NFU10gaW4gdXNhZ2UgbWVzc2FnZSwgdG8gbWF0Y2gKICAgICAgIG1hbnVhbCBwYWdlLgogICAKMjAwMi0wMi0yNyAwNjowOSAgamJwbgoKICAgKiBtYW4vc25tcGQuY29uZi41LmRlZjoKCiAgICAgLSBkcm9wIG9wdGlvbmFsIHBvc2l0aW9uYWwgY29tbXVuaXR5IHBhcmFtZXRlciBmcm9tIHRyYXBzZXNzCiAgICAgICBkZXNjcmlwdGlvbi4KICAgCjIwMDItMDItMjcgMDU6NTEgIGpicG4KCiAgICogaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oICwgc25tcGxpYi9taWIuYzoKCiAgICAgLSBkcm9wIHNwcmludF9ibGFoIGZ1bmN0aW9ucwogICAKICAgICAtIG5vIHNucHJpbnRfYmxhaCB5ZXQKICAgCjIwMDItMDItMjcgMDU6NDMgIGpicG4KCiAgICogc25tcGxpYi9hc24xLmM6CgogICAgIC0gZG9uJ3QgdXNlIHNwcmludF9ibGFoIGZ1bmN0aW9ucwogICAKMjAwMi0wMi0yNyAwNTo0MCAgamJwbgoKICAgKiBzbm1wbGliL3NubXBfZGVidWcuYzoKCiAgICAgLSBkb24ndCB1c2Ugc3ByaW50X2JsYWggZnVuY3Rpb25zCiAgIAogICAgIC0gZHJvcCBhcmNoYWljIERFQlVHUCBmdW5jdGlvbnMKICAgCjIwMDItMDItMjcgMDU6MzcgIGR0czEyCgogICAqIGFnZW50L21pYmdyb3VwL2hvc3QvOiBocl9zdG9yYWdlLmMgLCBocl9zd3J1bi5jOgoKICAgVXNlIHRoZSBtb3JlIGluZm9ybWF0aXZlICdvdXRwdXRfYXBpLmgnIGhlYWRlciBmaWxlIG5hbWUKICAgICAoSSBtdXN0IGhhdmUgbWlzc2VkIHRoZXNlIGVhcmxpZXIpCiAgIAoyMDAyLTAyLTI3IDA1OjM1ICBqYnBuCgogICAqIG1hbi9zbm1wY21kLjEuZGVmOgoKICAgICAtIGRyb3AgY29tbXVuaXR5IHBvc2l0aW9uYWwgcGFyYW1ldGVyCiAgIAogICAgIC0geWVzLCBmb3Igb25jZSB0aGUgZG9jdW1lbnRhdGlvbiBoYXMgYmVlbiB1cGRhdGVkICpiZWZvcmUqIHRoZQogICBjb2RlIQogICAKMjAwMi0wMi0yNyAwNToxMiAgamJwbgoKICAgKiBhZ2VudC9taWJncm91cC9taWJJSS9pcHY2LmM6CgogICAgIC0gZG9uJ3QgdXNlIG9ic29sZXRlIERFQlVHUCBmdW5jdGlvbgogICAKMjAwMi0wMi0yNyAwNToxMSAgamJwbgoKICAgKiBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvOiBzbm1wX2FwaS5oICwgc25tcF9kZWJ1Zy5oICwKICAgc3lzdGVtLmg6CgogICAgIC0gZHJvcCBhcmNoYWljIERFQlVHUCBmdW5jdGlvbnMKICAgCjIwMDItMDItMjcgMDU6MTAgIGpicG4KCiAgICogaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NjYXBpLmg6CgogICAgIC0gZG9uJ3QgdXNlIG9ic29sZXRlIERFQlVHUEwgZnVuY3Rpb24KICAgCjIwMDItMDItMjcgMDQ6MzIgIGpicG4KCiAgICogYXBwcy9zbm1wYnVsa3dhbGsuYyAsIGFwcHMvc25tcGRlbHRhLmMgLAogICBhcHBzL3NubXB0YWJsZS5jICwgYXBwcy9zbm1wdXNtLmMgLCBhcHBzL3NubXB3YWxrLmMKICAgLCBhZ2VudC9hZ2VudF9pbmRleC5jICwgYWdlbnQvaGVscGVycy90YWJsZS5jOgoKICAgICAtIGRvbid0IHVzZSBzcHJpbnRfYmxhaCBmdW5jdGlvbnMKICAgCjIwMDItMDItMjcgMDI6MjYgIGpicG4KCiAgICogYWdlbnQvbWliZ3JvdXAvYWdlbnR4L21hc3Rlci5jOgoKICAgICAtIGRvbid0IHVzZSBzcHJpbnRfdmFyaWFibGUKICAgCjIwMDItMDItMjcgMDI6MDggIGpicG4KCiAgICogYWdlbnQvc25tcF9hZ2VudC5jOgoKICAgICAtIGRvbid0IHVzZSBzcHJpbnRfdmFyaWFibGUsIG5vLCBJIE1FQU4gaXQgdGhpcyB0aW1lCiAgIAoyMDAyLTAyLTI3IDAyOjA1ICBqYnBuCgogICAqIGFnZW50L3NubXBfYWdlbnQuYzoKCiAgICAgLSBkb24ndCB1c2Ugc3ByaW50X3ZhcmlhYmxlCiAgIAoyMDAyLTAyLTI2IDEyOjQ2ICByc3RvcnkKCiAgICogYWdlbnQvc25tcF9hZ2VudC5jOgoKICAgY2xlYXIgbmV3IG1lbW9yeSBhZnRlciByZWFsbG9jKCkgc2luY2UgcmVhbGxvYyBkb2Vzbid0IGRvIGl0LgogICAKMjAwMi0wMi0yNiAxMjozMCAgaGFyZGFrZXIKCiAgICogcGVybC9TTk1QL1NOTVAueHM6CgogICBhZGQgVU5TSUdORUQzMgogICAKMjAwMi0wMi0yNiAwODo1NSAgamJwbgoKICAgKiBhZ2VudC9taWJncm91cC86IGtlcm5lbF9zdW5vczUuYyAsIGtlcm5lbF9zdW5vczUuaCAsCiAgIG1pYklJL2F0LmMgLCBtaWJJSS9pY21wLmMgLCBtaWJJSS9pbnRlcmZhY2VzLmMgLAogICBtaWJJSS9pcC5jICwgbWliSUkvdGNwLmMgLCBtaWJJSS91ZHAuYyAsCiAgIG1pYklJL3Zhcl9yb3V0ZS5jOgoKICAgICAtIGNoYW5nZSBjYWNoZSBpbXBsZW1lbnRhdGlvbiBhZnRlciBzb21lIGludGVyZXN0aW5nIHByb2ZpbGluZyAoc2VlCiAgICAgICBsZW5ndGh5IG5ldyBjb21tZW50IGluIGtlcm5lbF9zdW5vczUuYykKICAgCjIwMDItMDItMjYgMDg6MTMgIGR0czEyCgogICAqIGFnZW50L2hlbHBlcnMvYWxsX2hlbHBlcnMuYyAsIGFnZW50L2hlbHBlcnMvdGFibGUuYyAsCiAgIGFnZW50L21pYmdyb3VwL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5VGFibGUuYyAsCiAgIGFnZW50L21pYmdyb3VwL3RhcmdldC9zbm1wVGFyZ2V0QWRkckVudHJ5LmMgLAogICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9wcm94eS5jICwgc25tcGxpYi9zbm1wLXRjLmMgLAogICBzbm1wbGliL3VjZF9jb21wYXQuYzoKCiAgIFJlbW92ZSBhc3NvcnRlZCBleHRyYW5lb3VzIF5NJ3MKICAgCjIwMDItMDItMjYgMDc6MTQgIGR0czEyCgogICAqIFJFQURNRS53aW4zMjoKCiAgIEEgcXVpY2sgZ3VpZGUgdG8gaW5zdGFsbGluZyB0aGUgQ29yZSBQbGF0Zm9ybSBTREssIG5lZWRlZCBmb3IgdGhlIFdpbmRvd3MgYWdlbnQuCiAgIAoyMDAyLTAyLTI2IDA3OjAzICBkdHMxMgoKICAgKiBhZ2VudC9hZ2VudF90cmFwLmMgLCBhZ2VudC9zbm1wX3ZhcnMuYyAsCiAgIGFnZW50L3NubXBkLmMgLCBhZ2VudC9oZWxwZXJzL3RhYmxlX2RhdGFzZXQuYyAsCiAgIGFnZW50L21pYmdyb3VwL21pYklJL3N5c3RlbV9taWIuYyAsCiAgIGFnZW50L21pYmdyb3VwL21pYklJL3VkcC5jICwgYWdlbnQvbWliZ3JvdXAvbWliSUkvdmFjbV92YXJzLmMKICAgLCBhcHBzL3NubXB0cmFwZF9sb2cuYyAsCiAgIGluY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfaGFuZGxlci5oICwKICAgaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF90cmFwLmggLAogICBpbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2RhdGFzZXQuaCAsCiAgIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaCAsCiAgIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2VudW0uaCAsIHNubXBsaWIvbWliLmMgLAogICBzbm1wbGliL3NubXBfcGFyc2VfYXJncy5jICwgc25tcGxpYi9zbm1wdjMuYyAsCiAgIHNubXBsaWIvd2luc2VydmljZS5jOgoKICAgQXNzb3J0ZWQgbWlub3IgdHdlYWtzIHRvIGVuc3VyZSB0aGF0IHRoZSBwcm9qZWN0IGJ1aWxkcyB1bmRlciBWaXN1YWwgQysrLgogICBNb3N0bHkgYmVjYXVzZSBWQysrIGlzIGZ1c3N5IGFib3V0IHNvcnQtb2YtY29tcGF0aWJsZSBkYXRhIHR5cGVzCiAgICAgKGUuZy4gc2lnbmVkIHZzIHVuc2lnbmVkIGludGVnZXJzKS4KICAgCjIwMDItMDItMjYgMDc6MDAgIGR0czEyCgogICAqIHdpbjMyLzogbWliX21vZHVsZV9pbml0cy5oICwgd2luMzIuZHN3ICwgd2luMzIub3B0CiAgICwgbGliYWdlbnQvbGliYWdlbnQuZHNwICwgbGlic25tcC9saWJzbm1wLmRzcCAsCiAgIGxpYnVjZG1pYnMvbGlidWNkbWlicy5kc3AgLCBuZXRzbm1wbWlicy9uZXRzbm1wbWlicy5kc3AgLAogICBzbm1wZC9zbm1wZC5kc3AgLCBzbm1wdHJhcGQvc25tcHRyYXBkLmRzcDoKCiAgIFJlbmFtZSAnbGlidWNkbWlicycgdG8gcmVmbGVjdCB0aGUgY2hhbmdlIG9mIHByb2plY3QgbmFtZSwKICAgYW5kIGFzc29ydGVkIHR3ZWFrcyBzbyB0aGF0IHRoZSBmdWxsIHByb2plY3QgYnVpbGRzIHVuZGVyIFZpc3VhbCBDKysuCiAgICAgKE4uQjogVGhlIGFnZW50IHJlcXVpcmVzICJNaWNyb3NvZnQgUGxhdGZvcm0gQ29yZSBTREsiIGluIG9yZGVyCiAgICAgICB0byBidWlsZCB0aGUgJ25ldHNubXBtaWJzJyBwcm9qZWN0KQogICAKMjAwMi0wMi0yNiAwNjo1MyAgaGFyZGFrZXIKCiAgICogcGVybC9BbnlEYXRhX1NOTVAvU3RvcmFnZS5wbToKCiAgIHJlbW92ZSBkdXBsaWNhdGUgdmFyaWFibGUgaW4gYSB3YXJuaW5nCiAgIAoyMDAyLTAyLTI2IDA2OjQwICBqYnBuCgogICAqIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Ztc3RhdF9zb2xhcmlzMi5jOgoKICAgICAtIGluY2x1ZGUgbmV0LXNubXAtY29uZmlnLmgKICAgCjIwMDItMDItMjUgMjE6MDkgIGhhcmRha2VyCgogICAqIHBlcmwvQW55RGF0YV9TTk1QL0lOU1RBTEw6CgogICBtb3JlIGluc3RhbGwgY2hhbmdlcwogICAKMjAwMi0wMi0yNSAyMTowOCAgaGFyZGFrZXIKCiAgICogcGVybC9BbnlEYXRhX1NOTVAvSU5TVEFMTDoKCiAgIG1lbnRpb24gaW5zdGFsbGluZyBEQkQ6OkZpbGUuCiAgIAoyMDAyLTAyLTI1IDIwOjM4ICBoYXJkYWtlcgoKICAgKiBwZXJsL0FueURhdGFfU05NUC9JTlNUQUxMOgoKICAgb25lIHRvbyBtYW55ICcwJ3MgaW4gYSB1cmwuCiAgIAoyMDAyLTAyLTI1IDIwOjMzICBoYXJkYWtlcgoKICAgKiBwZXJsL0FueURhdGFfU05NUC9JTlNUQUxMOgoKICAgcmV3b3JkLgogICAKMjAwMi0wMi0yNSAyMDozMCAgaGFyZGFrZXIKCiAgICogcGVybC9BbnlEYXRhX1NOTVAvU3RvcmFnZS5wbToKCiAgIG1vdmUgd2FybmluZyBvdXRzaWRlIHNlY29uZGFyeSB3YXJuaW5nIGF1Z21lbnRhdGlvbiBsb29wLgogICAKMjAwMi0wMi0yNSAyMDoyOSAgaGFyZGFrZXIKCiAgICogcGVybC9BbnlEYXRhX1NOTVAvSU5TVEFMTDoKCiAgIHVwZGF0ZSBTUUw6OlN0YXRlbWVudCBtb2R1bGUuCiAgIAoyMDAyLTAyLTI1IDE2OjI1ICByc3RvcnkKCiAgICogYWdlbnQvaGVscGVycy90YWJsZV9hcnJheS5jOgoKICAgYWRkIGZpbmRfdGFibGVfYXJyYXlfaGFuZGxlcigpOyByZW1vdmUgZGVidWdnaW5nIGNvZGUvY29tbWVudHM7CiAgIG1ha2Ugc3VyZSB3ZSBoYXZlIHRoZSByaWdodCBoYW5kbGVyIGJlZm9yZSB1c2luZyB0aGUgdm9pZCBwb2ludGVyOwogICByZW1vdmUgXk0gY2hhcmFjdGVycwogICAKMjAwMi0wMi0yNSAxMTo1NyAgaGFyZGFrZXIKCiAgICogc25tcGxpYi9kYXRhX2xpc3QuYyAsIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaDoKCiAgIDIgbmV3IGZ1bmN0aW9ucy4KICAgCjIwMDItMDItMjUgMTE6MTggIGhhcmRha2VyCgogICAqIHBlcmwvU05NUC9TTk1QLnhzOgoKICAgc2V0IHNlY3VyaXR5IG1vZGVsCiAgIAoyMDAyLTAyLTI1IDA4OjE1ICBkdHMxMgoKICAgKiBhZ2VudC9oZWxwZXJzL2FsbF9oZWxwZXJzLmMgLCBhZ2VudC9oZWxwZXJzL29sZF9hcGkuYwogICAsIGFnZW50L2hlbHBlcnMvdGFibGUuYyAsIGFnZW50L2hlbHBlcnMvdGFibGVfYXJyYXkuYwogICAsIGFnZW50L2hlbHBlcnMvdGFibGVfZGF0YXNldC5jICwKICAgYWdlbnQvbWliZ3JvdXAvbm90aWZpY2F0aW9uL3NubXBOb3RpZnlUYWJsZS5jICwKICAgYWdlbnQvbWliZ3JvdXAvdGFyZ2V0L3NubXBUYXJnZXRBZGRyRW50cnkuYyAsCiAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Byb3h5LmMgLAogICBpbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X2hhbmRsZXIuaCAsCiAgIGluY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGUuaCAsIHdpbjMyL3dpbjMyLmRzdzoKCiAgIENvbnRpbnVpbmcgaW1wcm92ZW1lbnRzIHRvIGNvbXBpbGF0aW9uIG9mIHRoZSBsYXRlc3QgY29kZSB1bmRlciBWaXN1YWwgQysrLgogICBUaGUgJ2xpYmhlbHBlcnMnIHByb2plY3Qgbm93IGNvbXBpbGVzLCBhbmQgdGhpcyBhbHNvIGFkZHJlc3NlcyBhIG51bWJlcgogICBvZiB3YXJuaW5ncyBhbmQgZXJyb3JzIGluIHRoZSBsaWJhZ2VudCBhbmQgbGlidWNkbWlicyBwcm9qZWN0cy4KICAgICBCdXQgdGhlc2UgdHdvIHN0aWxsIGZhaWwgb24gJ09JRF9MRU5HVEgnIGFuZCAnaXBobHBhcGkuaCcKICAgCjIwMDItMDItMjUgMDc6MDAgIGR0czEyCgogICAqIHdpbjMyL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmg6CgogICBQcm92aWRlIGEgcGxhdXNpYmxlIG1vZHVsZSBjb25maWd1cmF0aW9uIGxpc3QgZm9yIHRoZSBXaW5kb3dzIGFnZW50LgogICAKMjAwMi0wMi0yNSAwNjowNCAgamJwbgoKICAgKiBtaWJzL05FVC1TTk1QLUFHRU5ULU1JQi50eHQ6CgogICAgIC0gcmVzb2x2ZSBjb25mbGljdGluZyBTWU5UQVhlcyBmb3IgbnNUcmFuc2FjdGlvbk1vZGUKICAgCiAgICAgLSBhZGQgcmFuZ2UgZm9yIGluZGV4IG5zVHJhbnNhY3Rpb25JRAogICAKMjAwMi0wMi0yNSAwMzoyMyAgZHRzMTIKCiAgICogd2luMzIvOiBsaWJzbm1wL2xpYnNubXAuZHNwICwgbGlic25tcF9kbGwvbGlic25tcF9kbGwuZHNwOgoKICAgRW5zdXJlIHRoZSBtYWluIGxpYnJhcnkgY29tcGlsZXMgYW5kIHdvcmtzIHVuZGVyIFdpbmRvd3MuCiAgIAoyMDAyLTAyLTI1IDAzOjE5ICBkdHMxMgoKICAgKiBhcHBzLzogbm90aWZpY2F0aW9uX2xvZy5oICwgc25tcHRyYXBkLmM6CgogICBFbnN1cmUgc25tcHRyYXBkIGNvbXBpbGVzIHVuZGVyIFdpbmRvd3MuCiAgIAoyMDAyLTAyLTI1IDAzOjA5ICBkdHMxMgoKICAgKiBzbm1wbGliLzogb2lkX2FycmF5LmMgLCBvaWRfc3Rhc2guYyAsIHNubXAtdGMuYyAsCiAgIHVjZF9jb21wYXQuYzoKCiAgIE1pbm9yIHR3ZWFrcyB0byBrZWVwIFZpc3VhbCBDKysgaGFwcHkuCiAgIAoyMDAyLTAyLTI1IDAyOjU3ICBkdHMxMgoKICAgKiBpbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaDoKCiAgIFdyYXAgd2l0aCAiZXh0ZXJuIEMiCiAgIAoyMDAyLTAyLTI1IDAyOjU2ICBkdHMxMgoKICAgKiBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY211X2NvbXBhdC5oOgoKICAgUGFuZGVyIHRvIENQUCdzIGluY3JlZGlibHkgZnVzc3kgbmF0dXJlLCBhbmQgcHJvdmlkZSB0aGUgY29ycmVjdCBoZWFkZXIgZmlsZSBuYW1lLgogICAKMjAwMi0wMi0yNSAwMToyMSAgZHRzMTIKCiAgICogYWdlbnQvOiBzbm1wZC5jIChWNC0yLXBhdGNoZXMuMSksIHNubXBkLmM6CgogICBTcGVjaWZ5IHRoZSBjb3JyZWN0IGRlYnVnIHRva2VuIGZvciBkaXNwbGF5aW5nIHRoZSBsaXN0IG9mIG1vZHVsZXMKICAgKHNwb3R0ZWQgYnkgQnJpYW4gU2hhdmVyKQogICAKMjAwMi0wMi0yMiAxMDo1NiAgaGFyZGFrZXIKCiAgICogbG9jYWwvbWliMmM6CgogICBzdXBwb3J0IEBmb3JlYWNoICR2YXIxICR2YXIyIGVudW1zQAogICAKMjAwMi0wMi0yMiAxMDo1NiAgaGFyZGFrZXIKCiAgICogcGVybC9BbnlEYXRhX1NOTVAvc25tcHNoOgoKICAgcmVtb3ZlIHRyYWlsaW5nIDsncyBmcm9tIHNxbCBzdGF0ZW1lbnRzLgogICAKMjAwMi0wMi0yMiAxMDo1NSAgaGFyZGFrZXIKCiAgICogaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmggLCBzbm1wbGliL3Rvb2xzLmM6CgogICBkZWZpbmUgbmV0c25tcF9zdHJkdXBfYW5kX251bGwKICAgCjIwMDItMDItMjIgMTA6NTMgIGhhcmRha2VyCgogICAqIGluY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaDoKCiAgIGluY2x1ZGUgdXRpbGl0aWVzLgogICAKMjAwMi0wMi0yMiAxMDo1MSAgaGFyZGFrZXIKCiAgICogYWdlbnQvaGVscGVycy90YWJsZV9pdGVyYXRvci5jOgoKICAgLSBkb24ndCBsb29wIGFnYWluIGZvciBzZWNvbmRhcnkgU0VUIG1vZGVzIGFuZCBjYWNoZSBpbmZvcm1hdGlvbiBpbnN0ZWFkLgogICAtIHZhcmlvdXMgZml4ZXMuCiAgIAoyMDAyLTAyLTIyIDEwOjQ5ICBoYXJkYWtlcgoKICAgKiBhZ2VudC9oZWxwZXJzL01ha2VmaWxlLmluOgoKICAgZml4IGluc3RhbGwgZGlyZWN0b3JpZXMgZm9yIGhlYWRlcnMKICAgCjIwMDItMDItMjIgMTA6NDkgIGhhcmRha2VyCgogICAqIG5ldC1zbm1wLWNvbmZpZy5pbjoKCiAgIGFkZCAtLWNvbXBpbGUtc3ViYWdlbnQgZm9yIGF1dG9tYXR0ZWQgc3ViYWdlbnQgY29tcGlsYXRpb24gZnJvbQogICBtaWJtb2R1bGUgLmMgZmlsZXMgOy0pCiAgIAoyMDAyLTAyLTIyIDA5OjI3ICBkdHMxMgoKICAgKiBzbm1wbGliLzogTVNHMDAwMDEuYmluLCB3aW5zZXJ2aWNlLm1jIChWNC0yLXBhdGNoZXMuWzEsMV0pLAogICBNU0cwMDAwMS5iaW4gLCB3aW5zZXJ2aWNlLm1jOgoKICAgQWRkIG1pc3NpbmcgZmlsZXMgZm9yIFdpbmRvd3Mgc2VydmljZSBvcGVyYXRpb24uCiAgIAoyMDAyLTAyLTIyIDA4OjU1ICBkdHMxMgoKICAgKiBhZ2VudC9zbm1wZC5jOgoKICAgSnVzdCBjbG9zZSB0aGUgbWFpbiBzZXNzaW9uIHdoZW4gc2h1dHRpbmcgZG93biB1bmRlciBXaW5kb3dzLAogICBub3QgZXZlcnl0aGluZyAoc28gdGhhdCBpdCBjYW4gc3RpbGwgZ2VuZXJhdGUgdGhlIHNodXRkb3duIHRyYXApLgogICAKMjAwMi0wMi0yMiAwODo0MCAgZHRzMTIKCiAgICogaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oICwKICAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oICwgc25tcGxpYi9hc24xLmMgLAogICBzbm1wbGliL21pYi5jICwgc25tcGxpYi9wYXJzZS5jICwgc25tcGxpYi9zbm1wX2FwaS5jCiAgICwgc25tcGxpYi9zbm1wX2VudW0uYyAsIHNubXBsaWIvc25tcHYzLmM6CgogICBUd2Vha3MgcmVxdWlyZWQgdG8gZ2V0IHRoZSBsaWJyYXJ5IGNvbXBpbGluZyB1bmRlciBXaW5kb3dzIFZDKysKICAgCjIwMDItMDItMjIgMDg6MzcgIGR0czEyCgogICAqIHdpbjMyLzogc25tcHNtX2luaXQuaCAsCiAgIGVuY29kZV9rZXljaGFuZ2UvZW5jb2RlX2tleWNoYW5nZS5kc3AgLAogICBuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaCAsIGxpYmFnZW50L2xpYmFnZW50LmRzcCAsCiAgIGxpYmhlbHBlcnMvbGliaGVscGVycy5kc3AgLCBsaWJzbm1wL2xpYnNubXAuZHNwICwKICAgbGlic25tcF9kbGwvbGlic25tcF9kbGwuZHNwICwgbGlidWNkbWlicy9saWJ1Y2RtaWJzLmRzcAogICAsIHNubXBidWxrZ2V0L3NubXBidWxrZ2V0LmRzcCAsCiAgIHNubXBidWxrd2Fsay9zbm1wYnVsa3dhbGsuZHNwICwgc25tcGQvc25tcGQuZHNwICwKICAgc25tcGRlbHRhL3NubXBkZWx0YS5kc3AgLCBzbm1wZGYvc25tcGRmLmRzcCAsCiAgIHNubXBnZXQvc25tcGdldC5kc3AgLCBzbm1wZ2V0bmV4dC9zbm1wZ2V0bmV4dC5kc3AgLAogICBzbm1wbmV0c3RhdC9zbm1wbmV0c3RhdC5kc3AgLCBzbm1wc2V0L3NubXBzZXQuZHNwICwKICAgc25tcHN0YXR1cy9zbm1wc3RhdHVzLmRzcCAsIHNubXB0YWJsZS9zbm1wdGFibGUuZHNwICwKICAgc25tcHRlc3Qvc25tcHRlc3QuZHNwICwgc25tcHRyYW5zbGF0ZS9zbm1wdHJhbnNsYXRlLmRzcAogICAsIHNubXB0cmFwL3NubXB0cmFwLmRzcCAsIHNubXB0cmFwZC9zbm1wdHJhcGQuZHNwCiAgICwgc25tcHVzbS9zbm1wdXNtLmRzcCAsIHNubXB2YWNtL3NubXB2YWNtLmRzcCAsCiAgIHNubXB3YWxrL3NubXB3YWxrLmRzcDoKCiAgIFByb3ZpZGUgV2luZG93cy1zcGVjaWZpYyB2ZXJzaW9ucyBvZiBhdXRvbWF0aWNhbGx5LWdlbmVyYXRlZCBoZWFkZXIgZmlsZXMsCiAgIGFuZCBhZGQgdGhlIG5ldyBpbmNsdWRlIHN0cnVjdHVyZSB0byB0aGUgcHJvamVjdCBmaWxlcy4KICAgCjIwMDItMDItMjIgMDc6MjQgIGR0czEyCgogICAqIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90cmFuc2Zvcm1fb2lkcy5oOgoKICAgRGVmaW5lIHN0YW5kYXJkIE9JRCBsZW5ndGhzIGhlcmUgKHdoZXJlIHRoZXkncmUgYXZhaWxhYmxlIHRvIGFueQogICBmaWxlIHdhbnRpbmcgdG8gYWNjZXNzIHRoZSBPSUQgc3RydWN0dXJlcykKICAgCjIwMDItMDItMjIgMDM6MjQgIGR0czEyCgogICAqIHNubXBsaWIvOiBzbm1wX3BhcnNlX2FyZ3MuYyAsIHNubXB2My5jOgoKICAgU3VwcG9ydCAiLi4uLiAtM3Uge3NlY05hbWV9IC4uLi4iIHN5bnRheAogICAoaW4gdGhlIG5vcm1hbCBnZXRvcHQgc3R5bGUgLSBpLmUuIG5vIG5lZWQgZm9yIHN1cnJvdW5kaW5nIHF1b3RlcykKICAgCiAgIEl0IHNob3VsZCBub3cgYmUgcG9zc2libGUgdG8gc3dpdGNoIHRvIHRoaXMgYXMgdGhlIHJlY29tbWVuZGVkIGZvcm0KICAgZm9yIFNOTVB2MyBvcHRpb25zIC0gaWYgdGhhdCdzIHdoYXQgd2Ugd2FudCB0byBkby4KICAgICBRbjogIERvIHdlIHdhbnQgdG8/CiAgIAoyMDAyLTAyLTIxIDA4OjM5ICBkdHMxMgoKICAgKiBzbm1wbGliL3NubXB2My5jOgoKICAgU3VwcG9ydCAiLTN1IHtzZWNOYW1lfSIgc3ludGF4ICgqd2l0aCogdGhlIHF1b3RlcywgdW5mb3J0dW5hdGVseSkuCiAgIE5vdyBjb21lcyB0aGUgZnVuIGJpdC4uLi4uCiAgIAoyMDAyLTAyLTIxIDA3OjU0ICBkdHMxMgoKICAgKiB3aW4zMi9zbm1wZC9zbm1wZC5kc3A6CgogICBGaXggYm9ndXMgc3RydWN0dXJlIGNvbW1lbnRzIGluIHRoZSBzbm1wZCBwcm9qZWN0IGZpbGUuCiAgIAoyMDAyLTAyLTIxIDA3OjMwICBqYnBuCgogICAqIGFnZW50L21pYmdyb3VwLzogbm90aWZpY2F0aW9uL3NubXBOb3RpZnlUYWJsZS5jICwKICAgdGFyZ2V0L3NubXBUYXJnZXRBZGRyRW50cnkuYzoKCiAgICAgLSBkcm9wIGlubGluZSAobW9yZSB0cm91YmxlIHRoYW4gaXQgaXMgd29ydGgpCiAgIAoyMDAyLTAyLTIxIDA1OjAwICBkdHMxMgoKICAgKiBzbm1wbGliLzogc25tcF9wYXJzZV9hcmdzLmMgLCBzbm1wdjMuYzoKCiAgIEZpcnN0IHBhc3MgYXQgYW4gU05NUHYzICJjb21iaW5lZC1vcHRpb24iIGNvbW1hbmQtbGluZSBmbGFnICgtM3gpLgogICAoSW4gKmFkZGl0aW9uKiB0byB0aGUgY3VycmVudCBjb21tYW5kLWxpbmUgZmxhZ3MsIEkgaGFzdGVuIHRvIGFkZCEpCiAgIAogICBTdXBwb3J0cyAgIi4uLiAtM3V7c2VjTmFtZX0gLi4uIiBhbmQgIi4uLiAtM3U9e3NlY05hbWV9IC4uLiIgc3ludGF4LAogICBidXQgbm90IHRoZSBzZXBhcmF0ZSAiLi4uIC0zdSB7c2VjTmFtZX0gLi4uIiBzdHlsZS4KICAgCiAgIEkgaGF2ZW4ndCB0b3VjaGVkIHRoZSBkb2N1bWVudGF0aW9uIG9yIHVzYWdlIG1lc3NhZ2UgdG8gbWVudGlvbiB0aGlzLgogICAKMjAwMi0wMi0yMCAxODoxNSAgaGFyZGFrZXIKCiAgICogbG9jYWwvbWliMmMuaXRlcmF0ZS5jb25mOgoKICAgdXNlIGZvciBpbnN0ZWFkIG9mIGNvbnRpbnVlIGZvciBsb29wcy4KICAgCjIwMDItMDItMjAgMTM6NDIgIGhhcmRha2VyCgogICAqIFJFQURNRS5zbm1wdjMgLCBhZ2VudC9hZ2VudF9yZWFkX2NvbmZpZy5jICwKICAgYWdlbnQvc25tcGQuYyAsIGFwcHMvc25tcHRyYXBkLmMgLAogICBpbmNsdWRlL25ldC1zbm1wL2FnZW50L2RzX2FnZW50Lmg6CgogICAtIEFkZCBhIC0tcXVpdCBvcHRpb24gKGFuZCBhIGNvbmZpZ3VyYXRpb24gdG9rZW4pIHNvIHRoYXQgeW91IGNhbiBub3cKICAgICBjcmVhdGUgbmV3IHVzZXJzIGJ5IHNpbXBseSBjYWxsaW5nIHNubXBkIGFzOgogICAgICAgc25tcGQgLS1jcmVhdGVVc2VyPSJteXVzZXIgTUQ1IG15cGFzc3dvcmQiIC0tcXVpdAogICAtIENoYW5nZSBSRUFETUUuc25tcHYzIGRvY3VtZW50YXRpb24gdG8gbWFrZSB1c2Ugb2YgdGhpcyBmZWF0dXJlLgogICAKMjAwMi0wMi0yMCAwNjoxNiAgamJwbgoKICAgKiBhcHBzL01ha2VmaWxlLmluICwgYXBwcy9zbm1wdHJhcGQuYyAsIGNvbmZpZ3VyZQogICAsIGNvbmZpZ3VyZS5pbiAsIGFnZW50L3NubXBfYWdlbnQuYzoKCiAgICAgLSBhZGQgbGlid3JhcCBzdXBwb3J0IHRvIHNubXB0cmFwZCAodW50ZXN0ZWQpCiAgIAogICAgIC0gbWlub3IgY2hhbmdlcyB0byBzbm1wZCBsaWJ3cmFwIHN1cHBvcnQKICAgCiAgICAgLSBjb25maWd1cmUgZml4ZXMgZm9yIGxpYndyYXAKICAgCjIwMDItMDItMjAgMDM6MDcgIGpicG4KCiAgICogYXBwcy9zbm1wdHJhcGRfbG9nLmM6CgogICAgIC0gdXNlIGNhbGxvYyBpbnN0ZWFkIG9mIG1hbGxvYyB0byBtYWtlIHN1cmUgYnVmZmVyIGlzIGluaXRpYWxseQogICAgICAgemVyby10ZXJtaW5hdGVkIChpbiBjYXNlIG9mIDAgdmFyYmluZHMpLiAgQnVnICM1MTg3MDAsIG5vdGVkIGJ5CiAgICAgICBBbmRyZWFzIEhhcnRtYW5uLgogICAKMjAwMi0wMi0yMCAwMzowNiAgamJwbgoKICAgKiBhcHBzL3NubXBkZWx0YS5jOgoKICAgICAtIGluaXRpYWxpc2Ugc29tZSBidWZmZXJzLCB0byBhdm9pZCBnYXJiYWdlIHByaW50aW5nIHByb2JsZW1zLCBhcwogICAgICAgbm90ZWQgYnkgQW5vbnltb3VzIGluIGJ1ZyAjNTIwMjIwLgogICAKMjAwMi0wMi0yMCAwMzowMyAgZHRzMTIKCiAgICogYXBwcy9NYWtlZmlsZS5pbjoKCiAgIENsZWFuIHVwIHRoZSBvYmplY3QgZmlsZXMgYXMgd2VsbAogICAKMjAwMi0wMi0yMCAwMTo0MSAgZHRzMTIKCiAgICogbWFuLy5jdnNpZ25vcmU6CgogICBJZ25vcmUgdGhlIG5ldyBjcm9wIG9mIGdlbmVyYXRlZCBtYW4gcGFnZXMuCiAgIAoyMDAyLTAyLTIwIDAxOjM3ICBkdHMxMgoKICAgKiBtaWJzL05FVC1TTk1QLUFHRU5ULU1JQi50eHQ6CgogICBTdXBwbHkgbWlzc2luZyBkb3VibGUtcXVvdGUgIChvb3BzKQogICAKMjAwMi0wMi0xOSAwNDowMSAgZHRzMTIKCiAgICogYXBwcy9zbm1wdHJhbnNsYXRlLmM6CgogICBJbml0aWFsaXNlIHRoZSBsaWJyYXJ5IGludGVybmFscyAqYmVmb3JlKiBwYXJzaW5nIHRoZSBjb21tYW5kIGxpbmUsCiAgIHNvIHRoYXQgZGVmYXVsdHMgY2FuIGJlIG92ZXJyaWRkZW4gYnkgY29tbWFuZCBsaW5lIG9wdGlvbnMuCiAgICAgUW46ICBTaG91bGQgJ19pbml0X3NubXAnIGJlIGludm9rZWQgYnkgJ3NubXBfcGFyc2VfYXJncycgaXRzZWxmPwogICAKMjAwMi0wMi0xOSAwMzo1OSAgZHRzMTIKCiAgICogc25tcGxpYi9taWIuYzoKCiAgIE1ha2Ugc3VyZSB0aGF0IG11bHRpcGxlIG91dHB1dCBmb3JtYXQgZmxhZ3Mgd29yayBpbiBhIGNvbnNpc3RlbnQgbWFubmVyLgogICAoaS5lLiB0aGUgbGFzdCBvbmUgaXMgdXNlZCwgcmF0aGVyIHRoYW4gcmVseWluZyBvbiBpbnRlcm5hbCBvcmRlcmluZykuCiAgIAoyMDAyLTAyLTE4IDIxOjU4ICBoYXJkYWtlcgoKICAgKiBhZ2VudC9taWJncm91cC86IHRlc3RkZWxheWVkLmMgLCB0ZXN0aGFuZGxlci5jOgoKICAgaW5jbHVkZSBzdGRsaWIuaAogICAKMjAwMi0wMi0xOCAyMTo1MiAgaGFyZGFrZXIKCiAgICogYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9kaXNrLmM6CgogICBmaXggaW5jbHVkZXMKICAgCjIwMDItMDItMTggMjE6NTEgIGhhcmRha2VyCgogICAqIGFnZW50L2hlbHBlcnMvdGFibGVfaXRlcmF0b3IuYyAsCiAgIGluY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfaXRlcmF0b3IuaDoKCiAgIC0gbWFrZSBjYXBhYmlsaXR5IHRvIGNyZWF0ZSBkYXRhIGNvbnRleHRzIGZyb20gYSBsb29wIGNvbnRleHQgKGxlc3MKICAgICBtYWxsb2NzIHdoZW4gbWFsbG9jcyBhcmVuJ3Qgb3RoZXJ3aXNlIGF2b2lkYWJsZSkuCiAgIC0gZG9uJ3QgZG91YmxlIGZyZWUgdGhlIGRhdGEgY29udGV4dCBwb2ludGVyLgogICAKMjAwMi0wMi0xOCAyMTo1MCAgaGFyZGFrZXIKCiAgICogaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oOgoKICAgaW5jbHVkZSBhbGwgYWdlbnQgaGVscGVycy4KICAgCjIwMDItMDItMTggMjE6NDkgIGhhcmRha2VyCgogICAqIGluY2x1ZGUvbmV0LXNubXAvYWdlbnQvbXVsdGlwbGV4ZXIuaDoKCiAgIHByb3RlY3QgaW5jbHVkZSBmcm9tIGRvdWJsZSBpbmNsdWRlCiAgIAoyMDAyLTAyLTE4IDA4OjM4ICBoYXJkYWtlcgoKICAgKiBhZ2VudC9taWJncm91cC9taWJpbmNsLmg6CgogICBmaXggaW5jbHVkZSBwYXRocwogICAKMjAwMi0wMi0xOCAwMjozNSAgZHRzMTIKCiAgICogYWdlbnQvTWFrZWZpbGUuaW4gLCBzbm1wbGliL01ha2VmaWxlLmluOgoKICAgVHdlYWsgdGhlIGxpc3Qgb2YgaGVhZGVyIGZpbGVzIHRvIGJlIGluc3RhbGxlZCAodGhhbmtzIHRvIENocmlzdG9waCBNYW1taXR6c2NoKQogICAKMjAwMi0wMi0xOCAwMjoyOSAgZHRzMTIKCiAgICogYWdlbnQvbWliZ3JvdXAvaG9zdC86IGhyX3N0b3JhZ2UuYyAoVjQtMi1wYXRjaGVzLjcpLCBocl9zdG9yYWdlLmM6CgogICBSZW1vdmUgYSBjb3VwbGUgb2YgdW5oZWxwZnVsIE9TRiBkZWZpbml0aW9ucyAodGhhbmtzIHRvIEplcm9lbiBSdWlncm9rKQogICAKMjAwMi0wMi0xOCAwMDoxMyAgaGFyZGFrZXIKCiAgICogc25tcGxpYi86IGFzbjEuYyAoVjQtMi1wYXRjaGVzLjMpLCBhc24xLmM6CgogICBkb24ndCBidWlsZCBvaWQncyB3aXRoID4xMjggbGVuZ3RoIHN1Ymlkcy4gIChzZWUgYnVnICM1MTg4NTUpCiAgIAoyMDAyLTAyLTE2IDIzOjE4ICBoYXJkYWtlcgoKICAgKiBtaWJzLzogTkVULVNOTVAtTUlCLnR4dCAsIE5FVC1TTk1QLU1PTklUT1ItTUlCLnR4dCAsCiAgIE5FVC1TTk1QLVNZU1RFTS1NSUIudHh0ICwgTkVULVNOTVAtVEMudHh0OgoKICAgd2hpdGUgc3BhY2UgY2xlYW4gdXAuICAoQUdFTlQtTUlCIG5vdCBjaGVja2VkIGluIGR1ZSB0byBvdGhlcgogICBpbmNvbXBsZXRlIGNoYW5nZXMpLgogICAKMjAwMi0wMi0xNiAwMDoxNyAgaGFyZGFrZXIKCiAgICogTkVXUyAsIGFnZW50L3NubXBkLmMgLCBhcHBzL3NubXB0cmFwZC5jICwKICAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaCAsCiAgIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oICwgc25tcGxpYi9yZWFkX2NvbmZpZy5jCiAgICwgc25tcGxpYi9zbm1wX3BhcnNlX2FyZ3MuYzoKCiAgIC0gZmluaXNoIGltcGxlbWVudGluZyBzbm1wX2NvbmZpZygibXkgY29uZmlnIGxpbmUiKQogICAgIC0gd2FzIGRvbmUgYmVmb3JlLCBidXQgcHJldmlvdXNseSBoYWQgdG8gYmUgY2FsbGVkIG9ubHkgYWZ0ZXIKICAgICAgIGNvbmZpZ3VyYXRpb24gZmlsZXMgaGFkIGJlZW4gcmVhZC4gIE5vdyBjYW4gYmUgY2FsbGVkIGF0IGFueSB0aW1lLgogICAtIG1ha2UgYWxsIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhdmFpbGFibGUgYXMgLS1sb25nb3B0cyBjb21tYW5kIGxpbmUgb3B0aW9ucy4KICAgICAtIC0tc29tZXRoaW5nPXZhbHVlIC0+ICJzb21ldGhpbmcgdmFsdWUiCiAgICAgLSAtLXNvbWV0aGluZyAgICAgICAtPiAic29tZXRoaW5nIDEiICh3b3JrcyBmb3Igc2V0dGluZyBib29sZWFucyB0byB0cnVlKQogICAKMjAwMi0wMi0xNiAwMDowMiAgaGFyZGFrZXIKCiAgICogYWdlbnQvTWFrZWZpbGUuaW46CgogICBpbnN0YWxsIG1pYl9tb2R1bGVfY29uZmlnLmgKICAgCjIwMDItMDItMTYgMDA6MDEgIGhhcmRha2VyCgogICAqIGNvbmZpZ3VyZSAsIGNvbmZpZ3VyZS5pbjoKCiAgIGZpeCBycG0gZm9yIDQuMC4zIGFuZCBhYm92ZSAob3Igd2hlbmV2ZXIgaXQgd2FzIHRoYXQgd2Ugbm93IG5lZWQgbGlicnBtZGIpCiAgIAoyMDAyLTAyLTE2IDAwOjAxICBoYXJkYWtlcgoKICAgKiBNYWtlZmlsZS5pbiAsIE1ha2VmaWxlLnJ1bGVzOgoKICAgZml4IG5ldC1zbm1wLWNvbmZpZyBpbnN0YWxsL2NsZWFuL2V0Yy4KICAgCjIwMDItMDItMTUgMjI6MzQgIGhhcmRha2VyCgogICAqIE1ha2VmaWxlLmluICwgTWFrZWZpbGUucnVsZXM6CgogICBpbnN0YWxsIGFsbCBzeXN0ZW0gYW5kIG1hY2hpbmUgZmlsZXMsIHNpbmNlIHRoZXkgaW5jbHVkZSBlYWNoIG90aGVyCiAgIAoyMDAyLTAyLTE1IDA5OjI4ICBkdHMxMgoKICAgKiBhZ2VudC9taWJncm91cC9hZ2VudC9uc1RyYW5zYWN0aW9uVGFibGUuYyAsCiAgIG1pYnMvTkVULVNOTVAtQUdFTlQtTUlCLnR4dCAsIG1pYnMvTkVULVNOTVAtTUlCLnR4dCAsCiAgIG1pYnMvTkVULVNOTVAtTU9OSVRPUi1NSUIudHh0ICwgbWlicy9ORVQtU05NUC1TWVNURU0tTUlCLnR4dAogICAsIG1pYnMvTkVULVNOTVAtVEMudHh0OgoKICAgU2tlbGV0b24gZnJhbWV3b3JrIGZvciB0aGUgTmV0LVNOTVAgZW50ZXJwcmlzZSB0cmVlLgogICAoaW5jb3Jwb3JhdGluZyB0aGUgaW5pdGlhbCAnbnNUcmFuc2FjdGlvblRhYmxlJywgYnV0IG5vdGhpbmcgZWxzZSBhcyB5ZXQpCiAgIAoyMDAyLTAyLTE1IDA5OjEwICBkdHMxMgoKICAgKiBhcHBzL3NubXB0YWJsZS5jICwgYXBwcy9zbm1wdHJhbnNsYXRlLmMgLAogICBzbm1wbGliL3NubXBfcGFyc2VfYXJncy5jOgoKICAgUmVtb3ZlIHN1cHBvcnQgZm9yIGRlcHJlY2F0ZWQgY29tbWFuZC1saW5lIG9wdGlvbnMuCiAgIAoyMDAyLTAyLTE1IDA3OjI4ICBkdHMxMgoKICAgKiBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvd2luc2VydmljZS5oICwgc25tcGxpYi93aW5zZXJ2aWNlLmMKICAgLCBhZ2VudC9zbm1wZC5jICwgc25tcGxpYi9NYWtlZmlsZS5pbiAsCiAgIHNubXBsaWIvd2luc2VydmljZS5yYyAsIHdpbjMyL3NubXBkL3NubXBkLmRzcDoKCiAgIFN1cHBvcnQgZm9yIHJ1bm5pbmcgYXMgYSBXaW5kb3dzIHNlcnZpY2UuCiAgIChTdXBwbGllZCBieSBSYWp1IEtyaXNobmFwcGEgJiBMYXRodSBQcmFiaHUpCiAgIAoyMDAyLTAyLTE1IDA3OjI1ICBkdHMxMgoKICAgKiBpbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg6CgogICBTdG9rZSBXZXMnIHNlbnNlIG9mIHBhcmFub2lhIGJ5IGNvbmNlZGluZyB3aXRob3V0IGNvbW1lbnQuCiAgICAgICAoV2hhdCBtaWdodCBTaGllbGQgYmUgcGxvdHRpbmcgbm93Li4uLi4uKQogICAKMjAwMi0wMi0xNSAwNzoxOSAgamJwbgoKICAgKiBtYW4vc25tcHVzbS4xLmRlZjoKCiAgICAgLSBmaXggdGlueSBmb3JtYXR0aW5nIGVycm9yCiAgIAoyMDAyLTAyLTE1IDA3OjE3ICBkdHMxMgoKICAgKiBtaWJzL01ha2VmaWxlLmluOgoKICAgSW5zdGFsbCBOT1RJRklDQVRJT04tTE9HLU1JQiAoc2luY2UgaXQncyBvbmUgb2YgdGhlIGRlZmF1bHQgbG9hZCBsaXN0ISkKICAgCjIwMDItMDItMTUgMDY6NDcgIGR0czEyCgogICAqIHNubXBsaWIvd2luc2VydmljZS5oOgoKICAgZmlsZSB3aW5zZXJ2aWNlLmggd2FzIGluaXRpYWxseSBhZGRlZCBvbiBicmFuY2ggVjQtMi1wYXRjaGVzLgogICAKMjAwMi0wMi0xNSAwNjo0NyAgZHRzMTIKCiAgICogc25tcGxpYi93aW5zZXJ2aWNlLnJjOgoKICAgZmlsZSB3aW5zZXJ2aWNlLnJjIHdhcyBpbml0aWFsbHkgYWRkZWQgb24gYnJhbmNoIFY0LTItcGF0Y2hlcy4KICAgCjIwMDItMDItMTUgMDY6NDcgIGR0czEyCgogICAqIHNubXBsaWIvd2luc2VydmljZS5jOgoKICAgZmlsZSB3aW5zZXJ2aWNlLmMgd2FzIGluaXRpYWxseSBhZGRlZCBvbiBicmFuY2ggVjQtMi1wYXRjaGVzLgogICAKMjAwMi0wMi0xNSAwNjowOCAgZHRzMTIKCiAgICogaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oOgoKICAgSW5jbHVkZSB0aGUgPHN5cy90aW1lLmg+IGNhc2NhZGUsIHRvIHBpY2sgdXAgdGhlIGRlZmluaXRpb24gb2YgJ3RpbWV2YWwnCiAgIAoyMDAyLTAyLTE1IDA0OjI5ICBqYnBuCgogICAqIGFnZW50L3NubXBkLmM6CgogICAgIC0gbWlub3IgY2hhbmdlIHRvIGJyaW5nIHVzYWdlIG1lc3NhZ2UgaW4gbGluZSB3aXRoIG1hbnBhZ2UKICAgCjIwMDItMDItMTUgMDM6MjkgIGR0czEyCgogICAqIHNubXBsaWIvc25tcF9wYXJzZV9hcmdzLmM6CgogICBDYXRjaCB1c2Ugb2YgdGhlIHRyYW5zcG9ydCBhbmQgcG9ydCBvcHRpb25zLCBhbmQgaXNzdWUgYW4gYXBwcm9wcmlhdGUKICAgZXJyb3IgbWVzc2FnZSwgZGVzY3JpYmluZyB1c2Ugb2YgdGhlIDxob3N0bmFtZT4gcGFyYW1ldGVyIGluc3RlYWQuCiAgIAoyMDAyLTAyLTE1IDAzOjExICBkdHMxMgoKICAgKiBzbm1wbGliLzogbWliLmMgLCBzbm1wX2FwaS5jOgoKICAgU2V0IHRoZSBkZWZhdWx0IG91dHB1dCBmb3JtYXQgKmJlZm9yZSogcHJvY2Vzc2luZyBjb21tYW5kIGxpbmUgb3B0aW9ucywKICAgcmF0aGVyIHRoYW4gYWZ0ZXIuICBUaGF0J3MgcHJvYmFibHkgYSBiaXQgbW9yZSBmbGV4aWJsZTotKQogICAKMjAwMi0wMi0xNSAwMjozNyAgZHRzMTIKCiAgICogaW5jbHVkZS9uZXQtc25tcC86IGNvbmZpZ19hcGkuaCAsIGRlZmluaXRpb25zLmggLAogICBtaWJfYXBpLmggLCBvdXRwdXRfYXBpLmggLCBwZHVfYXBpLmggLCBzZXNzaW9uX2FwaS5oCiAgICwgc25tcHYzX2FwaS5oICwgdHlwZXMuaCAsIHV0aWxpdGllcy5oICwKICAgdmFyYmluZF9hcGkuaDoKCiAgIFJlbW92ZSAnbmV0LXNubXAtY29uZmlnLmgnIGZyb20gdGhlIG1haW4gQVBJIGhlYWRlciBmaWxlcy4KICAgVGhpcyB3aWxsIGhhdmUgdG8gYmUgI2luY2x1ZGVkIHNlcGFyYXRlbHkgKGVpdGhlciBleHBsaWNpdGx5CiAgIG9yIHZpYSB0aGUgYWxsLWluLW9uZSAnbmV0LXNubXAtaW5jbHVkZXMuaCcgaGVhZGVyKQogICAKMjAwMi0wMi0xNSAwMjozMSAgZHRzMTIKCiAgICogc25tcGxpYi9NYWtlZmlsZS5pbjoKCiAgIEluc3RhbGwgdGhlIFJFQURNRSB0byBkZXNjcmliZSB0aGUgc3RhdHVzIG9mIDxuZXQtc25tcC9saWJyYXJ5PiBhbmQgPG5ldC1zbm1wPiBoZWFkZXIgZmlsZXMuCiAgIAoyMDAyLTAyLTE1IDAyOjEzICBkdHMxMgoKICAgKiBtYW4vTWFrZWZpbGUuaW4gLCBtaWJzL01ha2VmaWxlLmluOgoKICAgSW5zdGFsbCB0aGUge3N5c3RlbSxtYWNoaW5lfS8qLmggaGVhZGVyIGZpbGVzIGFzIHdlbGwuCiAgIAogICBEb2luZyB0aGlzIHZpYSB0aGUgJ21hbicgJiAnbWlicycgTWFrZWZpbGVzIGlzIGEgZ3Jvc3MgaGFjaywKICAgYW5kIHJlYWxseSBuZWVkcyB0byBiZSBoYW5kbGVkIG1vcmUgY2xlYW5seS4gIEJ1dCBpdCdzIHRoZQogICBiZXN0IEkgY2FuIGNvbWUgdXAgd2l0aCBhdCB0aGUgbW9tZW50LiAgU29ycnkgLSBEYXZlLgogICAKMjAwMi0wMi0xNSAwMTo1OSAgZHRzMTIKCiAgICogc25tcGxpYi9NYWtlZmlsZS5pbiAsIGFnZW50L01ha2VmaWxlLmluOgoKICAgSW5zdGFsbCB0aGUgVUNELWNvbXBhdGFiaWxpdHkgaGVhZGVycyBhcyB3ZWxsLgogICAKMjAwMi0wMi0xNSAwMTo1NyAgZHRzMTIKCiAgICogTWFrZWZpbGUucnVsZXM6CgogICBPbmx5IGluc3RhbGwgc3ViZGlyZWN0b3J5IHN0dWZmICpvbmNlKi4gIChEb24ndCBiZSBzbyBlbnRodXNpYXN0aWMsIERhdmUhKQogICAKMjAwMi0wMi0xNSAwMTozMSAgZHRzMTIKCiAgICogUkVBRE1FLnNubXB2MzoKCiAgIFJlbW92ZSByZWR1bmRlbnQgJy1DTicgYW5kICctQ08nIG9wdGlvbnMgZnJvbSB0aGUgZXhhbXBsZSBzbm1wdXNtIGNvbW1hbmQuCiAgICAgKGFzIG1lbnRpb25lZCBieSBXZXMgb24gdGhlIHVzZXJzIG1haWxpbmcgbGlzdCAyMDAyLTAyLTEzKQogICAgIFFuOiBEb2VzIHRoaXMgbmVlZCB0byBiZSBkb25lIG9uIHRoZSBWNC0yLXBhdGNoZXMgYnJhbmNoIGFzIHdlbGw/CiAgIAoyMDAyLTAyLTE1IDAxOjE1ICBkdHMxMgoKICAgKiBpbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oICwgaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKICAgLCBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdmVyc2lvbi5oICwKICAgaW5jbHVkZS91Y2Qtc25tcC92ZXJzaW9uLmggLCBzbm1wbGliL3NubXBfcGFyc2VfYXJncy5jICwKICAgc25tcGxpYi9zbm1wX3ZlcnNpb24uYzoKCiAgIFJlc3RvcmUgJ3ZlcnNpb24uaCcgYXMgYmVpbmcgYSAidG9wLWxldmVsIiBoZWFkZXIgZmlsZS4KICAgCjIwMDItMDItMTUgMDE6MTMgIGR0czEyCgogICAqIHNubXBsaWIvTWFrZWZpbGUuaW46CgogICBJbnN0YWxsIHRoZSBmdWxsIHNldCBvZiBsaWJyYXJ5IGhlYWRlciBmaWxlcywKICAgcmV0YWluaW5nIHRoZSB0b3AtbGV2ZWwgdnMgbGlicmFyeSBzdWJkaXJlY3Rvcnkgc3BsaXQuCiAgIAoyMDAyLTAyLTE1IDAxOjEwICBkdHMxMgoKICAgKiBjb25maWd1cmUgLCBjb25maWd1cmUuaW46CgogICBMb29rIGZvciB0cmFuc3BvcnQtcmVsYXRlZCBoZWFkZXIgZmlsZXMgaW4gdGhlIGNvcnJlY3QgbG9jYXRpb24uCiAgIAoyMDAyLTAyLTE1IDAxOjA5ICBkdHMxMgoKICAgKiBNYWtlZmlsZS5ydWxlczoKCiAgIEVuc3VyZSBwYXJ0aWFsIGluc3RhbGwgdGFyZ2V0cyByZWN1cnNlIHByb3Blcmx5LgogICAKMjAwMi0wMi0xNCAwODoxOCAgZHRzMTIKCiAgICogdGVzdGluZy9ldmFsX3Rvb2xzLnNoOgoKICAgTG9vayBmb3IgbWliX21vZHVsZV9jb25maWcuaCBpbiB0aGUgY29ycmVjdCBsb2NhdGlvbgogICAKMjAwMi0wMi0xNCAwODowNiAgaGFyZGFrZXIKCiAgICogbWFuL01ha2VmaWxlLmluOgoKICAgZml4IG1hbjggaW5zdGFsbCBkZWZpbml0aW9ucwogICAKMjAwMi0wMi0xNCAwNzo0OCAgZHRzMTIKCiAgICogTWFrZWZpbGUucnVsZXMgLCBuZXQtc25tcC1jb25maWcuaW46CgogICBTdWJzdGl0dXRlIHZhbHVlcyBpbnRvICduZXQtc25tcC1jb25maWcnIHByb3Blcmx5LCBhbmQgZG9uJ3QgJ21ha2UgY2xlYW4nIGl0IGF3YXkuCiAgIAoyMDAyLTAyLTE0IDA3OjIyICBkdHMxMgoKICAgKiBtYW4vTWFrZWZpbGUuaW46CgogICBUaWR5IHVwIGFmdGVyIG1vdmluZyB0aGUgbGlicmFyeSBoZWFkZXIgZmlsZXMKICAgCjIwMDItMDItMTQgMDc6MTQgIGR0czEyCgogICAqIGNvbmZpZ3VyZSAsIGNvbmZpZ3VyZS5pbjoKCiAgIFRpZHkgdXAgYWZ0ZXIgbW92aW5nIHRoZSBsaWJyYXJ5IGhlYWRlciBmaWxlcyAoaW5jbHVkaW5nIE1ha2VmaWxlIGRlcGVuZGVuY2llcykKICAgCjIwMDItMDItMTQgMDc6MTAgIGR0czEyCgogICAqIGluY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfcmVnaXN0cnkuaCAsCiAgIHNubXBsaWIvTWFrZWZpbGUuZGVwZW5kICwgc25tcGxpYi9kZWZhdWx0X3N0b3JlLmMgLAogICBzbm1wbGliL3JlYWRfY29uZmlnLmMgLCBzbm1wbGliL3NubXBfZGVidWcuYyAsCiAgIHNubXBsaWIvc25tcF9sb2dnaW5nLmMgLCBzbm1wbGliL3NubXBfcGFyc2VfYXJncy5jICwKICAgc25tcGxpYi9zeXN0ZW0uYyAsIHNubXBsaWIvdG9vbHMuYyAsCiAgIGFnZW50L01ha2VmaWxlLmRlcGVuZCAsIGFwcHMvTWFrZWZpbGUuZGVwZW5kICwKICAgYXBwcy9zbm1wYnVsa2dldC5jICwgYXBwcy9zbm1wZ2V0LmMgLCBhcHBzL3NubXBzdGF0dXMuYwogICAsIGFwcHMvc25tcHRyYW5zbGF0ZS5jICwKICAgYXBwcy9zbm1wbmV0c3RhdC9NYWtlZmlsZS5kZXBlbmQgLCBhcHBzL3NubXBuZXRzdGF0L21haW4uYwogICAsIGluY2x1ZGUvbmV0LXNubXAvYWdlbnQvc25tcF9hZ2VudC5oICwKICAgaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zbm1wX3ZhcnMuaCAsCiAgIGluY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfYXJyYXkuaCAsCiAgIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaCAsCiAgIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfYXJyYXkuaCAsCiAgIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQUFMNVBWQ0RvbWFpbi5oICwKICAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oICwKICAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaCAsCiAgIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmggLAogICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaCAsCiAgIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmggLAogICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaCAsCiAgIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oICwKICAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmggLCBhZ2VudC9hZ2VudF90cmFwLmMKICAgLCBhZ2VudC9oZWxwZXJzL01ha2VmaWxlLmRlcGVuZCAsCiAgIGFnZW50L21pYmdyb3VwL01ha2VmaWxlLmRlcGVuZCAsIGFnZW50L21pYmdyb3VwL2hvc3RfcmVzLmgKICAgLCBhZ2VudC9taWJncm91cC9taWJJSS92YWNtX3ZhcnMuaCAsCiAgIGFnZW50L21pYmdyb3VwL3NubXB2My91c21Vc2VyLmg6CgogICBUaWR5IHVwIGFmdGVyIG1vdmluZyB0aGUgbGlicmFyeSBoZWFkZXIgZmlsZXMgKGluY2x1ZGluZyBNYWtlZmlsZSBkZXBlbmRlbmNpZXMpCiAgIAoyMDAyLTAyLTE0IDA3OjA4ICBkdHMxMgoKICAgKiBhZ2VudC9oZWxwZXJzL01ha2VmaWxlLmluOgoKICAgUmVtb3ZlIGFuIGV4dHJhbmVvdXMgc3BhY2UgZnJvbSBDUFBGTEFHUwogICAKMjAwMi0wMi0xNCAwNjoyMyAgZHRzMTIKCiAgICogaW5jbHVkZS9uZXQtc25tcC86IGNvbmZpZ19hcGkuaCAsIGRlZmluaXRpb25zLmggLAogICBtaWJfYXBpLmggLCBuZXQtc25tcC1pbmNsdWRlcy5oICwgb3V0cHV0X2FwaS5oICwKICAgcGR1X2FwaS5oICwgc2Vzc2lvbl9hcGkuaCAsIHNubXB2M19hcGkuaCAsIHR5cGVzLmgKICAgLCB1dGlsaXRpZXMuaCAsIHZhcmJpbmRfYXBpLmg6CgogICBTZXBhcmF0ZSBvdXQgdG9wLWxldmVsICJwdWJsaWMgQVBJIiBsaWJyYXJ5IGhlYWRlciBmaWxlcyBmcm9tIHRoZSAiaW50ZXJuYWwiCiAgIGxpYnJhcnkgaGVhZGVyIGZpbGVzLiAgVGhlc2UgYXJlIHN0aWxsIGF2YWlsYWJsZSBmb3IgdXNlIGJ5IGFwcGxpY2F0aW9uCiAgIGRldmVsb3BlcnMsIGJ1dCB0aGlzIHNwbGl0IG1ha2VzIGl0IGNsZWFyZXIgd2hhdCBtYXkgY2hhbmdlIGluIHRoZSBmdXR1cmUKICAgYW5kIHdoYXQgY2FuIGJlIHJlbGllZCB1cG9uIHRvIGJlIHN0YWJsZS4KICAgCjIwMDItMDItMTQgMDY6MTkgIGR0czEyCgogICAqIGluY2x1ZGUvbmV0LXNubXAvYXNuMS5oICwgaW5jbHVkZS9uZXQtc25tcC9jYWxsYmFjay5oICwKICAgaW5jbHVkZS9uZXQtc25tcC9jbXVfY29tcGF0LmggLCBpbmNsdWRlL25ldC1zbm1wL2RhdGFfbGlzdC5oCiAgICwgaW5jbHVkZS9uZXQtc25tcC9kZWZhdWx0X3N0b3JlLmggLAogICBpbmNsdWRlL25ldC1zbm1wL2dldG9wdC5oICwgaW5jbHVkZS9uZXQtc25tcC9pbnQ2NC5oICwKICAgaW5jbHVkZS9uZXQtc25tcC9rZXl0b29scy5oICwgaW5jbHVkZS9uZXQtc25tcC9sY2RfdGltZS5oCiAgICwgaW5jbHVkZS9uZXQtc25tcC9saWJzbm1wLmggLCBpbmNsdWRlL25ldC1zbm1wL21kNS5oCiAgICwgaW5jbHVkZS9uZXQtc25tcC9taWIuaCAsIGluY2x1ZGUvbmV0LXNubXAvbXRfc3VwcG9ydC5oCiAgICwgaW5jbHVkZS9uZXQtc25tcC9vaWRfYXJyYXkuaCAsCiAgIGluY2x1ZGUvbmV0LXNubXAvb2lkX3N0YXNoLmggLCBpbmNsdWRlL25ldC1zbm1wL3BhcnNlLmggLAogICBpbmNsdWRlL25ldC1zbm1wL3JlYWRfY29uZmlnLmggLCBpbmNsdWRlL25ldC1zbm1wL3NjYXBpLmgKICAgLCBpbmNsdWRlL25ldC1zbm1wL3NubXAtdGMuaCAsIGluY2x1ZGUvbmV0LXNubXAvc25tcC5oCiAgICwgaW5jbHVkZS9uZXQtc25tcC9zbm1wQUFMNVBWQ0RvbWFpbi5oICwKICAgaW5jbHVkZS9uZXQtc25tcC9zbm1wQ2FsbGJhY2tEb21haW4uaCAsCiAgIGluY2x1ZGUvbmV0LXNubXAvc25tcElQWERvbWFpbi5oICwKICAgaW5jbHVkZS9uZXQtc25tcC9zbm1wVENQRG9tYWluLmggLAogICBpbmNsdWRlL25ldC1zbm1wL3NubXBUQ1BJUHY2RG9tYWluLmggLAogICBpbmNsdWRlL25ldC1zbm1wL3NubXBVRFBEb21haW4uaCAsCiAgIGluY2x1ZGUvbmV0LXNubXAvc25tcFVEUElQdjZEb21haW4uaCAsCiAgIGluY2x1ZGUvbmV0LXNubXAvc25tcFVuaXhEb21haW4uaCAsCiAgIGluY2x1ZGUvbmV0LXNubXAvc25tcF9hbGFybS5oICwgaW5jbHVkZS9uZXQtc25tcC9zbm1wX2FwaS5oCiAgICwgaW5jbHVkZS9uZXQtc25tcC9zbm1wX2NsaWVudC5oICwKICAgaW5jbHVkZS9uZXQtc25tcC9zbm1wX2RlYnVnLmggLCBpbmNsdWRlL25ldC1zbm1wL3NubXBfZW51bS5oCiAgICwgaW5jbHVkZS9uZXQtc25tcC9zbm1wX2ltcGwuaCAsCiAgIGluY2x1ZGUvbmV0LXNubXAvc25tcF9sb2NraW5nLmggLAogICBpbmNsdWRlL25ldC1zbm1wL3NubXBfbG9nZ2luZy5oICwKICAgaW5jbHVkZS9uZXQtc25tcC9zbm1wX3BhcnNlX2FyZ3MuaCAsCiAgIGluY2x1ZGUvbmV0LXNubXAvc25tcF9zZWNtb2QuaCAsCiAgIGluY2x1ZGUvbmV0LXNubXAvc25tcF90cmFuc3BvcnQuaCAsIGluY2x1ZGUvbmV0LXNubXAvc25tcGtzbS5oCiAgICwgaW5jbHVkZS9uZXQtc25tcC9zbm1wdXNtLmggLCBpbmNsdWRlL25ldC1zbm1wL3NubXB2My5oCiAgICwgaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0uaCAsIGluY2x1ZGUvbmV0LXNubXAvdG9vbHMuaAogICAsIGluY2x1ZGUvbmV0LXNubXAvdHJhbnNmb3JtX29pZHMuaCAsCiAgIGluY2x1ZGUvbmV0LXNubXAvdWNkX2NvbXBhdC5oICwgaW5jbHVkZS9uZXQtc25tcC92YWNtLmggLAogICBpbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaCAsIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9SRUFETUUKICAgLCBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oICwKICAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmggLAogICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY211X2NvbXBhdC5oICwKICAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oICwKICAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaCAsCiAgIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaCAsCiAgIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oICwKICAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2tleXRvb2xzLmggLAogICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaCAsCiAgIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9saWJzbm1wLmggLAogICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWQ1LmggLAogICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmggLAogICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oICwKICAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9hcnJheS5oICwKICAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oICwKICAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmggLAogICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaCAsCiAgIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zY2FwaS5oICwKICAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaCAsCiAgIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmggLAogICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcEFBTDVQVkNEb21haW4uaCAsCiAgIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaCAsCiAgIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmggLAogICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oICwKICAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmggLAogICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oICwKICAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmggLAogICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaCAsCiAgIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmggLAogICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaCAsCiAgIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oICwKICAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZGVidWcuaCAsCiAgIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2VudW0uaCAsCiAgIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaCAsCiAgIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvY2tpbmcuaCAsCiAgIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaCAsCiAgIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3BhcnNlX2FyZ3MuaCAsCiAgIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oICwKICAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmggLAogICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcGtzbS5oICwKICAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaCAsCiAgIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMuaCAsCiAgIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaCAsCiAgIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oICwKICAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3RyYW5zZm9ybV9vaWRzLmggLAogICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oICwKICAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3ZhY20uaCAsCiAgIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS92ZXJzaW9uLmggLCBpbmNsdWRlL3VjZC1zbm1wL2FzbjEuaAogICAsIGluY2x1ZGUvdWNkLXNubXAvY2FsbGJhY2suaCAsCiAgIGluY2x1ZGUvdWNkLXNubXAvZGVmYXVsdF9zdG9yZS5oICwgaW5jbHVkZS91Y2Qtc25tcC9pbnQ2NC5oCiAgICwgaW5jbHVkZS91Y2Qtc25tcC9rZXl0b29scy5oICwgaW5jbHVkZS91Y2Qtc25tcC9taWIuaAogICAsIGluY2x1ZGUvdWNkLXNubXAvbWliaW5jbC5oICwgaW5jbHVkZS91Y2Qtc25tcC9wYXJzZS5oCiAgICwgaW5jbHVkZS91Y2Qtc25tcC9yZWFkX2NvbmZpZy5oICwKICAgaW5jbHVkZS91Y2Qtc25tcC9zY2FwaS5oICwgaW5jbHVkZS91Y2Qtc25tcC9zbm1wLXRjLmggLAogICBpbmNsdWRlL3VjZC1zbm1wL3NubXAuaCAsIGluY2x1ZGUvdWNkLXNubXAvc25tcF9hbGFybS5oICwKICAgaW5jbHVkZS91Y2Qtc25tcC9zbm1wX2FwaS5oICwgaW5jbHVkZS91Y2Qtc25tcC9zbm1wX2NsaWVudC5oCiAgICwgaW5jbHVkZS91Y2Qtc25tcC9zbm1wX2RlYnVnLmggLAogICBpbmNsdWRlL3VjZC1zbm1wL3NubXBfaW1wbC5oICwgaW5jbHVkZS91Y2Qtc25tcC9zbm1wX2xvZ2dpbmcuaAogICAsIGluY2x1ZGUvdWNkLXNubXAvc25tcF9wYXJzZV9hcmdzLmggLAogICBpbmNsdWRlL3VjZC1zbm1wL3NubXBfdmFycy5oICwgaW5jbHVkZS91Y2Qtc25tcC9zbm1wdXNtLmgKICAgLCBpbmNsdWRlL3VjZC1zbm1wL3NubXB2My5oICwgaW5jbHVkZS91Y2Qtc25tcC9zeXN0ZW0uaAogICAsIGluY2x1ZGUvdWNkLXNubXAvdG9vbHMuaCAsCiAgIGluY2x1ZGUvdWNkLXNubXAvdHJhbnNmb3JtX29pZHMuaCAsIGluY2x1ZGUvdWNkLXNubXAvdmVyc2lvbi5oCiAgICwgc25tcGxpYi9hc24xLmMgLCBzbm1wbGliL2NhbGxiYWNrLmMgLAogICBzbm1wbGliL2RhdGFfbGlzdC5jICwgc25tcGxpYi9kZWZhdWx0X3N0b3JlLmMgLAogICBzbm1wbGliL2ludDY0LmMgLCBzbm1wbGliL2tleXRvb2xzLmMgLAogICBzbm1wbGliL2xjZF90aW1lLmMgLCBzbm1wbGliL21kNS5jICwgc25tcGxpYi9taWIuYwogICAsIHNubXBsaWIvbXRfc3VwcG9ydC5jICwgc25tcGxpYi9vaWRfYXJyYXkuYyAsCiAgIHNubXBsaWIvb2lkX3N0YXNoLmMgLCBzbm1wbGliL3BhcnNlLmMgLAogICBzbm1wbGliL3JlYWRfY29uZmlnLmMgLCBzbm1wbGliL3NjYXBpLmMgLAogICBzbm1wbGliL3NubXAtdGMuYyAsIHNubXBsaWIvc25tcC5jICwKICAgc25tcGxpYi9zbm1wQUFMNVBWQ0RvbWFpbi5jICwgc25tcGxpYi9zbm1wQ2FsbGJhY2tEb21haW4uYwogICAsIHNubXBsaWIvc25tcElQWERvbWFpbi5jICwgc25tcGxpYi9zbm1wVENQRG9tYWluLmMKICAgLCBzbm1wbGliL3NubXBUQ1BJUHY2RG9tYWluLmMgLCBzbm1wbGliL3NubXBVRFBEb21haW4uYwogICAsIHNubXBsaWIvc25tcFVEUElQdjZEb21haW4uYyAsCiAgIHNubXBsaWIvc25tcFVuaXhEb21haW4uYyAsIHNubXBsaWIvc25tcF9hbGFybS5jICwKICAgc25tcGxpYi9zbm1wX2FwaS5jICwgc25tcGxpYi9zbm1wX2F1dGguYyAsCiAgIHNubXBsaWIvc25tcF9jbGllbnQuYyAsIHNubXBsaWIvc25tcF9kZWJ1Zy5jICwKICAgc25tcGxpYi9zbm1wX2VudW0uYyAsIHNubXBsaWIvc25tcF9sb2dnaW5nLmMgLAogICBzbm1wbGliL3NubXBfcGFyc2VfYXJncy5jICwgc25tcGxpYi9zbm1wX3NlY21vZC5jICwKICAgc25tcGxpYi9zbm1wX3RyYW5zcG9ydC5jICwgc25tcGxpYi9zbm1wX3ZlcnNpb24uYyAsCiAgIHNubXBsaWIvc25tcGtzbS5jICwgc25tcGxpYi9zbm1wdXNtLmMgLCBzbm1wbGliL3NubXB2My5jCiAgICwgc25tcGxpYi9zeXN0ZW0uYyAsIHNubXBsaWIvdG9vbHMuYyAsCiAgIHNubXBsaWIvdmFjbS5jOgoKICAgU2VwYXJhdGUgb3V0IHRvcC1sZXZlbCAicHVibGljIEFQSSIgbGlicmFyeSBoZWFkZXIgZmlsZXMgZnJvbSB0aGUgImludGVybmFsIgogICBsaWJyYXJ5IGhlYWRlciBmaWxlcy4gIFRoZXNlIGFyZSBzdGlsbCBhdmFpbGFibGUgZm9yIHVzZSBieSBhcHBsaWNhdGlvbgogICBkZXZlbG9wZXJzLCBidXQgdGhpcyBzcGxpdCBtYWtlcyBpdCBjbGVhcmVyIHdoYXQgbWF5IGNoYW5nZSBpbiB0aGUgZnV0dXJlCiAgIGFuZCB3aGF0IGNhbiBiZSByZWxpZWQgdXBvbiB0byBiZSBzdGFibGUuCiAgIAoyMDAyLTAyLTE0IDA0OjQxICBkdHMxMgoKICAgKiBpbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmggLAogICBpbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLmluICwKICAgaW5jbHVkZS9uZXQtc25tcC9vdXRwdXRfYXBpLmggLCBpbmNsdWRlL25ldC1zbm1wL3NubXBfaW1wbC5oCiAgICwgaW5jbHVkZS9uZXQtc25tcC9zbm1wdjNfYXBpLmggLCBzbm1wbGliL2FzbjEuYyAsCiAgIHNubXBsaWIvY2FsbGJhY2suYyAsIHNubXBsaWIvZGVmYXVsdF9zdG9yZS5jICwKICAgc25tcGxpYi9pbnQ2NC5jICwgc25tcGxpYi9rZXl0b29scy5jICwKICAgc25tcGxpYi9sY2RfdGltZS5jICwgc25tcGxpYi9tZDUuYyAsIHNubXBsaWIvbWliLmMKICAgLCBzbm1wbGliL29pZF9zdGFzaC5jICwgc25tcGxpYi9wYXJzZS5jICwKICAgc25tcGxpYi9yZWFkX2NvbmZpZy5jICwgc25tcGxpYi9zY2FwaS5jICwKICAgc25tcGxpYi9zbm1wLXRjLmMgLCBzbm1wbGliL3NubXAuYyAsCiAgIHNubXBsaWIvc25tcEFBTDVQVkNEb21haW4uYyAsIHNubXBsaWIvc25tcENhbGxiYWNrRG9tYWluLmMKICAgLCBzbm1wbGliL3NubXBJUFhEb21haW4uYyAsIHNubXBsaWIvc25tcFRDUERvbWFpbi5jCiAgICwgc25tcGxpYi9zbm1wVENQSVB2NkRvbWFpbi5jICwgc25tcGxpYi9zbm1wVURQRG9tYWluLmMKICAgLCBzbm1wbGliL3NubXBVRFBJUHY2RG9tYWluLmMgLAogICBzbm1wbGliL3NubXBVbml4RG9tYWluLmMgLCBzbm1wbGliL3NubXBfYWxhcm0uYyAsCiAgIHNubXBsaWIvc25tcF9hcGkuYyAsIHNubXBsaWIvc25tcF9hdXRoLmMgLAogICBzbm1wbGliL3NubXBfY2xpZW50LmMgLCBzbm1wbGliL3NubXBfZGVidWcuYyAsCiAgIHNubXBsaWIvc25tcF9sb2dnaW5nLmMgLCBzbm1wbGliL3NubXBfcGFyc2VfYXJncy5jICwKICAgc25tcGxpYi9zbm1wX3NlY21vZC5jICwgc25tcGxpYi9zbm1wX3RyYW5zcG9ydC5jICwKICAgc25tcGxpYi9zbm1wa3NtLmMgLCBzbm1wbGliL3NubXB1c20uYyAsIHNubXBsaWIvc25tcHYzLmMKICAgLCBzbm1wbGliL3N5c3RlbS5jICwgc25tcGxpYi90b29scy5jICwKICAgc25tcGxpYi92YWNtLmM6CgogICBGaXJzdCBtb3ZlcyB0b3dhcmRzIHVzaW5nIHRoZSAicHVibGljIiBBUEkgaGVhZGVyIGZpbGVzIGluIHRoZSBsaWJyYXJ5CiAgIGNvZGUgYXMgd2VsbCAoY29uY2VudHJhdGluZyBvbiBvdXRwdXQvY29uZmlnL3V0aWxpdHkgaGVhZGVyIGZpbGVzKS4KICAgCjIwMDItMDItMTQgMDM6MTcgIGR0czEyCgogICAqIGNvbmZpZ3VyZSAsIGNvbmZpZ3VyZS5pbjoKCiAgIENsb3NlIGEgZGFuZ2xpbmcgImlmIiBibG9jay4gICAob29wcyEpCiAgIAoyMDAyLTAyLTE0IDAxOjQ3ICBkdHMxMgoKICAgKiBhcHBzL3NubXBuZXRzdGF0LzogaWYuYyAoVjQtMi1wYXRjaGVzLjQpLCBpZi5jOgoKICAgQ2hlY2sgZm9yIHJ1bm5pbmcgb2ZmIHRoZSBlbmQgb2YgSS9GIHRhYmxlIChwYXRjaCBmcm9tIFJlZEhhdCkKICAgCjIwMDItMDItMTQgMDE6NDMgIGR0czEyCgogICAqIGFnZW50L21pYmdyb3VwL2hvc3QvaHJfc3dpbnN0LmM6CgogICBMYXRlc3QgUmVkSGF0IHJwbS1yZWxhdGVkIHBhdGNoCiAgIAoyMDAyLTAyLTE0IDAxOjM5ICBkdHMxMgoKICAgKiBjb25maWd1cmUgLCBjb25maWd1cmUuaW46CgogICBBZG9wdCBSZWRIYXQncyBjb25maWd1cmUgdGVzdGluZyBmb3IgUlBNIGxpYnJhcmllcwogICAKMjAwMi0wMi0xMyAwODozOSAgaGFyZGFrZXIKCiAgICogcGVybC9TTk1QL1NOTVAueHM6CgogICBNYWtlIEpvaG4gdHJ1c3QgaGlzIGNvZGUKICAgCjIwMDItMDItMTMgMDg6MzQgIGpicG4KCiAgICogcGVybC9TTk1QL1NOTVAueHM6CgogICAgIC0gdHJhbnNwb3J0IGZpeGVzICh1bnRlc3RlZCwgc3RpbGwgI2lmIDApCiAgIAoyMDAyLTAyLTEzIDA4OjAzICBoYXJkYWtlcgoKICAgKiBwZXJsL1NOTVAvU05NUC54czoKCiAgIG1hcmsgc29tZSBKb2huLXRvLWRvLXNlY3Rpb25zCiAgIAoyMDAyLTAyLTEzIDA3OjU3ICBkdHMxMgoKICAgKiBpbmNsdWRlL25ldC1zbm1wL2RlZmF1bHRfc3RvcmUuaCAsIG1hbi9zbm1wY21kLjEuZGVmICwKICAgc25tcGxpYi9taWIuYzoKCiAgIFN3aXRjaCB0byB1c2luZyAtT1Mgc3R5bGUgb3V0cHV0IGJ5IGRlZmF1bHQsIGFuZCBkcm9wIHRoZSByZXF1aXJlbWVudAogICBmb3IgZnVsbCBPSURzIHRvIHN0YXJ0IHdpdGggJy4nLCBwbHVzIGNvbW1hbmQtbGluZSBvcHRpb25zIHRvIHJlc3RvcmUKICAgdGhlIG9yaWdpbmFsIFVDRC1zdHlsZSBiZWhhdmlvdXIuCiAgIAoyMDAyLTAyLTEzIDA3OjM2ICBkdHMxMgoKICAgKiBhcHBzL3NubXB0YWJsZS5jOgoKICAgQXBwbHkgSm9obidzIGZpeCBmb3IgYnVncyAjNDg5MzM2IGFuZCAjNTA4MTQ2IChkdXBsaWNhdGUgY29sdW1ucyBhbmQKICAgY29sdW1ucyBpbiB3cm9uZyBvcmRlcikgdG8gdGhlIG1haW4gYnJhbmNoIGFzIHdlbGwuCiAgIAoyMDAyLTAyLTEyIDE2OjQwICBoYXJkYWtlcgoKICAgKiBzbm1wbGliL3NubXBfY2xpZW50LmM6CgogICBjb25zdCBjaGFuZ2VzLgogICAKMjAwMi0wMi0xMiAxNjozOSAgaGFyZGFrZXIKCiAgICogcGVybC86IC5jdnNpZ25vcmUgLCBBU04vLmN2c2lnbm9yZSAsIGFnZW50Ly5jdnNpZ25vcmUKICAgLCBkZWZhdWx0X3N0b3JlLy5jdnNpZ25vcmU6CgogICBhZGQgLmN2c2lnbm9yZSBmaWxlLgogICAKMjAwMi0wMi0xMiAxNjozOCAgaGFyZGFrZXIKCiAgICogaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oOgoKICAgYWRkIGFnZW50L2FnZW50X2hhbmRsZXIuaAogICAKMjAwMi0wMi0xMiAxNjozOCAgaGFyZGFrZXIKCiAgICogaW5jbHVkZS9uZXQtc25tcC9zbm1wX2NsaWVudC5oOgoKICAgY29uc3QgYWRkaXRpb25zLgogICAKMjAwMi0wMi0xMiAxNjozNyAgaGFyZGFrZXIKCiAgICogaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oOgoKICAgQWRkIHN0cmluZy5oCiAgIAoyMDAyLTAyLTEyIDE2OjM3ICBoYXJkYWtlcgoKICAgKiBhZ2VudC9taWJncm91cC9ub3RpZmljYXRpb24vc25tcE5vdGlmeVRhYmxlLmM6CgogICBhZGQgaGVhZGVyLgogICAKMjAwMi0wMi0xMiAxNjozNyAgaGFyZGFrZXIKCiAgICogYWdlbnQvbWliZ3JvdXAvZGlzbWFuL210ZVRyaWdnZXJUYWJsZS5jOgoKICAgZml4ZXMgdG8gcmVlbmFibGUgZGlzbWFuIGV2ZW50IHN0dWZmIGZvciA1LjAgY29kZS4gIE5vdCBkb25lIHRoZQogICAicmlnaHQiIHdheSwgYnV0IGl0IHdvcmtzLgogICAKMjAwMi0wMi0xMiAxNjozNiAgaGFyZGFrZXIKCiAgICogYWdlbnQvaGVscGVycy9vbGRfYXBpLmM6CgogICAtIC1XYWxsIGZpeGVzCiAgIAoyMDAyLTAyLTEyIDE2OjM2ICBoYXJkYWtlcgoKICAgKiBhZ2VudC9oZWxwZXJzL2luc3RhbmNlLmM6CgogICAtIGFkZCBzdGRsaWIuaAogICAtIHJlbW92ZSB1bnVzZWQgdmFyaWFibGUuCiAgIAoyMDAyLTAyLTEyIDE2OjM1ICBoYXJkYWtlcgoKICAgKiBhZ2VudC9zbm1wX2FnZW50LmM6CgogICByZW1vdmUgbm8gbG9uZ2VyIHVzZWQgImR1bXBfdmFyIiByb3V0aW5lLgogICAKMjAwMi0wMi0xMiAxNjozNSAgaGFyZGFrZXIKCiAgICogYWdlbnQvYWdlbnRfaGFuZGxlci5jICwKICAgaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9oYW5kbGVyLmg6CgogICBjb25zdCBzcGVjaWZpYyBjaGFuZ2VzLgogICAKMjAwMi0wMi0xMiAxNjozNCAgaGFyZGFrZXIKCiAgICogTkVXUzoKCiAgIGFkZGVkIG5ldyBwZXJsIHNwZWNpZmljIGZlYXR1cmVzLgogICAKMjAwMi0wMi0xMiAxNjozNCAgaGFyZGFrZXIKCiAgICogTWFrZWZpbGUuaW46CgogICAuUEhOT1kgbW9kcwogICAKMjAwMi0wMi0xMiAwNzoyMiAgZHRzMTIKCiAgICogYWdlbnQvTWFrZWZpbGUuZGVwZW5kICwgYXBwcy9NYWtlZmlsZS5kZXBlbmQgLAogICBhcHBzL3NubXB0cmFuc2xhdGUuYyAsIGFwcHMvc25tcHRyYXBkX2hhbmRsZXJzLmMgLAogICBhcHBzL3NubXBuZXRzdGF0L01ha2VmaWxlLmRlcGVuZCAsCiAgIGluY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaCAsCiAgIGluY2x1ZGUvbmV0LXNubXAvbG9nZ2luZ19hcGkuaCAsIGluY2x1ZGUvbmV0LXNubXAvb3V0cHV0X2FwaS5oOgoKICAgUmVuYW1lIHRoZSBsb2dnaW5nICYgcmVsYXRlZCBvdXRwdXQgQVBJIGhlYWRlciBmaWxlLCB0byBiZXR0ZXIKICAgcmVmbGVjdCB0aGUgc2NvcGUgb2YgdGhpcyBBUEkuICAoQXMgc3VnZ2VzdGVkIGJ5IFdlcyAmIEpvaG4pCiAgIAoyMDAyLTAyLTEyIDA3OjIxICBqYnBuCgogICAqIGNvbmZpZ3VyZS5pbjoKCiAgICAgLSBhbWVuZCBmaXggdG8gYnVnICM1MTYzODkgKHVjZC1zbm1wIDQuMi4zIGxpYndyYXAgc3VwcG9ydCBicm9rZW4pIHRvCiAgICAgICBhY3R1YWxseSBhZGQgLWxuc2wgdG8gbGluayBwYXJhbWV0ZXJzIQogICAKMjAwMi0wMi0xMiAwNTozOSAgamJwbgoKICAgKiBjb25maWd1cmUuaW46CgogICAgIC0gZml4IGJ1ZyAjNTE2Mzg5ICh1Y2Qtc25tcCA0LjIuMyBsaWJ3cmFwIHN1cHBvcnQgYnJva2VuKSAtLSBVU0VfTElCV1JBUAogICAgICAgd2FzIG5vdCBiZWluZyAjZGVmaW5lZCBpbiB0aGUgY2FzZSB3aGVyZSAtbG5zbCBpcyBuZWVkZWQgaW4gYWRkaXRpb24KICAgICAgIHRvIC1sd3JhcC4KICAgCjIwMDItMDItMTEgMTU6NTYgIGhhcmRha2VyCgogICAqIGFnZW50L01ha2VmaWxlLmluOgoKICAgbGliIGRlcGVuZGVuY3kgZml4IGZvciBzbm1wZCB0YXJnZXQKICAgCjIwMDItMDItMTEgMDg6MjkgIGR0czEyCgogICAqIGluY2x1ZGUvbmV0LXNubXAvY211X2NvbXBhdC5oICwgaW5jbHVkZS9uZXQtc25tcC9taWIuaAogICAsIGluY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oICwKICAgaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oICwKICAgaW5jbHVkZS9uZXQtc25tcC9wYXJzZS5oICwgaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCiAgICwgaW5jbHVkZS9uZXQtc25tcC9zbm1wLmggLCBpbmNsdWRlL25ldC1zbm1wL3NubXBfYXBpLmgKICAgLCBpbmNsdWRlL25ldC1zbm1wL3NubXBfaW1wbC5oICwKICAgaW5jbHVkZS9uZXQtc25tcC91Y2RfY29tcGF0LmggLCBzbm1wbGliL2NtdV9jb21wYXQuYyAsCiAgIHNubXBsaWIvTWFrZWZpbGUuaW4gLCBzbm1wbGliL21pYi5jICwgc25tcGxpYi9wYXJzZS5jCiAgICwgc25tcGxpYi9zbm1wX2FwaS5jICwgc25tcGxpYi91Y2RfY29tcGF0LmM6CgogICBFeHRyYWN0IENNVV9DT01QQVRBQklMSVRZIGNvZGUsIGFuZCBleHBsaWNpdGx5IGRlcHJlY2F0ZWQgVUNEIGNvZGUgaW50byBzZXBhcmF0ZSBmaWxlcy4KICAgCjIwMDItMDItMTEgMDg6MjMgIGR0czEyCgogICAqIHNubXBsaWIvOiBzbm1wX3BhcnNlX2FyZ3MuYyAoVjQtMi1wYXRjaGVzLjIpLCBzbm1wX3BhcnNlX2FyZ3MuYzoKCiAgIFVzZSB0aGUgJ2RzX3NldF94eHgnIGxpYnJhcnkgcm91dGluZXMsIHJhdGhlciB0aGFuIHRoZSBvbGQgJ3NubXBfc2V0X3h4eCcgY2FsbHMKICAgCjIwMDItMDItMTEgMDQ6NDUgIGpicG4KCiAgICogbWFuLzogc25tcC5jb25mLjUuZGVmICwgc25tcF9jb25maWcuNS5kZWYgLAogICBzbm1wdHJhcGQuY29uZi41LmRlZjoKCiAgIG1pbm9yIHNwZWxsaW5nIHR3ZWFrcwogICAKMjAwMi0wMi0xMSAwNDoyNyAgamJwbgoKICAgKiBtYW4vOiBNYWtlZmlsZS5pbiAsIGRlZmF1bHRfc3RvcmUuMy50b3AgLCBtaWJfYXBpLjMKICAgLCBtaWJfYXBpLjMuZGVmICwgc25tcF9hZ2VudF9hcGkuMyAsCiAgIHNubXBfYWdlbnRfYXBpLjMuZGVmICwgc25tcF9hbGFybS4zICwgc25tcF9hbGFybS4zLmRlZgogICAsIHNubXBfYXBpLjMgLCBzbm1wX2FwaS4zLmRlZiAsIHNubXBfc2Vzc19hcGkuMwogICAsIHNubXBfc2Vzc19hcGkuMy5kZWYgLCBzbm1wX3RyYXBfYXBpLjMgLAogICBzbm1wX3RyYXBfYXBpLjMuZGVmICwgdmFyaWFibGVzLjUgLCB2YXJpYWJsZXMuNS5kZWY6CgogICAgIC0gZ2VuZXJhdGUgdGhlIHJlc3Qgb2YgdGhlIG1hbnVhbCBwYWdlcyAodG8gZ2V0IHZlcnNpb24gaW4gZm9vdGVyKQogICAKMjAwMi0wMi0wOCAxNTo1NiAgaGFyZGFrZXIKCiAgICogd2luMzIvOiBjb25maWcuaCAsIG1pYl9tb2R1bGVfY29uZmlnLmggLAogICBtaWJfbW9kdWxlX2luaXRzLmggLCBsaWJzbm1wL2xpYnNubXAuZHNwICwKICAgbGlic25tcF9kbGwvbGlic25tcC5kZWYgLCBsaWJzbm1wX2RsbC9saWJzbm1wX2RsbC5kc3AgLAogICBsaWJ1Y2RtaWJzL2xpYnVjZG1pYnMuZHNwICwgc25tcGQvc25tcGQuZHNwOgoKICAgd2luMzIgc3BlY2lmaWMgcG9ydGlvbnMgb2YgcGF0Y2ggNTAzMjU2CiAgIAoyMDAyLTAyLTA4IDE1OjUzICBoYXJkYWtlcgoKICAgKiB3aW4zMi9saWJoZWxwZXJzL2xpYmhlbHBlcnMuZHNwOgoKICAgcGF0Y2gjNTAzMjU2OiBoZWxwZXJzIGxpYnJhcnkgZGVmaW5pdGlvbiBmb3Igd2luMzIKICAgCjIwMDItMDItMDggMDk6MDggIGpicG4KCiAgICogbWFuL3NubXBkLmNvbmYuNS5kZWY6CgogICAgIC0gbWlub3IgZm9ybWF0IHR3ZWFrYWdlCiAgIAoyMDAyLTAyLTA4IDA4OjIyICBkdHMxMgoKICAgKiBtYW4vOiBtaWJfYXBpLjMgLCBzbm1wX2FnZW50X2FwaS4zICwgc25tcF9hbGFybS4zCiAgICwgc25tcF9hcGkuMyAsIHNubXBfc2Vzc19hcGkuMyAsIHNubXBfdHJhcF9hcGkuMzoKCiAgIFJlZmVyZW5jZSB0aGUgbmV3IGhlYWRlci1maWxlcyBpbiBzZWN0aW9uIDMgbWFuIHBhZ2Ugc3lub3BzZXMuCiAgIAoyMDAyLTAyLTA4IDA3OjUwICBqYnBuCgogICAqIG1hbi86IG1pYl9hcGkuMyAsIHJlYWRfY29uZmlnLjMuZGVmICwgc25tcF9hZ2VudF9hcGkuMwogICAsIHNubXBfY29uZmlnLjUuZGVmICwgc25tcF90cmFwX2FwaS4zICwKICAgc25tcGNtZC4xLmRlZiAsIHNubXBjb25mLjEuZGVmICwgc25tcGQuY29uZi41LmRlZiAsCiAgIHZhcmlhYmxlcy41OgoKICAgICAtIG1vcmUgbWlub3IgdHdlYWtzICh1Y2Qtc25tcCAtPiBOZXQtU05NUCBldGMuKQogICAKMjAwMi0wMi0wOCAwNzo0OCAgaGFyZGFrZXIKCiAgICogYWdlbnQvTWFrZWZpbGUuZGVwZW5kOgoKICAgcmVtb3ZlIGxvY2FsIG1vZHVsZXMgZnJvbSBkZXBlbmRlbmN5IGxpc3QKICAgCjIwMDItMDItMDggMDc6NDUgIGR0czEyCgogICAqIGFnZW50LzogYWdlbnRfaGFuZGxlci5jICwgYWdlbnRfaW5kZXguYyAsCiAgIGFnZW50X3JlYWRfY29uZmlnLmMgLCBhZ2VudF9yZWdpc3RyeS5jICwgYWdlbnRfdHJhcC5jCiAgICwgYXV0b19ubGlzdC5jICwga2VybmVsLmMgLCBtaWJfbW9kdWxlcy5jICwKICAgc25tcF9hZ2VudC5jICwgc25tcF92YXJzLmMgLCBzbm1wZC5jICwKICAgaGVscGVycy9idWxrX3RvX25leHQuYyAsIGhlbHBlcnMvZGVidWdfaGFuZGxlci5jICwKICAgaGVscGVycy9pbnN0YW5jZS5jICwgaGVscGVycy9tdWx0aXBsZXhlci5jICwKICAgaGVscGVycy9udWxsLmMgLCBoZWxwZXJzL29sZF9hcGkuYyAsIGhlbHBlcnMvcmVhZF9vbmx5LmMKICAgLCBoZWxwZXJzL3NlcmlhbGl6ZS5jICwgaGVscGVycy90YWJsZS5jICwKICAgaGVscGVycy90YWJsZV9hcnJheS5jICwgaGVscGVycy90YWJsZV9kYXRhLmMgLAogICBoZWxwZXJzL3RhYmxlX2RhdGFzZXQuYyAsIGhlbHBlcnMvdGFibGVfaXRlcmF0b3IuYyAsCiAgIG1pYmdyb3VwL2hlYWRlcl9jb21wbGV4LmMgLCBtaWJncm91cC9rZXJuZWxfc3Vub3M1LmMgLAogICBtaWJncm91cC90ZXN0ZGVsYXllZC5jICwgbWliZ3JvdXAvdGVzdGhhbmRsZXIuYyAsCiAgIG1pYmdyb3VwL3V0aWxfZnVuY3MuYyAsIG1pYmdyb3VwL1Jtb24vYWd1dGlsLmMgLAogICBtaWJncm91cC9SbW9uL2FsYXJtLmMgLCBtaWJncm91cC9SbW9uL2V2ZW50LmMgLAogICBtaWJncm91cC9SbW9uL2hpc3RvcnkuYyAsIG1pYmdyb3VwL1Jtb24vcm93cy5jICwKICAgbWliZ3JvdXAvUm1vbi9zdGF0aXN0aWNzLmMgLAogICBtaWJncm91cC9hZ2VudC9uc1RyYW5zYWN0aW9uVGFibGUuYyAsCiAgIG1pYmdyb3VwL2FnZW50eC9hZ2VudHhfY29uZmlnLmMgLCBtaWJncm91cC9hZ2VudHgvY2xpZW50LmMKICAgLCBtaWJncm91cC9hZ2VudHgvbWFzdGVyLmMgLAogICBtaWJncm91cC9hZ2VudHgvbWFzdGVyX2FkbWluLmMgLAogICBtaWJncm91cC9hZ2VudHgvbWFzdGVyX3JlcXVlc3QuYyAsIG1pYmdyb3VwL2FnZW50eC9wcm90b2NvbC5jCiAgICwgbWliZ3JvdXAvYWdlbnR4L3N1YmFnZW50LmMgLAogICBtaWJncm91cC9kaXNtYW4vbXRlT2JqZWN0c1RhYmxlLmMgLAogICBtaWJncm91cC9kaXNtYW4vbXRlVHJpZ2dlckJvb2xlYW5UYWJsZS5jICwKICAgbWliZ3JvdXAvZGlzbWFuL210ZVRyaWdnZXJEZWx0YVRhYmxlLmMgLAogICBtaWJncm91cC9kaXNtYW4vbXRlVHJpZ2dlckV4aXN0ZW5jZVRhYmxlLmMgLAogICBtaWJncm91cC9kaXNtYW4vbXRlVHJpZ2dlclRhYmxlLmMgLAogICBtaWJncm91cC9kaXNtYW4vbXRlVHJpZ2dlclRocmVzaG9sZFRhYmxlLmMgLAogICBtaWJncm91cC9leGFtcGxlcy9leGFtcGxlLmMgLAogICBtaWJncm91cC9leGFtcGxlcy91Y2REZW1vUHVibGljLmMgLAogICBtaWJncm91cC9ob3N0L2hyX2ZpbGVzeXMuYyAsIG1pYmdyb3VwL2hvc3QvaHJfc3RvcmFnZS5jCiAgICwgbWliZ3JvdXAvaG9zdC9ocl9zd2luc3QuYyAsIG1pYmdyb3VwL2hvc3QvaHJfc3dydW4uYwogICAsIG1pYmdyb3VwL2hvc3QvaHJfc3lzdGVtLmMgLCBtaWJncm91cC9taWJJSS9hdC5jCiAgICwgbWliZ3JvdXAvbWliSUkvaWNtcC5jICwgbWliZ3JvdXAvbWliSUkvaW50ZXJmYWNlcy5jCiAgICwgbWliZ3JvdXAvbWliSUkvaXAuYyAsIG1pYmdyb3VwL21pYklJL2lwQWRkci5jICwKICAgbWliZ3JvdXAvbWliSUkvaXB2Ni5jICwgbWliZ3JvdXAvbWliSUkva2VybmVsX2xpbnV4LmMgLAogICBtaWJncm91cC9taWJJSS9tdGFfc2VuZG1haWwuYyAsIG1pYmdyb3VwL21pYklJL3JvdXRlX3dyaXRlLmMKICAgLCBtaWJncm91cC9taWJJSS9zbm1wX21pYi5jICwKICAgbWliZ3JvdXAvbWliSUkvc3lzT1JUYWJsZS5jICwgbWliZ3JvdXAvbWliSUkvc3lzdGVtX21pYi5jCiAgICwgbWliZ3JvdXAvbWliSUkvdGNwLmMgLCBtaWJncm91cC9taWJJSS90Y3BUYWJsZS5jCiAgICwgbWliZ3JvdXAvbWliSUkvdWRwLmMgLCBtaWJncm91cC9taWJJSS91ZHBUYWJsZS5jCiAgICwgbWliZ3JvdXAvbWliSUkvdmFjbV9jb250ZXh0LmMgLAogICBtaWJncm91cC9taWJJSS92YWNtX3ZhcnMuYyAsIG1pYmdyb3VwL21pYklJL3Zhcl9yb3V0ZS5jCiAgICwgbWliZ3JvdXAvbWlzYy9kbG1vZC5jICwgbWliZ3JvdXAvbWlzYy9pcGZ3YWNjLmMKICAgLCBtaWJncm91cC9ub3RpZmljYXRpb24vc25tcE5vdGlmeUZpbHRlclByb2ZpbGVUYWJsZS5jICwKICAgbWliZ3JvdXAvbm90aWZpY2F0aW9uL3NubXBOb3RpZnlGaWx0ZXJUYWJsZS5jICwKICAgbWliZ3JvdXAvbm90aWZpY2F0aW9uL3NubXBOb3RpZnlUYWJsZS5jICwKICAgbWliZ3JvdXAvc211eC9zbXV4LmMgLCBtaWJncm91cC9zbXV4L3NubXBfYmdwLmMgLAogICBtaWJncm91cC9zbXV4L3NubXBfb3NwZi5jICwgbWliZ3JvdXAvc211eC9zbm1wX3JpcDIuYyAsCiAgIG1pYmdyb3VwL3NubXB2My9zbm1wRW5naW5lLmMgLCBtaWJncm91cC9zbm1wdjMvc25tcE1QRFN0YXRzLmMKICAgLCBtaWJncm91cC9zbm1wdjMvdXNtU3RhdHMuYyAsCiAgIG1pYmdyb3VwL3NubXB2My91c21Vc2VyLmMgLAogICBtaWJncm91cC90YXJnZXQvc25tcFRhcmdldEFkZHJFbnRyeS5jICwKICAgbWliZ3JvdXAvdGFyZ2V0L3NubXBUYXJnZXRQYXJhbXNFbnRyeS5jICwKICAgbWliZ3JvdXAvdGFyZ2V0L3RhcmdldC5jICwgbWliZ3JvdXAvdGFyZ2V0L3RhcmdldF9jb3VudGVycy5jCiAgICwgbWliZ3JvdXAvdHVubmVsL3R1bm5lbC5jICwgbWliZ3JvdXAvdWNkLXNubXAvZGlzay5jCiAgICwgbWliZ3JvdXAvdWNkLXNubXAvZGlza2lvLmMgLCBtaWJncm91cC91Y2Qtc25tcC9kbG1vZC5jCiAgICwgbWliZ3JvdXAvdWNkLXNubXAvZXJyb3JtaWIuYyAsCiAgIG1pYmdyb3VwL3VjZC1zbm1wL2V4dGVuc2libGUuYyAsIG1pYmdyb3VwL3VjZC1zbm1wL2ZpbGUuYwogICAsIG1pYmdyb3VwL3VjZC1zbm1wL2hwdXguYyAsCiAgIG1pYmdyb3VwL3VjZC1zbm1wL2xtU2Vuc29ycy5jICwgbWliZ3JvdXAvdWNkLXNubXAvbG9hZGF2ZS5jCiAgICwgbWliZ3JvdXAvdWNkLXNubXAvbG9nbWF0Y2guYyAsCiAgIG1pYmdyb3VwL3VjZC1zbm1wL21lbW9yeS5jICwgbWliZ3JvdXAvdWNkLXNubXAvbWVtb3J5X2R5bml4LmMKICAgLCBtaWJncm91cC91Y2Qtc25tcC9tZW1vcnlfZnJlZWJzZDIuYyAsCiAgIG1pYmdyb3VwL3VjZC1zbm1wL21lbW9yeV9uZXRic2QxLmMgLAogICBtaWJncm91cC91Y2Qtc25tcC9tZW1vcnlfc29sYXJpczIuYyAsCiAgIG1pYmdyb3VwL3VjZC1zbm1wL3Bhc3MuYyAsIG1pYmdyb3VwL3VjZC1zbm1wL3Bhc3NfcGVyc2lzdC5jCiAgICwgbWliZ3JvdXAvdWNkLXNubXAvcHJvYy5jICwgbWliZ3JvdXAvdWNkLXNubXAvcHJveHkuYwogICAsIG1pYmdyb3VwL3VjZC1zbm1wL3JlZ2lzdHJ5LmMgLAogICBtaWJncm91cC91Y2Qtc25tcC92ZXJzaW9uaW5mby5jICwgbWliZ3JvdXAvdWNkLXNubXAvdm1zdGF0LmMKICAgLCBtaWJncm91cC91Y2Qtc25tcC92bXN0YXRfYnNkaTQuYyAsCiAgIG1pYmdyb3VwL3VjZC1zbm1wL3Ztc3RhdF9keW5peC5jICwKICAgbWliZ3JvdXAvdWNkLXNubXAvdm1zdGF0X2ZyZWVic2QyLmMgLAogICBtaWJncm91cC91Y2Qtc25tcC92bXN0YXRfbmV0YnNkMS5jICwKICAgbWliZ3JvdXAvdWNkLXNubXAvdm1zdGF0X3NvbGFyaXMyLmM6CgogICBVc2UgdGhlIG5ldyAnbmV0LXNubXAtaW5jbHVkZXMnIHNpbmdsZS1pbmNsdWRlIGhlYWRlciBmaWxlcywKICAgaW4gcGxhY2Ugb2YgdGhlICh1bmluc3RhbGxlZCkgJ21pYmluY2wuaCcuCiAgICAgV2hlZWVlZS4uLi4uLgogICAKMjAwMi0wMi0wOCAwNzoxNyAgamJwbgoKICAgKiBtYW4vOiBzbm1wLmNvbmYuNS5kZWYgLCBzbm1wX2FnZW50X2FwaS4zICwKICAgc25tcF9hbGFybS4zICwgc25tcF9hcGkuMyAsIHNubXBfY29uZmlnLjUuZGVmICwKICAgc25tcF9zZXNzX2FwaS4zICwgc25tcGQuMS5kZWYgLCBzbm1wZC5jb25mLjUuZGVmICwKICAgc25tcHRyYXBkLmNvbmYuNS5kZWY6CgogICAgIC0gc29tZSBlZGl0aW5nIHRvIG1ha2Ugc3R5bGUgY29uc2lzdGVudCwgYWRkIHNvbWUgbWlzc2luZyBvcHRpb25zLAogICAgICAgY2hhbmdlIHVjZC1zbm1wIHRvIE5ldC1TTk1QIGFuZCB0aGluZ3MgbGlrZSB0aGF0LgogICAKMjAwMi0wMi0wOCAwNzoxNCAgamJwbgoKICAgKiBtYW4vTWFrZWZpbGUuaW46CgogICAgIC0gZ2VuZXJhdGUgbWFuIHBhZ2VzIGF0IGNvbXBpbGUgdGltZQogICAKMjAwMi0wMi0wOCAwNzoxNCAgamJwbgoKICAgKiBtYW4vOiBzbm1wYnVsa2dldC4xICwgc25tcGJ1bGt3YWxrLjEgLAogICBzbm1wYnVsa2dldC4xLmRlZiAsIHNubXBidWxrd2Fsay4xLmRlZiAsIHNubXBjbWQuMQogICAsIHNubXBjbWQuMS5kZWYgLCBzbm1wY29uZi4xICwgc25tcGNvbmYuMS5kZWYKICAgLCBzbm1wZ2V0LjEgLCBzbm1wZ2V0LjEuZGVmICwgc25tcGdldG5leHQuMSAsCiAgIHNubXBnZXRuZXh0LjEuZGVmICwgc25tcHNldC4xICwgc25tcHNldC4xLmRlZiAsCiAgIHNubXBzdGF0dXMuMSAsIHNubXBzdGF0dXMuMS5kZWYgLCBzbm1wdGFibGUuMSAsCiAgIHNubXB0YWJsZS4xLmRlZiAsIHNubXB0ZXN0LjEgLCBzbm1wdGVzdC4xLmRlZiAsCiAgIHNubXB0cmFuc2xhdGUuMSAsIHNubXB0cmFuc2xhdGUuMS5kZWYgLCBzbm1wdHJhcC4xCiAgICwgc25tcHRyYXAuMS5kZWYgLCBzbm1wdXNtLjEgLCBzbm1wdXNtLjEuZGVmICwKICAgc25tcHdhbGsuMSAsIHNubXB3YWxrLjEuZGVmICwgc25tcHRyYXBkLjggLAogICBzbm1wdHJhcGQuOC5kZWY6CgogICAgIC0gcmVuYW1lIG1hbiBwYWdlcyB3aGljaCBhcmUgbm93IGdlbmVyYXRlZCBhdCBjb21waWxlIHRpbWUgaW4gb3JkZXIKICAgICAgIHRvIHBpY2sgdXAgdGhlIHZlcnNpb24gKHdoaWNoIGdldHMgcHV0IGluIHRoZSBmb290ZXIpLgogICAKICAgICAtIGFsc28gc29tZSBlZGl0aW5nIHRvIG1ha2Ugc3R5bGUgY29uc2lzdGVudCwgYWRkIHNvbWUgbWlzc2luZyBvcHRpb25zLAogICAgICAgY2hhbmdlIHVjZC1zbm1wIHRvIE5ldC1TTk1QIGFuZCB0aGluZ3MgbGlrZSB0aGF0LgogICAKMjAwMi0wMi0wOCAwNjo0OCAgZHRzMTIKCiAgICogYWdlbnQvbWliZ3JvdXAvOiBtaWJKSi5oICwgbWliSkovaWNtcC5jICwgbWliSkovaWNtcC5oCiAgICwgbWliSkovaWZfZmllbGRzLmggLCBtaWJKSi9pbnRlcmZhY2VzLmMgLAogICBtaWJKSi9pbnRlcmZhY2VzLmggLCBtaWJKSi9pcC5jICwgbWliSkovaXAuaCAsCiAgIG1pYkpKL2lwQWRkci5jICwgbWliSkovaXBBZGRyLmggLCBtaWJKSi9pcE1lZGlhLmMgLAogICBtaWJKSi9pcE1lZGlhLmggLCBtaWJKSi9pcFJvdXRlLmMgLCBtaWJKSi9pcFJvdXRlLmgKICAgLCBtaWJKSi9pcHY2LmMgLCBtaWJKSi9pcHY2LmggLCBtaWJKSi9rZXJuZWxfaHB1eC5jCiAgICwgbWliSkova2VybmVsX2hwdXguaCAsIG1pYkpKL2tlcm5lbF9saW51eC5jICwKICAgbWliSkova2VybmVsX2xpbnV4LmggLCBtaWJKSi9zbm1wX21pYi5jICwKICAgbWliSkovc25tcF9taWIuaCAsIG1pYkpKL3N5c09SVGFibGUuYyAsCiAgIG1pYkpKL3N5c09SVGFibGUuaCAsIG1pYkpKL3N5c3RlbV9taWIuYyAsCiAgIG1pYkpKL3N5c3RlbV9taWIuaCAsIG1pYkpKL3RjcC5jICwgbWliSkovdGNwLmggLAogICBtaWJKSi90Y3BUYWJsZS5jICwgbWliSkovdGNwVGFibGUuaCAsIG1pYkpKL3VkcC5jICwKICAgbWliSkovdWRwLmggLCBtaWJKSi91ZHBUYWJsZS5jICwgbWliSkovdWRwVGFibGUuaCAsCiAgIG1pYkpKL3ZhY21fdmFycy5jICwgbWliSkovdmFjbV92YXJzLmg6CgogICBSZW1vdmUgdGhlIGF0dGVtcHRlZCAnbWliSUknIHJlLXdyaXRlLgogICBJZiB3ZSB3YW50IHRvIHRpZHkgdXAgbWliSUksIGl0IG1ha2VzIG1vcmUgc2Vuc2UgdG8gdXNlIHRoZSBuZXcgYWdlbnQgQVBJcy4KICAgCjIwMDItMDItMDggMDY6NDUgIGR0czEyCgogICAqIGluY2x1ZGUvbmV0LXNubXAvOiBuZXQtc25tcC1pbmNsdWRlcy5oICwKICAgYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaDoKCiAgIEJyaW5nIHNpbmdsZS1pbmNsdWRlIGhlYWRlciBmaWxlcyBjbG9zZXIgaW4gbGluZSB3aXRoIHRoZSBleGlzdGluZyAibWliaW5jbC5oIiBmaWxlCiAgIAoyMDAyLTAyLTA4IDA2OjA5ICBkdHMxMgoKICAgKiBhZ2VudC9taWJncm91cC9taWJJSS86IHN5c09SVGFibGUuaCAoVjQtMi1wYXRjaGVzLjEpLAogICBzeXNPUlRhYmxlLmg6CgogICBFbnN1cmUgdGhlIG51bGwgdmVyc2lvbnMgb2YgdGhlIHR3byBSRUdJU1RFUiBtYWNyb3Mgc3dhbGxvdyB0aGVpciBwYXJhbWV0ZXJzLgogICAKMjAwMi0wMi0wOCAwNDozNiAgZHRzMTIKCiAgICogYWdlbnQvc25tcF9hZ2VudC5jOgoKICAgSW1wbGVtZW50IHRoZSBtaXNzaW5nIG91dGdvaW5nIGVycm9yIHN0YXRpc3RpY3MgY291bnRlcnMKICAgKHBhdGNoICM1MTAxOTQgZnJvbSBMYXRoYSBQcmFiaHUpCiAgIAoyMDAyLTAyLTA4IDAyOjQyICBkdHMxMgoKICAgKiBhZ2VudC9taWJncm91cC86IGhvc3QvaHJfc3RvcmFnZS5jLCB1Y2Qtc25tcC9tZW1vcnkuYwogICAoVjQtMi1wYXRjaGVzLls2LDNdKSwgaG9zdC9ocl9zdG9yYWdlLmMgLCB1Y2Qtc25tcC9tZW1vcnkuYzoKCiAgIEFkZGVkIHN1cHBvcnQgZm9yIG1lbW9yeSBhbmQgc3dhcCBlbnRyaWVzIGluIGhyU3RvcmFnZVRhYmxlIGZvciBTb2xhcmlzCiAgIChmcm9tIHBhdGNoICM1MDU0OTggLSB0aGFua3MgdG8gSm9oYW5uZXMgU2NobWlkdC1GaXNjaGVyKQogICAKMjAwMi0wMi0wOCAwMjowNyAgZHRzMTIKCiAgICogYWdlbnQvbWliZ3JvdXAvbWliSUkvaXAuYzoKCiAgIENvbnNvbGlkYXRlIGlkZW50aWNhbCBNSUIgb2JqZWN0IGVudHJpZXMgKFdJTjMyL25vbi1XSU4zMikKICAgCjIwMDItMDItMDggMDA6NTAgIGpicG4KCiAgICogbWFuL1JFQURNRToKCiAgICAgLSByZW1vdmUgY2hyb25pY2FsbHkgZGF0ZWQgdW5oZWxwZnVsIFJFQURNRQogICAKMjAwMi0wMi0wNyAxMzozMyAgaGFyZGFrZXIKCiAgICogTWFrZWZpbGUuaW4gLCBNYWtlZmlsZS5ydWxlcyAsIGNvbmZpZ3VyZSAsCiAgIGNvbmZpZ3VyZS5pbiAsIG1ha2VmaWxlaW5kZXBlbmQucGwgLAogICBhZ2VudC9NYWtlZmlsZS5kZXBlbmQgLCBhZ2VudC9NYWtlZmlsZS5pbiAsCiAgIGFnZW50L2FnZW50X3RyYXAuYyAsIGFnZW50L21pYl9tb2R1bGVzLmMgLAogICBhZ2VudC9zbm1wX2FnZW50LmMgLCBhZ2VudC9zbm1wZC5jICwKICAgYWdlbnQvaGVscGVycy9NYWtlZmlsZS5kZXBlbmQgLCBhZ2VudC9oZWxwZXJzL01ha2VmaWxlLmluCiAgICwgYWdlbnQvbWliZ3JvdXAvTWFrZWZpbGUuZGVwZW5kICwKICAgYWdlbnQvbWliZ3JvdXAvTWFrZWZpbGUuaW4gLCBhZ2VudC9taWJncm91cC9taWJpbmNsLmggLAogICBhZ2VudC9taWJncm91cC9hZ2VudHgvYWdlbnR4X2NvbmZpZy5jICwKICAgYWdlbnQvbWliZ3JvdXAvYWdlbnR4L3N1YmFnZW50LmMgLCBhcHBzL01ha2VmaWxlLmRlcGVuZAogICAsIGFwcHMvTWFrZWZpbGUuaW4gLCBhcHBzL3NubXBuZXRzdGF0L01ha2VmaWxlLmRlcGVuZAogICAsIGFwcHMvc25tcG5ldHN0YXQvTWFrZWZpbGUuaW4gLCBsb2NhbC9NYWtlZmlsZS5pbgogICAsIG1hbi9NYWtlZmlsZS5pbiAsIG1pYnMvTWFrZWZpbGUuaW4gLAogICBzbm1wbGliL01ha2VmaWxlLmRlcGVuZCAsIHNubXBsaWIvTWFrZWZpbGUuaW46CgogICByZW1ha2UgbWFrZSdzIE1ha2VmaWxlJ3MgdG8gbWFrZSBiZXR0ZXIgbWFraW5nCiAgIAoyMDAyLTAyLTA3IDEzOjMxICBoYXJkYWtlcgoKICAgKiBwZXJsL1NOTVAvTWFrZWZpbGUuUEw6CgogICBjaGVjayBsb2NhbCBwYXRoZXMKICAgCjIwMDItMDItMDcgMTI6NTQgIGR0czEyCgogICAqIGFnZW50L3NubXBfYWdlbnQuYzoKCiAgIEVuc3VyZSBhZ2VudCByZXR1cm5zIHRoZSBjb3JyZWN0IGVycm9yIGNvZGVzIGZvciBVTkRPIGFuZCBDT01NSVQgZmFpbHVyZXMuCiAgIAoyMDAyLTAyLTA3IDExOjE4ICBoYXJkYWtlcgoKICAgKiBwZXJsL1NOTVAvOiBNYWtlZmlsZS5QTCAsIFNOTVAueHMgLCB0L3N0YXJ0YWdlbnQucGw6CgogICBhdHRlbXB0IGF0IHBvcnRpbmcgSm9lJ3MgU05NUCBtb2R1bGUgdG8gbmV0LXNubXAuCiAgIEl0IGNvbXBpbGVzLCBidXQgb25seSBzb21lIG9mIHRoZSB0ZXN0cyBzdWNjZWVkLgogICAKMjAwMi0wMi0wNyAxMDowOSAgamJwbgoKICAgKiBtYW4vOiBkZWZhdWx0X3N0b3JlLjMudG9wICwgbWliX2FwaS4zICwKICAgcmVhZF9jb25maWcuMy5kZWYgLCBzbm1wLmNvbmYuNS5kZWYgLCBzbm1wX2FnZW50X2FwaS4zCiAgICwgc25tcF9hbGFybS4zICwgc25tcF9hcGkuMyAsIHNubXBfY29uZmlnLjUuZGVmCiAgICwgc25tcF9zZXNzX2FwaS4zICwgc25tcF90cmFwX2FwaS4zICwgc25tcGJ1bGtnZXQuMQogICAsIHNubXBidWxrd2Fsay4xICwgc25tcGNvbmYuMSAsIHNubXBkLmNvbmYuNS5kZWYKICAgLCBzbm1wZGVsdGEuMSAsIHNubXBkZi4xICwgc25tcGdldC4xICwKICAgc25tcGdldG5leHQuMSAsIHNubXBuZXRzdGF0LjEgLCBzbm1wc2V0LjEgLAogICBzbm1wc3RhdHVzLjEgLCBzbm1wdGFibGUuMSAsIHNubXB0ZXN0LjEgLAogICBzbm1wdHJhbnNsYXRlLjEgLCBzbm1wdHJhcC4xICwgc25tcHRyYXBkLmNvbmYuNS5kZWYKICAgLCBzbm1wdXNtLjEgLCBzbm1wd2Fsay4xICwgdmFyaWFibGVzLjU6CgogICAgIC0gYWRkIE5ldC1TTk1QIGluIGhlYWRlciBvZiBhbGwgbWFuIHBhZ2VzCiAgIAoyMDAyLTAyLTA3IDA5OjUyICBqYnBuCgogICAqIG1hbi9zbm1wY21kLjE6CgogICAgIC0gdXBkYXRlIHN0eWxlIHRvIG1hdGNoIHNubXBkIGFuZCBzbm1wdHJhcGQgbWFuIHBhZ2VzCiAgIAoyMDAyLTAyLTA3IDA4OjE1ICBqYnBuCgogICAqIG1hbi9zbm1wdHJhcGQuODoKCiAgICAgLSBmaXggc3BlZWxpbmcgbWlzdGFrZQogICAKMjAwMi0wMi0wNyAwODowMCAgamJwbgoKICAgKiBtYW4vc25tcHRyYXBkLjg6CgogICAgIC0gYnJpbmcgdXAgdG8gZGF0ZSB3aXRoIHNubXB0cmFwZAogICAKMjAwMi0wMi0wNyAwNzoyOCAgZHRzMTIKCiAgICogUkVBRE1FLmhwdXgxMSAsIGFjY29uZmlnLmggLAogICBhZ2VudC9taWJncm91cC91Y2Rfc25tcC5oICwgYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9uZXR3b3JrLmMKICAgLCBhZ2VudC9taWJncm91cC9ob3N0L2hyX3N0b3JhZ2UuYyAsCiAgIGFnZW50L21pYmdyb3VwL2hvc3QvaHJfc3dpbnN0LmMgLAogICBhZ2VudC9taWJncm91cC9ob3N0L2hyX3N3cnVuLmMgLCBhZ2VudC9taWJncm91cC9taWJJSS9hdC5jCiAgICwgYWdlbnQvbWliZ3JvdXAvbWliSUkvaWNtcC5jICwKICAgYWdlbnQvbWliZ3JvdXAvbWliSUkvaW50ZXJmYWNlcy5jICwKICAgYWdlbnQvbWliZ3JvdXAvbWliSUkvaW50ZXJmYWNlcy5oICwgYWdlbnQvbWliZ3JvdXAvbWliSUkvaXAuYwogICAsIGFnZW50L21pYmdyb3VwL21pYklJL2lwQWRkci5jICwKICAgYWdlbnQvbWliZ3JvdXAvbWliSUkvdGNwLmMgLCBhZ2VudC9taWJncm91cC9taWJJSS90Y3BUYWJsZS5jCiAgICwgYWdlbnQvbWliZ3JvdXAvbWliSUkvdGNwVGFibGUuaCAsCiAgIGFnZW50L21pYmdyb3VwL21pYklJL3VkcC5jICwgYWdlbnQvbWliZ3JvdXAvbWliSUkvdWRwVGFibGUuYwogICAsIGFnZW50L21pYmdyb3VwL21pYklJL3Zhcl9yb3V0ZS5jICwKICAgYWdlbnQvbWliZ3JvdXAvbWliSUkvdmFyX3JvdXRlLmggLAogICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9tZW1vcnkuYyAsCiAgIGluY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmguaW4gLAogICBpbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9ocHV4LmggLCBtaWJzL1VDRC1TTk1QLU1JQi50eHQ6CgogICBTdXBwb3J0IGZvciBIUC1VWCAxMSwgY291cnRlc3kgb2YgSm9oYW5uZXMgU2NobWlkdC1GaXNjaGVyLgogICAKMjAwMi0wMi0wNyAwNjozMCAgamJwbgoKICAgKiBtYW4vc25tcGQuMS5kZWY6CgogICAgIC0gYWxwaGFiZXRpc2Ugb3B0aW9ucwogICAKICAgICAtIGJyaW5nIG1hbiBwYWdlIGluIGxpbmUgd2l0aCBuZXcgcG9zaXRpb25hbCBhcmd1bWVudHMgbGlzdGVuaW5nCiAgICAgICBhZGRyZXNzIHNwZWNpZmljYXRpb24gYW5kIGFkZCBzZWN0aW9uIGRlc2NyaWJpbmcgdGhhdAogICAKICAgICAtIHB1dCBOZXQtU05NUCBpbiBoZWFkZXIKICAgCjIwMDItMDItMDYgMTA6MDYgIGpicG4KCiAgICogaW5jbHVkZS9uZXQtc25tcC9zY2FwaS5oOgoKICAgICAtIGZpeCBidWcgbm90ZWQgYnkgTmllbHMKICAgCjIwMDItMDItMDYgMDk6MjUgIGpicG4KCiAgICogYXBwcy86IGVuY29kZV9rZXljaGFuZ2UuYyAsIHNubXB1c20uYzoKCiAgICAgLSBtaW5vciB0d2Vha3MgZHVlIHRvIGNoYW5nZSBpbiBkZWZpbml0aW9uIG9mIFVTTSBPSURzLgogICAKMjAwMi0wMi0wNiAwOToxNyAgamJwbgoKICAgKiBpbmNsdWRlL25ldC1zbm1wL3NubXB1c20uaCAsIGluY2x1ZGUvbmV0LXNubXAvc25tcHYzLmgKICAgLCBpbmNsdWRlL25ldC1zbm1wL3RyYW5zZm9ybV9vaWRzLmggLAogICBzbm1wbGliL3NubXBfcGFyc2VfYXJncy5jICwgc25tcGxpYi9zbm1wdXNtLmMgLAogICBzbm1wbGliL3NubXB2My5jOgoKICAgICAtIG1vdmUgVVNNIE9JRCBkZWZpbml0aW9ucyBpbnRvIHNubXB1c20uYywgbWFrZSB0aGVtIGNvbnN0CiAgIAogICAgIC0gY29uc2VxdWVudCBpbmNyZWFzZSBpbiBjb25zdC1uZXNzIGluIHNvbWUgZnVuY3Rpb24gcHJvdG90eXBlcwogICAKMjAwMi0wMi0wNiAwOToxMiAgaGFyZGFrZXIKCiAgICogaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oOgoKICAgcmVtb3ZlIGludGVybmFsIG5vdGUgYWJvdXQgdjMgYXBpLCB3aGljaCBzaG91bGQgYmUgcHVibGljCiAgIAoyMDAyLTAyLTA2IDA5OjEyICBoYXJkYWtlcgoKICAgKiBpbmNsdWRlL25ldC1zbm1wL3NubXB1c21faW5pdC5oOgoKICAgcmVtb3ZlZCB1bm5lZWRlZCBmaWxlCiAgIAoyMDAyLTAyLTA2IDA5OjA2ICBqYnBuCgogICAqIGluY2x1ZGUvbmV0LXNubXAva2V5dG9vbHMuaCAsIGluY2x1ZGUvbmV0LXNubXAvc2NhcGkuaAogICAsIHNubXBsaWIva2V5dG9vbHMuYyAsIHNubXBsaWIvc2NhcGkuYzoKCiAgICAgLSBhZGQgY29uc3QtbmVzcyBmb3IgdHJhbnNmb3JtIHR5cGUgYXJncwogICAKMjAwMi0wMi0wNiAwOTowMSAgamJwbgoKICAgKiBpbmNsdWRlL25ldC1zbm1wL21pYi5oICwgaW5jbHVkZS9uZXQtc25tcC9zbm1wX2RlYnVnLmgKICAgLCBzbm1wbGliL21pYi5jICwgc25tcGxpYi9zbm1wX2RlYnVnLmM6CgogICAgIC0gYWRkIHNvbWUgY29uc3QtbmVzcyBmb3IgT0lEIGFyZ3MgKG1haW5seSBzbyB0aGF0IGRlYnVnbXNnX29pZCB0YWtlcwogICAgICAgY29uc3QpLgogICAKMjAwMi0wMi0wNiAwODo0NCAgZHRzMTIKCiAgICogYWdlbnQvYWdlbnRfcmVhZF9jb25maWcuYyAsIGFnZW50L21pYmdyb3VwL3VjZF9zbm1wLmgKICAgLCBhZ2VudC9taWJncm91cC9ob3N0L2hyX2ZpbGVzeXMuYyAsCiAgIGFnZW50L21pYmdyb3VwL2hvc3QvaHJfc3RvcmFnZS5jICwKICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvbG9hZGF2ZS5jICwKICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvbWVtb3J5X2R5bml4LmMgLAogICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9tZW1vcnlfZHluaXguaCAsCiAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Ztc3RhdF9keW5peC5jICwKICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvdm1zdGF0X2R5bml4LmggLAogICBpbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9keW5peC5oICwKICAgYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9zd3J1bi5jICwgYWdlbnQvbWliZ3JvdXAvbWliSUkvYXQuYwogICAsIGFnZW50L21pYmdyb3VwL21pYklJL2ludGVyZmFjZXMuYyAsCiAgIGFnZW50L21pYmdyb3VwL21pYklJL3JvdXRlX3dyaXRlLmMgLAogICBhZ2VudC9taWJncm91cC9taWJJSS92YXJfcm91dGUuYyAsIHNubXBsaWIvc25tcF9hcGkuYzoKCiAgIFN1cHBvcnQgZm9yIER5bml4L1BUWCA0LjQsIGNvdXJ0ZXN5IG9mIFBhdHJpY2sgSGVzcy4KICAgCjIwMDItMDItMDYgMDc6NDEgIGpicG4KCiAgICogaW5jbHVkZS9uZXQtc25tcC9zbm1wX2FwaS5oICwgc25tcGxpYi9zbm1wX2FwaS5jOgoKICAgICAtIG1ha2UgZmlyc3QgYXJndW1lbnQgb2Ygc25tcF9kdXBfb2JqaWQoKSBjb25zdC4KICAgCiAgICAgLSBiZXR0ZXIgaGFuZGxlIE5VTEwgdmFsdWVzIGluIHNubXBfZHVwX29iamlkKCkuCiAgIAoyMDAyLTAyLTA2IDA3OjA5ICBkdHMxMgoKICAgKiBGQVEgLCBtYW4vc25tcF90cmFwX2FwaS4zOgoKICAgQ2xhcmlmeSB0aGUgYXBwbGljYWJpbGl0eSBvZiAnc25tcF90cmFwX2FwaSgzKScgcm91dGluZXMgdG8gQWdlbnRYIHN1YmFnZW50cy4KICAgCjIwMDItMDItMDYgMDU6NTggIGR0czEyCgogICAqIGFwcHMvOiBlbmNvZGVfa2V5Y2hhbmdlLmMgLCBub3RpZmljYXRpb25fbG9nLmMgLAogICBzbm1wYnVsa2dldC5jICwgc25tcGJ1bGt3YWxrLmMgLCBzbm1wZGVsdGEuYyAsCiAgIHNubXBkZi5jICwgc25tcGdldC5jICwgc25tcGdldG5leHQuYyAsIHNubXBzZXQuYwogICAsIHNubXBzdGF0dXMuYyAsIHNubXB0YWJsZS5jICwgc25tcHRlc3QuYyAsCiAgIHNubXB0cmFuc2xhdGUuYyAsIHNubXB0cmFwLmMgLCBzbm1wdHJhcGQuYyAsCiAgIHNubXB0cmFwZF9oYW5kbGVycy5jICwgc25tcHRyYXBkX2xvZy5jICwgc25tcHVzbS5jCiAgICwgc25tcHZhY20uYyAsIHNubXB3YWxrLmMgLCBzbm1wbmV0c3RhdC9pZi5jCiAgICwgc25tcG5ldHN0YXQvaW5ldC5jICwgc25tcG5ldHN0YXQvaW5ldDYuYyAsCiAgIHNubXBuZXRzdGF0L21haW4uYyAsIHNubXBuZXRzdGF0L3JvdXRlLmM6CgogICBBcHBsaWNhdGlvbnMgYW1lbmRlZCB0byB1c2UgdGhlIG5ldy1zdHlsZSBsaWJyYXJ5IGhlYWRlciBzdHJ1Y3R1cmUuCiAgIChJbiBtb3N0IGNhc2VzLCBzaW1wbHkgaW5jbHVkaW5nIHRoZSBzaW5nbGUgImZ1bGwgQVBJIiBoZWFkZXIgZmlsZSkKICAgCjIwMDItMDItMDYgMDU6NTUgIGR0czEyCgogICAqIGluY2x1ZGUvbmV0LXNubXAvOiBhc24xLmggLCBjb25maWdfYXBpLmggLAogICBkZWZpbml0aW9ucy5oICwgbG9nZ2luZ19hcGkuaCAsIG1pYl9hcGkuaCAsCiAgIG5ldC1zbm1wLWluY2x1ZGVzLmggLCBwZHVfYXBpLmggLCBzZXNzaW9uX2FwaS5oICwKICAgc25tcHYzX2FwaS5oICwgdHlwZXMuaCAsIHV0aWxpdGllcy5oICwgdmFyYmluZF9hcGkuaDoKCiAgIEZyYW1ld29yayBmb3IgbmV3IGxpYnJhcnkgaGVhZGVyIGZpbGUgb3JnYW5pc2F0aW9uLCB3aXRoIGVpZ2h0IG1haW4gZ3JvdXBzCiAgIG9mIEFQSSByb3V0aW5lcy4gIEN1cnJlbnRseSB0aGVzZSBzdGlsbCByZWZlciB0byB0aGUgVUNELXN0eWxlIHN0eWxlIGhlYWRlcgogICBmaWxlcyBmb3IgdGhlIGFjdHVhbCBmdW5jdGlvbiBkZWNsYXJhdGlvbnMuCiAgIAoyMDAyLTAyLTA2IDA1OjMxICBqYnBuCgogICAqIG1hbi9NYWtlZmlsZS5pbjoKCiAgICAgLSByZXBsYWNlIHVzZSBvZiAkPCB3aXRoIGV4cGxpY2l0IGZpbGVuYW1lLCBzaW5jZSBub24tR05VIG1ha2VzIHNlZW0KICAgICAgIHRvIGJhcmYgb24gaXQKICAgCjIwMDItMDItMDYgMDM6MzEgIGR0czEyCgogICAqIE1ha2VmaWxlLmluOgoKICAgRml4IGluY29ycmVjdCBkaXJlY3Rvcnkgc3BlY2lmaWNhdGlvbiBpbiAnbWFrZSBjbGVhbicKICAgCjIwMDItMDItMDYgMDM6MTggIGR0czEyCgogICAqIGFjY29uZmlnLmggLCBpbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLmluOgoKICAgUHJvdGVjdCB0aGUgcHJvamVjdCBjb25maWcgZmlsZSBhZ2FpbnN0IG11bHRpcGxlIGluY2x1c2lvbi4KICAgCjIwMDItMDItMDYgMDM6MDcgIGpicG4KCiAgICogYWdlbnQvYXV0b19ubGlzdC5jOgoKICAgICAtIHJlbW92ZSAjaW5jbHVkZSAiLi4vc25tcGxpYi9zeXN0ZW0uaCIgd2hpY2ggbm8gbG9uZ2VyIGV4aXN0cyBhbmQKICAgICAgIGlzIGFwcGFyZW50bHkgdW5uZWNlc3NhcnkgYW55d2F5LgogICAKMjAwMi0wMi0wNiAwMjo1MSAgamJwbgoKICAgKiBhZ2VudC9taWJncm91cC9rZXJuZWxfc3Vub3M1LmM6CgogICAgIC0gcmVtb3ZlICNpbmNsdWRlICIuLi8uLi9zbm1wbGliL3N5c3RlbS5oIiB3aGljaCBubyBsb25nZXIgZXhpc3RzCiAgICAgICBhbmQgaXMgYXBwYXJlbnRseSB1bm5lY2Vzc2FyeSBhbnl3YXkuCiAgIAoyMDAyLTAyLTA1IDExOjQ0ICBoYXJkYWtlcgoKICAgKiBDT1BZSU5HIChWNC0yLXBhdGNoZXMuNyksIENPUFlJTkc6CgogICBjb3B5cmlnaHQgeWVhciB1cGRhdGUgZm9yIE5BSSBhbmQgQ2FtYnJpZGdlCiAgIAoyMDAyLTAyLTA1IDA5OjU0ICBoYXJkYWtlcgoKICAgKiBpbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLmluOgoKICAgcGVybCBmaXhlcwogICAKMjAwMi0wMi0wNSAwOTo1NCAgaGFyZGFrZXIKCiAgICogYWdlbnQvYWdlbnRfcmVnaXN0cnkuYyAsIGFnZW50L21pYmdyb3VwL1Jtb24vYWxhcm0uYyAsCiAgIGFnZW50L21pYmdyb3VwL3NtdXgvc211eC5jICwgaW5jbHVkZS9uZXQtc25tcC9zbm1wX2FwaS5oCiAgICwgc25tcGxpYi9zbm1wX2FwaS5jOgoKICAgUGF0Y2ggZnJvbSBIYXJyaWUgSGF6ZXdpbmtlbCB0byBtb3ZlIHRoZSBvaWR0cmVlX2NvbXBhcmUgZnVuY3Rpb24gdG8KICAgdGhlIG1haW4gbGlicmFyeS4KICAgCjIwMDItMDItMDUgMDk6NTIgIGhhcmRha2VyCgogICAqIGNvbmZpZ3VyZSAsIGNvbmZpZ3VyZS5pbiAsIGFnZW50L01ha2VmaWxlLmluOgoKICAgcGVybCBidWlsZCBmaXhlcy4KICAgCjIwMDItMDItMDUgMDc6MTkgIGhhcmRha2VyCgogICAqIGFnZW50L01ha2VmaWxlLmluOgoKICAgb3Bwcy4gIFJlbW92ZWQgZm9yY2VkIHBlcmwgZW1iZWRkaW5nCiAgIAoyMDAyLTAyLTA0IDE2OjIyICBoYXJkYWtlcgoKICAgKiBpbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oOgoKICAgdGhpcyBmaWxlIHNob3VsZG4ndCBiZSBjaGVja2VkIGluCiAgIAoyMDAyLTAyLTA0IDE2OjIyICBoYXJkYWtlcgoKICAgKiBNYWtlZmlsZS5pbiAsIGFjY29uZmlnLmggLCBjb25maWd1cmUgLAogICBjb25maWd1cmUuaW4gLCBhZ2VudC9NYWtlZmlsZS5pbiAsIGFnZW50L3NubXBfcGVybC5jCiAgICwgYWdlbnQvc25tcF9wZXJsLnBsICwgYWdlbnQvc25tcF92YXJzLmM6CgogICAtIFN1cHBvcnQgZm9yIGVtYmVkZGluZyBwZXJsIHN1YnJvdXRpbmVzIGludG8gdGhlIGFnZW50IHRvIGJlIGNhbGxlZAogICAgIGFzIGhhbmRsZXJzLgogICAtIE5ldyBjb25maWd1cmUgb3B0aW9uczoKICAgICAtLXdpdGgtcGVybC1tb2R1bGVzIGF0dGVtcHRzIHRvIGJ1aWxkIGNvbnRhaW5lZCBtb2R1bGVzIChwb29ybHkgY3VycmVudGx5KS4KICAgICAtLWVuYWJsZS1lbWJlZGRlZC1wZXJsIGFjdHVhbGx5IHNwZWNpZmllcyB0byBkbyBwZXJsIGVtYmVkZGluZwogICAgIHdpdGhpbiB0aGUgYWdlbnQuCiAgIAoyMDAyLTAyLTA0IDE2OjE2ICBoYXJkYWtlcgoKICAgKiBwZXJsLzogQVNOL0FTTi5wbSAsIEFTTi9BU04ueHMgLCBBU04vQ2hhbmdlcyAsCiAgIEFTTi9NQU5JRkVTVCAsIEFTTi9NYWtlZmlsZS5QTCAsIEFTTi90ZXN0LnBsICwKICAgYWdlbnQvQ2hhbmdlcyAsIGFnZW50L01BTklGRVNUICwgYWdlbnQvTWFrZWZpbGUuUEwgLAogICBhZ2VudC9hZ2VudC5wbSAsIGFnZW50L2FnZW50LnhzICwgYWdlbnQvdGVzdC5wbCAsCiAgIGFnZW50L3R5cGVtYXAgLCBkZWZhdWx0X3N0b3JlL0NoYW5nZXMgLAogICBkZWZhdWx0X3N0b3JlL01BTklGRVNUICwgZGVmYXVsdF9zdG9yZS9NYWtlZmlsZS5QTCAsCiAgIGRlZmF1bHRfc3RvcmUvZGVmYXVsdF9zdG9yZS5wbSAsCiAgIGRlZmF1bHRfc3RvcmUvZGVmYXVsdF9zdG9yZS54cyAsIGRlZmF1bHRfc3RvcmUvdGVzdC5wbCAsCiAgIGRlZmF1bHRfc3RvcmUvdHlwZW1hcDoKCiAgIEJlZ2lubmluZ3Mgb2YgbmV3IHBlcmwgbW9kdWxlcyBuZWVkZWQgdG8gaW1wbGVtZW50IGFuIFNOTVAgYWdlbnQgKG9yCiAgIGFnZW50eCBzdWJhZ2VudCkgaW5zaWRlIHBlcmwuCiAgICAgLSBub3QgY29tcGxldGUgeWV0LgogICAgIC0gbWF5IGNoYW5nZS4KICAgICAtIGJ1dCB3b3Jrcy4KICAgCjIwMDItMDItMDQgMDQ6MzkgIGpicG4KCiAgICogc25tcGxpYi9taWIuYzoKCiAgICAgLSBjb3JyZWN0IHByb2Nlc3NpbmcgZm9yIHRpbWV0aWNrcyB3aGVuIERTX0xJQl9OVU1FUklDX1RJTUVUSUNLUyBpcwogICAgICAgc2V0IChjb3JyZWN0cyBidWcgIzUxMTc5MywgcmVwb3J0ZWQgYnkgQW5vbnltb3VzKS4KICAgCjIwMDItMDItMDEgMDE6NTAgIGR0czEyCgogICAqIEZBUToKCiAgIENsYXJpZnkgdGhlIHByb2NlZHVyZSBmb3IgY29tcGlsaW5nIHdpdGggJ2NjJyByYXRoZXIgdGhhbiAnZ2NjJwogICAKMjAwMi0wMS0zMSAxNDo1OCAgaGFyZGFrZXIKCiAgICogaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oOgoKICAgcy9zbm1wbGliXC8vLzsKICAgCjIwMDItMDEtMzEgMDY6NTUgIGhhcmRha2VyCgogICAqIE1ha2VmaWxlLmluICwgYWdlbnQvaGVscGVycy9NYWtlZmlsZS5pbjoKCiAgIGZpeCBtYWtlIGNsZWFuIGFzIHJlcG9ydGVkIGJ5IEJyYWRsZXkgQm96YXJ0aC4KICAgCjIwMDItMDEtMzAgMDg6MDYgIGR0czEyCgogICAqIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL3ZlcnNpb25pbmZvLmM6CgogICBCcmluZyBNSUIgdmFyaWFibGUgdmVyc2lvblRhZyBpbnRvIGxpbmUgd2l0aCB0aGUgbmV3IDxuZXQtc25tcC92ZXJzaW9uLmg+IHVzYWdlCiAgIAoyMDAyLTAxLTI5IDE3OjUzICBoYXJkYWtlcgoKICAgKiB2ZXJzaW9uLmggLCBhZ2VudC9zbm1wZC5jICwKICAgYWdlbnQvbWliZ3JvdXAvdmVyc2lvbnRhZyAsIGFwcHMvc25tcHRyYW5zbGF0ZS5jICwKICAgYXBwcy9zbm1wdHJhcGQuYyAsIGFwcHMvc25tcG5ldHN0YXQvbWFpbi5jICwKICAgaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmggLCBpbmNsdWRlL3VjZC1zbm1wL3ZlcnNpb24uaCAsCiAgIHNubXBsaWIvTWFrZWZpbGUuaW4gLCBzbm1wbGliL3NubXBfcGFyc2VfYXJncy5jICwKICAgc25tcGxpYi9zbm1wX3ZlcnNpb24uYzoKCiAgIE1vdmVkIHZlcnNpb25pbmcgaW5mb3JtYXRpb24gZnJvbSB2ZXJzaW9uLmggdG86CiAgICAgLSBzbm1wbGliL3NubXBfdmVyc2lvbi5jOgogICAgICAgLSBkZWZpbmUgbmV0c25tcF9nZXRfdmVyc2lvbigpOwogICAgICAgLSBjcmVhdGUgYSBjb25zdCBjaGFyICpOZXRTbm1wVmVyc2lvbkluZm8KICAgICAtIGluY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oOgogICAgICAgLSBleHRlcm4gdGhlIGFib3ZlIGNoYXIgKgogICAgICAgLSBwcm90b3R5cGUgdGhlIGZ1bmN0aW9uCiAgICAgLSBpbmNsdWRlL3VjZC1zbm1wL3ZlcnNpb24uaDoKICAgICAgIC0gY3JlYXRlIGEgc3RhdGljIHZhcmlhYmxlICh0aGUgb2xkIHdheSkgYW5kIHNldCBpdCB0byBOZXRTbm1wVmVyc2lvbkluZm8KICAgCjIwMDItMDEtMjkgMTY6MDkgIGhhcmRha2VyCgogICAqIHRlc3RpbmcvOiBldmFsX3Rvb2xzLnNoICwgdGVzdHMvVDA0OXNubXB2M2luZm9ybSAsCiAgIHRlc3RzL1QwNTBzbm1wdjN0cmFwICwgdGVzdHMvVDA1MXNubXB2MmN0cmFwICwKICAgdGVzdHMvVDA1MnNubXB2MmNpbmZvcm0gLCB0ZXN0cy9UMDUzYWdlbnR2MXRyYXAgLAogICB0ZXN0cy9UMDU0YWdlbnR2MmN0cmFwICwgdGVzdHMvVDA1NWFnZW50djFtaW50cmFwICwKICAgdGVzdHMvVDA1NmFnZW50djJjbWludHJhcCAsIHRlc3RzL1QwNThhZ2VudGF1dGh0cmFwICwKICAgdGVzdHMvVDExM2FnZW50eHRyYXA6CgogICB0cmFwIHRlc3QgZml4ZXMgc28gdGhlIG1ham9yaXR5IG9mIHRoZSB0ZXN0cyBub3cgd29yay4KICAgCjIwMDItMDEtMjkgMTY6MDggIGhhcmRha2VyCgogICAqIE1ha2VmaWxlLmluOgoKICAgZG9uJ3QgZ2VuZXJhdGUgdWNkLXNubXAtY29uZmlnLmggYW55IGxvbmdlci4KICAgCjIwMDItMDEtMjkgMTU6MjMgIGhhcmRha2VyCgogICAqIGFjY29uZmlnLmggLCBjb25maWd1cmUgLCBjb25maWd1cmUuaW4gLAogICBpbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oICwKICAgaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbiAsCiAgIGluY2x1ZGUvbmV0LXNubXAvbWFjaGluZS9nZW5lcmljLmggLAogICBpbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9haXguaCAsIGluY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2JzZC5oCiAgICwgaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vYnNkaS5oICwKICAgaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vYnNkaTMuaCAsCiAgIGluY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2JzZGk0LmggLAogICBpbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9jeWd3aW4uaCAsCiAgIGluY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2Rhcndpbi5oICwKICAgaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vZnJlZWJzZC5oICwKICAgaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vZnJlZWJzZDIuaCAsCiAgIGluY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2ZyZWVic2QzLmggLAogICBpbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9mcmVlYnNkNC5oICwKICAgaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vZ2VuZXJpYy5oICwKICAgaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vaHB1eC5oICwKICAgaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vaXJpeC5oICwKICAgaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vbGludXguaCAsCiAgIGluY2x1ZGUvbmV0LXNubXAvc3lzdGVtL21pcHMuaCAsCiAgIGluY2x1ZGUvbmV0LXNubXAvc3lzdGVtL25ldGJzZC5oICwKICAgaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vb3BlbmJzZC5oICwKICAgaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc29sYXJpcy5oICwKICAgaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc29sYXJpczIuNi5oICwKICAgaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc29sYXJpczIuNy5oICwKICAgaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc29sYXJpczIuOC5oICwKICAgaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc3Vub3MuaCAsCiAgIGluY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3N2cjUuaCAsCiAgIGluY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3N5c3YuaCAsCiAgIGluY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3VsdHJpeDQuaDoKCiAgIG1vdmVkIHMvKi5oIGZpbGVzIHRvIGluY2x1ZGUvbmV0LXNubXAvc3lzdGVtLyouaAogICBtb3ZlZCBtL2dlbmVyaWMuaCBmaWxlcyB0byBpbmNsdWRlL25ldC1zbm1wL21hY2hpbmUvZ2VuZXJpYy5oCiAgIAoyMDAyLTAxLTI5IDA5OjI0ICBoYXJkYWtlcgoKICAgKiBhcHBzL3NubXB0cmFwZC5jOgoKICAgZml4IC1jIGFyZ3VtZW50IHBhcnNpbmcuCiAgIAoyMDAyLTAxLTI5IDA5OjEwICBoYXJkYWtlcgoKICAgKiB0ZXN0aW5nL2V2YWxfdG9vbHMuc2g6CgogICByZWZlcmVuY2UgaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaCBpbnN0ZWFkIG9mIGp1c3QgY29uZmlnLmgKICAgCjIwMDItMDEtMjkgMDk6MDUgIGhhcmRha2VyCgogICAqIHNubXBsaWIvc25tcHVzbS5jOgoKICAgYXR0ZW1wdCB0byBmaXggdGhlIHVua25vd24gZW5naW5laWQvdW5rbm93biB1c2VyIHByb2JsZW1zIG9uY2UgYW5kIGZvciBhbGwuCiAgIAoyMDAyLTAxLTI4IDIxOjExICBoYXJkYWtlcgoKICAgKiBjb25maWd1cmUgLCBjb25maWd1cmUuaW46CgogICB3aG9vcHMuICBNaXNzZWQgc29tZSAuaCBmaWxlIGNoZWNrcyBpbiBjb25maWd1cmUuICBUaGFua3MgUm9iZXJ0LgogICAKMjAwMi0wMS0yOCAyMTowMyAgaGFyZGFrZXIKCiAgICogbG9jYWwvY29udmVydGNvZGU6CgogICBtaW5vciBmaXguCiAgIAoyMDAyLTAxLTI4IDIxOjAyICBoYXJkYWtlcgoKICAgKiBsb2NhbC9jb252ZXJ0Y29kZToKCiAgIGFkZGVkIGNvZGUgY29udmVydCBzY3JpcHQgZm9yIHVjZC1zbm1wIC0+IG5ldC1zbm1wIGhlYWRlciBjb252ZXJzaW9uCiAgIAoyMDAyLTAxLTI4IDIwOjU5ICBoYXJkYWtlcgoKICAgKiBhZ2VudC9taWJncm91cC90YXJnZXQvc25tcFRhcmdldEFkZHJFbnRyeS5jICwKICAgYWdlbnQvbWliZ3JvdXAvdGFyZ2V0L3NubXBUYXJnZXRQYXJhbXNFbnRyeS5jICwKICAgYWdlbnQvbWliZ3JvdXAvdGFyZ2V0L3RhcmdldC5jICwKICAgYWdlbnQvbWliZ3JvdXAvdGFyZ2V0L3RhcmdldF9jb3VudGVycy5jICwKICAgYWdlbnQvbWliZ3JvdXAvdHVubmVsL3R1bm5lbC5jICwKICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZGlzay5jICwKICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZGxtb2QuYyAsCiAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL2V4dGVuc2libGUuYyAsCiAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL2xvYWRhdmUuYyAsCiAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL2xvZ21hdGNoLmMgLAogICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9tZW1vcnkuYyAsCiAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL21lbW9yeV9zb2xhcmlzMi5jICwKICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvcGFzcy5jICwKICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvcGFzc19wZXJzaXN0LmMgLAogICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9wcm9jLmMgLAogICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9wcm94eS5jICwKICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvcmVnaXN0cnkuYyAsCiAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL3ZlcnNpb25pbmZvLmMgLAogICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC92bXN0YXRfc29sYXJpczIuYyAsCiAgIGFwcHMvZW5jb2RlX2tleWNoYW5nZS5jICwgYXBwcy9ub3RpZmljYXRpb25fbG9nLmMgLAogICBhcHBzL3NubXBidWxrZ2V0LmMgLCBhcHBzL3NubXBidWxrd2Fsay5jICwKICAgYXBwcy9zbm1wZGVsdGEuYyAsIGFwcHMvc25tcGRmLmMgLCBhcHBzL3NubXBnZXQuYwogICAsIGFwcHMvc25tcGdldG5leHQuYyAsIGFwcHMvc25tcHNldC5jICwKICAgYXBwcy9zbm1wc3RhdHVzLmMgLCBhcHBzL3NubXB0YWJsZS5jICwgYXBwcy9zbm1wdGVzdC5jCiAgICwgYXBwcy9zbm1wdHJhbnNsYXRlLmMgLCBhcHBzL3NubXB0cmFwLmMgLAogICBhcHBzL3NubXB0cmFwZC5jICwgYXBwcy9zbm1wdHJhcGRfaGFuZGxlcnMuYyAsCiAgIGFwcHMvc25tcHRyYXBkX2xvZy5jICwgYXBwcy9zbm1wdXNtLmMgLCBhcHBzL3NubXB2YWNtLmMKICAgLCBhcHBzL3NubXB3YWxrLmMgLCBhcHBzL3NubXBuZXRzdGF0L01ha2VmaWxlLmluCiAgICwgYXBwcy9zbm1wbmV0c3RhdC9pZi5jICwgYXBwcy9zbm1wbmV0c3RhdC9pbmV0LmMKICAgLCBhcHBzL3NubXBuZXRzdGF0L2luZXQ2LmMgLCBhcHBzL3NubXBuZXRzdGF0L21haW4uYwogICAsIGFwcHMvc25tcG5ldHN0YXQvcm91dGUuYyAsIGluY2x1ZGUvbmV0LXNubXAvYXNuMS5oCiAgICwgaW5jbHVkZS9uZXQtc25tcC9jYWxsYmFjay5oICwKICAgaW5jbHVkZS9uZXQtc25tcC9kYXRhX2xpc3QuaCAsCiAgIGluY2x1ZGUvbmV0LXNubXAvZGVmYXVsdF9zdG9yZS5oICwgaW5jbHVkZS9uZXQtc25tcC9nZXRvcHQuaAogICAsIGluY2x1ZGUvbmV0LXNubXAvaW50NjQuaCAsIGluY2x1ZGUvbmV0LXNubXAva2V5dG9vbHMuaAogICAsIGluY2x1ZGUvbmV0LXNubXAvbGNkX3RpbWUuaCAsCiAgIGluY2x1ZGUvbmV0LXNubXAvbGlic25tcC5oICwgaW5jbHVkZS9uZXQtc25tcC9tZDUuaCAsCiAgIGluY2x1ZGUvbmV0LXNubXAvbWliLmggLCBpbmNsdWRlL25ldC1zbm1wL210X3N1cHBvcnQuaCAsCiAgIGluY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmggLAogICBpbmNsdWRlL25ldC1zbm1wL29pZF9hcnJheS5oICwgaW5jbHVkZS9uZXQtc25tcC9vaWRfc3Rhc2guaAogICAsIGluY2x1ZGUvbmV0LXNubXAvcGFyc2UuaCAsCiAgIGluY2x1ZGUvbmV0LXNubXAvcmVhZF9jb25maWcuaCAsIGluY2x1ZGUvbmV0LXNubXAvc2NhcGkuaAogICAsIGluY2x1ZGUvbmV0LXNubXAvc25tcC10Yy5oICwgaW5jbHVkZS9uZXQtc25tcC9zbm1wLmgKICAgLCBpbmNsdWRlL25ldC1zbm1wL3NubXBBQUw1UFZDRG9tYWluLmggLAogICBpbmNsdWRlL25ldC1zbm1wL3NubXBDYWxsYmFja0RvbWFpbi5oICwKICAgaW5jbHVkZS9uZXQtc25tcC9zbm1wSVBYRG9tYWluLmggLAogICBpbmNsdWRlL25ldC1zbm1wL3NubXBUQ1BEb21haW4uaCAsCiAgIGluY2x1ZGUvbmV0LXNubXAvc25tcFRDUElQdjZEb21haW4uaCAsCiAgIGluY2x1ZGUvbmV0LXNubXAvc25tcFVEUERvbWFpbi5oICwKICAgaW5jbHVkZS9uZXQtc25tcC9zbm1wVURQSVB2NkRvbWFpbi5oICwKICAgaW5jbHVkZS9uZXQtc25tcC9zbm1wVW5peERvbWFpbi5oICwKICAgaW5jbHVkZS9uZXQtc25tcC9zbm1wX2FsYXJtLmggLCBpbmNsdWRlL25ldC1zbm1wL3NubXBfYXBpLmgKICAgLCBpbmNsdWRlL25ldC1zbm1wL3NubXBfY2xpZW50LmggLAogICBpbmNsdWRlL25ldC1zbm1wL3NubXBfZGVidWcuaCAsIGluY2x1ZGUvbmV0LXNubXAvc25tcF9lbnVtLmgKICAgLCBpbmNsdWRlL25ldC1zbm1wL3NubXBfaW1wbC5oICwKICAgaW5jbHVkZS9uZXQtc25tcC9zbm1wX2xvY2tpbmcuaCAsCiAgIGluY2x1ZGUvbmV0LXNubXAvc25tcF9sb2dnaW5nLmggLAogICBpbmNsdWRlL25ldC1zbm1wL3NubXBfcGFyc2VfYXJncy5oICwKICAgaW5jbHVkZS9uZXQtc25tcC9zbm1wX3NlY21vZC5oICwKICAgaW5jbHVkZS9uZXQtc25tcC9zbm1wX3RyYW5zcG9ydC5oICwgaW5jbHVkZS9uZXQtc25tcC9zbm1wa3NtLmgKICAgLCBpbmNsdWRlL25ldC1zbm1wL3NubXB1c20uaCAsCiAgIGluY2x1ZGUvbmV0LXNubXAvc25tcHVzbV9pbml0LmggLCBpbmNsdWRlL25ldC1zbm1wL3NubXB2My5oCiAgICwgaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0uaCAsIGluY2x1ZGUvbmV0LXNubXAvdG9vbHMuaAogICAsIGluY2x1ZGUvbmV0LXNubXAvdHJhbnNmb3JtX29pZHMuaCAsCiAgIGluY2x1ZGUvbmV0LXNubXAvdmFjbS5oICwgaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zbm1wX2FnZW50LmgKICAgLCBtYW4vTWFrZWZpbGUuaW4gLCBzbm1wbGliL01ha2VmaWxlLmluICwKICAgc25tcGxpYi9hc24xLmMgLCBzbm1wbGliL2FzbjEuaCAsIHNubXBsaWIvY2FsbGJhY2suYwogICAsIHNubXBsaWIvY2FsbGJhY2suaCAsIHNubXBsaWIvZGF0YV9saXN0LmMgLAogICBzbm1wbGliL2RhdGFfbGlzdC5oICwgc25tcGxpYi9kZWZhdWx0X3N0b3JlLmMgLAogICBzbm1wbGliL2RlZmF1bHRfc3RvcmUuaCAsIHNubXBsaWIvZ2V0b3B0LmggLAogICBzbm1wbGliL2ludDY0LmMgLCBzbm1wbGliL2ludDY0LmggLCBzbm1wbGliL2tleXRvb2xzLmMKICAgLCBzbm1wbGliL2tleXRvb2xzLmggLCBzbm1wbGliL2xjZF90aW1lLmMgLAogICBzbm1wbGliL2xjZF90aW1lLmggLCBzbm1wbGliL2xpYnNubXAuaCAsIHNubXBsaWIvbWQ1LmMKICAgLCBzbm1wbGliL21kNS5oICwgc25tcGxpYi9taWIuYyAsIHNubXBsaWIvbWliLmgKICAgLCBzbm1wbGliL210X3N1cHBvcnQuYyAsIHNubXBsaWIvbXRfc3VwcG9ydC5oICwKICAgc25tcGxpYi9vaWRfYXJyYXkuYyAsIHNubXBsaWIvb2lkX2FycmF5LmggLAogICBzbm1wbGliL29pZF9zdGFzaC5jICwgc25tcGxpYi9vaWRfc3Rhc2guaCAsCiAgIHNubXBsaWIvcGFyc2UuYyAsIHNubXBsaWIvcGFyc2UuaCAsCiAgIHNubXBsaWIvcmVhZF9jb25maWcuYyAsIHNubXBsaWIvcmVhZF9jb25maWcuaCAsCiAgIHNubXBsaWIvc2NhcGkuYyAsIHNubXBsaWIvc2NhcGkuaCAsIHNubXBsaWIvc25tcC10Yy5jCiAgICwgc25tcGxpYi9zbm1wLXRjLmggLCBzbm1wbGliL3NubXAuYyAsCiAgIHNubXBsaWIvc25tcC5oICwgc25tcGxpYi9zbm1wQUFMNVBWQ0RvbWFpbi5jICwKICAgc25tcGxpYi9zbm1wQUFMNVBWQ0RvbWFpbi5oICwgc25tcGxpYi9zbm1wQ2FsbGJhY2tEb21haW4uYwogICAsIHNubXBsaWIvc25tcENhbGxiYWNrRG9tYWluLmggLCBzbm1wbGliL3NubXBJUFhEb21haW4uYwogICAsIHNubXBsaWIvc25tcElQWERvbWFpbi5oICwgc25tcGxpYi9zbm1wVENQRG9tYWluLmMKICAgLCBzbm1wbGliL3NubXBUQ1BEb21haW4uaCAsIHNubXBsaWIvc25tcFRDUElQdjZEb21haW4uYwogICAsIHNubXBsaWIvc25tcFRDUElQdjZEb21haW4uaCAsIHNubXBsaWIvc25tcFVEUERvbWFpbi5jCiAgICwgc25tcGxpYi9zbm1wVURQRG9tYWluLmggLCBzbm1wbGliL3NubXBVRFBJUHY2RG9tYWluLmMKICAgLCBzbm1wbGliL3NubXBVRFBJUHY2RG9tYWluLmggLCBzbm1wbGliL3NubXBVbml4RG9tYWluLmMKICAgLCBzbm1wbGliL3NubXBVbml4RG9tYWluLmggLCBzbm1wbGliL3NubXBfYWxhcm0uYwogICAsIHNubXBsaWIvc25tcF9hbGFybS5oICwgc25tcGxpYi9zbm1wX2FwaS5jICwKICAgc25tcGxpYi9zbm1wX2FwaS5oICwgc25tcGxpYi9zbm1wX2F1dGguYyAsCiAgIHNubXBsaWIvc25tcF9jbGllbnQuYyAsIHNubXBsaWIvc25tcF9jbGllbnQuaCAsCiAgIHNubXBsaWIvc25tcF9kZWJ1Zy5jICwgc25tcGxpYi9zbm1wX2RlYnVnLmggLAogICBzbm1wbGliL3NubXBfZW51bS5jICwgc25tcGxpYi9zbm1wX2VudW0uaCAsCiAgIHNubXBsaWIvc25tcF9pbXBsLmggLCBzbm1wbGliL3NubXBfbG9nZ2luZy5jICwKICAgc25tcGxpYi9zbm1wX2xvZ2dpbmcuaCAsIHNubXBsaWIvc25tcF9wYXJzZV9hcmdzLmMgLAogICBzbm1wbGliL3NubXBfcGFyc2VfYXJncy5oICwgc25tcGxpYi9zbm1wX3NlY21vZC5jICwKICAgc25tcGxpYi9zbm1wX3NlY21vZC5oICwgc25tcGxpYi9zbm1wX3RyYW5zcG9ydC5jICwKICAgc25tcGxpYi9zbm1wX3RyYW5zcG9ydC5oICwgc25tcGxpYi9zbm1wa3NtLmMgLAogICBzbm1wbGliL3NubXBrc20uaCAsIHNubXBsaWIvc25tcHVzbS5jICwKICAgc25tcGxpYi9zbm1wdXNtLmggLCBzbm1wbGliL3NubXB2My5jICwgc25tcGxpYi9zbm1wdjMuaAogICAsIHNubXBsaWIvc3lzdGVtLmMgLCBzbm1wbGliL3N5c3RlbS5oICwKICAgc25tcGxpYi90b29scy5jICwgc25tcGxpYi90b29scy5oICwKICAgc25tcGxpYi90cmFuc2Zvcm1fb2lkcy5oICwgc25tcGxpYi92YWNtLmMgLAogICBzbm1wbGliL3ZhY20uaCAsIHRlc3RpbmcvUlVOVEVTVFMgLAogICB0ZXN0aW5nL2V2YWxfdG9vbHMuc2ggLCBpbmNsdWRlL3VjZC1zbm1wL2FzbjEuaCAsCiAgIGluY2x1ZGUvdWNkLXNubXAvY2FsbGJhY2suaCAsIGluY2x1ZGUvdWNkLXNubXAvZGVmYXVsdF9zdG9yZS5oCiAgICwgaW5jbHVkZS91Y2Qtc25tcC9pbnQ2NC5oICwgaW5jbHVkZS91Y2Qtc25tcC9rZXl0b29scy5oCiAgICwgaW5jbHVkZS91Y2Qtc25tcC9taWIuaCAsIGluY2x1ZGUvdWNkLXNubXAvbWliaW5jbC5oCiAgICwgaW5jbHVkZS91Y2Qtc25tcC9wYXJzZS5oICwKICAgaW5jbHVkZS91Y2Qtc25tcC9yZWFkX2NvbmZpZy5oICwgaW5jbHVkZS91Y2Qtc25tcC9zY2FwaS5oCiAgICwgaW5jbHVkZS91Y2Qtc25tcC9zbm1wLXRjLmggLCBpbmNsdWRlL3VjZC1zbm1wL3NubXAuaAogICAsIGluY2x1ZGUvdWNkLXNubXAvc25tcF9hbGFybS5oICwKICAgaW5jbHVkZS91Y2Qtc25tcC9zbm1wX2FwaS5oICwgaW5jbHVkZS91Y2Qtc25tcC9zbm1wX2NsaWVudC5oCiAgICwgaW5jbHVkZS91Y2Qtc25tcC9zbm1wX2RlYnVnLmggLAogICBpbmNsdWRlL3VjZC1zbm1wL3NubXBfaW1wbC5oICwgaW5jbHVkZS91Y2Qtc25tcC9zbm1wX2xvZ2dpbmcuaAogICAsIGluY2x1ZGUvdWNkLXNubXAvc25tcF9wYXJzZV9hcmdzLmggLAogICBpbmNsdWRlL3VjZC1zbm1wL3NubXBfdmFycy5oICwgaW5jbHVkZS91Y2Qtc25tcC9zbm1wdXNtLmgKICAgLCBpbmNsdWRlL3VjZC1zbm1wL3NubXB2My5oICwgaW5jbHVkZS91Y2Qtc25tcC9zeXN0ZW0uaAogICAsIGluY2x1ZGUvdWNkLXNubXAvdG9vbHMuaCAsCiAgIGluY2x1ZGUvdWNkLXNubXAvdHJhbnNmb3JtX29pZHMuaCAsCiAgIGluY2x1ZGUvdWNkLXNubXAvdXRpbF9mdW5jcy5oOgoKICAgTWFqb3IgZmlsZSBtb3ZpbmcgYW5kIGVkaXRpbmcgb2YgaW5jbHVkZSBkaXJlY3RpdmVzLgogICAgIC0gZXNzZW50aWFsbHkgYWRkcyB1cCB0bzoKICAgICAgIC0gbXYgc25tcGxpYi8qLmggaW5jbHVkZS9uZXQtc25tcC8KICAgICAgIC0gbG9jYWwvY29udmVydGNvZGUgYGZpbmQgLiAtbmFtZSBcKi5jIFwqLmhgCiAgIAoyMDAyLTAxLTI4IDIwOjU0ICBoYXJkYWtlcgoKICAgKiBhZ2VudC86IGFnZW50X2hhbmRsZXIuYyAsIGFnZW50X2luZGV4LmMgLAogICBhZ2VudF9yZWFkX2NvbmZpZy5jICwgYWdlbnRfcmVnaXN0cnkuYyAsIGFnZW50X3RyYXAuYwogICAsIGF1dG9fbmxpc3QuYyAsIGtlcm5lbC5jICwgbWliX21vZHVsZXMuYyAsCiAgIHNubXBfYWdlbnQuYyAsIHNubXBfdmFycy5jICwgc25tcGQuYyAsCiAgIGhlbHBlcnMvYnVsa190b19uZXh0LmMgLCBoZWxwZXJzL2RlYnVnX2hhbmRsZXIuYyAsCiAgIGhlbHBlcnMvaW5zdGFuY2UuYyAsIGhlbHBlcnMvbXVsdGlwbGV4ZXIuYyAsCiAgIGhlbHBlcnMvbnVsbC5jICwgaGVscGVycy9vbGRfYXBpLmMgLCBoZWxwZXJzL3JlYWRfb25seS5jCiAgICwgaGVscGVycy9zZXJpYWxpemUuYyAsIGhlbHBlcnMvdGFibGUuYyAsCiAgIGhlbHBlcnMvdGFibGVfYXJyYXkuYyAsIGhlbHBlcnMvdGFibGVfZGF0YXNldC5jICwKICAgaGVscGVycy90YWJsZV9pdGVyYXRvci5jICwgbWliZ3JvdXAvaG9zdF9yZXMuaCAsCiAgIG1pYmdyb3VwL2tlcm5lbF9zdW5vczUuYyAsIG1pYmdyb3VwL21pYmluY2wuaCAsCiAgIG1pYmdyb3VwL3Rlc3RkZWxheWVkLmMgLCBtaWJncm91cC90ZXN0aGFuZGxlci5jICwKICAgbWliZ3JvdXAvdXRpbF9mdW5jcy5jICwgbWliZ3JvdXAvUm1vbi9hbGFybS5jICwKICAgbWliZ3JvdXAvUm1vbi9ldmVudC5jICwgbWliZ3JvdXAvUm1vbi9oaXN0b3J5LmMgLAogICBtaWJncm91cC9SbW9uL3Jvd3MuYyAsIG1pYmdyb3VwL2FnZW50eC9hZ2VudHhfY29uZmlnLmMgLAogICBtaWJncm91cC9hZ2VudHgvY2xpZW50LmMgLCBtaWJncm91cC9hZ2VudHgvbWFzdGVyLmMgLAogICBtaWJncm91cC9hZ2VudHgvbWFzdGVyX2FkbWluLmMgLAogICBtaWJncm91cC9hZ2VudHgvbWFzdGVyX3JlcXVlc3QuYyAsIG1pYmdyb3VwL2FnZW50eC9wcm90b2NvbC5jCiAgICwgbWliZ3JvdXAvYWdlbnR4L3N1YmFnZW50LmMgLAogICBtaWJncm91cC9kaXNtYW4vbXRlT2JqZWN0c1RhYmxlLmMgLAogICBtaWJncm91cC9kaXNtYW4vbXRlVHJpZ2dlckJvb2xlYW5UYWJsZS5jICwKICAgbWliZ3JvdXAvZGlzbWFuL210ZVRyaWdnZXJEZWx0YVRhYmxlLmMgLAogICBtaWJncm91cC9kaXNtYW4vbXRlVHJpZ2dlckV4aXN0ZW5jZVRhYmxlLmMgLAogICBtaWJncm91cC9kaXNtYW4vbXRlVHJpZ2dlclRhYmxlLmMgLAogICBtaWJncm91cC9kaXNtYW4vbXRlVHJpZ2dlclRocmVzaG9sZFRhYmxlLmMgLAogICBtaWJncm91cC9leGFtcGxlcy91Y2REZW1vUHVibGljLmMgLCBtaWJncm91cC9ob3N0L2hyX2Rpc2suYwogICAsIG1pYmdyb3VwL2hvc3QvaHJfZmlsZXN5cy5jICwKICAgbWliZ3JvdXAvaG9zdC9ocl9zdG9yYWdlLmMgLCBtaWJncm91cC9ob3N0L2hyX3N3aW5zdC5jCiAgICwgbWliZ3JvdXAvaG9zdC9ocl9zd3J1bi5jICwgbWliZ3JvdXAvaG9zdC9ocl9zeXN0ZW0uYwogICAsIG1pYmdyb3VwL21pYklJL2F0LmMgLCBtaWJncm91cC9taWJJSS9pY21wLmMgLAogICBtaWJncm91cC9taWJJSS9pbnRlcmZhY2VzLmMgLCBtaWJncm91cC9taWJJSS9pcC5jICwKICAgbWliZ3JvdXAvbWliSUkvaXBBZGRyLmMgLCBtaWJncm91cC9taWJJSS9pcHY2LmMgLAogICBtaWJncm91cC9taWJJSS9rZXJuZWxfbGludXguYyAsIG1pYmdyb3VwL21pYklJL3JvdXRlX3dyaXRlLmMKICAgLCBtaWJncm91cC9taWJJSS9zbm1wX21pYi5jICwKICAgbWliZ3JvdXAvbWliSUkvc3lzT1JUYWJsZS5jICwgbWliZ3JvdXAvbWliSUkvc3lzdGVtX21pYi5jCiAgICwgbWliZ3JvdXAvbWliSUkvdGNwLmMgLCBtaWJncm91cC9taWJJSS90Y3BUYWJsZS5jCiAgICwgbWliZ3JvdXAvbWliSUkvdWRwLmMgLCBtaWJncm91cC9taWJJSS91ZHBUYWJsZS5jCiAgICwgbWliZ3JvdXAvbWliSUkvdmFjbV9jb250ZXh0LmMgLAogICBtaWJncm91cC9taWJJSS92YWNtX3ZhcnMuYyAsIG1pYmdyb3VwL21pYklJL3ZhY21fdmFycy5oCiAgICwgbWliZ3JvdXAvbWliSUkvdmFyX3JvdXRlLmMgLCBtaWJncm91cC9taWJKSi9pY21wLmMKICAgLCBtaWJncm91cC9taWJKSi9pbnRlcmZhY2VzLmMgLCBtaWJncm91cC9taWJKSi9pcC5jCiAgICwgbWliZ3JvdXAvbWliSkovaXBBZGRyLmMgLCBtaWJncm91cC9taWJKSi9pcE1lZGlhLmMKICAgLCBtaWJncm91cC9taWJKSi9pcHY2LmMgLCBtaWJncm91cC9taWJKSi9rZXJuZWxfbGludXguYwogICAsIG1pYmdyb3VwL21pYkpKL3NubXBfbWliLmMgLCBtaWJncm91cC9taWJKSi9zeXNPUlRhYmxlLmMKICAgLCBtaWJncm91cC9taWJKSi9zeXN0ZW1fbWliLmMgLCBtaWJncm91cC9taWJKSi90Y3AuYwogICAsIG1pYmdyb3VwL21pYkpKL3RjcFRhYmxlLmMgLCBtaWJncm91cC9taWJKSi91ZHAuYyAsCiAgIG1pYmdyb3VwL21pYkpKL3VkcFRhYmxlLmMgLCBtaWJncm91cC9taWJKSi92YWNtX3ZhcnMuYyAsCiAgIG1pYmdyb3VwL21pc2MvZGxtb2QuYyAsCiAgIG1pYmdyb3VwL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5RmlsdGVyUHJvZmlsZVRhYmxlLmMgLAogICBtaWJncm91cC9ub3RpZmljYXRpb24vc25tcE5vdGlmeUZpbHRlclRhYmxlLmMgLAogICBtaWJncm91cC9ub3RpZmljYXRpb24vc25tcE5vdGlmeVRhYmxlLmMgLAogICBtaWJncm91cC9zbXV4L3NtdXguYyAsIG1pYmdyb3VwL3NtdXgvc25tcF9iZ3AuYyAsCiAgIG1pYmdyb3VwL3NtdXgvc25tcF9vc3BmLmMgLCBtaWJncm91cC9zbXV4L3NubXBfcmlwMi5jICwKICAgbWliZ3JvdXAvc25tcHYzL3NubXBFbmdpbmUuYyAsIG1pYmdyb3VwL3NubXB2My91c21Vc2VyLmMKICAgLCBtaWJncm91cC9zbm1wdjMvdXNtVXNlci5oOgoKICAgTWFqb3IgZmlsZSBtb3ZpbmcgYW5kIGVkaXRpbmcgb2YgaW5jbHVkZSBkaXJlY3RpdmVzLgogICAgIC0gZXNzZW50aWFsbHkgYWRkcyB1cCB0bzoKICAgICAgIC0gbXYgc25tcGxpYi8qLmggaW5jbHVkZS9uZXQtc25tcC8KICAgICAgIC0gbG9jYWwvY29udmVydGNvZGUgYGZpbmQgLiAtbmFtZSBcKi5jIFwqLmhgCiAgIAoyMDAyLTAxLTI4IDE5OjQyICBoYXJkYWtlcgoKICAgKiBpbmNsdWRlL3VjZC1zbm1wL3VjZC1zbm1wLWNvbmZpZy5oOgoKICAgcmVtb3ZlIFVDRF9DT01QQVQgZmxhZyBhbmQgREVGSU5FIElUIGluc3RlYWQKICAgCjIwMDItMDEtMjggMTk6NDEgIGhhcmRha2VyCgogICAqIGluY2x1ZGUvdWNkLXNubXAvdWNkLXNubXAtY29uZmlnLmg6CgogICByZW1vdmUgVUNEX0NPTVBBVCBmbGFnIGFuZCBkZWZpbmUgaXQgaW5zdGVhZAogICAKMjAwMi0wMS0yNSAxMToyOSAgaGFyZGFrZXIKCiAgICogc25tcGxpYi9taWIuYzoKCiAgIC0gcGFyc2Vfb25lX29pZF9pbmRleDoKICAgICAtIHVzZSBhbiB1bnNpZ25lZCBpbnQgZm9yIGxlbmd0aCdzIHB1bGxlZCBmcm9tIHRoZSBvaWQuCiAgICAgLSBNYWtlIHN1cmUgdGhleSdyZSBhbHdheXMgPCAxMjgKICAgCjIwMDItMDEtMjUgMDk6MTIgIGpicG4KCiAgICogYWdlbnQvbWliZ3JvdXAvc25tcHYzL3VzbVVzZXIuYzoKCiAgICAgLSBjbG9zZXIgYWRoZXJlbmNlIHRvIHN0YXRlIG1hY2hpbmVzIGRlc2NyaWJlZCBpbiBSRkMgMjU3NAogICAKMjAwMi0wMS0yNSAwOToxMCAgamJwbgoKICAgKiBzbm1wbGliL3NubXB1c20uYzoKCiAgICAgLSBjYXVzZSB1c21EZWNyeXB0aW9uRXJyb3IgcmVwb3J0cyB0byBiZSBzZW50IGluIGEgY291cGxlIG9mIGV4dHJhCiAgICAgICBjYXNlczogYmFkIHNhbHQgKGxlbmd0aCAhPSA4KSBhbmQgbGVuZ3RoIG9mIGVuY3J5cHRlZCBkYXRhIG5vdCBhCiAgICAgICBtdWx0aXBsZSBvZiA4IG9jdGV0cyAocGVyIFJGQyAyNTc0KS4KICAgCjIwMDItMDEtMjUgMDk6MDQgIGpicG4KCiAgICogYWdlbnQvc25tcF9hZ2VudC5jOgoKICAgICAtIGZvciB1bmtub3duIG1lc3NhZ2UgdHlwZXMsIGluY3JlbWVudCBzbm1wSW5BU05QYXJzZUVycnMgYW5kIGZhaWwKICAgICAgIGF0IHRoZSBwb3N0LXBhcnNlIHN0YWdlLgogICAKICAgICAtIGZvciBub3RpZmljYXRpb24gdHlwZXMsIGluY3JlbWVudCBzbm1wVW5rbm93blBEVUhhbmRsZXJzIGFuZCBiYWlsCiAgICAgICBvdXQgZWFybHkuCiAgIAoyMDAyLTAxLTI1IDA5OjAxICBqYnBuCgogICAqIHNubXBsaWIvc25tcF9hcGkuYzoKCiAgICAgLSBmb3IgdW5oYW5kbGVkIG1lc3NhZ2VzIChlLmcuIFJFU1BPTlNFIG1lc3NhZ2VzIHNlbnQgdG8gYWdlbnRzKSwKICAgICAgIGluY3JlbWVudCB0aGUgc25tcFVua25vd25QRFVIYW5kbGVycyBjb3VudGVyLgogICAKICAgICAtIHRyeSB0byBmcmVlIHNlY3VyaXR5U3RhdGVSZWZzIHdoZW4gcG9zdC1wYXJzZSBmYWlscy4KICAgCjIwMDItMDEtMjUgMDY6MjYgIGpicG4KCiAgICogYWdlbnQvbWliZ3JvdXAvbWliSUkvOiB2YWNtX3ZhcnMuYyAoVjQtMi1wYXRjaGVzLjYpLCB2YWNtX3ZhcnMuYzoKCiAgICAgLSBmaXggbWlub3IgcHJvYmxlbSB3aXRoIHN0b3JhZ2VUeXBlIChhbHdheXMgb2theSB0byBzZXQgdG8gY3VycmVudAogICAgICAgdmFsdWUpLgogICAKICAgICAtIGRvbid0IHJlc2V0IHNvbWUgdmFyaWFibGVzIHRvIG9sZCB2YWx1ZSB1bmxlc3Mgd2UgYWN0dWFsbHkgc2V0CiAgICAgICB0aGVtIGluIHRoZSBmaXJzdCBwbGFjZSEKICAgCjIwMDItMDEtMjUgMDU6MDAgIGpicG4KCiAgICogYWdlbnQvaGVscGVycy90YWJsZS5jOgoKICAgICAtIGRvbid0IHByaW50IG91dCBkZWJ1Z2dpbmcgaW5mbyBpbiBhIGZ1cnRoZXIgY2FzZSB3aGVyZSBpdCBoYXMgYmVlbgogICAgICAgZnJlZSgpZC4KICAgCiAgICAgLSBzZXQgdGhlIGV4Y2VwdGlvbiBub1N1Y2hJbnN0YW5jZSByYXRoZXIgdGhhbiBlcnJvciBub1N1Y2hOYW1lIHdoZW4KICAgICAgIHdlIGhhdmUgdGhlIGluY29ycmVjdCBudW1iZXIgb2YgaW5kaWNlcy4KICAgCjIwMDItMDEtMjUgMDQ6NTQgIGR0czEyCgogICAqIHNubXBsaWIvUkVBRE1FLm5ld2xpYjoKCiAgIGZpbGUgUkVBRE1FLm5ld2xpYiB3YXMgaW5pdGlhbGx5IGFkZGVkIG9uIGJyYW5jaCBORVctTElCUkFSWS1BUEkuCiAgIAoyMDAyLTAxLTI1IDA0OjQ5ICBqYnBuCgogICAqIGFnZW50L2hlbHBlcnMvdGFibGUuYzoKCiAgICAgLSBtb3ZlIGRlYnVnZ2luZyBvdXRwdXQgdG8gYmVmb3JlIHdoZXJlIChwb3RlbnRpYWxseSkgdGhlIGRhdGEgaXQgaXMKICAgICAgIHRyeWluZyB0byBwcmludCBnZXRzIGZyZWUoKWQuCiAgIAoyMDAyLTAxLTI1IDA0OjQwICBqYnBuCgogICAqIGFnZW50L3NubXBfYWdlbnQuYzoKCiAgICAgLSBrZWVwIGFzcC0+dmJjb3VudCBjb3JyZWN0IGluIGNyZWF0ZV9zdWJ0cmVlX2NhY2hlKCkgaWYgd2UgZHVtcAogICAgICAgdmFyYmluZHMgaW4gdGhlIEdFVE5FWFQgY2FzZSBiZWNhdXNlIG51bXZhcmJpbmRzID4gbm9uLXJlcGVhdGVycy4KICAgICAgIEZhaWxpbmcgdG8gZG8gdGhpcyB3aWxsIGNhdXNlIHByb2JsZW1zIGxhdGVyIHdoZW4geW91IGl0ZXJhdGUgb3ZlcgogICAgICAgMCAuLiBhc3AtPnZiY291bnQgLSAxIGluIHJlYXNzaWduX3JlcXVlc3RzKCkuCiAgIAoyMDAyLTAxLTI0IDE1OjExICByc3RvcnkKCiAgICogaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZS5oOgoKICAgdXBkYXRlIG1hY3JvcyB0byBwdXQgcGFyZW5zIGFyb3VuZCBwYXJhbWV0ZXJzIHdoZW4gdXNlZCwgaW4gY2FzZSBhIHBhcmFtZXRlciBpcyBhbiBleHByZXNzaW9uLCB3aGljaCBtaWdodCBtdWNrIGFib3V0IHdpdGggb3BlcmF0b3IgcHJlY2VkZW5jZSBydWxlcyBhbmQgY2F1c2UgdW5leHBlY3RlZCBhbmQgdW5kZXNpcmFibGUgYmVoYXZpb3IuCiAgIAoyMDAyLTAxLTI0IDExOjA3ICByc3RvcnkKCiAgICogbG9jYWwvbWliMmMuYXJyYXktdXNlci5jb25mOgoKICAgdHJ5IHRvIGZpbmQgJiBoYW5kbGUgZXh0ZXJuYWwgaW5kZXhlczsgdXNlIG5ldyBzdHlsZSBuZXQtc25tcCBpbmNsdWRlczsgYWRkCiAgIHJvd19jb3B5OyB1c2UgY29udGV4dCB0eXBlcyAmIGNhc3RzIGluIHBhcmFtZXRlcnMgaW5zdGVhZCBvZiBnZW5lcmljIHR5cGVzCiAgIHJlY2FzdCBpbnNpZGUgbWV0aG9kCiAgIAoyMDAyLTAxLTI0IDA2OjAzICBqYnBuCgogICAqIHNubXBsaWIvOiByZWFkX2NvbmZpZy5jIChWNC0yLXBhdGNoZXMuMyksIHJlYWRfY29uZmlnLmM6CgogICAgIC0gYXZvaWQgZm9ybWF0IHN0cmluZyBuYXN0aWVzIGluIHJlYWRfY29uZmlnX3N0b3JlKCkgd2hlbiB3cml0aW5nIHRvCiAgICAgICBmaWxlcyAoZXhwb3NlZCBlLmcuIGJ5IHRoZSBwZXJzaXN0ZW50IHN5c05hbWUuMCBzdHVmZiAtLSB0cnkKICAgICAgIHNubXBzZXQgaG9zdCBzeXNOYW1lLjAgcyAiJTA4eCIgLS0gb29wcykKICAgCjIwMDItMDEtMjQgMDQ6MzQgIGpicG4KCiAgICogc25tcGxpYi9zbm1wdXNtLmM6CgogICAgIC0gZG9uJ3QgYXV0b21hdGljYWxseSBhY2NlcHQgYSBtc2dVc2VyTmFtZSBvZiAiIiB3aGVuIHByb2Nlc3NpbmcKICAgICAgIGluY29taW5nIG1lc3NhZ2VzLgogICAKMjAwMi0wMS0yNCAwNDozMCAgamJwbgoKICAgKiBzbm1wbGliL3NubXBfYXBpLmM6CgogICAgIC0gYmlnZ2VyIGJ1ZmZlciBmb3IgbXNnQXV0aG9yaXRhdGl2ZUVuZ2luZUlEIGZpZWxkIHNpbmNlIGl0IGlzIG5vdAogICAgICAgbGltaXRlZCB0byAzMiBieXRlcyBsaWtlIFNubXBFbmdpbmVUQy4gIFJlYWxseSB0aGlzIG5lZWRzIHRvIGJlCiAgICAgICBhbGxvY2F0ZWQgYnkgdGhlIHNlY3VyaXR5IG1vZHVsZSBidXQgZm9yIG5vdyB3ZSdsbCBqdXN0IG1ha2UgaXQKICAgICAgIHR3aWNlIGFzIGJpZy4KICAgCjIwMDItMDEtMjQgMDM6MTkgIGR0czEyCgogICAqIGFnZW50L21pYmdyb3VwL2hvc3QvaHJfc3dydW4uYyAsIHNubXBsaWIvc25tcC10Yy5jOgoKICAgQUlYIHN1cHBvcnQgZm9yIHRoZSBIb3N0IFJlc291cmNlcyBtb2R1bGUuCiAgICAgIChUaGFua3MgdG8gQW5keSBIb29kKQogICAKMjAwMi0wMS0yMyAwODoyOCAgamJwbgoKICAgKiBhZ2VudC9taWJncm91cC9taWJJSS92YWNtX3ZhcnMuYzoKCiAgICAgLSBzZXQgdmlld1R5cGUgdG8gdGhlIERFRlZBTCBpbmNsdWRlZCgxKSBmb3IgbmV3IHJvd3MKICAgCjIwMDItMDEtMjMgMDc6NDAgIGpicG4KCiAgICogc25tcGxpYi9zbm1wX2FwaS5jOgoKICAgICAtIHNlY01vZGVsIG9mIDAgaXMgYSBwYXJzZSBlcnJvciBpbiBIZWFkZXJEYXRhCiAgIAoyMDAyLTAxLTIzIDA3OjIzICBqYnBuCgogICAqIHNubXBsaWIvc25tcF9hcGkuYzoKCiAgICAgLSBiZSBjYXJlZnVsIHRvIGZyZWUgc2VjdXJpdHlTdGF0ZVJlZiBpbiBhIGNvdXBsZSBvZiBlcnJvciBjYXNlcyBpbgogICAgICAgc25tcHYzX3BhcnNlIC0tIGZpeGVzIG1lbW9yeSBsZWFrcyB3aGVuIG1hbGZvcm1lZCBQRFVzIGFyZQogICAgICAgcmVjZWl2ZWQuCiAgIAoyMDAyLTAxLTIyIDE5OjQ5ICByc3RvcnkKCiAgICogc25tcGxpYi86IHNubXBfYXBpLmMgLCBzbm1wX2FwaS5oOgoKICAgY2hnIGFwaSBmb3Igc25tcF9vaWRfbmNvbXBhcmUsIGRvbid0IGltcGxlbWVudCBpdCB2aSBzbm1wX29pZF9jb21wYXJlCiAgIAoyMDAyLTAxLTIyIDE5OjQ2ICByc3RvcnkKCiAgICogc25tcGxpYi86IG9pZF9hcnJheS5jICwgb2lkX2FycmF5Lmg6CgogICBhZGQgR2V0X29pZF9kYXRhX2NvdW50KCk7IGFkZCBzdWJzZXQgc3VwcG9ydAogICAKMjAwMi0wMS0yMiAxOTo0NCAgcnN0b3J5CgogICAqIHNubXBsaWIvOiBtaWIuYyAsIG1pYi5oOgoKICAgYWRkIG5ldHNubXBfc3RyMm9pZCgpCiAgIAoyMDAyLTAxLTIyIDE5OjQxICByc3RvcnkKCiAgICogaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9hcnJheS5oOgoKICAgYWRkIHN1YnNldCBmdW5jdGlvbgogICAKMjAwMi0wMS0yMiAxOTo0MCAgcnN0b3J5CgogICAqIGFnZW50L2hlbHBlcnMvdGFibGVfYXJyYXkuYzoKCiAgIGFkZCBzdWJzZXQgZnVuY3Rpb247IGFkZCBwcmVsaW1pbmFyeSBsb2NraW5nIGNvZGU7IGFkZCB0YV9jaGVja19yb3dfc3RhdHVzCiAgIAoyMDAyLTAxLTIyIDA2OjMzICBqYnBuCgogICAqIGFnZW50L21pYmdyb3VwL21pYklJLzogdmFjbV92YXJzLmMgKFY0LTItcGF0Y2hlcy40KSwgdmFjbV92YXJzLmM6CgogICAgIC0gZml4IGJ1ZyBqdXN0IGludHJvZHVjZWQgd2hlcmUgc2V0dGluZyBhbiBleGlzdGluZyByb3cncyBzdGF0dXMgdG8KICAgICAgIGNyZWF0ZUFuZEdvKDQpIG9yIGNyZWF0ZUFuZFdhaXQoNSkgd291bGQgZGVsZXRlIHRoZSByb3cuCiAgIAoyMDAyLTAxLTIyIDA0OjU4ICBqYnBuCgogICAqIHNubXBsaWIvc25tcHVzbS5jOgoKICAgICAtIGNhdXNlIGEgcGFyc2UgZXJyb3IgaWYgd2UgcmVjZWl2ZSBVc21TZWN1cml0eVBhcmFtZXRlcnMgd2l0aCBhCiAgICAgICBtc2dVc2VyTmFtZSB0aGF0IGlzIGlsbGVnYWxseSBsb25nLgogICAKMjAwMi0wMS0yMiAwMzoxMCAgamJwbgoKICAgKiBhZ2VudC9taWJncm91cC90YXJnZXQvc25tcFRhcmdldFBhcmFtc0VudHJ5LmM6CgogICAgIC0gb29wcywgbGVmdCBvbGQgY29kZSBpbiAjaWYgMCBicmFuY2ggQUdBSU4uICBJIGFtIGdldHRpbmcgaW50byBiYWQKICAgICAgIGhhYml0cyEKICAgCjIwMDItMDEtMjIgMDM6MDggIGpicG4KCiAgICogYWdlbnQvbWliZ3JvdXAvbm90aWZpY2F0aW9uL3NubXBOb3RpZnlUYWJsZS5jOgoKICAgICAtIGZpeCBtZW1vcnkgbGVha3MgaW4gcm93IGNyZWF0aW9uL2Rlc3RydWN0aW9uCiAgIAogICAgIC0gbW9yZSBhZ2dyZXNzaXZlIHZhbGlkaXR5IGNoZWNraW5nIG9mIHNubXBOb3RpZnlUYWcsIHNubXBOb3RpZnlUeXBlCiAgICAgICBhbmQgc25tcE5vdGlmeVN0b3JhZ2VUeXBlLgogICAKICAgICAtIHBhc3NlcyA2LjUuMS4wIC0tIDYuNS44LjMKICAgCjIwMDItMDEtMjIgMDE6NDcgIGpicG4KCiAgICogYWdlbnQvbWliZ3JvdXAvdGFyZ2V0Lzogc25tcFRhcmdldEFkZHJFbnRyeS5jICwKICAgc25tcFRhcmdldFBhcmFtc0VudHJ5LmMgLCBzbm1wVGFyZ2V0UGFyYW1zRW50cnkuaDoKCiAgICAgLSBjb3JyZWN0IHN0YXRlIG1hY2hpbmVzIGZvciBzbm1wVGFyZ2V0UGFyYW1zVGFibGUKICAgCjIwMDItMDEtMjEgMjM6NDggIGpicG4KCiAgICogYWdlbnQvbWliZ3JvdXAvdGFyZ2V0L3NubXBUYXJnZXRBZGRyRW50cnkuYzoKCiAgICAgLSB0aWR5IHRoaW5ncyB1cCBhIGJpdCAoaGFkIGxlZnQgc29tZSBvbGQgY29kZSBzaXR0aW5nIGlmICNpZiAwCiAgICAgICBicmFuY2gpLgogICAKICAgICAtIHJlbWVtYmVyIHRvIGNsb3NlICh0YXJnZXQtPnNlc3MpIHdoZW4gd2UgbW92ZSBhIHRhcmdldCB0bwogICAgICAgbm90SW5TZXJ2aWNlKDIpLgogICAKMjAwMi0wMS0yMSAxMTowNCAgamJwbgoKICAgKiBhZ2VudC9taWJncm91cC90YXJnZXQvc25tcFRhcmdldEFkZHJFbnRyeS5jOgoKICAgICAtIGNvcnJlY3Qgc3RhdGUgbWFjaGluZXMgZm9yIHNubXBUYXJnZXRBZGRyVGFibGUKICAgCjIwMDItMDEtMjEgMDY6NDcgIGpicG4KCiAgICogYWdlbnQvbWliZ3JvdXAvdGFyZ2V0Lzogc25tcFRhcmdldEFkZHJFbnRyeS5jICwKICAgc25tcFRhcmdldEFkZHJFbnRyeS5oOgoKICAgICAtIGltcGxlbWVudCBzbm1wVGFyZ2V0U3BpbkxvY2sgb2JqZWN0CiAgIAoyMDAyLTAxLTE4IDA5OjE5ICBqYnBuCgogICAqIGFnZW50L21pYmdyb3VwL21pYklJL3ZhY21fdmFycy5jOgoKICAgICAtIGNvcnJlY3Qgc3RhdGUgbWFjaGluZSBmb3IgdmFjbVZpZXdUcmVlRmFtaWx5VGFibGUuICBQYXNzZXMgYWxsIHRoZQogICAgICAgcmVsZXZhbnQgU2lsdmVyY3JlZWsgVkFDTSB0ZXRzdCAoNS40LjAuMSAtLSA1LjQuOS43IGluY2x1c2l2ZSkuCiAgIAoyMDAyLTAxLTE4IDA4OjQ5ICBqYnBuCgogICAqIHNubXBsaWIvOiB2YWNtLmMgLCB2YWNtLmg6CgogICAgIC0gYWRkIGEgc3dpdGNoIHRvIHZhY21fZ2V0Vmlld0VudHJ5KCkgdG8gYWxsb3cgdGhlIG1hc2sgZW50cmllcwogICAgICAgdG8gYmUgaWdub3JlICh3aGljaCBpcyB3aGF0IHlvdSB3YW50IHdoZW4geW91IGFyZSBqdXN0IHVzaW5nIHRoaXMKICAgICAgIGZ1bmN0aW9uIHRvIGxvb2sgdXAgYW4gZW50cnkgaW4gdGhlIHRhYmxlIGluIG9yZGVyIHRvIHdyaXRlIHNvbWUgbmV3CiAgICAgICB2YWx1ZSB0byBvbmUgb2YgdGhlIGNvbHVtbmFyIG9iamVjdHMpLgogICAKMjAwMi0wMS0xOCAwNjowOSAgamJwbgoKICAgKiBhZ2VudC9taWJncm91cC9taWJJSS92YWNtX3ZhcnMuYzoKCiAgICAgLSBjb3JyZWN0IHN0YXRlIG1hY2hpbmUgZm9yIHZhY21BY2Nlc3NUYWJsZS4gIFBhc3NlcyBhbGwgdGhlIHJlbGV2YW50CiAgICAgICBTaWx2ZXJjcmVlayBWQUNNIHRldHN0ICg1LjMuMCAtLSA1LjMuOS43IGluY2x1c2l2ZSkuCiAgIAoyMDAyLTAxLTE4IDA0OjExICBqYnBuCgogICAqIGFnZW50L21pYmdyb3VwL21pYklJL3ZhY21fdmFycy5jOgoKICAgICAtIGNvcnJlY3Qgc3RhdGUgbWFjaGluZSBmb3IgdmFjbVNlY3VyaXR5VG9Hcm91cFRhYmxlIChpLmUuIGRvbid0CiAgICAgICBqdXN0IGRvIGV2ZXJ5dGhpbmcgaW4gdGhlIENPTU1JVCBwaGFzZSkuICBQYXNzZXMgYWxsIHRoZSByZWxldmFudAogICAgICAgU2lsdmVyY3JlZWsgVkFDTSB0ZXRzdCAoNS4yLjAgLS0gNS4yLjkuNyBpbmNsdXNpdmUpLgogICAKMjAwMi0wMS0xOCAwNDowOCAgamJwbgoKICAgKiBhZ2VudC9zbm1wX2FnZW50LmM6CgogICAgIC0gZG9uJ3Qgb3ZlcndyaXRlIGFuIGV4aXN0aW5nIGVycm9yIHN0YXR1cyBhZnRlciBDT01NSVQgb3IgVU5ETwogICAgICAgcGhhc2VzIHdpdGggY29tbWl0RmFpbGVkIG9yIHVuZG9GYWlsZWQgKGJ1dCBkbyB0cmFuc2xhdGUgZXJyb3IKICAgICAgIHJldHVybnMgZnJvbSB0aG9zZSBwaGFzZXMgaW50byB0aG9zZSBlcnJvcnMgd2hlbiB3ZSBkb24ndCBoYXZlIGFuCiAgICAgICBleGlzdGluZyBlcnJvciBzdGF0dXMpLgogICAKMjAwMi0wMS0xNyAwNjo1NyAgamJwbgoKICAgKiBzbm1wbGliL3NubXBfYXBpLmM6CgogICAgIC0gaGFuZGxlIGlsbGVnYWwgdmFsdWVzIG9mIG1zZ0lEIGNvcnJlY3RseSAoYnkgZHJvcHBpbmcgdGhlIHBhY2tldAogICAgICAgYW5kIGluY3JlbWVudGluZyBzbm1wSW5BU05QYXJzZUVycnMpCiAgIAoyMDAyLTAxLTE3IDA2OjM4ICBqYnBuCgogICAqIHNubXBsaWIvc25tcF9hcGkuYzoKCiAgICAgLSBoYW5kbGUgaWxsZWdhbCB2YWx1ZXMgb2YgbXNnTWF4U2l6ZSBjb3JyZWN0bHkgKGJ5IGRyb3BwaW5nIHRoZQogICAgICAgcGFja2V0IGFuZCBpbmNyZW1lbnRpbmcgc25tcEluQVNOUGFyc2VFcnJzKQogICAKMjAwMi0wMS0xNSAwODoxNyAgcnN0b3J5CgogICAqIGluY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaDoKCiAgIHRvcCBsZXZlbCBpbmNsdWRlIHdoaWNoIGluY2x1ZGVzIHVzZWZ1bCBzbm1wbGliIGhlYWRlcnMKICAgCjIwMDItMDEtMTUgMDg6MTUgIHJzdG9yeQoKICAgKiBpbmNsdWRlL3VjZC1zbm1wLzogYWdlbnRfaW5kZXguaCAsIGFnZW50X3JlYWRfY29uZmlnLmgKICAgLCBhZ2VudF9yZWdpc3RyeS5oICwgYWdlbnRfdHJhcC5oICwgYXNuMS5oICwKICAgYXV0b19ubGlzdC5oICwgY2FsbGJhY2suaCAsIGRlZmF1bHRfc3RvcmUuaCAsCiAgIGRzX2FnZW50LmggLCBoZWFkZXJfY29tcGxleC5oICwgaW50NjQuaCAsIGtleXRvb2xzLmgKICAgLCBtaWIuaCAsIG1pYl9tb2R1bGVfY29uZmlnLmggLCBtaWJpbmNsLmggLAogICBwYXJzZS5oICwgcmVhZF9jb25maWcuaCAsIHNjYXBpLmggLCBzbm1wLXRjLmggLAogICBzbm1wLmggLCBzbm1wX2FnZW50LmggLCBzbm1wX2FsYXJtLmggLCBzbm1wX2FwaS5oCiAgICwgc25tcF9jbGllbnQuaCAsIHNubXBfZGVidWcuaCAsIHNubXBfaW1wbC5oICwKICAgc25tcF9sb2dnaW5nLmggLCBzbm1wX3BhcnNlX2FyZ3MuaCAsIHNubXBfdmFycy5oICwKICAgc25tcHVzbS5oICwgc25tcHYzLmggLCBzdHJ1Y3QuaCAsIHN5c3RlbS5oICwKICAgdG9vbHMuaCAsIHRyYW5zZm9ybV9vaWRzLmggLCB1Y2Qtc25tcC1hZ2VudC1pbmNsdWRlcy5oCiAgICwgdWNkLXNubXAtY29uZmlnLmggLCB1Y2Qtc25tcC1pbmNsdWRlcy5oICwKICAgdXRpbF9mdW5jcy5oICwgdmFyX3N0cnVjdC5oICwgdmVyc2lvbi5oOgoKICAgY3JlYXRlIDQueCBoZWFkZXJzIHRoYXQgYXJlIHdyYXBwZXJzIHBvaW50aW5nIHRvIG5ldyBoZWFkZXJzCiAgIAoyMDAyLTAxLTE0IDE1OjA4ICByc3RvcnkKCiAgICogaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9hcnJheS5oOgoKICAgYWRkIFVzZXJSb3dBY3Rpb24gYW5kIHZvaWQgcG9pbnRlcgogICAKMjAwMi0wMS0xNCAxMzo0MSAgaGFyZGFrZXIKCiAgICogYWdlbnQvOiBtaWJncm91cC91Y2Qtc25tcC9sbVNlbnNvcnMuYyAsIE1ha2VmaWxlLmluOgoKICAgLT4gbmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaAogICAKMjAwMi0wMS0xNCAxMzo0MCAgaGFyZGFrZXIKCiAgICogaW5jbHVkZS9uZXQtc25tcC9hZ2VudC91Y2Qtc25tcC1hZ2VudC1pbmNsdWRlcy5oOgoKICAgcmVtb3ZlZAogICAKMjAwMi0wMS0xNCAxMzoyOSAgcnN0b3J5CgogICAqIGluY2x1ZGUvbmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaDoKCiAgIGNvcHkgdWNkLXNubXAtYWdlbnQtaW5jbHVkZXMuaCBhbmQgdXBkYXRlIHRvIG5ldC1zbm1wIHVzZSBuZXcgYWdlbnQgZGlyCiAgIAoyMDAyLTAxLTE0IDA4OjA0ICBoYXJkYWtlcgoKICAgKiBhZ2VudC9NYWtlZmlsZS5pbiAsIGFnZW50L2FnZW50X2NhbGxiYWNrcy5oICwKICAgYWdlbnQvYWdlbnRfaGFuZGxlci5jICwgYWdlbnQvYWdlbnRfaGFuZGxlci5oICwKICAgYWdlbnQvYWdlbnRfaW5kZXguYyAsIGFnZW50L2FnZW50X2luZGV4LmggLAogICBhZ2VudC9hZ2VudF9yZWFkX2NvbmZpZy5jICwgYWdlbnQvYWdlbnRfcmVhZF9jb25maWcuaCAsCiAgIGFnZW50L2FnZW50X3JlZ2lzdHJ5LmMgLCBhZ2VudC9hZ2VudF9yZWdpc3RyeS5oICwKICAgYWdlbnQvYWdlbnRfdHJhcC5jICwgYWdlbnQvYWdlbnRfdHJhcC5oICwKICAgYWdlbnQvYXV0b19ubGlzdC5jICwgYWdlbnQvYXV0b19ubGlzdC5oICwKICAgYWdlbnQvZHNfYWdlbnQuaCAsIGFnZW50L2tlcm5lbC5jICwgYWdlbnQvbWliX21vZHVsZXMuYwogICAsIGFnZW50L21pYl9tb2R1bGVzLmggLCBhZ2VudC9zbm1wX2FnZW50LmMgLAogICBhZ2VudC9zbm1wX2FnZW50LmggLCBhZ2VudC9zbm1wX3ZhcnMuYyAsCiAgIGFnZW50L3NubXBfdmFycy5oICwgYWdlbnQvc25tcGQuYyAsCiAgIGFnZW50L3VjZC1zbm1wLWFnZW50LWluY2x1ZGVzLmggLCBhZ2VudC92YXJfc3RydWN0LmggLAogICBhZ2VudC9oZWxwZXJzL01ha2VmaWxlLmluICwgYWdlbnQvaGVscGVycy9idWxrX3RvX25leHQuYwogICAsIGFnZW50L2hlbHBlcnMvZGVidWdfaGFuZGxlci5jICwKICAgYWdlbnQvaGVscGVycy9pbnN0YW5jZS5jICwgYWdlbnQvaGVscGVycy9tdWx0aXBsZXhlci5jICwKICAgYWdlbnQvaGVscGVycy9udWxsLmMgLCBhZ2VudC9oZWxwZXJzL29sZF9hcGkuYyAsCiAgIGFnZW50L2hlbHBlcnMvcmVhZF9vbmx5LmMgLCBhZ2VudC9oZWxwZXJzL3NlcmlhbGl6ZS5jICwKICAgYWdlbnQvaGVscGVycy90YWJsZS5jICwgYWdlbnQvaGVscGVycy90YWJsZV9hcnJheS5jICwKICAgYWdlbnQvaGVscGVycy90YWJsZV9pdGVyYXRvci5jICwgYWdlbnQvbWliZ3JvdXAvaG9zdF9yZXMuaAogICAsIGFnZW50L21pYmdyb3VwL21pYmluY2wuaCAsCiAgIGFnZW50L21pYmdyb3VwL3Rlc3RkZWxheWVkLmMgLCBhZ2VudC9taWJncm91cC90ZXN0aGFuZGxlci5jCiAgICwgYWdlbnQvbWliZ3JvdXAvYWdlbnR4L2FnZW50eF9jb25maWcuYyAsCiAgIGFnZW50L21pYmdyb3VwL2FnZW50eC9jbGllbnQuYyAsCiAgIGFnZW50L21pYmdyb3VwL2FnZW50eC9tYXN0ZXIuYyAsCiAgIGFnZW50L21pYmdyb3VwL2FnZW50eC9tYXN0ZXJfYWRtaW4uYyAsCiAgIGFnZW50L21pYmdyb3VwL2FnZW50eC9tYXN0ZXJfcmVxdWVzdC5jICwKICAgYWdlbnQvbWliZ3JvdXAvYWdlbnR4L3N1YmFnZW50LmMgLAogICBhZ2VudC9taWJncm91cC9kaXNtYW4vbXRlVHJpZ2dlclRhYmxlLmMgLAogICBhZ2VudC9taWJncm91cC9leGFtcGxlcy9leGFtcGxlLmMgLAogICBhZ2VudC9taWJncm91cC9leGFtcGxlcy91Y2REZW1vUHVibGljLmMgLAogICBhZ2VudC9taWJncm91cC9ob3N0L2hyX2Rpc2suYyAsIGFnZW50L21pYmdyb3VwL2hvc3QvaHJfcHJvYy5jCiAgICwgYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9zdG9yYWdlLmMgLAogICBhZ2VudC9taWJncm91cC9ob3N0L2hyX3N3cnVuLmMgLAogICBhZ2VudC9taWJncm91cC9ob3N0L2hyX3N5c3RlbS5jICwgYWdlbnQvbWliZ3JvdXAvbWliSUkvYXQuYwogICAsIGFnZW50L21pYmdyb3VwL21pYklJL2ljbXAuYyAsCiAgIGFnZW50L21pYmdyb3VwL21pYklJL2ludGVyZmFjZXMuYyAsIGFnZW50L21pYmdyb3VwL21pYklJL2lwLmMKICAgLCBhZ2VudC9taWJncm91cC9taWJJSS9pcEFkZHIuYyAsCiAgIGFnZW50L21pYmdyb3VwL21pYklJL2lwdjYuYyAsCiAgIGFnZW50L21pYmdyb3VwL21pYklJL3JvdXRlX3dyaXRlLmMgLAogICBhZ2VudC9taWJncm91cC9taWJJSS9zeXNPUlRhYmxlLmMgLAogICBhZ2VudC9taWJncm91cC9taWJJSS9zeXN0ZW1fbWliLmMgLAogICBhZ2VudC9taWJncm91cC9taWJJSS90Y3AuYyAsIGFnZW50L21pYmdyb3VwL21pYklJL3RjcFRhYmxlLmMKICAgLCBhZ2VudC9taWJncm91cC9taWJJSS91ZHAuYyAsCiAgIGFnZW50L21pYmdyb3VwL21pYklJL3VkcFRhYmxlLmMgLAogICBhZ2VudC9taWJncm91cC9taWJJSS92YWNtX2NvbnRleHQuYyAsCiAgIGFnZW50L21pYmdyb3VwL21pYklJL3ZhY21fdmFycy5jICwKICAgYWdlbnQvbWliZ3JvdXAvbWliSUkvdmFyX3JvdXRlLmMgLAogICBhZ2VudC9taWJncm91cC9taWJKSi9pY21wLmMgLAogICBhZ2VudC9taWJncm91cC9taWJKSi9pbnRlcmZhY2VzLmMgLCBhZ2VudC9taWJncm91cC9taWJKSi9pcC5jCiAgICwgYWdlbnQvbWliZ3JvdXAvbWliSkovaXBBZGRyLmMgLAogICBhZ2VudC9taWJncm91cC9taWJKSi9pcE1lZGlhLmMgLAogICBhZ2VudC9taWJncm91cC9taWJKSi9pcFJvdXRlLmMgLCBhZ2VudC9taWJncm91cC9taWJKSi9pcHY2LmMKICAgLCBhZ2VudC9taWJncm91cC9taWJKSi9zeXNPUlRhYmxlLmMgLAogICBhZ2VudC9taWJncm91cC9taWJKSi9zeXN0ZW1fbWliLmMgLCBhZ2VudC9taWJncm91cC9taWJKSi90Y3AuYwogICAsIGFnZW50L21pYmdyb3VwL21pYkpKL3RjcFRhYmxlLmMgLAogICBhZ2VudC9taWJncm91cC9taWJKSi91ZHAuYyAsIGFnZW50L21pYmdyb3VwL21pYkpKL3VkcFRhYmxlLmMKICAgLCBhZ2VudC9taWJncm91cC9taWJKSi92YWNtX3ZhcnMuYyAsCiAgIGFnZW50L21pYmdyb3VwL21pc2MvZGxtb2QuYyAsCiAgIGFnZW50L21pYmdyb3VwL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5VGFibGUuYyAsCiAgIGFnZW50L21pYmdyb3VwL3NtdXgvc211eC5jICwgYWdlbnQvbWliZ3JvdXAvc211eC9zbm1wX2JncC5jCiAgICwgYWdlbnQvbWliZ3JvdXAvc211eC9zbm1wX29zcGYuYyAsCiAgIGFnZW50L21pYmdyb3VwL3NtdXgvc25tcF9yaXAyLmMgLAogICBhZ2VudC9taWJncm91cC9zbm1wdjMvdXNtVXNlci5jICwKICAgYWdlbnQvbWliZ3JvdXAvdGFyZ2V0L3RhcmdldF9jb3VudGVycy5jICwKICAgYWdlbnQvbWliZ3JvdXAvdHVubmVsL3R1bm5lbC5jICwKICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZGlzay5jICwKICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZGlza2lvLmMgLAogICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9kbG1vZC5jICwKICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZXJyb3JtaWIuYyAsCiAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL2V4dGVuc2libGUuYyAsCiAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL2ZpbGUuYyAsCiAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL2xvYWRhdmUuYyAsCiAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL2xvZ21hdGNoLmMgLAogICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9tZW1vcnkuYyAsCiAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL21lbW9yeV9mcmVlYnNkMi5jICwKICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvbWVtb3J5X25ldGJzZDEuYyAsCiAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL21lbW9yeV9zb2xhcmlzMi5jICwKICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvcGFzcy5jICwKICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvcHJvYy5jICwKICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvdmVyc2lvbmluZm8uYyAsCiAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Ztc3RhdC5jICwKICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvdm1zdGF0X2JzZGk0LmMgLAogICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC92bXN0YXRfZnJlZWJzZDIuYyAsCiAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Ztc3RhdF9uZXRic2QxLmMgLAogICBhcHBzL25vdGlmaWNhdGlvbl9sb2cuaCAsIGFwcHMvc25tcHRyYXBkLmMgLAogICBpbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X2NhbGxiYWNrcy5oICwKICAgaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9oYW5kbGVyLmggLAogICBpbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X2luZGV4LmggLAogICBpbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X3JlYWRfY29uZmlnLmggLAogICBpbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X3JlZ2lzdHJ5LmggLAogICBpbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X3RyYXAuaCAsCiAgIGluY2x1ZGUvbmV0LXNubXAvYWdlbnQvYXV0b19ubGlzdC5oICwKICAgaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9kc19hZ2VudC5oICwKICAgaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlcy5oICwKICAgaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zbm1wX2FnZW50LmggLAogICBpbmNsdWRlL25ldC1zbm1wL2FnZW50L3NubXBfdmFycy5oICwKICAgaW5jbHVkZS9uZXQtc25tcC9hZ2VudC91Y2Qtc25tcC1hZ2VudC1pbmNsdWRlcy5oICwKICAgaW5jbHVkZS9uZXQtc25tcC9hZ2VudC92YXJfc3RydWN0Lmg6CgogICBtb3ZlZCB0aGUgL2FnZW50IGluc3RhbGxlZCBoZWFkZXJzIHRvIC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQKICAgCjIwMDItMDEtMTMgMDk6MjIgIGhhcmRha2VyCgogICAqIGFnZW50L01ha2VmaWxlLmluOgoKICAgYWRkIGEgY291cGxlIG1vcmUgaW5zdGFsbCBoZWFkZXJzLgogICAKMjAwMi0wMS0xMSAxNDoxOCAgaGFyZGFrZXIKCiAgICogYXBwcy86IE1ha2VmaWxlLmluICwgbm90aWZpY2F0aW9uX2xvZy5jOgoKICAgTW92ZSBhbGwgYWdlbnQvaGVscGVycy8qLmggZmlsZXMgdG8gaW5jbHVkZS9uZXQtc25tcC9hZ2VudC8gYW5kIGNoYW5nZQogICByZWZlcmVuY2VzLgogICAKMjAwMi0wMS0xMSAxNDoxMiAgaGFyZGFrZXIKCiAgICogYWdlbnQvTWFrZWZpbGUuaW4gLCBhZ2VudC9hZ2VudF9oYW5kbGVyLmMgLAogICBhZ2VudC9hZ2VudF9pbmRleC5jICwgYWdlbnQvYWdlbnRfcmVhZF9jb25maWcuYyAsCiAgIGFnZW50L2FnZW50X3JlZ2lzdHJ5LmMgLCBhZ2VudC9taWJfbW9kdWxlcy5jICwKICAgYWdlbnQvc25tcF92YXJzLmMgLCBhZ2VudC9zbm1wZC5jICwKICAgYWdlbnQvaGVscGVycy9hbGxfaGVscGVycy5oICwgYWdlbnQvaGVscGVycy9idWxrX3RvX25leHQuYwogICAsIGFnZW50L2hlbHBlcnMvYnVsa190b19uZXh0LmggLAogICBhZ2VudC9oZWxwZXJzL2RlYnVnX2hhbmRsZXIuYyAsIGFnZW50L2hlbHBlcnMvZGVidWdfaGFuZGxlci5oCiAgICwgYWdlbnQvaGVscGVycy9pbnN0YW5jZS5jICwgYWdlbnQvaGVscGVycy9pbnN0YW5jZS5oCiAgICwgYWdlbnQvaGVscGVycy9tdWx0aXBsZXhlci5jICwKICAgYWdlbnQvaGVscGVycy9tdWx0aXBsZXhlci5oICwgYWdlbnQvaGVscGVycy9udWxsLmMgLAogICBhZ2VudC9oZWxwZXJzL251bGwuaCAsIGFnZW50L2hlbHBlcnMvb2xkX2FwaS5jICwKICAgYWdlbnQvaGVscGVycy9vbGRfYXBpLmggLCBhZ2VudC9oZWxwZXJzL3JlYWRfb25seS5jICwKICAgYWdlbnQvaGVscGVycy9yZWFkX29ubHkuaCAsIGFnZW50L2hlbHBlcnMvc2VyaWFsaXplLmMgLAogICBhZ2VudC9oZWxwZXJzL3NlcmlhbGl6ZS5oICwgYWdlbnQvaGVscGVycy9zZXRfaGVscGVyLmggLAogICBhZ2VudC9oZWxwZXJzL3RhYmxlLmMgLCBhZ2VudC9oZWxwZXJzL3RhYmxlLmggLAogICBhZ2VudC9oZWxwZXJzL3RhYmxlX2FycmF5LmMgLCBhZ2VudC9oZWxwZXJzL3RhYmxlX2FycmF5LmgKICAgLCBhZ2VudC9oZWxwZXJzL3RhYmxlX2RhdGEuYyAsIGFnZW50L2hlbHBlcnMvdGFibGVfZGF0YS5oCiAgICwgYWdlbnQvaGVscGVycy90YWJsZV9kYXRhc2V0LmMgLAogICBhZ2VudC9oZWxwZXJzL3RhYmxlX2RhdGFzZXQuaCAsIGFnZW50L2hlbHBlcnMvdGFibGVfaXRlcmF0b3IuYwogICAsIGFnZW50L2hlbHBlcnMvdGFibGVfaXRlcmF0b3IuaCAsCiAgIGFnZW50L21pYmdyb3VwL01ha2VmaWxlLmluICwgYWdlbnQvbWliZ3JvdXAvdGVzdGRlbGF5ZWQuYwogICAsIGFnZW50L21pYmdyb3VwL3Rlc3RoYW5kbGVyLmMgLAogICBhZ2VudC9taWJncm91cC9hZ2VudC9uc1RyYW5zYWN0aW9uVGFibGUuYyAsCiAgIGFnZW50L21pYmdyb3VwL21pYklJL3ZhY21fY29udGV4dC5jICwKICAgYWdlbnQvbWliZ3JvdXAvdGFyZ2V0L3RhcmdldF9jb3VudGVycy5jICwKICAgaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hbGxfaGVscGVycy5oICwKICAgaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9idWxrX3RvX25leHQuaCAsCiAgIGluY2x1ZGUvbmV0LXNubXAvYWdlbnQvZGVidWdfaGFuZGxlci5oICwKICAgaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9pbnN0YW5jZS5oICwKICAgaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tdWx0aXBsZXhlci5oICwKICAgaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9udWxsLmggLAogICBpbmNsdWRlL25ldC1zbm1wL2FnZW50L29sZF9hcGkuaCAsCiAgIGluY2x1ZGUvbmV0LXNubXAvYWdlbnQvcmVhZF9vbmx5LmggLAogICBpbmNsdWRlL25ldC1zbm1wL2FnZW50L3NlcmlhbGl6ZS5oICwKICAgaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zZXRfaGVscGVyLmggLAogICBpbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlLmggLAogICBpbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2FycmF5LmggLAogICBpbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2RhdGEuaCAsCiAgIGluY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfZGF0YXNldC5oICwKICAgaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9pdGVyYXRvci5oOgoKICAgTW92ZSBhbGwgYWdlbnQvaGVscGVycy8qLmggZmlsZXMgdG8gaW5jbHVkZS9uZXQtc25tcC9hZ2VudC8gYW5kIGNoYW5nZQogICByZWZlcmVuY2VzLgogICAKMjAwMi0wMS0xMSAwODo0MSAgaGFyZGFrZXIKCiAgICogYWdlbnQvTWFrZWZpbGUuaW4gLCBhZ2VudC9oZWxwZXJzL01ha2VmaWxlLmluICwKICAgYWdlbnQvbWliZ3JvdXAvTWFrZWZpbGUuaW4gLCBhcHBzL01ha2VmaWxlLmluICwKICAgc25tcGxpYi9NYWtlZmlsZS5pbjoKCiAgIC0gQWRkIC1JJCh0b3Bfc3JjZGlyKS9pbmNsdWRlIHRvIGluY2x1ZGUgcGF0aC4KICAgLSBSZW5hbWUgMyBhZ2VudCBsaWJyYXJpZXMgZnJvbSBsaWJ1Y2QqIC0+IGxpYm5ldHNubXAqCiAgIAoyMDAyLTAxLTExIDA3OjU4ICBqYnBuCgogICAqIGFnZW50L21pYmdyb3VwL21pYklJL3ZhY21fdmFycy5jOgoKICAgICAtIGRvbid0IHVzZSB3aGlsZSh4LS0gPj0gMCkgbG9vcHMgZm9yIG5ldyB1bnNpZ25lZCBpbmRleCBjb21wb25lbnRzCiAgIAoyMDAyLTAxLTExIDA1OjI3ICBqYnBuCgogICAqIGFnZW50L21pYmdyb3VwL21pYklJL3ZhY21fdmFycy5jOgoKICAgICAtIGJlIGNhcmVmdWwgYWJvdXQgc2lnbmVkZXNzIG9mIGluZGV4IGNvbXBvbmVudHMgaW4gdGFibGVzCiAgIAoyMDAyLTAxLTEwIDEzOjEyICBuYmEKCiAgICogY29uZmlndXJlICwgY29uZmlndXJlLmluOgoKICAgQ3JlYXRlIHRoZSBpbmNsdWRlIGRpcmVjdG9yeSB3aGVuIGJ1aWxkaW5nIG91dHNpZGUgc291cmNlIGRpcmVjdG9yeQogICAKMjAwMi0wMS0xMCAwODoyMCAgamJwbgoKICAgKiBhZ2VudC9taWJncm91cC9taWJJSS9zeXNPUlRhYmxlLmM6CgogICAgIC0gdXNlIGFuIHVuc2lnbmVkIGxvbmcgbG9vcCB2YXJpYWJsZSBpbiB2YXJfc3lzT1JUYWJsZSgpIHRvIGF2b2lkCiAgICAgICBpbmNvcnJlY3QgbGV4aS1vcmRlcmluZyB3aGVuIGRvaW5nIHJlcXVlc3RzIGxpa2UgR0VUTkVYVAogICAgICAgc3lzT1JEZXNjci40Mjk0OTY3Mjk1LgogICAKICAgICAtIG1pbm9yIGRlYnVnZ2luZyBvdXRwdXQgY2hhbmdlcwogICAKMjAwMi0wMS0xMCAwNzozMiAgamJwbgoKICAgKiBhZ2VudC9zbm1wX2FnZW50LmM6CgogICAgIC0gZml4IG1pbm9yIG1lbW9yeSBsZWFrIGluIHJlYXNzaWduX3JlcXVlc3RzKCkKICAgCjIwMDItMDEtMTAgMDc6MjEgIGpicG4KCiAgICogYWdlbnQvc25tcF9hZ2VudC5jOgoKICAgICAtIHNldCB0eXBlIGZvciB1bmhhbmRsZWQgR0VUIHJlcXVlc3RzIGluIGhhbmRsZV9wZHUoKSB0byBiZQogICAgICAgbm9TdWNoSW5zdGFuY2UgcmF0aGVyIHRoYW4gbm9TdWNoT2JqZWN0IChub1N1Y2hPYmplY3QgZXhjZXB0aW9ucwogICAgICAgYXJlIGRldGVjdGVkIGFuZCBleHBsaWNpdGx5IHNldCBlYXJsaWVyKS4KICAgCjIwMDItMDEtMTAgMDU6NTIgIGpicG4KCiAgICogYWdlbnQvaGVscGVycy9vbGRfYXBpLmM6CgogICAgIC0gY29ycmVjdCB0eXBvIHRoYXQgbWVhbnQgZXJyb3IgcmV0dXJucyBmcm9tIG9sZC1hcGkgd3JpdGUgbWV0aG9kcwogICAgICAgd2VyZSBpZ25vcmVkLgogICAKMjAwMi0wMS0xMCAwNTowNCAgamJwbgoKICAgKiBzbm1wbGliL3NubXBfYXBpLmg6CgogICAgIC0gY2hhbmdlIHZhbHVlIG9mIFNUQVRfVEFSR0VUX1NUQVRTX0VORCBzbyB0aGF0IG1pYklJL3NubXBfbWliLmMgY2FuCiAgICAgICByZXR1cm4gdmFsdWVzIG9mIG1hbmRhdG9yeSBvYmplY3RzIHNubXBTaWxlbnREcm9wcyBhbmQKICAgICAgIHNubXBQcm94eURyb3BzLgogICAKMjAwMi0wMS0wOSAwODo1MCAgamJwbgoKICAgKiBzbm1wbGliL3NubXBfYXBpLmM6CgogICAgIC0gbWFrZSB1bmtub3duL2lsbGVnYWwgdmFyYmluZCB0eXBlcyBpbiB2MS92MmMgUERVcyBjYXVzZQogICAgICAgc25tcEluQVNOUGFyc2VFcnJzIHRvIGJlIGluY3JlbWVudGVkLgogICAKMjAwMi0wMS0wOSAwNzo1NSAgamJwbgoKICAgKiBhZ2VudC9oZWxwZXJzL2RlYnVnX2hhbmRsZXIuYzoKCiAgICAgLSBmaXggbWVtb3J5IGxlYWsKICAgCjIwMDItMDEtMDkgMDc6MzIgIGpicG4KCiAgICogYXBwcy9zbm1wYnVsa2dldC5jOgoKICAgICAtIGJyaW5nIGFwcC1zcGVjaWZpYyBvcHRpb25zIGluIGxpbmUgd2l0aCBzbm1wYnVsa3dhbGsgKC1DIHJhdGhlcgogICAgICAgdGhhbiAtQikKICAgCjIwMDItMDEtMDkgMDc6MzEgIGpicG4KCiAgICogYXBwcy9zbm1wYnVsa3dhbGsuYzoKCiAgICAgLSBmb3JtYXR0aW5nIGNoYW5nZSB0byB1c2FnZSBtZXNzYWdlCiAgIAoyMDAyLTAxLTA5IDA2OjM1ICBqYnBuCgogICAqIGFnZW50L2hlbHBlcnMvdGFibGVfaXRlcmF0b3IuYzoKCiAgICAgLSBmaXggbWlub3IgbWVtb3J5IGxlYWsKICAgCjIwMDItMDEtMDggMDg6NTUgIGpicG4KCiAgICogYXBwcy9zbm1wYnVsa3dhbGsuYzoKCiAgICAgLSBhZGQgb3B0aW9ucyBmcm9tIHNubXB3YWxrCiAgIAogICAgIC0gYWxsb3cgbm9uLXJlcGVhdGVycyBhbmQgbWF4LXJlcGVhdGVycyB0byBiZSBzZXQKICAgCiAgICAgLSBjaGFuZ2UgZGVmYXVsdCB2YWx1ZSBvZiBtYXgtcmVwZWF0ZXJzIHRvIGEgbG93ZXIgdmFsdWUgdG8gYXZvaWQKICAgICAgIHRpbWVvdXRzIHdpdGggc2xvd2VyIGFnZW50cwogICAKMjAwMi0wMS0wOCAwODoxNyAgamJwbgoKICAgKiBhZ2VudC9zbm1wX2FnZW50LmM6CgogICAgIC0gZG9uJ3QgdHJ5IHRvIG1hbGxvYygpIGEgemVyby1sZW5ndGggYnVmZmVyLCBpbiBjYXNlIHNvbWUgbWFsbG9jKClzCiAgICAgICBjb21wbGFpbi4KICAgCjIwMDItMDEtMDggMDg6MTUgIGpicG4KCiAgICogYWdlbnQvc25tcF9hZ2VudC5jOgoKICAgICAtIGhvcGVmdWxseSBmaW5hbCBHRVRCVUxLIGZpeCAtLSBwYXNzZXMgYWxsIFNpbHZlckNyZWVrJ3MgR0VUQlVMSwogICAgICAgdGVzdHMgKGluY2wuIG5lZ2F0aXZlIG5vbi1yZXBlYXRlcnMgYW5kIG1heC1yZXBlYXRlcnMpCiAgIAoyMDAyLTAxLTA4IDA2OjU5ICBqYnBuCgogICAqIGFnZW50Lzogc25tcF9hZ2VudC5jICwgc25tcF9hZ2VudC5oICwKICAgaGVscGVycy9idWxrX3RvX25leHQuYzoKCiAgICAgLSBHRVRCVUxLIGZpeCB0byBpZ25vcmUgdmFyYmluZHMgZm9yIHdoaWNoIHplcm8gcmVwZXRpdGlvbnMgYXJlCiAgICAgICBjYWxsZWQgZm9yCiAgIAogICAgIC0gZHJvcCBhc3AtPnN0YXJ0IGFuZCBhc3AtPmVuZCB3aGljaCBhcmUgaGFyZGx5IHVzZWQgYW5kIHdoaWNoIGdldAogICAgICAgaW4gdGhlIHdheSBvZiB0aGlzIHR5cGUgb2YgcHJvY2Vzc2luZwogICAKICAgICAtIGlnbm9yZSBuZWdhdGl2ZSByZXBldGl0aW9ucyBpbiBidWxrX3RvX25leHQgaGFuZGxlcgogICAKMjAwMi0wMS0wNyAwODozOSAgaGFyZGFrZXIKCiAgICogcGVybC9tYW5hZ2VyLy5jdnNpZ25vcmU6CgogICBpZ25vcmUgZmlsZQogICAKMjAwMi0wMS0wNyAwODozOCAgaGFyZGFrZXIKCiAgICogcGVybC9tYW5hZ2VyL0lOU1RBTEw6CgogICBQTkdHcmFwaCAtPiBHRDo6R3JhcGgKICAgCjIwMDItMDEtMDQgMTM6NDggIGhhcmRha2VyCgogICAqIE1ha2VmaWxlLmluOgoKICAgZml4IGRlcGVuZGVuY2llcwogICAKMjAwMi0wMS0wNCAxMzoyNCAgaGFyZGFrZXIKCiAgICogYWNjb25maWcuaCAsIGluY2x1ZGUvbmV0LXNubXAvYWNjb25maWcuaDoKCiAgIG1vdmUgYWNjb25maWcuaCBiYWNrIHRvIHRoZSB0b3AgZGlyIHdoZXJlIGl0cyBhcHBhcmVudGx5IHN1cHBvc2VkIHRvIGxpdmUuCiAgIAoyMDAyLTAxLTA0IDEzOjE4ICBoYXJkYWtlcgoKICAgKiBjb25maWd1cmUgLCBjb25maWd1cmUuaW46CgogICBtb3JlIHVjZC1zbm1wIC0+IG5ldC1zbm1wIHRyYW5zbGF0aW9ucy4gIHdhcm5pbmc6IGluY2x1ZGVzIHRoZSBkZWZhdWx0IHBlcnNpc3RlbnQgc3RvcmUuCiAgIAoyMDAyLTAxLTA0IDEzOjA0ICBoYXJkYWtlcgoKICAgKiBpbmNsdWRlLzogbmV0LXNubXAvLmN2c2lnbm9yZSAsIHVjZC1zbm1wLy5jdnNpZ25vcmU6CgogICBpZ25vcmUgZmlsZXMKICAgCjIwMDItMDEtMDQgMTM6MDIgIGhhcmRha2VyCgogICAqIC5jdnNpZ25vcmU6CgogICBpZ25vcmUgYnVpbHQgbmV0LXNubXAtY29uZmlnCiAgIAoyMDAyLTAxLTA0IDEzOjAwICBoYXJkYWtlcgoKICAgKiBhcHBzLzogTWFrZWZpbGUuaW4gLCBlbmNvZGVfa2V5Y2hhbmdlLmMgLAogICBub3RpZmljYXRpb25fbG9nLmMgLCBzbm1wYnVsa2dldC5jICwgc25tcGJ1bGt3YWxrLmMKICAgLCBzbm1wZGVsdGEuYyAsIHNubXBkZi5jICwgc25tcGdldC5jICwKICAgc25tcGdldG5leHQuYyAsIHNubXBzZXQuYyAsIHNubXBzdGF0dXMuYyAsCiAgIHNubXB0YWJsZS5jICwgc25tcHRlc3QuYyAsIHNubXB0cmFuc2xhdGUuYyAsCiAgIHNubXB0cmFwLmMgLCBzbm1wdHJhcGQuYyAsIHNubXB0cmFwZF9oYW5kbGVycy5jCiAgICwgc25tcHRyYXBkX2xvZy5jICwgc25tcHVzbS5jICwgc25tcHZhY20uYwogICAsIHNubXB3YWxrLmM6CgogICBiZWdpbm5pbmdzIG9mIHVjZC1zbm1wIC0+IG5ldC1zbm1wIHN0cnVjdHVyYWwgY2hhbmdlcy4KICAgICAtIGNvbmZpZy5oIC0+IGluY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKICAgICAgIC0gdGhpcywgb2YgY291cnNlLCBjaGFuZ2VzIGp1c3QgYWJvdXQgZXZlcnkgZmlsZSBpbiB0aGUgcmVwb3NpdG9yeS4KICAgCjIwMDItMDEtMDQgMTI6NTYgIGhhcmRha2VyCgogICAqIGFnZW50L21pYmdyb3VwL21pYkpKL2ljbXAuYyAsCiAgIGFnZW50L21pYmdyb3VwL21pYkpKL2ludGVyZmFjZXMuYyAsIGFnZW50L21pYmdyb3VwL21pYkpKL2lwLmMKICAgLCBhZ2VudC9taWJncm91cC9taWJKSi9pcEFkZHIuYyAsCiAgIGFnZW50L21pYmdyb3VwL21pYkpKL2lwTWVkaWEuYyAsCiAgIGFnZW50L21pYmdyb3VwL21pYkpKL2lwUm91dGUuYyAsIGFnZW50L21pYmdyb3VwL21pYkpKL2lwdjYuYwogICAsIGFnZW50L21pYmdyb3VwL21pYkpKL2tlcm5lbF9saW51eC5jICwKICAgYWdlbnQvbWliZ3JvdXAvbWliSkovc25tcF9taWIuYyAsCiAgIGFnZW50L21pYmdyb3VwL21pYkpKL3N5c09SVGFibGUuYyAsCiAgIGFnZW50L21pYmdyb3VwL21pYkpKL3N5c3RlbV9taWIuYyAsIGFnZW50L21pYmdyb3VwL21pYkpKL3RjcC5jCiAgICwgYWdlbnQvbWliZ3JvdXAvbWliSkovdGNwVGFibGUuYyAsCiAgIGFnZW50L21pYmdyb3VwL21pYkpKL3VkcC5jICwgYWdlbnQvbWliZ3JvdXAvbWliSkovdWRwVGFibGUuYwogICAsIGFnZW50L21pYmdyb3VwL21pYkpKL3ZhY21fdmFycy5jICwKICAgYWdlbnQvbWliZ3JvdXAvbm90aWZpY2F0aW9uL3NubXBOb3RpZnlGaWx0ZXJQcm9maWxlVGFibGUuYyAsCiAgIGFnZW50L21pYmdyb3VwL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5RmlsdGVyVGFibGUuYyAsCiAgIGFnZW50L21pYmdyb3VwL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5VGFibGUuYyAsCiAgIGFnZW50L21pYmdyb3VwL3NtdXgvc211eC5jICwgYWdlbnQvbWliZ3JvdXAvc211eC9zbm1wX2JncC5jCiAgICwgYWdlbnQvbWliZ3JvdXAvc211eC9zbm1wX29zcGYuYyAsCiAgIGFnZW50L21pYmdyb3VwL3NtdXgvc25tcF9yaXAyLmMgLAogICBhZ2VudC9taWJncm91cC9zbm1wdjMvc25tcEVuZ2luZS5jICwKICAgYWdlbnQvbWliZ3JvdXAvc25tcHYzL3NubXBNUERTdGF0cy5jICwKICAgYWdlbnQvbWliZ3JvdXAvc25tcHYzL3VzbVN0YXRzLmMgLAogICBhZ2VudC9taWJncm91cC9zbm1wdjMvdXNtVXNlci5jICwKICAgYWdlbnQvbWliZ3JvdXAvdGFyZ2V0L3NubXBUYXJnZXRBZGRyRW50cnkuYyAsCiAgIGFnZW50L21pYmdyb3VwL3RhcmdldC9zbm1wVGFyZ2V0UGFyYW1zRW50cnkuYyAsCiAgIGFnZW50L21pYmdyb3VwL3RhcmdldC90YXJnZXQuYyAsCiAgIGFnZW50L21pYmdyb3VwL3RhcmdldC90YXJnZXRfY291bnRlcnMuYyAsCiAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL2Rpc2suYyAsCiAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL2Rpc2tpby5jICwKICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZGxtb2QuYyAsCiAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL2Vycm9ybWliLmMgLAogICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9leHRlbnNpYmxlLmMgLAogICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9maWxlLmMgLAogICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9ocHV4LmMgLAogICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9sbVNlbnNvcnMuYyAsCiAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL2xvYWRhdmUuYyAsCiAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL2xvZ21hdGNoLmMgLAogICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9tZW1vcnkuYyAsCiAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL21lbW9yeV9mcmVlYnNkMi5jICwKICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvbWVtb3J5X25ldGJzZDEuYyAsCiAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL21lbW9yeV9zb2xhcmlzMi5jICwKICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvcGFzcy5jICwKICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvcGFzc19wZXJzaXN0LmMgLAogICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9wcm9jLmMgLAogICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9wcm94eS5jICwKICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvcmVnaXN0cnkuYyAsCiAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL3ZlcnNpb25pbmZvLmMgLAogICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC92bXN0YXQuYyAsCiAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Ztc3RhdF9ic2RpNC5jICwKICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvdm1zdGF0X2ZyZWVic2QyLmMgLAogICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC92bXN0YXRfbmV0YnNkMS5jICwKICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvdm1zdGF0X3NvbGFyaXMyLmMgLAogICBhcHBzL3NubXBuZXRzdGF0L01ha2VmaWxlLmluICwgYXBwcy9zbm1wbmV0c3RhdC9pZi5jICwKICAgYXBwcy9zbm1wbmV0c3RhdC9pbmV0LmMgLCBhcHBzL3NubXBuZXRzdGF0L2luZXQ2LmMgLAogICBhcHBzL3NubXBuZXRzdGF0L21haW4uYyAsIGFwcHMvc25tcG5ldHN0YXQvcm91dGUuYyAsCiAgIGFwcHMvc25tcG5ldHN0YXQvd2luc3R1Yi5jOgoKICAgYmVnaW5uaW5ncyBvZiB1Y2Qtc25tcCAtPiBuZXQtc25tcCBzdHJ1Y3R1cmFsIGNoYW5nZXMuCiAgICAgLSBjb25maWcuaCAtPiBpbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCiAgICAgICAtIHRoaXMsIG9mIGNvdXJzZSwgY2hhbmdlcyBqdXN0IGFib3V0IGV2ZXJ5IGZpbGUgaW4gdGhlIHJlcG9zaXRvcnkuCiAgIAoyMDAyLTAxLTA0IDEyOjUyICBoYXJkYWtlcgoKICAgKiBhZ2VudC9taWJncm91cC9taXNjL2RsbW9kLmMgLCBhZ2VudC9taWJncm91cC9taXNjL2lwZndhY2MuYwogICAsIGluY2x1ZGUvbmV0LXNubXAvYWNjb25maWcuaCAsCiAgIGluY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmguaW4gLAogICBpbmNsdWRlL3VjZC1zbm1wL1JFQURNRSAsIHNubXBsaWIvTWFrZWZpbGUuaW4gLAogICBzbm1wbGliL2FzbjEuYyAsIHNubXBsaWIvY2FsbGJhY2suYyAsCiAgIHNubXBsaWIvZGF0YV9saXN0LmMgLCBzbm1wbGliL2RlZmF1bHRfc3RvcmUuYyAsCiAgIHNubXBsaWIvaW50NjQuYyAsIHNubXBsaWIva2V5dG9vbHMuYyAsCiAgIHNubXBsaWIvbGNkX3RpbWUuYyAsIHNubXBsaWIvbWQ1LmMgLCBzbm1wbGliL21pYi5jCiAgICwgc25tcGxpYi9tdF9zdXBwb3J0LmMgLCBzbm1wbGliL29pZF9hcnJheS5jICwKICAgc25tcGxpYi9vaWRfc3Rhc2guYyAsIHNubXBsaWIvcGFyc2UuYyAsCiAgIHNubXBsaWIvcmVhZF9jb25maWcuYyAsIHNubXBsaWIvc2NhcGkuYyAsCiAgIHNubXBsaWIvc25tcC10Yy5jICwgc25tcGxpYi9zbm1wLmMgLAogICBzbm1wbGliL3NubXBBQUw1UFZDRG9tYWluLmMgLCBzbm1wbGliL3NubXBDYWxsYmFja0RvbWFpbi5jCiAgICwgc25tcGxpYi9zbm1wSVBYRG9tYWluLmMgLCBzbm1wbGliL3NubXBUQ1BEb21haW4uYwogICAsIHNubXBsaWIvc25tcFRDUElQdjZEb21haW4uYyAsIHNubXBsaWIvc25tcFVEUERvbWFpbi5jCiAgICwgc25tcGxpYi9zbm1wVURQSVB2NkRvbWFpbi5jICwgc25tcGxpYi9zbm1wVW5peERvbWFpbi5jCiAgICwgc25tcGxpYi9zbm1wX2FsYXJtLmMgLCBzbm1wbGliL3NubXBfYXBpLmMgLAogICBzbm1wbGliL3NubXBfYXV0aC5jICwgc25tcGxpYi9zbm1wX2NsaWVudC5jICwKICAgc25tcGxpYi9zbm1wX2RlYnVnLmMgLCBzbm1wbGliL3NubXBfZW51bS5jICwKICAgc25tcGxpYi9zbm1wX2xvZ2dpbmcuYyAsIHNubXBsaWIvc25tcF9wYXJzZV9hcmdzLmMgLAogICBzbm1wbGliL3NubXBfc2VjbW9kLmMgLCBzbm1wbGliL3NubXBfdHJhbnNwb3J0LmMgLAogICBzbm1wbGliL3NubXBrc20uYyAsIHNubXBsaWIvc25tcHVzbS5jICwgc25tcGxpYi9zbm1wdjMuYwogICAsIHNubXBsaWIvc25wcmludGYuYyAsIHNubXBsaWIvc3RydG9sLmMgLAogICBzbm1wbGliL3N0cnRvdWwuYyAsIHNubXBsaWIvc3lzdGVtLmMgLCBzbm1wbGliL3Rvb2xzLmMKICAgLCBzbm1wbGliL3ZhY20uYyAsIHRlc3RpbmcvVC5jICwKICAgdGVzdGluZy9ldGltZXRlc3QuYyAsIHRlc3Rpbmcva2V5bWFuYWdldGVzdC5jICwKICAgdGVzdGluZy9taXNjdGVzdC5jICwgdGVzdGluZy9zY2FwaXRlc3QuYzoKCiAgIGJlZ2lubmluZ3Mgb2YgdWNkLXNubXAgLT4gbmV0LXNubXAgc3RydWN0dXJhbCBjaGFuZ2VzLgogICAgIC0gY29uZmlnLmggLT4gaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAogICAgICAgLSB0aGlzLCBvZiBjb3Vyc2UsIGNoYW5nZXMganVzdCBhYm91dCBldmVyeSBmaWxlIGluIHRoZSByZXBvc2l0b3J5LgogICAKMjAwMi0wMS0wNCAxMjo0OSAgaGFyZGFrZXIKCiAgICogTWFrZWZpbGUuaW4gLCBNYWtlZmlsZS50b3AgLCBjb25maWd1cmUgLAogICBjb25maWd1cmUuaW4gLCBzZWRzY3JpcHQuaW4gLCBhZ2VudC9NYWtlZmlsZS5pbgogICAsIGFnZW50L2FnZW50X2hhbmRsZXIuYyAsIGFnZW50L2FnZW50X2luZGV4LmMgLAogICBhZ2VudC9hZ2VudF9yZWFkX2NvbmZpZy5jICwgYWdlbnQvYWdlbnRfcmVnaXN0cnkuYyAsCiAgIGFnZW50L2FnZW50X3RyYXAuYyAsIGFnZW50L2F1dG9fbmxpc3QuYyAsCiAgIGFnZW50L2tlcm5lbC5jICwgYWdlbnQvbWliX21vZHVsZXMuYyAsCiAgIGFnZW50L3NubXBfYWdlbnQuYyAsIGFnZW50L3NubXBfdmFycy5jICwKICAgYWdlbnQvc25tcGQuYyAsIGFnZW50L2hlbHBlcnMvTWFrZWZpbGUuaW4gLAogICBhZ2VudC9oZWxwZXJzL2J1bGtfdG9fbmV4dC5jICwgYWdlbnQvaGVscGVycy9kZWJ1Z19oYW5kbGVyLmMKICAgLCBhZ2VudC9oZWxwZXJzL2luc3RhbmNlLmMgLCBhZ2VudC9oZWxwZXJzL211bHRpcGxleGVyLmMKICAgLCBhZ2VudC9oZWxwZXJzL251bGwuYyAsIGFnZW50L2hlbHBlcnMvb2xkX2FwaS5jICwKICAgYWdlbnQvaGVscGVycy9yZWFkX29ubHkuYyAsIGFnZW50L2hlbHBlcnMvc2VyaWFsaXplLmMgLAogICBhZ2VudC9oZWxwZXJzL3RhYmxlLmMgLCBhZ2VudC9oZWxwZXJzL3RhYmxlX2FycmF5LmMgLAogICBhZ2VudC9oZWxwZXJzL3RhYmxlX2RhdGEuYyAsIGFnZW50L2hlbHBlcnMvdGFibGVfZGF0YXNldC5jCiAgICwgYWdlbnQvaGVscGVycy90YWJsZV9pdGVyYXRvci5jICwKICAgYWdlbnQvbWliZ3JvdXAvTWFrZWZpbGUuaW4gLCBhZ2VudC9taWJncm91cC9oZWFkZXJfY29tcGxleC5jCiAgICwgYWdlbnQvbWliZ3JvdXAva2VybmVsX3N1bm9zNS5jICwKICAgYWdlbnQvbWliZ3JvdXAvdGVzdGRlbGF5ZWQuYyAsIGFnZW50L21pYmdyb3VwL3Rlc3RoYW5kbGVyLmMKICAgLCBhZ2VudC9taWJncm91cC91dGlsX2Z1bmNzLmMgLAogICBhZ2VudC9taWJncm91cC9SbW9uL2FndXRpbC5jICwgYWdlbnQvbWliZ3JvdXAvUm1vbi9hbGFybS5jCiAgICwgYWdlbnQvbWliZ3JvdXAvUm1vbi9ldmVudC5jICwKICAgYWdlbnQvbWliZ3JvdXAvUm1vbi9oaXN0b3J5LmMgLCBhZ2VudC9taWJncm91cC9SbW9uL3Jvd3MuYwogICAsIGFnZW50L21pYmdyb3VwL1Jtb24vc3RhdGlzdGljcy5jICwKICAgYWdlbnQvbWliZ3JvdXAvYWdlbnQvbnNUcmFuc2FjdGlvblRhYmxlLmMgLAogICBhZ2VudC9taWJncm91cC9hZ2VudHgvYWdlbnR4X2NvbmZpZy5jICwKICAgYWdlbnQvbWliZ3JvdXAvYWdlbnR4L2NsaWVudC5jICwKICAgYWdlbnQvbWliZ3JvdXAvYWdlbnR4L21hc3Rlci5jICwKICAgYWdlbnQvbWliZ3JvdXAvYWdlbnR4L21hc3Rlcl9hZG1pbi5jICwKICAgYWdlbnQvbWliZ3JvdXAvYWdlbnR4L3Byb3RvY29sLmMgLAogICBhZ2VudC9taWJncm91cC9hZ2VudHgvc3ViYWdlbnQuYyAsCiAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9tdGVPYmplY3RzVGFibGUuYyAsCiAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9tdGVUcmlnZ2VyQm9vbGVhblRhYmxlLmMgLAogICBhZ2VudC9taWJncm91cC9kaXNtYW4vbXRlVHJpZ2dlckRlbHRhVGFibGUuYyAsCiAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9tdGVUcmlnZ2VyRXhpc3RlbmNlVGFibGUuYyAsCiAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9tdGVUcmlnZ2VyVGFibGUuYyAsCiAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9tdGVUcmlnZ2VyVGhyZXNob2xkVGFibGUuYyAsCiAgIGFnZW50L21pYmdyb3VwL2V4YW1wbGVzL2V4YW1wbGUuYyAsCiAgIGFnZW50L21pYmdyb3VwL2V4YW1wbGVzL3VjZERlbW9QdWJsaWMuYyAsCiAgIGFnZW50L21pYmdyb3VwL2hvc3QvaHJfZGV2aWNlLmMgLAogICBhZ2VudC9taWJncm91cC9ob3N0L2hyX2Rpc2suYyAsCiAgIGFnZW50L21pYmdyb3VwL2hvc3QvaHJfZmlsZXN5cy5jICwKICAgYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9uZXR3b3JrLmMgLAogICBhZ2VudC9taWJncm91cC9ob3N0L2hyX290aGVyLmMgLAogICBhZ2VudC9taWJncm91cC9ob3N0L2hyX3BhcnRpdGlvbi5jICwKICAgYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9wcmludC5jICwKICAgYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9wcm9jLmMgLAogICBhZ2VudC9taWJncm91cC9ob3N0L2hyX3N0b3JhZ2UuYyAsCiAgIGFnZW50L21pYmdyb3VwL2hvc3QvaHJfc3dpbnN0LmMgLAogICBhZ2VudC9taWJncm91cC9ob3N0L2hyX3N3cnVuLmMgLAogICBhZ2VudC9taWJncm91cC9ob3N0L2hyX3N5c3RlbS5jICwgYWdlbnQvbWliZ3JvdXAvbWliSUkvYXQuYwogICAsIGFnZW50L21pYmdyb3VwL21pYklJL2ljbXAuYyAsCiAgIGFnZW50L21pYmdyb3VwL21pYklJL2ludGVyZmFjZXMuYyAsIGFnZW50L21pYmdyb3VwL21pYklJL2lwLmMKICAgLCBhZ2VudC9taWJncm91cC9taWJJSS9pcEFkZHIuYyAsCiAgIGFnZW50L21pYmdyb3VwL21pYklJL2lwdjYuYyAsCiAgIGFnZW50L21pYmdyb3VwL21pYklJL2tlcm5lbF9saW51eC5jICwKICAgYWdlbnQvbWliZ3JvdXAvbWliSUkvbXRhX3NlbmRtYWlsLmMgLAogICBhZ2VudC9taWJncm91cC9taWJJSS9yb3V0ZV93cml0ZS5jICwKICAgYWdlbnQvbWliZ3JvdXAvbWliSUkvc25tcF9taWIuYyAsCiAgIGFnZW50L21pYmdyb3VwL21pYklJL3N5c09SVGFibGUuYyAsCiAgIGFnZW50L21pYmdyb3VwL21pYklJL3N5c3RlbV9taWIuYyAsCiAgIGFnZW50L21pYmdyb3VwL21pYklJL3RjcC5jICwgYWdlbnQvbWliZ3JvdXAvbWliSUkvdGNwVGFibGUuYwogICAsIGFnZW50L21pYmdyb3VwL21pYklJL3VkcC5jICwKICAgYWdlbnQvbWliZ3JvdXAvbWliSUkvdWRwVGFibGUuYyAsCiAgIGFnZW50L21pYmdyb3VwL21pYklJL3ZhY21fY29udGV4dC5jICwKICAgYWdlbnQvbWliZ3JvdXAvbWliSUkvdmFjbV92YXJzLmMgLAogICBhZ2VudC9taWJncm91cC9taWJJSS92YXJfcm91dGUuYzoKCiAgIGJlZ2lubmluZ3Mgb2YgdWNkLXNubXAgLT4gbmV0LXNubXAgc3RydWN0dXJhbCBjaGFuZ2VzLgogICAgIC0gY29uZmlnLmggLT4gaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAogICAgICAgLSB0aGlzLCBvZiBjb3Vyc2UsIGNoYW5nZXMganVzdCBhYm91dCBldmVyeSBmaWxlIGluIHRoZSByZXBvc2l0b3J5LgogICAKMjAwMi0wMS0wNCAxMjo0NyAgaGFyZGFrZXIKCiAgICogYWNjb25maWcuaCAsIGNvbmZpZy5oLmluOgoKICAgcmVtb3ZlZCB1bmVlZGVkIG9sZGVyIGZpbGVzCiAgIAoyMDAyLTAxLTAzIDE0OjE1ICBoYXJkYWtlcgoKICAgKiBwZXJsL1NOTVAvU05NUC54czoKCiAgIHBhdGNoICM0OTIwNzIgdG8gbWFpbiBicmFuY2gKICAgCjIwMDItMDEtMDMgMTQ6MDAgIGhhcmRha2VyCgogICAqIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL2Rpc2suYzoKCiAgIGNoZWNrIHJlc3VsdHMgb2Ygc2V0bW50ZW50IGJlZm9yZSB1c2luZyB0aGVtLgogICAKMjAwMi0wMS0wMyAxMzo1NyAgaGFyZGFrZXIKCiAgICogYXBwcy9zbm1wbmV0c3RhdC9pZi5jOgoKICAgY2hlY2sgYWdhaW5zdCBncm93aW5nIHNlcnZlciByZXR1cm5zIGFzIHBvaW50ZWQgb3V0IGJ5IGJ1ZyAjNDk4OTU2CiAgIAoyMDAyLTAxLTAzIDExOjQwICBoYXJkYWtlcgoKICAgKiBwZXJsL21hbmFnZXIvZGlzcGxheXRhYmxlLnBtOgoKICAgUE5HR3JhcGggLT4gR0RHcmFwaAogICAKMjAwMi0wMS0wMyAxMTozOSAgaGFyZGFrZXIKCiAgICogYWdlbnQvbWliZ3JvdXAvdmVyc2lvbnRhZzoKCiAgIGNoYW5nZSBleHBvcnQgbmFtZSB0byAibmV0LXNubXAiIGZyb20gInVjZC1zbm1wIgogICAKMjAwMi0wMS0wMyAxMTozOSAgaGFyZGFrZXIKCiAgICogYWdlbnQvbWliZ3JvdXAvdGVzdGhhbmRsZXIuYyAsCiAgIGxvY2FsL21pYjJjLmNyZWF0ZS1kYXRhc2V0LmNvbmYgLCBsb2NhbC9taWIyYy5pdGVyYXRlLmNvbmY6CgogICBtYWtlIHVzZSBvZiB0aGUgbmV3IG11bHRpLWFkZCBmdW5jdGlvbnMuCiAgIAoyMDAyLTAxLTAzIDExOjM4ICBoYXJkYWtlcgoKICAgKiBhZ2VudC9oZWxwZXJzLzogdGFibGVfZGF0YXNldC5jICwgdGFibGVfZGF0YXNldC5oOgoKICAgYWRkIG11bHRpcGxlIGRlZmF1bHQgcm93IGNvbHVtbiBkZWZpbml0aW9ucyB1c2luZyBvbmUgZnVuY3Rpb24gY2FsbCAodmFyYXJncykuCiAgIAoyMDAyLTAxLTAzIDExOjM4ICBoYXJkYWtlcgoKICAgKiBhZ2VudC9oZWxwZXJzLzogdGFibGUuYyAsIHRhYmxlLmg6CgogICBhZGQgbXVsdGlwbGUgaW5kZXhlcyB1c2luZyBvbmUgZnVuY3Rpb24gY2FsbCAodmFyYXJncykuCiAgIAoyMDAyLTAxLTAzIDExOjM3ICBoYXJkYWtlcgoKICAgKiBhZ2VudC9zbm1wX3ZhcnMuaDoKCiAgIHJlbW92ZSBubyBsb25nZXIgZGVmaW5lZCB2NCBhcGkgZnVuY3Rpb25zIChnZXRTdGF0UHRyIG5vIGxlc3MpLgogICAKMjAwMi0wMS0wMyAxMTozNyAgaGFyZGFrZXIKCiAgICogYWdlbnQvc25tcF9hZ2VudC5oOgoKICAgcmVtb3ZlIG5vIGxvbmdlciBkZWZpbmVkIHY0IGFwaSBmdW5jdGlvbnMuCiAgIAoyMDAyLTAxLTAzIDEwOjMxICBoYXJkYWtlcgoKICAgKiBzbm1wbGliLzogTWFrZWZpbGUuaW4gLCBvaWRfc3Rhc2guYyAsIG9pZF9zdGFzaC5oOgoKICAgZGF0YSBzdGFzaGluZyBiYXNlZCBvbiBhbiBvaWQgY2FjaGluZyB0cmVlLgogICAKMjAwMS0xMi0yNiAxNTozNiAgaGFyZGFrZXIKCiAgICogcGVybC9tYW5hZ2VyLzogSU5TVEFMTCAsIE1ha2VmaWxlLlBMICwgbWFuYWdlci5wbToKCiAgIHVwZGF0ZSB0byBtYWtlIGl0IGEgYml0IGVhc2llciB0byBpbnN0YWxsIChpbmNsdWRpbmcgYSBNYWtlZmlsZSBmb3IKICAgYXV0b21hdGVkIGluc3RhbGxhdGlvbikuCiAgIAoyMDAxLTEyLTI2IDEzOjIwICBoYXJkYWtlcgoKICAgKiBwZXJsL21hbmFnZXIvOiBJTlNUQUxMICwgZGlzcGxheXRhYmxlLnBtICwgZ2V0VmFsdWVzLnBtCiAgICwgZ3JlZW4uZ2lmICwgbWFuYWdlci5wbSAsIHJlZC5naWYgLCBzZXR1cGF1dGgKICAgLCBzZXR1cGRiICwgc2V0dXB1c2VyICwgc25tcHRvc3FsOgoKICAgbW92aW5nIG1hbmFnZXIgdG8gcGVybC9tYW5hZ2VyCiAgIAoyMDAxLTEyLTI0IDE2OjEwICBoYXJkYWtlcgoKICAgKiBGQVEgLCBzZWRzY3JpcHQuaW4gLCB2ZXJzaW9uLmggLAogICBwZXJsL1NOTVAvU05NUC5wbToKCiAgIC0gKHZlcnNpb24uaCBzZWRzY3JpcHQuaW4pOiB2ZXJzaW9uIHRhZyAoIDUuMC5wcmUxICkKICAgCjIwMDEtMTItMjQgMTY6MDQgIGhhcmRha2VyCgogICAqIGxvY2FsLzogTWFrZWZpbGUuaW4gLCBtaWIyYyAsIG1pYjJjLmNvbmY6CgogICBVcGRhdGUgdG8gbWFrZSBwZW9wbGUgdW5kZXJzdGFuZCB0aGF0IGl0J3Mgbm90IGZpbmlzaGVkIGFuZCB5b3UgbXVzdAogICByZWZlcmVuY2UgYSBwYXJ0aWN1bGFyIGNvbmZpZ3VyYXRpb24gZmlsZSBhdCB0aGlzIHBvaW50LgogICAKMjAwMS0xMi0yNCAxNTo1MSAgaGFyZGFrZXIKCiAgICogRkFRICwgc2Vkc2NyaXB0LmluICwgdmVyc2lvbi5oICwKICAgcGVybC9TTk1QL1NOTVAucG06CgogICAtICh2ZXJzaW9uLmggc2Vkc2NyaXB0LmluKTogdmVyc2lvbiB0YWcgKCA1LjAubm90LmV2ZW4uY2xvc2UgKQogICAKMjAwMS0xMi0yNCAxNTo1MCAgaGFyZGFrZXIKCiAgICogUkVBRE1FOgoKICAgbW9yZSBjb21tZW50cy4KICAgCjIwMDEtMTItMjQgMTU6NDEgIGhhcmRha2VyCgogICAqIEZBUSAsIFJFQURNRToKCiAgIG1vcmUgdXBkYXRlcwogICAKMjAwMS0xMi0yNCAxNToyMCAgaGFyZGFrZXIKCiAgICogYWdlbnQvaGVscGVycy9vbGRfYXBpLmM6CgogICBkb3h5Z2VuIGNvbW1lbnRzCiAgIAoyMDAxLTEyLTI0IDE1OjIwICBoYXJkYWtlcgoKICAgKiBORVdTICwgUkVBRE1FOgoKICAgNS4wIGNvbW1lbnQgdXBkYXRlcy4KICAgCjIwMDEtMTItMjQgMTU6MTkgIGhhcmRha2VyCgogICAqIGFnZW50L2FnZW50X2hhbmRsZXIuYzoKCiAgIGRveHlnZW4gY29tbWVudHMgb24gYSBmZXcgZnVuY3Rpb25zLgogICAKMjAwMS0xMi0yNCAxNTowOSAgaGFyZGFrZXIKCiAgICogYWdlbnQvaGVscGVycy90YWJsZV9pdGVyYXRvci5jOgoKICAgbWVtb3J5IGxlYWtzLgogICAKMjAwMS0xMi0yNCAxMDowNiAgaGFyZGFrZXIKCiAgICogYWdlbnQvTWFrZWZpbGUuaW46CgogICByZW1vdmUgZGVwZW5kZW5jaWVzIGZvciBub24tZXhpc3RlbnQgbW9kdWxlcwogICAKMjAwMS0xMi0yMyAxNTo0NyAgaGFyZGFrZXIKCiAgICogbmV0LXNubXAtY29uZmlnOgoKICAgb3Bwcy4gIERvbid0IGNoZWNrIGluIGdlbmVyYXRlZCBmaWxlcy4KICAgCjIwMDEtMTItMjMgMTU6NDYgIGhhcmRha2VyCgogICAqIGNvbmZpZy5oLmluICwgY29uZmlndXJlICwgY29uZmlndXJlLmluICwKICAgYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9zd2luc3QuYzoKCiAgIGZpeCBycG0gdXNhZ2UgKEkgaG9wZSkuCiAgIAoyMDAxLTEyLTIzIDE0OjUwICBoYXJkYWtlcgoKICAgKiBhZ2VudC9taWJncm91cC9hZ2VudC8uY3ZzaWdub3JlOgoKICAgYWRkZWQgLmN2c2lnbm9yZSBmaWxlCiAgIAoyMDAxLTEyLTIzIDE0OjQ5ICBoYXJkYWtlcgoKICAgKiBNYWtlZmlsZS5pbjoKCiAgIGluc3RhbGwgbmV0LXNubXAtY29uZmlnLgogICAKMjAwMS0xMi0yMyAxNDo0NyAgaGFyZGFrZXIKCiAgICogTkVXUyAsIGNvbmZpZ3VyZSAsIGNvbmZpZ3VyZS5pbiAsCiAgIG5ldC1zbm1wLWNvbmZpZyAsIG5ldC1zbm1wLWNvbmZpZy5pbiAsIGFnZW50L01ha2VmaWxlLmluCiAgICwgYXBwcy9NYWtlZmlsZS5pbjoKCiAgIC0gY3JlYXRlZCBhIG5ldC1zbm1wLWNvbmZpZyBzY3JpcHQgdG8gcmVwb3J0IGNvbXBpbGVkIGxpYnMuCiAgIC0gc2VwYXJhdGVkIGxpYnMgbmVlZGVkIGJ5IGFnZW50IGZyb20gdGhvc2UgbmVlZGVkIGJ5IHRoZSByZXN0IG9mIHRoZQogICAgIGFwcGxpY2F0aW9ucy4KICAgCjIwMDEtMTItMjEgMTY6NTMgIGhhcmRha2VyCgogICAqIHBlcmwvQW55RGF0YV9TTk1QL0lOU1RBTEw6CgogICBtZW50aW9uIGhvdyB0byBpbnN0YWxsIERCSQogICAKMjAwMS0xMi0yMSAxNjo0NCAgaGFyZGFrZXIKCiAgICogcGVybC9BbnlEYXRhX1NOTVAvTWFrZWZpbGUuUEw6CgogICByZW1vdmUgdmVyc2lvbiByZXF1aXJlbWVudCBmb3IgQW55RGF0YQogICAKMjAwMS0xMi0yMSAxNjozNyAgaGFyZGFrZXIKCiAgICogcGVybC9BbnlEYXRhX1NOTVAvSU5TVEFMTDoKCiAgIG1ha2UgaW5zdGFsbCBhcyByb290LgogICAKMjAwMS0xMi0yMSAxNjozMiAgaGFyZGFrZXIKCiAgICogcGVybC9BbnlEYXRhX1NOTVAvOiBJTlNUQUxMICwgSU5TVEFMTCAsIElOU1RBTEwgLAogICBJTlNUQUxMOgoKICAgYmV0dGVyIGRlc2NyCiAgIAoyMDAxLTEyLTIxIDE2OjA5ICBoYXJkYWtlcgoKICAgKiBwZXJsL0FueURhdGFfU05NUC9SRUFETUU6CgogICBtaW5vciB3b3JkaW5nIGNoYW5nZS4KICAgCjIwMDEtMTItMjEgMTY6MDcgIGhhcmRha2VyCgogICAqIHBlcmwvQW55RGF0YV9TTk1QL0lOU1RBTEw6CgogICBtZW50aW9uIGl0J3MgdmVyeSBhbHBoYSBjb2RlLgogICAKMjAwMS0xMi0yMSAxNjowNiAgaGFyZGFrZXIKCiAgICogcGVybC9BbnlEYXRhX1NOTVAvSU5TVEFMTDoKCiAgIG5ldyBpbnN0cnVjdGlvbnMKICAgCjIwMDEtMTItMjEgMTA6MTggIGhhcmRha2VyCgogICAqIE5FV1M6CgogICBtZW50aW9uIGRveHlnZW4uCiAgIAoyMDAxLTEyLTIxIDEwOjE3ICBoYXJkYWtlcgoKICAgKiBjb25maWd1cmUgLCBjb25maWd1cmUuaW4gLAogICBhZ2VudC9taWJncm91cC9hZ2VudF9taWJzLmg6CgogICBjb21waWxlIGluIGFnZW50IHNwZWNpZmljIHN1cHBvcnQgbWlicy4KICAgCjIwMDEtMTItMjEgMDk6NDkgIGhhcmRha2VyCgogICAqIE5FV1M6CgogICAoc3RpbGwgaW5jb21wbGV0ZSkgMm5kIHVwZGF0ZSBmb3IgNS4wCiAgIAoyMDAxLTEyLTIxIDA5OjQ0ICBoYXJkYWtlcgoKICAgKiBORVdTOgoKICAgKGluY29tcGxldGUpIHVwZGF0ZSBmb3IgNS4wCiAgIAoyMDAxLTEyLTE5IDE3OjEwICBoYXJkYWtlcgoKICAgKiBzbm1wbGliL2FzbjEuYzoKCiAgIGZpeCByZWFsbG9jIGZsb2F0IGFuZCBkb3VibGUgYnVpbGRzLgogICAKMjAwMS0xMi0xOSAxNjozNCAgaGFyZGFrZXIKCiAgICogbG9jYWwvbWliMmMuaXRlcmF0ZS5jb25mOgoKICAgbWlzYyBmaXhlcy4KICAgCjIwMDEtMTItMTkgMTY6MzMgIGhhcmRha2VyCgogICAqIGxvY2FsL21pYjJjOgoKICAgZGVmaW5lIGEgQyBkYXRhdHlwZSBhcyAkdmFyLmRlY2wgKHBlciBSb2JlcnQncyBzdWdnZXN0aW9uLiAgUm9iZXJ0OiB3ZQogICBwcm9iYWJseSB3YW50IHBvaW50ZXJzIGZvciB0aGluZ3MgbGlrZSBzdHJpbmdzLCBubz8gIG1heWJlIG9uZSB0eXBlCiAgIHRoYXQgaXMgYWx3YXlzIGEgcG9pbnRlciBhbmQgYW5vdGhlciB0aGF0IGlzIHNvbWV0aW1lcyBkZXBlbmRpbmcgb24KICAgdGhlIHR5cGU/KQogICAKMjAwMS0xMi0xOSAxNjozMiAgaGFyZGFrZXIKCiAgICogYXBwcy9zbm1wYnVsa3dhbGsuYzoKCiAgIGNoYW5nZSBkZWZhdWx0IGJ1bGsgbnVtYmVyIHRvIDEwMCBmcm9tIHRoZSByaWRpY3Vsb3VzIDEwMDAuCiAgIAoyMDAxLTEyLTE5IDE2OjMyICBoYXJkYWtlcgoKICAgKiBhZ2VudC9NYWtlZmlsZS5pbiAsIGFnZW50L21pYmdyb3VwL01ha2VmaWxlLmluICwKICAgYXBwcy9NYWtlZmlsZS5pbiAsIHNubXBsaWIvTWFrZWZpbGUuaW46CgogICBtYWtlIGRlcGVuZAogICAKMjAwMS0xMi0xOSAwODoxMCAgaGFyZGFrZXIKCiAgICogYWdlbnQvOiBzbm1wX2FnZW50LmMgLCBoZWxwZXJzL2J1bGtfdG9fbmV4dC5jOgoKICAgZ2V0YnVsayB1cGRhdGVzIHRvIG1ha2UgaXQgdGhlIG1vZHVsZXMgcmVzcG9uc2liaWxpdHkgdG8gdXBkYXRlIHRoZQogICB2YXJiaW5kIGNoYWluIGFuIHRoZSByZXBlYXQgY291bnRlci4KICAgCjIwMDEtMTItMTkgMDc6NTcgIGhhcmRha2VyCgogICAqIGFnZW50LzogYWdlbnRfaGFuZGxlci5jICwgc25tcF9hZ2VudC5jICwgc25tcF9hZ2VudC5oCiAgICwgaGVscGVycy9NYWtlZmlsZS5pbiAsIGhlbHBlcnMvYWxsX2hlbHBlcnMuYyAsCiAgIGhlbHBlcnMvYWxsX2hlbHBlcnMuaCAsIGhlbHBlcnMvYnVsa190b19uZXh0LmMgLAogICBoZWxwZXJzL2J1bGtfdG9fbmV4dC5oOgoKICAgR0VUQlVMSyBzdXBwb3J0IGZvciB0aGUgbmV3IEFQSS4KICAgICAtIG1heSBuZWVkIHRvIG1ha2Ugc29tZSBzbGlnaHQgbW9kaWZpY2F0aW9ucy4KICAgICAtIGRlZmF1bHRzIHRvIEdFVE5FWFQgZm9yIGFueSBoYW5kbGVyIHRoYXQgZG9lc24ndCBzZXQgSEFORExFUl9DQU5fR0VUQlVMSy4KICAgICAtIGRvZXNuJ3QgZGVhbCBwcm9wZXJseSB5ZXQgd2l0aCBlbmQtb2YtbWliIGNvbmRpdGlvbiByZW1vdmFsLgogICAKMjAwMS0xMi0xOSAwNjowNSAgamJwbgoKICAgKiBhcHBzL3NubXB0cmFwZC5jOgoKICAgICAtIGRyb3AgLXAgb3B0aW9uLiAgQWRkcmVzc2VzIHRvIGxpc3RlbiBvbiBub3cgY29tZSBhcyBvcHRpb25hbAogICAgICAgYXJndW1lbnRzIGF0IHRoZSBlbmQgb2YgdGhlIGNvbW1hbmQgbGluZS4KICAgCiAgICAgLSBkcm9wIChsb25nLWRlcHJlY2F0ZWQpIC1xIG9wdGlvbi4KICAgCiAgICAgLSByZS1vcmRlcmVkIG9wdGlvbnMgaW4gdXNhZ2UgbWVzc2FnZSB0byBiZSBhbHBoYWJldGljYWwsIGFuZAogICAgICAgY2hhbmdlZCBkZXNjcmlwdGlvbiBvZiBzb21lIG9wdGlvbnMgdG8gYmUgbW9yZSBzaW1pbGFyIHRvIHNubXBkCiAgICAgICBvcHRpb25zICh3aGVyZSBhcHByb3ByaWF0ZSkuCiAgIAoyMDAxLTEyLTE5IDA0OjM4ICBqYnBuCgogICAqIGFnZW50L3NubXBkLmM6CgogICAgIC0gZHJvcCAtcCBhbmQgLVQgb3B0aW9ucy4gIEFkZHJlc3NlcyB0byBsaXN0ZW4gb24gbm93IGNvbWUgYXMKICAgICAgIG9wdGlvbmFsIGFyZ3VtZW50cyBhdCB0aGUgZW5kIG9mIHRoZSBjb21tYW5kIGxpbmUuCiAgIAogICAgIC0gcmUtb3JkZXJlZCBvcHRpb25zIGluIHVzYWdlIG1lc3NhZ2UgdG8gYmUgYWxwaGFiZXRpY2FsLCBwbHVzCiAgICAgICBtaW5vciBmb3JtYXR0aW5nIHR3ZWFrcy4KICAgCiAgICAgLSByZS13cml0dGVuIG9wdGlvbnMgcHJvY2Vzc2luZyBsb29wIHRvIHVzZSBvcHRhcmcoKS4KICAgCjIwMDEtMTItMTggMDg6NDQgIGpicG4KCiAgICogbWlicy86IFVDRC1TTk1QLU1JQi50eHQgKFY0LTItcGF0Y2hlcy41KSwgVUNELVNOTVAtTUlCLnR4dDoKCiAgICAgLSBhZGQgT0JKRUNUIElERU5USUZJRVIgZm9yIHdpbjMyIGFnZW50CiAgIAoyMDAxLTEyLTE4IDA4OjE2ICBoYXJkYWtlcgoKICAgKiBhZ2VudC9oZWxwZXJzL29sZF9hcGkuYzoKCiAgIHdhcm5pbmcgLT4gZGVidWcuCiAgIAoyMDAxLTEyLTE3IDEwOjE1ICBqYnBuCgogICAqIGFnZW50L3NubXBfYWdlbnQuYzoKCiAgICAgLSBoYW5kbGUgZ2V0TmV4dCBxdWVyaWVzIHdoZXJlIHRoZSBpbml0aWFsIHZhcmJpbmQtPnR5cGUgaXMKICAgICAgIEFTTl9QUklWX0lOQ0xfUkFOR0UgKHRoZXNlIGN1cnJlbnRseSBhcmlzZSBvbmx5IGluIEFnZW50WAogICAgICAgc3ViYWdlbnRzIGJ1dCB0aGUgaGFuZGxpbmcgaXMgbm90IHNwZWNpZmljIHRvIEFnZW50WCkuCiAgIAogICAgICAgQmFzaWNhbGx5IHRoaXMgaXMgZG9uZSBieSBwZXJmb3JtaW5nIGEgR0VUIGZpcnN0IG9uIGFsbCB0aGUKICAgICAgIHZhcmlhYmxlcyBpbiBhIHJlcXVlc3QuICBGb3IgdmFyaWFibGVzIHRoYXQgaGFkIGFuIGluaXRpYWwgdHlwZSBvZgogICAgICAgQVNOX1BSSVZfSU5DTF9SQU5HRSBhbmQgd2VyZSBzYXRpc2ZpZWQgYnkgdGhpcyBpbml0aWFsIEdFVCwgd2UgdXNlCiAgICAgICB0aGlzIHZhbHVlIGFzIHRoZSByZXN1bHQuICBGb3IgdmFyaWFibGVzIHRoYXQgZGlkIG5vdCBoYXZlIGFuCiAgICAgICBpbml0aWFsIHR5cGUgb2YgQVNOX1BSSVZfSU5DTF9SQU5HRSwgb3IgdmFyaWFibGUgdGhhdCBoYWQgYW5kCiAgICAgICBpbml0aWFsIHR5cGUgb2YgQVNOX1BSSVZfSU5DTF9SQU5HRSBidXQgd2VyZSBub3Qgc2F0aXNmaWVkIGJ5IHRoaXMKICAgICAgIEdFVCByZXF1ZXN0LCB3ZSBwcm9jZWVkIHRvIHBlcmZvcm0gYSBHRVQtTkVYVCB0eXBlIHJlcXVlc3QgYXMKICAgICAgIG5vcm1hbC4KICAgCjIwMDEtMTItMTcgMTA6MDQgIGpicG4KCiAgICogYWdlbnQvaGVscGVycy9vbGRfYXBpLmM6CgogICAgIC0gYWRkIGZ1bmN0aW9uIHJlZ2lzdGVyX21pYl90YWJsZV9yb3coKSB3aGljaCBlbXVsYXRlcyBvbGQKICAgICAgIGZ1bmN0aW9uYWxpdHkuCiAgIAogICAgIC0gdXNlIHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb25fZnJlZSgpIGluIHJlZ2lzdGVyX29sZF9hcGkoKS4KICAgCjIwMDEtMTItMTcgMDk6MzkgIGpicG4KCiAgICogc25tcGxpYi9taWIuYzoKCiAgICAgLSBmaXggYm9ndXMgaW5kZW50CiAgIAoyMDAxLTEyLTE3IDA5OjM4ICBqYnBuCgogICAqIGFnZW50L21pYmdyb3VwL2FnZW50eC9tYXN0ZXJfYWRtaW4uYzoKCiAgICAgLSByaWdodCBudW1iZXIgb2YgYXJndW1lbnRzIGZvciByZWdpc3Rlcl9taWJfY29udGV4dDIoKSBpbgogICAgICAgcmVnaXN0ZXJfYWdlbnR4X2xpc3QoKS4KICAgCiAgICAgLSB1c2Ugc25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbl9mcmVlKCkgaW4gZGl0dG8uCiAgIAoyMDAxLTEyLTEzIDE5OjIyICBoYXJkYWtlcgoKICAgKiBhZ2VudC9oZWxwZXJzL3RhYmxlX2l0ZXJhdG9yLmM6CgogICByZW1vdmUgaGFuZGxlciBpbmplY3Rpb24gb3JkZXIgKHNlcmlhbGl6ZSBuZWVkcyB0byBiZSBjYWxsZWQgZmlyc3QpCiAgIAoyMDAxLTEyLTEzIDE5OjIyICBoYXJkYWtlcgoKICAgKiBhZ2VudC9zbm1wX2FnZW50LmM6CgogICByZW1vdmUgdW5uZWVkZWQgY2hlY2sgZm9yIGFscmVhZHkgYW5zd2VyZWQgQVNOX05VTExzIGluIGZpcnN0IHBhc3MuCiAgIAoyMDAxLTEyLTEyIDA5OjMxICBoYXJkYWtlcgoKICAgKiBwZXJsL0FueURhdGFfU05NUC86IC5jdnNpZ25vcmUgLCBJTlNUQUxMICwgTUFOSUZFU1QKICAgLCBSRUFETUUgLCBzbm1wc2g6CgogICAtIGRvYyB1cGRhdGUuCiAgIC0gc25tcHNoIG5vdyBzdXBwb3J0cyBhbGlhc2VzIHNvIHlvdSBjYW4gZGVmaW5lIGNvbW1hbmQgc2V0cy4KICAgLSBzbm1wc2ggbm93IHJlYWRzIGEgfi8uc25tcHNocmMgZmlsZSBmb3Igc3RvcmluZyB0aGVzZSBkZWZpbmVkIGFsaWFzZXMuCiAgIAoyMDAxLTEyLTEyIDA2OjQyICBqYnBuCgogICAqIGFnZW50L2FnZW50X3JlZ2lzdHJ5LmM6CgogICAgIC0gbmV3IGZ1bmN0aW9uIGpvaW5fc3VidHJlZSgpIHdoaWNoIHJlcGFpcnMgInB1bmN0dXJlZCIgc3VidHJlZXMKICAgICAgICh0aGVzZSBhcmlzZSBpbiBwYXJ0aWN1bGFyIHdoZW4gQWdlbnRYIHJvdyByZWdpc3RyYXRpb25zIGFyZQogICAgICAgd2l0aGRyYXduKS4KICAgCiAgICAgLSBjb3B5IHJlZ2luZm8gd2hlbiBkb2luZyBhIHJhbmdlIHJlZ2lzdHJhdGlvbiAoYXMgd2UgdXNlZCB0byBkbwogICAgICAgd2l0aCB0aGUgdmFyaWFibGUgc3RydWN0dXJlKSwgc2luY2UgZWFjaCBub2RlIG11c3Qgc3RhbmQgYWxvbmUuCiAgIAogICAgIC0gYWRkIHBhcmFtZXRlciB0byByZWdpc3Rlcl9taWJfY29udGV4dDIgdG8gYWxsb3cgUkVHSVNURVJfT0lECiAgICAgICBjYWxsYmFja3MgdG8gYmUgd2l0aGhlbGQgKGZvciBpbnN0YW5jZSwgeW91IG5lZWQgdGhpcyB0byBhdm9pZAogICAgICAgZXhjZXNzIEFnZW50WCB0cmFmZmljIGZvciByb3cgcmVnaXN0cmF0aW9ucykuCiAgIAogICAgIC0gcmVtb3ZlIHJlZ2lzdGVyX21pYl90YWJsZV9yb3coKSAtLSB0aGlzIGhhcyBtb3ZlZCB0byBvbGRfYXBpLmMKICAgCiAgICAgLSBjYWxsIGpvaW5fc3VidHJlZSgpIGluIHVucmVnaXN0ZXJfbWlic19ieV9zZXNzaW9uKCkuCiAgIAoyMDAxLTEyLTEyIDA2OjMzICBqYnBuCgogICAqIGFnZW50LzogYWdlbnRfaGFuZGxlci5jICwgYWdlbnRfaGFuZGxlci5oOgoKICAgICAtIGFkZCBmdW5jdGlvbnMgc25tcF9oYW5kbGVyX2ZyZWUoKSwgc25tcF9oYW5kbGVyX2R1cCgpLAogICAgICAgc25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbl9kdXAoKSBhbmQKICAgICAgIHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb25fZnJlZSgpLgogICAKMjAwMS0xMi0xMSAxODo0MSAgaGFyZGFrZXIKCiAgICogYWdlbnQvbWliZ3JvdXAvbWliSUkvdmFjbV92YXJzLmM6CgogICBGaXggYnVnIHdoZXJlIHBkdS0+Y29udGV4dE5hbWUgaXMgTlVMTC4KICAgCjIwMDEtMTItMTEgMDc6MzQgIGhhcmRha2VyCgogICAqIGxvY2FsL21pYjJjOgoKICAgQklUUzogaXBhZGRyIC0+IG9jdGV0X3N0cgogICAKMjAwMS0xMi0xMSAwNDoxMSAgamJwbgoKICAgKiBhZ2VudC86IHNubXBfYWdlbnQuYyAsIHNubXBfYWdlbnQuaCAsCiAgIG1pYmdyb3VwL2FnZW50eC9tYXN0ZXIuYzoKCiAgICAgLSBzZW5kIElOQ0xVU0lWRSBzZWFyY2ggcmFuZ2VzIGlmIGFwcHJvcHJpYXRlCiAgIAoyMDAxLTEyLTEwIDIwOjQzICByc3RvcnkKCiAgICogbG9jYWwvbWliMmM6CgogICBhZGQgbm9hY2Nlc3MgZmxhZyBmb3Igbm90LWFjY2Vzc2libGUgbm9kZXMKICAgCjIwMDEtMTItMTAgMTQ6NTEgIGhhcmRha2VyCgogICAqIHBlcmwvQW55RGF0YV9TTk1QLzogQ2hhbmdlcyAsIERCRF9BbnlEYXRhLnBhdGNoICwKICAgRm9ybWF0LnBtICwgSU5TVEFMTCAsIE1BTklGRVNUICwgTWFrZWZpbGUuUEwgLAogICBTdG9yYWdlLnBtICwgc25tcHNoOgoKICAgRmlyc3QgdmVyc2lvbgogICAKMjAwMS0xMi0xMCAwMzoyMCAgamJwbgoKICAgKiBhZ2VudC9hZ2VudF9yZWFkX2NvbmZpZy5jOgoKICAgICAtIGRvbid0IHN0cmR1cCBhcmcgdG8gZHNfc2V0X3N0cmluZwogICAKMjAwMS0xMi0xMCAwMzoxOSAgamJwbgoKICAgKiBzbm1wbGliL3JlYWRfY29uZmlnLmM6CgogICAgIC0gZGl0dG8gaW4gc2V0X3BlcnNpc3RlbnRfZGlyZWN0b3J5KCkKICAgCjIwMDEtMTItMTAgMDM6MTggIGpicG4KCiAgICogc25tcGxpYi9yZWFkX2NvbmZpZy5jOgoKICAgICAtIGRvbid0IHN0cmR1cCgpIGluIHNldF9jb25maWd1cmF0aW9uX2RpcmVjdG9yeSgpIGJlY2F1c2UKICAgICAgIGRzX3NldF9zdHJpbmcoKSBhbHJlYWR5IGRvZXMgdGhhdCBmb3IgeW91LgogICAKMjAwMS0xMi0wNyAwOTo0MyAgaGFyZGFrZXIKCiAgICogYWdlbnQvOiBoZWxwZXJzL3RhYmxlX2l0ZXJhdG9yLmMgLCBoZWxwZXJzL3RhYmxlX2l0ZXJhdG9yLmgKICAgLCBtaWJncm91cC9hZ2VudC9uc1RyYW5zYWN0aW9uVGFibGUuYyAsCiAgIG1pYmdyb3VwL21pYklJL3ZhY21fY29udGV4dC5jOgoKICAgLSBJbXBsZW1lbnQgbmV3IG1hbnRyYTogImFsd2F5cyBwYXNzIG1vcmUgaW5mb3JtYXRpb24sIHJhdGhlciB0aGFuIGxlc3MiLgogICAtIGZpeCB0YWJsZSBpdGVyYXRlciBHRVRORVhUcyBmb3IgbWlzc2luZyBkYXRhIHBvaW50cy4KICAgLSBhZGQgYSBuZXcgaG9vayB0byBmcmVlIGxvb3AgY29udGV4dHMgYXQgdGhlIGVuZCBvZiB0aGUgZW50aXJlIGl0ZXJhdGlvbi4KICAgCjIwMDEtMTItMDYgMDY6NTggIGpicG4KCiAgICogYWdlbnQvbWliZ3JvdXAvYWdlbnR4LzogY2xpZW50LmMgKEpCUE4tQ0JMLTQuMSksIGNsaWVudC5jOgoKICAgICAtIGlmIHJlcXVlc3QgSURzIGRvbid0IG1hdGNoLCB0aGVuIGNhbGwgaGFuZGxlX2FnZW50eF9wYWNrZXQoKSAtLQogICAgICAgY29wZXMgYmV0dGVyIHdpdGggdW5leHBlY3RlZCBwYWNrZXRzLCBpbiBwYXJ0aWN1bGFyIGZpeGVzCiAgICAgICBpbnRlcm1pdHRlbnQgZHVwbGljYXRlIHRyYXAgaXNzdWUgKGR1ZSB0byByZXNlbnQKICAgYWdlbnR4LU5vdGlmeS1QRFUpLgogICAKMjAwMS0xMi0wNSAxMzo0NiAgaGFyZGFrZXIKCiAgICogc25tcGxpYi9zbm1wLXRjLmM6CgogICBBaGVtLiAgT3Bwcy4gIE1pc3NpbmcgaW5jbHVkZXMuCiAgICAgLSBub3RlIHRvIHNlbGY6IGNvbXBpbGUgZmlyc3QsICp0aGVuKiBjaGVjayBpbiBjaGFuZ2VzLgogICAKMjAwMS0xMi0wNSAxMzo0MSAgaGFyZGFrZXIKCiAgICogc25tcGxpYi9zbm1wLXRjLmM6CgogICBhZGQgaW4gdGhlIG1pc3NpbmcgZnVuY3Rpb25zIGZyb20gdGhlIE5FVy1BR0VOVC1BUEkgYnJhbmNoLgogICAgIChhbmQgdG8gYW5zd2VyIFJvYmVydCdzIHBlbmRpbmcgcXVlc3Rpb24gb2Ygd2hhdCBoYXBwZW5lZCwgaXQgd2FzCiAgICAgIGxpa2VseSBvbmUgb2YgdGhlIGZpbGVzIHRoYXQgZmFpbGVkIHRvIGNvbW1pdCBvbiBteSBzaWRlIHRoYXQgeW91CiAgICAgIHRyaWVkIHRvIGZpeCBhbmQgc29tZXdoZXJlIGJldHdlZW4gdGhlIHR3byBvZiB1cyB0aGUgY2hhbmdlcyB3ZXJlIGxvc3QpLgogICAKMjAwMS0xMi0wNSAxMDowMyAgamJwbgoKICAgKiBtYW4vc25tcGNtZC4xOgoKICAgICAtIG1pbm9yIHR3ZWFrcwogICAKMjAwMS0xMi0wNSAwOToxNCAgamJwbgoKICAgKiBtYW4vc25tcGNtZC4xOgoKICAgICAtIGFkZCBUQ1AvSVB2NiBkb21haW4gdG8gQUdFTlQgU1BFQyBzZWN0aW9uCiAgIAogICAgIC0gaW5jb3Jwb3JhdGUgc3VnZ2VzdGlvbnMgZnJvbSByc3RvcnkKICAgCjIwMDEtMTItMDUgMDg6NDcgIGpicG4KCiAgICogc25tcGxpYi9zbm1wVENQSVB2NkRvbWFpbi5jOgoKICAgICAtIHVzZSBTT0NLX1NUUkVBTSBub3QgU09DS19ER1JBTSAoZHVoISkuICBZb3Ugd291bGRuJ3QgYmVsaWV2ZSBob3cKICAgICAgIGNvbmZ1c2luZyB0aGlzIHdhcyAtLSBlLmcuIGhvdyBvbiAqZWFydGgqIGNhbiB0aGF0IGNvbm5lY3QoKSBiZQogICAgICAgc3VjY2VlZGluZyEKICAgCjIwMDEtMTItMDUgMDg6MzYgIGpicG4KCiAgICogc25tcGxpYi9zbm1wVENQRG9tYWluLmM6CgogICAgIC0gbWFrZSBzdXJlIHRvIGNsb3NlIHNvY2tldCBpZiB5b3UgY2FuJ3QgbWFsbG9jIHRoZSBlbmNvZGVkIGZhci1lbmQKICAgICAgIGFkZHJlc3MgaW4gc25tcF90Y3BfdHJhbnNwb3J0KCkKICAgCjIwMDEtMTItMDUgMDg6MjcgIGhhcmRha2VyCgogICAqIHdpbjMyLzogc25tcHRyYW5zbGF0ZS9zbm1wdHJhbnNsYXRlLmRzcCAsCiAgIHNubXB0cmFwL3NubXB0cmFwLmRzcCAsIHNubXB0cmFwZC9zbm1wdHJhcGQuZHNwICwKICAgc25tcHVzbS9zbm1wdXNtLmRzcCAsIHNubXB2YWNtL3NubXB2YWNtLmRzcDoKCiAgIG1lcmdlIGZyb20gNC4yIHBhdGNoZXMgdG8gbWFpbiBsaW5lCiAgIAoyMDAxLTEyLTA1IDA4OjIzICBoYXJkYWtlcgoKICAgKiBDaGFuZ2VMb2cgLCBGQVEgLCBORVdTICwgUkVBRE1FICwKICAgUkVBRE1FLndpbjMyICwgYWNjb25maWcuaCAsIGNvbmZpZy5oLmluICwKICAgY29uZmlndXJlICwgY29uZmlndXJlLmluICwgc2Vkc2NyaXB0LmluICwKICAgYWdlbnQvYWdlbnRfY2FsbGJhY2tzLmggLCBhZ2VudC9hZ2VudF9yZWFkX2NvbmZpZy5jICwKICAgYWdlbnQvc25tcGQuYyAsIGFnZW50L21pYmdyb3VwL2tlcm5lbF9zdW5vczUuYyAsCiAgIGFnZW50L21pYmdyb3VwL3ZlcnNpb250YWcgLCBhZ2VudC9taWJncm91cC9ob3N0L2hyX2Rpc2suYwogICAsIGFnZW50L21pYmdyb3VwL2hvc3QvaHJfcGFydGl0aW9uLmMgLAogICBhZ2VudC9taWJncm91cC9ob3N0L2hyX3N5c3RlbS5jICwgYWdlbnQvbWliZ3JvdXAvbWliSUkvYXQuYwogICAsIGFnZW50L21pYmdyb3VwL21pYklJL2ljbXAuYyAsCiAgIGFnZW50L21pYmdyb3VwL21pYklJL2ludGVyZmFjZXMuYyAsIGFnZW50L21pYmdyb3VwL21pYklJL2lwLmMKICAgLCBhZ2VudC9taWJncm91cC9taWJJSS9pcEFkZHIuYyAsCiAgIGFnZW50L21pYmdyb3VwL21pYklJL2tlcm5lbF9saW51eC5jICwKICAgYWdlbnQvbWliZ3JvdXAvbWliSUkva2VybmVsX2xpbnV4LmggLAogICBhZ2VudC9taWJncm91cC9taWJJSS9yb3V0ZV93cml0ZS5jICwKICAgYWdlbnQvbWliZ3JvdXAvbWliSUkvc3lzdGVtX21pYi5jICwKICAgYWdlbnQvbWliZ3JvdXAvbWliSUkvdGNwLmMgLCBhZ2VudC9taWJncm91cC9taWJJSS90Y3BUYWJsZS5jCiAgICwgYWdlbnQvbWliZ3JvdXAvbWliSUkvdWRwLmMgLAogICBhZ2VudC9taWJncm91cC9taWJJSS91ZHBUYWJsZS5jICwKICAgYWdlbnQvbWliZ3JvdXAvbWliSUkvdmFyX3JvdXRlLmMgLAogICBhZ2VudC9taWJncm91cC9ub3RpZmljYXRpb24vc25tcE5vdGlmeVRhYmxlLmMgLAogICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9kaXNrLmMgLAogICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC92bXN0YXRfc29sYXJpczIuYyAsCiAgIGFwcHMvc25tcG5ldHN0YXQvaWYuYyAsIGxvY2FsL21pYjJjICwgbG9jYWwvdGttaWIKICAgLCBtYW4vc25tcGQuY29uZi41LmRlZiAsIG1pYnMvVUNELVNOTVAtTUlCLnR4dCAsCiAgIHBlcmwvU05NUC9TTk1QLnBtICwgc25tcGxpYi9hc24xLmMgLAogICBzbm1wbGliL2RlZmF1bHRfc3RvcmUuaCAsIHNubXBsaWIvbWliLmMgLAogICBzbm1wbGliL3JlYWRfY29uZmlnLmMgLCBzbm1wbGliL3JlYWRfY29uZmlnLmggLAogICBzbm1wbGliL3NubXAuaCAsIHNubXBsaWIvc25tcF9hcGkuYyAsCiAgIHdpbjMyL3NubXB3YWxrL3NubXB3YWxrLmRzcCAsIHdpbjMyL2NvbmZpZy5oICwKICAgd2luMzIvbWliX21vZHVsZV9jb25maWcuaCAsIHdpbjMyL21pYl9tb2R1bGVfaW5jbHVkZXMuaCAsCiAgIHdpbjMyL21pYl9tb2R1bGVfaW5pdHMuaCAsIHdpbjMyL3dpbjMyLmRzdyAsCiAgIHdpbjMyL3dpbjMyLm9wdCAsIHdpbjMyL2VuY29kZV9rZXljaGFuZ2UvZW5jb2RlX2tleWNoYW5nZS5kc3AKICAgLCB3aW4zMi9saWJhZ2VudC9saWJhZ2VudC5kc3AgLCB3aW4zMi9saWJzbm1wL2xpYnNubXAuZHNwCiAgICwgd2luMzIvbGlic25tcF9kbGwvbGlic25tcC5kZWYgLAogICB3aW4zMi9saWJzbm1wX2RsbC9saWJzbm1wX2RsbC5kc3AgLAogICB3aW4zMi9saWJ1Y2RtaWJzL2xpYnVjZG1pYnMuZHNwICwKICAgd2luMzIvc25tcGJ1bGtnZXQvc25tcGJ1bGtnZXQuZHNwICwKICAgd2luMzIvc25tcGJ1bGt3YWxrL3NubXBidWxrd2Fsay5kc3AgLCB3aW4zMi9zbm1wZC9zbm1wZC5kc3AKICAgLCB3aW4zMi9zbm1wZGVsdGEvc25tcGRlbHRhLmRzcCAsIHdpbjMyL3NubXBkZi9zbm1wZGYuZHNwCiAgICwgd2luMzIvc25tcGdldC9zbm1wZ2V0LmRzcCAsCiAgIHdpbjMyL3NubXBnZXRuZXh0L3NubXBnZXRuZXh0LmRzcCAsCiAgIHdpbjMyL3NubXBuZXRzdGF0L3NubXBuZXRzdGF0LmRzcCAsIHdpbjMyL3NubXBzZXQvc25tcHNldC5kc3AKICAgLCB3aW4zMi9zbm1wc3RhdHVzL3NubXBzdGF0dXMuZHNwICwKICAgd2luMzIvc25tcHRhYmxlL3NubXB0YWJsZS5kc3AgLCB3aW4zMi9zbm1wdGVzdC9zbm1wdGVzdC5kc3A6CgogICBtZXJnZSBmcm9tIDQuMiBwYXRjaGVzIHRvIG1haW4gbGluZQogICAKMjAwMS0xMi0wNSAwNzo1MSAgamJwbgoKICAgKiBzbm1wbGliL3NubXBVRFBJUHY2RG9tYWluLmM6CgogICAgIC0gZml4IGJ1ZyBpbiBhZGRyZXNzIHBhcnNlcgogICAKMjAwMS0xMi0wNSAwNzo0OCAgamJwbgoKICAgKiBzbm1wbGliLzogc25tcFRDUElQdjZEb21haW4uYyAsIHNubXBVRFBJUHY2RG9tYWluLmM6CgogICAgIC0gbWlub3IgY2hhbmdlcyB0bywgYWhlbSwgbWFrZSBpdCBjb21waWxlCiAgIAoyMDAxLTEyLTA1IDA3OjQyICBqYnBuCgogICAqIHNubXBsaWIvc25tcFRDUERvbWFpbi5jOgoKICAgICAtIGNvbmRpdGlvbmFsaXNlICNpbmNsdWRlIDxmY250bC5oPgogICAKMjAwMS0xMi0wNSAwNzozOCAgamJwbgoKICAgKiBzbm1wbGliL3NubXBfdHJhbnNwb3J0LmM6CgogICAgIC0gZml4IHR5cG8KICAgCjIwMDEtMTItMDUgMDc6MjkgIGpicG4KCiAgICogYWNjb25maWcuaCAsIGNvbmZpZ3VyZS5pbjoKCiAgICAgLSBtZW50aW9uIHRoZSBUQ1AvSVB2NiB0cmFuc3BvcnQgaW4gY29uZmlnLCBhbmQgYWRkIGEgI2RlZmluZSBmb3IgaXQKICAgICAgIGlmIGFwcHJvcHJpYXRlCiAgIAoyMDAxLTEyLTA1IDA3OjI4ICBqYnBuCgogICAqIHNubXBsaWIvc25tcF90cmFuc3BvcnQuYzoKCiAgICAgLSBjYWxsIHNubXBfdGNwNl9jdG9yKCkgaWYgYXBwcm9wcmlhdGUKICAgCjIwMDEtMTItMDUgMDc6MjcgIGpicG4KCiAgICogc25tcGxpYi86IHNubXBUQ1BJUHY2RG9tYWluLmMgLCBzbm1wVENQSVB2NkRvbWFpbi5oOgoKICAgICAtIFRDUC9JUHY2IHRyYW5zcG9ydCBkb21haW4uICBVbnRlc3RlZC4KICAgCjIwMDEtMTItMDUgMDc6MTkgIGpicG4KCiAgICogc25tcGxpYi9zbm1wVURQSVB2NkRvbWFpbi5jOgoKICAgICAtIG1ha2UgZW5jb2RlZCBhZGRyZXNzZXMgYXQgdHJhbnNwb3J0IG9wZW4gdGltZQogICAKMjAwMS0xMi0wNSAwNzoxNyAgamJwbgoKICAgKiBzbm1wbGliLzogc25tcFRDUERvbWFpbi5jICwgc25tcF90cmFuc3BvcnQuaDoKCiAgICAgLSBtb3ZlICNkZWZpbml0aW9uIG9mIFNOTVBfU1RSRUFNX1FVRVVFX0xFTiBmcm9tIHNubXBUQ1BEb21haW4uYwogICAgICAgdG8gc25tcF90cmFuc3BvcnQuaAogICAKMjAwMS0xMi0wNSAwNzoxMCAgaGFyZGFrZXIKCiAgICogYWdlbnQvOiBzbm1wX2FnZW50LmMgLCBzbm1wX3ZhcnMuYzoKCiAgIHJlbW92ZSBzb21lIHVubmVlZGVkIGZ1bmN0aW9ucyBsaWtlLCBvaCwgSSBkb24ndCBrbm93LCBnZXRTdGF0UHRyKCkuCiAgIAoyMDAxLTEyLTA1IDA1OjQzICBqYnBuCgogICAqIHNubXBsaWIvc25tcF9hcGkuaDoKCiAgICAgLSByZW1vdmUgbGVnYWN5IGNhbGxiYWNrIG9wZXJhdGlvbiBuYW1lcwogICAKMjAwMS0xMi0wNSAwNTowNiAgamJwbgoKICAgKiBzbm1wbGliL3NubXBVRFBJUHY2RG9tYWluLmM6CgogICAgIC0gY2hhbmdlZCB0ZXh0dWFsIGFkZHJlc3MgcGFyc2luZwogICAKMjAwMS0xMi0wNCAyMjo1MiAgbmJhCgogICAqIHNubXBsaWIvc25tcFVEUElQdjZEb21haW4uYzoKCiAgIEZpeCBiaW5kIHBhcmFtZXRlcnMsIHNvIHRoYXQgdGhlIGFnZW50IHdvcmtzCiAgIAoyMDAxLTEyLTA0IDEzOjM2ICBoYXJkYWtlcgoKICAgKiBhZ2VudC9oZWxwZXJzL3RhYmxlLmggLCBhZ2VudC9oZWxwZXJzL3RhYmxlX2l0ZXJhdG9yLmMKICAgLCBhZ2VudC9oZWxwZXJzL3RhYmxlX2l0ZXJhdG9yLmggLAogICBhZ2VudC9taWJncm91cC9hZ2VudC9uc1RyYW5zYWN0aW9uVGFibGUuYyAsCiAgIGFnZW50L21pYmdyb3VwL21pYklJL3ZhY21fY29udGV4dC5jICwgbG9jYWwvbWliMmMuaXRlcmF0ZS5jb25mOgoKICAgLSBtb3ZlIGZvcmdvdHRlbiBmdW5jdGlvbiB0eXBlZGVmcyB0byBpdGVyYXRvciBzcGVjaWZpYyBoZWFkZXIgZmlsZS4KICAgLSBhZGQgYSB2b2lkICogcG9pbnRlciBmb3IgdGhlIGNhbGxiYWNrcyB0byBtYWtlIGZ1bmN0aW9ucyBtb3JlIHJldXNhYmxlLgogICAKMjAwMS0xMi0wNCAxMzoxMSAgaGFyZGFrZXIKCiAgICogYWdlbnQvaGVscGVycy90YWJsZS5oICwgYWdlbnQvaGVscGVycy90YWJsZV9pdGVyYXRvci5jCiAgICwgYWdlbnQvaGVscGVycy90YWJsZV9pdGVyYXRvci5oICwKICAgYWdlbnQvbWliZ3JvdXAvYWdlbnQvbnNUcmFuc2FjdGlvblRhYmxlLmMgLAogICBhZ2VudC9taWJncm91cC9taWJJSS92YWNtX2NvbnRleHQuYyAsIGxvY2FsL21pYjJjLml0ZXJhdGUuY29uZjoKCiAgIG1vdmUgaXRlcmF0b3Igc3BlY2lmaWMgdGFibGUgaW5mb3JtYXRpb24gaW50byBpdHMgb3duIHN0cnVjdHVyZS4KICAgCjIwMDEtMTItMDQgMTI6MTYgIGhhcmRha2VyCgogICAqIGFnZW50L2hlbHBlcnMvYWxsX2hlbHBlcnMuaDoKCiAgIEZpeCBwcm90b3R5cGUgYXMgcG9pbnRlZCBvdXQgYnkgSmVyb21lIFBlZHVjYXNzZQogICAKMjAwMS0xMi0wNCAxMDoxMCAgamJwbgoKICAgKiBtYW4vc25tcGNtZC4xOgoKICAgICAtIG1lbnRpb24gdGhhdCBub3QgYWxsIHRyYW5zcG9ydCBkb21haW5zIGFyZSBhbHdheXMgYXZhaWxhYmxlLgogICAKMjAwMS0xMi0wNCAwOTo1NSAgamJwbgoKICAgKiBtYW4vc25tcGNtZC4xOgoKICAgICAtIHJlbW92ZSAtcCBhbmQgLVQgb3B0aW9ucyBmcm9tIGRvY3VtZW50YXRpb24uCiAgIAogICAgIC0gYWRkIGxlbmd0aHkgbmV3IHNlY3Rpb24gZGVzY3JpYmluZyBuZXcgdHJhbnNwb3J0IGFkZHJlc3MKICAgICAgIHNwZWNpZmljYXRpb24gZm9ybWF0LCB3aXRoIGV4YW1wbGVzIGFuZCBldmVyeXRoaW5nIQogICAKMjAwMS0xMi0wNCAwNzoxNCAgamJwbgoKICAgKiBzbm1wbGliL3NubXBfcGFyc2VfYXJncy5jOgoKICAgICAtIGRyb3AgLXAgYW5kIC1UIG9wdGlvbnMgZm9yIGFwcHMuCiAgIAoyMDAxLTEyLTA0IDAzOjEwICBqYnBuCgogICAqIHNubXBsaWIvOiBzbm1wVURQSVB2NkRvbWFpbi5jICwgc25tcFVEUElQdjZEb21haW4uaDoKCiAgICAgLSBhZGQgY3JlYXRlX29zdHJpbmcgbWV0aG9kLCBleHBvcnQgdWNkU25tcFVEUElQdjZEb21haW5bXQogICAKMjAwMS0xMi0wNCAwMjoxOSAgamJwbgoKICAgKiBtaWJzL1VDRC1TTk1QLU1JQi50eHQ6CgogICAgIC0gbWVudGlvbiBJUHY2IHRyYW5zcG9ydCBkb21haW4gT0lEcyBpbiByZWxldmFudCBjb21tZW50LgogICAKMjAwMS0xMi0wMyAxNTowNyAgbmJhCgogICAqIHNubXBsaWIvc25tcFVEUERvbWFpbi5jOgoKICAgUXVlbGwgYSBjb25zdCBjYXN0IHdhcm5pbmcuCiAgIAoyMDAxLTEyLTAzIDE1OjA3ICBuYmEKCiAgICogc25tcGxpYi9zbm1wX2FwaS5jOgoKICAgRml4IGRlYnVnIG91dHB1dCBmcm9tIHJldHJpZXMuCiAgIAoyMDAxLTEyLTAzIDE1OjA2ICBuYmEKCiAgICogYXBwcy9ub3RpZmljYXRpb25fbG9nLmMgLCBzbm1wbGliL29pZF9hcnJheS5jOgoKICAgSEFWRV9TWVNfVFlQRVNfSCBpcyBub3QgY29uZGl0aW9uYWwuCiAgIAoyMDAxLTEyLTAzIDE1OjA0ICBuYmEKCiAgICogYXBwcy9NYWtlZmlsZS5pbjoKCiAgIEZpeCB0byBhbGxvdyBjb21waWxhdGlvbnMgb3V0c2lkZSBzb3VyY2UgZGlyZWN0b3J5LgogICAKMjAwMS0xMi0wMyAxNTowMyAgbmJhCgogICAqIGFjY29uZmlnLmggLCBjb25maWcuaC5pbiAsIGNvbmZpZ3VyZSAsCiAgIGNvbmZpZ3VyZS5pbiAsIHNubXBsaWIvc25tcFVEUElQdjZEb21haW4uYyAsCiAgIHNubXBsaWIvc25tcF90cmFuc3BvcnQuYzoKCiAgIEZpeGVzIHRvIG1ha2UgVURQSVB2NiB0cmFuc3BvcnQgd29yayBmb3IgU29sYXJpcywgTGludXggYW5kIEZyZWVCU0QuCiAgIEl0IGNvbXBpbGVzLCBhbmQgdGhlIGFwcHMgc2VuZCB2NiBwYWNrZXRzLiBBZ2VudCBub3QgeWV0IHRlc3RlZC4KICAgCjIwMDEtMTItMDMgMDk6NDggIGhhcmRha2VyCgogICAqIGxvY2FsLzogbWliMmMuaXRlcmF0ZS5jb25mICwgbWliMmMuY3JlYXRlLWRhdGFzZXQuY29uZjoKCiAgIGNvcHkgcm9iZXJ0cyBzcGlmZnkgaGVhZGVyIHRleHQKICAgCjIwMDEtMTItMDMgMDg6MzYgIGhhcmRha2VyCgogICAqIGFwcHMvbm90aWZpY2F0aW9uX2xvZy5jOgoKICAgZGF0ZW50aW1lIGNvbHVtbi4KICAgCjIwMDEtMTItMDMgMDg6MDEgIGhhcmRha2VyCgogICAqIGFnZW50L3NubXBfYWdlbnQuYzoKCiAgIGZpeCBwcm9ibGVtIHdpdGggZG91YmxlIGRlbGVnYXRlZCByZXF1ZXN0cyBhZnRlciBnZXRuZXh0IGxvb3AuCiAgIAoyMDAxLTEyLTAzIDA4OjAwICBoYXJkYWtlcgoKICAgKiBjb25maWd1cmUgLCBjb25maWd1cmUuaW4gLAogICBtaWJzL05PVElGSUNBVElPTi1MT0ctTUlCLnR4dDoKCiAgIG5vdGlmaWNhdGlvbiBsb2cgbWliIGFkZGVkIHRvIGRlZmF1bHQgbGlzdC4KICAgCjIwMDEtMTItMDMgMDU6MzMgIGpicG4KCiAgICogYWdlbnQvbWliZ3JvdXAvYWdlbnR4L3Byb3RvY29sLmM6CgogICAgIC0gcmVtb3ZlIHNwdXJpb3VzIGRlYnVnZ2luZyBvdXRwdXQgKCJibGFoIikKICAgCjIwMDEtMTEtMzAgMjM6MjYgIGhhcmRha2VyCgogICAqIGFnZW50LzogYWdlbnRfaGFuZGxlci5jICwgc25tcF9hZ2VudC5jICwgc25tcF9hZ2VudC5oOgoKICAgQ2hhbmdlIGhvdyByZXF1ZXN0IHByb2Nlc3NpbmcgZ2V0cyBkb25lIHN1Y2ggdGhhdCByZXF1ZXN0IG9iamVjdHMgYXJlCiAgIGFsbCBjYWxsb2NlZCBhdCBvbmNlIGFuZCBnZXQgcmV1c2VkIGluc3RlYWQgb2YgcmVhbGxvY2F0ZWQuICBCaWcgc3BlZWQKICAgaW1wcm92ZW1lbnRzLgogICAKMjAwMS0xMS0zMCAxNToyMiAgaGFyZGFrZXIKCiAgICogTWFrZWZpbGUuaW4gLCBkb3h5Z2VuLmNvbmY6CgogICAibWFrZSBkb2MiIHRvIHJ1biBkb3h5Z2VuLgogICAKMjAwMS0xMS0zMCAxMDozMSAgaGFyZGFrZXIKCiAgICogYWdlbnQvaGVscGVycy86IGRlYnVnX2hhbmRsZXIuYyAsIG11bHRpcGxleGVyLmg6CgogICBkb3h5Z2VuIGZpeGVzCiAgIAoyMDAxLTExLTMwIDA5OjI2ICBqYnBuCgogICAqIGFnZW50L2FnZW50X2hhbmRsZXIuYzoKCiAgICAgLSB1c2UgREVCVUdNU0dPSURSQU5HRSBpbiByZWdpc3Rlcl9oYW5kbGVyKCkgaWYgYXBwcm9wcmlhdGUuCiAgIAoyMDAxLTExLTMwIDA5OjI0ICBqYnBuCgogICAqIGFnZW50L21pYmdyb3VwL2FnZW50eC9tYXN0ZXJfYWRtaW4uYzoKCiAgICAgLSBmaXggbWVtb3J5IGxlYWsgaW4gcmVnaXN0ZXJfYWdlbnR4X2xpc3QoKSB3aGVuIHN1YmFnZW50IHRyaWVzIHRvCiAgICAgICByZWdpc3RlciBhIE1JQiByZWdpb24gdGhhdCBmYWlscyBlaXRoZXIgYmVjYXVzZSBpdCBpcyBhIGR1cGxpY2F0ZQogICAgICAgb3IgYmVjYXVzZSBvZiBzb21lIG90aGVyIHJlYXNvbi4KICAgCjIwMDEtMTEtMzAgMDg6NDQgIGpicG4KCiAgICogYWdlbnQvaGVscGVycy9vbGRfYXBpLmM6CgogICAgIC0gZml4IG1lbW9yeSBsZWFrIG9mIG9sZF9pbmZvICh0aGF0IG5ldmVyIHNlZW1zIHRvIGdldCB1c2VkIGZvcgogICAgICAgYW55dGhpbmcgYW55d2F5PykKICAgCiAgICAgLSBmaXggbWVtb3J5IGxlYWsgdGhhdCBhcmlzZXMgZHVyaW5nIHJvdyByZWdpc3RyYXRpb24gKGluIEFnZW50WAogICAgICAgc3ViYWdlbnRzKSBiZWNhdXNlIHN1Y2Nlc3NpdmUgdmFycyBjYXVzZSBhcHBhcmVudCBkdXBsaWNhdGUKICAgICAgIHJlZ2lzdHJhdGlvbnMgKHRoaXMgaXMgYSBkZWZpY2llbmN5KSAtLSBidXQgaXQgd291bGQgYXBwZWFyIHRoaXMKICAgICAgIGNvdWxkIGFyaXNlIGluIG90aGVyIHNpdHVhdGlvbnMgdG9vIChnZW51aW5lIGR1cGxpY2F0ZQogICAgICAgcmVnaXN0cmF0aW9ucykuCiAgIAoyMDAxLTExLTMwIDA2OjMzICBqYnBuCgogICAqIGFnZW50L2FnZW50X3RyYXAuYzoKCiAgICAgLSBmaXggYnJva2VuIHBhcnNpbmcgaW4gc25tcGRfcGFyc2VfY29uZmlnX3RyYXBzZXNzKCkgLS0gbG9vcCB3YXMKICAgICAgIGNvcHlpbmcgdGhlIHNhbWUgKGZpcnN0KSB0b2tlbiBNQVhfQVJHUyB0aW1lcy4KICAgCiAgICAgLSBlbGltaW5hdGUgbWVtb3J5IGxlYWsgaW4gZGl0dG8uCiAgIAogICAgIC0gZml4IHR5cG8gKCJQYXVzaWJsZSBjYXVzZSIgLT4gIlBvc3NpYmxlIGNhdXNlKSBpbiBkaXR0by4KICAgCjIwMDEtMTEtMzAgMDY6MjkgIGpicG4KCiAgICogc25tcGxpYi9zbm1wX2FwaS5jOgoKICAgICAtIHByaW50IGZkIGluIHNlc3NfcHJvY2Vzc19wYWNrZXQoKSAtLSB1c2VmdWwgZm9yIGRlYnVnZ2luZwogICAKMjAwMS0xMS0zMCAwNjoyOCAgamJwbgoKICAgKiBzbm1wbGliLzogc25tcENhbGxiYWNrRG9tYWluLmMgLCBzbm1wQ2FsbGJhY2tEb21haW4uaDoKCiAgICAgLSByZW1vdmUgYSBjb3VwbGUgb2YgdW5uZWNlc3NhcnkgI2luY2x1ZGVzIGZyb20gc25tcENhbGxiYWNrRG9tYWluLmgKICAgCiAgICAgLSBzZXQgKm9wYXF1ZSB0byBOVUxMIGFmdGVyIHdlIGZyZWUgaXQgLS0gaXQgbWlnaHQgbWF0dGVyLgogICAKMjAwMS0xMS0zMCAwMzo0NyAgamJwbgoKICAgKiBhZ2VudC9taWJncm91cC9hZ2VudHgvc3ViYWdlbnQuYzoKCiAgICAgLSBjbG9uZSBQRFUgaW4gaGFuZGxlX2FnZW50eF9zdWJhZ2VudCgpIGJlZm9yZSBzZW5kaW5nIGl0IG9uIGNhbGxiYWNrCiAgICAgICBzZXNzaW9uIHRvIGF2b2lkIGRvdWJsZSBmcmVlKCkgYW5kIGZyZWUoKWQgbWVtb3J5IHJlYWRzLgogICAKICAgICAtIG1vcmUgY29uY2lzZSAoYWhlbSkgZGVjbGFyYXRpb24gb2YgbXljYWxsYmFjayBpbiBoYW5kbGVfYWdlbnR4X3BhY2tldCgpLgogICAKMjAwMS0xMS0yOSAwNTo1MSAgamJwbgoKICAgKiBhZ2VudC9taWJncm91cC9hZ2VudHgvbWFzdGVyX2FkbWluLmM6CgogICAgIC0gcHV0IHNlc3Npb24gYW5kIHN1YnNlc3Npb24gaW4gc3ViYWdlbnQgZGVzY3JpcHRpb24gKGhlbHBmdWwgZm9yCiAgICAgICBkZWJ1Z2dpbmcpCiAgIAoyMDAxLTExLTI5IDA1OjQ5ICBqYnBuCgogICAqIGFnZW50L2hlbHBlcnMvTWFrZWZpbGUuaW46CgogICAgIC0gZml4IElOU1RBTExIRUFERVJTCiAgIAoyMDAxLTExLTI5IDA1OjQ4ICBqYnBuCgogICAqIGFnZW50L21pYmdyb3VwL2FnZW50eC9zdWJhZ2VudC5jOgoKICAgICAtIGFkZCBzb21lIGRlYnVnZ2luZyB0byBpbml0X3N1YmFnZW50KCkgKHdoaWNoIHNob3dlZCB0aGF0IGl0IHdhc24ndAogICAgICAgYmVpbmcgY2FsbGVkLCBzby4uLikuCiAgIAogICAgIC0gZml4IGNhc3QgaW4gaGFuZGxlX3N1YmFnZW50X3NldF9yZXNwb25zZSgpCiAgIAoyMDAxLTExLTI5IDA1OjQ2ICBqYnBuCgogICAqIGFnZW50L3NubXBfdmFycy5jOgoKICAgICAtIG1ha2Ugc3VyZSBpbml0X3N1YmFnZW50KCkgZ2V0cyBjYWxsZWQKICAgCjIwMDEtMTEtMjggMDk6MjggIGhhcmRha2VyCgogICAqIGFnZW50L2FnZW50X3JlZ2lzdHJ5LmM6CgogICBjaGVjayBmb3Igc2Vzc2lvbiByZWdpc3RyYXRpb25zIGluIGFsbCBjb250ZXh0cy4KICAgCjIwMDEtMTEtMjggMDY6MzkgIGhhcmRha2VyCgogICAqIGFwcHMvbm90aWZpY2F0aW9uX2xvZy5jICwgc25tcGxpYi9vaWRfYXJyYXkuYzoKCiAgIEFkZCBzeXMvdHlwZXMuaCBmb3IgYnVnICM0ODYyNzcuCiAgIAoyMDAxLTExLTI4IDA0OjAzICBqYnBuCgogICAqIGFwcHMvbm90aWZpY2F0aW9uX2xvZy5jOgoKICAgICAtICNpbmNsdWRlIDxuZXRkYi5oPgogICAKMjAwMS0xMS0yOCAwNDowMyAgamJwbgoKICAgKiBjb25maWd1cmUuaW4gLCBzbm1wbGliL01ha2VmaWxlLmluOgoKICAgICAtIGluc3RhbGwgc25tcF90cmFuc3BvcnQuaCBhbmQgc25tcCpEb21haW4uaCAoZm9yIHRoZSBjb25maWd1cmVkCiAgICAgICB0cmFuc3BvcnQgZG9tYWlucykKICAgCjIwMDEtMTEtMjggMDM6MjkgIGpicG4KCiAgICogc25tcGxpYi91Y2Qtc25tcC1pbmNsdWRlcy5oOgoKICAgICAtIHJldmVyc2UgbXlzdGVyeSByZW1vdmFsIG9mICNpbmNsdWRlIDxuZXRpbmV0L2luLmg+IGFuZCAjaW5jbHVkZQogICA8c3lzL3RpbWUuaD4KICAgCjIwMDEtMTEtMjcgMTc6MjggIGhhcmRha2VyCgogICAqIGFnZW50Lzogc25tcF9hZ2VudC5jICwgc25tcF9hZ2VudC5oOgoKICAgbW9yZSBpbnRlbGxpZ2VudGx5IGFsbG9jYXRlIHRyZWUgc3BhY2UgYmFzZWQgb24gbnVtYmVyIG9mIHZhcmJpbmRzIGluIHJlcXVlc3QuCiAgIAoyMDAxLTExLTI3IDE0OjI2ICBoYXJkYWtlcgoKICAgKiBhZ2VudC86IHNubXBfYWdlbnQuYyAsIHNubXBfYWdlbnQuaDoKCiAgIG1hbGxvYyBvbmUgbGFyZ2UgdHJlZV9jYWNoZSBhcnJheSByYXRoZXIgdGhhbiBhbiBhcnJheSBvZiB0cmVlX2NhY2hlIHBvaW50ZXJzLgogICAKMjAwMS0xMS0yNyAxMjoxOSAgaGFyZGFrZXIKCiAgICogYWdlbnQvaGVscGVycy9hbGxfaGVscGVycy5oOgoKICAgaW5jbHVkZSBmaWxlIG5hbWUgY2hhbmdlLgogICAKMjAwMS0xMS0yNyAxMTo0MyAgaGFyZGFrZXIKCiAgICogYWdlbnQvc25tcF9hZ2VudC5jOgoKICAgY29tbWVudCBjaGFuZ2VzLgogICAKMjAwMS0xMS0yNyAwNzo1MiAgaGFyZGFrZXIKCiAgICogYXBwcy9NYWtlZmlsZS5pbjoKCiAgIGZpeGVkIE1ha2VmaWxlIGZvciBzbm1wdHJhcGQuCiAgIAoyMDAxLTExLTI3IDA3OjQ4ICBoYXJkYWtlcgoKICAgKiBhZ2VudC9oZWxwZXJzLzogTWFrZWZpbGUuaW4gLCBhbGxfaGVscGVycy5jICwKICAgYWxsX2hlbHBlcnMuaCAsIGRlYnVnX2hhbmRsZXIuYyAsIGRlYnVnX2hhbmRsZXIuaDoKCiAgIGRlYnVnIGhhbmRsZXIgY3JlYXRlZCBmb3IgaW5zZXJ0aW5nIGRlYnVnZ2luZyBvdXRwdXQgaW50byB0aGUgY2FsbGluZyBjaGFpbi4KICAgCjIwMDEtMTEtMjcgMDc6NDcgIGhhcmRha2VyCgogICAqIGFnZW50L2FnZW50X2hhbmRsZXIuYzoKCiAgIGVudW0gZGVmaW5pdGlvbnMgZm9yIG1vZGVzIGFuZCBjYW5fbW9kZXMuCiAgIAoyMDAxLTExLTI2IDE1OjI5ICBoYXJkYWtlcgoKICAgKiBhZ2VudC9zbm1wX2FnZW50LmM6CgogICBzZXQgUERVIHZhcmlhYmxlIHRvIE5VTEwgdG8gYXZvaWQgZnJlZWluZyBpdCB0d2ljZS4KICAgCjIwMDEtMTEtMjYgMTE6MjAgIGhhcmRha2VyCgogICAqIHNubXBsaWIvc25tcENhbGxiYWNrRG9tYWluLmM6CgogICBwbHVnIGFub3RoZXIgbWVtb3J5IGxlYWsuCiAgIAoyMDAxLTExLTI2IDA5OjA3ICBoYXJkYWtlcgoKICAgKiB0ZXN0aW5nL3Rlc3RzLzogVDAyMHNubXB2M2dldCAsIFQwMjFzbm1wdjNnZXRuZXh0ICwKICAgVDAyMnNubXB2M2dldE1ENSAsIFQwMjNzbm1wdjNnZXRNRDVERVMgLAogICBUMDI0c25tcHYzZ2V0U0hBMSAsIFQwMjVzbm1wdjNnZXRTSEFERVMgLAogICBUMDI4c25tcHYzZ2V0ZmFpbCAsIFQwMzBzbm1wdjN1c2VyY3JlYXRpb24gLAogICBUMDUzYWdlbnR2MXRyYXAgLCBUMDU0YWdlbnR2MmN0cmFwICwgVDA1NWFnZW50djFtaW50cmFwCiAgICwgVDA1NmFnZW50djJjbWludHJhcCAsIFQxMTBhZ2VudHhnZXQgLAogICBUMTExYWdlbnR4c2V0ICwgVDExMmFnZW50eHNldGZhaWwgLCBUMTEzYWdlbnR4dHJhcCAsCiAgIFQxMjBwcm94eWdldCAsIFQxMjFwcm94eXNldCAsIFQxMjJwcm94eXNldGZhaWw6CgogICBkb24ndCB1c2UgY29udGV4dHMgaW4gdGVzdHMuCiAgIAoyMDAxLTExLTI2IDA4OjU3ICBoYXJkYWtlcgoKICAgKiBzbm1wbGliL3NubXBDYWxsYmFja0RvbWFpbi5jOgoKICAgZml4IG1lbW9yeSBsZWFrLgogICAKMjAwMS0xMS0yNiAwODo0OSAgaGFyZGFrZXIKCiAgICogYWdlbnQvbWliZ3JvdXAvOiB0ZXN0ZGVsYXllZC5jICwgYWdlbnR4L21hc3Rlci5jICwKICAgdWNkLXNubXAvcHJveHkuYzoKCiAgIHVzZSBmcmVlX2RlbGVnYXRlZF9jYWNoZSgpIHRvIHBsdWcgbWVtb3J5IGxlYWtzLgogICAKMjAwMS0xMS0yNiAwODo0OCAgaGFyZGFrZXIKCiAgICogYWdlbnQvOiBhZ2VudF9oYW5kbGVyLmMgLCBhZ2VudF9oYW5kbGVyLmg6CgogICBmcmVlX2RlbGVnYXRlZF9jYWNoZSgpIHJvdXRpbmUKICAgCjIwMDEtMTEtMjYgMDg6MTkgIGpicG4KCiAgICogYXBwcy9zbm1wdHJhcGQuYzoKCiAgICAgLSBhZGQgdGhlIGFiaWxpdHkgdG8gbGlzdGVuIGZvciB0cmFwcyBvbiBtdWx0aXBsZSB0cmFuc3BvcnRzIHZpYSB0aGUKICAgICAgIC1wIG9wdGlvbiAoY29uc2lzdGVudCB3aXRoIHNubXBkKS4KICAgCjIwMDEtMTEtMjYgMDU6NDQgIGpicG4KCiAgICogYWdlbnQvbWliZ3JvdXAvdGFyZ2V0L3RhcmdldC5jOgoKICAgICAtIHVzZSBzbm1wX3Rkb21haW5fdHJhbnNwb3J0X29pZCgpIHRvIGRvIHNlc3Npb24gY3JlYXRpb24gZnJvbQogICAgICAgPHREb21haW4tb2lkLCB0QWRkcmVzcy1vY3RldC1zdHJpbmc+IHBhaXIsIHRvIGFsbG93IGNyZWF0aW9uIG9mCiAgICAgICBub24tSVB2NCBzZXNzaW9ucyBpbiBzbm1wVGFyZ2V0QWRkclRhYmxlLgogICAKMjAwMS0xMS0yNiAwNDo0NSAgamJwbgoKICAgKiBzbm1wbGliLzogc25tcEFBTDVQVkNEb21haW4uYyAsIHNubXBJUFhEb21haW4uYyAsCiAgIHNubXBUQ1BEb21haW4uYyAsIHNubXBVRFBEb21haW4uYyAsIHNubXBVbml4RG9tYWluLmMKICAgLCBzbm1wX3RyYW5zcG9ydC5jICwgc25tcF90cmFuc3BvcnQuaDoKCiAgICAgLSBhZGQgc3VwcG9ydCBmb3IgY3JlYXRpbmcgYSB0cmFuc3BvcnQgZnJvbSBhCiAgICAgICA8dERvbWFpbi1vaWQsIHRBZGRyZXNzLW9jdGV0LXN0cmluZz4gcGFpci4KICAgCjIwMDEtMTEtMjYgMDM6MDYgIGpicG4KCiAgICogYWdlbnQvbWliZ3JvdXAvdGFyZ2V0L3RhcmdldC5jOgoKICAgICAtIHVzZSBzbm1wX3Rkb21haW5fc3VwcG9ydCgpIHRvIGRldGVybWluZSB3aGV0aGVyIGEgdHJhbnNwb3J0IGRvbWFpbgogICAgICAgaXMgc3VwcG9ydGVkLgogICAKMjAwMS0xMS0yMyAxMDoyNCAgamJwbgoKICAgKiBhcHBzL3NubXB0cmFwZC5jOgoKICAgICAtIGFkZCBtdWx0aXBsZSB0cmFuc3BvcnQgZG9tYWluIHN1cHBvcnQgZm9yIHRyYXBkIC0tIHRoaXMgd2FzIHJlYWxseQogICAgICAgUkVBTExZIGVhc3khCiAgIAoyMDAxLTExLTIzIDA5OjI1ICBqYnBuCgogICAqIGFnZW50L21pYmdyb3VwL2Rpc21hbi9tdGVUcmlnZ2VyVGFibGUuYyAsCiAgIHNubXBsaWIvc25tcF90cmFuc3BvcnQuYyAsIHNubXBsaWIvc25tcF90cmFuc3BvcnQuaDoKCiAgICAgLSByZW1vdmUgbGVnYWN5IGZ1bmN0aW9uIHNubXBfdHJhbnNwb3J0X3N1cHBvcnQoKSAocmVwbGFjZWQgd2l0aAogICAgICAgc25tcF90ZG9tYWluX3N1cHBvcnQoKSkuCiAgIAoyMDAxLTExLTIzIDA4OjU3ICBqYnBuCgogICAqIHNubXBsaWIvc25tcEFBTDVQVkNEb21haW4uYzoKCiAgICAgLSB1c2UgbmV0d29yayBvcmRlciBmb3IgQUFMNVBWQyB0cmFuc3BvcnQgYWRkcmVzcyBlbmNvZGluZwogICAKMjAwMS0xMS0yMyAwODo0NyAgamJwbgoKICAgKiBzbm1wbGliLzogc25tcEFBTDVQVkNEb21haW4uYyAsIHNubXBJUFhEb21haW4uYyAsCiAgIHNubXBVbml4RG9tYWluLmM6CgogICAgIC0gc2V0IGxvY2FsX2xlbmd0aCwgcmVtb3RlX2xlbmd0aCBhcyBhcHByb3ByaWF0ZQogICAKMjAwMS0xMS0yMyAwODozOSAgamJwbgoKICAgKiBzbm1wbGliL01ha2VmaWxlLmluOgoKICAgICAtIGZpeCB0eXBvCiAgIAoyMDAxLTExLTIzIDA4OjM0ICBqYnBuCgogICAqIGFnZW50LzogYWdlbnRfdHJhcC5jICwKICAgbWliZ3JvdXAvbm90aWZpY2F0aW9uL3NubXBOb3RpZnlUYWJsZS5jOgoKICAgICAtIG1ha2UgdHJhcHMgd29yayB3aXRoIG5ldy1zdHlsZSBhZGRyZXNzZXMsIHVzZSBkb21haW4tYmFzZWQgYWRkcmVzcwogICAgICAgZW5jb2RpbmdzIGluIHNubXBUYXJnZXRBZGRyVGFibGUuICBOb3RlIHlvdSBjYW4gbm93IHNlbmQgdHJhcHMvaW5mb3JtcwogICAgICAgb3ZlciBhbnkgc3VwcG9ydGVkIHRyYW5zcG9ydCB0eXBlIGJ5IHVzaW5nIHRoZSB0cmFwc2VzcyBkaXJlY3RpdmUgYW5kCiAgICAgICBhIHRyYW5zcG9ydDphZGRyZXNzIHR5cGUgc3BlY2lmaWNhdGlvbi4KICAgCjIwMDEtMTEtMjMgMDg6MzEgIGpicG4KCiAgICogc25tcGxpYi86IHNubXBBQUw1UFZDRG9tYWluLmMgLCBzbm1wSVBYRG9tYWluLmMgLAogICBzbm1wVENQRG9tYWluLmMgLCBzbm1wVURQRG9tYWluLmMgLCBzbm1wVW5peERvbWFpbi5jOgoKICAgICAtIGNyZWF0ZSBhcHByb3ByaWF0ZWx5LWVuY29kZWQgbG9jYWwgb3IgcmVtb3RlIGVuZHBvaW50IGFkZHJlc3NlcyBhdAogICAgICAgdHJhbnNwb3J0IG9wZW4gdGltZS4KICAgCjIwMDEtMTEtMjMgMDY6NTAgIGpicG4KCiAgICogc25tcGxpYi9NYWtlZmlsZS5pbjoKCiAgICAgLSB1cGRhdGUgZGVwZW5kZW5jaWVzIGZvciB0cmFuc3BvcnRzCiAgIAoyMDAxLTExLTIyIDA5OjA4ICBqYnBuCgogICAqIHRlc3RpbmcvOiBURVNUQ09ORi5zaCAsIGV2YWxfdG9vbHMuc2ggLAogICB0ZXN0cy9UMDAxc25tcHYxZ2V0ICwgdGVzdHMvVDAwMnNubXB2MWdldG5leHQgLAogICB0ZXN0cy9UMDAzc25tcHYxZ2V0ZmFpbCAsIHRlc3RzL1QwMTRzbm1wdjJjZ2V0ICwKICAgdGVzdHMvVDAxNXNubXB2MmNnZXRuZXh0ICwgdGVzdHMvVDAxNnNubXB2MmNnZXRmYWlsICwKICAgdGVzdHMvVDAxN3NubXB2MmN0b3YxZ2V0ZmFpbCAsIHRlc3RzL1QwMThzbm1wdjF0b3YyY2dldGZhaWwKICAgLCB0ZXN0cy9UMDIwc25tcHYzZ2V0ICwgdGVzdHMvVDAyMXNubXB2M2dldG5leHQgLAogICB0ZXN0cy9UMDIyc25tcHYzZ2V0TUQ1ICwgdGVzdHMvVDAyM3NubXB2M2dldE1ENURFUyAsCiAgIHRlc3RzL1QwMjRzbm1wdjNnZXRTSEExICwgdGVzdHMvVDAyNXNubXB2M2dldFNIQURFUyAsCiAgIHRlc3RzL1QwMjhzbm1wdjNnZXRmYWlsICwgdGVzdHMvVDAzMHNubXB2M3VzZXJjcmVhdGlvbiAsCiAgIHRlc3RzL1QwNDlzbm1wdjNpbmZvcm0gLCB0ZXN0cy9UMDUwc25tcHYzdHJhcCAsCiAgIHRlc3RzL1QwNTFzbm1wdjJjdHJhcCAsIHRlc3RzL1QwNTJzbm1wdjJjaW5mb3JtICwKICAgdGVzdHMvVDA1M2FnZW50djF0cmFwICwgdGVzdHMvVDA1NGFnZW50djJjdHJhcCAsCiAgIHRlc3RzL1QwNTVhZ2VudHYxbWludHJhcCAsIHRlc3RzL1QwNTZhZ2VudHYyY21pbnRyYXAgLAogICB0ZXN0cy9UMDU4YWdlbnRhdXRodHJhcCAsIHRlc3RzL1QxMDBhZ2VudGh1cCAsCiAgIHRlc3RzL1QxMTBhZ2VudHhnZXQgLCB0ZXN0cy9UMTExYWdlbnR4c2V0ICwKICAgdGVzdHMvVDExMmFnZW50eHNldGZhaWwgLCB0ZXN0cy9UMTEzYWdlbnR4dHJhcCAsCiAgIHRlc3RzL1QxMjBwcm94eWdldCAsIHRlc3RzL1QxMjFwcm94eXNldCAsCiAgIHRlc3RzL1QxMjJwcm94eXNldGZhaWw6CgogICAgIC0gdXNlIHVkcDo8aG9zdG5hbWU+Ojxwb3J0PiBpbnN0ZWFkIG9mIC1wIHRvIG1ha2UgdGVzdHMgd29yayBhZ2FpbgogICAKMjAwMS0xMS0yMiAwMDoyMCAgaGFyZGFrZXIKCiAgICogYXBwcy86IG5vdGlmaWNhdGlvbl9sb2cuYyAsIG5vdGlmaWNhdGlvbl9sb2cuaDoKCiAgIG1vcmsgd29yZSBvbiB0aGUgbm90aWZpY2F0aW9uIGxvZyBtaWIuICBJdCBub3cgc3VwcG9ydHMgdmFyaWFibGUKICAgc3RvcmFnZSwgYnV0IHNlZ2ZhdWx0cyBvbiBhY2Nlc3MgZHVlIHRvIHBkdSBjbG9uaW5nIHByb2JsZW1zIEknbSBub3QKICAgZ29pbmcgdG8gd29yayBvdXQgcmlnaHQgbm93LgogICAKMjAwMS0xMS0yMSAyMzoxNSAgaGFyZGFrZXIKCiAgICogYXBwcy9NYWtlZmlsZS5pbjoKCiAgIGZpeCBzbm1wdHJhcGQgbGlua2luZy4KICAgCjIwMDEtMTEtMjEgMjI6NTggIHJzdG9yeQoKICAgKiBzbm1wbGliL2FzbjEuaDoKCiAgIHJlbW92ZSBkdXBsaWNhdGUgT0lEX0xFTkdUSDsgdXNlIGFjdHVhbCBvaWQgdHlwZSBpbiBjYWxjdWxhdGlvbgogICAKMjAwMS0xMS0yMSAyMjo0OSAgaGFyZGFrZXIKCiAgICogc25tcGxpYi9zbm1wQ2FsbGJhY2tEb21haW4uYzoKCiAgIGFkZCBOVUxMIHBvaW50ZXIgZm9yIHJidWlsZCBpbiBzZXNzaW9uIGNyZWF0aW9uLgogICAKMjAwMS0xMS0yMSAyMjo0OSAgaGFyZGFrZXIKCiAgICogYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvcHJveHkuYyAsIGFwcHMvbm90aWZpY2F0aW9uX2xvZy5jOgoKICAgbmV0aW5ldC9pbi5oIG5lZWRlZC4KICAgCjIwMDEtMTEtMjEgMjI6NDkgIGhhcmRha2VyCgogICAqIGFnZW50L21pYmdyb3VwL2FnZW50eC9zdWJhZ2VudC5jOgoKICAgdmFyaWFibGUgY2xlYW4gdXBzLgogICAKMjAwMS0xMS0yMSAyMjozMyAgaGFyZGFrZXIKCiAgICogYWdlbnQvbWliZ3JvdXAvYWdlbnR4L21hc3Rlcl9yZXF1ZXN0LmMgLAogICBhZ2VudC9taWJncm91cC9taWJJSS9pY21wLmMgLCBhZ2VudC9taWJncm91cC9taWJJSS90Y3BUYWJsZS5jCiAgICwgYWdlbnQvbWliZ3JvdXAvbWliSUkvdWRwVGFibGUuYyAsCiAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL2ZpbGUuYyAsIGxvY2FsL21pYjJjICwKICAgbG9jYWwvbWliMmMuYXJyYXktYXV0by5jb25mICwgbG9jYWwvbWliMmMuYXJyYXktdXNlci5jb25mCiAgICwgbG9jYWwvbWliMmMuY3JlYXRlLWRhdGFzZXQuY29uZiAsCiAgIGxvY2FsL21pYjJjLml0ZXJhdGUuY29uZiAsIGxvY2FsL21pYjJjLnZhcnR5cGVzLmNvbmYgLAogICBtYW4vTWFrZWZpbGUuaW4gLCBtaWJzL01ha2VmaWxlLmluICwKICAgbWlicy9ORVQtU05NUC1BR0VOVC1NSUIudHh0ICwgcGVybC9TTk1QL1NOTVAueHMgLAogICBzbm1wbGliL01ha2VmaWxlLmluICwgc25tcGxpYi9taWIuYyAsIHNubXBsaWIvbWliLmgKICAgLCBzbm1wbGliL3JlYWRfY29uZmlnLmMgLCBzbm1wbGliL3JlYWRfY29uZmlnLmggLAogICBzbm1wbGliL3NubXAtdGMuaCAsIHNubXBsaWIvc25tcFVuaXhEb21haW4uaCAsCiAgIHNubXBsaWIvc25tcF9hcGkuYyAsIHNubXBsaWIvc25tcF9hcGkuaCAsCiAgIHNubXBsaWIvc25tcF9jbGllbnQuYyAsIHNubXBsaWIvc25tcF9jbGllbnQuaCAsCiAgIHNubXBsaWIvc25tcF90cmFuc3BvcnQuYyAsIHNubXBsaWIvc25tcF90cmFuc3BvcnQuaCAsCiAgIHNubXBsaWIvdG9vbHMuYyAsIHNubXBsaWIvdG9vbHMuaCAsIHNubXBsaWIvdmFjbS5jOgoKICAgRGVhdGg6IFVDRC1TTk1QCiAgIEJpcnRoOiBORVQtU05NUAogICAgIChuZXcgYWdlbnQgQVBJIG1lcmdlZCB0byB0aGUgbWFpbiBicmFuY2gpCiAgIAoyMDAxLTExLTIxIDIyOjA4ICByc3RvcnkKCiAgICogc25tcGxpYi86IHZhY20uaCAsIGFzbjEuaDoKCiAgIERlYXRoOiBVQ0QtU05NUAogICBCaXJ0aDogTkVULVNOTVAKICAgICAobmV3IGFnZW50IEFQSSBtZXJnZWQgdG8gdGhlIG1haW4gYnJhbmNoKQogICAKMjAwMS0xMS0yMSAyMTo0MyAgcnN0b3J5CgogICAqIHNubXBsaWIvOiBzbm1wQ2FsbGJhY2tEb21haW4uYyAsIHNubXBDYWxsYmFja0RvbWFpbi5oOgoKICAgRGVhdGg6IFVDRC1TTk1QCiAgIEJpcnRoOiBORVQtU05NUAogICAgIChuZXcgYWdlbnQgQVBJIG1lcmdlZCB0byB0aGUgbWFpbiBicmFuY2gpCiAgIAoyMDAxLTExLTIxIDIxOjQwICByc3RvcnkKCiAgICogc25tcGxpYi9zbm1wLmg6CgogICBEZWF0aDogVUNELVNOTVAKICAgQmlydGg6IE5FVC1TTk1QCiAgICAgKG5ldyBhZ2VudCBBUEkgbWVyZ2VkIHRvIHRoZSBtYWluIGJyYW5jaCkKICAgCjIwMDEtMTEtMjEgMjE6MzMgIHJzdG9yeQoKICAgKiBzbm1wbGliLzogb2lkX2FycmF5LmMgLCBvaWRfYXJyYXkuaDoKCiAgIERlYXRoOiBVQ0QtU05NUAogICBCaXJ0aDogTkVULVNOTVAKICAgICAobmV3IGFnZW50IEFQSSBtZXJnZWQgdG8gdGhlIG1haW4gYnJhbmNoKQogICAKMjAwMS0xMS0yMSAyMTozMCAgcnN0b3J5CgogICAqIHNubXBsaWIvOiBkYXRhX2xpc3QuYyAsIGRhdGFfbGlzdC5oOgoKICAgRGVhdGg6IFVDRC1TTk1QCiAgIEJpcnRoOiBORVQtU05NUAogICAgIChuZXcgYWdlbnQgQVBJIG1lcmdlZCB0byB0aGUgbWFpbiBicmFuY2gpCiAgIAoyMDAxLTExLTIxIDE4OjU2ICBoYXJkYWtlcgoKICAgKiBNYWtlZmlsZS5pbiAsIGNvbmZpZy5oLmluICwgY29uZmlndXJlICwKICAgY29uZmlndXJlLmluICwgdmVyc2lvbi5oICwgYWdlbnQvTWFrZWZpbGUuaW4gLAogICBhZ2VudC9hZ2VudF9oYW5kbGVyLmMgLCBhZ2VudC9hZ2VudF9oYW5kbGVyLmggLAogICBhZ2VudC9hZ2VudF9pbmRleC5jICwgYWdlbnQvYWdlbnRfcmVhZF9jb25maWcuYyAsCiAgIGFnZW50L2FnZW50X3JlZ2lzdHJ5LmMgLCBhZ2VudC9hZ2VudF9yZWdpc3RyeS5oICwKICAgYWdlbnQvbWliX21vZHVsZXMuYyAsIGFnZW50L3NubXBfYWdlbnQuYyAsCiAgIGFnZW50L3NubXBfYWdlbnQuaCAsIGFnZW50L3NubXBfdmFycy5jICwgYWdlbnQvc25tcGQuYwogICAsIGFnZW50L3VjZC1zbm1wLWFnZW50LWluY2x1ZGVzLmggLCBhZ2VudC92YXJfc3RydWN0LmgKICAgLCBhZ2VudC9oZWxwZXJzLy5jdnNpZ25vcmUgLCBhZ2VudC9oZWxwZXJzL01ha2VmaWxlLmluCiAgICwgYWdlbnQvaGVscGVycy9hbGxfaGVscGVycy5jICwKICAgYWdlbnQvaGVscGVycy9hbGxfaGVscGVycy5oICwgYWdlbnQvaGVscGVycy9pbnN0YW5jZS5jICwKICAgYWdlbnQvaGVscGVycy9pbnN0YW5jZS5oICwgYWdlbnQvaGVscGVycy9tdWx0aXBsZXhlci5jICwKICAgYWdlbnQvaGVscGVycy9tdWx0aXBsZXhlci5oICwgYWdlbnQvaGVscGVycy9udWxsLmMgLAogICBhZ2VudC9oZWxwZXJzL251bGwuaCAsIGFnZW50L2hlbHBlcnMvb2xkX2FwaS5jICwKICAgYWdlbnQvaGVscGVycy9vbGRfYXBpLmggLCBhZ2VudC9oZWxwZXJzL3JlYWRfb25seS5jICwKICAgYWdlbnQvaGVscGVycy9yZWFkX29ubHkuaCAsIGFnZW50L2hlbHBlcnMvc2VyaWFsaXplLmMgLAogICBhZ2VudC9oZWxwZXJzL3NlcmlhbGl6ZS5oICwgYWdlbnQvaGVscGVycy9zZXRfaGVscGVyLmggLAogICBhZ2VudC9oZWxwZXJzL3RhYmxlLmMgLCBhZ2VudC9oZWxwZXJzL3RhYmxlLmggLAogICBhZ2VudC9oZWxwZXJzL3RhYmxlX2FycmF5LmMgLCBhZ2VudC9oZWxwZXJzL3RhYmxlX2FycmF5LmgKICAgLCBhZ2VudC9oZWxwZXJzL3RhYmxlX2RhdGEuYyAsIGFnZW50L2hlbHBlcnMvdGFibGVfZGF0YS5oCiAgICwgYWdlbnQvaGVscGVycy90YWJsZV9kYXRhc2V0LmMgLAogICBhZ2VudC9oZWxwZXJzL3RhYmxlX2RhdGFzZXQuaCAsIGFnZW50L2hlbHBlcnMvdGFibGVfaXRlcmF0b3IuYwogICAsIGFnZW50L2hlbHBlcnMvdGFibGVfaXRlcmF0b3IuaCAsCiAgIGFnZW50L21pYmdyb3VwL01ha2VmaWxlLmluICwgYWdlbnQvbWliZ3JvdXAvaG9zdF9yZXMuaAogICAsIGFnZW50L21pYmdyb3VwL21pYmluY2wuaCAsIGFnZW50L21pYmdyb3VwL3RhcmdldC5oCiAgICwgYWdlbnQvbWliZ3JvdXAvdGVzdGRlbGF5ZWQuYyAsCiAgIGFnZW50L21pYmdyb3VwL3Rlc3RkZWxheWVkLmggLCBhZ2VudC9taWJncm91cC90ZXN0aGFuZGxlci5jCiAgICwgYWdlbnQvbWliZ3JvdXAvdGVzdGhhbmRsZXIuaCAsCiAgIGFnZW50L21pYmdyb3VwL3V0aWxfZnVuY3MuYyAsIGFnZW50L21pYmdyb3VwL3V0aWxfZnVuY3MuaAogICAsIGFnZW50L21pYmdyb3VwL2FnZW50L25zVHJhbnNhY3Rpb25UYWJsZS5jICwKICAgYWdlbnQvbWliZ3JvdXAvYWdlbnQvbnNUcmFuc2FjdGlvblRhYmxlLmggLAogICBhZ2VudC9taWJncm91cC9hZ2VudHgvLmN2c2lnbm9yZSAsCiAgIGFnZW50L21pYmdyb3VwL2FnZW50eC9jbGllbnQuYyAsCiAgIGFnZW50L21pYmdyb3VwL2FnZW50eC9tYXN0ZXIuYyAsCiAgIGFnZW50L21pYmdyb3VwL2FnZW50eC9tYXN0ZXIuaCAsCiAgIGFnZW50L21pYmdyb3VwL2FnZW50eC9tYXN0ZXJfYWRtaW4uYyAsCiAgIGFnZW50L21pYmdyb3VwL2FnZW50eC9zdWJhZ2VudC5jICwKICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuLy5jdnNpZ25vcmUgLAogICBhZ2VudC9taWJncm91cC9kaXNtYW4vbXRlVHJpZ2dlclRhYmxlLmMgLAogICBhZ2VudC9taWJncm91cC9leGFtcGxlcy8uY3ZzaWdub3JlICwKICAgYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9kaXNrLmMgLCBhZ2VudC9taWJncm91cC9ob3N0L2hyX2Rpc2suaAogICAsIGFnZW50L21pYmdyb3VwL2hvc3QvaHJfcGFydGl0aW9uLmMgLAogICBhZ2VudC9taWJncm91cC9ob3N0L2hyX3BhcnRpdGlvbi5oICwKICAgYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9zd2luc3QuYyAsCiAgIGFnZW50L21pYmdyb3VwL21pYklJLy5jdnNpZ25vcmUgLAogICBhZ2VudC9taWJncm91cC9taWJJSS9pbnRlcmZhY2VzLmMgLCBhZ2VudC9taWJncm91cC9taWJJSS9pcC5jCiAgICwgYWdlbnQvbWliZ3JvdXAvbWliSUkvc3lzdGVtX21pYi5jICwKICAgYWdlbnQvbWliZ3JvdXAvbWliSUkvdGNwLmMgLCBhZ2VudC9taWJncm91cC9taWJJSS91ZHAuYwogICAsIGFnZW50L21pYmdyb3VwL21pYklJL3ZhY21fY29udGV4dC5jICwKICAgYWdlbnQvbWliZ3JvdXAvbWliSUkvdmFjbV9jb250ZXh0LmggLAogICBhZ2VudC9taWJncm91cC9taWJJSS92YWNtX3ZhcnMuYyAsCiAgIGFnZW50L21pYmdyb3VwL21pYklJL3ZhY21fdmFycy5oICwKICAgYWdlbnQvbWliZ3JvdXAvdGFyZ2V0L3RhcmdldF9jb3VudGVycy5jICwKICAgYWdlbnQvbWliZ3JvdXAvdGFyZ2V0L3RhcmdldF9jb3VudGVycy5oICwKICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvcHJveHkuYyAsCiAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Byb3h5LmggLAogICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9yZWdpc3RyeS5jICwgYXBwcy9NYWtlZmlsZS5pbiAsCiAgIGFwcHMvbm90aWZpY2F0aW9uX2xvZy5jICwgYXBwcy9ub3RpZmljYXRpb25fbG9nLmggLAogICBhcHBzL3NubXB0cmFwZC5jOgoKICAgRGVhdGg6IFVDRC1TTk1QCiAgIEJpcnRoOiBORVQtU05NUAogICAgIChuZXcgYWdlbnQgQVBJIG1lcmdlZCB0byB0aGUgbWFpbiBicmFuY2gpCiAgIAoyMDAxLTExLTIxIDA2OjQzICBqYnBuCgogICAqIGNvbmZpZy5oLmluOgoKICAgICAtIElQdjYgY29uZmlnIGRlZnMKICAgCjIwMDEtMTEtMjEgMDY6MzYgIGpicG4KCiAgICogYWdlbnQvc25tcF9hZ2VudC5jICwgc25tcGxpYi9zbm1wX2FwaS5jOgoKICAgICAtIHJlbW92ZSBub3ctZXh0cmFuZW91cyAjaW5jbHVkZSAic25tcEJsYWhEb21haW4uaCIgbGluZXMKICAgCjIwMDEtMTEtMjEgMDM6MzkgIGpicG4KCiAgICogYXBwcy8uY3ZzaWdub3JlOgoKICAgW25vIGxvZyBtZXNzYWdlXQogICAKMjAwMS0xMS0yMCAwOTozOCAgamJwbgoKICAgKiBzbm1wbGliLzogc25tcElQWERvbWFpbi5jICwgc25tcElQWERvbWFpbi5oOgoKICAgICAtIGR1aC4gIEZvcmdvdCBhIGNvdXBsZSBvZiB0aGluZ3MgdG8gZG8gd2l0aCBkb21haW4tYmFzZWQgdHJhbnNwb3J0CiAgICAgICBhZGRyZXNzIHBhcnNpbmcuCiAgIAoyMDAxLTExLTIwIDA5OjI5ICBqYnBuCgogICAqIGFnZW50L3NubXBfYWdlbnQuYzoKCiAgICAgLSB1c2UgbmV3IGRvbWFpbi1iYXNlZCB0cmFuc3BvcnQgYWRkcmVzcyBwYXJzaW5nIGZvciBhZ2VudCBOU0FQcwogICAKMjAwMS0xMS0yMCAwOToyNyAgamJwbgoKICAgKiBzbm1wbGliLzogc25tcEFBTDVQVkNEb21haW4uYyAsIHNubXBBQUw1UFZDRG9tYWluLmggLAogICBzbm1wSVBYRG9tYWluLmMgLCBzbm1wVENQRG9tYWluLmMgLCBzbm1wVENQRG9tYWluLmgKICAgLCBzbm1wVURQRG9tYWluLmMgLCBzbm1wVURQRG9tYWluLmggLAogICBzbm1wVW5peERvbWFpbi5jICwgc25tcFVuaXhEb21haW4uaCAsIHNubXBfYXBpLmMgLAogICBzbm1wX3RyYW5zcG9ydC5jICwgc25tcF90cmFuc3BvcnQuaDoKCiAgICAgLSBkb21haW4tYmFzZWQgdHJhbnNwb3J0IGFkZHJlc3MgcGFyc2luZwogICAKMjAwMS0xMS0yMCAwOToxNiAgamJwbgoKICAgKiBzbm1wbGliLzogc25tcFVEUElQdjZEb21haW4uYyAsIHNubXBVRFBJUHY2RG9tYWluLmg6CgogICAgIC0gVURQL0lQdjYgdHJhbnNwb3J0IGRvbWFpbi4gIE5vdGU6IGluY29tcGxldGUhCiAgIAoyMDAxLTExLTIwIDA4OjI5ICBqYnBuCgogICAqIGFnZW50LzogYWdlbnRfaW5kZXguYyAsIGFnZW50X2luZGV4Lmg6CgogICAgIC0gdW5yZWdpc3Rlcl97c3RyaW5nLGludCxvaWR9X2luZGV4KCkgdXRpbGl0eSBmdW5jdGlvbnMgY29udHJpYnV0ZWQKICAgICAgIGJ5IERhbWlhbiBHaWxtdXJyYXkuCiAgIAoyMDAxLTExLTIwIDAyOjI2ICBqYnBuCgogICAqIHNubXBsaWIvOiBzbm1wX2FwaS5oIChWNC0yLXBhdGNoZXMuMSksIHNubXBfYXBpLmg6CgogICAgIC0gcmVtb3ZlIGR1cGxpY2F0ZSBkZWZpbml0aW9uIG9mIFNOTVBfTUFYX1NFQ19OQU1FX1NJWkUsIG5vdGVkIGJ5CiAgICAgICBLYXJsIE0uIEhlZ2Jsb29tLgogICAKMjAwMS0xMS0xOSAxNjo1OSAgZHJpZWh1aXMKCiAgICogc25tcGxpYi9hc24xLmg6CgogICBGaXggdHlwbyBpbiBjb21tZW50IFtrYXJsaGVnQG1pY3Jvc2hhcnAuY29tXQogICAKMjAwMS0xMS0xNiAwODozNCAgamJwbgoKICAgKiBhcHBzL3NubXB0ZXN0LmM6CgogICAgIC0gYWRkIHN1cHBvcnQgZm9yIFVuc2lnbmVkMzIvR2F1Z2UzMiB0eXBlcwogICAKMjAwMS0xMS0xNSAxMDowMyAgamJwbgoKICAgKiBhZ2VudC9taWJncm91cC9hZ2VudHgvOiBwcm90b2NvbC5jIChWNC0yLXBhdGNoZXMuNSksIHByb3RvY29sLmM6CgogICAgIC0gc3RyaWN0ZXIgdGVzdCBmb3IgbnVsbCBPSURzCiAgIAoyMDAxLTExLTE1IDA4OjQ0ICBqYnBuCgogICAqIG1hbi9zbm1wZC5jb25mLjUuZGVmOgoKICAgICAtIGRvY3VtZW50IHJlYWQtb25seSBuYXR1cmUgb2Ygc25tcEVuYWJsZUF1dGhlblRyYXBzLjAgaWYgdmFsdWUgaXMKICAgICAgIGNvbmZpZ3VyZWQgdmlhIHRoZSBhdXRodHJhcGVuYWJsZSB0b2tlbgogICAKMjAwMS0xMS0xNSAwODo0NCAgamJwbgoKICAgKiBhZ2VudC86IGFnZW50X3JlYWRfY29uZmlnLmMgLCBhZ2VudF90cmFwLmMgLAogICBtaWJncm91cC9taWJJSS9zbm1wX21pYi5jOgoKICAgICAtIG1ha2UgdmFsdWUgb2Ygc25tcEVuYWJsZUF1dGhlblRyYXBzLjAgcGVyc2lzdGVudC4gIFNldHRpbmcgdmlhCiAgICAgICBhIHJlYWQtb25seSBjb25maWd1cmF0aW9uIGZpbGUgYWxzbyBtYWtlcyBvYmplY3Qgbm90V3JpdGFibGUgKGFzCiAgICAgICBzeXNDb250YWN0LjAgZXQgYWwuKS4KICAgCjIwMDEtMTEtMTUgMDY6NTcgIGpicG4KCiAgICogYWdlbnQvbWliZ3JvdXAvbWliSUkvdmFjbV92YXJzLmM6CgogICAgIC0gbGV0IFZBQ00gY2hlY2tzIHN1Y2NlZWQgZm9yIG5vbi1JUHY0IHRyYW5zcG9ydHMKICAgCjIwMDEtMTEtMTUgMDU6MTkgIGpicG4KCiAgICogdGVzdGluZy90ZXN0cy86IFQxMTFhZ2VudHhzZXQgLCBUMTIxcHJveHlzZXQ6CgogICAgIC0gdXNlIHBzeXNjb250YWN0IG5vdCBzeXNjb250YWN0IHRvIHNldCBpbml0aWFsIHZhbHVlIG9mIHN5c0NvbnRhY3QuMAogICAgICAgb2JqZWN0IHNpbmNlIHRoZSBsYXR0ZXIgYWxzbyBtYWtlcyB0aGUgb2JqZWN0IHJlYWQtb25seS4KICAgCjIwMDEtMTEtMTUgMDU6MDcgIGpicG4KCiAgICogYWdlbnQvOiBzbm1wZC5jIChWNC0yLXBhdGNoZXMuNiksIHNubXBkLmM6CgogICAgIC0gbWlub3IgZml4IHRvIGZvcm1hdHRpbmcgb2YgdXNhZ2UgbWVzc2FnZQogICAKMjAwMS0xMS0xNSAwNDowNSAgamJwbgoKICAgKiBhZ2VudC9taWJncm91cC9hZ2VudHgvYWdlbnR4X2NvbmZpZy5jOgoKICAgICAtIGFkZCBtaXNzaW5nICNpbmNsdWRlICJzbm1wZC5oIiAoZm9yICNkZWZpbml0aW9uIG9mIE1BU1RFUl9BR0VOVCkKICAgICAtIGRvbid0IHN0cmR1cCgpIGFnZW50eHNvY2tldCB2YWx1ZSAtLSBkc19zZXRfc3RyaW5nIGRvZXMgaXQgZm9yIHlvdQogICAgIC0gY2hhbmdlIGRlYnVnZ2luZyB0byBmaXQgaW4gYmV0dGVyIHdpdGggcmVzdCBvZiBtb2R1bGUKICAgCjIwMDEtMTEtMTQgMTY6MDUgIGhhcmRha2VyCgogICAqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluIChWNC0yLXBhdGNoZXMuWzcsN10pLCBjb25maWcuaC5pbgogICAsIGNvbmZpZ3VyZSAsIGNvbmZpZ3VyZS5pbjoKCiAgIHBhdGNoIGZyb20gSGFycmllIHRvIGZpeCBpbml0IGZ1bmN0aW9uIGNoZWNraW5nIGluIG1vZHVsZXMKICAgCjIwMDEtMTEtMTQgMTY6MDAgIGhhcmRha2VyCgogICAqIGFnZW50L21pYmdyb3VwL2FnZW50eC86IGFnZW50eF9jb25maWcuYyAsIGFnZW50eF9jb25maWcuaAogICAsIG1hc3Rlci5jICwgbWFzdGVyLmggLCBzdWJhZ2VudC5oOgoKICAgc2xpZ2h0bHkgbW9kaWZpZWQgcGF0Y2ggZnJvbSBIYXJyaWUgdG8gbW92ZSBhZ2VudHggY29uZmlndXJhdGlvbiBpbnRvCiAgIGEgc2VwYXJhdGUgZmlsZS4KICAgCjIwMDEtMTEtMTMgMTM6NTcgIGhhcmRha2VyCgogICAqIGFwcHMvbm90aWZpY2F0aW9uX2xvZy5oOgoKICAgZmlsZSBub3RpZmljYXRpb25fbG9nLmggd2FzIGluaXRpYWxseSBhZGRlZCBvbiBicmFuY2ggTkVXLUFHRU5ULUFQSS4KICAgCjIwMDEtMTEtMTMgMTM6NTcgIGhhcmRha2VyCgogICAqIGFwcHMvbm90aWZpY2F0aW9uX2xvZy5jOgoKICAgZmlsZSBub3RpZmljYXRpb25fbG9nLmMgd2FzIGluaXRpYWxseSBhZGRlZCBvbiBicmFuY2ggTkVXLUFHRU5ULUFQSS4KICAgCjIwMDEtMTEtMTMgMTM6NTUgIGhhcmRha2VyCgogICAqIGFnZW50L21pYmdyb3VwL2FnZW50L25zVHJhbnNhY3Rpb25UYWJsZS5jOgoKICAgZmlsZSBuc1RyYW5zYWN0aW9uVGFibGUuYyB3YXMgaW5pdGlhbGx5IGFkZGVkIG9uIGJyYW5jaCBORVctQUdFTlQtQVBJLgogICAKMjAwMS0xMS0xMyAxMzo1NSAgaGFyZGFrZXIKCiAgICogYWdlbnQvbWliZ3JvdXAvYWdlbnQvbnNUcmFuc2FjdGlvblRhYmxlLmg6CgogICBmaWxlIG5zVHJhbnNhY3Rpb25UYWJsZS5oIHdhcyBpbml0aWFsbHkgYWRkZWQgb24gYnJhbmNoIE5FVy1BR0VOVC1BUEkuCiAgIAoyMDAxLTExLTEzIDEzOjU1ICBoYXJkYWtlcgoKICAgKiBtaWJzL05FVC1TTk1QLUFHRU5ULU1JQi50eHQ6CgogICBmaWxlIE5FVC1TTk1QLUFHRU5ULU1JQi50eHQgd2FzIGluaXRpYWxseSBhZGRlZCBvbiBicmFuY2ggTkVXLUFHRU5ULUFQSS4KICAgCjIwMDEtMTEtMTMgMDU6MjkgIGpicG4KCiAgICogYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvdm1zdGF0X3NvbGFyaXMyLmM6CgogICAgIC0gcGF0Y2ggZnJvbSBKb2NoZW4gS21pZXRzY2ggdG8gcXVpZXRlbiBzb21lIG5vaXN5IGxvZ2dpbmcKICAgCjIwMDEtMTEtMTMgMDQ6MTMgIGpicG4KCiAgICogYWdlbnQvbWliZ3JvdXAvYWdlbnR4L21hc3Rlcl9hZG1pbi5jOgoKICAgICAtIHVzZSB1bnJlZ2lzdGVyX21pYl90YWJsZV9yb3coKSB3aGVuIGFwcHJvcHJpYXRlIGluCiAgICAgICB1bnJlZ2lzdGVyX2FnZW50eF9saXN0KCkuCiAgIAoyMDAxLTExLTEzIDAzOjIzICBqYnBuCgogICAqIGFnZW50L2FnZW50X3JlZ2lzdHJ5LmM6CgogICAgIC0gcmVzZXQgdnItPm5hbWVsZW4gd2hlbiB3ZSd2ZSBmaW5pc2hlZCB3aXRoIGl0CiAgIAoyMDAxLTExLTEyIDIzOjE5ICBoYXJkYWtlcgoKICAgKiBhZ2VudC9oZWxwZXJzL2FsbF9oZWxwZXJzLmM6CgogICBmaWxlIGFsbF9oZWxwZXJzLmMgd2FzIGluaXRpYWxseSBhZGRlZCBvbiBicmFuY2ggTkVXLUFHRU5ULUFQSS4KICAgCjIwMDEtMTEtMTIgMjM6MTkgIGhhcmRha2VyCgogICAqIGFnZW50L2hlbHBlcnMvYWxsX2hlbHBlcnMuaDoKCiAgIGZpbGUgYWxsX2hlbHBlcnMuaCB3YXMgaW5pdGlhbGx5IGFkZGVkIG9uIGJyYW5jaCBORVctQUdFTlQtQVBJLgogICAKMjAwMS0xMS0wOCAwODowOSAgamJwbgoKICAgKiBhZ2VudC9hZ2VudF9yZWdpc3RyeS5jOgoKICAgICAtIGJldHRlciBpbXBsZW1lbnRhdGlvbiBvZiB1bnJlZ2lzdGVyX21pYl90YWJsZV9yb3coKSwgd2hpY2ggdXNlcwogICAgICAgcmFuZ2VzIHByb3Blcmx5IGluIHRoZSBjYWxsYmFjayAoaGVuY2UgbXVjaCBtb3JlIGVmZmljaWVudCBmb3IKICAgICAgIEFnZW50WCkuCiAgIAoyMDAxLTExLTA3IDA5OjU2ICBqYnBuCgogICAqIGFnZW50L21pYmdyb3VwL2FnZW50eC9wcm90b2NvbC5jOgoKICAgICAtIHJlbW92ZSBub3ctcmVkdW5kYW50IGFnZW50eF9idWlsZCBmdW5jdGlvbnMKICAgCjIwMDEtMTEtMDcgMDY6MzEgIGpicG4KCiAgICogYWdlbnQvbWliZ3JvdXAvYWdlbnR4LzogY2xpZW50LmMgLCBtYXN0ZXJfYWRtaW4uYyAsCiAgIHByb3RvY29sLmM6CgogICAgIC0gdXNlIERFQlVHTVNHT0lEUkFOR0UoKSBpbiBhIGNvdXBsZSBvZiBwbGFjZXMgZm9yIG1vcmUgY29tcHJlaGVuc2l2ZQogICAgICAgZGVidWdnaW5nIG91dHB1dC4KICAgCiAgICAgLSBwYXJzZSB1bnJlZ2lzdGVyIHJhbmdlcyBwcm9wZXJseSwgYW5kIHVzZSB0aGUgcmFuZ2UgcHJvcGVybHkgZm9yCiAgICAgICBwYXNzaW5nIHRvIHVucmVnaXN0ZXJfbWliX2NvbnRleHQoKS4KICAgCjIwMDEtMTEtMDcgMDM6MzMgIGpicG4KCiAgICogc25tcGxpYi86IHNubXBfZGVidWcuYyAsIHNubXBfZGVidWcuaDoKCiAgICAgLSBhZGQgREVCVUdTTVNHT0lEUkFOR0UoKSBtYWNybyBmb3IgZGVidWdnaW5nIE9JRCByYW5nZXMKICAgCjIwMDEtMTEtMDYgMDY6MDQgIGpicG4KCiAgICogYWdlbnQvbWliZ3JvdXAvYWdlbnR4L21hc3Rlcl9yZXF1ZXN0LmM6CgogICAgIC0gcmVzZXQgdGhlIGluY2x1c2l2ZSBmbGFnIGluIGEgY291cGxlIG9mIGNhc2VzLCB0byBwcmV2ZW50IHNwdXJpb3VzCiAgICAgICBJTkNMVVNJVkUgZ2V0TmV4dCBiZWhhdmlvdXIKICAgCjIwMDEtMTEtMDUgMDg6MDkgIGpicG4KCiAgICogYWdlbnQvbWliZ3JvdXAvYWdlbnR4L3Byb3RvY29sLmM6CgogICAgIC0gY29ycmVjdCBidWcgaW4gcmFuZ2Vfc3ViaWQgdHdlYWsgY29kZQogICAKMjAwMS0xMS0wNSAwNTowMCAgamJwbgoKICAgKiBhZ2VudC9hZ2VudF9yZWdpc3RyeS5jOgoKICAgICAtIGNhbGN1bGF0ZSB1cHBlciBib3VuZCBmb3IgdGFibGUgcm93IHJlZ2lzdHJhdGlvbnMgc2xpZ2h0bHkgZGlmZmVyZW50bHkKICAgCjIwMDEtMTEtMDEgMDk6MzUgIGpicG4KCiAgICogYWdlbnQvbWliZ3JvdXAvYWdlbnR4LzogbWFzdGVyLmMgLCBwcm90b2NvbC5jICwKICAgcHJvdG9jb2wuaCAsIHN1YmFnZW50LmM6CgogICAgIC0gaW1wbGVtZW50IHJlbG9jYXRpbmcgYnVmZmVyIHZlcnNpb24gb2YgYWdlbnR4X2J1aWxkKCkgcm91dGluZXMsCiAgICAgICBhbmQgdXNlIHRoZW0uCiAgIAoyMDAxLTExLTAxIDA5OjMzICBqYnBuCgogICAqIHNubXBsaWIvOiBzbm1wX2FwaS5jICwgc25tcF9hcGkuaDoKCiAgICAgLSBzdXBwb3J0IGZvciByZWxvY2F0YWJsZSBidWZmZXIgYnVpbGQgY2FsbGJhY2tzIHZpYSBvcGVuX2V4IGNhbGxzCiAgIAoyMDAxLTEwLTMwIDA3OjE5ICBqYnBuCgogICAqIGFnZW50L21pYmdyb3VwL21pYklJL2ludGVyZmFjZXMuYzoKCiAgICAgLSBmaXggYnVnIHdoZXJlYnkgaW50ZXJmYWNlIGNvdW50ZXIgaXMgbm90IHJlc2V0LCBub3RlZCBieSAoYW1vbmdzdAogICAgICAgb3RoZXJzKSBWaWN0b3IgS2lyaGVuc2h0ZWluIGluIHBhdGNoICM0NzQwNjQuCiAgIAoyMDAxLTEwLTMwIDAzOjI0ICBqYnBuCgogICAqIHNubXBsaWIvc25tcF9hcGkuYzoKCiAgICAgLSBtYWtlIHRoZSBpbml0aWFsIGJ1ZmZlciBzaXplIDIwNDggaW4gc25tcF9yZXNlbmRfcmVxdWVzdCAoYXMgaW4KICAgICAgIF9zZXNzX2FzeW5jX3NlbmQpIHRvIG1ha2Ugc3VjY2Vzcy9mYWlsIGJlaGF2aW91ciBmb3IgQWdlbnRYIG1vcmUKICAgICAgIHByZWRpY3RhYmxlIChzaW5jZSBBZ2VudFggU1RJTEwgZG9lc24ndCB1c2UgcmVsb2NhdGluZyBidWZmZXJzLAogICAgICAgYm9vIGhpc3MpLgogICAKMjAwMS0xMC0yOSAyMzoxNiAgcnN0b3J5CgogICAqIGxvY2FsL21pYjJjLmFycmF5LWF1dG8uY29uZjoKCiAgIGZpbGUgbWliMmMuYXJyYXktYXV0by5jb25mIHdhcyBpbml0aWFsbHkgYWRkZWQgb24gYnJhbmNoIE5FVy1BR0VOVC1BUEkuCiAgIAoyMDAxLTEwLTI5IDIzOjE2ICByc3RvcnkKCiAgICogbG9jYWwvbWliMmMuYXJyYXktdXNlci5jb25mOgoKICAgZmlsZSBtaWIyYy5hcnJheS11c2VyLmNvbmYgd2FzIGluaXRpYWxseSBhZGRlZCBvbiBicmFuY2ggTkVXLUFHRU5ULUFQSS4KICAgCjIwMDEtMTAtMjggMTQ6NTMgIHJzdG9yeQoKICAgKiBhZ2VudC9oZWxwZXJzL3RhYmxlX2FycmF5LmM6CgogICBmaWxlIHRhYmxlX2FycmF5LmMgd2FzIGluaXRpYWxseSBhZGRlZCBvbiBicmFuY2ggTkVXLUFHRU5ULUFQSS4KICAgCjIwMDEtMTAtMjggMTQ6NTMgIHJzdG9yeQoKICAgKiBhZ2VudC9oZWxwZXJzL3RhYmxlX2FycmF5Lmg6CgogICBmaWxlIHRhYmxlX2FycmF5Lmggd2FzIGluaXRpYWxseSBhZGRlZCBvbiBicmFuY2ggTkVXLUFHRU5ULUFQSS4KICAgCjIwMDEtMTAtMjggMTQ6NTAgIHJzdG9yeQoKICAgKiBzbm1wbGliL29pZF9hcnJheS5oOgoKICAgZmlsZSBvaWRfYXJyYXkuaCB3YXMgaW5pdGlhbGx5IGFkZGVkIG9uIGJyYW5jaCBORVctQUdFTlQtQVBJLgogICAKMjAwMS0xMC0yOCAxNDo1MCAgcnN0b3J5CgogICAqIHNubXBsaWIvb2lkX2FycmF5LmM6CgogICBmaWxlIG9pZF9hcnJheS5jIHdhcyBpbml0aWFsbHkgYWRkZWQgb24gYnJhbmNoIE5FVy1BR0VOVC1BUEkuCiAgIAoyMDAxLTEwLTI2IDE5OjQxICBoYXJkYWtlcgoKICAgKiBhZ2VudC9taWJncm91cC9hZ2VudHgvbWFzdGVyLmM6CgogICBwYXRjaCBmcm9tIEhhcnJpZSB0byBmaXggZnVuY3Rpb24gbmFtZSBpbiBlcnJvciBtZXNzYWdlCiAgIAoyMDAxLTEwLTI2IDA2OjA1ICBqYnBuCgogICAqIGFnZW50L21pYmdyb3VwL21pYklJLzogaW50ZXJmYWNlcy5jICwgaW50ZXJmYWNlcy5oOgoKICAgICAgLSBhZGQgc3VwcG9ydCBmb3IgcnggYW5kIHR4IGRyb3AgY291bnRzIChpZkluRGlzY2FyZHMgYW5kCiAgICAgICAgaWZPdXREaXNjYXJkcykgZm9yIExpbnV4ICgyLjIrKQogICAKMjAwMS0xMC0yNiAwNTo1NyAgamJwbgoKICAgKiBhY2xvY2FsLm00OgoKICAgICAtIGFkZCBpZl9pcWRyb3BzIG1lbWJlciB0byBzdHJ1Y3QgaWZuZXQKICAgCjIwMDEtMTAtMjYgMDQ6MDMgIGpicG4KCiAgICogYWdlbnQvbWliZ3JvdXAvbWliSUkvaW50ZXJmYWNlcy5jOgoKICAgICAtIGFkZCB0cmFuc2xhdGlvbiBmb3IgYXRtKDM3KSB0eXBlIGludGVyZmFjZXMgZm9yIExpbnV4CiAgIAoyMDAxLTEwLTI2IDAzOjQzICBqYnBuCgogICAqIG1hbi9zbm1wZC5jb25mLjUuZGVmOgoKICAgICAtIGRvY3VtZW50IHRoZSBmYWN0IHRoYXQgc2V0dGluZyBzeXNMb2NhdGlvbi4wIChldCBhbC4pIHZpYSBhCiAgICAgICBzeXNsb2NhdGlvbiAob3IgZXF1aXZhbGVudCkgdG9rZW4gbWFrZXMgdGhlIG9iamVjdCByZWFkLW9ubHksCiAgICAgICByZXR1cm5pbmcgYSBub3RXcml0YWJsZSBlcnJvciByZXNwb25zZSBpZiBhbiBhdHRlbXB0IGlzIG1hZGUgdG8KICAgICAgIFNFVCBpdC4KICAgCjIwMDEtMTAtMjQgMTA6MDcgIGpicG4KCiAgICogYWdlbnQvbWliZ3JvdXAvbWliSUkvOiBzeXN0ZW1fbWliLmMgKFY0LTItcGF0Y2hlcy40KSwKICAgc3lzdGVtX21pYi5jOgoKICAgICAtIGZpeCB0eXBvIG5vdGVkIGJ5IFRpbSBEaWV0egogICAKMjAwMS0xMC0yNCAwODo0MyAgamJwbgoKICAgKiBhZ2VudC9taWJncm91cC9taWJJSS86IHN5c3RlbV9taWIuYyAsIHN5c3RlbV9taWIuaDoKCiAgICAgLSBpbXBsZW1lbnQgcGVyc2lzdGVuY2UgZm9yIHN5c0xvY2F0aW9uLjAsIHN5c0NvbnRhY3QuMCBhbmQgc3lzTmFtZS4wCiAgIAogICAgIC0gcHJlc2VuY2Ugb2YgYSBzeXNsb2NhdGlvbiB0b2tlbiBpbiBzbm1wZC5jb25mIG1ha2VzIHN5c0xvY2F0aW9uLjAKICAgICAgIG5vbi13cml0YWJsZSAocmV0dXJucyBub3RXcml0YWJsZSBvbiBTRVQgYXR0ZW1wdHMpCiAgIAoyMDAxLTEwLTI0IDA1OjA4ICBqYnBuCgogICAqIGFnZW50L21pYmdyb3VwL2hvc3QvOiBocl9zd2luc3QuYyAoVjQtMi1wYXRjaGVzLjIpLCBocl9zd2luc3QuYzoKCiAgICAgLSBmaXggc21hbGwgbWVtb3J5IGxlYWsganVzdCBpbnRyb2R1Y2VkCiAgIAoyMDAxLTEwLTI0IDAzOjQyICBqYnBuCgogICAqIGFnZW50L21pYmdyb3VwL2hvc3QvaHJfc3dpbnN0LmM6CgogICAgIC0gdXNlIHBrZ2luZm8gaW50ZXJmYWNlIHRvIGRldGVybWluZSB0eXBlIG9mIHNvZnR3YXJlIHBhY2thZ2UgbW9yZQogICAgICAgc3BlY2lmaWNhbGx5IGlmIHBvc3NpYmxlLiAgU2xpZ2h0IHZhcmlhdGlvbiBvbiBwYXRjaCAjNDczNjY5LCBzdWJtaXR0ZWQKICAgICAgIGJ5IFN0ZWZhbiBSYWRtYW4uCiAgIAoyMDAxLTEwLTI0IDAzOjM4ICBqYnBuCgogICAqIGFjY29uZmlnLmggLCBjb25maWd1cmUuaW46CgogICAgIC0gYXV0b2NvbmYgc3VwcG9ydCBmb3IgZGV0ZWN0aW5nIHBrZ2luZm8gaW50ZXJmYWNlIGluIGxpYmFkbS4gIFRoYW5rcwogICAgICAgdG8gU3RlZmFuIFJhZG1hbiAocGF0Y2ggIzQ3MzY2OSkuCiAgIAoyMDAxLTEwLTIxIDA3OjI2ICBoYXJkYWtlcgoKICAgKiBsb2NhbC9taWIyYy5pdGVyYXRlLmNvbmY6CgogICBmaWxlIG1pYjJjLml0ZXJhdGUuY29uZiB3YXMgaW5pdGlhbGx5IGFkZGVkIG9uIGJyYW5jaCBORVctQUdFTlQtQVBJLgogICAKMjAwMS0xMC0xOSAwOTo1MSAgaGFyZGFrZXIKCiAgICogbG9jYWwvbWliMmMuY3JlYXRlLWRhdGFzZXQuY29uZjoKCiAgIGZpbGUgbWliMmMuY3JlYXRlLWRhdGFzZXQuY29uZiB3YXMgaW5pdGlhbGx5IGFkZGVkIG9uIGJyYW5jaCBORVctQUdFTlQtQVBJLgogICAKMjAwMS0xMC0xNyAwNzo1MiAgZHRzMTIKCiAgICogRkFRIChWNC0yLXBhdGNoZXMuMiksIEZBUToKCiAgIE1lbnRpb24gdGhlIE1SVEcgdHV0b3JpYWwgd2ViIHBhZ2VzCiAgICAgKGFzIHN1Z2dlc3RlZCBieSBDaHJpc3RpYW4gUm9ib3R0b20gUmVpcykKICAgCjIwMDEtMTAtMTUgMDY6NDkgIGpicG4KCiAgICogc25tcGxpYi86IHNubXBJUFhEb21haW4uYyAsIHNubXBVRFBEb21haW4uYzoKCiAgICAgLSB6ZXJvIHNvY2tldCBhZGRyZXNzIHN0cnVjdHVyZXMuICBIb3BlZnVsbHkgZml4ZXMgcHJvYmxlbXMgb24gTmV0QlNECiAgICAgICBub3RlZCBieSBKb2FraW0gQWx0aGluaSAocmVsYXRlZCB0byBzYV9sZW4gbWVtYmVyIHByb2JhYmx5Pz8pLgogICAKMjAwMS0xMC0xMSAxNjozMCAgaGFyZGFrZXIKCiAgICogYWdlbnQvTWFrZWZpbGUuaW4gLCBhZ2VudC9taWJncm91cC9NYWtlZmlsZS5pbiAsCiAgIHNubXBsaWIvbWliLmMgLCBzbm1wbGliL3NubXBfYXBpLmM6CgogICBPcHBzZXMuCiAgIAoyMDAxLTEwLTExIDE0OjE1ICBoYXJkYWtlcgoKICAgKiBtYW4vTWFrZWZpbGUuaW4gLCBtYW4vc25tcF9hcGlfZXJyc3RyaW5nLjMgLAogICBtYW4vc25tcF9jb25maWcuNS5kZWYgLCBtYW4vc25tcF9lcnJvci4zICwKICAgbWFuL3NubXBfcGVycm9yLjMgLCBtYW4vc25tcF9zZXNzX3BlcnJvci4zICwKICAgbWFuL3NubXBjbWQuMSAsIG1hbi9zbm1wZC4xLmRlZiAsIG1hbi9zbm1wZC5jb25mLjUuZGVmCiAgICwgbWFuL3NubXBzZXQuMSAsIG1hbi9zbm1wdHJhbnNsYXRlLjEgLAogICBtYW4vc25tcHRyYXBkLjggLCBtYW4vc25tcHRyYXBkLmNvbmYuNS5kZWYgLAogICBtYW4vc25tcHdhbGsuMSAsIG1pYnMvRElTTUFOLVNDUklQVC1NSUIudHh0ICwKICAgbWlicy9JQU5BaWZUeXBlLU1JQi50eHQgLCBtaWJzL01ha2VmaWxlLm1pYiAsCiAgIG1pYnMvUkVBRE1FLm1pYnMgLCBtaWJzL1NNVVgtTUlCLnR4dCAsCiAgIG1pYnMvVUNELVNOTVAtTUlCLnR4dCAsIG1pYnMvbWliZmV0Y2ggLCBtaWJzL3JmY2xpc3QKICAgLCBtaWJzL3NtaXN0cmlwICwgcGVybC9TTk1QL1NOTVAueHMgLAogICBzbm1wbGliL01ha2VmaWxlLmluICwgc25tcGxpYi9hc24xLmMgLAogICBzbm1wbGliL2RlZmF1bHRfc3RvcmUuYyAsIHNubXBsaWIvaW50NjQuYyAsCiAgIHNubXBsaWIvbWliLmMgLCBzbm1wbGliL21pYi5oICwgc25tcGxpYi9tdF9zdXBwb3J0LmMKICAgLCBzbm1wbGliL210X3N1cHBvcnQuaCAsIHNubXBsaWIvcGFyc2UuYyAsCiAgIHNubXBsaWIvc2NhcGkuYyAsIHNubXBsaWIvc2NhcGkuaCAsIHNubXBsaWIvc25tcF9hcGkuYwogICAsIHNubXBsaWIvc25tcF9hdXRoLmMgLCBzbm1wbGliL3NubXBfY2xpZW50LmMgLAogICBzbm1wbGliL3NubXBfZGVidWcuYyAsIHNubXBsaWIvc25tcHVzbS5jICwKICAgc25tcGxpYi9zbm1wdjMuYyAsIHNubXBsaWIvc3lzdGVtLmMgLCBzbm1wbGliL3Rvb2xzLmMKICAgLCBzbm1wbGliL3VjZC1zbm1wLWluY2x1ZGVzLmggLCB0ZXN0aW5nL01ha2VmaWxlLmluCiAgICwgd2luMzIvY29uZmlnLmggLCB3aW4zMi9jb25maWcuaC5ib3JsYW5kOgoKICAgbWFzc2l2ZSBtZXJnZSBmcm9tIHRoZSBwYXRjaGVzIGJyYW5jaCB0byB0aGUgbWFpbiBsaW5lLgogICAKMjAwMS0xMC0xMSAxNDowMSAgaGFyZGFrZXIKCiAgICogQ09QWUlORyAsIENoYW5nZUxvZyAsIEZBUSAsIE1ha2VmaWxlLmluICwKICAgTkVXUyAsIFJFQURNRSAsIGFjY29uZmlnLmggLCBhY2xvY2FsLm00ICwKICAgY29uZmlnLmd1ZXNzICwgY29uZmlnLmguaW4gLCBjb25maWcuc3ViICwKICAgY29uZmlndXJlICwgY29uZmlndXJlLmluICwgbHRjb25maWcgLCBsdG1haW4uc2gKICAgLCBtYWtlZmlsZWluZGVwZW5kLnBsICwgc2Vkc2NyaXB0LmluICwgdmVyc2lvbi5oCiAgICwgYWdlbnQvTWFrZWZpbGUuaW4gLCBhZ2VudC9hZ2VudF9pbmRleC5jICwKICAgYWdlbnQvYWdlbnRfcmVhZF9jb25maWcuYyAsIGFnZW50L2FnZW50X3JlYWRfY29uZmlnLmggLAogICBhZ2VudC9hZ2VudF9yZWdpc3RyeS5jICwgYWdlbnQvYWdlbnRfdHJhcC5jICwKICAgYWdlbnQvc25tcF9hZ2VudC5oICwgYWdlbnQvc25tcF92YXJzLmMgLAogICBhZ2VudC9zbm1wX3ZhcnMuaCAsIGFnZW50L3NubXBkLmMgLAogICBhZ2VudC9taWJncm91cC9NYWtlZmlsZS5pbiAsIGFnZW50L21pYmdyb3VwL2tlcm5lbF9zdW5vczUuYwogICAsIGFnZW50L21pYmdyb3VwL21pYmluY2wuaCAsIGFnZW50L21pYmdyb3VwL3VjZF9zbm1wLmgKICAgLCBhZ2VudC9taWJncm91cC91dGlsX2Z1bmNzLmMgLAogICBhZ2VudC9taWJncm91cC9leGFtcGxlcy9leGFtcGxlLmMgLAogICBhZ2VudC9taWJncm91cC9ob3N0L2hyX2Rpc2suYyAsCiAgIGFnZW50L21pYmdyb3VwL2hvc3QvaHJfcGFydGl0aW9uLmMgLAogICBhZ2VudC9taWJncm91cC9ob3N0L2hyX3ByaW50LmMgLAogICBhZ2VudC9taWJncm91cC9ob3N0L2hyX3N0b3JhZ2UuYyAsCiAgIGFnZW50L21pYmdyb3VwL2hvc3QvaHJfc3dydW4uYyAsCiAgIGFnZW50L21pYmdyb3VwL2hvc3QvaHJfc3lzdGVtLmMgLCBhZ2VudC9taWJncm91cC9taWJJSS9hdC5jCiAgICwgYWdlbnQvbWliZ3JvdXAvbWliSUkvYXQuaCAsCiAgIGFnZW50L21pYmdyb3VwL21pYklJL2ljbXAuYyAsCiAgIGFnZW50L21pYmdyb3VwL21pYklJL2ludGVyZmFjZXMuYyAsIGFnZW50L21pYmdyb3VwL21pYklJL2lwLmMKICAgLCBhZ2VudC9taWJncm91cC9taWJJSS9pcEFkZHIuYyAsCiAgIGFnZW50L21pYmdyb3VwL21pYklJL210YV9zZW5kbWFpbC5oICwKICAgYWdlbnQvbWliZ3JvdXAvbWliSUkvcm91dGVfd3JpdGUuYyAsCiAgIGFnZW50L21pYmdyb3VwL21pYklJL3N5c09SVGFibGUuYyAsCiAgIGFnZW50L21pYmdyb3VwL21pYklJL3N5c3RlbV9taWIuYyAsCiAgIGFnZW50L21pYmdyb3VwL21pYklJL3RjcC5jICwgYWdlbnQvbWliZ3JvdXAvbWliSUkvdGNwVGFibGUuYwogICAsIGFnZW50L21pYmdyb3VwL21pYklJL3VkcC5jICwKICAgYWdlbnQvbWliZ3JvdXAvbWliSUkvdWRwVGFibGUuYyAsCiAgIGFnZW50L21pYmdyb3VwL21pYklJL3Zhcl9yb3V0ZS5jICwKICAgYWdlbnQvbWliZ3JvdXAvbm90aWZpY2F0aW9uL3NubXBOb3RpZnlGaWx0ZXJQcm9maWxlVGFibGUuYyAsCiAgIGFnZW50L21pYmdyb3VwL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5RmlsdGVyVGFibGUuYyAsCiAgIGFnZW50L21pYmdyb3VwL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5VGFibGUuYyAsCiAgIGFnZW50L21pYmdyb3VwL3NtdXgvc211eC5jICwKICAgYWdlbnQvbWliZ3JvdXAvdGFyZ2V0L3NubXBUYXJnZXRBZGRyRW50cnkuYyAsCiAgIGFnZW50L21pYmdyb3VwL3RhcmdldC9zbm1wVGFyZ2V0UGFyYW1zRW50cnkuYyAsCiAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL2Rpc2tpby5jICwKICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZGxtb2QuYyAsCiAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL2ZpbGUuYyAsCiAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL21lbW9yeS5jICwKICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvbWVtb3J5LmggLAogICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9tZW1vcnlfZnJlZWJzZDIuYyAsCiAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL21lbW9yeV9mcmVlYnNkMi5oICwKICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvbWVtb3J5X25ldGJzZDEuYyAsCiAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL21lbW9yeV9uZXRic2QxLmggLAogICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9tZW1vcnlfc29sYXJpczIuYyAsCiAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL21lbW9yeV9zb2xhcmlzMi5oICwKICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvcHJveHkuYyAsCiAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Ztc3RhdC5jICwKICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvdm1zdGF0X2JzZGk0LmMgLAogICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC92bXN0YXRfYnNkaTQuaCAsCiAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Ztc3RhdF9mcmVlYnNkMi5jICwKICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvdm1zdGF0X25ldGJzZDEuYyAsCiAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Ztc3RhdF9zb2xhcmlzMi5jICwgYXBwcy9NYWtlZmlsZS5pbgogICAsIGFwcHMvc25tcGRlbHRhLmMgLCBhcHBzL3NubXBkZi5jICwKICAgYXBwcy9zbm1wZ2V0LmMgLCBhcHBzL3NubXBnZXRuZXh0LmMgLCBhcHBzL3NubXBzZXQuYwogICAsIGFwcHMvc25tcHN0YXR1cy5jICwgYXBwcy9zbm1wdGFibGUuYyAsCiAgIGFwcHMvc25tcHRlc3QuYyAsIGFwcHMvc25tcHRyYW5zbGF0ZS5jICwKICAgYXBwcy9zbm1wdHJhcC5jICwgYXBwcy9zbm1wdHJhcGQuYyAsCiAgIGFwcHMvc25tcHRyYXBkX2xvZy5jICwgYXBwcy9zbm1wdXNtLmMgLCBhcHBzL3NubXB2YWNtLmMKICAgLCBhcHBzL3NubXB3YWxrLmMgLCBhcHBzL3NubXBuZXRzdGF0L01ha2VmaWxlLmluCiAgICwgbG9jYWwvbWliMmMuY29uZiAsIGxvY2FsL21pYjJjLnZhcnR5cGVzLmNvbmYgLAogICBsb2NhbC9wYXNzX3BlcnNpc3R0ZXN0ICwgbG9jYWwvdGttaWI6CgogICBtYXNzaXZlIG1lcmdlIGZyb20gdGhlIHBhdGNoZXMgYnJhbmNoIHRvIHRoZSBtYWluIGxpbmUuCiAgIAoyMDAxLTEwLTA5IDA3OjE0ICBoYXJkYWtlcgoKICAgKiBDb2RpbmdTdHlsZToKCiAgIFNvbWV0aW1lcyB3ZSBmZWVsIGxpa2UgYSAtbnV0CiAgIAoyMDAxLTEwLTA5IDA2OjE1ICBqYnBuCgogICAqIGFnZW50L2FnZW50X3JlZ2lzdHJ5LmM6CgogICAgIC0gcHJvcGVybHkgYWNjb3VudCBmb3IgdGhlIGxlbmd0aCBvZiB0aGUgc3VmZml4IGluIHRoZSB2YXJpYWJsZQogICAgICAgdGFibGUgaW4gcmVnaXN0ZXJfbWliX3RhYmxlX3JvdygpCiAgIAoyMDAxLTEwLTA4IDA4OjUzICBqYnBuCgogICAqIGFnZW50L21pYmdyb3VwL2FnZW50eC9jbGllbnQuYzoKCiAgICAgLSBkZWNsYXJlIHZlcnNpb25fc3lzb2lkX2xlbiBhcyBleHRlcm4gSU5UIG5vdCBleHRlcm4gb2lkLCBzbyBhcyB0bwogICAgICAgbWF0Y2ggaXRzIGFjdHVhbCBkZWZpbml0aW9uIGluIHN5dGVtX21pYi5jLiAgVGhpcyBjYXVzZWQgYWxsIGtpbmRzIG9mCiAgICAgICBmdW4gJiBnYW1lcyBvbiBMaW51eCBvbiBhIEFscGhhLgogICAKMjAwMS0xMC0wNCAwODozMSAgamJwbgoKICAgKiBzbm1wbGliLzogY2FsbGJhY2suYyAsIGNhbGxiYWNrLmg6CgogICAgIC0gYWRkIGZ1bmN0aW9uIHNubXBfY2FsbGJhY2tfbGlzdCgpIHRvIHJldHVybiBsaXN0IG9mIGNhbGxiYWNrcyBmb3IgYQogICAgICAgZ2l2ZW4gPG1ham9yLCBtaW5vcj4gcGFpci4KICAgCjIwMDEtMTAtMDQgMDc6MTQgIGhhcmRha2VyCgogICAqIGxvY2FsL3Bhc3NfcGVyc2lzdHRlc3Q6CgogICBmaWxlIHBhc3NfcGVyc2lzdHRlc3Qgd2FzIGluaXRpYWxseSBhZGRlZCBvbiBicmFuY2ggVjQtMi1wYXRjaGVzLgogICAKMjAwMS0xMC0wMyAwNTo0MiAgamJwbgoKICAgKiBzbm1wbGliL2tleXRvb2xzLmM6CgogICAgIC0gY2hhbmdlIGV4cHJlc3Npb24gYXQgbC4gNDE1IGZyb206CiAgIAogICAgICAgICAgICprY3N0cmluZysrID0gKmtjc3RyaW5nIF4gKm5ld2tleSsrOwogICAKICAgICAgIHdoaWNoIGhhcyB1bmRlZmluZWQgYmVoYXZpb3VyIHRvOgogICAKICAgICAgICAgICAqa2NzdHJpbmcrKyBePSAqbmV3a2V5Kys7CiAgIAogICAgICAgd2hpY2ggaXMgb2theSAoc2luY2UgKmtjc3RyaW5nIGlzIG9ubHkgZXZhbHVhdGVkIG9uY2UpLiAgU2ltaWxhcmx5CiAgICAgICBhdCBsLiA1MzAuICBUaGUgcHJldmlvdXMgY29uc3RydWN0cyBjYXVzZSB3YXJuaW5ncyB3aXRoIEdDQzMgYW5kCiAgICAgICBzb21lIG90aGVyIGNvbXBpbGVycy4gIFRoYW5rcyB0byBOaWVsIE1hcmt3aWNrIHdobyBub3RlZCB0aGlzIGluCiAgICAgICBidWcgIzQ2NTk2OS4KICAgCjIwMDEtMTAtMDMgMDM6MTEgIGpicG4KCiAgICogYWdlbnQvYWdlbnRfcmVnaXN0cnkuYzoKCiAgICAgLSBkbyBTTk1QRF9DQUxMQkFDS19VTlJFR0lTVEVSX09JRCBjYWxsYmFja3MgaW4KICAgICAgIHVucmVnaXN0ZXJfbWlic19ieV9zZXNzaW9uKCkgLS0gY2FsbGVkIHdoZW4gQWdlbnRYIHN1YmFnZW50cwogICAgICAgZGlzYXBwZWFyLgogICAKMjAwMS0xMC0wMiAwNjowMSAgamJwbgoKICAgKiBhZ2VudC9taWJncm91cC9hZ2VudHgvcHJvdG9jb2wuYzoKCiAgICAgLSBkb24ndCBzZW5kIEFTTl9QUklWX0lOQ0xfUkFOR0UgYW5kIEFTTl9QUklWX0VYQ0xfUkFOR0Ugb24tdGhlLXdpcmUKICAgCjIwMDEtMDktMjYgMDg6MDMgIGpicG4KCiAgICogYWdlbnQvYWdlbnRfcmVnaXN0cnkuYzoKCiAgICAgLSBhbGxvdyBzcGxpdF9zdWJ0cmVlKCkgdG8gZG8gYSBzcGxpdCBpbiB0aGUgbWlkZGxlIG9mIGEgY29sdW1uLAogICAgICAga2VlcGluZyB0aGUgcmVsZXZhbnQgdmFyaWFibGUgaW4gYm90aCB0aGUgb2xkIHRyZWUgYW5kIHRoZSBuZXcKICAgICAgIHRyZWUgKGFyaXNlcyBpbiBBZ2VudFggcm93IHJlZ2lzdHJhdGlvbnMpLgogICAKICAgICAtIHBhdGNoIGZyb20gRGFtaWFuIEdpbG11cnJheSBmb3IgcmVnaXN0ZXJfbWliX3RhYmxlX3JvdygpIHdoaWNoCiAgICAgICBhbGxvd3MgaXQgdG8gY29wZSB3aXRoIG5vbi16ZXJvIGxlbmd0aCB2YXJpYWJsZXMgYW5kIGFsc28KICAgICAgIG5vbi1jb250aWd1b3VzIE9JRHMgZm9yIGFkamFjZW50IGNvbHVtbnMuCiAgIAogICAgIC0gcmV3cml0dGVuIGR1bXBfcmVnaXN0cnkoKSB0aGF0IHVzZXMgcmVhbGxvY2F0aW5nIHByaW50IGZ1bmN0aW9ucwogICAgICAgYW5kIGFsc28gcHJpbnRzIG91dCB2YXJpYWJsZSBsaXN0cy4KICAgCjIwMDEtMDktMjYgMDc6NDUgIGpicG4KCiAgICogYWdlbnQvc25tcF92YXJzLmM6CgogICAgIC0gYWxsb3cgZm9yIHRoZSBwb3NzaWJpbGl0eSBvZiBzdWJ0cmVlIG5hbWUgYmVpbmcgbG9uZ2VyIHRoYW4KICAgICAgIHJlcXVlc3RlZCBuYW1lIHdoZW4gY2FsY3VsYXRpbmcgdGhlIHN1ZmZpeCBmb3IgdmFyaWFibGUgbWF0Y2hpbmcuCiAgIAogICAgIC0gYmUgc3RyaWN0IGFib3V0IHN1YnRyZWUgY2h1bmtzIGJlaW5nIGluY2x1c2l2ZSBvZiB0aGUgc3RhcnQgT0lECiAgICAgICBhbmQgZXhjbHVzaXZlIG9mIHRoZSBlbmQgT0lEIChzaG93cyB1cCBiaWcgdGltZSBpbiBBZ2VudFgpLgogICAKMjAwMS0wOS0yNiAwNzoyMiAgamJwbgoKICAgKiBhZ2VudC9taWJncm91cC9hZ2VudHgvbWFzdGVyX3JlcXVlc3QuYzoKCiAgICAgLSBkb24ndCBkbyBnZXROZXh0IHJlcXVlc3RzIG9uIGV4Y2x1c2l2ZSBzZWFyY2hSYW5nZXMgdGhhdCBiZWdpbiBpbgogICAgICAgYSB0cmVlIG1hcmtlZCBhcyBhIGZ1bGx5LXF1YWxpZmllZCBpbnN0YW5jZSAodGhleSBhcmUgZG9vbWVkIHRvCiAgICAgICBmYWlsKS4gIFNraXAgdG8gdGhlIG5leHQgcGFydCBvZiB0aGUgdHJlZSBzdHJhaWdodCBhd2F5LgogICAKMjAwMS0wOS0yNiAwNzoxOSAgamJwbgoKICAgKiBhZ2VudC9taWJncm91cC9hZ2VudHgvbWFzdGVyX2FkbWluLmM6CgogICAgIC0gYnJpbmcgZGVidWdnaW5nIHRva2VucyBpbnRvIGxpbmUgd2l0aCByZXN0IG9mIEFnZW50WCBjb2RlCiAgIAoyMDAxLTA5LTI1IDA4OjE1ICBqYnBuCgogICAqIGFwcHMvc25tcHRyYXBkX2xvZy5jOgoKICAgICAtIHJlaW5zdGF0ZSBhIG1pc3Npbmcgc3BhY2UgY2hhcmFjdGVyCiAgIAoyMDAxLTA5LTI1IDAzOjU4ICBqYnBuCgogICAqIGFwcHMvc25tcHRyYXBkX2xvZy5jOgoKICAgICAtIHJlbW92ZSBzcHVyaW91cyBjYXN0CiAgIAoyMDAxLTA5LTI1IDAzOjQ1ICBqYnBuCgogICAqIGFwcHMvc25tcHRyYXBkLmM6CgogICAgIC0gZml4IHBvc3NpYmxlIGluZmVsaWNpdHkgd2hlbiBwcmludGluZyBhbmQgc3lzbG9nZ2luZyAobm90IHN1cmUgdGhpcyBpcwogICAgICAgYWN0dWFsbHkgcG9zc2libGUgYnV0KQogICAKMjAwMS0wOS0yNSAwMzowOSAgamJwbgoKICAgKiBzbm1wbGliL21pYi5jOgoKICAgICAtIGludGVncmF0ZSBzb21lIGNoYW5nZXMgZnJvbSB0aGUgVjQtMi1wYXRjaGVzIGJyYW5jaDogSGFycmllJ3MKICAgICAgIHByb3RvdHlwZXMgYW5kIFdlcydzIGZpeCBmb3IgYnVnICAjNDYzMjI2LgogICAKMjAwMS0wOS0yNSAwMzowMSAgamJwbgoKICAgKiBhcHBzL3NubXB0cmFwZF9sb2cuYzoKCiAgICAgLSBmaXggc2lnbmVkbmVzcyBvZiB0aW1lIHN0dWZmCiAgIAoyMDAxLTA5LTI1IDAyOjQ3ICBqYnBuCgogICAqIHNubXBsaWIvOiBzbm1wX2xvZ2dpbmcuYyAsIHNubXBfbG9nZ2luZy5oOgoKICAgICAtIG1ha2UgYXJndW1lbnQgb2Ygc25tcF9lbmFibGVfc3lzbG9nX2lkZW50IGNvbnN0CiAgIAogICAgIC0gZG9uJ3Qgc3RyZHVwIERFRkFVTFRfTE9HX0lEIGlmIGEgTlVMTCBhcmcgaXMgZ2l2ZW4KICAgCjIwMDEtMDktMjQgMDk6MzkgIGpicG4KCiAgICogYXBwcy9zbm1wdHJhcGQuYzoKCiAgICAgLSBtYWtlIHVzZSBvZiByZXdyaXR0ZW4gb3V0cHV0IGZ1bmN0aW9ucyBpbiBzbm1wdHJhcGRfbG9nLmMgd2hpY2gKICAgICAgIGF2b2lkIGZpeGVkIGxlbmd0aCBidWZmZXJzLgogICAKICAgICAtIGZpeCBidWcgbm90ZWQgaW4gc3VwcG9ydCByZXF1ZXN0ICM0NTY2NDYgKGN1c3RvbSB0cmFwIGZvcm1hdCB3YXMKICAgICAgIGJlaW5nIGlnbm9yZWQgZm9yIHYyIHRyYXBzIGFuZCBpbmZvcm1zKS4gIFRoYW5rcyB0bwogICAgICAgRy5QcmluY2lwYXRvQG1vdG9yb2xhLmNvbSBmb3Igc3BvdHRpbmcgdGhpcyBvbmUuCiAgIAogICAgIC0gY29ycmVjdCB1c2FnZSBmb3IgLVAgb3B0aW9uIHRvIHJlZmxlY3QgdGhhdCBpdCBjYXVzZXMgb3V0cHV0IG9uCiAgICAgICBzdGRlcnIgbm90IHN0ZG91dC4KICAgCjIwMDEtMDktMjQgMDk6MzYgIGpicG4KCiAgICogYXBwcy86IHNubXB0cmFwZF9sb2cuYyAsIHNubXB0cmFwZF9sb2cuaDoKCiAgICAgLSByZXdyaXRlIG9mIG91dHB1dCBmdW5jdGlvbnMgdG8gYXZvaWQgdXNlIG9mIGZpeGVkLWxlbmd0aCBidWZmZXJzCiAgIAoyMDAxLTA5LTIwIDEzOjA0ICBoYXJkYWtlcgoKICAgKiBSRUFETUUgLCBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9sb2dtYXRjaC5jICwKICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvbG9nbWF0Y2guaCAsIG1pYnMvVUNELVNOTVAtTUlCLnR4dDoKCiAgIG5ldyBsb2dtYXRjaCBtaWIgZnJvbSBTdGVwaGFuIFdlbnplbC4KICAgCjIwMDEtMDktMTUgMDg6NDAgIGpicG4KCiAgICogYWdlbnQvbWliZ3JvdXAvYWdlbnR4L21hc3Rlcl9yZXF1ZXN0LmM6CgogICAgIC0gb3ZlcnJpZGUgZXhjbHVzaXZlIHNlYXJjaFJhbmdlIGdldE5leHQgb3BlcmF0aW9ucyB3aGVuIHJldHJ5aW5nCiAgICAgICBvcGVyYXRpb25zCiAgIAoyMDAxLTA5LTE1IDA4OjM5ICBqYnBuCgogICAqIGFnZW50Lzogc25tcF9hZ2VudC5jICwgc25tcF9hZ2VudC5oOgoKICAgICAtIGltcHJvdmVkIHN1cHBvcnQgZm9yIEFnZW50WC1zdHlsZSBpbmNsdXNpdmUgc2VhcmNoUmFuZ2UgZ2V0TmV4dAogICAKMjAwMS0wOS0xNCAxNDo0MyAgaGFyZGFrZXIKCiAgICogYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZGlza2lvLmM6CgogICBwYXRjaCAjNDQzMTE1IGZyb20gWWltaW4gR2U6IGRpc2tpbyBzdXBwb3J0IGZvciBmcmVlYnNkNAogICAKMjAwMS0wOS0xNCAxNDozNCAgaGFyZGFrZXIKCiAgICogYXBwcy9zbm1wdHJhcGQuYyAsIHNubXBsaWIvc25tcF9sb2dnaW5nLmMgLAogICBzbm1wbGliL3NubXBfbG9nZ2luZy5oOgoKICAgUGF0Y2ggIzQ0MDMyMCBmcm9tIE1hcmsgRmVybGF0dGU6CiAgIAogICAxKSBBZGRzIGEgbmV3IGZ1bmN0aW9uIHRvIHRoZSBzbm1wX2xvZ2dpbmcgQVBJCiAgICAgIChzbm1wX2VuYWJsZV9zeXNsb2dfaWRlbnQoY2hhciAqaWRlbnQpKQogICAKICAgMikgUG9ydHMgc25tcHRyYXBkIHRvIHVzZSB0aGUgZXhpc3Rpbmcgc25tcF9sb2dnaW5nIEFQSSBpbnN0ZWFkIG9mCiAgICAgIHVzaW5nIHN5c2xvZyBkaXJlY3RseS4KICAgCiAgIDMpIFBvcnRzIHNubXBfbG9nZ2luZy5bY2hdIHRvIHVzZSB0aGUgV2luMzIgRXZlbnQgTG9nIHdoZW4gY29tcGlsZWQgb24KICAgICAgV2luMzIuIEkgZGlkbid0IHVwZGF0ZSB0aGUgVmlzdWFsIEMgcHJvamVjdCBmaWxlcywgYmVjYXVzZSBJIG9ubHkKICAgICAgaGF2ZSBhY2Nlc3MgdG8gYSBuZXdlciB2ZXJzaW9uIG9mIFZDLCBhbmQgSSBkaWRuJ3Qga25vdyBpZiB5b3UKICAgICAgd2FudGVkIHRoZW0gdXBkYXRlZC4gVGhlIGFkdmFwaTMyIGxpYnJhcnkgbmVlZHMgdG8gYmUgYWRkZWQgdG8gdGhlCiAgICAgIHByb2plY3QgaW4gb3JkZXIgZm9yIHRoaXMgdG8gd29yayBvbiBXaW4zMiAodGhhdCdzIHdoZXJlIHRoZSBldmVudAogICAgICBsb2cgQVBJIGlzKS4KICAgCjIwMDEtMDktMTQgMTQ6MjIgIGhhcmRha2VyCgogICAqIGNvbmZpZy5oLmluICwgY29uZmlndXJlOgoKICAgSSwgdWgsIGNvdWdoLCB1aCBmb3Jnb3QgdG8gcnVuIGF1dG9jb25mL2F1dG9oZWFkZXIuICBEYXZlOiBkb24ndCBraWxsIG1lLgogICAKMjAwMS0wOS0xNCAxNDoxOSAgaGFyZGFrZXIKCiAgICogcGVybC9TTk1QLzogU05NUC5wbSAsIFNOTVAueHM6CgogICBQYXRjaCAjNDI4ODg0OiBBZGQgLVBSIGxpa2Ugb3B0aW9uIHRvIHBlcmwgbW9kdWxlIChmcm9tIEpvZSBDbGFya2UpLgogICAKMjAwMS0wOS0xNCAxNDowOCAgaGFyZGFrZXIKCiAgICogUkVBRE1FICwgYWNjb25maWcuaCAsIGNvbmZpZ3VyZS5pbiAsCiAgIGFnZW50L2FnZW50X3RyYXAuYyAsIGFnZW50L21pYmdyb3VwL2FnZW50eC9jbGllbnQuYyAsCiAgIGFnZW50L21pYmdyb3VwL2hvc3QvaHJfZmlsZXN5cy5jICwKICAgYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9zd2luc3QuYyAsCiAgIGFnZW50L21pYmdyb3VwL21pYklJL3N5c3RlbV9taWIuYyAsCiAgIGFnZW50L21pYmdyb3VwL21pYkpKL3N5c3RlbV9taWIuYyAsCiAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL2Rpc2suYyAsCiAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL2Vycm9ybWliLmMgLAogICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9leHRlbnNpYmxlLmMgLAogICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9maWxlLmMgLAogICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9sb2FkYXZlLmMgLAogICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9tZW1vcnkuYyAsCiAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL21lbW9yeV9mcmVlYnNkMi5jICwKICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvbWVtb3J5X25ldGJzZDEuYyAsCiAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL21lbW9yeV9zb2xhcmlzMi5jICwKICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvcHJvYy5jICwKICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvdmVyc2lvbmluZm8uYyAsCiAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Ztc3RhdC5jICwKICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvdm1zdGF0X2JzZGk0LmMgLAogICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC92bXN0YXRfZnJlZWJzZDIuYyAsCiAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Ztc3RhdF9uZXRic2QxLmMgLAogICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC92bXN0YXRfc29sYXJpczIuYyAsCiAgIHNubXBsaWIvc25tcEFBTDVQVkNEb21haW4uYyAsIHNubXBsaWIvc25tcEFBTDVQVkNEb21haW4uaAogICAsIHNubXBsaWIvc25tcFVuaXhEb21haW4uYyAsIHNubXBsaWIvc25tcFVuaXhEb21haW4uaAogICAsIHNubXBsaWIvc25tcF9hcGkuaCAsIHNubXBsaWIvc25tcHYzLmMgLAogICBzbm1wbGliL2FzbjEuaDoKCiAgIEFwcGxpZWQgYSBtb2RpZmllZCB2ZXJzaW9uIG9mIHBhdGNoICM0MjczNDMgZnJvbSBIYXJyaWU6CiAgICAgbWFrZSBlbnRlcnByaXNlIElEIHJlbG9jYXRhYmxlIHdoZXJlIGxlZ2FsIHRvIGRvIHNvCiAgIAoyMDAxLTA5LTE0IDEyOjA5ICBoYXJkYWtlcgoKICAgKiBhZ2VudC86IE1ha2VmaWxlLmluICwgbWliZ3JvdXAvTWFrZWZpbGUuaW46CgogICBBbHRlcm5hdGl2ZSBzb2x1dGlvbiB0byBwYXRjaCAjMzEyNjk0OgogICAgIG1vdmUgZGF0ZV9uX3RpbWUgdXRpbGl0aWVzIHRvIHNubXBsaWIvc25tcC10Yy5jLgogICAKMjAwMS0wOS0xNCAxMjowOCAgaGFyZGFrZXIKCiAgICogYWdlbnQvbWliZ3JvdXAvaG9zdC86IGhyX3V0aWxzLmMgLCBocl91dGlscy5oOgoKICAgcmVtb3ZlZC4gIEZ1bmN0aW9uYWxpdHkgbW92ZWQgdG8gc25tcGxpYi9zbm1wLXRjLltjaF0KICAgCjIwMDEtMDktMTQgMTI6MDYgIGhhcmRha2VyCgogICAqIGFnZW50L21pYmdyb3VwL2hvc3QuaCAsIGFnZW50L21pYmdyb3VwL2hvc3QvaHJfZmlsZXN5cy5jCiAgICwgYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9zd2luc3QuYyAsCiAgIGFnZW50L21pYmdyb3VwL2hvc3QvaHJfc3lzdGVtLmMgLAogICBhZ2VudC9taWJncm91cC9ob3N0L2hyX3N5c3RlbS5oICwKICAgYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl91dGlscy5jICwgc25tcGxpYi9NYWtlZmlsZS5pbiAsCiAgIHNubXBsaWIvc25tcC10Yy5jICwgc25tcGxpYi9zbm1wLXRjLmg6CgogICBBbHRlcm5hdGl2ZSBzb2x1dGlvbiB0byBwYXRjaCAjMzEyNjk0OgogICAgIG1vdmUgZGF0ZV9uX3RpbWUgdXRpbGl0aWVzIHRvIHNubXBsaWIvc25tcC10Yy5jLgogICAKMjAwMS0wOS0xNCAwOTo0OCAgaGFyZGFrZXIKCiAgICogd2luMzIvY29uZmlnLmguYm9ybGFuZDoKCiAgIGZpbGUgY29uZmlnLmguYm9ybGFuZCB3YXMgaW5pdGlhbGx5IGFkZGVkIG9uIGJyYW5jaCBWNC0yLXBhdGNoZXMuCiAgIAoyMDAxLTA5LTE0IDA2OjE5ICBqYnBuCgogICAqIGFnZW50L21pYmdyb3VwL2FnZW50eC86IG1hc3Rlci5jICwgbWFzdGVyX3JlcXVlc3QuYyAsCiAgIG1hc3Rlcl9yZXF1ZXN0Lmg6CgogICAgIC0gdXNlIGluY2x1c2l2ZSBzZWFyY2ggcmFuZ2Ugb25seSB3aGVuIGFwcHJvcHJpYXRlIGZvciBnZXROZXh0CiAgICAgICBxdWVyaWVzCiAgIAoyMDAxLTA5LTEyIDA2OjQ3ICBoYXJkYWtlcgoKICAgKiBzbm1wbGliL3NubXBDYWxsYmFja0RvbWFpbi5jOgoKICAgZmlsZSBzbm1wQ2FsbGJhY2tEb21haW4uYyB3YXMgaW5pdGlhbGx5IGFkZGVkIG9uIGJyYW5jaCBORVctQUdFTlQtQVBJLgogICAKMjAwMS0wOS0xMiAwNjo0NyAgaGFyZGFrZXIKCiAgICogc25tcGxpYi9zbm1wQ2FsbGJhY2tEb21haW4uaDoKCiAgIGZpbGUgc25tcENhbGxiYWNrRG9tYWluLmggd2FzIGluaXRpYWxseSBhZGRlZCBvbiBicmFuY2ggTkVXLUFHRU5ULUFQSS4KICAgCjIwMDEtMDktMDYgMDc6NDAgIGpicG4KCiAgICogYWdlbnQvOiBzbm1wX2FnZW50LmMgLCBzbm1wX3ZhcnMuYzoKCiAgICAgLSBpZiBpbmNsdWRlIGJpdCBpcyBzZXQgaW4gYW4gQWdlbnRYIFNlYXJjaFJhbmdlIChoZW5jZSB0eXBlIG9mIHZhcmJpbmQKICAgICAgIGlzIEFTTl9QUklWX0lOQ0xfUkFOR0UpLCB0cnkgYW4gZXhhY3QgcXVlcnkgZmlyc3QgYmVjYXVzZSBhbiBvYmplY3QKICAgICAgIHdob3NlIG5hbWUgaXMgbGV4aS1lcXVhbCBpcyBhIHZhbGlkIHJlc3BvbnNlOyBpZiBleGFjdCBxdWVyeSBmYWlscwogICAgICAgdGhlbiBmYWxsIGJhY2sgdG8gYW4gaW5leGFjdCBxdWVyeS4KICAgCjIwMDEtMDktMDYgMDc6MzggIGpicG4KCiAgICogYWdlbnQvbWliZ3JvdXAvYWdlbnR4LzogbWFzdGVyLmMgLCBtYXN0ZXJfcmVxdWVzdC5jICwKICAgcHJvdG9jb2wuYyAsIHN1YmFnZW50LmM6CgogICAgIC0gb29wcywgdXNlZCBJTkNML0VYQ0wgd3Jvbmcgd2F5IHJvdW5kIGluIGEgY291cGxlIG9mIHBsYWNlcwogICAKICAgICAtIGJldHRlciB0ZXN0IGZvciBzY29waW5nIHJlcXVpcmVtZW50cyBpbiBzdWJhZ2VudAogICAKMjAwMS0wOS0wNCAwNzoxNCAgamJwbgoKICAgKiBhZ2VudC9zbm1wZC5jOgoKICAgICAtIGFkZCBtaXNzaW5nIGJyZWFrOyBhZnRlciBwcm9jZXNzaW5nIC1QIG9wdGlvbiwgbm90ZWQgYnkgQm90b25kCiAgICAgICBUYXJuYXkgKHNlZSBwYXRjaCAjNDU4MzI3KQogICAKMjAwMS0wOC0yOCAwMzowNCAgamJwbgoKICAgKiBhZ2VudC86IHNubXBfYWdlbnQuYyAoVjQtMi1wYXRjaGVzLjcpLCBzbm1wX2FnZW50LmM6CgogICAgIC0gYWRkIG1pc3NpbmcgI2luY2x1ZGUgPHRjcGQuaD4gaWYgdXNpbmcgbGlid3JhcCwgbm90ZWQgYnkgTmF0aGFuCiAgICAgICBOZXVsaW5nZXIgKHBhdGNoICM0NTM4MzEpLgogICAKMjAwMS0wOC0yOCAwMjozOCAgamJwbgoKICAgKiBhZ2VudC86IHNubXBkLmMgKFY0LTItcGF0Y2hlcy4xKSwgc25tcGQuYzoKCiAgICAgLSBhdm9pZCB1c2Ugb2YgcHJlLXByb2Nlc3NvciBkaXJlY3RpdmVzIGluc2lkZSBwcmludGYoKSBjYWxsLCB3aGljaAogICAgICAgaXMgYSBtYWNybyBpbiBnbGliYywgbWFraW5nIHRoaXMgYW4gdW5kZWZpbmVkIGJlaGF2aW91cgogICAgICAgY29uc3RydWN0ICh3aGljaCBHQ0MgMy4wIHJlZnVzZXMgdG8gY29tcGlsZSkuICBTZWUgYnVnICM0NTU4MDQgZm9yCiAgICAgICBmdXJ0aGVyIGRldGFpbHMuCiAgIAoyMDAxLTA4LTI0IDEwOjAwICByc3RvcnkKCiAgICogc25tcGxpYi9kYXRhX2xpc3QuaDoKCiAgIGZpbGUgZGF0YV9saXN0Lmggd2FzIGluaXRpYWxseSBhZGRlZCBvbiBicmFuY2ggTkVXLUFHRU5ULUFQSS4KICAgCjIwMDEtMDgtMjQgMTA6MDAgIHJzdG9yeQoKICAgKiBzbm1wbGliL2RhdGFfbGlzdC5jOgoKICAgZmlsZSBkYXRhX2xpc3QuYyB3YXMgaW5pdGlhbGx5IGFkZGVkIG9uIGJyYW5jaCBORVctQUdFTlQtQVBJLgogICAKMjAwMS0wOC0yMiAwODo0NSAgamJwbgoKICAgKiBhZ2VudC86IHNubXBfdmFycy5jICwgbWliZ3JvdXAvYWdlbnR4L21hc3Rlci5jICwKICAgbWliZ3JvdXAvYWdlbnR4L21hc3Rlcl9yZXF1ZXN0LmMgLCBtaWJncm91cC9hZ2VudHgvcHJvdG9jb2wuYwogICAsIG1pYmdyb3VwL2FnZW50eC9zdWJhZ2VudC5jOgoKICAgICAtIGFkZCBjaGVja2luZyB0aGF0IHJlc3VsdHMgdG8gYmUgcmV0dXJuZWQgdG8gbWFzdGVyIGFnZW50IGFyZSBpbgogICAgICAgcmVxdWVzdGVkIHNjb3BlIChpZiBhbnkpIChnZXRCdWxrIG5vdCB5ZXQgZG9uZSkKICAgCjIwMDEtMDgtMTUgMDk6MzEgIGpicG4KCiAgICogc25tcGxpYi9zbm1wX2RlYnVnLmM6CgogICAgIC0gdXNlIHNwcmludF9yZWFsbG9jX29iamlkIGluIGRlYnVnbXNnX29pZCB0byBwcmludCBsb25nIE9JRHMuCiAgIAoyMDAxLTA4LTE1IDA4OjM3ICBqYnBuCgogICAqIGFnZW50L21pYmdyb3VwL21pYklJL3ZhY21fdmFycy5jOgoKICAgICAtIGluY3JlbWVudCB0aGUgdmFsdWUgb2Ygc25tcEluQmFkQ29tbXVuaXR5VXNlcyB3aGVuIGF0dGVtcHRpbmcgYW4KICAgICAgIG9wZXJhdGlvbiBub3QgcGVybWl0dGVkIGJ5IHRoZSBnaXZlbiBjb21tdW5pdHksIHBlciBSRkMgMTkwNy4KICAgCjIwMDEtMDgtMTUgMDg6MzQgIGpicG4KCiAgICogYWdlbnQvc25tcF9hZ2VudC5jOgoKICAgICAtIHdoZW4gdHJhbnNsYXRpbmcgdGhlIHYyKyBlcnJvci1zdGF0dXMgdmFsdWUgYXV0aG9yaXphdGlvbkVycm9yCiAgICAgICBpbnRvIG5vU3VjaE5hbWUgZm9yIGEgdjEgc2Vzc2lvbiwgaW5jcmVtZW50IHRoZSB2YWx1ZSBvZgogICAgICAgc25tcEluQmFkQ29tbXVuaXR5VXNlcywgcGVyIFJGQyAyNTc2LgogICAKMjAwMS0wOC0xNCAwMzoyMiAgamJwbgoKICAgKiBzbm1wbGliL3NubXBfY2xpZW50LmM6CgogICAgIC0gaW4gc25tcF9zZXRfdmFyX29iamlkKCksIHRyeSB0byBkZXRlY3QgYSBwcmV2aW91c2x5LW1hbGxvYygpZWQKICAgICAgIGJ1ZmZlciBmb3IgdGhlIHZhcmlhYmxlIG5hbWUsIGFuZCBmcmVlKCkgaXQsIHRvIGF2b2lkIG1lbW9yeQogICBsZWFrcy4KICAgCjIwMDEtMDgtMTMgMDM6NDcgIGpicG4KCiAgICogc25tcGxpYi9zbm1wVENQRG9tYWluLmM6CgogICAgIC0gdXNlIFdpbjMyIGNhbGxzIHRvIGNoYW5nZSBibG9ja2luZyBzdGF0ZSBvZiBzb2NrZXRzIGlmCiAgICAgICBhcHByb3ByaWF0ZS4gIFRoYW5rcyB0byBKb2VyZyBNYXR0ZXMgZm9yIGhlbHAgZGVidWdnaW5nIHRoaXMuCiAgIAoyMDAxLTA4LTEzIDAzOjM3ICBqYnBuCgogICAqIHNubXBsaWIvc25tcF9hcGkuYzoKCiAgICAgLSBwZXJmb3JtIGFuIFNOTVBfQ0FMTEJBQ0tfT1BfRElTQ09OTkVDVCBhbmQgY2xvc2UgdGhlIGNvbm5lY3Rpb24gaWYKICAgICAgIHdlIGdldCBhbiBlcnJvciBvbiBhIHN0cmVhbSByZWNlaXZlLCBhcyB3ZWxsIGFzIGlmIGl0IGlzIGNsb3NlZCBpbgogICAgICAgYW4gb3JkZXJseSBmYXNoaW9uLiAgVGhpcyBtYWtlcyBsaWZlIGVhc2llciBvbiBXaW4zMiBpbnBhcnRpY3VsYXIuCiAgICAgICBUaGFua3MgdG8gSm9lcmcgTWF0dGVzIGZvciBoZWxwIHdpdGggZGVidWdnaW5nIHRoaXMuCiAgIAoyMDAxLTA4LTA5IDAzOjEwICBoYXJkYWtlcgoKICAgKiBhZ2VudC9oZWxwZXJzL3RhYmxlX2RhdGFzZXQuYzoKCiAgIGZpbGUgdGFibGVfZGF0YXNldC5jIHdhcyBpbml0aWFsbHkgYWRkZWQgb24gYnJhbmNoIE5FVy1BR0VOVC1BUEkuCiAgIAoyMDAxLTA4LTA5IDAzOjEwICBoYXJkYWtlcgoKICAgKiBhZ2VudC9oZWxwZXJzL3RhYmxlX2RhdGFzZXQuaDoKCiAgIGZpbGUgdGFibGVfZGF0YXNldC5oIHdhcyBpbml0aWFsbHkgYWRkZWQgb24gYnJhbmNoIE5FVy1BR0VOVC1BUEkuCiAgIAoyMDAxLTA4LTA4IDAxOjQyICBoYXJkYWtlcgoKICAgKiBhZ2VudC9oZWxwZXJzL3RhYmxlX2RhdGEuaDoKCiAgIGZpbGUgdGFibGVfZGF0YS5oIHdhcyBpbml0aWFsbHkgYWRkZWQgb24gYnJhbmNoIE5FVy1BR0VOVC1BUEkuCiAgIAoyMDAxLTA4LTA4IDAxOjQyICBoYXJkYWtlcgoKICAgKiBhZ2VudC9oZWxwZXJzL3RhYmxlX2RhdGEuYzoKCiAgIGZpbGUgdGFibGVfZGF0YS5jIHdhcyBpbml0aWFsbHkgYWRkZWQgb24gYnJhbmNoIE5FVy1BR0VOVC1BUEkuCiAgIAoyMDAxLTA4LTA3IDEzOjU5ICBuYmEKCiAgICogbWFuL3NubXBfcGVycm9yLjM6CgogICBmaWxlIHNubXBfcGVycm9yLjMgd2FzIGluaXRpYWxseSBhZGRlZCBvbiBicmFuY2ggVjQtMi1wYXRjaGVzLgogICAKMjAwMS0wOC0wNyAxMzo1OSAgbmJhCgogICAqIG1hbi9zbm1wX2FwaV9lcnJzdHJpbmcuMzoKCiAgIGZpbGUgc25tcF9hcGlfZXJyc3RyaW5nLjMgd2FzIGluaXRpYWxseSBhZGRlZCBvbiBicmFuY2ggVjQtMi1wYXRjaGVzLgogICAKMjAwMS0wOC0wNyAxMzo1OSAgbmJhCgogICAqIG1hbi9zbm1wX3Nlc3NfcGVycm9yLjM6CgogICBmaWxlIHNubXBfc2Vzc19wZXJyb3IuMyB3YXMgaW5pdGlhbGx5IGFkZGVkIG9uIGJyYW5jaCBWNC0yLXBhdGNoZXMuCiAgIAoyMDAxLTA4LTA3IDEzOjU5ICBuYmEKCiAgICogbWFuL3NubXBfZXJyb3IuMzoKCiAgIGZpbGUgc25tcF9lcnJvci4zIHdhcyBpbml0aWFsbHkgYWRkZWQgb24gYnJhbmNoIFY0LTItcGF0Y2hlcy4KICAgCjIwMDEtMDgtMDYgMDQ6MjkgIGpicG4KCiAgICogYWdlbnQvc25tcGQuYzoKCiAgICAgLSBmaXggZm9yIHBvdGVudGlhbCBidWZmZXIgb3ZlcmZsb3cgaW4gbG9nZmlsZSBhcmd1bWVudCBoYW5kbGluZywKICAgICAgIG5vdGVkIGJ5IEFub255bW91cyAoYnVnICM0NDgyNDMpLiAgQWxzbyB1c2UgYSBsYXJnZSBlbm91Z2ggYnVmZmVyCiAgICAgICB0byBoYW5kbGUgZmlsZW5hbWVzIG9mIGxlbmd0aCBQQVRIX01BWCAoaWYgcG9zc2libGUpLgogICAKMjAwMS0wNy0zMCAxMDowNSAgamJwbgoKICAgKiBhZ2VudC9taWJncm91cC9taWJJSS92YXJfcm91dGUuYyAsIHNubXBsaWIvc25tcF9hcGkuYwogICAsIHNubXBsaWIvc25tcF9hcGkuaDoKCiAgICAgLSBtb3ZlIHNubXBfc29ja2V0X2xlbmd0aCBmdW5jdGlvbiB0byBhZ2VudC9taWJncm91cC9taWJJSS92YXJfcm91dGUuYwogICAgICAgZnJvbSBzbm1wX2FwaS5jIC0tIHRoaXMgaXMgdGhlIG9ubHkgcmVtYWluaW5nIHBsYWNlIHRoYXQgdXNlcyB0aGlzCiAgICAgICBmdW5jdGlvbiwgd2hpY2ggY2VydGFpbmx5IGRvZXNuJ3QgYmVsb25nIGluIHNubXBfYXBpLmMgYWZ0ZXIgdGhlCiAgICAgICB0cmFuc3BvcnQgYWJzdHJhY3Rpb24gbWFsYXJrZXkuCiAgIAoyMDAxLTA3LTMwIDA5OjIyICBoYXJkYWtlcgoKICAgKiBhZ2VudC9hZ2VudF9oYW5kbGVyLmM6CgogICBmaWxlIGFnZW50X2hhbmRsZXIuYyB3YXMgaW5pdGlhbGx5IGFkZGVkIG9uIGJyYW5jaCBORVctQUdFTlQtQVBJLgogICAKMjAwMS0wNy0zMCAwOToyMiAgaGFyZGFrZXIKCiAgICogYWdlbnQvYWdlbnRfaGFuZGxlci5oOgoKICAgZmlsZSBhZ2VudF9oYW5kbGVyLmggd2FzIGluaXRpYWxseSBhZGRlZCBvbiBicmFuY2ggTkVXLUFHRU5ULUFQSS4KICAgCjIwMDEtMDctMzAgMDc6MDYgIGpicG4KCiAgICogYWdlbnQvbWliZ3JvdXAvbWliSUkvdmFyX3JvdXRlLmM6CgogICAgIC0gdHJ5IHRvIHJldHVybiBpbnZhbGlkKDIpIGZvciB0aGUgaXBSb3V0ZVR5cGUgY29sdW1uIGlmIHRoZSByb3V0ZQogICAgICAgaXMgbm90IHVwLiAgU2VlIGJ1ZyAjNDI2NzEwLCByZXBvcnRlZCBieSBwandlYmVyLgogICAKMjAwMS0wNy0yNyAwNzozMiAgamJwbgoKICAgKiBzbm1wbGliL3NubXB2My5jOgoKICAgICAtIHNldCBkZWZhdWx0QXV0aFR5cGUgdG8gdXNtSE1BQ1NIQTFBdXRoUHJvdG9jb2wgaWYgU0hBIHNwZWNpZmllZAogICAgICAgKHdhcyBzZXQgdG8gdXNtSE1BQ01ENUF1dGhQcm90b2NvbCBpbiB0aGlzIGNhc2UpLiAgU3BvdHRlZCBieQogICAgICAgV2lsbGlhbSBLZW5uZW1lciAoYnVnICM0NDQ4NjApCiAgIAoyMDAxLTA3LTI3IDA2OjU5ICBqYnBuCgogICAqIGFnZW50L21pYmdyb3VwL2FnZW50eC9tYXN0ZXJfcmVxdWVzdC5jOgoKICAgICAtIGNoYW5nZSB0byBoYW5kbGVfYWdlbnR4X3Jlc3BvbnNlIE9OTFkgdG8gc2VuZCBORVdMWSBkZWxlZ2F0ZWQKICAgICAgIHJlcXVlc3RzIGFmdGVyIHByb2Nlc3NpbmcgYSBzdWNjZXNzZnVsIHJlc3BvbnNlLiAgVGhpcyBpcyBhY2hpZXZlZAogICAgICAgYnkgc2F2aW5nIHRoZSB2YWx1ZSBvZiBhc3AtPm91dHN0YW5kaW5nX3JlcXVlc3RzIGFuZCB0ZW1wb3JhcmlseQogICAgICAgc2V0dGluZyBpdCB0byBOVUxMLiAgQWZ0ZXIgcHJvY2Vzc2luZyBhbGwgdmFyYmluZHMgaW4gdGhlCiAgICAgICByZXNwb25zZSwgdGhlcmVmb3JlLCBhc3AtPm91dHN0YW5kaW5nX3JlcXVlc3RzIGNvbnRhaW5zIG9ubHkgbmV3bHkKICAgICAgIGRlbGVnYXRlZCByZXF1ZXN0cywgaWYgYW55LiAgQWZ0ZXIgc2VuZGluZyB0aGVzZSwgdGhlIG5ldyByZXF1ZXN0cwogICAgICAgYXJlIG1lcmdlZCB3aXRoIHRoZSBzYXZlZCBxdWV1ZS4KICAgCiAgICAgICBUaGlzIGZpeGVzIGEgYnVnIHRoYXQgYXJpc2VzIGlmIHlvdSByZXF1ZXN0IHZhcmlhYmxlcyBmcm9tIHR3byBvcgogICAgICAgbW9yZSBzZXBhcmF0ZSBzdWJhZ2VudHMgc2ltdWx0YW5lb3VzbHkuICBXaGF0IHVzZWQgdG8gaGFwcGVuIGlzCiAgICAgICB0aGF0LCB1cG9uIHJlY2VpdmluZyB0aGUgZmlyc3QgcmVzcG9uc2UsIHRoZSBtYXN0ZXIgYWdlbnQgd291bGQKICAgICAgIG5vdGljZSB0aGF0IGl0IGhhZCBhbiBvdXRzdGFuZGluZyByZXF1ZXN0LCBhbmQgcmV0cmFuc21pdCBpdC4KICAgICAgIFRoZW4gdGhlIHNlY29uZCByZXNwb25zZSBhcnJpdmVzLCBhbmQgdGhlIG1hc3RlciBhZ2VudCBzZW5kcyB0aGUKICAgICAgIHJlcGx5IHRvIHRoZSAoU05NUCkgcmVxdWVzdGVyIGFuZCBmcmVlcyB0aGUgcmVxdWVzdHMgKGluY2x1ZGluZwogICAgICAgY2FsbGJhY2sgZGF0YSkuICBGaW5hbGx5LCBhbm90aGVyIEFnZW50WCByZXNwb25zZSAodG8gdGhlCiAgICAgICBlcnJvbmVvdXNseSB0cmFuc21pdHRlZCByZXF1ZXN0KSBhcnJpdmVzIGFuZCB0aGUgY2FsbGJhY2sgaXMKICAgICAgIGNhbGxlZCByZWZlcmVuY2luZyBkZWFsbG9jYXRlZCBtZW1vcnksIHdoaWNoIGNhdXNlcyBhIHNlZ2ZhdWx0LgogICAKMjAwMS0wNy0yNiAwNzoyOCAgZHRzMTIKCiAgICogc25tcGxpYi86IHNubXBfYXBpLmMgKE5FVy1MSUJSQVJZLUFQSS40KSwgc25tcF9hcGkuYzoKCiAgIEFkZGluZyBhICdkb3VibGUnLXZhbHVlZCB2YXJiaW5kIGlzbid0IGluaGVyZW50bHkgYW4gaW50ZXJuYWwgZXJyb3IhCiAgIAoyMDAxLTA3LTI1IDA1OjQ3ICBqYnBuCgogICAqIGFnZW50L3NubXBkLmM6CgogICAgIC0gZGlzYWJsZSBzdGRlcnIgbG9nZ2luZyAoaWYgcmVxdWVzdGVkKSBiZWZvcmUgY2FsbGluZyBpbml0X21pYl9tb2R1bGVzKCkuCiAgICAgICBUaGlzIHNob3VsZCBmaXggdGhlIHByb2JsZW0gbm90ZWQgYnkgTmlnZWwgTWV0aGVyaW5naGFtIGluIGJ1ZyAjNDE4ODU3CiAgICAgICB3aGVyZWJ5IHRoZSBBZ2VudFggbWFzdGVyIG1vZHVsZSBwcmludHMgYSBtZXNzYWdlIHRvIHN0ZGVyciB3aGljaCBjYXVzZXMKICAgICAgIGEgU0lHUElQRSB3aGVuIHRoZSBhZ2VudCBpcyBzdGFydGVkIGFzIGEgZGFlbW9uLgogICAKMjAwMS0wNy0yNSAwMjoxOCAgamJwbgoKICAgKiBhcHBzL3NubXB0cmFwZF9sb2cuYzoKCiAgICAgLSBpbml0aWFsaXNlIGJ1ZmZlcnMgdG8gemVybyBpbiBoYW5kbGVfd3JhcF9mbXQsIHRvIGF2b2lkIGdhcmJhZ2UgaW4KICAgICAgIGRpc3BsYXkgb2Ygc2VjdXJpdHkgcGFyYW1ldGVycywgYXMgbm90ZWQgYnkgV2lsbGlhbSBGcmF1ZW5ob2ZlcgogICAgICAgKGJ1ZyAjNDM3MjMxKS4KICAgCiAgICAgLSBhZGQgY2xvc2luZyBwYXJlbnRoZXNpcyBhZnRlciAodmlhIDxhZGRyZXNzPiBpbiBmb3JtYXRfcGxhaW5fdHJhcAogICAKMjAwMS0wNy0yMyAwNzo1MyAgamJwbgoKICAgKiBzbm1wbGliL3Rvb2xzLmM6CgogICAgIC0gcmVtb3ZlIGV4Y2Vzc2l2ZSBkZWJ1Z2dpbmcgZnJvbSBzbm1wXyhyZSlhbGxvYyBmdW5jdGlvbnMKICAgCjIwMDEtMDctMjMgMDQ6MzcgIGpicG4KCiAgICogc25tcGxpYi9zbm1wVW5peERvbWFpbi5jOgoKICAgICAtIG1pbm9yIGZpeCB0byBkZWJ1Z2dpbmcgb3V0cHV0IHRvIHByaW50IGxvc2luZyBwYXRoIGNvcnJlY3RseSB3aGVuCiAgICAgICBhIHJlbW90ZSBjb25uZWN0IGZhaWxzLgogICAKMjAwMS0wNy0xNyAwOTo1NiAgaGFyZGFrZXIKCiAgICogQ29kaW5nU3R5bGU6CgogICB1cGRhdGUgZm9yIG5hbWluZyBjb252ZW50aW9ucyBhbmQgZm9yIHN0cnVjdHVyZSBkZWZpbml0aW9ucy4KICAgCjIwMDEtMDctMTcgMDk6MDcgIGhhcmRha2VyCgogICAqIENvZGluZ1N0eWxlOgoKICAgaW5pdGlhbCBjb2Rpbmcgc3R5bGUgZ3VpZGVsaW5lIGRvY3VtZW50LgogICAKMjAwMS0wNy0xNyAwOTowMiAgamJwbgoKICAgKiBhZ2VudC9taWJncm91cC9hZ2VudHgvc3ViYWdlbnQuYzoKCiAgICAgLSByZW1lbWJlciB0byByZW1vdmVfdHJhcF9zZXNzaW9uKG91ci1zZXNzaW9uLXdpdGgtbWFzdGVyLWFnZW50KQogICAgICAgaWYgdGhlIG1hc3RlciBhZ2VudCBzZXNzaW9uIGdvZXMgYXdheSwgYmVjYXVzZSBvdGhlcndpc2UgeW91CiAgICAgICBtYXkgc3Vic2VxdWVudGx5IHRyeSB0byB1c2UgaXQsIHdoaWNoIHdpbGwgcHJvYmFibHkgZHVtcCBjb3JlLAogICAgICAgYW5kIGlzIGNlcnRhaW5seSBhbiBlcnJvci4KICAgCiAgICAgLSBhbHNvIGNoYW5nZSB3aGVuIHRyYXAgc2Vzc2lvbiBpcyByZWdpc3RlcmVkIHRvIGJlaW5nIGltbWVkaWF0ZWx5CiAgICAgICB0aGUgc2Vzc2lvbiBpcyBvcGVuZWQgc28gdHJhcHMgY2FuIGJlIHNlbnQsIGUuZy4gZnJvbSB0aGUKICAgICAgIElOREVYX1NUQVJUIGNhbGxiYWNrIChmb3IgZXhhbXBsZSBsaW5rVXAgdHJhcHMgaW4gc3ViYWdlbnRzIHRoYXQKICAgICAgIHJlZ2lzdGVyIGEgcm93IG9mIGlmVGFibGUpLgogICAKMjAwMS0wNy0xNyAwODo0OCAgamJwbgoKICAgKiBhZ2VudC9hZ2VudF90cmFwLmM6CgogICAgIC0gY2hhbmdlIHRvIHJlbW92ZV90cmFwX3Nlc3Npb24oKSwgc28gYXMgbm90IHRvIGNsb3NlIGFuIFNOTVAKICAgICAgIHNlc3Npb24gc2ltcGx5IGJlY2F1c2Ugd2UgYXJlIHJlbW92aW5nIGl0IGZyb20gdGhlIHRyYXBfc2luawogICAgICAgbGlzdC4gIFRoZSByYXRpb25hbGUgaXMgdGhhdCB0aGUgc2Vzc2lvbiBtYXkgc3RpbGwgYmUgaW4gdXNlIGZvcgogICAgICAgb3RoZXIgcHVycG9zZXMsIG9yIChtb3JlIHRvIHRoZSBwb2ludCkgeW91IG1heSBiZSBjYWxsaW5nIHRoaXMKICAgICAgIGZ1bmN0aW9uIGZyb20gdGhlIHNlc3Npb24ncyBjYWxsYmFjayAoZnJvbSB3aGVyZSBjbG9zaW5nIHRoZQogICAgICAgc2Vzc2lvbiBpc24ndCBhIGdvb2QgaWRlYSkuCiAgIAoyMDAxLTA3LTEzIDA2OjAyICBkdHMxMgoKICAgKiBzbm1wbGliL25ldHNubXAuaDoKCiAgIGZpbGUgbmV0c25tcC5oIHdhcyBpbml0aWFsbHkgYWRkZWQgb24gYnJhbmNoIE5FVy1MSUJSQVJZLUFQSS4KICAgCjIwMDEtMDctMTIgMTI6MDkgIGhhcmRha2VyCgogICAqIGFnZW50L2hlbHBlcnMvdGFibGVfaXRlcmF0b3IuYzoKCiAgIGZpbGUgdGFibGVfaXRlcmF0b3IuYyB3YXMgaW5pdGlhbGx5IGFkZGVkIG9uIGJyYW5jaCBORVctQUdFTlQtQVBJLgogICAKMjAwMS0wNy0xMiAxMjowOSAgaGFyZGFrZXIKCiAgICogYWdlbnQvaGVscGVycy90YWJsZV9pdGVyYXRvci5oOgoKICAgZmlsZSB0YWJsZV9pdGVyYXRvci5oIHdhcyBpbml0aWFsbHkgYWRkZWQgb24gYnJhbmNoIE5FVy1BR0VOVC1BUEkuCiAgIAoyMDAxLTA3LTEyIDAyOjIxICBqYnBuCgogICAqIGFnZW50Lzogc25tcF9hZ2VudC5jICwgbWliZ3JvdXAvYWdlbnR4L2NsaWVudC5jICwKICAgbWliZ3JvdXAvYWdlbnR4L21hc3Rlcl9yZXF1ZXN0LmMgLCBtaWJncm91cC9hZ2VudHgvcHJvdG9jb2wuYwogICAsIG1pYmdyb3VwL2FnZW50eC9zdWJhZ2VudC5jOgoKICAgICAtIGZpeCBmb3IgYnVnICM0MzkwOTQsIHJlcG9ydGVkIGJ5IEV2ZXJ0LUphbiB2YW4gVHVpamwsIHdoZXJlYnkKICAgICAgIHRoZSBBZ2VudFggbWFzdGVyIGFnZW50IGV4cGVjdHMgYSByZXNwb25zZSB0byBhbiBhZ2VudHgtQ2xlYW51cFNldC1QRFUKICAgICAgIG1lc3NhZ2UgKGluY29ycmVjdGx5KS4gIFRoaXMgb25seSBzaG93cyB1cCB3aGVuIHRlc3RpbmcgYWdhaW5zdCBvdGhlcgogICAgICAgc3ViYWdlbnRzIChlLmcuIGpheCkgYmVjYXVzZSB0aGUgbmV0LXNubXAgc3ViYWdlbnQgc2VuZHMgYSByZXNwb25zZQogICAgICAgdG8gdGhlIGFnZW50eC1DbGVhbnVwU2V0LVBEVSAoaW5jb3JyZWN0bHkpLgogICAKMjAwMS0wNy0xMCAxNjoxMCAgaGFyZGFrZXIKCiAgICogYWdlbnQvbWliZ3JvdXAvbWliSUkvdmFjbV9jb250ZXh0LmM6CgogICBmaWxlIHZhY21fY29udGV4dC5jIHdhcyBpbml0aWFsbHkgYWRkZWQgb24gYnJhbmNoIE5FVy1BR0VOVC1BUEkuCiAgIAoyMDAxLTA3LTEwIDE2OjEwICBoYXJkYWtlcgoKICAgKiBhZ2VudC9taWJncm91cC9taWJJSS92YWNtX2NvbnRleHQuaDoKCiAgIGZpbGUgdmFjbV9jb250ZXh0Lmggd2FzIGluaXRpYWxseSBhZGRlZCBvbiBicmFuY2ggTkVXLUFHRU5ULUFQSS4KICAgCjIwMDEtMDctMTAgMTY6MDYgIGhhcmRha2VyCgogICAqIGFnZW50L21pYmdyb3VwL3RhcmdldC90YXJnZXRfY291bnRlcnMuYzoKCiAgIGZpbGUgdGFyZ2V0X2NvdW50ZXJzLmMgd2FzIGluaXRpYWxseSBhZGRlZCBvbiBicmFuY2ggTkVXLUFHRU5ULUFQSS4KICAgCjIwMDEtMDctMTAgMTY6MDYgIGhhcmRha2VyCgogICAqIGFnZW50L21pYmdyb3VwL3RhcmdldC90YXJnZXRfY291bnRlcnMuaDoKCiAgIGZpbGUgdGFyZ2V0X2NvdW50ZXJzLmggd2FzIGluaXRpYWxseSBhZGRlZCBvbiBicmFuY2ggTkVXLUFHRU5ULUFQSS4KICAgCjIwMDEtMDctMDUgMDY6MTEgIGpicG4KCiAgICogYWdlbnQvbWliZ3JvdXAvbWliSUkvOiBpbnRlcmZhY2VzLmMgLCBpbnRlcmZhY2VzLmg6CgogICAgIC0gbWFrZSBJbnRlcmZhY2VfU2Nhbl9HZXRfQ291bnQgbm9uLXN0YXRpYyBhcyBpdCdzIHZlcnkgdXNlZnVsCiAgIAoyMDAxLTA3LTA1IDAzOjQwICBqYnBuCgogICAqIHNubXBsaWIvc25tcHVzbS5jOgoKICAgICAtIGZyZWUgdGhlIGNhY2hlZCBzZWN1cml0eSBwYXJhbWV0ZXJzIHdoZW4gd2UgaGF2ZSBhIHBhcnNlIGVycm9yCiAgICAgICBvbiBpbnB1dCwgb3RoZXJ3aXNlIHdlIGxlYWsgbWVtb3J5ICh0cmlnZ2VyZWQgYnkgU0MgMy4wLjEzLnsyLDN9KS4KICAgCjIwMDEtMDctMDQgMDk6NTEgIHVpZDQ0ODEwCgogICAqIHNubXBsaWIvc25tcF9hcGkuYzoKCiAgICAgLSBjYXRjaCBzb21lIG1hbGZvcm1lZCBTTk1QdjMgcGFja2V0cwogICAKMjAwMS0wNy0wNCAwNzo0MiAgdWlkNDQ4MTAKCiAgICogc25tcGxpYi9zbm1wX2FwaS5jOgoKICAgICAtIGZpeCBiYWQgbWlzdGFrZSBpbiBzbm1wdjNfc2NvcGVkUERVX2hlYWRlcl9yZWFsbG9jX3JidWlsZCB3aGljaAogICAgICAgd2FzIGVuY29kaW5nIHRoZSB3cm9uZyBsZW5ndGggaW50byB0aGUgU2NvcGVkUERVIFNFUVVFTkNFIGhlYWRlcgogICAgICAgKHdhc24ndCBpbmNsdWRpbmcgbGVuZ3RoIG9mIGFjdHVhbCBkYXRhLCBpLmUuIFBEVSEpLiAgVG90YWxseSBteQogICAgICAgZmF1bHQgLS0gaW50cm9kdWNlZCB3aGVuIGNoYW5naW5nIG92ZXIgdG8gcmVhbGxvY2F0aW5nIGJ1ZmZlcgogICAgICAgdHlwZSBmdW5jdGlvbnMuICBBbWF6aW5nIHRoaXMgaGFzbid0IGNhdXNlZCBhbGwgc29ydHMgb2YgdHJvdWJsZQogICAgICAgZm9yIHBlb3BsZSEKICAgCjIwMDEtMDctMDIgMTg6MDQgIHJzdG9yeQoKICAgKiBzbm1wbGliL3NubXAtdGMuYzoKCiAgIGZpbGUgc25tcC10Yy5jIHdhcyBpbml0aWFsbHkgYWRkZWQgb24gYnJhbmNoIE5FVy1BR0VOVC1BUEkuCiAgIAoyMDAxLTA3LTAyIDA5OjMzICBqYnBuCgogICAqIGFnZW50L3NubXBfYWdlbnQuYzoKCiAgICAgLSBzbGlnaHQgY2hhbmdlIHRvIGdlbmVyYXRpb24gb2YgZXJyb3ItaW5kZXg6CiAgIAogICAgICAgLSBleHBsaWNpdGx5IHRlc3QgZm9yIGVycm9yLXN0YXR1cyA9PSBub0Vycm9yLCBhbmQgc2V0IGVycm9yLWluZGV4CiAgICAgICAgIHRvIHplcm8gaW4gdGhpcyBjYXNlOwogICAKICAgICAgIC0gb3RoZXJ3aXNlIHVzZSB0aGUgY2FjaGVkIHZhbHVlOwogICAKICAgICAgIC0gZG9uJ3QgemVybyB0aGUgY2FjaGVkIHZhbHVlIGluIGhhbmRsZV92YXJfbGlzdCBpZiBoYW5kbGVfb25lX3ZhcgogICAgICAgICByZXR1cm5zIG5vRXJyb3IKICAgCiAgICAgLSB0aGlzIGNvcGVzIHByb3Blcmx5IHdpdGggU0VUIHJlcXVlc3RzLCB3aGVyZSBhIGZhaWxpbmcgU0VUIHdpbGwgaGF2ZQogICAgICAgYSBGUkVFIHBoYXNlIHdoaWNoIHdpbGwgdHlwaWNhbGx5IHJldHVybiBub0Vycm9yLiAgUHJldmlvdXNseSB0aGlzCiAgICAgICB3b3VsZCBlcnJvbmVvdXNseSBjYXVzZSB0aGUgZXJyb3ItaW5kZXggdG8gYmUgc2V0IHRvIHplcm8uCiAgIAoyMDAxLTA3LTAyIDA4OjE0ICBqYnBuCgogICAqIGFnZW50L21pYmdyb3VwL3V0aWxfZnVuY3MuYzoKCiAgICAgLSBmaXggYmFkIGJlaGF2aW91ciBpbiBoZWFkZXJfc2ltcGxlX3RhYmxlIHdoZW4gdGhlIGluZGV4IGlzCiAgICAgICBlcXVhbCB0byBVTE9OR19NQVgKICAgCjIwMDEtMDYtMjggMTA6MDEgIGpicG4KCiAgICogYWdlbnQvbWliZ3JvdXAvc25tcHYzL3VzbVVzZXIuYzoKCiAgICAgLSBjaGFuZ2Ugc2Vuc2Ugb2Ygc25tcF9vaWRfY29tcGFyZSgpIHJlc3VsdCBjaGVjayBpbiB2YXJfdXNtVXNlcgogICAgICAgdG8gZG8gbGV4aS1vcmRlcmluZyBjb3JyZWN0bHkKICAgCjIwMDEtMDYtMjggMDc6MjAgIGpicG4KCiAgICogc25tcGxpYi9zbm1wX2FwaS5jOgoKICAgICAtIGNvdW50IG1vcmUgdjEvdjJjIHBhcnNlIGVycm9ycyAoU0MgMS4xLjEyLjEwKQogICAKMjAwMS0wNi0yOCAwNTo1NiAgamJwbgoKICAgKiBzbm1wbGliL3NubXBfYXBpLmM6CgogICAgIC0gY2hlY2sgdGhhdCB2ZXJzaW9uIGZpZWxkIG9mIFBEVSBpcyBvZiBpbnRlZ2VyIHR5cGUgcmF0aGVyIHRoYW4ganVzdAogICAgICAgYXNzdW1pbmcgaXQgaXMgKFNDIDEuMS4xMi4yLjEpCiAgIAoyMDAxLTA2LTI4IDA0OjQwICBqYnBuCgogICAqIGFnZW50L21pYmdyb3VwL21pYklJL3ZhY21fdmFycy5jOgoKICAgICAtIGluY3JlbWVudCBzbm1wSW5CYWRDb21tdW5pdHlOYW1lcyB3aGVuIHdlIHNlZSB1bmtub3duIGNvbW11bml0eQogICAgICAgbmFtZXMsIHBlciBSRkMxOTA3CiAgIAoyMDAxLTA2LTI3IDA4OjA5ICBqYnBuCgogICAqIGFnZW50L21pYmdyb3VwL2FnZW50eC9zdWJhZ2VudC5jOgoKICAgICAtIG1ha2UgdXNlIG9mIG5ldyBmdW5jdGlvbiByZWdpc3Rlcl9taWJfZGV0YWNoKCkgdG8gbWFyayBhbGwgb3VyCiAgICAgICBub2RlcyBhcyBkZXRhY2hlZCB3aGVuIHdlIGdldCBhIHRyYW5zcG9ydCBkaXNjb25uZWN0IGluZGljYXRpb24uCiAgIAoyMDAxLTA2LTI3IDA4OjA3ICBqYnBuCgogICAqIGFnZW50LzogYWdlbnRfcmVnaXN0cnkuYyAsIGFnZW50X3JlZ2lzdHJ5LmggLAogICB2YXJfc3RydWN0Lmg6CgogICAgIC0gYWRkIGFkZGl0aW9uYWwgZmxhZyB0byBzdWJ0cmVlIHN0cnVjdHVyZSB0aGF0IHN1YmFnZW50cyBjYW4gdXNlCiAgICAgICB0byBkZXRlcm1pbmUgd2hldGhlciBhbiBhdHRlbXB0IGhhcyBiZWVuIG1hZGUgdG8gcmVnaXN0ZXIgYW5kIE9JRAogICAgICAgd2l0aCBhIG1hc3RlciBhZ2VudCBkdXJpbmcgYSBzZXNzaW9uJ3MgbGlmZXRpbWUuICBUaGlzIGFsbG93cwogICAgICAgbWFudWFsIHJlLXJlZ2lzdHJhdGlvbiBhbmQgYXV0b21hdGljIHJlLXJlZ2lzdHJhdGlvbiB0byBiZSBtaXhlZAogICAgICAgd2l0aGluIGEgc3ViYWdlbnQgKHBlcmhhcHMgYmVjYXVzZSB5b3UgYXJlIGRvaW5nIGluZGV4IHN0dWZmKS4KICAgCiAgICAgLSBhZGQgZnVuY3Rpb24gcmVnaXN0ZXJfbWliX2RldGFjaCgpIHdoaWNoIHVuc2V0cyB0aGlzIGZsYWcgZm9yCiAgICAgICBhbGwga25vd24gbm9kZXMgKHN1YmFnZW50IHdvdWxkIHR5cGljYWxseSBjYWxsIHRoaXMgb24gZGlzY29ubmVjdAogICAgICAgaW5kaWNhdGlvbikuCiAgIAogICAgIC0gYWRkIGZ1bmN0aW9uIHVucmVnaXN0ZXJfbWliX3RhYmxlX3JvdygpCiAgIAogICAgIC0gY29ycmVjdCBiYWQgcmVjdXJzaXZlIGJlaGF2aW91ciBpbiByZWdpc3Rlcl9taWJfcmVhdHRhY2goKSB3aGljaAogICAgICAgdXNlZCB0byB0cnkgdG8gcmUtcmVnaXN0ZXIgTiBub2RlcyBOISB0aW1lcy4gIE9uY2Ugd2lsbCBub3JtYWxseQogICAgICAgYmUgZW5vdWdoLgogICAKICAgICAtIGNoYW5nZSB0byBkdW1wX3JlZ2lzdHJ5KCkgZm9ybWF0IHRvIGluY2x1ZGUgaGV4IGRpc3BsYXkgb2YKICAgICAgIGZsYWdzIGZpZWxkLgogICAKMjAwMS0wNi0yNiAwOToyNiAgZHRzMTIKCiAgICogRkFROgoKICAgRml4IGVycm9yIGluIFNOTVB2MiB0cmFwIGV4YW1wbGVzICAoSWRlbnRpZmllZCBieSBEaXdha2FyIFNoZXR0eSkuCiAgIAoyMDAxLTA2LTI2IDAyOjM1ICBqYnBuCgogICAqIHNubXBsaWIvbWliLmM6CgogICAgIC0gY29ycmVjdGVkIHNlbnNlIG9mIGR1bXBfcmVhbGxvY19vaWRfdG9fc3RyaW5nKCkgcmV0dXJuIHZhbHVlCiAgICAgICBjaGVja3MsIGFzIHNwb3R0ZWQgYnkgUm9iZXJ0IFN0b3J5LgogICAKMjAwMS0wNi0yNSAwNjozMCAgamJwbgoKICAgKiBhZ2VudC9taWJncm91cC9hZ2VudHgvbWFzdGVyX3JlcXVlc3QuYzoKCiAgICAgLSBzbWFsbCB0d2VhayBpbiBoYW5kbGVfYWdlbnR4X3Jlc3BvbnNlKCkgd2hlbiByZXRyeWluZyB1bmZ1bGZpbGxlZAogICAgICAgcmVxdWVzdHM6IGNvbnRpbnVlIGZyb20gdGhlICJzdGFydCIgT0lEIG9mIHRoZSBuZXh0IG5vZGUgb2YgdGhlCiAgICAgICB0cmVlLCBub3QgZnJvbSB0aGUgIm5hbWUiIE9JRCwgd2hpY2ggY2F1c2VzIGxvb3BpbmcuCiAgIAoyMDAxLTA2LTIxIDA5OjUxICBqYnBuCgogICAqIGFnZW50L21pYmdyb3VwL2FnZW50eC9tYXN0ZXJfcmVxdWVzdC5jOgoKICAgICAtIGhhbmRsZSAiaG9sZXMiIGluIHJvd3Mgb2YgdGFibGVzIHRoYXQgYXJlIGhhbmRsZWQgYnkgc3ViYWdlbnRzCiAgIAogICAgICAgU2luY2UgdGhlIGZ1bGx5LXF1YWxpZmllZCBpbnN0YW5jZSBpcyByZWdpc3RlcmVkLCB3ZSBpbnRlcnByZXQKICAgICAgIGEgcmV0dXJuIG9mIG5vU3VjaEluc3RhbmNlIHdoZW4gZG9pbmcgYW4gaW5leGFjdCBxdWVyeSBhcyBtZWFuaW5nCiAgICAgICB3ZSBzaG91bGQgcmV0cnkgdGhlIHF1ZXJ5LgogICAKMjAwMS0wNi0yMSAwMjo1MCAgamJwbgoKICAgKiBzbm1wbGliL21pYi5oOgoKICAgICAtIGZvcmdvdCB0byBjb21taXQgYXQgdGhlIHNhbWUgdGltZSBhcyBsYXN0IG1pYi5jIGNvbW1pdDsgdXBkYXRlZAogICAgICAgcHJvdG90eXBlIGZvciBzcHJpbnRfcmVhbGxvY19oaW50ZWRfaW50ZWdlcgogICAKMjAwMS0wNi0yMCAwNjo0NCAgamJwbgoKICAgKiBhZ2VudC86IGFnZW50X2luZGV4LmMgLCBhZ2VudF9pbmRleC5oOgoKICAgICAtIGFkZCBmdW5jdGlvbiBjb3VudF9pbmRleGVzIHdoaWNoIHJldHVybnMgdGhlIG51bWJlciBvZiBpbmRleGVzCiAgICAgICBhbGxvY2F0ZWQgZm9yIGEgZ2l2ZW4gT0lELiAgVGhpcyBjYW4gYmUgdXNlZnVsIGZvciBpbXBsZW1lbnRpbmcKICAgICAgICJyb3cgY291bnQiIG9iamVjdHMsIGUuZy4gaWZOdW1iZXIuCiAgIAoyMDAxLTA2LTIwIDA1OjM3ICBqYnBuCgogICAqIGFnZW50LzogYWdlbnRfY2FsbGJhY2tzLmggLCBtaWJncm91cC9hZ2VudHgvc3ViYWdlbnQuYzoKCiAgICAgLSBhZGQgU05NUERfQ0FMTEJBQ0tfSU5ERVhfU1RBUlQgYW5kIFNOTVBEX0NBTExCQUNLX0lOREVYX1NUT1AKICAgICAgIGNhbGxiYWNrcyB3aGljaCBtYXkgYmUgdXNlZCB0byBtYW5hZ2UgaW5kZXggYWxsb2NhdGlvbnMuCiAgIAogICAgICAgTWFzdGVyIGFnZW50IHNob3VsZCBwcm9iYWJseSBjYWxsIHRoZXNlIGNhbGxiYWNrcyB0b28sIGFsdGhvdWdoCiAgICAgICBpdCdzIGEgYml0IG9mIGEgZGVnZW5lcmF0ZSBjYXNlLgogICAKMjAwMS0wNi0xOSAwOTo0NCAgamJwbgoKICAgKiBhZ2VudC9hZ2VudF9pbmRleC5jOgoKICAgICAtIHVzZSBhbiBleHBsaWNpdCBmaWVsZWQgImFsbG9jYXRlZCIgaW4gc25tcF9pbmRleCBzdHJ1Y3R1cmUgdG8KICAgICAgIGluZGljYXRlIHdoZXRoZXIgb3Igbm90IGEgdmFsdWUgaXMgY3VycmVudGx5IGFsbG9jYXRlZCwgcmF0aGVyCiAgICAgICB0aGFuIG92ZXJsb2FkaW5nIGEgTlVMTCBzZXNzaW9uIHRvIG1lYW4gdGhhdCBpdCBpcyBub3QuCiAgIAogICAgICAgVGhpcyBhbGxvd3Mgc3RhcnR1cCBjb2RlIGluIGEgbWFzdGVyIGFnZW50IHRvIHByZS1yZWdpc3RlciBpbmRpY2VzCiAgICAgICB3aGVuIHRoZXJlIGFyZSBubyBzZXNzaW9ucyBvcGVuLgogICAKMjAwMS0wNi0xOSAwODozNCAgamJwbgoKICAgKiBhZ2VudC9taWJncm91cC9hZ2VudHgvOiBtYXN0ZXJfYWRtaW4uYyAsIG1hc3Rlcl9yZXF1ZXN0LmM6CgogICAgIC0gIGtlZXAgdGhlIHZhbHVlIG9mIE5FVFdPUktfQllURV9PUkRFUiBmcm9tIGguZmxhZ3MgaW4gdGhlCiAgICAgICAgYWdlbnR4LU9wZW4tUERVIGFuZCB1c2UgaXQgZm9yIHN1YnNlcXVlbnQgbWFzdGVyLWluaXRpYXRlZAogICAgICAgIEFnZW50WCBwcm90b2NvbCBvcGVyYXRpb25zLCBwZXIgUkZDIDI3NDEgKHNlY3Rpb24gNy4xLjEsCiAgICAgICAgcGFyYWdyYXBoIDQpLgogICAKICAgICAgICBGb3Igbm93LCB3ZSBhcmUgc3RvcmluZyB0aGlzIGluIHRoZSBmbGFncyBmaWVsZCBvZiBhCiAgICAgICAgc3Vic2Vzc2lvbi4gIFRoaXMgaXMgbGlrZWx5IHRvIHN0b3Agd29ya2luZyBpZiB0aGUgZmxhZ3MKICAgICAgICBkZWZpbml0aW9ucyBjaGFuZ2UgKGkuZS4gaXQncyBub3QgYSBncmVhdCBzb2x1dGlvbikKICAgCiAgICAgLSAgVGhhbmtzIHRvIFBldGVyIEtvcnN0ZW4gKHNldmVyaXR5b25lIGF0IHVzZXJzLnNvdXJjZWZvcmdlLm5ldCkKICAgICAgICBmb3IgaWRlbnRpZnlpbmcgdGhpcyBidWcsIGFuZCBmb3IgaGVscCBkZWJ1Z2dpbmcgdGhpcyBmaXguCiAgIAoyMDAxLTA2LTE5IDAyOjM1ICBqYnBuCgogICAqIHNubXBsaWIvbWliLmM6CgogICAgIC0gcmVpbnN0YXRlIHNwYWNlIGJldHdlZW4gbnVtYmVycyBhbmQgdW5pdHMuCiAgIAogICAgIC0gcmVzcGVjdCBESVNQTEFZLUhJTlRzIGZvciBVbnNpZ25lZDMyLCBHYXVnZSwgR2F1Z2UzMiB0eXBlcy4KICAgCjIwMDEtMDYtMTMgMDM6MjkgIGpicG4KCiAgICogYWdlbnQvc25tcF92YXJzLmM6CgogICAgIC0gbWlub3IgY2hhbmdlIHRvIGRlYnVnZ2luZyB0byByZWR1Y2UgIm5vaXNlIGxldmVsIiBmcm9tIFB1cmlmeQogICAKMjAwMS0wNi0xMiAxMDozNSAgamJwbgoKICAgKiBhZ2VudC9zbm1wX2FnZW50LmM6CgogICAgIC0gaGFuZGxlIG5vbi1yZXBlYXRlcnMgYW5kIG1heC1yZXBldGl0aW9ucyBmaWVsZCB2YWx1ZXMgb2YgPCAwIChieQogICAgICAgc2V0dGluZyB0aGVtIHRvIDAsIHBlciBSRkMgMTkwNSkKICAgCjIwMDEtMDYtMTIgMTA6MDUgIGpicG4KCiAgICogYWdlbnQvc25tcF9hZ2VudC5jOgoKICAgICAtIGZpeCBidWcgdGhhdCBjYXVzZWQgYSBudWxsIHBvaW50ZXIgdG8gYmUgZm9sbG93ZWQgd2hlbiBwcm9jZXNzaW5nIGEKICAgICAgIEdFVEJVTEsgcmVxdWVzdCB3aXRoIG5vbi1yZXBlYXRlcnMgPiAwLCBtYXgtcmVwZXRpdGlvbnMgPT0gMCBhbmQgbm8KICAgICAgIHZhcmJpbmRzIGluIHRoZSByZXF1ZXN0LgogICAKMjAwMS0wNi0xMiAwNzoyNCAgZHRzMTIKCiAgICogc25tcGxpYi86IHJlYWRfY29uZmlnLmMgKFY0LTItcGF0Y2hlcy4xKSwgcmVhZF9jb25maWcuYzoKCiAgIEZpeCAndW5yZWdpc3Rlcl9jb25maWdfaGFuZGxlcicgdG8gaGFuZGxlIHRhZ3Mgb3RoZXIKICAgdGhhbiB0aGUgZmlyc3QgaW4gdGhlIGxpc3QuICAoVGhhbmtzIHRvIFBhdWwgU2VyaWNlKS4KICAgCjIwMDEtMDYtMDYgMDc6MzkgIGpicG4KCiAgICogYWdlbnQvbWliZ3JvdXAvYWdlbnR4L21hc3Rlcl9hZG1pbi5jOgoKICAgICAtIGZyZWUoKSByZXR1cm4gdmFsdWUgZnJvbSByZWdpc3Rlcl9pbmRleCgpIGNhbGxzCiAgIAoyMDAxLTA2LTA2IDA3OjM3ICBqYnBuCgogICAqIGFnZW50L2FnZW50X2luZGV4LmM6CgogICAgIC0gbW9yZSB1bmlmb3JtIHJldHVybiB2YWx1ZSBmcm9tIHJlZ2lzdGVyX2luZGV4KCk6IG1ha2UgaXQgYWx3YXlzIGEKICAgICAgIHZhcmJpbmQgd2hpY2ggdGhlIGNhbGxlciBpcyByZXNwb25zaWJsZSBmb3IgZnJlZSgpaW5nLCBvciBlbHNlIE5VTEwuCiAgIAoyMDAxLTA2LTA1IDAzOjEwICBqYnBuCgogICAqIGFnZW50L2FnZW50X2luZGV4LmM6CgogICAgIC0gZml4IGZvciBpbmRleCBhbGxvY2F0aW9uLCBzdWNoIHRoYXQgcmVxdWVzdHMgZm9yIHNwZWNpZmljIGluZGljZXMgd2hpY2gKICAgICAgIGhhdmUgcHJldmlvdXNseSBiZWVuIGFsbG9jYXRlZCwgYnV0IGFyZSBub3QgY3VycmVudGx5IGluIHVzZSwgc3VjY2VlZC4KICAgCiAgICAgLSBtb3JlIGRlYnVnZ2luZyBvdXRwdXQuCiAgIAoyMDAxLTA2LTAxIDA4OjM3ICBoYXJkYWtlcgoKICAgKiBhZ2VudC9taWJncm91cC90ZXN0ZGVsYXllZC5oOgoKICAgZmlsZSB0ZXN0ZGVsYXllZC5oIHdhcyBpbml0aWFsbHkgYWRkZWQgb24gYnJhbmNoIE5FVy1BR0VOVC1BUEkuCiAgIAoyMDAxLTA2LTAxIDA4OjM3ICBoYXJkYWtlcgoKICAgKiBhZ2VudC9taWJncm91cC90ZXN0aGFuZGxlci5oOgoKICAgZmlsZSB0ZXN0aGFuZGxlci5oIHdhcyBpbml0aWFsbHkgYWRkZWQgb24gYnJhbmNoIE5FVy1BR0VOVC1BUEkuCiAgIAoyMDAxLTA2LTAxIDA4OjM3ICBoYXJkYWtlcgoKICAgKiBhZ2VudC9taWJncm91cC90ZXN0ZGVsYXllZC5jOgoKICAgZmlsZSB0ZXN0ZGVsYXllZC5jIHdhcyBpbml0aWFsbHkgYWRkZWQgb24gYnJhbmNoIE5FVy1BR0VOVC1BUEkuCiAgIAoyMDAxLTA2LTAxIDA4OjM3ICBoYXJkYWtlcgoKICAgKiBhZ2VudC9taWJncm91cC90ZXN0aGFuZGxlci5jOgoKICAgZmlsZSB0ZXN0aGFuZGxlci5jIHdhcyBpbml0aWFsbHkgYWRkZWQgb24gYnJhbmNoIE5FVy1BR0VOVC1BUEkuCiAgIAoyMDAxLTA2LTAxIDA4OjM2ICBoYXJkYWtlcgoKICAgKiBhZ2VudC9oZWxwZXJzL3RhYmxlLmM6CgogICBmaWxlIHRhYmxlLmMgd2FzIGluaXRpYWxseSBhZGRlZCBvbiBicmFuY2ggTkVXLUFHRU5ULUFQSS4KICAgCjIwMDEtMDYtMDEgMDg6MzYgIGhhcmRha2VyCgogICAqIGFnZW50L2hlbHBlcnMvbXVsdGlwbGV4ZXIuaDoKCiAgIGZpbGUgbXVsdGlwbGV4ZXIuaCB3YXMgaW5pdGlhbGx5IGFkZGVkIG9uIGJyYW5jaCBORVctQUdFTlQtQVBJLgogICAKMjAwMS0wNi0wMSAwODozNiAgaGFyZGFrZXIKCiAgICogYWdlbnQvaGVscGVycy9vbGRfYXBpLmM6CgogICBmaWxlIG9sZF9hcGkuYyB3YXMgaW5pdGlhbGx5IGFkZGVkIG9uIGJyYW5jaCBORVctQUdFTlQtQVBJLgogICAKMjAwMS0wNi0wMSAwODozNiAgaGFyZGFrZXIKCiAgICogYWdlbnQvaGVscGVycy9udWxsLmg6CgogICBmaWxlIG51bGwuaCB3YXMgaW5pdGlhbGx5IGFkZGVkIG9uIGJyYW5jaCBORVctQUdFTlQtQVBJLgogICAKMjAwMS0wNi0wMSAwODozNiAgaGFyZGFrZXIKCiAgICogYWdlbnQvaGVscGVycy9pbnN0YW5jZS5jOgoKICAgZmlsZSBpbnN0YW5jZS5jIHdhcyBpbml0aWFsbHkgYWRkZWQgb24gYnJhbmNoIE5FVy1BR0VOVC1BUEkuCiAgIAoyMDAxLTA2LTAxIDA4OjM2ICBoYXJkYWtlcgoKICAgKiBhZ2VudC9oZWxwZXJzL3NldF9oZWxwZXIuaDoKCiAgIGZpbGUgc2V0X2hlbHBlci5oIHdhcyBpbml0aWFsbHkgYWRkZWQgb24gYnJhbmNoIE5FVy1BR0VOVC1BUEkuCiAgIAoyMDAxLTA2LTAxIDA4OjM2ICBoYXJkYWtlcgoKICAgKiBhZ2VudC9oZWxwZXJzL3RhYmxlLmg6CgogICBmaWxlIHRhYmxlLmggd2FzIGluaXRpYWxseSBhZGRlZCBvbiBicmFuY2ggTkVXLUFHRU5ULUFQSS4KICAgCjIwMDEtMDYtMDEgMDg6MzYgIGhhcmRha2VyCgogICAqIGFnZW50L2hlbHBlcnMvcmVhZF9vbmx5LmM6CgogICBmaWxlIHJlYWRfb25seS5jIHdhcyBpbml0aWFsbHkgYWRkZWQgb24gYnJhbmNoIE5FVy1BR0VOVC1BUEkuCiAgIAoyMDAxLTA2LTAxIDA4OjM2ICBoYXJkYWtlcgoKICAgKiBhZ2VudC9oZWxwZXJzL3NlcmlhbGl6ZS5jOgoKICAgZmlsZSBzZXJpYWxpemUuYyB3YXMgaW5pdGlhbGx5IGFkZGVkIG9uIGJyYW5jaCBORVctQUdFTlQtQVBJLgogICAKMjAwMS0wNi0wMSAwODozNiAgaGFyZGFrZXIKCiAgICogYWdlbnQvaGVscGVycy9vbGRfYXBpLmg6CgogICBmaWxlIG9sZF9hcGkuaCB3YXMgaW5pdGlhbGx5IGFkZGVkIG9uIGJyYW5jaCBORVctQUdFTlQtQVBJLgogICAKMjAwMS0wNi0wMSAwODozNiAgaGFyZGFrZXIKCiAgICogYWdlbnQvaGVscGVycy9pbnN0YW5jZS5oOgoKICAgZmlsZSBpbnN0YW5jZS5oIHdhcyBpbml0aWFsbHkgYWRkZWQgb24gYnJhbmNoIE5FVy1BR0VOVC1BUEkuCiAgIAoyMDAxLTA2LTAxIDA4OjM2ICBoYXJkYWtlcgoKICAgKiBhZ2VudC9oZWxwZXJzL3JlYWRfb25seS5oOgoKICAgZmlsZSByZWFkX29ubHkuaCB3YXMgaW5pdGlhbGx5IGFkZGVkIG9uIGJyYW5jaCBORVctQUdFTlQtQVBJLgogICAKMjAwMS0wNi0wMSAwODozNiAgaGFyZGFrZXIKCiAgICogYWdlbnQvaGVscGVycy8uY3ZzaWdub3JlOgoKICAgZmlsZSAuY3ZzaWdub3JlIHdhcyBpbml0aWFsbHkgYWRkZWQgb24gYnJhbmNoIE5FVy1BR0VOVC1BUEkuCiAgIAoyMDAxLTA2LTAxIDA4OjM2ICBoYXJkYWtlcgoKICAgKiBhZ2VudC9oZWxwZXJzL211bHRpcGxleGVyLmM6CgogICBmaWxlIG11bHRpcGxleGVyLmMgd2FzIGluaXRpYWxseSBhZGRlZCBvbiBicmFuY2ggTkVXLUFHRU5ULUFQSS4KICAgCjIwMDEtMDYtMDEgMDg6MzYgIGhhcmRha2VyCgogICAqIGFnZW50L2hlbHBlcnMvTWFrZWZpbGUuaW46CgogICBmaWxlIE1ha2VmaWxlLmluIHdhcyBpbml0aWFsbHkgYWRkZWQgb24gYnJhbmNoIE5FVy1BR0VOVC1BUEkuCiAgIAoyMDAxLTA2LTAxIDA4OjM2ICBoYXJkYWtlcgoKICAgKiBhZ2VudC9oZWxwZXJzL3NlcmlhbGl6ZS5oOgoKICAgZmlsZSBzZXJpYWxpemUuaCB3YXMgaW5pdGlhbGx5IGFkZGVkIG9uIGJyYW5jaCBORVctQUdFTlQtQVBJLgogICAKMjAwMS0wNi0wMSAwODozNiAgaGFyZGFrZXIKCiAgICogYWdlbnQvaGVscGVycy9udWxsLmM6CgogICBmaWxlIG51bGwuYyB3YXMgaW5pdGlhbGx5IGFkZGVkIG9uIGJyYW5jaCBORVctQUdFTlQtQVBJLgogICAKMjAwMS0wNi0wMSAwNzozOSAgaGFyZGFrZXIKCiAgICogbG9jYWwvdGttaWI6CgogICBtaXNjIGZpeGVzIGZvciBvaWQgZm9ybWF0dGluZyBwcm9ibGVtcy4KICAgCjIwMDEtMDYtMDEgMDc6MzcgIGhhcmRha2VyCgogICAqIFJFQURNRToKCiAgIGFkZCBNYXJ0aW4gT2xkZmllbGQuCiAgIAoyMDAxLTA2LTAxIDAyOjUwICBqYnBuCgogICAqIGFnZW50Lzogc25tcF9hZ2VudC5jICwgc25tcF9hZ2VudC5oICwKICAgbWliZ3JvdXAvYWdlbnR4L21hc3Rlcl9yZXF1ZXN0LmM6CgogICAgIC0gZml4IGZvciBhYnNvbHV0ZWx5IG1pbmQtYmVuZGluZyBtZW1vcnkgbGVhayB3aGVuIEFnZW50WCBzZXNzaW9ucwogICAgICAgdGltZW91dC4gIGFnZW50X3Nlc3Npb25fbGlzdCBob2xkcyBhIHF1ZXVlIG9mIHNlc3Npb25zIHdpdGggb3V0c3RhbmRpbmcKICAgICAgIHJlcXVlc3RzLiAgV2hlbiBhIHNlc3Npb24gdGltZXMgb3V0LCB0aGlzIG11c3QgYmUgc2NhdmVuZ2VkIHRvIG1ha2UKICAgICAgIHN1cmUgdGhlIHNlc3Npb25zIHRoYXQgaGF2ZSB0aW1lZCBvdXQsIGFuZCB0aGVpciBhc3NvY2lhdGVkIHJlcXVlc3RzCiAgICAgICBhcmUgZnJlZSgpZC4KICAgCjIwMDEtMDUtMzAgMDM6MjggIGpicG4KCiAgICogYWdlbnQvbWliZ3JvdXAvYWdlbnR4L3N1YmFnZW50LmM6CgogICAgIC0gcmV0cnkgaW5pdGlhbCBvcGVuIG9mIEFnZW50WCBtYXN0ZXIgc29ja2V0IGlmIEFnZW50WCBwaW5ncyBhcmUKICAgICAgIGVuYWJsZWQgKHNob3VsZCByZWFsbHkgYmUgYSBzZXBhcmF0ZSBkZWZhdWx0X3N0b3JlIG9wdGlvbiBidXQKICAgICAgIG5ldmVyIG1pbmQpCiAgIAoyMDAxLTA1LTMwIDAzOjI3ICBqYnBuCgogICAqIGFnZW50L21pYmdyb3VwL2FnZW50eC9tYXN0ZXJfcmVxdWVzdC5jOgoKICAgICAtIG1vcmUgYWdncmVzc2l2ZSBoYW5kbGluZyBvZiB0aW1lb3V0IGNvbmRpdGlvbnMgKGFsc28gZml4IG1lbW9yeQogICAgICAgbGVhaykKICAgCjIwMDEtMDUtMzAgMDM6MTkgIGpicG4KCiAgICogYWdlbnQvbWliZ3JvdXAvYWdlbnR4L21hc3Rlcl9hZG1pbi5jOgoKICAgICAtIG1vcmUgaW5mb3JtYXRpdmUgZGVidWdnaW5nCiAgIAoyMDAxLTA1LTMwIDAyOjM3ICBqYnBuCgogICAqIHNubXBsaWIvc25tcF9hbGFybS5jOgoKICAgICAtIHJlbW92ZSBub2lzeSBkZWJ1Z2dpbmcKICAgCjIwMDEtMDUtMzAgMDI6MzcgIGpicG4KCiAgICogc25tcGxpYi9zbm1wX2FwaS5jOgoKICAgICAtIG1vcmUgY29tcGFjdCBkZWJ1Z2dpbmcgaW4gX3Nlc3Nfc2VsZWN0X2luZm8KICAgCjIwMDEtMDUtMzAgMDI6MzQgIGpicG4KCiAgICogYWdlbnQvYWdlbnRfcmVnaXN0cnkuYzoKCiAgICAgLSBjb3B5IGZsYWdzIGluIHJlYXR0YWNoX3N1YnRyZWUgKG5lZWRlZCBmb3IgQWdlbnRYIHJvdyByZWdpc3RyYXRpb24pCiAgIAoyMDAxLTA1LTI4IDA4OjU0ICBqYnBuCgogICAqIGFnZW50L21pYmdyb3VwL2FnZW50eC86IGNsaWVudC5jICwgY2xpZW50LmggLAogICBtYXN0ZXJfYWRtaW4uYyAsIG1hc3Rlcl9yZXF1ZXN0LmMgLCBzdWJhZ2VudC5jOgoKICAgICAtIHN0dWZmIGZyb20gcGF0Y2ggIzQxNjAyNiAoc3VibWl0dGVkIGJ5IGFub255bW91cykgZm9yIEFnZW50WCByb3cKICAgICAgIHJlZ2lzdHJhdGlvbgogICAKMjAwMS0wNS0yOCAwODo0OSAgamJwbgoKICAgKiBhZ2VudC9zbm1wX3ZhcnMuYzoKCiAgICAgLSB0d2VhayB0byBnZXRTdGF0UHRyIHRvIGhhbmRsZSBnZXROZXh0IG9wZXJhdGlvbnMgaW4gY29tYmluYXRpb24gd2l0aAogICAgICAgRlVMTFlfUVVBTElGSUVEX0lOU1RBTkNFIG5vZGVzICh3aGljaCBhcmlzZSBpbiBBZ2VudFggcm93IHJlZ2lzdHJhdGlvbikuCiAgIAoyMDAxLTA1LTI4IDA4OjQ2ICBqYnBuCgogICAqIGFnZW50LzogYWdlbnRfcmVnaXN0cnkuYyAsIGFnZW50X3JlZ2lzdHJ5LmggLAogICB2YXJfc3RydWN0Lmg6CgogICAgIC0gc3R1ZmYgZnJvbSBwYXRjaCAjNDE2MDI2IChzdWJtaXR0ZWQgYnkgYW5vbnltb3VzKSBmb3IgQWdlbnRYIHJvdwogICAgICAgcmVnaXN0cmF0aW9uCiAgIAoyMDAxLTA1LTI4IDA4OjQyICBqYnBuCgogICAqIGFnZW50L21pYmdyb3VwL2FnZW50eC9tYXN0ZXIuYzoKCiAgICAgLSBzbWFsbCB0d2VhayB0byBkZWJ1Z2dpbmcgb3V0cHV0CiAgIAoyMDAxLTA1LTI4IDA4OjM5ICBqYnBuCgogICAqIGFnZW50L21pYmdyb3VwL2FnZW50eC9wcm90b2NvbC5jOgoKICAgICAtIGRvIHBhcnNpbmcvYnVpbGRpbmcgb2YgQVNOX1BSSVZfRVhDTF9SQU5HRSBhbmQKICAgICAgIEFTTl9QUklWX0lOQ0xfUkFOR0UgdHlwZXMgKnByb3Blcmx5Ki4KICAgCjIwMDEtMDUtMjggMDQ6NDAgIGpicG4KCiAgICogc25tcGxpYi9zbm1wX2FwaS5jOgoKICAgICAtIGZpeCBwb3NzaWJsZSBtZW1vcnkgbGVhayBpbiBfc2Vzc19hc3luY19zZW5kIGVycm9yIGNhc2VzCiAgIAoyMDAxLTA1LTI4IDA0OjI3ICBqYnBuCgogICAqIGFnZW50L21pYmdyb3VwL2FnZW50eC9wcm90b2NvbC5jOgoKICAgICAtIGFkZCBwYXJzaW5nL2J1aWxkaW5nIG9mIEFTTl9QUklWX0VYQ0xfUkFOR0UgYW5kCiAgICAgICBBU05fUFJJVl9JTkNMX1JBTkdFIHR5cGVzLgogICAKMjAwMS0wNS0yMyAwOToyMCAgamJwbgoKICAgKiBzbm1wbGliL3NubXBfYXBpLmM6CgogICAgIC0gcmVzcGVjdCBtc2dNYXhTaXplIGluIHJlY2VpdmVkIHYzIFBEVXMgKGluIHRoZSB3ZWFrIHNlbnNlIHRoYXQgaWYKICAgICAgIHRoZSBzZXJpYWxpemVkIHJlc3BvbnNlIFBEVSBpcyBtb3JlIHRoYW4gaXQsIHdlIGRvbid0IHNlbmQgaXQpCiAgIAogICAgIC0gcmVtb3ZlZCBmdW5jdGlvbnMgYXNjaWlfdG9fYmluYXJ5LCBoZXhfdG9fYmluYXJ5LiAgVXNpbmcgdGhlc2UKICAgICAgIGZ1bmN0aW9ucyBpcyByZWFsbHkgYmFkLCBzaW5jZSB0aGV5IHdpbGwgaGFwcGlseSBvdmVyZmxvdyBidWZmZXJzLgogICAgICAgVGhlIHN1cGVyaW9yIGFsdGVybmF0aXZlcywgZGVmaW5lZCBpbiB0b29scy5oLCBhcmUKICAgICAgIHNubXBfe2RlY2ltYWwsIGhleH1fdG9fYmluYXJ5LgogICAKMjAwMS0wNS0yMyAwOTowMCAgamJwbgoKICAgKiBhcHBzL3NubXBzdGF0dXMuYzoKCiAgICAgLSByZW1vdmUgdW51c2VkIHZhcmlhYmxlIHN0cnVjdCBzb2NrYWRkcl9pbiByZXNwSXAKICAgCjIwMDEtMDUtMjMgMDg6NTggIGpicG4KCiAgICogYWdlbnQvc25tcF9hZ2VudC5jOgoKICAgICAtIGVhcmx5IGJhaWwgb3V0IG9mIGhhbmRsZV9zbm1wX3BhY2tldCgpIGlmIHRoZSBjYWxsYmFjayBvcGVyYXRpb24KICAgICAgIHR5cGUgaXMgbm90IFNOTVBfQ0FMTEJBQ0tfT1BfUkVDRUlWRURfTUVTU0FHRS4gIEluIHByYWN0aWNlLCB0aGUKICAgICAgIG9ubHkgd2F5IHRoaXMgYXJpc2VzIGN1cnJlbnRseSBpcyB3aGVuIGEgc3RyZWFtIHRyYW5zcG9ydCBiYXNlZAogICAgICAgY29ubmVjdGlvbiBnb2VzIGF3YXkgYW5kIGEgU05NUF9DQUxMQkFDS19PUF9ESVNDT05ORUNUIG9jY3Vycy4KICAgCjIwMDEtMDUtMjMgMDg6NDQgIGpicG4KCiAgICogc25tcGxpYi9zbm1wX2FwaS5oOgoKICAgICAtIG5ldyBmaWVsZHMgcmN2TXNnTWF4U2l6ZSBhbmQgc25kTXNnTWF4U2l6ZSBpbiBzbm1wX3Nlc3Npb24KICAgICAgIHN0cnVjdHVyZSB0byBzdXBwb3J0IHYzIG1zZ01heFNpemUKICAgCiAgICAgLSByZW1vdmVkIGZ1bmN0aW9ucyBhc2NpaV90b19iaW5hcnksIGhleF90b19iaW5hcnkgZnJvbSBwdWJsaWMKICAgICAgIGludGVyZmFjZS4gIFVzaW5nIHRoZXNlIGZ1bmN0aW9ucyBpcyByZWFsbHkgYmFkLCBzaW5jZSB0aGV5CiAgICAgICB3aWxsIGhhcHBpbHkgb3ZlcmZsb3cgYnVmZmVycy4gIFRoZSBzdXBlcmlvciBhbHRlcm5hdGl2ZXMsCiAgICAgICBkZWZpbmVkIGluIHRvb2xzLmgsIGFyZSBzbm1wX3tkZWNpbWFsLCBoZXh9X3RvX2JpbmFyeS4KICAgCjIwMDEtMDUtMjMgMDg6MzcgIGpicG4KCiAgICogc25tcGxpYi86IHNubXBBQUw1UFZDRG9tYWluLmMgLCBzbm1wSVBYRG9tYWluLmMgLAogICBzbm1wVENQRG9tYWluLmMgLCBzbm1wVURQRG9tYWluLmMgLCBzbm1wVW5peERvbWFpbi5jCiAgICwgc25tcF90cmFuc3BvcnQuYyAsIHNubXBfdHJhbnNwb3J0Lmg6CgogICAgIC0gYWRkIG1zZ01heFNpemUgZmllbGQgdG8gc25tcF90cmFuc3BvcnQgc3RydWN0dXJlIHRvIHN1cHBvcnQKICAgICAgIG1zZ01heFNpemUgbmVnb3RpYXRpb24gZm9yIHYzCiAgIAoyMDAxLTA1LTIzIDA3OjE0ICBqYnBuCgogICAqIHNubXBsaWIvc2NhcGkuYzoKCiAgICAgLSB1c2Ugc3ByaW50X3JlYWxsb2NfaGV4c3RyaW5nIGluc3RlYWQgb2Ygc3ByaW50X2hleHN0cmluZyBmb3IKICAgICAgIFNOTVBfVEVTVElOR19DT0RFIGRlYnVnZ2luZyBvdXRwdXQgb2YgSVYsIGtleSBhbmQgcGxhaW50ZXh0CiAgIAoyMDAxLTA1LTIzIDA1OjI1ICBqYnBuCgogICAqIGFwcHMvc25tcHRlc3QuYzoKCiAgICAgLSBmcmVlKCkgYnVmZmVycyBpbiBhIGNvdXBsZSBvZiBlcnJvciBjYXNlczsgbm8gYmlnIGRlYWwKICAgCjIwMDEtMDUtMjMgMDQ6MzkgIGpicG4KCiAgICogc25tcGxpYi9zbm1wdjMuYzoKCiAgICAgLSB1c2UgbmV3IHNubXBfaGV4X3RvX2JpbmFyeSBmdW5jdGlvbiBmb3IgZW5naW5lIElEIHBhcnNpbmcgaW4gLWUKICAgICAgIG9wdGlvbiwgcmF0aGVyIHRoYW4gYXJjaGFpYyBoZXhfdG9fYmluYXJ5CiAgIAoyMDAxLTA1LTIzIDA0OjIyICBqYnBuCgogICAqIHNubXBsaWIvc25tcF9wYXJzZV9hcmdzLmM6CgogICAgIC0gZnJlZSgpIGJ1ZmZlcnMgaW4gYSBjb3VwbGUgb2YgZXJyb3IgY2FzZXM7IG5vIGJpZyBkZWFsCiAgIAoyMDAxLTA1LTIzIDA0OjE0ICBqYnBuCgogICAqIHNubXBsaWIvc25tcF9wYXJzZV9hcmdzLmM6CgogICAgIC0gdXNlIG5ldyBzbm1wX2hleF90b19iaW5hcnkgZnVuY3Rpb24gZm9yIGVuZ2luZSBJRCBwYXJzaW5nIGluIC1lCiAgICAgICBhbmQgLUUgb3B0aW9ucywgcmF0aGVyIHRoYW4gYXJjaGFpYyBoZXhfdG9fYmluYXJ5CiAgIAoyMDAxLTA1LTIzIDAzOjU2ICBqYnBuCgogICAqIGFwcHMvc25tcHRlc3QuYzoKCiAgICAgLSB1c2UgbmV3IHNubXBfe2RlY2ltYWwsIGhleH1fdG9fYmluYXJ5IGZ1bmN0aW9ucyBmb3IgaW5wdXQgc3RyaW5nCiAgICAgICB0byBPQ1RFVCBTVFJJTkcgY29udmVyc2lvbiwgcmF0aGVyIHRoYW4gYXJjaGFpYyBhc2NpaV90b19iaW5hcnkKICAgICAgIGFuZCBoZXhfdG9fYmluYXJ5CiAgIAogICAgIC0gb21pdCB0cmFpbGluZyBuZXdsaW5lIGZyb20gc3RyaW5nIChoZWxwZnVsIGZvciBvYmplY3RzIHRoYXQgZG9uJ3QKICAgICAgIGFsbG93IG5vbi1wcmludGluZyBjaGFyYWN0ZXJzLCBlLmcuIHN5c0xvY2F0aW9uLjApCiAgIAoyMDAxLTA1LTIwIDA4OjEyICBqYnBuCgogICAqIHNubXBsaWIvc25tcF9hcGkuYzoKCiAgICAgLSByZXdyaXR0ZW4gX3Nlc3NfcmVhZCgpIGZ1bmN0aW9uOgogICAKICAgICAgIC0gYmV0dGVyIGhhbmRsaW5nIG9mIGxvbmcgcGFja2V0cwogICAgICAgLSB6ZXJvLWNvcHkgcmVjZXB0aW9uIG9mIHBhY2tldHMgb24gc3RyZWFtIHRyYW5zcG9ydHMKICAgICAgIC0gbG93ZXIgbWVtb3J5IG92ZXJoZWFkcyBmb3IgcGFja2V0IGZyYWdtZW50IGhhbmRsaW5nIGZvciBzdHJlYW0KICAgICAgICAgdHJhbnNwb3J0cwogICAKICAgICAtIGFsbG93IHBhcnNpbmcgb2YgbGFyZ2Ugb2JqZWN0cyAoPjgxOTIgb2N0ZXRzKQogICAKMjAwMS0wNS0yMCAwNTo0OCAgamJwbgoKICAgKiBzbm1wbGliL3NubXBfcGFyc2VfYXJncy5jOgoKICAgICAtIGRvbid0IHN0cmR1cCgpIGNvbnRleHROYW1lLCBzZWN1cml0eU5hbWUgLS0gY2F1c2VzIG1pbm9yIG1lbW9yeQogICAgICAgbGVhay4KICAgCjIwMDEtMDUtMjAgMDU6MDQgIGpicG4KCiAgICogc25tcGxpYi9zbm1wVENQRG9tYWluLmM6CgogICAgIC0gdGVzdCByZXR1cm4gb2YgZmNudGwoRl9HRVRGTCksIHNvIGFzIG5vdCB0byBzZXQgZmxhZ3MgdG8gZ2FyYmFnZQogICAKICAgICAtIGNvcnJlY3Rpb24gdG8gY29tbWVudCAtLSBzZXQgc29ja2V0IHRvICpibG9ja2luZyohCiAgIAogICAgIC0gY2hlY2sgb3BhcXVlIGJlZm9yZSB3cml0aW5nIHRvIGl0IGluIHJlY3YKICAgCjIwMDEtMDUtMjAgMDU6MDIgIGpicG4KCiAgICogc25tcGxpYi9zbm1wX2NsaWVudC5jOgoKICAgICAtIHByb3BlciBoYW5kbGluZyBvZiBTTk1QX0NBTExCQUNLX09QX0RJU0NPTk5FQ1QgaW4gc25tcF9zeW5jaF9pbnB1dDoKICAgICAgIHNldCBhbiBlcnJvciBjb25kaXRpb24sIHdpdGggZXJybm8gU05NUEVSUl9BQk9SVCAoIlNlc3Npb24gYWJvcnQKICAgICAgIGZhaWx1cmUiKSwgd2hpY2ggc2VlbXMgbGlrZSBhIGdvb2QgZW5vdWdoIG1hdGNoLgogICAKMjAwMS0wNS0xOCAwOTo1NCAgamJwbgoKICAgKiBzbm1wbGliL3NubXBUQ1BEb21haW4uYzoKCiAgICAgLSBtYWtlIG5ld2x5LWFjY2VwdCgpZWQgc29ja2V0cyBibG9ja2luZzsgb3RoZXJ3aXNlIHByb2JsZW1zIGFyaXNlCiAgICAgICBsYXRlciB3aGVuIHNlbmQoKWluZyBsYXJnZSBQRFVzIChzaW5jZSBvbmx5IGEgc2luZ2xlIHNvY2tldCBidWZmZXIncwogICAgICAgd29ydGggb2YgZGF0YSBhdCBtb3N0IGNhbiBiZSBzZW50IHdpdGhvdXQgYmxvY2tpbmcpLgogICAKMjAwMS0wNS0xOCAwNzoxNyAgamJwbgoKICAgKiBhZ2VudC9zbm1wX2FnZW50LmM6CgogICAgIC0gdXNlIHNwcmludF9yZWFsbG9jX29iamlkIGFuZCBzcHJpbnRfcmVhbGxvY192YXJpYWJsZSBpbnN0ZWFkIG9mCiAgICAgICBzcHJpbnRfb2JqaWQgYW5kIHNwcmludF92YXJpYWJsZSByZXNwZWN0aXZlbHksIHRvIGFsbG93IGxhcmdlIFBEVXMKICAgICAgIHRvIGJlIHByaW50ZWQgd2hlbiBkZWJ1Z2dpbmcKICAgCjIwMDEtMDUtMTggMDc6MTYgIGpicG4KCiAgICogc25tcGxpYi90b29scy5jOgoKICAgICAtIGltcHJvdmVkIGRlYnVnZ2luZyBvdXRwdXQgZnJvbSBzbm1wX3JlYWxsb2MoKQogICAKMjAwMS0wNS0xOCAwNzoxNSAgamJwbgoKICAgKiBzbm1wbGliLzogbWliLmMgLCBtaWIuaDoKCiAgICAgLSByZW1vdmUgZGVidWdnaW5nIGZyb20gb3V0cHV0IHJvdXRpbmVzCiAgIAogICAgIC0gbmV3IGZ1bmN0aW9uIHNwcmludF9yZWFsbG9jX29iamlkCiAgIAogICAgIC0gbWFrZSBzcHJpbnRfcmVhbGxvY19vYmppZCBhbmQgc3ByaW50X3JlYWxsb2NfdmFyaWFibGUgZXh0ZXJuYWxseQogICAgICAgdmlzaWJsZQogICAKMjAwMS0wNS0xOCAwNjoyOCAgamJwbgoKICAgKiBzbm1wbGliL2FzbjEuYzoKCiAgICAgLSBpbXByb3ZlZCBkZWJ1Z2dpbmcgb3V0cHV0IGZyb20gYXNuX3JlYWxsb2MoKQogICAKMjAwMS0wNS0xNSAwNDoxMCAgamJwbgoKICAgKiBtaWJzL1VDRC1TTk1QLU1JQi50eHQ6CgogICAgIC0gYWRkIE9JRHMgZm9yIFVEUC9JUHY2IGFuZCBUQ1AvSVB2NgogICAKMjAwMS0wNS0xNCAwMjoyMCAgamJwbgoKICAgKiBhZ2VudC9taWJncm91cC91Y2Qtc25tcC92bXN0YXRfc29sYXJpczIuYzoKCiAgICAgLSBhZGRlZCBcbiB0byB0ZXh0IG9mIHNubXBfbG9nKCkgbWVzc2FnZXMgKGJ1ZyAjNDIyOTc4KQogICAKMjAwMS0wNS0xMSAwNzozMCAgamJwbgoKICAgKiBzbm1wbGliLzogbWliLmMgLCBtaWIuaDoKCiAgICAgLSBhZGRlZCBzcHJpbnRfcmVhbGxvY188dHlwZT4gZmFtaWx5IG9mIGZ1bmN0aW9ucyB3aGljaCB0YWtlIGV4dHJhCiAgICAgICBwYXJhbWV0ZXJzIGFuZCB1c2UgcmVsb2NhdGluZyBidWZmZXJzIHRvIHJlbW92ZSBsaW1pdGF0aW9ucyBkdWUgdG8KICAgICAgIGZpeGVkLXNpemUgYnVmZmVycyAoZS5nLiBzZWUgYnVnICM0MDkxODEpLgogICAKICAgICAtIGFsc28gZml4ZXMgcG90ZW50aWFsIHByb2JsZW0gbm90ZWQgYXMgYnVnICM0MTQ4MDMKICAgCiAgICAgLSBmcHJpbnRfdmFyaWFibGUsIGZwcmludF9vYmppZCBhbmQgZnByaW50X3ZhbHVlIHVzZSBuZXcgZnVuY3Rpb25zCiAgICAgICBzdWNoIHRoYXQgc25tcGdldCBldGMuIGFyZSBpbXByb3ZlZCBpbW1lZGlhdGVseQogICAKICAgICAtIG9sZCBmdW5jdGlvbnMgcmVtYWluICpGT1IgTk9XKiAtLSBidXQgcmVhbGx5IHRoZXkgc2hvdWxkIGJlCiAgICAgICBjb25zaWRlcmVkIHRvIGJlIGRlcHJlY2F0ZWQgKG5ldyBmdW5jdGlvbnMgcHJvdmlkZSBhIHN1cGVyc2V0IG9mCiAgICAgICB0aGVpciBmdW5jdGlvbmFsaXR5KS4KICAgCjIwMDEtMDUtMTEgMDc6MTQgIGpicG4KCiAgICogc25tcGxpYi9wYXJzZS5oOgoKICAgICAtIGFkZGVkIGFkZGl0aW9uYWwgZnVuY3Rpb24gcG9pbnRlciB0byBzdHJ1Y3QgdHJlZSB0byBwb2ludCBhdAogICAgICAgcmVsb2NhdGluZyBidWZmZXIgY29tcGF0aWJsZSBvdXRwdXQgZnVuY3Rpb24KICAgCjIwMDEtMDUtMTEgMDY6NTcgIGpicG4KCiAgICogc25tcGxpYi86IHRvb2xzLmMgLCB0b29scy5oOgoKICAgICAtIGFkZGVkIHV0aWxpdHkgZnVuY3Rpb24gc25tcF9zdHJjYXQsIHdoaWNoIGFwcGVuZHMgYSBzdHJpbmcgdG8gYQogICAgICAgcmVsb2NhdGFibGUgYnVmZmVyCiAgIAoyMDAxLTA1LTEwIDExOjIwICByc3RvcnkKCiAgICogc25tcGxpYi9taWIuYzoKCiAgIGZpeCBidWcgIzQyMzEwOSBpbmNvcnJlY3QgaW5kZXggcGFyc2luZwogICAKMjAwMS0wNS0wOSAxNjo0MyAgcnN0b3J5CgogICAqIHNubXBsaWIvc25tcF9jbGllbnQuYzoKCiAgIGZpeCBzbm1wX2NsaWVudC5jOjU2OTogd2FybmluZzogY29udHJvbCByZWFjaGVzIGVuZCBvZiBub24tdm9pZCBmdW5jdGlvbgogICAKMjAwMS0wNS0wOSAxMjozNiAgc2xpZgoKICAgKiBhZ2VudC9taWJncm91cC86IFJtb24uaCAsIFJtb24vUkVBRE1FICwgUm1vbi9hZ3V0aWwuYwogICAsIFJtb24vYWd1dGlsLmggLCBSbW9uL2FndXRpbF9hcGkuaCAsIFJtb24vYWxhcm0uYwogICAsIFJtb24vYWxhcm0uaCAsIFJtb24vZXZlbnQuYyAsIFJtb24vZXZlbnQuaCAsCiAgIFJtb24vaGlzdG9yeS5jICwgUm1vbi9oaXN0b3J5LmggLCBSbW9uL3Jvd19hcGkuaCAsCiAgIFJtb24vcm93cy5jICwgUm1vbi9yb3dzLmggLCBSbW9uL3N0YXRpc3RpY3MuYyAsCiAgIFJtb24vc3RhdGlzdGljcy5oICwgUm1vbi90ZXN0X2FsYXJtLnNoICwKICAgUm1vbi90ZXN0X2hpc3Quc2g6CgogICBJbmNsdWRlIEFsZXggUm96aW4ncyBSbW9uLgogICAKMjAwMS0wNS0wNyAxMDo0MSAgaGFyZGFrZXIKCiAgICogc25tcGxpYi86IHNubXBfY2xpZW50LmMgLCBzbm1wX2NsaWVudC5oOgoKICAgQWRkZWQgYSBjb3VwbGUgb2YgY29udmVuaWVuY2UgZnVuY3Rpb25zIGZvciBtYW5pcHVsYXRpbmcgdmFyYmluZGxpc3RzOgogICAgIGludCBzbm1wX3NldF92YXJfdHlwZWRfdmFsdWUoc3RydWN0IHZhcmlhYmxlX2xpc3QgKm5ld3ZhciwgdV9jaGFyIHR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2NoYXIgKnZhbF9zdHIsIHNpemVfdCB2YWxfbGVuKTsKICAgICB2b2lkIHNubXBfcmVwbGFjZV92YXJfdHlwZXMoc3RydWN0IHZhcmlhYmxlX2xpc3QgKnZibCwgaW50IG9sZF90eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbmV3X3R5cGUpOwogICAgIHZvaWQgc25tcF9yZXNldF92YXJfdHlwZXMoc3RydWN0IHZhcmlhYmxlX2xpc3QgKnZibCwgaW50IG5ld190eXBlKTsKICAgCjIwMDEtMDUtMDcgMTA6MzYgIGhhcmRha2VyCgogICAqIHNubXBsaWIvdG9vbHMuaDoKCiAgIGRlZmluZSBTTk1QX01BTExPQ19UWVBFREVGKCkKICAgCjIwMDEtMDUtMDUgMDc6MjggIHJzdG9yeQoKICAgKiBsb2NhbC9taWIyYy5zdG9yYWdlLmNvbmY6CgogICBmaXggc3RvcmVfIG5hbWU7IGRvbid0IGNhc3QgdG8gYXNueSB0eXBlIGlmIHBhcm0gZXhwZWN0aW5nIHVfY2hhcio7IGZpeCBfdmFyaWFibGVfb2lkCiAgIG5hbWluZzsgY2FzdCBwYXJtIDIgb2YgbWVtZHVwIHRvIHVfY2hhcioKICAgCjIwMDEtMDUtMDMgMTQ6MTYgIGhhcmRha2VyCgogICAqIHNubXBsaWIvYXNuMS5jOgoKICAgZml4ZWQgcmF1dGggb2Zmc2V0IGluY3JlbWVudGluZzogd2FzIGluY3JlbWVudGluZyB0aGUgcG9pbnRlciwgbm90IHRoZSB2YWx1ZS4KICAgICAtLSBtb3JlIGluc3RhbmNlcyBvZiB0aGUgc2FtZSBwcm9ibGVtIGZvdW5kLgogICAKMjAwMS0wNS0wMyAxNDoxNSAgaGFyZGFrZXIKCiAgICogc25tcGxpYi9hc24xLmM6CgogICBmaXhlZCByYXV0aCBvZmZzZXQgaW5jcmVtZW50aW5nOiB3YXMgaW5jcmVtZW50aW5nIHRoZSBwb2ludGVyLCBub3QgdGhlIHZhbHVlLgogICAKMjAwMS0wNS0wMyAxMDowOCAgaGFyZGFrZXIKCiAgICogYWNsb2NhbC5tNCAsIGNvbmZpZy5ndWVzcyAsIGNvbmZpZy5zdWIgLAogICBjb25maWd1cmUgLCBsdG1haW4uc2g6CgogICB1cGRhdGVkIHRvIGxpYnRvb2wgMS40CiAgIAoyMDAxLTA1LTAxIDEzOjMxICBoYXJkYWtlcgoKICAgKiBzbm1wbGliL3NubXBrc20uYzoKCiAgIHVzZSByZWFsbG9jIHJvdXRpbmVzLgogICAKMjAwMS0wNS0wMSAxMzozMSAgaGFyZGFrZXIKCiAgICogc25tcGxpYi9yZWFkX2NvbmZpZy5jOgoKICAgZml4IHZhcmlhYmxlIGRlY2xhcmF0aW9uLgogICAKMjAwMS0wNS0wMSAxMzozMCAgaGFyZGFrZXIKCiAgICogc25tcGxpYi9taWIuYzoKCiAgIERvbid0IHByaW50IGhleCBmb3Igc3RyaW5nIGxlbmd0aHMgbGVzcyB0aGFuIDQuICBTaG91bGQgaGF2ZSBkaWVkIGFnZXMgYWdvLgogICAKMjAwMS0wNS0wMSAxMzoyOSAgaGFyZGFrZXIKCiAgICogYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvdm1zdGF0Lmg6CgogICBGaXggcHJvdG90eXBlIHNvIGl0cyBub3Qgc3RhdGljIChpdCBzaG91bGRuJ3QgYmUpLgogICAKMjAwMS0wNS0wMSAxMzoyOSAgaGFyZGFrZXIKCiAgICogYWdlbnQvbWliZ3JvdXAvbWliSUkvaXAuYzoKCiAgIG1ha2UgUk9OTFkgdmFyaWFibGVzIHdyaXRhYmxlICh3aGljaCBtYXkgb3IgbWF5IG5vdCB3b3JrLiAgSSdtIGJldHRpbmcgbm90LikKICAgCjIwMDEtMDUtMDEgMTM6MjggIGhhcmRha2VyCgogICAqIGFnZW50L3NubXBfYWdlbnQuYzoKCiAgIHJlbW92ZSB1bnVzZWQgdmFyaWFibGVzLgogICAKMjAwMS0wNS0wMSAxMzoyOCAgaGFyZGFrZXIKCiAgICogY29uZmlnLmguaW4gLCBjb25maWd1cmUgLCBjb25maWd1cmUuaW46CgogICBjaGVjayBmb3IgYW4gcnBtIHN1YmRpcmVjdG9yeS4KICAgCjIwMDEtMDQtMjMgMjA6NDEgIGhhcmRha2VyCgogICAqIGxvY2FsL3RrbWliOgoKICAgYmlnIGNsZWFudXAgYW5kIG90aGVyIGZpeGVzIEkndmUgYWxyZWFkeSBmb3Jnb3R0ZW4gaW4gdGhlIGxhc3QgZmV3IG1pbnV0ZXMuCiAgIAoyMDAxLTA0LTIzIDIwOjM0ICBoYXJkYWtlcgoKICAgKiBsb2NhbC90a21pYjoKCiAgIERvbid0IHdhbGsgb2ZmIGVuZCBvZiBtaWIgdHJlZSAoc2lnaCkuCiAgIAoyMDAxLTA0LTIzIDIwOjE5ICBoYXJkYWtlcgoKICAgKiBsb2NhbC90a21pYjoKCiAgIGZpeCB0aGUgbWliIGluZm8gZGlzcGxheSBvcHRpb25zLgogICBzYXZlIHRoZW0gYXBwcm9wcmlhdGVseS4KICAgCjIwMDEtMDQtMjMgMTg6MjMgIGhhcmRha2VyCgogICAqIGxvY2FsL3RrbWliOgoKICAgbW9yZSBzYXZhYmxlIG9wdGlvbiBpdGVtcy4KICAgdXNlIERhdGE6OkR1bXBlciB0byBzYXZlIG1vc3Qgc3R1ZmYuCiAgIAoyMDAxLTA0LTIzIDE3OjI2ICBoYXJkYWtlcgoKICAgKiBsb2NhbC90a21pYjoKCiAgIERvbid0IHNhdmUgc2Vzc2lvbiBvcHRpb25zIHR3aWNlLgogICBNYWtlIGNvbG9yIG9mIHdyaXRhYmxlIG9iamVjdHMgYSB2YXJpYWJsZS4KICAgCjIwMDEtMDQtMjMgMTc6MDggIGhhcmRha2VyCgogICAqIGxvY2FsLzogdGttaWIgKFY0LTItcGF0Y2hlcy4yKSwgdGttaWI6CgogICBmaXggd2FsayBwcm9ibGVtIG9uY2UgYW5kIGZvciBhbGwuCiAgIAoyMDAxLTA0LTIzIDE2OjM2ICBoYXJkYWtlcgoKICAgKiBsb2NhbC90a21pYjoKCiAgIHJlZHVjZSBzY3JlZW4gcmVhbGVzdGF0ZSBhbGwgb3ZlciB0aGUgcGxhY2UKICAgCjIwMDEtMDQtMjMgMTY6MzUgIGhhcmRha2VyCgogICAqIGxvY2FsL3RrbWliOgoKICAgdGVzdCBhZ2FpbnN0IHZlcnNpb24gNQogICAKMjAwMS0wNC0xOCAwODo0NiAgaGFyZGFrZXIKCiAgICogYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvbG1TZW5zb3JzLmMgLAogICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9sbVNlbnNvcnMuaCAsIG1pYnMvTE0tU0VOU09SUy1NSUIudHh0CiAgICwgbWlicy9VQ0QtU05NUC1NSUIudHh0OgoKICAgQWRkZWQgTE0tU0VOU09SUy1NSUIgc3VwcG9ydCAoZGlza2lvIGV4dGVuc2lvbikgZnJvbSBNYXJ0aW4gT2xkZmllbGQKICAgCjIwMDEtMDQtMTggMDU6NDAgIGpicG4KCiAgICogc25tcGxpYi9zbm1wX2FwaS5jOgoKICAgICAtIGhhY2tpbmcgb24gc25tcF9hZGRfdmFyIHRvIGhhbmRsZSBsb25nIHZhbHVlcwogICAKICAgICAgIC0gdXNlIHNubXBfe2hleCxkZWNpbWFsfV90b19iaW5hcnkgaW5zdGVhZCBvZiBoZXhfdG9fYmluYXJ5CiAgICAgICAgIGFuZCBhc2NpaV90b19iaW5hcnk7IHRoZXNlIHNob3VsZCBiZSByZW1vdmVkCiAgIAogICAgICAgLSBkb24ndCB1c2Ugc3RydG9rIGluIHByb2Nlc3NpbmcgYml0c3RyaW5ncwogICAKMjAwMS0wNC0xOCAwNDo1OCAgamJwbgoKICAgKiBzbm1wbGliL2FzbjEuYzoKCiAgICAgLSB1c2UgdGhlIGdlbmVyaWMgc25tcF9yZWFsbG9jIGZ1bmN0aW9uIGluIGFzbl9yZWFsbG9jCiAgIAoyMDAxLTA0LTE4IDAyOjQwICBqYnBuCgogICAqIHNubXBsaWIvOiB0b29scy5jICwgdG9vbHMuaDoKCiAgICAgLSBuZXcsIHJlYWxsb2NhdGluZyB1dGlsaXR5IGZ1bmN0aW9ucyBzbm1wX2hleF90b19iaW5hcnkgYW5kCiAgICAgICBzbm1wX2RlY2ltYWxfdG9fYmluYXJ5IHRvIGNvbnZlcnQgaGV4IGFuZCBkZWNpbWFsIHN0cmluZ3MgdG8gb2N0ZXQKICAgICAgIHN0cmluZ3MgcmVzcGVjdGl2ZWx5LgogICAKICAgICAtIG5ldyB1dGlsaXR5IGZ1bmN0aW9uIHNubXBfcmVhbGxvYyB0byBwZXJmb3JtIGJ1ZmZlciAocmUtKWFsbG9jYXRpb24KICAgCjIwMDEtMDQtMTIgMDU6MTIgIGR0czEyCgogICAqIGFnZW50Lzogc25tcF9hZ2VudC5jIChWNC0yLXBhdGNoZXMuNiksIHNubXBfYWdlbnQuYzoKCiAgIEJldHRlciBmaXggZm9yIGJ1ZyAjNDE0ODU1IGZyb20gYXJhamVzaAogICBIYW5kbGVzIG5vbi1yZXBlYXRlcnM9MCBhcyB3ZWxsLCBhbmQgYXZvaWRzIG1lbW9yeSBsZWFrcy4KICAgCjIwMDEtMDQtMTEgMTA6MDYgIGpicG4KCiAgICogc25tcGxpYi9hc24xLmg6CgogICAgIC0gc2Vjb25kIGluY2FybmF0aW9uIG9mIGFzbl9yZWFsbG9jX3JidWlsZF88dHlwZT4gZnVuY3Rpb25zLCB3aGljaAogICAgICAgbm93IHRha2UgYW4gYWRkaXRpb25hbCBhcmd1bWVudCB0aGF0IG1heSBiZSB1c2VkIHRvIGluZGljYXRlIHRoYXQKICAgICAgIHJlYWxsb2NhdGlvbiBzaG91bGQgbm90IGJlIGRvbmUuCiAgIAogICAgIC0gb2xkIF9yYnVpbGQgQVBJIGlzIGdvbmUuCiAgIAogICAgIC0gZXh0ZW5kZWQgKGFuZCBjb3JyZWN0ZWQhKSBjb21tZW50YXJ5IG9uIGNvcnJlY3QgdXNhZ2Ugb2YgbmV3IEFQSS4KICAgCjIwMDEtMDQtMTEgMTA6MDUgIGpicG4KCiAgICogc25tcGxpYi86IHNubXAuYyAsIHNubXAuaDoKCiAgICAgLSB1c2Ugc2Vjb25kIGluY2FybmF0aW9uIG9mIF9yZWFsbG9jX3JidWlsZCBmdW5jdGlvbnMuCiAgIAogICAgIC0gb2xkIF9yYnVpbGRfdmFyX29wIEFQSSBpcyBnb25lLgogICAKMjAwMS0wNC0xMSAxMDowNCAgamJwbgoKICAgKiBzbm1wbGliL3NubXB1c20uYzoKCiAgICAgLSB1c2Ugc2Vjb25kIGluY2FybmF0aW9uIG9mIGFzbl9yZWFsbG9jX3JidWlsZF88dHlwZT4gZnVuY3Rpb25zLgogICAKMjAwMS0wNC0xMSAxMDowMyAgamJwbgoKICAgKiBzbm1wbGliL3NubXBfYXBpLmM6CgogICAgIC0gdXNlIHNlY29uZCBpbmNhcm5hdGlvbiBvZiBfcmVhbGxvY19yYnVpbGQgZnVuY3Rpb25zLgogICAKICAgICAtIG9sZCBfcmJ1aWxkIEFQSSBpcyBnb25lLgogICAKMjAwMS0wNC0xMSAxMDowMiAgamJwbgoKICAgKiBzbm1wbGliL2FzbjEuYzoKCiAgICAgLSBzZWNvbmQgaW5jYXJuYXRpb24gb2YgYXNuX3JlYWxsb2NfcmJ1aWxkXzx0eXBlPiBmdW5jdGlvbnMsIHdoaWNoCiAgICAgICBub3cgdGFrZSBhbiBhZGRpdGlvbmFsIGFyZ3VtZW50IHRoYXQgbWF5IGJlIHVzZWQgdG8gaW5kaWNhdGUgdGhhdAogICAgICAgcmVhbGxvY2F0aW9uIHNob3VsZCBub3QgYmUgZG9uZS4KICAgCiAgICAgLSBvbGQgX3JidWlsZCBBUEkgaXMgZ29uZS4KICAgCiAgICAgLSBhc25fcmVhbGxvYygpIGZ1bmN0aW9uIGNoZWNrcyB3aGV0aGVyIGl0IGhhcyBiZWVuIHBhc3NlZCBhIE5VTEwKICAgICAgIHBvaW50ZXIgYW5kIHVzZXMgbWFsbG9jKCkgaW4gdGhhdCBjYXNlICh0aGFua3MgdG8gTWljaGFlbCBTbGlmY2FrCiAgICAgICBmb3IgcG9pbnRpbmcgb3V0IHRoZSBkYW5nZXIgaGVyZSkuCiAgIAoyMDAxLTA0LTExIDA2OjEzICBkdHMxMgoKICAgKiBhZ2VudC9zbm1wX2FnZW50LmM6CgogICBIYW5kbGUgR2V0QnVsayByZXF1ZXN0cyB3aXRoIG1heC1yZXBldGl0aW9ucz0wIHByb3Blcmx5IChidWcgIzQxNDg1NSkKICAgCjIwMDEtMDQtMTAgMDQ6NDcgIGpicG4KCiAgICogc25tcGxpYi9zbm1wVURQRG9tYWluLmM6CgogICAgIC0gc2V0IFNPX1NOREJVRiBhbmQgU09fUkNWQlVGIHRvIDEyOEtiIGZvciBuZXdseS1vcGVuZWQgVURQIHNvY2tldHMsCiAgICAgICB0byBlbmFibGUgbGFyZ2UgUERVcyB0byBiZSBzZW50IGFuZCByZWNlaXZlZC4gIFNvbWUKICAgICAgIGltcGxlbWVudGF0aW9ucyBkZWZhdWx0IHZlcnkgbG93IChTb2xhcmlzIDIuNyA4S2IsIExpbnV4IDIuNAogICAgICAgNjRLYikuCiAgIAoyMDAxLTA0LTA5IDEwOjA1ICBqYnBuCgogICAqIHNubXBsaWIvc25tcHVzbS5jOgoKICAgICAtIG1vZGlmaWVkIHVzbV9yZ2VuZXJhdGVfb3V0X21zZygpIHRvIG1ha2UgdXNlIG9mIHJlYWxsb2NhdGluZwogICAgICAgcmV2ZXJzZSBlbmNvZGUgZnVuY3Rpb25zLgogICAKMjAwMS0wNC0wOSAxMDowMyAgamJwbgoKICAgKiBzbm1wbGliL3NubXB1c20uaDoKCiAgICAgLSBhZGRpdGlvbmFsIHBhcmFtZXRlciB0byB1c21fcmdlbmVyYXRlX291dF9tc2coKSB0byBlbmFibGUgdXNlIG9mCiAgICAgICByZWFsbG9jYXRpbmcgcmV2ZXJzZSBlbmNvZGUgZnVuY3Rpb25zLgogICAKMjAwMS0wNC0wOSAwOTo1NyAgamJwbgoKICAgKiBzbm1wbGliL3NubXBfc2VjbW9kLmg6CgogICAgIC0gYWxsb3cgYWRkaXRpb25hbCBwYXJhbWV0ZXIgZm9yIG91dGdvaW5nIHBhcmFtcyB0byBlbmFibGUgdXNlIG9mCiAgICAgICByZWFsbG9jYXRpbmcgcmV2ZXJzZSBlbmNvZGUgZnVuY3Rpb25zLgogICAKMjAwMS0wNC0wOSAwOTo1NSAgamJwbgoKICAgKiBzbm1wbGliL3NubXBfYXBpLmg6CgogICAgIC0gcHJvdG90eXBlcyBmb3IgcmVhbGxvY2F0aW5nIHJldmVyc2UgZW5jb2RlIGZ1bmN0aW9ucwogICAKMjAwMS0wNC0wOSAwOTo1NCAgamJwbgoKICAgKiBzbm1wbGliL3NubXBfYXBpLmM6CgogICAgIC0gbW9kaWZpZWQgdG8gdXNlIHJlYWxsb2NhdGluZyByZXZlcnNlIEFTTi4xIGVuY29kZXIgZnVuY3Rpb25zIGlmCiAgICAgICB1c2luZyByZXZlcnNlIGVuY29kaW5nIGF0IGFsbC4KICAgCjIwMDEtMDQtMDkgMDk6NDkgIGpicG4KCiAgICogc25tcGxpYi9zbm1wLmM6CgogICAgIC0gYWRkIG5ldyBmdW5jdGlvbiBzbm1wX3JlYWxsb2NfcmJ1aWxkX3Zhcl9vcCgpIHdoaWNoIHVzZXMKICAgICAgIHJlYWxsb2NhdGluZyByZXZlcnNlIEFTTi4xIGVuY29kZXIgZnVuY3Rpb25zIHRvIGVuY29kZSB2YXJiaW5kcy4KICAgCjIwMDEtMDQtMDkgMDk6NDcgIGpicG4KCiAgICogc25tcGxpYi9hc24xLmg6CgogICAgIC0gcHJvdG90eXBlIGZvciBuZXcgc3VpdGUgb2YgZnVuY3Rpb25zIGFzbl9yZWFsbG9jX3JlYnVpbGRfPHR5cGU+LAogICAgICAgd2hpY2ggcGVyZm9ybSByZXZlcnNlIGVuY29kaW5nIGludG8gYSBidWZmZXIgYW5kIGdyb3cgaXQgaWYgdGhlcmUKICAgICAgIGlzIG5vdCBlbm91Z2ggc3BhY2UgZm9yIHRoZSBlbmNvZGluZy4KICAgCiAgICAgLSBjb21tZW50YXJ5IG9uIGNvcnJlY3QgdXNhZ2Ugb2YgYWJvdmUuCiAgIAoyMDAxLTA0LTA5IDA5OjQzICBqYnBuCgogICAqIHNubXBsaWIvYXNuMS5jOgoKICAgICAtIG5ldyBzdWl0ZSBvZiBmdW5jdGlvbnMgYXNuX3JlYWxsb2NfcmVidWlsZF88dHlwZT4sIHdoaWNoIHBlcmZvcm0KICAgICAgIHJldmVyc2UgZW5jb2RpbmcgaW50byBhIGJ1ZmZlciBhbmQgZ3JvdyBpdCBpZiB0aGVyZSBpcyBub3QgZW5vdWdoCiAgICAgICBzcGFjZSBmb3IgdGhlIGVuY29kaW5nLgogICAKMjAwMS0wNC0wNiAxMjoxMiAgaGFyZGFrZXIKCiAgICogQUdFTlQudHh0ICwgQ09QWUlORyAsIENoYW5nZUxvZyAsCiAgIEVYQU1QTEUuY29uZi5kZWYgLCBGQVEgLCBORVdTICwgUE9SVElORyAsCiAgIFJFQURNRSAsIFJFQURNRS5hZ2VudHggLCBSRUFETUUuc25tcHYzICwgY29uZmlndXJlCiAgICwgY29uZmlndXJlLmluICwgc2Vkc2NyaXB0LmluICwgdmVyc2lvbi5oCiAgICwgYWdlbnQvYWdlbnRfdHJhcC5jICwgYWdlbnQvZHNfYWdlbnQuaCAsCiAgIGFnZW50L3NubXBfYWdlbnQuYyAsIGFnZW50L3NubXBkLmMgLAogICBhZ2VudC9taWJncm91cC91Y2Rfc25tcC5oICwgYWdlbnQvbWliZ3JvdXAvdXRpbF9mdW5jcy5jCiAgICwgYWdlbnQvbWliZ3JvdXAvYWdlbnR4L1JFQURNRS5hZ2VudHggLAogICBhZ2VudC9taWJncm91cC9hZ2VudHgvbWFzdGVyLmMgLAogICBhZ2VudC9taWJncm91cC9hZ2VudHgvbWFzdGVyLmggLAogICBhZ2VudC9taWJncm91cC9leGFtcGxlcy9leGFtcGxlLmMgLAogICBhZ2VudC9taWJncm91cC9ob3N0L2hyX2ZpbGVzeXMuYyAsCiAgIGFnZW50L21pYmdyb3VwL2hvc3QvaHJfc3RvcmFnZS5jICwKICAgYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9zd3J1bi5jICwKICAgYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl91dGlscy5jICwgYWdlbnQvbWliZ3JvdXAvbWliSUkvYXQuYwogICAsIGFnZW50L21pYmdyb3VwL21pYklJL2F0LmggLAogICBhZ2VudC9taWJncm91cC9taWJJSS9pbnRlcmZhY2VzLmMgLCBhZ2VudC9taWJncm91cC9taWJJSS9pcC5jCiAgICwgYWdlbnQvbWliZ3JvdXAvbWliSUkvdWRwLmMgLAogICBhZ2VudC9taWJncm91cC9taWJJSS92YXJfcm91dGUuYyAsCiAgIGFnZW50L21pYmdyb3VwL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5RmlsdGVyUHJvZmlsZVRhYmxlLmMgLAogICBhZ2VudC9taWJncm91cC9ub3RpZmljYXRpb24vc25tcE5vdGlmeUZpbHRlclRhYmxlLmMgLAogICBhZ2VudC9taWJncm91cC9ub3RpZmljYXRpb24vc25tcE5vdGlmeVRhYmxlLmMgLAogICBhZ2VudC9taWJncm91cC90YXJnZXQvdGFyZ2V0LmMgLAogICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9kaXNrLmMgLAogICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9maWxlLmMgLAogICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9sb2FkYXZlLmMgLAogICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9wYXNzLmMgLAogICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9wcm94eS5jICwKICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvcmVnaXN0cnkuYyAsCiAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL3ZlcnNpb25pbmZvLmMgLAogICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC92bXN0YXRfc29sYXJpczIuYyAsIGFwcHMvc25tcGRlbHRhLmMKICAgLCBhcHBzL3NubXB0ZXN0LmMgLCBhcHBzL3NubXB0cmFwZC5jICwKICAgbG9jYWwvTWFrZWZpbGUuaW4gLCBsb2NhbC9taWIyYyAsIGxvY2FsL3NubXBjb25mCiAgICwgbG9jYWwvdGttaWIgLCBsb2NhbC93ZXNyZXN0YXJ0ICwgbWFuL3NubXBjbWQuMQogICAsIG1hbi9zbm1wZC5jb25mLjUuZGVmICwgbWFuL3NubXBkZWx0YS4xICwKICAgbWlicy9yZmNsaXN0ICwgbWlicy9yZmNtaWJzLmRpZmYgLCBzbm1wbGliL21pYi5jICwKICAgc25tcGxpYi9wYXJzZS5jICwgc25tcGxpYi9zbm1wX2FwaS5jICwKICAgc25tcGxpYi9zbm1wX2RlYnVnLmMgLCBzbm1wbGliL3NubXB1c20uYyAsCiAgIHRlc3RpbmcvZXZhbF90b29scy5zaCAsIHRlc3RpbmcvdGVzdHMvVDEyMHByb3h5Z2V0OgoKICAgbWVyZ2UzIC0+IG1lcmdlNC4gIEkgZG9uJ3QgKnRoaW5rKiBJIGJyb2tlIGFueXRoaW5nLgogICAgIC0gVGhlIG1haW4gbGluZSBzaG91bGQgbm93IGNvbnRhaW4gYWxsIHRoZSA0LjIuMSBwYXRjaGVzLgogICAgIC0gSSBtYXkgZG91YmxlIGNoZWNrIHRoaXMgYXQgYSBsYXRlciBkYXRlLgogICAKMjAwMS0wNC0wNSAwNjozNyAgZHRzMTIKCiAgICogc25tcGxpYi9wYXJzZS5jOgoKICAgQ2hhbmdlICdMaW5lJyB2YXJpYWJsZSBuYW1lLCB0byBhc3Npc3Qgd2l0aCBNYWMgcG9ydC4KICAgCjIwMDEtMDQtMDUgMDY6MTQgIGR0czEyCgogICAqIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wLzogcGFzcy5jICwgcGFzc19wZXJzaXN0LmM6CgogICBIYW5kbGUgc2V0dGluZyBudWxsIHN0cmluZyB2YWx1ZXMgdmlhIHRoZSAncGFzcycgbWVjaGFuaXNtLiAoU3VwcG9ydCM0MDY3MjgpCiAgIEFsc28gaGFuZGxlIGVtYmVkZGVkIHdoaXRlc3BhY2UgaW4gc3VjaCB2YWx1ZXMuCiAgIEFsc28gYXBwbGllZCB0byAncGFzc19wZXJzaXN0Jy4KICAgCjIwMDEtMDQtMDUgMDY6MDcgIGR0czEyCgogICAqIGFnZW50LzogYWdlbnRfcmVnaXN0cnkuYyAsIGFnZW50X3RyYXAuYyAsIGtlcm5lbC5jCiAgICwgbWliX21vZHVsZXMuYyAsIHNubXBfYWdlbnQuYyAsIHNubXBfYWdlbnQuaAogICAsIHNubXBfdmFycy5jICwgbWliZ3JvdXAvdXRpbF9mdW5jcy5jICwKICAgbWliZ3JvdXAvYWdlbnR4L21hc3Rlcl9hZG1pbi5jICwgbWliZ3JvdXAvYWdlbnR4L3Byb3RvY29sLmMKICAgLCBtaWJncm91cC9ob3N0L2hyX2Rpc2suYyAsIG1pYmdyb3VwL2hvc3QvaHJfbmV0d29yay5jCiAgICwgbWliZ3JvdXAvaG9zdC9ocl9wcmludC5jICwgbWliZ3JvdXAvaG9zdC9ocl9wcm9jLmMKICAgLCBtaWJncm91cC9ob3N0L2hyX3N5c3RlbS5jICwgbWliZ3JvdXAvaG9zdC9ocl91dGlscy5jCiAgICwgbWliZ3JvdXAvbWliSUkvdmFjbV92YXJzLmMgLAogICBtaWJncm91cC9taWJJSS92YXJfcm91dGUuYyAsCiAgIG1pYmdyb3VwL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5RmlsdGVyUHJvZmlsZVRhYmxlLmMgLAogICBtaWJncm91cC9ub3RpZmljYXRpb24vc25tcE5vdGlmeUZpbHRlclRhYmxlLmMgLAogICBtaWJncm91cC9ub3RpZmljYXRpb24vc25tcE5vdGlmeVRhYmxlLmMgLAogICBtaWJncm91cC90YXJnZXQvc25tcFRhcmdldEFkZHJFbnRyeS5jICwKICAgbWliZ3JvdXAvdGFyZ2V0L3RhcmdldC5jICwgbWliZ3JvdXAvdWNkLXNubXAvZmlsZS5jICwKICAgbWliZ3JvdXAvdWNkLXNubXAvaHB1eC5jICwgbWliZ3JvdXAvdWNkLXNubXAvcHJveHkuYyAsCiAgIG1pYmdyb3VwL3VjZC1zbm1wL3JlZ2lzdHJ5LmMgLAogICBtaWJncm91cC91Y2Qtc25tcC92ZXJzaW9uaW5mby5jOgoKICAgS2VlcCBvbmUgb2YgdGhlIHBpY2tpZXIgY29tcGlsZXJzIChIUCdzIGFDQykgaGFwcHkuCiAgIAoyMDAxLTA0LTA1IDA2OjA2ICBkdHMxMgoKICAgKiBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9kaXNrLmM6CgogICBFbnN1cmUgdGhhdCBjaGVja2luZyBmb3IgJ3N0YXR2ZnMnIGlzIGRvbmUgY29uc2lzdGVudGx5CiAgIAoyMDAxLTA0LTA1IDA2OjA1ICBkdHMxMgoKICAgKiBhZ2VudC9taWJncm91cC9taWJJSS9zeXN0ZW1fbWliLmM6CgogICBlbnN1cmUgdGhhdCAnZXhlY19jb21tYW5kJyBpcyB1c2VkIGNvbnNpc3RlbnRseSB3aXRoIHRoZSBhdmFpbGFiaWxpdHkgb2YgZXhlY3YKICAgKEEgY2xlYW5lciBhcHByb2FjaCB0aGFuIHRoZSBwcmV2aW91cyBwYXRjaCkKICAgCjIwMDEtMDQtMDUgMDY6MDEgIGR0czEyCgogICAqIGFnZW50LzogYXV0b19ubGlzdC5jICwgYXV0b19ubGlzdC5oOgoKICAgZml4IGZvciBhdXRvX25saXN0IGJvZ3VzIGRlZmluaXRpb25zIGZvciBtYWNoaW5lcyB3aXRob3V0IG5saXN0LgogICAKMjAwMS0wNC0wNSAwNDo1MSAgamJwbgoKICAgKiBzbm1wbGliL3NubXBfYXBpLmM6CgogICAgLSBzYXZlIGEgc3RyY3B5KCkgYW5kIGFsbG93IGxvbmcgb2N0ZXQgc3RyaW5nIHZhbHVlcyB3aXRob3V0IGNyYXNoaW5nCiAgICAgICh0aG91Z2ggdGhlcmUgYXJlIHN0aWxsIHByb2JsZW1zIGR1ZSB0byB0aGUgbGliZXJhbCB1c2Ugb2YgZml4ZWQKICAgICAgc2l6ZSBidWZmZXJzIHdpdGggbm8gYm91bmRzIGNoZWNraW5nIGFsbCBvdmVyIHRoZSBwbGFjZS4gIFNpZ2gpLgogICAKMjAwMS0wNC0wNCAwNjo0NiAgamJwbgoKICAgKiBhZ2VudC9zbm1wZC5jOgoKICAgIC0gY2FsbCBleHRlcm5hbCBzaWduYWwgaGFuZGxlcnMgYmVmb3JlIGNhbGxpbmcgc25tcF9zZWxlY3RfaW5mbygpLAogICAgICByYXRoZXIgdGhhbiBhZnRlciBjYWxsaW5nIHNubXBfc2VsZWN0X2luZm8oKSBidXQgYmVmb3JlIHNlbGVjdCgpLgogICAgICBUaGlzIGZpeGVzIGEgcG90ZW50aWFsIHByb2JsZW0gdGhhdCBjb3VsZCBhcmlzZSBpZiBhIHNpZ25hbCBoYW5kbGVyCiAgICAgIGNsb3NlZCBhIHNlc3Npb24sIHdoaWNoIHdvdWxkIGNhdXNlIHNlbGVjdCgpIHRvIHJldHVybiAtMSB3aXRoCiAgICAgIEVCQURGLCBhbmQgdGh1cyB0ZXJtaW5hdGUgdGhlIGFnZW50LgogICAKMjAwMS0wNC0wMyAwOTozMSAgZHRzMTIKCiAgICogYWdlbnQvbWliZ3JvdXAvbWliSUkvc3lzdGVtX21pYi5jOgoKICAgRW5zdXJlIHRoYXQgdGhlICdleHRtcCcgY29tbWFuZCB2YXJpYWJsZSBpcyBhY2Nlc3NpYmxlIG9uIHN5c3RlbXMgd2l0aG91dCBFWEVDVi4KICAgCjIwMDEtMDQtMDMgMDk6MjkgIGR0czEyCgogICAqIGFnZW50L21pYmdyb3VwL21pYklJL2ludGVyZmFjZXMuYzoKCiAgIEtlZXAgb25lIG9mIHRoZSBwaWNraWVyIGNvbXBpbGVycyAoSFAncyBhQ0MpIGhhcHB5LgogICAKMjAwMS0wNC0wMyAwOToyMiAgZHRzMTIKCiAgICogYXBwcy86IHNubXB0cmFwZC5jICwgc25tcHRyYXBkX2xvZy5jOgoKICAgS2VlcCBvbmUgb2YgdGhlIHBpY2tpZXIgY29tcGlsZXJzIChIUCdzIGFDQykgaGFwcHkuCiAgIAoyMDAxLTA0LTAzIDA5OjE1ICBkdHMxMgoKICAgKiBzbm1wbGliLzogbWliLmMgLCByZWFkX2NvbmZpZy5jICwgc25tcFRDUERvbWFpbi5oCiAgICwgc25tcFVEUERvbWFpbi5jICwgc25tcFVuaXhEb21haW4uYyAsCiAgIHNubXBVbml4RG9tYWluLmggLCBzbm1wX2FwaS5jICwgc25tcF9sb2dnaW5nLmMgLAogICBzbm1wX3RyYW5zcG9ydC5jICwgc25tcF90cmFuc3BvcnQuaCAsIHN5c3RlbS5jOgoKICAgS2VlcCBvbmUgb2YgdGhlIHBpY2tpZXIgY29tcGlsZXJzIChIUCdzIGFDQykgaGFwcHkuCiAgIAoyMDAxLTA0LTAzIDA2OjMwICBkdHMxMgoKICAgKiBhZ2VudC9taWJncm91cC9taWJJSS9rZXJuZWxfbGludXguYzoKCiAgIFBsdWcgZmlsZS1kZXNjcmlwdG9yIGxlYWsgd2hlbiB1c2luZyBjYWNoZWQgZGF0YS4gIChCdWcjNDEyMDAwKQogICAKMjAwMS0wNC0wMiAxMDoxMSAgamJwbgoKICAgKiBhZ2VudC9zbm1wX2FnZW50LmM6CgogICAgLSBjaGVjayBmb3IgbGltaXRzLmggcHJvcGVybHkKICAgCjIwMDEtMDQtMDIgMTA6MTAgIGpicG4KCiAgICogbWFuL3NubXBfYWdlbnRfYXBpLjM6CgogICAgLSBtaW5vciB0eXBlZmFjZSBjaGFuZ2VzCiAgIAoyMDAxLTAzLTMxIDA2OjI3ICBqYnBuCgogICAqIG1hbi9zbm1wX2FnZW50X2FwaS4zOgoKICAgIC0gdXBkYXRlIGRvY3VtZW50YXRpb24gb2YgYWdlbnRfY2hlY2tfYW5kX3Byb2Nlc3MgdG8gcmVmbGVjdAogICAgICBjdXJyZW50IGJlaGF2aW91cgogICAKICAgICAgICAqKiBOT1RFOiBjdXJyZW50bHkgcmV0dXJucyBjb250cm9sIHRvIHVzZXIgd2hlbiBhbiBhbGFybXMgcnVucyAqKgogICAgICAgICoqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqCiAgICAgICAgKiogICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBtYXkgY2hhbmdlICAgICAgICAgICAgICAgICAgICAgKioKICAgCjIwMDEtMDMtMzEgMDY6MjUgIGpicG4KCiAgICogbWFuL3NubXBfYWxhcm0uMzoKCiAgICAtIGRvY3VtZW50IHRoZSBzbm1wX2FsYXJtX3JlZ2lzdGVyX2hyIGZ1bmN0aW9uCiAgIAogICAgLSBleHBhbmQgdGhlIE5PVEVTIHNlY3Rpb24gZGlzY3Vzc2luZyB1c2Ugb2YgU0lHQUxSTSAob3Igbm90KQogICAKMjAwMS0wMy0zMSAwNjoxNyAgamJwbgoKICAgKiBhZ2VudC9taWJncm91cC9hZ2VudHgvc3ViYWdlbnQuYzoKCiAgICAtIE1ha2UgdXNlIG9mIFNOTVBfQ0FMTEJBQ0tfT1BfRElTQ09OTkVDVCB0cmFuc3BvcnQgZGlzY29ubmVjdAogICAgICBpbmRpY2F0aW9uIHRvIHNodXQgZG93biBBZ2VudFggc2Vzc2lvbnMgY2xlYW5seSBhbmQgY2FuY2VsIGFsbAogICAgICBjYWxsYmFja3Mgd2hpY2ggbWFrZSByZWZlcm5jZSB0byB0aGUgQWdlbnRYIHNlc3Npb24uCiAgIAoyMDAxLTAzLTMxIDA2OjE1ICBqYnBuCgogICAqIGFnZW50L21pYmdyb3VwL2FnZW50eC9tYXN0ZXJfYWRtaW4uYzoKCiAgICAtIEZpeCBtdWx0aXBsZSBmcmVlKCkgb2YgcGFydHMgb2YgdGhlIHN1YnNlc3Npb24gYnkgemVyb2luZyBvdXQKICAgICAgZmllbGRzIHRoYXQgd2UgZG9uJ3QgdXNlLgogICAKICAgIC0gTWFrZSB1c2Ugb2YgU05NUF9DQUxMQkFDS19PUF9ESVNDT05ORUNUIHRyYW5zcG9ydCBkaXNjb25uZWN0CiAgICAgIGluZGljYXRpb24gdG8gc2h1dCBkb3duIEFnZW50WCBzZXNzaW9ucyBjbGVhbmx5LgogICAKMjAwMS0wMy0zMSAwNjoxMyAgamJwbgoKICAgKiBhZ2VudC9taWJncm91cC9hZ2VudHgvbWFzdGVyX3JlcXVlc3QuYzoKCiAgICAtIE1ha2UgdXNlIG9mIFNOTVBfQ0FMTEJBQ0tfT1BfRElTQ09OTkVDVCB0cmFuc3BvcnQgZGlzY29ubmVjdAogICAgICBpbmRpY2F0aW9uIHRvIHNodXQgZG93biBBZ2VudFggc2Vzc2lvbnMgY2xlYW5seS4KICAgCjIwMDEtMDMtMzEgMDY6MTEgIGpicG4KCiAgICogYWdlbnQvc25tcF9hZ2VudC5jOgoKICAgIC0gRml4IG1lbW9yeSBsZWFrIGluIGhhbmRsZV9vbmVfdmFyIHdoZXJlIGxvbmcgdmFyYmluZHMgd2VyZW4ndAogICAgICBjb3JyZWN0bHkgZnJlZSgpZC4KICAgCiAgICAtIENoYW5nZSBiZWhhdmlvdXIgb2YgYWdlbnRfY2hlY2tfYW5kX3Byb2Nlc3Mgc28gdGhhdCBhbGFybXMgcnVuCiAgICAgIGNvcnJlY3RseS4KICAgCiAgICAgICAgKiogTk9URTogY3VycmVudGx5IHJldHVybnMgY29udHJvbCB0byB1c2VyIHdoZW4gYW4gYWxhcm1zIHJ1bnMgKioKICAgICAgICAqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKgogICAgICAgICoqICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgbWF5IGNoYW5nZSAgICAgICAgICAgICAgICAgICAgICoqCiAgIAoyMDAxLTAzLTMxIDA2OjA1ICBqYnBuCgogICAqIHNubXBsaWIvc25tcF9hcGkuYzoKCiAgICAtIENoYW5nZWQgcGFja2V0IGhhbmRsaW5nIG9uIHN0cmVhbS1saWtlIHRyYW5zcG9ydHMgc28gdGhhdCBhbGwKICAgICAgY29tcGxldGUgcmVjZWl2ZWQgcGFja2V0cyBhcmUgcHJvY2Vzc2VkOgogICAKICAgICAgX3Nlc3NfcmVhZCBpcyByZWZhY3RvcmVkIGludG8gdHdvIGZ1bmN0aW9uczogX3Nlc3NfcmVhZCByZW1haW5zCiAgICAgIHJlc3BvbnNpYmxlIGZvciByZWFkaW5nIGRhdGEgZnJvbSB0aGUgdHJhbnNwb3J0IGxheWVyLCBidXQgdGhlbgogICAgICBjYWxscyAocGVyaGFwcyBtb3JlIHRoYW4gb25jZSkgX3Nlc3NfcHJvY2Vzc19wYWNrZXQgdG8gZGlzcGF0Y2gKICAgICAgZWFjaCBwYWNrZXQgcmVhZC4KICAgCiAgICAtIFRoZSBwcmVzZW5jZSBvZiBhIHNlc3Npb24gd2l0aCBhIGJ1ZmZlcmVkIHBhcnRpYWwgcGFja2V0IG5vIGxvbmdlcgogICAgICBjYXVzZXMgc25tcF9zZWxlY3RfaW5mbyB0byByZXR1cm4gd2l0aCBhIHRpbWVvdXQgb2YgemVyby4KICAgCiAgICAtIEZyZWUgdGhlIHN1YnNlc3Npb25zIG9mIGEgc2Vzc2lvbiB3aGVuIGRvaW5nIGFuIHNubXBfc2Vzc19jbG9zZTsKICAgICAgdGhpcyBmaXhlcyBhbiBBZ2VudFggbWVtb3J5IGxlYWsgd2hlbiBzdWJhZ2VudHMgY29tZSBhbmQgZ28uCiAgIAogICAgLSBQZXJmb3JtIGNhbGxiYWNrcyB3aXRoIGFuIG9wZXJhdGlvbiBhcmd1bWVudCBvZgogICAgICBTTk1QX0NBTExCQUNLX09QX0RJU0NPTk5FQ1Qgd2hlbiB5b3UgZ2V0IGEgdHJhbnNwb3J0IGRpc2Nvbm5lY3QKICAgICAgaW5kaWNhdGlvbi4KICAgCjIwMDEtMDMtMzEgMDU6NTYgIGpicG4KCiAgICogc25tcGxpYi9zbm1wX2FwaS5oOgoKICAgTWFkZSB0cmFuc3BvcnQgZG9tYWluIGNvbnN0CiAgIAoyMDAxLTAzLTMxIDA1OjU1ICBqYnBuCgogICAqIHNubXBsaWIvY2FsbGJhY2suYzoKCiAgIEZpeCBtZW1vcnkgbGVhayB0aGF0IGNhbiBvY2N1ciB3aGVuIGRlcmVnaXN0ZXJpbmcgY2FsbGJhY2tzCiAgIAoyMDAxLTAzLTMwIDA4OjA1ICBoYXJkYWtlcgoKICAgKiBSRUFETUUuYWdlbnR4OgoKICAgZmlsZSBSRUFETUUuYWdlbnR4IHdhcyBpbml0aWFsbHkgYWRkZWQgb24gYnJhbmNoIFY0LTItcGF0Y2hlcy4KICAgCjIwMDEtMDMtMjkgMjE6NDMgIGhhcmRha2VyCgogICAqIElTU1VFUyAoVjQtMi1wYXRjaGVzLjEpLCBJU1NVRVM6CgogICBybSBJU1NVRVMKICAgCjIwMDEtMDMtMjkgMDg6MjEgIHNsaWYKCiAgICogd2luMzIvbGlic25tcF9kbGwvOiBsaWJzbm1wLmRlZiAoVjQtMi1wYXRjaGVzLjMpLCBsaWJzbm1wLmRlZjoKCiAgIEFkZCB2YWNtX2lzX2NvbmZpZ3VyZWQuCiAgIAoyMDAxLTAzLTI4IDA2OjE5ICBqYnBuCgogICAqIGFnZW50L21pYmdyb3VwL2FnZW50eC86IGNsaWVudC5jICwgbWFzdGVyX3JlcXVlc3QuYzoKCiAgICAtIHVzZSBTTk1QX0NBTExCQUNLX09QXzxuYW1lPiBjYWxsYmFjayBvcGVyYXRpb24gbmFtZXMKICAgCjIwMDEtMDMtMjggMDY6MDAgIGpicG4KCiAgICogYXBwcy9zbm1wdHJhcGQuYzoKCiAgICAtIHVzZSBTTk1QX0NBTExCQUNLX09QXzxuYW1lPiBjYWxsYmFjayBvcGVyYXRpb24gbmFtZXMKICAgCjIwMDEtMDMtMjggMDU6MzYgIGpicG4KCiAgICogYWdlbnQvOiBzbm1wX2FnZW50LmMgLCBzbm1wZC5jOgoKICAgIC0gdXNlIFNOTVBfQ0FMTEJBQ0tfT1BfPG5hbWU+IGNhbGxiYWNrIG9wZXJhdGlvbiBuYW1lcwogICAKMjAwMS0wMy0yOCAwNTowNiAgamJwbgoKICAgKiBzbm1wbGliLzogc25tcF9jbGllbnQuYyAsIHNubXBfYXBpLmM6CgogICAgLSB1c2UgU05NUF9DQUxMQkFDS19PUF88bmFtZT4gY2FsbGJhY2sgb3BlcmF0aW9uIG5hbWVzCiAgIAoyMDAxLTAzLTI4IDA1OjA0ICBqYnBuCgogICAqIHNubXBsaWIvc25tcF9hcGkuaDoKCiAgICAtIHJlbmFtZSBjYWxsYmFjayBvcGVyYXRpb25zIHRvIFNOTVBfQ0FMTEJBQ0tfT1BfPG5hbWU+CiAgICAtIGFkZCBuZXcgb3BlcmF0aW9ucyBTTk1QX0NBTExCQUNLX09QX0NPTk5FQ1QsIFNOTVBfQ0FMTEJBQ0tfT1BfRElTQ09OTkVDVAogICAgLSBhZGQgbGVnYWN5IGRlZmluaXRpb25zIGZvciBSRUNFSVZFRF9NRVNTQUdFLCBUSU1FRF9PVVQsIFNFTkRfRkFJTEVECiAgIAoyMDAxLTAzLTI3IDE1OjU3ICBoYXJkYWtlcgoKICAgKiBhZ2VudC9taWJncm91cC9kaXNtYW4vOiBtdGVPYmplY3RzVGFibGUuYyAsCiAgIG10ZVRyaWdnZXJUYWJsZS5jOgoKICAgY2hhbmdlIGZwcmludGYgLT4gc25tcF9sb2cuCiAgIERvbid0IGFsbG93IG1vZGlmaWNhdGlvbnMgb2YgcmVhZC1vbmx5IHJvd3MgaW4gbXRlT2JqZWN0c1RhYmxlLgogICAKMjAwMS0wMy0yNyAxMDo1NSAgaGFyZGFrZXIKCiAgICogYWdlbnQvOiBkc19hZ2VudC5oICwgbWliZ3JvdXAvZGlzbWFuL210ZU9iamVjdHNUYWJsZS5jCiAgICwgbWliZ3JvdXAvZGlzbWFuL210ZU9iamVjdHNUYWJsZS5oICwKICAgbWliZ3JvdXAvZGlzbWFuL210ZVRyaWdnZXJCb29sZWFuVGFibGUuYyAsCiAgIG1pYmdyb3VwL2Rpc21hbi9tdGVUcmlnZ2VyRGVsdGFUYWJsZS5jICwKICAgbWliZ3JvdXAvZGlzbWFuL210ZVRyaWdnZXJFeGlzdGVuY2VUYWJsZS5jICwKICAgbWliZ3JvdXAvZGlzbWFuL210ZVRyaWdnZXJUYWJsZS5jICwKICAgbWliZ3JvdXAvZGlzbWFuL210ZVRyaWdnZXJUYWJsZS5oICwKICAgbWliZ3JvdXAvZGlzbWFuL210ZVRyaWdnZXJUaHJlc2hvbGRUYWJsZS5jOgoKICAgU3VwcG9ydCBmb3IgbmV3IGZlYXR1cmVzIGluIHRoZSBESVNNQU4tRVZFTlQtTUlCIGNvZGU6CiAgICAgTmV3IHNubXBkLmNvbmYgdG9rZW5zOgogICAgICAtIG1vbml0b3IgWy1vIG9pZC4uLl0gWy11IHVzZXJdIG9pZCBbKD18IT18PD18Li4uKSBWQUxVRV0uCiAgICAgIC0gZGVmYXVsdE1vbml0b3JzIHllcwogICAKMjAwMS0wMy0yNyAxMDo1MyAgaGFyZGFrZXIKCiAgICogc25tcGxpYi9taWIuYzoKCiAgIE1vdmVkICogZnJvbSBiZWdpbm5pbmcgb2Ygcm91dGluZSB0byB0aGUgc2FtZSBsaW5lIGFzIHRoZSByZXR1cm4KICAgdmFyaWFibGUgZGVjbGFyYXRpb24uICBXYXMgY2F1c2luZyBldGFncyBncmllZiB0aGUgb3RoZXIgd2F5LgogICAKMjAwMS0wMy0yNyAxMDo1MiAgaGFyZGFrZXIKCiAgICogbG9jYWwvTWFrZWZpbGUuaW46CgogICBwYXRjaCBmcm9tIEtlbiBIb3Juc3RlaW46IHVzZSAlcyBpbnN0ZWFkIG9mIEBzIGZvciBzZWFyY2gvcmVwbGFjZSBkZWxpbWl0ZXJzLgogICAKMjAwMS0wMy0yNyAxMDoyOSAgaGFyZGFrZXIKCiAgICogYXBwcy9zbm1wdHJhcGQuYzoKCiAgIFVzZSBzbm1wX2xvZyB3aXRoICVzIHRvIHByZXZlbnQgJSBleHBhbnNpb24gaW4gb2N0ZXQgc3RyaW5ncyBjb250YWluaW5nIGEgJXMuCiAgIHRyYXBfZm10X2ZyZWUgbmVlZHMgKClzLgogICAKMjAwMS0wMy0yNyAwODoxMyAgZHRzMTIKCiAgICogYWdlbnQvOiBzbm1wX2FnZW50LmMgLCBtaWJncm91cC9hZ2VudHgvbWFzdGVyX3JlcXVlc3QuYzoKCiAgIEhhbmRsZSBub24tcmVzcG9uc2l2ZSBBZ2VudFggc3ViLWFnZW50cyBtb3JlIHJvYnVzdGx5LgogICAgICAoQmFzZWQgb24gc3VnZ2VzdGlvbnMgZnJvbSBIYXJyaWUgSGF6ZXdpbmtlbCAmIFBhdWwgUmFzbXVzc2VuKQogICAKMjAwMS0wMy0yNyAwODowMyAgZHRzMTIKCiAgICogYWdlbnQvc25tcF9hZ2VudC5jOgoKICAgQXZvaWQgZG91YmxlLWZyZWVpbmcgb2YgY2FjaGVkIGFkZHJlc3Mgc3RyaW5ncy4KICAgICAgKEpvaG4ncyBpbXByb3ZlbWVudCB0byBteSBzdWdnZXN0ZWQgZml4KS4KICAgCjIwMDEtMDMtMjcgMDI6MzkgIGR0czEyCgogICAqIGFnZW50L21pYmdyb3VwL3NtdXgvc211eC5jOgoKICAgUmVzZXQgY291bnQgb2YgYXV0aG9yaXplZCBwZWVycyBvbiBjbG9zZWRvd24uICAoVGhhbmtzIHRvIFZsYWQgVHVuaWspCiAgIAoyMDAxLTAzLTI2IDE4OjAxICBoYXJkYWtlcgoKICAgKiBhZ2VudC9taWJncm91cC9taWJJSS92YWNtX3ZhcnMuYywgc25tcGxpYi92YWNtLmMsIHNubXBsaWIvdmFjbS5oCiAgIChWNC0yLXBhdGNoZXMuWzEsMiwxXSksIGFnZW50L21pYmdyb3VwL21pYklJL3ZhY21fdmFycy5jICwKICAgc25tcGxpYi92YWNtLmMgLCBzbm1wbGliL3ZhY20uaDoKCiAgIEZpeGVkIHZhY20gdG8gZHJvcCB2MS92MmMgcGFja2V0cyBwcm9wZXJseSB3aGVuIG5vIGNvbTJzZWMgZW50cmllcyBhcmUgZm91bmQuCiAgIAoyMDAxLTAzLTI2IDExOjA0ICBoYXJkYWtlcgoKICAgKiBsb2NhbC86IGlwZi1tb2QucGwgKFY0LTItcGF0Y2hlcy4xKSwgaXBmLW1vZC5wbDoKCiAgIGFkZCB1c2FnZSBjb21tZW50IGF0IHRvcAogICAKMjAwMS0wMy0yMiAwNzo1NSAgZHRzMTIKCiAgICogc25tcGxpYi9zbm1wX2FwaS5jOgoKICAgVXNlIEFTTl9PQ1RFVF9TVFIgcmF0aGVyIHRoYW4gdGhlIGhpc3RvcmljIEFTTl9CSVRfU1RSIGZvciAnYicgb2JqZWN0IHZhbHVlcwogICBQYXRjaCBmcm9tIEZyYW5rIFN0cmF1c3MuCiAgIAoyMDAxLTAzLTIyIDA3OjQ2ICBkdHMxMgoKICAgKiBhZ2VudC86IGFnZW50X3RyYXAuYyAoVjQtMi1wYXRjaGVzLjMpLCBhZ2VudF90cmFwLmM6CgogICBGaXggZm9yIG1pbm9yIG1lbW9yeSBsZWFrIHdpdGggdHJhcC1yZWxhdGVkIHZhcmJpbmQgdmFsdWVzLgogICBUaGFua3MgdG8gSm9obiBWaWxsYWxvdm9zIChhbmQgdGhlIEludGVsIFNOTVAgdGVhbSkKICAgCjIwMDEtMDMtMjEgMTc6MzAgIGRyaWVodWlzCgogICAqIHNubXBsaWIvbWliLmM6CgogICBBdm9pZCBjcmFzaCBpbiBzbm1wX3NodXRkb3duIG9uIHBsYXRmb3JtcyB0aGF0IGNoZWNrIHBvaW50ZXIgdmFsaWRpdHkKICAgaW4gZnJlZSgzKSwgZS5nLiBGcmVlQlNELgogICAKMjAwMS0wMy0yMSAwODo0NiAgaGFyZGFrZXIKCiAgICogYWdlbnQvYWdlbnRfdHJhcC5jICwgYWdlbnQvbWliZ3JvdXAvdXRpbF9mdW5jcy5jICwKICAgYWdlbnQvbWliZ3JvdXAvbWliSUkvbXRhX3NlbmRtYWlsLmMgLAogICBhZ2VudC9taWJncm91cC9taWJJSS92YWNtX3ZhcnMuYyAsCiAgIGFnZW50L21pYmdyb3VwL21pYkpKL3ZhY21fdmFycy5jICwKICAgYWdlbnQvbWliZ3JvdXAvdGFyZ2V0L3NubXBUYXJnZXRBZGRyRW50cnkuYyAsCiAgIGFnZW50L21pYmdyb3VwL3RhcmdldC9zbm1wVGFyZ2V0UGFyYW1zRW50cnkuYyAsCiAgIGFnZW50L21pYmdyb3VwL3RhcmdldC90YXJnZXQuYyAsCiAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL2Rpc2suYyAsCiAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL2V4dGVuc2libGUuYyAsCiAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Byb2MuYyAsCiAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Byb3h5LmMgLCBhcHBzL3NubXB0cmFwZF9oYW5kbGVycy5jCiAgICwgc25tcGxpYi9kZWZhdWx0X3N0b3JlLmMgLCBzbm1wbGliL3JlYWRfY29uZmlnLmMKICAgLCBzbm1wbGliL3JlYWRfY29uZmlnLmggLCBzbm1wbGliL3NubXB1c20uYyAsCiAgIHNubXBsaWIvc25tcHYzLmM6CgogICBjb3B5X253b3JkIGNyZWF0ZWQgdGhhdCBjaGVja3MgYnVmZmVyIGxlbmd0aHMuCiAgIE1hZGUgZXZlcnl0aGluZyB1c2UgaXQuCiAgIAoyMDAxLTAzLTIxIDA4OjM4ICBoYXJkYWtlcgoKICAgKiBzbm1wbGliL3NubXBrc20uYzoKCiAgIEtTTSBwYXRjaCBmcm9tIEtlbiBIb3Juc3RlaW4KICAgCjIwMDEtMDMtMjAgMDk6MTMgIGpicG4KCiAgICogYWdlbnQvLmN2c2lnbm9yZToKCiAgIElnbm9yZSBQdXJpZnkgYW5kIE5GUyBzdHVmZgogICAKMjAwMS0wMy0xNiAxMDoxNCAgaGFyZGFrZXIKCiAgICogY29uZmlnLmguaW46CgogICBhZGRlZCBNSVRfTkVXX0NSWVBUTyAoZm9yIGtzbSkgZGVmaW5pdGlvbiB3aGljaCB3YXMgbWlzc2luZwogICAKMjAwMS0wMy0xNiAwMjo1MSAgamJwbgoKICAgKiBhZ2VudC9taWJncm91cC9kaXNtYW4vbXRlVHJpZ2dlclRhYmxlLmM6CgogICBmaXggcmlkaWN1bG91cyBtZW1vcnkgbGVhayBpbiBkaXNjb250aW51aXR5IHByb2Nlc3NpbmcKICAgCjIwMDEtMDMtMTUgMTE6MDQgIGhhcmRha2VyCgogICAqIHRlc3RpbmcvdGVzdHMvVDA1NmFnZW50djJjbWludHJhcDoKCiAgIHdob29wcy4gIE1pc3NlZCBhIG1lcmdlIGNvbmZsaWN0IGxpbmUKICAgCjIwMDEtMDMtMTUgMTA6NTkgIGhhcmRha2VyCgogICAqIFJFQURNRSAsIFJFQURNRS53aW4zMiAsIGFnZW50L21pYl9tb2R1bGVzLmMgLAogICBhZ2VudC9taWJncm91cC9oZWFkZXJfY29tcGxleC5jICwKICAgYWdlbnQvbWliZ3JvdXAvYWdlbnR4L2NsaWVudC5jICwKICAgYWdlbnQvbWliZ3JvdXAvYWdlbnR4L21hc3Rlci5jICwKICAgYWdlbnQvbWliZ3JvdXAvYWdlbnR4L21hc3Rlcl9hZG1pbi5jICwKICAgYWdlbnQvbWliZ3JvdXAvYWdlbnR4L21hc3Rlcl9yZXF1ZXN0LmMgLAogICBhZ2VudC9taWJncm91cC9hZ2VudHgvcHJvdG9jb2wuYyAsCiAgIGFnZW50L21pYmdyb3VwL2FnZW50eC9zdWJhZ2VudC5jICwKICAgYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9maWxlc3lzLmMgLCBhZ2VudC9taWJncm91cC9taWJJSS9hdC5jCiAgICwgYWdlbnQvbWliZ3JvdXAvbWliSUkvaXAuYyAsCiAgIGFnZW50L21pYmdyb3VwL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5RmlsdGVyUHJvZmlsZVRhYmxlLmMgLAogICBhZ2VudC9taWJncm91cC9ub3RpZmljYXRpb24vc25tcE5vdGlmeUZpbHRlclRhYmxlLmMgLAogICBhZ2VudC9taWJncm91cC9ub3RpZmljYXRpb24vc25tcE5vdGlmeVRhYmxlLmMgLAogICBhZ2VudC9taWJncm91cC90YXJnZXQvdGFyZ2V0LmMgLAogICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9kbG1vZC5jICwKICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvcGFzc19wZXJzaXN0LmMgLAogICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9wcm94eS5jICwgYXBwcy9zbm1wdHJhcGQuYyAsCiAgIGFwcHMvc25tcHRyYXBkX2xvZy5jICwgYXBwcy9zbm1wbmV0c3RhdC9pZi5jICwKICAgbWFuL3NubXAuY29uZi41LmRlZiAsIG1hbi9zbm1wY21kLjEgLCBtYW4vc25tcHRyYXBkLjgKICAgLCBtaWJzL0lBTkFpZlR5cGUtTUlCLnR4dCAsIG1pYnMvTVRBLU1JQi50eHQgLAogICBtaWJzL01ha2VmaWxlLm1pYiAsIG1pYnMvUkVBRE1FLm1pYnMgLAogICBtaWJzL1RVTk5FTC1NSUIudHh0ICwgbWlicy9pYW5hbGlzdCAsIG1pYnMvbWliZmV0Y2gKICAgLCBtaWJzL3JmY2xpc3QgLCBtaWJzL3JmY21pYnMuZGlmZiAsIG1pYnMvc21pc3RyaXAKICAgLCBwZXJsL1NOTVAvU05NUC54cyAsIHNubXBsaWIvYXNuMS5jICwKICAgc25tcGxpYi9kZWZhdWx0X3N0b3JlLmMgLCBzbm1wbGliL21pYi5jICwKICAgc25tcGxpYi9taWIuaCAsIHNubXBsaWIvcGFyc2UuYyAsIHNubXBsaWIvc25tcF9hcGkuYwogICAsIHNubXBsaWIvc25tcF9sb2dnaW5nLmMgLCBzbm1wbGliL3NubXBfcGFyc2VfYXJncy5jCiAgICwgc25tcGxpYi9zbm1wX3BhcnNlX2FyZ3MuaCAsIHNubXBsaWIvc25tcHYzLmMgLAogICBzbm1wbGliL3N5c3RlbS5oICwgdGVzdGluZy9ldmFsX3Rvb2xzLnNoICwKICAgdGVzdGluZy90ZXN0cy9UMDU0YWdlbnR2MmN0cmFwICwKICAgdGVzdGluZy90ZXN0cy9UMDU2YWdlbnR2MmNtaW50cmFwICwKICAgdGVzdGluZy90ZXN0cy9UMDU4YWdlbnRhdXRodHJhcCAsIHRlc3RpbmcvdGVzdHMvVDEwMGFnZW50aHVwCiAgICwgd2luMzIvY29uZmlnLmggLCB3aW4zMi9taWJfbW9kdWxlX2NvbmZpZy5oICwKICAgd2luMzIvbWliX21vZHVsZV9pbmNsdWRlcy5oICwgd2luMzIvbWliX21vZHVsZV9pbml0cy5oICwKICAgd2luMzIvbGlic25tcF9kbGwvbGlic25tcC5kZWYgLAogICB3aW4zMi9saWJ1Y2RtaWJzL2xpYnVjZG1pYnMuZGVmICwKICAgd2luMzIvbGlidWNkbWlicy9saWJ1Y2RtaWJzLmRzcDoKCiAgIG1lcmdlIGZyb20gcGF0Y2hlcyBicmFuY2g6IG1lcmdlMi0+My4KICAgCjIwMDEtMDMtMTUgMTA6MjIgIGpicG4KCiAgICogYWdlbnQvbWliZ3JvdXAvZGlzbWFuL210ZVRyaWdnZXJUYWJsZS5oOgoKICAgZXh0cmEgbWVtYmVycyBmb3IgZGlzY29udGludWl0eSBwcm9jZXNzaW5nCiAgIAoyMDAxLTAzLTE1IDA3OjQ2ICBoYXJkYWtlcgoKICAgKiBhZ2VudC9zbm1wZC5jOgoKICAgUGF0Y2ggZnJvbSBGcmFuayBTdHJhdXNzIHRvIHJ1biBzaWduYWwgaGFuZGxlcnMgZWFybGllcgogICAKMjAwMS0wMy0xNCAxNDozNyAgaGFyZGFrZXIKCiAgICogYWdlbnQvOiBhZ2VudF90cmFwLmggKFY0LTItcGF0Y2hlcy4yKSwgYWdlbnRfdHJhcC5oOgoKICAgUGF0Y2ggZnJvbSBIYXJyaWUgSGF6ZXdpbmtlbDogbWFrZSBzZW5kX2VudGVycHJpc2VfdHJhcF92YXJzIGEgcHVibGljIGZuLgogICAKMjAwMS0wMy0xNCAxMjoxNiAgc2xpZgoKICAgKiBhZ2VudC9taWJncm91cC90dW5uZWwvdHVubmVsLmM6CgogICBVc2UgY29uZmlnLmgsIGRvbid0IHVzZSB1Y2Qtc25tcCBkaXJlY3RvcnkgdG8gYnVpbGQgaW4gdGhlIG1pYmdyb3VwIHRyZWUuCiAgIAoyMDAxLTAzLTE0IDExOjA1ICBzbGlmCgogICAqIHRlc3RpbmcvOiBNYWtlZmlsZS5pbiAsIFJVTlRFU1RTICwgVEVTVENPTkYuc2gKICAgLCBldmFsX29uZXNjcmlwdC5zaCAsIGV2YWxfdG9vbHMuc2g6CgogICBtZXJnZSB0aGUgdGVzdCBzY3JpcHQgY2hhbmdlcyBtYWRlIGluIHRoZSBWNC0yLXBhdGNoZXMgYnJhbmNoLgogICAKMjAwMS0wMy0xNCAxMDo1NyAgamJwbgoKICAgKiBhZ2VudC9taWJncm91cC9kaXNtYW4vbXRlVHJpZ2dlclRhYmxlLmM6CgogICBDaGFuZ2UgdG8gZGlzY29udGludWl0eSBwcm9jZXNzaW5nIHRvIHN0b3AgaXQgcmV0dXJuaW5nIFRSVUUgYWxsIHRoZQogICB0aW1lCiAgIAoyMDAxLTAzLTE0IDEwOjUyICBqYnBuCgogICAqIGFnZW50L21pYmdyb3VwL2Rpc21hbi9tdGVUcmlnZ2VyVGFibGUuYzoKCiAgICAtIHJvdWdoIHN0YWIgYXQgZGlzY29udGludWl0eSBwcm9jZXNzaW5nCiAgICAtIGJhaWwgb3V0IG9mIGdldE5leHQtdHlwZSBsb29wcyBvbiBhIGJhZFR5cGUgY29uZGl0aW9uCiAgIAoyMDAxLTAzLTE0IDEwOjM0ICBoYXJkYWtlcgoKICAgKiBSRUFETUUua3JiNToKCiAgIGtlcmJlcm9zIFJFQURNRSBmaWxlIGZyb20gS2VuIEhvcm5zdGVpbgogICAKMjAwMS0wMy0xNCAxMDoyOCAgamJwbgoKICAgKiBhZ2VudC9taWJncm91cC9kaXNtYW4vbXRlVHJpZ2dlckRlbHRhVGFibGUuYzoKCiAgIEdldCByZXR1cm5lZCAqdmFyX2xlbiByaWdodCBmb3IgbXRlVHJpZ2dlckRlbHRhRGlzY29udGludWl0eUlECiAgIAoyMDAxLTAzLTE0IDEwOjE5ICBzbGlmCgogICAqIGFnZW50L3NubXBkLmMgLCBhZ2VudC9taWJncm91cC9leGFtcGxlcy91Y2REZW1vUHVibGljLmMKICAgLCBhcHBzL3NubXB2YWNtLmMgLCBhcHBzL3NubXBuZXRzdGF0L3dpbnN0dWIuYyAsCiAgIHNubXBsaWIvcGFyc2UuYyAsIHNubXBsaWIvc25tcFVuaXhEb21haW4uYzoKCiAgIHBhdGNoIHN1Ym1pdHRlZCBieSBIYXJyaWUgSGF6ZXdpbmtlbCB0byBxdWlldCBzb21lIHdhcm5pbmdzLgogICAKMjAwMS0wMy0xNCAxMDoxOSAgaGFyZGFrZXIKCiAgICogYWNjb25maWcuaCAsIGNvbmZpZ3VyZSAsIGNvbmZpZ3VyZS5pbiAsCiAgIHNubXBsaWIvc25tcF9hcGkuYyAsIHNubXBsaWIvc25tcGtzbS5jICwKICAgc25tcGxpYi9zbm1wa3NtLmg6CgogICBLU00gcGF0Y2ggZnJvbSBLZW4gSG9ybnN0ZWluLgogICAKMjAwMS0wMy0xNCAwNTo0NSAgZHRzMTIKCiAgICogYWdlbnQvbWliZ3JvdXAvaG9zdC86IGhyX3N3cnVuLmMgKFY0LTItcGF0Y2hlcy41KSwgaHJfc3dydW4uYzoKCiAgIEZpeCBMaW51eCBmaWxlIGRlc2NyaXB0b3IgbGVhayAocmVwb3J0ZWQgYnkgT2xpdmVyIEbkbmdlcikKICAgCjIwMDEtMDMtMTQgMDU6MjIgIGpicG4KCiAgICogYWdlbnQvbWliZ3JvdXAvZGlzbWFuLy5jdnNpZ25vcmU6CgogICBbbm8gbG9nIG1lc3NhZ2VdCiAgIAoyMDAxLTAzLTE0IDAyOjIwICBqYnBuCgogICAqIGFnZW50L21pYmdyb3VwL2Rpc21hbi86IG10ZVRyaWdnZXJUYWJsZS5jICwKICAgbXRlVHJpZ2dlclRhYmxlLmg6CgogICAgLSBzYXZlIG9yaWdpbmFsIFBEVSdzIHRyYW5zcG9ydCBkb21haW4gLS0gbmVjZXNzYXJ5IGZvcgogICAgICBjb21tdW5pdHkgc3RyaW5nIHByb2Nlc3NpbmcKICAgCiAgICAgIENBVVRJT046IGluY29tcGF0aWJsZSBjaGFuZ2UgaW4gZm9ybWF0IG9mIG10ZVRyaWdnZXJUYWJsZQogICAgICAgICAgICAgICBjb25maWd1cmF0aW9uIGVudHJ5CiAgIAogICAgLSBmaXggbWVtb3J5IGxlYWsgaW4gbXRlX3J1bl90cmlnZ2VyIGJ5IHJlbGVhc2luZyBQRFVzCiAgIAogICAgLSBzZW5kICJiYWQgdHlwZSIgbm90aWZpY2F0aW9ucyBpbiBzb21lIGNhc2VzCiAgIAogICAgLSBvdGhlciBtaW5vciBtZW1vcnkgbGVha3MKICAgCiAgICAtICJkZWx0YSIgc2FtcGxlVHlwZSBoYW5kbGVkIGZvciBib29sZWFuIHRyaWdnZXJzCiAgIAogICAgLSBtb3JlICJYWFg6IiBjb21tZW50cyEKICAgCjIwMDEtMDMtMTMgMTM6NTIgIG1hcnoKCiAgICogcGVybC9TTk1QL1NOTVAueHM6CgogICBmaXggc3VwcG9ydCBmb3IgSW50ZWdlcjMyCiAgIAoyMDAxLTAzLTExIDA4OjQzICBqYnBuCgogICAqIHNubXBsaWIvOiBzbm1wX3RyYW5zcG9ydC5jICwgc25tcF90cmFuc3BvcnQuaDoKCiAgIEFkZCBhIGZ1bmN0aW9uIHRvIHRlc3Qgd2hldGhlciBhbiBPSUQgY29ycmVzcG9uZHMgdG8gYSBzdXBwb3J0ZWQgdHJhbnNwb3J0CiAgIGRvbWFpbi4KICAgCjIwMDEtMDMtMTEgMDc6NTUgIGpicG4KCiAgICogc25tcGxpYi9zbm1wVENQRG9tYWluLmg6CgogICBBZGQgI2luY2x1ZGVzIHRvIG1ha2Ugc3RydWN0IHNvY2thZGRyX2luIGNvbXBsZXRlCiAgIAoyMDAxLTAzLTExIDA3OjU0ICBqYnBuCgogICAqIHNubXBsaWIvc25tcEFBTDVQVkNEb21haW4uaDoKCiAgIFJlbW92ZSBzcHVyaW91cyAjaW5jbHVkZQogICAKMjAwMS0wMy0wOSAwNzozMiAgaGFyZGFrZXIKCiAgICogYWdlbnQvbWliZ3JvdXAvbWliSUkvdmFjbV92YXJzLmM6CgogICBGaXggcnd1c2VyIC1zIG1vZGVsIHRvIGFjdHVhbGx5IHdvcmsuCiAgIAoyMDAxLTAzLTA5IDA1OjUyICBqYnBuCgogICAqIHNubXBsaWIvc25tcFRDUERvbWFpbi5jOgoKICAgU2V0IGEgUERVJ3Mgb3BhcXVlIGRhdGEgb24gYSB0Y3BfcmVjdjsgdGhpcyBpc24ndCBuZWNlc3NhcnkgdG8gc2VuZAogICByZXBsaWVzIChiZWNhdXNlIHRoZSB1bmRlcmx5aW5nIHNvY2tldCBpcyBzdHJvbmdseSBjb25uZWN0ZWQpIGJ1dCBpZgogICB5b3UgZG9uJ3QgZG8gdGhpcyB0aGVuIHlvdSBjYW4ndCBkbyAiY29tMnNlYyIgdHlwZSBwcm9jZXNzaW5nIGZvciBQRFVzCiAgIHJlY2VpdmVkIG9uIFRDUCBzZXNzaW9ucy4uLiBpbnRlcmVzdGluZy4KICAgCjIwMDEtMDMtMDkgMDM6MzMgIGpicG4KCiAgICogc25tcGxpYi9zbm1wVURQRG9tYWluLmM6CgogICBGaXggYmFkIGFzc3VtcHRpb24gdGhhdCBjb21tdW5pdHkgc3RyaW5nIGlzIHplcm8tdGVybWluYXRlZAogICAKMjAwMS0wMy0wOCAxNTozNiAgaGFyZGFrZXIKCiAgICogYWdlbnQvc25tcGQuYzoKCiAgIC0gY29ycmVjdCB2ZXJzaW9uIHN0YXRlbWVudHMgdG8gaW5kaWNhdGUgbmV0LXNubXAuCiAgIC0gcmVtb3ZlIG15IG5hbWUgYXMgYXV0aG9yIChJJ20gY2VydGFpbmx5IG5vdCB0aGUgb25seSBvbmUpCiAgIC0gYWRkIHdlYiBhZGRyZXNzLgogICAKMjAwMS0wMy0wOCAxNTozMSAgaGFyZGFrZXIKCiAgICogUkVBRE1FOgoKICAgLSBBZGRlZCBLZW4gSG9ybnN0ZWluJ3MgbmFtZSB0byBjb250cmlidXRlcnMgbGlzdC4KICAgLSBSZW1vdmVkIG1pbmUgZnJvbSBiZWluZyBsaXN0ZWQgc2VwYXJhdGVseS4KICAgCjIwMDEtMDMtMDggMTQ6NTEgIGhhcmRha2VyCgogICAqIGNvbmZpZ3VyZSAsIGNvbmZpZ3VyZS5pbiAsCiAgIGFnZW50L21pYmdyb3VwL21pYklJL3ZhY21fdmFycy5jICwgc25tcGxpYi9zbm1wa3NtLmMgLAogICBzbm1wbGliL3NubXBrc20uaDoKCiAgIEFkZGVkIGEga2VyYmVyb3MgYmFzZWQgc2VjdXJpdHkgbW9kdWxlIChrc20pLgogICAgIEhvd2V2ZXIsIE5lZWRzIGxpYnJhcmllcyAoLWxrcmI1IC1sY29tX2Vycikgbm90IGJlaW5nIGNoZWNrZWQgZm9yIGN1cnJlbnRseS4KICAgCjIwMDEtMDMtMDggMTQ6NDggIGhhcmRha2VyCgogICAqIHNubXBsaWIvc25tcF9hcGkuYzoKCiAgIFdob29wcy4gIFNob3VsZG50IGhhdmUgYSBuZWdhdGlvbiBzaWduIG9uIHRoZSBtb3N0IHJlY2VudCBjaGVja2luLgogICAKMjAwMS0wMy0wOCAxNDozOCAgaGFyZGFrZXIKCiAgICogc25tcGxpYi9zbm1wX2FwaS5jOgoKICAgSWYgTk9fUFJPQkUgaXMgc2V0LCBkb24ndCBkbyBhbnkgcG9zdCBwcm9iaW5nIGFjdGl2aXRpZXMgZWl0aGVyIGxpa2UKICAgdGltZSB1cGRhdGluZyBhbmQgdXNlciBjcmVhdGlvbi4KICAgCjIwMDEtMDMtMDggMDg6MTQgIGpicG4KCiAgICogYWdlbnQvbWliZ3JvdXAvdGFyZ2V0L3RhcmdldC5jOgoKICAgUmVtb3ZlIHN0cmR1cCgpcyBvbiBzb21lIHNlc3Npb24gcGFyYW1ldGVycyB3aGljaCBjYXVzZSBtZW1vcnkgbGVha3MKICAgKHNpbmNlIHNubXBfb3BlbiBkZWVwIGNvcGllcyB0aGUgaW5wdXQgc2Vzc2lvbiBhbnl3YXkpCiAgIAoyMDAxLTAzLTA4IDA4OjExICBqYnBuCgogICAqIGFnZW50L21pYmdyb3VwL3RhcmdldC9zbm1wVGFyZ2V0QWRkckVudHJ5LmM6CgogICBNYWtlIHN1cmUgc2VzcyBmaWVsZCBvZiBuZXcgZW50cmllcyBpcyBpbml0aWFsaXNlZCB0byBOVUxMLgogICAKMjAwMS0wMy0wOCAwNzo0OSAgamJwbgoKICAgKiBhZ2VudC9taWJncm91cC90YXJnZXQvc25tcFRhcmdldFBhcmFtc0VudHJ5LmM6CgogICBNYWtlIGNvbmZpZyB0b2tlbiBwYXJzZXIgdXBkYXRlIHRpbWVzdGFtcCBvbiBlbnRyeSBpdCBjcmVhdGVzOwogICBtb3ZlIHVwZGF0ZV90aW1lc3RhbXAgZnVuY3Rpb24uCiAgIAoyMDAxLTAzLTA3IDA3OjQ1ICBoYXJkYWtlcgoKICAgKiBwZXJsL1NOTVAvOiBSRUFETUUgLCBTTk1QLnBtICwgU05NUC54czoKCiAgIFBhdGNoIGZyb20gS2FybCBTY2hpbGtlIHRvIHJlbW92ZSB1bm5lZWRlZCB0aW1lc3RhbXAgc3VwcG9ydAogICAKMjAwMS0wMy0wNiAyMDo1OCAgaGFyZGFrZXIKCiAgICogc25tcGxpYi86IHNubXBfYXBpLmMgLCBzbm1wX2NsaWVudC5jICwgc25tcF9zZWNtb2QuYwogICAsIHNubXBfc2VjbW9kLmggLCBzbm1wdXNtLmM6CgogICBzZWNtb2Qgc3RydWN0IHN5bWJvbCBuYW1lIGNoYW5nZXMgdG8gc29tZXRoaW5nIG1vcmUgaW50ZWxsaWdpYmxlLgogICAKMjAwMS0wMy0wNiAxNjo0NiAgaGFyZGFrZXIKCiAgICogc25tcGxpYi86IHNubXBfYXBpLmMgLCBzbm1wX2NsaWVudC5jOgoKICAgLSBzZXQgdGhlIGRlZmF1bHQgcGR1IHNlY3VyaXR5IG1vZGVsIHRvIFNOTVBfREVGQVVMVF9TRUNNT0RFTCAobm90IDApLgogICAtIGRvbid0IGZvcmNlIHRoZSBzZWN1cml0eSBtb2RlbCBvZiB0aGUgc2Vzc2lvbiBvbiB0aGUgcGR1IGlmIGFscmVhZHkgc2V0LgogICAKMjAwMS0wMy0wNiAxNjoxMSAgaGFyZGFrZXIKCiAgICogYWdlbnQvbWliZ3JvdXAvbWliSUkvdmFjbV92YXJzLmM6CgogICBob3BlZnVsbHkgZml4IHRvIGFsbG93IG90aGVyIChyZWdpc3RlcmVkKSBzZWN1cml0eSBtb2RlbHMgdG8gYmUgdXNlZC4KICAgCjIwMDEtMDMtMDYgMDk6MjMgIGhhcmRha2VyCgogICAqIFJFQURNRToKCiAgIEFkZGVkIEpvaG4gTmF5bG9uIHRvIHRoZSBSRUFETUUgZmlsZS4KICAgCjIwMDEtMDMtMDYgMDk6MjIgIGhhcmRha2VyCgogICAqIHNubXBsaWIvOiBzbm1wX2FwaS5jICwgc25tcF9zZWNtb2QuaDoKCiAgIENyZWF0ZSBhIG5ldyBzZWNtb2QgY2FsbGJhY2sgd2hlbiBhIHRpbWVvdXQgb24gYSBwZHUgb2NjdXJzLgogICAKMjAwMS0wMy0wNiAwOToxOCAgaGFyZGFrZXIKCiAgICogY29uZmlndXJlICwgY29uZmlndXJlLmluOgoKICAgcHJvcGVybHkgaW5zdGFsbCBzZWNtb2QgaGVhZGVyIGxpc3QuCiAgIAoyMDAxLTAzLTA2IDA4OjQzICBoYXJkYWtlcgoKICAgKiBzbm1wbGliLzogc25tcF9hcGkuYyAsIHNubXBfc2VjbW9kLmg6CgogICAtIGJ1ZyBmaXhlcyBmb3Igc2VjbW9kIHJlbGF0ZWQgc3R1ZmYgKGl0IGNvbXBpbGVzIG5vdyAob3BwcykpLgogICAKMjAwMS0wMy0wNiAwODozOCAgaGFyZGFrZXIKCiAgICogc25tcGxpYi86IHNubXBfYXBpLmMgLCBzbm1wX3NlY21vZC5oOgoKICAgLSB0d28gbmV3IHNlY21vZCBjYWxsYmFja3MgZm9yIGZyZWVpbmcgYSBwZHUgYW5kIGEgc2Vzc2lvbi4KICAgLSBtb3ZlIHRyYW5zcG9ydCBjbG9zaW5nIGluIHNubXBfc2Vzc19jbG9zZSgpIHRvIGFmdGVyIHBlbmRpbmcKICAgICByZXF1ZXN0cyBhcmUgZnJlZWQvY2xvc2VkIGluIGNhc2Ugc29tZXRoaW5nIG5lZWRzIHRvIG1ha2UgdXNlIG9mIHRoZQogICAgIHRyYW5zcG9ydCBiZWZvcmUgaXQgY2xvc2VzLgogICAKMjAwMS0wMy0wNiAwNzo1NiAgaGFyZGFrZXIKCiAgICogc25tcGxpYi86IHNubXBfYXBpLmMgLCBzbm1wX3NlY21vZC5oOgoKICAgUGFzcyBpbiBwZHUgdG8gc2VjbW9kIGVuY29kZS9kZWNvZGUgcm91dGluZXMuCiAgIAoyMDAxLTAzLTA2IDAzOjM1ICBqYnBuCgogICAqIGFnZW50L21pYmdyb3VwL21pYklJL2ludGVyZmFjZXMuYzoKCiAgIE1vZGlmaWVkIGZ1bmN0aW9uIEludGVyZmFjZV9JbmRleF9CeV9OYW1lIChTb2xhcmlzIHNwZWNpZmljKSB0byBjb3BlIG1vcmUKICAgZ3JhY2VmdWxseSB3aXRoIGxhcmdlIG51bWJlcnMgb2YgaW50ZXJmYWNlcy4gIEFsc28gc3RvcHMgUHVyaWZ5IG9uIFNvbGFyaXMKICAgY29tcGxhaW5pbmcgYWJvdXQgdW5pbml0aWFsaXNlZCBtZW1vcnkgcmVhZHMuCiAgIAoyMDAxLTAzLTA1IDE2OjMzICBoYXJkYWtlcgoKICAgKiBzbm1wbGliL3NubXBfYXBpLmM6CgogICByZXZlcnNlIGNhbGxiYWNrIG9yZGVyaW5nIG9mIG5vcm1hbCBjYWxsYmFjay9zZWNtb2QgY2FsbGJhY2sKICAgcHJvY2Vzc2luZyBpbiBzZXNzX2NvcHkoKS4KICAgCjIwMDEtMDMtMDUgMTY6MjYgIGhhcmRha2VyCgogICAqIHNubXBsaWIvc25tcF9zZWNtb2QuYzoKCiAgIHJlbW92ZSB1bnVzZWQgZnJlZSBmdW5jdGlvbiBjYWxscyBmb3Igc2VjdXJpdHkgbW9kdWxlIHVucmVnaXN0cmF0aW9ucy4KICAgCjIwMDEtMDMtMDUgMTY6MTcgIGhhcmRha2VyCgogICAqIHNubXBsaWIvOiBzbm1wX2FwaS5jICwgc25tcF9zZWNtb2QuaDoKCiAgIG1pbm9yIEFQSSBjaGFuZ2VzIHRvIHRoZSBwbHVnZ2FibGUgc2VjdXJpdHkgbW9kZWwgaGFuZGxpbmcuCiAgIAoyMDAxLTAzLTA1IDE2OjExICBoYXJkYWtlcgoKICAgKiBzbm1wbGliL3NubXBfYXBpLmM6CgogICBwcm9wZXJseSByZXNwZWN0IHRoZSBET05UX1BST0JFX0ZMQUcuCiAgIAoyMDAxLTAzLTA1IDE1OjM2ICBoYXJkYWtlcgoKICAgKiBzbm1wbGliLzogc25tcF9hcGkuYyAsIHNubXBfYXBpLmggLCBzbm1wX3NlY21vZC5oOgoKICAgYWRkIGEgc2Vzc2lvbiBwb2ludGVyIHRvIHRoZSB2MyBidWlsZCByb3V0aW5lcy4KICAgCjIwMDEtMDMtMDUgMTU6MjMgIGhhcmRha2VyCgogICAqIHNubXBsaWIvOiBzbm1wX2FwaS5jICwgc25tcF9hcGkuaDoKCiAgIEFkZCBhIGtyYjUgc3BlY2lmaWMgZXJyb3IgY29kZS4KICAgCjIwMDEtMDMtMDUgMTQ6NTggIGhhcmRha2VyCgogICAqIGNvbmZpZ3VyZSAsIGNvbmZpZ3VyZS5pbjoKCiAgIG1ha2UgY29uZmlndXJlIHByb3Blcmx5IGhhbmRsZSBwbHVnZ2FibGUgc2VjdXJpdHkgbW9kdWxlcwogICAKMjAwMS0wMy0wNSAxNDo0OSAgaGFyZGFrZXIKCiAgICogY29uZmlndXJlICwgY29uZmlndXJlLmluOgoKICAgbWFrZSBjb25maWd1cmUgbWtkaXIgc25tcGxpYiBiZWZvcmUgY3JlYXRpbmcgYSBmaWxlIGluIGl0CiAgIAoyMDAxLTAzLTA1IDE0OjQ0ICBoYXJkYWtlcgoKICAgKiBjb25maWd1cmUgLCBjb25maWd1cmUuaW46CgogICBtYWtlIGNvbmZpZ3VyZSByZXNwZWN0IG5vbi1sb2NhbCBzcmNkaXJzIGZvciB0cmFuc3BvcnQvc2VjbW9kcwogICAKMjAwMS0wMy0wNSAxMDo0MCAgaGFyZGFrZXIKCiAgICogYWNjb25maWcuaCAsIGNvbmZpZy5oLmluICwgY29uZmlndXJlICwKICAgY29uZmlndXJlLmluICwgYWdlbnQvYWdlbnRfaW5kZXguYyAsCiAgIGFnZW50L2FnZW50X3JlYWRfY29uZmlnLmMgLCBhZ2VudC9hZ2VudF9yZWdpc3RyeS5jICwKICAgYWdlbnQvbWliX21vZHVsZXMuYyAsIGFnZW50L3NubXBfdmFycy5jICwKICAgYWdlbnQvc25tcGQuYyAsIGFnZW50L21pYmdyb3VwL2V4YW1wbGVzL3VjZERlbW9QdWJsaWMuYwogICAsIGFnZW50L21pYmdyb3VwL3NubXB2My91c21Vc2VyLmMgLCBhcHBzL3NubXB0cmFwZC5jCiAgICwgc25tcGxpYi8uY3ZzaWdub3JlICwgc25tcGxpYi9NYWtlZmlsZS5pbiAsCiAgIHNubXBsaWIvY2FsbGJhY2suaCAsIHNubXBsaWIvZGVmYXVsdF9zdG9yZS5oICwKICAgc25tcGxpYi9sY2RfdGltZS5jICwgc25tcGxpYi9zY2FwaS5jICwKICAgc25tcGxpYi9zbm1wX2FwaS5jICwgc25tcGxpYi9zbm1wX2FwaS5oICwKICAgc25tcGxpYi9zbm1wdXNtLmMgLCBzbm1wbGliL3NubXB1c20uaCAsCiAgIHNubXBsaWIvc25tcHYzLmM6CgogICBzdXBwb3J0IGZvciBwbHVnZ2FibGUgc2VjdXJpdHkgbW9kZWxzLiAgQ3VycmVudGx5IG9ubHkgdGhlIFVTTSBpcwogICBhdmFpbGFibGUsIGJ1dCBhIG5ldyBrZXJiZXJvcyBiYXNlZCBzZWN1cml0eSBtb2RlbCB3aWxsIGJlIGF2YWlsYWJsZQogICBzaG9ydGx5LiAgVGhlc2UgY2hhbmdlcyBzaW1wbHkgbWFrZSBpdCBwb3NzaWJsZSB0byB1c2UgbW9yZSB0aGFuIG9uZQogICBzZWN1cml0eSBzZXJ2aWNlLgogICAKMjAwMS0wMy0wNSAxMDozNiAgaGFyZGFrZXIKCiAgICogc25tcGxpYi86IHNubXBfc2VjbW9kLmMgLCBzbm1wX3NlY21vZC5oOgoKICAgQWRkZWQgSm9obiBOYXlsb24gdG8gdGhlIGF1dGhvcnMgbGlzdC4KICAgCjIwMDEtMDMtMDUgMTA6MzMgIGhhcmRha2VyCgogICAqIHNubXBsaWIvc25tcF9lbnVtLmg6CgogICBDb21tZW50IHJlLWFycmFuZ2luZyB0byBhY3R1YWxseSBiZSBuZWFyIHRoZSBmdW5jdGlvbnMgdGhleSdyZSBkZXNjcmliaW5nLgogICAKMjAwMS0wMy0wNSAwNjoxMCAgamJwbgoKICAgKiBzbm1wbGliL3N5c3RlbS5jOgoKICAgTW9kaWZpZWQgZ2V0X215YWRkcigpIGZ1bmN0aW9uIHRvIGNvcGUgbW9yZSBncmFjZWZ1bGx5IHdpdGggbGFyZ2UgbnVtYmVycwogICBvZiBpbnRlcmZhY2VzLCBhbmQgd2l0aCB0aGUgcG9zc2liaWxpdHkgb2Ygbm9uLUlQdjQgYWRkcmVzc2VzIG9uIHNvbWUKICAgaW50ZXJmYWNlcy4gIEFsc28gc3RvcHMgUHVyaWZ5IG9uIFNvbGFyaXMgY29tcGxhaW5pbmcgYWJvdXQgdW5pbml0aWFsaXNlZAogICBtZW1vcnkgcmVhZHMuICBVc2UgIm9mZmljaWFsIiBkZWZpbml0aW9uIG9mIElOQUREUl9MT09QQkFDSy4KICAgCjIwMDEtMDMtMDMgMTQ6MzQgIG5iYQoKICAgKiBtaWJzL2lhbmFsaXN0OgoKICAgZmlsZSBpYW5hbGlzdCB3YXMgaW5pdGlhbGx5IGFkZGVkIG9uIGJyYW5jaCBWNC0yLXBhdGNoZXMuCiAgIAoyMDAxLTAzLTAzIDE0OjM0ICBuYmEKCiAgICogbWlicy9yZmNsaXN0OgoKICAgZmlsZSByZmNsaXN0IHdhcyBpbml0aWFsbHkgYWRkZWQgb24gYnJhbmNoIFY0LTItcGF0Y2hlcy4KICAgCjIwMDEtMDMtMDMgMTQ6MzQgIG5iYQoKICAgKiBtaWJzL1JFQURNRS5taWJzOgoKICAgZmlsZSBSRUFETUUubWlicyB3YXMgaW5pdGlhbGx5IGFkZGVkIG9uIGJyYW5jaCBWNC0yLXBhdGNoZXMuCiAgIAoyMDAxLTAzLTAzIDE0OjM0ICBuYmEKCiAgICogbWlicy9yZmNtaWJzLmRpZmY6CgogICBmaWxlIHJmY21pYnMuZGlmZiB3YXMgaW5pdGlhbGx5IGFkZGVkIG9uIGJyYW5jaCBWNC0yLXBhdGNoZXMuCiAgIAoyMDAxLTAzLTAxIDE5OjIzICBoYXJkYWtlcgoKICAgKiBzbm1wbGliLzogYXNuMS5jICwgc25tcF9hcGkuYzoKCiAgIEZpeCBzbm1wX29pZF9jb21wYXJlIGFuZCByZXZlcnNlIGVuY29kaW5ncyB0byBkZWFsIHdpdGggbnVtYmVycyA+IDJeMzEuCiAgIAoyMDAxLTAyLTI4IDIzOjAyICBoYXJkYWtlcgoKICAgKiBzbm1wbGliLzogcmVhZF9jb25maWcuYyAsIHJlYWRfY29uZmlnLmggLAogICBzbm1wX3BhcnNlX2FyZ3MuYzoKCiAgIC0gaW1wbGVtZW50ZWQgc25tcF9jb25maWcoY2hhciAqbGluZSkgdG8gcGFyc2UgYSAuY29uZiBjb25maWd1cmF0aW9uCiAgICAgbGluZSBhdCBhbnkgdGltZSBpbiB0aGUgY29kZSAoaGFuZGxlcnMgbXVzdCBiZSByZWdpc3RlcmVkIGJlZm9yZSBoYW5kKS4KICAgLSBpbXBsZW1lbnRlZCBzbm1wX2NvbmZpZ19yZW1lbWJlcihjaGFyICpsaW5lKSB0byBtZW1vcml6ZSBpdCBmb3IKICAgICBsYXRlciB1c2UuCiAgIC0gcmVhZF9jb25maWdzLCBldCBhbCwgd2lsbCBhdXRvbWF0aWNhbGx5IGNhbGwgdGhlbSBhZnRlciByZWFkaW5nCiAgICAgZXZlcnl0aGluZyBlbHNlLgogICAtIEFkZGVkIGEgLVkgZmxhZyB0byBzbm1wX3BhcnNlX2FyZ3MgdG8gc3RvcmUgcmVhZCBjb25maWcgZGlyZWN0aXZlcwogICAgIGZvciBsYXRlciB1c2UsIHRodXMgYWxsb3dpbmcgeW91IHRvIHNwZWNpZnkgLmNvbmYgZGlyZWN0aXZlcyBvbiB0aGUKICAgICBjb21tYW5kIGxpbmUuCiAgIAoyMDAxLTAyLTI3IDA3OjI4ICBkdHMxMgoKICAgKiBhZ2VudC9zbm1wX3ZhcnMuYzoKCiAgIEF2b2lkIGluZmluaXRlIGxvb3Agd2l0aCBBZ2VudFggc3ViYWdlbnRzIGFuZCBWQUNNIGNoZWNraW5nIGludGVyYWN0aW9uLgogICAoRml4IHByb3ZpZGVkIGJ5IEZyYW5rIFN0cmF1c3MpCiAgIAoyMDAxLTAyLTIxIDE1OjIxICBoYXJkYWtlcgoKICAgKiBzbm1wbGliLzogdWNkLXNubXAtaW5jbHVkZXMuaCAoVjQtMi1wYXRjaGVzLjEpLAogICB1Y2Qtc25tcC1pbmNsdWRlcy5oOgoKICAgQXBwbGllZCBwYXRjaCAjMTAzODA1IGZyb20gYmNvbGxhcjogYWRkIHN5cy90aW1lLmggdG8gdWNkLXNubXAtaW5jbHVkZXMuaAogICAKMjAwMS0wMi0yMSAxNToxNSAgaGFyZGFrZXIKCiAgICogc25tcGxpYi86IGludDY0LmMgKFY0LTItcGF0Y2hlcy4yKSwgaW50NjQuYzoKCiAgIGZpeCBidWcgIzEzMzQxNiAodTY0U3VidHJhY3Rpb24gbWF0aCkgYXMgc3VnZ2VzdGVkIGJ5IHRoZSBzdWJtaXR0b3IKICAgCjIwMDEtMDItMTYgMTU6MTIgIGhhcmRha2VyCgogICAqIGFnZW50LzogdmFyX3N0cnVjdC5oIChWNC0yLXBhdGNoZXMuMSksIHZhcl9zdHJ1Y3QuaDoKCiAgIC0gaW5jcmVhc2UgVUNEX1JFR0lTVFJZX09JRF9NQVhfTEVOIHRvIDEyOCBhdCBGcmFuaydzIHJlcXVlc3QKICAgCjIwMDEtMDItMTYgMDQ6MTYgIGpicG4KCiAgICogY29uZmlndXJlLmluOgoKICAgQ2hhbmdlIGJlaGF2aW91ciBvbiBjeWd3aW4gdG8gZXhjbHVkZSBVbml4IGRvbWFpbiB0cmFuc3BvcnRzIGJ5IGRlZmF1bHQKICAgb24gY3lnd2luLCBhbmQgYWxzbyBmaXggYSBtaW5vciBidWcsIHRoYW5rcyB0byBzdWdnZXN0aW9ucyBieSBQZXRlciBGb2xrLgogICAKMjAwMS0wMi0xNCAxODoxNCAgaGFyZGFrZXIKCiAgICogYXBwcy86IHNubXB0cmFwZC5jIChWNC0yLXBhdGNoZXMuMSksIHNubXB0cmFwZC5jOgoKICAgcmVtb3ZlZCB1bnVzZWQgc25tcF9hbGFybS5oIGluY2x1ZGUKICAgCjIwMDEtMDItMTIgMTQ6MTEgIG1hcnoKCiAgICogcGVybC9TTk1QL1NOTVAucG06CgogICBhZGRlZCBLYXJsJ3MgcGF0Y2ggZm9yIHVzZW51bWVyaWMKICAgCjIwMDEtMDItMTIgMTM6NTQgIG1hcnoKCiAgICogcGVybC9TTk1QLzogTUFOSUZFU1QgLCBTTk1QLnBtICwgU05NUC54cyAsCiAgIGV4YW1wbGVzL3RyYXAtZXhhbXBsZS5wbDoKCiAgIGFkZGVkIHRyYXAgcmVjZXB0aW9uIEFQSSBmcm9tIFBoaWxpcCBQcmluZGV2aWxsZSA8cGhpbGlwcEBjaXNjby5jb20+CiAgIAoyMDAxLTAyLTExIDA4OjIzICBqYnBuCgogICAqIGFwcHMvc25tcHRyYXBkLmM6CgogICBVc2Ugc25tcF9hZGQgbm90IHNubXBfc2Vzc19hZGQgKHRoZSBsYXR0ZXIgZG9lc24ndCBhZGQgYSBzZXNzaW9uIHRvCiAgIHRoZSBTZXNzaW9uIGxpc3QsIGFuZCBpdCB0aGVyZWZvcmUgd29uJ3QgZ2V0IGluY2x1ZGVkIGluIHRoZSBzZWxlY3QoKQogICBmZHNldCwgaGVuY2Ugc25tcHRyYXBkIHdpbGwgbmV2ZXIgcmVjZWl2ZSB2ZXJ5IG11Y2gpLgogICAKMjAwMS0wMi0xMSAwODoyMCAgamJwbgoKICAgKiBzbm1wbGliL3NubXBVRFBEb21haW4uYzoKCiAgIEZpeCBpbXByb3Blcmx5LXRlcm1pbmF0ZWQgbGlzdCBpbiBjb20yc2VjIGhhbmRsaW5nLgogICAKMjAwMS0wMi0xMSAwNzo0NSAgamJwbgoKICAgKiBhZ2VudC9zbm1wZC5jOgoKICAgQ2xlYW4gdXAgbWVyZ2UgKD4+Pj4+PiwgPT09PT09IGV0Yy4gbGVmdCBiZWhpbmQpLgogICAKMjAwMS0wMi0xMCAwOToyNiAgamJwbgoKICAgKiBjb25maWd1cmUuaW46CgogICBGaXggdHlwby4KICAgCjIwMDEtMDItMTAgMDk6MTEgIGpicG4KCiAgICogYWdlbnQvbWliZ3JvdXAvYWdlbnR4LzogbWFzdGVyLmMgLCBtYXN0ZXJfYWRtaW4uYyAsCiAgIHN1YmFnZW50LmM6CgogICBNZW1vcnkgbGVhayBwYXRjaGVzIChzb3VyY2Vmb3JnZSBwYXRjaCAjMTAzNjA1KS4KICAgUmVtb3ZlIGEgZmV3IHN0cmR1cCgpcywgYW5kIGNhbGwgZnJlZV9hZ2VudF9zbm1wX3Nlc3Npb24oKSByYXRoZXIgdGhhbgogICBmcmVlKCkgaW4gc3ViYWdlbnQuYzpoYW5kbGVfYWdlbnR4X3BhY2tldCgpIGZvciBBR0VOVFhfTVNHX1JFU1BPTlNFCiAgIGFuZCBkZWZhdWx0IGNhc2VzLCB0byBlbnN1cmUgZnJlZSgpaW5nIG9mIGNsb25lZCBQRFUgYWxsb2NhdGVkIGJ5CiAgIGluaXRfYWdlbnRfc25tcF9zZXNzaW9uLgogICAKMjAwMS0wMi0xMCAwNzoyOCAgaGFyZGFrZXIKCiAgICogc25tcGxpYi86IHNubXBBQUw1UFZDRG9tYWluLmMgLCBzbm1wQUFMNVBWQ0RvbWFpbi5oICwKICAgc25tcElQWERvbWFpbi5jICwgc25tcElQWERvbWFpbi5oICwgc25tcFRDUERvbWFpbi5jCiAgICwgc25tcFRDUERvbWFpbi5oICwgc25tcFVEUERvbWFpbi5jICwKICAgc25tcFVEUERvbWFpbi5oICwgc25tcFVuaXhEb21haW4uYyAsIHNubXBVbml4RG9tYWluLmgKICAgLCBzbm1wX3RyYW5zcG9ydC5jICwgc25tcF90cmFuc3BvcnQuaDoKCiAgIFdob29wcy4gIEZvcmdvdCB0aGUgbmV3IGZpbGVzIGFzc29jaWF0ZWQgd2l0aCB0aGUgcGx1Z2dhYmxlIHRyYW5zcG9ydCBzdHVmZi4KICAgCjIwMDEtMDItMDkgMTE6MjIgIGhhcmRha2VyCgogICAqIGFnZW50L21pYmdyb3VwL2Rpc21hbi86IGV2ZW50LW1pYi5oICwgbXRlT2JqZWN0c1RhYmxlLmMKICAgLCBtdGVPYmplY3RzVGFibGUuaCAsIG10ZVRyaWdnZXJCb29sZWFuVGFibGUuYyAsCiAgIG10ZVRyaWdnZXJFeGlzdGVuY2VUYWJsZS5jICwgbXRlVHJpZ2dlclRhYmxlLmMgLAogICBtdGVUcmlnZ2VyVGFibGUuaCAsIG10ZVRyaWdnZXJUaHJlc2hvbGRUYWJsZS5jOgoKICAgSW1wbGVtZW50ZWQgYW5kIG1hZGUgdXNlIG9mIG10ZU9iamVjdHNUYWJsZSB0byBzZW5kIGFkZGl0aW9uYWwgb2JqZWN0cyBvdXQgd2l0aCB0cmFwcyBnZW5lcmF0ZWQuICBBbHNvLCBkb24ndCByZXR1cm4gZGF0YSBmb3IgbWlzYyB0YWJsZXMgd2hlbiB0aGF0IHRyaWdnZXIgaXNuJ3QgZGVmaW5lZCB0byB1c2UgdGhhdCB0ZXN0IHR5cGUuCiAgIAoyMDAxLTAyLTA5IDExOjE2ICBoYXJkYWtlcgoKICAgKiBhZ2VudC86IHNubXBkLmMgKFY0LTItcGF0Y2hlcy4yKSwgc25tcGQuYzoKCiAgIEFwcGxpZWQgcGF0Y2ggIzEwMzYxMzogZml4IG1lbW9yeSBsZWFrIGluIHNubXBkIHBvcnQgc3BlY2lmaWNhdGlvbiAtPiBkZWZhdWx0X3N0b3JlLgogICAKMjAwMS0wMi0wOSAxMToxNCAgaGFyZGFrZXIKCiAgICogYWdlbnQvOiBtaWJfbW9kdWxlcy5jIChWNC0yLXBhdGNoZXMuMiksIG1pYl9tb2R1bGVzLmM6CgogICBBcHBsaWVkIHBhdGNoICMxMDM2MTI6IGZpeCBtZW1vcnkgbGVhayBpbiBtaWJfbW9kdWxlIGluaXQgY29kZQogICAKMjAwMS0wMi0wOSAxMToxMiAgaGFyZGFrZXIKCiAgICogYWdlbnQvOiBhZ2VudF9yZWdpc3RyeS5jIChWNC0yLXBhdGNoZXMuMSksIGFnZW50X3JlZ2lzdHJ5LmM6CgogICBBcHBsaWVkIHBhdGNoICMxMDM2MTE6IGZpeCBtZW1vcnkgbGVhayBmb3IgZHVwbGljYXRlIG9pZCByZWdpc3RyYXRpb25zLgogICAKMjAwMS0wMi0wOSAxMTowNSAgaGFyZGFrZXIKCiAgICogYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvOiBtZW1vcnlfZnJlZWJzZDIuYywgcHJveHkuYwogICAoVjQtMi1wYXRjaGVzLlsxLDRdKSwgbWVtb3J5X2ZyZWVic2QyLmM6CgogICBBcHBsaWVkIHBhdGNoICMxMDM3MDI6IGZpeCBzd2FwIHJlcG9ydGluZyBvbiBmcmVlYnNkIDQuMgogICAKMjAwMS0wMi0wOSAxMDoxMiAgaGFyZGFrZXIKCiAgICogYWNjb25maWcuaCAsIGNvbmZpZy5oLmluICwgY29uZmlndXJlICwKICAgY29uZmlndXJlLmluICwgYWdlbnQvYWdlbnRfdHJhcC5jICwgYWdlbnQvc25tcF9hZ2VudC5jCiAgICwgYWdlbnQvc25tcF9hZ2VudC5oICwgYWdlbnQvc25tcF92YXJzLmMgLAogICBhZ2VudC9zbm1wZC5jICwgYWdlbnQvbWliZ3JvdXAvbWliSUkvdmFjbV92YXJzLmMgLAogICBhcHBzL3NubXBzdGF0dXMuYyAsIGFwcHMvc25tcHRlc3QuYyAsIGFwcHMvc25tcHRyYXAuYwogICAsIGFwcHMvc25tcHRyYXBkLmMgLCBhcHBzL3NubXB0cmFwZF9sb2cuYyAsCiAgIGFwcHMvc25tcHRyYXBkX2xvZy5oICwgbWlicy9VQ0QtU05NUC1NSUIudHh0ICwKICAgc25tcGxpYi9NYWtlZmlsZS5pbiAsIHNubXBsaWIvc25tcF9hbGFybS5jICwKICAgc25tcGxpYi9zbm1wX2FsYXJtLmggLCBzbm1wbGliL3NubXBfYXBpLmMgLAogICBzbm1wbGliL3NubXBfYXBpLmggLCBzbm1wbGliL3NubXBfY2xpZW50LmMgLAogICBzbm1wbGliL3ZhY20uaDoKCiAgIEFwcGxpZWQgcGF0Y2ggMTAzNTEwOiBkb21haW4gdHJhbnNwb3J0IGluZGVwZW5kZW5jZS4gIE5vdGU6IFRyYXBzL1ZBQ00gYnJva2VuLgogICAKMjAwMS0wMi0wOSAwODo1NCAgaGFyZGFrZXIKCiAgICogdGVzdGluZy90ZXN0cy86IFQwMDFzbm1wdjFnZXQgLCBUMDAyc25tcHYxZ2V0bmV4dCAsCiAgIFQwMDNzbm1wdjFnZXRmYWlsICwgVDAxNHNubXB2MmNnZXQgLCBUMDE1c25tcHYyY2dldG5leHQKICAgLCBUMDE2c25tcHYyY2dldGZhaWwgLCBUMDE3c25tcHYyY3RvdjFnZXRmYWlsICwKICAgVDAxOHNubXB2MXRvdjJjZ2V0ZmFpbCAsIFQwMjBzbm1wdjNnZXQgLAogICBUMDIxc25tcHYzZ2V0bmV4dCAsIFQwMjJzbm1wdjNnZXRNRDUgLAogICBUMDIzc25tcHYzZ2V0TUQ1REVTICwgVDAyNHNubXB2M2dldFNIQTEgLAogICBUMDI1c25tcHYzZ2V0U0hBREVTICwgVDAyOHNubXB2M2dldGZhaWwgLAogICBUMDMwc25tcHYzdXNlcmNyZWF0aW9uICwgVDA1M2FnZW50djF0cmFwICwKICAgVDA1NGFnZW50djJjdHJhcCAsIFQwNTVhZ2VudHYxbWludHJhcCAsCiAgIFQwNTZhZ2VudHYyY21pbnRyYXAgLCBUMDU4YWdlbnRhdXRodHJhcCAsIFQxMDBhZ2VudGh1cAogICAsIFQxMTBhZ2VudHhnZXQgLCBUMTExYWdlbnR4c2V0ICwgVDExMmFnZW50eHNldGZhaWwKICAgLCBUMTEzYWdlbnR4dHJhcCAsIFQxMjBwcm94eWdldCAsIFQxMjFwcm94eXNldAogICAsIFQxMjJwcm94eXNldGZhaWw6CgogICB1cGRhdGVkIG1vc3QgdGVzdHMgdG8gdXNlIG51bWVyaWMgT0lEcyBzbyBhcyB0byBub3QgcmVseSBvbiBtaWIgcGFyc2luZwogICAKMjAwMS0wMi0wOSAwNzoxOCAgaGFyZGFrZXIKCiAgICogYWdlbnQvbWliZ3JvdXAvYWdlbnR4L21hc3Rlci5oOgoKICAgcmVtb3ZlIHVudXNlZCBwcm90b3R5cGU6IGdldF9hZ2VudHhfdHJhbnNJRAogICAKMjAwMS0wMi0wOCAxNDoxNSAgaGFyZGFrZXIKCiAgICogbG9jYWwvTWFrZWZpbGUuaW4gLCBsb2NhbC90cmFwdG9lbWFpbCAsCiAgIG1hbi9zbm1wdHJhcGQuY29uZi41LmRlZjoKCiAgIHRyYXB0b2VtYWlsIHBlcmwgc2NyaXB0IGNyZWF0ZWQgYXMgYW4gZXhhbXBsZSB0cmFwaGFuZGxlIHNjcmlwdAogICAKMjAwMS0wMi0wOCAxNDowMSAgaGFyZGFrZXIKCiAgICogTWFrZWZpbGUuaW4gLCBhY2NvbmZpZy5oICwgY29uZmlnLmguaW4gLAogICBhZ2VudC9NYWtlZmlsZS5pbiAsIGFnZW50L2FnZW50X3RyYXAuYyAsCiAgIGFnZW50L21pYl9tb2R1bGVzLmMgLCBhZ2VudC9zbm1wZC5jICwKICAgYWdlbnQvbWliZ3JvdXAva2VybmVsX3N1bm9zNS5jICwKICAgYWdlbnQvbWliZ3JvdXAvYWdlbnR4L2NsaWVudC5jICwKICAgYWdlbnQvbWliZ3JvdXAvYWdlbnR4L21hc3Rlci5jICwKICAgYWdlbnQvbWliZ3JvdXAvYWdlbnR4L21hc3Rlcl9hZG1pbi5jICwKICAgYWdlbnQvbWliZ3JvdXAvYWdlbnR4L21hc3Rlcl9hZG1pbi5oICwKICAgYWdlbnQvbWliZ3JvdXAvYWdlbnR4L21hc3Rlcl9yZXF1ZXN0LmMgLAogICBhZ2VudC9taWJncm91cC9hZ2VudHgvcHJvdG9jb2wuYyAsCiAgIGFnZW50L21pYmdyb3VwL2FnZW50eC9zdWJhZ2VudC5jICwKICAgYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9wcmludC5jICwKICAgYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9zd3J1bi5jICwKICAgYWdlbnQvbWliZ3JvdXAvbWliSUkvaW50ZXJmYWNlcy5jICwKICAgYWdlbnQvbWliZ3JvdXAvbWliSUkvdmFyX3JvdXRlLmMgLAogICBhZ2VudC9taWJncm91cC9ub3RpZmljYXRpb24vc25tcE5vdGlmeVRhYmxlLmMgLAogICBhZ2VudC9taWJncm91cC9zbXV4L3NtdXguYyAsCiAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL2xvYWRhdmUuYyAsCiAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Byb3h5LmMgLAogICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC92bXN0YXQuaCAsCiAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Ztc3RhdF9ic2RpNC5jICwKICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvdm1zdGF0X2JzZGk0LmggLAogICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC92bXN0YXRfZnJlZWJzZDIuYyAsCiAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Ztc3RhdF9mcmVlYnNkMi5oICwKICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvdm1zdGF0X25ldGJzZDEuYyAsCiAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Ztc3RhdF9uZXRic2QxLmggLAogICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC92bXN0YXRfc29sYXJpczIuYyAsCiAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Ztc3RhdF9zb2xhcmlzMi5oICwgYXBwcy9zbm1wZGVsdGEuYwogICAsIGFwcHMvc25tcHNldC5jICwgYXBwcy9zbm1wdHJhcC5jICwKICAgYXBwcy9zbm1wdmFjbS5jICwgYXBwcy9zbm1wbmV0c3RhdC9NYWtlZmlsZS5pbiAsCiAgIGxvY2FsL21pYjJjICwgbWFuL3NubXBjbWQuMSAsIG1pYnMvUk1PTi1NSUIudHh0ICwKICAgbWlicy9VQ0QtU05NUC1NSUIudHh0ICwgcGVybC9TTk1QL1NOTVAucG0gLAogICBzbm1wbGliL2ludDY0LmMgLCBzbm1wbGliL3BhcnNlLmMgLCBzbm1wbGliL3NubXBfYXBpLmM6CgogICBNZXJnZSBmcm9tIFY0LTItcGF0Y2hlczogbWVyZ2UgMS0+MgogICAKMjAwMS0wMS0zMCAxNzoxMyAgaGFyZGFrZXIKCiAgICogYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvOiBkaXNrLmMgKFY0LTItcGF0Y2hlcy4xKSwgZGlzay5jOgoKICAgQXBwbGllZCBwYXRjaCAjMTAzNDE0OiBmaXggZGlzayBpbmZvIGZvciBibG9jayBzaXplcyBvdGhlciB0aGFuIDEwMjQuCiAgIAoyMDAxLTAxLTMwIDEzOjI4ICBoYXJkYWtlcgoKICAgKiBhZ2VudC9taWJncm91cC9kaXNtYW4vbXRlVHJpZ2dlclRhYmxlLmM6CgogICB1c2Ugc25tcF9lbnVtJ3MgcHJvcGVybHkgKHN0cmR1cCgpIHRoZSBzdHJpbmdzIGZpcnN0KQogICAKMjAwMS0wMS0zMCAxMzoyOCAgaGFyZGFrZXIKCiAgICogc25tcGxpYi86IHNubXBfZW51bS5jICwgc25tcF9lbnVtLmg6CgogICBwcm9wZXIgY29uc3RuZXNzIGZvciBzb21lIG9mIHRoZSBmdW5jdGlvbiBhcmd1bWVudHMuCiAgIAoyMDAxLTAxLTMwIDEzOjI3ICBoYXJkYWtlcgoKICAgKiBzbm1wbGliL3JlYWRfY29uZmlnLmM6CgogICBmaXggYnVnIEkganVzdCBpbnRyb2R1Y2VkIChyZXR1cm5pbmcgcHJvcGVyIHNhdmV0byBwb2ludGVyKQogICAKMjAwMS0wMS0zMCAxMzoxNyAgaGFyZGFrZXIKCiAgICogbG9jYWwvdGttaWI6CgogICAtIHNubXBzZXRzIGFyZSBzdXBwb3J0ZWQKICAgICAtIEEgbmV3ICJzZXQiIGJ1dHRvbiBoYXMgYmVlbiBhZGRlZCB0byBwZXJmb3JtIHNldHMgb24gYW4gb2lkLgogICAgIC0gQWxsIHdyaXRhYmxlIG9iamVjdHMgaW4gYSB0YWJsZSBhcmUgbm93IGJ1dHRvbnMgdGhhdCBicmluZyB1cCB0aGUKICAgICAgIHNldCB3aW5kb3cgd2l0aCB0aGUgY3VycmVudCB2YWx1ZSBpbnN0YXRlZC4KICAgICAtIEFsbCB3cml0YWJsZSBvYmplY3RzIGluIHRoZSBvdXRwdXQgb2Ygc25tcHtnZXQsd2FsayxnZXRuZXh0fQogICAgICAgYnV0dG9ucyBhcmUgZGlzcGxheWVkIGFzIGJsdWUgYW5kIGFyZSBjbGlja2FibGUgdG8gY2hhbmdlIHRoZWlyCiAgICAgICB2YWx1ZXMuCiAgIC0gc2V0dGluZ3MgY29uZmlndXJlZCB2aWEgdGhlIG9wdGlvbnMgbWVudSBjYW4gbm93IGJlIHNhdmVkLgogICAtIHVzZSBHZXRvcHQ6OlN0ZCBub3cuCiAgIC0gc3VwcG9ydHMgbW9zdCBvZiB0aGUgaW1wb3J0YW50IHNubXBjbWQoMSkgZmxhZ3MgZm9yIHNlc3Npb24gc2V0dXAuCiAgIAoyMDAxLTAxLTMwIDEzOjEyICBoYXJkYWtlcgoKICAgKiBhZ2VudC9taWJncm91cC9kaXNtYW4vOiBldmVudC1taWIuaCAsCiAgIG10ZVRyaWdnZXJCb29sZWFuVGFibGUuYyAsIG10ZVRyaWdnZXJCb29sZWFuVGFibGUuaCAsCiAgIG10ZVRyaWdnZXJEZWx0YVRhYmxlLmMgLCBtdGVUcmlnZ2VyRGVsdGFUYWJsZS5oICwKICAgbXRlVHJpZ2dlckV4aXN0ZW5jZVRhYmxlLmMgLCBtdGVUcmlnZ2VyRXhpc3RlbmNlVGFibGUuaCAsCiAgIG10ZVRyaWdnZXJUYWJsZS5jICwgbXRlVHJpZ2dlclRhYmxlLmggLAogICBtdGVUcmlnZ2VyVGhyZXNob2xkVGFibGUuYyAsIG10ZVRyaWdnZXJUaHJlc2hvbGRUYWJsZS5oOgoKICAgSW5pdGlhbCAobm90LWNvbXBsZXRlKSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgRElTTUFOLUVWRU5ULU1JQjoKICAgICAtIEltcGxlbWVudHMgYWxsIDMgdGVzdHMgKGJvb2xlYW4sIHRocmVzaG9sZCBhbmQgZXhpc3RlbmNlKS4KICAgICAtIG5vdCByaWdvcm91c2x5IHRlc3RlZC4KICAgICAtIEN1cnJlbnRseSBvbmx5IHN1cHBvcnRzIHF1ZXJ5aW5nIHRoZSBsb2NhbCBhZ2VudAogICAgICAgKG10ZVRyaWdnZXJUYXJnZXRUYWcgbXVzdCBiZSAnJykuCiAgICAgLSBDdXJyZW50bHkgb25seSBzdXBwb3J0cyBzZW5kaW5nIHRyYXBzIGFuZCB0aGUgbXRlT2JqZWN0c1RhYmxlIGlzCiAgICAgICBub3QgaW1wbGVtZW50ZWQgKG15IG5leHQgdG9kbyBpdGVtKQogICAgIC0gT25seSB0aGUgZGVmYXVsdCB0cmFwcyBhcmUgc2VudC4gIFRoZSBtdGVFdmVudCogb2JqZWN0cyBoYXZlbid0CiAgICAgICBiZWVuIGltcGxlbWVudGVkIChubyBzZWxmLWRlZmluZWQgdHJhcHMvc2V0cykuCiAgICAgLSBubyBlYXN5IHRvIHVzZSBjb25maWd1cmF0aW9uIHlldCAoc29vbikuCiAgICAgLSBjb25maWd1cmUgd2l0aCAtLXdpdGgtbWliLW1vZHVsZXM9ZGlzbWFuL2V2ZW50LW1pYgogICAKMjAwMS0wMS0zMCAxMzowMyAgaGFyZGFrZXIKCiAgICogc25tcGxpYi9yZWFkX2NvbmZpZy5jOgoKICAgVXNlIG1lbWNweSBpbnN0ZWFkIG9mIHNwcmludGYgZm9yIHN0cmluZ3MgdGhhdCBtYXkgbm90IGJlIG51bGwgdGVybWluYXRlZC4KICAgCjIwMDEtMDEtMzAgMTI6NTggIGhhcmRha2VyCgogICAqIGFnZW50Lzogc25tcF9hZ2VudC5jICwgc25tcF9hZ2VudC5oOgoKICAgSW1wbGVtZW50ZWQgZ2V0X2N1cnJlbnRfYWdlbnRfc2Vzc2lvbigpIGFuZCBzZXRfY3VycmVudF9hZ2VudF9zZXNzaW9uKCk6CiAgICAgLSBUaGVzZSBhbGxvdyBhIG1pYiBtb2R1bGUgdG8gcmV0cmlldmUgdGhlIGN1cnJlbnQKICAgICAgIGFnZW50X3NubXBfc2Vzc2lvbiBwb2ludGVyIGZvciB0aGUgY3VycmVudCB0cmFuc2FjdGlvbi4KICAgICAtIFRoaXMgc2hvdWxkIHByb2JhYmx5IGRvbmUgZGlmZmVyZW50bHkgbGF0ZXIgd2hlbiB3ZSBjaGFuZ2UgdGhlIG1pYgogICAgICAgbW9kdWxlIGFwaS4KICAgICAtIFRoaXMgd2lsbCBjb21wbGV0ZWx5IGZhaWwgdG8gd29yayBwcm9wZXJseSBpbiBhIG11bHRpLXRocmVhZGVkCiAgICAgICBhZ2VudCAod2hpY2ggd2UgY3VycmVudGx5IGRvbid0IHN1cHBvcnQgYW55d2F5KS4KICAgCjIwMDEtMDEtMjkgMTE6NTggIGhhcmRha2VyCgogICAqIHNubXBsaWIvY2FsbGJhY2suYzoKCiAgIGRlYnVnZ2luZyBzdGF0ZW1lbnQgYXQgaW5pdGlhbGl6YXRpb24gdGltZS4KICAgCjIwMDEtMDEtMjkgMTE6NTggIGhhcmRha2VyCgogICAqIHNubXBsaWIvcmVhZF9jb25maWcuYzoKCiAgIHByb3Blcmx5IG1hbGxvYyBhIDEgYnl0ZSwgTlVMTCBjaGFyYWN0ZXIgc3RyaW5nIGZvciAiIiByZWFkIHN0cmluZ3MuCiAgIAoyMDAxLTAxLTI5IDExOjU0ICBoYXJkYWtlcgoKICAgKiBhZ2VudC9taWJncm91cC86IGhlYWRlcl9jb21wbGV4LmMgLCBoZWFkZXJfY29tcGxleC5oOgoKICAgZGF0YSBzZXBlcmF0aW9uIGFuZCBuZXcgZnVuY3Rpb25zOgogICAgIGhlYWRlcl9jb21wbGV4X2dldF9mcm9tX29pZCgpCiAgICAgaGVhZGVyX2NvbXBsZXhfYWRkX2RhdGFfYnlfb2lkKCkKICAgCjIwMDEtMDEtMTIgMDg6MjIgIGhhcmRha2VyCgogICAqIG1pYnMvRElTTUFOLUVWRU5ULU1JQi50eHQ6CgogICAtIERJU01BTi1FVkVOVC1NSUIgYWRkZWQgdG8gbWliIHJlcG9zaXRvcnkuIChPciwgZ3Vlc3Mgd2hhdCBJIGRpZCBkdXJpbmcgYSA2IGhvdXIgcGxhbmUgZmxpZ2h0PykKICAgCjIwMDEtMDEtMTIgMDg6MTYgIGhhcmRha2VyCgogICAqIHBlcmwvU05NUC9TTk1QLnhzOgoKICAgc3VwcG9ydCBiaXQgc3RyaW5ncwogICAKMjAwMS0wMS0xMiAwODowMCAgaGFyZGFrZXIKCiAgICogc25tcGxpYi86IHNubXBfYXBpLmMgKFY0LTItcGF0Y2hlcy41KSwgc25tcF9hcGkuYzoKCiAgIC0gYml0X3N0cmluZyBmaXhlcwogICAtIG1ha2Ugc25tcF9hZGRfdmFyIGNhbGwgc25tcF9wYXJzZV9vaWQoKSBpbnN0ZWFkIG9mIHJlYWRfb2JqaWQoKS4KICAgCjIwMDEtMDEtMTIgMDc6NTggIGhhcmRha2VyCgogICAqIHNubXBsaWIvcmVhZF9jb25maWcuYzoKCiAgIC0gbmV3IGRhdGEgdHlwZXMgc3VwcG9ydGVkIGZvciByZWFkX2NvbmZpZyByb3V0aW5lczogdW5zaWduZWQsIGJpdF9zdHIuCiAgIAoyMDAxLTAxLTEyIDA3OjU2ICBoYXJkYWtlcgoKICAgKiBzbm1wbGliLzogYXNuMS5jIChWNC0yLXBhdGNoZXMuMyksIGFzbjEuYzoKCiAgIGNvbW1lbnQgb3V0IHJlYWxseSBvZGQgKGFuZCBicm9rZW4pIGNoZWNrIGZyb20gYXNuX2JpdHN0cmluZ19jaGVjaz8/PwogICAKMjAwMS0wMS0xMiAwNzo1MyAgaGFyZGFrZXIKCiAgICogYWdlbnQvbWliZ3JvdXAvYWdlbnR4L3N1YmFnZW50LmM6CgogICBtb3ZlIGNvbmZpZyBzdHJpbmcgaW5pdGlhbGl6ZXIgYWJvdmUgc3ViYWdlbnQgY2hlY2sgc28gaXRzIGtub3duIGV2ZW4KICAgaWYgbm90IHVzZWQuCiAgIAoyMDAxLTAxLTEyIDA3OjUxICBoYXJkYWtlcgoKICAgKiBsb2NhbC86IG1pYjJjLnN0b3JhZ2UuY29uZiwgbWliMmMudmFydHlwZXMuY29uZgogICAoVjQtMi1wYXRjaGVzLlsxLDFdKSwgbWliMmMuc3RvcmFnZS5jb25mICwKICAgbWliMmMudmFydHlwZXMuY29uZjoKCiAgIC0gbWlzYyBidWcgZml4ZXMuCiAgIC0gbmV3IGRhdGEgdHlwZXMgKHVpbnQzMiwgdW5zaWduZWQsIGJpdHMpLgogICAKMjAwMS0wMS0wOSAxNzowOCAgaGFyZGFrZXIKCiAgICogYWdlbnQvOiBhZ2VudF9yZWdpc3RyeS5jICwgYWdlbnRfcmVnaXN0cnkuaCAsCiAgIGRzX2FnZW50LmggLCB2YXJfc3RydWN0LmggLCBtaWJncm91cC9taWJpbmNsLmggLAogICBtaWJncm91cC9hZ2VudHgvY2xpZW50LmMgLCBtaWJncm91cC9hZ2VudHgvbWFzdGVyX2FkbWluLmMKICAgLCBtaWJncm91cC9hZ2VudHgvbWFzdGVyX3JlcXVlc3QuYyAsCiAgIG1pYmdyb3VwL2FnZW50eC9zdWJhZ2VudC5jICwgbWliZ3JvdXAvYWdlbnR4L3N1YmFnZW50Lmg6CgogICBTdWJBZ2VudCBwaW5nIHN1cHBvcnQ6CiAgICAgLSBhZ2VudHhQaW5nSW50ZXJ2YWwgc3BlY2lmaWVzIFNFQ09ORFMgYmV0d2VlbiB3aGVuIHRoZSBzdWJhZ2VudAogICAgICAgdHJpZXMgdG8gcGluZyB0aGUgbWFzdGVyIGFnZW50LgogICAgIC0gaWYgbm8gcmVzcG9uc2UgaXMgcmVjZWl2ZWQsIGl0IHRyaWVzIHRvIHJlY29ubmVjdC4KICAgICAtIGZhaWxpbmcgdGhhdCBpdCB0cmllcyBldmVyeSBTRUNPTkRTIGFnYWluIHRpbGwgaXQgc3VjY2VlZHMuCiAgICAgLSByZS1yZWdpc3RlcnMgaXRzIG9pZCdzIGJhc2VkIG9uIHRoZSBjdXJyZW50IHN1YnRyZWUgbGlzdC4KICAgICAgIC0gbWF5IG5lZWQgc29tZSB0aG91Z2h0LiAgQXNzdW1lcyAqYWxsKiBuZWVkIHRvIGJlIHJlLXJlZ2lzdGVyZWQuCiAgICAgICAtIG5lZWRzIHRvIHJlLXJlZ2lzdGVyIHN5c29ydGFibGUgZW50cmllcyB0b28sIGJ1dCBkb2Vzbid0LgogICAgIC0gY3VycmVudGx5IHNlZy1mYXVsdHMgb24gYWJvdXQgdGhlIDItNHRoIHRpbWUgb3Igc28uICBOb3Qgc3VyZSB3aHkuCiAgICAgLSBTaG91bGQgbWFrZSBEYXZlIHNtaWxlIG9yIGNyaW5nZSBvciBnaWdnbGUsIG5vdCBzdXJlIHdoaWNoLgogICAKMjAwMS0wMS0wOSAxNzowMiAgaGFyZGFrZXIKCiAgICogc25tcGxpYi86IGNhbGxiYWNrLmMgLCBjYWxsYmFjay5oOgoKICAgQWxsb3cgZGVyZWdpc3RlcmluZyBvZiBjYWxsYmFja3MKICAgCjIwMDEtMDEtMDkgMDY6MjAgIGhhcmRha2VyCgogICAqIHdpbjMyL3NubXBuZXRzdGF0Lzogc25tcG5ldHN0YXQuZHNwIChWNC0yLXBhdGNoZXMuMSksCiAgIHNubXBuZXRzdGF0LmRzcDoKCiAgIGFkZGVkIGdldG9wdC5jIHRvIGxpc3QKICAgCjIwMDEtMDEtMDQgMTY6NDQgIGhhcmRha2VyCgogICAqIHNubXBsaWIvOiBzbm1wX2VudW0uYyAsIHNubXBfZW51bS5oOgoKICAgLSBnZW5lcmljIHNubXAgZW51bSBsaXN0IHN1cHBvcnQuICBOb3QgdXNlZCBhbnl3aGVyZSAoeWV0KS4KICAgCjIwMDEtMDEtMDQgMTY6NDMgIGhhcmRha2VyCgogICAqIGNvbmZpZ3VyZSAsIGNvbmZpZ3VyZS5pbiAsIGFnZW50L2FnZW50X2NhbGxiYWNrcy5oCiAgICwgYWdlbnQvYWdlbnRfdHJhcC5jICwgYWdlbnQvYWdlbnRfdHJhcC5oICwKICAgYWdlbnQvbWliZ3JvdXAvZXhhbXBsZXMvZXhhbXBsZS5jICwKICAgYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9zd3J1bi5jICwKICAgYWdlbnQvbWliZ3JvdXAvbWliSUkvaW50ZXJmYWNlcy5jICwKICAgYWdlbnQvbWliZ3JvdXAvbm90aWZpY2F0aW9uL3NubXBOb3RpZnlUYWJsZS5jICwKICAgYWdlbnQvbWliZ3JvdXAvbm90aWZpY2F0aW9uL3NubXBOb3RpZnlUYWJsZS5oICwKICAgYXBwcy9zbm1wbmV0c3RhdC9tYWluLmMgLCBzbm1wbGliL01ha2VmaWxlLmluICwKICAgc25tcGxpYi9hc24xLmMgLCBzbm1wbGliL2NhbGxiYWNrLmMgLAogICBzbm1wbGliL2NhbGxiYWNrLmggLCBzbm1wbGliL21pYi5jICwKICAgc25tcGxpYi9zbm1wX2FwaS5jICwgc25tcGxpYi9zbm1wX2xvZ2dpbmcuYyAsCiAgIHRlc3RpbmcvdGVzdHMvVDA1M2FnZW50djF0cmFwICwgdGVzdGluZy90ZXN0cy9UMDU0YWdlbnR2MmN0cmFwCiAgICwgdGVzdGluZy90ZXN0cy9UMDU1YWdlbnR2MW1pbnRyYXAgLAogICB0ZXN0aW5nL3Rlc3RzL1QwNTZhZ2VudHYyY21pbnRyYXAgLAogICB0ZXN0aW5nL3Rlc3RzL1QxMTNhZ2VudHh0cmFwOgoKICAgLSBtZXJnZWQgcGF0Y2hlcyBmcm9tIFY0LTItcGF0Y2hlcyBicmFuY2ggdG8gbWFpbiBicmFuY2guCiAgIAoyMDAxLTAxLTA0IDEwOjM3ICBoYXJkYWtlcgoKICAgKiBtYW4vc25tcC5jb25mLjUuZGVmICwgbWFuL3NubXBjbWQuMSAsIHNubXBsaWIvbWliLmM6CgogICAtIGFkZGVkIG5ldyBwcmludEhleFRleHQgc25tcC5jb25mIHRva2VuLgogICAtIGRvY3VtZW50ZWQgLU9ULCBhbmQgdGhlIHRva2VuLgogICAKMjAwMS0wMS0wNCAxMDoyNyAgaGFyZGFrZXIKCiAgICogc25tcGxpYi86IGRlZmF1bHRfc3RvcmUuaCAsIG1pYi5jOgoKICAgUGF0Y2ggIzEwMzA5MSBhcHBsaWVkOgogICAgIC0gQWRkZWQgLU9UIG9wdGlvbiB0byB2aWV3IGhleCBzdHJpbmdzIHdpdGggdGV4dCBpbiB0aGVtLgogICAKMjAwMC0xMi0yNyAxNjo0NyAgaGFyZGFrZXIKCiAgICogdGVzdGluZy90ZXN0cy9UMDU2YWdlbnR2MmNtaW50cmFwOgoKICAgZmlsZSBUMDU2YWdlbnR2MmNtaW50cmFwIHdhcyBpbml0aWFsbHkgYWRkZWQgb24gYnJhbmNoIFY0LTItcGF0Y2hlcy4KICAgCjIwMDAtMTItMjcgMTY6NDcgIGhhcmRha2VyCgogICAqIHRlc3RpbmcvdGVzdHMvVDA1NWFnZW50djFtaW50cmFwOgoKICAgZmlsZSBUMDU1YWdlbnR2MW1pbnRyYXAgd2FzIGluaXRpYWxseSBhZGRlZCBvbiBicmFuY2ggVjQtMi1wYXRjaGVzLgogICAKMjAwMC0xMi0yMiAwNzowMiAgaGFyZGFrZXIKCiAgICogc25tcGxpYi92YWNtLmM6CgogICBmaXggdmlldyBwcm9jZXNzaW5nIHRvIHdhdGNoIGZvciBsZW5ndGggcHJlZml4LiAgVGhlIGxlbmd0aCBwcmVmaXgKICAgcmVhbGx5IHJlYWxseSBzaG91bGRuJ3QgYmUgc3RvcmVkIGRpcmVjdGx5IGluIHRoZSBvaWQuICBOaWVscz8KICAgCjIwMDAtMTItMTkgMDc6MjIgIGhhcmRha2VyCgogICAqIHNubXBsaWIvc25tcHYzLmM6CgogICBtYWtlIGluaXRfc25tcHYzKCkgZGVhbCB3aXRoIGEgTlVMTCBhcmd1bWVudCBwcm9wZXJseS4KICAgCjIwMDAtMTItMTggMTQ6MzcgIGhhcmRha2VyCgogICAqIGxvY2FsLy5jdnNpZ25vcmU6CgogICAtICguY3ZzaWdub3JlKTogcmVtb3ZlIHBhc3N0ZXN0IGZyb20gdGhlIC5jdnNpZ25vcmUgZmlsZSAoYnVnICMxMjY5NCkKICAgCjIwMDAtMTItMTggMTA6NDUgIG1hcnoKCiAgICogcGVybC9TTk1QLzogUkVBRE1FICwgU05NUC5wbToKCiAgIG1pbm9yIGRvYyBmaXgKICAgCjIwMDAtMTItMTQgMTM6NDYgIG5iYQoKICAgKiBzbm1wbGliL3N5c3RlbS5jOgoKICAgLSBzeXN0ZW0uYzogZml4IHVwdGltZSBmb3IgNjQtYml0IFNvbGFyaXMKICAgCjIwMDAtMTItMTQgMTM6NDUgIG5iYQoKICAgKiBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9kbG1vZC5jOgoKICAgLSBkbG1vZC5jOiBmaXggc3R1cGlkIHNwZWxsaW5nIGVycm9yCiAgIAoyMDAwLTEyLTEzIDIxOjUyICBuYmEKCiAgICogYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZGxtb2QuYzoKCiAgIC0gZGxtb2QuYzogZml4IGNvbmZ1c2lvbiBiZXR3ZWVuIGludCwgc2l6ZV90LCBsb25nIGZvciA2NC1iaXQgY29tcGlsZXMuCiAgIAoyMDAwLTEyLTEzIDA4OjQwICBoYXJkYWtlcgoKICAgKiBtYW4vTWFrZWZpbGUuaW46CgogICAtIChNYWtlZmlsZS5pbik6IGFkZCBzbm1wY29uZi4xCiAgIAoyMDAwLTEyLTA4IDE0OjQ5ICBuYmEKCiAgICogYWdlbnQvbWliZ3JvdXAvbWliSUkvdmFjbV92YXJzLmMgLCBzbm1wbGliL3ZhY20uYzoKCiAgIC0gdmFjbV92YXJzLmMsIHZhY20uYzogaW5kZXhpbmcgb2YgdmFjbVZpZXdUcmVlRmFtaWx5RW50cnkgd2FzIGhvc2VkLCBhc3N1bWluZwogICAJdGhhdCB0aGUgU3VidHJlZSBpbmRleCBoYWQgYW4gSU1QTElFRCBhdHRyaWJ1dGUuCiAgIAoyMDAwLTEyLTA4IDE0OjQ2ICBuYmEKCiAgICogYWdlbnQvbWliZ3JvdXAvaG9zdC86IGhyX2ZpbGVzeXMuYyAsIGhyX3BhcnRpdGlvbi5jOgoKICAgLSBocl9maWxlc3lzLmMsIGhyX3BhcnRpdGlvbi5jOiBmaXggc29tZSB6ZXJvIGluZGV4IHZhbHVlcy4KICAgCjIwMDAtMTItMDggMTQ6NDMgIG5iYQoKICAgKiBhZ2VudC9zbm1wX3ZhcnMuYzoKCiAgIC0gc25tcF92YXJzLmM6IGZpeCByZXR1cm5zIG9mIHplcm9Eb3RaZXJvIChzdWNoIGFzIGlmU3BlY2lmaWMpCiAgIAoyMDAwLTEyLTA4IDE0OjM4ICBuYmEKCiAgICogYWdlbnQvYWdlbnRfdHJhcC5jOgoKICAgLSBhZ2VudF90cmFwZC5jOiBzZWN1cml0eSBtb2RlbCB2YWx1ZXMgYXJlIG5vdCB0aGUgc2FtZSBpcyBzbm1wIHZlcnNpb24gdmFsdWVzCiAgIAoyMDAwLTEyLTA2IDE0OjQ1ICBuYmEKCiAgICogYWdlbnQvbWliZ3JvdXAvbWliSUkvaW50ZXJmYWNlcy5jOgoKICAgLSBpbnRlcmZhY2VzLmM6IExpbnV4IGtlcm5lbCAyLjAueCBoYXMgbm8gQVJQSFJEX0hJUFBJCiAgIAoyMDAwLTEyLTA1IDA3OjAwICBoYXJkYWtlcgoKICAgKiBsb2NhbC9NYWtlZmlsZS5pbjoKCiAgIC0gKE1ha2VmaWxlLmluKTogRml4IHJzbm1wJ3MgL3Vzci9sb2NhbCBoYXJkY29kZWQgcGF0aC4KICAgCjIwMDAtMTItMDQgMTc6MDMgIGhhcmRha2VyCgogICAqIHRlc3RpbmcvdGVzdHMvVDExMmFnZW50eHNldGZhaWw6CgogICAtIChUMTEyYWdlbnR4c2V0ZmFpbCk6IGZpeAogICAKMjAwMC0xMi0wNCAxNjozMyAgaGFyZGFrZXIKCiAgICogUkVBRE1FICwgc2Vkc2NyaXB0LmluICwgdmVyc2lvbi5oOgoKICAgLSAodmVyc2lvbi5oIHNlZHNjcmlwdC5pbik6IHZlcnNpb24gdGFnICggNS4yICkKCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCkNoYW5nZXM6IFY0LjIuMyAtPiBWNC4yLjQKCQoyMDAyLTA0LTA0IDE1OjI0ICBoYXJkYWtlcgoKICAgKiBzbm1wbGliLzogc25tcF9hcGkuYywgc25tcF9hcGkuaDoKCiAgIHBhdGNoIGZyb20gUGV0dGVyIExhcnNlbiB0byBhZGQgYSBmdW5jdGlvbiBmb3IgZXh0cmFjdGluZyB0aGUgZmQgYXNzb2NpYXRlZCB3aXRoIGEgc2Vzc2lvbgogICAKMjAwMi0wNC0wNCAxNToxNCAgaGFyZGFrZXIKCiAgICogYWdlbnQvYWdlbnRfcmVnaXN0cnkuYzoKCiAgIGRlYWwgd2l0aCBmZCB1bnJlZ2lzdHJhdGlvbnMgcHJvcGVybHkuCiAgIAoyMDAyLTA0LTAzIDA4OjMyICBoYXJkYWtlcgoKICAgKiBGQVEsIFJFQURNRSwgc2Vkc2NyaXB0LmluLCB2ZXJzaW9uLmgsIHBlcmwvU05NUC9TTk1QLnBtOgoKICAgLSAodmVyc2lvbi5oIHNlZHNjcmlwdC5pbik6IHZlcnNpb24gdGFnICggNC4yLjQucHJlMyApCiAgIAoyMDAyLTA0LTAyIDE1OjAyICBoYXJkYWtlcgoKICAgKiBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9yZWdpc3RyeS5jOgoKICAgQXBwbHkgcGF0Y2ggIzUxNTU3NyB0byBmaXggb25lIGNhc2Ugb2YgYSByZWdpc3RyeSBwcm9ibGVtLgogICAKMjAwMi0wNC0wMiAxNDo1NyAgaGFyZGFrZXIKCiAgICogYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZGlzay5jLCBzL2Rhcndpbi5oOgoKICAgQXBwbHkgcGF0Y2ggIzUyNDQyNCBmb3IgZGFyd2luIGZpeGVzIGZvciB1Y2Qtc25tcC9kaXNrLmMKICAgCjIwMDItMDQtMDIgMTQ6NDggIGhhcmRha2VyCgogICAqIGFnZW50L21pYmdyb3VwL2tlcm5lbF9zdW5vczUuYzoKCiAgIGFwcGx5IHBhdGNoIDUyNzU3MyB0byBmaXggNjQgYml0IHR5cGVzIG9uIHNvbGFyaXMKICAgCjIwMDItMDQtMDEgMjI6MjggIGhhcmRha2VyCgogICAqIHNubXBsaWIvc25tcF9hcGkuYzoKCiAgIExldCBpbml0X3NubXAgcHJvdGVjdCBpdHNlbGYuCiAgIAoyMDAyLTAzLTI4IDIzOjQ4ICBoYXJkYWtlcgoKICAgKiBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9wYXNzLmM6CgogICBlbmFibGUgcm93IGNyZWF0aW9uIGZvciBwYXNzIG1vZHVsZXMuICBQYXRjaCAjNDgyMDA1CiAgIAoyMDAyLTAzLTI4IDIzOjQ0ICBoYXJkYWtlcgoKICAgKiBhZ2VudC9taWJncm91cC9taWJJSS9pbnRlcmZhY2VzLmM6CgogICBwYXRjaCAjNTE3MzQwOiBmcmVlYnNkNSBzdXBwb3J0CiAgIAoyMDAyLTAzLTI4IDIzOjM4ICBoYXJkYWtlcgoKICAgKiBhZ2VudC9taWJncm91cC9ob3N0L2hyX2ZpbGVzeXMuYzoKCiAgIGFwcGx5IGZyZWVic2Q1IHBhdGNoICM1MTczMzMKICAgCjIwMDItMDMtMjggMjM6MTAgIGhhcmRha2VyCgogICAqIHBlcmwvU05NUC9TTk1QLnhzOgoKICAgZml4IGJ1ZyAjNTI1ODQ0LiAgcGVybCBTTk1QIHdhcyB1c2luZyBhIHRyYXAgYWRkcmVzcyBvZiAwLjAuMC4wLgogICAKMjAwMi0wMy0yOCAyMzowMyAgaGFyZGFrZXIKCiAgICogc25tcGxpYi9zbm1wX2FwaS5jOgoKICAgdXNlIGEgc3RhdGljIHZhcmlhYmxlIGZvciBpbml0IGNoZWNraW5nLiAgQnVnICM1MzYzODYuCiAgIAoyMDAyLTAzLTI4IDE1OjIzICBkdHMxMgoKICAgKiBGQVE6CgogICBBZGQgYSBmZXcgbmV3IGVudHJpZXMgKG1vc3RseSByZWxhdGluZyB0byB0cmFwcykKICAgCjIwMDItMDMtMjcgMDE6NTUgIGR0czEyCgogICAqIGNvbmZpZ3VyZS5pbiwgY29uZmlndXJlOgoKICAgVXNlIHRoZSBjb3JyZWN0IG5hbWUgb2YgdGhlIFdpbmRvd3MgSVAgSGVscGVyIEFQSSBsaWJyYXJ5LgogICAoQ29tcHV0ZXJzIGNhbiBiZSBzb29vbyBwaWNreSEpCiAgIAoyMDAyLTAzLTI2IDA4OjI5ICBoYXJkYWtlcgoKICAgKiBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9kaXNraW8uYzoKCiAgIGVuYWJsZSBkaXNraW8gb24gZnJlZWJzZDUuICBJbXBsZW1lbnRzIHBhdGNoIDUxNzMyOCBpbiBhIGRpZmZlcmVudCB3YXkuCiAgIAoyMDAyLTAzLTI2IDA3OjQ0ICBkdHMxMgoKICAgKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbjoKCiAgIEFkZCAvZXRjL2ZpbGVzeXN0ZW1zIHRvIGxpc3Qgb2YgbW91bnQgdGFibGUgZmlsZXMgKGZvciBBSVgpCiAgIFNob3VsZCBmaXggYnVncyAyMzI1ODggYW5kICg/KTUxNzExMwogICAKMjAwMi0wMy0yNiAwNzozOSAgZHRzMTIKCiAgICogY29uZmlndXJlLCBjb25maWd1cmUuaW46CgogICBSZW1vdmUgdHJhaWxpbmcgJzonIGZyb20gbGlzdCBvZiBNSUIgbW9kdWxlIG5hbWVzIGluIGNvbmZpZ3VyZSBvdXRwdXQsCiAgIHRvIGF2b2lkIGNvbmZ1c2lvbiAoc2VlIEJ1ZyAjNDkxMTI5KQogICAKMjAwMi0wMy0yNiAwNjo1MCAgZHRzMTIKCiAgICogY29uZmlndXJlLCBjb25maWd1cmUuaW46CgogICBBZGQgJy1saGxwYXBpJyB0byB0aGUgYWdlbnQgbGlicmFyaWVzIHdoZW4gY29tcGlsaW5nIHVuZGVyIFdpbmRvd3MKICAgKHVzaW5nIEN5Z3dpbikuICBETExJQlMgaXMgbm90IGFzIHN1aXRhYmxlIGFzIEFHRU5UX0xJQlMgZm9yIHRoaXMKICAgKHNlZSB0aGUgZXF1aXZhbGVudCBwYXRjaCBvbiB0aGUgbWFpbiBicmFuY2gpLCBidXQgaXQgc2hvdWxkIGRvLgogICBTaG91bGQgZml4IEJ1ZyAjNTM0NDA5LgogICAKMjAwMi0wMy0yNSAyMjozMyAgcnN0b3J5CgogICAqIHNubXBsaWIvcGFyc2UuYzoKCiAgIGZpeCBidWcjNTIwNDc4IHNob3dNaWJFcnJvcnMgdG9rZW4gaXMgaW52ZXJ0ZWQKICAgCjIwMDItMDMtMjUgMTg6NDcgIHJzdG9yeQoKICAgKiBhZ2VudC9zbm1wX3ZhcnMuYzoKCiAgIGZpeCBidWcjNTAyMTIzIGFnZW50eCBpbmZpbml0ZSBsb29wLgogICAKMjAwMi0wMy0yNCAwNToxOSAgbmJhCgogICAqIGFnZW50L21pYmdyb3VwL2hvc3QvaHJfc3dydW4uYzoKCiAgIFJlc3RyaWN0IGhyU1dSdW5QYXJhbXMgcmV0dXJucyB2YWx1ZXMgdG8gMTI4IG9jdGV0cwogICAKMjAwMi0wMy0yNCAwNTowNCAgbmJhCgogICAqIHNubXBsaWIvbWliLmM6CgogICBPb3BzIC0gc25wcmludF8qIGNhbm5vdCByZWFsbG9jCiAgIAoyMDAyLTAzLTIxIDA3OjIxICBoYXJkYWtlcgoKICAgKiBjb25maWd1cmUuaW4sIGNvbmZpZ3VyZToKCiAgIGZpeCBidWcgIzUzMjY5NiBmaXhpbmcgcnBtIGZvciBuZXdlciBycG0gdmVyc2lvbnMKICAgCjIwMDItMDMtMjAgMDc6NDggIGhhcmRha2VyCgogICAqIGFnZW50L21pYmdyb3VwL21pYklJL3N5c3RlbV9taWIuYzoKCiAgIHJlbW92ZSBpbGxlZ2FsIFNFVCBzdXBwb3J0IGZvciBzeXNEZXNjci4KICAgCjIwMDItMDMtMTkgMDI6MDEgIGpicG4KCiAgICogYWdlbnQvbWliZ3JvdXAvc211eC9zbXV4Lmg6CgogICAgIC0gcGF0Y2ggZnJvbSBKb3NodWEgR2lsZXMgdG8gaW5jcmVhc2UgdGhlIG1heGltdW0gc3RyaW5nIGxlbmd0aAogICAgICAgKCM1Mjc2NTApLgogICAKMjAwMi0wMy0xOCAxNDozOCAgbmJhCgogICAqIHdpbjMyL2xpYnNubXBfZGxsL2xpYnNubXAuZGVmOgoKICAgQWRkIG1pc3NpbmcgZXhwb3J0cyBmb3IgVkMrKyBidWlsZAogICAKMjAwMi0wMy0xOCAxMzoyMyAgbmJhCgogICAqIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL2Rpc2suYzoKCiAgIFByb3BlciB0ZXN0IGZvciBzdWNjZXNzZnVsIG9wZW4gb2YgRVRDX01OVFRBQgogICAKMjAwMi0wMy0xOCAxMzowOSAgbmJhCgogICAqIGFnZW50L2FnZW50X3JlYWRfY29uZmlnLmM6CgogICBGaXggaW50ZXJjaGFuZ2VkIHBhcmFtZXRlcnMgZm9yIHN0cm5jcHkKICAgCjIwMDItMDMtMTggMDg6NTEgIGR0czEyCgogICAqIHdpbjMyLzogd2luMzIuZHN3LCBlbmNvZGVfa2V5Y2hhbmdlL2VuY29kZV9rZXljaGFuZ2UuZHNwLAogICBsaWJhZ2VudC9saWJhZ2VudC5kc3AsIGxpYnNubXAvbGlic25tcC5kc3AsCiAgIGxpYnNubXBfZGxsL2xpYnNubXBfZGxsLmRzcCwgbGlidWNkbWlicy9saWJ1Y2RtaWJzLmRzcCwKICAgc25tcGJ1bGtnZXQvc25tcGJ1bGtnZXQuZHNwLCBzbm1wYnVsa3dhbGsvc25tcGJ1bGt3YWxrLmRzcCwKICAgc25tcGQvc25tcGQuZHNwLCBzbm1wZGVsdGEvc25tcGRlbHRhLmRzcCwgc25tcGRmL3NubXBkZi5kc3AsCiAgIHNubXBnZXRuZXh0L3NubXBnZXRuZXh0LmRzcCwgc25tcGdldC9zbm1wZ2V0LmRzcCwKICAgc25tcG5ldHN0YXQvc25tcG5ldHN0YXQuZHNwLCBzbm1wc2V0L3NubXBzZXQuZHNwLAogICBzbm1wc3RhdHVzL3NubXBzdGF0dXMuZHNwLCBzbm1wdGFibGUvc25tcHRhYmxlLmRzcCwKICAgc25tcHRlc3Qvc25tcHRlc3QuZHNwLCBzbm1wdHJhbnNsYXRlL3NubXB0cmFuc2xhdGUuZHNwLAogICBzbm1wdHJhcC9zbm1wdHJhcC5kc3AsIHNubXB0cmFwZC9zbm1wdHJhcGQuZHNwLAogICBzbm1wdXNtL3NubXB1c20uZHNwLCBzbm1wdmFjbS9zbm1wdmFjbS5kc3AsIHNubXB3YWxrL3NubXB3YWxrLmRzcDoKCiAgIEFwcGx5IERPUy10eXBlIGxpbmUgZW5kaW5ncyB0byB0aGUgRFNXL0RTUCBmaWxlcy4KICAgCjIwMDItMDMtMTggMDg6NDEgIGR0czEyCgogICAqIGFnZW50L21pYmdyb3VwL3NtdXgvc211eC5jOgoKICAgVXNlIHRoZSBzYW1lIHZhcmlhYmxlIG5hbWUgZm9yIG91dHB1dCBidWZmZXIgYW5kIHNpemUgY2FsY3VsYXRpb24uCiAgIAoyMDAyLTAzLTE4IDA1OjM5ICBqYnBuCgogICAqIFJFQURNRS5ocHV4MTEsIGFnZW50L21pYmdyb3VwL2hvc3QvaHJfc3RvcmFnZS5jLAogICBhZ2VudC9taWJncm91cC9ob3N0L2hyX3N5c3RlbS5jLCBhZ2VudC9taWJncm91cC9taWJJSS92YXJfcm91dGUuYywKICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvbG9hZGF2ZS5jLAogICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9tZW1vcnkuYywgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvbWVtb3J5LmgsCiAgIHMvaHB1eC5oOgoKICAgICAtIGNvbW1pdCBKb2hhbm5lcydzIHVwZGF0ZSB0byB0aGUgSFBVWC0xMSBwYXRjaAogICAKMjAwMi0wMy0xOCAwMjozMSAgamJwbgoKICAgKiBhZ2VudC9taWJncm91cC9hZ2VudHgvbWFzdGVyLmM6CgogICAgIC0gZXh0ZW5kIHRjcF93cmFwcGVycyBzdXBwb3J0IHRvIEFnZW50WC4gIFRoaXMgbWFrZXMgaXQgbW9yZQogICAgICAgcmVhc29uYWJsZSB0byBpbXBsZW1lbnQgYSBkaXN0cmlidXRlZCBzdWJhZ2VudCBhcmNoaXRlY3R1cmUKICAgICAgIHdpdGhvdXQgbWFzc2l2ZSBzZWN1cml0eSB3b3JyaWVzLgogICAKMjAwMi0wMy0xNCAwNzoyMyAgaGFyZGFrZXIKCiAgICogc25tcGxpYi9zbm1wX2FwaS5jOgoKICAgRml4IGRvbnRfcHJvYmUgYnVnIHBvaW50ZWQgb3V0IGJ5IFN0ZWZhbiBBZXNjaGJhY2hlci4KICAgCjIwMDItMDMtMTMgMTg6NTggIHNsaWYKCiAgICogc25tcGxpYi9hc24xLmM6CgogICBDbGFyaWZ5IHVuc2lnbmVkIGNoYXIgYXJndW1lbnQgZm9yIHRoZSBub2lzeSBvciBjb25mdXNlZCBjb21waWxlci4KICAgCjIwMDItMDMtMTMgMTg6NDYgIHNsaWYKCiAgICogYWdlbnQvbWliZ3JvdXAvbWliSUkvdmFjbV92YXJzLmMsIGFwcHMvc25tcHRyYXBkX2xvZy5jOgoKICAgcXVlbGwgc2V2ZXJhbCB3YXJuaW5ncyBhYm91dCBzaWduZWQgdnMgdW5zaWduZWQgY29tcGFyaXNvbnMuCiAgIAoyMDAyLTAzLTEzIDE4OjQ0ICBzbGlmCgogICAqIHdpbjMyL3dpbjMyLmRzdzoKCiAgIHJlbW92ZSBkZXBlbmRlbmNpZXMgdG8gcmVzdG9yZSBidWlsZGluZyBlaXRoZXIgRGVidWcgb3IgUmVsZWFzZSB0YXJnZXRzLgogICAKMjAwMi0wMy0xMyAxODo0MyAgc2xpZgoKICAgKiB3aW4zMi9saWJzbm1wX2RsbC9saWJzbm1wLmRlZjoKCiAgIHRyYWNrIGNoYW5nZSBzZXRlbnYgLS0+IHNubXBfc2V0ZW52CiAgIAoyMDAyLTAzLTEzIDE1OjUwICBoYXJkYWtlcgoKICAgKiBtaWJzLzogVUNELURFTU8tTUlCLnR4dCwgVUNELURJU0tJTy1NSUIudHh0LCBVQ0QtRExNT0QtTUlCLnR4dCwKICAgVUNELUlQRklMVEVSLU1JQi50eHQsIFVDRC1JUEZXQUNDLU1JQi50eHQsIFVDRC1TTk1QLU1JQi50eHQ6CgogICBhZGRyZXNzIGNoYW5nZXMgZm9yIHVjZC1zbm1wIC0+IG5ldC1zbm1wIG5vdGUgc2F5aW5nIHRoZXNlIG1pYnMgYXJlIG5vCiAgIGxvbmdlciBzdXBwb3J0ZWQgYnkgVUNELgogICAKMjAwMi0wMy0xMyAxNToyMSAgaGFyZGFrZXIKCiAgICogc25tcGxpYi90b29scy5jOgoKICAgbWFsbG9jIGF0IGxlYXN0IG9uZSBieXRlIGluIGhleF90b19iaW5hcnkyCiAgIAoyMDAyLTAzLTEzIDA0OjAzICBkdHMxMgoKICAgKiBGQVE6CgogICBBZGQgYSBkZXNjcmlwdGlvbiBvZiAidW5saW5rZWQgT0lEcyIuCiAgIAoyMDAyLTAzLTEyIDIwOjAzICBoYXJkYWtlcgoKICAgKiBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9tZW1vcnlfc29sYXJpczIuYzoKCiAgIFBhdGNoIGZyb20gZGFuaWVsIFN1bGx5IHRvIGltcHJvdmUgc29sYXJpcyBzd2FwIGluZm8KICAgCjIwMDItMDMtMTIgMDg6MzQgIGR0czEyCgogICAqIEZBUToKCiAgIFVwZGF0aW5nIG9mIHRoZSBGQVEgcmVhZHkgZm9yIHRoZSBuZXh0IHJlbGVhc2UuCiAgIChNb3N0bHkgcmVwaHJhc2luZyBvZiBleGlzdGluZyBlbnRyaWVzLCBidXQgYSBmZXcgbmV3IHF1ZXN0aW9ucykKICAgCjIwMDItMDMtMTEgMTA6MDYgIGhhcmRha2VyCgogICAqIGFnZW50LzogbWliZ3JvdXAvc211eC9zbXV4LmMsIG1pYmdyb3VwL3VjZC1zbm1wL3Byb3h5LmMsCiAgIGFnZW50X2luZGV4LmMsIGFnZW50X3JlYWRfY29uZmlnLmMsIGFnZW50X3JlZ2lzdHJ5LmMsIHNubXBfYWdlbnQuYywKICAgc25tcGQuYywgbWliZ3JvdXAvYWdlbnR4L21hc3Rlcl9yZXF1ZXN0LmM6CgogICBiZXR0ZXIgcHJpbnRpbmcgYXBpcwogICAKMjAwMi0wMy0xMSAxMDowNiAgaGFyZGFrZXIKCiAgICogYXBwcy9zbm1wdmFjbS5jOgoKICAgZml4IGFwaSBpbiBhIGNvbW1lbnQgKGhvdyBwaWNreSBhbSBJPykKICAgCjIwMDItMDMtMTEgMDc6NDEgIGR0czEyCgogICAqIEZBUToKCiAgIEJyaW5nIHRoZSA0eC0gYW5kIG1haW4tYnJhbmNoIEZBUXMgaW50byBhZ3JlZW1lbnQuCiAgIAoyMDAyLTAzLTExIDA1OjE2ICBqYnBuCgogICAqIHNubXBsaWIvcGFyc2UuYzoKCiAgICAgLSBmaXggYmFkIHR5cGUgYXNzaWdubWVudCBpbiBidWlsZF90cmFuc2xhdGlvbl90YWJsZSgpLCBub3RpY2VkIGJ5CiAgICAgICBQZXRlciBTdGV2ZW5zLgogICAKMjAwMi0wMy0xMCAxNDowNyAgbmJhCgogICAqIHNubXBsaWIvbWliLmg6CgogICBPb3BzIC0gZm9yZ290IHRvIHJlbW92ZSB0aGUgI2lmZGVmIGZvciB1bnNhZmUgc3ByaW50XyogZnVuY3Rpb25zIGRlY2xhcmF0aW9ucwogICAKMjAwMi0wMy0xMCAxMzo1NCAgbmJhCgogICAqIGFwcHMvc25tcHdhbGsuYzoKCiAgIEZpeCB1cCBvdXQtb2Ytb3JkZXIgZXJyb3IgbWVzc2FnZQogICAKMjAwMi0wMy0xMCAxMzo0NCAgbmJhCgogICAqIGFwcHMvc25tcGRlbHRhLmM6CgogICBEb24ndCBkaWUgb24gdjIgZXhjZXB0aW9ucwogICAKMjAwMi0wMy0xMCAxMzo0MSAgbmJhCgogICAqIHNubXBsaWIvOiBhc24xLmMsIHNubXBfZGVidWcuYzoKCiAgIFJlbW92ZSBzb21lIGNhbGxzIHRvIG9sZCBzcHJpbnRfKiBmdW5jdGlvbnMKICAgCjIwMDItMDMtMTAgMTM6MzkgIG5iYQoKICAgKiBzbm1wbGliLzogbWliLmMsIG1pYi5oOgoKICAgQWRkIHNucHJpbnRfKiByZXBsYWNlbWVudCBmdW5jdGlvbnMgZm9yIGFsbCBzcHJpbnRfKiBmdW5jdGlvbnMKICAgCjIwMDItMDMtMTAgMTM6MzggIG5iYQoKICAgKiBtYW4vbWliX2FwaS4zOgoKICAgRG9jdW1lbnQgc25wcmludF97b2JqaWQsdmFyaWFibGUsdmFsdWV9CiAgIAoyMDAyLTAzLTEwIDA4OjM0ICBoYXJkYWtlcgoKICAgKiBzbm1wbGliLzogbWliLmMsIG1pYi5oOgoKICAgaW5jbHVkZSB0aGUgc25wcmludGYgY291bnRlcnBhcnRzIGZyb20gdGhlIDUuMCBjb2RlLgogICAKMjAwMi0wMy0wOCAxODowNyAgaGFyZGFrZXIKCiAgICogYWdlbnQvbWliZ3JvdXAvbWliSUkvaXBBZGRyLmM6CgogICByZWRlZmluZSBhIHZhcmlhYmxlIG9uIGZyZWVic2QgZm9yIDIuMi41CiAgIAoyMDAyLTAzLTA4IDE3OjU3ICBoYXJkYWtlcgoKICAgKiBhZ2VudC9taWJncm91cC9taWJJSS9pbnRlcmZhY2VzLmM6CgogICByZW1vdmUgYSBicm9rZW4gZml4IEkgYWNjaWRlbnRpY2FsbHkgY29tbWl0dGVkCiAgIAoyMDAyLTAzLTA4IDE3OjQyICBoYXJkYWtlcgoKICAgKiBhZ2VudC9taWJncm91cC9taWJJSS9pbnRlcmZhY2VzLmM6CgogICBwYXRjaCBmcm9tIE1paGFpbCBCYWxpa292IHRvIHN1cHBvcnQgdXAgYnV0IG5vIGlwIGludGVyZmFjZXMuCiAgIAoyMDAyLTAzLTA4IDE3OjI3ICBoYXJkYWtlcgoKICAgKiBjb25maWd1cmUuaW4sIGNvbmZpZ3VyZSwgYWNsb2NhbC5tNDoKCiAgIHBhdGNoIGZyb20gUGF1bCBSYXNtdXNzZW4gdG8gZml4IC0tZW5hYmxlLXNoYXJlZAogICAKMjAwMi0wMy0wOCAxNjo1OCAgaGFyZGFrZXIKCiAgICogcGVybC9TTk1QL1NOTVAueHM6CgogICBvbGQgcGF0Y2ggZnJvbSBCZXJ0IERyaWVodWlzIHRvIGZpeCBjNjRzIGluIHBlcmwKICAgCjIwMDItMDMtMDggMTQ6NTMgIG5iYQoKICAgKiBzbm1wbGliL21pYi5jOgoKICAgUmVtb3ZlIDEwMDAgbGluZXMgb2YgZHVwbGljYXRlIGNvZGUgYnkgdXNpbmcgdGhlIHNwcmludF9yZWFsbG9jXyogZnVuY3Rpb25zCiAgIGluIHRoZSBpbXBsZW1lbnRhaW9uIG9mIHRoZSBub24tcmVhbGxvYyBjb3VudGVycGFydHMuCiAgIAoyMDAyLTAzLTA4IDE0OjUxICBuYmEKCiAgICogYXBwcy86IHNubXBkZWx0YS5jLCBzbm1wdGFibGUuYywgc25tcHVzbS5jLCBzbm1wd2Fsay5jOgoKICAgUmVtb3ZlIGxhc3Qgc3ByaW50X25vbnJlYWxsb2MgY2FsbHMKICAgCjIwMDItMDMtMDcgMDM6MjAgIGpicG4KCiAgICogbWFuL21pYl9hcGkuMzoKCiAgICAgLSBwYXRjaCBmcm9tIEd1eSBIYXJyaXMgdG8gZGVzY3JpYmUgbmV3IG1pYl9hcGkKICAgCjIwMDItMDMtMDcgMDI6NTggIGpicG4KCiAgICogc25tcGxpYi9taWIuaDoKCiAgICAgLSBkZWNsYXJlIHRoZSBzcHJpbnRfcmVhbGxvY19ibGFoIGZ1bmN0aW9ucy4gIFRoYW5rcyB0byBHdXkgSGFycmlzLgogICAKMjAwMi0wMy0wNiAwODo0MSAgZHRzMTIKCiAgICogc25tcGxpYi9zbm1wdjMuYzoKCiAgIEZpeCBhIGNvbmZ1c2lvbiBiZXR3ZWVuIGRlZkF1dGhUeXBlIGFuZCBkZWZQcml2VHlwZS4KICAgCjIwMDItMDMtMDYgMDU6NTIgIGR0czEyCgogICAqIHNubXBsaWIvc25tcF9hcGkuYzoKCiAgIEFjdHVhbGx5IHVzZSB0aGUgY29tbW9uICdkZWZQYXNzcGhyYXNlJyB2YWx1ZSBpZiAnZGVme0F1dGgsUHJpdn1QYXNzcGhyYXNlJyBpc24ndCBzZXQuCiAgIFFuOiBTaG91bGQgdGhlIEF1dGhQYXNzcGhyYXNlIGFsc28gYmUgdXNlZCBmb3IgcHJpdmFjeSBpZiBubyBvdGhlciB2YWx1ZSBpcyBhdmFpbGFibGU/CiAgIAoyMDAyLTAzLTA2IDAzOjE5ICBqYnBuCgogICAqIHRlc3RpbmcvTWFrZWZpbGUuaW46CgogICAgIC0gaWdub3JlIGVycm9ycyBkb2luZyBybSAtcmYgL3RtcC9zbm1wLXRlc3QqIHdoZW4gbWFraW5nIGNsZWFuICh0aGlzCiAgICAgICBoYXBwZW5zIGFsbCB0aGUgdGltZSBvbiB0aGUgY29tcGlsZSBmYXJtIGJlY2F1c2UgZS5nLiBJIGNhbid0CiAgICAgICBkZWxldGUgV2VzJ3MgdGVzdCBkaXJlY3RvcmllcyBhbmQgaXQncyBhIG51aXNhbmNlIGJlY2F1c2UgdGhlbiB0aGUKICAgICAgIHJlc3Qgb2YgdGhlIGRpcmVjdG9yaWVzIGRvbid0IGdldCBjbGVhbmVkIHVwIHByb3Blcmx5KS4KICAgCjIwMDItMDMtMDYgMDI6MjQgIGpicG4KCiAgICogc25tcGxpYi9taWIuYzoKCiAgICAgLSBmaXggYW5vdGhlciBwb3RlbnRpYWwgYnVmZmVyIG92ZXJmbG93IHByb2JsZW0gYXMgcmVwb3J0ZWQgaW4gYnVnCiAgICAgICAjNTI2MjYyLgogICAKMjAwMi0wMy0wNSAxMDo0NSAgaGFyZGFrZXIKCiAgICogYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvdmVyc2lvbmluZm8uYzoKCiAgIGltcG9zZSBtYXggbGVuZ3RoIHJlc3RyaWN0aW9uIHN1cHBsaWVkIGJ5IG1pYiBmb3IgY29uZmlndXJhdGlvbiBvcHRpb25zLgogICAKMjAwMi0wMy0wNSAwOTo1MiAgaGFyZGFrZXIKCiAgICogbWlicy9VQ0QtU05NUC1NSUIudHh0OgoKICAgbWlzc2VkIGEgbW9kaWZpY2F0aW9uIHRvIHRoZSBwYXRjaC4KICAgCjIwMDItMDMtMDUgMDk6NTEgIGhhcmRha2VyCgogICAqIG1pYnMvVUNELVNOTVAtTUlCLnR4dDoKCiAgIEEgbW9kaWZpZWQgcGF0Y2ggZnJvbSBKdWVyZ2VuIFNjaG9lbndhZWxkZXIgZm9yIGxvbmdlciBjb25maWd1cmUgc3RyaW5ncy4KICAgCjIwMDItMDMtMDUgMDg6MjMgIGR0czEyCgogICAqIGFnZW50L3NubXBfdmFycy5oOgoKICAgUmV2ZXJzZSBteSBlYXJsaWVyIChib2d1cykgZml4LgogICBUaGluZ3Mgd2VyZSBmaW5lIGFzIHRoZXkgd2VyZSAtIEkgbXVzdCBiZSBjcmFja2luZyB1cC4uLi4uCiAgIAoyMDAyLTAzLTA1IDA4OjA1ICBkdHMxMgoKICAgKiBhZ2VudC9taWJncm91cC9leGFtcGxlcy91Y2REZW1vUHVibGljLmM6CgogICBBZGQgbWlzc2luZyAic3RhbmRhcmQiIGhlYWRlcnMsIGFuZCB0d2VhayBhIHR5cGUgc2xpZ2h0bHkuCiAgIChCYXNlZCBvbiByZXF1ZXN0cyBmcm9tIEdyZWdvcnkgVG90aCkuCiAgIAoyMDAyLTAzLTA1IDA2OjU2ICBkdHMxMgoKICAgKiBhZ2VudC9zbm1wX3ZhcnMuaDoKCiAgIEJyaW5nIGRlY2xhcmF0aW9uIG9mICdpbml0X2FnZW50JyBpbnRvIGxpbmUgd2l0aCBjb2RlIGRlZmluaXRpb24uCiAgIAoyMDAyLTAzLTA1IDA2OjQ4ICBkdHMxMgoKICAgKiBhZ2VudC9taWJncm91cC86IG5vdGlmaWNhdGlvbi9zbm1wTm90aWZ5VGFibGUuYywgdWNkLXNubXAvZGxtb2QuYzoKCiAgIENhc3QgYSBjb3VwbGUgb2YgbWFsbG9jcyBhcHByb3ByaWF0ZWx5IChyZXF1ZXN0ZWQgYnkgR3JlZ29yeSBUb3RoKQogICAKMjAwMi0wMy0wNCAyMTozOCAgaGFyZGFrZXIKCiAgICogRkFRLCBSRUFETUUsIHNlZHNjcmlwdC5pbiwgdmVyc2lvbi5oLCBwZXJsL1NOTVAvU05NUC5wbToKCiAgIC0gKHZlcnNpb24uaCBzZWRzY3JpcHQuaW4pOiB2ZXJzaW9uIHRhZyAoIDQuMi40LnByZTIgKQogICAKMjAwMi0wMy0wNCAwMTo1MSAgZHRzMTIKCiAgICogbG9jYWwvbWliMmM6CgogICBDYXRjaCBhbmQgcmVwb3J0IGludmFsaWQgbm9kZSBzcGVjaWZpY2F0aW9ucy4KICAgKFRoaXMgb3VnaHQgdG8gYmUgaGFuZGxlZCBieSB0aGF0IHRlc3QgdGhhdCBmb2xsb3dzIGltbWVkaWF0ZWx5LCBidXQKICAgICIkU05NUDo6TUlCeyRvaWR9IiBhcHBlYXJzIHRvIHJldHVybiB0aGUgY29yZSBtaWItMiBvYmplY3QgcmVnYXJkbGVzcykKICAgCjIwMDItMDMtMDQgMDE6MTYgIGR0czEyCgogICAqIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL21lbW9yeS5jOgoKICAgQ29ycmVjdCBkZWJ1ZyBvdXRwdXQgbWVzc2FnZSAodGhhbmtzIHRvIEplcm9lbiBSdWlncm9rKQogICAKMjAwMi0wMy0wMSAyMjozNyAgaGFyZGFrZXIKCiAgICogc25tcGxpYi9hc24xLmM6CgogICBmaXggYnVnICM1MjQ1MjkKICAgCjIwMDItMDMtMDEgMDc6MTcgIG5iYQoKICAgKiBsdG1haW4uc2gsIGFjbG9jYWwubTQsIGNvbmZpZ3VyZToKCiAgIFB1bGwgaW4gdXAtdG8tZGF0ZSBsaWJ0b29sLCB3aGljaCBzaG91bGQgaGVscCBEYXJ3aW4KICAgCjIwMDItMDMtMDEgMDc6MTUgIG5iYQoKICAgKiBjb25maWcuZ3Vlc3MsIGNvbmZpZy5zdWI6CgogICBQdWxsIGluIHVwLXRvLWRhdGUgY29uZmlnIHNjcmlwdHMKICAgCjIwMDItMDItMjcgMDk6NDcgIGR0czEyCgogICAqIHNubXBsaWIvdmFjbS5jOgoKICAgSGFuZGxlIHZpZXdzIHRoYXQgc3BlY2lmeSBhIGZ1bGwgaW5zdGFuY2UgT0lELgogICAoU2luY2UgdGhlIGludGVybmFsbHkgc3RvcmVkIE9JRCBwcmVwZW5kcyB0aGUgbGVuZ3RoIGFzIHdlbGwsCiAgICB0aGUgYXBwYXJlbnQgbGVuZ3RoIGlzIG9uZSBncmVhdGVyIHRoYW4gaXQgcmVhbGx5IGlzKQogICAKMjAwMi0wMi0yNiAxNDoxOCAgbmJhCgogICAqIHNubXBsaWIvOiBwYXJzZS5jLCBwYXJzZS5oOgoKICAgU2F2ZSBGaWxlL2xpbmUgZm9yIG1lc3NhZ2VzIGFib3V0IHVubGlua2VkIE9JRHMKICAgCjIwMDItMDItMjUgMTU6NDYgIG5iYQoKICAgKiBtaWJzLzogTWFrZWZpbGUubWliLCBtaWJmZXRjaDoKCiAgIE1ha2Ugc3VyZSB0aGF0IHdlIGZldGNoIElBTkFpZlR5cGUtTUlCIGZyb20gdGhlIG1haW50YWluZWQgbG9jYXRpb24uCiAgIAoyMDAyLTAyLTI1IDE1OjQ1ICBuYmEKCiAgICogbWlicy9ESVNNQU4tU0NIRURVTEUtTUlCLnR4dDoKCiAgIFVwZGF0ZSBmb3IgUkZDIDMyMzEKICAgCjIwMDItMDItMjUgMDg6NTkgIG5iYQoKICAgKiBtaWJzL3JmY2xpc3Q6CgogICBOZXcgUkZDJ3MgaXNzdWVkIHdpdGggbWliczoKICAgMzIwMSAgIENJUkNVSVQtSUYtTUlCCiAgIDMyMDIgICBGUlNMRC1NSUIKICAgMzIzMSAgIERJU01BTi1TQ0hFRFVMRS1NSUIKICAgCjIwMDItMDItMjUgMDg6NTcgIG5iYQoKICAgKiBhZ2VudC9taWJncm91cC9ob3N0L2hyX2Rpc2suYzoKCiAgIEZyZWVCU0Q0IGhhcyBuZXcgZGlzayBuYW1lcwogICAKMjAwMi0wMi0yNSAwODo1NiAgbmJhCgogICAqIGFnZW50L21pYmdyb3VwL2hvc3QvaHJfcHJpbnQuYzoKCiAgIFByb3Blcmx5IGJyYWNrZXQgcnVuX2xwc3RhdCBwcm90b3R5cGUKICAgCjIwMDItMDItMjUgMDI6NDggIGpicG4KCiAgICogc25tcGxpYi9wYXJzZS5jOgoKICAgICAtIG9ubHkgY29weSB0aGUgZmlyc3QgREVTQ1JJUFRJT04gY2xhdXNlIG9mIE1PRFVMRS1DT01QTElBTkNFCiAgICAgICBzdGF0ZW1lbnRzIHRvIGF2b2lkIGEgbWVtb3J5IGxlYWsgKHNlZSBidWcgIzUyMjM2MykuCiAgIAoyMDAyLTAyLTI1IDAxOjIxICBkdHMxMgoKICAgKiBhZ2VudC9zbm1wZC5jOgoKICAgU3BlY2lmeSB0aGUgY29ycmVjdCBkZWJ1ZyB0b2tlbiBmb3IgZGlzcGxheWluZyB0aGUgbGlzdCBvZiBtb2R1bGVzCiAgIChzcG90dGVkIGJ5IEJyaWFuIFNoYXZlcikKICAgCjIwMDItMDItMjIgMDk6MjcgIGR0czEyCgogICAqIHNubXBsaWIvOiBNU0cwMDAwMS5iaW4sIHdpbnNlcnZpY2UubWMgLAogICBNU0cwMDAwMS5iaW4gKDEuMSksIHdpbnNlcnZpY2UubWMgKDEuMSk6CgogICBBZGQgbWlzc2luZyBmaWxlcyBmb3IgV2luZG93cyBzZXJ2aWNlIG9wZXJhdGlvbi4KICAgCjIwMDItMDItMjIgMDg6NDIgIGR0czEyCgogICAqIGFnZW50L3NubXBkLmM6CgogICBKdXN0IGNsb3NlIHRoZSBtYWluIHNlc3Npb24gd2hlbiBzaHV0dGluZyBkb3duIHVuZGVyIFdpbmRvd3MsCiAgIG5vdCBldmVyeXRoaW5nIChzbyB0aGF0IGl0IGNhbiBzdGlsbCBnZW5lcmF0ZSB0aGUgc2h1dGRvd24gdHJhcCkuCiAgIAoyMDAyLTAyLTIyIDAxOjQ5ICBqYnBuCgogICAqIEZBUSwgUkVBRE1FLndpbjMyOgoKICAgICAtIHVwZGF0ZSBjb21tZW50cyBvbiBXaW4zMiBwb3J0IGluIEZBUQogICAKICAgICAtIGRpc2N1c3Mgd2hhdCBJUEhMUEFQSS57TElCLERMTH0gaXMgYW5kIHdoZXJlIGl0IGNhbiBiZSBvYnRhaW5lZAogICAgICAgZnJvbSBpbiBSRUFETUUud2luMzIKICAgCjIwMDItMDItMjEgMDc6MDIgIGR0czEyCgogICAqIHdpbjMyL3NubXBkL3NubXBkLmRzcDoKCiAgIEZpeCBib2d1cyBzdHJ1Y3R1cmUgY29tbWVudHMgaW4gdGhlIHNubXBkIHByb2plY3QgZmlsZS4KICAgCjIwMDItMDItMjEgMDM6MTMgIGpicG4KCiAgICogYWdlbnQvbWliZ3JvdXAvc211eC9zbXV4LmM6CgogICAgIC0gZW1pdCBlcnJvciBvbiBvdmVyLWxlbmd0aCBwYXNzd29yZCBpbnN0ZWFkIG9mIHdyaXRpbmcgb2ZmIGVuZCBvZgogICAgICAgYnVmZmVyIChidWcgIzUyMDY0OSwgbm90ZWQgYnkgSm9obiBTZWxsZW5zKS4KICAgCjIwMDItMDItMjAgMDk6MjcgIGpicG4KCiAgICogYXBwcy9zbm1wdHJhbnNsYXRlLmMsIGFwcHMvc25tcHRyYXBkLmMsCiAgIHNubXBsaWIvc25tcF9wYXJzZV9hcmdzLmMsIHNubXBsaWIvc3lzdGVtLmMsIHNubXBsaWIvc3lzdGVtLmg6CgogICAgIC0gY2hhbmdlcyB0byBhdm9pZCBuYW1lc3BhY2UgY2xhc2ggcHJvYmxlbXMgd2l0aCBzZXRlbnYoKSB3aGljaCBhcmUKICAgICAgIGNhdXNlZCBieSBsaWJ3cmFwIHN1cHBseWluZyBhIGZ1bmN0aW9uIG9mIHRoYXQgbmFtZSBhcyB3ZWxsIGFzIHVzLgogICAKICAgICAtIGFsbCBjYWxscyBpbiB0aGUgY29kZSB0byBzZXRlbnYoKSBhcmUgcmVwbGFjZWQgd2l0aCBhIGNhbGwgdG8KICAgICAgIHNubXBfc2V0ZW52KCkuCiAgIAogICAgIC0gc25tcF9zZXRlbnYoKSBjYWxscyBzZXRlbnYoKSBpZiBzdWNoIGEgZnVuY3Rpb24gZXhpc3RzLCBvdGhlcndpc2UKICAgICAgIGl0IHNpbXVsYXRlcyB0aGUgZWZmZWN0IGJ5IGNhbGxpbmcgcHV0ZW52KCkuCiAgIAoyMDAyLTAyLTIwIDA1OjQzICBqYnBuCgogICAqIE5FV1M6CgogICAgIC0gbWVudGlvbiB0Y3Bfd3JhcHBlcnMgc3VwcG9ydCBmb3Igc25tcHRyYXBkCiAgIAoyMDAyLTAyLTIwIDA1OjQxICBqYnBuCgogICAqIGFwcHMvOiBNYWtlZmlsZS5pbiwgc25tcHRyYXBkLmM6CgogICAgIC0gYWRkIGxpYndyYXAgc3VwcG9ydCBmb3Igc25tcHRyYXBkCiAgIAoyMDAyLTAyLTIwIDA1OjIwICBqYnBuCgogICAqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluOgoKICAgICAtIGV4aXQgd2l0aCBhbiBlcnJvciBpZiAtLXdpdGgtbGlid3JhcCBpcyBnaXZlbiBhbmQgd2UgY2FuJ3QgZmluZCBpdAogICAKMjAwMi0wMi0yMCAwMzowMCAgamJwbgoKICAgKiBhcHBzL3NubXBkZWx0YS5jOgoKICAgICAtIGluaXRpYWxpc2Ugc29tZSBidWZmZXJzLCB0byBhdm9pZCBnYXJiYWdlIHByaW50aW5nIHByb2JsZW1zLCBhcwogICAgICAgbm90ZWQgYnkgQW5vbnltb3VzIGluIGJ1ZyAjNTIwMjIwLgogICAKMjAwMi0wMi0xOSAwNjo0NyAgaGFyZGFrZXIKCiAgICogYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvbWVtb3J5LmM6CgogICBQYXRjaCBmcm9tIEplcm9lbiBSdWlncm9rIHRvIG1lcmdlIGEgZmV3IGlmZGVmcwogICAKMjAwMi0wMi0xOSAwMTo1MSAgamJwbgoKICAgKiBhZ2VudC9hdXRvX25saXN0Lmg6CgogICAgIC0gYWRkIGZvcndhcmQgZGVjbGFyYXRpb24gb2Ygc3RydWN0IG5saXN0IHRvIGF2b2lkIGNvbXBpbGVyCiAgICAgICBjb21wbGFpbnRzLiAgVGhhbmtzIHRvIEFuZHkgSG9vZC4KICAgCjIwMDItMDItMTggMDg6MTcgIGhhcmRha2VyCgogICAqIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL21lbW9yeS5jOgoKICAgcGF0Y2ggZnJvbSBKZXJvZW4gUnVpZ3JvayBmb3IgbWlub3IgaWZkZWYgY2xlYW4gdXBzCiAgIAoyMDAyLTAyLTE4IDAyOjM2ICBqYnBuCgogICAqIGFwcHMvc25tcHRyYXBkX2xvZy5jOgoKICAgICAtIHVzZSBjYWxsb2MgaW5zdGVhZCBvZiBtYWxsb2MgdG8gbWFrZSBzdXJlIGJ1ZmZlciBpcyBpbml0aWFsbHkKICAgICAgIHplcm8tdGVybWluYXRlZCAoaW4gY2FzZSBvZiAwIHZhcmJpbmRzKS4gIEJ1ZyAjNTE4NzAwLCBub3RlZCBieQogICAgICAgQW5kcmVhcyBIYXJ0bWFubi4KICAgCjIwMDItMDItMTggMDI6MjkgIGR0czEyCgogICAqIGFnZW50L21pYmdyb3VwL2hvc3QvaHJfc3RvcmFnZS5jOgoKICAgUmVtb3ZlIGEgY291cGxlIG9mIHVuaGVscGZ1bCBPU0YgZGVmaW5pdGlvbnMgKHRoYW5rcyB0byBKZXJvZW4gUnVpZ3JvaykKICAgCjIwMDItMDItMTggMDI6MDkgIGpicG4KCiAgICogYWdlbnQvbWliZ3JvdXAvOiBub3RpZmljYXRpb24vc25tcE5vdGlmeVRhYmxlLmMsCiAgIHRhcmdldC9zbm1wVGFyZ2V0QWRkckVudHJ5LmM6CgogICAgIC0gcmVtb3ZlIHRyb3VibGVzb21lIGlubGluZSBxdWFsaWZpZXJzLiAgVGhhbmtzIHRvIEFuZHkgSG9vZCBmb3IKICAgICAgIG5vdGluZyB0aGF0IHRoZXNlIGNhdXNlIHByb2JsZW1zIG9uIEFJWC4KICAgCjIwMDItMDItMTggMDI6MDUgIGpicG4KCiAgICogYWdlbnQvbWliZ3JvdXAvbWliSUkvYXQuYzoKCiAgICAgLSByZW1vdmUgLy8tc3R5bGUgY29tbWVudHMuICBUaGFua3MgdG8gQW5keSBIb29kIGZvciBwb2ludGluZyB0aGlzCiAgIG91dC4KICAgCjIwMDItMDItMTggMDA6MTMgIGhhcmRha2VyCgogICAqIHNubXBsaWIvYXNuMS5jOgoKICAgZG9uJ3QgYnVpbGQgb2lkJ3Mgd2l0aCA+MTI4IGxlbmd0aCBzdWJpZHMuICAoc2VlIGJ1ZyAjNTE4ODU1KQogICAKMjAwMi0wMi0xNSAyMjowNyAgaGFyZGFrZXIKCiAgICogRkFRLCBSRUFETUUsIHNlZHNjcmlwdC5pbiwgdmVyc2lvbi5oLCBwZXJsL1NOTVAvU05NUC5wbToKCiAgIC0gKHZlcnNpb24uaCBzZWRzY3JpcHQuaW4pOiB2ZXJzaW9uIHRhZyAoIDQuMi40LnByZTEgKQogICAKMjAwMi0wMi0xNSAxNzowMiAgaGFyZGFrZXIKCiAgICogYWdlbnQvbWliZ3JvdXAvc25tcHYzL3VzbVVzZXIuYzoKCiAgIGZpeCBidWcjNTA4MTI2IHdoaWNoIGFjdHVhbGx5IGxlZCBtZSB0byBhbm90aGVyLgogICAgIC0gb2lkIHBhcnNpbmcgYW5kIHNlYXJjaGluZyBpbiBnZXRuZXh0cyBjb3VsZCBzb21ldGltZXMgbG9vcC4KICAgCjIwMDItMDItMTUgMTc6MDAgIGhhcmRha2VyCgogICAqIE1ha2VmaWxlLnRvcCwgY29uZmlndXJlLCBjb25maWd1cmUuaW46CgogICBzdXBwb3J0IC0tZGlzYWJsZS1zaGFyZWQtdmVyc2lvbiBjb25jZXB0IGZyb20gUGF1bCBSYXNtdXNzZW4uCiAgIAoyMDAyLTAyLTE1IDE2OjQxICBoYXJkYWtlcgoKICAgKiBhZ2VudC9taWJncm91cC9ob3N0L2hyX3N3cnVuLmM6CgogICBkeW5peCBicm9rZSBsaW51eC4gIEJhZCBkeW5peC4gIE5vIGJvbmUuICBHbyB0byB5b3VyIHJvb20uCiAgIAoyMDAyLTAyLTE1IDE2OjI4ICBoYXJkYWtlcgoKICAgKiBzbm1wbGliL3VjZC1zbm1wLWluY2x1ZGVzLmg6CgogICBhZGQgYmFjayBpbiBuZXRpbmV0L2luLmggYW5kIHN5cy90aW1lLmggKGluIHByb3BlciBwcm90ZWN0ZWQgZm9ybSkKICAgd2hpY2ggd2FzIGRlbGV0ZWQgZnJvbSA0LjIuMyBmb3Igc29tZSByZWFzb24gd2UgbmV2ZXIgZmlndXJlZCBvdXQuCiAgIAoyMDAyLTAyLTE1IDE2OjIxICBoYXJkYWtlcgoKICAgKiBDaGFuZ2VMb2csIEZBUSwgTkVXUywgUkVBRE1FOgoKICAgdXBkYXRlcyBmb3Igd2hhdCB3aWxsIGJlIDQuMi40CiAgIAoyMDAyLTAyLTE1IDE1OjUyICBoYXJkYWtlcgoKICAgKiBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9wcm94eS5jOgoKICAgY2hlY2sgZW5kIG9mIG1pYnZpZXcgY29uZGl0aW9ucwogICAKMjAwMi0wMi0xNSAwODowMSAgZHRzMTIKCiAgICogYWdlbnQvbWliZ3JvdXAvbWliSUkvdmFjbV92YXJzLmM6CgogICBQb3B1bGF0ZSBhbiBlbXB0eSBjYXNlIHN0YXRlbWVudCAoc3BvdHRlZCBieSBKZXJvZW4gUnVpZ3JvaykKICAgCjIwMDItMDItMTUgMDc6MTEgIGhhcmRha2VyCgogICAqIFJFQURNRS5zbm1wdjM6CgogICByZW1vdmUgdW5uZWVkZWQgLUNOIGFuZCAtQ08gZXhhbXBsZSBvcHRpb25zCiAgIAoyMDAyLTAyLTE1IDA2OjQ3ICBkdHMxMgoKICAgKiBhZ2VudC9zbm1wZC5jLCBzbm1wbGliL3dpbnNlcnZpY2UuYywgc25tcGxpYi93aW5zZXJ2aWNlLmgsCiAgIHNubXBsaWIvd2luc2VydmljZS5yYywgd2luMzIvc25tcGQvc25tcGQuZHNwOgoKICAgU3VwcG9ydCBmb3IgcnVubmluZyBhcyBhIFdpbmRvd3Mgc2VydmljZS4KICAgKFN1cHBsaWVkIGJ5IFJhanUgS3Jpc2huYXBwYSAmIExhdGhhIFByYWJodSkKICAgCjIwMDItMDItMTQgMTE6MTEgIG5iYQoKICAgKiBhZ2VudC9taWJncm91cC91Y2Qtc25tcC92bXN0YXQuYzoKCiAgIE1ha2UgYnVmZmVyIHBvaW50ZXIgc3RhdGljIHNvIGl0IGRvZXNuJ3QgbGVhawogICAKMjAwMi0wMi0xNCAxMToxMCAgbmJhCgogICAqIHNubXBsaWIvc2NhcGkuaDoKCiAgIEZpeCBiYWQgcGFyYW50aGVzaXMKICAgCjIwMDItMDItMTQgMDc6NDAgIGhhcmRha2VyCgogICAqIGFnZW50L3NubXBkLmM6CgogICBmaXggZW1haWwgYWRkcmVzcyBidWcgIzUxNzE3OAogICAKMjAwMi0wMi0xNCAwMTo0NyAgZHRzMTIKCiAgICogYXBwcy9zbm1wbmV0c3RhdC9pZi5jOgoKICAgQ2hlY2sgZm9yIHJ1bm5pbmcgb2ZmIHRoZSBlbmQgb2YgSS9GIHRhYmxlIChwYXRjaCBmcm9tIFJlZEhhdCkKICAgCjIwMDItMDItMTQgMDE6NDQgIGR0czEyCgogICAqIGFnZW50L21pYmdyb3VwL2hvc3QvaHJfc3dpbnN0LmM6CgogICBJbmNsdWRlIFJlZEhhdCBwYXRjaGVzIGZvciBiZXR0ZXIgUlBNIHN1cHBvcnQKICAgCjIwMDItMDItMTQgMDE6MzggIGR0czEyCgogICAqIGNvbmZpZy5oLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbjoKCiAgIEFkb3B0IFJlZEhhdCdzIGNvbmZpZ3VyZSB0ZXN0aW5nIGZvciBycG0gbGlicmFyeSByZXF1aXJlbWVudHMKICAgCjIwMDItMDItMTMgMTY6NDEgIGhhcmRha2VyCgogICAqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluOgoKICAgZW5hYmxlIHNoYXJlZCBieSBkZWZhdWx0IGV4Y2VwdCBmb3IgZGV2ZWxvcGVycwogICAKMjAwMi0wMi0xMyAxMzo1MSAgaGFyZGFrZXIKCiAgICogYWdlbnQvbWliZ3JvdXAvdGFyZ2V0L3NubXBUYXJnZXRBZGRyRW50cnkuYzoKCiAgIHJlbW92ZSBpbmxpbmUgZnVuY3Rpb24gZnJvbSBiZWluZyBkZWNsYXJlZCBpbiBhbm90aGVyIGZ1bmN0aW9uLgogICAKMjAwMi0wMi0xMyAxMzoyNyAgaGFyZGFrZXIKCiAgICogYWdlbnQvbWliZ3JvdXAvbm90aWZpY2F0aW9uL3NubXBOb3RpZnlUYWJsZS5jOgoKICAgcmVtb3ZlIGlubGluZSBmdW5jdGlvbiBmcm9tIGJlaW5nIGRlY2xhcmVkIGluIGFub3RoZXIgZnVuY3Rpb24uCiAgIAoyMDAyLTAyLTEzIDA4OjE4ICBoYXJkYWtlcgoKICAgKiBwZXJsL1NOTVAvU05NUC54czoKCiAgIGZpeCBzZXRzIG9mIHVuc2lnbmVkMzIncy4KICAgCjIwMDItMDItMTMgMDc6NTkgIGR0czEyCgogICAqIHNubXBsaWIvbWliLmM6CgogICBEU19MSUJfUFJJTlRfU1VGRklYX09OTFkgaXMgYW4gaW50ZWdlciBvcHRpb24sIG5vdCBhIGJvb2xlYW4gZmxhZy4KICAgKEF0dGVtcHRpbmcgdG8gc2V0IHRoaXMgdmlhIHRoZSBTVUZGSVggZW52aXJvbm1lbnRhbCB2YXJpYWJsZSB3aWxsCiAgIHR1cm4gb24gcGFja2V0IGR1bXBpbmcgaW5zdGVhZCEpCiAgIAoyMDAyLTAyLTEzIDA0OjE1ICBqYnBuCgogICAqIGFnZW50L21pYmdyb3VwL2hvc3QvaHJfcHJpbnQuYzoKCiAgICAgLSBmaXggYnVnICM1MTY5MDQgKHNubXBkIGRpZXMgaWYgbm8gcHJpbnRjYXAgd2l0aCBjZ2V0ZW50KSwgbm90ZWQgYnkKICAgICAgIEFub255bW91cyAtLSBjaGVjayByZXR1cm4gdmFsdWUgb2YgY2dldG5leHQoKSBwcm9wZXJseSBpbgogICAgICAgSW5pdF9IUl9QcmludCgpLgogICAKMjAwMi0wMi0xMiAwNzoxMSAgamJwbgoKICAgKiBjb25maWd1cmUuaW4sIGNvbmZpZ3VyZToKCiAgICAgLSBhbWVuZCBmaXggdG8gYnVnICM1MTYzODkgKHVjZC1zbm1wIDQuMi4zIGxpYndyYXAgc3VwcG9ydCBicm9rZW4pIHRvCiAgICAgICBhY3R1YWxseSBhZGQgLWxuc2wgdG8gbGluayBwYXJhbWV0ZXJzIQogICAKMjAwMi0wMi0xMiAwNToyOSAgamJwbgoKICAgKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbjoKCiAgICAgLSBmaXggYnVnICM1MTYzODkgKHVjZC1zbm1wIDQuMi4zIGxpYndyYXAgc3VwcG9ydCBicm9rZW4pIC0tIFVTRV9MSUJXUkFQCiAgICAgICB3YXMgbm90IGJlaW5nICNkZWZpbmVkIGluIHRoZSBjYXNlIHdoZXJlIC1sbnNsIGlzIG5lZWRlZCBpbiBhZGRpdGlvbgogICAgICAgdG8gLWx3cmFwLgogICAKMjAwMi0wMi0xMiAwMTozMCAgZHRzMTIKCiAgICogYWdlbnQvbWliZ3JvdXAvbWliSUkvdmFjbV92YXJzLmM6CgogICBJbXBsZW1lbnQgdGhlIEJhZENvbW11bml0eXtOYW1lcyxVc2VzfSBjb3VudGVycy4KICAgCjIwMDItMDItMTEgMTA6MDcgIGpicG4KCiAgICogYXBwcy9zbm1wdGFibGUuYzoKCiAgICAgLSBmaXggYnVncyAjNDg5MzM2IGFuZCAjNTA4MTQ2IChkdXBsaWNhdGUgY29sdW1ucyBhbmQgY29sdW1ucyBpbgogICAgICAgd3Jvbmcgb3JkZXIpLgogICAKMjAwMi0wMi0xMSAwODoyMyAgZHRzMTIKCiAgICogc25tcGxpYi9zbm1wX3BhcnNlX2FyZ3MuYzoKCiAgIFVzZSB0aGUgJ2RzX3NldF94eHgnIGxpYnJhcnkgcm91dGluZXMsIHJhdGhlciB0aGFuIHRoZSBvbGQgJ3NubXBfc2V0X3h4eCcgY2FsbHMKICAgCjIwMDItMDItMTEgMDU6MzAgIGpicG4KCiAgICogRkFROgoKICAgICAtIG1lbnRpb24gSFBVWC0xMSBhbmQgRHluaXgvUFRYIDQuNCBzdXBwb3J0LCBhbmQgc29tZSBzcGVsbGluZyBmaXhlcwogICAKMjAwMi0wMi0wOCAwNjoxMiAgZHRzMTIKCiAgICogYWdlbnQvbWliZ3JvdXAvbWliSUkvc3lzT1JUYWJsZS5oOgoKICAgRW5zdXJlIHRoZSBudWxsIHZlcnNpb25zIG9mIHRoZSB0d28gUkVHSVNURVIgbWFjcm9zIHN3YWxsb3cgdGhlaXIgcGFyYW1ldGVycy4KICAgCjIwMDItMDItMDggMDQ6NDIgIGR0czEyCgogICAqIGFnZW50L3NubXBfYWdlbnQuYzoKCiAgIEltcGxlbWVudCB0aGUgbWlzc2luZyBvdXRnb2luZyBlcnJvciBzdGF0aXN0aWNzIGNvdW50ZXJzCiAgIChwYXRjaCAjNTEwMTk0IGZyb20gTGF0aGEgUHJhYmh1KQogICAKMjAwMi0wMi0wOCAwMjo1NCAgZHRzMTIKCiAgICogYWdlbnQvc25tcF9hZ2VudC5jOgoKICAgUHJvY2VzcyB0aGUgZnVsbCBsaXN0IG9iamVjdHMgaW4gZWFjaCBwYXNzIG9mIGEgU0VULCBldmVuIGlmIG9uZSBlbnRyeSBmYWlscwogICBtaWR3YXkgdGhyb3VnaC4gIFRoaXMgaXMgbGVzcyBlZmZpY2llbnQgdGhhbiBmYWlsaW5nIGltbWVkaWF0ZWx5LCBidXQgYnJpbmdzCiAgIHRoZSBiZWhhdmlvdXIgaW4gbGluZSB3aXRoIHRoZSBkb2N1bWVudGF0aW9uLCBhbmQgZW5zdXJlcyB0aGF0IGFsbCByZXNvdXJjZXMKICAgd2lsbCBiZSByZWxlYXNlZC4KICAgCjIwMDItMDItMDggMDI6NTAgIGR0czEyCgogICAqIGFnZW50L3NubXBfYWdlbnQuYzoKCiAgIFJldHVybiB0aGUgY29ycmVjdCBlcnJvciBpbmRleCBmb3IgcHJvYmxlbXMgaW4gU0VUIGhhbmRsaW5nLgogICAocGF0Y2ggIzQ2NzE1NSwgZnJvbSBMYXRoYSBQcmFiaHUpCiAgIAoyMDAyLTAyLTA4IDAyOjQyICBkdHMxMgoKICAgKiBhZ2VudC9taWJncm91cC86IGhvc3QvaHJfc3RvcmFnZS5jLCB1Y2Qtc25tcC9tZW1vcnkuYzoKCiAgIEFkZGVkIHN1cHBvcnQgZm9yIG1lbW9yeSBhbmQgc3dhcCBlbnRyaWVzIGluIGhyU3RvcmFnZVRhYmxlIGZvciBTb2xhcmlzCiAgIChmcm9tIHBhdGNoICM1MDU0OTggLSB0aGFua3MgdG8gSm9oYW5uZXMgU2NobWlkdC1GaXNjaGVyKQogICAKMjAwMi0wMi0wOCAwMjowOSAgZHRzMTIKCiAgICogYWdlbnQvbWliZ3JvdXAvbWliSUkvaXAuYzoKCiAgIFJlZ2lzdGVyIElQIFJvdXRpbmcgdGFibGUgb2JqZWN0cyBhcyB3cml0YWJsZS4KICAgCjIwMDItMDItMDcgMDc6MzkgIGR0czEyCgogICAqIFJFQURNRS5ocHV4MTEsIGFjY29uZmlnLmgsIGNvbmZpZy5oLmluLAogICBhZ2VudC9taWJncm91cC91Y2Rfc25tcC5oLCBhZ2VudC9taWJncm91cC9ob3N0L2hyX25ldHdvcmsuYywKICAgYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9zdG9yYWdlLmMsIGFnZW50L21pYmdyb3VwL2hvc3QvaHJfc3dpbnN0LmMsCiAgIGFnZW50L21pYmdyb3VwL2hvc3QvaHJfc3dydW4uYywgYWdlbnQvbWliZ3JvdXAvbWliSUkvYXQuYywKICAgYWdlbnQvbWliZ3JvdXAvbWliSUkvaWNtcC5jLCBhZ2VudC9taWJncm91cC9taWJJSS9pbnRlcmZhY2VzLmMsCiAgIGFnZW50L21pYmdyb3VwL21pYklJL2ludGVyZmFjZXMuaCwgYWdlbnQvbWliZ3JvdXAvbWliSUkvaXAuYywKICAgYWdlbnQvbWliZ3JvdXAvbWliSUkvaXBBZGRyLmMsIGFnZW50L21pYmdyb3VwL21pYklJL3RjcC5jLAogICBhZ2VudC9taWJncm91cC9taWJJSS90Y3BUYWJsZS5jLCBhZ2VudC9taWJncm91cC9taWJJSS90Y3BUYWJsZS5oLAogICBhZ2VudC9taWJncm91cC9taWJJSS91ZHAuYywgYWdlbnQvbWliZ3JvdXAvbWliSUkvdWRwVGFibGUuYywKICAgYWdlbnQvbWliZ3JvdXAvbWliSUkvdmFyX3JvdXRlLmMsIGFnZW50L21pYmdyb3VwL21pYklJL3Zhcl9yb3V0ZS5oLAogICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9tZW1vcnkuYywgbWlicy9VQ0QtU05NUC1NSUIudHh0LCBzL2hwdXguaDoKCiAgIFN1cHBvcnQgZm9yIEhQLVVYIDExLCBjb3VydGVzeSBvZiBKb2hhbm5lcyBTY2htaWR0LUZpc2NoZXIuCiAgIAoyMDAyLTAyLTA1IDExOjQ1ICBoYXJkYWtlcgoKICAgKiBDT1BZSU5HOgoKICAgY29weXJpZ2h0IHllYXIgdXBkYXRlIGZvciBOQUkgYW5kIENhbWJyaWRnZQogICAKMjAwMi0wMi0wNCAwMzoxNyAgamJwbgoKICAgKiBzbm1wbGliL21pYi5jOgoKICAgICAtIGNvcnJlY3QgcHJvY2Vzc2luZyBmb3IgdGltZXRpY2tzIHdoZW4gRFNfTElCX05VTUVSSUNfVElNRVRJQ0tTIGlzCiAgICAgICBzZXQgKGNvcnJlY3RzIGJ1ZyAjNTExNzkzLCByZXBvcnRlZCBieSBBbm9ueW1vdXMpLgogICAKMjAwMi0wMS0yOCAxMjo1MCAgaGFyZGFrZXIKCiAgICogRkFROgoKICAgbWlycm9yIHNlY3Rpb24gdXBkYXRlCiAgIAoyMDAyLTAxLTI4IDEyOjQ5ICBoYXJkYWtlcgoKICAgKiBhZ2VudC9hZ2VudF90cmFwLmg6CgogICB3YXJuaW5nIGFkZGVkIGFib3V0IHNlbmRfdHJhcF92YXJzIGFuZCBlbnRlcnByaXNlIG9pZCB1c2VkLgogICAKMjAwMi0wMS0yNSAwNjoyNyAgamJwbgoKICAgKiBhZ2VudC9taWJncm91cC9taWJJSS92YWNtX3ZhcnMuYzoKCiAgICAgLSBmaXggbWlub3IgcHJvYmxlbSB3aXRoIHN0b3JhZ2VUeXBlIChhbHdheXMgb2theSB0byBzZXQgdG8gY3VycmVudAogICAgICAgdmFsdWUpLgogICAKICAgICAtIGRvbid0IHJlc2V0IHNvbWUgdmFyaWFibGVzIHRvIG9sZCB2YWx1ZSB1bmxlc3Mgd2UgYWN0dWFsbHkgc2V0CiAgICAgICB0aGVtIGluIHRoZSBmaXJzdCBwbGFjZSEKICAgCjIwMDItMDEtMjQgMDY6MDYgIGpicG4KCiAgICogc25tcGxpYi9yZWFkX2NvbmZpZy5jOgoKICAgICAtIGF2b2lkIGZvcm1hdCBzdHJpbmcgbmFzdGllcyBpbiByZWFkX2NvbmZpZ19zdG9yZSgpIHdoZW4gd3JpdGluZyB0bwogICAgICAgZmlsZXMgKGV4cG9zZWQgZS5nLiBieSB0aGUgcGVyc2lzdGVudCBzeXNOYW1lLjAgc3R1ZmYgLS0gdHJ5CiAgICAgICBzbm1wc2V0IGhvc3Qgc3lzTmFtZS4wIHMgIiUwOHgiIC0tIG9vcHMpCiAgIAoyMDAyLTAxLTI0IDAzOjE0ICBkdHMxMgoKICAgKiBhZ2VudC9taWJncm91cC9ob3N0L2hyX3N3cnVuLmMsIGFnZW50L21pYmdyb3VwL2hvc3QvaHJfdXRpbHMuYywKICAgcy9haXguaDoKCiAgIEFJWCBzdXBwb3J0IGZvciBIb3N0IFJlc291cmNlcyBtb2R1bGUuCiAgICAgICAoVGhhbmtzIHRvIEFuZHkgSG9vZCkKICAgCjIwMDItMDEtMjMgMDg6MzkgIGpicG4KCiAgICogYWdlbnQvbWliZ3JvdXAvbWliSUkvdmFjbV92YXJzLmM6CgogICAgIC0gc2V0IHZpZXdUeXBlIHRvIHRoZSBERUZWQUwgaW5jbHVkZWQoMSkgZm9yIG5ldyByb3dzCiAgIAoyMDAyLTAxLTIyIDA2OjM2ICBqYnBuCgogICAqIGFnZW50L21pYmdyb3VwL21pYklJL3ZhY21fdmFycy5jOgoKICAgICAtIGZpeCBidWcganVzdCBpbnRyb2R1Y2VkIHdoZXJlIHNldHRpbmcgYW4gZXhpc3Rpbmcgcm93J3Mgc3RhdHVzIHRvCiAgICAgICBjcmVhdGVBbmRHbyg0KSBvciBjcmVhdGVBbmRXYWl0KDUpIHdvdWxkIGRlbGV0ZSB0aGUgcm93LgogICAKMjAwMi0wMS0yMiAwNDoyMiAgamJwbgoKICAgKiBhZ2VudC9taWJncm91cC86IG5vdGlmaWNhdGlvbi9zbm1wTm90aWZ5VGFibGUuYywKICAgdGFyZ2V0L3NubXBUYXJnZXRBZGRyRW50cnkuYywgdGFyZ2V0L3NubXBUYXJnZXRBZGRyRW50cnkuaCwKICAgdGFyZ2V0L3NubXBUYXJnZXRQYXJhbXNFbnRyeS5jLCB0YXJnZXQvc25tcFRhcmdldFBhcmFtc0VudHJ5Lmg6CgogICAgIC0gYmFja3BvcnQgb2YgcmVjZW50IGltcHJvdmVtZW50cyB0byBzbm1wVGFyZ2V0UGFyYW1zVGFibGUsCiAgICAgICBzbm1wVGFyZ2V0QWRkclRhYmxlIGFuZCBzbm1wTm90aWZ5VGFibGUuCiAgIAoyMDAyLTAxLTIxIDA0OjIyICBqYnBuCgogICAqIGFnZW50L3NubXBfdmFycy5jOgoKICAgICAtIHNldCBub1N1Y2hPYmplY3QgdG8gRkFMU0UgaWYgd2UgaGF2ZSBhIHZhbGlkIHdyaXRlX21ldGhvZCAodGhpcwogICAgICAgY2F1c2VzIHRoZSBjb3JyZWN0IGV4Y2VwdGlvbiBub1N1Y2hJbnN0YW5jZSB0byBiZSBnZW5lcmF0ZWQgaWYgdGhlCiAgICAgICByZXF1ZXN0ZWQgb2JqZWN0IGRvZXNuJ3QgZXhpc3QpLgogICAKMjAwMi0wMS0yMSAwNDoyMCAgamJwbgoKICAgKiBhZ2VudC9zbm1wX2FnZW50LmM6CgogICAgIC0gc2xpZ2h0IGNoYW5nZSB0byBnZW5lcmF0aW9uIG9mIGVycm9yLWluZGV4OgogICAKICAgICAgIC0gZXhwbGljaXRseSB0ZXN0IGZvciBlcnJvci1zdGF0dXMgPT0gbm9FcnJvciwgYW5kIHNldCBlcnJvci1pbmRleAogICAgICAgICB0byB6ZXJvIGluIHRoaXMgY2FzZTsKICAgCiAgICAgICAtIG90aGVyd2lzZSB1c2UgdGhlIGNhY2hlZCB2YWx1ZTsKICAgCiAgICAgICAtIGRvbid0IHplcm8gdGhlIGNhY2hlZCB2YWx1ZSBpbiBoYW5kbGVfdmFyX2xpc3QgaWYgaGFuZGxlX29uZV92YXIKICAgICAgICAgcmV0dXJucyBub0Vycm9yCiAgIAogICAgIC0gdGhpcyBjb3BlcyBwcm9wZXJseSB3aXRoIFNFVCByZXF1ZXN0cywgd2hlcmUgYSBmYWlsaW5nIFNFVCB3aWxsIGhhdmUKICAgICAgIGEgRlJFRSBwaGFzZSB3aGljaCB3aWxsIHR5cGljYWxseSByZXR1cm4gbm9FcnJvci4gIFByZXZpb3VzbHkgdGhpcwogICAgICAgd291bGQgZXJyb25lb3VzbHkgY2F1c2UgdGhlIGVycm9yLWluZGV4IHRvIGJlIHNldCB0byB6ZXJvLgogICAKMjAwMi0wMS0yMSAwNDoxMSAgamJwbgoKICAgKiBhZ2VudC9taWJncm91cC9taWJJSS92YWNtX3ZhcnMuYywgc25tcGxpYi92YWNtLmMsIHNubXBsaWIvdmFjbS5oOgoKICAgICAtIGJhY2twb3J0IG9mIHJlY2VudCB2YWNtU2VjdXJpdHlUb0dyb3VwVGFibGUsIHZhY21BY2Nlc3NUYWJsZSBhbmQKICAgICAgIHZhY21WaWV3VHJlZUZhbWlseVRhYmxlIGNoYW5nZXMgKGNvcnJlY3RlZCBzdGF0ZSBtYWNoaW5lcykuCiAgICAgICBCZWZvcmU6IHBhc3NlZCAyMCwgIGZhaWxlZCA4MCwgdW50ZXN0ZWQgMTEKICAgICAgIEFmdGVyOiAgcGFzc2VkIDEwNywgZmFpbGVkIDEsICB1bnRlc3RlZCAzCiAgIAogICAgICAgVGhlIHN0aWxsLWV4dGFudCBmYWlsdXJlcyBhcmUgZHVlIHRvIHRoZSBub24taW1wbGVtZW50ZWQKICAgICAgIHZhY21Db250ZXh0VGFibGUuCiAgIAoyMDAyLTAxLTE1IDEyOjQ0ICBuYmEKCiAgICogYWdlbnQvc25tcF92YXJzLmM6CgogICBGaXggc3R1cGlkIG1pc3Npbmcgc2l6ZW9mKG9pZCkgZmFjdG9yIGluIG1lbWNweQogICAKMjAwMi0wMS0xNSAxMjo0MiAgbmJhCgogICAqIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Ztc3RhdC5jOgoKICAgRG9udCB1c2Ugc3RhdGljIGJ1ZmZlciB3aGVuIHJlYWRpbmcgL3Byb2Mvc3RhdAogICAKMjAwMi0wMS0xNSAxMjo0MSAgbmJhCgogICAqIGFnZW50L21pYmdyb3VwL2hvc3QvaHJfc3lzdGVtLmMsIHMvc29sYXJpczIuNi5oLCBzL3NvbGFyaXMyLjcuaCwKICAgcy9zb2xhcmlzMi44Lmg6CgogICBGaXggaHJNYXhQcm9jZXNzZXMgZm9yIFNvbGFyaXMKICAgCjIwMDItMDEtMTUgMTI6MzkgIG5iYQoKICAgKiBhZ2VudC9taWJncm91cC9rZXJuZWxfc3Vub3M1LmM6CgogICBTb21lIGFkZGl0aW9uYWwgZGVidWcgc3RhdGVtZW50cwogICAKMjAwMi0wMS0wOSAwODoyNyAgbmJhCgogICAqIGFnZW50L21pYmdyb3VwLzoga2VybmVsX3N1bm9zNS5jLCBrZXJuZWxfc3Vub3M1Lmg6CgogICBBZGQgZnVuY3Rpb24gdG8gYWNjZXMgcmF3IGtzdGF0IGRhdGEKICAgCjIwMDItMDEtMDkgMDg6MjYgIG5iYQoKICAgKiBhZ2VudC9taWJncm91cC9ob3N0L2hyX3N0b3JhZ2UuYzoKCiAgIFVzZSB0aGF0IHN5c2NvbmYgcmV0dXJucyBhIGxvbmcsIHRvIHNhdmUgbGFyZ2UgcGh5cyBtZW0KICAgCjIwMDItMDEtMDkgMDg6MjQgIG5iYQoKICAgKiBtaWJzL0lBTkFpZlR5cGUtTUlCLnR4dDoKCiAgIFVwZGF0ZSB0byBjdXJyZW50IElBTkEgdmVyc2lvbgogICAKMjAwMi0wMS0wOSAwODoyMyAgbmJhCgogICAqIGFnZW50L21pYmdyb3VwL21pYklJL2ludGVyZmFjZXMuYzoKCiAgIENhcmUgZm9yIExpbnV4IGRyaXZlcnMgdGhhdCBtYWludGFpbiBvY3RldCBjb3V0ZXJzIGFzIGxvZyBsb25nIHZhbHVlcwogICAKMjAwMi0wMS0wOSAwMjoyMCAgamJwbgoKICAgKiBGQVE6CgogICAgIC0gYWRkIE9TIFggdG8gbGlzdCBvZiBzdXBwb3J0ZWQgT1NlcywgdG8gZml4IGJ1ZyAjNTAxMTc5ICghKQogICAKMjAwMi0wMS0wMyAxNDowMSAgaGFyZGFrZXIKCiAgICogYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZGlzay5jOgoKICAgZml4IGJ1ZyAjNDk4ODA5IChJIHRoaW5rKSBieSBjaGVja2luZyBzZXRtbnRlbnQgcmV0dXJuIHZhbHVlLgogICAKMjAwMi0wMS0wMyAxMzo1MiAgaGFyZGFrZXIKCiAgICogYXBwcy9zbm1wbmV0c3RhdC9pZi5jOgoKICAgY2hlY2sgYWdhaW5zdCBncm93aW5nIHNlcnZlciByZXR1cm5zIGFzIHBvaW50ZWQgb3V0IGJ5IGJ1ZyAjNDk4OTU2CiAgIAoyMDAxLTEyLTE4IDA4OjQ5ICBqYnBuCgogICAqIGFjY29uZmlnLmgsIHdpbjMyL2NvbmZpZy5oLCB3aW4zMi9jb25maWcuaC5ib3JsYW5kOgoKICAgICAtIGFkZCBPU1RZUEUgZGVmaW5lIGZvciB3aW4zMgogICAKMjAwMS0xMi0xOCAwODo0NCAgamJwbgoKICAgKiBtaWJzL1VDRC1TTk1QLU1JQi50eHQ6CgogICAgIC0gYWRkIE9CSkVDVCBJREVOVElGSUVSIGZvciB3aW4zMiBhZ2VudAogICAKMjAwMS0xMi0xOCAwNjo1MCAgamJwbgoKICAgKiBhZ2VudC9taWJncm91cC9taWJJSS9zeXN0ZW1fbWliLmM6CgogICAgIC0gcGF0Y2ggZnJvbSBMYXRoYSBQcmFiaHUgdG8gcHJvZHVjZSBtb3JlIG1lYW5pbmdmdWwgc3lzRGVzY3IuMAogICAgICAgc3RyaW5ncyBmb3IgTWljcm9zb2Z0IHBsYXRmb3Jtcy4KICAgCjIwMDEtMTItMDUgMDc6NDggIGhhcmRha2VyCgogICAqIHBlcmwvU05NUC9TTk1QLnhzOgoKICAgcGF0Y2ggZnJvbSBKYXNvbiBHbG91ZG9uIHRvIGZpeCBsZWFraW5nIHNlc3Npb24gc3RydWN0dXJlcyBmcm9tIHNubXBfdGltZW91dCgpLgogICAKMjAwMS0xMi0wMyAxNDo1MiAgbmJhCgogICAqIGFjY29uZmlnLmgsIGNvbmZpZy5oLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbjoKCiAgIENvbXBsZXRlIHRoZSBCU0QgSVBTVEFUUyBjb25maWd1cmUgdGVzdHMsIGFzIHBvaW50ZWQgb3V0IGJ5IE1hcmsgTW9yYWVzCiAgIChidWcjIDQ4NzcwOCkKICAgCjIwMDEtMTEtMjkgMTY6NTQgIGhhcmRha2VyCgogICAqIENoYW5nZUxvZzoKCiAgIDQuMi4zIGNoYW5nZXMKICAgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCkNoYW5nZXM6IFY0LjIuMiAtPiBWNC4yLjMKCQoyMDAxLTExLTI5IDE0OjIyICBoYXJkYWtlcgoKICAgKiBGQVEsIFJFQURNRSwgc2Vkc2NyaXB0LmluLCB2ZXJzaW9uLmgsIHBlcmwvU05NUC9TTk1QLnBtOgoKICAgLSAodmVyc2lvbi5oIHNlZHNjcmlwdC5pbik6IHZlcnNpb24gdGFnICggNC4yLjMgKQogICAKMjAwMS0xMS0yOSAxMzoyNSAgbmJhCgogICAqIGFnZW50L21pYmdyb3VwL2tlcm5lbF9zdW5vczUuYzoKCiAgIFNvbGFyaXMgOCByZW5hbWVkIHRoZSBrc3RhdCBpZnNwZWVkIGF0dHJpYnV0ZSB0byBpZlNwZWVkIGFuZCBzb21ld2hlcmUKICAgYWxvbmcgdGhlIGxpbmUgY2hhbmdlZCBpdHMgdmFsdWUgZnJvbSBNYnBzIHRwIGJwcwogICAKMjAwMS0xMS0yOCAxNDo0MyAgaGFyZGFrZXIKCiAgICogTkVXUzoKCiAgIG1lbnRpb24gaW1wcm92ZWQgaXJpeCBzdXBwb3J0LgogICAKMjAwMS0xMS0yOCAxNDozMSAgaGFyZGFrZXIKCiAgICogcy9pcml4Lmg6CgogICBsYXN0IGZpeGVzIGZvciBpcml4IEkgdGhpbmsKICAgCjIwMDEtMTEtMjggMTQ6MzAgIGhhcmRha2VyCgogICAqIGFnZW50L21pYmdyb3VwL21pYklJL2ludGVyZmFjZXMuYzoKCiAgIGNyZWF0ZSBpc2xhbmRzIGluIHRoZSBzdHJlYW0KICAgCjIwMDEtMTEtMjggMTQ6MDkgIGhhcmRha2VyCgogICAqIHMvaXJpeC5oOgoKICAgaXJpeCBmaXhlcyBmb3IgYnJva2VuIGlyaXggaGVhZGVycwogICAKMjAwMS0xMS0yNyAxNzowNSAgaGFyZGFrZXIKCiAgICogcGVybC9TTk1QL1NOTVAucG06CgogICB2ZXJzaW9uIHN0YW1wICg0LjIuMy5wcmUxIChvcHBzKSkKICAgCjIwMDEtMTEtMjcgMTc6MDUgIGhhcmRha2VyCgogICAqIGFnZW50L21pYmdyb3VwL3ZlcnNpb250YWc6CgogICBmaXggZm9yIHZlcnNpb24gc3RhbXBpbmcgdGhlIHBlcmwgbW9kdWxlLgogICAKMjAwMS0xMS0yNyAxNzowMyAgaGFyZGFrZXIKCiAgICogTkVXUzoKCiAgIHVwZGF0ZSBmb3IgNC4yLjMKICAgCjIwMDEtMTEtMjcgMTE6MDkgIGhhcmRha2VyCgogICAqIHdpbjMyL3dpbjMyLmRzdzoKCiAgIHVzZSBhdCBvd24gcmlzayBwYXRjaCBmcm9tIEhhcnJpZSB0byBmaXggZGVwZW5kYW5jaWVzCiAgIAoyMDAxLTExLTI3IDA2OjUzICBqYnBuCgogICAqIGFnZW50L21pYmdyb3VwL2hvc3QvaHJfc3lzdGVtLmM6CgogICAgIC0gdHJ5IGhhcmRlciB0byBnZXQgaHJTeXN0ZW1NYXhQcm9jZXNzZXMuMCByaWdodCwgZHJhd2luZyBvbiBwYXRjaAogICAgICAgIzQ4NTc2NSwgc3VibWl0dGVkIGJ5IEpvaGFubmVzIFNjaG1pZHQtRmlzY2hlciwgZm9yIExpbnV4LCBhbmQKICAgICAgIGFsc28gdXNpbmcgc3lzY3RsKCkgbW9yZSB3aWRlbHkuCiAgIAoyMDAxLTExLTI3IDA2OjUxICBqYnBuCgogICAqIGNvbmZpZ3VyZS5pbiwgcy9saW51eC5oOgoKICAgICAtIExvb2sgZm9yIDxsaW51eC90YXNrcy5oPiwgaW4gb3JkZXIgdG8gZ2l2ZSBhIGJldHRlciB2YWx1ZSBmb3IKICAgICAgIGhyU3lzdGVtTWF4UHJvY2Vzc2VzLjAuICBGcm9tIHBhdGNoICM0ODU3NjUsIHN1Ym1pdHRlZCBieQogICAgICAgSm9oYW5uZXMgU2NobWlkdC1GaXNjaGVyLgogICAKMjAwMS0xMS0yNyAwMzo1NiAgamJwbgoKICAgKiBhZ2VudC9taWJncm91cC9taWJJSS86IGtlcm5lbF9saW51eC5jLCBrZXJuZWxfbGludXguaCwgdGNwLmM6CgogICAgIC0gZ2l2ZSBjb3JyZWN0IHZhbHVlcyBmb3IgdGNwSW5FcnJzLjAgYW5kIHRjcE91dFJzdHMuMCB1bmRlciBMaW51eAogICAgICAgaWYgdGhlIGtlcm5lbCBtYWtlcyB0aGUgZGF0YSBhdmFpbGFibGUuICBGcm9tIHBhdGNoICM0ODU3NjUsCiAgICAgICBzdWJtaXR0ZWQgYnkgSm9oYW5uZXMgU2NobWlkdC1GaXNjaGVyLgogICAKMjAwMS0xMS0yNiAwOTo1MSAgamJwbgoKICAgKiB0ZXN0aW5nL3Rlc3RzL1QxMTBhZ2VudHhnZXQ6CgogICAgIC0gbG9uZ2VyIHRpbWVvdXQgZm9yIGluaXRpYWwgR0VUIChmaXggc3B1cmlvdXMgdGVzdCBmYWlsdXJlcykKICAgCjIwMDEtMTEtMjEgMTA6NDkgIGhhcmRha2VyCgogICAqIEZBUToKCiAgIGhlbHAgdXBkYXRlIHRvIHJlbW92ZSB0aGUgc3VwcG9ydCBkYXRhYmFzZQogICAKMjAwMS0xMS0yMSAwNDo1MyAgamJwbgoKICAgKiBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9kaXNrLmM6CgogICAgIC0gZml4IGNvbXBpbGF0aW9uIGZvciBVbHRyaXggNC41IChidWcgIyA0MTUxOTcpIC0tIG1ha2Ugc3VyZQogICAgICAgdmZzLmZfYnNpemUgZXhpc3RzIGluIHZhcl9leHRlbnNpYmxlX2Rpc2soKSwgYW5kIGRlZmF1bHQgaXQgdG8KICAgICAgIDEwMjQuCiAgIAoyMDAxLTExLTIwIDAyOjI3ICBqYnBuCgogICAqIHNubXBsaWIvc25tcF9hcGkuaDoKCiAgICAgLSByZW1vdmUgZHVwbGljYXRlIGRlZmluaXRpb24gb2YgU05NUF9NQVhfU0VDX05BTUVfU0laRSwgbm90ZWQgYnkKICAgICAgIEthcmwgTS4gSGVnYmxvb20uCiAgIAoyMDAxLTExLTE5IDA1OjQ4ICBqYnBuCgogICAqIG1hbi9zbm1wZC5jb25mLjUuZGVmOgoKICAgICAtIGRvY3VtZW50YXRpb24gb2YgaWdub3JlZGlzayBkaXJlY3RpdmUuCiAgIAoyMDAxLTExLTE5IDA1OjQ4ICBqYnBuCgogICAqIGFnZW50L21pYmdyb3VwL2hvc3QvOiBocl9kaXNrLmMsIGhyX2Rpc2suaCwgaHJfcGFydGl0aW9uLmMsCiAgIGhyX3BhcnRpdGlvbi5oOgoKICAgICAtIHBhdGNoIGZyb20gSm9oYW5uZXMgU2NobWlkdC1GaXNjaGVyIHRvIGFkZCBkaXJlY3RpdmUgImlnbm9yZWRpc2siIHRvCiAgICAgICBza2lwIGNlcnRhaW4gZGV2aWNlcyAoYW5kIGhlbmNlIGF2b2lkIHRoZSBgc25tcHdhbGsgdGltZXMgb3V0JyB0eXBlCiAgICAgICBwcm9ibGVtcyBmcmVxdWVudGx5IHJlcG9ydGVkKS4gIEFsc28gZXh0ZW5kcyBzZWFyY2ggcmFuZ2VzIHRvIGNvcGUgd2l0aAogICAgICAgbGFyZ2VyIG51bWJlcnMgb2YgZGlza3MgZXRjLgogICAKMjAwMS0xMS0xNiAwNTozMSAgamJwbgoKICAgKiBhcHBzL3NubXB0ZXN0LmM6CgogICAgIC0gYWRkIHN1cHBvcnQgZm9yIFVuc2lnbmVkMzIvR2F1Z2UzMiB0eXBlcwogICAKMjAwMS0xMS0xNiAwMzoyMSAgamJwbgoKICAgKiBhZ2VudC9taWJncm91cC9taWJJSS92YXJfcm91dGUuYzoKCiAgICAgLSBtb3JlIGNvbnN0LW5lc3MgaW4gcXNvcnRfY29tcGFyZSA9PiBmZXdlciB3YXJuaW5ncwogICAKMjAwMS0xMS0xNiAwMjo1NCAgamJwbgoKICAgKiBhcHBzL3NubXBuZXRzdGF0L2lmLmM6CgogICAgIC0gcGF0Y2ggZnJvbSBIYXJyaWUgSGF6ZXdpbmtlbCB0byBhZGQgcHJvdG90eXBlcyBmb3IgdGltZXJTZXQoKSBhbmQKICAgICAgIHRpbWVyUGF1c2UoKS4KICAgCjIwMDEtMTEtMTYgMDI6NTIgIGpicG4KCiAgICogYWdlbnQvc25tcGQuYzoKCiAgICAgLSBwYXRjaCBmcm9tIEhhcnJpZSBIYXpld2lua2VsIHRvICNpbmNsdWRlIDxncnAuaD4gaWYgd2UgaGF2ZSBpdAogICAKMjAwMS0xMS0xNiAwMjo0NyAgamJwbgoKICAgKiBhZ2VudC9taWJncm91cC9ub3RpZmljYXRpb24vc25tcE5vdGlmeVRhYmxlLmM6CgogICAgIC0gcGF0Y2ggZnJvbSBIYXJyaWUgSGF6ZXdpbmtlbCB0byByZXR1cm4gYSB2YWx1ZSBmcm9tCiAgICAgICBub3RpZnlUYWJsZV91bnJlZ2lzdGVyX25vdGlmaWNhdGlvbnMoKSB0byBhdm9pZCB3YXJuaW5ncwogICAKMjAwMS0xMS0xNiAwMjo0NSAgamJwbgoKICAgKiBhZ2VudC9taWJncm91cC9taWJJSS92YXJfcm91dGUuYzoKCiAgICAgLSBwYXRjaCBmcm9tIEhhcnJpZSBIYXpld2lua2VsIHRvIG1ha2Ugc2lnbmF0dXJlIG9mIHFzb3J0X2NvbXBhcmUKICAgICAgIGZ1bmN0aW9uIG1hdGNoIHRoYXQgZXhwZWN0ZWQgYnkgcXNvcnQoMykgLS0gYWRkcyBjb25zdCB0byBhcmdzLgogICAKMjAwMS0xMS0xNiAwMjo0MCAgamJwbgoKICAgKiBzbm1wbGliL21pYi5jOgoKICAgICAtIHBhdGNoIGZyb20gSGFycmllIEhhemV3aW5rZWwgdG8gbWFrZSBkZWZpbml0aW9uIG9mIHByaW50X3RyZWVfbm9kZQogICAgICAgc3RhdGljIHRvIG1hdGNoIGZvcndhcmQgZGVjbGFyYXRpb24uCiAgIAoyMDAxLTExLTE1IDEwOjAzICBqYnBuCgogICAqIGFnZW50L21pYmdyb3VwL2FnZW50eC9wcm90b2NvbC5jOgoKICAgICAtIHN0cmljdGVyIHRlc3QgZm9yIG51bGwgT0lEcwogICAKMjAwMS0xMS0xNSAwOToyNCAgamJwbgoKICAgKiBhZ2VudC9taWJncm91cC9rZXJuZWxfc3Vub3M1LmM6CgogICAgIC0gZml4IGJhZC1sb29raW5nIGV4cHJlc3Npb24gd2hpY2ggd2FzIGNhdXNpbmcgcHJvYmxlbXMgZGVzY3JpYmVkIGluCiAgICAgICBlbWFpbCB0aXRsZWQgIkRlZmVjdCByZXBvcnQgb24gVUNEIFNOTVAgdG9vbGtpdCAoY3Jhc2ggaW4KICAgICAgIGtlcm5lbF9zdW5vczUuYykiIHNlbnQgdG8gbmV0LXNubXAtdXNlcnMgb24gMjAwMS0wNy0xNy4KICAgCjIwMDEtMTEtMTUgMDg6MzMgIGpicG4KCiAgICogbWFuL3NubXBkLmNvbmYuNS5kZWY6CgogICAgIC0gZG9jdW1lbnQgcmVhZC1vbmx5IG5hdHVyZSBvZiBzbm1wRW5hYmxlQXV0aGVuVHJhcHMuMCBpZiB2YWx1ZSBpcwogICAgICAgY29uZmlndXJlZCB2aWEgdGhlIGF1dGh0cmFwZW5hYmxlIHRva2VuCiAgIAoyMDAxLTExLTE1IDA4OjI4ICBqYnBuCgogICAqIGFnZW50LzogYWdlbnRfcmVhZF9jb25maWcuYywgYWdlbnRfdHJhcC5jLAogICBtaWJncm91cC9taWJJSS9zbm1wX21pYi5jOgoKICAgICAtIG1ha2UgdmFsdWUgb2Ygc25tcEVuYWJsZUF1dGhlblRyYXBzLjAgcGVyc2lzdGVudC4gIFNldHRpbmcgdmlhCiAgICAgICBhIHJlYWQtb25seSBjb25maWd1cmF0aW9uIGZpbGUgYWxzbyBtYWtlcyBvYmplY3Qgbm90V3JpdGFibGUgKGFzCiAgICAgICBzeXNDb250YWN0LjAgZXQgYWwuKS4KICAgCjIwMDEtMTEtMTUgMDU6MTYgIGpicG4KCiAgICogdGVzdGluZy90ZXN0cy86IFQxMTFhZ2VudHhzZXQsIFQxMjFwcm94eXNldDoKCiAgICAgLSB1c2UgcHN5c2NvbnRhY3Qgbm90IHN5c2NvbnRhY3QgdG8gc2V0IGluaXRpYWwgdmFsdWUgb2Ygc3lzQ29udGFjdC4wCiAgICAgICBvYmplY3Qgc2luY2UgdGhlIGxhdHRlciBhbHNvIG1ha2VzIHRoZSBvYmplY3QgcmVhZC1vbmx5LgogICAKMjAwMS0xMS0xNSAwNTowNyAgamJwbgoKICAgKiBhZ2VudC9zbm1wZC5jOgoKICAgICAtIG1pbm9yIGZpeCB0byBmb3JtYXR0aW5nIG9mIHVzYWdlIG1lc3NhZ2UKICAgCjIwMDEtMTEtMTQgMTc6NTQgIGhhcmRha2VyCgogICAqIEZBUSwgUkVBRE1FLCBzZWRzY3JpcHQuaW4sIHZlcnNpb24uaDoKCiAgIC0gKHZlcnNpb24uaCBzZWRzY3JpcHQuaW4pOiB2ZXJzaW9uIHRhZyAoIDQuMi4zLnByZTEgKQogICAKMjAwMS0xMS0xNCAxNzo0MiAgaGFyZGFrZXIKCiAgICogc25tcGxpYi9zbm1wLmg6CgogICBudW1lcmljIGNvbW1lbnRzIGluIGJvdGggaGV4IGFuZCBkZWNpbWFsCiAgIAoyMDAxLTExLTE0IDE3OjQxICBoYXJkYWtlcgoKICAgKiBwZXJsL1NOTVAvU05NUC54czoKCiAgIGluY2x1ZGUgSU5URUdFUjMyIGluIElOVEVHRVIgY2FzZSBjaGVja2luZy4KICAgCjIwMDEtMTEtMTQgMTc6MzEgIGhhcmRha2VyCgogICAqIGFnZW50L21pYmdyb3VwL3ZlcnNpb250YWc6CgogICB2ZXJzaW9uIHRhZyBwZXJsL1NOTVAvU05NUC5wbSB3aXRoIHRoZSB1Y2Qtc25tcCB2ZXJzaW9uIG51bWJlci4KICAgCjIwMDEtMTEtMTQgMTY6MzAgIGhhcmRha2VyCgogICAqIG1hbi9zbm1wZC5jb25mLjUuZGVmOgoKICAgbWVudGlvbiBzbm1wY29uZi4KICAgCjIwMDEtMTEtMTQgMTY6MDYgIGhhcmRha2VyCgogICAqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluOgoKICAgcGF0Y2ggZnJvbSBIYXJyaWUgdG8gZml4IGluaXQgZnVuY3Rpb24gY2hlY2tpbmcgaW4gbW9kdWxlcwogICAKMjAwMS0xMS0xNCAxMTo1OCAgaGFyZGFrZXIKCiAgICogYWdlbnQvOiBhZ2VudF9jYWxsYmFja3MuaCwgYWdlbnRfcmVhZF9jb25maWcuYywKICAgbWliZ3JvdXAvbm90aWZpY2F0aW9uL3NubXBOb3RpZnlUYWJsZS5jOgoKICAgLSBtYWtlIGEgbmV3IGNhbGxiYWNrIGZvciBwcmUtdXBkYXRlLWNvbmZpZyBjb25kaXRpb25zLgogICAtIG1ha2UgdGhlIHNubXBOb3RpZnlUYWJsZSBtYWtlIHVzZSBvZiBpdCB0byByZW1vdmUgInJlYWRPbmx5IiBlbnRyaWVzCiAgICAgd2hpY2ggc2hvdWxkIGhhdmUgYmVlbiBnZW5lcmF0ZWQgdmlhIGNvbmZpZ3VyYXRpb24gcGFyc2luZy4KICAgICAtIG5vdGUgdGhhdCB0aGlzIGRvZXNuJ3QgcmVtb3ZlIHRoZSBnZW5lcmF0ZWQgdGFyZ2V0IGVudHJpZXMsIHdoaWNoCiAgICAgICBpcyBub3QgaWRlYWwsIGJ1dCBhdCBsZWFzdCBkdXBsaWNhdGUgdHJhcHMgYXJlbid0IHNlbnQuCiAgIAoyMDAxLTExLTEzIDExOjEzICBoYXJkYWtlcgoKICAgKiBhZ2VudC9taWJncm91cC9rZXJuZWxfc3Vub3M1LmM6CgogICBQYXRjaCBmcm9tIEpvY2hlbiBLbWlldHNjaCB0byBsb29rIGZvciBlcmkgaW50ZXJmYWNlcy4KICAgCjIwMDEtMTEtMTMgMDU6MjQgIGpicG4KCiAgICogYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvdm1zdGF0X3NvbGFyaXMyLmM6CgogICAgIC0gcGF0Y2ggZnJvbSBKb2NoZW4gS21pZXRzY2ggdG8gcXVpZXRlbiBzb21lIG5vaXN5IGxvZ2dpbmcKICAgCjIwMDEtMTEtMTIgMjM6MTQgIGhhcmRha2VyCgogICAqIHNubXBsaWIvOiBhc24xLmMsIG1pYi5jOgoKICAgTVMgQysrIHdhcm5pbmcgZml4ZXMgZnJvbSBIYXJyaWUgSGF6ZXdpbmtlbAogICAKMjAwMS0xMS0xMSAyMTo0OCAgbmJhCgogICAqIHNubXBsaWIvc3lzdGVtLmMsIHdpbjMyL2NvbmZpZy5oOgoKICAgUmVzdG9yZSB0aGUgb2xkIHZhbHVlIG9kIFRJTUVfV0lUSF9TWVNfVElNRQogICAKMjAwMS0xMS0wOSAxMjoyMSAgaGFyZGFrZXIKCiAgICogRkFROgoKICAgQWRkZWQgYSBnZXJtYW55IGJhc2VkIG1pcnJvcgogICAKMjAwMS0xMS0wOSAxMToyMSAgaGFyZGFrZXIKCiAgICogRkFROgoKICAgbWVudGlvbiBuZXcgbWlycm9yCiAgIAoyMDAxLTExLTA5IDExOjIwICBoYXJkYWtlcgoKICAgKiBjb25maWd1cmUsIGNvbmZpZy5oLmluLCBjb25maWd1cmUuaW46CgogICBhcHBsaWVkIGVuZ2xpc2gvdHlwby9jaGFuZ2VzIG5vdGVkIGluIGJ1ZyAjNDcxMTc5CiAgIAoyMDAxLTExLTA5IDA5OjA4ICBoYXJkYWtlcgoKICAgKiBzbm1wbGliL3NubXBfYXBpLmM6CgogICBmaXggYnVnIDQ3OTM2NTogdXNlIHN0cm5jcHkgaW4gc25tcF9hZGRfdmFyKCkuCiAgIAoyMDAxLTExLTA5IDA3OjUzICBoYXJkYWtlcgoKICAgKiB3aW4zMi9jb25maWcuaDoKCiAgIGZpeCBidWcgIzQ3NDQ4ODogYWRkIGV4dGVybiBDIHdyYXBwZXJzCiAgIAoyMDAxLTExLTA5IDA3OjQ3ICBoYXJkYWtlcgoKICAgKiBtYW4vc25tcGQuY29uZi41LmRlZjoKCiAgIGZpeCBPSURzIHRvIGluY2x1ZGUgZW50cnkgbm9kZQogICAKMjAwMS0xMS0wOCAwOTo0MyAgaGFyZGFrZXIKCiAgICogbWlicy9VQ0QtU05NUC1NSUIudHh0OgoKICAgVU5JVCBzcGVjcyBmb3IgdGhlIGZpbGVUYWJsZSB0byBzYXkga0IgZXhwbGljaXRseQogICAKMjAwMS0xMS0wOCAwOTo0MiAgaGFyZGFrZXIKCiAgICogbWFuL3NubXBkLmNvbmYuNS5kZWY6CgogICBtZW50aW9uIHRoYXQgdGhlIGZpbGVUYWJsZSBpcyBpbiBrQi4KICAgCjIwMDEtMTEtMDYgMDg6MjYgIGhhcmRha2VyCgogICAqIGxvY2FsLzogbWliMmMsIHRrbWliOgoKICAgYWRkIGZpeGVzIHRvIGNoZWNrIGZvciB0aGUgU05NUCBhbmQgVGsgcGVybCBtb2R1bGVzIGFuZCBwcmludCBhIGJldHRlcgogICBlcnJvciBtZXNzYWdlIGlmIHRoZXkncmUgbm90IGF2YWlsYWJsZSB0ZWxsaW5nIHVzZXJzIGhvdyB0byBnZXQgdGhlbS4KICAgCjIwMDEtMTEtMDYgMDg6MTYgIGhhcmRha2VyCgogICAqIHNubXBsaWIvYXNuMS5jOgoKICAgZml4IGFzbl9idWlsZF9iaXRzdHJpbmcgdG8gY2hlY2sgZm9yIE5VTEwgdmFsdWVzIChwb2ludGVkIG91dCBieSBUYXRhIEthbHlhbikuCiAgIAoyMDAxLTExLTA2IDA3OjU3ICBoYXJkYWtlcgoKICAgKiBzbm1wbGliL2FzbjEuYzoKCiAgIGxlbmd0aCBjaGVjayBmaXhlZCBmb3Igd3JhcHBlZCBhZGRpdGlvbi4gIEJ1ZyBwb2ludGVkIG91dCBieSBUYXRhIEthbHlhbgogICAKMjAwMS0xMC0zMCAyMTo0MiAgaGFyZGFrZXIKCiAgICogc25tcGxpYi86IGRlZmF1bHRfc3RvcmUuaCwgcmVhZF9jb25maWcuYywgcmVhZF9jb25maWcuaDoKCiAgIHBhdGNoIGZyb20gSGFycmllIHRvIG1ha2UgcGF0aHMgbW9yZSBjb25maWd1cmFibGUgZnJvbSB3aXRoaW4gQyBjb2RlLgogICAKMjAwMS0xMC0zMCAwNzoxNCAgamJwbgoKICAgKiBhZ2VudC9taWJncm91cC9taWJJSS9pbnRlcmZhY2VzLmM6CgogICAgIC0gZml4IGJ1ZyB3aGVyZWJ5IGludGVyZmFjZSBjb3VudGVyIGlzIG5vdCByZXNldCwgbm90ZWQgYnkgKGFtb25nc3QKICAgICAgIG90aGVycykgVmljdG9yIEtpcmhlbnNodGVpbiBpbiBwYXRjaCAjNDc0MDY0LgogICAKMjAwMS0xMC0yNiAwOTowOCAgaGFyZGFrZXIKCiAgICogY29uZmlndXJlLCBjb25maWd1cmUuaW46CgogICBwYXRjaCBmcm9tIEhhcnJpZSB0byBmaXggYWdlbnR4L2NsaWVudCAtPiBhZ2VudHgvc3ViYWdlbnQgaGVscCBtZXNzYWdlCiAgIAoyMDAxLTEwLTI2IDAzOjM0ICBqYnBuCgogICAqIG1hbi9zbm1wZC5jb25mLjUuZGVmOgoKICAgICAtIGRvY3VtZW50IHRoZSBmYWN0IHRoYXQgc2V0dGluZyBzeXNMb2NhdGlvbi4wIChldCBhbC4pIHZpYSBhCiAgICAgICBzeXNsb2NhdGlvbiAob3IgZXF1aXZhbGVudCkgdG9rZW4gbWFrZXMgdGhlIG9iamVjdCByZWFkLW9ubHksCiAgICAgICByZXR1cm5pbmcgYSBub3RXcml0YWJsZSBlcnJvciByZXNwb25zZSBpZiBhbiBhdHRlbXB0IGlzIG1hZGUgdG8KICAgICAgIFNFVCBpdC4KICAgCjIwMDEtMTAtMjQgMTA6MDggIGpicG4KCiAgICogYWdlbnQvbWliZ3JvdXAvbWliSUkvc3lzdGVtX21pYi5jOgoKICAgICAtIGZpeCB0eXBvIG5vdGVkIGJ5IFRpbSBEaWV0egogICAKMjAwMS0xMC0yNCAwOTo1NCAgamJwbgoKICAgKiBhZ2VudC9taWJncm91cC9taWJJSS86IHN5c3RlbV9taWIuYywgc3lzdGVtX21pYi5oOgoKICAgICAtIGltcGxlbWVudCBwZXJzaXN0ZW5jZSBmb3Igc3lzTG9jYXRpb24uMCwgc3lzQ29udGFjdC4wIGFuZCBzeXNOYW1lLjAKICAgCiAgICAgLSBwcmVzZW5jZSBvZiBhIHN5c2xvY2F0aW9uIHRva2VuIGluIHNubXBkLmNvbmYgbWFrZXMgc3lzTG9jYXRpb24uMAogICAgICAgbm9uLXdyaXRhYmxlIChyZXR1cm5zIG5vdFdyaXRhYmxlIG9uIFNFVCBhdHRlbXB0cykKICAgCjIwMDEtMTAtMjQgMDU6MDggIGpicG4KCiAgICogYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9zd2luc3QuYzoKCiAgICAgLSBmaXggc21hbGwgbWVtb3J5IGxlYWsganVzdCBpbnRyb2R1Y2VkCiAgIAoyMDAxLTEwLTI0IDAzOjMzICBqYnBuCgogICAqIGFjY29uZmlnLmgsIGNvbmZpZ3VyZS5pbjoKCiAgICAgLSBhdXRvY29uZiBzdXBwb3J0IGZvciBkZXRlY3RpbmcgcGtnaW5mbyBpbnRlcmZhY2UgaW4gbGliYWRtLiAgVGhhbmtzCiAgICAgICB0byBTdGVmYW4gUmFkbWFuIChwYXRjaCAjNDczNjY5KS4KICAgCjIwMDEtMTAtMjQgMDM6MzAgIGpicG4KCiAgICogYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9zd2luc3QuYzoKCiAgICAgLSB1c2UgcGtnaW5mbyBpbnRlcmZhY2UgdG8gZGV0ZXJtaW5lIHR5cGUgb2Ygc29mdHdhcmUgcGFja2FnZSBtb3JlCiAgICAgICBzcGVjaWZpY2FsbHkgaWYgcG9zc2libGUuICBTbGlnaHQgdmFyaWF0aW9uIG9uIHBhdGNoICM0NzM2NjksIHN1Ym1pdHRlZAogICAgICAgYnkgU3RlZmFuIFJhZG1hbi4KICAgCjIwMDEtMTAtMTcgMDc6NTIgIGR0czEyCgogICAqIEZBUToKCiAgIE1lbnRpb24gdGhlIE1SVEcgdHV0b3JpYWwgd2ViIHBhZ2VzCiAgICAgKGFzIHN1Z2dlc3RlZCBieSBDaHJpc3RpYW4gUm9ib3R0b20gUmVpcykKICAgCjIwMDEtMTAtMDggMTA6NTYgIGhhcmRha2VyCgogICAqIEZBUSwgUkVBRE1FLCBzZWRzY3JpcHQuaW4sIHZlcnNpb24uaDoKCiAgIC0gKHZlcnNpb24uaCBzZWRzY3JpcHQuaW4pOiB2ZXJzaW9uIHRhZyAoIDQuMi4yICkKCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCkNoYW5nZXM6IFY0LjIuMSAtPiBWNC4yLjIKCQoyMDAxLTEwLTA4IDEwOjQ3ICBoYXJkYWtlcgoKICAgKiBhZ2VudC9taWJncm91cC9ub3RpZmljYXRpb24vOiBzbm1wTm90aWZ5RmlsdGVyUHJvZmlsZVRhYmxlLmMsCiAgIHNubXBOb3RpZnlGaWx0ZXJUYWJsZS5jLCBzbm1wTm90aWZ5VGFibGUuYzoKCiAgIEFwcGx5IHBhdGNoZXMgc3VnZ2VzdGVkIGluIGJ1ZyAjNDY5MDgyIHRvIGZpeCBpbGxlZ2FsIHJvdyBjcmVhdGlvbnMKICAgd2hlbiByb3dzdGF0dXMgaXMgc2V0IHRvIGRlc3Ryb3kuCiAgIAoyMDAxLTEwLTA2IDA3OjQ5ICBoYXJkYWtlcgoKICAgKiBGQVE6CgogICBtaW5vciB0d2Vha3MgdG8gdGhlIGRvd25sb2FkIGxpc3QuCiAgIAoyMDAxLTEwLTA2IDA3OjQyICBoYXJkYWtlcgoKICAgKiBSRUFETUU6CgogICBBZGQgRGF2aWQgTGF3cmVuY2UncyB0ZXh0IGFib3V0IGNvbnRyaWJ1dGluZyBwYXRjaGVzLgogICAKMjAwMS0xMC0wNSAxODowOSAgaGFyZGFrZXIKCiAgICogRkFRLCBSRUFETUUsIHNlZHNjcmlwdC5pbiwgdmVyc2lvbi5oOgoKICAgLSAodmVyc2lvbi5oIHNlZHNjcmlwdC5pbik6IHZlcnNpb24gdGFnICggNC4yLjIucHJlNiApCiAgIAoyMDAxLTEwLTA1IDE4OjAxICBoYXJkYWtlcgoKICAgKiBhY2NvbmZpZy5oLCBjb25maWcuaC5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuaW4sCiAgIHNubXBsaWIvbXRfc3VwcG9ydC5jLCBzbm1wbGliL210X3N1cHBvcnQuaDoKCiAgIENoYW5nZSBfUkVFTlRSQU5UIGRlZmluZSB0byBOU19SRUVOVFJBTlQgdG8gbm90IGNvbmZsaWN0IHdpdGggQlNEL09TIDQuMy4KICAgCjIwMDEtMTAtMDUgMTc6MzkgIGhhcmRha2VyCgogICAqIGFnZW50L21pYmdyb3VwL21pYklJL2F0LmgsIGFnZW50L21pYmdyb3VwL21pYklJL2ljbXAuYywKICAgYWdlbnQvbWliZ3JvdXAvbWliSUkvaW50ZXJmYWNlcy5jLCBzL2lyaXguaDoKCiAgIGlyaXggc3BlY2lmaWMgZml4ZXMgbWVudGlvbmVkIGluIGJ1ZyAjNDA1NDU0CiAgIAoyMDAxLTEwLTA1IDE3OjIyICBoYXJkYWtlcgoKICAgKiBhZ2VudC9taWJncm91cC9taWJJSS92YXJfcm91dGUuYzoKCiAgIGZpeCAjNDQwODA4IHBvc3NpYmx5IG92ZXJ3cml0aW5nIGEgb2lkIGJ1ZmZlci4KICAgCjIwMDEtMTAtMDUgMTY6NTkgIGhhcmRha2VyCgogICAqIGxvY2FsL21pYjJjLnZhcnR5cGVzLmNvbmY6CgogICBmaXggdW5zaWduZWQzMiByZXR1cm4gdmFyaWFibGUgdXNhZ2UKICAgCjIwMDEtMTAtMDUgMTY6NTEgIGhhcmRha2VyCgogICAqIGFnZW50L21pYmdyb3VwL21pYklJL2F0LmM6CgogICBtb3ZlIGFycHRhYl9jdXJyZW50IGFuZCBhcnB0YWJfc2l6ZSBkZWZpbml0aW9ucyB1cCBvdXQgb2YgaWZkZWYgbWVzcy4KICAgCjIwMDEtMTAtMDUgMTY6NDcgIGhhcmRha2VyCgogICAqIGFnZW50L21pYmdyb3VwL25vdGlmaWNhdGlvbi86IHNubXBOb3RpZnlGaWx0ZXJQcm9maWxlVGFibGUuYywKICAgc25tcE5vdGlmeUZpbHRlclRhYmxlLmMsIHNubXBOb3RpZnlUYWJsZS5jOgoKICAgZG9uJ3QgY3JlYXRlIHJvd3N0YXR1cyBlbnRyaWVzIHdpdGggJ2Rlc3Ryb3knIGFzIGluaXRpYWwgdmFsdWUuCiAgIAoyMDAxLTEwLTA1IDE2OjM2ICBoYXJkYWtlcgoKICAgKiBhZ2VudC9taWJncm91cC9ub3RpZmljYXRpb24vOiBzbm1wTm90aWZ5RmlsdGVyUHJvZmlsZVRhYmxlLmMsCiAgIHNubXBOb3RpZnlGaWx0ZXJUYWJsZS5jLCBzbm1wTm90aWZ5VGFibGUuYzoKCiAgIGZpeGVkIFVORE8gY2xhdXNlcy4KICAgCjIwMDEtMTAtMDUgMDg6NTAgIGhhcmRha2VyCgogICAqIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL2RsbW9kLmMsIHNubXBsaWIvc25tcF9hcGkuYzoKCiAgIFBhdGNoIGZyb20gSGFycmllIGZvciBwaWNreSBjb21waWxlcnMuCiAgIAoyMDAxLTEwLTA1IDA4OjQ5ICBoYXJkYWtlcgoKICAgKiBhZ2VudC9hZ2VudF90cmFwLmM6CgogICBiZXR0ZXIgZXJyb3IgZGVzY3JpcHRpb24gZm9yIHRyYXBzZXNzCiAgIAoyMDAxLTEwLTA1IDA4OjQ5ICBoYXJkYWtlcgoKICAgKiBGQVE6CgogICBBZGRlZCBtaXJyb3Igc2l0ZXMuCiAgIAoyMDAxLTEwLTA1IDA3OjEwICBoYXJkYWtlcgoKICAgKiBtaWJzLzogU01VWC1NSUIudHh0LCBVQ0QtU05NUC1NSUIudHh0OgoKICAgTUlCIHByb2JsZW1zIHBvaW50ZWQgb3V0IGJ5IE1hcmVrIE1hbG93aWR6aWtpCiAgIAoyMDAxLTEwLTA0IDE3OjA5ICBoYXJkYWtlcgoKICAgKiBzbm1wbGliL3NubXBfYXV0aC5jOgoKICAgRG9uJ3Qgd3JpdGUgYSBudWxsIHBhc3QgdGhlIGVuZCBvZiB0aGUgY29tbXVuaXR5IHN0cmluZyBidWZmZXIuCiAgIAoyMDAxLTEwLTA0IDA3OjE0ICBoYXJkYWtlcgoKICAgKiBSRUFETUUsIGxvY2FsL3NubXBjb25mLmRpci9zbm1wZC5jb25mL2V4dGVuZGluZywKICAgbWFuL3NubXBkLmNvbmYuNS5kZWY6CgogICBQYXRjaCBmcm9tIFQuIEouIE1hdGhlcjogRG9jdW1lbnRhdGlvbiBvZiB0aGUgcGFzc19wZXJzaXN0IHNubXBkLmNvbmYgdG9rZW4uCiAgIAoyMDAxLTEwLTA0IDA3OjE0ICBoYXJkYWtlcgoKICAgKiBsb2NhbC9wYXNzX3BlcnNpc3R0ZXN0OgoKICAgUGF0Y2ggZnJvbSBULiBKLiBNYXRoZXI6IEFuIGV4YW1wbGUgKHBlcmwpIHBhc3NfcGVyc2lzdCBzY3JpcHQuCiAgIAoyMDAxLTEwLTA0IDAyOjIxICBqYnBuCgogICAqIGFnZW50L3NubXBkLmM6CgogICAgIC0gZGlzYWJsZSBzdGRlcnIgbG9nZ2luZyAoaWYgcmVxdWVzdGVkKSBiZWZvcmUgY2FsbGluZyBpbml0X21pYl9tb2R1bGVzKCkuCiAgICAgICBUaGlzIHNob3VsZCBmaXggdGhlIHByb2JsZW0gbm90ZWQgYnkgTmlnZWwgTWV0aGVyaW5naGFtIGluIGJ1ZyAjNDE4ODU3CiAgICAgICB3aGVyZWJ5IHRoZSBBZ2VudFggbWFzdGVyIG1vZHVsZSBwcmludHMgYSBtZXNzYWdlIHRvIHN0ZGVyciB3aGljaCBjYXVzZXMKICAgICAgIGEgU0lHUElQRSB3aGVuIHRoZSBhZ2VudCBpcyBzdGFydGVkIGFzIGEgZGFlbW9uLgogICAKICAgICAgIEFsc28gbm90ZWQgd2l0aCBleHRlbnNpdmUgYW5hbHlzaXMgYnkgVGVkIFJ1bGUgaW4gYnVnICM0Njc1NTEuCiAgIAoyMDAxLTEwLTAzIDExOjIyICBoYXJkYWtlcgoKICAgKiBGQVEsIFJFQURNRSwgc2Vkc2NyaXB0LmluLCB2ZXJzaW9uLmg6CgogICAtICh2ZXJzaW9uLmggc2Vkc2NyaXB0LmluKTogdmVyc2lvbiB0YWcgKCA0LjIuMi5wcmU1ICkKICAgCjIwMDEtMTAtMDMgMTE6MTYgIGhhcmRha2VyCgogICAqIGFwcHMvc25tcHRyYXBkLmMsIGFwcHMvc25tcHRyYXBkX2xvZy5jLCBzbm1wbGliL21pYi5jLAogICBzbm1wbGliL3Rvb2xzLmM6CgogICBwcm9wZXIgY29uc3QgY2FzdGluZyBpbiBmcm9udCBvZiBNYXJra3UncyBjYXN0aW5nIHBhdGNoLgogICAKMjAwMS0xMC0wMyAxMToxMCAgaGFyZGFrZXIKCiAgICogYXBwcy9zbm1wdHJhcGQuYywgYXBwcy9zbm1wdHJhcGRfbG9nLmMsIHNubXBsaWIvYXNuMS5jLAogICBzbm1wbGliL21pYi5jLCBzbm1wbGliL3Rvb2xzLmM6CgogICBQYXRjaDogcHJvcGVyIGNhc3RzIGZvciBwaWNreSBjb21waWxlcnMgZnJvbSBNYXJra3UgTGF1a2thbmVuLgogICAKMjAwMS0xMC0wMyAwOToyMiAgaGFyZGFrZXIKCiAgICogc25tcGxpYi9zbm1wX2FwaS5jOgoKICAgZG9uJ3QgcmJ1aWxkIGJleW9uZCB0aGUgZW5kIG9mIGEgYnVmZmVyIChuZWVkZWQgYnVmZmVyICsgbGVuZ3RoICItIDEiKS4KICAgCjIwMDEtMTAtMDMgMDU6MzggIGpicG4KCiAgICogc25tcGxpYi9rZXl0b29scy5jOgoKICAgICAtIGNoYW5nZSBleHByZXNzaW9uIGF0IGwuIDQxNSBmcm9tOgogICAKICAgICAgICAgICAqa2NzdHJpbmcrKyA9ICprY3N0cmluZyBeICpuZXdrZXkrKzsKICAgCiAgICAgICB3aGljaCBoYXMgdW5kZWZpbmVkIGJlaGF2aW91ciB0bzoKICAgCiAgICAgICAgICAgKmtjc3RyaW5nKysgXj0gKm5ld2tleSsrOwogICAKICAgICAgIHdoaWNoIGlzIG9rYXkgKHNpbmNlICprY3N0cmluZyBpcyBvbmx5IGV2YWx1YXRlZCBvbmNlKS4gIFNpbWlsYXJseQogICAgICAgYXQgbC4gNTMwLiAgVGhlIHByZXZpb3VzIGNvbnN0cnVjdHMgY2F1c2Ugd2FybmluZ3Mgd2l0aCBHQ0MzIGFuZAogICAgICAgc29tZSBvdGhlciBjb21waWxlcnMuICBUaGFua3MgdG8gTmllbCBNYXJrd2ljayB3aG8gbm90ZWQgdGhpcyBpbgogICAgICAgYnVnICM0NjU5NjkuCiAgIAoyMDAxLTEwLTAyIDE4OjAxICBoYXJkYWtlcgoKICAgKiBhZ2VudC9hZ2VudF90cmFwLmM6CgogICBDaGFuZ2Ugb2lkIGxlbmd0aHMgdG8gc2l6ZV90IGZyb20gaW50IChzZWdmYXVsdHMgb24gYW4gYWxwaGEvbGludXgpLgogICAKMjAwMS0xMC0wMiAxNzo0NiAgaGFyZGFrZXIKCiAgICogYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvbWVtb3J5X3NvbGFyaXMyLmM6CgogICBBZGQgcHJvdG90eXBlIGZvciBnZXRUb3RhbFN3YXAoKS4KICAgCjIwMDEtMTAtMDIgMTc6MTUgIGhhcmRha2VyCgogICAqIGFnZW50L21pYmdyb3VwL3RhcmdldC86IHNubXBUYXJnZXRBZGRyRW50cnkuYywKICAgc25tcFRhcmdldFBhcmFtc0VudHJ5LmM6CgogICByZXR1cm4gTk9UX1dSSVRBQkxFIGluc3RlYWQgb2YgUkVBRE9OTFkgYXMgcG9pbnRlZCBvdXQgYnkKICAgYXJhamVzaEBpbmRpYS5hZHZlbnRuZXQuY29tLgogICAKMjAwMS0xMC0wMiAxNzowMyAgaGFyZGFrZXIKCiAgICogd2luMzIvY29uZmlnLmg6CgogICBQYXRjaCBmcm9tIE1hcmMgTW9lbGxlciB0byBkZWZpbmUgc25wcmludGYgYXMgX3NucHJpbnRmCiAgIAoyMDAxLTEwLTAyIDE3OjAyICBoYXJkYWtlcgoKICAgKiBhZ2VudC9taWJncm91cC9ob3N0L2hyX3ByaW50LmM6CgogICBQYXRjaCBmcm9tIE1hcmMgTW9lbGxlciB0byBjaGVjayBmb3IgSEFWRV9MUFNUQVQgYmVmb3JlIGNhbGxpbmcgaXQuCiAgIAoyMDAxLTEwLTAyIDE3OjAwICBoYXJkYWtlcgoKICAgKiBSRUFETUU6CgogICBhZGQgUm9uLgogICAKMjAwMS0xMC0wMiAxNzowMCAgaGFyZGFrZXIKCiAgICogc25tcGxpYi9zeXN0ZW0uYzoKCiAgIGdldF91cHRpbWUoKSBpbXBsZW1lbnRhdGlvbiBmb3Igd2luZG93cyBmcm9tIFJvbiBNZXZpc3Nlbi4KICAgCjIwMDEtMTAtMDEgMTc6MzggIGhhcmRha2VyCgogICAqIEZBUSwgUkVBRE1FLCBzZWRzY3JpcHQuaW4sIHZlcnNpb24uaDoKCiAgIC0gKHZlcnNpb24uaCBzZWRzY3JpcHQuaW4pOiB2ZXJzaW9uIHRhZyAoIDQuMi4yLnByZTQgKQogICAKMjAwMS0xMC0wMSAxNzozOCAgaGFyZGFrZXIKCiAgICogYWdlbnQvTWFrZWZpbGUuaW4sIGFnZW50L21pYmdyb3VwL01ha2VmaWxlLmluLCBhcHBzL01ha2VmaWxlLmluLAogICBhcHBzL3NubXBuZXRzdGF0L01ha2VmaWxlLmluLCBzbm1wbGliL01ha2VmaWxlLmluLAogICB0ZXN0aW5nL01ha2VmaWxlLmluOgoKICAgbWFrZSBtYWtlZmlsZWluZGVwZW5kCiAgIAoyMDAxLTEwLTAxIDE3OjM3ICBoYXJkYWtlcgoKICAgKiBtYWtlZmlsZWluZGVwZW5kLnBsOgoKICAgdHJhbnNsYXRlIC5vIC0+IC5sbyBieSBoYW5kLgogICAKMjAwMS0xMC0wMSAxNzowNyAgaGFyZGFrZXIKCiAgICogYWdlbnQvbWliZ3JvdXAvaG9zdC86IGhyX2Rpc2suYywgaHJfcHJpbnQuYzoKCiAgIEFwcGxpZWQgcGF0Y2ggIzQ2NTU0NSB0byBmaXggZGVsYXlzIGluIGhvc3QgcmVzb3VyY2VzIG1pYiB3aGVuIGxvb2tpbmcKICAgYXQgZGV2aWNlcyBhbmQgcHJpbnRlcnMuCiAgIAoyMDAxLTEwLTAxIDE2OjQ1ICBoYXJkYWtlcgoKICAgKiBDaGFuZ2VMb2csIE5FV1M6CgogICBOZXcgc3R1ZmYgaW4gNC4yLjIKICAgCjIwMDEtMTAtMDEgMTY6MzkgIGhhcmRha2VyCgogICAqIGFwcHMvc25tcHdhbGsuYywgbWFuL3NubXB3YWxrLjE6CgogICBtYWtlIHNubXB3YWxrIGRlZmF1bHQgdG8gZGV0ZWN0aW5nIGlsbGVnYWwgT0lEIGluY3JlYXNlcy4gIC1DYyB0dXJucwogICBpdCBvZmYgaW5zdGVhZCBvZiBvbi4KICAgCjIwMDEtMTAtMDEgMTA6MzYgIGhhcmRha2VyCgogICAqIENPUFlJTkc6CgogICBlZGl0aW5nIHR3ZWFrcyBieSBKb2huIHRvIGNvdW50IHRoaW5ncyBwcm9wZXJseS4gIFdlcyBsb29zZXMgdGhlCiAgIGFiaWxpdHkgdG8gY291bnQgYmV5b25kIHRoZSBudW1iZXIgMi4KICAgCjIwMDEtMTAtMDEgMTA6MjYgIGhhcmRha2VyCgogICAqIENPUFlJTkc6CgogICBkaXR0by4KICAgCjIwMDEtMTAtMDEgMTA6MjIgIGhhcmRha2VyCgogICAqIENPUFlJTkc6CgogICBWYXJpb3VzIGNvcHlyaWdodCB1cGRhdGVzLgogICAKMjAwMS0xMC0wMSAwMjo1MiAgamJwbgoKICAgKiBzbm1wbGliL3NjYXBpLmM6CgogICAgIC0gYWRkICNpbmNsdWRlICJzbm1wX2xvZ2dpbmcuaCIgdG8gYXZvaWQgY29tcGlsYXRpb24gcHJvYmxlbXMgb24KICAgICAgIHNvbWUgcGxhdGZvcm1zIGludHJvZHVjZWQgYnkgbmV3IGVycm9yIG1lc3NhZ2VzLiBTZWU6CiAgICAgICA8VVJMOmh0dHA6Ly9zb3VyY2Vmb3JnZS5uZXQvdHJhY2tlci9pbmRleC5waHA/ZnVuYz1kZXRhaWwmYWlkPTQ2NTgwNyZncm91cF9pZD0xMjY5NCZhdGlkPTExMjY5ND4KICAgCjIwMDEtMDktMjkgMDY6MDYgIG5iYQoKICAgKiBzbm1wbGliL21pYi5oOgoKICAgQWRkIGEgbWlzc2luZyBwcm90b3R5cGUgZm9yIHNubXBfcmVhbGxvY19ieV90eXBlCiAgIAoyMDAxLTA5LTI5IDA2OjA1ICBuYmEKCiAgICogYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvbWVtb3J5X3NvbGFyaXMyLmg6CgogICBGaXggYSBiYWQgI2lmZGVmIHBhcmFudGhlc2VzCiAgIAoyMDAxLTA5LTI2IDEwOjIxICBoYXJkYWtlcgoKICAgKiBhZ2VudC9taWJncm91cC9zbXV4L3NtdXguYzoKCiAgIHNtdXggaXMgKm5vdCogYSBwcm9wZXIgZGVsZWdhdGlvbiBzdWJhZ2VudC4KICAgCjIwMDEtMDktMjUgMTI6NDYgIGhhcmRha2VyCgogICAqIEZBUSwgUkVBRE1FLCBzZWRzY3JpcHQuaW4sIHZlcnNpb24uaDoKCiAgIC0gKHZlcnNpb24uaCBzZWRzY3JpcHQuaW4pOiB2ZXJzaW9uIHRhZyAoIDQuMi4yLnByZTMgKQogICAKMjAwMS0wOS0yNSAxMTo1MSAgaGFyZGFrZXIKCiAgICogc25tcGxpYi86IHNjYXBpLmMsIHNjYXBpLmg6CgogICBCZXR0ZXIgZXJyb3IgbWVzc2FnZXMgd2hlbiBlbmNyeXB0aW9uIHN1cHBvcnQgaXNuJ3QgYXZhaWxhYmxlLgogICAKMjAwMS0wOS0yNSAwNzo1OSAgamJwbgoKICAgKiBhcHBzL3NubXB0cmFwZF9sb2cuYzoKCiAgICAgLSByZWluc3RhdGUgYW5vdGhlciBzcGFjZSB0aGF0IHdvdWxkIG1ha2UgdGhlIHRlc3Qgc3VpdGUgZmFpbAogICAKMjAwMS0wOS0yNSAwNzo1MyAgamJwbgoKICAgKiBhcHBzL3NubXB0cmFwZF9sb2cuYzoKCiAgICAgLSByZWluc3RhdGUgYSBtaXNzaW5nIHNwYWNlCiAgIAoyMDAxLTA5LTI1IDA1OjQzICBqYnBuCgogICAqIGFwcHMvOiBzbm1wdHJhcGQuYywgc25tcHRyYXBkX2xvZy5jLCBzbm1wdHJhcGRfbG9nLmg6CgogICAgIC0gaW5jb3Jwb3JhdGUgcmV3cml0dGVuIG91dHB1dCBmdW5jdGlvbnMgZnJvbSBtYWluIGJyYW5jaCB0byBhdm9pZAogICAgICAgZml4ZWQgbGVuZ3RoIGJ1ZmZlcnMKICAgCjIwMDEtMDktMjUgMDU6NDEgIGpicG4KCiAgICogc25tcGxpYi9zY2FwaS5jOgoKICAgICAtIHVzZSByZWxvY2F0aW5nIGJ1ZmZlciB2ZXJzaW9uIG9mIHNwcmludCBmdW5jdGlvbnMKICAgCjIwMDEtMDktMjUgMDU6NDAgIGpicG4KCiAgICogc25tcGxpYi86IG1pYi5jLCBtaWIuaCwgcGFyc2UuaDoKCiAgICAgLSBhZGQgcmVsb2NhdGluZyBidWZmZXIgY29kZSBmcm9tIG1haW4gYnJhbmNoCiAgIAoyMDAxLTA5LTI1IDA1OjM5ICBqYnBuCgogICAqIHNubXBsaWIvOiB0b29scy5jLCB0b29scy5oOgoKICAgICAtIGFkZCBzbm1wX3JlYWxsb2MoKSBhbmQgc25tcF9zdHJjYXQgZnVuY3Rpb25zIHdoaWNoIHRoZSByZWxvY2F0aW5nCiAgICAgICBidWZmZXIgY29kZSB1c2VzCiAgIAoyMDAxLTA5LTIxIDE3OjE2ICBoYXJkYWtlcgoKICAgKiBhZ2VudC9taWJncm91cC9taWJJSS9pbnRlcmZhY2VzLmM6CgogICBQYXRjaCBmcm9tIEdsZW5uIE1hbnNmaWVsZCB0byBmaXggaW50ZXJmYWNlIGNvdW50aW5nIG9uIGludGVyZmFjZXMKICAgd2l0aG91dCBpcCBhZGRyZXNzZXMuCiAgIAoyMDAxLTA5LTIwIDEyOjQ3ICBoYXJkYWtlcgoKICAgKiBhZ2VudC9taWJncm91cC91dGlsX2Z1bmNzLmM6CgogICBjaGVjayBza2lwX3doaXRlKCkgcmV0dXJuIChhcyBtZW50aW9uZWQgaW4gcGF0Y2ggIzQ2MjIwMSkuCiAgIAoyMDAxLTA5LTIwIDExOjMwICBoYXJkYWtlcgoKICAgKiBzbm1wbGliL21pYi5jOgoKICAgZml4ZWQgYSBwb3NzaWJsZSBidWZmZXIgb3ZlcmZsb3cgYnVnIGluIHNwcmludF9hc2NpaXN0cmluZyBhcyBwb2ludGVkCiAgIG91dCBieSBidWcgIzQ2MzIyNi4KICAgCjIwMDEtMDktMjAgMDk6NDYgIGhhcmRha2VyCgogICAqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluOgoKICAgRG9uJ3Qgd2FybiBhYm91dCBtaXNzaW5nIG9wZW5zc2wgdW5sZXNzIGV4cGxpY2l0bHkgYXNrZWQgKGFuZCB0aGVuIGVycm9yKS4KICAgCjIwMDEtMDktMjAgMDk6MTIgIGpicG4KCiAgICogYWdlbnQvOiBzbm1wX3ZhcnMuYywgbWliZ3JvdXAvbWliSUkvaW50ZXJmYWNlcy5jOgoKICAgICAtIG1vdmUgaGVhZGVycyBhcm91bmQgdG8gZml4IGNvbXBpbGF0aW9uIG9uIFNvbGFyaXMgMi43OyBzeXMvc3RyZWFtLmgKICAgICAgIG5lZWRzIHRvIGJlIGluY2x1ZGVkIGJlZm9yZSBzeXMvc29ja2V0dmFyLmggZm9yIHRoaXMgcGxhdGZvcm0uCiAgIAoyMDAxLTA5LTIwIDA5OjA5ICBqYnBuCgogICAqIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL21lbW9yeV9zb2xhcmlzMi5jOgoKICAgICAtIHJlbW92ZSAjaW5jbHVkZSAic3lzdGVtLmgiIHdoaWNoIHVzZXMgdGhlIHR5cGUgaW5fYWRkcl90IHRoZXJlYnkKICAgICAgIGNhdXNpbmcgcHJvYmxlbXMsIGFuZCBzZWVtcyB0byBiZSB1bm5lY2Vzc2FyeSBhbnl3YXkuCiAgIAoyMDAxLTA5LTIwIDA2OjU5ICBoYXJkYWtlcgoKICAgKiBSRUFETUU6CgogICBNYWtlIHN1cmUgSGFycmllJ3MgbmFtZSBpcyBpbiB0aGUgcGF0Y2hlcyBSRUFETUUgYXMgd2VsbCBhcyB0aGUgbWFpbmxpbmUuCiAgIAoyMDAxLTA5LTIwIDA2OjU4ICBoYXJkYWtlcgoKICAgKiBzbm1wbGliLzogZGVmYXVsdF9zdG9yZS5jLCBtaWIuYywgcGFyc2UuYywgc25tcF9hcGkuYywKICAgc25tcF9jbGllbnQuYywgc25tcF9kZWJ1Zy5jLCBzbm1wdXNtLmM6CgogICBQYXRjaCBmcm9tIEhhcnJpZSBIYXpld2lua2VsOgogICAgIC0gcHJvcGVyIHByb3RvdHlwZXMgZm9yIHNvbWUgZnVuY3Rpb25zLgogICAKMjAwMS0wOS0xOSAxNzoxOSAgaGFyZGFrZXIKCiAgICogRkFRLCBSRUFETUUsIHNlZHNjcmlwdC5pbiwgdmVyc2lvbi5oOgoKICAgLSAodmVyc2lvbi5oIHNlZHNjcmlwdC5pbik6IHZlcnNpb24gdGFnICggNC4yLjIucHJlMiApCiAgIAoyMDAxLTA5LTE5IDE3OjAxICBoYXJkYWtlcgoKICAgKiBGQVEsIFJFQURNRSwgc2Vkc2NyaXB0LmluLCB2ZXJzaW9uLmg6CgogICAtICh2ZXJzaW9uLmggc2Vkc2NyaXB0LmluKTogdmVyc2lvbiB0YWcgKCA0LjIuMi5wcmUxICkKICAgCjIwMDEtMDktMTkgMTY6NTkgIGhhcmRha2VyCgogICAqIEZBUSwgUkVBRE1FLCBzZWRzY3JpcHQuaW4sIHZlcnNpb24uaDoKCiAgIC0gKHZlcnNpb24uaCBzZWRzY3JpcHQuaW4pOiB2ZXJzaW9uIHRhZyAoIDQuMi4yICkKICAgCjIwMDEtMDktMTggMTc6MjIgIGhhcmRha2VyCgogICAqIG1hbi9zbm1wY21kLjEsIHNubXBsaWIvbWliLmMsIHNubXBsaWIvc25tcF9hcGkuYzoKCiAgIFVuZG8gTmllbHMnIGNoYW5nZSB0byBhbGxvdyBjb21tYW5kIGxpbmUgb3B0aW9ucyB0byBvdmVycmlkZSAuY29uZgogICBmaWxlcy4gIFJpZ2h0IGdvYWwsIHdyb25nIGJyYW5jaCB0byBkbyBpdCBpbiBhcyBpdCBicm9rZSBTTk1QdjMgYW1vbmcKICAgb3RoZXIgdGhpbmdzLiAgVGhlIGluaXRpYWxpemF0aW9uIHByb2Nlc3MgaXMgcmF0aGVyIHNlbnNpdGl2ZSB0bwogICBvcmRlcmluZy4KICAgCjIwMDEtMDktMTggMTU6MDggIG5iYQoKICAgKiBzL2Rhcndpbi5oOgoKICAgRml4IGFuIG92ZXJzaWdodCBpbiB0aGUgRGFyd2luIHBhdGNoCiAgIAoyMDAxLTA5LTE4IDE1OjA4ICBuYmEKCiAgICogYWNsb2NhbC5tNCwgY29uZmlndXJlLCBjb25maWd1cmUuaW46CgogICBGaXggYW4gb3ZlcnNpZ2h0IGluIHRoZSBEYXJ3aW4gcGF0Y2hlcwogICAKMjAwMS0wOS0xNyAwOTowMCAgbmJhCgogICAqIHMvZGFyd2luLmg6CgogICBUaGUgZGFyd2luIHN5c3RlbSBmaWxlLCB3aGljaCBJIGZvcmdvdCB3aGVuIGNvbW1pdHRpbmcgdGhlIHJlc3Qgb2YKICAgdGhlIGRhcndpbiBwYXRjaC4KICAgCjIwMDEtMDktMTcgMDc6MDcgIGhhcmRha2VyCgogICAqIGNvbmZpZy5oLmluOgoKICAgYXV0b2hlYWRlciBydW4KICAgCjIwMDEtMDktMTcgMDQ6MTMgIG5iYQoKICAgKiBhcHBzL3NubXB0cmFwZC5jOgoKICAgRml4IG5ld2xpbmVzIGluc2lkZSB1c2FnZSBzdHJpbmcuCiAgIAoyMDAxLTA5LTE2IDE0OjU2ICBuYmEKCiAgICogYWdlbnQvOiBzbm1wZC5jLCBtaWJncm91cC9zbXV4L3NtdXguYzoKCiAgIE1vdmUgdGhlIHNtdXhfbGlzdGVuX3NkIHZhcmlhYmxlIHRvIHNtdXguYy4gVGhpcyB3YXkgaXQgd2lsbCBiZSBpbiB0aGUKICAgbGlicmFyeSBzbyB0aGUgbGlua2VyIHdvbnQgYmUgdXBzZXQgd2hlbiB5b3UgbGluayB3aXRoIHRoZSBhZ2VudCBsaWJyYXJ5LgogICAKMjAwMS0wOS0xNiAxNDo1MiAgbmJhCgogICAqIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL21lbW9yeV9uZXRic2QxLmgsCiAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Ztc3RhdF9uZXRic2QxLmMsIHMvb3BlbmJzZC5oOgoKICAgUGF0Y2hlcyBmb3IgT3BlbkJTRCAyLjkKICAgCjIwMDEtMDktMTYgMTQ6NDkgIG5iYQoKICAgKiBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9kaXNraW8uYzoKCiAgIGRpc2tpbyBzdXBwb3J0IGZvciBGcmVlQlNENC4gVGhhbmtzIHRvIFlpbWluIEdlCiAgIAoyMDAxLTA5LTE2IDE0OjE2ICBuYmEKCiAgICogYWNsb2NhbC5tNCwgY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGFnZW50L2FnZW50X3JlYWRfY29uZmlnLmMsCiAgIGFnZW50L3NubXBfdmFycy5jLCBhZ2VudC9taWJncm91cC91Y2Rfc25tcC5oLAogICBhZ2VudC9taWJncm91cC9ob3N0L2hyX3N0b3JhZ2UuYywgYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9zd3J1bi5jLAogICBhZ2VudC9taWJncm91cC9taWJJSS9pbnRlcmZhY2VzLmMsCiAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL21lbW9yeV9mcmVlYnNkMi5jLAogICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9tZW1vcnlfZnJlZWJzZDIuaCwKICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvdm1zdGF0X2ZyZWVic2QyLmM6CgogICBQYXRjaGVzIHRvIHN1cHBvcnQgRGFyd2luIChNYWMgT1MvWCkKICAgVGhhbmtzIHRvIFRleCBDbGF5dG9uIDx0ZXhAZGFydHdhcmUuY29tPgogICAKMjAwMS0wOS0xNiAxNDowMyAgbmJhCgogICAqIGFnZW50LzogYWdlbnRfaW5kZXguYywgYWdlbnRfcmVnaXN0cnkuYywgbWliZ3JvdXAvbWliaW5jbC5oLAogICBtaWJncm91cC91dGlsX2Z1bmNzLmMsIG1pYmdyb3VwL2V4YW1wbGVzL2V4YW1wbGUuYywKICAgbWliZ3JvdXAvbWliSUkvaWNtcC5jLCBtaWJncm91cC9taWJJSS9pcC5jLAogICBtaWJncm91cC9taWJJSS9pcEFkZHIuYywgbWliZ3JvdXAvbWliSUkvc3lzT1JUYWJsZS5jLAogICBtaWJncm91cC9taWJJSS90Y3AuYywgbWliZ3JvdXAvbWliSUkvdGNwVGFibGUuYywKICAgbWliZ3JvdXAvbWliSUkvdWRwLmMsIG1pYmdyb3VwL3VjZC1zbm1wL3Byb3h5LmM6CgogICBIZWFkZXIgcmVhcnJhbmdlbWVudHMgdG8gbWFrZSBCU0QncyBoYXBweSBhZnRlciB0aGUgV0lOMzIgcGF0Y2gKICAgCjIwMDEtMDktMTUgMDY6MDggIGpicG4KCiAgICogc25tcGxpYi9hc24xLmM6CgogICAgIC0gYWRkIG1pc3NpbmcgYXJndW1lbnQgdG8gc25wcmludGYgKGVycnByZSBjb3JyZXNwb25kaW5nIHRvICVzKSAtLQogICAgICAgaXQgd2FzIG1pc3NpbmcgZnJvbSB0aGUgcGF0Y2ggKCM0NTIwMjcpCiAgIAoyMDAxLTA5LTE0IDE3OjI5ICBoYXJkYWtlcgoKICAgKiBwZXJsL1NOTVAvU05NUC54czoKCiAgIC0gZGVidWdnaW5nIGNvbXBpbGF0aW9uIGZpeGVzCiAgIAoyMDAxLTA5LTE0IDE3OjI2ICBoYXJkYWtlcgoKICAgKiBsb2NhbC90a21pYjoKCiAgIG1hbnkgbmVlZGVkIGNoYW5nZXMgZnJvbSBtYWlubGluZSBtZXJnZWQgaW50byBwYXRjaGVzIGJyYW5jaAogICAKMjAwMS0wOS0xNCAxNToyNCAgaGFyZGFrZXIKCiAgICogc25tcGxpYi9hc24xLmM6CgogICBQYXRjaCAjNDUyMDI3IGZyb20gTWFyY3VzIE1laXNzbmVyOgogICAgIHNlY3VyaXR5IGZpeCB0byBtYWtlIHN1cmUgdGhhdCBsb25nIGFzbiBsZW5ndGhzIGNhbid0IGJlIHVzZWQgYW5kCiAgICAgYXJlbid0IGltcHJvcGVybHkgY2FzZWQgdG8gYSBzaWduZWQgdmFsdWUuCiAgIAoyMDAxLTA5LTE0IDE0OjIzICBoYXJkYWtlcgoKICAgKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbjoKCiAgIHBhdGNoICM0MzI5ODIgZnJvbSBIb2xsaXM6IGZpeCAtLXdpdGgtbGlid3JhcCB3aXRob3V0IGEgcGF0aCBvcHRpb24KICAgCjIwMDEtMDktMTQgMTM6NTggIG5iYQoKICAgKiBhZ2VudC9taWJncm91cC86IGtlcm5lbF9zdW5vczUuYywgbWliSUkvdWRwVGFibGUuYzoKCiAgIFNvbGFyaXMgc3VwcG9ydCBmb3IgdWRwVGFibGUuCiAgIFRoYW5rcyB0byBKb2hhbm5lcyBTY2htaWR0LUZpc2NoZXIgPGpzZkBJbnRlckZhY2UtQUcuY29tPgogICAKMjAwMS0wOS0xNCAwOTo1MyAgaGFyZGFrZXIKCiAgICogc25tcGxpYi91Y2Qtc25tcC1pbmNsdWRlcy5oOgoKICAgZnJvbSBwYXRjaCAjNDIzNDY2OiBhZGQgYWJpbGl0eSB0byB1c2UgdGhpcyBmaWxlIHdpdGhpbiB0aGUgc291cmNlIHRyZWUKICAgCjIwMDEtMDktMTQgMDk6NDggIGhhcmRha2VyCgogICAqIHdpbjMyL2NvbmZpZy5oLmJvcmxhbmQ6CgogICBBZGRlZCBjb25maWcuaCBmaWxlIGZvciBib3JsYW5kIGNvbXBpbGVycyAod2hpY2ggZGlmZmVycyBzbGlnaHRseSkuCiAgICAgRnJvbSBwYXRjaCAjNDIzNDY2CiAgIAoyMDAxLTA5LTE0IDA5OjI4ICBkdHMxMgoKICAgKiBhZ2VudC9taWJncm91cC9taWJJSS86IGF0LmMsIGljbXAuYywgaW50ZXJmYWNlcy5jLCBpcC5jLAogICBpcEFkZHIuYywgdGNwLmMsIHRjcFRhYmxlLmMsIHVkcC5jLCB1ZHBUYWJsZS5jLCB2YXJfcm91dGUuYzoKCiAgIE1pYi0yIHN1cHBvcnQgZm9yIFdpbmRvd3Mgc3lzdGVtcy4KICAgKk1hbnkqIHRoYW5rcyB0byBMYXRoYSBTLCBmb3IgZmlsbGluZyB0aGlzIGxvbmctYXdhaXRlZCBuZWVkLgogICAKMjAwMS0wOS0xNCAwOTowNyAgZHRzMTIKCiAgICogYWdlbnQvbWliZ3JvdXAvbWliSUkvOiBpY21wLmMsIGlwLmMsIGlwQWRkci5jLCB0Y3AuYywgdGNwVGFibGUuYywKICAgdWRwLmMsIHVkcFRhYmxlLmM6CgogICBNb3ZlIHBhY2thZ2UtcHJvdmlkZWQgaGVhZGVyIGluY2x1ZGVzICgnbWliaW5jbCcgYW5kICd1dGlsX2Z1bmNzJykKICAgdG8gYWZ0ZXIgdGhlIHN5c3RlbSBpbmNsdWRlcy4gIFRoaXMgc2hvdWxkbid0IGFmZmVjdCBtb3N0IHN5c3RlbXMsCiAgIGJ1dCBpcyBuZWNlc3NhcnkgZm9yIHRoZSBXaW5kb3dzIHBvcnQuCiAgIAoyMDAxLTA5LTE0IDA4OjI4ICBkdHMxMgoKICAgKiBjb25maWd1cmU6CgogICBQcm9wb2dhdGUgdGVzdCBmb3IgPG5ldGluZXQvaXBfaWNtcC5oPiB0aHJvdWdoIHRvIHRoZSBiaXQgdGhhdCBkb2VzIHRoZSB3b3JrLgogICAKICAgICAoT3VyIGlsbHVzdHJpb3VzIGxlYWRlciBjbGVhcmx5IGhhcyBubyBjb25maWRlbmNlIGluIHRoZSBjb21wZXRhbmNlCiAgICAgIG9mIGhpcyBtaW5pb25zLiAgSSdkIHRha2UgdW1icmFnZSwgaWYgaGUgd2Fzbid0IHJpZ2h0ISkKICAgCjIwMDEtMDktMTQgMDg6MDEgIGR0czEyCgogICAqIGNvbmZpZy5oLmluLCBjb25maWd1cmUuaW46CgogICBBZGQgdGVzdCBmb3IgPG5ldGluZXQvaXBfaWNtcC5oPgogICAKMjAwMS0wOS0xNCAwNzo1NyAgZHRzMTIKCiAgICogYWdlbnQvbWliZ3JvdXAvbWliSUkvOiBhdC5jLCBpY21wLmMsIGludGVyZmFjZXMuYywgaXAuYywKICAgaXBBZGRyLmMsIHJvdXRlX3dyaXRlLmMsIHRjcC5jLCB0Y3BUYWJsZS5jLCB1ZHAuYywgdWRwVGFibGUuYywKICAgdmFyX3JvdXRlLmM6CgogICBXcmFwIHZhcmlvdXMgI2luY2x1ZGVzIHdpdGggYXBwcm9wcmlhdGUgI2lmIEhBVkVfWFhYX0ggZGVjbGFyYXRpb25zCiAgICh3aGVyZSB0aGlzIGhhcyBub3QgYWxyZWFkeSBiZWVuIGRvbmUpLgogICAKMjAwMS0wOS0xMSAxNDo0NyAgbmJhCgogICAqIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wLzogbWVtb3J5LmMsIG1lbW9yeS5oLCBtZW1vcnlfZnJlZWJzZDIuYywKICAgbWVtb3J5X2ZyZWVic2QyLmgsIG1lbW9yeV9uZXRic2QxLmMsIG1lbW9yeV9uZXRic2QxLmgsCiAgIG1lbW9yeV9zb2xhcmlzMi5jLCBtZW1vcnlfc29sYXJpczIuaCwgdm1zdGF0LmMsIHZtc3RhdC5oLAogICB2bXN0YXRfYnNkaTQuYywgdm1zdGF0X2JzZGk0LmgsIHZtc3RhdF9mcmVlYnNkMi5jLAogICB2bXN0YXRfbmV0YnNkMS5jLCB2bXN0YXRfc29sYXJpczIuYzoKCiAgIE1ha2Ugc3VyZSB0aGF0IHRoZSBPSUQgZGVmaW5lcyBhcmUgb25seSBpbiBvbmUgcGxhY2UuIE5vIGZ1bmN0aW9uYWwgY2hhbmdlLgogICAKMjAwMS0wOS0xMSAxNDo0NSAgbmJhCgogICAqIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL2ZpbGUuYzoKCiAgIEhlYWRlciByZW9yZGVyaW5nIHRvIGFsbG93IGRtYWxsb2MgdG8gd29yay4KICAgCjIwMDEtMDktMTEgMTQ6MzEgIG5iYQoKICAgKiBhZ2VudC9taWJncm91cC9ob3N0L2hyX3BhcnRpdGlvbi5jOgoKICAgRml4IGEgbWlzcGxhY2VzIDsgaW4gYSBsb29wLgogICBUaGFua3MgdG8gTWFsYSBSYW1ha3Jpc2huYW4gPG1hbGFAcm91dGVzY2llbmNlLmNvbT4KICAgYW5kIEpvaGFubmVzIFNjaG1pZHQtRmlzY2hlciA8anNmQEludGVyRmFjZS1BRy5jb20+CiAgIAoyMDAxLTA5LTEwIDExOjIwICBoYXJkYWtlcgoKICAgKiBhZ2VudC9taWJncm91cC9taWJJSS9pbnRlcmZhY2VzLmM6CgogICBjaGFuZ2UgaW50ZXJmYWNlIGNvdW50aW5nIHRvIGhhcHBlbiBtb3JlIGZyZXF1ZW50bHkgdG8gZGV0ZWN0IG5ldyBjYXJkcy4KICAgICAtIHNlZSBidWcgIzQ1NzI5MAogICAKMjAwMS0wOS0xMCAxMToxMSAgaGFyZGFrZXIKCiAgICogbWFuL3NubXB0cmFwZC44LCBhcHBzL3NubXB0cmFwZC5jOgoKICAgZml4IC1QIHRvIHVzYWdlIGl0IHByaW50cyB0byBzdGRlcnIgKGJ1ZyAjNDU5MzcyKQogICAKMjAwMS0wOS0xMCAxMDo1NSAgaGFyZGFrZXIKCiAgICogYWdlbnQvbWliZ3JvdXAvdXRpbF9mdW5jcy5jOgoKICAgZml4IHdoaXRlc3BhY2UgcGFyc2luZyBidWcgcmVwb3J0ZWQgaXQgYnVnICM0NTcyNjcuCiAgIAoyMDAxLTA5LTEwIDEwOjQ2ICBoYXJkYWtlcgoKICAgKiBhZ2VudC9taWJncm91cC91Y2Qtc25tcC92bXN0YXRfZnJlZWJzZDIuYzoKCiAgIGFwcGx5IGZyZWVic2Qgc3BlY2lmaWMgcGF0Y2ggZnJvbSBidWcjNDU1OTI0IHRvIGZpeCB2bXN0YXQncyBzd2FwIHJlcG9ydC4KICAgCjIwMDEtMDktMTAgMTA6MTEgIGhhcmRha2VyCgogICAqIHBlcmwvU05NUC9TTk1QLnhzOgoKICAgVXNlIGEgbW9yZSBwb3J0YWJsZSBEQlBSVCBtYWNyby4KICAgCjIwMDEtMDktMTAgMDk6NTggIGhhcmRha2VyCgogICAqIGFnZW50L21pYmdyb3VwL25vdGlmaWNhdGlvbi86IHNubXBOb3RpZnlGaWx0ZXJQcm9maWxlVGFibGUuYywKICAgc25tcE5vdGlmeUZpbHRlclRhYmxlLmMsIHNubXBOb3RpZnlUYWJsZS5jOgoKICAgUmVtb3ZlIHJlZHVuZGFudCBSb3dTdGF0dXMgdmFsdWUgY2hlY2tzIG1lbnRpb25lZCBpbiBidWcjNDQ5NTAyCiAgIAoyMDAxLTA5LTA0IDA3OjIxICBqYnBuCgogICAqIGFnZW50L3NubXBkLmM6CgogICAgIC0gYWRkIG1pc3NpbmcgYnJlYWs7IGFmdGVyIHByb2Nlc3NpbmcgLVAgb3B0aW9uLCBub3RlZCBieSBCb3RvbmQKICAgICAgIFRhcm5heSAoc2VlIHBhdGNoICM0NTgzMjcpCiAgIAoyMDAxLTA4LTMxIDEzOjE5ICBuYmEKCiAgICogbWlicy86IERJU01BTi1TQ1JJUFQtTUlCLnR4dCwgTWFrZWZpbGUubWliLCBSRUFETUUubWlicywgcmZjbGlzdCwKICAgc21pc3RyaXA6CgogICBVcGRhdGUgdG8gY3VycmVudCB2ZXJzaW9uIG9mIERJU01BTi1TQ1JJUFQtTUlCLCBhbmQgYSBmZXcgY29zZXRpYyBjaGFuZ2VzCiAgIHRvIHNtaXN0cmlwIGV0IGFsLgogICAKMjAwMS0wOC0zMSAxMzoxOCAgbmJhCgogICAqIGx0Y29uZmlnOgoKICAgVXBkYXRlIHRvIGxpYnRvb2wgMS40LiBUaGlzIGVuc3VyZXMgdGhhdCBtYWtlIGluc3RhbGwgd2lsbCB3b3JrIGZvciBOZXRCU0QKICAgCjIwMDEtMDgtMzEgMTM6MTcgIG5iYQoKICAgKiBhY2xvY2FsLm00LCBjb25maWd1cmUsIGx0bWFpbi5zaDoKCiAgIFVwZGF0ZSB0byBsaWJ0b29sIDEuNC4gVGhpcyB3aWwgZW5zdXJlIHRoYXQgbWFrZSBpbnN0YWxsIHdvcmsgb24gTmV0QlNECiAgIAoyMDAxLTA4LTI4IDE1OjA0ICBuYmEKCiAgICogYWdlbnQvc25tcGQuYzoKCiAgIEZpeCBhIGJhZCBmaXgKICAgCjIwMDEtMDgtMjggMTU6MDMgIG5iYQoKICAgKiBhZ2VudC86IGFnZW50X3JlYWRfY29uZmlnLmgsIHNubXBfYWdlbnQuaCwgc25tcF92YXJzLmg6CgogICBDKysgYnJhY2tldCB0aGUgaW5zdGFsbGVkIHNnZW50IGhlYWRlcnMKICAgCjIwMDEtMDgtMjggMDc6MzUgIG5iYQoKICAgKiBhcHBzL3NubXB0cmFwZC5jOgoKICAgRml4IGEgbWFsZm9ybWVkIG11bHRpLWxpbmUgc3RyaW5nCiAgIAoyMDAxLTA4LTI4IDAzOjA1ICBqYnBuCgogICAqIGFnZW50L3NubXBfYWdlbnQuYzoKCiAgICAgLSBhZGQgbWlzc2luZyAjaW5jbHVkZSA8dGNwZC5oPiBpZiB1c2luZyBsaWJ3cmFwLCBub3RlZCBieSBOYXRoYW4KICAgICAgIE5ldWxpbmdlciAocGF0Y2ggIzQ1MzgzMSkuCiAgIAoyMDAxLTA4LTI4IDAyOjM4ICBqYnBuCgogICAqIGFnZW50L3NubXBkLmM6CgogICAgIC0gYXZvaWQgdXNlIG9mIHByZS1wcm9jZXNzb3IgZGlyZWN0aXZlcyBpbnNpZGUgcHJpbnRmKCkgY2FsbCwgd2hpY2gKICAgICAgIGlzIGEgbWFjcm8gaW4gZ2xpYmMsIG1ha2luZyB0aGlzIGFuIHVuZGVmaW5lZCBiZWhhdmlvdXIKICAgICAgIGNvbnN0cnVjdCAod2hpY2ggR0NDIDMuMCByZWZ1c2VzIHRvIGNvbXBpbGUpLiAgU2VlIGJ1ZyAjNDU1ODA0IGZvcgogICAgICAgZnVydGhlciBkZXRhaWxzLgogICAKMjAwMS0wOC0yNyAyMjoxNSAgbmJhCgogICAqIG1hbi86IHNubXBfY29uZmlnLjUuZGVmLCBzbm1wZC5jb25mLjUuZGVmLCBzbm1wdHJhcGQuY29uZi41LmRlZjoKCiAgIEZpeCBzb21lIHBsYWNlcyB3aGVyZSBhY3R1YWwgbGluZXMgc3RhcnRlZCB3aXRoIGEgcGVyaW9kLgogICAKMjAwMS0wOC0xNyAxNToxMiAgbmJhCgogICAqIG1hbi9NYWtlZmlsZS5pbjoKCiAgIEZpeCBtaXNzcGVsbGVkIG1hbiBwYWdlIG5hbWUgKHNubXBlcnJvciA9PiBzbm1wX3BlcnJvcikKICAgCjIwMDEtMDgtMTcgMTU6MDkgIG5iYQoKICAgKiBtaWJzLzogTWFrZWZpbGUubWliLCBtaWJmZXRjaDoKCiAgIElBTkEgaGFzIG1vdmVkIHRoZWlyIG1pYnMgaW50byBhbiBpYW5hLm1pYiBkaXJlY3RvcnkuCiAgIEZpeCBSRkMgbnVtYmVyIGZvciBSTU9OLU1JQi4KICAgTWFrZSAibWFrZSBhbGxtYWlicyIgZXh0cmFjdCBtaWJzIHRvIGFub3RoZXIgZGlyZWN0b3J5LgogICAKMjAwMS0wOC0xNyAxNTowMyAgbmJhCgogICAqIGNvbmZpZy5ndWVzcywgY29uZmlnLnN1YjoKCiAgIFlldCBhbm90aGVyIHVwZGF0ZSBmcm9tIGZ0cC5nbnUub3JnCiAgIAoyMDAxLTA4LTE3IDE0OjA5ICBuYmEKCiAgICogYWdlbnQvOiBhZ2VudF9yZWFkX2NvbmZpZy5jLCBzbm1wZC5jOgoKICAgQWRkIHNvbWUgbmVlZGVkIGVycm9yIGNoZWNraW5nIHRvIHRoZSB1aWQvZ2lkIHBhcnNpbmcgY29kZS4KICAgQWxsb3cgc3ltYm9saWMgdWlkL2dpZCBmcm9tIHRoZSBjb21tYW5kIGxpbmUuCiAgIAoyMDAxLTA4LTE3IDE0OjA3ICBuYmEKCiAgICogRkFROgoKICAgQWRkIGEgbWlzc2luZyBhcmd1bWVudCB0byB0aGUgc25tcHRyYXAgZXhhbXBsZXMuCiAgIAoyMDAxLTA4LTA3IDE0OjU1ICBuYmEKCiAgICogYXBwcy9zbm1wdHJhcGRfbG9nLmMsIHNubXBsaWIvbWliLmM6CgogICBUaW1ldGlja3MgYXJlIHVuc2lnZWQhIFRoYW5rcyB0byBKb3NoIFdpbG1lcyA8am9zaC11Y2RAaGl0Y2hoaWtlci5vcmc+CiAgIAoyMDAxLTA4LTA3IDE0OjQyICBuYmEKCiAgICogbWFuL3NubXBjbWQuMSwgc25tcGxpYi9taWIuYywgc25tcGxpYi9zbm1wX2FwaS5jOgoKICAgQ2hhbmdlcyB0byBhbGxvdyBjb21tYW5kIGxpbmUgYXJndW1lbnRzIHRvIG92ZXJyaWRlIHNubXAuY29uZiBzZXR0aW5ncy4KICAgCjIwMDEtMDgtMDcgMTQ6MDIgIG5iYQoKICAgKiBtaWJzLzogSUFOQWlmVHlwZS1NSUIudHh0LCByZmNsaXN0OgoKICAgVXBkYXRlIHRvIGN1cnJlbnQgdmVyc2lvbiBvZiBJQU5BaWZUeXBlLU1JQi4KICAgQWRkIHJmYyAzMTQ0IElOVEVSRkFDRVRPUE4tTUlCIHRvIHJmY2xpc3QuCiAgIAoyMDAxLTA4LTA3IDE0OjAwICBuYmEKCiAgICogY29uZmlnLmd1ZXNzLCBjb25maWcuc3ViOgoKICAgVXBkYXRlIHRvIGN1cnJlbnQgdmVyc2lvbiBmcm9tIGZ0cC5nbnUub3JnCiAgIAoyMDAxLTA4LTA3IDEzOjU5ICBuYmEKCiAgICogYXBwcy9zbm1wc2V0LmMsIGFwcHMvc25tcHRyYW5zbGF0ZS5jLCBhcHBzL3NubXB0cmFwZC5jLAogICBtYW4vTWFrZWZpbGUuaW4sIG1hbi9zbm1wX2FwaV9lcnJzdHJpbmcuMywgbWFuL3NubXBfZXJyb3IuMywKICAgbWFuL3NubXBfcGVycm9yLjMsIG1hbi9zbm1wX3Nlc3NfcGVycm9yLjMsIG1hbi9zbm1wY21kLjEsCiAgIG1hbi9zbm1wdHJhcGQuODoKCiAgIEEgYnVuY2ggb2YgbWlub3IgZml4ZXMgdG8gdXNhZ2UgbWVzc2FnZXMgYW5kIG1hbnVhbCBwYWdlcy4KICAgCjIwMDEtMDgtMDcgMTM6NTYgIG5iYQoKICAgKiBhcHBzL3NubXB0ZXN0LmM6CgogICBGaXggcGFyc2luZyBvZiBvaWQgdmFsdWVzIGZvciBzZXQKICAgCjIwMDEtMDgtMDcgMDc6MDkgIGpicG4KCiAgICogYWdlbnQvc25tcGQuYzoKCiAgICAgLSBmaXggZm9yIHBvdGVudGlhbCBidWZmZXIgb3ZlcmZsb3cgaW4gbG9nZmlsZSBhcmd1bWVudCBoYW5kbGluZywKICAgICAgIG5vdGVkIGJ5IEFub255bW91cyAoYnVnICM0NDgyNDMpLiAgQWxzbyB1c2UgYSBsYXJnZSBlbm91Z2ggYnVmZmVyCiAgICAgICB0byBoYW5kbGUgZmlsZW5hbWVzIG9mIGxlbmd0aCBQQVRIX01BWCAoaWYgcG9zc2libGUpLgogICAKMjAwMS0wNy0yNiAwMTo0MCAgamJwbgoKICAgKiBhcHBzL3NubXB0cmFwZF9sb2cuYzoKCiAgICAgLSBpbml0aWFsaXNlIGJ1ZmZlcnMgdG8gemVybyBpbiBoYW5kbGVfd3JhcF9mbXQsIHRvIGF2b2lkIGdhcmJhZ2UgaW4KICAgICAgIGRpc3BsYXkgb2Ygc2VjdXJpdHkgcGFyYW1ldGVycywgYXMgbm90ZWQgYnkgV2lsbGlhbSBGcmF1ZW5ob2ZlcgogICAgICAgKGJ1ZyAjNDM3MjMxKS4KICAgCjIwMDEtMDctMjMgMTA6NTMgIGhhcmRha2VyCgogICAqIGFnZW50L21pYmdyb3VwL3V0aWxfZnVuY3MuYzoKCiAgIGNhcmVmdWxseSBjb25zdHJ1Y3QgdG1wIGZpbGUgbmFtZXMuCiAgIAoyMDAxLTA3LTIzIDEwOjUzICBoYXJkYWtlcgoKICAgKiBjb25maWcuaC5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGFnZW50L3NubXBkLmM6CgogICB1c2Ugc2V0Z3JvdXBzIHdoZW4gYXZhaWxhYmxlLgogICAKMjAwMS0wNy0xMSAwNzozNCAgaGFyZGFrZXIKCiAgICogYWdlbnQvbWliZ3JvdXAvbWliSUkvbXRhX3NlbmRtYWlsLmg6CgogICBhZGQgTkVUV09SSy1TRVJWSUNFUy1NSUIgdG8gbWliIHJlcXVpcmUgbGlzdAogICAKMjAwMS0wNy0wOSAxMToxNSAgaGFyZGFrZXIKCiAgICogYWdlbnQvYWdlbnRfdHJhcC5jOgoKICAgZml4IHRyYXBzZXNzIHBhcnNpbmcgc28gYXMgdG86CiAgICAgLSBzZXQgdGhlIGRlZmF1bHQgcG9ydCB0byAxNjIKICAgICAtIGRvbid0IGZyZWUgbWVtb3J5IHBhc3NlZCB0byBzbm1wX3BhcnNlX2FyZ3MoKSBzaW5jZQogICAgICAgc25tcF9wYXJzZV9hcmdzIGlzIGJyb2tlbiBhbmQgbmVlZHMgdG8gY29weSBtZW1vcnkgcmF0aGVyIHRoYW4KICAgICAgIGp1c3QgbWFrZSB1c2Ugb2YgaXQuCiAgIAoyMDAxLTA2LTI3IDE1OjQ4ICBuYmEKCiAgICogbWFuL3NubXBkLmNvbmYuNS5kZWY6CgogICBTaW1wbGUgZml4IHRvIHRyYXBzZXNzIGFyZ3VtZW50IGxpc3QKICAgCjIwMDEtMDYtMjUgMDg6NDcgIGhhcmRha2VyCgogICAqIHNubXBsaWIvbWliLmM6CgogICBzdXBwb3J0ICdtaWJzICIiJy4KICAgCjIwMDEtMDYtMjIgMTM6MDcgIGhhcmRha2VyCgogICAqIGFnZW50L21pYmdyb3VwL21pYklJL2ludGVyZmFjZXMuYzoKCiAgIEFsbG93IGludGVyZmFjZSBzbm1wZC5jb25mIHRva2VucyB0byBjb21wbGV0ZWx5IG92ZXJyaWRlIHN5c3RlbQogICB2YWx1ZXMuICBbYnVnIzQyNjk3NV0KICAgCjIwMDEtMDYtMjIgMTE6MzggIGhhcmRha2VyCgogICAqIGxvY2FsL21pYjJjLmNvbmY6CgogICBkZWZpbmUgdWxvbmdfcmV0CiAgIAoyMDAxLTA2LTIyIDAxOjQ0ICBkdHMxMgoKICAgKiBGQVEsIG1hbi9zbm1wZC5jb25mLjUuZGVmOgoKICAgSW5jbHVkZSBhIHdhcm5pbmcgb2YgdGhlIGV4cGVyaW1lbnRhbCBuYXR1cmUgb2YgQWdlbnRYIGluIHRoZSBtYW4gcGFnZSwKICAgYW5kIHVwZGF0ZSB0aGUgRkFRIHRvIHJlZmxlY3QgdGhlIGZ1bGxlciBpbnRlZ3JhdGlvbiBvZiB0aGlzIHN1cHBvcnQuCiAgIAoyMDAxLTA2LTIxIDE1OjIyICBuYmEKCiAgICogYXBwcy9zbm1wZGYuYzoKCiAgIEVsaW1pbmF0ZSBsb25nIGxvbmcgdmFyaWFibGVzCiAgIAoyMDAxLTA2LTIxIDE1OjIyICBuYmEKCiAgICogYXBwcy9zbm1wdGFibGUuYzoKCiAgIFdhcm4gYWJvdXQgZGVwcmVjYXRlZCAtYiAtdyBhbmQgLWkgb3B0aW9ucy4KICAgCjIwMDEtMDYtMjEgMTU6MTUgIG5iYQoKICAgKiBtYW4vOiBzbm1wZC4xLmRlZiwgc25tcGQuY29uZi41LmRlZiwgc25tcHNldC4xLCBzbm1wd2Fsay4xOgoKICAgVXBkYXRlIHRpbWUgc3RhbXBzCiAgIAoyMDAxLTA2LTIxIDE1OjA5ICBuYmEKCiAgICogbWFuL3NubXB0cmFuc2xhdGUuMToKCiAgIEFkZCAtbSBhbmQgLU0gb3B0aW9ucyB0byBoZWFkZXIuIFVwZGF0ZSBTRUUgQUxTTyB0byByZWZlcmVuY2Ugc25tcGNtZAogICBhbmQgUkZDIDI1NzgtODAgaW4gcGxhY2Ugb2YgMTE1NQogICAKMjAwMS0wNi0yMSAxNTowMSAgbmJhCgogICAqIHNubXBsaWIvcGFyc2UuYzoKCiAgIEZpeCBwYXJzaW5nIG9mIHh4IC4uLjo6PSB7IHl5IH0KICAgCjIwMDEtMDYtMjEgMTA6MjUgIGhhcmRha2VyCgogICAqIGFnZW50L21pYmdyb3VwL2V4YW1wbGVzL2V4YW1wbGUuYzoKCiAgIHR5cG9zIChJT0QgLT4gT0lEKQogICAKMjAwMS0wNi0yMSAxMDoxOCAgaGFyZGFrZXIKCiAgICogbWFuL3NubXBkLmNvbmYuNS5kZWY6CgogICAtIG1lbnRpb24gIm1hc3RlciBhZ2VudHgiCiAgIC0gZml4IGNvbmZpZyBmaWxlIHJlLXJlYWRpbmcgb2lkLgogICAKMjAwMS0wNi0yMSAxMDoxMCAgaGFyZGFrZXIKCiAgICogYWdlbnQvbWliZ3JvdXAvbWliSUkvc3lzdGVtX21pYi5jOgoKICAgbWFrZSBzeXNjb250YWN0IGFuZCBzeXNsb2NhdGlvbiBhY2NlcHQgIiIgc3RyaW5ncy4KICAgCjIwMDEtMDYtMjEgMDk6MzQgIGhhcmRha2VyCgogICAqIGFwcHMvc25tcHRyYW5zbGF0ZS5jLCBtYW4vc25tcHRyYW5zbGF0ZS4xOgoKICAgLSBBcHBsaWVkIGFyZyBkb2N1bWVudGF0aW9uIHBhdGNoIGZyb20gRGF2aWQgRWlzbmVyCiAgIAoyMDAxLTA2LTE0IDIzOjE5ICBuYmEKCiAgICogbWFuL3NubXB0cmFwZC44OgoKICAgRG9jdW1lbnQgLW4gb3B0aW9uCiAgIAoyMDAxLTA2LTEyIDE1OjE0ICBuYmEKCiAgICogc25tcGxpYi9kZWZhdWx0X3N0b3JlLmM6CgogICBQcm9wZXJseSBkZXRlY3QgYW5kIGRpYWdub3NlIGJhZCBib29sZWFuIGFuZCBpbnRlZ2VyIGNvbmZpZ3VyYXRpb24gdmFsdWVzCiAgIAoyMDAxLTA2LTEyIDE1OjEyICBuYmEKCiAgICogYXBwcy86IHNubXBkZWx0YS5jLCBzbm1wZGYuYywgc25tcGdldC5jLCBzbm1wZ2V0bmV4dC5jLAogICBzbm1wc3RhdHVzLmMsIHNubXB0cmFwLmMsIHNubXB1c20uYywgc25tcHZhY20uYywgc25tcHdhbGsuYzoKCiAgIFByb3Blcmx5IGRpYWdub3NlIGJhZCAtQyBvcHRpb25zCiAgIAoyMDAxLTA2LTEyIDA3OjI0ICBkdHMxMgoKICAgKiBzbm1wbGliL3JlYWRfY29uZmlnLmM6CgogICBGaXggJ3VucmVnaXN0ZXJfY29uZmlnX2hhbmRsZXInIHRvIGhhbmRsZSB0YWdzIG90aGVyCiAgIHRoYW4gdGhlIGZpcnN0IGluIHRoZSBsaXN0LiAgKFRoYW5rcyB0byBQYXVsIFNlcmljZSkuCiAgIAoyMDAxLTA2LTExIDE1OjQ0ICBuYmEKCiAgICogYXBwcy9zbm1wd2Fsay5jLCBtYW4vc25tcHdhbGsuMToKCiAgIEFkZCBhbiBvcHRpb25zICgtQ2MpIHRvIHNubXB3YWxrIHRoYXQgd2lsbCB2YWxpZGF0ZSB0aGF0IHRoZSByZXR1cm5lZCBvYmplY3RzCiAgIGFyZSBpbmRlZWQgbGV4aWNvZ3JhcGhpY2FsbHkgaW5jcmVhc2luZy4KICAgCjIwMDEtMDYtMTEgMTU6NDMgIG5iYQoKICAgKiBhcHBzL3NubXBzZXQuYywgbWFuL3NubXBzZXQuMSwgc25tcGxpYi9zbm1wX2FwaS5jOgoKICAgQWxsb3cgYSBzaW1wbGVyIHNubXBzZXQgbm90YXRpb24gd2hlbiBNSUIgZGF0YSBhcmUgbG9hZGVkOiBVc2luZyAnPScgZm9yCiAgIHR5cGUgdHlwZSB3aWxsIGluZmVyIGl0IGZyb20gdGhlIE1JQi4KICAgCjIwMDEtMDYtMTEgMTU6MzkgIG5iYQoKICAgKiBzbm1wbGliLzogbWliLmMsIHBhcnNlLmM6CgogICBGaXggc29tZSBsb25nIHN0YW5kaW5nIGJ1Z3Mgd2hlbiBzZXZlcmFsIE1JQiBmaWxlcyBkZWZpbmUgdGhlIHNhbWUgb2JqZWN0cwogICB3aXRoIGRpZmZlcmVudCBuYW1lcy4gSG9wZWZ1bGx5IHRoZSByZXN1bHRzIHdpbGwgYmUgY29uc2lzdGVudCBub3cuCiAgIAoyMDAxLTA2LTExIDEyOjEyICBuYmEKCiAgICogYXBwcy9zbm1wZGVsdGEuYywgc25tcGxpYi9pbnQ2NC5jOgoKICAgQW5vdGhlciB0cnkgYXQgQ291bnRlcjY0IHByb2JsZW1zLCB0aGFua3MgdG8gSmFzb24gR2xvdWRvbiA8c25tcEBnbG91ZG9uLmNvbT4KICAgCjIwMDEtMDYtMTEgMTE6NTIgIG5iYQoKICAgKiBhcHBzL3NubXB0cmFwZF9sb2cuYzoKCiAgIEZpeCBmb3IgYSBtaXNzaW5nIDAtYnl0ZSB0byB0ZXJtaW5hdGUgY29tbXVuaXR5IHN0cmluZy4KICAgVGhhbmtzIHRvICJLVUJPVEEsVGFrYXlhIiA8dGFrYXlhQHBvLm50dHMuY28uanA+LgogICAKMjAwMS0wNi0wNiAyMTozOCAgbmJhCgogICAqIGNvbmZpZy5oLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwKICAgYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9zeXN0ZW0uYzoKCiAgIFVzZSA8dXRtcHguaD4gaWYgYXZhaWxhYmxlICh0byBmaXggY291bnRpbmcgdXNlcnMgZm9yIFNvbGFyaXMpCiAgIAoyMDAxLTA2LTA2IDIxOjMzICBuYmEKCiAgICogbWFuL3NubXBkLjEuZGVmOgoKICAgTWVudGlvbiAtcyBhbmQgLVAgcGlkZmlsZSBhcmd1bWVudHMKICAgCjIwMDEtMDYtMDYgMjE6MzIgIG5iYQoKICAgKiBhZ2VudC9taWJncm91cC9zbXV4L3NtdXguYzoKCiAgIEZpeCBzZW5kaW5nIG9mIHRyYXBzIHdpdGhvdXQgdmFyYmluZHMKICAgCjIwMDEtMDYtMDYgMjE6MzEgIG5iYQoKICAgKiBhZ2VudC9taWJncm91cC91dGlsX2Z1bmNzLmM6CgogICBNb3JlIG1lYW5pbmdmdWwgYXJndW1lbnRzIHRvIHNldFBlcnJvcnN0YXR1cyAodHJ1ZSBmaWxlIG5hbWVzKQogICAKMjAwMS0wNS0xNyAxMjozNiAgbmJhCgogICAqIHNubXBsaWIvc25tcHYzLmM6CgogICBGaXggYSBUcnVseSBTdHVwaWQgQnVnIHRoYW5rcyB0byBLYXRzdWhpc2EgQUJFIDxhYmVrYXRzdUBjeXNvbHMuY29tPgogICAKMjAwMS0wNS0wNCAwOTo0NSAgaGFyZGFrZXIKCiAgICogYXBwcy9zbm1wZGYuYzoKCiAgIFJlbW92ZSBkdXBsaWNhdGUgbCBmcm9tICVsbGQgcHJpbnRmIHN5bnRheAogICAKMjAwMS0wNS0wNCAwNzowMCAgaGFyZGFrZXIKCiAgICogTWFrZWZpbGUuaW46CgogICBpbnNhbGwgbWliX21vZHVsZV9jb25maWcuaAogICAKMjAwMS0wNS0wMyAxMDoxNSAgaGFyZGFrZXIKCiAgICogc25tcGxpYi9NYWtlZmlsZS5pbjoKCiAgIGFkZCBzbm1wLXRjLmggdG8gaW5zdGFsbCBsaXN0CiAgIAoyMDAxLTA1LTAyIDA3OjA4ICBoYXJkYWtlcgoKICAgKiBhcHBzL3NubXB0cmFwZC5jOgoKICAgQWRkIC1UIGZsYWcgdG8gdXNhZ2Ugb3V0cHV0LgogICAKMjAwMS0wNS0wMSAxMjo1MyAgaGFyZGFrZXIKCiAgICogYWdlbnQvbWliZ3JvdXAvbWliSUkvYXQuYzoKCiAgIEZpeCB1c2Ugb2YgYSAtMSBhc3NpZ25lZCB0byBhIHVfbG9uZyBhcyBhIGZhaWx1cmUgY2hlY2tpbmcgY2FzZS4KICAgCjIwMDEtMDQtMjMgMTc6MDggIGhhcmRha2VyCgogICAqIGxvY2FsL3RrbWliOgoKICAgZml4IHdhbGsgcHJvYmxlbSBvbmNlIGFuZCBmb3IgYWxsLgogICAKMjAwMS0wNC0xNyAxMjoyOSAgbmJhCgogICAqIGFnZW50L21pYmdyb3VwL2hvc3QvaHJfc3dydW4uYzoKCiAgIEdldCBkYXRhIGZvciBoclNXUnVuUGVyZlRhYmxlIGZvciBjeWd3aW4gdW5kZXIgTlQgKG9yIGJldHRlcikKICAgCjIwMDEtMDQtMTcgMTE6MzMgIG5iYQoKICAgKiBjb25maWcuZ3Vlc3MsIGNvbmZpZy5zdWIsIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluOgoKICAgVXBkYXRlIHRvIGEgcmVjZW50IHZlcnNpb24gb2YgY29uZmlnLmd1ZXNzL2NvbmZpZy5zdWIuIFVwZGF0ZSBjb25maWd1cmUKICAgdG8gaGFuZGxlIHRoZSBuZXcgTmV0QlNEIHZhcmlhbnQgdGhhdCBpbmNsdWRlIHRoZSBvYmplY3QgZm9ybWF0LgogICAKMjAwMS0wNC0xMiAwNToxMiAgZHRzMTIKCiAgICogYWdlbnQvc25tcF9hZ2VudC5jOgoKICAgQmV0dGVyIGZpeCBmb3IgYnVnICM0MTQ4NTUgZnJvbSBhcmFqZXNoCiAgIEhhbmRsZXMgbm9uLXJlcGVhdGVycz0wIGFzIHdlbGwsIGFuZCBhdm9pZHMgbWVtb3J5IGxlYWtzLgogICAKMjAwMS0wNC0xMSAwNjowMSAgZHRzMTIKCiAgICogYWdlbnQvc25tcF9hZ2VudC5jOgoKICAgSGFuZGxlIEdldEJ1bGsgcmVxdWVzdHMgd2l0aCBtYXgtcmVwZXRpdGlvbnM9MCBwcm9wZXJseSAoYnVnICM0MTQ4NTUpCiAgIAoyMDAxLTA0LTEwIDA5OjMzICBoYXJkYWtlcgoKICAgKiBhcHBzL3NubXBkZi5jOgoKICAgZml4ZWQgc2VnZmF1bHQgd2hlbiByb3cgaGFzIGhvbGVzLgogICAKMjAwMS0wNC0wNiAxNjoyMCAgaGFyZGFrZXIKCiAgICogbWFuL3NubXBjbWQuMToKCiAgIC0gQWRkZWQgZG9jdW1lbnRvdGlvbiBmb3IgLU90CiAgIAoyMDAxLTA0LTA2IDA3OjMyICBoYXJkYWtlcgoKICAgKiBhZ2VudC9taWJncm91cC9ub3RpZmljYXRpb24vc25tcE5vdGlmeVRhYmxlLmM6CgogICB0cmFwcy9pbmZvcm1zIHJldmVyc2VkCiAgIAoyMDAxLTA0LTA1IDA5OjM0ICBzbGlmCgogICAqIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Bhc3MuYzoKCiAgIHJlbW92ZSB1bnVzZWQgdmFyaWFibGUgZnJvbSBzbm1wX29pZF9taW5fY29tcGFyZS4KICAgCjIwMDEtMDQtMDUgMDk6MTMgIHNsaWYKCiAgICogYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvcGFzcy5jOgoKICAgRml4IHNubXBfb2lkX2NvbXBhcmUgYW5kIHJldmVyc2UgZW5jb2RpbmdzIHRvIGRlYWwgd2l0aCBudW1iZXJzID4gMl4zMS4KICAgCjIwMDEtMDQtMDUgMDg6MjEgIHNsaWYKCiAgICogYWdlbnQvYWdlbnRfdHJhcC5jOgoKICAgdXNlIG1hbGxvYyB0byBkZWNyZWFzZSBzdGFjayBzaXplIGluIHNubXBkX3BhcnNlX2NvbmZpZ190cmFwc2Vzcy4KICAgCjIwMDEtMDQtMDUgMDY6MTQgIGR0czEyCgogICAqIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Bhc3NfcGVyc2lzdC5jOgoKICAgRXh0ZW5kIHJlY2VudCAncGFzcycgY2hhbmdlcyB0byAncGFzc19wZXJzaXN0Jy4gIChUaGFua3MsIE1pa2UhKQogICAKMjAwMS0wNC0wNSAwMjoyNyAgZHRzMTIKCiAgICogYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvcGFzcy5jOgoKICAgSGFuZGxlIHNldHRpbmcgbnVsbCBzdHJpbmcgdmFsdWVzIHZpYSB0aGUgJ3Bhc3MnIG1lY2hhbmlzbS4gKFN1cHBvcnQjNDA2NzI4KQogICBBbHNvIGhhbmRsZSBlbWJlZGRlZCB3aGl0ZXNwYWNlIGluIHN1Y2ggdmFsdWVzLgogICAKMjAwMS0wNC0wNCAxNDo1NiAgaGFyZGFrZXIKCiAgICogRkFRLCBSRUFETUUsIHNlZHNjcmlwdC5pbiwgdmVyc2lvbi5oOgoKICAgLSAodmVyc2lvbi5oIHNlZHNjcmlwdC5pbik6IHZlcnNpb24gdGFnICggNC4yLjEgKQogICAKMjAwMS0wNC0wNCAxNDo1NSAgaGFyZGFrZXIKCiAgICogRkFRLCBSRUFETUU6CgogICBDaGFuZ2Ugd29yZGluZyB0byBzYXkgNC4yIGxpbmUgaXMgdGhlIGxhc3QgdG8gdXNlIHRoZSB1Y2Qtc25tcCBuYW1lLgogICAKMjAwMS0wNC0wNCAxNDo1MSAgaGFyZGFrZXIKCiAgICogQ2hhbmdlTG9nOgoKICAgQ2hhbmdlTG9nCiAgIAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgpDaGFuZ2VzOiBWNC4yIC0+IFY0LjIuMQoKMjAwMS0wNC0wNCAxNDowNCAgaGFyZGFrZXIKCiAgICogYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvbG9hZGF2ZS5jOgoKICAgZml4IG1pc3NpbmcgdmFyaWFibGUgb24gc29sYXJpcyAyLjYKICAgCjIwMDEtMDQtMDQgMTQ6MDIgIGhhcmRha2VyCgogICAqIHRlc3RpbmcvZXZhbF90b29scy5zaDoKCiAgIHVzZSBraWxsIC1URVJNIGluc3RlYWQgb2Yga2lsbCAtU0lHVEVSTSBmb3IgcG9ydGFiaWxpdHkgKGJyZWFrcyBvbiBzb2xhcmlzKS4KICAgCjIwMDEtMDQtMDQgMTI6MzkgIHNsaWYKCiAgICogYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9zd3J1bi5jOgoKICAgQ2xlYW51cCBkZWJ1ZyBtZXNzYWdlcywgYnVpbGQuCiAgIAoyMDAxLTA0LTA0IDA5OjE4ICBzbGlmCgogICAqIGFnZW50L21pYmdyb3VwL2V4YW1wbGVzL2V4YW1wbGUuYzoKCiAgIEZpeCBuZXR3b3JrIGJ5dGUgb3JkZXIgZm9yIElwQWRkcmVzcyBkaXNwbGF5ZWQuCiAgIAoyMDAxLTA0LTA0IDA4OjUwICBzbGlmCgogICAqIGFwcHMvc25tcHRyYXBkLmM6CgogICBxdWlldCBleGl0IG9uIFNJR1RFUk0vU0lHSU5ULCBzYW1lIGFzIHNubXBkLgogICAKMjAwMS0wNC0wNCAwODo0OSAgaGFyZGFrZXIKCiAgICogYWdlbnQvOiBhdXRvX25saXN0LmMsIGF1dG9fbmxpc3QuaDoKCiAgIGZpeCBmb3IgYXV0b19ubGlzdCBib2d1cyBkZWZpbml0aW9ucyBmb3IgbWFjaGluZXMgd2l0aG91dCBubGlzdC4KICAgCjIwMDEtMDQtMDQgMDg6NDkgIGhhcmRha2VyCgogICAqIFJFQURNRS5zbm1wdjM6CgogICB1cGRhdGUgdG8gd2hlbiBhZ2VudCByZW1vdmVzICJjcmVhdGVVc2VyIiBkaXJlY3RpdmVzLgogICAKMjAwMS0wNC0wNCAwODozMSAgaGFyZGFrZXIKCiAgICogYWdlbnQvbWliZ3JvdXAvdWNkX3NubXAuaDoKCiAgIEFwcGxpZWQgcGF0Y2ggIzQxMjA4MDogYWRkIGZyZWVic2Q1IHRvIG1vZHVsZSBpbmNsdWRlIGxpc3QuCiAgIAoyMDAxLTA0LTA0IDA4OjEyICBkdHMxMgoKICAgKiBFWEFNUExFLmNvbmYuZGVmOgoKICAgRG9jdW1lbnQgaG93IHRvIGVuYWJsZSB0aGUgQWdlbnRYIGZhY2lsaXR5IGluIHRoZSBtYXN0ZXIgYWdlbnQuCiAgIAoyMDAxLTA0LTA0IDA3OjU5ICBoYXJkYWtlcgoKICAgKiBsb2NhbC90a21pYjoKCiAgIGZpeCBidWcgIzQxMTkxNzogY2hhbmdlIHdhbGsgZW5kIGNvbmRpdGlvbiBhcyBzdWdnZXN0ZWQgYnkgc3VibWl0dGVyLgogICAKMjAwMS0wNC0wNCAwNzo0MyAgZHRzMTIKCiAgICogc25tcGxpYi9wYXJzZS5jOgoKICAgQ2hhbmdlICdMaW5lJyB2YXJpYWJsZSBuYW1lLCB0byBhc3Npc3Qgd2l0aCBNYWMgcG9ydC4KICAgCjIwMDEtMDQtMDQgMDc6NDIgIGR0czEyCgogICAqIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Byb3h5LmM6CgogICBGaXggdHlwbyBpbiBjYXN0IChtaXNzaW5nICdzdHJ1Y3QnKQogICAKMjAwMS0wNC0wNCAwNzozNyAgaGFyZGFrZXIKCiAgICogc25tcGxpYi9zbm1wX2FwaS5jOgoKICAgVXNlIGEgbGFyZ2VyIG1hbGxvY2VkIGJ1ZmZlciB3aGVuIGRlY29kaW5nIGEgbGFyZ2UgaW5jb21pbmcgZW5jcnlwdGVkIG1lc3NhZ2UuCiAgIAoyMDAxLTA0LTA0IDA3OjM2ICBoYXJkYWtlcgoKICAgKiBzbm1wbGliL3NubXBfZGVidWcuYzoKCiAgIExpbWl0IHNpemUgb2YgaGV4IG1lc3NhZ2VzIHRvIDEvNXRoIGJ1ZmZlciBzaXplICh0byBiZSBzYWZlKS4KICAgCjIwMDEtMDQtMDQgMDc6MjQgIGpicG4KCiAgICogYWdlbnQvc25tcGQuYzoKCiAgICAtIGNhbGwgZXh0ZXJuYWwgc2lnbmFsIGhhbmRsZXJzIGJlZm9yZSBjYWxsaW5nIHNubXBfc2VsZWN0X2luZm8oKSwKICAgICAgcmF0aGVyIHRoYW4gYWZ0ZXIgY2FsbGluZyBzbm1wX3NlbGVjdF9pbmZvKCkgYnV0IGJlZm9yZSBzZWxlY3QoKS4KICAgICAgVGhpcyBmaXhlcyBhIHBvdGVudGlhbCBwcm9ibGVtIHRoYXQgY291bGQgYXJpc2UgaWYgYSBzaWduYWwgaGFuZGxlcgogICAgICBjbG9zZWQgYSBzZXNzaW9uLCB3aGljaCB3b3VsZCBjYXVzZSBzZWxlY3QoKSB0byByZXR1cm4gLTEgd2l0aAogICAgICBFQkFERiwgYW5kIHRodXMgdGVybWluYXRlIHRoZSBhZ2VudC4KICAgCjIwMDEtMDQtMDQgMDY6NTAgIGR0czEyCgogICAqIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL2Rpc2suYzoKCiAgIEVuc3VyZSB0aGF0IGNoZWNraW5nIGZvciAnc3RhdHZmcycgaXMgZG9uZSBjb25zaXN0ZW50bHkKICAgCjIwMDEtMDQtMDQgMDY6NDggIGR0czEyCgogICAqIGFnZW50L21pYmdyb3VwL21pYklJL3N5c3RlbV9taWIuYzoKCiAgIGVuc3VyZSB0aGF0ICdleGVjX2NvbW1hbmQnIGlzIHVzZWQgY29uc2lzdGVudGx5IHdpdGggdGhlIGF2YWlsYWJpbGl0eSBvZiBleGVjdgogICAKMjAwMS0wNC0wNCAwNjo0NSAgZHRzMTIKCiAgICogc25tcGxpYi86IG1pYi5jLCBzbm1wX2FwaS5jLCBzbm1wX2xvZ2dpbmcuYzoKCiAgIEtlZXAgb25lIG9mIHRoZSBwaWNraWVyIGNvbXBpbGVycyAoSFAncyBhQ0MpIGhhcHB5LgogICAKMjAwMS0wNC0wMyAyMjowNyAgaGFyZGFrZXIKCiAgICogc25tcGxpYi9zbm1wdXNtLmM6CgogICBGaXggbWF4aW11bSBlbmNyeXB0ZWQgcGFja2V0IGxlbmd0aCBzdXBwb3J0IGZvciByZXZlcnNlIGVuY29kZWQgcGFja2V0cy4KICAgCjIwMDEtMDQtMDMgMTg6MDcgIHNsaWYKCiAgICogdGVzdGluZy90ZXN0cy9UMTIwcHJveHlnZXQ6CgogICBmaXggcndjb21tdW5pdHkKICAgCjIwMDEtMDQtMDMgMTY6NDQgIGhhcmRha2VyCgogICAqIGxvY2FsL3dlc3Jlc3RhcnQ6CgogICByZW1vdmUgb2xkIHVudXNlZCBzY3JpcHQKICAgCjIwMDEtMDQtMDMgMTY6NDEgIGhhcmRha2VyCgogICAqIGxvY2FsL3NubXBjb25mLmRpci9zbm1wZC5jb25mL29wZXJhdGlvbjoKCiAgIEFkZCBzbm1wY29uZiBkaXJlY3RpdmUgc3VwcG9ydCBmb3IgdGhlIG5ldyAibWFzdGVyIiB0b2tlbi4KICAgCjIwMDEtMDQtMDMgMTY6NDEgIGhhcmRha2VyCgogICAqIGxvY2FsL3NubXBjb25mOgoKICAgRml4IGJ1ZyBpbiBtZW51cyBmb3IgY29uZmlndXJhdGlvbiBmaWxlcyBjb250YWluaW5nIG9ubHkgImdyb3VwcyIuCiAgIAoyMDAxLTA0LTAzIDE2OjQwICBoYXJkYWtlcgoKICAgKiBSRUFETUU6CgogICBDaGFuZ2UgbXkgbmFtZSAtPiBuZXQtc25tcCBkZXZlbG9wZXJzLgogICAKMjAwMS0wNC0wMyAxNTozNiAgaGFyZGFrZXIKCiAgICogRVhBTVBMRS5jb25mLmRlZjoKCiAgIG1lbnRpb24gc25tcGNvbmYKICAgCjIwMDEtMDQtMDMgMTU6MjggIGhhcmRha2VyCgogICAqIFJFQURNRToKCiAgIHVybCBjaGFuZ2VzIG1vc3RseS4KICAgCjIwMDEtMDQtMDMgMTU6MjggIGhhcmRha2VyCgogICAqIE5FV1M6CgogICA0LjIuMSB1cGRhdGUgKHBsZWFzZSBjaGVjaykuCiAgIAoyMDAxLTA0LTAzIDE1OjI4ICBoYXJkYWtlcgoKICAgKiBGQVE6CgogICBmdHAgc2l0ZSB1cGRhdGUuCiAgIAoyMDAxLTA0LTAzIDE0OjA0ICBoYXJkYWtlcgoKICAgKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbjoKCiAgIEFkZGVkIGFnZW50eCB0byBkZWZhdWx0IG1vZHVsZXMgdG8gY29tcGlsZSBpbgogICAKMjAwMS0wNC0wMyAxMDoxMiAgaGFyZGFrZXIKCiAgICogbG9jYWwvbWliMmM6CgogICBhZGQgYSBjb21tZW50IGF0IHRoZSBlbmQgb2YgdGhlIG1pYjJjIG91dHB1dCBleHBsYWluaW5nIHRoYXQgaXRzCiAgIG1lcmVseSBhIHRlbXBsYXRlLgogICAKMjAwMS0wNC0wMyAwODoyNyAgaGFyZGFrZXIKCiAgICogQUdFTlQudHh0LCBGQVEsIFBPUlRJTkcsIFJFQURNRSwgUkVBRE1FLmFnZW50eDoKCiAgIFdlYiBwYWdlL2Z0cCBzaXRlIHVwZGF0ZXMuICBVc2VzIHd3dy5uZXQtc25tcC5vcmcgZXZlcnl3aGVyZSBub3cuCiAgIAoyMDAxLTA0LTAzIDA2OjI0ICBzbGlmCgogICAqIGFnZW50L21pYmdyb3VwL3V0aWxfZnVuY3MuYzoKCiAgIEZpeCBzaWduZWQvdW5zaWduZWQgY29tcGFyZS4KICAgCjIwMDEtMDQtMDMgMDY6MjEgIGR0czEyCgogICAqIGFnZW50L21pYmdyb3VwL21pYklJL2tlcm5lbF9saW51eC5jOgoKICAgUGx1ZyBmaWxlLWRlc2NyaXB0b3IgbGVhayB3aGVuIHVzaW5nIGNhY2hlZCBkYXRhLiAgKEJ1ZyM0MTIwMDApCiAgIAoyMDAxLTA0LTAyIDIzOjIyICBuYmEKCiAgICogYXBwcy9zbm1wdGVzdC5jOgoKICAgRml4IGFuIGluY29tcGxldGVseSBpbml0aWFsaXplZCB2YXJpYWJsZQogICAKMjAwMS0wNC0wMiAyMzoyMSAgbmJhCgogICAqIGxvY2FsL3NubXBjb25mOgoKICAgVGhlIGFuc3dlcnMgZm9yIHRoZSAibG9hZCB3aGljaCBmaWxlcyIgbWVudSBhcmUga2VwdCBzZWNyZXQgZnJvbSB0aGUgY29kZQogICB0aGF0IGxvYWRzIHRoZSBmaWxlcyAuLi4uIGZpeGVkLgogICAKMjAwMS0wNC0wMiAyMDowMiAgaGFyZGFrZXIKCiAgICogbG9jYWwvOiBNYWtlZmlsZS5pbiwgc25tcGNvbmYuZGlyL3NubXB0cmFwZC5jb25mL2Zvcm1hdHRpbmcsCiAgIHNubXBjb25mLmRpci9zbm1wdHJhcGQuY29uZi90cmFwaGFuZGxlOgoKICAgQWRkZWQgc25tcHRyYXBkIGNvbmZpZ3VyYXRpb24gZmlsZSBkaXJlY3RpdmVzIHRvIHNubXBjb25mLgogICAKMjAwMS0wNC0wMiAxMDowOCAgamJwbgoKICAgKiBtYW4vc25tcF9hZ2VudF9hcGkuMzoKCiAgICAtIHVwZGF0ZSBkb2N1bWVudGF0aW9uIG9mIGFnZW50X2NoZWNrX2FuZF9wcm9jZXNzIHRvIHJlZmxlY3QKICAgICAgY3VycmVudCBiZWhhdmlvdXIKICAgCjIwMDEtMDQtMDIgMDk6NTggIGpicG4KCiAgICogYWdlbnQvc25tcF9hZ2VudC5jOgoKICAgIC0gRml4IG1lbW9yeSBsZWFrIGluIGhhbmRsZV9vbmVfdmFyIHdoZXJlIGxvbmcgdmFyYmluZHMgd2VyZW4ndAogICAgICBjb3JyZWN0bHkgZnJlZSgpZC4KICAgCiAgICAtIENoYW5nZSBiZWhhdmlvdXIgb2YgYWdlbnRfY2hlY2tfYW5kX3Byb2Nlc3Mgc28gdGhhdCBhbGFybXMgcnVuCiAgICAgIGNvcnJlY3RseS4KICAgCjIwMDEtMDQtMDIgMDg6NTEgIGR0czEyCgogICAqIGFnZW50L21pYmdyb3VwL2FnZW50eC9tYXN0ZXIuYzoKCiAgIFVzZSB0aGUgJ3N0YW5kYXJkJyBjb25maWcgaGFuZGxlciByZWdpc3RyYXRpb24gcm91dGluZSwKICAgYW5kIHJlY29nbmlzZSB0aGUgY29uZmlnIHNldHRpbmcgJ21hc3RlciBhbGwnCiAgIAoyMDAxLTA0LTAyIDA2OjUzICBuYmEKCiAgICogbWFuL3NubXBkLmNvbmYuNS5kZWY6CgogICBGaXggc29tZSBtaXNzaW5nIHF1b3Rpbmcgb24gLklQIHBhcmFtZXRlcnMKICAgCjIwMDEtMDMtMzAgMDg6MDUgIGhhcmRha2VyCgogICAqIEZBUSwgUkVBRE1FLmFnZW50eCwgYWdlbnQvbWliZ3JvdXAvYWdlbnR4L1JFQURNRS5hZ2VudHg6CgogICBtb3ZlZCBhZ2VudHggUkVBRE1FIHRvIHRvcAogICAKMjAwMS0wMy0zMCAwNzoyMiAgZHRzMTIKCiAgICogRkFROgoKICAgVHlwbyBpbiBBZ2VudFggUkVBRE1FIGZpbGVuYW1lCiAgIAoyMDAxLTAzLTMwIDA3OjIwICBkdHMxMgoKICAgKiBhZ2VudC86IGRzX2FnZW50LmgsIHNubXBfYWdlbnQuYywgc25tcGQuYywKICAgbWliZ3JvdXAvYWdlbnR4L1JFQURNRS5hZ2VudHgsIG1pYmdyb3VwL2FnZW50eC9tYXN0ZXIuYywKICAgbWliZ3JvdXAvYWdlbnR4L21hc3Rlci5oOgoKICAgUHJvdmlkZSAnbWFzdGVyJyBjb25maWcgZGlyZWN0aXZlIHRvIGNvbnRyb2wgd2hldGhlciBvciBub3QgdG8KICAgYWN0aXZhdGUgZXh0ZW5zaWJsZSBzdWJhZ2VudCBzdXBwb3J0LgogICAgIEluaXRpYWxseSByZXN0cmljdGVkIHRvIEFnZW50WCBzdXBwb3J0IG9ubHkuCiAgIAoyMDAxLTAzLTMwIDAzOjQ2ICBkdHMxMgoKICAgKiBhZ2VudC9taWJncm91cC9hZ2VudHgvUkVBRE1FLmFnZW50eDoKCiAgIFVwZGF0ZSB0byByZWZsZWN0IHRoZSBpbmNyZWFzZWQgbWF0dXJpdHkgb2YgdGhlIEFnZW50WCBpbXBsZW1lbnRhdGlvbi4KICAgCjIwMDEtMDMtMzAgMDM6MzQgIGR0czEyCgogICAqIEZBUToKCiAgIFR3ZWFrZWQgdmFyaW91cyBlbnRyaWVzLCBhbmQgYWRkZWQgYSBmZXcgbmV3IG9uZXMuICBHZW5lcmFsIFNoaWVsZCBtZWRkbGluZy4KICAgCjIwMDEtMDMtMzAgMDE6MDAgIGR0czEyCgogICAqIFJFQURNRToKCiAgIEFkZCBwcm9taW5lbnQgd2FybmluZyByZWdhcmRpbmcgdWNkLXNubXAgPT4gbmV0LXNubXAgc3dpdGNoLgogICAKMjAwMS0wMy0zMCAwMDo0NiAgZHRzMTIKCiAgICogc25tcGxpYi9zbm1wX2FwaS5jOgoKICAgRml4IGludGVycHJldGF0aW9uIG9mICJwdXJlIG51bWVyaWMiIHBlZXJuYW1lIHN0cmluZ3MgKGkuZS4gbGlzdGVuIG9uIHRoZQogICAgIHNwZWNpZmllZCBwb3J0IG9uIGFsbCBpbnRlcmZhY2VzKSAtIHByb2JsZW0gaWRlbnRpZmllZCBieSBNYWxhIFJhbWFrcmlzaG5hbi4KICAgCjIwMDEtMDMtMzAgMDA6MDQgIG5iYQoKICAgKiBzbm1wbGliL3BhcnNlLmM6CgogICBSZXBsYWNlIGF0b2kvYXRvbCB3aXRoIHN0cnRvKHUpbCB3aGljaCBoYXMgYmV0dGVyIG91dC1vZi1yYW5nZSByZXR1cm5zLgogICBUaGlzIGlzIG5vdCBhIHBlcmZlY3Qgc29sdXRpb24sIGJ1dCBpdCBpcyBiZXR0ZXIgLi4uCiAgIAoyMDAxLTAzLTI5IDIxOjQzICBoYXJkYWtlcgoKICAgKiBJU1NVRVM6CgogICBybSBJU1NVRVMKICAgCjIwMDEtMDMtMjkgMTQ6MzQgIGhhcmRha2VyCgogICAqIENPUFlJTkc6CgogICBtaW5vciBmb3JtYXR0aW5nLgogICAKMjAwMS0wMy0yOSAxNDozMyAgaGFyZGFrZXIKCiAgICogQ09QWUlORzoKCiAgIFVtLCBnb3QgdGhlIHllYXIgcmlnaHQgdGhpcyB0aW1lLgogICAKMjAwMS0wMy0yOSAxNDozMiAgaGFyZGFrZXIKCiAgICogQ09QWUlORzoKCiAgIHVwZGF0ZSBmb3IgMjAwMTogYWRkZWQgbXkgcmVxdWlyZWQgTkFJIEJTRCBjb3B5cmlnaHQuCiAgIAoyMDAxLTAzLTI5IDA4OjIzICBzbGlmCgogICAqIHRlc3RpbmcvZXZhbF90b29scy5zaDoKCiAgIG1lcmdlIGNoYW5nZSBmcm9tIG1haW4gYnJhbmNoIChyZXR1cm5fdmFsdWU9MSBzdGF0ZW1lbnQpLgogICAKMjAwMS0wMy0yOSAwODoyMSAgc2xpZgoKICAgKiB3aW4zMi9saWJzbm1wX2RsbC9saWJzbm1wLmRlZjoKCiAgIEFkZCB2YWNtX2lzX2NvbmZpZ3VyZWQuCiAgIAoyMDAxLTAzLTI4IDIyOjEyICBuYmEKCiAgICogbWlicy86IHJmY2xpc3QsIHJmY21pYnMuZGlmZjoKCiAgIEFkZCBQcmludGVyLU1JQiB0byB0aGUgcmZjbGlzdCB3aXRoIHRoZSBjb3JyZXNwb25kaW5nIHBhdGNoLgogICAKMjAwMS0wMy0yOCAxMzowNiAgbmJhCgogICAqIHNubXBsaWIvc25tcF9jbGllbnQuYzoKCiAgIFByb3Blcmx5IGlnbm9yZSBub24tcmVzcG9uc2UgUERVJ3Mgd2hlbiBkb2luZyBhc3luYyB0cmFuc2FjdGlvbi4KICAgCjIwMDEtMDMtMjggMTM6MDQgIG5iYQoKICAgKiBtYW4vc25tcGNtZC4xLCBzbm1wbGliL21pYi5jOgoKICAgRml4IGluZGV4IGhhbmRsaW5nIHRvIHByb3Blcmx5IGFjY2VwdCBpbmRleGluZyB3aXRoIFRpbWVUaWNrcy4KICAgSW1wbGVtZW50IC1JciB0byBkaXNhYmxlIGluZGV4IGNoZWNrcy4KICAgCjIwMDEtMDMtMjggMDY6MjAgIGhhcmRha2VyCgogICAqIEZBUSwgUkVBRE1FLCBzZWRzY3JpcHQuaW4sIHZlcnNpb24uaDoKCiAgIC0gKHZlcnNpb24uaCBzZWRzY3JpcHQuaW4pOiB2ZXJzaW9uIHRhZyAoIDQuMi4xLnByZTIgKQogICAKMjAwMS0wMy0yNyAxMDoyNyAgaGFyZGFrZXIKCiAgICogYXBwcy9zbm1wdHJhcGQuYzoKCiAgIFVzZSBzbm1wX2xvZyB3aXRoICVzIHRvIHByZXZlbnQgJSBleHBhbnNpb24gaW4gb2N0ZXQgc3RyaW5ncyBjb250YWluaW5nIGEgJXMuCiAgIAoyMDAxLTAzLTI3IDA1OjM3ICBkdHMxMgoKICAgKiBhZ2VudC86IHNubXBfYWdlbnQuYywgbWliZ3JvdXAvYWdlbnR4L21hc3Rlcl9yZXF1ZXN0LmM6CgogICBIYW5kbGUgbm9uLXJlc3BvbnNpdmUgQWdlbnRYIHN1Yi1hZ2VudHMgbW9yZSByb2J1c3RseS4KICAgICAgKEJhc2VkIG9uIHN1Z2dlc3Rpb25zIGZyb20gSGFycmllIEhhemV3aW5rZWwgJiBQYXVsIFJhc211c3NlbikKICAgCjIwMDEtMDMtMjcgMDI6MzUgIGR0czEyCgogICAqIGFnZW50L21pYmdyb3VwL3NtdXgvc211eC5jOgoKICAgUmVzZXQgY291bnQgb2YgYXV0aG9yaXplZCBwZWVycyBvbiBjbG9zZWRvd24uICAoVGhhbmtzIHRvIFZsYWQgVHVuaWspCiAgIAoyMDAxLTAzLTI2IDE4OjAzICBoYXJkYWtlcgoKICAgKiBhZ2VudC9taWJncm91cC9taWJJSS92YWNtX3ZhcnMuYywgc25tcGxpYi92YWNtLmMsIHNubXBsaWIvdmFjbS5oOgoKICAgRml4ZWQgdmFjbSB0byBkcm9wIHYxL3YyYyBwYWNrZXRzIHByb3Blcmx5IHdoZW4gbm8gY29tMnNlYyBlbnRyaWVzIGFyZSBmb3VuZC4KICAgCjIwMDEtMDMtMjYgMTE6MDYgIGhhcmRha2VyCgogICAqIGxvY2FsL2lwZi1tb2QucGw6CgogICBhZGQgdXNhZ2UgY29tbWVudCBhdCB0b3AKICAgCjIwMDEtMDMtMjIgMTQ6MzQgIG5iYQoKICAgKiBtaWJzL3JmY2xpc3Q6CgogICBOZXcgTUlCIGluIFJGQyAzMDgzOiBET0NTLUJQSS1NSUIKICAgCjIwMDEtMDMtMjIgMTQ6MjcgIG5iYQoKICAgKiBhZ2VudC9taWJncm91cC9ob3N0L2hyX2ZpbGVzeXMuYywgcy9jeWd3aW4uaCwKICAgYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9zdG9yYWdlLmMsIGFnZW50L21pYmdyb3VwL2hvc3QvaHJfc3dydW4uYywKICAgYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl91dGlscy5jOgoKICAgTWFrZSBtb3N0IG9mIHRoZSBob3N0IHJlc291cmNlcyBtaWIgY29tcGlsZSB1bmRlciBDeWd3aW4uIFdlIGNhbiBub3cgZG8KICAgLS13aXRoLW1pYi1tb2R1bGVzPWhvc3QgLS13aXRoLW91dC1taWItbW9kdWxlcz1ob3N0L2hyX25ldHdvcmsKICAgCjIwMDEtMDMtMjIgMTI6MjcgIGhhcmRha2VyCgogICAqIGFnZW50L21pYmdyb3VwL3V0aWxfZnVuY3MuYzoKCiAgIGZpeCBoZWFkZXJfc2ltcGxlX3RhYmxlKCkgZm9yIHRvbyBsb25nIHJlcXVlc3RzCiAgIAoyMDAxLTAzLTIyIDA4OjEzICBoYXJkYWtlcgoKICAgKiBhcHBzL3NubXB0cmFwZC5jOgoKICAgQmFkIFdlczogZmluZCBhbGwgaW5zdGFuY2VzIG9mIGN1dC1uLXBhc3RlIGVycm9ycyBiZWZvcmUgY29tbWl0dGluZy4KICAgCjIwMDEtMDMtMjIgMDg6MTIgIGhhcmRha2VyCgogICAqIGFwcHMvc25tcHRyYXBkLmM6CgogICBCYWQgV2VzOiBkb24ndCBjYWxsIGZ1bmN0aW9uIHdpdGhvdXQgdGhlICgpcy4gIChhdCBsZWFzdCBpbiBDKS4KICAgCjIwMDEtMDMtMjIgMDc6NDYgIGR0czEyCgogICAqIGFnZW50L2FnZW50X3RyYXAuYzoKCiAgIEZpeCBmb3IgbWlub3IgbWVtb3J5IGxlYWsgd2l0aCB0cmFwLXJlbGF0ZWQgdmFyYmluZCB2YWx1ZXMuCiAgIFRoYW5rcyB0byBKb2huIFZpbGxhbG92b3MgKGFuZCB0aGUgSW50ZWwgU05NUCB0ZWFtKQogICAKMjAwMS0wMy0yMSAxNzoyMiAgZHJpZWh1aXMKCiAgICogc25tcGxpYi9taWIuYzoKCiAgIEJ1Z2ZpeCBmb3IgY3Jhc2ggYXQgc25tcF9zaHV0ZG93biB0aW1lIHdpdGggT1MncyB0aGF0IGNoZWNrIHBvaW50ZXIKICAgdmFsaWRpdHkgKGUuZy4sIEZyZWVCU0QpCiAgIAoyMDAxLTAzLTIxIDA4OjE2ICBoYXJkYWtlcgoKICAgKiBhZ2VudC9taWJncm91cC9taWJJSS9pbnRlcmZhY2VzLmM6CgogICBqb2luIGJyb2tlbiBzbm1wX2xvZyBsaW5lcwogICAKMjAwMS0wMy0yMSAwODoxNSAgaGFyZGFrZXIKCiAgICogYXBwcy9zbm1wdHJhcGQuYzoKCiAgIGZpeCAtRiAoSSB0aGluaykKICAgCjIwMDEtMDMtMjEgMDc6NDMgIGhhcmRha2VyCgogICAqIHNubXBsaWIvc25tcF9hcGkuYzoKCiAgIHBhdGNoIGZyb20gSGFycmllIHRvIGZpeCB2YXJpYWJsZSB0eXBlcyAoaW50IC0+IHNpemVfdCkKICAgCjIwMDEtMDMtMjAgMDg6MjUgIG5iYQoKICAgKiBhZ2VudC9taWJncm91cC9taWJJSS9hdC5jLCBhZ2VudC9taWJncm91cC9taWJJSS9hdC5oLAogICBhZ2VudC9taWJncm91cC9taWJJSS9pbnRlcmZhY2VzLmMsIHMvbGludXguaDoKCiAgIEZpeCB0aGUgYXRUYWJsZSBhbmQgaXBOZXRUb3BNZWRpYVRhYmxlIGZvciBMaW51eCB0byByZXR1cm4gdGhlIGlmSW5kZXgKICAgCjIwMDEtMDMtMTkgMTM6MTQgIG5iYQoKICAgKiBhcHBzL3NubXBkZWx0YS5jLCBtYW4vc25tcGRlbHRhLjE6CgogICBNYWpvciBvcHRpb24gcGFyc2luZyBzdXJnZXJ5IHRvIGNhdGhlciBmb3IgdGhlIGdldG9wdCB1c2luZyB2ZXJzaW9uIG9mCiAgIHNubXBfcGFyc2VfYXJncy4gU2VlbXMgdG8gaGF2ZSBiZWVuIGZvcmdvdHRlbiB3aGVuIHRoZSByZXN0IG9mIHRoZSBhcHBzCiAgIHdlcmUgdXBkYXRlZC4KICAgCjIwMDEtMDMtMTkgMTM6MTMgIG5iYQoKICAgKiBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9kaXNrLmM6CgogICBSZS1vcmRlciBzeXMvY29uZi5oIGFuZCBzeXMvcGFyYW0uaCB0byBtYWtlIEZyZWVCU0QtNSBoYXBweQogICAKMjAwMS0wMy0xNSAxMzo0NCAgaGFyZGFrZXIKCiAgICogYWdlbnQvbWliZ3JvdXAvbWliSUkvaXAuYzoKCiAgIGZpeGVkIGJ1ZyAjNDA1MDAwOiBkcm9wcGVkIHN1cHBvcnQgZm9yIElQT1VUTk9ST1VURVMsIHNpbmNlIG5vCiAgIGNhbGN1bGF0aW9uIG9mIGl0IHNlZW1zIGNsb3NlIHRvIGNvcnJlY3QuCiAgIAoyMDAxLTAzLTE1IDEzOjM2ICBoYXJkYWtlcgoKICAgKiBhZ2VudC9taWJncm91cC9taWJJSS91ZHAuYzoKCiAgIGZpeCBwYXJ0IDIgb2YgYnVnIDQwNTUxOSBhZGRpbmcgZnVsbHNvY2sgdG8gdWRwaW5lcnJvcnMKICAgCjIwMDEtMDMtMTUgMTM6MzEgIGhhcmRha2VyCgogICAqIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Ztc3RhdF9zb2xhcmlzMi5jOgoKICAgZml4IGJ1ZyAjNDA4Mzg4IHdoZXJlIG1lbW1vdmUgaXMgY2FsbGVkIHdpdGggdG9vIHNob3J0IGEgbGVuZ3RoLgogICAKMjAwMS0wMy0xNSAxMToyMSAgaGFyZGFrZXIKCiAgICogRkFRLCBSRUFETUUsIHNlZHNjcmlwdC5pbiwgdmVyc2lvbi5oOgoKICAgLSAodmVyc2lvbi5oIHNlZHNjcmlwdC5pbik6IHZlcnNpb24gdGFnICggNC4yLjEucHJlMSApCiAgIAoyMDAxLTAzLTE1IDAzOjM0ICBqYnBuCgogICAqIHRlc3RpbmcvZXZhbF90b29scy5zaDoKCiAgIGtpbGwgLVNJR0tJTEwgaXNuJ3QgbGVnYWwgc3ludGF4IG9uIFNvbGFyaXMgb3IgTGludXg7IGNoYW5nZWQgdG8ga2lsbCAtOQogICB3aGljaCBpcyBsaWtlbHkgc2FmZXIKICAgCiAgIGRvbid0IHNldCByZXR1cm5fdmFsdWUgdG8gMSBhZnRlciBraWxsaW5nIHNubXBkLCB3aGljaCBjYXVzZXMgc3B1cmlvdXMKICAgdGVzdCBmYWlsdXJlcwogICAKMjAwMS0wMy0xNCAxNDozOCAgaGFyZGFrZXIKCiAgICogYWdlbnQvYWdlbnRfdHJhcC5oOgoKICAgUGF0Y2ggZnJvbSBIYXJyaWUgSGF6ZXdpbmtlbDogbWFrZSBzZW5kX2VudGVycHJpc2VfdHJhcF92YXJzIGEgcHVibGljIGZuLgogICAKMjAwMS0wMy0xNCAxMTowOCAgaGFyZGFrZXIKCiAgICogYWdlbnQvbWliZ3JvdXAvbWliSUkvYXQuYzoKCiAgIGZpeCBpcG5ldHRvbWVkaWEgaW5kZXhpbmcgb24gc29sYXJpcy4KICAgCjIwMDEtMDMtMTQgMTA6MjcgIHNsaWYKCiAgICogYWdlbnQvbWliZ3JvdXAvdHVubmVsL3R1bm5lbC5jOgoKICAgVXNlIGNvbmZpZy5oLCBkb24ndCB1c2UgdWNkLXNubXAgZGlyZWN0b3J5IHRvIGJ1aWxkIGluIHRoZSBtaWJncm91cCB0cmVlLgogICAKMjAwMS0wMy0xNCAxMDoxOCAgc2xpZgoKICAgKiB0ZXN0aW5nL1JVTlRFU1RTOgoKICAgcXVpZXQgIndoaWNoIiBvdXRwdXQuICBuZXZlciBlbmRpbmcgc2FnYS4uLgogICAKMjAwMS0wMy0xNCAxMDowOCAgc2xpZgoKICAgKiBhZ2VudC9taWJncm91cC9hZ2VudHgvbWFzdGVyX3JlcXVlc3QuYzoKCiAgIHF1aWV0IHVuc2lnbmVkIGxvbmcgY29tcGFyZS4KICAgCjIwMDEtMDMtMTQgMTA6MDAgIHNsaWYKCiAgICogYWdlbnQvbWliZ3JvdXAvYWdlbnR4L2NsaWVudC5jOgoKICAgR2V0IGEgZGVjbCBvZiBpbl9hZGRyX3QgZnJvbSBuZXRpbmV0L2luLmgsIHdoZXJlIG5lY2Vzc2FyeS4KICAgCjIwMDEtMDMtMTQgMTA6MDAgIHNsaWYKCiAgICogc25tcGxpYi9wYXJzZS5jOgoKICAgQXZvaWQgd2FybmluZ3Mgb2Ygc3RydWN0IHRpbWV2YWwgZGVjbCBpbiBzeXN0ZW0uaCBieSBpbmNsdWRpbmcgKnRpbWUuaCouCiAgIAoyMDAxLTAzLTE0IDA5OjQ3ICBzbGlmCgogICAqIGFnZW50L3NubXBkLmMsIGFwcHMvc25tcHZhY20uYywgYXBwcy9zbm1wbmV0c3RhdC93aW5zdHViLmMsCiAgIHNubXBsaWIvcGFyc2UuYzoKCiAgIHBhdGNoIHN1Ym1pdHRlZCBieSBIYXJyaWUgSGF6ZXdpbmtlbAogICAKMjAwMS0wMy0xNCAwOTo0MCAgc2xpZgoKICAgKiB0ZXN0aW5nL1JVTlRFU1RTOgoKICAgZG9uJ3QgcnVuIHRlc3RzIHdpdGhvdXQgbmVlZGVkIHByb2dyYW1zOiBzbm1wZCwgc25tcGdldCwgc25tcGdldG5leHQuCiAgIAoyMDAxLTAzLTE0IDA4OjI0ICBzbGlmCgogICAqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluOgoKICAgUHJvdmlkZSBhbiBlbXB0eSBETExJQlMgdmFsdWUgZm9yIG5vbi1kbG1vZCB1c2VzLgogICAKMjAwMS0wMy0xNCAwNzozNiAgc2xpZgoKICAgKiBhZ2VudC9taWJncm91cC9hZ2VudHgvcHJvdG9jb2wuYzoKCiAgIGNhc3QgdV9sb25nIHRvIHVfY2hhciB3aGVuIHN0b3JpbmcgOC1iaXQgdmFsdWVzLgogICAKMjAwMS0wMy0xNCAwNzozMyAgc2xpZgoKICAgKiBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9wcm94eS5jOgoKICAgZml4IHVuc2lnbmVkIGxlbmd0aCBjb21wYXJlcy4KICAgCjIwMDEtMDMtMTQgMDU6NDUgIGR0czEyCgogICAqIGFnZW50L21pYmdyb3VwL2hvc3QvaHJfc3dydW4uYzoKCiAgIEZpeCBMaW51eCBmaWxlIGRlc2NyaXB0b3IgbGVhayAocmVwb3J0ZWQgYnkgT2xpdmVyIEbkbmdlcikKICAgCjIwMDEtMDMtMTMgMTM6MjAgIGhhcmRha2VyCgogICAqIHNubXBsaWIvZGVmYXVsdF9zdG9yZS5jOgoKICAgUGF0Y2ggZnJvbSBIYXJyaWUgSGF6ZXdpbmtlbCB0byBjaGVjayBmb3IgTlVMTHMgaW4gREVCVUcgbXNnCiAgIAoyMDAxLTAzLTEyIDE0OjA2ICBuYmEKCiAgICogYWdlbnQvbWliZ3JvdXAvYWdlbnR4LzogbWFzdGVyX2FkbWluLmMsIHN1YmFnZW50LmM6CgogICBGaXggc29tZSBtaW5vciBsZWFrcy4KICAgCjIwMDEtMDMtMTIgMTQ6MDUgIG5iYQoKICAgKiBhZ2VudC9zbm1wZC5jOgoKICAgU29tZSBtaW5vciBmaXhlcyB0byBhcmd1bWVudCBwcm9jZXNzaW5nLCBpbmNsdWRpbmcgdGVybWluYXRpbmcgc25tcGQgb24KICAgZXh0cmFuZW91cyBub24tb3B0aW9uIGFyZ3VtZW50cy4KICAgCjIwMDEtMDMtMTAgMDg6MTMgIGhhcmRha2VyCgogICAqIGFnZW50L21pYmdyb3VwL21pYklJL2lwLmM6CgogICBCdWcgIzQwNDk4ODogZG9uJ3QgdXNlIGlwc3RhdC5pcHNfZnJhZ3RpbW91dCBhcyBhIG51bWJlciBvZiBzZWNvbmRzLgogICAKMjAwMS0wMy0wNyAxMDoyNiAgc2xpZgoKICAgKiB0ZXN0aW5nL2V2YWxfdG9vbHMuc2g6CgogICAKICAgbmV3IERFTEFZIGZ1bmN0aW9uOyBzdGFydC9zdG9wIGRhZW1vbnMgdXNpbmcgbmV3IFNUQVJUUFJPRy9TVE9QUFJPRyB3aXRoIERFTEFZOwogICBsb2cgY29tbWFuZHMgaXNzdWVkIGFuZCBmaW5hbCByZXN1bHQgdG8gU05NUF9UTVBESVIvaW52b2tlZDsKICAgc3VwcHJlc3MgImtpbGwiIG91dHB1dCB0byBoZWxwIEN5Z3dpbiB1c2VycyBoYXBweS4KICAgCjIwMDEtMDMtMDcgMTA6MjMgIHNsaWYKCiAgICogdGVzdGluZy9SVU5URVNUUzoKCiAgIAogICBhZGQgLVMgcGFyYW1ldGVyIGZvciBERUxBWSBzZWNvbmRzOyBhZGQgdHJhcCBmb3IgaW50ZXJydXB0IGNvbnRyb2w7CiAgIHBhc3MgdGVzdCBudW1iZXIgYW5kIGRpc3BsYXktaGVhZGVyLW9ubHkgdG8gZXZhbF9vbmVzY3JpcHQuc2g7CiAgIGFkZCB3aGljaCB0ZXN0IHRvIHZlcmJvc2UgbG9jYXRpbmcgbWVzc2FnZXMgKEN5Z3dpbiB1c2VzIHR5cGUsIG5vdCB3aGljaCkuCiAgIAoyMDAxLTAzLTA3IDEwOjIwICBzbGlmCgogICAqIHRlc3RpbmcvOiBURVNUQ09ORi5zaCwgZXZhbF9vbmVzY3JpcHQuc2g6CgogICAKICAgCiAgIEluY29ycG9yYXRlIHRlc3QgbnVtYmVyIGludG8gdGVzdCByZXN1bHRzIGRpciBuYW1lLgogICBQcm92aWRlIGRlZmF1bHQgdmFsdWVzIGZvciB0ZXN0IG51bWJlciBhbmQgZGlzcGxheS1oZWFkZXItb25seSBmbGFnLgogICAKMjAwMS0wMy0wNyAxMDoxOSAgc2xpZgoKICAgKiB0ZXN0aW5nL01ha2VmaWxlLmluOgoKICAgCiAgIAogICAibWFrZSBjbGVhbiIgcmVtb3ZlcyBhbnkgdGVzdCByZXN1bHQgZGlycyAiL3RtcC9zbm1wLXRlc3QtKiIuCiAgIAoyMDAxLTAzLTA3IDEwOjE1ICBzbGlmCgogICAqIHRlc3RpbmcvdGVzdHMvOiBUMDU0YWdlbnR2MmN0cmFwLCBUMDU2YWdlbnR2MmNtaW50cmFwLAogICBUMDU4YWdlbnRhdXRodHJhcDoKCiAgIAogICBSZXBsYWNlIHNsZWVwIHdpdGggY29tbWVudGVkIG91dCBERUxBWSA7IGVhY2ggc3RhcnQvc3RvcCBhY3Rpb24gbm93CiAgIGludm9rZXMgREVMQVkuCiAgIAoyMDAxLTAzLTA3IDEwOjE0ICBzbGlmCgogICAqIHRlc3RpbmcvdGVzdHMvVDEwMGFnZW50aHVwOgoKICAgCiAgIFJlcGxhY2Ugc2xlZXAgd2l0aCBERUxBWS4KICAgCjIwMDEtMDMtMDcgMTA6MTMgIHNsaWYKCiAgICogd2luMzIvY29uZmlnLmg6CgogICAKICAgCiAgIENoYW5nZSBlbGVtZW50IHNlcGFyYXRvciB0byBXaW4zMiAnOycgaW4gREVGQVVMVF9NSUJTCiAgIERlY2xhcmUgV2luMzIgaGFzIGdldHBpZCEuCiAgIAoyMDAxLTAzLTA3IDEwOjEwICBzbGlmCgogICAqIHNubXBsaWIvc25tcF9hcGkuYzoKCiAgIAogICAKICAgV2luMzIgaW5jbHVkZSBpby5oIHRvIGRlY2xhcmUgbWt0ZW1wLgogICBFeHBhbmQgdGhlIGNvbW1lbnQgbmVhciBta3RlbXAgdXNhZ2UgdG8gZXhwbGFpbiB3aHkgaXQgaXMgbmVlZGVkLgogICAKMjAwMS0wMy0wNyAxMDowOSAgc2xpZgoKICAgKiBzbm1wbGliL3NubXBfYWxhcm0uYzoKCiAgIAogICAKICAgcmVtb3ZlIHVubmVjZXNzYXJ5IGlmbmRlZiBXSU4zMi4gIGlmZGVmIFNJR0FMUk0gaXMgc3VmZmljaWVudC4KICAgCjIwMDEtMDMtMDcgMTA6MDcgIHNsaWYKCiAgICogYWdlbnQvc25tcGQuYywgYXBwcy9zbm1wdHJhcGQuYzoKCiAgIAogICAKICAgV2luMzIgaW5jbHVkZSBwcm9jZXNzLmggdG8gZGVjbGFyZSBnZXRwaWQuCiAgIAoyMDAxLTAzLTA3IDEwOjA2ICBzbGlmCgogICAqIHNubXBsaWIvc25tcF9sb2dnaW5nLmM6CgogICAKICAgCiAgIFVzZSBwcm9wZXIgZGVmaW5lIHRvIHF1YWxpZnkgaW5jbHVkZS1pbmcgYSBoZWFkZXIuCiAgIAoyMDAxLTAzLTA3IDEwOjA0ICBzbGlmCgogICAqIGFnZW50L21pYl9tb2R1bGVzLmMsIGFwcHMvc25tcG5ldHN0YXQvaWYuYywgc25tcGxpYi9zeXN0ZW0uaDoKCiAgIAogICAKICAgQXBwbHkgdGhlIHRpbWUgZ29vIGNvbnNpc3RlbnRseTogbW92ZSBoZWFkZXIgaW5jbHVkZXMgb3V0IG9mIHN5c3RlbS5oLgogICAKMjAwMS0wMy0wNiAxMDowOCAgaGFyZGFrZXIKCiAgICogY29uZmlndXJlLCBjb25maWd1cmUuaW46CgogICBkb24ndCBmb3JjZSBpbmNsdXNpb24gb2YgLWxkbC4KICAgCjIwMDEtMDMtMDUgMDY6MzAgIHNsaWYKCiAgICogc25tcGxpYi9zbm1wdjMuYzoKCiAgIAogICAKICAgRm9sbG93IG1ldGhvZCB1c2FnZSwgZG9uJ3QgZGVjbGFyZSBnZXRId0FkZHJlc3MgdW5sZXNzIHVzZWQuCiAgIAoyMDAxLTAzLTA1IDA2OjMwICBzbGlmCgogICAqIHNubXBsaWIvc25tcF9hcGkuYzoKCiAgIAogICAKICAgUmVtb3ZlIG5lc3RlZCB2YXJpYWJsZSBlcCAtIG9uZSBhbHJlYWR5IGV4aXN0cy4KICAgCjIwMDEtMDMtMDUgMDY6MjggIHNsaWYKCiAgICogYWdlbnQvbWliZ3JvdXAvZXhhbXBsZXMvdWNkRGVtb1B1YmxpYy5jOgoKICAgCiAgIAogICBDb21tZW50IG91dCBleGFtcGxlIHZhcmlhYmxlcyB0aGF0IGFyZSBub3QgdXNlZC4KICAgCjIwMDEtMDMtMDQgMTc6NDEgIHNsaWYKCiAgICogUkVBRE1FLndpbjMyLCB3aW4zMi9jb25maWcuaCwgd2luMzIvbWliX21vZHVsZV9jb25maWcuaCwKICAgd2luMzIvbWliX21vZHVsZV9pbmNsdWRlcy5oLCB3aW4zMi9taWJfbW9kdWxlX2luaXRzLmgsCiAgIHdpbjMyL2xpYnNubXBfZGxsL2xpYnNubXAuZGVmLCB3aW4zMi9saWJ1Y2RtaWJzL2xpYnVjZG1pYnMuZGVmLAogICB3aW4zMi9saWJ1Y2RtaWJzL2xpYnVjZG1pYnMuZHNwOgoKICAgCiAgIAogICBwYXRjaCB0byBidWlsZCBtb3JlIG1vZHVsZXMsIGluY2x1ZGluZyBhZ2VudFgsIG9uIFdpbjMyIHVzaW5nIE1TLVZDLgogICAKMjAwMS0wMy0wNCAxNzoyNyAgc2xpZgoKICAgKiBhZ2VudC9taWJncm91cC9oZWFkZXJfY29tcGxleC5jLCBhZ2VudC9taWJncm91cC9hZ2VudHgvY2xpZW50LmMsCiAgIGFnZW50L21pYmdyb3VwL2FnZW50eC9tYXN0ZXIuYywKICAgYWdlbnQvbWliZ3JvdXAvYWdlbnR4L21hc3Rlcl9hZG1pbi5jLAogICBhZ2VudC9taWJncm91cC9hZ2VudHgvbWFzdGVyX3JlcXVlc3QuYywKICAgYWdlbnQvbWliZ3JvdXAvYWdlbnR4L3Byb3RvY29sLmMsIGFnZW50L21pYmdyb3VwL2FnZW50eC9zdWJhZ2VudC5jLAogICBhZ2VudC9taWJncm91cC9ub3RpZmljYXRpb24vc25tcE5vdGlmeUZpbHRlclByb2ZpbGVUYWJsZS5jLAogICBhZ2VudC9taWJncm91cC9ub3RpZmljYXRpb24vc25tcE5vdGlmeUZpbHRlclRhYmxlLmMsCiAgIGFnZW50L21pYmdyb3VwL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5VGFibGUuYywKICAgYWdlbnQvbWliZ3JvdXAvdGFyZ2V0L3RhcmdldC5jLCBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9kbG1vZC5jLAogICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9wYXNzX3BlcnNpc3QuYywKICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvcHJveHkuYywgYXBwcy9zbm1wdHJhcGRfbG9nLmM6CgogICAKICAgCiAgIHBhdGNoIHRvIGJ1aWxkIG1vcmUgb2YgdGhlIGFnZW50IHVzaW5nIE1TLVZDIG9uIFdpbjMyIHBsYXRmb3JtLgogICAKMjAwMS0wMy0wMyAxNDozNCAgbmJhCgogICAqIG1pYnMvOiBJQU5BaWZUeXBlLU1JQi50eHQsIE1UQS1NSUIudHh0LCBNYWtlZmlsZS5taWIsCiAgIFJFQURNRS5taWJzLCBUVU5ORUwtTUlCLnR4dCwgaWFuYWxpc3QsIG1pYmZldGNoLCByZmNsaXN0LAogICByZmNtaWJzLmRpZmYsIHNtaXN0cmlwOgoKICAgVXBkYXRlIHRvIGN1cnJlbnQgSUFOQWlmVHlwZS1NSUIsIHBsdXMgYWRkaXRpb24gb2YgUkVBRE1FIGFuZCB0b29scyB0byBnZXQKICAgYSBjb21wbGV0ZSBzZXQgb2YgSUVURiBNSUIgZmlsZXMuCiAgIAoyMDAxLTAzLTAzIDA3OjExICBuYmEKCiAgICogYWdlbnQvbWliZ3JvdXAvYWdlbnR4L21hc3Rlci5oOgoKICAgUmVtb3ZlIGFuIHVudXNlZCBwcm90b3R5cGUKICAgCjIwMDEtMDMtMDMgMDY6MzYgIG5iYQoKICAgKiBtYW4vc25tcHRyYXBkLjgsIGFwcHMvc25tcHRyYXBkX2xvZy5jOgoKICAgQWRkIGEgbmV3ICVQIGZvcm1hdHRpbmcgc2VxdWVuY2UgdG8gdXNlciBzcGVjaWZpZWQgbG9nIGZvcm1hdHMuIEl0IHByaW50CiAgIHRoZSBzZWN1cml0eSBpbmZvcm1hdGlvbiBmcm9tIHRoZSBQRFUgKGNvbW11bml0eSwgdXNlciwgY29udGV4dCBhcyBhdmFpbGFibGUpCiAgIEFsc28gbW9kaWZ5IHRoZSBkZWZhdWx0IHRyYXAgb3V0cHV0IHRvIHVzZSBpdC4KICAgCjIwMDEtMDMtMDMgMDY6MjEgIG5iYQoKICAgKiBhcHBzL3NubXB0cmFwZF9sb2cuYzoKCiAgIEZpeCBzcGVjaWZpZXJzIGxpa2UgJS4zcwogICAKMjAwMS0wMy0wMyAwNjoxMCAgbmJhCgogICAqIHNubXBsaWIvcGFyc2UuYzoKCiAgIEZpeCB0aGUgcGFyc2VyIHRvIGRpYWdub3NlIG9pZCBzcGVjcyBsaWtlOjo9IHsgc2luZ2xlIH0KICAgQmUgc2lsZW50IGZvciBpbnRlcm5hbCBsaW5rcyB3aGVuIG1vdmluZyBub2RlcyB0byB0aGUgYWRvcHRpb24gbGlzdC4gVGhpcwogICBzaG91bGQgaGVscCBnaXZpbmcgb25seSBhIHNpbmdsZSBtZXNzYWdlIGZvciBtaXNzaW5nIGltcG9ydHMgb2YgZW50ZXJwcmlzZXMuCiAgIAoyMDAxLTAzLTAyIDEzOjI0ICBzbGlmCgogICAqIHNubXBsaWIvYXNuMS5jLCBzbm1wbGliL21pYi5jLCBzbm1wbGliL21pYi5oLCBzbm1wbGliL3NubXBfYXBpLmMsCiAgIHNubXBsaWIvc25tcF9wYXJzZV9hcmdzLmMsIHNubXBsaWIvc25tcF9wYXJzZV9hcmdzLmgsCiAgIHdpbjMyL2xpYnNubXBfZGxsL2xpYnNubXAuZGVmOgoKICAgCiAgIAogICBjbGVhbnVwIGZvciBNUy1WQyBXaW4zMiBidWlsZAogICAKMjAwMS0wMy0wMiAwNzozNiAgaGFyZGFrZXIKCiAgICogUkVBRE1FOgoKICAgc291cmNlcmZvcmdlIC0+IHNvdXJjZWZvcmdlCiAgIAoyMDAxLTAzLTAyIDA3OjI1ICBoYXJkYWtlcgoKICAgKiBwZXJsL1NOTVAvU05NUC54czoKCiAgIFBhdGNoIGZyb20gS2FybCBTY2hpbGtlIHRvIGZpeCB0aW1lc3RhbXBzIGluIHN5bmNob25vdXMgY2FzZXMKICAgCjIwMDEtMDMtMDIgMDY6MzEgIGhhcmRha2VyCgogICAqIHNubXBsaWIvc25tcF9hcGkuYzoKCiAgIFJlbW92ZSB1bnVzZWQgdmFyaWFibGUgZnJvbSBzbm1wX29pZF9jb21wYXJlKCkuCiAgIAoyMDAxLTAzLTAxIDE5OjQ5ICBoYXJkYWtlcgoKICAgKiBzbm1wbGliLzogYXNuMS5jLCBzbm1wX2FwaS5jOgoKICAgRml4IHNubXBfb2lkX2NvbXBhcmUgYW5kIHJldmVyc2UgZW5jb2RpbmdzIHRvIGRlYWwgd2l0aCBudW1iZXJzID4gMl4zMS4KICAgCjIwMDEtMDItMjEgMTU6MzEgIG5iYQoKICAgKiBtYW4vOiBzbm1wLmNvbmYuNS5kZWYsIHNubXBjbWQuMToKCiAgIEZpeCBhIGNvdXBsZSBvZiB0eXBvcwogICAKMjAwMS0wMi0yMSAxNToyMiAgaGFyZGFrZXIKCiAgICogc25tcGxpYi91Y2Qtc25tcC1pbmNsdWRlcy5oOgoKICAgQXBwbGllZCBwYXRjaCAjMTAzODA1IGZyb20gYmNvbGxhcjogYWRkIHN5cy90aW1lLmggdG8gdWNkLXNubXAtaW5jbHVkZXMuaAogICAKMjAwMS0wMi0yMSAxNToxNSAgaGFyZGFrZXIKCiAgICogc25tcGxpYi9pbnQ2NC5jOgoKICAgZml4IGJ1ZyAjMTMzNDE2ICh1NjRTdWJ0cmFjdGlvbiBtYXRoKSBhcyBzdWdnZXN0ZWQgYnkgdGhlIHN1Ym1pdHRvcgogICAKMjAwMS0wMi0yMSAxNDozOCAgbmJhCgogICAqIGFnZW50L21pYmdyb3VwL2hvc3QvaHJfZmlsZXN5cy5jOgoKICAgVHJ5IGZpeGluZyBpbmNvbnNpc3RlbnQgaW5kZXhpbmcgb24gQlNECiAgIAoyMDAxLTAyLTE5IDA4OjQ2ICBzbGlmCgogICAqIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Byb3h5LmM6CgogICAKICAgCiAgIC0gcHJveHkuYzogcmVtb3ZlIHNvbWUgdW51c2VkIHZhcmlhYmxlcy4KICAgCjIwMDEtMDItMTYgMTU6MTIgIGhhcmRha2VyCgogICAqIGFnZW50L3Zhcl9zdHJ1Y3QuaDoKCiAgIC0gaW5jcmVhc2UgVUNEX1JFR0lTVFJZX09JRF9NQVhfTEVOIHRvIDEyOCBhdCBGcmFuaydzIHJlcXVlc3QKICAgCjIwMDEtMDItMTQgMTg6MTUgIGhhcmRha2VyCgogICAqIGFwcHMvc25tcHRyYXBkLmM6CgogICByZW1vdmVkIHVudXNlZCBzbm1wX2FsYXJtLmggaW5jbHVkZQogICAKMjAwMS0wMi0xMyAxNjoyMSAgaGFyZGFrZXIKCiAgICogc25tcGxpYi9zbm1wX2FwaS5jOgoKICAgZml4IGJ1ZyAjMTMwNzQwIHVzaW5nIHN1Z2dlc3RlZCBjbG9zZSgpIHdyYXBwZXIgYXJvdW5kIG1rc3RlbXAoKQogICAKMjAwMS0wMi0wOSAxMToxNiAgaGFyZGFrZXIKCiAgICogYWdlbnQvc25tcGQuYzoKCiAgIEFwcGxpZWQgcGF0Y2ggIzEwMzYxMzogZml4IG1lbW9yeSBsZWFrIGluIHNubXBkIHBvcnQgc3BlY2lmaWNhdGlvbiAtPiBkZWZhdWx0X3N0b3JlLgogICAKMjAwMS0wMi0wOSAxMToxNCAgaGFyZGFrZXIKCiAgICogYWdlbnQvbWliX21vZHVsZXMuYzoKCiAgIEFwcGxpZWQgcGF0Y2ggIzEwMzYxMjogZml4IG1lbW9yeSBsZWFrIGluIG1pYl9tb2R1bGUgaW5pdCBjb2RlCiAgIAoyMDAxLTAyLTA5IDExOjEyICBoYXJkYWtlcgoKICAgKiBhZ2VudC9hZ2VudF9yZWdpc3RyeS5jOgoKICAgQXBwbGllZCBwYXRjaCAjMTAzNjExOiBmaXggbWVtb3J5IGxlYWsgZm9yIGR1cGxpY2F0ZSBvaWQgcmVnaXN0cmF0aW9ucy4KICAgCjIwMDEtMDItMDkgMTE6MDggIGhhcmRha2VyCgogICAqIHBlcmwvU05NUC9TTk1QLnhzOgoKICAgQXBwbGllZCBwYXRjaCAjMTAzNjA0OiBBZGQgc3VwcG9ydCBmb3IgVjEgdHJhcHMgYW5kIGludC9pbnQzMiBkaWZmZXJlbmNlcwogICAKMjAwMS0wMi0wOSAxMTowNiAgaGFyZGFrZXIKCiAgICogYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvOiBtZW1vcnlfZnJlZWJzZDIuYywgcHJveHkuYzoKCiAgIEFwcGxpZWQgcGF0Y2ggIzEwMzcwMjogZml4IHN3YXAgcmVwb3J0aW5nIG9uIGZyZWVic2QgNC4yCiAgIAoyMDAxLTAyLTA2IDE0OjI2ICBuYmEKCiAgICogYXBwcy9zbm1wbmV0c3RhdC9NYWtlZmlsZS5pbjoKCiAgIEFkZCBhIGRlcGVuZGVuY3kgZm9yIGxpYnNubXAKICAgCjIwMDEtMDItMDYgMTQ6MjUgIG5iYQoKICAgKiBhZ2VudC9taWJncm91cC91Y2Qtc25tcC92bXN0YXRfZnJlZWJzZDIuYzoKCiAgIEltcGxlbWVudCByYXcgaW50ZXJydXB0IGFuZCBjb250ZXh0IHN3aXRjaCBjb3VudGVycwogICAKMjAwMS0wMi0wNiAxNDoyNCAgbmJhCgogICAqIGFnZW50L21pYmdyb3VwL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5VGFibGUuYzoKCiAgIE1ha2UgZG1hbGxvYyBoYXBweSBieSBmaXhpbmcgYSBtYWxsb2MgcmVhZCBvdmVycnVuCiAgIAoyMDAxLTAyLTA2IDE0OjE2ICBuYmEKCiAgICogbWFuL3NubXBjbWQuMSwgc25tcGxpYi9kZWZhdWx0X3N0b3JlLmgsIHNubXBsaWIvbWliLmM6CgogICBCYWNrcG9ydCAtT1Qgb3V0cHV0IHRvIDQtMi1wYXRjaGVzIGJyYW5jaAogICAKMjAwMS0wMi0wNiAwNjowMiAgaGFyZGFrZXIKCiAgICogcGVybC9TTk1QL1NOTVAucG06CgogICBkb2N1bWVudGF0aW9uIGZpeAogICAKMjAwMS0wMS0zMSAyMzowMiAgbmJhCgogICAqIHNubXBsaWIvc25tcF9hcGkuYzoKCiAgIEZpeCB2YWx1ZSB2YWxpZGF0aW9uIGZvciBzbm1wc2V0L3NubXB0cmFwCiAgIAoyMDAxLTAxLTMxIDIzOjAwICBuYmEKCiAgICogYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvcHJveHkuYzoKCiAgIEZpeCBiYWQgcmV0dXJuIG9mIGEgcG9pbnRlciB0byBub24tc3RhdGljIHN0b3JhZ2UKICAgCjIwMDEtMDEtMzEgMTU6NDQgIGhhcmRha2VyCgogICAqIGFnZW50L21pYmdyb3VwL2hvc3QvaHJfcHJpbnQuYzoKCiAgIFBhdGNoIGZyb20gRnJhbmsgQmFydGVscyBmb3IgZnJlZWJzZCBmaXhlcwogICAKMjAwMS0wMS0zMCAxNzoxMyAgaGFyZGFrZXIKCiAgICogYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZGlzay5jOgoKICAgQXBwbGllZCBwYXRjaCAjMTAzNDE0OiBmaXggZGlzayBpbmZvIGZvciBibG9jayBzaXplcyBvdGhlciB0aGFuIDEwMjQuCiAgIAoyMDAxLTAxLTI5IDEzOjI0ICBoYXJkYWtlcgoKICAgKiBhZ2VudC9taWJncm91cC9zbXV4L3NtdXguYzoKCiAgIGZpeCBidWcgIzEzMDQxMDogIHNldCB0aGUgd3JpdGVfbWV0aG9kIGluIHZhcl9zbXV4IGJlZm9yZSByZXR1cm5pbmcKICAgTlVMTCB0byBtYWtlIHN1cmUgdGhhdCBzZXRzIGhhcHBlbiBvbiBPSURzIHRoYXQgZG9uJ3QgZXhpc3QgZmlyc3QuCiAgIAoyMDAxLTAxLTI5IDEzOjE1ICBoYXJkYWtlcgoKICAgKiBsb2NhbC9taWIyYzoKCiAgIGZpeCBzdWdnZXN0ZWQgaW4gYnVnICMxMjk5NDg6IGNoZWNrIGZvciAtIGFyZ3VtZW50cyBhdCB0aGUgYmVnZ2lubmluZwogICBvZiB0aGUgY29tbWFuZCBsaW5lIHRva2VuIChkb24ndCBtYXRjaCBtaWItMiwgZWcpLgogICAKMjAwMS0wMS0yOSAxMzoxMyAgaGFyZGFrZXIKCiAgICogc25tcGxpYi9wYXJzZS5jOgoKICAgZml4IHN1Z2dlc3RlZCBpbiBidWcgIzEyOTg3NjogY2hlY2sgZm9yIGhpbnQgIT0gTlVMTCBiZWZvcmUgZnJlZWluZy4KICAgCjIwMDEtMDEtMjYgMDU6NDkgIG5iYQoKICAgKiBhZ2VudC9taWJncm91cC9ob3N0L2hyX3ByaW50LmM6CgogICBGaXggYnVnIG9uIEZyZWVCU0Qgd2hlbiAvZXRjL3ByaW50Y2FwIGlzIGVtcHR5CiAgIAoyMDAxLTAxLTI1IDE0OjM4ICBuYmEKCiAgICogbWlicy9STU9OLU1JQi50eHQ6CgogICBVcGRhdGVkIHRvIFJGQyAyODE5CiAgIAoyMDAxLTAxLTI0IDIxOjM3ICBuYmEKCiAgICogYWdlbnQvTWFrZWZpbGUuaW46CgogICBJbnN0YWxsIGxpYnJhcmllcyBiZWZvcmUgYWdlbnQgc28gdGhhdCBsaWJ0b29sIGNhbiByZWxpbmsuCiAgIAoyMDAxLTAxLTIwIDA1OjU0ICBuYmEKCiAgICogYXBwcy9zbm1wZGVsdGEuYywgc25tcGxpYi9pbnQ2NC5jOgoKICAgVHdvIENvdW50ZXI2NCBnbGl0Y2hlcyBkZXRlY3RlZCBieSBKYXNvbiBHbG91ZG9uIDxzbm1wQGdsb3Vkb24uY29tPgogICAKMjAwMS0wMS0yMCAwNTo0NCAgbmJhCgogICAqIGFnZW50L3NubXBkLmM6CgogICBEb250IHNldCB1cCB0aGUgc2VsZWN0IHBhcmFtZXRlcnMgYmVmb3JlIGNhbGxpbmcgaW50ZXJydXB0IGhhbmRsZXJzIQogICBUaGFua3MgdG8gRnJhbmsgU3RyYXVzcy4KICAgCjIwMDEtMDEtMjAgMDU6NDIgIG5iYQoKICAgKiBzbm1wbGliL3NubXBfYXBpLmM6CgogICBGaXggZW5jb2Rpbmcgb2YgQklUUyB2YXJpYWJsZSwgdGhhbmtzIHRvIEZyYW5rIFN0cmF1c3MKICAgCjIwMDEtMDEtMjAgMDU6MzcgIG5iYQoKICAgKiBhZ2VudC9taWJncm91cC91Y2Qtc25tcC92bXN0YXRfc29sYXJpczIuYzoKCiAgIFJhdyBJTyBjb3VudGVycyBmcm9tIEpvY2hlbiBLbWlldHNjaAogICAKMjAwMS0wMS0yMCAwNTozNiAgbmJhCgogICAqIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Ztc3RhdC5oLCBtaWJzL1VDRC1TTk1QLU1JQi50eHQ6CgogICBQcmVwYXJlIGZvciBtb3JlIHJhdyBjb3VudGVycwogICAKMjAwMS0wMS0xNSAxNToxNCAgbmJhCgogICAqIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Byb3h5LmM6CgogICB1bmRvIGEgY2hhbmdlIHRoYXQgc25lYWtlZCBpbiBieSBtaXN0YWtlCiAgIAoyMDAxLTAxLTE1IDE0OjA3ICBuYmEKCiAgICogYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvcHJveHkuYywKICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvdm1zdGF0LmgsCiAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Ztc3RhdF9ic2RpNC5jLAogICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC92bXN0YXRfYnNkaTQuaCwKICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvdm1zdGF0X2ZyZWVic2QyLmMsCiAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Ztc3RhdF9mcmVlYnNkMi5oLAogICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC92bXN0YXRfbmV0YnNkMS5jLAogICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC92bXN0YXRfbmV0YnNkMS5oLAogICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC92bXN0YXRfc29sYXJpczIuYywgbWlicy9VQ0QtU05NUC1NSUIudHh0LAogICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC92bXN0YXRfc29sYXJpczIuaDoKCiAgIEV4dGVuZCB0aGUgc3lzdGVtU3RhdHMuY3B1UmF3IHNlY3Rpb24gdG8gaW5jbHVkZSBtb3JlIHJhdyBjb3VudGVycyBmb3IgdmFyaW91cwogICBvcGVyYXRpbmcgc3lzdGVtcy4gIEJhc2ljIHRlc3RpbmcgcGVyZm9ybWVkIGZvciBTb2xhcmlzIGFuZCBGcmVlQlNELiBDb2RlCiAgIGd1ZXNzdGltYXRlIGZvciBOZXRCU0QgYW5kIEJTRGkuCiAgIAoyMDAxLTAxLTEyIDA4OjAwICBoYXJkYWtlcgoKICAgKiBzbm1wbGliL3NubXBfYXBpLmM6CgogICAtIGJpdF9zdHJpbmcgZml4ZXMKICAgLSBtYWtlIHNubXBfYWRkX3ZhciBjYWxsIHNubXBfcGFyc2Vfb2lkKCkgaW5zdGVhZCBvZiByZWFkX29iamlkKCkuCiAgIAoyMDAxLTAxLTEyIDA3OjU3ICBoYXJkYWtlcgoKICAgKiBzbm1wbGliL2FzbjEuYzoKCiAgIGNvbW1lbnQgb3V0IHJlYWxseSBvZGQgKGFuZCBicm9rZW4pIGNoZWNrIGZyb20gYXNuX2JpdHN0cmluZ19jaGVjaz8/PwogICAKMjAwMS0wMS0xMiAwNzo1MiAgaGFyZGFrZXIKCiAgICogbG9jYWwvOiBtaWIyYy5zdG9yYWdlLmNvbmYsIG1pYjJjLnZhcnR5cGVzLmNvbmY6CgogICAtIG1pc2MgYnVnIGZpeGVzLgogICAtIG5ldyBkYXRhIHR5cGVzICh1aW50MzIsIHVuc2lnbmVkLCBiaXRzKS4KICAgCjIwMDEtMDEtMTAgMjE6NTUgIG5iYQoKICAgKiBzbm1wbGliL3NubXBfYXBpLmM6CgogICBGaXggY2FsbGluZyBvZiBpbml0X2NhbGxiYWNrcyBldmVuIGlmIGluaXRfc25tcCBjYWxsZWQgd2l0aCBOVUxMIHBhcmFtZXRlcgogICAKMjAwMS0wMS0xMCAyMTo1MyAgbmJhCgogICAqIHNubXBsaWIvc25tcF9hcGkuYzoKCiAgIEZpeCBiYWRseSBhcHBsaWVkIHByZXZpb3VzIHBhdGNoCiAgIAoyMDAxLTAxLTEwIDIxOjUyICBuYmEKCiAgICogYXBwcy9zbm1wdmFjbS5jOgoKICAgRml4IHVzYWdlIG1lc3NhZ2UgKC1lIGlzIG5vdyAtQ2UpCiAgIAoyMDAxLTAxLTEwIDIxOjUxICBuYmEKCiAgICogYWdlbnQvbWliZ3JvdXAvbWliSUkvdmFyX3JvdXRlLmM6CgogICBGaXggYSBiYWQgaXBSb3V0ZVByb3RvY29sIHJldHVybgogICAKMjAwMS0wMS0xMCAyMTo1MCAgbmJhCgogICAqIGFnZW50L21pYmdyb3VwL2hvc3QvaHJfc3dydW4uYzoKCiAgIEZpeCBwcm9ibGVtIHdoZW4gcnVubmluZyAtLXdpdGhvdXQtcm9vdC1hY2Nlc3MgZm9yIEZyZWVCU0QuIFRoYW5rcyB0bwogICBCZXJ0IERyaWVodWlzLgogICAKMjAwMS0wMS0xMCAyMTo0OCAgbmJhCgogICAqIGFnZW50L21pYmdyb3VwL2tlcm5lbF9zdW5vczUuYzoKCiAgIFVzZSB0aGUgaWZzcGVlZCBhdHRyaWJ1dGUgZnJvbSBkcml2ZXIgd2hlbiBhdmFpbGFibGUKICAgCjIwMDEtMDEtMDkgMDY6MjkgIGhhcmRha2VyCgogICAqIGFnZW50L21pYmdyb3VwL21pYklJL2ludGVyZmFjZXMuYzoKCiAgIEFwcGx5aW5nIHBhdGNoIGZvdW5kIGluIGJ1ZyAjMTI3Mjk5OgogICAgIC0gc3dpdGNoIGlmQWRtaW4gYW5kIGlmT3BlclN0YXR1cyBtZWFuaW5ncyB0byBtYXRjaCBrZXJuZWwgcGFyYW1ldGVycyBiZXR0ZXIuCiAgIAoyMDAxLTAxLTA5IDA2OjIxICBoYXJkYWtlcgoKICAgKiB3aW4zMi9zbm1wbmV0c3RhdC9zbm1wbmV0c3RhdC5kc3A6CgogICBhZGRlZCBnZXRvcHQuYyB0byBsaXN0CiAgIAoyMDAxLTAxLTA4IDA4OjE5ICBoYXJkYWtlcgoKICAgKiBhZ2VudC9taWJncm91cC9ob3N0L2hyX3N3cnVuLmM6CgogICBQYXRjaCBmcm9tIEFuZGVycyBFbGxlZnNydWQKICAgICAtIGZpeCBocl9zd3J1biB3aGVuIHByb2dyYW1zIGhhdmUgZXhpdGVkIHNvIHdlIGRvbid0IHRydW5jYXRlCiAgICAgICBnZXRuZXh0IHF1ZXJpZXMuCiAgIAoyMDAxLTAxLTA4IDA4OjE0ICBoYXJkYWtlcgoKICAgKiBzbm1wbGliL3NubXBfYXBpLmM6CgogICBQYXRjaCBmcm9tIEZyYW5rIFN0cmF1c3M6CiAgICAgLSBmaXggQklUUyBlbmNvZGluZyBsZW5ndGggd2hlbiBtaWIga25vd2xlZGdlIGlzIGF2YWlsYWJsZS4KICAgCjIwMDEtMDEtMDQgMjM6MTggIG5iYQoKICAgKiBhcHBzLzogc25tcHNldC5jLCBzbm1wdHJhcC5jOgoKICAgVHJ5IGZpeGluZyBwcm9ibGVtcyB3aXRoIHNubXBzZXQgb2YgbmVnYXRpdmUgdmFsdWVzCiAgIAoyMDAxLTAxLTA0IDIzOjE1ICBuYmEKCiAgICogYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvdm1zdGF0X2JzZGk0LmM6CgogICBBZGQgdGhlIHJhdyBjcHUgY291dGVycyBmb3IgQlNEaS4gQ291cnRlc3kgQmVydCBEcmllaHVpcy4KICAgCjIwMDEtMDEtMDQgMjM6MTIgIG5iYQoKICAgKiBhZ2VudC9taWJncm91cC9ob3N0L2hyX3N3cnVuLmMsCiAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL2xvYWRhdmUuYywgc25tcGxpYi9jYWxsYmFjay5jOgoKICAgU2F2ZSBzb21lIHVudXNlZCB2YXJpYWJsZXMKICAgCjIwMDEtMDEtMDQgMjM6MDkgIG5iYQoKICAgKiBhY2NvbmZpZy5oLCBjb25maWcuaC5pbiwgYWdlbnQvYWdlbnRfdHJhcC5jLCBhZ2VudC9taWJfbW9kdWxlcy5jLAogICBhZ2VudC9taWJncm91cC9hZ2VudHgvY2xpZW50LmMsIGFnZW50L21pYmdyb3VwL2FnZW50eC9tYXN0ZXIuYywKICAgYWdlbnQvbWliZ3JvdXAvYWdlbnR4L21hc3Rlcl9hZG1pbi5jLAogICBhZ2VudC9taWJncm91cC9hZ2VudHgvbWFzdGVyX2FkbWluLmgsCiAgIGFnZW50L21pYmdyb3VwL2FnZW50eC9tYXN0ZXJfcmVxdWVzdC5jLAogICBhZ2VudC9taWJncm91cC9hZ2VudHgvcHJvdG9jb2wuYywgYWdlbnQvbWliZ3JvdXAvYWdlbnR4L3N1YmFnZW50LmM6CgogICBBZGQgbWlzc2luZyBkbWFsbG9jIHN1cHBvcnQgZm9yIHNvbWUgZmlsZXMKICAgCjIwMDEtMDEtMDQgMjM6MDQgIG5iYQoKICAgKiBNYWtlZmlsZS5pbjoKCiAgIEVuc3VyZSBzb3J0IG9yZGVyIGZvciBjb25maWcuaC5pbgogICAKMjAwMS0wMS0wNCAxMDoyNCAgaGFyZGFrZXIKCiAgICogY29uZmlndXJlLCBjb25maWd1cmUuaW46CgogICBmaXggc2VtaS1jb2xvbiBwcm9ibGVtLiAgUGF0Y2ggIzEwMzEwMS4KICAgCjIwMDEtMDEtMDMgMDc6MDEgIGhhcmRha2VyCgogICAqIGFnZW50L21pYmdyb3VwL2hvc3QvaHJfc3dydW4uYzoKCiAgIC9wcm9jLyVkL2NtZGxpbmUgbWF5IGJlIGFuIGVtcHR5IGZpbGUgZm9yIHNvbWUgcHJvY2Vzc2VzLiAgUmV0dXJuICIiIGlmIHNvLgogICAKMjAwMS0wMS0wMiAwOTo0NyAgaGFyZGFrZXIKCiAgICogc25tcGxpYi9zbm1wX2xvZ2dpbmcuYzoKCiAgIGFkZCBhICIlcyIgZm9ybWF0dGluZyBzdHJpbmcgdG8gdGhlIHN5c2xvZygpIGNhbGwgKHJlZGhhdCBidWcgIzE4MTUzKS4KICAgCjIwMDAtMTItMjkgMTM6MzggIGhhcmRha2VyCgogICAqIGFnZW50L21pYmdyb3VwL21pYklJL2ludGVyZmFjZXMuYzoKCiAgIFBhdGNoIGZyb20gVGVkIFJ1bGU6CiAgICAgLSBiZXR0ZXIgY2hlY2tpbmcgZm9yIGZvcm1hdHRpbmcgb2YgdGhlIC9wcm9jL25ldC9kZXYgZmlsZSB0byBhdm9pZAogICAgICAgbGludXggY29yZSBkdW1wcyB3aGVuIHRoZSBrZXJuZWwgbWlzLWJlaGF2ZXMuCiAgIAoyMDAwLTEyLTI3IDE2OjQ3ICBoYXJkYWtlcgoKICAgKiB0ZXN0aW5nL3Rlc3RzLzogVDA1M2FnZW50djF0cmFwLCBUMDU0YWdlbnR2MmN0cmFwLAogICBUMDU1YWdlbnR2MW1pbnRyYXAsIFQwNTZhZ2VudHYyY21pbnRyYXAsIFQxMTNhZ2VudHh0cmFwOgoKICAgLSB0cmFwIEFQSSB0ZXN0aW5nIHN1aXRlIGVuaGFuY2VkIHRvIHRlc3QgbW9yZSBjYXNlcy4KICAgCjIwMDAtMTItMjcgMTY6NDUgIGhhcmRha2VyCgogICAqIGFnZW50L2FnZW50X2NhbGxiYWNrcy5oLCBhZ2VudC9hZ2VudF90cmFwLmMsIGFnZW50L2FnZW50X3RyYXAuaCwKICAgYWdlbnQvbWliZ3JvdXAvbm90aWZpY2F0aW9uL3NubXBOb3RpZnlUYWJsZS5jLAogICBhZ2VudC9taWJncm91cC9ub3RpZmljYXRpb24vc25tcE5vdGlmeVRhYmxlLmgsIHNubXBsaWIvY2FsbGJhY2suYywKICAgc25tcGxpYi9jYWxsYmFjay5oOgoKICAgLSBNYWtlIHRoZSBub3RpZmljYXRpb24gbWliIHdvcmsgbW9yZSB2aWEgY2FsbGJhY2tzIGFuZCByZW1vdmUgaWZkZWZzIGluCiAgICAgYWdlbnRfdHJhcC5jCiAgIC0gTWFrZSB0aGUgYWdlbnRfdHJhcC5jIGZpbGUgY2hlY2sgZm9yIGNhbGxiYWNrIHJlZ2lzdHJhdGlvbnMgYW5kCiAgICAgaGFuZGxlIGl0IGludGVybmFsbHkgdXNpbmcgdGhlIG9sZCB0cmFwc2luayBzdXBwb3J0IGlmIG5vIGNhbGxiYWNrCiAgICAgaXMgZm91bmQuCiAgIC0gVGhpcyBmaXhlcyB0aGUgcHJvYmxlbSB3aGVuIGluaXRfbWliX21vZHVsZXMoKSBpc24ndCBjYWxsZWQgaW4gc3ViYWdlbnRzLgogICAKMjAwMC0xMi0yNyAxNjo0MiAgaGFyZGFrZXIKCiAgICogYWdlbnQvbWliZ3JvdXAvZXhhbXBsZXMvZXhhbXBsZS5jOgoKICAgbWFrZSB0aGUgZXhhbXBsZSB0cmFwcyBiZSBzZW50IHVzaW5nIGEgZW50ZXJwcmlzZSBzcGVjaWZpYyB0cmFwIG9mIDk5CiAgIHJhdGhlciB0aGFuIDMuICBXZSBuZWVkIHRvIGRlZmluZSBpdCBpbiB0aGUgbWliIHN0aWxsLgogICAKMjAwMC0xMi0yNyAxNToyNiAgaGFyZGFrZXIKCiAgICogc25tcGxpYi9hc24xLmM6CgogICBmaXggYnJva2VuIGNvbXBpbGVyIHByZWNlZGVuY2UgYXMgcmVwb3J0ZWQgaW4gc3VwcG9ydCAjMTEwNDczLgogICAKMjAwMC0xMi0yMiAwODo1NCAgaGFyZGFrZXIKCiAgICogc25tcGxpYi9hc24xLmM6CgogICBmaXggY291bnRlcjY0IHJldmVyc2UgZW5jb2RpbmdzLgogICAKMjAwMC0xMi0yMiAwNjo1OCAgaGFyZGFrZXIKCiAgICogc25tcGxpYi92YWNtLmM6CgogICBmaXggdmlldyBwcm9jZXNzaW5nIHRvIHdhdGNoIGZvciBsZW5ndGggcHJlZml4LiAgVGhlIGxlbmd0aCBwcmVmaXgKICAgcmVhbGx5IHJlYWxseSBzaG91bGRuJ3QgYmUgc3RvcmVkIGRpcmVjdGx5IGluIHRoZSBvaWQuICBOaWVscz8KICAgCjIwMDAtMTItMjEgMTQ6NDMgIG5iYQoKICAgKiBhcHBzL3NubXBuZXRzdGF0L21haW4uYzoKCiAgIC0gbWFpbi5jOiBmaXggcHJvYmxlbSB3aXRoIHBvc2l0aW9uYWwgY29tbXVuaXR5IGFyZ3VtZW50IHRvIHNubXBuZXRzdGF0CiAgIAoyMDAwLTEyLTIxIDE0OjM3ICBuYmEKCiAgICogc25tcGxpYi9taWIuYzoKCiAgIC0gbWliLmM6IG1ha2Ugc3VyZSBpbml0X21pYl9pbnRlcm5hbHMgaXMgY2FsbGVkIGJlZm9yZSBkb2luZyBhbnl0aGluZwogICAJc2VyaW91cyBpbiBpbml0X21pYgogICAKMjAwMC0xMi0yMSAwODoyMiAgaGFyZGFrZXIKCiAgICogc25tcGxpYi9zbm1wX2FwaS5jOgoKICAgUGF0Y2ggZnJvbSBGcmFuayBTdHJhdXNzIHRvIGZpeCBzdXBwb3J0IGZvciBCSVRTCiAgIAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgpDaGFuZ2VzOiBWNC4xLjIgLT4gVjQuMgoKMjAwMC0xMi0wNCAxNTozMCAgaGFyZGFrZXIKCgktIChORVdTLCBSRUFETUUpOiB1cGRhdGVzLgoJCjIwMDAtMTItMDQgMTQ6NDggIG1hcnoKCgllbnN1cmUgbWlibG9hZC50IHVzZXMgY29ycmVjdCBNSUJESVIgZm9yIHRlc3RpbmcKCQoyMDAwLTEyLTA0IDExOjA1ICBoYXJkYWtlcgoKCS0gKEFHRU5ULnR4dCwgRkFRLCBSRUFETUUpOiBjb252ZXJ0IHVybCdzIHRvIHd3dy5uZXRzbm1wLm9yZy4KCQoyMDAwLTEyLTA0IDA4OjQ1ICBoYXJkYWtlcgoKCS0gKE5FV1MpOiBhZ2VudHggbm90ZSBjaGFuZ2VzLgoJCjIwMDAtMTItMDMgMDc6MjkgIG5iYQoKCS0gc25tcHRyYXBkX2xvZy5jOiBmb3ggbWlzc2luZyBsZWFkaW5nIHplcm9lcyBmb3IgJS4yZCBsaWtlIGZvcm1hdHMuCgkJQWRkIGFuIGFsdGVybmF0ZSBmb3JtYXQgZm9yIHVwLXRpbWUgZGlzcGxheXMuCgkKMjAwMC0xMi0wMiAxODoyMiAgbWFyegoKCWZvdW5kIHRoZSB1bmluaXRpYWxpemVkIGRhdGEgYnVnLi4ubXVzdCBoYXZlIGJlZW4gaW4gdGhlcmUgZG9ybWFudCBmb3IgYSB3aGlsZSwgb3RoZXIgdGVzdCBmaXhlcyAtIGdvb2QgdG8gZ28hCgkKMjAwMC0xMi0wMSAxNjozNiAgaGFyZGFrZXIKCgktIChhZ2VudC9zbm1wZC5jKTogcmVmZXJlbmNlIHNvdXJjZWZvcmdlLgoJCjIwMDAtMTItMDEgMTY6MzUgIGhhcmRha2VyCgoJLSAoQUdFTlQudHh0KTogcmVmZXJlbmNlIHNvdXJjZWZvcmdlLgoJCjIwMDAtMTItMDEgMTY6MzQgIGhhcmRha2VyCgoJLSAoVE9ETyk6IHJlZmVyZW5jZSBuZXQtc25tcC1jb2RlcnMuCgkKMjAwMC0xMi0wMSAxNjozNCAgaGFyZGFrZXIKCgktIChSRUFETUUpOiB1cGRhdGUuCgkKMjAwMC0xMi0wMSAxNjozMyAgaGFyZGFrZXIKCgktIChidWctcmVwb3J0LCBhZ2VudC9taWJncm91cC92ZXJzaW9udGFnKTogcmVtb3ZlIHRoZSBidWcgcmVwb3J0IHNjcmlwdC4KCQoyMDAwLTEyLTAxIDE2OjMxICBoYXJkYWtlcgoKCS0gKFBPUlRJTkcpOiByZWZlcmVuY2Ugc291cmNlZm9yZ2UuCgkKMjAwMC0xMi0wMSAxNjoyMyAgaGFyZGFrZXIKCgktIChtYW4vc25tcHRyYXBkLmNvbmYuNS5kZWYpOiBtZW50aW9uIHRoZSBmYWN0IHRoYXQgc25tcHYzIHRyYXBzIGFyZQoJICB0aGUgc2FtZSBhcyBzbm1wdjIgdHJhcHMuCgkKMjAwMC0xMi0wMSAxNjoyMyAgaGFyZGFrZXIKCgktIChORVdTKTogdXBkYXRlLgoJCjIwMDAtMTItMDEgMTU6MzEgIGhhcmRha2VyCgoJLSAoUkVBRE1FKTogdXBkYXRlLgoJCjIwMDAtMTItMDEgMTU6MTYgIGhhcmRha2VyCgoJLSAoc25tcGQuY29uZi41LmRlZik6IHVwZGF0ZSBmb3IgcHJveHkgc3VwcG9ydC4KCQoyMDAwLTEyLTAxIDE0OjM2ICBoYXJkYWtlcgoKCS0gKEZBUSk6IHVwZGF0ZSBhIGZldyB0aGluZ3MuCgkKMjAwMC0xMi0wMSAxNDoyOCAgbmJhCgoJLSBtaWIuYzogZGlhZ25vc2Ugd3JvbmcgcXVvdGluZyBpbiBpbmRpY2VzCgkKMjAwMC0xMi0wMSAxNDoyMyAgbmJhCgoJLSBwYXJzZS5jOiBhZGQgUkZDLTEyMTMgYXMgYW4gYWxpYXNlIGZvciBSRkMxMjEzLU1JQiAodXNlZCBpbiBtYW55IG1pYnMpCgkKMjAwMC0xMi0wMSAxNDoxOSAgbmJhCgoJLSBzbXV4LmM6IHJlZm9ybWF0IHNvbWUgZGVidWcgbWVzc2FnZXMgZm9yIHJlYWRhYmlsaXR5CgkKMjAwMC0xMi0wMSAxNDoxNyAgbmJhCgoJLSBpbnRlcmZhY2VzLmM6IGZpeCBpZlR5cGUgdmFsdWVzIGZvciBMaW51eAoJCjIwMDAtMTItMDEgMTQ6MTQgIG5iYQoKCS0gc3ViYWdlbnQuYzogc3VwcGx5IGEgbWlzc2luZyByZXR1cm4gdmFsdWUKCQoyMDAwLTEyLTAxIDEwOjA0ICBoYXJkYWtlcgoKCS0gKHNubXBjb25mKTogcXVvdGUgdGhpbmdzIHdpdGggc3BhY2VzIGluIHRoZW0uCgkKMjAwMC0xMi0wMSAwOTo0OSAgaGFyZGFrZXIKCgktIChzbm1wY29uZi4xKTogcXVpY2sgbWFuIHBhZ2UgZm9yIHNubXBjb25mLgoJCjIwMDAtMTItMDEgMDk6MTUgIGhhcmRha2VyCgoJLSAobG9jYWwvc25tcGNvbmYuZGlyL3NubXBkLmNvbmYvbW9uaXRvcik6IGNsZWFudXBzLgoJCjIwMDAtMTItMDEgMDk6MTQgIGhhcmRha2VyCgoJLSAoc25tcGxpYi9wYXJzZS5jKTogY2hhbmdlIG5vLXBhcmVudCBsb2cgbWVzc2FnZSBpbnRvIGEgd2FybmluZy4KCQoyMDAwLTEyLTAxIDA5OjExICBoYXJkYWtlcgoKCS0gKGFnZW50L21pYmdyb3VwL2FnZW50eC9SRUFETUUuYWdlbnR4KTogdXBkYXRlIGZyb20gRGF2ZS4KCQoyMDAwLTEyLTAxIDA5OjEwICBoYXJkYWtlcgoKCS0gKEZBUSk6IHVwZGF0ZSBmcm9tIERhdmUuCgkKMjAwMC0xMi0wMSAwNzo1OSAgaGFyZGFrZXIKCgktIChhZ2VudC9hZ2VudF90cmFwLmMpOiBQYXRjaCBmcm9tIERhdmUgU2hpZWxkOgoJICAtIHN1cHBvcnQgdjItPnYxIHRyYXAgY29udmVyc2lvbi4KCQoyMDAwLTEyLTAxIDA3OjU2ICBoYXJkYWtlcgoKCS0gKGNvbmZpZ3VyZSwgY29uZmlndXJlLmluKTogdHlwby4KCQoyMDAwLTEyLTAxIDA3OjQyICBtYXJ6CgoJYWRkaXRpb25hbCBmaXhlcyB0byBzdXBwb3J0IHRhcmdldHRlZCBidWlsZHMgb2YgcGVybC9TTk1QIHVzaW5nIC1ORVQtU05NUC1QQVRIIChhbmQgd2hpdGUgc3BhY2UgcmVtb3ZhbCBhcyBteSBlbWFjcyBraW5kbHkgZG9lcyB0aGF0IGZvciBtZT8pCgkKMjAwMC0xMS0zMCAxNDowNiAgbmJhCgoJLSBnZXRvcHQuaCwgc25tcF9wYXJzZV9hcmdzLmg6IGV4dGVybiAiQyIgYnJhY2tldGluZwoJCjIwMDAtMTEtMzAgMTQ6MDQgIG5iYQoKCS0gc25tcGQuY29uZi41LmRlZjogZml4IGZvcm1hdHRpbmcgb2Ygc211eHBlZXIgdG9rZW4KCQoyMDAwLTExLTMwIDEwOjMxICBoYXJkYWtlcgoKCS0gKEZBUSk6IFVwZGF0ZSBmcm9tIERhdmUuCgkKMjAwMC0xMS0zMCAxMDoxOCAgaGFyZGFrZXIKCgktIChtYXN0ZXJfcmVxdWVzdC5jKTogUGF0Y2ggZnJvbSBEYXZlIFNoaWVsZCB0byBmaXggYmFkIHNldHMgZm9yIGFnZW50eC4KCQoyMDAwLTExLTMwIDA5OjE5ICBoYXJkYWtlcgoKCS0gKG92L1JFQURNRSk6IG1pbm9yIGNvcnJlY3Rpb25zLCBwcm9iYWJseSBzdGlsbCBpbmNvcnJlY3QuCgkKMjAwMC0xMS0zMCAwOToxOCAgaGFyZGFrZXIKCgktIChsb2NhbC9NYWtlZmlsZS5pbiwgc25tcGNvbmYsIGFjbCwgYmFzaWNfc2V0dXAsIG1vbml0b3IsIG9wZXJhdGlvbiwKCSAgc3lzdGVtLCB0cmFwc2lua3MpOgoJICAtIGdyb3VwaW5nIHN1cHBvcnQuCgkgIC0gc29ydC1vZi1xdWlldCBvdXRwdXQgc3VwcG9ydC4KCSAgLSBvcGVyYXRpb24gbW9kZSBzdXBwb3J0IChzZXR0aW5nIHVzZXIsIGdyb3VwLCBwb3J0cy4uLikKCQoyMDAwLTExLTMwIDA5OjEzICBoYXJkYWtlcgoKCS0gKHNubXBsaWIvcmVhZF9jb25maWcuYyk6IHNhdmUgYSB3YXJuaW5nIGhlYWRlciBhdCB0aGUgdG9wIG9mIHRoZQoJICBwZXJzaXN0ZW50IGRhdGEgZmlsZS4KCQoyMDAwLTExLTMwIDA5OjExICBoYXJkYWtlcgoKCS0gKGFnZW50L21pYmdyb3VwL3R1bm5lbC90dW5uZWwuYyk6IENsZWFudXAgcGF0Y2ggZnJvbSBGcmFuayBTdHJhdXNzLgoJCjIwMDAtMTEtMzAgMDk6MTAgIGhhcmRha2VyCgoJLSAoYWdlbnQvc25tcGQuYyk6IHNldCBEU19BR0VOVF9OT19ST09UX0FDQ0VTUyBpbiAtSCBoZWxwIG91dHB1dC4KCQoyMDAwLTExLTMwIDA5OjA4ICBoYXJkYWtlcgoKCS0gKGNvbmZpZ3VyZSwgY29uZmlndXJlLmluKTogbWVudGlvbiB0aGUgVFVOTkVMLU1JQiBzdXBwb3J0LgoJCjIwMDAtMTEtMjkgMTg6MjEgIHNsaWYKCglVcGRhdGUgZS1tYWlsIGFkZHJlc3MgZm9yIFNsaWZjYWsKCQoyMDAwLTExLTI5IDExOjM0ICBtYXJ6CgoJZml4ZWQgb3JkZXIgb2YgZnVuY3Rpb24gY2hlY2tpbmcgc28gdGhhdCB2c25wcmludGYgaXMgbm90IGZvdW5kIGluIGxpYmRiIChCU0QgZGIpIGJ5IG1pc3Rha2UKCQoyMDAwLTExLTI5IDA1OjE4ICBtYXJ6CgoJcGFydGlhbCBzdWJtaXQgdG8gZ2V0IHBlcmwvU05NUCB0ZXN0cyB0byBwYXNzIGFuZCB1cGRhdGUgdGhlIGRvY3Mgc29tZXdoYXQgLSBzdGlsbCBnZXR0aW5nIGNvcmVzIGluIG5vdGlmeS50LiBoYWQgdG8gY2hhbmdlIGNyZWF0ZV91c2VyX2Zyb21fc2Vzc2lvbiB0byB1cGRhdGUgYW4gZXhpc3RpbmcgdXNlciBpbmNhc2UgMiBzZXNzaW9ucyBhcmUgc3RhcnRlZCB3aXRoIHRoZSBzYW1lIHVzZXIKCQoyMDAwLTExLTI4IDE4OjAwICBtYXJ6CgoJcGFydGlhbCBzdWJtaXQgdG8gZ2V0IHBlcmwvU05NUCB0ZXN0cyB0byBwYXNzIGFuZCB1cGRhdGUgdGhlIGRvY3Mgc29tZXdoYXQgLSBzdGlsbCBnZXR0aW5nIGNvcmVzIGluIG5vdGlmeS50LiBoYWQgdG8gY2hhbmdlIGNyZWF0ZV91c2VyX2Zyb21fc2Vzc2lvbiB0byB1cGRhdGUgYW4gZXhpc3RpbmcgdXNlciBpbmNhc2UgMiBzZXNzaW9ucyBhcmUgc3RhcnRlZCB3aXRoIHRoZSBzYW1lIHVzZXIKCQoyMDAwLTExLTI3IDE0OjM3ICBoYXJkYWtlcgoKCS0gKGxvY2FsL3NubXBjb25mLmRpci9zbm1wZC5jb25mL2Jhc2ljX3NldHVwKTogYmFzaWMgc2V0dXAgc2VyaWVzIG9mIHF1ZXN0aW9ucy4KCQoyMDAwLTExLTI3IDE0OjM2ICBoYXJkYWtlcgoKCS0gKGxvY2FsL3NubXBjb25mLmRpci9zbm1wZC5jb25mL2FjbCk6IHR5cG9zLgoJCjIwMDAtMTEtMjcgMTQ6MzYgIGhhcmRha2VyCgoJLSAobG9jYWwvc25tcGNvbmYpOgoJICAtIGFkZCBzdXBwb3J0IGZvciAiZ3JvdXBzIiBvZiBpdGVtcy4KCSAgLSBkb24ndCB1c2UgSU86OkRpciwgYXMgaXRzIG5vdCBpbiB0aGUgc3RhbmRhcmQgcGVybCBtb2R1bGUgZGlzdHJpYnV0aW9ucy4KCQoyMDAwLTExLTI3IDE0OjM0ICBoYXJkYWtlcgoKCS0gKGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL2RsbW9kLmgpOiByZW1vdmUgdW5uZWVkZWQgdmFyaWFibGUgcmVmZXJlbmNlLgoJCjIwMDAtMTEtMjcgMTQ6MzMgIGhhcmRha2VyCgoJLSAoYWdlbnQvc25tcF9hZ2VudC5jKTogUGF0Y2ggZnJvbSBKb2huIE5heWxvbjoKCSAgLSBmaXggYXV0by1zZXQgc3VwcG9ydCBmb3IgdGhlIGFnZW50IChhbmQgcGx1ZyBhIG1lbW9yeSBsZWFrKS4KCQoyMDAwLTExLTI3IDEzOjQyICBuYmEKCgktIHNubXAuY29uZi41LmRlZjogZG9jdW1lbnQgdG9rZW5zIGV4dGVuZGVkSW5kZXggYW5kIG5vUmFuZ2VDaGVjawoJCjIwMDAtMTEtMjcgMTM6NDEgIG5iYQoKCS2gcGFyc2UuYzogZml4IGEgQysrIHN0eWxlIGNvbW1lbnQKCQoyMDAwLTExLTI0IDE1OjE0ICBuYmEKCgktIG1lbW9yeV9mcmVlYnNkMi5jLCB2bXN0YXRfbmV0YnNkMS5jOiBtaW5vciBmaXhlcyBmb3IgTmV0QlNEIDEuNSwgT1BlbkJTRCAyLjYKCQoyMDAwLTExLTIyIDEzOjQ4ICBoYXJkYWtlcgoKCS0gKG1pYmdyb3VwL3VjZC1zbm1wL2RsbW9kLmMpOiBQYXRjaCBmcm9tIFNlYW4gSGFyZGluZzoKCSAgLSBkb24ndCBleHBvcnQgYW4gaW50ZXJuYWwgdmFyaWFibGUuCgkKMjAwMC0xMS0yMSAxNToxNyAgbmJhCgoJLSBtaWIuYzogZml4IHBhcnNpbmcgb2Ygb2lkIGxpa2UgOTkuMTMuXCJndWZcIjgKCQoyMDAwLTExLTE5IDEzOjAzICBuYmEKCgktIFNOTVAueHMsIG1pYjJjLnZhcnR5cGVzLmNvbmY6IFRoZSByZWNlbnQgc3BlY2lhbGlzYXRpb24gb2YgdGhlIEludGVnZXIKCQl0eXBlcyBpbiB0aGUgcGFyc2VyIGNyZWF0ZWQgcHJvYmxlbXMgZm9yIHRoZSBwZXJsIG1vZHVsZSBhbmQgaW4gdHVybgoJCWZvciBtaWIyYy4gU29ycnkgZm9yIG5vdCBjYXRjaGluZyB0aGlzIGJlZm9yZSBwcmUyIDotKAoJCjIwMDAtMTEtMTkgMTI6NTggIG5iYQoKCS0gZml4ZXMgdG8gLi9jb25maWd1cmUgLS13aXRoLWRlZmF1bHRzIC0tZW5hYmxlLW1pbmktYWdlbnQ7IG1ha2UgaW5zdGFsbAoJCWFuZCBydW4gdGhlIHRvb2xzIHVuZGVyIGN5Z3dpbi4gSGF2ZW4ndCB0cmllZCB0aGUgYWdlbnQgeWV0IDotKQoJCjIwMDAtMTEtMTggMDc6MTQgIGhhcmRha2VyCgoJLSAodmVyc2lvbi5oIGJ1Zy1yZXBvcnQgc2Vkc2NyaXB0LmluKTogdmVyc2lvbiB0YWcgKCA0LjIucHJlMiApCgkKMjAwMC0xMS0xOCAwNzoxMiAgaGFyZGFrZXIKCgktIChUMDQ5c25tcHYzaW5mb3JtKTogdjMgaW5mb3JtIHRlc3QgYWRkZWQuCgkKMjAwMC0xMS0xNyAxMTowMSAgbmJhCgoJLSBtaWIuYywgc25tcF9hcGkuYzogYmV0dGVyIGVycm9yIG1lc3NhZ2VzIGZvciBiYWQgc25tcHNldCBjYWxscyBhbmQgYmFkCgkJaW5kaWNlcy4gQWxzbyBmaXggYSBidWcgd2l0aCBxdW90ZWQgaW5kaWNlcy4KCQoyMDAwLTExLTE3IDEwOjMyICBoYXJkYWtlcgoKCS0gKHRlc3RzL1QwNTBzbm1wdjN0cmFwKTogdGVzdCBmb3Igc25tcHYzIHRyYXBzLgoJCjIwMDAtMTEtMTcgMTA6MzAgIGhhcmRha2VyCgoJLSAoc25tcHRyYXBkLmMpOiBmaXggY2FzZXMgd2hlcmUgdGhlIGZvcm1hdCBzdHJpbmdzIGFyZSBzcGVjaWZpZWQuCgkKMjAwMC0xMS0xNyAxMDoyNiAgbmJhCgoJLSBJQU5BaWZUeXBlLU1JQi50eHQ6IHVwZGF0ZSBmcm9tIElBTkEKCQoyMDAwLTExLTE3IDA4OjMyICBoYXJkYWtlcgoKCS0gKG1hc3Rlcl9yZXF1ZXN0LmMpOiBQYXRjaCBmcm9tIERhdmUgU2hpZWxkOgoJICAtIGZpeCBtZW1vcnkgbGVha3MuCgkgIC0gZml4IGFnZW50eCBwcm9ibGVtcyB3aXRoIGJhZCBzZXRzLgoJCjIwMDAtMTEtMTYgMTc6NTUgIGhhcmRha2VyCgoJLSAoc25tcGxpYi9zbm1wdjMuYyk6IGFkZGVkIGEgc3BhY2UgaW4gYSBkZWJ1Z2dpbmcgb3V0cHV0IHN0YXRlbWVudC4KCQoyMDAwLTExLTE2IDE3OjU0ICBoYXJkYWtlcgoKCS0gKHNubXBsaWIvcmVhZF9jb25maWcuYyk6IHNpbXBsZSBkZWJ1Z2dpbmcgc3RhdGVtZW50IGFkZGVkLgoJCjIwMDAtMTEtMTYgMTc6NTQgIGhhcmRha2VyCgoJLSAoc25tcGxpYi9zbm1wX2FwaS5jKTogc2V0IERTX0xJQl9BUFBUWVBFIGlmIGl0IGhhc24ndCBiZWVuIHNldCB5ZXQuCgkKMjAwMC0xMS0xNiAxNzo1MiAgaGFyZGFrZXIKCgktICh0ZXN0aW5nL2V2YWxfdG9vbHMuc2gpOiBhZGQgQ09ORklHVFJBUEQuCgkKMjAwMC0xMS0xNiAxNzo1MCAgaGFyZGFrZXIKCgktIChzbm1wbGliL21pYi5jLCB0ZXN0aW5nL3Rlc3RzL1QxMTJhZ2VudHhzZXRmYWlsLAoJICB0ZXN0aW5nL3Rlc3RzL1QxMjJwcm94eXNldGZhaWwpOgoJICAtIHN1cHBvcnQgLUlyIGZvciAiZG9udCBjaGVjayByYW5nZS90eXBlIHZhbHVlcyIgKGxldHRlciByIHN1YmplY3QgdG8gZGViYXRlKS4KCQoyMDAwLTExLTE2IDE3OjI1ICBoYXJkYWtlcgoKCS0gKGNhbGxiYWNrLmMpOiBiZXR0ZXIgZGVidWdnaW5nIG91dHB1dCB0byBkaXNwbGF5IGEgY2FsbGJhY2sgY291bnQgd2hlbiBkb25lLgoJCjIwMDAtMTEtMTYgMTY6NTIgIGhhcmRha2VyCgoJLSAoVDExM2FnZW50eHRyYXApOiBBIG5ldyB0ZXN0IHRvIHRlc3QgdHJhcCBzdXBwb3J0IGZyb20gYWdlbnR4IHN1YmFnZW50cy4KCQoyMDAwLTExLTE2IDE2OjUwICBoYXJkYWtlcgoKCS0gKFQwNThhZ2VudGF1dGh0cmFwKTogc2xlZXAgc29tZSBhbmQgb25seSBwZXJmb3JtIG9uZSBnZXQgcmVxdWVzdC4KCQoyMDAwLTExLTE2IDE2OjQ5ICBoYXJkYWtlcgoKCS0gKFQwNTRhZ2VudHYyY3RyYXApOiBzbGVlcCBhIGJpdCBhbmQgb25seSBzZW5kIG9uZSBzbm1wIHNldCByZXF1ZXN0LgoJCjIwMDAtMTEtMTYgMTU6NDcgIG5iYQoKCS0gZ2V0b3B0LmM6IHF1ZWxsIGNvbXBpbGVyIHdhcm5pbmdzCgkKMjAwMC0xMS0xNiAxNTozMSAgbmJhCgoJLSBwYXJzZS5bY2hdLCBtaWIuYywgc25tcF9hcGkuYzogcmVuYW1lIFRZUEVfVUlOVEVHRVIzMiBiYWNrIHRvIFRZUEVfVUlOVEVHRVIKCQoyMDAwLTExLTE2IDE1OjE2ICBuYmEKCgktIHNubXB0cmFwZC5jLCBzbm1wdHJhcGQuY29uZjogbmV3IGNvbmZpZyBkaXJlY3RpdmVzIGZvcm1hdDEgYW5kIGZvcm1hdDIgdG8KCQlzZXQgbG9nIGZvcm1hdHMgZm9yIFRSQVAxIGFuZCBUUkFQMiBwZHVzLgoJCjIwMDAtMTEtMTYgMTM6NTAgIG5iYQoKCS0gc25tcF9hcGkuYzogYWRkIGZ1bmN0aW9uYWxpdHkgdG8gY2hlY2sgdmFsdWUgdHlwZXMgaW4gYWRkaXRpb24gdG8gcmFuZ2VzCgkJZm9yIHNubXBzZXQgYW5kIHNubXB0cmFwLgoJCjIwMDAtMTEtMTYgMTM6NDcgIG5iYQoKCS0gcGFyc2UuYzogRml4IERFRlZBTCBwYXJzaW5nIGZvciAgT0JKRUNUIElERU5USUZJRVIgb3IgQklUUyB2YWx1ZXMKCQkoaS5lLiBERUZWQUwgeyB7IDAgMCB9IH0gZXRjKQoJCjIwMDAtMTEtMTYgMTE6MzkgIGhhcmRha2VyCgoJLSAoVDA1OGFnZW50YXV0aHRyYXApOiBhZGQgYSBncmVhdGVyIHRpbWVvdXQgdG8gdGhlIGdldCByZXF1ZXN0LgoJCjIwMDAtMTEtMTYgMTE6MzUgIGhhcmRha2VyCgoJLSAoZXhhbXBsZS5jKToKCSAgLSBzZW5kIGEgdjJjIHRyYXAgdXNpbmcgaXRzIG93biBkYXRhLCBub3QgdGhlIHN5c3RlbV9taWIncy4KCSAgLSBtb3JlIGRlYnVnZ2luZyBzdGF0ZW1lbnRzLgoJCjIwMDAtMTEtMTYgMTE6MzQgIGhhcmRha2VyCgoJLSAoVDA1M2FnZW50djF0cmFwLCBUMDU0YWdlbnR2MmN0cmFwLCBUMDU4YWdlbnRhdXRodHJhcCk6CgkgIC0gbmV3IHRlc3RzIGZvciB0cmFwcyBzZW50IGJ5IHRoZSBhZ2VudC4KCQoyMDAwLTExLTE2IDA5OjU2ICBoYXJkYWtlcgoKCS0gKHRhcmdldC5jKTogRG9uJ3QgZGVsZXRlIFJFQURPTkxZIHRyYXAgc2Vzc2lvbnMuCgkKMjAwMC0xMS0xNSAxNjozNyAgaGFyZGFrZXIKCgktICh0ZXN0aW5nL3Rlc3RzL1QwNTJzbm1wdjJjaW5mb3JtKTogdGVzdCBpbmZvcm0gc2VuZGluZy9yZWNlaXZpbmcuCgkKMjAwMC0xMS0xNSAxNjozNyAgaGFyZGFrZXIKCgktIChhcHBzL3NubXB0cmFwLmMsIG1hbi9zbm1wdHJhcC4xKTogc3VwcG9ydCAtQ2kgZm9yIHNlbmRpbmcgaW5mb3Jtcy4KCQoyMDAwLTExLTE1IDE1OjQ4ICBoYXJkYWtlcgoKCS0gKHNubXB0cmFwZF9sb2cuYyk6IHVzZSBTTk1QX01BWEJVRiBpbnN0ZWFkIG9mIGEgbG9jYWwgbGVuZ3RoIGRlZmluaXRpb24uCgkKMjAwMC0xMS0xNSAxNDoxOCAgbmJhCgoJLSBNYWtlZmlsZS5pbjogZml4IG1ha2UnaW5nIGluIHJlbW90ZSBkaXJlY3RvcnkKCQoyMDAwLTExLTE1IDE0OjExICBuYmEKCgktIG1haW4uYzogdXBkYXRlIHRvIHVzZSBnZXRvcHQgZm9yIGFyZ3VtZW50IHBhcnNpbmcuCgkKMjAwMC0xMS0xNSAxNDoxMCAgbmJhCgoJLSBzbm1wX2FnZW50LmM6IGZpeCBhIGNvbmZ1c2luZyBpbmRlbnRhdGlvbi4KCQoyMDAwLTExLTE1IDE0OjA5ICBuYmEKCgktIGFnZW50X3RyYXAuYzogbWFrZSBzdXJlIGNvbW11bml0eSBpcyBcMC10ZXJtaW5hdGVkIGluIHRhcmdldFBhcmFtc1RhYmxlCgkKMjAwMC0xMS0xNSAxNDowMyAgbmJhCgoJLSBzbm1wdHJhcGRfbG9nOiBmaXggYSBidWZmZXIgdGhhdCBpcyB3YXkgdG9vIHNob3J0IGZvciBhIHRyYXAgd2l0aCBqdXN0IGEKCQlzaW5nbGUgcGFyYW1ldGVyLiBGaXggYSBiYWQgbGltaXQgdGVzdCBpbiBzdHJfYXBwZW5kLgoJCjIwMDAtMTEtMTUgMTQ6MDAgIG5iYQoKCS0gc25tcHRyYW5zbGF0ZS5jOiBmaXggYSBzdHVwaWQgcGVycm9yIGZvciBzbm1wX3BlcnJvcgoJCjIwMDAtMTEtMTUgMTM6NTggIG5iYQoKCS0gcGFyc2UuW2NoXSwgbWliLmM6IGVuaGFuY2UgdGhlIHBhcnNlciB0byBkaXN0aW5ndWlzaCBJTlRFR0VSLCBJbnRlZ2VyMzIsCgkJVW5zaWduZWQzMiwgVUludGVnZXIzMi4KCQoyMDAwLTExLTE1IDEzOjU1ICBuYmEKCglzbm1wX2FwaS5jOiByZW1vdmUgYW4gdW51c2VkIHZhcmlhYmxlCgkKMjAwMC0xMS0xNSAwNzo0OSAgaGFyZGFrZXIKCgktIChzbm1wX3ZhcnMuYywgc3ViYWdlbnQuYyk6IFBhdGNoIGZyb20gTGF3cmVuY2UgR3JlZW5maWVsZDoKCSAgLSBEb24ndCBtYWtlIGluaXRfYWdlbnQoKS9zdWJhZ2VudF9wcmVfaW5pdCgpIGV4aXQgYnV0IHJldHVybiBhbgoJICAgIGVycm9yIGNvbmRpdGlvbiBpbnN0ZWFkLgoJCjIwMDAtMTEtMTIgMDg6MDggIGhhcmRha2VyCgoJLSAodWNkRGVtb1B1YmxpYy5jKTogYWRkIE5VTEwgdG8gZW5kIG9mIGRlbW8gc3RyaW5nIGFuZCBjaGVjayBmb3IgbGVuPTAuCgkKMjAwMC0xMS0xMiAwNDo0NSAgbmJhCgoJc25tcF9hcGkuYzogTWFrZSBzdXJlIHRoZSBub1JhbmdlQ2hlY2sgdG9rZW4gaXMgYSBib29sZWFuCgkKMjAwMC0xMS0xMiAwNDo0MSAgbmJhCgoJLSBtaWIuYzogZ2l2ZSB0aGUgdHJlZS10b3AgYSBuYW1lIHRvIHByb3RlY3QgZXJyb3IgbWVzc2FnZSB3aGVuIGxvb2tpbmcgdXAgLmZvbwoJCjIwMDAtMTEtMTIgMDQ6MzYgIG5iYQoKCS0gc25tcHRyYW5zbGF0ZS5jOiB1c2UgY29uZmlnX3BlcnJvciBmb3IgYSBiZXR0ZXIgZXJyb3IgbWVzc2FnZQoJCjIwMDAtMTEtMTIgMDQ6MzQgIG5iYQoKCS0gcHJveHkuYzogcmVtb3ZlIHNvbWUgdW51c2VkIHZhcmlhYmxlcy4KCQoyMDAwLTExLTEyIDA0OjMzICBuYmEKCgktYWdlbnRfdHJhcHMuYzogTW92ZSBhIGNvbmRpdGlvbmFsbHkgdXNlZCB2YXJpYWJsZQoJCjIwMDAtMTEtMTIgMDQ6MzIgIG5iYQoKCUZpeCBhIGJvZ3VzICNpZmRlZgoJCjIwMDAtMTEtMTAgMDk6MTggIGhhcmRha2VyCgoJLSAoY29uZmlndXJlLCBjb25maWd1cmUuaW4pOiBhcHBseSBwYXRjaCAjMTAyMjI0IGZyb20gamJwbiBmb3IgY3Jvc3MtY29tcGlsaW5nLgoJCjIwMDAtMTEtMTAgMDg6NTYgIGhhcmRha2VyCgoJLSAodGVzdGluZy9URVNUQ09ORi5zaCwgdGVzdGluZy9ldmFsX3Rvb2xzLnNoLCB0ZXN0aW5nL3Rlc3RzL1QwNTFzbm1wdjJjdHJhcCk6CgkgLSBmaXJzdCBwYXNzIGF0IGEgdGVzdGluZyBzY3JpcHQgdG8gdGVzdCB0cmFwIGZ1bmN0aW9uYWxpdHkuCgkgICAtIHdoaWNoIGV2ZW4gdW5jb3ZlcmVkIGEgYnVnLgoJCjIwMDAtMTEtMTAgMDg6NTUgIGhhcmRha2VyCgoJLSAoYXBwcy9zbm1wdHJhcGQuYyk6CgkgIC0gZm9yayBpZiBmaWxlIGxvZ2dpbmcgb3Igc3lzbG9nZ2luZywgYnV0IG5vdCBwcmludGluZy4KCSAgLSBkb24ndCBjbG9zZSBvcGVuIGZpbGUgZGVzY3JpcHRvcnMuICBUaGVyZSBzaG91bGRuJ3QgYmUgYW55LgoJCjIwMDAtMTEtMTAgMDg6NTMgIGhhcmRha2VyCgoJLSAoYXBwcy9zbm1wdHJhcGRfbG9nLmMpOiBwcm9wZXJseSBudWxsIHRlcm1pbmF0ZSBsb2cgc3RyaW5ncy4KCQoyMDAwLTExLTA5IDE2OjQwICBoYXJkYWtlcgoKCS0gKGNvbmZpZ3VyZS5pbik6IGF0dGVtcHQgdG8gaW1wbGVtZW50IGEgLS13aXRoLXJzYXJlZiBmbGFnLgoJCjIwMDAtMTEtMDkgMTU6MzIgIGhhcmRha2VyCgoJLSAoUkVBRE1FLCBwZXJsL1NOTVAvUkVBRE1FKTogbWVudGlvbiBLYXJsLgoJCjIwMDAtMTEtMDkgMTU6MzEgIGhhcmRha2VyCgoJLSAoTkVXUywgcGVybC9TTk1QL1JFQURNRSk6IG1lbnRpb24gS2FybC4KCQoyMDAwLTExLTA5IDE0OjU2ICBoYXJkYWtlcgoKCS0gKGV4YW1wbGVzL2J1bGt3YWxrLnBsLCB0L2J1bGt3YWxrLnQpOiBwYXRjaCBmcm9tIEthcmwgU2NoaWxrZToKCSAgLSBzdXBwb3J0IGJ1bGsgcmVxdWVzdHMuCgkKMjAwMC0xMS0wOSAxNDo1MyAgaGFyZGFrZXIKCgktIChNQU5JRkVTVCwgUkVBRE1FLCBTTk1QLnBtLCBTTk1QLnhzKTogcGF0Y2ggZnJvbSBLYXJsIFNjaGlsa2U6CgkgIC0gc3VwcG9ydCBidWxrIHJlcXVlc3RzLgoJCjIwMDAtMTEtMDggMjM6MzMgIGhhcmRha2VyCgoJLSAocmVhZF9jb25maWcuYyk6IGZpeCAtSCBvdXRwdXQuCgkKMjAwMC0xMS0wOCAyMzowMiAgaGFyZGFrZXIKCgktIChzbm1wX2FnZW50LmMpOiBtYWtlIGFnZW50X2NoZWNrX2FuZF9wcm9jZXNzKCkgY2FsbCBydW5fYWxhcm1zKCkuCgkKMjAwMC0xMS0wOCAyMjo0NSAgaGFyZGFrZXIKCgktIChkaXNraW8uYyk6IGZpeCBPSUQuCgkKMjAwMC0xMS0wOCAxNzowNiAgaGFyZGFrZXIKCgktIChTTk1QLnBtLCBTTk1QLnhzKTogcGF0Y2ggZnJvbSBNYXJrIENhdmFnZSBmb3IgZGVmYXVsdCB2YWx1ZSBzdXBwb3J0LgoJCjIwMDAtMTEtMDggMTc6MDMgIGhhcmRha2VyCgoJLSAobWliLmMsIHBhcnNlLmMsIHBhcnNlLmgpOiBtaW5pbWFsIERFRlZBTCBwYXJzaW5nIHN1cHBvcnQuCgkKMjAwMC0xMS0wOCAxNjoyMCAgaGFyZGFrZXIKCgktIChjb25maWcuaC5pbiwgY29uZmlndXJlKTogY2hlY2sgZm9yIGxpYnJzYXJlZiwgZXRjLCBpZiBuZWVkZWQuCgkKMjAwMC0xMS0wNyAxNToxNSAgaGFyZGFrZXIKCgktIChjb25maWcuaC5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGFnZW50L2FnZW50X3JlYWRfY29uZmlnLmMsCgkgIGFnZW50L3NubXBkLmMpOgoJICAtIHVpZC9naWQgY2hhbmdlcy4KCQoyMDAwLTExLTA3IDE1OjEwICBoYXJkYWtlcgoKCS0gKFNOTVAueHMpOiBmaXggVFlQRV9OT1RJRiAtPiBUWVBFX05PVElGVFlQRS4KCQoyMDAwLTExLTA3IDExOjMwICBoYXJkYWtlcgoKCS0gKFNOTVAvU05NUC5wbSwgU05NUC9TTk1QLnhzKTogUGF0Y2ggZnJvbSBKb2UgQ2xhcmtlOgoJICAtIGltcGxlbWVudCBiZXN0LWd1ZXNzICgtSWIpIHBhcnNpbmcuCgkgIC0gYWNjZXNzIHRvIHRyYXAgdmFyYmluZHMuCgkgIC0gcmFuZ2UgYWNjZXNzLgoJCjIwMDAtMTEtMDcgMTE6MDAgIGhhcmRha2VyCgoJLSAoLmN2c2lnbm9yZSk6IGlnbm9yZSBidWlsZCBjcmVhdGVkIGZpbGVzLgoJCjIwMDAtMTEtMDcgMTA6NTggIGhhcmRha2VyCgoJLSAoUkVBRE1FLCBTTk1QLnBtLCBTTk1QLnhzKTogcGF0Y2ggZnJvbSBLYXJsIFNjaGlsa2U6CgkgIC0gaW1wbGVtZW50IGEgZmluaXNoKCkgY2FsbC4KCQoyMDAwLTExLTA3IDEwOjU0ICBoYXJkYWtlcgoKCS0gKFNOTVAvU05NUC54cyk6IHBhdGNoIGZyb20gS2FybCBTY2hpbGtlOgoJICAtIG11bHRpcGxlIGNhbGxiYWNrIHBhdGNoIGZvciBwZXJsL1NOTVAvU05NUC54cy4KCQoyMDAwLTExLTA3IDEwOjQ4ICBoYXJkYWtlcgoKCS0gKHJlYWRfY29uZmlnLmMpOiBsb2cgYW4gZXJyb3IgbWVzc2FnZSBpZiB0aGUgb3B0aW9uYWwgY29uZmlnIGZpbGUgRE5FLgoJCjIwMDAtMTEtMDcgMTA6NDEgIGhhcmRha2VyCgoJLSAoU05NUC5wbSk6IGZpeCBpaWQgcGFyc2luZyB3aXRoIHJlc3BlY3QgdG8gbWliIG5vZGVzIHdpdGggYSAtIGluIGl0LgoJCjIwMDAtMTEtMDcgMTA6MjkgIGhhcmRha2VyCgoJLSAoaWZfZmllbGRzLmgsIGludGVyZmFjZXMuYywgaXBNZWRpYS5jLCBpcFJvdXRlLmMsIHRjcC5jLCB0Y3BUYWJsZS5jLAoJICB1ZHAuYywgdWRwVGFibGUuYyk6IFBhdGNoIGZyb20gQmVydCBEcmllaHVpczoKCSAgLSBtaWJKSiBmaXhlcyBbRnJlZUJTRC9vdGhlciBCU0Qnc10uCgkKMjAwMC0xMS0wNyAxMDoxMyAgaGFyZGFrZXIKCgktIChhZ2VudC9hZ2VudF9yZWFkX2NvbmZpZy5jLCBhZ2VudC9kc19hZ2VudC5oLCBhZ2VudC9zbm1wZC5jLAoJICBtYW4vc25tcGQuMS5kZWYsIG1hbi9zbm1wZC5jb25mLjUuZGVmKTogUGF0Y2ggZnJvbSBIYXJyaWUgSGF6ZXdpbmtlbDoKCSAgLSBpbXBsZW1lbnQgdWlkL2dpZCBjaGFuZ2VzIGFmdGVyIHN0YXJ0dXAgZm9yIHRoZSBhZ2VudC4KCQoyMDAwLTExLTA3IDA4OjMzICBoYXJkYWtlcgoKCS0gKHRhcmdldC5jKTogYSBiZXR0ZXIgc2FuaXR5IGNoZWNrIGZvciBzZXNzaW9uIGRlbGV0aW9uLgoJCjIwMDAtMTEtMDcgMDc6MjQgIGhhcmRha2VyCgoJLSAodGFyZ2V0LmMpOiBQYXRjaCBmcm9tIERhdmUgdG8gc2FuaXR5IGNoZWNrIHBhcmFtLT51cGRhdGVUaW1lLgoJCjIwMDAtMTEtMDYgMTE6MDAgIGhhcmRha2VyCgoJLSAobWQ1LmMpOiBjaGVjayB0byBzZWUgdGhhdCBNRHNpZ24oKSBkYXRhIGxpZXMgb24gYSAzMiBieXRlIGJvdW5kcnkuCgkgIC0gaXRzIHBvc3NpYmxlIHNvbWUgY29tcGlsZXJzIHdpbGwgY2hva2Ugb24gdGhpcyBoYWNrLgoJICAtIGZpeGVzIGJ1ZyAjMTIxNzUuCgkKMjAwMC0xMS0wMyAxNzo1NCAgaGFyZGFrZXIKCgktIChtaWIyYyk6IHNvcnQgT0lEcyBwcm9wZXJseS4KCQoyMDAwLTExLTAzIDE2OjQ0ICBoYXJkYWtlcgoKCS0gKGV4YW1wbGUuYyk6IFBhdGNoIGZyb20gSGFycmllIEhhemV3aW5rZWw6CgkgIC0gZml4IG1pYiByZWdpc3RyYXRpb25zIGZvciBkdXBsaWNhdGUgT0lEcyBiZWluZyB1c2VkIGZvciB0aGUgdHJhcCBleGFtcGxlcy4KCQoyMDAwLTExLTAzIDE1OjMxICBoYXJkYWtlcgoKCS0gKHNubXBkLmMpOiBzZWNvbmQgcGF0Y2ggZnJvbSBkb3Vnd2FyeiBpbiBidWcgIzExNzI3MyB0byBmaXggc211eCBwcm9ibGVtcy4KCSAgLSBVbSwgYXBwbGllZCBjb3JyZWN0bHkgdGhpcyB0aW1lIChJIGhvcGUpLgoJCjIwMDAtMTEtMDMgMTU6MjkgIGhhcmRha2VyCgoJLSAoc25tcGQuYyk6IHNlY29uZCBwYXRjaCBmcm9tIGRvdWd3YXJ6IGluIGJ1ZyAjMTE3MjczIHRvIGZpeCBzbXV4IHByb2JsZW1zLgoJCjIwMDAtMTEtMDIgMjI6MTkgIG5iYQoKCUNsZWFuIHVwIHNvbWUgdW51c2VkIHZhcmlhYmxlcyBldGMuCgkKMjAwMC0xMS0wMiAyMjoxNiAgbmJhCgoJLSBNYWtlZmlsZS5pbjogZml4IHNvbWUgJChzcmNkaXIpIHJlZmVyZW5jZXMgd2hlbiBydW5uaW5nIG91dHNpZGUgc291cmNlCgkKMjAwMC0xMS0wMiAyMjoxNSAgbmJhCgoJLSBzbm1wdHJhcGQuYzogZml4IHRoZSBmb3JtYXQgc3RyaW5nIGZvciBmb3JtYXRfdHJhcAoJCjIwMDAtMTEtMDIgMjI6MTQgIG5iYQoKCS0gTWFrZWZpbGUuaW46IHJlbW92ZSBzb21lIGR1cGxpY2F0ZXMgZnJvbSBmaWxlIGxpc3RzCgkKMjAwMC0xMS0wMiAyMjoxMiAgbmJhCgoJRG9jdW1lbnQgdGhlIC1PWCBvdXRwdXQgb3B0aW9uCgkKMjAwMC0xMS0wMiAyMjoxMSAgbmJhCgoJRG9jdW1lbnQgdGhlIHN5c3NlcnZpY2VzIHRva2VuCgkKMjAwMC0xMS0wMiAxNjoxNyAgaGFyZGFrZXIKCgktIChhZ2VudC9taWJncm91cC91Y2Rfc25tcC5oKTogYWRkIHVjZC1zbm1wL3Byb3h5LgoJCjIwMDAtMTEtMDIgMTY6MTYgIGhhcmRha2VyCgoJLSAoYWdlbnQvbWliZ3JvdXAvdmVyc2lvbnRhZyk6IGNoYW5nZSBjdnMgYXJjaGl2ZSBzaXRlIGFuZCBwYWNrYWdlIG5hbWUuCgkKMjAwMC0xMS0wMiAxMzoyMyAgaGFyZGFrZXIKCgktIChzbXV4LmMpOiBQYXRjaCAxMDIyMzkgZnJvbSBkb3Vnd2FyeiB0byBmaXggYSBwcmV2aW91c2x5IGJhZCBzbXV4LmMgcGF0Y2guCgkKMjAwMC0xMS0wMSAxNjozNiAgaGFyZGFrZXIKCgktICh2ZXJzaW9uLmggYnVnLXJlcG9ydCBzZWRzY3JpcHQuaW4pOiB2ZXJzaW9uIHRhZyAoIDQuMi5wcmUxICkKCQoyMDAwLTExLTAxIDE2OjE0ICBoYXJkYWtlcgoKCS0gKFQxMjBwcm94eWdldCwgVDEyMXByb3h5c2V0LCBUMTIycHJveHlzZXRmYWlsKTogcHJveHkgdGVzdCBzdWl0ZS4KCQoyMDAwLTExLTAxIDE2OjA4ICBoYXJkYWtlcgoKCS0gKGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Byb3h5LmMsIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Byb3h5LmgpOgoJICAtIG1pbmltYWwgU0VUIHN1cHBvcnQgZm9yIHRoZSBwcm94eSBjb2RlLgoJCjIwMDAtMTEtMDEgMTA6MjIgIGhhcmRha2VyCgoJLSAoVDExMmFnZW50eHNldGZhaWwpOiB0ZXN0IGZvciBhZ2VudHggc2V0cyB0aGF0IHNob3VsZCBmYWlsIHByb3Blcmx5LgoJCjIwMDAtMTAtMzEgMTQ6MzAgIG5iYQoKCS0gdGNwVGFibGUuYzogcmVtb3ZlIGFuIHVubmVzY2Vzc2FyeSAjaW5jbHVkZQoJCjIwMDAtMTAtMzEgMTQ6MjggIG5iYQoKCS0gc211eC5jOiBmaXggd3JvbmcgdmFyaWFibGUgbGVuZ3RoCgkKMjAwMC0xMC0zMSAxNDoyNSAgbmJhCgoJLSBwcm90b2NvbC5jOiBmaXggc29tZSBzdXNwaWNpb3VzIGxvb2tpbmcgY29kZQoJCjIwMDAtMTAtMzEgMTQ6MjEgIG5iYQoKCS0gbWFuL3NubXBkLmNvbmY6IGZpeCBhIHR5cG8KCQoyMDAwLTEwLTMxIDEyOjQxICBuYmEKCgktIG1pYi5jOiBhZGQgLU9YIG91dHB1dCBmb3JtYXQsIGZvciBqdXN0IGFub3RoZXIgd2F5IG9mIHByaW50aW5nIGluZGljZXMKCQoyMDAwLTEwLTMxIDEyOjI3ICBuYmEKCgktIGludGVyZmFjZS5jOiBhZGQgImludGVyZmFjZSIgY29uZmlnIGZvciB1bmd1ZXNzYWJsZSBpbnRlcmZhY2UgdHlwZS9zcGVlZAoJCjIwMDAtMTAtMzEgMTI6MjUgIG5iYQoKCS0gYXBwcy8qOiBtYWtlIHN1cmUgd2UgcmVwb3J0IGFueSBlcnJpbmRleC9lcnJjb2RlIGluIHRoZSByZXNwb25zZQoJCjIwMDAtMTAtMzEgMTI6MDQgIG5iYQoKCS0gcHJvdG9jb2wuYzogY2xlYW4gdXAgdW51c2VkIHZhcmlhYmxlcy4KCQoyMDAwLTEwLTMxIDEwOjEzICBoYXJkYWtlcgoKCS0gKHNtdXguYyk6IHBhdGNoICMxIGZyb20gYnVnICMxMTcyNzMgYXBwbGllZCB0byBmaXggc211eCBzb2NrZXQgcHJvYmxlbXMuCgkKMjAwMC0xMC0zMSAwOToyNCAgaGFyZGFrZXIKCgktIChTTk1QLnhzKTogcHJpbnQgY291bnRlcjY0J3MgYXMgdW5zaWduZWQuCgkKMjAwMC0xMC0zMSAwNzo1NCAgaGFyZGFrZXIKCgktIChhZ2VudF90cmFwLmMsIGFnZW50X3RyYXAuaCwgc3ViYWdlbnQuYywgc25tcE5vdGlmeVRhYmxlLmMsCgkgIHNubXBOb3RpZnlUYWJsZS5oKTogUGF0Y2ggZnJvbSBEYXZlOgoJICAtIGZpeCBub3RpZmljYXRpb25zIGZyb20gYWdlbnR4IHN1YmFnZW50cy4KCQoyMDAwLTEwLTMwIDIyOjAzICBoYXJkYWtlcgoKCS0gKHNtdXguYyk6IGZpeCBidWcgIzExOTc4NjogbWFrZSBzbXV4IHJldXNlIHNvY2tldCBhZGRyZXNzLgoJCjIwMDAtMTAtMzAgMjE6NDIgIGhhcmRha2VyCgoJLSAoZXZhbF90b29scy5zaCwgdGVzdHMvVDExMGFnZW50eGdldCwgdGVzdHMvVDExMWFnZW50eHNldCk6CgkgIC0gZml4IGJ1ZyAjMzgyCgkgIC0gZml4IGFnZW50eCBub24tcm9vdCB0ZXN0cyB0byB1c2UgLXggL3RtcC9ibGFoL2FnZW50eF9zb2NrZXQuCgkKMjAwMC0xMC0zMCAxMzo0NSAgaGFyZGFrZXIKCgktIChzbm1wZC4xLmRlZik6IGZpeCBhIHR5cG8gcG9pbnRlZCBvdXQgYnkgQ2hyaXMgUGVwcGVyLgoJCjIwMDAtMTAtMzAgMTE6NDYgIGhhcmRha2VyCgoJLSAodGVzdHMvVDExMWFnZW50eHNldCk6IHRlc3Qgc2NyaXB0IGZvciBBZ2VudFggc2V0IHN1cHBvcnQuCgkKMjAwMC0xMC0zMCAxMTo0MyAgaGFyZGFrZXIKCgktICh0ZXN0cy9UMTEwYWdlbnR4Z2V0KTogaGVhZGVyIGNoYW5nZWQgdG8gaW5jbHVkZSB0aGUgd29yZCBHRVQuCgkKMjAwMC0xMC0zMCAxMToxMyAgbmJhCgoJLSB1Y2Qtc25tcC92bXN0YXRfKiwgbWVtb3J5X2ZyZWVic2QyLmMsIGRsbW9kLmM6IE1ha2Ugc3NSYXdDcHUgb2JqZWN0cyBDb3VudGVycywKCQlhbmQgYWRkIHN1cHBvcnQgZm9yICpCU0QgKGluY2x1ZGluZyBPcGVuQlNEKQoJCjIwMDAtMTAtMzAgMTE6MDcgIG5iYQoKCS0gQ2xlYW4gdXAgdW51c2VkIHZhcmlhYmxlcy4KCQoyMDAwLTEwLTMwIDExOjA0ICBoYXJkYWtlcgoKCS0gKHRlc3RpbmcvdGVzdHMvVDEwMWFnZW50eCwgdGVzdGluZy90ZXN0cy9UMTEwYWdlbnR4Z2V0KToKCSAgLSByZW5hbWVkIHRoZSBhZ2VudHggdGVzdCBzY3JpcHQuCgkKMjAwMC0xMC0zMCAxMTowMyAgaGFyZGFrZXIKCgktICh0ZXN0aW5nL2V2YWxfdG9vbHMuc2gpOiBkb24ndCBhZGQgLWMgQ09ORklHRklMRSBpZiBpdCBkb2Vzbid0IGV4aXN0LgoJCjIwMDAtMTAtMzAgMTA6MzkgIGhhcmRha2VyCgoJLSAoYWdlbnQvc25tcGQuYyk6IGVycm9yIHdoZW4gcGFyc2luZyAtWCBmb3Igbm9uLWFnZW50eCBidWlsZHMuCgkKMjAwMC0xMC0yNyAxMToyOSAgaGFyZGFrZXIKCgktIChhcHBzL3NubXB0cmFwZC5jKTogYWRkIC1vIGZsYWcgdG8gbG9nIHRvIGEgcGFydGljdWxhciBmaWxlLgoJCjIwMDAtMTAtMjcgMTA6NDEgIGhhcmRha2VyCgoJLSAoc25tcGxpYi9zbm1wX2FwaS5jKTogdXNlIG1rc3RlbXAgaWYgYXZhaWxhYmxlLgoJCjIwMDAtMTAtMjcgMTA6NDAgIGhhcmRha2VyCgoJLSAoY29uZmlnLmguaW4sIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluKTogU2VhcmNoIGZvciBta3N0ZW1wKCkuCgkKMjAwMC0xMC0yNyAxMDowOCAgaGFyZGFrZXIKCgktIChGQVEpOiB1cGRhdGUgbGludXgga2VybmVsIGxpc3QgdG8gaW5jbHVkZSAyLjIuCgkKMjAwMC0xMC0yNiAxNzo1MSAgaGFyZGFrZXIKCgktIChldmFsX3Rvb2xzLnNoKTogbWFrZSBTS0lQSUZOT1QgY2hlY2sgdGhlIG1pYiBtb2R1bGUgbGlzdCB0b28uCgkKMjAwMC0xMC0yNiAxNzo0OCAgaGFyZGFrZXIKCgktICh0ZXN0cy9UMTAxYWdlbnR4KTogQWdlbnRYIHN1YmFnZW50IHRlc3QgZm9yIHNpbXBsZSBnZXQgcmV0cmlldmFsLgoJCjIwMDAtMTAtMjUgMTc6NDQgIGhhcmRha2VyCgoJLSAoc25tcGQuYyk6IEFkZCAtWCBvcHRpb24gdG8gc25tcGQgdG8gcnVuIGFzIGEgc3ViYWdlbnQuCgkKMjAwMC0xMC0yNSAxNzowNiAgaGFyZGFrZXIKCgktIChyZWFkX2NvbmZpZy5jKTogZml4IGZvciBjYXNlcyB3aGVuZSBkZWJ1Z2dpbmcgaXMgYWx3YXlzIG9mZi4KCQoyMDAwLTEwLTE3IDE1OjMwICBoYXJkYWtlcgoKCS0gKGNvbmZpZy5oLmluKTogYXV0b2hlYWRlciBydW4KCQoyMDAwLTEwLTE2IDAzOjEzICBkYXZlcwoKCS0gKGFnZW50eC9tYXN0ZXIuYyk6IFNwZWNpZnkgdGhlIGxlbmd0aCBvZiB0aGUgKHBzZXVkby0pYW5zd2VyIHRvIGEgcmVxdWVzdC4KCQlUaGlzIGFsbG93cyBpdCB0byBiZSBjYWNoZWQgY29ycmVjdGx5IGZvciBtdWx0aS1wYXNzIFNFVCBoYW5kbGluZy4KCQoyMDAwLTEwLTE2IDAzOjExICBkYXZlcwoKCS0gKGFnZW50eC9zdWJhZ2VudC5jKTogRG9uJ3Qgb3ZlcndyaXRlIHNhdmVkIG1vZGUgaW5mb3JtYXRpb24KCQlUaGlzIHNob3VsZCBoZWxwIHdpdGggKHNvbWUgb2YpIHRoZSBTRVQgaGFuZGxpbmcgcHJvYmxlbXMuCgkKMjAwMC0xMC0xNiAwMTo1NiAgZGF2ZXMKCgktIChhZ2VudHgvbWFzdGVyX3JlcXVlc3QuYyk6IERvbid0IGZyZWUgY2FsbGJhY2sgZGF0YSBzdHJ1Y3R1cmUuCgkJVGhpcyBob2xkcyBpbmZvcm1hdGlvbiB0aGF0IG5lZWRzIHRvIHBlcnNpc3QgYWNyb3NzIG11bHRpLXBhc3MgcmVxdWVzdHMuCgkJSSByZWFsaXNlIHRoYXQgdGhpcyBpbnRyb2R1Y2VzIGEgbWVtb3J5IGxlYWssIGJ1dCB0aGlzIGlzbid0IHRoZQoJCWNvcnJlY3QgcGxhY2UgdG8gaGFuZGxlIHRoaXMuCgkKMjAwMC0xMC0xMiAxNDo1MiAgaGFyZGFrZXIKCgktIChzbm1wZC5jKTogYWRkIC1JIHRvIHRoZSBoZWxwIG91dHB1dC4KCQoyMDAwLTEwLTEyIDE0OjI0ICBoYXJkYWtlcgoKCS0gKGFnZW50L2RsbW9kcy8qKTogcmVtb3ZlIG9ic29sZXRlIHZlcnNpb25zCgkKMjAwMC0xMC0xMiAxNDowOCAgaGFyZGFrZXIKCgktIChjb25maWd1cmUpOiB1cGRhdGUuCgkKMjAwMC0xMC0xMiAxNDowMSAgaGFyZGFrZXIKCgktIChhY2NvbmZpZy5oLCBjb25maWcuaC5pbiwgY29uZmlndXJlLmluKTogUGF0Y2ggZnJvbSBNYXR0IEJyYWl0aHdhaXRlOgoJICAtIHVkcCBjb25maWd1cmF0aW9uIGNoYW5nZXMgdG8gY2hlY2sgZm9yIG1pc2Mgc3RydWN0dXJlIGRlZmluaXRpb25zLgoJCjIwMDAtMTAtMTIgMTM6NDggIGhhcmRha2VyCgoJLSAoVFVOTkVMLU1JQi50eHQpOiBUVU5ORUwtTUlCIGRlZmluaXRpb24uCgkKMjAwMC0xMC0xMiAxMzo0OCAgaGFyZGFrZXIKCgktICh0dW5uZWwuaCk6IGNvbmZpZ19hZGRfbWliKFRVTk5FTC1NSUIpLgoJCjIwMDAtMTAtMTIgMTM6NDcgIGhhcmRha2VyCgoJLSAodHVubmVsLmgsIHR1bm5lbC5jLCB0dW5uZWwuaCk6IFBhdGNoIGZyb20gRnJhbmsgU3RyYXVzczoKCSAgLSBpbXBsZW1lbnQgdGhlIFRVTk5FTC1NSUIuCgkKMjAwMC0xMC0xMCAxNDozMyAgbXNsaWZjYWsKCglGaXggdW5saW5rX3RyZWUgZm9yICJ0b3AgbGV2ZWwiIHRyZWUgbm9kZXMuCgkKMjAwMC0xMC0xMCAxMTowMiAgaGFyZGFrZXIKCgktIChNYWtlZmlsZS5pbik6IHJldmVyc2UgbGlicmFyeSBsaW5rIG9yZGVyaW5nIGFnYWluLi4uCgkKMjAwMC0xMC0xMCAwOTowMyAgbXNsaWZjYWsKCglSZW1vdmUgcmVsYXRpdmUgcGF0aCB0byBpbmNsdWRlIHN5c3RlbS5oLgoJCjIwMDAtMTAtMTAgMDY6NTMgIG1zbGlmY2FrCgoJUmVtb3ZlIHVubmVlZGVkIGRlY2wgb2YgdnNucHJpbnRmIHdpdGhvdXQgc3RkYXJnL3ZhcmFyZ3MgZGVjbCBvZiB2YV9saXN0LgoJCjIwMDAtMTAtMTAgMDU6MTUgIG1zbGlmY2FrCgoJQXBwbHkgcGF0Y2ggZm9yIERFQyBBbHBoYSBFVjYsIHN1cHBsaWVkIGJ5IFNodW1vbiBIdXF1ZTxzaHVxdWVAaXNjLnVwZW5uLmVkdT4KCQoyMDAwLTEwLTA5IDE3OjA2ICBtc2xpZmNhawoKCXBhdGNoIHRvIGZpeCBsZWFkaW5nIHplcm8gZXJyb3IgaW50cm9kdWNlZCBieSBjaGFuZ2VzIGZvciBzaHV0ZG93bl9taWIuCgkKMjAwMC0xMC0wOSAxNTo1MSAgaGFyZGFrZXIKCgktIChkbG1vZC5jKTogbWlub3IgZGVidWdnaW5nIG91dHB1dCBhZGRpdGlvbnMuCgkKMjAwMC0xMC0wOSAxNTo1MSAgaGFyZGFrZXIKCgktIChNYWtlZmlsZS5pbik6IG1vdmUgYXV0b19ubGlzdCB0byBsaWJ1Y2RtaWJzLgoJCjIwMDAtMTAtMDkgMTE6NDMgIGhhcmRha2VyCgoJLSAoRkFRLCBSRUFETUUpOiBhZGQgbmV3IG1pcnJvci4KCQoyMDAwLTEwLTA5IDEwOjI2ICBtc2xpZmNhawoKCU1vdmUgY29uZmlnLSBhbmQgc3RvcmUtcmVsYXRlZCBjbGVhbnVwIGZyb20gc2h1dGRvd25fbWliIHRvIHNubXBfc2h1dGRvd24uCgkKMjAwMC0xMC0wOSAwMjozNiAgZGF2ZXMKCgktIChtaWJJSS9pbnRlcmZhY2VzLmMpOiBRdWFsaWZ5IGFuIGluZGl2aWR1YWwgaW50ZXJmYWNlIHR5cGUgdGVzdCBzeW1ib2wKCQkoUW46IHNob3VsZCBhbnkvYWxsIG9mIHRoZSBvdGhlcnMgYmUgcXVhbGlmaWVkIGFzIHdlbGw/KQoJCjIwMDAtMTAtMDYgMDg6NTYgIG1zbGlmY2FrCgoJU3VwcG9ydCBmb3Igc2h1dGRvd25fbWliIC0gY2xlYXJpbmcgdGhlIE1JQiB0cmVlcyBhbmQgY29uZmlndXJlZCByZWdpc3RyYXRpb25zLgoJCjIwMDAtMTAtMDYgMDU6MzMgIG1zbGlmY2FrCgoJUGx1ZyBtZW1vcnkgbGVhayBmb3IgdWNkLXN1cHBsaWVkIHNldGVudiBvbiBXaW4zMiBwbGF0Zm9ybS4KCQoyMDAwLTEwLTA2IDA0OjU4ICBtc2xpZmNhawoKCVJlbW92ZSB1bnVzZWQgdmFyaWFibGVzLgoJCjIwMDAtMTAtMDUgMjM6NDUgIG5iYQoKCS0gbWliLmM6IGZpeCBzaWxseSBidWcgaW4gbmV3IG9pZCBwYXJzZXIsIHdoZW4gbGVhdmluZyB0aGUgdHJlZSBhbmQgZ29pbmcKCQlpbnRvIHN1Yi1pZHMgd2Uga25vdyBub3RoaW5nIGFib3V0CgkKMjAwMC0xMC0wNSAxNjowMyAgaGFyZGFrZXIKCgktIChNYWtlZmlsZS5pbik6IFBhdGNoIGZyb20gSGFycmllIEhhemV3aW5rZWw6CgkgIC0gZml4IGxpYnJhcnkgZGVwZW5kZW5jeSBvcmRlci4KCQoyMDAwLTEwLTA0IDE3OjU5ICBoYXJkYWtlcgoKCS0gKE1ha2VmaWxlLmluKTogaW5zdGFsbCAiZXh0ZW5kaW5nIiBzbm1wY29uZiBmaWxlLgoJCjIwMDAtMTAtMDQgMTc6NTggIGhhcmRha2VyCgoJLSAoZXh0ZW5kaW5nKTogYWRkIHNubXBjb25mIHN1cHBvcnQgZm9yIGV4dGVuZGluZyB0aGUgYWdlbnQgKHBhc3MsIGV4ZWMsIC4uLikKCQoyMDAwLTEwLTA0IDE3OjU4ICBoYXJkYWtlcgoKCS0gKG1vbml0b3IpOiBtaXNjIHVwZGF0ZXMgYW5kIGFkZCAiZmlsZSIgd2F0Y2hpbmcuCgkKMjAwMC0xMC0wNCAxNzo1NyAgaGFyZGFrZXIKCgktIChhY2wpOiBkb24ndCBzcGVjaWZ5IGxpbmUgc3BlY2lmaWNhdGlvbnMgZm9yIGRlZmF1bHQgc25tcGNvbmYgdXNhZ2UuCgkKMjAwMC0xMC0wNCAxNDo1MCAgbmJhCgoJLSBGQVE6IGZpeCBhIGNvbmZ1c2lvbiBiZXR3ZWVuICJvbWl0IiBhbmQgImluY2x1ZGUiCgkKMjAwMC0xMC0wNCAxMzoyNSAgaGFyZGFrZXIKCgktIChwYXNzX3BlcnNpc3QuYyk6IG9wYXF1ZXMgaW4gcGFzc19wZXJzaXN0LgoJCjIwMDAtMTAtMDQgMTA6MzUgIGhhcmRha2VyCgoJLSAocGFzcy5jKTogc3VwcG9ydCBvcGFxdWUgcmV0dXJuIHR5cGVzLgoJCjIwMDAtMTAtMDQgMDc6MTUgIG1zbGlmY2FrCgoJRml4IHBhcnNpbmcgcHJvYmxlbSBmb3IgLVBjIG9wdGlvbjsgcmVwb3J0ZWQgYnkgQ2hyaXN0aWFuIE1hdXRuZXIuCgkKMjAwMC0xMC0wNCAwNzowMiAgbXNsaWZjYWsKCglxdWFsaWZ5IG5ldyBpL2YgdHlwZXMuCgkKMjAwMC0xMC0wNCAwNjo1MiAgbXNsaWZjYWsKCglxdWFsaWZ5IHN5bWJvbHMgZm9yIG5ldyBpL2YgdHlwZXMuCgkKMjAwMC0xMC0wNCAwNjo1MSAgbXNsaWZjYWsKCglUZXJtaW5hdGUgbGlzdCB0byBjb21waWxlIChhZGQgYSBjb21tYSkuCgkKMjAwMC0xMC0wNCAwMDoxOCAgbmJhCgoJLSBzbm1wdGFibGUuYzogaW5kZXggY29sdW1udCAoLUNpKSB3aWR0aCBub3QgcHJvcGVybHkgY29tcHV0ZWQgd2hlbiB1c2luZwoJCUdFVEJVTEsKCQoyMDAwLTEwLTAzIDE4OjE5ICBoYXJkYWtlcgoKCS0gKGFnZW50X3JlZ2lzdHJ5LmMsIGFnZW50X3JlZ2lzdHJ5LmgsIHNubXBkLmMpOiBQYXRjaCBmcm9tIEpvaG4gTmF5bG9uOgoJICAtIGFkZCBhIHBhc3NiYWNrIGFyZ3VtZW50IHRvIHJlZ2lzdGVyX3JlYWRmZCgpIGNhbGxiYWNrcy4KCQoyMDAwLTEwLTAzIDE4OjE3ICBoYXJkYWtlcgoKCS0gKE1ha2VmaWxlLmluKTogUGF0Y2ggZnJvbSBIYXJyaWUgSGF6ZXdpbmtlbDoKCSAgLSBtb3ZlIGF1dG9fbmxpc3Quby9sbyB0byBsaWJ1Y2RhZ2VudCBzaW5jZSBzb21lIG1pYi1tb2R1bGVzIG5lZWQgaXQuCgkKMjAwMC0xMC0wMyAxODowNyAgaGFyZGFrZXIKCgktIChzbXV4LmMpOiBQYXRjaCBmcm9tIEpvY2hlbiBGcmllZHJpY2g6CgkgIC0gZml4IGdldG5leHQgcmVxdWVzdHMgdG8gc3ViYWdlbnRzLgoJCjIwMDAtMTAtMDMgMTc6MjYgIGhhcmRha2VyCgoJLSAobWliSkovaW50ZXJmYWNlcy5jKTogUGF0Y2ggZnJvbSBGcmFuayBTdHJhdXNzOgoJICAtIGJldHRlciBpZnR5cGUgZ3Vlc3NpbmcuCgkKMjAwMC0xMC0wMyAxNzoyNCAgaGFyZGFrZXIKCgktIChpbnRlcmZhY2VzLmMpOiBQYXRjaCBmcm9tIEZyYW5rIFN0cmF1c3M6CgkgIC0gYmV0dGVyIGlmdHlwZSBndWVzc2luZy4KCQoyMDAwLTEwLTAzIDE2OjUyICBoYXJkYWtlcgoKCS0gKHNtdXguYyk6IFBhdGNoIGZyb20gRG91ZyBXYXJ6ZWNoYToKCSAgLSBmaXggb2lkIHBhcnNpbmcgaW4gdHJhcHMuCgkKMjAwMC0xMC0wMyAxNjoyMyAgaGFyZGFrZXIKCgktIChleGFtcGxlLmMsIGV4YW1wbGUuaCk6IGV4YW1wbGUgb2YgY29kaW5nIGEgdjIgdHJhcCBmcm9tIHNvbWVvbmUgd2hvCgkgIEkgaGF2ZSB2ZXJ5IHNhZGx5IGZvcmdvdHRlbi4gIEkndmUgYmVlbiBsb29raW5nIGZvciB0aGF0IG1lc3NhZ2UgZm9yCgkgIGEgd2hpbGUgdG8gcHJvcGVybHkgYXR0cmlidXRlIHRoaXMgcGF0Y2guICBTaWdoLgoJCjIwMDAtMTAtMDMgMTY6MjEgIGhhcmRha2VyCgoJLSAoc25tcF9hZ2VudC5jKTogUGF0Y2ggZnJvbSBEb3VnbGFzIFdhcnplY2hhOgoJICAtIHNubXBkIHJldHVybnMgd3JvbmcgZXJyb3IgaW5kZXggb24gU05NUHYxIHJlcXVlc3QgKEJVRyMzNzUpLgoJCjIwMDAtMTAtMDMgMDk6MTIgIG1zbGlmY2FrCgoJRml4IG51bGwgZGVyZWYgb2Ygc3MtPmNvbW11bml0eSwgcmVwb3J0ZWQgYnkgSmltIFBpY2tlcmluZy4KCQoyMDAwLTEwLTAzIDA4OjAzICBtc2xpZmNhawoKCUNhc3RpbmcgdG8gZml4IHByb2JsZW1zIGJ1aWxkaW5nIHdpdGggYUNDCglUaGFua3MgdG8gTWFya2t1IExhdWtrYW5lbiA8cGt5QG1vcmVtYWdpYy5jb20+CgkKMjAwMC0xMC0wMyAwNTo1OSAgbXNsaWZjYWsKCglSZW1vdmUgY2hkaXIgdG8gdW5kbyBmaXggZm9yIChCVUcjMjk4KQoJCjIwMDAtMTAtMDIgMjE6NDEgIG5iYQoKCS0gbWliLmM6IEVzY2FwZSAiIGFuZCBcIGluIHRleHQgc3RyaW5ncy4KCQoyMDAwLTEwLTAyIDIxOjM5ICBuYmEKCgktIHNubXBfbG9nZ2luZy5jOiAjaW5jbHVkZSA8bmV0aW5ldC9pbi5oPgoJCjIwMDAtMTAtMDIgMjE6MzggIG5iYQoKCS0gTWFrZWZpbGUuaW46IGZpeCBhIG1pc3NpbmcgJChzcmNkaXIpIGR1cmluZyBtYWtlIGluc3RhbGwgb2YgbWliMmMKCQljb25maWd1cmF0aW9uIGZpbGVzCgkKMjAwMC0xMC0wMiAyMTozNyAgbmJhCgoJLSBzbm1wc2V0LmM6IERvIGEgZXhpdCgyKSBmb3IgZmFpbHVyZSBpbiBzZXR0aW5nIHRoZSB2YXJpYWJsZS4KCQoyMDAwLTEwLTAyIDIxOjM2ICBuYmEKCgktIGhyX3N3cnVuLmM6IGFkZCBhIHNhZmVndWFyZCBmb3IgdmVyeSBsb25nIGFyZ3VtZW50IGxpc3RzLgoJCjIwMDAtMTAtMDIgMjE6MzQgIG5iYQoKCS0gaHJfZGlzay5jOiBBZGQgYSBuYW1lIHBhdHRlcm4gdGhhdCBtYXRjaGVzIHg4NiBJREUgZGlza3MgZm9yIFNvbGFyaXMuCgkKMjAwMC0xMC0wMiAyMTozMyAgbmJhCgoJLSBrZXJuZWxfc3Vub3M1LmM6IG1ha2UgdGhlIGJ1ZmZlciBmb3IgU0lPQ0dJRkNPTkYgZHluYW1pYy4KCQoyMDAwLTEwLTAyIDExOjQxICBoYXJkYWtlcgoKCS0gKE1ha2VmaWxlLmluKTogaW5zdGFsbCBzbm1wdXNtLmguCgkKMjAwMC0xMC0wMiAxMDo0OCAgaGFyZGFrZXIKCgktIChzbm1wY29uZik6CgkgIC0gbmV3IG9wdGlvbnMgZm9yIGluc3RhbGxpbmcgY3JlYXRlZCBmaWxlcy4KCSAgLSBtb3JlIGNvbW1lbnRzIGluIHRoZSBjb2RlLgoJICAtIGFsbG93IHJlYWRpbmcgYSAuY29uZiBkaXJlY3RseSB0byB3cml0aW5nIGZvciBhdXRvLWNvbW1lbnRpbmcgLmNvbmYgZmlsZXMuCgkgIC0gbWlzYy4KCQoyMDAwLTEwLTAyIDEwOjQ3ICBoYXJkYWtlcgoKCS0gKGFnZW50L21pYmdyb3VwL01ha2VmaWxlLmluLCBhZ2VudC9NYWtlZmlsZS5pbik6IG1ha2UgZGVwZW5kLWxlc3MuCgkKMjAwMC0xMC0wMiAwOTozNSAgaGFyZGFrZXIKCgktIChzbm1wX2FnZW50LmMpOiBwcm90ZWN0IGFnYWluc3QgMCBieXRlIHN0YXRQIG1hbGxvY3MuCgkKMjAwMC0xMC0wMiAwOToxNCAgaGFyZGFrZXIKCgktIChpbnRlcmZhY2VzLmMpOiBQYXRjaCBmcm9tIFRlZCBSdWxlOgoJICAtIGZpeCBpbnRlcmZhY2VzLmMgZm9yIHZhcmlhYmxlIGxlbmd0aCBudW1iZXIgZm9ybWF0dGluZyBpbiAvcHJvYy9uZXQvZGV2LgoJCjIwMDAtMTAtMDEgMTY6NDAgIG1zbGlmY2FrCgoJUGVyIE5pZWxzIHJlY29tbWVuZGF0aW9uLCBjaGRpciB0byBQRVJTSVNURU5UX0RJUkVDVE9SWSAocmU6IGJ1ZyAjMjk4KQoJCjIwMDAtMDktMzAgMDg6NTcgIG1zbGlmY2FrCgoJRml4IERFQlVHTVNHVEwgbm90IGZvdW5kIGVycm9yIGZvciBidWlsZHMgd2l0aG91dCBkbG1vZCBzdXBwb3J0LgoJVGhhbmtzIHRvIHNpbW9uQHppZC50dXdlaW4uYWMuYXQKCQoyMDAwLTA5LTMwIDA4OjUwICBtc2xpZmNhawoKCUZpeCBzb21lIGtlcm5lbCBzeW1ib2xzIC0gdGhhbmtzIHRvIHNpbW9uQHppZC50dXdpZW4uYWMuYXQKCQoyMDAwLTA5LTI5IDE0OjM1ICBoYXJkYWtlcgoKCS0gKCovTWFrZWZpbGUuaW4pOiBtYWtlIGRlcGVuZCArIC5vIC0+IC5sbyBmaXhlcy4KCQoyMDAwLTA5LTI5IDE0OjI3ICBoYXJkYWtlcgoKCS0gKG1ha2VmaWxlaW5kZXBlbmQucGwpOiBza2lwIGVtcHR5IGRlcGVuZCBsaW5lcy4KCQoyMDAwLTA5LTI5IDE0OjA5ICBoYXJkYWtlcgoKCS0gKHNubXBjb25mKTogZHJvcCBkdXBsaWNhdGUgbGluZXMgZnJvbSByZWFkIGluIHNubXBkLmNvbmYgZmlsZXMuCgkKMjAwMC0wOS0yOSAxMzo0NiAgaGFyZGFrZXIKCgktIChzbm1wY29uZik6IHNvcnQgdW5rbm93biBkaXJlY3RpdmVzIGJ5IGZpbGV0eXBlICh3aG9vcHMpLgoJCjIwMDAtMDktMjkgMTM6NDIgIGhhcmRha2VyCgoJLSAobW9uaXRvcik6IG1pbm9yIHdvcmRpbmcgYWRqdXN0bWVudHMuCgkKMjAwMC0wOS0yOSAxMzo0MiAgaGFyZGFrZXIKCgktIChzbm1wY29uZik6IHByaW50IG1vcmUgaW5mb3JtYXRpb24vY29tbWVudHMgdG8gdGhlIHNjcmVlbi4KCQoyMDAwLTA5LTI5IDExOjMxICBoYXJkYWtlcgoKCS0gKHZhcl9zdHJ1Y3QuaCk6IGluY3JlYXNlIHJlZ2lzdHJhdGlvbiBuYW1lIGxlbmd0aCB0byAzMiBmcm9tIDE2IChCdWcgIzE3MikKCQoyMDAwLTA5LTI5IDExOjEyICBoYXJkYWtlcgoKCS0gKHNubXBfYXBpLmMpOiBpbmNvcnJlY3QgdmFsIGxlbmd0aCBwYXNzZWQgdG8gcGFyc2VfdW5zaWduZWRfaW50IChCdWcgIzMzOSkuCgkKMjAwMC0wOS0yOSAxMTowMSAgaGFyZGFrZXIKCgktIChzbm1wX2FwaS5jKTogZml4IEJ1ZyMzNTMgZm9yIGhvc3RuYW1lcyB0aGF0IGxvb2sgbGlrZSAiNXciLgoJICAtIGRvbid0IGludGVycHJldGUgdGhlbSBhcyBhbiBpcC1wb3J0LgoJCjIwMDAtMDktMjkgMTA6MzkgIGhhcmRha2VyCgoJLSAoc25tcF9hbGFybS5jKTogUGF0Y2ggZnJvbSBqYnBuQGNhbWJyaWRnZWJyb2FkYmFuZC5jb206CgkgIC0gVGhlcmUgaXMgYSBwZWN1bGlhcml0eSBpbiB0aGUgc25tcF9hbGFybV91bnJlZ2lzdGVyIGZ1bmN0aW9uIGluCgkgICAgc25tcGxpYi9zbm1wX2FsYXJtLmMgd2hpY2ggY2FuIGNhdXNlIGEgc2VnbWVudGF0aW9uIGZhdWx0LiAoQnVnICMzNjcpCgkKMjAwMC0wOS0yOSAxMDozNCAgaGFyZGFrZXIKCgktIChzbm1wVGFyZ2V0UGFyYW1zRW50cnkuYyk6IFBhdGNoIGZyb20gSm9obiBOYXlsb246CgkgIC0gZml4IHVzZSBvZiBOVUxMIHRpbWVzdGFtcCBwb2ludGVyIGluIG5ldyByb3cgY3JlYXRpb24gKEJ1ZyAjMzQ2KQoJCjIwMDAtMDktMjggMTQ6MzggIG5iYQoKCS0gbWliX2FwaS4zOiBhZGQgYSBmZXcgZnVuY3Rpb25zIHRvIHRoZSBoZWFkZXIKCQoyMDAwLTA5LTI4IDE0OjE0ICBuYmEKCgktIHNubXB0cmFwLmM6IHJlbW92ZSBhbiBleHRyYW5lb3VzIHNubXBfZnJlZV9wZHUKCQoyMDAwLTA5LTI4IDE0OjEzICBuYmEKCgktIG1hbi86IGFkZCBtYW4gZW50cmllcyBmb3IgbWFueSBsaWJyYXJ5IGZ1bmN0aW9ucyAocG9pbnRpbmcgdG8gc25tcF9hcGkuMykKCQoyMDAwLTA5LTI4IDExOjA5ICBtc2xpZmNhawoKCXJlbW92ZSBzZWNvbmQgY29weSBvZiBzeXMvc29ja2V0LmgKCQoyMDAwLTA5LTI4IDExOjA4ICBtc2xpZmNhawoKCUZvciBidWlsZGluZyBvbiBVbHRyaXggVjQueAoJCjIwMDAtMDktMjcgMTI6NTkgIGhhcmRha2VyCgoJLSAoZGxtb2QuaCk6IGFkZCB0aGUgVUNELURMTU9ELU1JQiB0byB0aGUgZGVmYXVsdCBsb2FkIGxpc3QuCgkKMjAwMC0wOS0yNyAxMjo1NSAgaGFyZGFrZXIKCgktIChjb25maWcuaC5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuaW4sIHVjZF9zbm1wLmgsIGRsbW9kLmMpOgoJICAtIGluY2x1ZGUgdWNkLXNubXAvZGxtb2QgYnkgZGVmYXVsdC4KCSAgLSBidWlsZCBjb2RlIG9ubHkgaWYgZGxvcGVuIGlzIGZvdW5kLgoJCjIwMDAtMDktMjcgMDg6MzEgIGhhcmRha2VyCgoJLSAoYXV0b19ubGlzdC5jKTogUGF0Y2ggZnJvbSBIYXJyaWUgSGF6ZXdpbmtlbDoKCSAgLSBkb24ndCBwcmludCBrZXJuZWwgYmFzZWQgd2FybmluZyBtZXNzYWdlcyB3aGVuIC1yLCBldGMsIGlzIHNwZWNpZmllZC4KCQoyMDAwLTA5LTI2IDE2OjA3ICBoYXJkYWtlcgoKCS0gKGRpc3BsYXl0YWJsZS5wbSk6IG1pbm9yIGJ1ZyBmaXhlcy4KCQoyMDAwLTA5LTI2IDE0OjIxICBoYXJkYWtlcgoKCS0gKGRpc3BsYXl0YWJsZS5wbSwgbWFuYWdlci5wbSk6CgkgIC0gZGlzcGxhdGFibGUgc3VwcG9ydHMgLW1hcmsvLW9ubWFya2VkLgoJICAtIHVzZXIncyBvbmNhbGwgc2NoZWR1bGUgaXMgbW9kaWZpYWJsZSB2aWEgdGhlIHdlYi4KCQoyMDAwLTA5LTI2IDEzOjE3ICBtc2xpZmNhawoKCUZvciBXaW4zMiBBUEk6IERlY2xhcmUgc3RydG91bCwgdnNucHJpbnRmOyBFbmFibGUgcmV2ZXJzZSBCRVIgZW5jb2RpbmcuCgkKMjAwMC0wOS0yNiAxMzoxNSAgbXNsaWZjYWsKCglJbmNsdWRlIHN5c3RlbS5oICh2c25wcmludGYgZGVjbCkKCQoyMDAwLTA5LTI2IDEzOjE0ICBtc2xpZmNhawoKCUZpeCB1bnNpZ25lZCBjb21wYXJpc29uLgoJCjIwMDAtMDktMjYgMTM6MTQgIG1zbGlmY2FrCgoJRml4IHVuc2lnbmVkIGNvbXBhcmlzb25zLgoJCjIwMDAtMDktMjYgMTM6MTMgIG1zbGlmY2FrCgoJRml4IHNpZ25lZCBjb21wYXJpc29uOyBSZW1vdmUgdW51c2VkIHZhci4KCQoyMDAwLTA5LTI2IDEzOjEyICBtc2xpZmNhawoKCUluY2x1ZGUgZ2V0b3B0LmggKG9wdGFyZyBkZWNsKTsgUmVtb3ZlIHVudXNlZCB2YXIuCgkKMjAwMC0wOS0yNiAxMzoxMSAgbXNsaWZjYWsKCglNYXRjaCBJbml0aWFsaXNlX1RhYmxlIGFyZ3MgMyw0IGRlY2xhcmF0aW9ucyB3aXRoIGRlZmluaXRpb25zLgoJCjIwMDAtMDktMjYgMTI6NTggIGhhcmRha2VyCgoJLSAoaW50ZXJmYWNlcy5jKTogbWFrZSB0aGUgYWRtaW5zdGF0dXMgUk9OTFkuCgkKMjAwMC0wOS0yNiAxMDoyMSAgaGFyZGFrZXIKCgktIChtaWIyYyk6IGNob21wKCQxKSBpcyBpbGxlZ2FsLgoJCjIwMDAtMDktMjYgMDM6MDQgIG1zbGlmY2FrCgoJRXhwbGljaXRseSBidWlsZCBwYXRoIHRvIENBQ0hFRklMRSwgYXMgbm90IGFsbCBDIGNvbXBpbGVycyBzdXBwb3J0ICIjIyIuCgkKMjAwMC0wOS0yNSAxNzo0OSAgaGFyZGFrZXIKCgktIChkaXNwbGF5dGFibGUucG0pOiBXZXMgYWN0dWFsbHkgZG9jdW1lbnRlZCBzb21ldGhpbmc/ICB5b3UgbXVzdCBiZSBraWRkaW5nIQoJCjIwMDAtMDktMjUgMTY6NTYgIG1zbGlmY2FrCgoJY2hkaXIganVzdCBiZWZvcmUgc2VuZGluZyBjb2xkc3RhcnQgdHJhcCwgdG8gYWxsb3cgZm9yIHBhdGhzIHRvIGJlCglyZXNvbHZlZC4KCQoyMDAwLTA5LTI1IDE1OjA4ICBoYXJkYWtlcgoKCS0gKGRpc3BsYXl0YWJsZS5wbSk6IG1pbm9yIGdyYXBoaW5nIGNoYW5nZXMKCQoyMDAwLTA5LTI1IDA5OjM1ICBtc2xpZmNhawoKCWNhc2UgaW5zZW5zaXRpdmUgdG9rZW4gc2VhcmNoICh1c2Ugc3RyY2FzZWNtcCkuCgkKMjAwMC0wOS0yMiAwNjowMyAgbmJhCgoJIC1taWJzLzogTUlCIHVwZGF0ZXMKCQoyMDAwLTA5LTIyIDA1OjU1ICBuYmEKCgktIG1pYnMvOiBNSUIgdXBkYXRlcwoJCjIwMDAtMDktMjIgMDU6NTIgIG5iYQoKCS0gc25tcF9hcGkuYzogc3VwcG9ydCBzZXR0aW5nIG9mIEJJVFMgdmFyaWFibGVzCgkKMjAwMC0wOS0yMiAwNTo1MCAgbmJhCgoJLSBzbm1wc3RhdHVzLmM6IHNob3cgZXJyb3Igb2JqZWN0CgkKMjAwMC0wOS0yMiAwNDoyOSAgbmJhCgoJLSBzbm1wdXNtLmM6IGlzc3VlIGVycm9yIG1lc3NhZ2Ugd2l0aCBvYmplY3QKCQoyMDAwLTA5LTIyIDA0OjI4ICBuYmEKCgktIHN5c3RlbS5oOiBwcm92aWRlIHByb3RvdHlwZXMgZm9yIHN0cnRvbCwgc3RydG91bCwgc25wcmludGYsIHZzbnByaW50ZgoJCjIwMDAtMDktMjIgMDQ6MjcgIG5iYQoKCS0gdmFjbV92YXJzLmM6IHByb3RlY3QgYWdhaW5zdCBvdmVycnVuIG9mIHN0cmluZ3MKCQoyMDAwLTA5LTIxIDE2OjE3ICBuYmEKCgktIGFwcHMvOiBkaXNwbGF5IGZhaWxlZCBvYmplY3Qgd2hlbiBvbmUgaXMgaWRlbnRpZmllZCBieSBwZHUtPmVycmluZGV4CgkKMjAwMC0wOS0yMSAxNTo1OSAgaGFyZGFrZXIKCgktIChNYWtlZmlsZS5pbiwgc25tcGRmLjEpOiBkb2N1bWVudCB0aGUgc25tcGRmIGNvbW1hbmQuCgkKMjAwMC0wOS0yMSAxNTo1MCAgbmJhCgoJLSBzbm1wdGFibGU6IHVzZSBHRVRCVUxLIHRvIGNvbGxlY3QgZGF0YSB3aGVuIHByb3RvY29sIGFsbG93cyBpdC4gQWRkCgkJLUNCIG9wdGlvbnMgdG8gZmFsbCBiYWNrIHRvIEdFVE5FWFQuCgkKMjAwMC0wOS0yMSAxNTozOCAgbmJhCgoJLSBtaWIuYzogcmV3cml0ZSBpbmRleCBoYW5kbGluZyBpbiBvYmplY3QgaWRzLCB0byBhbGxvdyBzeW1ib2xpYyBlbnVtcy4KCQlBZGQgRGF2ZXMgc3VnZ2VzdGVkIC1PdiBvdXRwdXQuIEFsc28gZW5oYWNlIC1UZCBvdXRwdXQgdG8KCQlkZXN0aW5ndWlzaCBPQkpFQ1QtVFlQRSBmcm9tIFRSQVAtVFlQRSwgTU9EVUxFLUlERU5USVRZIGV0Yy4KCQoyMDAwLTA5LTIxIDE1OjMxICBoYXJkYWtlcgoKCS0gKHNubXBkZi5jKTogdXNlIHRoZSBVQ0QtU05NUC1NSUIncyBkc2tUYWJsZSBpZiB0aGUKCSAgSE9TVC1SRVNPVVJDRVMtTUlCIGlzIGVtcHR5IG9yIGlmIC1DdSBpcyBzcGVjaWZpZWQgb24gdGhlIGNvbW1hbmQgbGluZS4KCQoyMDAwLTA5LTIxIDE1OjI4ICBuYmEKCgktIHBhcnNlLmM6IGFkZCBhYmlsaXR5IHRvIGNvbGxlY3QgVkFSSUFCTEVTL09CSkVDVFMgZm9yIFRSQVAtVFlQRQoJCWFuZCBOT1RJRklDQVRJT04tVFlQRS4gSWdub3JlIGZpbGVzIHRoYXQgZG9lcyBub3QgaGF2ZSBERUZJTklUSU9OUwoJCWFzIHRoZWlyIHNlY29uZCB0b2tlbi4gRW5oYW5jZSAtVGQgb3V0cHV0IGFjY29yZGluZ2x5LgoJCjIwMDAtMDktMjEgMTU6MjIgIG5iYQoKCS0gc25tcGxpYjogYWRkIHNucHJpbnRmLCBzdHJ0b2wsIHN0cnRvdWwgZm9yIHN5c3RlbXMgdGhhdCBkb24ndCBoYXZlIHRoZW0KCQoyMDAwLTA5LTIxIDE1OjEwICBoYXJkYWtlcgoKCS0gKG1pYi5oKTogYWRkIGZha2Ugc3RydWN0IGRlZmluaXRpb24gZm9yIGVudW1zCgkKMjAwMC0wOS0yMSAxNDoxNiAgbmJhCgoJZmlsZSBzdHJ0b3VsLmMgd2FzIGluaXRpYWxseSBhZGRlZCBvbiBicmFuY2ggVjQtMS0xLXBhdGNoZXMuCgkKMjAwMC0wOS0yMSAxNDoxNiAgbmJhCgoJZmlsZSBzdHJ0b2wuYyB3YXMgaW5pdGlhbGx5IGFkZGVkIG9uIGJyYW5jaCBWNC0xLTEtcGF0Y2hlcy4KCQoyMDAwLTA5LTIxIDE0OjE2ICBuYmEKCglmaWxlIHNucHJpbnRmLmMgd2FzIGluaXRpYWxseSBhZGRlZCBvbiBicmFuY2ggVjQtMS0xLXBhdGNoZXMuCgkKMjAwMC0wOS0yMSAwNjoxNiAgaGFyZGFrZXIKCgktIChtaWIuYywgbWliLmgpOiBtYWtlIHNwcmludCogbm9uLXN0YXRpYyAoYnVnICMxMzIpLgoJCjIwMDAtMDktMjEgMDA6MjUgIGhhcmRha2VyCgoJLSAoc25tcF9hbGFybS5jKTogUGF0Y2ggZnJvbSBKb2huIE5heWxvbjoKCSAgLSBmaXggYnVnICMzNjAgd2hlcmUgYSBjbGllbnQgbWlnaHQgcmVtb3ZlIGEgYWxhcm0gcmVnaXN0cmF0aW9uCgkgICAgZHVyaW5nIGEgY2FsbCB0byB0aGUgYWxhcm0gZnVuY3Rpb24gYW5kIGludmFsaWRhdGUgdGhlIHBvaW50ZXIKCSAgICBiZWluZyB1c2VkIGJ5IHRoZSBjYWxsaW5nIGZ1bmN0aW9uLgoJCjIwMDAtMDktMjEgMDA6MjIgIGhhcmRha2VyCgoJLSAoY29uZmlndXJlLCBjb25maWd1cmUuaW4pOiAtLWRpc2FibGUtc2hhcmVkIGJ5IGRlZmF1bHQgaW4gY3ZzIGNoZWNrb3V0cy4KCQoyMDAwLTA5LTIwIDE3OjMxICBoYXJkYWtlcgoKCS0gKHNubXBjb25mKTogc3BhY2UgaW5kZW50IHRva2VucyBpZiAjIHByZXBlbmRlZC4KCQoyMDAwLTA5LTIwIDE3OjMwICBoYXJkYWtlcgoKCS0gKHNubXBUYXJnZXRBZGRyRW50cnkuYywgc25tcFRhcmdldFBhcmFtc0VudHJ5LmMpOiBudWxsIGludGVybmFsIGhlbHAgbGluZXMuCgkKMjAwMC0wOS0yMCAxNzoyOSAgaGFyZGFrZXIKCgktIChNYWtlZmlsZS5pbiwgbW9uaXRvcik6IGRpc2ssIHByb2MsIGFuZCBsb2FkIGNoZWNrcy4KCQoyMDAwLTA5LTIwIDE3OjI4ICBoYXJkYWtlcgoKCS0gKGF1dGhvcHRzKTogZml4IHZhbGlkIGFuc3dlcnMgZm9yIGF1dGggYW5kIHByaXYgdHlwZXMuCgkKMjAwMC0wOS0yMCAxNzoyNyAgaGFyZGFrZXIKCgktICh2YWNtX3ZhcnMuYywgdXNtVXNlci5jLCBzbm1wdjMuYyk6IE5VTEwgb3V0IGhlbHAgbWVzc2FnZXMgZm9yIC5jb25mCgkgIHRva2VucyB0aGF0IGFyZSBlaXRoZXIgaW50ZXJuYWwgb3Igbm8gbG9uZ2VyIHRoZSBzdGFuZGFyZCB3YXkgb2YKCSAgZG9pbmcgdGhpbmdzLgoJCjIwMDAtMDktMjAgMTc6MjYgIGhhcmRha2VyCgoJLSAoY29uZmlndXJlLCBjb25maWd1cmUuaW4pOiBleHBvcnQgU05NUENPTkZQQVRIIHRvIE1ha2VmaWxlcwoJCjIwMDAtMDktMjAgMTc6MjUgIGhhcmRha2VyCgoJLSAoRVhBTVBMRS5jb25mLmRlZik6IG1pbm9yIGNvcnJlY3Rpb24gb2YgdGFibGUgbmFtZS4gIE1vcmUgZXJyb3JzIGV4aXN0LgoJCjIwMDAtMDktMjAgMTY6NDYgIGhhcmRha2VyCgoJLSAoTWFrZWZpbGUuaW4sIGRlYnVnZ2luZywgbWlicywgb3V0cHV0KTogbW9yZSBzbm1wLmNvbmYgc25tcGNvbmYgY29uZmlnIGZpbGVzLgoJCjIwMDAtMDktMjAgMTU6MTcgIGhhcmRha2VyCgoJLSAoTWFrZWZpbGUuaW4sIGF1dGhvcHRzKTogc25tcC5jb25mIHN1cHBvcnQgZm9yIGJhc2ljIGF1dGhlbnRpY2F0aW9uIG9wdGlvbnMuCgkKMjAwMC0wOS0yMCAxNDo1NSAgaGFyZGFrZXIKCgktIChzbm1wY29uZik6CgkgLSBkb24ndCBmb3JjZSByZWFkaW5nIG9mIC91c3IvbG9jYWwvc2hhcmUvc25tcGQuY29uZi4KCSAtIGRvbid0IHByaW50IHVua25vd24gZGlyZWN0aXZlIGNvbW1lbnQgaGVhZGVycyBpZiB0aGVyZSBhcmVuJ3QgYW55LgoJCjIwMDAtMDktMjAgMTQ6NDUgIGhhcmRha2VyCgoJLSAoc25tcGNvbmYpOiBzcGFjZSB0aGluZ3Mgb3V0IG9uIHRoZSBzY3JlZW4gYSBiaXQgYmV0dGVyLgoJCjIwMDAtMDktMjAgMTQ6NDQgIGhhcmRha2VyCgoJLSAodHJhcHNpbmtzKTogYWRkIHBvcnQgbnVtYmVyIG9wdGlvbiB0byB0cmFwc2luayBkaXJlY3RpdmVzLgoJCjIwMDAtMDktMjAgMTQ6MzUgIGhhcmRha2VyCgoJLSAoTWFrZWZpbGUuaW4sIHNubXBjb25mKTogaW5zdGFsbCBzbm1wY29uZiBhbmQgaXRzIHZhcmlvdXMgc3VwcG9ydCBmaWxlcy4KCQoyMDAwLTA5LTIwIDE0OjIwICBoYXJkYWtlcgoKCS0gKHNubXBfYXBpLmMsIHNubXBfYXBpLmgpOiBkbyByZXZlcnNlIHYzIGhlYWRlciBlbmNvZGluZyB3aXRoIGEgc3RhdGljIGJ1ZmZlci4KCQoyMDAwLTA5LTIwIDExOjM3ICBoYXJkYWtlcgoKCS0gKHNubXBjb25mKTogbWlzYyB1cGRhdGVzIGFuZCBpbXByb3ZlbWVudHMuCgkKMjAwMC0wOS0yMCAwODo1NCAgaGFyZGFrZXIKCgktIChzbm1wX2FwaS5jKTogRml4IGR5bmFtaWMgYXJyYXkgIHByb2JsZW0gcG9pbnRlZCBvdXQgYnkgSm9jaGVuIEttaWV0c2NoLgoJCjIwMDAtMDktMjAgMDI6MDUgIGRhdmVzCgoJLSAoYWdlbnR4L3Byb3RvY29sLmMpOiBEb24ndCBpbmNsdWRlIGNvbnRleHQgc3RyaW5ncyBvbiBQRFVzIHRoYXQgc2hvdWxkbid0IGhhdmUgdGhlbQoJCShUaGFua3MgdG8gUGVkcm8gUGVyZWlyYSBmb3IgaWRlbnRpZnlpbmcgdGhpcykKCQoyMDAwLTA5LTE5IDE3OjA3ICBoYXJkYWtlcgoKCS0gKGFjbCwgc3lzdGVtLCB0cmFwc2lua3MpOiBpbml0aWFsIHNubXBjb25mIGRlc2NyaXB0aW9uIGZpbGVzLgoJCjIwMDAtMDktMTkgMTc6MDYgIGhhcmRha2VyCgoJLSAoc25tcGNvbmYpOiByZWFkIG9sZGVyIGNvbmZpZ3VyYXRpb24gZmlsZXMgaW4gYW5kIG1lcmdlIHdpdGggbmV3IHJlc3VsdHMuCgkKMjAwMC0wOS0xOSAxNDo0MCAgaGFyZGFrZXIKCgktIChzbm1wX2FwaS5jKTogcHJpbnQgcGR1IHR5cGUgb24gZGVidWdnaW5nIGR1bXAgb3V0cHV0LgoJCjIwMDAtMDktMTkgMTQ6MTUgIGhhcmRha2VyCgoJLSAoYXNuMS5jLCBzbm1wLmMpOiByZXZlcnNlIGVuY29kaW5nIHN1cHBvcnQgZm9yIHNwZWNpYWxpemVkIG9wYXF1ZQoJICBkYXRhdHlwZXMgKGZsb2F0LCBkb3VibGUsIGV0YykuCgkKMjAwMC0wOS0xOSAxNDoxNSAgaGFyZGFrZXIKCgktIChhY2xvY2FsLm00KTogZG9jdW1lbnQgbWFjcm9zIGEgYml0IG1vcmUgZm9yIHN1Ym1pc3Npb24gdG8gdGhlCgkgIGF1dG9jb25mIG1hY3JvIGxpYnJhcnkuCgkKMjAwMC0wOS0xOSAwODozMCAgbXNsaWZjYWsKCglGaXggYnVnICMyOTUgcmVwb3J0ZWQgYnkgSm9obiBXaGl0bmV5IGpvaG53QGFpaW5ldC5jb20KCQoyMDAwLTA5LTE4IDE0OjU5ICBoYXJkYWtlcgoKCS0gKHNubXBfdmFycy5oLCBzbm1wZC5oKTogUGF0Y2ggZnJvbSBIYXJyaWUgSGF6ZXdpbmtlbDoKCSAgLSBtb3ZlIGdldFN0YXRQdHIgZGVmaW5pdGlvbiB0byBwcm9wZXIgLmggZmlsZS4KCQoyMDAwLTA5LTE4IDE0OjU1ICBtc2xpZmNhawoKCUZpeCBidWcgIzM0NyByZXBvcnRlZCBieSBkYXNfZGVuaXpAeWFob28uY29tOiBtYWtlIHNiaW4gaW5zdGFsbCBkaXIKCQoyMDAwLTA5LTE0IDA5OjA1ICBoYXJkYWtlcgoKCS0gKGFnZW50X3JlYWRfY29uZmlnLmMsIHNubXBkLmNvbmYuNS5kZWYpOiBQYXRjaCBmcm9tIEhhcnJpZSBIYXpld2lua2VsOgoJICAtIGFkZCBhIHBvcnQgc3BlY2lmaWNhdGlvbiBzbm1wZC5jb25mIHRva2VuLgoJCjIwMDAtMDktMTQgMDg6NTIgIGhhcmRha2VyCgoJLSAoYWdlbnRfdHJhcC5jKTogaWdub3JlIG91dHB1dCBvZiBnZXRob3N0YnluYW1lIGZvciB0cmFwIHNlc3Npb24gYWRkaW5nLgoJCjIwMDAtMDktMTMgMTU6MDYgIGhhcmRha2VyCgoJLSAoc25tcGNvbmYpOiBuZXcgdXRpbGl0eSB0byBnZW5lcmF0ZSAuY29uZiBmaWxlcyBieSBwcm9tcHRpbmcgdGhlCgkgIHVzZXIgd2l0aCBxdWVzdGlvbnMuCgkKMjAwMC0wOS0wOCAxMzowNyAgaGFyZGFrZXIKCgktIChwcm94eS5jKTogUGF0Y2ggZnJvbSBTY290dCBMaXBjb246CgkgIC0gZml4IHByb3h5IHN1cHBvcnQgZm9yIG51bGwgbGVuZ3RoIHN0cmluZ3MuCgkKMjAwMC0wOS0wNyAxMDoxMiAgaGFyZGFrZXIKCgktIChjb25maWcuaC5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuaW4pOgoJIC0gZml4IG9wZW5zc2wgY2hlY2tzLgoJIC0gcnVuIGF1dG9oZWFkZXIuCgkKMjAwMC0wOS0wNSAxMzozNSAgbXNsaWZjYWsKCglNaW5vciB0b3VjaHVwcyB0byBidWlsZCBvbiBXaW4zMiBwbGF0Zm9ybS4KCQoyMDAwLTA5LTA1IDEzOjM0ICBtc2xpZmNhawoKCVdlbGNvbWUgdGhlIG5ld2VzdCB1Y2Qtc25tcCBhcHBsaWNhdGlvbnMgdG8gdGhlIFdpbjMyIGJ1aWxkcy4KCQoyMDAwLTA5LTA0IDE1OjE5ICBuYmEKCgktIHJlYWRfY29uZmlnLmM6IHJlc3RhcnQgZXJyb3Jjb3VudCB3aGVuIHJlbG9hZGluZyBjb25maWcKCQoyMDAwLTA5LTA0IDE1OjEyICBuYmEKCgktIHNubXBuZXRzdGF0LjE6IGFsaWduIG1hbiBwYWdlIHdpdGggcHJvZ3JhbQoJCjIwMDAtMDktMDQgMTU6MTAgIG5iYQoKCS0gaXBBZGRyLmM6IHJlbW92ZSBhIGJhZCBudG9obCBmb3IgT3BlbkJTRAoJCjIwMDAtMDktMDQgMTU6MDkgIG5iYQoKCS0gbWliaW5jbC5oLCB7dGMsdWR9cHssVGFibGV9LmM6IGVuc3VyZSBqdXN0IG9uZSBpbmNsdWRlIG9mIHNvY2tldC5oCgkJdG8gbWFrZSB1bnByb3RlY3RlZCBpbmNsdWRlIGZpbGUgaW4gVWx0cml4IGhhcHB5CgkKMjAwMC0wOS0wNCAxNTowNSAgbmJhCgoJLSBjb25maWd1cmUuaW46IG1ha2UgLS13aXRob3V0LWxpYndyYXAgd29yawoJCjIwMDAtMDktMDEgMTU6MTQgIGhhcmRha2VyCgoJLSAodm1zdGF0X3NvbGFyaXMyLmMsIHZtc3RhdF9zb2xhcmlzMi5oKTogUGF0Y2ggZnJvbSBKb2NoZW4gS21pZXRzY2g6CgkgIC0gdXBkYXRlZCBjb2RlLgoJCjIwMDAtMDktMDEgMTE6NTQgIGhhcmRha2VyCgoJLSAoc25tcHRyYXBkLmMpOiBTY290dCBMaXBjb24gbm90ZWQgdGhhdCBzbm1wdHJhcGQgZG9lc24ndCBzdXBwb3J0IC1ULgoJCjIwMDAtMDgtMzAgMTM6MjggIG5iYQoKCS0gcGFyc2UuYzogZml4IGxvb3AgaW4gc3ludGF4IGVycm9yIGluIERFRlZBTCBjbGF1c2UuIEFsc28gZml4IHJlYWRpbmcKCQlvZiAuaW5kZXggZmlsZSB3aXRoIGZpbGVuYW1lcyBjb250YWluaW5nIGJsYW5rcy4KCQoyMDAwLTA4LTI4IDEzOjQzICBtYXJ6CgoJbWlub3Igc3ludGF4IGdsaXRjaCBpbiBQT0QgZG9jcwoJCjIwMDAtMDgtMjQgMDE6NTUgIGRhdmVzCgoJLSAoYXBwcy9zbm1wdGFibGUuYyk6IEZpeCBidWcgd2l0aCBkaXNwbGF5aW5nIGhlYWRlci1sZXNzIGluZGV4ZWQgdGFibGVzCgkJKFRoYW5rcyB0byBFcm5pZSBNaWxsZXIpCgkKMjAwMC0wOC0xOSAxMToyOSAgbXNsaWZjYWsKCglBcHBseSBwYXRjaCBmcm9tIDxDaHJpc3RvcGguTWFtbWl0enNjaEB0dS1jbGF1c3RoYWwuZGU+Cgl0byBmaXggc2lnbiBpbiBhc25fcmJ1aWxkX3Vuc2lnbmVkX2ludCAuCgkKMjAwMC0wOC0xOCAwNDoxOCAgbXNsaWZjYWsKCglyZXN0b3JlIHByZXZpb3VzIHZlcnNpb247IG9wZW5ic2QsIHNvbGFyaXMsIGxpbnV4IGJ1aWxkIG9rLgoJCjIwMDAtMDgtMTggMDM6NDQgIG1zbGlmY2FrCgoJcmVtb3ZlIHVudXNlZCBwcmludGYgYXJndW1lbnQgcGFzc2VkIHRvIHNubXBfbG9nLgoJCjIwMDAtMDgtMTggMDM6MjAgIG1zbGlmY2FrCgoJZml4IGJ1ZyAyNTMgd2l0aCBwYXRjaCBzdXBwbGllZCBieSBKZWZmcmV5IEhvbmlnIDxqY2hAYnNkaS5jb20+CgkKMjAwMC0wOC0xOCAwMjo1MiAgbXNsaWZjYWsKCglmaXggYnVnIDMxOCAtIHRlc3QgOSBhbmQgMTAgZXhwbGljaXRseSBjcmVhdGUgdGhlIHRlc3QgdXNlci4KCQoyMDAwLTA4LTE3IDEzOjQyICBtc2xpZmNhawoKCVRoZSBiYXR0bGUgdG8gdHJpbSBuZXdsaW5lcyBjb3JyZWN0bHkgY29udGludWVzLi4ucmVkdWNlIGxlbmd0aCBieSBvbmUuCgkKMjAwMC0wOC0xNiAxNTowNCAgaGFyZGFrZXIKCgktIChzbm1wX2FwaS5jLCBzbm1wdXNtLmMpOiBmaXggdmFyaW91cyBlbmNyeXB0aW9uL2RlY3J5cHRpb24gcHJvYmxlbXMuCgkKMjAwMC0wOC0xNiAxNTowMyAgaGFyZGFrZXIKCgktIChzY2FwaS5jKTogZml4IHBhZGRpbmcgc2l6ZSBpbiBlbmNyeXB0aW9uLgoJCjIwMDAtMDgtMTYgMTQ6NDggIGhhcmRha2VyCgoJLSAoc2NhcGkuYyk6IHNldCBwbGFpbnRleHQgbGVuZ3RoIGF0IHRoZSBlbmQgb2Ygc2NfZGVjcnlwdC4KCQoyMDAwLTA4LTE1IDA1OjA4ICBtc2xpZmNhawoKCUZpeCBidWcgMjg0IHdpdGggYSBzaG9ydCBleHBsYW5hdGlvbiBhYm91dCBzbm1wLmNvbmYuCgkKMjAwMC0wOC0xNSAwMzowMCAgbXNsaWZjYWsKCglGaXggYnVnIDI4MyAtIHVtYXNrIDAyMiwgbWFrZSBpbnN0YWxsLiBUaGFua3MgdG8gY3NhYmEudG90aEBzemsuYmtlLmh1CgkKMjAwMC0wOC0xNSAwMDowOSAgbmJhCgoJLSBzbm1wdGVzdC5jOiBvdmVyaGF1bCBpbnB1dF92YXJpYWJsZSwga2lsbCBuZXdsaW5lCgkKMjAwMC0wOC0xNCAyMjowNSAgbmJhCgoJLSBhY2xvY2FsLm00LCBjb25maWd1cmUuaW46IGZpeGVzIGZvciBjb25maWd1cmUgLS1zaWxlbnQKCQoyMDAwLTA4LTE0IDE3OjI3ICBoYXJkYWtlcgoKCS0gKE1ha2VmaWxlLnRvcCwgY29uZmlndXJlLCBjb25maWd1cmUuaW4pOgoJICAtIC0tZW5hYmxlLXNpbGVudC1saWJ0b29sIHRvIG1ha2UgTmllbHMgc21pbGUuCgkKMjAwMC0wOC0xNCAxNzoxNyAgaGFyZGFrZXIKCgktIChzbm1wdjMuYywgc25tcHYzLmgpOiBpbXBsZW1lbnQgYSBuZXcgKGRlZmF1bHQpIGVuZ2luZUlEIHR5cGUgYmFzZWQKCSAgb24gYSByYW5kb20gbnVtYmVyLCBhbmQgYSB0aW1lc3RhbXAuCgkgIC0gSSB0aGluayBpdCB3b24ndCBpbnZhbGlkYXRlIGV4aXN0aW5nIGluc3RhbGxhdGlvbnMgKGhlaCkuCgkKMjAwMC0wOC0xNCAxNjo0NyAgaGFyZGFrZXIKCgktIChyZWFkX2NvbmZpZy5jKToKCSAgLSBpZiAtRHJlYWRfY29uZmlnLCB0aGVuIHByaW50IGV2ZW4gbm8taGVscCB0b2tlbnMgYW5kIGEgKiBmb3IgUFJFTUlCIG9uZXMuCgkKMjAwMC0wOC0xNCAxNDo1MSAgbmJhCgoJLSAobWFueSk6IHBvcnRhYmlsaXR5IGZpeGVzIGZvciBPcGVuQlNEIDIuNiwgRnJlZUJTRCA0LjEsIFVsdHJpeCA0LjUKCQoyMDAwLTA4LTE0IDExOjMzICBoYXJkYWtlcgoKCS0gKGtleXRvb2xzLmMpOiBQYXRjaCBmcm9tIFlpZ2FsIEhvY2hiZXJnOgoJICAtIHJlbW92ZSB1bnVzZWQgY29udGV4dCB2YXJpYWJsZXMuCgkKMjAwMC0wOC0xNCAxMToyOSAgaGFyZGFrZXIKCgktIChzY2FwaS5jKTogUGF0Y2ggZnJvbSBZaWdhbCBIb2NoYmVyZzoKCSAgLSByZW1vdmUgZHVwbGljYXRlIGtleWxlbmd0aCBjaGVjay4KCQoyMDAwLTA4LTExIDEzOjA5ICBoYXJkYWtlcgoKCS0gKHNubXBfYXBpLmMpOiBvcHRpbWl6ZSByZXZlcnNlIGVuY29kaW5nIG9mIHZhcmJpbmRsaXN0cy4KCQoyMDAwLTA4LTExIDA4OjU1ICBoYXJkYWtlcgoKCS0gKFJFQURNRS5taWIyYyk6IFBhdGNoIGZyb20gSmFuIEFsZnJlZCBTYW5kdmVuOgoJICAtIHR5cG9zLgoJCjIwMDAtMDgtMTEgMDY6MDUgIG5iYQoKCS0gYXBwcy8qOiBzbm1wYXBwIC1WIHNob3VsZCBub3QgZ2l2ZSB0aGUgdXNhZ2UgbWVzc2FnZSB0b28uCgkKMjAwMC0wOC0xMSAwMDo0NCAgbmJhCgoJLSBzbm1wdHJhcGQuODogZml4IHR5cG8uIFRoYW5rcyB0byBHLiBBbGxlbiBNb3JyaXMgSUlJIDxnYW0zQGFjbS5vcmc+CgkKMjAwMC0wOC0xMCAyMzoyMyAgbmJhCgoJLSBwYXJzZS5jOiBwcmVkZWZpbmUgT2JqZWN0U3ludGF4LCBBcHBsaWNhdGlvblN5bnRheCwgU2ltcGxlU3ludGF4IGFuZAoJCU9iamVjdE5hbWUKCQoyMDAwLTA4LTEwIDE2OjIwICBoYXJkYWtlcgoKCS0gKE1ha2VmaWxlLmluLCBtaWIyYyk6CgkgIC0gbWFrZSBtaWIyYyBsb29rIGluICQoc25tcGxpYmRpcikgZm9yIC5jb25mIGZpbGVzLgoJICAtIGluc3RhbGwgbWliMmMgYW5kIC5jb25mIGZpbGVzLgoJCjIwMDAtMDgtMTAgMTQ6MzMgIGhhcmRha2VyCgoJLSAoZGVmYXVsdF9zdG9yZS5oLCBzbm1wX2FwaS5jKTogZHluYW1pY2FsbHkgZGVjaWRlIHRvIHJldmVyc2UvZm9yd2FyZCBlbmNvZGUuCgkKMjAwMC0wOC0xMCAxNDozMSAgaGFyZGFrZXIKCgktIChleHRlbnNpYmxlLmMpOiBmaXggQ1IgdGVybWluYXRpb24uCgkKMjAwMC0wOC0xMCAxNDoyNSAgaGFyZGFrZXIKCgktIChhY2NvbmZpZy5oLCBjb25maWcuaC5pbik6IGRlZmluZSByZXZlcnNlIGVuY29kaW5nIG9uIGJ5IGRlZmF1bHQuCgkKMjAwMC0wOC0xMCAxMzowMiAgbXNsaWZjYWsKCglmaXggYnVnIDI1MiBmb3IgY29uZmlndXJlIGFuZCBzeXMvc29ja2V0Lmggb24gQlNEL09TIDQuMgoJCjIwMDAtMDgtMTAgMDk6MDcgIGhhcmRha2VyCgoJLSAoYXNuMS5jLCBhc24xLmgsIHNubXAuYywgc25tcC5oLCBzbm1wX2FwaS5jLCBzbm1wX2FwaS5oLCBzbm1wdXNtLmMsCgkgIHNubXB1c20uaCwgc25tcHYzLmMpOgoJICAtIGltcGxlbWVudCByZXZlcnNlIGVuY29kZWQgbWVzc2FnZXMuCgkgICAgLSBUT0RPOiBjbGVhbiB1cCwgcnVuLXRpbWUgZGV0ZXJtaW5hdGlvbiBvZiB3ZWF0aGVyIHRvIHVzZSBpdCBvciBub3QuCgkKMjAwMC0wOC0wOSAxNTo0MCAgbXNsaWZjYWsKCglGaXggYnVnIDMzMSB3aXRoIHBhdGNoIGluIHBhcnQgcHJvdmlkZWQgYnkgSm9obiBOYXlsb24gPGpicG5AY2FtYnJpZGdlYnJvYWRiYW5kLmNvbT4KCQoyMDAwLTA4LTA5IDE1OjI3ICBtc2xpZmNhawoKCW5vIC8vIGNvbW1lbnQsIGluIGRlZmVyZW5jZSB0byBub24tQU5TSS1DIGNvbXBpbGVycy4KCQoyMDAwLTA4LTA5IDA3OjIxICBuYmEKCgktIGhyX3N3cnVuLmM6IGZpeCB0aGUgUnVuUGF0aCBmb3Igc3dhcHBlZCBvdXQgTGludXggcHJvY2VzcwoJCjIwMDAtMDgtMDkgMDc6MjEgIG5iYQoKCS0gaHJfcHJpbnQuYzogZml4IGEgZGVidWcgdG9rZW4KCQoyMDAwLTA4LTA5IDA0OjQ0ICBuYmEKCgktIG1haW4uYzogZml4IHBhcnNpbmcgb2YgLXYKCQoyMDAwLTA4LTA5IDAxOjEzICBkYXZlcwoKCS0gKG1pYkpKL2lwUm91dGUuaCk6IE9taXQgcm91dGVfd3JpdGUgZm9yIG5vdwoJCjIwMDAtMDgtMDkgMDA6NTggIGRhdmVzCgoJLSAobWliSkovKik6IEV4cGVyaW1lbnRhbCByZS13cml0ZSBvZiBtaWJJSQoJCShQaWxvdCBlcnJvciB3aGVuIHRyeWluZyB0byBjb21taXQgdGhlIGNoYW5nZXMgZWFybGllciAtIHNvcnJ5ISkKCQoyMDAwLTA4LTA4IDEwOjA2ICBoYXJkYWtlcgoKCS0gKGV4dGVuc2libGUuYyk6IHN0cmlwIG5ld2xpbmVzLgoJCjIwMDAtMDgtMDggMDg6NTEgIGhhcmRha2VyCgoJLSAoc25tcF9wYXJzZV9hcmdzLmMpOiBQYXRjaCBmcm9tIFNjb3R0IExpcGNvbjogc3RhcnQgb3B0aW5kIGF0IDEgbm90IDAuCgkgIC0KCQoyMDAwLTA4LTA4IDA2OjM2ICBtc2xpZmNhawoKCUZpeCBidWcgIzI5NSAoZnJlZSAqc2VjU3RhdGVSZWYgYmVmb3JlIGFsbG9jYXRpbmcgYW5vdGhlciBvbmUpLgoJCjIwMDAtMDgtMDggMDY6MDUgIG1zbGlmY2FrCgoJZml4IGJ1ZyAjMjk4IHJlcG9ydGVkIGFuZCBwYXRjaCBzdXBwbGllZCBieSBDb25yYWQgTGluayA8Y2xpbmtAbWwuY29tPgoJCjIwMDAtMDgtMDggMDQ6NTkgIG5iYQoKCS0gc25tcF9hcGkuYzogZml4IGEgYnVzeSBsb29wIHdoZW4gYWxhcm0gcXVldWUgaXMgYWN0aXZlIHdpdGhvdXQgYW55CgkJb3V0c3RhbmRpbmcgcmVxdWVzdHMKCQoyMDAwLTA4LTA4IDA0OjQ3ICBuYmEKCgktIHNubXBzZXQuMTogY2Fubm90IHNldCBjb3VudGVycwoJCjIwMDAtMDgtMDggMDQ6NDIgIG1zbGlmY2FrCgoJRml4ZWQgKEJVRyMzMzIpIHVzaW5nIHBhdGNoIHN1Ym1pdHRlZCBieSBKb2huIE5heWxvbiA8amJwbkBjYW1icmlkZ2Vicm9hZGJhbmQuY29tPgoJQWxzbyBjb25zb2xpZGF0ZWQgY29tbWVudHMgYWJvdXQgdGhlIGZvdXIgc2VuZCBQRFUgZnVuY3Rpb25zLgoJCjIwMDAtMDgtMDcgMDY6NTkgIG1zbGlmY2FrCgoJRml4IGxlYWsgaW4gcmVwb3J0YWJsZSBlcnJvcnMgZm91bmQgYnkgSm9obiBOYXlsb24gPGpicG5AY2FtYnJpZGdlYnJvYWRiYW5kLmNvbT4KCQoyMDAwLTA4LTA3IDA1OjQ4ICBuYmEKCglmaWxlIGFkZF9tb2R1bGVfcmVwbGFjZW1lbnQuMyB3YXMgaW5pdGlhbGx5IGFkZGVkIG9uIGJyYW5jaCBWNC0xLTEtcGF0Y2hlcy4KCQoyMDAwLTA4LTA3IDA1OjQ4ICBuYmEKCglmaWxlIHJlYWRfb2JqaWQuMyB3YXMgaW5pdGlhbGx5IGFkZGVkIG9uIGJyYW5jaCBWNC0xLTEtcGF0Y2hlcy4KCQoyMDAwLTA4LTA3IDAyOjQ5ICBuYmEKCglmaWxlIHNubXBfc2V0X3NhdmVfZGVzY3JpcHRpb25zLjMgd2FzIGluaXRpYWxseSBhZGRlZCBvbiBicmFuY2ggVjQtMS0xLXBhdGNoZXMuCgkKMjAwMC0wOC0wNyAwMjo0OSAgbmJhCgoJZmlsZSBzbm1wX3NldF9taWJfd2FybmluZ3MuMyB3YXMgaW5pdGlhbGx5IGFkZGVkIG9uIGJyYW5jaCBWNC0xLTEtcGF0Y2hlcy4KCQoyMDAwLTA4LTA3IDAyOjQ5ICBuYmEKCglmaWxlIHJlYWRfbW9kdWxlX25vZGUuMyB3YXMgaW5pdGlhbGx5IGFkZGVkIG9uIGJyYW5jaCBWNC0xLTEtcGF0Y2hlcy4KCQoyMDAwLTA4LTA3IDAyOjQ5ICBuYmEKCglmaWxlIHJlYWRfbW9kdWxlLjMgd2FzIGluaXRpYWxseSBhZGRlZCBvbiBicmFuY2ggVjQtMS0xLXBhdGNoZXMuCgkKMjAwMC0wOC0wNyAwMjo0OSAgbmJhCgoJZmlsZSByZWFkX2FsbF9taWJzLjMgd2FzIGluaXRpYWxseSBhZGRlZCBvbiBicmFuY2ggVjQtMS0xLXBhdGNoZXMuCgkKMjAwMC0wOC0wNyAwMjo0OSAgbmJhCgoJZmlsZSByZWFkX21pYi4zIHdhcyBpbml0aWFsbHkgYWRkZWQgb24gYnJhbmNoIFY0LTEtMS1wYXRjaGVzLgoJCjIwMDAtMDgtMDcgMDI6NDkgIG5iYQoKCWZpbGUgcHJpbnRfdmFyaWFibGUuMyB3YXMgaW5pdGlhbGx5IGFkZGVkIG9uIGJyYW5jaCBWNC0xLTEtcGF0Y2hlcy4KCQoyMDAwLTA4LTA3IDAyOjQ5ICBuYmEKCglmaWxlIHByaW50X3ZhbHVlLjMgd2FzIGluaXRpYWxseSBhZGRlZCBvbiBicmFuY2ggVjQtMS0xLXBhdGNoZXMuCgkKMjAwMC0wOC0wNyAwMjo0OSAgbmJhCgoJZmlsZSBwcmludF9vYmppZC4zIHdhcyBpbml0aWFsbHkgYWRkZWQgb24gYnJhbmNoIFY0LTEtMS1wYXRjaGVzLgoJCjIwMDAtMDgtMDcgMDI6NDkgIG5iYQoKCWZpbGUgcHJpbnRfZGVzY3JpcHRpb24uMyB3YXMgaW5pdGlhbGx5IGFkZGVkIG9uIGJyYW5jaCBWNC0xLTEtcGF0Y2hlcy4KCQoyMDAwLTA4LTA3IDAyOjQ5ICBuYmEKCglmaWxlIHByaW50X21pYi4zIHdhcyBpbml0aWFsbHkgYWRkZWQgb24gYnJhbmNoIFY0LTEtMS1wYXRjaGVzLgoJCjIwMDAtMDgtMDcgMDI6NDkgIG5iYQoKCWZpbGUgaW5pdF9taWJfaW50ZXJuYWxzLjMgd2FzIGluaXRpYWxseSBhZGRlZCBvbiBicmFuY2ggVjQtMS0xLXBhdGNoZXMuCgkKMjAwMC0wOC0wNyAwMjo0OSAgbmJhCgoJZmlsZSBpbml0X21pYi4zIHdhcyBpbml0aWFsbHkgYWRkZWQgb24gYnJhbmNoIFY0LTEtMS1wYXRjaGVzLgoJCjIwMDAtMDgtMDcgMDI6NDkgIG5iYQoKCWZpbGUgZ2V0X21vZHVsZV9ub2RlLjMgd2FzIGluaXRpYWxseSBhZGRlZCBvbiBicmFuY2ggVjQtMS0xLXBhdGNoZXMuCgkKMjAwMC0wOC0wNyAwMjo0OSAgbmJhCgoJZmlsZSBhZGRfbWliZGlyLjMgd2FzIGluaXRpYWxseSBhZGRlZCBvbiBicmFuY2ggVjQtMS0xLXBhdGNoZXMuCgkKMjAwMC0wOC0wNCAxNzoxMyAgaGFyZGFrZXIKCgktIChjb25maWd1cmUsIGNvbmZpZ3VyZS5pbik6IGFkZCBpbiB0aGUgbm90aWZpY2F0aW9uIGdyb3VwIGJ5IGRlZmF1bHQuCgkKMjAwMC0wOC0wNCAxNzowOCAgaGFyZGFrZXIKCgktIChub3RpZmljYXRpb24uaCk6IG5vdGlmaWNhdGlvbiBtaWIgd3JhcHBlci4KCQoyMDAwLTA4LTA0IDE3OjA2ICBoYXJkYWtlcgoKCS0gKHNubXBfcGFyc2VfYXJncy5jKToKCSAtIGluaXRpYWxpemUgb3B0aW5kIGJlZm9yZSBjYWxsaW5nIGdldG9wdC4KCSAtIGRlYnVnZ2luZyBvdXRwdXQuCgkKMjAwMC0wOC0wNCAxNjo1NiAgaGFyZGFrZXIKCgktIChwcm94eS5jKTogcHJvcGVybHkgc2V0IHRoZSBmaXJzdCAodW51c2VkKSBhcmd1bWVudCB0byBzbm1wX3BhcnNlX2FyZ3MoKS4KCQoyMDAwLTA4LTA0IDE2OjUzICBoYXJkYWtlcgoKCS0gKGFnZW50X3RyYXAuYywgc25tcE5vdGlmeVRhYmxlLmgsIHNubXBUYXJnZXRBZGRyRW50cnkuYywKCSAgc25tcFRhcmdldEFkZHJFbnRyeS5oLCBzbm1wVGFyZ2V0UGFyYW1zRW50cnkuYywKCSAgc25tcFRhcmdldFBhcmFtc0VudHJ5LmgsIHRhcmdldC5jKToKCSAgLSBpZiB1c2luZyB0aGUgc25tcE5vdGlmaWNhdGlvblRhYmxlLCBpbnNlcnQgbm9uLXYxIHRyYXAgc2lua3MgaW50byBpdC4KCQoyMDAwLTA4LTA0IDA1OjI2ICBkYXZlcwoKCS0gKG1pYmdyb3VwL21pYkpKLmggbWliZ3JvdXAvbWliSkovKik6IEV4cGVyaW1lbnRhbCByZS13cml0ZSBvZiBtaWJJSQoJCjIwMDAtMDgtMDQgMDU6MjEgIGRhdmVzCgoJLSAobWliZ3JvdXAvdXRpbF9mdW5jcy5bY2hdKTogTmV3ICdjYWNoZWQgdGFibGUnIHJvdXRpbmVzCgkKMjAwMC0wOC0wMyAwODozNyAgbXNsaWZjYWsKCglGaXggYnVnICMzMjUgaWRlbnRpZmllZCBieSBKb2huIE5heWxvbiA8amJwbkBjYW1icmlkZ2Vicm9hZGJhbmQuY29tPgoJCjIwMDAtMDgtMDMgMDE6MjQgIG5iYQoKCWZpbGUgSVAtRk9SV0FSRC1NSUIudHh0IHdhcyBpbml0aWFsbHkgYWRkZWQgb24gYnJhbmNoIFY0LTEtMS1wYXRjaGVzLgoJCjIwMDAtMDgtMDMgMDE6MjQgIG5iYQoKCWZpbGUgSU5FVC1BRERSRVNTLU1JQi50eHQgd2FzIGluaXRpYWxseSBhZGRlZCBvbiBicmFuY2ggVjQtMS0xLXBhdGNoZXMuCgkKMjAwMC0wOC0wMyAwMToyNCAgbmJhCgoJZmlsZSBJRi1JTlZFUlRFRC1TVEFDSy1NSUIudHh0IHdhcyBpbml0aWFsbHkgYWRkZWQgb24gYnJhbmNoIFY0LTEtMS1wYXRjaGVzLgoJCjIwMDAtMDgtMDMgMDE6MjQgIG5iYQoKCWZpbGUgSENOVU0tVEMudHh0IHdhcyBpbml0aWFsbHkgYWRkZWQgb24gYnJhbmNoIFY0LTEtMS1wYXRjaGVzLgoJCjIwMDAtMDgtMDIgMDc6MDYgIG1zbGlmY2FrCgoJU2lsZW50IHJ1bm5pbmcgZ3JlcCByZXN1bHRzLgoJCjIwMDAtMDgtMDIgMDY6MTAgIG1zbGlmY2FrCgoJRml4IEJVRyAjMjkxIDogYWxsb3cgIjI1NS4yNTUuMjU1LjI1NSIgZm9yIHRleHQgaW5wdXQgdG8gQVNOX0lQQUREUkVTUwoJCjIwMDAtMDgtMDIgMDU6MjAgIG1zbGlmY2FrCgoJRml4IChCVUcjMzIzKSA6IGZyZWUgUERVIHdoZW4gc25tcF9zZW5kIGZhaWxzLgoJCjIwMDAtMDgtMDIgMDU6MDYgIG1zbGlmY2FrCgoJQWRkIC1wIG9wdGlvbiBvbmNlIHRvIHNubXBkIGFyZ3MuCglGaW5kIE1JQkRJUlMgaW4gc291cmNlIHRyZWUuCglGaXggY29uZGl0aW9uIHRvIHNldCBQQVRILgoJCjIwMDAtMDgtMDEgMjM6MzAgIG5iYQoKCS0gaXAuYzogT25lIG1vcmUgI2lmIHNvbGFyaXMKCQoyMDAwLTA4LTAxIDIzOjE5ICBuYmEKCgktIGlwLmM6IEEgYmFkICNpZiAuLi4gdGhlIHByb3BlciBkZWZpbmUgdG8gdGVzdCBmb3IgU29sYXJpcyBpcyBzb2xhcmlzMgoJCjIwMDAtMDgtMDEgMTY6NDAgIGhhcmRha2VyCgoJLSAoc25tcF9wYXJzZV9hcmdzLmMpOiByZW1vdmUgdW51c2VkIHVzYWdlKCkgdHlwZWRlZi4KCQoyMDAwLTA4LTAxIDE2OjQwICBoYXJkYWtlcgoKCS0gKHByb3h5LmMsIHByb3h5LmgpOiAtV2FsbCB3YXJuaW5nIGZpeGVzLgoJCjIwMDAtMDgtMDEgMTY6MzkgIGhhcmRha2VyCgoJLSAoRkFRKTogbWVudGlvbiBuZXdlciB2ZXJzaW9ucyBvZiBTb2xhcmlzLgoJCjIwMDAtMDgtMDEgMTY6MzcgIGhhcmRha2VyCgoJLSAoVEVTVENPTkYuc2gsIFRFU1RDT05GLnNoLmluKTogcmV2ZXJ0IHRvIG5vbi1jb25maWdlZCBURVNUQ09ORi4KCQoyMDAwLTA4LTAxIDE2OjMxICBoYXJkYWtlcgoKCS0gKE1ha2VmaWxlLnRvcCk6IG1ha2UgdW4tcXVpZXQuCgkKMjAwMC0wOC0wMSAxMDoyMyAgaGFyZGFrZXIKCgktIChzbm1wLXVjZC5zaCk6IGZpeCBidWcgIzI5NyAoZG9uJ3Qga2lsbCBncmVwIGFuZCBpbml0IHNjcmlwdCBpbnZvY2F0aW9ucykuCgkKMjAwMC0wOC0wMSAwNDo0NSAgbXNsaWZjYWsKCglGaXggYnVnIGZvdW5kIGJ5IFlpZ2FsIEhvY2hiZXJnIDxob2NoYmVyZ0BkbWhzb2Z0d2FyZS5jb20+CgkKMjAwMC0wOC0wMSAwMzozMCAgZGF2ZXMKCgktIChhZ2VudC9zbm1wX3ZhcnMuYyk6IEZpeCBidWlsZGluZyBvZiBjb21wbGV0ZSBPSUQKCQkod29yayB3aXRoIHRoZSBuYW1lIG9yaWdpbmFsbHkgcmVnaXN0ZXJlZCwKCQkgbm90IGFueSBzdWJzZXF1ZW50IGRpdmlzaW9uIGJvdW5kYXJpZXMpCgkKMjAwMC0wNy0zMSAyMDowOSAgbXNsaWZjYWsKCglSZW1vdmUgZHVwbGljYXRlIGZvcGVuIGZyb20gc2hlbGxfY29tbWFuZC4KCQoyMDAwLTA3LTMxIDE4OjU4ICBtc2xpZmNhawoKCShURVNUQ09ORi5zaC5pbikgLSBzZXQgTUlCRElSUyB0byBzaWJsaW5nIG9mIHRoZSB0ZXN0aW5nIGRpcmVjdG9yeS4KCShSVU5URVNUUykgLSBhbGxvdyBiaW5hcmllcyB0byBiZSBpbiB0aGUgIi1EIGJpbmRpciIgZGlyZWN0b3J5LgoJCjIwMDAtMDctMzEgMTU6MjUgIG1zbGlmY2FrCgoJRG9udCBhZGp1c3QgUEFUSCBpZiBTTk1QX1BBVEggaXMgc2V0LgoJRG9udCBhZGQgcG9ydCBzcGVjIHRvIFNOTVBfRkxBR1MgaWYgb25lIGlzIGFscmVhZHkgc3BlY2lmaWVkLgoJCjIwMDAtMDctMzEgMTM6NDkgIG1zbGlmY2FrCgoJUmVtb3ZlIHRlc3QgZGlyZWN0b3JpZXMgZm9yIHNraXBwZWQgdGVzdHMuCglLZWVwIHRlc3QgZGlyZWN0b3JpZXMgZm9yIGZhaWxlZCB0ZXN0cy4KCUtlZXAgdGVzdCBkaXJlY3RvcmllcyBmb3IgcGFzc2VkIHRlc3RzIHdoZW4gIlJVTlRFU1RTIC1zIiBpcyBzcGVjaWZpZWQuCglTZWFyY2ggY29uZmlnLmggYXQgdGhlIHJvb3Qgb2YgdGhlIGJ1aWxkIHRyZWUuCgkKMjAwMC0wNy0zMSAxMTozMiAgbXNsaWZjYWsKCglNZXJnZSBmcm9tIGF1dG9tYWtlLTEuNDogQWRkIGZvciBSaGFwc29keSwgT3BlblN0ZXAsIENyYXktVDMsIFNYLTQsIFNYLTUKCQoyMDAwLTA3LTMxIDExOjMxICBtc2xpZmNhawoKCU1lcmdlIGZyb20gYXV0b21ha2UtMS40OiBBZGQgZm9yIFJoYXBzb2R5LCBPcGVuU3RlcAoJCjIwMDAtMDctMzAgMTc6MzggIGhhcmRha2VyCgoJLSAoc25tcE5vdGlmeVRhYmxlLmMsIHNubXBOb3RpZnlUYWJsZS5oLCB0YXJnZXQuYywgdGFyZ2V0LmgpOgoJICAtIGltcGxlbWVudCB1bnRlc3RlZCBmaWx0ZXJpbmcgZnVuY3Rpb24gY2FsbGJhY2sgZm9yIHRhcmdldCBzZWFyY2hlcy4KCSAgLSBkZWxldGUgdW51c2VkIGZ1bmN0aW9uLgoJICAtIG1pc2Mgd2FybmluZyBmaXhlcy4KCQoyMDAwLTA3LTMwIDE3OjA3ICBoYXJkYWtlcgoKCS0gKHNubXBOb3RpZnlGaWx0ZXJQcm9maWxlVGFibGUuYywgc25tcE5vdGlmeUZpbHRlclByb2ZpbGVUYWJsZS5oLAoJICBzbm1wTm90aWZ5RmlsdGVyVGFibGUuYywgc25tcE5vdGlmeUZpbHRlclRhYmxlLmgpOgoJICAtIG1vcmUgbm90aWZpY2F0aW9uIHRhYmxlIGltcGxlbWVudGF0aW9ucyBmb3IgZmlsdGVyaW5nLgoJICAgIC0gRnJhbWV3b3JrIGNvbXBsZXRlLCBmdW5jdGlvbmFsaXR5IGlzIG5vdC4KCQoyMDAwLTA3LTMwIDE3OjA1ICBoYXJkYWtlcgoKCS0gKGhlYWRlcl9jb21wbGV4LmMsIGhlYWRlcl9jb21wbGV4LmgpOgoJICAtIGhhbmRsZSBpbXBsaWVkIG9iamVjdHMuCgkgIC0gaW1wbGVtZW50IGhlYWRlcl9jb21wbGV4X2dldCgpIGZvciBzaW1wbGUgZGF0YSByZXRyaWV2YWxzLgoJCjIwMDAtMDctMjggMDY6MTUgIG1zbGlmY2FrCgoJQ2xlYW51cCBpbmNsdWRlIGhlYWRlcnMgdG8gZml4IGJ1ZyAjMzA3LiBUaGFua3MgdG8gc2FuZHZlbkByZXNlYXJjaC5hdHQuY29tLgoJCjIwMDAtMDctMjcgMTU6MTkgIGhhcmRha2VyCgoJLSAoY29uZmlndXJlLCBjb25maWd1cmUuaW4pOiBQYXRjaCBmcm9tIFZpbmF5IE1vaHRhOgoJICAtIGFjY2Vzc19ob3N0cygpIHJlcXVpcmVzIGFuIGFyZ3VtZW50IHNvIGZha2Ugb25lLgoJCjIwMDAtMDctMjcgMTU6MDAgIGhhcmRha2VyCgoJLSAoaW50ZXJmYWNlcy5jKTogUGF0Y2ggZnJvbSBNYXR0aWFzIEJhcnRoZWw6CgkgIC0gZml4IGZvciBpbnRlcmZhY2VzIHdpdGhvdXQgYW4gYXR0YWNoZWQgSVAgYWRkcmVzcy4KCQoyMDAwLTA3LTI3IDE0OjU1ICBoYXJkYWtlcgoKCS0gKHZtc3RhdF9zb2xhcmlzMi5jLCB2bXN0YXRfc29sYXJpczIuaCk6IFBhdGNoIGZyb20gSm9jaGVuIEttaWV0c2NoOgoJICAtIHN1cHBvcnQgcmF3IHZhbHVlcy4KCQoyMDAwLTA3LTI3IDA4OjI1ICBoYXJkYWtlcgoKCS0gKHNubXB1c20uYyk6IHByaW50IGVycm9ycyB0byBzdGRlcnIuCgkKMjAwMC0wNy0yNyAwNjoyMCAgbmJhCgoJLSBwYXJzZS5jOiBGaXggYSBtaXNzaW5nIGluaXRpemF0aW9uIHdoZW4gb25lIE1JQiBob2xkcyBNT0RVTEUtQ09NUExJQU5DRQoJCWZvciBhbm90aGVyCgkKMjAwMC0wNy0yNyAwMTozNSAgbmJhCgoJLSBzbm1wX2FwaS5jOiBGaXggcGR1LT5jb21tdW5pdHkgYmVpbmcgb3ZlcndyaXR0ZW4gd2l0aCBzZXNzaW9uLT5jb21tdW5pdHkKCQlUaGFua3MgdG8gRGFuYSBQLiBDb29rIDxkY29va0BjYWJsZXRyb24uY29tPgoJCjIwMDAtMDctMjYgMjI6MjggIG1zbGlmY2FrCgoJVXBkYXRlIGZvciB3aW4zMiBidWlsZDogcmVtb3ZlIHVudXNlZCB2YXJpYWJsZXMgYW5kIHVucHVibGlzaGVkIG1ldGhvZC4KCQoyMDAwLTA3LTI2IDA4OjUzICBoYXJkYWtlcgoKCS0gKG1pYjJjLnN0b3JhZ2UuY29uZik6IG1pc2MgY2hhbmdlcyBhbmQgaW1wcm92ZW1lbnRzLgoJCjIwMDAtMDctMjYgMDg6NTMgIGhhcmRha2VyCgoJLSAodGttaWIpOiBQYXRjaCBmcm9tIEJlcnQgRHJpZWh1aXM6CgkgIC0gdHJhbnNsYXRlT2JqIGhhY2suCgkKMjAwMC0wNy0yNiAwODo0OSAgaGFyZGFrZXIKCgktICh0a21pYik6IFBhdGNoIGZyb20gQmVydCBEcmllaHVpczoKCSAgLSByZW1vdmUgYmVnaW5uaW5nIG5ld2xpbmUgaW4gZGVzY3JpcHRpb24gY2xhdXNlcy4KCQoyMDAwLTA3LTIxIDE0OjAwICBoYXJkYWtlcgoKCS0gKHNldHVwZGIsIHNubXB0b3NxbCk6IG9ubHkgZGVsZXRlIGhpc3Rvcnkgcm93cyBvbmNlIGV2ZXJ5IGhvdXIgb3Igc28uCgkgIC0gdG9vIENQVSBpbnRlbnNpdmUgZm9yIGxhcmdlIHRhYmxlcy4KCQoyMDAwLTA3LTIxIDEyOjU5ICBoYXJkYWtlcgoKCS0gKHNldHVwZGIsIHNubXB0b3NxbCk6IHJlY29yZCBhbmQgZGlzcGxheSBzeXNVcFRpbWUgYW5kIG90aGVycy4KCQoyMDAwLTA3LTIxIDEyOjU3ICBoYXJkYWtlcgoKCS0gKG1hbmFnZXIucG0pOiBncmFwaGluZyB3b3JrcyBhZ2Fpbi4KCQoyMDAwLTA3LTIxIDEyOjU3ICBoYXJkYWtlcgoKCS0gKGRpc3BsYXl0YWJsZS5wbSk6IGNvbW1lbnRzLCBsZWdlbmRzLCBhbmQgbWF4L21pbiB3b3JrIGFnYWluLgoJCjIwMDAtMDctMTcgMTE6MDAgIGhhcmRha2VyCgoJLSAodm1zdGF0X3NvbGFyaXMyLmgpOiBjb25maWdfcmVxdWlyZSBrZXJuZWxfc3Vub3M1LgoJCjIwMDAtMDctMTIgMDk6MjkgIGhhcmRha2VyCgoJLSAoc25tcHYzLmMpOiBjb3B5IGtleSBsZW5ndGggYXMgd2VsbCBhcyB0aGUga2V5IHdoZW4gdXNpbmcgdGhlIHNhbWUKCSAgcHJpdmFjeSBrZXkgYXMgdGhlIGF1dGgga2V5LgoJCjIwMDAtMDctMTEgMTM6MzQgIG1hcnoKCglhZGRlZCByYW5nZXMgZmllbGQgdG8gU05NUDo6TUlCIGhhc2gKCQoyMDAwLTA3LTExIDEwOjA1ICBoYXJkYWtlcgoKCS0gKG1pYi5jKTogUGF0Y2ggZnJvbSBSb2JlcnQgU3Rvcnk6CgkgIC0gbWFrZSBudWxsIFBSRUZJWCB2YXJpYWJsZSBwb3NzaWJsZSBzbyBub24tZG90LWxlYWRpbmcgb2lkcyBhcmUgYWNjZXB0ZWQuCgkKMjAwMC0wNy0xMSAwOToyMiAgaGFyZGFrZXIKCgktIChzbm1wX2FnZW50LmMsIHNubXB0cmFwZC5jLCBzbm1wX2FwaS5jLCBzbm1wX2FwaS5oLCBzbm1wdXNtLmMsIHNubXB1c20uaCk6CgkgIC0gbWFrZSB0aGUgc2Vzc2lvbiBwb2ludGVycyBpbmRpY2F0ZSB3ZWF0aGVyIG9yIG5vdCB0aGV5IGFyZQoJICAgICJhdXRob3JpdGF0aXZlIiwgbWVhbmluZyB3ZWF0aGVyIHRoZXkgc2hvdWxkIGJlIGxlYXJuaW5nIGVuZ2luZUlEcwoJICAgIG9yIHJlcG9ydGluZyBvbiB0aGVtLgoJICAtIHBhc3MgdGhlIHJlY2VpdmVkLXBhY2tldCBzZXNzaW9uIHBvaW50ZXIgaW50byBzbm1wdjNfcGFyc2UgYW5kCgkgICAgdXNtX3Byb2NjZXNzX2luX21zZygpIHRvIHVzZSB0aGlzIGZsYWcuCgkgIC0gc2V0IGlzQXV0aG9yYXRhdGl2ZSA9IHRydWUgaW4gdGhlIGFnZW50LCBhbmQgdW5rbm93biBpbiB0aGUgc25tcHRyYXBkLgoJCjIwMDAtMDctMTEgMDg6MzIgIGhhcmRha2VyCgoJLSAoc25tcHYzLmMpOiBtYWtlIHRoZSBjcmVhdGVVc2VyIHRva2VuIGFjY2VwdCBhbiBlbmdpbmVpZCAoLWUgQVJHKSB0byB1c2UuCgkKMjAwMC0wNy0wNyAwMTozNyAgZGF2ZXMKCgktIChtaWJJSS9pbnRlcmZhY2VzLmMpOiBSZWNvZ25pc2UgVG9rZW4gUmluZyBpbnRlcmZhY2VzIHVuZGVyIExpbnV4CgkKMjAwMC0wNy0wNiAxNzoxOSAgaGFyZGFrZXIKCgktIChyZWFkX2NvbmZpZy5jKTogcHJpbnQgZ2VuZXJpYyBzdHJpbmdzIHdoZW4gc2F2aW5nIHBlcnNpc3RlbnQgZGF0YQoJICB3aGVyZSBwb3NzaWJsZS4gIChJRSwgY2hlY2sgZm9yIHByaW50YWJsZSBjaGFyYWN0ZXJzIGJlZm9yZSBwcmludGluZyBoZXgpLgoJCjIwMDAtMDctMDYgMTc6MDUgIGhhcmRha2VyCgoJLSAoVEVTVENPTkYuc2gsIFRFU1RDT05GLnNoLmluKTogbW92ZWQgVEVTVENPTkYuc2ggdG8gVEVTVENPTkYuc2guaW4KCSAgYW5kIGhhdmUgdGhlIE1JQlMgcGF0aCB2YXJpYWJsZSBidWlsdCBieSBjb25maWd1cmUgc2luY2UgaXQga25vd3MKCSAgd2hlcmUgdGhlIHJvb3QgbGV2ZWwgc291cmNlIGRpcmVjdG9yeSBpcy4KCQoyMDAwLTA3LTA2IDE3OjA0ICBoYXJkYWtlcgoKCS0gKGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBoZWFkZXJfY29tcGxleC5jLCBzbm1wTm90aWZ5VGFibGUuYywKCSAgYXNuMS5oLCBzbm1wX2FwaS5jKToKCSAgLSBpbXBsZW1lbnQgSU1QTElFRCBpbmRleCBoYW5kbGluZy4KCSAgLSBtYWtlIHRoZSBjcmVhdGVkIFVTTSBlbnRyaWVzIHNldCB0aGUgc3RvcmFnZVR5cGUgYW5kIFJvd1N0YXR1cwoJICAgIGFwcHJvcHJpYXRlbHkuCgkKMjAwMC0wNy0wNiAxNzowMiAgaGFyZGFrZXIKCgktIChzbm1wX2FwaS5oKTogYmV0dGVyIGNvbW1lbnRzIG9uIGEgY291cGxlIG9mIGZ1bmN0aW9uIGRlZmluaXRpb25zLgoJCjIwMDAtMDctMDUgMDc6NTAgIG1zbGlmY2FrCgoJZml4IChCVUcjMjkwKSBncmFjZWZ1bGx5IGhhbmRsZSBzb21lIFBEVXMgdGhhdCBoYXZlIG5vIHZhcmlhYmxlcy4KCQoyMDAwLTA3LTA1IDA2OjQ2ICBtc2xpZmNhawoKCVtubyBsb2cgbWVzc2FnZV0KCQoyMDAwLTA3LTA0IDEwOjIxICBoYXJkYWtlcgoKCS0gKHNubXBfdmFycy5jLCBzbm1wdHJhcGQuYywgc25tcF9hcGkuYywgc25tcF9hcGkuaCwgc25tcHVzbS5jLCBzbm1wdXNtLmgpOgoJICAtIHJlbW92ZSBsYXN0IHJlbW5hbnRzIG9mIHRoZSAiaW5pdGlhbCIgdXNlci4KCSAgLSBtYWtlIGVuZ2luZWlkIHJlcG9ydHMgZnJvbSB0aGUgdXNtIGhhcHBlbiBiYXNlZCBvbiB0aGUgcmVwb3J0IGZsYWcKCSAgICBpbiB0aGUgbWVzc2FnZSBmbGFnLgoJICAgIC0gTm90ZTogdGhpcyBpcyBhIGJpZyBpc3N1ZSB3aXRoIHRoZSBTTk1QdjMgcHJvdG9jb2wgc3BlY3MuICBUaGUKCSAgICAgIHNwZWNpZmljYXRpb25zIG5vdGUgdGhhdCB5b3Ugc2VuZCBhIHJlcG9ydCBpZiB5b3UgYXJlCgkgICAgICAiYXV0aG9yaXRhdGl2ZSIsIGJ1dCBkb24ndCBkZXNjcmliZSBob3cgdG8ga25vdyBpZiB5b3UgYXJlCgkgICAgICBhdXRob3JpdGF0aXZlIG9yIG5vdC4gIEZvciBzaXR1YXRpb25zIGxpa2UgcHJveGllcyBhbmQKCSAgICAgIG5vdGlmaWNhdGlvbiByZWNlaXZlcnMsIHdoZXJlIHlvdSBhcmUgc29tZXRpbWVzIGF1dGhvcml0YXRpdmUKCSAgICAgIGFuZCBvdGhlciB0aW1lcyB5b3UncmUgbm90LCB0aGlzIGlzIHByb2JsZW1hdGljLiAgVGhlIFNOTVB2MwoJICAgICAgQVNJcyBkbyBub3QgcGFzcyBpbiBlbm91Z2ggaW5mb3JtYXRpb24gdG8gZGV0ZXJtaW5lIHRoaXMgYW5kIHRoZQoJICAgICAgV0cgaGFzIHByb2NsYWltZWQgdGhhdCB0aGUgQVNJcyBhcmUgbm90IG1lYW50IHRvIGJlIHVzZWQgYXMgYW4KCSAgICAgIEFQSSwgYnV0IHRoZSBpbml0aWFsIHdvcmsgZG9uZSBieSBOQUkgYW5kIFRJU0xhYnMgYXR0ZW1wdGVkIHRvCgkgICAgICBpbXBsZW1lbnQgdGhlIFVTTSBzdWNoIHRoYXQgaXQgd291bGQgYmUgYSAicmVmZXJlbmNlIiByZWxlYXNlCgkgICAgICBhbmQgaGVuY2Ugd2UgZm9sbG93ZWQgdGhlIHNwZWNpZmljYXRpb25zIHRvIHRoZSBsZXR0ZXIgYW5kIHVzZWQKCSAgICAgIHRoZSBBU0lzIGFzIEFQSXMganVzdCB0byBzZWUgaWYgd2UgY291bGQuICBXZSBjb3VsZCBwcmV2aW91c2x5CgkgICAgICBvbmx5IGJlY2F1c2Ugd2Ugd2VyZSBhbHdheXMgZWl0aGVyIGF1dGhvcml0YXRpdmUgb3IKCSAgICAgIG5vbi1hdXRob3JpdGF0aXZlLiAgU2luY2UgYmVnaW5uaW5nIHRvIHdvcmsgb24gcHJveHkgYW5kIHRoZQoJICAgICAgbm90aWZpY2F0aW9uIG1pYiwgdGhpcyBpcyBubyBsb25nZXIgcG9zc2libGUuICBGb3IgdGhlIHJlY29yZCwgSQoJICAgICAgYW0gaGVyZWJ5IGNoYW5naW5nIHRoZSBpbml0aWFsIHJlZmVyZW5jZSByZWxlYXNlIGluIHN1Y2ggYQoJICAgICAgbWFubmVyIGFzIGl0IG5vIGxvbmdlciBjb25mb3JtcyBleGFjdGx5IHRvIHRoZSBTTk1QdjMgQVNJcy4gIFNvCgkgICAgICBhcyBub3QgdG8gY29uZnVzZSBhbnlvbmUsIHRoaXMgaXMgYW4gZW50aXJlbHkgdGhlb3JldGljYWwgaXNzdWUKCSAgICAgIHdpdGggcmVzcGVjdCB0byB0aGUgU05NUHYzIHNwZWNpZmljYXRpb24gYW5kIGlzIHBlcmZlY3RseSBsZWdhbAoJICAgICAgdG8gZG8uICBUaG91Z2ggSSBjb3VsZCBlYXNpbHkgZ28gb24sIEknbGwgc3RlcCBvZmYgbXkgc29hcCBib3ggbm93LgoJCjIwMDAtMDctMDMgMTA6MTAgIGhhcmRha2VyCgoJLSAoYWdlbnRfY2FsbGJhY2tzLmgsIGFnZW50X3RyYXAuYywgYWdlbnRfdHJhcC5oLCBzbm1wTm90aWZ5VGFibGUuYywKCSAgc25tcFRhcmdldEFkZHJFbnRyeS5jLCBzbm1wVGFyZ2V0QWRkckVudHJ5LmgsCgkgIHNubXBUYXJnZXRQYXJhbXNFbnRyeS5jLCBzbm1wVGFyZ2V0UGFyYW1zRW50cnkuaCwgdGFyZ2V0LmMpOgoJICAtIEFkZCBhIG5ldyBjYWxsYmFjayBmb3Igc2VuZGluZyB0cmFwcy4KCSAgICAtIE1ha2UgdGhlIG5vdGlmaWNhdGlvbiBtaWIgdXNlIGl0LgoJICAtIG1ha2UgdGhlIHRhcmdldCBtaWIgZ2VuZXJhdGUgbW9yZSBwZXJzaXN0ZW50IHNlc3Npb25zLgoJICAtIE1ha2UgdGhlIG5vdGlmaWNhdGlvbiBtaWIgYWx3YXlzIGFzayB0aGUgdGFyZ2V0IG1pYiBmb3IgYSBzZXNzaW9uCgkgICAgbGlzdCwgd2hpY2ggaXMgbm93IGNhY2hlZCBkaXJlY3RseSBieSB0aGUgdGFyZ2V0IG1pYi4KCQoyMDAwLTA3LTAzIDA4OjM4ICBtc2xpZmNhawoKCWZpeCAoQlVHIzI2MikgLSAoc29tZSkgc3RhdGVtZW50cyB0aGF0IGNhbm5vdCBiZSByZWFjaGVkLgoJCjIwMDAtMDctMDMgMDc6NTUgIG1zbGlmY2FrCgoJZml4IChCVUcjMjg3KQoJCjIwMDAtMDctMDMgMDY6MTEgIG1zbGlmY2FrCgoJZml4IGJ1ZyAjIDI4OQoJCjIwMDAtMDYtMzAgMDQ6NDUgIG1zbGlmY2FrCgoJc2ltcGxpZnkgbWVtb3J5IGFsbG9jYXRpb24gaW4gcmVhZF9jb25maWdfcmVhZF97b2N0ZXRfc3RyaW5nLCBvYmppZH0KCQoyMDAwLTA2LTMwIDAwOjQ3ICBuYmEKCgktIHJlYWRfY29uZmlnLmM6IEZpeCBhIG1pc3NpbmcgaW5pdGlhbGl6YXRpb24gZm9yIGtleXdvcmRzIHdpdGhvdXQgaGVscAoJCjIwMDAtMDYtMjggMjM6MzcgIG5iYQoKCS0gSUYtTUlCLnR4dDogdXBncmFkZSB0byBSRkMgMjg2MwoJCjIwMDAtMDYtMjggMDA6NTggIG5iYQoKCS0gaW50ZXJmYWNlcy5jLCBjb25maWd1cmU6IElyaXggNi41IGhhcyBpZmlfYmF1ZHJhdGUuaWZzX3ZhbHVlCgkKMjAwMC0wNi0yNyAwMTozNCAgbmJhCgoJLSBtYWluLmM6IGJldHRlciBvcHRpb24gcGFyc2luZy4KCQoyMDAwLTA2LTI3IDAxOjM0ICBuYmEKCgktIHNubXB2My5jOiBkbyBjYXNlIGluc2Vuc2l0aXZlIG1hdGNoaW5nIG9mIG9wdGlvbiB2YWx1ZXMuCgkKMjAwMC0wNi0yNyAwMDozMyAgbmJhCgoJLSBzbm1wdHJhbnNsYXRlLjE6IGRvY3VtZW50IHRoYXQgLXcgaXMgYWxzbyBmb3IgLVRkCgkKMjAwMC0wNi0yNyAwMDozMCAgbmJhCgoJLSB2YXJpb3VzIG1hbiBwYWdlIG5pdC1waWNraW5nCgkKMjAwMC0wNi0yNyAwMDoyOCAgbmJhCgoJLSBzbm1wdGFibGUuYzogZml4ZXMgYW5kIHVzYWdlIG1lc3NhZ2UgZm9yIC1DaCBhbmQgLUNICgkKMjAwMC0wNi0yNiAyMzo0MyAgbmJhCgoJLSBNYWtlZmlsZS5pbiwgKk1JQi50eHQ6IHVwZGF0ZSB0byBjdXJyZW50IFJGQyB2ZXJzaW9uCgkKMjAwMC0wNi0yNiAyMzo0MiAgbmJhCgoJLSBNYWtlZmlsZS5taWIsIG1pYmZldGNoLCBzbWlzdHJpcDogdG9vbHMgdG8gZXh0cmFjdCBNSUJzIGZyb20gUkZDCgkJZG9jdW1lbnRzLgoJCjIwMDAtMDYtMjYgMjM6NDAgIG5iYQoKCS0gcGFyc2UuYywgbWliLltjaF0sIHNubXB0cmFuc2xhdGUuYzogYWRkIHBhcnNpbmcgb2YgQ0hPSUNFIGFuZCBjaGVja3MgZm9yCgkJT0JKRUNULUdST1VQIGFuZCBBR0VOVC1DQVBBQklMSVRJRVMuIFRoaXMgYWxsb3dzIHVzIHRvIHBhcnNlCgkJY29tcGxldGUgTUlCIGV4dHJhY3RzIGZyb20gUkZDIGRvY3VtZW50cy4KCQoyMDAwLTA2LTI2IDIzOjM4ICBuYmEKCgktIE1ha2VmaWxlLnRvcDogbWFrZSBsaWJ0b29sIHNpbGVudCwgc28gd2UgY2FuIHNlZSB0aG9zZSB3YXJuaW5ncwoJCjIwMDAtMDYtMjYgMjM6MzcgIG5iYQoKCS0gc25tcFRhcmdldEFkZHJFbnRyeS5jOiBkbyBhIGNhc3QgdG8ga2lsbCBhIHdhcm5pbmcKCQoyMDAwLTA2LTI2IDIzOjMyICBuYmEKCgktIGFnZW50X3RyYXAuYzogRml4IGEgbGVhayB3aGVuIHJlcXVlc3QgaXMgYmxvY2tlZCBieSBWQUNNIGFuZCBubyB0cmFwCgkJaXMgc2VudC4KCQoyMDAwLTA2LTI2IDExOjU2ICBtc2xpZmNhawoKCWZpeCAoQlVHIzIzMykKCQoyMDAwLTA2LTIzIDA2OjQyICBtc2xpZmNhawoKCXJlcGxhY2UgbWFsbG9jL21lbXNldCAwIHdpdGggY2FsbG9jLgoJCjIwMDAtMDYtMjMgMDE6MDggIGRhdmVzCgoJLSAobWliSUkva2VybmVsX2xpbnV4LltjaF0sIG1pYklJL2lwLmMpOiBBZGRlZCBzdXBwb3J0IGZvciBpcFJvdXRpbmdEaXNjYXJkcwoJCShUaGFua3MgdG8gQnJ5YW4gQmxhY2ttYW4pCgkKMjAwMC0wNi0yMiAxNzowOSAgbXNsaWZjYWsKCglyZW1vdmUgZXh0cmEgaW5jbHVkZSBlcnJvcm1pYi5oCgkKMjAwMC0wNi0yMiAxNjo1MCAgbXNsaWZjYWsKCglGaXggYnVnICMyNzYgLSBjbG9zZSBtb3N0IGZpbGUgZGVzY3JpcHRvcnMgYmVmb3JlIGV4ZWMnaW5nIGNvbW1hbmQuCgkKMjAwMC0wNi0yMiAxNTo1OSAgbXNsaWZjYWsKCglmZ2V0czogdXNlIHNpemVvZihidWYpIGluIGxpZXUgb2YgY29tcGlsZXIgY29uc3RhbnQgU1RSTUFYLgoJCjIwMDAtMDYtMjIgMTU6NTMgIG1zbGlmY2FrCgoJVXNlIGZld2VyIGxhcmdlIHN0YXRpYyBidWZmZXJzLiAgcGFzc19wZXJzaXN0IHVzZXMgYmlnZ2VyIGJ1ZmZlcnMgbm93LgoJCjIwMDAtMDYtMjEgMTQ6NTkgIGhhcmRha2VyCgoJLSAobWFuYWdlci5wbSwgc25tcHRvc3FsKTogcmVjb3JkIGFuZCByZXBvcnQgc3lzVXBUaW1lLgoJCjIwMDAtMDYtMjEgMTQ6MzEgIGhhcmRha2VyCgoJLSAoc25tcHRvc3FsKTogbWlub3Igc3FsIGNhY2hpbmcgc3BlZWQgb3B0aW1pemF0aW9ucy4KCQoyMDAwLTA2LTIxIDEzOjMzICBoYXJkYWtlcgoKCS0gKHNubXB0b3NxbCk6IEFjay4gIERvbid0IGRlbGV0ZSBzdHVmZiBmcm9tIHRoZSBoaXN0b3J5IHRhYmxlIHRoYXQgZnJlcXVlbnRseS4KCQoyMDAwLTA2LTIxIDEyOjUxICBoYXJkYWtlcgoKCS0gKHNubXB0b3NxbCk6IGJldHRlciBlcnJvciBkZXNjcmlwdGlvbiBzdXBwb3J0LgoJCjIwMDAtMDYtMjEgMTI6NDYgIGhhcmRha2VyCgoJLSAobWFuYWdlci5wbSwgc25tcHRvc3FsKTogY29sbGVjdCBzeXNEZXNjciwgc3lzT2JqZWN0SWQsICYgdmVyc2lvblRhZy4KCQoyMDAwLTA2LTIxIDEyOjQ2ICBoYXJkYWtlcgoKCS0gKGRpc3BsYXl0YWJsZS5wbSk6IGFkZCAtc2VsZWN0b3JkZXIuCgkKMjAwMC0wNi0yMSAxMjoyNSAgaGFyZGFrZXIKCgktIChzbm1wTm90aWZ5VGFibGUuYyk6IFVoLCBvbmx5IGlmIG5vdCBkZWxldGVkLgoJCjIwMDAtMDYtMjEgMTI6MjMgIGhhcmRha2VyCgoJLSAoc25tcE5vdGlmeVRhYmxlLmMpOiBjaGFuZ2UgY3JlYXRlQW5kR28vY3JlYXRlQW5kV2FpdCBzdGF0ZXMgdG8gYWN0aXZlL05JUy4KCQoyMDAwLTA2LTIwIDIwOjAxICBtc2xpZmNhawoKCURlY2xhcmUgdG9wX2J1aWxkZGlyIHRvIGF2b2lkIGFubm95aW5nIC9saWJ0b29sIG5vdCBmb3VuZCBtZXNzYWdlLgoJCjIwMDAtMDYtMjAgMTc6MzAgIG1zbGlmY2FrCgoJRG9udCBhc3N1bWUgQU5TSSBDLXByZXByb2Nlc3NvciAocmVwbGFjZSAiIyMiIGNvbmNhdGVuYXRpb24gd2l0aCBzcHJpbnRmKS4KCQoyMDAwLTA2LTIwIDE1OjM3ICBtc2xpZmNhawoKCVdpbjMyIE1TLVZDKysgYnVpbGQgZml4dXBzLgoJCjIwMDAtMDYtMjAgMTU6MzcgIG1zbGlmY2FrCgoJRW5jYXBzdWxhdGUgbG9jYWwgdmFyaWFibGUgIngiIHRvIHRoZSBzY29wZSB3aGVyZSBuZWVkZWQuCgkKMjAwMC0wNi0yMCAxNTozNiAgbXNsaWZjYWsKCglSZW1vdmUgdW51c2VkIHZhciAibmV3dmFyIi4KCQoyMDAwLTA2LTIwIDE1OjM2ICBtc2xpZmNhawoKCVVzZSBpbnQgdnMgdWxvbmcgZm9yIGFycmF5IGluZGV4aW5nIHZhcmlhYmxlcyB0byBhdm9pZCBzaWduZWQvdW5zaWduZWQgbWlzbWF0Y2guCgkKMjAwMC0wNi0yMCAxNTozNCAgbXNsaWZjYWsKCglSZW1vdmUgdW51c2VkIHZhcnMgc3RydWN0IHRtLCB0aW1lX3QuCgkKMjAwMC0wNi0yMCAxNTozNCAgbXNsaWZjYWsKCglSZW1vdmUgdW51c2VkIHZhciAiaW5pdGxpc3QiLgoJCjIwMDAtMDYtMjAgMTU6MzMgIG1zbGlmY2FrCgoJRGVjbGFyZSBzdHJuY2FzZWNtcCBpbiBzeXN0ZW0uaCA7IFJlbW92ZSB1bnVzZWQgdmFyICJzdGF0dXMiLgoJCjIwMDAtMDYtMjAgMTU6MzEgIG1zbGlmY2FrCgoJUmVtb3ZlIHVudXNlZCB2YXJzLgoJCjIwMDAtMDYtMjAgMTU6MzAgIG1zbGlmY2FrCgoJRGVjbGFyZSBvcHRhcmcgaW4gZ2V0b3B0LmguCgkKMjAwMC0wNi0yMCAxNDowMCAgaGFyZGFrZXIKCgktIChtaWIyYy5zdG9yYWdlLmNvbmYpOiBtaXNjIG1pbm9yIGNoYW5nZXMuCgkKMjAwMC0wNi0yMCAxMzo1OSAgaGFyZGFrZXIKCgktICguY3ZzaWdub3JlLCBzbm1wTm90aWZ5VGFibGUuYywgc25tcE5vdGlmeVRhYmxlLmgpOgoJICAtIFNOTVAtTk9USUZJQ0FUSU9OLU1JQidzIHNubXBOb3RpZnlUYWJsZSBpbXBsZW1lbnRlZDoKCSAgICAtIHVzZXMgdGhlIFNOTVAtVEFSR0VULU1JQiB0byBnZXQgaXRzIGFkZHJlc3NlcyBmcm9tLgoJICAgIC0gdXNlcyBoZWFkZXJfY29tcGxleCB0byBoYW5kbGUgdGhlIGRhdGEuCgkgICAgLSBtdWNoIHRvZG86CgkgICAgICAtIGR5bmFtaWMgdGFyZ2V0L25vdGlmaWNhdGlvbiBtaWIgdXBkYXRpbmcgd2l0aG91dCBraWxsIC1IVVAgbmVlZGVkLgoJICAgICAgICAtIHRoaXMgd2lsbCBiZSBhIHJlYWwgcGFpbi4KCSAgICAgIC0gZml4IHYzIHJlbGF0ZWQgdHJhcHMgc3RpbGwgKHNhbWUgdXNtIGJ1ZyBJJ3ZlIGJlZW4gbWVhbmluZyB0byBmaXgpLgoJICAgICAgLSB0aGUgcmVzdCBvZiB0aGUgU05NUC1OT1RJRklDQVRJT04tTUlCIHRhYmxlcy4KCQoyMDAwLTA2LTIwIDEzOjUzICBoYXJkYWtlcgoKCS0gKHNubXBUYXJnZXRBZGRyRW50cnkuYywgc25tcFRhcmdldEFkZHJFbnRyeS5oLAoJICBzbm1wVGFyZ2V0UGFyYW1zRW50cnkuYywgc25tcFRhcmdldFBhcmFtc0VudHJ5LmgpOgoJLSBnZW5lcmljIHRhcmdldCBzZXNzaW9uIGNyZWF0aW9uCgktIG1pc2Mgb3RoZXIgbWlub3IgZml4ZXMuCgkKMjAwMC0wNi0yMCAxMzo1MSAgaGFyZGFrZXIKCgktICh0YXJnZXQuaCwgdGFyZ2V0LmMsIHRhcmdldC5oKTogZ2VuZXJpYyB0YXJnZXQgc2Vzc2lvbiBjcmVhdGlvbgoJICBiYXNlZCBvbiBlbnRyaWVzIGluIHRoZSBTTk1QLVRBUkdFVC1NSUIgdGFibGUuCgkKMjAwMC0wNi0yMCAxMzo1MCAgaGFyZGFrZXIKCgktIChoZWFkZXJfY29tcGxleC5jKTogcmVtb3ZlIE1pY2hhZWwncyBob3JyaWJsZWx5IHdyb25nICJmaXhlcyIuCgkKMjAwMC0wNi0yMCAxMzo0OCAgaGFyZGFrZXIKCgktIChhZ2VudF90cmFwLmMsIGFnZW50X3RyYXAuaCk6IGFkZCByZW1vdmVfdHJhcF9zZXNzaW9uKCkuCgkKMjAwMC0wNi0yMCAxMzo0NiAgaGFyZGFrZXIKCgktIChyZWFkX2NvbmZpZy5jKTogZGVhbCB3aXRoIDAtbGVuZ3RoIHBlcnNpc3RlbnQgc3RyaW5ncyBiZXR0ZXIuCgkKMjAwMC0wNi0xOSAxMjozMiAgbXNsaWZjYWsKCglDaGVjayBtb3JlIGFsbG9jIGZhaWx1cmVzLgoJCjIwMDAtMDYtMTkgMTI6MTUgIG1zbGlmY2FrCgoJKHByb3RvY29sLmMpIFVzZSBzaXplb2Yob2lkKSwgbm90IDQhCgkoY2xpZW50LmMpIEFkZCBfYWxsXyBvZiBPSUQgdmFsdWUgZm9yIGFnZW50eF9yZWdpc3RlciBhbmQgYWdlbnR4X3VucmVnaXN0ZXIuCgkKMjAwMC0wNi0xOSAxMTo0MSAgbXNsaWZjYWsKCgkgUmVtb3ZlZCBzaXplb2YodV9jaGFyKSBhbmQgdW5uZWNlc3NhcnkgKHVuc2lnbmVkKSBjYXN0cyB0byBtYWxsb2MgcGFyYW1zLgoJCjIwMDAtMDYtMTkgMDM6MDQgIG5iYQoKCVByb3RvdHlwZSBmaXh1cC4KCQoyMDAwLTA2LTE5IDAzOjAxICBuYmEKCglzL2NvbmlmZy9jb25maWcvIC4uLi4gSHJycm1tbXBmCgkKMjAwMC0wNi0xOSAwMjo1OCAgbmJhCgoJLSBtYWtlbm9zeXNkZXBlbmQucGwgTWFrZWZpbGUuaW46IG9iamVjdCBmaWxlcyBhcmUgbm93IG5hbWVkIC5sbyAuLi4KCQoyMDAwLTA2LTE2IDE2OjAxICBoYXJkYWtlcgoKCS0gKHNubXBUYXJnZXRBZGRyRW50cnkuaCk6IGFkZCB0aGUgU05NUHYyLVRNIG1pYiB0byB0aGUgZGVmYXVsdCBsaXN0LgoJCjIwMDAtMDYtMTYgMTY6MDEgIGhhcmRha2VyCgoJLSAoc25tcFRhcmdldEFkZHJFbnRyeS5jLCBzbm1wVGFyZ2V0UGFyYW1zRW50cnkuYyk6IGZpeCBpbmNvcnJlY3QgT0lEcy4KCQoyMDAwLTA2LTE1IDA2OjQ1ICBtYXJ6CgoJZmF0IGZpbmdlcnMKCQoyMDAwLTA2LTE1IDA2OjQyICBtYXJ6CgoJYWRkIGRlZmF1bHRzIHRvIGRhZW1vbiBzZWFyY2ggcGF0aC4uLnJlY2FsYyB0L3NubXB0ZXN0LmNtZCBldmVyeXRpbWUgcGVyIG1ha2VmaWxlLlBMIGlzIHJ1bgoJCjIwMDAtMDYtMTQgMTY6MTUgIGhhcmRha2VyCgoJLSAobWFuYWdlci5wbSk6IGZpeCB1c2VyIHByZWZlcmVuY2VzLiAgQ29sdW1ucyBhcmUgb3B0aW9uYWxseQoJICBkaXNwbGF5YWJsZSBhZ2Fpbi4KCQoyMDAwLTA2LTE0IDE2OjE1ICBoYXJkYWtlcgoKCS0gKHNubXB0b3NxbCk6IGZpeCBoaXN0b3J5IGRlbGV0aW9uLgoJCjIwMDAtMDYtMTIgMTY6NDMgIGhhcmRha2VyCgoJLSAoc25tcGQuY29uZi41LmRlZik6IGRvY3VtZW50IHRyYXBzZXNzLgoJCjIwMDAtMDYtMTIgMTY6MzkgIGhhcmRha2VyCgoJLSAoYWdlbnRfcmVhZF9jb25maWcuYywgYWdlbnRfdHJhcC5jLCBhZ2VudF90cmFwLmgpOgoJICAtIG5ldyBzbm1wZC5jb25mIHRva2VuIGZvciB0cmFwIHNlc3Npb25zOiAidHJhcHNlc3MiLgoJICAgIC0gdXNlcyBzbm1wX3BhcnNlX2FyZ3Mgc28gYW55IHR5cGUgb2YgdHJhcCBjYW4gYmUgc2VudCB3aXRoIGl0CgkgICAgICBtb2RpZmllZCBieSBhbnkgb2YgdGhlIHBhcmFtZXRlcnMgdGhhdCBhcmUgZG9jdW1lbnRlZCBpbiBzbm1wY21kKDEpLgoJICAgIC0gdjMgdHJhcHMgZG9uJ3Qgd29yayBkdWUgdG8gdGhlIHNhbWUgVVNNIHByb2JsZW1zIGZvdW5kIGluIHRoZQoJICAgICAgcmVjZW50IHByb3h5IHN1Ym1pc3Npb25zIChteSBuZXh0IHRhcmdldCkuCgkgICAgLSAtQ2kgaW4gdGhlIGFyZ3VtZW50IHNwZWNpZmllcyBpbmZvcm1zIHNob3VsZCBiZSB1c2VkLgoJCjIwMDAtMDYtMTIgMTY6MTggIGhhcmRha2VyCgoJLSAobWFzdGVyX3JlcXVlc3QuYyk6IHJlLWVuYWJsZSBmcmVlaW5nIG9mIG1hc3RlciByZXF1ZXN0LgoJCjIwMDAtMDYtMTIgMTY6MTcgIGhhcmRha2VyCgoJLSAoYWNjb25maWcuaCwgY29uZmlnLmguaW4pOiBzYXZlIGV4ZWMgZGF0YSB0byAvdmFyL3VjZC1zbm1wLgoJICAtIGNvdWxkIGNhdXNlIHByb2JsZW1zIGZvciBub24tcm9vdCBydW5zLiAgVW50ZXN0ZWQuCgkKMjAwMC0wNi0xMiAxNDoxMiAgaGFyZGFrZXIKCgktIChzbm1wdHJhcGRfbG9nLmMpOiBQYXRjaCBmcm9tIE1hcmtrdSBMYXVra2FuZW46CgkgIC0gcmVtb3ZlIGVuZGluZyBjb21tYXMgaW4gZW51bSBsaXN0LgoJCjIwMDAtMDYtMTIgMTA6MzYgIGhhcmRha2VyCgoJLSAoc2V0dXBkYiwgc2V0dXB1c2VyLCBzbm1wdG9zcWwpOiB1c2UgIlRhYmxlInMgaW5zdGVhZCBvZiAiRW50cnkicy4KCQoyMDAwLTA2LTEyIDEwOjMzICBoYXJkYWtlcgoKCS0gKG1hbmFnZXIucG0pOiBzYXZlIG1pYiBkZXNjcmlwdGlvbnMgZm9yIGRpc3BsYXkgcHVycG9zZXMgKGFnYWluKS4KCQoyMDAwLTA2LTEyIDEwOjI5ICBoYXJkYWtlcgoKCS0gKG1hbmFnZXIucG0pOiByZW1vdmUgZGVidWdnaW5nIHN0YXRlbWVudHMuCgkKMjAwMC0wNi0xMiAxMDoyNyAgaGFyZGFrZXIKCgktIChtYW5hZ2VyLnBtKTogcHJvcGVybHkgc29ydCBkaXNwbGF5ZWQgdGFibGUgY29sdW1ucyBhZ2Fpbi4KCQoyMDAwLTA2LTA3IDEzOjIzICBoYXJkYWtlcgoKCS0gKHNubXBfY29uZmlnLjUuZGVmLCByZWFkX2NvbmZpZy5jLCByZWFkX2NvbmZpZy5oKToKCSAgLSB0aGUgVFlQRS5jb25mIHBhcnNlciBub3cgYWNjZXB0cyB0b2tlbnMgZnJvbSBhIGRpZmZlcmVudCAuY29uZgoJICAgIGZpbGUgVFlQRSBpZiBhIHNwZWNpYWwgIltUWVBFXSIga2V5d29yZCBpcyBpbnNlcnRlZCBpbnRvIHRoZQoJICAgIC5jb25mIGZpbGUuICBTZWUgc25tcF9jb25maWcoNSkgZm9yIGEgYmV0dGVyIGRlc2NyaXB0aW9uLgoJCjIwMDAtMDYtMDcgMTM6MjIgIGhhcmRha2VyCgoJLSAoYWNjb25maWcuaCwgY29uZmlnLmguaW4sIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluKToKCSAgLSBtYXAgc3RydG91bCB0byBhdG9pIGlmIHRoZSBmdW5jdGlvbiBpc24ndCBmb3VuZC4KCQoyMDAwLTA2LTA2IDE0OjI2ICBoYXJkYWtlcgoKCS0gKElOU1RBTEwsIGdyZWVuLmdpZiwgbWFuYWdlci5wbSwgcmVkLmdpZiwgc2V0dXBhdXRoLCBzZXR1cGRiLAoJICBzZXR1cG5ld2hvc3QsIHNldHVwdXNlciwgc25tcHRvc3FsLCBzbm1wdG9zcWx0YWJsZSwgc3FsdG9odG1sKToKCSAgLSBtYW5hZ2VtZW50IGNsZWFudXAgYW5kIGluc3RhbGxhdGlvbiBpbnN0cnVjdGlvbnMgd3JpdHRlbi4KCSAgLSBzaG91bGQgYmUgbW9zdGx5IGNvbXBsZXRlIChpZSwgYmFyZWx5IGZ1bmN0aW9uYWwpIGZvciB0aGUgYWxwaGEgdGVzdGVycy4KCQoyMDAwLTA2LTA2IDA4OjAzICBoYXJkYWtlcgoKCS0gKHNubXB0b3NxbCk6IGhvc3QgbmFtZSBjaGFuZ2VzIC0+IHZhcmNoYXIoNjQpCgkKMjAwMC0wNi0wNiAwODowMiAgaGFyZGFrZXIKCgktIChtYW5hZ2VyLnBtKTogbWFueSBtaW5vciBmaXhlcyBhbmQgY2hhbmdlcy4KCQoyMDAwLTA2LTA2IDA4OjAyICBoYXJkYWtlcgoKCS0gKGRpc3BsYXl0YWJsZS5wbSk6IGFsbG93IHRhYmxlIHRpdGxlIHNldHRpbmcuCgkKMjAwMC0wNi0wMiAxMTo0MSAgaGFyZGFrZXIKCgktICguY3ZzaWdub3JlKTogYWRkICoubWFkZS4KCQoyMDAwLTA2LTAyIDExOjQwICBoYXJkYWtlcgoKCS0gKE1ha2VmaWxlLmluLCBmaXhwcm9jLCBpcGYtbW9kLnBsLCBtaWIyYywgdGttaWIpOgoJICAtIG1ha2UgKGFuZCBpbnN0YWxsKSBwZXJsIHNjcmlwdHMgZGlmZmVyZW50bHksIHdpdGhvdXQgbW9kaWZ5aW5nIHRoZSBvcmlnLgoJCjIwMDAtMDYtMDEgMTY6NDcgIGhhcmRha2VyCgoJLSAoc25tcHRvc3FsKTogdHlwb3MuCgkKMjAwMC0wNi0wMSAxNjo0NCAgaGFyZGFrZXIKCgktIChzbm1wdG9zcWwpOgoJICAtIGRlYnVnZ2luZyB0byBTVERFUlIuCgkgIC0gYXV0byBkZWxldGlvbiBvZiBvbGQgaGlzdG9yaWNhbCBkYXRhLgoJCjIwMDAtMDYtMDEgMTY6NDQgIGhhcmRha2VyCgoJLSAobWFuYWdlci5wbSk6IGJlZ2lubmluZ3Mgb2YgYSBuaWNlciByZWFsIGludGVyZmFjZS4KCQoyMDAwLTA2LTAxIDE2OjQzICBoYXJkYWtlcgoKCS0gKGdldFZhbHVlcy5wbSk6IHNvbWUgdmFyaWFibGVzIHdlcmUgZ2xvYmFsIGFuZCBoZW5jZSBwZXJzaXN0ZW50IGFuZAoJICB3ZXJlIG1lc3NpbmcgdGhpbmdzIHVwLgoJCjIwMDAtMDYtMDEgMTQ6NDggIGhhcmRha2VyCgoJLSAoc25tcGQuYyk6IHN0b3JlIHBlcnNpc3RlbnQgZGF0YSBpbW1lZGlhdGVseSBhZnRlciBpbml0J2luZyB0bwoJICBlbnN1cmUgd2UgdXBkYXRlIGNvdW50ZXJzIGFuZCBzdHVmZiB0aGF0IG11c3QgY2hhbmdlIChlZywgZW5naW5lQm9vdHMpLgoJCjIwMDAtMDUtMzEgMTY6MjIgIGhhcmRha2VyCgoJLSAoc25tcGQuMS5kZWYpOiBkZXNjcmliZSAtSS4KCQoyMDAwLTA1LTMxIDE1OjUyICBoYXJkYWtlcgoKCS0gKGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBtaWJfbW9kdWxlcy5jLCBtaWJfbW9kdWxlcy5oLCBzbm1wZC5jKToKCSAgLSBuZXcgLUkgc3dpdGNoIHRvIHNubXBkIHRvIGRvIGR5bmFtaWMgZGV0ZXJtaW5hdG9uIG9mIHdoaWNoIG1pYgoJICAgIG1vZHVsZXMgdG8gaW5pdGlhbGl6ZSAoYW5kIGhlbmNlIHdoaWNoIG1pYiB0cmVlIHNlY3Rpb25zIHRvIHN1cHBvcnQpLgoJCjIwMDAtMDUtMzEgMTU6NTAgIGhhcmRha2VyCgoJLSAoZGVmYXVsdF9zdG9yZS5jLCBkZWZhdWx0X3N0b3JlLmgpOiBkZWZhdWx0IHN0b3JlIHJvdXRpbmVzIGZvciB2b2lkIHBvaW50ZXJzLgoJIC0gd2hpY2ggSSBpbW1lZGlhdGVseSBkZWNpZGVkIHRvIGRvIHNvbWV0aGluZyBkaWZmZXJlbnQgZm9yIHdoYXQgSQoJICAgb3JpZ2luYWxseSBpbXBsZW1lbnRlZCBpdCBmb3IsIHNvIGl0cyBub3QgYmVpbmcgdXNlZCB5ZXQuCgkKMjAwMC0wNS0zMSAwNTo1OSAgZGF2ZXMKCgktIChtaWJJSS9pcC5bY2hdKTogQWxsb3cgSVAgc3VwcG9ydCB3aXRob3V0IHRoZSBBdC9pcE5ldFRvTWVkaWEgbW9kdWxlCgkKMjAwMC0wNS0zMCAxNzoxMSAgaGFyZGFrZXIKCgktIChwcm94eS5jLCBwcm94eS5oKTogc2ltcGxlIHByb3h5IHN1cHBvcnQuCgkgIC0gbWFwcyBvbmUgb2lkIGluc2lkZSB0aGUgYWdlbnQgdG8gYSBwb3NzaWJseS1kaWZmZXJlbnQgb2lkIG9uIGEgdGFyZ2V0LgoJICAtIHVzZXMgc25tcF9wYXJzZV9hcmdzKCkgc28gaXQgdGFrZXMgc3RhbmRhcmQgY29tbWFuZCBsaW5lIGNvbmZpZyBvcHRpb25zLgoJICAtIG5vIHNldCBzdXBwb3J0LgoJICAtIG5vIGtpbGwgLUhVUCBzdXBwb3J0LgoJICAtIG5vIFNOTVB2MyBzdXBwb3J0IChzaWdoKS4KCQoyMDAwLTA1LTMwIDE1OjA2ICBuYmEKCglmaWxlIElBTkEtTEFOR1VBR0UtTUlCLnR4dCB3YXMgaW5pdGlhbGx5IGFkZGVkIG9uIGJyYW5jaCBWNC0xLTEtcGF0Y2hlcy4KCQoyMDAwLTA1LTMwIDE1OjA2ICBuYmEKCglmaWxlIElBTkEtQUREUkVTUy1GQU1JTFktTlVNQkVSUy1NSUIudHh0IHdhcyBpbml0aWFsbHkgYWRkZWQgb24gYnJhbmNoIFY0LTEtMS1wYXRjaGVzLgoJCjIwMDAtMDUtMzAgMTU6MDYgIG5iYQoKCWZpbGUgRElTTUFOLVNDSEVEVUxFLU1JQi50eHQgd2FzIGluaXRpYWxseSBhZGRlZCBvbiBicmFuY2ggVjQtMS0xLXBhdGNoZXMuCgkKMjAwMC0wNS0zMCAxNTowNiAgbmJhCgoJZmlsZSBBR0VOVFgtTUlCLnR4dCB3YXMgaW5pdGlhbGx5IGFkZGVkIG9uIGJyYW5jaCBWNC0xLTEtcGF0Y2hlcy4KCQoyMDAwLTA1LTMwIDA3OjQ3ICBtc2xpZmNhawoKCUZpeCBwcm9ibGVtIGlkZW50aWZpZWQgYnkgVi4gR3JlbmV0IDogbmV3IG1ldGhvZCBzbm1wX29pZF9taW5fY29tcGFyZQoJCjIwMDAtMDUtMzAgMDE6MzEgIG5iYQoKCWZpbGUgbWliZmV0Y2ggd2FzIGluaXRpYWxseSBhZGRlZCBvbiBicmFuY2ggVjQtMS0xLXBhdGNoZXMuCgkKMjAwMC0wNS0zMCAwMTozMSAgbmJhCgoJZmlsZSBzbWlzdHJpcCB3YXMgaW5pdGlhbGx5IGFkZGVkIG9uIGJyYW5jaCBWNC0xLTEtcGF0Y2hlcy4KCQoyMDAwLTA1LTMwIDAxOjMxICBuYmEKCglmaWxlIE1ha2VmaWxlLm1pYiB3YXMgaW5pdGlhbGx5IGFkZGVkIG9uIGJyYW5jaCBWNC0xLTEtcGF0Y2hlcy4KCQoyMDAwLTA1LTI2IDA5OjI0ICBkYXZlcwoKCS0gKG1pYklJL3N5c09SVGFibGUuYyBtaWJJSS9zeXN0ZW1fbWliLmMpOgoJICAtIFVzZSBuZXcgdGltZSB1dGlsaXR5IHJvdXRpbmVzIHRvIHNpbXBsaWZ5IHByb2Nlc3NpbmcKCSAgLSBVcGRhdGUgc3lzT1JMYXN0Q2hhbmdlIHdoZW4gYWRkaW5nL3JlbW92aW5nIGVudHJpZXMKCQoyMDAwLTA1LTI2IDA5OjIzICBkYXZlcwoKCS0gKHV0aWxfZnVuY3MuW2NoXSk6IE5ldyB0aW1lLWRpZmYgdXRpbGl0eSByb3V0aW5lcwoJCjIwMDAtMDUtMjYgMDg6NDYgIGRhdmVzCgoJLSAoc25tcGQuYyBzbm1wX2FnZW50LmMgbWliSUkvdmFyX3JvdXRlLmMpOiBVc2UgJ21pYmluY2wuaCcgaGVhZGVyCgkKMjAwMC0wNS0yNiAwNzo0OCAgZGF2ZXMKCgktIChhZ2VudF9yZWdpc3RyeS5bY2hdIGFnZW50eC9jbGllbnQuW2NoXQoJICAgYWdlbnR4L21hc3Rlcl9yZXF1ZXN0LmMgYWdlbnR4L3N1YmFnZW50LmMpOgoJICAgLSBTdXBwb3J0IGZvciBNSUIgcmVnaW9uIHRpbWVvdXRzCgkKMjAwMC0wNS0yNiAwNzo0NiAgZGF2ZXMKCgktIChzbm1wLmggc25tcF9hcGkuYyBzbm1wX2NsaWVudC5jKTogU3VwcG9ydCBmb3IgcGVyLXJlcXVlc3QgdGltZW91dCBoYW5kbGluZwoJCjIwMDAtMDUtMjYgMDc6NDUgIGRhdmVzCgoJLSAoYWdlbnR4L3Byb3RvY29sLmMpOiBNaW5vciBlcnJvciBpbiBBZ2VudFggcGFja2V0IGR1bXAKCQoyMDAwLTA1LTI1IDEwOjA3ICBoYXJkYWtlcgoKCS0gKG1lbW9yeS5jKTogUGF0Y2ggZnJvbSBSYWduYXIgS2r4cnN0YWQ6CgkgIC0gZml4ZWQgbGludXggcHJvYmxlbTogd3JvbmcgcGFyYW1zIGdldHRpbmcgcmV0dXJuZWQuCgkKMjAwMC0wNS0yNSAwNTozOCAgbXNsaWZjYWsKCglGaXggdXNlIG9mIGJpbjJhc2MgdG8gbm90IGFsd2F5cyBzaG93ICJzdHJpbmciOyB1c2Ugc25tcF9vaWRfY29tcGFyZSwgdG9vLgoJU2VlIGJ1ZyAjMjM0IGZvciBkZXRhaWxzLgoJCjIwMDAtMDUtMjUgMDM6MzkgIGRhdmVzCgoJLSAobWliSUkvaW50ZXJmYWNlcy5jKTogQ29uc29saWRhdGUgaGVhZGVyIGhhbmRsaW5nLgoJCjIwMDAtMDUtMjUgMDM6MzEgIGRhdmVzCgoJLSAobWliSUkvaW50ZXJmYWNlcy5jKTogQ29ycmVjdCBjb25mdXNpbmcgY29tbWVudAoJCjIwMDAtMDUtMjUgMDE6NTMgIGRhdmVzCgoJLSAoY29uZmlndXJlLmluIGNvbmZpZ3VyZSk6IFJlcGxhY2UgdXNlIG9mICdjdXQnIHdpdGggZXF1aXZhbGVudCAnc2VkJyBjYWxscwoJCjIwMDAtMDUtMjUgMDE6MzAgIGRhdmVzCgoJLSAoY29uZmlndXJlLmluIGFjbG9jYWwubTQgY29uZmlndXJlKToKCSAgLSBEaXJlY3QgY2VydGFpbiBjaGVja3MgdG8gdGhlIGFwcHJvcHJpYXRlIGZpbGUgZGVzY3JpcHRvciAoc2VlIEJVRyMyNDcpCgkKMjAwMC0wNS0yMiAxNjoyMiAgaGFyZGFrZXIKCgktIChhcHBzLy5jdnNpZ25vcmUpOiBhZGQgbW9yZSBzdHVmZiB0byBpZ25vcmUuCgkKMjAwMC0wNS0yMiAxNjoyMSAgaGFyZGFrZXIKCgktIChNYWtlZmlsZS5pbiwgc25tcF9wYXJzZV9hcmdzLmMsIHNubXBfcGFyc2VfYXJncy5oLCBzbm1wYnVsa2dldC5jLAoJICBzbm1wYnVsa3dhbGsuYywgc25tcGRlbHRhLmMsIHNubXBkZi5jLCBzbm1wZ2V0LmMsIHNubXBnZXRuZXh0LmMsCgkgIHNubXBzZXQuYywgc25tcHN0YXR1cy5jLCBzbm1wdGFibGUuYywgc25tcHRlc3QuYywgc25tcHRyYXAuYywKCSAgc25tcHVzbS5jLCBzbm1wdmFjbS5jLCBzbm1wd2Fsay5jLCBNYWtlZmlsZS5pbiwgc25tcF9wYXJzZV9hcmdzLmMsCgkgIHNubXBfcGFyc2VfYXJncy5oKToKCSAgLSBtb3ZlZCBzbm1wX3BhcnNlX2FyZ3MgdG8gdGhlIGxpYnJhcnksIGFzIEkgcHJvbWlzZWQgdG8gZG8gYWdlcyBhZ28uCgkgICAgLSBubyBsb25nZXIgY2FsbHMgdXNhZ2UoKSBkaXJlY3RseSwgYnV0IHJldHVybnMgLTEgaWYgeW91IHNob3VsZC4KCQoyMDAwLTA1LTIyIDA1OjQ3ICBkYXZlcwoKCS0gKHNubXBsaWIvdG9vbHMuW2NoXSk6IFJvdXRpbmUgZm9yIGNvbXBhcmluZyB0d28gbWFya2Vycy4KCQoyMDAwLTA1LTIyIDA1OjQyICBkYXZlcwoKCS0gKGxvY2FsL21pYjJjKTogR2VuZXJhdGUgbXVsdGlwbGUgdGFibGVzIGluIG9uZSBjb2RlIGZpbGUKCQoyMDAwLTA1LTE3IDEwOjI4ICBoYXJkYWtlcgoKCS0gKHZhY21fdmFycy5jLCB2YWNtX3ZhcnMuaCwgdmFjbS5jLCB2YWNtLmgpOiBQYXRjaCBmcm9tIEFybmUgT2VzbGVib2U6CgkgIC0gd3JpdGFibGUgdmFjbSBtaWIgc3VwcG9ydC4KCSAgLSBvdGhlciBtaXNjIHZhY20gZml4ZXMuCgkKMjAwMC0wNS0xNyAxMDoyNiAgaGFyZGFrZXIKCgktIChzbm1wdXNtLmMpOiBQYXRjaCBmcm9tIEFybmUgT2VzbGVib2U6CgkgIC0gRG9uJ3Qgc2VnZmF1bHQgb24gYW4gdW5rbm93biBjb21tYW5kLCBpbnN0ZWFkIHByaW50IGEgd2FybmluZy4uCgkKMjAwMC0wNS0xNyAxMDoyNSAgaGFyZGFrZXIKCgktIChzbm1wdmFjbS5jKTogUGF0Y2ggZnJvbSBBcm5lIE9lc2xlYm9lOgoJICAtIGFkZGVkIGEgbmV3IGNvbW1hbmQ6IHNubXB2YWNtLgoJCjIwMDAtMDUtMTcgMDk6MjUgIGhhcmRha2VyCgoJLSAoYWdlbnRfcmVhZF9jb25maWcuYyk6IG1lbnRpb24gdGhlIHBvcnQgbnVtYmVyIG9uIHRoZSB0cmFwc2luayBoZWxwIGxpbmUuCgkKMjAwMC0wNS0xNyAwOToyMCAgaGFyZGFrZXIKCgktIChzbm1wdHJhcGQuYyk6IHVzZSBzdGFuZGFyZGl6ZWQgYnVmZmVyIHNpemVzCgkKMjAwMC0wNS0xNyAwOToxMyAgaGFyZGFrZXIKCgktIChNYWtlZmlsZS5pbiwgc25tcHRyYXBkLmMsIHNubXB0cmFwZF9sb2cuYywgc25tcHRyYXBkLjgpOiBQYXRjaCBmcm9tCgkgIEplZmYgQ291cnM6CgkgIC0gY3VzdG9taXplZCBmb3JtYXR0aW5nIG9mIHRyYXAgb3V0cHV0LgoJCjIwMDAtMDUtMTcgMDk6MTEgIGhhcmRha2VyCgoJLSAoUkVBRE1FKTogYWRkIEplZmYgYW5kIEFybmUuCgkKMjAwMC0wNS0xNyAwODoxNSAgaGFyZGFrZXIKCgktIChtaWIuYyk6ICpjb3JyZWN0bHkqIGFzc29jaWF0ZSBlc2NhcGVRdW90ZXMgd2l0aCB0aGUgcmlnaHQgZGVmYXVsdF9zdG9yZSBib29sLgoJCjIwMDAtMDUtMTcgMDg6MTEgIGhhcmRha2VyCgoJLSAoc25tcC5jb25mLjUuZGVmKTogZG9jdW1lbnQgZXNjYXBlUXVvdGVzLgoJCjIwMDAtMDUtMTcgMDg6MDkgIGhhcmRha2VyCgoJLSAoc25tcGNtZC4xLCBkZWZhdWx0X3N0b3JlLmgsIG1pYi5jKTogbmV3IG9wdGlvbiAtT0U6CgkgIC0gc2hlbGwgYmFja3NsYXNoIGVzY2FwZSBxdW90YXRpb25zIG1hcmtzIGZvciBjdXR0aW5nIGFuZCBwYXN0aW5nCgkgICAgb250byBhbm90aGVyIHNubXAgY29tbWFuZCBsaW5lLgoJCjIwMDAtMDUtMTUgMDk6MjQgIGRhdmVzCgoJLSAobWliSUkve2lwLGljbXAsdGNwLHVkcCxrZXJuZWxfbGludXh9LltjaF0pOgoJICAtICBQdWxsIExpbnV4IE1JQi1JSSBzdGF0aXN0aWNzIGdhdGhlcmluZyBpbnRvIGEgc2luZ2xlIHJvdXRpbmUuCgkgIC0gIENhY2hlIE1JQi1JSSBzdGF0aXN0aWNzIG9uIGFsbCBhcmNoaXRlY3R1cmVzLgoJCjIwMDAtMDUtMTUgMDg6NTMgIGhhcmRha2VyCgoJLSAodWNkX3NubXAuaCwgdm1zdGF0X2JzZGk0LmMsIHZtc3RhdF9ic2RpNC5oKTogUGF0Y2ggZnJvbSBCZXJ0IERyaWVodWlzOgoJICAtIHZtc3RhdCBzdXBwb3J0IGZvciBic2RpNC4KCQoyMDAwLTA1LTE1IDAzOjA2ICBkYXZlcwoKCS0gKHNubXBfYWdlbnQuYyk6IFJlLXJlbW92ZSByZWR1bmRhbnQgUERVIGNsb25lCgkJKEl0IHJlYXBwZWFyZWQgZHVyaW5nIGEgcmVjZW50IGNoYW5nZSkKCQoyMDAwLTA1LTE1IDAzOjAwICBkYXZlcwoKCS0gKGFnZW50X3JlZ2lzdHJ5LltjaF0gYWdlbnR4L21hc3Rlcl9hZG1pbi5jKTogSW1wbGVtZW50IG1pc3Npbmcgcm91dGluZSAndW5yZWdpc3Rlcl9taWJfY29udGV4dCcKCQoJLSAoYWdlbnRfcmVnaXN0cnkuW2NoXSBhZ2VudF9pbmRleC5bY2hdKTogTW92ZSAnZmQnIHJlZ2lzdHJ5IGhhbmRsaW5nIGJhY2sgdG8gYWdlbnRfcmVnaXN0cnkKCQoJLSAoYWdlbnR4L2NsaWVudC5jKTogUmVjb2duaXNlIG5ldyBjb2RlIGZpbGUgZm9yIGluZGV4IGhhbmRsaW5nCgkKMjAwMC0wNS0xMiAxMDoxNSAgaGFyZGFrZXIKCgktIChzbm1wX2FnZW50LmMpOiBVbSwgZGVmYXVsdCB0byBwb3J0IDE2MS4gIE9wcHMuCgkKMjAwMC0wNS0xMiAwOTowMCAgZGF2ZXMKCgktIChhZ2VudF9yZWdpc3RyeS5bY2hdIHZhcl9zdHJ1Y3QuaCBhZ2VudHgvbWFzdGVyX2FkbWluLmMpOgoJICAtIFByZXBhcmF0aW9uIGZvciBwZXItTUlCIHJlZ2lvbiB0aW1lb3V0LCBhbmQgY29udGV4dCBzdXBwb3J0CgkKMjAwMC0wNS0xMiAwODo0NSAgZGF2ZXMKCgktIChrZXJuZWxfc3Vub3M1LmMpOiBSZWNvZ25pc2UgU29sYXJpcyBBVE0gTEFOIEVtdWxhdGlvbiBpbnRlcmZhY2VzCgkJVGhhbmtzIHRvIEpheSBZb3VuZwoJCjIwMDAtMDUtMTIgMDg6MTMgIGRhdmVzCgoJLSAoYWdlbnRfaW5kZXguW2NoXSBhZ2VudF9yZWdpc3RyeS5bY2hdIE1ha2VmaWxlLmluIGFnZW50eC9tYXN0ZXJfYWRtaW4uYyk6CgkgIC0gU3BsaXQgaW5kZXggaGFuZGxpbmcgb3V0IGZyb20gdGhlIE1JQiByZWdpc3RyeS4KCQoyMDAwLTA1LTEyIDA3OjAyICBkYXZlcwoKCS0gKGtlcm5lbF9zdW5vczUuYyk6IEFkZCBzdXBwb3J0IGZvciByZWNvZ25pc2luZyBRdWFkRmFzdEV0aGVyIGludGVyZmFjZQoJCjIwMDAtMDUtMTIgMDY6NTcgIGRhdmVzCgoJLSAoYXBwcy9zbm1wdGFibGUuYyk6IEZpeCBwcm9ibGVtIHdpdGggbWlzc2luZyBzZXBhcmF0b3IgKHdpdGggLUNpIC1DZikKCQlUaGFua3MgdG8gWGF2aWVyIEZPVVJORVQKCQoyMDAwLTA1LTEyIDA0OjAyICBkYXZlcwoKCS0gKHNubXBfYWdlbnQuYyk6IFJlbW92ZSByZWR1bmRhbnQgUERVIGNsb25lCgkJSSdtIHN1cmUgdGhpcyB3YXMgcHV0IGluIGZvciBhIHJlYXNvbiwgYnV0IEkgY2FuJ3QgcmVtZW1iZXIgd2hhdC4KCQlJdCBkb2Vzbid0IHNlZW0gdG8gYmUgbmVlZGVkIG5vdywgYW5kIGp1c3QgbGVha3MgbWVtb3J5LgoJCUhlcmUncyBob3BpbmcuLi4uLgoJCjIwMDAtMDUtMTIgMDM6MTEgIGRhdmVzCgoJLSAoYWdlbnQvc25tcGQuYyk6IENhdGNoIChhbmQgaWdub3JlKSBTSUdQSVBFIHNpZ25hbHMuCgkJRGlzYXBwZWFyaW5nIHN1YmFnZW50cyB0aGVyZWZvciBhcHBlYXIgYXMgbm9ybWFsIEkvTyBmYWlsdXJlcwoJCjIwMDAtMDUtMTIgMDI6MjQgIGRhdmVzCgoJLSAoYWdlbnR4L3Byb3RvY29sLmMpOgoJICAtIEltcGxlbWVudCBvcGFxdWUtZW5jb2RlZCBmbG9hdCAmIGRvdWJsZSB0eXBlcwoJICAtIEJyaW5nIHBhY2tldCBkdW1wIGluIGxpbmUgd2l0aCB0aGUgbWFpbiBsaWJyYXJ5IHN0eWxlCgkgIC0gQWRkIHBhY2tldCBkdW1wIGNhcGFiaWxpdHkgZm9yIG91dGdvaW5nIFBEVXMKCQoyMDAwLTA1LTEwIDE2OjUyICBoYXJkYWtlcgoKCS0gKHNubXBkLjEuZGVmKTogZG9jdW1lbnQgLXAuCgkKMjAwMC0wNS0xMCAxNjo0MyAgaGFyZGFrZXIKCgktIChzbm1wX2FnZW50LmMpOiBhbHdheXMgdXNlIHRoZSBkZWZhdWx0IHRyYW5zcG9ydCBtYXBwaW5nLCBub3QgdGhlIGxhc3Qgb25lLgoJCjIwMDAtMDUtMTAgMTY6MjUgIGhhcmRha2VyCgoJLSAoZHNfYWdlbnQuaCwgc25tcF9hZ2VudC5jLCBzbm1wZC5jKTogaW1wbGVtZW50IG11bHRpcGxlIHRyYW5zcG9ydAoJICBtYXBwaW5ncyB2aWEgLXAgW3RyYW5zcG9ydDpdcG9ydFtAYWRkcmVzc10uCgkKMjAwMC0wNS0xMCAxMTowOCAgbXNsaWZjYWsKCglmaXggdWRwc3RhdCAtLT4gdGNwc3RhdAoJCjIwMDAtMDUtMTAgMDc6NTkgIGRhdmVzCgoJLSAoYWdlbnR4L21hc3Rlcl9yZXF1ZXN0LCBhZ2VudHgvbWFzdGVyX2FkbWluLmMpOgoJICAtIEhhbmRsZSBzdWJhZ2VudCBkaXNhcHBlYXJpbmcgd2l0aG91dCB3YXJuaW5nCgkKMjAwMC0wNS0xMCAwNzo1NyAgZGF2ZXMKCgktIChhZ2VudC9zbm1wX2FnZW50LmMgc25tcGxpYi9zbm1wX2FwaS5oKToKCSAgLSBQcm92aWRlIGEgbWVjaGFuaXNtIHRvIGhhbmRsZSBhc3luY2hyb25vdXMgc2VuZCBmYWlsdXJlcy4KCQoyMDAwLTA1LTEwIDA2OjEzICBkYXZlcwoKCS0gKHNubXBfYXBpLmgpOiBMb2dpY2FsIE5PVD8gQml0d2lzZSBOT1Q/IFdobydsbCBub3RpY2UgdGhlIGRpZmZlcmVuY2UgYW55d2F5IQoJCjIwMDAtMDUtMTAgMDU6MzQgIGRhdmVzCgoJLSAoYWdlbnR4L21hc3Rlcl9yZXF1ZXN0LmMpOiBIYW5kbGUgbm9uLXJlc3BvbnNpdmUgc3ViYWdlbnRzCgkKMjAwMC0wNS0xMCAwNTozMyAgZGF2ZXMKCgktIChhZ2VudF9yZWdpc3RyeS5jIG1pYklJL3N5c09SVGFibGUuYyk6IERvbid0IGFzc3VtZSBzdWJzZXNzaW9uIGxpbmsgaXMgdmFsaWQKCQoyMDAwLTA1LTEwIDA1OjI5ICBkYXZlcwoKCS0gKHNubXBfYXBpLmgpOiBEZWZpbml0aW9ucyBmb3Igc2Vzc2lvbiBjbG9zZWRvd24gaGFuZGxpbmcKCQoyMDAwLTA1LTA5IDE0OjQyICBtc2xpZmNhawoKCWFsc28gY2xlYW4gV2luMzIgYmluYXJ5IG9iamVjdHMsIGFuZCBjb3JlIGZpbGVzLgoJCjIwMDAtMDUtMDkgMTQ6MzQgIG1zbGlmY2FrCgoJdG91Y2ggdXAgdGhlICJjbGVhbiIgcnVsZS4KCQoyMDAwLTA1LTA5IDExOjMyICBtc2xpZmNhawoKCXVudGlsIERhdmUncyB2ZXJzaW9uIHdpbnMsIG5lZWQgc25tcF92YXJsaXN0X2FkZF92YXJpYWJsZSB0byBidWlsZCBXaW4zMiBhZ2VudC4KCQoyMDAwLTA1LTA5IDExOjMxICBtc2xpZmNhawoKCWZpeCBzb21lIFdpbjMyIGJ1aWxkcyAoc2lnbmFscz8gd2UgZG9uJ3QgbmVlZCBubyBzdGVlbmtpbmcgc2lnbmFscyEpCgkKMjAwMC0wNS0wOSAxMTozMCAgbXNsaWZjYWsKCglSZW1vdmUgdHJhaWxpbmcgQ1IgWzB4MGRdIGZyb20gb25lIGxpbmUuCgkKMjAwMC0wNS0wOSAwODo1MCAgaGFyZGFrZXIKCgktIChNYWtlZmlsZS50b3AsIE1ha2VmaWxlLmluLCBNYWtlZmlsZS5pbik6IGZpeCBsaW5rIHRpbWUgcHJvYmxlbXMKCSAgd2l0aCBhQ0MgKG9yIGFueSBvdGhlciB1bmtub3duIGNvbXBpbGVyKS4KCQoyMDAwLTA1LTA5IDA4OjQ3ICBoYXJkYWtlcgoKCS0gKE1ha2VmaWxlLnRvcCwgTWFrZWZpbGUuaW4sIE1ha2VmaWxlLmluKTogZml4IGxpbmsgdGltZSBwcm9ibGVtcwoJICB3aXRoIGFDQyAob3IgYW55IG90aGVyIHVua25vd24gY29tcGlsZXIpLgoJCjIwMDAtMDUtMDkgMDc6NDMgIGRhdmVzCgoJLSAoYWdlbnR4L21hc3Rlcl9yZXF1ZXN0LmMpOiBTZW5kIG91dCByZS1kZWxlZ2F0ZWQgcmVxdWVzdHMKCQkoYW5kIGZpeCBhIHByb2JsZW0gd2l0aCBzcGVjaWZ5aW5nIHRoZSBlbmQtb2YtcmFuZ2UgdmFsdWUpCgkKMjAwMC0wNS0wOSAwNzo0MCAgZGF2ZXMKCgktIChhZ2VudHgvc3ViYWdlbnQuYyk6IEZpeCBoYW5kbGluZyBvZiBlcnJvciByZXNwb25zZSBnZW5lcmF0aW9uCgkJKGJ5IGFuYWxvZ3kgd2l0aCByZWNlbnQgY2hhbmdlcyB0byBzbm1wX2FnZW50LmMpCgkKMjAwMC0wNS0wOSAwNzozNCAgZGF2ZXMKCgktIChzbm1wX2FnZW50LmMpOiBIYW5kbGUgQWdlbnRYICJlbmQtb2YtcmFuZ2UiIGluZGljYXRpb24uCgkJKFRoaXMgaXMgbm90IHRoZSBjbGVhbmVzdCB3YXkgb2YgZG9pbmcgdGhpbmdzLAoJCSBidXQgd29ya3MgZm9yIG5vdy4gIFdlIGNhbiB0aWR5IHVwIGxhdGVyKS4KCQoyMDAwLTA1LTA5IDA3OjE2ICBkYXZlcwoKCS0gKHNubXBfdmFycy5jKTogVXNlIE1JQiByZWdpc3RyeSAnc3RhcnQnIHZhbHVlcwoJCShyYXRoZXIgdGhhbiB0aGUgb3JpZ2luYWwgbmFtZSByZWdpc3RlcmVkKQoJCVRoaXMgaGFuZGxlcyBzdWJzZXF1ZW50IHBhcnQgb2YgJ3NwbGl0JyByYW5nZXMgcHJvcGVybHkuCgkKMjAwMC0wNS0wOCAxMTowOCAgaGFyZGFrZXIKCgktIChNYWtlZmlsZS5pbik6IEkgY2FuJ3QgYmVsaWV2ZSB0aGUgbGFzdCBjaGVja2luIGV2ZW4gY29tcGlsZWQgKGx1Y2spLgoJCjIwMDAtMDUtMDggMTE6MDMgIGhhcmRha2VyCgoJLSAoTWFrZWZpbGUuaW4pOiBmaXggbGlicmFyeSBsaXN0LgoJCjIwMDAtMDUtMDUgMDk6NTYgIGhhcmRha2VyCgoJLSAoZGlza2lvLmMpOiBQYXRjaCBmcm9tIEJlcnQgRHJpZWh1aXM6CgkgIC0gZGlzayBpbyBzdXBwb3J0IGZvciBCU0QvT1MuCgkKMjAwMC0wNS0wNSAwOTo1NCAgaGFyZGFrZXIKCgktIChhdC5jKTogUGF0Y2ggZnJvbSBCZXJ0IERyaWVodWlzOgoJICAtIGZpeCBhIHplcm8gYnl0ZSBtYWxsb2MgYnVnIChtb3N0bHkgbm90aWNlZCB3aXRoIC1sZWZlbmNlKS4KCQoyMDAwLTA1LTA1IDA5OjQzICBoYXJkYWtlcgoKCS0gKGNvbmZpZ3VyZSwgY29uZmlndXJlLmluKTogUGF0Y2ggZnJvbSBBbGJlcnQgQ2hpbi1BLVlvdW5nOgoJICAtIC0td2l0aC1saWJ3cmFwIGltcHJvdmVtZW50cy4KCQoyMDAwLTA1LTA1IDA5OjAwICBkYXZlcwoKCS0gKGFnZW50eC9zdWJhZ2VudC5jIGFnZW50eC9tYXN0ZXJfcmVxdWVzdC5jKToKCSAgLSBTaWduaWZpY2FudCBpbXByb3ZlbWVudHMgdG8gQWdlbnRYIHByb2Nlc3NpbmcKCQkoVGhhbmtzIHRvIFJlaW5lciBCZW5pbmdhKQoJCjIwMDAtMDUtMDUgMDg6NTggIGRhdmVzCgoJLSAoc25tcGxpYi9zbm1wX2FwaS5bY2hdIHNubXBsaWIvc25tcF9jbGllbnQuYyBhZ2VudC9zbm1wX2FnZW50LltjaF0pOgoJICAtIE1pbm9yIGNoYW5nZXMgdG8gYXNzaXN0IHdpdGggQWdlbnRYIGRldmVsb3BtZW50CgkJKFRoZXNlIG1heSBub3QgYmUgYWJzb2x1dGVseSBuZWNlc3NhcnksIGJ1dCB0aGV5IGdldCB0aGluZ3Mgd29ya2luZyBhZ2FpbiEpCgkKMjAwMC0wNS0wNCAxNjoyMSAgaGFyZGFrZXIKCgktIChjb25maWd1cmUsIGNvbmZpZ3VyZS5pbik6IG1pbm9yIHVuaW1wb3J0YW50IC0td2l0aG91dC1vcGVuc3NsIGZpeC4KCQoyMDAwLTA1LTA0IDE2OjE5ICBoYXJkYWtlcgoKCS0gKGNvbmZpZ3VyZSwgY29uZmlndXJlLmluKTogUGF0Y2ggZnJvbSBKb2huIEwuIFZpbGxhbG92b3M6CgkgIC0gYWxsb3cgLS13aXRob3V0LW9wZW5zc2wgdG8gd29yay4KCQoyMDAwLTA1LTA0IDE2OjE1ICBoYXJkYWtlcgoKCS0gKE1ha2VmaWxlLmluKTogYWRkIHRoZSBESVNNQU4tU0NSSVBULU1JQi50eHQKCQoyMDAwLTA1LTA0IDE2OjAxICBoYXJkYWtlcgoKCS0gKE1ha2VmaWxlLmluKTogUGF0Y2ggZnJvbSBBbGJlcnQgQ2hpbi1BLVlvdW5nOgoJICAtIGluc3RhbGwgVUNELURJU0tJTy1NSUIudHh0LgoJCjIwMDAtMDUtMDQgMTU6MjEgIGhhcmRha2VyCgoJLSAoZGlzcGxheXRhYmxlLnBtLCBtYW5hZ2VyLnBtKTogbWFrZSBwdXJkeSBncmFwaHMgd2l0aCBoaXN0b3J5IHRhYmxlcy4KCQoyMDAwLTA1LTA0IDA4OjI2ICBkYXZlcwoKCS0gKHNubXBsaWIvc25tcF9jbGllbnQuW2NoXSk6IE5ldyByb3V0aW5lICdzbm1wX2Nsb25lX3ZhcmJpbmQoKScKCQkJKEZyb20gYSBzdWdnZXN0aW9uIGJ5IFJlaW5lciBCZW5pbmdhKQoJCjIwMDAtMDUtMDQgMDg6MjQgIGRhdmVzCgoJLSAoc25tcGxpYi9zbm1wX2FwaS5jKTogVmFyaW91cyBtaW5vciBmaXhlcwoJCShUaGFua3MgdG8gUmVpbmVyIEJlbmluZ2EpCgkKMjAwMC0wNS0wNCAwMToyOSAgZGF2ZXMKCgktIChzbm1wX2FnZW50LltjaF0pOiBIYW5kbGUgaW5kZXgvc3RhdHVzIGluZm9ybWF0aW9uIHNlcGFyYXRlbHkgZnJvbSBQRFUuCgkJQWxzbyBtZWFucyB0aGF0IGRlbGVnYXRlZCByZXF1ZXN0cyBoYXZlIGFjY2VzcyB0byB2YXJpYWJsZSBpbmRleGVzCgkJCShCYXNlZCBvbiBhIHN1Z2dlc3Rpb24gZnJvbSBSZWluZXIgQmVuaW5nYSkKCQoyMDAwLTA1LTA0IDAxOjAwICBkYXZlcwoKCS0gKHVjZC1zbm1wL3Byb2MuYyk6IEluaXRpYWxpemUgbmV3bHkgbWFsbG9jZWQgc3RydWN0dXJlCgkJKFRoYW5rcyB0byBKZWZmIFdpbHNvbiAtIHNlZSBCVUcgIzIzMSkKCQoyMDAwLTA1LTAzIDA5OjA2ICBkYXZlcwoKCS0gKHNubXBfYWdlbnQuW2NoXSBhZ2VudHgvbWFzdGVyX2FkbWluLmMpOgoJICAtIENsb25lIFBEVSB3aXRoaW4gaW5pdF9hZ2VudF9zbm1wX3Nlc3Npb24uCgkgICAgTmV3IHJvdXRpbmUgJ2ZyZWVfYWdlbnRfc25tcF9zZXNzaW9uJwoJCShUaGFua3MgdG8gUmVpbmVyIEJlbmluZ2EpCgkKMjAwMC0wNS0wMyAwODoxNyAgZGF2ZXMKCgktIChzbm1wX2FnZW50LmMpOiBXaGVuIHJldHVybmluZyBhbiBlcnJvciByZXNwb25zZSwKCQl1c2UgYSBjbGVhbiBjb3B5IG9mIHRoZSBvcmlnaW5hbCByZXF1ZXN0IFBEVS4KCQoyMDAwLTA1LTAzIDA4OjE0ICBkYXZlcwoKCS0gKHNubXBfYWdlbnQuW2NoXSk6IFJvdXRpbmUgdG8gaGFuZGxlIHZhcmlhYmxlcyBpbmRpdmlkdWFsbHkKCQkoVGhhbmtzIHRvIFJlaW5lciBCZW5pbmdhKQoJCjIwMDAtMDUtMDMgMDQ6MzcgIGRhdmVzCgoJLSAoc25tcF9hZ2VudC5jKTogQ2hlY2sgYWNjZXNzaWJpbGl0eSBvZiBleGFjdCByZXF1ZXN0cyBiZWZvcmUgcHJvY2Vzc2luZwoJCShhbmQgcmVtb3ZlIHJlZHVuZGFudCAnZ2VuZXJpYycgU0VUIGhhbmRsaW5nKQoJCjIwMDAtMDUtMDIgMDk6NTYgIGhhcmRha2VyCgoJLSAobWFuYWdlci5wbSk6IGxvdHMgb2Ygc21hbGwgY2hhbmdlcy4KCQoyMDAwLTA1LTAxIDExOjM0ICBuYmEKCgktIG1pYi5jOiBmaXggcHJpbnRpbmcgb2YgQklUUyB2YXJpYWJsZXMKCQoyMDAwLTA1LTAxIDA2OjU1ICBtYXJ6CgoJIGFwcGxpZWQgcGF0Y2ggZnJvbSBTdGV2ZSBQaGVyYW4gU25vZGdyYXNzIHRvIGZpeCBpbmNvbXBhdGliaWxpdHkgd2l0aCBwZXJsNS42IHJlZiBzdHJpbmdpZmljYXRpb24KCQoyMDAwLTA0LTI5IDA3OjQ2ICBoYXJkYWtlcgoKCS0gKGNvbmZpZy5oLmluLCBjb25maWd1cmUuaW4sIGFnZW50X3JlZ2lzdHJ5LmMpOiBQYXRjaCBmcm9tIEZyYW5rIFN0cmF1c3M6CgkgIC0gdXNlIHNpZ2FjdGlvbiB3aGVuIGF2YWlsYWJsZS4KCQoyMDAwLTA0LTI4IDE2OjIyICBoYXJkYWtlcgoKCS0gKHNubXB0b3NxbCk6IGZpeCAtbS8tTSB0aGUgd3Jvbmcgd2F5LgoJCjIwMDAtMDQtMjggMTY6MTUgIGhhcmRha2VyCgoJLSAoc25tcHRvc3FsKToKCSAtIGRvIGhpc3Rvcnkgc2F2aW5nIGJldHRlciAoZGlmZmVyZW50IHRhYmxlKS4KCSAtIC1tLy1NIG1pYiBsb2FkaW5nIG9wdGlvbnMgKHdoaWNoIGRvbid0IGFwcGVhciB0byBiZSB3b3JraW5nIHJpZ2h0IHlldCkuCgkKMjAwMC0wNC0yOCAwNzozNiAgaGFyZGFrZXIKCgktIChhZ2VudF9yZWdpc3RyeS5jLCBzbm1wZC5jKTogUGF0Y2ggZnJvbSBGcmFuayBTdHJhdXNzOgoJICAtIGZpeCBzaWduYWwgaGFuZGxpbmcuCgkKMjAwMC0wNC0yNyAxNDo1OCAgaGFyZGFrZXIKCgktIChNYWtlZmlsZS5pbiwgc25tcGRmLmMpOiBpbXBsZW1lbnQgYSByZW1vdGUgZGYgY29tbWFuZCB2aWEgc25tcAoJICAtIChuZWVkcyB0aGUgaG9zdCByZXNvdXJjZXMgbWliIHdvcmtpbmcgb24gdGhlIHJlbW90ZSBzeXN0ZW0pLgoJCjIwMDAtMDQtMjcgMTA6NTcgIGhhcmRha2VyCgoJLSAoTWFrZWZpbGUudG9wLCBjb25maWcuaC5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuaW4pOiBycG0gaXMgbm93CgkgIHJlcXVpcmluZyB5ZXQgYW5vdGhlciBsaWJyYXJ5OiBsaWJwb3B0LgoJCjIwMDAtMDQtMjYgMTU6MjAgIGhhcmRha2VyCgoJLSAoTWFrZWZpbGUudG9wKTogcnVuIGxpYnRvb2wgLS1maW5pc2ggd2l0aG91dCAtbiAoZ28gYWhlYWQgYW5kIGRvIHRoZSBjbWRzKQoJCjIwMDAtMDQtMjYgMTU6MTkgIGhhcmRha2VyCgoJLSAoTWFrZWZpbGUudG9wLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgYWdlbnQvTWFrZWZpbGUuaW4pOgoJICAtIG1vcmUgbGlidG9vbCBmaXhlcyAoLnNvIHZlcnNpb25pbmcsIHByb3Blcmx5IGluc3RhbGwuLi4pCgkKMjAwMC0wNC0yNiAxNDoxOCAgaGFyZGFrZXIKCgktICgqLy5jdnNpZ25vcmUsICovTWFrZWZpbGUuaW4sIE1ha2VmaWxlLnRvcCwgYWNsb2NhbC5tNCwgY29uZmlndXJlLAoJICBjb25maWd1cmUuaW4sIGx0Y29uZmlnLCBsdG1haW4uc2gpOgoJICAtIHVzZSBsaWJ0b29sIGZvciBidWlsZGluZy4KCSAgICAtIENlcnRhaW5seSwgSSBtdXN0IGhhdmUgYnJva2Ugc29tZXRoaW5nIGluIHRoZSBwcm9jZXNzLiAobWFrZSBkZXBlbmQsIGVnKQoJCjIwMDAtMDQtMjYgMTQ6MTUgIGhhcmRha2VyCgoJLSAoKi8uY3ZzaWdub3JlLCAqL01ha2VmaWxlLmluLCBNYWtlZmlsZS50b3AsIGFjbG9jYWwubTQsIGNvbmZpZ3VyZSwKCSAgY29uZmlndXJlLmluLCBsdGNvbmZpZywgbHRtYWluLnNoKToKCSAgLSB1c2UgbGlidG9vbCBmb3IgYnVpbGRpbmcuCgkgICAgLSBDZXJ0YWlubHksIEkgbXVzdCBoYXZlIGJyb2tlIHNvbWV0aGluZyBpbiB0aGUgcHJvY2Vzcy4gKG1ha2UgZGVwZW5kLCBlZykKCQoyMDAwLTA0LTI2IDA4OjExICBoYXJkYWtlcgoKCS0gKEZBUSk6IG5ldyBzZWNvbmRhcnkgc2xvZ2FuLgoJCjIwMDAtMDQtMjYgMDc6MjIgIGhhcmRha2VyCgoJLSAoc25tcF9hcGkuYywgc25tcHVzbS5jKTogQXR0ZW1wdCB0byBwYXJzZSB0aGUgUERVIHdoZW4gYSByZXBvcnQgaXMKCSAgYmVpbmcgc2VudCBzbyB0aGF0IHRoZSByZXF1ZXN0aWQgY2FuIGJlIHVzZWQgaW4gdGhlIG91dGdvaW5nIHJlcG9ydC4KCSAgVGhpcyBzaG91bGQgZml4IGEgcHJvYmxlbSB3aGVyZSBTTk1QIFJlc2VhcmNoJ3MgRW1hbnRlIGFnZW50IGlzCgkgIGRvaW5nIGVuZ2luZUlEIGRpc2NvdmVyeSBwcm9iZXMgYmFzZWQgb24gdGhlIHJlcXVlc3RfaWQgKHdoaWNoIGlzIGEKCSAgZmFpcmx5IHBvb3IgY2hvaWNlIGFzIHRoZSBtZXNzYWdlX2lkIHdvdWxkIGJlIGEgYmV0dGVyIG9uZSB0byBtYXRjaAoJICBvbiBpbiBnZW5lcmFsIGFuZCBpcyB0aGUgb25seSBwb3NzaWJsZSB0aGluZyB0byB1c2UgaW4gY2FzZXMgd2hlcmUKCSAgdGhlIHJlcG9ydCBpcyBlbmNyeXB0ZWQpLgoJCjIwMDAtMDQtMjUgMTM6MDggIGhhcmRha2VyCgoJLSAoRkFRKTogbWVudGlvbiB0aGF0IHRoZSBwZXJsIG1vZHVsZSBpcyBpbmNsdWRlZCB3aXRoIHRoZSBzb3VyY2UuCgkKMjAwMC0wNC0yNSAwODoyNCAgaGFyZGFrZXIKCgktIChzbm1wX2FwaS5jKTogbWlzYyAtRGR1bXAgZml4ZXMuCgkKMjAwMC0wNC0yNSAwODowMiAgaGFyZGFrZXIKCgktIChzbm1wdGFibGUuYyk6IGNoZWNrIGZvciBlbmQgb2YgbWliIHZpZXcgZXhjZXB0aW9ucyAodjJjLCB2MykuCgkKMjAwMC0wNC0yNCAxMToyNyAgaGFyZGFrZXIKCgktIChzbm1wX2FwaS5jKTogLUQgc3VwcG9ydCBmb3IgdGhvc2UgIm9sZGVyIiBwcm90b2NvbHMgdGhhdCBzaG91bGRuJ3QKCSAgYmUgdXNlZCBhbnltb3JlICh2MSwgdjJjKS4KCQoyMDAwLTA0LTI0IDEwOjM2ICBoYXJkYWtlcgoKCS0gKGFzbjEuYywgZGVmYXVsdF9zdG9yZS5oLCBtaWIuYywgc25tcC5jLCBzbm1wX2FwaS5jLCBzbm1wX2F1dGguYywKCSAgc25tcF9kZWJ1Zy5jLCBzbm1wX2RlYnVnLmgsIHNubXB1c20uYyk6CgkgIC0gdGltZXN0YW1wcyBjYW4gYmUgcHJpbnRlZCBhcyBhIG51bWVyaWMgbnVtYmVyIG9ubHkgKC1PdCkuCgkgIC0gbW9yZSBjb25maWd1cmFibGUgcGFja2V0IGR1bXBpbmcgY29kZSBmb3IgYm90aCBzZW5kIGFuZCByZWNlaXZlLgoJICAgIC0gdXNlcyBuZXcgLUQgdG9rZW5zOiBkdW1waCAoaGVhZGVycyksIGR1bXB4IChoZXgpLCBkdW1wdgoJICAgICAgKHZhbHVlcykuICBkdW1weF8gYW5kIGR1bXB2XyAobm90ZSB0aGUgX3MpIG1ha2UgaXQgZWF0IHNwYWNlCgkgICAgICAoYW5kIG5ld2xpbmUpIGJlZm9yZSB0aGUgc2VnbWVudCBpbiBxdWVzdGlvbi4gIFRyeSAtRGR1bXAgdGhlbgoJICAgICAgLURkdW1waCxkdW1wdl8gdG8gc2VlIGV4YW1wbGVzLgoJICAgIC0gdG9kbzoKCSAgICAgIC0gYmV0dGVyIGhvcml6b250YWxseSBmb3JtYXRlZCBpbmZvcm1hdGlvbiAocHJvYmFibHkgdXNpbmcgIiVOVU1zIikuCgkgICAgICAtIFVTTSBpcyBjYWxsZWQgYWZ0ZXIgcGR1IGJ1aWxkaW5nIChtYWtlcyBzZW5zZSBidXQgaXMgYmFja3dhcmRzCgkgICAgICAgIHZpc3VhbGx5IGluIHRoZSBkdW1wZWQgcGFja2V0KS4KCSAgICAgIC0gb3B0aW9uIHRvIHN0cmlwIGRhdGF0eXBlIHRva2VuIChpZSBJbnRlZ2VyOikuCgkKMjAwMC0wNC0yNCAwOTozNyAgaGFyZGFrZXIKCgktICh2ZXJzaW9uLmggYnVnLXJlcG9ydCBzZWRzY3JpcHQuaW4pOiB2ZXJzaW9uIHRhZyAoIDQuMi5wcmUwICkKCQoyMDAwLTA0LTI0IDA5OjEzICBoYXJkYWtlcgoKCS0gKHZlcnNpb24uaCBidWctcmVwb3J0IHNlZHNjcmlwdC5pbik6IHZlcnNpb24gdGFnICggRVhULjQuMi5wcmUwICkKCQoyMDAwLTA0LTIxIDE0OjEzICBoYXJkYWtlcgoKCS0gKHNubXB3YWxrLmMpOiBmaXggR0VUIGNhbGwgZm9yIGFuIHNubXB3YWxrLiAod2FzIHVzaW5nIGEgR0VUTkVYVCBQRFUsIGFjaykuCgkKMjAwMC0wNC0yMSAxMDo0MSAgaGFyZGFrZXIKCgktIChzbm1wdjMuYyk6IG1vcmUgdV9sb25nIC0+IHNpemVfdCBmb3IgZW5naW5lSUQgbGVuLgoJCjIwMDAtMDQtMjEgMDg6MTggIGhhcmRha2VyCgoJLSAobWliLmMpOiBmaXggZnByaW50X2Rlc2NyaXB0aW9uIHRvIGNoZWNrIGZvciBudWxsIHN1YnRyZWVzLgoJCjIwMDAtMDQtMjEgMDg6MTcgIGhhcmRha2VyCgoJLSAoc25tcHYzLmMsIHNubXB2My5oKTogdXNlIHNpemVfdCBmb3IgZW5naW5laWQgbGVuZ3Rocy4KCQoyMDAwLTA0LTE5IDExOjAyICBtYXJ6CgoJY2hhbmdlZCBtb2RlX3QgdHlwZWRlZiB0byBhZ3JlZSB3aXRoIHdoYXQgQWN0aXZlU3RhdGUgcGVybCB1c2VzIChhbnlvbmUgaGF2ZSBhIHByb2JsZW0gd2l0aCB0aGlzPykKCQoyMDAwLTA0LTE5IDEwOjU5ICBtYXJ6CgoJYWRkZWQgTWFyYyBMZWhtYW4gcGF0Y2ggdG8gZW5zdXJlIGFsbG9jL2RlYWxsb2MgdXNlIHNhbWUgbWVjaGFuaXNtIChwZXJsIHZzLiBzeXN0ZW0gZGVmYXVsdCkKCQoyMDAwLTA0LTE5IDA4OjI2ICBoYXJkYWtlcgoKCS0gKHNubXBfYWdlbnQuYyk6IGFnZW50X2NoZWNrX2FuZF9wcm9jZXNzKCkgYWx3YXlzIGJsb2NrIGlmIGNhbGxlciByZXF1ZXN0ZWQgaXQuCgkKMjAwMC0wNC0xOSAwNDozNCAgbXNsaWZjYWsKCgltb3ZlIHN0YXRpYyBkZWNsIHRvIC5jO21pbm9yIGNhc3RpbmcgYWJvdXQgdG8gc3VwcG9ydCBhQ0MKCQoyMDAwLTA0LTE4IDExOjExICBtc2xpZmNhawoKCVN5bmNoIGRldmVsIGJyYW5jaCB3aXRoIHBhdGNoZXMgYnJhbmNoLgoJCjIwMDAtMDQtMTggMTE6MDcgIG1zbGlmY2FrCgoJRGVmaW5lIG9wdGFyZyBmb3IgYXBwcyB1c2U7IERlZmluZSB2YWNtX2lzX2NvbmZpZ3VyZWQgZm9yIGFnZW50IHVzZS4KCQoyMDAwLTA0LTE4IDA3OjU3ICBoYXJkYWtlcgoKCS0gKHZtc3RhdC5jLCB2bXN0YXQuaCwgVUNELVNOTVAtTUlCLnR4dCk6IFBhdGNoIGZyb20gTWl6dWtpIEhvbmRhOgoJICAtIGltcGxlbWVudCByYXcgY3B1IHVzYWdlIG51bWJlcnMuCgkKMjAwMC0wNC0xOCAwMzoxOCAgZGF2ZXMKCgktIChtYW4vc25tcHRhYmxlLjEgYXBwcy9zbm1wdGFibGUuYyk6CgkgIC0gQ29tbWFuZC1zcGVjaWZpYyAnLUMnIG9wdGlvbnMgZm9yIHNubXB0YWJsZQoJCjIwMDAtMDQtMTggMDI6MDEgIGRhdmVzCgoJLSAoYXBwcy9zbm1wX3BhcnNlX2FyZ3MuYyk6IEhhbmRsZSBwcmV2aW91cyBmb3JtIG9mIC1aIG9wdGlvbiBhcyB3ZWxsCgkKMjAwMC0wNC0xNyAxNTozNiAgaGFyZGFrZXIKCgktIChzbm1wX3BhcnNlX2FyZ3MuYyk6IGZpeCAtWiBpZiBhcmdzIGFyZSB3cm9uZy4KCQoyMDAwLTA0LTE3IDE1OjMyICBoYXJkYWtlcgoKCS0gKHNubXBfcGFyc2VfYXJncy5jLCBzbm1wY21kLjEpOiBmaXggLVogdG8gdXNlIGEgJywnLgoJCjIwMDAtMDQtMTcgMTU6MDYgIGhhcmRha2VyCgoJLSAobXRhX3NlbmRtYWlsLmMsIG10YV9zZW5kbWFpbC5oKTogUGF0Y2ggZnJvbSBDaHJpc3RvcGggTWFtbWl0enNjaDoKCSAgLSB1cGRhdGUgb24gdGhlIHNlbmRtYWlsIG1vZHVsZS4KCQoyMDAwLTA0LTE3IDE1OjAwICBoYXJkYWtlcgoKCS0gKHZtc3RhdC5jKTogUGF0Y2ggZnJvbSBKb2huIEwuIFZpbGxhbG92b3M6CgkgIC0gZml4IHNzQ3B1U3lzdGVtLCBzc0NwdVVzZXIsIHNzQ3B1SWRsZS4KCQoyMDAwLTA0LTE3IDE0OjE4ICBoYXJkYWtlcgoKCS0gKE1ha2VmaWxlLnRvcCwgTWFrZWZpbGUuaW4pOiBwcm9wZXJseSB1c2UgTE5fUyBmb3IgbGlua2luZyBzbm1waW5mb3JtLgoJCjIwMDAtMDQtMTcgMTM6NDUgIGhhcmRha2VyCgoJLSAoc25tcHVzbS5jLCBzbm1wdjMuYywgc25tcHYzLmgpOiBlbmdpbmVJRCBjaGFuZ2VzIGZvciBiZXR0ZXIgYUNDIHN1cHBvcnQuCgkKMjAwMC0wNC0xNyAxMzo0NCAgaGFyZGFrZXIKCgktICguY3ZzaWdub3JlKTogaWdub3JlIHNubXBpbmZvcm0uCgkKMjAwMC0wNC0xNyAwOTo1OCAgaGFyZGFrZXIKCgktIChzbm1wX2FnZW50LmMpOiBmaXggcm93IGNyZWF0aW9uLgoJCjIwMDAtMDQtMTcgMDc6MjUgIGRhdmVzCgoJLSAoYXV0b19ubGlzdC5jIHNubXBkLmMgYWdlbnR4L21hc3Rlci5jKTogRG9uJ3QgZXhpdCBvbiBmYWlsdXJlIHdpdGggJy1yJwoJCjIwMDAtMDQtMTQgMTU6MDcgIGhhcmRha2VyCgoJLSAoc25tcF9wYXJzZV9hcmdzLmMsIHNubXBkZWx0YS5jLCBzbm1wZ2V0LmMsIHNubXBnZXRuZXh0LmMsCgkgIHNubXBzdGF0dXMuYywgc25tcGNtZC4xLCBzbm1wZ2V0LjEsIGRlZmF1bHRfc3RvcmUuaCwgbWliLmMpOgoJICAtIG1vdmUgLUlmIHRvIC1DZiBhbmQgaW52ZXJ0IGJlaGF2aW91ci4KCQoyMDAwLTA0LTE0IDE1OjA2ICBoYXJkYWtlcgoKCS0gKGNvbmZpZ3VyZSwgY29uZmlndXJlLmluKTogcmVtb3ZlIGRlYnVnZ2luZyBvdXRwdXQgKG9wcHMpLgoJCjIwMDAtMDQtMTQgMDk6MDMgIGhhcmRha2VyCgoJLSAodmVyc2lvaW5mby5jKTogYWxyaWdodC4gIFdobyBtYWRlIHZlcnNpb25DbGVhckNhY2hlIFJPTkxZPwoJCjIwMDAtMDQtMTMgMDU6NDkgIG5iYQoKCS0gc25tcHRyYW5zbGF0ZS4xOiBkZWN1bWVudCB0aGUgLXcgd2lkdGggb3B0aW9uCgkKMjAwMC0wNC0xMiAxMjowNSAgbXNsaWZjYWsKCgloaWRlIHVzZXIncyBob3N0bmFtZTsgcHJvbXB0IGJlZm9yZSBzZW5kaW5nIGUtbWFpbDsgcHJvbXB0IHRvIHNhdmUgYXMgZmlsZS4KCQoyMDAwLTA0LTEyIDExOjIyICBtc2xpZmNhawoKCWZpeCAlZiglcykKCQoyMDAwLTA0LTEyIDA5OjI5ICBoYXJkYWtlcgoKCS0gKHNubXBjbWQuMSk6IGRvY3VtZW50IC1JZi4KCQoyMDAwLTA0LTEyIDA5OjE3ICBoYXJkYWtlcgoKCS0gKHNubXBfcGFyc2VfYXJncy5jKTogcHV0ICsrIGJhY2sgaW4gdGhhdCBhY2NpZGVudGljYWxseSBnb3QgY2hlY2tlZCBpbi4KCQoyMDAwLTA0LTEyIDA5OjE2ICBoYXJkYWtlcgoKCS0gKHNubXBzZXQuYyk6IHB1dCBzcGFjZSBiYWNrIGluIHVzYWdlIGxpbmUuCgkKMjAwMC0wNC0xMiAwOToxMiAgaGFyZGFrZXIKCgktIChzbm1wX3BhcnNlX2FyZ3MuYywgc25tcGRlbHRhLmMsIHNubXBnZXQuYywgc25tcGdldG5leHQuYywKCSAgc25tcHNldC5jLCBzbm1wc3RhdHVzLmMsIGRlZmF1bHRfc3RvcmUuaCwgbWliLmMpOgoJICAtIEFkZCBhIG5ldyBvcHRpb24gLUlmIHRvIHNwZWNpZnkgZml4aW5nIG9mIFBEVXMuCgkgICAgLSBBbnlvbmUga25vdyBhIGJldHRlciBwbGFjZSB0byBwdXQgdGhpcyBvcHRpb24/CgkgIC0gQXBwbGljYXRpb25zIGRvbid0IGRvIHRoaXMgYnkgZGVmYXVsdCBhbnltb3JlLCBhbmQgeW91IGNhbid0IGluIHNubXBzZXQuCgkKMjAwMC0wNC0xMiAwNzozOCAgaGFyZGFrZXIKCgktICh2YWNtX3ZhcnMuYywgdmFjbS5jLCB2YWNtLmgpOiBmaXggdG8gYWxsb3cgbm8gdjEvdjJjIHJlcXVlc3RzIHdoZW4KCSAgY29uZmlndXJlZCBmb3IganVzdCB2My4KCQoyMDAwLTA0LTEyIDA2OjUwICBtc2xpZmNhawoKCWZpeCBNU1ZDIGJ1aWxkIGZvciBlbmNvZGVfa2V5Y2hhbmdlLCBhbmQgYWRkIG1vcmUgc3ltYm9scyBmb3IgcmVsZWFzZSBidWlsZHMKCQoyMDAwLTA0LTEyIDA1OjMyICBuYmEKCgktIHBhcnNlLmM6IGNvcnJlY3QgcGFyc2luZyBvZiBzdWItdHlwZXMgdGV4dHVhbCBjb252ZW50aW9ucy4gQWxsb3cgcGFyc2luZwoJCW9mIE1BQ1JPIGludm9jYXRpb25zIGZvciBzdGFuZGFyZCBzeW1ib2xzCgkKMjAwMC0wNC0xMiAwNTozMSAgbmJhCgoJLSBwYXJzZS5bY2hdLCBzbm1wdHJhbnNsYXRlLmM6IGFsbG93IHNwZWNpZmljYXRpb24gb2Ygd2l0aCBmb3IgLVRwCgkKMjAwMC0wNC0xMiAwNTozMCAgbmJhCgoJLSBIT1NULVJFU09VUkNFUy1NSUIudHh0LCBIT1NULVJFU09VUkNFUy1UWVBFUy50eHQ6IGFsaWduIHdpdGggcHVibGlzaGVkCgkJUkZDIDI3OTAKCQoyMDAwLTA0LTExIDE1OjMzICBoYXJkYWtlcgoKCS0gKGNvbmZpZ3VyZSwgY29uZmlndXJlLmluKTogbWFrZSBjb25maWdfYWRkX21pYigpIGFjdHVhbGx5IGxvb2sgZm9yCgkgIHRoZSBtaWIgaW4gJHNyY2Rpci9taWJzL2JsYWggYW5kIGluc3RhbGwgaXQgaWYgZm91bmQuCgkKMjAwMC0wNC0xMSAxNToyMSAgaGFyZGFrZXIKCgktIChzbm1wdjMuYywgc25tcHYzLmgpOiBtYWtlIG1hY2FkZHIgZW5naW5laWQgc2V0dXAgbm90IGxpbnV4CgkgIHNwZWNpZmljLCBidXQgI2RlZmluZXMgYXJlIGNoZWNrZWQgaW5zdGVhZC4KCQoyMDAwLTA0LTExIDE1OjIwICBoYXJkYWtlcgoKCS0gKHNubXBfbG9nZ2luZy5oKTogcmVtb3ZlIG9sZCBjYWxsYmFjayB0eXBlZGVmIG5vIGxvbmdlciBuZWVkZWQuCgkKMjAwMC0wNC0xMSAxNDozOCAgaGFyZGFrZXIKCgktIChzbm1wdjMuYywgc25tcHYzLmgpOiBQYXRjaCBmcm9tIEpvaG4gTC4gVmlsbGFsb3ZvczoKCSAgLSBlbmFibGUgZW5naW5lSUQgdG8gYmUgc2V0IGZyb20gTUFDQWRkci4KCQoyMDAwLTA0LTExIDA5OjUxICBoYXJkYWtlcgoKCS0gKG10YV9zZW5kbWFpbC5jLCBtdGFfc2VuZG1haWwuaCk6IE5ldyBtb2R1bGUgZnJvbSBDaHJpc3RvcGggTWFtbWl0enNjaDoKCSAgLSBpbXBsZW1lbnRzIHRoZSBNVEEtTUlCIGZvciBtb25pdG9yaW5nIHNlbmRtYWlsLgoJCjIwMDAtMDQtMTEgMDk6NTAgIGhhcmRha2VyCgoJLSAoTVRBLU1JQi50eHQsIE5FVFdPUkstU0VSVklDRVMtTUlCLnR4dCk6IG5ldyBtaWJzIGZvciBuZXcgbW9kdWxlcy4KCQoyMDAwLTA0LTExIDAzOjI1ICBkYXZlcwoKCS0gKGFnZW50L3NubXBfYWdlbnQuYyk6IFNhdmUvcmVzdG9yZSBvcmlnaW5hbCBzdGF0UCB2YWx1ZSBmb3IgU0VUIGhhbmRsaW5nLgoJCjIwMDAtMDQtMTEgMDI6MzUgIGRhdmVzCgoJLSAoYWdlbnQvc25tcF9hZ2VudC5jKTogUmVwb3J0IGZhaWx1cmVzIGZyb20gQUNUSU9OIHBoYXNlIG9mIFNFVCBjb3JyZWN0bHkuCgkKMjAwMC0wNC0xMSAwMTo1NyAgZGF2ZXMKCgktIChhZ2VudHgvbWFzdGVyX3JlcXVlc3QuYyk6IER5bmFtaWNhbGx5IHJlc2l6ZSBzdWJhZ2VudCByZXF1ZXN0cwoJCShUaGFua3MgdG8gUmVpbmVyIEJlbmluZ2EpCgkKMjAwMC0wNC0xMCAwNTowOCAgZGF2ZXMKCgktIChzbm1wX2FnZW50LmMgYWdlbnR4L21hc3Rlcl9yZXF1ZXN0LmMpOiBGaXggbXVsdGktc3ViYWdlbnQgcmVxdWVzdHMKCQkoVGhhbmtzIHRvIFJlaW5lciBCZW5pbmdhKQoJCjIwMDAtMDQtMDcgMTI6MjUgIGhhcmRha2VyCgoJLSAoc25tcHRyYXAuYywgc25tcHVzbS5jKToKCSAgLSBmaXggc25tcHYzIHRyYXBzIHRvIGJlIGF1dGhvcml0YXRpdmUgZnJvbSB0aGUgY2xpZW50IHNpZGUsIG5vdCB0aGUKCSAgICByZWNlaXZlciBzaWRlLiAgc25tcHYzIGluZm9ybXMgc3RheSBhcyBpcy4gIFVuZm9ydHVuYXRlbHksIGZvcgoJICAgIGNvbW1hbmQgbGluZSBhcHBzIHRoaXMgZG9lc24ndCBtYWtlIGEgd2hvbGUgbG90IG9mIHNlbnNlIGJ1dCBpcwoJICAgIHJpZ2h0IGluIHRlcm1zIG9mIGhvdyB0aGUgcHJvdG9jb2wgd29ya3MgYW5kIHRoaXMgaXMgaGVuY2UKCSAgICBzb21ld2hhdCBvZiBhIGhhY2suCgkKMjAwMC0wNC0wNyAwNzo1MCAgZGF2ZXMKCgktIChhZ2VudC9zbm1wX2FnZW50LmMpOiBIYW5kbGUgdjIgZXhjZXB0aW9uIHR5cGVzIGluIHYxIHF1ZXJpZXMKCQoyMDAwLTA0LTA3IDA3OjE2ICBoYXJkYWtlcgoKCS0gKHNubXB0cmFwZC5jLCByZWFkX2NvbmZpZy5jLCBzbm1wdjMuYyk6CgkgIC0gYWxsb3cgTlVMTCBoZWxwIGxpbmVzIGZvciBjb25maWcgZGlyZWN0aXZlcyBhbmQgdXNlIGl0IHRvIGhpZGUKCSAgICBpbnRlcm5hbCBkaXJlY3RpdmVzIHVzZWQgZm9yIHBlcnNpc3RlbnQgc3RvcmFnZS4KCQoyMDAwLTA0LTA2IDE1OjMxICBoYXJkYWtlcgoKCS0gKHNubXBfYXBpLmMsIHNubXBfYXBpLmgpOgoJICAtIHR1cm4gYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgbWFjcm9zIGJhY2sgaW50byBmdW5jdGlvbnMgc28KCSAgICBkZWZhdWx0X3N0b3JlLmggZGVwZW5kZW5jaWVzIGdvIGF3YXkgYWdhaW4uCgkgIC0gY3JlYXRlIGEgZmxhZyB0byBub3QgcHJvYmUgZm9yIGVuZ2luZUlEcyBkdXJuaW5nIHNlc3Nfb3BlbigpLgoJCjIwMDAtMDQtMDYgMDc6MjAgIGRhdmVzCgoJLSAoc25tcGxpYi9zbm1wX2FwaS5jKTogRml4IG1pc2hhbmRsZWQgQ291bnRlcjY0IHBhcnNpbmcKCQoyMDAwLTA0LTA2IDAzOjM2ICBkYXZlcwoKCS0gKGFnZW50L3NubXBkLmMpOiBGaXggdXNhZ2UgbWVzc2FnZSBhbGlnbm1lbnQuCgkKMjAwMC0wNC0wNiAwMzozMSAgZGF2ZXMKCgktIChtYW4vc25tcGQuMS5kZWYpOiBEb2N1bWVudCB0aGUgQWdlbnRYIHNvY2tldCBjb21tYW5kLWxpbmUgb3B0aW9uCgkKMjAwMC0wNC0wNSAwODo0MSAgaGFyZGFrZXIKCgktIChGQVEySFRNTCk6IGl0J3MgYmVlbiBzaXR0aW5nIGluIG15IHBlcnNvbmFsIHNyYyB0cmVlIGZvciA+IDIgeWVhcnMuCgkKMjAwMC0wNC0wNSAwODozOCAgaGFyZGFrZXIKCgktIChtaWJpbmNsLmgsIHVzbVVzZXIuYywgc25tcHRyYXBkLmMsIGxjZF90aW1lLmMsIHNjYXBpLmMsIHNubXBfYXBpLmMsCgkgIHNubXB1c20uYywgc25tcHVzbS5oLCBzbm1wdjMuYyk6CgkgIC0gbWFrZSBzbm1wdHJhcGQgaGFuZGxlIHYzIHVzZXJzIHByb3Blcmx5LCAoYW5kIHNodXRkb3duIHByb3Blcmx5IGFzIHdlbGwpLgoJICAtIGEgbW9yZSBnZW5lcmljIHVzZXIgc3RvcmFnZSByb3V0aW5lIGFkZGVkIHRvIHNubXB1c20uYyBhbmQgdXNlZCBpbgoJICAgIHVzbVVzZXIuYyB3aXRoIGEgc2lkZSBlZmZlY3Qgb2YgbmVlZGluZyBjYWxsYmFjay5oIGFib3ZlIHNubXB1c20uaC4KCQoyMDAwLTA0LTA1IDA4OjI3ICBoYXJkYWtlcgoKCS0gKHJzbm1wKTogLT4gL3Vzci9iaW4vcGVybAoJCjIwMDAtMDQtMDUgMDg6MjQgIGhhcmRha2VyCgoJLSAoLmN2c2lnbm9yZSk6IG1pc2MgbWlub3IgYWRkaXRpb25zIHRvIC8KCQoyMDAwLTA0LTA0IDExOjAzICBkYXZlcwoKCS0gKGFnZW50L3NubXBfYWdlbnQuYyk6IEVuc3VyZSB1bmltcGxlbWVudGVkIG9iamVjdHMgcmV0dXJuICdub1N1Y2hPYmplY3QnCgkKMjAwMC0wNC0wMyAxNDo1NyAgbXNsaWZjYWsKCglJbml0aWFsaXplIHN0YXRQLgoJCjIwMDAtMDQtMDMgMDk6MTIgIGRhdmVzCgoJLSAoYWdlbnQvc25tcF9hZ2VudC5jKTogRW5zdXJlIGEgdjEgU0VUIHJldHVybnMgYSB2MSBlcnJvciBzdGF0dXMuCgkKMjAwMC0wNC0wMyAwODozMiAgaGFyZGFrZXIKCgktIChDaGFuZ2VMb2cpOiBZZWFyIHdhcyAiMTAwIiBmb3IgMjAwMCAobm90aWNlZCBieSBKYXkgUmlkZGVsbCk6CgkKMjAwMC0wNC0wMyAwNzo1MyAgZGF2ZXMKCgktIChhZ2VudC9zbm1wX2FnZW50LmMpOiBFbnN1cmUgU0VUcyBmYWlsIGlmIG9uZSB2YXJiaW5kIGRvZXMuCgkKMjAwMC0wMy0zMSAwNzoyNSAgZGF2ZXMKCgktIChhZ2VudC9zbm1wX3ZhcnMuYyk6IEZpeCB0byByZXBvcnQgJ25vU3VjaE9iamVjdCcgaW4gY2VydGFpbiBjaXJjdW1zdGFuY2VzCgkKMjAwMC0wMy0zMSAwNzoxMyAgZGF2ZXMKCgktIChzbm1wbGliL3NubXBfYXBpLmMpOiBEb24ndCByZXBlYXQgdGhlIGZpcnN0IGZvdXIgYnl0ZXMgaW4gYSBQRFUgZHVtcAoJCjIwMDAtMDMtMzEgMDc6MDQgIGRhdmVzCgoJLSAoc25tcGxpYi9zbm1wX2xvZ2dpbmcuYyk6IEhhbmRsZSBsb2dnaW5nIGVtcHR5IHN0cmluZ3MgKGUuZy4gYSBudWxsIGluZGVudCkKCQoyMDAwLTAzLTMwIDAwOjE1ICBkYXZlcwoKCS0gKGFnZW50L3NubXBfYWdlbnQuYyk6IEluaXRpYWxpc2UgdGltZW91dCBzdHJ1Y3R1cmUgcHJvcGVybHkKCQkoVGhhbmtzIHRvIGFzaGlwbWFuQGVyZ2dyb3VwLmNvbSkKCQoyMDAwLTAzLTI3IDEwOjMyICBtc2xpZmNhawoKCXJlbW92ZSB0cmFpbGluZyBuZXdsaW5lIGZyb20gaHJTV1J1bk5hbWUgdmFsdWVzLgoJCjIwMDAtMDMtMjQgMDk6MDkgIG1zbGlmY2FrCgoJdG8gc3luYyB3aXRoIHBhdGNoZXMgYnJhbmNoLgoJCjIwMDAtMDMtMjQgMDU6MDcgIG5iYQoKCS0gc25tcHRyYXBkLmM6IGNvcnJlY3RseSBmcmVlIHRoZSByZXBvbnNlIGlmIHNlbmRpbmcgaXQgZmFpbHMKCQoyMDAwLTAzLTI0IDA0OjIyICBtc2xpZmNhawoKCXh4X3N5bmNoX3Jlc3BvbnNlOiBhdm9pZCBmcmVlaW5nIFBEVSB0d2ljZS4KCQoyMDAwLTAzLTIzIDIzOjI5ICBuYmEKCgktIHNubXBjbWQuMSwgc25tcHRyYXAuMSwgc25tcHRyYXAuYywgTWFrZWZpbGUuaW46IEluc3RhbGwgYW5kIGRvY3VtZW50CgkJc25tcGluZm9ybS4KCQoyMDAwLTAzLTIzIDA5OjU4ICBtc2xpZmNhawoKCUVucXVldWUgb25seSBjb21wbGV0ZSByZXF1ZXN0X2xpc3QgZW50cnk7IFJlZHVjZSBzY29waW5nIG9mIGNhbGxiYWNrIHZhcnMuCgkKMjAwMC0wMy0yMyAwMzowMiAgbmJhCgoJZmlsZSBzbm1waW5mb3JtLjEgd2FzIGluaXRpYWxseSBhZGRlZCBvbiBicmFuY2ggVjQtMS0xLXBhdGNoZXMuCgkKMjAwMC0wMy0yMiAwODoxMyAgbXNsaWZjYWsKCglwcmludGYgPwoJCjIwMDAtMDMtMjEgMTE6MTIgIG1zbGlmY2FrCgoJbW9kaWZ5IEYuIFN0cmF1c3MnIHBhdGNoIHBlciBOLiBCYWdnZXNlbidzIHN1Z2dlc3Rpb246IHJlbW92ZSBleHBvcnQtZHluYW1pYy4KCQoyMDAwLTAzLTIxIDA5OjE0ICBtc2xpZmNhawoKCW1vcmUgc21vb3RoIHNhaWxpbmcgd2l0aCBXaW4zMiAuRExMIC4gRExMRVhQT1JULCBhbnlvbmUgPwoJCjIwMDAtMDMtMjEgMDk6MDcgIG1zbGlmY2FrCgoJd2luMzIgYnVpbGQgY2hlY2s6IG5vIHNpZ2FjdGlvbiwgU0lHQ0xEIGRlZmluZWQuCgkKMjAwMC0wMy0yMSAwODo0NyAgZGF2ZXMKCgktIChkc19hZ2VudC5oIHNubXBkLmMgbWliZ3JvdXAvYWdlbnR4L3ttYXN0ZXIsc3ViYWdlbnR9LmMpOgoJICAtICBDb21tYW5kLWxpbmUgb3B0aW9uIGZvciBzcGVjaWZ5aW5nIEFnZW50WCBwb3J0CgkgICAgIChiYXNlZCBvbiBwYXRjaCBmcm9tIEZyYW5rIFN0cmF1c3MpCgkKMjAwMC0wMy0yMSAwODozOCAgZGF2ZXMKCgktIChzbm1wX2FwaS5jKTogU3VwcG9ydCAnaG9zdDpwb3J0JyByZXByZXNlbnRhdGlvbiBvZiBwZWVybmFtZXMKCQoyMDAwLTAzLTIxIDA0OjA1ICBkYXZlcwoKCS0gKHNubXBfYWdlbnQuYyk6IE1pc3NpbmcgbmV3LWxpbmUgb24gZGVidWcgb3V0cHV0CgkKMjAwMC0wMy0yMSAwMjo1MiAgZGF2ZXMKCgktIChtaWJJSS97dGNwLHVkcCxpcCxpY21wfSopIENvbnRpbnVpbmcgbWliSUkgY29kZSBjbGVhbnVwCgkKMjAwMC0wMy0yMCAxMToxNCAgbXNsaWZjYWsKCglDb21tZW50IC1DIC0tIGRvIG5vdCB1c2UgdGhpcyBmbGFnLgoJCjIwMDAtMDMtMTcgMTU6MzIgIGhhcmRha2VyCgoJLSAoaGVhZGVyX2NvbXBsZXguYyk6IHNpemVvZih4KSoobGVuKzEpIG5vdCBzaXplb2YoeCkqbGVuKzEKCQoyMDAwLTAzLTE2IDAwOjEwICBuYmEKCgktIGNvbmZpZ3VyZSwgaHJfcHJpbnQuYzogZGV0ZWN0IHN5c3RlbSBwcmludGVycyAoU3lzVi9scHN0YXQsICpCU0QvY2dldG5leHQsCgkJTGludXgvcHJpbnRjYXApCgkKMjAwMC0wMy0xNSAxODozMCAgbXNsaWZjYWsKCglTZWNvbmQgcGFydCA6IGFsbCBtZW1iZXJzIG9mIHN0cnVjdCBzbm1wX2luZGV4IGFyZSBwb2ludGVycy4KCQoyMDAwLTAzLTE1IDE1OjA3ICBtc2xpZmNhawoKCUZpeCBtZW1vcnkgbGVhayB3aXRoIHVucmVnaXN0ZXJfaW5kZXguCgkKMjAwMC0wMy0xNSAxNTowNyAgbXNsaWZjYWsKCglGaXggbWVtb3J5IGxlYWsgd2hlbiBjbGVhbmluZyB1cCB0cmFwIHZhcmlhYmxlcy4KCQoyMDAwLTAzLTE1IDA4OjQ4ICBkYXZlcwoKCS0gKHNubXBfYXBpLmMgc25tcF9jbGllbnQuYyk6IEluaXRpYWxpc2UgdmFyYmluZCBkYXRhIGhvb2sgZWxzZXdoZXJlIGFzIHdlbGwuCgkKMjAwMC0wMy0xNSAwNzo1NyAgZGF2ZXMKCgktIChhZ2VudHgvbWFzdGVyX3JlcXVlc3QuYyk6IEZpeCBpbmZpbml0ZSBsb29wIHByb2JsZW0gd2hlbiB3YWxraW5nIHN1YmFnZW50LgoJCjIwMDAtMDMtMTUgMDY6MDkgIGRhdmVzCgoJLSAoYWdlbnQvc25tcF9hZ2VudC5jKTogQXZvaWQgY2FsbGluZyByZWFkIHJvdXRpbmUgZm9yIGVhY2ggU0VUIGhhbmRsaW5nIHBhc3MuCgkJTi5COiAgVGhpcyBoYXNuJ3QgYmVlbiB0ZXN0ZWQgd2l0aCBBZ2VudFggc3ViYWdlbnRzIHlldAoJCjIwMDAtMDMtMTUgMDY6MDcgIGRhdmVzCgoJLSAoc25tcGxpYi9zbm1wX2FwaS5bY2hdKTogUHJvdmlkZSBob29rIGZvciBpbnRlcm5hbCB2YXJiaW5kLXJlbGF0ZWQgZGF0YQoJCjIwMDAtMDMtMTUgMDU6MjIgIGRhdmVzCgoJLSAoYWdlbnQvdmFyX3N0cnVjdC5oKTogVXNlIGEgc2luZ2xlIG1hZ2ljIG51bWJlciBmb3IgTUlCIHJlZ2lzdHJ5IG5hbWUgbGVuZ3Rocy4KCQoyMDAwLTAzLTE1IDAxOjUxICBkYXZlcwoKCS0gKHNubXBsaWIvc3lzdGVtLmgpOiBEb24ndCBkZWNsYXJlIGdldHRpbWVvZmRheSgpIGlmIHRoZSBzeXN0ZW0gcHJvdmlkZXMgaXQuCgkJKEZpeCBwcm92aWRlZCBieSBSb24gTWV2aXNzZW4pCgkKMjAwMC0wMy0xNCAwNzo1NyAgZGF2ZXMKCgktIChhZ2VudC9zbm1wX2FnZW50LmMpOiBEb24ndCBvdmVyd3JpdGUgc2F2ZWQgc3RhdHVzIHdoZW4gY2hlY2tpbmcgYWNjZXNzLgoJCjIwMDAtMDMtMTQgMDc6NTIgIGRhdmVzCgoJLSAoYWdlbnQvc25tcF9hZ2VudC5jKTogUmV0dXJuIGEgcmVzcG9uc2UsIGV2ZW4gaWYgdGhlIHJlcXVlc3QgZmFpbGVkLgoJCjIwMDAtMDMtMTMgMTU6MzIgIG5iYQoKCS0gaXBmd2FjYy5oOiBmaXggdGhlIE1JQiBuYW1lCgkKMjAwMC0wMy0xMCAxMjo0OCAgaGFyZGFrZXIKCgktIChjb25maWd1cmUpOiBhdXRvY29uZiBydW4KCQoyMDAwLTAzLTEwIDExOjA5ICBoYXJkYWtlcgoKCS0gKE1ha2VmaWxlLmRsbW9kKTogUGF0Y2ggZnJvbSBGcmFuayBTdHJhdXNzOgoJICAtIGRsbW9kIGJ1aWxkIE1ha2VmaWxlIGV4YW1wbGUuICBOZWVkcyBpbmNvcnBlcmF0aW9uIHdpdGggbWFpbiBjb25maWd1cmUuCgkKMjAwMC0wMy0xMCAxMTowMiAgaGFyZGFrZXIKCgktIChhZ2VudF9yZWdpc3RyeS5jKTogYmV0dGVyIHNpZ25hbCBjaGVjayBmcm9tIE1pY2hhZWwgU2xpZmNhawoJCjIwMDAtMDMtMTAgMTA6NTkgIGhhcmRha2VyCgoJLSAoVUNELURMTU9ELU1JQi50eHQpOiB0eXBvIGZvdW5kIGJ5IE1pY2hhZWwgU2xpZmNhay4KCQoyMDAwLTAzLTEwIDEwOjU0ICBoYXJkYWtlcgoKCS0gKGRsbW9kLmMsIGRsbW9kLmgsIHNubXBkLmNvbmYuNS5kZWYsIFVDRC1ETE1PRC1NSUIudHh0KTogUGF0Y2ggZnJvbQoJICBGcmFuayBTdHJhdXNzOgoJICAtIFJlaW1wbGVtZW50YXRpb24gb2YgdGhlIGRsbW9kIG1pYiBtb2R1bGU6CgkgICAgbyBtaWJncm91cC9taXNjL2RsbW9kICsgZGxtb2RzL2RsbW9kX21pYiAtPiBtaWJncm91cC91Y2Qtc25tcC9kbG1vZAoJICAgIG8gZml4ZWQgcmVnaXN0cmF0aW9uICh1Y2RhdmlzLnVjZEV4cGVyaW1lbnRhbC4xNCBpbnN0ZWFkIG9mIHVjZGF2aXMuMTQpCgkgICAgbyBhZGRlZCBjb25maWd1cmUgc3R1ZmYgZm9yIEhBVkVfU05QUklOVEYsIHdoaWNoIHdhcyB1c2VkIGJ5IGRsbW9kLmMKCSAgICBvIHJlbW92ZWQgYF9keW5hbWljXycgcHJlZml4ZXMgZnJvbSBpbml0L2RlaW5pdCBmdW5jdGlvbnMKCSAgICBvIG1hZGUgZGxtb2RJbmRleCBub3QtYWNjZXNzaWJsZSAob25seSBpbXBsZW1lbnRhdGlvbiwgbm90IGRlZmluaXRpb24pCgkgICAgbyByZW1vdmVkIHRoZSBhc25fcGFyc2VfWFhYIHN0dWZmCgkgICAgbyBtYWRlIGVudHJpZXMgd2l0aCBzdGF0ZSBgZXJyb3InIGFibGUgdG8gYWNjZXB0IHN0YXRlIGBsb2FkJwoJICAgIG8gbWFkZSB0aGUgd29tYmF0IGV4YW1wbGUgdXNhYmxlIGFzIHN0YXRpYyBhbmQgZHluYW1pYyBtb2R1bGUKCSAgICBvIGFkZGVkIHNpbXBsZSBjb25maWdfcGFyc2UgZnVuY3Rpb25hbGl0eSB0byB0aGUgd29tYmF0IGV4YW1wbGUKCQoyMDAwLTAzLTEwIDEwOjUyICBoYXJkYWtlcgoKCS0gKGFnZW50X3JlZ2lzdHJ5LmMsIGFnZW50X3JlZ2lzdHJ5LmgsIHNubXBkLmMpOiBQYXRjaCBmcm9tIEZyYW5rIFN0cmF1c3M6CgkgIC0gc2lnbmFsIHJlZ2lzdHJ5IHN5c3RlbSBpbXBsZW1lbnRlZCAobmVlZHMgdG8gYmUgcmVkb25lIGFsbG93aW5nCgkgICAgbXVsdGlwbGUgY2FsbGJhY2tzIGFuZCBoYW5kbGVycyBmb3IgYWxsIHNpZ25hbHMpLgoJICAtIGFyYml0cmFyeSBmaWxlIGRlc2NyaXB0b3Ivc29ja2V0IHJlZ2lzdHJhdGlvbi4KCSAgICAtIHRoaXMgaXMgbm90IHRoZSB3YXkgaXQgc2hvdWxkIGJlIGRvbmUgKHVzZSBzZXNzaW9ucyBpbnN0ZWFkKS4KCQoyMDAwLTAzLTEwIDEwOjQ0ICBoYXJkYWtlcgoKCS0gKE1ha2VmaWxlLmluLCBNYWtlZmlsZS50b3AsIGFjY29uZmlnLmgsIGNvbmZpZy5oLmluLCBjb25maWd1cmUuaW4sCgkgIE1ha2VmaWxlLmluLCBNYWtlZmlsZS5pbiwgTWFrZWZpbGUuaW4sIE1ha2VmaWxlLmluLCBNYWtlZmlsZS5pbik6CgkgIFBhdGNoIGZyb20gRnJhbmsgU3RyYXVzczoKCSAgLSBjbGVhbiB1cCBzaGFyZWQgbGlicmFyeSB1c2FnZS4KCQoyMDAwLTAzLTEwIDEwOjE2ICBoYXJkYWtlcgoKCS0gKGNvbmZpZy5oLmluKTogYXV0b2hlYWRlciByZS1hcnJhbmdlZCBzb21lIHN0dWZmLgoJCjIwMDAtMDMtMDcgMTE6NTggIG1zbGlmY2FrCgoJbW9yZSB0b3VjaHVwcyB0byBhbGxvdyBVbml4V2FyZSBidWlsZCB0byBjb21wbGV0ZS4KCQoyMDAwLTAzLTA3IDExOjIxICBoYXJkYWtlcgoKCS0gKGRlZmF1bHRfc3RvcmUuaCk6IG1ha2UgTUFYX1NVQklEUyBsYXJnZXIgYW5kIGEgbXVsdGlwbGUgb2YgOC4KCQoyMDAwLTAzLTA3IDEwOjEzICBtc2xpZmNhawoKCUludHJvZHVjZSAtLWVuYWJsZS1taW5pLWFnZW50IHRvIGNvbmZpZ3VyZSBhZ2VudCAoc25tcHYzLCBubyBtaWJJSSBpbnRlcmZhY2VzKS4KCQoyMDAwLTAzLTA3IDA5OjAzICBtc2xpZmNhawoKCWFzc3VtZSAic25tcGFwcCIgaWYgbm8gYXJnIHBhc3NlZCB0byBpbml0X3NubXB2My4KCQoyMDAwLTAzLTA3IDA4OjU4ICBtc2xpZmNhawoKCXJlbW92ZSBpbml0X21pYigpIGNhbGwgLSBub3QgYXBwcm9wcmlhdGUgaGVyZS4KCQoyMDAwLTAzLTA3IDA4OjM1ICBtc2xpZmNhawoKCUxldCB0aGUgYWl4NCBwYXRjaCB3b3JrLgoJCjIwMDAtMDMtMDcgMDc6MDggIG1zbGlmY2FrCgoJdHJpbSBmYXQgZnJvbSByZWNlbnQgY2hlY2staW5zLgoJCjIwMDAtMDMtMDYgMjA6MDEgIG1zbGlmY2FrCgoJY2xlYW5lZCB1cCBTQ08gVW5peFdhcmUgYnVpbGQuCgkKMjAwMC0wMy0wNiAxNjo0MCAgbXNsaWZjYWsKCglzdGFydCBzdXBwb3J0IGZvciBTQ08gVW5peFdhcmUgNSBhcyBzdnI1LgoJCjIwMDAtMDMtMDYgMTA6NTYgIGhhcmRha2VyCgoJLSAoZGVmYXVsdF9zdG9yZS5oLCBzbm1wX2FwaS5jKTogUGF0Y2ggZnJvbSBSb2JlcnQgU3Rvcnk6CgkgIC0gZG9uJ3QgY2hlY2sgcmFuZ2VzIGlmIG5vdCByZXF1ZXN0ZWQuCgkKMjAwMC0wMy0wNiAxMDo1NSAgaGFyZGFrZXIKCgktIChzbm1wX2FnZW50LmMsIHNubXBfYWdlbnQuaCwgc25tcGQuYyk6IFBhdGNoIGZyb20gUm9iZXJ0IFN0b3J5OgoJICAtIGZpeCBleGl0KClpbmcgYmVoYXZpb3VyIGluIHRoZSBsaWJ1Y2RhZ2VudCBsaWJyYXJ5LgoJCjIwMDAtMDMtMDYgMTA6MzYgIGhhcmRha2VyCgoJLSAoc25tcHRyYXBkLmMpOiBQYXRjaCBmcm9tIFJvYmVydCBTdG9yeToKCSAgLSAtbiBwcmludHMgbnVtZXJpYyBJUCBhZGRycy4KCQoyMDAwLTAzLTA2IDEwOjI1ICBoYXJkYWtlcgoKCS0gKGNhbGxiYWNrLmgsIHNubXBfbG9nZ2luZy5jLCBzbm1wX2xvZ2dpbmcuaCk6IElkZWEgZnJvbSBhc2hpcG1hbkBlcmdncm91cC5jb206CgkgIC0gY2FsbGJhY2sgZnVuY3Rpb24gKHVzaW5nIGNhbGxiYWNrLmgpIGFkZGVkIGZvciBleHRlcm5hbCBsb2dnaW5nLgoJCjIwMDAtMDMtMDUgMDU6MjUgIG1hcnoKCglmaXggdG8gcHJlc2VydmUgdHJhaWxpbmcgbXVsdGkgY29tcG9uZW50IGluc3RhbmNlIGlkJ3MgYXQgdGhlIGVuZCBvZgoJc3ltYm9saWMgbWliIG5hbWVzKGUuZy4sIGZvby42LjcpIHdoZW4gZG9pbmcgdHJhbnNsYXRlT2JqLgoJCjIwMDAtMDMtMDQgMTE6MzQgIG5iYQoKCS0gY29uZmlndXJlLmluLCBjb25maWd1cmU6IHN1cHBvcnQgLS13aXRob3V0LW9wZW5zc2wsIGV2ZW4gaWYgT3BlblNTTAoJCWlzIGF2YWlsYWJsZQoJCjIwMDAtMDMtMDQgMTE6MzAgIG5iYQoKCS0gYWdlbnQvKHZhcmlvdXMpOiBnbG9iYWxpemUgdGhlIGt2bV90ICprZCB2YXJpYWJsZQoJCjIwMDAtMDMtMDQgMTE6MjYgIG5iYQoKCS0gbWliX21vZHVsZXMuYywgaHJfc3RvcmFnZS5jOiBwcmUtcHJvY2Vzc29yICMgc2hvdWxkIGJlIGluIGNvbHVtbiAxCgkKMjAwMC0wMy0wNCAxMToxNyAgbmJhCgoJLSBpbmV0LmMsIGluZXQ2LmM6IHN1cnZpdmUgLXYgMmMgZXhjZXB0aW9uIHJlcGxpZXMKCQoyMDAwLTAzLTA0IDExOjE3ICBuYmEKCgktIHNubXBfYXBpLmM6IHJlbW92ZSBhIHN1cGVyZmx1b3VzICYgaW4gZnJvbnQgb2YgYW4gYXJyYXkKCQoyMDAwLTAzLTA0IDExOjE1ICBuYmEKCgktIHVjZF9zbm1wLmgsIHttZW1vcnksdm1zdGF0fV9uZXRic2QxLltjaF06IHN1cHBvcnQgZm9yIE5ldEJTRAoJCjIwMDAtMDMtMDQgMTE6MTQgIG5iYQoKCS0gaHJfZGlzay5jOiBmaXhlcyBmb3IgTmV0QlNECgkKMjAwMC0wMy0wNCAxMToxMCAgbmJhCgoJLSB2ZXJzaW9uaW5mby5jOiBkb24ndCByZXR1cm4gdGhlIHRyYWlsaW5nIG5ld2xpbmUKCQoyMDAwLTAzLTA0IDExOjA4ICBuYmEKCgktIGhyX3N3cnVuLmM6IGZpeCBwcm9jZXNzIHNpemUgZm9yIEZyZWVCU0QgMyBhbmQgTmV0QlNECgkKMjAwMC0wMy0wNCAxMTowNSAgbmJhCgoJLSBhZ2VudF90cmFwLmg6IGZpeCBhIHdyb25nIHByb3RvdHlwZQoJCjIwMDAtMDMtMDQgMTE6MDQgIG5iYQoKCS0gc25tcHRhYmxlLmM6IGZpeCBwcm9ibGVtcyBwcmludGluZyB0YWJsZSBuYW1lIGFuZCBoZWFkZXJzIHdoZW4gdXNpbmcKCQktT1MgZm9ybWF0CgkKMjAwMC0wMy0wMiAxMTo1MCAgbmJhCgoJLSBzbm1wX2FwaS5jOiBmaXggYWRkcmVzcyBsZW5ndGggaW5mbyBmb3IgdGNwIGNvbm5lY3QKCQoyMDAwLTAzLTAyIDExOjQ4ICBuYmEKCgktIGxvYWRhdmUuYzogZml4IGZvciBBSVggNAoJCjIwMDAtMDMtMDIgMDg6MzAgIGRhdmVzCgoJLSAobWliMi9pcC5bY2hdIG1pYjIvaXBBZGRyLltjaF0pOiBGaXJzdCBzdGFiIGF0IHRpZHlpbmcgdXAgbWliMiBzdXBwb3J0LgoJCjIwMDAtMDMtMDEgMTM6MjMgIGhhcmRha2VyCgoJLSAoc25tcHRvc3FsKTogZml4IGR5bmFtaWMgdGFibGUgdGVzdGluZyBmb3IgY3JlYXRpb24gbmVlZGVkLgoJCjIwMDAtMDMtMDEgMTM6MjIgIGhhcmRha2VyCgoJLSAobWFuYWdlci5wbSwgdWNkLXNubXAucG0pOiBPcHBzLiAgV3JvbmcgbmFtZS4gIHVjZC1zbm1wLnBtIC0+IG1hbmFnZXIucG0uCgkKMjAwMC0wMy0wMSAxMzoyMSAgaGFyZGFrZXIKCgktICh1Y2Qtc25tcC5wbSk6IHR1cm5lZCBzcWx0b2h0bWwgaW50byBhbiBhcGFjaGUgbW9kdWxlLiAyeCBzcGVlZCBpbXByb3ZlbWVudC4KCQoyMDAwLTAzLTAxIDA4OjMyICBtc2xpZmNhawoKCWZpeCBidWcgMTgwIGZvciBjeWd3aW4gYnVpbGQgd2l0aCBfUkVFTlRSQU5UOyBwZXIgYXNoaXBtYW5AZXJnZ3JvdXAuY29tCgkKMjAwMC0wMi0yOSAxNDozMCAgbXNsaWZjYWsKCglJbnZva2Ugc25tcF9zZXNzX3NlbmQgZnJvbSB3aXRoaW4gc25tcF9yZWFkIHRvIGF2b2lkIG11dGV4IGRlYWRsb2Nrcy4KCQoyMDAwLTAyLTI4IDE0OjI1ICBuYmEKCgktIHNubXBkLmgsIHNtdXguYzogZG9uJ3QgaW5pdGlhbGl6ZSBzbXV4IG1hc3RlciBpbiBzdWIgYWdlbnQKCQoyMDAwLTAyLTI4IDE0OjE2ICBuYmEKCgktIHNubXBfdmFycy5jOiB1c2UgU1VCX0FHRU5UIHN5bWJvbAoJCjIwMDAtMDItMjggMTQ6MTIgIG5iYQoKCS0gbWliLmM6IHNwcmludF9ieV90eXBlIHNob3VsZCBoYW5kbGUgQVNOX0JJVF9TVFIKCQoyMDAwLTAyLTI4IDE0OjEwICBuYmEKCgktIHNubXBfcGFyc2VfYXJncy5jOiBjb3JyZWN0bHkgY2FsbCB0aGUgLUkgb3B0aW9ucyBpbnB1dCBvcHRpb25zCgkKMjAwMC0wMi0yOCAxMDo0NyAgbXNsaWZjYWsKCglmaXggYnVnICMxNzYgKEFJWCA0IC0gdXNlIGtubGlzdCBpbiBsaWV1IG9mIG5saXN0KQoJCjIwMDAtMDItMjQgMTc6MTcgIG1zbGlmY2FrCgoJYXBwbHkgcGF0Y2ggdG8gZml4IGJ1ZyBuby4gMTc3LgoJCjIwMDAtMDItMjQgMTM6MzEgIGhhcmRha2VyCgoJLSAoZGVmYXVsdF9zdG9yZS5oLCByZWFkX2NvbmZpZy5jLCBzbm1wX2FwaS5jKTogbmV3IHNubXAuY29uZiBrZXl3b3JkCgkgIHRvIGZvcmNlIHRoZSBwYXJzZXIgdG8gaWdub3JlIHVua25vd24gdG9rZW5zLgoJCjIwMDAtMDItMjQgMDM6NTkgIG1zbGlmY2FrCgoJZG9jdW1lbnQgVU5TSUdORUQzMiBhbmQgQ09VTlRFUjMyICgndScgYW5kICdjJykgaW4gc25tcHNldCAoZ3JhdGlzIGFzaGlwbWFuQGVyZ2dyb3VwLmNvbSkKCQoyMDAwLTAyLTI0IDAzOjU2ICBtc2xpZmNhawoKCWFkZCBzdXBwb3J0IGZvciBDT1VOVEVSMzIgdG8gc25tcF9hZGRfdmFyOyBkb2N1bWVudCBVTlNJR05FRDMyIGFuZCBDT1VOVEVSMzIKCSgndScgYW5kICdjJykgaW4gc25tcHRyYXAgKGdyYXRpcyBhc2hpcG1hbkBlcmdncm91cC5jb20pCgkKMjAwMC0wMi0yMyAyMzowNiAgbmJhCgoJLSBwYXNzLmMsIHBhc3NfcGVyc2lzdC5jOiBmaXggc2V0dGluZyBvZiBvY3RldCBzdHJpbmdzLgoJCjIwMDAtMDItMjMgMDI6MDkgIG5iYQoKCS0gbXRfc3VwcG9ydC5oOiBhIGJhZCA7IGluIHRoZSBDKysgYnJhY2tldGluZwoJCjIwMDAtMDItMjMgMDI6MDkgIG5iYQoKCS0gc3lzdGVtLmM6IHJlbW92ZSBzb21lIHN1cGVyZmx1b3VzIGluZGlyZWN0aW9ucyBpbiBzdHJjYXNlY21wCgkKMjAwMC0wMi0yMyAwMjowNyAgbmJhCgoJLSB2bXN0YXRfc29sYXJpcy5jOiBtYWtlIHN1cmUgd2UgYWdyZWUgd2l0aCB0aGUgcHJvdG90eXBlIG9mIGdldHBhZ2VzaXplIQoJCjIwMDAtMDItMjIgMTU6MzEgIG5iYQoKCS0gcGFzc19wZXJzaXN0Lmg6IGRlY2xhcmUgaW5pdF9wYXNzX3BlcnNpc3QKCQoyMDAwLTAyLTIyIDA5OjU3ICBtc2xpZmNhawoKCXBydW5lIHR3byBtb3JlIHN5bWJvbHMgbm90IHVzZWQgYnkgYXV0b19ubGlzdCBmb3IgU29sYXJpcy1idWlsdCBNSUIgbW9kdWxlcy4KCQoyMDAwLTAyLTIxIDE2OjE3ICBtc2xpZmNhawoKCUFwcGx5IFIuIFN0b3J5J3MgcGF0Y2ggZm9yIG1rZGlyaGllciBhbmQgc3RybmNhc2VjbXAgb24gd2luMzIKCQoyMDAwLTAyLTIxIDA3OjM5ICBtc2xpZmNhawoKCWZpeCBidWcgMTcxICh0aGFua3MgdG8gTGFycnkgUGFybWVsZWUpLgoJCjIwMDAtMDItMjEgMDU6NTYgIG1zbGlmY2FrCgoJcmVtb3ZlIGZyZWUgYWZ0ZXIgc25tcF9jbG9zZSAoZG9uJ3QgZnJlZSB0d2ljZSEpCgkKMjAwMC0wMi0yMSAwNDo1OCAgbXNsaWZjYWsKCglBZGRlZCBkZXNjcmlwdGlvbiBpbiBTSF9OQU1FIGZvciBzZXZlcmFsIG1hbi1wYWdlcyAoYy9vIHJhZ25hcmspCgkKMjAwMC0wMi0xOCAxMjoxNCAgbXNsaWZjYWsKCglyZWZlciB0aGUgLnNvIG1hY3JvIHRvIG1hbjM7IGFkanVzdCBNYWtlZmlsZS5pbiB0byB1c2UgdGhlIHJlbmFtZWQgZmlsZS4KCQoyMDAwLTAyLTE3IDA1OjE3ICBtc2xpZmNhawoKCWluY2x1ZGUgcGFzc19wZXJzaXN0IGluIHRoZSByZXF1aXJlZCBsaXN0LgoJCjIwMDAtMDItMTcgMDI6MDAgIGRhdmVzCgoJLSAoY29uZmlndXJlKiB1Y2Qtc25tcC92bXN0YXRfc29sYXJpczIuYyk6CgkgIC0gUHJvdmlkZSBtaXNzaW5nICdnZXRwYWdlc2l6ZScgcm91dGluZSBmb3IgU29sYXJpcyAyLjQKCSAgICAoVGhhbmtzIHRvIFJhZ25hciBLavhyc3RhZCkKCQoyMDAwLTAyLTE2IDIwOjE3ICBtc2xpZmNhawoKCWluY2x1ZGUgbWliaW5jbC5oIGluIGhyX3N5c3RlbS5jIHRvIGZpeCBidWcgIzE1OS4KCQoyMDAwLTAyLTE2IDE2OjM1ICBtc2xpZmNhawoKCXJlbW92ZSBhdXRvX25saXN0IG9mIHVudXNlZCAic3dhcGxpc3QiIHN5bWJvbC4KCQoyMDAwLTAyLTE2IDE1OjE3ICBtc2xpZmNhawoKCXBhdGNoIHN1Z2dlc3RlZCBieSBSaWNrIEJlYW1hbiA8YmVhbWFuQG1lZGlhb25lLm5ldD4KCQoyMDAwLTAyLTE2IDE0OjU4ICBtc2xpZmNhawoKCXJlbW92ZSB1bnVzZWQgdmFycwoJCjIwMDAtMDItMTYgMTQ6NTcgIG1zbGlmY2FrCgoJdGVzdCBsZW5ndGhzIGJlZm9yZSBhbGxvY2F0aW5nIG1lbW9yeTsgdXNlIG5ldyBWQUNNU1RSSU5HTEVOIGNvbnN0YW50LgoJCjIwMDAtMDItMTYgMDg6MTggIG1zbGlmY2FrCgoJaW5jbHVkZSB0aW1lLmggb25jZQoJCjIwMDAtMDItMTYgMDg6MDIgIG1zbGlmY2FrCgoJcmVzdG9yZSAjaWYgSEFWRS4uLklOX1BDQl9ICgkKMjAwMC0wMi0xNSAyMzo0NyAgbmJhCgoJLSBjb25maWd1cmUuaW4sIGlwY2guW2NoXTogaW5pdGlhbCBzdGFicyBhdCBMaW51eCBpcHY2IHN1cHBvcnQuIEEgbG90IGlzCgkJbGFja2luZyBpbiB0aGUga2VybmVsIHN0YXRpc3RpY3MgdGhvdWdoLgoJCjIwMDAtMDItMTUgMjM6NDAgIG5iYQoKCS0gKG1hbnkpOiBjb25maWd1cmUgY2hlY2sgZm9yIG5ldGluZXQvaXA2LmgKCQoyMDAwLTAyLTE1IDIzOjM0ICBuYmEKCgktIGhyX2ZpbGVzeXMuYzogTU5UVFlQRSBkZWZpbmVzIGZvciBGcmVlQlNELTMgYW5kIEJTREktNCwgYW5kIG1vdmluZyB0aGUKCQlyZXR1cm4gdmFsdWUgZm9yIEV4dDJGUyB0byB0aGUgbmV3bHkgZGVmaW5lZCBPSUQuCgkKMjAwMC0wMi0xNSAyMzoyNCAgbmJhCgoJLSBmcmVlYnNkMy5oOiBzb21lIGtlcm5lbCBzeW1ib2xzIG5vdCB0byBiZSB1c2VkIGZvciBGcmVlQlNEIDMKCQoyMDAwLTAyLTE1IDIzOjIzICBuYmEKCgktIHNubXB0YWJsZS5jOiBnaXZlIGEgc2Vuc2libGUgb3V0cHV0IGZvciBhbiBlbXB0eSB0YWJsZS4KCQoyMDAwLTAyLTE1IDIzOjIyICBuYmEKCgktIHZhY20qOiBidWZmZXIgbGVuZ3RoIGNoZWNraW5nIQoJCjIwMDAtMDItMTUgMjM6MjAgIG5iYQoKCS0gaHJfc3RvcmFnZS5jOiByZXR1cm4gbWVtb3J5IHNpemUgaW4gcGFnZXMuCgkKMjAwMC0wMi0xNSAyMzoxNyAgbmJhCgoJLSB1Y2Rfc25tcC5oLCBtZW1vcnlfZnJlZWJzZDIuaDogbWFrZSBpdCB3b3JrIGZvciBGcmVlQlNELTMgdG9vCgkKMjAwMC0wMi0xNSAyMzoxNiAgbmJhCgoJLSBzbm1wX2FnZW50LmM6IG9uZSBtb3JlIHBsYWNlIHRvIHNlbmQgYSBBVVRIRkFJTCB0cmFwCgkKMjAwMC0wMi0xNSAyMzoxNSAgbmJhCgoJLSBhZ2VudF9yZWdpc3RyeS5jOiBmaXggYSByZXR1cm4gZm9yIFNOTVB2MS9Db3VudGVyNjQgY2FzZQoJCjIwMDAtMDItMTUgMDI6MTIgIGRhdmVzCgoJLSAoYXBwcy9zbm1wX3BhcnNlX2FyZ3MuYyk6IE9taXQgZGVwcmVjYXRlZCBvcHRpb25zIGZyb20gb3B0YXJnIGhhbmRsaW5nLgoJCjIwMDAtMDItMTEgMTU6NDggIGhhcmRha2VyCgoJLSAobWFuYWdlci8qKTogL3Vzci9sb2NhbC9iaW4vcGVybCAtPiAvdXNyL2Jpbi9wZXJsCgkKMjAwMC0wMi0xMSAxNTo0NyAgaGFyZGFrZXIKCgktIChtYWtlZGVwZW5kLmluKTogL3Vzci9sb2NhbC9iaW4vcGVybCAtPiAvdXNyL2Jpbi9wZXJsCgkKMjAwMC0wMi0xMSAxNTozOCAgaGFyZGFrZXIKCgktIChyc25tcCk6IHBlcmw1IC0+IHBlcmwKCQoyMDAwLTAyLTExIDE1OjE3ICBoYXJkYWtlcgoKCS0gKG1hbi9NYWtlZmlsZS5pbik6IGluc3RhbGwgc25tcF90cmFwX2FwaS4zCgkKMjAwMC0wMi0xMSAxNDoyMCAgaGFyZGFrZXIKCgktIChsb2NhbC9NYWtlZmlsZS5pbik6IGxhc3QgbWludXRlIG1ha2VmaWxlIHRvdWNodXAKCQoyMDAwLTAyLTExIDE0OjAzICBoYXJkYWtlcgoKCS0gKE5FV1MpOiB1cGRhdGUgZm9yIDQuMS4xCgkKMjAwMC0wMi0xMSAxMzo0NyAgaGFyZGFrZXIKCgktIChDaGFuZ2VMb2cpOiBVcGRhdGUgZm9yIDQuMS4xCgkKMjAwMC0wMi0xMSAxMzoyOSAgaGFyZGFrZXIKCgktICh2ZXJzaW9uLmggYnVnLXJlcG9ydCBzZWRzY3JpcHQuaW4pOiB2ZXJzaW9uIHRhZyAoIDQuMS4xICkKCQoyMDAwLTAyLTExIDEyOjUzICBoYXJkYWtlcgoKCS0gKFQwMTZzbm1wdjJjZ2V0ZmFpbCwgVDAxN3NubXB2MmN0b3YxZ2V0ZmFpbCk6IHVwZGF0ZSBmb3IgVGltZW91dCBmb3IgdjJjLgoJCjIwMDAtMDItMTEgMTI6NDkgIGhhcmRha2VyCgoJLSAobG9jYWwvTWFrZWZpbGUuaW4pOiBkb24ndCBjcCBmb3Igc25tcGNoZWNrCgkKMjAwMC0wMi0xMSAxMjo0NCAgaGFyZGFrZXIKCgktIChsb2NhbC9NYWtlZmlsZS5pbik6IGZpeCBmb3Igc2VwZXJhdGUgYnVpbGQgcGF0aAoJCjIwMDAtMDItMTEgMTI6MzAgIGhhcmRha2VyCgoJLSAoc3lzT1JUYWJsZS5oKTogUGF0Y2ggZnJvbSBOaWVscyBCYWdnZXNlbjoKCSAgLSBjb21waWxlciB3YXJuaW5nIGZpeC4KCQoyMDAwLTAyLTExIDEyOjI5ICBoYXJkYWtlcgoKCS0gKHNubXBfYWdlbnQuYyk6IHBhdGNoIGZyb20gTmllbHM6CgkgIC0gZG9uJ3Qgc2VuZCBhdXRoZXJyb3IgcmVzcG9uc2VzIGZvciB2MmMuCgkgIC0gc2VuZCBhdXRoRmFpbHVyZSB0cmFwLgoJCjIwMDAtMDItMTEgMTI6MjIgIGhhcmRha2VyCgoJLSAoYWNjb25maWcuaCwgY29uZmlnLmguaW4pOiBjaGFuZ2UgcGVybCBwYXRoIHRvIC91c3IvYmluLgoJCjIwMDAtMDItMTEgMDY6NTggIGhhcmRha2VyCgoJLSAoYWNjb25maWcuaCwgY29uZmlnLmguaW4pOiBEb250IGRlZmluZSBQUk9DRklYQ01EIGFuZCBFWEVDRklYQ01EIGJ5IGRlZmF1bHQuCgkKMjAwMC0wMi0xMCAxMToxNCAgbXNsaWZjYWsKCglmaXggZm9yIG9sZGVyIHBsYXRmb3JtcyB0byB1c2UgcGFzc19wZXJzaXN0OyBub3QgaW5jbHVkZWQgYnkgZGVmYXVsdC4KCQoyMDAwLTAyLTEwIDEwOjMzICBtc2xpZmNhawoKCVtubyBsb2cgbWVzc2FnZV0KCQoyMDAwLTAyLTEwIDEwOjMyICBoYXJkYWtlcgoKCS0gKGhyX3N3aW5zdC5jKTogbWlub3IgZml4ZXMgcG9pbnRlZCBvdXQgYnkgTWljaGFlbC4KCQoyMDAwLTAyLTEwIDEwOjI4ICBoYXJkYWtlcgoKCS0gKHNubXB2My5jKTogZml4IHNldHVwIGVuZ2luZUlEIGJ1ZmZlciBvdmVyZmxvdyBmb3VuZCBieSBNaWtlIEJhZXIuCgkKMjAwMC0wMi0xMCAwODozOSAgbmJhCgoJLSBtYW4vKjogc2V0IHRoZSBkYXRlcyBvbiB0aGUgcGFnZXMgdG8gcmVmbGVjdCB0aGUgcmV2aXNpb24gZGF0ZQoJCjIwMDAtMDItMTAgMDg6MTMgIG1zbGlmY2FrCgoJZml4IHZhcmFyZ3MgZGVjbC9kZWZuIG9mIHNubXBfbG9nCgkKMjAwMC0wMi0xMCAwODowMCAgbXNsaWZjYWsKCgl0eXBlZGVmIGludCBzc2l6ZV90IChvbmUgbGluZSBhZGRlZCkgZm9yIGJ1aWxkIG9uIFN1bk9TIDQuCgkKMjAwMC0wMi0xMCAwNzo1NCAgaGFyZGFrZXIKCgktIChGQVEpOiBtZW50aW9uIHRoZSB0dXRvcmlhbC4KCQoyMDAwLTAyLTEwIDA3OjE0ICBkYXZlcwoKCS0gKEZBUSk6IEV4cGxpY2l0IGV4YW1wbGVzIG9mIHNlbmRpbmcgdHJhcHMgYnkgaGFuZAoJCjIwMDAtMDItMTAgMDQ6NDEgIGRhdmVzCgoJLSAoc25tcGxpYi97c25tcF9hcGksc25tcF9jbGllbnR9LmMgYXBwcy9zbm1wbmV0c3RhdC9pbmV0Ni5jKToKCSAgLSAgQ29tbWVudCB1bnVzZWQgY29kZSBtb3JlIGluZm9ybWF0aXZlbHkgYXMgdG8gd2h5IGl0IGlzIG9taXR0ZWQuCgkKMjAwMC0wMi0wOSAxMzo1MyAgaGFyZGFrZXIKCgktIChldmFsX3Rvb2xzLnNoLCBUMDIzc25tcHYzZ2V0TUQ1REVTLCBUMDI0c25tcHYzZ2V0U0hBMSwgVDAyNXNubXB2M2dldFNIQURFUyk6CgkgIC0gc2tpcCBzc2wgdGVzdHMgd2UgY2FuJ3QgcGVyZm9ybS4KCQoyMDAwLTAyLTA5IDEzOjUxICBtc2xpZmNhawoKCWluY2x1ZGUgc3lzL3BhcmFtLmggdG8gZ2V0IFBBVEhfTUFYIG9uIEZyZWVCU0QuCgkKMjAwMC0wMi0wOSAxMzozOCAgaGFyZGFrZXIKCgktIChTdjNTSEFERVNjb25maWcsIFQwMjRzbm1wdjNnZXRTSEExLCBUMDI1c25tcHYzZ2V0U0hBREVTKToKCSAgLSBtYWtlIFNIQSB0ZXN0cyBhY3R1YWxseSB3b3JrLgoJCjIwMDAtMDItMDkgMTM6MzIgIGhhcmRha2VyCgoJLSAoU3YzY29uZmlnc2hhKTogc2hhIGNvbmZpZyBzdXBwb3J0CgkKMjAwMC0wMi0wOSAxMzozMSAgaGFyZGFrZXIKCgktIChUMDAzc25tcHYxZ2V0ZmFpbCwgVDAxNnNubXB2MmNnZXRmYWlsLCBUMDE3c25tcHYyY3RvdjFnZXRmYWlsLAoJICBUMDE4c25tcHYxdG92MmNnZXRmYWlsKTogZml4IGZvciBwcm9wZXIgQUNNIGVycm9yIG91dHB1dHMuCgkKMjAwMC0wMi0wOSAxMzozMCAgbXNsaWZjYWsKCglEZWZpbmUgU05NUF9NQVhQQVRILCBhbmQgdXNlIGl0LgoJCjIwMDAtMDItMDkgMTM6MzAgIGhhcmRha2VyCgoJLSAoVDAyNHNubXB2M2dldFNIQTEgVDAyNXNubXB2M2dldFNIQURFUyk6IG5ldyB0ZXN0cwoJCjIwMDAtMDItMDkgMTM6MTYgIGhhcmRha2VyCgoJLSAoVUNELVNOTVAtTUlCLnR4dCk6IG1lbnRpb24gYSBuZXcgdWNkRXhwZXJpbWVudGFsIHJlZ2lzdHJhdGlvbiAod2F2bGFuKS4KCQoyMDAwLTAyLTA5IDEzOjE2ICBoYXJkYWtlcgoKCS0gKGFnZW50X2NhbGxiYWNrcy5oLCBhZ2VudF9yZWdpc3RyeS5jLCBhZ2VudF9yZWdpc3RyeS5oLAoJICBzbm1wX2FnZW50LmMsIHZhY21fdmFycy5jKToKCSAgLSBmaXggcG9zaWJsZSBhY20gRG9TIHByb2JsZW1zIGJ5IGNoZWNraW5nIGFjY2VzcyB0YWJsZXMgZWFybHkgb24uCgkKMjAwMC0wMi0wOSAxMTozOCAgaGFyZGFrZXIKCgktIChocl9zd2luc3QuYyk6IHBhdGNoIGZyb20gcmVkaGF0IGZvciBiZXR0ZXIgUlBNIHN1cHBvcnQuCgkKMjAwMC0wMi0wOSAxMDo0MyAgaGFyZGFrZXIKCgktIChjb25maWd1cmUuaW4pOiBjaGFuZ2UgbW9kZSB0byBhdXRvY29uZi4KCQoyMDAwLTAyLTA5IDEwOjQxICBoYXJkYWtlcgoKCS0gKE1ha2VmaWxlLmluKTogZml4IHJzbm1wIGJ1aWxkLiAgUmVhbGx5LiAgSSBtZWFuIGl0LgoJCjIwMDAtMDItMDkgMTA6NDEgIGhhcmRha2VyCgoJLSAoaHJfZmlsZXN5cy5jLCBocl9zdG9yYWdlLmMpOiBQYXRjaCBmcm9tIEFuZHkgSE9PRDoKCSAgLSBTb2xhcmlzIHBhdGNoZXMuCgkKMjAwMC0wMi0wOSAxMDozNyAgaGFyZGFrZXIKCgktIChNYWtlZmlsZS5pbik6CgkgIC0gZml4IHJzbm1wLm1hZGUuCgkgIC0gdXNlICQoTUFLRSkuCgkKMjAwMC0wMi0wOSAwODo0MSAgaGFyZGFrZXIKCgktICh2bXN0YXRfc29sYXJpczIuYywgdm1zdGF0X3NvbGFyaXMyLmgpOiBVcGRhdGUgZnJvbSBKb2NoZW4gS21pZXRzY2gKCQoyMDAwLTAyLTA3IDExOjQ5ICBtYXJ6CgoJb29wcyBtaXNzaW5nIGltcG9ydGFudCBmaXggZm9yIHdpbjMyIGJ1aWxkIC0gZmRfc2V0IG11c3QgYmUgc2FtZSBzaXplIGFzIGluIHdpbnNvY2sKCQoyMDAwLTAyLTA3IDExOjE4ICBtc2xpZmNhawoKCVVuZG8gbGFzdCBjaGFuZ2U7IG9uIFN1biwgYWRkaXRpb25hbCBwbGF0Zm9ybSBpbmZvIHdhcyBub3Qgb2J0YWluZWQ7Cgl0aGUgcHJvcGVyIHNvbHV0aW9uIHdvdWxkIGJlIHRvIHJlbW92ZSB0aGUgc2Vjb25kIHRva2VuIChob3N0bmFtZSkuCgkKMjAwMC0wMi0wNyAxMDo0MyAgbXNsaWZjYWsKCglLZWVwIGN1c3RvbWVyJ3Mgbm9kZW5hbWUgb3V0IG9mIHRoZSBwdWJsaXNoZWQgJ3VuYW1lJyBpbmZvcm1hdGlvbi4KCQoyMDAwLTAyLTA3IDA3OjIwICBoYXJkYWtlcgoKCS0gKFBPUlRJTkcpOiBNaWNoYWVsIGxpa2VzIGRpZmYgLXUuCgkKMjAwMC0wMi0wNiAwNjoxMSAgbmJhCgoJLSByZWFkX2NvbmZpZy5jOiBGaXggb25lIGZpbmFsICc6JyB0byBFTlZfU0VQQVJBVE9SX0NIQVIKCQoyMDAwLTAyLTA1IDE3OjM5ICBoYXJkYWtlcgoKCS0gKHNubXB2My5jKTogY29ycmVjdCBzb21lIGF3ZnVsIHRleHQgLT4gZW5naW5lSUQgY3JlYXRpb24gbWlzdGFrZXMuCgkKMjAwMC0wMi0wNSAwODozNyAgaGFyZGFrZXIKCgktIChzbm1wdHJhcGQuYyk6IGZpeCB3cmFwcGVkIGxpbmUgY29udGludWF0aW9uIGluIHVzYWdlIG1lc3NhZ2UuCgkKMjAwMC0wMi0wNSAwNjo1NiAgbWFyegoKCWZpeCB2ZXJzaW9uICBudW1iZXIKCQoyMDAwLTAyLTA0IDE4OjU1ICBtYXJ6CgoJd2VpcmQgZGVsYXkgaW4gY3JlYXRpb24gb2YgcGlkIGZpbGVzCgkKMjAwMC0wMi0wNCAxODoyMSAgbWFyegoKCWJyYWluLW8KCQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgpDaGFuZ2VzOiBWNC4xIC0+IFY0LjEuMQoKbWFyeiAgNSBGZWIgMDAgMDY6NTY6NDMKICAgIGZpeCB2ZXJzaW9uICBudW1iZXIKCmhhcmRha2VyICA1IEZlYiAwMCAwODozNzoyNwogICAgLSAoc25tcHRyYXBkLmMpOiBmaXggd3JhcHBlZCBsaW5lIGNvbnRpbnVhdGlvbiBpbiB1c2FnZSBtZXNzYWdlLgoKaGFyZGFrZXIgIDUgRmViIDAwIDE3OjM5OjU0CiAgICAtIChzbm1wdjMuYyk6IGNvcnJlY3Qgc29tZSBhd2Z1bCB0ZXh0IC0+IGVuZ2luZUlEIGNyZWF0aW9uIG1pc3Rha2VzLgoKbmJhICA2IEZlYiAwMCAwNjoxMTo1OQogICAgLSByZWFkX2NvbmZpZy5jOiBGaXggb25lIGZpbmFsICc6JyB0byBFTlZfU0VQQVJBVE9SX0NIQVIKCmhhcmRha2VyICA3IEZlYiAwMCAwNzoyMDoyNAogICAgLSAoUE9SVElORyk6IE1pY2hhZWwgbGlrZXMgZGlmZiAtdS4KCm1zbGlmY2FrICA3IEZlYiAwMCAxMDo0MzoyOQogICAgS2VlcCBjdXN0b21lcidzIG5vZGVuYW1lIG91dCBvZiB0aGUgcHVibGlzaGVkICd1bmFtZScgaW5mb3JtYXRpb24uCgptc2xpZmNhayAgNyBGZWIgMDAgMTE6MTg6MjYKICAgIFVuZG8gbGFzdCBjaGFuZ2U7IG9uIFN1biwgYWRkaXRpb25hbCBwbGF0Zm9ybSBpbmZvIHdhcyBub3Qgb2J0YWluZWQ7CiAgICB0aGUgcHJvcGVyIHNvbHV0aW9uIHdvdWxkIGJlIHRvIHJlbW92ZSB0aGUgc2Vjb25kIHRva2VuIChob3N0bmFtZSkuCgptYXJ6ICA3IEZlYiAwMCAxMTo0OTowMQogICAgb29wcyBtaXNzaW5nIGltcG9ydGFudCBmaXggZm9yIHdpbjMyIGJ1aWxkIC0gZmRfc2V0IG11c3QgYmUgc2FtZSBzaXplIGFzIGluIHdpbnNvY2sKCmhhcmRha2VyICA5IEZlYiAwMCAwODo0MToxMQogICAgLSAodm1zdGF0X3NvbGFyaXMyLmMsIHZtc3RhdF9zb2xhcmlzMi5oKTogVXBkYXRlIGZyb20gSm9jaGVuIEttaWV0c2NoCgpoYXJkYWtlciAgOSBGZWIgMDAgMTA6Mzc6MDAKICAgIC0gKE1ha2VmaWxlLmluKToKICAgICAgLSBmaXggcnNubXAubWFkZS4KICAgICAgLSB1c2UgJChNQUtFKS4KCmhhcmRha2VyICA5IEZlYiAwMCAxMDo0MToxNAogICAgLSAoaHJfZmlsZXN5cy5jLCBocl9zdG9yYWdlLmMpOiBQYXRjaCBmcm9tIEFuZHkgSE9PRDoKICAgICAgLSBTb2xhcmlzIHBhdGNoZXMuCgpoYXJkYWtlciAgOSBGZWIgMDAgMTA6NDE6NDQKICAgIC0gKE1ha2VmaWxlLmluKTogZml4IHJzbm1wIGJ1aWxkLiAgUmVhbGx5LiAgSSBtZWFuIGl0LgoKaGFyZGFrZXIgIDkgRmViIDAwIDEwOjQzOjA1CiAgICAtIChjb25maWd1cmUuaW4pOiBjaGFuZ2UgbW9kZSB0byBhdXRvY29uZi4KCmhhcmRha2VyICA5IEZlYiAwMCAxMTozODo0MgogICAgLSAoaHJfc3dpbnN0LmMpOiBwYXRjaCBmcm9tIHJlZGhhdCBmb3IgYmV0dGVyIFJQTSBzdXBwb3J0LgoKaGFyZGFrZXIgIDkgRmViIDAwIDEzOjE2OjE3CiAgICAtIChhZ2VudF9jYWxsYmFja3MuaCwgYWdlbnRfcmVnaXN0cnkuYywgYWdlbnRfcmVnaXN0cnkuaCwKICAgICAgc25tcF9hZ2VudC5jLCB2YWNtX3ZhcnMuYyk6CiAgICAgIC0gZml4IHBvc2libGUgYWNtIERvUyBwcm9ibGVtcyBieSBjaGVja2luZyBhY2Nlc3MgdGFibGVzIGVhcmx5IG9uLgoKaGFyZGFrZXIgIDkgRmViIDAwIDEzOjE2OjU4CiAgICAtIChVQ0QtU05NUC1NSUIudHh0KTogbWVudGlvbiBhIG5ldyB1Y2RFeHBlcmltZW50YWwgcmVnaXN0cmF0aW9uICh3YXZsYW4pLgoKbXNsaWZjYWsgIDkgRmViIDAwIDEzOjMxOjAxCiAgICBEZWZpbmUgU05NUF9NQVhQQVRILCBhbmQgdXNlIGl0LgoKaGFyZGFrZXIgIDkgRmViIDAwIDEzOjMxOjI0CiAgICAtIChUMDAzc25tcHYxZ2V0ZmFpbCwgVDAxNnNubXB2MmNnZXRmYWlsLCBUMDE3c25tcHYyY3RvdjFnZXRmYWlsLAogICAgICBUMDE4c25tcHYxdG92MmNnZXRmYWlsKTogZml4IGZvciBwcm9wZXIgQUNNIGVycm9yIG91dHB1dHMuCgptc2xpZmNhayAgOSBGZWIgMDAgMTM6NTE6MTIKICAgIGluY2x1ZGUgc3lzL3BhcmFtLmggdG8gZ2V0IFBBVEhfTUFYIG9uIEZyZWVCU0QuCgpoYXJkYWtlciAgOSBGZWIgMDAgMTM6NTM6MzcKICAgIC0gKGV2YWxfdG9vbHMuc2gsIFQwMjNzbm1wdjNnZXRNRDVERVMsIFQwMjRzbm1wdjNnZXRTSEExLCBUMDI1c25tcHYzZ2V0U0hBREVTKToKICAgICAgLSBza2lwIHNzbCB0ZXN0cyB3ZSBjYW4ndCBwZXJmb3JtLgoKZGF2ZXMgMTAgRmViIDAwIDA0OjQxOjEwCiAgICAtIChzbm1wbGliL3tzbm1wX2FwaSxzbm1wX2NsaWVudH0uYyBhcHBzL3NubXBuZXRzdGF0L2luZXQ2LmMpOgogICAgICAtICBDb21tZW50IHVudXNlZCBjb2RlIG1vcmUgaW5mb3JtYXRpdmVseSBhcyB0byB3aHkgaXQgaXMgb21pdHRlZC4KCmRhdmVzIDEwIEZlYiAwMCAwNzoxNDo1MQogICAgLSAoRkFRKTogRXhwbGljaXQgZXhhbXBsZXMgb2Ygc2VuZGluZyB0cmFwcyBieSBoYW5kCgpoYXJkYWtlciAxMCBGZWIgMDAgMDc6NTQ6NDYKICAgIC0gKEZBUSk6IG1lbnRpb24gdGhlIHR1dG9yaWFsLgoKbXNsaWZjYWsgMTAgRmViIDAwIDA4OjAwOjI2CiAgICB0eXBlZGVmIGludCBzc2l6ZV90IChvbmUgbGluZSBhZGRlZCkgZm9yIGJ1aWxkIG9uIFN1bk9TIDQuCgptc2xpZmNhayAxMCBGZWIgMDAgMDg6MTM6MTQKICAgIGZpeCB2YXJhcmdzIGRlY2wvZGVmbiBvZiBzbm1wX2xvZwoKbmJhIDEwIEZlYiAwMCAwODo0MDowNAogICAgLSBtYW4vKjogc2V0IHRoZSBkYXRlcyBvbiB0aGUgcGFnZXMgdG8gcmVmbGVjdCB0aGUgcmV2aXNpb24gZGF0ZQoKaGFyZGFrZXIgMTAgRmViIDAwIDEwOjI4OjIxCiAgICAtIChzbm1wdjMuYyk6IGZpeCBzZXR1cCBlbmdpbmVJRCBidWZmZXIgb3ZlcmZsb3cgZm91bmQgYnkgTWlrZSBCYWVyLgoKaGFyZGFrZXIgMTAgRmViIDAwIDEwOjMyOjA4CiAgICAtIChocl9zd2luc3QuYyk6IG1pbm9yIGZpeGVzIHBvaW50ZWQgb3V0IGJ5IE1pY2hhZWwuCgptc2xpZmNhayAxMCBGZWIgMDAgMTA6MzM6NDcKICAgICoqKiBlbXB0eSBsb2cgbWVzc2FnZSAqKioKCm1zbGlmY2FrIDEwIEZlYiAwMCAxMToxNDo1OAogICAgZml4IGZvciBvbGRlciBwbGF0Zm9ybXMgdG8gdXNlIHBhc3NfcGVyc2lzdDsgbm90IGluY2x1ZGVkIGJ5IGRlZmF1bHQuCgpoYXJkYWtlciAxMSBGZWIgMDAgMDY6NTg6MDMKICAgIC0gKGFjY29uZmlnLmgsIGNvbmZpZy5oLmluKTogRG9udCBkZWZpbmUgUFJPQ0ZJWENNRCBhbmQgRVhFQ0ZJWENNRCBieSBkZWZhdWx0LgoKaGFyZGFrZXIgMTEgRmViIDAwIDEyOjIyOjEwCiAgICAtIChhY2NvbmZpZy5oLCBjb25maWcuaC5pbik6IGNoYW5nZSBwZXJsIHBhdGggdG8gL3Vzci9iaW4uCgpoYXJkYWtlciAxMSBGZWIgMDAgMTI6Mjk6MzcKICAgIC0gKHNubXBfYWdlbnQuYyk6IHBhdGNoIGZyb20gTmllbHM6CiAgICAgIC0gZG9uJ3Qgc2VuZCBhdXRoZXJyb3IgcmVzcG9uc2VzIGZvciB2MmMuCiAgICAgIC0gc2VuZCBhdXRoRmFpbHVyZSB0cmFwLgoKaGFyZGFrZXIgMTEgRmViIDAwIDEyOjMwOjAyCiAgICAtIChzeXNPUlRhYmxlLmgpOiBQYXRjaCBmcm9tIE5pZWxzIEJhZ2dlc2VuOgogICAgICAtIGNvbXBpbGVyIHdhcm5pbmcgZml4LgoKaGFyZGFrZXIgMTEgRmViIDAwIDEyOjQ0OjIzCiAgICAtIChsb2NhbC9NYWtlZmlsZS5pbik6IGZpeCBmb3Igc2VwZXJhdGUgYnVpbGQgcGF0aAoKaGFyZGFrZXIgMTEgRmViIDAwIDEyOjQ5OjAzCiAgICAtIChsb2NhbC9NYWtlZmlsZS5pbik6IGRvbid0IGNwIGZvciBzbm1wY2hlY2sKCmhhcmRha2VyIDExIEZlYiAwMCAxMjo1MzoxNQogICAgLSAoVDAxNnNubXB2MmNnZXRmYWlsLCBUMDE3c25tcHYyY3RvdjFnZXRmYWlsKTogdXBkYXRlIGZvciBUaW1lb3V0IGZvciB2MmMuCgpoYXJkYWtlciAxMSBGZWIgMDAgMTM6Mjk6MjkKICAgIC0gKHZlcnNpb24uaCBidWctcmVwb3J0IHNlZHNjcmlwdC5pbik6IHZlcnNpb24gdGFnICggNC4xLjEgKQoKCQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgpDaGFuZ2VzOiBWNC4wLjEgLT4gVjQuMQoKbXNsaWZjYWsgMjQgQXVnIDk5IDA0OjQ0OjQ3CiAgICBDbGVhbiBDUnMgZnJvbSByZWFkX2NvbmZpZyxzbm1wX2xvZ2dpbmc7IGNvbW1lbnQgZGVmaW5lIFVTRV9BU05fU0hPUlRfTEVOLgoKbXNsaWZjYWsgMjQgQXVnIDk5IDA1OjExOjEzCiAgICBSZW1vdmUgQVNOX1NIT1JUX0xFTiBoYWNrIC0ga25vd24gdG8gZHVtcCBjb3JlIGluIGFnZW50LgoKbXNsaWZjYWsgMjQgQXVnIDk5IDA2OjE5OjQ5CiAgICBBZGQgIi4iIHRvIFBBVEggZm9yIFJVTlRFU1RTOyBEcm9wIG9wdHJlc2V0IHRvIGJ1aWxkIG1vc3QgcGxhdGZvcm1zCgptc2xpZmNhayAyNCBBdWcgOTkgMTA6MjU6NTMKICAgIC0odGVzdGluZy9ldmFsX3Rvb2xzKSAtIGxldCBzb21lIChBSVgpIGFnZW50cyBzZXR0bGUgYmVmb3JlIGZpcmluZyByZXF1ZXN0cy4KCmhhcmRha2VyIDI0IEF1ZyA5OSAxMjo0ODoyMQogICAgLSAodmFjbV92YXJzLmMpOiBjb3JyZWN0IHN5c09SVGFibGUgZW50cnkuCgpoYXJkYWtlciAyNCBBdWcgOTkgMTM6MzY6MzUKICAgIC0gKHNubXB1c20uYyk6IGNoZWNrIGZvciBudWxsIHJlc3BvbnNlIHBvaW50ZXIuCgpoYXJkYWtlciAyNCBBdWcgOTkgMTM6Mzc6MzEKICAgIC0gKHNubXBfcGFyc2VfYXJncy5jLCBkZWZhdWx0X3N0b3JlLmgsIHNubXBfYXBpLmMsIHNubXB2My5jKToKICAgICAgLSBwcm92aWRlIGRlZlZlcnNpb24gdG9rZW4gc3VwcG9ydCBpbiBzbm1wLmNvbmYgKHNvcnQgb2YgaGFja2lzaCkuCgpoYXJkYWtlciAyNCBBdWcgOTkgMTM6NDE6MTgKICAgIC0gKFRPRE8pOiByZW1vdmUgc25tcHYzIHN1cHBvcnQgOi0pCgptc2xpZmNhayAyNCBBdWcgOTkgMTQ6MDU6MzkKICAgIC0odG9wL01ha2VmaWxlLmluKSAtIHJlbW92ZSBtb3JlIGdlbmVyYXRlZCBmaWxlcyB3aXRoIGRpc3RjbGVhbiBydWxlLgoKaGFyZGFrZXIgMjQgQXVnIDk5IDE0OjE1OjQwCiAgICAtIChhbGxfc3lzdGVtLmgpOiByZW1vdmUuICBhZ2Fpbi4KCm1zbGlmY2FrIDI0IEF1ZyA5OSAxNDoxNzozMwogICAgLShob3N0L2hyX3N3cnVuO21pYklJL2ljbXAsaXA7dWNkLXNubXAvZGlzayxwcm9jKSBsb2dfcGVycm9yIC0tPiBzbm1wX2xvZ19wZXJyb3IKCm1zbGlmY2FrIDI0IEF1ZyA5OSAxNToxNDoxOAogICAgLShzbXV4LmMpIGFwcGx5IE5pY2sgQW1hdG8ncyBwYXRjaDogcHJldmVudCBTTVVYIGNsb3NlIG9uIHBhcnNlIG9yIGVycm9yLgoKaGFyZGFrZXIgMjQgQXVnIDk5IDE1OjU5OjQyCiAgICAtIChzbm1wX2FwaS5jKTogcmVtb3ZlIHZlcnNpb24gc2V0dGluZyBpbiBzbm1wX2FwaS5jLiAgTm90IG5lZWRlZCB0aGVyZS4KCmhhcmRha2VyIDI0IEF1ZyA5OSAxNjowMTo1NQogICAgLSAoTkVXUyk6IDQuMC4xIHVwZGF0ZQoKbXNsaWZjYWsgMjQgQXVnIDk5IDE2OjA1OjE1CiAgICAtKGNvbmZpZ3VyZS4qKSBtb3ZlIHN0YXRlbWVudCBhYm91dCB1Y2REZW1vUHVibGljIGludG8gY29tbWVudCBmaWVsZC4KCm1zbGlmY2FrIDI0IEF1ZyA5OSAxNjo0OToyMgogICAgLSh0ZXN0aW5nLyopIHJ1biB0ZXN0cyB3aGVuIHBhY2thZ2UgaXMgbm90IGluc3RhbGxlZCwgYW5kIHdoZW4KICAgIHRoZSBidWlsZCB0cmVlIGlzIG5vdCB0aGUgc2FtZSBhcyB0aGUgc291cmNlIHRyZWUuCgpoYXJkYWtlciAyNCBBdWcgOTkgMTc6MTM6MjUKICAgIC0gKENoYW5nZUxvZyk6IHVwZGF0ZSBmb3IgNC4wLjEKCmhhcmRha2VyIDI0IEF1ZyA5OSAxNzoxNDo1MAogICAgLSAodmVyc2lvbi5oIGJ1Zy1yZXBvcnQgc2Vkc2NyaXB0LmluKTogdmVyc2lvbiB0YWcgKCA0LjAuMSApCgptc2xpZmNhayAyNCBBdWcgOTkgMTc6Mzk6NTQKICAgIC0oUlVOVEVTVFMpIGV4cG9ydCBQQVRIIGJlZm9yZSB1c2UKCm1zbGlmY2FrIDI0IEF1ZyA5OSAxNzo0MzowNAogICAgLSh0ZXN0aW5nL01ha2VmaWxlLmluKSBubyBuZWVkIHRvIGJ1aWxkIHRhcmdldHMgaW4gdGVzdCBydWxlLgoKbXNsaWZjYWsgMjYgQXVnIDk5IDEzOjE4OjMxCiAgICAtKHRlc3RpbmcvUlVOVEVTVFMpIGltcHJvdmVkIFBBVEggc2V0Cgptc2xpZmNhayAyNiBBdWcgOTkgMTM6NDA6MTMKICAgIC0odGVzdGluZy9NYWtlZmlsZS5pbikgZG9uJ3QgYnVpbHQgdGFyZ2V0cyB0aGF0IGFyZSBubyBsb25nZXIgdXNlZAoKbXNsaWZjYWsgMjcgQXVnIDk5IDA3OjM1OjEwCiAgICAtKGNvbmZpZ3VyZSosIHNlZHNjcmlwdCopIGNoYW5nZSAuLi5FWFRFTklTLi4uICB0byAuLi5FWFRFTlNJLi4uCgptc2xpZmNhayAyNyBBdWcgOTkgMDg6MDM6NDYKICAgIEhvd2FyZCBTcGluZGVsIHN1Z2dlc3RzIGFuIEFQSSBmb3IgdHJhcHMgd2l0aCBwYXNzX3BlcnNpc3QuCgpoYXJkYWtlciAyNyBBdWcgOTkgMDk6MTc6MDgKICAgIC0gKGljbXAuYywgaW50ZXJmYWNlcy5jLCBpcC5jLCByb3V0ZV93cml0ZS5jLCB0Y3AuYywgdWRwLmMsIHZhcl9yb3V0ZS5jKToKICAgICAgLSBTdXNhbm5lIE9zdGVkIHBvaW50ZWQgb3V0IGEgbGFjayBvZiAjaWYgSEFWRV9TWVNfUEFSQU1fSC4KCmhhcmRha2VyIDI4IEF1ZyA5OSAwNzoxOToxNgogICAgLSAoTWFrZWZpbGUuaW4pOiBpbnN0YWxsIHNubXBfYWxhcm0uMy4KCmhhcmRha2VyIDI4IEF1ZyA5OSAwNzoyOTo0OAogICAgLSAoYWNjb25maWcuaCwgY29uZmlnLmguaW4sIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCByZWFkX2NvbmZpZy5jKToKICAgICAgLSBhZGQgL2V0Yy9zbm1wIHRvIGRlZmF1bHQgY29uZiBmaWxlIHBhdGggdG8gbWFrZSBSZWRIYXQgaGFwcHkuCgpoYXJkYWtlciAzMCBBdWcgOTkgMDk6MzM6NDEKICAgIC0gKE1ha2VmaWxlLmluLCBhZ2VudF9yZWFkX2NvbmZpZy5jLCBhZ2VudF9yZWdpc3RyeS5jLCBhZ2VudF90cmFwLmMsCiAgICAgIGFnZW50X3RyYXAuaCwgZHNfYWdlbnQuaCwgc25tcF9hZ2VudC5jLCBzbm1wX2FnZW50LmgsIHNubXBfdmFycy5jLAogICAgICBzbm1wZC5jLCB1dGlsX2Z1bmNzLmMsIHN5c09SVGFibGUuYywgY2FsbGJhY2suYywgY2FsbGJhY2suaCwKICAgICAgZGVmYXVsdF9zdG9yZS5oLCByZWFkX2NvbmZpZy5jLCBzbm1wX2FwaS5jKToKICAgICAgLSByZXN0cnVjdHVyZSB0aGUgYWdlbnQgaW50byB0d28gcGllY2VzOiBhIGxpYnJhcnkgYW5kIGEgYXBwbGljYXRpb24uCiAgICAgICAgLSBuZWVkcyBtdWNoIG1vcmUgd29yay4KICAgICAgICAtIG1hbnkgcGFyYW1ldGVycyBhcmUgbm93IGNvbnRyb2xsZWQgYnkgbmV3IGRlZmF1bHRfc3RvcmUgc2V0dGluZ3MKICAgICAgICAgIHRvIGhlbHAgcmVsaWV2ZSBjb21waWxlIHRpbWUgYmluZGluZ3MuCiAgICAgIC0gbWVyZ2UgaW5pdF9zbm1wIGFuZCB0aGUgY3VzdG9tIHZlcnNpb24gY2FsbGVkIGluc2lkZSB0aGUgYWdlbnQuCiAgICAgIC0gYWRkIGEgbmV3IHBsYWNlIGZvciB0cmFwIHNwZWNpZmljIGFnZW50IGNvZGUgKGFnZW50X3RyYXAuW2NoXSkuCiAgICAgIC0gcHJvYmFibHkgb3RoZXIgdGhpbmdzIEkndmUgZm9yZ290dGVuIHRoYXQgSSBkaWQuCgpoYXJkYWtlciAzMCBBdWcgOTkgMDk6Mzg6MTgKICAgIC0gKGNsaWVudC5jLCBtYXN0ZXIuYywgbWFzdGVyX3JlcXVlc3QuYywgcHJvdG9jb2wuYywgc3ViYWdlbnQuYyk6CiAgICAgIC0gZGVidWdnaW5nIHN0YXRlbWVudHMuCiAgICAgIC0gdXNlIG5ldyBkZWZhdWx0X3N0b3JlIHNldHRpbmdzIGluc3RlYWQgb2YgZXh0ZXJuYWwgdmFyaWFibGVzLgoKaGFyZGFrZXIgMzAgQXVnIDk5IDEwOjMwOjU2CiAgICAtIChtYXN0ZXIuYywgbWFzdGVyX3JlcXVlc3QuYyk6IHlldCBtb3JlIGRlYnVnZ2luZy4KCm5iYSAzMCBBdWcgOTkgMTM6MDI6MTgKICAgIC0gbWFuL3NubXBkLmNvbmYuNS5kZWY6IGRvY3VtZW50IHNtdXhwZWVyIGRpcmVjdGl2ZQoKbmJhIDMwIEF1ZyA5OSAxMzowMzo0MAogICAgLSBhcHBzL3NubXBfcGFyc2VfYXJncy5jOiBwcm9wZXJseSBoYW5kbGUgTUlCOm9pZCBjb25zdHJ1Y3QKCm5iYSAzMCBBdWcgOTkgMTM6MDU6MDIKICAgIC0gYXBwcy9zbm1wdHJhcGQuYzogZml4IGFyZ3VtZW50IHBhcnNlcgoKbmJhIDMxIEF1ZyA5OSAwMDowODo0NQogICAgLSBhZ2VudC9zbm1wZC5jOiBkb24ndCB0cnkgdG8gcGFyc2UgYSBwYWNrZXQgd2hlbiB0aGVyZSBpcyBhbiBlcnJvciBpbgogICAgCXJlY3Zmcm9tCgptc2xpZmNhayAzMSBBdWcgOTkgMDg6MTc6MjQKICAgIC0oYWdlbnRfdHJhcC5jKSBmaXggcmVjZW50IG1lbW9yeSBsZWFrLCBhbmQgc2l6ZW9mKG9iamlkX3NubXB0cmFwKSBidWcuCgptc2xpZmNhayAzMSBBdWcgOTkgMDk6MjY6MTQKICAgIC0oYWdlbnRfdHJhcC5jKSBhbHdheXMgZnJlZSBQRFUgYWZ0ZXIgc25tcF9zZW5kLgoKZGF2ZXMgIDIgU2VwIDk5IDA2OjM4OjE2CiAgICAtIChhZ2VudC9taWJncm91cC9taXNjL2lwZndhY2MuaCk6IEZpeCBNSUIgbG9jYXRpb24gb2YgaXBmd2FjYyBtb2R1bGUKCmRhdmVzICAyIFNlcCA5OSAwNjozODo1MwogICAgLSAoYWdlbnQvbWliZ3JvdXAvbWlzYy9pcGZ3YWNjLmMpOiBGaXggTUlCIGxvY2F0aW9uIG9mIGlwZndhY2MgbW9kdWxlCgpoYXJkYWtlciAgMiBTZXAgOTkgMDc6MDc6MDQKICAgIC0gKHN1YmFnZW50LmMpOiBzaHV0ZG93bl9zdWJhZ2VudCAtPiBzdWJhZ2VudF9zaHV0ZG93biBzbyBjb25maWd1cmUKICAgICAgZG9lc24ndCBmaW5kIGl0LgoKaGFyZGFrZXIgIDIgU2VwIDk5IDA4OjUyOjQ4CiAgICAtIChzdWJhZ2VudC5jKTogb3Bwcy4gIEZvcmdvdCBhIHNodXRkb3duIG5hbWUgY2hhbmdlIGluc3RhbmNlLgoKaGFyZGFrZXIgIDMgU2VwIDk5IDEzOjE1OjE1CiAgICAtIChoaXN0b3J5LmMsIGhpc3RvcnkuaCwgc25tcF92YXJzLmxpbnV4LmgpOiByZW1vdmVkLiBObyBsb25nZXIgbmVlZGVkLgoKaGFyZGFrZXIgIDMgU2VwIDk5IDEzOjE1OjMzCiAgICAtIChNYWtlZmlsZS5pbik6IGluc3RhbGwgYWdlbnQgaGVhZGVyIGZpbGVzLgoKaGFyZGFrZXIgIDMgU2VwIDk5IDEzOjI3OjEzCiAgICAtIChNYWtlZmlsZS5pbik6CiAgICAgIC0gaW5zdGFsbCBsaWJhZ2VudC5hLgogICAgICAtIG1rZGlyaGVpciBvbiBuZWVkZWQgbmV3IGluc3RhbGxhdGlvbiBkaXJlY3Rvcmllcy4KCmhhcmRha2VyICAzIFNlcCA5OSAxMzozMDozNgogICAgLSAoc25tcGxpYi9NYWtlZmlsZS5pbik6IGluc3RhbGwgbW9yZSBsaWJyYXJ5IGhlYWRlcnMuCgpoYXJkYWtlciAgMyBTZXAgOTkgMTQ6Mjg6NDYKICAgIC0gKHNubXBfdmFycy5jKTogZG9uJ3QgZmFsbCBvZmYgdGhlIGVuZCBvZiB0aGUgc2VhcmNoIHRyZWUuCgpoYXJkYWtlciAgMyBTZXAgOTkgMTU6MDE6MzkKICAgIC0gKEZBUSk6IG1vcmUgQlNESSBzeXN0ZW0gdmVyc2lvbnMgbGlzdGVkLgoKbmJhICA2IFNlcCA5OSAyMzo1MzowNwogICAgLSAobWFuL3NubXBfYXBpLjMgc25tcGxpYi9zbm1wX2FwaS5jIGFnZW50L3NubXBkLmMgYXBwcy9zbm1wdHJhcC5jKToKICAgIAlmaXggbWVtb3J5IGxlYWsgd2hlbiBhZ2VudCBzZW5kcyB0cmFwcyBieSBpbXBsZW1lbnRpbmcgdGhlIG1pc3NpbmcKICAgIAlmcmVlIG9mIFRSQVAgcGR1IGluIHNubXBfc2VuZC4KCm5iYSAgNiBTZXAgOTkgMjM6NTU6MzgKICAgIC0gaWYuYzogY29ycmVjdCBjYWxscyBvZiBzbm1wX2ZpeF9wZHUgdG8gdXNlIEdFVE5FWFQKCm1zbGlmY2FrICA3IFNlcCA5OSAxNDo0NzoxOAogICAgLShwYXJzZS4qKSBmaXggc21hbGwgbWVtb3J5IGxlYWtzOyBhbGxvdyBJTkRFWHtJTlRFR0VSLi4ufSBjbGF1c2VzOwogICAgICAgICAgICAgICBhbGxvdyBsYXJnZXIgREVTQ1JJUFRJT04gY2xhdXNlcyBbbWF4IDgxOTJdLgoKbXNsaWZjYWsgIDcgU2VwIDk5IDE1OjIyOjE0CiAgICBzbm1wdjMuYyAtIHNpbGVuY2UgdHlwZSB3YXJuaW5nIGZyb20gTVNWQysrLgoKbXNsaWZjYWsgIDcgU2VwIDk5IDE1OjIzOjAyCiAgICAoZGVmYXVsdF9zdG9yZS4qKSAtIG1ha2UgM3JkIHBhcmFtIHRvIGRzX3NldF9zdHJpbmcgdHlwZSBvZiBjb25zdCBjaGFyICouCgptc2xpZmNhayAgNyBTZXAgOTkgMTU6MjM6NTEKICAgICh3aW4zMi9jb25maWcuaCkgLSBzZXQgU05NUENPTkZQQVRIIHRvIHN1Y2NlZWQgY29tcGlsZTsKICAgICh3aW4zMipsaWJzbm1wLmRlZikgLSBhZGQgbmV3IHNubXBfZ2V0X3Rva2VuIHRvIGxpc3QuCgptc2xpZmNhayAgNyBTZXAgOTkgMTU6MzI6MDAKICAgIC0oc25tcF9hcGkuaCkgc3RydWN0IHBkdSBhbmQgc25tcF9zZXNzaW9uIGFncmVlOiBsb25nIHR5cGUgZm9yIHZlcnNpb24gbWVtYmVyLgoKbXNsaWZjYWsgIDcgU2VwIDk5IDE1OjMyOjU5CiAgICAtKHBhcnNlLmMpIHJlbW92ZSB1bm5lZWRlZCBzdHJkdXAgdG8gRmlsZSB2YXJpYWJsZSBmcm9tIGluaXRfbWliX2ludGVybmFscy4KCm1zbGlmY2FrICA3IFNlcCA5OSAxNTo1NzoxMwogICAgLShwYXJzZS5jKSBmaXggVW5saW5rZWQgT0lEIHByaW50IHdoZW4gb2JqZWN0IGlkZW50aWZpZXIgaGFzIG5vIHBhcmVudC4KCm1zbGlmY2FrICA3IFNlcCA5OSAyMDoxMjo1NwogICAgLShhZ2VudF90cmFwLmMsc25tcHRyYXAuYyxzbm1wX2FwaS5bM2NdKSAtIHNubXBfZnJlZV9wZHUgZml4IEJ1ZyAjNTQgcGVyIE5pZWxzIEIuCiAgICAtKHNubXBuZXRzdGF0L2lmLmMpIC0gZml4IGZvciBHRVRORVhUIHBlciBOaWVscyBCLgoKbXNsaWZjYWsgIDcgU2VwIDk5IDIwOjE5OjUyCiAgICBzbm1wdHJhcC5jIC0gcmV3b3JrIGZpeCBidWcgIzU0IChtaXNzZWQgZWxzZSkuCgptc2xpZmNhayAgOCBTZXAgOTkgMDU6MTY6MzQKICAgIGluY2x1ZGUgcmVhZF9jb25maWcuaAoKbmJhICA4IFNlcCA5OSAwNzo0NTo1NAogICAgLSAoY29uZmlndXJlLmluLCBsb2FkYXZlLmMpOiBTb2xhcmlzIDIuNyBoYXMgZ2V0bG9hZGF2ZyBwcm90b3R5cGUKCm5iYSAgOCBTZXAgOTkgMDc6NDY6NTEKICAgIC0gc25tcF9hcGkuaDogbW92ZSBpbmNsdXNpb24gcHJvdGVjdGlvbiB0byB0aGUgcmVhbCBiZWdpbm5pbmcvZW5kIG9mIHRoZSBmaWxlCgpuYmEgIDggU2VwIDk5IDA3OjQ4OjAzCiAgICAtIHZhcl9zdHJ1Y3QuaDogdGhlIEFnZW50eCBjb2RlIHVzZXMgdW5zaWduZWQgdmFsdWVzIGZvciB0aGUgdmFyaWFibGUgdHlwZS4KCm5iYSAgOCBTZXAgOTkgMDc6NTA6MzcKICAgIC0gKHZhcmlvdXMpOiBmaXggY29tcGlsZXIgd2FybmluZ3MKCm5iYSAgOCBTZXAgOTkgMDc6NTE6MjYKICAgIC0gc25tcGQuMS5kZWY6IGZpeCBhIGZvcm1hdHRpbmcgcHJvYmxlbQoKbmJhICA4IFNlcCA5OSAwNzo1MjoyMwogICAgLSBhcHBzL3NubXB0cmFwZC5jOiBmaXggYXJndW1lbnQgcHJvY2Vzc2luZyAoLWxkIGFuZCBzaW1pbGFyKQoKbXNsaWZjYWsgIDggU2VwIDk5IDEzOjAwOjQwCiAgICAtKHRlc3RpbmcvUlVOVEVTVFMpIHByZWZpeCBQQVRIIHdpdGggLiBhbmQgLi4gLCBhcyB0aGUgc2NyaXB0IGNoYW5nZXMgZGlyLgoKbXNsaWZjYWsgIDggU2VwIDk5IDEzOjA0OjU1CiAgICAtKHNubXBsaWIvc25tcF9jbGllbnQuKikgYWRkIHNubXBfc3BsaXRfcGR1LCBzbm1wX3ZhcmJpbmRfbGVuIG1ldGhvZHMuCgptc2xpZmNhayAgOCBTZXAgOTkgMTc6MDI6MzcKICAgIG1pYmluY2wuaCwgbWliZ3JvdXAvbWliSUkvKiAtIGZpeHVwIGZvciBDeWdXaW4zMiBidWlsZAoKbXNsaWZjYWsgIDggU2VwIDk5IDE3OjQ5OjEzCiAgICAtKGNvbmZpZyosd2luMzIvKixzbm1wbGliLyopIHJlc291cmNlIGxvY2tpbmcgb3JpZ2luYWxseSBmcm9tIE1hcmtrdSBMYXVra2FuZW4KCm1zbGlmY2FrICA4IFNlcCA5OSAxNzo1Mjo0NwogICAgLShtdF9zdXBwb3J0LiopIE9yaWdpbmFsIGJ5IE1hcmtrdSBMYXVra2FuZW4sIGNoYW5nZXMgYnkgTS4gU2xpZmNhawoKbXNsaWZjYWsgIDggU2VwIDk5IDIyOjMwOjI5CiAgICAtKHNtdXguYykgdmFyX3NtdXhfd3JpdGUgZml4ZWQgcGVyIE1pa2UgTWljaGF1ZCBhbmQgTmljayBBbWF0bwoKbXNsaWZjYWsgIDggU2VwIDk5IDIyOjM0OjM3CiAgICAtKG1pYmluY2wuaCkgY29tbWVudCBvdXQgZHVwbGljYXRlICNpbmNsdWRlIGhlYWRlciBsaW5lcy4KCmRhdmVzICA5IFNlcCA5OSAwMTozMjoxNQogICAgLSAobWlicy9TTk1QdjItQ09ORi50eHQpOiBPbWl0IHVubmVjZXNzYXJ5IGltcG9ydCBjbGF1c2UKCm1zbGlmY2FrICA5IFNlcCA5OSAwMjoyMTo1MAogICAgLSh3aW5zdHViLmMpIEhhY2sgdG8gYWxsb3cgc25tcG5ldHN0YXQgLWEgdG8gd29yayBvbiBBSVg0IChzaWMpLgoKbXNsaWZjYWsgIDkgU2VwIDk5IDAyOjMxOjI2CiAgICAtKCpjb25maWcqKSB0dXJuIG9uIHJlc291cmNlIGxvY2tpbmcgd2l0aCAtLWVuYWJsZS1yZWVudHJhbnQuCgptc2xpZmNhayAgOSBTZXAgOTkgMTM6NTk6MjYKICAgIC0obWliLmMsIHBhcnNlLmMpIG1pYi5jIHByaW50X3RyZWVfbm9kZSB0ZXN0IGRpc3BsYXkgbnVsbCB0eXBlIHdpdGggcmFuZ2UKICAgICAgICAgICAgICAgICAgICAgIHBhcnNlLmMgd29yayBhcm91bmQgY29yZSBkdW1wIGZyZWVpbmcgVENzIHRoYXQgc3BlY2lmeSByYW5nZXMuCgpuYmEgMTIgU2VwIDk5IDIxOjUwOjIzCiAgICAtIHZhcl9yb3V0ZS5jOiBMaW51eCBjbGVhbnVwLiBSZXF1aXJlZCBmb3IgTGludXgvU1BBUkMKCm5iYSAxMiBTZXAgOTkgMjE6NTc6MTgKICAgIC0gYWdlbnQvKiwgc25tcGxpYi8qOiBtYWxsb2MgZml4ZXMsIHNvbWUgcHJvdm9rZWQgYnkgdGhlIGNvcnJlY3RlZAogICAgCXNubXBfc2VuZCBzZW1hbnRpY3MuCgpuYmEgMTIgU2VwIDk5IDIxOjU4OjE3CiAgICAtIFRFU1RDT05GLnNoOiBmaXggc29tZSBleHBvcnRzIHRvIGV4cG9ydCB0aGUgcmlnaHQgdmFyaWFibGUuCgpuYmEgMTIgU2VwIDk5IDIxOjU5OjM0CiAgICAtIHByb3RvY29sLmM6IGFkZCBhIG1pc3NpbmcgaW5jbHVkZSBmaWxlLgoKbmJhIDEyIFNlcCA5OSAyMjowMDozMwogICAgLSBzbm1wX2ltcGwuaDogcmVtb3ZlZCBzb21lIHVudXNlZC91bm5lZWRlZCBkZWZpbmVzL3N0cnVjdHMKCm5iYSAxMyBTZXAgOTkgMDQ6MzU6MTgKICAgIC0gdmFyX3JvdXRlLmM6IExpbnV4IGNsZWFudXAuIFJlcXVpcmVkIGZvciBMaW51eC9TUEFSQwoKbmJhIDEzIFNlcCA5OSAxMzozMjowNwogICAgLSBzbm1wZC5jOiBmaXggYSBidWZmZXIgb3ZlcmZsb3cKCmhhcmRha2VyIDEzIFNlcCA5OSAxNTowMTo1NAogICAgLSAoYWdlbnRfY2FsbGJhY2tzLmgsIGFnZW50X3JlYWRfY29uZmlnLmMsIGFnZW50X3JlZ2lzdHJ5LmMsCiAgICAgIGFnZW50X3JlZ2lzdHJ5LmgsIHNubXBfYWdlbnQuYywgc25tcF92YXJzLmMsIHNubXBkLmMsIHN1YmFnZW50LmMsCiAgICAgIHN1YmFnZW50LmgsIHN5c09SVGFibGUuYywgdmFjbV92YXJzLmMsIHZhY21fdmFycy5oKToKICAgICAgLSBmdXJ0aGVyIHNlcGFyYXRpb24gb2YgYWdlbnQgY2h1cmNoIGFuZCBzdGF0ZToKICAgICAgICAtIHVzZSBjYWxsYmFja3MgZXZlcnl3aGVyZSBuZWVkZWQgdG8gbm90IGNhbGwgbWliIG1vZHVsZSBjb2RlIGRpcmVjdGx5LgogICAgICAgIC0gZ2V0IHJpZCBvZiBhbGwgaW5zdGFuY2VzIG9mIFVTSU5HXyBpbiBsaWJhZ2VudCBjb2RlLgoKbXNsaWZjYWsgMTMgU2VwIDk5IDIwOjIwOjU0CiAgICAtKHNubXBfYXBpLmMpIHJlLWFzc2VydCBOaWVscycgcGF0Y2ggdG8gc25tcF9zZW5kIHRvIGZyZWUgdjIvdjEgVHJhcC1QRFVzCgptc2xpZmNhayAxNCBTZXAgOTkgMDk6NTQ6MDUKICAgIC0oRkFRLCBtYW4vc25tcGNtZC4xLCBzbm1wbGliL3BhcnNlLiopIGFkZCByZXBsYWNlIE1JQiBjYXBhYmlsaXR5KGV4cGVyaW1lbnRhbCkKCm1hcnogMTQgU2VwIDk5IDEzOjAwOjEyCiAgICAgIChhcHBzL3NubXBfcGFyc2VfYXJncy5jLCBzbm1wbGliL3NubXBfYXBpLltjaF0pOiBmaXggc3B1cmlvdXMgZXJyb3IgbWVzc2FnZSB3aGVuIHNubXBfcGFyc2Vfb2lkIGZhaWxzCgptc2xpZmNhayAxNCBTZXAgOTkgMTM6MjI6MzkKICAgIHBhcnNlLmMgLSBhbm90aGVyIGZpeCBmb3Igbm9kZTogY29uc2lkZXIgTlVMTCBuYW1lIG9yIE5VTEwgcGFyZW50Cgptc2xpZmNhayAxNSBTZXAgOTkgMDY6MDg6MzIKICAgIGluY2x1ZGUgbWliZ3JvdXAvbWliX21vZHVsZV9pbmNsdWRlcy5oIGZvciBiZW5lZml0IG9mIG1pYl9tb2R1bGVfZG90X2NvbmYuaAoKaGFyZGFrZXIgMTUgU2VwIDk5IDA5OjQ1OjM1CiAgICAtIChNYWtlZmlsZS5pbiwgc25tcF9jbG9zZS4zLCBzbm1wX2ZyZWVfcGR1LjMsIHNubXBfb3Blbi4zLAogICAgICBzbm1wX3JlYWQuMywgc25tcF9zZWxlY3RfaW5mby4zLCBzbm1wX3NlbmQuMywKICAgICAgc25tcF9zZXNzX2FzeW5jX3NlbmQuMywgc25tcF9zZXNzX2Nsb3NlLjMsIHNubXBfc2Vzc19lcnJvci4zLAogICAgICBzbm1wX3Nlc3NfaW5pdC4zLCBzbm1wX3Nlc3Nfb3Blbi4zLCBzbm1wX3Nlc3NfcmVhZC4zLAogICAgICBzbm1wX3Nlc3Nfc2VsZWN0X2luZm8uMywgc25tcF9zZXNzX3NlbmQuMywgc25tcF9zZXNzX3Nlc3NfdGltZW91dC4zLAogICAgICBzbm1wX3Nlc3Nfc2Vzc2lvbi4zLCBzbm1wX3RpbWVvdXQuMyk6IFBhdGNoIGZyb20gTWFyayBILiBXb29kOgogICAgICAtIGNyZWF0ZSBzb21lIGZha2Ugc291cmNpbmcgbWFuIHBhZ2VzIGZvciBmdW5jdGlvbnMuCgptc2xpZmNhayAxNSBTZXAgOTkgMTE6MzA6NTgKICAgIGZpbmUgdHVuaW5nIG10IHN1cHBvcnQKCm1zbGlmY2FrIDE2IFNlcCA5OSAxNDoxNjozOAogICAgLXBlciBhZ3JlZW1lbnQgd2l0aCBNYXJra3UsIG5vIHN1cHBvcnQgbmVlZGVkIGZvciBTb2xhcmlzLXNwZWNpZmljIHRocmVhZHMuCgpoYXJkYWtlciAxNyBTZXAgOTkgMDc6MTc6MjEKICAgIC0gKHNubXBfYXBpLjMpOiBQYXRjaCBmcm9tIE1hcmsgSC4gV29vZDoKICAgICAgLSBmaXggY29tbWVudHMuCgptc2xpZmNhayAxNyBTZXAgOTkgMTE6MTk6NDIKICAgIC0ocGFyc2UuYykgLSByZW1vdmUgdW5uZWVkZWQgdXNlIG9mIHN0YXRpYyB2YXIgImxhc3QiCgptc2xpZmNhayAxNyBTZXAgOTkgMTE6MjQ6NDgKICAgIC1yZW1vdmUgb2xkLXN0eWxlIGluaXQgZm9yIHJlcGxhY2UgbWliIGZlYXR1cmUuCgptc2xpZmNhayAxNyBTZXAgOTkgMTE6NDI6MTcKICAgIG1ha2UgbW9kdWxlX21hcCogYW5kIHRva2VucyBzdHJ1Y3R1cmVzIHN0YXRpYyAob25seSB1c2VkIGluIHBhcnNlLmMgPykKCmhhcmRha2VyIDE3IFNlcCA5OSAxNTozNzo0MQogICAgLSAoY29uZmlndXJlKTogdXBkYXRlIHRvIDIuMTMuCgpkYXZlcyAyMSBTZXAgOTkgMDk6MjE6NTkKICAgIC0gKHNubXBsaWIvc25tcF9hcGkuYyk6IGhhbmRsZSBhZGRpbmcgJ2Vycm9yJyB0eXBlIHZhcmlhYmxlcyB0byBhIFBEVQoKZGF2ZXMgMjEgU2VwIDk5IDA5OjI1OjI1CiAgICAtIChhZ2VudC9taWJncm91cC9hZ2VudHgvcHJvdG9jb2wuYyk6IEhhbmRsZSBwYXJzaW5nIG51bGwtbGVuZ3RoIHZhcmlhYmxlcwoKZGF2ZXMgMjEgU2VwIDk5IDA5OjMyOjI3CiAgICAtIChhZ2VudF9yZWdpc3RyeS5jIHNubXBkLmMpOiBTaW1wbGUgcnVuLXRpbWUgZHVtcCBvZiByZWdpc3RlcmVkIE1JQnMKCm1zbGlmY2FrIDIxIFNlcCA5OSAxMDo0MDo0MwogICAgLShtaWIuYykgdW5kbyBlcnJvbmVvdXMgY2hhbmdlIHRvIGluaXRfbWliICh0aGFua3MgTkIhKQoKZGF2ZXMgMjIgU2VwIDk5IDA5OjI3OjM3CiAgICAtIChhZ2VudC9zbm1wZC5jKTogc3R1cGlkIHR5cG8KCmRhdmVzIDIyIFNlcCA5OSAwOTozMTowOAogICAgLSAoYWdlbnQvYWdlbnRfcmVnaXN0cnkuYyk6IHN0dXBpZCB0eXBvCgpkYXZlcyAyMiBTZXAgOTkgMDk6MzM6NTEKICAgIC0gKGFnZW50L2FnZW50X3JlZ2lzdHJ5LltjaF0pOiBQcm92aWRlIG1ldGhvZCBmb3IgcHJpb3JpdGlzZWQgcmVnaXN0cmF0aW9uCgpkYXZlcyAyMiBTZXAgOTkgMDk6MzU6MDkKICAgIC0gKGFnZW50L21pYmdyb3VwL21pYklJL3N5c09SVGFibGUuYyk6CiAgICAgIC0gRW5zdXJlIGxvY2FsIHN5c09SVGFibGUgdGFrZXMgcHJlY2VkZW5jZSBvdmVyIHN1YmFnZW50IHZlcnNpb25zCgpkYXZlcyAyMiBTZXAgOTkgMDk6NTQ6MDIKICAgIC0gKGFnZW50X3JlZ2lzdHJ5LmMgc25tcF92YXJzLmMgdmFyX3N0cnVjdC5oKToKICAgICAgQ2hhbmdlIHRoZSB3YXkgdGhlIE1JQiByZWdpc3RyeSBoYW5kbGVzIHJlZ2lzdGVyZWQgcmFuZ2VzLgogICAgICBUaGlzIHNob3VsZCB3b3JrIG1vcmUgcmVsaWFibHkgKGFzIHdlbGwgYXMgYmVpbmcgcmF0aGVyIHNpbXBsZXIsIElNSE8pCgpkYXZlcyAyMiBTZXAgOTkgMDk6NTg6MTIKICAgIC0gKGFnZW50X3JlZ2lzdHJ5LmMpOiByZW1vdmUgcmVkdW5kYW50IHJvdXRpbmVzCgpkYXZlcyAyMiBTZXAgOTkgMTA6MDA6NTYKICAgIC0gKGFnZW50X3JlZ2lzdHJ5LmMpOiBFbnN1cmUgcmVnaXN0cnkgaXMgaW5pdGlhbGlzZWQgY29ycmVjdGx5IG9uIHN1YmFnZW50cwoKZGF2ZXMgMjIgU2VwIDk5IDEwOjAxOjQ1CiAgICAtIChtaWJncm91cC9hZ2VudHgvbWFzdGVyX3JlcXVlc3QuYyk6IEltcHJvdmVkIEFnZW50WCByZXNwb25zZSBoYW5kbGluZwoKbXNsaWZjYWsgMjIgU2VwIDk5IDEyOjUxOjAwCiAgICAtKHNubXBfYXBpLmMpIC0gSW1wcm92ZWQgZXJyb3Igc3RhdHVzIGFnZ3JlZ2F0aW9uLgoKaGFyZGFrZXIgMjcgU2VwIDk5IDE2OjIyOjIwCiAgICAtIChyZWFkX2NvbmZpZy5jKTogT3BwczogRFNfTElCX0RPTlRfUkVBRF9DT05GSUdTIG5lZWRlZCBhbiAhLgoKaGFyZGFrZXIgMjggU2VwIDk5IDE2OjUyOjA0CiAgICAtIChNYWtlZmlsZS5pbiwgbWliX21vZHVsZXMuYywgbWliX21vZHVsZXMuaCwgc25tcF92YXJzLmMsIHNubXBkLmMpOgogICAgICAtIG1ha2UgbGlidWNkYWdlbnQgYW5kIGxpYnVjZG1pYnMgYXMgc2VwZXJhdGUgbGlicmFyaWVzLiAgSW4gdGhlb3J5LAogICAgICAgIHlvdSBzaG91bGRuJ3QgbmVlZCBsaWJ1Y2RtaWJzIHRvIHVzZSBsaWJ1Y2RhZ2VudC4KCmRhdmVzIDI5IFNlcCA5OSAxMToxNDo0MgogICAgLSAoc25tcGxpYi9zbm1wX2FwaS5jKTogcHJvdGVjdCBzbm1wX2Nsb3NlKCkgYWdhaW5zdCBhIG51bGwgU2Vzc2lvbnMgbGlzdAoKZGF2ZXMgMjkgU2VwIDk5IDExOjE3OjAxCiAgICAtIChtdF9zdXBwb3J0Lmggc25tcF9hcGkuW2NoXSk6IFN1cHBvcnQgZm9yIHNlc3Npb24gYW5kIGluY29taW5nIHRyYW5zYWN0aW9uIElEcwoKZGF2ZXMgMjkgU2VwIDk5IDExOjIzOjQwCiAgICAtIChhZ2VudF9yZWdpc3RyeS5jKTogQ29ycmVjdCB2YWx1ZSBvZiBkZWZhdWx0IHJlZ2lzdHJhdGlvbiBwcmlvcml0eQoKZGF2ZXMgMjkgU2VwIDk5IDExOjM2OjQzCiAgICAtIChhZ2VudF9yZWdpc3RyeS5bY2hdKToKICAgICAgLSBJbXByb3ZlIHJlZ2lzdHJ5IGVycm9yIGhhbmRsaW5nCiAgICAgIC0gQ29ycmVjdGx5IGhhbmRsZSB1bnJlZ2lzdGVyaW5nIE1JQiByZWdpb25zCgpkYXZlcyAyOSBTZXAgOTkgMTE6Mzg6MjIKICAgIC0gKGFnZW50X3JlZ2lzdHJ5LmMpOgogICAgICAtICdDaGlsZHJlbicgbm9kZXMgbm93IGhhdmUgYSBkaWZmZXJlbnQgc3RhdHVzLCBhbmQgc2hvdWxkbid0IGJlIGZyZWVkLiBPb3BzIQoKZGF2ZXMgMjkgU2VwIDk5IDExOjQzOjAwCiAgICAtIChhZ2VudF9yZWdpc3RyeS5bY2hdKTogUHJvdmlzaW9uIHRvIHVucmVnaXN0ZXIgTUlCcyBieSBzZXNzaW9uCgpkYXZlcyAyOSBTZXAgOTkgMTE6NDY6MDIKICAgIC0gKGFnZW50L3NubXBfdmFycy5jKToKICAgICAgLSBNb3ZlIHNldHRpbmcgYWdlbnQgc3RhcnQgdGltZSB0byBlYXJsaWVyIGluIHRoZSBpbml0aWFsaXNhdGlvbiBzZXF1ZW5jZQogICAgICAgIChzbyB0aGF0IGl0IGNhbiBiZSBvdmVycmlkZGVuIGluIHN1YmFnZW50cyB3aXRoIHRoZSBtYXN0ZXIncyB2YWx1ZSkKCmRhdmVzIDI5IFNlcCA5OSAxMTo0ODo1NQogICAgLSAoYWdlbnQvbWliZ3JvdXAvbWliSUkvc3lzT1JUYWJsZS5jKTogQ2hhbmdlIGluIE1JQiByZWdpc3RyYXRpb24gaW50ZXJmYWNlCgpkYXZlcyAyOSBTZXAgOTkgMTI6MTk6NTYKICAgIC0gKGFnZW50L21pYmdyb3VwL2FnZW50eC8qKTogIEFzc29ydGVkIGltcHJvdmVtZW50cyEKCm1zbGlmY2FrIDI5IFNlcCA5OSAxNDozMTo0OAogICAgUm9idXN0IGNvcHkgb2YgaW5mb3JtYXRpb24gdG8gdHJlZSwgaW1wb3J0X2xpc3QsIGRpc3BsYXkgaGludHMuCgpoYXJkYWtlciAyOSBTZXAgOTkgMTY6MzU6NDMKICAgIC0gKGNvbmZpZy5oLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbik6CiAgICAgIC0gZml4IFJBTkxJQiB0ZXN0aW5nIGZvciAtLWVuYWJsZS1zaGFyZWQuCgpoYXJkYWtlciAyOSBTZXAgOTkgMTY6MzY6MDcKICAgIC0gKFJFQURNRSk6IGFkZGVkIE1pa2UgTWljaGF1ZCB0byB0aGUgdGhhbmsgeW91IGxpc3QuCgpoYXJkYWtlciAyOSBTZXAgOTkgMTY6Mzg6MzQKICAgIC0gKGhlYWRlcl9jb21wbGV4LmMsIGhlYWRlcl9jb21wbGV4LmgpOgogICAgICAtIG5ldyBleHRyYWN0aW9uIGFuZCBmcmVlaW5nIGZ1bmN0aW9ucy4KICAgICAgLSBidWcgZml4LCBtaXNzaW5nIGEgbWFsbG9jIHNpemUgYnkgb25lIChlbGVjdHJpYyBmZW5jZSBpcyB2ZXJ5IGNvb2wpLgoKaGFyZGFrZXIgMjkgU2VwIDk5IDE2OjM4OjU5CiAgICAtIChjbGllbnQuYyk6IHRoYXRzICJ0aW1ldmFsIiBub3QgInRpbWV2YWxlIiBEYXZlIChoZWhlKS4KCmhhcmRha2VyIDI5IFNlcCA5OSAxNjozOToyMQogICAgLSAoY2xpZW50LmgpOiBkZWZpbmUgREVGQVVMVF9NSUJfUFJJT1JJVFkgdG8gMjU1LgoKaGFyZGFrZXIgMjkgU2VwIDk5IDE2OjM5OjQyCiAgICAtIChtYXN0ZXJfYWRtaW4uYyk6IC1XYWxsIGZpeGVzIGFuZCBmb3VuZCBhIG1pc3NpbmcgfS4KCmhhcmRha2VyIDI5IFNlcCA5OSAxNjo0MDowOAogICAgLSAocGFzcy5jKTogcnVuIG50b2hsIG9uIGlwIGFkZHJlc3NlcyBzdG9yZWQgaW4gYSBsb25nLgoKaGFyZGFrZXIgMjkgU2VwIDk5IDE2OjQwOjMwCiAgICAtIChtaWIyYy52YXJ0eXBlcy5jb25mKTogcmVtb3ZlZCBleHRyYSBcbi4KCmhhcmRha2VyIDI5IFNlcCA5OSAxNzowMToyOAogICAgLSAoYWdlbnRfcmVnaXN0cnkuYywgYWdlbnRfcmVnaXN0cnkuaCk6IGZpeCBidWdzLgoKaGFyZGFrZXIgMjkgU2VwIDk5IDE3OjAxOjUwCiAgICAtIChtaWJfbW9kdWxlcy5jKTogaW5jbHVkZSBuZXRpbmV0L2luLmgKCm1zbGlmY2FrIDI5IFNlcCA5OSAyMzo0Mjo0OQogICAgUmVtb3ZlIHVudXNlZCBmaWxlLi4gc25tcGxpYi9ocHV4LmMKCmRhdmVzIDMwIFNlcCA5OSAwMTowOToyNQogICAgLSAobWliZ3JvdXAvaG9zdC9ocl9zeXN0ZW0uYyk6CiAgICAgIC0gcHJvdGVjdCBhZ2FpbnN0IE5VTEwgdXRtcCBmaWxlIChmcm9tIEZhYnJpY2UgRHVwcmUpCgpkYXZlcyAgMSBPY3QgOTkgMDk6NDg6MjAKICAgIC0gKGFnZW50L01ha2VmaWxlLmluKTogRml4IGluY29tcGF0YWJpbGl0eSBpbiBhZ2VudCBsaWJyYXJ5IG5hbWVzCgpkYXZlcyAgMiBPY3QgOTkgMTQ6Mjg6MjAKICAgIC0gKG1pYmdyb3VwL2FnZW50eC9tYXN0ZXJfYWRtaW4uYyBtaWJncm91cC9hZ2VudHgvc3ViYWdlbnQuYyk6CiAgICAgIC0gRml4IGEgcHJvYmxlbSB3aXRoIHJlLXVzZWQgUERVIHN0cnVjdHVyZXMgYmVpbmcgZnJlZWQgdHdpY2UuCgpkYXZlcyAgNCBPY3QgOTkgMDM6NTg6MjIKICAgIC0gKGFnZW50X3JlZ2lzdHJ5LltjaF0gbWliZ3JvdXAvYWdlbnR4L2NsaWVudC5oKToKICAgICAgLSBjb25zb2xpZGF0ZSBkZWZpbml0aW9ucyBvZiBkZWZhdWx0IE1JQiByZWdpc3RyYXRpb24gcHJpb3JpdHkKCmRhdmVzICA0IE9jdCA5OSAwOTo1Mzo0OAogICAgLSAoYWdlbnRfcmVnaXN0cnkuW2NoXSBzbm1wX3ZhcnMuaCBtaWJJSS9zeXNPUlRhYmxlLmMKICAgICAgIGFnZW50eC9jbGllbnQuW2NoXSBhZ2VudHgvbWFzdGVyX2FkbWluLmMpOgogICAgICAgLSBIYW5kbGUgTUlCIHJhbmdlIHJlZ2lzdHJhdGlvbiwgYW5kIGNsZWFuIHVwIHdyYXBwZXIgaW50ZXJmYWNlcwoKZGF2ZXMgIDQgT2N0IDk5IDA5OjU4OjI2CiAgICAtIChtaWJfbW9kdWxlcy5jIG1pYmdyb3VwL2FnZW50eC9zdWJhZ2VudC5bY2hdKToKICAgICAgLSBFbnN1cmUgc3ViYWdlbnQgaXMgaW5pdGlhbGlzZWQgZWFybHkgKHByaW9yIHRvIE1JQiByZWdpc3RyYXRpb24sIGV0YykKCmRhdmVzICA0IE9jdCA5OSAxMDoxNTozOAogICAgLSAoc25tcGxpYi9jYWxsYmFjay5oKTogSW5jcmVhc2UgbnVtYmVyIG9mIGFwcGxpY2F0aW9uIGNhbGxiYWNrcyBzdXBwb3J0ZWQKCmRhdmVzICA0IE9jdCA5OSAxMDoxNzo1MwogICAgLSAoYWdlbnRfY2FsbGJhY2tzLmggIG1pYmdyb3VwL21pYklJL3N5c09SVGFibGUuW2NoXQogICAgICAgbWliZ3JvdXAvYWdlbnR4L21hc3Rlcl9hZG1pbi5jIG1pYmdyb3VwL2FnZW50eC9zdWJhZ2VudC5jKToKICAgICAgIC0gQ29tcGxldGUgc3ViYWdlbnQgaGFuZGxpbmcgb2YgQWdlbnQgQ2FwYWJpbGl0aWVzIC8gc3lzT1JUYWJsZQoKZGF2ZXMgIDQgT2N0IDk5IDEwOjIyOjI1CiAgICAtIChhZ2VudHgvY2xpZW50LltjaF0gYWdlbnR4L21hc3Rlcl9hZG1pbi5jKTogVHJpdmlhbCAncGluZycgaW1wbGVtZW50YXRpb24KCm5iYSAgNCBPY3QgOTkgMTE6NDg6NTEKICAgIC0gKHNubXBfYXBpPywgaW50NjQuPyBzbm1wdHJhcC5jKTogYWRkIHNvbWUgZXJyb3IgY2hlY2tpbmcgZm9yIHZhcmlhYmxlcwoKbmJhICA0IE9jdCA5OSAxMTo1MDo1MAogICAgLSBNYWtlZmlsZS5pbjoJYWx3YXlzIHVzZSAkKE1BS0UpIGZvciBtYWtlIGluIE1ha2VmaWxlcwoKbmJhICA0IE9jdCA5OSAxMTo1MjoyNQogICAgLSBjb25maWd1cmUuaW46CXJlbW92ZSAtcGVkYW50aWMgZnJvbSAtLXdpdGgtZGV2ZWxvcGVyLCBhbmQgdGhlIHN5c3RlbSBoZWFkZXJzCiAgICAJYXJlIG5vdCBwcmVwYXJlZCBmb3IgaXQgKGF0IGxlYXN0IG9uIExpbnV4IGFuZCBOZXRCU0QpCgpuYmEgIDQgT2N0IDk5IDEzOjM4OjE5CiAgICAtIHZhcmlvdXM6IGluY2x1ZGUgYWRkaXRpb25zIGFuZCBmaXhlcyB0byBraWxsIHdhcm5pbmdzCgpoYXJkYWtlciAgNCBPY3QgOTkgMTM6NTE6NTEKICAgIC0gKHN5c3RlbV9taWIuYyk6IG1ha2Ugc3lzU2VydmljZXMgY29uZmlndXJhYmxlLgoKbmJhICA0IE9jdCA5OSAxMzo1MjoyMAogICAgLSBzdWJhZ2VudC5oLCBzdWJhZ2VudC5jLCBtaWJfbW9kdWxlcy5jOiBwcmVfaW5pdF9zdWJhZ2VudCBjb25mdXNlcwogICAgCWNvbmZpZ3VyZSBpbnRvIGJlbGlldmluZyB0aGVyZSBpcyBhIGluaXRfc3ViYWdlbnQgZnVuY3Rpb24uCiAgICAJUmVuYW1lIHRvIHN1YmFnZW50X3ByZV9pbml0CgpoYXJkYWtlciAgNCBPY3QgOTkgMTY6MzI6MTkKICAgIC0gKGhlYWRlcl9jb21wbGV4LmMsIGhlYWRlcl9jb21wbGV4LmgpOiBhZGRlZCBoZWFkZXJfY29tcGxleF9maW5kX2VudHJ5KCkuCgpkYXZlcyAgNSBPY3QgOTkgMDc6MjM6NDUKICAgIC0gKGFnZW50eC9tYXN0ZXJfcmVxdWVzdC5jIGFnZW50eC9zdWJhZ2VudC5jKTogV29ya2luZyBTRVQgc3VwcG9ydAoKbmJhICA1IE9jdCA5OSAyMTo0OToyMgogICAgLSBzbm1wX2RlYnVnLmg6IG1ha2UgdGhlIERFQlVHKiBtYWNyb3Mgc2FmZSBmb3IgdXNlIGluIGNvbXBvdW5kIHN0YXRlbWVudHMKCm5iYSAgNSBPY3QgOTkgMjI6MTg6NDYKICAgIC0gc25tcF9wYXJzZV9hcmdzLmM6IGZpeGVzIHRvIHJlcG9ydCBpbnZhbGlkIGVuZ2luZUlkCgpuYmEgIDUgT2N0IDk5IDIyOjIyOjU0CiAgICAtIHN1YmFnZW50LmM6IGluY2x1ZGUgc3lzdGVtLmggZm9yIHByb3RvdHlwZSBmb3IgY2FsY3VsYXRlX3RpbWVfZGlmZgoKaGFyZGFrZXIgIDYgT2N0IDk5IDA4OjU3OjQyCiAgICAtIChmaXhwcm9jKTogbmV3IGNvbW1lbnRlZCB2ZXJzaW9uLgoKaGFyZGFrZXIgIDYgT2N0IDk5IDE2OjMxOjUzCiAgICAtIChhY2NvbmZpZy5oLCBjb25maWcuaC5pbiwgcmVhZF9jb25maWcuYywgc25tcF9hcGkuYywgc25tcF9jbGllbnQuYyk6CiAgICAgIC0gU2F2ZSBhbmQgcGFyc2Ugb2xkZXIgcGVyc2lzdGVudCBzdG9yYWdlIGZpbGVzIHRvIG1ha2Ugc3VyZSBkYXRhIGlzCiAgICAgICAgbm90IGxvc3QgZHVyaW5nIHN0b3JhZ2UgY3Jhc2hlcy4KICAgICAgLSBGaXggU05NUHYzIGVuZ2luZUlEIHByb2JlczogUERVJ3MgYXJlIGFsbG93ZWQgdG8gaGF2ZSBhIE5VTEwgdmFyYmluZGxpc3QuCgpkYXZlcyAgNyBPY3QgOTkgMDc6MjY6MjAKICAgIC0gKGFnZW50X3RyYXAuYyBhZ2VudF90cmFwLmggYWdlbnRfcmVhZF9jb25maWcuYyBzbm1wZC5oKToKICAgICAgLSAgUmUtd3JpdGUgb2YgYWdlbnQgdHJhcCBoYW5kbGluZzoKICAgIAlQcm92aXNpb24gZm9yIHYxIHRyYXBzIHdpdGggdmFyYmluZHMKICAgIAlDb25zb2xpZGF0ZSB2MSBhbmQgdjIgdHJhcCBzaW5rIGxpc3RzCiAgICAJUHJlbGltaW5hcnkgSU5GT1JNIHN1cHBvcnQKCmRhdmVzICA3IE9jdCA5OSAwODo0MjoxNQogICAgLSAoYWdlbnRfdHJhcC5bY2hdKTogSW1wcm92ZSBhY2Nlc3NpYmlsaXR5IGZvciBzdWJhZ2VudHMKCmRhdmVzICA3IE9jdCA5OSAwOTowMToyNQogICAgLSAoYWdlbnR4L3N1YmFnZW50LmMgYWdlbnR4L21hc3Rlcl9hZG1pbi5jKTogTm90aWZpY2F0aW9uIHN1cHBvcnQKCm1zbGlmY2FrIDEyIE9jdCA5OSAwNTo1ODoyOAogICAgbWliLmMgOiBxdWlja19wcmludCBpcyBleHBvc2VkIGZvciBDTVVfQ09NUEFUSUJMRSBidWlsZHMuCiAgICBsY2RfdGltZS5jIDogY29tbWVudGVkIHVudXNlZCBkdW1wX2V0aW1lbGlzdF9lbnRyeSB1bmRlciBTTk1QX1RFU1RJTkdfQ09ERS4KCm1zbGlmY2FrIDEyIE9jdCA5OSAwNjowNzo0NAogICAgRGVmaW5lIGFkZHJlc3MgbGVuZ3RoIGZvciBGcmVlQlNEIHBsYXRmb3JtLgoKbXNsaWZjYWsgMTMgT2N0IDk5IDAzOjU0OjAyCiAgICBhZGQgbWlzc2luZyBwcm90byBmb3Igc2F2ZV9wZXJzaXN0ZW50LgoKbmJhIDEzIE9jdCA5OSAwNzowOTozNgogICAgLSBtYXN0ZXJfYWRtaW4uYywgc3lzdGVtX21pYi5oOiBpbmNsdWRlcyBmb3IgcHJvdG90eXBlcwoKbXNsaWZjYWsgMTUgT2N0IDk5IDA3OjA5OjE0CiAgICAtKGRlZmF1bHRfc3RvcmUuYywgY2FsbGJhY2suYykgZml4CiAgICBidWcgaW4gYXJyYXktYm91bmRhcnkgY2hlY2sgaW4gc25tcGxpYi9jYWxsYmFjay5jCiAgICByZXBvcnRlZCBieSBCZXJ0IEhvbHN0ZWluIDE1IE9jdCAxOTk5LgoKaGFyZGFrZXIgMjAgT2N0IDk5IDE3OjI2OjU5CiAgICAtIChoZWFkZXJfY29tcGxleC5jKTogcGFyc2VkIHN0cmluZ3MgZnJvbSBvaWQncyBpbmNsdWRlIG51bGwgdGVybWluYXRvcnMuCgpoYXJkYWtlciAyMCBPY3QgOTkgMTg6MDg6MzkKICAgIC0gKG1pYi5jKTogZW5hYmxlIG9pZCBwYXJzZXIgdG8gaGFuZGxlIHNpbXBsZSBlbWJlZGRlZCBzdHJpbmdzIGluIG9pZHMKICAgICAgYW5kIHRvIHRyYW5zbGF0ZSB0aGVtIGludG8gb2lkIHNlZ21lbnRzLgogICAgICBFRzogLjEuMy5cImhlbGxvXCIuXCdoaVwnIC0+IC4xLjMuNS4xMDQuMTAxLjEwOC4xMDguMTExLjEwNC4xMDUKCmhhcmRha2VyIDIxIE9jdCA5OSAxMDowNzowMAogICAgLSAobWliLmMpOiBlbmFibGUgb2lkbmFtZS4iaGkiLid0aGVyZScgaW4gZ2V0X21vZHVsZV9ub2RlKCkgYXMgd2VsbC4KCm1zbGlmY2FrIDIxIE9jdCA5OSAxMDoyMDoxNQogICAgTm90ZSAgU05NUEVSUl9VTktOT1dOX09CSklEIGVycm9yIHdpdGhvdXQgc3BlY2lmeWluZyBzbm1wX2Vycm5vIF9vdXRzaWRlXyB0aGUgbGlicmFyeS4KCm1zbGlmY2FrIDIxIE9jdCA5OSAxMDoyNjoyOQogICAgTm90ZSAgU05NUEVSUl9VTktOT1dOX09CSklEIGVycm9yIGZyb20gd2l0aGluIHRoZSBsaWJyYXJ5LgoKbXNsaWZjYWsgMjEgT2N0IDk5IDEwOjM3OjQ5CiAgICBtaWIuYyAtIHJlc3RvcmUgbGluZSBzdG9tcGVkIGluIG15IGxhc3QgdXBkYXRlLgogICAgcmVhZF9jb25maWcuYyAtIGRyb3AgdW51c2VkIHZhcmlhYmxlLgogICAgc25tcF9hcGkuYyAtIG5ldyBtZXRob2Qgc25tcF9vcGVuX2V4IHJlcGxhY2VzIHNldCBpbnRlcm5hbCBob29rIGZ1bmN0aW9ucy4KCm1zbGlmY2FrIDIxIE9jdCA5OSAxMDozOTowOQogICAgRml4dXBzIGZvciBidWlsZGluZyB3aXRoIE1TVkMrKy4gKG5vIGhwdXguYywgc3VwcGx5IE1BWF9QRVJTSVNURU5UX0JBQ0tVUFMpLgoKbXNsaWZjYWsgMjEgT2N0IDk5IDEwOjQxOjM4CiAgICByZW1pbmRlcnMgZm9yIHNubXBfc2Vzc19wZXJyb3IgdXNhZ2UgYWZ0ZXIgb3Blbi4KICAgIHNubXB0YWJsZS5jIC0gb3Blbi9jbG9zZSBzZXNzaW9uIGZyb20gbWFpbigpLgogICAgbmV0c3RhdC9tYWluLmMgLSB1c2Ugc25tcF9zZXNzX3BlcnJvci4KCm1zbGlmY2FrIDIxIE9jdCA5OSAxMDo0MjoyOAogICAgdXNlIHNubXBfb3Blbl9leC4KCm1zbGlmY2FrIDIxIE9jdCA5OSAxMjowOTo1MQogICAgRml4IEJVRyM3OAoKbXNsaWZjYWsgMjEgT2N0IDk5IDEyOjMxOjI4CiAgICBzbWFsbCBwYXRjaCBmcm9tIE0uIExhdWtrYW5lbiB0byBmaXggSFAgYUNDIGJ1aWxkLgoKbmJhIDIxIE9jdCA5OSAxMjo1MjoyNgogICAgLSBtZW1vcnlfc29sYXJpcy5jOiByZW9yZGVyIGNvbXB1dGF0aW9ucyB0byBhdm9pZCBvdmVyZmxvdy4KCm5iYSAyMSBPY3QgOTkgMTI6NTQ6NDEKICAgIC0gbWVtb3J5X3NvbGFyaXMyLmM6IHJlb3JkZXIgY29tcHV0YXRpb25zIHRvIGF2b2lkIG92ZXJmbG93LgoKbXNsaWZjYWsgMjIgT2N0IDk5IDA2OjI5OjE2CiAgICBJbiBmaXhpbmcgYnVnICM4MyBvbiA0LjAgYnJhbmNoLCBkaXNjb3ZlcmVkIHRoYXQgMy42IGJyYW5jaAogICAgZGlkIG5vdCBoYXZlICJvY3RldCIgdG9rZW4gc3VwcG9ydC4gIEFkZGVkLgoKbXNsaWZjYWsgMjIgT2N0IDk5IDA2OjI5OjUyCiAgICBGaXggQlVHICM4My4KCm1zbGlmY2FrIDIyIE9jdCA5OSAwNzozOTowMQogICAgUmVtb3ZlZCBkdXBsaWNhdGVkIHZhcmlhYmxlIGluIGEgbmVzdGVkIGJsb2NrLiBBUmchCgpoYXJkYWtlciAyMiBPY3QgOTkgMDk6NTk6MzkKICAgIC0gKG1pYi5jKTogZW5hYmxlIGhleCBzdHJpbmdzIGluc2lkZSBvaWRzLgoKbXNsaWZjYWsgMjIgT2N0IDk5IDEwOjEyOjI2CiAgICBEaXNwbGF5IF9zb21lXyBvY3RldCBzdHJpbmcgaW5kaWNlcyBvZiBvYmplY3QgaWRlbnRpZmllcnMgYXMgcXVvdGVkIHByaW50YWJsZS4KICAgIFNob3VsZCBiZSBleHBhbmRlZCB0byBoYW5kbGUgb3RoZXIgSU5ERVggdHlwZXMuCgpoYXJkYWtlciAyMiBPY3QgOTkgMTU6Mjg6NTkKICAgIC0gKGFjY29uZmlnLmgsIGNvbmZpZy5oLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwga2V5dG9vbHMuYywKICAgICAga2V5dG9vbHMuaCwgc2NhcGkuYyk6CiAgICAgIC0gdXNlIG9wZW5zc2wgZm9yIG1kNS9zaGEgc3VwcG9ydCAoZnJvbSBPbGFmdXIgR3VkbXVuZHNzb24pLgoKaGFyZGFrZXIgMjIgT2N0IDk5IDE1OjI5OjM4CiAgICAtIChtaWIuYyk6IHByaW50IHN0cmluZyBiYXNlZCBPSURzIGJldHRlci4KCmhhcmRha2VyIDI0IE9jdCA5OSAwODoyNDowMgogICAgLSAoY29uZmlndXJlLCBjb25maWd1cmUuaW4pOiBTTk1QQ09ORlBBVEggdXNlcyBzeXNjb25mZGlyIG5vdCBkYXRhZGlyLgoKaGFyZGFrZXIgMjQgT2N0IDk5IDA4OjI0OjIxCiAgICAtIChSRUFETUUuc25tcHYzKTogdHlwby4KCmhhcmRha2VyIDI0IE9jdCA5OSAwODoyNTozNQogICAgLSAobWliLmMpOiBmaXggIm1pYnMiIGFuZCAibWliZGlycyIgLmNvbmYgZGlyZWN0aXZlcyB0byBwcm9wZXJseQogICAgICBoYW5kbGUgbXVsdGlwbGUgY2FsbHMgKGFkZGl0aXZlKSBhbmQgJysncyBhbmQgdGhpbmdzLgoKaGFyZGFrZXIgMjQgT2N0IDk5IDA4OjI3OjI4CiAgICAtIChyZWFkX2NvbmZpZy5jKToKICAgICAgLSBwcmVtaWIgZGlyZWN0aXZlcyB3ZXJlbid0IGdldHRpbmcgcmVhZCBkdWUgdG8gYSBtaXNzaW5nIG5lZ2F0aW9uICghKS4KICAgICAgLSBtb3JlIHBhcnNpbmcgZGVidWdnaW5nIHN0YXRlbWVudHMgYWRkZWQuCgptc2xpZmNhayAyNSBPY3QgOTkgMDg6MDY6MzIKICAgIG1pbm9yIHJld29yayB0byBjbGFyaWZ5IHNpZ25lZCBjb21wYXJlcyBhbmQgcmVtb3ZlIHVudXNlZCB2YXJpYWJsZXMuCgpuYmEgMjUgT2N0IDk5IDEzOjM5OjI3CiAgICAtIGludGVyZmFjZXMuYzogZml4IGEgbWVtb3J5IGxlYWsgaW4gdGhlIExpbnV4IHBhcnQKCm5iYSAyNSBPY3QgOTkgMTM6NDE6MDEKICAgIC0gY29uZmlndXJlLmluLCBwcm9jLmM6IHN1cHBvcnQgZm9yIEZyZWVCU0QgMi4xIHdoZXJlIHBzIGRvZXNuJ3QgaGF2ZSBjIGZsYWcKCm5iYSAyNSBPY3QgOTkgMTM6NTE6MjIKICAgIC0gaHJfc3lzdGVtLmM6IHBsYXkgaXQgc2FmZSB3aGVuIG5vIHV0bXAgZmlsZSBleGlzdHMKCm5iYSAyNSBPY3QgOTkgMTM6NTM6MjYKICAgIC0gc25tcHRyYXBkLmMsIHNubXB0cmFwZF9oYW5kbGVycy5jOiBzdXBwb3J0IGZvciB0cmFwaGFuZGxlIERFRkFVTFQKCm5iYSAyNSBPY3QgOTkgMTM6NTY6MjYKICAgIC0gUlVOVEVTVFMsIFRFU1RDT05GLnNoIGV2YWxfb25lc2NyaXB0LnNoIGV2YWxfdG9vbHMuc2g6IHN1cHBvcnQgbm9uLWJhc2gKICAgIAlzaGVsbHMgKGVjaG8gLW4gdnMgZWNobyBcXGMpLiBEb24ndCByZXF1aXJlIC4gaW4gUEFUSAoKbmJhIDI1IE9jdCA5OSAxMzo1ODowMwogICAgLSBzbm1wdHJhbnNsYXRlLmM6IGxldCAnOicgaW4gT0lEIGRvICJ0aGUgcmlnaHQgdGhpbmciCgpuYmEgMjUgT2N0IDk5IDEzOjU5OjA1CiAgICAtIHBhc3MuYzogZG8gYW4gaHRvbmwgd2hlbiBwYXNzaW5nIGlwIGFkZHJlc3MKCm5iYSAyNSBPY3QgOTkgMTQ6MDc6MTEKICAgIC0gc25tcGRlbHRhLmM6IENPVU5URVI2NCB3aWxsIGRlcmVmZXJlbmNlIGZyZWVkIHBvaW50ZXIKCm5iYSAyNSBPY3QgOTkgMTQ6MDg6MjUKICAgIC0gc25tcGQuY29uZi41LmRlZjogbWlub3IgcXVpcmsKCm5iYSAyNSBPY3QgOTkgMTQ6MTM6NTcKICAgIC0gKjogY29uZmlndXJlIHN1cHBvcnQgZm9yIGRtYWxsb2MgbWFsbG9jIGRlYnVnZ2VyICh3d3cuZG1hbGxvYy5jb20pCgpoYXJkYWtlciAyNSBPY3QgOTkgMTQ6MzU6NTEKICAgIC0gKHNubXB0cmFuc2xhdGUuYyk6IGVuYWJsZSAtcCBwcmludGluZyBvZiBvbmx5IGEgc2VjdGlvbiBvZiB0aGUgbWliIHRyZWUuCgpoYXJkYWtlciAyNSBPY3QgOTkgMTY6MDU6MDMKICAgIC0gKHNubXB0cmFuc2xhdGUuYywgcGFyc2UuYyk6IGhhY2sgdG8gZG8gd2lsZCBjYXJkIHNlYXJjaGVzIGZvciBhIG1pYiBub2RlLgoKbXNsaWZjYWsgMjYgT2N0IDk5IDEwOjM0OjQwCiAgICBBbGxvdyB1bnNpZ25lZCByYW5nZSBmb3IgY291bnRlci9nYXVnZS90aW1ldGlja3MgKGZpeCBCVUcjODQgcGVyIFNhbmRlciBTdGVmZmFubikuCgpoYXJkYWtlciAyNyBPY3QgOTkgMTQ6MzM6MzMKICAgIC0gKE1ha2VmaWxlLmluKTogZml4IHVwIHVjZC1zbm1wLWNvbmZpZy5oIGJ1aWxkaW5nLgoKaGFyZGFrZXIgMjcgT2N0IDk5IDE0OjM0OjEwCiAgICAtIChzbm1wX2FnZW50LmgpOiBwcm90b3R5cGUgYWdlbnRfY2hlY2tfYW5kX3Byb2Nlc3MoKS4KCmhhcmRha2VyIDI3IE9jdCA5OSAxNDozNDo1NQogICAgLSAoTWFrZWZpbGUuaW4sIHVjZC1zbm1wLWFnZW50LWluY2x1ZGVzLmgpOiBhZGRlZCBhIGhlYWRlciBmaWxlIHRvCiAgICAgIHdyYXAgYXJvdW5kIHRoZSB2YXJpb3VzIGFnZW50IGluY2x1ZGUgZmlsZXMuCgpoYXJkYWtlciAyNyBPY3QgOTkgMTQ6MzU6MjcKICAgIC0gKG1hc3Rlcl9hZG1pbi5jKTogc2ltcGxlIGRlYnVnZ2luZyBzbyB5b3UgY2FuIHdhdGNoIHN0dWZmIHJlZ2lzdGVyLgoKaGFyZGFrZXIgMjcgT2N0IDk5IDE0OjM2OjIxCiAgICAtIChNYWtlZmlsZS5pbiwgZGVmYXVsdF9zdG9yZS4zLCBkZWZhdWx0X3N0b3JlLjMuYm90LAogICAgICBkZWZhdWx0X3N0b3JlLjMuaCwgZGVmYXVsdF9zdG9yZS4zLnRvcCwgc25tcF9hZ2VudF9hcGkuMyk6CiAgICAgIC0gbmV3IG1hbnVhbCBwYWdlczogZGVmYXVsdF9zdG9yZS4zLCBzbm1wX2FnZW50X2FwaS4zLgoKaGFyZGFrZXIgMjcgT2N0IDk5IDE0OjM2OjU1CiAgICAtIChkZWZhdWx0X3N0b3JlLmgpOgogICAgICAtIG1hcmsgcmVnaW9ucyB0byBiZSBpbmNsdWRlZCBpbiB0aGUgZGVmYXVsdF9zdG9yZS4zIG1hbnVhbCBwYWdlLgoKaGFyZGFrZXIgMjcgT2N0IDk5IDE0OjM3OjQ5CiAgICAtIChsY2RfdGltZS5oKTogZGVmaW5lIGFuZCBjb21tZW50IExDRF9USU1FX1NZTkNfT1BUIGJldHRlci4KCmhhcmRha2VyIDI3IE9jdCA5OSAxNDozODowNgogICAgLSAodWNkLXNubXAtaW5jbHVkZXMuaCk6IGFkZCBkZWZhdWx0X3N0b3JlLmggYW5kIHNubXBfbG9nZ2luZy5oCgpoYXJkYWtlciAyNyBPY3QgOTkgMTc6MTI6MDEKICAgIC0gKHVjZC1zbm1wLWluY2x1ZGVzLmgpOiBhZGRlZCBtb3JlIGluY2x1ZGUgZmlsZXMuCgpoYXJkYWtlciAyNyBPY3QgOTkgMTc6MTI6NTkKICAgIC0gKG1pYi5jKTogYmFpbCBpZiB3ZSBjYW4ndCBmaW5kIGFuIGluZGV4IGluIHRoZSBtaWIgdHJlZSB0byB1c2UgZm9yCiAgICAgIGJyZWFraW5nIGFuIG9pZCBhcGFydC4KCmhhcmRha2VyIDI3IE9jdCA5OSAxNzozMDoyNQogICAgLSAodmFjbV92YXJzLmMpOiB3YXRjaCBmb3IgbnVsbCBjb21tdW5pdGllcyB3aGVuIHByaW50aW5nIGRlYnVnIHN0YXRlbWVudHMuCgptc2xpZmNhayAyOCBPY3QgOTkgMDQ6NTU6NTIKICAgIERhdmUncyBjb21tZW50IGFib3V0IHByZV9wYXJzZSBldGMuIHdhcyB0b28gZ29vZCB0byBsb3NlIGluIGUtbWFpbC4KCm1zbGlmY2FrIDI4IE9jdCA5OSAwNToyMzowNQogICAgdV9pbnQ4LzE2LzMyX3QgdHlwZXMgbm8gbG9uZ2VyIG5lZWRlZCBmb3IgV0lOMzIgYnVpbGRzLgoKbXNsaWZjYWsgMjggT2N0IDk5IDA1OjI1OjAyCiAgICBPb3BzISByZXN0b3JlIHZlcnNpb24gcjEuMTMxLgoKbXNsaWZjYWsgMjggT2N0IDk5IDA2OjQ5OjAzCiAgICByZXBocmFzZSBzdWJ0cmVlIG5vdCBmb3VuZCBjb2RlIGluIF9nZXRfc3ltYm9sLgoKaGFyZGFrZXIgMjggT2N0IDk5IDEzOjQ3OjU3CiAgICAtIChzbm1wdG9zcWwpOiBkZWJ1Z2dpbmcgYW5kIGVycm9yIGNoZWNraW5nLgoKaGFyZGFrZXIgMjkgT2N0IDk5IDA4OjU4OjE3CiAgICAtIChtaWIyYy5jb25mLCBtaWIyYy52YXJ0eXBlcy5jb25mKTogUGF0Y2ggZnJvbSBLZWl0aCBUdXNvbjoKICAgICAgLSBtaXNjIGZpeGVzLgoKaGFyZGFrZXIgMjkgT2N0IDk5IDA5OjI4OjExCiAgICAtIChGQVEpOiBhZGRlZCByZWZlcmVuY2UgdG8gYW4gYWJvdmUgcXVlc3Rpb24gZm9yIHBlcmwgaW5zdGFsbGF0aW9uLgoKaGFyZGFrZXIgMjkgT2N0IDk5IDA5OjI4OjQzCiAgICAtICh1Y2Qtc25tcC1hZ2VudC1pbmNsdWRlcy5oKTogYWRkZWQgdmFyX3N0cnVjdC5oIGFuZCBhZ2VudF9yZWFkX2NvbmZpZy5oCgpoYXJkYWtlciAyOSBPY3QgOTkgMDk6NTI6MTgKICAgIC0gKGRlZmF1bHRfc3RvcmUuaCwgbWliLmMpOiB0d28gbmV3IHByaW50aW5nIG9wdGlvbnM6CiAgICAgIC0gcHJpbnROdW1lcmljT2lkcwogICAgICAtIHByaW50TnVtZXJpY0VudW1zCgpoYXJkYWtlciAyOSBPY3QgOTkgMTA6MDY6MDMKICAgIC0gKGRzX2FnZW50LmgsIHNubXBfYWdlbnQuYywgc25tcGQuYywgc25tcF9wYXJzZV9hcmdzLmMpOgogICAgICAtIHNubXAgb3ZlciBUQ1Agb3B0aW9uczogLVQgVENQLgogICAgICAtIG5ldyBxdWljayBwcmludCBvcHRpb25zOiAtcW8gLXFlIGZvciBudW1lcmljIG9pZHMgYW5kIGVudW1zLgoKaGFyZGFrZXIgMjkgT2N0IDk5IDEwOjEzOjQ0CiAgICAtIChzbm1wY21kLjEpOiBkb2N1bWVudCAtVCBhbmQgLXFbb2VdCgpoYXJkYWtlciAyOSBPY3QgOTkgMTA6MTU6MDEKICAgIC0oZGVmYXVsdF9zdG9yZS4zeywuaH0pOiByZW1vdmVkIGZyb20gQ1ZTIHNpbmNlIHRoZXkgYXJlIGJ1aWx0CgpoYXJkYWtlciAyOSBPY3QgOTkgMTA6MTU6NDMKICAgIC0gKC5jdnNpZ25vcmUpOiBpZ25vcmUgZGVmYXVsdF9zdG9yZS4zeywuaH0KCmhhcmRha2VyIDI5IE9jdCA5OSAxNjo1ODowNwogICAgLSAodGttaWIpOiBtYWtlIGl0IGRvIHNubXB2My4gIEFkZGVkIG1hbnkgdGhpbmdzIHRvIHRoZSBvcHRpb25zIG1lbnUuCgptYXJ6IDI5IE9jdCA5OSAxOTo1NDoxMAogICAgIChhcHBzL3NubXBfcGFyc2VfYXJncy5jLCBzbm1wbGliL3NubXB2My5jKTogbWFrZSBlbmdpbmVJRCBzZXR1cCBjb25kaXRpb25hbCBvbiBhcHAgdHlwZSB0byBwcmV2ZW50IGFwcHMgZnJvbSBlYXNpbHkgZW5kaW5nIHVwIHdpdGggdGhlIHNhbWUgZW5naW5lSUQgYXMgYWdlbnQgb24gc2FtZSBob3N0CgpoYXJkYWtlciAgMSBOb3YgOTkgMTM6MTg6MDAKICAgIC0gKHNubXBfcGFyc2VfYXJncy5jLCBkZWZhdWx0X3N0b3JlLmgsIG1pYi5jLCBzbm1wX2FsYXJtLmMpOgogICAgICAtIGRvbid0IGJyZWFrIG9pZHMgaW50byBwaWVjZXMgaWYgcXVpY2tfcHJpbnQgaXMgdHVybmVkIG9uLgogICAgICAtIGRpdHRvIGlmIHRoZSBuZXcgZGVmYXVsdF9zdG9yZSBvcHRpb24gaXMgdHVybmVkIG9uLgogICAgICAtIG1hZGUgYSBkZWZhdWx0X3N0b3JlIG9wdGlvbiB0byBub3QgdXNlIHNpZ2Fscm0gZm9yIHNubXBfYWxhcm1zLgoKaGFyZGFrZXIgIDIgTm92IDk5IDA5OjU3OjMxCiAgICAtIChNYWtlZmlsZS5pbik6IGluc3RhbGwgb3RoZXIgaGVhZGVyIGZpbGVzIG5lZWRlZCBieSBTTk1QLnBtLgoKbXNsaWZjYWsgIDIgTm92IDk5IDE1OjM3OjA1CiAgICBVc2UgSEFWRV9TVERBUkdfSCB3aGVuIGRlY2lkaW5nIHRvIHVzZSB2YXJhcmdzIHZzIEFOU0ktQyBwcm90b3R5cGVzLgoKbXNsaWZjYWsgIDIgTm92IDk5IDE1OjQ2OjA4CiAgICBJbnN0YWxsIHNubXBfYWdlbnRfYXBpLjMKCm1zbGlmY2FrICAzIE5vdiA5OSAwNjoxMTowMwogICAgZGVjbGFyZSBmaW5kX2Jlc3RfdHJlZV9ub2RlIGZvciBNU1ZDIGJ1aWxkLgoKbXNsaWZjYWsgIDMgTm92IDk5IDA2OjQ5OjMwCiAgICBOZWFyIGxpbmUgNjYzIDogY2xvc2UoZmQpIGJlZm9yZSBpbnZva2luZyB3YWl0X29uX2V4ZWMKCm1zbGlmY2FrICAzIE5vdiA5OSAxMzoxODo1OQogICAgRm9sbG93aW5nIGNhbGwgdG8gZmRvcGVuIChuZWFyIGdldF9leGVjX291dHB1dCksIGRvIG5vdCBjbG9zZShmZCkuCgptc2xpZmNhayAgMyBOb3YgOTkgMTM6MjA6MTYKICAgIEZpeCBidWlsZCBwcm9ibGVtIG9uIExpbnV4IFJlZEhhdCA2LjAgOiBrZXkgb2ZmIEdOVV9MSUJSQVJZIHZhbHVlLgoKbXNsaWZjYWsgIDQgTm92IDk5IDAyOjQyOjE1CiAgICBQYXRjaCB0byBidWlsZCBCU0QvT1MgNC4wLjE7IGZyb20gQmVydCBEcmllaHVpcyAtLSBkcmllaHVpc0BwbGF5YmVpbmcub3JnCgptc2xpZmNhayAgNCBOb3YgOTkgMDQ6MTQ6MjgKICAgIE1vcmUgU1REQ19IRUFERVJTIGNsZWFudXA6IHVzZSBIQVZFX1NUUklOR19ILCBIQVZFX1NURExJQl9IIGluc3RlYWQuCgptc2xpZmNhayAgNCBOb3YgOTkgMDQ6MzM6MzIKICAgIENoYW5nZSBleGFtcGxlIGF3YXkgZnJvbSBTVERDX0hFQURFUlMuCgptc2xpZmNhayAgNCBOb3YgOTkgMDU6MDg6MzEKICAgIEV2ZXJ5ICNkZWZpbmUgaXMgZ2l2ZW4gYSB2YWx1ZTsgc2V0IHRvIDEgaWYgbm8gdmFsdWUgd2FzIHNwZWNpZmllZC4KCm1zbGlmY2FrICA0IE5vdiA5OSAwNToxMzowNQogICAgRmlyc3QgcGFzcyBzdXBwb3J0IGZvciBGcmVlQlNEIDQuMCBbcHJvYmxlbXMgd2l0aCBwcm9jIHRhYmxlIGxvb2t1cHNdLgoKbXNsaWZjYWsgIDQgTm92IDk5IDA2OjExOjQ4CiAgICBVc2Ugc3lzY3RsKENUTF9WTS4uKSB0byBnZXQgdmlydHVhbCBtZW1vcnkgc3RhdHMuCgpoYXJkYWtlciAgNCBOb3YgOTkgMTA6MDM6NDcKICAgIC0gKE1ha2VmaWxlLmluLCBhY2NvbmZpZy5oLCBjb25maWcuaC5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuaW4sIG1pYi5jKToKICAgICAgLSBkZWZpbmUgSU5fVUNEX1NOTVBfU09VUkNFIGluIGNvbmZpZy5oIGJ1dCBub3QgaW4gdWNkLXNubXAtY29uZmlnLmguCiAgICAgIC0gbW92ZSB1Y2Qtc25tcC1jb25maWcuaCB1cCBpbiB0aGUgYnVpbGQgb3JkZXIgYmVmb3JlIHN1YmRpcnMuCiAgICAgIC0gTWFrZSBkZWZhdWx0IE1JQkRJUlMgc2VhcmNoIHBhdGggaW5jbHVkZSAkSE9NRS8uc25tcC9taWJzLgogICAgICAtIE1ha2UgTUlCRElSUyBwYXJzaW5nIGhhbmRsZSAkSE9NRSB2YXJpYWJsZXMgaW4gaXQuCgpoYXJkYWtlciAgNCBOb3YgOTkgMTA6MDQ6NDIKICAgIC0gKG1pYjJjLmNvbmYpOiBpbmNsdWRlIGhlYWRlcnMgZm9yIGNvbXBpbGF0aW9uIGZvciBib3RoIGludGVybmFsIGFuZAogICAgICBleHRlcm5hbCB0byB0aGUgdWNkLXNubXAgc291cmNlLgoKbXNsaWZjYWsgIDQgTm92IDk5IDEwOjE5OjM1CiAgICBSZWRvIEZyZWVCU0QgNC4wOiBkZWZpbmUgZnJlZWJzZDMgaW4gcy9mcmVlYnNkNC5oOyByZWR1Y2UgImRlZmluZSIgdGhyYXNoaW5nLgoKaGFyZGFrZXIgIDQgTm92IDk5IDEwOjI4OjQ0CiAgICAtIChzbm1wX3BhcnNlX2FyZ3MuYywgc25tcGNtZC4xKTogbW92ZSAtcSBmbGFncyB0byAtTy4KCm1zbGlmY2FrICA0IE5vdiA5OSAxMzo0Mzo0MAogICAgU3BlZWQgdXAgc3ByaW50X3ZhcmlhYmxlOiBoYWx2ZSB0aGUgbnVtYmVyIG9mIGNhbGxzIHRvIGdldF9zeW1ib2wuCgptc2xpZmNhayAgNSBOb3YgOTkgMDY6MjI6NTIKICAgIFNheSBnb29kYnllIHRvIFNOTVBfTUFMTE9DLCBtYWxsb2NfemVybywgeGNhbGxvYywgeG1hbGxvYywgYW5kIHhzdHJkdXAuCiAgICBSZXNwZWN0aXZlbHkgcmVwbGFjZWQgd2l0aCBjYWxsb2MsIGNhbGxvYywgY2FsbG9jLCBtYWxsb2MsIGFuZCBzdHJkdXAuCgpuYmEgIDkgTm92IDk5IDAxOjUwOjA5CiAgICAtIG1pYi5jLHBhcnNlLmM6IG1ha2UgZXJyb3IgcmVwb3J0aW5nIGluIHBhcnNlciB3b3JrIGFjY29yZGluZyB0byBzcGVjICgtUGUpCiAgICAJc2hvdyBkZWZpbmluZyBtb2R1bGVzIGluIHNubXB0cmFuc2xhdGUgLWQKICAgIAl1c2UgZHNfdG9nZ2xlX2Jvb2xlYW4KCm5iYSAgOSBOb3YgOTkgMTI6NTk6NTIKICAgIC0gc25tcHRyYXBkLmMsc25tcHRyYXBkX2hhbmRsZXJzLmM6IG1ha2UgaXQgY29tcGlsZSB3aXRoIFZDKysgNS4wCiAgICAJKGJ1dCBubyBoYW5kbGVycyAoeWV0KSkKCmhhcmRha2VyICA5IE5vdiA5OSAxMzowMjoxNwogICAgLSAoc25tcGQuYyk6IGZpeCAtSC4KCmhhcmRha2VyICA5IE5vdiA5OSAxMzowMjo0MQogICAgLSAodWNkX3NubXAuaCk6IHJlcXVpcmUgdGhlIERFTU8tTUlCIChqdXN0IGZvciB0dXRvcmlhbCBwdXJwb3NlcykuCgpoYXJkYWtlciAgOSBOb3YgOTkgMTM6MDk6MjEKICAgIC0gKHZhY21fdmFycy5jLCB2YWNtX3ZhcnMuaCk6IHNpbXBsZSBuZXcgLmNvbmYgdG9rZW5zOiByb2NvbW11bml0eSwgcndjb21taXR5LgoKaGFyZGFrZXIgIDkgTm92IDk5IDEzOjA5OjQwCiAgICAtIChNYWtlZmlsZS5pbik6IGluc3RhbGwgdGhlIERFTU8tTUlCLgoKbmJhICA5IE5vdiA5OSAxNToxNjowMwogICAgLSB2YXJpb3VzOiBhZGFwdCB0b29scyB0byB1c2UgZ2V0b3B0IChhbmQgcHV0IG9uZSBpbiBmb3IgV2luMzIpCgpuYmEgIDkgTm92IDk5IDIyOjIwOjUyCiAgICAuIHNubXBfcGFyc2VfYXJncy5jOiBhIGdsaXRjaCBpbiB0aGUgY29udmVyc2lvbiB0byBnZXRvcHQgKHRoYW5rcyB0bwogICAgCWRyaWVodWlzQHBsYXliZWluZy5vcmcpCgpuYmEgIDkgTm92IDk5IDIzOjMwOjAzCiAgICAtIGdldG9wdC5oOiBhcmd1bWVudHMgdG8gZ2V0b3B0IGRpZCBub3QgbWF0Y2ggdGhvc2UgaW4gZ2V0b3B0LmMKCm5iYSAxMCBOb3YgOTkgMDg6MzA6MTMKICAgIC0gd2luMzIvKjogZml4ZXMgdG8gdGhlIFZDKysgYnVpbGQgcHJvamVjdHMKCm5iYSAxMCBOb3YgOTkgMDg6MzI6MDAKICAgIC0gd2luMzIvKjogVkMrKyBwcm9qZWN0IHVwZGF0ZXMKCmRhdmVzIDEwIE5vdiA5OSAwODo1NzowMAogICAgLSAoYWdlbnQvYWdlbnRfcmVhZF9jb25maWcuYyk6IE9ubHkgc2V0IHVwIHRyYXAgc2lua3Mgb24gdGhlIG1hc3RlciBhZ2VudAoKZGF2ZXMgMTAgTm92IDk5IDA4OjU4OjM4CiAgICAtIChhZ2VudC9hZ2VudF90cmFwLltjaF0pOiBtaW5vciByZS1zdHJ1Y3R1cmUgdG8gYWxsb3cgc3ViYWdlbnQgdHJhcCAic2lua3MiCgpkYXZlcyAxMCBOb3YgOTkgMDg6NTk6NDUKICAgIC0gKGFnZW50eC9zdWJhZ2VudC5jKTogRml4IEFnZW50WCBub3RpZnkgc3VwcG9ydAoKbmJhIDEwIE5vdiA5OSAxMjoyMDo0NwogICAgLSB3aW4zMi8qLmRzcDogeWV0IGFub3RoZXIgcm91bmQgb2YgbWFraW5nIHRoaXMgY3JhcCB3b3JrCgpuYmEgMTAgTm92IDk5IDE1OjI5OjE4CiAgICAtIGFwcHMvKjogY2hhbmdlcyBmb3IgZ2V0b3B0IHVzYWdlLCBhbmQgcmV3b3JraW5nIG9mIHNubXBfcGFyc2VfYXJncwoKbmJhIDEwIE5vdiA5OSAyMjoxMjowOAogICAgLSB3aW4zMi8qOiBjbGVhbiB1cCByZXBvc2l0b3J5IGZpbGVzLCBhbmQgYWRkIHByb3BlciAuY3ZzaWdub3JlIGZpbGVzCgpkYXZlcyAxMSBOb3YgOTkgMDM6Mzc6NTkKICAgIC0gKGFnZW50eC9jbGllbnQuYyk6IFNpbGx5IHR5cG8gaW4gc3RhcnQgdGltZSBzeW5jaHJvbmlzYXRpb24KCm5iYSAxMSBOb3YgOTkgMjI6MTQ6MjcKICAgIC0gc25tcGNtZC4xOiB1cGRhdGUgbWFuIHBhZ2UgdG8gY29ycmVzcG9uZCB0byB0aGUgbmV3IGdldG9wdCBzaXR1YXRpb24KICAgIAlOb3RlOiBldmVuIHRob3VnaCBzb21lIG9wdGlvbnMgaGF2ZSBiZWVuIHJlbW92ZWQgZnJvbSB0aGlzCiAgICAJcGFnZSwgdGhleSBzdGlsbCB3b3JrIQoKbmJhIDExIE5vdiA5OSAyMjo1MDowMAogICAgLSBzbm1wX3BhcnNlX2FyZ3MuYywgbWliLmM6IGFsaWdubWVudCBvZiBvcHRpb24gY29kZS4KICAgIAlTb21lIGVuaGFuY2VtZW50cyB0byB0aGUgc25tcHRyYW5zbGF0ZSAtZCBvdXRwdXQuCgpkYXZlcyAxMiBOb3YgOTkgMDg6NDY6MzMKICAgIC0gKHNubXBsaWIvc25tcF9hcGkuYyk6IFByb3ZpZGUgYSB1bmlxdWUgSUQgZm9yIGFsbCBpbmNvbWluZyBQRFVzCgptYXJ6IDEyIE5vdiA5OSAxMzowMTowOAogICAgIChsY2RfdGltZS5bY2hdLCBzbm1wdXNtLmMpOiBmaXggZW5naW5ldGltZSB1cGRhdGUgYWxnb3JpdGhtIHRvIGNvbmZvcm0gdG8gc3BlYyByZmMyNTc0IDMuMi43LmIuMQoKbmJhIDE0IE5vdiA5OSAwMTo0ODo1MQogICAgLSBzbm1wdGFibGUsIHNubXBfcGFyc2VfYXJnczogYWxsb3cgdGhlIGFwcGxpY2F0aW9uIHNwZWNpZmljIG9wdGlvbnMgdG8KCm5iYSAxNCBOb3YgOTkgMDE6NTE6NTcKICAgIC0gc25tcHRhYmxlOiBhZGQgaW4gdGhlIGFwcGxpY2F0aW9uIHNwZWNpZmljIHNubXB0YWJsZSBvcHRpb25zIGJldHdlZW4KICAgIAl0aGUgbm9ybWFsIG9wdGlvbnMuCgpuYmEgMTQgTm92IDk5IDAxOjUzOjE2CiAgICAtIHNubXBidWxrZ2V0OiBuZXcgdG9vbCB0byBpc3N1ZSBhIHNpbmdsZSBHRVRCVUxLIHJlcXVlc3QKCm5iYSAxNCBOb3YgOTkgMDE6NTQ6MTcKICAgIC0gc25tcF9wYXJzZV9hcmdzOiBjaGFuZ2VzIHRvIHN1cHBvcnQgbXVsdGktdmFsdWVkIG9wdGlvbnMKCm5iYSAxNCBOb3YgOTkgMDE6NTk6MjAKICAgIC0gbWlicy8qLCB2YWNtX3ZhcnMuaDogdXBkYXRlIHRoZSBtaWIgZmlsZXMgdG8gcmZjIDI1NzEtMjU3NS4gQWxzbyBhZGQKICAgIAlTTk1QX0NPTU1VTklUWV9NSUIgZnJvbSB0aGUgY29leCBkcmFmdC4KCm5iYSAxNCBOb3YgOTkgMDI6MDA6MDAKICAgIC0gdmFjbV92YXJzLmM6IGtpbGwgYSB3YXJuaW5nCgpuYmEgMTQgTm92IDk5IDAyOjAxOjM3CiAgICAtIHBhc3MuYywgc25tcGQuY29uZi41LmRlZjogYWRkIGFuIFVOU0lHTkVEIHJldHVybiB0eXBlCgpuYmEgMTQgTm92IDk5IDAyOjA0OjQ2CiAgICAtIG1pYi5jLCBzbm1wdHJhbnNsYXRlLmM6IG1vdmUgdGhlIE1JQjppZCBoYW5kbGluZyBpbnNpZGUgcmVhZF9vYmppZCBmb3IKICAgIAljb25zaXN0ZW5jeS4gQWxzbyBmaXhlcyBhIGJ1ZmZlciBvdmVycnVuIGluIG1pYi5jCgpuYmEgMTQgTm92IDk5IDAyOjQyOjM4CiAgICAtIFNOTVB2Mi1DT05GLnR4dDogY29tbWVudCBvdXQgdGhlIElNUE9SVCBjbGF1c2UKCm5iYSAxNCBOb3YgOTkgMDY6MTI6MDMKICAgIC0gc25tcHRyYXBkLmM6IGFkZCB0aGUgbmV3IGNvbW1vbiAtTyBvcHRpb24gc2V0CgpuYmEgMTQgTm92IDk5IDA2OjE1OjAxCiAgICAtIHNubXB0cmFwZC44OiBhZGQgdGhlIG5ldyBjb21tb24gLU8gb3B0aW9uIHNldAoKbmJhIDE0IE5vdiA5OSAwNjozMjoyNQogICAgLSBpcGM2OiBBZGQgdGhlIElQdjYgY29kZSBmcm9tIHRoZSBLYW1lIHByb2plY3QuIEkgaGF2ZSBvbmx5IG1hc3NhZ2VkCiAgICAJaXQgc28gbXVjaCBhcyB0byBzdGlsbCBjb21waWxlIG9uIG5vbi1JUHY2IHN5c3RlbXMsIGFuZCBkZXRlY3QKICAgIAlMaW51eCwgSU5SSUEsIFNvbGFyaXMgSVB2Ni4gTm8gY29kZSBmb3IgdGhlbSB5ZXQuIE9yaWdpbmFsCiAgICAJYXV0aG9yOiBpdG9qdW5AaWlqbGFiLm5ldAoKZGF2ZXMgMTUgTm92IDk5IDA3OjU2OjA2CiAgICAtIChhZ2VudC9zbm1wX3ZhcnMuYyk6IEZpeCBoYW5kbGluZyBvZiBmYWlsZWQgR0VUL1NFVCByZXF1ZXN0cwoKbXNsaWZjYWsgMTUgTm92IDk5IDA4OjI5OjA2CiAgICBGaXggZGVzY3JpcHRpb24gb2YgcmVhZF9vYmppZCByZXR1cm4gdmFsdWUuCgpuYmEgMTUgTm92IDk5IDE0OjAwOjIwCiAgICAtIHNubXBfcGFyc2VfYXJncy5jOiBmdXJ0aGVyIGVycm9yIGNoZWNraW5nLCBjb3VydGVzeSBtc2xpZmNhawogICAgICBzbm1wYnVsa2dldC5jOiBuZWVkcyAjaW5jbHVkZSA8Z2V0b3B0Lmg+IChUaGFua3MgdG8gUm9iZXJ0IFN0b3J5KQoKbmJhIDE1IE5vdiA5OSAxNDowMzozNgogICAgLSBtaWJzLzogcmVwbGFjZSBSRkMxMjcxLU1JTi50eHQgd2l0aCBSTU9OLU1JQi50eHQgKFJGQyAxNzU3IHZlcnNpb24pCgpuYmEgMTUgTm92IDk5IDE0OjA1OjU3CiAgICAtIHBhcnNlLmM6IGZpeCBhIHNwZWxsaW5nIGVycm9yIGluIHRoZSBNSUIgcmVwbGFjZW1lbnQgdGFibGUuCgpuYmEgMTUgTm92IDk5IDE0OjA5OjI5CiAgICAtIC5jdnNpZ25vcmU6IHVwZGF0ZXMgdG8ga2VlcCBjdnMgc2lsZW50IGFib3V0IGdlbmVyYXRlZCBmaWxlcy4KCmhhcmRha2VyIDE1IE5vdiA5OSAxNToxODo0NgogICAgLSAoRkFRLCBSRUFETUUpOiBuZXcgbWlycm9yIGluIEF1c3RyYWxpYS4KCmhhcmRha2VyIDE1IE5vdiA5OSAxNToxOToyMgogICAgLSAobWliX21vZHVsZXMuYywgc25tcF92YXJzLmMpOiBtb3ZlIHN1YmFnZW50X3ByZV9pbml0KCkgdG8gaW5pdF9hZ2VudCgpLgoKaGFyZGFrZXIgMTUgTm92IDk5IDE1OjE5OjQ3CiAgICAtIChUT0RPKTogbWVtb3J5IGludCAtPiB1aW50LgoKaGFyZGFrZXIgMTUgTm92IDk5IDE1OjIwOjEwCiAgICAtIChoZWFkZXJfY29tcGxleC5jKTogc2V0IHRvICdcMCcgaW5zdGVhZCBvZiBOVUxMIGZvciAtV2FsbC4KCmhhcmRha2VyIDE1IE5vdiA5OSAxNToyMTowNwogICAgLSAobWliMmMsIHRrbWliKTogcmVtb3ZlIC13LgoKaGFyZGFrZXIgMTUgTm92IDk5IDE1OjIxOjI4CiAgICAtIChzbm1wX2FnZW50X2FwaS4zKTogZG9uJ3QgY2FsbCBzdWJhZ2VudF9wcmVfaW5pdCgpLgoKaGFyZGFrZXIgMTUgTm92IDk5IDE1OjIxOjU3CiAgICAtIChtaWIyYy5zdG9yYWdlLmNvbmYpOiBkZWJ1Z2dpbmcgc3RhdGVtZW50cyBpbnNlcnRlZC4KCmhhcmRha2VyIDE1IE5vdiA5OSAxNToyMjoyNAogICAgLSAoYXNuMS5jLCBhc24xLmgpOiBuZXcgZnVuY3Rpb246IGFzbl9jaGVja19wYWNrZXQoKS4KCmhhcmRha2VyIDE1IE5vdiA5OSAxNTozNjoyNgogICAgLSAoc25tcGRlbHRhLmMsIHNubXB0YWJsZS5jLCBzbm1wdGVzdC5jLCBzbm1wdHJhbnNsYXRlLmMsIHNubXB0cmFwZC5jKToKICAgICAgLSBhZGQgZGVmYXVsdF9zdG9yZS5oCgpoYXJkYWtlciAxNSBOb3YgOTkgMTU6Mzg6MjUKICAgIC0gKGRlZmF1bHRfc3RvcmUuaCwgbWliLmMpOiBtb3ZlIG1vcmUgb3B0aW9ucyB0byB0aGUgZHNfKiByb3V0aW5lcy4KCmhhcmRha2VyIDE1IE5vdiA5OSAxNTo0MTozOAogICAgLSAoc25tcF9hcGkuYywgc25tcF9hcGkuaCk6CiAgICAgIC0gbW92ZSBtb3JlIG9wdGlvbnMgdG8gdGhlIGRzXyogcm91dGluZXMuCiAgICAgIC0gaW1wbGVtZW50IHN1cHBvcnQgZm9yIFRDUCBicm9rZW4gU05NUCBwYWNrZXRzIGJ5IHN0b3JpbmcgYnVmZmVycwogICAgICAgIGFuZCBkZWFsaW5nIHdpdGggcGllY2VzIG9mIGluY29taW5nIGRhdGEgdGlsbCB3ZSBoYXZlIGEgZnVsbCBwYWNrZXQuCgptc2xpZmNhayAxNSBOb3YgOTkgMTY6NDM6MjUKICAgIERvbid0IGFkZCBOVUxMIHZhcmJpbmQgd2hlbiBFTkRPRk1JQlZJRVcgaXMgcmVhY2hlZC4KCmhhcmRha2VyIDE1IE5vdiA5OSAxNzo0MToxMAogICAgLSAoc25tcF9hZ2VudC5jLCBtYXN0ZXIuYywgcHJvdG9jb2wuYywgcHJvdG9jb2wuaCwgc3ViYWdlbnQuYywKICAgICAgc25tcF9hcGkuYywgc25tcF9hcGkuaCk6CiAgICAgIC0gbWFrZSBUQ1Agc3VwcG9ydCBiZXR0ZXIgZm9yIGFnZW50eC4gIFN0aWxsIGhhcyBhIHByb2JsZW0gKEkgYnJva2UgYWdlbnR4KS4KCm1zbGlmY2FrIDE1IE5vdiA5OSAyMTo1NzozNgogICAgRml4IGJ1ZyM3NTogYnVpbGQgLS13aXRob3V0LW9wYXF1ZS10eXBlcwoKbXNsaWZjYWsgMTYgTm92IDk5IDAzOjM2OjA5CiAgICBGaXggc3BlbGxpbmcgbWlzdGVhay4KCm5iYSAxNiBOb3YgOTkgMDY6MjE6MjUKICAgIC0gc25tcF9wYXJzZV9hcmdzLmMsIHNubXB0cmFuc2xhdGUuYywgbWliLmM6IHJlZG8gdGhlIHNubXB0cmFuc2xhdGUgb3B0aW9ucwogICAgCXRvIGZvbGxvdyB0aGUgY29tbW9uIG9wdGlvbiBzZXQuIElzc3VlIHdhcm5pbmdzIHdoZW4gc29tZW9uZQogICAgCXVzZXMgdGhlIG9sZCBmb3JtLCBhZHZpc2luZyBhYm91dCB0aGUgbmV3LgoKbXNsaWZjYWsgMTYgTm92IDk5IDA4OjQ4OjMxCiAgICBFbWJyYWNlIGFsbCBIUC05MDAwLzZ4eCw3eHgsIDh4eCBzZXJpZXMgcGxhdGZvcm1zLCB3aXRob3V0IHJlZ3JldHMuCgpkYXZlcyAxNiBOb3YgOTkgMDk6MTM6NTkKICAgIC0gKHNubXBsaWIvYXNuMS5jKTogRml4IGVuY29kaW5nIG9mIHJvb3QgT0lEcy4KCmhhcmRha2VyIDE2IE5vdiA5OSAxMDoyNDo1OQogICAgLSAocHJvdG9jb2wuYyk6IGFkZCB0aGUgaGVhZGVyIGxlbmd0aCB0byB0aGUgcGFja2V0IGxlbmd0aCBlc3RpbWF0ZS4KCmhhcmRha2VyIDE2IE5vdiA5OSAxMDoyNjowMgogICAgLSAoc25tcF9wYXJzZV9hcmdzLmMpOiBhZGQgdGhlIFQ6IGZsYWcgZm9yIC1UIHRvIGdldG9wdAoKbXNsaWZjYWsgMTYgTm92IDk5IDE0OjQxOjUwCiAgICBNU1ZDIHRvdWNodXBzOgogICAgQWRkZWQgc25tcHRyYXBkIHByb2plY3QgLkRTUCBmaWxlOyBBbGwgLkRTW1BXXSBmaWxlcyBDUi1MRiBsaW5lIHRlcm1pbmF0ZWQ7CiAgICBGaXggd2FybmluZ3MgaW4gYXNuMS5jIGFuZCBzbm1wX2FwaS5jOyBSZW1vdmUgdW51c2VkIHZhciBpbiBzbm1wdHJhbnNsYXRlLmMuCgptc2xpZmNhayAxNiBOb3YgOTkgMTQ6NTY6NTkKICAgIEJ1aWxkIHdpdGggZ2V0b3B0LgoKbXNsaWZjYWsgMTcgTm92IDk5IDA1OjU5OjE1CiAgICBSZXBsYWNlIHVfaW50MTZfdCB3aXRoIG1vcmUgdW5pdmVyc2FsbHkgc3VwcG9ydGVkIHVfc2hvcnQuCgptc2xpZmNhayAxNyBOb3YgOTkgMDc6MzU6MDMKICAgIFByb2plY3QgZmlsZSBmb3IgYnVpbGRpbmcgc25tcGJ1bGtnZXQgdXNpbmcgTVNWQysrIGdyYXRpcyBSb2JlcnQgU3RvcnkuCgptc2xpZmNhayAxNyBOb3YgOTkgMDc6MzY6NTgKICAgIEFkZCBzbm1wYnVsa2dldCB0byBsaXN0IG9mIGFwcHMgdG8gYnVpbGQuCgpoYXJkYWtlciAxNyBOb3YgOTkgMTE6NTU6NDEKICAgIC0gKGRzX2FnZW50LmgsIGtlcm5lbC5jLCBzbm1wZC5jLCBzbm1wZC4xLmRlZik6CiAgICAgIC0gcnVuIHRpbWUgcm9vdGxlc3MgcnVubmluZyBzdXBwb3J0IGZvciBzbm1wZCwgYnkgcmVxZXN0IG9mIEpvZS4gKC1yKQoKaGFyZGFrZXIgMTcgTm92IDk5IDEyOjIxOjI2CiAgICAtIChzbm1wdG9zcWwpOgogICAgICAtIG1vdmUgdG8gTmV0OjpTTVRQLgogICAgICAtIE1ha2UgbmV3IGF1dGhncm91cCBhbmQgYXV0aGhvc3QgdGFibGVzIHRvIGNvbnRhaW4gU05NUDo6U2Vzc2lvbiBkZWZhdWx0cy4KCmhhcmRha2VyIDE3IE5vdiA5OSAxMzowNTowMAogICAgLSAoY29uZmlndXJlLmluKTogdXBkYXRlIHRoZSBzbyBMRCBmb3IgbGludXggdG8gJChDQykuCgpoYXJkYWtlciAxNyBOb3YgOTkgMTM6MDg6MTcKICAgIC0gKGNvbmZpZ3VyZSk6IHVwZGF0ZS4KCmhhcmRha2VyIDE3IE5vdiA5OSAxMzowOToxNAogICAgLSAobWliMmMuc3RvcmFnZS5jb25mKTogdXBkYXRlLiAgRGVhbHMgd2l0aCBSb3dTdGF0dXMgb2JqZWN0cyBiZXR0ZXIuCgpuYmEgMTcgTm92IDk5IDIxOjUxOjE5CiAgICAtIGRlZmF1bHRfc3RvcmUuYzogZHNfdG9nZ2xlX2Jvb2xlYW4gbWlzc2VkIGEgbWFzawoKbXNsaWZjYWsgMTggTm92IDk5IDE3OjU4OjQ3CiAgICBDaGVjay1pbiBhZ2VudCBjaGFuZ2VzIHRvIHN1cHBvcnQgV2luMzIgYWdlbnQgYnVpbHQgd2l0aCBNU1ZDKysuCiAgICBUaGFua3MgdG8gUm9iZXJ0IFN0b3J5LgoKbXNsaWZjYWsgMTggTm92IDk5IDE4OjE0OjU4CiAgICBNb3JlIHRvdWNodXAgcGVyIE1TVkMrKyBXaW4zMiBhZ2VudCB3b3JrLgoKbXNsaWZjYWsgMTggTm92IDk5IDE4OjIwOjQ1CiAgICBNb3JlIE1TVkMrKyBXaW4zMiBhZ2VudCBmaWxlcywgZ3JhdGlzIFJvYmVydCBTdG9yeS4KCmRhdmVzIDE5IE5vdiA5OSAxMTowNjoyNgogICAgLSAoYWdlbnQvYWdlbnRfcmVnaXN0cnkuaCk6IFByb3ZpZGUgbWlzc2luZyBpbmRleCBhbGxvY2F0aW9uIGRlZmluZXMuCgpoYXJkYWtlciAxOSBOb3YgOTkgMTM6NDc6MDEKICAgIC0gKG1pYjJjLnN0b3JhZ2UuY29uZik6IGZpeCBtaWIyYy5zdG9yYWdlLmNvbmYuCgpoYXJkYWtlciAxOSBOb3YgOTkgMTQ6MjA6MjUKICAgIC0gKHNubXBfdmFycy5jLCBzbm1wZC5jLCBzbm1wX2FsYXJtLmgsIHNubXBfYXBpLmMpOgogICAgICAtIG1ha2Ugc25tcF9zZWxlY3RfaW5mbyBwb3NzaWJseSBoYW5kbGUgYWxhcm0gdGltZXJzLgogICAgICAtIG1ha2Ugc25tcGQgdXNlIHRoZW0gYW5kIGNhbGwgc25tcF9ydW5fYWxhcm1zKCkuCgpoYXJkYWtlciAxOSBOb3YgOTkgMTU6MjQ6MTUKICAgIC0gKGFjY29uZmlnLmgsIGNvbmZpZy5oLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgc2Vkc2NyaXB0LmluLAogICAgICBkaXNrLmMsIGRpc2suaCwgVUNELVNOTVAtTUlCLnR4dCk6IFBhdGNoIGZyb20gQW5keSBIT09EOgogICAgICAtIG1vbml0b3IgZGlzayBpbm9kZSBwZXJjZW50YWdlcy4KCm5iYSAyMiBOb3YgOTkgMDU6Mjc6MTUKICAgIC0gY29uZmlndXJlLmluOiBjb25maWd1cmUgdGVzdCBmb3IgbmV0aW5ldC9pcC5oCgpuYmEgMjIgTm92IDk5IDA1OjI4OjA5CiAgICAgc25tcF9sb2dnaW5nLmM6IG9ubHkgdGltZXN0YW1wIGVmdGVyIGEgbmV3bGluZQoKbmJhIDIyIE5vdiA5OSAwNToyODo0NQogICAgLSBzbm1wZC5jOiByZWluc3RhdGUgc25tcGQgLWEgZnVuY3Rpb25hbGl0eQoKbmJhIDIyIE5vdiA5OSAwNToyOTozNwogICAgLSBwYXNzLmM6IHJlbW92ZSBhIGNvbnN0IGNhc3Rpbmcgd2FybmluZwoKbmJhIDIyIE5vdiA5OSAwNTozMjowNQogICAgLSBJUFY2LVRDUC1NSUIsIElQVjYtVURQLU1JQiwgaXB2Ni5jLCB0Y3AuYzogbW92ZSB0aGUgSVB2NiB0Y3AgYW5kIHVkcAogICAgCXRhYmxlcyB0byB0aGVpciBwcm9wZXIgcG9zaXRpb24gaW4gdGhlIHRyZWUsIGFjY29yZGluZyB0byB0aGUgUkZDLgoKbmJhIDIyIE5vdiA5OSAwNjo1OTo0NgogICAgLSBpcHY2LmM6IHVwZ3JhZGUgdG8gdGhlIGN1cnJlbnQgS2FtZSBwYXRjaAoKbmJhIDIyIE5vdiA5OSAwNzoxNjo1OQogICAgLSBpcHY2LmM6IHNvbWUgbW9yZSBBTlNJIHByb3RvdHlwZXMKCmRhdmVzIDIyIE5vdiA5OSAwNzozMDowNgogICAgLSAoYWdlbnRfcmVnaXN0cnkuW2NoXSBhZ2VudHgvY2xpZW50LltjaF0gYWdlbnR4L21hc3Rlcl9hZG1pbi5jKToKICAgICAgSW5kZXggZGUtYWxsb2NhdGlvbiwgYW5kIEFnZW50WCBpbmRleCBzdXBwb3J0LgoKbXNsaWZjYWsgMjIgTm92IDk5IDA4OjIwOjI5CiAgICBSZXRyeSBhZGQgTVNWQysrIHByb2plY3QgZmlsZS4KCm1zbGlmY2FrIDIyIE5vdiA5OSAwODoyMTo1OAogICAgQWRkIENWUyBpZ25vcmUgbGlzdCBmb3Igd2luMzIvbGliYWdlbnQuCgpoYXJkYWtlciAyMiBOb3YgOTkgMDg6Mjk6MzMKICAgIC0gKHNubXB0YWJsZS5jKTogUGF0Y2ggZnJvbSBSb2JlcnQgU3Rvcnk6CiAgICAgIC0gQWRkZWQgYWJpbGl0eSB0byB1c2UgTUlCIHRvIHF1ZXJ5IHRhYmxlcyB3aXRoIG5vbi1zZXF1ZW50aWFsIGNvbHVtbiBPSURzLgogICAgICAtIEFkZGVkIGNvZGUgdG8gaGFuZGxlIHNwYXJzZSB0YWJsZXMuCgpoYXJkYWtlciAyMiBOb3YgOTkgMDk6MDA6NDUKICAgIC0gKHVzbVVzZXIuYyk6IGZpeCBvaWQgLT4gY2hhciBjb252ZXJzaW9ucyBwb2ludGVkIG91dCBieSBNaWNoYWVsIFNsaWZjYWsuCgpoYXJkYWtlciAyMiBOb3YgOTkgMDk6MDc6MzQKICAgIC0gKFJFQURNRSk6IGFkZGVkIG1vcmUgcGVvcGxlIHRvIHRoZSB0aGFua3MgbGlzdC4KCmhhcmRha2VyIDIyIE5vdiA5OSAwOToxODoxNQogICAgLSAoY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGhvc3RfcmVzLmgsIGhyX2ZpbGVzeXMuYywgaHJfc3RvcmFnZS5jLAogICAgICBocl9zd3J1bi5jLCBocl9zeXN0ZW0uYywgYnNkaTQuaCk6IFBhdGNoIGZyb20gQmVydCBEcmllaHVpczoKICAgICAgLSBic2RpIHN1cHBvcnQgZm9yIHRoZSBob3N0IHJlc291cmNlcyBtaWIuCgpoYXJkYWtlciAyMiBOb3YgOTkgMDk6MjQ6NTEKICAgIC0gKFQwMTZzbm1wdjJjZ2V0ZmFpbCwgVDAxN3NubXB2MmN0b3YxZ2V0ZmFpbCk6IHVwZGF0ZSB0ZXN0cyBmb3IgbmV3CiAgICAgIGVycm9yIG1lc3NhZ2VzLgoKaGFyZGFrZXIgMjIgTm92IDk5IDEyOjMwOjA1CiAgICAtICh2bXN0YXQuYywgdm1zdGF0X2ZyZWVic2QyLmMpOiB1c2UgaGVhZGVyX2dlbmVyaWMgbm90IGhlYWRlcl9zaW1wbGVfdGFibGUKCmhhcmRha2VyIDIyIE5vdiA5OSAxMjo0OToyMQogICAgLSAodmFjbV92YXJzLmMsIHBhc3MuYyk6IGZpeCBvaWQgLT4gY2hhciBjb252ZXJzaW9ucy4KCm5iYSAyMiBOb3YgOTkgMTI6NTQ6MDgKICAgIC0gKjogY2hhbmdlIHRoZSBmaXJzdCBhcmd1bWVudCBvZiB0aGUgY29uZmlnIHBhcnNlciBmdW5jdGlvbnMgdG8gYQogICAgCWNvbnN0IHN0cmluZwoKaGFyZGFrZXIgMjIgTm92IDk5IDEzOjA1OjA1CiAgICAtIChhY2NvbmZpZy5oLCBjb25maWcuaC5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuaW4sIHRjcC5jKTogUGF0Y2gKICAgICAgZnJvbSBHYXJyZXR0IFdvbGxtYW46CiAgICAgIC0gRnJlZUJTRCA0LnggZml4ZXMuCgpoYXJkYWtlciAyMiBOb3YgOTkgMTY6NDg6NTQKICAgIC0gKHNubXBfdmFycy5jKTogcmVtb3ZlIGNyZWF0aW9uIG9mIGluaXRpYWwgYW5kIHRlbXBsYXRlKiB1c2Vycy4KCmhhcmRha2VyIDIyIE5vdiA5OSAxNjo1MDoyNQogICAgLSAodmFjbV92YXJzLmMsIHVzbVVzZXIuYyk6IG5ldyBjb25maWcgdG9rZW5zIGFsbG93aW5nIGVhc3kgdXNlciBhbmQKICAgICAgdmFjbS91c2VyIGNvbmZpZ3VyYXRpb24gYW5kIHNldHVwLgoKaGFyZGFrZXIgMjIgTm92IDk5IDE3OjAyOjExCiAgICAtIChzY2FwaS5jKTogZml4IGxlbmd0aCBjaGVjayBvZiBrZXkgc3BhY2UuCgpoYXJkYWtlciAyMiBOb3YgOTkgMTc6NTI6MzYKICAgIC0gKFJFQURNRS5zbm1wdjMpOiB1cGRhdGUgdG8gcmVmbGVjdCBuZXcgYW5kIGVhc2llciAuY29uZiBtZWNoYW5pc21zLgoKbmJhIDIzIE5vdiA5OSAwMToyMzoxNgogICAgLSBpcHY2Lmg6IHJlbW92ZSBhbiBfX1AgdGhhdCBoYWQgc25lYWtlZCBpbgoKbmJhIDIzIE5vdiA5OSAwMToyNDozNwogICAgLSBJUFNFQy1NSUIudHh0OiBjaGFuZ2Ugc29tZSB1bmRlcmxpbmVzIGludG8gZGFzaGVzLCBhbmQgcmVwYWlyIHRoZQogICAgCTo6PSAobWF5YmUgSSBzaG91bGQgaGF2ZSBsb29rZWQgYXQgdGhpcyBmaWxlIGJlZm9yZSBhZGRpbmcgaXQgOi0pKQoKbmJhIDIzIE5vdiA5OSAwMToyNjoyNgogICAgLSBwYXNzX3BlcnNpc3QuYzogZml4IHNvbWUgYXJndW1lbnRzIChpbnQgPT4gc2l6ZV90KS4gVGhhbmtzIHRvCiAgICAJQW50aG9ueSBTaGlwbWFuIDxhc2hpcG1hbkBlcmdncm91cC5jb20+CgpkYXZlcyAyMyBOb3YgOTkgMDE6Mzc6MjkKICAgIC0gKGhvc3QvaHJfc3dydW4uYyk6IEZpeCBsaW51eCBwcm9jZXNzIG1lbW9yeSB1c2FnZSBmaWd1cmVzLgogICAgCShSZXBvcnRlZCBieSBNaXRjaCBTaGllbGRzKQoKZGF2ZXMgMjMgTm92IDk5IDAyOjExOjQzCiAgICAtIChob3N0L2hyX3N0b3JhZ2UuYyBob3N0L2hyX3N3cnVuLmMpOiBHdWFyZCBhZ2FpbnN0IGNhbGN1bGF0aW9uIG92ZXJmbG93CgpuYmEgMjMgTm92IDk5IDAyOjIwOjEzCiAgICAtIHNubXBfYWdlbnQuYzogI2luY2x1ZGUgPHVuaXN0ZC5oPiBmb3Igc2VsZWN0IHByb3RvdHlwZQoKZGF2ZXMgMjMgTm92IDk5IDA1OjIxOjU4CiAgICAtIChzbm1wX2FnZW50LmMgYWdlbnR4L3N1YmFnZW50LmMpOgogICAgICAgTWFrZSBtYWluIHNlc3Npb24gc3RydWN0dXJlIHZpc2libGUgdGhyb3VnaG91dCB0aGUgYWdlbnQsCiAgICAgICBhbmQgdXNlIHRoaXMgZm9yIEFnZW50WCBzdWJhZ2VudCBhcyB3ZWxsLgoKZGF2ZXMgMjMgTm92IDk5IDA1OjQwOjA5CiAgICAtIChhZ2VudF9yZWdpc3RyeS5bY2hdKToKICAgICAgLSBNYWtlIGluZGV4IHJlZ2lzdHJhdGlvbiBBUEkgbW9yZSBpbW1lZGlhdGVseSBjb252ZW5pZW50CiAgICAgIC0gQXNzb2NpYXRlIHN1Y2ggcmVnaXN0cmF0aW9ucyB3aXRoIHRoZSBtYWluIHNlc3Npb24KICAgICAgLSBuZXcgcm91dGluZSB0byB1bnJlZ2lzdGVyIGFsbCBpbmRleGVzIGZvciBhIGdpdmVuIHNlc3Npb24KICAgICAgLSBkaWZmZXJlbnRpYXRlIGJldHdlZW4gQU5ZIGluZGV4IGFuZCBORVcgaW5kZXgKICAgICAgLSBjbGVhbiB1cCBhc3NvcnRlZCBjb21waWxlciB3YXJuaW5ncwoKaGFyZGFrZXIgMjMgTm92IDk5IDE3OjUxOjQ0CiAgICAtIChzbm1wdG9zcWwpOiBmaXggZnJvbSBhZGRyZXNzIGxpbmUsIG90aGVyIG1pc2MgZml4ZXMuCgpkYXZlcyAyNCBOb3YgOTkgMDk6MDM6MDAKICAgIC0gKGFnZW50eC9tYXN0ZXJfYWRtaW4uYyk6IFJlbGVhc2UgYWxsb2NhdGVkIGluZGV4ZXMgb24gc3ViYWdlbnQgc2h1dGRvd24uCgpoYXJkYWtlciAyNCBOb3YgOTkgMDk6MDk6MDgKICAgIC0gKGFjY29uZmlnLmgsIGNvbmZpZy5oLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgdXNtVXNlci5jLAogICAgICBrZXl0b29scy5jLCBrZXl0b29scy5oLCBsY2RfdGltZS5jLCBzY2FwaS5oLCB0b29scy5jLAogICAgICBrZXltYW5hZ2V0ZXN0LmMsIHNjYXBpdGVzdC5jLCBjb25maWcuaCk6CiAgICAgIC0gZm9yY2UgLS1lbmFibGUtZGV2ZWxvcGVyIGZvciBDVlMgY2hlY2tvdXRzLgogICAgICAtIHJlbW92ZSBhbGwgcmVmZXJlbmNlcyB0byBLTVQuCgpoYXJkYWtlciAyNCBOb3YgOTkgMDk6MTY6MDIKICAgIC0gKElOU1RBTEwpOiBjaGFuZ2UgZWRpdGluZyBvZiBjb25maWcuaCBub3RlLgoKaGFyZGFrZXIgMjQgTm92IDk5IDEwOjQzOjA4CiAgICAtICh2YWNtX3ZhcnMuYyk6IFBhdGNoIGZyb20gRnJhbmsgU3RyYXVzczoKICAgICAgLSBhbGxvdyBzZXBlcmF0aW9uIG9mIG1hc2sgd2l0aCBib3RoIC4gYW5kIDouCgptc2xpZmNhayAyNCBOb3YgOTkgMTE6MDc6MDUKICAgIEZpeCBCVUcjNTcgdXNpbmcgbW9kaWZpZWQgcGF0Y2ggc3VwcGxpZWQgYnkgemFueUB0cmlxLm5ldC4KCm1zbGlmY2FrIDI0IE5vdiA5OSAxMTowNzo0OQogICAgRml4IEJVRyM1NyB1c2luZyAyLzMgb2YgcGF0Y2ggc3VwcGxpZWQgYnkgemFueUB0cmlxLm5ldC4KCm5iYSAyNSBOb3YgOTkgMTQ6MzI6NDcKICAgIC0gc25tcF9hcGkuYywgYWdlbnRfdHJhcC5jLCBzbm1wX2FnZW50LmMsIHNubXBfbWliLmgsIHNubXBfbWliLmM6CiAgICAJZml4IG1pc2FsaWdubWVudCBvZiBzdGF0aXN0aWNzIGNvdW50ZXJzCgpuYmEgMjUgTm92IDk5IDE0OjMzOjE1CiAgICAtIHNubXBfbWliLmg6IGZpeCBtaXNhbGlnbm1lbnQgb2Ygc3RhdGlzdGljcyBjb3VudGVycwoKbmJhIDI1IE5vdiA5OSAxNDo1Mjo1NwogICAgLSB1c21Vc2VyLmM6IG5ldyB1c2VyIGlzIG5vdCBhZGRlZCB1bmxlc3MgYm90aCBhdXRoIGFuZCBwcml2IGlzIHNwZWNpZmllZAogICAgCW9uIGNyZWF0ZVVzZXIgZGlyZWN0aXZlCgpuYmEgMjUgTm92IDk5IDE0OjU2OjEyCiAgICAtIGRlZmF1bHRzX3N0b3JlLmgsIHNubXBfYXBpLmMsIHNubXBfcGFyc2VfYXJncy5jOiBhZGQgZGVmQ29tbXVuaXR5CiAgICAJZGlyZWN0aXZlCiAgICAtIHNubXBfYXBpLmgsIHNubXBfYXBpLmM6IGFkZCBlcnJvcmNvZGUgZm9yIG1hbGxvYyBmYWlsdXJlCgpuYmEgMjUgTm92IDk5IDE0OjU3OjU3CiAgICAtIG1pYi5jOiBraWxsIHlldCBhbm90aGVyIHNpbGx5IHdhcm5pbmcgZnJvbSBnY2MKCm5iYSAyNiBOb3YgOTkgMTE6MTg6MjMKICAgIC0gZGVmYXVsdF9zdG9yZS5jOiBhbHRob3VnaCByZWFkX2NvbmZpZyBpcyBjYXNlIGluc2Vuc2l0aXZlLCBkc19oYW5kbGVfY29uZmlnCiAgICAJd2FzIG5vdC4gQXQgdGhlIHNhbWUgdGltZSBpdCBmYWlsZWQgdG8gcmVwb3J0IHRoZSBwcm9ibGVtIHRoYXQKICAgIAlpdCB3YXMgY2FsbGVkIGJ1dCBkaWRuJ3Qga25vdyB3aGF0IHRvIGRvLgoKbWFyeiAyNyBOb3YgOTkgMDY6MzE6MTEKICAgICAoYWdlbnQva2VybmVsLmMsIHRlc3RpbmcvZXZhbF90b29scy5zaCk6IGZpeCAtciBzd2l0Y2ggdG8gc3VwcmVzcyBlcnJvciBtZXNzYWdlcyBhYm91dCBmYWlsZWQga2VybmVsIGFuZCBhZGQgLXIgdG8gZGVmYXVsdCB0ZXN0aW5nIGNvZGUgc28gJ21ha2UgdGVzdCBjYW4gYmUgcnVuIGJ5IHVzZXIKCmhhcmRha2VyIDI3IE5vdiA5OSAwOToxODoxNQogICAgLSAodmFjbV92YXJzLmMpOiByZWRvIHJ3dXNlci9yb3VzZXIgdG8gYWxsb3cgc3BlY2lmaWNhdGlvbiBvZiBhdXRoIHR5cGUuCgptc2xpZmNhayAyOSBOb3YgOTkgMDU6NTA6MjcKICAgIE1vcmUgSFAtVVggYUNDIGZpeGVzIHN1cHBsaWVkIGJ5IE1hcmtrdSBMYXVra2FuZW4uCgptc2xpZmNhayAyOSBOb3YgOTkgMTA6MzA6NTEKICAgIFVzZSBudG9ocyBtYWNybyB0byBjYXJlZnVsbHkgb2J0YWluIHRoZSBkZWZhdWx0IHNlcnZpY2UgcG9ydC4KCm1zbGlmY2FrIDI5IE5vdiA5OSAxMDozMzo0NQogICAgRml4IHJlZmVyZW5jZSB0byBzbm1wbGliLgoKbXNsaWZjYWsgMjkgTm92IDk5IDEwOjM2OjQzCiAgICBSZW1vdmUgbGFzdCB2ZXN0aWdlcyBvZiBERUJVR19NQUxMT0NfSU5DIGZyYWdtZW50cy4KCm1zbGlmY2FrIDI5IE5vdiA5OSAxMTo1ODozNwogICAgRnJlZSBTVFJFQU0gcGFja2V0IGJ1ZmZlciB3aGVuIHNlc3Npb24gaXMgY2xvc2VkOwogICAgVGVzdCBmb3IgY2xvc2UgaW4gcHJvZ3Jlc3MgZm9yIHJlYWQsIHdyaXRlLCBzZWxlY3QsIGFuZCB0aW1lb3V0IGZ1bmN0aW9ucy4KCm1zbGlmY2FrIDI5IE5vdiA5OSAxMjo0MzozNAogICAgVXNlIHNpemVfdCBmb3IgbmFtZV9sZW4gbWVtYmVyLgoKaGFyZGFrZXIgMjkgTm92IDk5IDE0OjAyOjA4CiAgICAtIChzeXN0ZW0uYywgc3lzdGVtLmgpOiBpbXBsZW1lbnQgc3RyY2FzZXN0ciAoZnJvbSBNaWNoYWVsIFNsaWZjYWspLgoKaGFyZGFrZXIgMjkgTm92IDk5IDE0OjAyOjUwCiAgICAtIChwYXJzZS5jKTogbWFrZSBiZXN0IG1hdGNoaW5nICgtYikgdXNlIHJlZ2V4IHdoZW4gYXZhaWxhYmxlLgoKaGFyZGFrZXIgMjkgTm92IDk5IDE0OjAzOjQ5CiAgICAtIChjb25maWcuaC5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuaW4pOgogICAgICAtIGNoZWNrIGZvciByZWdleC5oLCByZWdjb21wLCBzdHJjYXNlc3RyLgoKaGFyZGFrZXIgMjkgTm92IDk5IDE0OjA0OjA5CiAgICAtIChSRUFETUUpOiBhbm90aGVyIG5hbWUuCgpuYmEgMzAgTm92IDk5IDAzOjAxOjM0CiAgICAtIHNubXBfYXBpLmgsIHNubXBfbWliLltjaF06IEEgY291cGxlIGFkZGl0aW9uYWwgU05NUCBzdGF0aXN0aWNzIHBvaW50cwoKZGF2ZXMgMzAgTm92IDk5IDA3OjA3OjAxCiAgICAtIChhZ2VudHgvbWFzdGVyLmMpOiBSZW1vdmUgcmVkdW5kZW50IHJvdXRpbmUuCgpkYXZlcyAzMCBOb3YgOTkgMDc6MDg6NDMKICAgIC0gKGFnZW50eC9tYXN0ZXJfcmVxdWVzdC5jKTogRml4IGhhbmRsaW5nIG9mIG11bHRpLXZhcmlhYmxlIHJlcXVlc3RzIHRvIHN1YmFnZW50cy4KCm1zbGlmY2FrIDMwIE5vdiA5OSAxMzoxMDo0MAogICAgRml4IC1UZCB1c2FnZSBkZXNjcmlwdGlvbjsgdXNlIHN3aXRjaCB3aGVuIGN1cnJlbnRfbmFtZSBpcyBOVUxMLgoKbXNsaWZjYWsgMzAgTm92IDk5IDEzOjExOjE0CiAgICBJbmNsdWRlIGN0eXBlLmgKCmhhcmRha2VyIDMwIE5vdiA5OSAxNDozMDozMgogICAgLSAoc25tcF9wYXJzZV9hcmdzLmMsIG1pYi5jLCBtaWIuaCwgcGFyc2UuYyk6IGltcGxlbWVudCByZWdleCBtYXRjaGluZwogICAgICBldmVyeXdoZXJlLgoKbXNsaWZjYWsgMzAgTm92IDk5IDE0OjQ3OjM2CiAgICBVc2UgV2VzJyBjb29sIG5ldyBnZXRfd2lsZF9ub2RlIG1hdGNoIG1ldGhvZC4KCm1zbGlmY2FrIDMwIE5vdiA5OSAxNjo1MDo0MQogICAgQWRkIG11bHRpcGxlIG1hdGNoIGNhcGFiaWxpdHkgdG8gZmluZF9iZXN0X3RyZWVfbm9kZSwgYW5kIHVzZSBpdCBpbgogICAgc25tcHRyYW5zbGF0ZSAobmV3IC1CIG9wdGlvbikuCgptc2xpZmNhayAgMSBEZWMgOTkgMDY6NDA6MDcKICAgIEVycm9yIGNoZWNrIGFuZCBmcmVlIHJlc291cmNlcyBkdXJpbmcgcmVnZXggcHJvY2Vzc2luZy4KCm1zbGlmY2FrICAxIERlYyA5OSAxMDozODoxOAogICAgUHJldmVudCBvdmVyZmxvdyBvZiBvYmplY3QgSUQgaW4gZ2V0X21vZHVsZV9ub2RlLgogICAgSW4gZmluZF9iZXN0X3RyZWVfbm9kZSwgdHJlYXQgcmVzdWx0IGZyb20gcmVjdXJzZWQgY2FsbCBzYW1lIGZvciBtYXRjaCA9IDAuCgptc2xpZmNhayAgMSBEZWMgOTkgMTU6NTU6NTYKICAgIEZpeCBidWcgIzExMiBhbmQgZmluaXNoIHBhdGNoIHN1cHBsaWVkIGJ5IEFudGhvbnkgU2hpcG1hbi4KCm1zbGlmY2FrICAxIERlYyA5OSAxNjozMjoxNAogICAgVXNlIFNOTVBfTUFYQlVGIHdoZW4gZGVmaW5pbmcgbGFyZ2Ugc3RhdGljIGJ1ZmZlciBzdG9yYWdlLgoKbmJhICAyIERlYyA5OSAwNDo0MTo1NQogICAgLSBtaWIuYzogYWNjZXNzaW5nIGFuZCBmcmVlZWluZyBlbnZfdmFyIG1pc3BsYWNlcyBhcm91bmQgTlVMTCB0ZXN0CgpuYmEgIDIgRGVjIDk5IDA0OjQyOjU3CiAgICAtIHNubXB0cmFwZC5jOiBmaXggc25tcF9jbG9uZV9wZHUyIGJ5IHVzaW5nIHRoZSBzbm1wbGliIHZlcnNpb24KCm5iYSAgMiBEZWMgOTkgMDU6MDY6NTUKICAgIC0gdXNtVXNlci5jIHNubXB2My5bY2hdOiBtb3ZlIHVzbV9wYXJzZV9jcmVhdGVfdXNtVXNlciBmcm9tIHRoZSBhZ2VudAogICAgIAl0byB0aGUgbGlicmFyeSwgc28gdGhhdCBzbm1wdHJhcGQgY2FuIHVzZSBpdC4KCm1zbGlmY2FrICAyIERlYyA5OSAwOToyMTo0NQogICAgRml4IGJ1ZyAjODEgLSBjb250aW51ZSBpbnN0YWxsIGFmdGVyIGVycm9yIGNyZWF0aW5nIHBlcnNpc3RlbnQgZGlyZWN0b3J5LgoKaGFyZGFrZXIgIDIgRGVjIDk5IDE2OjU5OjU1CiAgICAtIChwYXJzZS5jKTogdHVybiBvbiBSRUdFWF9FWFRFTkRFRC4KCm5iYSAgMyBEZWMgOTkgMTU6MDM6NDgKICAgIC0gc25tcHRyYXBkLmM6IGNvcnJlY3QgaGFuZGxpbmcgb2YgU0lHSFVQIHRwIHJlY29uZmlndXJlLgoKbmJhICAzIERlYyA5OSAxNTowNDoxNgogICAgLSBzbm1wdHJhcGRfaGFuZGxlcnMuYzogYSBsaXR0bGUgbmljZXIgZXJyb3IgbWVzc2FnZQoKbmJhICAzIERlYyA5OSAxNTowNToxMwogICAgLSBwYXJzZS5jOiByZW1lbWJlciB0byBOVUxMIGEgZnJlZWQgcG9pbnRlcgoKaGFyZGFrZXIgIDMgRGVjIDk5IDE2OjUxOjQzCiAgICAtIChjb25maWd1cmUsIGNvbmZpZ3VyZS5pbik6IHN3aXRjaCB0byBQSUMgZnJvbSBwaWMuCgpoYXJkYWtlciAgMyBEZWMgOTkgMTY6NTI6MTYKICAgIC0gKE1ha2VmaWxlLmluKTogdXNlICQoTUFLRSkgaW5zdGVhZCBvZiBtYWtlLgoKaGFyZGFrZXIgIDMgRGVjIDk5IDE2OjUyOjUxCiAgICAtICh2bXN0YXQuYyk6IHJlbW92ZSBkdXBsaWNhdGUgbGltaXRzLmggaW5jbHVkZS4KCm5iYSAgNSBEZWMgOTkgMjE6NDk6NTAKICAgIC0gcGFzcy5jLCBwYXNzX3BlcnNpc3QuYzogZW5zdXJlIHByb3BlciBieXRlIG9yZGVyaW5nIHdoZW4gcGFzcydpbmcKICAgIAlpcGFkZHJlc3MuCgptc2xpZmNhayAgNiBEZWMgOTkgMDk6MTk6MDgKICAgIFNob3cgYWxsIG5vbi1wcmludGFibGUgc3ViaWRzIGluIGR1bXBfb2lkX3RvX3N0cmluZy4KICAgIFJlY3Vyc2UgY2xlYXJfdHJlZV9mbGFncyBvbmx5IGlmIG5lY2Vzc2FyeS4KCmhhcmRha2VyICA2IERlYyA5OSAxMzo0Nzo0MQogICAgLSAoc25tcF9wYXJzZV9hcmdzLmMpOiBkZWZhdWx0IHNwZWNpZmljYXRpb25zIGZvciBhdXRoL3ByaXYgdHlwZXMuCgpoYXJkYWtlciAgNiBEZWMgOTkgMTM6NTE6MzQKICAgIC0gKHNubXBfcGFyc2VfYXJncy5jKTogcHJpbnQgZXJyb3Igc3RyaW5ncyByZXR1cm5lZCBieSBnZW5lcmF0ZV9LdSgpLgoKbmJhICA2IERlYyA5OSAxNDozMjoyMgogICAgLSAuY3ZzaWdub3JlOiBNYWtlIENWUyBzaWxlbnQgYWJvdXQgaW5zdGFsbGF0aW9uIGZpbGVzCgpoYXJkYWtlciAgNiBEZWMgOTkgMTQ6NDg6MDgKICAgIC0gKHNubXB1c20uYyk6CiAgICAgIC0gbWFrZSBzbm1wdXNtIHVzYWJsZSBhZ2FpbiwgY2hhbmdpbmcgYXJndW1lbnRzIHNsaWdodGx5LgogICAgICAtIG1ha2UgaXQgYWxzbyB1c2UgZGVmYXVsdHMgZm9yIHBhc3NwaHJhc2VzLCB1c2VyLCBldGMuCgpoYXJkYWtlciAgNiBEZWMgOTkgMTQ6NTY6MjEKICAgIC0gKFN2M2NvbmZpZywgVDAzMHNubXB2M3VzZXJjcmVhdGlvbik6IG1ha2UgdjMgdGVzdGluZyB3b3JrIGFnYWluLgoKaGFyZGFrZXIgIDYgRGVjIDk5IDE0OjU4OjI4CiAgICAtIChzbm1wdXNtLmMpOiBmaXggdXNhZ2UgZm9yIG5ldyBhcmdzLgoKbXNsaWZjYWsgIDYgRGVjIDk5IDE1OjA5OjUzCiAgICBDb252ZXJ0IFVTTV9FUlIqIHRvIFNOTVBFUlJfVVNNKi4KCm5iYSAgNiBEZWMgOTkgMTU6MTM6MjEKICAgIC0gc3lzdGVtLmMsIGNvbmZpZy5oLCB3aW4zMi5kc3csICouZHNwLCBsaWJzbm1wLmRlZjogY2xlYW5pbmcgdXAgZm9yIFZDIGJ1aWxkcwoKbXNsaWZjYWsgIDYgRGVjIDk5IDE2OjMxOjI2CiAgICBNb3JlIGZ1biB1cGRhdGluZyBNUyBWQyBidWlsZCBvZiBhcHBzIGFuZCBsaWJyYXJ5LgoKbXNsaWZjYWsgIDcgRGVjIDk5IDA4OjAzOjA2CiAgICBVc2UgYXJndlswXSBzaW5jZSB0aGUgYXBwIHdvbnQgYmUgc25tcGdldG5leHQsIHByb2JhYmx5LgoKZGF2ZXMgIDcgRGVjIDk5IDA4OjI5OjU1CiAgICAtIChhZ2VudC9hZ2VudF9yZWFkX2NvbmZpZy5bY2hdIGFnZW50L3NubXBfdmFycy5bY2hdIGFnZW50L3NubXBkLltjaF0KICAgICAgIHNubXBsaWIvcmVhZF9jb25maWcuW2NoXSBzbm1wbGliL3NubXBfYXBpLmMpOgogICAgICAgLSAgVXNlIHRoZSBzYXZlZCBhcHBsaWNhdGlvbiBuYW1lIGZvciByZWdpc3RlcmluZyBjb25maWcgaGFuZGxlcnMKICAgIAkoTi5COiBUaGlzIGNoYW5nZSB3aWxsIG5lZWQgdG8gYmUgYXBwbGllZCB0byBNSUIgbW9kdWxlcyBhcyB3ZWxsKQoKaGFyZGFrZXIgIDcgRGVjIDk5IDA5OjE0OjMwCiAgICAtIChocl9vdGhlci5jKTogc2hvcnRlbiBjcHUgZGVzY3JpcHRpb24gbGVuZ3RoLgoKaGFyZGFrZXIgIDcgRGVjIDk5IDA5OjE3OjQxCiAgICAtIChzeXNPUlRhYmxlLmMpOiBtYWtlIHN5c09ySW5kZXggbm90LWFjY2Vzc2libGUsIGFzIGl0IHNob3VsZCBiZS4KCmhhcmRha2VyICA3IERlYyA5OSAwOTozMjowMgogICAgLSAoVUNELVNOTVAtTUlCLnR4dCk6IFBhdGNoIGZyb20gSnVlcmdlbiBTY2hvZW53YWVsZGVyOgogICAgICAtIGNvbnZlcnQgdG8gU01JdjIgYW5kIGNsZWFudXAuCgpoYXJkYWtlciAgNyBEZWMgOTkgMTM6NDU6NTkKICAgIC0gKHNubXB3YWxrLmMpOgogICAgICAtIE5ldyBhYmlsaXR5IHRvIHBlZm9ybSBhIGdldCBvbiB0aGUgcmVxdWVzdGVkIE9JRCB3aGVuIGVpdGhlciBubwogICAgICAgIHJlc3VsdHMgYXJlIHJldHVybmVkIG9yIHdoZW4gdGhlIHVzZXIgcmVxdWVzdHMgYW4gaW5jbHVzaXZlIG9wdGlvbi4KICAgICAgLSBOZXcgYWJpbGl0eSB0byBwcmludCBudW1iZXIgb2YgdmFyaWFibGVzIGZvdW5kIGF0IHRoZSBlbmQuCgpoYXJkYWtlciAgNyBEZWMgOTkgMTM6NTQ6MTEKICAgIC0gKHNubXB3YWxrLjEpOiBkb2N1bWVudCAtQ2kgYW5kIC1DcCAoYmFkbHkpLgoKbXNsaWZjYWsgIDcgRGVjIDk5IDE1OjIzOjQ0CiAgICBFbGltaW5hdGUgbXVsdGlwbHlpbmcgYnkgc2l6ZW9mKGNoYXIpIG9yIHNpemVvZih1bnNpZ25lZCBjaGFyKTsKICAgIGFnZW50eC9jbGllbnQuYyAtIHNubXBfZnJlZV92YXJiaW5kIHJlcGxhY2VzIGZyZWUgaW4gZm91ciBwbGFjZXM7CiAgICBzbm1wdjMvdXNtVXNlci5jIC0gdXNtX2ZyZWVfdXNlciByZXBsYWNlcyBmcmVlIGluIG9uZSBwbGFjZS4KCmhhcmRha2VyICA4IERlYyA5OSAwOToxOTowOAogICAgLSAobWliLmMpOiByZWdpc3RlciBhIGNvbmZpZyB0b2tlbiBmb3Igc3VmZml4IHByaW50aW5nLgoKaGFyZGFrZXIgIDggRGVjIDk5IDE0OjA4OjIwCiAgICAtIChVQ0QtU05NUC1NSUIudHh0KTogbWFrZSBtckluZGV4IElNUExJRUQgc2luY2UgaXQgaXMgaW4gdGhlIGNvZGUuCgpoYXJkYWtlciAgOCBEZWMgOTkgMTQ6NDE6NTMKICAgIC0gKG1pYi5jKTogZml4IC1PcyBhbmQgaW5kZXggYmFzZWQgb2lkIHByaW50aW5nIHRvIHdvcmsgYWdhaW4uCgptc2xpZmNhayAgOCBEZWMgOTkgMTU6MDE6MjAKICAgIEluY2x1ZGUgZ2V0b3B0LmggdG8gZGVmaW5lIG9wdGFyZy4KCm1zbGlmY2FrICA4IERlYyA5OSAxNTowNDo1NAogICAgQWRkIG1pc3NpbmcgZHNrUGVyY2VudE5vZGUgdG8gRHNrRW50cnkgKHRoYW5rcyB0bwogICAgICAgICAgICAgTWljaGFlbCBLaXJraGFtIDxzdXBwb3J0QGl3bC5jb20+KS4KCmhhcmRha2VyICA4IERlYyA5OSAxNToyMzowNwogICAgLSAobWliLmMsIHBhcnNlLmMsIHBhcnNlLmgpOgogICAgICAtIHJlbWVtYmVyZWQgSU1QTElFRCBpbmRleGVzLgogICAgICAtIHByb3Blcmx5IHByaW50IE9JRHMgd2l0aCBsZW5ndGggcHJlZml4ZXMgb24gcGFyc2VkIE9JRHMgc28KICAgICAgICBjdXR0aW5nL3Bhc3Rpbmcgb2YgdGhlbSB3b3Jrcy4KICAgICAgLSBwcm9wZXJseSBwcmludCBzdHJpbmdzIGFuZCBvaWRzIHRoYXQgYXJlIElNUExJRUQuCiAgICAgIC0gcHJpbnQgc3RyaW5ncyBpbiBlaXRoZXIgJyBvciAiIHF1b3RlcyBkZXBlbmRpbmcgb24gaWYgdGhlaXIgSU1QTElFRC4KCmhhcmRha2VyICA4IERlYyA5OSAxNToyNjo1MQogICAgLSAoUkVBRE1FKTogYWRkIEp1ZXJnZW4uCgpoYXJkYWtlciAgOCBEZWMgOTkgMTU6Mjg6NTQKICAgIC0gKCouLk1ha2VmaWxlLmluKTogbWFrZSBkZXBlbmQuCgpoYXJkYWtlciAgOCBEZWMgOTkgMTU6Mjk6NTIKICAgIC0gKHNubXBkLmMpOiBtb3ZlIHN5cy9wYXJhbSBvdXQgb2YgaWZkZWYgRkRfU0VULgoKaGFyZGFrZXIgIDggRGVjIDk5IDE1OjQ3OjAyCiAgICAtICgqLi5NYWtlZmlsZS5pbik6IEEgcmVhbCBtYWtlIGRlcGVuZCB3aXRoIG5vIHNzbCBkZXBlbmRhbmNpZXMsIGV0Yy4KCmhhcmRha2VyICA4IERlYyA5OSAxNTo0OTozMgogICAgLSAobWFrZWZpbGVpbmRlcGVuZC5wbCwgbWFrZW5vc3lzZGVwZW5kLnBsLCByZW1vdmUtZmlsZXMpOgogICAgICAtIG1vdmUgdGhlIG1ha2UgZGVwZW5kIHBlcmwgc2NyaXB0cyB0byB0aGUgdG9wIGxldmVsIHdoZXJlIHRoZXkgb25seQogICAgICAgIG5lZWQgdG8gYmUgZWRpdGVkIG9uY2UuCgpoYXJkYWtlciAgOCBEZWMgOTkgMTc6MTM6MTcKICAgIC0gKGFjY29uZmlnLmgsIGNvbmZpZy5oLmluLCBtYXN0ZXIuYywgcmVhZF9jb25maWcuYywgc3lzdGVtLmMsIHN5c3RlbS5oKToKICAgICAgLSBpbXBsZW1lbnQgbWtkaXJoaWVyKCkgYW5kIHVzZSBpdCBmb3IgcGVyc2lzdGVudCBzdG9yYWdlIGFuZCBhZ2VudHgKICAgICAgICBzb2NrZXQgZmlsZSBjcmVhdGlvbi4KCmRhdmVzICA5IERlYyA5OSAwNzozNDowMwogICAgLSAobWFuL3NubXBfdHJhcF9hcGkuMyk6IEluaXRpYWwgZG9jdW1lbnRhdGlvbiBmb3IgYWdlbnQgdHJhcCBnZW5lcmF0aW9uLgoKbmJhICA5IERlYyA5OSAwNzozNDowOAogICAgLSBtaWIuYzogaW1wbGVtZW50IE1JQjo6bGFiZWwKCm5iYSAgOSBEZWMgOTkgMDc6NDk6MzQKICAgIC0gc25tcGNtZC4xOiBzdXBwb3J0IE1JQjo6bGFiZWwKCm1zbGlmY2FrICA5IERlYyA5OSAwODoxNDo1OQogICAgUGF0Y2hlcyBzdXBwbGllZCBieSBKdWVyZ2VuIFNjaG9lbndhZWxkZXIuCgpoYXJkYWtlciAgOSBEZWMgOTkgMTA6MDg6MjYKICAgIC0gKE1ha2VmaWxlLnRvcCwgY29uZmlnLmguaW4sIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLAogICAgICBhZ2VudC9NYWtlZmlsZS5pbiwgc25tcGxpYi9NYWtlZmlsZS5pbik6CiAgICAgIC0gZml4ZWQgLS1lbmFibGUtc2hhcmVkIChhdCBsZWFzdCBvbiBsaW51eCkuCgpoYXJkYWtlciAgOSBEZWMgOTkgMTU6MjY6MjMKICAgIC0gKGtleXRvb2xzLmMpOiBQYXRjaCBmcm9tIExlb25hcmQgR29tZWxza3k6CiAgICAgIC0gZ2VuZXJhdGVfS3UoKSBzcGVlZCBpbXByb3ZlbWVudHMuCgpoYXJkYWtlciAgOSBEZWMgOTkgMTY6MTY6NDAKICAgIC0gKFVDRC1TTk1QLU1JQi50eHQpOiBjaGFuZ2VkIGFsbCBpbnN0YW5jZXMgb2Yga2IgdG8ga0IuCgpoYXJkYWtlciAgOSBEZWMgOTkgMTY6NTM6MTQKICAgIC0gKHNubXBuZXRzdGF0L01ha2VmaWxlLmluKTogZml4IGZvciAtLWVuYWJsZS1zaGFyZWQKCmhhcmRha2VyICA5IERlYyA5OSAxNzowOToyMwogICAgLSAoYWdlbnQvKk1ha2VmaWxlLmluKTogZml4IGZvciAtLWVuYWJsZS1zaGFyZWQgb24gaHB1eAoKbmJhIDEwIERlYyA5OSAwMzowNjoxOAogICAgLSBtYXN0ZXIuYzogYWRkIGEgbWlzc2luZyAjaW5jbHVkZSA8bmV0aW5ldC9pbi5oPiAoYXQgbGVhc3QgZm9yIFNvbGFyaXMpLgoKbmJhIDEwIERlYyA5OSAwMzowNzowNgogICAgLSBwYXNzLmM6IGZpeCBzb21lIGJ1Zi9idWYyIGNvbmZ1c2lvbgoKbmJhIDEwIERlYyA5OSAwMzowOTozMwogICAgLSBwYXNzX3BlcnNpc3QuYzogZml4IHNvbWUgYnVmL2J1ZjIgY29uZnVzaW9uCgpuYmEgMTAgRGVjIDk5IDAzOjEwOjMwCiAgICAtIHJlYWRfY29uZmlnLmM6IGFkZCBzb21lIG1pc3NpbmcgY29uc3Qgc3BlY2lmaWVycwoKbmJhIDEwIERlYyA5OSAwMzoyMDoxMAogICAgLSAodmFyaW91cyk6IGNoYW5nZXMgdG8gY29tcGlsZSBzbm1wZCB3aXRoIFZDKysgNS4wIChSZWxlYXNlIG1vZGUpCgptc2xpZmNhayAxMCBEZWMgOTkgMDc6Mjg6MzMKICAgIEZpeCB0byBidWlsZCBleGVjdXRhYmxlIGFnZW50IG9uIEhQLVVYLgoKbXNsaWZjYWsgMTAgRGVjIDk5IDEwOjIzOjM2CiAgICBBcHBseSBEYXZlJ3MgcGF0Y2ggdG8gZml4IG1heCB2YXJiaW5kcyB0ZXN0aW5nIG9uIEdFVEJVTEsuCgptYXJ6IDEwIERlYyA5OSAxMDo0NDoyOQogICAgIChzbm1saWIvc25tcF9hcGkuYyk6IGZpeCBidWcgaW4gX3Nlc3NfY29weSB3aGVyZSBwb2ludGVycyB0aGF0IHdlcmUgbm90IG93bmVkIGJ5IG5ld2x5IGNyZWF0ZWQgc2Vzc2lvbiBjb3VsZCBnZXQgbWlzdGFrZW5seSBmcmVlZCBpZiBlcnJvcnMgd2VyZSBlbmNvdW50ZXJlZCBkdXJpbmcgc2Vzc2lvbiBjb3B5IC0gYWxzbyBlbGltaW5hdGUgc29tZSByZWR1bmRhbnQgY29weWluZyBvZiBzZWN1cml0eXtBdXRofFByaXZ9S2V5IGRhdGEKCm1zbGlmY2FrIDEwIERlYyA5OSAxMzowMzo1OAogICAgRml4IEhQLVVYIHByb2JsZW0gd2l0aCBpcERlZmF1bHRUVEwuCgpkYXZlcyAxMyBEZWMgOTkgMDM6MTc6NDEKICAgIC0gKGFnZW50X3JlZ2lzdHJ5LmMpOiBIYW5kbGUgZGVsZWdhdGVkIE1JQiByZWdpb25zIHByb3Blcmx5IHdoZW4gc3BsaXQuCgpkYXZlcyAxMyBEZWMgOTkgMDM6MTg6MzgKICAgIC0gKGFnZW50X3RyYXAuYyk6IGFsbG93IHNwZWNpZmljYXRpb24gb2YgZW50ZXJwcmlzZSBPSUQgd2hlbiBzZW5kaW5nIHRyYXBzCgpkYXZlcyAxMyBEZWMgOTkgMDQ6NDM6MTQKICAgIC0gKGFnZW50L3NubXBkLmMgYWdlbnQvbWliZ3JvdXAvc211eC9zbXV4LltjaF0pOgogICAgICAtIFBhdGNoIHRvIGdldCBTTVVYIHN1cHBvcnQgd29ya2luZyB3aXRoIHRoZSBuZXcgYWdlbnQgYXJjaGl0ZWN0dXJlLgogICAgICAgIFRoaXMgaXMgcHJvYmFibHkgbm90IFRoZSBSaWdodCBXYXkgVG8gRG8gVGhpbmdzIE5vdywgYnV0IGl0IHdvcmtzLgogICAgICAgIFRoYW5rcyB0byBOaWNrIEFtYXRvIGFuZCBNaWtlIE1pY2hhdWQuCgptc2xpZmNhayAxMyBEZWMgOTkgMDk6NDk6MjgKICAgIEFkZGVkIHBhdGNoIGZyb20gTS5NaWNoYXVkIHRvIHVzZSBzZW5kX2VudGVycHJpc2VfdHJhcF92YXJzLgoKaGFyZGFrZXIgMTMgRGVjIDk5IDA5OjU3OjM3CiAgICAtIChETE1PRC1NSUIudHh0LCBVQ0QtRExNT0QtTUlCLmluYywgVUNELURMTU9ELU1JQi50eHQpOgogICAgICAtIEp1ZXJnZW5zIHBhdGNoIHRvIG1vdmUgRExNT0QtTUlCIC0+IFVDRC1ETE1PRC1NSUIgYW5kIC0+IFNNSXYyLgogICAgICAtIG1vdmVkIHRvIHRoZSBleHBlcmltZW50YWwgdHJlZS4KCm1zbGlmY2FrIDEzIERlYyA5OSAxMjowNDoxNQogICAgQ2xlYW4gYWxzbyByZW1vdmVzIGdlbmVyYXRlZCBkZWZhdWx0X3N0b3JlLjMuaCAuCgptc2xpZmNhayAxMyBEZWMgOTkgMTM6NTQ6MjcKICAgIFNhbml0eSBjaGVja3MgYWRkZWQgdG8gX2dldF9zeW1ib2wuCgpoYXJkYWtlciAxMyBEZWMgOTkgMTQ6MjA6MTAKICAgIC0gKGNvbmZpZy5oLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbik6IC0td2l0aC1lZmVuY2UgaW1wbGVtZW50ZWQuCiAgICAgIC0gKGZvcmNlZCBjaGVja2luZyBmb3IgLS1lbmFibGUtZGV2ZWxvcGVyIGFuZCBDVlMgY2hlY2tvdXRzKQoKbXNsaWZjYWsgMTMgRGVjIDk5IDE0OjU0OjMxCiAgICBGaXggcHJvYmxlbSBwcmludGluZyBJTVBMSUVEIGluZGljZXMgb2YgT0JKRUNUSUQgdHlwZS4KCm1zbGlmY2FrIDEzIERlYyA5OSAxNToxMjowMQogICAgRmluaXNoIHN5bWJvbCBjb252ZXJzaW9uIHdpdGggbnVtZXJpYyB3aGVuIHN1YnRyZWUgaXMgbGVhZiBub2RlLgoKbXNsaWZjYWsgMTMgRGVjIDk5IDE2OjAzOjAwCiAgICBBbGxvdyBzcHJpbnRfdmFyaWFibGUgdG8gd29yayBldmVuIGlmIG5vIE1JQiBmaWxlcyB3ZXJlIHJlYWQuCgpoYXJkYWtlciAxNCBEZWMgOTkgMDg6MDg6MDAKICAgIC0gKHNubXBfcGFyc2VfYXJncy5jLCBzbm1wdHJhbnNsYXRlLmMsIHNubXB0cmFwZC5jLCBkZWZhdWx0X3N0b3JlLmgsCiAgICAgIG1pYi5jLCBtaWIuaCk6CiAgICAgIC0gYXJndW1lbnQgc2h1ZmZsaW5nLi4uCiAgICAgICAgLUkgZm9yIGlucHV0IGFyZ3MgY3JlYXRlZCwgYW5kIC1PUiBtb3ZlZCB0aGVyZS4KICAgICAgICAtSWIgY3JlYXRlZC4KICAgICAgICAtVEIgY3JlYXRlZCBmb3Igc25tcHRyYW5zbGF0ZSAod2FzIC1CKS4KCmhhcmRha2VyIDE0IERlYyA5OSAwODo0MTo0MQogICAgLSAoSUFOQWlmVHlwZS1NSUIudHh0LCBVQ0QtU05NUC1NSUIudHh0KTogUGF0Y2ggZnJvbSBKdWVyZ2VuIFNjaG9lbndhZWxkZXI6CiAgICAgIC0gdXBkYXRlcy4KCmhhcmRha2VyIDE0IERlYyA5OSAxNDo1NDowOQogICAgLSAoa2V5dG9vbHMuYyk6IHJldmVyc2UgZ2VuZXJhdGVfS3Ugb3B0aW1pemF0aW9ucywgYXMgdGhleSBkb24ndCB3b3JrLgoKaGFyZGFrZXIgMTQgRGVjIDk5IDE1OjE5OjM1CiAgICAtIChNYWtlZmlsZS5pbik6IERMTU9EIC0+IFVDRC1ETE1PRAoKaGFyZGFrZXIgMTQgRGVjIDk5IDE2OjA1OjA4CiAgICAtIChjb25maWd1cmUsIGNvbmZpZ3VyZS5pbik6IG1vdmUgLWxlZmVuY2UgY2hlY2sgdXAgdG8gZnJvbnQgKGxhc3QgaW4gbGluaykuCgpoYXJkYWtlciAxNCBEZWMgOTkgMTY6MDU6MzcKICAgIC0gKGhlYWRlcl9jb21wbGV4LmMpOiBnZXQgbmV4dCBpbiBsaW5rIGxpc3QgYmVmb3JlIGRlbGV0aW5nIHJvb3QuCgptc2xpZmNhayAxNSBEZWMgOTkgMDQ6MjE6MjcKICAgIElzb2xhdGUgYW5kIHJldG91Y2ggZGVwcmVjYXRlZCBjb21tYW5kIGxpbmUgb3B0aW9ucy4KCm1zbGlmY2FrIDE1IERlYyA5OSAwNTo1MTowMAogICAgU2hhcmUga3N0YXQgZmQgaWZmIHVjZC1zbm1wL21lbW9yeV9zb2xhcmlzMiBpcyBhbHNvIGNvbmZpZ3VyZWQuCgpoYXJkYWtlciAxNSBEZWMgOTkgMDk6MTc6MDMKICAgIC0gKEV0aGVyTGlrZS1NSUIudHh0LCBJUEZJTFRFUi50eHQsIFVDRC1JUEZJTFRFUi1NSUIuaW5jLAogICAgICBVQ0QtSVBGSUxURVItTUlCLnR4dCk6IFBhdGNoIGZyb20gSnVlcmdlbiBTY2hvZW53YWVsZGVyOgogICAgICAtIEV2ZW4gbW9yZSB1cGRhdGVzLgoKaGFyZGFrZXIgMTUgRGVjIDk5IDA5OjE5OjE0CiAgICAtIChTTk1QdjItUEFSVFktTUlCLnR4dCBTTk1QdjItTTJNLU1JQi50eHQgKTogcmVtb3ZlZC4KCm1zbGlmY2FrIDE1IERlYyA5OSAwOTo0Mjo0NAogICAgUmVtb3ZlIHNubXBfbG9nX3N5c2xvZywgc25tcF9sb2dfZmlsZWxvZywgc25tcF9sb2dfc3RkZXJybG9nOwogICAgU2ltcGxpZnkgc25tcF9sb2dfc3RyaW5nLgoKbXNsaWZjYWsgMTUgRGVjIDk5IDA5OjU2OjI0CiAgICBBZGQgdGltZSBtYXJrZXIgY3JlYXRlLCBzZXQsIGFuZCBkZWx0YSB0aW1lIGNoZWNrIG1ldGhvZHMuCgptc2xpZmNhayAxNSBEZWMgOTkgMTE6MDg6MTkKICAgIFJlcGxhY2Uga2MgZnJvbSBtZW1vcnlfc29sYXJpczIuYyB3aXRoIGtzdGF0X2ZkLCBkZWZpbmVkIGluIGtlcm5lbF9zdW5vczUuYy4KCm5iYSAxNiBEZWMgOTkgMjM6MDU6NDcKICAgIC0ga2VybmVsLmM6IG91dHB1dCBlcnJvciBzdHJpbmcsIG5vdCBudW1iZXIKCm5iYSAxNiBEZWMgOTkgMjM6MDY6NTgKICAgIC0gc25tcGQuYzogXG4gdGVybWluYXRlIHNvbWUgbG9nIG1lc3NhZ2VzCgpuYmEgMTYgRGVjIDk5IDIzOjA4OjAyCiAgICAtIHNtdXguW2NoXTogZml4IHNvbWUgcHJvdG90eXBlcyBhbmQgaW5jbHVkZXMuCgpuYmEgMTYgRGVjIDk5IDIzOjA4OjU0CiAgICAtIHNubXB0cmFuc2xhdGUuYzogYmUgZXhwbGljaXQgaW4gdGhlIC10IHdhcm5pbmcKCm5iYSAxNiBEZWMgOTkgMjM6MDk6NDIKICAgIC0gbWliLmM6IGZpeCBhIHRhaWwgcmVjdXJzaW9uIGVsaW1pbmF0aW9uIHByb2JsZW0gcHJpbnRpbmcgb2lkcwoKbmJhIDE2IERlYyA5OSAyMzoxMDozMQogICAgLSBzbm1wdjMuYzogYSBtb3JlIHNwZXZpZmljIGhlbHAgbWVzc2FnZSBmb3IgZGVmVmVyc2lvbgoKbmJhIDE3IERlYyA5OSAwMjowODoxNwogICAgLSBtaWIuYzoga2lsbCB0aGF0IHRhaWwgcmVjdXJzaW9uIGVsaW1pbmF0aW9uLCBpdCBqdXN0IGFkZHMgdG9vIG1hbnkKICAgIAljb25kaXRpb25hbHMuIFByb3Blcmx5IG91dHB1dCBhbiBlbXB0eSBzdHJpbmcgaW5kZXguCgpuYmEgMTcgRGVjIDk5IDAyOjA5OjE4CiAgICAtIHNubXBfcGFyc2VfYXJncy5jOiByZW1vdmUgc29tZSBzdXBlcmZsdW91cyB1c2FnZSgpIGNhbGxzLgoKbmJhIDE3IERlYyA5OSAwMjoxNDoxOAogICAgLSBzbm1wdGFibGUuYzogY2xlYW51cCBvZiB0aGUgIm5ldyIgbWliIHdhbGsgdG8gZGV0ZXJtaW5lIGZpZWxkcy4gTWFrZSBpdAogICAgCWRlZmF1bHQgKGRvbid0IGV2ZW4gZG9jdW1lbnQgdGhlIC1DIGNvbXBhdGliaWxpdHkgb3B0aW9uKS4gSWdub3JlCiAgICAJbm90LWFjY2Vzc2libGUgZmllbGRzIGluIHRoZSB3YWxrLgoKbmJhIDE3IERlYyA5OSAwMjoxODozMAogICAgLSBzbm1wdHJhcGQuYzogbWFrZSB0aGUgb2lkcyBnaXZlbiB0byB0cmFwZCBoYW5kbGVycyBwcm9wZXJseSAuMCB0ZXJtaW5hdGVkLgogICAgCUFkZCBhIFNOTVAtQ09NTVVOSVRZLU1JQjo6c25tcFRyYXBBZGRyZXNzLjAKICAgIAlBZGQgc3lzbG9nIG9mIHYyIHRyYXBzIGFuZCBpbmZvcm1zCgpuYmEgMTcgRGVjIDk5IDAzOjIyOjM5CiAgICAtIGxpYnNubXAuZGVmOiBhZGQgc29tZSBmdW5jdGlvbiBuYW1lcwoKaGFyZGFrZXIgMTcgRGVjIDk5IDA3OjAzOjA5CiAgICAtIChzbm1wY21kLjEpOiBkb2N1bWVudCAtSSBhbmQgLU8gZmxhZ3MuCgpoYXJkYWtlciAxNyBEZWMgOTkgMDc6MDU6MDgKICAgIC0gKHNubXBjbWQuMSk6IG1lbnRpb24gdGhhdCAtSVIgYW5kIC1JYiBhcmUgYWN0dWFsbHkgdXNlZCBieSBkZWZhdWx0LgoKaGFyZGFrZXIgMTcgRGVjIDk5IDA3OjEzOjAzCiAgICAtIChzbm1wLmNvbmYuNS5kZWYpOiBkb2N1bWVudCBhIGJ1bmNoIG9mIG5ldyBjb25maWd1cmF0aW9uIG9wdGlvbnMuCgpoYXJkYWtlciAxNyBEZWMgOTkgMDc6MjY6MDUKICAgIC0gKHNubXBkLmNvbmYuNS5kZWYpOiBkb2N1bWVudCByb2NvbW11bml0eSwgcndjb21tdW5pdHksIHJvdXNlciwgcnd1c2VyLgoKaGFyZGFrZXIgMTcgRGVjIDk5IDA3OjI4OjM0CiAgICAtIChzbm1wZC5jb25mLjUuZGVmKTogZG9jdW1lbnQgdGhlIGZpbGUgZGlyZWN0aXZlLgoKaGFyZGFrZXIgMTcgRGVjIDk5IDA3OjQwOjQzCiAgICAtIChzbm1wZC5jb25mLjUuZGVmKTogZG9jdW1lbnQgY3JlYXRlVXNlci4KCmhhcmRha2VyIDE3IERlYyA5OSAxMDoxMDo0MgogICAgLSAoTkVXUyk6IGZpcnN0IHBhc3MgYXQgY2hhbmdlcy4KCmhhcmRha2VyIDE3IERlYyA5OSAxMDoxMTowMgogICAgLSAoc2Vkc2NyaXB0LmluKTogUEVSU0lTVEVOVF9ESVJFQ1RPUlkgdG9rZW4gYWRkZWQuCgpoYXJkYWtlciAxNyBEZWMgOTkgMTA6MTE6MzQKICAgIC0gKHNubXBkLmMpOiByZW9yZGVyIGluaXQoKSByb3V0aW5lcyBmb3IgLUggdG8gcHJldmVudCBzZWdmYXVsdGluZy4KCmhhcmRha2VyIDE3IERlYyA5OSAxMDoxNjozMgogICAgLSAoTWFrZWZpbGUuaW4pOiBwdXQgc25tcGQubyBpbnRvIHRoZSBvYmplY3QgbGlzdCwgYW5kIHJlbW92ZSBpdCBmcm9tCiAgICAgIGRpcmVjdCBjb21waWxhdGlvbiBpbiB0aGUgQ0MgbGluayBsaW5lLgoKaGFyZGFrZXIgMTcgRGVjIDk5IDEwOjE3OjA1CiAgICAtICh1c21Vc2VyLmMpOiBjaGFuZ2VkIGhlbHAgbGluZSBvZiBjcmVhdGVVc2VyIHRvIHNlcGVyYXRlIERFUyB0b2tlbgogICAgICBmcm9tIHRoZSBwYXNzcGhyYXNlLgoKaGFyZGFrZXIgMTcgRGVjIDk5IDEwOjE3OjI4CiAgICAtIChzbm1wX3BhcnNlX2FyZ3MuYyk6IHJlbW92ZWQgLVIgZnJvbSB0aGUgLWggb3V0cHV0LgoKaGFyZGFrZXIgMTcgRGVjIDk5IDEwOjE4OjI0CiAgICAtIChORVdTKTogc2Vjb25kIHBhc3MuCgpoYXJkYWtlciAxNyBEZWMgOTkgMTA6MTg6NDIKICAgIC0gKHNubXBfYWdlbnRfYXBpLjMpOiByZS1zdHJ1Y3R1cmUgYmFzZWQgb24gcmVjZW50IGNoYW5nZXMuCgptc2xpZmNhayAxNyBEZWMgOTkgMTQ6MjM6MjUKICAgIEZpeGVkIGEgZmV3IHNwZWxpbG5nIGVycm9ycy4KCm1zbGlmY2FrIDE3IERlYyA5OSAxNToyMTozOQogICAgQWRkIEJpbGwgRnVtZXJvbGEncyBwYXRjaCBmb3IgRnJlZUJTRCA0LnggdG8gdXNlIHN3YXBpbmZvLgogICAgSW5jbHVkZSBGcmVlQlNEIDQueCBzcGVjaWZpYyBtZW1vcnkgYW5kIHZtc3RhdCB3aGVuIGJ1aWxkaW5nIHRoYXQgYWdlbnQuCgptc2xpZmNhayAxNyBEZWMgOTkgMTU6NDE6MTQKICAgIE5vIGR1bW15IHZhbHVlcyBmb3IgRnJlZUJTRCwgcGxlYXNlLgoKaGFyZGFrZXIgMTcgRGVjIDk5IDE1OjQ2OjA4CiAgICAtIChzbm1wX2FsYXJtLmMpOiBtaXNzaW5nICEgb3BlcmF0ZXIgb24gc2lnbmFsIHRlc3QuCgpoYXJkYWtlciAxNyBEZWMgOTkgMTU6NTU6NDgKICAgIC0gKE5FV1MpOiBtZW50aW9uIC1JLgoKaGFyZGFrZXIgMTcgRGVjIDk5IDE1OjU2OjI3CiAgICAtIChhZ2VudF9yZWFkX2NvbmZpZy5jLCBhZ2VudF9yZWdpc3RyeS5jLCBzbm1wX3ZhcnMuYyk6CiAgICAgIC0gaW5jbHVkZSAic25tcF9hbGFybS5oIiBmb3IgbWliIG1vZHVsZXMgdGhhdCBuZWVkIHRoZSBjYWxsYmFjayBkZWYuCgpoYXJkYWtlciAxNyBEZWMgOTkgMTU6NTc6MTAKICAgIC0gKGhlYWRlcl9jb21wbGV4LmMsIGhlYWRlcl9jb21wbGV4LmgpOiBjb21wbGV0ZWx5IHJlc3RydWN0dXJlZC4KICAgICAgLSBkcmFzdGljbHkgcmVkdWNlcyBtZW1vcnkgdXNhZ2UgZm9yIGxhcmdlIGRhdGEgc2V0cyAoMS8zKS4KCmRhdmVzIDIwIERlYyA5OSAwMzowMTo0OQogICAgLSAoYWdlbnR4L1JFQURNRS5hZ2VudHgpOiBVcGRhdGVkIHRvIGRlc2NyaWJlIGN1cnJlbnQgc3RhdHVzLgoKZGF2ZXMgMjAgRGVjIDk5IDA0OjE1OjU1CiAgICAtIChhZ2VudF90cmFwLmMgc25tcF92YXJzLmMgbWliSUkuW2NoXSBtaWJJSS8qLmMgbWliSUkvc3lzT1JUYWJsZS5oKToKICAgICAgLSBVc2UgU05NUF9PSUQgcHJlZml4IGRlZmluaXRpb25zIGluIE9JRCBzcGVjaWZpY2F0aW9ucy4KICAgICAgLSBSZWdpc3RlciB0aGUgdmFyaW91cyBNSUItMiBtb2R1bGVzIHNlcGFyYXRlbHkgaW4gc3lzT1JUYWJsZS4KCmhhcmRha2VyIDIwIERlYyA5OSAwNjo0Mzo0MAogICAgLSAoc25tcF9wYXJzZV9hcmdzLmMpOiBGb3JjZSBzZXQgdG8gMSBmb3IgLUQgc28gbXVsdGlwbGUgc3dpdGNoZXMgY2FuCiAgICAgIGJlIGdpdmVuIChpZSwgZG9uJ3QgdG9nZ2xlIHRoZSB2YWx1ZSkuCgpoYXJkYWtlciAyMCBEZWMgOTkgMDY6NDg6MjQKICAgIC0gKE1ha2VmaWxlLmluKTogbW92ZWQga2VybmVsLm8gaW50byB0aGUgbGlidWNkYWdlbnQgbGlicmFyeS4KCmhhcmRha2VyIDIwIERlYyA5OSAxMzoyMzoyNQogICAgLSAoSVBTRUMtTUlCLnR4dCk6IHJlbW92ZWQKCmhhcmRha2VyIDIwIERlYyA5OSAxMzoyNToxNQogICAgLSAoSVBGV0FDQy1NSUIudHh0KTogbW92ZWQgdG8gVUNELUlQRldBQ0MtTUlCLnR4dAoKaGFyZGFrZXIgMjAgRGVjIDk5IDEzOjI2OjA5CiAgICAtIChVQ0QtSVBGV0FDQy1NSUIudHh0KTogbW92ZWQgYW5kIHVwZGF0ZWQgZnJvbSBJUEZXQUNDLU1JQi50eHQKCmhhcmRha2VyIDIwIERlYyA5OSAxMzozMDowNgogICAgLSAoVUNELUlQRldBQ0MtTUlCLnR4dCk6IG1vdmVkIHRhYmxlIHRvIG9uZSBsZXZlbCBkZWVwZXIgdW5kZXIgbWliIG5vZGUuCgpoYXJkYWtlciAyMCBEZWMgOTkgMTM6MzA6MzYKICAgIC0gKGlwZndhY2MuYyk6IG1vdmVkIHRhYmxlIHRvIG9uZSBsZXZlbCBkZWVwZXIgdW5kZXIgbWliIG5vZGUuCgpoYXJkYWtlciAyMCBEZWMgOTkgMTU6Mzg6MzQKICAgIC0gKE1ha2VmaWxlLmluKTogSVBGV0FDQy1NSUIudHh0IC0+IFVDRC1JUEZXQUNDLU1JQi50eHQKCmhhcmRha2VyIDIwIERlYyA5OSAxNzoxOToxOAogICAgLSAoYWdlbnRfdHJhcC5jKTogbWFrZSB1cHRpbWUgYSBsb25nIGZvciA2NGJpdCBhcmNoaXRlY3R1cmVzLgoKaGFyZGFrZXIgMjAgRGVjIDk5IDE3OjIwOjE1CiAgICAtIChhZ2VudHgvcHJvdG9jb2wuYyk6IG1ha2UgYSB0aGluZ3Mgc2l6ZV90IGluc3RlYWQgb2YgdV9pbnQgKGZvciA2NGJpdCBjb2RlKS4KCmhhcmRha2VyIDIwIERlYyA5OSAxNzoyMDo1NQogICAgLSAoc25tcF9hcGkuYyk6IERpZ2l0YWwgVW5peCBoYWNrIGZvciBiYWQgcmVjdmZyb20gaW1wbGVtZW50YXRpb24uCgpoYXJkYWtlciAyMCBEZWMgOTkgMTc6MzE6NDUKICAgIC0gKEVYQU1QTEUuY29uZi5kZWYpOiBtaW5vciBub3RlLgoKaGFyZGFrZXIgMjAgRGVjIDk5IDE3OjMyOjIzCiAgICAtIChORVdTKTogbWVudGlvbiBTTUl2MiB1cGRhdGVzLgoKaGFyZGFrZXIgMjAgRGVjIDk5IDE3OjMyOjM3CiAgICAtIChtaWJpbmNsLmgpOiBhZGQgYWdlbnRfdHJhcC5oCgpoYXJkYWtlciAyMCBEZWMgOTkgMTc6MzQ6MzEKICAgIC0gKHZlcnNpb24uaCBidWctcmVwb3J0IHNlZHNjcmlwdC5pbik6IHZlcnNpb24gdGFnICggNC4xLnByZTEgKQoKbmJhIDIxIERlYyA5OSAwMjozNzoxOQogICAgLSBzbm1wZC5jLCBzbXV4LmMsIHNubXBfYXBpLmM6IHRha2UgYXdheSBzb21lIHVudXNlZCB2YXJpYWJsZXMuCgpuYmEgMjIgRGVjIDk5IDAyOjQxOjQyCiAgICAtIG1lbW9yeV9mcmVlYnNkMi5jOiBtYWtlIGl0IHdvcmsgKGFnYWluKSBmb3IgRnJlZUJTRC0yIDotKQoKbmJhIDIyIERlYyA5OSAwMjo0MzoxNQogICAgLSBocl9zdG9yYWdlLmM6IGtpbGwgYSBkdW1teSB2YWx1ZQoKbmJhIDIyIERlYyA5OSAwNTo0NjoyMQogICAgLSBzeXN0ZW0uYzogbmF1Z2h0eSwgbmF1Z2h0eSBOaWVscywganVzdCByZWluZGVudGluZyAuLi4KCm5iYSAyMiBEZWMgOTkgMDU6NDc6MTEKICAgIC0gc3lzdGVtX21pYi5jOiB1c2Ugc29tZSAjZGVmaW5lcyBpIHBsYWNlIG9mIG51bWJlcnMKCm5iYSAyMiBEZWMgOTkgMDU6NTg6MTgKICAgIC0gdmFjbSByb3V0aW5lczogYWxpZ25tZW50IHdpdGggUkZDIG1pYnMsIHByZXBhcmluZyBmb3IgdHJhcCBnZW5lcmF0aW9uCiAgICAJYW5kIGEgYmV0dGVyIGludGVncmF0aW9uIHdpdGggdmFyaWFibGUgdHJlZSB3YWxraW5nCgpoYXJkYWtlciAyMiBEZWMgOTkgMTU6MTI6MjYKICAgIC0gKG1hc3Rlci5jKTogdXNlIHNubXBfc2Vzc19vcGVuIGZvciB0aGUgc2Vjb25kIHRyeSBhdCBvcGVuaW5nIHRoZQogICAgICBtYXN0ZXIgcG9ydC4KCmhhcmRha2VyIDIyIERlYyA5OSAxNToxMzowNQogICAgLSAobWFzdGVyX3JlcXVlc3QuYyk6IGluY3JlYXNlIG1heCB2YXJzIHRvIDY0ICh3YXMgMTYpLiAgSSBoYXZlIGEKICAgICAgdGFibGUgd2l0aCBtb3JlIHRoYW4gdGhhdCBudW1iZXIgaW4gY29sdW1ucywgd2hpY2ggYnJlYWtzIHNubXB0YWJsZS4KCmhhcmRha2VyIDIyIERlYyA5OSAxNjozMDowMQogICAgLSAodm1zdGF0X3NvbGFyaXMyLmMsIHZtc3RhdF9zb2xhcmlzMi5oKTogUGF0Y2ggZnJvbSBKb2NoZW4gS21pZXRzY2g6CiAgICAgIC0gZmlyc3QgcGFzcyBhdCB2bXN0YXQgc3VwcG9ydCBmb3Igc29sYXJpcy4KCmhhcmRha2VyIDIzIERlYyA5OSAwODoyMTozNwogICAgLSAodm1zdGF0X3NvbGFyaXMyLmMpOiBQYXRjaCBmcm9tIEpvY2hlbiBLbWlldHNjaDoKICAgICAgLSBub24gODAtY29sdW1uIHdyYXBwZWQgdmVyc2lvbi4KCmhhcmRha2VyIDI4IERlYyA5OSAxNTo0MjowOAogICAgLSAobWFzdGVyX3JlcXVlc3QuYyk6IHJlbW92ZSB0aGUgISBpbiBmcm9udCBvZiBpbl9hX3ZpZXcsIHdoaWNoIGNoYW5nZWQuCgpoYXJkYWtlciAzMCBEZWMgOTkgMDc6NTE6MzYKICAgIC0gKHNubXBkLmMpOiB1c2FnZSBsaW5lIG9yZGVyIG1lc3NlZCB1cCwgYXMgcG9pbnRlZCBvdXQgYnkgUm9iZXJ0IFN0b3J5LgoKbXNsaWZjYWsgMzAgRGVjIDk5IDEyOjAwOjU4CiAgICBGaXggY29tcGlsZSBlcnJvcnMuCgptc2xpZmNhayAzMSBEZWMgOTkgMDk6MzE6MTIKICAgIEZpeCBidWcgIyAxMjIKCm1zbGlmY2FrIDMxIERlYyA5OSAwOTozMjo1OAogICAgQXBwbHkgcGF0Y2ggcHJvdmlkZWQgYnkgU2VyZyBUcnVzaG5pa292IDxzYXRAem1haWwucnU+IGZvciBBSVggNC4yLjEga25saXN0Cgptc2xpZmNhayAzMSBEZWMgOTkgMTA6MTE6MTIKICAgIEZpeCBidWcgIzEyNSAtIGluc2VydCB1bmRlcnNjb3JlIGludG8gc3RydWN0IHNubXBfaXBhZGRyIG1lbWJlciBuYW1lcy4KCm1zbGlmY2FrIDMxIERlYyA5OSAxMDozMzoxNgogICAgQXV0b2NvbmYgcGF0Y2ggYy9vIEFsYmVydCBDaGluLUEtWW91bmcgPGNoaW5hQHRoZXdyaXR0ZW53b3JkLmNvbT4KCm1zbGlmY2FrIDMxIERlYyA5OSAxMDozNjo0NgogICAgRml4IHdhcm5pbmdzIG9mIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzLgoKbXNsaWZjYWsgMzEgRGVjIDk5IDEyOjQzOjUwCiAgICBGaXggYnVnICM0OCA6IG5vIHN0cmNhc2VjbXAvc3RybmNhc2VjbXAgZm9yIFNpbml4Cgptc2xpZmNhayAzMSBEZWMgOTkgMTM6Mjc6NDQKICAgIEFwcGx5IHNvbWUgTmV0QlNEIDEuMy54LCAxLjQgcGF0Y2hlcyBjL28gR3JlYSBBLiBXb29kcyA8d29vZHNAcGxhbml4LmNvbT4KCm5iYSAgMyBKYW4gMDAgMTU6MjM6MjEKICAgIC0gRVhBTVBMRS5jb25mLmRlZjogYWRhcHQgdG8gY2hhbmdlcyBpbiB2YWxpZCB2YWNtIHN5bnRheAoKbmJhICAzIEphbiAwMCAxNToyNjowNwogICAgLSBzbm1wX3ZhcnMuYzogaW5jbHVkZSBhZ2VudF9yZWdpc3RyeS5oIG9ubHkgb25jZQoKbmJhICAzIEphbiAwMCAxNToyNjo1MQogICAgLSBzbm1wZC5jOiBhZGQgYSBtaXNzaW5nIGNvbnN0IHNwZWNpZmllcgoKbmJhICAzIEphbiAwMCAxNToyNzoyOQogICAgLSBtaWJJSS5oOiBhZGQgcHJvdG90eXBlIGZvciBpbml0X21pYklJCgpuYmEgIDMgSmFuIDAwIDE1OjI4OjI0CiAgICAtIHdvbWJhdC5bY2hdOiBjb3JyZWN0IHByb3RvdHlwZSBmb3Igd29tYmF0X3BhcnNlX2NvbmZpZwoKbmJhICAzIEphbiAwMCAxNTozMDoyNgogICAgLSBzeXN0ZW0uaDogYWRkIHByb3RvdHlwZSBmb3Igc3RyY2FzZWNtcAoKbmJhICAzIEphbiAwMCAxNTozMjo1OQogICAgLSBwYXJzZS5jOiBmaXggRmlsZSB2YXJpYWJsZSBiZWluZyBsZWZ0IHBvaW50aW5nIGludG8gdGhlIHN0YWNrLgogICAgCUlnbm9yZSAuaW5kZXggZmlsZSBvbiBXSU4zMiBwbGF0Zm9ybQoKbmJhICAzIEphbiAwMCAxNTozNDoyMgogICAgLSBtaWIuYzogYWxzbyBub3RlIFRFWFRVQUwgQ09OVkVOVElPTiBpbiAtVGQgb3V0cHV0CgpuYmEgIDMgSmFuIDAwIDE1OjM5OjQwCiAgICAtIHNubXBjbWQuMTogYWRkIHNubXBidWxrZ2V0IHRvIGxpc3Qgb2YgYXBwbGljYXRpb25zCiAgICAtIHNubXB0cmFuc2xhdGUuMTogZXhwbGFpbiAtVCBvdXRwdXRzCiAgICAtIHNubXB0cmFwZC5jb25mLjUuZGVmOiBkZWZhbHQgdHJhcGhhbmRsZXIgaXMgaW1wbGVtZW50ZWQKCmhhcmRha2VyICA0IEphbiAwMCAwODo1ODoyNAogICAgLSAoUkVBRE1FLCBGQVEpOiBKYXBhbiBtaXJyb3IgbG9jYXRpb24gY2hhbmdlLgoKaGFyZGFrZXIgIDQgSmFuIDAwIDEwOjMzOjU0CiAgICAtIChNYWtlZmlsZS5pbik6IGluc3RhbGwgc3RydWN0LmgKCmhhcmRha2VyICA0IEphbiAwMCAxMDozNTowNgogICAgLSAoc25tcF9hZ2VudC5jKTogZGVhbCB3aXRoIGJsb2NraW5nIGJldHRlciBpbiBzbm1wX2FnZW50X2NoZWNrX2FuZF9wcm9jZXNzKCkuCgpoYXJkYWtlciAgNCBKYW4gMDAgMTY6Mjc6NDUKICAgIC0gKGNvbmZpZy5oLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbik6IFBhdGNoIGZyb20gU2FuZGVyIFN0ZWZmYW5uOgogICAgICAtIEFkZCAtSS91c3IvaW5jbHVkZS9ycG0gYmVjYXVzZSBvZiBiYWRseSB3cml0dGVuIHJwbSBoZWFkZXIgZmlsZXMuCgpuYmEgIDQgSmFuIDAwIDIyOjEyOjEwCiAgICAtIEVYQU1QTEUuY29uZi5kZWYsIEZBUSwgc25tcGQuY29uZi41LmRlZjogcmVtb3ZlIGFsbCB0cmFjZXMgb2Ygc2VjdXJpdHkKICAgIAltb2RlbCAiYW55IiBpbiAiZ3JvdXAiIGNvbmZpZ3VyYXRpb24gZGlyZWN0aXZlcwoKbmJhICA0IEphbiAwMCAyMzo1MDoyNwogICAgLSBwYXJzZS5jOiAjaWZkZWYgc29tZSB2YXJpYWJsZXMgbm90IHVzZWQgdW5kZXIgd2luMzIKCm5iYSAgNCBKYW4gMDAgMjM6NTE6MTEKICAgIC0gc25tcHRyYXBkLmM6IGltcGxlbWVudCB0cmFuZCBoYW5kbGVycyBmb3Igd2luMzIKCmRhdmVzICA2IEphbiAwMCAwMTo1ODo1NgogICAgLSAobWliZ3JvdXAvbWliSUkuYyk6IFJlbW92ZSByZWR1bmRhbnQgZmlsZQoKaGFyZGFrZXIgIDYgSmFuIDAwIDA4OjU3OjMxCiAgICAtICh1dGlsX2Z1bmNzLmgpOiBwcm9wZXJseSB3cmFwIHN0cnVjdC5oIGluY2x1ZGUgZGlyZWN0aXZlIGZvcgogICAgICBub24tc291cmNlLWRpcmVjdG9yeSBpbmNsdWRlLgoKbWFyeiAgNiBKYW4gMDAgMTI6NTY6NTAKICAgIHVwZGF0ZSBzeW50YXggKGV4YWN0KQoKbWFyeiAgNiBKYW4gMDAgMTM6MDc6MDMKICAgIHdlIHNob3VsZCBub3QgcHJpbnQgdG8gc3RkZXJyIGlmIHN0ZGVyciBsb2dnaW5nIGlzIGRpYWJsZWQgLSB0aGlzIHRob3dzIG9mZiB0aGUgYWxpZ25tZW50IG9mIHRlc3Qgb3V0cHV0IGZvciAnbWFrZSB0ZXN0JyBpbiBib3RoIHVjZC1zbm1wIGFuZCBQZXJsL1NOTVAKCm1hcnogIDYgSmFuIDAwIDEzOjE0OjEwCiAgICB1cGRhdGUgY29uZmlnIGFjY2VzcyBzeW50YXggKGV4YWN0KQoKaGFyZGFrZXIgIDYgSmFuIDAwIDE1OjA4OjI4CiAgICAtIChDT1BZSU5HKTogeTJrIGJ1Zy4KCmhhcmRha2VyICA2IEphbiAwMCAxNTowODo0OAogICAgLSAobWliMmMpOiByZW1vdmVkIGEgZGVidWdnaW5nIHN0YXRlbWVudC4KCmhhcmRha2VyICA2IEphbiAwMCAxNTowOToyMAogICAgLSAobWliMmMuY29uZik6IHVucXVvdGVkIHF1b3RlcyBxdW90ZWQuCgpoYXJkYWtlciAgNyBKYW4gMDAgMDk6Mjk6MDYKICAgIC0gKHNubXBfYWdlbnQuYyk6IGJldHRlciBoYW5kbGluZyBvZiB3cml0ZSBmYWlsdXJlcy4KCmhhcmRha2VyICA3IEphbiAwMCAxMDozODo0OAogICAgLSAoc25tcFRhcmdldEFkZHJFbnRyeS5jLCBzbm1wVGFyZ2V0UGFyYW1zRW50cnkuYyk6IHVwZGF0ZSB0byB2NCBBUEkgc2V0IGNvZGUuCgpoYXJkYWtlciAgNyBKYW4gMDAgMTE6MjI6NDAKICAgIC0gKHNubXB0cmFuc2xhdGUuYyk6IFBhdGNoIGZyb20gUm9iZXJ0IFN0b3J5OgogICAgICAtIGhhbmRsZSBtdWx0aXBsZSB0cmFuc2xhdGVkIE9JRHMuCgpoYXJkYWtlciAgNyBKYW4gMDAgMTY6MjE6NTAKICAgIC0gKHZhY21fdmFycy5jKTogcHJvcGVybHkgZ3JvdXAgcncvcm91c2VycyBpbnRvIHVzbSBub3QgdjEvdjJjLgoKbmJhICA3IEphbiAwMCAyMzo0MzoxMAogICAgLSBjb25maWd1cmUuaW46IHNvbWUgbWlzc2luZyAieCIgaW4gdGVzdHMgZm9yIC0td2l0aC1vcGVuc3NsIGFuZAogICAgCS0tZGlzYWJsZS1kZXZlbG9wZXIKCm5iYSAgOCBKYW4gMDAgMDA6NTY6MzAKICAgIC0gY29uZmlndXJlLmluOiBidWdmaXggZm9yIGEgYnVnZml4IGJ1ZwoKbXNsaWZjYWsgIDggSmFuIDAwIDExOjQ0OjU4CiAgICBGaXggYnVpbGQgZm9yIExpbnV4IFJlZEhhdCA2LjEgKGNhbnQgbGluayBsaWJ3cmFwIHdpdGhvdXQgbGlibnNsKS4KCm1zbGlmY2FrICA4IEphbiAwMCAxMjowNzo0NAogICAgVXNlIGtubGlzdCBpZmYgYWl4NCBhbmQgSEFWRV9LTkxJU1QgW25vdCBjb21wbGV0ZSB3L28gY29uZmlndXJlIG1vZHNdCgpkYXZlcyAxMCBKYW4gMDAgMDE6Mzc6MzIKICAgIC0gKGFnZW50L21pYmdyb3VwL21pYklJLmgpOiBSZS1yZW1vdmUgcmVkdW5kYW50IHByb3RvdHlwZS4KCmRhdmVzIDEwIEphbiAwMCAwMjozMTozOQogICAgLSAoc25tcGxpYi9zbm1wX2FwaS5jKTogRGlmZmVyZW50aWF0ZSBtYXgtcmVwZXRpdGlvbiBhbmQgbm9uLXJlcGVhdGVyIGVycm9ycy4KCmRhdmVzIDEwIEphbiAwMCAwMzowNjo0MgogICAgLSAoYWdlbnQvc25tcF9hZ2VudC5jKTogQ291bnQgbnVtYmVycyBvZiB2YXJpYWJsZXMgcmVxdWVzdGVkL3NldAoKZGF2ZXMgMTAgSmFuIDAwIDA2OjEyOjQwCiAgICAtIChzbm1wbGliL3N5c3RlbS5jKTogUmUtc3RydWN0dXJlIGdldF91cHRpbWUoKSB0byBjYWNoZSBib290IHRpbWUuCgptc2xpZmNhayAxMCBKYW4gMDAgMTM6MTQ6MDMKICAgIEFsbG93IE1TVkMrKyA1LnggdXNlcnMgdG8gYnVpbGQgdXNpbmcgdGhpcyB3b3Jrc3BhY2UuCgptc2xpZmNhayAxMCBKYW4gMDAgMTM6MjE6MzAKICAgIFF1YWxpZnkgdXNlIG9mIHdpdGh2YWwgdG8gZGVmaW5lIGxpYnJhcnkgYW5kIGluY2x1ZGUgc2VhcmNoIHBhdGhzLgoKbWFyeiAxMCBKYW4gMDAgMTQ6MjE6MTQKICAgIENoZWNraW5nIGluIFNOTVAtMy4xLjBiMQoKbWFyeiAxMCBKYW4gMDAgMTQ6MzQ6NTAKICAgICoqKiBlbXB0eSBsb2cgbWVzc2FnZSAqKioKCm1hcnogMTAgSmFuIDAwIDE0OjQwOjA0CiAgICBhZGQgbWlibG9hZAoKaGFyZGFrZXIgMTAgSmFuIDAwIDE1OjM2OjE4CiAgICAtIChtaWJpbmNsLmgpOiBpbmNsdWRlIHN0ZGxpYi5oIGFuZCBtYWxsb2MuaC4KCmhhcmRha2VyIDEwIEphbiAwMCAxNTozNjo0MAogICAgLSAoU3YzY29uZmlnKTogcmVtb3ZlIHRoZSB0cmFpbGluZyBzcGFjZS4KCmhhcmRha2VyIDEwIEphbiAwMCAxNTozODo0NAogICAgLSAoY29uZmlnLmguaW4sIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluKToKICAgICAgLSBtYWtlIC0td2l0aG91dC1lZmVuY2Ugd29yay4KICAgICAgLSBjaGVjayBmb3IgLWxuc2wgbW9yZSBleHBsaWNpdGx5LgoKbXNsaWZjYWsgMTAgSmFuIDAwIDE2OjMwOjUxCiAgICB1Y2REZW1vUHVibGljLmMgLSByZW1vdmUgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMgZnJvbSB3cml0ZSBtZXRob2QuCiAgICBzbm1wX3ZhcnMuYyAgICAgLSBwcm9wZXIgb2lkIGNvbXBhcmU7IG5vIGNvcHkgZnJvbSBzYXZlIGlmIG9pZHMgZXhhY3QgbWF0Y2gKICAgIHNubXBkLmMgICAgICAgICAtIHRlcm1pbmF0ZSBzdGF0ZW1lbnQuCgptc2xpZmNhayAxMCBKYW4gMDAgMTY6MzE6MTYKICAgIHNubXB0cmFuc2xhdGUuMSAgIC0gcmVtb3ZlIGp1bmsgbGluZS4KCm1zbGlmY2FrIDEwIEphbiAwMCAxNjozMTozOAogICAgc25tcHRyYW5zbGF0ZS5jICAtIHNpbXBsZSBkZWZhdWx0IGNhc2UuCgptc2xpZmNhayAxMCBKYW4gMDAgMTY6MzI6MDgKICAgIHNubXBfYXBpLmMgICAgLSBiZXR0ZXIgY29tbWVudCBmb3Igc25tcF9vaWRfY29tcGFyZS4KICAgIHJlYWRfY29uZmlnLmMgLSByZW1vdmUgc2l6ZW9mKHVfY2hhcikgZnJvbSBtYWxsb2Mgc2l6ZSBjYWxjLgogICAgc2NhcGkuaCAgICAgICAtIHNwZWxsIGNoZWNrLgoKbXNsaWZjYWsgMTEgSmFuIDAwIDAxOjMzOjQ1CiAgICBUcm9sbGluZyBmb3IgbWFsbG9jIGVycm9yczsgbW9yZSBncmFjZWZ1bCBkZWdyYWRhdGlvbi4KCm1zbGlmY2FrIDExIEphbiAwMCAwMTo1MzowOAogICAgR2xlYW4gcmVmcyB0byBtaWJJSS5vIGZyb20gdGhpcyBtYWtlZmlsZS4KCm1zbGlmY2FrIDExIEphbiAwMCAwNzo0NDo1MAogICAgQWRkIElOX1VDRF9TTk1QX1NPVVJDRSB0byBub3QgYnJlYWsgV2luMzIgYnVpbGRzLgoKbXNsaWZjYWsgMTEgSmFuIDAwIDA3OjU5OjIzCiAgICBLZWVwIHdpbjMyIHJlbGVhc2UgYnVpbGQgZnJvbSBicmVha2luZy4KCm1zbGlmY2FrIDExIEphbiAwMCAwODoxMDoxMAogICAgSW5pdCBmaWxlIGNvdW50IGF0IHplcm8sIG5vdCBieSBpbmNyZW1lbnRpbmcgcmFuZG9tIHZhbHVlLgoKbXNsaWZjYWsgMTEgSmFuIDAwIDA5OjEzOjM4CiAgICBSZXN0b3JlIG1lbWR1cCB1c2FnZSB0byBpdHMgZm9ybWVyIGx1c3Rlci4KCm1hcnogMTEgSmFuIDAwIDEwOjM3OjIxCiAgICByZW1vdmUgYmFkIHNlc3Npb24gdGVzdCAtIHNlc3Npb24udCBoYXMgaXQgYWxyZWFkeSAtIG5vdGUgdGhlIGNhbGwgdG8gZ2V0aG9zdGJ5bmFtZSBjYW4gaGFuZyBmb3Igc29tZSB0aW1lIGlmIEROUyBpcyBub3Qgc2V0dXAgY29ycmVjdGx5IC0gYW55b25lIGtub3cgYSB3YXkgYXJyb3VuZCB0aGlzPwoKbXNsaWZjYWsgMTEgSmFuIDAwIDE1OjA1OjA5CiAgICBVc2UgQ0ZMQUdTIHdoZW4gbGlua2luZyAoY291bGQgaGF2ZSBwcm9maWxlIHN3aXRjaCwgZXRjKS4KCmhhcmRha2VyIDEyIEphbiAwMCAxMToxNjoyNwogICAgLSAoc25tcHYzLmMpOiBjYXN0IG1hbGxvYyByZXR1cm5zLgoKbXNsaWZjYWsgMTIgSmFuIDAwIDIxOjA5OjQ3CiAgICBVc2UgREVCVUdNU0dPSUQgbGliZXJhbGx5LCByZXBsYWNpbmcgc3ByaW50X29iamlkOyBzbWFsbCBzcGVlZHVwLgoKZGF2ZXMgMTMgSmFuIDAwIDAyOjQ2OjQ3CiAgICAtIChhZ2VudC9zbm1wX3ZhcnMuYyk6IFJlbW92ZSBleHRyYW5lb3VzIGJyYWNrZXQuCgptc2xpZmNhayAxMyBKYW4gMDAgMDU6MzY6MjEKICAgIE5vIGdldF9ib290dGltZSBzdXBwb3J0IGZvciBjeWd3aW4gKHlldCkuIEhvcGVmdWxseSBhIHRlbXBvcmFyeSBjb25kaXRpb24uCgpkYXZlcyAxMyBKYW4gMDAgMDY6MzE6NDQKICAgIC0gKHNubXBsaWIvcGFyc2UuW2NoXSk6IFVubG9hZCBNSUIgbW9kdWxlCiAgICAJKE4uQjogU29tZXdoYXQgc2ltcGxpc3RpYyB3aXRoIHJlZ2FyZCB0byBtdWx0aXBseS1sb2FkZWQgbm9kZXMpCgpkYXZlcyAxMyBKYW4gMDAgMDY6MzM6NDAKICAgIC0gKHNubXBsaWIvcGFyc2UuYyk6IE1vcmUgY29tcGxldGUgaGFuZGxpbmcgb2YgdW5sb2FkaW5nIE1JQiBtb2R1bGVzLgoKbXNsaWZjYWsgMTQgSmFuIDAwIDA5OjMzOjM5CiAgICBTbWFsbCBjb21waWxlIGZpeCBhbmQgZGVidWcgbWVzc2FnZSByZXN0b3JhdGlvbi4KCmhhcmRha2VyIDE0IEphbiAwMCAxMTozNDoyNQogICAgLSAoYnVnLXJlcG9ydCk6IGdyZXAgZm9yIGNvbmZpZ3VyZSBmbGFncwoKaGFyZGFrZXIgMTQgSmFuIDAwIDE2OjA5OjA5CiAgICAtIChzY2FwaS5jKTogaW1wbGVtZW50IERFUyBlbmNyeXB0aW9uLgoKaGFyZGFrZXIgMTQgSmFuIDAwIDE2OjEwOjI5CiAgICAtIChORVdTKTogcmVtb3ZlIGV4cG9ydCBjb250cm9sIG5vdGUgYWJvdXQgREVTLgoKZGF2ZXMgMTcgSmFuIDAwIDA2OjEzOjM5CiAgICAtIChtYW4vc25tcHRyYXBkLjgpOiBEZXNjcmliZSBkZWZhdWx0IGxvZ2dpbmcgYmVoYXZpb3VyLgoKZGF2ZXMgMTcgSmFuIDAwIDA5OjAyOjMyCiAgICAtIChhZ2VudC9zbm1wX3ZhcnMuYyk6IERpc2NhcmQgInRvby1sYXRlIiByZXNwb25zZXMgZnJvbSBvdmVybGFwcGVkIHJlZ2lvbnMuCgptYXJ6IDE3IEphbiAwMCAxMjo0Nzo1OAogICAgYWRkZWQgdjIgdHJhcAoKbWFyeiAxOCBKYW4gMDAgMDc6MDA6MjYKICAgIG1vZGlmaWVkIGZvciB2Mi10cmFwLgoKbWFyeiAxOCBKYW4gMDAgMDc6NTQ6MTIKICAgIGZpeCBlcnJvciBtZXNzYWdlcyBhbmQgcmV0dXJuIHZhbHMgZm9yIHRyYXAgZnVuY3MsIGNsZWFuIHVwIHBkdQoKbXNsaWZjYWsgMTggSmFuIDAwIDA4OjE0OjQyCiAgICBQcmV2ZW50IGFycmF5IGJvdW5kcyBlcnJvciB3aGVuIGNyZWF0aW5nIHNwZWNpZmljIHRyYXAgb2lkLgoKbXNsaWZjYWsgMTggSmFuIDAwIDE0OjIzOjQ0CiAgICBMYXRlc3Qgdm1zdGF0X3NvbGFyaXMyIGZyb20gdGhlIGF1dGhvciBKb2NoZW4gS21pZXRzY2guCgptc2xpZmNhayAxOCBKYW4gMDAgMjE6MjI6MDYKICAgIENsZWFudXAgYXJvdW5kIGlwNl92YXJzLmggaW5jbHVkZSAobm8gI2lmIDApCgptc2xpZmNhayAxOCBKYW4gMDAgMjE6MjU6NTMKICAgIFJlbW92ZSBjb21tZW50ZWQgb3V0IG9iamVjdHMgdGhhdCBhcmUgTUFYLUFDQ0VTUyBub3QtYWNjZXNzaWJsZS4KCm1zbGlmY2FrIDE4IEphbiAwMCAyMToyOTowMQogICAgMS5NYWtlIHNubXBfZ2V0X2RvX2xvZ2dpbmcgdmlzaWJsZSBmcm9tIERMTAogICAgMi5BcHBseSBXaW4zMiBwYXRjaCBmcm9tIFIuU3RvcnkgdG8gYWN0aXZhdGUgbWliIHN0YXRzIG1vZHVsZSAoc25tcF9taWIpLgoKbXNsaWZjYWsgMTggSmFuIDAwIDIxOjM3OjAyCiAgICBDb25zaXN0ZW50IGdldHBhZ2VzaXplIChmaXJzdCBkaXZpZGUgYnkgMTAyNCkuCgpkYXZlcyAyMCBKYW4gMDAgMDQ6MjU6MDUKICAgIC0gKHNubXBsaWIvc25tcF9hcGkuYyk6IFN1cHBvcnQgc2VsZWN0aXZlIGJpbmRpbmcgb2Ygc2VydmVyIGFkZHJlc3Nlcy4KCm1zbGlmY2FrIDIxIEphbiAwMCAwMTo0NjowNAogICAgUmVtb3ZlIHBhcnR5IGNydWQ7IHNwZWxsIGNoZWNrLgoKbXNsaWZjYWsgMjEgSmFuIDAwIDAxOjQ2OjQxCiAgICBBZGQgY29uc3QgdG8gY2xlYW51cCBhIGZldyBzaWduYXR1cmVzLgoKbXNsaWZjYWsgMjEgSmFuIDAwIDAxOjQ5OjM1CiAgICBNaW5pbWl6ZSBkYXRhIGhhbmRsaW5nIGFuZCB1c2UgcmVnaXN0ZXIgdmFyaWFiaWVzIGluCiAgICBzbm1wX29pZF9jb21wYXJlIGFuZCBjb21wYXJlX3RyZWUuCgptYXJ6IDIxIEphbiAwMCAwNzoyNzoxMwogICAgYWRkZWQgdjMgaW5mb3JtCgptYXJ6IDIxIEphbiAwMCAwODowMDoyNwogICAgaW5mb3JtLgoKbWFyeiAyMSBKYW4gMDAgMDg6MTM6MjUKICAgIGluZm9ybQoKbWFyeiAyMSBKYW4gMDAgMTA6NDc6MjQKICAgICoqKiBlbXB0eSBsb2cgbWVzc2FnZSAqKioKCm1zbGlmY2FrIDIxIEphbiAwMCAxMToxOTowOQogICAgY29uZmlnX2FyY2hfcmVxdWlyZSBzb2xhcmlzMiB2ZXJzaW9uIG9mIHZtc3RhdC4KCm5iYSAyMyBKYW4gMDAgMDg6NTE6MzkKICAgIC0gcGFyc2UuYzogYWRkIHNvbWUgbW9yZSBlcnJvciBjaGVja2luZyB0byBnZXRvaWQKCm5iYSAyMyBKYW4gMDAgMTI6NDI6MTEKICAgIC0gcGFyc2UuYzogZml4IG1lcmdpbmcgb2YgYW5vbnltb3VzIG5vZGVzIHdoZW4gdGhleSBhcmUgbmFtZWQKCm5iYSAyMyBKYW4gMDAgMTI6NDM6NTQKICAgIC0gcGFyc2UuYzogZXJyZW5vdXMgPT4gZXJyb25lb3VzCgptYXJ6IDIzIEphbiAwMCAxNjo0MTowNgogICAgaGFuZGxlIGFkZGluZyBPUEFRVUUgdmFycyBmb3Igc2V0dGluZyBhbmQgdHJhcHMgZXRjLgoKZGF2ZXMgMjQgSmFuIDAwIDA3OjIxOjM0CiAgICAtIChleGFtcGxlcy97ZXhhbXBsZSx3b21iYXR9LltjaF0pOgogICAgICAtIENvbnNvbGlkYXRlZCBleGFtcGxlIG1vZHVsZXMgaW50byBvbmUsIGluY2x1ZGluZyBjb25maWcgYW5kIFNFVCBzdXBwb3J0LgoKbWFyeiAyNCBKYW4gMDAgMDg6NTk6MzIKICAgICoqKiBlbXB0eSBsb2cgbWVzc2FnZSAqKioKCm1zbGlmY2FrIDI0IEphbiAwMCAwOTo0NDo0NQogICAgTWFrZSBzdXJlIGtzdGF0X2ZkIGlzIGluaXRpYWxpemVkIGJlZm9yZSBiZWluZyB1c2VkLgoKbXNsaWZjYWsgMjQgSmFuIDAwIDA5OjU1OjMyCiAgICBGaXggQnVnICMxNDQgaXRlbXMgMSwzLDQgOiBjYXNlIGluc2Vuc2l0aXZlIGNoZWNrIGZvciAiYWxsIiBrZXl3b3JkLgoKbXNsaWZjYWsgMjQgSmFuIDAwIDEwOjA1OjEyCiAgICBJdG9qdW4ncyBuZXRic2QgRUxGIHBhdGNoICsgcmVtb3ZlIHdvbWJhdCBbRGF2ZSdzIGV4YW1wbGUgZml4XQoKbXNsaWZjYWsgMjQgSmFuIDAwIDEwOjE0OjU2CiAgICBGaXggcHJpbnRpbmcgSU1QTElFRCBpbmRleCAoZnJvbSBhc3NvY2lhdGUgb2YgSi4gS21pZXRzY2gpIG1vZGlmaWVkIGFuZCBhcHBsaWVkLgoKbWFyeiAyNCBKYW4gMDAgMTA6MzY6NDMKICAgICoqKiBlbXB0eSBsb2cgbWVzc2FnZSAqKioKCm1hcnogMjUgSmFuIDAwIDA2OjQ5OjQzCiAgICBzeW50YXggZm9yIHdpbjMyIGJ1aWxkCgptYXJ6IDI1IEphbiAwMCAxMTo0NzoxMgogICAgYWRkIG1pc3Npbmcgc3luYm9scyBmb3IgcGVybC9TTk1QIG1vZHVsZQoKbWFyeiAyNSBKYW4gMDAgMTI6MDU6NTkKICAgIGFkZGl0aW9uYWwgd2luMzIgaW5zdGFsbCBub3RlcwoKbmJhIDI1IEphbiAwMCAxMzo1Mjo0MgogICAgLSBwYXJzZS5jOiBmaXggYSBtaXNzaW5nIGluaXRpYWxpemF0aW9uIG9mIHRjX2luZGV4CgpoYXJkYWtlciAyNSBKYW4gMDAgMTM6NTU6MzMKICAgIC0gKHZlc3RpbnRlcm5ldHQvZGlza2lvLltjaF0pOiBSYWduYXIgS2pyc3RhZCdzIGRpc2tpbyBtaWIuCgpoYXJkYWtlciAyNSBKYW4gMDAgMTM6NTY6MDIKICAgIC0gKFZFU1QtSU5URVJORVRULU1JQi50eHQpOiBSYWduYXIgS2pyc3RhZCdzIGRpc2tpbyBtaWIuCgpuYmEgMjUgSmFuIDAwIDE0OjEyOjU4CiAgICAtIEhPU1QtUkVTT1VSQ0VTLU1JQi50eHQsIEhPU1QtUkVTT1VSQ0VTLVRZUEVTLnR4dCwgTWFrZWZpbGUuaW46CiAgICAJVXBkYXRlIHRvIHRoZSBjdXJyZW50IGRyYWZ0IEhPU1QtUkVTT1VSQ0VTIChkcmFmdC1vcHMtaG9zdG1pYi0wMSkKCmhhcmRha2VyIDI1IEphbiAwMCAxNDo0Nzo1OQogICAgLSAoY29uZmlndXJlKTogaGVscCB1cGRhdGUKCmhhcmRha2VyIDI1IEphbiAwMCAxNDo1MDo1NgogICAgLSAoc25tcF9hbGFybS4zLCBzbm1wX2FsYXJtLmMpOiBQYXRjaCBmcm9tIEZyYW5rIFN0cmF1c3M6CiAgICAgIC0gZml4IHJlZ2lzdHJhdGlvbiBmdW5jdGlvbiB0byBkbyB3aGF0IGl0IHNheXMgaXQgc2hvdWxkIGRvLgoKbXNsaWZjYWsgMjUgSmFuIDAwIDE5OjMwOjUxCiAgICBMYXJnZXIgYnVmZmVyIGZvciBwcmludF9tb2R1bGVfbmFtZTsgRml4IHBvc3NpYmxlIG51bGwgZGVyZWYgaW4gZ2V0X3RjLgoKbXNsaWZjYWsgMjUgSmFuIDAwIDIxOjQ2OjE0CiAgICBtaWIuYzpwcmludF90cmVlX25vZGUgLSBzaG93IG1vZHVsZSBuYW1lIG9uY2UgaW4gLS0gRlJPTTsKICAgIHBhcnNlLmM6IHNob3cgIkNhbm5vdCBmaW5kIG1vZHVsZSIgb25jZSBwZXIgbWlzc2luZyBtb2R1bGUuCgptc2xpZmNhayAyNiBKYW4gMDAgMDc6MTQ6NTAKICAgIGZpeCBjb21waWxlIGVycm9yIHdoZW4gLS13aXRob3V0LXJvb3QtYWNjZXNzIGlzIHVzZWQgKHN0cmF1c3NAaWJyLmNzLnR1LWJzLmRlKQoKbXNsaWZjYWsgMjYgSmFuIDAwIDA3OjI2OjIyCiAgICBBY2tub3dsZWRnZSBtb3JlIGNvbnRyaWJ1dG9ycy4KCmhhcmRha2VyIDI2IEphbiAwMCAxMDoyNDoyMQogICAgLSAoZ2V0VmFsdWVzLnBtKSBnZXRWYWx1ZXMucG0gd2FzIG5vdGVkIG1pc3NpbmcKCmhhcmRha2VyIDI2IEphbiAwMCAxNToyOTo1NAogICAgLSAoVUNELURJU0tJTy1NSUIuaW5jLCBVQ0QtRElTS0lPLU1JQi50eHQsIFZFU1QtSU5URVJORVRULU1JQi50eHQpOgogICAgICBQYXRjaCBmcm9tIEp1ZXJnZW4gU2Nob2Vud2FlbGRlcjoKICAgICAgLSBmaXggdGhlIGRpc2tpbyBtaWIsIGNvbnZlcnQgdG8gU01JdjIsIGFuZCBtb3ZlIHRvIHVjZEV4cGVyaW1lbnRhbC4KCmhhcmRha2VyIDI2IEphbiAwMCAxNTozMDo0MgogICAgLSAoVUNELURMTU9ELU1JQi50eHQpOiBQYXRjaCBmcm9tIEp1ZXJnZW4gU2Nob2Vud2FlbGRlcjoKICAgICAgLSBwcmVmaXggb2lkIHdpdGggInVjZCIuCgpoYXJkYWtlciAyNiBKYW4gMDAgMTU6MzE6MDAKICAgIC0gKFVDRC1JUEZJTFRFUi1NSUIudHh0KTogUGF0Y2ggZnJvbSBKdWVyZ2VuIFNjaG9lbndhZWxkZXI6CiAgICAgIC0gcHJlZml4IG9pZHMgd2l0aCAidWNkIi4KCmhhcmRha2VyIDI2IEphbiAwMCAxNTozMjoyNQogICAgLSAoVUNELVNOTVAtTUlCLnR4dCk6IFBhdGNoIGZyb20gSnVlcmdlbiBTY2hvZW53YWVsZGVyOgogICAgICAtIGNsZWFuIHVwIGFuZCByZWZvcm1hdCBzdWItcmVnaXN0cmF0aW9uIGNvbW1lbnRzLgoKaGFyZGFrZXIgMjYgSmFuIDAwIDE1OjM0OjIwCiAgICAtIChVQ0QtREVNTy1NSUIudHh0LCBVQ0QtRElTS0lPLU1JQi50eHQsIFVDRC1ETE1PRC1NSUIudHh0LAogICAgICBVQ0QtSVBGSUxURVItTUlCLnR4dCwgVUNELUlQRldBQ0MtTUlCLnR4dCwgVUNELVNOTVAtTUlCLnR4dCk6CiAgICAgIC0gY29ycmVjdCB1Y2Qtc25tcC1jb2RlcnMgZW1haWwgYWRkcmVzcyB0byByZXBsYWNlICJlY2UiIHdpdGggInVjZC1zbm1wIi4KCmhhcmRha2VyIDI2IEphbiAwMCAxNjowNjozMQogICAgLSAoYWdlbnRfdHJhcC5jLCBhZ2VudF90cmFwLmgsIHNubXBkLmNvbmYuNS5kZWYpOiBQYXRjaCBmcm9tIEZyYW5rIFN0cmF1c3M6CiAgICAgIC0gYWRkIGFiaWxpdHkgdG8gYWxsb3cgc2VuZGluZyB0cmFwcyB0byBwb3J0cyBvdGhlciB0aGFuIDE2Mi4KCmhhcmRha2VyIDI2IEphbiAwMCAxNjoyODoyMgogICAgLSAoTWFrZWZpbGUuaW4sIE1ha2VmaWxlLmluLCBNYWtlZmlsZS5pbiwgTWFrZWZpbGUuaW4pOgogICAgICAtIG1ha2UgZGVwZW5kLgoKaGFyZGFrZXIgMjYgSmFuIDAwIDE2OjUzOjQxCiAgICAtIChzbm1wdjMuYyk6IGZpeCBwcml2IGtleSBsZW5ndGggZXh0cmFwb2xhdGlvbi4gIFNob3VsZCBiZSBkb25lIGRpZmZlcmVudGx5Py4KCmhhcmRha2VyIDI2IEphbiAwMCAxNjo1NDo0MwogICAgLSAoU3YzREVTY29uZmlnLCBUMDIzc25tcHYzZ2V0TUQ1REVTKTogZml4IERFUyB0ZXN0IHNvIGl0IHdvcmtzLgoKaGFyZGFrZXIgMjYgSmFuIDAwIDE3OjE1OjA3CiAgICAtIChzbm1wY21kLjEsIHNubXB0cmFwZC5jb25mLjUuZGVmLCBzbm1wdXNtLjEpOgogICAgIC0gYmFkbHkgZG9uZSB1cGRhdGVzLgoKaGFyZGFrZXIgMjYgSmFuIDAwIDE3OjE4OjE3CiAgICAtICh2ZXJzaW9uLmggYnVnLXJlcG9ydCBzZWRzY3JpcHQuaW4pOiB2ZXJzaW9uIHRhZyAoIDQuMS5wcmUyICkKCmhhcmRha2VyIDI2IEphbiAwMCAxNzozMjo0MQogICAgLSAoY29uZmlndXJlLCBjb25maWd1cmUuaW4pOiBhbGxvdyAnLCcgc2VwZXJhdGVkIC0td2l0aC0qLW1vZHVsZXMgZmxhZyB2YWx1ZXMuCgpoYXJkYWtlciAyNiBKYW4gMDAgMTk6MjI6NTMKICAgIC0gKGNvbmZpZ3VyZSwgY29uZmlndXJlLmluKTogY29tbWEsIGNvbW1hLCBjb21tYSwgY29tbWEsIGNvbW1hLWNoYW1lbGVvbi4KCmhhcmRha2VyIDI3IEphbiAwMCAwODozMzo0MwogICAgLSAoZGVmYXVsdF9zdG9yZS5jKTogbWFrZSBjb25maWcgcGFyc2VyIGhhbmRsZSAiIiAobnVsbCkgcGFyc2VkIHN0cmluZ3MuCgptYXJ6IDI3IEphbiAwMCAxMToxNDowOQogICAgcmVtb3ZlIG5vLW9wIHNubXBfc3luY2hfc2V0dXAKCm1zbGlmY2FrIDI3IEphbiAwMCAxNDo1MTozOQogICAgIDEuIEZpeCBtZW1vcnkgbGVhayB3aGVuIGFub255bW91c2x5IG5hbWVkIG5vZGVzIGFyZSB1c2VkLgogICAgIDIuIEhhY2sgYXJvdW5kIHNtaWNuZydzICJTTUkgIiBzdGF0ZW1lbnRzIHRvIHByZXZlbnQgb3RoZXIgbWVtb3J5IGxlYWtzLgoKbXNsaWZjYWsgMjcgSmFuIDAwIDE2OjEzOjU4CiAgICBSZW1vdmUgaGFjayBhcm91bmQgIlNNSSIgdG9rZW47IGtlZXAgdGhlIGdvb2QgcGFydCBvZiB0aGUgcHJldmlvdXMgcGF0Y2guCgptc2xpZmNhayAyOCBKYW4gMDAgMDc6MTg6MDkKICAgIFNvbWUgdmFyaWFibGUgcmVuYW1pbmcgZm9yIGNvbnNpc3RlbmN5LCBlcnJvciBjaGVja2luZwogICAgaW1wcm92ZWQsIG1pc3Npbmcgc3RyaW5nLmggaW5jbHVkZWQuICBQYXRjaCBzdXBwbGllZCBieSBhdXRob3IuCgptc2xpZmNhayAyOCBKYW4gMDAgMTI6MzA6MjAKICAgIEZpeCBzcGVsbCBMSVRUTEVfRU5ESUFOLiBUaGFua3MgdG8gdGFsbWFuQGhpdHQubmwuCgptc2xpZmNhayAyOCBKYW4gMDAgMTI6Mzg6MjIKICAgIENoYW5nZSBhZ2VudHhfe2J1aWxkLHBhcnNlfV9zaG9ydCAuIFRoYW5rcyB0byBHZXJhcmQgVGFsbWFuQGhpdHQubmwuCgptc2xpZmNhayAyOCBKYW4gMDAgMTI6NTI6MjUKICAgIFRoaXMgd2l0aCBwcmV2aW91cyB0d28gY2hhbmdlcyBjb21wbGV0ZXMgYSBwYXRjaCBmb3IgaXRlbXMgMiwzLDQKICAgIGZvciBidWcgIzE0OS4KCm5iYSAzMCBKYW4gMDAgMDM6MDE6NTIKICAgIC0gaG9zdC5oOiBjb25maWdfcmVxdWlyZV9taWIoSE9TVC1SRVNPVVJDRVMtVFlQRVMpCgpuYmEgMzAgSmFuIDAwIDAzOjA0OjIyCiAgICAtIGhyX2Rpc2suYzogY29udmVydCB0byAxayBibG9ja3MKCm5iYSAzMCBKYW4gMDAgMDM6MDk6MzgKICAgIC0gaHJfc3RvcmFnZS5jOiBjb252ZXJ0IGZyb20gcGFnZXMgdG8gMWsgYmxvY2tzCgpuYmEgMzAgSmFuIDAwIDAzOjExOjI4CiAgICAtIGlmLmM6IGRlZmVuc2l2ZSB0ZXN0IGZvciBtaXNzaW5nIG9iamVjdHMgKGl0IG1pZ2h0IGZhaWwgdG8gc2hvdwogICAgCWRvd24gc3RhdHVzIHByb3Blcmx5KQoKbWFyeiAzMCBKYW4gMDAgMDg6MTk6MzQKICAgIGNyZWF0ZSBWMyB1c2VyIGVudHJ5LCBjbGVhbnVwCgptYXJ6IDMwIEphbiAwMCAxMDo0MjozNgogICAgY2xlYW4gdXAgYmVmb3JlIHJlbGVhc2UgLSB1cGRhdGUgdmVyc2lvbiwgcmVsZWFzZSBub3RlcwogICAgCiAgICBOb3RlOiBLTk9XTiBCVUdTCiAgICB0aGUgbmV3IHF1b3RlZCBPQ1RFVFNUUiBpbnN0YW5jZSBpZGVudGlmaWVycyByZXR1cm5lZCBieSBnZXRfc3ltYm9sCiAgICBhcmUgbm90IGNvbXBhdGlibGUgd2l0aCB0aGUgcGVybC9TTk1QIG1vZHVsZSAoX19nZXRfbGFiZWxfaWlkKQoKbWFyeiAzMCBKYW4gMDAgMTA6NDQ6MzcKICAgIGNsZWFuIHVwIGJlZm9yZSByZWxlYXNlIC0gdXBkYXRlIHZlcnNpb24sIHJlbGVhc2Ugbm90ZXMKICAgIAogICAgTm90ZTogS05PV04gQlVHUwogICAgdGhlIG5ldyBxdW90ZWQgT0NURVRTVFIgaW5zdGFuY2UgaWRlbnRpZmllcnMgcmV0dXJuZWQgYnkgZ2V0X3N5bWJvbAogICAgYXJlIG5vdCBjb21wYXRpYmxlIHdpdGggdGhlIHBlcmwvU05NUCBtb2R1bGUgKF9fZ2V0X2xhYmVsX2lpZCkKICAgIAogICAgbm90IHN1cmUgdGhhdCB0aGlzIGV2ZXIgd29ya2VkIC0gd2lsbCBoYXZlIHRvIGxvb2sgYXQgb2xkIE9DVEVUU1RSCiAgICBiZWhhdmlvdXIgYW5kIHNlZSBob3cgdG8gcmVjcmVhdGUgaXQKCm1hcnogMzAgSmFuIDAwIDEwOjU4OjAyCiAgICBjbGVhbiB1cCBiZWZvcmUgcmVsZWFzZSAtIHVwZGF0ZSB2ZXJzaW9uLCByZWxlYXNlIG5vdGVzIGV0Yy4KCmRhdmVzIDMxIEphbiAwMCAwMTowNToxNgogICAgLSAoYWdlbnQvYWdlbnRfcmVnaXN0cnkuaCk6IExvZyBmYWlsZWQgTUlCIHJlZ2lzdHJhdGlvbnMuCgpkYXZlcyAzMSBKYW4gMDAgMDE6NDU6MTUKICAgIC0gKGFnZW50L2FnZW50X3RyYXAuYyk6IEluY2x1ZGUgaW5zdGFuY2Ugc3ViaWRlbnRpZmllciBpbiBzbm1wVHJhcE9JRCBhbmQKICAgIAlzbm1wVHJhcEVudGVycHJpc2UgT0lEIGRlZmluaXRpb25zLiAgKFRoYW5rcyB0byBHZXJhcmQgVGFsbWFuKQoKZGF2ZXMgMzEgSmFuIDAwIDAyOjQwOjAyCiAgICAtIChzbm1wbGliL3NubXBfYXBpLltjaF0pOiBSZXN0b3JlIHRyYWRpdGlvbmFsIHNvY2tldCBmaWVsZCBuYW1lcy4KCmRhdmVzIDMxIEphbiAwMCAwMzowMDoxNgogICAgLSAoc25tcGxpYi9zbm1wX2FwaS5oKTogQWx0ZXJuYXRpdmUgYXBwcm9hY2ggdG8gSXJpeCBzb2NrZXQgaGFuZGxpbmcuCgpkYXZlcyAzMSBKYW4gMDAgMDM6MDM6MTUKICAgIC0gKGFjY29uZmlnLmggY29uZmlnLmguaW4gY29uZmlndXJlLmluIGNvbmZpZ3VyZSk6CiAgICAgIC0gQXR0ZW1wdCB0byBkZXRlY3Qgbm9uLXRyYWRpdGlvbmFsIHNvY2tldCBhZGRyZXNzIHN0cnVjdHVyZSAob24gSXJpeCA2LngpLgoKZGF2ZXMgMzEgSmFuIDAwIDAzOjE0OjUwCiAgICAtIChzbm1wbGliL3NubXBfYXBpLmMpOiBJbml0aWFsaXplIGFkZHJsZW4gaW4gX3Nlc3NfcmVhZCgpLiAgKEZyYW5rIFN0cmF1c3MpCgpkYXZlcyAzMSBKYW4gMDAgMDM6NDE6MDgKICAgIC0gKEFHRU5ULnR4dCk6IFJldmlzZWQgYW5kIHVwZGF0ZWQgdmVyc2lvbi4KCmRhdmVzIDMxIEphbiAwMCAwNzo0OTo1MAogICAgLSAoYWNjb25maWcuaCBjb25maWcuaC5pbiBjb25maWd1cmUuaW4gY29uZmlndXJlKToKICAgICAgLSBJbXByb3ZlZCBjaGVja2luZyBmb3IgSXJpeC1zdHlsZSBzb2NrZXQgYWRkcmVzcyBzdHJ1Y3R1cmUuCgpkYXZlcyAzMSBKYW4gMDAgMDc6NTE6NTQKICAgIC0gKHNubXBsaWIvc25tcF9hcGkuaCk6IEF0dGVtcHQgdG8gbWltaWMgSXJpeC1zdHlsZSBzb2NrZXQgYWRkcmVzcyBzdHJ1Y3R1cmUuCgpkYXZlcyAzMSBKYW4gMDAgMDc6NTM6NTIKICAgIC0gKHNubXBsaWIvYXNuMS5jIHNubXBsaWIvc25tcC5jIHNubXBsaWIvc25tcF9hcGkuYyBzbm1wbGliL3NubXB1c20uYyk6CiAgICAgIC0gRG9uJ3QgYXNzdW1lIHNpemVfdCBpcyBzaWduZWQgKFBla2thIEt5dG9sYWFrc28pCgpkYXZlcyAzMSBKYW4gMDAgMDc6NTU6MDYKICAgIC0gKHNubXBsaWIvc25tcHYzLltjaF0pOiBEb24ndCBhc3N1bWUgc2l6ZV90IGlzIHNpZ25lZCAoUGVra2EgS3l0b2xhYWtzbykKICAgICAgLSBOLkI6IFRoaXMgY2hhbmdlcyB0aGUgaW50ZXJmYWNlIG9mIHNubXB2M19nZW5lcmF0ZV9lbmdpbmVJRCgpIHNsaWdodGx5LgoKZGF2ZXMgMzEgSmFuIDAwIDA3OjU2OjM4CiAgICAtIChhcHBzL3NubXB0ZXN0LmMpOiBEb24ndCBhc3N1bWUgc2l6ZV90IGlzIHNpZ25lZCAoUGVra2EgS3l0b2xhYWtzbykKCmRhdmVzIDMxIEphbiAwMCAwNzo1Nzo1NgogICAgLSAobWliZ3JvdXAvZXhhbXBsZXMvZXhhbXBsZS5bY2hdKToKICAgICAgLSBQcm92aWRlIGFuIGV4YW1wbGUgZm9yIGhvdyB0byB0cmlnZ2VyIGEgdHJhcC4KCm1hcnogMzEgSmFuIDAwIDEwOjQxOjE2CiAgICBzZXQgRFNfTElCX0RPTlRfQlJFQUtET1dOX09JRFMgdG8gZ2V0IHByZXZpb3Vsc3kgcmVsZWFzZWQgYmVoYXZpb3VyIG9mIGdldF9zeW1ib2wgd3J0IG9jdGV0IGJhc2VkIGluc3RhbmNlIGlkcyAoaS5lLiwgbm8gZG91YmxlLXF1b3RpbmcpCgpkYXZlcyAgMSBGZWIgMDAgMDE6NDk6NTUKICAgIC0gKGFjY29uZmlnLmggY29uZmlnLmguaW4gY29uZmlndXJlLmluIGNvbmZpZ3VyZSBzbm1wbGliL3NubXBfYXBpLmgpOgogICAgICAtIEZpeCBicm9rZW4gc2V0dGluZyBvZiBzb2NrZXQgYWRkcmVzcyBzdHJ1Y3R1cmUgY2hvaWNlLgoKZGF2ZXMgIDEgRmViIDAwIDAzOjM3OjI1CiAgICAtIChhZ2VudHgvbWFzdGVyX3JlcXVlc3QuYyk6IEZpeCBzZXNzaW9uIElEIGhhbmRsaW5nIHdoZW4gZGVsZWdhdGluZyByZXF1ZXN0cy4KCmRhdmVzICAxIEZlYiAwMCAwNDoxOToxNgogICAgLSAoY29uZmlndXJlLmluIGNvbmZpZ3VyZSk6IENhdGNoIGNvbW1vbiBpbnZhbGlkIGNvbmZpZ3VyZSBvcHRpb25zLgoKZGF2ZXMgIDEgRmViIDAwIDA1OjI3OjAzCiAgICAtIChGQVEpOiBFeHBhbmQgdGhlIGRlc2NyaXB0aW9uIG9mIGdlbmVyYXRpbmcgdHJhcHMgZnJvbSB0aGUgYWdlbnQgc2xpZ2h0bHkuCgpoYXJkYWtlciAgMSBGZWIgMDAgMDg6MzI6MDMKICAgIC0gKGRpc2tpby4qKTogbW92ZWQgdG8gdGhlIHVjZC1zbm1wIGRpcmVjdG9yeQoKaGFyZGFrZXIgIDEgRmViIDAwIDA4OjM0OjA5CiAgICAtIChkaXNraW8uaCk6IGxvYWQgdGhlIG1pYi4KCmhhcmRha2VyICAxIEZlYiAwMCAwODozNDoyNAogICAgLSAoZGlza2lvLmMpOiBtb3ZlIHRvIHVjZEV4cGVyaW1lbnRhbC4xNS4KCmhhcmRha2VyICAxIEZlYiAwMCAwODo0MzowMwogICAgLSAoTkVXUyk6IHVwZGF0ZSAoYWdhaW4pLgoKaGFyZGFrZXIgIDEgRmViIDAwIDA4OjQ1OjQxCiAgICAtIChzbm1wY21kLjEpOiAuUFAgLT4gLklQIGZvciAtT2IuCgpoYXJkYWtlciAgMSBGZWIgMDAgMDg6NDY6MDcKICAgIC0gKHNubXB1c20uMSk6IGNoYW5nZWQgY29udGV4dCBzdHJpbmcgaW4gZXhhbXBsZXMgdG8gIiIuCgptc2xpZmNhayAgMSBGZWIgMDAgMTE6MjY6MzYKICAgIEZpeHVwIG1vcmUgc2lnbmVkL3Vuc2lnbmVkIGNvbXBhcmlzb25zLgoKZGF2ZXMgIDIgRmViIDAwIDAxOjEyOjM3CiAgICAtIChob3N0L2hyX2Rpc2suYyk6IEZpeCBzb2xhcmlzIGluaXRpYWxpc2F0aW9uLCBwbHVzIGV4dHJhIGRlYnVnZ2luZyBpbmZvLgoKbXNsaWZjYWsgIDIgRmViIDAwIDA0OjQ0OjIzCiAgICBSZW1vdmUgZGVwZW5kZW5jaWVzIG9uIChtb3ZlZCkgdmVzdGludGVybmV0dC9kaXNraW8KCm5iYSAgMiBGZWIgMDAgMDY6NDQ6MzEKICAgIC0gc29sYXJpczIuOC5oOiBTb2xhcmlzIDggc2VlbXMgY2xvc2UgdG8gU29sYXJpcyA3CgpuYmEgIDIgRmViIDAwIDA2OjQ1OjI1CiAgICAtIGhyX2Rpc2suYzogYWRkIE5ldEJTRCBzdXBwb3J0CgpoYXJkYWtlciAgMiBGZWIgMDAgMDc6MTc6MjgKICAgIC0gKGNvbmZpZ3VyZSwgY29uZmlndXJlLmluKTogdXBkYXRlZCAtLWhlbHAKCmRhdmVzICAyIEZlYiAwMCAwODowMjo0NgogICAgLSAoYWdlbnQvc25tcF92YXJzLmMpOiBDb3JyZWN0bHkgaGFuZGxlIGluZGl2aWR1YWxseSBleGNsdWRlZCBpbnN0YW5jZXMKCm1zbGlmY2FrICAyIEZlYiAwMCAwODo0MjoxNwogICAgQWxsb3cgLUNvIHRvIGFmZmVjdCB0aGUgb3V0Y29tZS4KCm1zbGlmY2FrICAyIEZlYiAwMCAwODo1Mjo0MwogICAgZml4IHRoZSBmYXQtZmluZ2VyaW5nIHBhdGNoIEkganVzdCBtYWRlLiBmZWguCgpoYXJkYWtlciAgMiBGZWIgMDAgMTA6NTI6MzMKICAgIC0gKHNtdXguYyk6IFBhdGNoIGZyb20gUm9iZXJ0IE1pbGVzOgogICAgICAtIHZhcmlvdXMgZml4ZXM6CiAgICAgICAgMSkgVGhlIGZpcnN0IHJlZ2lzdHJhdGlvbiByZXF1ZXN0IGNvdWxkIGJlIGxvc3QuCiAgICAgICAgMikgUmVnaXN0cmF0aW9uIGRlbGV0ZSByZXF1ZXN0cyBuZXZlciByZWNlaXZlZCBhIHJlc3BvbnNlLgogICAgICAgIDMpIFJlZ2lzdHJhdGlvbiBkZWxldGUgcmVxdWVzdHMgd2VyZSBub3QgZmluZGluZyB0aGUgcmVnaXN0cmF0aW9uIHdoZW4gdGhlCiAgICAgICAgICAgZGVsZXRlJ3MgcHJpb3JpdHkgd2FzIHNldCB0byAtMS4KICAgICAgICA0KSBOb24temVybyB2YWx1ZXMgd2VyZSBub3QgYmVpbmcgZW5jb2RlZCBwcm9wZXJseSBpbiByZWdpc3RyYXRpb24KICAgICAgICAgICByZXNwb25zZXMuCgptYXJ6ICAyIEZlYiAwMCAxNDoxODowOQogICAgYWRkIGluc3RydWN0aW9ucyBmb3IgYnVpbGRpbmcgdy8gT3BlblNTTCBvbiBWQysrCgptc2xpZmNhayAgMiBGZWIgMDAgMTQ6MTg6MjIKICAgIExldCBoclByb2Nlc3NvckxvYWQgb3V0IG9mIHRoZSBnZW5pZSdzIGJvdHRsZS4KCm1zbGlmY2FrICAyIEZlYiAwMCAxNjoyNDoxNQogICAgVG91Y2h1cCBmb3IgYnVpbGRpbmcgbW9yZSBNSUIgbW9kdWxlcyBpbiBXaW4zMiAoTVNWQykuCgptc2xpZmNhayAgMiBGZWIgMDAgMTY6MzY6MjEKICAgIFRvdWNodXAgdG8gYnVpbGQgbW9yZSBNSUIgbW9kdWxlcyBvbiBXaW4zMi4KCmRhdmVzICAzIEZlYiAwMCAwMTozNToxMgogICAgLSAoRkFRKTogRG9jdW1lbnQgY2hhbmdlcyB0byBhY2Nlc3MgY29udHJvbCBzdHVmZi4KCm1zbGlmY2FrICAzIEZlYiAwMCAwNDoxMjo1NwogICAgVW5kbyB1bmluZm9ybWVkIGNoYW5nZSA6IGxvYWQgYXZlcmFnZSAhPSBhdmVyYWdlIHRpbWUgdGhhdCBDUFUgaXMgaWRsZS4KCm1zbGlmY2FrICAzIEZlYiAwMCAwNjo0MzoxMAogICAgaW5jbHVkZSBtaWJfbW9kdWxlX2NvbmZpZy5oIHRvIG1ha2UgdGhlIFVTSU5HXyBjb25zdGFudHMgdmlzaWJsZS4KCm1hcnogIDMgRmViIDAwIDA5OjQ0OjM3CiAgICB1cGRhdGUgbXkgZW1haWwKCm1zbGlmY2FrICAzIEZlYiAwMCAwOTo1Njo0OAogICAgSW5jbHVkZSBtaWJfbW9kdWxlX2NvbmZpZy5oIGZyb20gbWliaW5jbC5oLCBub3QgdG9wIGxldmVsIGNvbmZpZy5oLgoKbWFyeiAgMyBGZWIgMDAgMTA6NDg6MzcKICAgIGFkZCAtdSBQSURGSUxFIHRvIHNubXB0cmFwZCwgbm93IHdlIG5lZWQgLWMgLUMgOiksIGJ0dyBpcyB0aGUgdmFsdWUgb2Ygb3B0YXJnIHJlbGlhYmxlIGFmdGVyIGdldG9wdCBoYXMgYmVlbiBjYWxsZWQgYWdhaW4uLi5pdCBzZWVtcyB0byB3b3JrCgptc2xpZmNhayAgMyBGZWIgMDAgMTI6NTc6MjAKICAgIFJlbW92ZSBET1Mtc3R5bGUgbGluZSB0ZXJtaW5hdGlvbiAoQ1ItTEYgLS0+IExGKS4KICAgIGxpYnNubXAuZGVmIC0gcmVtb3ZlIHVubmVlZGVkIGNvbW1lbnQgYWJvdXQgb2Jzb2xldGUgdjJwYXJ0eS4KCm1zbGlmY2FrICAzIEZlYiAwMCAxMjo1ODoyNwogICAgTm90ZSB0aGUgd29tYmF0IGlzIHJlcGxhY2VkIGJ5IGV4YW1wbGUgaW4gbW9yZSBwbGFjZXMuCgptc2xpZmNhayAgMyBGZWIgMDAgMTM6Mjg6MzEKICAgIEZvbGxvdyBjb25kaXRpb24gSEFWRV9HRVRQSUQgZm9yIHBpZF9maWxlIG9iamVjdC4KCmhhcmRha2VyICAzIEZlYiAwMCAxNDoyOToxOQogICAgLSAoZHVtbXkvKik6IHJlbW92ZWQsIHVzZSBleGFtcGxlIGluc3RlYWQuCgpoYXJkYWtlciAgMyBGZWIgMDAgMTQ6NDQ6MzMKICAgIC0gKHN1YmFnZW50LmMpOiBpbmNsdWRlIG1pYl9tb2R1bGVfY29uZmlnLmguCgpoYXJkYWtlciAgMyBGZWIgMDAgMTQ6NDY6MTAKICAgIC0gKHN1YmFnZW50LmMpOiBwcm90ZWN0IHN5c09SVGFibGUgY2FsbGJhY2tzIHdpdGggI2lmZGVmcy4KCmhhcmRha2VyICAzIEZlYiAwMCAxNDo1MTo0MAogICAgLSAoUkVBRE1FKTogcmVtb3ZlIGR1bW15IHJlZmVyZW5jZS4KCm5iYSAgMyBGZWIgMDAgMjM6NTc6NDkKICAgIC0gYWdlbnQvcmVnaXN0cnkuYywgYWdlbnRfdHJhcC5jLCBjbGllbnQuYzogY2hhbmdlIHNvbWUgdHlwZSBjYXN0cyBmcm9tCiAgICAJKGNoYXIgKikgdG8gKHVfY2hhciAqKSB0b3Agc2lsZW5jZSBzb21lIHdhcm5pbmdzLgoKbmJhICAzIEZlYiAwMCAyMzo1OTo1NwogICAgLSBtdF9zdXBwb3J0Lmg6IGFub3RoZXIgd2F5IG9mIGRvaW5nIG5vdGhpbmcsIG5vdCBnaXZpbmcgYSAibnVsbCBlZmZlY3QiCiAgICAJd2FybmluZyBmcm9tIGdjYy4KCm5iYSAgNCBGZWIgMDAgMDA6MTY6MDEKICAgIC0gcmVhZF9jb25maWcuYywgbWliLmM6IGZpeCBzb21lIFBBVEggc2VwYXJhdG9ycyBmcm9tIGNvbnN0YW50IDogdG8KICAgIAlFTlZfU0VQQVJBVE9Se19DSEFSfQoKbmJhICA0IEZlYiAwMCAwMDoxNzo0OAogICAgLSBocl9kaXNrLmM6IEEgbGl0dGxlIGNsZWFudXAgb2YgdGhlIGRpc2sgZGV2aWNlIGRlZmluaXRpb25zLCBhbHNvIGFkZGluZwogICAgCVNDU0kgdG8gRnJlZUJTRCAzCgpuYmEgIDQgRmViIDAwIDAxOjIwOjU1CiAgICAtIHZhY21fdmFycy5jOiBzbGlnaHQgcmV3b3JkaW5nIG9mIHdhcm5pbmcgbWVzc2FnZQoKbmJhICA0IEZlYiAwMCAwNDowMDoyNwogICAgLSBocl9kaXNrLmM6IHJlYWxseSBkbyB0aGF0IEZyZUJTRCBzY3NpIHRoaW5nCgptYXJ6ICA0IEZlYiAwMCAwNjo0NDoyNAogICAgIGhhdmUgbWliIGxvYWRpbmcgYXBpIHJldHVybiByZXN1bHQgY29kZXMKCm1hcnogIDQgRmViIDAwIDA4OjU1OjQyCiAgICBhZGQgZGVmYXVsdHMgZm9yIHYyIHRyYXAgcGFyYW1zCgpoYXJkYWtlciAgNCBGZWIgMDAgMTI6MDE6MzIKICAgIC0gKGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBNYWtlZmlsZS5pbik6IGZpbmQsIGxvY2F0ZSwgYW5kIHVzZSBwZXJsIGlmIGZvdW5kLgoKaGFyZGFrZXIgIDQgRmViIDAwIDEyOjQ3OjI2CiAgICAtIChzbm1wX2FwaS5jLCBzbm1wX2FwaS5oLCBzbm1wdjMuYyk6IHByb3ZpZGUgdjMgZGVmYXVsdHMuCgpoYXJkYWtlciAgNCBGZWIgMDAgMTM6MTI6MTgKICAgIC0gKHJlYWRfY29uZmlnLmMpOiBkb24ndCBwcmludCBmYWlsZWQgYWNjZXNzIGVycm9ycyAoRUFDQ0VTKS4KCmhhcmRha2VyICA0IEZlYiAwMCAxMzoxNTo1MQogICAgLSAoTWFrZWZpbGUuaW4sIE1ha2VmaWxlLmluLCBNYWtlZmlsZS5pbiwgTWFrZWZpbGUuaW4sIE1ha2VmaWxlLmluLAogICAgICBNYWtlZmlsZS5pbik6IGZpbmFsIG1ha2UgZGVwZW5kLgoKaGFyZGFrZXIgIDQgRmViIDAwIDEzOjUwOjE1CiAgICAtIChhZ2VudF9yZWFkX2NvbmZpZy5jKTogZG9uJ3QgcmVhZCB0aGUgb3B0IGNvbmZpZyBmaWxlIG9yIGNhbGwKICAgICAgcG9zdF9jb25maWcgY2FsbGJhY2tzLCBzaW5jZSB0aGUgbGlicmFyeSB0YWtlcyBjYXJlIG9mIHRoYXQgbm93LgoKbWFyeiAgNCBGZWIgMDAgMTM6NTI6MDgKICAgIHVwZGF0ZXMgZm9yIHBlcmwvU05NUCBidWlsZAoKaGFyZGFrZXIgIDQgRmViIDAwIDEzOjU2OjE5CiAgICAtIChzbm1wdHJhcGQuYyk6CiAgICAgIC0gaW1wbGVtZW50IC1jIGFuZCAtQyBmbGFncyBmb3IgSm9lLgogICAgICAtIHJlZGlkIHRoZSBpbml0IHN0cnVjdHVyZSB0byBtYWtlIGl0IGxvb2sgbW9yZSBsaWtlIHRoZSBjdXJyZW50IGFnZW50LgoKaGFyZGFrZXIgIDQgRmViIDAwIDE0OjAxOjMwCiAgICAtIChzbm1wdHJhcGQuOCk6IGRvY3VtZW50IC1jIGFuZCAtQy4KCm1hcnogIDQgRmViIDAwIDE1OjIxOjQxCiAgICBidWlsZCBmaXhlcyBhbmQgdGVzdCBlbmhhbmNlbWVudHMKCm1hcnogIDQgRmViIDAwIDE1OjQ0OjQ0CiAgICB1cGRhdGVzIGZvciBwZXJsL1NOTVAgYnVpbGQKCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCkNoYW5nZXM6IFY0LjAgLT4gVjQuMC4xCgpoYXJkYWtlciAyMyBBdWcgOTkgMTY6NDQ6MjcKICAgIC0gKE1ha2VmaWxlLmluKTogaW5zdGFsbCB0aGUgc25tcHVzbS4xIG1hbnVhbCBwYWdlLgoKbXNsaWZjYWsgMjQgQXVnIDk5IDA0OjQ0OjQ3CiAgICBDbGVhbiBDUnMgZnJvbSByZWFkX2NvbmZpZyxzbm1wX2xvZ2dpbmc7IGNvbW1lbnQgZGVmaW5lIFVTRV9BU05fU0hPUlRfTEVOLgoKbXNsaWZjYWsgMjQgQXVnIDk5IDA1OjExOjEzCiAgICBSZW1vdmUgQVNOX1NIT1JUX0xFTiBoYWNrIC0ga25vd24gdG8gZHVtcCBjb3JlIGluIGFnZW50LgoKbXNsaWZjYWsgMjQgQXVnIDk5IDA2OjE5OjQ5CiAgICBBZGQgIi4iIHRvIFBBVEggZm9yIFJVTlRFU1RTOyBEcm9wIG9wdHJlc2V0IHRvIGJ1aWxkIG1vc3QgcGxhdGZvcm1zCgptc2xpZmNhayAyNCBBdWcgOTkgMTA6MjU6NTMKICAgIC0odGVzdGluZy9ldmFsX3Rvb2xzKSAtIGxldCBzb21lIChBSVgpIGFnZW50cyBzZXR0bGUgYmVmb3JlIGZpcmluZyByZXF1ZXN0cy4KCmhhcmRha2VyIDI0IEF1ZyA5OSAxMjo0ODoyMQogICAgLSAodmFjbV92YXJzLmMpOiBjb3JyZWN0IHN5c09SVGFibGUgZW50cnkuCgpoYXJkYWtlciAyNCBBdWcgOTkgMTM6MzY6MzUKICAgIC0gKHNubXB1c20uYyk6IGNoZWNrIGZvciBudWxsIHJlc3BvbnNlIHBvaW50ZXIuCgpoYXJkYWtlciAyNCBBdWcgOTkgMTM6Mzc6MzEKICAgIC0gKHNubXBfcGFyc2VfYXJncy5jLCBkZWZhdWx0X3N0b3JlLmgsIHNubXBfYXBpLmMsIHNubXB2My5jKToKICAgICAgLSBwcm92aWRlIGRlZlZlcnNpb24gdG9rZW4gc3VwcG9ydCBpbiBzbm1wLmNvbmYgKHNvcnQgb2YgaGFja2lzaCkuCgpoYXJkYWtlciAyNCBBdWcgOTkgMTM6NDE6MTgKICAgIC0gKFRPRE8pOiByZW1vdmUgc25tcHYzIHN1cHBvcnQgOi0pCgptc2xpZmNhayAyNCBBdWcgOTkgMTQ6MDU6MzkKICAgIC0odG9wL01ha2VmaWxlLmluKSAtIHJlbW92ZSBtb3JlIGdlbmVyYXRlZCBmaWxlcyB3aXRoIGRpc3RjbGVhbiBydWxlLgoKaGFyZGFrZXIgMjQgQXVnIDk5IDE0OjE1OjQwCiAgICAtIChhbGxfc3lzdGVtLmgpOiByZW1vdmUuICBhZ2Fpbi4KCm1zbGlmY2FrIDI0IEF1ZyA5OSAxNDoxNzozMwogICAgLShob3N0L2hyX3N3cnVuO21pYklJL2ljbXAsaXA7dWNkLXNubXAvZGlzayxwcm9jKSBsb2dfcGVycm9yIC0tPiBzbm1wX2xvZ19wZXJyb3IKCm1zbGlmY2FrIDI0IEF1ZyA5OSAxNToxNDoxOAogICAgLShzbXV4LmMpIGFwcGx5IE5pY2sgQW1hdG8ncyBwYXRjaDogcHJldmVudCBTTVVYIGNsb3NlIG9uIHBhcnNlIG9yIGVycm9yLgoKaGFyZGFrZXIgMjQgQXVnIDk5IDE1OjU5OjQyCiAgICAtIChzbm1wX2FwaS5jKTogcmVtb3ZlIHZlcnNpb24gc2V0dGluZyBpbiBzbm1wX2FwaS5jLiAgTm90IG5lZWRlZCB0aGVyZS4KCmhhcmRha2VyIDI0IEF1ZyA5OSAxNjowMTo1NQogICAgLSAoTkVXUyk6IDQuMC4xIHVwZGF0ZQoKbXNsaWZjYWsgMjQgQXVnIDk5IDE2OjA1OjE1CiAgICAtKGNvbmZpZ3VyZS4qKSBtb3ZlIHN0YXRlbWVudCBhYm91dCB1Y2REZW1vUHVibGljIGludG8gY29tbWVudCBmaWVsZC4KCm1zbGlmY2FrIDI0IEF1ZyA5OSAxNjo0OToyMgogICAgLSh0ZXN0aW5nLyopIHJ1biB0ZXN0cyB3aGVuIHBhY2thZ2UgaXMgbm90IGluc3RhbGxlZCwgYW5kIHdoZW4KICAgIHRoZSBidWlsZCB0cmVlIGlzIG5vdCB0aGUgc2FtZSBhcyB0aGUgc291cmNlIHRyZWUuCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgpDaGFuZ2VzOiBWMy42LjIgLT4gVjQuMAoKaGFyZGFrZXIgMTQgU2VwIDk4IDA5OjExOjU3CiAgICAtIChhY2NvbmZpZy5oLCBjb25maWcuaC5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuaW4pOgogICAgICAtIGNoYW5nZSB0aGUgUEVSU0lTVEVOVEZJTEUgZGVmaW5lIHRvIFBFUlNJU1RFTlRESVIuCgpoYXJkYWtlciAxNCBTZXAgOTggMDk6MTc6NDUKICAgIC0gKGFnZW50X3JlYWRfY29uZmlnLmMsIHNubXBkLmMsIHNubXBkLmgsIHN5c3RlbS5jKToKICAgICAgLSBtb3ZlIHBlcnNpc3RlbnQgY2FjaGUgY2FwYWJpbGl0eSBpbnRvIHRoZSBsaWJyYXJ5IGZyb20gdGhlCiAgICAgICAgYWdlbnQuIChzbm1wdHJhcGQsIGFuZCBvdGhlcnMgd2lsbCBuZWVkIHRoaXMgYXMgd2VsbCkuCiAgICAgIC0gaW1wbGVtZW50IHNvbWUgbmV3IGZ1bmN0aW9uczogaW5pdF9zbm1wdjMoKSwgc25tcHYzX3NodXRkb3duKCksCiAgICAgICAgc25tcHYzX2dldF9lbmdpbmVfYm9vdHMoKSwgZXRjLgogICAgICAtIGFnZW50Qm9vdHMgLT4gZW5naW5lQm9vdHMuCgpoYXJkYWtlciAxNCBTZXAgOTggMDk6MjE6MDUKICAgIC0gKE1ha2VmaWxlLmluLCByZWFkX2NvbmZpZy5jLCBzbm1wX2FwaS5jLCBzbm1wX2FwaS5oLCBzbm1wdjMuYywgc25tcHYzLmgpOgogICAgICAtIG1vdmUgcGVyc2lzdGVudCBjYWNoZSBjYXBhYmlsaXR5IGludG8gdGhlIGxpYnJhcnkgZnJvbSB0aGUKICAgICAgICBhZ2VudC4gKHNubXB0cmFwZCwgYW5kIG90aGVycyB3aWxsIG5lZWQgdGhpcyBhcyB3ZWxsKS4KICAgICAgLSBpbXBsZW1lbnQgc29tZSBuZXcgZnVuY3Rpb25zOiBpbml0X3NubXB2MygpLCBzbm1wdjNfc2h1dGRvd24oKSwKICAgICAgICBzbm1wdjNfZ2V0X2VuZ2luZV9ib290cygpLCBldGMuCiAgICAgIC0gYWdlbnRCb290cyAtPiBlbmdpbmVCb290cy4KCmhhcmRha2VyIDE0IFNlcCA5OCAwOToyMzowOQogICAgLSAoc25tcF9wYXJzZV9hcmdzLmMsIHNubXBfcGFyc2VfYXJncy5oLCBzbm1wYnVsa3dhbGsuYywgc25tcGRlbHRhLmMsCiAgICAgIHNubXBnZXQuYywgc25tcGdldG5leHQuYywgc25tcHNldC5jLCBzbm1wc3RhdHVzLmMsIHNubXB0YWJsZS5jLAogICAgICBzbm1wdGVzdC5jLCBzbm1wdHJhcC5jLCBzbm1wd2Fsay5jKToKICAgICAgLSBwYXNzIGFwcCBuYW1lIHRvIHNubXBfcGFyc2VfYXJncywgc28gaXQgY2FuIHBhc3MgaXQgdG8KICAgICAgICBpbml0X3NubXAoKSwgd2hpY2ggbm93IG5lZWRzIGl0IGZvciBwZXJzaXN0ZW50IGNhY2hlIHJlYWRpbmcuCgpoYXJkYWtlciAxNCBTZXAgOTggMDk6MjU6MTMKICAgIC0gKHNubXBFbmdpbmUuYywgc25tcEVuZ2luZS5oKToKICAgICAgLSBCZWdpbiBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgU05NUC1GUkFNRVdPUkstTUlCLgoKaGFyZGFrZXIgMTQgU2VwIDk4IDE3OjQzOjEyCiAgICAtIChhY2NvbmZpZy5oLCBjb25maWcuaC5pbik6IGRlZmluZSBFTlRFUlBSSVNFX05VTUJFUiB0byAyMDIxLgoKaGFyZGFrZXIgMTQgU2VwIDk4IDE3OjQzOjUwCiAgICAtIChzbm1wdjMuYywgc25tcHYzLmgpOiBpbXBsZW1lbnQgc25tcEVuZ2luZUlEIGNyZWF0aW9uIGFuZCBjb25maWd1cmF0aW9uLgoKaGFyZGFrZXIgMTQgU2VwIDk4IDE3OjQ0OjA2CiAgICAtIChzbm1wRW5naW5lLmMpOiByZXBvcnQgc25tcEVuZ2luZUlEIHByb3Blcmx5LgoKaGFyZGFrZXIgMTQgU2VwIDk4IDE3OjQ5OjE1CiAgICAtIChzbm1wdjNtaWJzLmgpOiBoaWdoLWxldmVsIG1vZHVsZSBjcmVhdGVkIHRvIGltcG9ydCB2MyByZWxlYXRlZCBtaWJzLgoKaGFyZGFrZXIgMTQgU2VwIDk4IDIxOjA5OjQxCiAgICAtICh1dGlsX2Z1bmNzLltjaF0sIHNubXBFbmdpbmUuYywgc25tcHYzLltjaF0sIHN5c3RlbS5bY2hdKToKICAgICAgLSBtb3ZlIHNubXBFbmdpbmVUaW1lIGNhbGN1bGF0aW9uIHRvIHNubXBsaWIvc25tcHYzLmMuCiAgICAgIC0gbW92ZSBjYWxjdWxhdGVfdGltZV9kaWZmKCkgdG8gc3lzdGVtLmMgZnJvbSB1dGlsX2Z1bmNzLmMuCgpoYXJkYWtlciAxNCBTZXAgOTggMjI6Mjk6NTUKICAgIC0gKHNubXBNUERTdGF0cy5jLCBzbm1wTVBEU3RhdHMuaCk6CiAgICAgLSBpbXBsZW1lbnQgU05NUC1NUEQtTUlCLgoKaGFyZGFrZXIgMTQgU2VwIDk4IDIyOjMwOjEwCiAgICAtIChzbm1wdjNtaWJzLmgpOiBhZGQgc25tcE1QRFN0YXRzIG1vZHVsZS4KCmhhcmRha2VyIDE0IFNlcCA5OCAyMjo0MDoyNAogICAgLSAoc25tcEVuZ2luZS5jLCBzbm1wTVBEU3RhdHMuYyk6IHJlZ2lzdGVyIHRoZSBtb2R1bGVzIGluIHN5c09SVGFibGUuCgpoYXJkYWtlciAxNiBTZXAgOTggMDc6MDQ6MTEKICAgIC0gKHNubXBNUERTdGF0cy5jKTogZG91YmxlIGJsYW5rIC0+IHNpbmdsZS4KCmhhcmRha2VyIDE2IFNlcCA5OCAwNzowNDo1OAogICAgLSAodXNtU3RhdHMuYywgdXNtU3RhdHMuaCk6IGltcGxlbWVudCB0aGUgdXNtU3RhdHMgcG9ydGlvbiBvZiB0aGUKICAgICAgU05NUC1VU0VSLUJBU0VELVNNLU1JQi4KCmhhcmRha2VyIDE2IFNlcCA5OCAwNzowNTo0MwogICAgLSAoc25tcHYzbWlicy5oKTogYWRkIHVzbVN0YXRzIHRvIHJlcXVpcmUgbGlzdC4KCmhhcmRha2VyIDE4IFNlcCA5OCAwOTo1NDowOAogICAgLSAoc25tcF9hcGkuYyk6IGNoYW5nZSBzcHJpbnRmX29pZCBidWYgbGVuZ3RoIGluIERFQlVHUE9JRCB0byA0MDk2LgoKaGFyZGFrZXIgMTggU2VwIDk4IDA5OjU1OjA3CiAgICAtIChzbm1wZC5jKTogaW5pdF9zbm1wdjMgbmVlZHMgdG8gZ28gYWJvdmUgaW5pdF9hZ2VudCBmb3IgZW5naW5lSUQgY3JlYXRpb24uCgpoYXJkYWtlciAxOCBTZXAgOTggMDk6NTk6MjAKICAgIC0gKHNubXB2M21pYnMuaCwgdXNtVXNlci5jLCB1c21Vc2VyLmgsIE1ha2VmaWxlLmluLCBzbm1wdXNtLmMsCiAgICAgIHNubXB1c20uaCwgc25tcHYzLmMsIHNubXB2My5oKToKICAgICAgLSBiYXNpYyB1c21Vc2VyIHN0cnVjdHVyZSBjcmVhdGVkIGZvciB0aGUgbGlicmF5IHdpdGggc3VwcG9ydAogICAgICAgIGZ1bmN0aW9uczoKICAgICAgICAtIHN0cnVjdCB1c21Vc2VyICp1c21fZ2V0X3VzZXIoKmVuZ2luZUlELCAgZW5naW5lSURMZW4sICAqbmFtZSwgKnVzZXJMaXN0KTsKICAgICAgICAtIHN0cnVjdCB1c21Vc2VyICp1c21fYWRkX3VzZXIoKnVzZXIsICp1c2VyTGlzdCk7CiAgICAgICAgLSBzdHJ1Y3QgdXNtVXNlciAqdXNtX2ZyZWVfdXNlcigqdXNlcik7CiAgICAgICAgLSBzdHJ1Y3QgdXNtVXNlciAqdXNtX2Nsb25lX3VzZXIoKmZyb20pOwogICAgICAgIC0gc3RydWN0IHVzbVVzZXIgKnVzbV9jcmVhdGVfaW5pdGlhbF91c2VyKCk7CiAgICAgIC0gZmlyc3QgcGFzcyBhdCBiYXNpYyBVU00gbW9kdWxlIHN1cHBvcnQgYWRkZWQgdG8gdGhlIGFnZW50LgoKaGFyZGFrZXIgMTggU2VwIDk4IDEyOjQyOjQ2CiAgICAtIChzbm1wLXRjLmgpOiBjcmVhdGUgYSBuZXcgLmggZmlsZSB0byBzdG9yZSBjb21tb24gdGV4dHVhbCBjb252ZW50aW9uIGRlZmluZXMuCgpoYXJkYWtlciAxOCBTZXAgOTggMTI6NDY6MzgKICAgIC0gKHVzbVVzZXIuYywgc25tcHVzbS5jLCBzbm1wdXNtLmgpOgogICAgICAtIGNyZWF0ZSBhbmQgdXNlIHN0b3JhZ2VUeXBlL3VzZXJTdGF0dXMgaW4gdGhlIHVzbVVzZXIgc3RydWN0dXJlLgogICAgICAtIGZpeCB0aGUgYXV0aC9wcml2IHByb3RvY29sIHBvaW50ZXIgaW5pdGlhbGl6YXRpb25zIGZvciB0aGUgImluaXRpYWwiIHVzZXIuCgpoYXJkYWtlciAyMCBTZXAgOTggMTE6NDY6MTMKICAgIC0gKHNubXBfdmFycy5jKTogaW5jbHVkZSBzbm1wdXNtLmggYW5kIHNubXB2My5oLgoKaGFyZGFrZXIgMjAgU2VwIDk4IDExOjQ3OjE3CiAgICAtIChzbm1wX2FnZW50LmMpOiBpZiBhIG1pYiBtb2R1bGUgcmV0dXJucyBhbiBlcnJvciA+IFNOTVBfR0VOX0VSUiwKICAgICAgdHJhbnNsYXRlIHRoZSBlcnJvciB0byBTTk1QX0dFTl9FUlIgZm9yIHYxIHJlcXVlc3RzLgoKaGFyZGFrZXIgMjAgU2VwIDk4IDExOjQ5OjA0CiAgICAtIChtaWIyYyk6CiAgICAgIC0gZnByaW50ZiAtPiBERUJVR1AuCiAgICAgIC0gX19QIC0+IEFOU0kuCgpoYXJkYWtlciAyMCBTZXAgOTggMTE6NTI6MDgKICAgIC0gKHVzbVVzZXIuYywgdXNtVXNlci5oKToKICAgICAgLSBnZXROZXh0IGJ1ZyBmaXhlcy4KICAgICAgLSBtYWtlIHVzbVB1YmxpYyB0cnVlbHkgd3JpdGFibGUuCiAgICAgIC0gaW1wbGVtZW50IHVzbV9wYXJzZV9vaWQoKSB0byBwYXJzZSBhbiBvaWQgaW50byBlbmdpbmVJRC9uYW1lLgogICAgICAtIGltcGxlbWVudCB0aGUgdXNtVXNlclNwaW5Mb2NrLgogICAgICAtIG1pc2Mgb3RoZXIgYnVnIGZpeGVzLgoKaGFyZGFrZXIgMjEgU2VwIDk4IDExOjEyOjQ5CiAgICAtIChzbm1wX3ZhcnMuYyk6IGZpbmFsbHkgZml4ZWQgdGhlIHdyaXRlX21ldGhvZCdzIGZvciBjcmVhdGlvbiBwcm9ibGVtLgoKaGFyZGFrZXIgMjMgU2VwIDk4IDEwOjQwOjA0CiAgICAtIChTTk1QdjItVEMudHh0KTogcmVqdXN0aWZ5IGEgdGFibGUuCgpoYXJkYWtlciAyMyBTZXAgOTggMTA6NDU6MTMKICAgIC0gKHVzbVVzZXIuYyk6CiAgICAgIC0gTWFrZSB1c21Vc2VyU3RhdHVzIGFjdHVhbGx5IHdyaXRhYmxlIGFuZCBjYXBhYmxlIG9mIGNyZWF0aW5nIG5ldyByb3dzLgogICAgICAtIEJlZ2luIChicm9rZW4pIGNsb25lRnJvbSBzZXR0aW5nLgogICAgICAtIEZpeGVzOgogICAgICAgIC0gcHJvcGVybHkgbWFsbG9jIHNwYWNlLgogICAgICAgIC0gcHJvcGVybHkgdXNlIGRvdWJsZSBjaGFyIG5hbWUgYW5kIGVuZ2luZUlEIHBvaW50ZXJzLgogICAgICAgIC0gZG8gcHJvcGVyIG9pZCBjb21wYXJpc29ucyBmb3IgZ2V0TmV4dHMuCiAgICAgICAgLSBjaGVjayB0byBzZWUgdGhhdCB1cHRyIGlzIGRlZmluZWQgYmVmb3JlIHVzaW5nIGl0IHRvIHJldHJpZXZlIGRhdGEuCiAgICAgICAgLSBjbG9uZUZyb20gc2hvdWxkIGFsd2F5cyByZXR1cm4gdGhlIFplcm9Eb3RaZXJvIE9JRC4KCmhhcmRha2VyIDIzIFNlcCA5OCAxMDo0NjozNQogICAgLSAoc25tcHVzbS5jKToKICAgICAgLSBmaXggdXNtX2FkZF91c2VyKCkgZnJvbSBhbHdheXMgYWRkaW5nIHRoZSB1c2VyIGF0IHRoZSBlbmQgb2YgdGhlIGxpc3QuCiAgICAgIC0gc2V0IGRlZmF1bHQgdmFsdWVzIGZvciBhdXRoL3ByaXYgcHJvdG9jb2xzIG9uIG5ldyB1c2Vycy4KCmhhcmRha2VyIDIzIFNlcCA5OCAxMDo0NzoyOAogICAgLSAoc25tcF9hcGkuYywgc25tcF9hcGkuaCk6IGNyZWF0ZSBzbm1wX2R1cGxpY2F0ZV9vYmppZCgpIHRvIG1hbGxvYyBhIG5ldyBvaWQuCgpoYXJkYWtlciAyMyBTZXAgOTggMTI6MTU6MTEKICAgIC0gKElTU1VFUyk6IHVwZGF0ZQoKaGFyZGFrZXIgMjMgU2VwIDk4IDEyOjI0OjA0CiAgICAtIChJU1NVRVMpOiB0b29rIG9uZS4KCmhhcmRha2VyIDIzIFNlcCA5OCAxNzo1ODo0OQogICAgLSAoSVNTVUVTKTogY2xvbmluZy9tYWxsb2MgaXNzdWUuCgpoYXJkYWtlciAyMyBTZXAgOTggMTc6NTk6NDAKICAgIC0gKHNubXB1c20uYywgc25tcHVzbS5oKTogY3JlYXRlZCB1c21fY2xvbmVGcm9tX3VzZXIoKSB0byBjbG9uZSBzZWMgaW5mby4KCmhhcmRha2VyIDIzIFNlcCA5OCAxODowMDoyMQogICAgLSAodXNtVXNlci5jKTogbWFrZSB1c21DbG9uZUZyb20gYWN0dWFsbHkgd29yayAoaXMgc2V0YWJsZSkuCgpoYXJkYWtlciAyMyBTZXAgOTggMjA6MTU6NTcKICAgIC0gKElTU1VFUyk6IHN0b3JhZ2UgdHlwZSBpc3N1ZXMuCgpoYXJkYWtlciAyMyBTZXAgOTggMjA6MTY6MjQKICAgIC0gKHVzbVVzZXIuYyk6IG1ha2UgdXNtVXNlckF1dGhQcm90b2NvbCBhbmQgdXNtVXNlclByaXZQcm90b2NvbCB3cml0YWJsZS4KCmhhcmRha2VyIDIzIFNlcCA5OCAyMDo1MDowNQogICAgLSAoSVNTVUVTKTogUm93U3RhdHVzIHF1ZXN0aW9uIGFkZGVkLgoKaGFyZGFrZXIgMjMgU2VwIDk4IDIwOjUwOjQ1CiAgICAtIChzbm1wdXNtLmMsIHNubXB1c20uaCk6IGNyZWF0ZSB1c21fcmVtb3ZlX3VzZXIoKSB0byByZW1vdmUgYSB1c2VyCiAgICAgIGZyb20gYSBsaXN0LgoKaGFyZGFrZXIgMjMgU2VwIDk4IDIwOjUxOjQ2CiAgICAtICh1c21Vc2VyLmMpOiBtYWtlIHVzbVVzZXJTdGF0dXMgZGVzdHJveSdzIGFjdHVhbGx5IHJlbW92ZSBhIHVzZXIuCgpoYXJkYWtlciAyNyBTZXAgOTggMjI6NTM6NTMKICAgIC0gKElTU1VFUyk6IG1vcmUgc3R1ZmYuCgpoYXJkYWtlciAyNyBTZXAgOTggMjI6NTU6MDkKICAgIC0gKHJlYWRfY29uZmlnLmMsIHJlYWRfY29uZmlnLmgsIHNubXB1c20uYywgc25tcHVzbS5oKToKICAgICAgLSBidWcgZml4ZXMuCiAgICAgIC0gbmV3IHN1cHBvcnQgZnVuY3Rpb25zIGZvciBzYXZpbmcgdXNlcnMgdG8gdGhlIHBlcnNpc3RlbnQgY2FjaGUuCgpoYXJkYWtlciAyNyBTZXAgOTggMjI6NTc6MDAKICAgIC0gKHVzbVVzZXIuYywgdXNtVXNlci5oKToKICAgICAgLSBidWcgZml4ZXMuCiAgICAgIC0gdXNtVXNlclN0YXR1cyBpcyBzZXRhYmxlICh0byBlaXRoZXIgdm9sYXRpbGUgb3Igbm9uVm9sYXRpbGUpLgogICAgICAtIHVzZXJzIGNyZWF0ZWQgYnkgc2V0J3MgYXJlIHNhdmVkIChpZiBzZXQgdG8gbm9uVm9sYXRpbGUpIG9uIGFnZW50IHNodXRkb3duLgoKaGFyZGFrZXIgMjkgU2VwIDk4IDIwOjExOjIwCiAgICAtIChJU1NVRVMpOiBlcnJvciBtYXBwaW5nIChjb2V4IHdvcmspLgoKbWFyeiAgMSBPY3QgOTggMTI6NTg6NDIKICAgIC0gKHNubXAuaCwgc25tcHVzbS5bY2hdLCBzbm1wX2FwaS5bY2hdKTogYWRkZWQgVVNNIGFwaSBhbmQgc25tcHYzX2J1aWxkLCBzb21lIHR3ZWFrcyB0byBwYXJzZSBpbiBwcmVwIGZvciBzbm1wdjNfcGFyc2UKCm1hcnogIDEgT2N0IDk4IDE0OjA1OjQ1CiAgICAtIChzbm1wX2FwaS5jKTogZml4ZXMgdG8gc25tcHYzX3BhcnNlCgptYXJ6ICA0IE9jdCA5OCAxNzoyMDozMAogICAgIC0gKHNubXBfYXBpLltjaF0sIHNubXBfY2xpZW50LmMsIHNubXB1c20uYyk6IGFkZGVkIHNubXB2MyBwYXJzaW5nIHJvdXRpbmVzCgpoYXJkYWtlciAgNSBPY3QgOTggMjA6MDU6MDMKICAgIC0gKElTU1VFUyk6IG1vcmUgc3R1ZmYuCgpoYXJkYWtlciAgNSBPY3QgOTggMjA6MDY6NTcKICAgIC0gKHNubXBfYXBpLmMsIHNubXBfYXBpLmgpOiBicmVha2Rvd24gb2Ygc25tcHYzX2J1aWxkKCkgaW50byBzdWItZnVuY3Rpb25zLgoKaGFyZGFrZXIgIDUgT2N0IDk4IDIxOjU5OjI2CiAgICAtIChzbm1wdXNtLmMpOiBtYWtlIGdlbmVyYXRlUmVxdWVzdE1zZyBkbyBzb21ldGhpbmcgZ2VuZXJpYy4KCmhhcmRha2VyICA1IE9jdCA5OCAyMjowMDoyMgogICAgLSAoc25tcHYzLmMsIHNubXB2My5oKTogcmV0dXJuIGEgdV9jaGFyICogaW5zdGVhZCBvZiBhIGNoYXIgKiBmb3IgZW5naW5lSURzLgoKaGFyZGFrZXIgIDUgT2N0IDk4IDIyOjAxOjA0CiAgICAtIChzbm1wX2FwaS5jKTogbWlzYyBidWcgZml4ZXMuCgpoYXJkYWtlciAgNSBPY3QgOTggMjI6NTA6MTAKICAgIC0gKHNubXBfYXBpLmMpOiBsYXN0IG9mIGtub3duIGJ1Z3MgaW4gc25tcHYzX2J1aWxkIGZpeGVkIChhIHBvaW50ZXIKICAgICAgd2FzIGJlaW5nIHVzZWQgdHdpY2UgaW4gb3ZlcmxhcHBpbmcgbmVlZGVkIHRpbWUgcGVyaW9kcykuCgptYXJ6ICA3IE9jdCA5OCAxMzowMjo0MAogICAgIC0oc25tcF9wYXJzZV9hcmdzLmMpOiBhZGQgdjMgc3VwcG9ydAoKbWFyeiAgNyBPY3QgOTggMTM6MDY6NDEKICAgICAtKHNubXBfYXBpLltjaF0sIHNubXB1c20uW2NoXSwgc25tcHYzLmMpOiBhZGRlZCBwZHUgZmllbGQgdG8gaG9sZCBzZWMgc3RhdGUgcmVmLCBmaXhlZCB1c20gcHJvdG90eXBlcywgYWRkZWQgY2hlY2sgZm9yIG51bGwgaGVudCByZXR1cm4KCmhhcmRha2VyICA3IE9jdCA5OCAxNTozNjowNQogICAgLSAoc25tcHVzbS5jKTogZmx1c2ggb3V0IGEgZ2VuZXJpYyBwcm9jZXNzSW5jb21pbmdNc2coKS4KCmhhcmRha2VyICA3IE9jdCA5OCAxNTozNjozNgogICAgLSAoc25tcF9pbXBsLmgpOiBhZGQgc2VjdXJpdHlOYW1lIHRvIHRoZSBhZ2VudCdzIHBhY2tldF9pbmZvIHN0cnVjdHVyZS4KCmhhcmRha2VyICA3IE9jdCA5OCAxNTozODowMAogICAgLSAoc25tcF9hcGkuYyk6IG1hbnkgbWFueSBidWcgZml4ZXMgdG8gdjMgcGFyc2UvYnVpbGQgcm91dGluZXMuCgpoYXJkYWtlciAgNyBPY3QgOTggMTU6Mzk6MTcKICAgIC0gKHZhY21fdmFycy5jKTogcmVjb2duaXplIHRoZSBzZWN1cml0eU5hbWUgd2hlbiBVU00gbW9kZWwgaXMgaW4gdXNlLgoKaGFyZGFrZXIgIDcgT2N0IDk4IDE3OjE3OjEwCiAgICAtIChzbm1wX2FnZW50LmMpOiBpbml0aWFsIHBhc3MgYXQgdjMuICBXaWxsIGZhaWwgb24gc2VuZGluZyBlcnJvciBtZXNzYWdlcy4KCmhhcmRha2VyICA3IE9jdCA5OCAxNzo0NToyMgogICAgLSAoc25tcF9hcGkuYyk6IHBhc3MgaW4gdGhlIHNlY19wYXJtcyBsZW5ndGggdG8gcHJvY2Vzc0luY29taW5nTXNnCgpoYXJkYWtlciAgNyBPY3QgOTggMTc6NDY6MDQKICAgIC0gKHNubXBfYWdlbnQuYyk6IGJ1ZyBmaXg6IHVzaW5nIGFuIGFycmF5IGFzIGEgcG9pbnRlciAodXNlZCB0byBiZSBvbmUpLgoKaGFyZGFrZXIgIDcgT2N0IDk4IDIyOjQwOjQzCiAgICAtIChzbm1wX2FwaS5jLCBzbm1wdjMuYywgc25tcHYzLmgpOgogICAgICAtIGRlZmF1bHQgc25tcHYzIHBhcmFtZXRlcnMgY2FuIGJlIHNwZWNpZmllZCBpbiBhIHNubXAuY29uZiBmaWxlLgoKaGFyZGFrZXIgIDggT2N0IDk4IDEwOjEzOjIzCiAgICAtIChJU1NVRVMpOiBldmVyeW9uZSBsb3ZlcyBpc3N1ZXMhCgpoYXJkYWtlciAgOSBPY3QgOTggMDg6MDM6NTcKICAgIC0gKGNvbmZpZy5oLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbik6IHVzZSB6bGliIHdoZW4gdXNpbmcgcnBtIGxpYnJhcmllcy4KCmRyZWVkZXIgIDkgT2N0IDk4IDEzOjU5OjEyCiAgICAtIChJU1NVRVMpOiBOZWVkIGEgcGFzcyBmb3IgdHJhZGl0aW9uYWwgVU4qWCBzeXN0ZW0gcHJvZ3JhbW1pbmcgaG9sZXMuCgpoYXJkYWtlciAgOSBPY3QgOTggMTg6MjM6MjcKICAgIC0gKHNubXB1c20uYyk6IGdlbmVyYXRlUmVxdWVzdE1zZygpIGRvZXNuJ3QgQVNOIGVuY29kZSB0aGUgc2VjX3BhcmFtcy4KCmhhcmRha2VyICA5IE9jdCA5OCAxODoyNDowMgogICAgLSAoc25tcF9hcGkuYyk6IHJlc3RydWN0dXJlIHRoZSBwYWNrZXQgYnVpbGRpbmcgdG8gdXNlIGxlc3MgbWVtY3B5J3MuCgpoYXJkYWtlciAgOSBPY3QgOTggMTg6MjQ6MjYKICAgIC0gKHNubXBfYWdlbnQuYyk6IHVzZSBzbm1wX2J1aWxkX3BhY2tldCgpIHRvIGNvbnN0cnVjdCBhbGwgdjMgZGF0YS4KCmRyZWVkZXIgMTIgT2N0IDk4IDA3OjE4OjU2CiAgICAtIChJU1NVRVMpOiBwcm9vZiBtZW1vcnkgaW52b2NhdGlvbi9kaXNwb3NhbDsgcHV0IHRpbWUgc3RhbXBzIGluIGxvZyBmaWxlcy4KCmhhcmRha2VyIDEyIE9jdCA5OCAwNzoxOToyOAogICAgLSAoc25tcF9hcGkuYywgc25tcF9hcGkuaCk6CiAgICAgIC0gbmV3IHN0YXRzIGNvdW50ZXIgQVBJLgogICAgICAtIGJ1ZyBmaXhlcy4KCmhhcmRha2VyIDEyIE9jdCA5OCAwNzo0MjoyOAogICAgLSAoc25tcF9hcGkuYywgc25tcF9hcGkuaCk6IGJ1ZyBmaXhlcyB3aXRoIGNvdW50ZXJzIChyZXR1cm5zIHVfaW50LCBFRykuCgpoYXJkYWtlciAxMiBPY3QgOTggMDc6NDQ6NTUKICAgIC0gKHNubXBfYWdlbnQuYyk6CiAgICAgIC0gbWFrZSB2MyBjb2RlIHJldHVybiBlcnJvcnMgcHJvcGVybHkuCiAgICAgIC0gYnVnIGZpeGVzLgoKaGFyZGFrZXIgMTIgT2N0IDk4IDA3OjQ1OjExCiAgICAtIChzbm1wTVBEU3RhdHMuYywgc25tcE1QRFN0YXRzLmgsIHVzbVN0YXRzLmMsIHVzbVN0YXRzLmgpOgogICAgICAtIHVzZSB0aGUgbmV3IHN0YXRzIGNvdW50ZXIgQVBJLgoKbWFyeiAxMiBPY3QgOTggMDc6NTY6MzAKICAgICAtKHNubXBfcGFyc2VfYXJncy5jKTogbWVyZ2VkIGhleCB0byBiaW4gZnVuY3MgLSBUaGVyZSBjYW4gYmUgb25seSBPbmUKCm1hcnogMTIgT2N0IDk4IDA4OjExOjQ2CiAgICAgLShzbm1wX2FwaS5bY2hdLCBzbm1wdXNtLltjaF0pOiBtZXJnZWQgaGV4IHRvIGJpbiBmdW5jcywgZml4ZWQgTVAvVVNNIGFwaSwgaW1wbGVtZW50ZWQgbm9BdXRoTm9Qcml2IFVTTSwgaW1wbGVtZW50ZWQgZW5naW5lIHByb2JlIGFsZ29yaXRobQoKaGFyZGFrZXIgMTIgT2N0IDk4IDA5OjIzOjQ5CiAgICAtIChJU1NVRVMpOiBub3RlIG9uIERhdmlkJ3MgaXNzdWUuCgpoYXJkYWtlciAxMiBPY3QgOTggMTI6MjY6MDYKICAgIC0gKGFjY29uZmlnLmgsIGNvbmZpZy5oLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbik6CiAgICAgIC0gbG9vayBmb3IgL2Rldi9yYW5kb20gYW5kIGRlZmluZSBIQVZFX0RFVl9SQU5ET00uCiAgICAgIC0gbG9vayBmb3IgbGlia210IGFuZCBsaWJjcnlwdG8gYW5kIGRlZmluZSBIQVZFX0xJQlhYWC4KCm1hcnogMTIgT2N0IDk4IDE1OjQ2OjM2CiAgICAtIChzbm1wdXNtLmMpOiBmaXhlZCBoZWFkZXIgc2l6ZSBpc3N1ZXMgKGRpZmZlcmVuY2UgYmV0d2VlbiBhc25fYnVpbGRfaGVhZGVyIGFuZCBhc25fYnVpbGRfc2VxdWVuY2UpCgpoYXJkYWtlciAxMiBPY3QgOTggMjE6NTY6NDIKICAgIC0gKHN5c3RlbS5jLCBzeXN0ZW0uaCk6IG1ha2UgY2FsY3VsYXRlX3RpbWVfZGlmZiB0YWtlIGEgcG9pbnRlci4KCmhhcmRha2VyIDEyIE9jdCA5OCAyMTo1OTo1MwogICAgLSAoc25tcHYzLmMpOiB1c2UgbmV3IGNhbGN1bGF0ZV90aW1lX2RpZmYoKS4KCmhhcmRha2VyIDEyIE9jdCA5OCAyMjowNDowNgogICAgLSAoc25tcF9jbGllbnQuYyk6IGJ1ZyBmaXhlczoKICAgICAgLSBzbm1wX3N5bmNoX2lucHV0KCkgbmVlZHMgdG8gY2xvbmUgYSByZXBvcnQgcGR1IHRvby4KICAgICAgLSBzbm1wX2Nsb25lX3BkdSgpIG5lZWRzIHRvIGNvcHkgY29udGV4dEVuZ2luZUlELCBjb250ZXh0TmFtZSwgYW5kCiAgICAgICAgc2VjdXJpdHlOYW1lCgpoYXJkYWtlciAxMiBPY3QgOTggMjI6MTI6NTAKICAgIC0gKHNubXBfYXBpLmMsIHNubXBfYXBpLmgpOgogICAgICAtIG1ha2Ugc25tcF9pbmNyZW1lbnRfc3RhdGlzdGljKCkgcmV0dXJuIHRoZSBjaGFuZ2VkIHZhbHVlLgogICAgICAtIGNyZWF0ZSBuZXcgZnVuY3Rpb246IHNubXBfZnJlZV92YXJiaW5kKCkgdG8gZnJlZSBhIGxpc3QuCiAgICAgIC0gXG4ncyB0byB0aGUgZW5kIG9mIHRoZSBuZXcgZGVidWdnaW5nIG1lc3NhZ2VzIGZvciBlbmdpbmVJRCBkaXNjb3ZlcnkuCiAgICAgIC0gTWVyZ2UgcmVzcG9uc2UvcmVwb3J0IGhhbmRsaW5nIHRvIG1ha2UgcmVwb3J0J3MgY2FsbCB0aGVpcgogICAgICAgIGNhbGxiYWNrIGFzIHdlbGwgKGVuZ2luZUlEIGRpc2NvdmVyeSB3YXMgbmV2ZXIgcmV0dXJuaW5nKS4KCmhhcmRha2VyIDEyIE9jdCA5OCAyMjoxOTo1NAogICAgLSAoY29uZmlndXJlLCBjb25maWd1cmUuaW4pOiByZW1vdmUgaW5jb3JyZWN0IGNvbW1lbnQuCgpoYXJkYWtlciAxMiBPY3QgOTggMjI6MjI6MzYKICAgIC0gKElTU1VFUyk6IHdpZXJkIG1lbW9yeSBxdWVzdGlvbi4KCmhhcmRha2VyIDEyIE9jdCA5OCAyMjoyMzoxNgogICAgLSAoc3lzdGVtLmMpOiB1c2UgbmV3IGNhbGN1bGF0ZV90aW1lX2RpZmYoKS4KCmhhcmRha2VyIDEyIE9jdCA5OCAyMjoyNTowNgogICAgLSAoc25tcF9hZ2VudC5jKTogaGFuZGxlIGVuZ2luZUlEIGRpc2NvdmVyeSByZXF1ZXN0cy4KCmhhcmRha2VyIDEyIE9jdCA5OCAyMjo1ODoyNgogICAgLSAodXNtVXNlci5jKTogbmV3IGZ1bmN0aW9uIHRvIHJldHVybiB0aGUgdXNlckxpc3QuCgpoYXJkYWtlciAxMiBPY3QgOTggMjI6NTg6NTUKICAgIC0gKHNubXB1c20uYywgc25tcHVzbS5oKTogbmV3IGZ1bmN0aW9uIHVzbV9jaGVja19zZWNMZXZlbChpbnQsIHN0cnVjdCAqdXNtVXNlcik7CgpoYXJkYWtlciAxMiBPY3QgOTggMjI6NTk6MzYKICAgIC0gKHNubXBfYWdlbnQuYyk6IGhhbmRsZSB1bmtub3duU2VjdXJpdHlOYW1lIGFuZCB1bnN1cHBvcnRlZFNlY3VyaXR5TGV2ZWwuCgpoYXJkYWtlciAxMyBPY3QgOTggMTM6Mjc6MTQKICAgIC0gKGFjY29uZmlnLmgsIGNvbmZpZy5oLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbik6CiAgICAgIC0gbmV3IG9wdGlvbnM6IC0tZGlzYWJsZS1wcml2YWN5LCAtLWVuYWJsZS12MnAtbWQ1LgoKaGFyZGFrZXIgMTMgT2N0IDk4IDEzOjMxOjIyCiAgICAtIChhY2NvbmZpZy5oLCBjb25maWcuaC5pbik6IGNvbW1lbnQgZm9ybWF0dGluZy4KCmhhcmRha2VyIDE0IE9jdCA5OCAxMzoyOTowNQogICAgLSAoc25tcF9hcGkuYyk6IG1ha2Ugc25tcF9hZGRfdmFyIHNldCB0aGUgc2l6ZSBvZiB0aGUgb2lkIGJ1ZmZlci4KCmhhcmRha2VyIDE0IE9jdCA5OCAxMzoyOTo0MAogICAgLSAoc25tcHVzbS5jLCBzbm1wdXNtLmgpOiBtb3ZlZCB0aGUgZGVmYXVsdCB1c2VyTGlzdCBpbnRvIHRoZSBsaWJyYXJ5LgoKaGFyZGFrZXIgMTQgT2N0IDk4IDEzOjMxOjI5CiAgICAtICh1c21Vc2VyLmMpOiB1c2UgdGhlIG5ldyBsaWJyYXJ5IGRlZmF1bHQgdXNlciBsaXN0LgoKaGFyZGFrZXIgMTQgT2N0IDk4IDEzOjMyOjU4CiAgICAtIChzbm1wX2FnZW50LmMpOgogICAgICAtIHVzZSB0aGUgbmV3IGxpYnJhcnkgZGVmYXVsdCB1c2VyIGxpc3QuCiAgICAgIC0gZG9uJ3QgZnJlZSBhIG5vbmV4aXN0ZW50IHBkdSAoaXQgb25seSBleGlzdHMgZm9yIHYzIHJlcXVlc3RzKS4KCmhhcmRha2VyIDE0IE9jdCA5OCAxMzo0Nzo1NgogICAgLSAoc25tcF9hZ2VudC5jKTogbWFrZSBzdXJlIHBkdS0+c2VjdXJpdHlOYW1lIGlzIG51bGwgdGVybWluYXRlZC4KCmhhcmRha2VyIDE0IE9jdCA5OCAxNzo1MjoyMwogICAgLSAoYWNsb2NhbC5tNCwgY29uZmlndXJlLCBjb25maWd1cmUuaW4sIE1ha2VmaWxlLmluKToKICAgICAgLSBuZXcgYXJndW1lbnRzIHRvIGNvbmZpZ3VyZSB0byBzZXQgQ0ZMQUdTIGFuZCBMSUJTOgogICAgICAgIC0gLS13aXRoLUtNVD1wYXRoCiAgICAgICAgLSAtLXdpdGgtU1NMZWF5PXBhdGgKICAgICAgLSBmaXggdG8gYWdlbnQvbWliZ3JvdXAvTWFrZWZpbGUgdG8ga2VlcCB0aGUgYWJvdmUgZnJvbSBnZXR0aW5nIHRoZQogICAgICAgIHdyb25nIGFzbjEuaCBmcm9tIHRoZSBTU0xlYXkgcGFja2FnZS4KCmhhcmRha2VyIDE0IE9jdCA5OCAyMDo0MTowNwogICAgLSAoYWNsb2NhbC5tNCwgY29uZmlnLmguaW4sIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCAqL01ha2VmaWxlLmluKToKICAgICAgLSBjaGVjayBmb3Iga210LmgKICAgICAgLSByZS1vcmRlciBDUFBGTEFHUyB0byBwdXQgLUkgZmxhZ3MgbGFzdC4KCmhhcmRha2VyIDE0IE9jdCA5OCAyMDo0NTo1MQogICAgLSAodXNtVXNlci5jLCB1c21Vc2VyLmgsIHNubXB1c20uYywgc25tcHVzbS5oKToKICAgICAgLSBtb3ZlIHVzbV9wYXJzZV9jb25maWdfdXNtVXNlciB0byB0aGUgbGlicmFyeS4KCmhhcmRha2VyIDE0IE9jdCA5OCAyMDo0Nzo0OAogICAgLSAoYWdlbnRfcmVhZF9jb25maWcuYyk6IGluY2x1ZGUgc25tcHVzbS5oCgpkcmVlZGVyIDE1IE9jdCA5OCAxMjowMjo0MAogICAgLSBCYXNlIGZvciBTQ0FQSSArIHNvbWUgZm9ybWF0dGluZyBvbiB0aGUgcGF0aCB0byBzbm1wdjMgc3RhcnR1cCBhbmQgc2h1dGRvd24uCiAgICAtIFNodWZmbGluZyBpbiBoZWFkZXIgZmlsZXMgdG8gZGVmZWF0IHdhcm5pbmdzIG9mICNkZWZpbmUgcmVkdW5kYW5jaWVzOgogICAgCW5vdGFibHksIHMvZnJlZWJzZCouaCBhbmQgc25tcGxpYi9zeXN0ZW0uaAogICAgLSBEZWJ1ZyAmIHRpbmkgdG9vbGJhZyBpbiBzbm1wbGliL3tkZWJ1Zyx0b29sc30uKgogICAgLSBDaGFuZ2VkIGNvbmZpZ3VyZSBvcHRpb24gLS1lbmFibGUtdjJwLW1kNSB0byAtLWVuYWJsZS1pbnRlcm5hbC1tZDUuCiAgICAtIENvbnNvbGlkYXRlZCBsaWJyYXJ5IHN5c3RlbSBhbmQgbG9jYWwgaGVhZGVyIGluY2x1ZGUgc2VxdWVuY2VzIGludG8KICAgIAlzbm1wbGliL2FsbF8qLmggZmlsZXMuICBQb3NzaWJseSBiZXR0ZXIgc29sdXRpb25zIGZvciB0aGlzLi4uCgpoYXJkYWtlciAxNSBPY3QgOTggMjI6MjQ6NTIKICAgIC0gKHVzbVVzZXIuYyk6IHJlbW92ZWQgdXNtX3BhcnNlX2NvbmZpZ191c21Vc2VyIHRoYXQgRGF2aWQgcHV0IGJhY2sgYnkKICAgICAgYWNjaWRlbnQgd2hlbiBkb2luZyBmb3JtYXRpbmcuCgpoYXJkYWtlciAxNSBPY3QgOTggMjI6MjU6MTcKICAgIC0gKGtleXRvb2xzLmMsIGtleXRvb2xzLmgpOiBhZGRlZCBsZW5ndGggdG8gZW5naW5lSUQuCgpoYXJkYWtlciAxNSBPY3QgOTggMjI6MjU6NTgKICAgIC0gKHJlYWRfY29uZmlnLmMsIHJlYWRfY29uZmlnLmgpOiBtYWtlIGNvcHlfd29yZCByZXR1cm4gYSBwb2ludGVyLgoKaGFyZGFrZXIgMTUgT2N0IDk4IDIyOjI2OjIxCiAgICAtIChzY2FwaS5jLCBzY2FwaS5oKTogbW92ZSAjaW5jbHVkZXMgZnJvbSAuaCB0byAuYy4KCmhhcmRha2VyIDE1IE9jdCA5OCAyMjoyNzowMwogICAgLSAoc25tcHVzbS5jLCBzbm1wdXNtLmgpOiBuZXcgY29uZmlnIG9wdGlvbnMgdG8gY2hhbmdlIGtleXMuCgpoYXJkYWtlciAxNSBPY3QgOTggMjI6Mjc6NTgKICAgIC0gKHNubXB2My5jKTogZG9uJ3QgY2FsbCBpbml0X2ttdCgpIHVubGVzcyBIQVZFX0xJQktNVCBpcyBkZWZpbmVkLgoKaGFyZGFrZXIgMTUgT2N0IDk4IDIyOjQyOjAwCiAgICAtIChrZXl0b29scy5jLCBrZXl0b29scy5oKTogbW92ZSAjaW5jbHVkZSBmcm9tIC5oIHRvIC5jLgoKaGFyZGFrZXIgMTUgT2N0IDk4IDIyOjQ3OjU2CiAgICAtICh1c21Vc2VyLmMsIHVzbVVzZXIuaCk6CiAgICAgIC0gdXNlIGRvX2tleWNoYW5nZSgpIHRvIGltcGxlbWVudCB0aGUga2V5IGNoYW5nZSB3cml0ZSBtZXRob2RzLgogICAgICAtIGEgYml0IG9mIC1XYWxsIGNsZWFudXAuCgpkcmVlZGVyIDE2IE9jdCA5OCAxMToyODoxMgogICAgLSBVcGRhdGVkIFNDQVBJIGNyeXB0aW5nIGZ1bmN0aW9ucyB0byBpZGVudGlmeSB0cmFuc2Zvcm1zIE9JRHMgbm90ICNkZWZpbmUncy4KICAgIC0gTW92ZWQgImdsb2JhbCIgZGVmaW5pdGlvbnMgb2YgT0lEIHRyYW5zZm9ybXMgdG8gc25tcHVzbS5oLCBhbmQgb3V0IG9mCiAgICAJdXNtVXNlci5jIGFuZCBzbm1wdXNtLmMuCiAgICAtIHNjX2dlbmVyYXRlX2tleWVkX2hhc2goKSBzdGFuZHMgYXMgYSBnb29kIGV4YW1wbGUgb2Ygd2hhdCBvdGhlciBmdW5jdGlvbnMKICAgIAl3aWxsIGxvb2sgbGlrZS4KCmRyZWVkZXIgMTYgT2N0IDk4IDExOjUwOjA5CiAgICAtIChzY2FwaS5jLCBzY2FwaS5oKSBPdXRwdXQgYnVmZmVyIGFyZ3VtZW50cyBmb3IgKGVufGRlKWNyeXB0aW5nIGFyZQogICAgCXNpbmdsZS1wb2ludGVycy4KCmxld2lzIDE2IE9jdCA5OCAxMzoxNToxNgogICAgLSAtIChzbm1wdXNtLmgpOgogICAgICAtIEFkZGVkIFVTTV9FUlIgc3ltYm9scyB1c2VkIGJ5IHVzbV9nZW5lcmF0ZV9vdXRfbXNnCgpsZXdpcyAxNiBPY3QgOTggMTM6MjA6MDcKICAgIC0gLSAoc25tcHVzbS5jKQogICAgICAtIFJld3JvdGUgdXNtX2dlbmVyYXRlX291dF9tc2csIHJlbmFtaW5nIG9sZCBpbXBsZW1lbnRhdGlvbiB0bwogICAgICAgIHVzbV9nZW5lcmF0ZV9vdXRfbXNnX05VTEwKICAgICAgLSBUaGlzIGNvZGUgY29tcGlsZWQgb24gRnJlZUJTRCwgbm90IHRlc3RlZCBmb3IgbGlua2luZyBvciBydW5uaW5nCiAgICAgIC0gQWRkZWQgZnVuY3Rpb25zIHRvIGNhbGN1bGF0ZSBpbmRpY2llcyAoYXNuX3ByZWRpY3RfaW50X2xlbmd0aCwKICAgICAgICBhc25fcHJlZGljdF9sZW5ndGgsIHVzbV9jYWxjX29mZnNldHMpIGFuZCB0byBtYWtlIHRoZSBDQkMtREVTCiAgICAgICAgaW5pdGlhbGl6YXRpb24gdmVjdG9yICh1c21fc2V0X3NhbHQpLgoKZHJlZWRlciAxOCBPY3QgOTggMjE6MTQ6MDkKICAgIC0gU0NBUEkgY29kZSBjb21wbGV0ZSwgYnV0IG5vdCBjb21wbGV0ZWx5IHRlc3RlZC4KICAgIAlBZGRlZCB0ZXN0aW5nLyBkaXJlY3RvcnkuCiAgICAJVmVyaWZpZWQgdGhhdCBFZCdzIHJlY2VudCBjaGFuZ2VzIGNvbXBpbGUgY2xlYW5seS4KICAgIAlUcmllZCB0byBwYXRjaCB1cCAiY3JpdGljYWwiIC1XYWxsIHdhcm5pbmdzLgoKaGFyZGFrZXIgMTkgT2N0IDk4IDA3OjEwOjI3CiAgICAtIChNYWtlZmlsZS50b3ApOiByZW1vdmUgLVdhbGwgcmVxdWlyZW1lbnQuCgpkcmVlZGVyIDE5IE9jdCA5OCAxNToxMjo1NwogICAgLSBDb3JlIFNDQVBJIHJvdXRpbmVzIGFwcGVhciBzb3VuZC4gIHRlc3RpbmcvIGRpcmVjdG9yeSBpcyBubyBsb25nZXIKICAgIAljb21tZW50ZWQgb3V0LiAgU05NUHYzIHN0eWxlIGtleSBtYW5pcHVsYXRpb25zIHVudGVzdGVkIHlldC4KICAgIAlDcmVhdGVkICg/KSBhIHNsZXcgb2YgbmV3IHdhcm5pbmdzIGZyb20gZmlsZXMgZWFybHkgaW4gY29tcGlsZSBzZXF1ZW5jZS4KCmRyZWVkZXIgMjAgT2N0IDk4IDExOjM4OjQyCiAgICAtIFRlc3RzIGZvciBnZW5lcmF0ZV9LdSBhbmQgZ2VuZXJhdGVfa3VsLiAgKHRlc3Rpbmcva3Rlc3QgLWggZm9yIGhlbHAuKQogICAgCUNsZWFuZWQgdXAgbmV3IHNldCBvZiAiY3JpdGljYWwiIHdhcm5pbmdzIC0tIG1vc3RseSBhZGRpbmcgI2luY2x1ZGUncy4KICAgIAlGaXhlZCBLTVQvYXBwcy9yYW5kdGVzdC5jIHNvIGl0IGNvbXBpbGVzIHVuZGVyIExpbnV4LgoKbWFyeiAyMSBPY3QgOTggMDg6MTg6MDMKICAgICAtKHNubXBfYXBpLltjaF0pOiBhZGQgZmllbGRzIGZvciBhdXRoS2V5IGFuZCBwcml2S2V5CgpsZXdpcyAyMSBPY3QgOTggMTI6MDc6MTYKICAgIC0gLSAoc25tcC5oKQogICAgICAtIEFkZGVkIFNOTVBfRVJSXyBlcnJvciBzeW1ib2xpYyBjb25zdGFudHMgZm9yIHRoZSBhdXRoL3ByaXYgKFVTTSkgbW9kdWxlCiAgICAgICAgcmVwb3J0ZWQgZXJyb3JzLgogICAgICAtIFVzZWQgdmFsdWVzIDE5LTI3LCB1cGRhdGVkIE1BWF9TTk1QX0VSUiB0byAyNy4KCmxld2lzIDIxIE9jdCA5OCAxMjowODoyNAogICAgLSAtIChzbm1wdXNtLmgpCiAgICAgIC0gQWRkZWQgc3ltYm9saWMgY29uc3RhbnRzIGZvciBlcnJvcnMgZm91bmQgcHJvY2Vzc2luZyBpbmNvbWluZyBtZXNzYWdlcy4KICAgICAgLSBFcXVhdGVkIHRoZSBzeW1ib2xzIHdpdGggdGhvc2UgYWRkZWQgdG8gc25tcC5oCgpoYXJkYWtlciAyMSBPY3QgOTggMTI6MTA6MDMKICAgIC0gKHNubXBfYXBpLmgpOiBhZGRlZCBBU04vU05NUCBjb3VudGVycyB0byB0aGUgY291bnRlciBsaXN0LgoKbWFyeiAyMSBPY3QgOTggMTI6NTA6MjQKICAgICAtKHNubXBfYXBpLltjaF0pOiBjb3JyZWN0bHkgYWRkICNkZWZpbmUgc2l6ZXMgZm9yIGF1dGhLZXkgYW5kIHByaXZLZXkKCm1hcnogMjEgT2N0IDk4IDEzOjM4OjU3CiAgICAgLShzbm1wX2FwaS5bY2hdKTogYWRkZWQgYXV0aC9wcml2IHByb3RvY29sIHR5cGUgZmllbGRzIHRvIHNlc3Npb24KCm1hcnogMjEgT2N0IDk4IDEzOjQ5OjExCiAgICAgLShzbm1wX2FwaS5jKTogYWRkZWQgY2FzdCBmb3IgaW50ZXJuYWwgcGR1IChpbnRlcm5hbCBwZHUgc2hvdWxkIGJlIGVsaW1pYW50ZWQgc29tZWRheSkKCmhhcmRha2VyIDIxIE9jdCA5OCAxMzo1MzozOAogICAgLSAoc25tcF9hcGkuaCk6IFNUQVRfTUFYX1NUQVRTIC0+IE1BWF9TVEFUUy4KCmhhcmRha2VyIDIxIE9jdCA5OCAxNzo1NDowOAogICAgLSAoc25tcHYzLmMpOiByZW1vdmUgc25tcF9wZXJyb3IoKSBkZWZpbmVkIGFzIHBlcnJvcigpLiAgSXQncyBhIHJlYWwgZnVuY3Rpb24uCgpoYXJkYWtlciAyMSBPY3QgOTggMTc6NTg6MDgKICAgIC0gKGFzbjEuYyk6IGFzbl9idWlsZF9zdHJpbmc6IGFsbG93IGEgbnVsbCBzdHJpbmcgdG8gYnVpbGQgYSAwMCBwYWRkZWQgc3RyaW5nLgoKaGFyZGFrZXIgMjEgT2N0IDk4IDE4OjAwOjA3CiAgICAtIChzbm1wX2FwaS5jKToKICAgICAgLSBlbmdpbmVJRCBkaXNjb3ZlcnkgZGVidWdnaW5nIG1lc3NhZ2VzLgogICAgICAtIHplcm8gbGVuZ3RoIGNvbnRleHROYW1lcyBvay4KICAgICAgLSBzZXQgbWF4IGxlbmd0aCBiZWZvcmUgdXNtX2dlbmVyYXRlX291dF9tc2coKS4KCmhhcmRha2VyIDIxIE9jdCA5OCAxOTowNDozNQogICAgLSAoc25tcF9hcGkuYyk6IG1vdmUgdGhlIGVuZ2luZUlEIGRpc2NvdmVyeSB0byBzbm1wX3Nlc3Nfb3BlbigpLgoKaGFyZGFrZXIgMjEgT2N0IDk4IDE5OjA1OjEyCiAgICAtIChzbm1wX2FwaS5oKTogc3luY2ggc25tcF9wZHUgYW5kIGludGVybmFsX3NubXBfcGR1LgoKZHJlZWRlciAyMSBPY3QgOTggMTk6NTU6MTUKICAgIC0gU2hvb2sgdGhlIGJ1Z3Mgb3V0IG9mIGtleSBtYW5pcHVsYXRpb24gcm91dGluZXMgKGdlbmVyYXRlX2t1bCwgZ2VuZXJhdGVfS3UpLgogICAgCUNvbXBsZXRlZCBhbmQgdGVzdGVkIEtleUNoYW5nZSBUQyBjb2RlICh7ZW5jb2RlLGRlY29kZX1fa2V5Y2hhbmdlKS4KICAgIAlDcmVhdGVkIGluaXRpYWwgZWxlbWVudHMgb2YgYW4gYXV0b21hdGVkIHRlc3QgaGFybmVzcyBpbiB0ZXN0aW5nLy4KICAgIAlDcmVhdGVkIGRhdGEgZmlsZXMgYW5kIHRlc3Qgc2NyaXB0cyB0byBkZW1vbnN0cmF0ZSBjb21wbGlhbmNlLgogICAgCU1pc2NlbGxhbmVvdXMgYWRkaXRpb25zIHRvIHNubXBsaWIvdG9vbHMuPywgc29tZSB0ZW1wb3JhcnkvdHJhbnNpdGlvbmFsLgoKbWFyeiAyMSBPY3QgOTggMTk6NTg6MTEKICAgICAtKHNubXBfcGFyc2VfYXJncy5jKTogYWRkIGF1dGgvcHJpdiBwcm90byBmbGFncywgYWRkIGF1dGggcHJpdiBrZXkgZmxhZ3MKCm1hcnogMjEgT2N0IDk4IDIwOjE5OjA4CiAgICAtIChzbm1wX2FwaS5bY2hdKTogdXBkYXRlZCBhdXRoL3ByaXYgcHJvdCBhbmQga2V5IGZpbGVkcyBpbiBzZXNzaW9uLCBhZGRlZCBzdXBvcnQgaW4gc25tcF9zZXNzX29wZW4gYW5kIGNsb3NlICh5YW5rZWQgZmllbGRzIGZyb20gUERVIC0gZGlkIEkgZG8gdGhhdD8pCgpoYXJkYWtlciAyMSBPY3QgOTggMjE6MjE6NDEKICAgIC0gKGxjZF90aW1lLmMpOiBtaW5vciB3YXJuaW5nIGZpeGVzLgoKaGFyZGFrZXIgMjEgT2N0IDk4IDIxOjIyOjA3CiAgICAtICh0b29scy5jLCB0b29scy5oKTogbmV3IHRvb2w6IG1lbWR1cCgpLgoKaGFyZGFrZXIgMjEgT2N0IDk4IDIyOjA4OjA3CiAgICAtIChzbm1wX2FwaS5jKToKICAgICAgLSBnZW5lcmF0ZSBhIHVzbSB1c2VyIGZyb20gc2Vzc2lvbiBkYXRhIGlmIG5lZWRlZC4KICAgICAgLSBjaGVjayB0aGUgcmVzdWx0IGZyb20gdGhlIHVzbSBhbmQgZmFpbCBpZiBpdCBkb2VzLgoKbWFyeiAyMiBPY3QgOTggMDg6MDI6MTEKICAgICAtKHNubXBfYXBpLmMpOiBhZGRlZCBERUJVR1AgY29kZSB0byB0cmFjZSBtZXNzYWdlIHZlcnNpb24gYW5kIHNlY0xldmVsIGZvciBkZW1vCgpsZXdpcyAyMiBPY3QgOTggMTM6Mzc6MzQKICAgIC0gLSAoc25tcHVzbS5jKQogICAgICAtIE5vdCBhIHdvcmtpbmcvdGVzdGVkIHZlcnNpb24sIGJ1dCBpdCBjb21waWxlcy4KICAgICAgLSBGaXhlZCBvbmUgYnVnIC0gIiYiIHRvICI9PSIgaW4gYW4gaWYoKQogICAgICAtIERpZCBub3QgYWx0ZXIgY29kZSB0byBkZW55IG51bGwgZW5naW5lIGlkIHVzZXJzCiAgICAgIC0gQWRkZWQgbXVjaCBjb2RlIGluIHByb2Nlc3MgaW5jb21pbmcgbWVzc2FnZQogICAgICAtIE5ldyB1c2Ugb2YgZXJyb3JzIGFuZCBERUJVR1AKICAgICAgLSBTdGlsbCB3YWl0aW5nIG9uIHVwZGF0ZXMgdG8gbGNkX3RpbWUuaCB0byBpbXBsZW1lbnQKICAgICAgICBzdGVwICMzIG9mIFJGQyAyMjc0LCBzMy4yLgoKZHJlZWRlciAyMyBPY3QgOTggMDk6NDU6NDcKICAgIC0gTENEIFRpbWUgQVBJIHByb3RvdHlwZXMgYXJlIGNvbXBsZXRlLiAgOTAlIHN0YWJsZS4KICAgIAlEcmFmdCBvZiBhdXRvbWF0ZWQgdGVzdGluZyBoYXJuZXNzIGluIHRlc3RpbmcvLgogICAgCQlVc2UgdGVzdGluZy9ldmFsX3N1aXRlLnNoIHRvIHJ1biBhbGwgY3VycmVudCB0ZXN0cy4KCmxld2lzIDIzIE9jdCA5OCAxMTozODoyNQogICAgLSAtIChsY2RfdGltZS5oKQogICAgICAtIGFkZGVkIGRlZmluaXRpb25zIGZvciBUUlVFIGFuZCBGQUxTRSAoaWYgbm90IHByZXZpb3VzbHkgZGVmaW5lZCkKICAgICAgLSBmaXhlZCBhIGNvbXBpbGF0aW9uIGJ1ZyBpbiB0aGUgZW5zdXJlIGVudHJ5IG1hY3JvCgpsZXdpcyAyMyBPY3QgOTggMTE6NDc6MzcKICAgIC0gLSAoc25tcHVzbS5jKQogICAgICAtIEFkZGVkIHRoZSBzdGVwIDMgY29kZSB0byBwcm9jZXNzIG91dGdvaW5nIG1lc3NhZ2VzIGZ1bmN0aW9uCiAgICAgIC0gU3RpbGwgdW4tcnVuCgpkcmVlZGVyIDIzIE9jdCA5OCAxNTozOTowMgogICAgLSBDb21wbGV0ZSBjb2RlIGZvciBMQ0QgdGltZSBBUEkuICBBd2FpdGluZyBzZXJpb3VzIHRlc3RzLgogICAgCUNoYW5nZWQgc25tcHYzX2dldF9lbmdpbmV7VGltZSxCb290c30gdG8gc25tcHYzX2xvY2FsX3NubXBFbmdpbmUqCgpkcmVlZGVyIDI0IE9jdCA5OCAyMzowNzo1NAogICAgLSBTaG9vayBidWdzIG91dCBvZiBMQ0QgdG8gbWFuYWdlIGVuZ2luZSBJRHMvdGltZSAoInRlc3RpbmcvZXRlc3QgLWEiKS4KICAgIAlBZGRlZCBhIGZ1bmN0aW9uIGR1bXBfc25tcEVuZ2luZUlEICgidGVzdGluZy9taXNjdGVzdCAtMSIpLgogICAgCQlNYWRlIHNwcmludF9oZXhzdHJpbmcgbm90LXN0YXRpYy4uLiAodGVtcG9yYXJ5IGNoYW5nZSBJIHRoaW5rKS4KICAgIAlBZGRlZCBjb21tZW50cy9xdWVzdGlvbnMgYWJvdXQgYnVpbGRpbmcgc25tcEVuZ2luZUlELiAgKHNubXB2My5jKQogICAgCUFkZGVkIFRSVUUvRkFMU0UgZGVmaW5lcyB0byBzbm1wdXNtLmMuICAoVGhlc2Ugc2hvdWxkIGJlIHN0YW5kYXJkaXplZC4pCiAgICAJQWRkZWQgU05NUF9NQVhCVUZfU01BTEwuICAodG9vbHMuaCkKICAgIAlDbGVhbmVkIHVwIChjbGFyaWZpZWQ/KSB0ZXN0IGhhcm5lc3MgZGVzY3JpcHRpb24uCgptYXJ6IDI1IE9jdCA5OCAxNDo0ODowNgogICAgIC0oc25tcF9wYXJzZV9hcmdzLmMpOiBtb3ZlIGtleSBnZW5lcmF0aW9uIChnZW5lcmF0ZV9LdSkgYWZ0ZXIgaW5pdF9zbm1wCgpoYXJkYWtlciAyNSBPY3QgOTggMjA6NTk6MzMKICAgIC0gKHNubXBfYWdlbnQuYyk6IGRlYnVnZ2luZyBwYXJzZS9idWlsZCBzdGF0ZW1lbnRzIGFuZCBlcnJubyBmaXhlcy4KCmhhcmRha2VyIDI1IE9jdCA5OCAyMTowMDoxNQogICAgLSAoc3lzdGVtLmgpOiBjcmVhdGVkIERFQlVHUEwgdG8gZG8gREVCVUdQIHdpdGggZmlsZS9saW5lIHN0YXRlbWVudHMuCgpoYXJkYWtlciAyNSBPY3QgOTggMjE6MDE6MDAKICAgIC0gKHRvb2xzLmMpOiBjaGVjayBtZW1kdXAoKSBmb3IgTlVMTCBwYXNzZWQgaW4uCgpoYXJkYWtlciAyNSBPY3QgOTggMjE6MDE6NTgKICAgIC0gKHJlYWRfY29uZmlnLmMpOiBidWcgZml4ZXM6IG1pc2MgTlVMTCBjaGVja3MuCgpoYXJkYWtlciAyNSBPY3QgOTggMjE6MDI6NDAKICAgIC0gKHNubXBfY2xpZW50LmMpOiBkZWZhdWx0IHRvIHNldHRpbmcgc2VjTmFtZUxlbiBhbmQgY29udGV4dE5hbWVMZW4gdG8gLTEuCgpkcmVlZGVyIDI1IE9jdCA5OCAyMjoyODoxOAogICAgLSBNb3N0bHkgc2h1ZmZsaW5nIHByZS1leGlzdGluZyB0aGluZ3MgYWJvdXQgLS0KICAgICAgICAgICAgVXNlZCBVU0VfSU5URVJOQUxfTUQ1IHB1dCBrbXRfaGFzaCBwYXJhbGxlbCB3aXRoIHYycCBNRDUgaGFzaC4KICAgICAgICAgICAgc2NfZW5jcnlwdC9zY19kZWNyeXB0IG5vdyBhbHNvIHJldHVybjogU05NUEVSUl9TQ19OT1RfQ09ORklHVVJFRC4KICAgICAgICAgICAgVGVzdGVkIGFuZCAiZml4ZWQiIGJ1aWxkIHdpdGggb24mb2ZmIHNldHRpbmdzIG9mOgogICAgICAgICAgICAgICAgICAgIFVTRV9WMlBBUlRZX1BST1RPQ09MLCBTQ0FQSV9BVVRIUFJJViwgVVNFX0lOVEVSTkFMX01ENS4KICAgICAgICAgICAgR3JlYXRlc3QgZGFtYWdlIGRvbmUgaW4gYWdlbnQvc25tcF9hZ2VudC5jLCBzbm1wbGliL3NubXBfY2xpZW50LmMuCiAgICAgICAgICAgIFJlcGFpcmVkIHVzZSBvZiBrZXkgbWFuaXB1bGF0aW9uIGZ1bmN0aW9ucyBpbiBzbm1wdXNtLmMuCiAgICAgICAgICAgICAgICAgICAgKENvdWxkIHVzZSBwZWVyIHJldmlldyBhcyBteSBleHBlY3RhdGlvbnMgb2YgdXNlIG1heSBkaWZmZXIuKQogICAgICAgICAgICBBZGRlZCAoYW5kIHJlbW92ZWQgMSkgc29tZSBYWFgncyBpbiBwYXJ0eSBjb2RlLi4uCgpoYXJkYWtlciAyNiBPY3QgOTggMTM6MzQ6MDMKICAgIC0gKHNubXB1c20uYyk6IGVuYWJsZSBOVUxMIGVuZ2luZUlEcyBpbiB1c2VyIHN0b3JhZ2UuCgpoYXJkYWtlciAyNiBPY3QgOTggMTM6Mzc6MDMKICAgIC0gKHNubXBfYXBpLmMsIHNubXBfYXBpLmgpOgogICAgICAtIGNyZWF0aW5nIHVzZXJzIGZyb20gYSBzZXNzaW9uOiAgY3JlYXRlX3VzZXJfZnJvbV9zZXNzaW9uKCkuCiAgICAgIC0gbWFrZSBwcm9iaW5nIHVzZSB0aGUgYWJvdmUgdHdpY2UgKG9uY2UgZm9yIE5VTEwgZW5naW5lSUQgYW5kIG9uY2UKICAgICAgICBmb3IgcHJvYmVkIGVuZ2luZUlEKS4KICAgICAgLSBidWcgZml4OiAgc25tcCB2ZXJzaW9uIHByaW50ZWQgaW4gZGVidWdnaW5nIHdhcyBvZmYgYnkgLTEuCgpoYXJkYWtlciAyNiBPY3QgOTggMjA6NDE6MTkKICAgIC0gKHNubXBfYWdlbnQuYyk6IHNldCBjb250ZXh0IG5hbWUgb24gZW5naW5lSUQgcmVwb3J0LgoKaGFyZGFrZXIgMjYgT2N0IDk4IDIwOjQyOjA2CiAgICAtIChzbm1wZC5jKTogY3JlYXRlIHRoZSAiaW5pdGlhbCIgdXNlciBmb3IgZW5naW5lSUQ6bnVsbC4KCmhhcmRha2VyIDI2IE9jdCA5OCAyMjoxMjoxNwogICAgLSAoa2V5dG9vbHMuYyk6IGNoZWNrIGZvciBOVUxMIHBvaW50ZXIsIG5vdCAqcG9pbnRlci4KCmhhcmRha2VyIDI2IE9jdCA5OCAyMjoxNTowMQogICAgLSAoc25tcHVzbS5jKTogbWFsbG9jIGt1bCBzcGFjZSBpbiB1c21fc2V0X3Bhc3N3b3JkKCkuCgpkcmVlZGVyIDI4IE9jdCA5OCAwOTozOTo1NwogICAgLSBnZXRfZW5naW5ldGltZSgpIG5vdyByZXR1cm5zIDwwLDA+IHR1cGxlIGZvciBOVUxMLyIiL2xlbj0wIGVuZ2luZUlEcy4KICAgIAlzY197Y2hlY2ssZ2VuZXJhdGV9X2tleWVkX2hhc2goKSBwcm9jZXNzIGhhc2hlcyA8PSBoYXNoIG91dHB1dCBsZW4uCiAgICAJCShTdGFibGUsIGJ1dCBleHBlY3QgYW4gZXhwYW5kZWQgdGVzdCBpbiBzY2FwaXRlc3QuYyBzb29uLikKICAgIAlNaXNjOiBQdXQgTUQ1X0hBU0hTSVpFX0JZVEVTIGluIHBhcnR5Lmg7IFNOTVBfWkVSTyBpbiB0b29scy5oCgpsZXdpcyAyOCBPY3QgOTggMTM6MTY6NTQKICAgIC0gLSAoc25tcHVzbS5jKQogICAgICAtIERlYnVnZ2VkIHJ1bm5pbmcgb2YgdXNtX2dlbmVyYXRlLi4uIGZ1bmN0aW9uIHNvIHRoYXQgaXQgcnVucyB3aXRoIG5vCiAgICAgICAgYXV0aGVudGljYXRpb24gLyBubyBwcml2YWN5IG9wdGlvbnMuICAoRG9uJ3QgaGF2ZSBhIHdheSB5ZXQgdG8gdGVzdAogICAgICAgIHdpdGggdGhlIGZhbmN5IHNlY3VyaXR5LikKICAgICAgLSBBZGRlZCBhIGxpbmUgZm9yIGRlYnVnZ2luZyB3aGljaCBzZXRzIGFsbCBieXRlcyBvZiB0aGUgc2VjdXJpdHkgaGVhZGVyCiAgICAgICAgYW5kIHRoZSBQRFUncyByZXN0aW5nIHBsYWNlIHRvIEZGIC0gZm9yIGRlYnVnZ2luZyBwdXJwb3NlcyBvbmx5LiAgVGhpcwogICAgICAgIGxldHMgbWUgc2VlIHdoYXQgYnl0ZXMgcmVtYWluIHRvIGJlIHB1bmNoZWQgaW4uICBUaGlzIGxpbmUgaXMgZmx1c2ggbGVmdAogICAgICAgIGluIHRoZSBmaWxlLCBpbmRpY2F0aW5nIHRoYXQgaXQgaXMgdG8gYmUgY3V0IG91dCBpZiB3ZSByZWFjaCByZWxlYXNlLgogICAgICAtIEFkZGVkICJlbWVyZ2VuY3lfcHJpbnQsIiBhbiB1bmNhbGxlZCByb3V0aW5lIEkgbGlrZSB0byBoYXZlIHdoZW4gcnVubmluZwogICAgICAgIGluIGdkYi4gIEl0IGR1bXBzIGEgZmllbGQgb2YgeCBieXRlcyBpbiBoZXgsIDI1IHZhbHVlcyB0byBhIGxpbmUuCgpkcmVlZGVyIDI4IE9jdCA5OCAxNDoxOTo1MgogICAgLSBCb3VuZGVkIEtNVCBjb2RlIHdpdGggI2RlZmluZSdzIGZvciBIQVZFX0xJQktNVAogICAgCS0gV2lsbCBub3QgY29tcGlsZSB3aXRob3V0IGVpdGhlciBIQVZFX0xJQktNVCAtb3ItIFVTRV9JTlRFUk5BTF9NRDUuCiAgICAJLSBBZGRlZCBuZXcgZXJyb3IgY29kZTogU05NUEVSUl9LVF9OT1RfQVZBSUxBQkxFLgogICAgCS0gQWRkZWQgYSB0ZXN0IGZvciBwcmV2aW91cyBjaGFuZ2VzIHRvIHNjXypfa2V5ZWRfaGFzaCgpIGZ1bmN0aW9ucy4KICAgIAkJKEF1Z21lbnRlZCB0ZXN0X2Rva2V5ZWRoYXNoKCkgaW4ga2V5bWFuYWdlbWVudC5jLikKCmxld2lzIDI5IE9jdCA5OCAwOTo1NjowOAogICAgLSAtIChzbm1wdXNtLmMpCiAgICAgIC0gTWFkZSBmaXhlcyB0byBwcm9jZXNzIGluY29taW5nCiAgICAgIC0gQmVnYW4gdG8gYWRkIGNvZGUgZm9yIHRoZSBzZWN1cml0eSBzdGF0ZSByZWZlcmVuY2UKCmxld2lzIDI5IE9jdCA5OCAxMDoyNzozNwogICAgLSAtIChzbm1wdXNtLmgpCiAgICAgIC0gQWRkZWQgcHJvdG90eXBlIGZvciBzZXRfcmVwb3J0RXJyb3JPblVua25vd25JRAoKbGV3aXMgMjkgT2N0IDk4IDEwOjI5OjE2CiAgICAtIC0gKHNubXB1c20uYykKICAgICAgLSBGaXhlZCBzb21lIG9mIFdlcycgcmVwb3J0ZWQgcHJvYmxlbXMuCiAgICAgIC0gQWRkZWQgY29kZSB0byBzdG9yZSBzZWNTdGF0ZVJlZgogICAgICAtIFN0aWxsIG5lZWQgdG8gdXNlIGl0IGluIGdlbmVyYXRlX291dGdvaW5nCgpsZXdpcyAyOSBPY3QgOTggMTQ6MzA6MTgKICAgIC0gLSAoc25tcHVzbS5jKQogICAgICAtIE5vdyBtYWtlcyB1c2Ugb2YgdGhlIHN0b3JlZCBzZWNTdGF0ZVJlZiBpbiBnZW5lcmF0ZSBvdXRnb2luZwogICAgICAtIEkgaG9wZSAtIEkgc3RpbGwgaGF2ZW4ndCBiZWVuIGFibGUgdG8gZ2V0IG1lc3NhZ2UgYmFjayBhbmQgZm9ydGgsCiAgICAgICAgaXQncyB0aW1lIHRvIGZpZ3VyZSBvdXQgaG93IHRvIHJ1biB0aGUgc25tcGQgc3R1ZmYgSSBndWVzcy4KCm1hcnogMjkgT2N0IDk4IDE1OjA2OjQ5CiAgICBhZGQgI2lkZWYgZ2F1cmRzIGZvciBrbXQuaCBhbmQga210X2FsZ3MuaCBkZXBlbmRlbnQgb24gZXhpc3RlbmNlIG9mIGhlYWRlcnMgcmF0aGVyIHRoYW4gbGlia210CgpsZXdpcyAzMCBPY3QgOTggMDY6NDU6MjQKICAgIC0gLSAoc25tcHVzbS5oKQogICAgICAtIEFkZGVkIGEgc3RhdGUgcmVmZXJlbmNlIGZyZWUgcm91dGluZQogICAgICAtIENoYW5nZWQgbmFtZSBvZiB0aGUgcm91dGluZSB0byBzZXQgdGhlIHJlcG9ydC1vbi1lcnJvciBmbGFnIHNvIHRoYXQgaXQKICAgICAgICBiZWdpbnMgd2l0aCAidXNtXyIuCgpsZXdpcyAzMCBPY3QgOTggMDY6NDY6NTIKICAgIC0gLSAoc25tcHVzbS5jKQogICAgICAtIE1vZGlmaWVkIHRoZSBmcmVlIHN0YXRlIHJlZiByb3V0aW5lIHRvIHRha2UgYSB2b2lkICogaW5zdGVhZCBvZiBhCiAgICAgICAgc3RydWN0IHdoYXRldmVyICosIHRoaXMgcGx1cyBhZGRpbmcgaXQgdG8gdGhlIC5oIGZpbGUgbWFrZXMgaXMgdXNlYWJsZQogICAgICAgIGJ5IHRoZSBNZXNzYWdlIFByb2Nlc3Nvci4KCmxld2lzIDMwIE9jdCA5OCAwNzozNDoyNgogICAgLSAtIChzbm1wdXNtLmMpCiAgICAgIC0gUmVtb3ZlZCBhIHBvdGVudGlhbCBtZW1vcnkgaG9sZSAocmV0dXJuaW5nIG9uIGVycm9yIGZyb20gdGhlIHByb2Nlc3MKICAgICAgICBpbmNvbWluZyByb3V0aW5lIHdpdGhvdXQgZnJlZWluZyB0aGUgc2VjdXJpdHkgc3RhdGUgcmVmZXJlbmNlKS4KCmhhcmRha2VyIDMwIE9jdCA5OCAwODozODo1MwogICAgLSAoc25tcHYzLmMpOiBzbm1wX3BlcnJvcigpIC0+IHBlcnJvcigpIFsibWFsbG9jIl0uCgpoYXJkYWtlciAzMCBPY3QgOTggMDg6NDM6NTIKICAgIC0gKHNubXBkLmMpOgogICAgICAtIE1ha2UgLUQgYSB0b2dnbGUuCiAgICAgIC0gdXNlIHVzbV9zZXRfcmVwb3J0RXJyb3JPblVua25vd25JRCgpLgoKaGFyZGFrZXIgMzAgT2N0IDk4IDA4OjQ1OjA5CiAgICAtIChzbm1wX3BhcnNlX2FyZ3MuYyk6CiAgICAgIC0gTWFrZSAtRCBhIHRvZ2dsZS4KCmhhcmRha2VyIDMwIE9jdCA5OCAxNjo0NDo0MwogICAgLSAoc25tcF9hZ2VudC5jKTogbWFrZSB0aGUgYWdlbnQgd2F0Y2ggdGhlIGVycm9yIHN0YXR1cyBmcm9tIHBhY2tldAogICAgICBwYXJzaW5nIGluc3RlYWQgb2YgZG9pbmcgY2hlY2tzIGl0c2VsZi4KCmhhcmRha2VyIDMwIE9jdCA5OCAxNjo1MjowMwogICAgLSAoc25tcHVzbS5jKTogdXNtX2dldF91c2VyKCk6IGFsbG93IGEgbnVsbCBsZW5ndGggKGJ1dCBub24gbnVsbAogICAgICBwb2ludGVyKSBlbmdpbmVJRC4KCm1hcnogIDEgTm92IDk4IDE1OjU1OjExCiAgICAgLShhc24xLmMsIGxjZF90aW1lLmMsIHNubXBfYXBpLmMsIHNubXBfYXBpLmgsIHNubXBfY2xpZW50LmMsIHNubXB1c20uYywgc25tcHYzLmMpOiByZW1vdmUgaW50ZXJuYWwgcGR1L3Zhcmxpc3QsIHBkdV9mcmVlIHVwZGF0ZSwgaGFuZGxlIGluaXRpYWwgdXNlciBhcyBkaXNjdXNzZWQsIHJlbW92ZSBpbml0aWFsIHVzZXIgaGFjaywgcmVtb3ZlIGVuZ2luZUlEIHByb2JlL1JlcG9ydCBoYWNrLCBoYW5kbGUgc2VjdXJpdHlTdGF0ZVJlZiBhcyBkaXNjdXNzZWQsIGhhbmRsZSB6ZXJvLWxlbmd0aCBjb250ZXh0LCBub3JtYWxpemUgX2VuZ2luZXRpbWUgYXJnIG9yZGVyLCBpbmNsdWRlIHdlcydzIHBhdGNoZXMgZm9yIG51bGwgZW5naW5laWQgYW5kIHNlY05hbWVMZW4rKwoKaGFyZGFrZXIgIDEgTm92IDk4IDE5OjMyOjQzCiAgICAtIChzbm1wX3BhcnNlX2FyZ3MuYywgc25tcF9wYXJzZV9hcmdzLmgsIHNubXBidWxrd2Fsay5jLCBzbm1wZGVsdGEuYywKICAgICAgc25tcGdldC5jLCBzbm1wZ2V0bmV4dC5jLCBzbm1wc2V0LmMsIHNubXBzdGF0dXMuYywgc25tcHRhYmxlLmMsCiAgICAgIHNubXB0ZXN0LmMsIHNubXB0cmFwLmMsIHNubXB3YWxrLmMpOgogICAgICAtIHVzZSAic25tcGFwcCIgYXMgY29uZmlndXJhdGlvbiBmaWxlIG5hbWUuCgpoYXJkYWtlciAgMSBOb3YgOTggMTk6MzY6NTkKICAgIC0gKHNubXBfYXBpLmMpOiBnZW5lcmF0ZSB1c2VyLT5LdWwgZnJvbSBzZXNzaW9uLT5LdS4KCmhhcmRha2VyICAxIE5vdiA5OCAxOTozODoyOQogICAgLSAoc25tcF9hZ2VudC5jKTogZ2VuZXJhdGUgYWxsIHNvcnRzIG9mIG5ldyBTTk1QIHJlcG9ydHMgd2hlbiBuZWVkZWQuCgpoYXJkYWtlciAgMSBOb3YgOTggMTk6Mzk6MjkKICAgIC0gKHNubXBkLmMpOiB1c2Ugc25tcF9wZXJyb3IoKSBpZiBzbm1wX2FnZW50X3BhcnNlKCkgcmV0dXJucyAwLgoKaGFyZGFrZXIgIDIgTm92IDk4IDA5OjAwOjI1CiAgICAtICh2YWNtLmMpOiBhbGxvdyBhIHNlY3VyaXR5IGxldmVsID49LCBub3QgPT0uCgpoYXJkYWtlciAgMiBOb3YgOTggMDk6MDE6MDcKICAgIC0gKHNubXB2My5jKTogcmVtb3ZlIHVzbV9jcmVhdGVfaW5pdGlhbCgpIGFuZCBzZXRfZW5naW5ldGltZSgpLgoKaGFyZGFrZXIgIDIgTm92IDk4IDA5OjA2OjA0CiAgICAtIChzbm1wdXNtLmMsIHNubXB1c20uaCk6CiAgICAgIC0gbmV3IGZ1bmN0aW9uOiBpbml0X3VzbV9wb3N0X2NvbmZpZyh2b2lkKTsKICAgICAgLSBtYWtlIHVzbV9nZXRfdXNlcl9mcm9tX2xpc3QoKSBoYW5kbGUgYSBib2d1cyBpbml0aWFsIHVzZXIgZmxhZy4KCmhhcmRha2VyICAyIE5vdiA5OCAwOTowOTozNQogICAgLSAoc25tcF9hcGkuYyk6CiAgICAgIC0gdXNlIGluaXRfdXNtX3Bvc3RfY29uZmlnKCk7CiAgICAgIC0gdXNlIHVzbV9nZXRfdXNlcl9mcm9tX2xpc3QgdG8gYXNrIG5vdCB0byByZXR1cm4gdGhlIGRlZmF1bHQgaW5pdGlhbCB1c2VyLgogICAgICAtIGZpeCBzbm1wX3Zhcl9hZGRfdmFyaWFibGUoKSB0byBhbGxvdyBjb3VudGVycy4KCmhhcmRha2VyICAyIE5vdiA5OCAwOToxMDoxNQogICAgLSAoc25tcF9wYXJzZV9hcmdzLmMpOiB0eXBvIG9uIGRlcyBrZXkgaW5pdGlhbGl6YXRpb24sIGZvcmdvdCB0aGUgJ1gnLgoKaGFyZGFrZXIgIDIgTm92IDk4IDA5OjEzOjM2CiAgICAtIChzbm1wX2FnZW50LmMpOgogICAgICAtIGZpeCByZXBvcnQgT0lEcyB0byBiZSBjb3JyZWN0LgogICAgICAtIGRlYnVnZ2luZyBzdGF0ZW1lbnQgd2hlbiBzZW5kaW5nIGEgcmVwb3J0LgogICAgICAtIGFkZGVkIHVuc3VwcG9ydGVkIHNlY3VyaXR5IGxldmVsIHJlcG9ydC4KICAgICAgLSBzZW5kIGEgY291bnRlciBpbnN0ZWFkIG9mIGFuIGludGVnZXIuCgpoYXJkYWtlciAgMiBOb3YgOTggMTY6MDE6MjQKICAgIC0gKHNubXBfcGFyc2VfYXJncy5jKTogZ2VuZXJhdGUgS3UgZm9yIHByaXYgcHJvdG9jb2wgdXNpbmcgYXV0aCBwcm90b2NvbCBoYXNoLgoKaGFyZGFrZXIgIDMgTm92IDk4IDA5OjM3OjAzCiAgICAtIChsY2RfdGltZS5jKTogZmlyc3QgYnl0ZT09MCBlbmdpbmUgSUQncyBhcmUgdmFsaWQuCgpsZXdpcyAgNCBOb3YgOTggMTE6MzU6MjkKICAgIC0gLSAoc25tcHVzbS5jKQogICAgICAtIEJldHRlciBoYW5kbGluZyBvZiBudWxsIGFuZCB1bmtub3duIGVuZ2luZSBJRHMuCgpkcmVlZGVyICA0IE5vdiA5OCAxMTo0NTowOAogICAgLSAobGNkX3RpbWUuYykgU3BlY2lhbCBjYXNlcyBmb3IgTlVMTCBvciAwIGxlbmd0aCBlbmdpbmVJRHMuCgpoYXJkYWtlciAgNCBOb3YgOTggMjE6NTM6MzIKICAgIC0gKHNubXBfYWdlbnQuYyk6IGNoZWNrIGVuZ2luZUlEIHRvIG1ha2Ugc3VyZSBpdHMgdXMuCgpsZXdpcyAgNSBOb3YgOTggMDk6NTI6MzUKICAgIC0gLSAoc25tcHVzbS5jKQogICAgICAtIEZpeGVkIGNhbGwgdG8gcHJlZGljdCBpbnRlZ2VyIGxlbmd0aCByb3V0aW5lIHRvIGdpdmUgaXQgdGhlICp3aG9sZSoKICAgICAgICBudW1iZXIsIG5vdCBqdXN0IG9uZSAoZmlyc3QvbGFzdCBkZXBlbmRzIG9uIGVuZGlhbikgb2YgdGhlIG51bWJlci4KICAgICAgICBEb2ghIHNjYWxlIHJhdGluZyA5LgogICAgICAtIEFsdGVyZWQgdGhhdCByb3V0aW5lIHRvIGJlIG1vcmUgbGlrZSB0aGUgYXNuX2J1aWxkX2ludCAuLi4gaS5lLiwgbm8KICAgICAgICBsb25nZXIgYXNzdW1lcyB0aGUgbGVuZ3RoIG9mIHRoZSBsZW5ndGggaXMgMS4gIERvaCEgcmF0aW5nIGEgMS4KCmxld2lzICA1IE5vdiA5OCAxMTowMzoyNAogICAgLSAtIChzbm1wdXNtLmMpCiAgICAgIC0gRml4ZWQgc29tZSBERUJVR1AgY2FsbHMgdG8gc2hvdyB0aGUgcmlnaHQgZnVuY3Rpb24sIHBlcmhhcHMgdGhlc2Ugd2lsbAogICAgICAgIGJlY29tZSBERUJVR1BMIGluIHRoZSBmdXR1cmUuCgpkcmVlZGVyICA1IE5vdiA5OCAxNTozNzoyOQogICAgLSBNb3N0bHkgZnVuY3Rpb24gaGVhZGVyIGNvbW1lbnRzIGluIHJlYWRfY29uZmlnLmMsIHV0aWxfZnVuY3MuYywgc25tcHYzLmMuCiAgICAgIAkoUGxlYXNlIGZlZWwgZnJlZSB0byBjaGVjayBmb3IgYWNjdXJhY3kuLi4pCiAgICAgIENoZWNrIGZvciBOVUxMIGluIHJlZ2lzdGVyX2NvbmZpZ19oYW5kbGVyKCkuCiAgICAgIEFkZGVkIGxlbmd0aCBhcmd1bWVudCB0byBzbm1wdjNfZ2V0X2VuZ2luZUlEKCkuCiAgICAgIENoZWNrIGZvciBsZW5ndGgoUCk8VVNNX0xFTkdUSF9QX01JTiBpbiBnZW5lcmF0ZV9LdSgpLgogICAgICBOb3RlOiAiZXRlc3QgLWEiIGhhcyBhIG5ldyBmYWlsdXJlOyB0byBiZSBmaXhlZCB3aGVuIFRpbWUgTENEIHJlLXN0YWJpbGl6ZXMuCgptYXJ6ICA2IE5vdiA5OCAxNjoxMzozNwogICAgIC0oc25tcF9hcGkuW2NoXSwgc25tcF9jbGllbnQuYyk6IGhhbmRsZSBSZXBvcnRzIHRvIHRyaWdnZXIgcmVzZW5kLCBleGNlcHQgZm9yIHVua25vd25FbmdpbmVJRCwgcGFzcyBzZWNTdGF0ZVJlZiB0byByZWNlaXZlIHNlY3VyaXR5U3RhdGUgZnJvbSBVU00gKldBUk5JTkcqIGdldHRpbmcgYXV0aG9yaXphdGlvbiBmYWlsdXJlIGluIFVTTSogcGxlYXNlIGhlbHAgLSB0aGlzIHdhcyBub3QgaGFwcGVuaW5nIGJlZm9yZSBzbyBkb3VidGxlc3MgaXQgaXMgbXkgZmF1bHQ/CgptYXJ6ICA3IE5vdiA5OCAxMjozMzo0OQogICAgIC0oc25tcF9hcGkuYywgbGNkX3RpbWUuW2NoXSwgc25tcHVzbS5jKTogY2xlYW4gdXAgcHJvYmxlbXMgY2F1c2VkIHdoZW4gd2UgYmVnYW4gdXNpbmcgc2VjU3RhdGVSZWYsIG90aGVyIFVTTSBlcnJvcnMsIGltcGxlbWVudCBMQ0RfVElNRV9TWU5DX09QVCBvcHRpbWl6YXRpb24KCm1hcnogIDcgTm92IDk4IDEyOjM3OjIxCiAgICAgLShzbm1wX2FnZW50LmMsIHNubXBkLmMpOiBjbGVhbiB1cCBwcm9ibGVtcyBjYXVzZWQgd2hlbiB3ZSBiZWdhbiB1c2luZyBzZWNTdGF0ZVJlZiwgc2V0X2VuZ2luZXRpbWUgaW4gTENEIHBvc3QgY29uZmlnIHJlYWQsIExDRF9USU1FX1NZTkNfT1BUIHRpbWUgbGVybmluZyBvcHRpbWl6YXRpb24sIGluY2x1ZGUgZmlsZSBmb3IgbGNkX3RpbWUgYWRkZWQsIG1vdmVkIG1ha2VfcmVwb3J0IHRvIHNubXBsaWIgLSByZXBvcnQgZ2VuZXJhdGlvbiBpcyBzdGlsbCBpbiBhZ2VudAoKaGFyZGFrZXIgIDkgTm92IDk4IDEzOjI5OjE5CiAgICAtIChzbm1wX2FwaS5jKTogZ2VuZXJhdGVfa3VsIHNob3VsZCB1c2UgYXV0aHByb3RvY29sLgoKbWFyeiAxMSBOb3YgOTggMDc6NTE6NDMKICAgICAtKGxjZF90aW1lLmMsIHNubXB1c20uYyk6IGZpeGVzIHRvIGhhbmRsZSBudWxsIGVuZ2luZSBJRCAtIHRvbGVyYXRlZCB3aGVuIHNlbmRpbmcsIHVua25vd24gd2hlbiByZWNlaXZpbmcKCm1hcnogMTEgTm92IDk4IDA4OjAzOjI0CiAgICAgLShzbm1wX2FnZW50LmMpOiByZW1vdmUgd29ya2Fyb3VuZCB0byBkZXRlY3QgdW5rbm93bkVuZ2luZUlEIGVycm9yIC0gbm93IGRvZW4gaW4gVVNNIGFzIHNwZWMnZAoKaGFyZGFrZXIgMTEgTm92IDk4IDEyOjM3OjQ3CiAgICAtIChzbm1wZC5jLCBzbm1wX2FwaS5jLCBzbm1wdjMuYywgc25tcHYzLmgpOgogICAgICAtIG1vdmUgaW5pdGlhbCBzZXRfZW5naW5ldGltZSgpIGZyb20gYWdlbnQgdG8gc25tcHYzLmMuCiAgICAgIC0gbmV3IHNubXAuY29uZiBjb25maWd1cmUgZmlsZSB0b2tlbnM6IGRlZkF1dGhUeXBlLCBkZWZQcml2VHlwZSwKICAgICAgICBkZWZQYXNzcGhyYXNlLCBkZWZBdXRoUGFzc3BocmFzZSwgZGVmUHJpdlBhc3NwaHJhc2UuCiAgICAgIC0gbWluaW11bSBib290cyB1c2VkIGlzIDEsIG5vdCAwLgoKaGFyZGFrZXIgMTEgTm92IDk4IDEzOjA5OjI2CiAgICAtIChzbm1wZC5jKTogYWRkZWQgbmVlZGVkIGluaXRfKCkgcm91dGluZXMuCgpoYXJkYWtlciAxMSBOb3YgOTggMTM6MTE6MDIKICAgIC0gKHNubXB2My5jKTogZG9uJ3QgcHJpbnQgb2lkcyB0byAlcydzLgoKaGFyZGFrZXIgMTMgTm92IDk4IDA3OjU5OjA0CiAgICAtIChzbm1wZC5jKTogY3JlYXRlIHRoZSBjb3JyZWN0IGluaXRpYWwgdXNlciBhZnRlciBlbmdpbmVJRCBjb25maWd1cmF0aW9uLgoKaGFyZGFrZXIgMTMgTm92IDk4IDA4OjAzOjQ1CiAgICAtICh1c21Vc2VyLmMpOiBkb24ndCBpbml0aWFsaXplIHVzZXIgaGVyZS4KCmhhcmRha2VyIDEzIE5vdiA5OCAwODowNDo0MgogICAgLSAoc25tcHYzLmMpOiBtYWtlIGVuZ2luZUlEIGNvbmZpZ3VyYXRpb24gbGluZXMgZ2V0IHBhcnNlZCBlYXJseS4KCmhhcmRha2VyIDEzIE5vdiA5OCAwODoxNDowNAogICAgLSAoc25tcHVzbS5jKToKICAgICAgLSBtb3JlIGFwcHJvcHJpYXRlIGVuZ2luZUlEIGNoZWNraW5nIGZvciB1c2VycyAod2FzIGEgYnVnKS4KICAgICAgLSB1c21fYWRkX3VzZXIoKTogZG9uJ3QgZHVwbGljYXRlIHVzZXJzIHdpdGggdGhlIHNhbWUgbmFtZS9lbmdpbmVJRC4KCmhhcmRha2VyIDE1IE5vdiA5OCAxMDoxOTo1NQogICAgLSAoc25tcGQuYyk6IG1vdmUgcG9zdF9jb25maWcgaW5pdCByb3V0aW5lcyB0byBiZXlvbmQgcGVyc2lzdGVudCByZWFkaW5nLgoKaGFyZGFrZXIgMTUgTm92IDk4IDEyOjU1OjM4CiAgICAtIChNYWtlZmlsZS5pbik6CiAgICAgIC0gbmV3IG1ha2UgdGFyZ2V0OiB0ZXN0CiAgICAgIC0gbWFrZSBhbGwgZG9lc24ndCBjb21waWxlIHRoZSB0ZXN0aW5nIGRpcmVjdG9yeS4KCmhhcmRha2VyIDE1IE5vdiA5OCAxMzowMDo0MQogICAgLSAodXNtVXNlci5jLCBzbm1wdXNtLmMsIHNubXB1c20uaCk6CiAgICAgIC0gdXNtX3JlbW92ZV91c2VyKCk6CiAgICAgICAgLSBwcm9wZXJseSB1cGRhdGVzIHRoZSBsaXN0IHBvaW50ZXIuCiAgICAgICAgICAtIHJlcXVpcmVzIGEgKiogcG9pbnRlciB0byB0aGUgbGlzdCB0byBkbyB0aGlzLgogICAgICAgIC0gY2hlY2sgYWdhaW5zdCBhIE5VTEwgbGlzdCBwb2ludGVyLgogICAgICAtIHVzbV9jbG9uZUZyb21fdXNlcigpOgogICAgICAgIC0gdGhlIGtleXMgd2VyZSBub3QgYmVpbmcgcHJvcGVybHkgZHVwbGljYXRlZC4KICAgICAgLSB1c21fY2xvbmVfdXNlcigpOiBkZWxldGVkLgogICAgICAtIHVzbV9jcmVhdGVfdXNlcigpOiBjcmVhdGVkLCBhbmQgdXNlZCBpbiBwbGFjZSBvZiB1c21fY2xvbmVfdXNlcihOVUxMKS4KCmhhcmRha2VyIDE1IE5vdiA5OCAxMzowMToyNwogICAgLSAoZXRpbWV0ZXN0LmMpOiBmaXggY2FsbHMgdG8gc2V0L2dldF9lbmdpbmV0aW1lKCkuCgpoYXJkYWtlciAxNSBOb3YgOTggMTQ6MTQ6MDcKICAgIC0gKElTU1VFUyk6IGZpbmlzaGVkIGEgY291cGxlIG9mIHRoaW5ncy4KCmhhcmRha2VyIDE1IE5vdiA5OCAxNDoxOToyMQogICAgLSAoSVNTVUVTLCBzbm1wX2FnZW50LmMpOiBmaXggcGR1IGZyZWVpbmcgcHJvYmxlbSwgdGhhbmtzIHRvIEpvZSdzCiAgICAgIG1lcmdlIG9mIHRoZSBwZHUgc3RydWN0dXJlcy4KCmhhcmRha2VyIDE1IE5vdiA5OCAxNTo1MDozMwogICAgLSAoSVNTVUVTKTogbWlzYyBkYXRlIGNoYW5nZXMgYW5kIG1hcmsgdGhhdCBJJ20gd29ya2luZyBvbiBzb21ldGhpbmcuCgpoYXJkYWtlciAxNSBOb3YgOTggMTU6NTM6MjQKICAgIC0gKHNubXBkLmMsIHJlYWRfY29uZmlnLmMsIHNubXBfYXBpLmMpOgogICAgICAtIGNyZWF0ZS9jYWxsIHNubXBfc2h1dGRvd24oKS4KICAgICAgLSByZW1vdmUgdGhlICJwZXJzaXN0ZW50LiIgcGFydCBvZiB0aGUgcGVyc2lzdGVudCAuY29uZiBuYW1lLgogICAgICAtIHJlbmFtZSBpbnN0ZWFkIG9mIHVubGluayBvbGQgcGVyc2lzdGVudCAuY29uZiBmaWxlLgoKaGFyZGFrZXIgMTUgTm92IDk4IDE3OjM3OjAwCiAgICAtIChJU1NVRVMsIHNubXB2My5jKTogd2hlbiBlbmdpbmVJRCBjaGFuZ2VzIGZyb20gdGhlIHByZXZpb3VzIHJ1biwKICAgICAgcmVzZXQgZW5naW5lQm9vdHMgdG8gMS4gIChyZXF1aXJlcyBzdG9yaW5nIHRoZSBsYXN0IGVuZ2luZUlEIHVzZWQpLgoKaGFyZGFrZXIgMTYgTm92IDk4IDIwOjEwOjE5CiAgICAtIChzbm1wX2FnZW50LmMsIHNubXBkLmMsIHNubXBfbWliLmMsIHNubXBfbWliLmgsIHNubXBfYXBpLmMsCiAgICAgIHNubXBfYXBpLmgpOgogICAgICAtIHVzZSBuZXcgbGlicmFyeSBiYXNlZCBzdGF0aXN0aWNzIGNvdW50ZXIgZXZlcnl3aGVyZS4KCmhhcmRha2VyIDE2IE5vdiA5OCAyMDoxNzowMQogICAgLSAodXRpbF9mdW5jcy5jLCB1dGlsX2Z1bmNzLmgsIGludGVyZmFjZXMuYywgc3lzdGVtLmMsIHJlZ2lzdHJ5LmMpOgogICAgICAtIHVzZSBoZWFkZXJfZ2VuZXJpYyBpbiBhIGZldyBtb3JlIHBsYWNlcy4KICAgICAgLSBzdGFuZGFyZGl6ZSB0aGUgTUFUQ0hfRkFJTEVEIGFuZCBNQVRDSF9TVUNDRUVERUQgZGVmaW5pdGlvbnMuCgpoYXJkYWtlciAyMiBOb3YgOTggMDc6MjQ6NTYKICAgIC0gKHNubXB1c20uYyk6IHVzbV9jcmVhdGVfaW5pdGlhbF91c2VyKCkgYWNjZXB0cyBuYW1lICYgYXV0aC9wcml2IHR5cGVzLgoKaGFyZGFrZXIgMjIgTm92IDk4IDA3OjI1OjUyCiAgICAtIChzbm1wZC5jKToKICAgICAgLSBsb2cgUElEIHRvIGZpbGUgdXNpbmcgLVAuCiAgICAgIC0gY3JlYXRlIHRlbXBsYXRlIHVzZXJzOiAgdGVtcGxhdGVNRDUgJiB0ZW1wbGF0ZVNIQS4KCmhhcmRha2VyIDIyIE5vdiA5OCAwNzoyNjozMAogICAgLSAoa2V5bWFuYWdldGVzdC5jKTogbmV3IGZsYWc6IC1xID0gcXVpZXQuCgpoYXJkYWtlciAyMiBOb3YgOTggMDc6Mjc6MTIKICAgIC0gKGRlbW8pOiBzY3JpcHQgdG8gcnVuIGxpc3Qgb2YgY29tbWFuZHMgcmVxdWlyZWQgZm9yIHRoZSBkZW1vLgoKaGFyZGFrZXIgMjIgTm92IDk4IDA3OjI4OjU4CiAgICAtICguY3ZzaWdub3JlKTogaWdub3JlIHRlc3RpbmcgdGFyZ2V0cy4KCmhhcmRha2VyIDIyIE5vdiA5OCAxNDozNjo1MwogICAgLSAoZGVtbyk6IHF1b3RlIHRoZSBwYXNzIHBocmFzZS4KCmhhcmRha2VyIDIyIE5vdiA5OCAyMjoxNjo0NAogICAgLSAoZGVtbyk6CiAgICAgIC0gcGFzcy9mYWlsIHR5cGUgb3V0cHV0LgogICAgICAtIGhvc3RzIG90aGVyIHRoYW4gbG9jYWxob3N0LgogICAgICAtIGNhcGFiaWxpdHkgdG8gbG9vayBmb3Igc3R1ZmYgaW4gb3V0cHV0IG9mIGNvbW1hbmRzLgoKaGFyZGFrZXIgMjIgTm92IDk4IDIyOjI2OjI4CiAgICAtIChkZW1vKTogdHVybiBlbmNyeXB0aW9uIG9uIGZvciB0ZXN0cyB0aGF0IG5lZWQgaXQuCgpoYXJkYWtlciAyMyBOb3YgOTggMDc6MTQ6MDUKICAgIC0gKGtleW1hbmFnZXRlc3QuYyk6IHByaW50IE1ENS9TSEEgYmVmb3JlIHRoZSBrZXljaGFuZ2Ugc3RyaW5nLgoKaGFyZGFrZXIgMjMgTm92IDk4IDA3OjE2OjAxCiAgICAtIChkZW1vKTogZml4IHRoZSBrZXkgY2hhbmdlIHN0cmluZyBleHRyYWN0aW9uIHRvIGxvb2sgZm9yIHRoZSBNRDUgdmVyc2lvbi4KCmhhcmRha2VyIDIzIE5vdiA5OCAwNzozODo0NAogICAgLSAoa2V5bWFuYWdldGVzdC5jKTogYmVxdWlldCBzaG91bGQgYmUgMCBieSBkZWZhdWx0LgoKaGFyZGFrZXIgMjMgTm92IDk4IDA4OjA2OjM0CiAgICAtIChkZW1vKTogYnVnIGZpeGVzLgoKZHJlZWRlciAyNCBOb3YgOTggMTY6NDM6NTAKICAgIEZpeGVkIGJ1ZyBpbiBVU00gcHJldmVudGluZyBleGNoYW5nZSBvZiBjcnlwdGVkIHBhY2tldHMuICBDb2RlIGFkZGVkCiAgICAJdG8gcHJvcGVybHkgZXN0aW1hdGUgc2l6ZSBvZiBjcnlwdGVkIHRleHQgZ2l2ZW4gdW4tcGFkZGVkIHBsYWludGV4dC4KICAgIAlGb3VuZC9maXhlZCBLTVQgcHJvdG90eXBlIGNvbmZsaWN0IHRoYXQgY2F1c2VkIHRoZSBnaXZlbiBJViB0byBiZQogICAgCWlnbm9yZWQgYXQgY3J5cHQvZGVjcnlwdCB0aW1lLgogICAgc2V0dXBfZW5naW5lSUQoKSBoYXMgYSBuZXcgYXJndW1lbnQgdG8gYWxsb3cgSUQgc3RyaW5ncyB0byBiZSByZXR1cm5lZAogICAgCXRvIGNhbGxlci4KICAgIE5ldyBmaWxlIHNubXBsaWIvdHJhbnNmb3JtX29pZHMuaCB0byBwdXQgc3RhdGljIGRlY2xhcmF0aW9ucyBpbiBhIHNpbmdsZQogICAgCXBsYWNlLi4uCiAgICBGYWlsdXJlIG9mIHN0YXQgaW5jcmVtZW50cyBpbiBVU00gbm8gbG9uZ2VyIGNhdXNlIGZhaWx1cmUgaW4gdGhlIGNhbGxpbmcKICAgIAlmdW5jdGlvbi4KICAgIEFkZGVkIHV0aWxpdHkgYXBwcy9lbmNvZGVfa2V5Y2hhbmdlLiAgKC1oIGZvciB1c2FnZS4pCiAgICBESUZGVElNRSBtYWNybyB0byByZXBsYWNlIG9mdCByZXBlYXRlZCBjb2RlLgogICAgU2hvcnRlbmVkIHNvbWUgVkFDTSBkZWJ1Z2dpbmcgb3V0cHV0IHRvIGEgc2luZ2xlIGxpbmUgZnJvbSBtYW55LgogICAgTW9yZSBjb21tZW50cy4gIE1vcmUgdHJvdWJsZSBzcG90cyBtYXJrZWQgWFhYLgogICAgQ29udmVydGVkIG9mdCB1c2VkIG1hZ2ljIG51bWJlcnMgdG8gc3ltYm9saWMgY29uc3RhbnRzIChzb21lIHByZS1leGlzdGluZykuCiAgICBDbGVhbmVkIHVwIHNvbWUgc2ltcGx5IGZpeGVkIGJ1aWxkIHdhcm5pbmdzLgogICAgVXBkYXRlZCBub25leHBvcnQvY3J5cHRvL1JFQURNRS4gIFN0aWxsIG5lZWRzIHdvcmsuCgptYXJ6IDI1IE5vdiA5OCAwNzo0NDoyOAogICAgIC0oc25tcF9wYXJzZV9hcmdzLmMpOiBhZGRlZCAtVCA8Ym9vdHM+IDx0aW1lPiB0byBzZXQgYW4gaW5pdGlhbCAoYXV0aGVudGljYXRlZCkgdGltZSB2YWx1ZSBmb3IgdGhlIGRlc3RpbmF0aW9uIGVuZ2luZUlEcyBib290cy90aW1lKQoKbWFyeiAyNSBOb3YgOTggMDc6NDg6NDkKICAgICAtKHNubXBfYXBpLltjaF0sIHNubXAuaCwgc25tcF9jbGllbnQuYyk6IGhhbmRsZSBpbmNvbWluZyBSZXBvcnRzIC0gcHJvcGFnYXRlIFNUQVRfRVJST1IgdG8gYXBwcyB3aXRoIGFwcHJvcC4gZXJyb3IgbWVzc2FnZSwgaGFuZGxlIHJlY292ZXJhYmxlIGVycm9yIG5vdEluVGltZVdpbmRvdyBhbmQgZW5naW5lSWQgZGlzY292ZXJ5LCBzZW5kIHJlcG9ydHMgd2l0aCBzZWNMZXZlbD09bm9BdXRoTm9Qcml2IGV4Y2VwdCBub3RJblRpbWVXaW5kb3cKCm1hcnogMjUgTm92IDk4IDA3OjUxOjUwCiAgICAgLSh0b29scy5jKTogb29wcyBiYWNrIG91dCBsaXR0bGUgY29tcGlsZSB3b3JrYXJvdW5kIEkgZGlkIG5vdCBtZWFuIHRvIGNvbW1pdAoKbWFyeiAyNSBOb3YgOTggMDc6NTQ6MDEKICAgICAtKHNubXBkLmMsIHNubXBfYWdlbnQuYyk6IGluaXRpYWxpemUgcGlkX2RpbGUsIG9ubHkgYWxsb2NhdGUgZW5naW5lSUQgbWVtIGZvciBSZXBvcnRzIHdoZW4gc2VuZGluZyBSZXBvcnQsIGZpeCB2ZXJzaW9uIGluZm8gaW4gZGVidWcgbWVzc2FnZQoKaGFyZGFrZXIgMjUgTm92IDk4IDA3OjU2OjMwCiAgICAtIChzbm1wRW5naW5lLmMsIHNubXBNUERTdGF0cy5jLCB1c21Vc2VyLmMsIHVzbVVzZXIuaCk6CiAgICAgIC0gQWRkZWQgYSBjb3VwbGUgb2YgREVVQkdQIHN0YXRlbWVudHMgYW5kIGEgY291cGxlIG9mIGNvbW1lbnQgY2xhaXJpZmljYXRpb25zLgoKaGFyZGFrZXIgMjUgTm92IDk4IDEyOjM5OjAxCiAgICAtIChzbm1wdXNtLmMpOiBjaGFuZ2VzIGluIGNvbW1lbnRzIGZvciBjbGFyaWZpY2F0aW9uLgoKaGFyZGFrZXIgMjUgTm92IDk4IDEyOjQwOjM1CiAgICAtIChzbm1wdjMuYyk6IGNoYW5nZXMgaW4gY29tbWVudHMgZm9yIGNsYXJpZmljYXRpb24uCgpoYXJkYWtlciAyNSBOb3YgOTggMTI6NTQ6MDgKICAgIC0gKHNubXBfYWdlbnQuYyk6IHZlcnNpb24gY2hlY2tzIGFnYWluc3QgdjJjL3YycCAtPiAhdjEuCgpoYXJkYWtlciAyNSBOb3YgOTggMTM6MDQ6MDIKICAgIC0gKHNubXBkLmMpOiBjb21tZW50IGNsYXJpZmljYXRpb24uCgpoYXJkYWtlciAyNSBOb3YgOTggMTc6MTI6MDIKICAgIC0gKGRlbW8pOgogICAgICAtIGVuY29kZV9rZXljaGFuZ2UgdXNhZ2UuCiAgICAgIC0gbW92ZSBjbG9zZXIgdG8gNDIsIGJ1dCBsZWF2ZSByb29tIGZvciBhIGZldyBtb3JlIHRoaW5ncy4KCmhhcmRha2VyIDI1IE5vdiA5OCAyMjo1ODo0MwogICAgLSAoY29uZmlnLmguaW4sIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluKTogY2hlY2sgZm9yIHRjZ2V0YXR0ci4KCmhhcmRha2VyIDI1IE5vdiA5OCAyMjo1OTo1NgogICAgLSAoc25tcHYzLmMsIHNubXB2My5oKTogY3JlYXRlIHNubXB2M19zZXRfZW5naW5lQm9vdHNBbmRUaW1lKCkuCgpoYXJkYWtlciAyNSBOb3YgOTggMjM6MDA6NDcKICAgIC0gKHRvb2xzLmMpOiBkdW1wX2VuZ2luZUlEIHNob3VsZCAqbmV2ZXIgZXZlciogbW9kaWZ5IHRoZSBwYXNzZWQgbGVuZ3RoIHBhcmFtLgoKaGFyZGFrZXIgMjUgTm92IDk4IDIzOjAyOjQ5CiAgICAtIChkZW1vKToKICAgICAgLSAtczogMSBzZWMgc2xlZXAgaW5zdGVhZCBvZiBrZXlwcmVzcy4KICAgICAgLSBkbyB0aW1lIHRlc3RzLgogICAgICAtIHVzZSBlbmNvZGVfa2V5Y2hhbmdlLgoKaGFyZGFrZXIgMjUgTm92IDk4IDIzOjA0OjEwCiAgICAtIChzbm1wRW5naW5lLmMsIHNubXBFbmdpbmUuaCk6CiAgICAgIC0gU2hoaGhoLi4uLi4gIGJvb3RzIGFuZCB0aW1lIGFyZSB3cml0YWJsZS4uLiAgRG9uJ3QgdGVsbCBhbnlvbmUuLi4gU2hoaC4uLgoKaGFyZGFrZXIgMjUgTm92IDk4IDIzOjE1OjA1CiAgICAtIChlbmNvZGVfa2V5Y2hhbmdlLmMpOgogICAgICAtIHVzZSB1X2NoYXIncyB3aGVyZSBhcHByb3ByaWF0ZS4KICAgICAgLSBzb21lIGRlYnVnZ2luZyBzdGF0ZW1lbnRzIGFkZGVkLgoKaGFyZGFrZXIgMjUgTm92IDk4IDIzOjMyOjUxCiAgICAtICh1c21Vc2VyLmMpOgogICAgICAtIGtleWNoYW5nZSBuZWVkcyBhIHRlbXAgYnVmZmVyLgogICAgICAtIGEgZmV3IGRlYnVnZ2luZyBzdGF0ZW1lbnRzLgoKaGFyZGFrZXIgMjcgTm92IDk4IDEwOjIwOjQ1CiAgICAtIChzbm1wdXNtLmMpOiB1c21fc2V0X3NhbHQoKSBhY2NlcHRzIGEga2V5IHdoaWNoIGlzIHRvbyBsb25nIChTSEEgZm9yIERFUykuCgpoYXJkYWtlciAyNyBOb3YgOTggMTA6MjM6MDMKICAgIC0gKHNubXBfYXBpLmMpOiBzbm1wdjNfc2VuZF9yZXBvcnQoKSByZW1vdmVzIHRoZSBzZWNTdGF0ZVJlZmVyZW5jZQogICAgICBmcm9tIHRoZSBwZHUgaXMgdGhlcmUgaXMgb25lLiAgSXQgc2hvdWxkbid0IGJlIHVzZWQgZm9yIHJlcG9ydHMuCgpoYXJkYWtlciAyNyBOb3YgOTggMTA6MzE6MTIKICAgIC0gKGRlbW8pOiBmaW5hbCBmaXhlcyBmb3IgYWxsIGN1cnJlbnQgdGVzdHMgdG8gd29yay4KCmhhcmRha2VyIDI3IE5vdiA5OCAxNToxNToyNQogICAgLSAoZGVtbyk6CiAgICAgIC0gLVQ6IHBhdXNlIGFmdGVyIHRlc3QgY29tcGxldGlvbnMuCiAgICAgIC0gKioqKiA0Mi80MiB0ZXN0cyBwYXNzZWQKCmhhcmRha2VyIDI3IE5vdiA5OCAxNjo1NToxNQogICAgLSAoc25tcHBhc3MuYyk6IGJlZ2lubmluZ3Mgb2YgYSBzbm1wIHBhc3N3b3JkIGNoYW5nZXI6CiAgICAgIC0gc3RvbGUgbW9zdCBjb2RlIGZyb20gc25tcHNldC5jIGFuZCBlbmNvZGVfa2V5Y2hhbmdlLmMuCiAgICAgIC0gbmVlZCB0byBmaXg6IG11c3Qgc3BlY2lmeSBtb3N0IGV2ZXJ5dGhpbmcgb24gdGhlIGNvbW1hbmQgbGluZSAoaWUsCiAgICAgICAgLmNvbmYgZmlsZSB0b2tlbnMgZG9uJ3Qgd29yayBoZXJlKS4KICAgICAgLSB2ZXJ5IHVuY2xlYW4gYW5kIGEgcXVpY2sgaGFjay4KICAgICAgLSBkaWZmZXJzIGZyb20gZW5jb2RlX2tleWNoYW5nZSwgaW4gdGhhdCBpdCBhY3R1YWxseSBwcmVmb3JtcyB0aGUgc2V0LgoKaGFyZGFrZXIgMjcgTm92IDk4IDE2OjU1OjIzCiAgICAtIChNYWtlZmlsZS5pbik6IGFkZCBzbm1wcGFzcy5jCgpoYXJkYWtlciAyNyBOb3YgOTggMTY6NTY6NDcKICAgIC0gKC5jdnNpZ25vcmUpOiBzbm1wcGFzcyBhbmQgZW5jb2RlX2tleWNoYW5nZQoKaGFyZGFrZXIgMjggTm92IDk4IDExOjQxOjAyCiAgICAtICh1c21Vc2VyLmMsIHVzbVVzZXIuaCk6CiAgICAgIC0gbWVyZ2Ugd3JpdGVfIGtleUNoYW5nZSBhbmQgb3duS2V5Q2hhbmdlIGZ1bmN0aW9ucyBpbnRvIG9uZS4gIFNpbmNlCiAgICAgICAgdGhlIHVzZXIgbmFtZSBpcyBub3QgcGFzc2VkIGluLCB0aGUgY2FsbGluZyBtb2R1bGUgd2lsbCBoYXZlIHRvCiAgICAgICAgY2hlY2sgZm9yIGl0IHVudGlsIHdlJ3JlIHdpbGxpbmcgdG8gY2hhbmdlIHRoZSBBUEkgb3IgdGhlIFZBQ00gaXMKICAgICAgICBmaXhlZCBhbmQgdGhlIG93bktleUNobmFnZSBvYmplY3RzIGNhbiBiZSBvYnNvbGV0ZWQuCgpoYXJkYWtlciAyOCBOb3YgOTggMTE6NDE6MzYKICAgIC0gKHNubXBwYXNzLmMpOiAtbzogdXNlIHRoZSBvd25LZXlDaGFuZ2Ugb2JqZWN0LgoKbWFyeiAyOSBOb3YgOTggMTk6MzI6MjEKICAgICAoZGVtbyk6IGZpeCB0aW1lIHN5bmMgdGVzdCB0byB0ZXN0IGZvciB0aW1lb3V0IGFzIGV4cGVjdGVkIHdoZW4gYXBwIGNsb2NrIGlzIHNldCBhaGVhZAoKbWFyeiAyOSBOb3YgOTggMTk6MzQ6NDEKICAgICAtKHNubXBfYXBpLmMpOiBtb3ZlIGNvbW1hbmRsaW5lIGJhc2VkIGJvb3RzL3RpbWUgc2V0dGluZyBjb2RlIGFmdGVyIGVuZ2luZUlEIGRpc2NvdmVyeSBpbiBjYXNlIGVuZ2luZUlEIHdhcyBub3Qgc3VwcGxpZWQgb24gY29tbWFuZCBsaW5lIGFzIHdlbGwKCmhhcmRha2VyIDMwIE5vdiA5OCAyMjowMDoyMwogICAgLSAoZGVtbyk6IGJldHRlciBkb2N1bWVudCB0aGUgcmVxdWlyZWQgLmNvbmYgZmlsZSBwaWVjZXMuCgpoYXJkYWtlciAzMCBOb3YgOTggMjI6MTI6MTAKICAgIC0gKGRlbW8pOiBlbmFibGUgLUM6IGF1dG8tY29uZmlndXJlIHRoZSBhZ2VudC4KCndiYWJzb24gIDEgRGVjIDk4IDA3OjU2OjU1CiAgICBGaXhlZCBhIGxpYnJhcnkgc2VhcmNoIG9yZGVyIGJ1ZyB3aGljaCBoYWQgL3Vzci9sb2NhbC9zc2wvbGliIGFuZCAvdXNyL2xvY2FsL2xpYgogICAgc2VhcmNoZWQgYmVmb3JlIC4uL3NubXBsaWIuIFRoaXMgY2F1c2VkIHVucmVzb2x2ZWQgcmVmZXJlbmNlcyB3aGVuIHRyeWluZyB0bwogICAgbGluayBzbm1wZCBhbmQgdGhlIGFwcGxpY2F0aW9ucy4gVG8gZG8gdGhpcyBMT0NBTF9MSUJTIHdhcyBjcmVhdGVkIGFuZCAuLi9zbm1wbGliCiAgICB3YXMgcmVtb3ZlZCBmcm9tIExJQlMgYW5kIHBsYWNlZCB0aGVyZS4gVGhlbiBMT0NBTF9MSUJTIHdhcyBhZGRlZCBiZWZvcmUKICAgIExERkxBR1MgaW4gdGhlIGxpbmsgY29tbWFuZHMuIGFnZW50L01ha2VmaWxlLmluIGFuZCBhcHBzL01ha2VmaWxlLmluIHdlcmUgbW9kaWZpZWQuCgpoYXJkYWtlciAgMSBEZWMgOTggMTQ6NTQ6MjgKICAgIC0gKHNubXBfYXBpLmMpOiBpbmNsdWRlIGttdC5oIGFuZCByZWxhdGVkLgoKaGFyZGFrZXIgIDEgRGVjIDk4IDE0OjU1OjI4CiAgICAtICh0b29scy5jKTogaW5jbHVkZSBrbXQuaCBhbmQgcmVsYXRlZC4KCmhhcmRha2VyICAxIERlYyA5OCAxNDo1NTo0OQogICAgLSAodXNtVXNlci5jKTogaW5jbHVkZSBrbXQuaCBhbmQgcmVsYXRlZC4KCmhhcmRha2VyICAxIERlYyA5OCAxNDo1NTo1NQogICAgLSAoc25tcHBhc3MuYyk6IGluY2x1ZGUga210LmggYW5kIHJlbGF0ZWQuCgptYXJ6ICAyIERlYyA5OCAwODozMjoyOQogICAgIC0oZGVtby5jKTogdGVzdCAjMzggd2lsbCBzaG93IHRoZSA2IG1lc3NhZ2UgZXhjaGFuZ2Ugc2luY2UgaXQgaXMgaW5pdGlhbGl6ZWQgd2l0aCBhIHNpbXVsYXRlZCBhdXRoZW50aWMgb290cy90aW1lIHdoaWNoIGRlZmVhdHMgdGhlIExDRF9USU5FX1NZTkNfT1BUCgpoYXJkYWtlciAgMiBEZWMgOTggMTQ6MjY6MDgKICAgIC0gKHNubXBfYWdlbnQuYyk6IGFmdGVyIGRldGVjdGlvbiBvZiBzbm1wIHZlcnNpb24sIGVycm9yIGNvZGVzIHdlcmUgcmV2ZXJzZWQuCgpoYXJkYWtlciAgMiBEZWMgOTggMTU6MTg6NTMKICAgIC0gKHNubXBkLmNvbmYuNS5kZWYpOiBhZGRlZCB2MyBzcGVjaWZpYyB0b2tlbiBub3Rlcy4KCmhhcmRha2VyICAyIERlYyA5OCAxNToxOTo0NwogICAgLSAoTWFrZWZpbGUuaW4sIHNubXAuY29uZi41LmRlZik6IGNyZWF0ZWQgYSBzbm1wLmNvbmYgbWFudWFsIHBhZ2UuCgpoYXJkYWtlciAgMiBEZWMgOTggMTc6MDM6MjcKICAgIC0gKC5jdnNpZ25vcmUpOiBzbm1wLmNvbmYuNSBpZ25vcmVkLgoKaGFyZGFrZXIgIDIgRGVjIDk4IDE3OjAzOjQ4CiAgICAtIChzbm1wLmNvbmYuNS5kZWYpOiBtaWJkaXJzLCBtaWJzLCBhbmQgbWliZmlsZXMgZG9jdW1lbnRlZC4KCmhhcmRha2VyICAyIERlYyA5OCAxOTozODoxMgogICAgLSAobGNkX3RpbWUuYyk6IGNvbW1lbnQgY2xhaXJpZmljYXRpb24uCgpoYXJkYWtlciAgMiBEZWMgOTggMTk6Mzk6MjIKICAgIC0gKG1pYi5jKTogdW5uZWVkZWQgWFhYIHJlbW92ZWQuCgpoYXJkYWtlciAgMiBEZWMgOTggMTk6Mzk6NDcKICAgIC0gKHJlYWRfY29uZmlnLmMpOiBtYWtlIGNvcHlfd29yZCgpIHNraXAgYWhlYWQgb2Ygc3BhY2Ugb24gcmV0dXJuZWQgcG9pbnRlci4KCmRyZWVkZXIgIDMgRGVjIDk4IDE4OjQ0OjQ5CiAgICBDby1jaGVja2luIHdpdGggbmV3IHZlcnNpb24gb2YgS01UIChsb2NhdGVkIGluIG5vbmV4cG9ydC9LTVQtc25tcCkuCiAgICBrbXRfcmFuZG9tKCkgc2lnbmF0dXJlIGNoYW5nZWQgaW4gc2NfcmFuZG9tKCkuCiAgICBTZWNvbmQgdmVyc29uIHRlc3RpbmcvZGVtbyBhdCB0ZXN0aW5nL2RlbW8yKiAuCgpoYXJkYWtlciAgMyBEZWMgOTggMjI6MjA6MDYKICAgIC0gKGFjY29uZmlnLmgsIGNvbmZpZy5oLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbik6CiAgICAgIC0gbmV3IGZsYWcgYW5kIGRlZmluZSAtLWVuYWJsZS10ZXN0aW5nLWNvZGUgLT4gU05NUF9URVNUSU5HX0NPREUuCgpoYXJkYWtlciAgMyBEZWMgOTggMjI6MjI6NTkKICAgIC0gKGtleXRvb2xzLmMpOiB1c2UgU05NUF9URVNUSU5HX0NPREUgZGVmIHRvIHByb3RlY3Qgc29tZSBzZWN0aW9ucy4KCmhhcmRha2VyICAzIERlYyA5OCAyMjoyMzo0OAogICAgLSAoc2NhcGkuYyk6IHRlc3RpbmcgREVCVUdQIGZvciBwcmludGluZyBvdXQga2V5cy4KCmhhcmRha2VyICAzIERlYyA5OCAyMjoyNjo0MAogICAgLSAoc25tcHVzbS5jLCBzbm1wdXNtLmgpOgogICAgICAtIHByb3RlY3Qgc2VjdGlvbnMgd2l0aCBTTk1QX1RFU1RJTkdfQ09ERS4KICAgICAgLSBhbGxvdyAqJ3MgaW4gZmllbGRzIGZvciBlbmdpbmVJRHMgZm9yIGtleSBzZXR0aW5nIC5jb25mIGVudHJpZXMuCgpoYXJkYWtlciAgMyBEZWMgOTggMjI6MzI6MjAKICAgIC0gKHNubXBFbmdpbmUuYywgc25tcEVuZ2luZS5oKToKICAgICAgLSBvbmx5IG1ha2UgdGltZS9ib290cyBzZXRhYmxlIHdoZW4gU05NUF9URVNUSU5HX0NPREUgaXMgZGVmaW5lZC4KCmhhcmRha2VyICAzIERlYyA5OCAyMzoxNzoxNwogICAgLSAoZGVtbyk6IHJlbW92ZWQuCgptYXJ6ICA0IERlYyA5OCAwODowNTo1OQogICAgIC0oc25tcGNtZC4xKTogdXBkYXRlIG1hbiBwYWdlIGZvciBuZXcgVjMgcGFyc2UgYXJncwoKaGFyZGFrZXIgIDQgRGVjIDk4IDExOjAzOjE0CiAgICAtIChNYWtlZmlsZS5pbiwgc25tcHBhc3MuYywgc25tcHVzbS5jKToKICAgICAgLSBkZWxldGUgc25tcHBhc3MuCiAgICAgIC0gY3JlYXRlIGZpcnN0IHBhc3Mgc25tcHVzbS5jLgoKaGFyZGFrZXIgIDQgRGVjIDk4IDExOjA0OjA5CiAgICAtIChzbm1wZC5jb25mLjUuZGVmKTogZG9jdW1lbnQgdGhlICogZm9yIGVuZ2luZUlEIGZlYXR1cmUuCgpoYXJkYWtlciAgNCBEZWMgOTggMTY6NDU6NDMKICAgIC0gKFVDRC1ERU1PLU1JQi50eHQpOiBkZW1vIG1pYiBvYmplY3RzLgoKaGFyZGFrZXIgIDQgRGVjIDk4IDE2OjQ2OjA5CiAgICAtIChVQ0QtU05NUC1NSUIudHh0KTogbWVudGlvbi9yZXNlcnZlIHRoZSBkZW1vIG9iamVjdCBncm91cCBpbiBhIGNvbW1lbnQuCgpoYXJkYWtlciAgNCBEZWMgOTggMTY6NDk6MjEKICAgIC0gKC5jdnNpZ25vcmUpOiAuZ2RiIHN0dWZmCgpoYXJkYWtlciAgNCBEZWMgOTggMTY6NTA6MDQKICAgIC0gKHVjZERlbW9QdWJsaWMuYywgdWNkRGVtb1B1YmxpYy5oKToKICAgICAgLSBleGFtcGxlcy91Y2REZW1vUHVibGljIG1vZHVsZTogIHNpbXBsZSBvYmplY3RzIGZvciBkb2luZyBkZW1vcywKICAgICAgICBpbmNsdWRpbmcgcmVtb3RlIHJlc2V0dGluZyBvZiBrZXlzIHRvIGEga25vd24gcGFzc3dvcmRzIGZvciBhIGxpc3QKICAgICAgICBvZiB1c2Vycy4KCmhhcmRha2VyICA0IERlYyA5OCAxNjo1MDoyOAogICAgLSAodWNkRGVtb1B1YmxpYy5jbWRzKTogY29tbWFuZHMgdG8gcnVuIHRvIHNldCB1cCBmb3IgdGhlIGRlbW8uCgpoYXJkYWtlciAgNCBEZWMgOTggMTY6NTA6MzgKICAgIC0gKHVjZERlbW9QdWJsaWMuY29uZik6IGNvbmZpZ3VyYXRpb24gZmlsZSBsaW5lcyBuZWVkZWQgZm9yIHRoZSBkZW1vLgoKaGFyZGFrZXIgIDQgRGVjIDk4IDE4OjM4OjA1CiAgICAtICh2ZXJzaW9uLmgsIHNlZHNjcmlwdC5pbiwgYnVnLXJlcG9ydCk6IDQuMC5wcmUxIHRhZwoKZHJlZWRlciAgNSBEZWMgOTggMTY6NTI6NDkKICAgIEV4dGVuZGVkIGRlbW8yIGludG8gZGVtby5yZW1vdGUgdG8gYWxsb3cgdGVzdGluZyBiZXR3ZWVuIDxoZXJlPiBhbmQKICAgIHVjZC1zbm1wLnVjZGF2aXMuZWR1LgoKbWFyeiAxMyBEZWMgOTggMTQ6NTc6MDIKICAgICAtKHNubXBfYXBpLltjaF0sIHNubXBfY2xpZW50LmMpOiBhZGQgc3VwcG9ydCBmb3IgbXNnSUQgd2hpY2ggaXMgZGlmZmVyZW50IGZyb20gcmVxaWQgYW5kIHdoaWNoIGluY3JlbWVudHMgd2l0aCBlYWNoIHJldHJ5LiBOb3RlOiBsYXRlIFJlc3BvbnNlcyB3aWxsIGJlIGRyb3BwZWQgaWYgdGhleSBhcnJpdmUgYWZ0ZXIgdGltZW91dCAtIHRoaXMgaXMgZGlmZmVyZW50IGZyb20gdjEgYmVoYXZpb3VyIHdoZXJlIGEgbGF0ZSBSZXNwb25zZSB0byB0aGUgaW5pdGlhbCB0cnkgd2lsbCBiZSBhY2NlcHRlZCB1cCB0byB0aGUgdGltZSB3aGVyZSB0aGUgbGFzdCByZXRyeSB0aW1lcyBvdXQKCmhhcmRha2VyIDEzIERlYyA5OCAxODozOTowMgogICAgLSAobWliMmMpOiBtaW5vciB1cGRhdGUgKG5lZWRzIG1vcmUpIGZvciBuZXdlciBzbm1wIHBlcmwgbW9kLgoKaGFyZGFrZXIgMTMgRGVjIDk4IDE4OjM5OjQ0CiAgICAtICguY3ZzaWdub3JlKTogLmdkYi5hdXRvLmluaXQKCmhhcmRha2VyIDEzIERlYyA5OCAxODo0MToxMQogICAgLSAoZW5jb2RlX2tleWNoYW5nZS5jKTogcmVtb3ZlZCB1bm5lZWRlZCBsaW51eCBpZmRlZi4KCmhhcmRha2VyIDE3IERlYyA5OCAxNTo1OToxMAogICAgLSAocmVhZF9jb25maWcuYyk6IHdyYXAgY29uZmlnIGxpbmUgcHJpbnQncyBpbiBTTk1QX1RFU1RJTkdfQ09ERSBjaGVja3MuCgpoYXJkYWtlciAgMiBEZWMgOTggMjE6NTU6MDQKICAgIC0gKGp1c3QgYWJvdXQgYWxsIGZpbGVzKTogbWVyZ2Ugb2YgVjMtYjEgY2hhbmdlcyBpbnRvIFYzLWIyIGJyYW5jaC4KCmhhcmRha2VyICAyIERlYyA5OCAyMjoyNzo1NAogICAgLSAoYWdlbnRfcmVhZF9jb25maWcuYywgc25tcGQuYywgdXNtVXNlci5jLCBzbm1wX3BhcnNlX2FyZ3MuYywKICAgICAgcmVhZF9jb25maWcuaCwgc25tcF9hcGkuYywgc25tcHVzbS5jLCBzbm1wdjMuYywgdG9vbHMuaCk6CiAgICAgIC0gZmluYWwgY2hhbmdlcz8gdG8gVjMtYjIgbWVyZ2UuCgpoYXJkYWtlciAgMiBEZWMgOTggMjI6Mjk6NTIKICAgIC0gKHJlYWRfY29uZmlnLmMpOiBtYWtlIHRoYXQgMjggZXJyb3JzIGZyb20gd2hpdGVzcGFjZSBjaGFuZ2VzLgoKaGFyZGFrZXIgIDIgRGVjIDk4IDIyOjM3OjA4CiAgICAtIChzbm1wZC5jKTogY2FsbCBpbml0X3NubXB2MyBiZWZvcmUgLUggdXNhZ2UgaW5mby4KCmhhcmRha2VyIDEzIERlYyA5OCAxMDozMzo0NQogICAgLSAoKik6IG1lcmdlMSB0byBWMy1iMy4KCmhhcmRha2VyIDEzIERlYyA5OCAxODo1NjoxOAogICAgLSAoKik6IG1lcmdlMiB0byBWMy1iMy4KCmRyZWVkZXIgMTcgRGVjIDk4IDA4OjA1OjA0CiAgICBDcmVhdHVyZSBjb21mb3J0OiAvZXRjIHNjcmlwdCB0byAocmUpc3RhcnQgYW5kIHN0b3Agc25tcGQgYW5kIHNubXB0cmFwZAogICAgYW5kIGtlZXAgKGNvbXByZXNzZWQpIGNvcGllcyBvZiBwcmV2aW91cyBsb2dmaWxlcy4gIEludGVuZGVkIHRvIGJlIHVuaXZlcnNhbAogICAgdG8gTGludXgsIFNvbGFyaXMsIEZyZWVCU0QsIC4uLiAuCgpoYXJkYWtlciAyMSBEZWMgOTggMTc6MzY6MzcKICAgIC0gKGNvbmZpZ3VyZSwgY29uZmlndXJlLmluKTogZGVmaW5lIFVTRV9JTlRFUk5BTF9NRDUgaWYgS01UIGlzbid0IGF2YWlsYWJsZS4KCmhhcmRha2VyIDIxIERlYyA5OCAxNzo0OTozOAogICAgLSAoYWxsX3N5c3RlbS5oLCBrZXl0b29scy5jLCBsY2RfdGltZS5jLCBtZDUuYywgbWQ1LmgsIHNjYXBpLmMsCiAgICAgIHNjYXBpLmgsIHNubXBfYXBpLmMsIHNubXBfYXV0aC5jLCB0b29scy5jKToKICAgICAgLSBpbnRlcm5hbCBNRDUgc3VwcG9ydCBkb25lLgogICAgICAgIC0gdGVzdGVkIHdpdGggYW5kIHdpdGhvdXQga210IHRvIG9wcG9zaXRlIGFuZCBzYW1lIHNpZGUgYXBwcy9hZ2VudHMuCiAgICAgICAgLSB0ZXN0ZWQgYWdhaW5zdCBvbGRlciA0LjAucHJlMSBhZ2VudCBvbiBiYW5kaXQgYXMgd2VsbC4KICAgICAgICAtIGFsbCBidXQgb25lIHRlc3RpbmcvKiB0ZXN0IHBhc3NlcyAod2hpY2ggd2FzIGZhaWxpbmcgYmVmb3JlIGFueXdheSkuCiAgICAgICAgLSB0aGUgb2xkZXIgZGVtbyBzY3JpcHQgcGFzc2VzIGFzIHdlbGwuCiAgICAgIC0gTW9kaWZpZWQgbWFueSBvdGhlciByb3V0aW5lcy4gIEV2ZXJ5dGhpbmcgc2hvdWxkIHVzZSBTQ0FQSSBub3cgYW5kCiAgICAgICAgS01UIHNob3VsZCBuZXZlciBiZSBjYWxsZWQgZGlyZWN0bHkgb3V0c2lkZSB0aGUgc2NhcGkuYyBhbmQKICAgICAgICBrZXl0b29scy5jIGZpbGVzLgogICAgICAgIC0gbmV3IHNjYXBpIHJvdXRpbmU6ICBzY19oYXNoKCkuCiAgICAgIC0gQ291bGQsIGFzIGFsd2F5cywgdXNlIGEgYml0IG1vcmUgY2xlYW4gdXAsIGJ1dCBJIG5lZWRlZCB0byBjaGVjawogICAgICAgIHNvbWV0aGluZyBpbiB0aGF0IHdvcmtlZCBiZWZvcmUgSSBicmVhayBpdCBhZ2FpbiAoYWhlbSkuCgpoYXJkYWtlciAyMSBEZWMgOTggMTc6NTM6MTAKICAgIC0gKHNubXBnZXQuYywgc25tcHVzbS5jKTogdW5uZWVkZWQgS01UIGluY2x1ZGVzIHJlbW92ZWQuCgpoYXJkYWtlciAyMSBEZWMgOTggMTc6NTQ6MzgKICAgIC0gKGtleW1hbmFnZXRlc3QuYyk6IHN1cnJvdW5kIGEgZmV3IEtNVCBzcGVjaWZpYyBpdGVtcyB3aXRoICNpZmRlZnMuCgpoYXJkYWtlciAyMSBEZWMgOTggMTc6NTY6NTYKICAgIC0gKHNubXBfYWdlbnQuYyk6IHJlbW92ZSB1bm5lZWRlZCBLTVQgaW5jbHVkZXMuCgpoYXJkYWtlciAyMiBEZWMgOTggMTk6NDA6MTIKICAgIC0gKGtleXRvb2xzLmMpOiBkZWNvZGVfa2V5Y2hhbmdlKCkgd2Fzbid0IHNldHRpbmcgdGhlIHJldHVybmVkIGJ1ZmZlciBsZW5ndGguCgpoYXJkYWtlciAyMiBEZWMgOTggMTk6NDM6NTAKICAgIC0gKHNubXBfYXBpLmMpOiBERUJVR1Agb2YgcHJvYmVkIGVuZ2luZUlEIHByaW50ZWQgMDAncyBhcyAwJ3MuCgpoYXJkYWtlciAyMiBEZWMgOTggMjE6MDk6MzgKICAgIC0gKHNubXBfYWdlbnQuYywgdXNtU3RhdHMuYywgdXNtU3RhdHMuaCwgdXNtVXNlci5oLAogICAgICBTTk1QLVVTRVItQkFTRUQtU00tTUlCLnR4dCk6CiAgICAgIC0gdXBkYXRlZCBVU00gbWliLCBpbmNsdWRpbmcgdGhlIG1vdmUgZnJvbSBzbm1wTW9kdWxlcy4xMiB0byAuMTUuCiAgICAgIC0gbWFrZSByZXBvcnRzIGdlbmVyYXRlZCBpbmNsdWRlIHRoZSAuMCBzdWZmaXggZm9yIHRoZSBpbnN0YW5jZSBzcGVjaWZpZXIuCgpoYXJkYWtlciAyMiBEZWMgOTggMjE6MTA6MjgKICAgIC0gKHRvb2xzLmMpOiB3cmFwIGR1bXBfZW5naW5lSUQgaW4gI2lmZGVmIFNOTVBfVEVTVElOR19DT0RFLgoKaGFyZGFrZXIgMjIgRGVjIDk4IDIxOjE3OjI1CiAgICAtIChsY2RfdGltZS5jKTogd3JhcCBkdW1wX2V0aW1lbGlzdCgpIGluICNpZmRlZiBTTk1QX1RFU1RJTkdfQ09ERS4KCmhhcmRha2VyIDIyIERlYyA5OCAyMToyMDozMQogICAgLSAoZW5jb2RlX2tleWNoYW5nZS5jKToKICAgICAgLSBkb24ndCB1c2UgZHVtcF9zbm1wRW5naW5lSUQoKSB1bmxlc3MgdGVzdGluZy4KICAgICAgLSBOb3RlOiB0aGlzIHV0aWxpdHkgaXMgbm90IHJlYWxseSBuZWVkZWQgYW55bW9yZS4KCmhhcmRha2VyIDIyIERlYyA5OCAyMjoxMjozMgogICAgLSAoU05NUC1VU0VSLUJBU0VELVNNLU1JQi50eHQpOiB0eXBvIChjdXQgYW5kIHBhc3RlIG1pc3NlZCBhIGxpbmUpLgoKaGFyZGFrZXIgMjMgRGVjIDk4IDIxOjA3OjMzCiAgICAtIChzbm1wdXNtLmMpOiBtc2dTZWN1cml0eVBhcmFtcyBzaG91bGQgY29udGFpbiB0aGUgKnNhbHQqLCBub3QgdGhlIElWLAogICAgICBhcyBkZWZpbmVkIGJ5IHRoZSBVU00gZG9jdW1lbnQsIHNlY3Rpb24gOC4xLjEuMSAoYW5kIGNvbW1vbiBzZW5zZSkuCgpoYXJkYWtlciAyMyBEZWMgOTggMjE6NDc6NDQKICAgIC0gKHNubXBfYXBpLmMpOgogICAgICAtIFNlbmQgb25seSBhdXRoTm9Qcml2IHJlcG9ydHMgZm9yIG5vdEluVGltZVdpbmRvdyByZXBvcnRzLgogICAgICAtIHJlcG9ydCBsZW5ndGggY2hlY2sgaW5jcmVhc2VkIGJ5IG9uZSB0byBhY2NvbW9kYXRlIGZvciB0aGUgLjAgc3VmZml4LgoKaGFyZGFrZXIgMjMgRGVjIDk4IDIyOjA2OjI1CiAgICAtIChzbm1wdXNtLmMpOiBhbGxvdyBnZW5lcmF0ZV9vdXRfbXNnKCkgdG8gdXNlIHVua25vd24gc2VjdXJpdHkgbmFtZXMKICAgICAgZm9yIHNlY0xldmVsID0gbm9BdXRoTm9Qcml2LgogICAgICAtIHRoaXMgaXMgcmVxdWlyZWQgc2luY2UgdW5rbm93blVzZXIgcmVwb3J0cyBuZWVkIHRvIGdvIG91dCB3aXRoIHRoZQogICAgICAgIHNhbWUgdXNlciBuYW1lIGFzIHRoZSBiYWQgcmVxdWVzdCB0aGF0IGNhbWUgaW4uCgpoYXJkYWtlciAyOSBEZWMgOTggMTc6MDE6MjQKICAgIC0gKHZhY20uYyk6IEVuYWJsZSBtdWx0aXBsZSBzaWRlIGJ5IHNpZGUgdmlld3MgaW4gdGhlIHZpZXcgZmFtaWx5CiAgICAgIHRyZWUuICBUaGUgdmlld3MgYWxyZWFkeSBleGlzdGVkLCBidXQgd2VyZW4ndCBjaGVja2VkIGFuZCBvbmx5IHRoZQogICAgICBmaXJzdCB2aWV3IHdhcyBmb3VuZC4KICAgICAgLSBOb3QgZG9uZSBpbiBhIGNsZWFuIGZhc2hpb24uICBNdWNoIG9mIHRoZSBzdHJ1Y3R1cmUgZGVmaW5pdGlvbnMKICAgICAgICBzaG91bGQgYmUgcmV3cml0dGVuIHdpdGggc3ViLXBpZWNlcyB0byBkbyBpdCBwcm9wZXJseSB3aXRoIGdyZWF0ZXIKICAgICAgICBzcGVlZC4KCmhhcmRha2VyIDI5IERlYyA5OCAxNzoyODozMQogICAgLSAoY29uZmlnKik6IGRlZmluZSB1X2ludHs4LDE2LDMyfV90IGZvciBLTVQgaGVhZGVycy4KCmhhcmRha2VyIDMxIERlYyA5OCAxNzo1NTozOQogICAgLSAoc25tcHVzbS5jKTogVVNNIG9pZCdzIHdlcmUgd3JvbmcKCmhhcmRha2VyIDMxIERlYyA5OCAxNzo1ODoxOQogICAgLSAodmVyc2lvbi5oIGJ1Zy1yZXBvcnQgc2Vkc2NyaXB0LmluKTogdmVyc2lvbiB0YWcgKCA0LjAucHJlMiApCgpoYXJkYWtlciAgNiBKYW4gOTkgMDc6NDY6MDIKICAgIC0gKHNubXB1c20uYyk6IHVzbV9zZXRfc2FsdCgpIHdhcyB1c2luZyBhIGhvc3Qgc3BlY2lmaWMgYnl0ZSBvcmRlcmluZwogICAgICBmb3IgZ2VuZXJhdGluZyB0aGUgc2FsdCBmcm9tIHRoZSBlbmlnaW5lQm9vdHMgdmFsdWUgYW5kIGZyb20gdGhlCiAgICAgIGFyYml0cmFyeSBpbnRlZ2VyLiAgVGhpcyB0ZWNobmljYWxseSBzaG91bGRuJ3QgbWF0dGVyLCBidXQgc2luY2UKICAgICAgd2UncmUgc2hvb3RpbmcgdG8gYmUgYSByZWZlcmVuY2UgcGxhdGZvcm0uLi4KCmhhcmRha2VyIDE5IEphbiA5OSAxOToyMDowNwogICAgLSAoSVNTVUVTKTogbmVlZCByYW5kb20gaW50IGZvciBJVi4KCndiYWJzb24gMjYgSmFuIDk5IDA1OjUyOjE5CiAgICAgQ2hhbmdlZCBNSU4oKSBtYWNybyB0byBTTk1QX01JTigpIGJlY2F1c2Ugd2UgZXhwbGljaXRseQogICAgIGRlZmluZSB0aGF0IGluIHRvb2xzLmguLi4gVGhpcyB3YXMgbmVlZGVkIHRvIGFsbG93IHN1Y2Nlc3NmdWwKICAgICBsaW5rYWdlIGluIFNvbGFyaXMgMi42CgpoYXJkYWtlciAyNyBKYW4gOTkgMjA6Mzc6NTYKICAgIC0gKFNOTVAtVEFSR0VULU1JQi50eHQpOiB0YXJnZXQgbWliIHdhcyBpbXByb3Blcmx5IGxvY2F0ZWQgYXQgLjE1IG5vdCAuMTIuCgpoYXJkYWtlciAyNyBKYW4gOTkgMjA6NTE6MTIKICAgIC0gKHNubXBfcGFyc2VfYXJncy5jKTogYWNjZXB0IHNlY3VyaXR5IGxldmVsIGFiYnJldmlhdGlvbnMuCgpoYXJkYWtlciAyNyBKYW4gOTkgMjE6MDc6NTkKICAgIC0gKGFjY29uZmlnLmgsIGNvbmZpZy5oLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgcmVhZF9jb25maWcuYyk6CiAgICAgIC0gY3JlYXRlIC0td2l0aC1wZXJzaXN0ZW50LWRpcmVjdG9yeSBjb25maWd1cmUgc2NyaXB0IGZsYWcuCgpkcmVlZGVyIDI5IEphbiA5OSAxNToyMDo1MQogICAgUmVwYWlyZWQgdGVzdHMgdG8gcmVmbGVjdCBjaGFuZ2VzIGluIHRoZSBjb2RlYmFzZS4KCm1hcnogMzEgSmFuIDk5IDEzOjU3OjEzCiAgICAgLShzbm1wX2FwaS5jKTogemVybyBsZW5naHQgdXNlciBuYW1lIGZvciBlbmluZUlEIGRpc2NvdmVyeQoKZHJlZWRlciAgMiBGZWIgOTkgMTQ6MDQ6NDgKICAgIFJlc29sdmUgT0lEIGNvbGxpc2lvbnM6IDEpIGJldHdlZW4gZGVtbyBNSUIgYW5kIFVDRCBlbnRlcnByaXNlIE1JQjsgMikKICAgIGluc2lkZSBkZW1vIE1JQi4KCmhhcmRha2VyICAyIEZlYiA5OSAyMjowNDozOAogICAgLSAoc25tcHRyYXBkLmMpOiBzdXBwb3J0IC1ILgoKaGFyZGFrZXIgIDIgRmViIDk5IDIyOjEzOjQxCiAgICAtIChyZWFkX2NvbmZpZy5jKToKICAgICAgLSBhbGxvdyBlbnYgdmFyaWFibGUgU05NUF9QRVJTSVNURU5UX0ZJTEUgdG8gb3ZlcnJpZGUgcGVyc2lzdGVudAogICAgICAgIHN0b3JhZ2UgbG9jYWN0aW9uLgogICAgICAtIG1lcmdlIGluIE1pa2UncyBjaGFuZ2VzIHRvIGNvcHlfd29yZCgpLgoKaGFyZGFrZXIgIDIgRmViIDk5IDIyOjE0OjQ2CiAgICAtICh0YXJnZXQuaCk6IG1lcmdlIG1pa2UncyB0YXJnZXQgbWliZ3JvdXAgaW50byB0aGUgNC4wIGxpbmUuCgptYXJ6ICA2IEZlYiA5OSAxNTowNDoxMwogICAgIC0oc25tcF9hcGkuW2NoXSxzbm1wX3BhcnNlX2FyZ3MuYyxzbm1wdjMuW2NoXSxzbm1wdXNtLmMsc25tcGNtZC4xKTogYWxsb3cgY29udGV4dEVuZ2luZUlEIGFuZCBzZWN1cml0eUVuZ2luZUlEIHRvIGJlIGRpZmZlcmVudCwgYWRkZWQgLUUvLWUgdG8gcGFyc2VfYXJncywgZml4ZWQgZW5naW5lSUQgZGlzY292ZXJ5IHdoaWNoIGJyb2tlIGFmdGVyIG5hbWUgdXNlZCBpbiBwcm9iZSBzd2l0Y2hlZCB0byB6ZXJvIGxlbmd0aCBzdHJpbmcKCmhhcmRha2VyICA3IEZlYiA5OSAyMDo0MzoxNQogICAgLSAocmVhZF9jb25maWcuYyk6IC1XYWxsIGZpeC4KCmhhcmRha2VyICA3IEZlYiA5OSAyMDo0NToxNwogICAgLSAoc25tcHYzLmMsIHNubXB2My5oKTogYSBmZXcgLVdhbGwgZml4ZXM6CiAgICAgIC0gcHJvdG95cGUgaW5pdF9zbm1wdjNfcG9zdF9jb25maWcodm9pZCkuCiAgICAgIC0gcmVtb3ZlIHVubmVlZGVkIHZhcmlhYmxlcy4KICAgICAgLSBkb24ndCBjb21waWxlIGluIHNldF9lbmdpbmVCb290c0FuZFRpbWUgaW50ZXJmYWNlIGZ1bmN0aW9uIGlmIG5vdCBuZWVkZWQuCgpoYXJkYWtlciAgNyBGZWIgOTkgMjA6NDc6NTkKICAgIC0gKHNubXAycC5jLCBzbm1wX2FnZW50LmMsIHNubXBfYWdlbnQuaCwgc25tcF92YXJzLmMsIHNubXBfdmFycy5oLAogICAgICBzbm1wZC5jLCBzbm1wZC5oLCB2YWNtX3ZhcnMuYywgdmFjbV92YXJzLmgsIHNubXBfYXBpLmMsIHNubXBfYXBpLmgsCiAgICAgIHNubXBfYXV0aC5jLCBzbm1wX2ltcGwuaCk6IFBhdGNoIGZyb20gRGF2ZSBTaGllbGQ6CiAgICAgIC0gaW1wbGVtZW50IGFnZW50IHVzaW5nIGxpYnJhcmllcyBwYXJzaW5nIGFuZCBoYW5kbGluZyByb3V0aW5lcwogICAgICAgIGluc3RlYWQgb2YgZHVwbGljYXRpbmcgaXQuCgpoYXJkYWtlciAgOCBGZWIgOTkgMDA6MTE6NTkKICAgIC0gKHNubXBfYWdlbnQuYywgdXRpbF9mdW5jcy5jLCB1Y2REZW1vUHVibGljLmMsIHJvdXRlX3dyaXRlLmMsCiAgICAgIHNubXBfbWliLmMsIHN5c3RlbS5jLCBzbm1wRW5naW5lLmMsIHVzbVVzZXIuYywgZXh0ZW5zaWJsZS5jLCBwYXNzLmMsCiAgICAgIHBhc3NfcGVyc2lzdC5jLCBwcm9jLmMsIHZlcnNpb25pbmZvLmMpOgogICAgICAtIG1vZGlmaWVkIHRvIHdvcmsgd2l0aCBuZXcgd3JpdGUgdmFyaWFibGUgYXBpLgogICAgICAtIGZpeGVkIGEgbWlzc2luZyBmZWF0dXJlIGluIERhdmUncyBjb2RlOiBjcmVhdGlvbi4KCmhhcmRha2VyICA4IEZlYiA5OSAxMjoyMjoxMwogICAgLSAoQ09QWUlORyk6IEl0J3MgMTk5OS4KCndiYWJzb24gIDggRmViIDk5IDEzOjM0OjM5CiAgICBDaGFuZ2VkIHRoZSBmdW5jdGlvbiBwcm90b3R5cGUgZm9yIHNubXB2M19zZXRfZW5naW5lQm9vdHNhbmQgVGltZQogICAgZnJvbSBpbnQgZigpOyB0byB2b2lkIGYoKTsgdG8gbWF0Y2ggdGhlIGZ1bmN0aW9uIGRlZmluaXRpb24gaQogICAgc25tcHYzLmMgLgoKd2JhYnNvbiAgOCBGZWIgOTkgMTM6NDA6MjcKICAgIGZpeGVkIGNhc3RpbmcgZXJyb3IuLi4gKihsb25nKSBjaGFuZ2VkIHRvICoobG9uZyAqKQoKZHJlZWRlciAxNyBGZWIgOTkgMTY6MjM6NDMKICAgIFJhbmRvbSBJVjsgZml4ZWQgc2FsdCBjb25zdHJ1Y3Rpb24uCiAgICBGaXhlZCBOVUxMIGRlcmVmZXJlbmNlIHNob3ctc3RvcHBlciBpbnRyb2R1Y2VkIGJ5IG1lcmdlIG9mIEQuIFNoZWxkJ3MgY2hhbmdlcy4KICAgIGNvbmZpZ3VyZS5pbitNYWtlZmlsZS5pbiBhdXRvbWF0aWNhbGx5IGNyZWF0ZSBQRVJTSVNURU5UX0RJUkVDVE9SWS4KICAgIE1pbm9yIGNvbXBpbGUgd2FybmluZ3MsIG91dC1vZi1kYXRlIGNvbW1lbnRzIGZpeGVkLCBjbGFyaWZpZWQgZGVidWcgb3V0b3V0LAogICAgCWNsYXJpZmllZCBwcmUtY29tcGlsZSBjb2RlIGluIHNjYXBpLmMuCiAgICBEaXNjb3ZlcmVkIHdoZXJlIHBkdS0+c2VjdXJpdHlFbmdpbmVJRCB3YXMgYmVpbmcgbXVsdGlwbHkgZnJlZSdkLCBidXQgbm90CiAgICAJdGhlICpmaXJzdCogdGltZS4uLiAob3BlbiBwcm9ibGVtKQoKaGFyZGFrZXIgMTcgRmViIDk5IDIwOjU5OjI5CiAgICAtIChzbm1wZC5jKTogLVdhbGwgZml4ZXMuCgpoYXJkYWtlciAxNyBGZWIgOTkgMjE6MDA6MDcKICAgIC0gKHNubXBfYWdlbnQuYyk6CiAgICAgIC0gZml4IGdldGJ1bGtzLgogICAgICAtIGZpeCBzbm1wc2V0J3MgdG8gYWxsb3cgY3JlYXRpb24uCgpoYXJkYWtlciAxNyBGZWIgOTkgMjE6MDA6MjIKICAgIC0gKGRsbW9kX21pYi5jKTogZG9uJ3QgZGVmaW5lIE1BVENIX1NVQ0NFRURFRCBhdCBhbGwuCgpoYXJkYWtlciAxNyBGZWIgOTkgMjE6MDA6MzYKICAgIC0gKHV0aWxfZnVuY3MuYyk6IC1XYWxsIHZhcmlhYmxlIHJlbW92aW5nLgoKaGFyZGFrZXIgMTcgRmViIDk5IDIxOjAwOjU4CiAgICAtIChyb3V0ZV93cml0ZS5jLCBzbm1wX21pYi5jLCBzeXN0ZW0uYyk6CiAgICAgIC0gLVdhbGwgdmFyaWFibGUgcmVtb3ZpbmcuCgpoYXJkYWtlciAxNyBGZWIgOTkgMjE6MDE6MzYKICAgIC0gKHVzbVVzZXIuYywgZXh0ZW5zaWJsZS5jLCBwYXNzLmMsIHByb2MuYywgdmVyc2lvbmluZm8uYyk6CiAgICAgIC0gLVdhbGwgdmFyaWFibGUgcmVtb3ZpbmcuCgpoYXJkYWtlciAxNyBGZWIgOTkgMjE6MDU6MjgKICAgIC0gKGtleXRvb2xzLmMsIG1kNS5jLCByZWFkX2NvbmZpZy5jLCBzY2FwaS5oLCBzbm1wX2FwaS5jLCBzbm1wX2F1dGguYywKICAgICAgc25tcF9jbGllbnQuYywgc25tcHVzbS5jLCB0cmFuc2Zvcm1fb2lkcy5oKToKICAgICAgLSAtV2FsbCBmaXhlcy4KCmhhcmRha2VyIDE3IEZlYiA5OSAyMToyODo1NwogICAgLSAoa2V5dG9vbHMuYyk6IG9wcHMuICBEZWxldGVkIGEgdmFyaWFibGUgSSBzaG91bGRuJ3QgaGF2ZS4KCmhhcmRha2VyIDE3IEZlYiA5OSAyMTozMDoxMQogICAgLSAoc25tcF9hZ2VudC5jKTogWW91IGNhbid0IGFzc2lnbiBhIE5VTEwgdG8gYSB1bmlvbiwgb25seSB0byBhIHN1Yi10eXBlLgoKaGFyZGFrZXIgMTcgRmViIDk5IDIxOjQ1OjIzCiAgICAtICh0ZXN0aW5nL01ha2VmaWxlLmluKTogcmVtb3ZlIHJlZmVyZW5jZXMgdG8gc3ViZGlycyBzaW5jZSB0aGVyZSBhcmUKICAgICAgbm9uZSBhbmQgaXQgYnJlYWtzIHNpbXBsaWVyIHZlcnNpb25zIG9mIHNoIHdoZW4gbm8gYXJndW1lbnRzIHRvCiAgICAgIGZvcmVhY2ggZXhpc3QuCgptYXJ6IDI0IEZlYiA5OSAwOTozMToyOQogICAgIC0oc25tcGxpYi9zbm1wX2FwaS5bY2hdLHNubXBsaWIvc25tcC5oLGFnZW50L3NubXBkLmgsYWdlbnQvc25tcF9hZ2VudC5oKTogbW92ZWQgUmVwb3J0cyBpbnRvIHNubXBsaWIsIGNvbmZvcm0gdG8gc3BlYyBvbiBjcml0ZXJyaWEgZm9yIHNlbmRpbmcgUmVwb3J0cywgbGF5IGdyb3VuZCB3b3JrIGZvciBtYXhNc2dTaXplLCBkZWZhdWx0IGNvbnRleHRFbmdpbmVJRCB0byBzZWN1cml0eUVuZ2luZUlEIHdoZW4gbm90IGV4cGxpY2l0bHkgc2V0IGl0c2VsZgoKbWFyeiAyNSBGZWIgOTkgMTQ6MDQ6MDUKICAgICAtKHNubXBfYXBpLmMsc25tcF9jbGllbnQuYyk6IGZpeGVkIGJ1ZyBpbiBzbm1wX2Nsb25lX3BkdSAobm90IGNsb25pbmcgc2VjdXJpdHlFbmlnaW5lSUQpLCB1bmNvbW1lbnRlZCBfc25tcF9mcmVlCgp3YmFic29uICA5IE1hciA5OSAwODo1NDoxMgogICAgRmlyc3QgY3V0IGF0IHNubXB0cmFwZCBtb2RpZmljYXRpb24uIFJlY2VpdmVzIGF1dGhQcml2IGFuZCBsb3dlciBzZWN1cml0eQogICAgbGV2ZWwgdHJhcHMuCgp3YmFic29uICA5IE1hciA5OSAwOTowMjowNwogICAgQ2hhbmdlZCBERUJVR1AoKSBzdGF0ZW1lbnQgdG8gZ2V0IHNlY3VyaXR5TmFtZSBmcm9tIFBEVSByYXRoZXIgdGhhbiBzZXNzaW9uCiAgICBhcyBzZXNzaW9uIHdhcyBub3QgeWV0IGluaXRpYWxpemVkIGR1cmluZyBlbmdpbmUgSUQgZGlzY292ZXJ5IGFuZCB0aGUgTlVMTAogICAgdmFsdWUgY2F1c2VkIGEgc2VnbWVudGFpb24gZmF1bHQuCgptYXJ6IDEwIE1hciA5OSAwODowNDo0NwogICAgIC0oc25tcF9hcGkuYyk6IGZpeCBlbmdpbmVJZCBkaXNjb3Zlcnkgd2hlbiBjb250ZXh0IGVuZ2luZUlEIGlzIHNwZWNpZmllZCAobmVlZGVkIHRvIGRpc2NvdmVyIHByb3h5IGVuZ2luZUlEIGlmIGFsbCB5b3Uga25vdyBpcyBwcm94aWVkIGFnZW50J3MgZW5naW5lSUQpCgp3YmFic29uIDE3IE1hciA5OSAxMzoyNzo1OQogICAgQ2hhbmdlZCBERUJVR1AoKSBzdGF0ZW1lbnQgYWJvdXQgQnVpbGRpbmcgdGhlIFNOTVAgbWVzc2FnZSBzbyB0aGF0CiAgICBldmVuIGlmIHNlY3VyaXR5TmFtZSBpcyB1bmluaXRpYWxpemVkIChOVUxMKSwgcHJvZ3JhbSB3aWxsIGNvbnRpbnVlCiAgICB3aXRob3V0IGNvcmUgZHVtcGluZy4gTGF0ZXIsIHNvbWVvbmUgc2hvdWxkIHNlZSBhYm91dCBmaXhpbmcgdGhlIGxvZ2ljCiAgICBzbyB0aGF0IHNlY3VyaXR5TmFtZSB3aWxsIG5vdCBiZSBhIE5VTEwgcG9pbnRlciBoZXJlLCBvcgogICAgcmVwYWlyIHRoZSBkZWJ1Z2dpbmcgc2NoZW1lLCBpZiB0aGF0J3MgdmFsaWQuCgpoYXJkYWtlciAyNCBNYXIgOTkgMjA6MzA6MTIKICAgIC0gKG1pYmluY2wuaCk6IGFkZCBhZ2VudF9yZWFkX2NvbmZpZy5oCgpoYXJkYWtlciAyNCBNYXIgOTkgMjA6MzI6NDQKICAgIC0gKHRlc3RpbmcvTWFrZWZpbGUuaW4pOiByZW1vdmUgc3ViZGlycy4KCmhhcmRha2VyIDI4IE1hciA5OSAxNjowMzowNAogICAgLSAodmFjbV92YXJzLmgpOiByZWxvY2F0ZSBWQUNNIG5vZGUgd2hlcmUgaXQgc2hvdWxkIGJlICgxMy0+MTYpLgoKaGFyZGFrZXIgMjggTWFyIDk5IDE2OjE2OjM4CiAgICAtIChyZWFkX2NvbmZpZy5jKTogc2tpcCBzcGFjZSBhZnRlciBjb3B5aW5nIGEgd29yZCBpbiBjb3B5X3dvcmQoKQoKaGFyZGFrZXIgMzAgTWFyIDk5IDA5OjUxOjIxCiAgICAtICh1Y2REZW1vUHVibGljLmMpOiBhZGRlZCBoZWxwIHN0cmluZ3MgdG8gY29uZiBwYXJzZXJzLgoKaGFyZGFrZXIgIDYgQXByIDk5IDE1OjI3OjI5CiAgICAtIChNYWtlZmlsZS5pbik6IHJlbW92ZSBhY2NpZGVudGlhbGx5IGNvbWl0dGVkIGNvbmZsaWN0LgoKaGFyZGFrZXIgMTUgQXByIDk5IDA3OjI1OjQ4CiAgICAtIChrZXl0b29scy5jKTogQWxsb3cgc2hvcnQgcGFzc3BocmFzZXMgd2hlbiBTTk1QX1RFU1RJTkdfQ09ERSBpcyBzZXQuCgptYXJ6IDE5IEFwciA5OSAxNDoxNDoyMwogICAgIC0oc25tcF9hcGkuW2NoXSxzbm1wX2NsaWVudC5jKTogZml4ZWQgYnVnIHdoZXJlIG1zZ0lkIGFuZCByZXFJZCB3ZXJlIG5vdCB0cmVhdGVkIGNvcnJlY3RseSBpbiByZXNwb25zZXMgaWYgb3JnaW5hbCByZXF1ZXN0IGhhcHBlbmVkIHRvIGhhdmUgbXNnSWQgb3IgcmVxSWQgZXF1YWwgdG8gYXJiaXRyYXJ5IGRlZmF1bHQoMCkKCm1hcnogMTkgTWF5IDk5IDA3OjE0OjQ0CiAgICAKICAgIGFkZGluZyB2MyBwYWNrZXQgZ2VuZXJhdG9yIHBlcmw1IHNjcmlwdCAocmVxdWlyZXMgQ29udmVydDo6QkVSKQogICAgLgoKbWFyeiAxOSBNYXkgOTkgMDc6MTY6NDEKICAgIAogICAgZXhhbXBsZSBkYXRhIGZpbGUgdG8gZ2VuZXJhdGUgYSBWMyBwYWNrZXQgd2l0aCBwa3RnZW4ucGwKCm1hcnogMTkgTWF5IDk5IDA4OjAyOjI0CiAgICBSRUFETUUgZm9yIHBrdGdlbi5wbAoKbWFyeiAxOSBNYXkgOTkgMDg6NDQ6MDMKICAgICoqKiBlbXB0eSBsb2cgbWVzc2FnZSAqKioKCm1hcnogMTkgTWF5IDk5IDA4OjQ1OjE1CiAgICBwa3RnZW4ucGwKCm1hcnogMTkgTWF5IDk5IDEwOjMxOjE0CiAgICByZW1vdmUgbGFzdCBzdWJtaXQKCm1hcnogMjAgTWF5IDk5IDEyOjM1OjAzCiAgICAqKiogZW1wdHkgbG9nIG1lc3NhZ2UgKioqCgptYXJ6IDIzIE1heSA5OSAwODowNDowMwogICAgaGFuZGxlIHNlcV9vZiB0byBhbGxvdyBhcmJpdHJhcnkgbnVtYmVyIG9mIHZhcmJpbmRzLCBidWcgZml4ZXMsIHNlbmQvcmVjZWl2ZSwgcHJldHR5IHByaW50IGRlYnVnZ2luZyBwYWNrZXQgZHVtcAoKaGFyZGFrZXIgMjYgTWF5IDk5IDExOjE4OjQyCiAgICAtIChpcGZ3YWNjLmgpOiBwcm9wZXJseSBsb2NhdGUgdGhlIG1pYi4KCmhhcmRha2VyIDI2IE1heSA5OSAxMToyMDowNAogICAgLSAodm1zdGF0LmMpOiBpbmNsdWRlIGxpbWl0cy5oLgoKaGFyZGFrZXIgMjYgTWF5IDk5IDE1OjE0OjMyCiAgICAtIChocl9zd2luc3QuYyk6IG1ha2Ugc29mdHdhcmUgYXBwbGljYXRpb24gdHlwZSB1bmtub3duIGluc3RlYWQgb2YgYXBwLgoKaGFyZGFrZXIgMjYgTWF5IDk5IDE1OjE4OjQ2CiAgICAtIChJUEZXQUNDLU1JQi50eHQpOiBjaGFuZ2UgdG8gY291bnRlcnMuCgpoYXJkYWtlciAyNiBNYXkgOTkgMTU6MjA6MTEKICAgIC0gKGlwZndhY2MuaCk6IG1ha2UgaW50byBjb3VudGVycy4KCmhhcmRha2VyIDI2IE1heSA5OSAxNTozMzowNQogICAgLSAoYWdlbnRfcmVhZF9jb25maWcuYywgaHJfZmlsZXN5cy5jLCBpbnRlcmZhY2VzLmMsIHRjcC5jLCB1ZHAuYyk6CiAgICAgIFBhdGNoIGZyb20gRGVyZWsgSi4gQmFsbGluZzoKICAgICAgLSBmcmVlYnNkMiBmaXhlcy4KCmhhcmRha2VyIDI2IE1heSA5OSAxNTo1Mjo1NwogICAgLSAoYWNjb25maWcuaCwgY29uZmlnLmguaW4pOiBpbmNyZWFzZSBNQVhSRUFEQ09VTlQKCmhhcmRha2VyIDI2IE1heSA5OSAxNTo1NDoyMgogICAgLSAoc25tcF92YXJzLmMpOiBpbmNsdWRlIHN5cy9xdWV1ZS5oLgoKbWFyeiAgMSBKdW4gOTkgMDc6MjU6NTUKICAgIChwa3RnZW4ucGwsIHBhY2tldC50eHQpOiBhZGRlZCBhdXRoZW50aWNhdGlvbiBzdXBwb3J0IChtZDUgYW5kIHNoYTEpCgpkYXZlcyAgMSBKdW4gOTkgMDg6Mzc6NDcKICAgIC0gKGFnZW50L21pYmdyb3VwL2hvc3QvaHJfc3dpbnN0LmMpOiBEZXRlcm1pbmUgdHlwZSBvZiBSUE0gcGFja2FnZXMKCm1hcnogMTYgSnVuIDk5IDA5OjMwOjU1CiAgICAocGt0Z2VuLnBsLCBwYWNrZXQudHh0KTogYWRkZWQgZW5jcnlwdGlvbi9wcml2YWN0IHN1cHBvcnQgKGRlcy1jYmMpCgptYXJ6IDE2IEp1biA5OSAxMjo1MDoyOQogICAgKHBrdGdlbi5wbCwgcGFja2V0LnR4dCk6IGxhdGVzdCBhdHRlbXB0IHRvIGZpeCBwcml2YWN5L2VuY3J5cHRpb24KCm1hcnogMjMgSnVuIDk5IDA4OjE4OjU5CiAgICAocGt0Z2VuLnBsLCBwYWNrZXQudHh0KTogbGF0ZXN0IGF0dGVtcHQgdG8gZml4IHByaXZhY3kvZW5jcnlwdGlvbih3b3JraW5nIHdpdGggQ3J5cHQ6OkRFUy9DcnlwdDo6Q0JDK3BhdGNoKQoKaGFyZGFrZXIgIDYgQXByIDk5IDE1OjEzOjQwCiAgICAtICgqKTogTWVyZ2VkIHRoZSA0LjAgbGluZSBpbnRvIHRoZSAzLjYuMSBsaW5lLgoKaGFyZGFrZXIgIDYgQXByIDk5IDE1OjM4OjQ1CiAgICAtIChtaWJpbmNsLmgsIHVjZERlbW9QdWJsaWMuYywgdmFjbV92YXJzLmgsIHNubXB0cmFwZC5jLCBzbm1wX2FwaS5jLAogICAgICBNYWtlZmlsZS5pbik6IGZpbmFsIG1lcmdlIHBpZWNlcyBvZiByZWNlbnQgdjMgbGluZSBjaGFuZ2VzLgoKbXNsaWZjYWsgIDYgQXByIDk5IDIxOjI0OjIyCiAgICAtIGNoYW5nZXMgZm9yIEFOU0kgaGVhZGVyczsgUE9TSVgoaW5kZXggdnMgc3RyY2hyKTsgbWlub3IgZml4ZXMKCm1zbGlmY2FrICA2IEFwciA5OSAyMjoxMzo1OQogICAgLSAodmFjbV92YXJzLmMpIC0gc2V0IGdsb2JhbCBwdHJzID0gMC4KCm1zbGlmY2FrICA2IEFwciA5OSAyMjoxNDo0MwogICAgLSAoc25tcF92YXJzLmMpIG1vcmUgdjJwYXJ0eSByZXdvcmsgbmVlZGVkCgptc2xpZmNhayAgNyBBcHIgOTkgMDY6MTc6MjgKICAgIC0gKCkgbW9yZSBBTlNJIGhlYWRlciBmaXh1cHM7IHRvdWNodXAgZm9yIE0kIFdpbjMyIGJ1aWxkCgpoYXJkYWtlciAgNyBBcHIgOTkgMTA6NDI6MTAKICAgIC0gKGNvbmZpZy5oLmluLCBzbm1wX3ZhcnMuYywgZW5jb2RlX2tleWNoYW5nZS5jLCBzbm1wdHJhcGQuYywKICAgICAgTWFrZWZpbGUuaW4sIGFsbF9nZW5lcmFsX2xvY2FsLmgsIGtleXRvb2xzLmMsIGtleXRvb2xzLmgsCiAgICAgIGxjZF90aW1lLmMsIG1kNS5jLCByZWFkX2NvbmZpZy5jLCBzY2FwaS5jLCBzbm1wX2FwaS5jLCBzbm1wdXNtLmMsCiAgICAgIHNubXB2My5jLCB0b29scy5jLCB0b29scy5oKToKICAgICAgLSBtaXNjIG1lcmdpbmcsIGluY2x1ZGluZyBmaXhlcyBhbmQgZGVidWdnaW5nIHN0YXRlbWVudCBjaGFuZ2VzIHRvCiAgICAgICAgbmV3ZXIgbW9kZWwuCiAgICAgIC0gYSBmZXcgLVdhbGwgZml4ZXMuCgpoYXJkYWtlciAgNyBBcHIgOTkgMTA6NDg6MDcKICAgIC0gKHNubXBfbWliLmMpOiByZW1vdmVkIHVubm5lZWRlZCBoZWFkZXJfc25tcCgpLgoKaGFyZGFrZXIgIDcgQXByIDk5IDExOjI4OjAyCiAgICAtICh1Y2REZW1vUHVibGljLmMsIHN5c09SVGFibGUuYywgdmFjbV92YXJzLmMsIHNtdXguYywgc25tcEVuZ2luZS5jLAogICAgICB1c21Vc2VyLmMsIHNubXBUYXJnZXRBZGRyRW50cnkuYywgc25tcFRhcmdldFBhcmFtc0VudHJ5LmMpOgogICAgICAtIGRlYnVnZ2luZyBzdGF0ZW1lbnQgY29udmVyc2lvbgoKbXNsaWZjYWsgIDcgQXByIDk5IDEyOjAwOjIwCiAgICAtIChhZ2VudC9zbm1wMnAuYyBhZ2VudC9zbm1wX2FnZW50LmMgYWdlbnQvc25tcF92YXJzLmgKICAgIGFnZW50L3ZpZXdfcGFyc2UuYyBhZ2VudC9taWJncm91cC91dGlsX2Z1bmNzLmMKICAgIGFnZW50L21pYmdyb3VwL2V4YW1wbGVzL3VjZERlbW9QdWJsaWMuYwogICAgYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9maWxlc3lzLmMKICAgIGFnZW50L21pYmdyb3VwL2hvc3QvaHJfc3RvcmFnZS5jCiAgICBhZ2VudC9taWJncm91cC9ob3N0L2hyX3N3cnVuLmMgYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9zeXN0ZW0uYwogICAgYWdlbnQvbWliZ3JvdXAvbWliSUkvYXQuYyBhZ2VudC9taWJncm91cC9taWJJSS9pY21wLmMKICAgIGFnZW50L21pYmdyb3VwL21pYklJL2ludGVyZmFjZXMuYyBhZ2VudC9taWJncm91cC9taWJJSS9pcC5jCiAgICBhZ2VudC9taWJncm91cC9taWJJSS9zeXN0ZW1fbWliLmMgYWdlbnQvbWliZ3JvdXAvbWliSUkvdGNwLmMKICAgIGFnZW50L21pYmdyb3VwL21pYklJL3VkcC5jIGFnZW50L21pYmdyb3VwL21pYklJL3ZhY21fdmFycy5jCiAgICBhZ2VudC9taWJncm91cC9taWJJSS92YXJfcm91dGUuYyBhZ2VudC9taWJncm91cC9taXNjL2lwZndhY2MuYwogICAgYWdlbnQvbWliZ3JvdXAvc25tcHYzL3VzbVVzZXIuYwogICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZXh0ZW5zaWJsZS5jCiAgICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9ocHV4LmMgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvcGFzcy5jCiAgICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9wYXNzX3BlcnNpc3QuYwogICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvcHJvYy5jCiAgICBhZ2VudC9taWJncm91cC92MnBhcnR5L2NvbnRleHRfdmFycy5jCiAgICBhZ2VudC9taWJncm91cC92MnBhcnR5L3BhcnR5X3ZhcnMuYwogICAgYWdlbnQvbWliZ3JvdXAvdjJwYXJ0eS92aWV3X3ZhcnMuYyBhcHBzL3NubXBkZWx0YS5jCiAgICBhcHBzL3NubXB0ZXN0LmMgYXBwcy9zbm1wdHJhcGQuYyBhcHBzL3NubXBuZXRzdGF0L3JvdXRlLmMKICAgIGFwcHMvc25tcG5ldHN0YXQvd2luc3R1Yi5jIHNubXBsaWIvYWNsX3BhcnNlLmMKICAgIHNubXBsaWIvY29udGV4dC5oIHNubXBsaWIvY29udGV4dF9wYXJzZS5jIHNubXBsaWIvcGFydHkuaAogICAgc25tcGxpYi9wYXJ0eV9wYXJzZS5jIHNubXBsaWIvcmVhZF9jb25maWcuYyBzbm1wbGliL3NubXBfYXBpLmMKICAgIHNubXBsaWIvc25tcF9hdXRoLmMgc25tcGxpYi9zbm1wX2ltcGwuaCBzbm1wbGliL3ZhY20uaAogICAgc25tcGxpYi92aWV3LmgpICBmZ2V0cyB1c2Ugc2l6ZW9mIG1vc3RseSwgb2lkIGJhc2Ugc2l6ZSBpcyBNQVhfT0lEX0xFTgoKbXNsaWZjYWsgIDcgQXByIDk5IDEyOjE3OjIzCiAgICAtKGlwZndjaGFpbnMuYykgcmVtb3ZlIG11bHRpcGxlIGRlZmluaXRpb25zIG9mIE1BVENIX0ZBSUxFRAoKbXNsaWZjYWsgIDcgQXByIDk5IDE1OjAwOjM5CiAgICAtKHVzbVVzZXIuYyxzeXN0ZW0uYykgcGx1ZyBtZW0gbGVhazsgKHNubXBfYXBpLmMpIGVuZm9yY2UgYXJyYXkgbGltaXQuCgpoYXJkYWtlciAxMiBBcHIgOTkgMjI6MTQ6MzEKICAgIC0gKG1pYmluY2wuaCk6IGluY2x1ZGUgc3lzL3RpbWUuaC4KCmhhcmRha2VyIDEyIEFwciA5OSAyMjoxNTozOQogICAgLSAoaHJfdXRpbHMuaCk6IHJlbW92ZSB2YXJpYWJsZSBuYW1lcyBmcm9tIHByb3RvdHlwZXMgKHdhcyBjYXVzaW5nIHByb2JsZW1zKS4KCmhhcmRha2VyIDEyIEFwciA5OSAyMjoxNjo0NQogICAgLSAodGttaWIpOiBtYWtlIGRpc3BsYXllZCBtaWIgbm9kZSBpbmZvIGludG8gdHdvIGNvbHVtbnMgaW5zdGVhZCBvZiBvbmUuCgpoYXJkYWtlciAxMiBBcHIgOTkgMjI6MjU6MDkKICAgIC0gKHNubXBfYXBpLmMpOiBtYWtlIHNubXBfdmFybGlzdF9hZGRfdmFyaWFibGUgdG8gcG9zc2libGUgY3JlYXRlIGEKICAgICAgdmFybGlzdCBiZWZvcmUgYWRkaW5nIHNvbWV0aGluZyB0byBpdC4KCmhhcmRha2VyIDEzIEFwciA5OSAxNToxOToyMAogICAgLSAoY29uZmlndXJlLCBjb25maWd1cmUuaW4sIE1ha2VmaWxlLmluKTogUGF0Y2ggZnJvbSBEYW5pZWwgSGFnZXJ0eToKICAgICAgLSBmaXggbGlid3JhcCB0byBvbmx5IGFkZCB0aGUgbGlicmFyeSB0byB0aGUgYWdlbnQuCgpoYXJkYWtlciAxMyBBcHIgOTkgMTU6MjA6MDAKICAgIC0gKHN5c3RlbV9taWIuYyk6IG1ha2Ugc3lzRGVzY3IgcmVhZC1vbmx5LgoKaGFyZGFrZXIgMTMgQXByIDk5IDE1OjMyOjIzCiAgICAtIChwYXNzLmMpOiBQYXRjaCBmcm9tIEppbSBNYXI6CiAgICAgIC0gYWRkIGNhcGFiaWxpdHkgZm9yIGJpbmFyeSBvY3RldCBzdHJpbmdzIGluIHBhc3Mgc2NyaXB0cy4KCmhhcmRha2VyIDEzIEFwciA5OSAxNTozNjozMQogICAgLSAoU05NUC1OT1RJRklDQVRJT04tTUlCLnR4dCwgU05NUC1QUk9YWS1NSUIudHh0LAogICAgICBTTk1QLVZJRVctQkFTRUQtQUNNLU1JQi50eHQpOiBQYXRjaCBmcm9tIE5pZWxzIEJhZ2dlc2VuOgogICAgICAtIGZpeCBtb2R1bGUgbG9jYXRpb25zIGZvciBicm9rZW4gbWlicy4KCmhhcmRha2VyIDEzIEFwciA5OSAxNTo1NDo0OAogICAgLSAoZnJlZWJzZC5oLCBmcmVlYnNkMi5oKTogUGF0Y2ggZnJvbSBOaWVscyBCYWdnZXNlbjoKICAgICAgLSBmcmVlYnNkIHV0bXAgY2xlYW51cHMuCgpoYXJkYWtlciAxMyBBcHIgOTkgMTU6NTY6NTMKICAgIC0gKHNubXBkLmMpOiBQYXRjaCBmcm9tIE5pZWxzIEJhZ2dlc2VuOgogICAgICAtIGxvZyB3aXRoIHRpbWVzdGFtcCBhdCBzaHV0ZG93bi4KCmhhcmRha2VyIDEzIEFwciA5OSAxNTo1NzoyNAogICAgLSAodmFjbV92YXJzLmMpOiBQYXRjaCBmcm9tIE5pZWxzIEJhZ2dlc2VuOgogICAgICAtIGJldHRlciBjaGVja2luZyBvZiAuY29uZiBmaWxlIHBhcnNpbmcgbGluZSByZXF1aXJlbWVudHMuCgpoYXJkYWtlciAxMyBBcHIgOTkgMTU6NTg6MDIKICAgIC0gKHNubXB0cmFuc2xhdGUuYyk6IFBhdGNoIGZyb20gTmllbHMgQmFnZ2VzZW46CiAgICAgIC0gc3VwcG9ydCAtUC4KCmhhcmRha2VyIDEzIEFwciA5OSAxNTo1ODoyNwogICAgLSAoc25tcF9jb25maWcuNS5kZWYsIHNubXB0cmFwLjEsIHNubXB0cmFwZC5jb25mLjUuZGVmKTogUGF0Y2ggZnJvbQogICAgICBOaWVscyBCYWdnZXNlbjoKICAgICAgLSBjbGVhbiB1cCBzbWFsbCBidWdzLgoKaGFyZGFrZXIgMTMgQXByIDk5IDE2OjAwOjQ5CiAgICAtIChwYXJzZS5jLCBwYXJzZS5oKTogUGF0Y2ggZnJvbSBOaWVscyBCYWdnZXNlbjoKICAgICAgLSBuaWNlciBwYXJzZXIgbWVzc2FnZXMgKGluY2x1ZGUgZmlsZSBuYW1lcykuIENvcnJlY3QgaGVscCBmb3IgLVBjLgogICAgICAtIEFkZCBGUkFNRS1SRUxBWS1EVEUtTUlCIGFzIHJlcGxhY2VtZW50IGZvciBSRkMtMTMxNQoKaGFyZGFrZXIgMTMgQXByIDk5IDE2OjAzOjI5CiAgICAtIChzbm1wdHJhcGQuYyk6IFBhdGNoIGZyb20gTmllbHMgQmFnZ2VzZW46CiAgICAgIC0gc25tcHRyYXBkIG9wdGlvbiB0byBpZ25vcmUgYXV0aCB0cmFwcywgYWRkIC1TIG9wdGlvbiwgbG9nIHRlcm1pbmF0aW9uLgoKbXNsaWZjYWsgMTQgQXByIDk5IDE1OjI5OjU4CiAgICAtIChzbm1wdHJhbnNsYXRlLmMpIGluaXRfc25tcCB0YWtlcyBhcmd1bWVudDsgIiIgdXNlZC4KCm1zbGlmY2FrIDE0IEFwciA5OSAxNTozMDozNAogICAgLSAocGFyc2UuYykgRmlsZSBwb2ludGVyIGluaXRpYWxpemVkIHRvICIiIGJlZm9yZSBmaXJzdCB1c2UuCgpoYXJkYWtlciAxNCBBcHIgOTkgMTU6NTI6MzUKICAgIC0gKHNubXB0cmFuc2xhdGUuYyk6IGluaXRfc25tcCgic25tcGFwcCIpLgoKbXNsaWZjYWsgMTQgQXByIDk5IDE2OjMxOjU1CiAgICAtIChzbm1wX2FnZW50LGMsIHNubXBfYXBpLltjaF0sIHNubXBfY2xpZW50LltjaF0pIGZpeCB2YXJpYWJsZV9saXN0IHdpdGggYnVpbHQtaW4gc3RvcmFnZQoKbXNsaWZjYWsgMTQgQXByIDk5IDE2OjU2OjM3CiAgICAtIGFwcHMgdGhhdCB1c2Ugc25tcF9maXhfcGR1IG11c3QgY2xlYW4gdXAgdGhlIHJlc3BvbnNlIFBEVSAhCgptc2xpZmNhayAxNiBBcHIgOTkgMDc6MzA6MjkKICAgIC0gKElQRldBQ0MtTUlCLnR4dCkgY2hhbmdlIG1vZHVsZSBuYW1lIGZyb20gSVBGV0FETS1NSUIgdG8gSVBGV0FDQy1NSUIuCgptc2xpZmNhayAxNiBBcHIgOTkgMDc6NTQ6MjIKICAgIC0gKElQRldDSEFJTlMtTUlCLnR4dCkgaXBmd0NoYWluVGFibGUge2lwZncgMX0gZml4Cgptc2xpZmNhayAxNiBBcHIgOTkgMDg6MzM6MTYKICAgIC0gKG1pYi5jKSAiLW0iIG9yIE1JQlMgOiBjYW4gc3BlY2lmeSBNSUIgbW9kdWxlIGJ5IGZpbGUgbmFtZS4KCmhhcmRha2VyIDE2IEFwciA5OSAyMToxMDowNgogICAgLSAoUkVBRE1FKTogQWRkZWQgdjMgdGVhbSBtZW1iZXJzLgoKaGFyZGFrZXIgMTYgQXByIDk5IDIxOjExOjQ4CiAgICAtIChjb25maWd1cmUuaW4pOiBjaGFuZ2VkIGRlZmF1bHQgc3RvcmUgbG9jYXRpb24gdG8gL3Zhci91Y2Qtc25tcAoKaGFyZGFrZXIgMTYgQXByIDk5IDIxOjE1OjE0CiAgICAtIChzbm1wLmgpOiBTTk1QQURNSU5MRU5HVEggZGVmaW5pdGlvbi4KCmhhcmRha2VyIDE2IEFwciA5OSAyMToxNjoxNgogICAgLSAoc25tcF9hdXRoLmMpOiByZW1vdmVkIGZpeCBub3RlLgoKaGFyZGFrZXIgMTYgQXByIDk5IDIxOjI3OjA2CiAgICAtIChORVdTKTogdXBkYXRlZAoKaGFyZGFrZXIgMTYgQXByIDk5IDIxOjI3OjQxCiAgICAtIChzbm1wdHJhcGQuOCk6IG1hbiBwYXRjaCBmcm9tIE5pZWxzCgpoYXJkYWtlciAxNiBBcHIgOTkgMjE6MzQ6NDkKICAgIC0gKHZlcnNpb24uaCBidWctcmVwb3J0IHNlZHNjcmlwdC5pbik6IHZlcnNpb24gdGFnICggNC4wLnByZTMgKQoKbXNsaWZjYWsgMTggQXByIDk5IDA2OjU0OjI2CiAgICAtIChpcGZ3YWNjLmgpIHN1YmRpciBjaGFuZ2UgcGVyIEpvZSBQcnVldHR0IDogOSAtPiAxMAoKaGFyZGFrZXIgMTkgQXByIDk5IDIxOjAxOjE1CiAgICAtIChtaWIyYywgbWliMmMuY29uZiwgbWliMmMudmFydHlwZXMuY29uZik6CiAgICAgIC0gcmV3cm90ZSBtaWIyYyB0byBiZSBtb3JlIGRlcGVuZGVudCBvbiAuY29uZiBmaWxlcy4gIFRoZSBtYWluIC5jb25mCiAgICAgICAgZmlsZSBub3cgY29udGFpbnMgdGhlIGNvZGUgaXRzZWxmLgogICAgICAtIG5lZWQgdG8gd3JpdGUgYSBmb3JlYWNoKG1pYm5vZGUpIHR5cGUgcGFyc2VyIG5leHQuCgpoYXJkYWtlciAxOSBBcHIgOTkgMjE6MDk6MjcKICAgIC0gKG1pYmluY2wuaCk6IGFkZCByZWFkX2NvbmZpZy5oLgoKaGFyZGFrZXIgMTkgQXByIDk5IDIxOjEyOjE3CiAgICAtIChyZWFkX2NvbmZpZy5jLCByZWFkX2NvbmZpZy5oKToKICAgICAgLSBjcmVhdGVkIGEgbW9yZSBjb252ZW5pZW50IHJlYWRfY29uZmlnX3JlYWRfZGF0YSgpIGZ1bmN0aW9uIHRvCiAgICAgICAgZ2VuZXJpY2FsbHkgcmVhZCBhIHRva2VuIGludG8gYSBnaXZlbiB2YXJpYWJsZS4KICAgICAgLSBjbGVhbmVkIHVwIHBlcnNpc3RlbnQgc3RvcmFnZSBwYXJzaW5nIHJvdXRpbmVzLgogICAgICAtIHVzZSBwcmV2aW91c2x5IG1hbGxvY2VkIHNwYWNlIGluIHNvbWUgcm91dGluZXMsIG9yIG1hbGxvYyBpdCBmb3IKICAgICAgICB0aGVtIGlmIHRoZSBzdG9yYWdlIGFyZWEgaXMgTlVMTC4KCmhhcmRha2VyIDE5IEFwciA5OSAyMToxNDoyOAogICAgLSAoc25tcF9hcGkuYyk6IERvbid0IHNubXBfc2V0X3Zhcl9vYmppZCBpZiBuYW1lIGlzIE5VTEwgaW4KICAgICAgc25tcF92YXJsaXN0X2FkZF92YXJpYWJsZSgpLgoKaGFyZGFrZXIgMjAgQXByIDk5IDExOjI4OjE0CiAgICAtIChtaWIyYywgbWliMmMuY29uZiwgbWliMmMudmFydHlwZXMuY29uZik6IG1vcmUgdXBkYXRlcy4KCmhhcmRha2VyIDIwIEFwciA5OSAxNTozMTozNQogICAgLSAobWliMmMsIG1pYjJjLmNvbmYsIG1pYjJjLnZhcnR5cGVzLmNvbmYpOgogICAgICAtIGNvbXBsZXRlbHkgcmUtaGFja2VkOgogICAgICAgIC0gZW50aXJlIGNvZGUgYmFzZSBpcyBub3cgcHV0IGludG8gdGhlIC5jb25mIGZpbGVzIHJhdGhlciB0aGFuIGluCiAgICAgICAgICB0aGUgbWliMmMgcHJvZ3JhbS4gIFRoaXMgc2hvdWxkIGVudGl0bGUgbWliMmMgdG8gYmUgdXNlZCBtb3JlCiAgICAgICAgICBnZW5lcmljYWxseSwgYW5kIGNvdWxkIHByb2R1Y2UgZGlmZmVyZW50IHR5cGVzIG9mIGNvZGUgdGVtcGxhdGVzCiAgICAgICAgICBiYXNlZCBvbiB0aGUgLmNvbmYgZmlsZSBpdCBpcyBnaXZlbi4gIEluIHRoZW9yeSwgaXQgc2hvdWxkIGJlCiAgICAgICAgICBhYmxlIHRvIHByb2R1Y2UgQyBjb2RlIGZvciBhIG5vbi11Y2Qtc25tcCBhZ2VudCwgb3IgZXZlbiBiZXR0ZXIsCiAgICAgICAgICBhbnkgdHlwZSBvZiBjb2RlIChub3QganVzdCBDKSBmb3Igc29tZXRoaW5nIGVsc2UgYmFzZWQgb24gbWliCiAgICAgICAgICBpbmZvcm1hdGlvbi4KICAgICAgICAtIFRoZSBkb3duIHNpZGUsIGlzIHRoYXQgdGhlIGN1cnJlbnQgLmNvbmYgZmlsZXMgYXJlIG5vdyBhbWJpZ3VvdXMKICAgICAgICAgIGFnYWluIGFuZCBkaWZmaWN1bHQgdG8gdW5kZXJzdGFuZCB3aXRob3V0IGJlaW5nLCB3ZWxsLCBtZS4gIFRoZQogICAgICAgICAgdXAgc2lkZSBpcyB0aGF0IEknbSBzdXJlIERhdmUgU2hpZWxkIHdpbGwgZ28gdGhyb3VnaCBhbmQgY2xlYW4KICAgICAgICAgIGl0IHVwIGZvciBtZSBsaWtlIGhlIGRpZCBsYXN0IHRpbWUuICBIYSBoYS4gIEkgd29uZGVyIGlmIGhlJ2xsCiAgICAgICAgICByZWFkIHRoaXM/IChJZiBzbywgc2VlIG1lIGZpcnN0KS4KCmhhcmRha2VyIDIwIEFwciA5OSAxNjowNDoxNwogICAgLSAobWliMmMsIG1pYjJjLmNvbmYpOiB2YXJpYWJsZSBuYW1lIGNvbnZlcnNpb25zOgogICAgICAtIHZhcmlhYmxlVHlwZXMgLT4gdmFyaWFibGVzCiAgICAgIC0gY25hbWUgLT4gTkFNRQoKaGFyZGFrZXIgMjAgQXByIDk5IDE2OjEwOjQ0CiAgICAtIChtaWIyYywgbWliMmMuY29uZik6IGEgbGl0dGxlIG1vcmUgY2xlYW4gdXAuCgpoYXJkYWtlciAyMCBBcHIgOTkgMjE6Mzg6NDIKICAgIC0gKG1pYjJjLmNvbmYpOiBjbGVhbiB1cCBza2lwaWYgcmVnZXhwcyBhIGJpdC4KCmhhcmRha2VyIDIyIEFwciA5OSAwNzo1NDo0NAogICAgLSAocmVhZF9jb25maWcuYywgcmVhZF9jb25maWcuaCk6IGNyZWF0ZWQgKnJlYWRfY29uZmlnX3N0b3JlX2RhdGEoKTsKCmhhcmRha2VyIDIyIEFwciA5OSAwNzo1NjowMwogICAgLSAobWliMmMsIG1pYjJjLmNvbmYpOiBhbGxvdyBOb0FjY2VzcyB0byBiZSBwcm9jZXNzZWQsIGFuZCB1c2Ugc2tpcGlmOgogICAgICBkaXJlY3RpdmVzIHdoZXJlIG5lZWRlZCBiZWNhdXNlIG9mIGl0LgoKaGFyZGFrZXIgMjIgQXByIDk5IDEwOjUxOjMwCiAgICAtIChzbm1wX2NsaWVudC5jLCBzbm1wX2FwaS5jLCBzbm1wX2FwaS5oLCBrZXl0b29scy5jKTogQW5vdGhlciB2MyBicmFuY2ggdXBkYXRlLgoKbXNsaWZjYWsgMjYgQXByIDk5IDA5OjIxOjA2CiAgICAtIChzbm1wbGliLmMpIC0gdXNlIHJlcXVlc3QgY2FsbGJhY2sncyBkYXRhIGlmIHJlcXVlc3Qgc3BlY2lmaWVzIGEgY2FsbGJhY2suCgpuYmEgMjYgQXByIDk5IDExOjIxOjEwCiAgICAKICAgIChwYXJzZS5oKSBTaWxseSBzcGVsaW5nIG1pc3RlYWsgKEFDQ0VTU19DUkFFVEUpCgpuYmEgMjYgQXByIDk5IDExOjQ4OjU3CiAgICAKICAgIAogICAgLSBzbm1wbGliL3BhcnNlLmgsIHNubXBsaWIvcGFyc2UuYzogbmV3IG1pYiBwcmludGVyOiBtaWJfcHJpbnRfdHJlZQogICAgICBpbnNwaXJlZCBieSBhIHJlZmVyZW5jZSB0byBzbm14IGluIGNvbXAucHJvdG9jb2xzLnNubXAKICAgIC0gYXBwcy9zbm1wdHJhbnNsYXRlOiBsZXQgdGhlIC1wIG9wdGlvbiBjYWxsIHRoaXMgbmV3IHByaW50ZXIKICAgIC0gc25tcGxpYi9zbm1wX2FwaS5jOiBzb21lIGxlZnQgb3ZlciBfX1AgbWFjcm9zCgpuYmEgMjYgQXByIDk5IDEyOjAzOjQ3CiAgICAKICAgIChpZi5jKSBtYWtlIHRoZSB3aWR0aCBvZiBzbm1wbmV0IC1pIChhbmQgLW8pIGFkYXB0IHRvIHRoZSBsZW5ndGggb2YgcmV0dXJuZWQKICAgIAlzdHJpbmdzCgpuYmEgMjYgQXByIDk5IDEyOjA5OjM1CiAgICAKICAgIAogICAgYXBwcy8qLmM6IHVzZSBzbm1wX3BlcnJvciB0byByZXBvcnQgZXJyb3JzIGZyb20gcmVhZF9vYmppZCBhbmQgZnJpZW5kcwogICAgYXBwcy9zbm1wdHJhcGQuYzogZml4IGEgYnVzIGVycm9yIHdoZW4gdXNpbmcgLVMgYW5kIHJlY2VpdmluZyBhbgogICAgCWVudGVycHJpc2Ugc3BlY2lmaWMgdHJhcC4KCm5iYSAyNiBBcHIgOTkgMTI6MTM6NTAKICAgIAogICAgKi8qOiByZXBsYWNlIGhvcnJpYmxlIChjaGFyICopInN0cmluZyIgd2l0aCBjb25zdCBzcGVjaWZpZXJzIGluIHJlbGV2YW50CiAgICAJZnVuY3Rpb25zLgoKbXNsaWZjYWsgMjYgQXByIDk5IDEyOjM3OjA5CiAgICAtIChzbm1wX2FwaS5jKSAtIGZpeCBvdGhlciB1c2Ugb2YgcmVxdWVzdCdzIGNhbGxiYWNrIGRhdGEKCm1zbGlmY2FrIDI3IEFwciA5OSAwOTo1MTozNQogICAgLSAoaW50ZXJmYWNlcy5jKSBhZGQgaWZfdHlwZV9mcm9tX25hbWUgdG8gY29udmVydCBpbnRlcmZhY2UgbmFtZSB0byB0eXBlLgoKaGFyZGFrZXIgMjkgQXByIDk5IDA3OjMyOjM5CiAgICAtIChNYWtlZmlsZS5pbiwgY2FsbGJhY2suYywgY2FsbGJhY2suaCk6IGNhbGxiYWNrIEFQSS4KCmhhcmRha2VyIDI5IEFwciA5OSAwNzozOTo0NQogICAgLSAoYWdlbnRfcmVhZF9jb25maWcuYywgc25tcGQuYywgc25tcHRyYXBkLmMsIHNubXBfYXBpLmMsIHNubXB1c20uYywKICAgICAgc25tcHVzbS5oLCBzbm1wdjMuYywgc25tcHYzLmgpOgogICAgICAtIHVzZSB0aGUgY2FsbGJhY2sgbWVjaGFuaXNtIGZvciBwb3N0LWNvbmZpZyBzdHVmZi4KCmhhcmRha2VyICAzIE1heSA5OSAwNzowNzoxNQogICAgLSAoYWdlbnRfcmVhZF9jb25maWcuYywgdXNtVXNlci5jLCB1c21Vc2VyLmgsIHNubXBUYXJnZXRBZGRyRW50cnkuYywKICAgICAgc25tcFRhcmdldEFkZHJFbnRyeS5oLCBzbm1wVGFyZ2V0UGFyYW1zRW50cnkuYywKICAgICAgc25tcFRhcmdldFBhcmFtc0VudHJ5LmgsIHNubXB0cmFwZC5jLCBjYWxsYmFjay5jLCBjYWxsYmFjay5oLAogICAgICBzY2FwaS5jLCBzY2FwaS5oLCBzbm1wX2FwaS5jLCBzbm1wdjMuYywgc25tcHYzLmgpOgogICAgICAtIHNodXRkb3duIGFuZCBzdG9yZSBjYWxsYmFjayB1c2FnZS4KCmhhcmRha2VyICAzIE1heSA5OSAwNzoxMzozMQogICAgLSAoc25tcGQuYyk6IGZpeCAtQSBmbGFnLCB3aGljaCBnb3QgYnJva2VuIGR1cmluZyBzb21lb25lcyBjaGFuZ2VzLgoKaGFyZGFrZXIgIDMgTWF5IDk5IDEyOjU4OjE5CiAgICAtIChNYWtlZmlsZS5pbiwgYWdlbnRfcmVhZF9jb25maWcuYywgTWFrZWZpbGUuaW4sIGhlYWRlcl9jb21wbGV4LmMsCiAgICAgIE1ha2VmaWxlLmluLCBlbmNvZGVfa2V5Y2hhbmdlLmMsIE1ha2VmaWxlLmluLCBNYWtlZmlsZS5pbiwKICAgICAgYWxsX2dlbmVyYWxfbG9jYWwuaCwgYWxsX3N5c3RlbS5oLCBrZXl0b29scy5jLCBsY2RfdGltZS5jLCBzY2FwaS5jLAogICAgICBzbm1wX2F1dGguYywgc25tcHVzbS5jLCB0b29scy5jLCB0b29scy5oLCBNYWtlZmlsZS5pbiwgVC5jLAogICAgICBldGltZXRlc3QuYywga2V5bWFuYWdldGVzdC5jLCBtaXNjdGVzdC5jLCBzY2FwaXRlc3QuYyk6CiAgICAgIC0gbnVrZWQgYWxsX2dlbmVyYWxfbG9jYWwuaCBhbmQgYWxsX3N5c3RlbS5oLgogICAgICAtIG1ha2VmaWxlaW5kZXBlbmQgYXMgd2VsbC4KCm5iYSAgMyBNYXkgOTkgMTU6NDA6MTEKICAgICgqLltjaF0pOglwYXRjaGVzIHRvIHR5cGVzIHRvIHdpcGUgd2FybmluZ3MgZnJvbSBjb21waWxlcnMKICAgIAl3aXRoIG1vcmUgc3RyaWN0IG5vaXNlIGxldmVscy4gKGFsc28gZ29vZCB3aGVuIGNvbXBpbGluZwogICAgCXdpdGggZ2NjIC1XYWxsIC1wZWRhbnRpYyAtV3dyaXRlLXN0cmluZ3MgLVdjYXN0LXF1YWwpCgpuYmEgIDQgTWF5IDk5IDAwOjQ3OjQ0CiAgICAobWliLmMpOglGaXggcHJvYmxlbSAoY29yZSBkdW1wKSB3aXRoIE1JQkZJTEVTIGVudmlyb25tZW50IHZhcmlhYmxlLgoKbmJhICA0IE1heSA5OSAwMDo1MToxNgogICAgKG1hbnkpOglyZW1vdmUgY29uc3Qgc3BlYyBmcm9tIEZpbmRWYXJNZXRob2QuIFRoYXQgd2FzIHdyb25nCgpoYXJkYWtlciAgNCBNYXkgOTkgMTE6MDg6NTUKICAgIC0gKGNvbmZpZ3VyZSwgY29uZmlndXJlLmluKTogQWRkZWQgLS1lbmFibGUtZGV2ZWxvcGVyIGZsYWcuCgptc2xpZmNhayAgNiBNYXkgOTkgMDk6MjA6MzAKICAgIC0gKHVjZC1zbm1wL3Ztc3RhdC5jKSAtIGNvbmRpdGlvbmFsbHkgaW5jbHVkZSBsaW1pdHMuaCBwZXIgRWR1YXJkIEtvdWNreS4KCm5iYSAxMCBNYXkgOTkgMTQ6NDc6MjIKICAgIEZpeGluZyBzb21lIG1vcmUgcHJvdG90eXBlcy4gUG9pbnRlZCBvdXQgYnkgTWFya2t1IExhdWtrYW5lbi4KCm5iYSAxMCBNYXkgOTkgMTQ6NDk6NDkKICAgIHNubXBsaWIvc25tcF9hcGkuYzogTWl4LXVwIG9mIFYxX0lOX1YyL1YyX0lOX1YxIGVycm9yIGNvZGUgd2hlbiBHRVRCVUxLCiAgICAJaW5zaWRlIFYxIHNlc3Npb24uCgpoYXJkYWtlciAxMSBNYXkgOTkgMTQ6MDI6NDgKICAgIC0gKHV0aWxfZnVuY3MuYyk6IHJlYWQgcmV0dXJucyBzc2l6ZV90IG5vdCBzaXplX3QuCgpoYXJkYWtlciAxMSBNYXkgOTkgMTQ6MDM6MjUKICAgIC0gKG1lbW9yeS5oKTogcmVtb3ZlIGV4dGVybi4KCmhhcmRha2VyIDExIE1heSA5OSAxNDoxMTo0MAogICAgLSAoaHB1eC5jLCBocHV4LmgpOiBpbnQgLT4gc2l6ZV90IGNvbnZlcnNpb25zLgoKbXNsaWZjYWsgMTIgTWF5IDk5IDEwOjUzOjIzCiAgICAtIChzbm1wX2FwaS5jIHNubXBfY2xpZW50LmMpIGNhbGwgc25tcF9zeW5jaF9yZXNldCBmcm9tIHNubXBfc2Vzc19jbG9zZQoKbXNsaWZjYWsgMTIgTWF5IDk5IDExOjIyOjE2CiAgICAtKHBhcnNlLmMgcGFydHlfcGFyc2UuYyByZWFkX2NvbmZpZy5jKSBubyBleGl0KCkgZnJvbSBsaWJyYXJ5OyByZXR1cm4gZXJyb3IKCmRhdmVzIDEzIE1heSA5OSAwMzo1MjoxOQogICAgLSAoaXAuYyk6IFByb3Blcmx5IHJlZ2lzdGVyIElQIG1vZHVsZSBncm91cCBvbiBGcmVlLUJTRCBzeXN0ZW1zCiAgICAgICAgICAgICAgKHRoYW5rcyB0byBNaXRjaGVsbCBUYXNtYW4pCgpoYXJkYWtlciAxMyBNYXkgOTkgMDk6MDk6MTgKICAgIC0gKHZhY21fdmFycy5jKTogU2V0IHBvaW50ZXJzIHRvIE5VTEwgYWZ0ZXIgZnJlZWluZyB0aGVtLgoKbXNsaWZjYWsgMTQgTWF5IDk5IDA2OjU0OjUxCiAgICAtIChhZ2VudC9taWJncm91cC9kdW1teS9kdW1teS5jIGFnZW50L21pYmdyb3VwL2V4YW1wbGVzL2V4YW1wbGUuYwogICAgIGFnZW50L21pYmdyb3VwL2V4YW1wbGVzL2V4YW1wbGUuaAogICAgIGFnZW50L21pYmdyb3VwL2V4YW1wbGVzL3dvbWJhdC5jIGFnZW50L21pYmdyb3VwL21pc2MvaXBmd2FjYy5jCiAgICAgYWdlbnQvbWliZ3JvdXAvc211eC9zbXV4LmMKICAgICBhZ2VudC9taWJncm91cC9zbm1wdjMvc25tcE1QRFN0YXRzLmMKICAgICBhZ2VudC9taWJncm91cC9zbm1wdjMvdXNtU3RhdHMuYwogICAgIGFnZW50L21pYmdyb3VwL3NubXB2My91c21Vc2VyLmMgc25tcGxpYi9zbm1wX2F1dGguYykgbW9yZSBzaXplX3QgZml4ZXMKCm1zbGlmY2FrIDE0IE1heSA5OSAwOTo0NzoxMAogICAgLSAoYWdlbnQvbWliZ3JvdXAvZXhhbXBsZXMvd29tYmF0LmggYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9kaXNrLmMKICAgICBhZ2VudC9taWJncm91cC9taWJJSS9pbnRlcmZhY2VzLmMKICAgICBhZ2VudC9taWJncm91cC9taWJJSS92YXJfcm91dGUuYwogICAgIGFnZW50L21pYmdyb3VwL3NubXB2My91c21Vc2VyLmMgYXBwcy9lbmNvZGVfa2V5Y2hhbmdlLmMKICAgICBzbm1wbGliL3BhcnNlLmMpIG1vcmUgQU5TSS1DIHRvdWNodXBzCgptc2xpZmNhayAxNCBNYXkgOTkgMTM6NTk6MzcKICAgIC0oYWdlbnQvbWliZ3JvdXAvbWliSUkvaW50ZXJmYWNlcy5jIHNubXBsaWIvc25tcHVzbS5jKSBmaXhlcyB0byBidWlsZCBIUCAmIEFJWAoKZGF2ZXMgMTcgTWF5IDk5IDAzOjIwOjUzCiAgICAtIChzbm1wX3BhcnNlX2FyZ3MuYyk6IEluaXRpYWxpc2Ugc2Vzc2lvbiB1c2luZyBsaWJyYXJ5IHJvdXRpbmUKCmRhdmVzIDE3IE1heSA5OSAwNDozNDo1NQogICAgLSAoc25tcGxpYi9zbm1wX2FwaS5oIHNubXBsaWIvc25tcF9hcGkuYyBzbm1wbGliL3NubXBfY2xpZW50LmMKICAgICAgIGFnZW50L3NubXBkLmMgYWdlbnQvbWliZ3JvdXAvbWliSUkvdmFjbV92YXJzLmMKICAgICAgIGFnZW50L21pYmdyb3VwL3YycGFydHkvYWxhcm0uYyBhZ2VudC9taWJncm91cC92MnBhcnR5L2V2ZW50LmMKICAgICAgIGFwcHMvc25tcHN0YXR1cy5jIGFwcHMvc25tcHRlc3QuYyBhcHBzL3NubXB0cmFwLmMgYXBwcy9zbm1wdHJhcGQuYyk6CiAgICAKICAgICAgLSBVc2UgdGhlIGdlbmVyaWMgc29ja2V0IGFkZHJlc3NlcyAnc3RydWN0IHNvY2thZGRyJywKICAgICAgICByYXRoZXIgdGhhbiB0aGUgSVAtc3BlY2lmaWMgJ3N0cnVjdCBzb2NrYWRkcl9pbicKCmRhdmVzIDE3IE1heSA5OSAwNDozODowMAogICAgLSAoc25tcGxpYi9zbm1wX2FwaS5oIHNubXBsaWIvc25tcF9hcGkuYyBzbm1wbGliL3NubXBfY2xpZW50LmMKICAgICAgIGFnZW50L3NubXBkLmMgYWdlbnQvbWliZ3JvdXAvbWliSUkvdmFjbV92YXJzLmMKICAgICAgIGFnZW50L21pYmdyb3VwL3YycGFydHkvYWxhcm0uYyBhZ2VudC9taWJncm91cC92MnBhcnR5L2V2ZW50LmMKICAgICAgIGFwcHMvc25tcHN0YXR1cy5jIGFwcHMvc25tcHRlc3QuYyBhcHBzL3NubXB0cmFwLmMgYXBwcy9zbm1wdHJhcGQuYyk6CiAgICAKICAgICAgLSBVc2UgdGhlIGdlbmVyaWMgc29ja2V0IGFkZHJlc3MgJ3N0cnVjdCBzb2NrYWRkcicsCiAgICAgICAgcmF0aGVyIHRoYW4gdGhlIElQLXNwZWNpZmljICdzdHJ1Y3Qgc29ja2FkZHJfaW4nCgpkYXZlcyAxNyBNYXkgOTkgMDc6MTg6MDIKICAgIC0gKHNubXBsaWIvc25tcF9hcGkuYyBzbm1wbGliL3NubXBfYXBpLmggYWdlbnQvc25tcGQuYwogICAgICAgYXBwcy9zbm1wdHJhcC5jIGFwcHMvc25tcHRyYXBkLmMpOgogICAgCiAgICAgIC0gVXNlIGEgc2luZ2xlIGFkZHJlc3MgZmllbGQgd2l0aGluIHRoZSBQRFUgc3RydWN0dXJlCiAgICAgICAgICAgICAgICAgICAob2Jzb2xldGluZyAnYWdlbnRfYWRkcicpCgpkYXZlcyAxOCBNYXkgOTkgMDY6MjY6MTYKICAgIC0gKHNubXBfYXBpLmMgc25tcF9hcGkuaCk6IE1vcmUgZ2VuZXJhbCBoYW5kbGluZyBvZiBQRFUgZmxhZ3MKCm1zbGlmY2FrIDE4IE1heSA5OSAwOTowMTo0NgogICAgLSAoeHgvTWFrZWZpbGUuaW4pIHJlbW92ZSByZWZlcmVuY2VzIHRvIGFzIHlldCBtaXNzaW5nIGRpc21hbiBmaWxlcy4KCmRhdmVzIDE4IE1heSA5OSAwOToyMzo1MAogICAgLSAoY29uZmlndXJlLmluIHNubXBsaWIvY29udGV4dF9wYXJzZS5jIHNubXBsaWIvcmVhZF9jb25maWcuYwogICAgICAgc25tcGxpYi9zbm1wX2FwaS5jIHNubXBsaWIvc25tcHYzLmMgc25tcGxpYi9zeXN0ZW0uYwogICAgICAgYXBwcy9zbm1wX3BhcnNlX2FyZ3MuYyBhcHBzL3NubXBidWxrd2Fsay5jIGFwcHMvc25tcGRlbHRhLmMKICAgICAgIGFwcHMvc25tcGdldC5jIGFwcHMvc25tcGdldG5leHQuYyBhcHBzL3NubXBzZXQuYwogICAgICAgYXBwcy9zbm1wc3RhdHVzLmMgYXBwcy9zbm1wdGFibGUuYyBhcHBzL3NubXB0ZXN0LmMKICAgICAgIGFwcHMvc25tcHRyYXAuYyBhcHBzL3NubXB1c20uYyBhcHBzL3NubXB3YWxrLmMKICAgICAgIGFwcHMvc25tcG5ldHN0YXQvaWYuYyBhcHBzL3NubXBuZXRzdGF0L2luZXQuYwogICAgICAgYXBwcy9zbm1wbmV0c3RhdC9tYWluLmMgYXBwcy9zbm1wbmV0c3RhdC9yb3V0ZS5jCiAgICAgICBhcHBzL3NubXBuZXRzdGF0L3dpbnN0dWIuYyk6CiAgICAgICAtICBDbGVhbiB1cCBjb25kaXRpb25hbHMgcHJvdGVjdGluZyBpbmNsdWRlIGZpbGVzCiAgICAgICAgICAgICggI2lmIEhBVkVfV0lOU09DS19IIC8gI2Vsc2UgLyAjZW5kaWYgKQoKZGF2ZXMgMTkgTWF5IDk5IDAyOjMzOjA3CiAgICAtIChjb25maWcuaC5pbik6IEFkZGl0aW9uYWwgaW5jbHVkZSBwcm90ZWN0aW9uIGVudHJpZXMKCmRhdmVzIDE5IE1heSA5OSAwNToxMTozNwogICAgLSAoc25tcF9hcGkuYyk6IE1vcmUgZ2VuZXJhbGlzZWQgaGFuZGxpbmcgb2Ygc29ja2V0IGFkZHJlc3NlcwoKbXNsaWZjYWsgMTkgTWF5IDk5IDE4OjAyOjU1CiAgICAtKG1pYklJL3Zhcl9yb3V0ZS5jKSAtIGZpeCBMaW51eCBSb3V0ZU1hc2sgYy9vICJOYW5jeSIgbmFtQGNzLmNtdS5lZHUKCm1zbGlmY2FrIDE5IE1heSA5OSAxODo1MDoxMgogICAgLSAoaG9zdF9yZXMuaCkgZml4IEhBVkVfTkVUX0lGX1ZBUl9IIGRlZmluZSAod2FzIEhBVkVfTkVUX0lOX1ZBUl9IKQoKZGF2ZXMgMjAgTWF5IDk5IDAzOjQ2OjI0CiAgICAtIChzbm1wX2FwaS5oKTogVGVtcG9yYXJ5IGZpeCB0byBzb2NrZXQgYWRkcmVzcyBwcm9ibGVtcwoKbXNsaWZjYWsgMjEgTWF5IDk5IDA1OjI0OjIzCiAgICAtKHJlYWRfY29uZmlnLmMpIGNhc3QgZml4IHBlciBNYXJra3UgTGF1a2thbmVuCgpkYXZlcyAyMSBNYXkgOTkgMDU6NTQ6MjIKICAgIC0gKHNubXBfYXBpLmMgc25tcF9hcGkuaCk6CiAgICAgIC0gIE5ldyBBUEkgY2FsbCB0byBjbG9zZSBkb3duIGFsbCBvcGVuIHNlc3Npb25zCiAgICAgICAgIChhbHNvIGNhbGxlZCBvbiBhcHBsaWNhdGlvbiBzaHV0ZG93bikKCmhhcmRha2VyIDIxIE1heSA5OSAxMToxMDo0NAogICAgLSAobWliMmMuY29uZiwgbWliMmMuc3RvcmFnZS5jb25mKToKICAgICAgLSBjb252ZXJ0IHRvIHNpemVfdCBzdG9yYWdlcy4KICAgICAgLSBtaXNjIGV2YWwgZml4ZXMuCiAgICAgIC0gbW9yZSBjbGVhbnVwIG9mIHRoZSBzdG9yYWdlIGRlZi4KCm1zbGlmY2FrIDIxIE1heSA5OSAxNToyOTo0NgogICAgLSBsaWJyYXJ5IGNoYW5nZXMgdG8gYnVpbGQgb24gV2luMzIuCgptc2xpZmNhayAyNCBNYXkgOTkgMDU6MzY6MTMKICAgIC1jb25maWd1cmUgLSBzYXZlIG9uZSB3aGljaCBsb29rcyBmb3IgbmV0ZGIvc29ja2V0IGhlYWRlcnMKCmhhcmRha2VyIDI2IE1heSA5OSAxMToxOTowMwogICAgLSAoaXBmd2FjYy5oKTogcHJvcGVybHkgbG9jYXRlIHRoZSBtaWIuCgpoYXJkYWtlciAyNiBNYXkgOTkgMTU6MTQ6NTUKICAgIC0gKGhyX3N3aW5zdC5jKTogbWFrZSBzb2Z0d2FyZSBhcHBsaWNhdGlvbiB0eXBlIHVua25vd24gaW5zdGVhZCBvZiBhcHAuCgpoYXJkYWtlciAyNiBNYXkgOTkgMTU6MTg6MDQKICAgIC0gKElQRldBQ0MtTUlCLnR4dCk6IGNoYW5nZSB0byBjb3VudGVycy4KCmhhcmRha2VyIDI2IE1heSA5OSAxNToyMDozMgogICAgLSAoaXBmd2FjYy5oKTogbWFrZSBpbnRvIGNvdW50ZXJzLgoKaGFyZGFrZXIgMjYgTWF5IDk5IDE1OjU2OjAzCiAgICAtIChhY2NvbmZpZy5oLCBjb25maWcuaC5pbik6IGluY3JlYXNlIE1BWFJFQURDT1VOVC4KCmhhcmRha2VyIDI2IE1heSA5OSAxNzo0MDoyOAogICAgLSAoSVBGV0FDQy1NSUIudHh0KTogYWRkZWQgU0VRVUVOQ0UgT0YuCgptc2xpZmNhayAyNyBNYXkgOTkgMDU6MTY6MjUKICAgIC0oZW5jb2RlX2tleWNoYW5nZSwgcmVhZF9jb25maWcsIHNubXB1c20pIGFDQyBmaXhlcyBieSBQS1kgKE1hcmtrdSBMYXVra2FuZW4pCgpoYXJkYWtlciAyNyBNYXkgOTkgMTQ6MzA6MDMKICAgIC0gKHNubXB0cmFwZF9oYW5kbGVycy5jKTogaW1wbGVtZW50IHRoZSBkZWZhdWx0IHRyYXAgaGFuZGxlci4KCmhhcmRha2VyIDI3IE1heSA5OSAxNDozMDoxNQogICAgLSAoc25tcHRyYXBkLmMpOiBuZWVkIGFuIGluaXRfbWliKCkuCgpoYXJkYWtlciAyNyBNYXkgOTkgMTQ6Mzc6MDYKICAgIC0gKHNubXB0cmFwZC5jb25mLjUuZGVmKTogZG9jdW1lbnQgZGVmYXVsdCBvaWQga2V5d29yZC4KCmhhcmRha2VyIDI3IE1heSA5OSAxNDozNzozMgogICAgLSAoc25tcHRyYXBkLmMpOiBkb2N1bWVudCBkZWZhdWx0IG9pZCBrZXl3b3JkIGluIGhlbHAgbGluZS4KCmRhdmVzIDI4IE1heSA5OSAwNzowMjowMQogICAgLSAoYWdlbnQvTWFrZWZpbGUuaW4gYWdlbnQvbWliZ3JvdXAvTWFrZWZpbGUuaW4pOiBmaXggcHJvYmxlbSB3aXRoIG51bGwgbWFjcm8KCmRhdmVzIDI4IE1heSA5OSAwODoxNDowNQogICAgLSAoc25tcGxpYi9zbm1wX2FwaS5jKTogc2F2ZSBsb2NhbCBzb2NrZXQgYWRkcmVzcyBpbiBpbnRlcm5hbCBzZXNzaW9uIHN0cnVjdHVyZQoKZGF2ZXMgMjggTWF5IDk5IDA4OjU3OjE5CiAgICAtIChzbm1wbGliL3NubXBfYXBpLmMpOiBVbml4IGRvbWFpbiAoZGF0YWdyYW0pIHNvY2tldCBzdXBwb3J0CgpkYXZlcyAyOCBNYXkgOTkgMDk6MTI6MjAKICAgIC0gKHNubXBsaWIvc25tcF9hcGkuYyk6IFNlcGFyYXRlIG91dCBjb3B5aW5nIGEgc2Vzc2lvbiBhbmQgb3BlbmluZyBhIG5ldyBvbmUKCm1zbGlmY2FrIDI4IE1heSA5OSAwOToyNDo1NgogICAgLShzbm1wX2FwaS5jKSAtY2F0Y2ggb25lIG1vcmUgZXJyb3IgY2xvc2UgZnJvbSBzbm1wX3Nlc3NfY29weQoKaGFyZGFrZXIgMjggTWF5IDk5IDE2OjE3OjEzCiAgICAtIChtaWIuYywgcGFyc2UuYywgcGFyc2UuaCk6IHNhdmUgYW5kIHVzZSBpbmRleCBjbGF1c2VzLgoKaGFyZGFrZXIgMjggTWF5IDk5IDE2OjQ0OjQyCiAgICAtIChNYWtlZmlsZS5pbiwgZGVmYXVsdF9zdG9yZS5jLCBkZWZhdWx0X3N0b3JlLmgpOgogICAgICAtIGNyZWF0ZWQgZ2VuZXJpYyBkZWZhdWx0IHZhbHVlIHN0b3JhZ2Ugc3BhY2UgYW5kIHBhcnNlcnMgdG8gcmVkdWNlCiAgICAgICAgdGhlIG51bWJlciBvZiBmdW5jdGlvbnMvZXRjIGNyZWF0ZWQgZm9yIHZhbHVlcyB3aGljaCBjb25maWd1cmUgdGhlCiAgICAgICAgbGlicmFyeS4KCmRhdmVzICAxIEp1biA5OSAwMjoxNzoyNwogICAgLSAoc25tcGxpYi9zbm1wX2FwaS5jKTogR2FyYmFnZSBjb2xsZWN0aW9uIGZvciBUcmFkaXRpb25hbCBTQVBJIHNlc3Npb25zCgpkYXZlcyAgMSBKdW4gOTkgMDI6MzI6MTMKICAgIC0gKHNubXBsaWIvc25tcF9hcGkuYyk6IEdlbmVyYWxpc2UgaGFuZGxpbmcgb2YgYWRkcmVzc2VzICh3LnIudCBzZW50by9yZWN2ZnJvbSkKCmRhdmVzICAxIEp1biA5OSAwNzozMDo0MgogICAgLSAoc25tcGxpYi9zbm1wX2FwaS5jIHNubXBsaWIvc25tcF9hcGkuaCk6IFN1cHBvcnQgZm9yIHN0cmVhbS1iYXNlZCBzb2NrZXRzCgpoYXJkYWtlciAgMSBKdW4gOTkgMTc6MjE6NTMKICAgIC0gKE1ha2VmaWxlLmluLCBzbm1wX2FsYXJtLmMsIHNubXBfYWxhcm0uaCwgc25tcF9hcGkuYyk6CiAgICAgIC0gaW1wbGVtZW50ZWQgYSBnZW5lcmljIGFsYXJtIGhhbmRsZXIgdG8gcmVnaXN0ZXIgYWxhcm0gZnVuY3Rpb25zIHRvCiAgICAgICAgYmUgY2FsbGVkIGJhY2sgYWZ0ZXIgWCBwZXJpb2Qgb2YgdGltZSBhbmQgaXQgaGFuZGxlcyBmaWd1cmluZyBvdXQKICAgICAgICB3aGljaCBpcyBuZXh0IGFuZCBjYWxsaW5nIGFsYXJtKCkgYW5kIHNpZ25hbCgpIGFwcHJvcHJpYXRlbHkuCgptc2xpZmNhayAgNCBKdW4gOTkgMDk6NTE6MTMKICAgIC0oaHJfZmlsZXN5cy5jLGludGVyZmFjZXMuYyx0Y3AuYyx1ZHAuYyxmcmVlYnNkMy5oKSBmaXggRnJlZUJTRDMuMSBpbmNsIEtlbiBLZXkncyB0Y3AvdWRwIHBhdGNoZXMKCm1zbGlmY2FrICA3IEp1biA5OSAwNzo0NDowNgogICAgLShpbnRlcmZhY2VzLmMsIHRjcC5jLCB1ZHAuYywgaXAuYykgY2xvbmUgZml4ZXMgZnJvbSAzLjYgbGluZSAoRnJlZUJTRDMuMSkKCm1zbGlmY2FrICA3IEp1biA5OSAxMzowNDoyMQogICAgLShpZi5jKSBjaGVjayBmb3IgdmFsaWQgcG9pbnRlciBiZWZvcmUgZGUtcmVmZXJlbmNpbmcuCgptc2xpZmNhayAgOCBKdW4gOTkgMDc6NDM6MTAKICAgIC0oaHJfZmlsZXN5cy5jKSBmaXggbWVtb3J5IGxlYWsgd2hlbiBIQVZFX0dFVEZTU1RBVCBpcyBkZWZpbmVkLgoKZGF2ZXMgIDggSnVuIDk5IDA4OjQzOjU5CiAgICAtIChhZ2VudC9taWJncm91cC92MnBhcnR5L2FsYXJtLmMKICAgICAgIHNubXBsaWIvc25tcF9hcGkuYyBzbm1wbGliL3NubXBfYXBpLmgKICAgICAgIHNubXBsaWIvc25tcF9hdXRoLmMgc25tcGxpYi9zbm1wX2ltcGwuaCk6CiAgICAgICAtICByZW1vdmVkIGFsbCB1c2VzIG9mICdzdHJ1Y3QgcGFja2V0X2luZm8nIChzdWJzdW1lZCBpbnRvICdzdHJ1Y3Qgc25tcF9wZHUnKQoKbXNsaWZjYWsgIDggSnVuIDk5IDA5OjMyOjQ4CiAgICAtKHh4X19mcmVlYnNkMi5jKSAtIGZpeCBzaXplX3QgdG8gYnVpbGQgb24gRnJlZUJTRCAyLjIueAoKZGF2ZXMgIDkgSnVuIDk5IDA2OjMyOjAyCiAgICAtIChzbm1wX2FwaS5oKTogcmVvcmRlciBQRFUgYW5kIHNlc3Npb24gZmllbGRzIG1vcmUgY2xlYXJseQoKaGFyZGFrZXIgIDkgSnVuIDk5IDE4OjMxOjQyCiAgICAtICgqKTogbWVyZ2VkIDMuNi4yIGNoYW5nZXMgaW50byBtYWluIGJyYW5jaC4KCmRhdmVzIDE1IEp1biA5OSAwMzo1OToyMwogICAgLSAoc25tcF9hZ2VudC5jKTogUmVtb3ZlZCBkdXBsaWNhdGUgY29kZQoKZGF2ZXMgMTUgSnVuIDk5IDA4OjI4OjAwCiAgICAtIChzbm1wX2FnZW50LmMgc25tcF9hZ2VudC5oKToKICAgICAgLSBNb3ZlIHByb2Nlc3NpbmcgZnJvbSAnaGFuZGxlX25leHRfcGFzcygpJyB0byAnaGFuZGxlX3NubXBfcGFja2V0KCknCgpoYXJkYWtlciAxNSBKdW4gOTkgMTY6MjU6NTcKICAgIC0gKHNubXBfYXBpLmMpOiBmaXggYWxsb3dlZCB6ZXJvbGVuZ3RoIHBkdS0+c2VjdXJpdHlOYW1lIHByb2JsZW0gZm9yCiAgICAgIHYzIGVuZ2luZUlEIGRpc2NvdmVyeSBwcm9iZXMuCgpkYXZlcyAxNiBKdW4gOTkgMDU6MTE6NDgKICAgIC0gKHNubXAuaCBzbm1wX2FwaS5jKTogbW92ZSBQRFUgdmFsaWRhdGlvbiwgZXRjIGZyb20gJ3NlbmQnIHRvICdidWlsZCcgcm91dGluZXMKCmRhdmVzIDE2IEp1biA5OSAwNTo0OTozOAogICAgLSAoc25tcF9hcGkuYyk6IGhhbmRsZSByZXNwb25zZXMgaW4gYSBtb3JlIHByb3RvY29sLWluZGVwZW5kZW50IG1hbm5lcgoKZGF2ZXMgMTYgSnVuIDk5IDA2OjU2OjE0CiAgICAtIChzbm1wX2FwaS5jIHNubXBfYXBpLmgpOiBIb29rcyBmb3IgYnVpbGRpbmcvcGFyc2luZyBub24tU05NUCBwYWNrZXRzCgpoYXJkYWtlciAxNiBKdW4gOTkgMTY6MjQ6NTgKICAgIC0gKGRlZmF1bHRfc3RvcmUuYywgZGVmYXVsdF9zdG9yZS5oLCBtaWIuYywgcGFyc2UuYyk6CiAgICAgIC0gZmlyc3QgdXNhZ2Ugb2YgdGhlIGRlZmF1bHRfc3RvcmUoKSByb3V0aW5lczogbW92ZSBhbGwgdGhlIG1pYgogICAgICAgIHBhcnNlciB2YXJpYWJsZXMgdG8gaXQsIGFuZCBhZGQgc25tcC5jb25mIHRva2VucyBmb3IgdGhlbS4KICAgICAgICAtIHByZW1pYiBhdXRvLXJlZ2lzdHJhdGlvbiBvZiBkZWZhdWx0X3N0b3JlIG5lZWRzIGNsZWFuaW5nIHVwLi4uICBzaWdoLi4uCgpoYXJkYWtlciAxNiBKdW4gOTkgMTY6NTE6MTEKICAgIC0gKHNubXBfYXBpLmMsIHNubXBfZGVidWcuYywgc25tcF9kZWJ1Zy5oKToKICAgICAgLSAyIG5ldyBzbm1wLmNvbmYgdG9rZW5zOiBkb0RlYnVnZ2luZywgZGVidWdUb2tlbnMuCgpoYXJkYWtlciAxNyBKdW4gOTkgMDc6Mzk6MDEKICAgIC0gKGNvbmZpZ3VyZSwgY29uZmlndXJlLmluKTogZml4IC0taGVscC4KCm1zbGlmY2FrIDE3IEp1biA5OSAxMzoxODozNQogICAgZml4dXBzIHRvIGJ1aWxkIG1vc3QgYXBwcyB1bmRlciBXaW4zMiAoTVNWQysrIDUuMCBvciBsYXRlcikKCm1zbGlmY2FrIDE4IEp1biA5OSAwNTowMTo1NAogICAgYXBwbGllZCBmaXhlcyBmcm9tIE0uIExhdWtrYW5lbgoKZGF2ZXMgMTggSnVuIDk5IDA2OjU4OjUzCiAgICAtIChzeXNPUlRhYmxlLmMgc3lzT1JUYWJsZS5oKTogbmV3IHJvdXRpbmUgZm9yIHJlbW92aW5nIHN5c09SVGFibGUgZW50cmllcwoKZGF2ZXMgMTggSnVuIDk5IDA3OjU2OjQ2CiAgICAtIChzbm1wLmggc25tcF9hcGkuYyk6IGRpc3Rpbmd1aXNoIGJldHdlZW4gU05NUCBwcm90b2NvbCAmIFBEVSBoYW5kbGluZyBmbGFncwoKZGF2ZXMgMTggSnVuIDk5IDA4OjAwOjM0CiAgICAtIChzbm1wX2NsaWVudC5jKTogRW5hYmxlIGFjY2VzcyB0byAiZW1wdHkiIHJlc3BvbnNlIFBEVXMgKGkuZS4gaGVhZGVyIG9ubHkpLgogICAgCShhbHNvIG1ha2UgJ3NubXBfY2xvbmVfbWVtJyBhY2Nlc3NpYmxlIHRvIG90aGVyIGZpbGVzKQoKZGF2ZXMgMTggSnVuIDk5IDA4OjA0OjIyCiAgICAtIChhc24xLmggc25tcF9hcGkuYyk6IE5ldyBwcml2YXRlIHR5cGVzIGZvciBPSUQgcmFuZ2VzCgpkYXZlcyAxOCBKdW4gOTkgMDg6NDQ6MTEKICAgIC0gKHNubXBfYXBpLmgpOiBOZXcgc29ja2V0IGFkZHJlc3Mgc3RydWN0dXJlCgpkYXZlcyAxOCBKdW4gOTkgMDg6NDc6MzgKICAgIC0gKHNubXBfYXBpLmMpOiBwcm90b2NvbC1pbmRlcGVuZGVudCBub24tcmVzcG9uc2UgaGFuZGxpbmcgaW4gJ3NubXBfc2Vzc19yZWFkJwoKZGF2ZXMgMTggSnVuIDk5IDA4OjQ5OjUyCiAgICAtIChzbm1wX2FwaS5jKToKICAgICAgLSBhY2NvbW9kYXRlIHNlcnZlcnMgdGhhdCByZXF1aXJlIGFuIGFjY2Vzc2libGUgY2xpZW50LWVuZCB1bml4IHN0cmVhbSBzb2NrZXQKICAgICAgICAgICAgICAgICAgKGluIHBhcnRpY3VsYXIsIHRoZSBDTVUgQWdlbnRYIG1hc3RlciBhZ2VudCkKCmRhdmVzIDE4IEp1biA5OSAwODo1NTozMgogICAgLSAoc25tcF9hcGkuaCBNYWtlZmlsZS5pbiBhZ2VudHguYyBhZ2VudHguaCBhZ2VudHhfY2xpZW50LmMpOgogICAgICAtIGJhc2ljIEFnZW50WCBwcm90b2NvbCBoYW5kbGluZwoKZGF2ZXMgMTggSnVuIDk5IDA5OjAwOjE2CiAgICAtIChzbm1wX3ZhcnMuYyk6IHByb3RvY29sLWluZGVwZW5kZW50IG1lYW5zIG9mIGJ5cGFzc2luZyBWQUNNIGNoZWNrcwoKZGF2ZXMgMTggSnVuIDk5IDA5OjE0OjU4CiAgICAtIChzbm1wZC5jIHNubXBkLmggc25tcF92YXJzLmMgc25tcF9hZ2VudC5jIHNubXBfYWdlbnQuaAogICAgICAgbWliZ3JvdXAvbWliSUkvc3lzT1JUYWJsZS5jKToKICAgICAgIC0gaW5pdGlhbCBBZ2VudFggc3ViLWFnZW50IGltcGxlbWVudGF0aW9uCgptc2xpZmNhayAxOCBKdW4gOTkgMTA6MDI6MDMKICAgIC0oc3lzT1JUYWJsZS5jKSBmaXggcHRyIHRlc3QKCm1zbGlmY2FrIDIyIEp1biA5OSAwNToyMTowMwogICAgIGludm9rZSBzbm1wX3Nlc3NfaW5pdCBiZWZvcmUgYW55IE1JQiBwcm9jZXNzaW5nIChmaXhlcyBtYXN0ZXIgYWdlbnQpLgoKbmJhIDIyIEp1biA5OSAwNToyNToxMwogICAgVE9ETzoJbmVlZCBmb3IgQ291bnRlcjY0IHN1cHBvcnQgaW4gc25tcGRlbHRhCgpkYXZlcyAyOCBKdW4gOTkgMDM6MDg6NDIKICAgIC0gKHNubXBfYWdlbnQuYyBzbm1wX2FnZW50LmgpOiBtYWtlIFNOTVAgcGFja2V0IGhhbmRsaW5nIHJvdXRpbmUgcmUtZW50cmFudC4KCmRhdmVzIDI4IEp1biA5OSAwNDowNzozNgogICAgLSB7TWFrZWZpbGUuaW4gYWdlbnRfcmVhZF9jb25maWcuYyBzbm1wX3ZhcnMuYyBhZ2VudF9yZWdpc3RyeS5jKToKICAgICAgLSBDb25zb2xpZGF0ZSBhbGwgcmVnaXN0cnkgaGFuZGxpbmcgaW50byBvbmUgZmlsZQoKZGF2ZXMgMjggSnVuIDk5IDA5OjUyOjA4CiAgICAtIChhZ2VudF9yZWdpc3RyeS5jIHNubXBfdmFycy5jIHNubXBfdmFycy5oIHZhcl9zdHJ1Y3QuaCk6CiAgICAgIC0gTm9uLXJlY3Vyc2l2ZSBNSUIgcmVnaXN0cnkgaW1wbGVtZW50YXRpb24KCmhhcmRha2VyIDI4IEp1biA5OSAxNDo1OTo0MQogICAgLSAoc25tcGQuYyk6IGluaXRfc25tcF9hbGFybSgpLgoKaGFyZGFrZXIgMjggSnVuIDk5IDE1OjAxOjE0CiAgICAtIChzbm1wdHJhcGQuYyk6IGluaXRfc25tcF9hbGFybSgpOwoKZGF2ZXMgMzAgSnVuIDk5IDAxOjM3OjExCiAgICAtIChzeXNPUlRhYmxlLmMgc3lzT1JUYWJsZS5oKTogSW5kaWNhdGUgc3VjY2Vzcy9mYWlsdXJlIG9mIHt1bn1yZWdpc3RyYXRpb24KCmRhdmVzIDMwIEp1biA5OSAwMTo0NToyNgogICAgLSAoYWdlbnRfcmVnaXN0cnkuYyBzbm1wX3ZhcnMuaCk6IEluZGljYXRlIHN1Y2Nlc3MvZmFpbHVyZSBvZiB7dW59cmVnaXN0cmF0aW9uCgpkYXZlcyAzMCBKdW4gOTkgMDE6NDg6MzQKICAgIC0gKHNubXBfYWdlbnQuYyBzbm1wX2FnZW50LmgpOiAnYWdlbnRfc25tcF9zZXNzaW9uJyBpbml0aWFsaXNhdGlvbiByb3V0aW5lCgpkYXZlcyAzMCBKdW4gOTkgMDI6MzI6MDMKICAgIC0gKHNubXBfYXBpLmMpOiBDb3JyZWN0IHRoZSBzZXR1cCBvZiBzdHJlYW0tYmFzZWQgYWNjZXB0ZWQgaW50ZXJuYWwgc2Vzc2lvbnMKCmRhdmVzIDMwIEp1biA5OSAwMzoyMDo0NgogICAgLSAoYWdlbnRfcmVhZF9jb25maWcuaCk6IG9taXQgcmVkdW5kYW50IGRlY2xhcmF0aW9ucwoKZGF2ZXMgMzAgSnVuIDk5IDA1OjA1OjQ0CiAgICAtIChzbm1wX2FwaS5jKTogUHJvdmlkZSB0aGUgY29ycmVjdCBzaXplIG9mIHNvY2tldCBhZGRyZXNzZXMKCmRhdmVzIDMwIEp1biA5OSAwNTowNjo1MgogICAgLSAoY29uZmlnLmguaW4gY29uZmlndXJlLmluIGNvbmZpZ3VyZSk6IGNoZWNrIGZvciBzeXMvdW4uaAoKZGF2ZXMgMzAgSnVuIDk5IDA1OjQ4OjQwCiAgICAtIChzbm1wX2FwaS5jKTogTWlzc2VkIG9uZSAnc2VuZHRvJyBjYWxsCgpoYXJkYWtlciAzMCBKdW4gOTkgMTk6Mzc6MzYKICAgIC0gKGRlZmF1bHRfc3RvcmUuYywgZGVmYXVsdF9zdG9yZS5oLCBtaWIuYywgbWliLmgsIHNubXBfYXBpLmMsCiAgICAgIHNubXB2My5jLCBzbm1wdjMuaCk6CiAgICAgIC0gY29udmVydCBtb3JlIHN0dWZmIHRvIHRoZSBkZWZhdWx0X3N0b3JlIHNwYWNlLgoKZGF2ZXMgIDIgSnVsIDk5IDAyOjM5OjQxCiAgICAtIChzbm1wX2FwaS5jKTogRml4IHRoYXQgbGFzdCAnc2VuZHRvJyBjYXNlICpjb3JyZWN0bHkqIHRoaXMgdGltZQoKZGF2ZXMgIDIgSnVsIDk5IDA1OjEzOjQyCiAgICAtIChzbm1wbGliL2FzbjEuaCBhZ2VudC9zbm1wX3ZhcnMuaCBhZ2VudC9zbm1wX2FnZW50LmMpOgogICAgICAtIGltcGxlbWVudCBhbiBpbnRlcmZhY2UgZm9yIGRlbGVnYXRpbmcgcmVxdWVzdHMgdG8gc3ViYWdlbnRzCgpkYXZlcyAgMiBKdWwgOTkgMDU6MTU6NTYKICAgIC0gKHZhcl9zdHJ1Y3QuaCBhZ2VudF9yZWdpc3RyeS5jKToKICAgICAgLSBtYXAgYmV0d2VlbiBNSUIgcmVnaXN0cmF0aW9ucyBhbmQgdGhlIHN1cHBvcnRpbmcgKHN1YmFnZW50KSBzZXNzaW9uCgpkYXZlcyAgMiBKdWwgOTkgMDU6MTY6NDEKICAgIC0gKHNubXBfYXBpLmgpOiBzdXBwb3J0IGxpc3RzIG9mIHNlc3Npb25zIChhbmQgc3Vic2Vzc2lvbnMpCgpoYXJkYWtlciAgMiBKdWwgOTkgMDg6Mjc6MzAKICAgIC0gKHNubXB0cmFuc2xhdGUuYyk6IHJlZ2lzdGVyIGRlYnVnZ2luZyB0b2tlbnMgd2l0aCAtRAoKZGF2ZXMgIDYgSnVsIDk5IDAyOjIwOjU3CiAgICAtIChzbm1wX2FnZW50LmMpOiBGaXggaGFuZGxpbmcgb2YgU05NUHYxIG5vU3VjaE5hbWUKCmRhdmVzICA3IEp1bCA5OSAwNjo1NDo1MwogICAgLSAoYXNuMS5jIGFzbjEuaCBzbm1wLmMgc25tcC5oIHNubXBfYXBpLmMgc25tcF9hcGkuaAogICAgICAgc25tcF9hdXRoLmMgc25tcF9pbXBsLmggYWdlbnR4LmMpOgogICAgICAgLSBGaXJzdCBhdHRlbXB0IGF0IGZvcm1hdHRlZCBkaXNwbGF5IG9mIHBhY2tldCBkYXRhCgpkYXZlcyAgOCBKdWwgOTkgMDI6MTY6MTUKICAgIC0gKHNubXBfYXBpLmMpOiBSZXRhaW4gY29tbXVuaXR5IHN0cmluZyBpbiByZXNwb25zZXMKCmRhdmVzICA4IEp1bCA5OSAwNjoyNTowNwogICAgLSAobWliSUkvc3lzdGVtX21pYi5jIG1pYklJL3NubXBfbWliLmMpOgogICAgICAtIFVwZGF0ZSAnd3JpdGUnIHJvdXRpbmVzIGZvciBWNCBhcmNoaXRlY3R1cmUsCiAgICAgICAgYW5kIHVzaW5nIHRoZSBmdWxsIFNFVCBtdWx0aS1wYXNzIGFsZ29yaXRobQoKaGFyZGFrZXIgIDggSnVsIDk5IDE0OjI5OjM1CiAgICAtIChjb25maWcuaCk6IGNvbW1lbnQgY2hhbmdlIGZvciBpbnRlcm5hbCBtZDUuCgpoYXJkYWtlciAgOCBKdWwgOTkgMTQ6MzA6NDcKICAgIC0gKGFzbjEuYyk6IC1XYWxsIGZpeGVzLgoKaGFyZGFrZXIgIDggSnVsIDk5IDE0OjM2OjUyCiAgICAtIChjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgTWFrZWZpbGUuaW4sIHNubXAycC5jLCBzbm1wX2FnZW50LmMsCiAgICAgIHNubXBfdmFycy5jLCBzbm1wZC5jLCB2aWV3X3BhcnNlLmMsIHZhY21fdmFycy5jLCBzbm1wX3BhcnNlX2FyZ3MuYywKICAgICAgc25tcHRyYXBkLmMsIHNubXB0cmFwZF9oYW5kbGVycy5jLCBtYWluLmMsIE1ha2VmaWxlLmluLCBhY2wuYywKICAgICAgYWNsLmgsIGFjbF9wYXJzZS5jLCBjb250ZXh0LmMsIGNvbnRleHQuaCwgY29udGV4dF9wYXJzZS5jLAogICAgICBsaWJzbm1wLmgsIHBhcnR5LmMsIHBhcnR5LmgsIHBhcnR5X3BhcnNlLmMsIHNubXAuaCwgc25tcF9hcGkuYywKICAgICAgc25tcF9hdXRoLmMsIHNubXBfY2xpZW50LmMsIHZpZXcuYywgdmlldy5oKToKICAgICAgLSB2MnBhcnR5IHN1cHBvcnQgaXMgZmluYWxseSBnb25lIQoKaGFyZGFrZXIgIDggSnVsIDk5IDE0OjQ5OjA4CiAgICAtICgqL01ha2VmaWxlLmluKTogbWFrZSBkZXBlbmQKCmhhcmRha2VyICA4IEp1bCA5OSAxNToxNjozNQogICAgLSAoc25tcGRlbHRhLmMsIGludDY0LmMsIGludDY0LmgpOiBtaW5pbWFsIGM2NCBzdXBwb3J0IGZvciBzbm1wZGVsdGEuIFVudGVzdGVkLgoKaGFyZGFrZXIgIDggSnVsIDk5IDE2OjAyOjU4CiAgICAtIChzbm1wZC5jKTogUGF0Y2ggZnJvbSBSYWduYXIgS2r4cnN0YWQ6CiAgICAgIC0gQWRkIG9wdGlvbnMgZm9yIHN3aXRjaGluZyB0byBhIGdpdmVuIHVpZCBhbmQgZ2lkLgoKZGF2ZXMgIDkgSnVsIDk5IDAxOjQ5OjQ5CiAgICAtIChzbm1wZC5jKTogQ2xlYW4gdXAgZ2lkL3VpZCBjaGFuZ2UgbG9nZ2luZwoKZGF2ZXMgIDkgSnVsIDk5IDA4OjI3OjM5CiAgICAtICgqL01ha2VmaWxlLmluIHNubXBsaWIvc25tcF9hcGkuYwogICAgICAgYWdlbnQvYWdlbnRfcmVnaXN0cnkuYyBhZ2VudC9zbm1wX2FnZW50LltjaF0gYWdlbnQvc25tcF92YXJzLltjaF0KICAgICAgIGFnZW50L3NubXBkLltjaF0gYWdlbnQvbWliZ3JvdXAvbWliSUkvc3lzT1JUYWJsZS5jKToKICAgICAgIC0gTW92ZSBBZ2VudFggaGFuZGxpbmcgb3V0IG9mIHRoZSBtYWluIFNOTVAgbGlicmFyeQoKbXNsaWZjYWsgIDkgSnVsIDk5IDEyOjEyOjUwCiAgICAtKHNubXBfY2xpZW50LiopIHJlbW92ZSBzbm1wX3N5bmNoX3NldHVwLCBzbm1wX3N5bmNoX3Jlc2V0Cgptc2xpZmNhayAgOSBKdWwgOTkgMTQ6MjA6MjMKICAgIC0od2luMzIsc25tcGxpYixhcHBzLGFnZW50KSBhZGQgc25tcF9zb2NrZXRfbGVuZ3RoIHRvIGhpZGUgc29ja2FkZHJfdW47IFdpbjMyIHRvdWNodXBzCgptc2xpZmNhayAxMSBKdWwgOTkgMTg6MzY6MjQKICAgIFJlZHVjZSB1c2Ugb2Ygc25tcF9lcnJubyAtIGZpeCBtZW1vcnkgbGVhaywgdW51c2VkIHZhcnMsIGFuZCB1bnNldCB2YXIuCgpkYXZlcyAxMiBKdWwgOTkgMDc6MTQ6MzYKICAgIC0gKGFnZW50L21pYmdyb3VwL01ha2VmaWxlLmluKTogcmVtb3ZlIGRlcGVuZGVuY3kgb24gc25tcGxpYi9hZ2VudHguaAoKZGF2ZXMgMTIgSnVsIDk5IDA4OjMyOjI3CiAgICAtIChtaWJncm91cC9ob3N0LyopOiBEeW5hbWljYWxseSByZWdpc3RlciBhbGwgSG9zdCBSZXNvdXJjZSBtb2R1bGVzCgptc2xpZmNhayAxNCBKdWwgOTkgMTM6MTQ6MzAKICAgIC0oc25tcF9hcGkuYykgLSBzbm1wX2FkZF92YXIgcmV0dXJucyBTTk1QRVJSOyBNQVkgc2V0IHNubXBfZXJybm8KCm1zbGlmY2FrIDE0IEp1bCA5OSAxMzo0Njo1MwogICAgLShzbm1wbGliL21pYi5jKSAtIGNvbmRpdGlvbmFsbHkgYWxsb3cgZm9yIG5vdCBzZXR0aW5nIHNubXBfZXJybm8KCmhhcmRha2VyIDE1IEp1bCA5OSAwODo0NjowMAogICAgLSAoYXNuMS5jLCBzbm1wX2FwaS5jLCBzbm1wX2F1dGguYywgc25tcF9kZWJ1Zy5jLCBzbm1wX2RlYnVnLmgpOgogICAgICAtIGJlZ2lubmluZyBvZiBhIC1EZHVtcCB2ZXJzaW9uIG9mIHBhY2tldCBkdW1waW5nLgogICAgICAtIG5lZWRzIGEgbG90IG1vcmUgd29yayBhbmQgY2xlYW4gdXAuCiAgICAgIC0gSSBuZWVkIGNvbW1lbnRzLi4uICBUZWxsIG1lIHdoYXQgeW91IHRoaW5rLi4uCgpoYXJkYWtlciAyMCBKdWwgOTkgMTQ6MDI6MjYKICAgIC0gKGF1dG9fbmxpc3QuYywgaGlzdG9yeS5jLCBrZXJuZWwuYywgc25tcF9hZ2VudC5jLCBzbm1wZC5jLAogICAgICBkbG1vZF9taWIuYywga2VybmVsX3N1bm9zNS5jLCBtaWJpbmNsLmgsIHV0aWxfZnVuY3MuYywgaXBmd2NoYWlucy5jLAogICAgICBhdC5jLCBpbnRlcmZhY2VzLmMsIGlwLmMsIHJvdXRlX3dyaXRlLmMsIHN5c3RlbV9taWIuYywgdGNwLmMsIHVkcC5jLAogICAgICB2YWNtX3ZhcnMuYywgdmFyX3JvdXRlLmMsIGRsbW9kLmMsIHNtdXguYywgZGlzay5jLCBleHRlbnNpYmxlLmMsCiAgICAgIGxvYWRhdmUuYywgbWVtb3J5X3NvbGFyaXMyLmMsIHBhc3MuYywgcGFzc19wZXJzaXN0LmMsIHByb2MuYywKICAgICAgdmVyc2lvbmluZm8uYywgYWxhcm0uYywgZXZlbnQuYywgTWFrZWZpbGUuaW4sIHBhcnNlLmMsIHNubXAuYywKICAgICAgc25tcF9kZWJ1Zy5jLCBzbm1wX2xvZ2dpbmcuYywgc25tcF9sb2dnaW5nLmgpOiBQYXRjaCBmcm9tIFJhZ25hcgogICAgICBLavhyc3RhZDoKICAgICAgLSBkbyBmaWxlLCBzdGRlcnIsIGFuZCBzeXNsb2cgc3VwcG9ydC4KCmhhcmRha2VyIDIwIEp1bCA5OSAxNzowNjo1MwogICAgLSAoYXV0b19ubGlzdC5jLCBzbm1wX2FnZW50LmMsIHNubXBkLmMsIGRsbW9kX21pYi5jLCBrZXJuZWxfc3Vub3M1LmMsCiAgICAgIGlwZndjaGFpbnMuYywgaW50ZXJmYWNlcy5jLCBkbG1vZC5jLCBzbXV4LmMsIHZlcnNpb25pbmZvLmMsCiAgICAgIGFsYXJtLmMpOgogICAgICAtIGNvbnZlcnQgc25tcF9sb2coTE9HX0RFQlVHKSB0byBERUJVR01TR1RMKCkuCgptc2xpZmNhayAyMCBKdWwgOTkgMTg6MTE6NTAKICAgIC1taW5vciBjaGFuZ2VzIHRvIGJ1aWxkIFdpbjMyIHBsYXRmb3JtcyB1c2luZyBDeWdXaW4tZWdjcyBhbmQgTVNWQyBjb21waWxlcnMuCgptc2xpZmNhayAyMCBKdWwgOTkgMTk6MzM6MjYKICAgIC0gbm8gcHJpbnRmIGluIGFzY2lpX3RvX2JpbmFyeQoKaGFyZGFrZXIgMjEgSnVsIDk5IDE2OjA2OjUyCiAgICAtICh0a21pYiwgbWliMmMpOiB1ZHBhdGUgdG8gdXNlIGluZGV4ZXMgKHJlcXVpcmVzIGEgcGVybCBwYXRjaC4KCmhhcmRha2VyIDIzIEp1bCA5OSAxMDozNjo1NAogICAgLSAoc25tcF9wYXJzZV9hcmdzLmMpOiBsb2cgdG8gc3RkZXJyLgoKaGFyZGFrZXIgMjMgSnVsIDk5IDEwOjQ0OjE3CiAgICAtIChhY2xvY2FsLm00LCBjb25maWcuaC5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuaW4sIHNubXBfYWdlbnQuYywKICAgICAgc25tcF92YXJzLmMsIHNubXBkLmMsIGtlcm5lbF9zdW5vczUuYywgdXRpbF9mdW5jcy5jLCBpbnRlcmZhY2VzLmMsCiAgICAgIGludGVyZmFjZXMuaCwgc3lzdGVtX21pYi5jLCB2YXJfcm91dGUuYywgc25tcEVuZ2luZS5jLAogICAgICBzbm1wVGFyZ2V0UGFyYW1zRW50cnkuYywgc25tcHRyYXBkLmMsIEhPU1QtUkVTT1VSQ0VTLU1JQi50eHQsCiAgICAgIElBTkFpZlR5cGUtTUlCLnR4dCwgSUYtTUlCLnR4dCwgSVAtTUlCLnR4dCwgVENQLU1JQi50eHQsCiAgICAgIFVEUC1NSUIudHh0LCBwYXJzZS5jLCBzbm1wX2FsYXJtLmMsIHNubXBfbG9nZ2luZy5jLCBzbm1wX2xvZ2dpbmcuaCk6CiAgICAgIC0gbWVyZ2UgZnJvbSBWMy1saW5lIHBvc3QgMy42LjIgdG8gY3VycmVudC4KICAgICAgLSBtaXNjIGJ1ZyBmaXhlcy4KICAgICAgLSBtYWtlIGFwcHMgdHVybiBvbiBzdGRlcnIgbG9nZ2luZyBieSBkZWZhdWx0LgoKaGFyZGFrZXIgMjMgSnVsIDk5IDEzOjE4OjIzCiAgICAtIChzbm1wZC5jKTogbW9yZSBzbm1wX2xvZyBjb252ZXJzaW9ucy4KCmhhcmRha2VyIDIzIEp1bCA5OSAxMzoxODo0NAogICAgLSAodXRpbF9mdW5jcy5jKTogY2hhbmdlIG1hbGxvYyBzaXplKCkuCgpoYXJkYWtlciAyMyBKdWwgOTkgMTM6MTk6MjAKICAgIC0gKGFzbjEuYyk6IG51bGwgdGVybWluYXRlIHBhcnNlZCBzdHJpbmdzLCBqdXN0IGluIGNhc2UuCgpoYXJkYWtlciAyMyBKdWwgOTkgMTM6MjA6MDIKICAgIC0gKHNubXAuYyk6IHhkdW1wIGZpeGVzLgoKaGFyZGFrZXIgMjMgSnVsIDk5IDEzOjIwOjMzCiAgICAtIChrZXl0b29scy5jLCBwYXJzZS5jLCByZWFkX2NvbmZpZy5jLCBzbm1wX2FwaS5jKTogc25tcF9sb2cgY29udmVyc2lvbnMuCgpoYXJkYWtlciAyMyBKdWwgOTkgMTQ6MTk6MzkKICAgIC0gKGFzbjEuYywgYXNuMS5oLCBzbm1wLmMsIHNubXBfYXBpLmMsIHNubXBfYXV0aC5jLCBzbm1wX2ltcGwuaCk6CiAgICAgIC0gcmV2ZXJ0IHRvIG5vbi1kcGFyc2UgdmVyc2lvbnMgb2YgYXNuIGRlY29kaW5nLgoKaGFyZGFrZXIgMjMgSnVsIDk5IDE0OjI2OjU3CiAgICAtIChzbm1wZC5jKTogaW5pdCBkZWJ1Z2dpbmcuCgpoYXJkYWtlciAyMyBKdWwgOTkgMTU6MjI6MDIKICAgIC0gKHNubXBidWxrd2Fsay5jLCBzbm1wZGVsdGEuYywgc25tcGdldC5jLCBzbm1wZ2V0bmV4dC5jLCBzbm1wc2V0LmMsCiAgICAgIHNubXBzdGF0dXMuYywgc25tcHRhYmxlLmMsIHNubXB0ZXN0LmMsIHNubXB0cmFuc2xhdGUuYywgc25tcHRyYXAuYywKICAgICAgc25tcHRyYXBkLmMsIHNubXB1c20uYywgc25tcHdhbGsuYywgc25tcF9hcGkuYywgc25tcF9hcGkuaCwKICAgICAgc25tcF9jbGllbnQuYyk6CiAgICAgIC0gbWFrZSBhbmQgdXNlIHNubXBfc2Vzc19wZXJyb3Ioc3RyLCBzZXNzKSBmb3IgZXJyb3IgcHJpbnRpbmcuCgptc2xpZmNhayAyNCBKdWwgOTkgMDc6MTE6MzAKICAgIC0oYXNuMS5jKSAtIGZpeCBjb21wYXJlIGVycm9yIGF0IGxpbmUgMzg2OyByZW1vdmUgdW51c2VkIHZhcnMgZWxzZXdoZXJlCgptc2xpZmNhayAyNCBKdWwgOTkgMDc6MTg6MTMKICAgIC0obGlic25tcC5kZWYpIC0gYWRkIGRlY2xzIGZvciBuZXcgZXJyb3IgbG9nZ2luZyBmdW5jdGlvbnMuCgptc2xpZmNhayAyNCBKdWwgOTkgMDc6NDU6NTkKICAgIC0oc25tcF9jbGllbnQuYykgLSB1c2UgU0VUX1NOTVBfRVJST1IgZm9yIHJlc3RvcmVkIHNubXBfZXJybm8gc2V0cy4KCm1zbGlmY2FrIDI0IEp1bCA5OSAwODoxMTowNQogICAgLShtZDUuYykgLSB3cmFwIHVudXNlZCBNRDVwcmludCB3aXRoIFNOTVBfVEVTVElOR19DT0RFIGlmZGVmCgpoYXJkYWtlciAyNiBKdWwgOTkgMDc6Mzc6MDkKICAgIC0gKFNOTVB2Mi1DT05GLnR4dCk6IHJlbW92ZWQgYm9ndXMgSU1QT1JUUyBjbGF1c2UKCmhhcmRha2VyIDI2IEp1bCA5OSAwOTowNDowOQogICAgLSAoKi9NYWtlZmlsZS5pbik6IG1ha2UgZGVwZW5kCgpoYXJkYWtlciAyNiBKdWwgOTkgMDk6MTQ6MjQKICAgIC0gKE5FV1MpOiB1cGRhdGVkIGEgYml0CgpoYXJkYWtlciAyNiBKdWwgOTkgMTE6NTE6MjIKICAgIC0gKHZlcnNpb24uaCBidWctcmVwb3J0IHNlZHNjcmlwdC5pbik6IHZlcnNpb24gdGFnICggNC4wLnByZTQgKQoKaGFyZGFrZXIgMjYgSnVsIDk5IDE0OjMyOjE3CiAgICAtIChtaWIuYyk6IEJJVF9zdHJpbmc6IC0+IEJJVFM6Cgptc2xpZmNhayAyNiBKdWwgOTkgMTU6MTI6NDUKICAgIC0oYXNuMS5jLGFzbjEuaCxzbm1wLmMsc25tcF9hcGkuYyxzbm1wX2F1dGguYyxzbm1wdXNtLmMpIG1vcmUgZGV0YWlsZWQgcGFyc2UgZXJyb3IgbWVzc2FnZXMuCgpoYXJkYWtlciAyNiBKdWwgOTkgMTU6NTk6MTAKICAgIC0gKGFnZW50L21pYmdyb3VwL01ha2VmaWxlLmluKTogZml4IG1ha2UgZGVwZW5kLgoKaGFyZGFrZXIgMjYgSnVsIDk5IDE3OjA2OjAzCiAgICAtIChpbnRlcmZhY2VzLmMpOiBQYXRjaCBmcm9tIE1hcmtrdSBMYXVra2FuZW46CiAgICAgIC0gdmFyaWFibGUgbmFtaW5nIGNoYW5nZS4KCmhhcmRha2VyIDI2IEp1bCA5OSAxNzowNjo0NwogICAgLSAoaHB1eC5oKTogUGF0Y2ggZnJvbSBNYXJra3UgTGF1a2thbmVuOgogICAgICAtIGRlZmluZSBocHV4CgpoYXJkYWtlciAyNiBKdWwgOTkgMTc6MDc6MzEKICAgIC0gKGtleXRvb2xzLmMsIGtleXRvb2xzLmgsIHBhcnNlLmMsIHNjYXBpLmMpOiBQYXRjaCBmcm9tIE1hcmtrdSBMYXVra2FuZW46CiAgICAgIC0gc2l6ZV90IGNoYW5nZXMuCgptc2xpZmNhayAyNyBKdWwgOTkgMDQ6MjQ6MDgKICAgIGFkZCBpbmNsdWRlIG5ldC9pZl9kbC5oIHN1Z2dlc3RlZCBieSBUb20gSXZhciBIZWxiZWtrbW8KCmRhdmVzIDI3IEp1bCA5OSAwNjozODowOQogICAgLSAoYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvKi5jKTogdHdlYWsgcmVnaXN0cnkgbGFiZWxzCgptc2xpZmNhayAyNyBKdWwgOTkgMDc6NTI6MzcKICAgIC0oYWdlbnQva2VybmVsLmMsYWdlbnQvZGxtb2RzL2RsbW9kX21pYi5jLGFnZW50L2RsbW9kcy9leGFtcGxlLmMsCiAgICBhZ2VudC9taWJncm91cC9rZXJuZWxfc3Vub3M1LmMsYWdlbnQvbWliZ3JvdXAvdXRpbF9mdW5jcy5jLAogICAgYWdlbnQvbWliZ3JvdXAvYWdlbnR4L21hc3Rlcl9yZXF1ZXN0LmMsCiAgICBhZ2VudC9taWJncm91cC9hZ2VudHgvcHJvdG9jb2wuYyxhZ2VudC9taWJncm91cC9kdW1teS9kdW1teS5jLAogICAgYWdlbnQvbWliZ3JvdXAvZXhhbXBsZXMvZXhhbXBsZS5jLAogICAgYWdlbnQvbWliZ3JvdXAvZXhhbXBsZXMvdWNkRGVtb1B1YmxpYy5jLAogICAgYWdlbnQvbWliZ3JvdXAvZXhhbXBsZXMvd29tYmF0LmMsCiAgICBhZ2VudC9taWJncm91cC9ob3N0L2hyX2RldmljZS5jLGFnZW50L21pYmdyb3VwL2hvc3QvaHJfZGlzay5jLAogICAgYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9maWxlc3lzLmMsCiAgICBhZ2VudC9taWJncm91cC9ob3N0L2hyX25ldHdvcmsuYywKICAgIGFnZW50L21pYmdyb3VwL2hvc3QvaHJfcGFydGl0aW9uLmMsCiAgICBhZ2VudC9taWJncm91cC9ob3N0L2hyX3ByaW50LmMsYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9wcm9jLmMsCiAgICBhZ2VudC9taWJncm91cC9ob3N0L2hyX3N0b3JhZ2UuYywKICAgIGFnZW50L21pYmdyb3VwL2hvc3QvaHJfc3dpbnN0LmMsYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9zd3J1bi5jLAogICAgYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9zeXN0ZW0uYywKICAgIGFnZW50L21pYmdyb3VwL2lwZndjaGFpbnMvaXBmd2NoYWlucy5jLAogICAgYWdlbnQvbWliZ3JvdXAvbWliSUkvYXQuYyxhZ2VudC9taWJncm91cC9taWJJSS9pY21wLmMsCiAgICBhZ2VudC9taWJncm91cC9taWJJSS9pbnRlcmZhY2VzLmMsYWdlbnQvbWliZ3JvdXAvbWliSUkvaXAuYywKICAgIGFnZW50L21pYmdyb3VwL21pYklJL3JvdXRlX3dyaXRlLmMsCiAgICBhZ2VudC9taWJncm91cC9taWJJSS9zbm1wX21pYi5jLAogICAgYWdlbnQvbWliZ3JvdXAvbWliSUkvc3lzT1JUYWJsZS5jLAogICAgYWdlbnQvbWliZ3JvdXAvbWliSUkvc3lzdGVtX21pYi5jLGFnZW50L21pYmdyb3VwL21pYklJL3RjcC5jLAogICAgYWdlbnQvbWliZ3JvdXAvbWliSUkvdWRwLmMsYWdlbnQvbWliZ3JvdXAvbWliSUkvdmFyX3JvdXRlLmMsCiAgICBhZ2VudC9taWJncm91cC9taXNjL2RsbW9kLmMsYWdlbnQvbWliZ3JvdXAvc25tcHYzL3NubXBFbmdpbmUuYywKICAgIGFnZW50L21pYmdyb3VwL3NubXB2My91c21Vc2VyLmMsCiAgICBhZ2VudC9taWJncm91cC90YXJnZXQvc25tcFRhcmdldEFkZHJFbnRyeS5jLAogICAgYWdlbnQvbWliZ3JvdXAvdGFyZ2V0L3NubXBUYXJnZXRQYXJhbXNFbnRyeS5jLAogICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZmlsZS5jLAogICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvcmVnaXN0cnkuYywKICAgIGFnZW50L21pYmdyb3VwL3YycGFydHkvYWNsX3ZhcnMuYywKICAgIGFnZW50L21pYmdyb3VwL3YycGFydHkvYWxhcm0uYywKICAgIGFnZW50L21pYmdyb3VwL3YycGFydHkvY29udGV4dF92YXJzLmMsCiAgICBhZ2VudC9taWJncm91cC92MnBhcnR5L2V2ZW50LmMsCiAgICBhZ2VudC9taWJncm91cC92MnBhcnR5L3BhcnR5X3ZhcnMuYywKICAgIGFnZW50L21pYmdyb3VwL3YycGFydHkvdmlld192YXJzLmMsYXBwcy9lbmNvZGVfa2V5Y2hhbmdlLmMsCiAgICBzbm1wbGliL2FzbjEuYyxzbm1wbGliL3NjYXBpLmMsc25tcGxpYi9zbm1wX2NsaWVudC5jLAogICAgc25tcGxpYi9zbm1wX2NsaWVudC5oKSAgRVJST1JfTVNHLCBwcmludGYgLS0+IERFQlVHTVNHVEwKCm1zbGlmY2FrIDI3IEp1bCA5OSAwOTozMzo0MwogICAgLShhZ2VudC9rZXJuZWwuYyxhZ2VudC9zbm1wZC5jLGFnZW50L21pYmdyb3VwL3V0aWxfZnVuY3MuYywKICAgIGFnZW50L21pYmdyb3VwL2FnZW50eC9tYXN0ZXIuYywKICAgIGFnZW50L21pYmdyb3VwL2FnZW50eC9zdWJhZ2VudC5jLAogICAgYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9zd3J1bi5jLGFnZW50L21pYmdyb3VwL21pYklJL2F0LmMsCiAgICBhZ2VudC9taWJncm91cC9taWJJSS9pY21wLmMsYWdlbnQvbWliZ3JvdXAvbWliSUkvaXAuYywKICAgIGFnZW50L21pYmdyb3VwL21pYklJL3JvdXRlX3dyaXRlLmMsYWdlbnQvbWliZ3JvdXAvbWliSUkvdGNwLmMsCiAgICBhZ2VudC9taWJncm91cC9taWJJSS91ZHAuYyxhZ2VudC9taWJncm91cC91Y2Qtc25tcC9kaXNrLmMsCiAgICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9lcnJvcm1pYi5jLAogICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvcHJvYy5jLAogICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvdm1zdGF0LmMsCiAgICBhZ2VudC9taWJncm91cC92MnBhcnR5L2FsYXJtLmMsYWdlbnQvbWliZ3JvdXAvdjJwYXJ0eS9ldmVudC5jLAogICAgYXBwcy9zbm1wYnVsa3dhbGsuYyxhcHBzL3NubXBkZWx0YS5jLGFwcHMvc25tcGdldC5jLAogICAgYXBwcy9zbm1wZ2V0bmV4dC5jLGFwcHMvc25tcHNldC5jLGFwcHMvc25tcHN0YXR1cy5jLAogICAgYXBwcy9zbm1wdGFibGUuYyxhcHBzL3NubXB0ZXN0LmMsYXBwcy9zbm1wdHJhcC5jLAogICAgYXBwcy9zbm1wdHJhcGQuYyxhcHBzL3NubXB1c20uYyxhcHBzL3NubXB3YWxrLmMsCiAgICBhcHBzL3NubXBuZXRzdGF0L2luZXQuYyxhcHBzL3NubXBuZXRzdGF0L21haW4uYywKICAgIGFwcHMvc25tcG5ldHN0YXQvcm91dGUuYyxzbm1wbGliL3BhcnNlLmMsc25tcGxpYi9yZWFkX2NvbmZpZy5jLAogICAgc25tcGxpYi9zbm1wdjMuYykgZml4IHNubXBfc2Vzc19wZXJyb3IgdXNlOyB1c2UgbG9nX3BlcnJvciBmb3IgcGVycm9yCgptc2xpZmNhayAyNyBKdWwgOTkgMTI6MDA6MzcKICAgIC0oZW5jb2RlX2tleWNoYW5nZS5kc3Asc25tcHVzbS5kc3ApIC1idWlsZCB1c2luZyBjb21tb24gV2luMzIgY29tcGlsZXIKCm1zbGlmY2FrIDI3IEp1bCA5OSAxMjoyNDowMwogICAgLShhcHBzOmVuY29kZV9rZXljaGFuZ2UuYyxzbm1wZGVsdGEuYyxzbm1wdGFibGUuYywgc25tcHVzbS5jOwogICAgc25tcGxpYjpyZWFkX2NvbmZpZy5jLHNubXB2My5jOyB3aW4zMi9saWJzbm1wX2RsbC9saWJzbm1wLmRlZikgLQogICAgIGFkanVzdCBoZWFkZXJzLCBidWlsZCBXaW4zMiBzbm1wdXNtK2VuY29kZV9rZXljaGFuZ2UKCm1zbGlmY2FrIDI3IEp1bCA5OSAxNjowNjozNQogICAgLShpbnRlcmZhY2VzLmMpIC0gZml4IGVycm9yIHNldHRpbmcgaWZfaWJ5dGVzIGZvciBMaW51eCAyLjAKCmhhcmRha2VyIDI3IEp1bCA5OSAxNjoxNDoyOAogICAgLSAoYXNuMS5jLCBtaWIuYywgbWliLmgsIHNubXBfYXBpLmMsIHNubXBfZGVidWcuYywgc25tcF9kZWJ1Zy5oLCBzbm1wdXNtLmMpOgogICAgICAtIGNsZWFuZWQgdXAgZGVidWdnaW5nIGR1bXAgb3V0cHV0LgogICAgICAtIGFkZGVkIG1vcmUgZHVtcCBwYXJzZSBoZWFkZXJzIGZvciB2MyBkdW1wcy4KCmhhcmRha2VyIDI3IEp1bCA5OSAxNjoyMDo0NgogICAgLSAoYXNuMS5jKTogZml4IGhlYWRlciBkdW1wLgoKbXNsaWZjYWsgMjcgSnVsIDk5IDE3OjE1OjAxCiAgICBpbmNsdWRpbmcgbWliLmggcmVxdWlyZXMgc3RkaW8uaCB0byBkZWZpbmUgRklMRSAqLgoKbXNsaWZjYWsgMjcgSnVsIDk5IDE5OjAyOjMxCiAgICAtKHNubXBfcGFyc2VfYXJncykgaW4gc25tcF9wYXJzZV9vaWQsIHRyeSBnZXRfbm9kZSBpZiByZWFkX29iamlkIGZhaWxzLgoKbXNsaWZjYWsgMjcgSnVsIDk5IDE5OjA2OjA4CiAgICAtKG1pYi5jKSBmaXggd2Fsa2luZyBPSUQgbGVuZ3RoIHBvaW50ZXIsIG51bWVyaWMgc3ViLWlkIG5vdCBmb3VuZAogICAgaW4gcmVhZF9vYmppZCBhbmQgcGFyc2Vfc3VidHJlZS4KCm1zbGlmY2FrIDI3IEp1bCA5OSAyMzozNDo1OQogICAgLShzbm1wZC5jKSBpbnZva2UgbG9nIGZ1bmN0aW9ucyBmcm9tIGNoaWxkIChjb3JyZWN0IHByb2Nlc3MgSUQgaW4gc3lzbG9nKQoKbXNsaWZjYWsgMjcgSnVsIDk5IDIzOjU4OjUxCiAgICAtKGtleXRvb2xzLmMsbWQ1LmMsbWQ1Lmgsc2NhcGkuYyxzbm1wLmMsc25tcF9hcGkuYyxzbm1wX2F1dGguYykgY2F0Y2ggTUQ1IGVycm9ycwoKbXNsaWZjYWsgMjggSnVsIDk5IDAyOjQyOjMyCiAgICBocl9zd3J1biAtIHJlc2V0IHBvaW50ZXIgaW4gbW9kdWxlIGluaXQgKGhlbHAgSFAvVVggOSkKICAgIHNubXBfbG9nZ2luZyAtIHVzZSB2c3ByaW50ZiBmb3IgSFAvVVgtOQoKaGFyZGFrZXIgMjggSnVsIDk5IDA2OjQ1OjE5CiAgICAtIChidWctcmVwb3J0KTogY2hhbmdlIG1haWwgYWRkciB0byB1Y2Qtc25tcC1idWdzCgpkYXZlcyAyOSBKdWwgOTkgMDM6Mjk6NDAKICAgIC0gKG1pYklJL3ZhY21fdmFycy5jKTogQ2F0Y2ggdXNlIG9mIHVuY29uZmlndXJlZCBFWEFNUExFLmNvbmYgZmlsZXMKCm1zbGlmY2FrIDI5IEp1bCA5OSAwODozNDo1OQogICAgbWVtb3J5X3NvbGFyaXMyIDogaGFuZGxlIG1hbGxvYyBlcnJvcnMKICAgIGtlcm5lbF9zdW5vczUgOiBzaGFyZSBrc3RhdCBmaWxkZXMgW1NIQVJFX0tTVEFUX0ZEXQoKbXNsaWZjYWsgMjkgSnVsIDk5IDEzOjI4OjM2CiAgICAtKGFwcHMvTWFrZWZpbGUuaW4pIC0gY29tbWVudCB1bm5lZWRlZCBUUkFQU1BFQ0lBTCBsaW5lCgptc2xpZmNhayAyOSBKdWwgOTkgMTM6NTk6MDIKICAgIC0oYWdlbnQvc25tcGQuYykgLSBsb2cgc3RhbmRhcmQgZXJyb3IgdW50aWwgaW5pdCBpcyBjb21wbGV0ZWQuCgptc2xpZmNhayAyOSBKdWwgOTkgMTU6MDQ6NDkKICAgIGF1dG9fbmxpc3QsIGtlcm5lbCA6IHBsYWNlIGxvZ19wZXJyb3IgdG8gY2F0Y2ggZXJybm8gdmFsdWUgaW4gcmVwb3J0LgoKaGFyZGFrZXIgMjkgSnVsIDk5IDE3OjAzOjI1CiAgICAtIChjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgTWFrZWZpbGUuaW4pOiByZW1vdmUgdHJhcF9zcGVjaWFsIHN0dWZmLgoKaGFyZGFrZXIgMjkgSnVsIDk5IDE3OjA2OjU2CiAgICAtIChtaWJncm91cC92MnBhcnR5KTogcmVtb3ZlZCBmaWxlcy4KCm1zbGlmY2FrIDMwIEp1bCA5OSAwMzo1MTozMQogICAgUmVtb3ZlZCBkdXBsaWNhdGUgSEFWRV9HRVQ/Pz9CWU5BTUU7IFJlbW92ZWQgdW51c2VkIF9DUlRJTVAKCm1zbGlmY2FrIDMwIEp1bCA5OSAwMzo1NzoyMwogICAgUmVtb3ZlZCBoaW50IG9mIHYycGFydHkgZnJvbSBjb21tZW50LgoKbXNsaWZjYWsgMzAgSnVsIDk5IDA0OjAwOjI4CiAgICAtKGFnZW50L2FnZW50X3JlYWRfY29uZmlnLmMsYWdlbnQvaGlzdG9yeS5jLGFnZW50L3NubXBfdmFycy5jLAogICAgYWdlbnQvc25tcGQuYyxzbm1wbGliL3JlYWRfY29uZmlnLmMsc25tcGxpYi9zbm1wX2FsYXJtLmMsCiAgICBzbm1wbGliL3NubXBfYXBpLmMsc25tcGxpYi9zbm1wX2xvZ2dpbmcuYyxzbm1wbGliL3NubXB2My5jLAogICAgc25tcGxpYi9zeXN0ZW0uYykgLSBwc29zIGRpZmZzIG9mZmVyZWQgYnkgQW50aG9ueSBTeW1vbnMKCm1zbGlmY2FrIDMwIEp1bCA5OSAwNDozNzoyMAogICAgcmVuYW1lIGxvY2FsIHZhciAnbGFzdCcgdG8gJ2xhc3RfaXBjaCcgLSBhdm9pZCBzaGFkb3cgZ2xvYmFsIGRlY2wKCm1zbGlmY2FrIDMwIEp1bCA5OSAwNDozOTozOAogICAgZGVjbCBsb2dfcGVycm9yCgptc2xpZmNhayAzMCBKdWwgOTkgMDQ6NDI6NDgKICAgIHJlbmFtZSBzZCB0byBpZnNkIC0gYXZvaWQgZ2xvYmFsIHNoYWRvdyBkZWNsCgptc2xpZmNhayAzMCBKdWwgOTkgMDU6NDI6MzQKICAgIGhyX3N0b3JhZ2UuYyAtIGF1dG9fbmxpc3QgZm9yIEhSX1NUT1JFX1NJWkUKICAgIGhyX3N3cnVuLmMgLSBmaXggZ2xvYmFsIHNoYWRvdyBkZWNsCiAgICBzbm1wX2xvZ2dpbmcuYyAtIGNoYW5nZSBmaWx0ZXIgZm9yIG9wZW5sb2cgcGVyIEEuIFN5bW9ucyBwYXRjaAoKZGF2ZXMgMzAgSnVsIDk5IDA2OjAxOjA4CiAgICAtIChhZ2VudC9hZ2VudF9yZWdpc3RyeS5jIGFnZW50L3NubXBfdmFycy5jIGFnZW50L3NubXBkLmMKICAgICAgIGFwcHMvc25tcF9wYXJzZV9hcmdzLmMgYXBwcy9zbm1wdGVzdC5jIGFwcHMvc25tcHRyYXAuYwogICAgICAgYXBwcy9zbm1wdHJhcGQuYyBhcHBzL3NubXBuZXRzdGF0L21haW4uYyBzbm1wbGliL3NubXBfYXBpLmMKICAgICAgIHNubXBsaWIvc25tcF9hcGkuaCBzbm1wbGliL3NubXBfY2xpZW50LmMKICAgICAgIGFnZW50L21pYmdyb3VwL3YycGFydHkuYyBhZ2VudC9taWJncm91cC92MnBhcnR5LmgpOgogICAgICAgLSAgUmVtb3ZlZCBsYXN0IHRyYWNlcyBvZiB2MnAgc3VwcG9ydAoKZGF2ZXMgMzAgSnVsIDk5IDA2OjIzOjA2CiAgICAtIChhZ2VudF9yZWFkX2NvbmZpZy5jIGFnZW50X3JlZ2lzdHJ5LmMgc25tcF92YXJzLmMgc25tcF92YXJzX20ybS5oKToKICAgICAgLSBSZW1vdmVkIGxhc3QgdHJhY2VzIG9mIG9ic29sZXRlIHYycGFydHkgTWFuYWdlci10by1NYW5hZ2VyIHN1cHBvcnQKCm1zbGlmY2FrIDMwIEp1bCA5OSAwNjozMDozMAogICAgc3lzdGVtIC0gdXNlIHNpemVvZgoKbXNsaWZjYWsgMzAgSnVsIDk5IDA2OjMwOjU5CiAgICB3aW4zMi9jb25maWcuaCAtIGRlZmluZSBIQVZFX0dFVEhPU1ROQU1FCgptc2xpZmNhayAzMCBKdWwgOTkgMDY6NDY6MjIKICAgIHVzZSB0cmFkaXRpb25hbCBLJlIgY29tbWVudGluZzsgbm90IGFsbCAiQyIgY29tcGlsZXJzIGFjY2VwdCAiLy8iIGNvbW1lbnRzLgoKbXNsaWZjYWsgMzAgSnVsIDk5IDA2OjU4OjA4CiAgICByZW1vdmUgcmVmZXJlbmNlcyB0byBub24tZXhpc3RlbnQgc25tcF92YXJzX20ybS5oCgpkYXZlcyAzMCBKdWwgOTkgMDc6MDE6NDYKICAgIC0gKGNvbmZpZ3VyZS5pbiBjb25maWd1cmUpOiBDaGVjayBmb3IgbGliZGIvbGliZGIxICYgbGlicnBtIHNlcGFyYXRlbHkKCmRhdmVzIDMwIEp1bCA5OSAwNzozMTo1NgogICAgLSAoYWNjb25maWcuaCk6IENoZWNrIGZvciBsaWJkYi9saWJkYjEgJiBsaWJycG0gc2VwYXJhdGVseQoKbXNsaWZjYWsgMzAgSnVsIDk5IDA4OjAxOjE4CiAgICBhZGQgdnNucHJpbnRmIGNoZWNrIGFuZCBIQVZFX1ZTTlBSSU5URiBjb25zdGFudAoKbXNsaWZjYWsgMzAgSnVsIDk5IDA4OjMyOjI4CiAgICBubyBzdHJ1Y3Qgc29ja2FkZHJfZGwgaW4gQUlYIDMuCgpoYXJkYWtlciAzMCBKdWwgOTkgMTQ6MTA6MDUKICAgIC0gKGNvbmZpZy5oLmluKTogYXV0b2hlYWRlciBydW4uCgpoYXJkYWtlciAzMCBKdWwgOTkgMTQ6MTA6MzAKICAgIC0gKE1ha2VmaWxlLmluKTogbWFrZSAvdmFyL3VjZC1zbm1wIGV4aXN0LiAgV2Ugc2hvdWxkIGRvIGEgcGVybWlzc2lvbgogICAgICBzZXQgYXMgd2VsbC4KCmhhcmRha2VyIDMwIEp1bCA5OSAxNDoxODo1NQogICAgLSAoKi9NYWtlZmlsZS5pbik6IG1ha2UgZGVwZW5kCgpoYXJkYWtlciAzMCBKdWwgOTkgMTQ6MTk6MjEKICAgIC0gKHZlcnNpb24uaCBidWctcmVwb3J0IHNlZHNjcmlwdC5pbik6IHZlcnNpb24gdGFnICggNC4wLnByZTUgKQoKbXNsaWZjYWsgIDIgQXVnIDk5IDA0OjI5OjM1CiAgICBhc24xLCBwYXJzZSkgZml4ZXMgc3VwcGxpZWQgYnkgTWFya2t1IExhdWtrYW5lbiAoTUpTLXVzZSB4Y2FsbG9jIGluIHBhcnNlKQoKbXNsaWZjYWsgIDIgQXVnIDk5IDA0OjM3OjQ2CiAgICBwYXJzZSAtIHNoYW1lIG9uIG1lIGZvciBub3QgY29tcGlsZSB0ZXN0aW5nIGZpcnN0IQoKbXNsaWZjYWsgIDIgQXVnIDk5IDIyOjI5OjM3CiAgICBzbm1wX2RlYnVnIC0gREVCVUdNU0cgbWFjcm9zIGNhbGwgc25tcF9nZXRfZG9fZGVidWdnaW5nIGJlZm9yZSBpbnZva2luZyBkZWJ1Z21zZyogZnVuY3Rpb25zLgoKbXNsaWZjYWsgIDMgQXVnIDk5IDA0OjQ2OjQxCiAgICBzbm1wX2FwaS5jIC0gcmVtb3ZlICJCWSIgZnJvbSBIQVZFX0dFVEhPU1RCWU5BTUUgKFNvbGFyaXMgMi41LjEgd3JvbmchKQoKbXNsaWZjYWsgIDMgQXVnIDk5IDA2OjU5OjUwCiAgICBhc24xLmMgLSBmaXggb3V0LW9mLWJvdW5kIGFycmF5IHdyaXRlIGFuZCBtZW1vcnkgbGVhayBpbiBwYXJzaW5nIHN0cmluZ3MuCgptc2xpZmNhayAgMyBBdWcgOTkgMDc6MDA6MTYKICAgIHNubXBfZGVidWcuYyAtIHJlbW92ZSB0cmFjZSBtZXNzYWdlcyBmcm9tIGRlYnVnbXNnX2hleHRsaS4KCm1zbGlmY2FrICAzIEF1ZyA5OSAwNzowMzoxNAogICAgc25tcF9kZWJ1Zy5oIC0gbW92ZSBERUJVR1RSQUNFIGZyb20gZGVidWdtc2dfaGV4dGxpIHRvIERFQlVHRFVNUFNFVFVQCgptc2xpZmNhayAgMyBBdWcgOTkgMDc6NTg6NDkKICAgIHZhY21fdmFycy5jIC0gY29weSBjb21tdW5pdHkgc3RyaW5nLCBudWxsIHRlcm1pbmF0ZSwgdGhlbiBkZWJ1ZyBwcmludAoKbXNsaWZjYWsgIDMgQXVnIDk5IDEyOjUzOjMyCiAgICBzbm1wX2RlYnVnLmggLSBmaXggIndhcm5pbmc6IEFOU0kgQyBmb3JiaWRzIGNvbmRpdGlvbmFsIGV4cHIgd2l0aCBvbmx5IG9uZSB2b2lkIHNpZGUiLgoKbXNsaWZjYWsgIDMgQXVnIDk5IDE0OjA2OjMzCiAgICBzbm1wX2RlYnVnLmMgLSBzaWduZWQgY29tcGFyaXNvbiBmb3IgbGVuIGluIGRlYnVnbXNnX2hleHRsaS4KCm1zbGlmY2FrICA0IEF1ZyA5OSAwMzo0ODowMgogICAgLShzbXV4LmMpIC0gcGF0Y2ggc3VwcGxpZWQgYnkgTmljayBBbWF0byB0byBmaXggQVNOX0lQQUREUkVTUyBwYXJzZS4KCm1zbGlmY2FrICA0IEF1ZyA5OSAwNTowMzoxMQogICAgdW5kbyBwYXRjaCBhcm91bmQgU29sYXJpcycgY29uZmlndXJlIGZhaWx1cmUgdG8gcmVnaXN0ZXIgSEFWRV9HRVRIT1NUQllOQU1FLgoKbXNsaWZjYWsgIDQgQXVnIDk5IDA5OjE3OjE4CiAgICAtKGNvbmZpZ3VyZSopIC0gS2VuIEhvcm5zdGVpbjogZml4IHRlc3QgeHhnZXRob3N0YnluYW1lLCB4eGdldHNlcnZieW5hbWUuCgptc2xpZmNhayAgNCBBdWcgOTkgMTI6MzM6NTYKICAgIHNubXBfYXBpLmMgLSBkdW1teSBmdW5jdGlvbnMgc25tcF9zeW5jaF97c2V0dXAscmVzZXR9IGFuZCBzbm1wX2dldF9lcnJuby4KCm1zbGlmY2FrICA1IEF1ZyA5OSAwMzoyNTo1NQogICAgY29uZmlnLnN1YiAtIHBhdGNoIGZyb20gTWFya2t1IExhdWtrYW5lbiB0byBzdXBwb3J0IEhQVVggMTEKCm1zbGlmY2FrICA1IEF1ZyA5OSAxMToxMTo1MwogICAgc25tcF9hcGkuMyAtIGRlc2NyaWJlIHNubXBfZXJyb3IoKSwgcmVwbGFjZXMgc25tcF9lcnJubyBhbmQgc25tcF9nZXRfZXJybm8oKQoKZGF2ZXMgIDYgQXVnIDk5IDA1OjU5OjQ2CiAgICAtIChhY2NvbmZpZy5oIGNvbmZpZy5oLmluIGNvbmZpZ3VyZS5pbiBjb25maWd1cmUpOgogICAgICAtIGNvbmZpZ3VyZS10aW1lIGZsYWcgdG8gY29udHJvbCBwcm92aXNpb24gb2YgImR1bW15IiB2YWx1ZXMKCmRhdmVzICA2IEF1ZyA5OSAwNjowMjoxNQogICAgLSAobWliSUkvKi5jIGhvc3QvKi5jKTogRG9uJ3QgcHJvdmlkZSAiZHVtbXkiIHZhbHVlcyAodW5sZXNzIGV4cGxpY2l0bHkgY29uZmlndXJlZCkKCm5iYSAgOSBBdWcgOTkgMDA6MjQ6MzcKICAgIHBhcnNlLmM6CXBhcnNlIGFnZW50IGNhcGFiaWxpdGllcwoKZGF2ZXMgIDkgQXVnIDk5IDAxOjAyOjE1CiAgICAtIChGQVEpOiBOaW5lIG5ldyBxdWVzdGlvbnMsIHBsdXMgYXNzb3J0ZWQgdHdlYWtzIGZvciB0aGUgbmV3IHJlbGVhc2UuCgptc2xpZmNhayAgOSBBdWcgOTkgMDY6NDg6NDcKICAgIG1pYi4qLCBwYXJzZS4qIC0gbW92ZSBwcmludF9vaWRfcmVwb3J0IGFuZCBtaW5pb25zIHdob2xseSBpbnRvIG1pYi5jCgptc2xpZmNhayAgOSBBdWcgOTkgMDY6NTA6MzYKICAgICBzbm1wZGVsdGEsIHRyYW5zbGF0ZSwgdHJhcGQpIC0gbGlzdCBhbGwgb3B0aW9ucyBpbiB1c2FnZTsgcmVtb3ZlIGRpc2FibGVzIGZvciBwcmludF9vaWRfcmVwb3J0IGluIHRyYW5zbGF0ZS4KCm1zbGlmY2FrICA5IEF1ZyA5OSAwNjo1Mjo0NwogICAgc25tcGQuYyAtIGxpc3QgYWxsIG9wdGlvbnMgaW4gdXNhZ2UKCm1zbGlmY2FrICA5IEF1ZyA5OSAwNjo1NDowMQogICAgbGlic25tcC5kZWYgLSByZW1vdmUgcHJpbnRfb2lkX3JlcG9ydCBkaXNhYmxlIG9wdGlvbnMKCm1zbGlmY2FrICA5IEF1ZyA5OSAwOTo0NToxNQogICAgLShzbm1wLmMpIGZpeCBidWZmZXIgb3ZlcmZsb3cgaW4geGR1bXAsIG9mIGFsbCBwbGFjZXMgKDc3IHMvYiA3ODsgdXNpbmcgODApCgpuYmEgIDkgQXVnIDk5IDEwOjQzOjI4CiAgICAobWFueSk6CW51a2UgdmFyaW91cyBwcm90b3R5cGUgd2FybmluZ3MKCm1zbGlmY2FrICA5IEF1ZyA5OSAxMTo0MDoyNQogICAgLShtZDUuYykgZml4IHJlYWQgcGFzdCBlbmQgcHJvYmxlbQogICAgLShzbm1wX2FwaS5jKSBmaXggbG9zaW5nIGNvbW11bml0eSBzdHJpbmcgcHJvYmxlbQoKaGFyZGFrZXIgIDkgQXVnIDk5IDEzOjEyOjM1CiAgICAtIChhY2NvbmZpZy5oLCBjb25maWcuaC5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuaW4pOiByZW1vdmUgL2Rldi9yYW5kb20gdGVzdC4KCm1zbGlmY2FrICA5IEF1ZyA5OSAxNTowNzoyNAogICAgc25tcHVzbS5jIC0gYWx3YXlzIGNsZWFyIGZpZWxkX2xlbiBpZiByZWYgaXMgdmFsaWQgcHRyOwogICAgc25tcF9hcGkuYyAtIGRvbid0IG92ZXJ3cml0ZSBjb21tdW5pdHkgcG9pbnRlciB3aXRoIHNlY3VyaXR5QXV0aFByb3RvIHBvaW50ZXIKCm5iYSAxMCBBdWcgOTkgMDQ6NDU6MTcKICAgIGNvbmZpZ3VyZS5pbiBjb25maWcuaC5pbiBjb25maWd1cmUgcy9uZXRic2QgYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9zdG9yYWdlLmM6CiAgICAJc3VwcG9ydCBmb3IgTmV0QlNEL3NwYXJjIGFuZCBOZXRCU0QgMS40CgpuYmEgMTAgQXVnIDk5IDA0OjQ2OjM1CiAgICBzbm1wbGliL21pYi5jOglmaXggaGFuZGxpbmcgb2YgbnVtZXJpYyBvaWRzIGFuZCByZXBvcnRpbmcgZXJyb3JzCgpuYmEgMTAgQXVnIDk5IDA0OjQ3OjIyCiAgICBhZ2VudC9rZXJuZWwuYzoJYWJvcnQgb24ga3ZtX29wZW4gZmFpbHVyZXMKCm5iYSAxMCBBdWcgOTkgMDQ6NDg6NDEKICAgIHNubXBuZXRzdGF0L2lmLmM6CWZpeGVzIGZvciBzbm1wbmV0c3RhdCAtaSBvbiB2aXJ0dWFsIGludGVyZmFjZXMKCm5iYSAxMCBBdWcgOTkgMDQ6NTA6NTIKICAgIGludGVyZmFjZXMuYyB2YXJfcm91dGUuYyBzbm1wX2xvZ2dpbmcuYzogZml4IGNvbXBpbGVyIHdhcm5pbmdzCgptc2xpZmNhayAxMCBBdWcgOTkgMDk6MTk6MTAKICAgIHJlYWRfY29uZmlnLmMsIHNubXBfYXBpLmMgLSBjb252ZXJ0IGZwcmludGYoc3RkZXJyIHRvIHNubXBfbG9nKExPR19FUlIsV0FSTklORykKCm1zbGlmY2FrIDEwIEF1ZyA5OSAxMDowNDo0MAogICAgRml4IGZvciBidWlsZCAobm8gcGFnZXNpemUgdmFyIGRlZmluZWQgZm9yIGxpbnV4KS4KCmhhcmRha2VyIDEwIEF1ZyA5OSAxMTowNTozOAogICAgLSAoc25tcGQuYyk6IGxvZyB2ZXJzaW9uIG51bWJlciBhZnRlciBzdGRlcnIgaXMgb3B0aW9uYWxseSBjbG9zZWQuCgpoYXJkYWtlciAxMCBBdWcgOTkgMTQ6MjY6MzMKICAgIC0gKHNubXBfdmFycy5jKTogcHJvdGVjdCBhZ2FpbnN0IGV2aWwgbWliIG1vZHVsZXMgZnJvbSBtb2RpZnlpbmcKICAgICAgbWVtb3J5IHRoZXkgc2hvdWxkbid0IGJlIG1vZGlmeWluZyB5ZXQuCiAgICAgIC0gKGlmZGVmJ2VkIGZvciBzcGVlZCBwcm9maWxpbmcgbGF0ZXIpLgoKaGFyZGFrZXIgMTAgQXVnIDk5IDE1OjU0OjMzCiAgICAtIChzbm1wX3BhcnNlX2FyZ3MuYyk6IGZvcmNlIHYzIGVuZ2luZUlEIHNldHRpbmcgdG8gc29tZXRoaW5nIGJvZ3VzIHRvCiAgICAgIGdldCBhcm91bmQgbG9jYWwgY29uZmlndXJhdGlvbiBkYXRhIHN0b3JlIHRpbWUgc3luY2hyb25pemF0aW9uIGNvbmZsaWN0cy4KCmhhcmRha2VyIDEwIEF1ZyA5OSAxNzoyMzo1OQogICAgLSAoc25tcGQuYyk6IHByaW50IC1IIHVzYWdlIHRvIHN0ZGVyci4KCmhhcmRha2VyIDExIEF1ZyA5OSAxMzowNDo1MAogICAgLSAoYWNjb25maWcuaCwgY29uZmlnLmguaW4sIHJlYWRfY29uZmlnLmMpOgogICAgICAtIE1ha2UgcGVyc2lzdGVudCBjYWNoZSBjb25mb3JtIHRvIGEgbW9yZSBzZWN1cmUgdW1hc2suCgpuYmEgMTEgQXVnIDk5IDIxOjUyOjI2CiAgICBocl9zdG9yYWdlLmM6CXJlbW92ZSB0byBmb3Jnb3R0ZW4gZGVidWcgbGluZXMuCgpuYmEgMTEgQXVnIDk5IDIxOjUzOjMxCiAgICBzbm1wbmV0c3RhdC9pZi5jOgloYW5kbGUgbm9uLWNvbnRpZ3VvdXMgaWZUYWJsZS4gQWxzbyBtYWtlIHRoZQogICAgCWNvdW50ZXJzIHVuc2lnbmVkLgoKaGFyZGFrZXIgMTIgQXVnIDk5IDE2OjE2OjAxCiAgICAtIChzbm1wLmNvbmYuNS5kZWYpOiB1cGRhdGVkIHdpdGggdGhlIG5ld2VyIHRva2VuIGxpc3QuCgpoYXJkYWtlciAxMiBBdWcgOTkgMTY6NDE6MjIKICAgIC0gKEZBUSwgc25tcGNtZC4xLCBzbm1wdHJhcC4xKTogbWlub3IgZG9jIHVwZGF0ZXMuCgpoYXJkYWtlciAxMiBBdWcgOTkgMTY6NDY6MzQKICAgIC0gKE5FV1MsIFJFQURNRSk6IG1pbm9yIHVwZGF0ZXMuCgpkYXZlcyAxMyBBdWcgOTkgMDI6NDc6MDAKICAgIC0gKGV4YW1wbGVzL3VjZERlbW9QdWJsaWMuW2NoXQogICAgICAgaXBmd2NoYWlucy9pcGZ3Y2hhaW5zLltjaF0gbWlzYy9pcGZ3YWNjLltjaF0KICAgICAgIHRhcmdldC9zbm1wVGFyZ2V0e0FkZHIsUGFyYW1zfUVudHJ5LltjaF0KICAgICAgIHNtdXgvc25tcF8qLltjaF0pOgogICAgICAgLSBSZWdpc3RlciBtb2R1bGVzIGR5bmFtaWNhbGx5IGF0IHJ1bi10aW1lCgpoYXJkYWtlciAxMyBBdWcgOTkgMDc6MTE6MzUKICAgIC0gKE1ha2VmaWxlLmluKTogIm1ha2UgdGVzdCIgaW4gdG9wIGxldmVsIE1ha2VmaWxlLgoKaGFyZGFrZXIgMTMgQXVnIDk5IDA3OjEyOjE4CiAgICAtIChORVdTLCBSRUFETUUuc25tcHYzLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbik6IGRvY3VtZW50YXRpb24gdXBkYXRlcy4KCmhhcmRha2VyIDEzIEF1ZyA5OSAwNzoxNjo1MQogICAgLSAoTWFrZWZpbGUuaW4sIE1ha2VmaWxlLmluLCBNYWtlZmlsZS5pbiwgTWFrZWZpbGUuaW4pOiBtYWtlIGRlcGVuZC4KCmhhcmRha2VyIDEzIEF1ZyA5OSAwOTozMzo0MAogICAgLSAoY29uZmlndXJlLCBjb25maWd1cmUuaW4pOiBkb24ndCB1c2UgTk9fRFVNTVlfVkFMVUVTIGJ5IGRlZmF1bHQuCgptc2xpZmNhayAxMyBBdWcgOTkgMTE6MTQ6MzkKICAgIChob3N0L2hyX2RldmljZS5jLGhvc3QvaHJfcHJpbnQuYywgaG9zdC9ocl9wcm9jLmMsaG9zdC9ocl9zdG9yYWdlLmMsCiAgICBob3N0L2hyX3N3aW5zdC5jLGhvc3QvaHJfc3dydW4uYywgaG9zdC9ocl9zeXN0ZW0uYyxtaWJJSS9hdC5jLAogICAgbWliSUkvaW50ZXJmYWNlcy5jLG1pYklJL2lwLmMsIG1pYklJL3N5c3RlbV9taWIuYyxtaWJJSS90Y3AuYywKICAgIG1pYklJL3VkcC5jLG1pYklJL3Zhcl9yb3V0ZS5jKSAtICNpZiBOT19EVU1NWV9WQUxVRVMgKGhlbHAgb3V0IGNvbmZpZ3VyZSkKCmhhcmRha2VyIDEzIEF1ZyA5OSAxMTo1NTozMQogICAgLSAodmFyX3JvdXRlLmMpOiBkb24ndCBkbyBjYWNoaW5nIGZvciBOT19EVU1NWV9WQUxVRVMuCgptc2xpZmNhayAxMyBBdWcgOTkgMTI6MTg6MTcKICAgIHZhcl9yb3V0ZS5jIC0gI2lmZGVmIE5PX0RVTU1ZIC0tPiAjaWYgTk9fRFVNTVkgKGxpa2UgdGhlIG90aGVyIHVzZXMpLgoKaGFyZGFrZXIgMTMgQXVnIDk5IDEyOjQ5OjM1CiAgICAtIChjb25maWd1cmUsIGNvbmZpZ3VyZS5pbik6IHByb3Blcmx5IGRvIHdoYXQgLS13aXRob3V0LWR1bW15LXZhbHVlcwogICAgICBzaG91bGQgZG8uCgpoYXJkYWtlciAxMyBBdWcgOTkgMTU6MjI6NTMKICAgIC0gKGNvbmZpZ3VyZSwgY29uZmlndXJlLmluKTogcmVtb3ZlIGNvbmZpZ19sb2FkX21pYiBwYXJzaW5nLgoKaGFyZGFrZXIgMTMgQXVnIDk5IDE1OjM1OjU0CiAgICAtIChNYWtlZmlsZS5pbik6IGRvbid0IHJlbW92ZSBtaWJfbW9kdWxlX2xvYWRzLmguCgpoYXJkYWtlciAxMyBBdWcgOTkgMTY6MDU6NDIKICAgIC0gKHJlbW92ZS1maWxlcyk6IHJlbW92ZSB0aGUgSVNTVUVTIGZpbGUgZm9yIHJlbGVhc2VzLgoKaGFyZGFrZXIgMTMgQXVnIDk5IDE2OjA2OjUxCiAgICAtICh2ZXJzaW9uLmggYnVnLXJlcG9ydCBzZWRzY3JpcHQuaW4pOiB2ZXJzaW9uIHRhZyAoIDQuMC5wcmU2ICkKCm5iYSAxNiBBdWcgOTkgMTQ6NTg6NDAKICAgIHNubXBuZXRzdGF0L2lmLmM6IGFsbG93IC1pIGFuZCAtbyBvdXRwdXRzIGV2ZW4gd2l0aCBpbmNvbXBsZXRlIHJlc3BvbnNlcwogICAgCWZyb20gc25tcGQgKHN1Y2ggYXMgTGludXggdGhhdCBkb2VzIG5vdCByZXR1cm4gaWZJbk5VQ2FzdFBrdHMKICAgIAl3aXRoIHRoZSBuZXcgRFVNTVkgc2V0dXApCgpuYmEgMTYgQXVnIDk5IDE0OjU5OjI5CiAgICBzbm1wbmV0c3RhdC9tYWluLmM6IGVuYWJsZV9zdGRlcnJsb2coKSBzbyB0aGF0IHdlIGdldCBhbiBlcnJvciBtZXNzYWdlCiAgICAJZm9yIGJhZCBob3N0IG5hbWVzLgoKbmJhIDE4IEF1ZyA5OSAwMjo0MDo0OAogICAgYWdlbnQvc25tcGQuYzoJbW92ZSB0aGUgdGVybWluYXRpb24gcHJvY2Vzc2luZyBmcm9tIHRoZSBzaWduYWwgaGFuZGxlcgogICAgCXRvIGFmdGVyIHRoZSBtYWluIGxvb3AgaGFzIHRlcm1pbmF0ZWQuCgpuYmEgMTggQXVnIDk5IDAyOjUxOjU3CiAgICAtIHNubXBkLmMsIGFnZW50X3JlYWRfY29uZmlnLj8sIHZlcnNpb25pbmZvLmM6IG1vdmUgdGhlIHJlY29uZmlndXJhdGlvbgogICAgCW91dHNpZGUgdGhlIHNpZ25hbCBoYW5kbGVyLgoKbmJhIDE4IEF1ZyA5OSAwOToyNjozNQogICAgLSBpbnRlcmZhY2VzLj86IHVwZGF0ZXMgZm9yIExpbnV4IHRvIGhhbmRsZSBsYXJnZSBjb3VudGVycyBhbmQgdmlydHVhbAogICAgCWludGVyZmFjZXMuCgpuYmEgMTggQXVnIDk5IDA5OjMxOjA2CiAgICAtIChtYW55KToJY2hhbmdlIHRoZSBuYW1lcyBvZiB0aGUgbG9nZ2luZyBmdW5jdGlvbnMgdG8gYmUgc25tcF8qCiAgICAJZGVmYXVsdCBkb19zdGRlcnJfbG9nZ2luZyB0byAxLgoKbmJhIDE5IEF1ZyA5OSAwMjozMzo1NgogICAgLSBpbnRlcmZhY2VzLmM6IHJlbW92ZSBzb21lIGxlZnQgb3ZlciBkZWJ1ZyBvdXRwdXQKCm5iYSAxOSBBdWcgOTkgMDI6MzU6MTAKICAgIC0gc25tcF9sb2dnaW5nLmMsIGFnZW50L3ZhcmlvdXM6IHJlaW5zdGF0ZSAtYSBhbmQgLVYgbG9nZ2luZyAoYWxtb3N0KS4KICAgIAl0aW1lc3RhbXAgZmlsZSBhbmQgc3RkZXJyIGxvZ2dpbmcuCgpuYmEgMTkgQXVnIDk5IDEwOjM4OjAyCiAgICAtIHNubXBfYXBpLmM6CWNvcnJlY2x5IGNhbGwgcHJlLXBhcnNlIGhvb2ssIGFsc28gd2hlbiBub3QgZGVidWdnaW5nCiAgICAJKHRoaXMga2lsbGVkIHRoZSBsaWJ3cmFwIGNoZWNrIGluIHNubXBkKQoKbmJhIDE5IEF1ZyA5OSAxMDozODo0OAogICAgLSBzbXV4LmM6IHJlbW92ZSBzb21lIGV4dHJhbmVvdXMgXG4gZnJvbSBzbm1wX2xvZ19wZXJyb3IgY2FsbHMuCgpuYmEgMTkgQXVnIDk5IDEwOjQwOjIyCiAgICAtIHNubXBkLmM6IHJlbW92ZSBzb21lIHN1cGVyZmx1b3VzIDogZnJvbSBzbm1wX2xvZ19wZXJyb3IuCiAgICAJTG9nIHdoZW4gc25tcGQgcmVjb25maWd1cmVzIGZvbGxvd2luZyBhIFNJR0hVUAoKbmJhIDE5IEF1ZyA5OSAxNDowOToyNQogICAgLSBzbm1wX2FwaS4/LCBzbm1wZC5jLCBzbm1wdHJhcC5jLCBzbm1wdHJhcGQuYzogcmVpbnN0YXRlIGFnZW50X2FkZHIgaW4KICAgIAl0aGUgcGR1IHN0cnVjdHVyZSAodXNlZCBmb3IgdjEgdHJhcHMpLgoKaGFyZGFrZXIgMTkgQXVnIDk5IDE2OjA5OjU0CiAgICAtIChzbm1wZ2V0LmMsIHNubXBnZXRuZXh0LmMsIHNubXBzZXQuYyk6IFBhdGNoIGZyb20gZGxlbmdlbEBob21lLmNvbToKICAgICAgLSBjaGVjayBhcmd1bWVudCBjb3VudCBmb3IgbWluaW11bSBudW1iZXIuCgpuYmEgMjAgQXVnIDk5IDAzOjQzOjM3CiAgICAtIGFnZW50eC8qOiB2YXJpb3VzIHByb3RvdHlwZSBmaXhlcywgdG8ga2VlcCBudW1iZXIgb2Ygd2FybmluZ3MgZG93bgoKaGFyZGFrZXIgMjAgQXVnIDk5IDEzOjQzOjU2CiAgICAtIChkZWZhdWx0X3N0b3JlLmgsIHNubXBfYXBpLmMsIHNubXBfbG9nZ2luZy5jLCBzbm1wX2xvZ2dpbmcuaCk6CiAgICAgIC0gbWFrZSBsb2dnaW5nIG9mIHRpbWVzdGFtcHMgb3B0aW9uYWwgYnkgYSBzbm1wLmNvbmYgZGlyZWN0aXZlLgoKaGFyZGFrZXIgMjAgQXVnIDk5IDEzOjU2OjU3CiAgICAtIChzbm1wLmNvbmYuNS5kZWYsIGRlZmF1bHRfc3RvcmUuaCwgc25tcF9sb2dnaW5nLmMpOgogICAgICAtIHR1cm4gb2ZmIHRpbWUgc3RhbXAgbG9nZ2luZyBieSBkZWZhdWx0LiAgSXQgbXVzdCBiZSBleHBsaWNpdGx5CiAgICAgICAgcmVxdWVzdGVkIGluIHRoZSBzbm1wLmNvbmYgZmlsZSB0byB0dXJuIGl0IG9uLgogICAgICAgICh0aGUgcmVhc29uIGlzIHRoYXQgYSBsb3Qgb2YgbG9nZ2luZyBpcyBpbmNyZW1lbnRhbCBpbiBuYXR1cmUgYW5kCiAgICAgICAgaXMgbm90IGxpbmUgYnVmZmVyZWQgYmVmb3JlIGJlaW5nIHNlbnQgdG8gdGhlIGxvZ2dpbmcgcm91dGluZXMuCiAgICAgICAgVGhlIG90aGVyIHNvbHV0aW9uIGlzIHRvIGhhdmUgdGhlIGxvZ2dpbmcgcm91dGluZXMgZGV0ZWN0IHdoZW4gdG8KICAgICAgICBwcmludCB0aW1lc3RhbXBzIGJ5IHdhdGNoaW5nIG91dCBmb3IgXG4ncy4gIEJ1dCwgbm90IHRoaXMgcm91bmQuCgpoYXJkYWtlciAyMCBBdWcgOTkgMTY6Mzk6MjEKICAgIC0gKHNubXBfYXBpLmgsIHNubXBfYXBpLmMsIHNubXBfYXV0aC5jLCBzbm1wX2ltcGwuaCwgYXNuMS5jKTogNjRiaXQgY2xlYW51cC4KCmhhcmRha2VyIDIwIEF1ZyA5OSAxNzowODoxNwogICAgLSAoTkVXUyk6IGxhc3QgbWludXRlIGNoYW5nZXMKCmhhcmRha2VyIDIwIEF1ZyA5OSAxNzoxMDoyNgogICAgLSAodmVyc2lvbi5oIGJ1Zy1yZXBvcnQgc2Vkc2NyaXB0LmluKTogdmVyc2lvbiB0YWcgKCA0LjAucHJlNyApCgpoYXJkYWtlciAyMiBBdWcgOTkgMTc6MzM6MDAKICAgIC0gKGlwZmNoYWlucyk6IHJlbW92ZWQgZnJvbSBkaXN0cmlidXRpb24uICBOZXdlciBvbmUgaW4gZnRwJ3MgY29udHJpYiBkaXIuCgpoYXJkYWtlciAyMiBBdWcgOTkgMTc6NTQ6NTcKICAgIC0gKGNvbmZpZ3VyZSwgY29uZmlndXJlLmluKToKICAgICAgLSAtLXdpdGhvdXQtZHVtbXktdmFsdWVzIGlzIGRlZmF1bHQgYWdhaW4uCiAgICAgIC0gY2xlYW51cCBvZiAtLWhlbHAgc3R1ZmYuCiAgICAgIC0gZml4IG9mIHBlcmlzdGVudCBkaXJlY3RvcnkgY3JlYXRpb24uCgpoYXJkYWtlciAyMiBBdWcgOTkgMTc6NTY6MjcKICAgIC0gKE1ha2VmaWxlLmluLCBNYWtlZmlsZS5pbik6IG1ha2UgZGVwZW5kLgoKaGFyZGFrZXIgMjIgQXVnIDk5IDE3OjU3OjI3CiAgICAtIChzbm1wX2FwaS5oKTogdmVyc2lvbiAtPiB1X2xvbmcuCgptc2xpZmNhayAyMyBBdWcgOTkgMDY6MTQ6MzkKICAgIFJlbW92ZSBsYXN0IHZlc3RpZ2VzIG9mIGNvbmZpZ19sb2FkX21pYgoKaGFyZGFrZXIgMjMgQXVnIDk5IDA3OjAyOjQzCiAgICAtIChORVdTKTogYW5zaSBtZW50aW9uZWQuCgptc2xpZmNhayAyMyBBdWcgOTkgMDk6MDA6NTkKICAgIFdpbjMyIGJ1aWxkIGZpeGVzCgpuYmEgMjMgQXVnIDk5IDEzOjU0OjMyCiAgICAtIGFnZW50L3NubXBkLmMsIGFnZW50L3NubXBfdmFycy5jOiBtb3ZlIHNvbWUgLXYgbG9nZ2luZyB0byBhIG1vcmUgcmF0aW9uYWwKICAgIAlwbGFjZS4KCm1zbGlmY2FrIDIzIEF1ZyA5OSAxNDowMjo1MQogICAgRGVzY3JpYmUgVVNFX0FTTl9TSE9SVF9MRU4gaW4gRkFRLCBhbmQgaW1wbGVtZW50IGluIF9zbm1wX2J1aWxkLgoKbXNsaWZjYWsgMjMgQXVnIDk5IDE1OjMyOjIxCiAgICBIQUNLISBmaXh1cCBzaG9ydCBsZW5ndGggKGZpcnN0IHB1dCBjb3JyZWN0IGNvbW11bml0eSBzdHJpbmcgaW4gcGR1LT4gKS4KCmhhcmRha2VyIDIzIEF1ZyA5OSAxNjoxNDowMAogICAgLSAoVDAyOHNubXB2M2dldGZhaWwpOiBzbm1wdjMgZ2V0IGZhaWx1cmUgdGVzdC4KCmhhcmRha2VyIDIzIEF1ZyA5OSAxNjoxNDowMAogICAgLSAoSU5TVEFMTCk6IHJlbW92ZSB2ZXJzaW9uIHNwZWNpZmljIGluZm9ybWF0aW9uCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgpDaGFuZ2VzOiBWMy42LjEgLT4gVjMuNi4yCgpoYXJkYWtlciAxNiBNYXIgOTkgMDg6MTU6MTgKICAgIC0gKGRsbW9kLmMpOiByZW1vdmVkIGEgYm9ndXMgbmV3LWxpbmUuCgpoYXJkYWtlciAxNiBNYXIgOTkgMTA6MzQ6MDMKICAgIC0gKGhyX3N3cnVuLmMpOiBmaXggZmlsZSBkZXNjcmlwdG9yIGxlYWsgb24gZnJlZWJzZC4KCm1zbGlmY2FrIDE2IE1hciA5OSAxMToyMzozMAogICAgLShzbm1wX2FwaS5jKSBjb25zaXN0ZW50IGVycm9yIHJldHVybi4KCm1zbGlmY2FrIDE2IE1hciA5OSAxMTozMzo1MgogICAgLSBtb3ZlIE1BVENIX0ZBSUxFRC9NQVRDSF9TVUNDRUVERUQgZnJvbSB1dGlsX2Z1bmNzLmggdG8gbWliaW5jbC5oCgptc2xpZmNhayAxNyBNYXIgOTkgMTM6NTM6NDgKICAgIC0oaHJfc3dydW4uYykgLSBwcmV2ZW50IFN1bk9TIDQuMSBjb3JlIChzdW5vczQgc3RpbGwgcHJpbWl0aXZlKQoKbXNsaWZjYWsgMTggTWFyIDk5IDA4OjM3OjQ1CiAgICAtIChtaWJJSS9pcC5jKSBmaXggTUlCX0lQQ09VTlRFUl9TWU1CT0wgdXNhZ2UKCmhhcmRha2VyIDE5IE1hciA5OSAwOToyMzozOAogICAgLSAoc25tcGdldC5jLCBzbm1wd2Fsay5jKTogZml4ZWQgaW5pdGlhbGl6YXRpb24gYW5kIHVzYWdlIG9mICJmYWlsdXJlcyIuCgpoYXJkYWtlciAyMyBNYXIgOTkgMTA6MDk6NDcKICAgIC0gKE1ha2VmaWxlLmluKTogYWRkIG1vcmUgdGFyZ2V0cy4KCmhhcmRha2VyIDIzIE1hciA5OSAxMDoxMDoxMQogICAgLSAocmVhZF9jb25maWcuYyk6IG1ha2UgY29weV93b3JkKCkgcmV0dXJuIHRoZSBuZXh0IHRva2VuLCBub3QgdGhlCiAgICAgIG5leHQgc3BhY2UuCgpoYXJkYWtlciAyMyBNYXIgOTkgMTA6MTE6MDMKICAgIC0gKG1pYmRlZnMuaCwgc3RydWN0LmgsIGV4dGVuc2libGUuYywgZXh0ZW5zaWJsZS5oLCBwcm9jLmMsIHByb2MuaCwKICAgICAgc25tcGQuY29uZi41LmRlZiwgVUNELVNOTVAtTUlCLnR4dCk6CiAgICAgIC0gcGVyLXByb2Nlc3MvZXhlYyBmaXggc2NyaXB0cyBjcmVhdGVkLgoKaGFyZGFrZXIgMjMgTWFyIDk5IDEwOjIzOjIxCiAgICAtICh2ZXJzaW9udGFnKTogcmVnZXhwIGZpeC4KCmhhcmRha2VyIDI4IE1hciA5OSAxNjoxMTozMgogICAgLSAoc25tcFRhcmdldEFkZHJFbnRyeS5oLCBzbm1wVGFyZ2V0UGFyYW1zRW50cnkuaCk6IHJlbG9jYXRlIHRvCiAgICAgIHNubXBNb2R1bGVzLjEyLCB3aGVyZSB0aGV5IHNob3VsZCBiZS4KCmhhcmRha2VyIDI4IE1hciA5OSAxNjoxNzoyNAogICAgLSAoc25tcFRhcmdldEFkZHJFbnRyeS5jLCBzbm1wVGFyZ2V0UGFyYW1zRW50cnkuYyk6CiAgICAgIC0gd2hlbiB1c2luZyBjb3B5X3dvcmQoKSBkb24ndCBza2lwIHNwYWNlcywgc2luY2UgaXQgZG9lcyB0aGF0LgoKbXNsaWZjYWsgIDEgQXByIDk5IDEzOjEwOjQ3CiAgICAtIChsaWJzbm1wLmgpIEFzeW1wdG90aWNhbGx5IGNsb3NlciB0byBzdXBwb3J0aW5nIENNVSBjb25zdGFudHMuCgptc2xpZmNhayAgNSBBcHIgOTkgMTE6MDY6MjcKICAgIC0gKHNubXBfYXBpLmMsIG1haW4uYywgc25tcF9wYXJzZV9hcmdzLmMpIEpvZSBNYXJ6b3QncyBmaXggdG8gY29weSBldmVuIGFuIGVtcHR5IGNvbW11bml0eSBuYW1lLgoKbXNsaWZjYWsgIDUgQXByIDk5IDE0OjEwOjE0CiAgICAtIGJ1aWxkIHNubXBuZXRzdGF0IHdpdGggQ3lnV2luMzIKCm1zbGlmY2FrICA1IEFwciA5OSAxNDoyMjo0MwogICAgLSBCdWlsZCB3aXRoIEN5Z1dpbjMyCgptc2xpZmNhayAgNSBBcHIgOTkgMTU6NTk6MjAKICAgIC0gQnVpbGQgdXNpbmcgQ3lnV2luMzIgKGluY2x1ZGVzIE5pZWxzIEIuJ3Mgc25tcF92YXJzLmMgcGF0Y2gpLgoKaGFyZGFrZXIgIDYgQXByIDk5IDA5OjIzOjE2CiAgICAtIChjb25maWcuZ3Vlc3MsIGNvbmZpZy5zdWIpOiBuZXcgdmVyc2lvbnMgZnJvbSBhdXRvY29uZiAyLjEzLgoKbXNsaWZjYWsgIDYgQXByIDk5IDEwOjU5OjA1CiAgICAtIChleHRlbnNpYmxlLmMpIHF1ZWxsIHdhcm5pbmcgYWJvdXQgY29tcGFyaW5nIHBvaW50ZXIgd2l0aCBub24tcG9pbnRlci4KCm1zbGlmY2FrICA2IEFwciA5OSAxMTozMzo1NAogICAgLSBhbm90aGVyIHJvdW5kIG9mIEFOU0ktZnlpbmcgdGhlIGFnZW50IGNvbXBsZXRlZC4KCmhhcmRha2VyICA2IEFwciA5OSAxNToxMzo0MAogICAgLSAoKik6IE1lcmdlZCB0aGUgNC4wIGxpbmUgaW50byB0aGUgMy42LjEgbGluZS4KCmhhcmRha2VyICA2IEFwciA5OSAxNTozODo0NQogICAgLSAobWliaW5jbC5oLCB1Y2REZW1vUHVibGljLmMsIHZhY21fdmFycy5oLCBzbm1wdHJhcGQuYywgc25tcF9hcGkuYywKICAgICAgTWFrZWZpbGUuaW4pOiBmaW5hbCBtZXJnZSBwaWVjZXMgb2YgcmVjZW50IHYzIGxpbmUgY2hhbmdlcy4KCm1zbGlmY2FrICA2IEFwciA5OSAyMToyNDoyMgogICAgLSBjaGFuZ2VzIGZvciBBTlNJIGhlYWRlcnM7IFBPU0lYKGluZGV4IHZzIHN0cmNocik7IG1pbm9yIGZpeGVzCgptc2xpZmNhayAgNiBBcHIgOTkgMjI6MTM6NTkKICAgIC0gKHZhY21fdmFycy5jKSAtIHNldCBnbG9iYWwgcHRycyA9IDAuCgptc2xpZmNhayAgNiBBcHIgOTkgMjI6MTQ6NDMKICAgIC0gKHNubXBfdmFycy5jKSBtb3JlIHYycGFydHkgcmV3b3JrIG5lZWRlZAoKbXNsaWZjYWsgIDcgQXByIDk5IDA2OjE3OjI4CiAgICAtICgpIG1vcmUgQU5TSSBoZWFkZXIgZml4dXBzOyB0b3VjaHVwIGZvciBNJCBXaW4zMiBidWlsZAoKaGFyZGFrZXIgIDcgQXByIDk5IDEwOjQyOjEwCiAgICAtIChjb25maWcuaC5pbiwgc25tcF92YXJzLmMsIGVuY29kZV9rZXljaGFuZ2UuYywgc25tcHRyYXBkLmMsCiAgICAgIE1ha2VmaWxlLmluLCBhbGxfZ2VuZXJhbF9sb2NhbC5oLCBrZXl0b29scy5jLCBrZXl0b29scy5oLAogICAgICBsY2RfdGltZS5jLCBtZDUuYywgcmVhZF9jb25maWcuYywgc2NhcGkuYywgc25tcF9hcGkuYywgc25tcHVzbS5jLAogICAgICBzbm1wdjMuYywgdG9vbHMuYywgdG9vbHMuaCk6CiAgICAgIC0gbWlzYyBtZXJnaW5nLCBpbmNsdWRpbmcgZml4ZXMgYW5kIGRlYnVnZ2luZyBzdGF0ZW1lbnQgY2hhbmdlcyB0bwogICAgICAgIG5ld2VyIG1vZGVsLgogICAgICAtIGEgZmV3IC1XYWxsIGZpeGVzLgoKaGFyZGFrZXIgIDcgQXByIDk5IDEwOjQ4OjA3CiAgICAtIChzbm1wX21pYi5jKTogcmVtb3ZlZCB1bm5uZWVkZWQgaGVhZGVyX3NubXAoKS4KCmhhcmRha2VyICA3IEFwciA5OSAxMToyODowMgogICAgLSAodWNkRGVtb1B1YmxpYy5jLCBzeXNPUlRhYmxlLmMsIHZhY21fdmFycy5jLCBzbXV4LmMsIHNubXBFbmdpbmUuYywKICAgICAgdXNtVXNlci5jLCBzbm1wVGFyZ2V0QWRkckVudHJ5LmMsIHNubXBUYXJnZXRQYXJhbXNFbnRyeS5jKToKICAgICAgLSBkZWJ1Z2dpbmcgc3RhdGVtZW50IGNvbnZlcnNpb24KCm1zbGlmY2FrICA3IEFwciA5OSAxMjowMDoyMAogICAgLSAoYWdlbnQvc25tcDJwLmMgYWdlbnQvc25tcF9hZ2VudC5jIGFnZW50L3NubXBfdmFycy5oCiAgICBhZ2VudC92aWV3X3BhcnNlLmMgYWdlbnQvbWliZ3JvdXAvdXRpbF9mdW5jcy5jCiAgICBhZ2VudC9taWJncm91cC9leGFtcGxlcy91Y2REZW1vUHVibGljLmMKICAgIGFnZW50L21pYmdyb3VwL2hvc3QvaHJfZmlsZXN5cy5jCiAgICBhZ2VudC9taWJncm91cC9ob3N0L2hyX3N0b3JhZ2UuYwogICAgYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9zd3J1bi5jIGFnZW50L21pYmdyb3VwL2hvc3QvaHJfc3lzdGVtLmMKICAgIGFnZW50L21pYmdyb3VwL21pYklJL2F0LmMgYWdlbnQvbWliZ3JvdXAvbWliSUkvaWNtcC5jCiAgICBhZ2VudC9taWJncm91cC9taWJJSS9pbnRlcmZhY2VzLmMgYWdlbnQvbWliZ3JvdXAvbWliSUkvaXAuYwogICAgYWdlbnQvbWliZ3JvdXAvbWliSUkvc3lzdGVtX21pYi5jIGFnZW50L21pYmdyb3VwL21pYklJL3RjcC5jCiAgICBhZ2VudC9taWJncm91cC9taWJJSS91ZHAuYyBhZ2VudC9taWJncm91cC9taWJJSS92YWNtX3ZhcnMuYwogICAgYWdlbnQvbWliZ3JvdXAvbWliSUkvdmFyX3JvdXRlLmMgYWdlbnQvbWliZ3JvdXAvbWlzYy9pcGZ3YWNjLmMKICAgIGFnZW50L21pYmdyb3VwL3NubXB2My91c21Vc2VyLmMKICAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL2V4dGVuc2libGUuYwogICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvaHB1eC5jIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Bhc3MuYwogICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvcGFzc19wZXJzaXN0LmMKICAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Byb2MuYwogICAgYWdlbnQvbWliZ3JvdXAvdjJwYXJ0eS9jb250ZXh0X3ZhcnMuYwogICAgYWdlbnQvbWliZ3JvdXAvdjJwYXJ0eS9wYXJ0eV92YXJzLmMKICAgIGFnZW50L21pYmdyb3VwL3YycGFydHkvdmlld192YXJzLmMgYXBwcy9zbm1wZGVsdGEuYwogICAgYXBwcy9zbm1wdGVzdC5jIGFwcHMvc25tcHRyYXBkLmMgYXBwcy9zbm1wbmV0c3RhdC9yb3V0ZS5jCiAgICBhcHBzL3NubXBuZXRzdGF0L3dpbnN0dWIuYyBzbm1wbGliL2FjbF9wYXJzZS5jCiAgICBzbm1wbGliL2NvbnRleHQuaCBzbm1wbGliL2NvbnRleHRfcGFyc2UuYyBzbm1wbGliL3BhcnR5LmgKICAgIHNubXBsaWIvcGFydHlfcGFyc2UuYyBzbm1wbGliL3JlYWRfY29uZmlnLmMgc25tcGxpYi9zbm1wX2FwaS5jCiAgICBzbm1wbGliL3NubXBfYXV0aC5jIHNubXBsaWIvc25tcF9pbXBsLmggc25tcGxpYi92YWNtLmgKICAgIHNubXBsaWIvdmlldy5oKSAgZmdldHMgdXNlIHNpemVvZiBtb3N0bHksIG9pZCBiYXNlIHNpemUgaXMgTUFYX09JRF9MRU4KCm1zbGlmY2FrICA3IEFwciA5OSAxMjoxNzoyMwogICAgLShpcGZ3Y2hhaW5zLmMpIHJlbW92ZSBtdWx0aXBsZSBkZWZpbml0aW9ucyBvZiBNQVRDSF9GQUlMRUQKCm1zbGlmY2FrICA3IEFwciA5OSAxNTowMDozOQogICAgLSh1c21Vc2VyLmMsc3lzdGVtLmMpIHBsdWcgbWVtIGxlYWs7IChzbm1wX2FwaS5jKSBlbmZvcmNlIGFycmF5IGxpbWl0LgoKaGFyZGFrZXIgMTIgQXByIDk5IDIyOjE0OjMxCiAgICAtIChtaWJpbmNsLmgpOiBpbmNsdWRlIHN5cy90aW1lLmguCgpoYXJkYWtlciAxMiBBcHIgOTkgMjI6MTU6MzkKICAgIC0gKGhyX3V0aWxzLmgpOiByZW1vdmUgdmFyaWFibGUgbmFtZXMgZnJvbSBwcm90b3R5cGVzICh3YXMgY2F1c2luZyBwcm9ibGVtcykuCgpoYXJkYWtlciAxMiBBcHIgOTkgMjI6MTY6NDUKICAgIC0gKHRrbWliKTogbWFrZSBkaXNwbGF5ZWQgbWliIG5vZGUgaW5mbyBpbnRvIHR3byBjb2x1bW5zIGluc3RlYWQgb2Ygb25lLgoKaGFyZGFrZXIgMTIgQXByIDk5IDIyOjI1OjA5CiAgICAtIChzbm1wX2FwaS5jKTogbWFrZSBzbm1wX3Zhcmxpc3RfYWRkX3ZhcmlhYmxlIHRvIHBvc3NpYmxlIGNyZWF0ZSBhCiAgICAgIHZhcmxpc3QgYmVmb3JlIGFkZGluZyBzb21ldGhpbmcgdG8gaXQuCgpoYXJkYWtlciAxMyBBcHIgOTkgMTU6MTk6MjAKICAgIC0gKGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBNYWtlZmlsZS5pbik6IFBhdGNoIGZyb20gRGFuaWVsIEhhZ2VydHk6CiAgICAgIC0gZml4IGxpYndyYXAgdG8gb25seSBhZGQgdGhlIGxpYnJhcnkgdG8gdGhlIGFnZW50LgoKaGFyZGFrZXIgMTMgQXByIDk5IDE1OjIwOjAwCiAgICAtIChzeXN0ZW1fbWliLmMpOiBtYWtlIHN5c0Rlc2NyIHJlYWQtb25seS4KCmhhcmRha2VyIDEzIEFwciA5OSAxNTozMjoyMwogICAgLSAocGFzcy5jKTogUGF0Y2ggZnJvbSBKaW0gTWFyOgogICAgICAtIGFkZCBjYXBhYmlsaXR5IGZvciBiaW5hcnkgb2N0ZXQgc3RyaW5ncyBpbiBwYXNzIHNjcmlwdHMuCgpoYXJkYWtlciAxMyBBcHIgOTkgMTU6MzY6MzEKICAgIC0gKFNOTVAtTk9USUZJQ0FUSU9OLU1JQi50eHQsIFNOTVAtUFJPWFktTUlCLnR4dCwKICAgICAgU05NUC1WSUVXLUJBU0VELUFDTS1NSUIudHh0KTogUGF0Y2ggZnJvbSBOaWVscyBCYWdnZXNlbjoKICAgICAgLSBmaXggbW9kdWxlIGxvY2F0aW9ucyBmb3IgYnJva2VuIG1pYnMuCgpoYXJkYWtlciAxMyBBcHIgOTkgMTU6NTQ6NDgKICAgIC0gKGZyZWVic2QuaCwgZnJlZWJzZDIuaCk6IFBhdGNoIGZyb20gTmllbHMgQmFnZ2VzZW46CiAgICAgIC0gZnJlZWJzZCB1dG1wIGNsZWFudXBzLgoKaGFyZGFrZXIgMTMgQXByIDk5IDE1OjU2OjUzCiAgICAtIChzbm1wZC5jKTogUGF0Y2ggZnJvbSBOaWVscyBCYWdnZXNlbjoKICAgICAgLSBsb2cgd2l0aCB0aW1lc3RhbXAgYXQgc2h1dGRvd24uCgpoYXJkYWtlciAxMyBBcHIgOTkgMTU6NTc6MjQKICAgIC0gKHZhY21fdmFycy5jKTogUGF0Y2ggZnJvbSBOaWVscyBCYWdnZXNlbjoKICAgICAgLSBiZXR0ZXIgY2hlY2tpbmcgb2YgLmNvbmYgZmlsZSBwYXJzaW5nIGxpbmUgcmVxdWlyZW1lbnRzLgoKaGFyZGFrZXIgMTMgQXByIDk5IDE1OjU4OjAyCiAgICAtIChzbm1wdHJhbnNsYXRlLmMpOiBQYXRjaCBmcm9tIE5pZWxzIEJhZ2dlc2VuOgogICAgICAtIHN1cHBvcnQgLVAuCgpoYXJkYWtlciAxMyBBcHIgOTkgMTU6NTg6MjcKICAgIC0gKHNubXBfY29uZmlnLjUuZGVmLCBzbm1wdHJhcC4xLCBzbm1wdHJhcGQuY29uZi41LmRlZik6IFBhdGNoIGZyb20KICAgICAgTmllbHMgQmFnZ2VzZW46CiAgICAgIC0gY2xlYW4gdXAgc21hbGwgYnVncy4KCmhhcmRha2VyIDEzIEFwciA5OSAxNjowMDo0OQogICAgLSAocGFyc2UuYywgcGFyc2UuaCk6IFBhdGNoIGZyb20gTmllbHMgQmFnZ2VzZW46CiAgICAgIC0gbmljZXIgcGFyc2VyIG1lc3NhZ2VzIChpbmNsdWRlIGZpbGUgbmFtZXMpLiBDb3JyZWN0IGhlbHAgZm9yIC1QYy4KICAgICAgLSBBZGQgRlJBTUUtUkVMQVktRFRFLU1JQiBhcyByZXBsYWNlbWVudCBmb3IgUkZDLTEzMTUKCmhhcmRha2VyIDEzIEFwciA5OSAxNjowMzoyOQogICAgLSAoc25tcHRyYXBkLmMpOiBQYXRjaCBmcm9tIE5pZWxzIEJhZ2dlc2VuOgogICAgICAtIHNubXB0cmFwZCBvcHRpb24gdG8gaWdub3JlIGF1dGggdHJhcHMsIGFkZCAtUyBvcHRpb24sIGxvZyB0ZXJtaW5hdGlvbi4KCm1zbGlmY2FrIDE0IEFwciA5OSAxNToyOTo1OAogICAgLSAoc25tcHRyYW5zbGF0ZS5jKSBpbml0X3NubXAgdGFrZXMgYXJndW1lbnQ7ICIiIHVzZWQuCgptc2xpZmNhayAxNCBBcHIgOTkgMTU6MzA6MzQKICAgIC0gKHBhcnNlLmMpIEZpbGUgcG9pbnRlciBpbml0aWFsaXplZCB0byAiIiBiZWZvcmUgZmlyc3QgdXNlLgoKaGFyZGFrZXIgMTQgQXByIDk5IDE1OjUyOjM1CiAgICAtIChzbm1wdHJhbnNsYXRlLmMpOiBpbml0X3NubXAoInNubXBhcHAiKS4KCm1zbGlmY2FrIDE0IEFwciA5OSAxNjozMTo1NQogICAgLSAoc25tcF9hZ2VudCxjLCBzbm1wX2FwaS5bY2hdLCBzbm1wX2NsaWVudC5bY2hdKSBmaXggdmFyaWFibGVfbGlzdCB3aXRoIGJ1aWx0LWluIHN0b3JhZ2UKCm1zbGlmY2FrIDE0IEFwciA5OSAxNjo1NjozNwogICAgLSBhcHBzIHRoYXQgdXNlIHNubXBfZml4X3BkdSBtdXN0IGNsZWFuIHVwIHRoZSByZXNwb25zZSBQRFUgIQoKbXNsaWZjYWsgMTYgQXByIDk5IDA3OjMwOjI5CiAgICAtIChJUEZXQUNDLU1JQi50eHQpIGNoYW5nZSBtb2R1bGUgbmFtZSBmcm9tIElQRldBRE0tTUlCIHRvIElQRldBQ0MtTUlCLgoKbXNsaWZjYWsgMTYgQXByIDk5IDA3OjU0OjIyCiAgICAtIChJUEZXQ0hBSU5TLU1JQi50eHQpIGlwZndDaGFpblRhYmxlIHtpcGZ3IDF9IGZpeAoKbXNsaWZjYWsgMTYgQXByIDk5IDA4OjMzOjE2CiAgICAtIChtaWIuYykgIi1tIiBvciBNSUJTIDogY2FuIHNwZWNpZnkgTUlCIG1vZHVsZSBieSBmaWxlIG5hbWUuCgpoYXJkYWtlciAxNiBBcHIgOTkgMjE6MTA6MDYKICAgIC0gKFJFQURNRSk6IEFkZGVkIHYzIHRlYW0gbWVtYmVycy4KCmhhcmRha2VyIDE2IEFwciA5OSAyMToxMTo0OAogICAgLSAoY29uZmlndXJlLmluKTogY2hhbmdlZCBkZWZhdWx0IHN0b3JlIGxvY2F0aW9uIHRvIC92YXIvdWNkLXNubXAKCmhhcmRha2VyIDE2IEFwciA5OSAyMToxNToxNAogICAgLSAoc25tcC5oKTogU05NUEFETUlOTEVOR1RIIGRlZmluaXRpb24uCgpoYXJkYWtlciAxNiBBcHIgOTkgMjE6MTY6MTYKICAgIC0gKHNubXBfYXV0aC5jKTogcmVtb3ZlZCBmaXggbm90ZS4KCmhhcmRha2VyIDE2IEFwciA5OSAyMToyNzowNgogICAgLSAoTkVXUyk6IHVwZGF0ZWQKCmhhcmRha2VyIDE2IEFwciA5OSAyMToyNzo0MQogICAgLSAoc25tcHRyYXBkLjgpOiBtYW4gcGF0Y2ggZnJvbSBOaWVscwoKaGFyZGFrZXIgMTYgQXByIDk5IDIxOjM0OjQ5CiAgICAtICh2ZXJzaW9uLmggYnVnLXJlcG9ydCBzZWRzY3JpcHQuaW4pOiB2ZXJzaW9uIHRhZyAoIDQuMC5wcmUzICkKCm1zbGlmY2FrIDE4IEFwciA5OSAwNjo1NDoyNgogICAgLSAoaXBmd2FjYy5oKSBzdWJkaXIgY2hhbmdlIHBlciBKb2UgUHJ1ZXR0dCA6IDkgLT4gMTAKCmhhcmRha2VyIDE5IEFwciA5OSAyMTowMToxNQogICAgLSAobWliMmMsIG1pYjJjLmNvbmYsIG1pYjJjLnZhcnR5cGVzLmNvbmYpOgogICAgICAtIHJld3JvdGUgbWliMmMgdG8gYmUgbW9yZSBkZXBlbmRlbnQgb24gLmNvbmYgZmlsZXMuICBUaGUgbWFpbiAuY29uZgogICAgICAgIGZpbGUgbm93IGNvbnRhaW5zIHRoZSBjb2RlIGl0c2VsZi4KICAgICAgLSBuZWVkIHRvIHdyaXRlIGEgZm9yZWFjaChtaWJub2RlKSB0eXBlIHBhcnNlciBuZXh0LgoKaGFyZGFrZXIgMTkgQXByIDk5IDIxOjA5OjI3CiAgICAtIChtaWJpbmNsLmgpOiBhZGQgcmVhZF9jb25maWcuaC4KCmhhcmRha2VyIDE5IEFwciA5OSAyMToxMjoxNwogICAgLSAocmVhZF9jb25maWcuYywgcmVhZF9jb25maWcuaCk6CiAgICAgIC0gY3JlYXRlZCBhIG1vcmUgY29udmVuaWVudCByZWFkX2NvbmZpZ19yZWFkX2RhdGEoKSBmdW5jdGlvbiB0bwogICAgICAgIGdlbmVyaWNhbGx5IHJlYWQgYSB0b2tlbiBpbnRvIGEgZ2l2ZW4gdmFyaWFibGUuCiAgICAgIC0gY2xlYW5lZCB1cCBwZXJzaXN0ZW50IHN0b3JhZ2UgcGFyc2luZyByb3V0aW5lcy4KICAgICAgLSB1c2UgcHJldmlvdXNseSBtYWxsb2NlZCBzcGFjZSBpbiBzb21lIHJvdXRpbmVzLCBvciBtYWxsb2MgaXQgZm9yCiAgICAgICAgdGhlbSBpZiB0aGUgc3RvcmFnZSBhcmVhIGlzIE5VTEwuCgpoYXJkYWtlciAxOSBBcHIgOTkgMjE6MTQ6MjgKICAgIC0gKHNubXBfYXBpLmMpOiBEb24ndCBzbm1wX3NldF92YXJfb2JqaWQgaWYgbmFtZSBpcyBOVUxMIGluCiAgICAgIHNubXBfdmFybGlzdF9hZGRfdmFyaWFibGUoKS4KCmhhcmRha2VyIDIwIEFwciA5OSAxMToyODoxNAogICAgLSAobWliMmMsIG1pYjJjLmNvbmYsIG1pYjJjLnZhcnR5cGVzLmNvbmYpOiBtb3JlIHVwZGF0ZXMuCgpoYXJkYWtlciAyMCBBcHIgOTkgMTU6MzE6MzUKICAgIC0gKG1pYjJjLCBtaWIyYy5jb25mLCBtaWIyYy52YXJ0eXBlcy5jb25mKToKICAgICAgLSBjb21wbGV0ZWx5IHJlLWhhY2tlZDoKICAgICAgICAtIGVudGlyZSBjb2RlIGJhc2UgaXMgbm93IHB1dCBpbnRvIHRoZSAuY29uZiBmaWxlcyByYXRoZXIgdGhhbiBpbgogICAgICAgICAgdGhlIG1pYjJjIHByb2dyYW0uICBUaGlzIHNob3VsZCBlbnRpdGxlIG1pYjJjIHRvIGJlIHVzZWQgbW9yZQogICAgICAgICAgZ2VuZXJpY2FsbHksIGFuZCBjb3VsZCBwcm9kdWNlIGRpZmZlcmVudCB0eXBlcyBvZiBjb2RlIHRlbXBsYXRlcwogICAgICAgICAgYmFzZWQgb24gdGhlIC5jb25mIGZpbGUgaXQgaXMgZ2l2ZW4uICBJbiB0aGVvcnksIGl0IHNob3VsZCBiZQogICAgICAgICAgYWJsZSB0byBwcm9kdWNlIEMgY29kZSBmb3IgYSBub24tdWNkLXNubXAgYWdlbnQsIG9yIGV2ZW4gYmV0dGVyLAogICAgICAgICAgYW55IHR5cGUgb2YgY29kZSAobm90IGp1c3QgQykgZm9yIHNvbWV0aGluZyBlbHNlIGJhc2VkIG9uIG1pYgogICAgICAgICAgaW5mb3JtYXRpb24uCiAgICAgICAgLSBUaGUgZG93biBzaWRlLCBpcyB0aGF0IHRoZSBjdXJyZW50IC5jb25mIGZpbGVzIGFyZSBub3cgYW1iaWd1b3VzCiAgICAgICAgICBhZ2FpbiBhbmQgZGlmZmljdWx0IHRvIHVuZGVyc3RhbmQgd2l0aG91dCBiZWluZywgd2VsbCwgbWUuICBUaGUKICAgICAgICAgIHVwIHNpZGUgaXMgdGhhdCBJJ20gc3VyZSBEYXZlIFNoaWVsZCB3aWxsIGdvIHRocm91Z2ggYW5kIGNsZWFuCiAgICAgICAgICBpdCB1cCBmb3IgbWUgbGlrZSBoZSBkaWQgbGFzdCB0aW1lLiAgSGEgaGEuICBJIHdvbmRlciBpZiBoZSdsbAogICAgICAgICAgcmVhZCB0aGlzPyAoSWYgc28sIHNlZSBtZSBmaXJzdCkuCgpoYXJkYWtlciAyMCBBcHIgOTkgMTY6MDQ6MTcKICAgIC0gKG1pYjJjLCBtaWIyYy5jb25mKTogdmFyaWFibGUgbmFtZSBjb252ZXJzaW9uczoKICAgICAgLSB2YXJpYWJsZVR5cGVzIC0+IHZhcmlhYmxlcwogICAgICAtIGNuYW1lIC0+IE5BTUUKCmhhcmRha2VyIDIwIEFwciA5OSAxNjoxMDo0NAogICAgLSAobWliMmMsIG1pYjJjLmNvbmYpOiBhIGxpdHRsZSBtb3JlIGNsZWFuIHVwLgoKaGFyZGFrZXIgMjAgQXByIDk5IDIxOjM4OjQyCiAgICAtIChtaWIyYy5jb25mKTogY2xlYW4gdXAgc2tpcGlmIHJlZ2V4cHMgYSBiaXQuCgpoYXJkYWtlciAyMiBBcHIgOTkgMDc6NTQ6NDQKICAgIC0gKHJlYWRfY29uZmlnLmMsIHJlYWRfY29uZmlnLmgpOiBjcmVhdGVkICpyZWFkX2NvbmZpZ19zdG9yZV9kYXRhKCk7CgpoYXJkYWtlciAyMiBBcHIgOTkgMDc6NTY6MDMKICAgIC0gKG1pYjJjLCBtaWIyYy5jb25mKTogYWxsb3cgTm9BY2Nlc3MgdG8gYmUgcHJvY2Vzc2VkLCBhbmQgdXNlIHNraXBpZjoKICAgICAgZGlyZWN0aXZlcyB3aGVyZSBuZWVkZWQgYmVjYXVzZSBvZiBpdC4KCmhhcmRha2VyIDIyIEFwciA5OSAxMDo1MTozMAogICAgLSAoc25tcF9jbGllbnQuYywgc25tcF9hcGkuYywgc25tcF9hcGkuaCwga2V5dG9vbHMuYyk6IEFub3RoZXIgdjMgYnJhbmNoIHVwZGF0ZS4KCm1zbGlmY2FrIDI2IEFwciA5OSAwOToyMTowNgogICAgLSAoc25tcGxpYi5jKSAtIHVzZSByZXF1ZXN0IGNhbGxiYWNrJ3MgZGF0YSBpZiByZXF1ZXN0IHNwZWNpZmllcyBhIGNhbGxiYWNrLgoKbmJhIDI2IEFwciA5OSAxMToyMToxMAogICAgCiAgICAocGFyc2UuaCkgU2lsbHkgc3BlbGluZyBtaXN0ZWFrIChBQ0NFU1NfQ1JBRVRFKQoKbmJhIDI2IEFwciA5OSAxMTo0ODo1NwogICAgCiAgICAKICAgIC0gc25tcGxpYi9wYXJzZS5oLCBzbm1wbGliL3BhcnNlLmM6IG5ldyBtaWIgcHJpbnRlcjogbWliX3ByaW50X3RyZWUKICAgICAgaW5zcGlyZWQgYnkgYSByZWZlcmVuY2UgdG8gc25teCBpbiBjb21wLnByb3RvY29scy5zbm1wCiAgICAtIGFwcHMvc25tcHRyYW5zbGF0ZTogbGV0IHRoZSAtcCBvcHRpb24gY2FsbCB0aGlzIG5ldyBwcmludGVyCiAgICAtIHNubXBsaWIvc25tcF9hcGkuYzogc29tZSBsZWZ0IG92ZXIgX19QIG1hY3JvcwoKbmJhIDI2IEFwciA5OSAxMjowMzo0NwogICAgCiAgICAoaWYuYykgbWFrZSB0aGUgd2lkdGggb2Ygc25tcG5ldCAtaSAoYW5kIC1vKSBhZGFwdCB0byB0aGUgbGVuZ3RoIG9mIHJldHVybmVkCiAgICAJc3RyaW5ncwoKbmJhIDI2IEFwciA5OSAxMjowOTozNQogICAgCiAgICAKICAgIGFwcHMvKi5jOiB1c2Ugc25tcF9wZXJyb3IgdG8gcmVwb3J0IGVycm9ycyBmcm9tIHJlYWRfb2JqaWQgYW5kIGZyaWVuZHMKICAgIGFwcHMvc25tcHRyYXBkLmM6IGZpeCBhIGJ1cyBlcnJvciB3aGVuIHVzaW5nIC1TIGFuZCByZWNlaXZpbmcgYW4KICAgIAllbnRlcnByaXNlIHNwZWNpZmljIHRyYXAuCgpuYmEgMjYgQXByIDk5IDEyOjEzOjUwCiAgICAKICAgICovKjogcmVwbGFjZSBob3JyaWJsZSAoY2hhciAqKSJzdHJpbmciIHdpdGggY29uc3Qgc3BlY2lmaWVycyBpbiByZWxldmFudAogICAgCWZ1bmN0aW9ucy4KCm1zbGlmY2FrIDI2IEFwciA5OSAxMjozNzowOQogICAgLSAoc25tcF9hcGkuYykgLSBmaXggb3RoZXIgdXNlIG9mIHJlcXVlc3QncyBjYWxsYmFjayBkYXRhCgptc2xpZmNhayAyNyBBcHIgOTkgMDk6NTE6MzUKICAgIC0gKGludGVyZmFjZXMuYykgYWRkIGlmX3R5cGVfZnJvbV9uYW1lIHRvIGNvbnZlcnQgaW50ZXJmYWNlIG5hbWUgdG8gdHlwZS4KCmhhcmRha2VyIDI5IEFwciA5OSAwNzozMjozOQogICAgLSAoTWFrZWZpbGUuaW4sIGNhbGxiYWNrLmMsIGNhbGxiYWNrLmgpOiBjYWxsYmFjayBBUEkuCgpoYXJkYWtlciAyOSBBcHIgOTkgMDc6Mzk6NDUKICAgIC0gKGFnZW50X3JlYWRfY29uZmlnLmMsIHNubXBkLmMsIHNubXB0cmFwZC5jLCBzbm1wX2FwaS5jLCBzbm1wdXNtLmMsCiAgICAgIHNubXB1c20uaCwgc25tcHYzLmMsIHNubXB2My5oKToKICAgICAgLSB1c2UgdGhlIGNhbGxiYWNrIG1lY2hhbmlzbSBmb3IgcG9zdC1jb25maWcgc3R1ZmYuCgpoYXJkYWtlciAgMyBNYXkgOTkgMDc6MDc6MTUKICAgIC0gKGFnZW50X3JlYWRfY29uZmlnLmMsIHVzbVVzZXIuYywgdXNtVXNlci5oLCBzbm1wVGFyZ2V0QWRkckVudHJ5LmMsCiAgICAgIHNubXBUYXJnZXRBZGRyRW50cnkuaCwgc25tcFRhcmdldFBhcmFtc0VudHJ5LmMsCiAgICAgIHNubXBUYXJnZXRQYXJhbXNFbnRyeS5oLCBzbm1wdHJhcGQuYywgY2FsbGJhY2suYywgY2FsbGJhY2suaCwKICAgICAgc2NhcGkuYywgc2NhcGkuaCwgc25tcF9hcGkuYywgc25tcHYzLmMsIHNubXB2My5oKToKICAgICAgLSBzaHV0ZG93biBhbmQgc3RvcmUgY2FsbGJhY2sgdXNhZ2UuCgpoYXJkYWtlciAgMyBNYXkgOTkgMDc6MTM6MzEKICAgIC0gKHNubXBkLmMpOiBmaXggLUEgZmxhZywgd2hpY2ggZ290IGJyb2tlbiBkdXJpbmcgc29tZW9uZXMgY2hhbmdlcy4KCmhhcmRha2VyICAzIE1heSA5OSAxMjo1ODoxOQogICAgLSAoTWFrZWZpbGUuaW4sIGFnZW50X3JlYWRfY29uZmlnLmMsIE1ha2VmaWxlLmluLCBoZWFkZXJfY29tcGxleC5jLAogICAgICBNYWtlZmlsZS5pbiwgZW5jb2RlX2tleWNoYW5nZS5jLCBNYWtlZmlsZS5pbiwgTWFrZWZpbGUuaW4sCiAgICAgIGFsbF9nZW5lcmFsX2xvY2FsLmgsIGFsbF9zeXN0ZW0uaCwga2V5dG9vbHMuYywgbGNkX3RpbWUuYywgc2NhcGkuYywKICAgICAgc25tcF9hdXRoLmMsIHNubXB1c20uYywgdG9vbHMuYywgdG9vbHMuaCwgTWFrZWZpbGUuaW4sIFQuYywKICAgICAgZXRpbWV0ZXN0LmMsIGtleW1hbmFnZXRlc3QuYywgbWlzY3Rlc3QuYywgc2NhcGl0ZXN0LmMpOgogICAgICAtIG51a2VkIGFsbF9nZW5lcmFsX2xvY2FsLmggYW5kIGFsbF9zeXN0ZW0uaC4KICAgICAgLSBtYWtlZmlsZWluZGVwZW5kIGFzIHdlbGwuCgpuYmEgIDMgTWF5IDk5IDE1OjQwOjExCiAgICAoKi5bY2hdKToJcGF0Y2hlcyB0byB0eXBlcyB0byB3aXBlIHdhcm5pbmdzIGZyb20gY29tcGlsZXJzCiAgICAJd2l0aCBtb3JlIHN0cmljdCBub2lzZSBsZXZlbHMuIChhbHNvIGdvb2Qgd2hlbiBjb21waWxpbmcKICAgIAl3aXRoIGdjYyAtV2FsbCAtcGVkYW50aWMgLVd3cml0ZS1zdHJpbmdzIC1XY2FzdC1xdWFsKQoKbmJhICA0IE1heSA5OSAwMDo0Nzo0NAogICAgKG1pYi5jKToJRml4IHByb2JsZW0gKGNvcmUgZHVtcCkgd2l0aCBNSUJGSUxFUyBlbnZpcm9ubWVudCB2YXJpYWJsZS4KCm5iYSAgNCBNYXkgOTkgMDA6NTE6MTYKICAgIChtYW55KToJcmVtb3ZlIGNvbnN0IHNwZWMgZnJvbSBGaW5kVmFyTWV0aG9kLiBUaGF0IHdhcyB3cm9uZwoKaGFyZGFrZXIgIDQgTWF5IDk5IDExOjA4OjU1CiAgICAtIChjb25maWd1cmUsIGNvbmZpZ3VyZS5pbik6IEFkZGVkIC0tZW5hYmxlLWRldmVsb3BlciBmbGFnLgoKbXNsaWZjYWsgIDYgTWF5IDk5IDA5OjIwOjMwCiAgICAtICh1Y2Qtc25tcC92bXN0YXQuYykgLSBjb25kaXRpb25hbGx5IGluY2x1ZGUgbGltaXRzLmggcGVyIEVkdWFyZCBLb3Vja3kuCgpuYmEgMTAgTWF5IDk5IDE0OjQ3OjIyCiAgICBGaXhpbmcgc29tZSBtb3JlIHByb3RvdHlwZXMuIFBvaW50ZWQgb3V0IGJ5IE1hcmtrdSBMYXVra2FuZW4uCgpuYmEgMTAgTWF5IDk5IDE0OjQ5OjQ5CiAgICBzbm1wbGliL3NubXBfYXBpLmM6IE1peC11cCBvZiBWMV9JTl9WMi9WMl9JTl9WMSBlcnJvciBjb2RlIHdoZW4gR0VUQlVMSwogICAgCWluc2lkZSBWMSBzZXNzaW9uLgoKaGFyZGFrZXIgMTEgTWF5IDk5IDE0OjAyOjQ4CiAgICAtICh1dGlsX2Z1bmNzLmMpOiByZWFkIHJldHVybnMgc3NpemVfdCBub3Qgc2l6ZV90LgoKaGFyZGFrZXIgMTEgTWF5IDk5IDE0OjAzOjI1CiAgICAtIChtZW1vcnkuaCk6IHJlbW92ZSBleHRlcm4uCgpoYXJkYWtlciAxMSBNYXkgOTkgMTQ6MTE6NDAKICAgIC0gKGhwdXguYywgaHB1eC5oKTogaW50IC0+IHNpemVfdCBjb252ZXJzaW9ucy4KCm1zbGlmY2FrIDEyIE1heSA5OSAxMDo1MzoyMwogICAgLSAoc25tcF9hcGkuYyBzbm1wX2NsaWVudC5jKSBjYWxsIHNubXBfc3luY2hfcmVzZXQgZnJvbSBzbm1wX3Nlc3NfY2xvc2UKCm1zbGlmY2FrIDEyIE1heSA5OSAxMToyMjoxNgogICAgLShwYXJzZS5jIHBhcnR5X3BhcnNlLmMgcmVhZF9jb25maWcuYykgbm8gZXhpdCgpIGZyb20gbGlicmFyeTsgcmV0dXJuIGVycm9yCgpkYXZlcyAxMyBNYXkgOTkgMDM6NTI6MTkKICAgIC0gKGlwLmMpOiBQcm9wZXJseSByZWdpc3RlciBJUCBtb2R1bGUgZ3JvdXAgb24gRnJlZS1CU0Qgc3lzdGVtcwogICAgICAgICAgICAgICh0aGFua3MgdG8gTWl0Y2hlbGwgVGFzbWFuKQoKaGFyZGFrZXIgMTMgTWF5IDk5IDA5OjA5OjE4CiAgICAtICh2YWNtX3ZhcnMuYyk6IFNldCBwb2ludGVycyB0byBOVUxMIGFmdGVyIGZyZWVpbmcgdGhlbS4KCm1zbGlmY2FrIDE0IE1heSA5OSAwNjo1NDo1MQogICAgLSAoYWdlbnQvbWliZ3JvdXAvZHVtbXkvZHVtbXkuYyBhZ2VudC9taWJncm91cC9leGFtcGxlcy9leGFtcGxlLmMKICAgICBhZ2VudC9taWJncm91cC9leGFtcGxlcy9leGFtcGxlLmgKICAgICBhZ2VudC9taWJncm91cC9leGFtcGxlcy93b21iYXQuYyBhZ2VudC9taWJncm91cC9taXNjL2lwZndhY2MuYwogICAgIGFnZW50L21pYmdyb3VwL3NtdXgvc211eC5jCiAgICAgYWdlbnQvbWliZ3JvdXAvc25tcHYzL3NubXBNUERTdGF0cy5jCiAgICAgYWdlbnQvbWliZ3JvdXAvc25tcHYzL3VzbVN0YXRzLmMKICAgICBhZ2VudC9taWJncm91cC9zbm1wdjMvdXNtVXNlci5jIHNubXBsaWIvc25tcF9hdXRoLmMpIG1vcmUgc2l6ZV90IGZpeGVzCgptc2xpZmNhayAxNCBNYXkgOTkgMDk6NDc6MTAKICAgIC0gKGFnZW50L21pYmdyb3VwL2V4YW1wbGVzL3dvbWJhdC5oIGFnZW50L21pYmdyb3VwL2hvc3QvaHJfZGlzay5jCiAgICAgYWdlbnQvbWliZ3JvdXAvbWliSUkvaW50ZXJmYWNlcy5jCiAgICAgYWdlbnQvbWliZ3JvdXAvbWliSUkvdmFyX3JvdXRlLmMKICAgICBhZ2VudC9taWJncm91cC9zbm1wdjMvdXNtVXNlci5jIGFwcHMvZW5jb2RlX2tleWNoYW5nZS5jCiAgICAgc25tcGxpYi9wYXJzZS5jKSBtb3JlIEFOU0ktQyB0b3VjaHVwcwoKbXNsaWZjYWsgMTQgTWF5IDk5IDEzOjU5OjM3CiAgICAtKGFnZW50L21pYmdyb3VwL21pYklJL2ludGVyZmFjZXMuYyBzbm1wbGliL3NubXB1c20uYykgZml4ZXMgdG8gYnVpbGQgSFAgJiBBSVgKCmRhdmVzIDE3IE1heSA5OSAwMzoyMDo1MwogICAgLSAoc25tcF9wYXJzZV9hcmdzLmMpOiBJbml0aWFsaXNlIHNlc3Npb24gdXNpbmcgbGlicmFyeSByb3V0aW5lCgpkYXZlcyAxNyBNYXkgOTkgMDQ6MzQ6NTUKICAgIC0gKHNubXBsaWIvc25tcF9hcGkuaCBzbm1wbGliL3NubXBfYXBpLmMgc25tcGxpYi9zbm1wX2NsaWVudC5jCiAgICAgICBhZ2VudC9zbm1wZC5jIGFnZW50L21pYmdyb3VwL21pYklJL3ZhY21fdmFycy5jCiAgICAgICBhZ2VudC9taWJncm91cC92MnBhcnR5L2FsYXJtLmMgYWdlbnQvbWliZ3JvdXAvdjJwYXJ0eS9ldmVudC5jCiAgICAgICBhcHBzL3NubXBzdGF0dXMuYyBhcHBzL3NubXB0ZXN0LmMgYXBwcy9zbm1wdHJhcC5jIGFwcHMvc25tcHRyYXBkLmMpOgogICAgCiAgICAgIC0gVXNlIHRoZSBnZW5lcmljIHNvY2tldCBhZGRyZXNzZXMgJ3N0cnVjdCBzb2NrYWRkcicsCiAgICAgICAgcmF0aGVyIHRoYW4gdGhlIElQLXNwZWNpZmljICdzdHJ1Y3Qgc29ja2FkZHJfaW4nCgpkYXZlcyAxNyBNYXkgOTkgMDQ6Mzg6MDAKICAgIC0gKHNubXBsaWIvc25tcF9hcGkuaCBzbm1wbGliL3NubXBfYXBpLmMgc25tcGxpYi9zbm1wX2NsaWVudC5jCiAgICAgICBhZ2VudC9zbm1wZC5jIGFnZW50L21pYmdyb3VwL21pYklJL3ZhY21fdmFycy5jCiAgICAgICBhZ2VudC9taWJncm91cC92MnBhcnR5L2FsYXJtLmMgYWdlbnQvbWliZ3JvdXAvdjJwYXJ0eS9ldmVudC5jCiAgICAgICBhcHBzL3NubXBzdGF0dXMuYyBhcHBzL3NubXB0ZXN0LmMgYXBwcy9zbm1wdHJhcC5jIGFwcHMvc25tcHRyYXBkLmMpOgogICAgCiAgICAgIC0gVXNlIHRoZSBnZW5lcmljIHNvY2tldCBhZGRyZXNzICdzdHJ1Y3Qgc29ja2FkZHInLAogICAgICAgIHJhdGhlciB0aGFuIHRoZSBJUC1zcGVjaWZpYyAnc3RydWN0IHNvY2thZGRyX2luJwoKZGF2ZXMgMTcgTWF5IDk5IDA3OjE4OjAyCiAgICAtIChzbm1wbGliL3NubXBfYXBpLmMgc25tcGxpYi9zbm1wX2FwaS5oIGFnZW50L3NubXBkLmMKICAgICAgIGFwcHMvc25tcHRyYXAuYyBhcHBzL3NubXB0cmFwZC5jKToKICAgIAogICAgICAtIFVzZSBhIHNpbmdsZSBhZGRyZXNzIGZpZWxkIHdpdGhpbiB0aGUgUERVIHN0cnVjdHVyZQogICAgICAgICAgICAgICAgICAgKG9ic29sZXRpbmcgJ2FnZW50X2FkZHInKQoKZGF2ZXMgMTggTWF5IDk5IDA2OjI2OjE2CiAgICAtIChzbm1wX2FwaS5jIHNubXBfYXBpLmgpOiBNb3JlIGdlbmVyYWwgaGFuZGxpbmcgb2YgUERVIGZsYWdzCgptc2xpZmNhayAxOCBNYXkgOTkgMDk6MDE6NDYKICAgIC0gKHh4L01ha2VmaWxlLmluKSByZW1vdmUgcmVmZXJlbmNlcyB0byBhcyB5ZXQgbWlzc2luZyBkaXNtYW4gZmlsZXMuCgpkYXZlcyAxOCBNYXkgOTkgMDk6MjM6NTAKICAgIC0gKGNvbmZpZ3VyZS5pbiBzbm1wbGliL2NvbnRleHRfcGFyc2UuYyBzbm1wbGliL3JlYWRfY29uZmlnLmMKICAgICAgIHNubXBsaWIvc25tcF9hcGkuYyBzbm1wbGliL3NubXB2My5jIHNubXBsaWIvc3lzdGVtLmMKICAgICAgIGFwcHMvc25tcF9wYXJzZV9hcmdzLmMgYXBwcy9zbm1wYnVsa3dhbGsuYyBhcHBzL3NubXBkZWx0YS5jCiAgICAgICBhcHBzL3NubXBnZXQuYyBhcHBzL3NubXBnZXRuZXh0LmMgYXBwcy9zbm1wc2V0LmMKICAgICAgIGFwcHMvc25tcHN0YXR1cy5jIGFwcHMvc25tcHRhYmxlLmMgYXBwcy9zbm1wdGVzdC5jCiAgICAgICBhcHBzL3NubXB0cmFwLmMgYXBwcy9zbm1wdXNtLmMgYXBwcy9zbm1wd2Fsay5jCiAgICAgICBhcHBzL3NubXBuZXRzdGF0L2lmLmMgYXBwcy9zbm1wbmV0c3RhdC9pbmV0LmMKICAgICAgIGFwcHMvc25tcG5ldHN0YXQvbWFpbi5jIGFwcHMvc25tcG5ldHN0YXQvcm91dGUuYwogICAgICAgYXBwcy9zbm1wbmV0c3RhdC93aW5zdHViLmMpOgogICAgICAgLSAgQ2xlYW4gdXAgY29uZGl0aW9uYWxzIHByb3RlY3RpbmcgaW5jbHVkZSBmaWxlcwogICAgICAgICAgICAoICNpZiBIQVZFX1dJTlNPQ0tfSCAvICNlbHNlIC8gI2VuZGlmICkKCmRhdmVzIDE5IE1heSA5OSAwMjozMzowNwogICAgLSAoY29uZmlnLmguaW4pOiBBZGRpdGlvbmFsIGluY2x1ZGUgcHJvdGVjdGlvbiBlbnRyaWVzCgpkYXZlcyAxOSBNYXkgOTkgMDU6MTE6MzcKICAgIC0gKHNubXBfYXBpLmMpOiBNb3JlIGdlbmVyYWxpc2VkIGhhbmRsaW5nIG9mIHNvY2tldCBhZGRyZXNzZXMKCm1zbGlmY2FrIDE5IE1heSA5OSAxODowMjo1NQogICAgLShtaWJJSS92YXJfcm91dGUuYykgLSBmaXggTGludXggUm91dGVNYXNrIGMvbyAiTmFuY3kiIG5hbUBjcy5jbXUuZWR1Cgptc2xpZmNhayAxOSBNYXkgOTkgMTg6NTA6MTIKICAgIC0gKGhvc3RfcmVzLmgpIGZpeCBIQVZFX05FVF9JRl9WQVJfSCBkZWZpbmUgKHdhcyBIQVZFX05FVF9JTl9WQVJfSCkKCmRhdmVzIDIwIE1heSA5OSAwMzo0NjoyNAogICAgLSAoc25tcF9hcGkuaCk6IFRlbXBvcmFyeSBmaXggdG8gc29ja2V0IGFkZHJlc3MgcHJvYmxlbXMKCm1zbGlmY2FrIDIxIE1heSA5OSAwNToyNDoyMwogICAgLShyZWFkX2NvbmZpZy5jKSBjYXN0IGZpeCBwZXIgTWFya2t1IExhdWtrYW5lbgoKZGF2ZXMgMjEgTWF5IDk5IDA1OjU0OjIyCiAgICAtIChzbm1wX2FwaS5jIHNubXBfYXBpLmgpOgogICAgICAtICBOZXcgQVBJIGNhbGwgdG8gY2xvc2UgZG93biBhbGwgb3BlbiBzZXNzaW9ucwogICAgICAgICAoYWxzbyBjYWxsZWQgb24gYXBwbGljYXRpb24gc2h1dGRvd24pCgpoYXJkYWtlciAyMSBNYXkgOTkgMTE6MTA6NDQKICAgIC0gKG1pYjJjLmNvbmYsIG1pYjJjLnN0b3JhZ2UuY29uZik6CiAgICAgIC0gY29udmVydCB0byBzaXplX3Qgc3RvcmFnZXMuCiAgICAgIC0gbWlzYyBldmFsIGZpeGVzLgogICAgICAtIG1vcmUgY2xlYW51cCBvZiB0aGUgc3RvcmFnZSBkZWYuCgptc2xpZmNhayAyMSBNYXkgOTkgMTU6Mjk6NDYKICAgIC0gbGlicmFyeSBjaGFuZ2VzIHRvIGJ1aWxkIG9uIFdpbjMyLgoKbXNsaWZjYWsgMjQgTWF5IDk5IDA1OjM2OjEzCiAgICAtY29uZmlndXJlIC0gc2F2ZSBvbmUgd2hpY2ggbG9va3MgZm9yIG5ldGRiL3NvY2tldCBoZWFkZXJzCgpoYXJkYWtlciAyNiBNYXkgOTkgMTE6MTk6MDMKICAgIC0gKGlwZndhY2MuaCk6IHByb3Blcmx5IGxvY2F0ZSB0aGUgbWliLgoKaGFyZGFrZXIgMjYgTWF5IDk5IDE1OjE0OjU1CiAgICAtIChocl9zd2luc3QuYyk6IG1ha2Ugc29mdHdhcmUgYXBwbGljYXRpb24gdHlwZSB1bmtub3duIGluc3RlYWQgb2YgYXBwLgoKaGFyZGFrZXIgMjYgTWF5IDk5IDE1OjE4OjA0CiAgICAtIChJUEZXQUNDLU1JQi50eHQpOiBjaGFuZ2UgdG8gY291bnRlcnMuCgpoYXJkYWtlciAyNiBNYXkgOTkgMTU6MjA6MzIKICAgIC0gKGlwZndhY2MuaCk6IG1ha2UgaW50byBjb3VudGVycy4KCmhhcmRha2VyIDI2IE1heSA5OSAxNTo1NjowMwogICAgLSAoYWNjb25maWcuaCwgY29uZmlnLmguaW4pOiBpbmNyZWFzZSBNQVhSRUFEQ09VTlQuCgpoYXJkYWtlciAyNiBNYXkgOTkgMTc6NDA6MjgKICAgIC0gKElQRldBQ0MtTUlCLnR4dCk6IGFkZGVkIFNFUVVFTkNFIE9GLgoKbXNsaWZjYWsgMjcgTWF5IDk5IDA1OjE2OjI1CiAgICAtKGVuY29kZV9rZXljaGFuZ2UsIHJlYWRfY29uZmlnLCBzbm1wdXNtKSBhQ0MgZml4ZXMgYnkgUEtZIChNYXJra3UgTGF1a2thbmVuKQoKaGFyZGFrZXIgMjcgTWF5IDk5IDE0OjMwOjAzCiAgICAtIChzbm1wdHJhcGRfaGFuZGxlcnMuYyk6IGltcGxlbWVudCB0aGUgZGVmYXVsdCB0cmFwIGhhbmRsZXIuCgpoYXJkYWtlciAyNyBNYXkgOTkgMTQ6MzA6MTUKICAgIC0gKHNubXB0cmFwZC5jKTogbmVlZCBhbiBpbml0X21pYigpLgoKaGFyZGFrZXIgMjcgTWF5IDk5IDE0OjM3OjA2CiAgICAtIChzbm1wdHJhcGQuY29uZi41LmRlZik6IGRvY3VtZW50IGRlZmF1bHQgb2lkIGtleXdvcmQuCgpoYXJkYWtlciAyNyBNYXkgOTkgMTQ6Mzc6MzIKICAgIC0gKHNubXB0cmFwZC5jKTogZG9jdW1lbnQgZGVmYXVsdCBvaWQga2V5d29yZCBpbiBoZWxwIGxpbmUuCgpkYXZlcyAyOCBNYXkgOTkgMDc6MDI6MDEKICAgIC0gKGFnZW50L01ha2VmaWxlLmluIGFnZW50L21pYmdyb3VwL01ha2VmaWxlLmluKTogZml4IHByb2JsZW0gd2l0aCBudWxsIG1hY3JvCgpkYXZlcyAyOCBNYXkgOTkgMDg6MTQ6MDUKICAgIC0gKHNubXBsaWIvc25tcF9hcGkuYyk6IHNhdmUgbG9jYWwgc29ja2V0IGFkZHJlc3MgaW4gaW50ZXJuYWwgc2Vzc2lvbiBzdHJ1Y3R1cmUKCmRhdmVzIDI4IE1heSA5OSAwODo1NzoxOQogICAgLSAoc25tcGxpYi9zbm1wX2FwaS5jKTogVW5peCBkb21haW4gKGRhdGFncmFtKSBzb2NrZXQgc3VwcG9ydAoKZGF2ZXMgMjggTWF5IDk5IDA5OjEyOjIwCiAgICAtIChzbm1wbGliL3NubXBfYXBpLmMpOiBTZXBhcmF0ZSBvdXQgY29weWluZyBhIHNlc3Npb24gYW5kIG9wZW5pbmcgYSBuZXcgb25lCgptc2xpZmNhayAyOCBNYXkgOTkgMDk6MjQ6NTYKICAgIC0oc25tcF9hcGkuYykgLWNhdGNoIG9uZSBtb3JlIGVycm9yIGNsb3NlIGZyb20gc25tcF9zZXNzX2NvcHkKCmhhcmRha2VyIDI4IE1heSA5OSAxNjoxNzoxMwogICAgLSAobWliLmMsIHBhcnNlLmMsIHBhcnNlLmgpOiBzYXZlIGFuZCB1c2UgaW5kZXggY2xhdXNlcy4KCmhhcmRha2VyIDI4IE1heSA5OSAxNjo0NDo0MgogICAgLSAoTWFrZWZpbGUuaW4sIGRlZmF1bHRfc3RvcmUuYywgZGVmYXVsdF9zdG9yZS5oKToKICAgICAgLSBjcmVhdGVkIGdlbmVyaWMgZGVmYXVsdCB2YWx1ZSBzdG9yYWdlIHNwYWNlIGFuZCBwYXJzZXJzIHRvIHJlZHVjZQogICAgICAgIHRoZSBudW1iZXIgb2YgZnVuY3Rpb25zL2V0YyBjcmVhdGVkIGZvciB2YWx1ZXMgd2hpY2ggY29uZmlndXJlIHRoZQogICAgICAgIGxpYnJhcnkuCgpkYXZlcyAgMSBKdW4gOTkgMDI6MTc6MjcKICAgIC0gKHNubXBsaWIvc25tcF9hcGkuYyk6IEdhcmJhZ2UgY29sbGVjdGlvbiBmb3IgVHJhZGl0aW9uYWwgU0FQSSBzZXNzaW9ucwoKZGF2ZXMgIDEgSnVuIDk5IDAyOjMyOjEzCiAgICAtIChzbm1wbGliL3NubXBfYXBpLmMpOiBHZW5lcmFsaXNlIGhhbmRsaW5nIG9mIGFkZHJlc3NlcyAody5yLnQgc2VudG8vcmVjdmZyb20pCgpkYXZlcyAgMSBKdW4gOTkgMDc6MzA6NDIKICAgIC0gKHNubXBsaWIvc25tcF9hcGkuYyBzbm1wbGliL3NubXBfYXBpLmgpOiBTdXBwb3J0IGZvciBzdHJlYW0tYmFzZWQgc29ja2V0cwoKaGFyZGFrZXIgIDEgSnVuIDk5IDE3OjIxOjUzCiAgICAtIChNYWtlZmlsZS5pbiwgc25tcF9hbGFybS5jLCBzbm1wX2FsYXJtLmgsIHNubXBfYXBpLmMpOgogICAgICAtIGltcGxlbWVudGVkIGEgZ2VuZXJpYyBhbGFybSBoYW5kbGVyIHRvIHJlZ2lzdGVyIGFsYXJtIGZ1bmN0aW9ucyB0bwogICAgICAgIGJlIGNhbGxlZCBiYWNrIGFmdGVyIFggcGVyaW9kIG9mIHRpbWUgYW5kIGl0IGhhbmRsZXMgZmlndXJpbmcgb3V0CiAgICAgICAgd2hpY2ggaXMgbmV4dCBhbmQgY2FsbGluZyBhbGFybSgpIGFuZCBzaWduYWwoKSBhcHByb3ByaWF0ZWx5LgoKbXNsaWZjYWsgIDQgSnVuIDk5IDA5OjUxOjEzCiAgICAtKGhyX2ZpbGVzeXMuYyxpbnRlcmZhY2VzLmMsdGNwLmMsdWRwLmMsZnJlZWJzZDMuaCkgZml4IEZyZWVCU0QzLjEgaW5jbCBLZW4gS2V5J3MgdGNwL3VkcCBwYXRjaGVzCgptc2xpZmNhayAgNyBKdW4gOTkgMDc6NDQ6MDYKICAgIC0oaW50ZXJmYWNlcy5jLCB0Y3AuYywgdWRwLmMsIGlwLmMpIGNsb25lIGZpeGVzIGZyb20gMy42IGxpbmUgKEZyZWVCU0QzLjEpCgptc2xpZmNhayAgNyBKdW4gOTkgMTM6MDQ6MjEKICAgIC0oaWYuYykgY2hlY2sgZm9yIHZhbGlkIHBvaW50ZXIgYmVmb3JlIGRlLXJlZmVyZW5jaW5nLgoKbXNsaWZjYWsgMTEgTWF5IDk5IDE0OjM5OjU4CiAgICAtIChhZ2VudC9hZ2VudF9yZWFkX2NvbmZpZy5jIGFnZW50L3NubXBfdmFycy5jIGFnZW50L3NubXBkLmMKICAgICAgIGFnZW50L21pYmdyb3VwL21pYklJL2ludGVyZmFjZXMuYyBhZ2VudC9taWJncm91cC9taWJJSS9pcC5jCiAgICAgICBhZ2VudC9taWJncm91cC9taWJJSS92YWNtX3ZhcnMuYwogICAgICAgYWdlbnQvbWliZ3JvdXAvbWliSUkvdmFjbV92YXJzLmggYXBwcy9zbm1wdHJhbnNsYXRlLmMKICAgICAgIGFwcHMvc25tcHRyYXBkLmMgbG9jYWwvbWliMmMgbG9jYWwvdGttaWIgbWFuL3NubXBfY29uZmlnLjUuZGVmCiAgICAgICBtYW4vc25tcGQuMS5kZWYgbWFuL3NubXB0cmFwLjEgbWFuL3NubXB0cmFwZC44CiAgICAgICBtYW4vc25tcHRyYXBkLmNvbmYuNS5kZWYgbWlicy9TTk1QLU5PVElGSUNBVElPTi1NSUIudHh0CiAgICAgICBtaWJzL1NOTVAtUFJPWFktTUlCLnR4dCBtaWJzL1NOTVAtVEFSR0VULU1JQi50eHQKICAgICAgIG1pYnMvU05NUC1VU0VSLUJBU0VELVNNLU1JQi50eHQKICAgICAgIG1pYnMvU05NUC1WSUVXLUJBU0VELUFDTS1NSUIudHh0IHMvZnJlZWJzZC5oIHMvZnJlZWJzZDIuaAogICAgICAgc25tcGxpYi9taWIuYyBzbm1wbGliL3BhcnNlLmMgc25tcGxpYi9wYXJzZS5oCiAgICAgICBzbm1wbGliL3NubXBfYXBpLmMgc25tcGxpYi92YWNtLmMpIC0gY2hhbmdlcyBjL28gTmllbHMgQmFnZ2VzZW4KCm1zbGlmY2FrIDExIE1heSA5OSAxODo1ODozNwogICAgLShjeWd3aW4uaCkgLSB1c2UgdG8gYnVpbGQgb24gQ3lnV2luIHBsYXRmb3JtLgoKbXNsaWZjYWsgMTEgTWF5IDk5IDE5OjU0OjA0CiAgICAtKGFnZW50L3NubXAycC5jIGFnZW50L3NubXBfdmFycy5oIGFnZW50L3ZpZXdfcGFyc2UuYwogICAgICAgYWdlbnQvbWliZ3JvdXAvdXRpbF9mdW5jcy5jIGFnZW50L21pYmdyb3VwL2R1bW15L2R1bW15LmgKICAgICAgIGFnZW50L21pYmdyb3VwL2V4YW1wbGVzL3dvbWJhdC5oCiAgICAgICBhZ2VudC9taWJncm91cC9ob3N0L2hyX2ZpbGVzeXMuYwogICAgICAgYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9zdG9yYWdlLmMKICAgICAgIGFnZW50L21pYmdyb3VwL2hvc3QvaHJfc3dydW4uYyBhZ2VudC9taWJncm91cC9ob3N0L2hyX3N5c3RlbS5jCiAgICAgICBhZ2VudC9taWJncm91cC9pcGZ3Y2hhaW5zL2lwZndjaGFpbnMuYwogICAgICAgYWdlbnQvbWliZ3JvdXAvbWliSUkvYXQuYyBhZ2VudC9taWJncm91cC9taWJJSS9pY21wLmMKICAgICAgIGFnZW50L21pYmdyb3VwL21pYklJL2ludGVyZmFjZXMuYwogICAgICAgYWdlbnQvbWliZ3JvdXAvbWliSUkvc3lzdGVtX21pYi5jIGFnZW50L21pYmdyb3VwL21pYklJL3RjcC5jCiAgICAgICBhZ2VudC9taWJncm91cC9taWJJSS91ZHAuYyBhZ2VudC9taWJncm91cC9taWJJSS92YWNtX3ZhcnMuYwogICAgICAgYWdlbnQvbWliZ3JvdXAvbWliSUkvdmFyX3JvdXRlLmMgYWdlbnQvbWliZ3JvdXAvbWlzYy9pcGZ3YWNjLmMKICAgICAgIGFnZW50L21pYmdyb3VwL21pc2MvaXBmd2FjYy5oCiAgICAgICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9leHRlbnNpYmxlLmMKICAgICAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL2hwdXguYwogICAgICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvbG9hZGF2ZS5jCiAgICAgICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9wYXNzLmMKICAgICAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Bhc3NfcGVyc2lzdC5jCiAgICAgICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9wcm9jLmMKICAgICAgIGFnZW50L21pYmdyb3VwL3YycGFydHkvY29udGV4dF92YXJzLmMKICAgICAgIGFnZW50L21pYmdyb3VwL3YycGFydHkvcGFydHlfdmFycy5jCiAgICAgICBhZ2VudC9taWJncm91cC92MnBhcnR5L3ZpZXdfdmFycy5jIGFwcHMvc25tcGRlbHRhLmMKICAgICAgIGFwcHMvc25tcHRlc3QuYyBhcHBzL3NubXB0cmFwZC5jIGFwcHMvc25tcG5ldHN0YXQvaWYuYwogICAgICAgYXBwcy9zbm1wbmV0c3RhdC9yb3V0ZS5jIGFwcHMvc25tcG5ldHN0YXQvd2luc3R1Yi5jCiAgICAgICBhcHBzL3NubXBuZXRzdGF0L3dpbnN0dWIuaCBzbm1wbGliL2FjbF9wYXJzZS5jCiAgICAgICBzbm1wbGliL2NvbnRleHQuaCBzbm1wbGliL2NvbnRleHRfcGFyc2UuYyBzbm1wbGliL3BhcnR5LmgKICAgICAgIHNubXBsaWIvcGFydHlfcGFyc2UuYyBzbm1wbGliL3JlYWRfY29uZmlnLmMgc25tcGxpYi9zbm1wX2FwaS5jKQogICAgICBQb3J0IHNvbWUgb2YgdGhlIGZpeGVzIGZyb20gdGhlIGN1cnJlbnQgZGV2ZWxvcG1lbnQgYnJhbmNoCgptc2xpZmNhayAxMiBNYXkgOTkgMTA6NDU6MDUKICAgIC0gKHNubXBfYXBpLmMgc25tcF9jbGllbnQuYykgY2FsbCBzbm1wX3N5bmNoX3Jlc2V0IGZyb20gc25tcF9zZXNzX2Nsb3NlCgptc2xpZmNhayAxMiBNYXkgOTkgMTE6Mjg6MDcKICAgIC0obWliLmMgcGFyc2UuYyBwYXJ0eV9wYXJzZS5jIHJlYWRfY29uZmlnLmMpIG5vIGV4aXQoKSBmcm9tIGxpYnJhcnk7IHJldHVybiBlcnJvcgoKZGF2ZXMgMTMgTWF5IDk5IDAzOjM4OjAzCiAgICAKICAgIChtaWIuYyk6IEZpeGVkIG1pbm9yIHR5cG8KCmRhdmVzIDEzIE1heSA5OSAwMzo1NTowNgogICAgLSAoaXAuYyk6IFByb3Blcmx5IHJlZ2lzdGVyIElQIG1vZHVsZSBncm91cCBvbiBGcmVlLUJTRCBzeXN0ZW1zCiAgICAgICAgICAgICAgKHRoYW5rcyB0byBNaXRjaGVsbCBUYXNtYW4pCgpoYXJkYWtlciAxMyBNYXkgOTkgMDk6MDc6MTMKICAgIC0gKHZtc3RhdC5jKTogaW5jbHVkZSBsaW1pdHMuaC4KCmhhcmRha2VyIDEzIE1heSA5OSAwOTowNzozOQogICAgLSAodmFjbV92YXJzLmMpOiBTZXQgcG9pbnRlcnMgdG8gTlVMTCBhZnRlciBmcmVlaW5nIHRoZW0uCgpoYXJkYWtlciAxMyBNYXkgOTkgMTU6NDI6NDgKICAgIC0gKHZlcnNpb24uaCBidWctcmVwb3J0IHNlZHNjcmlwdC5pbik6IHZlcnNpb24gdGFnICggMy42LjIgKQoKZGF2ZXMgMTcgTWF5IDk5IDAzOjIwOjEwCiAgICAtIChzbm1wX3BhcnNlX2FyZ3MuYyk6IEluaXRpYWxpc2Ugc2Vzc2lvbiB1c2luZyBsaWJyYXJ5IHJvdXRpbmUKCm1zbGlmY2FrIDE5IE1heSA5OSAxODowMTo0OAogICAgLShtaWJJSS92YXJfcm91dGUuYykgLSBmaXggTGludXggUm91dGVNYXNrIGMvbyAiTmFuY3kiIG5hbUBjcy5jbXUuZWR1Cgptc2xpZmNhayAxOSBNYXkgOTkgMTg6NDk6MjUKICAgIC0gKGhvc3RfcmVzLmgpIGZpeCBIQVZFX05FVF9JRl9WQVJfSCBkZWZpbmUgKHdhcyBIQVZFX05FVF9JTl9WQVJfSCkKCmhhcmRha2VyIDI1IE1heSA5OSAyMDoyMDozMQogICAgLSAodmVyc2lvbi5oIGJ1Zy1yZXBvcnQgc2Vkc2NyaXB0LmluKTogdmVyc2lvbiB0YWcgKCAzLjYuMi5wcmUxICkKCm5iYSAyNiBNYXkgOTkgMDc6NTc6NDIKICAgIAogICAgICBUYWc6IFYzLWxpbmUKICAgIAogICAgaWYuYzogZHluYW1pYyB3aWR0aCBmb3IgLWkgYW5kIC1vIG9wdGlvbgoKbXNsaWZjYWsgMjYgTWF5IDk5IDA4OjAwOjA3CiAgICAtIGZpeC11cHMgdG8gYnVpbGQgV2luMzIgTVNWaXN1YWxDKysKCm5iYSAyNiBNYXkgOTkgMDg6MjQ6MzUKICAgIAogICAgCiAgICBTb21lIGZpeGVzIGZvciBTb2xhcmlzIDIuNyAocHJvYyBhY2Nlc3Mgc3RpbGwgZG9lcyBub3Qgd29yayB3aGVuIGNvbXBpbGVkCiAgICB3aXRoIGdjYyAoMzItYml0IGNvbXBpbGVyKQoKbmJhIDI2IE1heSA5OSAwODoyOToyNgogICAgCiAgICBGaXhlcyBmb3IgRnJlZUJTRCAyLjEgZnJvbSBEZXJlayBKLiBCYWxsaW5nIDxkYmFsbGluZ0B5YWhvby1pbmMuY29tPgoKaGFyZGFrZXIgMjYgTWF5IDk5IDE2OjA3OjE2CiAgICAtIChhY2NvbmZpZy5oLCBjb25maWcuaC5pbik6IGluY3JlYXNlIE1BWFJFQURDT1VOVC4KCmhhcmRha2VyIDI2IE1heSA5OSAxNjowNzo0MgogICAgLSAoaHJfc3dpbnN0LmMpOiBtYWtlIHN3aW5zdGFsbCBiZSAidW5rbm93biIgc2luY2Ugd2UgY2FuJ3QgdHJ1bHkga25vdy4KCmhhcmRha2VyIDI2IE1heSA5OSAxNjowODowOQogICAgLSAoaXBmd2FjYy5oKTogbW92ZSB0byBjb3JyZWN0IGxvY2F0aW9uLgoKaGFyZGFrZXIgMjYgTWF5IDk5IDE2OjA4OjI4CiAgICAtIChJUEZXQUNDLU1JQi50eHQpOiBtYWtlIGNvdW50ZXJzLgoKaGFyZGFrZXIgMjYgTWF5IDk5IDE3OjMxOjI1CiAgICAtIChwcm9jLmMpOiB1bHRyaXggZml4ZXMuCgpoYXJkYWtlciAyNiBNYXkgOTkgMTc6Mzg6NTYKICAgIC0gKElQRldBQ0MtTUlCLnR4dCk6IGFkZGVkIFNFUVVFTkNFIE9GLgoKbmJhIDI3IE1heSA5OSAwMjo1NjoyNQogICAgCiAgICAKICAgIGhvc3QvaHJfc3dydW4uYywgdWNkLXNubXAvcHJvYy5jOiBGaXhlcyBmb3IgU29sYXJpcyAyLjcKCm5iYSAyNyBNYXkgOTkgMDI6NTk6MTYKICAgIAogICAgc25tcGQuYzoJUHJvcGVybHkgaGFuZGxlIHRoZSBjYXNlIG9mIG5vIGNvbW11bml0eSBzcGVjaWZpZWQKICAgIAlmb3IgYWdlbnQgdHJhcHMuCgpuYmEgMjcgTWF5IDk5IDIzOjU1OjA5CiAgICAKICAgIHNvbGFyaXMyLj8uaDoJZGVmaW5lIF9TTEFTSF9QUk9DX01FVEhPRF8gYXMgMQoKbmJhIDI3IE1heSA5OSAyMzo1NTo0OQogICAgCiAgICByZWFkX2NvbmZpZy5jOgljb21wbGFpbiBhYm91dCBleGlzdGluZyBidXQgdW5yZWFkYWJsZSBjb25maWcgZmlsZXMuCgpuYmEgMjcgTWF5IDk5IDIzOjU5OjM3CiAgICAKICAgIGluZXQuYzoJMCBJUyBhIHZhbGlkIHNob3J0IChhbmQgcG9ydCBhZGRyZXNzIGZvciByZW1vdGUgZW5kcyBvZiBwb3J0cwogICAgCWluIExJU1RFTiBzdGF0ZSkKCm5iYSAyOCBNYXkgOTkgMDM6MjU6MjkKICAgIAogICAgY2hhbmdlIHRoZSB0cmFwc2luay90cmFwMnNpbmsgZGlyZWN0aXZlcyB0byBzdXBwb3J0IGEgY29tbXVuaXR5IHBhcmFtZXRlci4KCm5iYSAyOSBNYXkgOTkgMDI6NDk6NDcKICAgIAogICAgLSBzbXV4LmM6IGZpeCBhIG1pc3NpbmcgbnRvaHMgaW4gYSBkZWJ1ZyBtZXNzYWdlCgpuYmEgIDEgSnVuIDk5IDAwOjI3OjM2CiAgICAKICAgIC0gcHJvYy5jOiBZQVBCTyAoWWV0IGFub3RoZXIgcG9zc2libGUgYnVmZmVyIG92ZXJmbG93KQoKbmJhICAxIEp1biA5OSAwMDoyOTozNQogICAgCiAgICAtIHNubXBfYWdlbnQuYzogY2hhbmdlIG5vQ3JlYXRpb24gcmV0dXJuIHRvIG5vQWNjZXNzLiBUaGVyZSBhcmUgcHJvYmFibHkKICAgIAlzaXR1YXRpb25zIHdoZXJlIHRoZSBmb3JtZXIgaXMgY29ycmVjdCwgYnV0IHRoaXMgaXMgbGVzcyBjb25mdXNpbmcKCm5iYSAgMSBKdW4gOTkgMDA6MzM6NTIKICAgIAogICAgLSBrZXJuZWxfc3Vub3M1Lj8sIGhyX3N3cnVuLmMsIGF0LmMsIGludGVyZmFjZXMuYzogZml4IGF0LmF0VGFibGUgYW5kCiAgICAJaXAuaXBOZXRUb01lZGlhVGFibGUgZm9yIFNvbGFyaXMuIEFsc28gYSB0d2VhayBmb3IgZ2V0S3N0YXRJbnQuCgpoYXJkYWtlciAgMiBKdW4gOTkgMDc6Mjc6NDYKICAgIC0gKHZlcnNpb24uaCBidWctcmVwb3J0IHNlZHNjcmlwdC5pbik6IHZlcnNpb24gdGFnICggMy42LjIucHJlMiApCgptc2xpZmNhayAgMiBKdW4gOTkgMTM6NDY6MzQKICAgIC0oaHJfZmlsZXN5cy5jLGludGVyZmFjZXMuYyxmcmVlYnNkMy5oKSBmaXggYnVpbGQgb24gRnJlZUJTRCAzLjEKCm5iYSAgMyBKdW4gOTkgMTQ6MzE6MTgKICAgIAogICAgLSBrZXJuZWwuYzoJYWRkIHNvbWUgc2FuaXR5IGNoZWNrcyB3aGVuIHJ1bm5pbmcgd2l0aG91dCByb290IGFjY2Vzcy4KCm5iYSAgMyBKdW4gOTkgMTQ6MzQ6NTAKICAgIAogICAgLSBocl9zd3J1bi5jOglhZGQgYSBibGFuayBiZXR3ZWVuIHByb2Nlc3MgcGFyYW1ldGVycwoKbmJhICAzIEp1biA5OSAxNDozODoxOAogICAgCiAgICAtIG5ldGJzZC5oLCB0Y3AuYywgdWRwLmM6CWZpeCBzb2NrZXQgdGFibGVzIGZvciBOZXRCU0QgMS4zLzEuNAoKbmJhICAzIEp1biA5OSAxNToxMjowMQogICAgCiAgICAtIHNubXB0cmFwLmM6IGZpeCBhIGJhZCBmcmVlIHdoZW4gY2FsbGluZyBzbm1waW5mb3JtLgoKbmJhICAzIEp1biA5OSAxNToyMTowOQogICAgLSB0Y3AuYzogbG9zdCBhICc7JyBmb3IgdGhlIEZyZWVCU0QgY2FzZSAuLi4uCgpkYXZlcyAgNCBKdW4gOTkgMDQ6NTE6MDQKICAgIC0gKGFnZW50L21pYmdyb3VwL2hvc3QvaHJfc3dpbnN0LmMpOiBGaXggUlBNIGhhbmRsaW5nCgpkYXZlcyAgNCBKdW4gOTkgMDU6MDY6NDQKICAgIC0gKGNvbmZpZ3VyZS5pbiBjb25maWd1cmUpOiBBZGRpdGlvbmFsIGxpYnJhcnkgZm9yIFJQTSBoYW5kbGluZwoKbXNsaWZjYWsgIDQgSnVuIDk5IDA5OjMwOjEyCiAgICAtKHRjcC5jLCB1ZHAuYykgYXBwbHkgS2VuIEtleSdzIGZpeCBmb3IgRnJlZUJTRDMuMQoKbmJhICA0IEp1biA5OSAxMTo1MjozOAogICAgLSBpcC5jOiBGaXggZm9yIEZyZWVCU0QgMyBmcm9tIEtlbiBLZXkKCm5iYSAgNCBKdW4gOTkgMTE6NTM6MzIKICAgIC0ga2VybmVsX3N1bm9zNS5jLCBhc24xLmM6IEZpeGVzIGZvciA2NC1iaXQgU29sYXJpcyA3CgpuYmEgIDUgSnVuIDk5IDA1OjQ3OjIwCiAgICAtIGludGVyZmFjZXMuYyx0Y3AuYyx1ZHAuYzogY2xlYW51cCBvZiBjb25kaXRpb25hbHMgZm9yIEZyZWVCU0QKCm5iYSAgNSBKdW4gOTkgMDY6MDI6NTIKICAgIC0gY29uZmlndXJlLmluOiBwcm9wZXIgY29uZmlndXJlIGNoZWNrIGZvciBzeXMvc29ja2V0dmFyLmgKCm1zbGlmY2FrICA3IEp1biA5OSAwNzo0NToxMAogICAgLShpcC5jLCB2YXJfcm91dGUuYykgZml4IHNpemVvZiwgQ1BQICNlbmRpZgoKaGFyZGFrZXIgIDcgSnVuIDk5IDEwOjUyOjMyCiAgICAtIChNYWtlZmlsZS5pbik6IFBhdGNoIGZyb20gQ2hyaXMgU21pdGg6CiAgICAgIC0gZG9uJ3QgcHV0IENGTEFHUyBpbiB0aGUgbGluayBsaW5lLgoKaGFyZGFrZXIgIDcgSnVuIDk5IDEwOjU0OjIxCiAgICAtIChSRUFETUUud2luMzIpOiBhZGRlZCB0byB0aGUgMy42LjIgbGluZS4KCmhhcmRha2VyICA3IEp1biA5OSAxMToyNToyNwogICAgLSAoRkFRLCBSRUFETUUpOiB1cGRhdGUgZm9yIDMuNi4yLgoKaGFyZGFrZXIgIDcgSnVuIDk5IDExOjI3OjE1CiAgICAtIChORVdTKTogMy42LjIgdXBkYXRlLgoKaGFyZGFrZXIgIDcgSnVuIDk5IDExOjMwOjQwCiAgICAtIChFWEFNUExFLmNvbmYuZGVmKTogdXBkYXRlIGZvciAzLjYuMi4KCmhhcmRha2VyICA3IEp1biA5OSAxMTozMjo1NAogICAgLSAoSU5TVEFMTCk6IHVwZGF0ZSBmb3IgMy42LjIuCgptc2xpZmNhayAgNyBKdW4gOTkgMTM6MDI6MTAKICAgIC0oaWYuYykgLSBjaGVjayBmb3IgdmFsaWQgcG9pbnRlciBiZWZvcmUgZGUtcmVmZXJlbmNpbmcuCgpoYXJkYWtlciAgNyBKdW4gOTkgMTU6NDY6MjYKICAgIC0gKGNvbmZpZ3VyZSwgY29uZmlndXJlLmluKTogY2hlY2sgZm9yIGxpYmRiMSBiZWZvcmUgbGliZGIgZm9yIHJwbSB1c2FnZS4KCmhhcmRha2VyICA3IEp1biA5OSAxNTo1MDowMQogICAgLSAoRkFRKTogbWVyZ2UKCmhhcmRha2VyICA3IEp1biA5OSAxNjowMzoyNQogICAgLSAoY29uZmlndXJlLmluLCBjb25maWd1cmUpOiBjaGVjayBmb3IgLWxkYjEgdGhlbiAtbGRiIGZvciBycG0gdXNhZ2UuCgpoYXJkYWtlciAgNyBKdW4gOTkgMTY6NDM6NTAKICAgIC0gKGNvbmZpZy5oLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbik6IGNoZWNrIGZvciBycG1HZXRQYXRoIHRvIGhlbHAKICAgICAgZGV0ZXJtaW5lIHdoaWNoIHZlcnNpb24gb2YgUlBNIHdlJ3JlIHVzaW5nICgzIG9yIDIpLgoKcGpsICA3IEp1biA5OSAxNzozMDozMwogICAgQWRkZWQgUlBNIHYzIHN1cHBvcnQKCm1zbGlmY2FrICA4IEp1biA5OSAwMzo0MDozNgogICAgLShtaWJJSS8qLHNubXBsaWIvKikgTWFya2t1IEwuJ3MgZml4ZXMgdG8gY29tcGlsZSBvbiBIUC1VWCB3aXRoIGFDQwoKbXNsaWZjYWsgIDggSnVuIDk5IDAzOjU0OjUwCiAgICBzcGVsbCBjaGVjayBDT01NVU5JVFkKCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCkNoYW5nZXM6IFYzLjYgLT4gVjMuNi4xCgkKbXNsaWZjYWsgIDggTWFyIDk5IDA0OjAyOjAxCiAgICAocGFyc2UuYykgLSBmaXggc3ViaWQgaW5pdDsgcmVtb3ZlIHVzZWxlc3MgJy1QbCcgb3B0aW9uLgoKbXNsaWZjYWsgIDggTWFyIDk5IDA0OjE0OjQxCiAgICAtIChzbm1wX2FwaS5jKSB1c2UgcmVxdWVzdCBkYXRhIHdpdGggcmVxdWVzdCBjYWxsYmFjawoKbXNsaWZjYWsgIDggTWFyIDk5IDA1OjAxOjQ5CiAgICAtKHdpbjMyL2NvbmZpZy5oKSByZW1vdmUgdW51c2VkIFNZU19USU1FX05BTUUsR0xPQkFMU0VDVVJJVFkuIGFkZCBuZXcgY29uc3RhbnRzLgoKbXNsaWZjYWsgIDggTWFyIDk5IDA1OjA3OjEzCiAgICAtIChBR0VOVCkgTUFYX05BTUVfTEVOIC0tPiBNQVhfT0lEX0xFTiBpbiBleGFtcGxlCgptc2xpZmNhayAgOCBNYXIgOTkgMDk6NTg6MTcKICAgIC0gKHNubXBsaWIvcGFyc2UuYykgQ29tcGxldGUgRGF2ZSBTaGllbGRzJyBwYXRjaCBmb3IgY29udGludWUgYWZ0ZXIgZXJyb3IuCgptc2xpZmNhayAgOCBNYXIgOTkgMTQ6Mjg6MjAKICAgIC0gKHNubXBuZXRzdGF0OmlmLmMsIHJvdXRlLmMpIGxpbWl0IGludGVyZmFjZSBuYW1lIHNpemVzIHRvIGZpdCBmaXhlZCBsZW5ndGggYnVmZmVycy4KCmhhcmRha2VyIDEwIE1hciA5OSAxNTowNzozMQogICAgLSAoRVhBTVBMRS5jb25mLmRlZik6IGdyb3VwIGxpbmVzIHdlcmUgYmFja3dhcmRzLgoKaGFyZGFrZXIgMTEgTWFyIDk5IDE1OjQ4OjIyCiAgICAtIChSRUFETUUpOiBBZGRlZCBNaWtlIEJhZXIuCgpoYXJkYWtlciAxMSBNYXIgOTkgMTU6NDg6NTIKICAgIC0gKG1lbW9yeV9zb2xhcmlzMi5jKTogY2hhbmdlZCBzb21lIGNvbW1lbnRzIHRvIC8qICovIGluc3RlYWQgb2YgLy8uCgpoYXJkYWtlciAxMSBNYXIgOTkgMTY6MTA6MzEKICAgIC0gKEFHRU5UKTogcmVtb3ZlZCBBR0VOVAoKaGFyZGFrZXIgMTEgTWFyIDk5IDE2OjEwOjQ3CiAgICAtIChtaWIyYyk6IGZpeGVkIGEgY291cGxlIG9mIGJ1Z3MgYW5kIGFuc2knaWZpZWQgdGhpbmdzLgoKaGFyZGFrZXIgMTEgTWFyIDk5IDE2OjIyOjQzCiAgICAtICh1dGlsX2Z1bmNzLmMsIHV0aWxfZnVuY3MuaCk6IG1vdmUgTUFUQ0hfU1VDQ0VFREVEIGRlZnMgdG8gLmguCgpoYXJkYWtlciAxMSBNYXIgOTkgMTY6MjM6NDQKICAgIC0gKHNubXBfYXBpLmgsIHNubXBfZGVidWcuaCk6IFBhdGNoIGZyb20gRXJpayBKYWNvYnNlbjoKICAgICAgLSBmaXhlZCBwcm90b3R5cGVzIGZvciBERUJVR1AoKSBhbmQgREVCVUdQT0lEKCkuCgptc2xpZmNhayAxMiBNYXIgOTkgMDc6MDg6NDAKICAgIC0gKGRsbW9kX21pYi5jKSA6IFVzZSBNQVRDSF9GQUlML1NVQ0NFRURFRCBpbiB1dGlsX2Z1bmNzLmgKCmhhcmRha2VyIDEyIE1hciA5OSAwOToxNToxNAogICAgLSAobWliaW5jbC5oLCBkdW1teS5jLCB3b21iYXQuYywgaHJfZGV2aWNlLmMsIGhyX2Rpc2suYywgaHJfZmlsZXN5cy5jLAogICAgICBocl9uZXR3b3JrLmMsIGhyX3BhcnRpdGlvbi5jLCBocl9wcmludC5jLCBocl9wcm9jLmMsIGhyX3N0b3JhZ2UuYywKICAgICAgaHJfc3dpbnN0LmMsIGhyX3N3cnVuLmMsIGhyX3N5c3RlbS5jLCBpY21wLmMsIGludGVyZmFjZXMuYywgaXAuYywKICAgICAgc25tcF9taWIuYywgc3lzT1JUYWJsZS5jLCBzeXN0ZW1fbWliLmMsIHRjcC5jLCB1ZHAuYywgZGxtb2QuYywKICAgICAgcmVnaXN0cnkuYyk6IGZpeGVkIE1BVENIX0ZBSUxFRC9TVUNDRUVERUQgZGVmaW5lcyAtPiB1dGlsX2Z1bmNzLmguCgptc2xpZmNhayAxMiBNYXIgOTkgMTE6MzE6MTYKICAgIC0gKGRsbW9kX21pYi5jKSA6IGV4cGxpY2l0IHRlc3QgZm9yIE1BVENIX0ZBSUxFRAoKaGFyZGFrZXIgMTIgTWFyIDk5IDEyOjIwOjEyCiAgICAtIChtaWIyYyk6IGZpeCBhc25fcGFyc2UgZnVuY3Rpb25zIHRvIHBhc3MgYSBwb2ludGVyIHRvIHRoZSBzaXplIHZhcmlhYmxlLgoKaGFyZGFrZXIgMTIgTWFyIDk5IDE0OjE3OjA4CiAgICAtIChORVdTKTogdXBkYXRlLgoKaGFyZGFrZXIgMTIgTWFyIDk5IDE0OjE3OjQ0CiAgICAtIChzbXV4LmMpOiBwcm90ZWN0IHN0cmNweSgpIGFnYWluc3QgYSBudWxsIHBhc3N3b3JkIHNwZWNpZmllZCBvbiB0aGUKICAgICAgY29uZmlnIGxpbmUuCgptc2xpZmNhayAxMiBNYXIgOTkgMTQ6MzQ6MTIKICAgIC0gKGhyX3N5c3RlbS5oKSAtIGRvbid0IHJlcXVpcmUgaHJfdXRpbDsgZG9uZSBpbiBtaWJncm91cC9ob3N0LmgKICAgIC0gKGhyX3N3cnVuLmMpIC0gc29sYXJpczIgOiBtYWtlIHN1cmUga3ZtX29wZW4gaXMgY2FsbGVkIGJlZm9yZSBrZCBpcyB1c2VkLgogICAgLSAoaHJfc3dydW4uYykgLSBhZGQgbGFtZSBzdW5vczQgZXF1aXZhbGVudCBpbiBIUlNXUlVOUEVSRl9DUFUuCgptc2xpZmNhayAxMiBNYXIgOTkgMTQ6MzU6MzgKICAgIC0gKHRhcmdldC5oLCB0YXJnZXQvKi5oKSByZXF1aXJlIHV0aWxfZnVuY3Mgb25jZS4KCmhhcmRha2VyIDEyIE1hciA5OSAxNDozNjozOQogICAgLSAodXRpbF9mdW5jcy5oKTogTUFUQ0hfRkFJTEVEIC0+IC0xLCBzaW5jZSBzb21lIHVzZSBpdC4KCm1zbGlmY2FrIDEyIE1hciA5OSAxNDo1NDo1MQogICAgLSByZXN0b3JlIGNvbmZpZ19yZXF1aXJlIGxvZ2ljOyBmaXggc3ByaW50ZiBjYWxscyB0byBjb21waWxlIHVuZGVyIFN1bk9TIDQuMS54LgoKaGFyZGFrZXIgMTIgTWFyIDk5IDE1OjIzOjE4CiAgICAtIChJTlNUQUxMKTogZG9uJ3QgcHJpbnQgbW9kdWxlIGxpc3QgaGVyZS4uLiAgdGVsbCB0aGVtIHRvIGxvb2sgYXQKICAgICAgY29uZmlndXJlIC0taGVscC4KCmhhcmRha2VyIDEyIE1hciA5OSAxNToyNDozNwogICAgLSAoY29uZmlndXJlLCBjb25maWd1cmUuaW4sIElQRldDSEFJTlMtTUlCLnR4dCwgUkVBRE1FLAogICAgICBpcGZ3Y19rZXJuZWxfaGVhZGVycy5oLCBpcGZ3Y2hhaW5zLmMsIGlwZndjaGFpbnMuaCwgbGliaXBmd2MuYywKICAgICAgbGliaXBmd2MuaCk6IFBhdGNoIGZyb20gRGlkaWVyIERoYWVuZW5zOgogICAgICAtIG5ldyBtb2R1bGVzOiBpcGZ3Y2hhaW5zLgoKbXNsaWZjYWsgMTUgTWFyIDk5IDA1OjU0OjA3CiAgICAtIChNYWtlZmlsZS5pbiBsaWJzbm1wLmggbWliLmMgc25tcC5oIHNubXBfYXBpLmMpIHVwZGF0ZSBDTVVfQ09NUEFUSUJMRQoKaGFyZGFrZXIgMTUgTWFyIDk5IDA4OjQ5OjEwCiAgICAtIChNYWtlZmlsZS5pbiwgc25tcF9hcGkuYyk6CiAgICAgIC0gcmV2ZXJ0IHRvIHNubXBfcGFyc2UuCiAgICAgIC0gZG9uJ3QgaW5zdGFsbCBsaWJzbm1wLmguCgptc2xpZmNhayAxNSBNYXIgOTkgMDk6NDI6MzQKICAgIC0gc2Vjb25kIHBhc3MgYXQgQ01VX0NPTVBBVCA6IERpc2FibGUgYnkgZGVmYXVsdCwgbGVhdmUgc25tcF9wYXJzZSBhbG9uZS4KCmhhcmRha2VyIDE1IE1hciA5OSAxNDozMDo0NQogICAgLSAoc25tcC5oKTogcmVtb3ZlIHVubmVlZGVkIGNvbW1lbnRlZCBvdXQgZGVmaW5lLgoKaGFyZGFrZXIgMTUgTWFyIDk5IDE0OjMxOjIzCiAgICAtIChhY2NvbmZpZy5oKTogYWRkZWQgQ01VX0NPTVBBVElCTEUKCmhhcmRha2VyIDE1IE1hciA5OSAxNToyMTowMgogICAgLSAoaHJfcHJvYy5jLCBocl9wcm9jLmgsIGxvYWRhdmUuYywgbG9hZGF2ZS5oKTogZml4IHRyeV9sb2FkYXZlIGZvciBzb2xhcmlzLgoKaGFyZGFrZXIgMTUgTWFyIDk5IDE1OjMxOjUxCiAgICAtIChjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgaW50ZXJmYWNlcy5jLCBsaW51eC5oKTogZGV0ZWN0CiAgICAgIC9wcm9jL25ldC9kZXYgdmVyc2lvbiBhdCBydW4gdGltZSwgbm90IGNvbXBpbGUgdGltZS4KCmhhcmRha2VyIDE1IE1hciA5OSAxNTo0NjoxMgogICAgLSAoaW50ZXJmYWNlcy5jKTogZml4ZXMgZm9yIGxpbnV4IDIuMiBpbnRlcmZhY2Ugc2Nhbm5pbmcuCgpoYXJkYWtlciAxNSBNYXIgOTkgMTU6NTU6MzUKICAgIC0gKE1ha2VmaWxlLmluKTogbWFrZWZpbGVpbmRlcGVuZC4KCmhhcmRha2VyIDE1IE1hciA5OSAxNTo1ODowNwogICAgLSAoRkFRLCBORVdTKTogdXBkYXRlcyB0byB0YWxrIGFib3V0IHRoZSBBR0VOVC50eHQgZmlsZS4KCQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgpDaGFuZ2VzOiBWMy41LjMgLT4gVjMuNgoKaGFyZGFrZXIgMTkgSnVuIDk4IDEzOjE0OjQzCiAgICAtIChDaGFuZ2VMb2cpOiB1cGRhdGUgZm9yIDMuNS4KCmhhcmRha2VyIDIyIEp1biA5OCAwOToxNjozMgogICAgLSAobWFpbi5jKTogUGF0Y2ggZnJvbSBKZXJyeSBHLiBEZUxhcHA6CiAgICAgIC0gY29tbWVudGVkIG91dCB0cmFpbGluZyAjZW5kaWYgY29tbWVudC4KCmhhcmRha2VyIDI0IEp1biA5OCAxMDozMDoxOQogICAgLSAoTWFrZWZpbGUuaW4pOiBtYW4tPmh0bWwgbWFrZSBzcGVjaWZpY2F0aW9uLgoKaGFyZGFrZXIgMjQgSnVuIDk4IDEwOjMxOjIyCiAgICAtIChNYWtlZmlsZS5pbiwgc25tcF9hcGkuYywgc25tcF9hcGkuaCk6IGNyZWF0ZSBzbm1wX3BkdV9hZGRfdmFyaWFibGUoKS4KCmhhcmRha2VyIDI0IEp1biA5OCAxMDo1Njo0NgogICAgLSAoc25tcHNldC5jLCBzbm1wdGVzdC5jLCBzbm1wdHJhcC5jLCBzbm1wX2FwaS5jLCBzbm1wX2FwaS5oKToKICAgICAgLSBtb3ZlZCBoZXhfdG9fYmluYXJ5LCBhc2NpaV90b19iaW5hcnksIGFuZCBzbm1wX2FkZF92YXIgdG8gc25tcGxpYi4KCmhhcmRha2VyIDI0IEp1biA5OCAxMTowODo0MQogICAgLSAoVUNELVNOTVAtTUlCLnR4dCk6IFBhdGNoIGZyb20gTmllbHMgQmFnZ2VzZW46CiAgICAgIC0gc2h1dGRvd24gdHJhcCBzcGVjaWZpY2F0aW9ucy4KICAgICAgLSBtaXNjIG1pYiBmaXhlcy4KCmhhcmRha2VyIDI0IEp1biA5OCAxMTo0MDo0MAogICAgLSAoc25tcGQuYywgc25tcGQuaCk6CiAgICAgIC0gY3JlYXRlZCAocG9vcmx5KSBzZW5kX3RyYXBfcGR1KCkgZm9yIHNlbmRpbmcgdjIgdHJhcHMgZnJvbSBtaWIgbW9kdWxlcy4KCmhhcmRha2VyIDI2IEp1biA5OCAxMDo0MjozMgogICAgLSAoZGlzay5jKTogUGF0Y2ggZnJvbSBNaWNoYWVsIERvdWdsYXNzOgogICAgICAtIGZpeCBjYWxjdWxhdGlvbiBvZiB0b3RhbGRpc2sgYnkgZG9pbmcgYmxvY2sgZGl2aXNpb24gZmlyc3QgdG8KICAgICAgICBwcm90ZWN0IGFnYWluc3QgMzIgYml0IG92ZXJmbG93cy4KCmhhcmRha2VyIDI2IEp1biA5OCAxMDo0NToxNQogICAgLSAoc211eC5jLCBzbm1wX2JncC5jLCBzbm1wX29zcGYuYywgc25tcF9yaXAyLmMsIHNubXBfcmlwMi5oKTogUGF0Y2gKICAgICAgZnJvbSBOaWVscyBCYWdnZXNlbjoKICAgICAgLSBGaXggZm9yIG5ldyBkZWZpbmVzIGFuZCBwcm9wZXIgaGVhZGVyIGluY2x1ZGVzLgoKaGFyZGFrZXIgMjYgSnVuIDk4IDE1OjAzOjM4CiAgICAtIChnZW5lcmljLmgpOiBwdXQgaW4gYSBjb21tZW50IHRvIGtlZXAgY29tcGlsZXJzIGZyb20gY29tcGxhaW5pbmcgdG9vIG11Y2guCgpoYXJkYWtlciAyOCBKdW4gOTggMDk6MzA6MzQKICAgIC0gKHNubXBfYXBpLmMpOiBmaXggc25tcF9hZGRfdmFyKCkuCgpoYXJkYWtlciAgMSBKdWwgOTggMTE6Mjg6MTcKICAgIC0gKGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBNYWtlZmlsZS5pbiwgYWdlbnRfcmVhZF9jb25maWcuYywKICAgICAgYWdlbnRfcmVhZF9jb25maWcuaCwgc25tcF92YXJzLmMsIHNubXBfdmFycy5oLCBzbm1wZC5jLCBNYWtlZmlsZS5pbiwKICAgICAgc3RydWN0LmgsIHBhc3MuaCwgTWFrZWZpbGUuaW4sIHNubXB0cmFwZC5jLCBzbm1wdHJhcGRfaGFuZGxlcnMuYywKICAgICAgc25tcHRyYXBkX2hhbmRsZXJzLmgsIE1ha2VmaWxlLmluLCByZWFkX2NvbmZpZy5jLCByZWFkX2NvbmZpZy5oLAogICAgICBzbm1wX2FwaS5jLCBzbm1wX2FwaS5oKToKICAgICAgLSBtb3ZlZCByZWFkX2NvbmZpZyBzdXBwb3J0IGludG8gdGhlIGxpYnJhcnkgYW5kIHVzZSBpdC4KICAgICAgLSBiZWdpbm5pbmdzIG9mIHNubXB0cmFwZCBleHRlbnNpYmlsaXR5LgoKaGFyZGFrZXIgIDEgSnVsIDk4IDE1OjU2OjEyCiAgICAtIChzbm1wX2FwaS5jLCBzbm1wX2FwaS5oLCBzeXN0ZW0uaCk6CiAgICAgIC0gYWRkZWQgREVCVUdQT0lEKG5hbWUsIG5hbWVsZW4pOwogICAgICAtIG1vdmVkIERFQlVHUCBkZWZpbml0aW9uIGludG8gc25tcF9hcGkuaCB3aGVyZSBpdCBiZWxvbmdzLgoKaGFyZGFrZXIgIDEgSnVsIDk4IDE1OjU3OjUzCiAgICAtIChzbm1wdHJhcGQuYywgc25tcHRyYXBkX2hhbmRsZXJzLmMpOgogICAgICAtIGZpeCBleHRlbnNpYmxpdHkgY2hlY2tpbmcgb2Ygb2lkcy4KICAgICAgLSBzZXBlcmF0ZSBydW5uaW5nIG9mIGV4dGVybmFsIGNvbW1hbmQgaW50byBuZXcgZnVuY3Rpb24uCgpoYXJkYWtlciAgOCBKdWwgOTggMTI6MjY6MjUKICAgIC0gKGZyZWVic2QyLmgpOiB1c2UgX1VUTVBfUEFUSCBpZiBhdmFpbGFibGUuCgpoYXJkYWtlciAgOCBKdWwgOTggMTI6MjY6MzQKICAgIC0gKGlyaXguaCk6IGRlZmluZSBfS01FTVVTRVIKCmhhcmRha2VyICA4IEp1bCA5OCAxMjoyNzoxMgogICAgLSAod2luMzIub3B0LCBsaWJzbm1wLmRzcCwgbGlic25tcC5wbGcsIGxpYnNubXAuZGVmLCBsaWJzbm1wX2RsbC5wbGcsCiAgICAgIHNubXBidWxrd2Fsay5kc3AsIHNubXBidWxrd2Fsay5wbGcsIHNubXBnZXQuZHNwLCBzbm1wZ2V0LnBsZywKICAgICAgc25tcGdldG5leHQuZHNwLCBzbm1wZ2V0bmV4dC5wbGcsIHNubXBzZXQuZHNwLCBzbm1wc2V0LnBsZywKICAgICAgc25tcHN0YXR1cy5kc3AsIHNubXBzdGF0dXMucGxnLCBzbm1wdHJhbnNsYXRlLmRzcCwKICAgICAgc25tcHRyYW5zbGF0ZS5wbGcsIHNubXB3YWxrLmRzcCwgc25tcHdhbGsucGxnKTogUGF0Y2ggZnJvbSBKb2UKICAgICAgTWFyem90OgogICAgICAtIHdpbjMyIHVwZGF0ZS4KCmhhcmRha2VyICA4IEp1bCA5OCAxMjozNDoyNgogICAgLSAoc3RydWN0LmgsIHV0aWxfZnVuY3MuYywgdXRpbF9mdW5jcy5oLCBwYXNzLXBlcnNpc3QuYywKICAgICAgcGFzcy1wZXJzaXN0LmgpOiBQYXRjaCBmcm9tIE1pY2hhZWwgRG91Z2xhc3M6CiAgICAgIC0gY3JlYXRlIGEgcGFzcy1wZXJzaXN0IG1vZHVsZSB0byBoYW5kbGUgY29udGludW91c2x5IHJ1bm5pbmcgcGFzcyB0aHJvdWdocy4KCmhhcmRha2VyICA4IEp1bCA5OCAxMjo1Njo0NgogICAgLSAocmVhZF9jb25maWcuYywgcmVhZF9jb25maWcuaCk6IHJlbW92ZWQgZnJvbSBhZ2VudCBkaXIuCgpoYXJkYWtlciAgOCBKdWwgOTggMTI6NTc6MDYKICAgIC0gKHVjZF9zbm1wLmgpOiBhZGRlZCBwYXNzLXBlcnNpc3QgbW9kdWxlLgoKaGFyZGFrZXIgIDggSnVsIDk4IDEyOjU4OjAzCiAgICAtIChzbm1wX2FwaS5jKTogUGF0Y2ggZnJvbSBKb2UgTWFyem90OgogICAgICAtIGZpeCAibnVtYmVyIG9mIHJldHJpZXMiIGJ1Zy4KICAgICAgLSByZW1vdmUgb2RkIHRpbWVvdXQgY2FsY3VsYXRpb24gY29kZSBmb3IgcmV0cmllcyA+IDMuCgpoYXJkYWtlciAgOCBKdWwgOTggMTM6MDI6MDYKICAgIC0gKGludGVyZmFjZXMuYyk6IG1ha2UgaHBfaW50ZXJmYWNlcyBzdHJ1Y3R1cmUgc3RhdGljLgoKaGFyZGFrZXIgIDggSnVsIDk4IDEzOjAzOjM2CiAgICAtIChzeXN0ZW0uYyk6IGRvbid0IGZyZWUgZW52IHBvaW50ZXJzIHRoYXQgYXJlIGNyZWF0ZWQuCgpoYXJkYWtlciAgOCBKdWwgOTggMTM6MDg6MTgKICAgIC0gKFVDRC1TTk1QLU1JQi50eHQpOiBQYXRjaCBmcm9tIE5pZWxzIEJhZ2dlc2VuOgogICAgICAtIGZpeCBmb3IgbWlzc2luZyBvYmplY3QgaWRlbnRpZmllciBsYWJlbHMuCgpoYXJkYWtlciAgOCBKdWwgOTggMTQ6MDQ6MjIKICAgIC0gKE1ha2VmaWxlLmluLCBNYWtlZmlsZS50b3AsIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBNYWtlZmlsZS5pbiwKICAgICAgLmN2c2lnbm9yZSwgTWFrZWZpbGUuaW4sIGRsbW9kX21pYi5jLCBkbG1vZF9taWIuaCwgZXhhbXBsZS5jLAogICAgICBleGFtcGxlLmgsIGRsbW9kLmMsIGRsbW9kLmgsIE1ha2VmaWxlLmluLCBNYWtlZmlsZS5pbiwKICAgICAgRExNT0QtTUlCLnR4dCwgTWFrZWZpbGUuaW4sIE1ha2VmaWxlLmluKTogUGF0Y2ggZnJvbSBFdWdlbmUKICAgICAgUG9sb3ZuaWtvdjoKICAgICAgLSBuZXcgZGxtb2Qgc2V0LgogICAgICAtIGZpeCBjb25maWd1cmUgc2NyaXB0LgoKaGFyZGFrZXIgIDggSnVsIDk4IDE0OjIwOjQyCiAgICAgLSAoZGxtb2QuYyk6IHVzZSBzbm1wZF8gcmVnaXN0ZXJfcmVhZF9jb25maWcoKSB3cmFwcGVycy4KCmhhcmRha2VyICA4IEp1bCA5OCAxNDo0Mzo1NgogICAgLSAoc25tcF92YXJzLmMpOiBpbmNsdWRlIGZpeGVzLgoKaGFyZGFrZXIgIDggSnVsIDk4IDE0OjQ0OjI1CiAgICAtICh1Y2Rfc25tcC5oKTogcmVtb3ZlZCB1Y2Qtc25tcC9wYXNzX3BlcnNpc3QgZnJvbSBkZWZhdWx0IGluY2x1ZGUgbGlzdC4KCmhhcmRha2VyICA4IEp1bCA5OCAxNDo0NDozNAogICAgLSAocGFzcy5jKTogaW5jbHVkZSBzeXMvd2FpdC5oCgpoYXJkYWtlciAgOCBKdWwgOTggMTQ6NDQ6NDEKICAgIC0gKHZlcnNpb25pbmZvLmMpOiBpbmNsdWRlIHN5c3RlbS5oCgpoYXJkYWtlciAgOCBKdWwgOTggMTQ6NDU6MjIKICAgIC0gKHBhcnNlLmMpOiBpbmNsdWRlIHNubXBfYXBpLmgKCmhhcmRha2VyICA4IEp1bCA5OCAxNDo0NTo0MgogICAgLSAoc25tcF9hcGkuYyk6IGluY2x1ZGUgZml4ZXMuCgpoYXJkYWtlciAgOCBKdWwgOTggMTU6MzE6MzYKICAgIC0gKHNubXB0cmFwZC5jLCBzbm1wdHJhcGRfaGFuZGxlcnMuYyk6IC1XYWxsIGZpeGVzLgoKaGFyZGFrZXIgIDggSnVsIDk4IDE1OjMxOjUwCiAgICAtIChhZ2VudF9yZWFkX2NvbmZpZy5jLCBzbm1wZC5jKTogLVdhbGwgZml4ZXMuCgpoYXJkYWtlciAgOCBKdWwgOTggMTU6NTE6MjgKICAgIHZlcnNpb24gdGFnICggMy42LnByZTEgKQoKaGFyZGFrZXIgMTAgSnVsIDk4IDA5OjQyOjE2CiAgICAtIChzbm1wZC5jKTogd3JvbmcgcGR1IHBvaW50ZXIgZm9yIHNubXB2MmMgdHJhcHMuCgpoYXJkYWtlciAxNSBKdWwgOTggMTU6NDY6MjgKICAgIC0gKHNlZHNjcmlwdC5pbik6IHVzaW5nX21vZHVsZSBjaGFuZ2VzLgoKaGFyZGFrZXIgMTUgSnVsIDk4IDE1OjQ2OjU1CiAgICAtIChtZW1vcnkuaCk6IE1FTVNXQVBNSU5JTVVNIHdhc24ndCBiZWluZyB1c2VkLgoKaGFyZGFrZXIgMTcgSnVsIDk4IDEzOjExOjEwCiAgICAtIChVQ0QtU05NUC1NSUIuaW5jLCBVQ0QtU05NUC1NSUIudHh0KToKICAgICAgLSBjcmVhdGVkIHNtaWNuZyBpbnB1dCBmaWxlLgogICAgICAtIGZpeGVkIHRoZSBVQ0QtU05NUCBtaWIgdG8gZGVhbCB3aXRoIG1vc3Qgc21pYyBlcnJvcnMuCgpoYXJkYWtlciAyMCBKdWwgOTggMTc6MTQ6MjEKICAgIC0gKHNubXBjaGVjay5kZWYpOiB3b3JrIGFyb3VuZCBmb3IgbmV3IG11bHRpLWRlcHRoIG1pYiB0YWJsZXMuLgoKaGFyZGFrZXIgMjIgSnVsIDk4IDE1OjM1OjA3CiAgICAtIChtaWIuYyk6IGRvbid0IGNoYW5nZSBydW5uaW5nIGVudmlyb25tZW50IHZhcmlhYmxlcyB3aXRoIHN0cnRvay4KCmhhcmRha2VyIDIyIEp1bCA5OCAxNjoyMzo0NQogICAgLSAoTWFrZWZpbGUuaW4sIHNlZHNjcmlwdC5pbik6IGZpeCBzZWRzY3JpcHQgaW5jbHVkZXMuCgpoYXJkYWtlciAzMSBBdWcgOTggMTM6MDI6MjcKICAgIC0gKGludGVyZmFjZXMuYyk6IG1pc3NpbmcgcmV0dXJuIG9uIGlmSW5FcnJvcnMgcmVzdWx0cy4KCmhhcmRha2VyIDMxIEF1ZyA5OCAxMzozMjo0MwogICAgLSAoc25tcHRyYXBkLmMpOiBhZGQgYSBibGFuayBsaW5lIHRvIHRoZSBlbmQgb2YgdGhlIHRyYXBkIG91dHB1dCBmb3IgcGFyc2luZy4KCmhhcmRha2VyICAyIFNlcCA5OCAxODo0MzozMAogICAgLSAoVE9ETyk6IGFkZGVkIHNlY3VyaXR5IGNoZWNrcy4KCmhhcmRha2VyICAyIFNlcCA5OCAxODo0NDozOAogICAgLSAoYWNjb25maWcuaCwgY29uZmlnLmguaW4sIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluKToKICAgICAgLSBwZXJzaXN0ZW50IGNvbmZpZyBmaWxlIHF1ZXN0aW9uLgoKaGFyZGFrZXIgIDIgU2VwIDk4IDE4OjQ0OjUzCiAgICAtIChNYWtlZmlsZS5pbik6IHR5cG8uCgpoYXJkYWtlciAgMiBTZXAgOTggMTg6NDc6MTUKICAgIC0gKG1pYi5jLCBtaWIuaCwgcmVhZF9jb25maWcuYywgcmVhZF9jb25maWcuaCk6CiAgICAgIC0gcHJlL3Bvc3QgbWliIGxvYWRpbmcgY29uZmlnIGZpbGVzLgogICAgICAtIGNyZWF0ZSBpbml0X3NubXAoKSB0byB3cmFwIG90aGVyIGZ1Y3Rpb25zLgogICAgICAtIG5ldyBzbm1wLmNvbmYgZGlyZWN0aXZlczogbWlicywgbWliZGlycywgbWliZmlsZS4KCmhhcmRha2VyICAyIFNlcCA5OCAxODo0Nzo0OAogICAgLSAoc25tcF9hcGkuYywgc25tcF9hcGkuaCk6IGluaXRfc25tcCgpLgoKaGFyZGFrZXIgIDIgU2VwIDk4IDE4OjQ4OjI1CiAgICAtIChsaWJzbm1wLmRlZik6IGZpbmRfbW9kdWxlLgoKaGFyZGFrZXIgIDIgU2VwIDk4IDE4OjQ4OjQwCiAgICAtIChzbm1wX3BhcnNlX2FyZ3MuYyk6IHVzZSBpbml0X3NubXAgaW5zdGVhZCBvZiBpbml0X21pYigpLgoKaGFyZGFrZXIgIDIgU2VwIDk4IDE4OjUwOjM0CiAgICAtIChhZ2VudF9yZWFkX2NvbmZpZy5jLCBhZ2VudF9yZWFkX2NvbmZpZy5oLCBzbm1wX3ZhcnMuYywgc25tcGQuYywKICAgICAgc25tcGQuaCk6CiAgICAgIC0gc3VwcG9ydCBtaWItbW9kdWxlIHNodXRkb3duIGZ1bmN0aW9ucy4KICAgICAgLSBkbyBhIG1pbmltYWwgcGVyc2lzdGVudCBjYWNoZSBpbXBsZW1lbnRhdGlvbiBhbmQgcmVhZCBpdCBhdCBzdGFydCB1cC4KICAgICAgLSB0ZXN0IHdpdGggYmVnaW5uaW5ncyAod3JvbmcgcGxhY2UpIG9mIGFnZW50Qm9vdHMgdmFyaWFibGUuCgpuYmEgIDMgU2VwIDk4IDE0OjI5OjAzCiAgICAtIChmaXhwcm9jKTogYWRkZWQgY29tbWVudCB0byB0ZXN0IENWUy4KCmhhcmRha2VyICA5IFNlcCA5OCAxNjoxMjozMgogICAgLSAoKik6IE1lcmdlIGludG8gbWFpbiBicmFuY2ggZnJvbSAzLjUuMSBicmFuY2guCgpoYXJkYWtlciAgOSBTZXAgOTggMTY6NTU6MDQKICAgIC0gKHNubXBkLmMpOiBmaXggdHJhcCBzdHVmZiBicm9rZW4gYnkgdGhlIGNvZGUgbWVyZ2UuCgpoYXJkYWtlciAxMSBTZXAgOTggMDk6MjY6NDIKICAgIC0gKCopOiBNZXJnZWQgdGhlIE1UIGNoYW5nZXMgaW50byB0aGUgbWFpbiBicmFuY2guCgpoYXJkYWtlciAxMiBTZXAgOTggMDg6NDY6MDEKICAgIC0gKHNubXBfYXBpLmMpOiBwcm90b3R5cGUgbW92ZSBpbml0X3NubXAoKSBhYm92ZSBpbml0X3NubXBfc2Vzc2lvbi4KCmhhcmRha2VyIDEyIFNlcCA5OCAwODo1MzoyMwogICAgLSAoYWNjb25maWcuaCwgY29uZmlnLmguaW4pOiBtb3ZlIHVuLWNvbmZpZ3VyZWQgZGVmaW5lcyBhYm92ZSBAVE9QQC4KCmhhcmRha2VyIDEyIFNlcCA5OCAwODo1NDoyNAogICAgLSAoY29uZmlndXJlLCBjb25maWd1cmUuaW4pOiBEb24ndCBmb3JjZSBjYyBhbnltb3JlLCBhbGxvdyBnY2MgdG8gZ28gZmlyc3QuCgpoYXJkYWtlciAxMiBTZXAgOTggMDg6NTY6NTEKICAgIC0gKG92L01ha2VmaWxlLmluLCBtaWJzL01ha2VmaWxlLmluKTogUGF0Y2ggZnJvbSBNaWNoYWVsIFNsaWZjYWs6CiAgICAgIC0gcmVtb3ZlIGR1cGxpY2F0ZSBzZWN0aW9ucyBhbHJlYWR5IGRlZmluZWQgaW4gTWFrZWZpbGUudG9wLgoKaGFyZGFrZXIgMTIgU2VwIDk4IDA5OjAyOjM3CiAgICAtIChzbm1wX2FwaS5jKTogUGF0Y2ggZnJvbSBNaWNoYWVsIFNsaWZjYWs6CiAgICAgIC0gYnVnIGZpeCB0byBjaGVjayBmb3IgTlVMTCBzZXNzaW9uIHBvaW50ZXIgYmVmb3JlIHVzaW5nIGl0LgoKaGFyZGFrZXIgMTIgU2VwIDk4IDA5OjA4OjQ2CiAgICAtIChhY2NvbmZpZy5oLCBjb25maWcuaC5pbik6IE1vdmUgQ0FOX1VTRV9OTElTVCB0ZXN0cyBiZWxvdyBhcmNoIC5oIGZpbGVzLgoKaGFyZGFrZXIgMTMgU2VwIDk4IDE4OjI0OjAwCiAgICAtIChzbm1wX2FwaS5jKTogUGF0Y2ggZnJvbSBNaWNoYWVsIFNsaWZjYWs6CiAgICAgIC0gZXhpdCAtPiByZXR1cm4uCgpoYXJkYWtlciAxMyBTZXAgOTggMjA6MTI6MDkKICAgIC0gKHNubXB0YWJsZS5jLCBzbm1wdHJhbnNsYXRlLmMsIG1pYi5jLCBtaWIuaCwgcGFyc2UuYywgcGFyc2UuaCk6CiAgICAgIC0gbWVyZ2UgaW50byBtYWluIGxpbmUgZnJvbSB0aGUgMy02LXByZTEtdHJhbnMgYnJhbmNoLgoKaGFyZGFrZXIgMTMgU2VwIDk4IDIwOjE4OjEwCiAgICAtIChzbm1wX2FwaS5jKTogZGVmaW5lIHVzYWdlIG1pc3BlbGxpbmcgU05NUF9CQURfUEFSU0UgLT4gU05NUEVSUl9CQURfUEFSU0UuCgpoYXJkYWtlciAxMyBTZXAgOTggMjA6MzA6MzgKICAgIC0gKHNubXBfYXBpLmMpOiBwcmV2ZW50IGRvdWJsZSBpbml0X3NubXAoKXMuCgpoYXJkYWtlciAxMyBTZXAgOTggMjE6MDU6MjYKICAgIC0gKFJFQURNRSk6IE5hbWUgYWRkaXRpb24uCgpoYXJkYWtlciAxMyBTZXAgOTggMjE6MDY6NTIKICAgIC0gKG1pYi5jLCByZWFkX2NvbmZpZy5jKTogcmVmaXggdGhlIG5vbi1tYWxsb2NlZCBjb25maWd1cmF0aW9uIHZhcnMuCgpoYXJkYWtlciAxMyBTZXAgOTggMjE6MDk6MzYKICAgIHZlcnNpb24gdXBkYXRlOiAzLjYucHJlMgoKaGFyZGFrZXIgMTQgU2VwIDk4IDEyOjM1OjEwCiAgICAtIChNYWtlZmlsZS5pbik6IFBhdGNoIGZyb20gTWljaGFlbCBTbGlmY2FrOgogICAgICAtIGluc3RhbGwgc25tcF9zZXNzX2FwaS4zLgoKaGFyZGFrZXIgMTQgU2VwIDk4IDEyOjQzOjMyCiAgICAtIChhZ2VudF9yZWFkX2NvbmZpZy5jLCBzbm1wX3ZhcnMuYywgZGxtb2RfbWliLmMsIHV0aWxfZnVuY3MuYywKICAgICAgZHVtbXkuYywgd29tYmF0LmMsIGhyX2RldmljZS5jLCBocl9kaXNrLmMsIGhyX2ZpbGVzeXMuYywKICAgICAgaHJfbmV0d29yay5jLCBocl9wYXJ0aXRpb24uYywgaHJfcHJpbnQuYywgaHJfcHJvYy5jLCBocl9zdG9yYWdlLmMsCiAgICAgIGhyX3N3aW5zdC5jLCBocl9zd3J1bi5jLCBocl9zeXN0ZW0uYywgYXQuYywgaWNtcC5jLCBpbnRlcmZhY2VzLmMsCiAgICAgIGlwLmMsIHNubXBfbWliLmMsIHN5c3RlbS5jLCB0Y3AuYywgdWRwLmMsIHZhcl9yb3V0ZS5jLCBzbm1wX2JncC5jLAogICAgICBzbm1wX29zcGYuYywgc25tcF9yaXAyLmMsIGhwdXguYywgcGFzcy5jLCBwYXNzX3BlcnNpc3QuYywKICAgICAgcmVnaXN0cnkuYywgYWNsX3ZhcnMuYywgYWxhcm0uYywgY29udGV4dF92YXJzLmMsIGV2ZW50LmMsCiAgICAgIHBhcnR5X3ZhcnMuYywgdmlld192YXJzLmMsIHNubXB0cmFwZC5jLCBzbm1wdHJhcGRfaGFuZGxlcnMuYywKICAgICAgc25tcF9hcGkuYywgc25tcF9hcGkuaCk6IFBhdGNoIGZyb20gTWljaGFlbCBTbGlmY2FrOgogICAgICAtIHJlbmFtZSBjb21wYXJlIC0+IHNubXBfb2lkX2NvbXBhcmUoKS4KCmhhcmRha2VyIDE1IFNlcCA5OCAxMzowMjozNAogICAgLSAoaW5ldC5jKTogUGF0Y2ggZnJvbSBNaWNoYWVsIFNsaWZjYWs6CiAgICAgIC0gbWVtb3J5IHJlbGF0ZWQgZml4ZXMuCgpoYXJkYWtlciAxNSBTZXAgOTggMTM6MDc6MDUKICAgIC0gKG1pYi5jKTogLy8gY29tbWVudCAtPiAvKiAqLyBjb21tZW50LgoKaGFyZGFrZXIgMTUgU2VwIDk4IDEzOjA3OjQ1CiAgICAtIChzbm1wX2FwaS5jKTogUGF0Y2ggZnJvbSBNaWNoYWVsIFNsaWZjYWs6CiAgICAgIC0gZml4IGluaXRfc25tcCBjYWxscyBmcm9tIHNlc3Npb24gcm91dGluZXMuCgpoYXJkYWtlciAxOCBTZXAgOTggMTM6MjA6MTEKICAgIC0gKFVDRC1TTk1QLU1JQi50eHQpOiBhZGRlZCB0aGUgRmlsZVRhYmxlIHN1Ym1pdHRlZCBieSBKb25hcyBPbHNzb24uCgpoYXJkYWtlciAxOCBTZXAgOTggMTQ6MDE6NTEKICAgIC0gKHVjZF9zbm1wLmgpOiBhZGQgdGhlIGZpbGUgbWliIG1vZHVsZS4KCmhhcmRha2VyIDE4IFNlcCA5OCAxNDowNDo0MwogICAgLSAoVUNELVNOTVAtTUlCLnR4dCk6IENoYW5nZSBmaWxlIHJldHVybiBjb2RlIGZyb20gVHJ1dGhWYWx1ZSB0bwogICAgICBpbnRlZ2VyIHNpbmNlIDEvMiBkb2VzIG5vdCBmaXQgdGhlIGN1cnJlbnQgMC8xIHJldHVybiBjb2RlIHNjaGVtZS4KCmhhcmRha2VyIDIxIFNlcCA5OCAxMToxMTozOQogICAgLSAoc25tcF92YXJzLmMpOiBmaW5hbGx5IGZpeGVkIHRoZSB3cml0ZV9tZXRob2QncyBmb3IgY3JlYXRpb24gcHJvYmxlbS4KCmhhcmRha2VyIDIzIFNlcCA5OCAxMzowNzowNwogICAgLSAoYWNjb25maWcuaCwgY29uZmlnLmguaW4sIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBwYXJzZS5jKTogTmV3IGZsYWc6CiAgICAgIC0gLS1lbmFibGUtZW9sLXRlcm1pbmF0ZWQtY29tbWVudHMuCgpoYXJkYWtlciAyNSBTZXAgOTggMTc6MDU6NDAKICAgIC0gKHNubXBfYXBpLmMpOiBkb24ndCByZWx5IG9uIHRoZSBnZXRzZXJ2YnluYW1lIHBvaW50ZXIgdG8gc3RheSBhcm91bmQuCgpoYXJkYWtlciAyNSBTZXAgOTggMTc6MTU6MjIKICAgIC0gKHNubXBfYXBpLmMsIHNubXBfYXBpLmgsIHNubXBfY2xpZW50LmMpOiBQYXRjaCBmcm9tIE1pY2hhZWwgU2xpZmNhazoKICAgICAtIFRoZSBDTVUgbGlicmFyeSBoYXMgYW4gb3B0aW1pemF0aW9uIGluIHNubXBfY2xvbmVfcGR1KCkgdGhhdCBkb2VzCiAgICAgICBub3QgY29weSB6ZXJvIGxlbmd0aCBzdHJpbmdzLiAgSSBoYWQgbWVyZ2VkIHRoaXMgaW4gd2l0aCBjaGFuZ2VzCiAgICAgICBtYWRlIGZvciBtdWx0aS10aHJlYWQgc3VwcG9ydC4gIFVuZm9ydHVuYXRlbHksIEkgZGlkIG5vdCBtYWtlIHN1cmUKICAgICAgIHRoZSBjbG9uZWQgUERVIGhhZCBubyBwb2ludGVyIGZvciB0aGlzIGNhc2UuICBPb3BzIQogICAgIC0gQW5vdGhlciBwcm9ibGVtIGluIHNubXBfY2xvbmVfcGR1KCkgd2FzIHRoZSB0ZXN0IGZvciB6ZXJvIGxlbmd0aAogICAgICAgc3RyaW5nIHdhcyBub3QgYmVpbmcgcGVyZm9ybWVkIG9uIHRoZSBmaXJzdCB2YXJiaW5kIGluIHRoZSBjaGFpbi4KCmhhcmRha2VyIDI1IFNlcCA5OCAxNzoyNDoxNgogICAgLSAobWliLmMsIG1pYi5oLCByZWFkX2NvbmZpZy5jLCBzbm1wX2FwaS5jLCBzbm1wX2FwaS5oKTogUGF0Y2ggZnJvbQogICAgICBNaWNoYWVsIFNsaWZjYWs6CiAgICAgIC0gZml4IGNvbXBpbGVyIHdhcm5pbmdzLCBlcnJvcnMuCgpoYXJkYWtlciAyNSBTZXAgOTggMTc6MjU6MTAKICAgIC0gKHNubXB0YWJsZS5jKTogcHJvY2VzcyBhcmdzIGRpcmVjdGx5IGluc3RlYWQgb2YgcmVseWluZyBvbiBnZXRfb3B0KCkuCgpoYXJkYWtlciAyNSBTZXAgOTggMTc6MzM6MDYKICAgIC0gKGNvbmZpZy5oLCB3aW4zMi5kc3csIGxpYnNubXAuZHNwLCBsaWJzbm1wLmRlZiwgbGlic25tcF9kbGwuZHNwLAogICAgICAgc25tcHRhYmxlLmRzcCk6IFBhdGNoIGZyb20gTWljaGFlbCBTbGlmY2FrOgogICAgICAtIHN0dXBpZCBPUyB1cGRhdGUuCgpoYXJkYWtlciAyNSBTZXAgOTggMTc6NTU6NTAKICAgIC0gKE1ha2VmaWxlLmluKTogUGF0Y2ggZnJvbSBNaWNoYWVsIFNsaWZjYWs6CiAgICAgIC0gaW5zdGFsbCBtb3JlIGhlYWRlcnMuCgpoYXJkYWtlciAyNSBTZXAgOTggMTc6NTY6NDMKICAgIC0gKE1ha2VmaWxlLmluKTogZG9uJ3QgaW5zdGFsbCBsaWJzbm1wLmguICBJdCdzIGdvaW5nIHRvIGNoYW5nZSB0b28KICAgICAgbXVjaCBpbiB0aGUgZnV0dXJlLgoKaGFyZGFrZXIgMjUgU2VwIDk4IDE4OjAzOjI3CiAgICAtIChNYWtlZmlsZS5pbik6IGluc3RhbGwgdmVyc2lvbi5oLCBhbmQgc3RyaXAgaW5jbHVkZXMgb3V0IG9mIGNvbmZpZy5oCgpoYXJkYWtlciAyNSBTZXAgOTggMTg6MDQ6MTEKICAgIC0gKHNubXBfYXBpLmMpOiByZW1vdmUgdW5uZWVkZWQgY29tbWVudC1vdXQuCgpoYXJkYWtlciAyNSBTZXAgOTggMTg6MTQ6MjAKICAgIC0gKGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCB1dGlsX2Z1bmNzLmMpOiB1c2UgVVNMRUVQIGlmIGF2YWlsYWJsZSBmb3IKICAgICAgc21hbGwgc2xlZXAgdGltZXMgd2hpbGUgd2FpdGluZyBmb3IgcHJvY2Vzc2VzIHRvIGZpbmlzaC4KCmhhcmRha2VyIDMwIFNlcCA5OCAxNDo1NzoxMQogICAgLSAoQ2hhbmdlTG9nLCBFWEFNUExFLmNvbmYuZGVmLCBORVdTLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwKICAgICAgaW50ZXJmYWNlcy5jLCBtZW1vcnkuYywgc25tcHRlc3QuYywgc25tcHRyYXAuYywgcGFyc2UuYyk6CiAgICAgIC0gbWVyZ2UgMy41LjMgY2hhbmdlcyBpbnRvIG1haW4gdHJ1bmsuCgpoYXJkYWtlciAgNSBPY3QgOTggMTY6NTM6MjMKICAgIC0gKGR1bW15LmMsIGR1bW15LmgpOiB1cGRhdGUgdG8gcmVtb3ZlIGNvbW1vbl9oZWFkZXIuaAoKaGFyZGFrZXIgIDUgT2N0IDk4IDE3OjAzOjM0CiAgICAtIChocl9wcm9jLmMpOiBwb3NzaWJsZSBmaXggZm9yIHNvbGFyaXMncyBwcm9jZXNzIHBlcmNlbnRhZ2UuCgpoYXJkYWtlciAgNiBPY3QgOTggMTU6MTg6MDMKICAgIC0gKHZhcl9yb3V0ZS5jKTogaGFjayBmaXhlcyBmb3IgaHB1eDEwIGFuZCBydGVudHJ5LgoKaGFyZGFrZXIgIDYgT2N0IDk4IDE1OjE4OjE2CiAgICAtIChocHV4LmgpOiBoYWNrIGZpeGVzIGZvciBocHV4MTAgYW5kIHJ0ZW50cnkuCgpoYXJkYWtlciAgNiBPY3QgOTggMTU6MTg6NTUKICAgIC0gKGNvbmZpZy5oLmluKTogc2V0dXAgZGVmaW5lIGZvciBIQVZFX1VTTEVFUC4KCmhhcmRha2VyICA2IE9jdCA5OCAxNTozNDo1OAogICAgLSAocmVtb3ZlLWZpbGVzKTogdXBkYXRlLgoKaGFyZGFrZXIgIDYgT2N0IDk4IDE1OjM1OjA2CiAgICAtICh2ZXJzaW9udGFnKTogZml4IGZvciBjdnMgMS4xMC4KCmhhcmRha2VyICA2IE9jdCA5OCAxNTozODo0OQogICAgLSAodmVyc2lvbnRhZyk6IHR5cG8uCgpoYXJkYWtlciAgNiBPY3QgOTggMTU6Mzg6NTYKICAgIC0gKHZlcnNpb24uaCBidWctcmVwb3J0IHNlZHNjcmlwdC5pbik6IHZlcnNpb24gdGFnICggMy42LnByZTMgKQoKaGFyZGFrZXIgIDcgT2N0IDk4IDE2OjQ5OjExCiAgICAtIChNYWtlZmlsZS5pbik6IFBhdGNoIGZyb20gTWljaGFlbCBTbGlmY2FrOgogICAgICAtIHByb3Blcmx5IGxvY2F0ZSB2ZXJzaW9uLmggaW4gJChzcmNkaXIpLgoKaGFyZGFrZXIgIDcgT2N0IDk4IDE2OjQ5OjMwCiAgICAtIChNYWtlZmlsZS5pbik6IFBhdGNoIGZyb20gTWljaGFlbCBTbGlmY2FrOgogICAgICAtIGZpeCBtYWtlIGh0bWwuCgpoYXJkYWtlciAgNyBPY3QgOTggMTY6NTA6MjMKICAgIC0gKHBhcnNlLmMpOiBQYXRjaCBmcm9tIE1pY2hhZWwgU2xpZmNhazoKICAgICAgLSByZW1vdmUgdW4tbmVlZGVkIGhlYWRlcnMuCgpoYXJkYWtlciAgNyBPY3QgOTggMTY6NTE6NTYKICAgIC0gKHNubXBfYXBpLmMpOiBmaXggZGVmYXVsdCBwb3J0IHByb2JsZW1zIChhZ2FpbikuCgpoYXJkYWtlciAgNyBPY3QgOTggMTY6NTQ6MzgKICAgIC0gKHNubXBkZWx0YS5jKTogUGF0Y2ggZnJvbSBNaWNoYWVsIFNsaWZjYWs6CiAgICAgIC0gZml4IGV4aXRpbmcgcHJvYmxlbXMgb24gTlQuCgpoYXJkYWtlciAgNyBPY3QgOTggMTc6MDA6NDAKICAgIC0gKGxpYnNubXAuZHNwLCBsaWJzbm1wX2RsbC5kc3ApOiBQYXRjaCBmcm9tIE1pY2hhZWwgU2xpZmNhazoKICAgICAgLSB3aW5OVCBwcm9qZWN0IGZpbGUgdXBkYXRlcy4KCmhhcmRha2VyICA5IE9jdCA5OCAwODowOToxMgogICAgLSAoY29uZmlnLmguaW4sIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluKTogdXNlIHpsaWIgd2hlbiB1c2luZyBycG0gbGlicmFyaWVzLgoKaGFyZGFrZXIgIDkgT2N0IDk4IDIzOjA4OjE4CiAgICAtIChwYXJzZS5jKTogUGF0Y2ggZnJvbSBEYXZlIFNoaWVsZDoKICAgICAgLSBDaGVjayBmb3IgZnVsbHkgcXVhbGlmaWVkIG9pZCBzdGF0ZW1lbnRzLgoKaGFyZGFrZXIgIDkgT2N0IDk4IDIzOjEyOjAyCiAgICAtIChwYXJzZS5jKTogUGF0Y2ggZnJvbSBEYXZlIFNoaWVsZDoKICAgICAgLSBzdXBwb3J0IGZvciBzdHJpY3QgKGNhc2Ugc2Vuc2l0aXZlKSBvcHRpb24gdG8gdGhlIG1pYiBjb21waWxlci4KCmhhcmRha2VyICA5IE9jdCA5OCAyMzoyMDoyNQogICAgLSAoRkFRKTogRGF2ZSBTaGllbGQgZXhwbGFpbnMgaW4gd29uZGVyb3VzIGRldGFpbCBhbGwgYWJvdXQgdGhlIFZBQ00gbW9kdWxlLgoKaGFyZGFrZXIgMTQgT2N0IDk4IDA5OjE3OjAyCiAgICAtIChFWEFNUExFLmNvbmYuZGVmKTogY2hhbmdlIHB1YmxpYyBjb21tdW5pdHkgZXhhbXBsZXMgLT4gcHJpdmF0ZS4KCmhhcmRha2VyIDE0IE9jdCA5OCAwOTo0MToxMgogICAgLSAoY29uZmlnLmguaW4sIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluKTogY2hlY2sgZm9yIG1hY2hpbmUvdHlwZXMuaC4KCmhhcmRha2VyIDE0IE9jdCA5OCAwOTo0MTozOAogICAgLSAoaG9zdF9yZXMuaCk6IG5ldC9pbl92YXIuaCBmb3IgZnJlZWJzZDMuCgpoYXJkYWtlciAxNCBPY3QgOTggMDk6NDI6MjAKICAgIC0gKGhyX3N0b3JhZ2UuYyk6IG1hY2hpbmUvdHlwZXMuaCBhbmQgc3lzL3ZtbWV0ZXIuaCBmb3IgZnJlZWJzZDMuCgpoYXJkYWtlciAxNCBPY3QgOTggMDk6NTA6MjYKICAgIC0gKGZyZWVic2QzLmgpOiBkZWZpbmUgZnJlZWJzZDIgYW5kIE1PVU5UX05GUy4KCmhhcmRha2VyIDE0IE9jdCA5OCAwOTo1MTo1OAogICAgLSAoZnJlZWJzZDMuaCk6IG9wcHM6ICBkZWZpbmUgTU9VTlRfTkZTIGFzICJuZnMiLgoKaGFyZGFrZXIgMTQgT2N0IDk4IDE2OjQwOjA1CiAgICAtIChzbm1wZC5jKTogLUE6IGFwcGVuZCB0byBsb2cgZmlsZS4KCmhhcmRha2VyIDE0IE9jdCA5OCAxNjo0MTo1MgogICAgLSAoc25tcGQuYyk6IGRvY3VtZW50IC1BLgoKaGFyZGFrZXIgMTQgT2N0IDk4IDE2OjQyOjEwCiAgICAtIChzbm1wZC4xLmRlZik6IGRvY3VtZW50IC1BLgoKaGFyZGFrZXIgMTQgT2N0IDk4IDE2OjQ5OjAzCiAgICAtIChtaWIuYyk6IFBhdGNoIGZyb20gTWljaGFlbCBTbGlmY2FrOgogICAgICAtIGZpeCBmb3IgYnJva2VuIGNvbXBpbGVyIHdhcm5pbmdzIG9uIE5ULgoKaGFyZGFrZXIgMTQgT2N0IDk4IDE2OjUyOjUxCiAgICAtIChtZW1vcnkuYyk6IGZpeCBmb3IgaHB1eDkuCgpoYXJkYWtlciAxNiBPY3QgOTggMDg6Mzg6MzkKICAgIC0gKGF0LmMsIGljbXAuYywgaW50ZXJmYWNlcy5jLCBhaXguaCk6IGFpeCBoZWFkZXIgZmlsZSBmaXhlcy4KCmhhcmRha2VyIDIxIE9jdCA5OCAxMDo1NDo0OQogICAgLSAocGFyc2UuYyk6IFBhdGNoIGZyb20gRGF2ZSBTaGllbGQ6CiAgICAgIC0gRml4IHBhcnNlciB0byBkZWFsIHdpdGggYW5vbnltb3VzIGNoaWxkcmVuIHByb3Blcmx5LgoKaGFyZGFrZXIgMjEgT2N0IDk4IDExOjA4OjU2CiAgICAtIChocl9maWxlc3lzLmMpOiBQYXRjaCBmcm9tIERhdmUgU2hpZWxkOgogICAgICAtIHdhdGNoIG91dCBmb3IgZW1wdHkgZmlsZSBuYW1lcyBwYXNzZWQgaW4uCgpoYXJkYWtlciAyMSBPY3QgOTggMTc6MDE6MTIKICAgIC0gKC5jdnNpZ25vcmUsIE1ha2VmaWxlLmluLCByZWFkX2NvbmZpZy4zLmRlZik6CiAgICAgIC0gbmV3IHVucHJvb2ZyZWFkIG1hbnVhbCBvbiB0aGUgcmVhZF9jb25maWcgYXBpIChtb3N0IG9mIGl0KS4KCmhhcmRha2VyIDIzIE9jdCA5OCAwNzo1NzoxNwogICAgLSAoaHJfZmlsZXN5cy5jKTogUGF0Y2ggZnJvbSBEYXZlIFNoaWVsZDoKICAgICAgLSBOVUxMIGNoZWNraW5nIG9uIHRoZSBmaWxlc3lzdGVtIG1vdW50IHBvaW50LgoKaGFyZGFrZXIgMjMgT2N0IDk4IDEzOjU0OjExCiAgICAtIChNYWtlZmlsZS5pbik6IGluc2VydCBAIHNpZ24uCgpoYXJkYWtlciAyMyBPY3QgOTggMTM6NTQ6NDcKICAgIC0gKGF0LmMsIGljbXAuYywgaW50ZXJmYWNlcy5jKTogYnVnIGZpeGVzLCBtaXNzaW5nICNlbmRpZi4KCmhhcmRha2VyIDIzIE9jdCA5OCAxMzo1NjowOQogICAgLSAodGttaWIpOiBlZGl0YWJsZSBvaWQgZmllbGQuCgpoYXJkYWtlciAyMyBPY3QgOTggMTM6NTk6NDQKICAgIC0gKGFjY29uZmlnLmgsIGNvbmZpZy5oLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwKICAgICAgYWdlbnRfcmVhZF9jb25maWcuYywgYWdlbnRfcmVhZF9jb25maWcuaCwgc25tcGQuYywgd29tYmF0LmgsCiAgICAgIHN5c3RlbS5oLCB2YWNtX3ZhcnMuaCwgZGxtb2QuYywgZGlzay5oLCBleHRlbnNpYmxlLmgsIGZpbGUuaCwKICAgICAgbG9hZGF2ZS5oLCBtZW1vcnkuaCwgbWVtb3J5X2ZyZWVic2QyLmgsIHBhc3MuaCwgcGFzc19wZXJzaXN0LmgsCiAgICAgIHByb2MuaCwgc25tcF9wYXJzZV9hcmdzLmMsIHNubXB0cmFwZC5jLCBtaWIuYywgcmVhZF9jb25maWcuYywKICAgICAgcmVhZF9jb25maWcuaCk6CiAgICAgIC0gbmV3IG9wdGlvbiAtSCBvbiBjb21tYW5kIGxpbmUgdG8gcHJpbnQgb3V0IC5jb25mIGZpbGUgZGlyZWN0aXZlcwogICAgICAgIHRoYXQgdGhlIGFwcGxpY2F0aW9uIHVuZGVyc3RhbmRzLgogICAgICAtIGNyZWF0ZWQgYSBuZXcgb3B0aW9uIHRvIHRoZSByZWFkIGNvbmZpZyByZWdpc3RyYXRpb24gdG8gYWxsb3cKICAgICAgICBzcGVjaWZ5aW5nIG9mIGEgaGVscCBsaW5lLgoKaGFyZGFrZXIgIDYgTm92IDk4IDE3OjIzOjQ2CiAgICAtIChzbm1wZC5jKTogZml4IHYyIHRyYXAgZ2VuZXJhdGlvbi4KCmhhcmRha2VyICA2IE5vdiA5OCAxNzo0NDo0MwogICAgLSAoc25tcGQuYyk6IHYyIHRyYXAgc2VuZCBkZWJ1Z2dpbmcuCgpoYXJkYWtlciAxNiBOb3YgOTggMjI6MTA6MDgKICAgIC0gKHRrbWliKTogdG9vIG1hbnkgaW1wcm92ZW1lbnRzIHRvIGNvdW50LgoKaGFyZGFrZXIgMjMgTm92IDk4IDE1OjQyOjUyCiAgICAtIChpbnRlcmZhY2VzLmMsIGlyaXguaCk6IGZpeCBsb2NhdGlvbiBvZiBfS0VSTkVMIGRlZmluZSBmb3IgaXJpeC4KCmhhcmRha2VyIDIzIE5vdiA5OCAxNjozNTo0MAogICAgLSAoc25tcF9wYXJzZV9hcmdzLmMsIG1pYi5jLCBwYXJzZS5jLCBwYXJzZS5oKTogUGF0Y2ggZnJvbSBNaWNoYWVsIFNsaWZjYWs6CiAgICAgIC0gbWlzYyBwYXJzaW5nIGJ1ZyBmaXhlcy4KICAgICAgLSAtdyAmIC1XIG9wdGlvbnMgdG8gZGVmYXVsdCBhcHBsaWNhdGlvbiBwYXJzZV9hcmdzLgogICAgICAtIHJ1bnRpbWUgb3B0aW9ucyB0byBjb250cm9sIHVuZGVyc2NvcmUgYW5kIGNvbW1lbnQgcGFyc2luZyBpbiBtaWJzLgoKaGFyZGFrZXIgMTMgRGVjIDk4IDA3OjQyOjQ0CiAgICAtIChjb25maWcuaC5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuaW4sIG1pYi5jLCBzbm1wX2FwaS5jKToKICAgICAgLSB1c2Ugc2V0bG9jYWxlKCkgaWYgYXZhaWxhYmxlIHRvIGNvcnJlY3QgaXNwcmludCBwcm9ibGVtcy4KCmhhcmRha2VyIDEzIERlYyA5OCAwNzo0ODo1MwogICAgLSAocGFyc2UuYywgcGFyc2UuaCk6IG5ldyBmdW5jdGlvbnM6IHNubXBfbWliX3RvZ2dsZV9vcHRpb25zKCkgYW5kIHVzYWdlLgoKaGFyZGFrZXIgMTMgRGVjIDk4IDA3OjQ5OjQzCiAgICAtIChzbm1wX3BhcnNlX2FyZ3MuYyk6IC1QIGZsYWcgZm9yIHRvZ2dsaW5nIG5ldyBtaWIgcGFyc2luZyBvcHRpb25zLgoKaGFyZGFrZXIgMTMgRGVjIDk4IDA4OjA2OjMzCiAgICAtIChORVdTKTogYmVnaW5uaW5nIG5vdGVzIGZvciAzLjYuCgpoYXJkYWtlciAxMyBEZWMgOTggMDg6MDc6MjQKICAgIC0gKGRpc2suYyk6IGZpeCBkaXNrIHNpemUgZXJyb3IgZmxhZyByZXBvcnRpbmcgb24gU29sYXJpcy4KCmhhcmRha2VyIDEzIERlYyA5OCAwODoxMjoxMwogICAgLSAocGFyc2UuYyk6IHNwYWNpbmcgaW4gbWliIG9wdGlvbiB1c2FnZSBmaXhlcy4KCmhhcmRha2VyIDEzIERlYyA5OCAwODoxNDo0NAogICAgLSAoc25tcF9wYXJzZV9hcmdzLmMpOiByZW1vdmUgLXcvLVcgZmxhZyBpbiB1c2FnZS4KCmhhcmRha2VyIDEzIERlYyA5OCAwODoxODowNwogICAgLSAoa2VybmVsX3N1bm9zNS5jKTogcmVtb3ZlIGEgZmV3IGRlZmluZXMgdGhhdCB3ZXJlIG1lc3NpbmcgdXAgc29sYXJpcyA3LgoKaGFyZGFrZXIgMTMgRGVjIDk4IDA4OjQxOjU1CiAgICAtIChocl9maWxlc3lzLmMpOiB3YXRjaCBvdXQgZm9yIE5VTEwgZmlsZSBwb2ludGVycy4KCmhhcmRha2VyIDEzIERlYyA5OCAwODo0MjoyMAogICAgLSAoaW5ldC5jKTogaW5pdCBwb2ludGVyIHRvIE5VTEwuCgpoYXJkYWtlciAxMyBEZWMgOTggMDg6NDg6MzgKICAgIC0gKGhyX3N3aW5zdC5jKTogUGF0Y2ggZnJvbSBKZWZmIEpvaG5zb246CiAgICAgIC0gcHJvdGVjdCBhZ2FpbnN0IG1lbW9yeSBsZWFrcyB3aXRoIHRoZSBSUE0gcGFja2FnZSBpbmZvIGNhbGxzLgoKaGFyZGFrZXIgMTMgRGVjIDk4IDA4OjU3OjUyCiAgICAtIChSRUFETUUpOiBhZGRlZCBKZWZmIEpvaG5zb24gdG8gdGhlIGNvbnRyaWJ1dG9ycyBsaXN0LgoKaGFyZGFrZXIgMTMgRGVjIDk4IDA4OjU5OjE2CiAgICAtICh2ZXJzaW9uLmggYnVnLXJlcG9ydCBzZWRzY3JpcHQuaW4pOiB2ZXJzaW9uIHRhZyAoIDMuNi5wcmU1ICkKCmhhcmRha2VyIDE2IERlYyA5OCAwNzozMToyNgogICAgLSAoc25tcF9hcGkuYyk6IFBhdGNoIGZyb20gTWljaGFlbCBTbGlmY2FrOgogICAgICAtIHBvaW50ZXIgY2hlY2tzIGJlZm9yZSBmcmVlaW5nIG1lbW9yeS4KCmhhcmRha2VyIDE4IERlYyA5OCAxMTozNjozOQogICAgLSAoVUNELVNOTVAtTUlCLnR4dCk6IFBhdGNoIGZyb20gTWljaGFlbCBTbGlmY2FrOgogICAgICAtIHR5cG8uCgpoYXJkYWtlciAxOCBEZWMgOTggMTg6MTA6MjQKICAgIC0gKHBhcnNlLmMsIHJlYWRfY29uZmlnLmMsIHJlYWRfY29uZmlnLmgpOgogICAgICAtIGZpeGVzIGZyb20gTWljaGFlbCBTbGlmY2FrLgogICAgICAtIG1pc2MgcmVhZF9jb25maWcgZnVuY3Rpb25zIHB1bGxlZCBpbiBmcm9tIHRoZSB2MyB3b3JrLgoKaGFyZGFrZXIgMTggRGVjIDk4IDE4OjExOjAzCiAgICAtIChsaWJzbm1wLmRlZik6IHVwZGF0ZSBmcm9tIE1pY2hhZWwgU2xpZmNhay4KCmhhcmRha2VyIDE4IERlYyA5OCAxODoxMjo1NAogICAgLSAoc25tcF9wYXJzZV9hcmdzLmMpOiBpbmNsdWRlIHJlYWRfY29uZmlnLmguCgpoYXJkYWtlciAxOCBEZWMgOTggMTg6MTY6MzMKICAgIC0gKGFjY29uZmlnLmgsIGNvbmZpZy5oLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbik6CiAgICAgIC0gc3RvcmUgY29uZmlndXJlIGZsYWdzIHRvIGEgZGVmaW5lLgoKaGFyZGFrZXIgMTggRGVjIDk4IDE4OjE2OjUzCiAgICAtICh2ZXJzaW9uaW5mby5jLCB2ZXJzaW9uaW5mby5oKTogbWliIG9iamVjdCB0byBkaXNwbGF5IGNvbmZpZ3VyZSBvcHRpb25zLgoKaGFyZGFrZXIgMjEgRGVjIDk4IDE4OjE5OjEyCiAgICAtIChmaWxlLmgsIFVDRC1TTk1QLU1JQi50eHQpOiBtb3ZlIHRoZSBmaWxlIG1pYiB0byAuMTUgc28gaXQgZG9lc24ndAogICAgICBjb25mbGljdCB3aXRoIHRoZSBkZW1vIG1pYi4KCmhhcmRha2VyIDIxIERlYyA5OCAxODoyMDoyNQogICAgLSAoc3lzdGVtLmMpOiBQYXRjaCBmcm9tIE1pY2hhZWwgU2xpZmNhazoKICAgICAgLSBXaW4zMiBtZW1vcnkgbGVhayBmaXhlcyBmb3Igb3BlbmRpcigpLCBldGMuCgpoYXJkYWtlciAyMiBEZWMgOTggMDg6NTA6MjkKICAgIC0gKE1ha2VmaWxlLmluKTogZG9uJ3QgY29tcGlsZSBkbG1vZHMKCmhhcmRha2VyIDIyIERlYyA5OCAxNDo1Njo0NAogICAgLSAobWliLmMsIHNubXBfYXBpLmMpOiBQYXRjaCBmcm9tIE1pY2hhZWwgU2xpZmNhazoKICAgICAgLSBmaXggbXkgYnJva2VuIHNldF9sb2NhbGUgc3R1ZmYuCgpoYXJkYWtlciAyNiBEZWMgOTggMTA6MzU6MjMKICAgIC0gKGRsbW9kLmMpOiBQYXRjaCBmcm9tIE1pY2hhZWwgU2xpZmNhazoKICAgICAgLSBmaXggZGxtb2QgY29tcGlsYXRpb24gaW4gc25tcGRfcmVnaXN0ZXJfY29uZmlnX2hhbmRsZXIoKSBjYWxsLgoKaGFyZGFrZXIgMjkgRGVjIDk4IDE2OjU1OjU0CiAgICAtIChtaWIuYyk6IFBhdGNoIGZyb20gTWljaGFlbCBTbGlmY2FrOgogICAgICAtIHJlbW92ZSBuZXdsaW5lcyBmcm9tIHNwcmludF92YWx1ZSgpIHdoZXJlIGFwcGxpY2FibGUuCgpoYXJkYWtlciAyOSBEZWMgOTggMTc6MDI6MzMKICAgIC0gKHZhY20uYyk6IEVuYWJsZSBtdWx0aXBsZSBzaWRlIGJ5IHNpZGUgdmlld3MgaW4gdGhlIHZpZXcgZmFtaWx5CiAgICAgIHRyZWUuICBUaGUgdmlld3MgYWxyZWFkeSBleGlzdGVkLCBidXQgd2VyZW4ndCBjaGVja2VkIGFuZCBvbmx5IHRoZQogICAgICBmaXJzdCB2aWV3IHdhcyBmb3VuZC4KICAgICAgLSBOb3QgZG9uZSBpbiBhIGNsZWFuIGZhc2hpb24uICBNdWNoIG9mIHRoZSBzdHJ1Y3R1cmUgZGVmaW5pdGlvbnMKICAgICAgICBzaG91bGQgYmUgcmV3cml0dGVuIHdpdGggc3ViLXBpZWNlcyB0byBkbyBpdCBwcm9wZXJseSB3aXRoIGdyZWF0ZXIKICAgICAgICBzcGVlZC4KCmhhcmRha2VyIDMxIERlYyA5OCAxNzo0NjoxMQogICAgLSAoZXZlbnQuYyk6IFBhdGNoIGZyb20gRGF2aWQgVGlsbGVyOgogICAgICAtIG1lbWNtcCdzIHNpemVzIHdlcmUgd3JvbmcuCgpoYXJkYWtlciAzMSBEZWMgOTggMTc6NDg6NTcKICAgIC0gKHNubXBfY2xpZW50LmMpOiBQYXRjaCBmcm9tIERhdmlkIFRpbGxlcjoKICAgICAgLSBuZWVkIHRvIHJlYWRfb2JqaWQoKSB0aGUgY29udGV4dCBvaWQgYmFzZSwgbm90IHRoZSBwYXJ0eSBvaWQgYmFzZQogICAgICAgIGluIG9uZSBsb2NhdGlvbi4KCmhhcmRha2VyIDMxIERlYyA5OCAxNzo0OTo1MQogICAgLSAoc25tcF92YXJzLmMpOiBQYXRjaCBmcm9tIERhdmlkIFRpbGxlcjoKICAgICAgLSBvaWRMZW4ncyB3ZXJlIHdyb25nIGZvciBtMm0gb2lkcy4KCmhhcmRha2VyICAyIEphbiA5OSAwODo0ODoyOQogICAgLSAoSUFOQWlmVHlwZS1NSUIudHh0KTogUGF0Y2ggZnJvbSBKYWtvYiBFbGxlcnN0ZWR0OgogICAgICAtIG5ldyBjb21wbGV0ZSBsaXN0IG9mIGlmVHlwZXMuCgpoYXJkYWtlciAgNSBKYW4gOTkgMTA6NDE6NTIKICAgIC0gKHNubXB0YWJsZS5jKTogTWFrZSBmaWVsZCBzZXBhcmF0b3IgdGFrZSBhcmd1bWVudHMgZGlyZWN0bHkgYWZ0ZXIgdGhlIC1mLgoKaGFyZGFrZXIgIDUgSmFuIDk5IDEwOjQ4OjUxCiAgICAtIChzbm1wYnVsa3dhbGsuYywgc25tcGdldC5jLCBzbm1wZ2V0bmV4dC5jLCBzbm1wc2V0LmMsIHNubXBzdGF0dXMuYywKICAgICAgc25tcHRhYmxlLmMsIHNubXB3YWxrLmMpOiBQYXRjaCBmcm9tIG1zbGlmY2FrQGlzcy5uZXQ6CiAgICAgIC0gbWFrZSBtYWluKCkgcmV0dXJuIGFuIGludCBpbnN0ZWFkIG9mIHZvaWQuCgpoYXJkYWtlciAgOSBKYW4gOTkgMjA6Mjg6MjEKICAgIC0gKG1pYi5jLCBwYXJzZS5jLCByZWFkX2NvbmZpZy5jLCBzbm1wX2FwaS5jLCBzbm1wX2FwaS5oLCB2YWNtLmMpOgogICAgICAtIEltcGxlbWVudCB0aGUgbmV3IHRva2VuIGJhc2VkIGRlYnVnZ2luZyBtZXNzYWdlIHN1cHBvcnQuCgpoYXJkYWtlciAgOSBKYW4gOTkgMjA6MzA6MTIKICAgIC0gKHNubXB0YWJsZS5jKTogY2hhbmdlIGludGVybmFsIGRlYnVnIHZhcmlhYmxlIHRvIGxvY2FsZGVidWcuCgpoYXJkYWtlciAgOSBKYW4gOTkgMjA6MzA6NDcKICAgIC0gKHNubXBfcGFyc2VfYXJncy5jKTogbWFrZSAtRCByZWdpc3RlciB0aGUgZGVidWdnaW5nIHRva2VucyBzcGVjaWZpZWQuCgpoYXJkYWtlciAgOSBKYW4gOTkgMjA6NDk6MjkKICAgIC0gKEZBUSwgUkVBRE1FKTogVVJMIGNoYW5nZXMuCgpoYXJkYWtlciAgOSBKYW4gOTkgMjA6NTA6MTUKICAgIC0gKHNubXB0cmFwZC5jLCBzbm1wdHJhcGRfaGFuZGxlcnMuYyk6IHVzZSB0aGUgbmV3IGRlYnVnZ2luZyBmdW5jdGlvbnMuCgpoYXJkYWtlciAgOSBKYW4gOTkgMjA6NTA6MjgKICAgIC0gKGlmLmMsIG1haW4uYyk6IHVzZSB0aGUgbmV3IGRlYnVnZ2luZyBmdW5jdGlvbnMuCgpoYXJkYWtlciAgOSBKYW4gOTkgMjA6NTI6MTAKICAgIC0gKHNubXBfYXBpLmMsIHNubXBfYXBpLmgpOiBERUJVR1BPSUQgcmVwbGFjZW1lbnQ6IERFQlVHTVNHT0lELgoKaGFyZGFrZXIgIDkgSmFuIDk5IDIwOjUyOjIyCiAgICAtIChzbm1wY21kLjEpOiBkaXNjdXNzIC1EIHVzYWdlIGNoYW5nZS4KCmhhcmRha2VyICA5IEphbiA5OSAyMTo1MDoxMwogICAgLSAoYWdlbnQvKi5jKToKICAgICAgLSB1c2UgdGhlIG5ldyBkZWJ1Z2dpbmcgZnVuY3Rpb25zLgogICAgICAtIGltcGxlbWVudCBuZWVkZWQgLUQgZmxhZyBjaGFuZ2VzLgoKaGFyZGFrZXIgMTQgSmFuIDk5IDA5OjAyOjM2CiAgICAtIChtaWIyYyk6IHVwZGF0ZSBmb3IgU05NUC5wbSAxLjguCgpoYXJkYWtlciAxNSBKYW4gOTkgMTE6MTA6MDkKICAgIC0gKHNubXAycC5jKTogUGF0Y2ggZnJvbSBNaWNoYWVsIFNsaWZjYWs6CiAgICAgIC0gcmVtb3ZlIHJldmVyc2VfYnl0ZXMoKSB1c2FnZS4KCmhhcmRha2VyIDE1IEphbiA5OSAxMToxMjoyMgogICAgLSAoc25tcGQuYywgc25tcGQuaCk6CiAgICAgIC0gcmVtb3ZlIHJldmVyc2VfYnl0ZXMoKSB1c2FnZS4KCmhhcmRha2VyIDE1IEphbiA5OSAxNToyNDowMgogICAgLSAoYWdlbnQvbWliZ3JvdXAvKik6CiAgICAgIC0gbWFkZSBhbGwgKG9rLCBzb21lLiAhaG9zdCkgbWliIG1vZHVsZXMgdXNlIHNubXBkX3JlZ2lzdGVyX2NvbmZpZ19oYW5kbGVyKCkuCiAgICAgIC0gbWFkZSBhbGwgKG9rLCBzb21lLiAhaG9zdCkgbWliIG1vZHVsZXMgdXNlIHJlZ2lzdGVyX21pYigpLgoKaGFyZGFrZXIgMTUgSmFuIDk5IDE1OjU4OjIwCiAgICAtIChNYWtlZmlsZS5pbiwgTWFrZWZpbGUuaW4pOiBtYWtlZmlsZWluZGVwZW5kLgoKaGFyZGFrZXIgMTUgSmFuIDk5IDE1OjU4OjUwCiAgICAtICh2YWNtLmMpOiBERUJVR01TRyB0eXBvLgoKaGFyZGFrZXIgMTUgSmFuIDk5IDE2OjE3OjA1CiAgICAtIChzbXV4LmMsIHNtdXguaCk6IFBhdGNoIGZyb20gTmljayBBbWF0bzoKICAgICAgLSBzbXV4IHBhdGNoZXMuCgpoYXJkYWtlciAxNiBKYW4gOTkgMjM6MDQ6MTIKICAgIC0gKHNubXBjbWQuMSk6IHVwZGF0ZWQgLUQgZGVzY3JpcHRpb24uCgpoYXJkYWtlciAxNiBKYW4gOTkgMjM6MTI6MDMKICAgIC0gKHNubXBsaWIvKi5bY2hdKTogUGF0Y2ggZnJvbSBNYXJra3UgTGF1a2thbmVuOgogICAgICAtIGFzbmknaWZ5IGFsbCBmdW5jdGlvbnMuCgpoYXJkYWtlciAxNiBKYW4gOTkgMjM6MTM6MTAKICAgIC0gKHZlcnNpb24uaCBidWctcmVwb3J0IHNlZHNjcmlwdC5pbik6IHZlcnNpb24gdGFnICggMy42LnByZTYgKQoKaGFyZGFrZXIgMTggSmFuIDk5IDEwOjQ3OjM2CiAgICAtIChSRUFETUUsIGFwcHMsIGFnZW50LCBhY2NvbmZpZy5oKTogUGF0Y2ggZnJvbSBNYXJra3UgTGF1a2thbmVuOgogICAgICAtIGFuc2knaWZ5IGV2ZXJ5dGhpbmcuCgpoYXJkYWtlciAxOSBKYW4gOTkgMTk6NTk6NTMKICAgIC0gKGNvbmZpZy5oLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbik6IHJlbW92ZSBfX1AgY2hlY2tpbmcuCgpoYXJkYWtlciAxOSBKYW4gOTkgMjA6MDE6NTkKICAgIC0gKHNubXB0YWJsZS5jLCBtaWIuYywgcGFyc2UuYywgc25tcF9hdXRoLmMsIGxpYnNubXAuZGVmKTogUGF0Y2ggZnJvbQogICAgICBNaWNoYWVsIEouIFNsaWZjYWs6CiAgICAgIC0gYXBwcy9zbm1wdGFibGUuYyAtIHNvbWUgY29tcGlsZXJzIHdhcm4gY29tcGFyaW5nIHBvaW50ZXIgd2l0aCBpbnRlZ2VyCiAgICAgIC0gc25tcGxpYi9taWIuYyAtIGFscmVhZHkgbWVudGlvbmVkIGJlZm9yZTsgaGVyZSBmb3IgY29tcGxldGUtbmVzcwogICAgICAtIHNubXBsaWIvcGFyc2UuYyAtIG1pbm9yIHRvdWNodXAgb2YgaW5jbHVkZXM7IHN5c3RlbS5oIGR1cCByZW1vdmVkCiAgICAgIC0gc25tcGxpYi9zbm1wX2FwaS5oIC0gTVNWaXN1YWwgQysrIGRvZXNuJ3QgaGF2ZSBfX0ZVTkNUSU9OX18KICAgICAgLSBzbm1wbGliL3NubXBfYXV0aC5jIC0gbWlub3IgZml4IG9mIGNvbW1lbnQKICAgICAgLSB3aW4zMi9saWJzbm1wX2RsbC9saWJzbm1wLmRlZiAtIHNubXBfcGFyc2VfYXJncyBuZWVkcyBhIG5ldyBmdW5jdGlvbgoKaGFyZGFrZXIgMjAgSmFuIDk5IDEyOjIwOjA4CiAgICAtIChGQVEpOiBwZXJsLVNOTVAgYW5kIHkyayBxdWVzdGlvbnMgYWRkZWQuCgpoYXJkYWtlciAyMCBKYW4gOTkgMTI6MjE6MzUKICAgIC0gKGFjY29uZmlnLmgpOiB1bm5lZWRlZCBjb21tZW50IHJlbW92ZWQuCgpoYXJkYWtlciAyMCBKYW4gOTkgMTI6MjE6NTcKICAgIC0gKGludGVyZmFjZXMuYyk6IHR5cG8gaW4gYW5zaSBjaGFuZ2VzLgoKaGFyZGFrZXIgMjAgSmFuIDk5IDEyOjI0OjM0CiAgICAtIChhZ2VudF9yZWFkX2NvbmZpZy5jLCBhdXRvX25saXN0LmMsIHNubXBfYWdlbnQuYywgc25tcGQuYywKICAgICAgaG9zdF9yZXMuaCwgbWliaW5jbC5oLCAuY3ZzaWdub3JlLCBzbm1wX3BhcnNlX2FyZ3MuYywgc25tcHRyYXBkLmMsCiAgICAgIHNubXB0cmFwZF9oYW5kbGVycy5jLCBpZi5jLCBNYWtlZmlsZS5pbiwgbWliLmMsIHBhcnNlLmMsCiAgICAgIHJlYWRfY29uZmlnLmMsIHNubXBfYXBpLmMsIHNubXBfYXBpLmgsIHNubXBfZGVidWcuYywgc25tcF9kZWJ1Zy5oLAogICAgICB2YWNtLmMpOiBkZWJ1Z2dpbmcgc3VwcG9ydCBjb2RlIG1vdmVkIHRvIHNubXBfZGVidWcuW2NoXS4KCmhhcmRha2VyIDIwIEphbiA5OSAxNToxMTo1OQogICAgLSAoTWFrZWZpbGUuaW4pOiB2ZXJzaW9uIHRhZyBjcmVhdGlvbi4KCmhhcmRha2VyIDIwIEphbiA5OSAxNToxNDoxMwogICAgLSAoY29uZmlnLmguaW4sIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluKToKICAgICAgLSBjaGVjayBmb3IgYXNtL3BhZ2UuaCAobGludXgpLgogICAgICAtIGNoZWNrIGZvciBzeXMvc3RyZWFtLmggKFNDTykuCiAgICAgIC0gRml4IHJ0ZW50cnkgdGVzdC4KCmhhcmRha2VyIDIwIEphbiA5OSAxNToxNDo0MgogICAgLSAoYWdlbnRfcmVhZF9jb25maWcuYywgc25tcF92YXJzLmMpOiBpbmNsdWRlIHN5cy9zdHJlYW0uaCBmb3IgU0NPLgoKaGFyZGFrZXIgMjAgSmFuIDk5IDE1OjE0OjU4CiAgICAtICh2ZXJzaW9udGFnKTogdmVyc2lvbiB0YWdnaW5nIGFiaWxpdHkgdG8gZG8gbWFueSB0aGluZ3MuCgpoYXJkYWtlciAyMCBKYW4gOTkgMTU6MTY6MzQKICAgIC0gKGF0LmMsIGludGVyZmFjZXMuYywgaXAuYywgcm91dGVfd3JpdGUuYywgdGNwLmMsIHVkcC5jLAogICAgICB2YXJfcm91dGUuYyk6CiAgICAgIC0gc3lzL3N0cmVhbS5oIG5lZWRlZCBieSBTQ08uCiAgICAgIC0gaW50ZXJmYWNlcyBzY2FuIGZpeGVzIGZvciBsaW51eCAyLjAgdnMgMi4xIGNhbiBiZSBjb25maWd1cmVkIGVsc2V3aGVyZSBub3cuCiAgICAgIC0gcHJvdGVjdCBnZXRfYWRkcmVzcyBjYWxscyBhZ2FpbnN0IE5VTEwgcG9pbnRlciByZXR1cm5zLgoKaGFyZGFrZXIgMjAgSmFuIDk5IDE1OjE3OjE3CiAgICAtIChkaXNrLmMsIGVycm9ybWliLmMsIGV4dGVuc2libGUuYywgbG9hZGF2ZS5jLCBtZW1vcnkuYyk6CiAgICAgIC0gbGludXggMi4xIGtlcm5lbCBuZWVkcyBhc20vcGFnZS5oIChhbGwgaW5jbHVkZXMgbmVlZCB0byBiZSByZS13cml0dGVuKS4KCmhhcmRha2VyIDIwIEphbiA5OSAxNToxNzo0MQogICAgLSAobGludXguaCk6IGRlZmluZSBMSU5VWF9JTlRFUkZBQ0VfU0NBTl9MSU5FLgoKaGFyZGFrZXIgMjAgSmFuIDk5IDE1OjIwOjA0CiAgICAtIChNYWtlZmlsZS5pbik6IGluc3RhbGwgdWNkLXNubXAtaW5jbHVkZXMuaC4KCmhhcmRha2VyIDIwIEphbiA5OSAxNToyMjowOAogICAgLSAoTWFrZWZpbGUuaW4pOiBtYWtlIGRlcGVuZC4KCmhhcmRha2VyIDIwIEphbiA5OSAxNToyMjozOAogICAgLSAoRkFRLCBSRUFETUUpOiBhZGRlZCB2ZXJzaW9uIHN0YW1wLgoKaGFyZGFrZXIgMjAgSmFuIDk5IDE1OjMwOjU4CiAgICAtIChDT1BZSU5HKTogSXQncyAxOTk5CgpoYXJkYWtlciAyMCBKYW4gOTkgMTU6MzE6MTMKICAgIC0gKFJFQURNRSk6IGhlbHBpbmcgb3V0IGNoYW5nZXMuCgpoYXJkYWtlciAyMCBKYW4gOTkgMTU6NDg6NTMKICAgIC0gKHNtdXguYyk6IHR5cG8KCmhhcmRha2VyIDIwIEphbiA5OSAxNTo0OTozMAogICAgLSAoaHJfc3dpbnN0KTogI2lmZGVmIFJQTSBwcm90ZWN0IGEgZnJlZSByb3V0aW5lLgoKaGFyZGFrZXIgMjAgSmFuIDk5IDE1OjUwOjE3CiAgICAtIChNYWtlZmlsZS5pbik6IHJlbW92ZSB1Y2Qgc3BlY2lmaWMgbWliIG1vZHVsZSBtYWtlIHJlcXVpcmVtZW50cy4KCmhhcmRha2VyIDIwIEphbiA5OSAxNTo1NDowMgogICAgLSAoc25tcGQuYyk6IGV4cG9ydCBzZGxpc3QgYW5kIHNkbGVuIHZhcmlhYmxlcy4KCmhhcmRha2VyIDIwIEphbiA5OSAxNTo1NDozNgogICAgLSAoc211eC5jKTogZGVidWdnaW5nIGNoYW5nZXMuCgpoYXJkYWtlciAyMCBKYW4gOTkgMTY6NDE6MjAKICAgIC0gKGFjY29uZmlnLmgsIGNvbmZpZy5oLmluLCBzbm1wX3BhcnNlX2FyZ3MuYywgbWFpbi5jLCBzbm1wX2FwaS5jKToKICAgICAgUGF0Y2ggZnJvbSBNaWNoYWVsIFNsaWZjYWs6CiAgICAgIC0gYWxsb3cgemVybyBsZW5ndGggKGxlZ2FsKSBjb21tdW5pdHkgc3RyaW5ncy4KCmhhcmRha2VyIDIwIEphbiA5OSAxNzowMjozNwogICAgLSAoY29uZmlnLmguaW4pOiByYW4gYXV0b2hlYWRlcgoKaGFyZGFrZXIgMjAgSmFuIDk5IDE3OjExOjI2CiAgICAtICh2ZXJzaW9uLmggYnVnLXJlcG9ydCBzZWRzY3JpcHQuaW4pOiB2ZXJzaW9uIHRhZyAoIDMuNi5wcmU3ICkKCmhhcmRha2VyIDIxIEphbiA5OSAwODozOTozNAogICAgLSAoRkFRKTogUGF0Y2ggZnJvbSBNaWNoYWVsIEouIFNsaWZjYWs6CiAgICAgIC0gdHlwbyBvbiBKb2UncyBuYW1lIGZpeGVkLgoKaGFyZGFrZXIgMjEgSmFuIDk5IDA4OjQwOjI2CiAgICAtIChhY2NvbmZpZy5oLCBjb25maWcuaC5pbiwgc25tcF9hcGkuYywgY29uZmlnLmgpOiBQYXRjaCBmcm9tIE1pY2hhZWwKICAgICAgSi4gU2xpZmNhazoKICAgICAgLSBOT19OVUxMX0NPTVVOSVRZIC0+IE5PX1pFUk9MRU5HVEhfQ09NTVVOSVRZLgoKaGFyZGFrZXIgMjEgSmFuIDk5IDA4OjQyOjE3CiAgICAtIChNYWtlZmlsZS5pbik6IHJlbW92ZSB1Y2Qgc3BlY2lmaWMgbW9kdWxlIGRlcGVuZHMuCgpoYXJkYWtlciAyMiBKYW4gOTkgMDc6MjM6MTMKICAgIC0gKHNubXBfYXBpLmMpOiBQYXRjaCBmcm9tIE1pY2hhZWwgU2xpZmNhazoKICAgICAgLSBDaGVjayBmb3IgTlVMTCBvbiBzZXNzaW9uIGNsb3Nlcy4KCmhhcmRha2VyIDI1IEphbiA5OSAxMDoyODowOAogICAgLSAoc25tcGRlbHRhLmMsIHNubXBzdGF0dXMuYywgc25tcHRlc3QuYywgc25tcHRyYXAuYywKICAgICAgc25tcHRyYXBkX2hhbmRsZXJzLmMsIGluZXQuYywgbWFpbi5jKTogUGF0Y2ggZnJvbSBNYXJra3UgTGF1a2thbmVuOgogICAgICAtIG1vcmUgYW5zaSBmaXhlcy4KCmhhcmRha2VyIDI1IEphbiA5OSAxMDoyODoyNgogICAgLSAodmVyc2lvbnRhZyk6IHR5cG8uCgpoYXJkYWtlciAyNSBKYW4gOTkgMTA6Mjg6NDEKICAgIC0gKGxpbnV4LmgpOiAyLjIgZGVmaW5lIHVwZGF0ZS4KCmhhcmRha2VyIDI1IEphbiA5OSAxMDozMzoyNAogICAgLSAoY29udGV4dF9wYXJzZS5jLCBtaWIuYywgcGFyc2UuYywgcmVhZF9jb25maWcuYywgc25tcF9hcGkuYywKICAgICAgc25tcF9jbGllbnQuYywgc3lzdGVtLmMpOiBQYXRjaCBmcm9tIE1hcmtrdSBMYXVra2FuZW46CiAgICAgIC0gYW5zaSBmaXhlcy4KCmhhcmRha2VyIDI1IEphbiA5OSAxMDozNDoxMQogICAgLSAoc3lzdGVtLmMpOiBmaXggc3RyaW5ncy5oIGluY2x1ZGUuCgpoYXJkYWtlciAyNSBKYW4gOTkgMTE6MTE6NDkKICAgIC0gKGFjY29uZmlnLmgsIGNvbmZpZy5oLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbik6CiAgICAgIC0gdGVzdCBpZiBfX0ZVTkNUSU9OX18gaXMgc3VwcG9ydGVkIGJ5IHRoZSBjb21waWxlci4KCmhhcmRha2VyIDI1IEphbiA5OSAxMToxNTo1MwogICAgLSAoYWdlbnRfcmVhZF9jb25maWcuYywgc25tcF92YXJzLmgsIHNubXBkLmMsIGhvc3RfcmVzLmgsIG1pYmluY2wuaCwKICAgICAgZmlsZS5jLCBpbmV0LmMsIHBhcnNlLmMsIHNubXBfZGVidWcuYyk6CiAgICAgIC0gLVdhbGwgZml4ZXMuCgpoYXJkYWtlciAyNSBKYW4gOTkgMTE6MTY6MTYKICAgIC0gKGxpbnV4LmgpOiBjb21tZW50IHR5cG8uCgpoYXJkYWtlciAyNSBKYW4gOTkgMTY6MjU6MzcKICAgIC0gKFJFQURNRSwgUkVBRE1FLm1pYjJjKTogbWliMmMgcmVhZG1lIGZpbGUuCgpoYXJkYWtlciAyNiBKYW4gOTkgMDk6NDU6NDIKICAgIC0gKEVYQU1QTEUuY29uZi5kZWYpOiBjaGFuZ2UgcmVmZXJlbmNlIElQIG5ldCBhZGRyZXNzZXMgdG8gMTAuMTAuMTAuMC4KCmhhcmRha2VyICAyIEZlYiA5OSAxMzozMzoyNQogICAgMjAzNiAtPiAyMDM4CgpoYXJkYWtlciAgMiBGZWIgOTkgMTM6MzQ6MzYKICAgIC0gKHNubXBkLmMpOiB0eXBvOiAtTCAtPiAtQSBpbiBoZWxwIHN0cmluZ3MgZG9jcy4KCmhhcmRha2VyICAyIEZlYiA5OSAyMjowMDoxMwogICAgLSAoRkFRKTogbWVudGlvbiBsYWNrIG9mIHNvbGFyaXMgbWVtb3J5IHN1cHBvcnQuCgpoYXJkYWtlciAgMiBGZWIgOTkgMjI6MDE6MDEKICAgIC0gKFRPRE8pOiBSZW1vdmUgdW5zdXBwb3JlZCBtaWIgbm9kZXMgZnJvbSBvdXRwdXQgaW5zdGVhZCBvZiByZXR1cm5pbmcgMCdzLgoKaGFyZGFrZXIgIDIgRmViIDk5IDIyOjAyOjA0CiAgICAtIChocl9wcm9jLmMpOiB1c2UgWzBdIGluZGV4IG9mIGxvYWQgYXZlcmFnZSB0YWJsZS4KCmhhcmRha2VyICAyIEZlYiA5OSAyMjowMjo0MQogICAgLSAoVUNELVNOTVAtTUlCLnR4dCk6CiAgICAgIC0gbWVudGlvbiB0aGF0IHRoZSBtZW1vcnkgc2VjdGlvbiBpc24ndCBzdXBwb3J0ZWQgb24gYWxsCiAgICAgICAgYXJjaGl0ZWN0dXJlcy4KCmhhcmRha2VyICA4IEZlYiA5OSAxMjoyMToyNQogICAgLSAoc211eC5jKTogUGF0Y2ggZnJvbSBKb2huIFBvbHN0cmE6CiAgICAgIC0gY2FsbCBhY2NlcHQoKSB0byBnZXQgdGhlIHNvY2tldCBmaWxlIGRlc2NyaXB0b3IuCgpoYXJkYWtlciAgOCBGZWIgOTkgMTU6MDg6NTcKICAgIC0gKEZBUSk6IFBhdGNoIGZyb20gTWljaGFlbCBTbGlmY2FrOgogICAgICAtIFRrLnBtIG1lbnRpb24uCgpoYXJkYWtlciAgOCBGZWIgOTkgMTU6MTM6MDEKICAgIC0gKHNubXBkLmMpOiBQYXRjaCBmcm9tIE1pY2hhZWwgU2xpZmNhazoKICAgICAgLSB2YXJpYWJsZSByZW5hbWluZyBpbmRleCAtPiBpaW5kZXguCgpoYXJkYWtlciAgOCBGZWIgOTkgMTU6MTQ6NDIKICAgIC0gKHNubXBkZWx0YS5jKTogUGF0Y2ggZnJvbSBNaWNoYWVsIFNsaWZjYWs6CiAgICAgIC0gdmFyaWFibGUgcmVuYW1pbmcgdGltZSAtPiBtX3RpbWUuCgpoYXJkYWtlciAgOCBGZWIgOTkgMTU6MTc6NTAKICAgIC0gKHJvdXRlLmMpOiBQYXRjaCBmcm9tIE1pY2hhZWwgU2xpZmNhazoKICAgICAgLSB2YXJpYWJsZSByZW5hbWluZyBpbmRleCAtPiBJZkluZGV4LgoKaGFyZGFrZXIgIDggRmViIDk5IDE1OjE4OjA4CiAgICAtIChpbmV0LmMpOiBwcm9wZXIgYnJhY2tldCBpbmRlbnRhdGlvbi4KCmhhcmRha2VyICA4IEZlYiA5OSAxNToxOToyMgogICAgLSAocGFyc2UuYyk6IFBhdGNoIGZyb20gTWljaGFlbCBTbGlmY2FrOgogICAgICAtIHVzZSBzaXplX3QgaW5zdGVhZCBvZiAidW5zaWduZWQiIGZvciB4bWFsbG9jLCBldGMuCgpoYXJkYWtlciAgOCBGZWIgOTkgMTU6MjA6NDcKICAgIC0gKHNubXBfYXBpLmMsIHNubXBfYXBpLmgpOiBQYXRjaCBmcm9tIE1pY2hhZWwgU2xpZmNhazoKICAgICAgLSBtYWtlIHNubXBfb2lkX2NvbXBhcmUgdXNlIGNvbnN0J3MuCgpoYXJkYWtlciAgOCBGZWIgOTkgMjM6MjI6MzMKICAgIC0gKGFnZW50LyopOiBQYXRjaCBmcm9tIE1pY2hhZWwgU2xpZmNhazoKICAgICAgLSB0eXBlZGVmIGFsbCBvZiB0aGUgdmFyX3h4eCBhbmQgd3JpdGUgbWV0aG9kIGZ1bmN0aW9ucy4KCmhhcmRha2VyICA4IEZlYiA5OSAyMzoyMzo0MQogICAgLSAoa2VybmVsX3N1bm9zNS5jLCBtaWJpbmNsLmgpIFBhdGNoIGZyb20gTWljaGFlbCBTbGlmY2FrOgogICAgICAtIGluY2x1ZGUgdXBkYXRlcy4KCmhhcmRha2VyICA5IEZlYiA5OSAxNDoxMDozMwogICAgLSAoTWFrZWZpbGUuaW4pOiBtYWtlIEZBUS5odG1sLgoKaGFyZGFrZXIgIDkgRmViIDk5IDE0OjEwOjUyCiAgICAtIChtaWIyYyk6IHR5cG8uCgpoYXJkYWtlciAgOSBGZWIgOTkgMTQ6MzU6NDYKICAgIC0gKG1pYi5jKTogaW5jcmVhc2UgYnVmZmVyIHNpemUgZm9yIG9pZCBwcmludGluZy4KCmhhcmRha2VyIDExIEZlYiA5OSAxNjoxMDozOQogICAgLSAoKik6IFBhdGNoIGZyb20gTWljaGFlbCBTbGlmY2FrOgogICAgICAtIGNvbnZlcnQgTUFYX05BTUVfTEVOIC0+IE1BWF9PSURfTEVOLgogICAgICAtIGNvbnZlcnQgdGVtcG9yYXJ5IGNoYXJhY3RlciBzdG9yYWdlIGJ1ZmZlcnMgdG8gU1BSSU5UX01BWF9MRU4uCiAgICAgIC0gbWFrZSB0aGUgbGlicmFyaWVzIHByaW50XyBmdW5jdGlvbnMgdXNlIHRoZSBmcHJpbnRfIGZ1bmN0aW9uCiAgICAgICAgYWxyZWFkeSBkZWZpbmVkIGFuZCBwYXNzIGl0IHN0ZG91dC4KCmhhcmRha2VyIDExIEZlYiA5OSAxNjoyMjowMwogICAgLSAoaG9zdF9yZXMuaCk6IGluY2x1ZGUgc25tcF92YXJzLmggYWhlYWQgb2YgdmFyX3N0cnVjdC5oLgoKaGFyZGFrZXIgMTEgRmViIDk5IDE2OjIzOjE2CiAgICAtIChhY2xfcGFyc2UuYywgY29udGV4dF9wYXJzZS5jLCBwYXJ0eV9wYXJzZS5jLCByZWFkX2NvbmZpZy5jLCBzbm1wX2FwaS5jKToKICAgICAgLSBNb3JlIGJ1ZiBzaXplIHN0YW5kYXJkaXphdGlvbnMgdGhhdCBNaWNoYWVsIG1pc3NlZC4KICAgICAgLSBBIGZldyBNQVhfTkFNRV9MRU4gLT4gTUFYX09JRF9MRU4gY29udmVyc2lvbnMgdGhhdCBNaWNoYWVsIG1pc3NlZC4KCmhhcmRha2VyIDExIEZlYiA5OSAxNjozNDowMAogICAgLSAodGNwLmMpOiB2YXJfdGNwRW50cnkgd2FzIGNoZWNraW5nIGFnYWluc3QgdGhlIGluY29taW5nIG9pZCB3aXRoIHRoZQogICAgICB3cm9uZyBsZW5ndGggYW5kIGNvdWxkIHN1Y2NlZWQgYXQgdGltZXMgd2hlbiBpdCBzaG91bGRuJ3QgaGF2ZS4KCmhhcmRha2VyIDExIEZlYiA5OSAxNjo0Njo0OAogICAgLSAodmVyc2lvbi5oIGJ1Zy1yZXBvcnQgc2Vkc2NyaXB0LmluKTogdmVyc2lvbiB0YWcgKCBFeHQtMy02LXByZTggKQoKaGFyZGFrZXIgMTEgRmViIDk5IDE2OjQ4OjA3CiAgICAtICh2ZXJzaW9uLmggYnVnLXJlcG9ydCBzZWRzY3JpcHQuaW4pOiB2ZXJzaW9uIHRhZyAoIDMuNi5wcmU4ICkKCmhhcmRha2VyIDExIEZlYiA5OSAxNjo0ODoyOQogICAgLSAodmVyc2lvbnRhZyk6IHVwZGF0ZS4KCmhhcmRha2VyIDE2IEZlYiA5OSAxNzowNTo0NQogICAgLSAobWliMmMsIG1pYjJjLmNvbmYpOiB1cGRhdGVkIG1pYjJjIHByb2dyYW0uLi4gIHN0aWxsIGluIHByb2dyZXNzLi4uCgpoYXJkYWtlciAxNyBGZWIgOTkgMTU6MTA6MDAKICAgIC0gKGludGVyZmFjZXMuYyk6IFBhdGNoIGZyb20gTWljaGFlbCBMLiBIaXRjaDoKICAgICAgLSBmaXggaWZfbmFtZSB2YXJpYWJsZSBieSBtYWtpbmcgaXQgc3RhdGljLgoKaGFyZGFrZXIgMTcgRmViIDk5IDE1OjEzOjM4CiAgICAtIChzbm1wZC5oKTogUGF0Y2ggZnJvbSBNaWNoYWVsIFNsaWZjYWs6CiAgICAgIC0gcmVtb3ZlIHJldmVyc2VfYnl0ZXMoKSBwcm90b3R5cGUuCgpoYXJkYWtlciAxNyBGZWIgOTkgMTU6MTM6NTgKICAgIC0gKHNubXB0cmFuc2xhdGUuYyk6IFBhdGNoIGZyb20gTWljaGFlbCBTbGlmY2FrOgogICAgICAtIHVzYWdlIGZpeC4KCmhhcmRha2VyIDE3IEZlYiA5OSAxNToxNTo1OQogICAgLSAoaWYuYywgaW5ldC5jLCBtYWluLmMsIG5ldHN0YXQuaCwgcm91dGUuYyk6IFBhdGNoIGZyb20gTWljaGFlbCBTbGlmY2FrOgogICAgICAtIG1ha2Ugc25tcG5ldHN0YXQgd2luMzIgY29tcGF0aWJsZS4KCmhhcmRha2VyIDE3IEZlYiA5OSAxNToxNjoxNwogICAgLSAobWliMmMsIG1pYjJjLmNvbmYpOiB1cGRhdGUgYWdhaW4gZm9yIGJldHRlciBzdGlsbCBvdXRwdXQuCgpoYXJkYWtlciAxNyBGZWIgOTkgMTU6MTc6MTMKICAgIC0gKE1ha2VmaWxlLmluKTogc2VwYXJhdGUgdGFyZ2V0IGZvciBnZW5lcmF0ZWQgbWFudWFsIHBhZ2VzLgoKaGFyZGFrZXIgMTcgRmViIDk5IDE1OjE4OjA2CiAgICAtIChJQU5BaWZUeXBlLU1JQi50eHQpOiBQYXRjaCBmcm9tIE1pY2hhZWwgU2xpZmNhazoKICAgICAgLSB1c2UgYSAnLScgaW5zdGVhZCBvZiBhICcuJyBmb3IgSUVFRTgwMi0xMS4KCmhhcmRha2VyIDE3IEZlYiA5OSAxNToxOTowMwogICAgLSAoYXNuMS5jKTogUGF0Y2ggZnJvbSBNaWNoYWVsIFNsaWZjYWs6CiAgICAgIC0gY29tbWVudCByZWZvcm1hdHRpbmcuCgpoYXJkYWtlciAxNyBGZWIgOTkgMTU6MTk6NTIKICAgIC0gKGNvbnRleHRfcGFyc2UuYyk6IFBhdGNoIGZyb20gTWljaGFlbCBTbGlmY2FrOgogICAgICAtIGRvbid0IHVzZSBhIHZhcmlhYmxlIGNhbGxlZCAndGltZScuICBUc2sgdHNrLgoKaGFyZGFrZXIgMTcgRmViIDk5IDE1OjIxOjI1CiAgICAtIChtaWIuYyk6IFBhdGNoIGZyb20gTWljaGFlbCBTbGlmY2FrOgogICAgICAtIGZpeCBmcHJpbnRfdmFyaWFibGUgdG8gbm90IHJlY3Vyc2UuCgpoYXJkYWtlciAxNyBGZWIgOTkgMTU6MjM6NDQKICAgIC0gKHBhcnNlLmMsIHBhcnR5X3BhcnNlLmMsIHNubXBfYXV0aC5jKTogUGF0Y2ggZnJvbSBNaWNoYWVsIFNsaWZjYWs6CiAgICAgIC0gdmFyaWFibGUgbmFtZSBjb25mbGljdCBmaXhlcy4KCmhhcmRha2VyIDE3IEZlYiA5OSAxNToyODo1NAogICAgLSAoY29uZmlnLmgsIHdpbjMyLmRzdywgbGlic25tcC5kc3AsIGxpYnNubXAuZGVmLCBsaWJzbm1wX2RsbC5kc3AsCiAgICAgIHNubXBuZXRzdGF0LmRzcCwgc25tcHRhYmxlLmRzcCk6IFBhdGNoIGZyb20gTWljaGFlbCBTbGlmY2FrOgogICAgICAtIHdpbjMyIHVwZGF0ZXMuCgpoYXJkYWtlciAxNyBGZWIgOTkgMTY6MTM6NDcKICAgIC0gKHNubXBkLmMsIGR1bW15LmMsIHdvbWJhdC5jLCBzeXN0ZW1fbWliLmMsIHZhY21fdmFycy5jLCBkbG1vZC5jLAogICAgICBkaXNrLmMsIGV4dGVuc2libGUuYywgZmlsZS5jLCBsb2FkYXZlLmMsIG1lbW9yeS5jLAogICAgICBtZW1vcnlfZnJlZWJzZDIuYywgcGFzcy5jLCBwYXNzX3BlcnNpc3QuYywgcHJvYy5jLCBtaWIuYywKICAgICAgcmVhZF9jb25maWcuYyk6IHdvcmQgLT4gdG9rZW4gKCJ3b3JkIiBpcyByZXNlcnZlZCBpbiBzb21lIGNvbXBpbGVycy4KCmhhcmRha2VyIDIyIEZlYiA5OSAwOToxMTo1MgogICAgLSAocGFyc2UuYyk6IFBhdGNoIGZyb20gbXNsaWZjYWtAaXNzLm5ldDoKICAgICAgLSBUaGUgY29tbWFuZCBsaW5lIG9wdGlvbiB0byBzZWxlY3QgImFsbG93IHVuZGVyc2NvcmUgaW4gTUlCCiAgICAgICAgc3ltYm9scyIgaXMgbWlzc2luZy4KCmhhcmRha2VyIDIyIEZlYiA5OSAwOTo0NDoyMQogICAgLSAocGFyc2UuYyk6IFBhdGNoIGZyb20gTWljaGFlbCBTbGlmY2FrOgogICAgICAtIERvbid0IHByaW50ICJjYW4ndCBmaW5kIG1vZHVsZSBYWFgiIG1lc3NhZ2VzIHdpdGhvdXQgd2FybmluZ3MgdHVybmVkIG9uLgoKaGFyZGFrZXIgMjQgRmViIDk5IDE0OjQzOjIxCiAgICAtIChJQU5BaWZUeXBlLU1JQi50eHQpOiB1cGRhdGUuCgpoYXJkYWtlciAyNCBGZWIgOTkgMTc6MTA6MTMKICAgIC0gKGFjY29uZmlnLmgsIGNvbmZpZy5oLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgbGludXguaCk6CiAgICAgIC0gQ2hlY2sgZm9yIGFuZCBoYW5kbGUgMi4yIC9wcm9jL25ldC9kZXYgY2hhbmdlcy4KCmhhcmRha2VyIDI1IEZlYiA5OSAxMDowMzo0MQogICAgLSAoUkVBRE1FLCB1Y2Rfc25tcC5oLCBtZW1vcnlfc29sYXJpczIuYywgbWVtb3J5X3NvbGFyaXMyLmgpOiBQYXRjaAogICAgICBmcm9tIERhdmlkIEYuIE5ld21hbjoKICAgICAgLSBtZW1vcnkgc3VwcG9ydCBmb3Igc29sYXJpczIuCgpoYXJkYWtlciAyNiBGZWIgOTkgMTU6MDI6NTUKICAgIC0gKGxvYWRhdmUuYywgbG9hZGF2ZS5oLCBVQ0QtU05NUC1NSUIudHh0KToKICAgICAgLSBpbXBsZW1lbnQgbG9hZCBhdmVyYWdlIHJlcG9ydGluZyBhcyBhIGludGVnZXIgYW5kIGFzIGEgZmxvYXQuCgpoYXJkYWtlciAyNiBGZWIgOTkgMTU6NDI6MzEKICAgIC0gKG1pYi5jLCBwYXJzZS5jLCBwYXJzZS5oKTogUGF0Y2ggZnJvbSBNaWNoYWVsIFNsaWZjYWs6CiAgICAgIC0gVW5saW5rZWQgT0lEIC4uLiBjY2l0dCAwIGZpeCBjb3VydGVzeSBvZiBEYXZlIFNoaWVsZC4KICAgICAgLSBDb250aW51ZSBhZnRlciByZXNlcnZlZCB3b3JkIGVycm9yIGZpeCBjb3VydGVzeSBvZiBEYXZlIFNoaWVsZC4KICAgICAgLSBNb2RpZmljYXRpb24gdG8gIzIgY291cnRlc3kgb2YgTmllbHMgQmFnZ2VzZW4uCiAgICAgIC0gTW9kaWZpY2F0aW9uIHRvIHByaW50IHN1Yi1pZGVudGlmaWVyID09IDAKICAgICAgLSB2YXJpYWJsZSByZW5hbWluZy4KICAgICAgLSBJbnN0ZWFkIG9mIHJlLW9yZGVyaW5nIGFsbCBzaW5nbHktbGlua2VkIGxpc3RzLCB1c2UgYSBuZXcgbWVtYmVyCiAgICAgICAgdGhhdCBmbGFncyB3aGVuIGEgcmVwb3J0IGhhcyBiZWd1bi4KCmhhcmRha2VyIDI2IEZlYiA5OSAxNjowNjo0OQogICAgLSAoRVhBTVBMRS5jb25mLmRlZik6IHVwZGF0ZSBhbmQgbWFkZSBiZXR0ZXIgZXhhbXBsZXMuCgpoYXJkYWtlciAyNiBGZWIgOTkgMTY6MTA6MjEKICAgIC0gKE5FV1MpOiB1cGRhdGUgZm9yIDMuNiByZWxlYXNlLgoKaGFyZGFrZXIgMjYgRmViIDk5IDE2OjEwOjQ3CiAgICAtIChzbm1wdHJhcGQuYyk6IHVzYWdlIHVwZGF0ZSwgYW5kIC1IIHN1cHBvcnQuCgpoYXJkYWtlciAyNiBGZWIgOTkgMTY6MTE6NDkKICAgIC0gKE1ha2VmaWxlLmluLCByZWFkX2NvbmZpZy4zLmRlZiwgc25tcC5jb25mLjUuZGVmLCBzbm1wX2NvbmZpZy41LmRlZiwKICAgICAgc25tcGQuY29uZi41LmRlZiwgc25tcHRyYXBkLjgsIHNubXB0cmFwZC5jb25mLjUuZGVmKToKICAgICAgLSBuZXcgZG9jdW1lbnRhdGlvbiBvbiBjb25maWd1cmF0aW9uIGNhcGFiaWxpdGllcy4KCmhhcmRha2VyIDI2IEZlYiA5OSAxNjozMzowOQogICAgLSAodmVyc2lvbi5oIGJ1Zy1yZXBvcnQgc2Vkc2NyaXB0LmluKTogdmVyc2lvbiB0YWcgKCAzLjYucHJlOSApCgpoYXJkYWtlciAgMSBNYXIgOTkgMTA6NDg6MDMKICAgIC0gKFVDRC1TTk1QLU1JQi50eHQpOiB0eXBvOiBmaWxlTWF4IC0+IGZpbGVFcnJvckZsYWcgbmFtZSBjaGFuZ2UuCgpoYXJkYWtlciAgMSBNYXIgOTkgMTI6Mjc6MTIKICAgIC0gKHNubXBkLmMpOiBQYXRjaCBmcm9tIE1pa2UgU2xpZmNhazoKICAgICAgLSByZW5hbWluZyBvZiB2YXJpYWJsZXMgYXdheSBmcm9tIHN5c3RlbSBmdW5jdGlvbiBuYW1lcyAoaW5kZXggLT4gbGluZGV4KS4KCmhhcmRha2VyICAxIE1hciA5OSAxMjoyNzozMAogICAgLSAoZXJyb3JtaWIuYyk6IFBhdGNoIGZyb20gTWlrZSBTbGlmY2FrOgogICAgICAtIHJlbW92ZSBlcnJubyB2YXJpYWJsZS4KCmhhcmRha2VyICAxIE1hciA5OSAxMjoyNzo0NQogICAgLSAoaWYuYyk6IFBhdGNoIGZyb20gTWlrZSBTbGlmY2FrOgogICAgICAtIGZyZWUgdGhlIGludGVyZmFjZSB0YWJsZS4KCmhhcmRha2VyICAxIE1hciA5OSAxMjoyODoxNwogICAgLSAocGFyc2UuYyk6IFBhdGNoIGZyb20gTWlrZSBTbGlmY2FrOgogICAgICAtIHJlbW92ZSBkdXBsaWNhdGUgY2FzZSBlbnRyaWVzLgoKaGFyZGFrZXIgIDEgTWFyIDk5IDEyOjI5OjA1CiAgICAtIChzbm1wX2FwaS5jKTogcHV0IGEgcHJvcGVyICh2b2lkKSBpbnRvIHRoZSBmdW5jdGlvbiBwcm90b3R5cGUuCgpoYXJkYWtlciAgMSBNYXIgOTkgMTI6Mjk6NDUKICAgIC0gKHNubXBfY2xpZW50LmMpOiBQYXRjaCBmcm9tIE1pa2UgU2xpZmNhazoKICAgICAgLSB2YXJpYWJsZSByZW5hbWluZy4KCmhhcmRha2VyICAxIE1hciA5OSAxMjozMDoxOQogICAgLSAoYXNuMS5oKTogUGF0Y2ggZnJvbSBNaWtlIFNsaWZjYWs6CiAgICAgIC0gYWRkZWQgTUlOX09JRF9MRU4gZm9yIGluc3RydWN0aW9uYWwgdXNlIG1vc3RseSAoaXRzIHVudXNlZCkuCgpoYXJkYWtlciAgMSBNYXIgOTkgMTM6MDM6MTUKICAgIC0gKGNvbnRleHRfcGFyc2UuYywgbWliLmMpOiBQYXRjaCBmcm9tIE1pY2hhZWwgU2xpZmNhazoKICAgICAgLSB0eXBlY2FzdGluZyBmb3IgY2VydGFpbiBmdW5jdGlvbnMgdG8gKGNoYXIgKikuCgpoYXJkYWtlciAgMSBNYXIgOTkgMTM6NTk6MTQKICAgIC0gKHNubXBfdmFycy5jLCBzbm1wX3ZhcnMuaCk6IG1ha2UgY29tcGFyZV90cmVlKCkgZ2xvYmFsLgoKaGFyZGFrZXIgIDEgTWFyIDk5IDE0OjA0OjA1CiAgICAtIChzbXV4LmMsIHNtdXguaCk6IFBhdGNoIGZyb20gTmljayBBbWF0bzoKICAgICAgLSBjb21wbGV0ZWx5IHJlLXdyaXR0ZW4gc211eCBtb2R1bGVzLgoKaGFyZGFrZXIgIDEgTWFyIDk5IDE0OjIwOjExCiAgICAtIChzbXV4LmMsIHNtdXguaCk6IDMuNmlmaWVkLgoKaGFyZGFrZXIgIDEgTWFyIDk5IDE2OjEwOjU3CiAgICAtIChhbGFybS5jKTogUGF0Y2ggZnJvbSBNaWNoYWVsIFNsaWZjYWs6CiAgICAgIC0gQ2FzdCB0byBwb2ludGVyIHRvIGludCBtYXkgb3ZlcmZsb3cgdGhlIHJldHVybiBidWZmZXIuCgpoYXJkYWtlciAgMSBNYXIgOTkgMTY6MTE6NDkKICAgIC0gKE1ha2VmaWxlLmluKTogUGF0Y2ggZnJvbSBEYXZpZCBGLiBOZXdtYW46CiAgICAgIC0gcmVtb3ZlZCBhIHRyYWlsaW5nIGJhY2tzbGFzaCB0aGF0IHdhc24ndCBuZWVkZWQuCgpoYXJkYWtlciAgMSBNYXIgOTkgMTY6MTc6MzYKICAgIC0gKG1pYl9hcGkuMywgcmVhZF9jb25maWcuMy5kZWYsIHNubXAuY29uZi41LmRlZiwgc25tcF9jb25maWcuNS5kZWYsCiAgICAgIHNubXBkLjEuZGVmLCBzbm1wZC5jb25mLjUuZGVmLCBzbm1wdGVzdC4xLCBzbm1wdHJhcGQuY29uZi41LmRlZiwKICAgICAgdmFyaWFibGVzLjUpOiBNaWNoYWVsIFNsaWZjYWs6CiAgICAgIC0gc3BlbGwgY2hlY2suCgpoYXJkYWtlciAgMSBNYXIgOTkgMTY6MTk6NTYKICAgIC0gKHNubXAuY29uZi41LmRlZiwgc25tcF9jb25maWcuNS5kZWYsIHNubXBkLjEuZGVmLCBzbm1wdHJhcGQuY29uZi41LmRlZik6CiAgICAgIC0gcmVtb3ZlIHJlZmVyZW5jZSB0byBFQ0UgZGVwdC4KCmhhcmRha2VyICAxIE1hciA5OSAxNjoyMjo0MAogICAgLSAoYXNuMS5oKTogcHV0IGJhY2sgaW4gTUFYX05BTUVfTEVOIHRlbXBvcmFyaWx5LgoKaGFyZGFrZXIgIDEgTWFyIDk5IDE3OjQzOjQ5CiAgICAtIChzbXV4LmMpOgogICAgICAtIGFsbG93IG51bGwgbGVuZ3RoIHBhc3N3b3Jkcy4KICAgICAgLSBjbGVhbiB1cCBkZWJ1Z2dpbmcgb3V0cHV0LgoKaGFyZGFrZXIgIDIgTWFyIDk5IDA4OjQ3OjI5CiAgICAtIChhc24xLmgpOiBQYXRjaCBmcm9tIERhdmUgU2hpZWxkOgogICAgICAtIERvbid0IGRlZmluZSBNQVhfTkFNRV9MRU4gaWYgZGVmaW5lZCBzb21ld2hlcmUgZWxzZS4KCmhhcmRha2VyICAyIE1hciA5OSAxMDo0MjozNAogICAgLSAoc3lzdGVtX21pYi5jLCB2YWNtX3ZhcnMuYywgaXBmd2FjYy5jKTogUGF0Y2ggZnJvbSBNaWNoYWVsIFNsaWZjYWs6CiAgICAgIC0gU3VnZ2VzdGVkIGZpeGVzIHRvIGVsaW1pbmF0ZSBtb3JlIHNoYWRvd2VkIGdsb2JhbCByZWZlcmVuY2VzLgogICAgICAtIGZpeHVwcyBmb3IgcHJvdG90eXBlIFsodm9pZCkgcmVwbGFjaW5nICgpXS4KCmhhcmRha2VyICAyIE1hciA5OSAxMzoyMzo1NwogICAgLSAodmFyX3JvdXRlLmMpOiBkb24ndCByZXR1cm4gYSBwb2ludGVyIHRvIGEgcG9pbnRlci4KCmhhcmRha2VyICAyIE1hciA5OSAxNToxNzo1MwogICAgLSAoYWNjb25maWcuaCwgY29uZmlnLmguaW4sIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBzbm1wX2RlYnVnLmMsCiAgICAgIHNubXBfZGVidWcuaCk6CiAgICAgIC0gbmV3IGZsYWc6ICAtLWRpc2FibGUtZGVidWdnaW5nIHRvIGNvbXBsZXRlbHkgdHVybiBvZmYgaXRzIHN1cHBvcnQuCiAgICAgIC0gcmVuYW1pbmcgb2YgRE9ERUJVRyB0byBTTk1QX0FMV0FZU19ERUJVRy4KICAgICAgLSBjbGVhbiB1cCBvZiB0aGUgY29uZmlndXJlIHNjcmlwdCBvcHRpb25zIGxpc3RlZCwgaW5jbHVkaW5nIHB1dHRpbmcKICAgICAgICBhIGxpc3Qgb2YgYXZhaWxhYmxlIG1vZHVsZXMgZm9yIGNvbXBpbGF0aW9uIGludG8gdGhlIGFnZW50LgoKaGFyZGFrZXIgIDIgTWFyIDk5IDE1OjE4OjU5CiAgICAtIChzbm1wZC5jb25mLjUuZGVmKTogdHlwby4KCmhhcmRha2VyICAyIE1hciA5OSAxNToyMTozNAogICAgLSAoc211eC5jKTogUGF0Y2ggZnJvbSBNaWNoYWVsIFNsaWZjYWs6CiAgICAgIC0gTGludXggY29tcGlsZXMgZGllIGF0IFNPX1JDVlRJTUVPLgogICAgICAtIC1XYWxsIHR5cGUgZml4ZXMuCgpoYXJkYWtlciAgMyBNYXIgOTkgMDg6MjU6MzMKICAgIC0gKFJFQURNRSk6IEFkZGVkIE5pY2suCgpoYXJkYWtlciAgMyBNYXIgOTkgMDg6Mjg6MDUKICAgIC0gKGNvbmZpZ3VyZSk6IHJhbiBhdXRvY29uZi4uLgoKaGFyZGFrZXIgIDMgTWFyIDk5IDExOjQwOjExCiAgICAtIChwcm9jLmMsIHNvbGFyaXMuaCk6IFBhdGNoIGZyb20gQ2hyaXMgSHVnaGVzOgogICAgICAtIFVzZSAvcHJvYyBvbiBzb2xhcmlzLgoKaGFyZGFrZXIgIDMgTWFyIDk5IDE3OjUxOjI2CiAgICAtIChDaGFuZ2VMb2csIEZBUSwgTkVXUywgUE9SVElORywgUkVBRE1FLCBUT0RPLCBidWctcmVwb3J0LCBzbm1wZC5jLAogICAgICBSRUFETUUubWliMmMpOiBlY2UudWNkYXZpcy5lZHUgLT4gdWNkLXNubXAudWNkYXZpcy5lZHUuCgpoYXJkYWtlciAgMyBNYXIgOTkgMTg6MDA6NTEKICAgIC0gKE5FV1MpOiBtZW50aW9uIG5hbWUgY2hhbmdlLgoKaGFyZGFrZXIgIDMgTWFyIDk5IDE4OjAyOjA3CiAgICAtIChORVdTKTogbWVudGlvbiBTTVVYLgoKaGFyZGFrZXIgIDMgTWFyIDk5IDE4OjAyOjIzCiAgICAtICh2ZXJzaW9uLmggYnVnLXJlcG9ydCBzZWRzY3JpcHQuaW4pOiB2ZXJzaW9uIHRhZyAoIDMuNi5wcmUxMCApCgptc2xpZmNhayAgNCBNYXIgOTkgMDQ6MDg6MDEKICAgIAogICAgKHNubXBuZXRzdGF0L2lmLmMpIC0gYWRkIHZvaWQgdG8gZW1wdHkgZm9ybWFsIHBhcmFtZXRlciBsaXN0CgpoYXJkYWtlciAgNCBNYXIgOTkgMDg6MzY6MzkKICAgIC0gKHZlcnNpb250YWcpOiByZXBvc2l0b3J5IG1vdmUuCgpoYXJkYWtlciAgNCBNYXIgOTkgMDg6MzY6NDYKICAgIC0gKFJFQURNRS5zbXV4KTogYWRkIE5pY2suCgpoYXJkYWtlciAgNCBNYXIgOTkgMDk6MDc6MDcKICAgIC0gKGNvbmZpZ3VyZS5pbiwgY29uZmlndXJlKTogZml4IHZvaWQgdGVzdCBmb3IgYW5zaSBjb21waWxlcnMuCgptc2xpZmNhayAgNCBNYXIgOTkgMDk6MjA6MDgKICAgIAogICAgCiAgICAoYWdlbnQvc25tcGQuYywgc25tcGxpYi9zbm1wX2NsaWVudC5jKSA6IHJlbW92ZSBkdXBsaWNhdGUgaW5jbHVkZXMKICAgIAogICAgKGFnZW50L21pYmdyb3VwL3RhcmdldC9zbm1wVGFyZ2V0QWRkckVudHJ5LmMsIGFnZW50L21pYmdyb3VwL3RhcmdldC9zbm1wVGFyZ2V0UGFyYW1zRW50cnkuYywgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvbWVtb3J5X3NvbGFyaXMyLmMsIGFwcHMvc25tcHRyYXBkX2hhbmRsZXJzLmMpIDogY2hhbmdlICIqd29yZCIgdG8gIip0b2tlbiIgdG8gaGVscCBzb21lIGNvbXBpbGVyCgptc2xpZmNhayAgNCBNYXIgOTkgMDk6MjQ6MjYKICAgIAogICAgCiAgICAoTWFrZWZpbGUuaW4pIC0gZmluZCBtaWJkZWZzLmggd2hlbiBub3QgYnVpbGRpbmcgaW4gdGhlIHNvdXJjZSB0cmVlCgpoYXJkYWtlciAgNCBNYXIgOTkgMDk6MzM6MzEKICAgIC0gKGxvYWRhdmUuYyk6IFBhdGNoIGZyb20gQ2hyaXMgSHVnaGVzOgogICAgICAtIGZpeCBsb2FkIGF2ZXJhZ2Ugb24gc29sYXJpcy4KCmhhcmRha2VyICA0IE1hciA5OSAwOTozODoyOAogICAgLSAocmVtb3ZlLWZpbGVzLCBlY2Utc25tcGQuY29uZiwgZml4cHJvYy5jb25mKToKICAgICAgLSByZW1vdmVkIGVjZSBzcGVjaWZpYyBjb25maWcgZmlsZXMgZnJvbSB0aGUgcmVwb3NpdG9yeS4KICAgICAgLSBkb24ndCByZW1vdmUgbG9jYWwvKi5jb25mIGluIHRoZSBmaXJzdCBwbGFjZSBhbnltb3JlLgoKaGFyZGFrZXIgIDQgTWFyIDk5IDA5OjQ2OjM3CiAgICAtIChocl9zd2luc3QuYyk6IFBhdGNoIGZyb20gbXNsaWZjYWtAaXNzLm5ldDoKICAgICAgLSBXaGVuIHRoZSBhZ2VudCBpcyBjb21waWxlZCB3aXRoIEhBVkVfTElCUlBNIHNldCwgeWV0IG5vIGRhdGFiYXNlCiAgICAgICAgaXMgZm91bmQsIGFnZW50IHdpbGwgY29yZS4uLgoKaGFyZGFrZXIgIDQgTWFyIDk5IDEzOjE4OjQ3CiAgICAtIChhY2NvbmZpZy5oLCBjb25maWcuaC5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuaW4pOiByZW1vdmVkIHZvaWQgY2hlY2suCgptc2xpZmNhayAgNCBNYXIgOTkgMTU6MTM6MDAKICAgIAogICAgCiAgICAoaHJfcHJvYy5jLCBsb2FkYXZlLmMpIC0gZml4ZWQgY29yZSBvbiBnZXRsb2FkYXZnIGluIGEgZGlmZmVyZW50IHdheQoKbXNsaWZjYWsgIDQgTWFyIDk5IDE1OjI1OjUzCiAgICAKICAgIChkaXNrLmMpIC0gZXhwbGljaXQgYnJhY2VzIHRvIGF2b2lkIGFtYmlndW91cyBgZWxzZScKCm1zbGlmY2FrICA0IE1hciA5OSAxNToyOToyNAogICAgCiAgICAoaHJfZGlzay5jKSAtIGNvbmRpdGlvbmFsbHkgdXNlIGRlZmluZWQgREtDIGRpc2sgdHlwZXMKCmhhcmRha2VyICA0IE1hciA5OSAxNTo0NTowMgogICAgLSAodXRpbF9mdW5jcy5jLCB1dGlsX2Z1bmNzLmgsIGV4YW1wbGUuYywgc3lzT1JUYWJsZS5jLCBpcGZ3YWNjLmMsCiAgICAgIGRpc2suYywgZXh0ZW5zaWJsZS5jLCBmaWxlLmMsIGxvYWRhdmUuYywgbWVtb3J5LmMsIHByb2MuYywgdm1zdGF0LmMsCiAgICAgIHZtc3RhdF9mcmVlYnNkMi5jKToKICAgICAgLSBjcmVhdGUgYW5kIHVzZSBoZWFkZXJfc2ltcGxlX3RhYmxlIHRvIHJlcGxhY2UgY2hlY2ttaWIoKS4KCmhhcmRha2VyICA0IE1hciA5OSAxNjoxNDoxNgogICAgLSAoUkVBRE1FLnNtdXgpOiBQYXRjaCBmcm9tIE5pY2sgQW1hdG86CiAgICAgIC0gdXBkYXRlLgoKaGFyZGFrZXIgIDQgTWFyIDk5IDE2OjI2OjI2CiAgICAtIChmcmVlYnNkMi5oKTogUGF0Y2ggZnJvbSBOaWNrIEFtYXRvOgogICAgICAtIGZpeGVzIGZvciBkdXBsaWNhdGUgZGVmaW5lcy4KCmhhcmRha2VyICA0IE1hciA5OSAxNjozMjoxNgogICAgLSAobWliMmMpOiBVcGRhdGUgZnJvbSBEYXZlIFNoaWVsZC4KCmhhcmRha2VyICA0IE1hciA5OSAxNjo1MDoxNgogICAgLSAodXRpbF9mdW5jcy5jLCBkdW1teS5jLCBleGFtcGxlLmMsIHdvbWJhdC5jLCB0Y3AuYywgaHB1eC5jLAogICAgICBtZW1vcnkuYywgYWxhcm0uYywgc25tcF9hcGkuYyk6CiAgICAgIC0gbWlzYyBmaXhlcywgLVdhbGwgbW9zdGx5LgoKbXNsaWZjYWsgIDQgTWFyIDk5IDE3OjAwOjUwCiAgICAKICAgIChzeXNPUlRhYmxlLmMpIC0gcmVtb3ZlIHN0YXRpYyB1X2xvbmcgbG9uZ19yZXR1cm4sIGZvciBjb25zaXN0ZW5jeS4KCm1zbGlmY2FrICA0IE1hciA5OSAxNzowNzoxMAogICAgCiAgICAoc29sYXJpcy5oKSAtIHVuZG8gX1NMQVNIX1BST0NfTUVUSE9EXyA6IGFub3RoZXIgdGltZQoKbXNsaWZjYWsgIDQgTWFyIDk5IDE3OjUwOjI5CiAgICAKICAgIFJlcGxhY2UgdXNlcyBvZiBiemVybyB3aXRoIG1lbXNldCwgYmNvcHkgd2l0aCBtZW1jcHkuCiAgICBGaXggcHJvdG90eXBlcy4KCm1zbGlmY2FrICA0IE1hciA5OSAxODoxMTozNwogICAgCiAgICAoc25tcF9hcGkuYykgLSBleHBvc2Ugc25tcF9mcmVlOyBzbm1wX3BkdV9hZGRfdmFyaWFibGUgcmV0dXJucyBwdHIgdG8gdmFyIGZvcgogICAgZnV0dXJlIGltcHJvdmVkIGVycm9yIHJlY292ZXJ5LgoKbXNsaWZjYWsgIDUgTWFyIDk5IDA5OjQwOjExCiAgICAKICAgIEZpeCBXaW4zMiB2ZXJzaW9uIG9mIGdldHRpbWVvZmRheSA6IHR2X3VzZWMgd2FzIG1pbGxpc2VjcyAsIHJldHVybiBub3cgPSAwCgpoYXJkYWtlciAgNSBNYXIgOTkgMTA6MTE6MjkKICAgIC0gKG1pYjJjLCBtaWIyYy5jb25mKTogUGF0Y2ggZnJvbSBEYXZlIFNoaWVsZDoKICAgICAgLSB0aGUgdXNlIG9mICdoZWFkZXJfc2ltcGxlX3RhYmxlJyByYXRoZXIgdGhhbiAnY2hlY2ttaWInCiAgICAgIC0gZXhwbGljaXQgY29tcGFyaXNvbiB3aXRoIE1BVENIX0ZBSUxFRAogICAgICAtIGRvbid0IHNldCBkZWZhdWx0cyBmb3IgJ3dyaXRlX21ldGhvZCcgYW5kICd2YXJfbGVuJwogICAgCQkoc2luY2UgYm90aCAnaGVhZGVyX2dlbmVyaWMnIGFuZCAnY2hlY2ttaWInIGRvIHRoaXMgYW55d2F5KQogICAgICAtIFVzZSBkZWZpbmVkIGNvbnN0YW50cyBmb3IgdmFyaWFibGUgaW5pdGlhbGlzYXRpb24gaW4gdGhlCiAgICAJCXdyaXRlIHJvdXRpbmUgKHNpbWlsYXJseSBpbiB0aGUgbWliMmMuY29uZiBwYXRjaCkKICAgICAgICAgIFtUaGlzIGlzIG9uZSBvZiBteSBob2JieS1ob3JzZXMgd2l0aCBvdXIgc3R1ZGVudHMsIHNvIEkgZG9uJ3QKICAgIAkJIHNlZSB3aHkgInByb2Zlc3Npb25hbCIgcHJvZ3JhbW1lcnMgc2hvdWxkIGJlIGV4ZW1wdCFdCiAgICAKICAgICAgLSBNYWtlIHByb3BlciB1c2Ugb2YgdGhlIHRocmVlLXBoYXNlIG5hdHVyZSBvZiBTRVRzCgpoYXJkYWtlciAgNSBNYXIgOTkgMTA6MjE6MjUKICAgIC0gKEZBUSk6IHVwZGF0ZSBmcm9tIERhdmU6IHJlYXJyYW5naW5nIGFuZCBjbGVhbmluZy4KCmhhcmRha2VyICA1IE1hciA5OSAxMDo0Mjo0MAogICAgLSAoc25tcF9hZ2VudC5jKTogUGF0Y2ggZnJvbSBEYXZlIFNoaWVsZDoKICAgICAgLSBzd2l0Y2ggQ09NTUlUIGFuZCBBQ1RJT04gcGhhc2VzLgoKbXNsaWZjYWsgIDUgTWFyIDk5IDExOjAyOjM0CiAgICAKICAgICh0Y3AuYykgLSBicmVhayBvdXQgb2YgaW5maW5pdGUgbG9vcCB3aGVuIGtsb29rdXAgZmFpbHMuCgpoYXJkYWtlciAgNSBNYXIgOTkgMTU6MTM6MDIKICAgIC0gKGFjY29uZmlnLmgsIGNvbmZpZy5oLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbik6CiAgICAgIC0gcmVtb3ZlIHBlcnNpc3RlbnQgc3RvcmFnZSBpbmZvLCBzaW5jZSBpdHMgbm90IHVzZWQgdGhpcyByZWxlYXNlLgoKaGFyZGFrZXIgIDUgTWFyIDk5IDE1OjMxOjUyCiAgICAtIChzbm1wX2ltcGwuaCk6IGNyZWF0ZSBVTkRPCgpoYXJkYWtlciAgNSBNYXIgOTkgMTU6Mzg6MzIKICAgIC0gKHRrbWliKTogdXBkYXRlLgoKaGFyZGFrZXIgIDUgTWFyIDk5IDE1OjU3OjM2CiAgICAtIChrZXJuZWxfc3Vub3M1LmMsIHdvbWJhdC5jLCBocl9uZXR3b3JrLmMsIHNubXBfbWliLmgsIHN5c3RlbV9taWIuaCwKICAgICAgZGlzay5oLCBlcnJvcm1pYi5oLCBleHRlbnNpYmxlLmgsIGZpbGUuaCwgbWVtb3J5X3NvbGFyaXMyLmgsIHBhc3MuaCwKICAgICAgcHJvYy5oLCByZWdpc3RyeS5oLCB2ZXJzaW9uaW5mby5oKToKICAgICAgLSAtV2FsbCBmaXhlcywgbW9zdGx5IGluaXRfKCkgcm91dGluZXMgZGVjbGFpcmVkIGluIHRoZSBhcHByb3ByaWF0ZSAuaCBmaWxlcy4KCmhhcmRha2VyICA1IE1hciA5OSAxNjowMjowNgogICAgLSAoY29uZmlndXJlLCBjb25maWd1cmUuaW4pOiB1cGRhdGVkIC0taGVscCdzIG1vZHVsZSBsaXN0LgoKaGFyZGFrZXIgIDUgTWFyIDk5IDE2OjEwOjMwCiAgICAtICh2bXN0YXQuaCk6IGRlY2xhaXIgaW5pdF92bXN0YXQoKS4KCmhhcmRha2VyICA1IE1hciA5OSAxNzowODoyMQogICAgLSAoRkFRKTogcmVmZXJlbmNlIEFHRU5UIGRvY3VtZW50LgoKaGFyZGFrZXIgIDUgTWFyIDk5IDE3OjExOjQ4CiAgICAtIChtaWJJSS9zeXN0ZW0uaCk6IHJlbW92ZWQKCmhhcmRha2VyICA1IE1hciA5OSAxNzoxOToxNAogICAgLSAoRkFRLCBORVdTKTogZmluYWwgdXBkYXRlcy4KCgoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKQ2hhbmdlczogVjMuNS4yIC0+IFYzLjUuMwoKaGFyZGFrZXIgMTIgU2VwIDk4IDA5OjAyOjM3CiAgICAtIChzbm1wX2FwaS5jKTogUGF0Y2ggZnJvbSBNaWNoYWVsIFNsaWZjYWs6CiAgICAgIC0gYnVnIGZpeCB0byBjaGVjayBmb3IgTlVMTCBzZXNzaW9uIHBvaW50ZXIgYmVmb3JlIHVzaW5nIGl0LgoKaGFyZGFrZXIgMjAgU2VwIDk4IDExOjQ3OjE3CiAgICAtIChzbm1wX2FnZW50LmMpOiBpZiBhIG1pYiBtb2R1bGUgcmV0dXJucyBhbiBlcnJvciA+IFNOTVBfR0VOX0VSUiwKICAgICAgdHJhbnNsYXRlIHRoZSBlcnJvciB0byBTTk1QX0dFTl9FUlIgZm9yIHYxIHJlcXVlc3RzLgoKaGFyZGFrZXIgMjEgU2VwIDk4IDExOjEzOjE5CiAgICAtIChzbm1wX3ZhcnMuYyk6IGZpbmFsbHkgZml4ZWQgdGhlIHdyaXRlX21ldGhvZCdzIGZvciBjcmVhdGlvbiBwcm9ibGVtLgoKaGFyZGFrZXIgMjUgU2VwIDk4IDE2OjUzOjMxCiAgICAtIChFWEFNUExFLmNvbmYuZGVmKTogdXBkYXRlLgoKaGFyZGFrZXIgMjUgU2VwIDk4IDE3OjAyOjM5CiAgICAtIChjb25maWd1cmUsIGNvbmZpZ3VyZS5pbik6IHBlcmwgZXEgLT4gdGVzdCA9IChvcHBzKS4KCmhhcmRha2VyIDI1IFNlcCA5OCAxNzowODoyNQogICAgLSAocGFyc2UuYyk6IFBhdGNoIGZyb20gTWljaGFlbCBTbGlmY2FrOgogICAgICAtIGNoZWNrIGZvciBhIG51bGwgbmFtZS4KCmhhcmRha2VyIDI1IFNlcCA5OCAxNzo0MjoxMAogICAgLSAocGFyc2UuYyk6IFBhdGNoIGZyb20gSm9lIE1hcnpvdDoKICAgICAgLSB1c2UgYSBtZW1zZXQgdG8gemVybyBvdXQgbmV3IHBvaW50ZXJzIGluc3RlYWQgb2YgZG9pbmcgaXQgYnkgaGFuZC4KCmhhcmRha2VyIDI4IFNlcCA5OCAxMzowOTowNgogICAgLSAoaW50ZXJmYWNlcy5jKTogZG9uJ3QgdXNlIGEgJiBvbiBvc2YzIGZvciBhcnBjb20uYWNfZW5hZGRyLgoKaGFyZGFrZXIgMjggU2VwIDk4IDEzOjA5OjQ1CiAgICAtIChzbm1wX2FwaS5jKTogdHlwZWNhc3QgdGhlIGRlZmF1bHQgY29tbXVuaXR5IHN0cmluZyB0byAodV9jaGFyICopLgoKaGFyZGFrZXIgMjggU2VwIDk4IDE1OjQyOjIxCiAgICAtIChtZW1vcnkuYyk6IC9ldGMvc3dhcGluZm8gLT4gL3Vzci9zYmluL3N3YXBpbmZvIGZvciBocHV4MTAuCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgpDaGFuZ2VzOiBWMy41LjEgLT4gVjMuNS4yCgpoYXJkYWtlciAgOCBTZXAgOTggMDk6MjY6MTMKICAgIC0gKE5FV1MpOiB1cGRhdGUuCgpoYXJkYWtlciAgOCBTZXAgOTggMDk6MzM6MjUKICAgIC0gKENoYW5nZUxvZyk6IHVwZGF0ZSBmb3IgMy41LjEuCgpoYXJkYWtlciAgOCBTZXAgOTggMDk6MzU6NTUKICAgIHZlcnNpb24gdGFnICggMy41LjEgKQoKaGFyZGFrZXIgIDkgU2VwIDk4IDA5OjQ1OjI0CiAgICAtIChNYWtlZmlsZS5pbik6IFB1dCBhbiBAIHNpZ24gaW4gZnJvbnQgb2YgdGhlIGxhc3QgZWNobyBsaW5lLgoKaGFyZGFrZXIgIDkgU2VwIDk4IDA5OjQ2OjM1CiAgICAtIChtZW1vcnkuYywgbWVtb3J5LmgsIG1lbW9yeV9mcmVlYnNkMi5jLCBtZW1vcnlfZnJlZWJzZDIuaCk6CiAgICAgIC0gQ2hhbmdlIGFsbCBpbnN0YW5jZXMgb2YgVVNFRCAtPiBBVkFJTCBzaW5jZSB0aGF0cyByZWFsbHkgd2hhdAogICAgICAgIHdlJ3JlIHJlcG9ydGluZy4KCmhhcmRha2VyICA5IFNlcCA5OCAwOTo1MDoyMgogICAgLSAobWVtb3J5LmMsIG1lbW9yeS5oLCBtZW1vcnlfZnJlZWJzZDIuYywgbWVtb3J5X2ZyZWVic2QyLmgpOgogICAgICAtIGNvcnJlY3Qgd29yayBJIHN0dXBpZGx5IG1hZGUgd2hlbiB0aXJlZC4KCmhhcmRha2VyICA5IFNlcCA5OCAxMTowMDo0NAogICAgLSAoTkVXUyk6IHVwZGF0ZSBmb3IgMy41LjIuCgptYXJ6ICA5IFNlcCA5OCAgMTg6MzE6MDAKICAgIC0gKHNubXB0cmFwLmMsIHNubXB0ZXN0LmMpOiBhZGQgU09DS18gbWFjcm9zIGZvciB3aW4zMiBzdXBwb3J0CgkKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoJCkNoYW5nZXM6IFYzLjUgLT4gVjMuNS4xCgpoYXJkYWtlciAyMiBKdW4gOTggMDk6MTY6MzIKICAgIC0gKG1haW4uYyk6IFBhdGNoIGZyb20gSmVycnkgRy4gRGVMYXBwOgogICAgICAtIGNvbW1lbnRlZCBvdXQgdHJhaWxpbmcgI2VuZGlmIGNvbW1lbnQuCgpoYXJkYWtlciAyNCBKdW4gOTggMTA6MzA6MTkKICAgIC0gKE1ha2VmaWxlLmluKTogbWFuLT5odG1sIG1ha2Ugc3BlY2lmaWNhdGlvbi4KCmhhcmRha2VyIDI0IEp1biA5OCAxMTowODo0MQogICAgLSAoVUNELVNOTVAtTUlCLnR4dCk6IFBhdGNoIGZyb20gTmllbHMgQmFnZ2VzZW46CiAgICAgIC0gc2h1dGRvd24gdHJhcCBzcGVjaWZpY2F0aW9ucy4KICAgICAgLSBtaXNjIG1pYiBmaXhlcy4KCmhhcmRha2VyIDI2IEp1biA5OCAxMDo0MjozMgogICAgLSAoZGlzay5jKTogUGF0Y2ggZnJvbSBNaWNoYWVsIERvdWdsYXNzOgogICAgICAtIGZpeCBjYWxjdWxhdGlvbiBvZiB0b3RhbGRpc2sgYnkgZG9pbmcgYmxvY2sgZGl2aXNpb24gZmlyc3QgdG8KICAgICAgICBwcm90ZWN0IGFnYWluc3QgMzIgYml0IG92ZXJmbG93cy4KCmhhcmRha2VyIDI2IEp1biA5OCAxMDo0NToxNQogICAgLSAoc211eC5jLCBzbm1wX2JncC5jLCBzbm1wX29zcGYuYywgc25tcF9yaXAyLmMsIHNubXBfcmlwMi5oKTogUGF0Y2gKICAgICAgZnJvbSBOaWVscyBCYWdnZXNlbjoKICAgICAgLSBGaXggZm9yIG5ldyBkZWZpbmVzIGFuZCBwcm9wZXIgaGVhZGVyIGluY2x1ZGVzLgoKaGFyZGFrZXIgMjYgSnVuIDk4IDE1OjAzOjM4CiAgICAtIChnZW5lcmljLmgpOiBwdXQgaW4gYSBjb21tZW50IHRvIGtlZXAgY29tcGlsZXJzIGZyb20gY29tcGxhaW5pbmcgdG9vIG11Y2guCgpoYXJkYWtlciAgOCBKdWwgOTggMTI6MjY6MjUKICAgIC0gKGZyZWVic2QyLmgpOiB1c2UgX1VUTVBfUEFUSCBpZiBhdmFpbGFibGUuCgpoYXJkYWtlciAgOCBKdWwgOTggMTI6MjY6MzQKICAgIC0gKGlyaXguaCk6IGRlZmluZSBfS01FTVVTRVIKCmhhcmRha2VyICA4IEp1bCA5OCAxMjoyNzoxMgogICAgLSAod2luMzIub3B0LCBsaWJzbm1wLmRzcCwgbGlic25tcC5wbGcsIGxpYnNubXAuZGVmLCBsaWJzbm1wX2RsbC5wbGcsCiAgICAgIHNubXBidWxrd2Fsay5kc3AsIHNubXBidWxrd2Fsay5wbGcsIHNubXBnZXQuZHNwLCBzbm1wZ2V0LnBsZywKICAgICAgc25tcGdldG5leHQuZHNwLCBzbm1wZ2V0bmV4dC5wbGcsIHNubXBzZXQuZHNwLCBzbm1wc2V0LnBsZywKICAgICAgc25tcHN0YXR1cy5kc3AsIHNubXBzdGF0dXMucGxnLCBzbm1wdHJhbnNsYXRlLmRzcCwKICAgICAgc25tcHRyYW5zbGF0ZS5wbGcsIHNubXB3YWxrLmRzcCwgc25tcHdhbGsucGxnKTogUGF0Y2ggZnJvbSBKb2UKICAgICAgTWFyem90OgogICAgICAtIHdpbjMyIHVwZGF0ZS4KCmhhcmRha2VyICA4IEp1bCA5OCAxMjo1ODowMwogICAgLSAoc25tcF9hcGkuYyk6IFBhdGNoIGZyb20gSm9lIE1hcnpvdDoKICAgICAgLSBmaXggIm51bWJlciBvZiByZXRyaWVzIiBidWcuCiAgICAgIC0gcmVtb3ZlIG9kZCB0aW1lb3V0IGNhbGN1bGF0aW9uIGNvZGUgZm9yIHJldHJpZXMgPiAzLgpoYXJkYWtlciAgOCBKdWwgOTggMTM6MDI6MDYKICAgIC0gKGludGVyZmFjZXMuYyk6IG1ha2UgaHBfaW50ZXJmYWNlcyBzdHJ1Y3R1cmUgc3RhdGljLgoKaGFyZGFrZXIgIDggSnVsIDk4IDEzOjAzOjM2CiAgICAtIChzeXN0ZW0uYyk6IGRvbid0IGZyZWUgZW52IHBvaW50ZXJzIHRoYXQgYXJlIGNyZWF0ZWQuCgpoYXJkYWtlciAgOCBKdWwgOTggMTM6MDg6MTgKICAgIC0gKFVDRC1TTk1QLU1JQi50eHQpOiBQYXRjaCBmcm9tIE5pZWxzIEJhZ2dlc2VuOgogICAgICAtIGZpeCBmb3IgbWlzc2luZyBvYmplY3QgaWRlbnRpZmllciBsYWJlbHMuCgpoYXJkYWtlciAgOCBKdWwgOTggMTQ6NDM6NTYKICAgIC0gKHNubXBfdmFycy5jKTogaW5jbHVkZSBmaXhlcy4KaGFyZGFrZXIgIDggSnVsIDk4IDE0OjQ0OjM0CiAgICAtIChwYXNzLmMpOiBpbmNsdWRlIHN5cy93YWl0LmgKCmhhcmRha2VyICA4IEp1bCA5OCAxNDo0NDo0MQogICAgLSAodmVyc2lvbmluZm8uYyk6IGluY2x1ZGUgc3lzdGVtLmgKCmhhcmRha2VyICA4IEp1bCA5OCAxNDo0NToyMgogICAgLSAocGFyc2UuYyk6IGluY2x1ZGUgc25tcF9hcGkuaAoKaGFyZGFrZXIgIDggSnVsIDk4IDE0OjQ1OjQyCiAgICAtIChzbm1wX2FwaS5jKTogaW5jbHVkZSBmaXhlcy4KCmhhcmRha2VyIDE1IEp1bCA5OCAxNTo0NjoyOAogICAgLSAoc2Vkc2NyaXB0LmluKTogdXNpbmdfbW9kdWxlIGNoYW5nZXMuCgpoYXJkYWtlciAxNSBKdWwgOTggMTU6NDY6NTUKICAgIC0gKG1lbW9yeS5oKTogTUVNU1dBUE1JTklNVU0gd2Fzbid0IGJlaW5nIHVzZWQuCgpoYXJkYWtlciAxNyBKdWwgOTggMTM6MTE6MTAKICAgIC0gKFVDRC1TTk1QLU1JQi5pbmMsIFVDRC1TTk1QLU1JQi50eHQpOgogICAgICAtIGNyZWF0ZWQgc21pY25nIGlucHV0IGZpbGUuCiAgICAgIC0gZml4ZWQgdGhlIFVDRC1TTk1QIG1pYiB0byBkZWFsIHdpdGggbW9zdCBzbWljIGVycm9ycy4KCmhhcmRha2VyIDE3IEp1bCA5OCAxMzoyMjozMgogICAgLSAoUkZDLTEyMTUudHh0KTogY3JlYXRlZCBhbiBlbXB0eSBtaWIgbW9kdWxlIGZvciBpbXBvcnRpbmcgb2YgVFJBUC1UWVBFLgoKaGFyZGFrZXIgMTcgSnVsIDk4IDE2OjU5OjUxCiAgICAtICgqKTogdXBkYXRlIGZvciAzLjUuMS4KCmhhcmRha2VyIDIwIEp1bCA5OCAxNzoxNDoyMQogICAgLSAoc25tcGNoZWNrLmRlZik6IHdvcmsgYXJvdW5kIGZvciBuZXcgbXVsdGktZGVwdGggbWliIHRhYmxlcy4uCgpoYXJkYWtlciAyMiBKdWwgOTggMTU6MzU6MDcKICAgIC0gKG1pYi5jKTogZG9uJ3QgY2hhbmdlIHJ1bm5pbmcgZW52aXJvbm1lbnQgdmFyaWFibGVzIHdpdGggc3RydG9rLgoKaGFyZGFrZXIgMjIgSnVsIDk4IDE2OjIzOjQ1CiAgICAtIChNYWtlZmlsZS5pbiwgc2Vkc2NyaXB0LmluKTogZml4IHNlZHNjcmlwdCBpbmNsdWRlcy4KCmhhcmRha2VyIDI0IEp1bCA5OCAwOToyNTozMwogICAgLSAoZGlzay5jKTogaW5jcmVtZW50IGluZGV4IGJ5IDEgc28gaXQgZG9lc24ndCBzdGFydCBhdCAwLgoKaGFyZGFrZXIgMjQgSnVsIDk4IDEwOjAyOjE0CiAgICAtIChzbm1wZC5jb25mLjUuZGVmKTogdmFyaW91cyBkb2N1bWVuYXRpb24gdXBkYXRlcyBhbmQgbm90ZXMuCgpoYXJkYWtlciAyNCBKdWwgOTggMTA6MDI6MjUKICAgIC0gKHNubXB0cmFuc2xhdGUuMSk6IG5yb2ZmIGVycm9yLgoKaGFyZGFrZXIgMjQgSnVsIDk4IDEwOjI1OjQ0CiAgICAtIChzbm1wdHJhcGQuOCk6IGJyb3VnaHQgdXAgdG8gZGF0ZS4KCmhhcmRha2VyIDI0IEp1bCA5OCAxMjoxMDowNwogICAgLSAoc25tcC5jKTogaW5jbHVkZSBzeXMvc2VsZWN0LmggZm9yIEFJWC4KCmhhcmRha2VyIDI0IEp1bCA5OCAxMjoyNDoyMgogICAgLSAoYWNsLmgsIGFzbjEuaCwgbWQ1LmgsIG1pYi5oLCBwYXJzZS5oLCBzbm1wLmgsIHNubXBfYXBpLmgsCiAgICAgIHNubXBfY2xpZW50LmgsIHNubXBfaW1wbC5oLCB2YWNtLmgsIHZpZXcuaCk6CiAgICAgIC0gcHJvdGVjdCBhZ2FpbnN0IG11bHRpcGxlIGluY2x1c2lvbnMuCgpoYXJkYWtlciAyOSBKdWwgOTggMTM6NDQ6MjIKICAgIC0gKE1ha2VmaWxlLmluKTogbWFrZSBpbnN0YWxsIHNob3VsZCBkbyBhIHJlYWwgbWFrZSBhbGwgZmlyc3QuCgpoYXJkYWtlciAxMiBBdWcgOTggMTU6NTc6MTgKICAgIC0gKHNubXBfdmFycy5jKTogaWZkZWYgZml4ZXMgZm9yIHYycGFydCBtb2R1bGVzLgoKaGFyZGFrZXIgMTIgQXVnIDk4IDE1OjU3OjQyCiAgICAtIChleHRlbnNpYmxlLmMsIHByb2MuYyk6IGZpeGl0IHByb2JsZW1zIHdpdGggYXJyYXkgaW5kZXggd3JvbmcuCgpoYXJkYWtlciAxMiBBdWcgOTggMTU6NTc6NTIKICAgIC0gKGxpYnNubXAuZGVmKTogZmluZF9tb2R1bGUgYWRkZWQuCgpoYXJkYWtlciAxMiBBdWcgOTggMTY6MDU6MjgKICAgIC0gKGNvbmZpZ3VyZSwgY29uZmlndXJlLmluKToKICAgICAgLSBsaWJ3cmFwIGNvbW1hbmQgbGluZSBmaXhlcy4KICAgICAgLSAtLXdpdGgtbGRmbGFncyBjb21tYW5kIGxpbmUgb3B0aW9uIGNyZWF0ZWQuCgpoYXJkYWtlciAxMiBBdWcgOTggMTY6NTU6MzIKICAgIC0gKG1pYl9hcGkuMywgc25tcGQuMS5kZWYsIHZhcmlhYmxlcy41KTogdXBkYXRlcyB0byByZW1vdmUgbWliLnR4dCByZWZlcmVuY2VzLgoKaGFyZGFrZXIgMTIgQXVnIDk4IDE2OjU4OjExCiAgICAtIChhY2NvbmZpZy5oLCBjb25maWcuaC5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuaW4pOgogICAgICAtIGRvbid0IGluY2x1ZGUgbGlicmFyaWVzIHRoYXQgYXJlbid0IG5lZWRlZCBpZiBnZXRob3N0YnluYW1lIGlzbid0IGluIG9uZS4KCmhhcmRha2VyIDEyIEF1ZyA5OCAxNjo1OTo1MAogICAgLSAoc25tcF9pbXBsLmgpOiBQYXRjaCBmcm9tIE1pY2hhZWwgU2xpZmNhazoKICAgICAgLSBmaXggdGhlIEVSUk9SX01TRygpIG1hY3JvIHRvIHVzZSBzbm1wX3NldF9kZXRhaWwuCgpoYXJkYWtlciAxNCBBdWcgOTggMDg6MjE6NDQKICAgIC0gKHNubXBfcGFyc2VfYXJncy5jLCBzbm1wdHJhbnNsYXRlLmMpOiB1c2FnZSBmaXhlcyBhbmQgLW0vLU0gdG8gc25tcHRyYW5zbGF0ZS4KCmhhcmRha2VyIDE0IEF1ZyA5OCAwODo0Mjo0OQogICAgLSAoYXV0b19ubGlzdC5jKTogZml4IGZvciBzdHVwaWQgYWl4IGtlcm5lbHMuCgpoYXJkYWtlciAxNCBBdWcgOTggMDg6NDQ6MDcKICAgIC0gKHVjZF9zbm1wLmgsIG1lbW9yeV9mcmVlYnNkMi5jLCB2bXN0YXRfZnJlZWJzZDIuYyk6IFBhdGNoIGZyb20gSm9uYXMgT2xzc29uOgogICAgICAtIG1ha2UgdGhlIG1lbW9yeSBhbmQgdm1zdGF0IG1vZHVsZSB3b3JrIHVuZGVyIGZyZWVic2QyLgoKaGFyZGFrZXIgMTQgQXVnIDk4IDA4OjQ0OjA3CiAgICBmaWxlIG1lbW9yeV9mcmVlYnNkMi5jIHdhcyBpbml0aWFsbHkgYWRkZWQgb24gYnJhbmNoIEV4dC0zLTUtcGF0Y2hlcy4KCmhhcmRha2VyIDE0IEF1ZyA5OCAwODo0NDowNwogICAgZmlsZSB2bXN0YXRfZnJlZWJzZDIuYyB3YXMgaW5pdGlhbGx5IGFkZGVkIG9uIGJyYW5jaCBFeHQtMy01LXBhdGNoZXMuCgpoYXJkYWtlciAxNCBBdWcgOTggMDg6NDQ6MjkKICAgIC0gKFJFQURNRSk6IEFkZGVkIHR3byBuZXcgbmFtZXMgdG8gdGhlIHRoYW5reW91IGxpc3QuCgpoYXJkYWtlciAxNCBBdWcgOTggMDg6NDQ6MzcKICAgIC0gKHNlZHNjcmlwdC5pbik6IGNvcnJlY3QgaW5jbHVkZSBmaWxlcy4KCmhhcmRha2VyIDE0IEF1ZyA5OCAwODo0NDo1MgogICAgLSAoTWFrZWZpbGUuaW4pOiBDUFAgbmVlZHMgdG8gY2hlY2sgYWdlbnQvbWliZ3JvdXAgZm9yIGhlYWRlcnMuCgpoYXJkYWtlciAxNCBBdWcgOTggMDg6NTI6MzIKICAgIC0gKG1pYi5jLCBwYXJzZS5jKTogUGF0Y2ggZnJvbSBEYXZlIFNoaWVsZDoKICAgICAgLSBhZG9wdCB1bmtub3duIGNoaWxkcmVuIGludG8gdGhlIGNvcnJlY3QgcGxhY2UgaWYgSU1QT1JUUyBhcmUgc2NyZXdlZCB1cC4KCmhhcmRha2VyIDE0IEF1ZyA5OCAwOTozMjo0NQogICAgLSAoc25tcHRyYW5zbGF0ZS5jKTogUGF0Y2ggZnJvbSBKYW1lcyBILiBZb3VuZzoKICAgICAgLSB1c2FnZSBvdXRwdXQgY2xlYW4gdXAuCgpoYXJkYWtlciAxNCBBdWcgOTggMTA6MTM6MTMKICAgIC0gKENPUFlJTkcpOiBjb3B5cmlnaHQgY2hhbmdlLgoKaGFyZGFrZXIgMTQgQXVnIDk4IDEwOjE0OjA2CiAgICAtIChwYXJzZS5jKTogUGF0Y2ggZnJvbSBOaWVscyBCYWdnZXNlbjoKICAgICAgLSBNYWxsb2MgLT4geG1hbGxvYy4KICAgICAgLSBwYXJzZXIgY2hhbmdlcy4KCmhhcmRha2VyIDE0IEF1ZyA5OCAxMDoxNDo1OQogICAgLSAoYXQuYyk6IGZpeGVzIGZvciBsaW51eC4KCmhhcmRha2VyIDMxIEF1ZyA5OCAxMzowMzowMgogICAgLSAoaW50ZXJmYWNlcy5jKTogbWlzc2luZyByZXR1cm4gb24gaWZJbkVycm9ycyByZXN1bHRzLgoKaGFyZGFrZXIgMzEgQXVnIDk4IDEzOjMyOjQzCiAgICAtIChzbm1wdHJhcGQuYyk6IGFkZCBhIGJsYW5rIGxpbmUgdG8gdGhlIGVuZCBvZiB0aGUgdHJhcGQgb3V0cHV0IGZvciBwYXJzaW5nLgoKaGFyZGFrZXIgMzEgQXVnIDk4IDE2OjEwOjI1CiAgICAtIChzbm1wX3ZhcnMuYyk6IGluX2FfdmlldygpOiBjcmVhdGUgbmV3IGZ1bmN0aW9uLCBhbmQgdXNlIGl0LgoKaGFyZGFrZXIgMzEgQXVnIDk4IDE2OjEwOjUwCiAgICAtIChzbm1wX2FnZW50LmMsIHNubXBfaW1wbC5oKTogZml4IHJlYWQvd3JpdGUgY2hlY2tzLgoKaGFyZGFrZXIgMzEgQXVnIDk4IDEzOjAzOjAyCiAgICAtIChpbnRlcmZhY2VzLmMpOiBtaXNzaW5nIHJldHVybiBvbiBpZkluRXJyb3JzIHJlc3VsdHMuCgpoYXJkYWtlciAzMSBBdWcgOTggMTM6MzI6NDMKICAgIC0gKHNubXB0cmFwZC5jKTogYWRkIGEgYmxhbmsgbGluZSB0byB0aGUgZW5kIG9mIHRoZSB0cmFwZCBvdXRwdXQgZm9yIHBhcnNpbmcuCgpoYXJkYWtlciAzMSBBdWcgOTggMTY6MTA6MjUKICAgIC0gKHNubXBfdmFycy5jKTogaW5fYV92aWV3KCk6IGNyZWF0ZSBuZXcgZnVuY3Rpb24sIGFuZCB1c2UgaXQuCgpoYXJkYWtlciAzMSBBdWcgOTggMTY6MTA6NTAKICAgIC0gKHNubXBfYWdlbnQuYywgc25tcF9pbXBsLmgpOiBmaXggcmVhZC93cml0ZSBjaGVja3MuCgpoYXJkYWtlciAzMSBBdWcgOTggMTY6Mzc6MDQKICAgIC0gKENoYW5nZUxvZywgTkVXUyk6IHVwZGF0ZSBmb3IgMy41LjEuCgpoYXJkYWtlciAzMSBBdWcgOTggMTY6Mzc6MTUKICAgIHZlcnNpb24gdGFnICggMy41LjEucHJlMSApCgpoYXJkYWtlciAgMiBTZXAgOTggMTA6NTU6NTIKICAgIC0gKGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCByZWFkX2NvbmZpZy5jLCBzbm1wMnAuYywgc25tcF9hZ2VudC5jLAogICAgICBzbm1wX3ZhcnMuYywgc25tcGQuYywgc25tcGQuaCwgdXRpbF9mdW5jcy5jLCBpbnRlcmZhY2VzLmMsIHN5c3RlbS5oLAogICAgICB0Y3AuYywgc211eC5jLCBzbm1wX2JncC5jLCBzbm1wX2JncC5oLCBzbm1wX29zcGYuYywgc25tcF9vc3BmLmgsCiAgICAgIHNubXBfcmlwMi5jLCBzbm1wX3JpcDIuaCwgZXh0ZW5zaWJsZS5jLCBsb2FkYXZlLmMsCiAgICAgIHNubXBfcGFyc2VfYXJncy5jLCBzbm1wZGVsdGEuYywgc25tcHRyYW5zbGF0ZS5jLCBzbm1wdHJhcC5jLAogICAgICBzbm1wdHJhcGQuYywgaW5ldC5jLCBtYWluLmMsIG5ldHN0YXQuaCwgbWliX2FwaS4zLCBzbm1wX2FwaS4zLAogICAgICBzbm1wZC4xLmRlZiwgZnJlZWJzZC5oLCBmcmVlYnNkMi5oLCBuZXRic2QuaCwgYXNuMS5oLCBtaWIuYywKICAgICAgcGFyc2UuYywgcGFyc2UuaCwgc25tcF9hcGkuYywgc25tcF9hcGkuaCwgc25tcF9jbGllbnQuYyk6IFBhdGNoIGZyb20KICAgICAgTmllbHMgQmFnZ2VzZW46CiAgICAgIC0gcHJvdG90eXBlcywgYXMgdXN1YWwgKHdoZW4gaXMgZXZlcnlib2R5IHN0YXJ0aW5nIHRvIHVzZSAtV2FsbAogICAgICAgIC1Xc3RyaWN0LXByb3RvdHlwZXMgLi4uLikKICAgICAgLSBzbm1wZCBzZW5kIGFuIGVudGVycHJpc2Ugc3BlY2lmaWMgdHJhcCB3aGVuIGl0IHRlcm1pbmF0ZXMKICAgICAgLSBwb3NzaWJpbGl0eSBmb3Igc2VuZGluZyB2MmMgdHJhcHMgKG9yIGluZm9ybXMpLCB2aWEgdHJhcDJzaW5rIGRpcmVjdGl2ZQogICAgICAtIGZpeGVzIHRvIHNubXBsaWIgYW5kIHNubXB0cmFwZCBmb3IgYnVncyB1bmNvdmVyZWQgd2hlbiBzbm1wZCBzZW5kcwogICAgICAgIGFuIElORk9STSBpbnN0ZWFkIG9mIGEgVFJBUAogICAgICAtIC1tIGFuZCAtTSBvcHRpb24gZm9yIHNubXB0cmFwZAogICAgICAtIC1EIG9wdGlvbiBmb3Igc25tcHRyYW5zbGF0ZQogICAgICAtIGZpeGVzIHRvIGNvbmZpZ3VyZSB0byBjb3JyZWN0bHkgY2FsbCBBTEwgbW9kdWxlIGluaXQgZnVuY3Rpb25zCiAgICAgIC0gbWFqb3IgcmV3b3JrIG9mIHRjcC5jLCBmb3IgbmV0YnNkLiBJIGhvcGUgdGhpcyBpcyBPSyBub3csIEkgaGF2ZW50IGhhZAogICAgICAgIHRpbWUgdG8gdGVzdCBpdCBvbiBhbGwgcGxhdGZvcm1zIHlldCAtIGJ1dCB0aWxsIGZyaWRheSA6LSkKICAgICAgLSBzbm1wbmV0c3RhdCBwcmludHMgdWRwIHNvY2tldCB0YWJsZQogICAgICAtIHNvbWUgQ01VX0NPTVBBVElCTEUgc3R1ZmYKICAgICAgLSBtYW4gcGFnZSBmaXhlcywgd2l0aCBhbiBpbmNsdWRlIGxpc3QgdGhhdCB3b3JrcyEKCmhhcmRha2VyICAyIFNlcCA5OCAxMDo1ODoxMAogICAgLSAodGNwLmMpOiBQYXRjaCBmcm9tIERhdmUgU2hpZWxkOgogICAgLSAgQ29tYmluZSB0aGUgdHdvIChhbG1vc3QpIGlkZW50aWNhbCBub24tc29sYXJpcyBjYXNlcwogICAgLSAgQWRkIHN1cHBvcnQgZm9yIHRoZSBtaXNzaW5nIExpbnV4IGVudHJpZXMgKEluRXJycy9PdXRSc3RzKQogICAgLSAgQWRkIHN1cHBvcnQgZm9yIHRoZSBtaXNzaW5nIFNvbGFyaXMgZW50cnkgKE91dFJzdHMpCgpoYXJkYWtlciAgMiBTZXAgOTggMTE6MDM6MzMKICAgIC0gKHRjcC5jKTogcmV2ZXJzZSBEYXZlJ3MgY2hhbmdlcyBzaW5jZSB0aGV5IGNvbmZsaWN0IHdpdGggTmllbHMnLgoKaGFyZGFrZXIgIDIgU2VwIDk4IDEyOjE5OjAzCiAgICAtIChleHRlbnNpYmxlLmMsIHByb2MuYyk6IHVzZSBjb3JyZWN0IG5hbWUgaW5kZXggZm9yIGxvb2t1cHMgb24gd3JpdGVzLgoKaGFyZGFrZXIgIDIgU2VwIDk4IDEyOjE5OjMzCiAgICAtIChzbm1wX2FnZW50LmMpOiBjaGVjayB0byBtYWtlIHN1cmUgb3BlcmF0aW9uIGlzIG5vdCBhIFNFVCB3aGVuCiAgICAgIHJldHVybmluZyBhbiBlcnJvciBjb2RlIHN1Y2ggYXMgbm9TdWNoTmFtZS4KCmhhcmRha2VyICAyIFNlcCA5OCAxNDowNDo0MgogICAgLSAoY29uZmlndXJlLCBjb25maWd1cmUuaW4pOiBkb24ndCBpbmNsdWRlIG1vZHVsZXMgbm90IHJlcXVlc3RlZCBldmVuCiAgICAgIGlmIHJlcXVpcmVkIGJ5IGFub3RoZXIgbW9kdWxlLgoKaGFyZGFrZXIgIDIgU2VwIDk4IDE0OjEwOjUzCiAgICB2ZXJzaW9uIHRhZyAoIDMuNS4xLnByZTIgKQoKaGFyZGFrZXIgIDIgU2VwIDk4IDE4OjQzOjMwCiAgICAtIChUT0RPKTogYWRkZWQgc2VjdXJpdHkgY2hlY2tzLgoKbmJhICAzIFNlcCA5OCAxNDoyOTowMwogICAgLSAoZml4cHJvYyk6IGFkZGVkIGNvbW1lbnQgdG8gdGVzdCBDVlMuCgpoYXJkYWtlciAgNCBTZXAgOTggMTA6MDk6NDcKICAgIC0gKGludGVyZmFjZXMuYyk6IGZpeCBmb3Igc2dpJ3MuCgpoYXJkYWtlciAgNCBTZXAgOTggMTQ6MTQ6MTkKICAgIC0gKGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBNYWtlZmlsZS5pbiwgTWFrZWZpbGUuaW4pOgogICAgICAtIGZpeCB0byBhbGxvdyBub24tc291cmNlIGRpcmVjdG9yeSBidWlsZHMuCgpoYXJkYWtlciAgNyBTZXAgOTggMTA6MTA6MDUKICAgIC0gKGxvYWRhdmUuYyk6IFBhdGNoIGZyb20gTmllbHMgQmFnZ2VzZW46CiAgICAgIC0gaWZkZWYgcmUtb3JkZXJpbmcgZml4ZXMgZm9yIGFscGhhL2xpbnV4LgoKaGFyZGFrZXIgIDcgU2VwIDk4IDEwOjQ3OjAwCiAgICAtIChwcm9jLmMpOiBQYXRjaCBmcm9tIE1pY2hhZWwgU2xpZmNhazoKICAgICAgLSBzb2xhcmlzIDIuNiBmaXhlcy4KCmhhcmRha2VyICA3IFNlcCA5OCAxMDo0ODowOQogICAgLSAoYXNuMS5jKTogUGF0Y2ggZnJvbSBNaWNoYWVsIFNsaWZjYWs6CiAgICAgIC0gQ2F0Y2ggc3ViaWRlbnRpZmllciBjb3JyZWN0bHkuCgpoYXJkYWtlciAgNyBTZXAgOTggMTA6NDk6MDgKICAgIC0gKGFzbjEuaCk6IHJlbW92ZSBfX1AoKSBkZWZpbml0aW9uLgoKaGFyZGFrZXIgIDcgU2VwIDk4IDEwOjQ5OjUzCiAgICAtIChtaWIuYyk6IFBhdGNoIGZyb20gTWljaGFlbCBTbGlmY2FrOgogICAgICAtIG1hbGxvYyBjb3JyZWN0aW9ucyBmb3IgRU5WIHZhcnMuLgoKaGFyZGFrZXIgIDcgU2VwIDk4IDEwOjUxOjIyCiAgICAtIChwYXJzZS5jKTogUGF0Y2ggZnJvbSBNaWNoYWVsIFNsaWZjYWs6CiAgICAgIC0gcHJvdGVjdCBhZ2FpbnN0IG11bHRpcGxlIGluaXRfbWliX2ludGVybmFsKCkgY2FsbHMuCgpoYXJkYWtlciAgNyBTZXAgOTggMTA6NTM6MTEKICAgIC0gKHN5c3RlbS5jKTogUGF0Y2ggZnJvbSBNaWNoYWVsIFNsaWZjYWs6CiAgICAgIC0gZXhpdCAtPiByZXR1cm4gb24gd2luMzIgc3lzdGVtIHJvdXRpbmVzLgoKaGFyZGFrZXIgIDcgU2VwIDk4IDEwOjU1OjUxCiAgICAtIChzbm1wX2FwaS5jKTogUGF0Y2ggZnJvbSBNaWNoYWVsIFNsaWZjYWs6CiAgICAgIC0gTlVMTCByZXR1cm4gYnkgbWFsbG9jIHByb3RlY3RlZC4KCmhhcmRha2VyICA3IFNlcCA5OCAxMjoxNzozNgogICAgLSAoc25tcGQuY29uZi41LmRlZik6IFBhdGNoIGZyb20gTmllbHMgQmFnZ2VzZW46CiAgICAgIC0gYmV0dGVyIGRlc2NyaXB0aW9uIG9mIHRoZSB2aWV3IG1hc2suCgpoYXJkYWtlciAgNyBTZXAgOTggMTI6Mjc6NDIKICAgIC0gKG1lbW9yeV9mcmVlYnNkMi5oLCB2bXN0YXRfZnJlZWJzZDIuaCk6IGNyZWF0ZWQgZnJvbSBtZW1vcnkuaCBhbmQgdm1zdGF0LmgKCmhhcmRha2VyICA3IFNlcCA5OCAxMjoyNzo0MgogICAgZmlsZSBtZW1vcnlfZnJlZWJzZDIuaCB3YXMgaW5pdGlhbGx5IGFkZGVkIG9uIGJyYW5jaCBFeHQtMy01LXBhdGNoZXMuCgpoYXJkYWtlciAgNyBTZXAgOTggMTI6Mjc6NDIKICAgIGZpbGUgdm1zdGF0X2ZyZWVic2QyLmggd2FzIGluaXRpYWxseSBhZGRlZCBvbiBicmFuY2ggRXh0LTMtNS1wYXRjaGVzLgoKaGFyZGFrZXIgIDcgU2VwIDk4IDEyOjQ3OjM3CiAgICAtIChwYXJzZS5jKTogaW5jbHVkZSBzbm1wX2FwaS5oIGZvciBzbm1wX2dldF9kb19kZWJ1Z2dpbmcoKS4KCmhhcmRha2VyICA3IFNlcCA5OCAxMjo1NDoxNgogICAgLSAoc25tcF9hcGkuYyk6IFBhdGNoIGZyb20gTWljaGFlbCBTbGlmY2FrOgogICAgICAtIGNoZWNrIG1hbGxvYyBjYWxscyBtb3JlIGNhcmVmdWxseS4KICAgICAgLSBtaXNjIGJ1ZyBmaXhlcy4KCmhhcmRha2VyICA3IFNlcCA5OCAxMzoxNToyNgogICAgLSAoTWFrZWZpbGUuaW4pOiBpbnN0YWxsIGNvbmZpZy5oIGFzICQoaW5jbHVkZWRpcikvdWNkLXNubXAtY29uZmlnLmguCgpoYXJkYWtlciAgNyBTZXAgOTggMTM6MjE6MTgKICAgIC0gKG1lbW9yeS5jLCBtZW1vcnkuaCk6CiAgICAgIC0gTUVNVVNFRFJFQUwgLT4gTUVNQVZBSUxSRUFMICh0eXBlZGVmIHJlbmFtaW5nIHRvIG1hdGNoIGZ1bmN0aW9uYWxpdHkpLgoKaGFyZGFrZXIgIDcgU2VwIDk4IDE0OjA2OjIxCiAgICAtICh0Y3AuYyk6IGJhY2sgb3V0IE5pZWxzJyBjaGFuZ2VzIHNpbmNlIHRoZXkgYnJva2Ugb3RoZXIgYXJjaGl0ZWN0dXJlcy4KCmhhcmRha2VyICA3IFNlcCA5OCAxNDoxOToyNAogICAgLSAoTWFrZWZpbGUuaW4ocykpOiBtYWtlIGRlcGVuZHMuCgpoYXJkYWtlciAgNyBTZXAgOTggMTY6Mzk6NTkKICAgIC0gKGljbXAuYywgaW50ZXJmYWNlcy5jLCBpcC5jLCB0Y3AuYyk6IDY0Yml0IGxvbmcgcmV0dXJuIGNsZWFuIHVwcy4KCm1hcnogIDcgU2VwIDk4IDE5OjAxOjAxCiAgICB1cGRhdGUgaGVhZGVycyBmb3Igd2luMzIsIGFkZCByZXR1cm4gdG8gbWFpbgoKbWFyeiAgNyBTZXAgOTggMTk6MDI6MDEKICAgIHVwZGF0ZSBoZWFkZXJzIGZvciB3aW4zMiwgYWRkIHJldHVybiB0byBtYWluLGZpeCB3aW4zMiBjb21waWxlIGVycm9yIHcvIG5vbiBpbnRlZ3JhbHN3aXRjaCBjYXNlCgptYXJ6ICA3IFNlcCA5OCAxOTowMzozMwogICAgdXBkYXRlIGhlYWRlcnMgZm9yIHdpbjMyLCBhZGQgcmV0dXJuIHRvIG1haW4sIHJlc29sdmUgY29uZmxpY3Qgdy8gc3RkIGxpYiBsb2cgZnVuY3Rpb24KCm1hcnogIDcgU2VwIDk4IDE5OjMwOjExCiAgICByZW5hbWUgYW5kIHN0YXRpYyBsaW5rIGRlYnVnIHRhcmdldHMsIGRsbCB0byBiaW4gZGlyLCBhZGRlZCBzbm1wdGVzdCwgc25tcHRyYXAsIHNubXBkZWx0YSBwcm9qZWN0cwoKbWFyeiAgNyBTZXAgOTggMTk6NDI6MzUKICAgIGZpbGUgc25tcGRlbHRhLmRzcCB3YXMgaW5pdGlhbGx5IGFkZGVkIG9uIGJyYW5jaCBFeHQtMy01LXBhdGNoZXMuCgptYXJ6ICA3IFNlcCA5OCAxOTo0MjozNQogICAgZmlsZSBzbm1wZGVsdGEucGxnIHdhcyBpbml0aWFsbHkgYWRkZWQgb24gYnJhbmNoIEV4dC0zLTUtcGF0Y2hlcy4KCm1hcnogIDcgU2VwIDk4IDE5OjQyOjM1CiAgICBmaWxlIHNubXB0ZXN0LmRzcCB3YXMgaW5pdGlhbGx5IGFkZGVkIG9uIGJyYW5jaCBFeHQtMy01LXBhdGNoZXMuCgptYXJ6ICA3IFNlcCA5OCAxOTo0MjozNQogICAgZmlsZSBzbm1wdGVzdC5wbGcgd2FzIGluaXRpYWxseSBhZGRlZCBvbiBicmFuY2ggRXh0LTMtNS1wYXRjaGVzLgoKbWFyeiAgNyBTZXAgOTggMTk6NDI6MzUKICAgIGZpbGUgc25tcHRyYXAuZHNwIHdhcyBpbml0aWFsbHkgYWRkZWQgb24gYnJhbmNoIEV4dC0zLTUtcGF0Y2hlcy4KCm1hcnogIDcgU2VwIDk4IDE5OjQyOjM1CiAgICBmaWxlIHNubXB0cmFwLnBsZyB3YXMgaW5pdGlhbGx5IGFkZGVkIG9uIGJyYW5jaCBFeHQtMy01LXBhdGNoZXMuCgptYXJ6ICA3IFNlcCA5OCAxOTo0MjozNQogICAgcmVuYW1lIGFuZCBzdGF0aWMgbGluayBkZWJ1ZyB0YXJnZXRzLCBkbGwgdG8gYmluIGRpciwgYWRkZWQgc25tcHRlc3QsIHNubXB0cmFwLCBzbm1wZGVsdGEgcHJvamVjdHMKCmhhcmRha2VyICA4IFNlcCA5OCAwOToyNjoxMwogICAgLSAoTkVXUyk6IHVwZGF0ZS4KCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCkNoYW5nZXM6IFYzLjQgLT4gVjMuNQoKaGFyZGFrZXIgMjQgTWF5IDk4IDE1OjIyOjIxCiAgICAtIChGQVEpOiB1cGRhdGUgdG8gY2hhbmdlIGEgZmV3IHRoaW5ncy4KCmhhcmRha2VyIDI0IE1heSA5OCAxNToyMjozOAogICAgLSAoTkVXUyk6IGNoYW5nZSB2YWNtIG5ld3Mgd29yZGluZy4KCmhhcmRha2VyIDI0IE1heSA5OCAxNToyMjo1NwogICAgLSAoaXAuYyk6IFBhdGNoIGZyb20gTmllbHMgQmFnZ2VzZW46CiAgICAgIC0gZml4IGZvciBuZXRic2QgPCAxLjMuCgpoYXJkYWtlciAyOSBNYXkgOTggMTA6MTQ6MzIKICAgIC0gKGF0LmMpOiBQYXRjaCBmcm9tIENocmlzIFNtaXRoOiBmaXggZm9yIGlyaXguCgpoYXJkYWtlciAyOSBNYXkgOTggMTA6MjQ6NTQKICAgIC0gKHNubXBfYXBpLmMsIHNubXBfaW1wbC5oKTogUGF0Y2ggZnJvbSBKb2UgTWFyem90OgogICAgICAtIGZpeCBjb21tdW5pdHkgbmFtZSBsZW5ndGggcHJvYmxlbXMgYW5kIGluY3JlYXNlIHNpemUuCgpoYXJkYWtlciAyOSBNYXkgOTggMTE6MjY6NDcKICAgIC0gKGNvbmZpZ3VyZS5pbik6IHBhdGNoIGZyb20gTmllbHM6IGluY2x1ZGUgc3lzL3NvY2tldCBpbiBpZl9tdHUgdGVzdC4KCmhhcmRha2VyIDI5IE1heSA5OCAxMToyNzo1OQogICAgLSAoY29uZmlndXJlKTogbWFrZSBvZiBjb25maWd1cmUuCgpoYXJkYWtlciAyOSBNYXkgOTggMTE6MzQ6NTMKICAgIC0gKGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBNYWtlZmlsZS5pbik6CiAgICAgIC0gQWRkIGEgZGVwZW5kYW5jeSBsaW5lIGZvciBzbm1wX3ZhcnMubyBmb3IgYWxsIHRoZSBtb2R1bGUgaW5jbHVkZXMuCgpoYXJkYWtlciAyOSBNYXkgOTggMTU6MjA6NTMKICAgIC0gKFRPRE8pOiB3aW5TTk1QIG1lbnRpb24uCgpoYXJkYWtlciAyOSBNYXkgOTggMTU6MjE6MTMKICAgIC0gKHNubXBfcGFyc2VfYXJncy5jKTogYWRkIGFiaWxpdHkgdG8gc3BlY2lmeSBtaWIgaW5mb3JtYXRpb24gb24gdGhlIGNtZCBsaW5lLgoKaGFyZGFrZXIgMjkgTWF5IDk4IDE2OjIxOjA4CiAgICAtIChjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgYWdlbnQvbWliZ3JvdXAvKik6CiAgICAgIC0gbW92ZWQgbW9zdCBtaWJncm91cCBwaWVjZXMgaW50byByZWxldmVudCBzdWItZGlyZWN0b3JpZXMuCiAgICAgICAgLSBjaGFuZ2VkIGFsbCBoZWFkZXIgZmlsZSBhbmQgI2lmZGVmIFVTSU5HXyogbGluZXMgdG8gcmVmbGVjdCB0aGlzLgoKaGFyZGFrZXIgMjkgTWF5IDk4IDE2OjIxOjUxCiAgICAtIChzbm1wX2ltcGwuaCk6IGNoYW5nZSBwZHUgdmVyc2lvbiBmcm9tIGxvbmcgdG8gaW50LgoKaGFyZGFrZXIgMzEgTWF5IDk4IDE3OjU1OjQ1CiAgICAtIChhc24xLmMsIGFzbjEuaCwgaW50NjQuYywgaW50NjQuaCwgbWliLmMsIHNubXAuYywgc25tcF9hcGkuYywKICAgICAgc25tcF9hcGkuaCwgc25tcF9pbXBsLmgpOgogICAgICAtIGltcGxlbWVudCBzcGVjaWFsIGRhdGEgdHlwZXMgdmlhIG9wYXF1ZXM6IGZsb2F0LCBkb3VibGUsIGludDY0LCB1aW50NjRzLgoKaGFyZGFrZXIgMzEgTWF5IDk4IDE3OjU2OjA3CiAgICAtIChzbm1wc2V0LmMpOiBlbmFibGUgc2V0dGluZyBvZiBvcGFxdWUgZmxvYXRzLCBkb3VibGVzLCBpbnQ2NHMsIHVpbnQ2NHMuCgpoYXJkYWtlciAzMSBNYXkgOTggMTc6NTY6NTUKICAgIC0gKGFjY29uZmlnLmgsIGNvbmZpZy5oLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbik6CiAgICAgIC0gbWFrZSBpdCBwb3NzaWJsZSBub3QgdG8gdXNlIG9wYXF1ZSBzcGVjaWFsIHR5cGVzIHdpdGggbmV3IGNtZCBsaW5lIGZsYWcuCgpoYXJkYWtlciAgMiBKdW4gOTggMTQ6MjM6MTUKICAgIC0gKGF1dG9fbmxpc3QuYywgYXV0b19ubGlzdC5oLCBrZXJuZWwuYywgc25tcF9hZ2VudC5jLCBzbm1wZC5jLAogICAgICBocl9kZXZpY2UuYywgaHJfZGlzay5jLCBocl9maWxlc3lzLmMsIGhyX25ldHdvcmsuYywgaHJfb3RoZXIuYywKICAgICAgaHJfcGFydGl0aW9uLmMsIGhyX3ByaW50LmMsIGhyX3Byb2MuYywgaHJfc3RvcmFnZS5jLCBocl9zd2luc3QuYywKICAgICAgaHJfc3dydW4uYywgaHJfc3lzdGVtLmMsIGhyX3V0aWxzLmMsIGF0LmMsIGludGVyZmFjZXMuYywKICAgICAgdmFyX3JvdXRlLmMsIHNubXBfcGFyc2VfYXJncy5jLCBzbm1wZGVsdGEuYywgc25tcHRhYmxlLmMsCiAgICAgIHNubXB0cmFuc2xhdGUuYywgc25tcHRyYXBkLmMsIGZyZWVic2QyLmgsIGhwdXguaCwgbGludXguaCwgbmV0YnNkLmgsCiAgICAgIHNvbGFyaXMuaCwgc3lzdi5oLCBhc24xLmMsIG1pYi5jLCBwYXJzZS5jLCBwYXJzZS5oLCBzbm1wX2F1dGguYywKICAgICAgc25tcF9pbXBsLmgpOiBQYXRjaCBmcm9tIE5pZWxzIEJhZ2dlbnNlbjoKICAgICAgLSBtYWtlIGhvc3QgcmVzb3VyY2VzIHdvcmsgdW5kZXIgTmV0QlNELCBGcmVlQlNELCBTb2xhcmlzIGFuZCBMaW51eC4KICAgICAgICAtIFN1bk9TNCBhbG1vc3Qgd29ya3MuCiAgICAgIC0gQWRkIC1zLy1TIHRvIGNvbW1hbmQgbGluZSBvcHRpb25zIGZvciBwcmludGluZyBvZiBzaG9ydGVyIG9pZHMuCiAgICAgIC0gbnVtZXJvdXMgYnVnIGZpeGVzLgoKaGFyZGFrZXIgIDMgSnVuIDk4IDEwOjUxOjEwCiAgICAtIChzbXV4LmMsIHNtdXguaCwgc211eF9nYXRlZC5oLCBzbm1wX2JncC5jLCBzbm1wX2JncC5oLCBzbm1wX29zcGYuYywKICAgICAgc25tcF9vc3BmLmgsIHNubXBfcmlwMi5jLCBzbm1wX3JpcDIuaCwgc211eC5jLCBzbXV4LmgsIHNubXBfYmdwLmMsCiAgICAgIHNubXBfYmdwLmgsIHNubXBfb3NwZi5jLCBzbm1wX29zcGYuaCwgc25tcF9yaXAyLmMsIHNubXBfcmlwMi5oKToKICAgICAgLSBtb3ZlZCBzbXV4IHN0dWZmIGludG8gYSBzbXV4IHN1Yi1kaXJlY3RvcnkuCgpoYXJkYWtlciAgMyBKdW4gOTggMTA6NTg6MTUKICAgIC0gKGlwZndhY2MuYywgaXBmd2FjYy5oLCBJUEZXQUNDLU1JQi50eHQsIFVDRC1TTk1QLU1JQi50eHQpOgogICAgICAtIG1vdmVkIGlwZndhY2MgdG8gdWNkYXZpcy4xMyBhbmQgcmVtb3ZlZCBeTXMgYW5kIHNvbWUgYmxhbmsgbGluZXMuCgpoYXJkYWtlciAgMyBKdW4gOTggMTA6NTg6NDQKICAgIC0gKElOU1RBTEwpOiBtZW50aW9uIGlwZndhY2MKCmhhcmRha2VyICAzIEp1biA5OCAxMDo1ODo1OQogICAgLSAoUkVBRE1FKTogbWVudGlvbiBDcmlzdGlhbiBFc3RhbiBpbiB0aGUgY29kZXJzIGxpc3QuCgpoYXJkYWtlciAgMyBKdW4gOTggMTE6MDY6NDcKICAgIC0gKGV4YW1wbGUuYywgZXhhbXBsZS5oLCBkbG1vZC5jLCBkbG1vZC5oKTogUGF0Y2ggZnJvbSBFdWdlbmUgUG9sb3ZuaWtvdjoKICAgICAgLSBpbXBsZW1lbnQgYSBkeW5hbWljIGxvYWRpbmcgbW9kdWxlIGZvciBsb2FkaW5nIHNoYXJlZCBvYmplY3QgbWliIG1vZHVsZXMuCgpoYXJkYWtlciAgMyBKdW4gOTggMTE6MTA6NDgKICAgIC0gKFJFQURNRSwgZXhhbXBsZS5jLCBleGFtcGxlLmgsIHdvbWJhdC5jLCB3b21iYXQuaCwgZXhhbXBsZS5jLAogICAgICBleGFtcGxlLmgsIHdvbWJhdC5jLCB3b21iYXQuaCk6CiAgICAgIC0gbW92ZWQgd29tYmF0IGFuZCBleGFtcGxlIHRvIGV4YW1wbGVzLyBkaXJlY3RvcnkuCgpoYXJkYWtlciAgMyBKdW4gOTggMTE6Mjc6MjcKICAgIC0gKHNubXBfYWdlbnQuYywgc25tcGQuYyk6IGluY2x1ZGUgbWliSUkvc25tcF9taWIuaC4KCmhhcmRha2VyICAzIEp1biA5OCAxMToyOTowNAogICAgLSAobWliLmMpOiBtaXNzZWQgYSBuZWVkZWQgT1BBUVVFX1NQRUNJQUxfVFlQRVMgaWZkZWYuCgpoYXJkYWtlciAgMyBKdW4gOTggMTI6MTc6MDAKICAgIC0gKHNubXBfYWdlbnQuYywgc25tcF9hcGkuYywgc25tcF9hdXRoLmMsIHNubXBfaW1wbC5oKToKICAgICAgLSBmaXggcGR1LT52ZXJzaW9ucyB0byBiZSBhbGwgaW50cy4KCmhhcmRha2VyICAzIEp1biA5OCAxMzozOToxMgogICAgLSAoY29uZmlndXJlLCBjb25maWd1cmUuaW4pOiBOZXcgZmxhZ3M6CiAgICAgIC0gLS13aXRoLWNjPUNDCiAgICAgIC0gLS13aXRoLWNmbGFncz1DRkxBR1MKCmhhcmRha2VyICAzIEp1biA5OCAxMzo0Mzo0NwogICAgLSAoY29uZmlnLmguaW4sIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBzbm1wdHJhcGQuYyk6CiAgICAgIC0gY2hlY2sgZm9yIGdldGR0YWJsZXNpemUgYW5kIHVzZSBhIGdlbmVyaWMgaWYgbm90IGF2YWlsYWJsZS4KCmhhcmRha2VyICAzIEp1biA5OCAxMzo1MjoyOAogICAgLSAoY29uZmlnLmguaW4sIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBmcmVlYnNkMi5oKToKICAgICAgLSBtb3ZlIGNvbmZpZ3VyYWJsZSBkZWZpbmVzIHRvIGNvbmZpZ3VyZSByYXRoZXIgdGhhbiBpbiBmcmVlYnNkMi5oLgoKaGFyZGFrZXIgIDMgSnVuIDk4IDEzOjU1OjQwCiAgICAtIChpMzg2LmgsIGk1ODYuaCwgaTY4Ni5oKTogcmVtb3ZlZCB0aGVzZSAodW51c2VkKSBoZWFkZXJzLgoKaGFyZGFrZXIgIDMgSnVuIDk4IDE0OjAyOjM0CiAgICAtIChjb25maWd1cmUsIGNvbmZpZ3VyZS5pbik6IGZpeCBuZXcgLS13aXRoLWNjIGFuZCAtLXdpdGgtY2ZsYWdzIGFyZ3VtZW50cy4KCmhhcmRha2VyICAzIEp1biA5OCAxNDoyMToxMAogICAgLSAoaHJfZGlzay5jLCBocl9zd2luc3QuYywgaHJfc3dydW4uYywgaHJfc3lzdGVtLmMsIHNubXBzZXQuYywgYXNuMS5oLAogICAgICBpbnQ2NC5jLCBpbnQ2NC5oLCBtaWIuYywgc25tcF9hcGkuYyk6CiAgICAgIC0gLVdhbGwgZml4ZXMuCgpoYXJkYWtlciAgMyBKdW4gOTggMTQ6MjM6MTQKICAgIC0gKE1ha2VmaWxlLmluJ3MpOiBtYWtlIGRlcGVuZC4KCmhhcmRha2VyICAzIEp1biA5OCAxNDoyNDo1OAogICAgLSAoTWFrZWZpbGUuaW4pOiByZWFkX2NvbmZpZy5vIGlzIG1pYm1vZHVsZSBoZWFkZXIgZGVwZW5kYW50IHRvby4KCmhhcmRha2VyICAzIEp1biA5OCAxNDoyNjoxMAogICAgdmVyc2lvbiB0YWcgKCAzLjUucHJlMSApCgpoYXJkYWtlciAgNSBKdW4gOTggMTA6NTI6MTEKICAgIC0gKGNvbmZpZ3VyZSwgY29uZmlndXJlLmluKTogUGF0Y2ggZnJvbSBOaWVscyBCYWdnZXNlbjoKICAgICAgLSB0ZXN0IGZvciBzZXRlbnYuCgpoYXJkYWtlciAgNSBKdW4gOTggMTA6NTI6NDAKICAgIC0gKG1ha2V0YXJnZXQpOiBQYXRjaCBmcm9tIE5pZWxzIEJhZ2dlc2VuOgogICAgICAtIHN1cHBvcnQgZm9yIGxhcmdlciB0cmVlIGRlcHRocy4KCmhhcmRha2VyICA1IEp1biA5OCAxMDo1NDozMQogICAgLSAoYXNuMS5jLCBtaWIuYywgcGFyc2UuaCwgc3lzdGVtLmMsIHN5c3RlbS5oKTogUGF0Y2ggZnJvbSBOaWVscyBCYWdnZXNlbjoKICAgICAgLSBNSUJfQUNDRVNTIGRlZmluZSBjaGFuZ2VzLgogICAgICAtIHNldGVudiBpbXBsZW1lbnRhdGlvbi4KICAgICAgLSBpZmRlZiB3cmFwcGVycyBmb3IgT1BBUVVFX1NQRUNJQUxfVFlQRVMuCgpoYXJkYWtlciAgOCBKdW4gOTggMTA6NTA6MTIKICAgIC0gKEZBUSk6IHVybCB0eXBlIHNwbGl0dGluZy4KCmhhcmRha2VyICA4IEp1biA5OCAxMjozNDowOQogICAgLSAoTWFrZWZpbGUuaW4pOiBjcmVhdGUgYSAuYyAtPiAubyBydWxlIHRvIG1ha2Ugc3VyZSBhbmQgcGxhY2UgdGhlCiAgICAgIG9iamVjdCBmaWxlcyBpbiB0aGUgYXBwcm9wcmlhdGUgc3ViZGlyZWN0b3JpZXMuCgpoYXJkYWtlciAgOCBKdW4gOTggMTM6NTk6MDgKICAgIC0gKFJFQURNRSk6IEFkZGVkIEV1Z2VuZSdzIG5hbWUuCgpoYXJkYWtlciAgOCBKdW4gOTggMTM6NTk6MjUKICAgIC0gKHNubXBkLmNvbmYuNS5kZWYpOiB1cGRhdGUgcmZjICMgZm9yIHZhY20gcmVmZXJlbmNlLgoKaGFyZGFrZXIgIDggSnVuIDk4IDE0OjEyOjM3CiAgICAtIChNYWtlZmlsZS5pbik6IFBhdGNoIGZyb20gSm9lIE1hcnpvdDoKICAgICAgLSByZW1vdmUgbW9yZSBjb25maWcgY3JlYXRlZCBoZWFkZXJzIG9uIG1ha2UgY29uZmlnY2xlYW4uCgpoYXJkYWtlciAgOCBKdW4gOTggMTQ6MTY6MjYKICAgIC0gKGxpYnNubXAuZGVmKTogUGF0Y2ggZnJvbSBKb2UgTWFyem90OiB3MzIgdXBkYXRlLgoKaGFyZGFrZXIgIDggSnVuIDk4IDE0OjIyOjUwCiAgICAtIChwYXJzZS5jLCBwYXJzZS5oLCBzbm1wX2FwaS5jLCBzbm1wX2FwaS5oLCBzbm1wX2NsaWVudC5jKTogUGF0Y2gKICAgICBmcm9tIEpvZSBNYXJ6b3Q6CiAgICAgIC0gYXN5bmMgc3R1ZmYgYWRkZWQuCiAgICAgIC0gZ2V0X3RjIGFkZGVkLgogICAgICAtIGJldHRlciBjb21tZW50cyBpbiBzb21lIHBsYWNlcy4KCmhhcmRha2VyICA4IEp1biA5OCAxNDo1NTo1MwogICAgLSAoc25tcF9hcGkuYyk6IHVuZGlkIHJlZG8gb2YgY29tbWVudCBvZiBnZXR0aW1lb2ZkYXkoKS4KCmhhcmRha2VyIDEwIEp1biA5OCAwNzoxMTo0NAogICAgLSAoY29uZmlnLmguaW4pOiBoYXZlX3NldGVudi4KCmhhcmRha2VyIDEwIEp1biA5OCAwODo1Mzo1MwogICAgLSAoTWFrZWZpbGUuaW4sIHNubXAycC5jLCBzbm1wZC5jKTogUGF0Y2ggZnJvbSBEYXZlIFNoaWVsZDoKICAgICAgLSAgc3RhcnRzIHRvIHNlcGFyYXRlIG91dCB0aGUgaGlzdG9yaWMgU05NUHYyIHN0dWZmLgogICAgICAtICBkb2VzIGEgYml0IG9mICdjb2RlIHRpZHlpbmcnLgogICAgICAtICBzdGFydHMgdG8gbW92ZSB0b3dhcmRzIHBvcnQtc3BlY2lmaWMgaGFuZGxlcnMuCgpoYXJkYWtlciAxMCBKdW4gOTggMTQ6MTU6NDcKICAgIHZlcnNpb24gdGFnICggMy41LnByZTIgKQoKaGFyZGFrZXIgMTAgSnVuIDk4IDE1OjMwOjU5CiAgICAtIChUT0RPKTogYWRkZWQgRGF2ZSdzIGxpc3QuCgpoYXJkYWtlciAxMCBKdW4gOTggMTU6MzE6MTIKICAgIC0gKE5FV1MpOiB1cGRhdGUuCgpoYXJkYWtlciAxMCBKdW4gOTggMTU6NDc6NTkKICAgIC0gKHNubXAycC5jLCBzbm1wZC5jLCBzbm1wZC5oKTogLVdhbGwgY2xlYW51cHMuCgpoYXJkYWtlciAxMiBKdW4gOTggMDg6NTI6MjgKICAgIC0gKEVYQU1QTEUuY29uZi5kZWYsIEZBUSk6IFBhdGNoIGZyb20gRGF2ZSBTaGllbGQ6CiAgICAgIC0gdXBkYXRlIGZvciBWQUNNIHN0dWZmLgoKaGFyZGFrZXIgMTIgSnVuIDk4IDEwOjEyOjI3CiAgICAtIChFWEFNUExFLmNvbmYuZGVmKTogc2hvdyB2YWNtIGV4YW1wbGUgZm9yIHB1YmxpYy9wcml2YXRlIGZyb20gYW55d2hlcmUuCgpoYXJkYWtlciAxMiBKdW4gOTggMTA6MTI6NDAKICAgIC0gKE5FV1MpOiBtaW5vciB1cGRhdGUuCgpoYXJkYWtlciAxMiBKdW4gOTggMTM6MTM6MTIKICAgIC0gKHNubXBfYXBpLmMpOiB0cmFwIHR5cGVzIHdlcmUgaW50J3Mgbm90IGxvbmdzIChmYWlsZWQgdW5kZXIgNjRiaXQgYXJjaCkuCgpoYXJkYWtlciAxMiBKdW4gOTggMTM6MTM6MjcKICAgIC0gKHBhcnNlLmMpOiBmdW5jdGlvbiBuYW1lIHR5cG8uCgpoYXJkYWtlciAxMiBKdW4gOTggMTM6MTM6MzkKICAgIC0gKHdpbjMyL2NvbmZpZy5oKTogZG9uJ3QgaGF2ZSBzZXRlbnYuCgpoYXJkYWtlciAxMiBKdW4gOTggMTM6MTM6NTcKICAgIC0gKGxpYnNubXAuZGVmKTogYWRkIHNldGVudiB0byB0aGUgbGlzdC4KCmhhcmRha2VyIDEyIEp1biA5OCAxMzo0Mzo0MQogICAgLSAoTkVXUyk6IDY0Yml0IGZpeCBtZW50aW9uZWQuCgpoYXJkYWtlciAxMiBKdW4gOTggMTM6NDg6MjEKICAgIC0gKGtlcm5lbC5jKTogZG9uJ3QgcHJpbnQga2xyZWFkIGVycm9ycyB1bmxlc3MgaW4gZGVidWdnaW5nIG1vZGUuCgpoYXJkYWtlciAxMiBKdW4gOTggMTU6MTc6NDcKICAgIC0gKGlwZndhY2MuaCwgSVBGV0FDQy1NSUIudHh0LCBVQ0QtU05NUC1NSUIudHh0KToKICAgICAgLSBjcmVhdGUgYW5kIHVzZSBhIHVjZEV4cGVyaW1lbnRhbCBzZWN0aW9uIGZvciB0aGUgaXBmd2FjYyBtaWIgdGlsbAogICAgICAgIGl0IHN0YWJpbGl6ZXMuCgpoYXJkYWtlciAxNyBKdW4gOTggMDg6MDg6MjMKICAgIC0gKHNubXAycC5jLCBzbm1wZC5jLCBzbm1wZC5oKTogUGF0Y2ggZnJvbSBOaWVscyBCYWdnZXNlbjoKICAgICAgLSBtaXNjIHR5cGUgZml4ZXMuCgpoYXJkYWtlciAxNyBKdW4gOTggMDg6MDg6NTgKICAgIC0gKHNubXBkZWx0YS5jKTogdXNhZ2UoKSB1cGRhdGUuCgpoYXJkYWtlciAxNyBKdW4gOTggMDg6MTA6MDIKICAgIC0gKE1ha2VmaWxlLmluLCBzbm1wYnVsa3dhbGsuMSwgc25tcGNtZC4xLCBzbm1wZGVsdGEuMSwgc25tcGdldC4xLAogICAgICBzbm1wZ2V0bmV4dC4xLCBzbm1wc2V0LjEsIHNubXBzdGF0dXMuMSwgc25tcHRhYmxlLjEsIHNubXB0cmFwLjEsCiAgICAgIHNubXB3YWxrLjEpOiBQYXRjaCBmcm9tIE5pZWxzIEJhZ2dlc2VuOgogICAgICAtIGRvY3VtZW50YXRpb24gY2xlYW51cCBhbmQgY2VudHJhbGl6YXRpb24gb2YgY29tbW9uIG9wdGlvbnMuCgpoYXJkYWtlciAxNyBKdW4gOTggMDg6MTA6NTQKICAgIC0gKGFzbjEuYyk6IFBhdGNoIGZyb20gTmllbHMgQmFnZ2VzZW46CiAgICAgIC0gYmNvcHkgLT4gbWVtY3B5LgoKaGFyZGFrZXIgMTcgSnVuIDk4IDA4OjExOjIyCiAgICAtIChtaWIuaCk6IFBhdGNoIGZyb20gTmllbHMgQmFnZ2VzZW46CiAgICAgIC0gcmVtb3ZlIDJuZCBpbml0X21pYigpIHByb3RvdHlwZS4KCmhhcmRha2VyIDE3IEp1biA5OCAwODoyMTo1MwogICAgLSAoUkVBRE1FLCBBZGRNb2R1bGVGb3JEdW1taWVzLnR4dCwgRFVNTVktTUlCLnR4dCwgZHVtbXkuYywgZHVtbXkuaCk6CiAgICAgIFBhdGNoIGZyb20gSmFrb2IgRWxsZXJzdGVkdDoKICAgICAgLSBtaWIgbW9kdWxlIGRvY3VtZW50YXRpb24gYW5kIGV4YW1wbGUgZm9yIGR1bW1pZXMuCgpoYXJkYWtlciAxNyBKdW4gOTggMTU6Mjc6MTMKICAgIC0gKFJFQURNRSk6IG1lbnRpb24gZHVtbXkgZ3JvdXAuCgpoYXJkYWtlciAxOSBKdW4gOTggMDg6NDE6MDAKICAgIC0gKEZBUSk6IHVwZGF0ZSBmcm9tIERhdmUgU2hpZWxkOiBub3QgZm91bmQgbW9kdWxlcyB3aXRoIGNvbmZpZ3VyZT8uCgpoYXJkYWtlciAxOSBKdW4gOTggMDg6NDY6MzEKICAgIC0gKGNvbmZpZ3VyZSwgY29uZmlndXJlLmluKTogd2FybiBCU0RJIHVzZXJzIGFnYWluc3QgL3Vzci91Y2IvY2MuCgpoYXJkYWtlciAxOSBKdW4gOTggMDg6NTg6MDUKICAgIC0gKEVYQU1QTEUuY29uZi5kZWYpOiBQYXRjaCBmcm9tIENyaXN0aWFuIEVzdGFuOgogICAgICAtIGV4YW1wbGUgb3V0cHV0IGNvcnJlY3Rpb25zLgoKaGFyZGFrZXIgMTkgSnVuIDk4IDA4OjU5OjUzCiAgICAtIChNYWtlZmlsZS5pbik6IFBhdGNoIGZyb20gQ3Jpc3RpYW4gRXN0YW46CiAgICAgIC0gaW5zdGFsbCBJUEZXQUNDIG1pYi4KCmhhcmRha2VyIDE5IEp1biA5OCAxMjowMzo0OAogICAgLSAoc25tcF92YXJzLmMpOiBmaXggcmVnaXN0ZXJfbWliKCkgdG8gaW5pdCBwb2ludGVycyB0byBudWxsLgoKaGFyZGFrZXIgMTkgSnVuIDk4IDEyOjUwOjU1CiAgICAtICh1dGlsX2Z1bmNzLmMpOiBmaXggY2hlY2ttaWIoKSBpbiBjYXNlIHdlIGdldCBjYWxsZWQgb24gYSBnZXQgd2hlbgogICAgICB3ZSByZWFsbHkgc2hvdWxkbid0IChiYWQgYXJ0aWZhY3Qgb2YgbmV3IHRyZWUgc3RydWN0dXJlKS4KCmhhcmRha2VyIDE5IEp1biA5OCAxMjo1MzoyMgogICAgLSAoc25tcF92YXJzLmMpOiBtZW1zZXQgdG8gMCB0aGUgZW50aXJlIHN1YnRyZWUgc3RydWN0LgoKaGFyZGFrZXIgMTkgSnVuIDk4IDEzOjAxOjQ3CiAgICAtIChNYWtlZmlsZS5pbik6IG1ha2UgZGVwZW5kLgoKaGFyZGFrZXIgMTkgSnVuIDk4IDEzOjEyOjU1CiAgICAtIChORVdTKTogTGFzdCB1cGRhdGUgZm9yIDMuNS4KCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCkNoYW5nZXM6IFYzLjMgLT4gVjMuNAoKaGFyZGFrZXIgIDEgRGVjIDk3IDEyOjQ0OjI0CiAgICAtICgqKTogMy4zLjEgYnJhbmNoIG1lcmdlZCBpbnRvIG1haW4gZGV2ZWxvcG1lbnQgYnJhbmNoLgoKaGFyZGFrZXIgIDUgRGVjIDk3IDA4OjQ2OjUwCiAgICAtIChzbm1wX2FwaS5oKTogUGF0Y2ggZnJvbSBOaWVscyBCYWdnZXNlbjoKICAgICAgLSBtYWtlIHRyYXAgdmFyaWFibGVzIGxvbmcncyBub3QgaW50cyBmb3IgNjRiaXQgbWFjaGluZXMgdG8gbWF0Y2gKICAgICAgICBhc25fYnVpbGRfaW50IGZ1bmN0aW9ucy4KCmhhcmRha2VyICA1IERlYyA5NyAxMTo1ODo1MgogICAgLSAoYXBwcy8qLmMpOiBzdXBwb3J0IHJhbmRvbSBhY2Nlc3MgcmVxdWVzdHMgb24gYWxsIGFwcHMgdmlhIC1SIHN3aXRjaC4KCmhhcmRha2VyICA1IERlYyA5NyAxNDozMDowNgogICAgLSAoY29uZmlndXJlLCBjb25maWd1cmUuaW4pOiB3YXJuIGluc3RlYWQgb2YgZXJyb3IgZm9yIGNvbmZpZ19yZXF1aXJlIG1hY3JvJ3MuCgpoYXJkYWtlciAxNSBEZWMgOTcgMTE6MDg6MDEKICAgIC0gKGFjY29uZmlnLmgsIGNvbmZpZy5oLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbik6CiAgICAgIC0gbmV3IG1hY3JvIHRvIGNoYW5nZSBkZWZhdWx0IE1JQlMgd2hlbiBtb2R1bGVzIGFyZSBjb21waWxlZDoKICAgICAgICBjb25maWdfYWRkX21pYigpLgoKaGFyZGFrZXIgMTUgRGVjIDk3IDExOjA4OjE5CiAgICAtIChob3N0LmgsIHVjZF9zbm1wLmgsIHYycGFydHkuaCk6CiAgICAgIC0gdXNlIGNvbmZpZ19hZGRfbWliKCkuCgpoYXJkYWtlciAxNSBEZWMgOTcgMTE6MTQ6MTgKICAgIC0gKGF0LmMsIGV4YW1wbGUuYywgaHJfcHJvYy5jLCBocl9zdG9yYWdlLmMsIGhyX3N3cnVuLmMsIGhyX3N5c3RlbS5jLAogICAgICBpY21wLmMsIGludGVyZmFjZXMuYywgaW50ZXJmYWNlcy5oLCBpcC5jLCBsb2FkYXZlLmMsIG1lbW9yeS5jLAogICAgICByb3V0ZV93cml0ZS5jLCB0Y3AuYywgdWRwLmMsIHZhcl9yb3V0ZS5jLCB3b21iYXQuYywgY29tbW9uX2hlYWRlci5oKToKICAgICAgLSBQYXRjaCBmcm9tIFNpbW9uIExlaW5lbiB0byBpbXByb3ZlIGlyaXggNi4yIHN1cHBvcnQuCgpoYXJkYWtlciAxNSBEZWMgOTcgMTU6MDc6MjYKICAgIC0gKFVDRC1maWVsZHMsIG9pZF90b19zeW0uaW4sIG9pZF90b190eXBlLmluKTogUGF0Y2ggZnJvbSBUQU5BS0EgVGFrYXNoaToKICAgICAgLSBzdXBwb3J0IG1vcmUgT1MgdHlwZXMgaW4gdGhlIG92LyBkaXJlY3RvcnkgZmlsZXMuCiAgICAgIC0gbWlzdGFrZTogIGJzZGkgd2FzIGdldHRpbmcgZGVmaW5lZCBhcyBpcml4LgogICAgICAtIGRvbid0IGNvcmUgZHVtcCBvbiAtdiB3aXRob3V0IGFueSBhcmd1bWVudHMuCgpoYXJkYWtlciAxNSBEZWMgOTcgMTU6MDc6NTkKICAgIC0gKFVDRC1maWVsZHMsIG9pZF90b19zeW0uaW4sIG9pZF90b190eXBlLmluLCBzbm1wX3BhcnNlX2FyZ3MuYywgYWNjb25maWcuaCk6CiAgICAgIC0gUGF0Y2ggZnJvbSBUQU5BS0EgVGFrYXNoaToKICAgICAgICAtIHN1cHBvcnQgbW9yZSBPUyB0eXBlcyBpbiB0aGUgb3YvIGRpcmVjdG9yeSBmaWxlcy4KICAgICAgICAtIG1pc3Rha2U6ICBic2RpIHdhcyBnZXR0aW5nIGRlZmluZWQgYXMgaXJpeC4KICAgICAgICAtIGRvbid0IGNvcmUgZHVtcCBvbiAtdiB3aXRob3V0IGFueSBhcmd1bWVudHMuCgpoYXJkYWtlciAyMyBEZWMgOTcgMTE6MjA6MDQKICAgIC0gKGhyX3N3cnVuLmMpOiBDb3JyZWN0IGEgbm9uLWNhc3RlZCBtYWxsb2MuCgpoYXJkYWtlciAyMyBEZWMgOTcgMTE6MzM6NTkKICAgIC0gKGhyX2ZpbGVzeXMuYyk6IFNvbGFyaXMgc3BlY2lmaWMgZml4ZXMuCgpoYXJkYWtlciAyMyBEZWMgOTcgMTE6MzU6MjYKICAgIC0gKGFjY29uZmlnLmgsIGNvbmZpZy5oLmluLCBzZWRzY3JpcHQuaW4pOiBCU0RJIGRlZmluaXRpb24gZml4ZXMuCgpoYXJkYWtlciAyMyBEZWMgOTcgMTE6NDE6NDkKICAgIC0gKGNvbmZpZy5oLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbik6IFBhdGNoIGZyb20gSm9oYW5uZXMgR3Jvc2VuOgogICAgICAtIGZpeCBub24tZXhpc3RlbnQgbmxpc3QuaCBwcm9ibGVtcyB1bmRlciBsaW51eCByZWRoYXQgNS4wLgoKaGFyZGFrZXIgMjMgRGVjIDk3IDExOjQyOjI4CiAgICAtIChtaWJncm91cC8qLmMsIGNvbW1vbl9oZWFkZXIuaCk6IFBhdGNoIGZyb20gSm9oYW5uZXMgR3Jvc2VuOgogICAgICAtIGZpeCBub24tZXhpc3RlbnQgbmxpc3QuaCBwcm9ibGVtcyB1bmRlciBsaW51eCByZWRoYXQgNS4wLgoKaGFyZGFrZXIgMjMgRGVjIDk3IDExOjQyOjM5CiAgICAtIChzbm1wdHJhcC5jKTogUGF0Y2ggZnJvbSBKb2hhbm5lcyBHcm9zZW46CiAgICAgIC0gZml4IG5vbi1leGlzdGVudCBubGlzdC5oIHByb2JsZW1zIHVuZGVyIGxpbnV4IHJlZGhhdCA1LjAuCgpoYXJkYWtlciAyMyBEZWMgOTcgMTE6NDI6NTQKICAgIC0gKHNubXBsaWIvc3lzdGVtLmMpOiBQYXRjaCBmcm9tIEpvaGFubmVzIEdyb3NlbjoKICAgICAgLSBmaXggbm9uLWV4aXN0ZW50IG5saXN0LmggcHJvYmxlbXMgdW5kZXIgbGludXggcmVkaGF0IDUuMC4KCmhhcmRha2VyIDIzIERlYyA5NyAxMTo0NjowOAogICAgLSAoaHB1eC5jKTogI2lmZGVmJ2VkIG91dCB1bnVzZWQgd3JpdGVIUCBmdW5jdGlvbi4KCmhhcmRha2VyIDIzIERlYyA5NyAxMjozMjoyMQogICAgLSAoc25tcHRyYXBkLmMpOiBQYXRjaCBmcm9tIFRlZCBSdWxlOgogICAgICAtIFVzZSBzeXNsb2cgb3B0aW9uIExPR19QSUQgb24gc3RhcnR1cC4KICAgICAgLSBmb3JrIGlmIHN5c2xvZyBlbmFibGVkLgogICAgICAtIEVuYWJsZSBsb2dnaW5nIHRvIG90aGVyIHN5c2xvZyBmYWNpbGl0aWVzLgogICAgICAtIHByaW50IGFsbCB0cmFwIGRhdGEgdG8gYSBzaW5nbGUgc3lzbG9nIGxpbmUuCgpoYXJkYWtlciAyMyBEZWMgOTcgMTI6NDg6MzEKICAgIC0gKHNubXB0cmFwZC5jKToKICAgICAgLSBDaGFuZ2UgLWYgZmxhZyB0byAtbCBhbmQgbWFrZSAtZiBuby1mb3JrLgogICAgICAtIGZpeCBwYXRjaCB3aGljaCBtdW5nZWQgYWJpbGl0eSB0byBnZW5lcmF0ZSBib3RoIC1QIGFuZCAtcyBzaW11bHRhbmVvdXNseS4KCmhhcmRha2VyIDIzIERlYyA5NyAxNDo0MDozNgogICAgLSAoUkVBRE1FKTogQWRkIFRlZCBSdWxlIHRvIGNvZGVycyBsaXN0LgoKaGFyZGFrZXIgMjMgRGVjIDk3IDE0OjQyOjQ3CiAgICAtICgqKTogVHVybiBhbGwgZGVidWdnaW5nIHJvdXRpbmVzIGludG8gbGlicmFyeSBjYWxscyB0aGF0IGNhbiBiZQogICAgICB0dXJuZWQgb24gYW5kIG9mZiBhdCBydW4gdGltZS4KICAgICAgLSBERUJVR1AoKSBpcyBub3cgYSB0eXBpY2FsIHByaW50ZiBzdHlsZSBmdW5jdGlvbiBhbmQgaXMgdXNlZCBldmVyeXdoZXJlLgogICAgICAtIHZvaWQgc25tcF9zZXRfZG9fZGVidWdnaW5nKGludCkuCiAgICAgIC0gaW50IHNubXBfZ2V0X2RvX2RlYnVnZ2luZygpLgoKaGFyZGFrZXIgMjMgRGVjIDk3IDE0OjQ0OjM4CiAgICAtIChzbm1wZC4xLmRlZiwgc25tcHRyYXBkLjgpOiBkZWJ1Z2dpbmcgZmxhZyBhZGRpdGlvbnMuCgpoYXJkYWtlciAyMyBEZWMgOTcgMTQ6NDc6MDgKICAgIC0gKGF0LmMsIGljbXAuYywgaW50ZXJmYWNlcy5jLCBpcC5jLCBzbm1wX21pYi5jLCBzeXN0ZW0uYywgdGNwLmMsIHVkcC5jKToKICAgICAgLSBQYXRjaCBmcm9tIERhdmUgU2hpZWxkIHRvIGJyZWFrIHVwIGNvbW1vbl9oZWFkZXIuaC4KCmhhcmRha2VyIDIzIERlYyA5NyAxNToyNzo1NAogICAgLSAoYXQuYywgYXQuaCwgaG9zdF9yZXMuaCwgaWNtcC5oLCBpbnRlcmZhY2VzLmMsIGludGVyZmFjZXMuaCwgaXAuaCwKICAgICAgdGNwLmMsIHRjcC5oLCB1ZHAuYywgdWRwLmgsIHJlYWRfY29uZmlnLmMsIHNubXBfdmFycy5jKToKICAgICAgLSBjbGVhbiB1cCByZXF1aXJlZCBoZWFkZXJzIGZvciBsaW51eC4KCmhhcmRha2VyIDIzIERlYyA5NyAxNTo1NjoxOAogICAgLSAodmVyc2lvbmluZm8uYywgdmVyc2lvbmluZm8uaCk6IENyZWF0ZSBhIG1pYiB2YXJpYWJsZSB0byBzZXQvcmVwb3J0CiAgICAgIGlmIGRlYnVnZ2luZyBpcyBvbiBvciBvZmYuCgpoYXJkYWtlciAyMyBEZWMgOTcgMTU6NTk6MDMKICAgIC0gKFVDRC1TTk1QLU1JQi50eHQpOiBDcmVhdGUgYSBtaWIgdmFyaWFibGUgdG8gc2V0L3JlcG9ydCBpZiBkZWJ1Z2dpbmcKICAgICAgaXMgb24gb3Igb2ZmLgoKaGFyZGFrZXIgMjMgRGVjIDk3IDE2OjMwOjQ3CiAgICB2ZXJzaW9uIHRhZyAoIDMuNC5wcmUxICkKCmhhcmRha2VyIDI5IERlYyA5NyAwOTozNzowNgogICAgLSAodGttaWIpOiBGaXJzdCBpbXBsZW1lbnRhdGlvbi4KCmhhcmRha2VyIDMwIERlYyA5NyAxNDowMDowMwogICAgLSAodGttaWIpOgogICAgICAtIG5ldyBjb21tYW5kOiB0YWJsZSB0byBkaXNwbGF5IHNubXB0YWJsZXMgYXMgYSB0YWJsZS4KICAgICAgLSBtaXNjLi4uCgpoYXJkYWtlciAzMCBEZWMgOTcgMTc6MDE6NTcKICAgIC0gKHRrbWliKTogQ3JlYXRlIGEgZ3JhcGhpbmcgd2lkZ2V0LgoKaGFyZGFrZXIgIDUgSmFuIDk4IDEzOjI3OjM4CiAgICAtIChtaWJfYXBpLjMpOiBjaGFuZ2UgImFsbCIgdG8gIkFMTCIuCgpoYXJkYWtlciAgNSBKYW4gOTggMTM6Mjg6MDAKICAgIC0gKG1pYi5jLCBwYXJzZS5jLCBwYXJzZS5oKTogYWRkIGEgZmluZF9tb2R1bGUoKSByb3V0aW5lLgoKaGFyZGFrZXIgIDUgSmFuIDk4IDEzOjI4OjIyCiAgICAtIChzbm1wdHJhbnNsYXRlLmMpOiBwdXQgaW5pdF9taWIgYmFjayBpbiBwbGFjZSAob3BwcykuCgpoYXJkYWtlciAgNSBKYW4gOTggMTM6Mjg6NDIKICAgIC0gKFRPRE8pOiBzbm1wdjMKCmhhcmRha2VyICA1IEphbiA5OCAxNjoyOTozOQogICAgLSAoYXNuMS5jKTogUGF0Y2ggZnJvbSBOaWVscyBCYWdnZXNlbjoKICAgICAgLSBmaXggYXNuMV9idWlsZF9vYmppZC4KCmhhcmRha2VyICA1IEphbiA5OCAxNzozMzowNwogICAgLSAocGFyc2UuYyk6IHN3YXAgYXJncyB0byBtZXJnZV9hbm9uX2NoaWxkcmVuKCkuCgpoYXJkYWtlciAxMiBKYW4gOTggMDk6MTQ6NTQKICAgIC0gKHBhcnNlLmMpOiBQYXRjaCBmcm9tIERhdmUgU2hpZWxkOiAgZml4IGFub25fY2hpbGRyZW4gaW52YWxpZCBtZW1vcnkgYWNjZXNzLgoKaGFyZGFrZXIgMTIgSmFuIDk4IDA5OjE4OjUwCiAgICAtIChtaWJfYXBpLjMsIHNubXBfYXBpLjMpOiBQYXRjaCBmcm9tIE5pZWxzIEJhZ2dlc2VuOgogICAgICAtIGRvYyB1cGRhdGUgdG8gcmVmbGVjdCBtb3ZlZCBoZWFkZXJzLgoKaGFyZGFrZXIgMTIgSmFuIDk4IDA5OjE5OjEwCiAgICAtIChNYWtlZmlsZS5pbik6IFBhdGNoIGZyb20gTmllbHMgQmFnZ2VzZW46IGxpbmsgZGlyZWN0bHkgdG8gbGliLgoKaGFyZGFrZXIgMTIgSmFuIDk4IDA5OjE5OjQ3CiAgICAtIChNYWtlZmlsZS5pbiwgc25tcGJ1bGt3YWxrLmMsIHNubXBkZWx0YS5jLCBzbm1wZ2V0LmMsIHNubXBnZXRuZXh0LmMsCiAgICAgIHNubXBzZXQuYywgc25tcHN0YXR1cy5jLCBzbm1wdGFibGUuYywgc25tcHRlc3QuYywgc25tcHRyYXAuYywKICAgICAgc25tcHRyYXBkLmMsIHNubXB3YWxrLmMpOiBQYXRjaCBmcm9tIE5pZWxzIEJhZ2dlc2VuOgogICAgICAtIHJlbW92ZSB1bnVzZWQgaGVhZGVycy4KICAgICAgLSBzbm1wX3BlcnJvciBjaGFuZ2VzLgoKaGFyZGFrZXIgMTIgSmFuIDk4IDA5OjIxOjU2CiAgICAtIChhbGFybS5jLCBhdC5jLCBjb250ZXh0X3ZhcnMuYywgZXZlbnQuYywgaHJfZGV2aWNlLmMsIGhyX2ZpbGVzeXMuYywKICAgICAgaHJfcGFydGl0aW9uLmMsIGhyX3N0b3JhZ2UuYywgaHJfc3dpbnN0LmMsIGhyX3N3cnVuLmMsIGljbXAuYywKICAgICAgaW50ZXJmYWNlcy5jLCBpcC5jLCBwcm9jLmMsIHN5c3RlbS5jLCB0Y3AuYywgdWRwLmMsIHZhcl9yb3V0ZS5jKToKICAgICAgUGF0Y2ggZnJvbSBOaWVscyBCYWdnZXNlbjoKICAgICAgLSBGaXggaGVhZGVycyBmb3IgRnJlZUJTRCBhbmQgTmV0QlNELgoKaGFyZGFrZXIgMTIgSmFuIDk4IDA5OjQwOjM2CiAgICAtIChGQVEsIElOU1RBTEwsIE1ha2VmaWxlLmluKTogUGF0Y2ggZnJvbSBOaWVscyBCYWdnZXNlbjoKICAgICAgLSBEb2N1bWVudGF0aW9uIHVwZGF0ZSB0byBmaXggcGF0aHMgZnJvbSByZWNlbnQgY2hhbmdlcy4KCmhhcmRha2VyIDEyIEphbiA5OCAwOTo0MTozOAogICAgLSAocmVhZF9jb25maWcuYywgc25tcF92YXJzLmMsIHNubXBkLmMpOiBQYXRjaCBmcm9tIE5pZWxzIEJhZ2dlc2VuOgogICAgICAtIGhlYWRlciBmaXhlcy4KICAgICAgLSBzbm1wX3BlcnJvciB1c2FnZS4KCmhhcmRha2VyIDEyIEphbiA5OCAwOTo0NDo1MQogICAgLSAoYXNuMS5jLCBtaWIuYywgc25tcF9hcGkuaCwgc25tcF9pbXBsLmgsIHN5c3RlbS5oKTogUGF0Y2ggZnJvbSBOaWVscwogICAgICBCYWdnZXNlbjoKICAgICAgLSBoZWFkZXIgY2hhbmdlcyBhbmQgYm9vbGVhbiBjaGVjayBjb3JyZWN0aW9ucy4KCmhhcmRha2VyIDEyIEphbiA5OCAwOTo1MToyNwogICAgLSAocGFyc2UuYyk6IFVuZGlkIGFub24tY2hpbGRyZW4gY2hhbmdlLgoKaGFyZGFrZXIgMTIgSmFuIDk4IDA5OjU2OjE0CiAgICAtIChrZXJuZWxfc3Vub3M1LmMpOiBQYXRjaCBmcm9tIE5pZWxzIEJhZ2dlc2VuOgogICAgICAtIGluY3JlYXNlIGJ1ZmZlciBzaXplIHRvIGluY3JlYXNlIG1heCBpbnRlcmZhY2VzIHJlcG9ydGVkIG9uIFNvbGFyaXMuCgpoYXJkYWtlciAxNiBKYW4gOTggMDk6NDQ6NTYKICAgIC0gKHNubXBkLmMpOiBQYXRjaCBmcm9tIFNoZXNoYWRyaSBZYWdhdGk6CiAgICAgIC0gc2lnbmFsIGEgdHJhcCAoMikgd2hlbiB0aGUgYWdlbnQgaXMgc2h1dCBkb3duLgoKaGFyZGFrZXIgMjEgSmFuIDk4IDExOjA4OjM5CiAgICAtIChDT1BZSU5HKTogdXBkYXRlLgoKaGFyZGFrZXIgMjEgSmFuIDk4IDExOjEyOjAxCiAgICAtICgqL01ha2VmaWxlLmluLCBNYWtlZmlsZS50b3AsIGFjY29uZmlnLmgsIGNvbmZpZy5oLmluLCBjb25maWd1cmUsCiAgICAgIGNvbmZpZ3VyZS5pbik6CiAgICAgIC0gYmVnaW4gc3VwcG9ydCBmb3IgY3JlYXRpbmcgYW5kIHVzaW5nIHNoYXJlZCBsaWJyYXJpZXMuCiAgICAgIC0gYWxsIE1ha2VmaWxlcyBub3cgaW5jbHVkZSBhIE1ha2VmaWxlLnRvcCBmb3IgZWFzaWVyIGZ1dHVyZSBnbG9iYWwgY2hhbmdlcy4KCmhhcmRha2VyIDIxIEphbiA5OCAxMToxMjoyMgogICAgLSAocmVhZF9jb25maWcuYywgc25tcF9hZ2VudC5jLCBzbm1wX3ZhcnMuYywgc25tcGQuYyk6CiAgICAgIC0gaW5jbHVkZSBzdHJ1Y3QuaCBleHBsaWNpdGx5LgoKaGFyZGFrZXIgMjEgSmFuIDk4IDExOjEyOjM0CiAgICAtIChkaXNrLmMsIGVycm9ybWliLmMsIGV4dGVuc2libGUuYywgaW50ZXJmYWNlcy5jLCBsb2FkYXZlLmMsCiAgICAgIG1lbW9yeS5jLCBwYXNzLmMsIHByb2MuYywgc3lzdGVtLmMsIHV0aWxfZnVuY3MuYywgdmFyX3JvdXRlLmMsCiAgICAgIHZlcnNpb25pbmZvLmMpOgogICAgICAtIGluY2x1ZGUgc3RydWN0LmggZXhwbGljaXRseS4KCmhhcmRha2VyIDIxIEphbiA5OCAxNzozMzoyNAogICAgLSAoTWFrZWZpbGUudG9wLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgKi9NYWtlZmlsZS5pbik6CiAgICAgIC0gRG8gYSBiZXR0ZXIgdmVyc2lvbiBvZiBzaGxpYiBzdXBwb3J0LiAgU2hvdWxkIGJlIHVzZWFibGUgbm93IGF0IGxlYXN0LgoKaGFyZGFrZXIgMjEgSmFuIDk4IDIyOjA1OjQ0CiAgICAtIChhY2NvbmZpZy5oLCBjb25maWcuaC5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuaW4pOgogICAgICAtIGNyZWF0ZSBtLyBhbmQgcy8gZGlyZWN0b3JpZXMgYW5kIHVzZSB0aGVtIGZvciBzdXBwbGVtZW50YWwgY29uZmlnCiAgICAgICAgaW5jbHVkZSBmaWxlcyBiYXNlZCBvbiB0aGUgY29uZmlnLmd1ZXNzIG91dHB1dC4KCmhhcmRha2VyIDIzIEphbiA5OCAwODozMDozNQogICAgLSAobWVtb3J5LmMpOiBQYXRjaCBmcm9tIE5pZWxzIEJhZ2dlc2VuOgogICAgICAtIGRvbid0IGNsb3NlIGZpbGUgZGVzY3JpcHRvciBpbiBsaW51eCdzIEZJTEVfVE9fQlVGIG1hY3JvLgoKaGFyZGFrZXIgMjMgSmFuIDk4IDExOjE5OjEyCiAgICAtIChnZW5lcmljLmgsIGkzODYuaCwgaTU4Ni5oLCBpNjg2LmgpOiBtLyouaCBmaWxlIGJlZ2lubmluZ3MuCgpoYXJkYWtlciAyMyBKYW4gOTggMTE6MTk6MzMKICAgIC0gKGJzZC5oLCBnZW5lcmljLmgsIGxpbnV4LmgsIHN5c3YuaCk6IHMvKiBiZWdpbm5pbmdzLgoKaGFyZGFrZXIgMjMgSmFuIDk4IDE2OjEyOjAyCiAgICAtIChyZWFkX2NvbmZpZy5jLCByZWFkX2NvbmZpZy5oLCBzbm1wX3ZhcnMuYywgc25tcF92YXJzLmgsCiAgICAgIGV4dGVuc2libGUuYywgcGFzcy5jKToKICAgICAgLSBjcmVhdGUgbmV3IGZ1bmN0aW9uczoKICAgICAgICAtIHJlZ2lzdGVyX3N1YnRyZWUoKQogICAgICAgIC0gcmVnaXN0ZXJfbWliKCkKICAgICAgICAtIHVucmVnaXN0ZXJfbWliKCkuCiAgICAgIC0gZ2V0IHJpZCBvZiByZWFkX2NvbmZpZyBzcGVjaWFsIHN0dWZmIGZvciBleHRlbnNpYmlsaXR5IGFuZCBwdXQgaXQKICAgICAgICBpbiB0aGVpciBvd24gc3VibW9kdWxlcyB3aGljaCBub3cgY2FsbCByZWdpc3Rlcl9taWIoKS4KCmhhcmRha2VyIDIzIEphbiA5OCAxNjoxNDoyMAogICAgLSAocmVnaXN0cnkuW2NoXSwgVUNELVNOTVAtTUlCLnR4dCk6CiAgICAgIC0gY3JlYXRlIGEgbmV3IHRhYmxlIGF0IHVjZGF2aXMuMTAzIHRvIGRpc3BsYXkgcmVnaXN0ZXJlZCBtaWJzLgoKaGFyZGFrZXIgMjMgSmFuIDk4IDE2OjE1OjA1CiAgICAtIChhdC5jLCBkaXNrLmMsIGhvc3RfcmVzLmgsIGhyX290aGVyLmgsIGljbXAuYywgaW50ZXJmYWNlcy5jLCBpcC5jLAogICAgICBzbm1wX21pYi5jLCBzeXN0ZW0uYywgdGNwLmMsIHVjZF9zbm1wLmgsIHVkcC5jLCB2ZXJzaW9uaW5mby5jKToKICAgICAgLSAjaW5jbHVkZSAic25tcF9hcGkuaCIKCmhhcmRha2VyIDIzIEphbiA5OCAxNjozNDo0MwogICAgLSAoY29uZmlndXJlLCBjb25maWd1cmUuaW4sIHNubXBfdmFycy5jLCBzbm1wX3ZhcnMuaCwgdmFyX3N0cnVjdC5oLAogICAgICBleHRlbnNpYmxlLmMsIHBhc3MuYywgcmVnaXN0cnkuYywgcmVnaXN0cnkuaCwgVUNELVNOTVAtTUlCLnR4dCk6CiAgICAgIC0gbWFrZSB0aGUgbWliIHJlZ2lzdHJ5IHJlY29yZCBhbmQgZGlzcGxheSBhIG1pYiBtb2R1bGUgbmFtZSBhcyB3ZWxsLgoKaGFyZGFrZXIgMzAgSmFuIDk4IDA4OjU3OjU0CiAgICAtIChjb25maWd1cmUsIGNvbmZpZ3VyZS5pbik6IHRlc3QgZm9yICdwcyBhdXgnIChyZWRoYXQgNS4wKS4KCmhhcmRha2VyIDMwIEphbiA5OCAwOTowMTowNgogICAgLSAoVUNELVNOTVAtTUlCLnR4dCwgbWVtb3J5LmMsIG1lbW9yeS5oKTogUGF0Y2ggZnJvbSBMdXVrIGRlIEJvZXI6CiAgICAgIC0gcmVwb3J0IGNhY2hlZCwgYnVmZmVyLCBhbmQgc2hhcmVkIHN0YXRpc3RpY3MgZm9yIGxpbnV4LgoKaGFyZGFrZXIgMzAgSmFuIDk4IDA5OjI0OjE5CiAgICAtIChyZWFkX2NvbmZpZy5jLCBzbm1wX3ZhcnMuYywgdmFyX3N0cnVjdC5oKTogUGF0Y2ggZnJvbSBEYXZlIFNoaWVsZDoKICAgICAgLSBuZXcgc3VidHJlZSBzdHJ1Y3R1cmUgc3lzdGVtLgoKaGFyZGFrZXIgMzAgSmFuIDk4IDEwOjQwOjI2CiAgICAtIChwYXNzLmMpOiBwdXQgcGFzc19jb21hcHJlIGhlcmUuCgpoYXJkYWtlciAzMCBKYW4gOTggMTA6NDE6NTMKICAgIC0gKHJlYWRfY29uZmlnLmMsIHNubXBfdmFycy5jLCBzbm1wX3ZhcnMuaCwgdmFyX3N0cnVjdC5oKToKICAgICAgLSBtZXJnZSBEYXZlJ3MgY29kZSB3aXRoIG1pbmUuICBTdGlsbCBhIGZldyBidWdzIHRvIHdvcmsgdGhyb3VnaC4KCmhhcmRha2VyIDMwIEphbiA5OCAxMDo0MjoxNwogICAgLSAocmVnaXN0cnkuYywgcmVnaXN0cnkuaCk6IGJlZ2luIG11bmdpbmcgZm9yIG5ldyBoaWVyYXJjaHkuCgpoYXJkYWtlciAzMCBKYW4gOTggMTA6NDM6MjgKICAgIC0gKFVDRC1TTk1QLU1JQi50eHQpOiBjaGFuZ2UgbW9kdWxlIGluZGV4aW5nIHRvIHVzZSBvaWQgaW5zdGVhZCBvZiBhIG51bWVyaWMuCgpoYXJkYWtlciAzMCBKYW4gOTggMTA6NDk6NTkKICAgIC0gKGRpc2suYywgaG9zdF9yZXMuaCwgcGFzcy5jLCByZWdpc3RyeS5jLCBzbm1wX21pYi5jLCBzeXN0ZW0uYywKICAgICAgdmVyc2lvbmluZm8uYywgc25tcF9hcGkuaCk6CiAgICAgIC0gaW5jbHVkZSBuZXRpbmV0L2luLmggZm9yIGFkZHJlc3Mgc3RydWN0dXJlLgoKaGFyZGFrZXIgMzAgSmFuIDk4IDEwOjU1OjIwCiAgICB2ZXJzaW9uIHRhZyAoIDMuNC5wcmUyICkKCmhhcmRha2VyIDMwIEphbiA5OCAxMzo0OTo1NgogICAgLSAoUkVBRE1FKTogSSBjYW4ndCByZWFsbHkgaGF2ZSBmb3Jnb3R0ZW4gU2ltb24ncyBuYW1lIGluIHRoZSBsaXN0CiAgICAgIGNvdWxkIEk/CgpoYXJkYWtlciAzMCBKYW4gOTggMTM6NTA6MjgKICAgIC0gKGFjbG9jYWwubTQsIGNvbmZpZ3VyZSk6IGRlZmluZSBpZm5ldCBmb3IgbGludXguCgpoYXJkYWtlciAzMCBKYW4gOTggMTQ6MzE6NTgKICAgIC0gKGFjY29uZmlnLmgsIGNvbmZpZy5oLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbik6IGNoZWNrIGZvciBpZl9zcGVlZC4KCmhhcmRha2VyIDMwIEphbiA5OCAxNDozMjoxMwogICAgLSAoaW50ZXJmYWNlcy5jKTogZmluaXNoIGxpbnV4IHByb2JsZW1zIGFuZCB1c2UgaWZfc3BlZWQuCgpoYXJkYWtlciAzMCBKYW4gOTggMTU6MjU6MDIKICAgIC0gKHNubXBfcGFyc2VfYXJncy5jLCBzbm1wdHJhcC5jKTogZml4IGRlZmF1bHQgcG9ydCBmb3Igc25tcHRyYXAuCgpoYXJkYWtlciAgMiBGZWIgOTggMDg6NTc6NDEKICAgIC0gKGNvbmZpZ3VyZSwgY29uZmlndXJlLmluKTogUGF0Y2ggZnJvbSBKb2huIEhhd2tpbnNvbjoKICAgICAgLSBmaXggdHlwbyBpbiBjb25maWd1cmUgZm9yIHNoYXJlZCBsaWJyYXJ5IGV4dGVuc2lvbiB3L28gc2hhcmVkIGxpYnJhcmllcy4KCmhhcmRha2VyICA2IEZlYiA5OCAxMzoyOTo0MAogICAgLSAoYXQuYywgaWNtcC5jLCBpbnRlcmZhY2VzLmMsIGlwLmMsIHRjcC5jLCB1ZHAuYyk6IHByb3RlY3QgYWdhaW5zdCBubGlzdC5oCgpoYXJkYWtlciAgNiBGZWIgOTggMTM6NDQ6NDQKICAgIC0gKGhyX2Rpc2suYyk6IGNsb3NlKCkgZ290IGNhdWdodCBpbnNpZGUgYW4gZWxzZSBpdCBzaG91bGRuJ3QgaGF2ZSBkdWUKICAgICAgdG8gYW4gaWZkZWYgZXJyb3IuCgpoYXJkYWtlciAgNiBGZWIgOTggMTc6MTA6NTMKICAgIC0gKE1ha2VmaWxlLmluLCBhY2NvbmZpZy5oLCBjb25maWcuaC5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuaW4sCiAgICAgIGF1dG9fbmxpc3QuYywgYXV0b19ubGlzdC5oLCBhdXRvbmxpc3QuaCwga2VybmVsLmMsIHNubXBfdmFycy5jLCBpcC5jKToKICAgICAgLSBjcmVhdGVkIGEgbmV3IGF1dG9fbmxpc3QgZnVuY3Rpb24gYW5kIHVzZSBpdCBpbiBpcC5jLgoKaGFyZGFrZXIgIDYgRmViIDk4IDE3OjExOjI1CiAgICAtIChnZW5lcmljLmgsIGhwdXguaCwgaXJpeC5oLCBsaW51eC5oLCBzb2xhcmlzLmgpOgogICAgICAtIHVwZGF0ZSBmb3IgYXV0b19ubGlzdCBzeW1ib2xzLgoKaGFyZGFrZXIgIDkgRmViIDk4IDExOjAzOjAyCiAgICAtIChhdC5jLCBkaXNrLmMsIGVycm9ybWliLmMsIGV4dGVuc2libGUuYywgaHB1eC5jLCBocl9wcm9jLmMsCiAgICAgIGhyX3N0b3JhZ2UuYywgaHJfc3dydW4uYywgaHJfc3lzdGVtLmMsIGljbXAuYywgaW50ZXJmYWNlcy5jLCBpcC5jLAogICAgICBrZXJuZWxfc3Vub3M1LmMsIGxvYWRhdmUuYywgbWVtb3J5LmMsIHByb2MuYywgdGNwLmMsIHVkcC5jLAogICAgICB2YXJfcm91dGUuYyk6CiAgICAgIC0gdXNlIGF1dG9fbmxpc3QuCgpoYXJkYWtlciAgOSBGZWIgOTggMTE6MDM6MTcKICAgIC0gKGF1dG9fbmxpc3QuaCk6IHByb3RvdHlwZSB3cmFwcGVyLgoKaGFyZGFrZXIgIDkgRmViIDk4IDExOjAzOjU2CiAgICAtIChjb25maWd1cmUsIGNvbmZpZ3VyZS5pbik6CiAgICAgIC0gY2hhbmdlZCAtLXdpdGgtc2hhcmVkLWxpYnJhcmllcyB0byAtLWVuYWJsZS1zaGFyZWQgdG8gbWF0Y2ggb3RoZXIgcGtncy4KICAgICAgLSBkaXNwbGF5IGFyZ3VtZW50cyBmb3VuZCBmb3IgLS1lbmFibGUtc2hhcmVkLgoKaGFyZGFrZXIgIDkgRmViIDk4IDExOjA0OjMxCiAgICAtIChic2QuaCwgYnNkaS5oLCBmcmVlYnNkLmgsIGZyZWVic2QzLmgsIGdlbmVyaWMuaCwgaHB1eC5oLCBuZXRic2QuaCwKICAgICAgc29sYXJpcy5oKToKICAgICAgLSBkZWZpbmUgc3ltYm9scyBmb3IgYXV0b19ubGlzdCB0byB1c2UuCgpoYXJkYWtlciAgOSBGZWIgOTggMTE6MDY6NTMKICAgIC0gKHNubXBfdmFycy5jKTogUGF0Y2ggZnJvbSBEYXZlIFNoaWVsZDoKICAgICAgLSBmaXggcHJvdG90eXBlcyBvbiBteSBicm9rZW4gdGFibGUgd2Fsa2luZyByb3V0aW5lcy4KCmhhcmRha2VyICA5IEZlYiA5OCAxMToxNzo1MgogICAgdmVyc2lvbiB0YWcgKCAzLjQucHJlMyApCgpoYXJkYWtlciAgOSBGZWIgOTggMTE6MTg6NDUKICAgIC0gKGNvbmZpZ3VyZS5pbik6IGNoZWNrIGZvciBpb2N0bHMuaAoKaGFyZGFrZXIgIDkgRmViIDk4IDExOjE4OjU5CiAgICAtIChpbnRlcmZhY2VzLmMpOiAgaW5jbHVkZSBpb2N0bHMuaCBpZiBhdmFpbGFibGUuCgpoYXJkYWtlciAgOSBGZWIgOTggMTE6MjA6MDAKICAgIC0gKGNvbmZpZy5oLmluLCBjb25maWd1cmUpOiBjaGVjayBmb3IgaW9jdGxzLmguCgpoYXJkYWtlciAxMSBGZWIgOTggMDk6MTk6MzMKICAgIC0gKGdlbmVyaWMuaCwgYXV0b19ubGlzdC5jLCBhdC5jLCBocl9wcm9jLmMsIGhyX3N0b3JhZ2UuYywgbWVtb3J5LmMsCiAgICAgIHRjcC5jLCB1ZHAuYywgdmFyX3JvdXRlLmMpOiBQYXRjaCBmcm9tIERhdmUgU2hpZWxkOgogICAgICAtIGZpeCBhbGwgbXkgdHlwb3MgOy0pLgogICAgICAtIGNyZWF0ZSBhdXRvX25saXN0X3ZhbHVlIHRvIHJldHVybiB0aGUgbG9va2VkLXVwIHZhbHVlLgoKaGFyZGFrZXIgMTEgRmViIDk4IDA5OjI4OjA5CiAgICAtIChjb25maWd1cmUsIGNvbmZpZ3VyZS5pbik6CiAgICAgIC0gcHMgYXV4IHNob3VsZCBkZWZpbmUgYXV4IG5vdCAtYXV4LgoKaGFyZGFrZXIgMTEgRmViIDk4IDA5OjI4OjMzCiAgICAtIChob3N0X3Jlcy5oKTogUGF0Y2ggZnJvbSBEYXZlIFNoaWVsZDoKICAgICAgLSBkb24ndCBpbmNsdWRlIGNvbmZpZy5oCgpoYXJkYWtlciAxMSBGZWIgOTggMDk6Mjg6NDQKICAgIC0gKGhyX25ldHdvcmsuYyk6IFBhdGNoIGZyb20gRGF2ZSBTaGllbGQ6CiAgICAgIC0gc29sYXJpcyBmaXhlcy4KCmhhcmRha2VyIDExIEZlYiA5OCAwOToyOTowNgogICAgLSAoc29sYXJpcy5oKTogUGF0Y2ggZnJvbSBEYXZlIFNoaWVsZDoKICAgICAgLSB1bmRlZiBJUF9GT1JXQVJESU5HX1NZTUJPTCBiZWZvcmUgZGVmaW5pbmcgaXQuCgpoYXJkYWtlciAxMSBGZWIgOTggMTY6NDQ6MTMKICAgIC0gKGNvbmZpZ3VyZSwgY29uZmlndXJlLmluKTogc2VkIGRvZXNuJ3QgbGlrZSBbYS16XSsgdHlwZSBleHByZXNzaW9ucy4KCmhhcmRha2VyIDEzIEZlYiA5OCAwOTowNzozMQogICAgLSAoRkFRKTogdHlwbzogYXV0aHRyYXBzZW5hYmxlIC0+IGF1dGh0cmFwZW5hYmxlLgoKaGFyZGFrZXIgMTcgRmViIDk4IDA5OjUwOjQzCiAgICAtIChzbm1wX2FwaS5jLCBzbm1wX2FwaS5oKToKICAgICAgLSB1c2Ugc25tcF9pcGFkZHIgaW5zdGVhZCBvZiBpcGFkZHIgdG8gYXZvaWQgaHB1eCBjb25mbGljdHMuCgpoYXJkYWtlciAxNyBGZWIgOTggMDk6NTM6MTIKICAgIC0gKGF1dG9fbmxpc3QuYywgYXV0b25saXN0LmgsIHNubXBfdmFycy5jKToKICAgICAgLSB1c2UgYXBwcm9wcmlhdGUgbWFsbG9jcywgYW5kIE5VTEwgaW5pdGlhbGl6YXRpb24gb2YgcG9pbnRlcnMuCiAgICAgIC0gbWFsbG9jIHRoZSBzeW1ib2wgcmF0aGVyIHRoYW4gdXNpbmcgYSBmaXhlZCBsZW5ndGguCiAgICAgIC0gaW5zZXJ0IGRlYnVnZ2luZyBjb2RlLgogICAgICAtIGVuYWJsZSBwcmludGluZyBvZiB0aGUgbmxpc3QgdHJlZSBpZiBURVNUSU5HIGlzIGRlZmluZWQuCgpoYXJkYWtlciAxNyBGZWIgOTggMDk6NTQ6MDEKICAgIC0gKHRjcC5jLCB1ZHAuYyk6CiAgICAgIC0gbmxpc3Qgc3ltYm9sIG5hbWUgZXJyb3JzLgoKaGFyZGFrZXIgMTggRmViIDk4IDA4OjA2OjAwCiAgICAtIChFWEFNUExFLmNvbmYuZGVmLCB2bXN0YXQuYywgdm1zdGF0LmgsIHVjZF9zbm1wLmgsCiAgICAgIFVDRC1TTk1QLU1JQi50eHQpOiBQYXRjaCBmcm9tIEx1dWsgZGUgQm9lcjoKICAgICAgLSBpbXBsbWVudCBhIHZtc3RhdCBtaWIgZ3JvdXAgb24gbGludXguCgpoYXJkYWtlciAxOCBGZWIgOTggMDg6MTU6NTYKICAgIC0gKGNvbmZpZy5oLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbik6IFBhdGNoIGZyb20gU2ltb24gTGVpbmVuOgogICAgICAtIGNoZWNrIGZvciBzeXMvc3lzbXAuaC4KCmhhcmRha2VyIDE4IEZlYiA5OCAwODoxNjoyMQogICAgLSAoYXV0b19ubGlzdC5jKTogUGF0Y2ggZnJvbSBTaW1vbiBMZWluZW46CiAgICAgIC0gZml4IGEgZGVidWdnaW5nIHN0YXRlbWVudCAobWlzc2luZyBhIHZhcmlhYmxlKS4KCmhhcmRha2VyIDE4IEZlYiA5OCAwODoxODowNQogICAgLSAoYXQuYywgaWNtcC5jLCBpbnRlcmZhY2VzLmMsIGlwLmMsIHRjcC5jLCB1ZHAuYywgaXJpeC5oKToKICAgICAgUGF0Y2ggZnJvbSBTaW1vbiBMZWluZW46CiAgICAgIC0gcG9ydCB0byBpcml4LgoKaGFyZGFrZXIgMTggRmViIDk4IDExOjQ1OjIwCiAgICAtIChzZWRzY3JpcHQuaW4pOiBkZWZpbmUgTElCRElSIGFuZCBEQVRBRElSLgoKaGFyZGFrZXIgMTggRmViIDk4IDExOjQ2OjQ4CiAgICAtIChzbm1wZC4xLmRlZiwgc25tcGQuY29uZi41LmRlZik6IGNoYW5nZSB0byBEQVRBRElSIGZyb20gTElCRElSLgoKaGFyZGFrZXIgMTggRmViIDk4IDEzOjMxOjA3CiAgICAtIChkaXNrLmgsIGV4dGVuc2libGUuaCwgbG9hZGF2ZS5oLCBwcm9jLmgsIFVDRC1TTk1QLU1JQi50eHQpOgogICAgICAtIHR1cm4gdGhlc2UgbWlicyBpbnRvIHJlYWwgdGFibGVzLiAgUmVxdWlyZWQgY2hhbmdpbmcgdGhlIG1pYiB0aG91Z2guCgpoYXJkYWtlciAxOCBGZWIgOTggMTM6MzQ6NTUKICAgIC0gKHNubXBkLmNvbmYuNS5kZWYpOiBhdXRodHJhcHNlbmFibGUgLT4gYXV0aHRyYXBlbmFibGUuCgpoYXJkYWtlciAxOCBGZWIgOTggMTM6NDQ6MTMKICAgIC0gKGF0LmMsIGV4YW1wbGUuYywgaHB1eC5jLCBocl9kZXZpY2UuYywgaHJfZGlzay5jLCBocl9maWxlc3lzLmMsCiAgICAgIGhyX25ldHdvcmsuYywgaHJfcGFydGl0aW9uLmMsIGhyX3ByaW50LmMsIGhyX3Byb2MuYywgaHJfc3RvcmFnZS5jLAogICAgICBocl9zd2luc3QuYywgaHJfc3dydW4uYywgaHJfc3lzdGVtLmMsIGljbXAuYywgaW50ZXJmYWNlcy5jLCBpcC5jLAogICAgICBwYXNzLmMsIHJlZ2lzdHJ5LmMsIHNtdXguYywgc25tcF9taWIuYywgc3lzdGVtLmMsIHRjcC5jLCB1ZHAuYywKICAgICAgdmFyX3JvdXRlLmMsIHdvbWJhdC5jKToKICAgICAgLSBhbGwgYmNvcHlzIC0+IG1lbWNweS4KICAgICAgLSBpbmNsdWRlIGEgZmV3IGV4dHJhIGhlYWRlcnMgZm9yIERFQlVHUCBzdGF0ZW1lbnRzLgoKaGFyZGFrZXIgMTggRmViIDk4IDE0OjI1OjUzCiAgICAtIChhY2xfdmFycy5jLCBhdC5jLCBjb250ZXh0X3ZhcnMuYywgZGlzay5jLCBob3N0X3Jlcy5oLCBocl9kaXNrLmMsCiAgICAgIGhyX2ZpbGVzeXMuYywgaHJfc3RvcmFnZS5jLCBocl9zd2luc3QuYywgaHJfc3dydW4uYywgaHJfdXRpbHMuYywKICAgICAgaWNtcC5jLCBpbnRlcmZhY2VzLmMsIGludGVyZmFjZXMuaCwgaXAuYywgbWVtb3J5LmMsIG1pYmluY2wuaCwKICAgICAgcGFydHlfdmFycy5jLCBwYXNzLmMsIHByb2MuYywgcmVnaXN0cnkuYywgc211eC5jLCBzbm1wX21pYi5jLAogICAgICBzeXN0ZW0uYywgdGNwLmMsIHVkcC5jLCB2YXJfcm91dGUuYywgdmVyc2lvbmluZm8uYywgdmlld192YXJzLmMsCiAgICAgIHZtc3RhdC5jKToKICAgICAgLSBtYXNzaXZlIC1XYWxsIGFuZCAtLXN0cmljdC1wcm90b3R5cGVzIGNoZWNraW5nLgogICAgICAtIGJ6ZXJvIC0+IG1lbXNldC4KCmhhcmRha2VyIDE4IEZlYiA5OCAxNDozMjowNQogICAgLSAocmVhZF9jb25maWcuYywgc25tcF92YXJzLmMpOgogICAgICAtIHByb3RvdHlwaW5nIGFuZCAtLVdhbGwgY2hlY2tzLgoKaGFyZGFrZXIgMTggRmViIDk4IDE0OjMyOjM4CiAgICAtIChzbm1wX2FwaS5jLCBzbm1wX2FwaS5oKTogcHJvdG90eXBpbmcgY2hlY2tzLgoKaGFyZGFrZXIgMTggRmViIDk4IDE2OjI4OjUxCiAgICAtIChvcGVuYnNkLmgpOiBjcmVhdGVkLgoKaGFyZGFrZXIgMTggRmViIDk4IDE2OjI5OjU4CiAgICAtIChhY2NvbmZpZy5oLCBVQ0QtU05NUC1NSUIudHh0KToKICAgICAgLSByZW1vdmVkIHVubmVlZGVkIHN0dWZmLgogICAgICAtIGFkZGVkIG9wZW5ic2QuCgpoYXJkYWtlciAxOCBGZWIgOTggMTY6MzA6NDcKICAgIC0gKGF0LmMsIHByb2MuYywgdGNwLmMsIHVkcC5jLCB2YXJfcm91dGUuYywgYnNkLmgsIGJzZGkuaCwgZnJlZWJzZC5oLAogICAgICBnZW5lcmljLmgsIGhwdXguaCwgbmV0YnNkLmgpOgogICAgICAtIHRyaWVkIHRvIG1lcmdlIHNvbWUgdGhpbmdzIGludG8gcy8qLmggZGVmaW5lcyBpbnN0ZWFkLiAgVGhlcmUgaXMgYQogICAgICAgIGxvdCB0byBnbyBzdGlsbC4KCmhhcmRha2VyIDE4IEZlYiA5OCAxNjozMzoxNAogICAgLSAoY29uZmlnLmguaW4pOiBvcGVuYnNkIGRlZmluZXMuCgpoYXJkYWtlciAxOCBGZWIgOTggMTY6MzM6NDMKICAgIC0gKCovTWFrZWZpbGUuaW4pOiBtYWtlIGRlcGVuZC4KCmhhcmRha2VyIDE4IEZlYiA5OCAxNjo1MToxOAogICAgdmVyc2lvbiB0YWcgKCAzLjQucHJlNCApCgpoYXJkYWtlciAyMCBGZWIgOTggMDk6MTk6MDAKICAgIC0gKGludGVyZmFjZXMuYyk6IFBhdGNoIGZyb20gU2ltb24gTGVpbmVuOgogICAgICAtIGZpeCBpbmNsdWRlIGZpbGUgZGVwZW5kYW5jaWVzIG9uIGlyaXggd2l0aCBfS0VSTkVMIGRlZmluZWQuCgpoYXJkYWtlciAyMCBGZWIgOTggMTE6MTU6MTQKICAgIC0gKCovTWFrZWZpbGUuaW4pOiBmaXggbWFrZSBkZXBlbmQgdG8gbG9vayBmb3IgYW5kIHN0cmlwIC91c3IvbGliLyouCgpoYXJkYWtlciAyNSBGZWIgOTggMDc6Mjc6MDkKICAgIC0gKHJlYWRfY29uZmlnLmMsIHNubXBkLmMpOiBQYXRjaCBmcm9tIE5pZWxzIEJhZ2dlc2VuOgogICAgICAtIGZpeCByZWFkX2NvbmZpZyBwYXJzZXIncyBlbmQgb2YgbGluZSBwcm9ibGVtcy4KCmhhcmRha2VyICA0IE1hciA5OCAxNTo0OTozMgogICAgLSAoQ09QWUlORyk6IGRvY3VtZW50YXRpb24gcmVxdWlyZW1lbnQgY2hhbmdlLgoKaGFyZGFrZXIgIDYgTWFyIDk4IDE0OjAxOjUyCiAgICAtIChNYWtlZmlsZS5pbiwga2VybmVsLmMsIHJlYWRfY29uZmlnLmMsIHJlYWRfY29uZmlnLmgsIHNubXBfYWdlbnQuYywKICAgICAgc25tcF92YXJzLmMsIHNubXBkLmMsIGFjbF92YXJzLmMsIGFsYXJtLmMsIGNvbnRleHRfdmFycy5jLCBkaXNrLmMsCiAgICAgIGV2ZW50LmMsIGV4dGVuc2libGUuYywgaWNtcC5jLCBpbnRlcmZhY2VzLmMsIGlwLmMsIG1pYmluY2wuaCwKICAgICAgcGFydHlfdmFycy5jLCBwYXNzLmMsIHByb2MuYywgcmVnaXN0cnkuYywgcmVnaXN0cnkuaCwgcm91dGVfd3JpdGUuYywKICAgICAgc25tcF9taWIuYywgc3lzdGVtLmMsIHRjcC5jLCB1ZHAuYywgdmFjbV92YXJzLmMsIHZhY21fdmFycy5oLAogICAgICB2YXJfcm91dGUuYywgdmVyc2lvbmluZm8uYywgdmlld192YXJzLmMsIHNubXBfcGFyc2VfYXJncy5jLAogICAgICBzbm1wZGVsdGEuYywgc25tcGdldC5jLCBzbm1wZ2V0bmV4dC5jLCBzbm1wc2V0LmMsIHNubXBzdGF0dXMuYywKICAgICAgc25tcHRhYmxlLmMsIHNubXB0ZXN0LmMsIHNubXB0cmFuc2xhdGUuYywgc25tcHRyYXAuYywgc25tcHRyYXBkLmMsCiAgICAgIGlmLmMsIGluZXQuYywgcm91dGUuYywgc25tcGQuY29uZi41LmRlZiwgc25tcHRhYmxlLjEsIC5pbmRleCwKICAgICAgTWFrZWZpbGUuaW4sIFNOTVAtRlJBTUVXT1JLLU1JQi50eHQsIFNOTVAtTVBELU1JQi50eHQsCiAgICAgIFNOTVAtTk9USUZJQ0FUSU9OLU1JQi50eHQsIFNOTVAtUFJPWFktTUlCLnR4dCwgU05NUC1UQVJHRVQtTUlCLnR4dCwKICAgICAgU05NUC1VU0VSLUJBU0VELVNNLU1JQi50eHQsIFNOTVAtVklFVy1CQVNFRC1BQ00tTUlCLnR4dCwKICAgICAgTWFrZWZpbGUuaW4sIGFjbC5oLCBhY2xfcGFyc2UuYywgYXNuMS5jLCBjb250ZXh0LmgsIGNvbnRleHRfcGFyc2UuYywKICAgICAgbWliLmMsIHBhcnR5LmgsIHBhcnR5X3BhcnNlLmMsIHNubXAuYywgc25tcC5oLCBzbm1wX2FwaS5jLAogICAgICBzbm1wX2F1dGguYywgc25tcF9jbGllbnQuYywgc25tcF9pbXBsLmgsIHN5c3RlbS5jLCB2YWNtLmMsIHZhY20uaCwKICAgICAgdmlldy5jKTogUGF0Y2ggZnJvbSBOaWVscyBCYWdnZXNlbjoKICAgICAgLSBJbXBsZW1lbnQgdGhlIFNOTVB2MyBWaWV3IEJhc2VkIEFjY2VzcyBDb250cm9sIE1vZGVsIChSRkMgMjI3NSkuCiAgICAgIC0gaGVhZGVyIGZpeGVzLgogICAgICAtIGJldHRlciBoZWFkZXItZmlsZSAjZGVmaW5lIG5hbWVzIHRvIGluY2x1ZGUgU05NUF8sIEFTTl8sIGV0Yy4gcHJlZml4ZXMuCgpoYXJkYWtlciAgNiBNYXIgOTggMTU6NDc6MDEKICAgIC0gKHV0aWxfZnVuY3MuYyk6CiAgICAgIC0gcmVtb3ZlIEdMT0JBTC1TRUNVUklUWSBjaGVja3MuCgpoYXJkYWtlciAgNiBNYXIgOTggMTU6NDc6MTkKICAgIC0gKG1pYklJLmgpOiBhZGQgdmFjbV92YXJzLgoKaGFyZGFrZXIgIDYgTWFyIDk4IDE1OjQ3OjQwCiAgICAtIChob3N0X3Jlcy5oKTogbW92ZSBzbm1wX2FwaS5oIHVwIGFib3ZlIHNubXBfaW1wbC5oLgoKaGFyZGFrZXIgIDYgTWFyIDk4IDE1OjQ4OjMzCiAgICAtIChhY2NvbmZpZy5oLCBjb25maWcuaC5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuaW4pOgogICAgICAtIHJlbW92ZSBzZWN1cml0eSB0eXBlIHByb21wdHMuCgpoYXJkYWtlciAgOSBNYXIgOTggMTc6NDA6MDQKICAgIC0gKG1pYklJLmMsIG1pYklJLmgsIHN5c09SVGFibGUuYywgc3lzT1JUYWJsZS5oLCBzeXN0ZW0uYywgdjJwYXJ0eS5jLAogICAgICB2YWNtX3ZhcnMuYywgdmFjbV92YXJzLmgpOgogICAgICAtIGltcGxlbWVudCBzeXNPUlRhYmxlLgogICAgICAtIHJlZ2lzdGVyIG1pYnMgdW5kZXIgaXQuCgpoYXJkYWtlciAxMSBNYXIgOTggMDg6MDY6MTcKICAgIC0gKCovKi8qLyopOiBQYXRjaCBmcm9tIE5pZWxzIEJhZ2dlc2VuOgogICAgICAtIGZpeCBhdXRvX25saXN0IG9uIHByZWNlZWRpbmcgXyBhcmNoaXRlY3R1cmVzLgogICAgICAtIENoYW5nZSAqYWxsKiBkZWZpbmUgdXNhZ2UgdG8gbmV3IFNOTVBfIGFuZCBBU05fIHByZWZpeGVzLgogICAgICAtIGxlYXZlIG1pYiBhY2Nlc3Mgb3BlbiBpZiBubyBjb20yc2VjIHN0YXRlbWVudHMgd2VyZSBmb3VuZCBpbiBzbm1wZC5jb25mLgoKaGFyZGFrZXIgMTEgTWFyIDk4IDA5OjQwOjQyCiAgICAtIChocHV4LmgsIGhyX2ZpbGVzeXMuaCwgbWVtb3J5LmgsIHNubXBfYmdwLmgsIHNubXBfb3NwZi5oLAogICAgICBzbm1wX3JpcDIuaCwgc3lzT1JUYWJsZS5oLCB2bXN0YXQuaCk6CiAgICAgIC0gZmluaXNoIGNvbnZlcnRpbmcgYSBmZXcgb2YgdGhlIGZpbGVzIHRoYXQgTmllbHMgbWlzc2VkLgoKaGFyZGFrZXIgMTEgTWFyIDk4IDEwOjMwOjUwCiAgICAtIChzeXNPUlRhYmxlLmMsIHN5c09SVGFibGUuaCwgc3lzdGVtLmMsIHN5c3RlbS5oKToKICAgICAgLSBmaXggdGltZSB2YWx1ZXMgYW5kIG1vdmUgc3lzT1JMYXN0Q2hhbmdlZCB0byB0aGUgc3lzdGVtIGdyb3VwLgoKaGFyZGFrZXIgMTEgTWFyIDk4IDEyOjE0OjA5CiAgICAtICgqKTogUGF0Y2ggZnJvbSBDcmFpZyBCZXZpbnMgZm9yIE9wZW5CU0QKCmhhcmRha2VyIDExIE1hciA5OCAxMjoyNzowMQogICAgLSAoaW50ZXJmYWNlcy5jLCB0Y3AuYywgdWRwLmMsIHZhcl9yb3V0ZS5jLCB2YXJfcm91dGUuaCk6IFBhdGNoIGZyb20KICAgICAgQ3JhaWcgQmV2aW5zOgogICAgICAtIHBvcnQgdG8gT3BlbkJTRC4KCmhhcmRha2VyIDExIE1hciA5OCAxMjo0NTo0NgogICAgLSAoKik6IHBhdGNoIGZyb20gR2FycmV0dCBXb2xsbWFuIGZvciBGcmVlQlNELgoKaGFyZGFrZXIgMTEgTWFyIDk4IDEyOjU2OjM3CiAgICAtIChhY2xvY2FsLm00LCBjb25maWcuaC5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGljbXAuYywKICAgICAgaW50ZXJmYWNlcy5jLCBpcC5jLCB0Y3AuYywgdWRwLmMsIHZhcl9yb3V0ZS5jKTogUGF0Y2ggZnJvbSBHYXJyZXR0CiAgICAgIFdvbGxtYW46CiAgICAgIC0gZnJlZWJzZCAzIHN5c2N0bCBpbXBsZW1lbnRhdGlvbnMuCgpoYXJkYWtlciAxMSBNYXIgOTggMTQ6NDE6MTEKICAgIC0gKHJlYWRfY29uZmlnLmMsIHJlYWRfY29uZmlnLmgsIHNubXBfYWdlbnQuYywgc25tcF92YXJzLmMsIHNubXBkLmMsCiAgICAgIGhvc3RfcmVzLmgsIGhyX2RldmljZS5jLCBocl9kZXZpY2UuaCwgaHJfZGlzay5jLCBocl9kaXNrLmgsCiAgICAgIGhyX2ZpbGVzeXMuYywgaHJfZmlsZXN5cy5oLCBocl9uZXR3b3JrLmMsIGhyX25ldHdvcmsuaCwgaHJfb3RoZXIuYywKICAgICAgaHJfcGFydGl0aW9uLmMsIGhyX3BhcnRpdGlvbi5oLCBocl9wcmludC5jLCBocl9wcmludC5oLCBocl9wcm9jLmMsCiAgICAgIGhyX3Byb2MuaCwgaHJfc3RvcmFnZS5jLCBocl9zdG9yYWdlLmgsIGhyX3N3aW5zdC5jLCBocl9zd2luc3QuaCwKICAgICAgaHJfc3dydW4uYywgaHJfc3dydW4uaCwgaHJfc3lzdGVtLmMsIGhyX3N5c3RlbS5oLCBpbnRlcmZhY2VzLmMsCiAgICAgIGlwLmMsIG1pYklJLmMsIG1pYklJLmgsIHN5c09SVGFibGUuYywgdjJwYXJ0eS5jLCB2MnBhcnR5LmgsCiAgICAgIHZhY21fdmFycy5jLCB2YWNtX3ZhcnMuaCk6CiAgICAgIC0gbWFzc2l2ZSBwcm90b3R5cGluZyBhbmQgLS1XYWxsIGZpeGVzLgogICAgICAtIGZpeGVkIHRoaW5ncyBicm9rZW4gYnkgdGhlIGZyZWVic2QgcGF0Y2ggKG9ubHkgc29tZSBJJ20gc3VyZSkuCgpoYXJkYWtlciAxMSBNYXIgOTggMTU6NDI6MzUKICAgIC0gKGF1dG9fbmxpc3QuYyk6IGJldHRlciBkZWJ1Z2dpbmcgcHJpbnRmcwoKaGFyZGFrZXIgMTEgTWFyIDk4IDE1OjQ1OjIyCiAgICAtIChocHV4LmgpOiBzd2l0Y2ggaW5jb3JyZWN0IGFycHRhYiBzeW1ib2xzLgoKaGFyZGFrZXIgMTEgTWFyIDk4IDE1OjU2OjEzCiAgICAtIChSRUFETUUpOiBuYW1lIHVwZGF0ZS4KCmhhcmRha2VyIDExIE1hciA5OCAxNTo1NzoxNgogICAgLSAoKi9NYWtlZmlsZS5pbik6IGRlcGVuZCB1cGRhdGUuCgpoYXJkYWtlciAxMSBNYXIgOTggMTc6MDU6NDEKICAgIC0gKHN5c3RlbS5jKTogZG9uJ3QgY2hvbXAgbmV3IGxpbmUgb24gcmVhZF9jb25maWcgdXRpbHMuCgpoYXJkYWtlciAxOCBNYXIgOTggMDk6MTc6NDIKICAgIC0gKFJFQURNRSk6IGNoYW5nZWQgT1YgcGF0aCdzIHRvIG5ld2VyIHJlbGVhc2UgcGF0aHMuCgpoYXJkYWtlciAxOCBNYXIgOTggMTM6MTA6MzUKICAgIC0gKGFjY29uZmlnLmgsIGNvbmZpZy5oLmluLCBzZWRzY3JpcHQuaW4sIFVDRC1TTk1QLU1JQi50eHQpOgogICAgICAtIHJlLW51bWJlcmluZyBvZiB0aGUgbmV3IHRhYmxlIG1vZHVsZXMuCgpoYXJkYWtlciAxOCBNYXIgOTggMTM6MjY6MjIKICAgIC0gKGV4dGVuc2libGUuYywgbWVtb3J5LmMsIHBhc3MuYywgcHJvYy5jLCB1dGlsX2Z1bmNzLmMsIHV0aWxfZnVuY3MuaCk6CiAgICAgIC0gd2FpdCBmb3IgcGlkIGFmdGVyIGdldF9leGVjX291dHB1dCgpIHdpdGggbmV3IHdhaXRfb25fZXhlYygpIGZ1bmN0aW9uLgoKaGFyZGFrZXIgMTggTWFyIDk4IDEzOjU2OjE2CiAgICAtIChhY2NvbmZpZy5oLCBjb25maWcuaC5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuaW4sIHJlYWRfY29uZmlnLmMsCiAgICAgIHNubXBkLmMsIHNubXBfcGFyc2VfYXJncy5jLCBzbm1wdHJhcGQuYywgbWFpbi5jLCBtaWJfYXBpLjMsCiAgICAgIGNvbmZpZy5oKToKICAgICAgLSBTTk1QTElCUEFUSCAtPiBTTk1QU0hBUkVQQVRICiAgICAgIC0gYSByZWFsIFNOTVBMSUJQQVRICiAgICAgIC0gbWFrZSB0aGUgYWdlbnQgcmVhZCAuY29uZiBmaWxlcyBmcm9tIFNOTVBTSEFSRVBBVEg6U05NUExJQlBBVEguCgpoYXJkYWtlciAxOCBNYXIgOTggMTQ6MDk6MzEKICAgIHZlcnNpb24gdGFnICggMy40LnByZTUgKQoKaGFyZGFrZXIgMjIgTWFyIDk4IDE4OjEzOjQxCiAgICAtIChwYXNzLmMsIHByb2MuYywgdmFjbV92YXJzLmMpOiBQYXRjaCBmcm9tIFNpbW9uIEJ1cmdlOgogICAgICAtIG1vdmUgc3lzL3R5cGVzLmggdXAgZm9yIHVsdHJpeC4KCmhhcmRha2VyIDI1IE1hciA5OCAwOToxNTo0NQogICAgLSAodGNwLmMpOiBpbmNsdWRlIHRjcGlwLmggZm9yIGRpZ2l0YWwgdW5peC4KCmhhcmRha2VyIDI1IE1hciA5OCAxMDozOToxMwogICAgLSAocmVhZF9jb25maWcuYywgcmVhZF9jb25maWcuaCwgc25tcF92YXJzLmMsIHJlZ2lzdHJ5LmMsIHJlZ2lzdHJ5LmgpOgogICAgICAtIGZpeCB0aGUgcmVnaXN0cnkgbWliIHRvIHVzZSB0aGUgbmV3IG1vZHVsZSBzdHJ1Y3R1cmUuCiAgICAgIC0gY3JlYXRlIGEgd29ya2luZyBmaW5kX3N1YnRyZWUoKSBhbmQgZmluZF9zdWJ0cmVlX25leHQoKS4KCmhhcmRha2VyIDI1IE1hciA5OCAxMDozOTo1MAogICAgLSAoYWNjb25maWcuaCwgY29uZmlnLmguaW4pOiBzaW1wbHkgZG9uJ3QgZGVmaW5lIENBTl9VU0VfTkxJU1Qgb24gbGludXguCgpoYXJkYWtlciAyNSBNYXIgOTggMTA6NDQ6MDYKICAgIC0gKHNubXBkLmMsIHNubXBfYXBpLmMpOiBTcGVsbGluZyBlcnJvcnMgZnJvbSB0aGUgQ01VIGNvZGUgZml4ZWQuCgpoYXJkYWtlciAyNSBNYXIgOTggMTA6NDY6MzYKICAgIC0gKGFjY29uZmlnLmgsIGNvbmZpZy5oLmluLCBsaW51eC5oKTogbmV3IGRlZmluZTogRE9OVF9VU0VfTkxJU1QuCgpoYXJkYWtlciAyNSBNYXIgOTggMTA6NTk6MjAKICAgIC0gKGludGVyZmFjZXMuYyk6IFBhdGNoIGZyb20gTmllbHMgQmFnZ2VzZW46CiAgICAgIC0gQWRkIGFuICYgdG8gYXJwY29tLmFjX2VuYWRkciBpbiBtZW1zZXQuCgpoYXJkYWtlciAyNSBNYXIgOTggMTI6NDg6MzAKICAgIC0gKE1ha2VmaWxlLmluLCBpbnQ2NC5jLCBpbnQ2NC5oLCBtaWIuYyk6IENvZGUgZnJvbSBEYXZpZCBULiBQZXJraW5zOgogICAgICAtIGludGVncmF0ZWQgRGF2aWQncyBjb2RlIHRvIHByaW50IGNvdW50ZXI2NHMgYXMgaW50ZWdlcnMgcmF0aGVyIHRoYW4gaGV4LgoKaGFyZGFrZXIgMjUgTWFyIDk4IDEzOjA3OjAwCiAgICAtICh2MnBhcnR5LmMsIG1pYklJLmMsIHZhY21fdmFycy5jKTogZGVjbGFpciByZWdpc3RyYXRpb24gdmFyaWFibGVzIHN0YXRpY2x5LgoKaGFyZGFrZXIgMjUgTWFyIDk4IDE2OjQ5OjU2CiAgICAtIChocHV4LmMpOiBmaXggd3JpdGVfbWV0aG9kIGRlY2xhcmF0aW9uLgoKaGFyZGFrZXIgMjYgTWFyIDk4IDA3OjIyOjMwCiAgICAtICgqLmMpOiBQYXRjaCBmcm9tIE5pZWxzIEJhZ2dlc2VuOgogICAgICAtIG1pc2MgcG9ydGluZyBpbXByb3ZlbWVudHMgKHRoZSBic2QgZ3JvdXBzLCBzdW5vcywgLi4uKS4KICAgICAgLSBzd2l0Y2ggYXV0b19ubGlzdHMgY2FsbGluZyBvcmRlciBvZiBfIHZzIG5vbiBfIGxvb2t1cHMuCiAgICAgIC0gcmV2ZXJzZSBhbGwgc3RyaW5nLmgvc3RyaW5ncy5oIGluY2x1ZGUgcG9zc2liaWxpdGllcy4KCmhhcmRha2VyIDI3IE1hciA5OCAwOToyMDowNAogICAgLSAoc25tcHRyYXBkLmMpOgogICAgICAtIEJldGEgdmVyc2lvbiBvZiBhbiBleHRlbnNpYmxlIHRyYXAgZGVtb24uCiAgICAgICAgLSAtQyAnY29tbWFuZCcgb24gdGhlIGNvbW1hbmQgbGluZSBydW5zIHRoZSBjb21tYW5kIGFuZCBmZWVkcyBpdAogICAgICAgICAgc3RkaW4gaW5mb3JtYXRpb24gYWJvdXQgdGhlIHRyYXAuCiAgICAgICAgLSB2MSB0cmFwcyBhcmUgY29udmVydGVkIHRvIHYyIHRyYXBzIGZvciBjb25zaXN0YW5jeSBvZgogICAgICAgICAgaW5mb3JtYXRpb24gc2VudCB0byB0aGUgc2NyaXB0cy4KCmhhcmRha2VyIDI3IE1hciA5OCAxMToyMDoyMQogICAgLSAocmVhZF9jb25maWcuYywgcmVhZF9jb25maWcuaCk6CiAgICAgIC0gY3JlYXRlIGNvbmZpZ19wd2FybigpIHRoYXQgZG9lc24ndCBpbmNyZWFzZSB0aGUgZXJyb3IgY291bnQgdG8KICAgICAgICBwcmV2ZW50IGV4aXRpbmcuICBVc2VkIGZvciBkaXNrcywgc2luY2Ugc29tZSBtaWdodCBieSBwcm9jZXNzIG9yCiAgICAgICAgbmZzIG1vdW50ZWQuCgpoYXJkYWtlciAyNyBNYXIgOTggMTE6MjA6NTQKICAgIC0gKGRpc2suYyk6IHVzZSBjb25maWdfcHdhcm4oKSBmb3IgbWlzc2luZyBkaXNrcy4KCmhhcmRha2VyIDI3IE1hciA5OCAxMToyMjozNQogICAgLSAoaHJfZGV2aWNlLmMpOiBjaGVjayBkZXZpY2UgaW5kZXggYWdhaW5zdCBtYXhpbXVtIChzZWdmYXVsdCBvbiBIUFVYKS4KCmhhcmRha2VyIDI3IE1hciA5OCAxNjoxMDowNQogICAgLSAoUkVBRE1FLCBjb25maWcuaC5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuaW4sIHNubXBkLmMpOiBQYXRjaCBmcm9tCiAgICAgIEFydGh1ciBIeXVuOgogICAgICAtIHRjcHdyYXBwZXJzIHN1cHBvcnQuCgpoYXJkYWtlciAyNyBNYXIgOTggMTY6MjM6MDMKICAgIC0gKGludGVyZmFjZXMuYyk6IEludGVyZmFjZXNfU2Nhbl9OZXh0IG5lZWRlZCBhIDR0aCAoTlVMTCkgYXJndW1lbnQuCgpoYXJkYWtlciAyNyBNYXIgOTggMTY6MjM6MzMKICAgIC0gKGFjY29uZmlnLmgsIGNvbmZpZy5oLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgc25tcGQuYyk6CiAgICAgIC0gY29ycmVjdGx5ICNpZmRlZiBvdXQgdGhlIHRjcHdyYXBwZXJzIHBhdGNoLgoKaGFyZGFrZXIgMjcgTWFyIDk4IDE2OjQyOjEzCiAgICAtIChJTlNUQUxMKTogZG9jdW1lbnQgbGlid3JhcC4KCmhhcmRha2VyIDI3IE1hciA5OCAxNjo0MzowNgogICAgLSAoc25tcF92YXJzLmMsIHNubXBfdmFycy5oLCBpbnRlcmZhY2VzLmMsIGlwLmMsIHJlZ2lzdHJ5LmMpOgogICAgICAtIHByb3RvdHlwaW5nIGFuZCAtV2FsbCBmaXhlcy4KCmhhcmRha2VyICAxIEFwciA5OCAwOTo1MjozMgogICAgLSAoc25tcF9jbGllbnQuYyk6IGVudGVycHJpc2VfbGVuZ3RoIGlzIHNpemVvZihvaWQpIGRlcGVuZGVudC4KCmhhcmRha2VyICAxIEFwciA5OCAxMzoyNzowNwogICAgLSAoYXV0b19ubGlzdC5jKToKICAgICAgLSByZW1vdmUgbm8gbG9uZ2VyIG5lZWRlZCBkZWJ1Z2dpbmcgc3RhdGVtZW50cyBvZiB0cmVlIHRyYXZlcnNhbC4KCmhhcmRha2VyICAxIEFwciA5OCAxMzozMToyOQogICAgLSAoTkVXUywgUE9SVElORyk6IHVwZGF0ZXMgZm9yIDMuNC4KCmhhcmRha2VyICAxIEFwciA5OCAxMzo0Nzo1NQogICAgLSAoRkFRLCBSRUFETUUpOiBtb3JlIDMuNCB1cGRhdGVzLgoKaGFyZGFrZXIgIDEgQXByIDk4IDEzOjUzOjI3CiAgICAtIChFWEFNUExFLmNvbmYuZGVmKTogYWRkZWQgdmFjbSBleGFtcGxlIGNvbmZpZ3VyYXRpb24uCgpoYXJkYWtlciAgMSBBcHIgOTggMTM6NTQ6MTEKICAgIC0gKHNubXBkLmNvbmYuNS5kZWYpOiBtb3ZlZCB0aGUgdmlldyBleGFtcGxlIHNlY3Rpb24gYWJvdmUgdGhlIGFjY2VzcyBzZWN0aW9uLgoKaGFyZGFrZXIgIDEgQXByIDk4IDE0OjEwOjA3CiAgICAtIChUT0RPKTogcmVtb3ZlZCBhIGZldyB0aGluZ3MhCgpoYXJkYWtlciAgMSBBcHIgOTggMTQ6MTE6NDkKICAgIC0gKE1ha2VmaWxlLmluKTogbWFrZSBkZXBlbmQuCgpoYXJkYWtlciAgMSBBcHIgOTggMTQ6NDA6NDQKICAgIC0gKHNubXBfdmFycy5jLCBzbm1wX3ZhcnMuaCk6IG1ha2UgdW5yZWdlc3RlcmluZyBvZiBtaWJzIHdvcmsuCiAgICAgIC0gKGluIG1vc3QgY2FzZXMgOi0/KQoKaGFyZGFrZXIgIDEgQXByIDk4IDE0OjQzOjE0CiAgICB2ZXJzaW9uIHRhZyAoIDMuNC5wcmU2ICkKCmhhcmRha2VyICAxIEFwciA5OCAxNjozNTo1OQogICAgLSAoc25tcHRyYXBkLmMpOiBhbHdheXMgc2VuZCBlbnRlcnByaXNlIGFuZCB0cmFwb2lkIHRvIHNjcmlwdHMuCgpoYXJkYWtlciAyMCBBcHIgOTggMTA6MzE6MDgKICAgIC0gKHNubXBkLmMpOiBjaGFuZ2Ugb2lkIGZyb20gdGV4dHVhbCB0byBudW1lcmljIHRvIGFsbG93IG5vdyBtaWJzIHRvCiAgICAgIGJlIGxvYWRlZC4KCmhhcmRha2VyIDIwIEFwciA5OCAxNTo1NDoyOQogICAgLSAoaG9zdF9yZXMuaCwgaHJfZGlzay5jLCBocl9maWxlc3lzLmMsIGhyX3BhcnRpdGlvbi5jLCBocl9zdG9yYWdlLmMpOgogICAgICAtIFBhdGNoIGZyb20gRGF2ZSBTaGllbGQ6CiAgICAgICAgLSBjb25zb2xpZGF0ZSB0aGUgc3lzdGVtLXNwZWNpZmljIHN0dWZmIGEgYml0IChzaG91bGQgbWFrZSBpdCBlYXNpZXIKICAgICAgICAgIHRvIGZvbGxvdykKICAgICAgICAtIFJlLXN0cnVjdHVyZXMgdGhlIERpc2sgc2VhcmNoaW5nLCBpbiBzdWNoIGEgd2F5IHRoYXQgaXQgY2FuIHNldCB1cAogICAgICAgICAgdmlhIHRoZSBjb25maWcgZmlsZS4gKHdoaWNoIEkgc3RpbGwgbmVlZCB0byBkbykKICAgICAgICAtIFNwZWVkIHVwIGRpc2sgc2VhcmNoaW5nIChieSBjYWNoaW5nIGludmFsaWQgcmVzdWx0cyAtIGEgKm1ham9yKiB3aW4hKQogICAgICAgIC0gSGFuZGxlIHBhcnRpdGlvbnMgc2Vuc2libHkgKGFydGhlciB0aGFuIG9uZSBwZXIgZGlzaykKICAgICAgICAtIEltcHJvdmUgU29sYXJpcyBzdXBwb3J0IGZvciB0aGUgRGV2aWNlIGdyb3VwCgpoYXJkYWtlciAyMCBBcHIgOTggMTU6NTY6NTAKICAgIC0gKGNvbmZpZy5oLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbik6IGNoZWNrIGZvciBzeXMvZGtpby5oCgpoYXJkYWtlciAyMCBBcHIgOTggMTU6NTk6MTIKICAgIC0gKGhyX2ZpbGVzeXMuYywgaHJfc3dydW4uYyk6IFBhdGNoIGZyb20gTmllbHMgQmFnZ2VzZW46CiAgICAgIC0gZml4IHNvbWUgaG9zdCByZXNvdXJjZXMgZm9yIHNvbGFyaXMuCgpoYXJkYWtlciAyMCBBcHIgOTggMTY6MDA6MzYKICAgIC0gKHNubXBkLmMpOiBQYXRjaCBmcm9tIE5pZWxzIEJhZ2dlc2VuOgogICAgICAtIGFwcHJvcHJpYXRlIHVzZSBvZiBzdHJkdXAgZHVyaW5nIHN0YXJ0dXAgYW5kIGJldHRlciBmbGFnIGNoZWNraW5nLgoKaGFyZGFrZXIgMjAgQXByIDk4IDE2OjAwOjU2CiAgICAtIChpbnRlcmZhY2VzLmMpOiBQYXRjaCBmcm9tIE5pZWxzIEJhZ2dlc2VuOgogICAgICAtIGhlYWRlciBtb3Zlcy4KCmhhcmRha2VyIDIwIEFwciA5OCAxNjowMjoxMgogICAgLSAoaXAuYyk6IFBhdGNoIGZyb20gTmllbHMgQmFnZ2VzZW46CiAgICAgIC0gdGVzdCBzeW1ib2wgZGVmaW5lcyBhbmQgY2xlYW51cC4KCmhhcmRha2VyIDIwIEFwciA5OCAxNjowMzowMwogICAgLSAoc25tcHRhYmxlLmMpOiBQYXRjaCBmcm9tIE5pZWxzIEJhZ2dlc2VuOgogICAgICAtIHByb3RvdHlwaW5nIGFuZCBvdGhlciBjbGVhbnVwcy4KCmhhcmRha2VyIDIwIEFwciA5OCAxNjowNTowMAogICAgLSAoc25tcHRyYXBkLmMpOiBQYXRjaCBmcm9tIE5pZWxzIEJhZ2dlc2VuOgogICAgICAtIGdldGhvc3RieWFkZHIgbW92ZXMgdXAuCiAgICAgIC0gaW5jbHVkZSBzeXMvd2FpdC5oLgogICAgICAtIHN5c2xvZyAlZCAtPiAlbGQgZm9yIGxvbmcgc3BlY2lmaWNfdHlwZS4KCmhhcmRha2VyIDIwIEFwciA5OCAxNjowNTozNAogICAgLSAodmFjbV92YXJzLmMpOiBQYXRjaCBmcm9tIE5pZWxzIEJhZ2dlc2VuOgogICAgICAtIHR5cGVjYXN0IGEgcG9pbnRlci4KCmhhcmRha2VyIDIwIEFwciA5OCAxNjowNjowMwogICAgLSAodGNwLmMsIHVkcC5jLCB2YXJfcm91dGUuYyk6IFBhdGNoIGZyb20gTmllbHMgQmFnZ2VzZW46CiAgICAgIC0gI2lmZGVmIGNoZWNrcyBvbiBzeW1ib2xzIGFuZCBoZWFkZXIgbW92ZW1lbnQuCgpoYXJkYWtlciAyMCBBcHIgOTggMTY6MDY6MjEKICAgIC0gKHNvbGFyaXMuaCk6IFBhdGNoIGZyb20gTmllbHMgQmFnZ2VzZW46CiAgICAgIC0gdW5kZWZpbmUgYSBidW5jaCBvZiBubGlzdCBzeW1ib2xzLgoKaGFyZGFrZXIgMjAgQXByIDk4IDE2OjA3OjEwCiAgICAtIChzbm1wX2NsaWVudC5jKTogUGF0Y2ggZnJvbSBOaWVscyBCYWdnZXNlbjoKICAgICAgLSBuZWVkZWQgcG9pbnRlciBjb3BpZXMuCgpoYXJkYWtlciAyMiBBcHIgOTggMDc6NDk6MjEKICAgIC0gKFVDRC1TTk1QLU1JQi50eHQpOiBjaGFuZ2VkIHdvcmRpbmcsIGNsZWFuZWQgdXAgYSBiaXQuCgpoYXJkYWtlciAyMiBBcHIgOTggMDg6MzU6MjkKICAgIC0gKHBhcnNlLmMpOiBQYXRjaCBmcm9tIE5pZWxzIEJhZ2dlc2VuOgogICAgICAtIHBhcnNlIEJJVFMga2V5d29yZHMuCgpoYXJkYWtlciAyNCBBcHIgOTggMTA6MDA6MDYKICAgIC0gKGFjY29uZmlnLmgsIGNvbmZpZy5oLmluKTogbWliIG9pZCBsb2NhdGlvbiB1cGRhdGVzIGZvciB1Y2Qtc25tcCBtaWIuCgpoYXJkYWtlciAyNCBBcHIgOTggMTA6MDI6MjkKICAgIC0gKFVDRC1TTk1QLU1JQi50eHQpOgogICAgICAtIHJlbmFtZWQgbGFiZWxzIHRvIGJlIHVuaXF1ZSBmcm9tIHRoZSBvbGQgZGVmaW5pdGlvbnMuCiAgICAgIC0gcmVudW1iZXJlZCBhZ2Fpbi4KICAgICAgLSBjb21tZW50ZWQgb24gdGhlIGRlc2dpbiBvZiB0aGUgbWliIGF0IHRoZSB0b3AuCiAgICAgIC0gQ2hhbmdlZCBiYWNrIHRvIFNNSXYxLgogICAgICAtIHJlbW92ZWQgbG9ja2Qgc2VjdGlvbi4KICAgICAgLSByZW1vdmVkIHZtc3RhdCBzZWN0aW9uIHRpbGwgaXQgZ2V0cyBpbXBsZW1lbnRlZC4KICAgICAgLSByZW1vdmVkIHNlcXVlbmNlcyBvZiBzY2FsZXJzLgoKaGFyZGFrZXIgMjQgQXByIDk4IDEwOjIyOjAwCiAgICAtIChVQ0QtU05NUC1NSUIudHh0KTogdGhlIHRleHR1YWwgZGVzY3JpcHRpb25zIHdlcmUgdXBkYXRlZCBzb21lLgoKaGFyZGFrZXIgMjQgQXByIDk4IDE0OjAzOjI2CiAgICAtIChVQ0QtU05NUC1NSUIudHh0KTogbW9yZSBjbGVhbmluZyBhbmQgcmVuYW1pbmcuCgpoYXJkYWtlciAyNCBBcHIgOTggMTQ6MzI6MTIKICAgIC0gKGFjY29uZmlnLmgsIGNvbmZpZy5oLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbik6CiAgICAgIC0gY2hlY2sgc3RhdHZmcy5oIGZvciBmX2JhdmFpbC4KCmhhcmRha2VyIDI0IEFwciA5OCAxNDozMzowOAogICAgLSAoaHJfZmlsZXN5cy5jKTogaW5jbHVkZSBzeXMvcGFyYW0uaCB0byBkZWZpbmUgTUFYUEFUSExFTi4KCmhhcmRha2VyIDI0IEFwciA5OCAxNDozMzoyNAogICAgLSAoaHJfcGFydGl0aW9uLmMpOiBjbG9zZSBmaWxlIGRlc2NyaXB0b3IganVzdCBvcGVuZWQuCgpoYXJkYWtlciAyNCBBcHIgOTggMTQ6MzM6NTgKICAgIC0gKGRpc2suYyk6IGNhbGN1bGF0ZSB2ZnMgYmxvY2sgc2l6ZSBpZiBwb3NzaWJsZSBhbmQgc2l6ZSA+IDI1NSBieXRlcy4KCmhhcmRha2VyIDI0IEFwciA5OCAxNjozMTozMAogICAgLSAodGNwLmMpOiBpbmNsdWRlIG5ldGluZXQvdGNwaXAuaCBmb3IgRFU0LjAuCgpoYXJkYWtlciAyNCBBcHIgOTggMTY6MzI6MDUKICAgIC0gKGF1dG9fbmxpc3QuYywgYXV0b19ubGlzdC5oKTogbl92YWx1ZSBpcyBhIGxvbmc6CiAgICAgIC0gcmV0dXJuIHRoZSB2YWx1ZSBmcm9tIGF1dG9fbmxpc3RfdmFsdWUgYXMgYW4gdW5zaWduZWQgbG9uZy4KCmhhcmRha2VyIDI0IEFwciA5OCAxNjo0MDo0NQogICAgLSAodmFyX3JvdXRlLmMpOiB3YXRjaCBvdXQgZm9yIHNpbmdsZSByb3V0ZSBsb29wcy4KCmhhcmRha2VyIDI3IEFwciA5OCAxMDo1OToxOQogICAgLSAoTWFrZWZpbGUudG9wKTogcmVtb3ZlZCB1bm5lZWRlZCB2YXJpYWJsZS4KCmhhcmRha2VyIDI3IEFwciA5OCAxMTowMDowOAogICAgLSAoY29uZmlndXJlLCBjb25maWd1cmUuaW4pOiBkZWZpbmUgU0hMSUJfTERDT05GSUdfQ01EIGFzICI6IiBmb3IKICAgICAgc3RhdGljIGxpYnJhcnkgY2FzZXMuCgpoYXJkYWtlciAyNyBBcHIgOTggMTE6MDA6NDQKICAgIC0gKHNubXBidWxrd2Fsay5jLCBzbm1wZGVsdGEuYywgc25tcGdldC5jLCBzbm1wZ2V0bmV4dC5jLCBzbm1wc2V0LmMsCiAgICAgIHNubXBzdGF0dXMuYywgc25tcHRhYmxlLmMsIHNubXB0ZXN0LmMsIHNubXB3YWxrLmMpOgogICAgICAtIFB1dCB0aGUgd29yZCAiVGltZW91dDogIiBpbiBmcm9udCBvZiB0aGUgIk5vIFJlc3BvbnNlIiBlcnJvcnMuCgpoYXJkYWtlciAyNyBBcHIgOTggMTM6MzE6MTAKICAgIHZlcnNpb24gdGFnICggMy40LnByZTcgKQoKaGFyZGFrZXIgMjcgQXByIDk4IDE2OjI0OjM0CiAgICAtICh0a21pYik6IGJ1ZyBmaXhlcyBhbmQgbmV3IG1pYiBtZW51IHRvIGxvYWQgbmV3IG1pYnMuCgpoYXJkYWtlciAyNyBBcHIgOTggMTY6NDY6MjgKICAgIC0gKHRrbWliKTogTmV3IG1pYiBtZW51IGNvbW1hbmQ6IGxvYWQgYSBtaWIgbW9kdWxlIGJ5IElEIG5hbWUuCgpoYXJkYWtlciAyNyBBcHIgOTggMTY6NDg6MDIKICAgIC0gKHRrbWliKTogYnVnIGZpeGVzLgoKaGFyZGFrZXIgMjkgQXByIDk4IDA4OjU2OjQ0CiAgICAtIChzbm1wdGFibGUuYyk6IFBhdGNoIGZyb20gTmllbHMgQmFnZ2VzZW46CiAgICAgIC0gZml4IC1IIGhlYWRlciBwcmludGluZy4KCmhhcmRha2VyIDI5IEFwciA5OCAxMDoyNjo1OAogICAgLSAodGNwLmMpOiBkb24ndCB1c2UgVENQU1RBVF9TWU1CT0wgdW5sZXNzIGRlZmluZWQuCgpoYXJkYWtlciAyOSBBcHIgOTggMTA6MzQ6MTIKICAgIC0gKGV4YW1wbGUuYywgcHJvYy5jLCB2YXJfcm91dGUuYywgd29tYmF0LmMpOgogICAgICAtIG5saXN0IGNsZWFudXBzLgoKaGFyZGFrZXIgMjkgQXByIDk4IDEwOjQzOjA0CiAgICAtIChleGFtcGxlLmMsIGV4YW1wbGUuaCwgd29tYmF0LmMsIHdvbWJhdC5oKTogbW9yZSBjbGVhbiB1cHMuCgpoYXJkYWtlciAyOSBBcHIgOTggMTE6MzE6NDMKICAgIC0gKHZtc3RhdC5jLCB2bXN0YXQuaCk6IG1vdmVzLCBjaGFuZ2VzLCByZW1vdmFscywgYW5kIGZpeGVzLgoKaGFyZGFrZXIgMjkgQXByIDk4IDExOjMyOjAxCiAgICAtIChVQ0QtU05NUC1NSUIudHh0KTogcHV0IHZtc3RhdCBiYWNrIGluIGFuZCByZW5hbWVkIHRvIHN5c3RlbVN0YXRzLgoKaGFyZGFrZXIgMjkgQXByIDk4IDExOjQxOjU4CiAgICAtICh0a21pYik6CiAgICAgIC0gZGlzcGxheSB1bmxvYWRlZCBtb2R1bGUgZXJyb3IuCiAgICAgIC0gZG9uJ3QgdHJ5IHRvIGxvYWQgYSBmaWxlIG9uIGEgY2FuY2VsLgoKaGFyZGFrZXIgIDYgTWF5IDk4IDExOjIyOjU2CiAgICAtIChNYWtlZmlsZS5pbik6IGluc3RhbGwgdGttaWIuCgpoYXJkYWtlciAgNiBNYXkgOTggMTQ6MDY6NTcKICAgIC0gKFVDRC1TTk1QLU1JQi50eHQpOgogICAgICAtIGFkZGVkIGludGVybmFsIHRhYmxlIHNlY3Rpb24uCiAgICAgIC0gbWliIG51bWJlciBjb3JyZWN0aW9ucyB0byBtYXRjaCB0aGUgc291cmNlLgoKaGFyZGFrZXIgIDYgTWF5IDk4IDE0OjU4OjIzCiAgICAtIChkaXNrLmMsIGVycm9ybWliLmMsIGV4YW1wbGUuYywgZXhhbXBsZS5oLCBleHRlbnNpYmxlLmMsIGxvYWRhdmUuYywKICAgICAgbWVtb3J5LmMsIHByb2MuYywgc3lzT1JUYWJsZS5jLCBzeXN0ZW0uYywgdXRpbF9mdW5jcy5jLAogICAgICB1dGlsX2Z1bmNzLmgsIHZlcnNpb25pbmZvLmMsIHZtc3RhdC5jKToKICAgICAgLSByZW1vdmUgdGhlIG5ld25hbWUgcmVxdWlyZW1lbnQgZnJvbSBjaGVja21pYigpLgogICAgICAtIGNyZWF0ZSBoZWFkZXJfZ2VuZXJpYygpIGZvciBzaW1wbGUgc2NhbGFyIHRlc3RzLgogICAgICAtIHVzZSBoZWFkZXJfZ2VuZXJpYygpIGluIGFsbCB1Y2Qgc3BlY2lmaWMgc2NhbGFyIG1pYnMsIGFuZCBleGFtcGxlLltjaF0uCgpoYXJkYWtlciAgNiBNYXkgOTggMjE6MDY6NTkKICAgIC0gKE5FV1MpOiBtaW5vciB3b3JkaW5nIGNoYW5nZS4KCmhhcmRha2VyICA2IE1heSA5OCAyMTowNzoyOAogICAgLSAodXRpbF9mdW5jcy5jLCB1dGlsX2Z1bmNzLmgpOgogICAgICAtIG5ldyBmdW5jdGlvbjogY2FsY3VsYXRlX3RpbWVfZGlmZih0MSwgdDIpLgoKaGFyZGFrZXIgIDYgTWF5IDk4IDIxOjA4OjAwCiAgICAtIChVQ0QtU05NUC1NSUIudHh0KTogbWFrZSBib2d1cyBpbmRleCdzIGJlIDAuCgpoYXJkYWtlciAgNiBNYXkgOTggMjE6MDg6MzcKICAgIC0gKG1pYjJjKTogY3JlYXRlZCBhIG1pYjJjIHRlbXBsYXRlIGNyZWF0b3IuCgpoYXJkYWtlciAgNiBNYXkgOTggMjI6Mjg6NDcKICAgIC0gKHdpbjMyL2NvbmZpZy5oKTogdXBkYXRlIGZyb20gSm9lIE1hcnpvdC4KCmhhcmRha2VyICA3IE1heSA5OCAwOTowNTo1NQogICAgLSAoQ09QWUlORyk6IGNvcnJlY3Rpb24gZm9yIGRhdGVzLgoKaGFyZGFrZXIgIDcgTWF5IDk4IDA5OjA3OjA2CiAgICAtIChjb25maWd1cmUsIGNvbmZpZ3VyZS5pbik6IHN5cy9zdGF0IGluY2x1c2lvbiBpbiBmcyBjaGVja3MuCgpoYXJkYWtlciAgNyBNYXkgOTggMDk6MDc6NDYKICAgIC0gKHJlYWRfY29uZmlnLmMpOiBkZWJ1ZyBpbmZvIGZvciBjb25maWcgZmlsZXMgcmVhZC4KCmhhcmRha2VyICA4IE1heSA5OCAxMDo1Nzo0OQogICAgLSAoY29uZmlnKik6IGNoZWNrIGZvciBwa2dsb2NzLmguCgpoYXJkYWtlciAgOCBNYXkgOTggMTE6MDE6MjQKICAgIC0gKGhyX3N3aW5zdC5jLCBocl9kaXNrLmMpOiBQYXRjaCBmcm9tIERhdmUgU2hpZWxkcy4KCmhhcmRha2VyICA4IE1heSA5OCAxNDo1MzozNgogICAgLSAoZGlzay5jKTogd29yZGluZyBjaGFuZ2UuCgpoYXJkYWtlciAxMSBNYXkgOTggMDg6MDg6MzcKICAgIC0gKHV0aWxfZnVuY3MuYyk6IGJsYW5rIGxpbmUgcmVtb3ZhbC4KCmhhcmRha2VyIDExIE1heSA5OCAwODowODo1MwogICAgLSAodGttaWIpOiBvcHRpb25hbCBwb3J0IG51bWJlci4KCmhhcmRha2VyIDExIE1heSA5OCAwODowOTo1OAogICAgLSAobWliMmMpOgogICAgICAtIGNvdW50ZXI2NHMuCiAgICAgIC0gY29uc29sb2RhdGlvbiBvZiB2YXJpYWJsZSBkZWNsYXJhdGlvbnMuCiAgICAgIC0gbW9yZSBlcnJvciBzdGluZ3MgaW4gYWxsIGZpbGVzIGZvciB1bmtub3duIHZhcmlhYmxlIHR5cGVzLgoKaGFyZGFrZXIgMTEgTWF5IDk4IDA4OjEwOjMwCiAgICAtIChwYXJzZS5jKTogb3BhcXVlJ3MgY2FuIGhhdmUgYSBzaXplIHNwZWNpZmllci4KCmhhcmRha2VyIDExIE1heSA5OCAwODoxMDo0NgogICAgLSAoaW50NjQuYyk6IGFkZCBpbmNyQnlVMzIoKS4KCmhhcmRha2VyIDExIE1heSA5OCAxMDoyOToxNgogICAgLSAocmVhZF9jb25maWcuYywgc25tcF92YXJzLmgsIHNubXBkLmMsIHNubXBkLmgsIHZhcl9zdHJ1Y3QuaCk6IFBhdGNoCiAgICAgIGZyb20gTmllbHMgQmFnZ2VzZW46CiAgICAgIC0gZnJlZSByb3V0aW5lcyBmb3IgdmFjbSAodG8gYWxsb3cgLUhVUCkKICAgICAgLSBmcmVlIHJvdXRpbmVzIGZvciB0aGUgdHJhcHNpbmsgZGlyZWN0aXZlcyBpbiBzbm1wZAoKaGFyZGFrZXIgMTEgTWF5IDk4IDEwOjMwOjAxCiAgICAtIChocl9kaXNrLmMsIGhyX2ZpbGVzeXMuYywgaHJfcGFydGl0aW9uLmMsIHZhY21fdmFycy5jKTogUGF0Y2ggZnJvbQogICAgICBOaWVscyBCYWdnZXNlbjoKICAgICAgLSBzb21lIHByb3RvdHlwZXMgZm9yIHRoZSBocl8qLmMgZmlsZXMgKG5lZWRzIERhdmUncyByZWNlbnQgcGF0Y2gpCiAgICAgICAgV2FybmluZzogdGhlIHByb2MgcGFydCBzdGlsbCBkb2VzIG5vdCB3b3JrIHdpdGggU29sYXJpcyEKCmhhcmRha2VyIDExIE1heSA5OCAxMDozMDoxOAogICAgLSAoc25tcHRyYW5zbGF0ZS5jKTogUGF0Y2ggZnJvbSBOaWVscyBCYWdnZXNlbjoKICAgICAgLSBpbXBsZW1lbnQgdGhlIGxvbmcgc2luY2UgYW5ub3VuY2VkIC1IIG9wdGlvbiB0byBzbm1wdGFibGUKCmhhcmRha2VyIDExIE1heSA5OCAxMDozMDozNwogICAgLSAoc25tcHRyYW5zbGF0ZS4xKTogUGF0Y2ggZnJvbSBOaWVscyBCYWdnZXNlbjoKICAgICAgLSBpbXBsZW1lbnQgdGhlIGxvbmcgc2luY2UgYW5ub3VuY2VkIC1IIG9wdGlvbiB0byBzbm1wdGFibGUuCgpoYXJkYWtlciAxMSBNYXkgOTggMTA6MzE6MzMKICAgIC0gKFNOTVB2Mi1UQy50eHQpOiBQYXRjaCBmcm9tIE5pZWxzIEJhZ2dlc2VuOgogICAgICAtIHRoaXMgbGFzdCBbcGFyc2VyXSBtYXkgZmluZCBlcnJvcnMgaW4gb2xkIE1JQnMgKGluY2x1ZGluZyB0aGUKICAgICAgICB2ZXJzaW9uIG9mIFNOTVB2Mi1UQyB0aGF0IHdlIHNoaXApLgoKaGFyZGFrZXIgMTEgTWF5IDk4IDEwOjMyOjI3CiAgICAtIChVQ0QtU05NUC1NSUIudHh0KTogUGF0Y2ggZnJvbSBOaWVscyBCYWdnZXNlbjoKICAgICAgLSBDb3JyZWN0aW9ucyBvZiBkaXNrIGVudHJ5IGNhcGl0aWxhemF0aW9uIHByb2JsZW1zLgoKaGFyZGFrZXIgMTEgTWF5IDk4IDEwOjM0OjM4CiAgICAtIChtaWIuYywgcGFyc2UuYywgcGFyc2UuaCwgc25tcF9hcGkuaCwgdmFjbS5jLCB2YWNtLmgpOiBQYXRjaCBmcm9tCiAgICAgIE5pZWxzIEJhZ2dlc2VuOgogICAgICAtIGZyZWUgcm91dGluZXMgZm9yIHZhY20gKHRvIGFsbG93IC1IVVApCiAgICAgIC0gZml4IHRoZSBwYXJzZXIgdG8gcmVwb3J0IHVubGlua2VkIE9JRHMuIFRoaXMgZGlkIHJldmVhbCBhbiBlcnJvciBpbiBhCiAgICAgICAgQ2lzY28gTUlCIChDSVNDTy1JUE1DQVNULU1JQikgdGhhdCBJIGhhZCBiZWVuIHVzaW5nIChpdCBuZWVkcyBhbgogICAgICAgIElNUE9SVFMgY2lzY29FeHBlcmltZW50IEZST00gQ0lTQ08tU01JKQogICAgICAgIEFjdHVhbGx5IHRoZSBwYXJzZXIgd29ya2VkIG9rLCBleGNlcHQgZm9yIHRoZSBtaXNzaW5nIGVycm9yIG1lc3NhZ2VzLgogICAgICAtIHJld3JpdGUgb2YgdGhlIHBhcnNlcnMgbGV4aWNhbCBhbmFseXNlciwgdG8gY29ycmVjdCB0aGUgZXJyb3JzIHRoYXQKICAgICAgICBEYXZlIFBlcmtpbnMgYW5kIG90aGVycyBoYXZlIHBvaW50ZWQgb3V0IHJlY2VudGx5IChuYW1lOjo9ICwgREVTQ1JJUFRJT04iCiAgICAgICAgYW5kIHByb3BlciBoYW5kbGluZyBvZiAtLSBwYXJ0aWFsIGxpbmUgY29tbWVudHMgLS0pLiBXYXRjaCBvdXQhIHRoaXMgbGFzdAogICAgICAgIG1heSBmaW5kIGVycm9ycyBpbiBvbGQgTUlCcyAoaW5jbHVkaW5nIHRoZSB2ZXJzaW9uIG9mIFNOTVB2Mi1UQyB0aGF0CiAgICAgICAgd2Ugc2hpcCkuIE15IEZvcmUgU3lzdGVtcyBNSUJzIGhhZCBlcnJvcnMgd2l0aCB0aGlzLgogICAgICAtIGltcGxlbWVudCB0aGUgbG9uZyBzaW5jZSBhbm5vdW5jZWQgLUggb3B0aW9uIHRvIHNubXB0YWJsZQoKaGFyZGFrZXIgMTIgTWF5IDk4IDEwOjUyOjE2CiAgICAtIChocl9zd2luc3QuYyk6IFBhdGNoIGZyb20gRGF2ZSBTaGllbGQ6CiAgICAgIC0gbW9yZSBzd2luc3QgZml4ZXMgZm9yIHJwbSBtb2R1bGVzLgoKaGFyZGFrZXIgMTIgTWF5IDk4IDEwOjUyOjU3CiAgICAtIChzbm1wdHJhcGQuYyk6IFBhdGNoIGZyb20gRGF2ZSBTaGllbGQ6CiAgICAgIC0gaW5jbHVkZSBhIGdldGR0YWJsZXNpemUoKSBmdW5jdGlvbiBmb3IgaHB1eDkuCgpoYXJkYWtlciAxMiBNYXkgOTggMTE6MTA6NDIKICAgIC0gKE5FV1MpOiBtb3JlIHVwZGF0ZXMuCgpoYXJkYWtlciAxMiBNYXkgOTggMTE6MTE6MTAKICAgIC0gKGFjY29uZmlnLmgsIGNvbmZpZy5oLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbik6CiAgICAgIC0gbXVuZ2UgcnBtIGxpYiBjaGVjayB0byBsaW5rIHdpdGggLWxkYiBhcyB3ZWxsLgoKaGFyZGFrZXIgMTIgTWF5IDk4IDExOjExOjMyCiAgICAtIChkaXNrLmMpOiBOVUxMIC0+IDAuCgpoYXJkYWtlciAxMiBNYXkgOTggMTE6NDU6MjEKICAgIC0gKHZtc3RhdC5jKTogY29ycmVjdCBzdHJpbmdzIGluY2x1c2lvbi4KCmhhcmRha2VyIDEyIE1heSA5OCAxMTo0NTo1MQogICAgLSAoc25tcF9hcGkuYywgc3lzdGVtLmMpOgogICAgICAtIG1vdmUgZGVidWdnaW5nIGNvZGUgZnJvbSBzeXN0ZW0uYyB0byBzbm1wX2FwaS5jLCB3aGVyZSBpdCBzaG91bGQgYmUuCgpoYXJkYWtlciAxMiBNYXkgOTggMTU6MTQ6NDgKICAgIC0gKGRpc2suYywgZXhhbXBsZS5jLCBpbnRlcmZhY2VzLmMsIGxvYWRhdmUuYywgbWVtb3J5LmMsIHBhc3MuYywKICAgICAgcHJvYy5jLCB1dGlsX2Z1bmNzLmgsIHZtc3RhdC5jKToKICAgICAgLSBpbmNsdWRlIHRpbWUuaCBwcm9wZXJseSBpbnN0ZWFkIG9mIHJlbHlpbmcgb24gdXRpbF9mdW5jcy5oIHRvIGRvIGl0LgoKaGFyZGFrZXIgMTIgTWF5IDk4IDE1OjE1OjAxCiAgICB2ZXJzaW9uIHRhZyAoIDMuNC5wcmU4ICkKCmhhcmRha2VyIDEzIE1heSA5OCAyMToyMToyMgogICAgLSAoaW50NjQuYywgaW50NjQuaCwgbWliLmMpOiBtYWtlIGludDY0LmMgdXNlIGNvdW50ZXI2NCdzIHN0cnVjdHVyZS4KCmhhcmRha2VyIDEzIE1heSA5OCAyMToyMTo0MgogICAgLSAoc25tcF92YXJzLmMpOiBkb24ndCByZXR1cm4gYSBjb3VudGVyNjQgdG8gYSBzbm1wdjEgcmVxdWVzdC4KCmhhcmRha2VyIDEzIE1heSA5OCAyMToyMjowOQogICAgLSAoaXAuYyk6IGluY2x1ZGUgbmV0L3JvdXRlLmggYW5kIHN5c2xvZy5oIGZvciBic2RpLgoKaGFyZGFrZXIgMTMgTWF5IDk4IDIxOjIyOjE3CiAgICAtIChtZW1vcnkuYyk6IGluY2x1ZGUgc3lzL3BhcmFtLmggZm9yIGJzZGkKCmhhcmRha2VyIDEzIE1heSA5OCAyMToyNTozOQogICAgLSAobWliLmMpOiBzcHJpbnRfYnlfdHlwZSgpIGRpZG4ndCBoYW5kbGUgY291bnRlcjY0J3MuCgpoYXJkYWtlciAxNCBNYXkgOTggMDc6MTc6MzQKICAgIC0gKG1lbW9yeS5jKTogbW92ZSBzeXMvcGFyYW0uaCB1cCBhYm92ZSBmcy5oIGhlYWRlcnMuCgpoYXJkYWtlciAxNCBNYXkgOTggMDg6MjE6NTUKICAgIC0gKEZBUSk6IG5ldyBGQVEgZnJvbSBEYXZlIFNoaWVsZHMuCgpoYXJkYWtlciAxNCBNYXkgOTggMDg6MjI6MDgKICAgIC0gKE5FV1MpOiBtaWIyYyBtZW50aW9uZWQuCgpoYXJkYWtlciAxNCBNYXkgOTggMDg6MjU6NTcKICAgIC0gKGNvbmZpZ3VyZS5pbiwgY29uZmlndXJlKTogdHlwb3MuCgpoYXJkYWtlciAxNSBNYXkgOTggMTA6MTM6MTYKICAgIC0gKHBhcnNlLmMpOiBzaW5nbGUgcXVvdGUgbWlzc2luZyBtb2R1bGUgbmFtZXMuCgpoYXJkYWtlciAxNSBNYXkgOTggMTA6MTc6MzYKICAgIC0gKHJlYWRfY29uZmlnLmMsIGhyX2ZpbGVzeXMuYywgaHJfc3RvcmFnZS5jLCBocl9zd3J1bi5jLCBocl9zeXN0ZW0uYywKICAgICAgaHJfc3lzdGVtLmgsIGhyX3V0aWxzLmMsIHV0aWxfZnVuY3MuYywgdmFyX3JvdXRlLmMsCiAgICAgIHNubXBfcGFyc2VfYXJncy5jLCBzbm1wdGFibGUuYywgc25tcHRyYW5zbGF0ZS5jLCBzbm1wdHJhbnNsYXRlLjEsCiAgICAgIGJzZC5oLCBzb2xhcmlzLmgsIHN1bm9zLmgsIGludDY0LmgsIG1pYi5jLCBtaWIuaCwgcGFyc2UuYywgcGFyc2UuaCk6CiAgICAgIFBhdGNoIGZyb20gTmllbHMgQmFnZ2VzZW46CiAgICAgIC0gc25tcHRyYW5zbGF0ZSBzdXBwb3J0cyAtUiBhbmQgLXIuCiAgICAgIC0gbWlzY2VsbGFuZW91cyB3YXJuaW5nIGZpeGVzLgogICAgICAtIG9pZCBzZWFyY2hlciBhbHdheXMgaWdub3JlcyBjYXNlLgogICAgICAtIGZpeGVkIGhyX3N5c3RlbSB0byBjb21waWxlIG9uIFN1bk9TNC4KCmhhcmRha2VyIDE1IE1heSA5OCAxMDoxOTowNQogICAgLSAobWliLmMpOiBQYXRjaCBmcm9tIERhdmUgU2hpZWxkOgogICAgICAtIHByb3ZpZGUgYWJpbGl0eSB0byBkbyByYW5kb20gc2VhcmNoZXMgc3BlY2lmeWluZyBhIG1vZHVsZSBuYW1lIHRvIGxvb2sgaW4uCgpoYXJkYWtlciAxNSBNYXkgOTggMTE6MTc6NDQKICAgIC0gKEZBUSwgbWliLmMpOiBQYXRjaCBmcm9tIERhdmUgU2hpZWxkOgogICAgICAtIGhhbmRsZSByYW5kb20gbG9va3VwcyB3aXRoIG11bHRpcGxlIG9pZCBzZWdtZW50cy4KCmhhcmRha2VyIDE1IE1heSA5OCAxMToxOToxMAogICAgLSAoY29uZmlnLmgsIHdpbjMyLm9wdCwgbGlic25tcC5kc3AsIGxpYnNubXAucGxnLCBsaWJzbm1wLmRlZiwKICAgICAgbGlic25tcF9kbGwuZHNwLCBsaWJzbm1wX2RsbC5wbGcsIHNubXBidWxrd2Fsay5wbGcsIHNubXBnZXQucGxnLAogICAgICBzbm1wZ2V0bmV4dC5wbGcsIHNubXBzZXQucGxnLCBzbm1wc3RhdHVzLnBsZywgc25tcHRyYW5zbGF0ZS5wbGcsCiAgICAgIHNubXB3YWxrLnBsZyk6IFBhdGNoIGZyb20gSm9lIE1hcnpvdDoKICAgICAgLSB3aW4zMiBmaWxlIHVwZGF0ZXMuCgpoYXJkYWtlciAxOCBNYXkgOTggMTE6MTg6MjEKICAgIC0gKGFjY29uZmlnLmgsIGNvbmZpZy5oLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbik6CiAgICAgIC0gZml4IHJ0ZW50cnkgc3RydWN0dXJlIHRlc3Qgb24gcmUtY29uZmlndXJlcy4KCmhhcmRha2VyIDE4IE1heSA5OCAxMzoxMzoxOAogICAgLSAoaHJfc3dpbnN0LmMpOiBwcm90ZWN0IHVzaW5nIHRoZSBkYXRlIHBvaW50ZXIgYWdhaW5zdCBOVUxMIHNldHRpbmdzLgoKaGFyZGFrZXIgMTggTWF5IDk4IDE1OjM5OjM4CiAgICB2ZXJzaW9uIHRhZyAoIDMuNC5wcmU5ICkKCmhhcmRha2VyIDE4IE1heSA5OCAxODoxNDoxOQogICAgLSAoaW50NjQuYyk6CiAgICAgIC0gaW5jbHVkZSBoZWFkZXIgY2hhbmdlcyBmb3Igd2luMzIuCgpoYXJkYWtlciAxOSBNYXkgOTggMTA6NDE6MTQKICAgIC0gKGF0LmMpOiBzZXQgdG8gZG8gbm90aGluZyB3aGVuIENBTl9VU0VfU1lTQ1RMLgoKaGFyZGFrZXIgMTkgTWF5IDk4IDEwOjQxOjQ5CiAgICAtIChtZW1vcnkuYyk6IGZpeCBzd2FwaW5mbyBvbiBocHV4MTAgc3lzdGVtcy4gKC9ldGMvc3dhcGluZm8gLXIpLgoKaGFyZGFrZXIgMjAgTWF5IDk4IDA3OjMzOjAyCiAgICAtIChtaWIuYywgcGFyc2UuYyk6IFBhdGNoIGZyb20gTmllbHMgQmFnZ2VzZW46CiAgICAgIC0gZXh0ZW5kIHJhbmRvbSBsb29rdXBzIGZ1cnRoZXIuCgpoYXJkYWtlciAyMCBNYXkgOTggMDc6MzQ6MzEKICAgIC0gKEZBUSk6IFVwZGF0ZSBmcm9tIERhdmUgU2hpZWxkLgoKaGFyZGFrZXIgMjAgTWF5IDk4IDA3OjM2OjE0CiAgICAtICh1dGlsX2Z1bmNzLmMpOiBtYWtlIGNoZWNtaWIoKSB1c2Ugb2lkIG5vdCBpbnQgZm9yIG5ld25hbWUuCgpoYXJkYWtlciAyMCBNYXkgOTggMDc6Mzc6MzMKICAgIC0gKHNubXBfaW1wbC5oKTogdmVyc2lvbiBzaG91bGQgYmUgYSBsb25nLgoKaGFyZGFrZXIgMjAgTWF5IDk4IDA4OjI1OjQxCiAgICAtIChyZWFkX2NvbmZpZy5jKTogY29uZmlnX3BlcnJvcigpIC0+IGNvbmZpZ19wd2FybigpIGZvciBtaXNzaW5nIHRva2Vucy4KCmhhcmRha2VyIDIwIE1heSA5OCAwODoyNzowNgogICAgLSAoKi9NYWtlZmlsZS5pbik6IG1ha2UgZGVwZW5kLgoJCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCkNoYW5nZXM6IFYzLjIgLT4gVjMuMwoKd2hhcmRha2UgMTEgSnVuIDk3IDA0OjUzOjUzCiAgICAtIChtaWIuYyk6IFBhdGNoIGZyb20gTmllbHMgQmFnZ2VzZW4gdG8gbWFrZSBNSUJGSUxFUyBlbnYgdmFyIHdvcmsgY29ycmVjdGx5LgoKd2hhcmRha2UgMTEgSnVuIDk3IDA1OjQ2OjE4CiAgICAtIChDaGFuZ2VMb2cpOiB3aG9vcHMuCgp3aGFyZGFrZSAyMyBKdW4gOTcgMjM6NDA6MjgKICAgIC0gKE1ha2VmaWxlLmluKTogUGF0Y2ggZnJvbSBKb2huIENoYXJsdG9uIHRvIGZpeCBsZWFkaW5nIHNwYWNlcyBpbiBzZWRzY3JpcHQuCgp3aGFyZGFrZSAyMyBKdW4gOTcgMjM6NDE6NTgKICAgIC0gKGNvbmZpZ3VyZSopOiBic2RpMyBuZWVkcyB0byBkZWZpbmUgYnNkaTIsIG5vdCBpdHNlbGYgKGR1aCkuCgp3aGFyZGFrZSAyMyBKdW4gOTcgMjM6NDI6MzYKICAgIC0gKGFnZW50L21pYmdyb3VwL1JFQURNRSk6IG5lZWQgMiBsZWFkaW5nICctJ3Mgb24gLS13aXRoLW1pYi1tb2R1bGVzIGZsYWcuCgp3aGFyZGFrZSAyNiBKdW4gOTcgMjM6Mzk6MzIKICAgIC0gKHNtdXguYyk6IF9fUCBtYWNyb3Mgd2VyZSBjYWxsZWQgd2l0aCB0b28gbWFueSBhcmd1bWVudHMgKG5lZWRlZCAoYXJncykpLgoKd2hhcmRha2UgMzAgSnVuIDk3IDA1OjUzOjU3CiAgICAtIChhZ2VudC9zbm1wX3thZ2VudCx2YXJzfS5jLCBhbGFybS5jLCBldmVudC5jLCBhcHBzLyosCiAgICAgICBzbm1wbGliL3NubXB7LF9hcGksX2F1dGh9LmMpOgogICAgICAgLSBBZGRlZCBiYXNpYyAobW9zdGx5IGNvbmZvcm1pbmc/KSB2MmMgc3VwcG9ydC4KICAgICAgIC0gTWVyZ2VkIGFyZyBwYXJzaW5nIG9mIGFwcHMvKiBjbGllbnRzIGludG8gb25lIGZpbGUuCgp3aGFyZGFrZSAzMCBKdW4gOTcgMDU6NTQ6MzYKICAgIC0gKGFnZW50L21pYmdyb3VwL2ludGVyZmFjZXMuYyk6IERvbid0IHB1dCAmIGluIGZyb250IG9mIG9zZjQgYWNfZW5hZGRyLgoKd2hhcmRha2UgMzAgSnVuIDk3IDA2OjMzOjA4CiAgICAtIChzbm1wdGVzdC5jKTogUGF0Y2ggZnJvbSBOaWVscyBCYWdnZXNlbiB0byBmaXggZ2V0IC0+IGZnZXQgJ1xuJyBwcm9ibGVtLgogICAgICAtIEFsc28gbWFrZXMgc3VyZSBpdCBoYW5kbGVzIHVwIGFuZCBsb3dlciBjYXNlcy4KCndoYXJkYWtlIDMwIEp1biA5NyAwNjozODo0MwogICAgLSAod29tYmF0LmgpOiBiZXR0ZXIgZG9jdW1lbnQgY29uZmlnX2xvYWRfbWliKCkgZXhhbXBsZS4KCndoYXJkYWtlIDMwIEp1biA5NyAwNjo0OTo0NQogICAgLSAoY29uZmlnKiwgbWVtb3J5LmMpOiBQYXRjaCBmcm9tIHZsYWRAbWlzZXJ5LnJvc3ByaW50LnJ1OgogICAgICAtIGltcGxlbWVudCBtZW1vcnkgc2VjdGlvbiBvZiB1Y2QgbWliIG9uIGxpbnV4LgoKd2hhcmRha2UgMzAgSnVuIDk3IDA2OjU4OjQ5CiAgICAtIChtaWJfYXBpLjMsIHBhcnNlLltjaF0pOiBQYXRjaCBmcm9tIERhdmUgU2hpZWxkOgogICAgICAtIEhhbmRsZSBtaWIgbW9kdWxlIHJlcGxhY2VtZW50cyB0aHJvdWdoIG5ldyBmdW5jdGlvbiBhbmQgcmVwbGFjZW1lbnQgdGFibGUuCgp3aGFyZGFrZSAzMCBKdW4gOTcgMDc6MTk6NTEKICAgIC0gKG1pYi5jLCBwYXJzZS5jLCBzbm1wX2FwaS5jKTogU3VnZ2VzdGlvbnMgZnJvbSBMYXVra2FuZW4gTWFya2t1IE5SQy9Ia2k6CiAgICAgIC0gTWFsbG9jIHR5cGVjYXN0cyBhbmQgb3RoZXIgY29ycmVjdGlvbnMgaW4gY2FzdGluZy4KCndoYXJkYWtlICAxIEp1bCA5NyAwMToxMDowMAogICAgLSAoc211eC5jKTogZml4IHByb3RvdHlwaW5nIGZhaWx1cmVzLgoKd2hhcmRha2UgIDEgSnVsIDk3IDA1OjQxOjU4CiAgICAtIChjb25maWcqLCBjb21tb25faGVhZGVyLmgsIGludGVyZmFjZXMuYywgdmFyX3JvdXRlLmMsIFVDRC1TTk1QLU1JQi50eHQpOgogICAgICAtIGZpeCBmcmVlYnNkMyBzcGVjaWZpYyBwcm9ibGVtcyAoYmFzZWQgb24gc3VnZ2VzdGlvbnMgZnJvbSBCaWxsIEZlbm5lcikuCgp3aGFyZGFrZSAgMSBKdWwgOTcgMDY6MDI6NTcKICAgIC0gKGFwcHMvKi5jKTogQmV0dGVyIHVzYWdlIGluZm9ybWF0aW9uIGFuZCB1c2FnZSgpIHN0YW5kYXJpemF0aW9uLgoKd2hhcmRha2UgIDEgSnVsIDk3IDA2OjQxOjQ0CiAgICAtIChkaXNrLmMsIGVycm9ybWliLmMsIGxvYWRhdmUuYywgbWVtb3J5LmMpOiBic2RpMyBzcGVjaWZpYyBoZWFkZXJzLgoKd2hhcmRha2UgIDEgSnVsIDk3IDA3OjIwOjI1CiAgICAtIChjb25maWcqKTogYnNkaTMgc3BlY2lmaWMgaGVhZGVycy4KCndoYXJkYWtlICAxIEp1bCA5NyAwODozNzo1MQogICAgdmVyc2lvbiB0YWcgKCAzLjMucHJlMSApCgp3aGFyZGFrZSAgMyBKdWwgOTcgMjM6MzM6MjMKICAgIC0gKHNubXB0cmFuc2xhdGUuYywgbWliLltjaF0sIHBhcnNlLltjaF0pOgogICAgICAtIE5ldyBvcHRpb24gdG8gc25tcHRyYW5zbGF0ZSAoLWEpIHRvIG91dHB1dCBhIGFzY2lpIGR1bXAgb2YgdGhlIG1pYgogICAgICAgIGRhdGFiYXNlIGNhcGFibGUgb2YgYmVpbmcgdXNlZCBieSB0aGUgcGFyc2VyIGZvciBxdWljayBPSUQgdHJhbnNsYXRpb25zLgoKd2hhcmRha2UgIDMgSnVsIDk3IDIzOjM0OjE0CiAgICB2ZXJzaW9uIHRhZyAoIDMuMy5wcmUyICkKCndoYXJkYWtlIDI0IEp1bCA5NyAyMzo1MDo0OAogICAgLSAoc25tcF9hcGkuYyk6IFBhdGNoIGZyb20gRWRkeSBKLiBHdXJuZXk6ICB1bmNvbW1lbnQgZ2V0dGltZW9mZGF5KCkgY2FsbC4KCndoYXJkYWtlICA3IEF1ZyA5NyAwMDoyOToyNAogICAgLSAoVE9ETyk6IGJldHRlciBlcnJvciBtZXNzYWdlcyBieSBhcHBzLgoKd2hhcmRha2UgIDcgQXVnIDk3IDAxOjExOjU0CiAgICAtIChjb25maWcqLCBsb2FkLmMsIGRpc2suYywgcGFyc2UuYywgc25tcC5jKTogUGF0Y2ggZnJvbSBTaW1vbiBCdXJnZToKICAgICAgLSBVbHRyaXggZml4ZXMgZm9yIHN0YXRmcywgbG9hZGF2ZS4KICAgICAgLSBpbXBsZW1lbnQgc3RyZHVwIGlmIG5vdCBmb3VuZCBpbiBzeXN0ZW0uCiAgICAgIC0gdGVzdCBmb3IgdGVzdCBmbGFncyBmb3Iga2VybmVsIGNoZWNraW5nLgogICAgICAtIHdhdGNoIG91dCBmb3IgcHMnZXMgdGhhdCByZXR1cm4gZWdyZXAgd2l0aCB0aGUgcHMgYXJnIG9uIHRoZSBsaW5lLgogICAgICAtIHVwIG1heGltdW0gZGlza3MgdG8gNTAuCgp3aGFyZGFrZSAgNyBBdWcgOTcgMDE6MzM6MzgKICAgIC0gKGtlcm5lbC5jLCBwcm9jLmMpOiBQYXRjaCBmcm9tIFNpbW9uIEJ1cmdlOgogICAgICAtIEltcGxlbWVudCByZWFsIHByb2Nlc3MgdGFibGUgd2Fsa3Mgb24gVWx0cml4LgoKd2hhcmRha2UgIDcgQXVnIDk3IDAyOjM0OjQ1CiAgICAtIChjb25maWcqLCBtZW1vcnkuYyk6CiAgICAgLSBmaXggc3dhcCBvbiBIUFVYIDEwLjIwCgp3aGFyZGFrZSAxMyBBdWcgOTcgMDQ6NDc6NDkKICAgIC0gKHNubXBzdGF0dXMuYyk6IG9wdGFyZy9vcHRpbmQgbmVlZCB0byBiZSBkZWNsYWlyZWQgdW5kZXIgdWx0cml4NC4KCndoYXJkYWtlIDEzIEF1ZyA5NyAwODoxMTo0MgogICAgLSAodmVyc2lvbi5oLCBhZ2VudC8qLCBhZ2VudC9taWJncm91cC8qKToKICAgICAgLSBtb3ZlIHZlcnNpb24gc3RyaW5nIHRvIGEgZ2xvYmFsIGhlYWRlci4KICAgICAgLSBpbnNlcnQgVVNJTkdfKl9NT0RVTEUgbWFjcm8ncyBpbiBtYW55IHBsYWNlcyB0byBtYWtlIG1vZHVsZQogICAgICAgIHJlbW92YWwgbW9yZSBwb3NzaWJsZS4gIFlvdSBjYW4gbm93IGNvbXBpbGUgd2l0aCBhbG1vc3Qgbm8gbW9kdWxlcwogICAgICAgIGluc3RhbGxlZC4KCndoYXJkYWtlIDE0IEF1ZyA5NyAwMDo0NjozOAogICAgLSAoc25tcF9wYXJzZV9hcmdzLmMsIHNubXB0cmFwLmMsIHNubXB0cmFwZC5jLCBtYWluLmMpOgogICAgICAtIGFkZCAtViB2ZXJzaW9uIGZsYWdlLgoKd2hhcmRha2UgMTQgQXVnIDk3IDA3OjM4OjE3CiAgICAtIChjb25maWcqLCBGQVEsIFJFQURNRSwgYWdlbnQvbWliZ3JvdXAvKi5jLCBhcHBzLyouYyk6CiAgICAgIC0gUGF0Y2ggZnJvbSBEYXZpZCBQYXVsIFppbW1lcm1hbjoKICAgICAgICAtIHBvcnQgdG8gQUlYIDQuMS41LgogICAgICAgIC0gZml4IG1vcmUgdHlwZSBjYXN0aW5nIHByb2JsZW1zLgoKd2hhcmRha2UgMTQgQXVnIDk3IDA4OjE1OjQyCiAgICAtIChjb25maWd1cmUqKToKICAgICAgLSBUeXBvJ3Mgd2hlbiBjb3B5aW5nIGluIGEgYXV0b2NvbmYgdGVzdC4KICAgICAgLSBBZGQgZXJyb3JtaWIgdG8gZGVmYXVsdCBtb2R1bGUgbGlzdCAoc2luY2UgaXRzIG5vIGxvbmdlciByZXF1aXJlZCkuCiAgICAgIC0gYmFja3F1b3RlIGEgLiBpbiBhIHNlZCByZWdleHAgdG8gd2F0Y2ggb3V0IGZvciBtb2R1bGUgbmFtZXMKICAgICAgICBiZWdpbm5pbmcgd2l0aCB0aGUgbGV0dGVyIG8uCgp3aGFyZGFrZSAxNCBBdWcgOTcgMDg6MTY6MTIKICAgIC0gKGFnZW50L21pYmdyb3VwL1JFQURNRSk6IFBvaW50IG91dCB0aGF0IG1pYiBsaXN0IG11c3QgYmUgaW4gZGVzY2VuZGluZyBvcmRlci4KCndoYXJkYWtlIDE0IEF1ZyA5NyAwODoxNjozNwogICAgLSAocHJvYy5jKTogZG9uJ3QgdXNlIHNldGVycm9yc3RhdHVzKCkgaWYgbm90IHVzaW5nIHRoZSBlcnJvcm1pYi4KCndoYXJkYWtlIDE0IEF1ZyA5NyAwODoyMToyNgogICAgLSAoaW50ZXJmYWNlcy5jKTogUGF0Y2ggZnJvbSBEYXZpZCBDLiBMYXdyZW5jZSBmb3IgbmV0YnNkICogYnNkL29zIDIuMC4KCndoYXJkYWtlIDE1IEF1ZyA5NyAwMjozMDo1OQogICAgLSAoY29uZmlnKiwgc25tcGQuYywgc25tcF9jbGllbnQuW2NoXSwgc3lzdGVtLltjaF0pOgogICAgICAtIGZpeCBtb3JlIGxvbmcvaW50IHByb2JsZW1zIG9uIDY0IGJpdCBtYWNoaW5lcyB1X2xvbmcgLT4gaW5fYWRkcl90LgogICAgICAtIENoZWNrIGZvciBTSU9DR0lGQUREUiBpbiBzeXMvaW9jdGwuaCBhbmQgdXNlIGl0IGluIGdldF9teWFkZHIoKSBpZgogICAgICAgIGRlZmluZWQuCgp3aGFyZGFrZSAxNSBBdWcgOTcgMDY6NDY6MzkKICAgIHZlcnNpb24gdGFnICggMy4zLnByZTMgKQoKd2hhcmRha2UgMjUgQXVnIDk3IDAwOjIxOjIzCiAgICAtIChtZW1vcnkuYyk6IHR5cG8gaW4gaWZkZWYuCgp3aGFyZGFrZSAyNSBBdWcgOTcgMDA6MjE6NDEKICAgIC0gKHZlcnNpb250YWcpOiBjaGVja2luIHZlcnNpb24uaC4KCndoYXJkYWtlIDI1IEF1ZyA5NyAwMDoyMjoxOAogICAgLSAoaW50ZXJmYWNlcy5jKTogUGF0Y2ggZnJvbSBEYXZlIFNoaWVsZHMgZm9yIG5ldGJzZC4KCmhhcmRha2VyIDE0IE9jdCA5NyAxNToxNToyMwogICAgLSAobWliX2FwaS4zKTogZG9jIGFkZGl0aW9uOiAgYWRkX21pYmRpcigpIHJldHVybiB2YWx1ZS4KCmhhcmRha2VyIDE0IE9jdCA5NyAxNToxNjozNgogICAgLSAocGFyc2UuYyk6IEZyb20gRGF2ZSBTaGllbGRzOgogICAgICAtIHNlbGYgY29udGFpbmVkIG1pYiAudHh0IGZpbGVzIHdpdGggbXVsdGlwbGUgbW9kdWxlcy4KCmhhcmRha2VyIDE0IE9jdCA5NyAxNToxOToxNgogICAgLSAoY29uZmlnKiwgY29tbW9uX2hlYWRlci5oKTogZHluaXggZG9lc24ndCBoYXZlIG5ldC9yb3V0ZS5oLgoKaGFyZGFrZXIgMTQgT2N0IDk3IDE1OjIxOjU3CiAgICAtIChGQVEpOiBGcm9tIERhdmUgU2hpZWxkczogcmVmZXIgcmVhZGVyIHRvIGFub3RoZXIgYW5zd2VyIGFzIHdlbGwuCgpoYXJkYWtlciAxNCBPY3QgOTcgMTU6MzM6MDMKICAgIC0gKGFnZW50L21pYmdyb3VwLyouYyk6IFlNV1JBTUZTRk46CiAgICAgIC0gKHlldCBtb3JlIHdhcm5pbmcgcmVtb3ZhbHMgYW5kIG1lbW9yeSBmdW5jdGlvbiBzdGFuZGFyZGl6YXRpb25zIGZyb20gTmllbHMpLgogICAgICAtIG1pbm9yIGxpbnV4L25ldGJzZC9ic2RpIGNsZWFuIHVwcy4KCmhhcmRha2VyIDE1IE9jdCA5NyAwOTo1MDowOAogICAgLSAodmlld19wYXJzZS5jLCBzbm1wX3ZhcnMuYyk6IEZyb20gTmllbHM6IHdhcm5pbmcgcmVtb3ZhbHMgYW5kIHN0YW5kYXJkaXphdGlvbi4KCmhhcmRha2VyIDE1IE9jdCA5NyAwOTo1ODozNgogICAgLSAoYXBwcy8qLmMsIGFnZW50L3NubXBkLmMsIHNubXBsaWIvKi5jKTogUGF0Y2ggZnJvbSBOaWVsczoKICAgICAgLSB3YXJuaW5nIGZpeGVzLgogICAgICAtIHJlbW92ZSB0aGUgcHJpbnRmJ3MgZnJvbSB0aGUgbGlicmFyeSBhbmQgc2V0IGEgc25tcCAnZXJybm8nIGVxdWl2YWxlbnQuCgpoYXJkYWtlciAxNSBPY3QgOTcgMTI6MTI6MDIKICAgIC0gKGFwcHMvKi5jLCBhZ2VudC9zbm1wZC5jLCBzbm1wbGliLyouYyk6CiAgICAgIC0gY3JlYXRlIGFuZCB1c2UgbmV3IGZ1bmN0aW9uOiAgc25tcF9wZXJyb3IoY2hhciAqKQogICAgICAtIGZyZWUgYWxsb2NhdGVkIHNwYWNlIG9mIHNubXBfZGV0YWlsIHVwb24gdXNhZ2UgYnkgc25tcF9hcGlfZXJyc3RyaW5nKCkuCgpoYXJkYWtlciAxNSBPY3QgOTcgMTg6NDA6MzgKICAgIC0gKGNvbmZpZyosIGFnZW50L21pYmdyb3VwL2hyKik6IEhvc3QgcmVzb3VyY2VzIG1pYiBmcm9tIERhdmUgU2hpZWxkLgogICAgICAtIG1pbm9yIHBhdGNoZXMgYnkgbWUsIG1vc3RseSBwb2ludGVyIGVycm9ycy4KICAgIC0gKG1lbW9yeS5jKTogZml4ZWQgYSBudWxsIHBvaW50ZXIgcHJvYmxlbSB1bmRlciBsaW51eC4KCmhhcmRha2VyIDIwIE9jdCA5NyAxMTo0NTo1OAogICAgLSAoRkFRKTogQ2hhbmdlcyBmcm9tIERhdmUuCgpoYXJkYWtlciAyMCBPY3QgOTcgMTE6NTE6MzQKICAgIC0gKGNvbmZpZyosIGFnZW50L3NubXAqLCBhZ2VudC9taWJncm91cC8qLltjaF0pOgogICAgICAtIENyZWF0ZWQgYSBuZXcgbWlibW9kdWxlLmggY29uZmlndXJhdGlvbiBtYWNybyBjYWxsZWQKICAgICAgICBjb25maWdfcGFyc2VfZG90X2NvbmYoKSB3aGljaCBjYW4gYmUgY2FsbGVkIHRvIHJlcXVlc3QgcGFyc2luZyBvZgogICAgICAgIHRoZSBzbm1wZC5jb25mIGZpbGUocykgb24gYSBwZXIgbW9kdWxlIGJhc2lzLgogICAgICAtIEFsbCByZWxhdGVkIHBhcnNpbmcgaGFzIGJlZW4gc3RyaXBlZCBmcm9tIHJlYWRfY29uZmlnLmMgYW5kIG1vdmUKICAgICAgICB0byB0aGVpciBjb3JyZWN0IG1vZHVsZSBpbnN0ZWFkLgogICAgICAtIE5ldyBmdW5jdGlvbjogY29uZmlnX3BlcnJvcihjaGFyICopOiBwcmludCBlcnJvciB3aXRoIGZpbGUgJiBsaW5lICMuCiAgICAgIC0gYmFzaWMgLVdhbGwgY2xlYW51cHMgaW4gaHIqIGFzIHdlbGwgKG5vdCBuZWFybHkgZG9uZSB5ZXQpLgoKaGFyZGFrZXIgMjAgT2N0IDk3IDE2OjA1OjE0CiAgICAtIChwYXNzLmMpIGRvbid0IG51bGwgbGFzdCBjaGFyIGluIGNvbW1hbmQgbGluZS4KCmhhcmRha2VyIDIwIE9jdCA5NyAxNjowNjoxNgogICAgLSAocmVhZF9jb25maWcuYyk6CiAgICAgIC0gZG9uJ3QgcmVwb3J0IGFuIGVycm9yIGlmIHlvdSBjYW4ndCBmaW5kIGEgc25tcGQuY29uZiBmaWxlLgogICAgICAtIGRvbid0IHJlcG9ydCBhbGwgbGluZXMgYXMgYW4gZXJyb3IgKG9wcHMpLgoKaGFyZGFrZXIgMjAgT2N0IDk3IDE2OjM4OjMzCiAgICAtIChtaWIuYyk6IEZyb20gRGF2ZTogIHBhdGNoIERFRkFVTFRfTUlCUyB0byB0YWtlICcrJyBpbiBmcm9udC4KCmhhcmRha2VyIDIwIE9jdCA5NyAxNjo0NDozNwogICAgLSAobWliLmMpOiBwYXRjaCBhbGwgb3RoZXIgZW52LXZhcnMgdG8gdGFrZSAnKycgaW4gZnJvbnQuCgpoYXJkYWtlciAyMCBPY3QgOTcgMTc6MDE6NDgKICAgIC0gKGNvbmZpZyosIGFnZW50L21pYmdyb3VwL2hyXyouYyk6CiAgICAgIC0gQSBtb2R1bGUuYyBmaWxlIGlzIG5vIGxvbmdlciByZXF1aXJlZC4gIE9ubHkgdGhlIC5oIGZpbGUgaXMKICAgICAgICBuZWNlc3NhcnksIGZvciBwZW9wbGUgd2hvIHdhbnQgdG8gaGF2ZSBvbmUgbW9kdWxlIHdyYXAgYSBidW5jaCBvZiBvdGhlcnMuCiAgICAgIC0gcmVtb3ZlZCBob3N0LmMKICAgICAgLSByZW5hbWVkIGFsbCBocl9pbml0IGZ1bmN0aW9ucyB0byBiZSBhdXRvLWNhbGxlZC4KCmhhcmRha2VyIDIwIE9jdCA5NyAxNzoxNTo1MQogICAgLSAoYWdlbnQvbWliZ3JvdXAvUkVBRE1FLCB3b21iYXQuW2NoXSk6CiAgICAgIC0gZG9jdW1lbnRhdGlvbiB1cGRhdGUgdG8gcmVmbGVjdCBjb25maWdfcGFyc2VfZG90X2NvbmYoKSB1c2FnZS4KCmhhcmRha2VyIDIwIE9jdCA5NyAxNzoxNjo1OAogICAgLSAoY29uZmlnKiwgYWdlbnQvbWliZ3JvdXAvaHJfKi5jKToKICAgICAgLSBBIG1vZHVsZS5jIGZpbGUgaXMgbm8gbG9uZ2VyIHJlcXVpcmVkLiAgT25seSB0aGUgLmggZmlsZSBpcwogICAgICAgIG5lY2Vzc2FyeSwgZm9yIHBlb3BsZSB3aG8gd2FudCB0byBoYXZlIG9uZSBtb2R1bGUgd3JhcCBhIGJ1bmNoIG9mIG90aGVycy4KICAgICAgLSByZW1vdmVkIGhvc3QuYwogICAgICAtIHJlbmFtZWQgYWxsIGhyX2luaXQgZnVuY3Rpb25zIHRvIGJlIGF1dG8tY2FsbGVkLgoKaGFyZGFrZXIgMjAgT2N0IDk3IDE4OjAxOjQ2CiAgICAtIChjb25maWcqLCBhZ2VudC9taWJncm91cC92MnBhcnR5LmgsIHVjZF9zbm1wLmgsIHNtdXhfZ2F0ZWQuaCk6CiAgICAgIC0gY3JlYXRlZCBuZXcgd3JhcHBlcnMgZm9yIHRoZSB2YXJpb3VzIG1vZHVsZXMgdG8gbWFrZSB0aGVtIGVhc3kgdG8KICAgICAgICBhZGQgYW5kIHJlbW92ZSBhcyBuZWVkZWQuCgpoYXJkYWtlciAyMCBPY3QgOTcgMTk6NDI6NDYKICAgIC0gKGFjY29uZmlnLmgsIGNvbmZpZy5oLmluKTogZGVmaW5lIGxpbnV4J3MgT1MgdHlwZS4KCmhhcmRha2VyIDIwIE9jdCA5NyAxOTo0MzoxMwogICAgLSAoc25tcF92YXJzLmMpOiBkZWZpbmUgYXQgbGVhc3QgYmxhbmsgZnVuYyBubGlzdF9pbml0KCkgb24gbGludXguCgpoYXJkYWtlciAyMSBPY3QgOTcgMTA6MTU6NTQKICAgIC0gKFBPUlRJTkcsIFJFQURNRSk6IG1pbm9yIHVwZGF0ZXMuCgpoYXJkYWtlciAyMSBPY3QgOTcgMTA6NDU6NDcKICAgIC0gKHNubXBfcGFyc2VfYXJncy5jKTogYWxsb3cgLXYgMmggYW5kIDJwIGZvciBwYXJ0eSBjb2RlLgoKaGFyZGFrZXIgMjEgT2N0IDk3IDExOjAwOjU3CiAgICAtIChocl9zdG9yYWdlLmMsIGhyX3N3cnVuLmMsIG1lbW9yeS5jKTogY2xvc2Ugb3BlbiBmaWxlcyBvbiBsaW51eC4KCmhhcmRha2VyIDIxIE9jdCA5NyAxMTowMToyNwogICAgLSAoTkVXUyk6IGJlZ2lubmluZ3Mgb2YgTkVXUyB1cGRhdGVzLgoKaGFyZGFrZXIgMjEgT2N0IDk3IDExOjAyOjQ2CiAgICB2ZXJzaW9uIHRhZyAoIDMuMy5wcmU0ICkKCmhhcmRha2VyIDIxIE9jdCA5NyAxMjoyNTowMwogICAgLSAoYWdlbnQvcmVhZF9jb25maWcuW2NoXSwgc25tcGQuYywgc25tcF92YXJzLmMsIG1pYmdyb3VwLyopOgogICAgICAtIG1vdmVkIHJlYWRfY29uZmlnLltjaF0gdXAgYSBsZXZlbCB0byBhbHdheXMgYmUgY29tcGlsZWQgaW4uCgpoYXJkYWtlciAyMSBPY3QgOTcgMTI6MzE6NTQKICAgIC0gKCovTWFrZWZpbGUuaW4pOiBtYWtlIG1ha2VmaWxlaW5kZXBlbmQgc2V0dXAuCgpoYXJkYWtlciAyMSBPY3QgOTcgMTI6MzI6MDgKICAgIC0gKCovTWFrZWZpbGUuaW4pOiBtYWtlIG1ha2VmaWxlaW5kZXBlbmQuLgoKaGFyZGFrZXIgMjEgT2N0IDk3IDEyOjM2OjMzCiAgICAtICgqL01ha2VmaWxlLmluKTogZGlkIGEgbWFrZSBkZXBlbmQuCgpoYXJkYWtlciAyMSBPY3QgOTcgMTI6MzY6MzkKICAgIHZlcnNpb24gdGFnICggMy4zLnByZTUgKQoKaGFyZGFrZXIgMjIgT2N0IDk3IDExOjQwOjA2CiAgICAtIChjb21tb25faGVhZGVyLmgsIHJlYWRfY29uZmlnLmMsIGRpc2suYywgc25tcF9wYXJzZV9hcmdzLmMpOgogICAgICAtIFR5cG8ncyBmaXhlZCBieSBOaWVscy4KCmhhcmRha2VyIDI3IE9jdCA5NyAwOTo1NjoyNgogICAgLSAoY29uZmlnKiwgYWdlbnQvbWliZ3JvdXAvKi5oKToKICAgICAgLSBuZXcgY29uZmlnIG1hY3JvOiAgY29uZmlnX2FyY2hfcmVxdWlyZShhcmNoLCBtb2R1bGUpLgogICAgICAtIG1vdmVkIGFyY2ggZGVwZW5kYW50IG1vZHVsZXMgKG1lbW9yeSwgaHB1eCwga2VybmVsX3N1bm9zNSkgbG9hZHMKICAgICAgICBmcm9tIHRoZSBjb25maWd1cmUgaW50byB0aGUgYXBwcm9wcmlhdGUgLmggZmlsZXMuCiAgICAtIChpbnRlcmZhY2VzLmMsIHZhcl9yb3V0ZS5jKToKICAgICAgLSB0eXBlY2FzdCBrbG9va3VwIGNhbGxzIGZvciBmcmVlYnNkMi4KCmhhcmRha2VyIDI3IE9jdCA5NyAxNDowMzoxNQogICAgLSAoYWdlbnQvc25tcF9hZ2VudC5jIHNubXBfdmFycy5jKTogQ2hhbmdlcyBmcm9tIEpvZSBNYXJ6b3QgYW5kIERhdmlkIFBlcmtpbnM6CiAgICAgIC0gdjJoIC0+IHYycCwgdjIgLT4gdjJjLgoKaGFyZGFrZXIgMjcgT2N0IDk3IDE0OjA0OjMzCiAgICAtIChhcHBzLyouYyk6CiAgICAgIC0gY2hhbmdlcyBmb3IgV0lOMzIgc3VwcG9ydC4KICAgICAgLSBzdXBwb3J0IGZvciBjb21tYW5kIGxpbmUgZmxhZ3Mgd2l0aG91dCBzcGFjZXMuCiAgICAgIC0gdjJoIC0+IHYycC4KCmhhcmRha2VyIDI3IE9jdCA5NyAxNDoxNjo0MgogICAgLSAoc25tcGxpYi8qLltjaF0pOiBDaGFuZ2VzIGZyb20gSm9lIE1hcnpvdCBhbmQgRGF2aWQgUGVya2luczoKICAgICAgLSBjaGFuZ2VzIGZvciBXSU4zMiBzdXBwb3J0LgogICAgICAtIHYyaCAtPiB2MnAuCgpoYXJkYWtlciAyNyBPY3QgOTcgMTQ6MTk6MTgKICAgIC0gKHdpbjMyKTogQ2hhbmdlcyBmcm9tIEpvZSBNYXJ6b3QgYW5kIERhdmlkIFBlcmtpbnM6CiAgICAgIC0gcHJvamVjdCBkaXIgZm9yIFdJTjMyIHN1cHBvcnQuCgpoYXJkYWtlciAyNyBPY3QgOTcgMTQ6MTk6MTgKICAgIGZpbGUgY29uZmlnLmggd2FzIGluaXRpYWxseSBhZGRlZCBvbiBicmFuY2ggVjJDLVdJTjMyLTMtMy1wcmUzLgoKaGFyZGFrZXIgMjcgT2N0IDk3IDE0OjE5OjE4CiAgICBmaWxlIHdpbjMyLmRzdyB3YXMgaW5pdGlhbGx5IGFkZGVkIG9uIGJyYW5jaCBWMkMtV0lOMzItMy0zLXByZTMuCgpoYXJkYWtlciAyNyBPY3QgOTcgMTQ6MTk6MTgKICAgIGZpbGUgd2luMzIub3B0IHdhcyBpbml0aWFsbHkgYWRkZWQgb24gYnJhbmNoIFYyQy1XSU4zMi0zLTMtcHJlMy4KCmhhcmRha2VyIDI3IE9jdCA5NyAxNDoxOToyNQogICAgLSAod2luMzIpOiBDaGFuZ2VzIGZyb20gSm9lIE1hcnpvdCBhbmQgRGF2aWQgUGVya2luczoKICAgICAgLSBwcm9qZWN0IGRpciBmb3IgV0lOMzIgc3VwcG9ydC4KCmhhcmRha2VyIDI3IE9jdCA5NyAxNDoxOToyNQogICAgZmlsZSBsaWJzbm1wLmRzcCB3YXMgaW5pdGlhbGx5IGFkZGVkIG9uIGJyYW5jaCBWMkMtV0lOMzItMy0zLXByZTMuCgpoYXJkYWtlciAyNyBPY3QgOTcgMTQ6MTk6MjUKICAgIGZpbGUgbGlic25tcC5wbGcgd2FzIGluaXRpYWxseSBhZGRlZCBvbiBicmFuY2ggVjJDLVdJTjMyLTMtMy1wcmUzLgoKaGFyZGFrZXIgMjcgT2N0IDk3IDE0OjE5OjI4CiAgICAtICh3aW4zMik6IENoYW5nZXMgZnJvbSBKb2UgTWFyem90IGFuZCBEYXZpZCBQZXJraW5zOgogICAgICAtIHByb2plY3QgZGlyIGZvciBXSU4zMiBzdXBwb3J0LgoKaGFyZGFrZXIgMjcgT2N0IDk3IDE0OjE5OjI4CiAgICBmaWxlIGxpYnNubXAuZGVmIHdhcyBpbml0aWFsbHkgYWRkZWQgb24gYnJhbmNoIFYyQy1XSU4zMi0zLTMtcHJlMy4KCmhhcmRha2VyIDI3IE9jdCA5NyAxNDoxOToyOAogICAgZmlsZSBsaWJzbm1wX2RsbC5kc3Agd2FzIGluaXRpYWxseSBhZGRlZCBvbiBicmFuY2ggVjJDLVdJTjMyLTMtMy1wcmUzLgoKaGFyZGFrZXIgMjcgT2N0IDk3IDE0OjE5OjI4CiAgICBmaWxlIGxpYnNubXBfZGxsLnBsZyB3YXMgaW5pdGlhbGx5IGFkZGVkIG9uIGJyYW5jaCBWMkMtV0lOMzItMy0zLXByZTMuCgpoYXJkYWtlciAyNyBPY3QgOTcgMTQ6MTk6MzEKICAgIC0gKHdpbjMyKTogQ2hhbmdlcyBmcm9tIEpvZSBNYXJ6b3QgYW5kIERhdmlkIFBlcmtpbnM6CiAgICAgIC0gcHJvamVjdCBkaXIgZm9yIFdJTjMyIHN1cHBvcnQuCgpoYXJkYWtlciAyNyBPY3QgOTcgMTQ6MTk6MzEKICAgIGZpbGUgc25tcGJ1bGt3YWxrLmRzcCB3YXMgaW5pdGlhbGx5IGFkZGVkIG9uIGJyYW5jaCBWMkMtV0lOMzItMy0zLXByZTMuCgpoYXJkYWtlciAyNyBPY3QgOTcgMTQ6MTk6MzEKICAgIGZpbGUgc25tcGJ1bGt3YWxrLnBsZyB3YXMgaW5pdGlhbGx5IGFkZGVkIG9uIGJyYW5jaCBWMkMtV0lOMzItMy0zLXByZTMuCgpoYXJkYWtlciAyNyBPY3QgOTcgMTQ6MTk6MzQKICAgIC0gKHdpbjMyKTogQ2hhbmdlcyBmcm9tIEpvZSBNYXJ6b3QgYW5kIERhdmlkIFBlcmtpbnM6CiAgICAgIC0gcHJvamVjdCBkaXIgZm9yIFdJTjMyIHN1cHBvcnQuCgpoYXJkYWtlciAyNyBPY3QgOTcgMTQ6MTk6MzQKICAgIGZpbGUgc25tcGdldC5kc3Agd2FzIGluaXRpYWxseSBhZGRlZCBvbiBicmFuY2ggVjJDLVdJTjMyLTMtMy1wcmUzLgoKaGFyZGFrZXIgMjcgT2N0IDk3IDE0OjE5OjM0CiAgICBmaWxlIHNubXBnZXQucGxnIHdhcyBpbml0aWFsbHkgYWRkZWQgb24gYnJhbmNoIFYyQy1XSU4zMi0zLTMtcHJlMy4KCmhhcmRha2VyIDI3IE9jdCA5NyAxNDoxOTozNwogICAgLSAod2luMzIpOiBDaGFuZ2VzIGZyb20gSm9lIE1hcnpvdCBhbmQgRGF2aWQgUGVya2luczoKICAgICAgLSBwcm9qZWN0IGRpciBmb3IgV0lOMzIgc3VwcG9ydC4KCmhhcmRha2VyIDI3IE9jdCA5NyAxNDoxOTozNwogICAgZmlsZSBzbm1wZ2V0bmV4dC5kc3Agd2FzIGluaXRpYWxseSBhZGRlZCBvbiBicmFuY2ggVjJDLVdJTjMyLTMtMy1wcmUzLgoKaGFyZGFrZXIgMjcgT2N0IDk3IDE0OjE5OjM3CiAgICBmaWxlIHNubXBnZXRuZXh0LnBsZyB3YXMgaW5pdGlhbGx5IGFkZGVkIG9uIGJyYW5jaCBWMkMtV0lOMzItMy0zLXByZTMuCgpoYXJkYWtlciAyNyBPY3QgOTcgMTQ6MTk6NDEKICAgIC0gKHdpbjMyKTogQ2hhbmdlcyBmcm9tIEpvZSBNYXJ6b3QgYW5kIERhdmlkIFBlcmtpbnM6CiAgICAgIC0gcHJvamVjdCBkaXIgZm9yIFdJTjMyIHN1cHBvcnQuCgpoYXJkYWtlciAyNyBPY3QgOTcgMTQ6MTk6NDEKICAgIGZpbGUgc25tcHNldC5kc3Agd2FzIGluaXRpYWxseSBhZGRlZCBvbiBicmFuY2ggVjJDLVdJTjMyLTMtMy1wcmUzLgoKaGFyZGFrZXIgMjcgT2N0IDk3IDE0OjE5OjQxCiAgICBmaWxlIHNubXBzZXQucGxnIHdhcyBpbml0aWFsbHkgYWRkZWQgb24gYnJhbmNoIFYyQy1XSU4zMi0zLTMtcHJlMy4KCmhhcmRha2VyIDI3IE9jdCA5NyAxNDoxOTo0NAogICAgLSAod2luMzIpOiBDaGFuZ2VzIGZyb20gSm9lIE1hcnpvdCBhbmQgRGF2aWQgUGVya2luczoKICAgICAgLSBwcm9qZWN0IGRpciBmb3IgV0lOMzIgc3VwcG9ydC4KCmhhcmRha2VyIDI3IE9jdCA5NyAxNDoxOTo0NAogICAgZmlsZSBzbm1wc3RhdHVzLmRzcCB3YXMgaW5pdGlhbGx5IGFkZGVkIG9uIGJyYW5jaCBWMkMtV0lOMzItMy0zLXByZTMuCgpoYXJkYWtlciAyNyBPY3QgOTcgMTQ6MTk6NDQKICAgIGZpbGUgc25tcHN0YXR1cy5wbGcgd2FzIGluaXRpYWxseSBhZGRlZCBvbiBicmFuY2ggVjJDLVdJTjMyLTMtMy1wcmUzLgoKaGFyZGFrZXIgMjcgT2N0IDk3IDE0OjE5OjQ3CiAgICAtICh3aW4zMik6IENoYW5nZXMgZnJvbSBKb2UgTWFyem90IGFuZCBEYXZpZCBQZXJraW5zOgogICAgICAtIHByb2plY3QgZGlyIGZvciBXSU4zMiBzdXBwb3J0LgoKaGFyZGFrZXIgMjcgT2N0IDk3IDE0OjE5OjQ3CiAgICBmaWxlIHNubXB0cmFuc2xhdGUuZHNwIHdhcyBpbml0aWFsbHkgYWRkZWQgb24gYnJhbmNoIFYyQy1XSU4zMi0zLTMtcHJlMy4KCmhhcmRha2VyIDI3IE9jdCA5NyAxNDoxOTo0NwogICAgZmlsZSBzbm1wdHJhbnNsYXRlLnBsZyB3YXMgaW5pdGlhbGx5IGFkZGVkIG9uIGJyYW5jaCBWMkMtV0lOMzItMy0zLXByZTMuCgpoYXJkYWtlciAyNyBPY3QgOTcgMTQ6MTk6NTIKICAgIC0gKHdpbjMyKTogQ2hhbmdlcyBmcm9tIEpvZSBNYXJ6b3QgYW5kIERhdmlkIFBlcmtpbnM6CiAgICAgIC0gcHJvamVjdCBkaXIgZm9yIFdJTjMyIHN1cHBvcnQuCgpoYXJkYWtlciAyNyBPY3QgOTcgMTQ6MTk6NTIKICAgIGZpbGUgc25tcHdhbGsuZHNwIHdhcyBpbml0aWFsbHkgYWRkZWQgb24gYnJhbmNoIFYyQy1XSU4zMi0zLTMtcHJlMy4KCmhhcmRha2VyIDI3IE9jdCA5NyAxNDoxOTo1MgogICAgZmlsZSBzbm1wd2Fsay5wbGcgd2FzIGluaXRpYWxseSBhZGRlZCBvbiBicmFuY2ggVjJDLVdJTjMyLTMtMy1wcmUzLgoKaGFyZGFrZXIgMjcgT2N0IDk3IDE1OjE3OjExCiAgICAtIChjb25maWcqKSB3aW4zMiBoZWFkZXIgY2hlY2tzLgoKaGFyZGFrZXIgMjcgT2N0IDk3IDE1OjE3OjUwCiAgICAtIChhZ2VudC9rZXJuZWwuYywgc25tcF9hZ2VudC5jKToKICAgICAgLSBFUlJPUigpIC0+IEVSUk9SX01TRygpLgogICAgICAtIGZ1bnRpb24gcmVuYW1lcy4KCmhhcmRha2VyIDI3IE9jdCA5NyAxNToxODoxNgogICAgLSAoYWdlbnQvbWliZ3JvdXAvKi5jKToKICAgICAgLSBFUlJPUigpIC0+IEVSUk9SX01TRygpLgoKaGFyZGFrZXIgMjcgT2N0IDk3IDE1OjIxOjUzCiAgICAtIChhcHBzL3NubXBfcGFyc2VfYXJncy5jKToKICAgICAgLSBwdXQgdGFicyBiYWNrIGluIGhlbHAgc3RyaW5nLgogICAgICAtIHB1dCB2ZXJzaW9uIHN0cmluZyByZXF1ZXN0IGJhY2sgaW4uCiAgICAgIC0gbWFrZSBlcnJvciBzdHJpbmdzIGJldHRlciBhbmQgcHV0IGJhY2sgaW4gcGVyaW9kcy4KICAgICAgLSBkb24ndCBib21iIG9uIHVua25vd24gcGFyYW1ldGVycyBmb3IgZnV0dXJlIHVzZS4KCmhhcmRha2VyIDI3IE9jdCA5NyAxNToyMjoyMQogICAgLSAoc25tcGxpYi9zbm1wLmMpOiBwdXQgc3RyZHVwIGRlY2xhaXJhdGlvbiBiYWNrIGluLgoKaGFyZGFrZXIgMjcgT2N0IDk3IDE1OjIzOjIwCiAgICAtIChzbm1wbGliL3NubXBfYXV0aC5jKToKICAgICAgLSByZW1vdmUgI2lmZGVmIE9MRCByZXF1aXJlbWVudC4KICAgICAgLSBjaGFuZ2UgYmFjayBpbnQtPmxvbmcgYXJndW1lbnQgY2hhbmdlIGZvciBzbm1wX2NvbXN0cl9idWlsZC4KCmhhcmRha2VyIDI3IE9jdCA5NyAxNTozNzo0NgogICAgLSAoc25tcGxpYi9zbm1wLmgpOgogICAgICAtIHNubXAgdmVyc2lvbiAjZGVmaW5lIGNsYWlyaWZpY2F0aW9uIG9uIGZ1dHVyZSBpbXBsZW1lbnRhdGlvbnMuCiAgICAgIC0gbW9yZSBjbGVhcmx5IHN0YXRlIHB1cnBvc2Ugb2YgZnV0dXJlIFNOTVBWMy4KCmhhcmRha2VyIDI3IE9jdCA5NyAxNjoyNjo1NwogICAgLSAoKik6IG1lcmdlIG9mIFczMiBwb3J0IGFuZCBtYWluIHZlcnNpb24gYnJhbmNoLgoKaGFyZGFrZXIgMjcgT2N0IDk3IDE2OjM0OjQ1CiAgICAtIChzbm1wX2FwaS5bY2hdKTogZml4IHBlcnJvciBsb3NzZXMgZnJvbSBtZXJnZS4KCmhhcmRha2VyIDI3IE9jdCA5NyAxNzowNDo1MQogICAgLSAoaHJfKi5jKTogRVJST1IgLT4gRVJST1JfTVNHLgoKaGFyZGFrZXIgMjcgT2N0IDk3IDE3OjA1OjEyCiAgICAtIChzbm1wc3RhdHVzLmMpOiByZW1vdmUgZHVwbGljYXRlIGRlY2xhaXJhdGlvbi4KCmhhcmRha2VyIDI3IE9jdCA5NyAxNzo0Mjo1NQogICAgLSAoc25tcF92YXJzLmMpOiB0d28gbW9kdWxlcyBmb3IgZXh0ZW5zaWJsZSBjb3VudC4KCmhhcmRha2VyIDI3IE9jdCA5NyAxNzo0MzoyMgogICAgLSAoYWdlbnQvbWliZ3JvdXAvaHJfKi5oKTogcHJvcGVyIGluaXRfIHByb3RvdHlwZXMuCgpoYXJkYWtlciAyNyBPY3QgOTcgMTc6NDM6NTAKICAgIC0gKHNubXBfcGFyc2VfYXJncy5jKTogbWlzc2luZyBhIGVsc2Ugc3RhdGVtZW50IChzaWdoKS4KCmhhcmRha2VyIDI3IE9jdCA5NyAxNzo0NDoyNwogICAgLSAoc25tcF9hdXRoLmMpOiBtZXJnZSBidWdzLiAgTWlzc2luZyBicmFja2V0cy4KCmhhcmRha2VyIDI3IE9jdCA5NyAxNzo0NzowMAogICAgLSAoc25tcF9hcGkuYyk6IG1lcmdlIGJ1Z3M6IGVsc2UgY2hlY2sgYWdhaW5zdCBwZHUgY29tbWFuZCB0eXBlLgoKaGFyZGFrZXIgMjcgT2N0IDk3IDE4OjAyOjU2CiAgICB3aW4zMiBmaWxlcwoKaGFyZGFrZXIgMjcgT2N0IDk3IDE4OjA1OjM2CiAgICAtICh3aW4zMik6ICBhZGQgZmlsZXMgb24gbWFpbiBicmFuY2guCgpoYXJkYWtlciAyNyBPY3QgOTcgMTg6MTg6MzYKICAgIC0gKHNubXB3YWxrLmMpOiByZW1vdmUgZ290cm9vdCB2YXIuCgpoYXJkYWtlciAyNyBPY3QgOTcgMTg6MTg6NTcKICAgIC0gKHNubXBsaWIvKi5jKTogdXNlIHNubXBfc2V0X2RldGFpbCB0byBoYW5kbGUgbWFsbG9jL2ZyZWUgb2Ygc25tcF9kZXRhaWwuCgpoYXJkYWtlciAyNyBPY3QgOTcgMTg6MjY6NDEKICAgIC0gKGNvbmZpZ3VyZS5pbik6IGZpeCBjb25maWdfYXJjaF9yZXF1aXJlIG1hY3JvIHRvIGFjdHVhbGx5IHdvcmsuCgpoYXJkYWtlciAyNyBPY3QgOTcgMTg6MzE6MzQKICAgIHZlcnNpb24gdGFnICggMy4zLnByZTYgKQoKaGFyZGFrZXIgMjggT2N0IDk3IDA5OjU2OjExCiAgICAtIChhY2NvbmZpZy5oLCBzeXN0ZW0uW2NoXSwgc25tcC5jKTogbW92ZSBzdHJkdXAgZGVmIHRvIHN5c3RlbS5bY2hdLgoKaGFyZGFrZXIgMjggT2N0IDk3IDE0OjMwOjU1CiAgICAtIChhY2NvbmZpZy5oLCBtaWIuYyk6IHVzZSAnOydzIGZvciBET1MgZW52IHBhdGhzLgoKaGFyZGFrZXIgMjggT2N0IDk3IDE0OjQyOjIzCiAgICAtIChjb25maWcqKTogZml4IHJ0ZW50cnkgc3RydWN0dXJlIGNoZWNrcyBmb3IgdGhlICpic2QgZ3JvdXBzLgoKaGFyZGFrZXIgMjggT2N0IDk3IDE0OjU0OjI0CiAgICAtICgqLiouKi4qKTogcmVuYW1lIG1hY3JvIF9fUCAtPiBfX1VDRF9QIHRvIHJlZHVjZSBzdHVwaWQgY29uZmxpY3RzLgoKaGFyZGFrZXIgMjggT2N0IDk3IDE1OjUwOjA1CiAgICAtIChjb25maWcqLCByb3V0ZV93cml0ZS5jLCB2YXJfcm91dGUuYyk6CiAgICAgIC0gZml4IHJ0ZW50cnkgcHJvYmxlbXMgb25jZSBhbmQgZm9yIHByb2JhYmx5IG5ldmVyLgoKaGFyZGFrZXIgMjggT2N0IDk3IDE3OjA5OjU3CiAgICAtIChhY2NvbmZpZy5oLCBVQ0QtU05NUC1NSUIudHh0KTogZGVmaW5lIGJzZGkgYWdlbnQgdHlwZS4KCmhhcmRha2VyIDI4IE9jdCA5NyAxNzoxMDo1OAogICAgLSAodXRpbF9mdW5jcy5jKTogUGF0Y2ggZnJvbSBOb2J1b19Pa2FiZUB5b2tvZ2F3YS5jby5qcDoKICAgICAgLSBmaXggdW53cmFwcGVkIGZvcGVuKCkgYnkgYWRkaW5nIHJldHVybiBOVUxMIGNoZWNrLgoKaGFyZGFrZXIgMjggT2N0IDk3IDE3OjEyOjAwCiAgICB2ZXJzaW9uIHRhZyAoIDMuMy5wcmU3ICkKCmhhcmRha2VyIDI5IE9jdCA5NyAwOTo0MTo1NAogICAgLSAoc25tcHRyYXAuYyk6IHJlbW92ZSB1bnVzZWQgbmxpc3Qgc3RydWN0LgoKaGFyZGFrZXIgMjkgT2N0IDk3IDA5OjQyOjA3CiAgICAtIChzbm1wX3BhcnNlX2FyZ3MuYyk6IGFkZCBzeXMvc2VsZWN0LmggZm9yIGFpeC4KCmhhcmRha2VyIDI5IE9jdCA5NyAwOTo1Nzo0OAogICAgLSAoZGlzay5bY2hdLCBzdHJ1Y3QuaCwgc2Vkc2NyaXB0LmluLCBzbm1wZC5jb25mLjUuZGVmLCBVQ0QtU05NUC1NSUIudHh0KToKICAgICAgLSBQYXRjaCBmcm9tIFNpbW9uIEJ1cmdlIHRvIGFsbG93IGEgbWluaW11bSBwZXJjZW50YWdlIG9uIGRpc2sgc3BhY2UuCiAgICAgICAgLSAod2FzIG9yaWdpbmFsbHkgYSBtYXhpbXVtLCBidXQgSSBjaGFuZ2VkIGl0IHRvIG1pbmltdW0gaW5zdGVhZCkuCgpoYXJkYWtlciAyOSBPY3QgOTcgMTA6MDY6MTEKICAgIC0gKGRpc2suYyk6IGZpeCBwb2ludGVyIHByb2JsZW1zIGZyb20gb2xkIHJlYWRfY29uZmlnIGZvcm0gdG8gbmV3LgoKaGFyZGFrZXIgMjkgT2N0IDk3IDEwOjA2OjM0CiAgICAtIChzbm1wZC5jb25mLjUuZGVmKTogcmVtb3ZlIHNwYWNlIGJlZm9yZSAlIHNpZ24uCgpoYXJkYWtlciAyOSBPY3QgOTcgMTA6MjU6MzEKICAgIC0gKCovTWFrZWZpbGUuaW4sIG1hbi8qKToKICAgICAgLSBQYXRjaCBmcm9tIFNpbW9uIEJ1cmdlIHRvIGNoYW5nZSBpbnN0YWxsYXRpb24gcGF0aHMuCiAgICAgICAgLSAobW9kaWZpZWQgdG8gcG9pbnQgYWdlbnQgdG8gc2JpbmRpciBpbnN0ZWFkIG9mIGV0Y2RpcikuCgpoYXJkYWtlciAyOSBPY3QgOTcgMTA6NDg6MTgKICAgIC0gKGNvbmZpZyosICovTWFrZWZpbGUuaW4pOgogICAgICAtIE1vdmUgc25tcGxpYnBhdGggdG8gQGRhdGFkaXJAIHdoaWNoIGRlZmF1bHRzIHRvIC91c3IvbG9jYWwvc2hhcmUvc25tcC4KCmhhcmRha2VyIDI5IE9jdCA5NyAxMDo1NDowNwogICAgLSAoYWdlbnQvTWFrZWZpbGUuaW4pOiBvcHBzLCBmb3Jnb3QgdG8gcHV0IGluIEBleGVjX3BhdGhALgoKaGFyZGFrZXIgMjkgT2N0IDk3IDExOjIwOjU0CiAgICAtIChhY2NvbmZpZy5oLCBhc24xLmMsIG1pYi5bY2hdLCBwYXJzZS5oLGFwcHMvKixlcnJvcm1pYi5jLGxvYWRhdmUuYywKICAgICAgIGV4dGVuc2libGUuYywgZGlzay5jLCBzbm1wZGVsdGEqKTogUGF0Y2ggZnJvbSBOaWVscyBCYWdnZXNlbjoKICAgICAgLSB0aGUgbm93IHdlbGxrbm93biBOZXRCU0QgZml4LAogICAgICAtIFN1bk9TNCBjYyBkb2Vzbid0IGxpa2UgdW5zaWduZWQgbGl0ZXJhbHMgb3Igc3RydG91bCwKICAgICAgLSBhZGRlZCBhIGNoYXIgdmVyc2lvbiBvZiAiOyIsCiAgICAgIC0gYWRkZWQgZnByaW50X3ZhcmlhYmxlLCBmcHJpbnRfb2JqaWQgZXRjCiAgICAgIC0gY2hhbmdlZCB0aGUgYXBwcyB0byBwcmludCBhbGwgZXJyb3IgbWVzc2FnZXMgdG8gc3RkZXJyLAogICAgICAtIGNvbXBsZXRlZCB0aGUgYWNjZXNzIGFuZCBzdGF0dXMgdmFsdWVzIGluIHNubXBsaWIvcGFyc2UuaAogICAgICAtIGFkZGVkIGEgcm91Z2hseSBwYXRjaGVkIHZlcnNpb24gb2Ygc25tcGRlbHRhLgoKaGFyZGFrZXIgMjkgT2N0IDk3IDEyOjIzOjI2CiAgICAtIChwYXJzZS5oKTogU1RBVFVTX0tXX09QVElPTkFMIC0+IFNUQVRVU19PUFRJT05BTAoKaGFyZGFrZXIgMjkgT2N0IDk3IDEyOjQzOjQ0CiAgICAtICgqLiouKik6IF9fVUNEX1AgLT4gX19QLCBhbmQgYSBjb25maWd1cmUgY2hlY2sgdG8gbG9vayBmb3IgaXQuCgpoYXJkYWtlciAyOSBPY3QgOTcgMTI6NTc6NDgKICAgIC0gKGNvbmZpZyopOiBjaGVjayBhbmQgaW5jbHVkZSBzeXMvY2RlZnMuaCBpbiBjb25maWcuaC4KCmhhcmRha2VyIDI5IE9jdCA5NyAxMjo1ODowMQogICAgLSAoaG9zdF9yZXMuaCk6IGRvbid0IGluY2x1ZGUgY29uZmlnLmggdHdpY2UuCgpoYXJkYWtlciAyOSBPY3QgOTcgMTQ6MDA6MzgKICAgIHZlcnNpb24gdGFnICggMy4zLnByZTggKQoKaGFyZGFrZXIgIDQgTm92IDk3IDEyOjQ3OjEyCiAgICAtIChyZWFkX2NvbmZpZy5jKToKICAgICAgLSAjaW5jbHVkZSBtaWJfbW9kdWxlX2NvbmZpZy5oCiAgICAgIC0gVVNJTkdfRVhURU5TSUJMRV9NSUJfTU9EVUxFIC0+IFVTSU5HX0VYVEVOU0lCTEVfTUlCX01PRFVMRQoKaGFyZGFrZXIgIDQgTm92IDk3IDEyOjQ3OjU5CiAgICAtIChjb25maWd1cmUuaW4pOgogICAgICAtIENoZWNrIGZvciAkcHJlZml4IGJlaW5nIGRlZmluZWQgYXMgTk9ORSBmb3Igb3RoZXIgdmFycy4KCmhhcmRha2VyICA1IE5vdiA5NyAxMzo0Mjo1NwogICAgLSAoYXBwcy9NYWtlZmlsZS5pbik6IHB1dCBzbm1wdHJhcGQgaW4gQHNiaW5kaXJACgpoYXJkYWtlciAgNSBOb3YgOTcgMTM6NDQ6NTgKICAgIC0gKGNvbW1vbl9oZWFkZXIuaCk6IFBhdGNoIGZyb20gRGF2ZSBTaGllbGRzIGZvciBocHV4MTAgcmUtZGVmaW5pbmcgcHJvYmxlbXMuCgpoYXJkYWtlciAgNSBOb3YgOTcgMTM6NDU6MjMKICAgIC0gKGhyX2Rpc2suYyk6IG5ldyB2ZXJzaW9uIGZvciBocHV4MTAgc3VwcG9ydCBmcm9tIERhdmUgU2hpZWxkLgoKaGFyZGFrZXIgIDUgTm92IDk3IDEzOjQ2OjE3CiAgICAtIChocl9maWxlc3lzLmMsIGhyX3N3cnVuLmMsIGhyX3V0aWxzLmMpOiBQYXRjaGVzIGZyb20gRGF2ZSBTaGllbGQ6CiAgICAgIC0gYnVnIGZpeGVzIGFuZCBocHV4MTAgc3VwcG9ydC4KCmhhcmRha2VyICA1IE5vdiA5NyAxMzo0Njo0NgogICAgLSAodmFyX3JvdXRlLmMpOiBmcm9tIERhdmUgU2hpZWxkOiBkb24ndCBwcm90b3R5cGUgbWFsbG9jLgoKaGFyZGFrZXIgIDUgTm92IDk3IDEzOjQ4OjA3CiAgICAtICgqKTogbWVyZ2UgZnJvbSBEYXZlJ3MgcHJlNiBwYXRjaGVzLgoKaGFyZGFrZXIgIDUgTm92IDk3IDEzOjUyOjAwCiAgICAtIChzbm1wX2FnZW50LmMsIHNubXBfdmFycy5jLCBzbm1wZC5jLCBkaXNrLmMsIHByb2MuYywgdXRpbF9mdW5jcy5jKToKICAgICAgLSAjaW5jbHVkZSAibWliX21vZHVsZV9jb25maWcuaCIuCgpoYXJkYWtlciAgNSBOb3YgOTcgMTM6NTY6NTgKICAgIC0gKGF0LmMsIGljbXAuYywgaW50ZXJmYWNlcy5jLCBpcC5jLCB0Y3AuYywgdWRwLmMpOgogICAgICAtICNpbmNsdWRlICJtaWJfbW9kdWxlX2NvbmZpZy5oIgoKaGFyZGFrZXIgIDUgTm92IDk3IDE0OjAwOjA5CiAgICAtIChNYWtlZmlsZS5pbiwga2VybmVsX3N1bm9zNS5jLCBtaWIuYyk6IFBhdGNoIGZyb20gTmllbHMgQmFnZ2VzZW46CiAgICAgIC0gb2N0ZXQgY291bnRlcnMgZm9yIHNvbGFyaXMuCiAgICAgIC0gTWFrZWZpbGUuaW4gcGF0Y2hlcy4KCmhhcmRha2VyICA1IE5vdiA5NyAxNDo0MDowNwogICAgLSAobWVtb3J5LmMpOiBwcm90ZWN0IHZtbWV0ZXIuaCBmcm9tIG11bHRpcGxlIGluY2x1c2lvbnMgb24gbmV0YnNkLgoKaGFyZGFrZXIgIDUgTm92IDk3IDE1OjI5OjUwCiAgICB2ZXJzaW9uIHRhZyAoIDMuMy5wcmU5ICkKCmhhcmRha2VyICA3IE5vdiA5NyAxMjoyNDoyMgogICAgLSAoY29uZmlndXJlLmluKTogY2hlY2sgZm9yIGxpbnV4L2hkcmVnLmgKCmhhcmRha2VyICA3IE5vdiA5NyAxMjoyNTozNQogICAgLSAoaHJfc3dydW4uYyk6IGRvbid0IHByaW50IGEgdmFyaWFibGUgdGhhdCBkb2Vzbid0IGV4aXN0IHVuZGVyIGxpbnV4LgoKaGFyZGFrZXIgIDcgTm92IDk3IDEyOjI4OjAzCiAgICAtIChrZXJuZWxfc3Vub3M1LmMpOiBwYXRjaCBmcm9tIE5pZWxzIGZvciBzb2xhcmlzID4yLjYuCgpoYXJkYWtlciAgNyBOb3YgOTcgMTM6Mzc6MTQKICAgIC0gKHJlYWRfY29uZmlnLmMsIHNubXBfYWdlbnQuYywgc25tcGQuYyk6IFVTSU5HLipfTUlCX01PRFVMRSAtPiBVU0lORy4qX01PRFVMRS4KCmhhcmRha2VyICA3IE5vdiA5NyAxMzozNzo0NAogICAgLSAoaHJfbmV0d29yay5jKTogZG9uJ3QgcGFzcyBjaGFyICoqIHRvIGludGVyZmFjZXNfc2Nhbl9uZXh0KCkuCgpoYXJkYWtlciAgNyBOb3YgOTcgMTM6Mzg6MzYKICAgIC0gKHNubXB3YWxrLmMpOiBzdG9wIG9uIG5vIHJlc3BvbnNlIGZyb20gaG9zdC4KCmhhcmRha2VyICA3IE5vdiA5NyAxNToxOToyNAogICAgLSAoYWNjb25maWcuaCk6IHBhdGNoIGZyb20gSm9lIE1hcnpvdDoKICAgICAgLSBkZWZpbmUgX0NSVElNUCBmb3IgdW5peCBkdWUgdG8gVzMyIGJhZCBPUyBkZXNpZ25zLgoKaGFyZGFrZXIgIDcgTm92IDk3IDE1OjE5OjU5CiAgICAtIChzbm1wZ2V0bmV4dC5oKTogcGF0Y2ggZnJvbSBKb2UgTWFyem90OgogICAgICAtIHVzZSBfQ1JUSU1QIGluIGZyb250IG9mIGVycm5vIGRlY2xhcmF0aW9uLgoKaGFyZGFrZXIgIDcgTm92IDk3IDE1OjIwOjU0CiAgICAtIChwYXJzZS5bY2hdLCBzbm1wX2NsaWVudC5jKTogcGF0Y2ggZnJvbSBKb2UgTWFyem90OgogICAgICAtIHVzZSBfQ1JUSU1QIGluIGZyb250IG9mIGVycm5vIGRlY2xhcmF0aW9uLgogICAgICAtIGRlZmluZSBmaW5kX25vZGUgZXh0ZXJuYWxseS4KCmhhcmRha2VyICA3IE5vdiA5NyAxNToyMjowOQogICAgLSAod2luMzIvKik6IHBhdGNoIGZyb20gSm9lIE1hcnpvdDoKICAgICAgLSB3aW4zMiBzcGVjaWZpYyBjaGFuZ2VzLgoKaGFyZGFrZXIgIDcgTm92IDk3IDE1OjI4OjU5CiAgICAtICgqKTogbWVyZ2UgdG8gbWFpbiBicmFuY2g6ICBwYXRjaGVzIGZyb20gSm9lIE1hcnpvdC4KCmhhcmRha2VyICA3IE5vdiA5NyAxNjoxNjo1MwogICAgLSAoY29uZmlndXJlLmluKTogd2F0Y2ggb3V0IGZvciAvdXNyL3VjYi9jYyBvbiBzb2xhcmlzIGFuZCBkb24ndCB1c2UgaXQuCgpoYXJkYWtlciAgNyBOb3YgOTcgMTY6Mzc6MDEKICAgIC0gKE5FV1MsIFJFQURNRSwgVE9ETyk6IERvY3VtZW50YXRpb24gdXBkYXRlcy4KCmhhcmRha2VyICA3IE5vdiA5NyAxNjozODo0OQogICAgdmVyc2lvbiB0YWcgKCAzLjMucHJlMTAgKQoKaGFyZGFrZXIgMTIgTm92IDk3IDA3OjQyOjI0CiAgICAtIChzbm1wdHJhbnNsYXRlLmMpOiBQYXRjaCBmcm9tIEpvZSBNYXJ6b3Q6IFczMiBzcGVjaWZpYyBmaXhlcy4KCmhhcmRha2VyIDEyIE5vdiA5NyAwODoyNjo0NQogICAgLSAoc25tcF9jbGllbnQuYyk6IFBhdGNoIGZyb20gSm9lIE1hcnpvdDoKICAgICAgLSBGcmVlIGEgcGR1IGluIGEgc3BvdCB0aGF0IHNob3VsZCB0ZWNobmljYWxseSBuZXZlciBiZSBuZWVkZWQsIGJ1dAogICAgICAgIGlzIG5pY2UgZm9yIHBlb3BsZSByZWFkaW5nIHRoZSBjb2RlLgoKaGFyZGFrZXIgMTIgTm92IDk3IDA5OjE3OjA4CiAgICAtIChGQVEpOiBEb2MgdXBkYXRlIGZyb20gRGF2ZSBTaGllbGQuCgpoYXJkYWtlciAxMiBOb3YgOTcgMDk6MTc6MjgKICAgIC0gKG1pYl9hcGkuMyk6IERvYyB1cGRhdGUgZnJvbSBEYXZlIFNoaWVsZC4KCmhhcmRha2VyIDEyIE5vdiA5NyAwOToxODowMgogICAgLSAoaHJfc3dydW4uYyk6IFBhdGNoIGZyb20gRGF2ZSBTaGllbGQgZm9yIGxpbnV4L2hwdXgxMCBwcm9ibGVtcy4KCmhhcmRha2VyIDEyIE5vdiA5NyAxMDoyNTozMAogICAgLSAoTkVXUywgVE9ETyk6IFBhdGNoIGZyb20gTmllbHMgQmFnZ2VzZW46CiAgICAgIC0gZG9jIHVwZGF0ZS4KCmhhcmRha2VyIDEyIE5vdiA5NyAxMDoyNzowOAogICAgLSAoKi9NYWtlZmlsZS5pbik6IFBhdGNoIGZyb20gTmllbHMgQmFnZ2VzZW46CiAgICAgIC0gYWRkIEBkYXRhZGlyQCB0byBmaWxlcyB0aGF0IG5lZWRlZCBpdC4KCmhhcmRha2VyIDEyIE5vdiA5NyAxMDoyNzo0NgogICAgLSAoa2VybmVsX3N1bm9zNS5jKTogUGF0Y2ggZnJvbSBOaWVscyBCYWdnZXNlbjoKICAgICAgLSBzb2xhcmlzIHBhdGNoZXMuCgpoYXJkYWtlciAxMiBOb3YgOTcgMTA6Mjg6MTEKICAgIC0gKHBhcnR5X3ZhcnMuYyk6IFBhdGNoIGZyb20gTmllbHMgQmFnZ2VzZW46CiAgICAgIC0gaW5jbHVkZSBuZXRpbmV0L2luLmggaWYgYXZhaWxhYmxlLgoKaGFyZGFrZXIgMTIgTm92IDk3IDEwOjI5OjQyCiAgICAtIChNYWtlZmlsZS5pbik6IFBhdGNoIGZyb20gTmllbHMgQmFnZ2VzZW46CiAgICAgIC0gYWRkIEBkYXRhZGlyQCB0byBmaWxlcyB0aGF0IG5lZWRlZCBpdC4KCmhhcmRha2VyIDEyIE5vdiA5NyAxMDozMDo1NwogICAgLSAoYXBwcy8qLmMpOiBQYXRjaCBmcm9tIE5pZWxzIEJhZ2dlc2VuOgogICAgICAtIHZhcmlvdXMgKHJlbW92ZSB1bm5lZWRlZCB2YXJzLCBldGMpLgogICAgICAtIGFkZCBzbm1wdGFibGUuCiAgICAgIC0gbWFrZSBzbm1wdHJhcGQgbXVsdGktbGluZ3VhbC4KCmhhcmRha2VyIDEyIE5vdiA5NyAxMDozMjoyMgogICAgLSAoc25tcG5ldHN0YXQvbWFpbi5jKTogUGF0Y2ggZnJvbSBOaWVscyBCYWdnZXNlbjoKICAgICAgLSBzbm1wdjJjIHN1cHBvcnQgYW5kIGFyZ3VtZW50IHBhcnNpbmcgY2hhbmdlcy4KCmhhcmRha2VyIDEyIE5vdiA5NyAxMDozMzoyMAogICAgLSAobWFuL3NubXBkZWx0YS4xLHNubXB0YWJsZS4xLHNubXB0cmFwZC44KTogUGF0Y2ggZnJvbSBOaWVscyBCYWdnZXNlbjoKICAgICAgLSBkb2N1bWVudGF0aW9uIGNoYW5nZXMgYW5kIGFkZGl0aW9ucy4KCmhhcmRha2VyIDEyIE5vdiA5NyAxMDozODozNgogICAgLSAocGFyc2UuYywgcGFyc2UuaCk6IFBhdGNoIGZyb20gTmllbHMgQmFnZ2VzZW46CiAgICAgIC0gcGFyc2VyIGltcHJvdmVtZW50cy4KICAgICAgLSBwYXJzZXIgZGlyZWN0b3J5IGNhY2hpbmcuCiAgICAgIC0gc2F2ZV9kZXNjcmlwdGlvbnMvbWliX3dhcm5pbmdzIHNldCBmdW5jdGlvbnMuCgpoYXJkYWtlciAxMiBOb3YgOTcgMTA6NDQ6NDcKICAgIC0gKE5FV1MpOiBkb2MgdXBkYXRlLgoKaGFyZGFrZXIgMTIgTm92IDk3IDE1OjEwOjI3CiAgICAtIChzeXN0ZW0uaCk6IERvbid0IGluY2x1ZGUgY29uZmlnLmghCgpoYXJkYWtlciAxMiBOb3YgOTcgMTU6MTY6NDQKICAgIC0gKHBhcnR5X3ZhcnMuYyk6IGluY2x1ZGUgU1REQ19IRUFERVJTIGZvciBBSVguCgpoYXJkYWtlciAxMiBOb3YgOTcgMTU6MjE6NDEKICAgIC0gKHBhcnNlLmMpOiBpbmNsdWRlIFNURENfSEVBREVSUyBmb3IgQUlYLgoKaGFyZGFrZXIgMTIgTm92IDk3IDE1OjQyOjAyCiAgICAtICgqL01ha2VmaWxlLmluKTogbWFrZSBkZXBlbmQuCgpoYXJkYWtlciAxMiBOb3YgOTcgMTY6MDU6NDcKICAgIHZlcnNpb24gdGFnICggMy4zLnByZTExICkKCmhhcmRha2VyIDEyIE5vdiA5NyAyMDoyNzoxMQogICAgLSAod2luMzIvbGlic25tcF9kbGwvbGlic25tcC5kZWYpOiBQYXRjaCBmcm9tIEpvZSBNYXJ6b3Q6IGZ1bmN0aW9uIGNoYW5nZXMuCgpoYXJkYWtlciAxMiBOb3YgOTcgMjA6MzU6MDAKICAgIC0gKCk6IFBhdGNoIGZyb20gRGF2aWQgWmltbWVybWFuOgogICAgICAtIEZpeGVzIGZvciBBSVguCgpoYXJkYWtlciAxMiBOb3YgOTcgMjA6MzU6MjcKICAgIC0gKHZhcl9yb3V0ZS5jLCByZWFkX2NvbmZpZy5jLCBzbm1wZGVsdGEuYyk6IFBhdGNoIGZyb20gRGF2aWQgWmltbWVybWFuOgogICAgICAtIEZpeGVzIGZvciBBSVguCgpoYXJkYWtlciAxMiBOb3YgOTcgMjA6NDM6MzMKICAgIC0gKHZhcl9yb3V0ZS5jLCByZWFkX2NvbmZpZy5jKTogZml4IHFzb3J0IHBhcmFtcyBmb3IgU1REQy4KCmhhcmRha2VyIDEyIE5vdiA5NyAyMDo0Nzo0NwogICAgLSAodmFyX3JvdXRlLmMsIHJlYWRfY29uZmlnLmMpOiBTVERDIHR5cG9zLgoKaGFyZGFrZXIgMTQgTm92IDk3IDA4OjMxOjQxCiAgICAtICh3b21iYXQuYyk6IGNvZGUgY29tbWVudHMgZnJvbSBBbGFuIEJhdGllLgoKaGFyZGFrZXIgMTQgTm92IDk3IDA4OjMyOjI2CiAgICAtIChSRUFETUUpOiBjb2RlciBsaXN0IHVwZGF0ZS4KCmhhcmRha2VyIDE0IE5vdiA5NyAxMjoyMToxMAogICAgLSAod29tYmF0LmMpOiBxdWljayBkb2MgY2hhbmdlLgoKaGFyZGFrZXIgMTQgTm92IDk3IDEyOjM1OjE5CiAgICAtIChGQVEsIE5FV1MsIFJFQURNRSk6IGxhc3QgZG9jdW1lbnRhdGlvbiB1cGRhdGVzLgoKCQoJCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCkNoYW5nZXM6IFYzLjEuMyAtPiBWMy4yCgp3aGFyZGFrZSAxMSBGZWIgOTcgMTI6NDg6MDYKICAgIC0gKHNubXBfdmFycy5jLCBzbm1wX3Zhcl9yb3V0ZS5jLCBzbm1wX3ZhcnMubGludXguaCk6IFBhdGNoIGZyb20gSmVubmlmZXIgQnJheToKICAgICAgLSBHZXQgYWdlbnQgd29ya2luZyBvbiBsaW51eC4KCndoYXJkYWtlIDExIEZlYiA5NyAxMjo1MDo0NgogICAgLSAoc25tcF92YXJzLmxpbnV4LmgpOiBSZW1vdmVkIG5vbi1saW51eCBzcGVjaWZpYyBzdHVmZi4KCndoYXJkYWtlIDExIEZlYiA5NyAxMjo1NDozNgogICAgLSAoc25tcF92YXJzLmMpOiBQYXRjaCBmcm9tIERhdmUgU2hpZWxkOiAgRml4IGhwdXggc3BlY2lmaWMgcHJvYmxlbXMuCgp3aGFyZGFrZSAxMSBGZWIgOTcgMTM6MTE6MjEKICAgIC0gKCpNYWtlZmlsZS5pbik6IFBhdGNoIGZyb20gUGhpbGlwIEd1ZW50aGVyOgogICAgICAtIEZpeCBhbGwgTWFrZWZpbGUuaW4ncyB0byBzdXBwb3J0IGEgZGlmZmVyZW50IHNyYyBkaXIuCgp3aGFyZGFrZSAxMSBGZWIgOTcgMTM6MTI6MTkKICAgIC0gKFJFQURNRSk6IFVwZGF0ZSBwZW9wbGUgc3VwcGx5aW5nIHBhdGNoZXMgbGlzdC4KCndoYXJkYWtlIDExIEZlYiA5NyAxMzoxOTozNwogICAgLSAoYWxsIC5jIHdpdGggbWFpbigpLCBzbm1wbGliLyopOiBQYXRjaCBmcm9tIFBoaWxpcCBHdWVudGhlcjoKICAgICAgLSBNYWtlIGJldHRlciBzdXBwb3J0IGZvciBzaGFyZWQgbGliIHBvc3NpYmlsaXRpZXMuCgp3aGFyZGFrZSAxMSBGZWIgOTcgMTQ6MTA6MTEKICAgIC0gKHNubXBfdmFycy5saW51eC5oKTogRml4ICNpZmRlZi4KCndoYXJkYWtlIDExIEZlYiA5NyAxNDoxMToyNAogICAgLSAoe2xvY2FsLG1hbixvdn0vTWFrZWZpbGUuaW4pOiBSZW1vdmUgc3BhY2VzIGluIGZyb250IG9mIHRhYnMuCgp3aGFyZGFrZSAxMSBGZWIgOTcgMTQ6MTM6MzQKICAgIC0gKHNubXBfYXV0aC5jKTogcmVtb3ZlIG5vbi1zdGF0aWMgbWQ1ZGlnZXN0IHByb3RvdHlwZS4KCndoYXJkYWtlIDExIEZlYiA5NyAxNDoxNDowNQogICAgdmVyc2lvbiB0YWcgKCAzLjEuNC5wcmUxICkKCndoYXJkYWtlIDExIEZlYiA5NyAxNjo0MjowMgogICAgLSAoYXBwcy9NYWtlZmlsZS5pbik6IFBhdGNoIGZyb20gU2ltb24gTGVpbmluIHRvIGRlc2NlbmQgd2hlbiBtYWtlIGNsZWFuaW5nLgoKd2hhcmRha2UgMTEgRmViIDk3IDE2OjQ0OjA4CiAgICAtIChtYW4vTWFrZWZpbGUuaW4pOiBQYXRjaCBmcm9tIFNpbW9uIExlaW5pbiB0byBmaXggc3JjZGlyIHByb2JsZW1zLgoKd2hhcmRha2UgMTEgRmViIDk3IDE3OjAwOjI2CiAgICAtIChNYWtlZmlsZS5pbik6IFJlc3Qgb2YgUGhpbGlwJ3MgcGF0Y2ggdG8gZml4IHNyY2RpciBwcm9ibGVtcyAoc2ggdmFycykuCgp3aGFyZGFrZSAxNyBGZWIgOTcgMTQ6NDE6MDgKICAgIC0gKGFnZW50L3NubXBfdmFycywgYWdlbnQvbWliZ3JvdXApOiBEYXZlIFNoaWVsZCBzcGxpdCB1cCB0aGUKICAgICAgc25tcF92YXJzLmMgYW5kIHJlbGF0ZWQgZmlsZXMgaW50byBwaWVjZXMgZm9yIGVhc2llciBtYW5hZ2VtZW50LgogICAgICBUaGUgcmVzdWx0cyBvZiBoaXMgd29yayBhcmUgaW4gdGhlIG5ldyBhZ2VudC9taWJncm91cCBkaXJlY3RvcnkuCgp3aGFyZGFrZSAxNyBGZWIgOTcgMTQ6NDc6MTMKICAgIC0gKG1pYi5jLCBzbm1wX2FwaS5jLCBzbm1wX2FwaS5oKTogUGF0Y2ggZnJvbSBEYXZlIFNoaWVsZCB0byByZW1vdmUKICAgICAgQU5TSSBzcGVjaWZpYyByZXF1aXJlbWVudHMuCgp3aGFyZGFrZSAxNyBGZWIgOTcgMTQ6NTM6MjQKICAgIC0gKGFnZW50LypNYWtlZmlsZS5pbik6ICBNYWtlIGRlcGVuZC4KCndoYXJkYWtlIDE3IEZlYiA5NyAxNTozMDowNAogICAgLSAoYWxhcm0uYyk6IHR5cGVkZWYgZm9yIGdldFN0YXRQdHIoKS4KCndoYXJkYWtlIDE3IEZlYiA5NyAxNTozMDozNgogICAgLSAoZXZlbnQuYyk6IFdhcyBwYXNzaW5nIGFuIGludCB0byBiY29weSBpbnN0ZWFkIG9mICZpbnQuCgp3aGFyZGFrZSAxNyBGZWIgOTcgMTU6MzE6MjUKICAgIC0gKGljbXAuYyk6IGRvbid0IHVzZSByZXQgdmFyaWFibGUsIHNpbmNlIGl0J3Mgbm90IGRlZmluZWQuCgp3aGFyZGFrZSAxNyBGZWIgOTcgMTU6MzI6MzAKICAgIC0gKGludGVyZmFjZXMuYyk6IFJlbW92ZSBNQVhfTkFNRV9MRU5HVEggcmVxdWlyZW1lbnRzLgoKd2hhcmRha2UgMTcgRmViIDk3IDE2OjExOjA5CiAgICB2ZXJzaW9uIHRhZyAoIDMuMS40LnByZTIgKQoKd2hhcmRha2UgIDQgTWFyIDk3IDE1OjQ2OjMwCiAgICAtIChjb25maWcqLCBtaWJncm91cC9NYWtlZmlsZS5pbik6CiAgICAgIC0gbWliZ3JvdXAgY29tcGlsZSBsaXN0IGlzIGJ1aWxkIGJ5IGNvbmZpZ3VyZSBhbmQgY2FuIGJlIGF1Z21lbnRlZAogICAgICAgIGJ5IHRoZSAtLXdpdGgtbWliLW1vZHVsZXM9Imxpc3Qgb2YgbW9kdWxlcyIgY29tbWFuZCBsaW5lIHRvIGNvbmZpZ3VyZS4KCndoYXJkYWtlICA1IE1hciA5NyAwOTo0OTo1OQogICAgLSAoY29uZmlnKiwgYWdlbnQvKiwgYWdlbnQvbWliZ3JvdXAvKik6CiAgICAgIC0gQWRkZWQgLm8gZmlsZSBsaXN0IHRvIGFnZW50L01ha2VmaWxlLmluIGdlbmVyYXRlZCBieSBjb25maWd1cmUuCiAgICAgIC0gbmV3IGZpbGVzIGdlbmVyYXRlZCBieSBjb25maWd1cmU6CiAgICAgICAgLSBtaWJncm91cC9taWJfbW9kdWxlX2luY2x1ZGVzLmg6ICBBIGxpc3Qgb2YgbWliIC5oIGZpbGVzIGZvciBzbm1wX3ZhcnMuaC4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGV2ZXJ5IG1vZHVsZSAqbXVzdCogaGF2ZSBhIC5oIGZpbGUpCiAgICAgICAgLSBtaWJncm91cC9taWJfbW9kdWxlX2luaXRzLmg6IEEgbGlzdCBvZiBpbml0X3dvbWJhdCgpIHR5cGUgZnVuY3Rpb25zLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob25seSBwcmVzZW50IGlmIGV4aXN0IGluIHdvbWJhdC5jKS4KICAgICAgICAtIG1pYmdyb3VwL21pYl9tb2R1bGVfbG9hZHMuaDogVGhpcyBmaWxlIGlzIGdlbmVyYXRlZCBieSBhIG5ldyBtYWNybyBpbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgbWliLmggZmlsZXMgY2FsbGVkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ19sb2FkX21pYigpLCB3aGljaCBzaW1wbGlmaWVzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBsb2FkaW5nIG9mIHRoZSBtaWIgc2VjdGlvbnMuCgp3aGFyZGFrZSAgNSBNYXIgOTcgMTA6MDM6NTgKICAgIC0gKHN5c3RlbS5jKTogcmVtb3ZlZCBzeXN0ZW0gbmxpc3QgKHVudXNlZCkuCgp3aGFyZGFrZSAgNSBNYXIgOTcgMTE6MTc6NDQKICAgIC0gKHNubXBfY2xpZW50LmMpOiBQYXRjaCBmcm9tIEVsd3luIEIgRGF2aWVzOgogICAgICAtIEZpeCBhIFBEVSBjbG9uaW5nIGJ1Zy4KCndoYXJkYWtlICA1IE1hciA5NyAxMToyODoyMAogICAgLSAoKi5jLCAqLmgpOiBQYXRjaCBmcm9tIE5pZWxzIEJhZ2dlc2VuIHRvIHByb3RvdHlwZSAqZXZlcnl0aGluZyouCgp3aGFyZGFrZSAgNSBNYXIgOTcgMTE6Mjg6MjMKICAgIGZpbGUga2VybmVsLmggd2FzIGluaXRpYWxseSBhZGRlZCBvbiBicmFuY2ggRXh0LTMtMS00LXByZTItbmllbHMuCgp3aGFyZGFrZSAgNSBNYXIgOTcgMTE6Mjg6NDUKICAgIC0gKCouYywgKi5oKTogUGF0Y2ggZnJvbSBOaWVscyBCYWdnZXNlbiB0byBwcm90b3R5cGUgKmV2ZXJ5dGhpbmcqLgoKd2hhcmRha2UgIDUgTWFyIDk3IDExOjI4OjQ4CiAgICBmaWxlIHNubXBkLmggd2FzIGluaXRpYWxseSBhZGRlZCBvbiBicmFuY2ggRXh0LTMtMS00LXByZTItbmllbHMuCgp3aGFyZGFrZSAgNSBNYXIgOTcgMTE6MzU6MTgKICAgIC0gKCouYywgKi5oKTogUGF0Y2ggZnJvbSBOaWVscyBCYWdnZXNlbiB0byBwcm90b3R5cGUgKmV2ZXJ5dGhpbmcqLgoKd2hhcmRha2UgIDUgTWFyIDk3IDExOjM3OjM1CiAgICAtIChSRUFETUUpOiBDb250cmlidXRlciBuYW1lIGFkZGl0aW9uLgoKd2hhcmRha2UgIDUgTWFyIDk3IDE1OjA2OjQxCiAgICAtICgqLmMsICouaCk6IFBhdGNoIGZyb20gTmllbHMgQmFnZ2VzZW4gdG8gcHJvdG90eXBlICpldmVyeXRoaW5nKi4KCndoYXJkYWtlICA1IE1hciA5NyAxNjoxMzozOAogICAgLSAoYWNsX3ZhcnMuYyk6IGluY29ycmVjdGx5IGZpeGVkIHByb3RvdHlwaW5nIGVycm9ycyBmb3Igd3JpdGVfYWNsKCkuCgp3aGFyZGFrZSAgNSBNYXIgOTcgMTY6MTU6NTQKICAgIC0gKHNubXBfYXBpLmMpOiBmaXhlZCBwcm90b3R5cGluZyBlcnJvcnMgaW4gc25tcF9wYXJzZS4gIFBvc3NpYmx5IHdyb25nLgoKd2hhcmRha2UgIDUgTWFyIDk3IDE2OjI5OjA1CiAgICAtIChzbm1wX2FwaS5jKTogWWVwLiBJdCB3YXMgd3JvbmcuICBUZXN0ZWQgYW5kIHdvcmtzIG5vdy4KCndoYXJkYWtlICA3IE1hciA5NyAwOTowNjozNAogICAgLSAoZXh0ZW5zaWJsZS8qIC0+IG1pYmdyb3VwLyopOiBtb3ZlZCBleHRlbnNpYmxlIHN0dWZmIHRvIG1pYiBtb2R1bGVzLgoKd2hhcmRha2UgIDcgTWFyIDk3IDA5OjA3OjA3CiAgICAtIChzbm1wX3ZhcnMuYyk6IHJlbW92ZWQgbW9yZSBub24tbWliZ3JvdXAgc3BlY2lmaWMgY2FsbHMgYW5kIGhlYWRlcnMuCgp3aGFyZGFrZSAgNyBNYXIgOTcgMDk6NTk6MjgKICAgIC0gKHNubXBfdmFycy5oLCBtaWJncm91cC8qKTogc3RyaWN0LXByb3RvdHlwaW5nIGFuZCBjb25maWdfcmVxdWlyZSgpcy4KCndoYXJkYWtlICA3IE1hciA5NyAxMDowNzo1MwogICAgLSAobWlibW9kdWxlL3ZlcnNpb250YWcpOiBtb3ZlZCBpbnRvIHBsYWNlIGZyb20gZXh0ZW5zaWJsZS8KCndoYXJkYWtlICA3IE1hciA5NyAxMDozNDo1MwogICAgLSAoaHB1eC5bY2hdKTogQWRkZWQgaHB1eCBzcGVjaWZpYyBmaWxlcyBmcm9tIGV4dGVuc2libGUgZGlyLgoKd2hhcmRha2UgIDcgTWFyIDk3IDEwOjQzOjA4CiAgICAtIChleHRlbnNpYmxlLyopOiBjdnMgcmVtb3ZpbmcgZmlsZXMuCgp3aGFyZGFrZSAgNyBNYXIgOTcgMTA6NDk6MDAKICAgIC0gKG1pYmdyb3VwL3N0cnVjdC5oKTogbW92ZWQgdG8gaGVyZS4KCndoYXJkYWtlICA3IE1hciA5NyAxMTo0MzowNQogICAgLSAoY29uZmlnKik6IGdlbmVyYXRlIGEgbWliX21vZHVsZV9jb25maWcuaCB3aXRoIGRlZmluZXMgb2Ygd2hhdHMgYmVpbmcgdXNlZC4KCndoYXJkYWtlICA3IE1hciA5NyAxMzozOToyNAogICAgLSAobWFrZWRlcGVuZC5pbik6IG5ldyBtYWtlIGRlcGVuZCBzY3JpcHQKCndoYXJkYWtlICA3IE1hciA5NyAxMzo0MDo0MAogICAgLSAocmVtb3ZlLWZpbGVzKTogYWRkIG1ha2VkZXBlbmQuaW4KCndoYXJkYWtlICA3IE1hciA5NyAxMzo0NjoxNQogICAgLSAoTWFrZWZpbGUuaW4sIHNlZHNjcmlwdC5pbik6IEZpeCBzZWRzY3JpcHQgZ2VuZXJhdGlvbi4gIHNpZ2guCgp3aGFyZGFrZSAgNyBNYXIgOTcgMTM6NDc6NDUKICAgIC0gKGFnZW50L01ha2VmaWxlLmluKTogbWFrZSBkZXBlbmQgYW5kIGV4dGVuc2libGUvIHJlbW92ZXMuCgp3aGFyZGFrZSAgNyBNYXIgOTcgMTM6NDg6NTkKICAgIC0gKHNubXBfYWdlbnQuYywgc25tcF92YXJzLmMsIHNubXBkLmMpOiByZW1vdmUgZXh0cHJvdG8uaCBpbmNsdWRlLgoKd2hhcmRha2UgIDcgTWFyIDk3IDEzOjUwOjE1CiAgICAtIChtaWJncm91cC9NYWtlZmlsZS5pbiwgYXBwcy9NYWtlZmlsZS5pbiwgc25tcGxpYi9NYWtlZmlsZS5pbik6IGRlcGVuZC4KCndoYXJkYWtlICA3IE1hciA5NyAxMzo1MDo1MgogICAgLSAoaHB1eC5jKTogaWZkZWYgYSBmZXcgaGVhZGVycyBmb3IgY29ycmVjdCBtYWtlIGRlcGVuZC4KCndoYXJkYWtlICA3IE1hciA5NyAxMzo1MTozMAogICAgLSAoc25tcGxpYi9zbm1wLmMpOiByZW1vdmUgc2Vjb25kIGN0eXBlLmggaW5jbHVkZS4KCndoYXJkYWtlICA3IE1hciA5NyAxNDowMTo1MQogICAgdmVyc2lvbiB0YWcgKCAzLjEuNC5wcmUzICkKCndoYXJkYWtlICA3IE1hciA5NyAxNTowMTowNQogICAgLSAobWliZ3JvdXAvKik6IHJlbW92ZWQge30gcmVxdWlyZW1lbnQgZnJvbSBjb25maWdfbG9hZF9taWIoKSBjYWxscy4KCndoYXJkYWtlICA3IE1hciA5NyAxNTowMjoxOAogICAgLSAoY29uZmlndXJlKTogcmVtb3ZlZCB7fSByZXF1aXJlbWVudCBmcm9tIGNvbmZpZ19sb2FkX21pYigpIGNhbGxzLgoKd2hhcmRha2UgIDcgTWFyIDk3IDE2OjA5OjU4CiAgICAtIChjb25maWcqKTogbWFrZSBuZXcgY29uZmlndXJlIG9wdGlvbnMgcmVzcGVjdCAkKHNyY2RpcikuCgp3aGFyZGFrZSAgNyBNYXIgOTcgMTY6MTE6NTAKICAgIC0gKGNvbW1vbl9oZWFkZXIuaCk6IGNvbW1lbnQgb3V0IGVuZCBvZiAjZW5kaWYuCgp3aGFyZGFrZSAxMCBNYXIgOTcgMTY6NTU6NDYKICAgIC0gKGNvbmZpZ3VyZS5pbik6IE5ldyBjb25maWd1cmUgb3B0aW9uOiAgLS13aXRoLW91dC1taWItbW9kdWxlcz0ibGlzdCIuCgp3aGFyZGFrZSAxMCBNYXIgOTcgMTc6Mjg6MjkKICAgIC0gKGNvbmZpZ3VyZS5pbik6IHNwYWNlIHByb3RlY3QgbW9kdWxlcyB3aGVuIGNoZWNraW5nIGZvciB3aXRoIGdyZXAuCgp3aGFyZGFrZSAxMSBNYXIgOTcgMDk6MDQ6MDMKICAgIC0gKGlwLmMpOiBmcmVlYnNkMiBwYXRjaC4KCndoYXJkYWtlIDExIE1hciA5NyAxNzozOToyMwogICAgLSAobWliZ3JvdXAvKik6CiAgICAgIC0gcmVtb3ZlIHRyYWlsaW5nIDtzIG9uIGJ1bmNoZXMgb2YgZnVuY3Rpb25zLgogICAgICAtIG1ha2UgZXZlcnl0aGluZyBidXQgaW50ZXJmYWNlcy5jIGNvbXBpbGUgb24gaXJpeDYuMy4KICAgIC0gKGNvbmZpZyosc3lzdGVtLmMpOiB1c2UgdW5hbWUgYW5kIGdldGhvc3RuYW1lIGlmIGF2YWlsYWJsZS4KICAgIC0gKGNvbmZpZ3VyZS5pbiwgY29uZmlndXJlKTogRG9uJ3QgY2hlY2sgX0tFUk5FTCBpZiBpZm5ldC5pZl9tdHUgYWxyZWFkeSB3b3Jrcy4KCndoYXJkYWtlIDEyIE1hciA5NyAwOToyODowNAogICAgLSAobWliZ3JvdXAvc25tcC5baGNdIC0+IG1pYmdyb3VwL3NubXBfbWliLltoY10pOiBNb3ZlZCBkdWUgdG8gbmFtZSBjbGFzaGVzLgoKd2hhcmRha2UgMTIgTWFyIDk3IDE1OjQ3OjAwCiAgICAtIChjb25maWd1cmUuaW4sIHNubXBkLmMsIHNubXBfYWdlbnQuYywgcm91dGVfd3JpdGUuW2NoXSwKICAgICAgdmFyX3JvdXRlLltjaF0sIGlwLltjaF0sIHNubXAuW2NoXSAtPiBzbm1wX21pYi5bY2hdKToKICAgICAgLSBNb3ZlZCBzbm1wIG1pYiBtb2R1bGUgLT4gc25tcF9taWIgZm9yIG5hbWluZyBjb25mbGljdHMgd2l0aCBzbm1wbGliLgogICAgICAtIE1vdmVkIHNubXBfdmFyX3JvdXRlLmMgLT4gbWliZ3JvdXAvdmFyX3JvdXRlLmMKICAgICAgLSBNb3ZlZCB3cml0ZV9yb3V0ZS5jIC0+IG1pYmdyb3VwL3dyaXRlX3JvdXRlLmMKCndoYXJkYWtlIDEyIE1hciA5NyAxNTo0ODozNwogICAgLSAoKi9NYWtlZmlsZS5pbik6IG1ha2UgZGVwZW5kIHVwZGF0ZS4KCndoYXJkYWtlIDEyIE1hciA5NyAxNTo1NToyMAogICAgLSAobWliZ3JvdXAvUkVBRE1FKTogZG9jIHVwZGF0ZSBmcm9tIERhdmUgU2hpZWxkLgoKd2hhcmRha2UgMTIgTWFyIDk3IDE3OjE1OjIwCiAgICAtIChzbm1wX2FwaS5jKTogcmV0dXJucyBmcm9tIGluZXRfYWRkciBhcmUgaW5fYWRkcl90ICh1X2ludCkgbm90IHVfbG9uZy4KCndoYXJkYWtlIDEzIE1hciA5NyAwOTozNzozNwogICAgLSAoY29uZmlnKik6IGNoZWNrIGZvciBpbl9hZGRyX3QgYW5kIGRlZmluZSBhcyB1X2ludCAoMzIgYml0cykgaWYgbm90IHByZXNlbnQuCiAgICAtIChhcHBzLyouYywgcGFydHlfcGFyc2UuYyk6IHVzZSBpdC4KCndoYXJkYWtlIDEzIE1hciA5NyAxMDoxNDo1OQogICAgLSAoZXh0ZW5zaWJsZV9zdWJ0cmVlcy5oKTogUmVtb3ZlZCBmaWxlLgoKd2hhcmRha2UgMTMgTWFyIDk3IDE0OjM1OjA1CiAgICAtIChhZ2VudC8qLCBtaWJncm91cC8qKTogbW92ZWQgYWxhcm0sIGNvbnRleHQsIHZpZXdzLCBldmVudCwgcGFydHksCiAgICAgIGFuZCBhY2wgdmFyaWFibGUgZ3JvdXBzIHRvIG1pYmdyb3VwLy4KCndoYXJkYWtlIDEzIE1hciA5NyAxNDo0NDo1NQogICAgLSAoa2VybmVsX3N1bm9zNS5bY2hdKTogbW92ZWQgdG8gbWliZ3JvdXAvLgogICAgLSAocm91dGVfd3JpdGUuYywgc25tcF92YXJfcm91dGUuYyk6IGRlbGV0ZSBmcm9tIGFnZW50IGRpci4KCndoYXJkYWtlIDEzIE1hciA5NyAxNTozNToyNgogICAgLSAoaHB1eC5jLCBtZW1vcnkuYywgbWVtb3J5LmgpOiBQYXRjaCBmcm9tIERhdmUgU2hpZWxkcyB0byBmaXggbWlub3IgcHJvYmxlbXMuCgp3aGFyZGFrZSAxMyBNYXIgOTcgMTU6MzY6MTQKICAgIC0gKHZpZXdfdmFycy5jLCBjb250ZXh0X3ZhcnMuYywgYWNsX3ZhcnMuYyk6IGRvbid0IGluY2x1ZGUgc25tcHYyX3ZhcnMuaC4KCndoYXJkYWtlIDEzIE1hciA5NyAxNTo0NToxNAogICAgLSAoY29uZmlnKik6IGNoZWNrIGZvciBzeXN0ZW0gZGVwZW5kZW50IG1vZHVsZXMuCgp3aGFyZGFrZSAxMyBNYXIgOTcgMTU6NDY6MTYKICAgIC0gKCovTWFrZWZpbGUuaW4pOiBOZXcgbWFrZSBkZXBlbmQgcnVsZXMgdG8gc2VwZXJhdGUgc3lzdGVtL25vbiBkZXBlbmRlbnQgc3R1ZmYuCgp3aGFyZGFrZSAxMyBNYXIgOTcgMTY6MDc6NTIKICAgIC0gKCovTWFrZWZpbGUuaW4pOiBtYWtlIGRlcGVuZCBhbmQgcnVsZSBmaXhlcyBhcyB3ZWxsLgoKd2hhcmRha2UgMTMgTWFyIDk3IDE2OjEwOjU4CiAgICAtIChjb25maWcqKTogcmVtb3ZlIGR1cGxpY2F0ZSBnZXRob3N0bmFtZSBjaGVjay4KCndoYXJkYWtlIDEzIE1hciA5NyAxNjoxNzo1OQogICAgLSAoYXBwcy8qL01ha2VmaWxlLmluKTogZGVwZW5kIHByb2JsZW1zIGZpeC4KCndoYXJkYWtlIDEzIE1hciA5NyAxNzoxNzozMgogICAgLSAoY29tbW9uX2hlYWRlci5oKTogZml4IHBhdGggdG8gYWxhcm0uaC4KCndoYXJkYWtlIDEzIE1hciA5NyAxNzo0NzozMgogICAgLSAobWFueSk6IFBhdGNoIGZyb20gTmllbHMgQmFnZ2Vuc2VuOgogICAgICAtIEEgbGFyZ2UgbnVtYmVyIG9mIHByb2JsZW1zIHdpdGggdGhlIExpbnV4IHBvcnQKICAgICAgLSBTb21lIHByb2JsZW1zIHdpdGggTmV0QlNEIDEuMkMsIGJ1dCBpdCdzIHN0aWxsIG5vdCBwZXJmZWN0CiAgICAgIC0gTW9yZSAoc3ltYm9saWMpIGRlYnVnIG91dHB1dCBmcm9tIHNubXBkLCB3aGVuIHVzaW5nIC1WLiAtZCBpbXBsaWVzIC1WCiAgICAgICAgU2hvd3MgeW91IHZhcmlhYmxlIHJlcXVlc3RlZCBhbmQgdmFsdWUgcmV0dXJuZWQKICAgICAgLSBSZXR1cm4gaXBSb3V0ZU1hc2sgdW5kZXIgU29sYXJpcwogICAgICAtIHNubXBuZXRzdGF0IC1yIHNob3dzIG5vbi1zdGFuZGFyZCBuZXRtYXNrcwogICAgICAtIHNubXBuZXRzdGF0IC1vIChuZXcpIHNob3dzIGludGVyZmFjZSBvY3RldHMsIHdpdGhvdXQgZW5xdWlyaW5nIGZvciBtdHUKICAgICAgICBhbmQgb3RoZXIgdmFyaWFibGVzIG5vdCBwcmVzZW50IGZvciBhIENpc2NvIEZyYW1lLVJlbGF5IHZpcnR1YWwgY2lyY3VpdAogICAgICAgIGludGVyZmFjZQogICAgICAtIHNubXBuZXRzdGF0IHRjcC91ZHAgcHJpbnQtb3V0IGhhZCBudG9ocy9odG9ucyBpbiB3cm9uZyBwbGFjZXMgZm9yIHBvcnQKICAgICAgICBudW1iZXJzIChzaG93cyB1cCBvbiBsaXR0bGUtZW5kaWFuIGFyY2hpdGVjdHVyZXMpCiAgICAgIC0gYWRkcyBhIG1ha2V0YXJnZXQgc2NyaXB0IHRoYXQgY2FuIGJlIHVzZWQgdG8gY3JlYXRlIGEgcGFyYWxsZWwgc3ltbGlua2VkCiAgICAgICAgc291cmNlIGRpcmVjdG9yeS4gVXNlZnVsIGlmIHlvdXIgbWFrZSBkb2VzIG5vdCBzdXBwb3J0IFZQQVRICgp3aGFyZGFrZSAxNCBNYXIgOTcgMDk6Mzk6MTUKICAgIC0gKHVjZC1zbm1wLnR4dCwgbWliLnR4dCwgTWFrZWZpbGUuaW4pOiBEb24ndCBidWlsZCBtaWIgZmlsZXMgYW55bW9yZS4KCndoYXJkYWtlIDE0IE1hciA5NyAwOTo0NjozMQogICAgLSAodWNkLXNubXAudHh0KTogbW92ZWQgdG8gbWlicy8uCgp3aGFyZGFrZSAxNCBNYXIgOTcgMDk6NDc6NDcKICAgIC0gKG1pYi50eHQpOiBzdHJlYW1lZCBkb3duLgoKd2hhcmRha2UgMTQgTWFyIDk3IDA5OjUwOjAzCiAgICAtIChtaWJzL3tyZmMxMjcxLHNubXB2Mix1Y2Qtc25tcH0udHh0KTogTmV3IG1pYnMgZGlyZWN0b3J5IGZvciBzdWItbWlicy4KCndoYXJkYWtlIDE0IE1hciA5NyAxMDo0ODozNQogICAgLSAoTWFrZWZpbGUuaW4sIGNvbmZpZyosIG1pYnMvTWFrZWZpbGUuaW4pOiBlbmFibGUgbWlicy8gbWFrZSBpbnN0YWxsLgoKd2hhcmRha2UgMTQgTWFyIDk3IDEwOjQ5OjAzCiAgICAtICh1Y2Qtc25tcC50eHQpOiByZW1vdmUgdGhlIGxhc3Qgb2YgdGhlIHNlZCBzY3JpcHQgZGVmcy4KCndoYXJkYWtlIDE0IE1hciA5NyAxMTowMToxOQogICAgLSAoc25tcGQuMS5kZWYpOiBVcGRhdGVkIHRvIGluY2x1ZGUgLWMvLUMgYW5kIFNOTVBDT05GUEFUSCBlbnYgdmFyLgoKd2hhcmRha2UgMTQgTWFyIDk3IDExOjA3OjE2CiAgICAtIChNYWtlZmlsZS5pbik6IEZpeCBzZWRzY3JpcHQgdG8gaW5jbHVkZSBzIyBhcyB3ZWxsIGFzIHMvIGNvbW1hbmRzLgoKd2hhcmRha2UgMTQgTWFyIDk3IDExOjE3OjA2CiAgICAtIChtYWtlZGVwZW5kLmluKTogcnVuIG9uIHNubXBuZXRzdGF0IGRpciBhbHNvLgoKd2hhcmRha2UgMTQgTWFyIDk3IDExOjE4OjE3CiAgICAtIChhZ2VudC9NYWtlZmlsZS5pbiwgYXBwcy9zbm1wbmV0c3RhdC9NYWtlZmlsZS5pbik6IG1ha2UgZGVwZW5kLgoKd2hhcmRha2UgMTQgTWFyIDk3IDExOjIwOjM5CiAgICAtIChzbm1wX3ZhcnNfZXZlbnQuaCk6IGF4ZS4KCndoYXJkYWtlIDE0IE1hciA5NyAxMToyMjoyOQogICAgLSAoc25tcF9ncm91cHZhcnMuaCk6IGF4ZS4KCndoYXJkYWtlIDE0IE1hciA5NyAxMzo1MTo1OQogICAgLSAoY29uZmlndXJlLmluLCBhcHBzL01ha2VmaWxlLmluKTogZml4IHRyYXAgYnkgaW5jbHVkaW5nIG9wdGlvbmFsIC5vIGZpbGVzLgoKd2hhcmRha2UgMTQgTWFyIDk3IDEzOjUzOjIyCiAgICAtIChzbm1wZC5jLCBjb250ZXh0X3BhcnNlLmMsIHBhcnR5X3BhcnNlLmMsIHN5c3RlbS5bY2hdKToKICAgICAgLSA2NGJpdCBmaXg6IGdldF9teWFkZHIoKSBzaG91bGQgcmV0dXJuIGludCBub3QgbG9uZy4KCndoYXJkYWtlIDE0IE1hciA5NyAxMzo1NDoyMgogICAgLSAoYWNjb25maWcuaCwgdWNkLXNubXAudHh0KTogcmVjb2duaXplIG5ldyBob3N0cyBmb3Igc3lzT2JqZWN0SWQuCgp3aGFyZGFrZSAxNCBNYXIgOTcgMTM6NTU6NTAKICAgIHZlcnNpb24gdGFnICggMy4xLjQucHJlNCApCgp3aGFyZGFrZSAxNCBNYXIgOTcgMTY6MTY6NTIKICAgIC0gKG1pYmdyb3VwL1JFQURNRSk6IFVwZGF0ZSBmcm9tIERhdmUgU2hpZWxkLgoKd2hhcmRha2UgMTggTWFyIDk3IDE2OjUyOjM0CiAgICAtIChGQVEpOiBVcGRhdGUgZnJvbSBEYXZlIFNoaWVsZC4KCndoYXJkYWtlIDE4IE1hciA5NyAxNjo1MzoyNgogICAgLSAoRkFRKTogc25tcC5jb25mIC0+IHNubXBkLmNvbmYKCndoYXJkYWtlIDI0IE1hciA5NyAwOTo0OTo1NAogICAgLSAobWVtb3J5LmMpOiBwcm90b3R5cGUgd3JpdGUgZnVuY3Rpb24gYmV0dGVyLgoKd2hhcmRha2UgMjQgTWFyIDk3IDA5OjUwOjQ5CiAgICAtIChleGFtcGxlLmMsLmgpOiBOZXcgZXhhbXBsZSBtaWIgbW9kdWxlIGR1cGxpY2F0aW5nIHRoZSBwYXNzdGVzdAogICAgICBzY3JpcHQgaW4gQyBjb2RlLgoKd2hhcmRha2UgMjQgTWFyIDk3IDA5OjUxOjE2CiAgICAtIChNYWtlZmlsZS5pbik6IFdhdGNoIG91dCBmb3IgbXVsdGlwbGUgc3BhY2VzIGluIEMgZGVmcy4KCndoYXJkYWtlIDI0IE1hciA5NyAwOTo1MTozMwogICAgLSAoUkVBRE1FKTogcnVucyBvbiBic2RpIDIuMS4KCndoYXJkYWtlIDI0IE1hciA5NyAxMzo1Njo1MAogICAgLSAoRkFRKTogUGF0Y2ggZnJvbSBEYXZlIFNoaWVsZC4KCndoYXJkYWtlIDI1IE1hciA5NyAwOTozOTowMQogICAgLSAoRVhBTVBMRS5jb25mLmRlZik6IGFkZGVkIHN5c2xvY2F0aW9uIGFuZCBzeXNjb250YWN0IGV4YW1wbGVzLgoKd2hhcmRha2UgMjUgTWFyIDk3IDEzOjMwOjA1CiAgICAtIChJTlNUQUxMKTogbWlub3IgZG9jIHVwZGF0ZSBmb3IgbmV3IGZsYWdzLgoKd2hhcmRha2UgMjYgTWFyIDk3IDE3OjA1OjExCiAgICAtIChtaWJncm91cC9zeXN0ZW0uYyk6IHJlcG9ydCBhZ2VudCB1cHRpbWUgcmF0aGVyIHRoYW4gc3lzdGVtIHVwdGltZS4KCndoYXJkYWtlIDIyIEFwciA5NyAwODo0MjowMQogICAgLSAoRkFRKTogdmFyaW91cyB1cGRhdGVzLgoKd2hhcmRha2UgMjIgQXByIDk3IDE1OjAyOjU2CiAgICAtIChtYW55KTogUGF0Y2ggZnJvbSBOaWVscyBCYWdnZXNlbiB0byBmaXggdmFyaW91cyB0aGluZ3MsIG1vc3RseSBvbiBsaW51eC4KCndoYXJkYWtlIDIyIEFwciA5NyAxNToyMDozMAogICAgLSAoUkVBRE1FLnNtdXgsIHNtdXguYywgc211eC5oLCBzbm1wX2JncC5jLCBzbm1wX29zcGYuYywgc25tcF9yaXAyLmMpOgogICAgICAtIHNtdXggc3VwcG9ydCBmb3IgZ2F0ZWQgZnJvbSBSb2hpdCBEdWJlLgoKd2hhcmRha2UgMjIgQXByIDk3IDE1OjQ3OjA2CiAgICAtIChjb21tb25faGVhZGVyLmgpOiByZW1vdmUgZHVwbGljYXRlICh3YXJuaW5nKSBUQ1AgZGVmaW5lcyBvbiBvc2Y0IHN5c3RlbXMuCgp3aGFyZGFrZSAyMiBBcHIgOTcgMTU6NTE6NDQKICAgIC0gKHNubXBfYmdwLltjaF0sIHNubXBfcmlwMi5bY2hdLCBzbm1wX29zcGYuW2NoXSk6CiAgICAgIC0gY29uZm9ybSB0byBuZXcgbW9kdWxlIHN0YW5kYXJkcyBvZiBjb2RpbmcuCgp3aGFyZGFrZSAyMiBBcHIgOTcgMTY6NDE6MTAKICAgIC0gKHNubXBfYmdwLmMsIHNubXBfcmlwMi5jLCBzbm1wX29zcGYuYywgc211eC5bY2hdKToKICAgICAgLSBzdGFuZGFyZGl6ZSBoZWFkZXJzIGZvciBhdXRvY29uZi4KICAgICAgLSBzbXV4X2luaXQoKSAtPiBpbml0X3NtdXgoKS4KICAgICAgLSBTTVVYREVCVUcgLT4gRE9ERUJVRyAoLS1lbmFibGUtZGVidWdnaW5nIHR1cm5zIHRoaXMgb24gYXV0b21hdGljYWxseSkuCgp3aGFyZGFrZSAyMiBBcHIgOTcgMTc6NDU6MDkKICAgIC0gKGNvbmZpZyosIHNtdXguYyk6IENoZWNrIGZvciBoZWFkZXJzIGFuZCBkZWZpbmUgRkRfQ09QWSBpZiBub3QgZGVmaW5lZC4KCndoYXJkYWtlIDIyIEFwciA5NyAyMDo0OToxNQogICAgdmVyc2lvbiB0YWcgKCAzLjEuNC5wcmU1ICkKCndoYXJkYWtlICA5IE1heSA5NyAyMjozODoxNQogICAgLSAobWliLltjaF0sIHBhcnNlLltjaF0sIE1ha2VmaWxlLmluKTogTmV3IHBhcnNlciBmcm9tIERhdmUgU2hpZWxkOgogICAgICAtIFJ1bi10aW1lIGNvbnRyb2wgb2YgaW5pdGlhbCBtb2R1bGUgbG9hZGluZwogICAgICAgICAgICAgICh1c2VzIGVudiB2YXJpYWJsZXMgTUlCRElSUywgTUlCUywgYW5kIE1JQkZJTEUpCiAgICAgIC0gRGVmaW5lZCBpbnRlcmZhY2VzIGZvciBsb2FkaW5nIG1vZHVsZXMgYW5kIHJldHJlaXZpbmcgZW50cmllcwogICAgICAtIE1vZHVsZSBzY29waW5nIG5vdyBpbmNsdWRlcyBUZXh0dWFsIENvbnZlbnRpb25zCiAgICAgIC0gVG9rZW5zIGltcGxlbWVudGVkIGludGVybmFsbHkgbm8gbG9uZ2VyIHJlcXVpcmUgaW1wb3J0aW5nIHRoZQogICAgICAgIGNvcnJlc3BvbmRpbmcgbW9kdWxlcwoKd2hhcmRha2UgIDkgTWF5IDk3IDIyOjQ2OjMwCiAgICAtIChzbXV4LmMsIGNvbmZpZyopOgogICAgICAtIGNoZWNrIGZvciBzZ3R0eS5oIGFuZCBwcm90b3R5cGUgYmV0dGVyLgoKd2hhcmRha2UgIDkgTWF5IDk3IDIyOjQ2OjQ2CiAgICAtIChUT0RPKTogVXBkYXRlLgoKd2hhcmRha2UgIDkgTWF5IDk3IDIzOjUyOjQwCiAgICAtIChzbXV4LltjaF0pOiBwYXRjaGVzIGZyb20gTmllbHMgQmFnZ2VzZW46IHByb3RvdHlwaW5nLgoKd2hhcmRha2UgMTAgTWF5IDk3IDAwOjAzOjMyCiAgICAtIChtaWIuYywgcGFyc2UuYyk6IHBhdGNoZXMgZnJvbSBOaWVscyBCYWdnZXNlbjogcHJvdG90eXBpbmcgKG1vc3RseSkuCgp3aGFyZGFrZSAxMCBNYXkgOTcgMDA6Mjg6MjUKICAgIC0gKHBhcnNlLmMpOiBQYXRjaCBmcm9tIERhdmUgU2hpZWxkczogIG5lZ2F0aXZlIG51bWJlcnMgaW4gbWlicy4KCndoYXJkYWtlIDEwIE1heSA5NyAwMDo0Njo0NAogICAgLSAocGFyc2UuYyk6IFBhdGNoIGZyb20gRGF2ZSBTaGllbGRzOiAgZGVhbCB3aXRoIGFub255bW91cyBJRHMuCgp3aGFyZGFrZSAxMCBNYXkgOTcgMDA6NTA6MjAKICAgIC0gKHBhcnNlLmMpOiBQYXRjaCBmcm9tIERhdmUgU2hpZWxkczogIGRlYWwgd2l0aCBhbm9ueW1vdXMgSURzIChldmVuIGJldHRlcikuCgp3aGFyZGFrZSAxMCBNYXkgOTcgMTY6NDE6MjMKICAgIC0gKGJ1Zy1yZXBvcnQpOiBQYXRjaCBmcm9tIERhdmUgU2hpZWxkczogIGRvbid0IHN1Ym1pdCBibGFuayBidWctcmVwb3J0cy4KCndoYXJkYWtlIDEwIE1heSA5NyAxNjo0NToxNAogICAgLSAoRkFRKTogUGF0Y2ggZnJvbSBEYXZlIFNoaWVsZHM6ICB1cGRhdGUuCgp3aGFyZGFrZSAxMCBNYXkgOTcgMTY6NTI6MTEKICAgIC0gKG1pYl9hcGkuMyk6IE5ldyBmaWxlIGZyb20gRGF2ZSBTaGllbGQuCgp3aGFyZGFrZSAxMCBNYXkgOTcgMTc6MjM6MjEKICAgIC0gKHNubXBkLmMsIHJlYWRfY29uZmlnLmMsIHN5c3RlbS5jKTogUGF0Y2ggZnJvbSBOaWVscyBCYWdnZXNlbjoKICAgICAgLSBkZWZhdWx0IHRyYXAgY29tbXVuaXR5LgogICAgICAtIG11bHRpcGxlIHRyYXAgc2lua3MuCgp3aGFyZGFrZSAxMiBNYXkgOTcgMDg6NDM6NTkKICAgIC0gKGNvbmZpZyosIGV4dGVuc2libGUuYyk6ICBCU0RJMyBzcGVjaWZpYyBoZWFkZXJzIGFuZCBkZWZpbmVzLgoKd2hhcmRha2UgMTIgTWF5IDk3IDA4OjQ0OjE5CiAgICAtIChhZ2VudC9NYWtlZmlsZS5pbik6IHJlbW92ZWQgQ0NIQUNLID8/Py4KCndoYXJkYWtlIDEyIE1heSA5NyAwODo0ODoxMwogICAgLSAoSU5TVEFMTCwgUkVBRE1FLCBUT0RPKTogZG9jdW1lbnRhdGlvbiB1cGRhdGUuCgp3aGFyZGFrZSAxMiBNYXkgOTcgMDg6NDk6MjMKICAgIC0gKG1hbi9NYWtlZmlsZS5pbik6IGluc3RhbGwgbWliX2FwaS4zLgoKd2hhcmRha2UgMTIgTWF5IDk3IDA4OjUyOjQ4CiAgICAtIChtaWJzL3VjZC1zbm1wLnR4dCk6IFBhdGNoIGZyb20gTWFyaW8gRGVGYXppbyB0byBmaXggdHlwb3MuCiAgICAgIC0gY29tcGlsZXMgdW5kZXIgU05NUGMgNC4xZy4KCndoYXJkYWtlIDEzIE1heSA5NyAxMDo1MToyOAogICAgLSAoSUYtTUlCLnR4dCk6IE5ldyBtaWIgZmlsZSBmcm9tIE5pZWxzIEJhZ2dlc2VuLgoKd2hhcmRha2UgMTMgTWF5IDk3IDEwOjUxOjI5CiAgICAtICh1Y2QudHh0KTogTmV3IG1pYiBmaWxlIGZyb20gTmllbHMgQmFnZ2VzZW4uCgp3aGFyZGFrZSAxMyBNYXkgOTcgMTA6NTE6MzEKICAgIC0gKEV0aGVyTGlrZS1NSUIudHh0KTogTmV3IG1pYiBmaWxlIGZyb20gTmllbHMgQmFnZ2VzZW4uCgp3aGFyZGFrZSAxMyBNYXkgOTcgMTA6NTE6MzIKICAgIC0gKEhPU1QtUkVTT1VSQ0VTLU1JQi50eHQpOiBOZXcgbWliIGZpbGUgZnJvbSBOaWVscyBCYWdnZXNlbi4KCndoYXJkYWtlIDEzIE1heSA5NyAxMDo1MTozMwogICAgLSAoSUFOQWlmVHlwZS1NSUIudHh0KTogTmV3IG1pYiBmaWxlIGZyb20gTmllbHMgQmFnZ2VzZW4uCgp3aGFyZGFrZSAxMyBNYXkgOTcgMTA6NTE6MzUKICAgIC0gKElQLU1JQi50eHQpOiBOZXcgbWliIGZpbGUgZnJvbSBOaWVscyBCYWdnZXNlbi4KCndoYXJkYWtlIDEzIE1heSA5NyAxMDo1MTozNgogICAgLSAoU05NUHYyLUNPTkYudHh0KTogTmV3IG1pYiBmaWxlIGZyb20gTmllbHMgQmFnZ2VzZW4uCgp3aGFyZGFrZSAxMyBNYXkgOTcgMTA6NTE6MzcKICAgIC0gKFNOTVB2Mi1NSUIudHh0KTogTmV3IG1pYiBmaWxlIGZyb20gTmllbHMgQmFnZ2VzZW4uCgp3aGFyZGFrZSAxMyBNYXkgOTcgMTA6NTE6MzkKICAgIC0gKFNOTVB2Mi1TTUkudHh0KTogTmV3IG1pYiBmaWxlIGZyb20gTmllbHMgQmFnZ2VzZW4uCgp3aGFyZGFrZSAxMyBNYXkgOTcgMTA6NTE6NDAKICAgIC0gKFNOTVB2Mi1UQy50eHQpOiBOZXcgbWliIGZpbGUgZnJvbSBOaWVscyBCYWdnZXNlbi4KCndoYXJkYWtlIDEzIE1heSA5NyAxMDo1MTo0MgogICAgLSAoU05NUHYyLVRNLnR4dCk6IE5ldyBtaWIgZmlsZSBmcm9tIE5pZWxzIEJhZ2dlc2VuLgoKd2hhcmRha2UgMTMgTWF5IDk3IDEwOjUxOjQzCiAgICAtIChUQ1AtTUlCLnR4dCk6IE5ldyBtaWIgZmlsZSBmcm9tIE5pZWxzIEJhZ2dlc2VuLgoKd2hhcmRha2UgMTMgTWF5IDk3IDEwOjUxOjQ1CiAgICAtIChVRFAtTUlCLnR4dCk6IE5ldyBtaWIgZmlsZSBmcm9tIE5pZWxzIEJhZ2dlc2VuLgoKd2hhcmRha2UgMTMgTWF5IDk3IDEwOjUxOjQ2CiAgICAtIChTTk1QdjItUEFSVFktTUlCLnR4dCk6IE5ldyBtaWIgZmlsZSBmcm9tIE5pZWxzIEJhZ2dlc2VuLgoKd2hhcmRha2UgMTMgTWF5IDk3IDEwOjUxOjQ4CiAgICAtIChTTk1QdjItTTJNLU1JQi50eHQpOiBOZXcgbWliIGZpbGUgZnJvbSBOaWVscyBCYWdnZXNlbi4KCndoYXJkYWtlIDEzIE1heSA5NyAxMDo1MTo0OQogICAgLSAoUkZDMTI3MS1NSUIudHh0KTogTmV3IG1pYiBmaWxlIGZyb20gTmllbHMgQmFnZ2VzZW4uCgp3aGFyZGFrZSAxMyBNYXkgOTcgMTA6NTE6NTEKICAgIC0gKFJGQzExNTUtU01JLnR4dCk6IE5ldyBtaWIgZmlsZSBmcm9tIE5pZWxzIEJhZ2dlc2VuLgoKd2hhcmRha2UgMTMgTWF5IDk3IDEwOjUxOjUyCiAgICAtIChSRkMxMjEzLU1JQi50eHQpOiBOZXcgbWliIGZpbGUgZnJvbSBOaWVscyBCYWdnZXNlbi4KCndoYXJkYWtlIDEzIE1heSA5NyAxMDo1MjoxMgogICAgLSAodWNkLnR4dCk6IHdob29wcy4gIFJlbW92ZWQuCgp3aGFyZGFrZSAxMyBNYXkgOTcgMTE6NTc6MTAKICAgIC0gKHJmYzEyNzEudHh0KTogcmVtb3ZlZC4KCndoYXJkYWtlIDEzIE1heSA5NyAxMjowMjoyNgogICAgLSAoc25tcHYyLnR4dCk6IHJlbW92ZWQuCgp3aGFyZGFrZSAxMyBNYXkgOTcgMTI6MDM6MDQKICAgIC0gKG1pYnMvTWFrZWZpbGUuaW4pOiByZW1vdmVkIHNubXB2Mi50eHQsIHJmYzEyNzEudHh0LgoKd2hhcmRha2UgMTMgTWF5IDk3IDE0OjQ4OjU5CiAgICAtICh1Y2Qtc25tcC50eHQpOiBDaGFuZ2VkIElEIHRvIFVDRC1TTk1QCgp3aGFyZGFrZSAxMyBNYXkgOTcgMTU6MDU6MjgKICAgIC0gKGNvbmZpZyosIElOU1RBTEwpOiBOZXcgZmxhZ3MgdG8gc2V0IHByb21wdGVkIHZhbHVlcyBpbnN0ZWFkIG9mIHByb21wdGluZy4KCndoYXJkYWtlIDEzIE1heSA5NyAxNTowNTo1MwogICAgLSAoUkVBRE1FKTogYXJjaGl0ZWN0dXJlIGxpc3QgdXBkYXRlLgoKd2hhcmRha2UgMTMgTWF5IDk3IDE1OjM2OjA4CiAgICAtIChVQ0QtU05NUC1NSUIudHh0KTogbW92ZWQgZnJvbSB1Y2Qtc25tcC50eHQuCgp3aGFyZGFrZSAxMyBNYXkgOTcgMTU6MzY6NTEKICAgIC0gKHVjZC1zbm1wLnR4dCk6IG1vdmVkIHRvIFVDRC1TTk1QLU1JQi50eHQKCndoYXJkYWtlIDEzIE1heSA5NyAxNTozODo0NwogICAgLSAobWlicy9NYWtlZmlsZS5pbik6IHVjZC1zbm1wLnR4dCAtPiBVQ0QtU05NUC1NSUIudHh0LgoKd2hhcmRha2UgMTMgTWF5IDk3IDE2OjIyOjEzCiAgICAtIChjb25maWcqLG1pYi5jKTogTmV3IGNvbmZpZ3VyZSBvcHRpb24gLS13aXRoLWRlZmF1bHQtbWlicz0ibGlzdDpsaXN0Ii4KCndoYXJkYWtlIDE0IE1heSA5NyAxMTo0MTowOQogICAgLSAoTWFrZWZpbGUuaW4sIG1pYi50eHQpOiByZW1vdmVkIG1pYi50eHQgZnJvbSBkaXN0cmlidXRpb24uICBObyBsb25nZXIgbmVlZGVkLgoKd2hhcmRha2UgMTQgTWF5IDk3IDEzOjEzOjE5CiAgICAtIChNYWtlZmlsZS5pbik6IHdhcm4gaWYgbWliLnR4dCBpcyBpbnN0YWxsZWQgZnJvbSBhIHByZXZpb3VzIHJlbGVhc2UuCgp3aGFyZGFrZSAxNCBNYXkgOTcgMTM6MTg6MDIKICAgIC0gKE1ha2VmaWxlLmluLCBhZ2VudC9NYWtlZmlsZS5pbik6IFBhdGNoIGZyb20gT2RkYmpvcm4gU3RlZmZlbnNlbjoKICAgICAgLSBQcm90ZWN0IGFnYWluc3QgYmFzaCBuZWVkaW5nICc7J3Mgb24gbXVsdGlwbGUgc3ViZGlyIG1ha2VzLgoKd2hhcmRha2UgMTQgTWF5IDk3IDEzOjQ1OjI0CiAgICAtIChzbm1wZC5jKTogIFR5cGVjYXN0IG1hbGxvYy4KCndoYXJkYWtlIDE0IE1heSA5NyAxNTowMDoyMgogICAgdmVyc2lvbiB0YWcgKCAzLjEuNC5wcmU2ICkKCndoYXJkYWtlIDE1IE1heSA5NyAxMToyMjoxOAogICAgLSAoaW50ZXJmYWNlcy5jKTogcGF0Y2ggZnJvbSBNYXJ0aW4gSmFjb2Jzc29uIGZvciBGcmVlQlNECgp3aGFyZGFrZSAxNSBNYXkgOTcgMTE6MjM6MjkKICAgIC0gKHBhcnNlLmMpOiBQYXRjaCBmcm9tIERhdmUgU2hpZWxkIHRvIGZpeCBwdXJlbHkgbnVtZXJpYyBPSURzLgoKd2hhcmRha2UgMTUgTWF5IDk3IDExOjI4OjE1CiAgICAtIChJTlNUQUxMKTogcGF0Y2ggZnJvbSBOaWVscyBCYWdnZXNlbiB0byByZWZlcmVuY2UgdGhlIG1ha2V0YXJnZXQgc2NyaXB0LgoKd2hhcmRha2UgMTUgTWF5IDk3IDExOjI5OjMzCiAgICAtIChtaWJfYXBpLjMpOiBwYXRjaCBmcm9tIE5pZWxzIEJhZ2dlc2VuOiAgTUlCUyB2YXJpYWJsZSBjYW4gYmUgc2V0IHRvIEFMTC4KCndoYXJkYWtlIDE1IE1heSA5NyAxMTozMDowMQogICAgLSAoVUNELVNOTVAtTUlCLnR4dCk6IHBhdGNoIGZyb20gTmllbHMgQmFnZ2VzZW46ICBpbXBvcnQgaW5kZW50aWZpZXJzLgoKd2hhcmRha2UgMTUgTWF5IDk3IDExOjMxOjAxCiAgICAtIChTTk1QdjItU01JLnR4dCk6IHBhdGNoIGZyb20gTmllbHMgQmFnZ2VzZW46ICBjY2l0dCAtPiAwLgoKd2hhcmRha2UgMTUgTWF5IDk3IDExOjMyOjU2CiAgICAtIChtaWIuYywgcGFyc2UuYyk6IHBhdGNoIGZyb20gTmllbHMgQmFnZ2VzZW46CiAgICAgIC0gcHJvdG90eXBpbmcgYW5kIG51bGwgY2hlY2tpbmcuCiAgICAgIC0gaWYgTUlCUyBpcyBzZXQgdG8gQUxMLCBwYXJzZSBldmVyeXRoaW5nIGZvdW5kLgoKd2hhcmRha2UgMTUgTWF5IDk3IDE0OjM3OjM5CiAgICAtIChwYXJzZS5jKTogcGF0Y2ggZnJvbSBEYXZlIFNoaWVsZDoKICAgICAgLSBkZWFsIHdpdGggbXVsdGlwbGUgbW9kdWxlIElEJ3MgYmVpbmcgcmVmZXJlbmNlZCBvciBub2RlcyBkZWZpbmVkLgogICAgICAtIHN1cHJlc3MgIm5hbWUgY2xhc2giIHdhcm5pbmdzIGZvciBhbm9ueW1vdXMgbm9kZXMuCgp3aGFyZGFrZSAxNSBNYXkgOTcgMTU6MjI6NTEKICAgIC0gKHBhcnNlLmgpOiBQYXRjaCBmcm9tIERhdmUgU2hpZWxkOiAgQWRkIG5ldyBub2RlIHN0cnVjdHVyZSBlbnRyaWVzLgoKd2hhcmRha2UgMTUgTWF5IDk3IDE2OjAxOjE4CiAgICAtIChjb25maWcqLCBtaWIuYyk6CiAgICAgIC0gQ2hhbmdlZCBlbnYgdmFyaWFibGUgTUlCRklMRSAtPiBNSUJGSUxFUyAoc2luY2UgaXQgaXMgYSBsaXN0IG5vdykuCiAgICAgICAgKHdpbGwgYWNjZXB0IE1JQkZJTEUgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5KS4KICAgICAgLSBCeSBkZWZhdWx0LCAqbm8qIGFkZGl0aW9uYWwgbWliZmlsZXMgYXJlIGxvYWRlZCAoaWUsIG1pYi50eHQgaXMgbm8KICAgICAgICBsb25nZXIgbG9hZGVkKSBhbmQgbXVzdCBiZSB0dXJuZWQgb24gdGhyb3VnaCBjb25maWd1cmUgb3IgdGhlIGVudiB2YXIuCiAgICAgIC0gTmV3IGNvbmZpZ3VyZSBvcHRpb25zIHRvIHNldCBkZWZhdWx0IE1JQlMsIE1JQkZJTEVTLCBNSUJESVJTLgoKd2hhcmRha2UgMTUgTWF5IDk3IDE2OjIyOjE5CiAgICAtIChjb25maWd1cmUqLCBJTlNUQUxMKToKICAgICAgLSBEaXNwbGF5IGRlZmF1bHRzIGluIGNvbmZpZ3VyZSAtLWhlbHAgbGluZXMuCgp3aGFyZGFrZSAxNSBNYXkgOTcgMTY6MjY6MTIKICAgIC0gKGNvbmZpZ3VyZSosIElOU1RBTEwpOgogICAgICAtIFdvcmRpbmcgYW5kIG9yZGVyIGNoYW5nZXMgaW4gY29uZmlndXJlIC0taGVscCBsaW5lcy4KCndoYXJkYWtlIDE1IE1heSA5NyAxNjo0MzozNwogICAgLSAodWRwLmMpOiBQYXRjaCBmcm9tIE1hcnRpbiBKYWNvYnNzZW46CiAgICAgIC0gRml4IHVkcF9pbnBjYiBzdHJ1Y3R1cmVzLgoKd2hhcmRha2UgMTYgTWF5IDk3IDExOjI1OjMwCiAgICAtIChwYXJzZS5jKTogUHJvdGVjdCBtYWxsb2MgYWdhaW5zdCAwIGV4dGVybmFsIGltcG9ydHMuCgp3aGFyZGFrZSAyMCBNYXkgOTcgMDg6MDM6MzUKICAgIC0gKHVkcC5jKTogT25seSBkbyBNYXJ0aW4gSmFjb2Jzc2VuJ3MgZml4ZXMgZm9yIGZyZWVic2QyLgoKd2hhcmRha2UgMjAgTWF5IDk3IDA4OjE4OjQ5CiAgICAtIChTTk1QdjItVEMudHh0KTogQ29tbWVudCBvdXQgT2JqZWN0U3ludGF4IGltcG9ydC4KCndoYXJkYWtlIDIwIE1heSA5NyAwODoxOToxMgogICAgLSAocGFyc2UuYyk6IHByb3RlY3QgYWdhaW5zdCAwIGltcG9ydCBjYWxscy4KCndoYXJkYWtlIDIwIE1heSA5NyAwODoxOToyOAogICAgLSAobWliLmMsIHNubXBfYXV0aC5jKTogaW5jbHVkZSBzeXMvc2VsZWN0LmggZm9yIEFJWC4KCndoYXJkYWtlIDIwIE1heSA5NyAxMDowODoyNQogICAgdmVyc2lvbiB0YWcgKCAzLjEuNC5wcmU3ICkKCndoYXJkYWtlIDIwIE1heSA5NyAxMToyNDoyNwogICAgLSAodWRwLmMpOiBQYXRjaCBmcm9tIE1hcnRpbiBKYWNvYnNzb246ICBGaXggbXkgY3BwIHN0dXBpZGl0eS4KCndoYXJkYWtlIDIwIE1heSA5NyAxNjo1MDoxOAogICAgLSAoVE9ETyk6IHNubXBzZXQgc2hvdWxkIGNoZWNrIGFnYWluc3Qgc2l6ZSBkZWZpbmVkIGluIG1pYi4KCndoYXJkYWtlIDIwIE1heSA5NyAxNjo1MDo1NQogICAgLSAocGFyc2UuYyk6IGNvZGUgZnJvbSBEYXZlIFNoaWVsZDogYWRkIGJhY2sgaW4gZmluZF9ub2RlKCkgZm9yIHBlcmwgdXNhZ2UuCgp3aGFyZGFrZSAyMSBNYXkgOTcgMTA6MTM6MzgKICAgIC0gKE5FV1MpOiBVcGRhdGUgZm9yIDMuMi4KCndoYXJkYWtlIDIxIE1heSA5NyAxNTozODozMgogICAgLSAoTkVXUyk6IENoYW5nZXMgZnJvbSBEYXZlLgoKd2hhcmRha2UgMjEgTWF5IDk3IDE1OjQwOjMxCiAgICAtIChGQVEpOiBDaGFuZ2VzIGZyb20gRGF2ZS4KCndoYXJkYWtlIDIyIE1heSA5NyAxMzoxMzo1OQogICAgLSAoU05NUHYyLU0yTS1NSUIudHh0KTogcmVzdG9yZWQuICBHb3QgdHJ1bmNhdGVkLgoKd2hhcmRha2UgMjMgTWF5IDk3IDEzOjM1OjE0CiAgICAtIChhY2NvbmZpZy5oLCBjb25maWcuaC5pbik6IFNldCBkZWZhdWx0IE1JQiBsaXN0LgoKd2hhcmRha2UgMjMgTWF5IDk3IDEzOjM2OjE3CiAgICAtIChzbm1wZC5jKTogUGF0Y2ggZnJvbSBOaWVscyBCYWdlc3NlbiB0byBmaXggZW5kaWFubmVzIHByb2JsZW1zLgoKd2hhcmRha2UgMjMgTWF5IDk3IDEzOjM3OjAyCiAgICAtIChIT1NULVJFU09VUkNFUy1NSUIudHh0LCBTTk1QdjItVEMudHh0KTogRnJvbSBOaWVsczogY2hhbmdlIGltcG9ydCBjbGF1c2VzLgoKd2hhcmRha2UgMjMgTWF5IDk3IDEzOjM3OjM5CiAgICAtIChzbm1wX2NsaWVudC5jKTogUGF0Y2ggZnJvbSBOaWVscyBCYWdlc3NlbiB0byBmaXggZW5kaWVubmVzIHByb2JsZW1zLgoKd2hhcmRha2UgMjMgTWF5IDk3IDEzOjM4OjEzCiAgICAtIChzbm1wX2FwaS5jKTogUGF0Y2ggZnJvbSBOaWVscyBCYWdlc3NlbiB0byBmaXggbXVsdGlwbGUgZnJlZXMgaW4gdjIgcGR1J3MuCgp3aGFyZGFrZSAyMyBNYXkgOTcgMTM6NDA6MDkKICAgIC0gKG1pYi5jKTogUGF0Y2ggZnJvbSBEYXZlIFNoaWVsZHMgdG8gZml4IFNOTVAgcGVybCBhZ2Fpbi4KCndoYXJkYWtlIDIzIE1heSA5NyAxMzo0MDozMgogICAgLSAoc25tcF9hcGkuaCk6IENoYW5nZSB0cmFwIHR5cGVzIGZyb20gaW50IHRvIGxvbmcuCgp3aGFyZGFrZSAyMyBNYXkgOTcgMTY6MjM6NTYKICAgIHZlcnNpb24gdGFnICggMy4xLjQucHJlOCApCgp3aGFyZGFrZSAyMyBNYXkgOTcgMTY6MzQ6MzMKICAgIC0gKG1pYl9hcGkuMyk6IE1vZGlmaXkgdG8gbm90ZSBkZWZhdWx0IG1pYnMuCgp3aGFyZGFrZSAyNiBNYXkgOTcgMTA6NTA6MjAKICAgIC0gKElOU1RBTEwsIGNvbmZpZ3VyZSk6IGRlZmF1bHQgbWlicyBsaXN0ZWQgY29ycmVjdGx5LgoKd2hhcmRha2UgMjYgTWF5IDk3IDEwOjUyOjEyCiAgICAtIChzbm1wX2FwaS5oKTogdHJhcCBsb25nJ3MgYmFjayB0byBpbnRzLCBiYWQgc29sdXRpb24uCgp3aGFyZGFrZSAyNiBNYXkgOTcgMTA6NTY6MTkKICAgIC0gKHNubXBjaGVjay5kZWYpOiBuZXcgdmFyaWFibGVzIHRvIHNldCB3YWxrL2dldC9zZXQgY29tbWFuZCBsaW5lIHVzYWdlLgoKd2hhcmRha2UgMjYgTWF5IDk3IDExOjM4OjQxCiAgICAtIChwYXJzZS5jKTogUGF0Y2ggZnJvbSBuaWVscyBCYWdnZXNlbiB0bzoKICAgICAgLSBjbG9zZSBtaWJmaWxlcyBmb3IgTUlCUz1BTEwuCiAgICAgIC0gQWxsb3cgU1lOVEFYIERpc3BsYXlTdHJpbmcgKFNJWkUoMS4uMjU1KSkgaW5zaWRlIE9CSkVDVC1UWVBFLgoJCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCkNoYW5nZXM6IFYzLjEuMi4xIC0+IFYzLjEuMwoKd2hhcmRha2UgMTAgSmFuIDk3IDA4OjQzOjQyCiAgICAtIChDT1BZSU5HKTogIFVwZGF0ZSBmb3IgOTcuCgp3aGFyZGFrZSAxMCBKYW4gOTcgMDg6NDY6MDAKICAgIC0gKGNvbmZpZyopOiBDaGVjayBmb3IgL2Rldi9rc3ltcyBmb3Igc29sYXJpcyBrZXJuZWwuCgp3aGFyZGFrZSAxMCBKYW4gOTcgMDg6NDY6MzYKICAgIC0gKHNubXB0cmFwZC5jKTogUmVtb3ZlIGJyb2tlbiBGRF9TRVQgY29kZS4KCndoYXJkYWtlIDE0IEphbiA5NyAxNjo0NTozMwogICAgLSAoUE9SVElORywgUkVBRE1FLCBUT0RPKTogIEFkZGVkIHVjZC1zbm1wLWNvZGVycyBhcyBkZWZhdWx0IG1haWwgYWRkcmVzcy4KCndoYXJkYWtlIDE3IEphbiA5NyAwOToyODo1NgogICAgcGF0Y2ggbmllbHMuMAoKd2hhcmRha2UgMTcgSmFuIDk3IDExOjUxOjQwCiAgICAtIChzbm1wZC5jLCBleHRlbnNpYmxlLmMpOgogICAgICAtIE5ldyBhcmcgLWMgRklMRTogIAkgICBSZWFkIEZJTEUgYXMgYSBjb25maWd1cmF0aW9uIGZpbGUgYXMgd2VsbC4KICAgICAgLSBOZXcgYXJnIC1DOiAgICAgICAJICAgRG9uJ3QgcmVhZCBkZWZhdWx0IGNvbmZpZ3VyYXRpb24gZmlsZXMuCiAgICAgIC0gTmV3IGVudiBTTk1QQ09ORlBBVEg6ICBSZWFkIHNubXBkeywubG9jYWx9LmNvbmYgZmlsZXMgaW4gOiBzZXBlcmF0ZWQgcGF0aC4KCndoYXJkYWtlIDE3IEphbiA5NyAxMTo1ODo0NgogICAgLSAoc25tcGQuYyk6CiAgICAgIC0gVXNhZ2UoKSB1cGRhdGUgYW5kIHZlcnNpb24gcHJpbnRvdXQgdXBkYXRlLgoKd2hhcmRha2UgMTcgSmFuIDk3IDE0OjU1OjI4CiAgICBEYXZlIFNoaWVsZCBwYXRjaGVzCgp3aGFyZGFrZSAyMCBKYW4gOTcgMTE6MTc6NTMKICAgIE5pZWwncyBwYXRjaGVzIGludGVncmF0ZWQKCndoYXJkYWtlIDIwIEphbiA5NyAxNTowOToyNQogICAgLSBQYXRjaGVzIGZyb20gRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAY3NjLmxpdi5hYy51az46CiAgICAgLSBpbXBsZW1lbnRlZDogaW50ZXJmYWNlcy5pZlRhYmxlLmlmRW50cnkuaWZTcGVjaWZpYywKICAgICAgICAgIGlwLmlwUm91dGluZ0Rpc2NhcmRzLAogICAgICAgICAgaXAuaXBBZGRyVGFibGUuaXBBZGRyRW50cnkuaXBBZEVudFJlYXNtTWF4U2l6ZSwKICAgICAgICAgIGlwLmlwUm91dGVUYWJsZS5pcFJvdXRlRW50cnkuaXBSb3V0ZU1hc2sgLAogICAgICAgICAgaXAuaXBSb3V0ZVRhYmxlLmlwUm91dGVFbnRyeS5pcFJvdXRlTWV0cmljNSwKICAgICAgICAgIGlwLmlwUm91dGVUYWJsZS5pcFJvdXRlRW50cnkuaXBSb3V0ZUluZm8sIGlwLmlwTmV0VG9NZWRpYVRhYmxlLAogICAgICAgICAgdWRwLnVkcFRhYmxlLgogICAgIC0gdWRwIGNvbm5lY3Rpb24gdGFibGUuCiAgICAgLSBpcE5ldFRvTWVkaWEuCiAgICAKICAgIC0gUGF0Y2hlcyBmcm9tIE5pZWxzIEJhZ2dlc2VuIDxOaWVscy5CYWdnZXNlbkB1bmktYy5kaz46CiAgICAgLSB1ZHBOb1BvcnQsIHRjcEluRXJycyBmaXhlcyBmb3IgU29sYXJpcy4KICAgICAtIGxpbnV4IGFwcGxpY2F0aW9uIHN1cHBvcnQuCiAgICAgLSBzbm1wIHZhcmlhYmxlIGdyb3VwLgogICAgIC0gc2ltcGxlIGNvbGQgc3RhcnQgdHJhcHMgdmlhIGV4ZWMoJ3NubXB0cmFwJykuCiAgICAgLSBNSUIgcGFyc2VyIGZpeGVzLgogICAgIC0gTWVtb3J5L2ZyZWUgYWxsb2NhdGlvbiBmaXhlcy4KCndoYXJkYWtlIDIwIEphbiA5NyAxNToyMjo1MwogICAgLSBQYXRjaGVzIGZyb20gTmllbHMgQmFnZ2VzZW4gPE5pZWxzLkJhZ2dlc2VuQHVuaS1jLmRrPjoKICAgICAtIChzbm1wX2NsaWVudC5jKTogV2FpdCAxMjAgc2Vjb25kcyBiZWZvcmUgcmV0dXJuaW5nLgoKd2hhcmRha2UgMjAgSmFuIDk3IDE1OjM3OjA4CiAgICAtIChjb25maWcqKTogQXV0b2hlYWRlciBpcyBkdW1iOiAgUHV0IG1hY3JvIGRlZmluZXMgYmVsb3dlIEBCT1RUT01AIHN5bWJvbC4KCndoYXJkYWtlIDIwIEphbiA5NyAxNTozODo1OQogICAgLSAoc25tcF92YXJzLmMsIGV4dGVuc2libGUuYywgcmVhZF9jb25maWcuYyk6IFJlbW92ZSBBTlNJIGNwcCAjZWxpZidzLgoKd2hhcmRha2UgMjAgSmFuIDk3IDE1OjUwOjM3CiAgICAtIChzbm1wX3ZhcnMuYyk6IGJzZGkgI2lmZGVmIGZpeGVzLgoKd2hhcmRha2UgMjAgSmFuIDk3IDE1OjU1OjQ1CiAgICAtIChzbm1wX3ZhcnMuYyk6IFBhdGNoIGZyb20gTWFydGluIEphY29ic3NvbiA8bWFydGluQGV4bWFuZGF0by5zZT46CiAgICAgIC0gYWRkIGJzZGkgdG8gc29tZSAjaWZkZWZzLgoKd2hhcmRha2UgMjAgSmFuIDk3IDE1OjU4OjUxCiAgICAtIChleHRlbnNpYmxlLmMpOiBQYXRjaCBmcm9tIE1hcnRpbiBKYWNvYnNzb24gPG1hcnRpbkBleG1hbmRhdG8uc2U+OgogICAgICAtIHdhdGNoIG91dCBmb3Igc3RyaW5nIGxlbmd0aHMgb24gdmVyc2lvbiBkZXNjIGFuZCBzeXNuYW1lLgoKd2hhcmRha2UgMjAgSmFuIDk3IDE2OjM4OjIwCiAgICBwYXRyaWNlLjEgcGF0Y2gKCndoYXJkYWtlIDIwIEphbiA5NyAxNjo0MzoyNQogICAgLSAoc25tcF9hcGkuYywgc25tcF9jbGllbnQuW2NoXSk6CiAgICAgIC0gUGF0Y2ggZnJvbSBQYXRyaWNlIFZBTkFDS0VSIDx2YW5hY2tlckB3b3JsZG5ldC5mcj46CiAgICAgICAgLSBmaXggcmVxdWVzdCBkZWxldGlvbnMgaW4gc25tcF9yZWFkKCkuCiAgICAgICAgLSBhZGRlZCByZXR1cm4gYXJndW1lbnQgdG8gc25tcF9hZGRfbnVsbF92YXIoKS4KCndoYXJkYWtlIDIwIEphbiA5NyAxNjo1OTowMgogICAgLSAoZXh0ZW5zaWJsZS5jKTogUGF0Y2ggZnJvbSBzeGp6aGFuZ0Bzc3Muc3NpMS5jb206CiAgICAgICAgLSBmaXggZGlzayByZXBvcnRpbmcgb24gc3Vub3MgNC4xLjMgd2l0aCBPRFMgMS4wLgoKd2hhcmRha2UgMjAgSmFuIDk3IDE2OjU5OjU2CiAgICB2ZXJzaW9uIHRhZyAoIDMuMS4zLnByZTEgKQoKd2hhcmRha2UgMjEgSmFuIDk3IDA4OjMzOjA0CiAgICAtIChyZWFkX2NvbmZpZy5jKTogUGF0Y2ggZnJvbSBLYXJsIExlaGVuYmF1ZXIgPGthcmxAaGFtbWVyMS5vcHMuTmVvU29mdC5jb20+OgogICAgICAtICNpZiBET0RFQlVHIC0+ICNpZmRlZiBET0RFQlVHLgoKd2hhcmRha2UgMjEgSmFuIDk3IDA4OjMzOjUyCiAgICAtIChzbm1wZC5jKTogcmVtb3ZlIHNlY29uZCBjaGFyIGRlZmluaXRpb24uCgp3aGFyZGFrZSAyMSBKYW4gOTcgMDg6MzQ6MzIKICAgIC0gKHNubXBfY2xpZW50LmgpOiByZW1vdmUgc2Vjb25kICh3cm9uZykgZnVuY3Rpb24gcHJvdG90eXBlLgoKd2hhcmRha2UgMjEgSmFuIDk3IDA5OjE3OjQyCiAgICAtIChzbm1wX3Zhcl9yb3V0ZS5jLCBzbm1wX3ZhcnMuYyk6CiAgICAgIC0gUGF0Y2ggZnJvbSBLYXJsIExlaGVuYmF1ZXIgPGthcmxAaGFtbWVyMS5vcHMuTmVvU29mdC5jb20+CiAgICAgICAgLSBoYW5kbGUgbXVsdGlwbGUgaW50ZXJmYWNlIG5hbWVzID4gMTAgcHJvcGVybHkuCgp3aGFyZGFrZSAyOSBKYW4gOTcgMTA6NDc6NDAKICAgIGJ1ZyByZXBvcnRpbmcgc2NyaXB0IGFkZAoKd2hhcmRha2UgMjkgSmFuIDk3IDEyOjA3OjAwCiAgICAtIChidWctcmVwb3J0KToKICAgICAtIEFsd2F5cyB1c2UgbXVsdGlwYXJ0OiB2ZXJzaW9uIGluZm8gYW5kIGNvbmZpZy5jYWNoZSBhcmUgb25lLgogICAgIC0gcmUtYXJyYW5nZWQgYSBiaXQuCiAgICAgLSBBZGRlZCBpbnRyb2R1Y3Rpb24uCiAgICAgLSBHdWVzcyBhdCBkb21haW4gbmFtZSBpZiBwb3NzaWJsZS4KCndoYXJkYWtlIDI5IEphbiA5NyAxMjowNzo1OQogICAgLSAoYWNjb25maWcuaCk6CiAgICAgLSBTTk1QQkxPQ0sgPSAhU05NUEJMT0NLCgp3aGFyZGFrZSAyOSBKYW4gOTcgMTI6MDk6MDUKICAgIC0gKGFjbG9jYWwubTQpOiBGaXggY2hlY2tfc3RydWN0X2ZvciB0byBkZWZpbmUgdGhpbmdzIGNvcnJlY3RseS4KCndoYXJkYWtlIDI5IEphbiA5NyAxMjoxMDoyOAogICAgLSAoY29uZmlndXJlLmluKTogTmV3IHBzIG9wdGlvbnMgdG8gY2hlY2sgZm9yLgoKd2hhcmRha2UgMjkgSmFuIDk3IDEyOjExOjA0CiAgICAtIChGQVEpOiByZXZpc2lvbiBvbmUhCgp3aGFyZGFrZSAyOSBKYW4gOTcgMTI6MTE6MjkKICAgIC0gKGNvbmZpZy5oLmluLCBjb25maWd1cmUpOiB1cGRhdGUKCndoYXJkYWtlIDI5IEphbiA5NyAxMjo1ODo0NgogICAgLSAoa2VybmVsLmMsIHNubXBfYWdlbnQuYywgc25tcGQuYyk6IFBhdGNoIGZyb20gTmllbHMgQmFnZ2VzZW46CiAgICAgIC0gRml4IHZhcmlvdXMgd2FybmluZ3MvZXJyb3JzLgogICAgICAtIEltcGxlbWVudCByZWFsIHRyYXBzLgoKd2hhcmRha2UgMjkgSmFuIDk3IDEzOjAzOjE1CiAgICAtICh2ZXJzaW9udGFnKTogTW9kaWZ5IC4uLy4uL2J1Zy1yZXBvcnQgYXMgd2VsbC4KCndoYXJkYWtlIDI5IEphbiA5NyAxMzowODoxMQogICAgLSAoYnVnLXJlcG9ydCk6CiAgICAgIC0gY2hhbmdlIHRvIGFkZHJlc3MgKGJhY2spIHRvIHVjZC1zbm1wLWNvZGVycy4KICAgICAgLSBBZGQgYSB0cmFwIG9uIHNpZ25hbHMgdG8gcmVtb3ZlIHRtcCBmaWxlcy4KCndoYXJkYWtlIDMxIEphbiA5NyAwOTo1ODoxMAogICAgLSAoY29uZmlnKik6IENoZWNrIGZvciBrc3RhdC5oIGFuZCBpZiBzeXNjdGwgY2FuIHJlYWQgdGhlIGJvb3R0aW1lLgoKd2hhcmRha2UgMzEgSmFuIDk3IDEwOjAxOjU5CiAgICAtIChzbm1wX3Zhcl9yb3V0ZS5jLCBzbm1wX3ZhcnMuYyk6IFBhdGNoIGZyb20gTWFydGluIEphY29ic3NvbjoKICAgICAgLSBDaGFuZ2Ugc29tZSBzeXN0ZW0gc3BlY2lmaWMgaWZkZWZzIHRvIENBTl9VU0VfU1lTQ1RMLgogICAgICAtIEZpeCBjb21wbGlhdGlvbiBlcnJvcnMgb24gYnNkaTIuCiAgICAgIC0gRml4IHJvdXRpbmcgdGFibGVzIGZvciBzaW1pbGFyLgoKd2hhcmRha2UgMzEgSmFuIDk3IDEwOjQ5OjA3CiAgICAtICh2ZXJzaW9udGFnKTogdWgsIGNvbW1pdCBpdCBhZ2Fpbi4KCndoYXJkYWtlIDMxIEphbiA5NyAxMDo1MDowNAogICAgLSAoY29uZmlndXJlLmluLCBjb25maWd1cmUpOiBmaXJlIG9mZiBrc2ggaWYgaHB1eCAmJiBzaC4KCndoYXJkYWtlIDMxIEphbiA5NyAxMDo1OTo0MwogICAgLSAoY29uZmlndXJlLmluLCBjb25maWd1cmUpOiBjaGFuZ2VkIGFyY2ggdG8gaHBwYSBhbmQgbWFrZSBzdXJlIC9iaW4va3NoIGV4aXN0cy4KCndoYXJkYWtlIDMxIEphbiA5NyAxMTowMzoxMQogICAgdmVyc2lvbiB0YWcgdXBkYXRlCgp3aGFyZGFrZSAgMyBGZWIgOTcgMTA6MDI6MTIKICAgIC0gKGJ1Zy1yZXBvcnQpOiBQYXRjaCBmcm9tIERhdmUgU2hpZWxkOgogICAgICAtIGRvbWFpbiBuYW1lIGZpeCBhbmQgZWRpdG9yIGJvbWIgb3V0LgoKd2hhcmRha2UgIDMgRmViIDk3IDEwOjAzOjEwCiAgICAtIChFWEFNUExFLmNvbmYuZGVmKTogY29tbWVudCBvdXQgcG9zc2libGUgc2VjdXJpdHkgcHJvYmxlbSBsaW5lcy4KCndoYXJkYWtlICAzIEZlYiA5NyAxMDo0NjowMgogICAgLSAoY29uZmlndXJlLmluKToKICAgICAgLSBDaGVjayBmb3Igd2hvYW1pLCBsb2duYW1lLgogICAgICAtIERvbid0IHBhc3MgbnVsbCBhcmdzIHRvIGtzaC4KCndoYXJkYWtlICAzIEZlYiA5NyAxMDo0NzowNAogICAgLSAoc25tcF92YXJzLmMpOiBQYXRjaCBmcm9tIERhdmUgU2hpZWxkCiAgICAgIC0gTWFyayBzdHVmZiBmb3IgbGF0ZXIgY2hhbmdlcy4KCndoYXJkYWtlICAzIEZlYiA5NyAxMDo0ODowNgogICAgLSAoc25tcGxpYi9zeXN0ZW0uYyk6ICBVc2UgQ0FOX1VTRV9TWVNDVEwgaW5zdGVhZCBvZiBic2RsaWtlLgoKd2hhcmRha2UgIDMgRmViIDk3IDExOjUwOjIzCiAgICAtIChjb25maWcqKToKICAgICAgLSBDaGVjayBmb3IgaXJpeCA2LjIgaGVhZGVycy4KICAgICAgLSBDaGVjayBpZiBfS0VSTkVMIG5lZWRzIHRvIGJlIGRlZmluZWQgZm9yIGlyaXggYW5kIGlmbmV0IHVzYWdlLgogICAgICAtIFVzZSB0aGUgZm91bmQgVU5BTUUgcHJvZ3JhbSBpbnN0ZWFkIG9mIGFzc3VtaW5nIHdlIGhhdmUgaXQuCgp3aGFyZGFrZSAgMyBGZWIgOTcgMTI6NDQ6NTEKICAgIC0gKHNubXBsaWIvc3lzdGVtLmMpOiB0eXBvOiAgbmVlZHMgYSBzcGFjZSBiZXR3ZWVuICdzdGF0aWMnIGFuZCAnc3RydWN0Jy4KCndoYXJkYWtlICAzIEZlYiA5NyAxMjo0Nzo1OAogICAgLSAoc25tcF92YXJzLmMpOiBhZGQgc29tZSBpcml4IGFwcHJvcHJpYXRlIGluY2x1ZGVzLgoKd2hhcmRha2UgIDMgRmViIDk3IDEyOjUxOjA0CiAgICAtIChSRUFETUUpOiByZW1vdmUgcHJvamVjdCBoaXN0b3J5LgoKd2hhcmRha2UgIDMgRmViIDk3IDEzOjE1OjExCiAgICAtIChSRUFETUUpOgogICAgICAtIGFkZGVkIEZBUSBwb2ludGVyLgogICAgICAtIERhdmUncyBFbmdsaXNoIHBvaW50ZXJzIChpZSwgaGUgcHJvb2ZlZCBpdCBhbmQgSSwgdWgsIGRvbid0Li4uKS4KICAgICAgLSBzd2l0Y2ggZnRwIG1pcnJvci4KICAgICAgLSBidWctcmVwb3J0IHNjcmlwdCBtZW50aW9uZWQuCiAgICAgIC0gSSAtPiBXZSwgbWUgLT4gdXMuLi4KCndoYXJkYWtlICAzIEZlYiA5NyAxMzozMzoxMQogICAgLSAoUkVBRE1FLCBORVdTLCBUT0RPKTogVXBkYXRlIGZvciAzLjEuMy4KCndoYXJkYWtlICAzIEZlYiA5NyAxMzo1MzowNAogICAgLSAoYnVnLXJlcG9ydCk6IG1vdmUgY29uZmlnLmNhY2hlIHRvIGVuZCBvZiBtZXNzYWdlLgoKd2hhcmRha2UgIDMgRmViIDk3IDEzOjU1OjA1CiAgICB2ZXJzaW9uIHRhZyAoIDMuMS4zLnByZTMgKQoKd2hhcmRha2UgIDQgRmViIDk3IDA5OjM1OjAyCiAgICAtIChGQVEpOiBEYXZlJ3MgbGF0ZXN0IHJldmlzaW9uLgoKd2hhcmRha2UgIDQgRmViIDk3IDA5OjM1OjM3CiAgICAtIChUT0RPKTogQWRkZWQgc3VnZ2VzdGlvbnMgZnJvbSB1Y2Qtc25tcC1jb2RlcnMuCgp3aGFyZGFrZSAgNCBGZWIgOTcgMDk6MzY6NDMKICAgIC0gKGNvbmZpZ3VyZSwgY29uZmlndXJlLmluKTogRml4IGhwdXggcHJvYmxlbXMsICphZ2FpbiouCgp3aGFyZGFrZSAgNCBGZWIgOTcgMDk6Mzc6MjYKICAgIC0gKG1pYi5jKTogUGF0Y2ggZnJvbSBTaW1vbjogY29tbWVudCAjaWZkZWYgZW5kaW5ncyBmb3IgQU5TSSBjb21wbGllcnMuCgp3aGFyZGFrZSAgNCBGZWIgOTcgMDk6NDE6MzkKICAgIC0gKEZBUSk6IEFkZGVkIFRPQyBhbmQgYXV0b3Igbm90ZXMgOy0pLgoKd2hhcmRha2UgIDUgRmViIDk3IDE2OjMzOjAxCiAgICAtIChGQVEpOiBEYXZlIHVwZGF0ZWQgYXJjaGl0ZWN0dXJlIGxpc3RzLgoKd2hhcmRha2UgIDUgRmViIDk3IDE2OjMzOjMyCiAgICAtIChUT0RPKTogbWlzYyByZXF1ZXN0ZWQgYWRkaXRpb25zLgoKd2hhcmRha2UgIDUgRmViIDk3IDE3OjA3OjI1CiAgICAtIChjb25maWd1cmUsIGNvbmZpZ3VyZS5pbik6IFB1dCAvZGV2L2tzeW1zIGFoZWFkIG9mIC9rZXJuZWwvdW5peC4KCndoYXJkYWtlICA1IEZlYiA5NyAxNzoxMToxNQogICAgLSAobWFueSk6IFBhdGNoIGZyb20gTmllbHMgQmFnZ2VzZW46CiAgICAgIC0gc25tcCBtaWIgZ3JvdXAgY2xlYW51cHMuCiAgICAgIC0gdHJhcCBnZW5lcmF0aW9uIGNsZWFudXBzLgogICAgICAtIGFkZGVkIG1hbiBlbnRyaWVzIGZvciB0cmFwIGdlbmVyYXRpb24uCiAgICAgIC0gaW1wcm92ZWQgYWdlbnQgZGVidWdnaW5nIG91dHB1dCB3aXRoIGFnZW50J3MgLWQgZmxhZy4KCndoYXJkYWtlICA1IEZlYiA5NyAxNzoxMzowOQogICAgLSAoc3lzdGVtLmMpOiBQYXRjaCBmcm9tIERhdmUgU2hpZWxkIHRvIGZpeCBubGlzdCBwcm9ibGVtcy4KCndoYXJkYWtlICA1IEZlYiA5NyAxNzoyMDoxMAogICAgLSAoYnVnLXJlcG9ydCk6IENoYW5nZSBzdWJqZWN0IGxpbmUgdG8gc2hvcnRlbiBhbmQgZm9yY2UgYmV0dGVyIGRlc2NyaXB0aW9uLgoKd2hhcmRha2UgIDUgRmViIDk3IDE3OjIzOjQxCiAgICAtICh0Y2wsIHRrLCBzbm1wdGNsKTogTnVrZWQuCgp3aGFyZGFrZSAgNSBGZWIgOTcgMTc6MjU6MDMKICAgIC0gKE5FV1MpOiByZW1vdmVkIHRjbCBzdHVmZi4KCndoYXJkYWtlICA1IEZlYiA5NyAxNzoyOTo1NAogICAgLSAoTWFrZWZpbGUuaW4sIGNvbmZpZ3VyZS5pbik6IHJlbW92ZWQgdGNsIHN0dWZmLgoKd2hhcmRha2UgIDUgRmViIDk3IDE3OjQxOjUwCiAgICB2ZXJzaW9uIHRhZyAoIDMuMS4zLnByZTQgKQoKd2hhcmRha2UgMTAgRmViIDk3IDA5OjIyOjAzCiAgICAtIChGQVEpOiBEYXZlIFNoaWVsZHMnIGFkZGl0aW9uczogIGZpbmRpbmcgbW9yZSBpbmZvLgoKd2hhcmRha2UgMTAgRmViIDk3IDA5OjIyOjUzCiAgICAtIChzbm1wbmV0c3RhdC9tYWluLmMpOiBSZW1vdmUgbWFsbG9jIHByb3RvdHlwZSwgbm93IGluIHN0ZGxpYi5oLgoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKQ2hhbmdlczogVjMuMS4yIC0+IFYzLjEuMi4xCgp3aGFyZGFrZSAgNSBEZWMgOTYgMDk6MTM6NTYKICAgIC0gKGlmLmMpOiAjaWZuZGVmIC0+ICNpZmRlZiBmb3Igc2lnc2V0LgogCndoYXJkYWtlICA1IERlYyA5NiAwOToxNDo1OQogICAgLSAobWQ1LmMpOiByZW1vdmUgYW5zaSBzcGVjaWZpYyBDIGZlYXR1cmVzICh1bnNpZ25lZCBjb25zdGFudHMpLgogCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCkNoYW5nZXM6IFYzLjEuMSAtPiBWMy4xLjIKCndoYXJkYWtlIDE3IE9jdCA5NiAwNzowMjo1OAogICAgdmVyc2lvbiB0YWcgKCAzLjEuMS5CU0RJICkKCndoYXJkYWtlIDMwIE9jdCA5NiAxMzo0NzoyMQogICAgLSAoUE9SVElORyxSRUFETUUpOiBBZGQgYSBuZXcgUE9SVElORyBmaWxlIHRvIHJlZmVyZW5jZSBhdXRvY29uZiBwbGVlLgoKd2hhcmRha2UgMzAgT2N0IDk2IDEzOjQ5OjA5CiAgICAtIChjb25maWcqLCBlY2UtbWliLmRlZik6CiAgICAgIC0gQ2hhbmdlIGV4dGVuc2libGUgbWliIGxvY2F0aW9uIHRvIHVjZGF2aXMgZW50ZXJwcmlzZSBtaWI6IDIwMjEuCiAgICAgIC0gUmVtb3ZlIGFzc29jaWF0ZWQgcHJvbXB0aW5nIGZyb20gY29uZmlndXJlIHNjcmlwdCBhbmQgZXRjLgoKd2hhcmRha2UgMzEgT2N0IDk2IDE3OjA2OjE2CiAgICAtIChyZWFkX2NvbmZpZy5jKTogbnVtZGlza3Mgd2FzIGJlaW5nIGluY3JlbWVudGVkIGJlZm9yZSBsYXN0IHVzYWdlLgoKd2hhcmRha2UgIDEgTm92IDk2IDA4OjU0OjExCiAgICAtIChhc24xLmMpOiBQYXRjaCBmcm9tIFNpbW9uIExlaW5lbiAgPHNpbW9uQHN3aXRjaC5jaD46CiAgICAgIC0gYXNuX2J1aWxkX3Vuc2lnbmVkX2ludCwgYXNuX2J1aWxkX3Vuc2lnbmVkX2ludDY0OgogICAgICAgIC0gRG9uJ3QgdHJ5IHRvIHN0cmlwIEZGcyBmcm9tIHRoZSBoaWdoIGVuZCBvZiB1bnNpZ25lZCB2YWx1ZXMuCiAgICAgICAgLSBTa2lwIHRoZSBzdHJpcHBpbmcgY29kZSBlbnRpcmVseSBpZiB3ZSBoYXZlIHRvIGFkZCBhIG51bGwgYnl0ZS4KCndoYXJkYWtlICA0IE5vdiA5NiAwOTozMDo0NgogICAgLSAoY29uZmlnKiwgc25tcF92YXJzLmMsIGV4dGVuc2libGUuYyk6ICBNb3JlIGluY2x1ZGUgY2hlY2tzIGZvciBsaW51eC4KCndoYXJkYWtlICA0IE5vdiA5NiAxMDowODo0OQogICAgLSAoY29uZmlnKik6IENoZWNrIGZvciBubGlzdCBpbiAtbG1sZCAoaXJpeCkuCgp3aGFyZGFrZSAgNyBOb3YgOTYgMDk6MTY6NDUKICAgIC0gTmV0QlNEIDMuMS4wLjEgYnJhbmNoIG1lcmdlLgoKd2hhcmRha2UgIDcgTm92IDk2IDA5OjI0OjIzCiAgICAtIE5pZWxzIDMuMS4xIGJyYW5jaCBtZXJnZS4KCndoYXJkYWtlICA3IE5vdiA5NiAwOTozNTo1MgogICAgLSBCU0RpMiAzLjEuMSBicmFuY2ggbWVyZ2UuCgp3aGFyZGFrZSAgNyBOb3YgOTYgMDk6NTc6MTYKICAgIC0gKHZlcnNpb250YWcpOiBPbmx5IHRhZyByZWxlYXNlIHZlcnNpb25zIChFeHQqKS4KCndoYXJkYWtlICA3IE5vdiA5NiAxNDoxNjowMAogICAgLSAoY29uZmlndXJlLmluLCBjb25maWd1cmUpOiBDaGFuZ2VkIGRlZmF1bHQgU05NUFYyQVVUSCB0byBTTk1QVjEuCgp3aGFyZGFrZSAgNyBOb3YgOTYgMTQ6MTY6MzkKICAgIC0gKHNubXBfdmFyX3JvdXRlLmMpOiBpZmRlZidzIGFyb3VuZCBzdHJpbmdzLmguCgp3aGFyZGFrZSAgNyBOb3YgOTYgMTQ6MTc6MTcKICAgIC0gKHNubXBfdmFycy5jKTogaWZkZWYgdHlwb3MuCgp3aGFyZGFrZSAgNyBOb3YgOTYgMTQ6MTk6MzMKICAgIC0gKG1pYi5jKTogdHlwZWNhc3QgZm9yIHNwcmludF9vYmppZCgpLgoKd2hhcmRha2UgIDggTm92IDk2IDE3OjAzOjQ3CiAgICAtIChNYWtlZmlsZS5pbik6IENyZWF0ZWQgYSAndG91Y2hpdCcgdG8gdG91Y2ggY29uZmlnIGZpbGVzIHByb3Blcmx5LgoKd2hhcmRha2UgIDggTm92IDk2IDE3OjA2OjQ2CiAgICAtIChNYWtlZmlsZS5pbik6IEZpeGVkICd0b3VjaGl0Jy4KCndoYXJkYWtlIDE0IE5vdiA5NiAxNToxNDo1MAogICAgLSAoZXh0ZW5zaWJsZS5jKTogVXNlIHN0YXRmcyBpZiBzdGF0dmZzIGlzIHVuYXZhaWxhYmxlLgoKd2hhcmRha2UgMTQgTm92IDk2IDE1OjE2OjIyCiAgICAtIChzbm1wX3ZhcnMuYyk6CiAgICAgIC0gI2lmZGVmIHR5cG8uCiAgICAgIC0gcHJvdG90eXBlIGZvciBJbnRlcmZhY2VfU2Nhbl9Jbml0KCkuCiAgICAgIC0gQ2hlY2sgZm9yIGV4aXN0YW5jZSBvZiB0Y3BzdGF0LnRjcHNfcmN2bWVtZHJvcCBiZWZvcmUgdXNpbmcuCgp3aGFyZGFrZSAxNCBOb3YgOTYgMTU6MTc6MzYKICAgIC0gKGNvbmZpZyopOgogICAgICAtIENoZWNrIGZvciBleGlzdGFuY2Ugb2YgdGNwc3RhdC50Y3BzX3Jjdm1lbWRyb3AuCiAgICAgIC0gQ2hlY2sgZm9yIHN5cy92ZnMuaC4KCndoYXJkYWtlIDE0IE5vdiA5NiAxNToyNDoyNAogICAgLSAoc25tcHRyYXAuYywgaW5ldC5jLCByb3V0ZS5jKTogdHlwZWNhc3Rpbmcgd2FybmluZyBmaXhlcy4KCndoYXJkYWtlIDE1IE5vdiA5NiAxNjo0MzozMwogICAgLSAoY29uZmlnKiwgZXh0ZW5zaWJsZS5jKTogTWFrZSB1bmFtZSBjYWxscyB3b3JrIGNvcnJlY3RseS4KCndoYXJkYWtlIDE1IE5vdiA5NiAxNjo0NDoxMQogICAgLSAocGFyc2UuYyk6ICBBZGQgYmFjayBpbiAicmVhZGluZyBtaWIuLi4iIGRlYnVnZ2luZyBzdGF0bWVudHMuCgp3aGFyZGFrZSAyMiBOb3YgOTYgMDg6MTg6MjkKICAgIC0gKHNubXBfdmFycy5jKTogVHJhc2ggaW50ZXJmYWNlIGNhY2hpbmcuCgp3aGFyZGFrZSAyMiBOb3YgOTYgMDk6MDY6MTAKICAgIC0gKHNubXBfdmFycy5jKTogTWVyZ2UgZnJvbSBGcmVlQlNEMi0zLTEtMS4KICAgICAgLSBBZGQgY2hlY2tzIGZvciBpZm5ldC5baW9dYnl0ZXMuCgp3aGFyZGFrZSAyMiBOb3YgOTYgMDk6MTQ6MjIKICAgIC0gKGNvbmZpZyopOiBBZGQgY2hlY2tzIGZvciBpZm5ldC5baW9dYnl0ZXMuCgp3aGFyZGFrZSAyMiBOb3YgOTYgMTE6MzU6MjkKICAgIC0gKGFnZW50L2V4dGVuc2libGUvKi5jLCBuZXc6IGV4dHByb3RvLmgpOiAgUmVtb3ZlZCBhbGwgLVdhbGwgd2FybmluZ3MhCgp3aGFyZGFrZSAyMiBOb3YgOTYgMTQ6Mzg6MDUKICAgIC0gKGNvbmZpZyosIGluc3RhbGwtc2gsIG1raW5zdGFsbGRpcnMpOiBVcGdyYWRlZCB0byBhdXRvY29uZiAyLjExLgoKd2hhcmRha2UgMjIgTm92IDk2IDE1OjEwOjM2CiAgICAtIChleHRlbnNpYmxlLmMsIHJlYWRfY29uZmlnLmMpOiByZW1vdmVkIG1vcmUgLVdhbGwgd2FybmluZ3MuCgp3aGFyZGFrZSAyNCBOb3YgOTYgMTY6MjU6MDcKICAgIC0gKGtlcm5lbC5jLCBjb25maWcqLCBJTlNUQUxMKTogIE5ldyBjb25maWd1cmUgc3dpdGNoOiAgLS13aXRob3V0LXJvb3QtYWNjZXNzLgogICAgICAtIFRoZSBhZ2VudCBkb2Vzbid0IGV4aXQgaWYgaXQgY2FuJ3Qgb3BlbiAvZGV2L2ttZW0uCgp3aGFyZGFrZSAyNCBOb3YgOTYgMTY6NDU6MjcKICAgIHZlcnNpb24gdGFnICggMy4xLjIucHJlMSApCgp3aGFyZGFrZSAyNSBOb3YgOTYgMDg6NDQ6MDMKICAgIC0gKHthZ2VudCxhcHBzfS9NYWtlZmlsZS5pbik6IFB1dCBsaWJzbm1wLmEgaW4gZnJvbnQgb2YgLWwgbGlicy4KCndoYXJkYWtlIDI1IE5vdiA5NiAwOToxNTo1NwogICAgLSAoY29uZmlnKiwgc25tcF9pbXBsLmgpOiBNb3ZlZCB2b2lkIC0+IGNoYXIgZGVmaW5lIHRvIGEgY29uZmlndXJlIHRlc3QuCgp3aGFyZGFrZSAyNyBOb3YgOTYgMDg6MDI6MDYKICAgIC0gKHNubXBfdmFycy5jKTogUGF0Y2ggZnJvbSBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBjc2MubGl2LmFjLnVrPjoKICAgICAgLSBDaGFuZ2UgY29tbWVudHMgdG8gcmVmbGVjdCB3aGF0IGl0cyBhY3R1YWxseSBsb29raW5nIGF0LgogICAgICAtIFJlbW92ZSBpZmRlZiBhcm91bmQgaWZuZXQgZGVjbGFyYXRpb25zLgoKd2hhcmRha2UgMjcgTm92IDk2IDA4OjAzOjQ3CiAgICAtIChleHRlbnNpYmxlLmMpOiBQYXRjaCBmcm9tIERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGNzYy5saXYuYWMudWs+OgogICAgICAtIFJlbW92ZSByZXR1cm4oMCkgb24gdm9pZCBpbml0X2V4dGVuc2libGUoKS4KCndoYXJkYWtlIDI3IE5vdiA5NiAwODowNjowNAogICAgLSAoY29uZmlndXJlLCBjb25maWd1cmUuaW4pOiBEZWZhdWx0IHN5c2xvYyBVQ0RhdmlzIC0+IFVua25vd24uCgp3aGFyZGFrZSAyNyBOb3YgOTYgMDg6MjE6MjAKICAgIC0gKElOU1RBTEwpOiBUeXBvOiAgMy4xLjMgLT4gMy4wLjMuCgp3aGFyZGFrZSAyNyBOb3YgOTYgMDg6MjE6MzQKICAgIC0gKFJFQURNRSk6IFVwZGF0ZS4KCndoYXJkYWtlIDI3IE5vdiA5NiAwODozNDoxMgogICAgLSAoaWYuYyk6IFBhdGNoIGZyb20gRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAY3NjLmxpdi5hYy51az46CiAgICAgIC0gV2F0Y2ggb3V0IGZvciBpbnRlcmZhY2UgbmFtZXMgd2l0aCAnICcgaW4gdGhlbS4KICAgICAgLSBSZXNldCBzaWduYWwgb24gQlNEIHNpZ25hbCBpbXBsZW1lbnRhdGlvbnMuCgp3aGFyZGFrZSAyNyBOb3YgOTYgMDg6NDU6NDYKICAgIC0gKGlmLmMpOiBSZXNldCBzaWduYWwgb24gYWxsIHR5cGVzIG9mIHNpZ25hbCBpbXBsZW1lbnRhdGlvbnMuCgp3aGFyZGFrZSAyNyBOb3YgOTYgMDg6NTY6NDQKICAgIC0gKGNvbmZpZ3VyZS5pbiwgY29uZmlndXJlKTogVHJ1bmNhdGUgc3lzdGVtIG5hbWVzIGJleW9uZCBbLV9dLiouCgp3aGFyZGFrZSAgMiBEZWMgOTYgMDg6NTU6NDkKICAgIC0gKHNubXBfdmFycy5jKTogUGF0Y2ggZnJvbSBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBjc2MubGl2LmFjLnVrPjoKICAgICAgLSBpZlBoeXNBZGRyIC0gaW4gSW50ZXJmYWNlX0dldF9FdGhlcl9CeV9JbmRleCwgSFAtVVggaGFzIHRoZSBzYW1lCiAgICAgICAgICAgIEV0aGVyQWRkciBzdHJ1Y3VyZSBhcyBNSVBTLgogICAgCiAgICAgIC0gaXBBZEVudElmSW5kZXggLSBpbiB2YXJfaXBBZGRyRW50cnksIHRoZXJlIGlzIGEgZmFsc2UgbWF0Y2ggb24KICAgICAgICAgICAgdGhlIGxvb3BiYWNrIGludGVyZmFjZSwgZ2l2aW5nIHRoZSB3cm9uZyBhbnN3ZXIgb2YgdGhlIGZpcnN0CiAgICAgICAgICAgIGludGVyZmFjZSBpbmRleC4KICAgIAogICAgICAtIHVkcEluRXJyb3JzIC0gaW4gdmFyX3VkcCwgdGhlIGNvdW50IG9mIFVEUCBlcnJvcnMgb21pdHMgZGlzY2FyZGVkCiAgICAgICAgICAgIHBhY2tldHMuICBTb21lIHN5c3RlbXMgKGkuZS4gSFAtVVgpIGhhdmUgZXh0ZW5kZWQgdGhlIHVkcHN0YXQKICAgICAgICAgICAgc3RydWN0dXJlIHRvIGluY2x1ZGUgdGhlc2UuICBJJ3YgdHdlYWtlZCB0aGlzIGFuYWxvZ291cyB0byBhCiAgICAgICAgICAgIHNpbWlsYXIgYWRkaXRpb24gaW4gdGhlIHRjcHN0YXQgc3RydWN0dXJlLgogICAgCiAgICAgIC0gdGNwQ29ublN0YXRlIC0gSFAtVVggaGFzIGFkZGVkIGFuIGV4dHJhIHN0YXRlIGludG8gdGhlIGxpc3QsIHdoaWNoCiAgICAgICAgICAgIHRocm93cyB0aGUgcmVzdCBvZiB0aGVtIG91dC4KCndoYXJkYWtlICAzIERlYyA5NiAxMDowNDowMgogICAgLSAoY29uZmlnKiwgc25tcF92YXJzLmMpOgogICAgICAtIFdyb3RlIEFDX0NIRUNLX1NUUlVDVF9GT1IgYW5kIHVzZSBpdC4KICAgICAgLSBNYWtlIEFDX0NIRUNLX0lGTkVUX0ZPUiB1c2UgYWJvdmUuCiAgICAgIC0gQ2hhbmdlcXVvdGUgJ1tdJyAtPiAnJyBhcm91bmQgc2VkIGV4cHJlc3Npb24gd2l0aCBbXXMgKC1Eb3N0eXBlKS4KCndoYXJkYWtlICAzIERlYyA5NiAxMDowNToxNwogICAgLSAobWQ1LmMpOiBQdXQgJ1UnbnNpZ25lZCBtYXJrZXIgYXQgZW5kIG9mIGNvbnN0YW50cyB0byByZW1vdmUgZ2NjIHdhcm5zLgoKd2hhcmRha2UgIDMgRGVjIDk2IDExOjA0OjMzCiAgICAtIChzbm1wX3ZhcnMuYyk6IEZyb20gRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAY3NjLmxpdi5hYy51az46CiAgICAgIC0gRml4IGFycCB0YWJsZSBmb3IgaHB1eC4KICAgIC0gKGNvbmZpZyopOiBDaGVjayBmb3IgYXJwaGQuYXRfbmV4dCBhbmQgdXNlIGluIGFib3ZlLgoKd2hhcmRha2UgIDMgRGVjIDk2IDExOjE0OjQzCiAgICAtIChFWEFNUExFLmNvbmYuZGVmLCBwYXNzdGVzdCk6IE1vdmUgcGFzc3Rlc3QgdG8gdWNkYXZpcyBzdWJ0cmVlLgoKd2hhcmRha2UgIDMgRGVjIDk2IDE0OjUxOjI0CiAgICAtIChlY2UtbWliLmRlZik6IFVzZWQgLT4gQXZhaWwgaW4gbWVtb3J5IHNlcXVlbmNlLgoKd2hhcmRha2UgIDQgRGVjIDk2IDA5OjE2OjA5CiAgICAtIChhc24xLmMsIHBhcnNlLmMsIHNubXBfYXBpLmMsIHNubXBfY2xpZW50LmMpOgogICAgICAtIFBhdGNoIGZyb20gTmllbHMgQmFnZ2VzZW4gPE5pZWxzLkJhZ2dlc2VuQHVuaS1jLmRrPjoKICAgICAgICAtIFBhcnNlciBmaXhlcyBmb3IgbXVsdGlwbGUgbm9kZXMuCiAgICAgICAgLSBtZW1tb3ZlL2NvcHkgZGVsZXRlcy4KCndoYXJkYWtlICA0IERlYyA5NiAwOTo0OTozOAogICAgLSAoUE9SVElORywgUkVBRE1FKTogIFVwZGF0ZSBmb3IgcmVsZWFzZSAzLjEuMi4KCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCkNoYW5nZXM6IFYzLjEuMC4xIC0+IFYzLjEuMQoKd2hhcmRha2UgMTEgU2VwIDk2IDA4OjQ5OjE0CiAgICAtIChyZWFkX2NvbmZpZy5jKTogRml4ZWQgY29tbXVuaXR5IG51bWJlciBjaGVja3MuCgp3aGFyZGFrZSAyNCBTZXAgOTYgMTY6NTQ6NTkKICAgIC0gKGNvbmZpZyosIHNubXBfYXBpLmMsIHNubXBfY2xpZW50LmMpOiBBZGRlZCBzeXMvc2VsZWN0LmggZm9yIEFJWC4KCndoYXJkYWtlIDI0IFNlcCA5NiAxNjo1OToyNgogICAgLSAoc25tcF92YXJfcm91dGUuYywgc25tcF92YXJzLmMpOiB0eXBvcy4KCndoYXJkYWtlIDI0IFNlcCA5NiAxNzowMjo0NwogICAgLSAoc25tcF92YXJzLmMpOiBNb3ZlZCBhIHZhcmlhYmxlIGRlY2xhaXJhdGlvbi4KCndoYXJkYWtlIDI0IFNlcCA5NiAxNzoxNjo1OAogICAgLSAoc25tcF92YXJfcm91dGUuYyk6IHR5cG8gZml4aW5nIGEgdHlwbyAoc2lnaC4uKS4KCndoYXJkYWtlIDI1IFNlcCA5NiAxNDoxNDo1MwogICAgLSAoc25tcF92YXJfcm91dGUuYyk6IGZyZWVic2QyIHR5cGVjYXN0LgoKd2hhcmRha2UgIDEgT2N0IDk2IDE1OjMwOjQ2CiAgICAtIChwYXJzZS5jLCBwYXJzZS5oKTogRnJvbSBKb2UgTWFyem90OgogICAgICAtIGFsbG93cyB0aGUgQ01VIGxpYiB0byByZXRhaW4gdGhlIFRDIGluZm9ybWF0aW9uIGFzc29jaWF0ZWQgd2l0aCBhCiAgICAgICAgcGFydGljdWxhciBvYmplY3QuIEluIHBhcnRpY3VsYXIgdGhpcyBhbGxvd3MgRGlzcGxheVN0cmluZ3MgdG8gYmUKICAgICAgICBkaWZmZXJlbnRpYXRlZCBmcm9tIE9jdGV0U3RyaW5ncyB3aGVuIHRoZXkgYXJlIGxvb2tlZCB1cCBpbiB0aGUKICAgICAgICBNaWIgVHJlZS4KCndoYXJkYWtlICAxIE9jdCA5NiAxNTo1NDoyMgogICAgLSAoZXh0ZW5zaWJsZS5jKTogaW50IC0+IGRvdWJsZSB0byBzdXBwb3J0IGxhcmdlciBkaXNrIHNpemVzLgoKd2hhcmRha2UgIDEgT2N0IDk2IDE2OjI4OjUyCiAgICAtIChjb25maWcqLCByZWFkX2NvbmZpZy5jKToKICAgICAgLSBDaGVjayBmb3IgbW50ZW50LmggYW5kIGluY2x1ZGUgaXQuCiAgICAgIC0gQ2hlY2sgZm9yIC9ldGMvbW50dGFiIG9yIC9ldGMvbXRhYiBhbmQgdXNlIGFwcHJvcHJpYXRlbHkuCiAgICAtIChyZWFkX2NvbmZpZy5jKToKICAgICAgLSBwaWNrIGdldG1udGVudCBvdmVyIGdldGZzZmlsZSBpZiBib3RoIGFyZSBhdmFpbGFibGUuCiAgICAgIC0gZGVidWcgY2xlYW51cCAob2ZpbGUgLT4gc3RkZXJyLCBjaGVjayBmb3IgRE9ERUJVRyBpbnN0ZWFkIG9mIGNvbnN0IHZhcikuCgp3aGFyZGFrZSAgMyBPY3QgOTYgMTY6MDU6NDcKICAgIC0gKHNubXBfYWdlbnQuYyk6CiAgICAgIC0gTWFrZSBhZ2VudCBwcm9wZXJseSBjaGVjayBzbm1wc2V0IGV4aXQgY29kZXMgYW5kIHVzZSB0aGVtIChvbiBDT01NSVQpLgoKd2hhcmRha2UgIDMgT2N0IDk2IDE2OjA4OjU5CiAgICAtIChwYXNzLmMpOgogICAgICAtIENoZWNrIGZvciBwYXNzdGhydSBleGlzdGFuY2UgYmVmb3JlIHJldHVybmluZyBFUlJfTk9FUlJPUiwgZWxzZQogICAgICAgIHJldHVybiBFUlJfTk9TVUNITkFNRS4KICAgICAgLSBDb3JyZWN0bHkgY2hlY2sgZm9yIGFuZCBwYXNzICJub3Qtd3JpdGFibGUiIGFuZCAid3JvbmctdHlwZSIgcGFzcyByZXR1cm5zLgoKd2hhcmRha2UgIDMgT2N0IDk2IDE2OjEwOjM4CiAgICAtIChzbm1wX2ltcGwuaCk6ICBUdXJuIG9uIG9sZCBDTVUgZGVidWdnaW5nIHN0YXRtZW50cyB3aXRoIC0tZW5hYmxlLWRlYnVnZ2luZy4KCndoYXJkYWtlICA0IE9jdCA5NiAwOTo0Mzo0MAogICAgLSAoRVhBTVBMRS5jb25mLmRlZik6IEFkZGVkIHNubXBnZXQvc2V0IHRvIHBhc3MgZXhhbXBsZS4KCndoYXJkYWtlICA0IE9jdCA5NiAwOTo0NDoyNgogICAgLSAoTWFrZWZpbGUuaW4pOiBSZW1vdmUgc3BhY2VzIGZyb20gc2Vkc2NyaXB0IHdoZW4gdXNpbmcgYnJva2VuIGNwcCAoZ2NjKS4KCndoYXJkYWtlICA0IE9jdCA5NiAwOTo0NjowOQogICAgLSAoc25tcGQuY29uZi41LmRlZik6CiAgICAgIC0gQ2xlYW5lZCB1cCBtYW4gcGFnZSBmb3JtYXR0aW5nLgogICAgICAtIEFkZGVkIG5vdGUgYWJvdXQgU05NUHNldCBjb21tdW5pdHkgc3RyaW5ncy4KICAgICAgLSBtaW5vciBwcm9vZi1yZWFkaW5nIChtYWpvciBwcm9vZmluZyBuZWVkZWQgc3RpbGwpLgogICAgICAtIFJlLW9yZ2FuaXplZCBhIGJpdC4KCndoYXJkYWtlICA0IE9jdCA5NiAxMDowMToyMAogICAgLSAoc25tcGQuY29uZi41LmRlZik6IGxpYiAtPiBsaWIvc25tcCBwYXRoIGNvcnJlY3Rpb24gaW4gRklMRVMgc2VjdGlvbi4KICAgIC0gKHNubXBkLjEuZGVmKToKICAgICAgLSBBZGRlZCBhIEZJTEVTIHNlY3Rpb24uCiAgICAgIC0gR2VuZXJhbCBjbGVhbiB1cC4KCndoYXJkYWtlICA3IE9jdCA5NiAwNzo0MTo0MAogICAgLSAocGFyc2UuYyk6ICBOb3cgbG9hZHMgYWxsIG1pYnMgKGZpbGVzKSBpbiB0aGUgZGlyZWN0b3J5IFNOTVBMSUIvbWlicy4KCndoYXJkYWtlICA3IE9jdCA5NiAwNzo0OTo1OQogICAgLSAocGFyc2UuYyk6ICBQcm9wZXIgYXV0b2NvbmYgZGlyZW50IGhlYWRlcnMuCgp3aGFyZGFrZSAgNyBPY3QgOTYgMDg6MDE6NDMKICAgIC0gKE1ha2VmaWxlLmluKTogTWliIGluc3RhbGxhdGlvbiBjaGFuZ2VkIHRvIHJlZmxlY3QgbmV3IG1pYiBkaXJlY3RvcnkuCgp3aGFyZGFrZSAgNyBPY3QgOTYgMDg6NTM6MDYKICAgIC0gKGNvbmZpZyopOiBjaGVjayBjb3JyZWN0bHkgZm9yIGdldC9zZXRtbnRlbnQuCgp3aGFyZGFrZSAgNyBPY3QgOTYgMDk6MTE6NDMKICAgIC0gKHNubXBfYWdlbnQuYyk6IFJlbW92ZWQgc25tcCB2ZXJzaW9uIGNoZWNrIG9uIGVycm9yIHJldHVybiBmcm9tIHNldC4KCndoYXJkYWtlICA3IE9jdCA5NiAwOToxMjoyMwogICAgLSAocmVhZF9jb25maWcuYyk6IFVzZSBnZXRtbnRlbnQgY29ycmVjdGx5LiAgUGFpbi4KCndoYXJkYWtlICA3IE9jdCA5NiAxMDoyMjo0NwogICAgLSAoTWFrZWZpbGUuaW4pOgogICAgICAtIGFkZGVkIC0tcmVjaGVjayB0byBjb25maWcuc3RhdHVzIGNhbGwgdG8gcmVnZW5lcmF0ZSBzZWxmLgogICAgICAtIENoYW5nZWQgZWNlLW1pYi50eHQgLT4gdWNkLXNubXAudHh0IGFuZCBpbnN0YWxsIChhbmQgZ2VuZXJhdGUpIHByb3Blcmx5LgoKd2hhcmRha2UgIDcgT2N0IDk2IDEwOjIzOjMyCiAgICAtIChleHRlbnNpYmxlLmMpOiBDaG9tcCBuZXdsaW5lIG9uIHVuYW1lIG91dHB1dC4KCndoYXJkYWtlICA3IE9jdCA5NiAxMDoyNDoxMgogICAgLSAocmVhZF9jb25maWcuYyk6IEFkZGVkICdzeXNjb250YWN0JyBhbmQgJ3N5c2xvY2F0aW9uJyBwYXJzaW5nLgoKd2hhcmRha2UgIDcgT2N0IDk2IDExOjAwOjEwCiAgICAtIChjb25maWd1cmUuaW4pOgogICAgICAtIHRpbWVzdGFtcCBzdGFtcC1oIGF0IGVuZC4KICAgICAgLSBlbWFjcyBsb2NhbCB2YXJzLgoKd2hhcmRha2UgIDcgT2N0IDk2IDExOjAxOjI1CiAgICAtIChyZWFkX2NvbmZpZy5jKTogUmVtb3ZlIGV4dHJhIGFyZ3MgZnJvbSBzdHJjcHkgKHdhcyBzdHJuY3B5KS4KCndoYXJkYWtlICA3IE9jdCA5NiAxMTowMjo0NgogICAgLSAoY29uZmlndXJlLmluKToKICAgICAgLSB0aW1lc3RhbXAgc3RhbXAtaCBhdCBlbmQuCiAgICAgIC0gZW1hY3MgbG9jYWwgdmFycy4KCndoYXJkYWtlICA3IE9jdCA5NiAxMjoyMzowNQogICAgLSAoc25tcGQuMS5kZWYpOiBDaGFuZ2VkIHRvIHJlZmxlY3QgU05NUExJQi9taWJzLgoKd2hhcmRha2UgIDcgT2N0IDk2IDEyOjIzOjI3CiAgICAtIChzbm1wZC5jb25mLjUuZGVmKTogQWRkZWQgc3lzY29udGFjdCBhbmQgc3lzbG9jYXRpb24uCgp3aGFyZGFrZSAgOSBPY3QgOTYgMDg6MDQ6MTQKICAgIC0gKHBhcnNlLmMpOgogICAgICAtIFBhcnNlIE9CSkVDVC1JREVOVFkgYXMgT0JKRUNULUdST1VQIChzYXZlcyBvbmx5IGRlc2NyaXB0aW9uKS4KICAgICAgLSBDaGFuZ2UgcHJpbnRfZXJyb3IoKSwgcmVhZF9taWIoKSB0byByZWZsZWN0IGZpbGUgYW5kIGNvcnJlY3QgbGluZSBudW1iZXIuCgp3aGFyZGFrZSAgOSBPY3QgOTYgMDg6MzA6MjkKICAgIC0gKHBhcnNlLmMpOgogICAgICAtIHByaW50IGEgbmV3IGxpbmUgaW4gcHJpbnRfZXJyb3IoKSBpZiBkZWJ1Z2dpbmcgaXMgdHVybmVkIG9uLgogICAgICAtIHRvc3NPYmplY3RJZGVudGlmaWVyKCk6IGNhdGNoIG11bHRpcGxlIGJyYWNrZXQgY2xhdXNlcyAoSUUgeyB7MCAwfSB9ICkuCgp3aGFyZGFrZSAgOSBPY3QgOTYgMTQ6MzY6MDMKICAgIC0gKHJlYWRfY29uZmlnLmMpOgogICAgICAtIHN0cm5jbXAgLT4gc3RybmNhc2VjbXAuCiAgICAgIC0gTlVMTCAtPiAwLgoKd2hhcmRha2UgIDkgT2N0IDk2IDE0OjM4OjA1CiAgICAtIChleHRlbnNpYmxlLmMpOgogICAgICAtIHNvcnQgcGFzcyB0aHJ1cyBieSBtaWJvaWQgdG8gcHJldmVudCBwYXNzaW5nIG9mZiB0byB3cm9uZyBvbmUuCiAgICAgIC0gdHlwb3M6ICBleHN0ZW4gLT4gZXh0ZW4uCiAgICAgIC0gaW5pdF9leHRlbnNpYmxlKCkgY2FsbHMgdXBkYXRlX2NvbmZpZygpIHRvIHJlZHVjZSBkdXBsaWNhdGlvbnMuCgp3aGFyZGFrZSAgOSBPY3QgOTYgMTU6MTg6NDIKICAgIC0gKHNubXBfYXBpLmMpOiBGcm9tOiBnYWhAYmVsbGNvcmUuY29tIChHYXJ5IEEuIEhheXdhcmQpCiAgICAgIC0gRnJlZSBwZHUgY29tbXVuaXR5IHRvIHF1ZWxjaCBwdXJpZnkuCgp3aGFyZGFrZSAgOSBPY3QgOTYgMTU6MjI6MjMKICAgIC0gKFJFQURNRSk6IEFkZGVkIHRoYW5rcyBuYW1lLgoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKQ2hhbmdlczogVjMuMSAtPiBWMy4xLjAuMQoKd2hhcmRha2UgMjYgQXVnIDk2IDEwOjM2OjA4CiAgICAtIChORVdTKSBUeXBvLCBleHRyYSBxdW90YXRpb24gbWFyay4KCndoYXJkYWtlIDI2IEF1ZyA5NiAxMDozNzowNQogICAgLSAoVE9ETykgRXh0cmEgbWliIHBhcnNpbmcgaWRlYXMgYWRkZWQuCgp3aGFyZGFrZSAyNiBBdWcgOTYgMTA6Mzc6MzYKICAgIC0gKGVjZS1taWIuZGVmKTogIGNvbW1hcyBvdXQgb2YgcGxhY2UuCgp3aGFyZGFrZSAyNiBBdWcgOTYgMTY6NTU6NTEKICAgIC0gKHNubXBfYXBpLmMpOiBGaXhlZCBhIGdjYy9GcmVlQlNEIG9wdGltaXphdGlvbiBidWcgKHN0dXBpZCBjb21waWxlcikKCndoYXJkYWtlIDI2IEF1ZyA5NiAxNjo1ODowMwogICAgLSAoZXZlbnQuYywga2VybmVsLmMsIHJvdXRlX3dyaXRlLmMpOiBGcmVlQlNEIG1vZGlmaWNhdGlvbnMKCndoYXJkYWtlIDI3IEF1ZyA5NiAwODo0Njo0MwogICAgLSAoZXh0ZW5zaWJsZS5jKTogIEZyZWVCU0QgY2hhbmdlcyBhbmQgdXNlIGdldGxvYWRhdmcgaWYgYXZhaWxhYmxlLgoKd2hhcmRha2UgMjcgQXVnIDk2IDA4OjQ3OjU3CiAgICAtIChzbm1wdHJhcGQuYyk6IEZpeCBieXRlIG9yZGVyIHByb2JsZW0gKGNvbnZlcnQgdG8gbmV0d29yayBiZWZvcmUgc2VuZGluZykuCgp3aGFyZGFrZSAyNyBBdWcgOTYgMDk6MDE6MTAKICAgIC0gKHNubXB0cmFwLmMpOgogICAgICAtIEZyZWVCU0Qgc3BlY2lmaWMgY2hhbmdlcy4KICAgICAgLSBtb3JlIGF1dG9jb25mIGNvbXBsZXRlOiBwYXRocyB0byBsaWJyYXJpZXMgYW5kIGtlcm5lbCBsb2NhdGlvbi4KCndoYXJkYWtlIDI3IEF1ZyA5NiAwOTozODozMwogICAgLSAoc25tcF92YXJfcm91dGUuYyk6IEZyZWVCU0Qgc3BlY2lmaWMgY2hhbmdlcy4KCndoYXJkYWtlIDI3IEF1ZyA5NiAxMDowMDoxNQogICAgLSAoc25tcF92YXJzLmMpOiBNb3JlIHdhcnBlZCBGcmVlQlNEIGNoYW5nZXMKCndoYXJkYWtlIDI3IEF1ZyA5NiAxMDowNDo1NgogICAgLSAoYXV0b2NvbmYqKToKICAgICAgLSBGcmVlQlNEIGFkZGl0aW9ucy4KICAgICAgLSBOZXcga2VybmVsIGxvY2F0aW9uOiAgL2tlcm5lbCAoaWNrKS4KICAgICAgLSBMb2cgZmlsZSBkZWZhdWx0IGludGVsbGlnZW50bHkgY2hlY2tzIGZvciAvdmFyL2xvZyBhbmQgL3Vzci9hZG0uCiAgICAgIC0gQ2hlY2tzIGZvciBnZXRsb2FkYXZnKCkuCgp3aGFyZGFrZSAyOSBBdWcgOTYgMTQ6NDI6MjAKICAgIC0gKGV4dGVuc2libGUvKi5jKTogUGF0Y2ggZnJvbSBOaWVscyBCYWdnZXNlbiA8cmVjbmJhQG1lZGlhdG9yLnVuaS1jLmRrPgogICAgICAtIGNsZWFuZWQgdXAgZ2NjIHdhcm5pbmdzLgogICAgICAtIGZpeGVkIGEgc3BlbGxpbmcgZXJyb3IuCgp3aGFyZGFrZSAyOSBBdWcgOTYgMTQ6NTk6NTUKICAgIC0gKGFwcHMvKi5jKTogUGF0Y2ggZnJvbSBOaWVscyBCYWdnZXNlbiA8cmVjbmJhQG1lZGlhdG9yLnVuaS1jLmRrPgogICAgICAtIHNldCBleGl0IGNvZGVzIG9mIDAgZm9yIGFsbCBhcHBzLgogICAgICAtIFJlbW92ZWQgU1ZSNCAjaWZkZWZzLgogICAgICAtIEdyZWF0bHkgaW1wcm92ZWQgc25tcHRyYXAuCgp3aGFyZGFrZSAyOSBBdWcgOTYgMTU6MDM6MTIKICAgIC0gKG1hbi9zbm1wdHJhcC4xKTogIGFkZGVkIGJ5IE5pZWxzIEJhZ2dlc2VuIDxyZWNuYmFAbWVkaWF0b3IudW5pLWMuZGs+Cgp3aGFyZGFrZSAyOSBBdWcgOTYgMTU6MDY6MjEKICAgIC0gKGFzbjEuYyk6IFBhdGNoIGZyb20gTmllbHMgQmFnZ2VzZW4gPHJlY25iYUBtZWRpYXRvci51bmktYy5kaz4KICAgICAgLSB1Y2hhcihzKSBjYW4ndCBiZSBsZXNzIHRoYW4gMC4KCndoYXJkYWtlIDI5IEF1ZyA5NiAxNTowNjo1MAogICAgLSAobWliLmMpOiBQYXRjaCBmcm9tIE5pZWxzIEJhZ2dlc2VuIDxyZWNuYmFAbWVkaWF0b3IudW5pLWMuZGs+CiAgICAgIC0gcHJvdG90eXBlcyBmb3IgZ2NjIHdhcm5pbmdzCgp3aGFyZGFrZSAyOSBBdWcgOTYgMTU6MDc6NTYKICAgIC0gKHBhcnNlLmMpOiBQYXRjaCBmcm9tIE5pZWxzIEJhZ2dlc2VuIDxyZWNuYmFAbWVkaWF0b3IudW5pLWMuZGs+CiAgICAgIC0gc2F2ZSBtaWIgZGVzY3JpcHRpb25zIGZvciBzbm1wdHJhbnNsYXRlIGFuZCBvdGhlciBhcHBzIHRoYXQgbmVlZCBpdC4KCndoYXJkYWtlIDI5IEF1ZyA5NiAxNTowODoyOAogICAgLSAoc25tcF9hcGkuYyk6IFBhdGNoIGZyb20gTmllbHMgQmFnZ2VzZW4gPHJlY25iYUBtZWRpYXRvci51bmktYy5kaz4KICAgICAgLSBnY2Mgd2FybmluZ3MgTlVMTCAtPiAwCgp3aGFyZGFrZSAyOSBBdWcgOTYgMTU6NTg6MTAKICAgIC0gKHNubXBzdGF0dXMuYyk6IFBhdGNoIGZyb20gVHJldm9yIEJvdXJnZXQgPHRib3VyZ2V0QHF1YWxjb21tLmNvbT4KICAgICAgLSBtYWxsb2Mgc3lzZGVzYyBpbnN0ZWFkIG9mIGFzc3VtaW5nIDwgMTI4IGJ5dGVzLgoKd2hhcmRha2UgMjkgQXVnIDk2IDE2OjAzOjQ0CiAgICAtIChzbm1wd2Fsay5jKTogUmVtb3ZlZCBTVlI0IGlmZGVmcwoKd2hhcmRha2UgMjkgQXVnIDk2IDE2OjIyOjI1CiAgICAtIChhdXRvY29uZiosIHNubXBfdmFycy5jKTogUmVtb3ZlZCBzb21lIHNvbGFyaXMgaWZkZWZzLgoKd2hhcmRha2UgMjkgQXVnIDk2IDE2OjI5OjEwCiAgICAtIENoYW5nZWQgbXkgZW1haWwgYWRkcmVzcyB0byBteSBuZXcgb25lLgoKd2hhcmRha2UgMzAgQXVnIDk2IDA5OjIzOjA1CiAgICAtIChjb25maWd1cmUsIGNvbmZpZ3VyZS5pbik6CiAgICAgIC0gcmVtb3ZlZCAtWHMgZmxhZyBmb3IgZ2NjIG9uIHNvbGFyaXMuCiAgICAgIC0gbG9nZmlsZSBjaGVja3MgZm9yIGV4aXN0YW5jZSBvZiAvdmFyL2xvZyBhbmQgL3Vzci9hZG0uCgp3aGFyZGFrZSAzMCBBdWcgOTYgMDk6MjM6NDIKICAgIC0gKHNubXB0cmFwLmMpOiBwYXRjaCBzY3Jld2VkIHVwLgoKd2hhcmRha2UgMzAgQXVnIDk2IDA5OjI0OjMxCiAgICAtIChhcHBzL01ha2VmaWxlLmluKTogIEFkZGVkIGtlcm5lbF9zdW5vczUubyB0byBzbm1wdHJhcCBmb3IgZ2V0S3N0YXQuCgkKd2hhcmRha2UgMzAgQXVnIDk2IDA5OjM0OjA5CiAgICAtIChORVdTLCBDaGFuZ2VMb2cpOiBVcGRhdGVkIGZvciAzLjEuMC4xCgp3aGFyZGFrZSAzMCBBdWcgOTYgMDk6MzQ6NDgKICAgIHZlcnNpb24gdGFnICggMy4xLjAuMSApCgp3aGFyZGFrZSAzMCBBdWcgOTYgMTA6MTU6MTgKICAgIC0gKFJFQURNRSk6IFVwZGF0ZWQgZm9yIDMuMS4wLjEKCndoYXJkYWtlIDMwIEF1ZyA5NiAxMTo0OTozOAogICAgLSAoc25tcF92YXJzLmMpOiByZW1vdmVkIG1hbGxvYyBwcm90b3R5cGUgZHVlIHRvIGNvbmZsaWN0aW9ucy4KCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCkNoYW5nZXM6IFYzLjAuNy4yIC0+IFYzLjEKCmhhcmRha2VyICAzIE1heSA5NiAxNDozNDowMwogICAgLSAoYWNjb25maWcuaCwgY29uZmlndXJlLmluLCBzbm1wbGliL01ha2VmaWxlLmluKQogICAgICAtIEFkZGVkIGEgY2hlY2sgZm9yIHZhcmlvdXMgcmFuZG9tIGZ1bmN0aW9ucy4KICAgICAgLSBJbmNsdWRlZCBhbm90aGVyIGlmZGVmIHRvIGVuc3VyZSBubyAjZGVmaW5lIGxvb3BzIG9jY3VyIHdpdGggc3RyL2luZGV4IGZucy4KCmhhcmRha2VyICAzIE1heSA5NiAxNDozNToyNwogICAgLSAoYWdlbnQvc25tcF92YXJfcm91dGUuYyxzbm1wX3ZhcnMuYykKICAgICAgLSBDaGFuZ2VkIHRoZSBpbnRlcmZhY2UgY291bnRlciB0byBhIHNob3J0IGZvciBhbGwgYXJjaGl0ZWN0dXJlcyAoYnVzIGVycikKICAgICAgLSBVbmRlZmVkIGEgZnVuY3Rpb24gdGhhdCBpcyBuZXZlciB1c2VkLgoKaGFyZGFrZXIgIDMgTWF5IDk2IDE0OjM3OjE3CiAgICAtIChhZ2VudC9zbm1wX3ZhcnMuYykgU29sYXJpcyBmaXggZm9yIGludGVyZmFjZXMuCiAgICAgIC0gRnJvbSBEYW4gQS4gRGlja2V5IDxkZGlja2V5QHRyYW5zaXRpb24uY29tPgoKaGFyZGFrZXIgIDMgTWF5IDk2IDE0OjQwOjE4CiAgICAtIChhcHBzL3NubXB0cmFwLmMpIEFkZGVkICNpbmNsdWRlPHN5cy9zb2NraW8uaD4KCmhhcmRha2VyICA5IE1heSA5NiAxMzoyNDowMAogICAgLSAoYXBwcy9zbm1wc2V0LmMpIEFkZGVkICcuJyBhcyBhIGRlbGltaXRlciBmb3IgZGVjaW1hbCBlbmNvZGVkIHN0cmluZ3MuCgpoYXJkYWtlciAgOSBNYXkgOTYgMTM6Mjc6NDAKICAgIC0gKGFjY29uZmlnLmgsIGNvbmZpZ3VyZS5pbiwgc25tcGxpYi9NYWtlZmlsZS5pbikKICAgICAgLSBBZGRlZCBhIGNoZWNrIGZvciB2YXJpb3VzIHJhbmRvbSBmdW5jdGlvbnMuCiAgICAgIC0gSW5jbHVkZWQgYW5vdGhlciBpZmRlZiB0byBlbnN1cmUgbm8gI2RlZmluZSBsb29wcyBvY2N1ciB3aXRoIHN0ci9pbmRleCBmbnMuCgpoYXJkYWtlciAgOSBNYXkgOTYgMTM6MzM6MTIKICAgIC0gKGFjY29uZmlnLmgsYWdlbnQve01ha2VmaWxlLHNubXBfdmFycy5jfSxhZ2VudC9leHRlbnNpYmxlL21hbnkpOgogICAgICAtIEFkZGVkIHN1cHBvcnQgZm9yIHBhc3N0aHJ1IG1pYnMuICBUb3RhbCBjb250cm9sIGlzIGhhbmRlZCB0byBleGVjJ3MuCgpoYXJkYWtlciAgOSBNYXkgOTYgMTY6MTQ6MjgKICAgIC0gKGNvbmZpZ3VyZS5pbik6IFNvbGFyaXMgc3BlY2lmaWMgY3BwIGZsYWdzIGFkZGVkIGZvciBTVU5zcHJvJ3MgY3BwLgogICAgLSAoYWdlbnQve3NubXBfdmFycyxzbm1wZH0uYyxhZ2VudC9leHRlbnNpYmxlL3tleHRlbnNpYmxlLG1pc2MscGFzc30uYywKICAgICAgIHNubXBsaWIve21pYixzbm1wX2NsaWVudH0uYyk6CiAgICAgIC0gQ2xlYW5lZCB1cCBwcm90b3R5cGVzIHRvIG1hdGNoIG1vcmUgY2FyZWZ1bGx5ICh3aXRoIFNvbGFyaXMncyBzcHJvIGNjKS4KCmhhcmRha2VyIDEwIE1heSA5NiAxMDoyNzoxNAogICAgLSAoa2VybmVsX3N1bm9zNS5jKTogQSBwYXRjaCB0byBmaXggYSB2aXJ0dWFsIGludGVyZmFjZSBwcm9ibGVtLgogICAgICAtIHBhdGNoIHN1cHBsaWVkIGJ5ICJEYW4gQS4gRGlja2V5IiA8ZGRpY2tleUB0cmFuc2l0aW9uLmNvbT4KCmhhcmRha2VyIDEwIE1heSA5NiAxODoxNjo1NwogICAgLSAobWFueSk6IE1lcmVnZWQgYmFnZ2VzZW4tMy0wLTctMiBicmFuY2ggaW50byBtYWluIHRydW5rLgoKaGFyZGFrZXIgMTMgTWF5IDk2IDE1OjU2OjQ1CiAgICAtIChhZ2VudC9leHRlbnNpYmxlL21pc2MuYyk6IGV4ZWMgTmFtZXMgd2VyZSBnZXR0aW5nIGluY2x1ZGVkIGluIHRoZSBjb21tYW5kLgoKaGFyZGFrZXIgMTMgTWF5IDk2IDE1OjU3OjQzCiAgICAtIChhZ2VudC9leHRlbnNpYmxlL21pc2MuYyk6IGNsb3NlIGZpbGUgZGVzY3JpcHRvcnMgYmVmb3JlIHJlLXN0YXJ0aW5nIGFnZW50LgoKaGFyZGFrZXIgMTMgTWF5IDk2IDE1OjU4OjQ0CiAgICAtIChhZ2VudC9zbm1wX2FnZW50LmMsIGFnZW50L3NubXBfdmFycy5jLCBhZ2VudC9leHRlbnNpYmxlL2V4dGVuc2libGUuYyk6CiAgICAgIC0gQnVnIGZpeDogR0xPQkFMU0VDVVJJVFkgYnVnOiAgc2F2ZSByaWdodG1vc3QgdHdvIGJpdHMgaW4gYWNsLgoKaGFyZGFrZXIgMTMgTWF5IDk2IDE1OjU5OjMwCiAgICAtIChzbm1wbGliL3NubXBfaW1wbC5oKTogQ2hhbmdlIFJXUklURSB0byBpbmNsdWRlIFdyaXRlIGZvciBWMiBiaXRzLgoKaGFyZGFrZXIgMTUgTWF5IDk2IDA4OjU5OjUxCiAgICAtIChhZ2VudC9leHRlbnNpYmxlL3Bhc3MuYykgUGF0Y2ggZnJvbSBOaWVscyBCYWdnZXNlbiA8cmVjbmJhQG1lZGlhdG9yLnVuaS1jLmRrPgogICAgICAtIEltcGxlbWVudGVkIG1pc3NpbmcgcGFydHMgb2YgaW50ZXJmYWNlIGFkZHJlc3MgYW5kIG5ldHdvcmsgb3V0cHV0ICgtaSkKCmhhcmRha2VyIDE1IE1heSA5NiAwOTowMjoyNAogICAgLSAoYWdlbnQva2VybmVsX3N1bm9zNS5jKSBQYXRjaCBmcm9tICJEYW4gQS4gRGlja2V5IiA8ZGRpY2tleUB0cmFuc2l0aW9uLmNvbT4KICAgICAgLSBCZXR0ZXIgY2FjaGluZyBhbGdvcml0aG0gZm9yIGltcHJvdmVkIHNwZWVkLgoKaGFyZGFrZXIgMTUgTWF5IDk2IDA5OjA1OjQ5CiAgICAtICgqLy5jdnNpZ25vcmUpIGlnbm9yZSBmaWxlIHVwZGF0ZS4KCmhhcmRha2VyIDE1IE1heSA5NiAwOTowNjo0OQogICAgLSAoTWFrZWZpbGUuaW4sc2Vkc2NyaXB0LmluKSBBZGRlZCBQUkVGSVggdG8gdGhlIHNlZHNjcmlwdC4KCmhhcmRha2VyIDE1IE1heSA5NiAwOTowNzozNQogICAgLSAoRVhBTVBMRS5jb25mLmRlZiwgbWFuL3NubXBkLmNvbmYuNS5kZWYpOiBkb2N1bWVudGVkIHBhc3MgdGhydSBtaWJzLgoKaGFyZGFrZXIgMTUgTWF5IDk2IDA5OjI5OjIxCiAgICAtIChDT1BZSU5HLCBSRUFETUUsIFRPRE8pIFJlbGVhc2UgZG9jcyB1cGRhdGVkLgoKaGFyZGFrZXIgMTUgTWF5IDk2IDA5OjUwOjE1CiAgICAtIChhZ2VudC9rZXJuZWxfc3Vub3M1LmMpIHBhdGNoIG1pc3Rha2UuCgpoYXJkYWtlciAxNSBNYXkgOTYgMDk6NTE6MTIKICAgIC0gKGFnZW50L2V4dGVuc2libGUvcmVhZF9jb25maWcuYyk6IGFuc2kgc2VtYW50aWMgZml4IGZvciAnPCcuCgpoYXJkYWtlciAxNSBNYXkgOTYgMDk6NTE6MzcKICAgIHZlcnNpb24gdGFnICggMy4xLkExICkKCmhhcmRha2VyIDE1IE1heSA5NiAxMjowMDo1NwogICAgLSAoSU5TVEFMTCkgbWFrZSBpbnN0YWxsIGFzIHJvb3QuCgpoYXJkYWtlciAxNSBNYXkgOTYgMTI6MDM6NTQKICAgIC0gKFJFQURNRSkgQWRkZWQgYSBub3RlIChwb2ludGVyIHRvIGRvY3MpIG9uIHRoZSBhZ2VudCdzIGV4dGVuc2libGl0eS4KCmhhcmRha2VyIDE1IE1heSA5NiAxMjoyMzo0MAogICAgLSAoYXBwcy9zbm1wbmV0c3RhdC9pZi5jKSByZW1vdmVkICYgaW4gZnJvbnQgb2YgYXJyYXkgcGFzc2VkIGFzIGFyZy4KCmhhcmRha2VyIDE1IE1heSA5NiAxMjozNToxNgogICAgLSAoc2Vkc2NyaXB0LmluKSBGaXhlZCBhIGhvcnJpYmxlIHR5cG8uICBQIC0+IFBSRUZJWAoKaGFyZGFrZXIgMjIgTWF5IDk2IDA4OjUwOjI4CiAgICAtIChtYW4vTWFrZWZpbGUuaW4pIFVwZGF0ZWQgdGhlIHdheSBzZWRzY3JpcHQgaXMgdXNlZC4KCmhhcmRha2VyIDIyIE1heSA5NiAwODo1MTowMQogICAgLSAoY29uZmlnLmd1ZXNzLCBjb25maWd1cmUsIGluc3RhbGwtc2gsIG1raW5zdGFsbGRpcnMpOiBBdXRvY29uZi0yLjEwCgpoYXJkYWtlciAyMiBNYXkgOTYgMTI6NTA6MjQKICAgIC0gKGFnZW50L2tlcm5lbF9zdW5vczUuYywgc25tcF92YXJzLmMsCiAgICAgICBhZ2VudC9leHRlbnNpYmxlL2V4dGVuc2libGUuYyxyZWFkY29uZmlnLmMsc25tcF92YXJzLmMpOgogICAgICAtIFBhdGNoIGZyb20gTmllbHMgQmFnZ2VzZW4gPHJlY25iYUBtZWRpYXRvci51bmktYy5kaz46CiAgICAgICAgLSBmaW5hbGx5IG5haWxlZCB0aGF0IG1pc3NpbmcgaW5pdGlhbGl6YXRpb24gdGhhdCBnYXZlIHByb2JsZW1zCiAgICAgICAgICB3aXRoIHRoZSBBVCBzdWJ0cmVlCiAgICAgICAgLSBJIGFsc28gaW1wbGVtZW50ZWQgdGhlIGRpc2sgcGFydCBvZiB0aGUgZXh0ZW5zaWJpbGl0eSBpbiB0aGUKICAgICAgICAgIGF0dGFjaGVkIHBhdGNoLgoKaGFyZGFrZXIgMjIgTWF5IDk2IDEyOjU1OjMzCiAgICAtIChhcHBzL3NubXBuZXRzdGF0L2lmLmMpOiBQYXRjaCBmcm9tIE5pZWxzIEJhZ2dlc2VuIDxyZWNuYmFAbWVkaWF0b3IudW5pLWMuZGs+CiAgICAgIC0gcmV3b3JrZWQgdGhlIHdheSBzbm1wbmV0c3RhdCAtaSB3b3Jrcy4KCmhhcmRha2VyIDIzIE1heSA5NiAxNDo0Mzo0OQogICAgLSAoYWNjb25maWcuaCwgY29uZmlnLmguaW4pOiBEb24ndCBkZWZpbmUgcmFuZG9tIGlmIGl0IGFscmVhZHkgZXhpc3RzLgoKaGFyZGFrZXIgMjMgTWF5IDk2IDE0OjQ0OjE1CiAgICAtIChleHRlbnNpYmxlLmMpOiAgQWRkZWQgYSBkaXNrIHdhcm5pbmcgdG8gc3RkZXJyLgoKaGFyZGFrZXIgMjMgTWF5IDk2IDE0OjQ0OjM5CiAgICAtIChhY2wuYywgcGFydHkuYywgdmlldy5jKTogcmVtb3ZlZCBOVUxMIGRlZmluZXMuCgpoYXJkYWtlciAyMyBNYXkgOTYgMTQ6NTY6NDIKICAgIC0gKGlmLmMpOiB0eXBlIGNhc3RpbmcgYnVncy4KCmhhcmRha2VyIDIzIE1heSA5NiAxNjoyODowOAogICAgLSAoYWNsLmMsIHBhcnR5LmMpOiBpbmNsdWRlIHN0ZGlvLmgKCmhhcmRha2VyIDIzIE1heSA5NiAxNzowOToyNAogICAgLSAoY29uZmlnKiwgZXh0ZW5zaWJsZS5jKTogZml4ZWQgZGlzayBjaGVja3Mgb24gU29sYXJpcyBhbmQgYWxwaGEncwogICAgICAtIHVzZSBzdGF0dmZzIG92ZXIgZnN0YWIgaWYgYm90aCBwcmVzZW50LgoKaGFyZGFrZXIgMjMgTWF5IDk2IDE3OjQ4OjA5CiAgICAtIChjb25maWcqKTogY2hlY2sgZm9yIGdldG1udGVudC4KCmhhcmRha2VyIDI0IE1heSA5NiAxMjoyMzo1MgogICAgLSAoc25tcGxpYi9wYXJzZS5jKTogIHBhcnNpbmcgZml4ZXMgZnJvbSBNaWtlIFBlcmlrIDxtaWtlcEBjcnQuY29tPgoKaGFyZGFrZXIgMjQgTWF5IDk2IDEyOjM5OjUxCiAgICAtIChSRUFETUUpOiBBZGRlZCBhIHRoYW5rcyBzZWN0aW9uLgoKaGFyZGFrZXIgMjQgTWF5IDk2IDEzOjA4OjI4CiAgICAtIChFWEFNUExFLmNvbmYuZGVmKTogbWlub3IgZXhhbXBsZSBmaWxlIGNoYW5nZXMuCgpoYXJkYWtlciAyNCBNYXkgOTYgMTM6MDk6MDIKICAgIC0gKGNvbmZpZyopOiAgQ2hlY2sgZm9yIHN5cy9tbnR0YWIuaAoKaGFyZGFrZXIgMjQgTWF5IDk2IDEzOjA5OjUyCiAgICAtIChyZWFkX2NvbmZpZy5jKTogaWZkZWYgY2xlYW51cAoKaGFyZGFrZXIgMjQgTWF5IDk2IDEzOjEwOjM0CiAgICAtIChwYXJzZS5jKTogZGVjbGFyYXRpb25zIGNsZWFudXAKCmhhcmRha2VyIDI0IE1heSA5NiAxMzoxMzoyMQogICAgLSAoc25tcGQuY29uZi41LmRlZik6ICBub3RlIG9uIGNyZWF0aW5nIGNvbW1lbnRzIGFkZGVkLgoKaGFyZGFrZXIgMjQgTWF5IDk2IDEzOjM4OjQ2CiAgICAtIChyZWFkX2NvbmZpZy5jKTogI2lmZGVmIHR5cG8KCmhhcmRha2VyIDI0IE1heSA5NiAxMzo1NDoyNQogICAgLSAoYWNjb25maWcuaCwgY29uZmlnLmguaW4pOiAgZGVmaW5lIG1lbW1vdmUgaWYgbm90IGRlZmluZWQgYW5kIG1lbWNweSBpcy4KCmhhcmRha2VyIDI0IE1heSA5NiAxMzo1NToxNAogICAgLSAoaWYuYywgcm91dGUuYyk6IGNhc3QgcmV0dXJucyBmcm9tIGluZGV4IHRvIGNoYXIgKi4KCmhhcmRha2VyIDI0IE1heSA5NiAxNDowMjo1MwogICAgLSAoY29uZmlnKik6IGNoZWNrIGZvciBtZW1tb3ZlIGJlZm9yZSB5b3UgZGVmaW5lIGl0LgoKaGFyZGFrZXIgMjQgTWF5IDk2IDE0OjUzOjIwCiAgICAtIChyZWFkX2NvbmZpZy5jKTogcHJpbnRmIC0+IERPREVCVUcgY2hlY2sKCmhhcmRha2VyIDI0IE1heSA5NiAxNToyODo0MQogICAgLSAoYWNjY29uZmlnLmgsIGNvbmZpZy5oLmluKTogI2lmZGVmIHR5cG9zCgpoYXJkYWtlciAyNCBNYXkgOTYgMTU6Mjk6MTMKICAgIC0gKHNubXBfdmFycy5jKTogcmVtb3ZlZCBzb21lIGlmZGVmIHJlcXVpcmVtZW50cy4KCmhhcmRha2VyIDI0IE1heSA5NiAxNToyOToyOQogICAgLSAoc25tcF92YXJzLmgpOiByZW9yZ2FuaXplZAoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKQ2hhbmdlczogIFYzLjAuNy4xIC0+IFYzLjAuNy4yCgpOaWVscyBCYWdnZXNlbiA8cmVjbmJhQG1lZGlhdG9yLnVuaS1jLmRrPiAxIE1heSA5NiAxMjozNzozNQogICAgLSAobWFueSkgRml4ZXMgZm9yIFNvbGFyaXMgKDIuNSkgc3VibWl0dGVkIGJ5CiAgICAgICAgICAgICBOaWVscyBCYWdnZXNlbiA8cmVjbmJhQG1lZGlhdG9yLnVuaS1jLmRrPjoKICAgICAgICAiU29tZSBhcmUgbXkgb3duLCBvdGhlcnMgYXJlIGZyb20gWXVyaSBSYWJvdmVyIHdobyBvcmlnaW5hbGx5CiAgICAgICAgIGNyZWF0ZWQgdGhlIHBhdGNoLiBTb21lIG9mIHRoaXMgaXMgdGhlcmUgdG8gZWxpbWluYXRlIHRoZQogICAgICAgICBkZXBlbmRlbmN5IG9uIHRoZSB1Y2JsaWIgY29tcGF0aWJpbGl0eSBzdHVmZiwgc29tZSBpcyAiY29zbWV0aWMiLAogICAgICAgICBidXQgaXQgYWxzbyBmaXhlcyBhIHNlcmlvdXMgcHJvYmxlbSBpbiB0aGUgYWdlbnQsIHdoZXJlIHdhbGtpbmcKICAgICAgICAgdGhlIG1pYiB0cmVlIGNhbiBsb29wIGVuZGxlc3NseSBpZiB5b3UgaGF2ZSBtdWx0aXBsZSBuZXR3b3JrCiAgICAgICAgIGludGVyZmFjZXMuIgoKaGFyZGFrZXIgIDEgTWF5IDk2IDEzOjU0OjE4CiAgICAtIChjb25maWd1cmUqLCBhZ2VudC9leHRlbnNpYmxlL3tyZWFkX2NvbmZpZyxleHRlbmlzYmxlfS5jKToKICAgICAgLSBjb25maWd1cmlmaWVkIChuZXcgd29yZCkgc29tZSBvZiBOaWVscycgY2hhbmdlcyBhbmQgdGhlIGJjb3B5L21lbW1vdmUgc3R1ZmYuCgpoYXJkYWtlciAgMSBNYXkgOTYgMTM6NTU6MTYKICAgIC0gKG1hbi9zbm1wZC4xLmRlZixzbm1wZC5jb25mLjUuZGVmKSAuQyAtPiAuQiwgdG8gaW5jcmVhc2UgbnJvZmYgcG9ydGFiaWxpdHkuCgpoYXJkYWtlciAgMSBNYXkgOTYgMTQ6MzU6MjMKICAgIC0gKGFnZW50L3JvdXRlX3dyaXRlLmMsYWdlbnQvZXh0ZW5zaWJsZS9leHRlbnNpYmxlLmMpOgogICAgICAtIG5ldGJzZDEuMUIgc3BlY2lmaWMgZml4ZXM6IGNsYXNoIHdpdGggc3lzX2Vycmxpc3QgYW5kIHJ0X2RzdCBkZWZpbmVzLgoKaGFyZGFrZXIgIDEgTWF5IDk2IDE0OjM3OjA5CiAgICAtIChsb2NhbC9zbm1wY2hlY2spIFRrLWIxMCBmaXhlcy4KCmhhcmRha2VyICAxIE1heSA5NiAxNDozNzoyNQogICAgLSAoc2Vkc2NyaXB0LmluKSBmb3Jnb3QgTkVUQlNEMUlEIGRlZi4KCmhhcmRha2VyICAxIE1heSA5NiAxNDo1NjoyMQogICAgLSAoYWNjb25maWcuaCxhZ2VudC9leHRlbnNpYmxlL21pYmRlZnMuaCk6IHJlbW92ZWQgY29tZW50cy9zcGFjZXMgZnJvbSBkZWZpbmVzLgoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKQ2hhbmdlczogIFYzLjAuNyAtPiBWMy4wLjcuMQoKaGFyZGFrZXIgMjUgQXByIDk2IDEyOjE4OjQzCiAgICAtIChDaGFuZ2VMb2csIGFjY29uZmlnLmgsIGNvbmZpZy5oLmluKSBEZWZpbmVkIERFQlVHUCBpZiBET0RFQlVHIGlzIG5vdCBkZWZpbmVkLgoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKQ2hhbmdlczogIFYzLjAuNiAtPiBWMy4wLjcKCmhhcmRha2VyICA1IEFwciA5NiAxNjoxMTozOQogICAgLSAobG9jYWwvc25tcGNoZWNrLmRlZikgVGstYjggPT4gVGstYjEwIGNoYW5nZXMKCmhhcmRha2VyICA1IEFwciA5NiAxNjoxMjoyMgogICAgLSAoY29uZmlndXJlKSBhdXRvY29uZi0yLjcgLT4gYXV0b2NvbmYtMi45CgpoYXJkYWtlciAgNSBBcHIgOTYgMTY6MTU6MTEKICAgIC0gKHNubXBsaWIvYXNuMS5jKSByZW1vdmVkIGEgcmVxdWlyZWQgJ3VuaXgnIGRlZmluZSBzdXJyb3VuZGluZyBhIGhlYWRlciBmaWxlLgoKaGFyZGFrZXIgIDUgQXByIDk2IDE2OjE5OjM1CiAgICAtIChtYW4vTWFrZWZpbGUuaW4pIEFkZGVkIGEgJ2NsZWFuJyBkZWZpbml0aW9uIHRvIHRoZSBNYWtlZmlsZS4KCmhhcmRha2VyIDEyIEFwciA5NiAxNDo1MTowOAogICAgLSBDaGFuZ2VkIG5saXN0IHdhcm5pbmdzIHRvIG9ubHkgcHJpbnQgaWYgRE9ERUJVRyBpcyBkZWZpbmVkIGluIGNvbmZpZy5oCgpoYXJkYWtlciAxMiBBcHIgOTYgMTQ6NTE6NDIKICAgIC0gKGFnZW50L3NubXBfdmFycy5jLCBhZ2VudC9leHRlbnNpYmxlLmMpCiAgICAgIC0gQ2hhbmdlZCBubGlzdCB3YXJuaW5ncyB0byBvbmx5IHByaW50IGlmIERPREVCVUcgaXMgZGVmaW5lZCBpbiBjb25maWcuaAoKaGFyZGFrZXIgMTIgQXByIDk2IDE2OjQ5OjIzCiAgICAtIChzbm1wX3Zhcl9yb3V0ZS5jKQogICAgICAtIENoYW5nZWQgbmxpc3Qgd2FybmluZ3MgdG8gb25seSBwcmludCBpZiBET0RFQlVHIGlzIGRlZmluZWQgaW4gY29uZmlnLmgKICAgIC0gKG1hbnkpIEFkZGVkIHN1cHBvcnQgZm9yIGhwcGExLjEtaHAtaHB1eDEwLjAxCiAgICAgIC0gdG90YWxseSEgcmVkaWQgdGhlIHJvdXRpbmcgdGFibGVzIGZvciBCU0QgNC40IGRlcml2ZWQgc3lzdGVtcwogICAgICAgIChhbHBoYSwgaHB1eDEwLjAxKywgbmV0YnNkKSBzaW5jZSBocHV4MTAgZG9lc24ndCBoYXZlIDQuMyBjb21wYXQgc3RydWN0cy4KICAgIC0gKGVjZS1taWIuZGVmKSBDYXBpdGFsaXphdGlvbiBwcm9ibGVtLgogICAgLSAoY29uZmlndXJlLmluKQogICAgICAtIENsZWFuZWQgdXAga2VybmVsIGNoZWNraW5nCiAgICAgIC0gU3RhcnRlZCB1c2luZyBhIGF1dG9jb25mIDIuOCBmZWF0dXJlIHRvIGNoZWNrIGZvciBjYWNoZSB2YWx1ZXMuCgpoYXJkYWtlciAxNSBBcHIgOTYgMTI6NTM6NDAKICAgIC0gKGNvbmZpZ3VyZSkgTmV3IGNvbW1hbmQgbGluZSBvcHRpb246ICAtLWVuYWJsZS1kZWJ1Z2dpbmcuICBUdXJucyBvbiBkZWJ1Z2dpbmcuCiAgICAtIChjb25maWd1cmUpIEZpeGVzIGZvciB0eXBlIGNoZWNraW5nIG9mIDQuNCBydGVudHJ5IHN0cnVjdHVyZXMgb24gYWxwaGFzLgoKaGFyZGFrZXIgMTUgQXByIDk2IDE0OjExOjM5CiAgICAtIChjb25maWd1cmUpIE5ldyBjb21tYW5kIGxpbmUgb3B0aW9uOiAgLS13aXRoLWRlZmF1bHRzLiAgRG9uJ3QgcHJvbXB0IHRoZSB1c2VyLgogICAgLSAoY29uZmlndXJlKSBidWcgZml4ZXM6ICB3YXNuJ3QgcXVvdGluZyBrZXJuZWwgYW5kIGRtZW0gbG9jYXRpb24uCiAgICAtIChjb25maWd1cmUpIGdjYyBjcHAgcmVxdWlyZXMgLXggYyB0byBhY2NlcHQgLmluIGZpbGUgc3VmZml4LgoKaGFyZGFrZXIgMTUgQXByIDk2IDE0OjM2OjQ4CiAgICAtIChhZ2VudC9zbm1wZC5jKSBGaXhlZCAyIGdldHRpbWVvZmRheSBjYWxscyAtLSBhZGRlZCBhIE5VTEwgdGltZXpvbmUgcHRyLgoKaGFyZGFrZXIgMTYgQXByIDk2IDA5OjQ3OjE4CiAgICAtIChjb25maWd1cmUpIEkgZm9yZ290IERNRU1fTE9DIG5lZWRzIHRvIGJlICN1bmRlZidlZCBpZiBub3QgZm91bmQKCmhhcmRha2VyIDE2IEFwciA5NiAwOTo0ODowNgogICAgLSAoYWdlbnQve3JvdXRlX3dyaXRlLmMsc25tcF92YXJfcm91dGUuY30pIE9TRjMuMiBzcGVjaWZpYyBjaGFuZ2VzLiAgYXJnLgoKaGFyZGFrZXIgMTYgQXByIDk2IDE4OjA4OjI5CiAgICAtIChzbm1wZC5jKSBBZGRlZCBmZmx1c2ggY2FsbHMgYWZ0ZXIgcHJpbnRpbmcgcGFja2V0IGR1bXBzCgpoYXJkYWtlciAyNCBBcHIgOTYgMDg6MzY6MDYKICAgIC0gKGNvbmZpZ3VyZS5pbikgTW9yZSBoZWFkZXIgZmlsZSBjaGVja3MgKHZtL3ZtLmggKCsgb3RoZXJzKSBhbmQgdWZzL2Zmcy9mcy5oKQoKaGFyZGFrZXIgMjQgQXByIDk2IDA4OjM2OjUwCiAgICAtIChhZ2VudC9leHRlbnNpYmxlL2V4dGVuc2libGUuYykgSW5jbHVkZSB1ZnMvZmZzL2ZzLmggaWYgYXZhaWxhYmxlLgoKaGFyZGFrZXIgMjQgQXByIDk2IDA4OjM3OjEzCiAgICAtIChhZ2VudC9NYWtlZmlsZS5pbikgRm9yZ290IGEgcXVvdGUuICAod2h5IGhhc24ndCB0aGlzIGFwcGVhcmVkIGJlZm9yZT8pCgpoYXJkYWtlciAyNCBBcHIgOTYgMDg6Mzg6MTgKICAgIC0gKGFnZW50L2FsYXJtLmMpIEZpeGVkIHNvbWUgZGVmaW5lIG5hbWluZyBjb25mbGljdHMgZm9yIE5ldEJTRCAodGltZXJhZGQoKSkuCgpoYXJkYWtlciAyNCBBcHIgOTYgMDg6NDQ6NDUKICAgIC0gKGFnZW50L3NubXBfdmFyX3JvdXRlLmMsc25tcF92YXJzLmMpIG1vcmUgY29uZmlnIGZpbGVzIGZvciBOZXRCU0QuCiAgICAtIChhZ2VudC9zbm1wX3ZhcnMuYykgcmVtb3ZlZCBhcnAgdGFibGVzIGZvciBuZXRic2QuCgpoYXJkYWtlciAyNCBBcHIgOTYgMDg6NTQ6MDcKICAgIC0gKGFjY29uZmlnLmgsIGNvbmZpZy5oLmluLCBlY2UtbWliLmRlZiwgb3YvKikgQWRkZWQgTmV0QlNEIHRvIHN5cy1PSUQgcmV0dXJuZWQuCgpoYXJkYWtlciAyNCBBcHIgOTYgMDg6NTQ6MzkKICAgIC0gKG1hbi8uY3ZzaWdub3JlKSBhZGRlZCBzbm1wZC4xCgpoYXJkYWtlciAyNCBBcHIgOTYgMDk6MDA6MjEKICAgIC0gKFJFQURNRSkgdXBkYXRlZAoKaGFyZGFrZXIgMjQgQXByIDk2IDA5OjA3OjQwCiAgICAtIChJTlNUQUxMKSB1cGRhdGVkCgpoYXJkYWtlciAyNCBBcHIgOTYgMTE6NDY6NTIKICAgIC0gKGFnZW50L3NubXBfdmFyX3JvdXRlLmMpIENoZWNrZWQgZm9yIHN5cy9tYnVmIGZvciBkZXRlcm1pbmluZyBydGVudHJ5LnJ0X25leHQKCmhhcmRha2VyIDI0IEFwciA5NiAxMTo1NToxMAogICAgLSAoYWdlbnQvc25tcF92YXJfcm91dGUuYykgQCMkJWluZyBzb2xhcmlzCgpoYXJkYWtlciAyNCBBcHIgOTYgMTM6MjU6NDgKICAgIC0gKGNvbmZpZyosYWdlbnQvc25tcF92YXJfcm91dGUuYykgY29uZmlnIGNoZWNraW5nIGZvciBydGVudHJ5LnJ0X25leHQKCmhhcmRha2VyIDI0IEFwciA5NiAxNDozNzo0NwogICAgLSAobG9jYWwvc25tcGNoZWNrKSBuZXcgcHJlZjogIGRvbid0IHBvcCBmb3J3YXJkIG9uIG5ldyBwcm9ibGVtcy4KCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCkNoYW5nZXM6ICBWMy4wLjUgLT4gVjMuMC42CgpoYXJkYWtlciAyNCBKYW4gOTYgMTY6MzE6MjAKICAgIC0gUmV0dXJuaW5nIEVYVEVOU0lCTEVET1RNSUIuQUdFTlRJRCBhcyB0aGUgbmV3IG9iamVjdGlkCgpEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBjc2MubGl2LmFjLnVrPiAyNCBKYW4gOTYgMTY6MzM6MDgKICAgIC0gUGF0Y2ggZnJvbSBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBjc2MubGl2LmFjLnVrPgogICAgICAtIGZpeGVzIC1wIFBPUlQgY29tbWFuZCBsaW5lIG9wdGlvbiB0byBhY3R1YWxseSB1c2UgdGhlIHJlcXVlc3RlZCBwb3J0LgogICAgICAtIGZpeGVzIHRoZSAtbCBMT0dGSUxFIGNvbW1hbmQgbGluZSBvcHRpb24gdG8gYWN0dWFsbHkgdXNlIGl0LgoKaGFyZGFrZXIgMjQgSmFuIDk2IDE2OjM2OjUxCiAgICAtIChNYWtlZmlsZSwgY29uZmlnLmgsIGVjZS1taWIuKiwgc2Vkc2NyaXB0LmluKQogICAgICAtIGNoYW5nZWQgdGhlIHdheSBtaWIudHh0IGlzIGJ1aWx0CiAgICAgICAgLSBzcGxpdCB0aGUgY29tbWFuZCBpbnRvIHR3byBwYXJ0cyB0byBidWlsZCBhIGVjZS1taWIudHh0IGFzIHdlbGwKICAgICAgLSBhZGRlZCBhIG5ldyBPYmplY3RJRCBhZGRpdGlvbiB0byBlY2UtbWliLnR4dAogICAgICAtIERFRk1BWExPQURBVkUgLT4gRFJFTU9WRU1FRUZNQVhMT0FEQVZFCgpoYXJkYWtlciAyNiBKYW4gOTYgMDg6MjU6MDgKICAgIC0gVGhlIFNvbGFyaXMgMi41IGtlcm5lbCBoYXMgbW92ZWQgdG8gL2tlcm5lbC9nZW51bml4CiAgICAgIC0gVGhhbmtzIGdvZXMgdG8gcG9tbWllckB2b2xuYXkuc3RvcnRlay5jb20gKFZpbmNlbnQgUG9tbWllciAoVG91bG91c2UpKQoKaGFyZGFrZXIgIDkgRmViIDk2IDE3OjA1OjAwCiAgICAtIEJldHRlciBPcGVuVmlldyBzdXBwb3J0CiAgICAgIC0gUmV0dXJucyBkaWZmZXJlbnQgc3lzT2JqZWN0SUQncyBmb3IgZWFjaCBhcmNoaXRlY3R1cmUKICAgICAgLSBBZGRlZCBhICdvdicgZGlyZWN0b3J5IGZvciBPcGVuVmlldyBzdXBwb3J0IGZpbGVzCiAgICAgICAgLSBjdXJyZW50bHkgY29udGFpbnMgbmVjZXNzYXJ5IGZpbGVzIHRvIHN1cHBvcnQgYSBVQ0QgYml0bWFwIGZpbGUKICAgICAgICAgIGZvciBob3N0cyB1c2luZyB0aGUgdWNkLXNubXAgYWdlbnQuICBTZWUgdGhlIG92L1JFQURNRSBmaWxlIGZvciBkZXRhaWxzLgoKaGFyZGFrZXIgMTIgRmViIDk2IDE0OjI4OjI3CiAgICAtIChhY2NvbmZpZy5oLCBjb25maWcuaGluLCBhZ2VudC9leHRlbnNpYmxlL21pc2MuYykKICAgICAgLSBUaGUgYWdlbnQgbm93IHNldHMgYW4gYWxhcm0gdG8gcmVzdGFydCByYXRoZXIgdGhhbiBkb2luZyBhdCB0aGUKICAgICAgICBzbm1wc2V0IHRpbWUgdG8gcmV0dXJuIGEgdmFsdWUgdG8gdGhlIHNubXBzZXQgcmVxdWVzdC4KCmhhcmRha2VyIDE2IEZlYiA5NiAxNjozMjo0MQogICAgLSAoYWNjb25maWcuaCxjb25maWcuaC5pbiwgYWdlbnQvc25tcF9hZ2VudC5jLCBhZ2VudC9leHRlbnNpYmxlL3JlYWRfY29uZmlnLmMpCiAgICAgIC0gLmNvbmYgZmlsZSBhZGRpdGlvbjogICJjb21tdW5pdHkgTiBTVFJJTkciIHRvIGNoYW5nZSBjb21tdW5pdHkgbmFtZXMKCmhhcmRha2VyIDIxIEZlYiA5NiAxNjoxMjozOQogICAgLSAoTWFrZWZpbGUuaW4sIHNlZHNjcmlwdC5pbiwgbWFuL01ha2VmaWxlLmluLCBtYW4vc25tcGQuY29uZi41LmRlZikKICAgICAgLSBBZGRlZCB0aGUgYmVnaW5uaW5ncyBvZiBhIHNubXBkLmNvbmYgbWFudWFsIHBhZ2UuCgpoYXJkYWtlciAyMSBGZWIgOTYgMTY6MTU6MzYKICAgIC0gKGFwcHMvTWFrZWZpbGUuaW4sIGFwcHMvc25tcHRyYXAuYykKICAgICAgLSBBZGRlZCBhcHBzL3NubXB0cmFwCiAgICAgICAgLSBjb2RlIHRha2VuIGZyb20gMi4wLjEgYW5kIHN1Ym1pdHRlZCB0byBtZSBieSBmcmFuY3VzQG1ldHNueS5kZWxwaGkuY29tLgogICAgICAgIC0gSSBoYXZlIHlldCB0byB0ZXN0IGl0LgoKaGFyZGFrZXIgIDYgTWFyIDk2IDA5OjA5OjE1CiAgICAtIChhZ2VudC9zbm1wZC5jKSBBZGRlZCBPX1RSVU5DIHRvIHRoZSBsb2dmaWxlIG9wZW4oKSBjYWxsLgoKaGFyZGFrZXIgIDYgTWFyIDk2IDEwOjA2OjI0CiAgICAtIChhZ2VudC9leHRlbnNpYmxlL3JlYWRfY29uZmlnLmMpIHNtYWxsIGJ1Z3MgZml4ZWQKICAgICAgLSBkaXNrIGVudHJpZXMgd2l0aCBubyBzaXplIHNwZWNpZmllZCBjYXVzZWQgc2VnLWZhdWx0cy4KICAgICAgLSBiZXR0ZXIgdHlwZSBjaGVja2luZyBvbiBNSUIgZm9yICdleGVjIE1JQicgZW50cmllcy4KICAgICAgLSBtb3JlIGVycm9yIG1lc3NhZ2VzIGFkZGVkLgoKaGFyZGFrZXIgIDYgTWFyIDk2IDE2OjM4OjE2CiAgICAtIChlY2UtbWliLmRlZikKICAgICAgLSBDaGFuZ2VkIGNhcGl0YWxpemF0aW9uIHNjaGVtZXMgdG8gYmUgbW9zeSBjb21wbGlhbnQuCiAgICAgIC0gTWFkZSB0aGUgbWVtb3J5IG1pYiBTWU5UQVggcG9pbnQgdG8gdGhlIE1lbW9yeSBzZXF1ZW5jZSBsaWtlIGl0IHNob3VsZC4KCmhhcmRha2VyICA2IE1hciA5NiAxNjo1ODoxMQogICAgLSAoc25tcGxpYi9taWIuYykgcHJpbnRlZCB2YWx1ZXMgZm9yIHRpbWV0aWNrcyBhcmUgbm8gbG9uZ2VyIG5lZ2F0aXZlLgoKaGFyZGFrZXIgIDggTWFyIDk2IDEwOjMxOjM0CiAgICAtIChzbm1wbGliL3NubXBfY2xpZW50LmMpIENoZWNrIGlmIHZhcmlhYmxlIGNvbnRlbnQgaXMgTlVMTCBiZWZvcmUgdXNpbmcuCgpoYXJkYWtlciAgOCBNYXIgOTYgMTY6NTY6MDgKICAgIC0gKGFnZW50L2V4dGVuc2libGUvZXhlYy5jKQogICAgICAgLSByZWxvY2F0YWJsZSBleGVjJ3MgZmFpbGVkIHRvIGNsb3NlIHRoZSBjYWNoZSBmaWxlLgoKaGFyZGFrZXIgMTEgTWFyIDk2IDEzOjM3OjI1CiAgICAtIChzbm1wX3Zhcl9yb3V0ZS5jLCBzbm1wX3ZhcnMuYywgZXh0ZW5zaWJsZS5jKTogY29tbWVudGVkIG91dCBubGlzdCB3YXJuaW5ncy4KCmhhcmRha2VyIDExIE1hciA5NiAxNToxNzoyNgogICAgLSAobWFuL3tNYWtlZmlsZS5pbixzbm1wZC4xLmRlZixzbm1wZC5jb25mLjUuZGVmfSx2ZXJzaW9udGFnLHNlZHNjcmlwdC5pbik6CiAgICAgIC0gY2xlYW5lZCB1cCBkb2N1bWVudGF0aW9uIG1vcmUgYW5kIGFkZGVkIHRoZSB2ZXJzaW9uIG51bWJlciB0byB0aGUgdHJhaWxlcnMuCgpoYXJkYWtlciAxMSBNYXIgOTYgMTU6MTc6NTcKICAgIC0gKFJFQURNRSk6IGNsZWFuZWQgdXAsIHJlLWFycmFuZ2VkLCBzaG9ydGVuZWQgKHNlY3Rpb25zIG1vdmVkIHRvIG1hbi8qIGRvY3MpLgoKaGFyZGFrZXIgMTEgTWFyIDk2IDE1OjQwOjE3CgogICAgLSAoUkVBRE1FKTogbW9yZSBjbGVhbiB1cCBhbmQgYWRkZWQgcmVmZXJlbmNlIHRvIHRoZSB1Y2Qtc25tcCBtYWlsaW5nIGxpc3QuCgpHaW92YW5uaSBTLiBNYXJ6b3QgPGdtYXJ6b3RAYmF5bmV0d29ya3MuY29tPiAxMSBNYXIgOTYgMTU6NTc6MjAKCiAgICAtIChzbm1wbGliL3NubXBfYXBpLmMpOiBmaXhlZCBhIHRpbWVvdXQgYnVnIGNhdXNlZCBieSBhcmNoaXRlY3R1cmVzCiAgICAgIHdpdGggYW4gdW5zaWduZWQgdGltZXZhbC50dl9zZWMgdmFsdWUuCiAgICAgIC0gVGhhbmtzIGdvZXMgdG8gR2lvdmFubmkgUy4gTWFyem90IDxnbWFyem90QGJheW5ldHdvcmtzLmNvbT4gZm9yCgl0aGUgcGF0Y2ghCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgpDaGFuZ2VzIHNpbmNlIFYzLjAuNAoKaGFyZGFrZXIgMTkgSmFuIDk2IDE3OjMxOjE2CiAgICAtIChjb25maWd1cmUqKQogICAgICAtIHVwZGF0ZWQgdG8gYXV0b2NvbmYgdjIuNwogICAgICAtIEhvcGVmdWxseSBub3cgdXNpbmcgY29ycmVjdCAnbWFrZScgZGVmaW5pdGlvbnMKCmhhcmRha2VyIDE5IEphbiA5NiAxNzozMjo1NwogICAgLSAoYWdlbnQvZXh0ZW5zaWJsZS8qLmMpCiAgICAgIC0gRGVjbGFpcmVkIG1vcmUgc3RhdGljIHZhcmlhYmxlcyAobG9uZ19yZXQpIHRvIGZpeCBzdW40cyBleGl0IGNvZGVzIChhZ2FpbikuCgpoYXJkYWtlciAyMiBKYW4gOTYgMTY6Mjc6MzAKICAgIC0gKGFjY29uZmlnLmgsIGFnZW50L3NubXBfdmFycy5jLCBhZ2VudC9leHRlbnNpYmxlLyouYykKICAgICAgLSBBZGRlZCBuZXcgZGVmaW5lcyB0byB0dXJuIG9uL29mZiBzZWN0aW9ucyBvZiB0aGUgZXh0ZW5zaWJsZSBtaWIuCiAgICAgIC0gVGhpcyBhbHNvIGZpeGVzIHRoZSBtaWIudHh0IGZpbGUgZGVmaW5pdGlvbnMgaWYgc29tZXRoaW5nIGlzIHR1cm5lZCBvZmYuCiAgICAtIChNYWtlZmlsZS5pbikgcmVtb3ZlZCAke3NyY2Rpcn0gZnJvbSB0aGUgZnJvbnQgb2Ygc3RhbXAtaC5pbgoKaGFyZGFrZXIgMjIgSmFuIDk2IDE3OjE4OjU4CiAgICAtIChsb2NhbC9NYWtlZmlsZS5pbikgQWRkZWQgYSBjaG1vZCB0byBtYWtlIHRoZSBzbm1wY2hlY2sgc2NyaXB0IGV4ZWN1dGFibGUKCmhhcmRha2VyIDIyIEphbiA5NiAxNzoyMzoxNwogICAgLSAobG9jYWwvc25tcGNoZWNrKQogICAgICAtIGFkZGVkIGFnZW50IGNvbnRyb2xzOiAgcmVzdGFydCwgdXBkYXRlY29uZmlnLCBjbGVhcmNhY2hlLgogICAgICAtIHJlbW92ZWQgYW4gb2xkIGRlYnVnZ2luZyBwcmludGYuCiAgICAgIC0gY3RybC1mID0+IGZpeGFsbC4KICAgICAgLSBBZGRlZCBrZXlib2FyZCBhY2NlbGVyYXRvcnMgdG8gdGhlIGFzc29jaWF0ZWQgbWVudSBpdGVtcy4KICAgICAgLSBNYWRlIGhpZ2hsaWdodFRoaWNrbmVzcyBhIGdsb2JhbCBwYXJhbWV0ZXIgdmlhICR3aW5kb3ctPm9wdGlvbignYWRkJykuCiAgICAgIC0gQWRkZWQgYSBlbnRyeSBib3ggdG8gdGhlIGV4ZWN1dGFibGUgY29tbWFuZHMgd2l0aCB0aGUgY29tbWFuZCB0byBydW4uCgoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKQ2hhbmdlcyBzaW5jZSBWMy4wLjMKCmhhcmRha2VyIDIzIE9jdCA5NSAxNjozNzo0MwogICAgLSAoZXh0ZW5zaWJsZS5jKSBzdG9wcGVkIHJlcG9ydGluZyBhbnl0aGluZyBmb3IgdGhlIGRpc2sgbWliIGlmIG5vCiAgICAgIGRpc2tzIHdlcmUgZGVmaW5lZCBpbiB0aGUgc25tcGQuY29uZiBmaWxlLiAgVGhpcyB3YXMgY2F1c2luZyBhbgogICAgICBlcnJvciBpbiB0aGUgYWdlbnQncyBlcnJvciBtaWIgd2hlbiBubyBkaXNrcyB3ZXJlIGRlZmluZWQgYW5kCiAgICAgIHNvbWVvbmUgd2Fsa3MgdGhlIGRpc2sgbWliLgoKaGFyZGFrZXIgMjAgTm92IDk1IDE2OjA0OjQ3CiAgICAtIChSRUFETUUpIEFkZGVkIHBvaW50ZXIgdG8gdGhpcyBmaWxlIHZpYSBmdHAKCmhhcmRha2VyIDIwIE5vdiA5NSAxNjowNToxMgogICAgLSAoVE9ETykgRmluZCBhbmQgZml4IG1lbW9yeSBsZWFrIHNvbWV0aW1lCgpoYXJkYWtlciAyMCBOb3YgOTUgMTY6MDc6NDUKICAgIC0gKGNvbmZpZ3VyZS5pbikgQ2hlY2sgZm9yIC1sZWxmIGZvciBzb2xhcmlzIDIuMyBhbmQgeW91bmdlcgogICAgLSAoY29uZmlndXJlLmluKSBNb3JlIHNvbGFyaXMgc3BlY2lmaWNzOiAgLURTVlI0CiAgICAtIChjb25maWd1cmUuaW4pIENhY2hlcyBpbml0aWFsIHByb21wdCBpbiB0aGUgY29uZmlndXJlIHNjcmlwdCBzbyB5b3UKICAgICAgd29uJ3QgYmUgYnVnZ2VkIHR3aWNlIGJ5IHRoZSBpbml0aWFsIHF1ZXN0aW9uLgoKaGFyZGFrZXIgMjAgTm92IDk1IDE2OjA4OjQ5CiAgICAtIChjb25maWcuaC5pbikgQ2hlY2sgZm9yIC1sZWxmIGZvciBzb2xhcmlzIDIuMyBhbmQgeW91bmdlcgoKaGFyZGFrZXIgMjAgTm92IDk1IDE2OjA5OjM3CiAgICAtIChhbGwgYXV0b2NvbmYgYnVpbHQgZmlsZXMpIFVwZGF0ZWQgZXZlcnl0aGluZyB0byBhdXRvY29uZiAyLjUKCmhhcmRha2VyIDIwIE5vdiA5NSAxNjoxMDo0OQogICAgLSAodHJhcG5vdGlmKSBMb2dzIG5vLXJlc3BvbnNlIGVycm9ycy4KICAgIC0gKHRyYXBub3RpZikgQmV0dGVyIHN0cmluZyBjaGVja2luZyAocXVvdGVzIGFsbCB2YXJpYWJsZXMgbm93KQoKaGFyZGFrZXIgIDEgRGVjIDk1IDE2OjIwOjEzCiAgICAtIGxvY2FsL3NubXBjaGVjazogICAgICAgKm5ldyBmZWF0dXJlcyoKICAgICAgLSBoYW5kbGVzIGZhaWxlZCBzbm1wd2Fsay9nZXQvc2V0cyBtdWNoIG1vcmUgZ3JhY2VmdWxseSBub3cKICAgICAgLSBuZXcgcHJlZmVyZW5jZTogIFlvdSBjYW4gcGljayB3aGF0IHR5cGVzIG9mIHByb2JsZW1zIHRvIGNoZWNrIGZvcgogICAgICAgIC0gLWYgb24gdGhlIGNvbW1hbmQgbGluZSBvbmx5IGNoZWNrcyBmb3IgZml4YWJsZSBwcm9ibGVtcwogICAgICAtIG5vIGxvbmdlciBwaW5nOjplY2hvcyBob3N0cyBiZWZvcmUgY2hlY2tpbmcgdGhlbQogICAgICAgIC0gaW5zdGVhZCByZWxpZXMgb24gJ05vIFJlc3BvbnNlJyB0eXBlIHJlcGxpZXMgZnJvbSBzbm1wd2Fsay9nZXQgdG8KICAgICAgICAgIGRldGVybWluZSBpZiBhIGhvc3QgaXMgdXAuCiAgICAgICAgLSBwaW5nIHRoZSBob3N0IGlzIHN0aWxsIGFuIG9wdGlvbiAodGhyb3VnaCB0aGUgY29tbWFuZCBsaW5lIGFuZCBtZW51cykKICAgICAgLSBjb252ZXJ0ZWQgZnJvbSBUay1iNCB0byBUay1iOAogICAgICAtIEFkZGVkIGEgbG9nZ2luZyB3aW5kb3cgZm9yIGRlYnVnZ2luZyBhbmQgdHJhY2tpbmcgb2YgYWN0aW9ucy4KICAgICAgICAtIG5ldyBjb21tYW5kIGxpbmUgb3B0aW9uczogIC1WIE5VTSAgaW5pdGlhbCBsb2cgdmVyYm9zaXR5IGxldmVsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtTCAgICAgIHNob3cgdGhlIGxvZyB3aW5kb3cgYXQgc3RhcnR1cAogICAgICAtIE5vdyB0cmFuc2xhdGVzIG1pYiBudW1iZXJzIGludG8gbW9yZSByZWFzb25hYmxlIG5hbWVzCgpoYXJkYWtlciAgNSBEZWMgOTUgMTQ6NTc6MTQKICAgIC0gKGNvbmZpZ3VyZSopIGFkZGVkIEFDX1RZUEVfUElEX1QgdG8gdGhlIGNvbmZpZ3VyZSBjaGVja3MKCmhhcmRha2VyICA1IERlYyA5NSAxNTowMToxMAogICAgLSAoc25tcGNoZWNrKQogICAgICAtIE5ldyBmbGFnOiAgLWQsIGRvbid0IHN0YXJ0IGNoZWNraW5nIGFueXRoaW5nLiAgSnVzdCBicmluZyB1cCBpbnRlcmZhY2UuCiAgICAgIC0gY2hlY2sgZm9yIGJsYW5rIG91dHB1dCBvZiBzbm1wZ2V0IGJlZm9yZSBwYXJzaW5nIHdpdGggcy8vL2cKICAgICAgICBjb25zdHJ1Y3RzLgoKaGFyZGFrZXIgIDUgRGVjIDk1IDE1OjA1OjIwCiAgICAtIChhZ2VudC9leHRlbnNpYmxlKQogICAgICAtIEJ1ZyBmaXg6ICBhbHBoYXMgYW5kIHN1bm9zZXMgd2VyZSByZXBvcnRpbmcgaW5jb3JyZWN0IGV4dGVuc2libGUKICAgICAgICBleGl0IGNvZGVzLiAgKHlldCBhbm90aGVyIDY0LzMyIGJpdCBidWcgZm91bmQpLgogICAgICAtIEJ1ZyBmaXg6IGFnZW50LXVwZGF0ZSxyZXN0YXJ0LCBhbmQgY2FjaGUgbWliIGZsdXNoIGVudHJpZXMgd2VyZQogICAgICAgIHJldHVybmluZyB2YWx1ZXMgaW5zdGVhZCBvZiBwb2ludGVycyB0byB2YWx1ZXMuCgpoYXJkYWtlciAxMyBEZWMgOTUgMTU6Mjc6MTkKICAgIC0gKGFnZW50L2V4dGVuc2libGUvbWlzYy5jKSBidWcgZml4ZXMgZm9yIGV4ZWMgaXRlbXM6CiAgICAgIC0gYSBzZWNvbmQgc25tcHdhbGsgb2YgdGhlIGV4ZWMgaXRlbSB3b3VsZCByZXR1cm4gdGhlIG9sZCBjYWNoZQogICAgICAgIGZpbGUuICBGaXhlZCBieSByZXNldGluZyB0aGUgbGFzdCBjYWNoZXRpbWUgdG8gMCB0byBhbHdheXMgcmVzY2FuCiAgICAgICAgYWZ0ZXIgZm9yay9waXBlL21lbW9yeS9ldGMgZXJyb3JzLgogICAgICAtIE1hZGUgbGFzdHJlc3VsdCBhIHN0YXRpYyB2YXIuICBXYXMgcmV0dXJuaW5nIHdyb25nIGV4aXQgY29kZXMKICAgICAgICB1bmRlciwgc3RyYW5nZWx5IGVub3VnaCwgb25seSBzdW5vcy00IG1hY2hpbmVzLgoKaGFyZGFrZXIgMjAgRGVjIDk1IDA5OjUzOjEwCiAgICAtIHNubXBfb3BlbiBjYWxscyBnZXRzZXJ2YnluYW1lIG9ubHkgb25jZSBub3csIGF0IHRoZSByZXF1ZXN0IG9mIEdhcnkKICAgICAgSGF5d2FyZCA8Z2FoQGRpcmFjLmJlbGxjb3JlLmNvbT4uCgpoYXJkYWtlciAyMCBEZWMgOTUgMTU6NTY6MTYKICAgIC0gRm91bmQgYW5kIGZpeGVkIGEgbWVtb3J5IGxlYWsgaW4gdGhlIHJvdXRpbmcgdGFibGUgbWliLgoKaGFyZGFrZXIgMjggRGVjIDk1IDEwOjAxOjM1CiAgICAtIEFkZGVkIHNlZHNjcmlwdCB0byB0aGUgLmN2c2lnbm9yZSBmaWxlLgoKaGFyZGFrZXIgMjggRGVjIDk1IDEwOjI0OjM3CiAgICAtIEFkZGVkIGEgc2Vkc2NyaXB0IHdoaWNoIGlzIGJ1aWx0IGZyb20gY29uZmlnLmggYW5kIGFnZW50L2V4dGVuc2libGUvbWliZGVmcy5oCiAgICAgIC0gdXNlZCB0byBkeW5hbWljYWxseSBidWlsZCBtaWIudHh0IGFuZCBsb2NhbC9zbm1wY2hlY2suCgpoYXJkYWtlciAyOCBEZWMgOTUgMTI6MDY6NDkKICAgIC0gQ3JlYXRlZCBhIEVYQU1QTEUuY29uZiBmaWxlIGZvciBleGFtcGxlIHVzYWdlLgoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKQ2hhbmdlcyBzaW5jZSBWMy4wLjIuMQoKaGFyZGFrZXIgMjkgU2VwIDk1IDEzOjQzOjQ5CiAgICAtIHBvcnRlZCB0byBHTlUncyBhdXRvY29uZmlnMi40CiAgICAgIC0gdG8gaW5zdGFsbCwgeW91IG11c3Qgbm93IHJ1biAuL2NvbmZpZ3VyZSBmaXJzdCB0byBnZW5lcmF0ZSB0aGUKICAgICAgICBNYWtlZmlsZXMgYW5kIGNvbmZpZy5oCiAgICAgIC0gYWxtb3N0IGFsbCBvZiB0aGUgY29kZSBpcyBub3cgZHluYW1pY2FsbHkgY2hlY2tlZCBmb3IgcHJvYmxlbXMKICAgICAgICByYXRoZXIgdGhhbiBiZWluZyBkZXBlbmRhbnQgb24gYXJjaGl0ZWN0dXJlIG5hbWVzLgogICAgLSBzeXN0ZW0gbmFtZSBub3cgZHluYW1pY2FsbHkgZGV0ZXJtaW5lZCBhdCBydW4gdGltZSAoZnJvbSB1bmFtZSAtbikKICAgIC0gY3JlYXRlZCBhICdtYWtlIGRlcGVuZCcgY2FsbCAoZmluYWxseSkuCiAgICAtIChhZ2VudC9zbm1wX3ZhcnMuaCkgY2hhbmdlZCBTWVNOQU1FIGRlZmluZSB0byBTWVNURU1OQU1FIGRlZmluZSB0bwogICAgICBhdm9pZCBhIGNvbmZsaWN0IHdpdGggYSBzb2xhcmlzIGhlYWRlciBmaWxlLgogICAgLSBwcm90ZWN0aW5nIGJldHRlciBhZ2FpbnN0IGluY2x1ZGUgaGVhZGVyIGZpbGVzIHR3aWNlLgogICAgLSBNb3N0IG9mIHBvcnQgdG8gU29sYXJpcyAyLjQgZmluaXNoZWQuICBUaGUga2VybmVsIHJlYWRzIHN0aWxsIG5lZWQgd29yay4KCmhhcmRha2VyIDI5IFNlcCA5NSAxMzo0Njo0MwogICAgLSAoTkVXUykgdXBkYXRlZCB0aGUgbmV3cyBmaWxlLgoKaGFyZGFrZXIgIDMgT2N0IDk1IDA5OjI0OjAwCiAgICAoYWNjb25maWcuaCkgTWlub3IgYnVnOiAgcmVjdXJzaXZlIGNvbW1lbnRzIG5vdCBjb3JyZWN0IGZvciBjb21waWxlcnMgKEFJWCkKCmhhcmRha2VyICAzIE9jdCA5NSAwOTo0Mzo1NAogICAgKHZlcnNpb25pbmZvLmMpIEFkZGVkIDMtMC0zLUExIHRhZwoKaGFyZGFrZXIgIDQgT2N0IDk1IDE2OjUzOjM5CiAgICB2ZXJzaW9uIHRhZyBvZiB2ZXJzaW9uaW5mby5jCgpoYXJkYWtlciAgNSBPY3QgOTUgMTU6MjM6MDUKICAgIC0gTW9yZSBTb2xhcmlzIHBvcnRpbmcuCiAgICAgIC0gTW9zdCBtaWJJSSBlbnRyaWVzIG5vdyB3b3JrLgogICAgICAgICAtIEhhdmVuJ3QgY2hlY2tlZCByZXR1cm5lZCBpbmZvcm1hdGlvbiBmb3IgYWNjdXJhY3kKICAgICAgLSBzeXNVcFRpbWUgc3RpbGwgZmFpbHMuCiAgICAgIC0gY2MgYW5kIGdjYyBib3RoIGNvbXBpbGUgZXZlcnl0aGluZyBub3cuCgpoYXJkYWtlciAgNSBPY3QgOTUgMTU6NDg6MjMKICAgIHZlcnNpb24gdGFnIG9mIHZlcnNpb25pbmZvLmMKCmhhcmRha2VyICA2IE9jdCA5NSAxMTozNzowMAogICAgLSAoUkVBRE1FKSBNb3ZlZCBJTlNUQUxMQVRJT04gaW5zdHJ1Y3Rpb25zIHRvIElOU1RBTEwKICAgICAgICAgICAgICAgQ2hhbmdlZCBsaXN0aW5nIG9mIHN1cHBvcnRlZCBhcmNoaXRlY3R1cmVzCiAgICAgICAgICAgICAgIFVwZGF0ZWQgQVZBSUxBQklMSVRZIHNlY3Rpb24KCmhhcmRha2VyICA2IE9jdCA5NSAxNjoyODo0OAogICAgdmVyc2lvbiB0YWcgb2YgdmVyc2lvbmluZm8uYwoKaGFyZGFrZXIgIDYgT2N0IDk1IDE2OjMyOjA0CiAgICAtIChzbm1wZC5jKSBBZGRlZCB0d28gbmV3IGZsYWdzOgogICAgICAtaCBmb3IgaGVscAogICAgICAtdiBmb3IgdmVyc2lvbiBpbmZvcm1hdGlvbgoKaGFyZGFrZXIgIDYgT2N0IDk1IDE2OjMyOjQzCiAgICAtIChwYXJzZS5jLCBzbm1wLmMpIGFkZGVkIGNvbmZpZy5oIHRvIHRoZSBsaXN0IG9mIGluY2x1ZGVzLgoKaGFyZGFrZXIgIDYgT2N0IDk1IDE2OjQwOjM4CiAgICAtIChzbm1wZC5jKSBVc2FnZSBvZiAtLWhlbHAgYW5kIC0tdmVyc2lvbiBzaG91bGQgd29yayBub3cuLi4gIEdOVSBzdGFuZGFyZC4KCmhhcmRha2VyICA2IE9jdCA5NSAxNjo0MToxOAogICAgLSAoTkVXUy8tVE9ETykgLWgvLS1oZWxwLCAtdi8tLXZlcnNpb24gY29tbWFuZCBsaW5lIG9wdGlvbnMKCmhhcmRha2VyIDExIE9jdCA5NSAxNzozMzoyNgogICAgLSBUaGUgY29uZmlndXJlIHNjcmlwdCBub3cgcHJvbXB0cyBmb3IgaW1wb3J0YW50IHZhbHVlcyB0byBiZSBwdXQgaW4KICAgICAgY29uZmlnLmguICBTb21lIHRoaW5ncyBuZWVkIHRvIHVzZSAkKHByZWZpeCkgaW5zdGVhZCBob3dldmVyLgogICAgLSAoTWFrZWZpbGUuaW4sIGFnZW50L01ha2VmaWxlLmluLCBhcHBzL01ha2VmaWxlLmluKQogICAgICArIGxpbmtpbmcgdG8gLi4vc25tcGxpYi9saWJzbm1wLmEgaW5zdGVhZCBvZiAuLi9saWIvbGlic25tcC5hIHRvCiAgICAgICAgcmVtb3ZlIGluc3RhbGwgcmVxdWlyZW1lbnQuCiAgICAgICsgIHB1dCAuLi9saWIvbGlic25tcC5hIGluIGFwcGxpY2F0aW9uCgpoYXJkYWtlciAxMyBPY3QgOTUgMTU6NDU6MjgKICAgIC0gKHNubXBkLmMpIEFkZGVkIC1wIHBvcnQgdG8gLS1oZWxwIG91dHB1dAogICAgLSAoY29uZmlnKSBTZXR1cCB0byB1c2UgLS1wcmVmaXggdG8gbG9vayBmb3IgY29uZmlnIGZpbGVzLgoKaGFyZGFrZXIgMTYgT2N0IDk1IDEzOjAxOjM5CiAgICAtIChNYWtlZmlsZXMpIEZhaXJseSBkZWNlbnQgJ21ha2UgaW5zdGFsbCcgbm93IHBvc3NpYmxlLiAgSW5zdGFsbHMKICAgICAgaW50byB0aGUgZGlyZWN0b3J5IHNwZWNpZmllZCBieSAtLXByZWZpeCBmb3IgdGhlIC4vY29uZmlndXJlIHNjcmlwdC4KICAgIC0gKGV4dGVuc2libGUuYykgY29uZmlnIGZpbGUgcmUtbG9jYXRpb246IG5vdyB1c2VzIHRoZSBTTk1QTElCUEFUSAogICAgICBkZWZpbmVkIGxvb3NlbHkgYXMgJChwcmVmaXgpL2xpYi9zbm1wLy4KCmhhcmRha2VyIDE2IE9jdCA5NSAxNTowMjowMQogICAgLSAoTWFrZWZpbGVzKSBtYWtlIGluc3RhbGwgZWNob3Mgd2hhdCBpdHMgZG9pbmcgaW4gYSBtb3JlIGNsZWFyIGZhc2hpb24KICAgIC0gKElOU1RBTEwpIGFkZGVkIGJldHRlciBpbnN0cnVjdGlvbnMgdG8gdGhlIElOU1RBTEwgZmlsZS4KICAgIC0gKFJFQURNRSkgbWlub3Igd29yZGluZyBjaGFuZ2VzCgpoYXJkYWtlciAxNiBPY3QgOTUgMTY6MjE6NDMKICAgIC0gKHNubXBkLmMpIHdhcyBzdGlsbCBsb29raW5nIGluIC9ldGMgZm9yIHR3byAuY29uZiBmaWxlcy4KCmhhcmRha2VyIDE2IE9jdCA5NSAxNjo0MzoxMgogICAgLSAoYXBwcykgYWxsIGFwcHMgd2VyZSBzdGlsbCBsb29raW5nIGluIC9ldGMvIGZvciAuY29uZiBmaWxlcwoKaGFyZGFrZXIgMTcgT2N0IDk1IDE2OjU4OjMyCiAgICB2ZXJzaW9uIHRhZyAoIDMuMC4zICkgb2YgdmVyc2lvbmluZm8uYwoKaGFyZGFrZXIgMTcgT2N0IDk1IDE3OjAwOjIyCiAgICAtIENoYW5nZUxvZyB1cGRhdGUKCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgpDaGFuZ2VzIHNpbmNlIFYzLjAuMgoKaGFyZGFrZXIgMjEgU2VwIDk1IDA5OjI3OjE4CiAgICAoc25tcGxpYi9tZDUuYykgRm9yZ290IHRvIGluY2x1ZGUgc3lzL3R5cGVzLmggZm9yIHVfbG9uZyBkZWZpbml0aW9uLgoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKQ2hhbmdlcyBzaW5jZSBWMy4wLjEKCmhhcmRha2VyIDI2IEp1bCA5NSAxNjozMTo0MQogICAgLSBBZGRlZCBhIG5ldyAjZGVmaW5lOiBFWElUX09OX0JBRF9LTFJFQUQgdG8gY29uZmlnLmgKICAgICAgSWYgZGVmaW5lZCwgYW5kIGFuIGVycm9yIG9jY3VycyB3aGlsZSByZWFkaW5nIHRoZSBrZXJuZWwgY29udGVudHMsCiAgICAgIHRoZSBhZ2VudCB3aWxsIGV4aXQuICBUaGlzIHdhcyB0aGUgZGVmYXVsdC4gIEkgd2FudGVkIGl0IHRvCiAgICAgIGNvbnRpbnVlLgogICAgCiAgICAtIFBvcnQgdG8gZGVjLWFscGhhL09TRiAzLjEKICAgICAgLSBhbHBoYSdzIGxvbmcgaXMgOCBieXRlcywgbm90IDQuCiAgICAgIC0gc2hvdWxkIGJlIChtb3N0bHkpIDY0IGJpdCBjbGVhbiBub3cuCiAgICAgIC0gY2xlYW5lZCB1cCBhIExPVCBvZiBidWdzIENNVSBjb2RlIGluIHRoZSBwcm9jZXNzLgoKaGFyZGFrZXIgMjggSnVsIDk1IDE0OjIzOjQxCiAgICBZZXQgbW9yZSBwcm9ibGVtcyBmaXhlZCBpbiB0aGUgYWxwaGEgcG9ydC4KICAgICAgLS0gbW9yZSBpbnQgLT4gbG9uZyBjaGVja2luZy4KCmhhcmRha2VyIDMxIEp1bCA5NSAxNjoyNzo0NwogICAgLSBzbm1wY2hlY2sgY2hhbmdlczoKICAgICAgLSB0ZXJtaW5hbCAoYXNjaWkpIGJhc2VkIHN1cHBvcnRlZCBmaXhlZC4KICAgICAgICAtIERldGVjdHMgcHJlc2VuY2Ugb2YgYSBESVNQTEFZIHZhcmlhYmxlLgogICAgICAgIC0gTm93IHJlcXVpcmVzIHRoZSBUZXJtOjpSZWFka2V5IHBhY2thZ2UuCiAgICAgICAgLSBhc2tzIHVzZXJzIHdlYXRoZXIgdG8gZml4IHByb2JsZW1zCiAgICAgIC0gcmFpc2VzIGFuZCBkZWljb25pZmllcyB3aGVuIG5ldyBwcm9ibGVtcyBhcmUgZm91bmQKICAgICAgLSBzZXRzIHRoZSBiYWNrZ3JvdW5kIGNvbG9yIG9mIG5ldyBwcm9ibGVtcyB0byBwaW5raXNoCiAgICAgIC0gbmV3IHByZWZlcmVuY2U6ICBwaW5nIGhvc3Q/CiAgICAgIC0gZ2xvYmFsIGtleSBiaW5kaW5nczoKICAgICAgICAgIGN0cmwtcSA9IHF1aXQ7IGN0cmwtaCA9IGhpZGU7IGN0cmwtcyA9IHNlZW4gYWxsCgpoYXJkYWtlciAgMSBTZXAgOTUgMTE6NTc6NTIKICAgIC0gRml4ZWQgYWxwaGEncyBrZXJuZWwgbG9va3VwczoKICAgICAgKiBDTVUgY29kZSB3YXMgcGFzc2luZyBpbnRzIGludG8gbHNlZWsgKG5lZWRzIGxvbmcpLgoKaGFyZGFrZXIgMTggU2VwIDk1IDE2OjA5OjI1CiAgICBNaW5vciBtb2RzIHRvIFJFQURNRSBmaWxlLgoKaGFyZGFrZXIgMTggU2VwIDk1IDE2OjEzOjQ5CiAgICBNaW5vciBidWc6CiAgICAgIChzaF9jb3VudF9wcm9jcykgY2hlY2sgaWYgcmV0dXJuZWQgZmlsZSBkZXNjcmlwdG9yID4gMCBiZWZvcmUgY29udGludWluZwoKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKQ2hhbmdlcyBzaW5jZSBWMy4wCgpoYXJkYWtlciAxNiBKdW4gOTUgMTA6MTM6NTMKICAgIFJlbW92ZWQgJ2dtYWtlJyAtPiAnbWFrZScgaW4gYWdlbnQvTWFrZWZpbGUKCmhhcmRha2VyIDE2IEp1biA5NSAxMDoxNTo0MgogICAgSG91c2UgY2xlYW5pbmcKICAgICAgLSBDb21waWxlcyBjbGVhbmx5IG9uIGhwdXgvZ2NjCiAgICAJKGV4Y2VwdCBvbmUgaW5jbHVkZSBmaWxlIGVycm9yIEkgZG9uJ3QgaGF2ZSBjb250cm9sIG92ZXIuKQogICAgICAtIENoYW5nZSBWRVJTSU9OX0lEIC0+IFZFUlNJT05JRCB0byBhdm9pZCBjb25mbGljdHMgd2l0aCBIUCdzIGluY2x1ZGVzLgoKaGFyZGFrZXIgMTYgSnVuIDk1IDE0OjEzOjUzCiAgICBIb3VzZSBDbGVhbmluZzoKICAgICAgVG9vayBvdXQgZ2NjL2Fuc2kgcmVxdWlyZW1lbnQgZm9yIHRoZSBhZ2VudC4KICAgICAgcGVycm9yKCkgaXMgY2FsbGVkIG1vcmUgZnJlcXVlbnRseSBmb3IgbG9nIGFyY2hpdmFsCiAgICAKICAgIE5ldyBCdWcvSGF2ZW4ndCBzb2x2ZWQ6CiAgICAgIEhQLVVYOiAgaWYgYWdlbnQvKi5jIGFuZCBhZ2VudC9leHRlbnNpYmxlLyouYyBhcmUgYnVpbHQgd2l0aCBnY2MsCiAgICAJICBEaXNwbGF5U3RyaW5ncyByZXR1cm4gZ2FyYmFnZS4gIE5vIGNsdWUgYXMgdG8gd2h5LgoKaGFyZGFrZXIgMTYgSnVuIDk1IDE0OjIwOjQ4CiAgICBIb3VzZSBDbGVhbmluZzoKICAgICAgTWlzc2VkIGEgVkVSU0lPTl9JRAoKaGFyZGFrZXIgMjEgSnVuIDk1IDA5OjExOjI3CiAgICBDaGFuZ2VkIGFub3RoZXIgImVtcHR5IiBlcnJvciBtZXNzYWdlIGluIHRoZSBDTVUgY29kZSB0byBhIHJlYWwgd2FybmluZy4KCmhhcmRha2VyIDIxIEp1biA5NSAwOToxNTozMQogICAgQnVnIEZpeDoKICAgICAgU3RvcHBlZCByZXR1cm5pbmcgYSBwb2ludGVyIHRvIGEgbm9uLXN0YXRpYyBjaGFyIGFycmF5Li4uICAoLT4gc3RhdGljIGNoYXIpCiAgICAgIFBhc3Npbmcgd3JvbmcgcG9pbnRlciB0byBzZXRlcnJvcnN0YXR1cygpIGluIHNldFBlcnJvcnN0YXR1cygpCiAgICAKICAgIEZlYXR1cmU6CiAgICAgIEFkZGVkIGEgc2V0YWJsZSBtaWIgZW50cnkgdG8gdGhlIHZlcnNpb24gbWliIHRvIHJlLXJlYWQgdGhlIGNvbmZpZyBmaWxlKHMpLgoKaGFyZGFrZXIgMjEgSnVuIDk1IDA5OjE4OjM3CiAgICBlY2UtbWliLmRlZjoKICAgIEJ1ZyBGaXg6CiAgICAgIExvYWRhdmUgbWliOiAgSW50ZWdlciAtPiBEaXNwbGF5U3RyaW5nCiAgICAgIHZlcnNpb25DbGVhckNhY2hlOiAgLT4gcmVhZC13cml0ZSAod2FzIHJlYWQtb25seSkKICAgIAogICAgRmVhdHVyZToKICAgICAgQWRkZWQgYSBzZXRhYmxlIG1pYiBlbnRyeSB0byB0aGUgdmVyc2lvbiBtaWIgdG8gcmUtcmVhZCB0aGUgY29uZmlnIGZpbGUocykuCgpoYXJkYWtlciAyMSBKdW4gOTUgMDk6MTk6MTcKICAgIENoYW5nZWQgZGVmYXVsdCBDQyB0byBjYyBhZ2Fpbi4KCmhhcmRha2VyIDIxIEp1biA5NSAwOToyMDoyMwogICAgc25tcGxpYjoKICAgICAgQnVnIGZpeDogIGZkc2V0IC0+IChpbnQgKikgZmRzZXQgaW4gc2VsZWN0IGNhbGwuCgpoYXJkYWtlciAxMCBKdWwgOTUgMTE6Mjc6MDAKICAgIFR3byBuZXcgY29tbWFuZCBsaW5lIG9wdGlvbnM6CiAgICAgIC1sIExPR0ZJTEUgICAgICAgT3V0cHV0cyBzdGRlcnIvb3V0IHRvIExPR0ZJTEUgKG92ZXJyaWRlcyBjb25maWcuaCBkZWYpCiAgICAgIC1MICAgICAgICAgICAgICAgRG8gTk9UIHdyaXRlIHRvIGEgbG9nIGZpbGUgKG92ZXJyaWRlcyBjb25maWcuaCkKCmhhcmRha2VyIDEwIEp1bCA5NSAxMjoyOTozMgogICAgLSBNb3JlIHBlcnJvcigpcyBjb252ZXJ0ZWQgdG8gc2V0IHRoZSBzbm1wIGVycm9yIHN0YXR1cyBmbGFnIG9uIHRoZSBhZ2VudC4KICAgIC0gZXJyb3Igc3RhdHVzIGZsYWcgaXMgbm93IHByaW9yaXRpemVkLiAgcGVycm9ycyBnZXQgdGhlIGhpZ2hlc3Qgc28KICAgICAgb3RoZXIgZXJyb3JzIHdvbid0IG92ZXJyaWRlIHRoZW0gaWYgdGhleSBoYXBwZW4gYXQgYSBsYXRlciB0aW1lLgogICAgLSBBZGRlZCB0aGUgYmVnaW5uaW5ncyBvZiBhIHJlc3RhcnQgbWliIHRvIHRoZSB2ZXJzaW9uIG1pYiBvZiB0aGUKICAgICAgYWdlbnQuICBTZXR0aW5nIHRoaXMgd3JpdGFibGUgbWliIHRvIG9uZSB3aWxsIGNhdXNlIGl0IHRvIGV4ZWMKICAgICAgaXRzZWxmIGFnYWluIChmb3IgcmVtb3RlIHJlc3RhcnQvdXBkYXRlcykuCgpoYXJkYWtlciAxMCBKdWwgOTUgMTI6MzA6MTkKICAgIE1pbm9yIGNvbW1lbnQgY2hhbmdlIGluIGNvbmZpZy5oCgpoYXJkYWtlciAxNCBKdWwgOTUgMTU6MTI6NDAKICAgIC0gRmluaXNoZWQgdGhlIHJlc3RhcnQgbWliLiAgVGhpcyBpcyBhIHNldGFibGUgc3ViLW1pYiBvZiB0aGUgdmVyc2lvbgogICAgICBtaWIsIGRlZmF1bHQgdG8gVkVSU0lPTi4xMiguMSkuICBJZiBzbm1wLXNldCB0byAnMScsIGl0IHdpbGwgcmVzdGFydAogICAgICB0aGUgYWdlbnQuCiAgICAKICAgICAgKiAgQSBzaWRlIGVmZmVjdCBvZiB0aGlzIGlzIHRoYXQgaXQgcmVzdGFydHMgMyB0aW1lcyBvciBzbywgc2luY2UgaXQKICAgICAgICAgbmV2ZXIgcmV0dXJucyBhIHJlc3BvbmNlIHRvIHRoZSBwcm9ncmFtIGdlbmVyYXRpbmcgdGhlIHJlcXVlc3QuCiAgICAgICAgIElmIHNhaWQgcHJvZ3JhbSB0cmllcyB0byByZXNlbmQgdGhlIHJlcXVlc3QgKHdoaWNoIG1vc3QgZG8pLCBpdAogICAgICAgICB3aWxsIEFHQUlOIHJlc3RhcnQgdGhlIGFnZW50Li4uICBvaCB3ZWxsLgoKaGFyZGFrZXIgMTQgSnVsIDk1IDE1OjE1OjMxCiAgICAtIHNubXBjaGVjayAodGstcGVybC1iNCBzY3JpcHQpIGlzIHByZXR0eSBzdGFibGUgYXQgdGhpcyBwb2ludC4gIEkKICAgICAgbG9zdCBjdXJzZXMgc3VwcG9ydCwgYW5kIG5lZWQgdG8gcmUtYWRkIGl0IHN0aWxsLCBzbyBpdCBpcyBzdGlsbAogICAgICBiZXRhLiAgSXQgZG9lcyBleHBlY3QgYSBsb2cgZmlsZSBvZiBwcm9ibGVtcyB0byBleGlzdCAocG9pbnQgaXQgdG8KICAgICAgL2Rldi9udWxsKSwgYW5kIG5lZWRzIHRvIGtub3cgdGhlIGxvY2F0aW9ucyBvZiB0aGUgbWlicyB0byBjaGVjawogICAgICAod2hpY2ggYXJlbid0IGNvbmZpZ3VyZWQgYnkgJ21ha2UnKSwgc28gaXQgbmVlZHMgc29tZSB3b3JrLgogICAgICBIb3dldmVyLCBpdCB3aWxsIHF1ZXJ5IGFuIGFnZW50LCBjaGVjayBpdHMgcHJvYmxlbXMgYmFzZWQgb24gdGhlCiAgICAgIHN0YXR1cyBvZiB0aGUgZXJyb3IgZmxhZyAob3IgcmV0dXJuIGNvZGUpIGJlaW5nID4xIGFuZCByZXBvcnQgdGhlbQogICAgICB3aXRoIG5lYXQgR1VJLWJ1dHRvbnMgYW5kIHN0dWZmIChvaCB3b3cpLiAgTm8gZG9jdW1lbnRhdGlvbiBvbiBpdCB0aG91Z2guCgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgpDaGFuZ2VzIHNpbmNlIDMtMEExOgoKaGFyZGFrZXIgIDIgSnVuIDk1IDE2OjIzOjQ2CiAgICAtIHZlcnNpb24gdXBkYXRlCgpoYXJkYWtlciAgNSBKdW4gOTUgMTI6NDQ6NDYKICAgIC0gYWdlbnQvZXh0ZW5zaWJsZS9NYWtlZmlsZToKICAgICAgICAtLSAgbm8gbG9uZ2VyIHJlcXVpcmVzIEdOVSBtYWtlCiAgICAgICAgLS0gIGV0YWdzIG5vIGxvbmdlciBydW4gYnkgZGVmYXVsdAogICAgCiAgICAtIFN1bk9TIGFkZGl0aW9uczoKICAgICAgICAtLSBsb2FkYXZlcmFnZSBjaGVja2luZyBNSUIgZW5hYmxlZAogICAgICAgIC0tIGRpc2sgY2hlY2tpbmcgTUlCIGVuYWJsZWQKCmhhcmRha2VyICA5IEp1biA5NSAxMDoyMTowNwogICAgLSBBZGRlZCBhIFNOTVBCTE9DSyBvcHRpb24gdG8gdGhlIGNvbmZpZy5oIGZpbGUuICBTdXBwb3NlZGlseSBzZXR0aW5nCiAgICAgIHRoaXMgdG8gemVybyAobm93IHRoZSBkZWZhdWx0KSB3aWxsIGFsbG93IHNubXAgcmVxdWVzdHMgdG8gdGltZSBvdXQuCiAgICAgIEhhdmVuJ3QgdGVzdGVkIGl0IHRocm91Z2hseS4KICAgICAgICAtLSBDb250cmlidXRlZCBieSBTYW5qYWkgTmFyYWluIDxuYXJhaW5AdGh1bXBlci5iZWxsY29yZS5jb20+CgpoYXJkYWtlciAgOSBKdW4gOTUgMTA6MjE6NTEKICAgIC0gQ29ycmVjdGx5IG9yZGVyZWQgdGhlIG1pYiB0YWJsZSBsaXN0LgogICAgICAtLSAgTmVlZCB0byB3cml0ZSBhIGR5bmFtaWMgY2hlY2tlci9yZS1vcmRlcmVyLgoKaGFyZGFrZXIgIDkgSnVuIDk1IDEwOjIzOjM1CiAgICAtIENvcnJlY3QgdXNhZ2UgZm9yIHNubXB3YWxrIGlzIG5vdyBwb3NzaWJsZS4gIElFLCBzbm1wd2FsayB0YXJnZXQKICAgICAgLjEuMy42LjEgd2lsbCBub3cgYnJvd3NlIHRoZSBlbnRpcmUgdHJlZS4KICAgICAgLS0gU3RpbGwgZmFpbHMgb24gcmVsb2NhdGFibGUgZXh0ZW5zaWJsZSBtaWJzIGFuZCB3aWxsIHVudGlsIEkKICAgICAgICAgd3JpdGUgYSBkeW5hbWljIHRyZWUgYnVpbGRlci4KCmhhcmRha2VyICA5IEp1biA5NSAxNDowODoxNQogICAgLSBDaGFuZ2VkIHRlc3QgLXggdG8gdGVzdCAtZiBpbiBzbm1wbGliL01ha2VmaWxlLiAgTm90IGFsbCBPU2VzCiAgICAgIChpZSB1bHRyaXgpIGhhbmRsZSB0aGlzLgoKaGFyZGFrZXIgMTIgSnVuIDk1IDEwOjM1OjM4CiAgICAtIGxvY2FsL3RyYXBub3RpZjoKICAgICAgLS0gdXNlcyBzbm1wdjIgbm93IChjb3JyZWN0bHkpCgpoYXJkYWtlciAxMiBKdW4gOTUgMTA6Mzc6NDYKICAgIC0gUmVwb3J0cyBhbGwgZXJyb3JzIHRocm91Z2ggdGhlIGVycm9yIG1pYiBub3cgaW5zdGVhZCBvZiB0aHJvdWdoIHBlcnJvcigpLgogICAgLSBDbGVhbmVkIHVwIGVycm9yIGhhbmRsaW5nLiAgU2hvdWxkbid0IGhhbmRsZSBlcnJvcnMgbmljZWx5IGlmIHN5c3RlbQogICAgICBlcnJvcnMgb2NjdXIgd2hlbiBzY2FubmluZyBhbiBleHRlbnNpYmxlIG1pYi4KCmhhcmRha2VyIDE0IEp1biA5NSAxMToyNDoyMAogICAgYWdlbnQ6CiAgICAtIE1pYiB0YWJsZSBpcyBub3cgcXNvcnRlZCBhdCBydW4gdGltZSBhbmQgdGhlIGV4dGVuc2libGUgdmFyaWFibGVzIGFyZQogICAgICBzb3J0ZWQgaW4gYXQgdGhpcyB0aW1lLiAgVGhpcyBicmluZ3MgdGhlIGFnZW50IHVwIHRvIGNvcnJlY3QKICAgICAgU05NUHdhbGsvZ2V0bmV4dCBwcm90b2NvbHMuICBZb3UgY2FuIG5vdyB3YWxrIHRoZSBlbnRpcmUgdHJlZQogICAgICBpbmNsdWRpbmcgdGhlIGV4dGVuc2libGUgc2VjdGlvbnMgYW5kIGl0IHdvbid0IHN0b3AuCiAgICAgICogVGhpcyBoYXMgYW4gYWRkZWQgYm9udXMgb2YgY2hlY2tpbmcgdGhlIG1pYiB0YWJsZQogICAgICAgIChhZ2VudC9zbm1wX3ZhcnMuYykgZm9yIGNvcnJlY3Qgb3JkZXIuICBJIGhhdmUgYWRkZWQgdGhpbmdzIHRvIHRoZQogICAgICAgIHdyb25nIGxvY2F0aW9uIHRvbyBtYW55IHRpbWVzIGFuZCBjYXVzZWQgdGhlIGFnZW50IHRvIGZ1bmN0aW9uCiAgICAgICAgaW5jb3JyZWN0bHkuICBNYWpvciB3aW4uCgpoYXJkYWtlciAxNCBKdW4gOTUgMTI6NTY6NDkKICAgIC0gQ2xlYW5lZCB1cC9BZGRlZCBtb3JlIGRvY3VtZW50YXRpb24gdG8gY29uZmlnLmgKICAgIC0gR0xPQkFMU0VDVVJJVFkgbm93IHVzZXMgdGhlIGxlZnQgbW9zdCBmb3VyIGJpdHMgaW4gdGhlIE1JQiBhY2wuCiAgICAgIFRoaXMgaXMgbW9yZSBjb21wYXRpYmxlIHdpdGggdGhlIENNVSBjb2RlIHRoYW4gdXNpbmcgdGhlIGxlZnQgbW9zdAogICAgICAyLCB3aGljaCB3YXMgZG9uZSBwcmV2aW91c2x5LgoKCmhhcmRha2VyIDE0IEp1biA5NSAxMzo0MzozOAogICAgLSBBZGRlZCBtb3JlIGRvY3VtZW50YXRpb24gdG8gdGhlIFJFQURNRSBmaWxlLgogICAgLSBDcmVhdGVkIGEgbWFpbGluZyBsaXN0IHRvIGhhbmRsZSBhbm5vdW5jZW1lbnRzCiAgICAgICh1Y2Qtc25tcC1hbm5vdW5jZUB1Y2Qtc25tcC51Y2RhdmlzLmVkdSkKCgojIGdlbmVyYXRlZCB1c2luZzoKIyAgY3ZzMmNsIC1iIC1yIC1mIENoYW5nZUxvZy5hZGQgLUYgVjQtMi1wYXRjaGVzIC0tbm8td3JhcCAtUwojICBwZXJsIGRpc3QvY2hhbmdlbG9nZml4IDwgQ2hhbmdlTG9nLmFkZCA+IENoYW5nZUxvZy5yZWFsbHlhZGQK