MjAwNi0wMi0yNCAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKICAgICogdGFnZ2luZyBUaGlyZCByZWxlYXNlIGNhbmRpZGF0ZSB3aXRoIFZFUi0yLTItMC1SQzMKCiAgICAqIHNyYy9jYWNoZS9mdGNiYXNpYy5jOiBjb3JyZWN0aW5nIGNvbXBhdGliaWxpdHkgaGFjayBidWcKCjIwMDYtMDItMjQgIENoaWEtSSBXdSAgPGI5MDIwMTA0N0BudHUuZWR1LnR3PgoKCSogaW5jbHVkZS9mcmVldHlwZS9mcmVldHlwZS5oIChGVF9TaXplX1JlcXVlc3RSZWMpOiBDaGFuZ2UgdGhlIHR5cGUgb2YKCWB3aWR0aCcgYW5kIGBoZWlnaHQnIHRvIGBGVF9Mb25nJy4KCShlbnVtIEZUX1NpemVfUmVxdWVzdF9UeXBlKSwgc3JjL2Jhc2UvZnRvYmpzLmMgKEZUX1JlcXVlc3RfTWV0cmljcyk6CglOZXcgcmVxdWVzdCB0eXBlIGBGVF9TSVpFX1JFUVVFU1RfVFlQRV9TQ0FMRVMnIHRvIHNwZWNpZnkgdGhlIHNjYWxlcwoJZGlyZWN0bHkuCgoyMDA2LTAyLTIzICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJVHdvIHBhdGNoZXMgZnJvbSBEZWJpYW4gbGliZnJlZXR5cGU2IGZvciAyLjEuMTAuCgoJKiBzcmMvYmRmL2JkZmxpYi5jIChfYmRmX3BhcnNlX2dseXBocyk6IEZpeCBhIGJ1ZyB3aXRoIHplcm8td2lkdGgKCWdseXBocy4KCUZpeCBhIHByb2JsZW0gd2l0aCBsYXJnZSBlbmNvZGluZ3MuCgoJKiBzcmMvY2FjaGUvZnRjY21hcC5jOiB0cnlpbmcgdG8gaGFjayBiaW5hcnkgY29tcGF0aWJpbGl0eSBmb3IKCWdudXN0ZXAtYmFjayAoR05Vc3RlcCBiYWNrZW5kIG1vZHVsZSkgd2hpY2ggc3RpbGwgY3Jhc2hlcyB1bmRlciBTYXJnZS4KCjIwMDYtMDItMjMgIENoaWEtSSBXdSAgPGI5MDIwMTA0N0BudHUuZWR1LnR3PgoKCSogaW5jbHVkZS9mcmVldHlwZS9mdG91dGxuLmggKGVudW0gRlRfT3JpZW50YXRpb24pOiBOZXcgdmFsdWUKCWBGVF9PUklFTlRBVElPTl9OT05FJy4KCgkqIHNyYy9iYXNlL2Z0b3V0bG4uYyAoRlRfT1VUTElORV9HRVRfQ09OVE9VUiwgZnRfY29udG91cl9oYXMsCglmdF9jb250b3VyX2VuY2xvc2VkLCBmdF9vdXRsaW5lX2dldF9vcmllbnRhdGlvbik6IEFub3RoZXIgdmVyc2lvbiBvZgoJYEZUX091dGxpbmVfR2V0X09yaWVudGF0aW9uJy4gIFRoaXMgdmVyc2lvbiBkaWZmZXJzIGZyb20gdGhlIHB1YmxpYwoJb25lIGluIHRoYXQgZWFjaCBwYXJ0IChjb250b3VyIG5vdCBlbmNsb3NlZCBpbiBhbm90aGVyIGNvbnRvdXIpIG9mIHRoZQoJb3V0bGluZSBpcyBjaGVja2VkIGZvciBvcmllbnRhdGlvbi4KCShGVF9PdXRsaW5lX0VtYm9sZGVuKTogVXNlIGBmdF9vdXRsaW5lX2dldF9vcmllbnRhdGlvbicuCgoJKiBzcmMvYmFzZS9mdHN5bnRoLmMgKEZUX0dseXBoU2xvdF9FbWJvbGRlbik6IFJlbmRlciB0aGUgb3V0bGluZSBhbmQKCXVzZSBiaXRtYXAncyBlbWJvbGRlbiByb3V0aW5lIHdoZW4gdGhlIG91dGxpbmUgb25lIGZhaWxlZC4KCjIwMDYtMDItMjIgIENoaWEtSSBXdSAgPGI5MDIwMTA0N0BudHUuZWR1LnR3PgoKCSogbW9kdWxlcy5jZmc6IENvbXBpbGUgaW4gZnRvdHZhbC5jIGFuZCBmdHhmODYuYyBieSBkZWZhdWx0IGZvciBBQkkKCWNvbXBhdGliaWxpdHkuCgoJKiBzcmMvc2ZudC9zZm9ianMuYyAoc2ZudF9kb25lX2ZhY2UpOiBGaXggYSBtZW1vcnkgbGVhay4KCgkqIHNyYy9zZm50L3R0c2JpdDAuYyAodHRfc2JpdF9kZWNvZGVyX2xvYWRfYml0X2FsaWduZWQsCgl0dF9zYml0X2RlY29kZXJfbG9hZF9ieXRlX2FsaWduZWQpIFtGVF9PUFRJTUlaRV9NRU1PUlldOiBGaXggc2JpdAoJbG9hZGluZy4gIChPbmx5IHRlc3RlZCB3aXRoIGJpdCBhbGlnbmVkIHNiaXQgd2l0aCB4X3BvcyA9PSAwLikKCgkqIHNyYy90cnVldHlwZS90dHBsb2FkLmMgKHR0X2ZhY2VfbG9hZF9oZG14LAoJdHRfZmFjZV9nZXRfZGV2aWNlX21ldHJpY3MpIFtGVF9PUFRJTUlaRV9NRU1PUlldOiBgaGRteCcgaXMgbm90CglhY3R1YWxseSB1c2VkLgoKMjAwNi0wMi0yMSAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCUFkZCBhIG5ldyBBUEkgbmFtZWQgRlRfR2V0X1RydWVUeXBlX0VuZ2luZV9UeXBlIHRvIGRldGVybWluZSB3aGV0aGVyCgl3ZSBoYXZlIGEgcGF0ZW50ZWQsIHVucGF0ZW50ZWQsIG9yIHVuaW1wbGVtZW50ZWQgVHJ1ZVR5cGUgYnl0ZWNvZGUKCWludGVycHJldGVyLgoKCVRoZSBGVF9HZXRfTW9kdWxlX0ZsYWdzIEFQSSB3YXMgcmVtb3ZlZCBjb25zZXF1ZW50bHkuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2Z0bW9kYXBpLmggKEZUX01vZHVsZV9HZXRfRmxhZ3MpOiBSZW1vdmVkLgoJUmVwbGFjZWQgd2l0aC4uLgoJKEZUX0dldF9UcnVlVHlwZV9FbmdpbmVfVHlwZSk6IFRoaXMuCgkoRlRfVHJ1ZVR5cGVFbmdpbmVUeXBlKTogTmV3IGVudW1lcmF0aW9uLgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdHNlcnYuaCAoRlRfU0VSVklDRV9UUlVFVFlQRV9FTkdJTkVfSCk6CglOZXcgbWFjcm8uCgoJKiBzcmMvYmFzZS9mdG9ianMuYzogSW5jbHVkZSBGVF9TRVJWSUNFX1RSVUVUWVBFX0VOR0lORV9ILgoJKEZUX01vZHVsZV9HZXRfRmxhZ3MpOiBSZW1vdmVkLiAgUmVwbGFjZWQgd2l0aC4uLgoJKEZUX0dldF9UcnVlVHlwZV9FbmdpbmVfVHlwZSk6IFRoaXMuCgoJKiBzcmMvdHJ1ZXR5cGUvdHRkcml2ZXIuYzogSW5jbHVkZSBGVF9TRVJWSUNFX1RSVUVUWVBFX0VOR0lORV9ILgoJKHR0X3NlcnZpY2VfdHJ1ZXR5cGVfZW5naW5lKTogTmV3IHNlcnZpY2Ugc3RydWN0dXJlLgoJKHR0X3NlcnZpY2VzKTogUmVnaXN0ZXIgaXQuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3NlcnZpY2VzL3N2dHRlbmcuaDogTmV3IGZpbGUuCgoKCSogc3JjL3NmbnQvc2ZvYmpzLmMgKHNmbnRfbG9hZF9mYWNlKTogRml4IHNpbGx5IGJ1ZyB0aGF0IHByZXZlbnRlZAoJZW1iZWRkZWQgYml0bWFwcyBmcm9tIGJlaW5nIGNvcnJlY3RseSBsaXN0ZWQgYW5kIHVzZWQuCgoKCSogc3JjL3NmbnQvdHRtdHguYyAodHRfZmFjZV9sb2FkX2htdHgpOiBEaXNhYmxlIG1lbW9yeSBvcHRpbWl6YXRpb24KCWlmIEZUX0NPTkZJR19PUFRJT05fT0xEX0lOVEVSTkFMUyBpcyB1c2VkLiAgVGhlIGlzIG5lY2Vzc2FyeSBiZWNhdXNlCglsaWJYZm9udCBpcyBkaXJlY3RseSBhY2Nlc3NpbmcgdGhlIEhNVFggZGF0YSwgdW5mb3J0dW5hdGVseS4KCUZpeCBzb21lIGNvbXBpbGVyIHdhcm5pbmdzLgoJKHR0X2ZhY2VfZ2V0X21ldHJpY3MpOiBEaXR0by4KCgoJKiBzcmMvcGZyL3BmcnNiaXQuYyAocGZyX3Nsb3RfbG9hZF9iaXRtYXApOiBGaXggaGFuZGxpbmcgb2YKCWNoYXJhY3RlciBhZHZhbmNlcy4KCjIwMDYtMDItMjAgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCglTdXBwb3J0IGJpbmFyeSBjb21wYXRpYmlsaXR5IHdpdGggdGhlIFguT3JnIHNlcnZlcidzIFhmb250IGxpYnJhcnkuCglOb3RlIHRoYXQgdGhpcyBjaGFuZ2UgdW5mb3J0dW5hdGVseSBwcmV2ZW50cyBtZW1vcnkgb3B0aW1pemF0aW9ucwoJZm9yIHRoZSBlbWJlZGRlZCBiaXRtYXAgbG9hZGVyLgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9zZm50LmggKFNGTlRfSW50ZXJmYWNlKTogTW92ZQoJYHNldF9zYml0X3N0cmlrZScgYW5kIGBsb2FkX3NiaXRfbWV0cmljcycgZmllbGRzIHRvIHRoZSBsb2NhdGlvbiBvZgoJdmVyc2lvbiAyLjEuOC4KCgkqIHNyYy9zZm50L3NmZHJpdmVyLmMgKHR0X2ZhY2Vfc2V0X3NiaXRfc3RyaWtlX3N0dWIpOiBDYWxsCglGVF9TaXplX1JlcXVlc3QuCgkoc2ZudF9pbnRlcmZhY2UpOiBVcGRhdGVkLgoKCSogc3JjL3NmbnQvdHRzYml0LmMgW0ZUX0NPTkZJR19PUFRJT05fT0xEX0lOVEVSTkFMU106IERvbid0IGxvYWQKCXR0c2JpdDAuYy4KCSh0dF9sb2FkX3NiaXRfbWV0cmljcyk6IE1ha2UgYHNiaXRfc21hbGxfbWV0cmljc19maWVsZHMnIHN0YXRpYy4KCgkqIHNyYy9zZm50L3R0c2JpdC5oOiBVcGRhdGVkLgoKMjAwNi0wMi0xNyAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogYnVpbGRzL3VuaXgvdW5peC1jYy5pbiAoTElOS19MSUJSQVJZKTogRG9uJ3QgZmlsdGVyIG91dCBleHBvcnRlZAoJZnVuY3Rpb25zIGFueW1vcmUuICBUaGlzIGVuc3VyZXMgdGhhdCBhbGwgRlRfQkFTRSBpbnRlcm5hbCBmdW5jdGlvbnMKCWFyZSBhdmFpbGFibGUgZm9yIGR5bmFtaWMgbGlua2luZy4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnRjYWNoZS5oIChGVENfSU1BR0VfVFlQRV9DT01QQVJFLAoJRlRDX0lNQUdFX1RZUEVfSEFTSCksIHNyYy9jYWNoZS9mdGNiYXNpYy5jIChGVENfT2xkRm9udFJlYywKCUZUQ19PbGRJbWFnZURlc2NSZWMsIEZUQ19JbWFnZUNhY2hlX0xvb2t1cCwgRlRDX0ltYWdlX0NhY2hlX05ldywKCUZUQ19PbGRJbWFnZV9EZXNjLCBGVENfT0xEX0lNQUdFX0ZPUk1BVCwgZnRjX29sZF9pbWFnZV94eHgsCglmdGNfaW1hZ2VfdHlwZV9mcm9tX29sZF9kZXNjLCBGVENfSW1hZ2VfQ2FjaGVfTG9va3VwLAoJRlRDX1NCaXRDYWNoZV9Mb29rdXAsIEZUQ19TQml0X0NhY2hlX05ldywgRlRDX1NCaXRfQ2FjaGVfTG9va3VwKQoJW0ZUX0NPTkZJR19PUFRJT05fT0xEX0lOVEVSTkFMU106IFRyeSB0byByZXZpdmUgb2xkIGZ1bmN0aW9ucyBvZiB0aGUKCWNhY2hlIHN1Yi1zeXN0ZW0uICBXZSB0cnkgdG8gcmVjb2duaXplIG9sZCBsZWdhY3kgc2lnbmF0dXJlcyB3aXRoIGEKCWdyb3NzIGhhY2sgKGhvcGUgaXQgd29ya3MpLgoKMjAwNi0wMi0xNyAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogZGV2ZWwvZnRvcHRpb24uaDogU3luY2hyb25pemUgd2l0aAoJaW5jbHVkZS9mcmVldHlwZS9jb25maWcvZnRvcHRpb24uaC4KCjIwMDYtMDItMTYgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCglNYXNzaXZlIGNoYW5nZXMgdG8gdGhlIGludGVybmFscyB0byByZXNwZWN0IHRoZSBpbnRlcm5hbCBvYmplY3QKCWxheW91dHMgYW5kIGV4cG9ydGVkIGZ1bmN0aW9ucyBvZiBGcmVlVHlwZSAyLjEuNy4gIE5vdGUgdGhhdCB0aGUKCWNhY2hlIHN1Yi1zeXN0ZW0gY2Fubm90IGJlIGZ1bGx5IHJldHJvZml0dGVkLCB1bmZvcnR1bmF0ZWx5LgoKCSogaW5jbHVkZS9mcmVldHlwZS9jb25maWcvZnRvcHRpb24uaAoJKEZUX0NPTkZJR19PUFRJT05fT0xEX0lOVEVSTkFMUyk6IE5ldyBtYWNyby4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnRjYWNoZS5oLCBpbmNsdWRlL2ZyZWV0eXBlL2NhY2hlL2Z0Y2NhY2hlLmgsCglpbmNsdWRlL2ZyZWV0eXBlL2NhY2hlL2Z0Y2NtYXAuaCwKCWluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRjYWxjLmgsCglpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0ZHJpdmVyLmgsCglpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0bWVtb3J5LmgsCglpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0b2Jqcy5oLAoJaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9wc2F1eC5oLCBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3NmbnQuaCwKCWluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvdDF0eXBlcy5oLAoJaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC90dHR5cGVzLmgsIHNyYy9iYXNlL2Z0Y2FsYy5jLAoJc3JjL2Jhc2UvZnRkYmdtZW0uYywgc3JjL2Jhc2UvZnRvYmpzLmMsIHNyYy9iYXNlL2Z0dXRpbC5jLAoJc3JjL2JkZi9iZGZkcml2ci5jLCBzcmMvY2FjaGUvZnRjY2FjaGUuYywgc3JjL2NhY2hlL2Z0Y2NiYWNrLmgsCglzcmMvY2FjaGUvZnRjbWFuYWcuYywgc3JjL2NmZi9jZmZkcml2ci5jLCBzcmMvY2lkL2NpZHJpdmVyLmMsCglzcmMvcGNmL3BjZmRyaXZyLmMsIHNyYy9wZnIvcGZyZHJpdnIuYywgc3JjL3BzYXV4L3BzYXV4bW9kLmMsCglzcmMvc2ZudC9zZmRyaXZlci5jLCBzcmMvdHJ1ZXR5cGUvdHRkcml2ZXIuYywgc3JjL3R5cGUxL3QxZHJpdmVyLmMsCglzcmMvdHlwZTEvdDFvYmpzLmMsIHNyYy90eXBlNDIvdDQyZHJpdnIuYywgc3JjL3dpbmZvbnRzL3dpbmZudC5jOgoJVXNlIEZUX0NPTkZJR19PUFRJT05fT0xEX0lOVEVSTkFMUyB0byByZXZpdmUgb2xkIGZ1bmN0aW9ucyBhbmQgZGF0YQoJc3RydWN0dXJlcy4KCglNb3ZlIG5ld2x5IGFkZGVkIHN0cnVjdHVyZSBlbGVtZW50cyB0byB0aGUgZW5kIG9mIHRoZSBhZmZlY3RlZAoJc3RydWN0dXJlIGFuZCBhZGQgc3R1YiBmaWVsZHMgKGlmIEZUX0NPTkZJR19PUFRJT05fT0xEX0lOVEVSTkFMUyBpcwoJZGVmaW5lZCkgdG8gYXNzdXJlIGJpbmFyeSBjb21wYXRpYmlsaXR5IHdpdGggb2xkZXIgRnJlZVR5cGUKCXZlcnNpb25zLgoJVXNlIEZUX0NPTkZJR19PUFRJT05fT0xEX0lOVEVSTkFMUyB0byBhZGQgZnVuY3Rpb24gc3R1YnMgZm9yIG9sZAoJZnVuY3Rpb25zOgoKCSAgZnRfc3R1Yl9zZXRfY2hhcl9zaXplcwoJICBmdF9zdHViX3NldF9waXhlbF9zaXplcwoKCVJlbmFtZSB0aGUgZm9sbG93aW5nIGludGVybmFsIGZ1bmN0aW9ucyB0byBwcm92aWRlIHRoZSBvbGQgZnVuY3Rpb24KCW5hbWVzIGFzIHN0dWJzOgoKCSAgRlRfQWxsb2MgICAgICAgICAgLT4gZnRfbWVtX2FsbG9jCgkgIEZUX1FBbGxvYyAgICAgICAgIC0+IGZ0X21lbV9xYWxsb2MKCSAgRlRfUmVhbGxvYyAgICAgICAgLT4gZnRfbWVtX3JlYWxsb2MKCSAgRlRfUVJlYWxsb2MgICAgICAgLT4gZnRfbWVtX3FyZWFsbG9jCgkgIEZUX0ZyZWUgICAgICAgICAgIC0+IGZ0X21lbV9mcmVlCgkgIEZUX0FsbG9jX0RlYnVnICAgIC0+IGZ0X21lbV9hbGxvY19kZWJ1ZwoJICBGVF9RQWxsb2NfRGVidWcgICAtPiBmdF9tZW1fcWFsbG9jX2RlYnVnCgkgIEZUX1JlYWxsb2NfRGVidWcgIC0+IGZ0X21lbV9yZWFsbG9jX2RlYnVnCgkgIEZUX1FSZWFsbG9jX0RlYnVnIC0+IGZ0X21lbV9xcmVhbGxvY19kZWJ1ZwoJICBGVF9GcmVlX0RlYnVnICAgICAtPiBmdF9tZW1fZnJlZV9kZWJ1ZwoKMjAwNi0wMi0xNSAgQ2hpYS1JIFd1ICA8YjkwMjAxMDQ3QG50dS5lZHUudHc+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0b2Jqcy5oIChGVF9GYWNlX0ludGVybmFsUmVjKTogUmVtb3ZlCgl1bnVzZWQgYG1heF9wb2ludHMnIGFuZCBgbWF4X2NvbnRvdXJzJy4KCgkqIHNyYy9jaWQvY2lkb2Jqcy5jIChjaWRfZmFjZV9pbml0KSwgc3JjL3R5cGUxL3Qxb2Jqcy5jCgkoVDFfRmFjZV9Jbml0KSwgc3JjL3R5cGU0Mi90NDJvYmpzLmMgKFQ0Ml9GYWNlX0luaXQpOiBVcGRhdGUuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3R0dHlwZXMuaCAoVFRfRmFjZVJlYyk6IFJlbW92ZSB1bnVzZWQKCWBtYXhfY29tcG9uZW50cycuCgoJKiBzcmMvdHJ1ZXR5cGUvdHRpbnRlcnAuaCAoVFRfRXhlY0NvbnRleHRSZWMpOiBSZW1vdmUgdW51c2VkCglgbG9hZFNpemUnIGFuZCBgbG9hZFN0YWNrJy4KCgkqIHNyYy90cnVldHlwZS90dGludGVycC5jIChUVF9Eb25lX0NvbnRleHQsIFRUX0xvYWRfQ29udGV4dCksCglzcmMvc2ZudC90dGxvYWQuYyAodHRfZmFjZV9sb2FkX21heHApOiBVcGRhdGUuCgoJKiBzcmMvY2ZmL2NmZm9ianMuaCAoY2ZmX3NpemVfc2VsZWN0KSwgc3JjL3NmbnQvc2Zkcml2ZXIuYwoJKHNmbnRfaW50ZXJmYWNlKSwgc3JjL3RydWV0eXBlL3R0ZHJpdmVyLmMgKHR0X3NpemVfcmVxdWVzdCk6IEZpeAoJY29tcGlsZXIgZXJyb3JzL3dhcm5pbmdzIHdoZW4gVFRfQ09ORklHX09QVElPTl9FTUJFRERFRF9CSVRNQVBTIGlzIG5vdAoJZGVmaW5lZC4KCgkqIHNyYy9zZm50L3R0bXR4LmMgKHR0X2ZhY2VfbG9hZF9obXR4LCB0dF9mYWNlX2dldF9tZXRyaWNzKTogRml4Cglwb3NzaWJsZSBzZWdtZW50IGZhdWx0cyBmb3IgdGhlIG5vbi1GVF9PUFRJTUlaRV9NRU1PUlknZWQgdmVyc2lvbnMuCgkoZmluYWxseSEpCgoKCUZvciBtb3N0IE9wZW5UeXBlIHRhYmxlcywgYHR0X2ZhY2VfbG9hZF94eHh4JyBzaW1wbHkgbG9hZHMgdGhlIHRhYmxlCglhbmQgYGZhY2UtPnJvb3QnIGlzIHNldCBsYXRlciBpbiBgc2ZudF9sb2FkX2ZhY2UnLiAgSGVyZSwgd2UgdHJ5IHRvCgltYWtlIHRoaXMgd29yayBmb3IgX2FsbF8gdGFibGVzLiAgQWxzbyBpbXByb3ZlIHRyYWNpbmcgbWVzc2FnZXMuCgoJKiBzcmMvc2ZudC90dHNiaXQuYywgc3JjL3NmbnQvdHRzYml0MC5jLCBzcmMvc2ZudC90dGxvYWQuYywKCXNyYy9zZm50L3R0bXR4LmM6IGFsbCBgdHRfZmFjZV9sb2FkX3h4eHgnIHNob3VsZCBsb2FkIHRoZSB0YWJsZSBhbmQKCXRoZW4gZXhpdC4gIEVycm9yIGhhbmRsaW5nIG9yIHNldHRpbmcgZmFjZS0+cm9vdCBpcyBkb25lIGxhdGVyIGluCglgc2ZudF9sb2FkX2ZhY2UnLgoKCSogc3JjL3NmbnQvc2ZvYmpzLmMgKHNmbnRfbG9hZF9mYWNlKTogV29yayBoYXJkZXIuCglNYWMgYml0bWFwLW9ubHkgZm9udHMgYXJlIG5vdCBzY2FsYWJsZS4KCUNoZWNrIHRoYXQgYGZhY2UtPmhlYWRlci5Vbml0c19QZXJfRU0nIGlzIG5vdCB6ZXJvLgoJKExPQURfLCBMT0FETV8pOiBFbWl0IHByZXR0eSB0cmFjZSBtZXNzYWdlcy4KCgkqIHNyYy9zZm50L3R0c2JpdDAuYyAodHRfZmFjZV9sb2FkX3N0cmlrZV9tZXRyaWNzKTogUmVhZCBtZXRyaWNzCglmcm9tIGBlYmxjJy4KCgkqIHNyYy9zZm50L3R0Y21hcC5jICh0dF9mYWNlX2J1aWxkX2NtYXBzKSwgc3JjL3NmbnQvdHRwb3N0LmMKCShsb2FkX2Zvcm1hdF8yMCwgbG9hZF9mb3JtYXRfMjUsIHR0X2ZhY2VfZ2V0X3BzX25hbWUpOiBVc2UKCWZhY2UtPm1heF9wcm9maWxlLm51bUdseXBocywgaW5zdGVhZCBvZiBmYWNlLT5yb290Lm51bV9nbHlwaHMuCgoyMDA2LTAyLTE0ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2Z0b3V0bG4uaCAoRlRfT3V0bGluZV9FbWJvbGRlbik6IE1lbnRpb24gaW4KCWRvY3VtZW50YXRpb24gdGhhdCBuZWdhdGl2ZSBzdHJlbmd0aCB2YWx1ZXMgYXJlIHBvc3NpYmxlLgoJR2l2ZSBhbiBleGFtcGxlIGNhbGwuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ZyZWV0eXBlLmggKEZUX0dseXBoU2xvdFJlYyk6IEltcHJvdmUKCWRvY3VtZW50YXRpb24gb2YgYG91dGxpbmUnIGZpZWxkLgoKCSogc3JjL3NmbnQvc2ZvYmpjLnM6IEluY2t1ZGUgRlRfSU5URVJOQUxfREVCVUdfSC4KCSogc3JjL3NmbnQvc2Zkcml2ZXIuYzogSW5jbHVkZSB0dG10eC5oLgoKCSogc3JjL2F1dG9maXQvYWZjamsuYzogSW5jbHVkZSBhZnR5cGVzLmggYW5kIGFmbGF0aW4uaC4KCjIwMDYtMDItMTQgIENoaWEtSSBXdSAgPGI5MDIwMTA0N0BudHUuZWR1LnR3PgoKCSogc3JjL3NmbnQvdHRtdHguYyAodHRfZmFjZV9nZXRfbWV0cmljcyk6IFR5cG8uCgoyMDA2LTAyLTE0ICBDaGlhLUkgV3UgIDxiOTAyMDEwNDdAbnR1LmVkdS50dz4KCgkqIHNyYy9zZm50L3R0bXR4LmMgKHR0X2ZhY2VfbG9hZF9oaGVhLCB0dF9mYWNlX2xvYWRfaG10eCk6IFNpbXBseQoJcmV0dXJuIGVycm9yIGlmIHRhYmxlIGlzIG1pc3NpbmcuCglDaGVjayB0YWJsZSBsZW5ndGggaW4gbm9uLUZUX09QVElNSVpFX01FTU9SWSdlZCBgdHRfZmFjZV9sb2FkX2htdHgnLgoKCSogc3JjL3NmbnQvc2ZvYmpzLmMgKHNmbnRfbG9hZF9mYWNlKTogVGFrZSBjYXJlIG9mIG1pc3NpbmcgbWV0cmljcwoJdGFibGVzLiAgVGhlIGxhc3QgY2hhbmdlIG1ha2VzIE1hYyBiaXRtYXAtb25seSBmb250IG5vdCBsb2FkIGFuZAoJdGhpcyBmaXhlcyBpdC4KCgkqIHNyYy90cnVldHlwZS90dGdsb2FkLmMgKGxvYWRfdHJ1ZXR5cGVfZ2x5cGgpOiBGaXggY29tcGlsYXRpb24KCWVycm9yIHdoZW4gRlRfQ09ORklHX09QVElPTl9JTkNSRU1FTlRBTCBpcyBkZWZpbmVkLgoKMjAwNi0wMi0xMyAgQ2hpYS1JIFd1ICA8YjkwMjAxMDQ3QG50dS5lZHUudHc+CgoJQ2xlYW4gdXAgdGhlIFNGTlRfSW50ZXJmYWNlLiAgSW4gdGhpcyBmaW5hbCBwYXNzLCBgbG9hZF9obXR4JyBpcwoJc3BsaXR0ZWQgZnJvbSBgbG9hZF9oaGVhJy4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvc2ZudC5oLCBzcmMvc2ZudC9zZmRyaXZlci5jLAoJc3JjL3NmbnQvdHRtdHguYywgc3JjL3NmbnQvdHRtdHguaDogU3BsaXQgYGhtdHgnIGZyb20gYGhoZWEnLgoKCSogc3JjL3NmbnQvc2ZvYmpzLmMgKHNmbnRfbG9hZF9mYWNlKTogVXBkYXRlLgoKMjAwNi0wMi0xMyAgQ2hpYS1JIFd1ICA8YjkwMjAxMDQ3QG50dS5lZHUudHc+CgoJKiBzcmMvc2ZudC90dG10eC5oLCBzcmMvc2ZudC90dG10eC5jOiBXaHkgYXJlIHRoZXJlIHR3byBjb3BpZXMgb2YKCWNvZGUuLi4KCjIwMDYtMDItMTMgIENoaWEtSSBXdSAgPGI5MDIwMTA0N0BudHUuZWR1LnR3PgoKCUNsZWFuIHVwIHRoZSBTRk5UX0ludGVyZmFjZS4gIEluIHRoaXMgcGFzcywgd2Ugd2FudCB0byB0cmVhdCB0aGUKCWZvbnQgZGlyZWN0b3J5IChvZmZzZXQgdGFibGUgYW5kIHRhYmxlIGRpcmVjdG9yeSkgYXMgYSBub3JtYWwgdGFibGUKCWxpa2UgdGhlIG90aGVycy4gIFRoaXMgYWxzbyBtZWFucyB0aGF0IFRUQ3MgYXJlIG5vIGxvbmdlciByZWNvZ25pemVkCgl0aGVyZSBidXQgaW4gYGluaXRfZmFjZScuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3NmbnQuaCAoU0ZOVF9JbnRlcmZhY2UpLAoJc3JjL3NmbnQvc2Zkcml2ZXIuYzogYGxvYWRfc2ZudF9oZWFkZXInIGFuZCBgbG9hZF9kaXJlY3RvcnknIGFyZQoJY29tYmluZWQgYW5kIHJlbmFtZWQgdG8gYGxvYWRfZm9udF9kaXInLgoKCSogc3JjL3NmbnQvdHRsb2FkLmgsIHNyYy9zZm50L3R0bG9hZC5jOgoJcy9zZm50X2Rpcl9jaGVjay9jaGVja190YWJsZV9kaXIvLgoJYHNmbnRfaW5pdCcgaXMgbW92ZWQgdG8gc2ZvYmpzLmMgYW5kIHJlbmFtZWQgdG8gYHNmbnRfb3Blbl9mb250Jy4KCWB0dF9mYWNlX2xvYWRfc2ZudF9oZWFkZXInIGFuZCBgdHRfZmFjZV9sb2FkX2RpcmVjdG9yeScgYXJlIGNvbWJpbmVkCglhbmQgcmVuYW1lZCB0byBgdHRfZmFjZV9sb2FkX2ZvbnRfZGlyJy4KCgkqIHNyYy9zZm50L3Nmb2Jqcy5jIChzZm50X2luaXRfZmFjZSk6IFJlY29nbml6ZSBUVEMgaGVyZS4KCjIwMDYtMDItMTMgIENoaWEtSSBXdSAgPGI5MDIwMTA0N0BudHUuZWR1LnR3PgoKCUNsZWFuIHVwIHRoZSBTRk5UX0ludGVyZmFjZS4gIFRhYmxlIGxvYWRpbmcgZnVuY3Rpb25zIGFyZSBub3cgbmFtZWQKCWFmdGVyIHRoZSB0YWJsZXMnIHRhZ3M7IGBoZG14JyBpcyBUcnVlVHlwZS1zcGVjaWZpYyBhbmQgdGh1cyB0aGUKCWNvZGUgaXMgbW92ZWQgdG8gdGhlIHRydWV0eXBlIG1vZHVsZTsgYGdldF9tZXRyaWNzJyBpcyBtb3ZlZCBoZXJlCglmcm9tIHRoZSB0cnVldHlwZSBtb2R1bGUgc28gdGhhdCB0aGUgY29kZSBjYW4gYmUgc2hhcmVkIHdpdGggdGhlIGNmZgoJbW9kdWxlLgoKCVRoaXMgcGFzcyBpbnZvbHZlcyBubyByZWFsIGNoYW5nZXMuICBUaGF0IGlzLCB0aGUgY29kZSBpcyBtb3ZlZAoJdmVyYmF0aW0gbW9zdGx5LiAgVGhlIG9ubHkgZXhjZXB0aW9uIGlzIHRoZSByZXR1cm4gdmFsdWUgb2YKCWB0dF9mYWNlX2dldF9tZXRyaWNzJy4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvc2ZudC5oLCBzcmMvc2ZudC9ydWxlcy5taywKCXNyYy9zZm50L3NmZHJpdmVyLmMsIHNyYy9zZm50L3NmbnQuYywgc3JjL3NmbnQvc2ZvYmpzLmMsCglzcmMvc2ZudC90dGxvYWQuYywgc3JjL3NmbnQvdHRsb2FkLmgsIHNyYy9zZm50L3R0c2JpdC5jLAoJc3JjL3NmbnQvdHRzYml0LmgsIHNyYy9zZm50L3R0c2JpdDAuYzogQ2xlYW4gdXAgdGhlIFNGTlRfSW50ZXJmYWNlLgoKCSogc3JjL3NmbnQvdHRtdHguYywgc3JjL3NmbnQvdHRtdHguaDogTmV3IGZpbGVzLiAgTWV0cmljcy1yZWxhdGVkCgl0YWJsZXMnIGxvYWRpbmcgYW5kIHBhcnNpbmcgY29kZSBpcyBtb3ZlZCB0byBoZXJlLgoJTW92ZSBgdHRfZmFjZV9nZXRfbWV0cmljcycgaGVyZSBmcm9tIHRoZSB0cnVldHlwZSBtb2R1bGUuICBUaGUKCXJldHVybiB2YWx1ZSBpcyBjaGFuZ2VkIGZyb20gYHZvaWQnIHRvIGBGVF9FcnJvcicuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0dHJhY2UuaDogTmV3IHRyYWNlOiB0dG10eC4KCgkqIHNyYy90cnVldHlwZS90dHBsb2FkLmMsIHNyYy90cnVldHlwZS90dHBsb2FkLmg6IGBoZG14JyBsb2FkaW5nIGFuZAoJcGFyc2luZyBjb2RlIGlzIG1vdmVkIGhlcmUuCglOZXcgZnVuY3Rpb24gYHR0X2ZhY2VfbG9hZF9wcmVwJyBzcGxpdHRlZCBmcm9tIGB0dF9mYWNlX2xvYWRfZnBnbScuCglgdHRfZmFjZV9sb2FkX2ZwZ20nIHJldHVybnMgYEZUX0Vycl9PaycgaWYgYGZwZ20nIGRvZXNuJ3QgZXhpc3QuCgoJKiBzcmMvY2ZmL2NmZmdsb2FkLmMsIHNyYy9jZmYvY2Zmb2Jqcy5jOiBVcGRhdGUuCgoJKiBzcmMvdHJ1ZXR5cGUvdHRnbG9hZC5jLCBzcmMvdHJ1ZXR5cGUvdHRvYmpzLmM6IFVwZGF0ZS4KCjIwMDYtMDItMTEgIENoaWEtSSBXdSAgPGI5MDIwMTA0N0BudHUuZWR1LnR3PgoKCSogc3JjL2F1dG9maXQvYWZjamsuYyAoYWZfY2prX21ldHJpY3NfaW5pdCk6IEZpeCBhIHN0dXBpZCBidWcuLi4KCgkqIHNyYy9hdXRvZml0L2FmbGF0aW4uYyAoYWZfbGF0aW5fbWV0cmljc19pbml0X3dpZHRocyk6IFVzZQoJQUZfTGF0aW5NZXRyaWNzUmVjIGFzIHRoZSBkdW1teSBtZXRyaWNzIGJlY2F1c2Ugd2UgY2FzdCB0aGUgbWV0cmljcwoJdG8gaXQgbGF0ZXIgaW4gYGFmX2xhdGluX2hpbnRzX2xpbmtfc2VnbWVudHMnLgoKMjAwNi0wMi0xMSAgQ2hpYS1JIFd1ICA8YjkwMjAxMDQ3QG50dS5lZHUudHc+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdG9wdGlvbi5oIChBRl9DT05GSUdfT1BUSU9OX0NKSyk6ICNkZWZpbmUKCXRvIGVuYWJsZSBhdXRvZml0IENKSyBzY3JpcHQgc3VwcG9ydC4gICgjZGVmaW5lJ2QgYnkgZGVmYXVsdC4pCgoJKiBzcmMvYXV0b2ZpdC9hZmxhdGluLmggKEFGX0xBVElOX0NPTlNUQU5UKTogTmV3IG1hY3JvLgoKCSogc3JjL2F1dG9maXQvYWZsYXRpbi5jIChhZl9sYXRpbl9tZXRyaWNzX2luaXRfd2lkdGhzKTogTWFrZSBzdXJlCgl0aGF0IGBlZGdlX2Rpc3RhbmNlX3RocmVzaG9sZCcgaXMgYWx3YXlzIHNldC4KCShhZl9sYXRpbl9oaW50c19saW5rX3NlZ21lbnRzKTogUG90ZW50aWFsIGRpdmlkZS1ieS16ZXJvIGJ1Zy4KCVVzZSBsYXRpbiBjb25zdGFudCBpbiB0aGUgc2NvcmluZyBmb3JtdWxhLgoKCSogc3JjL2F1dG9maXQvYWZjamsuYzogTWlub3IgdXBkYXRlcyBkdWUgdG8gdGhlIGFib3ZlIHRocmVlIGNoYW5nZXMuCgoJKiBkb2NzL1RPRE8sIGRvY3MvQ0hBTkdFUzogVXBkYXRlZC4KCjIwMDYtMDItMDkgIENoaWEtSSBXdSAgPGI5MDIwMTA0N0BudHUuZWR1LnR3PgoKCUludHJvZHVjZSBleHBlcmltZW50YWwgYXV0b2ZpdCBDSksgbW9kdWxlIGJhc2VkIG9uIGFraXRvJ3MgYXV0b2hpbnQKCXBhdGNoLiAgWW91IG5lZWQgdG8gI2RlZmluZSBBRl9NT0RfQ0pLIGluIGFmY2prLmMgdG8gZW5hYmxlIGl0LgoKCSogc3JjL2F1dG9maXQvYWZnbG9iYWwuYywgc3JjL2F1dG9maXQvYWZjamsuaCwgc3JjL2F1dG9maXQvYWZjamsuYywKCXNyYy9hdXRvZml0L3J1bGVzLm1rLCBzcmMvYXV0b2ZpdC9hdXRvZml0LmMsIHNyYy9hdXRvZml0L2FmdHlwZXMuaDoKCUFkZCBDSksgbW9kdWxlIGJhc2VkIG9uIGFraXRvJ3MgYXV0b2hpbnQgcGF0Y2guCgoJKiBzcmMvYXV0b2ZpdC9hZmhpbnRzLmggKEFGX1NlZ21lbnRSZWMpOiBOZXcgZmllbGQgYGxlbicgZm9yIHRoZQoJb3ZlcmxhcCBsZW5ndGggb2YgdGhlIHNlZ21lbnRzLgoJKEFGX1NFR01FTlRfTEVOLCBBRl9TRUdNRU5UX0RJU1QpOiBOZXcgbWFjcm9zLgoKCSogc3JjL2F1dG9maXQvYWZsYXRpbi5oIChhZl9sYXRpbl9tZXRyaWNzX2luaXRfd2lkdGhzKSwKCXNyYy9hdXRvZml0L2FmbGF0aW4uYyAoYWZfbGF0aW5fbWV0cmljc19pbml0X3dpZHRocyk6IE1hZGUKCWBGVF9MT0NBTCcuCglVc2UgdGhlIGNoYXJhY3RlciBnaXZlbiBieSB0aGUgY2FsbGVyLgoJKGFmX2xhdGluX21ldHJpY3NfaW5pdF93aWR0aHMsIGFmX2xhdGluX2hpbnRzX2xpbmtfc2VnbWVudHMpOiBTY2FsZQoJdGhlIHRocmVzaG9sZHMuCgoJKiBzcmMvYXV0b2ZpdC9hZmxvYWRlci5jIChhZl9sb2FkZXJfbG9hZF9nKTogUmVzcGVjdAoJQUZfU0NBTEVSX0ZMQUdfTk9fQURWQU5DRS4KCjIwMDYtMDItMDkgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9jaWQvY2lkcGFyc2UuYyAoY2lkX3BhcnNlX25ldyk6IFJlbW92ZSBzaGFkb3dpbmcgdmFyaWFibGUuCgoyMDA2LTAyLTA5ICBzdXp1a2kgdG9zaGl5YSAgPG1wc3V6dWtpQGhpcm9zaGltYS11LmFjLmpwPgoKCSogc3JjL2NpZC9jaWRwYXJzZS5jIChjaWRfcGFyc2VfbmV3KTogRml4IGZvciBhYm5vcm1hbGx5IHNob3J0IG9yCglicm9rZW4gQ0lERm9udC4gIFJlcG9ydGVkIGJ5IFRhZWsgS3dhbihUSykgTGVlIChzZWUgZnQtZGV2ZWwKCTIwMDUtMTEtMDIpLgoKMjAwNi0wMi0wOCAgc3V6dWtpIHRvc2hpeWEgIDxtcHN1enVraUBoaXJvc2hpbWEtdS5hYy5qcD4KCgkqIGJ1aWxkcy91bml4L2NvbmZpZ3VyZS5hYzogRml4IGJ1ZyBmb3IgYC0td2l0aC1vbGQtbWFjLWZvbnRzJwoJb3B0aW9uIG9uIFVOSVggcGxhdGZvcm0uICBJdCBoYXMgYmVlbiBicm9rZW4gc2luY2UgMjAwNi0wMS0xMS4KCjIwMDYtMDItMDEgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9vdHZhbGlkL21vZHVsZS5tazogcy9vdHZhbGlkX21vZHVsZV9jbGFzcy9vdHZfbW9kdWxlX2NsYXNzLy4KCSogc3JjL2d4dmFsaWQvbW9kdWxlLm1rOiBzL2d4dmFsaWRfbW9kdWxlX2NsYXNzL2d4dl9tb2R1bGVfY2xhc3MvLgoKCSogYnVpbGRzL3VuaXgvdW5peGRkZWYubWs6IEFjdHVhbGx5IGRvIGRlZmluZSBQTEFURk9STSAoZml4aW5nCgljaGFuZ2UgZnJvbSAyMDA2LTAxLTMxKS4KCShUT1BfRElSLCBPQkpfRElSKTogVXBkYXRlLgoKCSogYnVpbGRzL3VuaXgvaW5zdGFsbC5tayAoaW5zdGFsbCk6IEZpeCBwYXRoIGZvciBmdG1vZHVsZS5oLgoKCSogTWFrZWZpbGUsICoubWssIGJ1aWxkcy91bml4L3VuaXgtY2MuaW4sIGJ1aWxkcy91bml4LWRlZi5pbjogVXNlCglgPz0nIHdoZXJlIGFwcHJvcHJpYXRlLgoKCSogYnVpbGRzL2RldGVjdC5tayAoVE9QX0RJUiksIGJ1aWxkcy9vczIvb3MyLWRldi5tayAoVE9QX0RJUiksCglidWlsZHMvd2luMzIvdzMyLWRldi5tayAoVE9QX0RJUik6IFJlbW92ZWQuICBEZWZpbmVkIGVsc2V3aGVyZS4KCjIwMDYtMDEtMzEgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCglJbXBsZW1lbnQgbmV3LCBzaW1wbGlmaWVkIG1vZHVsZSBzZWxlY3Rpb24uICBXaXRoIEdOVSBtYWtlIGl0IGlzIG5vdwoJc3VmZmljaWVudCB0byBtb2RpZnkgYSBzaW5nbGUgZmlsZSwgYG1vZHVsZXMuY2ZnJywgdG8gY29udHJvbCB0aGUKCWluY2x1c2lvbiBvZiBtb2R1bGVzIGFuZCBiYXNlIGV4dGVuc2lvbiBmaWxlcy4KCglUaGlzIGNoYW5nZSBhbHNvIGZpeGVzIHRoZSBjcmVhdGlvbiBvZiBmdG1vZHVsZS5oOyBpdCBub3cgZGVwZW5kcyBvbgoJYG1vZHVsZXMuY2ZnJyBhbmQgdGh1cyBpcyByZWJ1aWx0IG9ubHkgaWYgbmVjZXNzYXJ5LgoKCUZpbmFsbHksIGEgdmVyc2lvbiBvZiBgZnRvcHRpb24uaCcgaW4gT0JKX0RJUiBpcyBwcmVmZXJyZWQgb3ZlciB0aGUKCWRlZmF1bHQgbG9jYXRpb24uCgoJKiBtb2R1bGVzLmNmZzogTmV3IGZpbGUuCgoJKiBidWlsZHMvZnJlZXR5cGUubWs6IERvbid0IGluY2x1ZGUgYG1vZHVsZXMubWsnLgoJSW5jbHVkZSBhbGwgYHJ1bGVzLm1rJyBmaWxlcyBhcyBzcGVjaWZpZWQgaW4gYG1vZHVsZXMuY2ZnJy4KCShGVE9QVElPTl9GTEFHLCBGVE9QVElPTl9IKTogTmV3IHZhcmlhYmxlcy4KCShGVF9DRkxBR1MpOiBBZGQgbWFjcm8gZGVmaW5pdGlvbiBmb3IgRlRfQ09ORklHX01PRFVMRVNfSC4KCUFkZCBGVE9QVElPTl9GTEFHLgoJKCQoRlRfSU5JVF9PQkopKTogRG9uJ3QgdXNlIEZUX01PRFVMRV9MSVNULgoJKENPTkZJR19IKTogQWRkIEZUTU9EVUxFX0ggYW5kIEZUT1BUSU9OX0guCgkoSU5DTFVERVMpOiBBZGQgREVWRUxfRElSLgoJKElOQ0xVREVfRkxBR1MsIEZUU1lTX1NSQywgRlRTWVNfT0JKLCBGVERFQlVHX1NSQywgRlRERUJVR19PQkosCglPQkpfTSwgT0JKX1MpOiBVc2UgYDo9Jywgbm90IGA9Jy4KCShyZW1vdmVfZnRtb2R1bGVfaCk6IE5ldyBwaG9ueSB0YXJnZXQgdG8gZGVsZXRlIGBmdG1vZHVsZS5oJy4KCShkaXN0Y2xlYW4pOiBBZGQgcmVtb3ZlX2Z0bW9kdWxlX2guCgoJKiBidWlsZHMvbW9kdWxlcy5tazogKE1PRFVMRV9MSVNUKTogUmVtb3ZlZC4KCShtYWtlX21vZHVsZV9saXN0LCBjbGVhbl9tb2R1bGVfbGlzdCk6IFJlcGxhY2UgdGFyZ2V0cwoJd2l0aC4uLgoJKEZUTU9EVUxFX0hfSU5JVCwgRlRNT0RVTEVfSF9DUkVBVEUsIEZUTU9EVUxFX0hfRE9ORSk6IE5ldwoJdmFyaWFibGVzLiAgUmVhc29uIGZvciB0aGUgY2hhbmdlIGlzIHRoYXQgaXQgaXMgbm90IHBvc3NpYmxlIHRvIGhhdmUKCWEgcGhvbnkgcHJlcmVxdWlzaXRlIHdoaWNoIGlzIHJ1biBvbmx5IGlmIHRoZSB0YXJnZXQgZmlsZSBtdXN0IGJlCglyZWJ1aWx0IChwaG9ueSBwcmVyZXF1aXNpdGVzIGFjdCBsaWtlIHN1YnJvdXRpbmVzIGFuZCBhcmUgKmFsd2F5cyoKCWV4ZWN1dGVkKS4gIFdlIG9ubHkgd2FudCB0byByZWJ1aWxkIGBmdG1vZHVsZS5oJyBpZiBgbW9kdWxlLmNmZycgaXMKCWNoYW5nZWQuCglVcGRhdGUgYWxsIGNhbGxlcnMuCgkoJEZUTU9EVUxFX0gpKTogUnVsZSB0byBjcmVhdGUgYGZ0bW9kdWxlLmgnLCBkZXBlbmRpbmcgb24KCWBtb2R1bGVzLmNmZycuCgoJKiBidWlsZHMvdG9wbGV2ZWwubWs6IFJld3JpdGUgYW5kIHNpbXBsaWZ5IG1vZHVsZSBoYW5kbGluZy4KCShNT0RVTEVTX0NGRywgRlRNT0RVTEVfSCk6IE5ldyB2YXJpYWJsZXMuCglJbmNsdWRlIE1PRFVMRVNfQ0ZHLgoJKE1PRFVMRVMpOiBOZXcgdmFyaWFibGUgdG8gaW5jbHVkZSBhbGwgYG1vZHVsZS5taycgYW5kIGBydWxlcy5taycKCWZpbGVzLiAgV2Ugbm8gbG9uZ2VyIHVzZSBtYWtlJ3MgYHdpbGRjYXJkJyBmdW5jdGlvbiBmb3IgdGhpcy4KCgkqIE1ha2VmaWxlIChVU0VfTU9EVUxFUyk6IFJlbW92ZS4gIFVwZGF0ZSBhbGwgdXNlcnMuCgkoT0JKX0RJUik6IERlZmluZSBpdCBoZXJlLgoKCSogc3JjLyovbW9kdWxlLm1rOiBDaGFuZ2UKCgkgICAgbWFrZV9tb2R1bGVfbGlzdDogZm9vCgkgICAgZm9vOiAuLi4KCgl0bwoKCSAgICBGVE1PRFVMRV9IX0NPTU1BTkRTICs9IEZPTwoJICAgIGRlZmluZSBGT08KCSAgICAuLi4KCSAgICBlbmRlZgoKCWluIGFsbCBmaWxlcy4gIGBGVE1PRFVMRV9IX0NPTU1BTkRTJyBpcyB1c2VkIGluIGBGVE1PRFVMRV9IX0NSRUFURScuCgoJKiBzcmMvYmFzZS9ydWxlcy5tayAoQkFTRV9FWFRfU1JDKTogVXNlIEJBU0VfRVhURU5TSU9OUy4KCgkqIGJ1aWxkcy91bml4L2RldGVjdC5tayAoc2V0dXApOiBBbHdheXMgZXhlY3V0ZSBgY29uZmlndXJlJyBzY3JpcHQuCgkoaGF2ZV9tayk6IFJlbmFtZSB0by4uLgoJKGhhdmVfTWFrZWZpbGUpOiBUaGlzLgoJRG9uJ3QgdXNlIGBzdHJpcCcgZnVuY3Rpb24uCgoJKiBidWlsZHMvdW5peC91bml4Lm1rOiBJbmNsdWRlIGBpbnN0YWxsLm1rJyBvbmx5IGlmIEJVSUxEX1BST0pFQ1QgaXMKCWRlZmluZWQuCgkoaGF2ZV9tayk6IERvbid0IHVzZSBgc3RyaXAnIGZ1bmN0aW9uLgoJVGVzdCBmb3IgdW5peC1kZWYubWsgaW4gT0JKX0RJUiwgbm90IEJVSUxEX0RJUiAoYW5kIGludmVydCB0aGUgdGVzdAoJYWNjb3JkaW5nbHkpLgoKCSogYnVpbGRzL3VuaXgvaW5zdGFsbC5tayAoaW5zdGFsbCwgdW5pbnN0YWxsKTogSGFuZGxlIGBmdG1vZHVsZS5oJy4KCgkqIGJ1aWxkcy9vczIvb3MyLWRldi5taywgYnVpbGRzL3VuaXgvdW5peC1kZXYubWssCglidWlsZHMvd2luMzIvdzMyLWJjY2QubWssIGJ1aWxkcy93aW4zMi93MzItZGV2Lm1rOiBEb24ndCBkZWZpbmUKCUJVSUxEX0RJUiBidXQgREVWRUxfRElSIGZvciBkZXZlbG9wbWVudCBoZWFkZXIgZmlsZXMuCgoJKiBidWlsZHMvYW5zaS9hbnNpLWRlZi5tayAoVE9QX0RJUiwgT0JKX0RJUiksCglidWlsZHMvYmVvcy9iZW9zLWRlZi5tayAoVE9QX0RJUiwgT0JKX0RJUiksIGJ1aWxkcy91bml4L3VuaXgtZGVmLmluCgkoVE9QX0RJUiwgT0JKX0RJUik6IFJlbW92ZWQuICBEZWZpbmVkIGVsc2V3aGVyZS4KCgkqIGJ1aWxkcy9kb3MvZG9zLWRlZi5tayAoT0JKX0RJUiksIGJ1aWxkcy9vczIvb3MyLWRlZi5tayAoT0JKX0RJUiksCglidWlsZHMvd2luMzIvd2luMzItZGVmLm1rIChPQkpfRElSKTogUmVtb3ZlZC4gIERlZmluZWQgZWxzZXdoZXJlLgoKCSogYnVpbGRzL3VuaXgvdW5peGRkZWYubWs6IERvbid0IGRlZmluZSBCVUlMRF9ESVIgYnV0IERFVkVMX0RJUiBmb3IKCWRldmVsb3BtZW50IGhlYWRlciBmaWxlcy4KCURvbid0IGRlZmluZSBQTEFURk9STS4KCgkqIGNvbmZpZ3VyZTogQ29weSBgbW9kdWxlcy5jZmcnIHRvIGJ1aWxkZGlyIGlmIGJ1aWxkZGlyICE9IHNyY2Rpci4KCVVwZGF0ZSBzbmlwcGV0IHRha2VuIGZyb20gYXV0b2NvbmYncyBtNHNoLm00IHRvIGN1cnJlbnQgQ1ZTIHZlcnNpb24uCglCZSBtb3JlIHZlcmJvc2UuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdG1vZHVsZS5oOiBBZGQgY29tbWVudHMgLS0gdGhpcyBmaWxlIGlzCglubyBsb25nZXIgdXNlZCBpZiBGcmVlVHlwZSBpcyBidWlsdCB3aXRoIEdOVSBtYWtlLgoKCSogZG9jcy9DSEFOR0VTLCBkb2NzL0NVU1RPTUlaRSwgZG9jcy9JTlNUQUxMLCBkb2NzL0lOU1RBTEwuQU5ZLAoJZG9jcy9JTlNUQUxMLkdOVSwgZG9jcy9JTlNUQUxMLlVOWDogRG9jdW1lbnQgbmV3IGJ1aWxkIG1lY2hhbmlzbS4KCU90aGVyIG1pbm9yIHVwZGF0ZXMuCgoJKiBtb2R1bGVzLnR4dDogUmVtb3ZlZC4gIENvbnRlbnRzIGluY2x1ZGVkIGluIGBtb2R1bGVzLmNmZycuCgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdG1lbW9yeS5oIChGVF9RQWxsb2NfRGVidWcsCglGVF9GcmVlX0RlYnVnKSBbRlRfU1RSSUNUX0FMSUFTSU5HXTogRml4IHR5cG9zLgoKCSogc3JjL2Jhc2UvZnRkYmdtZW0uYyAoRlRfQWxsb2NfRGVidWcsIEZUX1JlYWxsb2NfRGVidWcsCglGVF9RQWxsb2NfRGVidWcsIEZUX1FSZWFsbG9jX0RlYnVnLCBGVF9GcmVlX0RlYnVnKQoJW0ZUX1NUUklDVF9BTElBU0lOR106IEltcGxlbWVudC4KCjIwMDYtMDEtMzEgIENoaWEtSSBXdSAgPGI5MDIwMTA0N0BudHUuZWR1LnR3PgoKCSogc3JjL2NmZi9jZmZvYmpzLmMgKGNmZl9mYWNlX2luaXQpLCBzcmMvY2lkL2NpZG9ianMuYwoJKGNpZF9mYWNlX2luaXQpLCBzcmMvcGZyL3Bmcm9ianMuYyAocGZyX2ZhY2VfaW5pdCksCglzcmMvdHlwZTEvdDFvYmpzLmMgKFQxX0ZhY2VfSW5pdCk6IFNldCBmYWNlLT5oZWlnaHQgdG8gTUFYKDEuMiAqCgl1bml0c19wZXJfRU0sIGFzY2VuZGVyIC0gZGVzY2VuZGVyKS4KCjIwMDYtMDEtMzEgIENoaWEtSSBXdSAgPGI5MDIwMTA0N0BudHUuZWR1LnR3PgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC90MXR5cGVzLmggKEFGTV9Gb250SW5mbyksCglzcmMvcHNhdXgvYWZtcGFyc2UuYywgc3JjL3Rvb2xzL3Rlc3RfYWZtLmM6IFJlYWQgYEZvbnRCQm94JywKCWBBc2NlbmRlcicsIGFuZCBgRGVzY2VuZGVyJyBmcm9tIGFuIEFGTS4KCgkqIHNyYy90eXBlMS90MWFmbS5jIChUMV9SZWFkX01ldHJpY3MpOiBVc2UgdGhlIG1ldHJpY3MgZnJvbSB0aGUgQUZNLgoKCSogaW5jbHVkZS9mcmVldHlwZS9mcmVldHlwZS5oIChGVF9GYWNlUmVjKTogTWVudGlvbiB0aGF0IGZpZWxkcyBtYXkKCWJlIGNoYW5nZWQgYWZ0ZXIgZmlsZSBhdHRhY2htZW50LgoKMjAwNi0wMS0yOCAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjLyovbW9kdWxlLm1rICguUEhPTlkpOiBBZGQuCgoyMDA2LTAxLTI3ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBSRUFETUUsIGRvY3MvRlRMLlRYVDogRml4IGVtYWlsIGFkZHJlc3MgZm9yIGJ1ZyByZXBvcnRzLgoJT3RoZXIgbWlub3IgZm9ybWF0dGluZy4KCgkqIGRldmVsL2Z0b3B0aW9uLmg6IFN5bmNocm9uaXplIHdpdGgKCWluY2x1ZGUvZnJlZXR5cGUvY29uZmlnL2Z0b3B0aW9uLmguCgoJKiBzcmMvYXV0b2ZpdC9tb2R1bGUubWsgKGFkZF9hdXRvZml0X21vZHVsZSksIHNyYy9iZGYvbW9kdWxlLm1rCgkoYWRkX2JkZl9tb2R1bGUpLCBzcmMvdHlwZTQyL21vZHVsZS5tayAoYWRkX3R5cGU0Ml9kcml2ZXIpOiBGaXgKCXdoaXRlc3BhY2UuCgoJKiBzcmMvc21vb3RoL21vZHVsZS5tayAoYWRkX3Ntb290aF9yZW5kZXJlcik6IEFkZCBsY2QgYW5kIGxjZHYKCXJlbmRlcmVyIGNsYXNzZXMuCgoyMDA2LTAxLTI3ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBidWlsZHMvdW5peC9jb25maWd1cmUuYWM6IEZpeCBidWlsZCBwcm9ibGVtIG9uIEN5Z3dpbi4KCgkqIGJ1aWxkcy91bml4L2luc3RhbGwubWsgKGluc3RhbGwpOiBEb24ndCBpbnN0YWxsIHRoZSBpbnRlcm5hbAoJaGVhZGVycywgYW5kIHJlbW92ZSBleGlzdGluZyBvbmVzIGlmIGZvdW5kIGluIHRoZSB0YXJnZXQgaW5zdGFsbAoJZGlyZWN0b3J5LgoKCSogc3JjL2F1dG9maXQvYWZ3YXJwLmM6IEFkZCBzaW1wbGUgI2lmZGVmIHRvIHByZXZlbnQgY29tcGlsYXRpb24KCWlmIHRoZSB3YXJwIGhpbnRlciBpc24ndCBhY3RpdmUgKGl0IHNob3VsZG4ndCwgc3RpbGwgZXhwZXJpbWVudGFsKS4KCgkqIEphbWZpbGUsIGluY2x1ZGUvZnJlZXR5cGUvY29uZmlnL2Z0bW9kdWxlLmg6IFJlbW92ZSBgZ3h2YWxpZCcKCWFuZCBgb3R2YWxpZCcgZnJvbSB0aGUgbGlzdCBvZiBtb2R1bGVzIHRoYXQgYXJlIGxpbmtlZCBzdGF0aWNhbGx5Cgl0byBhIGdpdmVuIEZyZWVUeXBlIGxpYnJhcnkuICBGdW5jdGlvbmFsaXR5IGhhcyBiZWVuIG1vdmVkIHRvIHRoZQoJYGZ0dmFsaWQnIENWUyBtb2R1bGUuCgoJTm90ZSBhbHNvIHRoYXQgY3VycmVudCBNYWtlLWJhc2VkIGJ1aWxkIHN5c3RlbSBzdGlsbCBjb21waWxlcyB0aGUKCW1vZHVsZXMgdGhvdWdoLgoKCSogaW5jbHVkZS9mcmVldHlwZS9jb25maWcvZnRvcHRpb24uaCAoRlRfU1RSSUNUX0FMSUFTSU5HKTogTmV3IG1hY3JvCgl3aGljaCBjb250cm9scyB0aGUgZGVmaW5pdGlvbnMgb2YgdGhlIG1lbW9yeSBtYW5hZ2VtZW50IGZ1bmN0aW9ucyB0bwoJYXZvaWQgd2FybmluZ3Mgd2l0aCByZWNlbnQgdmVyc2lvbnMgb2YgR0NDLiAgVGhpcyBtYWNybyBpcyBvbmx5IGhlcmUKCXRvIGJlIGRpc2FibGVkLCBpbiBjYXNlIHdlIGRldGVjdCBwcm9ibGVtcyB3aXRoIHRoZSBuZXcgc2NoZW1lLgoKCU5PVEU6IERpc2FibGUgbWFjcm8gdG8gdXNlIHRoZSBtZW1vcnkgZGVidWdnZXIgLS0gdGhpcyB3aWxsIGJlIGZpeGVkCgkgICAgICBsYXRlciEKCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRtZW1vcnkuaCwgc3JjL2Jhc2UvZnR1dGlsLmMgKEZUX0FsbG9jLAoJRlRfUUFsbG9jLCBGVF9SZWFsbG9jLCBGVF9RUmVhbGxvYywgRlRfRnJlZSkgW0ZUX1NUUklDVF9BTElBU0lOR106CglOZXcgdmVyc2lvbnMuCgoKCSogYnVpbGRzL3dpbjMyL3Zpc3VhbGMvZnJlZXR5cGUuZHNwOiBVcGRhdGluZyBwcm9qZWN0IGZpbGUgdG8KCWRlZmluZSBGVDJfQlVJTERfTElCUkFSWSwgYW5kIHJlbW92ZSBneHZhbGlkICsgb3R2YWxpZCBtb2R1bGVzIGZyb20KCWNvbXBpbGF0aW9uLgoKCgkqIGJ1aWxkcy9mcmVldHlwZS5tayAoRlRfQ0ZMQUdTKSwgSmFtZmlsZSAoREVGSU5FUyk6IERlZmluZSB0aGUKCW1hY3JvIEZUMl9CVUlMRF9MSUJSQVJZIHdoZW4gY29tcGlsaW5nIHRoZSBsaWJyYXJ5LgoKCSogaW5jbHVkZS9mcmVldHlwZS9jb25maWcvZnRoZWFkZXIuaDogUmVtb3ZlIGluY2x1c2lvbnMgb2YgaW50ZXJuYWwKCWhlYWRlcnMgZXhjZXB0IGlmIHRoZSBtYWNybyBGVDJfQlVJTERfTElCUkFSWSBpcyBkZWZpbmVkLgoKCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvcHNhdXguaCAoQUZNX0tlcm5QYWlyLCBBRk1fVHJhY2tLZXJuLAoJQUZNX0ZvbnRJbmZvKTogTW92ZSBzdHJ1Y3R1cmUgZGVjbGFyYXRpb25zIHRvLi4uCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvdDF0eXBlcy5oOiBUaGlzIGZpbGUuCgoKCSogKG1hbnkgZmlsZXMpOiBGaXggY29tcGlsZXIgd2FybmluZ3MuCglWYXJpb3VzIG1pbm9yIHJlb3JnYW5pemF0aW9ucy4KCgoJKiBzcmMvY2ZmL2NmZmxvYWQuYyAoY2ZmX2ZvbnRfZG9uZSk6IERvbid0IGZyZWUgc3RhdGljIGFycmF5Cglgc3ViZm9udHMnLgoKCSogc3JjL290dmFsaWQvb3R2Y29tbW4uYyAob3R2X0NsYXNzRGVmX3ZhbGlkYXRlKSwKCXNyYy9vdHZhbGlkL290dmdwb3MuYyAob3R2X3hfc3h5KTogRml4IGRlYnVnZ2luZyBpbmZvcm1hdGlvbi4KCgoJR2V0IHJpZCBvZiB3cml0YWJsZSBzdGF0aWMgdmFyaWFibGVzIChpLmUuLCB0aGUgc3RyaW5nIHRhYmxlKSBpbgoJYWZtcGFyc2UsIGFuZCBmaXggY29tcGlsYXRpb24gaW4gRlQyX01VTFRJIG1vZGUuCgoJKiBzcmMvcHNhdXgvYWZtcGFyc2UuYzogSW5jbHVkZSBmdDJidWlsZC5oIGFuZCBGVF9GUkVFVFlQRV9ILgoJKEFGTV9NQVhfQVJHVU1FTlRTKTogRGVmaW5lLi4uCgkqIHNyYy9wc2F1eC9hZm1wYXJzZS5oOiBIZXJlLgoJKiBzcmMvcHNhdXgvSmFtZmlsZSAoX3NvdXJjZXMpOiBBZGQgYWZtcGFyc2UuCgoJKiBzcmMvcHNhdXgvcHNjb252LmM6IEluY2x1ZGUgcHNjb252LmguCgoJKiBzcmMvdHlwZTEvdDFhZm0uYzogRG9uJ3QgaW5jbHVkZSBGVF9JTlRFUk5BTF9UWVBFMV9UWVBFU19IIGJ1dAoJRlRfSU5URVJOQUxfUE9TVFNDUklQVF9BVVhfSC4KCSogc3JjL3R5cGUxL3QxYWZtLmg6IEluY2x1ZGUgRlRfSU5URVJOQUxfVFlQRTFfVFlQRVNfSC4KCjIwMDYtMDEtMjMgIENoaWEtSSBXdSAgPGI5MDIwMTA0N0BudHUuZWR1LnR3PgoKCSogaW5jbHVkZS9mcmVldHlwZS9mcmVldHlwZS5oIChGVF9TZWxlY3RfU2l6ZSk6IFJlbmFtZSB0aGUgc2Vjb25kCglhcmd1bWVudCBmcm9tIGBpZHgnIHRvIGBzdHJpa2VfaW5kZXgnLgoJKEZUX1NpemVfUmVxdWVzdF9UeXBlKTogQWRkIEZUX1NJWkVfUkVRVUVTVF9UWVBFX01BWCB0byB0aGUgZW5kIG9mCgl0aGlzIGVudW0uCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0b2Jqcy5oIChGVF9SRVFVRVNUX1dJRFRILAoJRlRfUkVRVUVTVF9IRUlHSFQpOiBOZXcgbWFjcm9zIHRvIGdldCB0aGUgd2lkdGggYW5kIGhlaWdodCBvZiBhCglyZXF1ZXN0LCBpbiBmcmFjdGlvbmFsIHBpeGVscy4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRvYmpzLmggKEZUX1NlbGVjdF9NZXRyaWNzLAoJRlRfUmVxdWVzdF9NZXRyaWNzKSwgc3JjL2Jhc2UvZnRvYmpzLmMgKEZUX1NlbGVjdF9NZXRyaWNzLAoJRlRfUmVxdWVzdF9NZXRyaWNzKTogTmV3IGJhc2UgZnVuY3Rpb25zIHRvIHNldCB0aGUgZm9udCBtZXRyaWNzLiAgVGhleQoJd2VyZSBwYXJ0IG9mIEZUX1NlbGVjdF9TaXplL0ZUX1JlcXVlc3RfU2l6ZSBhbmQgYXJlIG1hZGUgaW5kZXBlbmRlbnQKCWZ1bmN0aW9ucyBzbyB0aGF0IG1ldHJpY3MgYXJlIG5vdCBzZXQgYWdhaW4gYW5kIGFnYWluLgoKCSogc3JjL2Jhc2UvZnRvYmpzLmMgKEZUX1NlbGVjdF9TaXplLCBGVF9SZXF1ZXN0X1NpemUpOiBNZXRyaWNzIGFyZSBzZXQKCW9ubHkgd2hlbiBkcml2ZXIncyBzaXplX3NlbGVjdC9zaXplX3JlcXVlc3QgaXMgTlVMTC4gIFRoYXQgaXMsIGRyaXZlcnMKCXNob3VsZCBzZXQgdGhlIG1ldHJpY3MgdGhlbXNlbHZlcy4KCShGVF9NYXRjaF9TaXplKTogUm91bmQgYmVmb3JlIG1hdGNoaW5nLiAgVGhpcyB3YXMgd2hhdCB3ZSBkaWQgYW5kIGl0Cglkb2VzIGNhdXNlIHNvbWUgcHJvYmxlbXMgd2l0aG91dCByb3VuZGluZy4KCgkqIHNyYy9jZmYvY2Zmb2Jqcy5jIChjZmZfc2l6ZV9zZWxlY3QpLCBzcmMvdHJ1ZXR5cGUvdHRkcml2ZXIuYwoJKHR0X3NpemVfc2VsZWN0KTogU2V0IHRoZSBmb250IG1ldHJpY3MuCglzL2luZGV4L3N0cmlrZV9pbmRleC8uCglUaGUgc2NhbGVkIG1ldHJpY3MgYXJlIGFsd2F5cyBwcmVmZXJyZWQgb3ZlciBzdHJpa2VzJyBtZXRyaWNzLCBldmVuCgl3aGVuIHNvbWUgc3RyaWtlIGlzIHNlbGVjdGVkLiAgVGhpcyBpcyBkb25lIGJlY2F1c2UgdGhlIHN0cmlrZXMnCgltZXRyaWNzIGFyZSBub3QgcmVsaWFibGUsIGUuZy4sIHRoZSBzaWduIG9mIHRoZSBkZXNjZW5kZXIgaXMgd3JvbmcgZm9yCglzb21lIGZvbnRzLgoKCSogc3JjL2NmZi9jZmZvYmpzLmMgKGNmZl9zaXplX3JlcXVlc3QpLCBzcmMvdHJ1ZXR5cGUvdHRkcml2ZXIuYwoJKHR0X3NpemVfcmVxdWVzdCk6IFNldCB0aGUgZm9udCBtZXRyaWNzLgoJQ2FsbCBjZmZfc2l6ZV9zZWxlY3QvdHRfc2l6ZV9zZWxlY3Qgd2hlbiBzb21lIHN0cmlrZSBpcyBtYXRjaGVkLgoKCSogc3JjL2JkZi9iZGZkcml2ci5jLCBzcmMvY2ZmL2NmZm9ianMuYywgc3JjL2NpZC9jaWRvYmpzLmMsCglzcmMvcGNmL3BjZmRyaXZyLmMsIHNyYy90cnVldHlwZS90dGRyaXZlci5jLCBzcmMvdHlwZTEvdDFvYmpzLmMsCglzcmMvdHlwZTEvdDFvYmpzLmgsIHNyYy90eXBlNDIvdDQyb2Jqcy5jLCBzcmMvd2luZm9udHMvd2luZm50LmM6CglTZXQgdGhlIGZvbnQgbWV0cmljcy4KCXMvaW5kZXgvc3RyaWtlX2luZGV4Ly4KCgkqIHNyYy90b29scy90ZXN0X2FmbS5jLCBzcmMvcHNhdXgvcHNjb252LmM6IE9sZGVyIHZlcnNpb25zIG9mIHRoZXNlCglmaWxlcyB3ZXJlIGNvbW1pdHRlZC4gIEp1c3QgYSBjYXRjaC11cC4KCShQU19Db252X1RvRml4ZWQpOiBSZW1vdmUgdGhlIGBnb3RvJy4KCShQU19Db252X0FTQ0lJSGV4RGVjb2RlLCBQU19Db252X0VleGVjRGVjb2RlKTogU3BlZWQgdXAgYSBsaXR0bGUuCgoJKiBzcmMvc2ZudC90dHNiaXQuYyAodHRfZmFjZV9sb2FkX3NiaXRfc3RyaWtlcywKCXR0X2ZhY2VfbG9hZF9zdHJpa2VfbWV0cmljcyksIHNyYy9zZm50L3R0c2JpdDAuYwoJKHR0X2ZhY2VfbG9hZF9zYml0X3N0cmlrZXMsIHR0X2ZhY2VfbG9hZF9zdHJpa2VfbWV0cmljcyk6IFRoZQoJYWR2ZXJ0aXNlZCBtZXRyaWNzIGluIGBhdmFpbGFibGVfc2l6ZXMnIGFyZSBkaWZmZXJlbnQgZnJvbSB0aG9zZQoJYWN0dWFsbHkgdXNlZC4KCjIwMDYtMDEtMjMgIENoaWEtSSBXdSAgPGI5MDIwMTA0N0BudHUuZWR1LnR3PgoKCSogc3JjL3BzYXV4L3BzYXV4LmMgc3JjL3BzYXV4L3BzYXV4bW9kLmMgc3JjL3R5cGUxL3QxZHJpdmVyLmM6IE1ha2UKCUFGTSBwYXJzZXIgb3B0aW9uYWwsIGNvbnRyb2xsZWQgYnkgYFQxX0NPTkZJR19PUFRJT05fTk9fQUZNJy4KCjIwMDYtMDEtMjIgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGJ1aWxkcy91bml4L2luc3RhbGwtc2gsIGJ1aWxkcy91bml4L21raW5zdGFsbGRpcnM6IFVwZGF0ZWQgZnJvbQoJYHRleGluZm8nIENWUyBtb2R1bGUgYXQgc2F2YW5uYWguZ251Lm9yZy4KCjIwMDYtMDEtMjEgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9hdXRvZml0L3J1bGVzLm1rIChBVVRPRl9EUlZfU1JDKTogQWRkIGFmd2FycC5jLgoKCSogc3JjL2F1dG9maXQvYWZsb2FkZXIuYyAoYWZfbG9hZGVyX2xvYWRfZyk6IE1vdmUgQUZfVVNFX1dBUlBFUiB1cAoJdG8gYXZvaWQgY29tcGlsZXIgd2FybmluZ3MuCgoJKiBzcmMvYXV0b2ZpdC9hZndhcnAuYyAoYWZfd2FycGVyX2NvbXB1dGVfbGluZV9iZXN0KTogUmVtb3ZlCglzaGFkb3dpbmcgdmFyaWFibGUgZGVjbGFyYXRpb25zLgoJRml4IHdhcm5pbmcgcGFyYW1ldGVycyBhbmQgcmVwbGFjZSBwcmludGYgd2l0aCBBRl9MT0cuCgkoYWZfd2FycGVyX2NvbXB1dGUpOiBSZW1vdmUgdW51c2VkIHZhcmlhYmxlLgoKMjAwNi0wMS0yMCAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCUFkZGluZyBleHBlcmltZW50YWwgaW1wbGVtZW50YXRpb24gb2YgYHdhcnAgaGludGluZycgKG5ldyBoaW50aW5nCglhbGdvcml0aG0gZm9yIGdyYXktbGV2ZWwgYW5kIExDRCByZW5kZXJpbmcpLiAgSXQgaXMgZGlzYWJsZWQgYnkKCWRlZmF1bHQsIHlvdSBuZWVkIHRvICNkZWZpbmUgQUZfVVNFX1dBUlBFUiBpbiBhZnR5cGVzLmguCgoJKiBzcmMvYXV0b2ZpdC9hZmhpbnRzLmMgKGFmX2dseXBoX2hpbnRzX3NjYWxlX2RpbSkgW0FGX1VTRV9XQVJQRVJdOgoJTmV3IGZ1bmN0aW9uLgoJKiBzcmMvYXV0b2ZpdC9hZmhpbnRzLmg6IFVwZGF0ZWQuCgoJKiBzcmMvYXV0b2ZpdC9hZmxhdGluLmMgW0FGX1VTRV9XQVJQRVJdOiBJbmNsdWRlIGFmd2FycC5oLgoJKGFmX2xhdGluX2hpbnRzX2luaXQpIFtBRl9VU0VfV0FSUEVSXTogUmVzZXQgbW9kZSB0bwoJRlRfUkVOREVSX01PREVfTk9STUFMIGlmIGFuIExDRCBtb2RlIGlzIHNlbGVjdGVkLgoJKGFmX2xhdGluX2hpbnRzX2FwcGx5KSBbQUZfVVNFX1dBUlBFUl06IENhbGwgYWZfd2FycGVyX2NvbXB1dGUKCWFwcHJvcHJpYXRlbHkuCgoJKiBzcmMvYXV0b2ZpdC9hZmxvYWRlci5jIChhZl9sb2FkZXJfbG9hZF9nKSBbIUFGX1VTRVJfV0FSUEVSXToKCUlzb2xhdGUgY29kZSBmb3IgYWRqdXN0aW5nIG1ldHJpY3MuCgoJKiBzcmMvYXV0b2ZpdC9hZnR5cGVzLmggKEFGX1VTRV9XQVJQRVIpOiBOZXcgbWFjcm8gKGNvbW1lbnRlZCBvdXQgYnkKCWRlZmF1bHQpLgoKCSogc3JjL2F1dG9maXQvYWZ3YXJwLmMsIHNyYy9hdXRvZml0L2Fmd2FycC5oOiBOZXcgZmlsZXMuCgoJKiBzcmMvYXV0b2ZpdC9hdXRvZml0LmMgW0FGX1VTRV9XQVJQRVJdOiBJbmNsdWRlIGFmd2FycC5jLgoKCSogc3JjL2F1dG9maXQvSmFtZmlsZSAoX3NvdXJjZXMpOiBBZGQgYWZ3YXJwLgoKMjAwNi0wMS0xOSAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogc3JjL3NmbnQvdHRzYml0MC5jICh0dF9mYWNlX2xvYWRfc3RyaWtlX21ldHJpY3MpOiBGaXggc21hbGwgYnVnCgl0aGF0IHByZXZlbnRlZCBjb21waWxhdGlvbiB3aGVuIEZUX09QVElNSVpFX01FTU9SWSBpcyBkZWZpbmVkLgoKMjAwNi0wMS0xOSAgQnJpYW4gV2VlZCAgPGJ3QGltYWdpbmVuZ2luZS5jb20+CgoJKiBidWlsZHMvd2luMzIvdmlzdWFsYy9mcmVldHlwZS5kc3A6IFVwZGF0ZWQuCgoyMDA2LTAxLTE3ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJVXNlIHBzY21hcCBzZXJ2aWNlIGluIENGRiBtb2R1bGUuCgoJKiBzcmMvY2ZmL2NmZmNtYXAuYyAoY2ZmX2NtYXBfdW5pX3BhaXJfY29tcGFyZSk6IFJlbW92ZWQuCgkoY2ZmX3NpZF90b19nbHlwaF9uYW1lKTogTmV3IGZ1bmN0aW9uLgoJKGNmZl9jbWFwX3VuaWNvZGVfaW5pdCwgY2ZmX2NtYXBfdW5pY29kZV9kb25lLAoJY2ZmX2NtYXBfdW5pY29kZV9jaGFyX2luZGV4LCBjZmZfY21hcF91bmljb2RlX2NoYXIgbmV4dCk6IFVzZSBwc2NtYXAKCXNlcnZpY2UuCgkoY2ZmX2NtYXBfdW5pY29kZV9jbGFzc19yZWMpOiBVcGRhdGVkLgoJKiBzcmMvY2ZmL2NmZmNtYXAuaCAoQ0ZGX0NNYXBVbmljb2RlLCBDRkZfQ01hcF9VbmlQYWlyKTogUmVtb3ZlZC4KCgoJKiBzcmMvcHNuYW1lcy9wc21vZHVsZS5jIChwc191bmljb2Rlc19jaGFyX25leHQpOiBGaXggYHVuaWNvZGUnCglyZXR1cm4gdmFsdWUuCgoKCSogc3JjL3BzYXV4L2FmbXBhcnNlLmMgKGFmbV9wYXJzZXJfcmVhZF92YWxzKTogVXNlIGRvdWJsZSBjYXN0aW5nCgl0byBhdm9pZCBjb21waWxlciB3YXJuaW5ncyByZWdhcmRpbmcgdHlwZS1wdW5uaW5nLgoKMjAwNi0wMS0xNiAgQ2hpYS1JIFd1ICA8YjkwMjAxMDQ3QG50dS5lZHUudHc+CgoJKiBzcmMvcHNhdXgvYWZtcGFyc2UuYywgc3JjL3BzYXV4L2FmbXBhcnNlLmg6IE5ldyBmaWxlcyB3aGljaAoJaW1wbGVtZW50IGFuIEFGTSBwYXJzZXIuCgoJKiBzcmMvcHNhdXgvcHNjb252LmMsIHNyYy9wc2F1eC9wc2NvbnYuaDogTmV3IGZpbGVzIHRvIHByb3ZpZGUKCWNvbnZlcnNpb24gZnVuY3Rpb25zIChlLmcuLCBQUyByZWFsIG51bWJlciA9PiBGVF9GaXhlZCkgZm9yIHRoZQoJUFNfUGFyc2VyIGFuZCBBRk1fUGFyc2VyLiAgU29tZSBvZiB0aGUgZnVuY3Rpb25zIGFyZSB0YWtlbiwgd2l0aAoJc29tZSBtb2RpZmljYXRpb25zLCBmcm9tIHRoZSBmaWxlIHBzb2Jqcy5jLgoKCSogc3JjL3BzYXV4L3Bzb2Jqcy5jOiBVc2UgZnVuY3Rpb25zIGZyb20gcHNjb252LmMuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3BzYXV4LmgsIHNyYy9wc2F1eC9wc2F1eG1vZC5jOiBBZGQKCWBBRk1fUGFyc2VyJyB0byB0aGUgYHBzYXV4JyBzZXJ2aWNlLgoKCSogc3JjL3BzYXV4L3BzYXV4LmMsIHNyYy9wc2F1eC9ydWxlcy5tayAoUFNBVVhfRFJWX1NSQyk6IEluY2x1ZGUKCXRob3NlIG5ldyBmaWxlcy4KCgkqIHNyYy90b29scy90ZXN0X2FmbS5jOiBBIHRlc3QgcHJvZ3JhbSBmb3IgQUZNIHBhcnNlci4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvc2VydmljZXMvc3ZrZXJuLmg6IE5ldyBmaWxlIHByb3ZpZGluZyBhCglgS2VybmluZycgc2VydmljZS4gIEl0IGlzIGN1cnJlbnRseSBvbmx5IHVzZWQgdG8gZ2V0IHRoZSB0cmFjawoJa2VybmluZyBpbmZvcm1hdGlvbi4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRzZXJ2LmggKEZUX1NFUlZJQ0VfS0VSTklOR19IKTogTmV3CgltYWNyby4KCgkqIHNyYy90eXBlMS90MWRyaXZlci5jLCBzcmMvdHlwZTEvdDFvYmpzLmMsIHNyYy90eXBlMS90MWFmbS5jLAoJc3JjL3R5cGUxL3QxYWZtLmg6IFVwZGF0ZSB0byB1c2UgdGhlIEFGTSBwYXJzZXIuCglQcm92aWRlIHRoZSBgS2VybmluZycgc2VydmljZS4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnJlZXR5cGUuaCwgc3JjL2Jhc2UvZnRvYmpzLmM6IE5ldyBBUEkKCWBGVF9HZXRfVHJhY2tfS2VybmluZycuCgoyMDA2LTAxLTE1ICBDaGlhLUkgV3UgIDxiOTAyMDEwNDdAbnR1LmVkdS50dz4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRvYmpzLmgsIHNyYy9iYXNlL2Z0b2Jqcy5jLAoJc3JjL2JkZi9iZGZkcml2ci5jLCBzcmMvY2ZmL2NmZmdsb2FkLmMsIHNyYy9jaWQvY2lkZ2xvYWQuYywKCXNyYy9wY2YvcGNmZHJpdnIuYywgc3JjL3R5cGUxL3QxZ2xvYWQuYywgc3JjL3dpbmZvbnRzL3dpbmZudC5jOgoJcy9mdF9mYWtlX3ZlcnRpY2FsX21ldHJpY3MvZnRfc3ludGhlc2l6ZV92ZXJ0aWNhbF9tZXRyaWNzLy4KCgkqIGRvY3MvQ0hBTkdFUzogTWVudGlvbiB0aGF0IHZlcnRpY2FsIG1ldHJpY3MgYXJlIHN5bnRoZXNpemVkIGZvcgoJZm9udHMgbm90IGhhdmluZyB0aGlzIGluZm8uCgoyMDA2LTAxLTE1ICBDaGlhLUkgV3UgIDxiOTAyMDEwNDdAbnR1LmVkdS50dz4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRvYmpzLmggKGZ0X2Zha2VfdmVydGljYWxfbWV0cmljcyksCglzcmMvYmFzZS9mdG9ianMuYyAoZnRfZmFrZV92ZXJ0aWNhbF9tZXRyaWNzKTogTmV3IGZ1bmN0aW9uIHRvIGZha2UKCXZlcnRpY2FsIG1ldHJpY3MuCgoJKiBzcmMvY2ZmL2NmZmdsb2FkLmMsIHNyYy9jaWQvY2lkZ2xvYWQuYywgc3JjL3BjZi9wY2Zkcml2ci5jLAoJc3JjL3R5cGUxL3QxZ2xvYWQuYywgc3JjL3dpbmZvbnRzL3dpbmZudC5jOiBGYWtlIHZlcnRpY2FsIG1ldHJpY3MsCgl3aGljaCBhcmUgbW9ub3RvbmUuCgoJKiBzcmMvdHJ1ZXR5cGUvdHRnbG9hZC5jIChjb21wdXRlX2dseXBoX21ldHJpY3MpOiBTb21lIGZpeGVzIGFuZAoJZm9ybWF0dGluZ3MgaW4gdmVydGljYWwgbWV0cmljcyBmYWtpbmcuICBUaGVyZSBpcyBzdGlsbCByb29tIGZvcgoJaW1wcm92ZW1lbnRzIChhbmQgc28gZG9lcyB0aGUgQ0ZGIG1vZHVsZSkuCgoyMDA2LTAxLTE1ICBDaGlhLUkgV3UgIDxiOTAyMDEwNDdAbnR1LmVkdS50dz4KCgkqIHNyYy9iZGYvYmRmZHJpdnIuYyAoQkRGX0dseXBoX0xvYWQpLCBzcmMvcGNmL3BjZmRyaXZyLmMKCShQQ0ZfR2x5cGhfTG9hZCksIHNyYy93aW5mb250cy93aW5mbnQuYyAoRk5UX0xvYWRfR2x5cGgpOiBEb24ndCBzZXQKCXRoZSBsaW5lYXIgYWR2YW5jZSBmaWVsZHMgYXMgdGhleSBhcmUgb25seSB1c2VkIGJ5IHRoZSBvdXRsaW5lCglnbHlwaHMuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ZyZWV0eXBlLmg6IERvY3VtZW50YXRpb24gdXBkYXRlcyBhbmQKCWNsYXJpZmljYXRpb25zLgoJVGhlIG1lYW5pbmcgb2YgRlRfTE9BRF9GT1JDRV9BVVRPSElOVCBpcyBjaGFuZ2VkIHNvIHRoYXQgbm8gcmVhbAoJY2hhbmdlIG5lZWQgYmUgbWFkZSB0byB0aGUgY29kZS4KCgkqIHNyYy9iYXNlL2Z0b2Jqcy5jIChGVF9Mb2FkX0dseXBoKTogUmVzb2x2ZSBmbGFnIGRlcGVuZGVuY2llcyBhbmQKCWRlY2lkZSB3aGV0aGVyIHRvIHVzZSB0aGUgYXV0by1oaW50ZXIgYWNjb3JkaW5nIHRvIGRvY3VtZW50YXRpb24uCglUaGVyZSBzaG91bGQgdG8gYmUgbm8gcmVhbCBkaWZmZXJlbmNlLgoJU29tZSBjaGVja3MgKGUuZy4sIGlzIHRleHQgaGVpZ2h0IHBvc2l0dmU/KSBhZnRlciB0aGUgZ2x5cGggaXMKCWxvYWRlZC4KCShGVF9TZWxlY3RfU2l6ZSwgRlRfUmVxdWVzdF9TaXplKTogU2NhbGVzIGFyZSBzZXQgdG8gd3JvbmcgdmFsdWVzLgoJQmUgY2FyZWZ1bCB0aGF0IHNjYWxlcyB3b24ndCBiZSBuZWdhdGl2ZS4KCjIwMDYtMDEtMTQgIENoaWEtSSBXdSAgPGI5MDIwMTA0N0BudHUuZWR1LnR3PgoKCSogZG9jcy9DSEFOR0VTOiBNZW50aW9uIHRoZSBzaXplIHNlbGVjdGlvbiBjaGFuZ2UuCgoJKiBzcmMvYmRmL2JkZmRyaXZyLmMgKEJERl9TaXplX1JlcXVlc3QsIEJERl9TaXplX1NlbGVjdCksCglzcmMvcGNmL3BjZmRyaXZyLmMgKFBDRl9TaXplX1JlcXVlc3QsIFBDRl9TaXplX1NlbGVjdCksCglzcmMvd2luZm9udHMvd2luZm50LmMgKEZOVF9TaXplX1JlcXVlc3QsIEZOVF9TaXplX1NlbGVjdCk6IERvIHNpemUKCW1hdGNoaW5nIGZvciByZXF1ZXN0cyBvZiB0eXBlIE5PTUlOQUwgYW5kIFJFQUxfRElNLgoKCSogc3JjL3dpbmZvbnRzL3dpbmZudC5jIChGTlRfRmFjZV9Jbml0KTogUHJpbnQgdHJhY2UgbWVzc2FnZSB3aGVuCglgcGl4ZWxfaGVpZ2h0JyBpcyB1c2VkIGZvciBub21pbmFsIGhlaWdodC4KCgkqIHNyYy9iYXNlL2Z0b2Jqcy5jIChGVF9SZXF1ZXN0X1NpemUpOiBDYWxsIGBGVF9NYXRjaF9TaXplJyBpZiB0aGUKCWZhY2UgaXMgYml0bWFwIG9ubHkgYW5kIGRyaXZlciBkb2Vzbid0IHByb3ZpZGUgYHJlcXVlc3Rfc2l6ZScuICBUaGlzCglpcyBhZGRlZCBtZXJlbHkgZm9yIGNvbXBsZXRpb24gYXMgbm8gZHJpdmVyIHNhdGlzZmllcyB0aGUgY29uZGl0aW9ucy4KCjIwMDYtMDEtMTMgIENoaWEtSSBXdSAgPGI5MDIwMTA0N0BudHUuZWR1LnR3PgoKCUludHJvZHVjZSBuZXcgc2l6ZSBzZWxlY3Rpb24gaW50ZXJmYWNlLgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdGRyaXZlci5oIChzdHJ1Y3QgRlRfRHJpdmVyX0NsYXNzUmVjKToKCVJlcGxhY2UgYHNldF9jaGFyX3NpemVzJyBhbmQgYHNldF9waXhlbF9zaXplcycgYnkgYHJlcXVlc3Rfc2l6ZScgYW5kCglgc2VsZWN0X3NpemUnLgoKCSogaW5jbHVkZS9mcmVldHlwZS9mcmVldHlwZS5oIChGVF9TZWxlY3RfU2l6ZSwgRlRfU2l6ZV9SZXF1ZXN0X1R5cGUsCglGVF9TaXplX1JlcXVlc3QsIEZUX1JlcXVlc3RfU2l6ZSwgRlRfU2VsZWN0X1NpemUpLCBzcmMvYmFzZS9mdG9ianMuYwoJKEZUX1NlbGVjdF9TaXplLCBGVF9SZXF1ZXN0X1NpemUpOiBBUEkgYWRkaXRpb25zIHRvIGV4cG9ydCB0aGUgbmV3CglzaXplIHNlbGVjdGlvbiBpbnRlcmZhY2UuCgoJKiBzcmMvYmFzZS9mdG9ianMuYyAoRlRfU2V0X0NoYXJfU2l6ZSwgRlRfU2V0X1BpeGVsX1NpemVzKTogVXNlCglgRlRfUmVxdWVzdF9TaXplJy4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRvYmpzLmggKEZUX01hdGNoX1NpemUpLAoJc3JjL2Jhc2UvZnRvYmpzLmMgKEZUX01hdGNoX1NpemUpOiBOZXcgZnVuY3Rpb24gdG8gbWF0Y2ggYSBzaXplCglyZXF1ZXN0IGFnYWluc3QgYGF2YWlsYWJsZV9zaXplcycuICBEcml2ZXJzIHN1cHBvcnRpbmcgYml0bWFwIHN0cmlrZXMKCWNhbiB1c2UgdGhpcyBmdW5jdGlvbiB0byBpbXBsZW1lbnQgYHJlcXVlc3Rfc2l6ZScuCgoJKiBzcmMvYmRmL2JkZmRyaXZyLmMsIHNyYy9jaWQvY2lkb2Jqcy5jLCBzcmMvY2lkL2NpZG9ianMuaCwKCXNyYy9jaWQvY2lkcml2ZXIuYywgc3JjL3BjZi9wY2Zkcml2ci5jLCBzcmMvdHlwZTEvdDFkcml2ZXIuYywKCXNyYy90eXBlMS90MW9ianMuYywgc3JjL3R5cGUxL3Qxb2Jqcy5oLCBzcmMvdHlwZTQyL3Q0MmRyaXZyLmMsCglzcmMvdHlwZTQyL3Q0Mm9ianMuYywgc3JjL3R5cGU0Mi90NDJvYmpzLmgsIHNyYy93aW5mb250cy93aW5mbnQuYzoKCVVwZGF0ZSB0byBuZXcgc2l6ZSBzZWxlY3Rpb24gaW50ZXJmYWNlLgoKCSogc3JjL2NmZi9jZmZkcml2ci5jLCBzcmMvY2ZmL2NmZmdsb2FkLmMsIHNyYy9jZmYvY2Zmb2Jqcy5jLAoJc3JjL2NmZi9jZmZvYmpzLmgsIHNyYy90cnVldHlwZS90dGRyaXZlci5jLCBzcmMvdHJ1ZXR5cGUvdHRnbG9hZC5jLAoJc3JjL3RydWV0eXBlL3R0b2Jqcy5jLCBzcmMvdHJ1ZXR5cGUvdHRvYmpzLmg6IFVwZGF0ZSB0byBuZXcgc2l6ZQoJc2VsZWN0aW9uIGludGVyZmFjZS4KCU1ha2UgYHN0cmlrZV9pbmRleCcgRlRfVUxvbmcgYW5kIGFsd2F5cyBkZWZpbmVkLgoJVXNlIGBsb2FkX3N0cmlrZV9tZXRyaWNzJyBwcm92aWRlZCBieSBTRk5UIGludGVyZmFjZS4KCjIwMDYtMDEtMTMgIENoaWEtSSBXdSAgPGI5MDIwMTA0N0BudHUuZWR1LnR3PgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9zZm50LmggKFNGTlRfSW50ZXJmYWNlKTogTmV3IG1ldGhvZAoJYGxvYWRfc3RyaWtlX21ldHJpY3MnIHVzZWQgdG8gbG9hZCB0aGUgc3RyaWtlJ3MgbWV0cmljcy4KCgkqIHNyYy9zZm50L3NmZHJpdmVyLmMsIHNyYy9zZm50L3R0c2JpdC5jLCBzcmMvc2ZudC90dHNiaXQuaCwKCXNyYy9zZm50L3R0c2JpdDAuYzogTmV3IGZ1bmN0aW9uIGB0dF9mYWNlX2xvYWRfc3RyaWtlX21ldHJpY3MnLgoKCSogc3JjL3Bmci9wZnJvYmpzLmMgKHBmcl9mYWNlX2luaXQpOiBTZXQgRlRfQml0bWFwX1NpemUgY29ycmVjdGx5LgoKCSogc3JjL3dpbmZvbnRzL3dpbmZudC5jIChGTlRfRmFjZV9Jbml0KTogVXNlIGBub21pbmFsX3BvaW50X3NpemUnIGZvcgoJbm9taW5hbCBzaXplIHVubGVzcyBpdCBpcyBvYnZpb3VzbHkgaW5jb3JyZWN0LgoKCSogaW5jbHVkZS9mcmVldHlwZS9mcmVldHlwZS5oIChGVF9CaXRtYXBfU2l6ZSk6IFVwZGF0ZSB0aGUgY29tbWVudHMgb24KCUZOVCBkcml2ZXIuCgoyMDA2LTAxLTEyICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJUHJlcGFyZSB1c2Ugb2YgcHNjbWFwIHNlcnZpY2Ugd2l0aGluIENGRiBtb2R1bGUuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3NlcnZpY2VzL3N2cHNjbWFwLmg6IEluY2x1ZGUKCUZUX0lOVEVSTkFMX09CSkVDVFNfSC4KCShQU19Vbmljb2RlX0luZGV4X0Z1bmMpOiBSZW1vdmVkLiAgVW51c2VkLgoJKFBTX01hY2ludG9zaF9OYW1lX0Z1bmMpOiBSZW5hbWVkIHRvLi4uCgkoUFNfTWFjaW50b3NoX05hbWVGdW5jKTogVGhpcy4KCVVwZGF0ZSBhbGwgY2FsbGVycy4KCShQU19BZG9iZV9TdGRfU3RyaW5nc19GdW5jKTogUmVuYW1lZCB0by4uLgoJKFBTX0Fkb2JlX1N0ZF9TdHJpbmdzRnVuYyk6IFRoaXMuCglVcGRhdGUgYWxsIGNhbGxlcnMuCgkoUFNfVW5pY29kZXNSZWMpOiBUaGlzIGlzIHRoZSBmb3JtZXIgYFBTX1VuaWNvZGVzJyBzdHJ1Y3R1cmUuCglBZGQgYGNtYXAnIG1lbWJlci4KCVVwZGF0ZSBhbGwgY2FsbGVycy4KCShQU19Vbmljb2Rlcyk6IFRoaXMgaXMgbm93IGEgdHlwZWRlZidkIHBvaW50ZXIgdG8gUFNfVW5pY29kZXNSZWMuCglVcGRhdGUgYWxsIGNhbGxlcnMuCgkoUFNfR2x5cGhfTmFtZUZ1bmMpOiBOZXcgdHlwZWRlZi4KCShQU19Vbmljb2Rlc19Jbml0RnVuYyk6IENoYW5nZSBhcmd1bWVudHMgdG8gZXhwZWN0IGEgZnVuY3Rpb24KCWFuZCBnZW5lcmljIGRhdGEgcG9pbnRlciB3aGljaCByZXR1cm5zIGEgZ2x5cGggbmFtZSBmcm9tIGEgZ2l2ZW4KCWluZGV4LgoKCSogc3JjL3BzbmFtZXMvcHNtb2R1bGUuYyAocHNfdW5pY29kZXNfaW5pdCwgcHNfdW5pY29kZXNfY2hhcl9pbmRleCwKCXBzX3VuaWNvZGVzX2NoYXJfbmV4dCwgcHNjbWFwc19pbnRlcmZhY2UpOiBVcGRhdGVkLgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC90MXR5cGVzLmggKFQxX0ZhY2VSZWMpOiBVcGRhdGVkLgoKCSogc3JjL3BzYXV4L3QxY21hcC5oIChUMV9DbWFwU3RkUmVjKTogVXBkYXRlZC4KCShUMV9DbWFwVW5pY29kZSwgVDFfQ21hcFVuaWNvZGVSZWMpOiBSZW1vdmVkLgoKCSogc3JjL3BzYXV4L3QxY21hcC5jICh0MV9nZXRfZ2x5cGhfbmFtZSk6IE5ldyBjYWxsYmFjayBmdW5jdGlvbi4KCSh0MV9jbWFwX3VuaWNvZGVfaW5pdCwgdDFfY21hcF91bmljb2RlX2RvbmUsCgl0MV9jbWFwX3VuaWNvZGVfY2hhcl9pbmRleCwgdDFfY21hcF91bmljb2RlX2NoYXJfbmV4dCwKCXQxX2NtYXBfdW5pY29kZV9jbGFzc19yZWMpOiBVcGRhdGVkLgoKCSogc3JjL3R5cGU0Mi90NDJ0eXBlcy5oIChUNDJfRmFjZVJlYyk6IFVwZGF0ZWQuCgoyMDA2LTAxLTExICBzdXp1a2kgdG9zaGl5YSAgPG1wc3V6dWtpQGhpcm9zaGltYS11LmFjLmpwPgoKCSogaW5jbHVkZS9mcmVldHlwZS9mdG1hYy5oOiBBZGQgZGVjbGFyYXRpb24gb2YgbmV3IGZ1bmN0aW9ucwoJRlRfTmV3X0ZhY2VfRnJvbV9GU1JlZiBhbmQgRlRfR2V0RmlsZV9Gcm9tX01hY19BVFNfTmFtZSB0aGF0Cgl3ZXJlIGludHJvZHVjZWQgYnkgdGhlIGp1bWJvIHBhdGNoIG9uICAyMDA2LTAxLTExLgoKMjAwNi0wMS0xMSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCUZpeCBTYXZhbm5haCBidWcgIzE1MDU2IGFuZCB1c2UgcHNjbWFwIHNlcnZpY2UgaW4gcHNhdXggbW9kdWxlLgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9zZXJ2aWNlcy9zdnBzY21hcC5oIChQU19VbmlNYXApOiBVc2UKCUZUX1VJbnQzMiBmb3IgYGdseXBoX2luZGV4Jy4KCShQU19Vbmljb2Rlc19Jbml0RnVuYyk6IFVzZSBGVF9TdHJpbmcgZm9yIGBnbHlwaF9uYW1lcycuCgkoUFNfVW5pY29kZXNfQ2hhckluZGV4RnVuYyk6IFVzZSBGVF9VSW50MzIgZm9yIGB1bmljb2RlJy4KCShQU19Vbmljb2Rlc19DaGFyTmV4dEZ1bmMpOiBNYWtlIHNlY29uZCBhcmd1bWVudCBhIHBvaW50ZXIgdG8KCUZUX1VJbnQzMi4KCgkqIHNyYy9wc25hbWVzL3BzbW9kdWxlLmMgKFZBUklBTlRfQklULCBCQVNFX0dMWVBIKTogTmV3IG1hY3Jvcy4KCShwc191bmljb2RlX3ZhbHVlKTogU2V0IFZBUklBTlRfQklUIGluIHJldHVybiB2YWx1ZSBpZiBnbHlwaCBpcyBhCgl2YXJpYW50IGdseXBoICh0aGlzIGlzLCBpdCBoYXMgbm9uLWxlYWRpbmcgYC4nIGluIGl0cyBuYW1lKS4KCShjb21wYXJlX3VuaV9tYXBzKTogU29ydCBiYXNlIGdseXBocyBiZWZvcmUgdmFyaWFudCBnbHlwaHMuCgkocHNfdW5pY29kZXNfaW5pdCk6IFVzZSBGVF9TdHJpbmcgZm9yIGBnbHlwaF9uYW1lcycgYXJndW1lbnQuCglSZWFsbG9jYXRlIG9ubHkgaWYgbnVtYmVyIG9mIHVzZWQgZW50cmllcyBpcyBtdWNoIHNtYWxsZXIuCglVcGRhdGVkIHRvIGhhbmRsZSB2YXJpYW50IGdseXBocy4KCShwc191bmljb2Rlc19jaGFyX2luZGV4LCBwc191bmljb2Rlc19jaGFyX25leHQpOiBQcmVmZXIgYmFzZSBnbHlwaHMKCW92ZXIgdmFyaWFudCBnbHlwaHMuCglTaW1wbGlmeSBjb2RlLgoKCSogc3JjL3BzYXV4L3QxY21hcC5jICh0MV9jbWFwX3VuaV9wYWlyX2NvbXBhcmUpOiBSZW1vdmVkLgoJKHQxX2NtYXBfdW5pY29kZV9pbml0LCB0MV9jbWFwX3VuaWNvZGVfY2hhcl9pbmRleCwKCXQxX2NtYXBfdW5pY29kZV9jaGFyX25leHQpOiBVc2UgcHNjbWFwIHNlcnZpY2UuCgkodDFfY21hcF91bmljb2RlX2RvbmUpOiBVcGRhdGVkLgoKCSogc3JjL3BzYXV4L3QxY21hcC5oIChUMV9DTWFwVW5pUGFpcik6IFJlbW92ZWQuCgkoVDFfQ01hcFVuaWNvZGUpOiBVc2UgUFNfVW5pY29kZXMgc3RydWN0dXJlLgoKMjAwNi0wMS0xMSAgc3V6dWtpIHRvc2hpeWEgIDxtcHN1enVraUBoaXJvc2hpbWEtdS5hYy5qcD4KCglKdW1ibyBwYXRjaCB0byBmaXggYGRlcHJlY2F0ZWQnIHdhcm5pbmcgb2YgY3Jvc3MtYnVpbGQgZm9yIFRpZ2VyIG9uCglJbnRlbCwgYXMgcmVwb3J0ZWQgYnkgU2VhbiBNY0JyaWRlIDxzZWFuQHJvZ3VlLXJlc2VhcmNoLmNvbT4gb24KCTIwMDUtMDgtMjQuCgoJKiBzcmMvYmFzZS9mdG1hYy5jOiBIZWF2eSBjaGFuZ2UgdG8gYnVpbGQgd2l0aG91dCBkZXByZWNhdGVkIENhcmJvbgoJZnVuY3Rpb25zIG9uIFRpZ2VyLgoKCSogYnVpbGRzL3VuaXgvY29uZmlndXJlLmFjOiBBZGQgb3B0aW9ucyBhbmQgYXV0b2NoZWNrcyBmb3IgQ2FyYm9uCglmdW5jdGlvbnMgYXZhaWxhYmlsaXRpZXMsIGZvciBNYWNPUyBYLgoKCSogYnVpbGRzL21hYy9hc2NpaTJtcHcucHk6IEFkZCBjb252ZXJ0ZXIgZm9yIGNoYXJhY3RlciBgXDMwNScuCgkqIGJ1aWxkcy9tYWMvRnJlZVR5cGUubTY4a197ZmFyfGNmbX0ubWFrZS50eHQ6IEFkZCBjb25kaXRpb25hbAoJbWFjcm9zIHRvIGF2b2lkIHVuYXZhaWxhYmxlIGZ1bmN0aW9ucy4KCWZ0bWFjLmMgbXVzdCBiZSBjb21waWxlZCB3aXRob3V0IGAtc3RyaWN0IGFuc2knLCBiZWNhdXNlIGl0IGRpc2FibGVzCgljcHAgbWFjcm8gdG8gdXNlIFRvb2xCb3ggc3lzdGVtIGNhbGwuCgoJKiBidWlsZHMvbWFjL0ZyZWVUeXBlLnBwY197Y2xhc3NpY3xjYXJib259Lm1ha2UudHh0OiBBZGQgY29uZGl0aW9uYWwKCW1hY3JvcyB0byBhdm9pZCB1bmF2YWlsYWJsZSBmdW5jdGlvbnMuCgoJKiBidWlsZHMvbWFjL1JFQURNRTogRGV0YWlsZWQgbm90ZXMgb24gZnVuY3Rpb24gYXZhaWxhYmlsaXRpZXMuCgoJKiBkb2NzL0NIQU5HRVM6IE5vdGVzIGFib3V0IChwb3NzaWJsZSkgaW5jb21wYXRpYmlsaXRpZXMuCgoyMDA2LTAxLTA4ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBkb2NzL0NIQU5HRVM6IFVwZGF0ZWQuCgoyMDA2LTAxLTA4ICBIdXcgRCBNIERhdmllcyAgPGguZGF2aWVzMUBwaHlzaWNzLm94LmFjLnVrPgoKCSogaW5jbHVkZS9mcmVldHlwZS9mdG1vZGFwaS5oIChGVF9Nb2R1bGVfR2V0X0ZsYWdzKTogTmV3CglkZWNsYXJhdGlvbi4KCgkqIHNyYy9iYXNlL2Z0b2Jqcy5jIChGVF9Nb2R1bGVfR2V0X0ZsYWdzKTogTmV3IGZ1bmN0aW9uLgoKMjAwNi0wMS0wNyAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL3BjZi9wY2ZyZWFkLmMgKHBjZl9nZXRfYml0bWFwcyk6IFJlbW92ZSB1bnVzZWQgdmFyaWFibGUKCWBiaXRtYXBzJy4gIFJlcG9ydGVkIGJ5IFl1IExlaSA8eXVsZWkwQGdtYWlsLmNvbT4uCgoJKiBzcmMvYmFzZS9mdHV0aWwuYyAoZnRfaGlnaHBvdzIpOiBzL0ZUX0JBU0UvRlRfQkFTRV9ERUYvLgoJUmVwb3J0ZWQgYnkgTmllbHMgQm9sZHQgPG5pZWxzYm9sZHRAZ21haWwuY29tPi4KCjIwMDUtMTItMjggIHN1enVraSB0b3NoaXlhICA8bXBzdXp1a2lAaGlyb3NoaW1hLXUuYWMuanA+CgoJKiBzcmMvc2ZudC9zZm50L3R0YmRmLmM6IEFkZCBuZXdsaW5lICdcbicgdG8gdGhlIGVuZCBvZiBmaWxlLCBmb3IKCU1QVyBjb21waWxlci4KCjIwMDUtMTItMjMgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIEphbWZpbGUgKFJlZkRvYyksIGRvY3MvcmVmZXJlbmNlL1JFQURNRTogRml4IGl0IHNvIHRoYXQgYGphbQoJcmVmZG9jJyB3b3JrcyBjb3JyZWN0bHkgdG8gZ2VuZXJhdGUgdGhlIEFQSSByZWZlcmVuY2UgaW4KCWBkb2NzL3JlZmVyZW5jZScuCgoJKiBzcmMvdG9vbHMvZG9jbWFrZXIvdG9odG1sLnB5IChwcmludF9odG1sX2ZpZWxkLAoJcHJpbnRfaHRtbF9maWVsZF9saXN0KTogVXBkYXRlIHRvIG91dHB1dCBuaWNlciBmaWVsZHMgbGlzdHMgaW4gdGhlCglBUEkgcmVmZXJlbmNlLgoKCSogc3JjL2Jhc2UvZnRvYmpzLmMgKEZUX0xvYWRfR2x5cGgpOiBGVF9MT0FEX1RBUkdFVF9MSUdIVCBub3cKCWZvcmNlcyBhdXRvLWhpbnRpbmcuCgoJKiBmcmVldHlwZS9mcmVldHlwZS5oOiBVcGRhdGluZyB0aGUgZG9jdW1lbnRhdGlvbiBmb3IKCUZUX0xPQURfVEFSR0VUX1hYWCBhbmQgRlRfUmVuZGVyX01vZGUgdmFsdWVzLgoKMjAwNS0xMi0yMyAgc3V6dWtpIHRvc2hpeWEgIDxtcHN1enVraUBoaXJvc2hpbWEtdS5hYy5qcD4KCgkqIHNyYy9iYXNlL2Z0bWFjLmMgKEZUX05ld19GYWNlX0Zyb21fU3VpdGNhc2UpOiBDb3VudCBzY2FsYWJsZSBmYWNlcwoJaW4gc3VwcG9ydGVkIGZvcm1hdHMgKHNmbnQsIExXRk4pIG9ubHksIGFuZCBpZ25vcmUgYml0bWFwIGZhY2VzIGluCgl1bnN1cHBvcnRlZCBmb3JtYXRzIChmYml0LCBORk5UKS4gIFRoZSBudW1iZXIgb2YgYXZhaWxhYmxlIGZhY2VzIGFyZQoJcGFzc2VkIHZpYSBmYWNlLT5udW1fZmFjZXMuICBJZiBiaXRtYXAgZmFjZXMgYXJlIGVtYmVkZGVkIGluIHNmbnQKCXJlc291cmNlLCBmYWNlLT5udW1fZml4ZWRfc2l6ZSBpcyBjb3JyZWN0bHkgc2V0LiAgSW4gcHVibGljIEFQSSwKCUZUX05ld19GYWNlKCkgYW5kIEZUX05ld19GYWNlX0Zyb21fRlNTcGVjKCkgY291bnQgdGhlIGZhY2VzIGFzCglGVF9HZXRGaWxlX0Zyb21fTWFjX05hbWUoKSwgd2hpY2ggaWdub3JlcyBORk5UIHJlc291cmNlcy4KCgkqIGRvYy9DSEFOR0VTOiBNZW50aW9uIHRoZSBjaGFuZ2VzLgoKMjAwNS0xMi0xNyAgQ2hpYS1JIFd1ICA8YjkwMjAxMDQ3QG50dS5lZHUudHc+CgoJKiBzcmMvdHJ1ZXR5cGUvdHRpbnRlcnAuYyAoVXBkYXRlX01heCk6IFNldCBjdXJyZW50IHNpemUgb2YgYnVmZmVyCgljb3JyZWN0bHkgKHNvIHRoYXQgbWVtb3J5IGRlYnVnIHN5c3RlbSB3b24ndCBwYW5pYykuCgoyMDA1LTEyLTE2ICBDaGlhLUkgV3UgIDxiOTAyMDEwNDdAbnR1LmVkdS50dz4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRvYmpzLmggKGZ0X2dseXBoc2xvdF9ncmlkX2ZpdF9tZXRyaWNzKSwKCXNyYy9iYXNlL2Z0b2Jqcy5jIChmdF9nbHlwaHNsb3RfZ3JpZF9maXRfbWV0cmljcyk6IFJlbW92ZWQuCgoJKiBzcmMvYmFzZS9mdG9ianMuYyAoZnRfcmVjb21wdXRlX3NjYWxlZF9tZXRyaWNzKTogRG8gbm90IHJvdW5kLgoKCSogc3JjL2NmZi9jZmZnbG9hZC5jIChjZmZfc2xvdF9sb2FkKSwgc3JjL2NpZC9jaWRnbG9hZC5jCgkoY2lkX3Nsb3RfbG9hZF9nbHlwaCksIHNyYy90cnVldHlwZS90dGdsb2FkLmMgKGNvbXB1dGVfZ2x5cGhfbWV0cmljcyksCglzcmMvdHlwZTEvdDFnbG9hZC5jIChUMV9Mb2FkX0dseXBoKTogRG8gbm90IHJvdW5kIGdseXBoIG1ldHJpY3MuCgoJKiBkb2MvQ0hBTkdFUzogTWVudGlvbiB0aGUgY2hhbmdlcy4KCjIwMDUtMTItMTMgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCglDaGFuZ2UgdGhlIGltcGxlbWVudGF0aW9uIG9mIHRoZSBMSUdIVCBoaW50aW5nIG1vZGUgdG8gY29tcGxldGVseQoJZGlzYWJsZSBob3Jpem9udGFsIGhpbnRpbmcuICBUaGlzIGlzIGFuIGV4cGVyaW1lbnRhbCBlZmZvcnQgdG8KCWludGVncmF0ZSBEYXZpZCBDaGVzdGVyJ3MgbGF0ZXN0IHBhdGNoIHdpdGhvdXQgYWZmZWN0aW5nIHRoZSBvdGhlcgoJaGludGluZyBtb2RlcyBhcyB3ZWxsLgoKCU5vdGUgdGhhdCB0aGlzIGRvZXNuJ3QgZm9yY2UgYXV0by1oaW50aW5nIGZvciBhbGwgZm9udHMsIGhvd2V2ZXIuCgoJKiBzcmMvYXV0b2ZpdC9hZmhpbnRzLmMgKGFmX2dseXBoX2hpbnRzX3JlbG9hZCk6IERvbid0IHNldAoJc2NhbGVyX2ZpYWdzIGhlcmUgYnV0Li4uCgkoYWZfZ2x5cGhfaGludHNfcmVzY2FsZSk6IEhlcmUuCgoJKiBzcmMvYXV0b2ZpdC9hZmxhdGluLmMgKGFmX2xhdGluX2hpbnRzX2luaXQpOiBEaXNhYmxlIGhvcml6b250YWwKCWhpbnRpbmcgZm9yIGBsaWdodCcgaGludGluZyBtb2RlLgoKCgkqIEphbWZpbGU6IFNtYWxsIGZpeCB0byBlbnN1cmUgdGhhdCBmdGV4cG9ydC5zeW0gaXMgcGxhY2VkIGludG8gdGhlCglzYW1lIGxvY2F0aW9uIGFzIG90aGVyIGdlbmVyYXRlZCBvYmplY3RzIChpLmUuLCB3aXRoaW4gdGhlIGBvYmpzJwoJZGlyZWN0b3J5IG9mIHRoZSBjdXJyZW50IGRpcmVjdG9yeSkuCgoKCUFkZCBzdXBwb3J0IGZvciBhbiBlbWJlZGRlZCBgQkRGICcgdGFibGUgd2l0aGluIFNGTlQtYmFzZWQgYml0bWFwCglmb250IGZpbGVzLiAgVGhpcyBpcyB1c2VkIHRvIHN0b3JlIGF0b21zICYgcHJvcGVydGllcyBmcm9tIHRoZQoJb3JpZ2luYWwgQkRGIGZvbnRzIHRoYXQgd2VyZSB1c2VkIHRvIGdlbmVyYXRlIHRoZSBmb250IGZpbGUuCgoJVGhlIGZlYXR1cmUgaXMgY29udHJvbGxlZCBieSBUVF9DT05GSUdfT1BUSU9OX0JERiB3aXRoaW4KCWBmdG9wdGlvbi5oJyBhbmQgaXMgdXNlZCB0byBpbXBsZW1lbnQgRlRfR2V0X0JERl9Qcm9wZXJ0eSBmb3IgdGhlc2UKCWZvbnQgZmlsZXMuCgoJQXQgdGhlIG1vbWVudCwgdGhpcyBpcyBzdGlsbCBleHBlcmltZW50YWwsIHRoZSBCREYgdGFibGUgZm9ybWF0Cglpc24ndCBjYXN0IGludG8gc3RvbmUgeWV0LgoKCSogaW5jbHVkZS9mcmVldHlwZS9jb25maWcvZnRvcHRpb24uaCAoVFRfQ09ORklHX09QVElPTl9CREYpOiBOZXcKCW1hY3JvLgoKCSogaW5jbHVkZS9mcmVldHlwZS9jb25maWcvZnRzdGRsaWIuaCAoZnRfbWVtY2hyKTogTmV3IG1hY3JvLgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC90dHR5cGVzLmggKFRUX0JERlJlYywgVFRfQkRGKQoJW1RUX0NPTkZJR19PUFRJT05fQkRGXTogTmV3IHN0cnVjdHVyZS4KCShUVF9GYWNlUmVjKSBbVFRfQ09ORklHX09QVElPTl9CREZdOiBOZXcgbWVtYmVyIGBiZGYnLgoKCSogaW5jbHVkZS9mcmVldHlwZS90dGFncy5oIChUVEFHX0JERik6IE5ldyBtYWNyby4KCgkqIHNyYy9zZm50L0phbWZpbGUgKF9zb3VyY2VzKTogQWRkIHR0YmRmLgoKCSogc3JjL3NmbnQvcnVsZXMubWsgKFNGTlRfRFJWX1NSQyk6IEFkZCB0dGJkZi5jLgoKCSogc3JjL3NmbnQvc2Zkcml2ZXIuYyBbVFRfQ09ORklHX09QVElPTl9CREZdOiBJbmNsdWRlIHR0YmRmLmggYW5kCglGVF9TRVJWSUNFX0JERl9ILgoJKHNmbnRfZ2V0X2NoYXJzZXRfaXQpIFtUVF9DT05GSUdfT1BUSU9OX0JERl06IE5ldyBmdW5jdGlvbi4KCShzZm50X3NlcnZpY2VfYmRmKSBbVFRfQ09ORklHX09QVElPTl9CREZdOiBOZXcgc2VydmljZS4KCShzZm50X3NlcnZpdmVzKSBbVFRfQ09ORklHX09QVElPTl9CREZdOiBBZGQgc2ZudF9zZXJ2aWNlX2JkZi4KCgkqIHNyYy9zZm50L3NmbnQuYyBbVFRfQ09ORklHX09QVElPTl9CREZdOiBJbmNsdWRlIHR0YmRmLmMuCgoJKiBzcmMvc2ZudC9zZm9ianMuYyBbVFRfQ09ORklHX09QVElPTl9CREZdOiBJbmNsdWRlIHR0YmRmLmguCgkoc2ZudF9kb25lX2ZhY2UpIFtUVF9DT05GSUdfT1BUSU9OX0JERl06IENhbGwKCXR0X2ZhY2VfZnJlZV9iZGZfcHJvcHMuCgoJKiBzcmMvc2ZudC90dGJkZi5oLCBzcmMvc2ZudC90dGJkZi5jOiBOZXcgZmlsZXMuCgoyMDA1LTEyLTA3ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvc2ZudC9zZm9iamMuYyAoc2ZudF9pbml0X2ZhY2UpOiBNb3ZlIHRhZyBjaGVjayB0by4uLgoJKiBzcmMvc2ZudC90dGxvYWQuYyAoc2ZudF9pbml0KTogSGVyZSwgYmVmb3JlIGhhbmRsaW5nIFRUQ3MuCgoyMDA1LTEyLTA2ICBDaGlhLUkgV3UgIDxiOTAyMDEwNDdAbnR1LmVkdS50dz4KCgkqIHNyYy90cnVldHlwZS90dG9ianMuYyAodHRfc2l6ZV9pbml0KTogc2l6ZS0+dHRtZXRyaWNzLnZhbGlkIGlzCglpbml0aWFsaXplZCB0d2ljZS4KCXNpemUtPnN0cmlrZV9pbmRleCBpcyBub3QgaW5pdGlhbGl6ZWQuCgoyMDA1LTEyLTAyICBUYWVrIEt3YW4oVEspIExlZSAgPHRhZWtsZWVAZ21haWwuY29tPgoKCSogc3JjL3R5cGU0Mi90NDJvYmpzLmMgKFQ0Ml9GYWNlX0luaXQpOiBSZXBsYWNlIGNhbGwgdG8KCUZUX05ld19NZW1vcnlfRmFjZSB3aXRoIGNhbGwgdG8gRlRfT3Blbl9GYWNlIHRvIHBhc3MgYHBhcmFtcycuCgoyMDA1LTExLTMwICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBkb2NzL0NIQU5HRVM6IERvY3VtZW50IGZ0ZHVtcCdzIGAtdicgb3B0aW9uLgoJRG9jdW1lbnQgbGF0ZXN0IGNoYXJtYXAgY29kZSBjaGFuZ2VzLgoKCSogc3JjL3NmbnQvdHRjbWFwLmMsIHNyYy9zZm50L3R0Y21hcC5oOgoJcy9UVF9DTUFQX0ZMQUdfT1ZFUkxBUFBFRC9UVF9DTUFQX0ZMQUdfT1ZFUkxBUFBJTkcvLgoKMjAwNS0xMS0zMCAgQ2hpYS1JIFd1ICA8YjkwMjAxMDQ3QG50dS5lZHUudHc+CgoJKiBzcmMvc2ZudC90dGNtYXAuYyAodHRfY21hcDRfY2hhcl9tYXBfYmluYXJ5LAoJdHRfY21hcDEyX2NoYXJfbWFwX2JpbmFyeSk6IEZpeCBjb21waWxlciB3YXJuaW5ncy4KCjIwMDUtMTEtMjkgIENoaWEtSSBXdSAgPGI5MDIwMTA0N0BudHUuZWR1LnR3PgoKCU1ham9yIHVwZGF0ZSB0byBkaXN0aW5ndWlzaCBiZXR3ZWVuIHVuc29ydGVkIGFuZCBvdmVybGFwcGluZwoJc2VnbWVudHMgZm9yIGNtYXAgZm9ybWF0IDQuICBGb3Igb3ZlcmxhcHBpbmcgYnV0IHNvcnRlZCBzZWdtZW50cywKCXdoaWNoIGlzIHByZXZpb3VzbHkgY29uc2lkZXJlZCB1bnNvcnRlZCwgd2Ugc3RpbGwgdXNlIGJpbmFyeSBzZWFyY2guCgoJKiBzcmMvc2ZudC90dGNtYXAuaCAoVFRfQ01hcFJlY18pOiBSZXBsYWNlIGB1bnNvcnRlZCcgYnkgYGZsYWdzJy4KCShUVF9DTUFQX0ZMQUdfVU5TT1JURUQsIFRUX0NNQVBfRkxBR19PVkVSTEFQUEVEKTogTmV3IG1hY3Jvcy4KCgkqIHNyYy9zZm50L3R0Y21hcC5jIChPUFRfQ01BUDQpOiBSZW1vdmVkIGFzIGl0IGlzIGFsd2F5cyBkZWZpbmVkLgoJKFRUX0NNYXA0UmVjXyk6IFJlbW92ZSBgb2xkX2NoYXJjb2RlJyBhbmQgYHRhYmxlX2xlbmd0aCcuCgkodHRfY21hcDRfcmVzZXQpOiBSZW1vdmVkLgoJKHR0X2NtYXA0X2luaXQpOiBVcGRhdGVkIGFjY29yZGluZ2x5LgoJKHR0X2NtYXA0X25leHQpOiBVcGRhdGVkIGFjY29yZGluZ2x5LgoJVGFrZSBjYXJlIG9mIG92ZXJsYXBwaW5nIHNlZ21lbnRzLgoJKHR0X2NtYXA0X3ZhbGlkYXRlKTogTWFrZSBzdXJlIHRoZSBzdWJ0YWJsZSBpcyBsYXJnZSBlbm91Z2guCglEbyBub3QgY2hlY2sgZ2x5cGhfaWRzIGJlY2F1c2Ugc29tZSBmb250cyBzZXQgdGhlIGxlbmd0aCB3cm9uZ2x5LgoJQWxzbywgaWYgYWxsIHNlZ21lbnRzIGhhdmUgb2Zmc2V0IDAsIGdseXBoX2lkcyBpcyBhbHdheXMgaW52YWxpZC4KCUl0IGRvZXMgbm90IGNhdXNlIGFueSBwcm9ibGVtIHNvIGZhciBvbmx5IGJlY2F1c2UgdGhlIGNoZWNrIG1pc3NlcwoJZXF1YWxpdHkuCglEaXN0aW5ndWlzaCBiZXR3ZWVuIHVuc29ydGVkIGFuZCBvdmVybGFwcGluZyBzZWdtZW50cy4KCSh0dF9jbWFwNF9jaGFyX21hcF9saW5lYXIsIHR0X2NtYXA0X2NoYXJfbWFwX2JpbmFyeSk6IE5ldyBmdW5jdGlvbnMKCXRvIGRvIGBjaGFyY29kZSA9PiBnbHlwaCBpbmRleCcgYnkgbGluZWFyL2JpbmFyeSBzZWFyY2guCgkodHRfY21hcDRfY2hhcl9pbmRleCwgdHRfY21hcDRfY2hhcl9uZXh0KTogVXNlCgl0dF9jbWFwNF9jaGFyX21hcF9saW5lYXIgYW5kIHR0X2NtYXA0X2NoYXJfbWFwX2JpbmFyeS4KCSh0dF9mYWNlX2J1aWxkX2NtYXBzKTogVHJlYXQgdGhlIHJldHVybiB2YWx1ZSBvZiB2YWxpZGF0b3IgYXMgZmxhZ3MKCWZvciBjbWFwLgoKMjAwNS0xMS0yOSAgQ2hpYS1JIFd1ICA8YjkwMjAxMDQ3QG50dS5lZHUudHc+CgoJKiBzcmMvc2ZudC90dGNtYXAuYyAoVFRfQ01hcDEyUmVjXywgdHRfY21hcDEyX2luaXQsIHR0X2NtYXAxMl9uZXh0KToKCU5ldyBzdHJ1Y3R1cmVzIGFuZCBmdW5jdGlvbnMgZm9yIGZhc3QgYG5leHQgY2hhcicuCgkodHRfY21hcDEyX2NoYXJfbWFwX2JpbmFyeSk6IE5ldyBmdW5jdGlvbiB0byBkbyBgY2hhcmNvZGUgPT4gZ2x5cGgKCWluZGV4JyBieSBiaW5hcnkgc2VhcmNoLgoJKHR0X2NtYXAxMl9jaGFyX2luZGV4LCB0dF9jbWFwMTJfY2hhcl9uZXh0KTogVXNlCgl0dF9jbWFwMTJfY2hhcl9tYXBfYmluYXJ5LgoJKHR0X2ZhY2VfYnVpbGRfY21hcHMpOiBDaGVjayB0YWJsZSBhbmQgb2Zmc2V0IGNvcnJlY3RseSAoZXF1YWxpdHkgaXMKCW1pc3NpbmcpLgoKMjAwNS0xMS0xNSAgRGV0bGVmIFf8cmtuZXIgIDxUZXRpU29mdEBhcGcubGFobi5kZT4KCgkqIGJ1aWxkcy9hbWlnYS9zbWFrZWZpbGU6IEFkanVzdGVkIHRoZSBjb21waWxlciBvcHRpb25zCgl0byB0aGUgY3VycmVudCBzb3VyY2VzLCBub3cgcmVhbGx5IGJ1aWxkcyB0aGUgZ3h2YWxpZCwgZ3ppcAoJYW5kIHBzbmFtZXMgbW9kdWxlcy4KCgkqIGJ1aWxkcy9hbWlnYS9zcmMvYmFzZS9mdHN5c3RlbS5jOiBUaGUgYXNzdW1lZCBTZWVrKCkgcG9zaXRpb24KCWluIHRoZSBmaWxlIGNhY2hlIHdhcyBvZmYgYnkgb25lIGJ5dGUgd2hpY2ggY291bGQgY2F1c2UgZmFsc2UKCWVycm9ycyBpbiBmb250IGZpbGVzLgoKMjAwNS0xMS0yNCAgc3V6dWtpIHRvc2hpeWEgIDxtcHN1enVraUBoaXJvc2hpbWEtdS5hYy5qcD4KCgkqIGJ1aWxkcy9tYWMvRnJlZVR5cGUubTY4a19mYXIubWFrZS50eHQsCglidWlsZHMvbWFjL0ZyZWVUeXBlLm02OGtfY2ZtLm1ha2UudHh0LAoJYnVpbGRzL21hYy9GcmVlVHlwZS5wcGNfY2xhc3NpYy5tYWtlLnR4dCwKCWJ1aWxkcy9tYWMvRnJlZVR5cGUucHBjX2NhcmJvbi5tYWtlLnR4dDoKCVVwZGF0ZWQgZm9yIE1QVyB0byBidWlsZCBhbGwgYXZhaWxhYmxlIG1vZHVsZXMuCgoyMDA1LTExLTIxICBI5XZhcmQgV2FsbCAgPGhhYXZhcmR3QGlmaS51aW8ubm8+CgoJKiBzcmMvYmRmL2JkZmRyaXZyLmMgKGJkZl9pbnRlcnByZXRfc3R5bGUsIEJERl9GYWNlX0RvbmUpOiBGaXggc21hbGwKCW1lbW9yeSBsZWFrLgoKMjAwNS0xMS0yMSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL3NmbnQvdHRsb2FkLmMgKHNmbnRfaW5pdCk6IEFkZCB0cmFjaW5nIG1lc3NhZ2UuCgoyMDA1LTExLTIxICBDaGlhLUkgV3UgIDxiOTAyMDEwNDdAbnR1LmVkdS50dz4KCgkqIHNyYy9zZm50L3R0c2JpdDAuYyAodHRfc2JpdF9kZWNvZGVyX2xvYWRfaW1hZ2UpOiBJbWFnZV9vZmZzZXQgd2FzCglhZGRlZCB0d2ljZSB0byBpbWFnZV9zdGFydCBpZiBpbWFnZV9mb3JtYXQgd2FzIDIgb3IgNS4KCjIwMDUtMTEtMjEgIENoaWEtSSBXdSAgPGI5MDIwMTA0N0BudHUuZWR1LnR3PgoKCSogc3JjL3NmbnQvc2ZvYmpzLmMgKHNmbnRfaW5pdF9mYWNlKTogQ2hlY2sgdGhhdCBmb3JtYXRfdGFnIGlzIGtub3duCgliZWZvcmUgbG9hZGluZyB0aGUgdGFibGUgZGlyZWN0b3J5LgoKCSogc3JjL3NmbnQvdHRsb2FkLmMgKHR0X2ZhY2VfbG9hZF9zZm50X2hlYWRlciwKCXR0X2ZhY2VfbG9hZF9kaXJlY3RvcnkpOiBEZWxheSBzZm50X2Rpcl9jaGVjayBmcm9tCgl0dF9mYWNlX2xvYWRfc2ZudF9oZWFkZXIgdG8gdHRfZmFjZV9sb2FkX2RpcmVjdG9yeS4KCjIwMDUtMTEtMjAgIENoaWEtSSBXdSAgPGI5MDIwMTA0N0BudHUuZWR1LnR3PgoKCSogc3JjL3NmbnQvdHRsb2FkLmMgKHNmbnRfZGlyX2NoZWNrKTogQ2xlYW4gdXAgYW5kIHJldHVybiBjb3JyZWN0CgllcnJvciBjb2RlLgoJKHNmbnRfaW5pdCk6IE5ldyBmdW5jdGlvbiB0byBmaWxsIGluIGZhY2UtPnR0Y19oZWFkZXIuICBBIG5vbi1UVEMgZm9udAoJaXMgc3ludGhlc2l6ZWQgaW50byBhIFRUQyBmb250IHdpdGggb25lIG9mZnNldCB0YWJsZS4KCSh0dF9mYWNlX2xvYWRfc2ZudF9oZWFkZXIpOiBVc2Ugc2ZudF9pbml0LgoJRml4IGFuIGludmFsaWQgYWNjZXNzIGlmIHRoZSBmb250IGlzIFRUQyBhbmQgZmFjZV9pbmRleCBpcyAtMS4KCjIwMDUtMTEtMTggIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9zZm50L3R0bG9hZC5jICh0dF9mYWNlX2xvYWRfbWV0cmljcyk6IElnbm9yZSBleGNlc3MgbnVtYmVyCglvZiBtZXRyaWNzIGluc3RlYWQgb2YgYWJvcnRpbmcuICBQYXRjaCBzdWdnZXN0ZWQgYnkgRGVyZWsgTm9vbmJ1cmcuCgoJKiBzcmMvY2ZmL2NmZmdsb2FkLmMgKGNmZl9zbG90X2xvYWQpLCBzcmMvY2lkL2NpZGdsb2FkLmMKCShjaWRfc2xvdF9sb2FkX2dseXBoKSwgc3JjL3R5cGUxL3QxZ2xvYWQuYyAoVDFfTG9hZF9HbHlwaCk6IFNjYWxlCgl0aGUgZ2x5cGggcHJvcGVybHkgaWYgbm8gaGludGVyIGlzIGF2YWlsYWJsZS4KCgkqIGRvY3MvQ0hBTkdFUzogTWVudGlvbiBzY2FsaW5nIGJ1Zy4KCjIwMDUtMTEtMTggIHN1c3V6a2kgdG9zaGl5YSAgPG1wc3V6dWtpQGhpcm9zaGltYS11LmFjLmpwPgoKCSogaW5jbHVkZS9mcmVldHlwZS9mdGd4dmFsLmgsIHNyYy9iYXNlL2Z0Z3h2YWwuYwoJKEZUX1RydWVUeXBlR1hfRnJlZSwgRlRfQ2xhc3NpY0tlcm5fRnJlZSk6IE5ldyBmdW5jdGlvbnMgdG8gZnJlZQoJYnVmZmVycyBhbGxvY2F0ZWQgYnkgZ3h2YWxpZCBtb2R1bGUuCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnRvdHZhbC5oLCBzcmMvYmFzZS9mdG90dmFsLmMKCShGVF9PcGVuVHlwZV9GcmVlKTogTmV3IGZ1bmN0aW9uIHRvIGZyZWUgYnVmZmVyIGFsbG9jYXRlZCBieQoJb3R2YWxpZCBtb2R1bGUuCgoyMDA1LTExLTE4ICBDaGlhLUkgV3UgIDxiOTAyMDEwNDdAbnR1LmVkdS50dz4KCgkqIGJ1aWxkcy91bml4L2Z0c3lzdGVtLmMgKEZUX1N0cmVhbV9PcGVuLCBGVF9OZXdfTWVtb3J5LAoJRlRfRG9uZV9NZW1vcnkpLCBidWlsZHMvdm1zL2Z0c3lzdGVtLmMgKEZUX1N0cmVhbV9PcGVuLCBGVF9OZXdfTWVtb3J5LAoJRlRfRG9uZV9NZW1vcnkpLCBidWlsZHMvd2luMzIvZnRkZWJ1Zy5jIChGVF9NZXNzYWdlLCBGVF9QYW5pYyk6CglzL0ZUX0VYUE9SVC9GVF9CQVNFLy4KCjIwMDUtMTEtMTcgIERldGxlZiBX/HJrbmVyICA8VGV0aVNvZnRAYXBnLmxhaG4uZGU+CgoJKiBidWlsZHMvYW1pZ2Evc3JjL2Jhc2UvZnRkZWJ1Zy5jIChGVF9UcmFjZV9HZXRfQ291bnQsCglGVF9UcmFjZV9HZXRfTmFtZSwgRlRfTWVzc2FnZSwgRlRfUGFuaWMpLAoJYnVpbGRzL2FtaWdhL3NyYy9iYXNlL2Z0c3lzdGVtLmMgKEZUX05ld19NZW1vcnksIEZUX0RvbmVfTWVtb3J5LAoJRlRfU3RyZWFtX09wZW4pOiBzL0ZUX0VYUE9SVC9GVF9CQVNFLy4KCjIwMDUtMTEtMTcgIERldGxlZiBX/HJrbmVyICA8VGV0aVNvZnRAYXBnLmxhaG4uZGU+CgoJKiBidWlsZHMvYW1pZ2EvbWFrZWZpbGUsIGJ1aWxkcy9hbWlnYS9tYWtlZmlsZS5vczQsCglidWlsZHMvYW1pZ2Evc21ha2VmaWxlLAoJYnVpbGRzL2FtaWdhL2luY2x1ZGUvZnJlZXR5cGUvY29uZmlnL2Z0bW9kdWxlLmg6IFVwZGF0ZWQgdGhlIEFtaWdhCglidWlsZCBmaWxlcyAoYWRkZWQgc3VwcG9ydCBmb3IgdGhlIGd4dmFsaWQgbW9kdWxlKS4KCjIwMDUtMTEtMTcgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCglBZGQgdmVydGljYWwgbWV0cmljcyBzdXBwb3J0IHRvIE9wZW5UeXBlIENGRiBvdXRsaW5lcy4gIEJhc2VkIG9uIGEKCXBhdGNoIGZyb20gTWlrZSBNb2VuaW5nIDxNaWtlTUBSZXRla1NvbHV0aW9ucy5jb20+LgoKCSogc3JjL2NmZi9jZmZnbG9hZC5jIChjZmZfZmFjZV9nZXRfdmVydGljYWxfbWV0cmljcyk6IE5ldyBmdW5jdGlvbi4KCShjZmZfc2xvdF9sb2FkKTogVXNlIGNmZl9mYWNlX2dldF92ZXJ0aWNhbF9tZXRyaWNzLgoKCSogZG9jcy9DSEFOR0VTOiBVcGRhdGVkLgoKMjAwNS0xMS0xNyAgQ2hpYS1JIFd1ICA8YjkwMjAxMDQ3QG50dS5lZHUudHc+CgoJKiBzcmMvYmFzZS9mdGNhbGMuYyAoRlRfTXVsVG82NCk6IENvbW1lbnRlZCBvdXQuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0Y2FsYy5oIChGVF9TcXJ0Rml4ZWQpLAoJc3JjL2Jhc2UvZnRjYWxjLmMgKEZUX1NxcnRGaXhlZCksCglpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0ZGVidWcuaCAoRlRfVHJhY2VfR2V0X0NvdW50LAoJRlRfVHJhY2VfR2V0X05hbWUsIEZUX01lc3NhZ2UsIEZUX1BhbmljKSwgc3JjL2Jhc2UvZnRkZWJ1Zy5jCgkoRlRfVHJhY2VfR2V0X0NvdW50LCBGVF9UcmFjZV9HZXRfTmFtZSwgRlRfTWVzc2FnZSwgRlRfUGFuaWMpLAoJaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdG9ianMuaCAoRlRfTmV3X01lbW9yeSwgRlRfRG9uZV9NZW1vcnkpLAoJaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdHN0cmVhbS5oIChGVF9TdHJlYW1fT3BlbiksCglzcmMvYmFzZS9mdHN5c3RlbS5jIChGVF9OZXdfTWVtb3J5LCBGVF9Eb25lX01lbW9yeSwgRlRfU3RyZWFtX09wZW4pOgoJcy9GVF9FWFBPUlQvRlRfQkFTRS8uCgoJKiBidWlsZHMvZXhwb3J0cy5tazogTWFudWFsbHkgYWRkIFRUX05ld19Db250ZXh0IHRvIEVYUE9SVFNfTElTVAoJdG9vLgoKMjAwNS0xMS0xNSAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogc3JjL2Jhc2UvZnR0cmlnb24uYyAoZnRfdHJpZ19wcmVub3JtKTogRml4IGEgYnVnIHRoYXQgY3JlYXRlZAoJaW52YWxpZCBjb21wdXRhdGlvbnMsIHJlc3VsdGluZyBpbiB2ZXJ5IHdlaXJkIGJ1Z3MgaW4gVHJ1ZVR5cGUKCWJ5dGVjb2RlIGhpbnRlZCBmb250cy4KCgkqIHNyYy90cnVldHlwZS90dGludGVycC5jIChGVF9VTlVTRURfRVhFQyk6IERvbid0IHBlcmZvcm0gYQoJc3RydWN0dXJlIGNvcHkgZWFjaCB0aW1lLgoKMjAwNS0xMS0xMSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL2NhY2hlL2Z0Y2NhY2hlLmMgKEZUQ19DYWNoZV9DbGVhciksIHNyYy9jYWNoZS9mdGNtYW5hZy5jCgkoRlRDX01hbmFnZXJfQ2hlY2spOiBSZW1vdmUgRlRfRVhQT1JUX0RFRiB0YWcuCgoJKiBzcmMvYmFzZS9mdGNhbGMuYyAoRlRfQWRkNjQpOiBSZW1vdmUgRlRfRVhQT1JUX0RFRiB0YWcuCgkoRlRfRGl2NjRieTMyLCBGVF9TcXJ0MzIpOiBDb21tZW50ZWQgb3V0LiAgVW51c2VkLgoKCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdGNhbGMuaCAoU1FSVF8zMik6IFJlbW92ZWQuICBVbnVzZWQuCgkoRlRfU3FydDMyKTogQ29tbWVudGVkIG91dC4gIFVudXNlZC4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvY2FjaGUvZnRjY2FjaGUuaDoKCXMvZnRjX25vZGVfZGVzdHJveS9GVENfTm9kZV9EZXN0cm95Ly4KCgkqIHNyYy9jYWNoZS9mdGNjYmFjay5oIChmdGNfbm9kZV9kZXN0cm95KTogTmV3IGRlY2xhcmF0aW9uLgoKCSogc3JjL2NhY2hlL2Z0Y2NhY2hlLmMgKGZ0Y19ub2RlX2Rlc3Ryb3kpOiBVc2UgRlRfTE9DQUxfREVGIHRhZy4KCShGVENfTm9kZV9EZXN0cm95KTogTmV3IGV4cG9ydGVkIHdyYXBwZXIgZnVuY3Rpb24gZm9yCglmdGNfbm9kZV9kZXN0cm95LgoKCSogc3JjL2NhY2hlL2Z0Y21hbmFnLmM6IEluY2x1ZGUgZnRjY2JhY2suYy4KCjIwMDUtMTEtMTAgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9hdXRvZml0L2FmYW5nbGVzLmMsIHNyYy9hdXRvZml0L2FmdHlwZXMuaCAoYWZfYW5nbGVfZGlmZik6CglDb21tZW50IG91dC4gIFVudXNlZC4KCgkqIGJ1aWxkcy9leHBvcnRzLm1rICgkKEVYUE9SVFNfTElTVCkpOiBBZGQgVFRfUnVuSW5zLgoKMjAwNS0xMS0xMCAgQ2hyaXN0aWFuIEJpZXNpbmdlciAgPGNiaWVzaW5nZXJAd2ViLmRlPgoKCSogYnVpbGRzL2Jlb3MvYmVvcy5tazogQ2FsbCBiZW9zLWRlZi5tayBiZWZvcmUgYW55dGhpbmcgZWxzZSB0bwoJZGVmaW5lIHRoZSBzZXBhcmF0b3IuCgoJKiBidWlsZHMvdW5peC91bml4LWNjLmluIChMSU5LX0xJQlJBUlkpOiBBZGQgYC1uby11bmRlZmluZWQnIGZsYWcuCgoyMDA1LTExLTA3ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvdHlwZTEvdDFhZm0uYyAoVDFfUmVhZF9QRk0pOiBaZXJvIG9mZnNldCBtZWFucyBgbm8ga2VybmluZwoJdGFibGUgYXZhaWxhYmxlJy4gIEZyb20gU2VyZ2V5IFRvbHN0b3YgPHN0b2xzdG92QGVzcmkuY29tPi4KCjIwMDUtMTEtMDMgIFZpbGxlIFN5cmrkbOQgIDxzeXJqYWxhQHNjaS5maT4KCgkqIHNyYy9iYXNlL2Z0b2Jqcy5jIChGVF9PcGVuX0ZhY2UpOiBBdm9pZCBwb3NzaWJsZSBtZW1vcnkgbGVhay4KCjIwMDUtMTEtMDIgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCglNYWtlIGNvbXBpbGluZyBpbnN0cnVjdGlvbnMgaW4gZG9jcy9DVVNUT01JWkUgd29yayBhZ2Fpbi4KCgkqIGJ1aWxkcy91bml4L3VuaXgtY2MuaW4gKENQUEZMQUdTKTogTmV3IHZhcmlhYmxlLgoJKENGTEFHUyk6IERvbid0IGluY2x1ZGUgQENQUEZMQUdTQC4KCSogYnVpbGRzL2ZyZWV0eXBlLm1rIChGVF9DRkxBR1MpOiBBZGQgQ1BQRkxBR1MuCgoyMDA1LTEwLTI4ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJVXBkYXRlIGJ1aWxkIHN5c3RlbSB0byBzdXBwb3J0IHRoZSBnZW5lcmF0aW9uIG9mIGEgbGlzdCBvZiBleHBvcnRlZAoJc3ltYm9scyBvciBXaW5kb3dzIC5ERUYgZmlsZXMgYnkgcGFyc2luZyB0aGUgcHVibGljIGhlYWRlcnMgd2l0aCB0aGUKCWBhcGluYW1lcycgdG9vbCBsb2NhdGVkIGluIHNyYy90b29scy9hcGluYW1lcy5jLgoKCU9ubHkgdGVzdGVkIG9uIFVuaXggYXQgdGhlIG1vbWVudC4gIE9uIFdpbmRvd3MsIHRoZSAuREVGIGZpbGUgaXMKCWdlbmVyYXRlZCBidXQgaXNuJ3QgdXNlZCB5ZXQgdG8gZ2VuZXJhdGUgYSBETEwuCgoJKiBidWlsZHMvZXhwb3J0cy5tazogTmV3IGZpbGUuCgoJKiBidWlsZHMvZnJlZXR5cGUubWs6IEluY2x1ZGUgZXhwb3J0cy5tay4KCShkbGwpOiBOZXcgdGFyZ2V0LgoJKGNsZWFuX3Byb2plY3RfZG9zKTogRml4IHJ1bGUuCgoJKiBidWlsZHMvY29tcGlsZXIvdmlzdWFsYy5tayAoVEUpLCBidWlsZHMvZG9zL2Rvcy1kZWYubWsgKEUpLAoJYnVpbGRzL29zMi9vczItZGVmLm1rIChFKSwgYnVpbGRzL3dpbjMyL3dpbjMyLWRlZi5tayAoRSk6IE5ldwoJdmFyaWFibGVzIGZvciBjb250cm9sbGluZyBleGVjdXRhYmxlIGV4dGVuc2lvbnMuCgoJKiBidWlsZHMvdW5peC91bml4LWNjLmluIChFWFBPUlRTX0xJU1QsIENDZXhlKSwKCWJ1aWxkcy93aW4zMi93MzItYmNjLm1rLCBidWlsZHMvd2luMzIvdzMyLWdjYy5taywKCWJ1aWxkcy93aW4zMi93MzItaWNjLm1rLCBidWlsZHMvd2luMzIvdzMyLWljYy5taywKCWJ1aWxkcy93aW4zMi93MzItbWluZ3czMi5taywgYnVpbGRzL3dpbjMyL3czMi12Y2MsCglidWlsZHMvd2luMzIvdzMyLXdhdC5tayAoRVhQT1JUU19MSVNULCBFWFBPUlRfT1BUSU9OUywKCUFQSU5BTUVTX09QVElPTlMpOiBOZXcgdGFyZ2V0cyBmb3IgY29udHJvbGxpbmcgdGhlIGBhcGluYW1lcycgdG9vbC4KCgkqIEphbWZpbGUgKEdlbkV4cG9ydFN5bWJvbHMpOiBVcGRhdGVkLgoKCgkqIHNyYy9wZnIvcGZydHlwZXMuaCwgc3JjL3Bmci9wZnJsb2FkLmMsIHNyYy9wZnIvcGZyb2Jqcy5jCglbIUZUX09QVElNSVpFX01FTU9SWV06IEZvbGQgbWVtb3J5IG9wdGltaXphdGlvbiBjb2RlIGludG8KCUZUX09QVElNSVpFX01FTU9SWSBjaHVua3MgZm9yIGJldHRlciBtYWludGFpbmFiaWxpdHkgYW5kIHNpbXBsaWNpdHkuCgoKCSogc3JjL2Jhc2UvZnR0cmlnb24uYyAoZnRfdHJpZ19wcmVub3JtKSwgc3JjL2Jhc2UvZnRjYWxjLmMKCShGVF9NdWxGaXgpOiBQZXJmb3JtYW5jZSBvcHRpbWl6YXRpb25zLgoKCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRnbG9hZHIuaCAoRlRfR0xZUEhMT0FERVJfQ0hFQ0tfUCwKCUZUX0dMWVBITE9BREVSX0NIRUNLX0MsIEZUX0dMWVBITE9BREVSX0NIRUNLX1BPSU5UUyk6IE5ldyBtYWNyb3MgZm9yCgljaGVja2luZyBwb2ludHMgYW5kIGNvbnRvdXJzLiAgVXBkYXRlIGNhbGxlcnMgdG8gdXNlCglGVF9HTFlQSExPQURFUl9DSEVDS19QT0lOVFMgaW5zdGVhZCBvZiBGVF9HbHlwaExvYWRlcl9DaGVja1BvaW50cwoJYXQgcHJvZmlsZS1kZXRlY3RlZCBob3Qtc3BvdHMuCgoJKiBzcmMvYmFzZS9mdGdsb2Fkci5jIChGVF9HbHlwaExvYWRlcl9DaGVja1BvaW50cyk6IFNldCBgYWRqdXN0JwoJdG8gMCB0byBub3QgY2FsbCBgQWRqdXN0UG9pbnRzJyBldmVyeSB0aW1lLgoKCgkqIHNyYy9hdXRvZml0L2FmdHlwZXMuaCAoQUZfQU5HTEVfRElGRik6IE5ldyBtYWNybyB0byBpbmxpbmUKCUZUX0FuZ2xlX0RpZmYuCgoJKiBzcmMvYXV0b2ZpdC9hZmhpbnRzLmMgKGFmX2RpcmVjdGlvbl9jb21wdXRlKTogUmUtaW1wbGVtZW50LgoJKGFmX2dseXBoX2hpbnRzX2NvbXB1dGVfaW5mbGVjdGlvbnMsIGFmX2dseXBoX2hpbnRzX3JlbG9hZCk6IFVzZQoJQUZfQU5HTEVfRElGRiB0byBzcGVlZCB1cCB0aGUgZGV0ZWN0aW9uIG9mIGluZmxleGlvbnMuCgoKCSogc3JjL3Rvb2xzL2FwaW5hbWVzLmM6IEluY2x1ZGUgPHN0cmluZy5oPi4KCShPdXRwdXRGb3JtYXQpOiBOZXcgZW51bWVyYXRpb24uCgkobmFtZXNfZHVtcCk6IEFkZCB0d28gcGFyYW1ldGVycyB0byBjb250cm9sIG91dHB1dCBmb3JtYXQgYW5kIERMTAoJbmFtZS4KCShuYW1lc19kdW1wX3dpbmRlZik6IFJlbW92ZWQuICBDb2RlIGZvbGRlZCBpbnRvIGBuYW1lc19kdW1wJy4KCShyZWFkX2hlYWRlcl9maWxlKTogVXNlIGlzYWxudW0sIG5vdCBpc2FscGhhLiAgT3RoZXJ3aXNlIGZ1bmN0aW9uCgluYW1lcyB3aXRoIGRpZ2l0cyBhcmVuJ3QgcmVhZCBjb3JyZWN0bHkuCgkodXNhZ2UpOiBVcGRhdGVkLgoJKG1haW4pOiBOZXcgb3B0aW9uIGAtbycgdG8gY29udHJvbCBvdXRwdXQgZmlsZSBuYW1lLgoJTmV3IG9wdGlvbiBgLWQnIHRvIGluZGljYXRlIERMTCBmaWxlIG5hbWUuCglFeHRlbmQgYC13JyBmbGFnIHRvIGhhbmRsZSBCb3JsYW5kIGFuZCBXYXRjb20gY29tcGlsZXJzIGFuZCBsaW5rZXJzLgoKMjAwNS0xMC0yOCAgc3V6dWtpIHRvc2hpeWEgIDxtcHN1enVraUBoaXJvc2hpbWEtdS5hYy5qcD4KCgkqIGJ1aWxkcy9tYWMvZnRsaWIucHJqLCBidWlsZHMvbWFjL2ZyZWV0eXBlLm1hazogUmVtb3ZlZC4KCWZ0bGliLnByaiBpcyB1bm1haW50YWluZWQgYW5kIGluY29tcGF0aWJsZSB3aXRoIGN1cnJlbnQgdHJlZS4KCWZyZWV0eXBlLm1hayBpcyB1bnJlY292ZXJhYmx5IGJyb2tlbi4KCgkqIGJ1aWxkcy9tYWMvZnRsaWIucHJqLnhtbDogQWRkZWQuCglHZW5lcmF0ZWQgYnkgTWV0cm93ZXJrcyBDb2RlV2FycmlvciA5LjAuCgoJKiBidWlsZHMvbWFjL0ZyZWVUeXBlLm02OGtfZmFyLm1ha2UudHh0LAoJYnVpbGRzL21hYy9GcmVlVHlwZS5tNjhrX2NmbS5tYWtlLnR4dCwKCWJ1aWxkcy9tYWMvRnJlZVR5cGUucHBjX2NsYXNzaWMubWFrZS50eHQsCglidWlsZHMvbWFjL0ZyZWVUeXBlLnBwY19jYXJib24ubWFrZS50eHQ6IEFkZGVkLgoJU2tlbGV0b24gZmlsZXMgb2YgTVBXIG1ha2VmaWxlcy4KCgkqIGJ1aWxkcy9tYWMvYXNjaWkybXB3LnB5OiBBZGRlZC4KCVB5dGhvbiBzY3JpcHQgdG8gbWFrZSBNUFcgbWFrZWZpbGUgZnJvbSBza2VsZXRvbi4KCgkqIGJ1aWxkcy9tYWMvUkVBRE1FOiBVcGRhdGVkLgoJQWxtb3N0IHJld3JpdHRlbiB0byB1c2UgbmV3IGZpbGVzLgoKMjAwNS0xMC0yOCAgc3V6dWtpIHRvc2hpeWEgIDxtcHN1enVraUBoaXJvc2hpbWEtdS5hYy5qcD4KCgkqIHNyYy9iYXNlL2Z0bWFjLmM6IEZpeCBpbnZhbGlkIGNhc3RzIGZyb20gTlVMTCB0byBpbnRlZ2VyIHR5cGVkCgl2YXJpYWJsZXMuICBBZHZpc2VkIGJ5IERhdmlkIFR1cm5lciwgTWFzYXRha2UgWUFNQVRPLCBTZWFuIE1jQnJpZGUsCglhbmQgR2VvcmdlIFdpbGxpYW1zLgoKMjAwNS0xMC0yNyAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogaW5jbHVkZS9mcmVldHlwZS9mdHN5c21lbS5oLCBpbmNsdWRlL2ZyZWV0eXBlL2Z0c3lzaW8uaDogUmVtb3ZlZC4KCU9ic29sZXRlLgoKMjAwNS0xMC0yNSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL3NmbnQvc2Zkcml2ZXIuYyAoc2ZudF9pbnRlcmZhY2UpOiBNb3ZlIG91dAoJYHR0X2ZhY2VfZ2V0X2tlcm5pbmcnIGZyb20gYSAjaWZkZWYgY2xhdXNlLiAgUmVwb3J0ZWQgYnkgVG9ueSBKLgoJSWJicyA8dGlic0Bzai5jby51az4uCgoyMDA1LTEwLTIzICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvYmFzZS9mdGRiZ21lbS5jIChmdF9tZW1fZGVidWdfcmVhbGxvYyk6IE1ha2UgaXQgY29tcGlsZSB3aXRoCglDKysuCgoyMDA1LTEwLTIxICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBzcmMvYmFzZS9mdGRiZ21lbS5jIChmdF9tZW1fdGFibGVfc2V0LCBmdF9tZW1fZGVidWdfcmVhbGxvYyk6CglBbm90aGVyIHJlYWxsb2MgbWVtb3J5IGNvdW50aW5nIGJ1ZyBmaXguCgoJKiBzcmMvdG9vbHMvSmFtZmlsZTogQWRkIG1pc3NpbmcgZmlsZS4KCgkqIHNyYy9sencvSmFtZmlsZTogRml4IGluY29ycmVjdCBzb3VyY2UgZmlsZSByZWZlcmVuY2UuCgoyMDA1LTEwLTIwICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBzcmMvYmFzZS9mdGRiZ21lbS5jIChmdF9tZW1fdGFibGVfc2V0LCBmdF9tZW1fdGFibGVfcmVtb3ZlLAoJZnRfbWVtX2RlYnVnX2FsbG9jLCBmdF9tZW1fZGVidWdfZnJlZSwgZnRfbWVtX2RlYnVnX3JlYWxsb2MpOiBGaXhlcwoJdG8gYmV0dGVyIGFjY291bnQgZm9yIG1lbW9yeSByZWFsbG9jYXRpb25zLgoKCSogc3JjL2x6dy9mdGx6dzIuYywgc3JjL2x6dy9mdHpvcGVuLmgsIHNyYy9sencvZnR6b3Blbi5jLAoJc3JjL2x6dy9ydWxlcy5tazogRmlyc3QgdmVyc2lvbiBvZiBMWlcgbG9hZGVyIHJlLWltcGxlbWVudGF0aW9uLgoJQXBwYXJlbnRseSwgdGhpcyBzYXZlcyBhYm91dCAzMzAgS0Igb2YgaGVhcCBtZW1vcnkgd2hlbiBsb2FkaW5nCgl0aW1SMjQucGNmLlouCgoyMDA1LTEwLTIwICBDaGlhLUkgV3UgIDxiOTAyMDEwNDdAbnR1LmVkdS50dz4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnRiaXRtYXAuaCAoRlRfQml0bWFwX0NvcHksIEZUX0JpdG1hcF9FbWJvbGRlbiksCglzcmMvYmFzZS9mdGJkZi5jIChGVF9HZXRfQkRGX1Byb3BlcnR5KSwgc3JjL2NhY2hlL2Z0Y21ydS5jCgkoRlRDX01ydUxpc3RfUmVzZXQsIEZUQ19NcnVMaXN0X0RvbmUsIEZUQ19NcnVMaXN0X0xvb2t1cCk6IEZpeAoJRlRfRVhQT1JUL0ZUX0VYUE9SVF9ERUYgdGFnZ2luZy4KCjIwMDUtMTAtMTkgIENoaWEtSSBXdSAgPGI5MDIwMTA0N0BudHUuZWR1LnR3PgoKCSogc3JjL3RydWV0eXBlL3R0Z2xvYWQuYyAoVFRfTG9hZF9HbHlwaCk6IEFsbG93IHNpemUtPnR0bWV0cmljcyB0bwoJYmUgaW52YWxpZCB3aGVuIEZUX0xPQURfTk9fU0NBTEUgaXMgc2V0LgoKMjAwNS0xMC0xNyAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogc3JjL2Jhc2UvZnRvYmpzLmMgKEZUX09wZW5fRmFjZSk6IERvbid0IGNhbGwgRlRfTmV3X0dseXBoU2xvdCBhbmQKCUZUX05ld19TaXplIGlmIHdlIGFyZSBvcGVuaW5nIGEgZmFjZSB3aXRoIGZhY2VfaW5kZXggPCAwICh3aGljaCBpcwoJb25seSB1c2VkIGZvciB0ZXN0aW5nIHRoZSBmb3JtYXQpLgoKCSogc3JjL2d4dmFsaWQvZ3h2bW9ydDAuYyAoZ3h2X21vcnRfc3VidGFibGVfdHlwZTBfZW50cnlfdmFsaWRhdGUpOgoJUmVtb3ZlIGNvbXBpbGVyIHdhcm5pbmcuCgoyMDA1LTEwLTE2ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBzcmMvdG9vbHMvYXBpbmFtZXMuYzogQWRkIG5ldyB0b29sIHRvIGV4dHJhY3QgcHVibGljIEFQSSBmdW5jdGlvbgoJbmFtZXMgZnJvbSBoZWFkZXIgZmlsZXMuCgoyMDA1LTEwLTA1ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJQWRkIEZUX0ZBQ0VfRkxBR19ISU5URVIgdG8gaW5kaWNhdGUgdGhhdCBhIHNwZWNpZmljIGZvbnQgZHJpdmVyIGhhcwoJYSBoaW50aW5nIGVuZ2luZSBvZiBpdHMgb3duLgoKCSogaW5jbHVkZS9mcmVldHlwZS9mcmVldHlwZS5oIChGVF9GQUNFX0ZMQUdfSElOVEVSKTogTmV3IG1hY3JvLgoKCSogc3JjL2NmZi9jZmZvYmpzLmMgKGNmZl9mYWNlX2luaXQpLCBzcmMvY2lkL2NpZG9ianMuYwoJKGNpZF9mYWNlX2luaXQpLCBzcmMvdHJ1ZXR5cGUvdHRvYmpzLmMgKHR0X2ZhY2VfaW5pdCkKCVtUVF9DT05GSUdfT1BUSU9OX0JZVEVDT0RFX0lOVEVSUFJFVEVSXSwgc3JjL3R5cGUxL3Qxb2Jqcy5jCgkoVDFfRmFjZV9Jbml0KSwgc3JjL3R5cGU0Mi90NDJvYmpzLmMgKFQ0Ml9GYWNlX0luaXQpCglbVFRfQ09ORklHX09QVElPTl9CWVRFQ09ERV9JTlRFUlBSRVRFUl06IFVwZGF0ZSBmYWNlIGZsYWdzLgoKCSogZG9jcy9DSEFOR0VTOiBEb2N1bWVudCBpdC4KCjIwMDUtMDktMjcgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGJ1aWxkcy91bml4L2ZyZWV0eXBlMi5tNDogQWRkIGxpY2Vuc2UgZXhjZXB0aW9uIHNvIHRoYXQgdGhlIGZpbGUKCWNhbiBiZSB1c2VkIGluIGFueSBvdGhlciBhdXRvY29uZiBzY3JpcHQuCgoyMDA1LTA5LTI2ICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBzcmMvYXV0b2ZpdC9hZmxhdGluLmMgKGFmX2xhdGluX2NvbXB1dGVfc3RlbV93aWR0aCk6IEZpeCBiYWQKCWNvbXB1dGF0aW9uIG9mIHRoZSBgdmVydGljYWwnIGZsYWcsIGNhdXNpbmcgdWdseSB0aGluZ3MgaW4gTENEIG1vZGUKCWFuZCBvdGhlcnMuCgoyMDA1LTA5LTIzICBEYXZpZCBUdXJuZXIgIDxkYXZpZEBmcmVldHlwZS5vcmc+CgoJKiBzcmMvYXV0b2ZpdC9hZmxhdGluLmMgKGFmX2xhdGluX2hpbnRzX2luaXQpOiBGaXggYSBidWcgdGhhdAoJcHJldmVudGVkIGludGVybmFsIGhpbnQgbW9kZSBiaXRmbGFncyBmcm9tIGJlaW5nIGNvbXB1dGVkIGNvcnJlY3RseS4KCgkqIHNyYy9iYXNlL0phbWZpbGU6IEFkZGluZyBzcmMvYmFzZS9mdGd4dmFsLmMuCgoJKiBzcmMvZ3h2YWxpZC9neHZic2xuLmMsIHNyYy9neHZhbGlkL2d4dmNvbW1uLmMsCglzcmMvZ3h2YWxpZC9neHZmZWF0LmMsIHNyYy9neHZhbGlkL2d4dmp1c3QuYywgc3JjL2d4dmFsaWQvZ3h2a2Vybi5jLAoJc3JjL2d4dmFsaWQvZ3h2bGNhci5jLCBzcmMvZ3h2YWxpZC9neHZtb3J0LmMsCglzcmMvZ3h2YWxpZC9neHZtb3J0MC5jLCBzcmMvZ3h2YWxpZC9neHZtb3J0MS5jLAoJc3JjL2d4dmFsaWQvZ3h2bW9ydDIuYywgc3JjL2d4dmFsaWQvZ3h2bW9ydDQuYywKCXNyYy9neHZhbGlkL2d4dm1vcnQ1LmMsIHNyYy9neHZhbGlkL2d4dm1vcnguYywKCXNyYy9neHZhbGlkL2d4dm1vcngwLmMsIHNyYy9neHZhbGlkL2d4dm1vcngxLmMsCglzcmMvZ3h2YWxpZC9neHZtb3J4Mi5jLCBzcmMvZ3h2YWxpZC9neHZtb3J4NS5jLAoJc3JjL2d4dmFsaWQvZ3h2b3BiZC5jLCBzcmMvZ3h2YWxpZC9neHZwcm9wLmMsCglzcmMvdHJ1ZXR5cGUvdHRnbG9hZC5jOiBSZW1vdmUgX21hbnlfIGNvbXBpbGVyIHdhcm5pbmdzIHdoZW4KCWNvbXBpbGluZyB3aXRoIFZpc3VhbCBDKysgYXQgbWF4aW11bSBsZXZlbCAoL1c0KS4KCgkqIHNyYy9hdXRvZml0L2FmYW5nbGVzLmMgKGFmX2FuZ2xlX2F0YW4pOiBSZXBsYWNlZCBDT1JESUMtYmFzZWQKCWltcGxlbWVudGF0aW9uIHdpdGggb25lIHVzaW5nIGxvb2t1cCB0YWJsZXMuICBUaGlzIHNpbXBsZSB0aGluZwoJc3BlZWRzIHVwIGdseXBoIGxvYWRpbmcgYnkgMTglLCBhY2NvcmRpbmcgdG8gZnRiZW5jaCEKCgkqIHNyYy9zZm50L3NmZHJpdmVyLmMgKHNmbnRfZ2V0X2ludGVyZmFjZSk6IERvbid0IGNoZWNrIGZvcgoJYGdldF9zZm50JyBhbmQgYGxvYWRfc2ZudCcgbW9kdWxlIGludGVyZmFjZXMuCgoyMDA1LTA5LTIyICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBkb2NzL0NIQU5HRVM6IE1lbnRpb24gU0lORyBHbHlwaGxldCBzdXBwb3J0LgoKMjAwNS0wOS0yMiAgRGF2aWQgVHVybmVyICA8ZGF2aWRAZnJlZXR5cGUub3JnPgoKCSogc3JjL2Jhc2UvSmFtZmlsZTogRGlzYWJsZSBjb21waWxhdGlvbiBvZiBmdGd4dmFsIG1vZHVsZQoJdGVtcG9yYXJpbHkuCgoyMDA1LTA5LTE5ICBEYXZpZCBTb21lcnMgIDxkc29tZXJzQG9tejEzLmNvbT4KCgkqIGZyZWV0eXBlMi9zcmMvc2ZudC90dGxvYWQuYyAoc2ZudF9kaXJfY2hlY2spOiBNb2RpZmllZCB0byBhbGxvdyBhCglmb250IHRvIGhhdmUgbm8gYGhlYWQnIHRhYmxlIGlmIHRhYmxlcyBgU0lORycgYW5kIGBNRVRBJyBhcmUKCXByZXNlbnQ7IHRoaXMgaXMgdG8gc3VwcG9ydCBgU0lORyBHbHlwaGxldCcuCgoJYFNJTkcgR2x5cGhsZXQnIGlzIGFuIGV4dGVuc2lvbiB0byBPcGVuVHlwZSBkZXZlbG9wZWQgYnkgQWRvYmUKCXByaW1hcmlseSB0byBmYWNpbGl0YXRlIGFkZGluZyBzdXBwbGVtZW50YWwgZ2x5cGhzIHRvIGFuIE9wZW5UeXBlCglmb250ICh3aXRoIGVtcGhhc2lzIG9uLCBidXQgbm90IG5lY2Vzc2FyaXkgbGltaXRlZCB0bywgZ2FpamkgdG8gYQoJQ0pLIGZvbnQpLiAgQSBTSU5HIEdseXBobGV0IEZvbnQgaXMgYW4gT3BlblR5cGUgZm9udCB0aGF0IGNvbnRhaW5zCgl0aGUgb3V0bGluZShzKSwgZWl0aGVyIGluIGEgYGdseWYnIG9yIGBDRkYnIHRhYmxlLCBmb3IgYSBnbHlwaDsKCWBjbWFwJywgYEJBU0UnLCBhbmQgYEdTVUInIHRhYmxlcyBhcmUgcHJlc2VudCB3aXRoIHRoZSBzYW1lIGZvcm1hdAoJYW5kIGZ1bmN0aW9uYWxpeSBhcyBhIHJlZ3VsYXIgT3BlblR5cGUgZm9udDsgdGhlcmUgYXJlIG5vIGBuYW1lJywKCWBoZWFkJywgYE9TLzInLCBhbmQgYHBvc3QnIHRhYmxlczsgdGhlcmUgYXJlIHR3byBuZXcgdGFibGVzLCBgU0lORycKCXdoaWNoIGNvbnRhaW5zIGRldGFpbHMgYWJvdXQgdGhlIGdseXBobGV0LCBhbmQgYE1FVEEnIHdoaWNoIGNvbnRhaW5zCgltZXRhZGF0YS4KCglGdXJ0aGVyIGluZm9ybWF0aW9uIG9uIHRoZSBTSU5HIEdseXBobGV0IGZvcm1hdCBjYW4gYmUgZm91bmQgYXQ6CgoJICBodHRwOi8vd3d3LmFkb2JlLmNvbS9wcm9kdWN0cy9pbmRlc2lnbi9zaW5nX2dhaWppLmh0bWwKCgkqIGZyZWV0eXBlMi9pbmNsdWRlL2ZyZWV0eXBlL3R0YWdzLmggKFRUQUdfU0lORywgVFRBR19NRVRBKTogTmV3CgltYWNyb3MgZm9yIHRoZSBPcGVuVHlwZSB0YWJsZXMgYFNJTkcnIGFuZCBgTUVUQScuICBUaGVzZSB0d28gdGFibGVzCglhcmUgdXNlZCBpbiBTSU5HIEdseXBobGV0IEZvcm1hdCBmb250cy4KCjIwMDUtMDktMDkgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIHNyYy9zZm50L3Nmb2Jqcy5jIChzZm50X2xvYWRfZmFjZSk6IFJlYWN0aXZhdGUgY29kZSB0byBzZXQKCUZUX0ZBQ0VfRkxBR19LRVJOSU5HIHdoaWNoIGhhcyBiZWVuIGNvbW1lbnRlZCBvdXQgZXJyb25lb3VzbHkuCgoJKiBkb2NzL0NIQU5HRVM6IERvY3VtZW50IGl0LgoKMjAwNS0wOS0wNSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCUZpeGVzIGZvciBgbWFrZSBtdWx0aScgYW5kIHVzaW5nIEMrKyBjb21waWxlci4KCgkqIGd4dmFsaWQvZ3h2Y29tbW4uYyAoZ3h2X3NldF9sZW5ndGhfYnlfdXNob3J0X29mZnNldCwKCWd4dl9zZXRfbGVuZ3RoX2J5X3Vsb25nX29mZnNldCwgZ3h2X2FycmF5X2dldGxpbWl0c19ieXRlLAoJZ3h2X2FycmF5X2dldGxpbWl0c191c2hvcnQpOiBEZWNsYXJlIHdpdGggRlRfTE9DQUxfREVGLgoJKGd4dl9jb21wYXJlX3Jhbmdlcyk6IE1ha2UgaXQgc3RhdGljLgoJKGd4dl9Mb29rdXBUYWJsZV9mbXQwX3ZhbGlkYXRlLCBneHZfTG9va3VwVGFibGVfZm10Ml92YWxpZGF0ZSwKCWd4dl9Mb29rdXBUYWJsZV9mbXQ0X3ZhbGlkYXRlLCBneHZfTG9va3VwVGFibGVfZm10Nl92YWxpZGF0ZSwKCWd4dl9Mb29rdXBUYWJsZV9mbXQ4X3ZhbGlkYXRlLCBneHZfTG9va3VwVGFibGVfdmFsaWRhdGUpOiBJbXByb3ZlCgl0cmFjZSBtZXNzYWdlcy4KCShneHZfU3RhdGVBcnJheV92YWxpZGF0ZSwgZ3h2X1hTdGF0ZUFycmF5X3ZhbGlkYXRlKTogcy9jbGFzcy9jbGF6ei8uCgkoR1hWX1NUQVRFVEFCTEVfSEVBREVSX1NJWkUsIEdYVl9TVEFURUhFQURFUl9TSVpFLAoJR1hWX1hTVEFURVRBQkxFX0hFQURFUl9TSVpFLCBHWFZfWFNUQVRFSEVBREVSX1NJWkUpOiBNb3ZlIHRvCglneHZjb21tbi5oLgoKCSogZ3h2YWxpZC9neHZjb21tbi5oOiBBZGQgcHJvdG90eXBlcyBmb3IKCWd4dl9TdGF0ZVRhYmxlX3N1YnRhYmxlX3NldHVwLCBneHZfWFN0YXRlVGFibGVfc3VidGFibGVfc2V0dXAsCglneHZfWFN0YXRlVGFibGVfdmFsaWRhdGUsIGd4dl9hcnJheV9nZXRsaW1pdHNfYnl0ZSwKCWd4dl9hcnJheV9nZXRsaW1pdHNfdXNob3J0LCBneHZfc2V0X2xlbmd0aF9ieV91c2hvcnRfb2Zmc2V0LAoJZ3h2X3NldF9sZW5ndGhfYnlfdWxvbmdfb2Zmc2V0LCBneHZfb2R0ZWN0X2FkZF9yYW5nZSwKCWd4dl9vZHRlY3RfdmFsaWRhdGUuCgkoR1hWX1NUQVRFVEFCTEVfSEVBREVSX1NJWkUsIEdYVl9TVEFURUhFQURFUl9TSVpFLAoJR1hWX1hTVEFURVRBQkxFX0hFQURFUl9TSVpFLCBHWFZfWFNUQVRFSEVBREVSX1NJWkUpOiBNb3ZlZCBmcm9tCglneHZjb21tbi5jLgoKCSogc3JjL2d4dmFsaWQvZ3h2YnNsbi5jIChneHZfYnNsbl9Mb29rdXBWYWx1ZV92YWxpZGF0ZSwKCWd4dl9ic2xuX3BhcnRzX2ZtdDFfdmFsaWRhdGUpOiBJbXByb3ZlIHRyYWNlIG1lc3NhZ2VzLgoKCSogZ3h2YWxpZC9neHZmZWF0LmM6IFNwbGl0IG9mZiBwcmVkZWZpbmVkIHJlZ2lzdHJ5IHN0dWZmIHRvLi4uCgkqIGd4dmFsaWQvZ3h2ZmVhdC5oOiBOZXcgZmlsZS4KCgkqIGd4dmFsaWQvZ3h2anVzdC5jIChneHZfanVzdF93ZGNfZW50cnlfdmFsaWRhdGUpOiBJbXByb3ZlIHRyYWNlCgltZXNzYWdlLgoKCSogZ3h2YWxpZC9neHZrZXJuLmMgKEdYVl9rZXJuX0RpYWxlY3QpOiBBZGQgS0VSTl9ESUFMRUNUX1VOS05PV04uCgkoZ3h2X2tlcm5fc3VidGFibGVfZm10MV92YWx1ZVRhYmxlX2xvYWQsCglneHZfa2Vybl9zdWJ0YWJsZV9mbXQxX3N1YnRhYmxlX3NldHVwLAoJZ3h2X2tlcm5fc3VidGFibGVfZm10MV9lbnRyeV92YWxpZGF0ZSk6IEZpeCBDKysgY29tcGlsZXIgZXJyb3JzLgoJKGd4dl9rZXJuX2NvdmVyYWdlX3ZhbGlkYXRlKTogVXNlIEtFUk5fRElBTEVDVF9VTktXT1dOLgoJSW1wcm92ZSB0cmFjZSBtZXNzYWdlLgoJKGd4dl9rZXJuX3ZhbGlkYXRlX2dlbmVyaWMpOiBGaXggQysrIGNvbXBpbGVyIGVycm9yLgoJSW1wcm92ZSB0cmFjZSBtZXNzYWdlLgoJKGd4dl9rZXJuX3ZhbGlkYXRlX2NsYXNzaWMpOiBGaXggQysrIGNvbXBpbGVyIGVycm9yLgoKCSogZ3h2YWxpZC9neHZtb3J0MC5jIChneHZfbW9ydF9zdWJ0YWJsZV90eXBlMF92YWxpZGF0ZSk6IERlY2xhcmUKCXdpdGggRlRfTE9DQUxfREVGLgoKCSogZ3h2YWxpZC9neHZtb3J0MS5jCgkoZ3h2X21vcnRfc3VidGFibGVfdHlwZTFfc3Vic3RpdHV0aW9uVGFibGVfbG9hZCwKCWd4dl9tb3J0X3N1YnRhYmxlX3R5cGUxX3N1YnRhYmxlX3NldHVwKTogRml4IEMrKyBjb21waWxlciBlcnJvcnMuCgkoZ3h2X21vcnRfc3VidGFibGVfdHlwZTFfc3Vic3RUYWJsZV92YWxpZGF0ZSk6IEltcHJvdmUgdHJhY2UKCW1lc3NhZ2UuCgkoZ3h2X21vcnRfc3VidGFibGVfdHlwZTFfdmFsaWRhdGUpOiBEZWNsYXJlIHdpdGggRlRfTE9DQUxfREVGLgoKCSogZ3h2YWxpZC9neHZtb3J0Mi5jIChneHZfbW9ydF9zdWJ0YWJsZV90eXBlMl9vcHR0YWJsZV9sb2FkLAoJZ3h2X21vcnRfc3VidGFibGVfdHlwZTJfc3VidGFibGVfc2V0dXAsCglneHZfbW9ydF9zdWJ0YWJsZV90eXBlMl9saWdBY3Rpb25PZmZzZXRfdmFsaWRhdGUsCglneHZfbW9ydF9zdWJ0YWJsZV90eXBlMl9saWdhdHVyZVRhYmxlX3ZhbGlkYXRlKTogRml4IEMrKyBjb21waWxlcgoJZXJyb3JzLgoJKGd4dl9tb3J0X3N1YnRhYmxlX3R5cGUyX3ZhbGlkYXRlKTogRGVjbGFyZSB3aXRoIEZUX0xPQ0FMX0RFRi4KCgkqIGd4dmFsaWQvZ3h2bW9ydDQuYyAoZ3h2X21vcnRfc3VidGFibGVfdHlwZTRfdmFsaWRhdGUpOiBEZWNsYXJlCgl3aXRoIEZUX0xPQ0FMX0RFRi4KCgkqIGd4dmFsaWQvZ3h2bW9ydDUuYyAoZ3h2X21vcnRfc3VidGFibGVfdHlwZTVfc3VidGFibGVfc2V0dXAsCglneHZfbW9ydF9zdWJ0YWJsZV90eXBlNV9JbnNlcnRMaXN0X3ZhbGlkYXRlKTogRml4IEMrKyBjb21waWxlcgoJZXJyb3JzLgoJKGd4dl9tb3J0X3N1YnRhYmxlX3R5cGU1X3ZhbGlkYXRlKTogRGVjbGFyZSB3aXRoIEZUX0xPQ0FMX0RFRi4KCgkqIGd4dmFsaWQvZ3h2bW9ydC5jOiBJbmNsdWRlIGd4dmZlYXQuaC4KCShneHZfbW9ydF9mZWF0dXJlYXJyYXlfdmFsaWRhdGUsIGd4dl9tb3J0X2NvdmVyYWdlX3ZhbGlkYXRlKToKCURlY2xhcmUgd2l0aCBGVF9MT0NBTF9ERUYuCgkoZ3h2X21vcnRfc3VidGFibGVzX3ZhbGlkYXRlLCBneHZfbW9ydF92YWxpZGF0ZSk6IEltcHJvdmUgdHJhY2UKCW1lc3NhZ2VzLgoKCSogZ3h2YWxpZC9neHZtb3J0LmggKGd4dl9tb3J0X2ZlYXR1cmVfdmFsaWRhdGUpOiBSZW1vdmUuCgoJKiBneHZhbGlkL2d4dm1vcngwLmMgKGd4dl9tb3J4X3N1YnRhYmxlX3R5cGUwX3ZhbGlkYXRlKTogRGVjbGFyZQoJd2l0aCBGVF9MT0NBTF9ERUYuCgoJKiBneHZhbGlkL2d4dm1vcngxLmMKCShneHZfbW9yeF9zdWJ0YWJsZV90eXBlMV9zdWJzdGl0dXRpb25UYWJsZV9sb2FkLAoJZ3h2X21vcnhfc3VidGFibGVfdHlwZTFfc3VidGFibGVfc2V0dXAsCglneHZfbW9yeF9zdWJ0YWJsZV90eXBlMV9lbnRyeV92YWxpZGF0ZSwKCWd4dl9tb3J4X3N1YnRhYmxlX3R5cGUxX3N1YnN0aXR1dGlvblRhYmxlX3ZhbGlkYXRlKTogRml4IEMrKwoJY29tcGlsZXIgZXJyb3JzLgoJKGd4dl9tb3J4X3N1YnRhYmxlX3R5cGUxX3ZhbGlkYXRlKTogRGVjbGFyZSB3aXRoIEZUX0xPQ0FMX0RFRi4KCgkqIGd4dmFsaWQvZ3h2bW9yeDIuYyAoZ3h2X21vcnhfc3VidGFibGVfdHlwZTJfb3B0dGFibGVfbG9hZCwKCWd4dl9tb3J4X3N1YnRhYmxlX3R5cGUyX3N1YnRhYmxlX3NldHVwLAoJZ3h2X21vcnhfc3VidGFibGVfdHlwZTJfbGlnQWN0aW9uSW5kZXhfdmFsaWRhdGUsCglneHZfbW9yeF9zdWJ0YWJsZV90eXBlMl9saWdhdHVyZVRhYmxlX3ZhbGlkYXRlKTogRml4IEMrKyBjb21waWxlcgoJZXJyb3JzLgoJKGd4dl9tb3J4X3N1YnRhYmxlX3R5cGUyX3ZhbGlkYXRlKTogRGVjbGFyZSB3aXRoIEZUX0xPQ0FMX0RFRi4KCUZpeCB0eXBvLgoKCSogZ3h2YWxpZC9neHZtb3J4NC5jIChneHZfbW9yeF9zdWJ0YWJsZV90eXBlNF92YWxpZGF0ZSk6IERlY2xhcmUKCXdpdGggRlRfTE9DQUxfREVGLgoKCSogZ3h2YWxpZC9neHZtb3J4NS5jIChneHZfbW9yeF9zdWJ0YWJsZV90eXBlNV9pbnNlcnRpb25HbHlwaF9sb2FkLAoJZ3h2X21vcnhfc3VidGFibGVfdHlwZTVfc3VidGFibGVfc2V0dXApOiBGaXggQysrIGNvbXBpbGVyIGVycm9yLgoJKGd4dl9tb3J4X3N1YnRhYmxlX3R5cGU1X3ZhbGlkYXRlKTogRGVjbGFyZSB3aXRoIEZUX0xPQ0FMX0RFRi4KCgkqIGd4dmFsaWQvZ3h2bW9yeC5jIChneHZfbW9yeF9zdWJ0YWJsZXNfdmFsaWRhdGUsCglneHZfbW9yeF92YWxpZGF0ZSk6IEltcHJvdmUgdHJhY2UgbWVzc2FnZS4KCgkqIGd4dmFsaWQvZ3h2b3BiZC5jIChneHZfb3BiZF9Mb29rdXBGbXQ0X3RyYW5zaXQpOiBGaXggY29tcGlsZXIKCXdhcm5pbmdzLgoJKGd4dl9vcGJkX3ZhbGlkYXRlKTogSW1wcm92ZSB0cmFjZSBtZXNzYWdlLgoKCSogZ3h2YWxpZC9neHZwcm9wLmM6IERlY29yYXRlIGNvbnN0YW50cyB3aXRoIGBVJyBhbmQgYEwnIHdoZXJlCglhcHByb3ByaWF0ZS4KCShneHZfcHJvcF96ZXJvX2FkdmFuY2VfdmFsaWRhdGUsIGd4dl9wcm9wX3ZhbGlkYXRlKTogSW1wcm92ZSB0cmFjZQoJbWVzc2FnZS4KCgkqIGd4dmFsaWQvZ3h2dHJhay5jIChneHZfdHJha190cmFja1RhYmxlX3ZhbGlkYXRlKTogUmVtb3ZlIHVudXNlZAoJcGFyYW1ldGVyLiAgVXBkYXRlIGFsbCBjYWxsZXJzLgoJKGd4dl90cmFrX3ZhbGlkYXRlKTogSW1wcm92ZSB0cmFjZSBtZXNzYWdlLgoKCSogcnVsZXMubWsgKEdYVl9EUlZfSCk6IEFkZCBneHZmZWF0LmguCgoyMDA1LTA5LTAxICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvZ3h2YWxpZC9neHZic2xuLmMgKEdYVl9CU0xOX1ZBTFVFX0VNUFRZKTogQWRkIGBVJy4KCgkqIHNyYy9neHZhbGlkL2d4bW9ydDEuYyAoR1hWX01PUlRfU1VCVEFCTEVfVFlQRTFfSEVBREVSX1NJWkUpLAoJc3JjL2d4dmFsaWQvZ3htb3J0Mi5jIChHWFZfTU9SVF9TVUJUQUJMRV9UWVBFMl9IRUFERVJfU0laRSk6IEZpeAoJdHlwby4KCgkqIHNyYy9neHZhbGlkL2d4dm1vcngwLmMsIHNyYy9neHZhbGlkL2d4dm1vcngxLmMsCglzcmMvZ3h2YWxpZC9neHZtb3J4Mi5jLCBzcmMvZ3h2YWxpZC9neHZtb3J4NC5jLAoJc3JjL2d4dmFsaWQvZ3h2bW9yeDUuYywgc3JjL2d4dmFsaWQvZ3h2bW9ydC5jOiBJbXByb3ZlIHRyYWNlCgltZXNzYWdlcy4KCURlY29yYXRlIGNvbnN0YW50cyB3aXRoIGBVJyBhbmQgYEwnIHdoZXJlIGFwcHJvcHJpYXRlLgoJRml4IGNvbXBpbGVyIHdhcm5pbmdzLgoKMjAwNS0wOC0zMSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL3RydWV0eXBlL3R0Z2xvYWQuYyAobG9hZF90cnVldHlwZV9nbHlwaCk6IEZpeCB0eXBvLgoKCSogc3JjL2d4dmFsaWQvZ3h2YnNsbi5jIChneHZfYnNsbl92YWxpZGF0ZSk6IEZpeCB0cmFjZSBtZXNzYWdlLgoKCSogc3JjL2d4dmFsaWQvZ3h2Y29tbW4uYyAoZ3h2X29kdGVjdF9hZGRfcmFuZ2UpOiBVc2UgYGNvbnN0Jy4KCgkqIHNyYy9neHZhbGlkL2d4dmZlYXQuYywgc3JjL2d4dmFsaWQvZ3h2anVzdC5jLAoJc3JjL2d4dmFsaWQvZ3h2a2Vybi5jLCBzcmMvZ3h2YWxpZC9neHZsY2FyLmMsIHNyYy9neHZhbGlkL2d4dm1vZC5jLAoJc3JjL2d4dmFsaWQvZ3h2bW9ydDAuYywgc3JjL2d4dmFsaWQvZ3h2bW9ydDEuYywKCXNyYy9neHZhbGlkL2d4dm1vcnQyLmMsIHNyYy9neHZhbGlkL2d4dm1vcnQ0LmMsCglzcmMvZ3h2YWxpZC9neHZtb3J0NS5jLCBzcmMvZ3h2YWxpZC9neHZtb3J0LmM6IEltcHJvdmUgdHJhY2UKCW1lc3NhZ2VzLgoJRGVjb3JhdGUgY29uc3RhbnRzIHdpdGggYFUnIGFuZCBgTCcgd2hlcmUgYXBwcm9wcmlhdGUuCglGaXggY29tcGlsZXIgd2FybmluZ3MuCgoyMDA1LTA4LTMwICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvZ3h2YWxpZC9SRUFETUU6IFJldmlzZWQuCgkqIHNyYy9neHZhbGlkL2d4dmJzbG4uYzogRml4IGNvbXBpbGVyIHdhcm5pbmdzLgoJKiBzcmMvZ3h2YWxpZC9neHZjb21tbi5jOiBGaXggY29tcGlsZXIgd2FybmluZ3MuCgkoZ3h2X1hFbnRyeVRhYmxlX3ZhbGlkYXRlLCBneHZfY29tcGFyZV9yYW5nZXMpOiBSZW1vdmUgdW51c2VkCglwYXJhbWV0ZXIuICBVcGRhdGUgYWxsIGNhbGxlcnMuCglJbXByb3ZlIHRyYWNlIG1lc3NhZ2VzLgoJU29tZSBmb3JtYXR0aW5nLgoKMjAwNS0wOC0yOSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogaW5jbHVkZS9mcmVldHlwZS9mcmVldHlwZS5oLCBpbmNsdWRlL2ZyZWV0eXBlL2Z0Y2hhcHRlcnMuaDogQWRkCglhIHByZWxpbWluYXJ5IHNlY3Rpb24gd2l0aCBzb21lIGV4cGxhbmF0aW9ucyBhYm91dCB1c2VyIGFsbG9jYXRpb24uCgoJKiBzcmMvdG9vbHMvZG9jbWFrZXIvdG9odG1sLnB5IChIdG1sRm9ybWF0dGVyLnNlY3Rpb25fZW50ZXIpOgoJRG9uJ3QgYWJvcnQgaWYgdGhlcmUgYXJlIG5vIGRhdGEgdHlwZXMsIGZ1bmN0aW9ucywgZXRjLiwgaW4gYQoJc2VjdGlvbi4KCVByaW50IHN5bm9wc2lzIG9ubHkgaWYgd2UgaGF2ZSBhIGRhdGEgdHlwZSwgZnVuY3Rpb24sIGV0Yy4KCgkqIGRvY3MvSU5TVEFMTC5BTlksIGRvY3MvSU5TVEFMTCwgZG9jcy9JTlNUQUxMLlVOWCwgZG9jcy9DVVNUT01JWkUsCglkb2NzL0lOU1RBTEwuR05VLCBkb2NzL1RSVUVUWVBFLCBkb2NzL0RFQlVHLCBkb2NzL1VQR1JBREUuVU5YLAoJZG9jcy9WRVJTSU9OLkRMTCwgZG9jcy9mb3JtYXRzLnR4dDogUmV2aXNlZCwgZm9ybWF0dGVkLgoKMjAwNS0wOC0yOCAgR2VvcmdlIFdpbGxpYW1zICA8Z3d3QHNpbGNvbS5jb20+CgoJKiBzcmMvdHJ1ZXR5cGUvdHRnbG9hZC5jIFtUVF9NQVhfQ09NUE9TSVRFX1JFQ1VSU0VdOiBSZW1vdmVkLgoJKGxvYWRfdHJ1ZXR5cGVfZ2x5cGgpOiBMaW1pdCByZWN1cnNpb24gZGVwdGggYnkgYG1heENvbXBvbmVudERlcHRoJy4KCjIwMDUtMDgtMjUgIEouIEFsaSBIYXJsb3cgIDxhbGlAYXZyYy5jaXR5LmFjLnVrPgoKCSogYnVpbGRzL3VuaXgvZnJlZXR5cGUyLmluIChDRmxhZ3MpOiBBZGQgbWlzc2luZyBkaXJlY3RvcnkuCgoyMDA1LTA4LTI0ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBkb2NzL0NIQU5HRVM6IE1lbnRpb24gZ3h2YWxpZCBtb2R1bGUuCgoyMDA1LTA4LTIzICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvYXV0b2ZpdC9hZmxhdGluLmMgKGFmX2xhdGluX21ldHJpY3Nfc2NhbGUpOiBJbml0aWFsaXplCglyZW5kZXIgbW9kZSBwcm9wZXJseS4gIFJlcG9ydGVkIGJ5IGNocmlzQGRva2Vpbi5jby51ay4KCjIwMDUtMDgtMjMgIHN1enVraSB0b3NoaXlhICA8bXBzdXp1a2lAaGlyb3NoaW1hLXUuYWMuanA+CgoJQWRkIGd4dmFsaWQgbW9kdWxlIHRvIHZhbGlkYXRlIFRydWVUeXBlIEdYL0FBVCB0YWJsZXMuCgoJTW9kaWZpY2F0aW9ucyBvbiBleGlzdGluZyBmaWxlczoKCgkqIEphbWZpbGU6IFJlZ2lzdGVyIGd4dmFsaWQgbW9kdWxlLgoJKiBzcmMvYmFzZS9KYW1maWxlOiBSZWdpc3RlciBmdGd4dmFsLmMuCgkqIHNyYy9iYXNlL3J1bGUubWs6IFJlZ2lzdGVyIGZ0Z3h2YWwuYy4KCSogZG9jcy9JTlNUQUxMLkFOWTogUmVnaXN0ZXIgZ3h2YWxpZC9neHZhbGlkLmMuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2NvbmZpZy9mdGhlYWRlci5oIChGVF9HWF9WQUxJREFURV9IKTogTmV3IG1hY3JvCgl0byBpbmNsdWRlIGd4dmFsaWQgaGVhZGVyIGZpbGUuCgkqIGluY2x1ZGUvZnJlZXR5cGUvY29uZmlnL2Z0bW9kdWxlLmg6IFJlZ2lzdGVyIGd4dl9tb2R1bGVfY2xhc3MuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2Z0Y2hhcHRlcnMuaDogQWRkIGNvbW1lbnQgYWJvdXQgZ3hfdmFsaWRhdGlvbi4KCSogaW5jbHVkZS9mcmVldHlwZS9mdG90dmFsLmg6IENoYW5nZSBrZXl3b3JkIEZUX1ZBTElEQVRFX1hYWAoJdG8gRlRfVkFMSURBVEVfT1RYWFggdG8gY28tZXhpc3Qgd2l0aCBneHZhbGlkLgoJKiBpbmNsdWRlL2ZyZWV0eXBlL3R0dGFncy5oOiBBZGQgdGFncyBmb3IgVHJ1ZVR5cGUgR1gvQUFUIHRhYmxlcy4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvaW50ZXJuYWwvZnRzZXJ2LmggKEZUX1NFUlZJQ0VfR1hfVkFMSURBVEVfSCk6IE5ldwoJbWFjcm8gZm9yIGd4dmFsaWQgc2VydmljZS4KCSogaW5jbHVkZS9mcmVldHlwZS9pbnRlcm5hbC9mdHRyYWNlLmg6IEFkZCB0cmFjZSBmYWNpbGl0aWVzIGZvcgoJZ3h2YWxpZC4KCglOZXcgZmlsZXMgb24gZXhpc3RpbmcgZGlyZWN0b3JpZXM6CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL3NlcnZpY2VzL3N2Z3h2YWwuaDogUmVnaXN0cmF0aW9uIG9mCgl2YWxpZGF0aW9uIHNlcnZpY2UgZm9yIFRydWVUeXBlIEdYL0FBVCBhbmQgY2xhc3NpYyBrZXJuIHRhYmxlLgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2Z0Z3h2YWwuaDogUHVibGljIEFQSSBkZWZpbml0aW9uIHRvIHVzZSBneHZhbGlkLgoJKiBzcmMvYmFzZS9mdGd4dmFsLmM6IFB1YmxpYyBBUEkgb2YgZ3h2YWxpZC4KCglOZXcgZmlsZXMgdW5kZXIgc3JjL2d4dmFsaWQvOgoKCSogc3JjL2d4dmFsaWQvSmFtZmlsZSBzcmMvZ3h2YWxpZC9SRUFETUUgc3JjL2d4dmFsaWQvbW9kdWxlLm1rCglzcmMvZ3h2YWxpZC9ydWxlcy5tayBzcmMvZ3h2YWxpZC9neHZhbGlkLmMgc3JjL2d4dmFsaWQvZ3h2YWxpZC5oCglzcmMvZ3h2YWxpZC9neHZic2xuLmMgc3JjL2d4dmFsaWQvZ3h2Y29tbW4uYyBzcmMvZ3h2YWxpZC9neHZjb21tbi5oCglzcmMvZ3h2YWxpZC9neHZlcnJvci5oIHNyYy9neHZhbGlkL2d4dmZlYXQuYyBzcmMvZ3h2YWxpZC9neHZmZ2VuLmMKCXNyYy9neHZhbGlkL2d4dmp1c3QuYyBzcmMvZ3h2YWxpZC9neHZrZXJuLmMgc3JjL2d4dmFsaWQvZ3h2bGNhci5jCglzcmMvZ3h2YWxpZC9neHZtb2QuYyBzcmMvZ3h2YWxpZC9neHZtb2QuaCBzcmMvZ3h2YWxpZC9neHZtb3J0LmMKCXNyYy9neHZhbGlkL2d4dm1vcnQuaCBzcmMvZ3h2YWxpZC9neHZtb3J0MC5jIHNyYy9neHZhbGlkL2d4dm1vcnQxLmMKCXNyYy9neHZhbGlkL2d4dm1vcnQyLmMgc3JjL2d4dmFsaWQvZ3h2bW9ydDQuYyBzcmMvZ3h2YWxpZC9neHZtb3J0NS5jCglzcmMvZ3h2YWxpZC9neHZtb3J4LmMgc3JjL2d4dmFsaWQvZ3h2bW9yeC5oIHNyYy9neHZhbGlkL2d4dm1vcngwLmMKCXNyYy9neHZhbGlkL2d4dm1vcngxLmMgc3JjL2d4dmFsaWQvZ3h2bW9yeDIuYyBzcmMvZ3h2YWxpZC9neHZtb3J4NC5jCglzcmMvZ3h2YWxpZC9neHZtb3J4NS5jIHNyYy9neHZhbGlkL2d4dm9wYmQuYyBzcmMvZ3h2YWxpZC9neHZwcm9wLmMKCXNyYy9neHZhbGlkL2d4dnRyYWsuYzogTmV3IGZpbGVzLCBneHZhbGlkIGJvZHkuCgoyMDA1LTA4LTIxICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvdHJ1ZXR5cGUvdHRnbG9hZC5jIChUVF9Mb2FkX0dseXBoKTogT25seSB0cmFuc2xhdGUgb3V0bGluZQoJdG8gKDAsMCkgaWYgYml0IDEgb2YgdGhlIGBoZWFkJyB0YWJsZSBpc24ndCBzZXQuICBUaGlzIGltcHJvdmVzCglyZW5kZXJpbmcgb2YgYnVnZ3kgZm9udHMuCgoyMDA1LTA4LTIwICBDaGlhIEkgV3UgIDxiOTAyMDEwNDdAbnR1LmVkdS50dz4KCgkqIHNyYy90cnVldHlwZS90dGRyaXZlci5jIChMb2FkX0dseXBoKTogRG9uJ3QgY2hlY2sgdGhlIHZhbGlkaXR5IG9mCgl0dG1ldHJpY3MgaGVyZS4gIFRydWVUeXBlIGZvbnRzIHdpdGggb25seSBzYml0cyBhbHdheXMgaGF2ZQoJdHRtZXRyaWNzLnZhbGlkIHNldCB0byBmYWxzZS4KCgkqIHNyYy90cnVldHlwZS90dGdsb2FkLmMgKFRUX0xvYWRfR2x5cGgpOiBDaGVjayB0aGF0IHR0bWV0cmljcyBpcwoJdmFsaWQgYmVmb3JlIGxvYWRpbmcgb3V0bGluZSBnbHlwaC4KCgkqIHNyYy9jYWNoZS9mdGNpbWFnZS5jIChGVENfSU5vZGVfTmV3KTogRml4IGEgbWVtb3J5IGxlYWsuCgoyMDA1LTA4LTIwICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvc2ZudC90dGxvYWQuYyAodHRfZmFjZV9sb2FkX21ldHJpY3NfaGVhZGVyKTogSWdub3JlIG1pc3NpbmcKCWBoaGVhJyB0YWJsZSBmb3IgU0ZOVCBNYWMgZm9udHMuICBDaGFuZ2UgYmFzZWQgb24gYSBwYXRjaCBieQoJbXBzdXp1a2lAaGlyb3NoaW1hLXUuYWMuanAuCgoyMDA1LTA4LTIwICBNYXNhdGFrZSBZQU1BVE8gIDxqZXRAZ3l2ZS5vcmc+CgoJKiBzcmMvb3R2YWxpZC9vdHZtb2QuYyAob3R2X3ZhbGlkYXRlKTogVXNlIGZ0X3ZhbGlkYXRvcl9ydW4gaW5zdGVhZAoJb2YgZnRfc2V0am1wLgoKMjAwNS0wOC0xOSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL3RydWV0eXBlL3R0Z2xvYWQuYyAobG9hZF90cnVldHlwZV9nbHlwaCk6IEZpeCBjb21waWxlcgoJd2FybmluZ3MuCgoyMDA1LTA4LTE2ICBDaGlhIEkgV3UgIDxiOTAyMDEwNDdAbnR1LmVkdS50dz4KCgkqIHNyYy90cnVldHlwZS90dGludGVycC5jLCBzcmMvdHJ1ZXR5cGUvdHRpbnRlcnAuaDogVXBkYXRlIGNvcHlyaWdodAoJbWVzc2FnZXMuCgoyMDA1LTA4LTE2ICBDaGlhIEkgV3UgIDxiOTAyMDEwNDdAbnR1LmVkdS50dz4KCgkqIHNyYy90cnVldHlwZS90dGludGVycC5jLCBzcmMvdHJ1ZXR5cGUvdHRpbnRlcnAuaDogUmVtb3ZlIG9yaWdpbmFsCglUVF9Eb25lX0NvbnRleHQgYW5kIHJlbmFtZSBUVF9EZXN0cm95X0NvbnRleHQgdG8gVFRfRG9uZV9Db250ZXh0Cgl3aXRoIHNsaWdodCBjaGFuZ2VzLgoJVXBkYXRlIGFsbCBjYWxsZXJzLgoJKFRUX05ld19Db250ZXh0KTogTm93IHRha2VzIFRUX0RyaXZlciBhcmd1bWVudCBkaXJlY3RseS4KCVVwZGF0ZSBhbGwgY2FsbGVycy4KCgkqIHNyYy90cnVldHlwZS90dG9ianMuaCAodHRfc2xvdF9pbml0KTogTmV3IGZ1bmN0aW9uLgoJKiBzcmMvdHJ1ZXR5cGUvdHRvYmpzLmMgKHR0X2RyaXZlcl9pbml0KTogSW5pdGlhbGl6ZSBleGVjdXRpb24KCWNvbnRleHQgaGVyZS4KCSh0dF9zbG90X2luaXQpOiBOZXcgZnVuY3Rpb24gdG8gY3JlYXRlIGV4dHJhIHBvaW50cyBmb3IgdGhlIGludGVybmFsCglnbHlwaCBsb2FkZXIuICBXZSB0aGVuIHVzZSBpdCBkaXJlY3RseSwgaW5zdGVhZCBvZiBmYWNlJ3MgZ2x5cGgKCWxvYWRlciwgd2hlbiBsb2FkaW5nIGdseXBoLgoKCSogc3JjL3RydWV0eXBlL3R0ZHJpdmVyLmMgKHR0X2RyaXZlcl9jbGFzcyk6IFVzZSB0dF9zbG90X2luaXQgZm9yCglnbHlwaCBzbG90IGluaXRpYWxpemF0aW9uLgoJKExvYWRfR2x5cGgpOiBMb2FkIGZsYWcgZGVwZW5kZW5jaWVzIGFyZSBoYW5kbGVkIGhlcmUuICBSZXR1cm4gZXJyb3IKCWlmIHNpemUgaXMgTlVMTC4KCgkqIHNyYy90cnVldHlwZS90dGdsb2FkLmM6IEhlYXZ5IGNsZWFudXAgYW5kIHJlZmFjdG9yaW5nLgoJKG9yZ190b19jdXIpOiBSZW1vdmVkLgoJKFRUX0xvYWRfU2ltcGxlX0dseXBoKTogQ2FsbCBGVF9HbHlwaExvYWRlcl9DaGVja1BvaW50cy4KCShUVF9IaW50X0dseXBoKTogTmV3IGZ1bmNpb24gdG8gaGludCBhIHpvbmUsIHByZXBhcmVkIGJ5IGNhbGxlci4KCShUVF9Qcm9jZXNzX1NpbXBsZV9HbHlwaCk6IHMvbG9hZC9sb2FkZXIvLgoJVXNlIGxvYWRlci0+cHAgdmFsdWVzIGluc3RlYWQgb2YgcmVjYWxjdWxhdGlvbi4KCVVzZSBUVF9IaW50X0dseXBoLgoJTm8gbmVlZCB0byBzYXZlL3Jlc3RvcmUgbG9hZGVyLT5zdHJlYW0gYmVmb3JlIGFuZCBhZnRlcgoJVFRfVmFyeV9HZXRfR2x5cGhfRGVsdGFzIG5vdy4KCShUVF9MT0FERVJfU0VUX1BQKTogTmV3IG1hY3JvIHRvIGNhbGN1bGF0ZSBhbmQgc2V0IHRoZSBmb3VyIHBoYW50b20KCXBvaW50cy4KCShsb2FkX3RydWV0eXBlX2dseXBoKTogTmV2ZXIgc2V0IGV4ZWMtPmdseXBoU2l6ZSB0byAwLiAgVGhpcyBjbG9zZXMKCVNhdmFubmFoIGJ1ZyAjMTMxMDcuCglGb3JnZXQgZ2x5cGggZnJhbWUgYmVmb3JlIGNhbGxpbmcgVFRfUHJvY2Vzc19TaW1wbGVfR2x5cGguCglVc2UgVFRfTE9BREVSX1NFVF9QUC4KCVNjYWxlIGFsbCBmb3VyIHBoYW50b20gcG9pbnRzLgoJU3BsaXQgb2ZmIHNvbWUgZnVuY3Rpb25hbGl0eSB0byAuLi4KCShUVF9Qcm9jZXNzX0NvbXBvc2l0ZV9Db21wb25lbnQsIFRUX1Byb2Nlc3NfQ29tcG9zaXRlX0dseXBoKTogVGhlc2UKCW5ldyBmdW5jdGlvbnMuCgkoVFRfTG9hZF9HbHlwaCk6IFNldCB2YXJpb3VzIGZpZWxkcyBvZiBgZ2x5cGgnIGhlcmUsIG5vdCBpbgoJbG9hZF90cnVldHlwZV9nbHlwaCBhbmQgY29tcHV0ZV9nbHlwaF9tZXRyaWNzLgoJU3BsaXQgb2ZmIHNvbWUgZnVuY3Rpb25hbGl0eSB0byAuLi4KCShsb2FkX3NiaXRfaW1hZ2UsIHR0X2xvYWRlcl9pbml0KTogVGhlc2UgbmV3IGZ1bmN0aW9ucy4KCShjb21wdXRlX2dseXBoX21ldHJpY3MpOiBDYWxsIEZUX091dGxpbmVfR2V0X0NCb3guCgoyMDA1LTA4LTA4ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBkb2NzL0lOU1RBTEwuQU5ZOiBVcGRhdGVkLgoKMjAwNS0wOC0wNSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL2NmZi9jZmZnbG9hZC5jIChjZmZfYnVpbGRlcl9jbG9zZV9jb250b3VyKSwKCXNyYy9wc2F1eC9wc29ianMuYyAodDFfYnVpbGRlcl9jbG9zZV9jb250b3VyKTogUHJvdGVjdCBhZ2FpbnN0Cgl6ZXJvIGBvdXRsaW5lJyBwb2ludGVyLgoKCSogc3JjL2Jhc2UvZnRnbG9hZHIuYyAoRlRfR2x5cGhMb2FkZXJfQWRkKTogUHJvdGVjdCBhZ2FpbnN0IHplcm8KCWBsb2FkZXInIGFkZHJlc3MuCgoyMDA1LTA4LTAzICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBzcmMvc2ZudC9zZmRyaXZlci5jIChzZm50X2ludGVyZmFjZSkgW0ZUX09QVElNSVpFX01FTU9SWV06CglSZWFjdGl2YXRlIHBvaW50ZXJzIHRvIHR0X2ZpbmRfc2JpdF9pbWFnZSBhbmQgdHRfbG9hZF9zYml0X21ldHJpY3MKCXRvIG1ha2UgWCB3b3JrIGFnYWluLgoKMjAwNS0wOC0wMiAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL290dmFsaWQvb3R2Y29tbW4uaDogUmVtb3ZlIGRlYWQgY29kZS4KCjIwMDUtMDctMzEgIENoaWEgSSBXdSAgPGI5MDIwMTA0N0BudHUuZWR1LnR3PgoKCSogc3JjL3RydWV0eXBlL3R0b2Jqcy5oICh0dF9zaXplX3J1bl9mcGdtLCB0dF9zaXplX3J1bl9wcmVwKTogTmV3CglmdW5jdGlvbnMuCgoJKiBzcmMvdHJ1ZXR5cGUvdHRvYmpzLmMgKHR0X3NpemVfcnVuX2ZwZ20sIHR0X3NpemVfcnVuX3ByZXApOiBOZXcKCWZ1bmN0aW9ucy4KCSh0dF9zaXplX2luaXQpOiBBZGQgNCwgaW5zdGVhZCBvZiAyLCAocGhhbnRvbSkgcG9pbnRzIHRvIHR3aWxpZ2h0Cgl6b25lLgoJTW92ZSBjb2RlIHRoYXQgcnVucyBmcGdtIHRvIHR0X3NpemVfcnVuX2ZwZ20uCgkoUmVzZXRfT3V0bGluZV9TaXplKTogTW92ZSBjb2RlIHRoYXQgcnVucyBwcmVwIHRvIHR0X3NpemVfcnVuX3ByZXAuCgkodHRfZ2x5cGh6b25lX25ldyk6IEFsbG9jYXRlIHJpZ2h0IHNpemUgb2YgYXJyYXlzLgoJU2V0IG1heF9wb2ludHMgYW5kIG1heF9jb250b3VycyBwcm9wZXJseS4KCjIwMDUtMDctMjYgIENoaWEgSSBXdSAgPGI5MDIwMTA0N0BudHUuZWR1LnR3PgoKCSogc3JjL3RydWV0eXBlL3R0ZHJpdmVyLmMgKFNldF9DaGFyX1NpemVzKTogQXZvaWQgdW5uZWNlc3NhcnkKCWNvbXB1dGF0aW9ucyBhbmQgY2xlYW4gdXAuCgoJKiBzcmMvdHJ1ZXR5cGUvdHRvYmpzLmggKHN0cnVjdCBUVF9TaXplUmVjXyk6IENvbW1lbnQgb24gdGhlCglpbnRlcm5hbCBjb3B5IG9mIG1ldHJpY3MuCgoyMDA1LTA3LTEyICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2Z0b3V0bG4uaCAoRlRfT3V0bGluZV9FbWJvbGRlbik6IEZpeCBwcm90b3R5cGUuCglSZXBvcnRlZCBieSBYZXJ4ZXMuCgoyMDA1LTA3LTA0ICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0bWVtb3J5LmggKEZUX1JFQUxMT0NfQVJSQVkpOiBGaXggdHlwby4KCVJlcG9ydGVkIGJ5IEJyZXR0IEh1dGxleS4KCjIwMDUtMDYtMzAgIERhdmlkIFR1cm5lciAgPGRhdmlkQGZyZWV0eXBlLm9yZz4KCgkqIHNyYy9zZm50L2Z0Yml0bWFwLmMsIHNyYy90cnVldHlwZS90dGdsb2FkLmMsIHNyYy9zZm50L3R0Y21hcC5jOgoJUmVtb3ZpbmcgY29tcGlsZXIgd2FybmluZ3MgKFZpc3VhbCBDKysgL1c0KS4KCgoJSW1wbGVtZW50IGEgd29yay1hcm91bmQgZm9yIGJyb2tlbiBDIHByZXByb2Nlc3NvciBpbiBWaXN1YWwgQysrIChpdAoJaGFzIGJlZW4gY29uZmlybWVkIGJ5IHRoZSBNUyBkZXZlbG9wZXJzIHRoYXQgaXQgaXMgaW5kZWVkIGEgYnVnCgl3aGljaCB3b24ndCBiZSBmaXhlZCBpbiB0aGUgdmVyeSBuZWFyIGZ1dHVyZSkuCgoJKiBKYW1maWxlIChGVDJfQ09NUE9ORU5UUyk6IEluY2x1ZGUgb3R2YWxpZCAoYWdhaW4pLgoKCSogc3JjL290dmFsaWQvb3R2Y29tbW4uaCAoT1RWX05BTUUsIE9UVl9GVU5DKTogTmV3IG1hY3Jvcy4KCShPVFZfTkVTVDEsIE9UVl9ORVNUMiwgT1RWX05FU1QzKTogVXNlIE9UVl9OQU1FIGFuZCBPVFZfRlVOQyB0bwoJYXZvaWQgYXJndW1lbnQgZXhwYW5zaW9uIGJ5IGFyZ3VtZW50IHByZXNjYW4uCglBcHBlbmQgYEZ1bmMnIHRvIGFsbCBhZmZlY3RlZCBtYWNyb3MgYW5kIGNoYW5nZSB0aGVtIHRvIHRha2UganVzdCBhCglzaW5nbGUgYXJndW1lbnQuICBFeGFtcGxlOiBgQXR0YWNoTGlzdCcgaXMgcmVuYW1lZCB0bwoJYEF0dGFjaExpc3RGdW5jJy4KCgkqIHNyYy9vdHZhbGlkL290dmdkZWYuYywgc3JjL290dmFsaWQvb3R2Z3Bvcy5jLAoJc3JjL290dmFsaWQvb3R2Z3N1Yi5jLCBzcmMvb3R2anN0Zi5jOiBBcHBlbmQgYEZ1bmMnIHRvIG1hY3JvcwoJYWZmZWN0ZWQgYnkgdGhlIGNoYW5nZXMgdG8gT1RWX05FU1R4IGFuZCBtb2RpZnkgdGhlbSB0byB0YWtlIGp1c3QgYQoJc2luZ2xlIGFyZ3VtZW50LgoKMjAwNS0wNi0yMCAgQ2hpYSBJIFd1ICA8YjkwMjAxMDQ3QG50dS5lZHUudHc+CgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2ludGVybmFsL2Z0b2Jqcy5oLCBzcmMvYmFzZS9mdG9ianMuYzogTmV3IGZ1bmN0aW9uCglmdF9nbHlwaHNsb3RfZ3JpZF9maXRfbWV0cmljcy4KCgkqIHNyYy90cnVldHlwZS90dGdsb2FkLmMgKGNvbXB1dGVfZ2x5cGhfbWV0cmljcyk6IFVzZQoJZnRfZ2x5cGhzbG90X2dyaWRfZml0X21ldHJpY3MuCgoJKiBzcmMvY2ZmL2NmZmdsb2FkLmMgKGNmZl9zbG90X2xvYWQpLCBzcmMvY2lkL2NpZGdsb2FkLmMKCShjaWRfc2xvdF9sb2FkX2dseXBoKSwgc3JjL3R5cGUxL3QxZ2xvYWQuYyAoVDFfTG9hZF9HbHlwaCk6IFVzZQoJZnRfZ2x5cGhzbG90X2dyaWRfZml0X21ldHJpY3MuCglGVF9PdXRsaW5lX0dldF9DQm94IGlzIGNhbGxlZCB0d2ljZS4KCgkqIHNyYy9iYXNlL2Z0c3ludGguYyAoRlRfR2x5cGhTbG90X0VtYm9sZGVuKTogTW9kaWZ5IG1ldHJpY3MgdG8gbW9yZQoJcmVhc29uYWJsZSB2YWx1ZXMgd2hlbiBlbWJvbGRlbmluZyBvdXRsaW5lIGdseXBocy4gIFRoZSB0aGVvcmV0aWMKCW9uZXMgYXJlIHVucmVhbGlzdGljLgoKMjAwNS0wNi0xNiAgQ2hpYSBJIFd1ICA8YjkwMjAxMDQ3QG50dS5lZHUudHc+CgoJKiBzcmMvYmFzZS9mdG91dGxuLmMgKEZUX091dGxpbmVfRW1ib2xkZW4pOiBTdHJlbmd0aCBzaG91bGQgYmUKCWhhbHZlZC4KCgkqIHNyYy9iYXNlL2Z0c3ludGguYyAoRlRfR2x5cGhTbG90X0VtYm9sZGVuKTogQ2hhbmdlIHRoZSBkZWZhdWx0CglzdHJlbmd0aC4KCURvbid0IGluY3JlYXNlIHNsb3QtPmFkdmFuY2UueS4KCjIwMDUtMDYtMTYgIFdlcm5lciBMZW1iZXJnICA8d2xAZ251Lm9yZz4KCgkqIGluY2x1ZGUvZnJlZXR5cGUvZnJlZXR5cGUuaCAoRlJFRVRZUEVfTUlOT1IpOiBTZXQgdG8gMi4KCShGUkVFVFlQRV9QQVRDSCk6IFNldCB0byAwLgoKCSogYnVpbGRzL3VuaXgvY29uZmlndXJlLmFjICh2ZXJzaW9uX2luZm8pOiBTZXQgdG8gOTo5OjMuCglDdXJyZW50bHksIHdlIGFyZSBzdGlsbCBiaW5hcnkgY29tcGF0aWJsZS4KCgkqIGJ1aWxkcy93aW4zMi92aXN1YWxjL2luZGV4Lmh0bWwsCglidWlsZHMvd2luMzIvdmlzdWFsYy9mcmVldHlwZS5kc3AsCglidWlsZHMvd2luMzIvdmlzdWFsYy9mcmVldHlwZS52Y3Byb2o6IHMvMjE5LzIxMTAvLCBzLzIuMS45LzIuMS4xMC8uCgoJKiBidWlsZHMvZnJlZXR5cGUubWsgKHJlZmRvYyksIFJFQURNRSwgSmFtZmlsZSAoUmVmRG9jKToKCXMvMi4xLjkvMi4xLjEwLy4KCgkqIGRvY3MvQ0hBTkdFUywgZG9jcy9WRVJTSU9OLkRMTDogVXBkYXRlZC4KCgkqIENoYW5nZUxvZzogU3BsaXQgb2ZmIG9sZGVyIGVudHJpZXMgaW50by4uLgoJKiBDaGFuZ2VMb2cuMjAsIENoYW5nZUxvZy4yMTogVGhlc2UgbmV3IGZpbGVzLgoKMjAwNS0wNi0xNSAgS2lyaWxsIFNtZWxrb3YgIDxraXJyQG1ucy5zcGIucnU+CgoJVGhlIG5leHQgcmVsZWFzZSB3aWxsIGJlIDIuMi4wLCBzbyBkb24ndCB3b3JyeSBhYm91dCBzb3VyY2UgY29kZQoJYmFja3dhcmRzIGNvbXBhdGliaWxpdHkuCgoJKiBpbmNsdWRlL2ZyZWV0eXBlL2Z0aW1hZ2UuaCAoRlRfT3V0bGluZV9Nb3ZlVG9GdW5jLAoJRlRfT3V0bGluZV9MaW5lVG9GdW5jLCBGVF9PdXRsaW5lX0NvbmljVG9GdW5jLAoJRlRfT3V0bGluZV9DdWJpY1RvRnVuYywgRlRfU3BhbkZ1bmMsIEZUX1Jhc3Rlcl9SZW5kZXJGdW5jKSwKCWluY2x1ZGUvZnJlZXR5cGUvZnRyZW5kZXIuaCAoRlRfR2x5cGhfVHJhbnNmb3JtRnVuYywKCUZUX1JlbmRlcmVyX1JlbmRlckZ1bmMsIEZUX1JlbmRlcmVyX1RyYW5zZm9ybUZ1bmMpOiBEZWNvcmF0ZQoJcGFyYW1ldGVycyB3aXRoIGBjb25zdCcgd2hlcmUgYXBwcm9wcmlhdGUuCgoyMDA1LTA2LTE1ICBDaGlhIEkgV3UgIDxiOTAyMDEwNDdAbnR1LmVkdS50dz4KCgkqIHNyYy9zZm50L3R0c2JpdC5jICh0dF9mYWNlX2xvYWRfc2JpdF9pbWFnZSk6IENvbXB1dGUgdmVydEJlYXJpbmdZCgl0byBtYWtlIGdseXBocyBjZW50ZXJlZCB2ZXJ0aWNhbGx5LgoKCSogc3JjL3RydWV0eXBlL3R0Z2xvYWQuYyAoY29tcHV0ZV9nbHlwaF9tZXRyaWNzKTogQ29tcHV0ZQoJdmVydEJlYXJpbmdZIHRvIG1ha2UgZ2x5cGhzIGNlbnRlcmVkIHZlcnRpY2FsbHkuCglGaXggc29tZSBidWdzIGluIHZlcnRpY2FsIG1ldHJpY3M6CgoJICAuIGxvYWRlci0+cHAzLnkgYW5kIGxvYWRlci0+cHA0LnkgYXJlIGluIDI2LjYgZm9ybWF0LCBub3QgaW4gZm9udAoJICAgIHVuaXRzLgoJICAuIEFzIHdlIHVzZSB0aGUgZ2x5cGgncyBjYm94IHRvIGNhbGN1bGF0ZSB0aGUgdG9wIGJlYXJpbmcgbm93CgkgICAgdGhlcmUgaXNzIG5vIG5lZWQgdG8gYWRqdXN0IGB0b3AnLgoKMjAwNS0wNi0xNSAgV2VybmVyIExlbWJlcmcgIDx3bEBnbnUub3JnPgoKCSogc3JjL290dmFsaWQvb3R2Y29tbW4uaCAoT1RWX09QVElPTkFMX1RBQkxFKTogVXNlIEZUX1VTaG9ydCB0byBiZQoJaW4gc3luYyB3aXRoIE9UVl9PUFRJT05BTF9PRkZTRVQuICBSZXBvcnRlZCBieSBZQU1BVE8gTWFzYXRha2UuCgoyMDA1LTA2LTEzICBXZXJuZXIgTGVtYmVyZyAgPHdsQGdudS5vcmc+CgoJKiBkb2NzL3JlbGVhc2U6IFVwZGF0ZS4KCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCkNvcHlyaWdodCAyMDA1LCAyMDA2IGJ5CkRhdmlkIFR1cm5lciwgUm9iZXJ0IFdpbGhlbG0sIGFuZCBXZXJuZXIgTGVtYmVyZy4KClRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBGcmVlVHlwZSBwcm9qZWN0LCBhbmQgbWF5IG9ubHkgYmUgdXNlZCwgbW9kaWZpZWQsCmFuZCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEZyZWVUeXBlIHByb2plY3QgbGljZW5zZSwKTElDRU5TRS5UWFQuICBCeSBjb250aW51aW5nIHRvIHVzZSwgbW9kaWZ5LCBvciBkaXN0cmlidXRlIHRoaXMgZmlsZSB5b3UKaW5kaWNhdGUgdGhhdCB5b3UgaGF2ZSByZWFkIHRoZSBsaWNlbnNlIGFuZCB1bmRlcnN0YW5kIGFuZCBhY2NlcHQgaXQKZnVsbHkuCgoKTG9jYWwgVmFyaWFibGVzOgp2ZXJzaW9uLWNvbnRyb2w6IG5ldmVyCmNvZGluZzogbGF0aW4tMQpFbmQ6Cg==