MjAwMi0wMi0wOSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogUkVBRE1FOiBGaXggdHlwby4KCSogZG9jcy9DSEFOR0VTOiBNaW5vciBmaXhlcy4KCgoJKiBWZXJzaW9uIDIuMC44IHJlbGVhc2VkLgoJPT09PT09PT09PT09PT09PT09PT09PT09PQoKCjIwMDItMDItMDggIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIGRvY3MvQ0hBTkdFUzogVXBkYXRpbmcgZm9yIDIuMC44LgoKCSogaW5jbHVkZS9mcmVldHlwZS9mcmVldHlwZS5oOiBTZXR0aW5nIGBQQVRDSF9MRVZFTCcgdG8gOCBhbmQKCXJlbW92aW5nIGBGVF9HZXRfTmV4dF9DaGFyJyBmcm9tIHRoZSBBUEkgKHRlbXBvcmFyaWx5KS4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnJlZXR5cGUuaDogQWRkaW5nIGNvbW1lbnRzIHRvIEZUX0dldF9OZXh0X0NoYXI7Cglub3RlIHRoYXQgdGhpcyBmdW5jdGlvbiBtaWdodCB0ZW1wb3JhcmlseSBiZSByZW1vdmVkIGZvciB0aGUgMi4wLjgKCXJlbGVhc2UuCgoyMDAyLTAyLTA3ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBzcmMvcGNmL3BjZnJlYWQuYyAocGNmX2xvYWRfZm9udCk6IFJlbW92ZWQgaW1tYXR1cmUgc3VwcG9ydCBvZgoJdGhlIEFWRVJBR0VfV0lEVEggcHJvcGVydHkuCgoyMDAyLTAyLTA2ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBzcmMvc2ZudC9zZm9ianMuYyAoU0ZOVF9Mb2FkX0ZhY2UpOiBTaW5jZSBtYW55IGZvbnRzIGVtYmVkZGVkIGluCglQREYgZG9jdW1lbnRzIGRvIG5vdCBpbmNsdWRlICdjbWFwJywgJ3Bvc3QnIGFuZCAnbmFtZScgdGFibGVzLCB0aGUKCVNGTlQgZmFjZSBsb2FkZXIgaGFzIGJlZW4gY2hhbmdlZCB0byBub3QgaW1tZWRpYXRlbHkgcmVwb3J0IGFuCgllcnJvciBpZiB0aGVzZSBhcmUgbm90IHByZXNlbnQuCgoJTm90ZSB0aGF0IHRoZSBzcGVjaWZpY2F0aW9uIF9yZXF1aXJlc18gdGhlc2UgdGFibGVzLCBidXQgQWRvYmUKCXNlZW1zIHRvIGlnbm9yZSBpdCBjb21wbGV0ZWx5LgoKCSogc3JjL3NmbnQvdHRjbWFwLmM6IFJlbW92aW5nIGNvbXBpbGVyIHdhcm5pbmdzLgoKCSogc3JjL3BjZi9wY2ZyZWFkLmMgKHBjZl9yZWFkX1RPQyk6IFVzZSBGVF9VSW50LgoJKHBjZl9wYXJzZV9tZXRyaWMsIHBjZl9wYXJzZV9jb21wcmVzc2VkX21ldHJpYyk6IFJlbW92ZWQuICBDb2RlCglpcyBub3cgaW4gLi4uCgkocGNmX2dldF9tZXRyaWMpOiBIZXJlLgoJKHBjZlNlZWtUb1R5cGUpOiBSZW5hbWVkIHRvIC4uLgoJKHBjZl9zZWVrX3RvX3RhYmxlX3R5cGUpOiBUaGlzLgoJVXNlIEZUX0ludC4KCShwY2ZIYXNUeXBlKTogUmVuYW1lZCB0byAuLi4KCShwY2ZfaGFzX3RhYmxlX3R5cGUpOiBUaGlzLgoJVXNlIEZUX0ludC4KCShmaW5kX3Byb3BlcnR5KTogUmVuYW1lZCB0byAuLi4KCShwY2ZfZmluZF9wcm9wZXJ0eSk6IFRoaXMuCglVc2UgRlRfSW50LgoJKHBjZl9nZXRfYml0bWFwcywgcGNmX2dldF9lbmNvZGluZ3MpOiBIYW5kbGUgaW52YWxpZCBQQ0YgZm9udHMKCWJldHRlciAoZGVsYXlpbmcgZm9ybWF0IGNoZWNrcyBvdXQgb2YgRlRfQWNjZXNzX0ZyYW1lIC4uCglGVF9Gb3JnZXRfRnJhbWUgYmxvY2tzIHRvIGF2b2lkIGxlYXZpbmcgdGhlIHN0cmVhbSBpbiBhbiBpbmNvcnJlY3QKCXN0YXRlIHdoZW4gZW5jb3VudGVyaW5nIGFuIGludmFsaWQgUENGIGZvbnQpLgoKCSogc3JjL3BjZi9wY2Zkcml2ZXIuYyAoUENGX0RvbmVfRmFjZSk6IFJlbmFtZWQgdG8gLi4uCgkoUENGX0ZhY2VfRG9uZSk6IFRoaXMuCgkoUENGX0luaXRfRmFjZSk6IFJlbmFtZWQgdG8gLi4uCgkoUENGX0ZhY2VfSW5pdCk6IFRoaXMuCgkoUENGX0dldF9DaGFyX0luZGV4KTogUmVuYW1lZCB0byAuLi4KCShQQ0ZfQ2hhcl9HZXRfSW5kZXgpOiBUaGlzLgoJKFBDRl9HZXRfTmV4dF9DaGFyKTogUmVuYW1lZCB0byAuLi4KCShQQ0ZfQ2hhcl9HZXRfTmV4dCk6IFRoaXMuCgkocGNmX2RyaXZlcl9jbGFzcyk6IFVwZGF0ZWQuCgoJKiBzcmMvcGNmL3BjZi5oIChQQ0ZfRG9uZV9GYWNlKTogUmVtb3ZlZC4KCjIwMDItMDItMDYgIERldGxlZiBX/HJrbmVyICA8VGV0aVNvZnRAYXBnLmxhaG4uZGU+CgoJKiBzcmMvcGNmL3BjZmRyaXZlci5jIChGVF9Eb25lX0ZhY2UpOiBGaXhlZCBzbWFsbCBtZW1vcnkgbGVhay4KCgkqIHNyYy9wY2YvcGNmcmVhZC5jIChwY2ZfbG9hZF9mb250KTogTm93IGhhbmRsZXMgdGhlIGBBVkVSQUdFX1dJRFRIJwoJcHJvcGVydHkgdG8gcmV0dXJuIGNvcnJlY3QgY2hhcmFjdGVyIHBpeGVsICh3aWR0aC9oZWlnaHQpIHBhaXJzIGZvcgoJZW1iZWRkZWQgYml0bWFwcy4KCjIwMDItMDItMDQgIEtlaXRoIFBhY2thcmQgIDxrZWl0aHBAa2VpdGhwLmNvbT4KCglBZGRpbmcgdGhlIGZ1bmN0aW9uIGBGVF9HZXRfTmV4dF9DaGFyJywgZG9pbmcgdGhlIG9idmlvdXMgdGhpbmcKCXcuci50LiB0aGUgc2VsZWN0ZWQgY2hhcm1hcC4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnJlZXR5cGUuaDogQWRkIHByb3RvdHlwZS4KCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdGRyaXZlci5oOiBBZGQgYEZURHJpdmVyX2dldE5leHRDaGFyJwoJdHlwZWRlZi4KCShGVF9Ecml2ZXJfQ2xhc3MpOiBVc2UgaXQuCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvcHNuYW1lcy5oOiBBZGQgYFBTX05leHRfVW5pY29kZV9GdW5jJwoJdHlwZWRlZi4KCShQU05hbWVzX0ludGVyZmFjZSk6IFVzZSBpdC4KCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC90dHR5cGVzLmg6IEFkZCBgVFRfQ2hhck5leHRfRnVuYycKCXR5cGVkZWYuCgkoVFRfQ01hcFRhYmxlKTogVXNlIGl0LgoKCSogc3JjL2Jhc2UvZnRvYmpzLmMgKEZUX0dldF9OZXh0X0NoYXIpOiBOZXcgZnVuY3Rpb24sIGltcGxlbWVudGluZwoJaGlnaC1sZXZlbCBBUEkuCgkqIHNyYy9jZmYvY2ZmZHJpdnIuYyAoY2ZmX2dldF9uZXh0X2NoYXIpOiBOZXcgZnVuY3Rpb24uCgkoY2ZmX2RyaXZlcl9jbGFzcyk6IEFkZCBpdC4KCSogc3JjL2NpZC9jaWRyaXZlci5jIChDaWRfR2V0X05leHRfQ2hhcik6IE5ldyBmdW5jdGlvbi4KCSh0MWNpZF9kcml2ZXJfY2xhc3MpOiBBZGQgaXQuCgkqIHNyYy9wY2YvcGNmZHJpdmVyLmMgKFBDRl9HZXRfTmV4dF9DaGFyKTogTmV3IGZ1bmN0aW9uLgoJKHBjZl9kcml2ZXJfY2xhc3MpOiBBZGQgaXQuCgkqIHNyYy9wc25hbWVzL3BzbW9kdWxlLmMgKFBTX05leHRfVW5pY29kZSk6IE5ldyBmdW5jdGlvbi4KCShwc25hbWVzX2ludGVyZmFjZSk6IEFkZCBpdC4KCSogc3JjL3NmbnQvdHRjbWFwLmMgKGNvZGVfdG9fbmV4dDAsIGNvZGVfdG9fbmV4dDIsIGNvZGVfdG9fbmV4dDQsCgljb2RlX3RvX25leHQ2LCBjb2RlX3RvX25leHRfOF8xMiwgY29kZV90b19uZXh0XzEwKTogTmV3IGF1eGlsaWFyeQoJZnVuY3Rpb25zLgoJKFRUX0NoYXJNYXBfTG9hZCk6IFVzZSB0aGVtLgoJKiBzcmMvdHJ1ZXR5cGUvdHRkcml2ZXIuYyAoR2V0X05leHRfQ2hhcik6IE5ldyBmdW5jdGlvbi4KCSh0dF9kcml2ZXJfY2xhc3MpOiBBZGQgaXQuCgkqIHNyYy90eXBlMS90MWRyaXZlci5jIChHZXRfTmV4dF9DaGFyKTogTmV3IGZ1bmN0aW9uLgoJKHQxX2RyaXZlcl9jbGFzcyk6IEFkZCBpdC4KCSogc3JjL3dpbmZvbnRzL3dpbmZudC5jIChGTlRfR2V0X05leHRfQ2hhcik6IE5ldyBmdW5jdGlvbi4KCSh3aW5mbnRfZHJpdmVyX2NsYXNzKTogQWRkIGl0LgoKCSogc3JjL3BjZi9wY2ZyZWFkLmMgKHBjZl9sb2FkX2ZvbnQpOiBGb3Igbm93LCByZXBvcnQgVW5pY29kZSBmb3IKCVVuaWNvZGUgYW5kIExhdGluIDEgZW5jb2RpbmdzLgoKMjAwMi0wMi0wMiAgS2VpdGggUGFja2FyZCAgPGtlaXRocEBrZWl0aHAuY29tPgoKCSogYnVpbGRzL3VuaXgvZnJlZXR5cGUtY29uZmlnLmluOiBBZGQgbWlzc2luZyBgZmknLgoKCgkqIFZlcnNpb24gMi4wLjcgcmVsZWFzZWQuCgk9PT09PT09PT09PT09PT09PT09PT09PT09CgoKMjAwMi0wMi0wMSAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogaW5jbHVkZS9mcmVldHlwZS9mcmVldHlwZS5oOiBJbmNyZWFzaW5nIEZSRUVUWVBFX1BBVENIIHRvIDcKCWZvciB0aGUgbmV3IHJlbGVhc2UuCgoyMDAyLTAxLTMxICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBSRUFETUUsIFJFQURNRS5VTlgsIGRvY3MvQ0hBTkdFUzogVXBkYXRpbmcgZG9jdW1lbnRhdGlvbiBmb3IgdGhlCgkyLjAuNyByZWxlYXNlLgoKMjAwMi0wMS0zMCAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogSU5TVEFMTDogTW92ZWQgdG8gLi4uCgkqIGRvY3MvSU5TVEFMTDogSGVyZSB0byBhdm9pZCBjb25mbGljdHMgd2l0aCB0aGUgYGluc3RhbGwnIHNjcmlwdCBvbgoJV2luZG93cywgd2hlcmUgdGhlIGZpbGVzeXN0ZW0gZG9lc24ndCBwcmVzZXJ2ZSBjYXNlLgoKMjAwMi0wMS0yOSAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogY29uZmlndXJlOiBGaXhlZCB0aGUgc2NyaXB0LiAgSXQgcHJldmlvdXNseSBkaWRuJ3QgYWNjZXB0IG1vcmUKCXRoYW4gb25lIGFyZ3VtZW50IGNvcnJlY3RseS4gIEZvciBleGFtcGxlLCB3aGVuIHR5cGluZzoKCgkgIC4vY29uZmlndXJlIC0tZGlzYWJsZS1zaGFyZWQgLS1kaXNhYmxlLW5scwoKCXRoZSBgLS1kaXNhYmxlLW5scycgd2FzIGluY29ycmVjdGx5IHNlbnQgdG8gdGhlIGBtYWtlJyBwcm9ncmFtLgoKMjAwMi0wMS0yOSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogUkVBRE1FLlVOWDogRml4IHR5cG8uCgkqIGJ1aWxkcy91bml4L2luc3RhbGwubWsgKHVuaW5zdGFsbCk6IEZpeCBsaWJyYXJ5IG5hbWUgZm9yIGxpYnRvb2wuCgoyMDAyLTAxLTI4ICBGcmFuY2VzY28gWmFwcGEgTmFyZGVsbGkgIDxGcmFuY2VzY28uWmFwcGEuTmFyZGVsbGlAZW5zLmZyPgoKCSogc3JjL3BjZi9wY2Zkcml2ZXIuYyAoUENGX0RvbmVfRmFjZSk6IEZpeCBpbmNvcnJlY3QgZGVzdHJ1Y3Rpb24gb2YKCXRoZSBmYWNlIG9iamVjdCAoZmFjZS0+dG9jLnRhYmxlcywgZmFjZS0+cm9vdC5mYW1pbHlfbmFtZSwKCWZhY2UtPnJvb3QuYXZhaWxhYmxlX3NpemUsIGZhY2UtPmNoYXJzZXRfZW5jb2RpbmcsCglmYWNlLT5jaGFyc2V0X3JlZ2lzdHJ5IGFyZSBub3cgZnJlZWQpLiAgVGhhbmtzIHRvIE5pZWxzIE1vc2VsZXkuCgoyMDAyLTAxLTI4ICBSb2JlcnRvIEFsYW1lZGEgIDxvamFuY2Fub0BnZWVrbWFpbC5kZT4KCgkqIHNyYy90eXBlMS90MWxvYWQuYyAocGFyc2VfZW5jb2RpbmcpOiBTZXQgYGxvYWRlci0+bnVtX2NoYXJzJy4KCjIwMDItMDEtMjggIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy90eXBlMS90MWxvYWQuYyAocGFyc2Vfc3VicnMsIHBhcnNlX2NoYXJzdHJpbmdzKTogVXNlIGNvcHkKCW9mIGBiYXNlJyBzdHJpbmcgZm9yIGRlY3J5cHRpbmcgdG8gbm90IG1vZGlmeSB0aGUgb3JpZ2luYWwgZGF0YS4KCUJhc2VkIG9uIGEgcGF0Y2ggYnkgSmFrdWIgQm9ndXN6IDxxYm9vc2hAcGxkLm9yZy5wbD4uCgoyMDAyLTAxLTI3ICBHaXVsaWFubyBQb2NoaW5pICA8cG9jaGluaUBzaGlueS5pdD4KCgkqIHNyYy9zbW9vdGgvZnRncmF5cy5jIChncmF5X3JlbmRlcl9zY2FubGluZSk6IEZpeCBidWcgd2hpY2ggY2F1c2VkCgliYWQgcmVuZGVyaW5nIG9mIHRoaW4gbGluZXMgKGxlc3MgdGhhbiBvbmUgcGl4ZWwgdGhpY2spLgoKMjAwMi0wMS0yNSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL2NmZi9jZmZkcml2ci5jIChjZmZfZ2V0X25hbWVfaW5kZXgpOiBNYWtlIGxhc3QgcGF0Y2ggd29yawoJYWN0dWFsbHkuCgoyMDAyLTAxLTI1ICBNYXJ0aW4gWmluc2VyICA8emluc2VyQGRlY3VzLmRlPgoKCSogc3JjL2NhY2hlL2Z0Y2NhY2hlLmMgKGZ0Y19ub2RlX2RvbmUsIGZ0Y19ub2RlX2Rlc3Ryb3kpOiBGaXgKCWNvbXBpbGF0aW9uIHdhcm5pbmdzLgoJKiBzcmMvYmFzZS9kZXNjcmlwLm1tcyAoT0JKUyk6IEFkZCBgZnRtbS5vYmonLgoJKiBzcmMvY2FjaGUvZGVzY3JpcC5tbXMgKGZ0Y2FjaGUub2JqKTogRGVwZW5kZW5jaWVzIGFkZGVkLgoKMjAwMi0wMS0yNSAgV0FORyBZaSAgPHdhbmd5aUBmb3VuZGVyLmNvbS5jbj4KCgkqIHNyYy9jZmYvY2ZmZHJpdnIuYyAoY2ZmX2dldF9uYW1lX2luZGV4KTogRml4IGRlYWxsb2NhdGlvbiBidWcuCgoyMDAyLTAxLTIxICBBbnRvaW5lIExlY2EgIDxBbnRvaW5lLUZyZWV0eXBlQExlY2EtTWFydGkub3JnPgoKCSogZG9jcy9QQVRFTlRTOiBUeXBvIGZpeGVkICh0aGFua3MgdG8gRGV0bGVmIGBIYXdrZXllJyBX/HJrbmVyKSBpbgoJdGhlIFVSTCBmb3IgdGhlIG9ubGluZSByZXNvdXJjZS4KCjIwMDItMDEtMTggIElhbiBCcm93biAgPGlhbi5icm93bkBwcmludHNvZnQuZGU+CgoJKiBidWlsZHMvd2luMzIvZnRkZWJ1Zy5jOiBOZXcgZmlsZS4KCSogYnVpbGRzL3dpbjMyL3Zpc3VhbGMvZnJlZXR5cGUuZHNwOiBVcGRhdGVkLgoKMjAwMi0wMS0xOCAgRGV0bGVmIFf8cmtuZXIgIDxUZXRpU29mdEBhcGcubGFobi5kZT4KCgkqIGJ1aWxkcy9hbWlnYS9zcmMvYmFzZS9mdHN5c3RlbS5jOiBVcGRhdGVkIGZvciBBbWlnYU9TIDMuOS4KCSogYnVpbGRzL2FtaWdhL1JFQURNRTogVXBkYXRlZC4KCjIwMDItMDEtMTggIElhbiBCcm93biAgPGlhbi5icm93bkBwcmludHNvZnQuZGU+CgoJKiBidWlsZHMvd2luMzIvdmlzdWFsYy9mcmVldHlwZS5kc3A6IFVwZGF0ZWQuCgoyMDAyLTAxLTEzICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBidWlsZHMvdW5peC9mcmVldHlwZTIuYTQ6IFRoZSBzY3JpcHQgd2FzIHN0aWxsIGJ1Z2d5LgoJKiBidWlsZHMvdW5peC9mcmVldHlwZS1jb25maWcuaW46IE1ha2UgaXQgcmVhbGx5IHdvcmsgZm9yIGFueSBpbnN0YWxsCglwcmVmaXguCgoyMDAyLTAxLTEwICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBidWlsZHMvdW5peC9mcmVldHlwZTIuYTQ6IEZpeCBzb21lIHNlcmlvdXMgYnVncy4KCjIwMDItMDEtMDkgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIGJ1aWxkcy91bml4L2NvbmZpZ3VyZS5hYzogQnVpbGQgdG9wLWxldmVsIEphbWZpbGUuCgoyMDAyLTAxLTA5ICBNYXhpbSBTaGVtYW5hcmV2ICA8bWNzZWVtYWdnQHlhaG9vLmNvbT4KCgkqIHNyYy9zbW9vdGgvZnRncmF5cy5jIChncmF5X3JlbmRlcl9saW5lKTogU21hbGwgb3B0aW1pemF0aW9uIHRvCgl0aGUgc21vb3RoIGFudGktYWxpYXNlZCByZW5kZXJlciB0aGF0IGRlYWxzIHdpdGggdmVydGljYWwgc2VnbWVudHMuCglUaGlzIHJlc3VsdHMgaW4gYSA1LTclIHNwZWVkdXAgaW4gcmVuZGVyaW5nIHNwZWVkLgoKMjAwMi0wMS0wOCAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCUFkZGVkIHNvbWUgd3JhcHBlciBzY3JpcHRzIHRvIG1ha2UgdGhlIGluc3RhbGxhdGlvbiBtb3JlCglVbml4LWZyaWVuZGx5LgoKCSogY29uZmlndXJlLCBpbnN0YWxsOiBOZXcgZmlsZXMuCgoJKiBJTlNUQUxMLCBSRUFETUUuVU5YOiBVcGRhdGVkIGluc3RhbGxhdGlvbiBkb2N1bWVudGF0aW9uIHRvIHVzZSB0aGUKCW5ldyAnY29uZmlndXJlJyBhbmQgJ2luc3RhbGwnIHNjcmlwdHMuCgoyMDAyLTAxLTA3ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoKCSogVmVyc2lvbiAyLjAuNiByZWxlYXNlZC4KCT09PT09PT09PT09PT09PT09PT09PT09PT0KCgoJKiBkb2NzL0JVR1MsIGRvY3MvQ0hBTkdFUzogVXBkYXRpbmcgZG9jdW1lbnRhdGlvbiBmb3IgMi4wLjYgcmVsZWFzZS4KCgkqIHNyYy90b29scy9kb2NtYWtlci5weTogRml4ZWQgSFRNTCBxdW90aW5nIGluIHNvdXJjZXMuCgkoaHRtbF9mb3JtYXQpOiBSZXBsYWNlZCB3aXRoIC4uLgoJKGh0bWxfcXVvdGUpOiBOZXcgZnVuY3Rpb24uCgkoaHRtbF9xdW90ZTApOiBOZXcgZnVuY3Rpb24uCgkoRG9jQ29kZTo6ZHVtcF9odG1sKTogU21hbGwgaW1wcm92ZW1lbnQuCgkoRG9jUGFyYWdyYXBoOjpkdW1wLCBEb2NCbG9jazo6aHRtbCk6IFVzZSBodG1sX3F1b3RlMCBhbmQgaHRtbF9xdW90ZS4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvY29uZmlnL2Z0b3B0aW9uLmg6IFNldHRpbmcgZGVmYXVsdCBvcHRpb25zIGZvcgoJYSByZWxlYXNlIGJ1aWxkIChkZWJ1Z2dpbmcgb2ZmLCBieXRlY29kZSBpbnRlcnByZXRlciBvZmYpLgoKCSogc3JjL2Jhc2UvZnRvYmpzLmMsIHNyYy9iYXNlL2Z0b3V0bG4uYywgc3JjL2NhY2hlL2Z0Y2NtYXAuYywKCXNyYy9jZmYvY2ZmbG9hZC5jLCBzcmMvY2ZmL2NmZm9ianMuYywgc3JjL3BzaGludGVyL3BzaGFsZ28yLmMsCglzcmMvc2ZudC90dGxvYWQuYywgc3JjL3NmbnQvdHRzYml0LmM6IFJlbW92aW5nIHNtYWxsIGNvbXBpbGVyCgl3YXJuaW5ncyAoaW4gcGVkYW50aWMgY29tcGlsYXRpb24gbW9kZXMpLgoKMjAwMi0wMS0wNSAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogc3JjL2F1dG9oaW50L2FoaGludC5jIChhaF9hbGlnbl9saW5rZWRfZWRnZSk6IE1vZGlmaWVkIGNvbXB1dGF0aW9uCglvZiBhdXRvLWhpbnRlZCBzdGVtIHdpZHRoczsgdGhpcyBhdm9pZHMgY29sb3IgZnJpbmdlcyBpbgoJYENsZWFyVHlwZS1saWtlJyByZW5kZXJpbmcuCgoJKiBzcmMvdHJ1ZXR5cGUvdHRnbG9hZC5jIChUVF9Mb2FkX0dseXBoX0hlYWRlciwKCVRUX0xvYWRfU2ltcGxlX0dseXBoLCBUVF9Mb2FkX0NvbXBvc2l0ZV9HbHlwaCwgbG9hZF90cnVldHlwZV9nbHlwaCk6CglNb2RpZmllZCB0aGUgVHJ1ZVR5cGUgbG9hZGVyIHRvIG1ha2UgaXQgbW9yZSBwYXJhbm9pZDsgdGhpcyBhdm9pZHMKCW5hc3R5IGJ1ZmZlciBvdmVyZmxvd3MgaW4gdGhlIGNhc2Ugb2YgaW52YWxpZCBnbHlwaCBkYXRhIChhcwoJZW5jb3VudGVyZWQgaW4gdGhlIG91dHB1dCBvZiBzb21lIGJ1Z2d5IGZvbnQgY29udmVydGVycykuCgoyMDAyLTAxLTA0ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBSRUFETUUuVU5YOiBBZGRlZCBzcGVjaWFsIFJFQURNRSBmaWxlIGZvciBVbml4IHVzZXJzLgoKCSogYnVpbGRzL3VuaXgvZnRzeXN0ZW0uYyAoRlRfTmV3X1N0cmVhbSk6IEZpeGVkIHR5cG8uCgoJKiBzcmMvYmFzZS9mdG9ianMuYzogQWRkZWQgI2luY2x1ZGUgRlRfT1VUTElORV9IIHRvIGdldCByaWQKCW9mIGNvbXBpbGVyIHdhcm5pbmdzLgoKCSogc3JjL2Jhc2UvZnRvdXRsbi5jIChGVF9PdXRsaW5lX0NoZWNrKTogUmVtb3ZlIGNvbXBpbGVyIHdhcm5pbmcuCgoyMDAyLTAxLTAzICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvdHlwZTEvdDFvYmpzLmMgKFQxX0ZhY2VfSW5pdCk6IEFkZCBjYXN0IHRvIGF2b2lkIGNvbXBpbGVyCgl3YXJuaW5nLgoKMjAwMi0wMS0wMyAgS2VpdGggUGFja2FyZCAgPGtlaXRocEBrZWl0aHAuY29tPgoKCSogYnVpbGRzL3VuaXgvZnRzeXN0ZW0uYyAoRlRfTmV3X1N0cmVhbSk6IEFkZGVkIGEgZml4IHRvIGVuc3VyZSB0aGF0CglhbGwgRnJlZVR5cGUgaW5wdXQgc3RyZWFtcyBhcmUgY2xvc2VkIGluIGNoaWxkIHByb2Nlc3NlcyBvZiBhIGBmb3JrJwoJb24gVW5peCBzeXN0ZW1zLiAgVGhpcyBpcyBpbXBvcnRhbnQgdG8gYXZvaWQgKHBvdGVudGlhbCkgYWNjZXNzCgljb250cm9sIGlzc3Vlcy4KCjIwMDItMDEtMDMgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy90eXBlMS90MW9ianMuYyAoVDFfRmFjZV9Jbml0KTogRml4ZWQgYSBidWcgdGhhdCBjcmFzaGVkIHRoZQoJbGlicmFyeSB3aGVuIGRlYWxpbmcgd2l0aCBjZXJ0YWluIHdlaXJkIGZvbnRzIGxpa2UgYFN0YWxpbmdyYWQnLCBpbgoJYHNhZG4ucGZiJyAodGhpcyBmb250IGhhcyBubyBmdWxsIGZvbnQgbmFtZSBlbnRyeSkuCgoJKiBzcmMvYmFzZS9mdG91dGxuLmMsIGluY2x1ZGUvZnJlZXR5cGUvZnRvdXRsbi5oIChGVF9PdXRsaW5lX0NoZWNrKToKCU5ldyBmdW5jdGlvbiB0byBjaGVjayB0aGUgY29uc2lzdGVuY3kgb2Ygb3V0bGluZSBkYXRhLgoKCSogc3JjL2Jhc2UvZnRvYmpzLmMgKEZUX0xvYWRfR2x5cGgpOiBVc2UgYEZUX091dGxpbmVfQ2hlY2snIHRvCgllbnN1cmUgdGhhdCBsb2FkZWQgZ2x5cGhzIGFyZSB2YWxpZC4gIFRoaXMgYWxsb3dzIGNlcnRhaW4gZm9udHMgbGlrZQoJYHR0MTA5NW1fLnR0ZicgdG8gYmUgbG9hZGVkIGV2ZW4gdGhvdWdoIGl0IGFwcGVhcnMgdGhleSBjb250YWluCglyZWFsbHkgZnVua3kgZ2x5cGhzLgoKCVRoZXJlIHN0aWxsIGlzIGEgYnVnIHRoZXJlLCB0aG91Z2guCgoJKiBzcmMvdHJ1ZXR5cGUvdHRnbG9hZC5jIChsb2FkX3RydWV0eXBlX2dseXBoKTogRml4IGVycm9yIGNvbmRpdGlvbi4KCjIwMDEtMTItMzAgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9hdXRvaGludC9haGhpbnQuYyAoYWhfaGludGVyX2xvYWQpOiBGaXggYWR2YW5jZSB3aWR0aAoJY29tcHV0YXRpb24gb2YgYXV0by1oaW50ZWQgZ2x5cGhzLiAgVGhpcyBub3RpY2VhYmx5IGltcHJvdmVzIHRoZQoJc3BhY2luZyBvZiBsZXR0ZXJzIGluIEtERSBhbmQgR25vbWUuCgoyMDAxLTEyLTI1ICBBbnRvaW5lIExlY2EgIDxBbnRvaW5lLUZyZWV0eXBlQExlY2EtTWFydGkub3JnPgoKCSogYnVpbGRzL2Rvcy9kZXRlY3QubWs6IENvcnJlY3RpbmcgdGhlIG9yZGVyIGZvciBCb3JsYW5kIGNvbXBpbGVyczoKCTE2LWJpdCBiY2Mgd2FzIG5ldmVyIHNlbGVjdGVkLCBhbHdheXMgb3ZlcnJpZGRlbiBieSAzMi1iaXQgYmNjMzIuCgoyMDAxLTEyLTIyICBGcmFuY2VzY28gWmFwcGEgTmFyZGVsbGkgIDxGcmFuY2VzY28uWmFwcGEuTmFyZGVsbGlAZW5zLmZyPgoKCSogc3JjL3BmYy9wY2ZyZWFkLmMgKHBjZl9sb2FkX2ZvbnQpOiBIYW5kbGUgcHJvcGVydHkgYFBPSU5UX1NJWkUnCglhbmQgZml4IGluY29ycmVjdCBjb21wdXRhdGlvbiBvZiBgYXZhaWxhYmxlX3NpemVzJy4KCjIwMDEtMTItMjIgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9hdXRvaGludC9haGhpbnQuYyAoYWhfaGludGVyX2xvYWQpOiBBdXRvLWhpbnRlZCBnbHlwaHMgaGFkIGFuCglpbmNvcnJlY3QgZ2x5cGggYWR2YW5jZSBpbiB0aGUgY2FzZSBvZiBtb25vLXdpZHRoIGZvbnRzIChsaWtlCglDb3VyaWVyLCBBbmRhbGUgTW9ubywgYW5kIG90aGVycykuCgoyMDAxLTEyLTIyICBEZXRsZWYgV/xya25lciAgPFRldGlTb2Z0QGFwZy5sYWhuLmRlPgoKCSogYnVpbGRzL2FtaWdhLyo6IEFkYXB0YXRpb25zIHRvIGxhdGVzdCBjaGFuZ2VzLgoJU3VwcG9ydCBhZGRlZCBmb3IgTW9ycGhPUy4KCjIwMDEtMTItMjIgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9wc2hpbnRlci9wc2hyZWMuYyAoRlRfQ09NUE9ORU5UKTogUmVkZWZpbmUgdG8gYHRyYWNlX3BzaHJlYycuCgkocHNfbWFza190YWJsZV9tZXJnZSwgcHNfaGludHNfb3BlbiwgcHNfaGludHNfc3RlbSwKCXBzX2hpbnRzX3Qxc3RlbTMsIHBzX2hpbnRzX3QybWFzaywgcHNfaGludHNfdDJjb3VudGVyKTogRml4CglGVF9FUlJPUiBtZXNzYWdlcy4KCSogc3JjL3BzaGludGVyL3BzaGFsZ28xLmMgKEZUX0NPTVBPTkVOVCk6IERlZmluZSBhcwoJYHRyYWNlX3BzaGFsZ28xJy4KCSogc3JjL3BzaGludGVyL3BzaGFsZ28yLmMgKEZUX0NPTVBPTkVOVCk6IERlZmluZSBhcwoJYHRyYWNlX3BzaGFsZ28yJy4KCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdGRlYnVnLmggKEZUX1RyYWNlKTogVXBkYXRlZC4KCgkqIGRvY3MvbW9kdWxlcy50eHQ6IE5ldyBmaWxlLgoKMjAwMS0xMi0yMSAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogc3JjL3BzaGludGVyL3BzaHJlYy5jIChwc19oaW50c190Mm1hc2ssIHBzX2hpbnRzX3QyY291bnRlcik6CglJZ25vcmUgaW52YWxpZCBgaGludG1hc2snIGFuZCBgY250cm1hc2snIG9wZXJhdG9ycyAoaW5zdGVhZCBvZgoJcmV0dXJuaW5nIGFuIGVycm9yKS4gIEdseXBoIDIwMjggb2YgdGhlIENGRiBmb250IGBNU3VuZy1MaWdodC1BY3JvJwoJY291bGRuJ3QgYmUgcmVuZGVyZWQgb3RoZXJ3aXNlIChpdCBzZWVtcyBpdHMgY2hhcnN0cmluZyBpcyBidWdneSwKCXRob3VnaCB0aGlzIHJlcXVpcmVzIG1vcmUgYW5hbHlzaXMpLgoJKEZUX0NPTVBPTkVOVCk6IERlZmluZS4KCgkqIHNyYy9jZmYvY2ZmZ2xvYWQuYyAoQ0ZGX1BhcnNlX0NoYXJTdHJpbmdzKSwgc3JjL3BzYXV4L3QxZGVjb2RlLmMKCShUMV9EZWNvZGVyX1BhcnNlX0NoYXJzdHJpbmdzKSwgc3JjL3BzaGludGVyL3BzaGFsZ28yLmMgKCopLCBGaXhlZCBhCglidWcgd2hlcmUgdGhlIFggYW5kIFkgYXhpcyB3aGVyZSBpbnZlcnNlZCBpbiB0aGUgcG9zdHNjcmlwdCBoaW50ZXIuCglUaGlzIGNhdXNlZCBwcm9ibGVtIHdoZW4gZGlzcGxheWluZyBvbiBub24tc3F1YXJlIHN1cmZhY2VzLgoKCSogc3JjL3BzaGludGVyL3BzaGFsZ28yLmM6IHMvdmVydGljYWwvZGltZW5zaW9uLy4KCgkqIHNyYy9wc2hpbnRlci9wc2hnbG9iLmMgKHBzaF9nbG9iYWxzX25ldyk6IFJlcGxhY2VkIGEgZmxvYXRpbmcKCXBvaW50IGNvbnN0YW50IHdpdGggYSBmaXhlZC1mbG9hdCBlcXVpdmFsZW50LiAgRm9yIHNvbWUgcmVhc29ucyBub3QKCWFsbCBjb21waWxlcnMgYXJlIGNhcGFibGUgb2YgZGlyZWN0bHkgY29tcHV0aW5nIGEgZmxvYXRpbmcgcG9pbnRlcgoJY29uc3RhbnQgY2FzdGVkIHRvIEZUX0ZpeGVkLCBhbmQgd2lsbCBsaW5rIGEgbWF0aCBsaWJyYXJ5IGluc3RlYWQuCgoyMDAxLTEyLTIwICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvY2FjaGUvZnRjY2FjaGUuYyAoZnRjX25vZGVfZGVzdHJveSwgZnRjX2NhY2hlX2xvb2t1cCk6IEZpeAoJdHJhY2luZyBzdHJpbmdzLgoJKiBzcmMvY2FjaGUvZnRjY21hcC5jIChmdGNfY21hcF9mYW1pbHlfaW5pdCk6IERpdHRvLgoJKiBzcmMvY2FjaGUvZnRjbWFuYWcuYyAoZnRjX2ZhbWlseV90YWJsZV9hbGxvYywKCWZ0Y19mYW1pbHlfdGFibGVfZnJlZSwgRlRDX01hbmFnZXJfQ2hlY2spOiBEaXR0by4KCSogc3JjL2NhY2hlL2Z0Y3NiaXRzLmMgKGZ0Y19zYml0X25vZGVfbG9hZCk6IERpdHRvLgoKCSogc3JjL2Jhc2UvZnRvYmpzLmMgKEZUX0RvbmVfTGlicmFyeSk6IFJlbW92ZSBjb21waWxlciB3YXJuaW5nLgoKMjAwMS0xMi0yMCAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCUFkZGVkIFBvc3RTY3JpcHQgaGludGVyIHN1cHBvcnQgdG8gdGhlIENGRiBhbmQgQ0lEIGRyaXZlcnMuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2NmZnR5cGVzLmggKENGRl9Gb250KTogTmV3IG1lbWJlcgoJYHBzaGludGVyJy4KCSogc3JjL2NmZi9jZmZsb2FkLmMgKENGRl9HZXRfU3RhbmRhcmRfRW5jb2RpbmcpOiBOZXcgZnVuY3Rpb24uCgkqIHNyYy9jZmYvY2ZmbG9hZC5oOiBVcGRhdGVkLgoJKiBzcmMvY2ZmL2NmZmdsb2FkLmMgKENGRl9Jbml0X0J1aWxkZXIpOiBSZW5hbWVkIHRvIC4uLgoJKENGRl9CdWlsZGVyX0luaXQpOiBUaGlzLgoJQWRkZWQgbmV3IGFyZ3VtZW50IGBoaW50aW5nJy4KCShDRkZfRG9uZV9CdWlsZGVyKTogUmVuYW1lZCB0byAuLi4KCShDRkZfQnVpbGRlcl9Eb25lKTogVGhpcy4KCShDRkZfSW5pdF9EZWNvZGVyKTogQWRkZWQgbmV3IGFyZ3VtZW50IGBoaW50aW5nJy4KCShDRkZfUGFyc2VfQ2hhclN0cmluZ3MpOiBJbXBsZW1lbnQgdnN0ZW0gc3VwcG9ydC4KCShDRkZfTG9hZF9HbHlwaCk6IFVwZGF0ZWQuCglBZGQgaGludGluZyBzdXBwb3J0LgoJKGNmZl9sb29rdXBfZ2x5cGhfYnlfc3RkY2hhcmNvZGUpOiBVc2UgQ0ZGX0dldF9TdGFuZGFyZF9FbmNvZGluZygpLgoJKGNmZl9hcmd1bWVudF9jb3VudHMpOiBVcGRhdGVkLgoJKiBzcmMvY2ZmL2NmZmdsb2FkLmg6IFVwZGF0ZWQuCgkqIHNyYy9jZmYvY2Zmb2Jqcy5jOiBJbmNsdWRlIEZUX0lOVEVSTkFMX1BPU1RTQ1JJUFRfSElOVFNfSC4KCShDRkZfU2l6ZV9HZXRfR2xvYmFsc19GdW5jcywgQ0ZGX1NpemVfRG9uZSwgQ0ZGX1NpemVfSW5pdCwKCUNGRl9TaXplX1Jlc2V0LCBDRkZfR2x5cGhTbG90X0RvbmUsIENGRl9HTHlwaFNsb3RfSW5pdCk6IE5ldwoJZnVuY3Rpb25zLgoJKENGRl9Jbml0X0ZhY2UpOiBSZW5hbWVkIHRvIC4uLgoJKENGRl9GYWNlX0luaXQpOiBUaGlzLgoJQWRkIGhpbnRlciBzdXBwb3J0LgoJKENGRl9Eb25lX0ZhY2UpOiBSZW5hbWVkIHRvIC4uLgoJKENGRl9GYWNlX0RvbmUpOiBUaGlzLgoJKENGRl9Jbml0X0RyaXZlcik6IFJlbmFtZWQgdG8gLi4uCgkoQ0ZGX0RyaXZlcl9Jbml0KTogVGhpcy4KCShDRkZfRG9uZV9Ecml2ZXIpOiBSZW5hbWVkIHRvIC4uLgoJKENGRl9Ecml2ZXJfRG9uZSk6IFRoaXMuCgkqIHNyYy9jZmYvY2Zmb2Jqcy5oOiBVcGRhdGVkLgoJKiBzcmMvY2ZmL2NmZmRyaXZyLmMgKGNmZl9kcml2ZXJfY2xhc3MpOiBVcGRhdGVkLgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC90MXR5cGVzLmggKENJRF9GYWNlUmVjKTogTmV3IG1lbWJlcgoJYHBzaGludGVyJy4KCSogc3JjL2NpZC9jaWRnbG9hZC5jIChDSURfTG9hZF9HbHlwaCk6IEFkZCBoaW50ZXIgc3VwcG9ydC4KCSogc3JjL2NpZC9jaWRvYmpzLmM6IEluY2x1ZGUgRlRfSU5URVJOQUxfUE9TVFNDUklQVF9ISU5UU19ILgoJKENJRF9HbHlwaFNsb3RfRG9uZSwgQ0lEX0dseXBoU2xvdF9Jbml0LCBDSURfU2l6ZV9HZXRfR2xvYmFsc19GdW5jcywKCUNJRF9TaXplX0RvbmUsIENJRF9TaXplX0luaXQsIENJRF9TaXplX1Jlc2V0KTogTmV3IGZ1bmN0aW9ucy4KCShDSURfRG9uZV9GYWNlKTogUmVuYW1lZCB0byAuLi4KCShDSURfRmFjZV9Eb25lKTogVGhpcy4KCShDSURfSW5pdF9GYWNlKTogUmVuYW1lZCB0byAuLi4KCShDSURfRmFjZV9Jbml0KTogVGhpcy4KCUFkZCBoaW50aW5nIHN1cHBvcnQuCgkoQ0lEX0luaXRfRHJpdmVyKTogUmVuYW1lZCB0byAuLi4KCShDSURfRHJpdmVyX0luaXQpOiBUaGlzLgoJKENJRF9Eb25lX0RyaXZlcik6IFJlbmFtZWQgdG8gLi4uCgkoQ0lEX0RyaXZlcl9Eb25lKTogVGhpcy4KCSogc3JjL2NpZC9jaWRvYmpzLmg6IFVwZGF0ZWQuCgkqIHNyYy9jaWRyaXZlci5jOiBVcGRhdGVkLgoKCSogc3JjL3BzaGludGVyL3BzaHJlYy5jICh0Ml9oaW50X3N0ZW1zKTogRml4ZWQuCgoJKiBzcmMvYmFzZS9mdG9ianMuYyAoRlRfRG9uZV9MaWJyYXJ5KTogRml4ZWQgYSBzdHVwaWQgYnVnIHRoYXQKCWNyYXNoZWQgdGhlIGxpYnJhcnkgb24gZXhpdC4KCgkqIHNyYy90eXBlMS90MWdsb2FkLmMgKFQxX0xvYWRfR2x5cGgpOiBFbmFibGUgZm9udCBtYXRyaXgKCXRyYW5zZm9ybWF0aW9uIG9mIGhpbnRlZCBnbHlwaHMuCgoJKiBzcmMvY2lkL2NpZGxvYWQuYyAoY2lkX3JlYWRfc3VicnMpOiBGaXggZXJyb3IgY29uZGl0aW9uLgoKCSogc3JjL2NpZC9jaWRvYmpzLmMgKENJRF9GYWNlX0RvbmUpOiBGaXhlZCBhIG1lbW9yeSBsZWFrOyB0aGUgc3VicnMKCXJvdXRpbmVzIHdlcmUgbmV2ZXIgcmVsZWFzZWQgd2hlbiBDSUQgZmFjZXMgd2VyZSBkZXN0cm95ZWQuCgoJKiBzcmMvY2ZmL2NmZmxvYWQuaCwgc3JjL2NmZi9jZmZsb2FkLmMsIHNyYy9jZmYvY2ZmZ2xvYWQuYzogVXBkYXRlZAoJdG8gbW92ZSB0aGUgZGVmaW5pdGlvbiBvZiBlbmNvZGluZyB0YWJsZXMgYmFjayB3aXRoaW4gYGNmZmxvYWQuYycKCWluc3RlYWQgb2YgbWFraW5nIHRoZW0gcGFydCBvZiBhIHNoYXJlZCBoZWFkZXIgKGNhdXNpbmcgcHJvYmxlbXMgaW4KCWBtdWx0aScgYnVpbGRzKS4gIFRoaXMgcmV2ZXJ0cyBjaGFuZ2UgMjAwMS0wOC0wOC4KCgkqIGRvY3MvQ0hBTkdFUzogVXBkYXRlZCBmb3IgMi4wLjYgcmVsZWFzZS4KCSogZG9jcy9UT0RPOiBBZGRlZCBgc3RlbTMgYW5kIGNvdW50ZXIgaGludHMgc3VwcG9ydCcgdG8gdGhlIFRPRE8KCWxpc3QgZm9yIHRoZSBQb3N0c2NyaXB0IGhpbnRlci4KCSogZG9jcy9CVUdTOiBDbG9zZWQgdGhlIEFVVE9ISU5ULU5PLVNCSVRTIGJ1Zy4KCjIwMDEtMTItMTkgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvY2FjaGUvZnRjYWNoZS5oOiBBZGRlZCBjb21tZW50cyB0byBpbmRpY2F0ZSB0aGF0Cglzb21lIG9mIHRoZSBleHBvcnRlZCBmdW5jdGlvbnMgc2hvdWxkIG9ubHkgYmUgdXNlZCBieSBhcHBsaWNhdGlvbnMKCXRoYXQgbmVlZCB0byBpbXBsZW1lbnQgY3VzdG9tIGNhY2hlIHR5cGVzLgoKCSogc3JjL3RydWV0eXBlL3R0Z2xvYWQuYyAoY3VyX3RvX29yZywgb3JnX3RvX2N1cik6IEZpeGVkIGEgbmFzdHkgYnVnCgl0aGF0IHByZXZlbnRlZCBjb21wb3NpdGVzIGZyb20gbG9hZGluZyBjb3JyZWN0bHksIGR1ZSB0byBtaXNzaW5nCglwYXJlbnRoZXNlcyBhcm91bmQgbWFjcm8gcGFyYW1ldGVycy4KCgkqIHNyYy9zZm50L3Nmb2Jqcy5jIChTRk5UX0xvYWRfRmFjZSk6IE1ha2UgdGhlIGBwb3N0JyBhbmQgYG5hbWUnCgl0YWJsZXMgb3B0aW9uYWwgdG8gbG9hZCBQQ0wgZm9udHMgcHJvcGVybHkuCgoJKiBzcmMvdHJ1ZXR5cGUvdHRnbG9hZC5jIChUVF9Mb2FkX0dseXBoKSwgc3JjL2Jhc2UvZnRvYmpzLmMKCShGVF9Mb2FkX0dseXBoKSwgaW5jbHVkZS9mcmVldHlwZS9mcmVldHlwZS5oIChGVF9MT0FEX1NCSVRTX09OTFkpOgoJYEZpeGVkJyB0aGUgYnVnIHRoYXQgcHJldmVudGVkIGVtYmVkZGVkIGJpdG1hcHMgdG8gYmUgbG9hZGVkIHdoZW4KCXRoZSBhdXRvLWhpbnRlciBpcyB1c2VkLiAgVGhpcyBhY3R1YWxseSBpcyBhIGhhY2sgYnV0IHdpbGwgYmUgZW5vdWdoCgl1bnRpbCB0aGUgaW50ZXJuYWwgcmUtZGVzaWduIHNjaGVkdWxlZCBmb3IgRnJlZVR5cGUgMi4xLgoKCSogc3JjL3Jhc3Rlci9mdHJlbmQxLmMgKGZ0X3Jhc3RlcjFfcmVuZGVyKTogRml4ZWQgYSBuYXN0eSBvdXRsaW5lCglzaGlmdGluZyBidWcgaW4gdGhlIG1vbm9jaHJvbWUgcmVuZGVyZXIuCgoJKiBSRUFETUU6IFVwZGF0ZWQgdmVyc2lvbiBudW1iZXJzIHRvIDIuMC42LgoKMjAwMS0xMi0xNyAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL3RydWV0eXBlL3R0Z2xvYWQuYyAobG9hZF90cnVldHlwZV9nbHlwaCk6IEZpeCB0ZXN0IGZvciBpbnZhbGlkCglnbHlwaCBoZWFkZXIuCgoyMDAxLTEyLTE1ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvYmFzZS9mdGdseXBoLmMgKEZUX0dseXBoX1RvX0JpdG1hcCk6IFJlbW92ZSBjb21waWxlciB3YXJuaW5nLgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2Z0Y2FjaGUuaCAoRlRDX05vZGVfVW5yZWYpOiBSZW1vdmVkLiAgSXQgaXMKCWFscmVhZHkgaW4gZnRjbWFuYWcuaC4KCSogc3JjL2NhY2hlL2Z0Y3NiaXRzLmMgKGZ0Y19zYml0X25vZGVfbG9hZCk6IFJlbW92ZSB1bnVzZWQgdmFyaWFibGUKCWBnZmFtJy4KCSogc3JjL2NhY2hlL2Z0Y21hbmFnLmMgKGZ0Y19mYW1pbHlfdGFibGVfYWxsb2MsCgkqIGZ0Y19mYW1pbHlfdGFibGVfZnJlZSk6IFVzZSBGVF9FWFBPUlRfREVGLgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2NhY2hlL2Z0Y21hbmFnLmg6IFVwZGF0ZWQuCgkqIHNyYy9jYWNoZS9mdGNjYWNoZS5jIChmdGNfbm9kZV9kZXN0cm95KTogVXNlIEZUX0VYUE9SVF9ERUYuCgkqIHNyYy9jYWNoZS9mdGNjbWFwLmMgKGZ0Y19jbWFwX25vZGVfaW5pdCk6IFJlbW92ZSB1bnVzZWQgdmFyaWFibGUKCWBjZmFtJy4KCVJlbW92ZSBjb21waWxlciB3YXJuaW5nLgoJKEZUQ19DTWFwQ2FjaGVfTG9va3VwKTogUmVtb3ZlIGNvbXBpbGVyIHdhcm5pbmdzLgoJKGZ0Y19jbWFwX2ZhbWlseV9pbml0KTogRGl0dG8uCgkoRlRDX0NNYXBDYWNoZV9Mb29rdXApOiBEaXR0by4KCgkqIGJ1aWxkcy91bml4L2NvbmZpZ3VyZS5hYzogSW5jcmVhc2UgYHZlcnNpb25faW5mbycgdG8gODowOjIuCgkqIGJ1aWxkcy91bml4L2NvbmZpZ3VyZTogUmVnZW5lcmF0ZWQuCgoyMDAxLTEyLTE0ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBidWlsZHMvbWFjL1JFQURNRTogVXBkYXRlZC4KCjIwMDEtMTItMTQgIFNjb3R0IExvbmcgIDxzY290dEBzd2lmdHZpZXcuY29tPgoKCSogc3JjL3RydWV0eXBlL3R0Z2xvYWQuYyAobG9hZF90cnVldHlwZV9nbHlwaCk6IEZpeGluZyBjcmFzaCB3aGVuCglkZWFsaW5nIHdpdGggaW52YWxpZCBmb250cyAoaS5lLiBnbHlwaCBzaXplIDwgMTAgYnl0ZXMpLgoKMjAwMS0xMi0xNCAgU2FtIExhdGluZ2EgIDxzbG91a2VuQGRldm9sdXRpb24uY29tPgoKCSogYnVpbGRzL21hYy9mcmVldHlwZS5tYWtlOiBBIG5ldyBNYWtlZmlsZSB0byBidWlsZCB3aXRoIE1QVyBvbgoJTWFjT1MgY2xhc3NpYy4KCjIwMDEtMTItMTQgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy90cnVldHlwZS90dGdsb2FkLmMgKFRUX0xvYWRfR2x5cGgpLCBzcmMvdHlwZTEvdDFnbG9hZC5jCgkoVDFfTG9hZF9HbHlwaCksIHNyYy9jaWQvY2lkZ2xvYWQuYyAoQ0lEX0xvYWRfR2x5cGgpLAoJc3JjL2NmZi9jZmZnbG9hZC5jIChDRkZfTG9hZF9HbHlwaCk6IEZpeGVkIGEgc2VyaW91cyBidWcgY29tbW9uIHRvCglhbGwgZm9udCBkcml2ZXJzICh0aGUgYWR2YW5jZSB3aWR0aCB3YXMgbmV2ZXIgaGludGVkIHdoZW4gaXQKCXNob3VsZCkuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ZyZWV0eXBlLmggKEZSRUVUWVBFX1BBVENIKTogTmV3IG1hY3JvLgoJKiBzcmMvYmFzZS9mdGRiZ21lbS5jIChkZWJ1Z19tZW1fZHVtbXkpIFshRlRfREVCVUdfTUVNT1JZXTogRG9uJ3QKCXVzZSBgZXh0ZXJuJyBrZXl3b3JkLgoKMjAwMS0xMi0xMiAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogc3JjL3BzaGludGVyL3BzaGdsb2IuYyAocHNoX2JsdWVzX3NjYWxlX3pvbmVzLCBwc2hfYmx1ZXNfc25hcF9zdGVtCglwc2hfZ2xvYmFsc19uZXcpOiBBZGRpbmcgY29ycmVjdCBCbHVlU2NhbGUvQmx1ZVNoaWZ0IHN1cHBvcnQsIHBsdXMKCWZhbWlseSBibHVlcyBwcm9jZXNzaW5nLgoJKiBzcmMvcHNoaW50ZXIvcHNoZ2xvYi5oIChQU0hfQmx1ZXNSZWMpOiBVcGRhdGVkLgoKCVN0YXJ0ZWQgYWRkaW5nIHN1cHBvcnQgZm9yIHRoZSBQb3N0c2NyaXB0IGhpbnRlciBpbiB0aGUgQ0ZGIG1vZHVsZS4KCgkqIHNyYy9jZmYvY2ZmZ2xvYWQuYzogSW5jbHVkZSBGVF9JTlRFUk5BTF9QT1NUU0NSSVBUX0hJTlRTX0guCgkoQ0ZGX1BhcnNlX0NoYXJTdHJpbmdzKTogSW1wbGVtZW50IGl0LgoJKiBzcmMvY2ZmL2NmZmdsb2FkLmg6IFVwZGF0ZWQuCgoyMDAxLTEyLTEyICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBidWlsZHMvdW5peC9mcmVldHlwZTIubTQ6IFNvbWUgcG9ydGFiaWxpdHkgZml4ZXMuCgoyMDAxLTEyLTExICBKb3VrIEphbnNlbiAgPGpvdWtqQGhyZW0uc3RtLnR1ZGVsZnQubmw+CgoJKiBzcmMvYmFzZS9kZXNjcmlwLm1tcyAoT0JKUyk6IEFkZCBmdGRlYnVnLm9iai4KCjIwMDEtMTItMTEgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9zZm50L3R0bG9hZC5jIChUVF9Mb2FkX0dlbmVyaWNfSGVhZGVyKTogVHlwb3MuCgoyMDAxLTEyLTExICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBidWlsZHMvdW5peC9mcmVldHlwZS1jb25maWcuaW46IE1vZGlmaWVkIHRoZSBzY3JpcHQgdG8gcHJldmVudAoJcGFzc2luZyBgLUwvdXNyL2xpYicgdG8gZ2NjLgoKCSogZG9jcy9GVEwuVFhUOiBTaW1wbGUgZml4IChjaGFuZ2UgYExJQ0VOU0UuVFhUJyB0byBgRlRMLlRYVCcpLgoKCSogYnVpbGRzL3VuaXgvZnJlZXR5cGUyLm00OiBOZXcgZmlsZSBmb3IgY2hlY2tpbmcgY29uZmlndXJlIHBhdGhzLgoJV2UgbmVlZCB0byBpbnN0YWxsIGl0IGluICQocHJlZml4KS9zaGFyZS9hY2xvY2FsL2ZyZWV0eXBlMi5tNCBidXQgSQoJZGlkbid0IG1vZGlmeSBidWlsZHMvdW5peC9pbnN0YWxsLm1rIHlldC4KCgkqIElOU1RBTEw6IFVwZGF0ZWQgdGhlIGluc3RydWN0aW9ucyB0byBidWlsZCBzaGFyZWQgbGlicmFyaWVzIHdpdGgKCUphbS4gIFRoZXkgd2VyZSBzaW1wbHkgd3JvbmcuCgoJKiBzcmMvYmFzZS9mdHRyaWdvbi5jIChGVF9Db3MpOiBGaXhlZCBhIHNtYWxsIGJ1ZyB0aGF0IGNhdXNlZAoJc2xpZ2h0bHkgaW1wcm9wZXIgcmVzdWx0cyBmb3IgYEZUX0NvcycgYW5kIGBGVF9TaW4nIChleGFtcGxlOgoJRlRfU2luKDApID09IC0xISkuCgoyMDAxLTEyLTExICBEZXRsZWYgV/xya25lciAgPFRldGlTb2Z0QGFwZy5sYWhuLmRlPgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdHN0cmVhbS5oIChHRVRfTG9uZ0xFLCBHRVRfVUxvbmdMRSk6CglGaXhlZCBpbmNvcnJlY3QgYXJndW1lbnQgdHlwZXMuCgoyMDAxLTEyLTEwICBGcmFuY2VzY28gWmFwcGEgTmFyZGVsbGkgIDxGcmFuY2VzY28uWmFwcGEuTmFyZGVsbGlAZW5zLmZyPgoKCSogc3JjL3BjZi9wY2Zkcml2ZXIuYyAoUENGX0luaXRfRmFjZSk6IEFsbG93IFhmdCB0byB1c2UgUENGIGZvbnRzCglieSBzZXR0aW5nIHRoZSBgZmFjZS0+bWV0cmljcy5tYXhfYWR2YW5jZScgY29ycmVjdGx5LgoKMjAwMS0xMi0wNyAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogaW5jbHVkZS9mcmVldHlwZS9jYWNoZS9mdGNjbWFwLmgsIHNyYy9jYWNoZS9mdGNjbWFwLmM6IEFkZGVkIG5ldwoJY2hhcm1hcCBjYWNoZS4KCSogc3JjL2NhY2hlL2Z0Y2FjaGUuYzogVXBkYXRlZC4KCgkqIHNyYy9hdXRvaGludC9haGhpbnQuYyAoYWhfaGludGVyX2hpbnRfZWRnZXMpOiBzL1VOVVNFRC9GVF9VTlVTRUQvLgoKMjAwMS0xMi0wNiAgTGVvbmFyZCBSb3NlbnRob2wgIDxsZW9uYXJkckBsYXplcndhcmUuY29tPgoKCUFkZGVkIHN1cHBvcnQgZm9yIHJlYWRpbmcgLmRmb250IGZpbGVzIG9uIE1hYyBPUyBYLiAgQWxzbyBhZGRlZCBhCgluZXcgcm91dGluZSB3aGljaCBsb29rcyB1cCBhIGdpdmVuIGZvbnQgYnkgbmFtZSBpbiB0aGUgTWFjIE9TIGFuZAoJcmV0dXJucyB0aGUgZGlzayBmaWxlIHdoZXJlIGl0IHJlc2lkZXMuCgoJKiBzcmMvYmFzZS9mdG1hYy5jOiBJbmNsdWRlIDxGaWxlcy5oPiBhbmQgPFRleHRVdGlscy5oPi4KCShpc19kZm9udCk6IE5ldyBhdXhpbGlhcnkgZnVuY3Rpb24uCgkoRlRfTmV3X0ZhY2VfRnJvbV9kZm9udCk6IE5ldyBmdW5jdGlvbi4KCShGVF9HZXRGaWxlX0Zyb21fTWFjX05hbWUpOiBOZXcgZXhwb3J0ZWQgZnVuY3Rpb24uCgkoRlRfTmV3X0ZhY2UpOiBVcGRhdGVkLgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2Z0bWFjLmg6IFVwZGF0ZWQuCgoyMDAxLTEyLTA2ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBzcmMvY2FjaGUvSmFtZmlsZSwgc3JjL2NhY2hlL3J1bGVzLm1rOiBVcGRhdGVkLgoKMjAwMS0xMi0wNiAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogSU5TVEFMTDogU21hbGwgdXBkYXRlLgoKMjAwMS0xMi0wNSAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogc3JjL2Jhc2UvZnRnbHlwaC5jIChGVF9HbHlwaF9Ub19CaXRtYXApOiBSZS1vcmRlcmVkIGNvZGUgZm9yCglkZWJ1Z2dpbmcgcHVycG9zZXMuCglDb21tZW50IG91dCB1c2Ugb2YgYG9yaWdpbicuCgoJKiBzcmMvc21vb3RoL2Z0c21vb3RoLmMgKGZ0X3Ntb290aF9yZW5kZXIpOiBGaXhlZCBhIG5hc3R5IGhpZGRlbiBidWcKCXdoZXJlIG91dGxpbmUgc2hpZnRpbmcgd2Fzbid0IGNvcnJlY3RseSB1bmRvbmUgYWZ0ZXIgYml0bWFwCglyYXN0ZXJpemF0aW9uLiAgVGhpcyBjcmVhdGVkIHByb2JsZW1zIHdpdGggY2VydGFpbiBnbHlwaHMgKGxpa2UgJyInCglvZiBjZXJ0YWluIGZvbnRzKSBhbmQgdGhlIGNhY2hlIHN5c3RlbS4KCgkqIHNyYy9wc2hpbnRlci9wc2hhbGdvMS5jIChwc2gxX2hpbnRfdGFibGVfaW5pdCk6IEZpeCB0eXBvLgoJKiBzcmMvcHNoaW50ZXIvcHNoYWxnbzIuYyAocHNoMl9oaW50X3RhYmxlX2luaXQpOiBGaXggdHlwby4KCShwczJfaGludHNfYXBwbHkpOiBTbWFsbCBmaXguCgoyMDAxLTEyLTA1ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBzcmMvcHNoaW50ZXIvcHNoYWxnbzIuYyAocHNoMl9oaW50X3RhYmxlX2luaXQpLAoJc3JjL3BzaGludGVyL3BzaGFsZ28xLmMgKHBzaDFfaGludF90YWJsZV9pbml0KTogUmVtb3ZlZCBjb21waWxlcgoJd2FybmluZ3MuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2Z0Y2FjaGUuaCwgaW5jbHVkZS9mcmVldHlwZS9jYWNoZS8qLCBzcmMvY2FjaGUvKjoKCVlldCBhbm90aGVyIG1hc3NpdmUgcmV3cml0ZSBvZiB0aGUgY2FjaGluZyBzdWItc3lzdGVtIGluIG9yZGVyIHRvCglib3RoIGluY3JlYXNlIHBlcmZvcm1hbmNlIGFuZCBhbGxvdyBzaW1wbGVyIGNhY2hlIHN1Yi1jbGFzc2luZy4gIEFzCglhbiBleGFtcGxlLCB0aGUgY29kZSBmb3IgdGhlIGltYWdlIGFuZCBzYml0IGNhY2hlcyBpcyBub3cgbXVjaAoJc2ltcGxlci4KCglJIHN0aWxsIG5lZWQgdG8gdXBkYXRlIHRoZSBkb2N1bWVudGF0aW9uIGluCgl3d3cvZnJlZXR5cGUyL2RvY3MvY2FjaGUuaHRtbCB0byByZWZsZWN0IHRoZSBuZXcgZGVzaWduIHRob3VnaC4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvY29uZmlnL2Z0aGVhZGVyLmggKEZUX0NBQ0hFX0NIQVJNQVBfSCk6IE5ldwoJbWFjcm8uCgkoRlRfQ0FDSEVfSU5URVJOQUxfQ0FDSEVfSCk6IFVwZGF0ZWQuCgoyMDAxLTEyLTA1ICBEYXZpZCBLcmF1c2UgIDxmcmVldHlwZUBkYXZpZGtyYXVzZS5jb20+CgoJKiBkb2NzL2xpY2Vuc2UudHh0OiBzL1ggV2luZG93cy9YIFdpbmRvdyBTeXN0ZW0vLgoKMjAwMS0xMi0wNCAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL3Jhc3Rlci9mdHJhc3Rlci5jOiBGaXggZGVmaW5pdGlvbiBjb25kaXRpb24gb2YgTUVNX1NldCgpLgoJKiBzcmMvc21vb3RoL2Z0Z3JheXMuYyAoTV9ZKTogQ2hhbmdlIHZhbHVlIHRvIDE5Mi4KCSogc3JjL2Jhc2UvZnRkYmdtZW0uYyAoZnRfbWVtX3RhYmxlX2Rlc3Ryb3kpOiBGaXggcHJpbnRmKCkgcGFyYW1ldGVyLgoJUmVtb3ZlIHVudXNlZCB2YXJpYWJsZS4KCSogc3JjL2NhY2hlL2Z0Y2ltYWdlLmMgKGZ0Y19pbWFnZV9ub2RlX2luaXQsCglmdGNfaW1hZ2Vfbm9kZV9jb21wYXJlKTogUmVtb3ZlIHVudXNlZCB2YXJpYWJsZXMuCgkqIHNyYy9jYWNoZS9mdGNzYml0cy5jIChmdGNfc2JpdF9ub2RlX3dlaWdodCk6IFJlbW92ZSB1bnVzZWQKCXZhcmlhYmxlLgoJKiBzcmMvcmFzdGVyL2Z0cmFzdGVyLmMgKE1FTV9TZXQpOiBNb3ZlIGRlZmluaXRpb24gZG93biB0byBhdm9pZAoJY29tcGlsZXIgd2FybmluZy4KCSogc3JjL2F1dG9oaW50L2FoaGludC5jIChhaF9oaW50ZXJfaGludF9lZGdlcyk6IFVzZSBVTlVTRUQoKSB0bwoJYXZvaWQgY29tcGlsZXIgd2FybmluZ3MuCgkqIHNyYy9wY2YvcGNmcmVhZC5jICh0YWJsZU5hbWVzKTogVXNlIGBjb25zdCcuCgkocGNmX3JlYWRfVE9DKTogQ2hhbmdlIGNvdW50ZXIgbmFtZSB0byBhdm9pZCBjb21waWxlciB3YXJuaW5nLgoJVXNlIGBjb25zdCcuCgkqIHNyYy9wc2hpbnRlci9wc2hyZWMuYyAocHNfaGludHNfY2xvc2UpOiBSZW1vdmUgcmVkdW5kYW50CglkZWNsYXJhdGlvbi4KCSogc3JjL3BzaGludGVyL3BzaGFsZ28xLmMgKHBzaDFfaGludF90YWJsZV9pbml0KTogUmVuYW1lIHZhcmlhYmxlcwoJdG8gYXZvaWQgc2hhZG93aW5nLgoJKiBzcmMvcHNoaW50ZXIvcHNoYWxnbzIuYyAocHNoMl9oaW50X3RhYmxlX2FjdGl2YXRlX21hc2spOiBEaXR0by4KCSogc3JjL3R5cGUxL3Qxb2Jqcy5oOiBSZW1vdmUgZG91YmxlIGRlY2xhcmF0aW9ucyBvZiBgVDFfU2l6ZV9Jbml0KCknCglhbmQgYFQxX1NpemVfRG9uZSgpJy4KCjIwMDEtMTEtMjAgIEFudG9pbmUgTGVjYSAgPGFudG9pbmVsZWNhQG11bHRpbWFuaWEuY29tPgoKCSogaW5jbHVkZS9mcmVldHlwZS90dG5hbWVpZC5oOiBBZGRlZCBzb21lIG5ldyBNaWNyb3NvZnQgbGFuZ3VhZ2UKCWNvZGVzIGFuZCBMQ0lEcyBhcyBmb3VuZCBpbiBNU0ROIChQYXNzcG9ydCBTREspLiAgQWxzbyBhZGRlZAoJY29tbWVudHMgYWJvdXQgdGhlIG1lYW5pbmcgb2YgYml0IDU3IG9mIHRoZSBgT1MvMicgdGFibGUKCShUVF9VQ1JfU1VSUk9HQVRFUykgd2hpY2ggKHdpdGggT3BlblR5cGUgdi4xLjMpIG5vdyBtZWFucyBgdGhlcmUgaXMKCWEgY2hhcmFjdGVyIGJleW9uZCAweEZGRkYgaW4gdGhpcyBmb250Jy4gIFRoYW5rcyB0byBEZXRsZWYgV/xya25lcgoJPFRldGlTb2Z0QGFwZy5sYWhuLmRlPiBmb3Igbm90aWNpbmcgdGhpcy4KCjIwMDEtMTEtMjAgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9wc2hpbnRlci97cHNoYWxnbzIuYywgcHNoYWxnbzEuY306IEZpeGVkIHN0dXBpZCBidWcgaW4gc29ydGluZwoJcm91dGluZSB0aGF0IGNyZWF0ZWQgbmFzdHkgYWxpZ25tZW50IGFydGVmYWN0cy4KCgkqIHNyYy9wc2hpbnRlci9wc2hyZWMuYywgdGVzdHMvZ3ZpZXcuYzogRGVidWdnaW5nIHVwZGF0ZXMuCgoJKiBzcmMvc21vb3RoL2Z0Z3JheXMuYzogRGUtYWN0aXZhdGVkIGV4cGVyaW1lbnRhbCBnYW1tYSBzdXBwb3J0LgoJQXBwYXJlbnRseSwgYG9wdGltYWwnIGdhbW1hIHRhYmxlcyBkZXBlbmQgb24gdGhlIG1vbml0b3IgdHlwZSwKCXJlc29sdXRpb24gYW5kIGdlbmVyYWwga2FybWEsIHNvIGl0J3MgYmV0dGVyIHRvIGNvbXB1dGUgdGhlbSBvdXRzaWRlCglvZiB0aGUgcmFzdGVyaXplciBpdHNlbGYuCgkoZ3JheV9jb252ZXJ0X2dseXBoKTogVXNlIGB2b2xhdGlsZScga2V5d29yZC4KCjIwMDEtMTAtMjkgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCglBZGRpbmcgZXhwZXJpbWVudGFsIGBnYW1tYScgc3VwcG9ydC4gIFRoaXMgcHJvZHVjZXMgc21vb3RoZXIgZ2x5cGhzCglhdCBzbWFsbCBzaXplcyBmb3IgdmVyeSBsaXR0bGUgY29zdC4KCgkqIHNyYy9zbW9vdGgvZnRncmF5cy5jIChncmF5c19pbml0X2dhbW1hKTogTmV3IGZ1bmN0aW9uLgoJKGdyYXlfcmFzdGVyX25ldyk6IFVzZSBpdC4KCglWYXJpb3VzIGZpeGVzIHRvIHRoZSBhdXRvLWhpbnRlci4gIFRoZXkgbWVyZWx5IGltcHJvdmUgdGhlIG91dHB1dCBvZgoJc2Fucy1zZXJpZiBmb250cy4gIE5vdGUgdGhhdCB0aGVyZSBhcmUgc3RpbGwgcHJvYmxlbXMgd2l0aCBzZXJpZmVkCglmb250cyBhbmQgY29tcG9zaXRlcyAoYWNjZW50ZWQgY2hhcmFjdGVycykuCgoJKiBzcmMvYXV0b2hpbnQvYWhnbHlwaC5jIChhaF9vdXRsaW5lX2xvYWQsCglhaF9vdXRsaW5lX2xpbmtfc2VnbWVudHMpOiBJbXBsZW1lbnQgaXQuCglGaXggdHlwb3MuCgkoYWhfb3V0bGluZV9zYXZlLCBhaF9vdXRsaW5lX2NvbXB1dGVfc2VnbWVudHMpOiBGaXggdHlwb3MuCgkqIHNyYy9hdXRvaGludC9haGhpbnQuYyAoYWhfYWxpZ25fc2VyaWZfZWRnZSk6IE5ldyBhcmd1bWVudAoJYHZlcnRpY2FsJy4gIEltcGxlbWVudCBpbXByb3ZlbWVudC4KCShhaF9oaW50X2VkZ2VzXzMsIGFoX2hpbnRlcl9oaW50X2VkZ2VzKTogSW1wbGVtZW50IGl0LgoJRml4IHR5cG9zLgoJKGFoX2hpbnRlcl9hbGlnbl9zdHJvbmdfcG9pbnRzLCBhaF9oaW50ZXJfYWxpZ25fd2Vha19wb2ludHMpOiBGaXgKCXR5cG9zLgoJKGFoX2hpbnRlcl9sb2FkKTogU2V0IGBhaF9kZWJ1Z19oaW50ZXInIGlmIERFQlVHX0hJTlRFUiBpcyBkZWZpbmVkLgoJKiBzcmMvYXV0b2hpbnQvYWhtb2R1bGUuYzogSW1wbGVtZW50IHN1cHBvcnQgZm9yIERFQlVHX0hJTlRFUiBtYWNyby4KCSogc3JjL2F1dG9oaW50L2FodHlwZXMuaDogRGl0dG8uCgkoQUhfSGludGVyKTogUmVtb3ZlIGBkaXNhYmxlX2hvcnpfZWRnZXMnIGFuZCBgZGlzYWJsZV92ZXJ0X2VkZ2VzJwoJKG1ha2luZyB0aGVtIGdsb2JhbCBhcyBgYWhfZGVidWdfZGlzYWJsZV9ob3J6JyBhbmQKCWBhaF9kZWJ1Z19kaXNhYmxlX3ZlcnQnKS4KCUZpeCB0eXBvcy4KCgkqIHRlc3RzL2d2aWV3LmM6IFVwZGF0ZWQgdGhlIGRlYnVnZ2luZyBnbHlwaCB2aWV3ZXIgdG8gc2hvdyB0aGUKCWhpbnRzIGdlbmVyYXRlZCBieSB0aGUgYGF1dG9oaW50JyBtb2R1bGUuCgoyMDAxLTEwLTI3ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBzcmMvY2FjaGUvZnRjY2h1bmsuYyAoZnRjX2NodW5rX2NhY2hlX2xvb2t1cCk6IEZpeGVkIGEgYnVnIHRoYXQKCWNvbnNpZGVyYWJseSBsb3dlcmVkIHRoZSBwZXJmb3JtYW5jZSBvZiB0aGUgYWJzdHJhY3QgY2h1bmsgY2FjaGUuCgoyMDAxLTEwLTI2ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2Z0Y2FjaGUuaCwgaW5jbHVkZS9mcmVldHlwZS9jYWNoZS8qLmgsCglzcmMvY2FjaGUvKi5jOiBNYWpvciByZS1kZXNpZ24gb2YgdGhlIGNhY2hlIHN1Yi1zeXN0ZW0gdG8gcHJvdmlkZQoJYmV0dGVyIHBlcmZvcm1hbmNlIGFzIHdlbGwgYXMgYW4gYEFjcXVpcmUnL2BSZWxlYXNlJyBBUEkuICBTZWVtcyB0bwoJd29yayB3ZWxsIGhlcmUsIGJ1dCBwcm9iYWJseSBuZWVkcyBhIGJpdCBtb3JlIHRlc3RpbmcuCgoyMDAxLTEwLTI2ICBMZW9uYXJkIFJvc2VudGhvbCAgPGxlb25hcmRyQGxhemVyd2FyZS5jb20+CgoJKiBidWlsZHMvbWFjL1JFQURNRTogVXBkYXRlZCB0byByZWZsZWN0IG15IHRha2luZyBvdmVyIHRoZSBwcm9qZWN0CglhbmQgdGhhdCBpcyBub3cgYmVpbmcgYWN0aXZlbHkgbWFpbnRhaW5lZC4KCgkqIHNyYy9iYXNlL2Z0bWFjLmMgKHBhcnNlX2ZvbmQpOiBBcHBsaWVkIHBhdGNoZXMgZnJvbSBQYXVsIE1pbGxlcgoJPHBhdWxtQHByb2ZvdW5kZWZmZWN0cy5jb20+IHRvIHN1cHBvcnQgbG9hZGluZyBhIGZhY2Ugb3RoZXIgdGhhbiB0aGUKCWZpcnN0IGZyb20gYSBGT05EIHJlc291cmNlLgoJKEZUX05ld19GYWNlX0Zyb21fRk9ORCk6IFVwZGF0ZWQuCgoyMDAxLTEwLTI1ICBMZW9uYXJkIFJvc2VudGhvbCAgPGxlb25hcmRyQGxhemVyd2FyZS5jb20+CgoJKiBidWlsZHMvbWFjL2Z0bGliLnByajogVXBkYXRlIG9mIENvZGVXYXJyaW9yIHByb2plY3QgZmlsZSBmb3IgTWFjCglPUyBmb3IgbGF0ZXN0IHZlcnNpb24gKDcpIG9mIENXUHJvIGFuZCBmb3IgcmVjZW50IGNoYW5nZXMgdG8gdGhlIEZUCglzb3VyY2UgdHJlZS4KCjIwMDEtMTAtMjUgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvY29uZmlnL2Z0b3B0aW9uLmg6IFVwZGF0ZWQgY29tbWVudHMgdG8gZXhwbGFpbgoJcHJlY2lzZWx5IGhvdyB0byB1c2UgcHJvamVjdC1zcGVjaWZpYyBtYWNybyBkZWZpbml0aW9ucyB3aXRob3V0Cgltb2RpZnlpbmcgdGhpcyBmaWxlIG1hbnVhbGx5LgoKCShGVF9DT05GSUdfRk9SQ0VfSU5UNjQpOiBEZWZpbmUuCgoJKEZUX0RFQlVHX01FTU9SWSk6IE5ldyBtYWNyby4KCjIwMDEtMTAtMjQgIFRvbSBLYWN2aW5za3kgIDx0a2Fjdmluc0BmcmVldHlwZS5vcmc+CgoJKiBidWlsZHMvdW5peC9mdHN5c3RlbS5jIChGVF9OZXdfTWVtb3J5KTogQWRkZWQgYSBtaXNzaW5nIGB7Jy4KCjIwMDEtMTAtMjMgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRtZW1vcnkuaCwgc3JjL2Jhc2UvZnRkYmdtZW0uYzoKCUltcHJvdmVtZW50cyB0byB0aGUgbWVtb3J5IGRlYnVnZ2VyIHRvIHJlcG9ydCBtb3JlIGluZm9ybWF0aW9uIGluCgljYXNlIG9mIGVycm9ycy4gIEFsc28sIHNvbWUgYWxsb2NhdGlvbnMgdGhhdCBvY2N1cnJlZCB0aHJvdWdoIFJFQUxMT0MKCWNvdWxkbid0IGJlIHByZXZpb3VzbHkgY2F0Y2hlZCBjb3JyZWN0bHkuCgoJKiBzcmMvYXV0b2hpbnQvYWhnbHlwaC5jIChhaF9vdXRsaW5lX2NvbXB1dGVfc2VnbWVudHMsCglhaF9vdXRsaW5lX2NvbXB1dGVfZWRnZXMpLCBzcmMvcmFzdGVyL2Z0cmFzdGVyLmMgKGZ0X2JsYWNrX25ldyksCglzcmMvc21vb3RoL2Z0Z3JheXMuYyAoZ3JheV9yZW5kZXJfc3BhbiwgZ3JheV9yYXN0ZXJfbmV3KTogUmVwbGFjZWQKCWxpYmVyYWwgdXNlcyBvZiBtZW1zZXQoKSBieSB0aGUgTUVNX1NldCgpIG1hY3JvLgoKMjAwMS0xMC0yMyAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogc3JjL3Jhc3Rlci9mdHJhc3Rlci5jIChVcGRhdGUpOiBSZW1vdmVkIHRvIGJlIGlubGluZWQgaW4gLi4uCgkoU29ydCk6IFVwZGF0ZWQuCgoyMDAxLTEwLTIyICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBidWlsZHMvdW5peC9mdHN5c3RlbS5jIChGVF9OZXdfTWVtb3J5LCBGVF9Eb25lX01lbW9yeSksCglidWlsZHMvdm1zL2Z0c3lzdGVtLmMgKEZUX05ld19NZW1vcnksIEZUX0RvbmVfTWVtb3J5KSwKCWJ1aWxkcy9hbWlnYS9mdHN5c3RlbS5jIChGVF9OZXdfTWVtb3J5LCBGVF9Eb25lX01lbW9yeSksCglzcmMvYmFzZS9mdGRiZ21lbS5jOiBVcGRhdGVkIHRoZSBtZW1vcnkgZGVidWdnZXIgYW5kCglwbGF0Zm9ybS1zcGVjaWZpYyBpbXBsZW1lbnRhdGlvbnMgb2YgYGZ0c3lzdGVtJyBpbiBvcmRlciB0byBiZSBhYmxlCgl0byBkZWJ1ZyBtZW1vcnkgYWxsb2NhdGlvbnMgb24gVW5peCwgVk1TIGFuZCBBbWlnYSB0b28hCgoJKiBzcmMvcHNoaW50ZXIvcHNoYWxnbzIuYyAocHNoMl9oaW50X3RhYmxlX3JlY29yZF9tYXNrKTogUmVtb3ZlZAoJc29tZSBib2d1cyB3YXJuaW5ncy4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRtZW1vcnkuaCwgc3JjL2Jhc2UvZnRkYmdtZW0uYzoKCU1vZGlmaWVkIHRoZSBkZWJ1Z2dpbmcgbWVtb3J5IG1hbmFnZXIgdG8gcmVwb3J0IHRoZSBsb2NhdGlvbiAoc291cmNlCglmaWxlIG5hbWUgKyBsaW5lIG51bWJlcikgd2hlcmUgbGVha2VkIG1lbW9yeSBibG9ja3MgYXJlIGFsbG9jYXRlZCBpbgoJdGhlIHNvdXJjZSBmaWxlLgoKCSogc3JjL2Jhc2UvZnRkYmdtZW0uYzogTmV3IGRlYnVnZ2luZyBtZW1vcnkgbWFuYWdlci4gIFlvdSBtdXN0CglkZWZpbmUgdGhlIEZUX0RFQlVHX01FTU9SWSBtYWNybyBpbiBgZnRvcHRpb24uaCcgdG8gZW5hYmxlIGl0LiAgSXQKCXdpbGwgcmVjb3JkIGV2ZXJ5IG1lbW9yeSBibG9jayBhbGxvY2F0ZWQgYW5kIHJlcG9ydCBzaW1wbGUgZXJyb3JzCglsaWtlIG1lbW9yeSBsZWFrcyBhbmQgZG91YmxlIGRlbGV0ZXMuCgoJKiBzcmMvYmFzZS9KYW1maWxlOiBJbmNsdWRlIGZ0ZGJnbWVtLgoJKiBzcmMvYmFzZS9ydWxlcy5tazogRGl0dG8uCgkqIHNyYy9iYXNlL2Z0YmFzZS5jOiBJbmNsdWRlIGZ0ZGJnbWVtLmMuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdG9wdGlvbi5oOiBBZGRlZCB0aGUgRlRfREVCVUdfTUVNT1JZCgltYWNybyBkZWZpbml0aW9uLgoKCSogc3JjL2Jhc2UvZnRzeXN0ZW0uYyAoRlRfTmV3X01lbW9yeSwgRlRfRG9uZV9NZW1vcnkpOiBNb2RpZmllZCB0aGUKCWJhc2UgY29tcG9uZW50IHRvIHVzZSB0aGUgZGVidWdnaW5nIG1lbW9yeSBtYW5hZ2VyIHdoZW4gdGhlIG1hY3JvCglGVF9ERUJVR19NRU1PUlkgaXMgZGVmaW5lZC4KCjIwMDEtMTAtMjEgIFRvbSBLYWN2aW5za3kgIDx0a2Fjdmluc0BmcmVldHlwZS5vcmc+CgoJKiBzcmMvY2ZmL2NmZmxvYWQuYyAoQ0ZGX0RvbmVfRm9udCk6IEZyZWUgc3ViZm9udHMgYXJyYXkgb25seSBpZgoJd2UgYXJlIHdvcmtpbmcgd2l0aCBhIENJRCBrZXllZCBDRkYgZm9udC4gIE90aGVyd2lzZSwgYSB2YXJpYWJsZQoJdGhhdCB3YXMgbmV2ZXIgYWxsb2NhdGVkIG1lbW9yeSBtaWdodCBmcmVlZC4gIFRoaXMgaXMgYSBjb3JyZWN0aW9uCgl0byB0aGUgcHJldmlvdXMgcGF0Y2ggZm9yIGZyZWVpbmcgc3ViZm9udHMuCgoyMDAxLTEwLTIxICBUb20gS2Fjdmluc2t5ICA8dGthY3ZpbnNAZnJlZXR5cGUub3JnPgoKCSogc3JjL2NmZi9jZmZsb2FkLmMgKENGRl9Eb25lX0ZvbnQpOiBGcmVlIHRoZSBzdWJmb250cyBhcnJheSB0bwoJYXZvaWQgYSBtZW1vcnkgbGVhay4KCjIwMDEtMTAtMjEgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9wc2hpbnRlci9wc2hhbGdvMi5jLCBzcmMvcHNoaW50ZXIvcHNoYWxnbzEuYywKCXNyYy9wc2hpbnRlci9wc2hnbG9iLmM6IFJlbW92aW5nIGNvbXBpbGVyIHdhcm5pbmdzIGluIHBlZGFudGljIG1vZGVzCgkoaW4gbXVsdGktb2JqZWN0IGNvbXBpbGF0aW9uIG1vZGUsIG1haW5seSkuCgoyMDAxLTEwLTIwICBUb20gS2Fjdmluc2t5ICA8dGthY3ZpbnNAZnJlZXR5cGUub3JnPgoKCSogc3JjL3R5cGUxL3QxbG9hZC5jIChwYXJzZV9lbmNvZGluZyk6IEFkZCBhIHRlc3QgdG8gbWFrZSBzdXJlCgl0aGF0IGN1c3RvbSBlbmNvZGluZ3MgKGkuZS4sIG5laXRoZXIgU3RhbmRhcmRFbmNvZGluZyBub3IKCUV4cGVydEVuY29kaW5nKSBhcmUgbm90IGxvYWRlZCB0d2ljZSB3aGVuIHRoZSBUeXBlIDEgZm9udCBpcwoJc3ludGhldGljLgoKCSogc3JjL3R5cGUxL3QxbG9hZC5jIChwYXJzZV9mb250X25hbWUsIHBhcnNlX3N1YnJzKTogQWRkZWQgYSB0ZXN0Cglmb3Igd2hlbiBsb2FkaW5nIHN5bnRoZXRpYyBmb250cyB0byBtYWtlIHN1cmUgdGhhdCB0aGUgZm9udCBuYW1lCglhbmQgc3Vicm90dWluZXMgYXJlIG5vdCBsb2FkZWQgdHdpY2UuICBUaGlzIGlzIHRvIHJlbW92ZSBhIG1lbW9yeQoJbGVhayB0aGF0IG9jY3VycmVkIGJlY2F1c2UgdGhlIG9yaWdpbmFsIG1lbW9yeSBibG9ja3MgZm9yIHRoZXNlCglvYmplY3RzIHdlcmUgbm90IGRlYWxsb2NhdGVkIHdoZW4gdGhlIG9iamVjdHMgd2VyZSBwYXJzZWQgdGhlCglzZWNvbmQgdGltZS4KCjIwMDEtMTAtMTkgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9zbW9vdGgvZnRncmF5cy5jLCBzcmMvcHNoaW50ZXIvcHNoZ2xvYi5oLAoJc3JjL3BzaGludGVyL3BzaHJlYy5jLCBzcmMvcHNoaW50ZXIvcHNoYWxnbzIuYzogR2V0dGluZyByaWQgb2YKCWNvbXBpbGVyIHdhcm5pbmdzLgoKCSogc3JjL3BzaGludGVyL21vZHVsZS5taywgc3JjL3BzaGludGVyL3J1bGVzLm1rOiBBZGRpbmcgY29udHJvbAoJZmlsZXMgdG8gYnVpbGQgdGhlIFBvc3RTY3JpcHQgaGludGVyIHdpdGggdGhlIGBvbGQnIGJ1aWxkIHN5c3RlbS4KCjIwMDEtMTAtMTkgIEphY29iIEphbnNlbiAgPGpvdWtqQGhyZW0uc3RtLnR1ZGVsZnQubmw+CgoJKiBkZXNjcmlwLm1tcywgc3JjL3BzaGludGVyL2Rlc2NyaXAubW1zOiBVcGRhdGVzIHRvIHRoZSBWTVMgYnVpbGQKCWZpbGVzLgoKMjAwMS0xMC0xOCAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogc3JjL3BzbmFtZXMvcHN0YWJsZXMuaCwgc3JjL3Rvb2xzL2dsbmFtZXMucHk6IFJld3JvdGUgdGhlCglgZ2xuYW1lcy5weScgc2NyaXB0IHVzZWQgdG8gZ2VuZXJhdGUgdGhlIGBwc3RhYmxlcy5oJyBoZWFkZXIgZmlsZS4KCVRoZSBvbGQgb25lIGNvbnRhaW5lZCBhIHNlcmlvdXMgYnVnIHRoYXQgbWFkZSBGcmVlVHlwZSByZXR1cm4KCWluY29ycmVjdCBnbHlwaCBuYW1lcyBmb3IgY2VydGFpbiBnbHlwaHMuCgoJKiBzcmMvdHJ1ZXR5cGUvdHRkcml2ZXIuYyAoU2V0X0NoYXJfU2l6ZXMpOiBDaGFuZ2luZyBjb21wdXRhdGlvbiBvZgoJcGl4ZWwgc2l6ZSBmcm9tIGNoYXJhY3RlciBzaXplIHRvIHVzZSByb3VuZGluZy4gIFRoaXMgaXMgYW4KCWV4cGVyaW1lbnQgdG8gc2VlIHdoZXRoZXIgdGhpcyBnaXZlcyB2YWx1ZXMgc2ltaWxhciB0byBXaW5kb3dzIGZvcgoJc2NhbGVkIGFzY2VudC9kZXNjZW50L2V0Yy4KCgkqIHNyYy9iYXNlL2Z0Y2FsYy5jIChGVF9EaXY2NGJ5MzIpOiBDaGFuZ2VkIHRoZSBpbXBsZW1lbnRhdGlvbgoJc2xpZ2h0bHkgc2luY2UgdGhlIG9yaWdpbmFsIGNvZGUgd2FzIG1pcy1jb21waWxlZCBvbiBNYWMgbWFjaGluZXMKCXVzaW5nIHRoZSBNUFcgQyBjb21waWxlci4KCgkqIHNyYy9iYXNlL2Z0b2Jqcy5jIChGVF9SZWFsbG9jKTogV2hlbiBhIG1lbW9yeSBibG9jayB3YXMgZ3Jvd24KCXRocm91Z2ggRlRfUmVhbGxvYygpLCB0aGUgbmV3IGJ5dGVzIHdlcmUgbm90IHNldCB0byAwLCB3aGljaCBjcmVhdGVkCglzb21lIHN0cmFuZ2UgYnVncyBpbiB0aGUgUG9zdFNjcmlwdCBoaW50ZXIuCgkoZGVzdHJveV9mYWNlKTogRG9uJ3QgZGVhbGxvY2F0ZSB1bmNvbmRpdGlvbmFsbHkuCgoJKiBzcmMvY2lkL2NpZGdsb2FkLmMgKENJRF9Db21wdXRlX01heF9BZHZhbmNlLCBDSURfTG9hZF9HbHlwaCk6CglBZGRpbmcgc3VwcG9ydCB0byBuZXcgUG9zdFNjcmlwdCBoaW50ZXIuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3BzZ2xvYmFsLmgsCglpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3BzaGludHMuaCwKCWluY2x1ZGUvZnJlZXR5cGUvY29uZmlnL2Z0bW9kdWxlLmgsIHNyYy9wc2hpbnRlci9KYW1maWxlLAoJc3JjL3BzaGludGVyL3BzaGFsZ28uaCwgc3JjL3BzaGludGVyL3BzaGFsZ28xLmgsCglzcmMvcHNoaW50ZXIvcHNoYWxnbzEuYywgc3JjL3BzaGludGVyL3BzaGFsZ28yLmgsCglzcmMvcHNoaW50ZXIvcHNoYWxnbzIuYywgc3JjL3BzaGludGVyL3BzaGdsb2IuaCwKCXNyYy9wc2hpbnRlci9wc2hnbG9iLmMsIHNyYy9wc2hpbnRlci9wc2hpbnRlci5jLAoJc3JjL3BzaGludGVyL3BzaG1vZC5jLCBzcmMvcHNoaW50ZXIvcHNobW9kLmgsIHNyYy9wc2hpbnRlci9wc2hyZWMuYywKCXNyYy9wc2hpbnRlci9wc2hyZWMuaDogQWRkaW5nIG5ldyBQb3N0U2NyaXB0IGhpbnRlciBtb2R1bGUuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0b2Jqcy5oLAoJaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9pbnRlcm5hbC5oLAoJaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9wc2F1eC5oLAoJaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC90MXR5cGVzLmgsIHNyYy9wc2F1eC9wc29ianMuYywKCXNyYy9wc2F1eC9wc29ianMuaCwgc3JjL3BzYXV4L3QxZGVjb2RlLmgsIHNyYy9wc2F1eC90MWRlY29kZS5jLAoJc3JjL3R5cGUxL3QxZHJpdmVyLmMsIHNyYy90eXBlMS90MWdsb2FkLmMsIHNyYy90eXBlMS90MW9ianMuYywKCXNyYy90eXBlMS90MW9ianMuaDogVXBkYXRlcyB0byB1c2UgdGhlIG5ldyBQb3N0U2NyaXB0IGhpbnRlci4KCgkqIHRlc3RzL0phbWZpbGUsIHRlc3RzL2d2aWV3LmM6IEFkZGluZyBhIG5ldyBnbHlwaCBoaW50aW5nCgl2aWV3ZXIvZGVidWdnZXIgdG8gdGhlIHNvdXJjZSB0cmVlLiAgTm90ZSB0aGF0IHlvdSB3aWxsIF9ub3RfIGJlCglhYmxlIHRvIGNvbXBpbGUgaXQgc2luY2UgaXQgZGVwZW5kcyBvbiBhbiB1bmF2YWlsYWJsZSBncmFwaGljcwoJbGlicmFyeSBuYW1lZCBgTmlydmFuYScgdG8gcmVuZGVyIHZlY3RvciBpbWFnZXMuCgoyMDAxLTEwLTE3ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoKCSogVmVyc2lvbiAyLjAuNSByZWxlYXNlZC4KCT09PT09PT09PT09PT09PT09PT09PT09PT0KCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ZyZWV0eXBlLmgsIGluY2x1ZGUvaW50ZXJuYWwvZnRvYmpzLmgsCglzcmMvYmFzZS9mdG9ianMuYywgc3JjL3R5cGUxL3QxZHJpdmVyLmM6IEFkZGluZyBhIG5ldyBmdW5jdGlvbiBuYW1lZAoJJ0ZUX0dldF9Qb3N0c2NyaXB0X05hbWUnIHRvIHJldHJpZXZlIHRoZSBQb3N0U2NyaXB0IG5hbWUgb2YgYSBnaXZlbgoJZm9udC4gIFNob3VsZCB3b3JrIHdpdGggYWxsIGZvcm1hdHMgZXhjZXB0IHB1cmUgQ0ZGL0NFRiBmb250cyAodGhpcwoJd2lsbCBiZSBhZGRlZCBzb29uKS4KCgkqIHNyYy9jaWQvY2lkcml2ZXIgKGNpZF9nZXRfcG9zdHNjcmlwdF9uYW1lKTogTmV3IGZ1bmN0aW9uLgoJKENJRF9HZXRfSW50ZXJmYWNlKTogSGFuZGxlIGBwb3N0c2NyaXB0X25hbWUnIGludGVyZmFjZS4KCgkqIHNyYy9zZm50L3NmZHJpdmVyLmMgKGdldF9zZm50X3Bvc3RzY3JpcHRfbmFtZSk6IE5ldyBmdW5jdGlvbi4KCShTRk5UX0dldF9JbnRlcmZhY2UpOiBIYW5kbGUgYHBvc3RzY3JpcHRfbmFtZScgaW50ZXJmYWNlLgoKCSogc3JjL3R5cGUxL3QxZHJpdmVyLmMgKHQxX2dldF9wc19uYW1lKTogTmV3IGZ1bmN0aW9uLgoJKEdldF9JbnRlcmZhY2UpOiBIYW5kbGUgYHBvc3RzY3JpcHRfbmFtZScgaW50ZXJmYWNlLgoKCSogUkVBRE1FLCBkb2NzL0NIQU5HRVM6IFVwZGF0ZWQgZm9yIDIuMC41IHJlbGVhc2UuCgoyMDAxLTEwLTA4ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJRml4ZWQgYSBidWcgaW4gYGdsbmFtZXMucHknIHRoYXQgcHJldmVudGVkIGl0IGZyb20gZ2VuZXJhdGluZwoJY29ycmVjdCBnbHlwaCBuYW1lcyB0YWJsZXMuICBUaGlzIHJlc3VsdGVkIGluIHRoZSB1bmF2YWlsYWJpbGl0eSBvZgoJY2VydGFpbiBnbHlwaHMgbGlrZSBgQ2FjdXRlJywgYGNhY3V0ZScgYW5kIGBsc2xhc2gnIGluIFVuaWNvZGUKCWNoYXJtYXBzLCBldmVuIGlmIHRoZXNlIHdlcmUgcHJlc2VudCBpbiB0aGUgZm9udCAoY2F1c2luZyBwcm9ibGVtcwoJZm9yIFBvbGlzaCB1c2VycykuCgoJKiBzcmMvdG9vbHMvZ2xuYW1lcy5weSAobWFjX3N0YW5kYXJkX25hbWVzKTogRml4ZWQuCgkodDFfc3RhbmRhcmRfc3RyaW5ncyk6IFNvbWUgZml4ZXMgYW5kIHJlbmFtZWQgdG8gLi4uCgkoc2lkX3N0YW5kYXJkX25hbWVzKTogVGhpcy4KCSh0MV9leHBlcnRfZW5jb2RpbmcpOiBGaXhlZC4KCSh0aGVfYWRvYmVfZ2x5cGhfbGlzdCk6IFJlbmFtZWQgdG8gLi4uCgkoYWRvYmVfZ2x5cGhfbmFtZXMpOiBUaGlzLgoJKHRoZV9hZG9iZV9nbHlwaHMpOiBSZW5hbWVkIHRvIC4uLgoJKGFkb2JlX2dseXBoX3ZhbHVlcyk6IFRoaXMuCgkoZHVtcF9tYWNfaW5kaWNlcywgZHVtcF9nbHlwaF9saXN0LCBkdW1wX3VuaWNvZGVfdmFsdWVzLCBtYWluKToKCVVwZGF0ZWQuCgkqIHNyYy9wc25hbWVzL3BzdGFibGVzLmg6IFJlZ2VuZXJhdGVkLgoJKiBzcmMvcHNuYW1lcy9wc21vZHVsZS5jIChQU19Vbmljb2RlX1ZhbHVlKTogRml4IG9mZnNldC4KCUZpeCByZXR1cm4gdmFsdWUuCglVc2UgYHNpZF9zdGFuZGFyZF90YWJsZScgYW5kIGBwc19uYW1lc190b191bmljb2RlJyBpbnN0ZWFkIG9mCglgdDFfc3RhbmRhcmRfZ2x5cGhzJyBhbmQgYG5hbWVzX3RvX3VuaWNvZGUnLgoJKFBTX01hY2ludG9zaF9OYW1lKTogVXNlIGBwc19nbHlwaF9uYW1lcycgaW5zdGVhZCBvZgoJYHN0YW5kYXJkX2dseXBoX25hbWVzJy4KCShQU19TdGFuZGFyZF9TdHJpbmdzKTogVXNlIGBzaWRfc3RhbmRhcmRfbmFtZXMnIGluc3RlYWQgb2YKCWB0MV9zdGFuZGFyZF9nbHlwaHMnLgoKCSogZG9jL0JVR1MsIGRvYy9UT0RPOiBOZXcgZG9jdW1lbnRzLgoKMjAwMS0xMC0wNyAgUmljaGFyZCBCYXJiZXIgIDxyaWNoQHNvbHV0aW9udWsuY29tPgoKCSogc3JjL2NhY2hlL2Z0bHJ1LmMgKEZUX0xydV9Mb29rdXBfTm9kZSk6IEZpeGVkIGEgYnVnIHRoYXQgcHJldmVudGVkCgljb3JyZWN0IExSVSBiZWhhdmlvdXIuCgoyMDAxLTEwLTA3ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJc2V0am1wKCkgYW5kIGxvbmdqbXAoKSBhcmUgbm93IHVzZWQgZm9yIHJvbGxiYWNrIChpLmUuIHdoZW4gbWVtb3J5Cglwb29sIG92ZXJmbG93IG9jY3VycykuCgoJRnVuY3Rpb24gbmFtZXMgYXJlIG5vdyBhbGwgdW5pZm9ybWx5IHByZWZpeGVkIHdpdGggYGdyYXlfJy4KCgkqIHNyYy9zbW9vdGgvZnRncmF5cy5jOiBJbmNsdWRlIDxzZXRqbXAuaD4uCgkoRXJyUmFzdGVyX01lbW9yeU92ZXJmbG93KTogTmV3IG1hY3JvLgoJKFRBcmVhKTogTmV3IHR5cGUgdG8gc3RvcmUgYXJlYSB2YWx1ZXMgaW4gZWFjaCBjZWxsICh1c2luZyBgaW50JyB3YXMKCXRvbyBzbWFsbCBvbiAxNi1iaXQgc3lzdGVtcykuICA8bGltaXRzLmg+IGlzIGluY2x1ZGVkIHRvIHByb3Blcmx5CglnZXQgdGhlIG5lZWRlZCBkYXRhIHR5cGUuCgkoVENlbGwsIFRSYXN0ZXIpOiBVc2UgaXQuCgkoVFJhc3Rlcik6IE5ldyBlbGVtZW50IGBqdW1wX2J1ZmZlcicuCgkoZ3JheV9jb21wdXRlX2Nib3gpOiBVc2UgYFJBU19BUkcnIGFzIHRoZSBvbmx5IHBhcmFtZXRlciBhbmQgZ2V0Cglgb3V0bGluZScgZnJvbSBpdC4KCShncmF5X3JlY29yZF9jZWxsKTogVXNlIGxvbmdqbXAoKS4KCShncmF5X3NldF9jZWxsKTogVXNlIGdyYXlfcmVjb3JkX2NlbGwoKSBmb3IgZXJyb3IgaGFuZGxpbmcuCgkoZ3JheV9yZW5kZXJfbGluZSwgZ3JheV9yZW5kZXJfY29uaWMsIGdyYXlfcmVuZGVyX2N1YmljKTogU2ltcGxpZnkuCgkoZ3JheV9jb252ZXJ0X2dseXBoX2lubmVyKTogTmV3IGZ1bmN0aW9uLCB1c2luZyBzZXRqbXAoKS4KCShncmF5X2NvbnZlcnRfZ2x5cGgpOiBVc2UgaXQuCgoyMDAxLTEwLTA3ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJUHJvdmlkZSBhIHB1YmxpYyBBUEkgdG8gbWFuYWdlIG11bHRpcGxlIHNpemUgb2JqZWN0cyBmb3IgYSBnaXZlbgoJRlRfRmFjZSBpbiB0aGUgbmV3IGhlYWRlciBmaWxlIGBmdHNpemVzLmgnLgoKCSogaW5jbHVkZS9mcmVldHlwZS9mdHNpemVzLmg6IE5ldyBoZWFkZXIgZmlsZSwKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdG9ianMuaDogVXNlIGl0LgoJUmVtb3ZlIGRlY2xhcmF0aW9ucyBvZiBGVF9OZXdfU2l6ZSBhbmQgRlRfRG9uZV9TaXplIChtb3ZlZCB0bwoJZnRzaXplcy5oKS4KCSogaW5jbHVkZS9mcmVldHlwZS9jb25maWcvZnRoZWFkZXIuaCAoRlRfU0laRVNfSCk6IE5ldyBtYWNyby4KCSogc3JjL2Jhc2UvZnRvYmpzLmMgKEZUX0FjdGl2YXRlX1NpemUpOiBOZXcgZnVuY3Rpb24uCgkqIHNyYy9jYWNoZS9mdGNtYW5hZy5jOiBJbmNsdWRlIGZ0c2l6ZXMuaC4KCShmdGNfbWFuYWdlcl9pbml0X3NpemUsIGZ0Y19tYW5hZ2VyX2ZsdXNoX3NpemUpOiBVc2UKCUZUX0FjdGl2YXRlX1NpemUuCgoyMDAxLTA5LTIwICBEZXRsZWYgV/xya25lciAgPFRldGlTb2Z0QGFwZy5sYWhuLmRlPgoKCSogYnVpbGRzL2FtaWdhLyo6IEFkZGVkIHBvcnQgdG8gQW1pZ2Egd2l0aCB0aGUgU0FTL0MgY29tcGlsZXIuCgoyMDAxLTA5LTE1ICBEZXRsZWYgV/xya25lciAgPFRldGlTb2Z0QGFwZy5sYWhuLmRlPgoKCSogc3JjL3R5cGUxL3QxYWZtLmMgKFQxX0RvbmVfQUZNKTogRnJlZSBgYWZtJy4KCjIwMDEtMDktMTAgIFlhbyBaaGFuZyAgPHl6aGFuZ0BzaGFyZW1lZGlhLmNvbT4KCgkqIHNyYy9zZm50L3R0Y21hcC5jIChjb2RlX3RvX2luZGV4Mik6IEhhbmRsZSBjb2RlIHZhbHVlcyB3aXRoCgloaS1ieXRlID09IDAgY29ycmVjdGx5LgoKMjAwMS0wOS0xMCAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogYnVpbGRzL2xpbmstc3RkLm1rICgkKFBST0pFQ1RfTElCUkFSWSkpOiBGaXggdHlwby4KCjIwMDEtMDgtMzAgIE1hcnRpbiBNdXNrZW5zICA8bW11c2tlbnNAYXVyZWxvbi5jb20+CgoJKiBzcmMvdHlwZTEvdDFsb2FkLmMgKHBhcnNlX2ZvbnRfbWF0cml4KTogQSBuZXcgd2F5IHRvIGNvbXB1dGUgdGhlCgl1bml0cyBwZXIgRU0gd2l0aCBncmVhdGVyIGFjY3VyYWN5IChpbXBvcnRhbnQgZm9yIGVtYmVkZGVkIFQxIGZvbnRzCglpbiBQREYgZG9jdW1lbnRzIHRoYXQgd2VyZSBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBmcm9tIFRydWVUeXBlCglvbmVzKS4KCgkqIHNyYy90eXBlMS90MWxvYWQuYyAoaXNfYWxwaGEpOiBOb3cgc3VwcG9ydHMgYCsnIGluIGZvbnQgbmFtZXM7Cgl0aGlzIGlzIHVzZWQgaW4gZW1iZWRkZWQgZm9udHMuCgoJKiBzcmMvcHNhdXgvcHNvYmpzLmMgKFBTX1RhYmxlX0FkZCk6IEZpeGVkIGEgcmVhbGxvY2F0aW9uIGJ1ZyB0aGF0CglnZW5lcmF0ZWQgYSBkYW5nbGluZyBwb2ludGVyIHJlZmVyZW5jZS4KCjIwMDEtMDgtMzAgIEFudGhvbnkgRmVpayAgPGFmZWlja0Bob3RtYWlsLmNvbT4KCgkqIHNyYy90eXBlMS90MWFmbS5jIChUMV9SZWFkX0FmbSk6IE5vdyBjb3JyZWN0bHkgc2V0cyB0aGUgZmxhZwoJRlRfRkFDRV9GTEFHX0tFUk5JTkcgd2hlbiBhcHByb3ByaWF0ZSBmb3IgVHlwZTEgKyBBRk0gZmlsZXMuCgoyMDAxLTA4LTI1ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvc2ZudC90dGxvYWQuYyAoVFRfTG9hZF9DTWFwKTogRml4IGZyYW1lIGxlbmd0aCBvZgoJYGNtYXBfcmVjX2ZpZWxkcycuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2Z0ZXJyb3JzLmggWyFGVF9DT05GSUdfT1BUSU9OX1VTRV9NT0RVTEVfRVJST1JTXToKCVVuZGVmaW5lIEZUX0VSUl9CQVNFIGJlZm9yZSBkZWZpbmluZyBhZ2Fpbi4KCjIwMDEtMDgtMjIgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy90cnVldHlwZS90dGludGVycC5oOiBGaXggcHJvdG90eXBlIG9mIFRUX01vdmVfRnVuYy4KCjIwMDEtMDgtMjEgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGJ1aWxkcy9kb3MvZG9zLWRlZi5tayAoTk9fT1VUUFVUKTogRG9uJ3QgdXNlIGAmPicgYnV0IGA+Jy4KCjIwMDEtMDgtMjEgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvY29uZmlnL2Z0b3B0aW9uLmg6IENoYW5nZWQgdGhlIGRlZmF1bHQgc2V0dGluZwoJZm9yIEZUX0NPTkZJR19PUFRJT05fVVNFX01PRFVMRV9FUlJPUlMgdG8gdW5kZWZpbmVkLCBzaW5jZSBpdCBicmVha3MKCXNvdXJjZSBjb21wYXRpYmlsaXR5IGluIGEgZmV3IGNhc2VzLiAgVXBkYXRlZCB0aGUgY29tbWVudCB0byBleHBsYWluCgl0aGF0IHRvby4KCjIwMDEtMDgtMTcgIE1hcnRpbiBNdXNrZW5zICA8bW11c2tlbnNAYXVyZWxvbi5jb20+CgoJKiBzcmMvYmFzZS9mdGNhbGMuYyAoRlRfTXVsRGl2KTogRml4ZWQgc2VyaW91cyB0eXBvLgoKMjAwMS0wOC0xMiAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCVVwZGF0aW5nIHRvIE9wZW5UeXBlIDEuMy4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvdHR0eXBlcy5oIChUVF9DTWFwMCwgVFRfQ01hcDIsIFRUX0NNYXA0LAoJVFRfQ01hcDYpOiBBZGRpbmcgZmllbGQgYGxhbmd1YWdlJy4KCShUVF9DTWFwVGFibGUpOiBSZW1vdmluZyBmaWVsZCBgbGFuZ3VhZ2UnLgoJVHlwZSBvZiBgbGVuZ3RoJyBmaWVsZCBjaGFuZ2VkIHRvIEZUX1VMb25nLgoJQWRkaW5nIGZpZWxkcyBmb3IgY21hcHMgZm9ybWF0IDgsIDEwLCBhbmQgMTIuCgkoVFRfQ01hcEdyb3VwKTogTmV3IGF1eGlsaWFyeSBzdHJ1Y3R1cmUuCgkoVFRfQ01hcDhfMTIsIFRUX0NNYXAxMCk6IE5ldyBzdHJ1Y3R1cmVzLgoJKiBpbmNsdWRlL2ZyZWV0eXBlL3R0dGFibGVzLmggKFRUX0hvcmlIZWFkZXIsIFRUX1ZlcnRIZWFkZXIpOgoJUmVtb3ZlZCBsYXN0IGVsZW1lbnQgb2YgYFJlc2VydmVkJyBhcnJheS4KCSogaW5jbHVkZS9mcmVldHlwZS90dG5hbWVpZC5oIChUVF9QTEFURk9STV9DVVNUT00sIFRUX01TX0lEX1VDU180LAoJVFRfTkFNRV9JRF9DSURfRklOREZPTlRfTkFNRSk6IE5ldyBtYWNyb3MuCgoJKiBzcmMvc2ZudC90dGNtYXAuYyAoVFRfQ2hhck1hcF9Mb2FkKTogVXBkYXRlZCBsb2FkaW5nIG9mIGBsYW5ndWFnZScKCWZpZWxkIHRvIHRoZSBuZXcgc3RydWN0dXJlcy4KCUZpeGVkIGZyZWVpbmcgb2YgYXJyYXlzIGluIGNhc2Ugb2YgdW5zdWNjZXNzZnVsIGxvYWRzLgoJQWRkZWQgc3VwcG9ydCBmb3IgbG9hZGluZyBmb3JtYXQgOCwgMTAsIGFuZCAxMiBjbWFwcy4KCShUVF9DaGFyTWFwX0ZyZWUpOiBBZGRlZCBzdXBwb3J0IGZvciBmcmVlaW5nIGZvcm1hdCA4LCAxMCwgYW5kIDEyCgljbWFwcy4KCShjb2RlX3RvX2luZGV4NCk6IFNtYWxsIGltcHJvdmVtZW50LgoJKGNvZGVfdG9faW5kZXg2KTogRGl0dG8uCgkoY29kZV90b19pbmRleDhfMTIsIGNvZGVfdG9faW5kZXgxMCk6IE5ldyBmdW5jdGlvbnMuCgkqIHNyYy9zZm50L3R0bG9hZC5jIChUVF9Mb2FkX01ldHJpY3NfSGVhZGVyKTogVXBkYXRlZCB0byBuZXcKCXN0cnVjdHVyZS4KCShUVF9Mb2FkX0NNYXApOiBEaXR0by4KCgkqIHNyYy9zZm50L3Nmb2Jqcy5jICh0dF9lbmNvZGluZ3MpOiBBZGQgTVMgVUNTNCB0YWJsZSAoYmVmb3JlIE1TCglVbmljb2RlKS4KCjIwMDEtMDgtMTEgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy90eXBlMS90MWRyaXZlci5jICh0MV9nZXRfbmFtZV9pbmRleCk6IEZpeCBjb21waWxlciB3YXJuaW5nLgoKMjAwMS0wOC0wOSAgVG9tIEthY3ZpbnNreSAgPHRrYWN2aW5zQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9jZmYvY2ZmZHJpdnIuYyAoZ2V0X2NmZl9nbHlwaF9uYW1lKTogUmVuYW1lZCB0bwoJY2ZmX2dldF9nbHlwaF9uYW1lIGZvciBjb25zaXN0ZW5jeS4KCgkoY2ZmX2dldF9nbHlwaF9pbmRleCk6IE1pbm9yIGRvY3VtZW50YXRpb24gY2hhbmdlLgoKCSogc3JjL3R5cGUxL3QxZHJpdmVyLmMgKHQxX2dldF9uYW1lX2luZGV4KTogTmV3IGZ1bmN0aW9uIHVzZWQgaW4KCUdldF9JbnRlcmZhY2UgYXMgdGhlIGZ1bmN0aW9uIHJldHVybmVkIHdoZW4gdGhlIGBuYW1lX2luZGV4JwoJZnVuY3Rpb24gaXMgcmVxdWVzdGVkLgoKCShnZXRfdDFfZ2x5cGhfbmFtZSk6IFJlbmFtZWQgdG8gdDFfZ2V0X2dseXBoX25hbWUgZm9yIGNvbnNpc3RlbmN5LgoKMjAwMS0wOC0wOCAgVG9tIEthY3ZpbnNreSAgPHRrYWN2aW5zQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9jZmYvY2ZmbG9hZC5jOiBSZW1vdmVkIGRlZmluaXRpb25zIG9mIGNmZl9pc29hZG9iZV9jaGFyc2V0LAoJY2ZmX2V4cGVydF9jaGFyc2V0LCBjZmZfZXhwZXJ0c3Vic2V0X2NoYXJzZXQsIGNmZl9zdGFuZGFyZF9lbmNvZGluZywKCWFuZCBjZmZfZXhwZXJ0X2VuY29kaW5nIGFycmF5cyB0byBjZmZsb2FkLmguCgoJKiBzcmMvY2ZmL2NmZmxvYWQuaDogQWRkZWQgZGVmaW5pdGlvbnMgb2YgY2ZmX2lzb2Fkb2JlX2NoYXJzZXQsCgljZmZfZXhwZXJ0X2NoYXJzZXQsIGNmZl9leHBlcnRzdWJzZXRfY2hhcnNldCwgY2ZmX3N0YW5kYXJkX2VuY29kaW5nLAoJYW5kIGNmZl9leHBlcnRfZW5jb2RpbmcgYXJyYXlzLgoKCSogc3JjL2NmZi9jZmZkcml2ci5jIChjZmZfZ2V0X25hbWVfaW5kZXgpOiBOZXcgZnVuY3Rpb24sIHJldHVybmVkCgl3aGVuIGBjZmZfZ2V0X2ludGVyZmFjZScgaXMgY2FsbGVkIHdpdGggYSByZXF1ZXN0IGZvciB0aGUKCWBuYW1lX2luZGV4JyBmdW5jdGlvbi4KCgkoY2ZmX2dldF9pbnRlcmZhY2UpOiBNb2RpZmllZCBzbyB0aGF0IGl0IHJldHVybnMgdGhlIGZ1bmN0aW9uCglgY2ZmX2dldF9uYW1lX2luZGV4JyB3aGVuIHRoZSBgbmFtZV9pbmRleCcgZnVuY3Rpb24gaXMgcmVxdWVzdGVkLgoKCSogc3JjL2Jhc2UvZnRvYmpzLmMgKEZUX0dldF9OYW1lX0luZGV4KTogTmV3IGZ1bmN0aW9uLCB1c2VkIHRvCglyZXR1cm4gYSBnbHlwaCBpbmRleCBmb3IgYSBnaXZlbiBnbHlwaCBuYW1lIG9ubHkgaWYgdGhlIGRyaXZlcgoJc3VwcG9ydHMgZ2x5cGggbmFtZXMuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0b2Jqcy5oIChGVF9OYW1lX0luZGV4X1JlcXVlc3Rlcik6CglOZXcgZnVuY3Rpb24gcG9pbnRlciB0eXBlIGRlZmludGlvbiB1c2VkIGluIHRoZSBmdW5jdGlvbgoJRlRfR2V0X05hbWVfSW5kZXguCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ZyZWV0eXBlLmggKEZUX0dldF9OYW1lX0luZGV4KTogQWRkZWQKCWRvY3VtZW50YXRpb24gYW5kIHByb3RvdHlwZS4KCjIwMDEtMDctMjYgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGJ1aWxkcy9jeWd3aW4vKjogUmVtb3ZlZC4gIFVzZSB0aGUgdW5peCBzdHVmZiBpbnN0ZWFkLgoKMjAwMS0wNy0yNiAgSm91ayBKYW5zZW4gIDxqb3VrakBocmVtLnN0bS50dWRlbGZ0Lm5sPgoKCSogYnVpbGRzL3Ztcy9mdGNvbmZpZy5oIChGVF9DQUxMQkFDS19ERUYpOiBVcGRhdGVkIHRvIGNoYW5nZSBkYXRlZAoJMjAwMS0wNi0yNy4KCjIwMDEtMDctMTcgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvcHNhdXguaCAoUFNfVGFibGUpOiBVc2UgRlRfT2Zmc2V0IGZvcgoJYGN1cnNvcicgYW5kIGBjYXBhY2l0eScuCgkqIHNyYy9wc2F1eC9wc29iamMuYyAocmVhbGxvY2F0ZV90MV90YWJsZSk6IFVzZSBGVF9Mb25nIGZvciBzZWNvbmQKCXBhcmFtZXRlci4KCShQU19UYWJsZV9BZGQpOiBVc2UgRlRfT2Zmc2V0IGZvciBgbmV3X3NpemUnLgoKCUFkZCBzdXBwb3J0IGZvciB2ZXJzaW9uIDAuNSBtYXhwIHRhYmxlcy4KCgkqIHNyYy9zZm50L3R0bG9hZC5jIChUVF9Mb2FkX01heFByb2ZpbGUpOiBJbXBsZW1lbnQgaXQuCgkoVFRfTG9hZF9PUzIpOiBJbml0aWFsaXplIHNvbWUgdmFsdWVzLgoKMjAwMS0wNy0xMyAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL2Jhc2UvZnRzeW50aC5jOiBJbmNsdWRlIGZ0Y2FsYy5oIHVuY29uZGl0aW9uYWxseS4KCjIwMDEtMDctMDcgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy90cnVldHlwZS90dGdsb2FkLmMsIHNyYy90cnVldHlwZS90dGludGVycC5jLCBzcmMvcGNmL3BjZnJlYWQ6CglSZW1vdmVkIHBlZGFudGljIGNvbXBpbGVyIHdhcm5pbmdzIHdoZW4gdGhlIGJ5dGVjb2RlIGludGVycHJldGVyIGlzCgljb21waWxlZCBpbi4KCjIwMDEtMDctMDMgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9hdXRvaGludC9haGhpbnQuYyAoYWhfaGludGVyX2FsaWduX3dlYWtfcG9pbnRzKTogUmVtb3ZlCgl1bnVzZWQgdmFyaWFibGUgYGVkZ2VzJy4KCShhaF9oaW50ZXJfbG9hZCk6IFJlbW92ZSB1bnVzZWQgdmFyaWFibGVzIGBvbGRfd2lkdGgnIGFuZAoJYG5ld193aWR0aCcuCgkqIHNyYy9jaWQvY2lkbG9hZC5jIChjaWRfZGVjcnlwdCk6IFVzZSBgVScgZm9yIGNvbnN0YW50IChhZ2FpbikuCgkqIHNyYy9wc2F1eC9wc29ianMuYyAoVDFfRGVjcnlwdCk6IERpdHRvLgoJKiBzcmMvdHlwZTEvdDFwYXJzZS5jIChUMV9HZXRfUHJpdmF0ZV9EaWN0KTogRGl0dG8uCgoyMDAxLTA2LTI4ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBpbmNsdWRlL2ludGVybmFsL2Z0c3RyZWFtLmg6IE1vZGlmaWVkIHRoZSBkZWZpbml0aW9ucwoJb2YgdGhlIEZUX0dFVF9YWFhYIGFuZCBORVhUX1hYWFggbWFjcm9zIGZvciAxNi1iaXQgY29ycmVjdG5lc3MuCgoyMDAxLTA2LTI2ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvY2lkL2NpZGxvYWQuYywgc3JjL2NpZC9jaWRsb2FkLmggKGNpZF9kZWNyeXB0KTogVXNlIEZUX09mZnNldAoJaW5zdGVhZCBvZiBGVF9JbnQgYXMgdHlwZSBmb3IgYGxlbmd0aCcgcGFyYW1ldGVyLgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3BzYXV4LmggKFBTQXV4X0ludGVyZmFjZSk6IFVwZGF0ZWQuCgoyMDAxLTA2LTI3ICBXb2xmZ2FuZyBEb21y9nNlICA8cG9ydGhvcy5kb21yb2VzZUBoYXJ6LmRlPgoKCSogc3JjL3BzYXV4L3Bzb2Jqcy5jLCBzcmMvcHNhdXgvcHNvYmpzLmggKFQxX0RlY3J5cHQpOiBVc2UgRlRfT2Zmc2V0CglpbnN0ZWFkIG9mIEZUX0ludCBhcyB0eXBlIGZvciBgbGVuZ3RoJyBwYXJhbWV0ZXIuCgoKCSogVmVyc2lvbiAyLjAuNCByZWxlYXNlZC4KCT09PT09PT09PT09PT09PT09PT09PT09PT0KCgoyMDAxLTA2LTI3ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBidWlsZHMvdW5peC9mdGNvbmZpZy5pbjogQ2hhbmdlZCB0aGUgZGVmaW5pdGlvbiBvZiB0aGUKCUZUX0NBTExCQUNLX0RFRiBtYWNyby4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnRjb25maWcuaCwgc3JjLyovKi5jOiBDaGFuZ2VkIHRoZSBkZWZpbml0aW9uIGFuZAoJdXNlIG9mIHRoZSBGVF9DQUxMQkFDS19ERUYgbWFjcm8gaW4gb3JkZXIgdG8gc3VwcG9ydCAxNi1iaXQKCWNvbXBpbGVycy4KCgkqIGJ1aWxkcy91bml4L2Z0Y29uZmlnLmluOiBDaGFuZ2VkIHRoZSBkZWZpbml0aW9uIG9mIHRoZQoJRlRfQ0FMTEJBQ0tfREVGIG1hY3JvLgoKCSogc3JjL3NmbnQvdHRsb2FkLmMgKFRUX0xvYWRfS2Vybik6IFRoZSBrZXJuIHRhYmxlIGxvYWRlciBub3cgZW5zdXJlcwoJdGhhdCB0aGUga2VybmluZyB0YWJsZSBpcyBjb3JyZWN0bHkgc29ydGVkIChzb21lIHByb2JsZW0gZm9udHMgZG9uJ3QKCWhhdmUgYSBjb3JyZWN0IGtlcm4gdGFibGUpLgoKMjAwMS0wNi0yNiAgV29sZmdhbmcgRG9tcvZzZSAgPHBvcnRob3MuZG9tcm9lc2VAaGFyei5kZT4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRzdHJlYW0uaCAoRlRfR0VUX09GRjNfTEUpOiBGaXggdHlwby4KCjIwMDEtMDYtMjQgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9iYXNlL2Z0Y2FsYy5jIChmdF9kaXY2NGJ5MzIpOiBGaXhlZCB0aGUgc291cmNlIHRvIHdvcmsKCWNvcnJlY3RseSBvbiAxNi1iaXQgc3lzdGVtcy4KCjIwMDEtMDYtMjMgIEFudGhvbnkgRm9rICA8Zm9rQGRlYmlhbi5vcmc+CgoJKiBkZWJpYW4vKjogQWRkZWQgRGViaWFuIHBhY2thZ2UgYnVpbGQgZGlyZWN0b3J5IGZvciAyLjAuNC4KCjIwMDEtMDYtMjIgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIGRvY3MvUEFURU5UUzogQWRkZWQgcGF0ZW50cyBkaXNjbGFpbWVyLiAgVGhpcyBvbmUgd2FzIG1pc3NpbmchCgoJKiBkb2NzL0NIQU5HRVMsIGRvY3MvdG9kbzogVXBkYXRlZCBmb3IgdGhlIHVwY29taW5nIDIuMC40IHJlbGVhc2UuCgoyMDAxLTA2LTIwICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdGNvbmZpZy5oOiBBZGQgdHdvIG1vcmUgYEwncyB0bwoJY29uc3RhbnRzLgoJQWRkIG1pc3Npbmcgc2VtaWNvbG9ucy4KCgkqIGJ1aWxkcy90b3BsZXZlbC5tazogRG8gc2ltaWxhciBjaGFuZ2UgYXMgZm9yCglidWlsZHMvdW5peC9kZXRlY3QubWsuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ZyZWV0eXBlLmggKEZUX0VOQ19UQUcpOiBOZXcgdmVyc2lvbiB0byBtYWtlIGl0CgllYXNpZXIgdG8gcmVkZWZpbmUuCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnRpbWFnZS5oIChGVF9JTUFHRV9UQUcpOiBEaXR0by4KCgkqIHNyYy9wY2YvcGNmcmVhZC5jIChwY2ZfZ2V0X2VuY29kaW5ncyk6IEFkZCBjYXN0LgoKMjAwMS0wNi0xOSAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogYnVpbGRzL3dpbjMyL3Zpc3VhbGMvZnJlZXR5cGUuZHNwLCBidWlsZHMvd2luMzIvdmlzdWFsYy9pbmRleC5odG1sOgoJVXBkYXRlZCB0aGUgVmlzdWFsIEMrKyBwcm9qZWN0IChmb3IgdGhlIDIuMC40IHJlbGVhc2UpLgoKCSogYnVpbGRzL3VuaXgvZGV0ZWN0Lm1rOiBBZGRlZCBydWxlIGZvciBBSVggZGV0ZWN0aW9uICh3aGljaCB1c2VzCgkvdXNyL3NiaW4vaW5pdCBpbnN0ZWFkIG9mIC9zYmluL2luaXQpLgoKCSogaW5jbHVkZS9mcmVldHlwZS9mdGVycm9ycy5oLCBzcmMvKi8qZXJyKi5oOiBVcGRhdGVkIHNvbWUgb2YgdGhlCgllcnJvciBtYWNyb3MgdG8gc2ltcGxpZnkgaGFuZGxpbmcgb2YgbmV3IGVycm9yIHNjaGVtZS4KCjIwMDEtMDYtMTkgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnR0eXBlcy5oIChGVF9FUlJPUl9NT0RVTEUpOiBOZXcgbWFjcm8uCgoyMDAxLTA2LTE5ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJUmVtb3ZpbmcgX2xvdHNfIG9mIGNvbXBpbGVyIHdhcm5pbmdzIHdoZW4gdGhlIG1vc3QgcGVkYW50aWMgd2FybmluZwoJbGV2ZWxzIG9mIFZpc3VhbCBDKysgYW5kIEJvcmxhbmQgQysrIGFyZSB1c2VkLiAgVG9vIG1hbnkgZmlsZXMgdG8gYmUKCWxpc3RlZCBoZXJlLCBidXQgRlQyIG5vdyBjb21waWxlcyB3aXRob3V0IHdhcm5pbmdzIHdpdGggVkMrKyBhbmQgdGhlCglgL1c0JyB3YXJuaW5nIGxldmVsIChsaW50LXN0eWxlKS4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnJlZXR5cGUuaCAoRlRfTmV3X01lbW9yeV9GYWNlKTogVXBkYXRlZAoJZG9jdW1lbnRhdGlvbi4KCSogaW5jbHVkZS9mcmVldHlwZS9mdHR5cGVzLmggKEZUX0JPT0wpOiBOZXcgbWFjcm8uCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRkZWJ1Zy5oOiBBZGQgI3ByYWdtYSBmb3IgVmlzdWFsIEMrKwoJdG8gc3VwcHJlc3Mgd2FybmluZy4KCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdHN0cmVhbS5oIChGVF9HRVRfU0hPUlRfe0JFLExFfSwKCUZUX0dFVF9PRkYzX3tCRSxMRX0sIEZUX0dFVF9MT05HX3tCRSxMRX0pOiBOZXcgbWFjcm9zLgoJKE5FWFRfKik6IFVzZSB0aGVtLgoJKiBzcmMvYXV0b2hpbnQvYWhnbG9iYWwuYzogSW5jbHVkZSBGVF9JTlRFUk5BTF9ERUJVR19ILgoJKEZUX05ld19NZW1vcnlfRmFjZSk6IEFkZCBgY29uc3QnIHRvIGZ1bmN0aW9uIGRlY2xhcmF0aW9uLgoKMjAwMS0wNi0xOCAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCU1pbm9yIGNsZWFudXBzIHRvIHJlbW92ZSBjb21waWxlciB3YXJuaW5ncy4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvY2FjaGUvZnRjbWFuYWcuaCAoRlRDX01BWF9CWVRFU19ERUZBVUxUKTogVXNlCglgTCcgZm9yIGNvbnN0YW50LgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdG9wdGlvbi5oIChGVF9SRU5ERVJfUE9PTF9TSVpFKTogRGl0dG8uCgkqIHNyYy9iYXNlL2Z0Y2FsYy5jIChGVF9NdWxEaXYpOiBVc2UgYEwnIGZvciBjb25zdGFudC4KCSogc3JjL2Jhc2UvZnRnbHlwaC5jIChGVF9HbHlwaF9HZXRfQ0JveCk6IFJlbW92ZSBgZXJyb3InIHZhcmlhYmxlLgoJKiBzcmMvYmFzZS9mdHRyaWdvbi5jIChmdF90cmlnX2FyY3Rhbl90YWJsZSk6IFVzZSBgTCcgZm9yIGNvbnN0YW50cy4KCSogc3JjL2Jhc2UvZnRvYmpzLmMgKEZUX0RvbmVfU2l6ZSk6IEZpeCByZXR1cm4gdmFsdWUuCgkoRlRfU2V0X0NoYXJfU2l6ZSwgRlRfU2V0X1BpeGVsX1NpemVzLCBGVF9HZXRfS2VybmluZyk6IFJlbW92ZQoJdW51c2VkIGBtZW1vcnknIHZhcmlhYmxlLgoJKiBzcmMvYXV0b2hpbnQvYWhnbHlwaC5jIChhaF9nZXRfb3JpZW50YXRpb24pOiBVc2UgYEwnIGZvciBjb25zdGFudC4KCSogc3JjL2F1dG9oaW50L2FoaGludC5jIChhaF9oaW50X2VkZ2VzXzMsCglhaF9oaW50ZXJfYWxpZ25fZWRnZV9wb2ludHMpOiBSZW1vdmUgdW51c2VkIGBiZWZvcmUnIGFuZCBgYWZ0ZXInCgl2YXJpYWJsZXMuCgkoYWhfaGludGVyX2FsaWduX3dlYWtfcG9pbnRzKTogUmVtb3ZlIHVudXNlZCBgZWRnZV9saW1pdCcgdmFyaWFibGUuCgkoYWhfaGludGVyX2xvYWQpOiBSZW1vdmUgdW51c2VkIGBuZXdfYWR2YW5jZScsIGBzdGFydF9jb250b3VyJywKCWFuZCBgbWV0cmljcycgdmFyaWFibGVzLgoJKiBzcmMvY2ZmL2NmZmxvYWQuYyAoQ0ZGX0xvYWRfRW5jb2RpbmcpOiBSZW1vdmUgZGVhZCBjb2RlIHRvIGF2b2lkCgljb21waWxlciB3YXJuaW5nLgoJKiBzcmMvY2ZmL2NmZm9ianMuYyAoQ0ZGX0luaXRfRmFjZSk6IFJlbW92ZSB1bnVzZWQgYGJhc2Vfb2Zmc2V0JwoJdmFyaWFibGUuCgkqIHNyYy9jZmYvY2ZmZ2xvYWQuYyAoQ0ZGX1BhcnNlX0NoYXJTdHJpbmdzKTogUmVtb3ZlIHVudXNlZAoJYG91dGxpbmUnIHZhcmlhYmxlLgoJKGNmZl9jb21wdXRlX2JpYXMpOiBVc2UgYFUnIGZvciBjb25zdGFudC4KCSogc3JjL2NpZC9jaWRsb2FkLmMgKGNpZF9kZWNyeXB0KTogRGl0dG8uCgkqIHNyYy9wc2F1eC9wc29ianMuYyAoVDFfRGVjcnlwdCk6IERpdHRvLgoJKiBzcmMvcHNhdXgvdDFkZWNvZGUuYyAoVDFfRGVjb2Rlcl9QYXJzZV9DaGFyU3RyaW5ncyk6IERpdHRvLgoJKiBzcmMvc2ZudC90dGxvYWQuYyAoVFRfTG9hZF9LZXJuKTogUmVtb3ZlIHVudXNlZCBgdmVyc2lvbicKCXZhcmlhYmxlLgoJKiBzcmMvc2ZudC90dHNiaXQuYyAoVFRfTG9hZF9TQml0X0ltYWdlKTogUmVtb3ZlIHVudXNlZCBgdG9wJwoJdmFyaWFibGUuCgkqIHNyYy90cnVldHlwZS90dGdsb2FkLmMgKGxvYWRfdHJ1ZXR5cGVfZ2x5cGgpOiBSZW1vdmUgdW51c2VkCglgbnVtX2NvbnRvdXJzJyBhbmQgYGluc19vZmZzZXQnIHZhcmlhYmxlcy4KCShjb21wdXRlX2dseXBoX21ldHJpY3MpOiBSZW1vdmUgdW51c2VkIGBUb3AnIGFuZCBgeF9zY2FsZScKCXZhcmlhYmxlcy4KCShUVF9Mb2FkX0dseXBoKTogUmVtb3ZlIHVudXNlZCBgbWVtb3J5JyB2YXJpYWJsZS4KCSogc3JjL3Ntb290aC9mdGdyYXlzLmMgKGdyYXlzX3Jhc3Rlcl9yZW5kZXIpOiBVc2UgYEwnIGZvciBjb25zdGFudHMuCgoyMDAxLTA2LTE4ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJTWFrZSB0aGUgbmV3IGVycm9yIHNjaGVtZSBzb3VyY2UgY29tcGF0aWJsZSB3aXRoIG9sZGVyIEZUIHZlcnNpb25zCglieSBpbnRyb2R1Y2luZyBhbm90aGVyIGxheWVyLgoKCSogaW5jbHVkZS9mcmVldHlwZS9mdGVycm9ycy5oIChGVF9FUlJPUkRFRl8sIEZUX05PRVJST1JERUZfKTogTmV3CgltYWNyb3MuCgkoRlRfTk9FUlJPUkRFRik6IFJlbW92ZWQuCgkqIGluY2x1ZGUvKi8qZXJyKi5oOiBVc2UgRlRfRVJST1JERUZfIGFuZCBGVF9OT0VSUk9SREVGXy4KCjIwMDEtMDYtMTYgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnJlZXR5cGUuaCAoRlRfRU5DX1RBRyk6IE5ldyBtYWNyby4KCShGVF9FbmNvZGluZ18pOiBVc2UgaXQuCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnRpbWFnZS5oIChGVF9JTUFHRV9UQUcpOiBEZWZpbmUgaXQKCWNvbmRpdGlvbmFsbHkuCgoyMDAxLTA2LTE0ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJTW9kaWZpZWQgdGhlIFRydWVUeXBlIGludGVycHJldGVyIHRvIGxldCBpdCB1c2UgdGhlIG5ldwoJdHJpZ29ub21ldHJpYyBmdW5jdGlvbnMgcHJvdmlkZWQgaW4gYGZ0dHJpZ29uLmgnLiAgVGhpcyBnZXRzIHJpZCBvZgoJc29tZSBvbGQgNjQtYml0IGNvbXB1dGF0aW9uIHJvdXRpbmVzLCBhcyB3ZWxsIGFzIG1hbnkgd2FybmluZ3Mgd2hlbgoJY29tcGlsaW5nIHRoZSBsaWJyYXJ5IHdpdGggdGhlIGBsb25nIGxvbmcnIDY0LWJpdCBpbnRlZ2VyIHR5cGUuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdG9wdGlvbi5oOiBVbmRlZmluZQoJRlRfQ09ORklHX09QVElPTl9PTERfQ0FMQ1MuCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRjYWxjLmg6IFJlYXJyYW5nZSB1c2Ugb2YKCUZUX0NPTkZJR19PUFRJT05fT0xEX0NBTENTLgoJKiBzcmMvYmFzZS9mdGNhbGMuYzogQWRkIGRlY2xhcmF0aW9uIG9mIEZUX0ludDY0IGlmCglGVF9DT05GSUdfT1BUSU9OX09MRF9DQUxDUyBpc24ndCBkZWZpbmVkLgoJKiBzcmMvdHJ1ZXR5cGUvdHRpbnRlcnAuYzogVXNlIEZUX1RSSUdPTk9NRVRSWV9ILgoJKE5vcm0pOiBBZGQgYSBzcGVjaWFsIHZlcnNpb24gaWYgRlRfQ09ORklHX09QVElPTl9PTERfQ0FMQ1MgaXNuJ3QKCWRlZmluZWQuCgkoQ3VycmVudF9SYXRpbywgTm9ybWFsaXplKTogU2ltcGxpZnkgY29kZS4KCjIwMDEtMDYtMTEgIE1pa2UgT3dlbnMgIDxNT3dlbnNAYW10ZGF0YXNvdXRoLmNvbT4KCgkqIHNyYy9iYXNlL2Z0Y2FsYy5jIChGVF9NdWxEaXYsIEZUX0RpdkZpeCwgRlRfU3FydDY0KTogUmVtb3ZlCgljb21waWxlciB3YXJuaW5ncy4KCjIwMDEtMDYtMDggIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGJ1aWxkcy91bml4L2NvbmZpZ3VyZS5pbjogUmVuYW1lZCB0byAuLi4KCSogYnVpbGRzL3VuaXgvY29uZmlndXJlLmFjOiBUaGlzIHRvIG1ha2Ugc3VyZSB0aGF0IGF1dG9jb25mIDIuNTAgaXMKCW5lZWRlZC4KCVJ1biBgYXV0b3VwZGF0ZScgb24gaXQuCglJbmNyZWFzZSBgdmVyc2lvbl9pbmZvJyB0byA3OjA6MS4KCSogYnVpbGRzL3VuaXgvY29uZmlndXJlOiBSZWdlbmVyYXRlZC4KCjIwMDEtMDYtMDggIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9hdXRvaGludC9haGhpbnQuYyAoYWhfaGludGVyX2xvYWRfZ2x5cGgpOiBGaXhlZCBhIGJ1ZyB0aGF0Cgljb3JydXB0ZWQgdHJhbnNmb3JtZWQgZ2x5cGhzIHRoYXQgd2VyZSBhdXRvLWhpbnRlZCAodGhlIHRyYW5zZm9ybQoJd2FzIGFwcGxpZWQgdHdpY2UpLgoKCUZpeGVkIGEgYnVnIHRoYXQgcmV0dXJuZWQgYW4gaW52YWxpZCBsaW5lYXIgd2lkdGggZm9yIGNvbXBvc2l0ZQoJVHJ1ZVR5cGUgZ2x5cGhzLgoKCSogaW5jbHVkZS9pbnRlcm5hbC90dHR5cGVzLmggKFRUX0xvYWRlcl8pOiBUd28gbmV3IGVsZW1lbnRzIGBsaW5lYXInCglhbmQgYGxpbmVhcl9kZWYnLgoJKiBzcmMvdHJ1ZXR5cGUvdHRnbG9hZC5jIChsb2FkX3RydWV0eXBlX2dseXBoLAoJY29tcHV0ZV9nbHlwaF9tZXRyaWNzKTogVXNlIGl0LgoKCSogaW5jbHVkZS9mdHR5cGVzLmggKEZUX0VSUk9SX0JBU0UpOiBOZXcgbWFjcm8uCgkqIHNyYy9iYXNlL2Z0b2Jqcy5jIChGVF9PcGVuX0ZhY2UsIEZUX1JlbmRlcl9HbHlwaF9JbnRlcm5hbCk6IFVzZSBpdAoJdG8gbWFrZSBzb3VyY2UgY29kZSB3b3JrIHdpdGggdGhlIG5ldyBlcnJvciBzY2hlbWUgaW1wbGVtZW50ZWQgYnkKCVdlcm5lci4KCSogc3JjL2Jhc2UvZnRvdXRsbi5jIChGVF9PdXRsaW5lX1JlbmRlcik6IERpdHRvLgoKMjAwMS0wNi0wNyAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCVVwZGF0aW5nIHRvIGxpYnRvb2wgMS40LjAgYW5kIGF1dG9jb25mIDIuNTAuCgoJKiBidWlsZHMvdW5peC9sdGNvbmZpZzogUmVtb3ZlZC4KCSogYnVpbGRzL3VuaXgvbHRtYWluLnNoLCBidWlsZHMvdW5peC9jb25maWd1cmUuaW4sCglidWlsZHMvdW5peC9hY2xvY2FsLm00OiBVcGRhdGVkLgoJKiBidWlsZHMvdW5peC9jb25maWd1cmU6IFJlZ2VuZXJhdGVkLgoKMjAwMS0wNi0wNiAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCUNvbXBsZXRlIHJlZGVzaWduIG9mIGVycm9yIGNvZGVzLiAgUGxlYXNlIGNoZWNrIGZ0bW9kZXJyLmggZm9yIG1vcmUKCWRldGFpbHMuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2NmZmVycnMuaCwKCWluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvdHRlcnJvcnMuaCwKCWluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvdDFlcnJvcnMuaDogUmVtb3ZlZC4gIFJlcGxhY2VkIHdpdGggZmlsZXMKCWxvY2FsIHRvIHRoZSBtb2R1bGUuICBBbGwgZXh0cmEgZXJyb3IgY29kZXMgaGF2ZSBiZWVuIG1vdmVkIHRvCglgZnRlcnJvcnMuaCcuCgoJKiBzcmMvc2ZudC90dHBvc3QuaDogTW92ZSBlcnJvciBjb2RlcyB0byBgZnRlcnJvcnMuaCcuCgoJKiBzcmMvYXV0b2hpbnQvYWhlcnJvcnMuaCwgc3JjL2NhY2hlL2Z0Y2Vycm9yLmgsIHNyYy9jZmYvY2ZmZXJycy5oLAoJc3JjL2NpZC9jaWRlcnJzLmgsIHNyYy9wY2YvcGNmZXJyb3IuaCwgc3JjL3BzYXV4L3BzYXV4ZXJyLmgsCglzcmMvcHNuYW1lcy9wc25hbWVyci5oLCBzcmMvcmFzdGVyL3Jhc3RlcnJzLmgsIHNyYy9zZm50L3NmZXJyb3JzLmgsCglzcmMvc21vb3RoL2Z0c21lcnJzLmgsIHNyYy90cnVldHlwZS90dGVycm9ycy5oLAoJc3JjL3R5cGUxL3QxZXJyb3JzLmgsIHNyYy93aW5mb250cy9mbnRlcnJzLmg6IE5ldyBmaWxlcyBkZWZpbmluZyB0aGUKCWVycm9yIG5hbWVzIGZvciB0aGUgbW9kdWxlIGl0IGJlbG9uZ3MgdG8uCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2Z0bW9kZXJyLmg6IE5ldyBmaWxlLCBkZWZpbmluZyB0aGUgbW9kdWxlIGVycm9yCglvZmZzZXRzLiAgSXRzIHN0cnVjdHVyZSBpcyBzaW1pbGFyIHRvIGBmdGVycm9ycy5oJy4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnRlcnJvcnMuaCAoRlRfTk9FUlJPUkRFRik6IE5ldyBtYWNyby4KCShGVF9FUlJPUkRFRik6IFJlZGVmaW5lZCB0byB1c2UgbW9kdWxlIGVycm9yIG9mZnNldHMuCglBbGwgaW50ZXJuYWwgZXJyb3IgY29kZXMgYXJlIG5vdyBwdWJsaWM7IHVudXNlZCBlcnJvciBjb2RlcyBoYXZlCgliZWVuIHJlbW92ZWQsIHNvbWUgYXJlIG5ldy4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvY29uZmlnL2Z0aGVhZGVyLmggKEZUX01PRFVMRV9FUlJPUlNfSCk6IE5ldwoJbWFjcm8uCgkqIGluY2x1ZGUvZnJlZXR5cGUvY29uZmlnL2Z0b3B0aW9uLmgKCShGVF9DT05GSUdfT1BUSU9OX1VTRV9NT0RVTEVfRVJST1JTKTogTmV3IG1hY3JvLgoKCUFsbCBvdGhlciBzb3VyY2UgZmlsZXMgaGF2ZSBiZWVuIHVwZGF0ZWQgdG8gdXNlIHRoZSBuZXcgZXJyb3IgY29kZXM7Cglzb21lIGFscmVhZHkgZXhpc3RpbmcgKGludGVybmFsKSBlcnJvciBjb2RlcyBsb2NhbCB0byBhIG1vZHVsZSBoYXZlCgliZWVuIHJlbmFtZWQgdG8gZ2l2ZSB0aGVtIHRoZSBzYW1lIG5hbWUgYXMgaW4gdGhlIGJhc2UgbW9kdWxlLgoKCUFsbCBtYWtlIGZpbGVzIGhhdmUgYmVlbiB1cGRhdGVkIHRvIGluY2x1ZGUgdGhlIGxvY2FsIGVycm9yIGZpbGVzLgoKMjAwMS0wNi0wNiAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL2NpZC9jaWR0b2tlbnMuaDogUmVwbGFjZWQgd2l0aC4uLgoJKiBzcmMvY2lkL2NpZHRva2VuLmg6IFRoaXMgZmlsZSBmb3IgOCszIGNvbnNpc3RlbmN5LgoKCSogc3JjL3Jhc3Rlci9mdHJhc3Rlci5jOiBVc2UgbWFjcm9zIGZvciBoZWFkZXIgZmlsZSBuYW1lcy4KCgkqIHNyYy9pbmNsdWRlL2ZyZWV0eXBlL3R0dGFibGVzLmggKFRUX0hvcmlIZWFkZXJfLCBUVF9WZXJ0SGVhZGVyXyk6CglGaXggbGVuZ3RoIG9mIGBSZXNlcnZlZCcgYXJyYXkuICBOb3RlIHRoYXQgdGhpcyBpc24ndCB0aGUgcmVhbCBmaXgKCXNpbmNlIHJlY2VudCBPcGVuVHlwZSBzcGVjcyBoYXZlIGludHJvZHVjZWQgYSBgQ2FyZXRPZmZzZXQnIGZpZWxkCglpbnN0ZWFkIG9mIHRoZSBmaXJzdCByZXNlcnZlZCBieXRlLgoKMjAwMS0wNS0yOSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogSU5TVEFMTDogTWlub3IgZml4ZXMuCgoKCSogVmVyc2lvbiAyLjAuMyByZWxlYXNlZC4KCT09PT09PT09PT09PT09PT09PT09PT09PT0KCgoyMDAxLTA1LTI5ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBJTlNUQUxMLCBkb2NzL0NIQU5HRVM6IFVwZGF0ZWQuCgoyMDAxLTA1LTI1ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJTW92ZWQgc2V2ZXJhbCBkb2N1bWVudHMgZnJvbSB0aGUgdG9wLWxldmVsIHRvIHRoZSBgZG9jcycgZGlyZWN0b3J5LgoKCSogc3JjL2Jhc2UvZnRjYWxjLmMgKEZUX0RpdkZpeCk6IFNtYWxsIGZpeCB0byByZXR1cm4gdmFsdWUuCgoyMDAxLTA1LTE2ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBzcmMvdHJ1ZXR5cGUvdHRnbG9hZC5jIChsb2FkX3RydWV0eXBlX2dseXBoKTogRml4ZWQgYSBidWcgaW4gdGhlCgljb21wb3NpdGUgbG9hZGVyLiAgU3BvdHRlZCBieSBLZWl0aCBQYWNrYXJkLgoJKiBzcmMvYmFzZS9mdG9ianMuYyAoRlRfR2x5cGhMb2FkZXJfQ2hlY2tfUG9pbnRzLAoJRlRfR2x5cGhMb2FkZXJfQ2hlY2tfU3ViZ2x5cGhzKTogRGl0dG8uCgoyMDAxLTA1LTE0ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJRml4ZWQgdGhlIGluY29ycmVjdCBibHVlIHpvbmUgY29tcHV0YXRpb25zLCBhbmQgaW1wcm92ZWQgdGhlCgljb21wb3NpdGUgc3VwcG9ydC4gIE5vdGUgdGhhdCB0aGVzZSBjaGFuZ2VzIHJlc3VsdCBpbiBpbXByb3ZlZAoJcmVuZGVyaW5nLCB3aGlsZSBzb21ldGltZXMgaW50cm9kdWNpbmcgdGhlaXIgb3duIGFydGVmYWN0cy4gIFRoaXMgaXMKCXByb2JhYmx5IHRoZSBsYXN0IGJpZyBjaGFuZ2UgdG8gdGhlIGF1dG9oaW50ZXIgYmVmb3JlIHRoZQoJaW50cm9kdWN0aW9uIG9mIGEgY29tcGxldGUgcmVwbGFjZW1lbnQuCgoJKiBzcmMvYXV0b2hpbnQvYWhnbG9iYWwuYyAoc29ydF92YWx1ZXMpOiBGaXggbG9vcC4KCSogc3JjL2F1dG9oaW50L2FoZ2x5cGguYzogUmVtb3ZlZCBzb21lIG9ic29sZXRlIGNvZGUuCgkoYWhfb3V0bGluZV9jb21wdXRlX2VkZ2VzKTogTW9kaWZ5IGNvZGUgdG8gc2V0IHRoZSBhaF9lZGdlX3JvdW5kCglmbGFnLgoJKGFoX291dGxpbmVfY29tcHV0ZV9ibHVlX2VkZ2VzKTogQWRkIGNvZGUgdG8gY29tcHV0ZSBhY3RpdmUgYmx1ZQoJem9uZXMuCgkqIHNyYy9hdXRvaGludC9haGhpbnQuYyAoYWhfaGludGVyX2dseXBoX2xvYWQpOiBDaGFuZ2UgbG9hZF9mbGFncwoJdmFsdWUuCgoJKiBzcmMvYmFzZS9mdGNhbGMuYyAoRlRfRGl2Rml4KTogRml4ZWQgYSBidWcgaW4gdGhlIDY0LWJpdCBjb2RlIHRoYXQKCWNyZWF0ZWQgaW5jb3JyZWN0IHNjYWxlIGZhY3RvcnMhCgkoRlRfUm91bmRfRml4LCBGVF9DZWlsRml4LCBGVF9GbG9vckZpeCk6IE1pbm9yIGltcHJvdmVtZW50cy4KCjIwMDEtMDUtMTIgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnRiYm94Lmg6IEZUQkJPWF9IIC0+IF9fRlRCQk9YX0hfXy4KCSogaW5jbHVkZS9mcmVldHlwZS9mdHRyaWdvbi5oOiBfX0ZUX1RSSUdPTk9NRVRSWV9IX18gLT4KCV9fRlRUUklHT05fSF9fLgoJSW5jbHVkZSBGVF9GUkVFVFlQRV9ILgoJQmVhdXRpZmllZDsgYWRkZWQgY29weXJpZ2h0LgoJKiBzcmMvYmFzZS9mdHRyaWdvbi5jOiBCZWF1dGlmaWVkOyBhZGRlZCBjb3B5cmlnaHQuCgoyMDAxLTA1LTExICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBzcmMvY2ZmL2NmZnBhcnNlLmMgKGNmZl9wYXJzZV9mb250X21hdHJpeCksIHNyYy9jaWQvY2lkbG9hZC5jCgkocGFyc2VfZm9udF9tYXRyaXgpLCBzcmMvdHlwZTEvdDFsb2FkLmMgKHBhcnNlX2ZvbnRfbWF0cml4KTogRml4ZWQKCXRoZSBpbmNvcnJlY3QgRU0gc2l6ZSBjb21wdXRhdGlvbi4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnR0cmlnb24uaCwgc3JjL2Jhc2UvZnR0cmlnb24uYzogTmV3IGZpbGVzLAoJYWRkaW5nIHRyaWdvbm9tZXRyaWMgZnVuY3Rpb25zIHRvIHRoZSBjb3JlIEFQSSAodXNpbmcgQ29yZGljCglhbGdvcml0aG1zKS4KCSogc3JjL2Jhc2UvZnRiYXNlLmMsIHNyYy9iYXNlL0phbWZpbGUsIHNyYy9iYXNlL3J1bGVzLm1rOiBVc2UgdGhlbS4KCgkqIGJ1aWxkcy9uZXdsaW5lOiBOZXcgZmlsZS4KCSogYnVpbGRzL3RvcF9sZXZlbC5taywgYnVpbGRzL2RldGVjdC5tazogVXNlIGl0LiAgVGhpcyBmaXhlcwoJcHJvYmxlbXMgd2l0aCBNYWtlIG9uIFdpbmRvd3MgMjAwMCwgYXMgd2VsbCBhcyBwcm9ibGVtcyB3aGVuIGBtYWtlCglkaXN0Y2xlYW4nIGlzIGludm9rZWQgb24gYSBub24tVW5peCBwbGF0Zm9ybSB3aGVuIHRoZXJlIGlzIG5vCglgY29uZmlnLm1rJyBpbiB0aGUgY3VycmVudCBkaXJlY3RvcnkuCgoJKiBidWlsZHMvZnJlZXR5cGUubWs6IEZpeGVkIGEgcHJvYmxlbSB3aXRoIG9iamVjdCBkZWxldGlvbnMgdW5kZXIKCURvcy9XaW5kb3dzL09TLzIgc3lzdGVtcy4KCglBZGRlZCBuZXcgZGlyZWN0b3J5IHRvIGhvbGQgdG9vbHMgYW5kIHRlc3QgcHJvZ3JhbXMuCgoJKiBkb2NzL2RvY21ha2VyLnB5LCBkb2NzL2dsbmFtZXMucHk6IE1vdmVkIHRvLi4uCgkqIHNyYy90b29scy9kb2NtYWtlci5weSwgc3JjL3Rvb2xzL2dsbmFtZXMucHk6IFRoaXMgcGxhY2UuCgkqIHNyYy90b29scy9jb3JkaWMucHk6IE5ldyBmaWxlIHVzZWQgdG8gY29tcHV0ZSBhcmN0YW5nZW50IHRhYmxlCgluZWVkZWQgYnkgZnR0cmlnb24uYy4KCSogc3JjL3Rvb2xzL3Rlc3RfYmJveC5jLCBzcmMvdG9vbHMvdGVzdF90cmlnLmM6IE5ldyB0ZXN0IGZpbGVzLgoKCSogc3JjL3Rvb2xzL2RvY21ha2VyLnB5OiBJbXByb3ZlZCB0aGUgc2NyaXB0IHRvIGFkZCB0aGUgY3VycmVudCBkYXRlCglhdCB0aGUgZm9vdGVyIG9mIGVhY2ggd2ViIHBhZ2UgKHVzZWZ1bCB0byBkaXN0aW5ndWlzaCBiZXR3ZWVuCgl2ZXJzaW9ucykuCgoJKiBKYW1maWxlOiBGaXhlZCBpbmNvcnJlY3QgSERSTUFDUk8gYXJndW1lbnQuCgoJKiBUT0RPOiBSZW1vdmVkIHRoZSBjdWJpYyBhcmMgYmJveCBjb21wdXRhdGlvbiBub3RlLCBzaW5jZSBpdCBoYXMgYmVlbgoJZml4ZWQgcmVjZW50bHkuCgkqIHNyYy9iYXNlL2Z0YmJveC5jICh0ZXN0X2N1YmljX3plcm8pOiBSZW5hbWVkIHRvLi4uCgkodGVzdF9jdWJpY19leHRyZW1hKTogVGhpcyBmdW5jdGlvbi4gIFVzZSBgVUwnIGZvciB1bnNpZ25lZCBsb25nCgljb25zdGFudHMuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL3QxdGFibGVzLmgsIGluY2x1ZGUvZnJlZXR5cGUvY29uZmlnL2Z0b3B0aW9uLmg6CglGb3JtYXR0aW5nLgoKMjAwMS0wNS0xMCAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogc3JjL2Jhc2UvZnRvYmpzLmMgKEZUX09wZW5fRmFjZSk6IEZpeGVkIGEgc21hbGwgbWVtb3J5IGxlYWsKCXdoaWNoIGhhcHBlbmVkIHdoZW4gdHJ5aW5nIHRvIG9wZW4gMC1zaXplIGZvbnQgZmlsZXMhCgoyMDAxLTA1LTA5ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0Y2FsYy5oOiBNb3ZlIGRlY2xhcmF0aW9uIG9mCglGVF9TcXJ0Rml4ZWQoKSBvdXQgb2YgYCNpZmRlZiBGVF9MT05HNjQnLgoKMjAwMS0wNS0wOCAgRnJhbmNlc2NvIFphcHBhIE5hcmRlbGxpICA8RnJhbmNlc2NvLlphcHBhLk5hcmRlbGxpQGVucy5mcj4KCgkqIHNyYy9wY2Zkcml2ZXIuYyAoUENGX0xvYWRfR2x5cGgpOiBGaXhlZCBpbmNvcnJlY3QgYml0bWFwIHdpZHRoCgljb21wdXRhdGlvbi4KCjIwMDEtMDUtMDggIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIGRvY3MvZG9jbWFrZXIucHk6IFVwZGF0ZWQgdGhlIERvY01ha2VyIHNjcmlwdCBpbiBvcmRlciB0byBhZGQKCWNvbW1hbmQgbGluZSBvcHRpb25zICgtLW91dHB1dCwtLXByZWZpeCwtLXRpdGxlKSwgZml4IHRoZSBlcnJvbmVvdXMKCWxpbmUgbnVtYmVycyByZXBvcnRlZCBkdXJpbmcgZXJyb3JzIGFuZCB3YXJuaW5ncywgYW5kIG90aGVyCglmb3JtYXR0aW5nIGlzc3Vlcy4KCgkqIHNyYy9iYXNlL2Z0Y2FsYy5jIChGVF9NdWxEaXYsIEZUX011bEZpeCwgRlRfRGl2Rml4KTogVmFyaW91cyB0aW55CglmaXhlcyByZWxhdGVkIHRvIHJvdW5kaW5nIGluIDY0LWJpdHMgcm91dGluZXMgYW5kCglwc2V1ZG8tYG9wdGltaXphdGlvbnMnLgoKMjAwMS0wNC0yNyAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogc3JjL2Jhc2UvZnRiYm94LmMgKEJCb3hfQ3ViaWNfQ2hlY2spOiBGaXhlZCB0aGUgY29lZmZpY2llbnQKCW5vcm1hbGl6YXRpb24gYWxnb3JpdGhtIChpbnZhbGlkIGZpbmFsIGJpdCBwb3NpdGlvbiwgYW5kIGludmFsaWQKCXNoaWZ0IGNvbXB1dGF0aW9uKS4KCjIwMDEtMDQtMjYgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGJ1aWxkcy91bml4L2NvbmZpZy5ndWVzcywgYnVpbGRzL3VuaXgvY29uZmlnLnN1YjogVXBkYXRlZCB0bwoJbGF0ZXN0IHZlcnNpb25zIGZyb20gZ251Lm9yZy4KCgkqIGJ1aWxkcy9jb21waWxlci9nY2MtZGV2Lm1rOiBBZGQgYC1Xbm8tbG9uZy1sb25nJyBmbGFnLgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdGNhbGMuaDogRGVmaW5lIEZUX1NxcnRGaXhlZCgpCgl1bmNvZGl0aW9uYWxseS4KCSogc3JjL2Jhc2UvZnRiYm94LmM6IEluY2x1ZGUgRlRfSU5URVJOQUxfQ0FMQ19ILgoJRml4IGNvbXBpbGVyIHdhcm5pbmdzLgoJKiBzcmMvYmFzZS9mdGNhbGMuYzogRml4IChwb3RlbnRpYWwpIGNvbXBpbGVyIHdhcm5pbmdzLgoKMjAwMS0wNC0yNiAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogc3JjL2Jhc2UvZnRjYWxjLmMgKEZUX1NxcnRGaXhlZCk6IENvcnJlY3RlZC9vcHRpbWl6ZWQgdGhlIDMyLWJpdAoJZml4ZWQtcG9pbnQgc3F1YXJlIHJvb3QgY29tcHV0YXRpb24uICBJdCBpcyBub3cgdXNlZCBldmVuIHdpdGgKCTY0LWJpdHMgaW50ZWdlcnMsIGFzIGl0IGlzIF9tdWNoXyBmYXN0ZXIgdGhhbiBjYWxsaW5nIEZUX1NxcnQ2NCA6LSkKCgkqIHNyYy9iYXNlL2Z0YmJveC5jOiBSZW1vdmVkIGludmFsaWQgYCNpbmNsdWRlIEZUX0JFWklFUl9IJyBsaW5lLgoKMjAwMS0wNC0yNSAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogc3JjL2Jhc2UvZnRiYm94LmMgKEJCb3hfQ3ViaWNfQ2hlY2spOiBSZXdyb3RlIGZ1bmN0aW9uIHRvIHVzZQoJZGlyZWN0IGNvbXB1dGF0aW9ucyB3aXRoIDE2LjE2IHZhbHVlcyBpbnN0ZWFkIG9mIHN1Yi1kaXZpc2lvbnMuICBJdAoJaXMgbm93IHNsb3dlciwgYnV0IHByb3ZlcyBhIHBvaW50IDotKQoKCSogc3JjL3Jhc3Rlci9mdHJhc3Rlci5jLCBzcmMvc21vb3RoL2Z0Z3JheXMuYywgc3JjL2Jhc2UvZnRiYm94LmM6CglGaXhlZCB0aGUgYmV6aWVyIHN0YWNrIGRlcHRocy4KCgkqIHNyYy9iYXNlL2Z0Y2FsYy5jIChGVF9NdWxGaXgpOiBNaW5vciByb3VuZGluZyBmaXguCgoJKiBidWlsZHMvYmVvczogQWRkZWQgQmVPUy1zcGVjaWZpYyBmaWxlcyB0byB0aGUgb2xkIGJ1aWxkIHN5c3RlbQoJKG5vIGNoYW5nZXMgd2VyZSBuZWNlc3NhcnkgdG8gc3VwcG9ydCBCZU9TIGluIHRoZSBKYW1maWxlIHRob3VnaCkuCgoyMDAxLTA0LTIwICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBmdGNvbmZpZy5oLCBmdG9wdGlvbi5oOiBVcGRhdGVkIGBmdGNvbmZpZy5oJyB0byBkZXRlY3QgNjQtYml0IGludAoJdHlwZXMgb24gcGxhdGZvcm1zIHdoZXJlIEF1dG9jb25mIGlzIG5vdCBhdmFpbGFibGUpLiAgQWxzbyByZW1vdmVkCglGVENBTENfVVNFX0xPTkdfTE9ORyBhbmQgcmVwbGFjZWQgaXQgd2l0aAoJRlRfQ09ORklHX09QVElPTl9GT1JDRV9JTlQ2NC4KCgkqIGJ1aWxkcy93aW4zMi9mcmVldHlwZS5kc3A6IFVwZGF0ZWQgdGhlIFZpc3VhbCBDKysgcHJvamVjdCBmaWxlLgoJRG9lc24ndCBjcmVhdGUgYSBETEwgeWV0LgoKCSogY2ZmZ2xvYWQuYzogUmVtb3ZlZCBhIGNvbXBpbGF0aW9uIHdhcm5pbmcuCgoyMDAxLTA0LTEwICBUb20gS2Fjdmluc2t5ICA8dGthY3ZpbnNAZnJlZXR5cGUub3JnPgoKCSogdDFsb2FkLmMgKHBhcnNlX2NoYXJzdHJpbmdzKTogQ2hhbmdlZCBjb2RlIGZvciBwbGFjaW5nIC5ub3RkZWYKCWdseXBoIGludG8gc2xvdCAwIHNvIHRoYXQgd2Ugbm8gbG9uZ2VyIGhhdmUgYSBtZW1vcnkgYWNjZXNzCgl2aW9sYXRpb24uCgoJKiB0MWxvYWQuaDogSW4gc3RydWN0dXJlIFQxX0xvYWRlciwgYWRkZWQgc3dhcF90YWJsZSAob2YgdHlwZQoJUFNfVGFibGUpIHRvIGZhY2lsaXRhdGUgcGxhY2luZyB0aGUgLm5vdGRlZiBnbHlwaCBpbnRvIHNsb3QgMC4KCjIwMDEtMDQtMTAgIEZyYW5jZXNjbyBaYXBwYSBOYXJkZWxsaSAgPGZyYW5jZXNjby56YXBwYS5uYXJkZWxsaUBlbnMuZnI+CgoJKiBzcmMvcGNmL3BjZmRyaXZlci5jIChQQ0ZfR2V0X0NoYXJfSW5kZXgpOiBGaXggcmV0dXJuIHZhbHVlLgoKMjAwMS0wNC0wOSAgTGF1cmVuY2UgV2l0aGVycyAgPGx3aXRoZXJzQGx3aXRoZXJzLmRlbW9uLmNvLnVrPgoKCSogYnVpbGRzL2Rvcy9kZXRlY3QubWs6IEFkZCBzdXBwb3J0IGZvciBiYXNoLgoKMjAwMS0wNC0wNSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogYnVpbGRzL29zMi8qLm1rOiBUaGVzZSBmaWxlcyBoYXZlIGJlZW4gZm9yZ290dGVuIHRvIHVwZGF0ZSB0bwoJdGhlIHN0cnVjdHVyZSBvZiBzaW1pbGFyIG1ha2VmaWxlcy4KCSogYnVpbGRzL2Rvcy8qLm1rOiBEaXR0by4KCSogYnVpbGRzL2Fuc2kvKi5tazogRGl0dG8uCgoJKiBidWlsZHMvd2luMzIvd2luMzItZGVmLm1rIChCVUlMRCk6IEZpeCB0eXBvLgoKCSogYnVpbGRzL2NvbXBpbGVyLyoubWsgKENMRUFOX0xJQlJBUlkpOiBEb24ndCB1c2UgTk9fT1VUUFVULgoJVGhpcyBpcyBhbHJlYWR5IHVzZWQgaW4gdGhlIGxpbmtfKi5tayBmaWxlcy4KCjIwMDEtMDQtMDMgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy8qL0phbWZpbGU6IFNsaWdodCBjaGFuZ2VzCXRvIG1ha2UgZmlsZXMgbW9yZSBjcnlwdGljLgoKMjAwMS0wNC0wMyAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogSmFtZmlsZSwgc3JjL0phbWZpbGUsIHNyYy8qL0phbWZpbGU6IEZvcm1hdHRlZC4gIFNsaWdodCBjaGFuZ2VzCgl0byBnaXZlIGZpbGVzIGlkZW50aWNhbCBzdHJ1Y3R1cmUuCgoyMDAxLTA0LTAyICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBDSEFOR0VTOiBSZWZvcm1hdHRlZCwgbWlub3IgZml4ZXMuCgkqIFRPRE86IFVwZGF0ZWQuCgkqIFJFQURNRTogRm9ybWF0dGluZy4KCSogaW5jbHVkZS9mcmVldHlwZS9mcmVldHlwZS5oOiBGb3JtYXR0aW5nLgoKCSogSmFtZmlsZTogRml4IHR5cG8uCgoJKiBzcmMvY2ZmL2NmZnBhcnNlLmM6IE1vdmUgZXJyb3IgY29kZSAjZGVmaW5lcyB0by4uLgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2NmZmVycnMuaDogVGhpcyBmaWxlLgoJKiBzcmMvY2ZmL2NmZmRyaXZyLmMsIHNyYy9jZmYvY2Zmb2Jqcy5jLCBzcmMvY2ZmL2NmZmxvYWQuYzogUmVwbGFjZWQKCWBGVF9FcnJfKicgd2l0aCBgQ0ZGX0Vycl8qJy4KCSogc3JjL2NpZC9jaWRwYXJzZS5jOiBSZXBsYWNlZCBgRlRfRXJyXyonIHdpdGggYFQxX0Vycl8qJy4KCSogc3JjL3BzYXV4L3Bzb2Jqcy5jLCBzcmMvcHNhdXgvdDFkZWNvZGUuYzogRGl0dG8uCgkqIHNyYy9zZm50L3Nmb2Jjcy5jLCBzcmMvc2ZudC90dGxvYWQuYzogUmVwbGFjZWQgYEZUX0Vycl8qJyB3aXRoCglgVFRfRXJyXyonLgoJKiBzcmMvdHJ1ZXR5cGUvdHRnbG9hZC5jLCBzcmMvdHJ1ZXR5cGUvdHRvYmpzLmM6IERpdHRvLgoJKiBzcmMvdHlwZTEvdDFnbG9hZC5jLCBzcmMvdHlwZTEvdDFsb2FkLmMsIHNyYy90eXBlMS90MW9ianMuYywKCXNyYy90eXBlMS90MXBhcnNlLmM6IFJlcGxhY2VkIGBGVF9FcnJfKicgd2l0aCBgVDFfRXJyXyonLgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9jZmZlcnJzLmg6IEFkZAoJYENGRl9FcnJfVW5rbm93bl9GaWxlX0Zvcm1hdCcuCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvdDFlcnJvcnMuaDogQWRkCglgVDFfRXJyX1Vua25vd25fRmlsZV9Gb3JtYXQnLgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3R0ZXJyb3JzLmg6IEFkZAoJYFRUX0Vycl9Vbmtub3duX0ZpbGVfRm9ybWF0Jy4KCgkqIHNyYy9jZmYvY2ZmbG9hZC5oOiBBZGQgYGNmZl8qX2VuY29kaW5nJyBhbmQgYGNmZl8qX2NoYXJzZXQnCglyZWZlcmVuY2VzLgoJKiBzcmMvcHNhdXgvcHNvYmpzLmM6IEluY2x1ZGUgYEZUX0lOVEVSTkFMX1RZUEUxX0VSUk9SU19IJy4KCgkqIHNyYy9jZmYvY2Zmb2Jqcy5jIChDRkZfSW5pdF9GYWNlLCBDRkZfRG9uZV9GYWNlKTogVXNlCglGVF9MT0NBTF9ERUYuCgkqIHNyYy9jaWQvY2lkb2Jqcy5jIChDSURfRG9uZV9Ecml2ZXIpOiBEaXR0by4KCSogc3JjL3RydXR5cGUvdHRvYmpzLmMgKFRUX0luaXRfRmFjZSwgVFRfRG9uZV9GYWNlLCBUVF9Jbml0X1NpemUpOgoJRGl0dG8uCgkqIHNyYy90eXBlMS90MW9ianMuYyAoVDFfRG9uZV9Ecml2ZXIpOiBEaXR0by4KCSogc3JjL3BjZi9wY2Zkcml2ZXIuYyAoUENGX0RvbmVfRmFjZSk6IERpdHRvLgoJKiBzcmMvcGNmL3BjZi5oOiBVc2UgRlRfTE9DQUwgZm9yIGBQQ0ZfRG9uZV9GYWNlJy4KCjIwMDEtMDQtMDIgIFRvbSBLYWN2aW5za3kgIDx0a2Fjdmluc0BmcmVldHlwZS5vcmc+CgoJKiBzcmMvc2ZudC90dGxvYWQuYyAoVFRfTG9hZF9NZXRyaWNzKTogRml4IGFuIGltcHJvcGVyIHBvaW50ZXIKCWRlcmVmZXJlbmNlLiAgU3VibWl0dGVkIGJ5IEhlcmJlcnQgRHVlcnIgPGR1ZXJyQHN1bi5jb20+LgoKMjAwMS0wMy0yNiAgVG9tIEthY3ZpbnNreSAgPHRrYWN2aW5zQGZyZWV0eXBlLm9yZz4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvY29uZmlnL2Z0Y29uZmlnLmg6IENoYW5nZWQgaGV4YWRlY2ltYWwKCWNvbnN0YW50cyB0byB1c2Ugc3VmZml4IFUgdG8gYXZvaWQgcHJvYmxlbXMgd2l0aCBIUC1VWCdzIGM4OQoJY29tcGlsZXIuICBTdWJtaXR0ZWQgYnkgRy5XLiBMdWNhcyA8Z2x1Y2FzQHNvbmFseXN0cy5jb20+LgoKMjAwMS0wMy0yNCAgRGF2aWQgVHVybmVyICA8ZGF2aWQudHVybmVyQGZyZWV0eXBlLm9yZz4KCgkqIEphbXJ1bGVzLCBKYW1maWxlLCBzcmMvSmFtZmlsZSwgc3JjLyovSmFtZmlsZTogQWRkaW5nIGphbWZpbGVzIHRvCgl0aGUgc291cmNlIHRyZWUuICBTZWUgd3d3LmZyZWV0eXBlLm9yZy9qYW0vaW5kZXguaHRtbCBmb3IgZGV0YWlscy4KCgoJKiBWZXJzaW9uIDIuMC4yIHJlbGVhc2VkLgoJPT09PT09PT09PT09PT09PT09PT09PT09PQoKCjIwMDEtMDMtMjAgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGJ1aWxkcy93aW4zMi9kZXRla3QubWs6IEZpeCAuUEhPTlkgdGFyZ2V0IGZvciBJbnRlbCBjb21waWxlci4KCjIwMDEtMDMtMjAgIERhdmlkIFR1cm5lciAgPGRhdmlkLnR1cm5lckBmcmVldHlwZS5vcmc+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdGhlYWRlci5oLCBpbmNsdWRlL2ZyZWV0eXBlL2Z0c25hbWVzLmg6CglSZW5hbWVkIGBmdG5hbWVzLmgnIHRvIGBmdHNuYW1lcy5oJywgYW5kIEZUX05BTUVTX0ggdG8KCUZUX1NGTlRfTkFNRVNfSC4KCgkqIGRvY3MvZG9jbWFrZXIucHk6IEFkZGVkIGdlbmVyYXRpb24gb2YgSU5ERVggbGluayBpbiB0YWJsZSBvZgoJY29udGVudHMuCgoJKiBJTlNUQUxMLCBkb2NzL0JVSUxEOiBVcGRhdGVkIGRvY3VtZW50YXRpb24gdG8gaW5kaWNhdGUgdGhhdCB0aGUKCWNvbXBpbGF0aW9uIHByb2Nlc3MgaGFzIGNoYW5nZWQgc2xpZ2h0bHkgKG5vIG1vcmUgYHNyYycgcmVxdWlyZWQgaW4KCXRoZSBpbmNsdWRlIHBhdGgpLgoKCSogYnVpbGRzLyovKi1kZWYubWs6IENoYW5nZWQgdGhlIG9iamVjdHMgZGlyZWN0b3J5IGZyb20gYG9iaicgdG8KCWBvYmpzJy4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvY29uZmlnL2Z0aGVhZGVyLmg6IFJlbW92ZWQgb2Jzb2xldGUgbWFjcm9zIGxpa2UKCUZUX1NPVVJDRV9GSUxFLCBldGMuIGFuZCBhZGRlZCBjYWNoZS1zcGVjaWZpYyBtYWNybyBkZWZpbml0aW9ucyB0aGF0Cgl3ZXJlIHByZXZpb3VzbHkgZGVmaW5lZCBpbiA8ZnJlZXR5cGUvZnRjYWNoZS5oPi4gIEFkZGVkIGNvbW1lbnRzIHRvCgliZSBpbmNsdWRlZCBpbiBhIG5ldyBBUEkgUmVmZXJlbmNlIHNlY3Rpb24uCgoJKiBzcmMvKi8qOiBSZW1vdmVkIHRoZSB1c2Ugb2YgRlRfU09VUkNFX0ZJTEUsIGV0Yy4gIE5vdywgZWFjaAoJY29tcG9uZW50IG5lZWRzIHRvIGFkZCBpdHMgb3duIGRpcmVjdG9yeSB0byB0aGUgaW5jbHVkZSBwYXRoIGF0Cgljb21waWxlIHRpbWUuICBNb2RpZmllZCBhbGwgYHJ1bGVzLm1rJyBhbmQgYGRlc2NyaXAubW1zJwoJYWNjb3JkaW5nbHkuCgoyMDAxLTAzLTIwICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBidWlsZHMvdW5peC9jb25maWd1cmUuaW46IEFkZCAkZnRfdmVyc2lvbi4KCSogYnVpbGRzL3VuaXgvZnJlZXR5cGUtY29uZmlnLmluOiBVc2UgaXQuCgkqIGJ1aWxkcy91bml4L2NvbmZpZ3VyZTogVXBkYXRlZC4KCjIwMDEtMDMtMTkgIFRvbSBLYWN2aW5za3kgIDx0a2Fjdmluc0BmcmVldHlwZS5vcmc+CgoJKiBzcmMvdHlwZTEvdDFsb2FkLmMgKHBhcnNlX2ZvbnRfbWF0cml4KTogQXNzaWduIHRoZSB1bml0cyBwZXIgZW0KCXZhbHVlIGFuIHVuc2lnbmVkIHNob3J0IHZhbHVlLCBmaXJzdCBieSBzaGlmdGluZyByaWdodCAxNiBiaXRzLAoJdGhlbiBieSBjYXN0aW5nIHRoZSByZXN1bHRzIHRvIEZUX1VTaG9ydC4KCgkqIHNyYy9jZmYvY2ZmcGFyc2UuYyAoY2ZmX3BhcnNlX2ZvbnRfYmJveCk6IEFzc2lnbiB0aGUgdW5pdHMgcGVyIGVtCgl2YWx1ZSBhbiB1bnNpZ25lZCBzaG9ydCB2YWx1ZSwgZmlyc3QgYnkgc2hpZnRpbmcgcmlnaHQgMTYgYml0cywKCXRoZW4gYnkgY2FzdGluZyB0aGUgcmVzdWx0cyB0byBGVF9VU2hvcnQuCgoyMDAxLTAzLTE3ICBEYXZpZCBUdXJuZXIgIDxkYXZpZC50dXJuZXJAZnJlZXR5cGUub3JnPgoKCSogc3JjL2NpZC9jaWRvYmpzLmMsIHNyYy9jaWQvY2lkbG9hZC5jLCBzcmMvcGNmL3BjZnJlYWQuYywKCXNyYy90eXBlMS90MWxvYWQuYywgc3JjL3R5cGUxL3Qxb2Jqcy5jOiBBZGRlZCBhIGZldyBjYXN0cyB0byByZW1vdmUKCWNvbXBpbGVyIHdhcm5pbmdzIGluIHBlZGFudGljIG1vZGVzLgoKCSogaW5jbHVkZS9jb25maWcvZnQyYnVpbGQuaCwgaW5jbHVkZS9jb25maWcvZnRoZWFkZXIuaDogVGhlIGZpbGUKCWBmdDJidWlsZC5oJyB3YXMgcmVuYW1lZCB0byBgZnRoZWFkZXIuaCcgdG8gYXZvaWQgY29uZmxpY3RzIHdpdGggdGhlCgl0b3AtbGV2ZWwgPGZ0MmJ1aWxkLmg+LgoKCSogaW5jbHVkZS9jb25maWcvZnRoZWFkZXIuaDogQWRkZWQgbmV3IHNlY3Rpb24gZGVzY3JpYmluZyB0aGUgI2luY2x1ZGUKCW1hY3Jvcy4KCjIwMDEtMDMtMTcgIFRvbSBLYWN2aW5za3kgIDx0a2Fjdmluc0BmcmVldHlwZS5vcmc+CgoJKiBzcmMvY2ZmL2NmZnBhcnNlLmMgKGNmZl9wYXJzZV9mb250X2Jib3gpOiBPYnRhaW4gcm91bmRlZCBGVF9GaXhlZAoJdmFsdWVzIGZvciB0aGUgYm91bmRpbmcgYm94IG51bWJlcnMuCgoJKiBzcmMvY2ZmL2NmZm9ianMuYyAoQ0ZGX0luaXRfRmFjZSk6IFdoZW4gcHJvY2Vzc2luZyBhIENGRi9DRUYgZm9udCwKCXNldCBgcm9vdC0+YXNjZW5kZXInIChgcm9vdC0+ZGVzY2VuZGVyJykgdG8gdGhlIGludGVnZXIgcGFydCBvZgoJYHJvb3QtPmJib3gueU1heCcgKGByb290LT5iYm94LnlNaW4nLCByZXNwZWN0aXZlbHkpLgoKMjAwMS0wMy0xNiAgVG9tIEthY3ZpbnNreSAgPHRrYWN2aW5zQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9jZmYvY2ZmZHJpdnIuYyAoZ2V0X2NmZl9nbHlwaF9uYW1lKTogIE5ldyBmdW5jdGlvbi4gIFVzZWQgaW4KCWNmZl9nZXRfaW50ZXJmYWNlIHRvIGZhY2lsaXRhdGUgZ2V0dGluZyBhIGdseXBoIG5hbWUgZm9yIGdseXBoIGluZGV4Cgl2aWEgRlRfR2V0X0dseXBoX05hbWUoKS4KCgkoY2ZmX2dldF9pbnRlcmZhY2UpOiBBZGRlZCBzdXBwb3J0IGZvciBnZXR0aW5nIGEgZ2x5cGggbmFtZSB2aWEgdGhlCglgZ2x5cGhfbmFtZScgbW9kdWxlIGludGVyZmFjZS4gIFVzZXMgdGhlIG5ldyBmdW5jdGlvbgoJZ2V0X2NmZl9nbHlwaF9uYW1lKCkuCglTdWJtaXR0ZWQgYnkgU2FuZGVyIHZhbiBkZXIgV2FsIDxzdmR3YWxAeHM0YWxsLm5sPi4KCgkqIHNyYy9jZmYvY2Zmb2Jqcy5jIChDRkZfSW5pdF9GYWNlKTogTG9naWNhbCBvciB0aGUgZmFjZSBmbGFncyB3aXRoCglGVF9GQUNFX0ZMQUdfR0xZUEhfTkFNRVMgb25seSBpZiBGVF9DT05GSUdfT1BUSU9OX05PX0dMWVBIX05BTUVTIGlzCglub3QgZGVmaW5lZC4gIFRoaXMgaXMgdG8gYWRkIHN1cHBvcnQgZm9yIGdldHRpbmcgYSBnbHlwaCBuYW1lIGZyb20gYQoJZ2x5cGggaW5kZXggdmlhIEZUX0dldF9HbHlwaF9OYW1lKCkuCglTdWJtaXR0ZWQgYnkgU2FuZGVyIHZhbiBkZXIgV2FsIDxzdmR3YWxAeHM0YWxsLm5sPi4KCgkqIHNyYy9jZmYvY2ZmZ2xvYWQuYyAoQ0ZGX1BhcnNlX0NoYXJTdHJpbmdzKTogQWRkZWQgc3VwcG9ydCBmb3IKCWRlcHJlY2F0ZWQgb3BlcmF0b3IgYGRvdHNlY3Rpb24nLgoJU3VibWl0dGVkIGJ5IFNhbmRlciB2YW4gZGVyIFdhbCA8c3Zkd2FsQHhzNGFsbC5ubD4uCgoyMDAxLTAzLTEyICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvcHNhdXgvdDFkZWNvZGUuYyAoVDFfRGVjb2Rlcl9QYXJzZV9DaGFyc3RyaW5ncyk6IEZpeCBlcnJvcgoJbWVzc2FnZXMuCgoJKiBJTlNUQUxMLCBkb2NzL0JVSUxEOiBXZSBuZWVkIEdOVSBtYWtlIDMuNzguMSBvciBuZXdlci4KCjIwMDEtMDMtMTIgIFRvbSBLYWN2aW5za3kgIDx0a2Fjdmluc0BmcmVldHlwZS5vcmc+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3BzYXV4Lmg6ICBDaGFuZ2VkIHRoZSBsZW5JViBtZW1iZXIgb2YKCXRoZSBUMV9EZWNvZGVyXyBzdHJ1Y3QgdG8gYmUgYW4gRlRfSW50IGluc3RlYWQgb2YgYW4gRlRfVUludC4KCgkqIHNyYy9wc2F1eC90MWRlY29kZS5jIChUMV9EZWNvZGVyX1BhcnNlX0NoYXJzdHJpbmdzKTogIEFkanVzdAoJZm9yIGxlbklWIHNlZWQgYnl0ZXMgYXQgdGhlIHN0YXJ0IG9mIGEgZGVjcnlwdGVkIHN1YnJvdXRpbmUuCgoJKiBzcmMvY2lkL2NpZGxvYWQuYyAoY2lkX3JlYWRfc3VicnMpOiBEZWNyeXB0IHN1YnJvdXRpbmVzIG9ubHkKCWlmIGxlbklWID49IDAuCgoJKiBzcmMvY2lkL2NpZGdsb2FkLmMgKGNpZF9sb2FkX2dseXBoKTogRGVjcnlwdCBjaGFyc3RyaW5ncyBvbmx5CglpZiBsZW5JViA+PSAwLgoKMjAwMS0wMy0xMSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogVE9ETzogVXBkYXRlZC4KCgkqIHNyYy9wY2YvcGNmcmVhZC5jOiBQdXQgUkVBRF9GaWVsZHMoKSBhbHdheXMgaW4gYSBjb25kaXRpb25hbCB0bwoJYXZvaWQgY29tcGlsZXIgd2FybmluZ3MuCgoyMDAxLTAzLTEwICBUb20gS2Fjdmluc2t5ICA8dGthY3ZpbnNAZnJlZXR5cGUub3JnPgoKCSogVE9ETzogTmV3IGZpbGUuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ZyZWV0eXBlLmg6IEFkZGVkIHByb3RvdHlwZXMgYW5kIG5vdGVzIGZvcgoJdGhyZWUgbmV3IGZ1bmN0aW9uczogRlRfUm91bmRGaXgsIEZUX0NlaWxGaXgsIGFuZCBGVF9GbG9vckZpeC4KCSogc3JjL2Jhc2UvZnRjYWxjLmMgKEZUX1JvdW5kRml4LCBGVF9DZWlsRml4LCBGVF9GbG9vckZpeCk6IEFkZGVkCglpbXBsZW1lbnRhdGlvbiBjb2RlLgoKCSogc3JjL2NpZC9jaWRvYmpzLmMgKENJRF9Jbml0X0ZhY2UpOiBVc2UgY2FsY3VsYXRlZCB1bml0c19wZXJfRU0sCglhbmQgaWYgdGhhdCBpcyBub3QgYXZhaWxhYmxlLCBkZWZhdWx0IHRvIDEwMDAgdW5pdHMgcGVyIEVNLiAgQ2hhbmdlZAoJYXNzaWdubWVudCBjb2RlIGZvciBhc2NlbmRlciBhbmQgZGVzY2VuZGVyIHZhbHVlcy4KCSogc3JjL2NpZC9jaWRsb2FkLmMgKHBhcnNlX2ZvbnRfbWF0cml4KTogQWRkZWQgdW5pdHNfcGVyX0VNCglwcm9jZXNzaW5nLgoJKHBhcnNlX2ZvbnRfYmJveCk6IENoYW5nZWQgdG8gdXNlIEZUX0ZpeGVkIG51bWJlciBoYW5kbGluZy4KCgkqIHNyYy90eXBlMS90MW9ianMuYyAoVDFfSW5pdF9GYWNlKTogQ2hhbmdlZCB0aGUgYXNzaWdubWVudCBjb2RlCglmb3IgYXNjZW5kZXIsIGRlc2NlbmRlciwgYW5kIG1heF9hZHZhbmNlX3dpZHRoLgoJKiBzcmMvdHlwZTEvdDFsb2FkLmMgKHBhcnNlX2ZvbnRfYmJveCk6IENoYW5nZWQgdG8gdXNlIEZUX0ZpeGVkCgludW1iZXIgaGFuZGxpbmcuCgoyMDAxLTAzLTEwICBIZW5yaWsgR3J1YmJzdHL2bSAgPGdydWJiYUByb3hlbi5jb20+CgoJKiBzcmMvKi8qLmM6IEFkZGVkIG1hbnkgY2FzdHMgdG8gbWFrZSBjb2RlIG1vcmUgNjRiaXQtc2FmZS4KCjIwMDEtMDMtMDcgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIElOU1RBTEwsIGRvY3MvQlVJTEQ6IFdlIG5lZWQgR05VIG1ha2UgMy43OCBvciBuZXdlci4KCjIwMDEtMDMtMDcgIFRvbSBLYWN2aW5za3kgIDx0a2Fjdmluc0BmcmVldHlwZS5vcmc+CgoJKiBzcmMvdHlwZTEvdDFvYmpzLmMgKFQxX0luaXRfRmFjZSk6IE1pbm9yIGNvcnJlY3Rpb246IFdlIG11c3Qgd2FpdAoJdW50aWwgcGFyc2VfZm9udF9iYm94IGlzIGNoYW5nZWQgYmVmb3JlIHdlIHVzZSBsb2dpY2FsIHNoaWZ0IHJpZ2h0cwoJaW4gdGhlIGFzc2lnbm1lbnRzIG9mIGByb290LT5hc2NlbmRlcicsIGByb290LT5kZXNjZW5kZXInLCBhbmQKCWByb290LT5tYXhfYWR2YW5jZV93aWR0aCcuCgoJKFQxX0RvbmVfRmFjZSk6IEZyZWUgYGNoYXJfbmFtZScgdGFibGUgdG8gYXZvaWQgYSBtZW1vcnkgbGVhay4KCVN1Ym1pdHRlZCBieSBTYW5kZXIgdmFuIGRlciBXYWwgPHN2ZHdhbEB4czRhbGwubmw+LgoKMjAwMS0wMy0wNSAgVG9tIEthY3ZpbnNreSAgPHRrYWN2aW5zQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9jZmYvY2ZmZ2xvYWQuYyAoQ0ZGX0xvYWRfR2x5cGgpOiBTZXQgZ2x5cGggY29udHJvbCBkYXRhIHRvIHRoZQoJdGhlIFR5cGUgMiBnbHlwaCBjaGFyc3RyaW5nICh1c2VkIGJ5IGNvbnZlcnNpb24gcHJvZ3JhbXMpLgoJU3VibWl0dGVkIGJ5IEhhIFNoYW8gPGhhc2hhb0BjaGluZXNlLmNvbT4uCgoyMDAxLTAzLTA0ICBBbnRvaW5lIExlY2EgIDxBbnRvaW5lLkxlY2FAcmVuYXVsdC5mcj4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvdHRuYW1laWQuaDogQ29ycmVjdCBhIHN0dXBpZCB0eXBvIHdoaWNoIHByZXZlbnRlZAoJY29ycmVjdCBjb21waWxhdGlvbiAoVFRfTVNfTEFOR0lEX1RJR1JJR05BX0VUSElPUElBIGFwcGVhcmVkIHR3aWNlKS4KCjIwMDEtMDMtMDQgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9hdXRvaGludC9haHR5cGVzLmggKEFIX0hpbnRlcik6IEFkZCBlbGVtZW50cwoJYGRpc2FibGVfaG9yel9lZGdlcycsIGBkaXNhYmxlX3ZlcnRfZWRnZXMnLgoJKiBzcmMvYXV0b2hpbnQvYWhoaW50LmMJKGFoX2hpbnRfZWRnZXNfMywgYWhfaGludGVyX2hpbnRfZWRnZXMpOiBVc2UKCXRoZW0gKGFuZCByZW1vdmUgc3RhdGljIHZhcmlhYmxlcyB3aXRoIHRoZSBzYW1lIG5hbWVzKS4KCSogc3JjL3BjZi9wY2Z1dGlsLmMgKEJpdE9yZGVySW52ZXJ0KTogQWRkIGBjb25zdCcuCgkqIGRvY3MvZ2xuYW1lcy5weTogVXBkYXRlZCB0byBsYXRlc3QgcHN0YWJsZXMuaCBjaGFuZ2VzLgoKCSogYnVpbGRzL3VuaXgvZGV0ZWN0Lm1rOiBBZGQgdGVzdCBmb3IgSHVyZC4KCSogYnVpbGRzL2h1cmQvZGV0ZWN0Lm1rOiBSZW1vdmVkLgoKMjAwMS0wMy0wNCAgU2FuZGVyIHZhbiBkZXIgV2FsICA8c3Zkd2FsQHhzNGFsbC5ubD4KCgkqIHNyYy9wc25hbWVzL3BzdGFibGVzLmg6IEFkZCBtb3JlIGBjb25zdCcuCgkqIHNyYy9wY2YvcGNmdXRpbC5jOiBEaXR0by4KCjIwMDEtMDMtMDQgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9iYXNlL2Z0Z2x5cGguYyAoRlRfR2x5cGhfVG9fQml0bWFwKTogRml4aW5nIHR5cG8KCShGVF9HbHlwaF9Eb25lIC0+IEZUX0RvbmVfR2x5cGgpLgoKMjAwMS0wMy0wMSAgQW50b2luZSBMZWNhICA8QW50b2luZS5MZWNhQHJlbmF1bHQuZnI+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL3R0bmFtZWlkLmg6IEFkZGVkIHNvbWUgbmV3IE1pY3Jvc29mdCBsYW5ndWFnZQoJY29kZXMgYW5kIExDSURzIGFzIGZvdW5kIGluIE9mZmljZSBYcC4KCjIwMDEtMDItMjggIERhdmlkIFR1cm5lciAgPGRhdmlkLnR1cm5lckBmcmVldHlwZS5vcmc+CgoJKiBidWlsZHMvaHVyZC9kZXRlY3QubWs6IE5ldyBmaWxlLiAgQWRkZWQgc3VwcG9ydCB0byBkZXRlY3QgdGhlIEdOVQoJSHVyZCBvcGVyYXRpbmcgc3lzdGVtIGFzIFVuaXgtbGlrZS4gIEZpeCBzdWJtaXR0ZWQgYnkgQW50aG9ueSBGb2sKCTxmb2thQGRlYmlhbi5vcmc+LgoKCSogc3JjL3R5cGUxL3QxZ2xvYWQuYyAoVDFfTG9hZF9HbHlwaCk6IFNldCBnbHlwaCBjb250cm9sIGRhdGEgdG8gdGhlCgl0aGUgVHlwZSAxIGdseXBoIGNoYXJzdHJpbmcgKHVzZWQgYnkgY29udmVyc2lvbiBwcm9ncmFtcykuCglTdWJtaXR0ZWQgYnkgSGEgU2hhbyA8aGFzaGFvQGNoaW5lc2UuY29tPi4KCjIwMDEtMDItMjIgIERhdmlkIFR1cm5lciAgPGRhdmlkLnR1cm5lckBmcmVldHlwZS5vcmc+CgoJKiBzcmMvYmFzZS9mdGdyYXlzLmMgKGdyYXlzX3N3ZWVwKTogVGhlIGZ1bmN0aW9uIGRpZG4ndCBleGl0CglpbW1lZGlhdGVseSBpZiBgbnVtX2NlbGxzJyB3YXMgMCBhcyBpdCBzaG91bGQuICBUaGFua3MgdG8gQm9yaXMgZm9yCglmaW5kaW5nIHRoaXMgb3V0LgoKCSogc3JjL2Jhc2UvZnRnbHlwaC5jIChGVF9HbHlwaF9Ub19CaXRtYXApOiBGaXhlZCBtZW1vcnkgbGVhayB3aGVuCgliaXRtYXAgcmVuZGVyaW5nIGZhaWxzICh0aGFua3MgdG8gR3JhaGFtIEFzaGVyKS4KCjIwMDEtMDItMTMgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGRvY3MvZG9jbWFrZXIucHkgKERvY1NlY3Rpb246OmFkZF9lbGVtZW50KTogVXNlCglgc2VsZi5wcmludF9lcnJvcigpJy4KCgkqIGJ1aWxkcy91bml4L2NvbmZpZy57Z3Vlc3Msc3VifTogVXBkYXRlZCAoZnJvbSBmdHAuZ251Lm9yZykuCgoyMDAxLTAyLTEzICBEYXZpZCBUdXJuZXIgIDxkYXZpZC50dXJuZXJAZnJlZXR5cGUub3JnPgoKCSogZG9jcy9kb2NtYWtlci5weSwgaW5jbHVkZS9mcmVldHlwZS8qLmg6IFVwZGF0ZWQgdGhlIERvY01ha2VyCglzY3JpcHQgdG8gc3VwcG9ydCBjaGFwdGVycyBhbmQgc2VjdGlvbiBibG9jayBvcmRlcmluZy4gIFVwZGF0ZWQgdGhlCglwdWJsaWMgaGVhZGVyIGZpbGVzIGFjY29yZGluZ2x5LgoKCSogc3JjL2Jhc2UvZnRnbHlwaC5jIChGVF9HbHlwaF9Db3B5KTogQWR2YW5jZSB3aWR0aCBhbmQgZ2x5cGggZm9ybWF0Cgl3ZXJlIG5vdCBjb3JyZWN0bHkgY29waWVkLgoKMjAwMS0wMi0wOCAgVG9tIEthY3ZpbnNreSAgPHRrYWN2aW5zQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9jZmYvY2ZmcGFyc2UuYyAoY2ZmX3BhcnNlX2ZvbnRfbWF0cml4KTogUmVtb3ZlZCBhbgoJdW5uZWNlc3NhcnkgZnByaW50Ziggc3RkZXJyLCAuLi4gKS4KCjIwMDEtMDItMDcgIFRvbSBLYWN2aW5za3kgIDx0a2Fjdmluc0BmcmVldHlwZS5vcmc+CgoJKiBzcmMvdHlwZTEvdDFvYmpzLmMgKFQxX0luaXRfRmFjZSk6IEFkZGVkIGNvZGUgdG8gZ2V0IHRoZQoJdW5pdHNfcGVyX0VNIGZyb20gdGhlIHZhbHVlIGFzc2lnbmVkIGluIHBhcnNlX2ZvbnRfbWF0cml4LCBpZgoJYXZhaWxhYmxlLiAgRGVmYXVsdCB0byAxMDAwIGlmIG5vdCBhdmFpbGFibGUuCgoJKiBzcmMvY2ZmL2NmZnBhcnNlLmMgKGNmZl9wYXJzZV9mb250X21hdHJpeCk6IEFkZGVkIGxvZ2ljIHRvIGdldAoJdGhlIHVuaXRzX3Blcl9FTSBmcm9tIHRoZSBGb250TWF0cml4LgoKCShjZmZfcGFyc2VfZml4ZWRfdGhvdXNhbmQpOiBOZXcgZnVuY3Rpb24uICBHZXRzIGEgcmVhbCBudW1iZXIgZnJvbQoJdGhlIENGRiBmb250LCBidXQgbXVsdGlwbGllcyBieSAxMDAwICh0aGlzIGlzIHRvIGF2b2lkIHJvdW5kaW5nCgllcnJvcnMgd2hlbiBwbGFjaW5nIHRoaXMgcmVhbCBudW1iZXIgaW50byBhIDE2LjE2IGZpeGVkIG51bWJlcikuCgoJKGNmZl9wYXJzZV9yZWFsKTogQWRkZWQgY29kZSBzbyB0aGF0IHRoZSBpbnRlZ2VyIHBhcnQgaXMgbW92ZWQKCWludG8gdGhlIGhpZ2ggc2l4dGVlbiBiaXRzIG9mIHRoZSAxNi4xNiBmaXhlZCBudW1iZXIuCgoJKiBzcmMvY2ZmL2NmZm9ianMuYyAoQ0ZGX0luaXRfRmFjZSk6IEFkZGVkIGxvZ2ljIHRvIGdldCB0aGUgdW5pdHMKCXBlciBFTSBmcm9tIHRoZSBDRkYgZGljdGlvbmFyeSwgaWYgYXZhaWxhYmxlLgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9jZmZ0eXBlcy5oOiBJbiBzdHJ1Y3QgQ0ZGX0ZvbnRfRGljdF8sCglhZGRlZCBhIHVuaXRzX3Blcl9lbSBtZW1iZXIgdG8gZmFjaWxpdGF0ZSBwYXNzaW5nIG9mIHVuaXRzX3Blcl9lbQoJZnJvbSBmdW5jdGlvbiBjZmZfcGFyc2VfZm9udF9tYXRyaXguCgoJKiBzcmMvdHlwZTEvdDFsb2FkLmMgKGlzX2FscGhhKTogTWFrZSBgLScgYSBsZWdhbCBhbHBoYW51bWVyaWMKCWNoYXJhY3Rlci4gIFRoaXMgaXMgc28gdGhhdCBmb250IG5hbWVzIHdpdGggYC0nIGFyZSBmdWxseSBwYXJzZWQsCglldGMuLi4KCjIwMDEtMDItMDIgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9wc2F1eC9wc29ianMuYyAoc2hpZnRfZWxlbWVudHMpOiBSZW1vdmUgaWYgY2xhdXNlICh3aGljaCBpcwoJb2Jzb2xldGUgbm93KS4KCgkocmVhbGxvY2F0ZV90MV90YWJsZSwgUFNfVGFibGVfRG9uZSk6IFJlcGxhY2UgUkVBTExPQygpIHdpdGggQUxMT0MoKQoJKyBNRU1fQ29weSgpIHRvIGF2b2lkIGEgbWVtb3J5IGJ1Zy4KCjIwMDEtMDItMDEgIERhdmlkIFR1cm5lciAgPGRhdmlkLnR1cm5lckBmcmVldHlwZS5vcmc+CgoJKiBkb2NzL2RvY21ha2VyLnB5OiBJbXByb3ZlZCB0aGUgaW5kZXggc29ydGluZyByb3V0aW5lIHRvIHBsYWNlCgljYXBpdGFsIGxldHRlcnMgYmVmb3JlIHNtYWxsIG9uZXMuICBBZGRlZCB0aGUgYDxvcmRlcj4nIG1hcmtlciB0bwoJc2VjdGlvbiBibG9ja3MgaW4gb3JkZXIgdG8gZ2l2ZSB0aGUgb3JkZXIgb2YgYmxvY2tzLgoKMjAwMS0wMS0zMCAgQW50b2luZSBMZWNhICA8QW50b2luZS5MZWNhQHJlbmF1bHQuZnI+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL3R0bmFtZWlkLmg6IExhdGVzdCB1cGRhdGVzIHRvIE1pY3Jvc29mdCBsYW5ndWFnZQoJSUQgY29kZXMuCgoyMDAxLTAxLTI0ICBUb20gS2Fjdmluc2t5ICA8dGthY3ZpbnNAZnJlZXR5cGUub3JnPgoKCSogc3JjL2NmZi90MWxvYWQuYyAocGFyc2VfZm9udF9tYXRyaXgpOiBBZGRlZCBoZXVyaXN0aWMgdG8gZ2V0Cgl1bml0c19wZXJfRU0gZnJvbSB0aGUgZm9udCBtYXRyaXguCgoJKHBhcnNlX2RpY3QpOiBEZWxldGVkIHRlc3QgdG8gc2VlIHdoZXRoZXIgdGhlIEZvbnRJbmZvIGtleXdvcmQgaGFzCgliZWVuIHNlZW4uICBEZWxldGlvbiBvZiB0aGlzIHRlc3QgYWxsb3dzIGZvbnRzIHdpdGhvdXQgRm9udEluZm8KCWRpY3Rpb25hcmllcyB0byBiZSBwYXJzZWQgYnkgdGhlIFR5cGUgMSBkcml2ZXIuCgoJKFQxX09wZW5fRmFjZSk6IERlbGV0ZWQgZW1wdHkgc3Vicm91dGluZXMgYXJyYXkgdGVzdCB0byBtYWtlIHN1cmUKCWZvbnRzIHdpdGggbm8gc3Vicm91dGluZXMgc3RpbGwgYXJlIHBhcnNlZC4KCjIwMDEtMDEtMTcgIEZyYW5jZXNjbyBaYXBwYSBOYXJkZWxsaSAgPGZyYW5jZXNjby56YXBwYS5uYXJkZWxsaUBlbnMuZnI+CgoJKiBzcmMvcGNmcmVhZC5jIChwY2ZfZ2V0X3Byb3BlcnRpZXMsIHBjZl9nZXRfbWV0cmljcywKCXBjZl9nZXRfYml0bWFwcyk6IEZpeCBjb21waWxlciBlcnJvcnMuCgoyMDAxLTAxLTExICBEYXZpZCBUdXJuZXIgIDxkYXZpZC50dXJuZXJAZnJlZXR5cGUub3JnPgoKCSogc3JjL3BjZi9wY2ZyZWFkLmM6IFJlbW92ZWQgc29tZSBjb21waWxhdGlvbiB3YXJuaW5ncyByZWxhdGVkCgl0byBjb21wYXJpc29uIG9mIHNpZ25lZCB2cy4gdW5zaWduZWQgaW50ZWdlcnMuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0ZGVidWcuaDogQ2hhbmdlZCB0aGUgZGVidWcgdHJhY2UKCWNvbnN0YW50cyBmcm9tIHRyYWNlX3QyeHh4eCB0byB0cmFjZV9jZmZ4eHh4IHRvIGJlIGFibGUgdG8gY29tcGlsZQoJdGhlIENGRiBkcml2ZXIgaW4gZGVidWcgbW9kZS4KCjIwMDEtMDEtMTEgIE1hdHRoZXcgQ3Jvc2J5ICA8bWNyb3NieUBtYXJ0aG9uLm9yZz4KCgkqIGJ1aWxkcy91bml4L2ZyZWV0eXBlLWNvbmZpZy5pbjogRml4IHByb2JsZW1zIHdpdGggc2VwYXJhdGUKCS0tcHJlZml4IGFuZCAtLWV4ZWMtcHJlZml4LgoKMjAwMS0wMS0xMSAgRGF2aWQgVHVybmVyICA8ZGF2aWQudHVybmVyQGZyZWV0eXBlLm9yZz4KCgkqIGRvY3MvZG9jbWFrZXIucHk6IEFkZGVkIGNyb3NzLXJlZmVyZW5jZXMgZ2VuZXJhdGlvbiBhcyB3ZWxsIGFzCgltb3JlIHJvYnVzdCBoYW5kbGluZyBvZiBwYXRobmFtZSB3aWxkY2FyZCBtYXRjaGluZy4KCjIwMDEtMDEtMTAgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGRvY3MvZG9jbWFrZXIucHk6IE1pbm9yIGltcHJvdmVtZW50cyB0byByZWR1Y2UgdW53YW50ZWQgc3BhY2VzCglhbmQgZW1wdHkgbGluZXMgaW4gb3V0cHV0LgoKMjAwMS0wMS0wOSAgRGF2aWQgVHVybmVyICA8ZGF2aWQudHVybmVyQGZyZWV0eXBlLm9yZz4KCgkqIGRvY3MvZG9jbWFrZXIucHk6IEltcHJvdmVkIHNjcmlwdCB0byBnZW5lcmF0ZSB0YWJsZSBvZiBjb250ZW50cwoJYW5kIGluZGV4IHBhZ2VzLiAgSXQgYWxzbyBzdXBwb3J0cyB3aWxkY2FyZHMgb24gbm9uIFVuaXggc3lzdGVtcy4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvKi5oLCBpbmNsdWRlL2ZyZWV0eXBlL2NhY2hlLyouaDogVXBkYXRlZCBjb21tZW50cwoJdG8gaW5jbHVkZSBzZWN0aW9uIGRlZmluaXRpb25zL2RlbGltaXRhdGlvbnMgZm9yIHRoZSBBUEkgUmVmZXJlbmNlCglnZW5lcmF0b3IuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ZyZWV0eXBlLmg6IE1vdmVkIGRlY2xhcmF0aW9uIG9mCglgRlRfR2VuZXJpY19GaW5hbGl6ZXInIGFuZCB0aGUgYEZUX0dlbmVyaWMnIHN0cnVjdHVyZSB0by4uLgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2Z0dHlwZXMuaDogaGVyZS4KCjIwMDEtMDEtMDQgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvdHRuYW1laWQuaDogVXBkYXRlZCBVbmljb2RlIGNvZGUgcmFuZ2UgY29tbWVudHMuCgoyMDAxLTAxLTAzICBUb20gS2Fjdmluc2t5ICA8dGthY3ZpbnNAZnJlZXR5cGUub3JnPgoKCSogc3JjL2NmZi9ydWxlcy5tazogVXNlIGNmZmdsb2FkLntjLGh9IGluc3RlYWQgb2YgdDJnbG9hZC57YyxofS4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvaW50ZXJuYWwuaDogQ2hhbmdlZCB0byB1c2UgY2ZmdHlwZXMuaAoJKGNmZmVycnMuaCkgaW5zdGVhZCBvZiB0MnR5cGVzLmggKHQyZXJyb3JzLmgsIHJlc3BlY3RpdmVseSkuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2NmZnR5cGVzLmg6IE1lcmdlZCBpbiBjaGFuZ2VzIGZyb20KCXQydHlwZXMuaCBhbmQgbWFkZSB0aGlzIHRoZSBjYW5vbmljYWwgYHR5cGVzJyBoZWFkZXIgZm9yIHRoZSBDRkYKCWRyaXZlci4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvdDJ0eXBlcy5oOiBUaGlzIGZpbGUgd2FzIG1lcmdlZCB3aXRoCgljZmZ0eXBlcy5oIGFuZCBpcyBubyBsb25nZXIgbmVjZXNzYXJ5LgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC90MmVycm9ycy5oOglSZW5hbWVkIHRvIGNmZmVycnMuaC4KCgkqIHNyYy9jZmYvY2Zmb2Jqcy5jLCBzcmMvY2ZmL2NmZm9ianMuaCwgc3JjL2NmZi9jZmZwYXJzZS5jLAoJc3JjL2NmZi9jZmZkcml2ci5jLCBzcmMvY2ZmL2NmZi5jLCBzcmMvY2ZmL2NmZmxvYWQuYywKCXNyYy9jZmYvY2ZmZ2xvYWQuYywgc3JjL2NmZi9jZmZnbG9hZC5oOiBDaGFuZ2VkIHRvIHVzZQoJY2ZmZ2xvYWQue2MsaH0gaW5zdGVhZCBvZiB0Mmdsb2FkLntjLGh9LiAgQWxsIG9jY3VycmVuY2VzIG9mIHQyXwoJKFQyXykgd2VyZSByZXBsYWNlZCB3aXRoIGNmZl8gKENGRl8sIHJlc3BlY3RpdmVseSkuCgoJKiBzcmMvY2ZmL3QyZ2xvYWQuaDogUmVuYW1lZCBjZmZnbG9hZC5oLgoKCSogc3JjL2NmZi90Mmdsb2FkLmM6IFJlbmFtZWQgY2ZmZ2xvYWQuYwoKMjAwMC0wMS0wMiAgSm91ayBKYW5zZW4gIDxqb3VrakBocmVtLnN0bS50dWRlbGZ0Lm5sPgoKCSogYnVpbGRzL3ZtczogU3VwcG9ydCBmaWxlcyBmb3IgVk1TIGFyY2hpdGVjdHVyZSBhZGRlZC4KCSogZGVzY3JpcC5tbXMsIHNyYy8qL2Rlc2NyaXAubW1zOiBWTVMgbWFrZWZpbGVzIGFkZGVkLgoJKiBSRUFETUUuVk1TOiBOZXcgZmlsZS4KCjIwMDAtMDEtMDEgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIExJQ0VOU0UuVFhUOiBBZGRlZCBpbmZvIGFib3V0IFBDRiBkcml2ZXIgbGljZW5zZS4KCjIwMDEtMDEtMDEgIEZyYW5jZXNjbyBaYXBwYSBOYXJkZWxsaSAgPGZyYW5jZXNjby56YXBwYS5uYXJkZWxsaUBlbnMuZnI+CgoJKiBzcmMvcGNmLyo6IE5ldyBkcml2ZXIgbW9kdWxlIGZvciBQQ0YgZm9udCBmb3JtYXQgKHVzZWQgaW4KCVggV2luZG93IFN5c3RlbSkuCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRkZWJ1Zy5oIChGVF9UcmFjZSk6IEFkZGVkIHZhbHVlcyBmb3IKCVBDRiBkcml2ZXIuCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvcGNmdHlwZXMuaDogTmV3IGZpbGUuCgkqIGluY2x1ZGUvZnJlZXR5cGUvY29uZmlnL2Z0bW9kdWxlLmg6IEFkZGVkIFBDRiBkcml2ZXIgbW9kdWxlLgoKMjAwMS0wMS0wMSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL3dpbmZvbnRzL3dpbmZudC5jIChGTlRfR2V0X0NoYXJfSW5kZXgpOiBGaXggcGFyYW1ldGVyIHR5cGUuCgoyMDAwLTEyLTMxICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBidWlsZHMvbW9kdWxlcy5tayAoY2xlYW5fbW9kdWxlX2xpc3QpOiBGaXhlZCBkZWxldGlvbiBvZiBtb2R1bGUKCWZpbGUgaW4gY2FzZSBgbWFrZSBtYWtlX21vZHVsZV9saXN0JyBpcyBjYWxsZWQgYmVmb3JlIGBtYWtlIHNldHVwJy4KCjIwMDAtMTItMzAgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9jZmYvY2ZmbG9hZC5jIChDRkZfTG9hZF9DaGFyc2V0KTogSW1wcm92ZWQgZXJyb3IgbWVzc2FnZXMuCgkoQ0ZGX0xvYWRfQ2hhcnNldCwgQ0ZGX0xvYWRfRW5jb2RpbmcpOiBSZW1vdmUgdW5uZWNlc3NhcnkgdmFyaWFibGUKCWRlZmluaXRpb24uCgoyMDAwLTEyLTMwICBUb20gS2Fjdmluc2t5ICA8dGthY3ZpbnNAZnJlZXR5cGUub3JnPgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC90MnR5cGVzLmgsCglpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2NmZnR5cGVzLmg6IENoYW5nZWQgdGhlIHN0cnVjdHVyZXMgZm9yCglDRkZfRW5jb2RpbmcgYW5kIENGRl9FbmNvZGluZyBmb3IgdGhlIG5ldyBpbXBsZW1lbnRhdGlvbnMgb2YgdGhlCgljaGFyc2V0IGFuZCBlbmNvZGluZyBwYXJzZXJzIGluIHRoZSBDRkYgZHJpdmVyLgoKCSogc3JjL2NmZi90Mmdsb2FkLmMgKHQyX2xvb2t1cF9nbHlwaF9ieV9zdGRjaGFyY29kZSwKCXQyX29wZXJhdG9yX3NlYWMpOiBBZGRlZCB0aGVzZSBmdW5jdGlvbnMgZm9yIHVzZSBpbiBpbXBsZW1lbnRpbmcgdGhlCglzZWFjIGVtdWxhdGlvbiBwcm92aWRlZCBieSB0aGUgVHlwZSAyIGVuZGNoYXIgb3BlcmF0b3IuCgkoVDJfUGFyc2VfQ2hhclN0cmluZ3MpOiBBZGRlZCBzZWFjIGVtdWxhdGlvbiBmb3IgdGhlIGVuZGNoYXIKCW9wZXJhdG9yLgoKCSogc3JjL2NmZi9jZmZsb2FkLmMgKENGRl9Mb2FkX0VuY29kaW5nLCBDRkZfTG9hZF9DaGFyc2V0LAoJQ0ZGX0RvbmVfRW5jb2RpbmcsIENGRl9Eb25lX0NoYXJzZXQpOiBFeHRlbmRlZCB0byBsb2FkIGFuZCBwYXJzZSB0aGUKCWNoYXJzZXQvZW5jb2RpbmcgdGFibGVzLCBhbmQgZnJlZSB0aGUgbWVtb3J5IHVzZWQgYnkgdGhlbSB3aGVuIHRoZQoJQ0ZGIGRyaXZlciBpcyBmaW5pc2hlZCB3aXRoIHRoZW0uICBBZGRlZCB0YWJsZXMKCgkgICAgY2ZmX2lzb2Fkb2JlX2NoYXJzZXQKCSAgICBjZmZfZXhwZXJ0X2NoYXJzZXQKCSAgICBjZmZfZXhwZXJ0c3Vic2V0X2NoYXJzZXQKCSAgICBjZmZfc3RhbmRhcmRfZW5jb2RpbmcKCSAgICBjZmZfZXhwZXJ0X2VuY29kaW5nCgoJc28gdGhhdCB0aGUgZW5jb2RpbmcvY2hhcnNldCBwYXJzZXIgY2FuIGhhbmRsZSBwcmVkZWZpbmVkIGVuY29kaW5ncyBhbmQKCWNoYXJzZXRzLgoKMjAwMC0xMi0yNCAgVG9tIEthY3ZpbnNreSAgPHRrYWN2aW5zQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9jZmYvdDJnbG9hZC5jIChUMl9Mb2FkX0dseXBoKTogQWRkZWQgY29kZQlzbyB0aGF0IHRoZSBmb250Cgl0cmFuc2Zvcm0gaXMgYXBwbGllZC4KCgkqIHNyYy9jZmYvY2ZmcGFyc2UuYyAoY2ZmX3BhcnNlX2ZvbnRfbWF0cml4KTogQWRkZWQgY29kZSBzbyB0aGF0Cgl0aGUgZm9udCBtYXRyaXggbnVtYmVycwlhcmUgc2NhbGVkIGJ5IDEvKG1hdHJpeC0+eXkpLiAgQWxzbywgdGhlCglvZmZzZXQgdmVjdG9yIG5vdyBjb250YWlucyBpbnRlZ2VyIHZhbHVlcyBpbnN0ZWFkIG9mIDE2LjE2IGZpeGVkCgludW1iZXJzLgoKMjAwMC0xMi0yMiAgVG9tIEthY3ZpbnNreSAgPHRrYWN2aW5zQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9hdXRvaGludC9haGhpbnQuYyAoYWhfaGludGVyX2xvYWRfZ2x5cGgpOgoJUmVtb3ZlZCB1bm5lY2Vzc2FyeSBjb21tZW50cyBhbmQgY29tbWVudGVkLW91dCBjb2RlLgoKMjAwMC0xMi0yMSAgRGF2aWQgVHVybmVyICA8ZGF2aWQudHVybmVyQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9jaWQvY2lkYWZtLmMsIHNyYy9jaWQvY2lkYWZtLmg6IHJlbW92ZWQgdW4tbmVlZGVkIGZpbGVzLAoJd2UnbGwgd29yayBvbiBzdXBwb3J0aW5nIENJRCBBRk0gZmlsZXMgbGF0ZXIgSSBndWVzcyA6LSkKCjIwMDAtMTItMjEgIFRvbSBLYWN2aW5za3kgIDx0a2Fjdmluc0BmcmVldHlwZS5vcmc+CgoJKiBzcmMvYXV0b2hpbnQvYWhoaW50LmMgKGFoX2hpbnRlcl9sb2FkLCBhaF9oaW50ZXJfbG9hZF9nbHlwaCk6CglDaGFuZ2VkIHNvIHRoYXQgZm9udHMgd2l0aCBhIG5vbi1zdGFuZGFyZCBGb250TWF0cml4IHJlbmRlcgoJY29ycmVjdGx5LiAgUHJldmlvdXNseSwgdGhlIGZpcnN0IGdseXBoIHJlbmRlcmVkIGZyb20gc3VjaCBhCglmb250IGRpZCBub3QgaGF2ZSB0aGUgdHJhbmZvcm1hdGlvbiBtYXRyaXggYXBwbGllZC4KCjIwMDAtMTItMTcgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqICoubWs6IEFkZGVkIGxvdHMgb2YgYC5QSE9OWScgdGFyZ2V0cy4KCjIwMDAtMTItMTcgIEthcnN0ZW4gRmxlaXNjaGVyICA8a2ZsZWlzYzFAZm9yZC5jb20+CgoJKiAqLm1rOiBJbXBsZW1lbnRlZCBgcGxhdGZvcm0nIHRhcmdldCB0byBkaXNhYmxlIGF1dG8tZGV0ZWN0aW9uLgoKMjAwMC0xMi0xNCAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogZG9jcy9kZXNpZ24vbW9kdWxlcy5odG1sOiBSZW1vdmVkLiAgQ292ZXJlZCBieSBkZXNpZ24tKi5odG1sLgoKCSogSU5TVEFMTDogQWRkZWQgaW5mbyBhYm91dCBtYWtlcHAuCgoyMDAwLTEyLTE0ICBEYXZpZCBUdXJuZXIgIDxkYXZpZC50dXJuZXJAZnJlZXR5cGUub3JnPgoKCUFkZGVkIHN1cHBvcnQgZm9yIGNsaXBwZWQgZGlyZWN0IHJlbmRlcmluZyBpbiB0aGUgc21vb3RoIHJlbmRlcmVyLgoJVGhpcyBzaG91bGQgbm90IGJyZWFrIGJpbmFyeSBjb21wYXRpYmlsaXR5IG9mIGV4aXN0aW5nIGFwcGxpY2F0aW9ucy4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnR0eXBlcy5oLCBpbmNsdWRlL2ZyZWV0eXBlL2Z0aW1hZ2UuaDogTW92ZQoJZGVmaW5pdGlvbiBvZiB0aGUgRlRfQkJveCBzdHJ1Y3R1cmUgZnJvbSB0aGUgZm9ybWVyIHRvIHRoZSBsYXR0ZXIuCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnRpbWFnZS5oOiBBZGQgYGZ0X3Jhc3Rlcl9mbGFnX2NsaXAnIHZhbHVlIHRvCglGVF9SYXN0ZXJfRmxhZyBlbnVtZXJhdGlvbi4KCUFkZCBgY2xpcF9ib3gnIGVsZW1lbnQgdG8gRlRfUmFzdGVyX1BhcmFtcyBzdHJ1Y3R1cmUuCgkqIHNyYy9zbW9vdGgvZnRncmF5cy5jIChncmF5c19jb252ZXJ0X2dseXBoKTogSW1wbGVtZW50IGl0LgoKCSogSU5TVEFMTDogVXBkYXRlZCBpbnN0YWxsYXRpb24gaW5zdHJ1Y3Rpb25zIG9uIFdpbjMyLCBsaXN0aW5nIHRoZQoJbmV3IGBtYWtlIHNldHVwIGxpc3QnIHRhcmdldCB1c2VkIHRvIGxpc3Qgc3VwcG9ydGVkCgljb21waWxlcnMvdGFyZ2V0cy4KCgkqIHNyYy9yYXN0ZXIvZnRyYXN0ZXIuYyAoZnRfYmxhY2tfcmVuZGVyKTogVGVzdCBmb3IgdW5zdXBwb3J0ZWQKCWRpcmVjdCByZW5kZXJpbmcgYmVmb3JlIHRlc3RpbmcgYXJndW1lbnRzLgoKMjAwMC0xMi0xMyAgRGF2aWQgVHVybmVyICA8ZGF2aWQudHVybmVyQGZyZWV0eXBlLm9yZz4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvY29uZmlnL2Z0MmJ1aWxkLmgsCglpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2ludGVybmFsLmg6IEZpeGVkIGhlYWRlciBpbmNsdXNpb24gbWFjcm9zCgl0byB1c2UgZGlyZWN0IGRlZmluaXRpb25zLiAgVGhpcyBpcyB0aGUgb25seSB3YXkgdG8gZG8gdGhlc2UgdGhpbmdzCglpbiBhIHBvcnRhYmxlIHdheSA6LSggIFRoZSByZXN0IG9mIHRoZSBjb2RlIHNob3VsZCBmb2xsb3cgc2hvcnRseQoJdGhvdWdoIGV2ZXJ5dGhpbmcgY29tcGlsZXMgbm93LgoKCSogYnVpbGRzL2NvbXBpbGVyL2ludGVsYy5taywgYnVpbGRzL2NvbXBpbGVyL3dhdGNvbS5tazogTmV3IGZpbGVzLgoKCSogYnVpbGRzL3dpbjMyL2RldGVjdC5tazogQWRkZWQgc3VwcG9ydCBmb3IgdGhlIEludGVsIEMvQysrCgljb21waWxlciwgYXMgd2VsbCBhcyBfcHJlbGltaW5hcnlfIChyZWFkOiBkb2Vzbid0IHdvcmshKSBzdXBwb3J0IGZvcgoJV2F0Y29tLiAgQWxzbyBhZGRlZCBhIG5ldyBzZXR1cCB0YXJnZXQuICBUeXBlIGBtYWtlIHNldHVwIGxpc3QnIGZvcgoJYSBsaXN0IG9mIHN1cHBvcnRlZCBjb21tYW5kLWxpbmUgY29tcGlsZXJzIG9uIFdpbjMyLgoKCSogc3JjL2Jhc2UvZnRkZWJ1Zy5jOiBBZGRlZCBkdW1teSBzeW1ib2wgdG8gYXZvaWQgZW1wdHkgZmlsZSBpZgoJY29uZGl0aW9uYWxzIGFyZSBvZmYuCgoyMDAwLTEyLTEzICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBidWlsZHMvdW5peC9mdHN5c3RlbS5jOiBGaXhlZCB0eXBvcy4gIEZpeGVkIGluY2x1c2lvbiBvZiB3cm9uZwoJZnRjb25maWcuaCBmaWxlLgoKMjAwMC0xMi0xMiAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogaW5jbHVkZS9mcmVldHlwZS9jb25maWcvZnQyYnVpbGQuaCAoRlQyX1JPT1QsIEZUMl9DT05GSUdfUk9PVCk6CglSZW1vdmVkLiAgQU5TSSBDIGRvZXNuJ3QgKGV4cGxpY2l0bHkpIGFsbG93IG1hY3JvIGV4cGFuc2lvbiBpbgoJYXJndW1lbnRzIHVzaW5nIGAjIycuCgkoRlQyX1BVQkxJQ19GSUxFLCBGVDJfQ09ORklHX0ZJTEUsIEZUMl9JTlRFUk5BTF9GSUxFKTogVXNlIGRpcmVjdG9yeQoJbmFtZXMgZGlyZWN0bHkuICBNYWtlIHRoZW0gY29uZmlndXJhYmxlLiAgVXNlIGAjIycgdG8gc3RyaXAgbGVhZGluZwoJYW5kIHRyYWlsaW5nIHNwYWNlcyBmcm9tIGFyZ3VtZW50cy4KCgkqIGJ1aWxkcy91bml4L2Z0MnVuaXguaDogQWRhcHRlZC4KCgkqIHNyYy9iYXNlL2Z0c3lzdGVtLmMgKGZ0X2FsbG9jLCBmdF9yZWFsbG9jLCBmdF9mcmVlLCBmdF9pb19zdHJlYW0sCglmdF9jbG9zZV9zdHJlYW0pOiBVc2UgRlRfQ0FMTEJBQ0tfREVGLgoKCSogYnVpbGRzL3VuaXgvZnRzeXN0ZW0uYzogVXNlIG5ldyBoZWFkZXIgc2NoZW1lLgoJKEZUX0RvbmVfTWVtb3J5KTogVXNlIGZyZWUoKSBmcm9tIEZUX01lbW9yeSBzdHJ1Y3R1cmUuCgoJKiBzcmMvYmFzZS9mdGluaXQuYywgc3JjL2Jhc2UvZnRtYWMuYzogSGVhZGVyIHNjaGVtZSBmaXhlcy4KCjIwMDAtMTItMTEgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvY29uZmlnL2Z0MmJ1aWxkLmggKEZUMl9DT05GSUdfUk9PVCwKCUZUMl9QVUJMSUNfRklMRSwgRlQyX0NPTkZJR19GSUxFLCBGVDJfSU5URVJOQUxfRklMRSwKCUZUX1NPVVJDRV9GSUxFKTogVXNlIGAjIycgb3BlcmF0b3IgdG8gYmUgcmVhbGx5IEFOU0kgQyBjb21wbGlhbnQuCgoyMDAwLTEyLTA5ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBidWlsZHMvdW5peC9kZXRlY3QubWs6IFJlbW92ZSB1bnVzZWQgVVNFX0NGTEFHUyB2YXJpYWJsZS4KCjIwMDAtMTItMDggIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqICovKi5oOiBDaGFuZ2VkIGJvZHkgaW5jbHVzaW9uIG1hY3JvIG5hbWVzIHRvIHN0YXJ0IGFuZCBlbmQgd2l0aAoJYF9fJyAodGhvc2Ugd2hpY2ggaGF2ZW4ndCBjb252ZXJ0ZWQgeWV0KS4gIEZpeGVkIG1pbm9yIGNvbnZlcnNpb24KCWlzc3Vlcy4KCgkqIHNyYy93aW5mb250cy93aW5mbnQuYzogVXBkYXRlZCB0byBuZXcgaGVhZGVyIGluY2x1c2lvbiBzY2hlbWUuCgoJKiBzcmMvdHJ1ZXR5cGUvdHRpbnRlcnAuYzogUmVtb3ZlIHVudXNlZCBDQUxDX0xlbmd0aCgpIG1hY3JvLgoKMjAwMC0xMi0wNyAgRGF2aWQgVHVybmVyICA8ZGF2aWQudHVybmVyQGZyZWV0eXBlLm9yZz4KCgkqICovKi5bY2hdOiBDaGFuZ2VkIHNvdXJjZSBmaWxlcyB0byBhZGhlcmUgdG8gdGhlIG5ldwoJaGVhZGVyIGluY2x1c2lvbiBzY2hlbWUuICBOb3QgY29tcGxldGVseSB0ZXN0ZWQgYnV0IHdvcmtzIGZvciBub3cKCWhlcmUuCgoJKiBzcmMvY2ZmL3QyZHJpdmVyLmM6IFJlbmFtZWQgYW5kIHVwZGF0ZWQgdG8uLi4KCSogc3JjL2NmZi9jZmZkcml2ci5jOiBOZXcgZmlsZS4KCSogc3JjL2NmZi90MmRyaXZlci5oOiBSZW5hbWVkIGFuZCB1cGRhdGVkIHRvLi4uCgkqIHNyYy9jZmYvY2ZmZHJpdnIuaDogTmV3IGZpbGUuCgkqIHNyYy9jZmYvdDJsb2FkLmM6IFJlbmFtZWQgYW5kIHVwZGF0ZWQgdG8uLi4KCSogc3JjL2NmZi9jZmZsb2FkLmM6IE5ldyBmaWxlLgoJKiBzcmMvY2ZmL3QybG9hZC5oOiBSZW5hbWVkIGFuZCB1cGRhdGVkIHRvLi4uCgkqIHNyYy9jZmYvY2ZmbG9hZC5oOiBOZXcgZmlsZS4KCSogc3JjL2NmZi90Mm9ianMuYzogUmVuYW1lZCBhbmQgdXBkYXRlZCB0by4uLgoJKiBzcmMvY2ZmL2NmZm9ianMuYzogTmV3IGZpbGUuCgkqIHNyYy9jZmYvdDJvYmpzLmg6IFJlbmFtZWQgYW5kIHVwZGF0ZWQgdG8uLi4KCSogc3JjL2NmZi9jZmZvYmpzLmg6IE5ldyBmaWxlLgoJKiBzcmMvY2ZmL3QycGFyc2UuYzogUmVuYW1lZCBhbmQgdXBkYXRlZCB0by4uLgoJKiBzcmMvY2ZmL2NmZnBhcnNlLmM6IE5ldyBmaWxlLgoJKiBzcmMvY2ZmL3QycGFyc2UuaDogUmVuYW1lZCBhbmQgdXBkYXRlZCB0by4uLgoJKiBzcmMvY2ZmL2NmZnBhcnNlLmg6IE5ldyBmaWxlLgoJKiBzcmMvY2ZmL3QydG9rZW5zLmg6IFJlbmFtZWQgYW5kIHVwZGF0ZWQgdG8uLi4KCSogc3JjL2NmZi9jZmZ0b2tlbi5oOiBOZXcgZmlsZS4KCgkqIHNyYy9jZmYvY2ZmLmMsIHNyYy9jZmYvcnVsZXMubWs6IFVwZGF0ZWQuCgoyMDAwLTEyLTA2ICBEYXZpZCBUdXJuZXIgIDxkYXZpZC50dXJuZXJAZnJlZXR5cGUub3JnPgoKCSogc3JjL2NhY2hlL2Z0bHJ1LmMgKEZUX0xydV9Eb25lKTogRml4ZWQgbWVtb3J5IGxlYWsuCgoyMDAwLTEyLTA2ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBidWlsZHMvbW9kdWxlLm1rOiBSZXBsYWNlZCBgeHh4ICMnIHdpdGggYHh4eCQoc3BhY2UpLgoJKiBidWlsZHMvb3MyL2RldGVrdC5taywgYnVpbGRzL3dpbjMyL2RldGVrdC5tazogTW92ZWQgY29tbWVudCB0bwoJYXZvaWQgdHJhaWxpbmcgc3BhY2VzIGluIHZhcmlhYmxlLgoJKiBidWlsZHMvZnJlZXR5cGUubWs6IFVzZSAkKEQpIGluc3RlYWQgb2YgJEQgdG8gbWFrZSBzdGF0ZW1lbnQgbW9yZQoJcmVhZGFibGUuCgoJKiBkb2NzL2RvY21ha2VyLnB5OiBGb3JtYXR0aW5nLgoKMjAwMC0xMi0wNSAgRGF2aWQgVHVybmVyICA8ZGF2aWQudHVybmVyQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9wc2F1eC9wc2F1eG1vZC5jOiBGaXhlZCBhIGJyb2tlbiBpbmNsdXNpb24gb2YgY29tcG9uZW50CgloZWFkZXIgZmlsZXMgKGFuIEZUX0ZMQVRfQ09NUElMRSB0ZXN0IHdhcyBtaXNzaW5nKS4KCgkqIHNyYy9jYWNoZS9mdGNtYW5hZy5jIChGVENfTWFuYWdlcl9Eb25lKTogRml4ZWQgYSBidWcgdGhhdCBjYXVzZWQKCWFuIG9jY2FzaW9uYWwgY3Jhc2ggd2hlbiB0aGUgZnVuY3Rpb24gd2FzIGNhbGxlZCAoZHVlIHRvIGEgZGFuZ2xpbmcKCXBvaW50ZXIpLgoKCSogc3JjL2Jhc2UvZnRzeXN0ZW0uYyAoRlRfRG9uZV9NZW1vcnkpOiBGaXhlZCBhbiBvYnZpb3VzIGJ1ZzoKCVRoZSBBTlNJIGBmcmVlKCknIGZ1bmN0aW9uIHdhcyBjYWxsZWQgaW5zdGVhZCBvZiBgbWVtb3J5LT5mcmVlKCknLgoKCSogZG9jcy9kb2NtYWtlci5weTogQWRkZWQgc2VjdGlvbiBmaWx0ZXJpbmcsIG11bHRpLXBhZ2UgZ2VuZXJhdGlvbgoJKGluZGV4IHBhZ2UgZ2VuZXJhdGlvbiBpcyBzdGlsbCBtaXNzaW5nIHRob3VnaCkuCgoyMDAwLTEyLTA0ICBEYXZpZCBUdXJuZXIgIDxkYXZpZC50dXJuZXJAZnJlZXR5cGUub3JnPgoKCSogYnVpbGRzL3VuaXgvaW5zdGFsbC5taywgYnVpbGRzL3VuaXgvZnQydW5peC5oOiBUaGUgZmlsZSBgZnQydW5peC5oJwoJaXMgbm93IGluc3RhbGxlZCBhcyA8ZnQyYnVpbGQuaD4gZm9yIFVuaXggc3lzdGVtcy4gIE5vdGUgdGhhdCB3ZQoJc3RpbGwgdXNlIHRoZSBgZnJlZXR5cGUyL2ZyZWV0eXBlJyBpbnN0YWxsYXRpb24gcGF0aCBmb3Igbm93LgoKCSogKi8qLltjaF06IE5vdyB1c2luZyA8ZnQyYnVpbGQuaD4gYXMgdGhlIGRlZmF1bHQgYnVpbGQgYW5kIHNldHVwCgljb25maWd1cmF0aW9uIGZpbGUgaW4gYWxsIHB1YmxpYyBoZWFkZXJzLiAgSW50ZXJuYWwgc291cmNlIGZpbGVzCglzdGlsbCBuZWVkIHNvbWUgY2hhbmdlcyB0aG91Z2guCgoJKiBidWlsZHMvZGV2ZWwvZnQyYnVpbGQuaCwgYnVpbGRzL2RldmVsL2Z0b3B0aW9uLmg6IENyZWF0ZWQgYSBuZXcKCWRpcmVjdG9yeSB0byBob2xkIGFsbCBkZXZlbG9wbWVudCBvcHRpb25zIGZvciBib3RoIHRoZSBVbml4IGFuZAoJV2luMzIgZGV2ZWxvcGVyIGJ1aWxkcy4KCgkqIGJ1aWxkcy93aW4zMi9kZXRlY3QubWssIGJ1aWxkcy93aW4zMi93MzItYmNjZC5taywKCWJ1aWxkcy93aW4zMi93MzItZGV2Lm1rOiBDaGFuZ2VkIHRoZSBkZXZlbG9wZXIgYnVpbGQgdGFyZ2V0cyB0bwoJYGRldmVsLWdjYycgYW5kIGBkZXZlbC1iY2MnIGluIG9yZGVyIHRvIGJlIGFibGUgdG8gZGV2ZWxvcCB3aXRoIHRoZQoJQm9ybGFuZCBDKysgY29tcGlsZXIuCgoyMDAwLTEyLTAxICBEYXZpZCBUdXJuZXIgIDxkYXZpZC50dXJuZXJAZnJlZXR5cGUub3JnPgoKCgkqIFZlcnNpb24gMi4wLjEgcmVsZWFzZWQuCgk9PT09PT09PT09PT09PT09PT09PT09PT09CgoKCSogYnVpbGRzL3VuaXgvY29uZmlndXJlLmluLCBidWlsZHMvdW5peC9jb25maWd1cmUsCglidWlsZHMvY3lnd2luL2NvbmZpZ3VyZS5pbiwgYnVpbGRzL2N5Z3dpbi9jb25maWd1cmU6IFNldHRpbmcKCWB2ZXJzaW9uX2luZm8nIHRvIDY6MTowIGZvciB0aGUgMi4wLjEgcmVsZWFzZS4KCgkqIENIQU5HRVM6IEFkZGVkIGEgc3VtbWFyeSBvZiBjaGFuZ2VzIGJldHdlZW4gMi4wLjEgYW5kIDIuMC4KCgkqIGJ1aWxkcy91bml4L2Z0Y29uZmlnLmluLCBidWlsZHMvY3lnd2luL2Z0Y29uZmlnLmluOiBDaGFuZ2VzCgl0byBhbGxvdyBjb21waWxhdGlvbiB1bmRlciBVbml4IHdpdGggdGhlIFVuaXgtc3BlY2lmaWMgY29uZmlnCglmaWxlcy4KCjIwMDAtMTItMDEgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIElOU1RBTEw6IFJldmlzZWQuCgkqIGJ1aWxkcy9jb21waWxlci9iY2MtZGV2Lm1rLCBidWlsZHMvY29tcGlsZXIvdmlzdWFsYWdlLm1rLAoJYnVpbGRzL2NvbXBpbGVyL2JjYy5taywgYnVpbGRzL3dpbjMyL3czMi1iY2MubWssCglidWlsZHMvd2luMzIvdzMyLWJjY2QubWs6IFJldmlzZWQuCgkqIGluY2x1ZGUvZnJlZXR5cGUvY29uZmlnL2Z0YnVpbGQuaCwKCWluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvaW50ZXJuYWwuaDogUmV2aXNlZC4KCSogaW5jbHVkZS9mcmVldHlwZS9mdGltYWdlLmg6IFVwZGF0ZWQgdG8gbmV3IGhlYWRlciBpbmNsdXNpb24gc2NoZW1lLgoKMjAwMC0xMS0zMCAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogYnVpbGRzL3RvcGxldmVsLm1rICguUEhPTlkpOiBBZGRpbmcgYGRpc3RjbGVhbicuCgkqIGJ1aWxkcy91bml4L2RldGVjdC5tayAoLlBIT05ZKTogQWRkaW5nIGBkZXZlbCcsIGB1bml4JywgYGxjYycsCglgc2V0dXAnLgoKMjAwMC0xMS0zMCAgRGF2aWQgVHVybmVyICA8ZGF2aWQudHVybmVyQGZyZWV0eXBlLm9ncj4KCgkqIElOU1RBTEw6IFNsaWdodGx5IHVwZGF0ZWQgdGhlIHF1aWNrIHN0YXJ0ZXIgZG9jdW1lbnRhdGlvbiB0bwoJaW5jbHVkZSBJREUgY29tcGlsYXRpb24sIHByZXZlbnQgYWdhaW5zdCBCU0QgTWFrZSwgYW5kIHNwZWNpZnkgYG1ha2UKCXNldHVwJyBpbnN0ZWFkIG9mIGEgc2luZ2xlIGBtYWtlJyBmb3IgYnVpbGQgY29uZmlndXJhdGlvbi4KCgkqIGluY2x1ZGUvY29uZmlnL2Z0YnVpbGQuaCwgaW5jbHVkZS9pbnRlcm5hbC9pbnRlcm5hbC5oOiBBZGRlZCBuZXcKCWNvbmZpZ3VyYXRpb24gZmlsZXMgdXNlZCB0byBkZXRlcm1pbmUgdGhlIGxvY2F0aW9uIG9mIGFsbCBwdWJsaWMsCgljb25maWd1cmF0aW9uLCBhbmQgaW50ZXJuYWwgaGVhZGVyIGZpbGVzIGZvciBGcmVlVHlwZSAyLiAgTW9kaWZpZWQKCWFsbCBoZWFkZXJzIHVuZGVyIGBpbmNsdWRlL2ZyZWV0eXBlJyB0byByZWZsZWN0IHRoaXMgY2hhbmdlLiAgTm90ZQoJdGhhdCB3ZSBzdGlsbCBuZWVkIHRvIGNoYW5nZSB0aGUgbGlicmFyeSBzb3VyY2UgZmlsZXMgdGhlbXNlbHZlcwoJdGhvdWdoLgoKCSogYnVpbGRzL2NvbXBpbGVyL2JjYy5taywgYnVpbGRzL2NvbXBpbGVyL2JjYy1kZXYubWssCglidWlsZHMvd2luMzIvdzMyLWJjYy5taywgYnVpbGRzL3dpbjMyL3czMi1iY2NkLm1rLAoJYnVpbGRzL3dpbjMyL2RldGVjdC5tazogQWRkZWQgbmV3IGZpbGVzIHRvIHN1cHBvcnQgY29tcGlsYXRpb24gd2l0aAoJdGhlIGZyZWUgQm9ybGFuZCBDKysgY29tbWFuZC1saW5lIGNvbXBpbGVyLiAgTW9kaWZpZWQgdGhlIGRldGVjdGlvbgoJcnVsZXMgdG8gcmVjb2duaXplIHRoZSBuZXcgYGJjYzMyJyB0YXJnZXQgaW4gYG1ha2Ugc2V0dXAgYmNjMzInLgoKCSogc3JjL3NmbnQvdHRjbWFwLmMsIHNyYy9zZm50L3R0cG9zdC5jLCBzcmMvc2ZudC90dHNiaXQuYywKCXNyYy90cnVldHlwZS90dG9ianMuYywgc3JjL3RydWV0eXBlL3R0Z2xvYWQuYywKCXNyYy90cnVldHlwZS90dGludGVycC5jOiBGaXhlZCBhIGZldyBjb21wYXJpc29ucyB0aGF0IEJvcmxhbmQgQysrCglkaWRuJ3QgcmVhbGx5IGxpa2UuICBCYXNpY2FsbHksIHRoaXMgY29tcGlsZXIgY29tcGxhaW5zIHdoZW4gRlRfVUludAoJaXMgY29tcGFyZWQgdG8gRlRfVVNob3J0IChhcHBhcmVudGx5LCBpdCBwcm9tb3RlcyBgVVNob3J0JyB0byBgSW50JwoJaW4gdGhlc2UgY2FzZXMpLgoKMjAwMC0xMS0zMCAgVG9tIEthY3ZpbnNreSAgPHRrYWN2aW5zQGZyZWV0eXBlLm9yZz4KCgkqIHQyb2Jqcy5jIChUMl9Jbml0X0ZhY2UpOiBBZGRlZCBjYWxjdWxhdGlvbiBvZiBgZmFjZS0+aGVpZ2h0JyBmb3IKCXB1cmUgQ0ZGIGZvbnRzLgoKCSogdDFvYmpzLmMgKFQxX0luaXRfRmFjZSk6IEZpeGVkIGNvbXB1dGF0aW9uIG9mIGBmYWNlLT5oZWlnaHQnLgoKMjAwMC0xMS0yOSAgRGF2aWQgVHVybmVyICA8ZGF2aWQudHVybmVyQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9iYXNlL2Z0YmJveC5jIChCQm94X0NvbmljX0NoZWNrKTogRml4ZWQgYSByZWFsbHkgc3R1cGlkCglidWcgaW4gdGhlIGZvcm11bGEgdXNlZCB0byBjb21wdXRlIHRoZSBjb25pYyBC6XppZXIgZXh0cmVtYQoJb2Ygbm9uLW1vbm90b25vdXMgYXJjcy4KCjIwMDAtMTEtMjkgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9iYXNlL2Z0Y2FsYy5jIChGVF9TcXJ0Rml4ZWQpLCBzcmMvYmFzZS9mdG9ianMuYwoJKEZUX1NldF9SZW5kZXJlcik6IFVzZSBGVF9FWFBPUlRfREVGLgoJKiBzcmMvY2FjaGUvZnRjaW1hZ2UuYyAoRlRDX0ltYWdlX0NhY2hlX0xvb2t1cCksCglzcmMvY2FjaGUvZnRjbWFuYWcuYyAoRlRDX01hbmFnZXJfRG9uZSwgRlRDX01hbmFnZXJfUmVzZXQsCglGVENfTWFuYWdlcl9Mb29rdXBfRmFjZSwgRlRDX01hbmFnZXJfTG9va3VwX1NpemUsCglGVENfTWFuYWdlcl9SZWdpc3Rlcl9DYWNoZSksIHNyYy9jYWNoZS9mdGNzYml0cy5jCgkoRlRDX1NCaXRfQ2FjaGVfTG9va3VwKTogRGl0dG8uCgoJKiBzcmMvaW5jbHVkZS9mcmVldHlwZS9jYWNoZS9mdGNnbHlwaC5oIChGVENfR2x5cGhOb2RlX0luaXQpLAoJc3JjL2luY2x1ZGUvZnJlZXR5cGUvZnRtYWMuaCAoRlRfTmV3X0ZhY2VfRnJvbV9GT05EKTogVXNlIEZUX0VYUE9SVC4KCjIwMDAtMTEtMjkgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9zZm50L3NmZHJpdmVyLmM6IEluY2x1ZGUgdHRzYml0LmggYW5kIHR0cG9zdC5oIG9ubHkKCWNvbmRpdGlvbmFsbHkuCgoJKiBzcmMvdHJ1ZXR5cGUvdHRkcml2ZXIuYyAoU2V0X0NoYXJfU2l6ZXMsIFNldF9QaXhlbF9TaXplcyk6IFNldAoJYHNpemUtPnN0cmlrZV9pbmRleCcgb25seSBjb25kaXRpb25hbGx5LgoKCSogc3JjL3R5cGUxL3QxZHJpdmVyLmMsIHNyYy90eXBlMS90MW9ianMuYzogSW5jbHVkZSB0MWFmbS5oIG9ubHkKCWNvbmRpdGlvbmFsbHkuCgoJKiBzcmMvd2luZm9udHMvd2luZm50Lmg6IE1vdmUgYWxsIHR5cGUgZGVmaW5pdGlvbnMgdG8uLi4KCSogc3JjL2luY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZm50dHlwZXMuaDogTmV3IGZpbGUuCgkqIHNyYy93aW5mb250cy93aW5mbnQuYzogVXNlIGl0LgoKMjAwMC0xMS0yOSAgPz8/ID8/PyAgPGRhcmluQGVhemVsLmNvbT4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRkZWJ1Zy5oOiBSZXBsYWNlZCBGVF9DQVQgYW5kIEZUX1hDQVQKCXdpdGggYSBkaXJlY3Qgc29sdXRpb24gKHdoaWNoIGFsc28gc2F0aWZpZXMgcGlja3kgY29tcGlsZXJzKS4KCjIwMDAtMTEtMjggIFlBTUFOTy1VQ0hJIEhpZGV0b3NoaSAgPG1lckBkaW4ub3IuanA+CgoJKiBzcmMvdHJ1ZXR5cGUvdHRvYmpzLmMgKFRUX0luaXRfU2l6ZSk6IEZpeCAjaWZkZWYncyB0byB3b3JrIHdpdGgKCWRpc2FibGVkIGludGVycHJldGVyIGFsc28uCgoJKiBzcmMvYmFzZS9mdG5hbWVzLmMgKEZUX0dldF9TZm50X05hbWVfQ291bnQpOiBGaXggaW5jb3JyZWN0CglwYXJlbnRoZXNlcy4KCjIwMDAtMTEtMjYgIFRvbSBLYWN2aW5za3kgIDx0a2Fjdmluc0BmcmVldHlwZS5vcmc+CgoJKiBzcmMvY2ZmL3QyZ2xvYWQuYyAoVDJfUGFyc2VfQ2hhclN0cmluZ3MpOiBBZGRlZCBsb2dpYyB0byBnbHlwaAoJd2lkdGggc2V0dGluZyBjb2RlIHRvIHRha2UgaW50byBhY2NvdW50IGV2ZW4vb2RkIGFyZ3VtZW50IGNvdW50cwoJYW5kIGdseXBoIHdpZHRoIG9wZXJhbmQgYmVmb3JlIGVuZGNoYXIvaG1vdmV0by92bW92ZXRvLgoKMjAwMC0xMS0yNiAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogYnVpbGRzL2Fuc2kvYW5zaS5tazogRml4IGluY2x1c2lvbiBvcmRlciBvZiBmaWxlcy4KCjIwMDAtMTEtMjYgIEtlaXRoIFBhY2thcmQgIDxrZWl0aHBAa2VpdGhwLmNvbT4KCgkqIHNyYy90eXBlMS90MW9ianMuYyAoVDFfSW5pdF9GYWNlKTogQ29tcHV0ZSBzdHlsZSBmbGFncy4KCjIwMDAtMTEtMjYgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGJ1aWxkcy9jb21waWxlci9hbnNpLWNjLm1rIChDTEVBTl9MSUJSQVJZKTogRml4IHJ1bGUgYW5kCgljb25kaXRpb25hbC4KCjIwMDAtMTEtMjMgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy90eXBlMS90MWxvYWQuYyAocGFyc2Vfc3VicnMsIHBhcnNlX2NoYXJzdHJpbmdzKTogVXNlIGRlY3J5cHQKCWZ1bmN0aW9uIGZyb20gUFNBdXggbW9kdWxlLgoKCSogc3JjL3R5cGUxL3QxcGFyc2UuYyAoVDFfRG9uZV9QYXJzZSk6IFJlbmFtZWQgdG8uLi4KCShUMV9GaW5hbGl6ZV9QYXJzZXIpOiBOZXcgZnVuY3Rpb24gKHRvIGF2b2lkIG5hbWUgY2xhc2ggd2l0aCBhCglmdW5jdGlvbiBpbiB0aGUgUFNBdXggbW9kdWxlKS4KCShUMV9EZWNyeXB0KTogUmVtb3ZlZCBzaW5jZSBpdCBpcyBkdXBsaWNhdGVkIGluIHRoZSBQU0F1eCBtb2R1bGUuCgkoVDFfR2V0X1ByaXZhdGVfRGljdCk6IEFkZGVkIGBwc2F1eCcgYXMgbmV3IHBhcmFtZXRlcjsgdXNlIGRlY3J5cHQKCWZ1bmN0aW9uIGZyb20gUFNBdXggbW9kdWxlLgoKCSogc3JjL3R5cGUxL3QxcGFyc2UuaDogQWRhcHRlZC4KCjIwMDAtMTEtMjIgIFRvbSBLYWN2aW5za3kgIDx0a2Fjdmluc0BmcmVldHlwZS5vcmc+CgoJKiBzcmMvY2ZmL3Qyb2Jqcy5jIChUMl9Jbml0X0ZhY2UpOiBGb3IgcHVyZSBDRkYgZm9udHMsIHNldAoJYHJvb3QtPm51bV9mYWNlcycgdG8gYGNmZi0+bnVtX2ZhY2VzJyBhbmQgc2V0IGB1bml0c19wZXJfRU0nCgl0byAxMDAwLgoKCSogc3JjL2NmZi90MnBhcnNlLmMgKHBhcnNlX3QyX3JlYWwpOiBGaXhlZCByZWFsIG51bWJlciBwYXJzaW5nCglsb29wLgoKCSogc3JjL2NmZi90MmxvYWQuYyAoVDJfR2V0X1N0cmluZyk6IENhbGxlZCBUMl9HZXRfTmFtZSB3aXRoIGEKCXNpZCB0aGF0IHdhcyBvZmYgYnkgb25lLgoKMjAwMC0xMS0xNiAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogc3JjL2F1dG9oaW50L2FodHlwZXMuaCAoQUhfSGludGVyKTogQWRkZWQgbmV3IGZpZWxkcyB0byBjb250cm9sCglhdXRvLWhpbnRpbmcgb2Ygc3ludGhldGljIFR5cGUgMSBmb250cy4KCgkqIHNyYy9hdXRvaGludC9haGhpbnQuYyAoYWhfaGludGVyX2xvYWQsIGFoX2hpbnRlcl9sb2FkX2dseXBoKToKCUFkZGVkIGF1dG8taGludGluZyBzdXBwb3J0IG9mIHN5bnRoZXRpYyBUeXBlIDEgZm9udHMuCgoyMDAwLTExLTEyICBUb20gS2Fjdmluc2t5ICA8dGthY3ZpbnNAZnJlZXR5cGUub3JnPgoKCSogc3JjL3NmbnQvdHRsb2FkLmMgKFRUX0xvb2tVcF9UYWJsZSwgVFRfTG9hZF9HZW5lcmljX1RhYmxlKTogQ2hhbmdlCgl0cmFjaW5nIG91dHB1dC4KCgkqIHNyYy9zZm50L3Nmb2Jqcy5jIChTRk5UX0xvYWRfRmFjZSk6IFNldCBib29sZWFuIHZhcmlhYmxlCglgaGFzLW91dGxpbmUnIHRvIHRydWUgb25seSBpZiB0aGUgZm9udCBoYXMgYSBgZ2x5Zicgb3IgYENGRiAnIHRhYmxlLgoKMjAwMC0xMS0xMSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogYnVpbGRzL3dpbjMyL3Zpc3VhbGMvZnJlZXR5cGUuZHNwOiBGaXggcmFzdGVyMS0+cmFzdGVyIGFuZAoJdHlwZTF6LT50eXBlMS4KCjIwMDAtMTEtMTEgIFRvbSBLYWN2aW5za3kgIDx0a2Fjdmluc0BmcmVldHlwZS5vcmc+CgoJKiBidWlsZHMvdW5peC9mcmVldHlwZS1jb25maWcuaW4sIGJ1aWxkcy9jeWd3aW4vZnJlZXR5cGUtY29uZmlnLmluOgoJQWRkZWQgYSAtLWxpYnRvb2wgb3B0aW9uLiAgV2hlbiBmcmVldHlwZS1jb25maWcgLS1saWJ0b29sIGlzCglpbnZva2VkLCB0aGUgYWJzb2x1dGUgcGF0aCB0byB0aGUgbGlidG9vbCBjb252ZW5pZW5jZSBsaWJyYXJ5CglpcyByZXR1cm5lZC4KCjIwMDAtMTEtMTEgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGJ1aWxkcy9jeWd3aW4vY3lnd2luLWRlZi5pbjogU2FtZSBmaXggYXMgcHJldmlvdXMuCgoyMDAwLTExLTEwICBUb20gS2Fjdmluc2t5ICA8dGthY3ZpbnNAZnJlZXR5cGUub3JnPgoKCSogYnVpbGRzL3VuaXgvdW5peC1kZWYuaW46IEFkZAoKCSAgICBJTlNUQUxMX1BST0dSQU0gOj0gQElOU1RBTExfUFJPR1JBTUAKCSAgICBJTlNUQUxMX1NDUklQVCAgOj0gQElOU1RBTExfU0NSSVBUQAoKCXNvIHRoYXQgaW5zdGFsbGF0aW9uIG9mIGZyZWV0eXBlLWNvbmZpZyBkb2VzIG5vdCBmYWlsLgoKMjAwMC0xMS0xMCAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogYnVpbGRzL2N5Z3dpbi9mcmVldHlwZS1jb25maWcuaW4sIGJ1aWxkcy91bml4L2ZyZWV0eXBlLWNvbmZpZy5pbjoKCU1vdmUgdGVzdCBkb3duIGZvciBlbXB0eSAtLWV4ZWMtcHJlZml4LgoJRml4IC0tdmVyc2lvbi4KCgkqIGJ1aWxkcy9jeWd3aW4vaW5zdGFsbC5taywgYnVpbGRzL3VuaXgvaW5zdGFsbC5tazogVXNlCgkkKElOU1RBTExfU0NSSVBUKSBmb3IgaW5zdGFsbGF0aW9uIG9mIGZyZWV0eXBlLWNvbmZpZy4KCgkqIGJ1aWxkcy9jeWd3aW4vaW5zdGFsbC5tazogRml4IGNsZWFuIHRhcmdldCBuYW1lcy4KCjIwMDAtMTEtMDkgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgoJKiBWZXJzaW9uIDIuMCByZWxlYXNlZC4KCT09PT09PT09PT09PT09PT09PT09PT09CgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgpDb3B5cmlnaHQgMjAwMCwgMjAwMSwgMjAwMiBieQpEYXZpZCBUdXJuZXIsIFJvYmVydCBXaWxoZWxtLCBhbmQgV2VybmVyIExlbWJlcmcuCgpUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRnJlZVR5cGUgcHJvamVjdCwgYW5kIG1heSBvbmx5IGJlIHVzZWQsIG1vZGlmaWVkLAphbmQgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0IGxpY2Vuc2UsCkxJQ0VOU0UuVFhULiAgQnkgY29udGludWluZyB0byB1c2UsIG1vZGlmeSwgb3IgZGlzdHJpYnV0ZSB0aGlzIGZpbGUgeW91CmluZGljYXRlIHRoYXQgeW91IGhhdmUgcmVhZCB0aGUgbGljZW5zZSBhbmQgdW5kZXJzdGFuZCBhbmQgYWNjZXB0IGl0CmZ1bGx5LgoKCkxvY2FsIFZhcmlhYmxlczoKdmVyc2lvbi1jb250cm9sOiBuZXZlcgpjb2Rpbmc6IGxhdGluLTEKRW5kOgo=