MjAwMS0wNy0xOSAgRGF2aWQgTydCcmllbiAgPG9icmllbkBGcmVlQlNELm9yZz4KCgkqIGxpYmliZXJ0eS5oOiBBZGQgbGJhc2VuYW1lLgoKMjAwMS0wNi0wNyAgQWxhbiBNb2RyYSAgPGFtb2RyYUBiaWdwb25kLm5ldC5hdT4KCgkqIE1hbnkgZmlsZXM6IFVwZGF0ZSBjb3B5cmlnaHQgbm90aWNlcy4KCjIwMDEtMDUtMjggIFBoaWxpcCBCbHVuZGVsbCAgPHBoaWxiQGdudS5vcmc+CgoJRnJvbSAyMDAxLTA1LTExICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCSogZWxmL2lhNjQuaCAoRUxGX1NUUklOR19pYTY0X3Vud2luZF9vbmNlKTogRGVmaW5lLgoJKEVMRl9TVFJJTkdfaWE2NF91bndpbmRfaW5mb19vbmNlKTogRGVmaW5lLgoKMjAwMS0wMS0xMSAgUGV0ZXIgVGFyZ2V0dCAgPHBldGVyLnRhcmdldHRAYXJjY29yZXMuY29tPgoKCSogZGlzLWFzbS5oIChhcmNfZ2V0X2Rpc2Fzc2VtYmxlcik6IENvcnJlY3QgZGVjbGFyYXRpb24uCgoyMDAxLTAxLTA5ICBQaGlsaXAgQmx1bmRlbGwgIDxwaGlsYkBnbnUub3JnPgoKCSogYmluLWJ1Z3MuaCAoUkVQT1JUX0JVR1NfVE8pOiBTZXQgdG8gYGJ1Zy1iaW51dGlsc0BnbnUub3JnJy4KCjIwMDAtMTItMTggIEpvc2VwaCBTLiBNeWVycyAgPGpzbTI4QGNhbS5hYy51az4KCgkqIENPUFlJTkc6IFVwZGF0ZSB0byBjdXJyZW50CglmdHA6Ly9mdHAuZ251Lm9yZy9wdWIvZ251L0xpY2Vuc2VzL0NPUFlJTkctMi4wIChmaXhlcyByZWZlcmVuY2VzCgl0byAxOXl5IGFzIGV4YW1wbGUgeWVhciBpbiBjb3B5cmlnaHQgbm90aWNlKS4KCjIwMDAtMTItMTkgIEhhbnMtUGV0ZXIgTmlsc3NvbiAgPGhwQGJpdHJhbmdlLmNvbT4KCgkqIGRpcy1hc20uaCAoc3RydWN0IGRpc2Fzc2VtYmxlX2luZm8pOiBOZXcgbWVtYmVyICJzZWN0aW9uIi4KCShJTklUX0RJU0FTU0VNQkxFX0lORk9fTk9fQVJDSCk6IEluaXRpYWxpemUgcHJpdmF0ZV9kYXRhIG1lbWJlci4KCUluaXRpYWxpemUgc2VjdGlvbiBtZW1iZXIuCgoyMDAwLTEyLTE2ICBIZXJtYW4gQS5KLiB0ZW4gQnJ1Z2dlICA8SGFqLlRlbi5CcnVnZ2VAbmV0LkhDQy5ubD4KCgkqIHNhZmUtY3R5cGUuaDogTWFrZSBjb2RlIHdvcmsgb24gYWxsIHRhcmdldHMgYW5kIG5vdCBqdXN0IG9uCgl0YXJnZXRzIHdoZXJlIGEgY2hhciBpcyA4IGJpdHMuCgoyMDAwLTEyLTEwICBGcmVkIEZpc2ggIDxmbmZAYmUuY29tPgoKCSogYmZkbGluay5oIChzdHJ1Y3QgYmZkX2xpbmtfaW5mbyk6IEFkZCBuZXcgYWxsb3dfc2hsaWJfdW5kZWZpbmVkCgltZW1iZXIgdG8gc3RydWN0IGZvciBzeXN0ZW1zIHdoZXJlIGl0IGlzIG5vcm1hbCB0byBoYXZlIHVuZGVmaW5lZAoJc3ltYm9scyBpbiBzaGFyZWQgbGlicmFyaWVzIGF0IHJ1bnRpbWUgYW5kIHRoZSBydW50aW1lIGxpbmtlcgoJdGFrZXMgY2FyZSBvZiByZWRpcmVjdGluZyB0aGVtLgoKMjAwMC0xMi0wNyAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LnN0YW5mb3JkLmVkdT4KCgkqIHNhZmUtY3R5cGUuaDogTmV3IGZpbGUuCgoyMDAwLTEyLTA2ICBSb2RuZXkgQnJvd24gIDxSb2RuZXlCcm93bkBteW5kLmNvbT4KCgkqIGdldG9wdC5oIG9ic3RhY2suaDogU3RhbmRhcml6ZSBjb3B5cmlnaHQgc3RhdGVtZW50LgoKMjAwMC0xMi0wNSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGRlbWFuZ2xlLmg6IENoYW5nZSAibmV3X2FiaSIgdG8gInYzIiBldmVyeXdoZXJlLgoKMjAwMC0xMS0yOSAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LnN0YW5mb3JkLmVkdT4KCgkqIGxpYmliZXJ0eS5oOiBNb3ZlICNpbmNsdWRlcyB0byB0b3AuICBQcm90b3R5cGUgeG1hbGxvY19mYWlsZWQuCgoyMDAwLTExLTE1ICBLZW5uZXRoIEJsb2NrICA8a2VubmV0aC5ibG9ja0Bjb21wYXEuY29tPgoKCSogZGVtYW5nbGUuaDogQWRkIGduYXQgYW5kIGphdmEgZGVtYW5nbGUgc3R5bGVzLgoKMjAwMC0xMS0wNCAgSGFucy1QZXRlciBOaWxzc29uICA8aHBAYml0cmFuZ2UuY29tPgoKCSogaGFzaHRhYi5oIChzdHJ1Y3QgaHRhYik6IEFkZCBtZW1iZXIgcmV0dXJuX2FsbG9jYXRpb25fZmFpbHVyZS4KCShodGFiX3RyeV9jcmVhdGUpOiBOZXcgcHJvdG90eXBlLiAgTWVudGlvbiB3aGljaCBmdW5jdGlvbnMgbWF5CglyZXR1cm4gTlVMTCB3aGVuIHRoaXMgaXMgdXNlZC4KCjIwMDAtMTEtMDMgIEhhbnMtUGV0ZXIgTmlsc3NvbiAgPGhwQGJpdHJhbmdlLmNvbT4KCgkqIGhhc2h0YWIuaDogQ2hhbmdlIHZvaWQgKiB0byBQVFIgd2hlcmUgbmVjZXNzYXJ5LgoKMjAwMC0xMC0xMSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIHNwbGF5LXRyZWUuaCAoc3BsYXlfdHJlZV9wcmVkZWNlc3Nvcik6IERlY2xhcmUuCgoyMDAwLTA5LTI5ICBIYW5zLVBldGVyIE5pbHNzb24gIDxocEBheGlzLmNvbT4KCgkqIGRpcy1hc20uaDogRGVjbGFyZSBjcmlzX2dldF9kaXNhc3NlbWJsZXIsIG5vdCBwcmludF9pbnNuX2NyaXMuCglGaXggdHlwbyBpbiBjb21tZW50LgoKMjAwMC0wOS0yOCAgSm9obiBEYXZpZCBBbmdsaW4gPGRhdmVAaGlhdWx5MS5oaWEubnJjLmNhPgoKCSogYWxsb2NhLWNvbmYuaDogTmV3IGZpbGUgKGNvcGllZCBmcm9tIGxpYmliZXJ0eSkuCgoyMDAwLTA5LTA1ICBKb2huIERhdmlkIEFuZ2xpbiA8ZGF2ZUBoaWF1bHkxLmhpYS5ucmMuY2E+CgoJKiBtZDUuaCAobWQ1X3VpbnQzMik6IENob29zZSB2aWEgSU5UX01BWCBpbnN0ZWFkIG9mIFVJTlRfTUFYLgoKMjAwMC0wOS0wNCAgQWxleCBTYW11ZWwgIDxzYW11ZWxAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGR5bi1zdHJpbmcuaDogQWRqdXN0IGZvcm1hdHRpbmcuCgkoZHluX3N0cmluZ19pbnNlcnRfY2hhcik6IE5ldyBtYWNyby4gIE5ldyBkZWNsYXJhdGlvbi4KCjIwMDAtMDgtMjggIEphc29uIE1lcnJpbGwgIDxqYXNvbkByZWRoYXQuY29tPgoKCSogbWQ1Lmg6IE5ldyBmaWxlLgoKMjAwMC0wOC0yNCAgR3JlZyBNY0dhcnkgIDxncmVnQG1jZ2FyeS5vcmc+CgoJKiBsaWJpYmVydHkuaCAoQVJSQVlfU0laRSk6IE5ldyBtYWNyby4KCjIwMDAtMDctMjkgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQGN5Z251cy5jb20+CgoJKiBvczlrLmg6IEFkZCBjb3B5cmlnaHQgbm90aWNlLgoJRml4IGZvcm1hdHRpbmcuCgoyMDAwLTA3LTIyICBKYXNvbiBFY2toYXJkdCAgPGpsZUBjeWdudXMuY29tPgoKCSogZGlzLWFzbS5oIChwcmludF9pbnNuX2k4NjApOiBBZGQgcHJvdG90eXBlLgoKMjAwMC0wNy0yMCAgSC5KLiBMdSAgPGhqbEBnbnUub3JnPgoKCSogYmZkbGluay5oIChiZmRfbGlua19pbmZvKTogQWRkIG5ld19kdGFncy4KCjIwMDAtMDctMjAgIEhhbnMtUGV0ZXIgTmlsc3NvbiAgPGhwQGF4aXMuY29tPgoKCSogZGlzLWFzbS5oIChwcmludF9pbnNuX2NyaXMpOiBEZWNsYXJlLgoKMjAwMC0wNy0xOSAgSC5KLiBMdSAgKGhqbEBnbnUub3JnKQoKCSogYmZkbGluay5oIChiZmRfbGlua19pbmZvKTogQWRkIGZsYWdzIGFuZCBmbGFnc18xLgoKMjAwMC0wNi0wNSAgREogRGVsb3JpZSAgPGRqQHJlZGhhdC5jb20+CgoJKiBNQUlOVEFJTkVSUzogbmV3CgoyMDAwLTA2LTIxICBBbGV4IFNhbXVlbCAgPHNhbXVlbEBjb2Rlc291cmNlcnkuY29tPgoKCSogZHluLXN0cmluZy5oIChkeW5fc3RyaW5nX2luaXQsIGR5bl9zdHJpbmdfbmV3LAoJZHluX3N0cmluZ19kZWxldGUsIGR5bl9zdHJpbmdfcmVsZWFzZSwgZHluX3N0cmluZ19yZXNpemUsCglkeW5fc3RyaW5nX2NsZWFyLCBkeW5fc3RyaW5nX2NvcHksIGR5bl9zdHJpbmdfY29weV9jc3RyLAoJZHluX3N0cmluZ19wcmVwZW5kLCBkeW5fc3RyaW5nX3ByZXBlbmRfY3N0ciwgZHluX3N0cmluZ19pbnNlcnQsCglkeW5fc3RyaW5nX2luc2VydF9jc3RyLCBkeW5fc3RyaW5nX2FwcGVuZCwgZHluX3N0cmluZ19hcHBlbmRfY3N0ciwKCWR5bl9zdHJpbmdfYXBwZW5kX2NoYXIsIGR5bl9zdHJpbmdfc3Vic3RyaW5nX2R5bl9zdHJpbmdfZXEpOgoJRGVmaW5lIGFzIHNhbWUgbmFtZSB3aXRoIF9fY3hhXyBwcmVwZW5kZWQsIGlmIElOX0xJQkdDQzIuCgkoZHluX3N0cmluZ19pbml0LCBkeW5fc3RyaW5nX2NvcHksIGR5bl9zdHJpbmdfY29weV9jc3RyLAoJZHluX3N0cmluZ19wcmVwZW5kLCBkeW5fc3RyaW5nX3ByZXBlbmRfY3N0ciwgZHluX3N0cmluZ19pbnNlcnQsCglkeW5fc3RyaW5nX2luc2VydF9jc3RyLCBkeW5fc3RyaW5nX2FwcGVuZCwgZHluX3N0cmluZ19hcHBlbmRfY3N0ciwKCWR5bl9zdHJpbmdfYXBwZW5kX2NoYXIsIGR5bl9zdHJpbmdfc3Vic3RyaW5nKTogQ2hhbmdlIHJldHVybiB0eXBlCgl0byBpbnQuCgoyMDAwLTA2LTE4ICBTdGVwaGFuZSBDYXJyZXogIDxzdGNhcnJlekB3b3JsZG5ldC5mcj4KCgkqIGRpcy1hc20uaCAocHJpbnRfaW5zbl9tNjhoYzEyKTogRGVmaW5lLgoJKHByaW50X2luc25fbTY4aGMxMSk6IExpa2V3aXNlLgoKMjAwMC0wNi0xOCAgTmljayBDbGlmdG9uICA8bmlja2NAcmVkaGF0LmNvbT4KCgkqIG9zOWsuaDogQ2hhbmdlIHZhbHVlcyBvZiBNT0RTWU5DIGFuZCBDUkNDT04gZHVlIHRvIGJ1ZyByZXBvcnQKCWZyb20gUnVzcyBNYWdlZSA8cm1hZ2VlQGhvbWUuY29tPi4KCjIwMDAtMDYtMDcgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGRlbWFuZ2xlLmggKGRlbWFuZ2xpbmdfc3R5bGVzKTogUmVtb3ZlIHRyYWlsaW5nIGNvbW1hIGluIGVudW0uCgoJKiBkeW4tc3RyaW5nLmggKGR5bl9zdHJpbmdfYXBwZW5kX2NoYXIpOiBDaGFuZ2UgcGFyYW1ldGVyIGZyb20KCWNoYXIgdG8gaW50LgoKMjAwMC0wNi0wNCAgQWxleCBTYW11ZWwgIDxzYW11ZWxAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGR5bi1zdHJpbmcuaDogTW92ZSBoZXJlIGZyb20gZ2NjL2R5bi1zdHJpbmcuaC4gIEFkZCBuZXcgZnVuY3Rpb25zLgoKCSogZGVtYW5nbGUuaCAoRE1HTF9HTlVfTkVXX0FCSSk6IE5ldyBtYWNyby4KCShETUdMX1NUWUxFX01BU0spOiBPciBpbiBETUdMX0dOVV9ORVdfQUJJLgoJKGN1cnJlbnRfZGVtYW5nbGluZ19zdHlsZSk6IEFkZCBnbnVfbmV3X2FiaV9kZW1hbmdsaW5nLgoJKEdOVV9ORVdfQUJJX0RFTUFOR0xJTkdfU1RZTEVfU1RSSU5HKTogTmV3IG1hY3JvLgoJKEdOVV9ORVdfQUJJX0RFTUFOR0xJTkcpOiBMaWtld2lzZS4KCShjcGx1c19kZW1hbmdsZV9uZXdfYWJpKTogTmV3IGRlY2xhcmF0aW9uLgoKVHVlIE1heSAzMCAxNjo1MzozNCAyMDAwICBBbmRyZXcgQ2FnbmV5ICA8Y2FnbmV5QGIxLmN5Z251cy5jb20+CgoJKiBmbG9hdGZvcm1hdC5oIChzdHJ1Y3QgZmxvYXRmb3JtYXQpOiBBZGQgZmllbGQgbmFtZS4KCjIwMDAtMDUtMjYgIEVsaSBaYXJldHNraWkgIDxlbGl6QGlzLmVsdGEuY28uaWw+CgoJKiBmaWxlbmFtZXMuaDogTmV3IGZpbGUuCgkoSEFWRV9ET1NfQkFTRURfRklMRV9TWVNURU0sIElTX0RJUl9TRVBBUkFUT1IpCgkoSVNfQUJTT0xVVEVfUEFUSCwgRklMRU5BTUVfQ01QKTogTmV3IG1hY3Jvcy4KCjIwMDAtMDUtMjMgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGdldG9wdC5oIChnZXRvcHQpOiBBbHNvIGNoZWNrIEhBVkVfREVDTF8qIHdoZW4gcHJvdG90eXBpbmcuCgoJKiBsaWJpYmVydHkuaCAoYmFzZW5hbWUpOiBMaWtld2lzZS4KCjIwMDAtMDUtMTcgIFMuIEJoYXJhZHdhaiBZYWRhdmFsbGkgIDxzYnlAc2NydWdzLmxrZy5kZWMuY29tPgoJICAgIFJpY2sgR29ydG9uCSAgICAgICAgICAgIDxnb3J0b25Ac2NydWdzLmxrZy5kZWMuY29tPgoKCSogYmZkbGluay5oIChzdHJ1Y3QgYmZkX2xpbmtfaW5mbyk6IEFkZCBlbWl0cmVsb2NhdGlvbnMgZmxhZy4KCjIwMDAtMDUtMDggIEFsYW4gTW9kcmEgIDxhbGFuQGxpbnV4Y2FyZS5jb20uYXU+CgoJKiBkaXMtYXNtLmggKHByaW50X2luc25fdGljNTR4KTogRGVjbGFyZS4KCjIwMDAtMDUtMDYgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCiAJKiBhbnNpZGVjbC5oOiAjZGVmaW5lIF9fZXh0ZW5zaW9uX18gdG8gbm90aGluZyBpZgogCUdDQ19WRVJTSU9OIDwgMjAwOC4KCjIwMDAtMDUtMDQgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGRlbWFuZ2xlLmggKGRlbWFuZ2xlcl9lbmdpbmUpOiBDb25zdGlmeS4KClRodSBNYXkgIDQgMTc6MTU6MjYgMjAwMCAgUGhpbGlwcGUgRGUgTXV5dGVyICA8cGhkbUBtYWNxZWwuYmU+CgoJKiBzb3J0LmggKHN5cy90eXBlcy5oKTogRmlsZSBpbmNsdWRlZCB1bmNvbmRpdGlvbm5hbHkuCgkoc3RkZGVmLmgpOiBGaWxlIGluY2x1ZGUgb25seSAjaWZkZWYgX19TVERDX18uCgoyMDAwLTA1LTAzICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiBzeW1jYXQuaDogUmVtb3ZlICNlbmRpZiBsYWJlbC4KCjIwMDAtMDQtMjggIEtlbm5ldGggQmxvY2sgIDxibG9ja0B6azMuZGVjLmNvbT4KCSAgICBKYXNvbiBNZXJyaWxsICA8amFzb25AY2FzZXkuY3lnbnVzLmNvbT4KCiAgICAgICAgKiBkZW1hbmdsZS5oIChsaWJpYmVydHlfZGVtYW5nbGVycyk6IG5ldyB0YWJsZSBmb3IgZGlmZmVyZW50IHN0eWxlcy4KICAgICAgICAoY3BsdXNfZGVtYW5nbGVfc2V0X3N0eWxlKTogTmV3IGZ1bmN0aW9uIGZvciBzZXR0aW5nIHN0eWxlLgogICAgICAgIChjcGx1c19kZW1hbmdsZV9uYW1lX3RvX3N0eWxlKTogTmV3IGZ1bmN0aW9uIHRvIHRyYW5zbGF0ZSBuYW1lLgoKMjAwMC0wNC0yNCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGhhc2h0YWIuaCAoaGFzaF9wb2ludGVyKTogRGVjbGFyZS4KCShlcV9wb2ludGVyKTogTGlrZXdpc2UuCgoyMDAwLTA0LTIzICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogc29ydC5oOiBOZXcgZmlsZS4KCkZyaSBBcHIgMjEgMTM6MjA6NTMgMjAwMCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCQkJICBEYXZpZCBNb3NiZXJnZXIgIDxkYXZpZG1AaHBsLmhwLmNvbT4KCgkqIGRpcy1hc20uaCAocHJpbnRfaW5zbl9pYTY0KTogRGVjbGFyZS4KClR1ZSBBcHIgMTggMTY6MjI6MzAgMjAwMCAgUmljaGFyZCBLZW5uZXIgIDxrZW5uZXJAdmxzaTEudWx0cmEubnl1LmVkdT4KCgkqIGhhc2h0YWIuaCAoZW51bSBpbnNlcnRfb3B0aW9uKTogTmV3IHR5cGUuCgkoaHRhYl9maW5kX3Nsb3QsIGh0YWJfZmluZF9zbG90X3dpdGhfaGFzaCk6IFVzZSBpdC4KCjIwMDAtMDQtMTcgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIHN5bWNhdC5oOiBIb25vciBhdXRvY29uZiBtYWNybyBIQVZFX1NUUklOR0laRS4gIEFkZAoJY29tbWVudHMvY2F2ZWF0cyB3aXRoIHJlZ2FyZCB0byB0cmFkaXRpb25hbCBDIGJlaGF2aW9yLgoKMjAwMC0wNC0wNSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIHNwbGF5LXRyZWUuaCAoc3BsYXlfdHJlZV9yZW1vdmUpOiBEZWNsYXJlLgoKMjAwMC0wNC0wNCAgQWxhbiBNb2RyYSAgPGFsYW5AbGludXhjYXJlLmNvbS5hdT4KCgkqIGJpbi1idWdzLmggKFJFUE9SVF9CVUdTX1RPKTogUmVtb3ZlIHRyYW5zbGF0ZWQgcGFydC4KCjIwMDAtMDQtMDMgIEFsYW4gTW9kcmEgIDxhbGFuQGxpbnV4Y2FyZS5jb20uYXU+CgoJKiBiaW4tYnVncy5oOiBOZXcgZmlsZS4KCjIwMDAtMDMtMzAgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBoYXNodGFiLmggKGhhc2h2YWxfdCk6IE5ldyB0eXBlLgoJKGh0YWJfZmluZF93aXRoX2hhc2gpOiBVc2UgaXQgYXMgYW4gYXJndW1lbnQuCgkoaHRhYl9maW5kX3Nsb3Rfd2l0aF9oYXNoKTogTGlrZXdpc2UuCgoyMDAwLTAzLTI3ICBEZW5pcyBDaGVydHlrb3YgIDxkZW5pc2NAb3ZlcnRhLnJ1PgoKCSogZGlzLWFzbS5oIChwcmludF9pbnNuX2F2cik6IERlY2xhcmUuCgoyMDAwLTAzLTE0ICBCZXJuZCBTY2htaWR0ICA8YmVybmRzQGN5Z251cy5jby51az4KCgkqIGhhc2h0YWIuaCAoaHRhYl90cmF2KTogTW9kaWZ5IHR5cGUgc28gdGhhdCBmaXJzdCBhcmcgaXMgb2YgdHlwZQoJdm9pZCAqKi4KCShodGFiX2ZpbmRfd2l0aF9oYXNoLCBodGFiX2ZpbmRfc2xvdF93aXRoX2hhc2gpOiBEZWNsYXJlIG5ldwoJZnVuY3Rpb25zLgoKMjAwMC0wMy0wOSAgQWxleCBTYW11ZWwgIDxzYW11ZWxAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIHBhcnRpdGlvbi5oOiBOZXcgZmlsZS4KCjIwMDAtMDMtMDkgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIGhhc2h0YWIuaCAoc3RydWN0IGh0YWIpOiBBZGQgZGVsX2YuCgkoaHRhYl9kZWwpOiBOZXcgdHlwZS4KCShodGFiX2NyZWF0ZSk6IEFkZCBmb3VydGggYXJndW1lbnQuCgoyMDAwLTAzLTA4ICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiBoYXNodGFiLmggKGhhc2hfdGFibGVfdCk6IFJlbmFtZSB0byBodGFiX3QuCgkoc3RydWN0IGhhc2hfdGFibGUpOiBSZW5hbWUgdG8gc3RydWN0IGh0YWIuICBTaG9ydGVuIGVsZW1lbnQKCW5hbWVzLiAgUmVvcmRlciBlbGVtZW50cyBieSBzaXplLgoJKGh0YWJfaGFzaCwgaHRhYl9lcSwgaHRhYl90cmF2KTogTmV3IHR5cGVkZWZzIGZvciB0aGUgY2FsbGJhY2sKCWZ1bmN0aW9uIHBvaW50ZXJzLgoJKGhhc2hfdGFibGVfZW50cnlfdCk6IERpc2NhcmQ7IGp1c3QgdXNlIHZvaWQgKiBmb3IgZWxlbWVudAoJdHlwZS4KCjIwMDAtMDMtMDEgIEguSi4gTHUgIDxoamxAZ251Lm9yZz4KCgkqIGJmZGxpbmsuaCAoYmZkX2xpbmtfY2FsbGJhY2tzKTogQWRkIGEgYm9vbGVhbiBhcmcgdG8KCXRoZSB1bmRlZmluZWRfc3ltYm9sIGNhbGxiYWNrLgoKMjAwMC0wMi0yMyAgTGluYXMgVmVwc3RhcyA8bGluYXNAbGluYXMub3JnPgoKCSogZGlzLWFzbS5oIChwcmludF9pbnNuX2kzNzApOiBEZWNsYXJlLgoKVHVlIEZlYiAyMiAxNToxOTo1NCAyMDAwICBBbmRyZXcgQ2FnbmV5ICA8Y2FnbmV5QGIxLmN5Z251cy5jb20+CgoJKiByZW1vdGUtc2ltLmggKHNpbV90cmFjZSk6IERvY3VtZW50IHJldHVybiB2YWx1ZXMuCgkoc2ltX3NldF90cmFjZSk6IERlY2xhcmUuICBEZXByZWNhdGUuCgoyMDAwLTAyLTIxICBBbGFuIE1vZHJhICA8YWxhbkBzcHJpLmxldmVscy51bmlzYS5lZHUuYXU+CgoJKiBkaXMtYXNtLmggKHN0cnVjdCBkaXNhc3NlbWJsZV9pbmZvKTogQ2hhbmdlIGBsZW5ndGgnIHBhcmFtIG9mCglyZWFkX21lbW9yeV9mdW5jIHRvIHVuc2lnbmVkLiAgQ2hhbmdlIHR5cGUgb2YgYGJ1ZmZlcl9sZW5ndGgnIGFuZAoJYG9jdGV0c19wZXJfYnl0ZScgdG8gdW5zaWduZWQuCgkoYnVmZmVyX3JlYWRfbWVtb3J5KTogQ2hhbmdlIGBsZW5ndGgnIHBhcmFtIHRvIHVuc2lnbmVkLgoKMjAwMC0wMi0xNiAgTmljayBDbGlmdG9uICA8bmlja2NAY3lnbnVzLmNvbT4KCgkqIGRpcy1hc20uaDogQWRkIHByb3RvdHlwZXMgZm9yIEFSTSByZWdpc3RlciBuYW1lIGZ1bmN0aW9ucy4KCldlZCBGZWIgIDkgMTg6NDU6NDkgMjAwMCAgQW5kcmV3IENhZ25leSAgPGNhZ25leUBiMS5jeWdudXMuY29tPgoKCSogd2FpdC5oOiBEZWxldGUuIE5vIGxvbmdlciB1c2VkIGJ5IEdEQi4KClR1ZSBGZWIgIDggMTc6MDE6MTMgMjAwMCAgQW5kcmV3IENhZ25leSAgPGNhZ25leUBiMS5jeWdudXMuY29tPgoKCSogcmVtb3RlLXNpbS5oIChzaW1fcmVzdW1lKTogQ2xhcmlmeSB1c2Ugb2YgU0lHR05BTC4KCShzaW1fc3RvcF9yZWFzb24pOiBDbGFyaWZ5IG1lYW5pbmcgb2Ygc2ltX3NpZ25hbGxlZC4KCjIwMDAtMDItMDMgIFRpbW90aHkgV2FsbCA8dHdhbGxAcmVkaGF0LmNvbT4KCgkqIGRpcy1hc20uaCAoc3RydWN0IGRpc2Fzc2VtYmxlX2luZm8pOiBBZGRlZCBvY3RldHNfcGVyX2J5dGUKCWZpZWxkIGFuZCBpbml0aWFsaXplIGl0IHRvIG9uZSAoMSkuCgoyMDAwLTAxLTI3ICBOaWNrIENsaWZ0b24gIDxuaWNrY0ByZWRoYXQuY29tPgoKCSogZGlzLWFzbS5oOiBBZGQgcHJvdG90eXBlIGZvciBkaXNhc3NlbWJsZXJfdXNhZ2UoKS4KCUFkZCBwcm90b3R5cGUgZm9yIGFybV9kaXNhc3NlbWJsZXJfb3B0aW9ucygpLgoJUmVtb3ZlIHByb3RvdHlwZSBmb3IgYXJtX3RvZ2dsZV9yZWduYW1lcygpLgoJQWRkIHByb3RvdHlwZSBmb3IgcGFyc2VfYXJtX2Rpc2Fzc2VtYmxlcl9vcHRpb24oKS4KClNhdCBKYW4gIDEgMTk6MDY6NTIgMjAwMCAgSGFucy1QZXRlciBOaWxzc29uICA8aHBAYml0cmFuZ2UuY29tPgoKCSogc3ltY2F0LmggKFNUUklOR1gpIFshX19TVERDX18gfHwgQUxNT1NUX1NURENdOiBDaGFuZ2UgIj8iIHRvICJzIgoJdG8gc3RyaW5naWZ5IGFyZ3VtZW50IHMuCgpXZWQgRGVjIDE1IDExOjIyOjU2IDE5OTkgIEplZmZyZXkgQSBMYXcgIChsYXdAY3lnbnVzLmNvbSkKCgkqIGhwLXN5bXRhYi5oIChIUF9MQU5HVUFHRV9GT1JUUkFOKTogTmV3IGVudW1lcmF0aW9uIGNvbnN0YW50LgoJKEhQX0xBTkdVQUdFX0Y3Nyk6IERlZmluZSB1c2luZyBIUF9MQU5HVUFHRV9GT1JUUkFOLgoKMTk5OS0xMi0xNSAgRG91ZyBFdmFucyAgPGRqZUB0cmFuc21ldGEuY29tPgoKCSogZGlzLWFzbS5oOiBFbmNsb3NlIGluIGV4dGVybiAiQyIgaWZkZWYgX19jcGx1c3BsdXMuCgoxOTk5LTEyLTA1ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogc3BsYXktdHJlZS5oIChzdHJ1Y3Qgc3BsYXlfdHJlZV9ub2RlKTogUmVuYW1lIHRvIC4uLgoJKHN0cnVjdCBzcGxheV90cmVlX25vZGVfcyk6IC4uLiB0aGlzLgoJKHN0cnVjdCBzcGxheV90cmVlKTogUmVuYW1lIHRvIC4uLgoJKHN0cnVjdCBzcGxheV90cmVlX3MpOiAuLi4gdGhpcy4KCjE5OTktMTEtMzAgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGFuc2lkZWNsLmggKEFUVFJJQlVURV9NQUxMT0MpOiBOZXcgbWFjcm8uCgoJKiBsaWJpYmVydHkuaCAoYnVpbGRhcmd2LCBkdXBhcmd2LCBjb25jYXQsIGNob29zZV90ZW1wX2Jhc2UsCgltYWtlX3RlbXBfZmlsZSwgeG1hbGxvYywgeGNhbGxvYywgeHN0cmR1cCwgeG1lbWR1cCk6IEFkZAoJQVRUUklCVVRFX01BTExPQy4KCSh4YXRleGl0KTogUmVtb3ZlIF9fR05VQ19fIGNoZWNrLCBhZGQgQVRUUklCVVRFX05PUkVUVVJOLgoKMTk5OS0xMS0yOCAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogbGliaWJlcnR5Lmg6IEluY2x1ZGUgc3RkYXJnLmggd2hlbiBBTlNJX1BST1RPVFlQRVMgaXMgZGVmaW5lZC4KCShhc3ByaW50ZiwgdmFzcHJpbnRmKTogUHJvdmlkZSBkZWNsYXJhdGlvbnMuCgpXZWQgTm92IDEwIDEyOjQzOjIxIDE5OTkgIFBoaWxpcHBlIERlIE11eXRlciAgPHBoZG1AbWFjcWVsLmJlPgoJCQkgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGFuc2lkZWNsLmg6IERlZmluZSBhbmQgdGVzdCBgR0NDX1ZFUlNJT04nLCBub3QgYEhBVkVfR0NDX1ZFUlNJT04nLgoKMTk5OS0xMS0wNCAgICAgIEppbW15IEd1byAgICAgICA8Z3VvQGN1cC5ocC5jb20+CgoJKiBocC1zeW10YWIuaCAoZG50dF90eXBlX2ZwYXJhbSk6IEFkZCBkb2NfcmFuZ2VzLCBtaXNjX2tpbmQKCWZpZWxkcywgY2hhbmdlIGxvY2F0aW9uIHR5cGUgdG8gQ09SRV9BRERSIGZyb20gaW50LgoJKGRudHRfdHlwZV9jb25zdCk6IE5hbWUgdGhlIDV0aCBmaWVsZCBsb2NhdGlvbl90eXBlLgoKU3VuIE9jdCAyNCAxOToxMTozMiAxOTk5ICBBbmRyZXcgQ2FnbmV5ICA8Y2FnbmV5QGIxLmN5Z251cy5jb20+CgoJKiBzaW0tZDEwdi5oIChTSU1fRDEwVl9UUzJfRE1BUF9SRUdOVU0pOiBEZWZpbmUuCgoxOTk5LTEwLTIzIDA4OjUxIC0wNzAwICBaYWNrIFdlaW5iZXJnICA8emFja0BiaXRtb3Zlci5jb20+CgoJKiBoYXNodGFiLmg6IEdpdmUgaGFzaF90YWJsZV90IGEgc3RydWN0IHRhZy4gIEFkZCBwcm90b3R5cGVzCglmb3IgY2xlYXJfaGFzaF90YWJsZV9zbG90IGFuZCB0cmF2ZXJzZV9oYXNoX3RhYmxlLiAgQ29ycmVjdAoJcHJvdG90eXBlIG9mIGFsbF9oYXNoX3RhYmxlX2NvbGxpc2lvbnMuCgpTYXQgT2N0IDIzIDE5OjAwOjEzIDE5OTkgIEFuZHJldyBDYWduZXkgIDxjYWduZXlAYjEuY3lnbnVzLmNvbT4KCgkqIHNpbS1kMTB2Lmg6IE5ldyBmaWxlLgoKRnJpIE9jdCAxNSAwMTo0Nzo1MSAxOTk5ICBWbGFkaW1pciBNYWthcm92ICA8dm1ha2Fyb3ZAbG9vbnkuY3lnbnVzLmNvbT4KCgkqIGhhc2h0YWIuaDogTmV3IGZpbGUuCgoxOTk5LTEwLTEwICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBhbnNpZGVjbC5oIChIQVZFX0dDQ19WRVJTSU9OKTogTmV3IG1hY3JvLiAgVXNlIGl0IGluc3RlYWQgb2YKCWV4cGxpY2l0bHkgdGVzdGluZyBfX0dOVUNfXyBhbmQgX19HTlVDX01JTk9SX18uCgoJKEFUVFJJQlVURV9QUklOVEYpOiBVc2UgYF9fZm9ybWF0X18nLCBub3QgYGZvcm1hdCcuCgoxOTk5LTA5LTI1ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBsaWJpYmVydHkuaCAobWFrZV90ZW1wX2ZpbGUpOiAgQWRkIGEgcHJvdG90eXBlLgoKVHVlIFNlcCAxNCAwMDozNTowMiAxOTk5ICBNYXJjIEVzcGllIDxlc3BpZUBjdnMub3BlbmJzZC5vcmc+CgoJKiBsaWJpYmVydHkuaCAoYmFzZW5hbWUpOiAgT3BlbkJTRCBoYXMgYSBjb3JyZWN0IHByb3RvdHlwZS4KCSh4cmVhbGxvYyk6ICBSZW1vdmUgb3V0ZGF0ZWQgY29tbWVudC4KCjE5OTktMDktMDcgIEplZmYgR2FyemlrICA8amdhcnppa0Bwb2JveC5jb20+CgoJKiBsaWJpYmVydHkuaCAoeG1lbWR1cCk6IEFkZCBwcm90b3R5cGUgZm9yIG5ldyBmdW5jdGlvbi4KCjE5OTktMDktMDQgIFN0ZXZlIENoYW1iZXJsYWluICA8c2FjQHBvYm94LmNvbT4KCgkqIGRpcy1hc20uaCAocHJpbnRfaW5zbl9waik6IERlY2xhcmUuCgoxOTk5LTA5LTAxICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBvYnN0YWNrLmggKG9ic3RhY2tfZ3Jvdywgb2JzdGFja19ncm93MCk6IE1vdmUgKGNoYXIqKSBjYXN0cwoJaW4gY2FsbHMgdG8gYF9vYnN0YWNrX21lbWNweScgZnJvbSBoZXJlIC4uLgoKCShfb2JzdGFja19tZW1jcHkpOiAuLi4gdG8gaGVyZSwgZXhjZXB0IGluIHRoZSBfX1NURENfXyBjYXNlIHdoaWNoCglkb2Vzbid0IG5lZWQgaXQuCgoxOTk5LTA4LTMwICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBsaWJpYmVydHkuaCAoZ2V0cHdkKTogUHJvdG90eXBlLgoKMTk5OS0wOC0wMSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIHNwbGF5LXRyZWUuaCAoc3BsYXlfdHJlZV9pbnNlcnQpOiBSZXR1cm4gdGhlIG5ldyBub2RlLgoKMTk5OS0wNy0xMSAgSWFuIExhbmNlIFRheWxvciAgPGlhbkB6ZW1idS5jb20+CgoJKiBhbnNpZGVjbC5oOiBDb3B5IGF0dHJpYnV0ZSBzdXBwb3J0IG1hY3JvcyBmcm9tIGVnY3MuCgoxOTk5LTA2LTIyICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogYmZkbGluay5oIChzdHJ1Y3QgYmZkX2xpbmtfaGFzaF9lbnRyeSk6IEFkZCBpbml0X2Z1bmN0aW9uIGFuZAoJZmluaV9mdW5jdGlvbi4KCjE5OTktMDYtMjAgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBtaXBzLmggKEVsZjMyX0ludGVybmFsX01zeW0pOiBOZXcgc3RydWN0dXJlLgoJKEVsZjMyX0V4dGVybmFsX01zeW0pOiBMaWtld2lzZS4KCShFTEYzMl9NU19SRUxfSU5ERVgpOiBOZXcgbWFjcm8uCgkoRUxGMzJfTVNfRkxBR1MpOiBMaWtld2lzZS4KCShFTEYzMl9NU19JTkZPKTogTGlrZXdpc2UuCgoxOTk5LTA2LTE0ICBOaWNrIENsaWZ0b24gIDxuaWNrY0BjeWdudXMuY29tPgoKCSogZGlzLWFzbS5oIChhcm1fdG9nZ2xlX3JlZ25hbWVzKTogTmV3IHByb3RvdHlwZS4KCShzdHJ1Y3QgZGlhc3NlbWJsZV9pbmZvKTogTmV3IGZpZWxkOiBkaXNhc3NlbWJsZXJfb3B0aW9ucy4KCjE5OTktMDQtMTEgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBiZmRsaW5rLmggKGJmZF9lbGZfdmVyc2lvbl9leHByKTogUmVuYW1lIGBtYXRjaCcgdG8gYHBhdHRlcm4nLgoJQWRkIGBtYXRjaCcgY2FsbGJhY2sgZnVuY3Rpb24uCgoxOTk5LTA0LTEwICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogYmZkbGluay5oIChiZmRfbGlua19pbmZvKTogQWRkIG5vX3VuZGVmaW5lZC4KCjE5OTktMDQtMDggIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQGN5Z251cy5jb20+CgoJKiBkaXMtYXNtLmg6IEFkZCBwcm90b3R5cGUgZm9yIHByaW50X2luc25fbWNvcmUuCgoxOTk5LTA0LTAyICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogc3BsYXktdHJlZS5oIChzcGxheV90cmVlX2NvbXBhcmVfcG9pbnRlcnMpOiBEZWNsYXJlLgoKMTk5OS0wMy0zMCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIHNwbGF5LXRyZWUuaCAoc3BsYXlfdHJlZV9jb21wYXJlX2ludHMpOiBEZWNsYXJlLgoKV2VkIE1hciAyNCAxMjo0NjoyOSAxOTk5ICBBbmRyZXcgQ2FnbmV5ICA8Y2FnbmV5QGFteS5jeWdudXMuY29tPgoKCSogbGliaWJlcnR5LmggKGJhc2VuYW1lKTogQ3lnd2lueywzMn0gc2hvdWxkIGhhdmUgdGhlIHByb3RvdHlwZS4KCjE5OTktMDItMjIgIEppbSBMZW1rZSAgPGpsZW1rZUBjeWdudXMuY29tPgoKCSogYmZkbGluay5oIChiZmRfbGlua19pbmZvKTogYWRkIGZpZWxkICJtcGM4NjBjMCIuCgpNb24gRmViICAxIDIxOjA1OjQ2IDE5OTkgIENhdGhlcmluZSBNb29yZSAgPGNsbUBjeWdudXMuY29tPgoKICAgICAgICogZGlzLWFzbS5oIChwcmludF9pbnNuX2kzODZfYXR0KTogIERlY2xhcmUuCiAgICAgICAocHJpbnRfaW5zbl9pMzg2X2ludGVsKTogIERlY2xhcmUuCgoxOTk4LTEyLTMwICBNaWNoYWVsIE1laXNzbmVyICA8bWVpc3NuZXJAY3lnbnVzLmNvbT4KCgkqIGRpcy1hc20uaCAoSU5JVF9ESVNBU1NFTUJMRV9JTkZPX05PX0FSQ0gpOiBDYXN0IFNUUkVBTSBhbmQKCUZQUklOVEZfRlVOQyB0byBhdm9pZCBjb21waWxlciB3YXJuaW5ncy4KCldlZCBEZWMgMzAgMTY6MDc6MTQgMTk5OCAgRGF2aWQgVGF5bG9yICA8dGF5bG9yQHRleGFzLmN5Z251cy5jb20+CgoJKiBkaXMtYXNtLmg6IGNoYW5nZSB2b2lkICogdG8gUFRSICh0d28gcGxhY2VzKS4KCk1vbiBEZWMgMTQgMDk6NTM6MzEgMTk5OCAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogZGVtYW5nbGUuaDogRG9uJ3QgY2hlY2sgSU5fR0NDIGFueW1vcmUuCgkqIHNwbGF5LXRyZWUuaDogTGlrZXdpc2UuCgpUdWUgRGVjICA4IDAwOjMwOjMxIDE5OTggIEVsZW5hIFphbm5vbmkgIDxlemFubm9uaUBrd2lrZW1hcnQuY3lnbnVzLmNvbT4KCglUaGUgZm9sbG93aW5nIGNoYW5nZXMgd2VyZSBtYWRlIGJ5IEVsZW5hIFphbm5vbmkKIAk8ZXphbm5vbmlAa3dpa2VtYXJ0LmN5Z251cy5jb20+IGFuZCBFZGl0aCBFcHN0ZWluCiAJPGVlcHN0ZWluQHNvcGhpYS5jeWdudXMuY29tPiBhcyBwYXJ0IG9mIGEgcHJvamVjdCB0byBtZXJnZSBpbgogCWNoYW5nZXMgbWFkZSBieSBIUDsgSFAgZGlkIG5vdCBjcmVhdGUgQ2hhbmdlTG9nIGVudHJpZXMuCgoJKiBkaXMtYXNtLmggKHN0cnVjdCBkaXNhc3NlbWJsZV9pbmZvKTogY2hhbmdlIHRoZSB0eXBlIG9mIHN0cmVhbQoJZnJvbSBGSUxFKiB0byB2b2lkKiwgZm9yIHVzZSB3aXRoIGdkYidzIG5ldyB0eXBlIEdEQl9GSUxFLgoJKGZwcmludGZfZnR5cGUpOiBjaGFuZ2UgRklMRSogcGFyYW1ldGVyIHR5cGUgdG8gdm9pZCouCgoJKiBkZW1hbmdsZS5oOiAoRE1HTF9FREcpOiBuZXcgbWFjcm8gZm9yIEt1Y2sgYW5kIEFzc29jaWF0ZXMKCShETUdMX1NUWUxFX01BU0spOiBtb2RpZnkgdG8gaW5jbHVkZSBLdWNrIGFuZCBBc3NvYyBzdHlsZQoJKGRlbWFuZ2xpbmdfc3R5bGVzKTogYWRkIG5ldyBlZGdfZGVtYW5nbGluZyBzdHlsZQoJKEVER19ERU1BTkdMSU5HX1NUWUxFX1NUUklORyk6IG5ldyBtYWNybwoJKEVER19ERU1BTkdMSU5HKTogbmV3IG1hY3JvCgkoRE1HTF9IUCk6IG5ldyBtYWNybywgZm9yIEhQL2FDQyBjb21waWxlci4KCShETUdMX1NUWUxFX01BU0spOiBtb2RpZnkgdG8gaW5jbHVkZSBuZXcgSFAncyBzdHlsZS4KCShkZW1hbmdsaW5nX3N0eWxlcyk6IGFkZCBuZXcgaHBfZGVtYW5nbGluZyB2YWx1ZS4KCShIUF9ERU1BTkdMSU5HX1NUWUxFX1NUUklORyk6IG5ldyBtYWNyby4KCShBUk1fREVNQU5HTElORyk6IGNvZXJjZSB0byBpbnQuCgkoSFBfREVNQU5HTElORyk6IG5ldyBtYWNyby4KCgkqIGhwLXN5bXRhYi5oOiByZXdyaXR0ZW4sIGZyb20gSFAuCgkocXVpY2tfcHJvY2VkdXJlKTogY2hhbmdlIHR5cGUgb2YgbGFuZ3VhZ2UgZmllbGQgdG8gdW5zaWduZWQgaW50CgkocXVpY2tfbW9kdWxlKTogY2hhbmdlIHR5cGUgb2YgbGFuZ3VhZ2UgZmllbGQgdG8gdW5zaWduZWQgaW50Cgkoc3RydWN0IGRudHRfdHlwZV9zdmFyKTogYWRkIGZpZWxkIHRocmVhZF9zcGVjaWZpYy4KCShocF9sYW5ndWFnZSk6IGFkZCBsYW5ndWFnZXMgbW9kY2FsIGFuZCBkbXBhc2NhbC4KCkZyaSBOb3YgMjAgMTM6MTQ6MDAgMTk5OCAgQW5kcmV3IENhZ25leSAgPGNhZ25leUBiMS5jeWdudXMuY29tPgoKCSogbGliaWJlcnR5LmggKGJhc2VuYW1lKTogQWRkIHByb3RvdHlwZSBmb3IgRnJlZUJTRC4KCkZyaSBOb3YgMTMgMTk6MTk6MTEgMTk5OCAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogbGliaWJlcnR5Lmg6IFByb3RvdHlwZSB4Y2FsbG9jLgoKU3VuIE5vdiAgOCAxNzo0MjoyNSAxOTk4ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBhbnNpZGVjbC5oOiBXcmFwIHByb2JsZW1hdGljIG1hY3JvcyB3aXRoICFJTl9HQ0MuCgoJKiBkZW1hbmdsZS5oOiBOZXZlciBkZWZpbmUgUEFSQU1TKCkuCgkqIHNwbGF5LXRyZWUuaDogTGlrZXdpc2UuCgpTYXQgTm92ICA3IDE4OjMwOjIwIDE5OTggIFBldGVyIFNjaGF1ZXIgIDxwZXRlci5zY2hhdWVyQHJlZ2VudC5lLXRlY2huaWsudHUtbXVlbmNoZW4uZGU+CgoJKiBkaXMtYXNtLmggKHByaW50X2luc25fdmF4KTogRGVjbGFyZS4KClNhdCBOb3YgIDcgMTY6MDQ6MDMgMTk5OCAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogZGVtYW5nbGUuaDogRG9uJ3QgaW5jbHVkZSBnYW5zaWRlY2wuaC4KCSogc3BsYXktdHJlZS5oOiBMaWtld2lzZS4KCjE5OTgtMTAtMjYgMTY6MDMgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBjeWdudXMuY29tPgoKCSogYmZkbGluay5oIChzdHJ1Y3QgYmZkX2xpbmtfaW5mbyk6IEFkZCBuZXcgZmllbGQgb3B0aW1pemUuCgpUaHUgT2N0IDIyIDE5OjU4OjAwIDE5OTggIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIHNwbGF5LXRyZWUuaDogV3JhcCBmdW5jdGlvbiBwb2ludGVyIHBhcmFtZXRlciBkZWNsYXJhdGlvbnMgaW4KCVBBUkFNUygpIG1hY3JvLgoKMTk5OC0xMC0yMSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAbWFya21pdGNoZWxsLmNvbT4KCgkqIHNwbGF5LXRyZWUuaDogTmV3IGZpbGUuCgpGcmkgT2N0ICA5IDAwOjAyOjAzIDE5OTggIEplZmZyZXkgQSBMYXcgIChsYXdAY3lnbnVzLmNvbSkKCgkqIE1lcmdlIGRldm8gYW5kIGVnY3MgaW5jbHVkZSBkaXJlY3Rvcmllcy4KClNhdCBTZXAgIDUgMTI6MTY6MzMgMTk5OCAgSmVmZnJleSBBIExhdyAgKGxhd0BjeWdudXMuY29tKQoKCSogZ2V0b3B0LmgsIG9ic3RhY2suaDogVXBkYXRlZCBmcm9tIGdjYy4KCjE5OTgtMDgtMDMgIEphc29uIE1vbGVuZGEgIChqc21AYnVnc2hhY2suY3lnbnVzLmNvbSkKCgkqIGxpYmliZXJ0eS5oICh4ZXhpdCk6IENoYW5nZSBkZWNsIHRvIHVzZSBtb2Rlcm4gR0NDIGF0dHJpYnV0ZQoJdG8gaW5kaWNhdGUgZXhpdCBkb2VzIG5vdCByZXR1cm4uCgpNb24gSnVuICAxIDEzOjQ4OjMyIDE5OTggIEphc29uIE1vbGVuZGEgIChjcmFzaEBidWdzaGFjay5jeWdudXMuY29tKQoKCSogb2JzdGFjay5oOiBVcGRhdGUgdG8gbGF0ZXN0IEZTRiB2ZXJzaW9uLgoKVHVlIEZlYiAyNCAxMzowNTowMiAxOTk4ICBEb3VnIEV2YW5zICA8ZGV2YW5zQGNhbnVjay5jeWdudXMuY29tPgoKCSogZGlzLWFzbS5oIChkaXNhc3NlbWJsZV9pbmZvKTogTWVtYmVyIGBzeW1ib2wnIHJlbmFtZWQgdG8gYHN5bWJvbHMnCglhbmQgbWFkZSBhbiAiYXN5bWJvbCAqKiIuICBOZXcgbWVtYmVyIG51bV9zeW1ib2xzLgoJKElOSVRfRElTQVNTRU1CTEVfSU5GT19OT19BUkNIKTogVXBkYXRlLgoKVHVlIEZlYiAxNyAxMjozMjoxOCAxOTk4ICBBbmRyZXcgQ2FnbmV5ICA8Y2FnbmV5QGIxLmN5Z251cy5jb20+CgoJKiByZW1vdGUtc2ltLmggKHNpbV9mZXRjaF9yZWdpc3Rlciwgc2ltX3N0b3JlX3JlZ2lzdGVyKTogQWRkCiAJcmVnaXN0ZXIgbGVuZ3RoIHBhcmFtZXRlci4gIEZ1bmN0aW9ucyByZXR1cm4gYWN0dWFsIGxlbmd0aCBvZgogCXJlZ2lzdGVyLgoKVGh1IEZlYiAxMiAxNjoyOTowMSAxOTk4ICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQGN5Z251cy5jb20+CgoJKiBnZXRvcHQuaDogVXBkYXRlIHRvIGxhdGVzdCBGU0YgdmVyc2lvbi4KCldlZCBGZWIgMTEgMTY6NTY6MDYgMTk5OCAgRG91ZyBFdmFucyAgPGRldmFuc0BjYW51Y2suY3lnbnVzLmNvbT4KCgkqIHN5bWNhdC5oOiBOZXcgZmlsZS4KCk1vbiBGZWIgIDIgMTc6MTM6MzEgMTk5OCAgU3RldmUgSGF3b3J0aCAgPHN0ZXZlQHBtLmNzZS5ybWl0LkVEVS5BVT4KCgkqIGRpcy1hc20uaCAocHJpbnRfaW5zbl90aWMzMCk6IERlY2xhcmUuCgpUaHUgSmFuIDIyIDE2OjIzOjU5IDE5OTggIEZyZWQgRmlzaCA8Zm5mQGN5Z251cy5jb20+CgoJKiBkaXMtYXNtLmg6IEFkZCBmbGFnIElOU05fSEFTX1JFTE9DIHRvIHRlbGwgZGlzYXNzZW1ibHkKCWZ1bmN0aW9uIHRoZXJlIGlzIGEgcmVsb2Mgb24gdGhpcyBsaW5lLgoKTW9uIERlYyAgOCAxMToyMjoyMyAxOTk3ICBOaWNrIENsaWZ0b24gIDxuaWNrY0BjeWdudXMuY29tPgoKCSogZGlzLWFzbS5oOiBSZW1vdmUgcHJvdG90eXBlIG9mIGRpc2FzbV9zeW1hZGRyKCkgYXMgdGhpcyBmdW5jdGlvbgoJbm8gbG9uZ2VyIGV4aXN0cy4KClR1ZSBEZWMgIDIgMTA6MjA6NTMgMTk5NyAgTmljayBDbGlmdG9uICA8bmlja2NAY3lnbnVzLmNvbT4KCgkqIGRpcy1hc20uaCAoZGlzYXNtX3N5bWFkZHIpOiBOZXcgcHJvdG90eXBlLgoKTW9uIERlYyAgMSAxMToyOTozNSAxOTk3ICBEb3VnIEV2YW5zICA8ZGV2YW5zQGNhbnVjay5jeWdudXMuY29tPgoKCSogY2FsbGJhY2suaCAoQ0JfU1lTQ0FMTCk6IENvbW1lbnQgb3V0IGFyZyBuYW1lcyBpbiBwcm90b3R5cGVzLgoKV2VkIE5vdiAyNiAxNjo0Nzo1OCAxOTk3ICBNaWNoYWVsIE1laXNzbmVyICA8bWVpc3NuZXJAY3lnbnVzLmNvbT4KCgkqIGNhbGxiYWNrLmggKENCX1NZU0NBTEwpOiBDb25zaXN0YW50bHkgdXNlIG5hbWVzIGZvciBwcm90b3R5cGUKCWFyZ3VtZW50cy4KCldlZCBOb3YgMjYgMTE6Mzk6MzAgMTk5NyAgRG91ZyBFdmFucyAgPGRldmFuc0BjYW51Y2suY3lnbnVzLmNvbT4KCgkqIGNhbGxiYWNrLmggKENCX1NZU0NBTEwpOiBDaGFuZ2UgYnl0ZSBjb3VudCBhcmd1bWVudHMgdG8KCXtyZWFkLHdyaXRlfV9tZW0gdG8gYGludCcuICBOZXcgbWVtYmVyIGBtYWdpYycuCgkoQ0JfU1lTQ0FMTF9NQUdJQyxDQl9TWVNDQUxMX0lOSVQpOiBOZXcgbWFjcm9zLgoKVHVlIE5vdiAyNSAwMTozNTo1MiAxOTk3ICBEb3VnIEV2YW5zICA8ZGV2YW5zQHNlYmEuY3lnbnVzLmNvbT4KCgkqIGNhbGxiYWNrLmggKHN0cnVjdCBzdGF0KTogTW92ZSBmb3J3YXJkIGRlY2wgdXAuCgkoaG9zdF9jYWxsYmFjayk6IFBhc3Mgc3RhdCBzdHJ1Y3QgcG9pbnRlciB0byBzdGF0LGZzdGF0LgoJKENCX1NZU19ubm4pOiBSZW9yZ2FuaXplLgoJKENCX1NZU0NBTEwpOiBOZXcgbWVtYmVycyBwMSxwMi4KCShjYl9ob3N0X3RvX3RhcmdldF9zdGF0KTogRGVsZXRlIGZvdXJ0aCBhcmcuCgpTYXQgTm92IDIyIDIzOjM0OjE1IDE5OTcgIEFuZHJldyBDYWduZXkgIDxjYWduZXlAYjEuY3lnbnVzLmNvbT4KCgkqIHJlbW90ZS1zaW0uaCAoc2ltX3N0b3BfcmVhc29uKTogQ2xhcmlmeSBzaW1fc2lnbmFsbGVkIFNJR1JDCiAJYXJndW1lbnQuCgpNb24gTm92IDE3IDE0OjAwOjUxIDE5OTcgIERvdWcgRXZhbnMgIDxkZXZhbnNAc2ViYS5jeWdudXMuY29tPgoKCSogY2FsbGJhY2suaCAoQ0JfVEFSR0VUX0RFRlNfTUFQKTogUmVuYW1lZCBmcm9tIHRhcmdldF9kZWZzX21hcC4KCShob3N0X2NhbGxiYWNrKTogQWRkIHN0YXQsIGZzdGF0LCBzeXNjYWxsX21hcCwgZXJybm9fbWFwLCBvcGVuX21hcCwKCXNpZ25hbF9tYXAsIHN0YXRfbWFwLgoJKGVycm5fbWFwLG9wZW5fbWFwKTogUmVuYW1lZCB0byBjYl9pbml0X2Zvb19tYXAuCgkoY2JfaG9zdF90b190YXJnZXRfZXJybm8sY2JfdGFyZ2V0X3RvX2hvc3Rfb3Blbik6IFJlbmFtZWQgZnJvbQoJaG9zdF90b190YXJnZXRfZXJybm8sdGFyZ2V0X3RvX2hvc3Rfb3Blbi4KCShjYl9yZWFkX3RhcmdldF9zeXNjYWxsX21hcHMpOiBBZGQgcHJvdG90eXBlLgoJKGNiX3RhcmdldF90b19ob3N0X3N5c2NhbGwpOiBMaWtld2lzZS4KCShjYl9ob3N0X3RvX3RhcmdldF9zdGF0KTogTGlrZXdpc2UuCgkoY2Jfc3lzY2FsbCk6IExpa2V3aXNlLgoJKENCX1NZU197ZXhpdCxvcGVuLGNsb3NlLHJlYWQsd3JpdGUsbHNlZWssdW5saW5rLGdldHBpZCxraWxsLGZzdGF0LAoJYXJndmxlbixhcmd2LGNoZGlyLHN0YXQsY2htb2QsdXRpbWUsdGltZX0pOiBEZWZpbmUuCgkoQ0JfU1lTQ0FMTCk6IE5ldyB0eXBlLgoJKENCX1JDKTogTmV3IGVudW0uCgpGcmkgTm92ICA3IDEwOjM0OjA5IDE5OTcgIFJvYiBTYXZveWUgIDxyb2JAZGFya3N0YXIuY3lnbnVzLmNvbT4KCgkqIGxpYmliZXJ0eS5oOiBBZGQgZXh0ZXJuICJDIiB7IHNvIGl0IGNhbiBiZSB1c2VkIHdpdGggQysrCglwcm9ncmFtcy4KCSogcmVtb3RlLXNpbS5oOiAgQWRkIGV4dGVybiAiQyIgeyBzbyBpdCBjYW4gYmUgdXNlZCB3aXRoIEMrKwoJcHJvZ3JhbXMuCgpUdWUgT2N0IDE0IDE2OjA3OjUxIDE5OTcgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQGN5Z251cy5jb20+CgoJKiBkaXMtYXNtLmggKHN0cnVjdCBkaXNhc3NlbWJsZV9pbmZvKTogTmV3IGZpZWxkCgknc3ltYm9sX2F0X2FkZHJlc3NfZnVuYycuCgkoSU5JVF9ESVNBU1NFTUJMRV9JTkZPX05PX0FSQ0gpOiBJbml0aWFsaXNlIG5ldyBmaWVsZCB3aXRoCglnZW5lcmljX3N5bWJvbF9hdF9hZGRyZXNzLgoKTW9uIE9jdCAxMyAxMDoxNzoxNSAxOTk3ICBBbmRyZXcgQ2FnbmV5ICA8Y2FnbmV5QGIxLmN5Z251cy5jb20+CgoJKiByZW1vdGUtc2ltLmg6IENsYXJpZnkgc2ltX3JlYWQsIHNpbV93cml0ZSBNRU0gYXJndW1lbnQuCgpXZWQgU2VwIDI0IDE4OjAzOjEwIDE5OTcgIFN0dSBHcm9zc21hbiAgPGdyb3NzbWFuQGJhYnlsb24tNS5jeWdudXMuY29tPgoKCSogcmVtb3RlLXNpbS5oIChTSU1fUkMpOiAgQWRkIGEgYnVuY2ggb2YgbmV3IHJldHVybiBjb2RlcyBmb3IKCWJyZWFrcG9pbnQgc3R1ZmYuCgkqIEFkZCBmdW5jdGlvbnMgdG8gdGVsbCB0aGUgc2ltdWxhdG9yIHRvIHNldC9jbGVhci9lbmFibGUvZGlzYWJsZQoJaW50cmluc2ljIGJyZWFrcG9pbnRzLgoKVGh1IEF1ZyAyOCAxOTo0MTo0MiAxOTk3ICBBbmRyZXcgQ2FnbmV5ICA8Y2FnbmV5QGIxLmN5Z251cy5jb20+CgoJKiBsaWJpYmVydHkuaCAoZHVwYXJndik6IEFkZCBwcm90b3R5cGUuCgpUdWUgQXVnIDI2IDEyOjI1OjQ5IDE5OTcgIEFuZHJldyBDYWduZXkgIDxjYWduZXlAYjEuY3lnbnVzLmNvbT4KCgkqIHJlbW90ZS1zaW0uaCAoc2ltX2NyZWF0ZV9pbmZlcmlvcik6IEFkZCBBQkZEIGFyZy4gRG9jdW1lbnQuCgpNb24gQXVnIDI1IDEwOjUwOjUxIDE5OTcgIEFuZHJldyBDYWduZXkgIDxjYWduZXlAYjEuY3lnbnVzLmNvbT4KCgkqIHJlbW90ZS1zaW0uaCAoc2ltX29wZW4pOiBBZGQgQUJGRCBhcmcuIERvY3VtZW50LgoKRnJpIEF1ZyAgOCAxNjo0Mzo1NiAxOTk3ICBEb3VnIEV2YW5zICA8ZGplQGNhbnVjay5jeWdudXMuY29tPgoKCSogZGlzLWFzbS5oIChhcmNfZ2V0X2Rpc2Fzc2VtYmxlcik6IERlY2xhcmUuCgpXZWQgSnVsIDMwIDExOjM5OjUwIDE5OTcgIFBlciBCb3RobmVyICA8Ym90aG5lckBkZW5lYi5jeWdudXMuY29tPgoKCSogZGVtYW5nbGUuaCAoRE1HTF9KQVZBKTogIE5ldyBvcHRpb24gdG8gcmVxdWVzdCBKYXZhIGRlbWFuZ2xpbmcuCgpUdWUgSnVsIDIyIDE3OjU5OjU0IDE5OTcgIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5AY3lnbnVzLmNvbT4KCgkqIGxpYmliZXJ0eS5oIChQRVhFQ1VURV8qKTogRGVmaW5lLgoJKHBleGVjdXRlLCBwd2FpdCk6IERlY2xhcmUuCgpGcmkgSnVuICA2IDEzOjAyOjMzIDE5OTcgIEFuZHJldyBDYWduZXkgIDxjYWduZXlAYjEuY3lnbnVzLmNvbT4KCgkqIHJlbW90ZS1zaW0uaCAoc2ltX2tpbGwpOiBNYXJrIGFzIGRlcHJlY2lhdGVkLgoKRnJpIE1heSAyMyAxMzo0Mzo0MSAxOTk3ICBGcmVkIEZpc2ggIDxmbmZAY3lnbnVzLmNvbT4KCgkqIGJmZGxpbmsuaCAoc3RydWN0IGJmZF9saW5rX2luZm8pOiBBZGQgdGFza19saW5rIG1lbWJlci4KClRodSBNYXkgMjIgMTE6MzI6NDkgMTk5NyAgQW5kcmV3IENhZ25leSAgPGNhZ25leUBiMS5jeWdudXMuY29tPgoKCSogcmVtb3RlLXNpbS5oOiBSZXZpZXcgZG9jdW1lbnRhdGlvbi4gIENsYXJpZnkgcmVzdHJpY3Rpb25zIG9uCiAJd2hlbiBmdW5jdGlvbnMgY2FuIGJlIGNhbGxlZC4KCldlZCBNYXkgMjEgMTY6NDc6NTMgMTk5NyAgQW5kcmV3IENhZ25leSAgPGNhZ25leUBiMS5jeWdudXMuY29tPgoKCSogcmVtb3RlLXNpbS5oIChzaW1fc2V0X3Byb2ZpbGVfc2l6ZSk6IEFkZCBwcm90b3R5cGUsIGRvY3VtZW50IGFzCiAJZGVwcmVjaWF0ZWQuCgpUdWUgTWF5IDIwIDA5OjMyOjIyIDE5OTcgIEFuZHJldyBDYWduZXkgIDxjYWduZXlAYjEuY3lnbnVzLmNvbT4KCgkqIHJlbW90ZS1zaW0uaCAoc2ltX29wZW4pOiBBZGQgY2FsbGJhY2sgc3RydWN0LgoJKHNpbV9zZXRfY2FsbGJhY2tzKTogRHJvcCBTSU1fREVTQyBhcmd1bWVudC4gRG9jdW1lbnQuCgkoc2ltX3NpemUpOiBSZW1vdmUgcmVjZW50bHkgYWRkZWQgU0lNX0RFU0MgYXJndW1lbnQuIERvY3VtZW50LgoKTW9uIE1heSAxOSAxOToxNDo0NCAxOTk3ICBBbmRyZXcgQ2FnbmV5ICA8Y2FnbmV5QGIxLmN5Z251cy5jb20+CgoJKiByZW1vdGUtc2ltLmg6IFBhc3MgU0QgaW50byBzaW1fc2l6ZS4KClRodSBNYXkgMTUgMDE6MjQ6MTYgMTk5NyAgTWFyayBBbGV4YW5kZXIgIDxtYXJrYUBjeWdudXMuY29tPgoKCSogb2JzdGFjay5oIChvYnN0YWNrX3NwZWNpZnlfYWxsb2NhdGlvbl93aXRoX2FyZywgb2JzdGFja19jaHVua2Z1biwKCW9ic3RhY2tfZnJlZWZ1bik6IEVsaW1pbmF0ZSBjb21waWxlIHdhcm5pbmdzIGluIGdkYi4KClR1ZSBBcHIgMjIgMTA6MjQ6MzQgMTk5NyAgRnJlZCBGaXNoICA8Zm5mQGN5Z251cy5jb20+CgoJKiBmbG9hdGZvcm1hdC5oIChmbG9hdGZvcm1hdF9ieXRlb3JkZXJzKTogQWRkIGNvbW1lbnRzIGZvciBwcmV2aW91cwoJZm9ybWF0cyBhbmQgYWRkIGZsb2F0Zm9ybWF0X2xpdHRsZWJ5dGVfYmlnd29yZCwgcHJpbWFyaWx5IGZvciBBUk0uCglBZGQgZGVjbGFyYXRpb24gZm9yIGZsb2F0Zm9ybWF0X2llZWVfZG91YmxlX2xpdHRsZWJ5dGVfYmlnd29yZC4KCkZyaSBBcHIgMTggMTM6MDQ6NDkgMTk5NyAgQW5kcmV3IENhZ25leSAgPGNhZ25leUBiMS5jeWdudXMuY29tPgoKCSogcmVtb3RlLXNpbS5oIChzaW1fc3RvcCk6IE5ldyBpbnRlcmZhY2UgLSBhc3luY2hyb25vdXMKIAlub3RpZmljYXRpb24gb2YgYSByZXF1ZXN0IHRvIHN0b3AgLyBzdXNwZW5kIHRoZSBydW5uaW5nCiAJc2ltdWxhdGlvbi4KCgkqIHJlbW90ZS1zaW0uaCAoZW51bSBzaW1fc3RvcCk6IEFkZCBzaW1fcnVubmluZyBhbmQgc2ltX3BvbGxpbmcgYXMKIAlzdGF0ZXMgZm9yIHVzZSBpbnRlcm5hbCB0byBzaW11bGF0b3JzLgoKCSogY2FsbGJhY2suaCAoc3RydWN0IGhvc3RfY2FsbGJhY2tfc3RydXQpOiBQdXQgYSBtYWdpYyBudW1iZXIgYXQKIAl0aGUgZW5kIG9mIHRoZSBzdHJ1Y3QgdG8gYWxsb3cgYmFzaWMgY2hlY2tpbmcuCgkoc3RydWN0IGhvc3RfY2FsbGJhY2tfc3RydWN0ICk6IEFkZCBwb2xsX3F1aXQgLSBzbwogCXRoYXQgdGhlIGNvbnNvbGUgZXRjIGNhbiBiZSBwb2xsZWQgYXQgcmVndWxhciBpbnRlcnZhbHMuCgpUaHUgQXByIDE3IDAyOjE3OjEyIDE5OTcgIERvdWcgRXZhbnMgIDxkamVAY2FudWNrLmN5Z251cy5jb20+CgoJKiByZW1vdGUtc2ltLmggKHN0cnVjdCBfYmZkKTogRGVjbGFyZS4KCShzaW1fbG9hZCk6IFJldHVybiBTSU1fUkMuICBOZXcgYXJnIGBhYmZkJy4KCShzaW1fY3JlYXRlX2luZmVyaW9yKTogUmV0dXJuIFNJTV9SQy4gIERlbGV0ZSBhcmcgYHN0YXJ0X2FkZHJlc3MnLgoKV2VkIEFwciAgMiAxNzowOToxMiAxOTk3ICBBbmRyZXcgQ2FnbmV5ICA8Y2FnbmV5QGtyZW12YXguY3lnbnVzLmNvbT4KCgkqIHJlbW90ZS1zaW0uaCAoc2ltX3RyYWNlLCBzaW1fc2l6ZSk6IE1ha2UgdGhlc2UgZ2xvYmFsLiAgVGhleQogCXdpbGwgZ28gYXdheSBzaG9ydGx5LgoKV2VkIEFwciAgMiAxNToyMzo0OSAxOTk3ICBEb3VnIEV2YW5zICA8ZGplQGNhbnVjay5jeWdudXMuY29tPgoKCSogcmVtb3RlLXNpbS5oIChTSU1fT1BFTl9LSU5ELCBTSU1fUkMpOiBOZXcgZW51bXMuCgkoc2ltX29wZW4pOiBOZXcgYXJndW1lbnQgYGtpbmQnLgoKV2VkIEFwciAgMiAxNDo0NTo1MSAxOTk3ICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQGN5Z251cy5jb20+CgoJKiBDT1BZSU5HOiBVcGRhdGUgRlNGIGFkZHJlc3MuCgpGcmkgTWFyIDI4IDE1OjI5OjU0IDE5OTcgIE1pa2UgTWVpc3NuZXIgIDxtZWlzc25lckBjeWdudXMuY29tPgoKCSogY2FsbGJhY2suaCAodG9wIGxldmVsKTogSW5jbHVkZSBzdGRhcmcuaCBvciB2YXJhcmdzLmggaWYKCXZhX3N0YXJ0IGlzIG5vdCBkZWZpbmVkLgoJKGhvc3RfY2FsbGJhY2tfc3RydWN0KTogTWFrZSB7LGV9dnByaW50Zl9maWx0ZXJlZCB0YWtlIGEgdmFfbGlzdAoJaW5zdGVhZCBvZiB2b2lkICosIHNpbmNlIHZhX2xpc3QgbWlnaHQgYmUgYW4gYXJyYXkgb3Igc3RydWN0dXJlCgl0eXBlLgoKRnJpIE1hciAyOCAxNTo0NDo0MSAxOTk3ICBILkouIEx1ICA8aGpsQGdudS5haS5taXQuZWR1PgoKCSogbGliaWJlcnR5LmggKGJhc2VuYW1lKTogQWRkIHByb3RvdHlwZSBmb3IgZ2xpYmMgYW5kIGxpbnV4LgoKTW9uIE1hciAxNyAxOToyMjoxMiAxOTk3ICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQGN5Z251cy5jb20+CgoJKiBvYmphbGxvYy5oOiBOZXcgZmlsZS4KCk1vbiBNYXIgMTcgMTQ6NTc6NTUgMTk5NyAgQW5kcmV3IENhZ25leSAgPGNhZ25leUBrcmVtdmF4LmN5Z251cy5jb20+CgoJKiByZW1vdGUtc2ltLmg6IE5ldyBmaWxlLCBjb3BpZWQgaW4gZnJvbSBnZGIvcmVtb3RlLXNpbS5oLiAgT25lCiAJZGF5IHRoaXMgd2lsbCBiZSBwbGFjZWQgaW4gYSBkaXJlY3Rvcnkgb2YgaXRzIG93bi4KClNhdCBNYXIgMTUgMTk6MDA6MTQgMTk5NyAgSWFuIExhbmNlIFRheWxvciAgPGlhbkBjeWdudXMuY29tPgoKCSogb2JzdGFjay5oOiBVcGRhdGUgdG8gY3VycmVudCBGU0YgdmVyc2lvbi4KClRodSBNYXIgIDYgMTU6NDY6NTkgMTk5NyAgQW5kcmV3IENhZ25leSAgPGNhZ25leUBrcmVtdmF4LmN5Z251cy5jb20+CgoJKiBjYWxsYmFjay5oIChzdHJ1Y3QgaG9zdF9jYWxsYmFja19zdHJ1Y3QpOiBBZGQgY2FsbGJhY2tzIC0KIAlmbHVzaF9zdGRvdXQsIHdyaXRlX3N0ZGVyciwgZmx1c2hfc3RkZXJyLCB2cHJpbnRmX2ZpbHRlcmVkLAogCWV2cHJpbnRmX2ZpbHRlcmVkLiAgRGVsZXRlIHJlZHVuZGFudCBjYWxsYmFja3MgLSBwcmludGZfZmlsdGVyZWQuCgpUaHUgRmViIDI3IDIzOjE4OjI3IDE5OTcgIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5AY3lnbnVzLmNvbT4KCgkqIGJmZGxpbmsuaCAoc3RydWN0IGJmZF9saW5rX2luZm8pOiBSZW1vdmUgbHByZWZpeCBhbmQgbHByZWZpeF9sZW4KCWZpZWxkcy4KClR1ZSBGZWIgMjUgMDA6MTA6NDkgMTk5NyAgSWFuIExhbmNlIFRheWxvciAgPGlhbkBjeWdudXMuY29tPgoKCSogZGlzLWFzbS5oIChJTklUX0RJU0FTU0VNQkxFX0lORk9fTk9fQVJDSCk6IEluaXRpYWxpemUKCWJ5dGVzX3Blcl9jaHVuayBhbmQgZGlzcGxheV9lbmRpYW4uCgpNb24gRmViIDI0IDE3OjQ3OjAyIDE5OTcgIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5AY3lnbnVzLmNvbT4KCglGcm9tIEVyaWMgWW91bmdkYWxlIDxlcmljQGFuZGFudGUuamljLmNvbT46CgkqIGJmZGxpbmsuaCAoc3RydWN0IGJmZF9lbGZfdmVyc2lvbl9leHByKTogRGVmaW5lLgoJKHN0cnVjdCBiZmRfZWxmX3ZlcnNpb25fZGVwcyk6IERlZmluZS4KCShzdHJ1Y3QgYmZkX2VsZl92ZXJzaW9uX3RyZWUpOiBEZWZpbmUuCgpUaHUgRmViICA2IDE0OjIwOjAxIDE5OTcgIE1hcnRpbiBNLiBIdW50ICA8aHVudEBwaXp6YS5jeWdudXMuY29tPgoKCSogZGlzLWFzbS5oOiAoZGlzYXNzZW1ibGVfaW5mbyk6ICBBZGQgbmV3IGZpZWxkcwoJYnl0ZXNfcGVyX2NodW5rIGFuZCBkaXNwbGF5X2VuZGlhbiB0byBjb250cm9sIHRoZQoJZGlzcGxheSBvZiByYXcgaW5zdHJ1Y3Rpb25zLgoKRnJpIERlYyAyNyAyMjoxNzozNyAxOTk2ICBGcmVkIEZpc2ggIDxmbmZAY3lnbnVzLmNvbT4KCgkqIGRpcy1hc20uaCAocHJpbnRfaW5zbl90aWM4MCk6IERlY2xhcmUuCgpTdW4gRGVjICA4IDE3OjExOjEyIDE5OTYgIERvdWcgRXZhbnMgIDxkamVAY2FudWNrLmN5Z251cy5jb20+CgoJKiBjYWxsYmFjay5oIChob3N0X2NhbGxiYWNrKTogTmV3IG1lbWJlciBgZXJyb3InLgoKV2VkIE5vdiAyMCAwMDo0MDoyMyAxOTk2ICBEb3VnIEV2YW5zICA8ZGplQGNhbnVjay5jeWdudXMuY29tPgoKCSogY2FsbGJhY2suaDogTmV3IGZpbGUsIG1vdmVkIGhlcmUgZnJvbSBnZGIuCgpNb24gTm92IDE4IDE2OjM0OjAwIDE5OTYgIERhd24gUGVyY2hpayAgPGRhd25AY3JpdHRlcnMuY3lnbnVzLmNvbT4KCgkqIGxpYmliZXJ0eS5oOiBDaGVja2luIGFnYWluOyBsYXN0IGNoZWNraW4gZmFpbGVkIGR1ZSB0byBzdGlja3kgdGFnLgoKV2VkIE5vdiAxMyAwODoyMjowMCAxOTk2ICBEYXduIFBlcmNoaWsgIDxkYXduQGNyaXR0ZXJzLmN5Z251cy5jb20+CgoJKiBsaWJpYmVydHkuaDogUmV2ZXJ0IGxhc3QgY29tbWl0IGR1ZSB0byBjb25mbGljdHMgd2l0aCBocHV4CglzeXN0ZW0gaGVhZGVycy4KClR1ZSBOb3YgMTIgMTY6MzE6MDAgMTk5NiAgRGF3biBQZXJjaGlrICA8ZGF3bkBjcml0dGVycy5jeWdudXMuY29tPgoKCSogbGliaWJlcnR5Lmg6IE1vdmUgcHJvdG90eXBlcyBmcm9tIGFyZ3YuYyBoZXJlLgoKVGh1IE9jdCAzMSAxNDo1NjoxOCAxOTk2ICBEb3VnIEV2YW5zICA8ZGplQGNhbnVjay5jeWdudXMuY29tPgoKCSogYW5zaWRlY2wuaCAoVlBBUkFNUyxWQV9TVEFSVCk6IERlZmluZS4KCkZyaSBPY3QgMjUgMTI6MDg6MDQgMTk5NiAgSWFuIExhbmNlIFRheWxvciAgPGlhbkBjeWdudXMuY29tPgoKCSogZGlzLWFzbS5oIChkaXNhc3NlbWJsZV9pbmZvKTogQWRkIGJ5dGVzX3Blcl9saW5lIGZpZWxkLgoJKElOSVRfRElTQVNTRU1CTEVfSU5GT19OT19BUkNIKTogSW5pdGlhbGl6ZSBieXRlc19wZXJfbGluZSBmaWVsZC4KClRodSBPY3QgMjQgMTc6MTA6MDEgMTk5NiAgSWFuIExhbmNlIFRheWxvciAgPGlhbkBjeWdudXMuY29tPgoKCSogZGlzLWFzbS5oIChkaXNhc3NlbWJsZV9pbmZvKTogQWRkIHN5bWJvbCBmaWVsZC4KCShJTklUX0RJU0FTU0VNQkxFX0lORk9fTk9fQVJDSCk6IEluaXRpYWxpemUgc3ltYm9sIGZpZWxkLgoKVGh1IE9jdCAxNyAxMToxNzo0MCAxOTk2ICBEb3VnIEV2YW5zICA8ZGplQGNhbnVjay5jeWdudXMuY29tPgoKCSogZGlzLWFzbS5oIChwcmludF9pbnNuX20zMnIpOiBEZWNsYXJlLgoKTW9uIE9jdCAxNCAyMzo1Njo1MiAxOTk2ICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQGN5Z251cy5jb20+CgoJKiBsaWJpYmVydHkuaDogRGVjbGFyZSBwYXJhbWV0ZXIgdHlwZXMgZm9yIHhtYWxsb2MgYW5kIHhyZWFsbG9jLgoKVGh1IE9jdCAgMyAxMzo0NToyNyAxOTk2ICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQGN5Z251cy5jb20+CgoJKiBmbm1hdGNoLmg6IE5ldyBmaWxlLgoKVGh1IE9jdCAgMyAxMDozMzoxNCAxOTk2ICBKZWZmcmV5IEEgTGF3ICAobGF3QGN5Z251cy5jb20pCgoJKiBkaXMtYXNtLmggKHByaW50X2luc25fbW4xMHgwMCk6IERlbGV0ZSBkZWNsYXJhdGlvbi4KCShwcmludF9pbnNuX21uMTAyMDAsIHByaW50X2luc25fbW4xMDMwMCk6IERlY2xhcmUuCgpXZWQgT2N0ICAyIDIxOjI0OjQzIDE5OTYgIEplZmZyZXkgQSBMYXcgIChsYXdAY3lnbnVzLmNvbSkKCgkqIGRpcy1hc20uaCAocHJpbnRfaW5zbl9tbjEweDAwKTogRGVjbGFyZS4KCk1vbiBTZXAgMzAgMTM6NTY6MTEgMTk5NiAgRnJlZCBGaXNoICA8Zm5mQGN5Z251cy5jb20+CgoJKiBsaWJpYmVydHkuaDogUmVtb3ZlICNpZm5kZWYgUFJJVkFURV9YTUFMTE9DLgoKU2F0IEF1ZyAzMSAxMzoyNzowNiAxOTk2ICBKZWZmcmV5IEEgTGF3ICAobGF3QGN5Z251cy5jb20pCgoJKiBkaXMtYXNtLmggKHByaW50X2luc25fdjg1MCk6IERlY2xhcmUuCgpUdWUgQXVnIDEzIDE2OjEwOjMwIDE5OTYgIFN0dSBHcm9zc21hbiAgKGdyb3NzbWFuQGNyaXR0ZXJzLmN5Z251cy5jb20pCgoJKiBvYnN0YWNrLmg6ICBDaGFuZ2UgYmNvcHkgdG8gbWVtY3B5LiAgV29ya3MgYmV0dGVyIG9uIFBvc2l4CglzeXN0ZW1zLCB3aGljaCBnZW5lcmFsbHkgbGFjayBiY29weS4KCk1vbiBBdWcgMTIgMTc6MDM6MTggMTk5NiAgU3R1IEdyb3NzbWFuICAoZ3Jvc3NtYW5AY3JpdHRlcnMuY3lnbnVzLmNvbSkKCgkqIGFuc2lkZWNsLmg6ICBDaGFuZ2UgV0lOMzIgdG8gX1dJTjMyLgoKRnJpIEp1bCAyNiAxMzo1ODoxOCAxOTk2ICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQGN5Z251cy5jb20+CgoJKiBkaXMtYXNtLmg6IEFkZCBmbGF2b3VyIGZpZWxkLgoJKHByaW50X2luc25fYWxwaGEpOiBEZWNsYXJlLgoJKHByaW50X2luc25fYWxwaGFfb3NmLCBwcmludF9pbnNuX2FscGhhX3Ztcyk6IERvbid0IGRlY2xhcmUuCgkoSU5JVF9ESVNBU1NFTUJMRV9JTkZPKTogSW5pdGlhbGl6ZSBmbGF2b3VyIGZpZWxkLgoKVHVlIEp1bCAyMyAxNzozNzo1OCAxOTk2ICBGcmVkIEZpc2ggIDxmbmZAY3lnbnVzLmNvbT4KCgkqIGxpYmliZXJ0eS5oIChQUklWQVRFX1hNQUxMT0MpOiBFbmNsb3NlIHhtYWxsb2MveHJlYWxsb2MKCWRlZmluaXRpb25zIGluc2lkZSAjaWZuZGVmIHNvIHRoYXQgcHJvZ3JhbXMgdGhhdCB3YW50IHRvCgljYW4gZGVmaW5lIFBSSVZBVEVfWE1BTExPQyBhbmQgdGhlbiBkZWZpbmUgeG1hbGxvYyBhbmQKCXhyZWFsbG9jIGFueXdheSB0aGV5IHdhbnQuCgkoYmFzZW5hbWUpOiBEb2N1bWVudCBpbiBzb3VyY2UgdGhhdCB3ZSBjYW4ndCBkZWNsYXJlIHRoZQogCXBhcmFtZXRlciB0eXBlIGJlY2F1c2UgaXQgaXMgZGVjbGFyZWQgaW5jb25zaXN0ZW50bHkgYWNyb3NzCglkaWZmZXJlbnQgc3lzdGVtcy4KCk1vbiBKdWwgMjIgMTM6MTY6MTMgMTk5NiAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAdGFtdS5lZHU+CgoJKiBkaXMtYXNtLmggKHByaW50X2luc25fYWxwaGEpOiBEb24ndCBkZWNsYXJlLgoJKHByaW50X2luc25fYWxwaGFfb3NmLCBwcmludF9pbnNuX2FscGhhX3Ztcyk6IERlY2xhcmUuCgpXZWQgSnVsIDE3IDE0OjQ1OjEyIDE5OTYgIE1hcnRpbiBNLiBIdW50ICA8aHVudEBwaXp6YS5jeWdudXMuY29tPgoKCSogZGlzLWFzbS5oOiAocHJpbnRfaW5zbl9kMTB2KTogRGVjbGFyZS4KCk1vbiBKdWwgMTUgMTY6NTU6MzggMTk5NiAgU3R1IEdyb3NzbWFuICAoZ3Jvc3NtYW5AY3JpdHRlcnMuY3lnbnVzLmNvbSkKCgkqIGRpcy1hc20uaDogIEdldCByaWQgb2YgZGVjbHMgZm9yIHByaW50X2luc25faTgwODYsCglwcmludF9pbnNuX3NwYXJjNjQgYW5kIHByaW50X2luc25fc3BhcmNsaXRlLgoJKiAoSU5JVF9ESVNBU1NFTUJMRV9JTkZPKTogIFNwbGl0IGludG8gdHdvIHBpZWNlcy4gIE9uZSwKCUlOSVRfRElTQVNTRU1CTEVfSU5GT19OT19BUkNIIGluaXRzIGV2ZXJ5dGhpbmcgZXhjZXB0IGZvciBlbmRpYW4sCgltYWNoLCBhbmQgYXJjaC4KCkZyaSBKdWwgMTIgMTA6MTk6MjcgMTk5NiAgU3R1IEdyb3NzbWFuICAoZ3Jvc3NtYW5AY3JpdHRlcnMuY3lnbnVzLmNvbSkKCgkqIGRpcy1hc20uaCAocHJpbnRfaW5zbl9pODA4Nik6ICBEZWNsYXJlLgoKV2VkIEp1bCAgMyAxNjowMjozOSAxOTk2ICBTdHUgR3Jvc3NtYW4gIChncm9zc21hbkBjcml0dGVycy5jeWdudXMuY29tKQoKCSogZGlzLWFzbS5oIChwcmludF9pbnNuX3NwYXJjbGl0ZSk6ICBEZWNsYXJlLgoKVHVlIEp1biAxOCAxNjowMjo0NiAxOTk2ICBKZWZmcmV5IEEuIExhdyAgPGxhd0BydGwuY3lnbnVzLmNvbT4KCgkqIGRpcy1hc20uaCAocHJpbnRfaW5zbl9oODMwMHMpOiBEZWNsYXJlLgoKVHVlIEp1biAxOCAxNToxMTozMyAxOTk2ICBLbGF1cyBLYWVtcGYgIDxra2FlbXBmQHByb2dpcy5kZT4KCgkqIGZvcGVuLXZtcy5oOiBOZXcgZmlsZS4KClR1ZSBKdW4gIDQgMTg6NTg6MTYgMTk5NiAgSWFuIExhbmNlIFRheWxvciAgPGlhbkBjeWdudXMuY29tPgoKCSogYmZkbGluay5oIChzdHJ1Y3QgYmZkX2xpbmtfaW5mbyk6IEFkZCBub3RpY2VfYWxsIGZpZWxkLgoKRnJpIEFwciAyNiAxMDozMzoxMiAxOTk2ICBEb3VnIEV2YW5zICA8ZGplQGNhbnVjay5jeWdudXMuY29tPgoKCSogZGVtYW5nbGUuaCAoI2lmZGVmIElOX0dDQyk6ICNpbmNsdWRlICJnYW5zaWRlY2wuaCIuCgkoUFJPVE8sUFRSLGNvbnN0KTogRGVsZXRlLgoKTW9uIEFwciAyMiAxNzoyNzo0MiAxOTk2ICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQGN5Z251cy5jb20+CgoJKiBiZmRsaW5rLmggKHN0cnVjdCBiZmRfbGlua19pbmZvKTogQWRkIHRyYWRpdGlvbmFsX2Zvcm1hdCBmaWVsZC4KCk1vbiBBcHIgMTUgMTU6MTY6NTYgMTk5NiAgRG91ZyBFdmFucyAgPGRqZUBjYW51Y2suY3lnbnVzLmNvbT4KCgkqIGxpYmliZXJ0eS5oIChjaG9vc2VfdGVtcF9iYXNlKTogQWRkIHByb3RvdHlwZS4KClR1ZSBNYXIgMTIgMTc6Mjk6NDYgMTk5NiAgSWFuIExhbmNlIFRheWxvciAgPGlhbkBjeWdudXMuY29tPgoKCSogYmZkbGluay5oIChiZmRfd3JhcHBlZF9saW5rX2hhc2hfbG9va3VwKTogRGVjbGFyZS4KCShzdHJ1Y3QgYmZkX2xpbmtfaW5mbyk6IEFkZCB3cmFwX2hhc2ggZmllbGQuCgpXZWQgRmViIDE0IDE2OjQ5OjE3IDE5OTYgIE1hcnRpbiBBbmFudGhhcmFtYW4gIDxtYXJ0aW5AbWFpbC5pbWVjaC51bmktZHVpc2J1cmcuZGU+CgoJKiBpZWVlLmggKGllZWVfcmVjb3JkX2VudW1fdHlwZSk6IERlZmluZQoJaWVlZV9leHRlcm5hbF9yZWZlcmVuY2VfaW5mb19lbnVtLgoKRnJpIEZlYiAgMiAxNzowOToyNSAxOTk2ICBEb3VnIEV2YW5zICA8ZGplQGNoYXJtZWQuY3lnbnVzLmNvbT4KCgkqIGRpcy1hc20uaCAoRElTQVNNX1JBV19JTlNOKTogRGVsZXRlLgoKVHVlIEphbiAyMyAwOToyMTo0NyAxOTk2ICBEb3VnIEV2YW5zICA8ZGplQGNoYXJtZWQuY3lnbnVzLmNvbT4KCgkqIGRpcy1hc20uaCAoSU5JVF9ESVNBU1NFTUJMRV9JTkZPKTogU2V0IGVuZGlhbiB0byBCRkRfRU5ESUFOX1VOS05PV04uCglOZXcgYXJndW1lbnQgRlBSSU5URl9GVU5DLgoKTW9uIEphbiAyMiAxNjozNzo1OSAxOTk2ICBEb3VnIEV2YW5zICA8ZGplQGNoYXJtZWQuY3lnbnVzLmNvbT4KCgkqIGRpcy1hc20uaCAoZGlzYXNzZW1ibGVfaW5mbyk6IE5ldyBtZW1iZXJzIGFyY2gsIG1hY2gsIGVuZGlhbi4KCShJTklUX0RJU0FTU0VNQkxFX0lORk8pOiBJbml0aWFsaXplIHRoZW0uCgkoRElTQVNNX1JBV19JTlNOeyxGTEFHfSk6IERlZmluZS4KClRodSBKYW4gMTggMTE6MzI6MzggMTk5NiAgSWFuIExhbmNlIFRheWxvciAgPGlhbkBjeWdudXMuY29tPgoKCSogZGVtYW5nbGUuaCAoY3BsdXNfZGVtYW5nbGVfb3BuYW1lKTogQ2hhbmdlIG9wbmFtZSBwYXJhbWV0ZXIgdG8KCWNvbnN0IGNoYXIgKi4KCShjcGx1c19tYW5nbGVfb3BuYW1lKTogQ2hhbmdlIHJldHVybiB0eXBlIGFuZCBvcG5hbWUgcGFyYW1ldGVyIHRvCgljb25zdCBjaGFyICouCgpGcmkgSmFuICA1IDAwOjAxOjIyIDE5OTYgIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5AY3lnbnVzLmNvbT4KCgkqIGllZWUuaCAoZW51bSBpZWVlX3JlY29yZCk6IEFkZCBpZWVlX2Fzbl9yZWNvcmRfZW51bSwKCWllZWVfYXRfcmVjb3JkX2VudW0sIGllZWVfdHlfcmVjb3JkX2VudW0sIGllZWVfYXRuX3JlY29yZF9lbnVtLAoJaWVlZV9iYl9yZWNvcmRfZW51bSwgYW5kIGllZWVfYmVfcmVjb3JkX2VudW0uCgpXZWQgSmFuICAzIDEzOjEyOjA5IDE5OTYgIEZyZWQgRmlzaCAgPGZuZkBjeWdudXMuY29tPgoKCSogb2JzdGFjay5oOiBVcGRhdGUgY29weXJpZ2h0IHRvIDE5OTYuCgkoX29ic3RhY2tfbWVtb3J5X3VzZWQpOiBEZWNsYXJlLgoJKG9ic3RhY2tfbWVtb3J5X3VzZWQpOiBEZWZpbmUgbWFjcm8uCgpUaHUgRGVjIDI4IDExOjQyOjEyIDE5OTUgIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5AY3lnbnVzLmNvbT4KCgkqIGxpYmliZXJ0eS5oICh4c3RyZHVwKTogRGVjbGFyZS4KClRodSBEZWMgMjEgMTQ6NDc6MTcgMTk5NSAgTWljaGFlbCBNZWlzc25lciAgPG1laXNzbmVyQHRpa3Rvay5jeWdudXMuY29tPgoKCSogd2FpdC5oOiBQcm90ZWN0IGFsbCBtYWNyb3Mgd2l0aCAjaWZuZGVmLgoKVHVlIE9jdCAyNCAyMTo0NTo0MCAxOTk1ICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQGN5Z251cy5jb20+CgoJKiBiZmRsaW5rLmggKHN0cnVjdCBiZmRfbGlua19pbmZvKTogQWRkIHN0YXRpY19saW5rIGZpZWxkLgoKVHVlIFNlcCAxMiAxNjoyODowNCAxOTk1ICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQGN5Z251cy5jb20+CgoJKiBiZmRsaW5rLmggKHN0cnVjdCBiZmRfbGlua19jYWxsYmFja3MpOiBBZGQgc3ltYm9sIHBhcmFtZXRlciB0bwoJd2FybmluZyBjYWxsYmFjay4KCkZyaSBTZXAgIDEgMTM6MTE6NTEgMTk5NSAgSWFuIExhbmNlIFRheWxvciAgPGlhbkBjeWdudXMuY29tPgoKCSogYmZkbGluay5oIChzdHJ1Y3QgYmZkX2xpbmtfY2FsbGJhY2tzKTogQ2hhbmdlIHdhcm5pbmcgY2FsbGJhY2sKCXRvIHRha2UgQkZELCBzZWN0aW9uLCBhbmQgYWRkcmVzcyBhcmd1bWVudHMuCgpUaHUgQXVnIDMxIDE2OjQ1OjEyIDE5OTUgIHN0ZXZlIGNoYW1iZXJsYWluICA8c2FjQHNsYXNoLmN5Z251cy5jb20+CgoJKiBiZmRsaW5rLmggKHN0cnVjdCBiZmRfbGlua19pbmZvKTogUmVtb3ZlIFBFIHN0dWZmLgoKVHVlIEF1ZyAyMiAwMzoxODoyMyAxOTk1ICBLZW4gUmFlYnVybiAgPHJhZWJ1cm5Aa3ItbGFwdG9wLmN5Z251cy5jb20+CgoJKiBsaWJpYmVydHkuaDogRGVjbGFyZSB4c3RyZXJyb3IuICBGcm9tIFBhdCBSYW5raW4uCgpNb24gQXVnIDIxIDE4OjExOjM2IDE5OTUgIHN0ZXZlIGNoYW1iZXJsYWluICA8c2FjQHNsYXNoLmN5Z251cy5jb20+CgoJKiBiZmRsaW5rLmggKHN0cnVjdCBiZmRfbGlua19pbmZvKTogUmVtb3ZlIFBFIHN0dWZmLgoKV2VkIEF1ZyAgMiAwODoxNDoxMiAxOTk1ICBEb3VnIEV2YW5zICA8ZGplQGNhbnVjay5jeWdudXMuY29tPgoKCSogZGlzLWFzbS5oIChwcmludF9pbnNuX3NwYXJjNjQpOiBEZWNsYXJlLgoKTW9uIEp1bCAxMCAxMzoyNjo0OSAxOTk1ICBFcmljIFlvdW5nZGFsZSAgPGVyaWNAYWliLmNvbT4KCgkqIGJmZGxpbmsuaCAoc3RydWN0IGJmZF9saW5rX2luZm8pOiBBZGQgbmV3IGZpZWxkIHN5bWJvbGljLgoKU3VuIEp1bCAgMiAxNzo0ODo0MCAxOTk1ICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQGN5Z251cy5jb20+CgoJKiBiZmRsaW5rLmggKHN0cnVjdCBiZmRfbGlua19pbmZvKTogQ2hhbmdlIHR5cGUgb2YgYmFzZV9maWxlIHRvCglQVFIuCgpUaHUgSnVuIDI5IDAwOjAyOjQ1IDE5OTUgIFN0ZXZlIENoYW1iZXJsYWluICA8c2FjQHNsYXNoLmN5Z251cy5jb20+CgoJKiBiZmRsaW5rLmggKHN0cnVjdCBiZmRfbGlua19pbmZvKTogQWRkZWQgYmFzZV9maWxlIG1lbWJlci4KClR1ZSBKdW4gMjAgMTY6NDA6MDQgMTk5NSAgU3RldmUgQ2hhbWJlcmxhaW4gIDxzYWNAc2xhc2guY3lnbnVzLmNvbT4KCgkqIGFuc2lkZWNsLmg6IHdpbjMycyBpcyBBTlNJIGVub3VnaC4KClRodSBNYXkgMTggMDQ6MjU6NTAgMTk5NSAgS2VuIFJhZWJ1cm4gIDxyYWVidXJuQGtyLWxhcHRvcC5jeWdudXMuY29tPgoKCVdlZCBNYXkgMTAgMTQ6Mjg6MTYgMTk5NSBSaWNoYXJkIEVhcm5zaGF3IChyZWFybnNoYUBhcm1sdGQuY28udWspCgoJKiBkaXMtYXNtLmggKHByaW50X2luc25fYXJtKTogRGVsZXRlIGRlY2xhcmF0aW9uLgoJKHByaW50X2luc25fe2xpdHRsZSxiaWd9X2FybSk6IE5ldyBkZWNsYXJhdGlvbnMuCgoJKiBmbG9hdGZvcm1hdC5oIChmbG9hdGZvcm1hdF9hcm1fZXh0KTogRGVjbGFyZS4KClNhdCBNYXkgMTMgMTA6MTQ6MDggMTk5NSAgU3RldmUgQ2hhbWJlcmxhaW4gIDxzYWNAc2xhc2guY3lnbnVzLmNvbT4KCgkqIGJmZGxpbmsuaCAoc3Vic3l0ZW0sIHN0YWNrX2hlYXBfcGFyYW1ldGVycyk6IE5ldy4KClRodSBNYXkgIDQgMTQ6MzY6NDIgMTk5NSAgSmFzb24gTWVycmlsbCAgPGphc29uQHBoeWRlYXV4LmN5Z251cy5jb20+CgoJKiBkZW1hbmdsZS5oOiBEb24ndCBpbmNsdWRlIGFuc2lkZWNsLmggaWYgSU5fR0NDLgoKVHVlIEZlYiAyMSAwMDozNzoyOCAxOTk1ICBKZWZmIExhdyAgKGxhd0BzbmFrZS5jcy51dGFoLmVkdSkKCgkqIGhwLXN5bXRhYi5oOiBEb24ndCB1c2UgYml0ZmllbGQgZW51bWVyYXRpb25zLCB0aGUgSFAgQyBjb21waWxlcgoJZG9lcyBub3QgaGFuZGxlIHRoZW0gY29ycmVjdGx5LgoKVGh1IEZlYiAgOSAxNDoyMDoyNyAxOTk1ICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQGN5Z251cy5jb20+CgoJKiBsaWJpYmVydHkuaCAoYmFzZW5hbWUpOiBEb24ndCBkZWNsYXJlIHBhcmFtZXRlciB0eXBlOyBzb21lCglzeXN0ZW1zIGhhdmUgdGhpcyBpbiB0aGVpciBoZWFkZXIgZmlsZXMuCgpXZWQgRmViICA4IDE3OjM1OjM4IDE5OTUgIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5AY3lnbnVzLmNvbT4KCgkqIGJmZGxpbmsuaCAoc3RydWN0IGJmZF9saW5rX2hhc2hfZW50cnkpOiBDaGFuZ2UgZm9ybWF0IG9mIGNvbW1vbgoJc3ltYm9sIGluZm9ybWF0aW9uLCB0byByZW1vdmUgcmVzdHJpY3Rpb25zIG9uIG1heGltdW0gc2l6ZSBhbmQKCWFsaWdubWVudCBwb3dlciwgYnkgdXNpbmcgYSBwb2ludGVyIHRvIGEgc3RydWN0dXJlIGluc3RlYWQuCgpNb24gRmViICA2IDE0OjU1OjMyIDE5OTUgIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5AY3lnbnVzLmNvbT4KCgkqIGJmZGxpbmsuaCAoZW51bSBiZmRfbGlua19oYXNoX3R5cGUpOiBSZW5hbWUgYmZkX2xpbmtfaGFzaF93ZWFrCgl0byBiZmRfbGlua19oYXNoX3VuZGVmd2Vhay4gIEFkZCBiZmRfbGlua19oYXNoX2RlZndlYWsuCgpNb24gSmFuIDE2IDIxOjAwOjIzIDE5OTUgIFN0YW4gU2hlYnMgIDxzaGVic0BhbmRyb3MuY3lnbnVzLmNvbT4KCgkqIGRpcy1hc20uaCAoR0RCX0lOSVRfRElTQVNTRU1CTEVfSU5GTywgZXRjKTogUmVtb3ZlIGFsbAoJR0RCLXNwZWNpZmljIGRlZmluaXRpb25zLgoKU3VuIEphbiAxNSAxODozOTozNSAxOTk1ICBTdGV2ZSBDaGFtYmVybGFpbiAgPHNhY0BzcGxhdD4KCgkqIGRpcy1hc20uaCAocHJpbnRfaW5zbl93NjUpOiBEZWNsYXJlLgoKVGh1IEphbiAxMiAxNzo1MToxNyAxOTk1ICBLZW4gUmFlYnVybiAgPHJhZWJ1cm5AY3Vqby5jeWdudXMuY29tPgoKCSogbGliaWJlcnR5LmggKGhleF9wKTogRml4IHNlbnNlIG9mIHRlc3QuCgpXZWQgSmFuIDExIDIyOjM2OjQwIDE5OTUgIEtlbiBSYWVidXJuICA8cmFlYnVybkBjdWpvLmN5Z251cy5jb20+CgoJKiBsaWJpYmVydHkuaCAoX2hleF9hcnJheV9zaXplLCBfaGV4X2JhZCwgX2hleF92YWx1ZSwgaGV4X2luaXQsCgloZXhfcCwgaGV4X3ZhbHVlKTogTmV3IG1hY3JvcyBhbmQgZGVjbGFyYXRpb25zLCBmb3IgaGV4LmMuCgpGcmkgSmFuICA2IDE3OjQ0OjE0IDE5OTUgIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5Ac2FuZ3VpbmUuY3lnbnVzLmNvbT4KCgkqIGRpcy1hc20uaDogTWFrZSBpZGVtcG90ZW50LgoKV2VkIERlYyAxNCAxMzowODo0MyAxOTk0ICBTdGFuIFNoZWJzICA8c2hlYnNAYW5kcm9zLmN5Z251cy5jb20+CgoJKiBwcm9ncmVzcy5oOiBOZXcgZmlsZSwgZW1wdHkgZGVmaW5pdGlvbnMgZm9yIHByb2dyZXNzIG1hY3Jvcy4KCkZyaSBOb3YgMjUgMDA6MTQ6MDUgMTk5NCAgSmVmZiBMYXcgIChsYXdAc25ha2UuY3MudXRhaC5lZHUpCgoJKiBocC1zeW10YWIuaDogTmV3IGZpbGUgZGVzY3JpYmluZyB0aGUgZGVidWcgc3ltYm9scyBlbWl0dGVkCglieSB0aGUgSFAgQyBjb21waWxlcnMuCgpGcmkgTm92IDExIDE1OjQ4OjM3IDE5OTQgIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5Ac2FuZ3VpbmUuY3lnbnVzLmNvbT4KCgkqIGJmZGxpbmsuaCAoc3RydWN0IGJmZF9saW5rX2hhc2hfZW50cnkpOiBDaGFuZ2UgdS5jLnNpemUgZnJvbSAyNAoJdG8gMjYgYml0cywgYW5kIGNoYW5nZSB1LmMuYWxpZ25tZW50X3Bvd2VyIGZyb20gOCB0byA2IGJpdHMuICA2CgliaXQgaW4gdGhlIGFsaWdubWVudCBwb3dlciBpcyBlbm91Z2ggZm9yIGEgNjQgYml0IGFkZHJlc3Mgc3BhY2UuCgpNb24gT2N0IDMxIDEzOjAyOjUxIDE5OTQgIFN0YW4gU2hlYnMgIChzaGVic0BhbmRyb3MuY3lnbnVzLmNvbSkKCgkqIGRlbWFuZ2xlLmggKGNwbHVzX21hbmdsZV9vcG5hbWUpOiBEZWNsYXJlLgoKVHVlIE9jdCAyNSAxMTozODowMiAxOTk0ICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQHNhbmd1aW5lLmN5Z251cy5jb20+CgoJKiBiZmRsaW5rLmggKHN0cnVjdCBiZmRfbGlua19jYWxsYmFja3MpOiBGaXggY29tbWVudHMgZm9yCgltdWx0aXBsZV9jb21tb24gZmllbGQuCgpTdW4gU2VwIDA0IDE3OjU4OjEwIDE5OTQgIFJpY2hhcmQgRWFybnNoYXcgKHJ3ZUBwZWdhc3VzLmVzcHJpdC5lYy5vcmcpCgoJKiBkaXMtYXNtLmg6IEFkZCBzdXBwb3J0IGZvciB0aGUgQVJNLgoKV2VkIEF1ZyAxMCAxMjo1MTo0MSAxOTk0ICBEb3VnIEV2YW5zICAoZGplQGNhbnVjay5jeWdudXMuY29tKQoKCSogbGliaWJlcnR5LmggKHN0cnNpZ25hbCk6IERvY3VtZW50IGl0cyBleGlzdGVuY2UgZXZlbiBpZiB3ZQoJY2FuJ3QgZGVjbGFyZSBpdC4KClR1ZSBBdWcgIDIgMTQ6NDA6MDMgMTk5NCAgSmltIEtpbmdkb24gIChraW5nZG9uQGxpb3RoLmN5Z251cy5jb20pCgoJKiBvczlrLmg6IFJlbW92ZSB1X2ludDE2LCB1X2ludDMyLCBhbmQgb3duZXJfaWQgdHlwZWRlZnMgYW5kCglleHBhbmQgdGhlaXIgdXNlcy4gIFRob3NlIG5hbWVzIGNvbmZsaWN0IHdpdGggTWFjaCBoZWFkZXJzLgoKRnJpIEp1bCAyMiAxNDoxNzoxMiAxOTk0ICBJYW4gTGFuY2UgVGF5bG9yICAoaWFuQHNhbmd1aW5lLmN5Z251cy5jb20pCgoJKiBiZmRsaW5rLmggKHN0cnVjdCBiZmRfbGlua19oYXNoX2VudHJ5KTogQ2hhbmdlIHUuYy5zaXplIGludG8gYQoJYml0ZmllbGQuICBBZGQgZmllbGQgdS5jLmFsaWdubWVudF9wb3dlci4KClN1biBKdWwgMTAgMDA6MjY6MzkgMTk5NCAgSWFuIERhbGwgIChkYWxsQGhmcmQuZHN0by5nb3YuYXUpCgoJKiBkaXMtYXNtLmg6IEFkZCBwcmludF9pbnNuX25zMzJrIGRlY2xhcmF0aW9uLgoKTW9uIEp1biAyMCAxNzoxMzoyOSAxOTk0ICBJYW4gTGFuY2UgVGF5bG9yICAoaWFuQHNhbmd1aW5lLmN5Z251cy5jb20pCgoJKiBiZmRsaW5rLmggKGJmZF9saW5rX2hhc2hfdGFibGUpOiBNYWtlIGNyZWF0b3IgYSBjb25zdCBwb2ludGVyLgoKU2F0IEp1biAxOCAxNjowOTozMiAxOTk0ICBTdGFuIFNoZWJzICAoc2hlYnNAYW5kcm9zLmN5Z251cy5jb20pCgoJKiBkZW1hbmdsZS5oIChjcGx1c19kZW1hbmdsZV9vcG5hbWUpOiBEZWNsYXJlLgoKVGh1IEp1biAxNiAxNToxOTowMyAxOTk0ICBJYW4gTGFuY2UgVGF5bG9yICAoaWFuQHR3ZWVkbGVkdW1iLmN5Z251cy5jb20pCgoJKiBiZmRsaW5rLmggKHN0cnVjdCBiZmRfbGlua19pbmZvKTogQWRkIG5ldyBmaWVsZCBzaGFyZWQuCgpNb24gSnVuICA2IDE0OjM5OjQ0IDE5OTQgIElhbiBMYW5jZSBUYXlsb3IgIChpYW5AdHdlZWRsZWR1bWIuY3lnbnVzLmNvbSkKCgkqIGJmZGxpbmsuaCAoc3RydWN0IGJmZF9saW5rX2hhc2hfZW50cnkpOiBSZW1vdmUgd3JpdHRlbiBmaWVsZDoKCW5vdCBuZWVkZWQgZm9yIGFsbCBiYWNrZW5kcy4KClRodSBBcHIgMjggMTk6MDY6NTAgMTk5NCAgS2VuIFJhZWJ1cm4gIChyYWVidXJuQGN1am8uY3lnbnVzLmNvbSkKCgkqIGRpcy1hc20uaCAoZGlzYXNzZW1ibGVyKTogRGVjbGFyZS4KCkZyaSBBcHIgIDEgMDA6Mzg6MTcgMTk5NCAgSmltIFdpbHNvbiAgKHdpbHNvbkBtb2xlLmdudS5haS5taXQuZWR1KQoKCSogb2JzdGFjay5oOiBEZWxldGUgdXNlIG9mIElOX0dDQyB0byBjb250cm9sIHdoZXRoZXIKCXN0ZGRlZi5oIG9yIGdzdGRkZWYuaCBpcyBpbmNsdWRlZC4KClR1ZSBNYXIgMjIgMTM6MDY6MDIgMTk5NCAgSWFuIExhbmNlIFRheWxvciAgKGlhbkB0d2VlZGxlZHVtYi5jeWdudXMuY29tKQoKCSogYmZkbGluay5oIChlbnVtIGJmZF9saW5rX29yZGVyX3R5cGUpOiBBZGQgYmZkX2RhdGFfbGlua19vcmRlci4KCShzdHJ1Y3QgYmZkX2xpbmtfb3JkZXIpOiBBZGQgZGF0YSBmaWVsZCB0byB1bmlvbi4KCk1vbiBNYXIgMjEgMTg6NDU6MjYgMTk5NCAgSWFuIExhbmNlIFRheWxvciAgKGlhbkB0d2VlZGxlZHVtYi5jeWdudXMuY29tKQoKCSogYmZkbGluay5oIChzdHJ1Y3QgYmZkX2xpbmtfY2FsbGJhY2tzKTogQ2hhbmdlIGJpdHNpemUgYXJndW1lbnQKCXRvIGFkZF90b19zZXQgdG8gcmVsb2MuICBSZW1vdmUgYml0c2l6ZSBhcmd1bWVudCBmcm9tIGNvbnN0cnVjdG9yLgoJQ29tbWVudCB0aGF0IHJlbG9jX292ZXJmbG93LCByZWxvY19kYW5nZXJvdXMgYW5kIHVuYXR0YWNoZWRfcmVsb2MKCW11c3QgaGFuZGxlIE5VTEwgcG9pbnRlcnMgZm9yIHJlbG9jIGxvY2F0aW9uLgoJKGVudW0gYmZkX2xpbmtfb3JkZXJfdHlwZSk6IEFkZCBiZmRfc2VjdGlvbl9yZWxvY19saW5rX29yZGVyIGFuZAoJYmZkX3N5bWJvbF9yZWxvY19saW5rX29yZGVyLgoJKHN0cnVjdCBiZmRfbGlua19vcmRlcik6IEFkZCByZWxvYyBmaWVsZCB0byB1bmlvbi4KCShzdHJ1Y3QgYmZkX2xpbmtfb3JkZXJfcmVsb2MpOiBEZWZpbmUuCgpNb24gTWFyIDE0IDEyOjI3OjUwIDE5OTQgIElhbiBMYW5jZSBUYXlsb3IgIChpYW5AY3lnbnVzLmNvbSkKCgkqIGllZWUtZmxvYXQuaDogUmVtb3ZlZDsgbm8gbG9uZ2VyIHVzZWQuCgpUdWUgTWFyICAxIDE4OjEwOjQ5IDE5OTQgIEt1bmcgSHN1ICAoa3VuZ0BtZXhpY2FuLmN5Z251cy5jb20pCgoJKiBvczlrLmg6IG9zOTAwMCB0YXJnZXQgc3BlY2lmaWMgaGVhZGVyIGZpbGUsIHRoZSBoZWFkZXIgb2YgdGhlCglvYmplY3QgZmlsZSBpcyB1c2VkIG5vdy4KClN1biBGZWIgMjcgMjE6NTI6MjYgMTk5NCAgSmltIEtpbmdkb24gIChraW5nZG9uQGRlbmViLmN5Z251cy5jb20pCgoJKiBmbG9hdGZvcm1hdC5oOiBOZXcgZmlsZSwgaW50ZW5kZWQgdG8gcmVwbGFjZSBpZWVlLWZsb2F0LmguCgpTdW4gRmViIDIwIDE3OjE1OjQyIDE5OTQgIElhbiBMYW5jZSBUYXlsb3IgIChpYW5AbGlzYS5jeWdudXMuY29tKQoKCSogYW5zaWRlY2wuaCAoQU5TSV9QUk9UT1RZUEVTKTogRGVmaW5lIGlmIHVzaW5nIEFOU0kgcHJvdG90eXBlcy4KCldlZCBGZWIgMTYgMDE6MDc6MTIgMTk5NCAgSWFuIExhbmNlIFRheWxvciAgKGlhbkB0d2VlZGxlZHVtYi5jeWdudXMuY29tKQoKCSogbGliaWJlcnR5Lmg6IERvbid0IGRlY2xhcmUgc3Ryc2lnbmFsLCB0byBhdm9pZCBjb25mbGljdHMgd2l0aAoJU29sYXJpcyBzeXN0ZW0gaGVhZGVyIGZpbGVzLgoKU2F0IEZlYiAxMiAyMjoxMTozMiAxOTk0ICBKZWZmcmV5IEEuIExhdyAgKGxhd0BzbmFrZS5jcy51dGFoLmVkdSkKCgkqIGxpYmliZXJ0eS5oICh4ZXhpdCk6IFVzZSBfX3ZvbGF0aWxlX18gdG8gYXZvaWQgbG9zaW5nIGlmCgljb21waWxpbmcgd2l0aCBnY2MgLXRyYWRpdGlvbmFsLgoKVGh1IEZlYiAxMCAxNDowNTo0MSAxOTk0ICBJYW4gTGFuY2UgVGF5bG9yICAoaWFuQGN5Z251cy5jb20pCgoJKiBsaWJpYmVydHkuaDogTmV3IGZpbGUuICBEZWNsYXJlcyBmdW5jdGlvbnMgcHJvdmlkZWQgYnkKCWxpYmliZXJ0eS4KClR1ZSBGZWIgIDggMDU6MTk6NTIgMTk5NCAgRGF2aWQgSi4gTWFja2VuemllICAoZGptQHRoZXB1Yi5jeWdudXMuY29tKQoKCUhhbmRsZSBvYnN0YWNrX2NodW5rX2FsbG9jIHJldHVybmluZyBOVUxMLiAgVGhpcyBhbGxvd3MKCW9ic3RhY2tzIHRvIGJlIHVzZWQgYnkgbGlicmFyaWVzLCB3aXRob3V0IGZvcmNpbmcgdGhlbQoJdG8gY2FsbCBleGl0IG9yIGxvbmdqbXAuCgkqIG9ic3RhY2suaCAoc3RydWN0IG9ic3RhY2spOiBBZGQgYWxsb2NfZmFpbGVkIGZsYWcuCglfb2JzdGFja19iZWdpbiwgX29ic3RhY2tfYmVnaW5fMSk6IERlY2xhcmUgdG8gcmV0dXJuIGludCwgbm90IHZvaWQuCgkob2JzdGFja19maW5pc2gpOiBJZiBhbGxvY19mYWlsZWQsIHJldHVybiBOVUxMLgoJKG9ic3RhY2tfYmFzZSwgb2JzdGFja19uZXh0X2ZyZWUsIG9ianN0YWNrX29iamVjdF9zaXplKToKCUlmIGFsbG9jX2ZhaWxlZCwgcmV0dXJuIDAuCgkob2JzdGFja19ncm93LCBvYnN0YWNrX2dyb3cwLCBvYnN0YWNrXzFncm93LCBvYnN0YWNrX3B0cl9ncm93LAoJb2JzdGFja19pbnRfZ3Jvdywgb2JzdGFja19ibGFuayk6IElmIGFsbG9jX2ZhaWxlZCwgZG8gbm90aGluZyB0aGF0Cgljb3VsZCBjb3JydXB0IHRoZSBvYnN0YWNrLgoKTW9uIEphbiAyNCAxNTowNjowNSAxOTk0ICBJYW4gTGFuY2UgVGF5bG9yICAoaWFuQHR3ZWVkbGVkdW1iLmN5Z251cy5jb20pCgoJKiBiZmRsaW5rLmggKHN0cnVjdCBiZmRfbGlua19jYWxsYmFja3MpOiBBZGQgbmFtZSwgcmVsb2NfbmFtZSBhbmQKCWFkZGVuZCBhcmdtZW50cyB0byByZWxvY19vdmVyZmxvdyBjYWxsYmFjay4KCkZyaSBKYW4gMjEgMTk6MTM6MTIgMTk5NCAgSWFuIExhbmNlIFRheWxvciAgKGlhbkB0d2VlZGxlZHVtYi5jeWdudXMuY29tKQoKCSogZGlzLWFzbS5oIChwcmludF9pbnNuX2JpZ19wb3dlcnBjLCBwcmludF9pbnNuX2xpdHRsZV9wb3dlcnBjLAoJcHJpbnRfaW5zbl9yczYwMDApOiBEZWNsYXJlLgoKVGh1IEphbiAgNiAxNDoxNTo1NSAxOTk0ICBJYW4gTGFuY2UgVGF5bG9yICAoaWFuQHR3ZWVkbGVkdW1iLmN5Z251cy5jb20pCgoJKiBiZmRsaW5rLmggKHN0cnVjdCBiZmRfbGlua19jYWxsYmFja3MpOiBBZGQgYml0c2l6ZSBhcmd1bWVudCB0bwoJYWRkX3RvX3NldCBmaWVsZC4gIEFkZCBuZXcgY2FsbGJhY2sgbmFtZWQgY29uc3RydWN0b3IuCgpUaHUgRGVjIDMwIDEwOjQ0OjA2IDE5OTMgIElhbiBMYW5jZSBUYXlsb3IgIChpYW5AcnRsLmN5Z251cy5jb20pCgoJKiBiZmRsaW5rLmg6IE5ldyBmaWxlIGZvciBuZXcgQkZEIGxpbmtlciBiYWNrZW5kIHJvdXRpbmVzLgoKTW9uIE5vdiAyOSAxMDo0Mzo1NyAxOTkzICBJYW4gTGFuY2UgVGF5bG9yICAoaWFuQHR3ZWVkbGVkdW1iLmN5Z251cy5jb20pCgoJKiBkaXMtYXNtLmggKGVudW0gZGlzX2luc25fdHl1cGUpOiBSZW1vdmUgbm9uLUFOU0kgdHJhaWxpbmcgY29tbWEuCgpTYXQgT2N0ICAyIDIwOjQyOjI2IDE5OTMgIEppbSBLaW5nZG9uICAoa2luZ2RvbkBsaW90aC5jeWdudXMuY29tKQoKCSogZGlzLWFzbS5oOiBNb3ZlIGNvbW1lbnQgdG8gcmlnaHQgcGxhY2UuCgpNb24gQXVnICA5IDE5OjAzOjM1IDE5OTMgIERhdmlkIEouIE1hY2tlbnppZSAgKGRqbUB0aGVwdWIuY3lnbnVzLmNvbSkKCgkqIG9ic3RhY2suaCAob2JzdGFja19jaHVua2Z1biwgb2JzdGFja19mcmVlZnVuKTogQWRkIGRlZm5zIGZyb20KCXByZXZpb3VzIHZlcnNpb24uICBBcmUgdGhlc2UgQ3lnbnVzIGxvY2FsIGNoYW5nZXM/CgpGcmkgQXVnICA2IDE3OjA1OjQ3IDE5OTMgIERhdmlkIEouIE1hY2tlbnppZSAgKGRqbUB0aGVwdWIuY3lnbnVzLmNvbSkKCgkqIGdldG9wdC5oLCBvYnN0YWNrLmg6IFVwZGF0ZSB0byBsYXRlc3QgRlNGIHZlcnNpb24uCgpNb24gQXVnICAyIDE0OjQ1OjI5IDE5OTMgIEpvaG4gR2lsbW9yZSAgKGdudUBjeWdudXMuY29tKQoKCSogZGlzLWFzbS5oOiAgTW92ZSBlbnVtIG91dHNpZGUgb2Ygc3RydWN0IGRlZm4gdG8gYXZvaWQgd2FybmluZ3MuCgpNb24gQXVnICAyIDA4OjQ5OjMwIDE5OTMgIFN0dSBHcm9zc21hbiAgKGdyb3NzbWFuIGF0IGN5Z251cy5jb20pCgoJKiB3YWl0LmggKFdFWElUU1RBVFVTLCBXU1RPUFNJRyk6IE1hc2sgZG93biB0byA4IGJpdHMuICBUaGlzIGlzCglmb3Igc3lzdGVtcyB0aGF0IHN0b3JlIHN0dWZmIGludG8gdGhlIGhpZ2ggMTYgYml0cyBvZiBhIHdhaXQKCXN0YXR1cy4KCkZyaSBKdWwgMzAgMTg6Mzg6MDIgMTk5MyAgSm9obiBHaWxtb3JlICAoZ251QGN5Z251cy5jb20pCgoJKiBkaXMtYXNtLmg6ICBBZGQgbmV3IGZpZWxkcyBpbnNuX2luZm9fdmFsaWQsIGJyYW5jaF9kZWxheV9pbnNucywKCWRhdGFfc2l6ZSwgaW5zbl90eXBlLCB0YXJnZXQsIHRhcmdldDIuICBUaGVzZSBhcmUgdXNlZCB0byByZXR1cm4KCWluZm9ybWF0aW9uIGZyb20gdGhlIGluc3RydWN0aW9uIGRlY29kZXJzIGJhY2sgdG8gdGhlIGNhbGxpbmcKCXByb2dyYW0uICBBZGQgY29tbWVudHMsIG1ha2UgbW9yZSByZWFkYWJsZS4KCk1vbiBKdWwgMTkgMjI6MTQ6MTQgMTk5MyAgRnJlZCBGaXNoICAoZm5mQGRlbmViLmN5Z251cy5jb20pCgoJKiBubG06ICBOZXcgZGlyZWN0b3J5IGNvbnRhaW5pbmcgTkxNL05ldFdhcmUgaW5jbHVkZXMuCgpUaHUgSnVsIDE1IDEyOjEwOjA0IDE5OTMgIEtlbiBSYWVidXJuICAocmFlYnVybkBjYW1icmlkZ2UuY3lnbnVzLmNvbSkKCgkqIGRpcy1hc20uaCAoc3RydWN0IGRpc2Fzc2VtYmxlX2luZm8pOiBOZXcgZmllbGQgYXBwbGljYXRpb25fZGF0YS4KClRodSBKdWwgMTUgMTI6NDE6MTUgMTk5MyAgSWFuIExhbmNlIFRheWxvciAgKGlhbkB0d2VlZGxlZHVtYi5jeWdudXMuY29tKQoKCSogZGlzLWFzbS5oOiBBZGRlZCBkZWNsYXJhdGlvbiBvZiBwcmludF9pbnNuX204OGsuCgpGcmkgSnVsICAyIDEwOjMxOjU5IDE5OTMgIElhbiBMYW5jZSBUYXlsb3IgIChpYW5AY3lnbnVzLmNvbSkKCgkqIGFuc2lkZWNsLmg6IFVzZSBBTlNJIG1hY3JvcyBpZiBfX21pcHMgYW5kIF9TWVNUWVBFX1NWUjQgYXJlCglkZWZpbmVkLCBzaW5jZSBSSVNDL09TIGNjIGhhbmRsZXMgQU5TSSBkZWNsYXJhdGlvbnMgaW4gU1ZSNCBtb2RlCglidXQgZG9lcyBub3QgZGVmaW5lIF9fU1REQ19fLgoKU3VuIEp1biAyMCAxODoyNzo1MiAxOTkzICBLZW4gUmFlYnVybiAgKHJhZWJ1cm5AcG9zZWlkb24uY3lnbnVzLmNvbSkKCgkqIGRpcy1hc20uaDogRG9uJ3QgbmVlZCB0byBpbmNsdWRlIGFuc2lkZWNsLmggYW55IG1vcmUuCgpGcmkgSnVuIDE4IDAzOjIyOjEwIDE5OTMgIEpvaG4gR2lsbW9yZSAgKGdudUBjeWdudXMuY29tKQoKCSogb2FzeXMuaDogIEVsaW1pbmF0ZSAiaW50OF90eXBlIiwgImludDE2X3R5cGUiLCAiaW50MzJfdHlwZSIsIGFuZAoJdGhlaXIgdmFyaWFudHMuICBUaGVzZSBjaGFuZ2VzIGFyZSBjb29yZGluYXRlZCB3aXRoIGNvcnJlc3BvbmRpbmcKCWNoYW5nZXMgaW4gLi4vYmZkL29hc3lzLmMuCgpXZWQgSnVuIDE2IDEwOjQzOjA4IDE5OTMgIEZyZWQgRmlzaCAgKGZuZkBjeWdudXMuY29tKQoKCSogYmZkLmg6ICBOb3RlIHRoYXQgaXQgaGFzIGJlZW4gcmVtb3ZlZC4KClR1ZSBKdW4gIDggMTI6MTY6MDMgMTk5MyAgU3RldmUgQ2hhbWJlcmxhaW4gIChzYWNAcGh5ZGVhdXguY3lnbnVzLmNvbSkKCgkgU3VwcG9ydCBmb3IgSDgvMzAwLUgKCSogZGlzLWFzbS5oIChwcmludF9pbnNuX2g4MzAwLCBwcmludF9pbnNuX2g4MzAwaCk6IERlY2xhcmUgaXQuCgpUdWUgSnVuICAxIDA3OjM1OjAzIDE5OTMgIEtlbiBSYWVidXJuICAocmFlYnVybkBrci1wYy5jeWdudXMuY29tKQoKCSogYW5zaWRlY2wuaCAoY29uc3QpOiBEb24ndCBkZWZpbmUgaXQgaWYgaXQncyBhbHJlYWR5IGRlZmluZWQuCgpUaHUgTWF5IDI3IDE4OjE5OjUxIDE5OTMgIEtlbiBSYWVidXJuICAocmFlYnVybkBjYW1icmlkZ2UuY3lnbnVzLmNvbSkKCgkqIGRpcy1hc20uaCAocHJpbnRfaW5zbl9ocHBhKTogRGVjbGFyZSBpdC4KCgkqIGJmZC5oOiBNb3ZlZCB0byBiZmQgZGlyZWN0b3J5LiAgU21hbGwgc3R1YiBoZXJlIGluY2x1ZGVzIGl0Cgl3aXRob3V0IHJlcXVpcmluZyAiLUkuLi9iZmQiLgoKVGh1IEFwciAyOSAxMjowNjoxMyAxOTkzICBLZW4gUmFlYnVybiAgKHJhZWJ1cm5AZGVuZWIuY3lnbnVzLmNvbSkKCgkqIGJmZC5oOiBVcGRhdGVkIHdpdGggQlNGX0ZVTkNUSU9OLgoKTW9uIEFwciAyNiAxODoxNTo1MCAxOTkzICBTdGV2ZSBDaGFtYmVybGFpbiAgKHNhY0B0aGVwdWIuY3lnbnVzLmNvbSkKCgkqIGJmZC5oLCBkaXMtYXNtLmg6IFVwZGF0ZWQgd2l0aCBIaXRhY2hpIFNILgoKRnJpIEFwciAyMyAxODo0MTozOCAxOTkzICBTdGV2ZSBDaGFtYmVybGFpbiAgKHNhY0B0aGVwdWIuY3lnbnVzLmNvbSkKCgkqIGJmZC5oOiBVcGRhdGVkIHdpdGggYWxwaGEgY2hhbmdlcy4KCSogZGlzLWFzbS5oOiBBZGRlZCBhbHBoYS4KCkZyaSBBcHIgMTYgMTc6MzU6MzAgMTk5MyAgSmltIEtpbmdkb24gIChraW5nZG9uQGN5Z251cy5jb20pCgoJKiBiZmQuaDogVXBkYXRlIGZvciBzaWduZWQgYmZkXypnZXRfKi4KClRodSBBcHIgMTUgMDk6MjQ6MjEgMTk5MyAgSmltIEtpbmdkb24gIChraW5nZG9uQGN5Z251cy5jb20pCgoJKiBiZmQuaDogVXBkYXRlZCBmb3IgZmlsZV90cnVuY2F0ZWQgZXJyb3IuCgpUaHUgQXByICA4IDEwOjUzOjQ3IDE5OTMgIElhbiBMYW5jZSBUYXlsb3IgIChpYW5AY3lnbnVzLmNvbSkKCgkqIGFuc2lkZWNsLmg6IElmIG5vIEFOU0ksIGRlZmluZSBjb25zdCB0byBiZSBlbXB0eS4KClRodSBBcHIgIDEgMDk6MDA6MTAgMTk5MyAgSmltIEtpbmdkb24gIChraW5nZG9uQGN5Z251cy5jb20pCgoJKiBkaXMtYXNtLmg6IERlY2xhcmUgYTI5ayBhbmQgaTk2MCBwcmludF9pbnNuXyouCgoJKiBkaXMtYXNtLmg6IEFkZCBwcmludF9hZGRyZXNzX2Z1bmMgYW5kIHJlbGF0ZWQgc3R1ZmYuCgoJKiBkaXMtYXNtLmggKGRpc19hc21fcmVhZF9tZW1vcnkpOiBGaXggcHJvdG90eXBlLgoKV2VkIE1hciAzMSAxNzo0MDoxNiAxOTkzICBKaW0gS2luZ2RvbiAgKGtpbmdkb25AbGlvdGguY3lnbnVzLmNvbSkKCgkqIGRpcy1hc20uaDogQWRkIHByaW50X2luc25fc3BhcmMuCgpXZWQgTWFyIDMxIDE3OjUxOjQyIDE5OTMgIElhbiBMYW5jZSBUYXlsb3IgIChpYW5AY3lnbnVzLmNvbSkKCgkqIGJmZC5oOiBVcGRhdGVkIGZvciBCRkRfUkVMT0NfTUlQU19HUFJFTCBhbmQgYmZkX1tnc11ldF9ncF9zaXplCglwcm90b3R5cGVzLgoKV2VkIE1hciAzMSAxNjozNToxMiAxOTkzICBTdHUgR3Jvc3NtYW4gIChncm9zc21hbkBjeWdudXMuY29tKQoKCSogZGlzLWFzbS5oOiAoZGlzYXNzZW1ibGVfaW5mbyk6ICBGaXggdHlwbyBpbiBwcm90b3R5cGUgb2YKCWRpc19hc21fbWVtb3J5X2Vycm9yKCkuCgpUdWUgTWFyIDMwIDE5OjA5OjIzIDE5OTMgIEppbSBLaW5nZG9uICAoa2luZ2RvbkBsaW90aC5jeWdudXMuY29tKQoKCSogZGlzLWFzbS5oIChkaXNhc3NlbWJsZXJfaW5mbyk6IEFkZCByZWFkX21lbW9yeV9mdW5jLAoJbWVtb3J5X2Vycm9yX2Z1bmMsIGJ1ZmZlciwgYW5kIGxlbmd0aC4KCSh7R0RCXyx9SU5JVF9ESVNBU1NFTUJMRV9JTkZPKTogU2V0IHRoZW0uCglwcmludF9pbnNuXyo6IFJlbW92ZSBzZWNvbmQgYXJndW1lbnQuCgpUdWUgTWFyIDMwIDE0OjQ4OjU1IDE5OTMgIFN0ZXZlIENoYW1iZXJsYWluICAoc2FjQHRoZXB1Yi5jeWdudXMuY29tKQoKCSogYmZkLmg6IFVwZGF0ZSBmb3IgbG1hIGZpZWxkIG9mIHNlY3Rpb24uCgpUdWUgTWFyIDMwIDEyOjIyOjU1IDE5OTMgIEppbSBLaW5nZG9uICAoa2luZ2RvbkBjeWdudXMuY29tKQoKCSogYW5zaWRlY2wuaDogVXNlIEFOU0kgdmVyc2lvbnMgb24gQUlYIHJlZ2FyZGxlc3Mgb2YgX19TVERDX18uCgpGcmkgTWFyIDE5IDE0OjQ5OjQ5IDE5OTMgIFN0ZXZlIENoYW1iZXJsYWluICAoc2FjQHRoZXB1Yi5jeWdudXMuY29tKQoKCSogZGlzLWFzbS5oOiBBZGQgaDg1MDAuCgpUaHUgTWFyIDE4IDEzOjQ5OjA5IDE5OTMgIFBlciBCb3RobmVyICAoYm90aG5lckBydGwuY3lnbnVzLmNvbSkKCgkqIGllZWUtZmxvYXQuaDogIE1vdmVkIGZyb20gLi4vZ2RiLgoJKiBkaXMtYXNtLmg6ICBOZXcgZmlsZS4gIEludGVyZmFjZSB0byBkaXMtYXNzZW1ibGVyLgoKVGh1IE1hciAxMSAxMDo1Mjo1NyAxOTkzICBGcmVkIEZpc2ggIChmbmZAY3lnbnVzLmNvbSkKCgkqIGRlbWFuZ2xlLmggKERNR0xfTk9fT1BUUyk6ICBBZGQgZGVmaW5lIChzZXQgdG8gMCkgdG8gdXNlCglpbiBwbGFjZSBvZiBiYXJlIDAsIGZvciByZWFkYWJpbGl0eSByZWFzb25zLgoKVHVlIE1hciAgMiAxNzo1MDoxMSAxOTkzICBGcmVkIEZpc2ggIChmbmZAY3lnbnVzLmNvbSkKCgkqIGRlbWFuZ2xlLmg6ICBSZXBsYWNlIGFsbCByZWZlcmVuY2VzIHRvIGNmcm9udCB3aXRoIEFSTS4KClR1ZSBGZWIgMjMgMTI6MjE6MTQgMTk5MyAgSWFuIExhbmNlIFRheWxvciAgKGlhbkBjeWdudXMuY29tKQoKCSogYmZkLmg6IFVwZGF0ZSBmb3IgbmV3IGVsZW1lbnRzIGluIEpVTVBfVEFCTEUuCgpUdWUgRmViIDE2IDAwOjUxOjMwIDE5OTMgIEpvaG4gR2lsbW9yZSAgKGdudUBjeWdudXMuY29tKQoKCSogYmZkLmg6ICBVcGRhdGUgZm9yIEJGRF9WRVJTSU9OIDIuMS4KClR1ZSBKYW4gMjYgMTE6NDk6MjAgMTk5MyAgSWFuIExhbmNlIFRheWxvciAgKGlhbkBjeWdudXMuY29tKQoKCSogYmZkLmg6IFVwZGF0ZSBmb3IgU0VDX0lTX0NPTU1PTiBmbGFnLgoKVHVlIEphbiAxOSAxMjoyNToxMiAxOTkzICBJYW4gTGFuY2UgVGF5bG9yICAoaWFuQHR3ZWVkbGVkdW1iLmN5Z251cy5jb20pCgoJKiBiZmQuaDogVXBkYXRlIGZvciBiZmRfYXN5bWJvbF92YWx1ZSBidWcgZml4LgoKRnJpIEphbiAgOCAxNjozNzoxOCAxOTkzICBJYW4gTGFuY2UgVGF5bG9yICAoaWFuQHR3ZWVkbGVkdW1iLmN5Z251cy5jb20pCgoJKiBiZmQuaDogVXBkYXRlIHRvIGluY2x1ZGUgRUNPRkYgdGRhdGEgYW5kIHRhcmdldF9mbGF2b3VyLgoKU3VuIERlYyAyNyAxNzo1MjozMCAxOTkyICBGcmVkIEZpc2ggIChmbmZAY3lnbnVzLmNvbSkKCgkqIGJmZC5oOiAgQWRkIGRlY2xhcmF0aW9uIGZvciBiZmRfZ2V0X3NpemUoKS4KClR1ZSBEZWMgMjIgMjI6NDI6NDYgMTk5MiAgRnJlZCBGaXNoICAoZm5mQGN5Z251cy5jb20pCgoJKiBkZW1hbmdsZS5oOiAgUHJvdGVjdCBmaWxlIGZyb20gbXVsdGlwbGUgaW5jbHVzaW9ucyB3aXRoCgkjaWYgIWRlZmluZWQoREVNQU5HTEVfSCkuLi4jZGVmaW5lIERFTUFOR0xFX0guLi4jZW5kaWYuCgpNb24gRGVjIDIxIDIxOjI1OjUwIDE5OTIgIFN0dSBHcm9zc21hbiAgKGdyb3NzbWFuIGF0IGN5Z251cy5jb20pCgoJKiBiZmQuaDogIFVwZGF0ZSB0byBnZXQgaHBwYV9jb3JlX3N0cnVjdCBmcm9tIGJmZC5jLgoKVGh1IERlYyAxNyAwMDo0MjozNSAxOTkyICBKb2huIEdpbG1vcmUgIChnbnVAY3lnbnVzLmNvbSkKCgkqIGJmZC5oOiAgVXBkYXRlIHRvIGdldCB0ZWtoZXggdGRhdGEgbmFtZSBjaGFuZ2UgZnJvbSBiZmQuCgpNb24gTm92ICA5IDIzOjU1OjQyIDE5OTIgIEpvaG4gR2lsbW9yZSAgKGdudUBjeWdudXMuY29tKQoKCSogYW5zaWRlY2wuaDogIFVwZGF0ZSBjb21tZW50cyB0byBkaXNjb3VyYWdlIHVzZSBvZiBFWEZVTi4KClRodSBOb3YgIDUgMTY6MzU6NDQgMTk5MiAgSWFuIExhbmNlIFRheWxvciAgKGlhbkBjeWdudXMuY29tKQoKCSogYmZkLmg6IFVwZGF0ZSB0byBicmluZyBpbiBTRUNfU0hBUkVEX0xJQlJBUlkuCgpUaHUgTm92ICA1IDAzOjIxOjMyIDE5OTIgIEpvaG4gR2lsbW9yZSAgKGdudUBjeWdudXMuY29tKQoKCSogYmZkLmg6ICBVcGRhdGUgdG8gbWF0Y2ggRVhGVU4sIGJmZF9zZWNsZXRfc3RydWN0LCBhbmQgU0RFRgoJY2xlYW51cHMgaW4gYmZkLgoKV2VkIE5vdiAgNCAwNzoyODowNSAxOTkyICBLZW4gUmFlYnVybiAgKHJhZWJ1cm5AY3lnbnVzLmNvbSkKCgkqIGJvdXQuaCAoTl9DQUxMTkFNRSwgTl9CQUxOQU1FKTogRGVmaW5lIGFzIGNoYXItdHlwZSB2YWx1ZXMsIHNvCgl3aWRlbmluZyB3b3JrcyBjb25zaXN0ZW50bHkuCgpGcmkgT2N0IDE2IDAzOjE3OjA4IDE5OTIgIEpvaG4gR2lsbW9yZSAgKGdudUBjeWdudXMuY29tKQoKCSogZ2V0b3B0Lmg6ICBVcGRhdGUgdG8gUmV2aXNlZCBTdGFuZGFyZCBGU0YgVmVyc2lvbi4KClRodSBPY3QgMTUgMjE6NDM6MjIgMTk5MiAgSy4gUmljaGFyZCBQaXhsZXkgIChyaWNoQHNlbmRhaS5jeWdudXMuY29tKQoKCSogZ2V0b3B0LmggKHN0cnVjdCBvcHRpb24pOiB1c2UgdGhlIHByb3ZpZGVkIGVudW0gZm9yIGhhc19hcmcuCgoJKiBkZW1hbmdsZS5oIChBVVRPX0RFTUFOR0xJTkcsIEdOVV9ERU1BTkdMSU5HLAoJICBMVUNJRF9ERU1BTkdMSU5HKTogdWx0cml4IGNvbXBpbGVycyByZXF1aXJlIGVudW1zIHRvIGJlCgkgIGVudW1zIGFuZCBpbnRzIHRvIGJlIGludHMgYW5kIGNhc3RzIHdoZXJlIHRoZXkgbWVldC4gIGNhc3Qgc29tZQoJICBlbnVtcyBpbnRvIGludHMuCgpUaHUgT2N0IDE1IDA0OjM1OjUxIDE5OTIgIEpvaG4gR2lsbW9yZSAgKGdudUBjeWdudXMuY29tKQoKCSogYmZkLmg6ICBVcGRhdGUgYWZ0ZXIgY29tbWVudCBjaGFuZ2VzLgoKVGh1IE9jdCAgOCAwOTowMzowMiAxOTkyICBTdGV2ZSBDaGFtYmVybGFpbiAgKHNhY0B0aGVwdWIuY3lnbnVzLmNvbSkKCgkqIGJmZC5oIChiZmRfZ2V0X3N5bWJvbF9sZWFkaW5nX2NoYXIpOiBuZXcgbWFjcm8gZm9yIGdldHRpbmcgaW4geHZlYwoKVGh1IFNlcCAgMyAwOToxMDo1MCAxOTkyICBTdHUgR3Jvc3NtYW4gIChncm9zc21hbiBhdCBjeWdudXMuY29tKQoKCSogYmZkLmggKHN0cnVjdCByZWxvY19ob3d0b19zdHJ1Y3QpOiAgc2l6ZSBuZWVkcyB0byBiZSBzaWduZWQgaWYKCWl0J3MgZ29pbmcgdG8gaG9sZCBuZWdhdGl2ZSB2YWx1ZXMuCgpTdW4gQXVnIDMwIDE3OjUwOjI3IDE5OTIgIFBlciBCb3RobmVyICAoYm90aG5lckBydGwuY3lnbnVzLmNvbSkKCgkqIGRlbWFuZ2xlLmg6ICBOZXcgZmlsZSwgbW92ZWQgZnJvbSAuLi9nZGIuICBNYWRlIGluZGVwZW5kZW50CglvZiBnZGIuICBBbGxvdyBkZW1hbmdsaW5nIHN0eWxlIG9wdGlvbiB0byBiZSBwYXNzZWQgYXMgYQoJcGFyYW1ldGVyIHRvIGNwbHVzX2RlbWFuZ2xlKCksIGJ1dCB1c2luZyB0aGUKCWN1cnJlbnRfZGVtYW5nbGluZ19zdHlsZSBnbG9iYWwgYXMgdGhlIGRlZmF1bHQuCgpTYXQgQXVnIDI5IDEwOjA3OjU1IDE5OTIgIEZyZWQgRmlzaCAgKGZuZkBjeWdudXMuY29tKQoKCSogb2JzdGFjay5oOiAgTWVyZ2UgY29tbWVudCBjaGFuZ2UgZnJvbSBjdXJyZW50IEZTRiB2ZXJzaW9uLgoKVGh1IEF1ZyAyNyAxMjo1OToyOSAxOTkyICBCcmVuZGFuIEtlaG9lICAoYnJlbmRhbkBjeWdudXMuY29tKQoKCSogYmZkLmg6IGFkZCB3ZTMyawoKVHVlIEF1ZyAyNSAxNTowNzo0NyAxOTkyICBTdGV2ZSBDaGFtYmVybGFpbiAgKHNhY0B0aGVwdWIuY3lnbnVzLmNvbSkKCgkqIGJmZC5oOiBuZXcgYWZ0ZXIgWjgwMDAgc3R1ZmYKCk1vbiBBdWcgMTcgMDk6MDE6MjMgMTk5MiAgS2VuIFJhZWJ1cm4gIChyYWVidXJuQGN5Z251cy5jb20pCgoJKiBiZmQuaDogUmVnZW5lcmF0ZWQgYWZ0ZXIgcGFnZS9zZWdtZW50IHNpemUgY2hhbmdlcy4KClNhdCBBdWcgIDEgMTM6NDY6MzEgMTk5MiAgRnJlZCBGaXNoICAoZm5mQGN5Z251cy5jb20pCgoJKiBvYnN0YWNrLmg6IE1lcmdlIGNoYW5nZXMgZnJvbSBjdXJyZW50IEZTRiB2ZXJzaW9uLgoKTW9uIEp1bCAyMCAyMTowNjoyMyAxOTkyICBGcmVkIEZpc2ggIChmbmZAY3lnbnVzLmNvbSkKCgkqIG9ic3RhY2suaCAoYXJlYV9pZCwgZmxhZ3MpOiAgUmVtb3ZlLCByZXBsYWNlIHdpdGggZXh0cmFfYXJnLAoJdXNlX2V4dHJhX2FyZywgYW5kIG1heWJlX2VtcHR5X29iamVjdC4KCSogb2JzdGFjay5oIChPQlNUQUNLX01BWUJFX0VNUFRZX09CSkVDVCwgT0JTVEFDS19NTUFMTE9DX0xJS0UpOgoJUmVtb3ZlLCByZXBsYWNlZCBieSBtYXliZV9lbXB0eV9vYmplY3QgYW5kIHVzZV9leHRyYV9hcmcgYml0ZmllbGRzLgoJKiBvYnN0YWNrLmggKG9ic3RhY2tfZnVsbF9iZWdpbiwgX29ic3RhY2tfYmVnaW4pOiAgUmVtb3ZlIGFyZWFfaWQKCWFuZCBmbGFncyBhcmd1bWVudHMuCgkqIG9ic3RhY2suaCAob2JzdGFja19hbGxvY19hcmcpOiAgTmV3IG1hY3JvIHRvIHNldCBleHRyYV9hcmcuCgpUaHUgSnVsIDE2IDA4OjEyOjQ0IDE5OTIgIFN0ZXZlIENoYW1iZXJsYWluICAoc2FjQHRoZXB1Yi5jeWdudXMuY29tKQoKCSogYmZkLmg6IG5ldyBhZnRlciBhZGRpbmcgQkZEX0lTX1JFTEFYQUJMRQoKU2F0IEp1bCAgNCAwMzoyMjoyMyAxOTkyICBKb2huIEdpbG1vcmUgIChnbnUgYXQgY3lnbnVzLmNvbSkKCgkqIGJmZC5oOiAgUmVnZW4gYWZ0ZXIgYWRkaW5nIEJTRl9GSUxFLgoKTW9uIEp1biAyOSAxNDoxODozNiAxOTkyICBGcmVkIEZpc2ggIChmbmYgYXQgc3VuZmlzaCkKCgkqIG9ic3RhY2suaDogIENvbnZlcnQgYmNvcHkoKSB1c2UgdG8gbWVtY3B5KCksIHdoaWNoIGlzIG1vcmUKCXBvcnRhYmxlLCBtb3JlIHN0YW5kYXJkLCBhbmQgY2FuIHRha2UgYWR2YW50YWdlIG9mIGdjYydzIGJ1aWx0aW4KCWZ1bmN0aW9ucyBmb3IgaW5jcmVhc2VkIHBlcmZvcm1hbmNlLgoKVGh1IEp1biAyNSAwNDo0NjowOCAxOTkyICBKb2huIEdpbG1vcmUgIChnbnUgYXQgY3lnbnVzLmNvbSkKCgkqIGFuc2lkZWNsLmggKFBBUkFNUyk6ICBJbmNvcnBvcmF0ZSB0aGlzIG1hY3JvIGZyb20gZ2RiJ3MgZGVmcy5oLgoJSXQncyBhIGNsZWFuZXIgd2F5IHRvIGZvcndhcmQtZGVjbGFyZSBmdW5jdGlvbiBwcm90b3R5cGVzLgoKRnJpIEp1biAxOSAxNTo0NjozMiAxOTkyICBTdHUgR3Jvc3NtYW4gIChncm9zc21hbiBhdCBjeWdudXMuY29tKQoKCSogYmZkLmg6ICBIUFBBIG1lcmdlLgoKVHVlIEp1biAxNiAyMTozMDo1NiAxOTkyICBLLiBSaWNoYXJkIFBpeGxleSAgKHJpY2hAY3lnbnVzLmNvbSkKCgkqIGdldG9wdC5oOiBncmF0dWl0b3VzIHdoaXRlIHNwYWNlIGNoYW5nZXMgbWVyZ2VkIGZyb20gb3RoZXIgcHJlcAoJICByZWxlYXNlcy4KClRodSBKdW4gMTEgMDE6MTA6NTUgMTk5MiAgSm9obiBHaWxtb3JlICAoZ251IGF0IGN5Z251cy5jb20pCgoJKiBiZmQuaDogIFJlZ2VuJ2QgZnJvbSBiZmQuYyBhZnRlciByZW1vdmluZyBlbGZfY29yZV90ZGF0YV9zdHJ1Y3QuCgpNb24gTWF5IDE4IDE3OjI5OjAzIDE5OTIgIEsuIFJpY2hhcmQgUGl4bGV5ICAocmljaEBjeWdudXMuY29tKQoKCSogZ2V0b3B0Lmg6IG1lcmdlZCBjaGFuZ2VzIGZyb20gbWFrZS0zLjYyLjExLgoKCSogZ2V0b3B0Lmg6IG1lcmdlZCBjaGFuZ2VzIGZyb20gZ3JlcC0xLjYgKGFscGhhKS4KCkZyaSBNYXkgIDggMTQ6NTM6MzIgMTk5MiAgSy4gUmljaGFyZCBQaXhsZXkgIChyaWNoQGN5Z251cy5jb20pCgoJKiBnZXRvcHQuaDogbWVyZ2VkIGNoYW5nZXMgZnJvbSBiaXNvbi0xLjE4LgoKU2F0IE1hciAxNCAxNzoyNToyMCAxOTkyICBGcmVkIEZpc2ggIChmbmZAY3lnbnVzLmNvbSkKCgkqIG9ic3RhY2suaDogIEFkZCAiYXJlYV9pZCIgYW5kICJmbGFncyIgbWVtYmVycyB0byBvYnN0YWNrCglzdHJ1Y3R1cmUuICBBZGQgb2JzdGFja19jaHVua2Z1bigpIGFuZCBvYnN0YWNrX2ZyZWVmdW4oKSB0bwoJc2V0IGZ1bmN0aW9ucyBleHBsaWNpdGx5LiAgQ29udmVydCBtYXliZV9lbXB0eV9vYmplY3QgdG8KCWEgYml0IGluICJmbGFncyIuCgpUaHUgRmViIDI3IDIyOjAxOjAyIDE5OTIgIFBlciBCb3RobmVyICAoYm90aG5lckBjeWdudXMuY29tKQoKCSogd2FpdC5oIChXSUZTVE9QUEVEKTogIEFkZCBJQk0gcnM2MDAwLXNwZWNpZmljIHZlcnNpb24uCgpGcmkgRmViIDIxIDIwOjQ5OjIwIDE5OTIgIEpvaG4gR2lsbW9yZSAgKGdudSBhdCBjeWdudXMuY29tKQoKCSogb2JzdGFjay5oOiAgQWRkIG9ic3RhY2tfZnVsbF9iZWdpbi4KCSogYmZkLmgsIG9ic3RhY2suaDogIFByb3RvbGludC4KClRodSBKYW4gMzAgMDE6MTg6NDIgMTk5MiAgSm9obiBHaWxtb3JlICAoZ251IGF0IGN5Z251cy5jb20pCgoJKiBiZmQuaDogIFJlbW92ZSBjb21tYSBmcm9tIGVudW0gZGVjbGFyYXRpb24uCgpNb24gSmFuIDI3IDIyOjAxOjEzIDE5OTIgIFN0ZXZlIENoYW1iZXJsYWluICAoc2FjIGF0IGN5Z251cy5jb20pCgoJKiBiZmQuaCA6IG5ldyB0YXJnZXQgZW50ciwgYmZkX3JlbGF4X3NlY3Rpb24KCldlZCBEZWMgMTggMTc6MTk6NDQgMTk5MSAgU3R1IEdyb3NzbWFuICAoZ3Jvc3NtYW4gYXQgY3lnbnVzLmNvbSkKCgkqIGJmZC5oLCBpZWVlLmg6ICBBTlNJZnkgZW51bXMuCgpUaHUgRGVjIDEyIDIwOjU5OjU2IDE5OTEgIEpvaG4gR2lsbW9yZSAgKGdudSBhdCBjeWdudXMuY29tKQoKCSogZm9wZW4tc2FtZS5oLCBmb3Blbi1iaW4uaDogIE5ldyBmaWxlcyBmb3IgY29uZmlndXJpbmcKCXdoZXRoZXIgZm9wZW4gZGlzdGluZ3Vpc2hlcyBiaW5hcnkgZmlsZXMgb3Igbm90LiAgRm9yIHVzZQoJYnkgaG9zdC1kZXBlbmRlbnQgY29uZmlnIGZpbGVzLgoKU2F0IE5vdiAzMCAyMDo0Njo0MyAxOTkxICBTdGV2ZSBDaGFtYmVybGFpbiAgKHNhYyBhdCBydGwuY3lnbnVzLmNvbSkKCgkqIGJmZC5oOiBjaGFuZ2UgdGhlIGRvY3VtZW50YXRpb24gZm9ybWF0LgoKCSogY3JlYXRlZCBjb2ZmLCBlbGYgYW5kIG9wY29kZSBhbmQgYW91dCBkaXJlY3Rvcmllcy4gTW92ZWQ6CgoJYW91dDY0LmgJPT0+IGFvdXQvYW91dDY0LmgKCWFyLmgJCT09PiBhb3V0L2FyLmgKCWEub3V0LmVuY2FwLmgJPT0+IGFvdXQvZW5jYXAuaAoJYS5vdXQuaG9zdC5oCT09PiBhb3V0L2hvc3QuaAoJYS5vdXQuaHAuaAk9PT4gYW91dC9ocC5oCglhLm91dC5zdW40LmgJPT0+IGFvdXQvc3VuNC5oCglyYW5saWIuaAk9PT4gYW91dC9yYW5saWIuaAoJcmVsb2MuaAkJPT0+IGFvdXQvcmVsb2MuaAoJc3RhYi5kZWYJPT0+IGFvdXQvc3RhYi5kZWYKCXN0YWIuZ251LmgJPT0+IGFvdXQvc3RhYl9nbnUuaAoKCWNvZmYtYTI5ay5oCT09PiBjb2ZmL2EyOWsuaAoJY29mZi1oODMwMC5oCT09PiBjb2ZmL2g4MzAwLmgKCWNvZmYtaTM4Ni5oCT09PiBjb2ZmL2kzODYuaAoJY29mZi1pOTYwLmgJPT0+IGNvZmYvaTk2MC5oCglpbnRlcm5hbGNvZmYuaAk9PT4gY29mZi9pbnRlcm5hbC5oCgljb2ZmLW02OGsuaAk9PT4gY29mZi9tNjhrLmgKCWNvZmYtbTg4ay5oCT09PiBjb2ZmL204OGsuaAoJY29mZi1taXBzLmgJPT0+IGNvZmYvbWlwcy5oCgljb2ZmLXJzNjAwMC5oCT09PiBjb2ZmL3JzNjAwMC5oCgoJZWxmLWNvbW1vbi5oCT09PiBlbGYvY29tbW9uLmgKCWR3YXJmLmgJCT09PiBlbGYvZHdhcmYuaAoJZWxmLWV4dGVybmFsLmgJPT0+IGVsZi9leHRlcm5hbC5oCgllbGYtaW50ZXJuYWwuaCAgPT0+IGVsZi9pbnRlcm5hbC5oCgoJYTI5ay1vcGNvZGUuaAk9PT4gb3Bjb2RlL2EyOWsuaAoJYXJtLW9wY29kZS5oCT09PiBvcGNvZGUvYXJtLmgKCWg4MzAwLW9wY29kZS5oCT09PiBvcGNvZGUvaDgzMDAuaAoJaTM4Ni1vcGNvZGUuaAk9PT4gb3Bjb2RlL2kzODYuaAoJaTg2MC1vcGNvZGUuaAk9PT4gb3Bjb2RlL2k4NjAuaAoJaTk2MC1vcGNvZGUuaAk9PT4gb3Bjb2RlL2k5NjAuaAoJbTY4ay1vcGNvZGUuaAk9PT4gb3Bjb2RlL202OGsuaAoJbTg4ay1vcGNvZGUuaAk9PT4gb3Bjb2RlL204OGsuaAoJbWlwcy1vcGNvZGUuaAk9PT4gb3Bjb2RlL21pcHMuaAoJbnAxLW9wY29kZS5oCT09PiBvcGNvZGUvbnAxLmgKCW5zMzJrLW9wY29kZS5oCT09PiBvcGNvZGUvbnMzMmsuaAoJcG4tb3Bjb2RlLmgJPT0+IG9wY29kZS9wbi5oCglweXItb3Bjb2RlLmgJPT0+IG9wY29kZS9weXIuaAoJc3BhcmMtb3Bjb2RlLmgJPT0+IG9wY29kZS9zcGFyYy5oCgl0YWhvZS1vcGNvZGUuaAk9PT4gb3Bjb2RlL3RhaG9lLmgKCXZheC1vcGNvZGUuaAk9PT4gb3Bjb2RlL3ZheC5oCgoKCldlZCBOb3YgMjcgMTA6Mzg6MzEgMTk5MSAgU3RldmUgQ2hhbWJlcmxhaW4gIChzYWMgYXQgcnRsLmN5Z251cy5jb20pCgoJKiBpbnRlcm5hbGNvZmYuaDogKGludGVybmFsX3NjbmhkcikgdG9vayBvdXQgI2RlZiBkZXBlbmRlbmN5LCBub3cKCXNfbnJlbG9jIGFuZCBzX25sbm5vIGFyZSBhbHdheXMgbG9uZy4gCShpbnRlcm5hbF9yZWxvYyk6IGFsbHdheXMKCWhhcyBhbiBvZmZzZXQgZmllbGQgbm93LgoKRnJpIE5vdiAyMiAwODoxMjo1OCAxOTkxICBKb2huIEdpbG1vcmUgIChnbnUgYXQgY3lnbnVzLmNvbSkKCgkqIGNvZmYtcnM2MDAwLmg6ICBMaW50OyB1c2UgdW5zaWduZWQgY2hhcnMgZm9yIGV4dGVybmFsIGZpZWxkcy4KCSogaW50ZXJuYWxjb2ZmLmg6ICBMaW50OyBjYXN0IHN0b3JhZ2UgY2xhc3NlcyB0byBzaWduZWQgY2hhci4KClRodSBOb3YgMjEgMjE6MDE6MDUgMTk5MSAgUGVyIEJvdGhuZXIgIChib3RobmVyIGF0IGN5Z251cy5jb20pCgoJKiBzdGFiLmRlZjogUmVtb3ZlIHRoZSBHTlUgZXh0ZW5kZWQgdHlwZSBjb2RlcyAoZS5nLiBOX1NFVFQpLgoJKiBhb3V0NjQuaDogIFRoZSBoZXVyaXN0aWMgZm9yIGRpc3Rpbmd1aXNoaW5nIGJldHdlZW4KCXN1bm9zLXN0eWxlIGFuZCBic2Qtc3R5bGUgWk1BR0lDIGZpbGVzICh3cnQuIHdoZXJlIHRoZQoJdGV4dCBzZWdtZW50IHN0YXJ0cykgaXMgbW92ZWQgaW50byAodGhlIGRlZmF1bHQgZGVmaW5pdGlvbiBvZikKCXRoZSBtYWNybyBOX0hFQURFUl9JTl9URVhULiAgVGhpcyBkZWZpbml0aW9uIGlzIG9ubHkgdXNlZAoJaWYgbm8gb3RoZXIgZGVmaW5pdGlvbiBpcyB1c2VkIC0gZS5nLiBiZmQvbmV3c29zMy5jIGRlZmluZXMKCU5fSEVBREVSX0lOX1RFWFQoeCkgdG8gYmUgYWx3YXlzIDAgKGFzIGJlZm9yZSkuCgpUaHUgTm92IDIxIDExOjUzOjAzIDE5OTEgIEpvaG4gR2lsbW9yZSAgKGdudSBhdCBjeWdudXMuY29tKQoKCSogYW91dDY0LmggKE5fVFhUQUREUiwgTl9UWFRPRkYsIE5fVFhUU0laRSk6ICBOZXcgZGVmaW5pdGlvbnMKCXRoYXQgc2hvdWxkIGhhbmRsZSBhbGwgdXNlcy4gIExPR0lDQUxfIHZlcnNpb25zIGRlbGV0ZWQuCglFbGltaW5hdGUgTl9IRUFERVJfSU5fVEVYVCwgdXNpbmcgYV9lbnRyeSB0byBkZXRlcm1pbmUgd2hpY2gKCWtpbmQgb2Ygem1hZ2ljIGEub3V0IGZpbGUgd2UgYXJlIGxvb2tpbmcgYXQuCgkqIGNvZmYtcnM2MDAwLmg6ICBUeXBvLgoKVHVlIE5vdiAxOSAxODo0MzozNyAxOTkxICBQZXIgQm90aG5lciAgKGJvdGhuZXIgYXQgY3lnbnVzLmNvbSkKCgkoTm90ZTogIFRoaXMgaXMgYSByZXZpc2VkIGVudHJ5LCBhcyB3YXMgYW91dDY0LmguKQoJKiBhb3V0NjQuaDogIFNvbWUgY2xlYW51cHMgb2YgTl9UWFRBRERSIGFuZCBOX1RYVE9GRjoKCVdpbGwgbm93IHdvcmsgZm9yIGJvdGggb2xkLSBhbmQgbmV3LXN0eWxlIFpNQUdJQyBmaWxlcywKCWRlcGVuZGluZyBvbiBOX0hFQURFUl9JTl9URVhUIG1hY3JvLgoJQWRkIExPR0lDQUxfVFhUQUREUiwgTE9JQ0FMX1RYVE9GRiBhbmQgTE9HSUNBTF9UWFRTSVpFCgl0aGF0IGRvbid0IGNvdW50IHRoZSBleGVjIGhlYWRlciBhcyBwYXJ0CglvZiB0aGUgdGV4dCBzZWdtZW50LCB0byBiZSBjb25zaXN0ZW50IHdpdGggYmZkLgoJKiBhLm91dC5zdW40Lmg6ICBTaW1wbGlmaWVkL2ZpeGVkIGZvciBwcmV2aW91cyBjaGFuZ2UuCgpNb24gTm92IDE4IDAwOjAyOjA2IDE5OTEgIEZyZWQgRmlzaCAgKGZuZiBhdCBjeWdudXMuY29tKQoKCSogZHdhcmYuaDogIFVwZGF0ZSB0byBEV0FSRiBkcmFmdCA1IHZlcnNpb24gZnJvbSBnY2MyLgoKVGh1IE5vdiAxNCAxOTo0NDo1OSAxOTkxICBQZXIgQm90aG5lciAgKGJvdGhuZXIgYXQgY3lnbnVzLmNvbSkKCgkqIHN0YWIuZGVmOiAgQWRkZWQgZGVmcyBmb3IgZXh0ZW5kZWQgR05VIHN5bWJvbCB0eXBlcywKCXN1Y2ggYXMgTl9TRVRULiAgVGhlc2UgYXJlIG5vcm1hbGx5IGlmZGVmJ2Qgb3V0IChiZWNhdXNlCglvZiBjb25mbGljdHMgd2l0aCBhLm91dC5nbnUuaCksIGJ1dCBhcmUgdXNlZCBieSBiZmJfc3RhYl9uYW1lKCkuCgpUaHUgTm92IDE0IDE5OjE3OjAzIDE5OTEgIEZyZWQgRmlzaCAgKGZuZiBhdCBjeWdudXMuY29tKQoKCSogZWxmLWNvbW1vbi5oOiAgQWRkIGRlZmluZXMgdG8gc3VwcG9ydCBFTEYgc3ltYm9sIHRhYmxlIGNvZGUuCgpNb24gTm92IDExIDE5OjAxOjA2IDE5OTEgIEZyZWQgRmlzaCAgKGZuZiBhdCBjeWdudXMuY29tKQoKCSogZWxmLWludGVybmFsLmgsIGVsZi1leHRlcm5hbC5oLCBlbGYtY29tbW9uLmg6ICBBZGQgc3VwcG9ydCBmb3IKCW5vdGUgc2VjdGlvbnMsIHdoaWNoIGFyZSB1c2VkIGluIEVMRiBjb3JlIGZpbGVzIHRvIGhvbGQgY29waWVzCglvZiB2YXJpb3VzIC9wcm9jIHN0cnVjdHVyZXMuCgpUaHUgTm92ICA3IDA4OjU4OjI2IDE5OTEgIFN0ZXZlIENoYW1iZXJsYWluICAoc2FjIGF0IGN5Z251cy5jb20pCgoJKiBpbnRlcm5hbGNvZmYuaDogdG9vayBvdXQgdGhlIE04OCBkZXBlbmRlbmN5IGluIHRoZSBsaW5lbm8KCXN0cnVjdC4KCSogY29mZi1tODhrLmg6IGRlZmluZXMgR0VUX0xJTkVOT19MTk5PIGFuZCBQVVRfTElORU5PX0xOTk8gdG8gdXNlCgkzMmJpdCBsaW5ubyBlbnRyaWVzLgoJKiBhMjlrLW9wY29kZS5oOiBmaXhlZCBlbmNvZGluZyBvZiBtdGFjYwoKU3VuIE5vdiAgMyAxMTo1NDoyMiAxOTkxICBQZXIgQm90aG5lciAgKGJvdGhuZXIgYXQgY3lnbnVzLmNvbSkKCgkqIGJmZC5oOiBVcGRhdGVkIGZyb20gLi4vYmZkL2JmZC1pbi5oIChxLnYpLgoKRnJpIE5vdiAgMSAxMToxMzo1MyAxOTkxICBKb2huIEdpbG1vcmUgIChnbnUgYXQgY3lnbnVzLmNvbSkKCgkqIGludGVybmFsY29mZi5oOiAgQWRkIHhfY3NlY3QgZGVmaW5lcy4KCkZyaSBPY3QgMjUgMDM6MTg6MjAgMTk5MSAgSm9obiBHaWxtb3JlICAoZ251IGF0IGN5Z251cy5jb20pCgoJKiBSZW5hbWUgQ09GRi1yZWxhdGVkIGZpbGVzIGluIGBjb2ZmLUFSQ0guaCcgZm9ybS4KCWNvZmYtYTI5ay5oLCBjb2ZmLWkzODYuaCwgY29mZi1pOTYwLmgsIGNvZmYtbTY4ay5oLCBjb2ZmLW04OGsuaCwKCWNvZmYtbWlwcy5oLCBjb2ZmLXJzNjAwMC5oIHRvIGJlIGV4YWN0LgoKVGh1IE9jdCAyNCAyMjoxMToxMSAxOTkxICBKb2huIEdpbG1vcmUgIChnbnUgYXQgY3lnbnVzLmNvbSkKCglSUy82MDAwIHN1cHBvcnQsIGJ5IE1ldGluIEcuIE96aXNpaywgTWltaSBQaPv0bmctVGjlbyBW9SwgYW5kCglKb2huIEdpbG1vcmUuCgoJKiBhLm91dC5nbnUuaDogIFVwZGF0ZSBzbGlnaHRseS4KCSogYmZkLmg6ICBBZGQgbmV3IGVycm9yIGNvZGUsIGZpeCBkb2MsIGFkZCBiZmRfYXJjaF9yczYwMDAuCgkqIGludGVybmFsY29mZi5oOiAgQWRkIG1vcmUgRl8gY29kZXMgZm9yIGZpbGVoZHIuICBBZGQKCXJzLzYwMDAtZGVwZW5kZW50IGZpZWxkcyB0byBhb3V0aGRyLiAgQWRkIHN0b3JhZ2UgY2xhc3NlcwoJdG8gc3ltZW50cy4gIEFkZCA2MDAwLXNwZWNpZmljIGF1eGVudC4gIEFkZCByX3NpemUgaW4gcmVsb2MuCgkqIHJzNjAwMGNvZmYuYzogIE5ldyBmaWxlLgoKVGh1IE9jdCAyNCAwNDoxMzoyMCAxOTkxICBGcmVkIEZpc2ggIChmbmYgYXQgY3lnbnVzLmNvbSkKCgkqIGR3YXJmLmg6IE5ldyBmaWxlIGZvciBkd2FyZiBzdXBwb3J0LiAgQ29waWVkIGZyb20gZ2NjMgoJZGlzdHJpYnV0aW9uLgoKV2VkIE9jdCAxNiAxMzozMTo0NSAxOTkxICBKb2huIEdpbG1vcmUgIChnbnUgYXQgY3lnbnVzLmNvbSkKCgkqIGFvdXQ2NC5oOiAgUmVtb3ZlIFBBR0VfU0laRSBkZWZpbmVzOyB0aGV5IGFyZSB0YXJnZXQtZGVwZW5kZW50LgoJQWRkIE5fRk5fU0VRIGZvciBOX0ZOIHN5bWJvbCB0eXBlIHVzZWQgb24gU2VxdWVudCBtYWNoaW5lcy4KCSogc3RhYi5kZWY6ICBJbmNsdWRlIE5fRk5fU0VRIGluIHRhYmxlLgoJKiBib3V0Lmg6ICBFeHRlcm5hbCBmb3JtYXRzIG9mIHN0cnVjdHVyZXMgdXNlIHVuc2lnbmVkIGNoYXJzLgoKRnJpIE9jdCAxMSAxMjo0MDo0MyAxOTkxICBTdGV2ZSBDaGFtYmVybGFpbiAgKHN0ZXZlIGF0IGN5Z251cy5jb20pCgoJKiBiZmQuaDp1cGdyYWRlIGZyb20gYmZkLmMKCSogaW50ZXJuYWxjb2ZmLmg6IGFkZCBuX25hbWUsIG5femVyb2VzIGFuZCBuX29mZnNldCBtYWNyb3MKCSogYW1kY29mZi5oOiBEZWZpbmUgT01BR0lDIGFuZCBBT1VUSERSU1ouCgpGcmkgT2N0IDExIDEwOjU4OjA2IDE5OTEgIFBlciBCb3RobmVyICAoYm90aG5lciBhdCBjeWdudXMuY29tKQoKCSogYS5vdXQuaG9zdC5oOiBDaGFuZ2UgU0VHTUVOVF9TSVpFIHRvIDB4MTAwMCBmb3IgU29ueS4KCSogYmZkLmggKGFsaWduX3Bvd2VyKTogQWRkIChhY3R1YWxseSBtb3ZlKSBjb21tZW50LgoKVHVlIE9jdCAgOCAxNToyOTozMiAxOTkxICBQZXIgQm90aG5lciAgKGJvdGhuZXIgYXQgY3lnbnVzLmNvbSkKCgkqIHN5cy9oLXJ0YnNkLmg6IERlZmluZSBNSVNTSU5HX1ZGUFJJTlQgKGZvciBiaW51dGlscy9idWNvbW0uYykuCgpTdW4gT2N0ICA2IDE5OjI0OjM5IDE5OTEgIEpvaG4gR2lsbW9yZSAgKGdudSBhdCBjeWdudXMuY29tKQoKCSogYW91dDY0Lmg6ICBNb3ZlIHN0cnVjdCBpbnRlcm5hbF9leGVjIHRvIC4uL2JmZC9saWJhb3V0Lmggc28KCWl0IGNhbiBiZSBzaGFyZWQgYnkgYWxsIGBhLm91dC1mYW1pbHknIGNvZGUuICBSZW5hbWUKCUVYVEVSTkFMX0xJU1RfU0laRSB0byBFWFRFUk5BTF9OTElTVF9TSVpFLiAgVXNlIGJhc2ljIHR5cGVzCglmb3Igbmxpc3QgbWVtYmVycywgYW5kIG1ha2Ugc3RyeCBpbnRlZ3JhbCByYXRoZXIgdGhhbiBwb2ludGVyLgoJTW9yZSBjb21tZW50YXJ5IG9uIG5fdHlwZSB2YWx1ZXMuCgkqIGJvdXQuaDogIFByb3ZpZGUgYSBzdHJ1Y3QgZXh0ZXJuYWxfZXhlYyByYXRoZXIgdGhhbiBhbgoJaW50ZXJuYWxfZXhlYy4KCSogbTY4a2NvZmYuaDogIFJlbW92ZSBgdGFnZW50cmllcycgd2hpY2ggc251Y2sgaW4gZnJvbSB0aGUgaTk2MAoJQ09GRiBwb3J0LgoKRnJpIE9jdCAgNCAwMToyNTo1OSAxOTkxICBKb2huIEdpbG1vcmUgIChnbnUgYXQgY3lnbnVzLmNvbSkKCgkqIGg4MzAwLW9wY29kZS5oOiAgUmVtb3ZlIGBfZW51bScgZnJvbSB0aGUgdHlwZWRlZiBmb3IgYW4gZW51bS4KCSogYmZkLmg6ICBVcGRhdGUgdG8gbWF0Y2ggYmZkIGNoYW5nZXMuCgoJKiBzeXMvaC1pMzg2bWFjaC5oLCBzeXNkZXAuaDogIEFkZCAzODYgTWFjaCBob3N0IHN1cHBvcnQuCgpUdWUgT2N0ICAxIDA0OjU4OjQyIDE5OTEgIEpvaG4gR2lsbW9yZSAgKGdudSBhdCBjeWdudXMuY29tKQoKCSogYmZkLmgsIGVsZi1jb21tb24uaCwgZWxmLWV4dGVybmFsLmgsIGVsZi1pbnRlcm5hbC5oOgoJQWRkIHByZWxpbWluYXJ5IEVMRiBzdXBwb3J0LCBzdWZmaWNpZW50IGZvciBHREIsIGZyb20gRnJlZCBGaXNoLgoJKiBzeXNkZXAuaCwgc3lzL2gtYW1peC5oOiAgU3VwcG9ydCBBbWlnYSBTVlI0LgoKCSogc3lzL2gtdmF4dWx0Lmg6ICBNYWtlIGl0IHdvcmsuICAoRGF2aWQgVGF5bG9yIDx0YXlsb3JAdGhpbmsuY29tPikKCSogYS5vdXQudmF4Lmg6ICBSZW1vdmUgdW51c2VkIGFuZCBjb25mdXNpbmcgZmlsZS4KCk1vbiBTZXAgMzAgMTI6NTI6MzUgMTk5MSAgUGVyIEJvdGhuZXIgIChib3RobmVyIGF0IGN5Z251cy5jb20pCgoJKiBzeXNkZXAuaDogRGVmaW5lIE5FV1NPUzNfU1lTLCBhbmQgdXNlIGl0LgoKRnJpIFNlcCAyMCAxMzozODoyMSAxOTkxICBKb2huIEdpbG1vcmUgIChnbnUgYXQgY3lnbnVzLmNvbSkKCgkqIGEub3V0LmdudS5oIChOX0ZOKTogIEl0cyB2YWx1ZSAqcmVhbGx5IGlzKiAweDFGLgoJRml4IGl0LCBhbmQgYWRkIGNvbW1lbnRzIHdhcm5pbmcgYWJvdXQgb3ItaW5nIE5fRVhUIHdpdGggaXQKCWFuZC9vciBOX1dBUk5JTkcuCgkqIGFvdXQ2NC5oIChOX0ZOKTogIEZpeCB2YWx1ZSwgYWRkIGNvbW1lbnRzIGFib3V0IE5fRVhULgoJKiBzdGFiLmRlZiAodGFibGUgYXQgZW5kKTogIFVwZGF0ZSB0byBzaG93IGFsbCB0aGUgdHlwZQoJdmFsdWVzIDwweDIwLCBpbmNsdWRpbmcgbG93IG9yZGVyIGJpdHMuICBNb3ZlIE5fRk4gdG8KCWl0cyByaWdodGZ1bCBwbGFjZS4KClR1ZSBTZXAgMTcgMTc6NDE6MzcgMTk5MSAgU3R1IEdyb3NzbWFuICAoZ3Jvc3NtYW4gYXQgY3lnbnVzLmNvbSkKCgkqIHN5cy9oLWlyaXgzLmg6ICBzZ2kvaXJpeCBzdXBwb3J0LgoKVHVlIFNlcCAxNyAwNzo1Mjo1OSAxOTkxICBKb2huIEdpbG1vcmUgIChnbnUgYXQgY3lnaW50LmN5Z251cy5jb20pCgoJKiBzdGFiLmRlZiAoTl9ERUZEKTogIEFkZCBHTlUgTW9kdWxhLTIgZGVidWcgc3RhYiwgZnJvbSBBbmRyZXcKCUJlZXJzLgoKVGh1IFNlcCAxMiAxNDoxMjo1OSAxOTkxICBKb2huIEdpbG1vcmUgIChnbnUgYXQgY3lnaW50LmN5Z251cy5jb20pCgoJKiBpbnRlcm5hbGNvZmYuaCAoU1lNTk1MRU4sIEZJTE5NTEVOLCBESU1OVU0pOiAgRGVmaW5lIHRoZXNlCglmb3IgaW50ZXJuYWxjb2ZmLCBzZXBhcmF0ZWx5IGZyb20gdGhlIHZhcmlvdXMgZXh0ZXJuYWwgY29mZidzLgoJKiBhbWRjb2ZmLmgsIGJjczg4a2NvZmYuaCwgaTM4NmNvZmYuaCwgaW50ZWwtY29mZi5oLCBtNjhrY29mZi5oLAoJbTg4ay1iY3MuaDogUHJlZml4IFNZTU5NTEVOLCBGSUxOTUxFTiwgYW5kIERJTU5VTSB3aXRoIEVfJ3MgZm9yCgl0aGUgZXh0ZXJuYWwgc3RydWN0IGRlZmluaXRpb25zLgoJKiBlY29mZi5oOiBSZW1vdmUgdGhlc2UgI2RlZmluZSdzLCBrbHVkZ2Ugbm8gbG9uZ2VyIG5lZWRlZC4KCgkqIHN5cy9oLXVsdHJhMy5oOiAgQWRkIG5ldyBVbHRyYWNvbXB1dGVyIGhvc3QuCgkqIHN5c2RlcC5oOiAgQWRkIFVMVFJBM19TWU0xX1NZUyBhbmQgdXNlIGl0LgoKVHVlIFNlcCAxMCAxMDoxMTo0NiAxOTkxICBKb2huIEdpbG1vcmUgIChnbnUgYXQgY3lnaW50LmN5Z251cy5jb20pCgoJKiBpMzg2Y29mZi5oIChMSU5FU1opOiAgQWx3YXlzIDYsIG5vdCBiYXNlZCBvbiBzaXplb2YoKS4KCShGaXggZnJvbSBQZXRlciBTY2hhdWVyIDxwZXNAcmVnZW50LmUtdGVjaG5pay50dS1tdWVuY2hlbi5kZT4uKQoKV2VkIFNlcCAgNCAwODo1ODozNyAxOTkxICBKb2huIEdpbG1vcmUgIChnbnUgYXQgY3lnaW50LmN5Z251cy5jb20pCgoJKiBhLm91dC5nbnUuaCwgYW91dDY0Lmg6ICBBZGQgTl9XQVJOSU5HLiAgQ2hhbmdlIE5fRk4gdG8gMHgwRSwKCXRvIG1hdGNoIFN1bk9TIGFuZCBCU0QuICBBZGQgTl9DT01NIGFzIDB4MTIgZm9yIFN1bk9TIHNoYXJlZCBsaWIKCXN1cHBvcnQuCgkqIHN0YWIuZGVmOiAgQWRkIE5fQ09NTSB0byB0YWJsZSwgZml4IG92ZXJsYXAgY29tbWVudC4KClR1ZSBTZXAgIDMgMDY6Mjk6MjAgMTk5MSAgSm9obiBHaWxtb3JlICAoZ251IGF0IGN5Z2ludC5jeWdudXMuY29tKQoKCU1lcmdlIHdpdGggbGF0ZXN0IEZTRiB2ZXJzaW9ucyBvZiB0aGVzZSBmaWxlcy4KCgkqIHN0YWIuZ251Lmg6ICBBZGQgTEFTVF9VTlVTRURfU1RBQl9DT0RFLgoJKiBzdGFiLmRlZjogIFVwZGF0ZSB0byBHUEwyLiAgTW92ZSBOX1dBUk5JTkcgb3V0LCBzaW5jZSBub3QgYQoJZGVidWcgc3ltYm9sLiAgQ2hhbmdlIGNvbW1lbnRzLCBhbmQgcmVvcmRlciB0YWJsZSB0byBudW1lcmljCglvcmRlci4gIFVwZGF0ZSBmaW5hbCB0YWJsZSBjb21tZW50LgoJKE5fRFNMSU5FLCBOX0JTTElORSk6ICBSZW51bWJlciBmcm9tIDB4NjYgYW5kIDB4NjgsIHRvIDB4NDYgYW5kIDB4NDguCgoJKiBvYnN0YWNrLmg6ICBHUEwyLiAgTWVyZ2UuCgpGcmkgQXVnIDIzIDAxOjU0OjIzIDE5OTEgIEpvaG4gR2lsbW9yZSAgKGdudSBhdCBjeWdpbnQuY3lnbnVzLmNvbSkKCgkqIGEub3V0LmdudS5oLCBhLm91dC5zdW40Lmg6ICBNYWtlIFNFR01FTlRfU0laRSBhYmxlIHRvIGRlcGVuZAoJb24gdGhlIHBhcnRpY3VsYXIgYS5vdXQgYmVpbmcgZXhhbWluZWQuCgkqIGEub3V0LnN1bjQuaDogIERlZmluZSBzZWdtZW50IHNpemVzIGZvciBTdW4tMydzIGFuZCBTdW4tNCdzLgoJKiBGSVhNRTogIGEub3V0LmdudS5oIGlzIGFsbW9zdCBvYnNvbGV0ZS4KCSogRklYTUU6ICBhLm91dC5zdW40Lmggc2hvdWxkIGJlIHJlbmFtZWQgYS5vdXQuc3VuLmggbm93LgoKV2VkIEF1ZyAyMSAyMDozMjoxMyAxOTkxICBKb2huIEdpbG1vcmUgIChnbnUgYXQgY3lnaW50LmN5Z251cy5jb20pCgoJKiBTdGFydCBhIENoYW5nZUxvZyBmb3IgdGhlIGluY2x1ZGVzIGRpcmVjdG9yeS4KCgkqIGEub3V0LmdudS5oIChOX0ZOKTogIEZpeCB2YWx1ZSAtLSB3YXMgMTUsIHNob3VsZCBiZSAweDFFLgoJKiBzdGFiLmRlZjogIFVwZGF0ZSBhbGxvY2F0aW9uIHRhYmxlIGluIGNvbW1lbnRzIGF0IGVuZCwKCXRvIHJlZmxlY3QgcmVhbGl0eSBhcyBJIGtub3cgaXQuCgoMCkxvY2FsIFZhcmlhYmxlczoKbW9kZTogY2hhbmdlLWxvZwpsZWZ0LW1hcmdpbjogOApmaWxsLWNvbHVtbjogNzQKdmVyc2lvbi1jb250cm9sOiBuZXZlcgpFbmQ6Cg==