MjAwMC0xMS0wNyAgQWxhbiBNb2RyYSAgPGFsYW5AbGludXhjYXJlLmNvbS5hdT4KCgkqIGNvZmYtaDgzMDAuYyAoc3BlY2lhbCk6IEFkanVzdCByZWxvYyBhZGRyZXNzLgoKCUZyb20gbWFpbmxpbmUgMjAwMC0wNC0wMyAgS2F6dSBIaXJhdGEgIDxrYXp1QGh4aS5jb20+CgkqIGNvZmYtaDgzMDAuYyAoaDgzMDBfcmVsb2MxNl9leHRyYV9jYXNlcyk6IEFkZCBic3I6MTYgLT4gYnNyOjggdG8KCXRoZSBSX1BDUldPUkRfQiBjYXNlLgoKMjAwMC0xMS0wNSAgUGhpbGlwIEJsdW5kZWxsICA8cGhpbGJAZ251Lm9yZz4KCgkqIGVsZjMyLWFybS5oIChlbGYzMl9hcm1fbWVyZ2VfcHJpdmF0ZV9iZmRfZGF0YSk6IEFsd2F5cyBwZXJtaXQKCUJGRHMgY29udGFpbmluZyBubyBzZWN0aW9ucyB0byBiZSBtZXJnZWQsIHJlZ2FyZGxlc3Mgb2YgdGhlaXIgZmxhZ3MuCgoyMDAwLTExLTA0ICBQaGlsaXAgQmx1bmRlbGwgIDxwaGlsYkBnbnUub3JnPgoKCSogZWxmMzItYXJtLmggKGVsZjMyX2FybV9yZWxvY2F0ZV9zZWN0aW9uKTogU3VwcHJlc3MgZXJyb3IgbWVzc2FnZQoJaWYgYSByZWxvY2F0aW9uIGZvciBhbiB1bmRlZmluZWQgc3ltYm9sIGFsc28gcmVzdWx0cyBpbiBhbgoJb3ZlcmZsb3cuCgoyMDAwLTEwLTMxICBQaGlsaXAgQmx1bmRlbGwgIDxwaGlsYkBnbnUub3JnPgoKCSogZWxmMzItYXJtLmggKGVsZjMyX2FybV9tZXJnZV9wcml2YXRlX2JmZF9kYXRhKTogT25seSBoYW5kbGUKCUVGX1NPRlRfRkxPQVQgaWYgaXQgaXMgZGVmaW5lZC4KCglGcm9tIDIwMDAtMDUtMjMgIEguSi4gTHUgIDxoamxAZ251Lm9yZz4KCSogZWxmMzItcHBjLmMgKHBwY19lbGZfcmVsb2NhdGVfc2VjdGlvbik6IEZpeCBhIHR5cG8uCgoyMDAwLTEwLTI3ICBQaGlsaXAgQmx1bmRlbGwgIDxwaGlsYkBnbnUub3JnPgoKCSogZWxmMzItYXJtLmggKGVsZjMyX2FybV9jb3B5X3ByaXZhdGVfYmZkX2RhdGEpOiBEb24ndCByZWZ1c2UKCWF0dGVtcHRzIHRvIG1peCBQSUMgY29kZSB3aXRoIG5vbi1QSUMsIGp1c3QgbWFyayB0aGUgb3V0cHV0IGFzCgliZWluZyBwb3NpdGlvbiBkZXBlbmRlbnQuCgkoZWxmMzJfYXJtX21lcmdlX3ByaXZhdGVfYmZkX2RhdGEpOiBMaWtld2lzZS4gIFByaW50IGFuIGVycm9yIAoJbWVzc2FnZSBmb3IgRUZfU09GVF9GTE9BVCBtaXNtYXRjaGVzLiAgRGlzcGxheSBkaWFnbm9zdGljcyBmb3IgCglhbGwgbWlzbWF0Y2hlcywgbm90IGp1c3QgdGhlIGZpcnN0IG9uZS4KCQoyMDAwLTEwLTIzICBQaGlsaXAgQmx1bmRlbGwgIDxwYkBmdXR1cmV0di5jb20+CgoJRnJvbSAyMDAwLTA1LTIzICBILkouIEx1ICA8aGpsQGdudS5vcmc+CgkqIGVsZjY0LWFscGhhLmMgKGVsZjY0X2FscGhhX3JlbG9jYXRlX3NlY3Rpb24pOiBDaGVjawoJaC0+cm9vdC5vdGhlciBub3QgaC0+b3RoZXIuCgkqIGVsZjMyLW1pcHMuYyAobWlwc19lbGZfY2FsY3VsYXRlX3JlbG9jYXRpb24pOiBMaWtld2lzZS4KCjIwMDAtMTAtMjMgIFBoaWxpcCBCbHVuZGVsbCAgPHBiQGZ1dHVyZXR2LmNvbT4KCgkqIGVsZjMyLWFybS5oIChlbGYzMl9hcm1fZmluaXNoX2R5bmFtaWNfc3ltYm9sKTogVW5kbyBwcmV2aW91cwoJYWNjaWRlbnRhbCBjaGVja2luLgoKMjAwMC0xMC0yMiAgUGhpbGlwIEJsdW5kZWxsICA8cGhpbGJAZ251Lm9yZz4KCgkqIGVsZjMyLWFybS5oIChlbGYzMl9hcm1fZmluaXNoX2R5bmFtaWNfc3ltYm9sKTogRG9uJ3QgbWFrZSAKCVBMVCBlbnRyaWVzIHRoYXQgY291bGQgc2VydmUgYXMgYSBkZWZpbml0aW9uIGZvciBhIHdlYWsgc3ltYm9sLgoKCUZyb20gMjAwMC0wNi0wNSAgSC5KLiBMdSAgPGhqbEBnbnUub3JnPgoJKiBlbGZsaW5rLmMgKF9iZmRfZWxmX2xpbmtfcmVjb3JkX2R5bmFtaWNfc3ltYm9sKTogRG9uJ3QgZmxhZwoJYW4gZXJyb3Igd2hlbiBzZWVpbmcgYW4gdW5kZWZpbmVkIHN5bWJvbCB3aXRoIGhpZGRlbi9pbnRlcm5hbAoJYXR0cmlidXRlLiBJdCBpcyBoYW5kbGVkIGluICpfcmVsb2NhdGVfc2VjdGlvbiAoKS4KCglGcm9tIDIwMDAtMDUtMjMgIEguSi4gTHUgIDxoamxAZ251Lm9yZz4KCSogZWxmMzItaTM4Ni5jIChlbGZfaTM4Nl9yZWxvY2F0ZV9zZWN0aW9uKTogRG9uJ3QgYWxsb3cgdGhlCgl1bmRlZmluZWQgc3ltYm9sIHdpdGggdGhlIG5vbi1kZWZhdWx0IHZpc2liaWxpdHkgYXR0cmlidXRlcy4KCSogZWxmLWhwcGEuaCAoZWxmX2hwcGFfcmVsb2NhdGVfc2VjdGlvbik6IExpa2V3aXNlLgoJKiBlbGYzMi1hcm0uaCAoZWxmMzJfYXJtX3JlbG9jYXRlX3NlY3Rpb24pOiBMaWtld2lzZS4KCSogZWxmMzItaTM3MC5jIChpMzcwX2VsZl9yZWxvY2F0ZV9zZWN0aW9uKTogTGlrZXdpc2UuCgkqIGVsZjMyLW02OGsuYyAoZWxmX202OGtfcmVsb2NhdGVfc2VjdGlvbik6IExpa2V3aXNlLgoJKiBlbGYzMi1tY29yZS5jIChtY29yZV9lbGZfcmVsb2NhdGVfc2VjdGlvbik6IExpa2V3aXNlLgoJKiBlbGYzMi1taXBzLmMgKG1pcHNfZWxmX2NhbGN1bGF0ZV9yZWxvY2F0aW9uKTogTGlrZXdpc2UuCgkqIGVsZjMyLXBwYy5jIChwcGNfZWxmX3JlbG9jYXRlX3NlY3Rpb24pOiBMaWtld2lzZS4KCSogZWxmMzItc3BhcmMuYyAoZWxmMzJfc3BhcmNfcmVsb2NhdGVfc2VjdGlvbik6IExpa2V3aXNlLgoJKiBlbGY2NC1hbHBoYS5jIChlbGY2NF9hbHBoYV9yZWxvY2F0ZV9zZWN0aW9uKTogTGlrZXdpc2UuCgkqIGVsZjY0LXNwYXJjLmMgKHNwYXJjNjRfZWxmX3JlbG9jYXRlX3NlY3Rpb24pOiBMaWtld2lzZS4KCjIwMDAtMTAtMTYgIEdlb2ZmcmV5IEtlYXRpbmcgIDxnZW9mZmtAY3lnbnVzLmNvbT4KCglGcm9tIDIwMDAtMTAtMTQgIEdlb2ZmcmV5IEtlYXRpbmcgIDxnZW9mZmtAY3lnbnVzLmNvbT4KCSogZWxmMzItcHBjLmMgKHBwY19lbGZfZmluaXNoX2R5bmFtaWNfc3ltYm9sKTogRG9uJ3QgbWFrZSBQTFQKCWVudHJpZXMgdGhhdCBjb3VsZCBzZXJ2ZSBhcyBhIGRlZmluaXRpb24gZm9yIGEgd2VhayBzeW1ib2wuCgoyMDAwLTEwLTE1ICBQaGlsaXAgQmx1bmRlbGwgIDxwaGlsYkBnbnUub3JnPgoKCUZyb20gMjAwMC0wOS0wOCAgTmljayBDbGlmdG9uICA8bmlja2NAcmVkaGF0LmNvbT4KCSogZWxmMzItYXJtLmggKGVsZjMyX2FybV9tZXJnZV9wcml2YXRlX2JmZF9kYXRhKTogRG8gbm90Cglpbml0aWFsaXNlIGZsYWdzIGluIG91dHB1dCBiZmQgaWYgdGhlIGlucHV0IGJmZCBpcyB0aGUgZGVmYXVsdAoJYXJjaGl0ZWN0dXJlIHdpdGggdGhlIGRlZmF1bHQgZmxhZ3MuCgoJRnJvbSAyMDAwLTA5LTAzICBQaGlsaXAgQmx1bmRlbGwgIDxwaGlsYkBnbnUub3JnPgoJKiBlbGYzMi1hcm0uaCAoZWxmMzJfYXJtX3JlbG9jYXRlX3NlY3Rpb24pOiBEb24ndCB0cnkgdG8gcmVsb2NhdGUKCXJlZmVyZW5jZXMgdG8gdW5kZWZpbmVkIHN5bWJvbHMgaW4gZGVidWdnaW5nIHNlY3Rpb25zLgoKCUZyb20gMjAwMC0wNS0zMCAgSC5KLiBMdSAgPGhqbEBnbnUub3JnPgoJKiBlbGZsaW5rLmMgKF9iZmRfZWxmX2xpbmtfcmVjb3JkX2R5bmFtaWNfc3ltYm9sKTogQ2xlYXIgdGhlCgl2aXNpYmlsaXR5IGJpdHMgaWYgdGhlIHN5bWJvbCBpcyB1bmRlZmluZWQuIENvcnJlY3RseSBoYW5kbGUKCXdlYWsgdW5kZWZpbmVkIHN5bWJvbHMgd2l0aCBoaWRkZW4gYW5kIGludGVybmFsIGF0dHJpYnV0ZXMuCgkqIGVsZmxpbmsuaCAoZWxmX2xpbmtfYWRkX29iamVjdF9zeW1ib2xzKTogQWx3YXlzIHR1cm4gdGhlCglzeW1ib2wgaW50byBsb2NhbCBpZiBpdCBoYXMgdGhlIGhpZGRlbiBvciBpbnRlcm5hbCBhdHRyaWJ1dGUuCgoJRnJvbSAyMDAwLTA1LTIyICBILkouIEx1ICA8aGpsQGdudS5vcmc+CgkqIGVsZmxpbmsuaCAoZWxmX2xpbmtfb3V0cHV0X2V4dHN5bSk6IENsZWFyIHRoZSB2aXNpYmlsaXR5CglmaWVsZCBmb3Igc3ltYm9scyBub3QgZGVmaW5lZCBsb2NhbGx5LgoKCUZyb20gMjAwMC0wNS0wMyAgTWFydGluIHYuIEz2d2lzICA8bG9ld2lzQGluZm9ybWF0aWsuaHUtYmVybGluLmRlPgoJKiBlbGZsaW5rLmggKGVsZl9saW5rX2FkZF9vYmplY3Rfc3ltYm9scyk6IFJlc2V0IGR5bmluZHggZm9yCgloaWRkZW4gYW5kIGludGVybmFsIHN5bWJvbHMuCgkoZWxmX2ZpeF9zeW1ib2xfZmxhZ3MpOiBDbGVhciBORUVEU19QTFQgZm9yIHN5bWJvbHMgd2l0aAoJdmlzaWJpbGl0eS4KCSogZWxmbGluay5jIChfYmZkX2VsZl9saW5rX3JlY29yZF9keW5hbWljX3N5bWJvbCk6IERvIG5vdAoJYXNzaWduIGEgUExUIG9yIEdPVCBlbnRyeSB0byBzeW1ib2xzIHdpdGggaGlkZGVuIGFuZAoJaW50ZXJuYWwgdmlzaWJpbGl0eS4KCjIwMDAtMTAtMTYgIFBoaWxpcCBCbHVuZGVsbCAgPHBiQGZ1dHVyZXR2LmNvbT4KCgkqIGNvbmZpZ3VyZS5pbjogU2V0IHZlcnNpb24gdG8gMi4xMC4xLgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUuCgoyMDAwLTA5LTI0ICBILkouIEx1ICA8aGpsQGdudS5vcmc+CgoJRnJvbSAyMDAwLTA0LTIwICBILkouIEx1ICA8aGpsQGdudS5vcmc+CgkqIGVsZjMyLWkzODYuYyAoZWxmX2kzODZfcmVsb2NhdGVfc2VjdGlvbik6IFJlc3RyaWN0IDE5OTgtMTItMTAKCXBhdGNoIHRvIHN5bWJvbHMgZGVmaW5lZCBieSBhIHNoYXJlZCBvYmplY3QuCgoyMDAwLTA5LTA2ICBQaGlsaXAgQmx1bmRlbGwgIDxwaGlsYkBnbnUub3JnPgoKCU1lcmdlIGZyb20gbWFpbmxpbmU6CgkKCTIwMDAtMDUtMzEgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckByZWRoYXQuY29tPgoKCSogZWxmLmMgKF9iZmRfZWxmX3NsdXJwX3ZlcnNpb25fdGFibGVzKTogQ29ycmVjdCByZWFkaW5nIG9mIHZlcnNpb24KCWRlZmluaXRpb25zLiAgV2UgbXVzdCBub3QgYXNzdW1lIHRoZXkgYXJlIHNvcnRlZCBpbiB0aGUgZmlsZQoJYWNjb3JkaW5nIHRvIHRoZWlyIGluZGV4IG51bWJlcnMuCgoyMDAwLTA5LTA2ICBQaGlsaXAgQmx1bmRlbGwgIDxwaGlsYkBnbnUub3JnPgoKCSogY29uZmlnLmJmZCAoYXJtKi0qLXVjbGludXgqKTogTmV3IHRhcmdldC4KCShhcm1lYi0qLWVsZiwgYXJtKmItKi1saW51eC1nbnUqKTogTGlrZXdpc2UuCgoyMDAwLTA4LTIyICBEb3VnIEt3YW4gPGRrd2FuQHRyYW5zbWV0YS5jb20+CgoJKiBjb2ZmLXc2NS5jIChDUkVBVEVfTElUVExFX0NPRkZfVEFSR0VUKTogRml4IHR5cG8uCgkqIGNvZmZjb2RlLmggKGNvZmZfc2V0X2ZsYWdzKTogQWRkIGRldGVjdGlvbiBvZiB3NjUgYXJjaGl0ZWN0dXJlLgoKMjAwMC0wNC0xNCAgTWF0dGhldyBHcmVlbiAgPG1yZ0BjeWdudXMuY29tPgoJCgkqIGNvbmZpZy5iZmQ6IEFkZCBOZXRCU0Qvc3BhcmM2NCBzdXBwb3J0LgoKMjAwMC0wNS0zMSAgTWFyayBLZXR0ZW5pcyAgPGtldHRlbmlzQGdudS5vcmc+CgogICAgICAgIEFkZCBzdXBwb3J0IGZvciBGcmVlQlNEL0FscGhhLgogICAgICAgICogY29uZmlndXJlLmluOiBBZGQgYWxwaGEqLSotZnJlZWJzZCogZW50cnkgdG8gcHJldmVudCBpbmNsdWRpbmcKICAgICAgICBPU0YgY29yZSBmaWxlIHN1cHBvcnQuCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KCjIwMDAtMDUtMjkgIFBoaWxpcCBCbHVuZGVsbCAgPHBoaWxiQGdudS5vcmc+CgoJKiBwcGNib290LmM6IEFkZCBwYWNrZWQgYXR0cmlidXRlIGlmIGNvbXBpbGluZyB3aXRoIEdDQy4KCjIwMDAtMDUtMjkgIEFuYXRvbHkgVm9yb2JleSAgPG1lbGxvbkBwb2JveC5jb20+CgoJKiBlbGYuYyAoX2JmZF9lbGZfbGlua19oYXNoX3RhYmxlX2luaXQpOiBJbml0aWFsaXplIGR5bmxvY2FsLgoKMjAwMC0wNS0yNiAgQWxhbiBNb2RyYSAgPGFsYW5AbGludXhjYXJlLmNvbS5hdT4KCgkqIHN5c2RlcC5oIChnZXR0ZXh0LCBkZ2V0dGV4dCwgZGNnZXR0ZXh0LCB0ZXh0ZG9tYWluLAoJYmluZHRleHRkb21haW4pOiBSZXBsYWNlIGRlZmluZXMgd2l0aCB0aG9zZSBmcm9tIGludGwvbGliZ2V0dGV4dC5oCgl0byBxdWlldGVuIGdjYyB3YXJuaW5ncy4KCjIwMDAtMDUtMjYgIEVsaSBaYXJldHNraWkgIDxlbGl6QGlzLmVsdGEuY28uaWw+CgoJKiBhb3V0eC5oIChmaW5kX25lYXJlc3RfbGluZSk6IFVzZSBJU19BQlNPTFVURV9QQVRILgoKCSogYXJjaGl2ZS5jIChub3JtYWxpemUsIGJmZF9ic2RfdHJ1bmNhdGVfYXJuYW1lLAoJYmZkX2dudV90cnVuY2F0ZV9hcm5hbWUpIFtIQVZFX0RPU19CQVNFRF9GSUxFX1NZU1RFTV06IFN1cHBvcnQKCWZpbGUgbmFtZXMgd2l0aCBiYWNrc2xhc2hlcy4KCgkqIGNhY2hlLmMgKGJmZF9vcGVuX2ZpbGUpIFtfX01TRE9TX19dOiBEb24ndCB1bmxpbmsgdGhlIGZpbGUKCWJlZm9yZSBvcGVuaW5nIGl0LgoKCSogc3lzZGVwLmg6IEluY2x1ZGUgZmlsZW5hbWVzLmguCgoyMDAwLTA1LTI2ICBBbGFuIE1vZHJhICA8YWxhbkBsaW51eGNhcmUuY29tLmF1PgoKCSogb3BuY2xzLmMgKGJmZF9jbG9zZV9hbGxfZG9uZSk6IE1hc2sgZmlsZSBwZXJtcyB3aXRoIDA3Nzcgbm90IDB4Nzc3LgoKMjAwMC0wNS0yMyAgUGhpbGlwIEJsdW5kZWxsICA8cGJAZnV0dXJldHYuY29tPgoKCSogY29uZmlndXJlLmluOiBTZXQgdmVyc2lvbiB0byAyLjEwLgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUuCgpTYXQgSnVsICAzIDEwOjM1OjE5IENEVCAxOTk5IEpvZWwgU2hlcnJpbGwgPGpvZWxAT0FSY29ycC5jb20+CgoJKiBjb25maWcuYmZkIChzcGFyYy1ydGVtc2VsZik6IEFkZGVkLgoJKHNwYXJjLXJ0ZW1zYW91dCk6IEFkZGVkIGFzIGFsdGVybmF0ZSBuYW1lIGZvciBjdXJyZW50IHNwYXJjLXJ0ZW1zLgoJKHNwYXJjLXJ0ZW1zKTogU3dpdGNoZWQgdG8gRUxGIGZyb20gYS5vdXQKCShpMzg2LXJ0ZW1zY29mZik6IEFkZGVkIGFzIGFsdGVybmF0ZSBuYW1lIGZvciBjdXJyZW50IGkzODYtcnRlbXMuCgkoaTM4Ni1ydGVtcyk6IFN3aXRjaGVkIHRvIEVMRi4KCjIwMDAtMDUtMDkgIEFsYW4gTW9kcmEgIDxhbGFuQGxpbnV4Y2FyZS5jb20uYXU+CgoJKiBlbGYuYyAoYmZkX3NlY3Rpb25fZnJvbV9zaGRyKTogRG9uJ3Qgc2V0IHVzZV9yZWxhX3AgaWYgcmVsYQoJc2VjdGlvbiBpcyBlbXB0eS4KCShjb3B5X3ByaXZhdGVfYmZkX2RhdGEpOiBBbGxvdyBmb3Igc3BhY2UgcG9zc2libHkgdGFrZW4gdXAgYnkgZWxmCgloZWFkZXJzIHdoZW4gY2FsY3VsYXRpbmcgc2VnbWVudCBwaHlzaWNhbCBhZGRyZXNzIGZyb20gbG1hLgoKMjAwMC0wNS0wOCAgQWxhbiBNb2RyYSAgPGFsYW5AbGludXhjYXJlLmNvbS5hdT4KCgkqIHZlcnNhZG9zLmMgKHZlcnNhZG9zX3NjYW4pOiBJbml0IHN0cmluZ2xlbiBhbmQgcGFzc18yX2RvbmUuCgoJKiB0cmFkLWNvcmUuYyAodHJhZF91bml4X2NvcmVfZmlsZV9wKTogUmV0dXJuCgliZmRfZXJyb3Jfd3JvbmdfZm9ybWF0IHJhdGhlciB0aGFuIGJmZF9lcnJvcl9maWxlX3RydW5jYXRlZC4KCgkqIHBlaWdlbi5jIChfYmZkX3BlaV9zd2FwX2FvdXRoZHJfb3V0KTogUGFzcyBJbWFnZUJhc2UgdG8KCWFkZF9kYXRhX2VudHJ5LiAgRGF0YURpcmVjdG9yeSB2aXJ0dWFsIGFkZHJlc3MgaXMgcmVsYXRpdmUuCgkocGVfcHJpbnRfaWRhdGEpOiBBY2NvdW50IGZvciByZWxhdGl2ZSBEYXRhRGlyZWN0b3J5IHZpcnR1YWwKCWFkZHJlc3Nlcy4gIERvbid0IHRyYXNoIGRhdGFzaXplIGluc2lkZSBQT1dFUlBDX0xFX1BFIGNvZGUuCgkocGVfcHJpbnRfZWRhdGEpOiBTaW1pbGFybHkuCgoJRnJvbSBTemFib2xjcyBTemFrYWNzaXRzIDxzemFrYUBGLVNlY3VyZS5jb20+CgkqIHBlaWdlbi5jIChkaXJfbmFtZXMpOiBBZGQgRGVsYXkgSW1wb3J0IERpcmVjdG9yeS4KCShwZV9wcmludF9pZGF0YSk6ICBBbHdheXMgc2VhcmNoIGZvciBiZmQgc2VjdGlvbiBjb250YWluaW5nCglpZGF0YSBhZGRyZXNzIHJhdGhlciB0aGFuIGxvb2tpbmcgdXAgc2VjdGlvbiBuYW1lLiAgUHJpbnQgdGhpcwoJc2VjdGlvbiBuYW1lIHJhdGhlciB0aGFuIC5pZGF0YS4KCShwZV9wcmludF9lZGF0YSk6IFNpbWlsYXJseS4gIEFsc28gcHJpbnQgc29tZSBmaWVsZHMgYXMgJTA4bHguCgkoX2JmZF9wZV9wcmludF9wcml2YXRlX2JmZF9kYXRhX2NvbW1vbik6IFByaW50IFJlc2VydmVkMSBmaWVsZCBhcwoJV2luMzJWZXJzaW9uLgoKMjAwMC0wNS0wMyAgTWFyayBFbGJyZWNodCAgPHNub3diYWxsM0BiaWdmb290LmNvbT4KCgkqIGJmZC9jb2ZmLWdvMzIuYyAoQ09GRl9TRUNUSU9OX0FMSUdOTUVOVF9FTlRSSUVTKTogQWRkIGVudHJ5IGZvcgoJdGhlIC5ic3Mgc2VjdGlvbi4KCSogYmZkL2NvZmYtc3RnbzMyLmMgKENPRkZfU0VDVElPTl9BTElHTk1FTlRfRU5UUklFUyk6IExpa2V3aXNlLgoKMjAwMC0wNS0wMiAgSC5KLiBMdSAgPGhqbEBnbnUub3JnPgoKCSogZWxmLmMgKHByZXBfaGVhZGVycyk6IFVzZSBFTEZPU0FCSV9OT05FIGluc3RlYWQgb2YKCUVMRk9TQUJJX1NZU1YuCgoyMDAwLTA0LTI5ICBBbmRyZWFzIEphZWdlciAgPGFqQHN1c2UuZGU+CgoJKiBsaWJiZmQtaW4uaDogQ29ycmVjdGx5IGNoZWNrIEdDQyB2ZXJzaW9uLgoJKiBiZmQtaW4uaDogTGlrZXdpc2UuCgkqIGxpYmhwcGEuaDogTGlrZXdpc2UuCgkqIGxpYmJmZC5oOiBSZWdlbmVyYXRlLgoJKiBiZmQtaW4yLmg6IFJlZ2VuZXJhdGUuCgoyMDAwLTA0LTE5ICBNaWNoYWVsIFNva29sb3YgIDxtc29rb2xvdkBpdmFuLkhhcmhhbi5PUkc+CgoJSyZSIGNvbXBpbGVyIGZpeGVzLgoJKiBkd2FyZjIuYyAoY29uY2F0X2ZpbGVuYW1lKTogQXZvaWQgc3RyaW5nIGxpdGVyYWwgY29uY2F0ZW5hdGlvbi4KCSogaWVlZS5jIChpZWVlX2dldF9zeW10YWIpOiBEb24ndCBpbml0aWFsaXNlIHVuaW9uIGluIHN0cnVjdC4KCjIwMDAtMDQtMTIgIEFsYW4gTW9kcmEgIDxhbGFuQGxpbnV4Y2FyZS5jb20uYXU+CgoJKiBkZXAtaW4uc2VkOiBNYXRjaCBzcGFjZSBiZWZvcmUgZmlsZSBuYW1lLCBub3QgYWZ0ZXIuCgkqIE1ha2VmaWxlLmFtOiBSZWdlbmVyYXRlIGRlcGVuZGVuY2llcy4KCSogTWFrZWZpbGUuaW46IFJlZ2VuZXJhdGUuCgoJKiByZWxvYy5jIChfYmZkX3JlbG9jYXRlX2NvbnRlbnRzKTogSW4gY29tcGxhaW5fb3ZlcmZsb3dfYml0ZmllbGQKCWNhc2UsIGFsbG93IGFkZHJlc3Mgd3JhcC1hcm91bmQgc3R1cGlkbHkgcmVtb3ZlZCAyMDAwLTAzLTE3LiAgU2lnbgoJZXh0ZW5kIHdpdGhvdXQgYW4gaWYgc3RhdGVtZW50LgoKMjAwMC0wNC0wNCAgQWxhbiBNb2RyYSAgPGFsYW5AbGludXhjYXJlLmNvbS5hdT4KCgkqIHBvL2JmZC5wb3Q6IFJlZ2VuZXJhdGUuCgoJKiBNYWtlZmlsZS5hbTogUmVtb3ZlIGV4dHJhbmVvdXMgbWtkZXAgY29tbWVudC4KCShNS0RFUCk6IFVzZSBnY2MgLU1NIHJhdGhlciB0aGFuIG1rZGVwLgoJKERFUCk6IFF1b3RlIHdoZW4gcGFzc2luZyB2YXJzIHRvIHN1Yi1tYWtlLiAgQWRkIHdhcm5pbmcKCW1lc3NhZ2UgdG8gZW5kLgoJKERFUDEpOiBSZXdyaXRlIGZvciAiZ2NjIC1NTSIuCgkoQ0xFQU5GSUxFUyk6IEFkZCBERVAyLgoJVXBkYXRlIGRlcGVuZGVuY2llcy4KCSogTWFrZWZpbGUuaW46IFJlZ2VuZXJhdGUuCgoyMDAwLTA0LTAzICBILkouIEx1ICA8aGpsQGdudS5vcmc+CgoJKiBjYWNoZS5jIChiZmRfb3Blbl9maWxlKTogVW5saW5rIHRoZSBvdXRwdXQgZmlsZSBvbmx5IGlmCglpdCBoYXMgbm9uLXplcm8gc2l6ZS4KCjIwMDAtMDQtMDEgIEtlbiBCbG9jayBVU0cgIDxibG9ja0B6azMuZGVjLmNvbT4KCgkqIGVsZjY0LWFscGhhLmMgKGVsZjY0X2FscGhhX3JlbG9jYXRlX3NlY3Rpb24pOiBEb24ndCBlbWl0CglyZWxhdGl2ZSByZWxvY2F0aW9ucyBmb3Igbm9uLWxvYWRlZCBzZWN0aW9ucyBpbiBzaGFyZWQgb2JqZWN0cy4KCShlbGY2NF9hbHBoYV9jaGVja19yZWxvY3MpOiBTaW1pbGFybHkuCgoyMDAwLTAzLTMxICBUaG9tYXMgZGUgTGVsbGlzICA8dGRlbEB3cnMuY29tPgoKCSogc3JlYy5jIDogU2V0IENIVU5LIHNpemUgdG8gMTYgYnl0ZXMgdG8gcHJldmVudCBkb3dubG9hZCBmYWlsdXJlcwoJb24gc29tZSB0YXJnZXRzLgoJKiBpaGV4LmMgOiBEaXR0by4KCldlZCBNYXIgMzAgMTU6Mjg6MDAgMjAwMCAgRG9uYWxkIExpbmRzYXkgIDxkbGluZHNheUBjeWdudXMuY29tPgoKCSogZWxmMzItbTMyci5jIChtMzJyX2VsZl9nZW5lcmljX3JlbG9jKTogbmV3IGZ1bmN0aW9uLiAgQWxsCglIT1dUTyByZWZlcmVuY2VzIHRvIGJmZF9lbGZfZ2VuZXJpY19yZWxvYywgdGhhdCBoYXZlCglwYXJ0aWFsX2lucGxhY2UgPT0gdHJ1ZSwgbm93IHVzZSB0aGUgbmV3IGZ1bmN0aW9uLiAgVGhlIGZ1bmN0aW9uCglpcyBiYXNlZCBvbiB0aGUgcmVjZW50IHJld3JpdGUgb2YgbTMycl9lbGZfbG8xNl9yZWxvYygpLCBhbmQKCWV4dGVuZHMgaXRzIGZpeGVzIHRvIHRoZSBSX00zMlJfezE2LDI0LDMyfSByZWxvY3MuCglUaGUgbmV3IGxvZ2ljIGluIG0zMnJfZWxmX2xvMTZfcmVsb2MoKSBoYXMgYmVlbiByZW1vdmVkLCBhbmQKCWl0IGluc3RlYWQgY2FsbHMgdGhlIG5ldyByb3V0aW5lIHRvIG9idGFpbiB0aGF0IGZ1bmN0aW9uYWxpdHkuCgoyMDAwLTAzLTI3ICBBbGFuIE1vZHJhICA8YWxhbkBsaW51eGNhcmUuY29tLmF1PgoKCSogZWxmMzItYXZyLmMgKGVsZjMyX2F2cl9nY19tYXJrX2hvb2ssIGVsZjMyX2F2cl9nY19zd2VlcF9ob29rLAoJZWxmMzJfYXZyX2NoZWNrX3JlbG9jcywgYXZyX2ZpbmFsX2xpbmtfcmVsb2NhdGUsCgllbGYzMl9hdnJfcmVsb2NhdGVfc2VjdGlvbiwgYmZkX2VsZl9hdnJfZmluYWxfd3JpdGVfcHJvY2Vzc2luZywKCWVsZjMyX2F2cl9vYmplY3RfcCk6IEFkZCBwcm90b3R5cGVzLgoJKGVsZjMyX2F2cl9nY19tYXJrX2hvb2spOiBBZGQgZGVmYXVsdCBmb3IgaC0+cm9vdC50eXBlLgoJKGJmZF9lbGZfYXZyX2ZpbmFsX3dyaXRlX3Byb2Nlc3NpbmcpOiBNYWtlIHN0YXRpYy4KCjIwMDAtMDMtMjcgIERlbmlzIENoZXJ0eWtvdiAgPGRlbmlzY0BvdmVydGEucnU+CgoJKiBjcHUtYXZyLmM6IE5ldyBmaWxlLiAgQkZEIHN1cHBvcnQgcm91dGluZXMgZm9yIEFWUiBhcmNoaXRlY3R1cmUuCgkqIGFyY2h1cmVzLmMgKGJmZF9hcmNoaXRlY3R1cmUpOiBBZGQgQVZSIGFyY2hpdGVjdHVyZS4KCShiZmRfYXJjaHVyZXNfbGlzdCk6IEFkZCByZWZlcmVuY2UgdG8gQVZSIGFyY2hpdGVjdHVyZSBpbmZvLgoJKiBlbGYuYyAocHJlcF9oZWFkZXJzKTogSGFuZGxlIGJmZF9hcmNoX2F2ci4KCSogcmVsb2MuYzogQWRkIHZhcmlvdXMgQVZSIHJlbG9jYXRpb24gZW51bXMuCgkqIHRhcmdldHMuYyAoYmZkX2VsZjMyX2F2cl92ZWMpOiBEZWNsYXJlIGFuZCBhZGQgdG8gdGFyZ2V0IHZlY3RvcgoJbGlzdC4KCSogTWFrZWZpbGUuYW06IEFkZCBzdXBwb3J0IGZvciBBVlIgZWxmLgoJKiBjb25maWd1cmUuaW46IExpa2V3aXNlLgoJKiBjb25maWcuYmZkOiBMaWtld2lzZS4KCSogTWFrZWZpbGUuaW46IFJlZ2VuZXJhdGUuCgkqIGNvbmZpZ3VyZTogVGhpcyB0b28uCgkqIGJmZC1pbjIuaDogQW5kIHRoaXMuCgkqIGxpYmJmZC5oOiBBbmQgdGhpcy4KCjIwMDAtMDMtMjQgIEguSi4gTHUgIDxoamxAZ251Lm9yZz4KCgkqIGVsZjY0LWFscGhhLmMgKGVsZjY0X2FscGhhX21lcmdlX2luZF9zeW1ib2xzKTogQWRkIHByb3RvdHlwZS4KCShlbGY2NF9hbHBoYV9maW5kX3JlbG9jX2F0X29mcyk6IExpa2V3aXNlLgoKMjAwMC0wMy0xNyAgQWxhbiBNb2RyYSAgPGFsYW5AbGludXhjYXJlLmNvbS5hdT4KCgkqIHJlbG9jLmMgKGJmZF9jaGVja19vdmVyZmxvdyk6IEluIGNhc2UgY29tcGxhaW5fb3ZlcmZsb3dfYml0ZmllbGQsCglmbGFnIGFuIG92ZXJmbG93IGlmIHRoZSBiaXRmaWVsZCBpcyBvdXRzaWRlIC0yKipuIHRvIDIqKm4tMS4gIFRoZQoJYWxsb3dhYmxlIHJhbmdlIHVzZWQgdG8gYmUgLTIqKihuLTEpIHRvIDIqKm4tMS4KCSogcmVsb2MuYyAoX2JmZF9yZWxvY2F0ZV9jb250ZW50cyk6IFNhbWUgaGVyZS4gIEFsc28gcmVwbGFjZQoJImJvb2xlYW4gb3ZlcmZsb3ciIHdpdGggImJmZF9yZWxvY19zdGF0dXNfdHlwZSBmbGFnIi4KCjIwMDAtMDMtMTQgIERvdWcgRXZhbnMgIDxkamVAY2FzZXkudHJhbnNtZXRhLmNvbT4KCgkqIGVsZjMyLW0zMnIuYyAobTMycl9lbGZfbG8xNl9yZWxvYyk6IFJld3JpdGUuCgoyMDAwLTAzLTE0ICBLYXp1IEhpcmF0YSAgPGthenVAaHhpLmNvbT4KCgkqIHJlbG9jMTYuYyAoYmZkX2NvZmZfcmVsb2MxNl9yZWxheF9zZWN0aW9uKTogQ291bnQgdGhlIHRvdGFsIG51bWJlcgoJb2Ygc2hyaW5rcyBwcm9wZXJseSwgaW5jbHVkaW5nIHRoZSBsYXN0IHJlbG9jLgoKMjAwMC0wMy0xMyAgS2F6dSBIaXJhdGEgIDxrYXp1QGh4aS5jb20+CgoJKiBjb2ZmLWg4MzAwLmMgKGg4MzAwX3JlbG9jMTZfZXh0cmFfY2FzZXMpOiBGaXggdGhlIHNhbml0eQoJY2hlY2sgZm9yIFJfTU9WTDIuCgoyMDAwLTAzLTExICBBbGFuIE1vZHJhICA8YWxhbkBsaW51eGNhcmUuY29tLmF1PgoKCSogaWVlZS5jIChpZWVlX2FyY2hpdmVfcCk6IFJldHVybiBiZmRfZXJyb3Jfd3JvbmdfZm9ybWF0IG9uIAoJYSBmb3JtYXQgbWlzbWF0Y2ggcmF0aGVyIHRoYW4gYW4gImVycm9yIiBmcm9tIGJmZF9yZWFkIHN1Y2ggYXMKCWJmZF9lcnJvcl9maWxlX3RydW5jYXRlZC4KCjIwMDAtMDMtMTAgIEdlb2ZmIEtlYXRpbmcgIDxnZW9mZmtAY3lnbnVzLmNvbT4KCgkqIGVsZjMyLW1pcHMuYyAoX2JmZF9taXBzX2VsZl9yZWxvY2F0ZV9zZWN0aW9uKTogRG8gcHJvcGVyCglzaWduLWV4dGVuc2lvbiBhbmQgYmlnLWVuZGlhbiBjb21wZW5zYXRpb24gZm9yCglSX01JUFNfNjQgZXZlbiBpbiBsZCAtci4KCjIwMDAtMDMtMTAgIEdlb2ZmcmV5IEtlYXRpbmcgIDxnZW9mZmtAY3lnbnVzLmNvbT4KCgkqIGVsZjMyLW1pcHMuYyAobWlwc19lbGZfbmV4dF9yZWxvY2F0aW9uKTogUmVuYW1lIGZyb20KCW1pcHNfZWxmX25leHRfbG8xNl9yZWxvY2F0aW9uLCBhbmQgZ2VuZXJhbGl6ZSB0byBsb29rCglmb3IgYW55IHJlbG9jYXRpb24gdHlwZS4KCShlbGZfbWlwc19ob3d0b190YWJsZSk6IE1ha2UgUl9NSVBTX1BDMTYgcGNyZWxfb2Zmc2V0LgoJKGVsZl9taXBzX2dudV9yZWxfaGkxNik6IEhvd3RvIGZvciBSX01JUFNfR05VX1JFTF9ISTE2LgoJKGVsZl9taXBzX2dudV9yZWxfbG8xNik6IEhvd3RvIGZvciBSX01JUFNfR05VX1JFTF9MTzE2LgoJKGVsZl9taXBzX2dudV9yZWwxNl9zMik6IEhvd3RvIGZvciBSX01JUFNfR05VX1JFTDE2X1MyLgoJKGVsZl9taXBzX2dudV9wY3JlbDY0KTogSG93dG8gZm9yIFJfTUlQU19QQzY0LgoJKGVsZl9taXBzX2dudV9wY3JlbDMyKTogSG93dG8gZm9yIFJfTUlQU19QQzMyLgoJKGJmZF9lbGYzMl9iZmRfcmVsb2NfdHlwZV9sb29rdXApOiBBZGQgbmV3IHJlbG9jcy4KCShtaXBzX3J0eXBlX3RvX2hvd3RvKTogTGlrZXdpc2UuCgkobWlwc19lbGZfY2FsY3VsYXRlX3JlbG9jYXRpb24pOiBIYW5kbGUgbmV3IHJlbG9jcy4KCShfYmZkX21pcHNfZWxmX3JlbG9jYXRlX3NlY3Rpb24pOiBSRUxfSEkxNi9SRUxfTE8xNiByZWxvY3MKCWFyZSBwYWlyZWQuICBUaGUgYWRkZW5kIGZvciBSX01JUFNfR05VX1JFTDE2X1MyCglpcyBzaGlmdGVkIHJpZ2h0IHR3byBiaXRzLgoKMjAwMC0wMy0xMCAgQWxhbiBNb2RyYSAgPGFsYW5AbGludXhjYXJlLmNvbS5hdT4KCgkqIHJlbG9jLmMgKGJmZF9wZXJmb3JtX3JlbG9jYXRpb24pOiBVbmRvIGVtYWNzIGZvcm1hdHRpbmcgb2YKCWNvbW1lbnQsIGFuZCBlbnN1cmUgaXQgZG9lc24ndCBoYXBwZW4gYWdhaW4uCgkoYmZkX2luc3RhbGxfcmVsb2NhdGlvbik6IFNhbWUgaGVyZS4KCShfYmZkX3JlbG9jYXRlX2NvbnRlbnRzKTogRG9uJ3QgYm90aGVyIGFzc2lnbmluZyB1bnVzZWQgc2lnbm1hc2sKCXNoaWZ0IHJlc3VsdC4gIEZpeCB0eXBvcyBpbiBjb21tZW50cy4KCVJlbW92ZSB0cmFpbGluZyB3aGl0ZXNwYWNlIHRocm91Z2hvdXQgZmlsZS4KCjIwMDAtMDMtMDcgIERvdWcgRXZhbnMgIDxkamVAY2FzZXkudHJhbnNtZXRhLmNvbT4KCgkqIHJlbG9jLmMgKHJlbG9jX2hvd3RvX3N0cnVjdCk6IEZpeCBwYXJ0aWFsX2lucGxhY2UgY29tbWVudC4KCSogYmZkLWluMi5oOiBSZWJ1aWxkLgoKMjAwMC0wMy0wNiAgTmljayBDbGlmdG9uICA8bmlja2NAY3lnbnVzLmNvbT4KCgkqIHBlaWNvZGUuaCAoc3RydWN0IHBlX0lMRl92YXJzKTogQWRkIHN5bV9wdHJfdGFibGUgYW5kCglzeW1fcHRyX3B0ciBmaWVsZHMuCgkoU0laRU9GX0lMRl9TWU1fUFRSX1RBQkxFKTogRGVmaW5lLgoJKFNJWkVPRl9JTEZfU1RSSU5HUyk6IFJlZGVmaW5lLgoJKHBlX0lMRl9tYWtlX2Ffc3ltYm9sLXJlbG9jKTogTmV3IGZ1bmN0aW9uLiAgQ3JlYXRlcyBhIHN5bWJvbAoJcmVsYXRpdmUgcmVsb2MsIGFzIG9wcG9zZWQgdG8gYSBzZWN0aW9uIHJlbGF0aXZlIHJlbG9jLgoJKHBlX0lMRl9tYWtlX2Ffc3ltYm9sKTogU2V0IHRoZSBjbGFzcyBvZiBsb2NhbCBzeW1ib2xzIHRvIENfU1RBVAoJbm90IENfTEFCRUwuCglBZGQgbGVuZ3RoIG9mIHN5bWJvbCdzIHByZWZpeCB0byBzdHJpbmcgcG9pbnRlci4KCVN0b3JlIGEgcG9pbnRlciB0byB0aGUgc3ltYm9sIGluIHRoZSBzeW1ib2wgcG9pbnRlciB0YWJsZS4KCShwZV9JTEZfYnVpbGRfYV9iZmQpOiBEbyBub3QgYnVpbGQgLmlkYXRhJDIgb3IgLmlkYXRhJDcuCglJbml0aWFsaXNlIHRoZSBzeW1ib2wgcG9pbnRlciB0YWJsZS4KCVN0b3JlIHRoZSBoaW50IGluIHRoZSBIaW50L05hbWUgdGFibGUuCglNYWtlIHRoZSBqdW1wIHJlbG9jIGJlIHN5bWJvbCByZWFsdGl2ZSwgbm90IHNlY3Rpb24gcmVsYXRpdmUuCglDcmVhdGUgYW4gaW1wb3J0IHN5bWJvbCBmb3IgaW1wb3J0ZWQgY29kZS4KCjIwMDAtMDMtMDYgIENhdGhlcmluZSBNb29yZSAgPGNsbUBjeWdudXMuY29tPgoKCSogZWxmLmMgKHN3YXBfb3V0X3N5bXMpOiAgQ2hlY2sgZm9yIG51bGwgdHlwZV9wdHIuCgoyMDAwLTAzLTAxICBIYW5zLVBldGVyIE5pbHNzb24gIDxocEBheGlzLmNvbT4KCgkqIGFvdXQtdGFyZ2V0LmggKE1ZKHdyaXRlX29iamVjdF9jb250ZW50cykpOiBSZW1vdmUgdW51c2VkCglhbmQgdW51c2FibGUgIiNpZiBDSE9PU0VfUkVMT0NfU0laRSIuCgkqIHBjNTMyLW1hY2guYyAoTVkod3JpdGVfb2JqZWN0X2NvbnRlbnRzKSk6IERpdHRvLgoJKiBuZXRic2QuaCAoTVkod3JpdGVfb2JqZWN0X2NvbnRlbnRzKSk6IERpdHRvLgoJKiBocDMwMGhwdXguYyAoTVkod3JpdGVfb2JqZWN0X2NvbnRlbnRzKSk6IERpdHRvLgoJKiBmcmVlYnNkLmggKE1ZKHdyaXRlX29iamVjdF9jb250ZW50cykpOiBEaXR0by4KCSogYW91dC10aWMzMC5jICh0aWMzMF9hb3V0X3dyaXRlX29iamVjdF9jb250ZW50cyk6IERpdHRvLgoKMjAwMC0wMi0yOSAgSC5KLiBMdSAgPGhqbEBnbnUub3JnPgoKCSogcGVpY29kZS5oIChqdGFiKTogTWFrZSBpdCBzdGF0aWMuCgoJKiBjb2ZmLXNoLmMgKHNoX2FsaWduX2xvYWRfc3Bhbik6IERlY2xhcmVkIGlmIENPRkZfV0lUSF9QRSBpcwoJZGVmaW5lZCBhbmQgQ09GRl9JTUFHRV9XSVRIX1BFIGlzIG5vdCBkZWZpbmVkLgoJKF9iZmRfc2hfYWxpZ25fbG9hZF9zcGFuKTogRGVmaW5lZCBhcyBzaF9hbGlnbl9sb2FkX3NwYW4gaWYKCUNPRkZfV0lUSF9QRSBpcyBkZWZpbmVkIGFuZCBDT0ZGX0lNQUdFX1dJVEhfUEUgaXMgbm90IGRlZmluZWQuCgoyMDAwLTAzLTAxICBOaWNrIENsaWZ0b24gIDxuaWNrY0BjeWdudXMuY29tPgoKCSogY29mZi1hcm0uYyAoYmZkX2FybV9wcm9jZXNzX2JlZm9yZV9hbGxvY2F0aW9uKTogTWFrZQoJJ3N5bW5keCcgc2lnbmVkIHRvIHByZXZlbnQgY29tcGlsZSB0aW1lIHdhcm5pbmcuCgoJKiBjb2ZmLW1jb3JlLmM6IFJlbW92ZSB1bnVzZWQgcHJvdG90eXBlIGZvciBwZV9vYmplY3RfcC4KCgkqIGNvZmYtc2guYzogQWRkICIjaWZuZGVmIENPRkZfSU1BR0VfV0lUSF9QRSIgYXJvdW5kIHN0YXRpYwoJZnVuY3Rpb25zIHRoYXQgYXJlIG5vdCB1c2VkIHdoZW4gQ09GRl9JTUFHRV9XSVRIX1BFIGlzCglkZWZpbmVkLgoJKHN0cnVjdCBzaF9vcGNvZGUpOiBDaGFuZ2UgdHlwZSBvZiAnZmxhZ3MnIGZpZWxkIHRvIHVuc2lnbmVkCglsb25nIHNvIHRoYXQgaXQgY2FuIGhvbGQgdGhlIFVTRVNBUyBmbGFnLgoKCSogY29mZmNvZGUuaCAoc3R5cF90b19zZWNfZmxhZ3MpOiBJbml0aWFsaXNlICd0YXJnZXRfbmFtZScuCgoJKiBlbGYtbTEwMzAwLmMgKG1uMTAzMDBfZWxmX3JlbGF4X3NlY3Rpb24pOiBJbml0aWFsaXNlCgknc3ltX3NlYycuCgoJKiBlbGYzMi1pMzcwLmM6IEFkZCBBVFRSSUJVVEVfVU5VU0VEIHRvIHVudXNlZCBmdW5jdGlvbgoJcGFyYW1ldGVycy4KCVJlbW92ZSB1bnVzdWVkIHZhcmlhYmxlcyBhbmQgY29kZS4KCShlbGZfYmFja2VuZF9hZGRfc3ltYm9sX2hvb2spOiBGaXggcHJvdG90eXBlLgoKCSogZWxmMzItbTY4ay5jIChlbGZfbTY4a19nY19zd2VlcF9ob29rKTogSW5pdGlhbGlzZSAnc2dvdCcgYW5kCgknc3JlbGdvdCcuCgoJKiBlbGYzMi1tY29yZS5jIChtY29yZV9lbGZfcmVsb2NhdGVfc2VjdGlvbik6IEluaXRpYWxpc2UKCSdvbGRpbnN0Jy4gCgoJKiBlbGYzMi1taXBzLmM6IEFkZCBBVFRSSUJVVEVfVU5VU0VEIHRvIHVudXNlZCBmdW5jdGlvbgoJcGFyYW1ldGVycy4KCVJlbW92ZSB1bnVzdWVkIHZhcmlhYmxlcyBhbmQgY29kZS4KCShlbGZfYmFja2VuZF9hZGRfc3ltYm9sX2hvb2spOiBGaXggcHJvdG90eXBlLgoKCSogZWxmMzItc2guYyAoc2hfZWxmX3NldF9tYWNoX2Zyb21fZmxhZ3MpOiBVc2UgJ2ZsYWdzJy4KCgkqIGVsZmxpbmsuaCAoZWxmX2JmZF9saW5rX2FkZF9zeW1ib2xzKTogQWRkIEFUVFJJQlVURV9VTlVTRUQKCXRvIHVudXNlZCBmdW5jdGlvbiBwYXJhbWV0ZXIuCgkKCSogcGUtbWlwcy5jOiBBZGQgQVRUUklCVVRFX1VOVVNFRCB0byB1bnVzZWQgZnVuY3Rpb24KCXBhcmFtZXRlcnMuCglVc2UgRU1QVFlfSE9XVE8gdG8gaW5pdGlhbGlzZSBlbXB0eSBob3d0byBzbG90cy4KCVJlbW92ZSB1bnVzZWQgdmFyaWFibGVzLgoKCSogcGVpY29kZS5oIChwZV9JTEZfYnVpbGRfYV9iZmQpOiBJbml0aWFsaXNlIGlkNi4JCgoyMDAwLTAzLTAxICBILkouIEx1ICA8aGpsQGdudS5vcmc+CgoJKiBhb3V0eC5oIChhb3V0X2xpbmtfaW5wdXRfc2VjdGlvbl9zdGQpOiBQYXNzICJ0cnVlIiB0bwoJdGhlIHVuZGVmaW5lZF9zeW1ib2wgY2FsbGJhY2suCgkoYW91dF9saW5rX2lucHV0X3NlY3Rpb25fZXh0KTogTGlrZXdpc2UuCgkqIGJvdXQuYyAoZ2V0X3ZhbHVlKTogTGlrZXdpc2UuCgkqIGNvZmYtYTI5ay5jIChjb2ZmX2EyOWtfcmVsb2NhdGVfc2VjdGlvbik6IExpa2V3aXNlLgoJKiBjb2ZmLWFscGhhLmMgKGFscGhhX2Vjb2ZmX2dldF9yZWxvY2F0ZWRfc2VjdGlvbl9jb250ZW4pOgoJTGlrZXdpc2UuCgkoYWxwaGFfcmVsb2NhdGVfc2VjdGlvbik6IExpa2V3aXNlLgoJKiBjb2ZmLWFybS5jIChjb2ZmX2FybV9yZWxvY2F0ZV9zZWN0aW9uKTogTGlrZXdpc2UuCgkqIGNvZmYtaTk2MC5jIChjb2ZmX2k5NjBfcmVsb2NhdGVfc2VjdGlvbik6IExpa2V3aXNlLgoJKiBjb2ZmLW1jb3JlLmMgKGNvZmZfbWNvcmVfcmVsb2NhdGVfc2VjdGlvbik6IExpa2V3aXNlLgoJKiBjb2ZmLW1pcHMuYyAobWlwc19yZWxvY2F0ZV9zZWN0aW9uKTogTGlrZXdpc2UuCgkqIGNvZmYtcHBjLmMgKGNvZmZfcHBjX3JlbG9jYXRlX3NlY3Rpb24pOiBMaWtld2lzZS4KCSogY29mZi1zaC5jIChzaF9yZWxvY2F0ZV9zZWN0aW9uKTogTGlrZXdpc2UuCgkqIGNvZmYtdGljODAuYyAoY29mZl90aWM4MF9yZWxvY2F0ZV9zZWN0aW9uKTogTGlrZXdpc2UuCgkqIGNvZmZsaW5rLmMgKF9iZmRfY29mZl9nZW5lcmljX3JlbG9jYXRlX3NlY3Rpb24pOiBMaWtld2lzZS4KCSogZWxmLW0xMDIwMC5jIChtbjEwMjAwX2VsZl9yZWxvY2F0ZV9zZWN0aW9uKTogTGlrZXdpc2UuCgkqIGVsZi1tMTAzMDAuYyAobW4xMDMwMF9lbGZfcmVsb2NhdGVfc2VjdGlvbik6IExpa2V3aXNlLgoJKiBlbGYzMi1kMTB2LmMgKGVsZjMyX2QxMHZfcmVsb2NhdGVfc2VjdGlvbik6IExpa2V3aXNlLgoJKiBlbGYzMi1mcjMwLmMgKGZyMzBfZWxmX3JlbG9jYXRlX3NlY3Rpb24pOiBMaWtld2lzZS4KCSogZWxmMzItaHBwYS5jIChlbGYzMl9ocHBhX3JlbG9jYXRlX3NlY3Rpb24pOiBMaWtld2lzZS4KCSogZWxmMzItaTM3MC5jIChpMzcwX2VsZl9yZWxvY2F0ZV9zZWN0aW9uKTogTGlrZXdpc2UuCgkqIGVsZjMyLW0zMnIuYyAobTMycl9lbGZfcmVsb2NhdGVfc2VjdGlvbik6IExpa2V3aXNlLgoJKiBlbGYzMi1tY29yZS5jIChtY29yZV9lbGZfcmVsb2NhdGVfc2VjdGlvbik6IExpa2V3aXNlLgoJKiBlbGYzMi1zaC5jIChzaF9lbGZfcmVsb2NhdGVfc2VjdGlvbik6IExpa2V3aXNlLgoJKiBlbGYzMi12ODUwLmMgKHY4NTBfZWxmX3JlbG9jYXRlX3NlY3Rpb24pOiBMaWtld2lzZS4KCSogZWxmbGluay5jIChfYmZkX2VsZl9saW5rX3JlY29yZF9keW5hbWljX3N5bWJvbCk6IExpa2V3aXNlLgoJKiBlbGZsaW5rLmggKGVsZl9saW5rX291dHB1dF9leHRzeW0pOiBMaWtld2lzZS4KCSogcGUtbWlwcy5jIChjb2ZmX3BlX21pcHNfcmVsb2NhdGVfc2VjdGlvbik6IExpa2V3aXNlLgoJKiByZWxvYy5jIChiZmRfZ2VuZXJpY19nZXRfcmVsb2NhdGVkX3NlY3Rpb25fY29udGVuKTogTGlrZXdpc2UuCgkqIHJlbG9jMTYuYyAoX2JmZF9wcGNfeGNvZmZfcmVsb2NhdGVfc2VjdGlvbik6IExpa2V3aXNlLgoKCSogZWxmLWhwcGEuaCAoZWxmX2hwcGFfcmVsb2NhdGVfc2VjdGlvbik6IFBhc3MgImZhbHNlIiB0byB0aGUKCXVuZGVmaW5lZF9zeW1ib2wgY2FsbGJhY2sgd2hlbiBidWlsZGluZyBzaGFyZWQgbGlicmFyeSB3aXRoCgktQnN5bWJvbGljIGFuZCB1bmRlZmluZWQgc3ltYm9scyBhcmUgYWxsb3dlZC4gT3RoZXJ3aXNlLCBwYXNzCgkidHJ1ZSIuCgkqIGVsZjMyLWFybS5oIChlbGYzMl9hcm1fcmVsb2NhdGVfc2VjdGlvbik6IExpa2V3aXNlLgoJKiBlbGYzMi1pMzg2LmMgKGVsZl9pMzg2X3JlbG9jYXRlX3NlY3Rpb24pOiBMaWtld2lzZS4KCSogZWxmMzItbTY4ay5jIChlbGZfbTY4a19yZWxvY2F0ZV9zZWN0aW9uKTogTGlrZXdpc2UuCgkqIGVsZjMyLW1pcHMuYyAobWlwc19lbGZfY2FsY3VsYXRlX3JlbG9jYXRpb24pOiBMaWtld2lzZS4KCShlbGYzMl9taXBzX2dldF9yZWxvY2F0ZWRfc2VjdGlvbl9jb250ZW50KTogTGlrZXdpc2UuCgkqIGVsZjMyLXBwYy5jIChwcGNfZWxmX3JlbG9jYXRlX3NlY3Rpb24pOiBMaWtld2lzZS4KCSogZWxmMzItc3BhcmMuYyAoZWxmMzJfc3BhcmNfcmVsb2NhdGVfc2VjdGlvbik6IExpa2V3aXNlLgoJKiBlbGY2NC1hbHBoYS5jIChlbGY2NF9hbHBoYV9yZWxvY2F0ZV9zZWN0aW9uKTogTGlrZXdpc2UuCgkqIGVsZjY0LXNwYXJjLmMgKHNwYXJjNjRfZWxmX3JlbG9jYXRlX3NlY3Rpb24pOiBMaWtld2lzZS4KCjIwMDAtMDItMjggIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQGN5Z251cy5jb20+CgoJKiBNYWtlZmlsZS5hbTogQWRkIHJ1bGVzIHRvIGJ1aWxkIHBlW2ldLXtzaHxtaXBzfS5sbyBvYmplY3RzLgoJKiBNYWtlZmlsZS5pbjogUmVnZW5lcmF0ZS4KCgkqIGNvbmZpZ3VyZS5pbjogQWRkIHN1cHBvcnQgZm9yIG1pcHMgYW5kIHNoIHBlIHZlY3RvcnMuCgkqIGNvbmZpZ3VyZTogcmVnZW5lcmF0ZS4KCgkqIGNvbmZpZy5iZmQ6IEFkZCBzdXBwb3J0IGZvciBhcm0td2luY2UsIG1pcHMtcGUgYW5kIHNoLXBlCgl0YXJnZXRzLiAKCgkqIHRhcmdldHMuYzogQWRkIG1pcHMgYW5kIHNoIHBlIHZlY3RvcnMuCgoJKiBsaWJwZWkuaCAoY29mZl9maW5hbF9saW5rX3Bvc3RzY3JpcHQpOiBPbmx5IGRlZmluZSBpZiBub3QKCWFscmVhZHkgZGVmaW5lZC4KCgkqIGNvZmZjb2RlLmg6IEFkZCBzdXBwb3J0IGZvciBXaW5DRSBtYWdpYyBudW1iZXJzLgoKCSogcGVpZ2VuLmMgKHBlX3ByaW50X3JlbG9jKTogVXBkYXRlIGNvbW1lbnQgYW5kIHJlYXJyYW5nZQoJYXBwZW5kaW5nIG9mIG5ld2xpbmUgY2hhcmFjdGVyLgoKCSogcGVpY29kZS5oOiBBZGQgc3VwcG9ydCBmb3IgSW1hZ2UgTGlicmFyeSBGb3JtYXQuCgkocGVfSUxGX3ZhcnMpOiBTdHJ1Y3R1cmUgY29udGFpbmluZyBkYXRhIHVzZWQgYnkgSUxGIGNvZGUuCgkocGVfSUxGX21ha2VfYV9zZWN0aW9uKTogTmV3IGZ1bmN0aW9uLiAgQ3JlYXRlIGEgc2VjdGlvbiBiYXNlZAoJb24gSUxGIGRhdGEuCgkocGVfSUxGX21ha2VfYV9yZWxvYyk6IE5ldyBmdW5jdGlvbi4gIENyZWF0ZSBhIHJlbG9jIGJhc2VkIG9uCglJTEYgZGF0YS4KCShwZV9JTEZfbWFrZV9hX3N5bWJvbCk6IE5ldyBmdW5jdGlvbi4gIENyZWF0ZSBhIHN5bWJvbCBiYXNlZAoJb24gSUxGIGRhdGEuCgkocGVfSUxGX3NhdmVfcmVsb2NzKTogTmV3IGZ1bmN0aW9uLiAgU3RvcmUgdGhlIHJlbG9jcyBjcmVhdGVkCglieSBwZV9JTEZfbWFrZV9hX3JlbG9jIGluIGEgc2VjdGlvbi4KCShwZV9JTEZfYnVpbGRfYV9iZmQpOiBOZXcgZnVuY3Rpb24uICBDcmVhdGUgYSBCRkQgZGVzY3JpYmluZwoJYW4gSUxGIG9iamVjdC4KCShwZV9JTEZfb2JqZWN0X3ApOiBOZXcgZnVuY3Rpb24uICBSZXR1cm4gYSBiZmRfdGFyZ2V0IHBvaW50ZXIKCWZvciBhbiBJTEYgb2JqZWN0LgoJKHBlX2JmZF9vYmplY3RfcCk6IElmIGFuIElMRiBvYmplY3QgaXMgZGV0ZWN0ZWQgY2FsbAoJcGVfSUxGX29iamVjdF9wIG9uIGl0LgoKCSogY29mZi1hcm0uYzogQWRkIHN1cHBvcnQgZm9yIFdpbkNFIHJlbG9jcyB3aGljaCBhcmUgZGlmZmVyZW50Cglmcm9tIG5vcm1hbCBBUk0gQ09GRiByZWxvY3MuCgkqIHBlLWFybS5jOiBVbnNldCBUQVJHRVRfVU5ERVJTQ09SRSBmb3IgYSBXaW5DRSB0YXJnZXQuCgoJKiBjb2ZmLXNoLmM6IEFkZCBzdXBwb3J0IGZvciBzaC1wZSB0YXJnZXQuCgkqIHBlLXNoLmM6IE5ldyBmaWxlLiAgU3VwcG9ydCBjb2RlIGZvciBzaC1wZSB0YXJnZXQuCgkqIHBlaS1zaC5jOiBOZXcgZmlsZS4gIFN1cHBvcnQgY29kZSBmb3Igc2gtcGUgdGFyZ2V0LgoKCSogcGUtbWlwcy5jOiBOZXcgZmlsZS4gIFN1cHBvcnQgY29kZSBmb3IgbWlwcy1wZSB0YXJnZXQuCgkqIHBlaS1taXBzLmM6IE5ldyBmaWxlLiAgU3VwcG9ydCBjb2RlIGZvciBtaXBzLXBlIHRhcmdldC4KCjIwMDAtMDItMjcgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCSogZWxmMzItc3BhcmMuYyAoZWxmMzJfc3BhcmNfbWVyZ2VfcHJpdmF0ZV9iZmRfZGF0YSk6IERvbid0IGJ1bXAKCWFyY2hpdGVjdHVyZSBpZiB0aGUgb2JqZWN0IGNhdXNpbmcgdGhlIGJ1bXAgaXMgZHluYW1pYy4KCSogZWxmNjQtc3BhcmMuYyAoc3BhcmM2NF9lbGZfbWVyZ2VfcHJpdmF0ZV9iZmRfZGF0YSk6IExpa2V3aXNlLAoJYW5kIGFsc28gZG9uJ3QgaXQgZm9yIG1lbW9yeSBvcmRlcmluZy4KCShzcGFyYzY0X2VsZl93cml0ZV9yZWxvY3MpOiBUYWtlIHNyY19yZWxhIG91dCBvZiB0aGUgbG9vcC4KCjIwMDAtMDItMjcgIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5AemVtYnUuY29tPgoKCSogZHdhcmYyLmMgKHJlYWRfYWJicmV2cyk6IFVzZSBfcmF3X3NpemUgZGlyZWN0bHkgcmF0aGVyIHRoYW4KCWNhbGxpbmcgYmZkX2dldF9zZWN0aW9uX3NpemVfYmVmb3JlX3JlbG9jLgoJKGRlY29kZV9saW5lX2luZm8pOiBMaWtld2lzZS4KCShfYmZkX2R3YXJmMl9maW5kX25lYXJlc3RfbGluZSk6IExpa2V3aXNlLgoKMjAwMC0wMi0yNyAgRWxpIFphcmV0c2tpaSAgPGVsaXpAaXMuZWx0YS5jby5pbD4KCgkqIE1ha2VmaWxlLmFtIChzdGFtcC1saWIpOiBVc2UgJChMSUJUT09MKSAtLWNvbmZpZyB0byBnZXQgdGhlCgluYW1lIG9mIHRoZSBsaWJ0b29sIGRpcmVjdG9yeS4KCSogTWFrZWZpbGUuaW46IFJlYnVpbGQuCgpGcmkgRmViIDI1IDE4OjM5OjI2IDIwMDAgIFJvZG5leSBCcm93biAoUm9kbmV5QnJvd25AcG1zYy5jb20pCgoJKiBzb20uYyAoU09NX0hPV1RPKTogRGVmaW5lLgoJKHNvbV9ocHBhX2hvd3RvX3RhYmxlKTogVXNlIGl0LgoKMjAwMC0wMi0yNSAgQWxleGFuZHJlIE9saXZhICA8b2xpdmFAbHNkLmljLnVuaWNhbXAuYnI+CgoJKiBjb25maWcuYmZkOiBFbmFibGUgNjQgYml0IHN1cHBvcnQgZm9yIEdOVS9MaW51eC9zcGFyYy4KCgkqIGNvbmZpZy5iZmQ6IEVuYWJsZSA2NCBiaXQgc3VwcG9ydCBmb3IgU29sYXJpczcrL3NwYXJjLgoKMjAwMC0wMi0yNCAgQ2F0aGVyaW5lIE1vb3JlICA8Y2xtQGN5Z251cy5jb20+CgoJKiBzb20uYyAoc29tX21pc2Nfc3ltYm9sX2luZm8pOiAgQWRkIGZpZWxkCglzZWNvbmRhcnlfZGVmLiAKCShzb21fYmZkX2Rlcml2ZV9taXNjX3N5bWJvbF9pbmZvKTogIEluaXRpYWxpemUKCXNlY29uZGFyeV9kZWYuCgkoc29tX2J1aWxkX2FuZF93cml0ZV9zeW1ib2xfdGFibGUpOiBLZWVwIHRyYWNrCglvZiBzZWNvbmRhcnlfZGVmIGZpZWxkLgoJKHNvbV9zbHVycF9zeW1ib2xfdGFibGUpOiBTZXQgQlNGX1dFQUsgc3ltYm9sIGZsYWcKCWlmIHNlY29uZGFyeV9kZWYgZmllbGQgaXMgc2V0LgoJKHNvbV9iZmRfYXJfd3JpdGVfc3ltYm9sX3N0dWZmKTogSW5pdGlhbGl6ZQoJc2Vjb25kYXJ5X2RlZi4KCjIwMDAtMDItMjMgIFN0ZXBoYW5lIENhcnJleiAgPHN0Y2FycmV6QHdvcmxkbmV0LmZyPgoKCSogZHdhcmYyLmMgKHJlYWRfYWRkcmVzcyk6IFJlYWQgMTYtYml0cyBhZGRyZXNzZXMuCgkocGFyc2VfY29tcF91bml0KTogQWNjZXB0IGFkZHJfc2l6ZSA9PSAyLgoJCjIwMDAtMDItMjMgIEFsYW4gTW9kcmEgIDxhbGFuQHNwcmkubGV2ZWxzLnVuaXNhLmVkdS5hdT4KCgkqIGJmZC1pbi5oOiBVcGRhdGUgY29weXJpZ2h0IGRhdGUuCgoyMDAwLTAyLTIzICBMaW5hcyBWZXBzdGFzIDxsaW5hc0BsaW5hcy5vcmc+CgoJKiBjcHUtaTM3MC5jOiBOZXcgZmlsZS4KCSogZWxmMzItaTM3MC5jOiAgTmV3IGZpbGUuCgkqIGFyY2h1cmVzLmMgKGVudW0gYmZkX2FyY2hpdGVjdHVyZSk6IEFkZCBiZmRfYXJjaF9pMzcwLgoJKGJmZF9pMzcwX2FyY2gpOiBOZXcuCgkoYmZkX2FyY2h1cmVzX2xpc3QpOiBBZGQgYmZkX2kzNzBfYXJjaC4KCSogZWxmLmMgKHByZXBfaGVhZGVycyk6IEFkZCBiZmRfYXJjaF9pMzcwLgoJKiBNYWtlZmlsZS5hbTogQWRkIHN1cHBvcnQgZm9yIElCTSAzNzAgZWxmLgoJKiBjb25maWcuYmZkOiBMaWtld2lzZS4KCSogY29uZmlndXJlLmluOiBMaWtld2lzZS4KCSogbGliYmZkLmggKGJmZF9yZWxvY19jb2RlX3JlYWxfbmFtZXMpOiBMaWtld2lzZS4KCSogcmVsb2MuYyAoYmZkX3JlbG9jX2NvZGVfdHlwZSk6IExpa2V3aXNlLgoJKiB0YXJnZXRzLmM6IExpa2V3aXNlLgoKCSogTWFrZWZpbGUuaW46IFJlZ2VuZXJhdGUuCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KCSogYmZkLWluMi5oOiBSZWdlbmVyYXRlLgoKMjAwMC0wMi0yMiAgSWFuIExhbmNlIFRheWxvciAgPGlhbkB6ZW1idS5jb20+CgoJKiBlbGYzMi1pMzg2LmMgKGVsZl9pMzg2X2luZm9fdG9faG93dG9fcmVsKTogR2l2ZSBhIHdhcm5pbmcgZm9yCglpbnZhbGlkIHJlbG9jYXRpb24gdHlwZXMsIGFuZCBjaGFuZ2UgdGhlbSB0byBSXzM4Nl9OT05FLgoKMjAwMC0wMi0yMiAgSC5KLiBMdSAgPGhqbEBnbnUub3JnPgoKCSogZWxmbGluay5oIChlbGZfbGlua19hZGRfb2JqZWN0X3N5bWJvbHMpOiBJZiBhIHZlcnNpb24gc3ltYm9sIGlzCglub3QgZGVmaW5lZCwgZG9uJ3QgYWRkIGEgc2Vjb25kIEVMRl9WRVJfQ0hSLgoKCSogZWxmbGluay5oIChlbGZfYmZkX2ZpbmFsX2xpbmspOiBDYWxsIG91dHB1dF9leHRzeW0gZm9yIGdsb2JhbAoJc3ltYm9scyBjb252ZXJ0ZWQgdG8gbG9jYWwgc3ltYm9scyBldmVuIHdoZW4gc3RyaXBwaW5nIGFsbAoJc3ltYm9scy4KCShlbGZfbGlua19vdXRwdXRfZXh0c3ltKTogUHJvY2VzcyBnbG9iYWwgc3ltYm9scyBjb252ZXJ0ZWQgdG8KCWxvY2FsIHN5bWJvbHMgZXZlbiBpZiB0aGV5IGFyZSBiZWluZyBzdHJpcHBlZC4KCjIwMDAtMDItMjEgIEFsYW4gTW9kcmEgIDxhbGFuQHNwcmkubGV2ZWxzLnVuaXNhLmVkdS5hdT4KCgkqIGFyY2h1cmVzLmMgKGJmZF9vY3RldHNfcGVyX2J5dGUpOiBSZXR1cm4gdW5zaWduZWQgaW50LgoJKGJmZF9hcmNoX21hY2hfb2N0ZXRzX3Blcl9ieXRlKTogRGl0dG8uCgkqIGxpYmJmZC5jIChiZmRfcmVhZCwgYmZkX3NlZWspOiBRdWVsbCBzaWduZWQgdnMuIHVuc2lnbmVkCgljb21wYXJpc29uIHdhcm5pbmcuCgkqIHNlY3Rpb24uYyAoYmZkX2dldF9zZWN0aW9uX3NpemVfYmVmb3JlX3JlbG9jKTogUXVlbGwgc2lnbmVkCgl2cy4gdW5zaWduZWQgY29tcGFyaXNvbiB3YXJuaW5nLgoJKGJmZF9nZXRfc2VjdGlvbl9zaXplX2FmdGVyX3JlbG9jKTogU2FtZSBoZXJlLiAgRml4IHBhcmVudGhlc2VzIHRvby4KCSogdHJhZC1jb3JlLmMgKHRyYWRfdW5peF9jb3JlX2ZpbGVfcCk6IENvcnJlY3QgMjAwMC0wMS0yNwoJY2hhbmdlLiAgV2hhdCB3YXMgSSB0aGlua2luZz8KCSogYmZkLWluMi5oOiBSZWdlbmVyYXRlLgoKCSogZWxmbGluay5oIChlbGZfZ2Nfc3dlZXApOiBTa2lwIG5vbi1lbGYgaW5wdXQgYmZkcy4KCShlbGZfZ2Nfc2VjdGlvbnMpOiBTYW1lIGhlcmUuCgkoZWxmX2djX2NvbW1vbl9maW5hbGl6ZV9nb3Rfb2Zmc2V0cyk6IEFuZCBoZXJlLgoKMjAwMC0wMi0yMSAgSWFuIExhbmNlIFRheWxvciAgPGlhbkB6ZW1idS5jb20+CgoJRUxGIEhQUEEgZG9lc24ndCB3b3JrIGF0IHByZXNlbnQ7IHJlbW92ZSBpdCB1bnRpbCBpdCBkb2VzLgoJKiBjb25maWcuYmZkOiBDb21tZW50IG91dCBzZXR0aW5nIHRhcmdfZGVmdmVjIHRvCgliZmRfZWxmMzJfaHBwYV92ZWMuCgkqIE1ha2VmaWxlLmFtOiBSZWJ1aWxkIGRlcGVuZGVuY2llcy4KCShCRkQzMl9CQUNLRU5EUyk6IFJlbW92ZSBlbGYzMi1ocHBhLmxvLgoJKEJGRDMyX0JBQ0tFTkRTX0NGSUxFUyk6IFJlbW92ZSBlbGYzMi1ocHBhLmMuCgkoU09VUkNFX0hGSUxFUyk6IFJlbW92ZSBlbGYzMi1ocHBhLmggYW5kIGhwcGFfc3R1YnMuaC4KCSogTWFrZWZpbGUuaW46IFJlYnVpbGQuCgkqIHRhcmdldHMuYyAoYmZkX3RhcmdldF92ZWN0b3IpOiBDb21tZW50IG91dCBiZmRfZWxmMzJfaHBwYV92ZWMuCgoyMDAwLTAyLTE4ICBHZW9mZiBLZWF0aW5nICA8Z2VvZmZrQGN5Z251cy5jb20+CgoJKiBjb2ZmY29kZS5oIChjb2ZmX3NldF9hcmNoX21hY2hfaG9vayk6IFVzZSBmcmVlKCksIGJlY2F1c2UgdGhlcmUKCWlzIG5vIGJmZF9mcmVlKCkuICBSZXZlcnQgYmZkX2ZyZWUgcGFydCBvZiBwcmV2aW91cyBjaGFuZ2UuCgoyMDAwLTAyLTE4ICBHZW9mZiBLZWF0aW5nICA8Z2VvZmZrQGN5Z251cy5jb20+CgoJKiBjb2ZmY29kZS5oIChjb2ZmX3NldF9hcmNoX21hY2hfaG9vayk6IERvbid0IHVzZSB2YXJpYWJsZS1zaXplCglhcnJheXMuCgkoY29mZl9jb21wdXRlX3NlY3Rpb25fZmlsZV9wb3NpdGlvbnMpOiBVc2UgYmZkX2ZyZWUgdG8gcGFpcgoJYmZkX21hbGxvYy4KCShjb2ZmX3dyaXRlX29iamVjdF9jb250ZW50cyk6IExpa2V3aXNlLgoKCSogY29mZi1yczYwMDAuYyAoeGNvZmZfaG93dG9fdGFibGVfMTYpOiBOZXcgdmFyaWFibGUuCgkoeGNvZmZfcnR5cGUyaG93dG8pOiBIYW5kbGUgMTYtYml0IHZhcmlhbnRzIG9mIDMyLWJpdCByZWxvY3MuCgoyMDAwLTAyLTE4ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAY3lnbnVzLmNvbT4KCgkqIGNvZmYtcnM2MDAwLmMgKFhDT0ZGQVJNQUdCSUcpOiBOZXcgbWFjcm8uCgkoeGNvZmZfYXJfZmlsZV9oZHJfYmlnKTogTmV3IHN0cnVjdHVyZS4KCShTSVpFT0ZfQVJfRklMRV9IRFJfQklHKTogTmV3IG1hY3JvLgoJKHhjb2ZmX2FyX2hkcl9iaWcpOiBOZXcgc3RydWN0dXJlLgoJKFNJWkVPRl9BUl9IRFJfQklHKTogTmV3IG1hY3JvLgoJKHhjb2ZmX2JpZ19mb3JtYXRfcCk6IE5ldyBtYWNyby4KCSh4Y29mZl9hcmRhdGFfYmlnKTogTmV3IG1hY3JvLgoJKGFyY2hfeGhkcl9iaWcpOiBOZXcgbWFjcm8uCgkoeGNvZmZfc2x1cnBfYXJtYXApOiBIYW5kbGUgbGFyZ2UgYXJjaGl2ZXMuCgkoeGNvZmZfYXJjaGl2ZV9wKTogRGV0ZWN0IGxhcmdlIGFyY2hpdmVzLgoJKHhjb2ZmX3JlYWRfYXJfaGRyKTogSGFuZGxlIGxhcmdlIGFyY2hpdmVzLgoJKHhjb2ZmX29wZW5yX25leHRfYXJjaGl2ZWRfZmlsZSk6IEhhbmRsZSBsYXJnZSBhcmNoaXZlcy4KCSh4Y29mZl9nZW5lcmljX3N0YXRfYXJjaF9lbHQpOiBIYW5kbGUgbGFyZ2UgYXJjaGl2ZXMuCgkoeGNvZmZfd3JpdGVfYXJtYXBfb2xkKTogUmVuYW1lIGZyb20geGNvZmZfd3JpdGVfYXJtYXAuCgkoeGNvZmZfd3JpdGVfYXJtYXBfYmlnKTogTmV3IGZ1bmN0aW9uLgoJKHhjb2ZmX3dyaXRlX2FybWFwKTogTmV3IGZ1bmN0aW9uLCBkaXNwYXRjaCB0byBfb2xkIG9yIF9iaWcuCgkoeGNvZmZfd3JpdGVfYXJjaGl2ZV9jb250ZW50c19vbGQpOiBSZW5hbWUgZnJvbQoJeGNvZmZfd3JpdGVfYXJjaGl2ZV9jb250ZW50cy4KCSh4Y29mZl93cml0ZV9hcmNoaXZlX2NvbnRlbnRzX2JpZyk6IE5ldyBmdW5jdGlvbi4KCSh4Y29mZl93cml0ZV9hcmNoaXZlX2NvbnRlbnRzKTogTmV3IGZ1bmN0aW9uLCBkaXNwYXRjaCB0byBfb2xkIG9yCglfYmlnLgoKMjAwMC0wMi0xOCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGVsZi1iZmQuaCAoc3RydWN0IGVsZl9saW5rX2hhc2hfdGFibGUpOiBSZW1vdmUgY29weV9pbmRpcmVjdAoJYW5kIGhpZGVfc3ltYm9sIG1lbWJlcnMuCgkoZWxmX2xpbmtfaGFzaF9jb3B5X2luZGlyZWN0KTogUmVtb3ZlLgoJKGVsZl9saW5rX2hhc2hfaGlkZV9zeW1ib2wpOiBSZW1vdmUuCgkoc3RydWN0IGVsZl9iYWNrZW5kX2RhdGEpOiBBZGQgZWxmX2JhY2tlbmRfY29weV9pbmRpcmVjdF9zeW1ib2wKCWFuZCBlbGZfYmFja2VuZF9oaWRlX3N5bWJvbC4KCShfYmZkX2VsZl9saW5rX2hhc2hfY29weV9pbmRpcmVjdCk6IERlY2xhcmUuCgkoX2JmZF9lbGZfbGlua19oYXNoX2hpZGVfc3ltYm9sKTogRGVjbGFyZS4KCSogZWxmLmMgKF9iZmRfZWxmX2xpbmtfaGFzaF9jb3B5X2luZGlyZWN0KTogUmVtb3ZlIHRhYmxlIGFyZ3VtZW50LgoJKF9iZmRfZWxmX2xpbmtfaGFzaF9oaWRlX3N5bWJvbCk6IExpa2V3aXNlLgoJKF9iZmRfZWxmX2xpbmtfaGFzaF90YWJsZV9pbml0KTogRG9uJ3QgaW5pdCBraWxsZWQgbWVtYmVycy4KCSogZWxmbGluay5oIChlbGZfbGlua19hZGRfb2JqZWN0X3N5bWJvbHMpOiBVc2UgdGhlIGJlZCBmdW5jdGlvbgoJcG9pbnRlcnMgbm90IGVsZl9saW5rX2hhc2hfe2NvcHlfaW5kaXJlY3QsaGlkZV9zeW1ib2x9LgoJKGVsZl9saW5rX2Fzc2lnbl9zeW1fdmVyc2lvbik6IExpa2V3aXNlLgoJKiBlbGZ4eC10YXJnZXQuaCAoZWxmX2JhY2tlbmRfY29weV9pbmRpcmVjdF9zeW1ib2wpOiBEZWZhdWx0LgoJKGVsZl9iYWNrZW5kX2hpZGVfc3ltYm9sKTogTGlrZXdpc2UuCgkoZWxmTk5fYmVkKTogVXBkYXRlIGZvciBuZXcgbWVtYmVycy4KCjIwMDAtMDItMTcgIEtldmluIEJ1ZXR0bmVyICA8a2V2aW5iQHJlZGhhdC5jb20+CgoJKiByczYwMDAtY29yZS5jIChDT1JFX0RBVEFfU0laRV9GSUVMRCwgQ09SRV9DT01NX0ZJRUxELCBTQVZFX0ZJRUxELAoJU1RBQ0tfRU5EX0FERFIpOiBEZWZpbmUgZm9yIG5ldyBjb3JlIGZpbGUgZm9ybWF0LgoJKExPQURFUl9PRkZTRVRfRklFTEQsIExPQURFUl9SRUdJT05fU0laRSwgQ09SRV9EVU1QKTogTmV3IGRlZmluZXMKCWZvciBoYW5kbGluZyB0aGUgdmFnYXJpZXMgb2YgdGhlIHZhcmlvdXMgY29yZSBmaWxlIHN0cnVjdHVyZXMgdXNlZAoJYnkgQUlYIG92ZXIgdGhlIHllYXJzLgoJKHJzNjAwMGNvZmZfY29yZV9wLCByczYwMDBjb2ZmX2NvcmVfZmlsZV9tYXRjaGVzX2V4ZWN1dGFibGUsCglSczZrQ29yRGF0YSk6IFVzZSBhYm92ZSBkZWZpbmVzIHRvIGFkYXB0IGNvZGUgdG8gdXNlIEFJWCA0LjMncwoJY29yZV9kdW1weCBzdHJ1Y3R1cmUuCgpUaHUgRmViIDE3IDAwOjA0OjQ4IDIwMDAgIEoib3JuIFJlbm5lY2tlIDxhbXlsYWFyQGN5Z251cy5jby51az4KCgkqIGFyY2h1cmVzLmMgKGJmZF9tYWNoX3NoMiwgYmZkX21hY2hfc2hfZHNwKTogTmV3IG1hY3Jvcy4KCShiZmRfbWFjaF9zaDNfZHNwKTogTGlrZXdpc2UuCgkoYmZkX21hY2hfc2g0KTogUmVpbnN0YXRlLgoJKGJmZF9kZWZhdWx0X3NjYW4pOiBSZWNvZ25pemUgNzQxMCwgNzcwOCwgNzcyOSBhbmQgNzc1MC4KCSogYmZkLWluMi5oOiBSZWdlbmVyYXRlLgoJKiBjb2ZmLXNoLmMgKHN0cnVjdCBzaF9vcGNvZGUpOiBmbGFncyBpcyBubyBsb25nZXIgc2hvcnQuCgkoVVNFU0FTLCBVU0VTQVNfUkVHLCBVU0VTUjgsIFNFVFNBUywgU0VUU0FTX1JFRyk6IE5ldyBtYWNyb3MuCgkoc2hfb3Bjb2RlNDEsIHNoX29wY29kZTQyKTogSW50ZWdyYXRlIGFzIHNoX29wY29kZTQxLgoJKHNoX29wY29kZTAxLCBzaF9vcGNvZGUwMiwgc2hfb3Bjb2RlNDApOiBBZGQgc2gtZHNwIG9wY29kZXMuCgkoc2hfb3Bjb2RlNDEsIHNoX29wY29kZTQsIHNoX29wY29kZTgwKTogTGlrZXdpc2UuCgkoc2hfb3Bjb2Rlcyk6IE5vIGxvbmdlciBjb25zdC4KCShzaF9kc3Bfb3Bjb2RlZjAsIHNoX2RzcF9vcGNvZGVmKTogTmV3IGFycmF5cy4KCShzaF9pbnNuX3VzZXNfcmVnKTogQ2hlY2sgZm9yIFVTRVNBUyBhbmQgVVNFU1I4LgoJKHNoX2luc25fc2V0c19yZWcsIHNoX2luc25zX2NvbmZsaWN0KTogQ2hlY2sgZm9yIFNFVFNBUy4KCShfYmZkX3NoX2FsaWduX2xvYWRfc3Bhbik6IFJldHVybiBlYXJseSBmb3IgU0g0LgoJTW9kaWZ5IHNoX29wY29kZXMgbG9va3VwIHRhYmxlIGZvciBzaC1kc3AgLyBzaDMtZHNwLgoJVGFrZSBpbnRvIGFjY291bnQgdGhhdCBmaWVsZCBiIG9mIGEgcGFyYWxsZWwgcHJvY2Vzc2luZyBpbnNuCgljb3VsZCBiZSBtaXN0YWtlbiBmb3IgYSBzZXBhcmF0ZSBpbnNuLgoJKiBjcHUtc2guYyAoYXJjaF9pbmZvX3N0cnVjdCk6IE5ldyBhcnJheSBlbGVtZW50cyBmb3IKCXNoMiwgc2gtZHNwIGFuZCBzaDMtZHNwLgoJUmVpbnN0YXRlIGVsZW1lbnQgZm9yIHNoNC4KCShTSDJfTkVYVCwgU0hfRFNQX05FWFQsIFNIM19EU1BfTkVYVCk6IE5ldyBtYWNyb3MuCgkoU0g0X05FWFQpOiBSZWluc3RhdGUuCgkoU0gzX05FWFQsIFNIM0VfTkVYVCk6IEFkanVzdC4KCSogZWxmLWJmZC5oIChfc2hfZWxmX3NldF9tYWNoX2Zyb21fZmxhZ3MpOiBEZWNsYXJlLgoJKiBlbGYzMi1zaC5jIChzaF9lbGZfc2V0X3ByaXZhdGVfZmxhZ3MpOiBOZXcgZnVuY3Rpb24uCgkoc2hfZWxmX2NvcHlfcHJpdmF0ZV9kYXRhLCBzaF9lbGZfc2V0X21hY2hfZnJvbV9mbGFncyk6IExpa2V3aXNlLgoJKHNoX2VsZl9tZXJnZV9wcml2YXRlX2RhdGEpOiBOZXcgZnVuY3Rpb24uCgkoZWxmX2JhY2tlbmRfb2JqZWN0X3AsIGJmZF9lbGYzMl9iZmRfc2V0X3ByaXZhdGVfYmZkX2ZsYWdzKTogRGVmaW5lLgoJKGJmZF9lbGYzMl9iZmRfY29weV9wcml2YXRlX2JmZF9kYXRhKTogRGVmaW5lLgoJKGJmZF9lbGYzMl9iZmRfbWVyZ2VfcHJpdmF0ZV9iZmRfZGF0YSk6IENoYW5nZSB0bwoJc2hfZWxmX21lcmdlX3ByaXZhdGVfZGF0YS4KCjIwMDAtMDItMTMgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBlbGYtYmZkLmggKHN0cnVjdCBlbGZfbGlua19oYXNoX3RhYmxlKTogQWRkIGNvcHlfaW5kaXJlY3QgYW5kCgloaWRlX3N5bWJvbCBtZW1iZXJzLgoJKGVsZl9saW5rX2hhc2hfY29weV9pbmRpcmVjdCk6IE5ldy4KCShlbGZfbGlua19oYXNoX2hpZGVfc3ltYm9sKTogTmV3LgoJKiBlbGZsaW5rLmggKGVsZl9saW5rX2FkZF9vYmplY3Rfc3ltYm9scyk6IEJyZWFrIG91dCBjb3B5IGZyb20gCglpbmRpcmVjdCBuZXcgbmV3IHN5bWJvbCB0byBlbGYuYy4KCShlbGZfbGlua19hc3NpZ25fc3ltX3ZlcnNpb24pOiBCcmVhayBvdXQgcHJpdmF0aXphdGlvbiBvZgoJbm9uLWV4cG9ydGVkIHN5bWJvbCB0byBlbGYuYy4KCSogZWxmLmMgKF9iZmRfZWxmX2xpbmtfaGFzaF9jb3B5X2luZGlyZWN0KTogTmV3LgoJKF9iZmRfZWxmX2xpbmtfaGFzaF9oaWRlX3N5bWJvbCk6IE5ldy4KCShfYmZkX2VsZl9saW5rX2hhc2hfdGFibGVfaW5pdCk6IEluaXQgY29weV9pbmRpcmVjdCBhbmQgaGlkZV9zeW1ib2wuCgoyMDAwLTAyLTEzICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQHplbWJ1LmNvbT4KCgkqIHNlY3Rpb24uYyAoX2JmZF9zdHJpcF9zZWN0aW9uX2Zyb21fb3V0cHV0KTogQWRkIGluZm8gcGFyYW1ldGVyLgoJSWYgaXQgcGFzc2VkIGFzIG5vbi1OVUxMLCB1c2UgaXQgdG8gY2hlY2sgd2hldGhlciBhbnkgaW5wdXQgQkZECgloYXMgYW4gaW5wdXQgc2VjdGlvbiB3aGljaCB1c2VzIHRoaXMgb3V0cHV0IHNlY3Rpb24uICBDaGFuZ2UgYWxsCgljYWxsZXJzLgoJKiBiZmQtaW4yLmg6IFJlYnVpbGQuCgoJKiBiZmQtaW4uaDogTW92ZSBkZWNsYXJhdGlvbnMgb2YgYmZkX2dldF9lbGZfcGhkcl91cHBlcl9ib3VuZCBhbmQKCWJmZF9nZXRfZWxmX3BoZHJzIGluIGZyb20gYmZkLWluMi5oLCBjb3JyZWN0aW5nIHBhdGNoIG9mCgkxOTk5LTExLTI5LgoJKiBiZmQtaW4yLmg6IFJlYnVpbGQuCgoyMDAwLTAyLTEwICBUaW1vdGh5IFdhbGwgIDx0d2FsbEBjeWdudXMuY29tPgoKCSogY29mZnN3YXAuaCAoY29mZl9zd2FwX3N5bV9pbik6IEFkZCBob29rIFNXQVBfU1lNX0lOX1BPU1QgdG8KCWFsbG93IGZpbmFsIG1vZGlmaWNhdGlvbnMgb2Ygc3dhcHBlZC1pbiBzeW1ib2wuCgkoY29mZl9zd2FwX3N5bV9vdXQpOiBEaXR0byB3aXRoIFNXQVBfU1lNX09VVF9QT1NULgoJKiBjb2ZmY29kZS5oIChjb2ZmX3dyaXRlX3JlbG9jcyk6IFVzZSBtYWNybwoJU0VDVElPTl9SRUxBVElWRV9BQlNPTFVURV9TWU1CT0xfUCBpZiBkZWZpbmVkIHRvIGRldGVybWluZSB3aGV0aGVyCglzeW1ib2wgaW5kZXggc2hvdWxkIGJlIHNldCB0byAtMS4KClRodSBGZWIgMTAgMjA6MDc6NTAgR01UIDIwMDAgIFRvc2hpeWFzdSBNb3JpdGEgKHRvc2hpLm1vcml0YUBzZWdhLmNvbSkKCgkqIGNvZmYtc2guYyAoVVNFUzFfUkVHLCBVU0VTMl9SRUcsIFNFVFMxX1JFRywgU0VUUzJfUkVHLAoJVVNFU0YxX1JFRywgVVNFU0YyX1JFRywgU0VUU0YxX1JFRywgU0VUU0YyX1JFRyk6IE5ldyBtYWNyb3MuCgkqIChzaF9pbnNuX3NldHNfcmVnLCBzaF9pbnNuX3NldHNfZnJlZyk6IE5ldyBwcm90b3R5cGVzLgoJKiAoc2hfaW5zbl9zZXRzX3JlZywgc2hfaW5zbl91c2VzX29yX3NldHNfcmVnLCBzaF9pbnNuc19zZXRzX2ZyZWcsCglzaF9pbnNuc191c2VzX29yX3NldHNfZnJlZyk6IE5ldyBmdW5jdGlvbnMuCgkqIChzaF9pbnNuX3VzZXNfcmVnLCBzaF9pbnNuX3VzZXNfZnJlZyk6IFVzZSBuZXcgbWFjcm9zLgoJKiAoc2hfaW5zbnNfY29uZmxpY3QpOiBVc2UgbmV3IGZ1bmN0aW9ucyBhbmQgbmV3IG1hY3JvcyB0byAKCWRldGVjdCBjb25mbGljdHMgd2hlbiB0d28gaW5zdHJ1Y3Rpb25zIGJvdGggc2V0IHNhbWUgaW50ZWdlciByZWdpc3RlcnMsCglib3RoIHNldCBzYW1lIGZwIHJlZ2lzdGVyLCBhbmQgYm90aCBzZXQgc3BlY2lhbCByZWdpc3Rlci4KCjIwMDAtMDItMDkgIFRpbW90aHkgV2FsbCAgPHR3YWxsQGN5Z251cy5jb20+CgoJKiBjb2ZmZ2VuLmMgKGNvZmZfcmVhbF9vYmplY3RfcCk6IFNldCBhcmNoL21hY2ggaW5mbyBwcmlvciB0bwoJc3dhcHBpbmcgaW4gc2VjdGlvbnMsIHNvIHRoYXQgdGhlIHN3YXBwaW5nIHJvdXRpbmVzIGhhdmUgYWNjZXNzIHRvCgl0aGUgYXJjaC9tYWNoIGluZm8uCgoyMDAwLTAyLTA4IE1hcmsgRWxicmVjaHQgPHNub3diYWxsM0BiaWdmb290LmNvbT4KCQoJKiBjb2ZmLWdvMzIuYzogVXBkYXRlIGNvbW1lbnQuIFVwZGF0ZSBjb3B5cmlnaHQuCgoyMDAwLTAxLTI3ICBUaG9tYXMgZGUgTGVsbGlzICA8dGRlbEB3aW5kcml2ZXIuY29tPgoKCSogc3ltcy5jIChiZmRfZGVjb2RlX3N5bWNsYXNzKQoJVHdvIG5ldyBjbGFzcyBjaGFyYWN0ZXJzIHdlcmUgYWRkZWQgLSAnVicgYW5kICd2Jy4gIFRoZQoJbWVhbmluZyBvZiAnVycgaXMgbm93IHJlc3RyaWN0ZWQgdG8ganVzdCB3ZWFrIG5vbi1vYmplY3QKCXN5bWJvbHMuICBUaGlzIGFsbG93cyBkaWZmZXJlbnRpYXRpb24gYmV0d2VlbiwgZm9yIGV4YW1wbGUsCgl3ZWFrIGZ1bmN0aW9ucyB2cyB3ZWFrIG9iamVjdHMuICBubSBmb3IgZXhhbXBsZSBub3cgZHVtcHM6CgknVycgPSB3ZWFrIGdsb2JhbAoJJ3cnID0gd2VhayB1bnJlc29sdmVkCgknVicgPSB3ZWFrIGdsb2JhbCBvYmplY3QKCSd2JyA9IHdlYWsgdW5yZXNvbHZlZCBvYmplY3QKCgkoYmZkX2lzX3VuZGVmaW5lZF9zeW1jbGFzcyk6IE5ldyBmdW5jdGlvbi4gIFJldHVybiB0cnVlIGlmIHRoZQoJZ2l2ZW4gc3ltYm9sIGNsYXNzIHJlcHJlc2VudHMgYW5kIHVuZGVmaW5lZC91bnJlc29sdmVkIHN5bWJvbC4KCQoJKGJmZF9zeW1ib2xfaW5mbyk6IFVzZSBiZmRfaXNfdW5kZWZpbmVkX3N5bWNsYXNzIHRvIGNoZWNrIGZvcgoJdW5yZXNvbHZlZCBzeW1ib2xzLgoKCSogYmZkLWluMi5oOiBBZGQgcHJvdG90eXBlIGZvciBiZmRfaXNfdW5kZWZpbmVkX3N5bWJvbCgpLgoJCgkqIGVsZjMyLWFybS5oIChlbGYzMl9hcm1fZ2V0X3N5bWJvbF90eXBlKTogSWYgYSBzeW1ib2wgaGFzIHRoZQoJU1RUX0FSTV8xNkJJVCBmbGFnIHNldCwgYnV0IGl0IGlzIG5vdCBhdHRhY2hlZCB0byBhIGRhdGEgb2JqZWN0CglyZXR1cm4gU1RUX0FSTV8xNkJJVCBzbyB0aGF0IGl0IHdpbGwgYmUgdHJlYXRlZCBhcyBjb2RlIGJ5IHRoZQoJZGlzYXNzZW1ibGVyLgoKMjAwMC0wMS0yNyAgQWxhbiBNb2RyYSAgPGFsYW5Ac3ByaS5sZXZlbHMudW5pc2EuZWR1LmF1PgoKCSogY29mZi1pMzg2LmMgKGkzY29mZl9vYmplY3RfcCk6IFJlbW92ZSBwcm90b3R5cGUuCglVcGRhdGUgY29weXJpZ2h0LgoKCSogZWxmbGluay5jIChfYmZkX2VsZl9saW5rX3JlY29yZF9keW5hbWljX3N5bWJvbCk6IEFkZCBjb25zdAoJdG8gbmFtZS4gIFVwZGF0ZSBjb3B5cmlnaHQuCgoJKiB0cmFkLWNvcmUuYyAodHJhZF91bml4X2NvcmVfZmlsZV9wKTogQ2FzdCBjb3JlX3JlZ3NlYwoJYXNzaWdubWVudCB0byBhdm9pZCB3YXJuaW5nLiAgVXBkYXRlIGNvcHlyaWdodC4KCjIwMDAtMDEtMjQgIFJvYmVydCBMaXBlICAocm9iZXJ0bEBzY28uY29tKQoKCSogY29mZmNvZGUuaCAoY29mZl93cml0ZV9vYmplY3RfY29udGVudHMpOiBHZXQgYnVmZiB2aWEgYmZkX21hbGxvYwoJaW5zdGVhZCBvZiB1c2luZyBHTlUgQyBleHRlbnNpb24uCgoyMDAwLTAxLTIxICBOaWNrIENsaWZ0b24gIDxuaWNrY0BjeWdudXMuY29tPgoKCSogbGliYmZkLmMgKGJmZF9yZWFkKTogRG8gbm90IGF0dGVtcHQgdG8gZ2V0IGEgbmVnYXRpdmx5IHNpemVkCglhbW91bnQgZnJvbSBhIGJmZF9pbl9tZW1vcnkgc3RydWN0dXJlLgoJKGJmZF9zZWVrKTogRG8gbm90IGFsbG93IHNlZWtzIHBhc3QgdGhlIGVuZCBvZiBhIGJmZF9pbl9tZW1vcnkKCXN0cnVjdHVyZS4KCjIwMDAtMDEtMTQgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQGN5Z251cy5jb20+CgoJKiBsaW5rZXIuYyAoZGVmYXVsdF9pbmRpcmVjdF9saW5rX29yZGVyKTogb29wcyAtIGZpeCBpbmNvcnJlY3RseQoJYXBwbGllZCBwYXRjaCBmcm9tIFRpbSBXYWxsLgoKMjAwMC0wMS0xMyAgVGltb3RoeSBXYWxsICh0d2FsbEB0aWFjLm5ldD4KCgkqIGNvZmZjb2RlLmg6IFVzZSBiZmRfY29mZl94eHggaW5zdGVhZCBvZiB0aGUgbWFjcm8gWFhYICh3aGVyZSB4eHgKCT0gc2NuaHN6LCBmaWxoc3osIHJlbHN6LCBhb3V0c3osIGV0YykKCgkgKiBjb2Zmc3dhcC5oOiBEaXR0by4KCQoyMDAwLTAxLTEzICBOaWNrIENsaWZ0b24gIDxuaWNrY0BjeWdudXMuY29tPgoKCSogZWxmMzItYXJtLmggKGVsZjMyX3RodW1iX3RvX2FybV9zdHViKTogRml4IG9mZnNldCBpbiBicmFuY2ggdG8KCWludGVyd29yayB0aHVtYiB0byBhcm0gc3R1Yi4KCjIwMDAtMDEtMTMgIFRpbW90aHkgV2FsbCAodHdhbGxAdGlhYy5uZXQ+CgoJKiBhcmNodXJlcy5jIChiZmRfb2N0ZXRzX3Blcl9ieXRlKTogTmV3IGZ1bmN0aW9uOiBSZXR1cm4KCXRhcmdldCBieXRlIHNpemUuCgkoYmZkX2FyY2hfbWFjaF9vY3RldHNfcGVyX2J5dGUpOiBOZXcgZnVuY3Rpb246IFJldHVybiB0YXJnZXQKCWJ5dGUgc2l6ZS4KCgkqIHNlY3Rpb24uYzogRGlzdGluZ3Vpc2ggYmV0d2VlbiBvY3RldHMgYW5kIGJ5dGVzIGZvciB1c2FnZSBvZgoJX2Nvb2tlZF9zaXplLCAgX3Jhd19zaXplLCBhbmQgb3V0cHV0X29mZnNldC4gIENsYXJpZnkKCWRlc2NyaXB0aW9uIG9mIGJmZF9zZXRfc2VjdGlvbl9jb250ZW50cy4KCgkqIGJmZC1pbjIuaDogUmVnZW5lcmF0ZS4KCgkqIGNvZmZnZW4uYzogSW5kaWNhdGUgdGhhdCB0aGUgb2Zmc2V0IHBhcmFtZXRlciBpcyBpbiBieXRlcywgbm90CglvY3RldHMuCgkKCSogY29mZmxpbmsuYyAoYmZkX2NvZmZfbGlua19pbnB1dF9iZmQpOiBVc2UgYmZkX29jdGV0c19wZXJfYnl0ZQoJd2hlcmUgYXBwcm9wcmlhdGUgdG8gZ2V0IHRoZSBvY3RldCBvZmZzZXQgd2hlbiBjYWxsaW5nCgliZmRfc2V0X3NlY3Rpb25fY29udGVudHMuCgkoYmZkX2NvZmZfcmVsb2NfbGlua19vcmRlcik6IERpdHRvLgoJCgkqIGxpbmtlci5jIChiZmRfZ2VuZXJpY19yZWxvY19saW5rX29yZGVyKTogRGl0dG8uCgkoX2JmZF9kZWZhdWx0X2xpbmtfb3JkZXIpOiBEaXR0by4KCQoJKiByZWxvYy5jIChiZmRfcGVyZm9ybV9yZWxvY2F0aW9uKTogIERpc3Rpbmd1aXNoIGJldHdlZW4gb2N0ZXRzCglhbmQgYnl0ZXMuICBVc2Ugb2N0ZXRzIHdoZW4gaW5kZXhpbmcgaW50byBvY3RldCBkYXRhOyB1c2UgYnl0ZXMKCXdoZW4gY2FsY3VsYXRpbmcgdGFyZ2V0IGFkZHJlc3Nlcy4KCShiZmRfaW5zdGFsbF9yZWxvY2F0aW9uKTogRGl0dG8uCgkKCSogc3JlYy5jIChzcmVjX3dyaXRlX3NlY3Rpb24pOiBEaXR0by4KCQoyMDAwLTAxLTEzICBOaWNrIENsaWZ0b24gIDxuaWNrY0BjeWdudXMuY29tPgoKCSogY29mZi1tY29yZS5jIChDT0ZGX0RFRkFVTFRfU0VDVElPTl9BTElHTk1FTlRfUE9XRVIpOiBDaGFuZ2UgZnJvbQoJMyB0byAyLiAgVGhpcyBhbGxvd3MgNCBieXRlIHNpemVkIHNlY3Rpb25zLCB3aGljaCBpcyBuZWNlc3NhcnkgZm9yCglkbGx0b29sIHRvIGJ1aWxkIGZ1bmNpdG9uaW5nIERMTHMuCgoyMDAwLTAxLTEwICBQaGlsaXAgQmx1bmRlbGwgIDxwYkBmdXR1cmV0di5jb20+CgoJKiBjb25maWcuYmZkIChhcm0qLSotbGludXgtZ251Kik6IE1hdGNoIGluc3RlYWQgb2YgYXJtKi0qLWxpbnV4LWdudS4KCShhcm0qLSotY29uaXgqKTogTmV3IHRhcmdldC4KCjIwMDAtMDEtMTAgIEVnb3IgRHVkYSAgPGRlb0Bsb2dvcy1tLnJ1PgoKCSogY29uZmlnLmJmZDogSW5jbHVkZSBlbGYzMl9pMzg2IHZlY3RvciB0byB0YXJnZXQgbGlzdCBmb3IgY3lnd2luIAoJYW5kIG1pbmd3LgoJCgkqIGNvbmZpZy5pbjogVW5kZWZpbmUgSEFWRV9XSU4zMl9QU1RBVFVTX1QuCgkqIGNvbmZpZ3VyZS5pbjogVGVzdCBmb3Igc3RydWN0dXJlIHdpbjMyX3BzdGF0dXNfdCBpbgoJPHN5cy9wcm9jZnMuaD4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgoJCgkqIGVsZi5jIChlbGZjb3JlX2dyb2tfd2luMzJwc3RhdHVzKTogTmV3IGZ1bmN0aW9uOiBwcm9jZXNzCgl3aW4zMl9wc3RhdHVzX3Qgbm90ZXMgaW4gZWxmIGNvcmUgZmlsZS4KCShlbGZjb3JlX2dyb2tfbm90ZSk6IERldGVjdCB3aW4zMl9wc3RhdHVzIG5vdGVzLgoKMjAwMC0wMS0wMyAgTWFydGluIHYuIExvZXdpcyAgPGxvZXdpc0BpbmZvcm1hdGlrLmh1LWJlcmxpbi5kZT4KCgkqIGVsZmxpbmsuYyAoX2JmZF9lbGZfbGlua19yZWNvcmRfZHluYW1pY19zeW1ib2wpOiBQcm9jZXNzIHN5bWJvbAoJdmlzaWJpbGl0eS4KCSogZWxmbGluay5oIChlbGZfbGlua19hZGRfb2JqZWN0X3N5bWJvbHMpOiBDb21iaW5lIHZpc2liaWxpdGllcy4KCSogZWxmLmMgKGJmZF9lbGZfcHJpbnRfc3ltYm9sKTogSW50ZXJwcmV0IHN0X290aGVyIGFzIHZpc2liaWxpdHkuCgoxOTk5LTEyLTI5ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogZWxmbGluay5oIChiZmRfZWxmLHNpemVfZHluYW1pY19zZWN0aW9ucyk6IERvbid0IGV4cG9ydCBhbGwKCWlmIG5vIGR5bmFtaWMgc2VjdGlvbnMgY3JlYXRlZC4KCjE5OTktMTItMjcgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQGN5Z251cy5jb20+CgoJKiBwZWljb2RlLmggKHBlX2JmZF9vYmplY3RfcCk6IE9ubHkgZGVmaW5lIGZvciBQRSBmb3JtYXQKCXRhcmdldHMuIAoKMTk5OS0xMi0xNyAgTmljayBDbGlmdG9uICA8bmlja2NAY3lnbnVzLmNvbT4KCgkqIGNvZmYtaTM4Ni5jIChpM2NvZmZfb2JqZWN0X3ApOiBEZWxldGUuCgkoaTM4NmNvZmZfdmVjKTogUmVwbGFjZSByZWZlcmVuY2UgdG8gaTNjb2ZmX29iamVjdF9wIHdpdGggYQoJcmVmZXJlbmNlIHRvIGNvZmZfb2JqZWN0X3AuCgoJKiBjb2ZmLW1jb3JlLmMgKHBlX29iamVjdF9wKTogRGVsZXRlLgoKCSogcGVpY29kZS5oIChwZV9iZmRfb2JqZWN0X3ApOiBOZXcgZnVuY3Rpb246IERldGVjdCB0aGUKCXByZXNlbmNlIG9mIGEgUEUgZm9ybWF0IENPRkYgb2JqZWN0IGZpbGUuICBBbHNvIGRldGVjdCBhbmQKCXdhcm4gYWJvdXQgdGhlIHByZXNlbmNlIG9mIExJTks2IGZvcm1hdCBJbWFnZSBMaWJyYXJ5IEZvcm1hdAoJb2JqZWN0IGZpbGVzLgoJCjE5OTktMTItMTYgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQGN5Z251cy5jb20+CgoJKiBjb2ZmLWFybS5jIChOVU1fRUxFTSk6IE5ldyBtYWNyby4KCShOVU1fUkVMT0NTKTogTmV3IG1hY3JvOiBUaGUgbnVtYmVyIG9mIGtub3duIEFSTSByZWxvY3MuCgkoUlRZUEUySE9XVE8pOiBSZXR1cm4gTlVMTCBpZiB0aGUgcmVsb2MgdHlwZSBpcyBvdXQgb2YgcmFuZ2UuCgkoY29mZl9hcm1fcnR5cGVfdG9faG93dG8pOiAgUmV0dXJuIE5VTEwgaWYgdGhlIHJlbG9jIHR5cGUgaXMgb3V0CglvZiByYW5nZS4KCShiZmRfYXJtX3Byb2Nlc3NfYmVmb3JlX2FsbG9jYXRpb24pOiBQcm9kdWNlIGEgd2FybmluZyBtZXNzYWdlIGlmCglhbiBvdXQgb2YgcmFuZ2Ugc3ltYm9sIGluZGV4IGlzIGVuY291bnRlcmVkLgoKMTk5OS0xMi0xNCAgTmljayBDbGlmdG9uICA8bmlja2NAY3lnbnVzLmNvbT4KCgkqIGVsZmxpbmsuaCAoaXNfZ2xvYmFsX3N5bWJvbF9kZWZpbml0aW9uKTogTmV3IEZ1bmN0aW9uOiBSZXR1cm4KCXRydWUgaWZmIHRoZSBzeW1ib2wgaXMgYmVpbmcgZ2l2ZW4gYSBnbG9iYWwgZGVmaW5pdGlvbiBpbiB0aGlzCgliZmQuIAoJKGVsZl9saW5rX2lzX2RlZmluZWRfYXJjaGl2ZV9zeW1ib2wpOiBEbyBub3QgYm90aGVyIHByb2Nlc3NpbmcKCXN5bWJvbHMgZm9yIGFuIGFyY2hpdmUgZWxlbWVudCB0aGF0IGhhcyBhbHJlYWR5IGJlZW4gaW5jbHVkZWQKCWluIHRoZSBsaW5rLgoJVXNlIGlzX2dsb2JhbF9zeW1ib2xfZGVmaW5pdGlvbigpLgoJCjE5OTktMTItMDkgIEFuZHJldyBDYWduZXkgIDxjYWduZXlAY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy5iZmQ6IEFkZCBzdXBwb3J0IGZvciBzcGFyYy0qLW5ldGJzZGVsZiogYW5kCglzcGFyYy0qLW5ldGJzZGFvdXQqLgoKMTk5OS0xMi0xMyAgTmljayBDbGlmdG9uICA8bmlja2NAY3lnbnVzLmNvbT4KCgkqIGVsZmxpbmsuaCAoZWxmX2xpbmtfaXNfZGVmaW5lZF9hcmNoaXZlX3N5bWJvbCk6IENoZWNrIHRvIHNlZQoJaWYgdGhlIHN5bWJvbCBpcyBpbiB0aGUgY29tbW9uIHNlY3Rpb24uCgoxOTk5LTEyLTEwICBOaWNrIENsaWZ0b24gIDxuaWNrY0BjeWdudXMuY29tPgoKCSogZWxmbGluay5oIChlbGZfbGlua19pc19kZWZpbmVkX2FyY2hpdmVfc3ltYm9sKTogTmV3CglmdW5jdGlvbjogRGVjaWRlIGlmIGEgc3ltYm9sLCBpbiBhbiBhcmNoaXZlIG1hcCBpcyB0aGVyZQoJYmVjYXVzZSBpdCBpcyBkZWZpbmVkIGluIHRoZSBhcmNoaXZlIGVsZW1lbnQsIG9yIGJlY2F1c2UgaXQgaXMKCWp1c3QgYW5vdGhlciBjb21tb24gZGVjbGFyYXRpb24gb2YgaXQuCgkoZWxmX2xpbmtfYWRkX2FyY2hpdmVfc3ltYm9scyk6IFVzZQoJZWxmX2xpbmtfaXNfZGVmaW5lZF9hcmNoaXZlX3N5bWJvbCB0byBkZWNpZGUgaWYgYW4gYXJjaGl2ZQoJZWxlbWVudCBjb250YWluIGEgcmVmZXJlbmNlIHRvIGEgY29tbW9uIHN5bWJvbCBzaG91bGQgYmUKCWxpbmtlZCBpbiBvciBub3QuCgoxOTk5LTEyLTEwICBOaWNrIENsaWZ0b24gIDxuaWNrY0BjeWdudXMuY29tPgoKCSogZWxmbGluay5oOiBSZXZlcnQgcHJldmlvdXMgcGF0Y2guCgkqIHRhcmdldHMuYzogUmV2ZXJ0IHByZXZpb3VzIHBhdGNoLgoJKiBsaWJiZmQtaW4yLmg6IFJldmVydCBwcmV2aW91cyBwYXRjaC4KCSogbGliYmZkLmg6IFJldmVydCBwcmV2aW91cyBwYXRjaC4KCSogZWxmeHgtdGFyZ2V0Lmg6IFJldmVydCBwcmV2aW91cyBwYXRjaC4KCSogYXJjaGl2ZS5jOiBSZXZlcnQgcHJldmlvdXMgcGF0Y2guCgkqIGFvdXQtdGFyZ2V0Lmg6IFJldmVydCBwcmV2aW91cyBwYXRjaC4KCSogYW91dC10aWMzMC5oOiBSZXZlcnQgcHJldmlvdXMgcGF0Y2guCgkqIGJmZC5jOiBSZXZlcnQgcHJldmlvdXMgcGF0Y2guCgkqIGNvZmYtYWxwaGEuYzogUmV2ZXJ0IHByZXZpb3VzIHBhdGNoLgoJKiBjb2ZmLXJzNjAwMC5jOiBSZXZlcnQgcHJldmlvdXMgcGF0Y2guCgkqIGVsZjY0LW1pcHMuYzogUmV2ZXJ0IHByZXZpb3VzIHBhdGNoLgoJKiBpZWVlLmM6IFJldmVydCBwcmV2aW91cyBwYXRjaC4KCSogbGliZWNvZmYuaDogUmV2ZXJ0IHByZXZpb3VzIHBhdGNoLgoJKiBvYXN5cy5jOiBSZXZlcnQgcHJldmlvdXMgcGF0Y2guCgkqIHNvbS5jOiBSZXZlcnQgcHJldmlvdXMgcGF0Y2guCgkqIHZtcy5jOiBSZXZlcnQgcHJldmlvdXMgcGF0Y2guCgoxOTk5LTEyLTA5ICBOaWNrIENsaWZ0b24gIDxuaWNrY0BjeWdudXMuY29tPgoKCSogZWxmbGluay5oIChlbGZfbGlua19hZGRfYXJjaGl2ZV9zeW1ib2xzKTogQWRkIGFuIGFyY2hpdmUKCWVsZW1lbnQgZXZlbiBpZiBjb250YWlucyBhIHN5bWJvbCB3aGljaCBpcyBjdXJyZW50bHkgb25seQoJY29uc2lkZXJlZCB0byBiZSBhIGNvbW1vbi4KCgkqIHRhcmdldHMuYyAoc3RydWN0IGJmZF90YXJnZXQpOiBBZGQgbmV3IGZpZWxkCglfYmZkX2FsbG93X2NvbW1vbnNfaW5fYXJtYXAuCgkqIGJmZC1pbjIuaDpSZWdlbmVyYXRlLgoKCSogbGliYmZkLWluMi5oIChfYmZkX25vYXJjaGl2ZV9hbGxvd19jb21tb25zX2luX2FybWFwKToKCURlZmluZS4KCSAoX2JmZF9hcmNoaXZlX2JzZF9hbGxvd19jb21tb25zX2luX2FybWFwKTogRGVmaW5lLgoJKiBsaWJiZmQuaDogUmVnZW5lcmF0ZS4KCgkqIGVsZnh4LXRhcmdldC5oOiBJZiB1c2luZyBDT0ZGIGFyY2hpdmUgbWFwLCBvdmVycmlkZQoJZGVmaW5pdGlvbiBvZiBhbGxvd19jb21tb25zX2luX2FybWFwIGFuZCByZXBsYWNlIHdpdGgKCWJmZF9mYWxzZS4KCgkqIGFyY2hpdmUuYyAoYmZkX2NvbXB1dGVfYW5kX3dyaXRlX2FybWFwKTogRG8gbm90IHBsYWNlIGNvbW1vbgoJc3ltYm9scyBpbnRvIHRoZSBhcmNoaXZlIG1hcCB1bmxlc3MgX2JmZF9hbGxvd19jb21tb25zX2luX2FybWFwCglyZXR1cm5zIHRydWUuCgoJKiBhb3V0LXRhcmdldC5oIChNWV9hbGxvd19jb21tb25zX2luX2FybWFwKTogRGVmaW5lLgoJKiBhb3V0LXRpYzMwLmggKE1ZX2FsbG93X2NvbW1vbnNfaW5fYXJtYXApOiBEZWZpbmUuCgkqIGJmZC5jIChiZmRfYWxsb3dfY29tbW9uc19pbl9hcm1hcCk6IERlZmluZS4KCSogY29mZi1hbHBoYS5oIChhbHBoYV9lY29mZl9hbGxvd19jb21tb25zX2luX2FybWFwKTogRGVmaW5lLgoJKiBjb2ZmLXJzNjAwMC5oICh4Y29mZl9hbGxvd19jb21tb25zX2luX2FybWFwKTogRGVmaW5lLgoJKiBlbGY2NC1taXBzLmMgKGJmZF9lbGY2NF9hbGxvd19jb21tb25zX2luX2FybWFwKTogRGVmaW5lLgoJKiBpZWVlLmMgKGllZWVfZWNvZmZfYWxsb3dfY29tbW9uc19pbl9hcm1hcCk6IERlZmluZS4KCSogbGliZWNvZmYuaCAoX2JmZF9lY29mZl9hbGxvd19jb21tb25zX2luX2FybWFwKTogRGVmaW5lLgoJKiBvYXN5cy5jIChvYXN5c19hbGxvd19jb21tb25zX2luX2FybWFwKTogRGVmaW5lLgoJKiBzb20uYyAoc29tX2FsbG93X2NvbW1vbnNfaW5fYXJtYXApOiBEZWZpbmUuCgkqIHZtcy5jICh2bXNfYWxsb3dfY29tbW9uc19pbl9hcm1hcCk6IERlZmluZS4KCjE5OTktMTItMDcgIEppbSBCbGFuZHkgIDxqaW1iQGN5Z251cy5jb20+CgoJQWRkIHN1cHBvcnQgZm9yIFNTRSByZWdpc3RlcnMgaW4gRUxGIGNvcmUgZmlsZXMuCgkqIGVsZi5jIChlbGZjb3JlX21ha2Vfbm90ZV9wc2V1ZG9zZWN0aW9uKTogTmV3IGZ1bmN0aW9uLgoJKGVsZmNvcmVfZ3Jva19wcmZwcmVnKTogVXNlIGl0LgoJKGVsZmNvcmVfZ3Jva19wcnhmcHJlZyk6IE5ldyBmdW5jdGlvbi4KCShlbGZjb3JlX2dyb2tfbm90ZSk6IFJlY29nbml6ZSBMaW51eCBOVF9QUlhGUFJFRyBub3Rlcy4KCjE5OTktMTItMDMgIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5AemVtYnUuY29tPgoKCSogZWxmMzItbWlwcy5jIChtaXBzX2VsZl9jYWxjdWxhdGVfcmVsb2NhdGlvbik6IERpdmlkZSBSX01JUFNfUEMxNgoJdmFsdWUgYnkgNCBiZWZvcmUgc3RvcmluZyBpdCBiYWNrIGluIHRoZSBmaWVsZC4gIEZyb20KCUtvdW5kaW55YS4gSyA8a2tAZGRlb3JnLnNvZnQubmV0Pi4KClR1ZSBOb3YgMzAgMjI6NDE6MTQgMTk5OSAgSmVmZnJleSBBIExhdyAgKGxhd0BjeWdudXMuY29tKQoKCSogYXJjaHVyZXMuYyAoYmZkX21hY2hfYW0zMyk6IERlZmluZS4KCSogYmZkLWluMi5oOiBSZWJ1aWx0LgoJKiBjcHUtbTEwMzAwLmMgKGJmZF9hbTMzX2FyY2gpOiBBZGQgdG8gdGhlIG1uMTAzIGFyY2hpdGVjdHVyZSBsaXN0CgkqIGVsZi1tMTAzMDAuYyAobW4xMDMwMF9lbGZfcmVsYXhfc2VjdGlvbik6IEhhbmRsZSBhbTMzIGluc3RydWN0aW9ucy4KCShjb21wdXRlX2Z1bmN0aW9uX2luZm8pOiBIYW5kbGUgYWRkaXRpb25hbCByZWdpc3RlcnMgc2F2ZWQgYnkKCW1vdm0gb24gdGhlIGFtMzMuCgkoZWxmX21uMTAzMDBfbWFjaCk6IEhhbmRsZSBFX01OMTAzMDBfTUFDSF9BTTMzLgoJKF9iZmRfbW4xMDMwMF9lbGZfZmluYWxfd3JpdGVfcHJvY2Vzc2luZyk6IEhhbmRsZSBiZmRfbWFjaF9hbTMzLgoKMTk5OS0xMS0yOSAgSmltIEJsYW5keSAgPGppbWJAY3lnbnVzLmNvbT4KCgkqIGVsZi5jIChiZmRfZ2V0X2VsZl9waGRycywgYmZkX2dldF9lbGZfcGhkcl91cHBlcl9ib3VuZCk6IE5ldwoJZnVuY3Rpb25zLgoJKiBiZmQtaW4yLmggKGJmZF9nZXRfZWxmX3BoZHJzLCBiZmRfZ2V0X2VsZl9waGRyX3VwcGVyX2JvdW5kKTogTmV3CglkZWNsYXJhdGlvbnMuCgoxOTk5LTExLTI3ICBNaWNoYWVsIE1laXNzbmVyICA8bWVpc3NuZXJAY3lnbnVzLmNvbT4KCgkqIHJlbG9jLmMgKEJGRF9SRUxPQ19BTFBIQV9VU0VSX0xJVEVSQUwpOiBOZXcgcmVsb2NhdGlvbiBmb3IKCWludGVybmFsIHVzZSB3aXRoaW4gZ2FzIGZvciBhbHBoYSBleHBsaWNpdCByZWxvY2F0aW9ucy4KCShCRkRfUkVMT0NfQUxQSEFfVVNFUl9MSVRVU0VfQkFTRSk6IERpdHRvLgoJKEJGRF9SRUxPQ19BTFBIQV9VU0VSX0xJVFVTRV9CWVRPRkYpOiBEaXR0by4KCShCRkRfUkVMT0NfQUxQSEFfVVNFUl9MSVRVU0VfSlNSKTogRGl0dG8uCgkoQkZEX1JFTE9DX0FMUEhBX1VTRVJfR1BESVNQKTogRGl0dG8uCgkoQkZEX1JFTE9DX0FMUEhBX1VTRVJfR1BSRUxISUdIKTogRGl0dG8uCgkoQkZEX1JFTE9DX0FMUEhBX1VTRVJfR1BSRUxMT1cpOiBEaXR0by4KCgkqIGVsZjY0LWFscGhhLmMgKGVsZjY0X2FscGhhX3JlbG9jX21hcCk6IEFkZCBtYXBwaW5ncyBmb3IKCUJGRF9SRUxPQ19BTFBIQV9VU0VSXyouCgoJKiBiZmQtaW4yLmg6IFJlZ2VuZXJhdGUuCgkqIGxpYmJmZC5oOiBSZWdlbmVyYXRlLgoKMTk5OS0xMS0yNiAgRnJlZCBGaXNoICA8Zm5mQGN5Z251cy5jb20+CgoJKiBlbGYuYyAoZWxmY29yZV9yZWFkX25vdGVzKTogQWRkIHByb3RvdHlwZSBmb3Igc3RhdGljIGZ1bmN0aW9uLgoJKF9iZmRfZWxmX21ha2Vfc2VjdGlvbl9mcm9tX3BoZHIpOiBSZW5hbWVkIGZyb20gYmZkX3NlY3Rpb25fZnJvbV9waGRyLgoJKGJmZF9zZWN0aW9uX2Zyb21fcGhkcik6IFJlcGxhY2VtZW50IGZ1bmN0aW9uIHRoYXQgY2FsbHMKCV9iZmRfZWxmX21ha2Vfc2VjdGlvbl9mcm9tX3BoZHIgZm9yIGdlbmVyaWMgc2VnbWVudCB0eXBlcyBhbmQKCWJhY2tlbmQgZnVjbnRpb24gcG9pbnRlZCB0byBieSBlbGZfYmFja2VuZF9zZWN0aW9uX2Zyb21fcGhkciBmb3IKCWJhY2tlbmQgc3BlY2lmaWMgc2VnbWVudCB0eXBlcy4KCShfYmZkX2VsZmNvcmVfc2VjdGlvbl9mcm9tX3BoZHIpOiBSZW1vdmUgY2FsbCB0byBlbGZjb3JlX3JlYWRfbm90ZXMsCglub3cgY2FsbGVkIGJ5IF9iZmRfZWxmX21ha2Vfc2VjdGlvbl9mcm9tX3BoZHIuICBOb3RlIHRoYXQgdGhpcyBmdW5jCglpcyBub3cganVzdCBhIHN0dWIgYmV0d2VlbiB0aGUgY2FsbGVyIGFuZCBiZmRfc2VjdGlvbl9mcm9tX3BoZHIuCgkKCSogZWxmLWJmZC5oIChzdHJ1Y3QgZWxmX2JhY2tlbmRfZGF0YSk6IEFkZCBuZXcgZnVuY3Rpb24gcG9pbnRlcgoJZWxmX2JhY2tlbmRfc2VjdGlvbl9mcm9tX3BoZHIuCgkoZWxmX2JhY2tlbmRfc2VjdGlvbl9mcm9tX3BoZHIpOiBBZGQgcHJvdG90eXBlLgoJCgkqIGVsZnh4LXRhcmdldC5oIChlbGZfYmFja2VuZF9zZWN0aW9uX2Zyb21fcGhkcik6IERlZmluZSBkZWZhdWx0LgoJKGVsZk5OX2JlZCk6IEFkZCBlbGZfYmFja2VuZF9zZWN0aW9uX2Zyb21fcGhkci4KCjE5OTktMTEtMjUgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQGN5Z251cy5jb20+CgoJKiBjb2ZmLWFybS5jIChiZmRfYXJtX2dldF9iZmRfZm9yX2ludGVyd29ya2luZyk6ICBBZGQKCVNFQ19DT0RFIGFuZCBTRUNfUkVBRE9OTFkgZmxhZ3MgdG8gZ2x1ZSBzZWN0aW9ucy4KCgkqIGVsZjMyLWFybS5oIChiZmRfZWxmMzJfYXJtX2dldF9iZmRfZm9yX2ludGVyd29ya2luZyk6IEFkZAoJU0VDX0NPREUgYW5kIFNFQ19SRUFET05MWSBmbGFncyB0byBnbHVlIHNlY3Rpb25zLgoKMTk5OS0xMS0yMCAgTmljayBDbGlmdG9uICA8bmlja2NAY3lnbnVzLmNvbT4KCgkqIGNvZmYtbWNvcmUuYyAoY29mZl9tY29yZV9yZWxvY2F0ZV9zZWN0aW9uKTogRml4IHR5cG8gaW4gcHJldmlvdXMKCWRlbHRhLiAKCjE5OTktMTEtMTkgIENhdGhlcmluZSBNb29yZSAgPGNsbUBjeWdudXMuY29tPgoKCSogZWxmMzItbTY4ay5jIChlbGZfY3B1MzJfcGx0MF9lbnRyeSk6IEZpeCBlbmNvZGluZy4KCShlbGZfY3B1MzJfcGx0X2VudHJ5KTogTGlrZXdpc2UuCgoxOTk5LTExLTE4ICBOaWNrIENsaWZ0b24gIDxuaWNrY0BjeWdudXMuY29tPgoKCSogY29mZi1tY29yZS5jIChjb2ZmX21jb3JlX3J0eXBlX3RvX2hvd3RvKTogU3BlY2lhbCBjYXNlIGhhbmRsaW5nCglmb3IgUlZBIHJlbG9jcy4KCShjb2ZmX21jb3JlX3JlbG9jYXRlX3NlY3Rpb24pOiBJbml0aWFsaXNlIGFkZGVuZCB0byAwLgoJU3BlY2lhbCBjYXNlIHByb2Nlc3Npbmcgb2YgUlZBIHJlbG9jLgoKMTk5OS0xMS0xNyAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGVsZi1iZmQuaCAoc3RydWN0IGVsZl9iYWNrZW5kX2RhdGEpOiBSZW9yZGVyIGNvbGxlY3QgYW5kCgl0eXBlX2NoYW5nZV9vazsgYWRkIHNpZ25fZXh0ZW5kX3ZtYS4KCSogZWxmMzItbWlwcy5jIChlbGZfYmFja2VuZF9zaWduX2V4dGVuZF92bWEpOiBEZWZpbmUuCgkqIGVsZmNvZGUuaCAoZWxmX3N3YXBfc3ltYm9sX2luKTogTWluZCBiZS0+c2lnbl9leHRlbmRfdm1hLgoJKGVsZl9zd2FwX3NoZHJfaW4sIGVsZl9zd2FwX3BoZHJfaW4pOiBMaWtld2lzZS4KCSogZWxmeHgtdGFyZ2V0LmggKGVsZl9iYWNrZW5kX3NpZ25fZXh0ZW5kX3ZtYSk6IERlZmF1bHQuCgkoZWxmTk5fYmVkKTogRm9sbG93IHN0cnV0dXJlIGNoYW5nZXMuCgoxOTk5LTExLTA5ICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQHplbWJ1LmNvbT4KCgkqIGxpYmJmZC5jIChiZmRfcmVhZCk6IENoZWNrIHJlc3VsdCBvZiByZWFkIGFnYWluc3QgZGVzaXJlZCByZXN1bHQKCXVzaW5nICE9LCBub3QgPC4KCShfYmZkX2dlbmVyaWNfZ2V0X3NlY3Rpb25fY29udGVudHMpOiBTZXQgYmZkX2Vycm9yIGlmIHRoZSBzZWVrIGlzCglpbnZhbGlkIGNvbXBhcmVkIHRvIHRoZSBzZWN0aW9uIHNpemUuCgoJKiBpZWVlLmMgKGllZWVfc2x1cnBfZGVidWcpOiBHZXQgdGhlIGxlbmd0aCBvZiB0aGUgZGVidWcKCWluZm9ybWF0aW9uIHJpZ2h0IGlmIHRoZXJlIGlzIG5vIGRhdGEgcGFydC4KClR1ZSBOb3YgIDIgMDE6NDQ6NDEgMTk5OSAgSmVmZnJleSBBIExhdyAgKGxhd0BjeWdudXMuY29tKQoKCSogc29tLmMgKHNvbV9maXh1cF9mb3JtYXRzKTogSW1wcm92ZSBoYW5kbGluZyBvZiBSX0FVWF9VTldJTkQsCglSX0xJTkVUQUIsIFJfTElORVRBQl9FU0MsIGFuZCBSX0NPTU1FTlQuCgoxOTk5LTEwLTI4ICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQHplbWJ1LmNvbT4KCgkqIGVsZmxpbmsuaCAoZWxmX2JmZF9maW5hbF9saW5rKTogTWFrZSBsYXN0X2xvY2FsIHNpZ25lZC4KCjE5OTktMTAtMjcgIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5AemVtYnUuY29tPgoKCSogc3RhYnMuYyAoX2JmZF9saW5rX3NlY3Rpb25fc3RhYnMpOiBNYWtlIHN1cmUgLnN0YWJzdHIgc2VjdGlvbgoJc3RhcnRzIHdpdGggYSB6ZXJvLgoKU2F0IE9jdCAyMyAxNzozNjoxMiAxOTk5ICBBbmRyZXcgQ2FnbmV5ICA8Y2FnbmV5QGIxLmN5Z251cy5jb20+CgoJKiBhcmNodXJlcy5jOiBBZGQgZGVmaW5pdGlvbnMgYmZkX21hY2hfZDEwdiwgYmZkX21hY2hfZDEwdl90czIgYW5kCgliZmRfbWFjaF9kMTB2X3RzMy4KCSogY3B1LWQxMHYuYyAoZDEwdl90czNfaW5mbywgZDEwdl90czJfaW5mbyk6IEFkZC4KCSogYmZkLWluMi5oOiBSZWdlbmVyYXRlLgoJCjE5OTktMTAtMTUgIEFuZHJldyBIYWxleSAgPGFwaEBjeWdudXMuY29tPgoKCSogZHdhcmYxLmMgKHBhcnNlX2RpZSk6IEZhaWwgdG8gcGFyc2UgYSBkaWUgaWYgaXRzIGxlbmd0aCBpcyB6ZXJvLgoKU3VuIE9jdCAxNyAxNzoxOTowMCAxOTk5ICBKZWZmcmV5IEEgTGF3ICAobGF3QGN5Z251cy5jb20pCgoJKiBsaWJocHBhLmggKGJmZF9ocHBhX2luc24yZm10KTogQ2hhbmdlIHRvIHJldHVybiBhbiBpbnQuCgoxOTk5LTEwLTA4ICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQHplbWJ1LmNvbT4KCgkqIGVsZmxpbmsuaCAoZWxmX21lcmdlX3N5bWJvbCk6IFdoZW4gb3ZlcnJpZGluZyBhIHdlYWsgc3ltYm9sIHdpdGgKCWEgZGVmaW5lZCBzeW1ib2wgaW4gYSBzaGFyZWQgbGlicmFyeSwgY2xlYXIgdGhlIERFRl9EWU5BTUlDIGZsYWcKCXRvby4KCkZyaSBPY3QgIDggMTM6MDM6NDUgMTk5OSAgR2VvZmZyZXkgS2VhdGluZyAgPGdlb2Zma0BjeWdudXMuY29tPgoKCSogZWxmMzItbWlwcy5jIChtaXBzX2VsZl9jYWxjdWxhdGVfcmVsb2NhdGlvbik6IFJfTUlQU19MSVRFUkFMCglyZWxvY3MgYWxzbyBuZWVkIHRoZSBHUCB2YWx1ZS4KCShfYmZkX21pcHNfZWxmX3JlbG9jYXRlX3NlY3Rpb24pOiBIYW5kbGUgdW5wYWlyZWQgTE8xNiByZWxvY3MKCXByb3Blcmx5LiAgSGFuZGxlIHNpZ24tZXh0ZW5zaW9uIGZvciBSX01JUFNfNjQgY29ycmVjdGx5LiAgQ29ycmVjdAoJdGhlIEdQIHZhbHVlIGZvciBSX01JUFNfTElURVJBTCByZWxvY3MgdG9vLiAgSGFuZGxlCglSX01JUFNfNjQgcmVsb2NzIHByb3Blcmx5IG9uIGJpZy1lbmRpYW4gTUlQUy4KCShtaXBzX2VsZl9zaWduX2V4dGVuZCk6IEJlaGF2ZSBwcm9wZXJseSB3aXRoICdsb25nIGxvbmcnLgoJKG1pcHNfZWxmX2hpZ2hlc3QpOiBDb3JyZWN0IHR5cG8uCgpNb24gT2N0ICA0IDE3OjQ5OjQ1IDE5OTkgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQGN5Z251cy5jb20+CgoJKiBjcHUtbTMyci5jIChhcmNoX2luZm9fc3RydWN0KTogTmV3IHN0YXRpYyBnbG9iYWwuCgkoYmZkX20zMnJfYXJjaCk6IFJlZmVyIHRvIGl0LgoJKiBlbGYzMi1tMzJyLmMgKG0zMnJfZWxmX29iamVjdF9wKTogUmVjb2duaXplIEVfTTMyUlhfQVJDSC4KCShtMzJyX2VsZl9wcmludF9wcml2YXRlX2JmZF9kYXRhKTogRGl0dG8uCgkobTMycl9lbGZfZmluYWxfd3JpdGVfcHJvY2Vzc2luZyk6IEhhbmRsZSBiZmRfbWFjaF9tMzJyeC4KCSogYXJjaHVyZXMuYyAoYmZkX21hY2hfbTMycngpOiBEZWZpbmUgaXQuCgkqIGJmZC1pbjIuaDogUmVidWlsZC4KCjE5OTktMDktMjggIEZyZWQgRmlzaCAgPGZuZkBjeWdudXMuY29tPgoKCSogdGFyZ2V0cy5jIChjaXNjb19jb3JlX3ZlYyk6IFJlcGxhY2VkIHdpdGggdHdvIG5ldyB2ZWNzIC4uLgoJKGNpc2NvX2NvcmVfYmlnX3ZlYyk6IEFkZCBuZXcgYmlnZW5kaWFuIHZlYy4KCShjaXNjb19jb3JlX2xpdHRsZV92ZWMpOiBBZGQgbmV3IGxpdHRsZSBlbmRpYW4gdmVjLgoKCSogY2lzY28tY29yZS5jIChDUkFTSF9JTkZPKTogRml4ZWQgb2Zmc2V0IHJlcGxhY2VkIHdpdGggLi4uCgkoY3Jhc2hfaW5mb19sb2NzKTogQWRkIGFycmF5IG9mIHBvc3NpYmxlIG9mZnNldHMuCgkoTUFTS19BRERSKTogTWFzayB0byBhcHBseSB0byBjcmFzaCBpbmZvIG9mZnNldC4KCShjcmFzaGluZm9fZXh0ZXJuYWwpOiBBZGQgdGV4dGJhc2UsIGRhdGFiYXNlLCBic3NiYXNlIGFuZAoJdHVybiBpbnRvIGEgdHlwZWRlZi4KCShjaXNjb19jb3JlX2ZpbGVfdmFsaWRhdGUpOiBSZW5hbWVkIGZyb20gY2lzY29fY29yZV9maWxlX3AuCglNYW55IHNtYWxsIGNoYW5nZXMgdG8gYWNjb3VudCBmb3IgYWRkaXRpb25hbCBoYXJkd2FyZSB2ZXJzaW9ucy4KCVBpY2sgYSByZWFzb25hYmxlIHNpemUgZm9yICIucmVnIiBzZWN0aW9uLiAgQWRkIGEgIi5jcmFzaCIKCXNlY3Rpb24gdG8gYWxsb3cgYWNjZXNzIHRvIGNyYXNoaW5mb19leHRlcm5hbCBzdHJ1Y3QuCgkoY2lzY29fY29yZV9maWxlX3ApOiBOZXcgdmVyc2lvbiBvZiB0aGlzIGZ1bmN0aW9uIHRoYXQKCWl0ZXJhdGVzIG92ZXIgY3Jhc2hfaW5mb19sb2NzLCBjYWxsaW5nIGNpc2NvX2NvcmVfZmlsZV92YWxpZGF0ZS4KCShjaXNjb19jb3JlX3ZlYyk6IE9sZCBiaWcgZW5kaWFuIG9ubHkgdmVjIHJlcGxhY2VkIHdpdGggLi4uCgkoY2lzY29fY29yZV9iaWdfdmVjKTogQWRkIGJpZyBlbmRpYW4gdmVyc2lvbi4KCShjaXNjb19jb3JlX2xpdHRsZV92ZWMpOiBBZGQgbGl0dGxlIGVuZGlhbiB2ZXJzaW9uLgoKCSogY29uZmlndXJlLmluIChjaXNjb19jb3JlX3ZlYyk6IFNwbGl0IHRvIHR3byBuZXcgdmVjdG9ycyAuLi4KCShjaXNjb19jb3JlX2JpZ192ZWMpOiBOZXcgdGFyZ2V0IHZlY3Rvci4KCShjaXNjb19jb3JlX2xpdHRsZV92ZWMpOiBOZXcgdGFyZ2V0IHZlY3Rvci4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgoJKiBjb25maWcuYmZkICh0YXJnKTogRm9yIG02OCotKi1hb3V0KiB0YXJnLCBjaGFuZ2UgY2lzY29fY29yZV92ZWMKCXRvIGNpc2NvX2NvcmVfYmlnX3ZlYyBpbiB0YXJnX3NlbHZlY3MuCgoxOTk5LTA5LTI4ICBHZW9mZnJleSBLZWF0aW5nICA8Z2VvZmZrQGN5Z251cy5jb20+CgoJKiBlbGYzMi1taXBzLmMgKG1pcHNfZWxmX3JlbG9jYXRlX2hpMTYpOiBVbnVzZWQsIGRlbGV0ZS4KCShtaXBzX2VsZl9yZWxvY2F0ZV9nb3RfbG9jYWwpOiBVbnVzZWQsIGRlbGV0ZS4KCShtaXBzX2VsZl9yZWxvY2F0ZV9nbG9iYWxfZ290KTogVW51c2VkLCBkZWxldGUuCgoxOTk5LTA5LTI0ICBGcmVkIEZpc2ggIDxmbmZAY3lnbnVzLmNvbT4KCgkqIGVsZi5jIChiZmRfc2VjdGlvbl9mcm9tX3BoZHIpOiBBZGQgdHlwZW5hbWUgdmFyaWFibGUuICBVc2UgcF90eXBlCgl0byBpbml0aWFsaXplIGl0IHRvIHNvbWV0aGluZyBtZWFuaW5nZnVsLiAgVGhlbiB1c2UgaXQgdG8gZ2VuZXJhdGUKCW1vcmUgdXNlZnVsIHNlZ21lbnQgbmFtZXMuCgpTdW4gU2VwIDE5IDEyOjE2OjQ3IDE5OTkgIEplZmZyZXkgQSBMYXcgIChsYXdAY3lnbnVzLmNvbSkKCgkqIHNvbS5jIChOT19QQ1JFTF9NT0RFUyk6IERlZmluZSBpZiB0aGUgc3lzdGVtIGRvZXMgbm90IGRlZmluZQoJUl9TSE9SVF9QQ1JFTF9NT0RFLgoJKGhwcGFfc29tX2dlbl9yZWxvY190eXBlKTogSGFuZGxlIGJvdGggc2hvcnQgYW5kIGxvbmcgcGNyZWwgYnJhbmNoZXMuCgkoc29tX3dyaXRlX2ZpeHVwcyk6IEVsaW1pbmF0ZSByZWR1bmRhbnQgcGNyZWwgbW9kZSByZWxvY3MuICBIYW5kbGUKCVJfTE9OR19QQ1JFTF9NT0RFIGFuZCBSX1NIT1JUX1BDUkVMX01PREUKCSogbGliaHBwYS5oIChkaXNfYXNzZW1ibGVfMjIpOiBOZXcgZnVuY3Rpb24uCgkoYmZkX2hwcGFfaW5zbjJmbXQpOiBIYW5kbGUgbG9uZyBicmFuY2guCgoJKiBsaWJocHBhLmggKGJmZF9ocHBhX2luc24yZm10KTogRGVjb2RlIGFuZCBoYW5kbGUgZm9ybWF0cyBmb3VuZAoJaW4gUEEyLjAuCgoxOTk5LTA5LTE3ICBBbGFuIE1vZHJhICA8YWxhbkBzcHJpLmxldmVscy51bmlzYS5lZHUuYXU+CgoJKiBjb2ZmLWkzODYuYyAoY29mZl9pMzg2X3JlbG9jX3R5cGVfbG9va3VwKTogU3VwcG9ydCBCRkRfUkVMT0NfMTYsCglCRkRfUkVMT0NfMTZfUENSRUwsIEJGRF9SRUxPQ184LCBCRkRfUkVMT0NfOF9QQ1JFTCByZWxvY3MuCgkocmVsb2NfaG93dG9fdHlwZSBob3d0b190YWJsZSk6IFRpZHkgY29tbWVudHMgYW5kIHdoaXRlc3BhY2UuCgoxOTk5LTA5LTE3ICBOaWNrIENsaWZ0b24gIDxuaWNrY0BjeWdudXMuY29tPgoKCSogZWxmMzItYXJtLmggKGJmZF9lbGYzMl9hcm1fZ2V0X2JmZF9mb3JfaW50ZXJ3b3JraW5nKTogVW5kbwoJcHJldmlvdXMgZGVsdGEuICBTZXQgc2VjLT5nY19tYXJrIGluc3RlYWQuCgpUaHUgU2VwIDE2IDExOjIxOjEzIDE5OTkgIENhdGhlcmluZSBNb29yZSAgPGNsbUBjeWdudXMuY29tPgoKCSogZWxmMzItbTY4ay5jIChlbGZfY3B1MzJfcGx0MF9lbnRyeSk6IFVzZSBhMSBpbnN0ZWFkIG9mIGEwLgoJKGVsZl9jcHUzMl9wbHRfZW50cnkpOiBMaWtld2lzZS4KClRodSBTZXAgMTYgMTA6NDg6MTcgMTk5OSAgSmVmZnJleSBBIExhdyAgKGxhd0BjeWdudXMuY29tKQoKCSogZWxmLWhwcGEuaCAoZWxmX2hwcGFfZmluYWxfd3JpdGVfcHJvY2Vzc2luZyk6IFR1cm4gb24gVFJBUE5JTC4KCgkqIGVsZi1ocHBhLmggKGVsZl9ocHBhX2ZpbmFsX2xpbmspOiBJZiB1bmFibGUgdG8gZmluZCBfX2dwIGluIHRoZQoJc3ltYm9sIHRhYmxlLCB0aGVuIGp1c3QgY29tcHV0ZSBhIHN1aXRhYmxlIHZhbHVlIChidXQgZG8gbm90CgljcmVhdGUgYSBfX2dwIHN5bWJvbCkuCgoJKiBlbGYtaHBwYS5oIChlbGZfaHBwYV9yZWxvY2F0ZV9zZWN0aW9uKTogQWxsb3cgdW5kZWZpbmVkCglzeW1ib2xzIHdoZW4gYnVpbGRpbmcgc2hhcmVkIGxpYnJhcmllcy4KCShlbGZfaHBwYV9maW5hbF9saW5rX3JlbG9jYXRlKTogQ29ycmVjdCBoYW5kbGluZyBvZiBQQ1JFTAoJcmVsb2NhdGlvbnMgYWdhaW5zdCB1bmRlZmluZWQgc3ltYm9scy4KCjE5OTktMDktMTYgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQGN5Z251cy5jb20+CgoJKiBlbGYzMi1hcm0uaCAoYmZkX2VsZjMyX2FybV9nZXRfYmZkX2Zvcl9pbnRlcndvcmtpbmcpOiBNYXJrCglpbnRlcndvcmtpbmcgc2VjdGlvbnMgYXMgbGlua2VyIGNyZWF0ZWQgc28gdGhhdCB0aGV5IHdpbGwgbm90CgliZSByZW1vdmVkIGJ5IGdhcmJhZ2UgY29sbGVjdGlvbi4KCldlZCBTZXAgMTUgMDI6MzE6NTcgMTk5OSAgSmVmZnJleSBBIExhdyAgKGxhd0BjeWdudXMuY29tKQoKCSogZWxmLWhwcGEuaCAoZWxmX2hwcGFfZmluYWxfbGluayk6IFJldmFtcCBfX2dwIGhhbmRsaW5nLgoJKGVsZl9ocHBhX2ZpbmFsX2xpbmtfcmVsb2NhdGUpOiBDb25zaXN0ZW50bHkgY3JlYXRlIGFuIGFic29sdXRlCglhZGRyZXNzLCB0aGVuIHN1YnRyYWN0IG91dCB0aGUgdmFsdWUgb2YgX19ncC4KCjE5OTktMDktMTQgIE1pY2hhZWwgTWVpc3NuZXIgIDxtZWlzc25lckBjeWdudXMuY29tPgoKCSogY29uZmlndXJlLmluIChDYW5vbmljYWxpemF0aW9uIG9mIHRhcmdldCBuYW1lcyk6IFJlbW92ZSBhZGRpbmcKCSR7Q09ORklHX1NIRUxMfSBpbiBmcm9udCBvZiAkYWNfY29uZmlnX3N1Yiwgc2luY2UgYXV0b2NvbmZpZyAyLjE0CglnZW5lcmF0ZXMgJGFjX2NvbmZpZ19zdWIgd2l0aCBhICR7Q09ORklHX1NIRUxMfSBhbHJlYWR5LgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUuCgoxOTk5LTA5LTE0ICBOaWNrIENsaWZ0b24gIDxuaWNrY0BjeWdudXMuY29tPgoKCSogZWxmMzItbTMyci5jIChFTEZfTUFYUEFHRVNJWkUpOiBDaGFuZ2UgdG8gMHgxIChhdCByZXF1ZXN0IG9mCglNaXRzdWJpc2hpKS4gCgpNb24gU2VwIDEzIDIwOjAxOjQ3IDE5OTkgIEplZmZyZXkgQSBMYXcgIChsYXdAY3lnbnVzLmNvbSkKCgkqIGVsZi1ocHBhLmggKGVsZl9ocHBhX3JlY29yZF9zZWdtZW50X2FkZHJzKTogTmV3IGZ1bmN0aW9uLgoJKGVsZl9ocHBhX2ZpbmFsX2xpbmspOiBJbml0aWFsaXplIHRleHRfc2VnbWVudF9iYXNlIGFuZAoJZGF0YV9zZWdtZW50X2Jhc2UuCgkoZWxmX2hwcGFfZmluYWxfbGlua19yZWxvY2F0ZSk6IEhhbmRsZSBTRUdSRUwgcmVsb2NhdGlvbnMuCgoJKiBlbGYtaHBwYS5oIChlbGZfaHBwYV9maW5hbF9saW5rKTogUmVtb3ZlIHVudXNlZCB2YXJpYWJsZXMuCgkoZWxmX2hwcGFfZmluYWxfbGlua19yZWxvY2F0ZSk6IExpa2V3aXNlLgoJKGVsZl9ocHBhX3JlbG9jYXRlX2luc24pOiBMaWtld2lzZS4KCShlbGZfaHBwYV9yZWxvY2F0ZV9zZWN0aW9uKTogSW5pdGlhbGl6ZSBIT1dUTy4KCjE5OTktMDktMTMgIERvbm4gVGVycnkgIDxkb25uQGludGVyaXguY29tPgoKCSogY29mZmNvZGUuaCAoc3R5cF90b19zZWNfZmxhZ3MpOiBGdXJ0aGVyIHJlZmluZW1lbnQgb2YgQ09NREFUCgloYW5kbGluZyB0byBzdXBwb3J0IGJvdGggR05VIGFuZCBNUyBvYmplY3RzLgoKCSogY29mZmNvZGUuaCAoY29mZl93cml0ZV9vYmplY3RfY29udGVudHMpOiBEb24ndCBjaGVjayByZWxvY19jb3VudAoJd2hlbiBkZXRlcm1pbmluZyB3aGV0aGVyIHRvIHNldCBGX1JFTEZMRy4KCjE5OTktMDktMTMgIFBoaWxpcCBCbHVuZGVsbCAgPHBiQG5leHVzLmNvLnVrPgoKCSogZWxmMzItYXJtLmggKGVsZjMyX2FybV9maW5hbF9saW5rX3JlbG9jYXRlKTogRG9uJ3QgcmFuZ2UtY2hlY2sKCVBDMjQgcmVsb2NzIGlmIHRoZSB0YXJnZXQgaXMgYW4gdW5kZWZpbmVkIHdlYWsgc3ltYm9sLgoJKGFybV9hZGRfdG9fcmVsKTogRml4IGNvbXBpbGVyIHdhcm5pbmcuCgkoZWxmMzJfYXJtX3BsdDBfZW50cnkpOiBDb3JyZWN0IGNvbW1lbnRzLgoJCjE5OTktMDktMTMgIEFsYW4gTW9kcmEgIDxhbGFuQHNwcmkubGV2ZWxzLnVuaXNhLmVkdS5hdT4KCgkqIGVsZmNvZGUuaCAod3JpdGVfcmVsb2NzKTogQ2hlY2sgZm9yIHRoZV9iZmQgTlVMTCB3aGVuIGhhbmRsaW5nCglhbiBhYnNvbHV0ZSBzeW1ib2wgaW4gUkVMIHJlbG9jcy4KClN1biBTZXAgMTIgMjM6NDc6NTggMTk5OSAgSmVmZnJleSBBIExhdyAgKGxhd0BjeWdudXMuY29tKQoKCSogZWxmLWhwcGEuaCAoZWxmX2hwcGFfZmluYWxfbGlua19yZWxvY2F0ZSk6IEhhbmRsZSBTRUNSRUwzMi4KCVN0dWIgU0VHUkVMMzIuICBSZXR1cm4gYW4gZXJyb3IgZm9yIGFueSByZWxvY2F0aW9uIG5vdCBoYW5kbGVkLgoKMTk5OS0wOS0xMiAgSWFuIExhbmNlIFRheWxvciAgPGlhbkB6ZW1idS5jb20+CgoJKiBjb2ZmbGluay5jIChjb2ZmX2xpbmtfYWRkX3N5bWJvbHMpOiBMb29rIGZvciBzcGVjaWFsIE1TVkMgc3RyaW5nCgljb25zdGFudCBzeW1ib2xzLCBhbmQgYXZvaWQgbXVsdGlwbGUgZGVmaW5pdGlvbiBlcnJvcnMgb24gdGhlbS4KCjE5OTktMDktMTIgIERvbm4gVGVycnkgIDxkb25uQGludGVyaXguY29tPgoKCSogbGliYmZkLmMgKGJmZF9sb2cyKTogUmV3cml0ZSB0byBhdm9pZCBpbmZpbml0ZSBsb29wIGlmIG1vc3QKCXNpZ25pZmljYW50IGJpdCBpcyBzZXQuCgoxOTk5LTA5LTExICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQHplbWJ1LmNvbT4KCgkqIGNvZmYtcHBjLmMgKENPRkZfU0VDVElPTl9BTElHTk1FTlRfRU5UUklFUyk6IERlZmluZS4KCgkqIGVsZmNvZGUuaCAod3JpdGVfcmVsb2NzKTogSGFuZGxlIGFuIGFic29sdXRlIHN5bWJvbCBpbiBSRUwKCXJlbG9jcyBhcyB3ZSBkbyBmb3IgUkVMQSByZWxvY3MuCgoxOTk5LTA5LTExICBEb25uIFRlcnJ5ICA8ZG9ubkBpbnRlcml4LmNvbT4KCgkqIGxpYnBlaS5oIChfYmZkX3BlaV9maW5hbF9saW5rX3Bvc3RzY3JpcHQpOiBEZWNsYXJlLgoJKGNvZmZfZmluYWxfbGlua19wb3N0c2NyaXB0KTogRGVmaW5lLgoJKiBwZWlnZW4uYyAoX2JmZF9wZWlfc3dhcF9hb3V0aGRyX291dCk6IERvbid0IHNldCB2YWx1ZSBmb3IgZGF0YQoJZGlyZWN0b3J5IGVudHJpZXMgaGVyZS4KCShfYmZkX3BlaV9maW5hbF9saW5rX3Bvc3RzY3JpcHQpOiBOZXcgZnVuY3Rpb24uCgoJKiBwZWlnZW4uYyAoX2JmZF9wZWlfc3dhcF9zY25oZHJfb3V0KTogUmVtb3ZlIGNvZGUgd2hpY2ggc2V0cwoJc2VjdGlvbiBmbGFncyBiYXNlZCBvbiB0aGUgc2VjdGlvbiBuYW1lLgoKCSogcGVpY29kZS5oIChjb2ZmX3N3YXBfc2NuaGRyX2luKTogSWYgQ09GRl9JTUFHRV9XSVRIX1BFLCB0aGUKCWdldCB0aGUgb3ZlcmZsb3cgb2YgdGhlIHNfbmxubm8gZmllbGQgZnJvbSB0aGUgc19ucmVsb2MgZmllbGQuCgkqIHBlaWdlbi5jIChfYmZkX3BlaV9zd2FwX3Njbmhkcl9vdXQpOiBJZiBkb2luZyBhIGZpbmFsIGxpbmssIHN3YXAKCXRoZSBzX25sbm5vIG92ZXJmbG93IG9mIHRoZSAudGV4dCBzZWN0aW9uIGludG8gdGhlIHNfbnJlbG9jCglmaWVsZC4KCgkqIHBlaWdlbi5jIChhZGRfZGF0YV9lbnRyeSk6IERlY2xhcmUuCgkocGVpX3N3YXBfYW91dGhkcl9vdXQpOiBHZXQgaW1hZ2Ugc2l6ZSByaWdodC4gIFNldCBsaW5rZXIgdmVyc2lvbgoJbW9yZSBpbnR1aXRpdmVseS4KCShwZWlfc3dhcF9zY25oZHJfb3V0KTogVGVzdCBmb3IgVU5JTklUIHNlY3Rpb24sIG5vdCAuYnNzLgoJKHBlX3ByaW50X2lkYXRhKTogQ29kZSBjbGVhbnVwLCBwcmludCBtb3JlIGluZm8sIGdldCByaWQgb2YgKG5vdykKCWV4dHJhbmVvdXMgSW1hZ2VCYXNlLgoJKHBlX3ByaW50X2VkYXRhKTogTGlrZXdpc2UuCgkocGVfcHJpbnRfcGRhdGEpOiBMaWtld2lzZS4gIFByaW50IGV4Y2VwdGlvbiBlbnRyaWVzLgoJKHBlX3ByaW50X3JlbG9jKTogTGlrZXdpc2UuICBQcmludCBNSVBTX0pNUEFERFIuCgkodGJsKTogTWFrZSBjb25zdCwgYWRkICJVTktOT1dOIi4KCShfYmZkX3BlX3ByaW50X3ByaXZhdGVfYmZkX2RhdGFfY29tbW9uKTogUHJpbnQgdGltZXN0YW1wLgoJKF9iZmRfcGVfYmZkX2NvcHlfcHJpdmF0ZV9iZmRfZGF0YV9jb21tb24pOiBEb24ndCBjb3B5IGRlbGV0ZWQKCXNlY3Rpb24gZGF0YSBkaXJlY3RvcnkuCgkoX2JmZF9wZV9iZmRfY29weV9wcml2YXRlX3NlY3Rpb25fZGF0YSk6IENvcHkgcGVfZmxhZ3MuCgoJKiBsaWJwZWkuaCAoX2JmZF9wZV9iZmRfZ2V0X3N5bWJvbF9pbmZvKTogRGVjbGFyZS4KCSogcGVpZ2VuLmMgKF9iZmRfcGVfYmZkX2dldF9zeW1ib2xfaW5mbyk6IE5ldyBmdW5jdGlvbi4KCSogcGVpY29kZS5oIChjb2ZmX2dldF9zeW1ib2xfaW5mbyk6IERlZmluZS4KCgkqIGNvbmZpZy5iZmQgKGlbMzQ1Nl04Ni0qLWludGVyaXgqKTogU2V0IHRhcmdfY2ZsYWdzIHRvCgktRFNUUklDVF9QRV9GT1JNQVQuCgkqIGNvZmZjb2RlLmggKHN0eXBfdG9fc2VjX2ZsYWdzKTogQ2hlY2sgU1RSSUNUX1BFX0ZPUk1BVCByYXRoZXIKCXRoYW4gX19JTlRFUklYLgoJKGNvZmZfY2xhc3NpZnlfc3ltYm9sKTogUmUtcmV2ZXJ0IDE5OTktMDgtMDggcGF0Y2ggaWYKCVNUUklDVF9QRV9GT1JNQVQuCgoJKiBsaWJwZWkuaDogTmV3IGZpbGUsIGJyb2tlbiBvdXQgb2YgcGVpY29kZS5oLgoJKiBwZWlnZW4uYzogTmV3IGZpbGUsIGJyb2tlbiBvdXQgb2YgcGVpY29kZS5oLgoJKiBwZWljb2RlLmg6IEEgYnVuY2ggb2YgY29kZSBtb3ZlZCBvdXQgdG8gbGlicGVpLmggYW5kIHBlaWdlbi5jLgoJKiBjb25maWd1cmUuaW46IEFkZCBwZWlnZW4ubG8gdG8gbGlzdCBvZiBmaWxlcyByZXF1aXJlZCBmb3IgZWFjaAoJUEUgdGFyZ2V0LgoJKiBNYWtlZmlsZS5hbTogUmVidWlsZCBkZXBlbmRlbmNpZXMuCgkoQkZEMzJfQkFDS0VORFMpOiBBZGQgcGVpZ2VuLmxvLgoJKEJGRDMyX0JBQ0tFTkRTX0NGSUxFUyk6IEFkZCBwZWlnZW4uYy4KCShTT1VSQ0VfSEZJTEVTKTogQWRkIGxpYnBlaS5oLgoJKiBjb25maWd1cmUsIE1ha2VmaWxlLmluOiBSZWJ1aWxkLgoKCSogcGVpY29kZS5oIChjb2ZmX3N3YXBfc2NuaGRyX2luKTogRG9uJ3QgY2hlY2sgZm9yIGEgc3BlY2lhbAoJc2VjdGlvbiBuYW1lIG9mIF9CU1M7IGNoZWNrIElNQUdFX1NDTl9DTlRfVU5JTklUSUFMSVpFRF9EQVRBCglpbnN0ZWFkLiAgRG9uJ3QgY2xlYXIgdGhlIHNfcGFkZHIgZmllbGQgZm9yIGFuIHVuaW5pdGlhbGl6ZWQgZGF0YQoJc2VjdGlvbi4KCgkqIGNvZmZjb2RlLmggKGNvZmZfbWtvYmplY3RfaG9vayk6IFNldCB0aW1lc3RhbXAgZmllbGQgaW4KCWNvZmZfZGF0YV90eXBlIHRvIGZfdGltZGF0LgoJKiBwZWljb2RlLmggKHBlX21rb2JqZWN0X2hvb2spOiBMaWtld2lzZS4KCgkqIHBlaWNvZGUuaCAoY29mZl9zd2FwX2ZpbGVoZHJfaW4pOiBDaGVjayB0aGUgTlQgZXhlY3V0YWJsZSBtYWdpYwoJbnVtYmVyIGlmIENPRkZfSU1BR0VfV0lUSF9QRS4KCgkqIGNvZmZjb2RlLmggKGNvZmZfbWtvYmplY3RfaG9vayk6IElmIENPRkZfV0lUSF9QRSwgc2V0IEhBU19ERUJVRwoJdG8gdGhlIHJldmVyc2Ugb2YgSU1BR0VfRklMRV9ERUJVR19TVFJJUFBFRC4KCShjb2ZmX3dyaXRlX29iamVjdF9jb250ZW50cyk6IFNldCBJTUFHRV9GSUxFX0RFQlVHX1NUUklQUEVEIGlmCgl0aGVyZSBpcyBubyBTRUNfREVCVUdHSU5HIHNlY3Rpb24uCgkqIHBlaWNvZGUuaCAocGVfbWtvYmplY3RfaG9vayk6IFNldCBIQVNfREVCVUcgdG8gdGhlIHJldmVyc2Ugb2YKCUlNQUdFX0ZJTEVfREVCVUdfU1RSSVBQRUQuCgoJKiBwZS1pMzg2LmMgKENPRkZfTE9OR19GSUxFTkFNRVMpOiBEZWZpbmUuCgkoQ09GRl9TRUNUSU9OX0FMSUdOTUVOVF9FTlRSSUVTKTogRGVmaW5lLgoJKiBwZWktaTM4Ni5jIChDT0ZGX0xPTkdfRklMRU5BTUVTKTogRGVmaW5lLgoJKENPRkZfU0VDVElPTl9BTElHTk1FTlRfRU5UUklFUyk6IERlZmluZS4KCgkqIGNvZmZzd2FwLmggKElNQUdFX0JBU0UpOiBEb24ndCBkZWZpbmUuCgkqIHBlaS1hcm0uYyAoSU1BR0VfQkFTRSk6IERvbid0IGRlZmluZS4KCSogcGVpLWkzODYuYyAoSU1BR0VfQkFTRSk6IERvbid0IGRlZmluZS4KCSogcGVpLW1jb3JlLmMgKElNQUdFX0JBU0UpOiBEb24ndCBkZWZpbmUuCgkqIHBlaS1wcGMuYyAoSU1BR0VfQkFTRSk6IERvbid0IGRlZmluZS4KCgkqIGNvZmZsaW5rLmMgKF9iZmRfY29mZl9saW5rX2lucHV0X2JmZCk6IFdoZW4gd3JpdGluZyBvdXQgYQoJc3ltYm9sLCBzd2l0Y2ggb24gdGhlIGNsYXNzIHdoZW4gZGV0ZXJtaW5pbmcgd2hldGhlciB0byBtb2RpZnkgdGhlCgl2YWx1ZS4gIEZvciBQRSwgZG9uJ3QgbW9kaWZ5IHRoZSB2YWx1ZSBvZiBhIENfRkNOIHN5bWJvbCBub3QgbmFtZWQKCS5iZi4KCgkqIGxpYmJmZC1pbi5oIChfYmZkX2Fib3J0KTogRGVjbGFyZS4KCShhYm9ydCk6IERlZmluZS4KCSogYmZkLmMgKF9iZmRfYWJvcnQpOiBOZXcgZnVuY3Rpb24uCgkqIGxpYmJmZC5oOiBSZWJ1aWxkLgoKCSogY29mZmNvZGUuaCAoY29mZl9zZXRfYWxpZ25tZW50X2hvb2spOiBEZWxldGUgUE9XRVJQQ19MRV9QRQoJc3BlY2lhbCBoYW5kbGluZy4KCgkqIGNvZmZsaW5rLmMgKF9iZmRfY29mZl9saW5rX2lucHV0X2JmZCk6IElmIGEgc3ltYm9sIGlzIHN0cmlwcGVkLAoJZG9uJ3Qgd3JpdGUgb3V0IHRoZSBhc3NvY2lhdGVkIGxpbmUgbnVtYmVycy4KCgkqIGNvZmZsaW5rLmMgKF9iZmRfY29mZl93cml0ZV9nbG9iYWxfc3ltKTogSGFuZGxlIHNlY3Rpb24gc3ltYm9sCglhdXggZW50cmllcy4KCgkqIGNvZmZsaW5rLmMgKGNvZmZfbGlua19hZGRfc3ltYm9scyk6IERvbid0IHdhcm4gYWJvdXQgc3ltYm9sIHR5cGUKCWNoYW5nZXMgd2hlbiB0aGUgYmFzZSB0eXBlIGlzIHVua25vd24uCgoJKiBjb2ZmZ2VuLmMgKGNvZmZfcHJpbnRfc3ltYm9sKTogRml4IHByaW50aW5nIG9mIGF1eCByZWNvcmQgZm9yCglmdW5jdGlvbiBzeW1ib2xzLgoKCSogc3ltcy5jIChCU0ZfREVCVUdHSU5HX1JFTE9DKTogRGVmaW5lLgoJKiBjb2ZmY29kZS5oIChjb2ZmX3NsdXJwX3N5bWJvbF90YWJsZSk6IElmIFBFLCBzZXQgQlNGX0RFQlVHR0lORwoJZm9yIENfRkNOL0NfRUZDTiBzeW1ib2xzLCBhbmQgc2V0IEJTRl9ERUJVR0dJTkdfUkVMT0MgZm9yIHN1Y2gKCXN5bWJvbHMgbmFtZWQgLmJmLgoJKiBjb2ZmZ2VuLmMgKGZpeHVwX3N5bWJvbF92YWx1ZSk6IFJlbG9jYXRlIGEgc3ltYm9sIHdoaWNoIGhhcwoJQlNGX0RFQlVHR0lOR19SRUxPQyBzZXQuCgkqIGJmZC1pbjIuaDogUmVidWlsZC4KCjE5OTktMDktMTAgIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5AemVtYnUuY29tPgoKCSogZWNvZmYuYyAoYmZkX2RlYnVnX3NlY3Rpb24pOiBVcGRhdGUgaW5pdGlhbGl6YXRpb24gZm9yIG5ldwoJY29tZGF0X2luZm8gZmllbGQuCgkoX2JmZF9lY29mZl9zdHlwX3RvX3NlY19mbGFncyk6IEFkZCBzZWN0aW9uIHBhcmFtZXRlci4KCSogbGliZWNvZmYuaCAoX2JmZF9lY29mZl9zdHlwX3RvX3NlY19mbGFncyk6IFVwZGF0ZSBkZWNsYXJhdGlvbi4KCjE5OTktMDktMTAgIEguSi4gTHUgIDxoamxAZ251Lm9yZz4KCgkqIGNvZmYtYWxwaGEuYyAoYWxwaGFfZWNvZmZfYmFja2VuZF9kYXRhKTogSW5pdGlhbGl6ZSB0aGUgbmV3CglfYmZkX2ZpbG5tbGVuIGZpZWxkLgoJKiBjb2ZmLW1pcHMuYyAobWlwc19lY29mZl9iYWNrZW5kX2RhdGEpOiBMaWtld2lzZS4KCkZyaSBTZXAgMTAgMDA6MzU6MTQgMTk5OSAgSmVmZnJleSBBIExhdyAgKGxhd0BjeWdudXMuY29tKQoKCSogZWxmLWhwcGEuaCAoZWxmX2hwcGFfZmluYWxfbGlua19yZWxvY2F0ZSk6IENyZWF0ZSAub3BkIGVudHJpZXMKCWZvciBGUFRSIHJlbG9jcyBpbnZvbHZpbmcgbG9jYWwgc3ltYm9scy4KCgkqIGVsZi1ocHBhLmggKGVsZl9ocHBhX2ZpbmFsX2xpbmtfcmVsb2NhdGUpOiBHZXQgdGhlIHJpZ2h0Cgl2YWx1ZSBmb3IgdGhlIHN0dWIgYWRkcmVzcyBpbiBhIGNhbGwgdGhyb3VnaCBhIHN0dWIuCglJbnN0YWxsIHRoZSB2YWx1ZSBmb3IgYSBsb2NhbCBzeW1ib2wgZGlyZWN0bHkgaW50byB0aGUgRExUCglpbnN0ZWFkIG9mIGdlbmVyYXRpbmcgYSByZWxvYy4gIENvcnJlY3RseSBoYW5kbGUgRlBUUjY0IHJlbG9jcy4KCgkqIGVsZi1ocHBhLmggKGVsZl9ocHBhX3VubWFya191c2VsZXNzX2R5bmFtaWNfc3ltYm9scyk6IE5ldyBmdW5jdGlvbi4KCShlbGZfaHBwYV9yZW1hcmtfdXNlbGVzc19keW5hbWljX3N5bWJvbHMpOiBTaW1pbGFybHkuCgkoZWxmX2hwcGFfZmluYWxfbGluayk6IENhbGwgdGhlbS4KCjE5OTktMDktMTAgIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5AemVtYnUuY29tPgoKCSogZWxmbGluay5oIChlbGZfZml4X3N5bWJvbF9mbGFncyk6IE1vdmUgd2Vha2RlZiBoYW5kbGluZyBoZXJlLi4uCgkoZWxmX2FkanVzdF9keW5hbWljX3N5bWJvbCk6IC4uLmZyb20gaGVyZS4KCldlZCBTZXAgIDggMTc6NTY6MTEgMTk5OSAgSmVmZnJleSBBIExhdyAgKGxhd0BjeWdudXMuY29tKQoKCSogZWxmLWhwcGEuaCAoZWxmX2hwcGFfaG93dG9fdGFibGUpOyBUaGVyZSBpcyBubyBESVI2NFdSLCBESVI2NERSCglyZWxvY2F0aW9uLCByZW1vdmUgdGhlbS4gIFNFQ1JFTDY0LT5MVE9GRjE2V0YuCgkoZWxmX2hwcGFfZmluYWxfbGlua19yZWxvY2F0ZSk6IEhhbmRsZSBMVE9GRiogcmVsb2NhdGlvbnMuICBIYW5kbGUKCURJUiogcmVsb2NhdGlvbnMuCgkoZWxmX2hwcGFfcmVsb2NhdGVfaW5zbik6IFNpbWlsYXJseS4KCgkqIGVsZi1ocHBhLmggKGVsZl9ocHBhX2ZpbmFsX2xpbmtfcmVsb2NhdGUpOiBIYW5kbGUgUExUT0ZGKiByZWxvY3MuCgkoZWxmX2hwcGFfcmVsb2NhdGVfaW5zbik6IFNpbWlsYXJseS4KCgkqIGVsZi1ocHBhLmggKGVsZl9ocHBhX2ZpbmFsX2xpbmtfcmVsb2NhdGUpOiBIYW5kbGUgRFBSRUwqIGFuZAoJR1BSRUwqIHJlbG9jYXRpb25zLgoJKGVsZl9ocHBhX3JlbG9jYXRlX2luc24pOiBTaW1pbGFybHkuCgoJKiBlbGYtaHBwYS5oIChlbGZfaHBwYV9saW5rX2ZpbmFsX3JlbG9jYXRlKTogRml4IHR5cG9zLgoJSGFuZGxlIExUT0ZGX1RQKiByZWxvY3MuCgkoZWxmX2hwcGFfcmVsb2NhdGVfaW5zbik6IFNpbWlsYXJseS4KCgkqIGVsZi1ocHBhLmggKGVsZl9ocHBhX2ZpbmFsX2xpbmtfcmVsb2NhdGUpOiBIYW5kbGUgUENSRUwqIHJlbG9jcy4KCUNvbnNpc3RlbnRseSBkZWFsIHdpdGggYWRkZW5kcy4gIEhhbmRsZSBETFRJTkQxNEYgYW5kIERMVFJFTDE0Ri4KCShlbGZfaHBwYV9yZWxvY2F0ZV9pbnNuKTogSGFuZGxlIFBDUkVMKiByZWxvY3MuCgoJKiBlbGYtaHBwYS5oIChlbGZfaHBwYV9maW5hbF9saW5rX3JlbG9jYXRlKTogSGFuZGxlIExUX09GRl9GUFRSKiwKCURJUjMyLCBESVI2NCBhbmQgRlBUUjY0IHJlbG9jYXRpb25zLgoJKGVsZl9ocHBhX3JlbG9jYXRlX2luc24pOiBTaW1pbGFybHkuCgoJKiBlbGYtaHBwYS5oIChlbGZfaHBwYV9maW5hbF9saW5rKTogU2V0IHRoZSB2YWx1ZSBvZiBfX2dwIHRvIHRoZSAgICAgICAgCglhZGRyZXNzIG9mIHRoZSAuUEFSSVNDLmdsb2JhbCBzZWN0aW9uLgoJKGVsZl9ocHBhX3JlbG9jYXRlX3NlY3Rpb24pOiBMb29rdXAgYW5kIHBhc3MgdGhlIFBBNjQgaGFzaAoJdGFibGUgZW50cnkgZWxmX2hwcGFfZmluYWxfbGlua19yZWxvY2F0ZS4gIERvIG5vdCBnaXZlIGEgd2FybmluZwoJZm9yIGEgcmVsb2MgYWdhaW5zdCBhbiBleHRlcm5hbCBzeW1ib2wgaWYgaXQgaGFzIGEgUEE2NCBoYXNoCgl0YWJsZSBlbnRyeS4KCShlbGZfaHBwYV9maW5hbF9saW5rX3JlbG9jYXRlKTogU2lnbmlmaWNhbnRseSByZXdvcmsuICBIYW5kbGUgICAKCURMVElORCByZWxvY2F0aW9ucy4gIENvbXB1dGUgdGhlIGZpbmFsIHZhbHVlIG9mIHRoZSByZWxvY2F0aW9uCgliZWZvcmUgcGFzc2luZyB0aGUgdmFsdWUgb2YgZWxmX2hwcGFfcmVsb2NhdGVfaW5zbi4KCShlbGZfaHBwYV9yZWxvY2F0ZV9pbnNuKTogUmV2YW1wIHRvIGhhbmRsZSBqdXN0IGJpdCB0aXdpZGRsaW5nCglyZWxvY2F0aW9uIHN1cHBvcnQuICBIYW5kbGUgRExUSU5EIHJlbG9jYXRpb24gcmVxdWVzdHMganVzdCBsaWtlCglETFRSRUwgcmVsb2NhdGlvbiByZXF1ZXN0cy4gIFNpbXBsaWZ5IGJyYW5jaCBoYW5kbGluZy4KCjE5OTktMDktMDggIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBjeWdudXMuY29tPgoKCSogZWxmLWhwcGEuaCAoZWxmX2hwcGFfcmVsb2NhdGVfc2VjdGlvbik6IENhdGNoIHByb2JsZW1zIHdpdGgKCW5vbi1hbGxvY2F0ZWQgc2VjdGlvbiBhcyBkb25lIGluIGkzODYgdmVyc2lvbi4KCShlbGZfaHBwYV9maW5hbF9saW5rX3JlbG9jYXRlKTogVW5jb21tZW50IFJfUEFSSVNDXzE0RiBpbiBzd2l0Y2gKCXN0YXRlbWVudCBzaW5jZSB0aGlzIGlzIG5vIGtub3cgcmVsb2NhdGlvbi4KClR1ZSBTZXAgIDcgMTc6MjU6MTIgMTk5OSAgSmVmZnJleSBBIExhdyAgKGxhd0BjeWdudXMuY29tKQoKCSogZWxmLWhwcGEuaCAoZWxmX2hwcGFfZmluYWxfbGlua19yZWxvY2F0ZSk6IEhhbmRsZSBETFRSRUwxNEYKCXJlbG9jcy4KCShlbGZfaHBwYV9yZWxvY2F0ZV9pbnNuKTogU2ltaWxhcmx5LgoKCSogZWxmLWhwcGEuaCAoZWxmX2hwcGFfZmluYWxfbGlua19yZWxvY2F0ZSk6IEhhbmRsZSBETFRSRUwxNFdSIGFuZAoJRExUUkVMMTRXRCByZWxvY3MuICAKCShlbGZfaHBwYV9yZWxvY2F0ZV9pbnNuKTogU2ltaWxhcmx5LgoKCSogZWxmLWhwcGEuaCAoZWxmX2hwcGFfZmluYWxfbGlua19yZWxvY2F0ZSk6IEhhbmRsZSBETFRSRUwxNFIgYW5kCglETFRSRUwyMUwgcmVsb2NzLiAgUGFzcyB0aGUgb3V0cHV0IGJmZCB0byBlbGZfaHBwYV9yZWxvY2F0ZV9pbnNuLgoJUGFzcyB0aGUgcmVsb2NhdGUgdHlwZSByYXRoZXIgdGhhbiB0aGUgaW5zbiBmb3JtYXQgdG8KCWVsZl9ocHBhX3JlbG9jYXRlX2luc24uCgkoZWxmX2hwcGFfcmVsb2NhdGVfaW5zbik6IE1ha2Ugc3dpdGNoIGRlcGVuZGVudCBvbiByZWxvY2F0aW9uIHR5cGUKCXJhdGhlciB0aGFuIHRoZSBvcGNvZGUuICBIYW5kbGUgRExUUkVMMjFMIGFuZCBETFRSRUwxNFIgcmVsb2NzLgoKMTk5OS0wOS0wNyAgSWFuIExhbmNlIFRheWxvciAgPGlhbkB6ZW1idS5jb20+CgoJKiBjb2ZmY29kZS5oIChiZmRfY29mZl9iYWNrZW5kX2RhdGEpOiBBZGQgX2JmZF9maWxubWxlbiBmaWVsZC4KCShiZmRfY29mZl9maWxubWxlbik6IERlZmluZS4KCShiZmRfY29mZl9zdGRfc3dhcF90YWJsZSk6IEluaXRpYWxpemUgbmV3IGZpZWxkLgoJKiBjb2ZmZ2VuLmMgKGNvZmZfZml4X3N5bWJvbF9uYW1lKTogVXNlIGJmZF9jb2ZmX2ZpbG5tbGVuIHJhdGhlcgoJdGhhbiBGSUxOTUxFTi4KCShjb2ZmX3dyaXRlX3N5bWJvbHMpOiBMaWtld2lzZS4KCShjb2ZmX2dldF9ub3JtYWxpemVkX3N5bXRhYik6IExpa2V3aXNlLgoJKiBjb2ZmLXNoLmMgKGJmZF9jb2ZmX3NtYWxsX3N3YXBfdGFibGUpOiBJbml0aWFsaXplIG5ldyBmaWVsZC4KCSogbGliY29mZi5oOiBSZWJ1aWxkLgoKMTk5OS0wOS0wNiAgRG9ubiBUZXJyeSAgPGRvbm5AaW50ZXJpeC5jb20+CgoJKiBjb2ZmY29kZS5oIChzb3J0X2J5X3NlY2FkZHIpOiBOZXcgc3RhdGljIGZ1bmN0aW9uIGlmCglDT0ZGX0lNQUdFX1dJVEhfUEUuCgkoY29mZl9jb21wdXRlX3NlY3Rpb25fZmlsZV9wb3NpdGlvbnMpOiBJZiBDT0ZGX0lNQUdFX1dJVEhfUEUsIHNvcnQKCXNlY3Rpb25zIGJ5IFZNQSB3aGVuIGFzc2lnbmluZyB0YXJnZXRfaW5kZXggdmFsdWVzLiAgQWx3YXlzIHNldAoJdmlydF9zaXplLgoKCSogbGliY29mZi1pbi5oIChzdHJ1Y3QgcGVpX3NlY3Rpb25fdGRhdGEpOiBBZGQgcGVfZmxhZ3MgZmllbGQuCgkqIGNvZmZjb2RlLmggKGNvZmZfc2V0X2FsaWdubWVudF9ob29rKSBbQ09GRl9XSVRIX1BFIHZlcnNpb25dOiBTZXQKCXBlX2ZsYWdzIGZpZWxkLgoJKiBsaWJjb2ZmLmg6IFJlYnVpbGQuCgoJKiBjb2ZmY29kZS5oIChjb2ZmX3NldF9jdXN0b21fc2VjdGlvbl9hbGlnbm1lbnQpOiBBZGQgY29uc3QgdG8KCWRlY2xhcmF0aW9uIHRvIG1hdGNoIGRlZmluaXRpb24uCgkoY29mZl93cml0ZV9vYmplY3RfY29udGVudHMpOiBEb24ndCBzZXQgRl9BUjMyVyhSKT8gaWYKCUNPRkZfV0lUSF9QRS4KCgkqIGNvZmYtaTM4Ni5jIChpbl9yZWxvY19wKTogQWRkIGRlY2xhcmF0aW9uLgoJKGkzODZjb2ZmX3ZlYyk6IFNpbXBsaWZ5IGluaXRpYWxpemF0aW9uIG9mCglhcHBsaWNhdGlvbl9zZWN0aW9uX2ZsYWdzLgoKCSogY29mZmNvZGUuaCAoc2VjX3RvX3N0eXBfZmxhZ3MpOiBXcml0ZSBzZXBhcmF0ZSBDT0ZGX1dJVEhfUEUKCXZlcnNpb24uICBNb3ZlIENPRkZfV0lUSF9QRSBzcGVjaWZpYyBjb2RlIHRvIG5ldyB2ZXJzaW9uLgoJKHN0eXBlX3RvX3NlY19mbGFncyk6IExpa2V3aXNlLiAgQWRkIHNlY3Rpb24gcGFyYW1ldGVyLgoJKiBjb2ZmZ2VuLmMgKG1ha2VfYV9zZWN0aW9uX2Zyb21fZmlsZSk6IFNldCB0YXJnZXRfaW5kZXggYmVmb3JlCgljYWxsaW5nIHN0eXBfdG9fc2VjX2ZsYWdzLiAgUGFzcyBzZWN0aW9uIHRvIHN0eXBfdG9fc2VjX2ZsYWdzLgoJKiBsaWJjb2ZmLmg6IFJlYnVpbGQuCgoJKiBzeW1zLmMgKHN0dCk6IEFkZCBzb21lIFBFL1BFSSBzZWN0aW9uIG5hbWVzLgoJKGJmZF9kZWNvZGVfc3ltY2xhc3MpOiBSZXR1cm4gJ3cnLCBub3QgJ1UnLCBmb3IgYSB3ZWFrIHVuZGVmaW5lZAoJc3ltYm9sLgoJKGJmZF9zeW1ib2xfaW5mbyk6IENoZWNrIGZvciAndycuCgoJKiBzZWN0aW9uLmMgKHN0cnVjdCBiZmRfY29tZGF0X2luZm8pOiBEZWZpbmUuCgkoYXNlY3Rpb24pOiBBZGQgY29tZGF0IGZpZWxkLgoJKFNURF9TRUNUSU9OKTogSW5pdGlhbGl6ZSBjb21kYXQgZmllbGQuCgkoYmZkX21ha2Vfc2VjdGlvbl9hbnl3YXkpOiBMaWtld2lzZS4KCSogYmZkLWluMi5oOiBSZWJ1aWxkLgoKMTk5OS0wOS0wNiAgQW5kcmVhcyBTY2h3YWIgIDxzY2h3YWJAc3VzZS5kZT4KCgkqIGVsZmxpbmsuaCAoZWxmX2xpbmtfYWRkX29iamVjdF9zeW1ib2xzKTogQ29weSBOT05fR09UX1JFRiBmbGFnCgl0byB2ZXJzaW9uIHN5bWJvbHMuCgoxOTk5LTA5LTA2ICBOaWNrIENsaWZ0b24gIDxuaWNrY0BjeWdudXMuY29tPgoKCSogZWxmbGluay5oIChlbGZfZ2NfcmVjb3JkX3Z0ZW50cnkpOiBVc2UgYmZkX3ptYWxsb2MgYW5kCgliZmRfcmVhbGxvYyBpbnN0ZWFkIG9mIGNhbGxvYyBhbmQgcmVhbGxvYy4KCjE5OTktMDktMDQgIFN0ZXZlIENoYW1iZXJsYWluICA8c2FjQHBvYm94LmNvbT4KCgkqIGNwdS1wai5jOiBOZXcgZmlsZS4KCSogZWxmMzItcGouYzogTmV3IGZpbGUuCgkqIGNvbmZpZy5iZmQgKHBqKik6IE5ldyBjcHUuCgkocGotKi0qLCBwamwtKi0qKTogTmV3IHRhcmdldHMuCgkqIGNvbmZpZ3VyZS5pbiAoYmZkX2VsZjMyX3BqX3ZlYyk6IE5ldyB0YXJnZXQgdmVjdG9yLgoJKGJmZF9lbGYzMl9wamxfdmVjKTogTmV3IHRhcmdldCB2ZWN0b3IuCgkqIGFyY2h1cmVzLmMgKGJmZF9hcmNoX3BqKTogRGVmaW5lLgoJKiBlbGYuYyAocHJlcF9oZWFkZXJzKTogSGFuZGxlIGJmZF9hcmNoX3BqLgoJKiByZWxvYy5jOiBEZWZpbmUgQkZEX1JFTE9DX1BKXyogcmVsb2NhdGlvbnMuCgkqIHRhcmdldHMuYyAoYmZkX2VsZjMyX3BqX3ZlYywgYmZkX2VsZjMyX3BqbF92ZWMpOiBEZWNsYXJlIGFuZCBhZGQKCXRvIHRhcmdldCB2ZWN0b3IgbGlzdC4KCSogTWFrZWZpbGUuYW06IFJlYnVpbGQgZGVwZW5kZW5jaWVzLgoJKEFMTF9NQUNISU5FUyk6IEFkZCBjcHUtcGoubG8uCgkoQUxMX01BQ0hJTkVTX0NGSUxFUyk6IEFkZCBjcHUtcGouYy4KCShCRkQzMl9CQUNLRU5EUyk6IEFkZCBlbGYzMi1wai5sby4KCShCRkQzMl9CQUNLRU5EU19DRklMRVMpOiBBZGQgZWxmMzItcGouYy4KCSogY29uZmlndXJlLCBNYWtlZmlsZS5pbiwgYmZkLWluMi5oLCBsaWJiZmQuaDogUmVidWlsZC4KCjE5OTktMDktMDQgIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5AemVtYnUuY29tPgoKCSogZWxmLWJmZC5oIChFTEZfTElOS19OT05fR09UX1JFRik6IERlZmluZS4KCSogZWxmbGluay5oIChlbGZfYWRqdXN0X2R5bmFtaWNfc3ltYm9sKTogQ29weSBSRUZfUkVHVUxBUl9OT05XRUFLCglhbmQgTk9OX0dPVF9SRUYgZnJvbSB3ZWFrIGRlZmluZWQgc3ltYm9sIHRvIHJlYWwgc3ltYm9sLgoJKiBlbGYzMi1pMzg2LmMgKGVsZl9pMzg2X2NoZWNrX3JlbG9jcyk6IFNldCBOT05fR09UX1JFRi4KCShlbGZfaTM4Nl9hZGp1c3RfZHluYW1pY19zeW1ib2wpOiBJZiBOT05fR09UX1JFRiBpcyBub3Qgc2V0LCBkb24ndAoJY3JlYXRlIGEgQ09QWSByZWxvYy4KCSogZWxmMzItc3BhcmMuYyAoZWxmMzJfc3BhcmNfY2hlY2tfcmVsb2NzKTogU2V0IE5PTl9HT1RfUkVGLgoJKGVsZjMyX3NwYXJjX2FkanVzdF9keW5hbWljX3N5bWJvbCk6IElmIE5PTl9HT1RfUkVGIGlzIG5vdCBzZXQsCglkb24ndCBjcmVhdGUgYSBDT1BZIHJlbG9jLgoKMTk5OS0wOS0wMyAgSWFuIExhbmNlIFRheWxvciAgPGlhbkB6ZW1idS5jb20+CgoJKiBlbGZsaW5rLmggKGVsZl9iZmRfZmluYWxfbGluayk6IFdoZW4gY291bnRpbmcgcmVsb2NhdGlvbnMsIGRvbid0Cgljb3VudCB0aG9zZSBpbiBzZWN0aW9ucyB3ZSBhcmUgbm90IGluY2x1ZGluZyBpbiB0aGUgbGluay4KClRodSBTZXAgIDIgMTc6NDE6MjAgMTk5OSAgSmVmZnJleSBBIExhdyAgKGxhd0BjeWdudXMuY29tKQoKCSogZWxmbGluay5oIChlbGZfbGlua19hZGRfb2JqZWN0X3N5bWJvbHMpOiBXb3JrIGFyb3VuZCBib2d1cyBTSF9MSU5LCglmaWVsZCBpbiBocHV4MTEgc2hhcmVkIGxpYnJhcmllcy4KCjE5OTktMDktMDIgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQGN5Z251cy5jb20+CgoJKiBlbGZsaW5rLmggKGVsZl9nY19yZWNvcmRfdnRlbnRyeSk6IEZpeCBtZW1vcnkgbGVhay4KCldlZCBTZXAgIDEgMTM6MzQ6MjkgMTk5OSAgSmVmZnJleSBBIExhdyAgKGxhd0BjeWdudXMuY29tKQoKCSogZWxmLWhwcGEuaCAoZWxmX2hwcGFfYWRkX3N5bWJvbF9ob29rKTogTmV3IGZ1bmN0aW9uLgoJKGVsZl9ocHBhX2ZpbmFsX2xpbmssIGVsZl9ocHBhX3JlbG9jYXRlX3NlY3Rpb24pOiBMaWtld2lzZS4KCShlbGZfaHBwYV9maW5hbF9saW5rX3JlbG9jYXRlLCBlbGZfaHBwYV9yZWxvY2F0ZV9pbnNuKTogTGlrZXdpc2UuCgoxOTk5LTA4LTMxICBBbGV4YW5kcmUgUGV0aXQtQmlhbmNvICA8YXBiaWFuY29AY3lnbnVzLmNvbT4KCgkqIGVsZmxpbmsuaCAocmVjb3JkX2xpbmtfYXNzaWdubWVudCk6IFdoZW4gcG9zc2libGUsIGtlZXAgdGhlCglvcmlnaW5hbCB0eXBlIG9mIHRoZSBzeW1ib2wuCgpNb24gQXVnIDMwIDE1OjI2OjQ4IDE5OTkgIEplZmZyZXkgQSBMYXcgIChsYXdAY3lnbnVzLmNvbSkKCgkqIGVsZi1ocHBhLmggKF9iZmRfZWxmX2hwcGFfZ2VuX3JlbG9jX3R5cGUpOiBBbGxvdyBib3RoCglSX1BBUklTQ19ESVIzMiBhbmQgUl9QQVJJU0NfRElSNjQgcmVnYXJkbGVzcyBvZiBob3cgdGhlCgl0b29scyB3ZXJlIGNvbmZpZ3VyZWQuCgkqIGVsZjMyLWhwcGEuaCAoX2JmZF9lbGYzMl9ocHBhX2dlbl9yZWxvY190eXBlKTogRGVjbGFyZS4KCjE5OTktMDgtMjYgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBlbGYzMi1taXBzLmMgKF9iZmRfbWlwc19lbGZfY2hlY2tfcmVsb2NzKTogRG9uJ3QgYWxsb2NhdGUgbG9jYWwKCUdPVCBlbnRyaWVzIGZvciBHT1QxNiByZWxvY2F0aW9uczsgdGhleSdyZSBub3QgcmVxdWlyZWQuCgoxOTk5LTA4LTI0ICBOaWNrIENsaWZ0b24gIDxuaWNrY0BjeWdudXMuY29tPgoKCUZyb20gYSBwYXRjaCBzdWJtaXR0ZWQgYnkgUm9sYW5kIE1jR3JhdGggIDxyb2xhbmRAYmFhbHBlcmF6aW0uZnJvYi5jb20+CgoJKiBjb25maWcuYmZkIChhcm0tKi1uZXRic2QqKTogTmV3IHRhcmdldC4KCSogY29uZmlndXJlLmluIChhcm1uZXRic2RfdmVjKTogTmV3IHRhcmdldCB2ZWN0b3IuCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZQoJKiB0YXJnZXRzLmMgKGJmZF90YXJnZXRfdmVjdG9yKTogQWRkICZhcm1uZXRic2RfdmVjLgoKCSogTWFrZWZpbGUuYW0gKEJGRDMyX0JBQ0tFTkRTKTogQWRkIGFybW5ldGJzZC5sby4KCShBTExfTUFDSElORVNfQ0ZJTEVTKTogQWRkIGFybW5ldGJzZC5jLgoJKGFybW5ldGJzZC5sbyk6IE5ldyBydWxlIHdpdGggZGVwcy4KCSogTWFrZWZpbGUuaW46IFJlZ2VuZXJhdGUuCgkKCSogYXJtbmV0YnNkLmM6IE5ldyBmaWxlOiAgRGVmaW5pdGlvbnMgc3BlY2lmaWMgdG8gYXJtLW5ldGJzZAoJdGFyZ2V0LiAKClR1ZSBBdWcgMjQgMDA6MjU6NTggMTk5OSAgSmVmZnJleSBBIExhdyAgKGxhd0BjeWdudXMuY29tKQoKCSogc29tLmMgKHNvbV9zbHVycF9zeW1ib2xfdGFibGUpOiBGaXggdHlwbyBpbiBjb21tZW50LgoKRnJpIEF1ZyAyMCAxNzowMToyMyAxOTk5ICBKZWZmcmV5IEEgTGF3ICAobGF3QGN5Z251cy5jb20pCgoJKiBlbGYtaHBwYS5oIChlbGZfaHBwYV9mYWtlX3NlY3Rpb25zKTogQ29tcHV0ZSBzZWN0aW9uIGluZGljZXMKCWhlcmUgaW5zdGVhZCBvZiB1c2luZyBlbGZfc2VjdGlvbl9kYXRhLi4uCgoxOTk5LTA4LTE5ICBOaWNrIENsaWZ0b24gIDxuaWNrY0BjeWdudXMuY29tPgoKCSogY29mZi1tY29yZS5jIChtY29yZV9lbWl0X2Jhc2VfZmlsZV9lbnRyeSk6IE5ldyBmdW5jdGlvbjogIEVtaXQKCXJlbG9jYXRpb25zIGludG8gdGhlIGJhc2UgZmlsZS4KCShjb2ZmX21jb3JlX3JlbG9jYXRlX3NlY3Rpb24pOiBDYWxsIG1jb3JlX2VtaXRfYmFzZV9maWxlX2VudHJ5IGlmCgl3ZSBhcmUgYnVpbGRpbmcgYSBiYXNlIGZpbGUuCgoxOTk5LTA4LTE5ICBOaWNrIENsaWZ0b24gIDxuaWNrY0BjeWdudXMuY29tPgoKCSogZWxmMzItYXJtLmggKGFybV9hZGRfdG9fcmVsKTogTmV3IGZ1bmN0aW9uLiAgQWRkIGEgdmFsdWUgdG8KCWEgUkVMIHN0eWxlIHJlbG9jLgoJKGVsZjMyX2FybV9yZWxvY2F0ZV9zZWN0aW9uKTogVXNlIGFybV9hZGRfdG9fcmVsIHRvIGluY3JlbWVudAoJUkVMIHJlbG9jcyB3aGVuIHBlcmZvcm1pbmcgYSBwYXJ0aWFsIHJlbG9jYXRpb24uCgoxOTk5LTA4LTE4ICBEb25uIFRlcnJ5ICA8ZG9ubkBpbnRlcml4LmNvbT4KCgkqIGNvZmZsaW5rLmM6IE1vdmUgZGVmaW5pdGlvbnMgb2YgTl9UTUFTSywgZXQuIGFsLiwgb3V0IG9mCglfYmZkX2NvZmZfbGlua19pbnB1dF9iZmQgaW50byB0b3AgbGV2ZWwuCgoJKiBjb2ZmLWkzODYuYyAoY29mZl9pMzg2X3JlbG9jKTogSGFuZGxlIFJfSU1BR0VCQVNFLgoJKFJUWVBFMkhPV1RPKTogUmV0dXJuIE5VTEwgaWYgcmVsb2MgdHlwZSBpcyBvdXQgb2YgcmFuZ2UuCgkoY29mZl9pMzg2X3J0eXBlX3RvX2hvd3RvKTogTGlrZXdpc2UuCgkqIGNvZmZjb2RlLmggKGNvZmZfc2x1cnBfc3ltYm9sX3RhYmxlKTogQ2hhbmdlIGEgLTIgdG8gTl9ERUJVRy4KCUNvbXBsZXRlbHkgaWdub3JlIHN5bWJvbHMgd2hpY2ggYXJlIGFsbCB6ZXJvLgoJKGR1bW15X3JlbG9jMTZfZXN0aW1hdGUpOiBBZGQgcmV0dXJuIDAuCgkqIGNvZmZsaW5rLmMgKF9iZmRfY29mZl9saW5rX2lucHV0X2JmZCk6IFJlbmFtZSBpbm5lciBzY29wZQoJdmFyaWFibGUgY29weSB0byBuYW1lX2NvcHkgdG8gYXZvaWQgc2hhZG93aW5nIG91dGVyIHNjb3BlCgl2YXJpYWJsZS4KCSogbGliY29mZi1pbi5oIChjb2ZmX2RhdGFfdHlwZSk6IENoYW5nZSByYXdfc3ltZW50X2NvdW50IGZpZWxkCglmcm9tIHVuc2lnbmVkIGludCB0byB1bnNpZ25lZCBsb25nLiAgQWRkIHRpbWVzdGFtcCBmaWVsZC4KCSogbGliY29mZi5oOiBSZWJ1aWxkLgoKMTk5OS0wOC0xNyAgSC5KLiBMdSAgPGhqbEBnbnUub3JnPgoKCSogZWxmMzItaHBwYS5jIChiZmRfZWxmMzJfYmZkX2lzX2xvY2FsX2xhYmVsX25hbWUpOiBGaXggdHlwbyBpbgoJbWFjcm8gZGVmaW5pdGlvbi4KCjE5OTktMDgtMTcgIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5AemVtYnUuY29tPgoKCSogZWxmMzItbWlwcy5jIChfYmZkX21pcHNfZWxmX2FkZF9zeW1ib2xfaG9vayk6IFNldCBCU0ZfRFlOQU1JQwoJZm9yIHNwZWNpYWwgc2VjdGlvbiBzeW1ib2xzLgoJKiBlbGZsaW5rLmggKGVsZl9tZXJnZV9zeW1ib2wpOiBJZiB3ZSBoYXZlIG5vIG9sZCBCRkQsIGNoZWNrCglCU0ZfRFlOQU1JQyBvbiB0aGUgc2VjdGlvbiBzeW1ib2wgdG8gc2VlIHdoZXRoZXIgdGhlIG9sZCBCRkQgaXMKCWR5bmFtaWMuCgoxOTk5LTA4LTE1ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogZWxmMzItbWlwcy5jIChtaXBzX2VsZl9jYWxjdWxhdGVfcmVsb2NhdGlvbik6IEZpeCB1bmZvcnR1bmF0ZQoJY29pbmNpZGVuY2Ugb2YgdmFyaWFibGUgbmFtZXMgYmV0d2VlbiBvbGQgYW5kIG5ldyBjb2RlLgoKMTk5OS0wOC0xMiAgTmljayBDbGlmdG9uICA8bmlja2NAY3lnbnVzLmNvbT4KCgkqIGVsZjMyLWFybS5oIChlbGYzMl9hcm1fdG9fdGh1bWJfc3R1Yik6ICBNYWtlICdvZmZzZXQnIHBhcmFtZXRlcgoJaW50byBhIGJmZF92bWEgYW5kICdhZGRlbmQnIHBhcmFtZXRlciBhICdiZmRfc2lnbmVkX3ZtYScuCgkoZWxmMzJfdGh1bWJfdG9fYXJtX3N0dWIpOiAgTWFrZSAnb2Zmc2V0JyBwYXJhbWV0ZXIgaW50byBhIGJmZF92bWEKCWFuZCAnYWRkZW5kJyBwYXJhbWV0ZXIgYSAnYmZkX3NpZ25lZF92bWEnLgoJKGVsZjMyX2FybV9maW5hbF9saW5rX3JlbG9jYXRlKTogRG8gbm90IGludm9sdmUgc3R1YnMgaW4KCVJfQVJNX1RITV9QQzIyIHJlbG9jcyByZWxhdGl2ZSB0byBzZWN0aW9uIHN5bWJvbHMsIHRoZXkgYXJlIGxvbmcKCWp1bXBzLCBub3QgZnVuY3Rpb24gY2FsbHMuCgoxOTk5LTA4LTExICBSb2JpbiBGYXJpbmUgPGFkdmFuY0BkaWFsLmV1bmV0LmNoPgoKCSogZWxmMzItYXJtLmggKGVsZjMyX2FybV9maW5hbF9saW5rX3JlbG9jYXRlKTogQ2hlY2sgZm9yIG92ZXJmbG93CglpbiBSX0FSTV9QQzI0IHJlbG9jcy4KClR1ZSBBdWcgMTAgMTI6NDg6MDkgMTk5OSAgSmVmZnJleSBBIExhdyAgKGxhd0BjeWdudXMuY29tKQoKCSogZWxmLWhwcGEuaCAoZWxmX2hwcGFfZmFrZV9zZWN0aW9ucyk6IE5ldyBmdW5jdGlvbi4KCSogZWxmMzItaHBwYS5jIChlbGZfYmFja2VuZF9mYWtlX3NlY3Rpb25zKTogRGVmaW5lLgoKCSogZWxmLWhwcGEuaCAoZWxmX2hwcGFfZmluYWxfd3JpdGVfcHJvY2Vzc2luZyk6IFVwZGF0ZSBmb3IKCXJlY2VudCBjaGFuZ2VzIHRvIHRoZSBhcmNoX2luZm8gc3RydWN0dXJlLgoKCSogZWxmLWhwcGEuaCAoX2JmZF9lbGZfaHBwYV9nZW5fcmVsb2NfdHlwZSk6IEhhbmRsZQoJUl9IUFBBX1NFR0JBU0UgYW5kIFJfSFBQQV9TRUdSRUwzMi4KCSogY3B1LWhwcGEuYyAoYmZkX2hwcGEyMHdfYXJjaCk6IE5ldyBlbnRyeSBpbiBhcmNoaXRlY3R1cmUgaW5mbwoJbGlzdC4KClR1ZSBBdWcgMTAgMDA6MzQ6MjkgMTk5OSAgTWFyayBQLiBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCSAgICAgICAgICAgICAgICAgIFJhbGYgQmFlY2hsZSA8cmFsZkB1bmkta29ibGVuei5kZT4KCgkqIGVsZjMyLW1pcHMuYyAoX2JmZF9taXBzX2VsZl9zaXplX2R5bmFtaWNfc2VjdGlvbnMpOiBBbHdheXMKCW91dHB1dCBEVF9NSVBTX0dPVFNZTS4KCShfYmZkX21pcHNfZWxmX2ZpbmlzaF9keW5hbWljX3NlY3Rpb25zKTogVXNlIHRoZSBzYW1lIHZhbHVlIGFzCglEVF9NSVBTX1NZTVRBQk5PIGlmIHRoZXJlIGFyZSBubyBnbG9iYWwgR09UIHN5bWJvbHMuCgpUdWUgQXVnIDEwIDAwOjIxOjA4IDE5OTkgIE1hcmsgUC4gTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBlbGYzMi1taXBzLmMgKG1pcHNfZWxmX2NyZWF0ZV9keW5hbWljX3JlbG9jYXRpb24pOiBDaGFuZ2UKCXByb3RvdHlwZS4gIEhhbmRsZSBsb2NhbCBzeW1ib2xzLiAgQWRkIGNvbW1lbnRhcnkuCgkobWlwc19lbGZfY2FsY3VsYXRlX3JlbG9jYXRpb24pOiBBZGp1c3QgYWNjb3JkaW5nbHkuCgkoX2JmZF9taXBzX2VsZl9jaGVja19yZWxvY3MpOiBIYW5kbGUgbG9jYWwgc3ltYm9scyBpbiBSX01JUFNfMzIKCXJlbG9jYXRpb25zLiAKCQoJKiBlbGZsaW5rLmggKGVsZl9iZmRfZmluYWxfbGluayk6IFR3ZWFrIGxhc3QgY2hhbmdlLgoKMTk5OS0wOC0wOSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGVsZmxpbmsuaCAoZWxmX2xpbmtfc2l6ZV9yZWxvY19zZWN0aW9uKTogVXNlIHRoZSBjb3VudHMgaW4gdGhlCgllbGYtc2VjdGlvbiBkYXRhIHRvIGFsbG9jYXRlIGp1c3QgdGhlIHJpZ2h0IGFtb3VudCBvZiByZWxvY2F0aW9uCglzcGFjZS4gIERvbid0IGFsbG9jYXRlIHRoZSBoYXNoIHNwYWNlIHR3aWNlLgoJKGVsZl9iZmRfZmluYWxfbGluayk6IENhbGN1bGF0ZSB0aGUgYW1vdW50IG9mIHNwYWNlIHRvIGFsbG9jYXRlIGluCgllYWNoIHJlbG9jYXRpb24gc2VjdGlvbi4KCk1vbiBBdWcgIDkgMTc6Mzc6MzAgMTk5OSAgSmVmZnJleSBBIExhdyAgKGxhd0BjeWdudXMuY29tKQoKCSogZWxmLWhwcGEuaCAoX2JmZF9lbGZfaHBwYV9nZW5fcmVsb2NfdHlwZSwgY2FzZSAzMik6IFdoZW4gaW4KCTY0Yml0IG1vZGUsIGdlbmVyYXRlIGEgc2VjdGlvbiByZWxhdGl2ZSByZWxvY2F0aW9uIGZvciBhIDMyYml0Cgl3aWRlIHJlbG9jYXRpb24uCgkoZWxmX2hwcGFfaXNfbG9jYWxfbGFiZWxfbmFtZSk6IE5ldyBmdW5jdGlvbi4KCSogZWxmMzItaHBwYS5jIChlbGZfaHBwYV9pc19sb2NhbF9sYWJlbF9uYW1lKTogRGVsZXRlZC4gIFRvIGJlCglzaGFyZWQgYmV0d2VlbiAzMmJpdCBhbmQgNjRiaXQgcG9ydC4KCjE5OTktMDgtMDkgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBlbGYzMi1taXBzLmMgKGVsZl9taXBzX2hvd3RvX3RhYmxlKTogRml4IHNyY19tYXNrIGZvcgoJUl9NSVBTX0dPVDE2IGFuZCBSX01JUFNfQ0FMTDE2LgoJKG1pcHNfZWxmX2dvdDE2X2VudHJ5KTogVXNlIG1pcHNfZWxmX2hpZ2ggdG8gY2FsY3VsYXRlIHRoZSB2YWx1ZQoJdG8gdXNlIHdoZW4gbG9va2luZyBmb3IgYSBwcmVleGlzdGluZyBHT1QgZW50cnkuCgoxOTk5LTA4LTA5ICBKYWt1YiBKZWxpbmVrICA8ampAdWx0cmEubGludXguY3o+CgoJKiBlbGY2NC1zcGFyYy5jIChzcGFyYzY0X2VsZl9yZWxvY2F0ZV9zZWN0aW9uKTogQmFjayBvdXQgcGFydCBvZgoJdGhlIFNlcC4gNHRoLCAxOTk4IGNoYW5nZS4gIGdsaWJjIDIuMC54IGR5bmFtaWMgbGlua2VyIGhhZCBidWcsCglub3QgYmludXRpbHMuCgkqIGVsZjMyLXNwYXJjLmMgKGVsZjMyX3NwYXJjX3JlbG9jYXRlX3NlY3Rpb24pOiBMaWtld2lzZS4KCjE5OTktMDgtMDkgIEdlb2ZmIEtlYXRpbmcgIDxnZW9mZmtAY3lnbnVzLmNvbT4KCgkqIGVsZmxpbmsuaCAoZWxmX2xpbmtfb3V0cHV0X2V4dHN5bSk6IERvbid0IG91dHB1dCBhIHdlYWsKCXJlZmVyZW5jZSB0byBhbiB1bmRlZmluZWQgc3ltYm9sIGp1c3QgYmVjYXVzZSBpdCB3YXMgZGVmaW5lZCB3ZWFrCglpbiBhIHNoYXJlZCBvYmplY3QuCgoxOTk5LTA4LTA5ICBFbGkgWmFyZXRza2lpICA8ZWxpekBpcy5lbHRhLmNvLmlsPgoKCSogY29mZmdlbi5jIChjb2ZmX2ZpbmRfbmVhcmVzdF9saW5lKTogV2hlbiBsb29raW5nIGZvciBmaWxlLCB1c2UKCWxhc3QgYmVzdCBtYXRjaCByYXRoZXIgdGhhbiBmaXJzdC4gIElmIGFkZHJlc3MgaXMgYmV5b25kIGxhc3QgbGluZQoJbnVtYmVyIHJlY29yZCwgZG9uJ3QgcmV0dXJuIHRoZSBsYXN0IGxpbmUgYXMgdGhlIGNvcnJlY3QgdmFsdWUuCgoxOTk5LTA4LTA4ICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQHplbWJ1LmNvbT4KCgkqIHNlY3Rpb24uYyAoU0VDX1NNQUxMX0RBVEEpOiBSZW5hbWUgZnJvbSBTRUNfU0hPUlQuCgkqIGJmZC1pbjIuaDogUmVidWlsZC4KCjE5OTktMDgtMDggIE1hcmsgRWxicmVjaHQgIDxzbm93YmFsbDNAYmlnZm9vdC5jb20+CgoJKiBsaWJjb2ZmLWluLmggKHN0cnVjdCBjb2ZmX3NlY3Rpb25fYWxpZ25tZW50X2VudHJ5KTogRGVmaW5lLgoJKiBjb2ZmY29kZS5oIChjb2ZmX3NldF9jdXN0b21fc2VjdGlvbl9hbGlnbm1lbnQpOiBOZXcgc3RhdGljCglmdW5jdGlvbi4KCShjb2ZmX3NlY3Rpb25fYWxpZ25tZW50X3RhYmxlKTogTmV3IHN0YXRpYyBhcnJheS4KCShjb2ZmX25ld19zZWN0aW9uX2hvb2spOiBVc2UgY29mZl9zZXRfY3VzdG9tZXJfc2VjdGlvbl9hbGlnbm1lbnQuCgkqIGNvZmYtZ28zMi5jIChDT0ZGX1NFQ1RJT05fQUxJR05NRU5UX0VOVFJJRVMpOiBEZWZpbmUuCgkqIGNvZmYtc3RnbzMyLmMgKENPRkZfU0VDVElPTl9BTElHTk1FTlRfRU5UUklFUyk6IERlZmluZS4KCSogbGliY29mZi5oOiBSZWJ1aWxkLgoKMTk5OS0wOC0wOCAgSWFuIExhbmNlIFRheWxvciAgPGlhbkB6ZW1idS5jb20+CgoJKiBNYWtlZmlsZS5hbTogUmVuYW1lIC5kZXAqIGZpbGVzIHRvIERFUCouICBDaGFuZ2UgREVQIHZhcmlhYmxlIHRvCglNS0RFUC4KCSogTWFrZWZpbGUuaW46IFJlYnVpbGQuCgoxOTk5LTA4LTA4ICBNdW1pdCBLaGFuICA8a2hhbkB4cmF5bGl0aC53aXNjLmVkdT4KCgkqIHNlY3Rpb24uYyAoU0VDX1NIQVJFRCk6IERlZmluZS4KCSogY29mZmNvZGUuaCAoc2VjX3RvX3N0eXBfZmxhZ3MpOiBIYW5kbGUgU0VDX1NIQVJFRC4KCShzdHlwX3RvX3NlY19mbGFncyk6IExpa2V3aXNlLgoJKiBwZWljb2RlLmggKGNvZmZfc3dhcF9zY25oZHJfb3V0KTogTGlrZXdpc2UuCgkqIGJmZC1pbjIuaDogUmVidWlsZC4KCjE5OTktMDgtMDggIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5AemVtYnUuY29tPgoKCSogY29mZmNvZGUuaCAoY29mZl9jbGFzc2lmeV9zeW1ib2wpOiBDb21tZW50IG91dCBwYXJ0IG9mCgkxOTk5LTA4LTA1IGNoYW5nZSB3aGljaCBicmVha3MgY3lnd2luIERMTHMuCgoJKiBhY2luY2x1ZGUubTQgKEJGRF9CSU5BUllfRk9QRU4pOiBDaGFuZ2UgLXdpbmRvd3MgdG8gLXdpbmRvd3MqLgoJKiBhY2xvY2FsLm00LCBjb25maWd1cmU6IFJlYnVpbGQuCgoxOTk5LTA4LTA2ICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQHplbWJ1LmNvbT4KCgkqIHNlY3Rpb24uYyAoZ2xvYmFsX3N5bXMpOiBPbmx5IGluaXRpYWxpemUgdW5pb24gZmllbGQgaWYKCV9fU1REQ19fLgoKMTk5OS0wOC0wNCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGVsZjMyLW1pcHMuYyAobWlwc19lbGZfZ290MTZfZW50cnkpOiBEb24ndCBtdWx0aXBseSBHT1QgaW5kZXggYnkKCXRoZSBzaXplIG9mIGEgR09UIGVudHJ5IGhlcmUuCgkobWlwc19lbGZfY2FsY3VsYXRlX3JlbG9jYXRpb24pOiBEb24ndCBjcmVhdGUgYSBsb2NhbCBHT1QgZW50cnkKCWZvciB0aGUgc3ltYm9sIGluIGEgR09UMTYgcmVsb2NhdGlvbjsganVzdCBmb3IgaXQncyBoaWdoLW9yZGVyIGJpdAoJKF9iZmRfbWlwc19lbGZfcmVsb2NhdGVfc2VjdGlvbik6IEZpeCB0aGlua28uCgoxOTk5LTA4LTA1ICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQHplbWJ1LmNvbT4KCglCYXNlZCBvbiBwYXRjaGVzIGZyb20gRG9ubiBUZXJyeSA8ZG9ubkBpbnRlcml4LmNvbT46CgkqIGNvZmZjb2RlLmggKGVudW0gY29mZl9zeW1ib2xfY2xhc3NpZmljYXRpb24pOiBEZWZpbmUuCgkoYmZkX2NvZmZfYmFja2VuZF9kYXRhKTogUmVuYW1lIF9iZmRfY29mZl9zeW1faXNfZ2xvYmFsIHRvCglfYmZkX2NvZmZfY2xhc3NpZnlfc3ltYm9sLiAgQ2hhbmdlIHJldHVybiB0eXBlLgoJKGJmZF9jb2ZmX2NsYXNzaWZ5X3N5bWJvbCk6IFJlbmFtZSBmcm9tIGJmZF9jb2ZmX3N5bV9pc19nbG9iYWwuCgkoY29mZl9zbHVycF9zeW1ib2xfdGFibGUpOiBVc2UgY29mZl9jbGFzc2lmeV9zeW1ib2wuCgkoY29mZl9jbGFzc2lmeV9zeW1ib2wpOiBOZXcgc3RhdGljIGZ1bmN0aW9uLgoJKGNvZmZfc3ltX2lzX2dsb2JhbCk6IE5ldmVyIGRlZmluZS4KCShiZmRfY29mZl9zdGRfc3dhcF90YWJsZSk6IEluaXRpYWxpemUgd2l0aCBjb2ZmX2NsYXNzaWZ5X3N5bWJvbC4KCSogY29mZmxpbmsuYyAoY29mZl9saW5rX2NoZWNrX2FyX3N5bWJvbHMpOiBVc2UKCWJmZF9jb2ZmX2NsYXNzaWZ5X3N5bWJvbCByYXRoZXIgdGhhbiBiZmRfY29mZl9zeW1faXNfZ2xvYmFsLgoJKGNvZmZfbGlua19hZGRfc3ltYm9scyk6IExpa2V3aXNlLgoJKF9iZmRfY29mZl9saW5rX2lucHV0X2JmZCk6IExpa2V3aXNlLgoJKiBjb2ZmLXNoLmMgKGJmZF9jb2ZmX3NtYWxsX3N3YXBfdGFibGUpOiBJbml0aWFsaXplIHdpdGgKCWNvZmZfY2xhc3NpZnlfc3ltYm9sLgoJKiBsaWJjb2ZmLmg6IFJlYnVpbGQuCgpXZWQgQXVnICA0IDE4OjA4OjA3IDE5OTkgIEplZmZyZXkgQSBMYXcgIChsYXdAY3lnbnVzLmNvbSkKCgkqIGxpYmhwcGEuaCAoUl9IUFBBX0xUUFNFTCwgUl9IUFBBX1JUUFNFTCk6IE5ldyBmaWVsZCBzZWxlY3RvcnMKCShlX2x0cHNlbCwgZV9ydHBzZWwpOiBTaW1pbGFybHkuCgoJKiBlbGYtaHBwYS5oIChfYmZkX2VsZl9ocHBhX2dlbl9yZWxvY190eXBlKTogSGFuZGxlIDIxYml0IGVfbHRwc2VsCglhbmQgMTRiaXQgZXJ0cHNlbC4gIEhhbmRsZSA2NGJpdCBwc2VsLgoKMTk5OS0wOC0wNCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGVsZjMyLW1pcHMuYyAoX2JmZF9taXBzX2VsZl9yZWxvY2F0ZV9zZWN0aW9uKTogVHdlYWsgSEkxNi9MTzE2CgloYW5kbGluZyBmb3IgUkVMIHJlbG9jYXRpb25zLiAgQW5kIG9ubHkgbGVmdC1zaGlmdCBSX01JUFMyNgoJcmVsb2NhdGlvbiBhZGRlbmRzIHdoZXJlIG5lY2Vzc2FyeS4KCjE5OTktMDgtMDMgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBlbGYzMi1taXBzLmMgKG1pcHNfZWxmX25leHRfbG8xNl9hZGRlbmQpOiBSZW5hbWUgdG8gLi4uCgkobWlwc19lbGZfbmV4dF9sbzE2X3JlbG9jYXRpb24pOiBEb24ndCBjb21wdXRlIHRoZSBhZGRlbmQgaGVyZS4KCUp1c3QgcmV0dXJuIHRoZSByZWxvY2F0aW9uIGZvdW5kLgoJKG1pcHNfZWxmX3JlbG9jYXRlX3NlY3Rpb24pOiBQdWxsIHRoZSBMTzE2IGFkZGVuZCBvdXQgb2YgdGhlCglzZWN0aW9uIGl0c2VsZiB3aGVuIHVzaW5nIFJFTCByZWxvY2F0aW9ucy4KCQoJKiBlbGYzMi1taXBzLmMgKG1pcHNfZWxmX2NhbGN1bGF0ZV9yZWxvY2F0aW9uKTogUmVzdG9yZQoJX0RZTkFNSUNfTElOSyBoYW5kbGluZyBhbmQgaGFuZGxpbmcgb2YgdW5kZWZpbmVkIHN5bWJvbHMgaW4gc2hhcmVkCglsaWJyYXJpZXMuCgoxOTk5LTA4LTAzICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQHplbWJ1LmNvbT4KCgkqIGVsZjMyLXBwYy5jIChwcGNfZWxmX3JlbG9jYXRlX3NlY3Rpb24pOiBEb24ndCB1c2UgdGhlIHJlbG9jYXRpb24KCXZhbHVlIG9mIGEgc3ltYm9sIGluIGEgU0VDX0RFQlVHR0lORyBzZWN0aW9uLiAgV2FybiB3aGVuIGRvaW5nIGEKCXJlbG9jYXRpb24gYWdhaW5zdCBhIHN5bWJvbCBpbiBhbiBpbnB1dCBzZWN0aW9uIHdpdGggbm8gb3V0cHV0CglzZWN0aW9uLiAgRnJvbSBEYW5pZWwgSmFjb2Jvd2l0eiA8ZHJvd0BmYWxzZS5vcmc+LgoKCSogY29mZi1zdGdvMzIuYyAoZ28zMl9zdHViYmVkX2NvZmZfb2JqZWN0X3ApOiBSZW1vdmU7IG5vdCB1c2VkLgoKCSogYWNpbmNsdWRlLm00IChCRkRfQ0NfRk9SX0JVSUxEKTogQ2hhbmdlIHRvIHVzZSBjb25mdGVzdCwgYW5kIHRvCglsb29rIGZvciBnZW5lcmF0ZWQgZmlsZSBjb3JyZWN0bHkuCgkqIGFjbG9jYWwubTQsIGNvbmZpZ3VyZTogUmVidWlsZC4KCjE5OTktMDgtMDIgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBlbGYzMi1taXBzLmMgKF9iZmRfbWlwc19lbGZfcmVsb2NhdGVfc2VjdGlvbik6IEhhbmRsZSBSX01JUFNfMjYKCWFuZCBSX01JUFMxNl8yNiByZWxvY2F0aW9ucyBjb3JyZWN0bHkgd2hlbiByZWxvY2F0aW5nLgoJKF9iZmRfbWlwc19lbGZfY2hlY2tfcmVsb2NzKTogRG9uJ3QgYXNzdW1lIHRoYXQgUl9NSVBTX0NBTExfSEkxNgoJYW5kIFJfTUlQU19DQUxMX0xPMTYgYXJlIGZvciBnbG9iYWwgc3ltYm9scy4KCQoxOTk5LTA4LTAyICBKYWt1YiBKZWxpbmVrICA8ampAdWx0cmEubGludXguY3o+CgoJKiBlbGZsaW5rLmggKGVsZl9iZmRfZmluYWxfbGluayk6IENvcHkgdGhlIHdob2xlIGlzeW0sIG5vdCBqdXN0Cglzb21lIGZpZWxkcy4KCSogZWxmNjQtc3BhcmMuYyAoc3BhcmM2NF9lbGZfb3V0cHV0X2FyY2hfc3ltcyk6IERlY2xhcmUgdXNlZAoJdmFyaWFibGVzIGFuZCBpbml0aWFsaXplIHRoZW0uCgoxOTk5LTA4LTAxICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogZWxmMzItbWlwcy5jIChfYmZkX21pcHNfZWxmX2ZpbmFsX2xpbmspOiBIYW5kbGUgdGhlIGNhc2Ugd2hlcmUKCXRoZXJlIGFyZSBubyBnbG9iYWwgc3ltYm9scyByZXF1aXJpbmcgR09UIGVudHJpZXMuCgkoX2JmZF9taXBzX2VsZl9zaXplX2R5bmFtaWNfc2VjdGlvbnMpOiBMaWtld2lzZS4KCShfYmZkX21pcHNfZWxmX2ZpbmlzaF9keW5hbWljX3N5bWJvbCk6IExpa2V3aXNlLgoJKF9iZmRfbWlwc19lbGZfZmluaXNoX2R5bmFtaWNfc2VjdGlvbnMpOiBMaWtld2lzZS4KCgkqIGVsZjMyLW1pcHMuYyAobWlwc19lbGZfY2FsY3VsYXRlX3JlbG9jYXRpb24pOiBVbmRlZmluZWQgd2VhawoJc3ltYm9scyBhcmUgY29uc2lkZXJlZCB0byBoYXZlIHRoZSB2YWx1ZSB6ZXJvLgoJKF9iZmRfbWlwc19lbGZfcmVsb2NhdGVfc2VjdGlvbik6IERvbid0IHRyeSB0byBwZXJmb3JtIGEKCXJlbG9jYXRpb24gZm9yIGFuIHVuZGVmaW5lZCBzeW1ib2wuCgkoX2JmZF9taXBzX2VsZl9jaGVja19yZWxvY3MpOiBBbGxvY2F0ZSBsb2NhdGUgR09UIHNwYWNlIGZvciBsb2NhbAoJR09UMTYgcmVsb2NhdGlvbnMuCgoxOTk5LTA3LTMwICBKYWt1YiBKZWxpbmVrICA8ampAdWx0cmEubGludXguY3o+CgoJKiBlbGY2NC1zcGFyYy5jIChzcGFyYzY0X2VsZl9idWlsZF9wbHQpOiBDb3NtZXRpYyBjaGFuZ2UgLSBBQkkKCXdhbnRzIGJhLGEscHQgJXhjYyBpbnN0ZWFkIG9mICVpY2MuCglFbWl0IGNvcnJlY3QgLlBMVDAtKC5QTFROKzQpIGluaXRpYWwgdmFsdWUgaW50byB0aGUgcG9pbnRlciBzbG90cwoJb2YgbGFyZ2UgUExUIGVudHJpZXMuCgkoc3BhcmM2NF9lbGZfcGx0X3B0cl9vZmZzZXQpOiBGaXggY2FsY3VsYXRpb24uCgkoc3BhcmM2NF9lbGZfZmluaXNoX2R5bmFtaWNfc3ltYm9sKTogTmVnYXRpdmUgdmFsdWUgb2YgUl9TUEFSQ19KTVBfU0xPVAoJYWRkZW5kIHNob3VsZCBiZSByZWxhdGl2ZSB0byBsb2FkIGFkZHJlc3MsIG5vdCAucGx0IHNlY3Rpb24gc3RhcnQuCgkoc3BhcmM2NF9lbGZfc2l6ZV9pbmZvKTogU3BhcmM2NCB1c2VzIDMyYml0IC5oYXNoIGVudHJpZXMuCgoxOTk5LTA3LTMwICBKYWt1YiBKZWxpbmVrICA8ampAdWx0cmEubGludXguY3o+CgoJKiBlbGYtYmZkLmggKHN0cnVjdCBlbGZfYmFja2VuZF9kYXRhKTogQWRkCglwcmludF9zeW1ib2xfYWxsIGFuZCBvdXRwdXRfYXJjaF9zeW1zIGJhY2tlbmQgbWV0aG9kcy4KCSogZWxmeHgtdGFyZ2V0Lmg6IExpa2V3aXNlLgoJKiBlbGY2NC1zcGFyYy5jIChzcGFyYzY0X2VsZl9iZmRfbGlua19oYXNoX3RhYmxlX2NyZWF0ZSwKCXNwYXJjNjRfZWxmX2FkZF9zeW1ib2xfaG9vaywgc3BhcmM2NF9lbGZfb3V0cHV0X2FyY2hfc3ltcywKCXNwYXJjNjRfZWxmX2dldF9zeW1ib2xfdHlwZSwgc3BhcmM2NF9lbGZfc3ltYm9sX3Byb2Nlc3NpbmcpOiBOZXcKCWZ1bmN0aW9ucy4KCShzcGFyYzY0X2VsZl9zaXplX2R5bmFtaWNfc2VjdGlvbnMpOiBMZWF2ZSBzcGFjZSBmb3IgU1RUX1JFR0lTVEVSCglzeW1ib2xzIGluIC5keW5zeW0sIGFkZCB0aGVpciBuYW1lcyBpbnRvIC5keW5zdHIuIFB1dCB0aG9zZSBzeW1ib2xzCglpbnRvIGR5bmxvY2FsLgoJKHNwYXJjNjRfZWxmX2ZpbmlzaF9keW5hbWljX3NlY3Rpb25zKTogRml4IHVwIERUX1NQQVJDX1JFR0lTVEVSCglwb2ludGVycyB0byBTVFRfUkVHSVNURVIgc3ltYm9scyBpbiBkeW5zeW0gc2VjdGlvbi4KCShzcGFyYzY0X2VsZl9wcmludF9zeW1ib2xfYWxsKTogTmV3IGZ1bmN0aW9uLgoJKiBlbGYuYyAoYmZkX2VsZl9wcmludF9zeW1ib2wpOiBBbGxvdyBzcGVjaWFsIGJhY2tlbmQgc3ltYm9sCglwcmludGluZyB1c2luZyB0aGUgcHJpbnRfc3ltYm9sX2FsbCBob29rLgoKMTk5OS0wNy0zMCAgQ2F0aGVyaW5lIE1vb3JlICA8Y2xtQGN5Z251cy5jb20+CgoJKiBlbGYzMi1hcm0uaCAoZWxmMzJfYXJtX2NoZWNrX3JlbG9jcyk6ICBVc2Ugcl9vZmZzZXQgZm9yCglSX0FSTV9HTlVfVlRFTlRSWS4KCjE5OTktMDctMjkgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBlbGYzMi1taXBzLmMgKF9iZmRfbWlwc19lbGZfZmluYWxfbGluayk6IE9ubHkgcmUtc29ydCBkeW5zeW1zIGlmCglkeW5hbWljX3NlY3Rpb25zX2NyZWF0ZWQuCgoxOTk5LTA3LTI5ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogZWxmMzItbWlwcy5jIChtaXBzX2luZm9fdG9faG93dG9fcmVsKTogU3BsaXQgb3V0IHN3aXRjaCB0byAuLi4KCShtaXBzX3J0eXBlX3RvX2hvd3RvKTogLi4uIG5ldyBmdW5jdGlvbi4KCShfYmZkX21pcHNfZWxmX3JlbG9jYXRlX3NlY3Rpb24pOiBVc2UgaXQuCgoxOTk5LTA3LTI4ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogZWxmMzItbWlwcy5jIChfYmZkX21pcHNfZWxmX3JlbG9jYXRlX3NlY3Rpb24pOiBGaXggdHlwby4KCjE5OTktMDctMjcgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQGN5Z251cy5jb20+CgoJUGF0Y2ggZ2VuZXJhdGVkIGJ5IEJlcm5kIFNjaG1pZHQuIDxiZXJuZHNAY3lnbnVzLmNvLnVrPgoJCgkqIGNvZmYtYXJtLmMgKGNvZmZfYXJtX2lzX2xvY2FsX2xhYmVsX25hbWUpOiBDaGFuZ2UgdG8gc3RyaXAKCW91dCBvbmx5IHN5bWJvbHMgdGhhdCBzdGFydCB3aXRoIExPQ0FMX0xBQkVMX1BSRUZJWCBmb2xsb3dlZCBieSAnTCcuCgoxOTk5LTA3LTIzICBEb25uIFRlcnJ5ICA8ZG9ubkBpbnRlcml4LmNvbT4KCgkqIGxpYmNvZmYtaW4uaCAoY29mZl9saW5rX2hhc2hfZW50cnkpOiBBZGQgY29mZl9saW5rX2hhc2hfZmxhZ3MKCWZpZWxkLCBhbmQgZGVmaW5lIENPRkZfTElOS19IQVNIX1BFX1NFQ1RJT05fU1lNQk9MLgoJKiBjb2ZmbGluay5jIChjb2ZmX2xpbmtfYWRkX3N5bWJvbHMpOiBJZiBQRSwgaGFuZGxlIHNlY3Rpb24KCXN5bWJvbHMgc3BlY2lhbGx5LgoJKiBsaWJjb2ZmLmg6IFJlYnVpbGQuCgoJKiBjb25maWcuYmZkIChpWzM0NTZdODYtKi1pbnRlcml4Kik6IE5ldyB0YXJnZXQuCgoxOTk5LTA3LTIxICBNYXJrIEVsYnJlY2h0ICA8c25vd2JhbGwzQGJpZ2Zvb3QuY29tPgoKCSogY29mZmNvZGUuaCAoc3R5cF90b19zZWNfZmxhZ3MpOiBJZiBDT0ZGX0xPTkdfU0VDVElPTl9OQU1FUyBhbmQKCUNPRkZfU1VQUE9SVF9HTlVfTElOS09OQ0UsIG1hcmsgc2VjdGlvbnMgd2hvc2UgbmFtZXMgYmVnaW4gd2l0aAoJLmdudS5saW5rb25jZSB3aXRoIFNFQ19MSU5LT05DRSBhbmQgU0VDX0xJTktfRFVQTElDQVRFU19ESVNDQVJELgoJKiBjb2ZmLWdvMzIuYzogKENPRkZfTE9OR19TRUNUSU9OX05BTUVTKTogRGVmaW5lLgoJKENPRkZfU1VQUE9SVF9HTlVfTElOS09OQ0UpOiBEZWZpbmUuCgkqIGNvZmYtc3RnbzMyLmM6IChDT0ZGX0xPTkdfU0VDVElPTl9OQU1FUyk6IERlZmluZS4KCShDT0ZGX1NVUFBPUlRfR05VX0xJTktPTkNFKTogRGVmaW5lLgoKMTk5OS0wNy0yMSAgSWFuIExhbmNlIFRheWxvciAgPGlhbkB6ZW1idS5jb20+CgoJRnJvbSBNYXJrIEVsYnJlY2h0OgoJKiBtYWtlZmlsZS5kb3M6IFJlbW92ZTsgb2Jzb2xldGUuCgkqIGNvbmZpZ3VyZS5iYXQ6IFJlbW92ZTsgb2Jzb2xldGUuCgoxOTk5LTA3LTIxICBILkouIEx1ICA8aGpsQGdudS5vcmc+CgoJKiBjb25maWcuYmZkIChpWzM0NTZdODYtKi12eHdvcmtzKik6IEFkZCB0YXJnX3VuZGVyc2NvcmU9eWVzLgoKMTk5OS0wNy0yMSAgUGhpbGlwcGUgRGUgTXV5dGVyICA8cGhkbUBtYWNxZWwuYmU+CgoJKiBjb2ZmbGluay5jIChfYmZkX2NvZmZfZ2VuZXJpY19yZWxvY2F0ZV9zZWN0aW9uKTogSXNzdWUgYW4gZXJyb3IKCW1lc3NhZ2UJYW5kIGZhaWwgaWYgYSBzeW1ib2wgaW5kZXggaXMgb3V0IG9mIHJhbmdlLgoKMTk5OS0wNy0yMSAgSWFuIExhbmNlIFRheWxvciAgPGlhbkB6ZW1idS5jb20+CgoJKiBlbGYzMi1taXBzLmMgKG1pcHNfZWxmX2NhbGN1bGF0ZV9yZWxvY2F0aW9uKTogR2V0IHRoZSBHUCB2YWx1ZQoJd2hlbiBsb29raW5nIGF0IGEgUl9NSVBTX0dPVDE2IHJlbG9jYXRpb24uCgoxOTk5LTA3LTIwICBOaWNrIENsaWZ0b24gIDxuaWNrY0BjeWdudXMuY29tPgoKCSogY29mZi1tODhrLmM6IFVzZSBDUkVBVEVfQklHX0NPRkZfVEFSR0VUX1ZFQy4KCk1vbiBKdWwgMTkgMTQ6MDM6NDQgMTk5OSAgTWFyayBQLiBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGVsZjMyLW1pcHMuYyAoX2JmZF9taXBzX2VsZl9maW5hbF9saW5rKTogUmVzdG9yZSBzZXR0aW5nIG9mIEdQCglyZW1vdmVkIGluIHByZXZpb3VzIGNoYW5nZS4KCShfYmZkX21pcHNfZWxmX3JlbG9jYXRlX3NlY3Rpb24pOiBBZGp1c3QgR1AgcmVsYXRpdmUgcmVsb2NhdGlvbnMKCWluIHJlbG9jYXRlYWJsZSBvdXRwdXQuCgoxOTk5LTA3LTE5ICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQHplbWJ1LmNvbT4KCgkqIGNvZmYtbTg4ay5jIChtODhrYmNzX3ZlYyk6IEluaXRpYWxpemUgbmV3IGZpZWxkIG9mIGJmZF90YXJnZXQKCXN0cnVjdHVyZS4KCgkqIGVsZmxpbmsuaCAoZWxmX21lcmdlX3N5bWJvbCk6IERvIG1lcmdlIHN5bWJvbHMgZnJvbSB0aGUgc2FtZSBCRkQKCWlmIHRoZXkgYXBwZWFyIHRvIGJlIHNwZWNpYWxseSBjcmVhdGVkIGJ5IHRoZSBsaW5rZXIuCgoxOTk5LTA3LTE5ICBOaWNrIENsaWZ0b24gIDxuaWNrY0BjeWdudXMuY29tPgoKCSogdGFyZ2V0cy5jIChhbHRlcm5hdGl2ZV90YXJnZXQpOiBOZXcgZmllbGQgaW4gYmZkX3RhcmdldAoJc3RydWN0dXJlLgoJKGJmZF9zZWFyY2hfZm9yX3RhcmdldCk6IE5ldyBmdW5jdGlvbjogIEZpbmQgYSB0YXJnZXQgdGhhdAoJc2F0aXNpZmllcyBhIHNlYXJjaCBmdW5jdGlvbi4KCSogYmZkLWluMi5oOiBSZWdlbmVyYXRlLgoKCSogZWxmeHgtdGFyZ2V0Lmg6IEluaXRpYWxpc2UgdGhlIGFsdGVybmF0aXZlX3RhcmdldCBmaWVsZCBvZgoJdGhlIGJmZF90YXJnZXQgc3RydWN0dXJlcyB0byBwb2ludCB0byB0aGUgb3RoZXIgdGFyZ2V0IChpZgoJZGVmaW5lZCkuCgkqIG5sbS10YXJnZXQuaDogSW5pdGlhbGlzZSB0aGUgYWx0ZXJuYXRpdmVfdGFyZ2V0IGZpZWxkIG9mCgl0aGUgYmZkX3RhcmdldCBzdHJ1Y3R1cmVzIHRvIHBvaW50IHRvIHRoZSBvdGhlciB0YXJnZXQgKGlmCglkZWZpbmVkKS4KCQoJKiBjb2ZmY29kZS5oIChDUkVBVEVfQklHX0NPRkZfVEFSR0VUX1ZFQyk6IE5ldyBtYWNyby4KCShDUkVBVEVfTElUVExFX0NPRkZfVEFSR0VUX1ZFQyk6IE5ldyBtYWNyby4KCQoJKiBhaXgzODYtY29yZS5jOiBJbml0aWFsaXNlIG5ldyBmaWVsZCBvZiBiZmRfdGFyZ2V0IHN0cnVjdHVyZS4KCSogYW91dC1hZG9iZS5jOiBJbml0aWFsaXNlIG5ldyBmaWVsZCBvZiBiZmRfdGFyZ2V0IHN0cnVjdHVyZS4KCSogYW91dC1hcm0uYzogSW5pdGlhbGlzZSBuZXcgZmllbGQgb2YgYmZkX3RhcmdldCBzdHJ1Y3R1cmUuIAoJKiBhb3V0LXRhcmdldC5oOiBJbml0aWFsaXNlIG5ldyBmaWVsZCBvZiBiZmRfdGFyZ2V0IHN0cnVjdHVyZS4gCgkqIGFvdXQtdGljMzAuYzogSW5pdGlhbGlzZSBuZXcgZmllbGQgb2YgYmZkX3RhcmdldCBzdHJ1Y3R1cmUuIAoJKiBiaW5hcnkuYzogSW5pdGlhbGlzZSBuZXcgZmllbGQgb2YgYmZkX3RhcmdldCBzdHJ1Y3R1cmUuIAoJKiBib3V0LmM6IEluaXRpYWxpc2UgbmV3IGZpZWxkIG9mIGJmZF90YXJnZXQgc3RydWN0dXJlLiAKCSogY2lzY28tY29yZS5jOiBJbml0aWFsaXNlIG5ldyBmaWVsZCBvZiBiZmRfdGFyZ2V0IHN0cnVjdHVyZS4gCgkqIGNvZmYtYTI5ay5jOiBVc2UgQ1JFQVRFX0JJR19DT0ZGX1RBUkdFVF9WRUMuCgkqIGNvZmYtYWxwaGEuYzogSW5pdGlhbGlzZSBuZXcgZmllbGQgb2YgYmZkX3RhcmdldCBzdHJ1Y3R1cmUuIAoJKiBjb2ZmLWFwb2xsby5jOiBVc2UgQ1JFQVRFX0JJR19DT0ZGX1RBUkdFVF9WRUMuCgkqIGNvZmYtYXJtLmM6IFVzZSBDUkVBVEVfe0JJR3xMSVRUTEV9X0NPRkZfVEFSR0VUX1ZFQy4KCSogY29mZi1oODMwMC5jOiBVc2UgQ1JFQVRFX0JJR19DT0ZGX1RBUkdFVF9WRUMuCgkqIGNvZmYtaDg1MDAuYzogVXNlIENSRUFURV9CSUdfQ09GRl9UQVJHRVRfVkVDLgoJKiBjb2ZmLWkzODYuYzogSW5pdGlhbGlzZSBuZXcgZmllbGQgb2YgYmZkX3RhcmdldCBzdHJ1Y3R1cmUuIAoJKiBjb2ZmLWk4NjAuYzogSW5pdGlhbGlzZSBuZXcgZmllbGQgb2YgYmZkX3RhcmdldCBzdHJ1Y3R1cmUuIAoJKiBjb2ZmLWk5NjAuYzogVXNlIENSRUFURV9MSVRUTEVfQ09GRl9UQVJHRVRfVkVDLgoJKiBjb2ZmLW02OGsuYzogVXNlIENSRUFURV9CSUdfQ09GRl9UQVJHRVRfVkVDLgoJKiBjb2ZmLW1jb3JlLmM6IFVzZSBDUkVBVEVfe0JJR3xMSVRUTEV9X0NPRkZfVEFSR0VUX1ZFQy4KCSogY29mZi1taXBzLmM6IEluaXRpYWxpc2UgbmV3IGZpZWxkIG9mIGJmZF90YXJnZXQgc3RydWN0dXJlLiAKCSogY29mZi1wcGMuYzogSW5pdGlhbGlzZSBuZXcgZmllbGQgb2YgYmZkX3RhcmdldCBzdHJ1Y3R1cmUuIAoJKiBjb2ZmLXJzNjAwMC5jOiBJbml0aWFsaXNlIG5ldyBmaWVsZCBvZiBiZmRfdGFyZ2V0IHN0cnVjdHVyZS4gCgkqIGNvZmYtc2guYzogIFVzZSBDUkVBVEVfe0JJR3xMSVRUTEV9X0NPRkZfVEFSR0VUX1ZFQy4KCSogY29mZi1zcGFyYy5jOiBVc2UgQ1JFQVRFX0JJR19DT0ZGX1RBUkdFVF9WRUMuCgkqIGNvZmYtdGljMzAuYzogSW5pdGlhbGlzZSBuZXcgZmllbGQgb2YgYmZkX3RhcmdldCBzdHJ1Y3R1cmUuIAoJKiBjb2ZmLXRpYzgwLmM6IFVzZSBDUkVBVEVfTElUVExFX0NPRkZfVEFSR0VUX1ZFQy4KCSogY29mZi13NjUuYzogICBVc2UgQ1JFQVRFX0xJVFRMRV9DT0ZGX1RBUkdFVF9WRUMuCgkqIGNvZmYtd2UzMmsuYzogVXNlIENSRUFURV9CSUdfQ09GRl9UQVJHRVRfVkVDLgoJKiBjb2ZmLXo4ay5jOiAgIFVzZSBDUkVBVEVfQklHX0NPRkZfVEFSR0VUX1ZFQy4KCSogaHBwYWJzZC1jb3JlLmM6IEluaXRpYWxpc2UgbmV3IGZpZWxkIG9mIGJmZF90YXJnZXQgc3RydWN0dXJlLiAKCSogaHB1eC1jb3JlLmM6IEluaXRpYWxpc2UgbmV3IGZpZWxkIG9mIGJmZF90YXJnZXQgc3RydWN0dXJlLiAKCSogaTM4Nm1zZG9zLmM6IEluaXRpYWxpc2UgbmV3IGZpZWxkIG9mIGJmZF90YXJnZXQgc3RydWN0dXJlLiAKCSogaTM4Nm9zOWsuYzogSW5pdGlhbGlzZSBuZXcgZmllbGQgb2YgYmZkX3RhcmdldCBzdHJ1Y3R1cmUuIAoJKiBpZWVlLmM6IEluaXRpYWxpc2UgbmV3IGZpZWxkIG9mIGJmZF90YXJnZXQgc3RydWN0dXJlLiAKCSogaWhleC5jOiBJbml0aWFsaXNlIG5ldyBmaWVsZCBvZiBiZmRfdGFyZ2V0IHN0cnVjdHVyZS4gCgkqIGlyaXgtY29yZS5jOiBJbml0aWFsaXNlIG5ldyBmaWVsZCBvZiBiZmRfdGFyZ2V0IHN0cnVjdHVyZS4gCgkqIG1pcHNic2QuYzogSW5pdGlhbGlzZSBuZXcgZmllbGQgb2YgYmZkX3RhcmdldCBzdHJ1Y3R1cmUuIAoJKiBuZXRic2QtY29yZS5jOiBJbml0aWFsaXNlIG5ldyBmaWVsZCBvZiBiZmRfdGFyZ2V0IHN0cnVjdHVyZS4gCgkqIG9hc3lzLmM6IEluaXRpYWxpc2UgbmV3IGZpZWxkIG9mIGJmZF90YXJnZXQgc3RydWN0dXJlLiAKCSogb3NmLWNvcmUuYzogSW5pdGlhbGlzZSBuZXcgZmllbGQgb2YgYmZkX3RhcmdldCBzdHJ1Y3R1cmUuIAoJKiBwcGNib290LmM6IEluaXRpYWxpc2UgbmV3IGZpZWxkIG9mIGJmZF90YXJnZXQgc3RydWN0dXJlLiAKCSogcHRyYWNlLWNvcmUuYzogSW5pdGlhbGlzZSBuZXcgZmllbGQgb2YgYmZkX3RhcmdldCBzdHJ1Y3R1cmUuIAoJKiBzY281LWNvcmUuYzogSW5pdGlhbGlzZSBuZXcgZmllbGQgb2YgYmZkX3RhcmdldCBzdHJ1Y3R1cmUuIAoJKiBzb20uYzogSW5pdGlhbGlzZSBuZXcgZmllbGQgb2YgYmZkX3RhcmdldCBzdHJ1Y3R1cmUuIAoJKiBzcmVjLmM6IEluaXRpYWxpc2UgbmV3IGZpZWxkIG9mIGJmZF90YXJnZXQgc3RydWN0dXJlLiAKCSogdGVraGV4LmM6IEluaXRpYWxpc2UgbmV3IGZpZWxkIG9mIGJmZF90YXJnZXQgc3RydWN0dXJlLiAKCSogdHJhZC1jb3JlLmM6IEluaXRpYWxpc2UgbmV3IGZpZWxkIG9mIGJmZF90YXJnZXQgc3RydWN0dXJlLiAKCSogdmVyc2Fkb3MuYzogSW5pdGlhbGlzZSBuZXcgZmllbGQgb2YgYmZkX3RhcmdldCBzdHJ1Y3R1cmUuIAoJKiB2bXMuYzogSW5pdGlhbGlzZSBuZXcgZmllbGQgb2YgYmZkX3RhcmdldCBzdHJ1Y3R1cmUuIAoKMTk5OS0wNy0xOSAgQW5kcmVhcyBTY2h3YWIgIDxzY2h3YWJAc3VzZS5kZT4KCgkqIGVsZmxpbmsuaCAoZWxmX2JmZF9maW5hbF9saW5rKTogUmVtb3ZlIHVudXNlZCB2YXJpYWJsZXMgcmVsX2hhc2gKCWFuZCByZWxfaGRyLgoKU2F0IEp1bCAxNyAwMjoyODoyOCAxOTk5ICBNYXJrIFAuIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogZWxmbGluay5oIChlbGZfbGlua19hZGp1c3RfcmVsb2NzKTogTmV3IGZ1bmN0aW9uLgoJKGVsZl9iZmRfZmluYWxfbGluayk6IFVzZSBpdC4KCShlbGZfbGlua19pbnB1dF9iZmQpOiBEZWFsIHdpdGggdGhlIGZhY3QgdGhhdCB0aGVyZSBjYW4gYmUgCgl0d28gcmVsb2NhdGlvbiBzZWN0aW9ucyBmb3IgYSBzaW5nbGUgc2VjdGlvbi4KCShlbGZfcmVsb2NfbGlua19vcmRlcik6IExpa2V3aXNlLgoKCSogZWxmMzItbWlwcy5jIChfYmZkX21pcHNfZWxmX2ZpbmFsX2xpbmspOiBEb24ndCBzZXQgR1AgZm9yIAoJYSByZWxvY2F0ZWFibGUgb2JqZWN0LgoJKF9iZmRfbWlwc19lbGZfcmVsb2NhdGVfc2VjdGlvbik6IEhhbmRsZSByZWxvY2F0ZWFibGUgbGlua3MuCgoxOTk5LTA3LTE2ICBKYWt1YiBKZWxpbmVrICA8ampAdWx0cmEubGludXguY3o+CgoJKiBlbGY2NC1zcGFyYy5jIChzcGFyYzY0X2VsZl9pbmZvX3RvX2hvd3RvKTogVXNlIEVMRjY0X1JfVFlQRV9JRC4KCShzcGFyYzY0X2VsZl9nZXRfcmVsb2NfdXBwZXJfYm91bmQsCglzcGFyYzY0X2VsZl9nZXRfZHluYW1pY19yZWxvY191cHBlcl9ib3VuZCwKCXNwYXJjNjRfZWxmX3NsdXJwX29uZV9yZWxvY190YWJsZSwgc3BhcmM2NF9lbGZfc2x1cnBfcmVsb2NfdGFibGUsCglzcGFyYzY0X2VsZl9jYW5vbmljYWxpemVfZHluYW1pY19yZWxvYywgc3BhcmM2NF9lbGZfd3JpdGVfcmVsb2NzKToKCU5ldyBmdW5jdGlvbnMuCgkoc3BhcmM2NF9lbGZfY2hlY2tfcmVsb2NzLCBzcGFyYzY0X2VsZl9yZWxvY2F0ZV9zZWN0aW9uKTogVXNlCglFTEY2NF9SX1RZUEVfSUQvREFUQSB3aGVyZSBhcHByb3ByaWF0ZS4KCjE5OTktMDctMTYgIEpha3ViIEplbGluZWsgIDxqakB1bHRyYS5saW51eC5jej4KCgkqIGVsZjY0LXNwYXJjLmMgKHNwYXJjNjRfZWxmX3NpemVfZHluYW1pY19zZWN0aW9ucyk6IFJlbW92ZQoJRFRfU1BBUkNfUExURk1ULgoKMTk5OS0wNy0xNiAgSWFuIExhbmNlIFRheWxvciAgPGlhbkB6ZW1idS5jb20+CgoJKiBlbGYzMi1taXBzLmMgKG1pcHNfZWxmX2xvY2FsX3JlbG9jYXRpb25fcCk6IE5ldyBzdGF0aWMKCWZ1bmN0aW9uLgoJKG1pcHNfZWxmX25leHRfbG8xNl9hZGRlbmQpOiBDYWxsIGJmZF9zZXRfZXJyb3Igb24gZmFpbHVyZS4KCShtaXBzX2VsZl9jYWxjdWxhdGVfcmVsb2NhdGlvbik6IFVzZSBtaXBzX2VsZl9sb2NhbF9yZWxvY2F0aW9uX3AuCglBbHdheXMgc2V0ICpyZXF1aXJlX2phbHhwLgoJKG1pcHNfZWxmX3N0dWJfc2VjdGlvbl9wKTogTWFyayBhYmZkIHBhcmFtZXRlciBhcyB1bnVzZWQuCgkoX2JmZF9taXBzX2VsZl9yZWxvY2F0ZV9zZWN0aW9uKTogT25seSBsb29rIGZvciBMTzE2IGZvbGxvd2luZwoJR09UMTYgaWYgdGhlIEdPVDE2IGlzIGFnYWluc3QgYSBsb2NhbCBzeW1ib2wuICBEb24ndCByZXR1cm4gZmFsc2UKCWZvciBhbiB1bmRlZmluZWQgc3ltYm9sLiAgSWYgdGhlcmUgaXMgYW4gb3ZlcmZsb3csIGFzc2VydCB0aGF0IHdlCgloYXZlIGEgbmFtZS4KCjE5OTktMDctMTYgIEFuZHJlYXMgU2Nod2FiICA8c2Nod2FiQHN1c2UuZGU+CgoJKiBlbGZsaW5rLmggKGVsZl9saW5rX3JlY29yZF9sb2NhbF9keW5hbWljX3N5bWJvbCk6IFJlbW92ZSB1bnVzZWQKCXZhcmlhYmxlcyBgbGluaycgYW5kIGBlbGZzZWMnLgoJKGVsZl9iZmRfZmluYWxfbGluayk6IFJlbW92ZSB1bnVzZWQgdmFyaWFibGUgYG9zJy4KClRodSBKdWwgMTUgMTc6NTU6MzEgMTk5OSAgTWFyayBQLiBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGVsZjMyLW1pcHMuYyAoX2JmZF9taXBzX2VsZl9tb2RpZnlfc2VnbWVudF9tYXApOiBEb24ndCByZXF1aXJlCglhIFBUX1BIRFIgcHJvZ3JhbSBoZWFkZXJzLgoJKF9iZmRfbWlwc19lbGZfZmluYWxfbGluayk6IERvbid0IGFzc3VtZSB0aGVyZSBhcmUgZ29pbmcgdG8gYmUKCXNlY3Rpb24gc3ltYm9scyB3aGVuIHdlJ3JlIG5vdCBidWlsZGluZyBhIHNoYXJlZCBvYmplY3QuCgkoX2JmZF9taXBzX2VsZl9jaGVja19yZWxvY3MpOiBNYWtlIHN1cmUgd2UgaGF2ZSBhIEdPVCB3aGVuCgl3ZSBuZWVkIG9uZS4KCjE5OTktMDctMTUgIEouVC4gQ29ua2xpbiAgPGp0Y0ByZWRiYWNrLmNvbT4KCgkqIGNvbmZpZy5iZmQgKGlbMzQ1Nl04Ni0qLXZ4d29ya3MqKTogTmV3IHRhcmdldC4KCjE5OTktMDctMTUgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBlbGYzMi1taXBzLmMgKG1pcHNfZWxmX3N0dWJfc2VjdGlvbl9wKTogTmV3IGZ1bmN0aW9uLgoJKG1pcHNfZWxmX2NhbGN1bGF0ZV9yZWxvY2F0aW9uKTogSGFuZGxlIE1JUFMxNiBzdHViIGZ1bmN0aW9ucy4KCShtaXBzX2VsZl9yZWxvY2F0ZV9zZWN0aW9uKTogQWRqdXN0IGNhbGxpbmcgc2VxdWVuY2UgZm9yCgltaXBzX2VsZl9jYWxjdWxhdGVfcmVsb2NhdGlvbiBhbmQgbWlwc19lbGZfcGVyZm9ybV9yZWxvY2F0aW9uLgoJKG1pcHNfZWxmX3BlcmZvcm1fcmVsb2NhdGlvbik6IFR1cm4gYGphbCcgaW50byBgamFseCcgd2hlcmUKCXJlcXVpcmVkLgoKMTk5OS0wNy0xNSAgSWFuIExhbmNlIFRheWxvciAgPGlhbkB6ZW1idS5jb20+CgoJKiBjb25maWd1cmUuaW46IEJ1bXAgdmVyc2lvbiBudW1iZXIgdG8gMi45LjUuCgkqIGNvbmZpZ3VyZTogUmVidWlsZC4KClRodSBKdWwgMTUgMDI6NTY6MTUgMTk5OSAgSmVmZnJleSBBIExhdyAgKGxhd0BjeWdudXMuY29tKQoKCSogZWxmLWhwcGEuaCAoX2JmZF9lbGZfaHBwYV9nZW5fcmVsb2NfdHlwZSwgY2FzZSBSX0hQUEEpOiBIYW5kbGUKCTY0Yml0IGZvcm1hdC4KCShfYmZkX2VsZl9ocHBhX2dlbl9yZWxvY190eXBlLCBjYXNlIFJfR09UT0ZGKTogVXNlIGJhc2UgcmVsb2MgdHlwZQoJdG8gZGVyaXZlIGZpbmFsIHR5cGUgaW5zdGVhZCBvZiBoYXJkd2lyaW5nIGEgc2VsZWN0aW9uLgoKMTk5OS0wNy0xNCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGVsZjMyLW1pcHMuYyAobWlwc19lbGZfb2J0YWluX2NvbnRlbnRzKTogU3dhcCAxNi1iaXQgaGFsdmVzIG9mCgl0aGluZ3MgcmVsb2NhdGVkIGJ5IFJfTUlQUzE2X0dQUkVMLgoJKG1pcHNfZWxmX3BlcmZvcm1fcmVsb2NhdGlvbik6IExpa2V3aXNlLgoKV2VkIEp1bCAxNCAxNToyMzoxOSAxOTk5ICBKaW0gV2lsc29uICA8d2lsc29uQGN5Z251cy5jb20+CgoJKiBlbGZ4eC10YXJnZXQuaCAoZWxmTk5fYmVkKTogQWRkIGVsZl9iYWNrZW5kX3dhbnRfZHluYnNzLgoKMTk5OS0wNy0xNCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGVsZjMyLW1pcHMuYyAoc3RydWN0IG1pcHNfZ290X2luZm8pOiBBZGQgZ2xvYmFsX2dvdG5vLgoJKF9iZmRfbWlwc19lbGZfc2l6ZV9keW5hbWljX3NlY3Rpb25zKTogU2V0IGl0LgoJKF9iZmRfbWlwc19lbGZfZmluYWxfbGluayk6IFJlLXNvcnQ7IHZlcmlmeSB0aGUgZ290IGRpZCBub3QgZ3Jvdy4KCShtaXBzX2VsZl9zb3J0X2hhc2hfdGFibGUpOiBTZXQgbWF4X25vbl9nb3RfZHluaW5kZXggYmFzZWQgb2ZmCgluZXcgYXJndW1lbnQgbWF4X2xvY2FsLgoKMTk5OS0wNy0xNCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGVsZjMyLW1pcHMuYyAobWlwc19lbGZfb2J0YWluX2NvbnRlbnRzKTogU3dhcCB0aGUgMTYtYml0CglzdWJ3b3JkcyB3aGVuIGhhbmRsaW5nIGFuIFJfTUlQUzE2XzI2IHJlbG9jYXRpb24uCgkobWlwc19lbGZfcGVyZm9ybV9yZWxvY2F0aW9uKTogRG9uJ3QgYmUgcGFyYW5vaWQgYWJvdXIgcmlnaHQtc2hpZnQKCXNlbWFudGljcy4KCQoJKiBlbGYzMi1taXBzLmMgKGVsZl9taXBzMTZfZ3ByZWxfaG93dG8pOiBBZGp1c3Qgc3JjX21hc2sgYW5kCglkc3RfbWFzayB0byBtYXRjaCByZWFsaXR5LgoJKF9iZmRfbWlwc19lbGZfY2FsY3VsYXRlX3JlbG9jYXRpb24pOiBIYW5kbGUgUl9NSVBTMTZfR1BSRUwuCgkobWlwc19lbGZfb2J0YWluX2NvbnRlbnRzKTogVXNlIGJmZF9nZXQuCgkobWlwc19lbGZfcGVyZm9ybV9yZWxvY2F0aW9uKTogSGFuZGxlIFJfTUlQUzE2X0dQUkVMLgoJKG1pcHNfZWxmX3JlbG9jYXRlX3NlY3Rpb24pOiBMaWtld2lzZS4KCjE5OTktMDctMTMgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBlbGYzMi1taXBzLmMgKG1pcHNfZWxmX2NhbGN1bGF0ZV9yZWxvY2F0aW9uKTogSGFuZGxlIFJfTUlQUzE2XzI2LgoJKG1pcHNfZWxmX3JlbG9jYXRlX3NlY3Rpb24pOiBBZGp1c3QgY2FsbGluZyBzZXF1ZW5jZSBmb3IgCgltaXBzX2VsZl9wZXJmb3JtX3JlbG9jYXRpb24uCgkobWlwc19lbGZfcGVyZm9ybV9yZWxvY2F0aW9uKTogVGFrZSBhZGRpdGlvbmFsIGFyZ3VtZW50LiAgSGFuZGxlCglSX01JUFMxNl8yNi4gIFVzZSBiZmRfcHV0IGZvciBjb252ZW5pZW5jZS4KCjE5OTktMDctMTMgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBlbGYuYyAoYXNzaWduX2ZpbGVfcG9zaXRpb25zX2Zvcl9zZWdtZW50cyk6IFRoaW5rbyBsYXN0IGNoYW5nZS4KCUFsd2F5cyBvdmVyd3JpdGUgcF9mbGFncy4KCjE5OTktMDctMTMgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBlbGYtYmZkLmggKHN0cnVjdCBlbGZfYmFja2VuZF9kYXRhKTogQWRkIHdhbnRfZHluYnNzLgoJKiBlbGZsaW5rLmMgKF9iZmRfZWxmX2NyZWF0ZV9keW5hbWljX3NlY3Rpb25zKTogT25seSBjcmVhdGUKCS5keW5ic3MgYW5kIC5yZWxbYV0uYnNzIGlmIHdhbnRfZHluYnNzLgoJKiBlbGZ4eC10YXJnZXQuaCAoZWxmX2JhY2tlbmRfd2FudF9keW5ic3MpOiBQcm92aWRlIGRlZmF1bHQuCgoxOTk5LTA3LTEzICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogZWxmLmMgKGFzc2lnbl9maWxlX3Bvc2l0aW9uc19mb3Jfc2VnbWVudHMpOiBEb24ndCBvdmVyd3JpdGUgcF9mbGFncy4KCjE5OTktMDctMTMgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBlbGYtYmZkLmggKHN0cnVjdCBlbGZfbGlua19sb2NhbF9keW5hbWljX2VudHJ5KTogTmV3LgoJKHN0cnVjdCBlbGZfbGlua19oYXNoX3RhYmxlKTogQWRkIGR5bmxvY2FsLgoJKF9iZmRfZWxmX2xpbmtfbG9va3VwX2xvY2FsX2R5bmluZHgpOiBQcm90b3R5cGUuCgkoX2JmZF9lbGZfbGlua19hZGp1c3RfZHluaW5keCk6IERlbGV0ZS4KCShfYmZkX2VsZl9saW5rX3JlbnVtYmVyX2R5bnN5bXMpOiBQcm90b3R5cGUuCgkoX2JmZF9lbGYsbGlua19yZWNvcmRfbG9jYWxfZHluYW1pY19zeW1ib2wpOiBQcm90b3R5cGUuCgkqIGVsZmNvZGUuaCAoZWxmX2xpbmtfcmVjb3JkX2xvY2FsX2R5bmFtaWNfc3ltYm9sKTogTmV3IGFsaWFzLgoJKiBlbGZsaW5rLmMgKF9iZmRfZWxmX2xpbmtfYWRqdXN0X2R5bmluZHgpOiBEZWxldGUuCgkoX2JmZF9lbGZfbGlua19sb29rdXBfbG9jYWxfZHluaW5keCk6IE5ldyBmdW5jdGlvbi4KCShlbGZfbGlua19yZW51bWJlcl9oYXNoX3RhYmxlX2R5bnN5bXMpOiBOZXcgZnVuY3Rpb24uCgkoX2JmZF9lbGZfbGlua19yZW51bWJlcl9keW5zeW1zKTogTmV3IGZ1bmN0aW9uLgoJKiBlbGZsaW5rLmggKGVsZl9saW5rX3JlY29yZF9sb2NhbF9keW5hbWljX3N5bWJvbCk6IE5ldyBmdW5jdGlvbi4KCShzdHJ1Y3QgZWxmX2Fzc2lnbl9zeW1fdmVyc2lvbl9pbmZvKTogRGVsZXRlIHJlbW92ZWRfZHluYW1pYy4KCShiZmRfZWxmLHNpemVfZHluYW1pY19zZWN0aW9ucyk6IFVzZSBfYmZkX3N0cmlwX3NlY3Rpb25fZnJvbV9vdXRwdXQKCWluc3RlYWQgb2YgZWxmX2xpbmtfcmVtb3ZlX3NlY3Rpb25fYW5kX2FkanVzdF9keW5pbmRpY2VzLgoJUmVtb3ZlIHJlbW92ZWRfZHluYW1pYyBjb2RlLiAgVXNlIF9iZmRfZWxmX2xpbmtfcmVudW1iZXJfZHluc3ltcy4KCShlbGZfbGlua19hc3NpZ25fc3ltX3ZlcnNpb24pOiBSZW1vdmUgcmVtb3ZlZF9keW5hbWljIGNvZGUuCgkoZWxmX2xpbmtfcmVudW1iZXJfZHluc3ltcyk6IERlbGV0ZS4KCShlbGZfYmZkX2ZpbmFsX2xpbmspOiBJbnN0YWxsIHNlY3Rpb24gYW5kIGxvY2FsIHN5bWJvbHMgaW50byAuZHluc3ltLgoKCSogZWxmMzItbTY4ay5jIChlbGZfbTY4a19hZGp1c3RfZHluaW5keCk6IERlbGV0ZS4KCShlbGZfbTY4a19zaXplX2R5bmFtaWNfc2VjdGlvbnMpOiBEb24ndCBzZXQgc2VjdGlvbiBkeW5pbmRpY2llcy4KCShlbGZfbTY4a19maW5pc2hfZHluYW1pY19zZWN0aW9ucyk6IERvbid0IHdyaXRlIHNlY3Rpb24gZHluc3ltcy4KCSogZWxmMzItbWlwcy5jOiBTaW1pbGFybHkuCgkqIGVsZjMyLXBwYy5jOiBTaW1pbGFybHkuCgkqIGVsZjMyLXNwYXJjLmM6IFNpbWlsYXJseS4KCSogZWxmNjQtYWxwaGEuYzogU2ltaWxhcmx5LgoJKiBlbGY2NC1zcGFyYy5jOiBTaW1pbGFybHkuCgoxOTk5LTA3LTEzICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogZWxmMzItbWlwcy5jIChtaXBzX2VsZl9jYWxjdWxhdGVfcmVsb2NhdGlvbik6IERvIG5vdCBjb21wbGFpbgoJd2hlbiBfZ3BfZGlzcCBpcyB1bmRlZmluZWQuICBEbyBub3QgY2hlY2sgUl9NSVBTX0xPMTYgZm9yIG92ZXJmbG93Cgl3aGVuIHRoZSByZWxvY2F0aW9uIGlzIGFnYWluc3QgX2dwX2Rpc3AuCgoxOTk5LTA3LTEyICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogZHdhcmYyLmMgKHJlYWRfYXR0cmlidXRlKTogU3VwcG9ydCBEV19GT1JNX3JlZjguCgkqIGVsZjMyLW1pcHMuYyAobWlwc19lbGZfbGlua19oYXNoX2VudHJ5KTogQ2hhbmdlIG1pcHNfMzJfcmVsb2NzCgl0byBwb3NzaWJseV9keW5hbWljX3JlbG9jcy4gIEFkanVzdCB1c2FnZSB0aHJvdWdob3V0IGNvZGUuCgkoZWxmX21pcHNfaG93dG9fdGFibGUpOiBIYW5kbGUgUl9NSVBTXzY0IGNvcnJlY3RseS4KCShlbGZfbWlwc19jdG9yNjRfaG93dG8pOiBMaWtld2lzZS4KCShtaXBzX2VsZl9jYWxjdWxhdGVfcmVsb2NhdGlvbik6IEhhbmRsZSBSX01JUFNfNjQgbGlrZSBSX01JUFNfMzIuCglBZGp1c3QgaW5kZW50YXRpb24uCgkobWlwc19lbGZfcmVsb2NhdGVfc2VjdGlvbik6IEhhbmRsZSBSX01JUFNfNjQgaW4gMzItYml0IG1vZGUuCgkoX2JmZF9taXBzX2VsZl9jaGVja19yZWxvY3MpOiBIYW5kbGUgUl9NSVBTXzY0IGxpa2UgUl9NSVBTXzMyLgoJVXNlIE1JUFNfRUxGX0dPVF9TSVpFIHRvIGNhbGN1bGF0ZSB0aGUgc2l6ZSBvZiBHT1QgZW50cmllcy4KCSogZWxmNjQtbWlwcy5jIChlbGZfYmFja2VuZF9tYXlfdXNlX3JlbF9wKTogRGVmaW5lLgoKMTk5OS0wNy0xMiAgSWFuIExhbmNlIFRheWxvciAgPGlhbkB6ZW1idS5jb20+CgoJKiBNYWtlZmlsZS5hbTogUmVidWlsZCBkZXBlbmRlbmNpZXMuCgkqIE1ha2VmaWxlLmluOiBSZWJ1aWxkLgoKCSogYmZkLWluLmg6IFJlbW92ZSB0ZXN0cyBvZiBDT0ZGX0lNQUdFX1dJVEhfUEUuCgkqIGJmZC1pbjIuaDogUmVidWlsZC4KCgkqIE1hbnkgZmlsZXM6IENoYW5nZXMgdG8gYXZvaWQgZ2NjIHdhcm5pbmdzOiBBZGQgQVRUUklCVVRFX1VOVVNFRAoJYXMgYXBwcm9wcmlhdGUuICBVc2UgRU1QVFlfSE9XVE8gYXMgYXBwcm9wcmlhdGUuICBGaWxsIGluCglzdHJ1Y3R1cmUgaW5pdGlhbGl6YXRpb25zLiAgQWRkIGNhc3RzLgoJKiByZWxvYy5jIChFTVBUWV9IT1dUTyk6IERlZmluZS4KCSogYmZkLWluMi5oOiBSZWJ1aWxkLgoJKiBjb2ZmLWg4MzAwLmMgKGg4MzAwX3JlbG9jMTZfZXh0cmFfY2FzZXMpOiBSZW1vdmUgdXNlbGVzcwoJY29tcGFyaXNvbnMgYWdhaW5zdCAwLgoJKiBlbGYzMi1zcGFyYy5jIChlbGYzMl9zcGFyY19tZXJnZV9wcml2YXRlX2JmZF9kYXRhKTogQ2hhbmdlCglwcmV2aW91c19pYmZkX2VfZmxhZ3MgdG8gdW5zaWduZWQgbG9uZy4KCSogdm1zLmggKHN0cnVjdCB2bXNfcHJpdmF0ZV9kYXRhX3N0cnVjdCk6IENoYW5nZSBzZWN0aW9uX2NvdW50IHRvCgl1bnNpZ25lZC4KCSogdm1zLWdzZC5jIChfYmZkX3Ztc19zbHVycF9nc2QpOiBDaGFuZ2UgcHNlY3RfaWR4IHRvIHVuc2lnbmVkLgoJKF9iZmRfdm1zX3dyaXRlX2dzZCk6IENoYW5nZSBzeW1udW0gdG8gdW5zaWduZWQuCgkqIHZtcy1oZHIuYyAoX2JmZF92bXNfd3JpdGVfaGRyKTogQ2hhbmdlIHN5bW51bSB0byB1bnNpZ25lZC4KCSogdm1zLXRpci5jIChldGlyX3N0YSk6IENoYW5nZSBwc2VjdCB0byB1bnNpZ25lZC4KCShhbGxvY19zZWN0aW9uKTogQ2hhbmdlIGlkeCB0byB1bnNpZ25lZC4KCSh0aXJfc3RhLCB0aXJfY3RsKTogQ2hhbmdlIHBzZWN0IHRvIHVuc2lnbmVkLgoJKF9iZmRfdm1zX3dyaXRlX3Rpcik6IENoYW5nZSBsZW4gYW5kIGJlZm9yZSB0byBiZmRfc2l6ZV90eXBlLgoJKiB2bXMuYyAocHJpdl9zZWN0aW9uX2NvdW50KTogQ2hhbmdlIHRvIHVuc2lnbmVkLgoKMTk5OS0wNy0xMiAgQW5kcmVhcyBTY2h3YWIgIDxzY2h3YWJAc3VzZS5kZT4KCgkqIGVsZjMyLW02OGsuYzogQWRkIHNvbWUgQVRUUklCVVRFX1VOVVNFRC4KCSogbTY4a2xpbnV4LmM6IExpa2V3aXNlLgoKMTk5OS0wNy0xMiAgSWFuIExhbmNlIFRheWxvciAgPGlhbkB6ZW1idS5jb20+CgoJKiBNYW55IGZpbGVzOiBDaGFuZ2VzIHRvIGF2b2lkIGdjYyB3YXJuaW5nczogUmVtb3ZlIHVudXNlZCBsb2NhbAoJdmFyaWFibGVzLiAgQWRkIGRlZmF1bHQgY2FzZSB0byBlbnVtIHN3aXRjaGVzLgoJKiBjb2ZmLWFybS5jIChiZmRfYXJtX2FsbG9jYXRlX2ludGVyd29ya2luZ19zZWN0aW9ucyk6IE9ubHkKCWNvbXBpbGUgaWYgbm90IENPRkZfSU1BR0VfV0lUSF9QRS4KCShyZWNvcmRfYXJtX3RvX3RodW1iX2dsdWUsIHJlY29yZF90aHVtYl90b19hcm1fZ2x1ZSk6IExpa2V3aXNlLgoJKGJmZF9hcm1fZ2V0X2JmZF9mb3JfaW50ZXJ3b3JraW5nKTogTGlrZXdpc2UuCgkoYmZkX2FybV9wcm9jZXNzX2JlZm9yZV9hbGxvY2F0aW9uKTogTGlrZXdpc2UuCgkqIGVwb2MtcGVpLWFybS5jOiBEb24ndCByZW5hbWUgYmZkX2FybSBmdW5jdGlvbnMuCgkqIHBlaS1hcm0uYzogTGlrZXdpc2UuCgkqIGVsZjMyLW1pcHMuYyAobWlwc19lbGZfbGlua19oYXNoX3RhYmxlX2NyZWF0ZSk6IERvbid0IGRlY2xhcmUuCgkoTUlQU19FTEZfQUREX0RZTkFNSUNfRU5UUlkpOiBDb3JyZWN0IGxhc3QgY2hhbmdlLgoJKG1pcHNfZWxmX2dvdDE2X2VudHJ5KTogUHV0IHBhcmVucyBhcm91bmQgJiBpbiBib2R5IG9mID09LgoJKG1pcHNfZWxmX2NhbGN1bGF0ZV9yZWxvY2F0aW9uKTogQ29ycmVjdCB0ZXN0IGZvciBlbXB0eSBzdHJpbmcuCgkqIHZtcy1nc2QuYzogVXNlIF9iZmRfZXJyb3JfaGFuZGxlciByYXRoZXIgdGhhbiBmcHJpbnRmIHRvCglzdGRlcnIuCgkqIHZtcy1taXNjLmMgKF9iZmRfdm1zX2xlbmd0aF9oYXNoX3N5bWJvbCk6IENvcnJlY3Qgc3ByaW50ZgoJZm9ybWF0LgoKMTk5OS0wNy0xMSAgSWFuIExhbmNlIFRheWxvciAgPGlhbkB6ZW1idS5jb20+CgoJKiBNYW55IGZpbGVzOiBDaGFuZ2VzIHRvIGF2b2lkIGdjYyB3YXJuaW5nczogQWRkIEFUVFJJQlVURV9VTlVTRUQKCWFzIGFwcHJvcHJpYXRlLiAgRmlsbCBpbiBzdHJ1Y3R1cmUgaW5pdGlhbGl6YXRpb25zLiAgQWRkIHZhcmlhYmxlCglpbml0aWFsaXphdGlvbnMuICBBZGQgY2FzdHMuCgkqIGR3YXJmMS5jIChwYXJzZV9saW5lX3RhYmxlKTogQ2hhbmdlIGVhY2hMaW5lIHRvIHVuc2lnbmVkIGxvbmcuCgkoZHdhcmYxX3VuaXRfZmluZF9uZWFyZXN0X2xpbmUpOiBDaGFuZ2UgaSB0byB1bnNpZ25lZCBsb25nLgoKCSogZWxmLmMgKGJmZF9lbGZfaGFzaCk6IENoYW5nZSBwYXJhbWV0ZXIgZnJvbSB1bnNpZ25lZCBjaGFyICogdG8KCWNoYXIgKi4KCSogZWxmLWJmZC5oIChiZmRfZWxmX2hhc2gpOiBVcGRhdGUgZGVjbGFyYXRpb24uCgkqIGVsZmxpbmsuaCAoTkFNRShiZmRfZWxmLHNpemVfZHluYW1pY19zZWN0aW9ucykpOiBSZW1vdmUgY2FzdHMKCXdoZW4gY2FsbGluZyBiZmRfZWxmX2hhc2guCgoxOTk5LTA3LTExICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogbGliYmZkLmMgKGJmZF9wdXRfOCk6IE1ha2UgaXQgb2YgdHlwZSBgdm9pZCcuCgkqIGJmZC1pbjIuaDogUmVnZW5lcmF0ZWQuCgkqIGVsZjMyLW1pcHMuYyAoTUlQU19FTEZfQUREX0RZTkFNSUNfRU5UUlkpOiBDb25kaXRpb25hbGl6ZQoJZm9yIDMyLWJpdCBob3N0cy4KCShfYmZkX21pcHNfZWxmX2ZpbmFsX2xpbmspOiBMaWtld2lzZS4KCgkqIGVsZmxpbmsuaCAoZWxmX2xpbmtfcmVhZF9yZWxvY3NfZnJvbV9zZWN0aW9uKTogQmUgdHlwZS1jb3JyZWN0LgoKVGh1IEp1bCAgOCAxMjozMjoyMyAxOTk5ICBKb2huIERhdmlkIEFuZ2xpbiA8ZGF2ZUBoaWF1bHkxLmhpYS5ucmMuY2E+CgoJKiBjb25maWcuYmZkIChocHBhKi0qLWxpbnV4LWdudSopOiBOZXcgdGFyZ2V0CgoxOTk5LTA3LTA3ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogZWxmLWJmZC5oIChfYmZkX21pcHNfZWxmX3NlY3Rpb25fZnJvbV9zaGRyKTogQ29uc3RpZnkuCgkoX2JmZF9taXBzX2VsZl9jcmVhdGVfZHluYW1pY19zZWN0aW9ucyk6IE5ldyBmdW5jdGlvbi4KCShfYmZkX21pcHNfZWxmX2FkZF9zeW1ib2xfaG9vayk6IExpa2V3aXNlLgoJKF9iZmRfbWlwc19lbGZfYWRqdXN0X2R5bmFtaWNfc3ltYm9sKTogTGlrZXdpc2UuCgkoX2JmZF9taXBzX2VsZl9maW5pc2hfZHluYW1pY19zeW1ib2wpOiBMaWtld2lzZS4JCgkoX2JmZF9taXBzX2VsZl9maW5pc2hfZHluYW1pY19zZWN0aW9ucyk6IExpa2V3aXNlLgoJKF9iZmRfbWlwc19lbGZfZ2NfbWFya19ob29rKTogTGlrZXdpc2UuCgkoX2JmZF9taXBzX2VsZl9nY19zd2VlcF9ob29rKTogTGlrZXdpc2UuCgkoX2JmZF9taXBzX2VsZl9hbHdheXNfc2l6ZV9zZWN0aW9ucyk6IExpa2V3aXNlLgoJKF9iZmRfbWlwc19lbGZfc2l6ZV9keW5hbWljX3NlY3Rpb25zKTogTGlrZXdpc2UuCgkoX2JmZF9taXBzX2VsZl9jaGVja19yZWxvY3MpOiBMaWtld2lzZS4KCShfYmZkX21pcHNfZWxmX2xpbmtfaGFzaF90YWJsZV9jcmVhdGUpOiBMaWtld2lzZS4KCShfYmZkX21pcHNfZWxmX3ByaW50X3ByaXZhdGVfZGF0YSk6IExpa2V3aXNlLgoJKF9iZmRfbWlwc19lbGZfbGlua19vdXRwdXRfc3ltYm9sX2hvb2spOiBMaWtld2lzZS4KCShfYmZkX21pcHNfZWxmX2ZpbmFsX2xpbmspOiBMaWtld2lzZS4KCShfYmZkX21pcHNfZWxmX2FkZGl0aW9uYWxfcHJvZ3JhbV9oZWFkZXJzKTogTGlrZXdpc2UuCgkoX2JmZF9taXBzX2VsZl9tb2RpZnlfc2VnbWVudF9tYXApOiBMaWtld2lzZS4KCShfYmZkX21pcHNfZWxmX3JlbG9jYXRlX3NlY3Rpb24pOiBMaWtld2lzZS4KCSogZWxmMzItbWlwcy5jIChtaXBzX2VsZjMyX29iamVjdF9wKTogTW92ZSBjb250ZW50cyBpbnRvCglfYmZkX21pcHNfZWxmX29iamVjdF9wLgoJKG1pcHNfZWxmX2FkZGl0aW9uYWxfcHJvZ3JhbV9oZWFkZXJzKTogUmVuYW1lIHRvCglfYmZkX21pcHNfZWxmX2FkZGl0aW9uYWxfcHJvZ3JhbV9oZWFkZXJzLgoJKG1pcHNfZWxmX21vZGlmeV9zZWdtZW50X21hcCk6IFJlbmFtZSB0bwoJX2JmZF9taXBzX2VsZl9tb2RpZnlfc2VnbWVudF9tYXAuCgkoZWxmX21pcHNfYWJpX25hbWUpOiBDaGFuZ2UgcHJvdG90eXBlLgoJKG1pcHNfZWxmMzJfc2VjdGlvbl9mcm9tX3NoZHIpOiBNZXJnZSBpbnRvCglfYmZkX21pcHNfZWxmX3NlY3Rpb25fZnJvbV9zaGRyLgoJKG1pcHNfZWxmMzJfc2VjdGlvbl9wcm9jZXNzaW5nKTogTWVyZ2UgaW50bwoJX2JmZF9taXBzX2VsZl9zZWN0aW9uX3Byb2Nlc3NpbmcuCgkobWlwc19lbGZfZmluYWxfbGluayk6IFJlbmFtZSB0byBfYmZkX21pcHNfZWxmX2ZpbmFsX2xpbmsuICBJbnZva2UKCXRoZSByaWdodCBiYWNrLWVuZCBFTEYgbGlua2VyLgoJKG1pcHNfZWxmX3JlbG9jYXRlX3NlY3Rpb24pOiBSZW5hbWUgdG8KCV9iZmRfbWlwc19lbGZfcmVsb2NhdGVfc2VjdGlvbi4gIENsZWFuIHVwLiAgQWRqdXN0IGZvciA2NC1iaXQgY29kZS4KCShtaXBzX2VsZl9saW5rX291dHB1dF9zeW1ib2xfaG9vayk6IFJlbmFtZSB0bwoJX2JmZF9taXBzX2VsZl9saW5rX291dHB1dF9zeW1ib2xfaG9vay4KCShtaXBzX2VsZl9jcmVhdGVfZHluYW1pY19zZWN0aW9uKTogUmVuYW1lIHRvCglfYmZkX21pcHNfZWxmX2NyZWF0ZV9keW5hbWljX3NlY3Rpb24uCgkobWlwc19lbGZfY2hlY2tfcmVsb2NzKTogUmVuYW1lIHRvIF9iZmRfbWlwc19lbGZfY2hlY2tfcmVsb2NzLgoJQWRqdXN0IGZvciA2NC1iaXQgY29kZS4gIFVzZSBtaXBzX2VsZl9nb3Rfc2VjdGlvbi4KCShtaXBzX2VsZl9hZGp1c3RfZHluYW1pY19zeW1ib2wpOiBSZW5hbWUgdG8KCV9iZmRfbWlwc19lbGZfYWRqdXN0X2R5bmFtaWNfc3ltYm9sLiAgVXNlCgltaXBzX2VsZl9hbGxvY2F0ZV9keW5hbWljX3JlbG9jYXRpb25zLgoJKG1pcHNfZWxmX2ZpbmlzaF9keW5hbWljX3N5bWJvbCk6IFJlbmFtZSB0bwoJX2JmZF9taXBzX2VsZl9maW5pc2hfZHluYW1pY19zeW1ib2wuICBVc2UgbWlwc19lbGZfZ290X3NlY3Rpb24uCglBZGp1c3QgZm9yIDY0LWJpdCBjb2RlLgoJKG1pcHNfZWxmX2ZpbmlzaF9keW5hbWljX3NlY3Rpb25zKTogUmVuYW1lIHRvCglfYmZkX21pcHNfZWxmX2ZpbmlzaF9keW5hbWljX3NlY3Rpb25zLiAgQWRqdXN0IGZvciA2NC1iaXQgY29kZS4KCShtaXBzX2VsZl9hbHdheXNfc2l6ZV9zZWN0aW9ucyk6IFJlbmFtZSB0bwoJX2JmZF9taXBzX2VsZl9hbHdheXNfc2l6ZV9zZWN0aW9ucy4KCShtaXBzX2VsZl9hZGRfc3ltYm9sX2hvb2spOiBSZW5hbWUgdG8KCV9iZmRfbWlwc19lbGZfYWRkX3N5bWJvbF9ob29rLgoJKG1pcHNfZWxmX25leHRfbG8xNl9hZGRlbmQpOiBDb25zdGlmeS4KCShtaXBzX2VsZl9jYWxjdWxhdGVfcmVsb2NhdGlvbik6IExpa2V3aXNlLgoJKG1pcHNfZWxmX29idGFpbl9jb250ZW50cyk6IExpa2V3aXNlLgoJKG1pcHNfZWxmX3BlcmZvcm1fcmVsb2NhdGlvbik6IExpa2V3aXNlLgoJKG1pcHNfZWxmX2NyZWF0ZV9keW5hbWljX3JlbG9jYXRpb24pOiBMaWtld2lzZS4KCShtaXBzX2VsZl9hbGxvY2F0ZV9keW5hbWljX3JlbG9jYXRpb25zKTogTmV3IGZ1bmN0aW9uLgoJKE1JUFNfRUxGX1JFTF9EWU5fU0VDVElPTl9OQU1FKTogTmV3IG1hY3JvLgoJKE1JUFNfRUxGX1JFTF9TSVpFKTogTGlrZXdpc2UuCgkoTUlQU19FTEZfRFlOX1NJWkUpOiBMaWtld2lzZS4KCShNSVBTX0VMRl9HT1RfU0laRSk6IExpa2V3aXNlLgoJKE1JUFNfRUxGX1NZTV9TSVpFKTogTGlrZXdpc2UuCgkoTUlQU19FTEZfTE9HX0ZJTEVfQUxJR04pOiBMaWtld2lzZS4KCShNSVBTX0VMRl9HRVRfV09SRCk6IExpa2V3aXNlLgoJKE1JUFNfRUxGX1BVVF9XT1JEKTogTGlrZXdpc2UuCgkoTUlQU19FTEZfQUREX0RZTkFNSUNfRU5UUlkpOiBMaWtld2lzZS4KCShTVFVCX0xXKTogQ29uZGl0aW9uYWxpemUgZm9yIDY0LWJpdCB2YWx1ZS4KCShlbGZfbWlwc19ob3d0b190YWJsZSk6IEFkZCBSX01JUFNfSElHSEVSIGFuZCBSX01JUFNfSElHSEVTVAoJZW50cmllcy4KCShfYmZkX21pcHNfZWxmX21lcmdlX3ByaXZhdGVfYmZkX2RhdGEpOiBNZXJnZSBlX2lkZW50W0VJX0NMQVNTXS4KCUNoZWNrIGl0IGZvciBpbmNvbnNpc3RlbmN5LgoJKF9iZmRfbWlwc19lbGZfcHJpbnRfcHJpdmF0ZV9iZmRfZGF0YSk6IFByaW50IEFCST02NCBmb3IgNjQtYml0CglBQkkuCgkoX2JmZF9taXBzX2VsZl9mYWtlX3NlY3Rpb25zKTogUmVtb3ZlIGR1cGxpY2F0ZSBoYW5kbGluZyBvZgoJLm1zeW0uIAoJKG1pcHNfZWxmX2dsb2JhbF9nb3RfaW5kZXgpOiBVc2UgTUlQU19FTEZfR09UX1NJWkUuCgkobWlwc19lbGZfZ290X29mZnNldF9mcm9tX2luZGV4KTogVXNlIG1pc3BfZWxmX2dvdF9zZWN0aW9uLgoJKG1pcHNfZWxmX2NyZWF0ZV9sb2NhbF9nb3RfZW50cnkpOiBVc2UgTUlQU19FTEZfR09UX1NJWkUuCgkobWlwc19lbGZfbG9jYWxfZ290X2luZGV4KTogTGlrZXdpc2UuCgkobWlwc19lbGZfZ290X3BhZ2UpOiBMaWtld2lzZS4KCShtaXBzX2VsZl9nb3RfaW5mbyk6IExpa2V3aXNlLgoJKG1pcHNfZWxmX2NyZWF0ZV9keW5hbWljX3JlbG9jYXRpb24pOiBIYW5kbGUgMzItYml0LzY0LWJpdCBzcGxpdC4KCShFTEZfRFlOQU1JQ19JTlRFUlBSRVRFUik6IEhhbmRsZSA2NC1iaXQgY29kZS4KCShtaXBzX2VsZl9jcmVhdGVfZHluYW1pY19zZWN0aW9ucyk6IFVzZSBNSVBTX0VMRl9MT0dfRklMRV9BTElHTiwKCWluc3RlYWQgb2YgY29uc3RhbnQgYDInLgoJKG1pcHNfZWxmX2NyZWF0ZV9nb3Rfc2VjdGlvbik6IFRpZHkuICBVc2UgTUlQU19FTEZfR09UX1NJWkUuCgkobWlwc19lbGZfY3JlYXRlX21zeW1fc2VjdGlvbik6IFVzZSBNSVBTX0VMRl9MT0dfRklMRV9BTElHTi4KCShtaXBzX2VsZl9zaXplX2R5bmFtaWNfc2VjdGlvbnMpOiBVc2UKCU1JUFNfRUxGX1JFTF9EWU5fU0VDVElPTl9OQU1FLCBNSVBTX0VMRl9HT1RfU0laRSwKCU1JUFNfRUxGX0FERF9EWU5BTUlDX0VOVFJZLiAgUmVtb3ZlICNpZiAwJ2QgY29kZS4KCUFkanVzdCBhbGwgcmVsZXZlYW50IGVudHJpZXMgaW4gZWxmIGJhY2tlbmQgdGFibGUuCgkqIGVsZjY0LW1pcHMuYyAobWlwc19lbGY2NF9zZWN0aW9uX2Zyb21fc2hkcik6IFJlbW92ZS4KCShtaXBzX2VsZjY0X3NlY3Rpb25fcHJvY2Vzc2luZyk6IExpa2V3aXNlLgoJQWRqdXN0IGVsZiBiYWNrZW5kIGVudHJpZXMgdG8gdXNlIF9iZmRfbWlwc19lbGYgdmFyaWFudHMgbm93CglwdWJsaWNseSBhdmFpbGFibGUuCgkKCSogZWxmbGluay5oIChlbGZfbGlua19jcmVhdGVfZHluYW1pY19zZWN0aW9ucyk6IEhhbmRsZSBub24tc3RhbmRhcmQKCWhhc2gtZW50cnkgc2l6ZXMuCgkoc2l6ZV9keW5hbWljX3NlY3Rpb25zKTogTGlrZXdpc2UuCgkoZWxmX2xpbmtfb3V0cHV0X2V4dHN5bSk6IExpa2V3aXNlLgoJKiBlbGYuYzogKGVsZl9mYWtlX3NlY3Rpb25zKTogTGlrZXdpc2UuCgkqIGxpYmJmZC5jIChiZmRfZ2V0KTogTmV3IG1hY3JvLgoJKGJmZF9wdXQpOiBMaWtld2lzZS4KCSogYmZkLWluMi5oOiBSZWdlbmVyYXRlZC4KCjE5OTktMDctMDcgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBlbGYtYmZkLmggKGVsZl9zaXplX2luZm8pOiBBZGQgaGFzaF9lbnRyeV9zaXplLAoJaW50X3JlbHNfcGVyX2V4dF9yZWwsIHN3YXBfZHluX291dCwgc3dhcF9yZWxvY19pbiwgc3dhcF9yZWxvY19vdXQsCgl3YXBfcmVsb2NhX2luLCBhbmQgc3dhcF9yZWxvY2Ffb3V0LiAKCSogZWxmbGluay5oIChlbGZfbGlua19yZWFkX3JlbG9jc19mcm9tX3NlY3Rpb24pOiBBZGp1c3QgdG8gaGFuZGxlCgltdWx0aXBsZSBpbnRlcm5hbCByZWxvY2F0aW9ucyBwZXIgZXh0ZXJuYWwgcmVsb2NhdGlvbi4KCShsaW5rX3JlYWRfcmVsb2NzKTogTGlrZXdpc2UuCgkoZWxmX2JmZF9maW5hbF9saW5rKTogTGlrZXdpc2UuCgkoZWxmX2xpbmtfaW5wdXRfYmZkKTogTGlrZXdpc2UuCgkoZWxmX2djX21hcmspOiBMaWtld2lzZS4KCShlbGZfZ2Nfc21hc2hfdW51c2VkX3Z0ZW50cnlfcmVsb2NzKTogTGlrZXdpc2UuCgkqIGVsZmNvZGUuaCAoZWxmX3N3YXBfZHluX291dCk6IEFkanVzdCB0eXBlIHRvIG1hdGNoCgllbGZfc3dhcF9keW5faW4uCgkoc2l6ZV9pbmZvKTogQWRkIGVudHJpZXMgZm9yIG5ldyBmaWVsZHMuCgkqIGVsZjY0LW1pcHMuYyAobWlwc19lbGY2NF9zd2FwX3JlbG9jX291dCk6IEVuYWJsZS4KCShtaXBzX2VsZjY0X2JlX3N3YXBfcmVsb2NfaW4pOiBOZXcgZnVuY3Rpb24uCgkobWlwc19lbGY2NF9iZV9zd2FwX3JlbG9jX291dCk6IExpa2V3aXNlLgoJKG1pcHNfZWxmNjRfYmVfc3dhcF9yZWxvY2FfaW4pOiBMaWtld2lzZS4KCShtaXBzX2VsZjY0X2JlX3N3YXBfcmVsb2NhX291dCk6IExpa2V3aXNlLgoJKG1pcHNfZWxmNjRfc2l6ZV9pbmZvKTogQWRkIGVudHJpZXMgZm9yIG5ldyBmaWVsZHMuCgkKMTk5OS0wNy0wNyAgSWFuIExhbmNlIFRheWxvciAgPGlhbkB6ZW1idS5jb20+CgoJKiBlbGZsaW5rLmggKGVsZl9iZmRfZmluYWxfbGluayk6IEFzc2VydCB0aGF0IHNlY3Rpb24gcmVsb2NfY291bnQKCWZpZWxkIGVxdWFscyB0aGUgbmV3IHJlbF9jb3VudCBmaWVsZC4KCShlbGZfbGlua19pbnB1dF9iZmQpOiBXaGVuIGRvaW5nIGEgcmVsb2NhdGVhYmxlIGxpbmssIHVzZSB0aGUgbmV3CglyZWxfY291bnQgZmllbGQgcmF0aGVyIHRoYW4gdGhlIHJlbG9jX2NvdW50IGZpZWxkLgoJKGVsZl9yZWxvY19saW5rX29yZGVyKTogTGlrZXdpc2UuCgkoZWxmX2ZpbmlzaF9wb2ludGVyX2xpbmtlcl9zZWN0aW9uKTogTGlrZXdpc2UuCgoJQmFzZWQgb24gcGF0Y2ggZnJvbSBILkouIEx1IDxoamxAZ251Lm9yZz46CgkqIGVsZmxpbmsuaCAoZWxmX21lcmdlX3N5bWJvbCk6IFBlcm1pdCBhIG5vbi13ZWFrIGRlZmluaXRpb24gaW4gYQoJc2hhcmVkIGxpYnJhcnkgdG8gb3ZlcnJpZGUgYSB3ZWFrIGRlZmluaXRpb24gaW4gYSByZWd1bGFyIG9iamVjdC4KClR1ZSBKdWwgIDYgMTA6MjM6MzkgMTk5OSAgSmVmZnJleSBBIExhdyAgKGxhd0BjeWdudXMuY29tKQoKCSogbGliaHBwYS5oOiBSZXZlcnQgSnVseSAyLCAxOTk5IHBhdGNoLgoKCSogZWxmLWhwcGEuaCAoX2JmZF9lbGZfaHBwYV9nZW5fcmVsb2NfdHlwZSk6IFQgbW9kZSBzZWxlY3RvcnMKCW5lZWQgdG8gZ2VuZXJhdGUgRExUSU5EIHJlbG9jYXRpb25zLCBub3QgRExUUkVMIHJlbG9jYXRpb25zLgoKMTk5OS0wNy0wNSAgTmljayBDbGlmdG9uICA8bmlja2NAY3lnbnVzLmNvbT4KCgkqIGNvZmZjb2RlLmggKGNvZmZfc2V0X2FyY2hfbWFjaF9ob29rKTogUmVjb2duaXNlIGFybSA1CglhcmNoaXRlY3R1cmVzLiAKCShjb2ZmX3NldF9mbGFncyk6IFJlY29nbmlzZSBhcm0gNSBhcmNoaXRlY3R1cmVzLgoKCSogY3B1LWFybS5jOiBBZGQgc3VwcG9ydCBmb3Igc3Ryb25nYXJtIGFuZCBhcm05IGNwdXMuCglBZGQgc3VwcG9ydCBmb3IgYXJtdjUgYXJjaGl0ZWN0dXJlLgoKCSogYXJjaHVyZXMuYzogQWRkIGJmZF9tYWNoX2FybV81IGFuZCBiZmRfbWFjaF9hcm1fNVQuCgkKCSogcmVsb2MuYzogQWRkIG5ldywgYXNzZW1ibGVyIG9ubHksIEFSTSByZWxvYzoKCUJGRF9SRUxPQ19BUk1fQURSTF9JTU1FRElBVEUuCgkKCSogYmZkLWluMi5oOiBSZWdlbmVyYXRlLgoKMTk5OS0wNy0wMiAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGR3YXJmMi5jIChwYXJzZV9jb21wX3VuaXQpOiBBZGQgQUJCUkVWX0xFTkdUSCBwYXJhbWV0ZXIuCgkoX2JmZF9kd2FyZjJfZmluZF9uZWFyZXN0X2xpbmUpOiBBZGQgQUREUl9TSVpFIHBhcmFtZXRlci4KCSogZWxmLmMgKF9iZmRfZWxmX2ZpbmRfbmVhcmVzdF9saW5lKTogUGFzcyBpdC4KCSogZWxmMzItYXJtLmggKGVsZjMyX2FybV9maW5kX25lYXJlc3RfbGluZSk6IExpa2V3aXNlLgoJKiBlbGYzMi1taXBzLmMgKEFCSV82NF9QKTogTmV3IG1hY3JvLgoJKElSSVhfQ09NUEFUKTogV2UgYXJlIElSSVg2LWNvbXBhdGlibGUgaWYgQUJJXzY0X1AuCgkoX2JmZF9taXBzX2VsZl9maW5kX25lYXJlc3RfbGluZSk6IEFkanVzdCBjYWxsIHRvCglfYmZkX2R3YXJmMl9maW5kX25lYXJlc3RfbGluZS4KCSogbGliYmZkLWluLmggKF9iZmRfZHdhcmYyX2ZpbmRfbmVhcmVzdF9saW5lKTogVXBkYXRlIHByb3RvdHlwZS4KCSogbGliYmZkLmg6IFJlZ2VuZXJhdGVkLgoKMTk5OS0wNy0wMiAgSWFuIExhbmNlIFRheWxvciAgPGlhbkB6ZW1idS5jb20+CgoJKiBjb25maWcuYmZkOiBBZGQgKiBhdCB0aGUgZW5kIG9mIGlbMzQ1Nl04Ni0qLXVuaXh3YXJlLgoKRnJpIEp1bCAgMiAxMjoyMToxMCAxOTk5ICBKZWZmcmV5IEEgTGF3ICAobGF3QGN5Z251cy5jb20pCgoJKiBsaWJocHBhLmggKEhQUEFfUl9BUkdfUkVMT0MpOiBEZWxldGUuCgkoSFBQQV9SX0NPTlNUQU5ULCBIUFBBX1JfQURERU5EKTogTGlrZXdpc2UuCgoxOTk5LTA3LTAxICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogZWxmLWJmZC5oIChiZmRfZWxmX3NlY3Rpb25fZGF0YSk6IEFkZCByZWxfY291bnQgYW5kIHJlbF9jb3VudDIKCWZpZWxkcy4KCShfYmZkX2VsZl9pbml0X3JlbG9jX3NoZHIpOiBOZXcgZnVuY3Rpb24uCgkqIGVsZi5jIChfYmZkX2VsZl9uZXdfc2VjdGlvbl9ob29rKTogVXNlIGJmZF96YWxsb2MsIHJhdGhlciB0aGFuCgliZmRfYWxsb2MgZm9sbG93ZWQgYnkgbWVtc2V0LgoJKF9iZmRfZWxmX2luaXRfcmVsb2Nfc2hkcik6IE5ldyBmdW5jdGlvbiwgc3BsaXQgb3V0IGZyb20gLi4uCgkoZWxmX2Zha2Vfc2VjdGlvbnMpOiBIZXJlLgoJKGFzc2lnbl9zZWN0aW9uX251bWJlcnMpOiBBc3NpZ24gc2VjdGlvbiBudW1iZXJzIGZvciB0aGUgc2Vjb25kCglyZWxvY2F0aW9uIHNlY3Rpb24sIGlmIHJlcXVpcmVkLgoJKiBlbGZsaW5rLmggKGVsZl9saW5rX291dHB1dF9yZWxvY3MpOiBOZXcgZnVuY3Rpb24uCgkoZWxmX2xpbmtfc2l6ZV9yZWxvY19zZWN0aW9uKTogTGlrZXdpc2UuCgkoZWxmX2JmZF9maW5hbF9saW5rKTogVXNlIGVsZl9saW5rX3NpemVfcmVsb2Nfc2VjdGlvbi4KCShlbGZfbGlua19pbnB1dF9iZmQpOiBVc2UgZWxmX2xpbmtfb3V0cHV0X3JlbG9jcy4KCQoJKiBlbGYzMi1taXBzLmMgKF9iZmRfbWlwc19lbGZfZmFrZV9zZWN0aW9ucyk6IFVzZQoJX2JmZF9lbGZfaW5pdF9yZWxvY19zaGRyIHRvIGluaXRpYWxpemUgcmVsX2hkcjIuCgpUaHUgSnVsICAxIDEzOjU4OjQ4IDE5OTkgIEplZmZyZXkgQSBMYXcgIChsYXdAY3lnbnVzLmNvbSkKCgkqIGVsZi1ocHBhLmggKF9iZmRfZWxmX2hwcGFfZ2VuX3JlbG9jX3R5cGUpOiBIYW5kbGUgUl9QQ1JFTF9DQUxMCgl3aXRoIDIyYml0IGZvcm1hdC4KCjE5OTktMDYtMjggIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBlbGYzMi1taXBzLmMgKG1pcHNfZWxmX2dvdF9pbmZvKTogTW92ZSBkZWNsYXJhdGlvbiBiZWZvcmUKCXByb3RvdHlwZXMuICBDaGFuZ2UgZ2xvYmFsX2dvdHN5bSB0byBiZSBhIHBvaW50ZXIgdG8gYSBoYXNoIGVudHJ5LAoJcmF0aGVyIHRoYW4gYSBudW1iZXIgaW5kZXguCgkobWlwc19lbGZfbGlua19oYXNoX2VudHJ5KTogTW92ZSBkZWNsYXJhdGlvbiBiZWZvcmUgcHJvdG90eXBlcy4KCShtaXBzX2VsZl9pcml4Nl9maW5pc2hfZHluYW1pY19zeW1ib2wpOiBOZXcgZnVuY3Rpb24uCgkobWlwc19lbGZfc2lnbl9leHRlbmQpOiBMaWtld2lzZS4KCShtaXBzX2VsZl9oaWdoKTogTGlrZXdpc2UuCgkobWlwc19lbGZfaGlnaGVyKTogTGlrZXdpc2UuCgkobWlwc19lbGZfaGlnaGVzdCk6IExpa2V3aXNlLgoJKG1pcHNfZWxmX2dsb2JhbF9nb3RfaW5kZXgpOiBMaWtld2lzZS4KCShtaXBzX2VsZl9sb2NhbF9nb3RfaW5kZXgpOiBMaWtld2lzZS4KCShtaXBzX2VsZl9nb3Rfb2Zmc2V0X2Zyb21faW5kZXgpOiBMaWtlaXdzZS4KCShtaXBzX2VsZl9yZWNvcmRfZ2xvYmFsX2dvdF9zeW1ib2wpOiBMaWtld2lzZS4KCShtaXBzX2VsZl9nb3RfcGFnZSk6IExpa2V3aXNlLgoJKG1pcHNfZWxmX25leHRfbG8xNl9hZGRlbmQpOiBMaWtld2lzZS4KCShtaXBzX2VsZl9jYWxjdWxhdGVfcmVsb2NhdGlvbik6IExpa2V3aXNlLgoJKG1pcHNfZWxmX29idGFpbl9jb250ZW50cyk6IExpa2V3aXNlLgoJKG1pcHNfZWxmX3BlcmZvcm1fcmVsb2NhdGlvbik6IExpa2V3aXNlLgoJKG1pcHNfZWxmX2Fzc2lnbl9ncCk6IExpa2V3aXNlLgoJKG1pcHNfZWxmX3NvcnRfaGFzaF90YWJsZV9mKTogTGlrZXdpc2UuCgkobWlwc19lbGZfc29ydF9oYXNoX3RhYmxlKTogTGlrZXdpc2UuCgkobWlwc19lbGZfZ290X3NlY3Rpb24pOiBMaWtld2lzZS4KCShtaXBzX2VsZl9nb3RfaW5mbyk6IExpa2V3aXNlLgoJKG1pcHNfZWxmX2NyZWF0ZV9sb2NhbF9nb3RfZW50cnkpOiBMaWtld2lzZS4KCShtaXBzX2VsZl9nb3QxNl9lbnRyeSk6IExpa2V3aXNlLgoJKG1pcHNfZWxmX2NyZWF0ZV9keW5hbWljX3JlbG9jYXRpb24pOiBMaWtld2lzZS4KCShlbGZfbWlwc19ob3d0b190YWJsZSk6IEFkZCBkZXNjcmlwdGlvbiBvZiBSX01JUFNfU0NOX0RJU1AuCgkobWlwc19lbGZfZmluYWxfZ3ApOiBVc2UgbWlwc19lbGZfYXNzaWduX2dwLgoJKF9iZmRfbWlwc19lbGZfc3ltYm9sX3Byb2Nlc3NpbmcpOiBEb24ndCBtb3ZlIFNITl9DT01NT04gc3ltYm9scwoJaW50byBTSE5fU0NPTU1PTiBhdXRvbWF0aWNhbGx5IG9uIElSSVg2LgoJKG1pcHNfZWxmX2FkZF9zeW1ib2xfaG9vayk6IExpa2V3aXNlLgoJKG1pcHNfZWxmX3JlbG9jYXRlX3NlY3Rpb24pOiBSZXdyaXRlLCB1c2luZwoJbWlwc19lbGZfY2FsY3VsYXRlX3JlbG9jYXRpb24gYW5kIG1pcHNfZWxmX3BlcmZvcm1fcmVsb2NhdGlvbi4KCShtaXBzX2VsZl9jcmVhdGVfZHluYW1pY19zZWN0aW9uKTogVXNlIE1JUFNfRUxGX1NUVUJfU0VDVElPTl9OQU1FLgoJRG9uJ3QgZGVhbCB3aXRoIC5ybGRfbWFwIG9uIElSSVg2LgoJKG1pcHNfZWxmX2NyZWF0ZV9nb3Rfc2VjdGlvbik6IEFkanVzdCB1c2Ugb2YgZ2xvYmFsX2dvdHN5bS4gIFNldAoJc2VjdGlvbiBmbGFncyBhcHByb3ByaWF0ZWx5IGZvciAuZ290LgoJKG1pcHNfZWxmX2NoZWNrX3JlbG9jcyk6IEhhbmRsZSBJUklYNiByZWxvY2F0aW9ucyBtYWtpbmcgdXNlIG9mCgl0aGUgZ290LiAgQ2FsbCBtaXBzX2VsZl9yZWNvcmRfZ2xvYmFsX2dvdF9zeW1ib2wgYW5kIGFsbG9jYXRlCglsb2NhbCBnb3Qgc3BhY2UgYXBwcm9wcmlhdGVseS4KCShtaXBzX2VsZl9zaXplX2R5bmFtaWNfc2VjdGlvbnMpOiBVc2UgYmZkX2J5dGUgKiwgbm90IHVuc2lnbmVkCgljaGFyICouICBSZXdvcmsgY2FsY3VsYXRpb24gb2YgR09UIHNpemUuICBTb3J0IGR5bmFtaWMgc3ltYm9sCgl0YWJsZSBlbnRyaWVzIHNvIGVudHJpZXMgdGhhdCBkbyBub3QgcmVxdWlyZSBHT1QgZW50cmllcyBhcHBlYXIgYXQKCXRoZSBiZWdpbm5pbmcuICBEb24ndCB1c2UgRFRfTUlQU19ISVBBR0VOTyBvbiBJUklYNi4gIFJlbW92ZSBkZWFkCgljb2RlIGRlYWxpbmcgd2l0aCBEVF9JTklUIGFuZCBEVF9GSU5JLiAgUmVtb3ZlIGZpZGRsaW5nIHdpdGgKCWdsb2JhbF9nb3RzeW0uCgkobWlwc19lbGZfZmluaXNoX2R5bmFtaWNfc3ltYm9sKTogQWRqdXN0IGNyZWF0aW9uIG9mIGdsb2JhbCBHT1QKCWVudHJpZXMuCgkobWlwc19lbGZfZmluaXNoX2R5bmFtaWNfc3ltYm9sKTogVXNlCgltaXBzX2VsZl9pcml4Nl9maW5pc2hfZHluYW1pY19zeW1ib2wuCgkobWlwc19lbGZfZmluaXNoX2R5bmFtaWNfc2VjdGlvbnMpOiBDb3JyZWN0IG9mZi1ieS1vbmUgZXJyb3IKCXNldHRpbmcgRFRfTUlQU19VTlJFRkVYVE5PLiAgQWRqdXN0IHNldHRpbmcgb2YgRFRfTUlQU19HT1RTWU0gZm9yCgljaGFuZ2UgdG8gZ2xvYmFsX2dvdHN5bS4gIFNldCBEVF9NSVBTX09QVElPTlMgb24gSVJJWDYuCgkJCjE5OTktMDYtMzAgIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5AemVtYnUuY29tPgoKCSogZWxmMzItbWlwcy5jIChtaXBzX2VsZl9maW5hbF9saW5rKTogRG9uJ3Qgc2V0IENQSUMgd2hlbiBkb2luZyBhCglyZWxvY2F0ZWFibGUgbGluay4gIEZyb20gUmFsZiBCYWVjaGxlIDxyYWxmQHVuaS1rb2JsZW56LmRlPi4KCjE5OTktMDYtMDQgIFBoaWxpcCBCbHVuZGVsbCAgPHBoaWxiQGdudS5vcmc+CgoJKiBlbGYzMi1hcm0uaCAoZWxmX2JhY2tlbmRfZ290X2hlYWRlcl9zaXplKTogRGVmaW5lLgoJKGVsZl9iYWNrZW5kX3BsdF9oZWFkZXJfc2l6ZSk6IExpa2V3aXNlLgoKMTk5OS0wNi0yOCAgSmltIFBpY2sgIDxqaW1AamltcGljay5jb20+CgoJKiBlbGYzMi1hcm0uaCAoZWxmMzJfYXJtX3JlbG9jYXRlX3NlY3Rpb24pOiBNaW5kIG5vX3VuZGVmaW5lZAoKVHVlIEp1biAyOSAwMjoyNTowMyAxOTk5ICBKZWZmcmV5IEEgTGF3ICAobGF3QGN5Z251cy5jb20pCgoJKiBlbGYtaHBwYS5jIChlbGZfaHBwYV9ob3d0b190YWJsZSk6IFVzZSBiZmRfZWxmX2dlbmVyaWNfcmVsb2MgYXMKCXJlbG9jYXRpb24gZnVuY3Rpb24uCgkqIGVsZjMyLWhwcGEuYyAoaHBwYV9lbGZfcmVsb2MpOiBLaWxsIHVudXNlZC91bndhbnRlZCBmdW5jdGlvbi4KCjE5OTktMDYtMjcgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBlbGYzMi1taXBzLmMgKE1JUFNfRUxGX1NSREFUQV9TRUNUSU9OX05BTUUpOiBOZXcgbWFjcm8uCgkoTUlQU19FTEZfT1BUSU9OU19TRUNUSU9OX05BTUUpOiBMaWtld2lzZS4KCShNSVBTX0VMRl9TVFVCX1NFQ1RJT05fTkFNRSk6IExpa2V3aXNlLgoJKF9iZmRfbWlwc19lbGZfc2VjdGlvbl9mcm9tX3NoZHIpOiBVc2UgdGhlbS4KCShfYmZkX21pcHNfZWxmX2Zha2Vfc2VjdGlvbnMpOiBMaWtld2lzZS4gIEFkZCAuc3JkYXRhIHRvIHRoZSBsaXN0CglvZiBHUC1yZWxhdGl2ZSBzZWN0aW9ucy4KCShfYmZkX21pcHNfZWxmX3NldF9zZWN0aW9uX2NvbnRlbnRzKTogVXNlIHRoZW0uCgkoX2JmZF9taXBzX2VsZl9zZWN0aW9uX3Byb2Nlc3NpbmcpOiBTaGFyZSBjb2RlIGJldHdlZW4gLnNkYXRhIGFuZAoJLmxpdDQvLmxpdDggc2VjdGlvbnMuICBTZXQgYXBwcm9wcmlhdGUgZmxhZ3MgZm9yIC5zcmRhdGEuCgkobWlwc19lbGZfYWRkaXRpb25hbF9wcm9ncmFtX2hlYWRlcnMpOiBBZGQgaGFuZGxpbmcgZm9yCglQVF9NSVBTX09QVElPTlMgc2VnbWVudCBvbiBJUklYNi4KCShtaXBzX2VsZl9tb2RpZnlfc2VnbWVudF9tYXApOiBMaWtlaXdzZS4KCShtaXBzX2VsZl9maW5hbF9saW5rKTogU2V0IEVGX01JUFNfQ1BJQyB3aGVuIHJlcXVpcmVkIGJ5IHRoZSBBQkkuCglJbmNsdWRlIHRoZSBvcHRpb25zIHNlY3Rpb25zIG9uIElSSVg2LiAgRG9uJ3QgbG9vayBmb3IgR1AtcmVsYXRpdmUKCXNlY3Rpb25zIGJ5IG5hbWU7IHVzZSBTSEZfTUlQU19HUFJFTCBpbnN0ZWFkLgoJKEVMRl9EWU5BTUlDX0lOVEVSUFJFVEVSKTogQWRqdXN0IHRvIHVzZSAvdXNyL2xpYjMyL2xpYmMuc28uMSBmb3IKCXRoZSBOMzIgQUJJLgoJKG1pcHNfZWxmX2NyZWF0ZV9keW5hbWljX3NlY3Rpb25zKTogRG9uJ3QgbXVjayBhYm91dCB3aXRoIHNlY3Rpb24KCWFsaWdubWVudHMgYW5kIHN1Y2ggb24gSVJJWDYuCgkobWlwc19lbGZfYWRqdXN0X2R5bmFtaWNfc3ltYm9sKTogVXNlIE1JUFNfRUxGX1NUVUJfU0VDVElPTl9OQU1FLgoJKG1pcHNfZWxmX3NpemVfZHluYW1pY19zZWN0aW9ucyk6IExpa2V3aXNlLiBBZGp1c3QgdG8gaGFuZGxlIHRoZQoJZmFjdCB0aGF0IEVMRl9EWU5BTUlDX0lOVEVSUFJFVEVSIGlzIG5vIGxvbmdlciBhIGNvbnN0YW50LiAgVXNlCgliZmRfemFsbG9jIHJhdGhlciB0aGFuIGJmZF9hbGxvYyBhbmQgbWVtc2V0LgoJKG1pcHNfZWxmX2ZpbmlzaF9keW5hbWljX3N5bWJvbCk6IFVzZSBNSVBTX0VMRl9TVFVCX1NFQ1RJT05fTkFNRS4KCURvbid0IGFzc2VydCB0aGUgZXhpc3RlbmNlIG9mIC5ybGRfbWFwIG9uIElSSVg2LgoJKG1pcHNfZWxmX2ZpbmlzaF9keW5hbWljX3NlY3Rpb25zKTogVXNlIE1JUFNfRUxGX1NUVUJfU0VDVElPTl9OQU1FLgoJCQoJKiBlbGYzMi1taXBzLmMgKG1pcHNfZWxmX2FkanVzdF9keW5pbmR4KTogUmVtb3ZlLgoJKG1pcHNfZWxmX3NpemVfZHluYW1pY19zZWN0aW9ucyk6IFVzZSBfYmZkX2VsZl9saW5rX2FkanVzdF9keW5pbmR4CglpbnN0ZWFkLgoKMTk5OS0wNi0yNiAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGVsZjMyLW1pcHMuYyAobWlwc19lbGZfc3dhcF9tc3ltX2luKTogTmV3IGZ1bmN0aW9uLgoJKG1pcHNfZWxmX3N3YXBfbXN5bV9vdXQpOiBOZXcgZnVuY3Rpb24uCgkobWlwc19lbGZfY3JlYXRlX21zeW1fc2VjdGlvbik6IExpa2V3aXNlLgoJKE1JUFNfRUxGX01TWU1fU0VDVElPTl9OQU1FKTogTmV3IG1hY3JvLgoJKF9iZmRfbWlwc19lbGZfZmluYWxfd3JpdGVfcHJvY2Vzc2luZyk6IFNldCBzaF9saW5rIGZvciAubXN5bS4KCShfYmZkX21pcHNfZWxmX3NlY3Rpb25fZnJvbV9zaGRyKTogUmVqZWN0IGFuIFNIVF9NSVBTX01TWU0KCXNlY3Rpb24gbm90IG5hbWVkIC5tc3ltLgoJKF9iZmRfbWlwc19lbGZfZmFrZV9zZWN0aW9ucyk6IFVzZSBNSVBTX0VMRl9NU1lNX1NFQ1RJT05fTkFNRSwgbm90CgkubXN5bSBkaXJlY3RseS4gIFNldCBhcHByb3ByaWF0ZSBhdHRyaWJ1dGVzIGZvciB0aGUgLm1zeW0KCXNlY3Rpb24uCgkobWlwc19lbGZfbGlua19oYXNoX2VudHJ5KTogQWRkIG1pbl9keW5fcmVsb2NfaW5kZXggZmllbGQuCgkobWlwc19lbGZfbGlua19oYXNoX25ld2Z1bmMpOiBDbGVhciBpdC4KCShtaXBzX2VsZl9jcmVhdGVfZHluYW1pY19zZWN0aW9ucyk6IENyZWF0ZSB0aGUgLm1zeW0gc2VjdGlvbgoJb24gSVJJWDYuCgkobWlwc19lbGZfc2l6ZV9keW5hbWljX3NlY3Rpb25zKTogIEFsbG9jYXRlIHNwYWNlIGZvciB0aGUKCS5tc3ltIHNlY3Rpb24uICBBZGQgYSBEVF9NSVBTX01TWU0gZW50cnkuCgkobWlwc19lbGZfZmluaXNoX2R5bmFtaWNfc3ltYm9sKTogV3JpdGUgb3V0IGEgLm1zeW0gZW50cnkgZm9yCgl0aGUgc3ltYm9sLgoJKG1pcHNfZWxmX2ZpbmlzaF9keW5hbWljX3NlY3Rpb25zKTogQXNzaWduIGEgdmFsdWUgZm9yCglEVF9NSVBTX01TWU0uICBBZGQgLm1zeW0gZW50cmllcyBmb3IgdGhlIHNlY3Rpb24gc3ltYm9scyBhcyB3ZWxsLgoKCSogZWxmMzItbWlwcy5jIChpcml4X2NvbXBhdF90KTogTmV3IGVudW1lcmF0aW9uLgoJKEFCSV9OMzJfUCk6IE5ldyBtYWNyby4KCShJUklYX0NPTVBBVCk6IExpa2V3aXNlLgoJKFNHSV9DT01QQVQpOiBJbXBsZW1lbnQgaW4gdGVybXMgb2YgSVJJWF9DT01QQVQuCgkobWlwc19lbGZfcmVsb2NhdGVfc2VjdGlvbik6IEZpeCB0eXBvLgoJCjE5OTktMDYtMjYgIE11bWl0IEtoYW4gIDxraGFuQHhyYXlsaXRoLndpc2MuZWR1PgoKCSogcGVpY29kZS5oIChjb2ZmX3N3YXBfc2NuaGRyX291dCk6IE1hcmsgbm9uIHJlYWRvbmx5IEJGRCBzZWN0aW9ucwoJYXMgd3JpdGFibGUgUEUgc2VjdGlvbnMuCgoxOTk5LTA2LTI2ICBEYXZpZCBNb3NiZXJnZXIgIDxkYXZpZG1AaHBsLmhwLmNvbT4KCgkqIGR3YXJmMi5jIChzdHJ1Y3QgYXJhbmdlKTogTmV3IHR5cGUuCgkoc3RydWN0IGNvbXBfdW5pdCk6IFJlcGxhY2UgTE9XIGFuZCBISUdIIGJ5IG1lbWJlciBBUkFOR0UuCgkoYXJhbmdlX2FkZCk6IE5ldyBmdW5jdGlvbi4KCShkZWNvZGVfbGluZV9pbmZvKTogS2VlcCB0cmFjayBvZiBhZGRyZXNzIHJhbmdlcyB0aGF0IGEgY29tcGlsYXRpb24KCXVuaXQgY292ZXJzLgoJKGNvbXBfdW5pdF9jb250YWluc19hZGRyZXNzKTogUmV0dXJuIHRydWUgaWYgYWRkcmVzcyBpcyBjb250YWluZWQKCWluIF9hbnlfIG9mIHRoZSBhZGRyZXNzIHJhbmdlcyBhc3NvY2lhdGVkIHdpdGggYSBjb21waWxhdGlvbiB1bml0LgoJKF9iZmRfZHdhcmYyX2ZpbmRfbmVhcmVzdF9saW5lKTogQ2FsbCBjb21wX3VuaXRfZmluZF9uZWFyZXN0X2xpbmUKCW9uIHRoZSBmaXJzdCBjb21wX3VuaXQgdGhhdCBjb250YWlucyB0aGUgYWRkcmVzcy4KCjE5OTktMDYtMjYgIERhdmlkIE1vc2JlcmdlciAgPGRhdmlkbUBocGwuaHAuY29tPgoKCSogZHdhcmYyLmMgKHN0cnVjdCBkd2FyZjJfZGVidWcpOiBBZGQgbWVtYmVyIGR3YXJmX2xpbmVfYnVmZmVyLgoJKGRlY29kZV9saW5lX2luZm8pOiBBZGQgdmFyaWFibGUgU1RBU0ggYW5kIGluaXRpYWxpemUgaXQgdG8gcG9pbnQKCXRvIHRoZSBwZXItYmZkIGR3YXJmMl9kZWJ1ZyBpbmZvLiAgUmVtb3ZlIHN0YXRpYyB2YXJpYWJsZQoJZHdhcmZfbGluZV9idWZmZXIgYW5kIHVzZSBzdGFzaC0+ZHdhcmZfbGluZV9idWZmZXIgaW4gaXRzIHBsYWNlLgoKMTk5OS0wNi0yNiAgSWFuIExhbmNlIFRheWxvciAgPGlhbkB6ZW1idS5jb20+CgoJKiBlbGZsaW5rLmggKGVsZl9saW5rX291dHB1dF9leHRzeW0pOiBJdCdzIE9LIGZvciBhIC1Cc3ltYm9saWMKCXNoYXJlZCBsaWJyYXJ5IHRvIGhhdmUgYW4gdW5kZWZpbmVkIHN5bWJvbC4KCglGcm9tIEZyYW56IFNpcmwgPEZyYW56LlNpcmwta2VybmVsQGxhdXRlcmJhY2guY29tPjoKCSogZWxmMzItcHBjLmMgKHBwY19lbGZfcmVsb2NhdGVfc2VjdGlvbik6IEZpeCBsYXN0IHBhdGNoLgoKVGh1IEp1biAyNCAyMDo1OToxMSAxOTk5ICBKZWZmcmV5IEEgTGF3ICAobGF3QGN5Z251cy5jb20pCgoJKiBlbGYtaHBwYS5jIChlbGZfaHBwYV9maW5hbF93cml0ZV9wcm9jZXNzaW5nKTogTmV3IGZ1bmN0aW9uLgoJKiBlbGYzMi1ocHBhLmM6IFJlbW92ZSBldmVyeXRoaW5nIHJlbGF0ZWQgdG8gc3ltYm9sIGV4dGVuc2lvbgoJc2VjdGlvbnMgJiByZWNvcmRzLiAgVXNlIHRoZSBjb21tb24gZWxmX2hwcGFfZmluYWxfd3JpdGVfcHJvY2Vzc2luZy4KCjE5OTktMDYtMjIgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBlbGZsaW5rLmggKHNpemVfZHluYW1pY19zZWN0aW9ucyk6IFVzZSB1c2VyLXNwZWNpZmllZCBpbml0L2ZpbmkKCWZ1bmN0aW9ucyBpbnN0ZWFkIG9mIF9pbml0L19maW5pIGlmIHJlcXVlc3RlZC4KCjE5OTktMDYtMjMgIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5AemVtYnUuY29tPgoKCSogZWxmLmMgKGJmZF9zZWN0aW9uX2Zyb21fc2hkcik6IEF2b2lkIGNyYXNoaW5nIG9uIGEgYm9ndXMgc2hfbGluawoJZmllbGQuCgoxOTk5LTA2LTIyICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQHplbWJ1LmNvbT4KCglGcm9tIEZyYW56IFNpcmwgPEZyYW56LlNpcmwta2VybmVsQGxhdXRlcmJhY2guY29tPjoKCSogZWxmMzItcHBjLmMgKHBwY19lbGZfc2l6ZV9keW5hbWljX3NlY3Rpb25zKTogU2V0IHVudXNlZCBkeW5pbmR4CglmaWVsZCB0byAwLCBub3QgLTEuCgkocHBjX2VsZl9maW5pc2hfZHluYW1pY19zZWN0aW9ucyk6IENoZWNrIGZvciBwb3NpdGl2ZSBzZWN0aW9uCglkeW5pbmR4IGZpZWxkLCByYXRoZXIgdGhhbiBjb21wYXJpbmcgYWdhaW5zdCAtMS4KCShwcGNfZWxmX3JlbG9jYXRlX3NlY3Rpb24pOiBPbmx5IHJldHVybiBmYWxzZSBpZiB1bmRlZmluZWRfc3ltYm9sCglvciByZWxvY19vdmVyZmxvdyBmYWlsLCBub3QgYWx3YXlzIHVwb24gZW5jb3VudGVyaW5nIGFuIGVycm9yLgoKMTk5OS0wNi0yMiAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGVsZmxpbmsuaCAobGlua19yZWFkX3JlbG9jcyk6IEV4cGxpY2l0bHkgY2FzdCBleHRlcm5hbF9yZWxvY3MgdG8KCWJmZF9ieXRlICogYmVmb3JlIHBlcmZvcm1pbmcgcG9pbnRlciBhcml0aG1ldGljLgoKVHVlIEp1biAyMiAxMzowNjoyNSAxOTk5ICBKZWZmcmV5IEEgTGF3ICAobGF3QGN5Z251cy5jb20pCgoJKiBlbGYtaHBwYS5oOiBOZXcgZmlsZS4gIENvbW1vbiBzdHVmZiBmb3IgZWxmMzIgYW5kIGVsZjY0IFBBCglzdXBwb3J0LgoJKiBlbGYzMi1ocHBhLmM6IEluY2x1ZGUgZWxmLWhwcGEuaC4KCShBUkNIX1NJWkUpOiBEZWZpbmUuCgkoZWxmX2hwcGFfcmVsb2NfdHlwZV9sb29rdXApOiBEZWxldGUuICBGb3VuZCBpbiB0aGUgY29tbW9uIGNvZGUKCW5vdy4KCShlbGYzMl9ocHBhX2luZm9fdG9faG93dG8pOiBTaW1pbGFybHkuCgkoZWxmX2hwcGFfaG93dG9fdGFibGUpOiBTaW1pbGFybHkuCgkoZWxmX2hwcGFfcmVsb2NfdHlwZV9sb29rdXApOiBTaW1pbGFybHkuCgkoaHBwYV9lbGZfZ2VuX3JlbG9jX3R5cGUpOiBTaW1pbGFybHkuCgkqIGVsZjMyLWhwcGEuaCAoRUxGX0hPV1RPX1RBTEJFLCBOX1BBUklTQ19SRUxPQ1MpOiBEZWxldGUuCgoxOTk5LTA2LTIyICBOaWNrIENsaWZ0b24gIDxuaWNrY0BjeWdudXMuY29tPgoKCSogZWxmMzItdjg1MC5jICh2ODUwX2VsZl9maW5hbF9saW5rX3JlbG9jYXRlKTogQ2F0Y2ggb3ZlcmZsb3cKCWhhbmRsaW5nIFJfVjg1MF8yMl9QQ1JFTCByZWxvY2F0aW9uLgoKMTk5OS0wNi0yMSAgSWFuIExhbmNlIFRheWxvciAgPGlhbkB6ZW1idS5jb20+CgoJKiBjb2ZmLWFybS5jIChhcm1fZW1pdF9iYXNlX2ZpbGVfZW50cnkpOiBFeHBsaWNpdGx5IGRlY2xhcmUgcmV0dXJuCgl0eXBlLgoKU3VuIEp1biAyMCAxNDoxMzo1NyAxOTk5ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogc2VjdGlvbi5jIChfYmZkX3N0cmlwX3NlY3Rpb25fZnJvbV9vdXRwdXQpOiBJZ25vcmUgc2VjdGlvbnMKCURJU0NBUkRlZCBieSB0aGUgbGluayBzY3JpcHQuCgoxOTk5LTA2LTE5ICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQHplbWJ1LmNvbT4KCgkqIGVsZmxpbmsuaCAoZWxmX2xpbmtfcmVtb3ZlX3NlY3Rpb25fYW5kX2FkanVzdF9keW5pbmRpY2VzKToKCVJlbW92ZSB1bnVzZWQgbG9jYWwgdmFyaWFibGUgc3BwLgoKCSogeGNvZmZsaW5rLmMgKGJmZF94Y29mZl9zaXplX2R5bmFtaWNfc2VjdGlvbnMpOiBEb24ndCBjcmFzaCBpZgoJdGhlIGVudHJ5IHN5bWJvbCBpcyBub3Qgc2V0LgoKRnJpIEp1biAxOCAwNDoyNDo1NyAxOTk5ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogZWxmNjQtYWxwaGEuYyAoZWxmNjRfYWxwaGFfcmVsb2NhdGVfc2VjdGlvbik6IERvbid0IGFkanVzdAoJR1BESVNQIG9yIExJVFVTRSBpbiBhIHJlbG9jYXRhYmxlIGxpbmsuCgpUaHUgSnVuIDE3IDIxOjI0OjQzIDE5OTkgIEoib3JuIFJlbm5lY2tlIDxhbXlsYWFyQGN5Z251cy5jby51az4KCgkqIGR3YXJmMS5jIChhbGxvY19kd2FyZjFfdW5pdCk6IEFsbG9jYXRlIHVzaW5nIGJmZF96YWxsb2MuCgkqIChhbGxvY19kd2FyZjFfZnVuYyk6IExpa2V3aXNlLgoKV2VkIEp1biAxNiAwMzowOTo1NyAxOTk5ICBKZWZmcmV5IEEgTGF3ICAobGF3QGN5Z251cy5jb20pCgoJKiBsaWJocHBhLmg6IEZpeCB2YXJpb3VzIGZvcm1hdHRpbmcgZXJyb3JzLgoJKGFzc2VtYmxlXzMpOyBSZXdyaXRlIHVzaW5nIENBVEVOQVRFLgoJKGFzc2VtYmxlXzE3KTogRml4IHZhcmlvdXMgYnVncy4KCjE5OTktMDYtMTYgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQGN5Z251cy5jb20+CgoJKiBlbGYzMi1tY29yZS5jIChSX01DT1JFX1JBVyk6IEZpeCBkZWZpbml0aW9uLgoKMTk5OS0wNi0xNSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIHNlY3Rpb24uYyAoU0VDX1NIT1JUKTogRGVmaW5lLgoJKiBiZmQtaW4yLmg6IFJlYnVpbGQuCgoxOTk5LTA2LTEzICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogZWxmbGluay5oIChlbGZfbGlua19yZW1vdmVfc2VjdGlvbl9hbmRfYWRqdXN0X2R5bmluZGljZXMpOgoJUmVtb3ZlIGFiZmQgcGFyYW1ldGVyLiAgVXNlIF9iZmRfc3RyaXBfc2VjdGlvbl9mcm9tX291dHB1dC4KCShiZmRfZWxmX3NpemVfZHluYW1pY19zZWN0aW9ucyk6IEFkanVzdCBjYWxsZXJzIGFjY29yZGluZ2x5LgoJCgkqIGVsZi1iZmQuaCAoX2JmZF9lbGZfbGlua19hZGp1c3RfZHluaW5keCk6IE5ldyBmdW5jdGlvbi4KCSogZWxmbGluay5jIChfYmZkX2VsZl9saW5rX2FkanVzdF9keW5pbmR4KTogRGVmaW5lIGl0LgoJKiBlbGZsaW5rLmggKGVsZl9saW5rX3JlbW92ZV9zZWN0aW9uX2FuZF9hZGp1c3RfZHluaW5kaWNlcyk6IE5ldwoJZnVuY3Rpb24uCgkoYmZkX2VsZl9zaXplX2R5bmFtaWNfc2VjdGlvbnMpOiBVc2UgaXQuCgoxOTk5LTA2LTEzICBBbGFuIE1vZHJhICA8YWxhbkBzcHJpLmxldmVscy51bmlzYS5lZHUuYXU+CgoJKiBlbGYzMi1pMzg2LmMgKGVsZl9ob3d0b190YWJsZSk6IENoYW5nZSBSXzM4Nl9QQzggZnJvbQoJY29tcGxhaW5fb3ZlcmZsb3dfYml0ZmllbGQgdG8gY29tcGxhaW5fb3ZlcmZsb3dfc2lnbmVkLgoKMTk5OS0wNi0xMyAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGVsZmxpbmsuaCAoZWxmX2xpbmtfcmVhZF9yZWxvY3NfZnJvbV9zZWN0aW9uKTogTmV3IGZ1bmN0aW9uLAoJc3BsaXQgb3V0IGZyb20gLi4uCgkoZWxmX2xpbmtfcmVhZF9yZWxvY3MpOiBIZXJlLiAgVXNlIGl0IGZvciBib3RoIHJlbG9jYXRpb24KCXNlY3Rpb25zLgoKMTk5OS0wNi0xMiAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGVsZmNvZGUuaCAoZWxmX3NsdXJwX3JlbG9jX3RhYmxlX2Zyb21fc2VjdGlvbik6IERvbid0IGFzc3VtZQoJYXNlY3QtPnJlbG9jX2NvdW50IGlzIHZhbGlkLgoKMTk5OS0wNi0xMiAgSWFuIExhbmNlIFRheWxvciAgPGlhbkB6ZW1idS5jb20+CgoJKiBlbGYzMi1taXBzLmMgKG1pcHNfZWxmMzJfc2VjdGlvbl9wcm9jZXNzaW5nKTogUGVybWl0IGEKCVNIVF9NSVBTX1JFR0lORk8gc2VjdGlvbiB0byBoYXZlIGEgc2l6ZSBvZiAwLgoKMTk5OS0wNi0xMiAgRGF2aWQgTydCcmllbiAgPG9icmllbkBmcmVlYnNkLm9yZz4KCgkqIGNvbmZpZy5iZmQgKGFscGhhKi0qLWZyZWVic2QqKTogTmV3IHRhcmdldC4KCShpWzM0NTZdODYtKi1mcmVlYnNkKik6IE5vdyBkZWZhdWx0cyB0byBFTEYuCgoxOTk5LTA2LTExICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQHplbWJ1LmNvbT4KCgkqIHJlbG9jLmMgKF9iZmRfcmVsb2NhdGVfY29udGVudHMpOiBQZXJtaXQgYml0ZmllbGQgcmVsb2NhdGlvbnMgdG8KCXdyYXAgaWYgdGhlIHJlbG9jYXRpb24gY292ZXJzIHRoZSBoaWdoIGJpdCBvZiBhbiBhZGRyZXNzLgoKCSogZHdhcmYyLmMgKGRlY29kZV9saW5lX2luZm8pOiBSZW1vdmUgdW51c2VkIHZhcmlhYmxlIGZpcnN0X3RpbWUuCgoxOTk5LTA2LTEwICBKYWt1YiBKZWxpbmVrICA8ampAdWx0cmEubGludXguY3o+CgoJKiBlbGY2NF9zcGFyYy5jIChzcGFyYzY0X2VsZl9yZWxvY2F0ZV9zZWN0aW9uKTogVXNlIFJfU1BBUkNfbWF4X3N0ZAoJaW5zdGVhZCBvZiBSX1NQQVJDX21heC4KCShzcGFyYzY0X2VsZl9pbmZvX3RvX2hvd3RvKTogTGlrZXdpc2UuCgkqIGVsZjMyX3NwYXJjLmMgKGVsZjMyX3NwYXJjX3JlbG9jYXRlX3NlY3Rpb24pOiBMaWtld2lzZS4KCShlbGYzMl9zcGFyY19pbmZvX3RvX2hvd3RvKTogTGlrZXdpc2U7IGhhbmRsZSB2dGFibGUgcmVsb2NhdGlvbnMuCgoxOTk5LTA2LTA3ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogc2VjdGlvbi5jIChfYmZkX3N0cmlwX3NlY3Rpb25fZnJvbV9vdXRwdXQpOiBSZW1vdmUgb3V0cHV0CglzZWN0aW9ucyB3aXRoIG5vIGluaXRpYWwgbGlua19vcmRlci4KCjE5OTktMDYtMDcgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQGN5Z251cy5jb20+CgoJKiBlbGYzMi1tODhrLmMgKEVMRl9NQVhQQUdFU0laRSk6IERlZmluZS4KCk1vbiBKdW4gIDcgMTE6NDk6NDMgMTk5OSAgQW5kcmVhcyBTY2h3YWIgIDxzY2h3YWJAaXNzYW4uY3MudW5pLWRvcnRtdW5kLmRlPgoKCSogTWFrZWZpbGUuYW0gKFNPVVJDRV9IRklMRVMpOiBBZGQgbWlzc2luZyBoZWFkZXJzLgoJKiBNYWtlZmlsZS5pbjogUmVnZW5lcmF0ZWQuCgoxOTk5LTA2LTA2ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogZWxmMzItbWlwcy5jIChfYmZkX21pcHNfZWxmX3ByaW50X3ByaXZhdGVfZGF0YSk6IFJlY29nbml6ZQoJdGhlIE4zMiBBQkkuCgoxOTk5LTA2LTA0ICBGcmFueiBTaXJsIDxGcmFuei5TaXJsLWtlcm5lbEBsYXV0ZXJiYWNoLmNvbT4KCgkqIGVsZjMyLXBwYy5jIChwcGNfZWxmX3JlbG9jYXRlX3NlY3Rpb24pOiBEb24ndCBiYXJmIG9uIG91dCBvZgoJcmFuZ2UgdW5kZWZ3ZWFrIHN5bWJvbHMuCgkqIGhhc2guYzogQWRkIG1pc3NpbmcgY29tbWEgYWZ0ZXIgQHhyZWZ7fQoJKiBsaW5rZXIuYzogTGlrZXdpc2UuCgoxOTk5LTA2LTA0ICBOaWNrIENsaWZ0b24gIDxuaWNrY0BjeWdudXMuY29tPgoKCSogZWxmeHgtdGFyZ2V0LmggKEVMRl9NQVhQQUdFU0laRSk6IFByb2R1Y2UgYW4gZXJyb3IgbWVzc2FnZQoJaWYgbm90IGRlZmluZWQuCgkqIGVsZjMyLWdlbi5jIChFTEZfTUFYUEFHRVNJWkUpOiBEZWZpbmUuCgkqIGVsZjMyLWk4NjAuYyAoRUxGX01BWFBBR0VTSVpFKTogRGVmaW5lLgoJKiBlbGYzMi1pOTYwLmMgKEVMRl9NQVhQQUdFU0laRSk6IERlZmluZS4KCSogZWxmNjQtZ2VuLmMgKEVMRl9NQVhQQUdFU0laRSk6IERlZmluZS4KCjE5OTktMDYtMDQgIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5AemVtYnUuY29tPgoKCSogTWFrZWZpbGUuYW06IFJlYnVpbGQgZGVwZW5kZW5jaWVzLgoJKEJGRDMyX0JBQ0tFTkRTKTogQWRkIGR3YXJmMS5sby4KCShCRkQzMl9CQUNLRU5EU19DRklMRVMpOiBBZGQgZHdhcmYxLmMuCgkqIE1ha2VmaWxlLmluOiBSZWJ1aWxkLgoKMTk5OS0wNi0wNCAgTmljayBDbGlmdG9uICA8bmlja2NAY3lnbnVzLmNvbT4KCgkqIE1ha2VmaWxlLmFtOiBBZGQgZXBvYy1hcm0tcGUgdGFyZ2V0LgoJKiBNYWtlZmlsZS5pbjogUmVnZW5lcmF0ZS4KCSogcGUtYXJtLmM6IE9ubHkgcmVkZWZpbmUgaW50ZXJ3b3JraW5nIGZ1bmN0aW9uIG5hbWVzIGlmIHRoZXkgaGF2ZQoJbm90IGFscmVhZHkgYmVlbiByZWRlZmluZWQuCgkqIHBlaS1hcm0uYzogT25seSByZWRlZmluZSBpbnRlcndvcmtpbmcgZnVuY3Rpb24gbmFtZXMgaWYgdGhleSBoYXZlCglub3QgYWxyZWFkeSBiZWVuIHJlZGVmaW5lZC4KCSogZXBvYy1wZS1hcm0uYzogUmVkZWZpbmUgaW50ZXJ3b3JraW5nIGZ1bmN0aW9uIG5hbWVzIHRvIGF2b2lkIGEKCW5hbWUgc3BhY2UgY2xhc2guCgkqIGVwb2MtcGVpLWFybS5jOiBSZWRlZmluZSBpbnRlcndvcmtpbmcgZnVuY3Rpb24gbmFtZXMgdG8gYXZvaWQgYQoJbmFtZSBzcGFjZSBjbGFzaC4KCjE5OTktMDYtMDMgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQGN5Z251cy5jb20+CgoJKiBlbGZ4eC10YXJnZXQuaCAoRUxGX01BWFBBR0VTSVpFKTogRGVmYXVsdCB0byAweDEwMDAgbm90IDEuCgpGcmkgSnVuICA0IDEwOjA1OjExIDE5OTkgIEFuZHJlYXMgU2Nod2FiICA8c2Nod2FiQGlzc2FuLmNzLnVuaS1kb3J0bXVuZC5kZT4KCgkqIGVsZi5jIChlbGZfZmFrZV9zZWN0aW9ucyk6IFVuZG8gY2hhbmdlIG9mIDE5OTktMDUtMTAuCgpGcmkgSnVuICA0IDAzOjEwOjQ5IDE5OTkgIEoib3JuIFJlbm5lY2tlIDxhbXlsYWFyQGN5Z251cy5jby51az4KCgkqIGVsZjMyLXNoLmMgKHNoX2VsZl9yZWxheF9kZWxldGVfYnl0ZXMpOiBGaXggc2V0dGluZyBvZgoJc3RhcnQgLyBzdG9wIGZvciByZWNhbGN1bGF0aW5nIG9mIHJfYWRkZW5kIG9mIFJfU0hfU1dJVENIKi4KCkZyaSBKdW4gIDQgMDI6NTM6MTMgMTk5OSAgSiJvcm4gUmVubmVja2UgPGFteWxhYXJAY3lnbnVzLmNvLnVrPgoKCSogZWxmMzItc2guYyAoc2hfZWxmX3JlbGF4X2RlbGV0ZV9ieXRlcyk6IEhhbmRsZSBSX1NIX1NXSVRDSDMyCglpbiBvdGhlciB0ZXh0IHNlY3Rpb25zLgoKRnJpIEp1biAgNCAwMjoyOTozNCAxOTk5ICBKIm9ybiBSZW5uZWNrZSA8YW15bGFhckBjeWdudXMuY28udWs+CgoJKiBsaWJiZmQuYyAoX2JmZF9nZW5lcmljX3ZlcmlmeV9lbmRpYW5fbWF0Y2gpOiBOZXcgZnVuY3Rpb24uCgkqIGxpYmJmZC1pbi5oIChfYmZkX2dlbmVyaWNfdmVyaWZ5X2VuZGlhbl9tYXRjaCk6IERlY2xhcmUuCgkqIGxpYmJmZC5oOiBSZWdlbmVyYXRlLgoJKiBjb2ZmLXNoLmMgKHNoX21lcmdlX3ByaXZhdGVfZGF0YSk6IERlbGV0ZS4KCShjb2ZmX2JmZF9tZXJnZV9wcml2YXRlX2JmZF9kYXRhKTogQ2hhbmdlIHRvCglfYmZkX2dlbmVyaWNfdmVyaWZ5X2VuZGlhbl9tYXRjaC4KCShlbGYzMi1zaC5jKTogYmZkX2VsZjMyX2JmZF9tZXJnZV9wcml2YXRlX2JmZF9kYXRhOiBEZWZpbmUuCgoxOTk5LTA2LTAzICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAY3lnbnVzLmNvbT4KCgkqIGVsZjMyLWFybS5oOiBGaXggdHlwbzogY2hhbmdlIEVMRl9NQVhQQUdFX1NJWkUgdG8gRUxGX01BWFBBR0VTSVpFLgoKMTk5OS0wNi0wMyAgSWFuIExhbmNlIFRheWxvciAgPGlhbkB6ZW1idS5jb20+CgoJKiBiZmQtaW4uaCAoYmZkX2VsZjMyX2FybV9hbGxvY2F0ZV9pbnRlcndvcmtpbmdfc2VjdGlvbnMpOiBDb3JyZWN0Cglwcm90b3R5cGUuCgkoYmZkX2VsZjMyX2FybV9wcm9jZXNzX2JlZm9yZV9hbGxvY2F0aW9uKTogTGlrZXdpc2UuCgkqIGJmZC1pbjIuaDogUmVidWlsZC4KCjE5OTktMDYtMDMgIERhdmlkIE1vc2JlcmdlciAgPGRhdmlkbUBocGwuaHAuY29tPgoKCSogZHdhcmYyLmMgKHN0cnVjdCBsaW5lX2luZm8pOiBBZGQgbWVtYmVyIEVORF9TRVFVRU5DRSB0byBrZWVwCgl0cmFjayBvZiBlbmRfc2VxdWVuY2UgbWFya2Vycy4KCShhZGRfbGluZV9pbmZvKTogQWRkIEVORF9TRVFVRU5DRSBhcmcuCgkoZGVjb2RlX2xpbmVfaW5mbyk6IERvbid0IHRyeSB0byBpbmZlciBsb19wYyBhbmQgaGlfcGMgZnJvbSB0aGUKCWRlYnVnLWxpbmUgaW5mby0tLWl0IGRvZXNuJ3Qgd29yayByaWdodCBpZiBhIGNvbXBpbGF0aW9uIHVuaXQKCWNvbnNpc3RzIG9mIG11bHRpcGxlIGRpc2NvbnRpZ3VvdXMgY29kZS1zZXF1ZW5jZXMuICBJdCB3b3VsZCBiZQoJd29ydGh3aGlsZSB0byBvcHRpbWl6ZSBmb3IgdGhlIGNvbW1vbiBjYXNlIHdoZXJlIGEgY29tcGlsYXRpb24KCXVuaXQgcmVzdWx0cyBpbiBhIGNvbnRpZ3VvdXMgc2V0IG9mIGNvZGUgc2VxdWVuY2VzLCBidXQgdGhpcyBpcwoJcXVpdGUgdHJpY2t5IHRvIGdldCByaWdodCBmb3IgYXJiaXRyYXJ5IERXQVJGMiBmaWxlcy4KCShsb29rdXBfYWRkcmVzc19pbl9saW5lX2luZm9fdGFibGUpOiBEb24ndCB1c2UgdGhlIGxhc3QgbGluZSBlbnRyeQoJZm9yIGEgY29tcGlsYXRpb24gdW5pdCBmb3IgYW55dGhpbmcgd2l0aCBhbiBhZGRyZXNzIGhpZ2hlciB0aGFuCgl0aGlzIGxpbmUgZW50cnkuICBBbHNvLCBjaGVjayBmb3IgZW5kX3NlcXVlbmNlIG1hcmtlcnMgdG8KCWNvcnJlY3RseSBoYW5kbGUgZGlzY29udGludWl0aWVzLgoJKF9iZmRfZHdhcmYyX2ZpbmRfbmVhcmVzdF9saW5lKTogV2hlbiBjaGVja2luZyBwcmV2aW91c2x5IGxvYWRlZAoJY29tcGlsYXRpb24gdW5pdHMsIGNoZWNrIGFsbCBjb21waWxhdGlvbiB1bml0cyB3aXRoIGVhY2gtPmhpZ2g9PTAKCWp1c3QgbGlrZSB3aGVuIHJlYWRpbmcgY29tcGlsYXRpb24gdW5pdHMuCgoJKiBkd2FyZjIuYyAoZGVjb2RlX2xpbmVfaW5mbyk6IEluaXRpYWxpemUgdGFibGUtPmZpbGVzIGFuZAoJdGFibGUtPmxhc3RfbGluZSB0byBOVUxMIHRvIGF2b2lkIHNlZ2ZhdWx0cyBkdWUgdG8gcmFuZG9tCgl2YWx1ZXMgaW4gdGhlc2UgbWVtYmVycy4KCShjb25jYXRfZmlsZW5hbWUpOiBDaGVjayBmb3Igb3V0LW9mLXJhbmdlIGZpbGUgbnVtYmVyIGJlZm9yZQoJaW5kZXhpbmcgZmlsZW5hbWUgdGFibGUuICBTZWdmYXVsdHMgc3Vjay4KCgkqIGR3YXJmMi5jIChkZWNvZGVfbGluZV9pbmZvKTogRG9uJ3QgdHJ1bmNhdGUgYWRkcmVzcyB0byBsZWFzdAoJc2lnbmlmaWNhbnQgMzIgYml0cyAoYnJlYWtzIDY0IGJpdCB0YXJnZXRzKS4KCShsb29rdXBfYWRkcmVzc19pbl9mdW5jdGlvbl90YWJsZSk6IERpdHRvLgoJKGNvbXBfdW5pdF9jb250YWluc19hZGRyZXNzKTogRGl0dG8uCgoxOTk5LTA2LTAyICBNYXJrIE1pdGNoZWxsICA8TWFyayBNaXRjaGVsbCA8bWFya0Bjb2Rlc291cmNlcnkuY29tPj4KCgkqIGVsZjMyLW1pcHMuYyAoZWxmX21pcHNfaG93dG9fdGFibGUpOiBBZGQgUl9NSVBTX0pBTFIuCgkqIGVsZjY0LW1pcHMuYyAobWlwc19lbGY2NF9ob3d0b190YWJsZV9yZWwpOiBMaWtld2lzZS4KCShtaXBzX2VsZjY0X2hvd3RvX3RhYmxlX3JlbGEpOiBMaWtld2lzZS4KCgkqIGVsZmNvZGUuaCAoZWxmX3NsdXJwX3JlbG9jX3RhYmxlX2Zyb21fc2VjdGlvbik6IE5ldyBmdW5jdGlvbiwKCXNwbGl0IG91dCBmcm9tIC4uLgoJKGVsZl9zbHVycF9yZWxvY190YWJsZSk6IEhlcmUuICBVc2UgaXQgdG8gaGFuZGxlIHRoZSBjYXNlIHdoZXJlIGEKCXNpbmdsZSBzZWN0aW9uIGhhcyB0d28gYXNzb2NpYXRlZCByZWxvY2F0aW9uIHNlY3Rpb25zLgoKMTk5OS0wNi0wMiAgTWFyayBTYWx0ZXIgIDxtc2FsdGVyQGN5Z251cy5jb20+CgoJKiBjb2ZmY29kZS5oIChjb2ZmX3NldF9hbGlnbm1lbnRfaG9vayk6IFNldCBsbWEgZnJvbSBzX3ZhZGRyIGlmCglDT0ZGX1dJVEhfUEUgZGVmaW5lZC4KCjE5OTktMDYtMDIgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQGN5Z251cy5jb20+CgoJKiBwZS1hcm0uYzogUmVuYW1lIGdsb2JhbCBhcm0gaW50ZXJ3b3JraW5nIGZ1bmN0aW9ucyB0byBhdm9pZCBuYW1lCgljb2xsaXNpb24gd2hlbiBhbGwgdGFyZ2V0cyBCRkQgaXMgYnVpbHQuCgkqIHBlaS1hcm0uYzogRGl0dG8uCgoxOTk5LTA1LTMxICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogZWxmLWJmZC5oIChlbGZfYmFja2VuZF9kYXRhKTogUmVtb3ZlIHVzZV9yZWxhX3AuICBBZGQKCW1heV91c2VfcmVsX3AsIG1heV91c2VfcmVsYV9wLCBkZWZhdWx0X3VzZV9yZWxhX3AuCgkoYmZkX2VsZl9zZWN0aW9uX2RhdGEpOiBBZGQgdXNlX3JlbGFfcC4KCSogZWxmLmMgKGJmZF9zZWN0aW9uX2Zyb21fc2hkcik6IFNldCB1c2VfcmVsYV9wIGFwcHJvcHJpYXRlbHkuCgkoX2JmZF9lbGZfbmV3X3NlY3Rpb25faG9vayk6IExpa2V3aXNlLgoJKGVsZl9mYWtlX3NlY3Rpb25zKTogVXNlIG1heV91c2VfcmVsYV9wLCBldGMuLCBpbnN0ZWFkIG9mCgl1c2VfcmVsYV9wLgoJKF9iZmRfZWxmX2NvcHlfcHJpdmF0ZV9zZWN0aW9uX2RhdGEpOiBDb3B5IHVzZV9yZWxhX3AuCgkqIGVsZmNvZGUuaCAod3JpdGVfcmVsb2NzKTogRGV0ZXJtaW5lIHdoZXRoZXIgb3Igbm90IHVzZSByZWxhCglyZWxvY3MgYmFzZWQgb24gdGhlIHJlbG9jYXRpb24gc2VjdGlvbiBoZWFkZXIuCgkqIGVsZmxpbmsuYyAoX2JmZF9lbGZfY3JlYXRlX2R5bmFtaWNfc2VjdGlvbnMpOiBVc2UgZGVmYXVsdF91c2VfcmVsYV9wCglpbnN0ZWFkIG9mIHVzZV9yZWxhX3AuCgkqIGVsZnh4LXRhcmdldC5oIChlbGZfYmFja2VuZF9tYXlfdXNlX3JlbHApOiBOZXcgbWFjcm8uCgkoZWxmX2JhY2tlbmRfbWF5X3VzZV9yZWxhX3ApOiBMaWtld2lzZS4KCShlbGZfYmFja2VuZF9kZWZhdWx0X3VzZV9yZWxhX3ApOiBMaWtld2lzZS4KCShlbGZOTl9iZWQpOiBVc2UgdGhlbS4KCldlZCBKdW4gIDIgMTI6Mzg6NDkgMTk5OSAgTWlvZHJhZyBWYWxsYXQgPG1pb2RyYWdAbXVsdGltYW5pYS5jb20+CgoJKiBob3N0cy9hbHBoYWxpbnV4LmggKFRSQURfQ09SRV9FWFRSQV9TSVpFX0FMTE9XRUQpOiBFeHBhbmQgdG8gNDA5Ni4KClR1ZSBKdW4gIDEgMTc6NTc6NTggMTk5OSAgTWFyayBQLiBNaXRjaGVsbCAgPG1pdGNoZWxsQG4wMi5hY2wubGFubC5nb3Y+CgoJKiByZWxvYy5jIChCRkRfUkVMT0NfTUlQU19TVUIpOiBOZXcgcmVsb2NhdGlvbi4KCShCRkRfUkVMT0NfTUlQU19HT1RfUEFHRSk6IExpa2V3aXNlLgoJKEJGRF9SRUxPQ19NSVBTX0dPVF9PRlNUKTogTGlrZXdpc2UuCgkoQkZEX1JFTE9DX01JUFNfR09UX0RJU1ApOiBMaWtld2lzZS4KCSogYmZkLWluMi5oOiBSZWdlbmVyYXRlZC4KCSogbGliYmZkLmg6IExpa2V3aXNlLgoJKiBlbGYzMi1taXBzLmMgKG1pcHNfaW5mb190b19ob3d0b19yZWxhKTogTmV3IGZ1bmN0aW9uLgoJKFVTRV9SRUwpOiBBZGp1c3QgZm9yIG5ldyBjb252ZW50aW9ucy4KCShNSU5VU19PTkUpOiBOZXcgbWFjcm8uCgkoZWxmX21pcHNfaG93dG9fdGFibGUpOiBBZGQgUl9NSVBTX1NVQi4KCShtaXBzX3IpOiBBZGQgZW50cmllcyBmb3IgTUlQU19TVUIsIE1JUFNfR09UX1BBR0UsIE1JUFNfR09UX09GU1QsCglhbmQgTUlQU19HT1RfRElTUC4KCShtaXBzX2VsZl9maW5hbF93cml0ZV9wcm9jZXNzaW5nKTogU2V0IHNoX2xpbmssIG5vdCBzaF9pbmZvLCBmb3IgYQoJLk1JUFMuY29udGVudCBzZWN0aW9uLgoJKF9iZmRfbWlwc19lbGZfZmFrZV9zZWN0aW9ucyk6IFRyZWF0IGFsbCBzZWN0aW9ucyB0aGF0IGJlZ2luCgl3aXRoIC5NSVBTLmNvbnRlbnQgYXMgLk1JUFMuY29udGVudCBzZWN0aW9ucy4gIFNldAoJU0hGX01OSVBTX05PU1RSSVAgZm9yIHN1Y2ggc2VjdGlvbi4KCShlbGZfaW5mb190b19ob3d0byk6IERlZmluZSB0byBtaXBzX2luZm9fdG9faG93dG9fcmVsYS4KCSogZWxmNjQtbWlwcy5jIChtaXBzX3IpOiAgQWRkIGVudHJpZXMgZm9yIE1JUFNfU1VCLCBNSVBTX0dPVF9QQUdFLAoJTUlQU19HT1RfT0ZTVCwgYW5kIE1JUFNfR09UX0RJU1AuCgpXZWQgSnVuICAyIDExOjUxOjEyIDE5OTkgIEFuZHJlYXMgU2Nod2FiICA8c2Nod2FiQGlzc2FuLmNzLnVuaS1kb3J0bXVuZC5kZT4KCgkqIHZtcy1taXNjLmMgKF9iZmRfdm1zX2hhc2hfbmV3ZnVuYyk6IEZpeCB1c2Ugb2YgdW5pbml0aWFsaXplZAoJdmFyaWFibGUuCgoJKiBlbGYzMi1tNjhrLmMgKGVsZl9tNjhrX2FkanVzdF9keW5hbWljX3N5bWJvbCk6IEF2b2lkIGFtYmlnb3VzCglgZWxzZScuCgoxOTk5LTA1LTMwICBQaGlsaXAgQmx1bmRlbGwgIDxwaGlsYkBnbnUub3JnPgoKCSogZWxmMzItYXJtLmggKGVsZjMyX2FybV9yZWxvY2F0ZV9zZWN0aW9uKTogUmVpbnN0YXRlIGNoYW5nZSBvZgoJMTk5My0wMy0yNSAoISEpLiAgVGFrZSBpbnRvIGFjY291bnQgdGhlIGJpdG1hc2tzIGZvciB0aGUgcmVsb2Mgc28KCXRoZSBhZGRlbmQgZG9lcyBub3Qgb3ZlcmZsb3cgaW50byB0aGUgcmVzdCBvZiB0aGUgd29yZC4KCjE5OTktMDUtMjkgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQGN5Z251cy5jb20+CgoJKiBiZmQtaW4uaDogQW1lbmQgcHJvdG90eXBlIGZvcgoJYmZkX2VsZjMyX2FybV9wcm9jZXNzX2JlZm9yZV9hbGxvY2F0aW9uIC4KCSogYmZkLWluLmg6IFJlZ2VuZXJhdGUuCgoJKiBlbGZhcm0tb2FiaS5jIChOVU1fRUxFTSk6IE5ldyBtYWNybzogQ29tcHV0ZSB0aGUgbnVtYmVyIG9mCgllbGVtZW50cyBpbiBhIGZpeGVkIHNpemVkIGFycmF5LgoJKEFSTV9FTEZfQUJJX1ZFUlNJT04pOiBEZWZpbmUuCgkoQVJNX0VMRl9PU19BQklfVkVSU0lPTik6IERlZmluZS4KCShSX0FSTV9USE1fQUJTNSk6IEZpeCByaWdodHNoaWZ0IGFuZCBzaXplLgoJKFJfQVJNX1RITV9QQzIyKTogRml4IHNpemUuCgkoUl9BUk1fUExUMzIpOiBEZWZpbmUgSG93dG8uCgkoZmluZF9ob3d0byk6IE5ldyBmdW5jdGlvbjogTG9jYXRlIGEgaG93dG8gYmFzZWQgb24gYSByZWxvYwoJbnVtYmVyLgoJKGVsZjMyX2FybV9pbmZvX3RvX2hvd3RvKTogVXNlIGZpbmRfaG93dG8gaWYgbmVjZXNzYXJ5LgoJKGVsZjMyX2FybV9yZWxvY19tYXApOiBDaGFuZ2UgdHlwZSBvZiBmaWVsZCBiZmRfcmVsb2NfdmFsIHRvCgliZmRfcmVsb2NfY29kZV9yZWFsX3R5cGUuCgkoZWxmMzJfYXJtX3JlbG9jX21hcFtdKTogQWRkIGVudHJpZXMgZm9yIEJGRF9SRUxPQ19WVEFCTEVfSU5IRVJJVAoJYW5kIEJGRF9SRUxPQ19WVEFCTEVfRU5UUlkuCgkoZWxmMzJfYXJtX3JlbG9jX3R5cGVfbG9va3VwKTogVXNlIGZpbmRfaG93dG8gaWYgbmVjZXNzYXJ5LgoKCSogZWxmYXJtLW5hYmkuYyAoTlVNX0VMRU0pOiBOZXcgbWFjcm86IENvbXB1dGUgdGhlIG51bWJlciBvZgoJZWxlbWVudHMgaW4gYSBmaXhlZCBzaXplZCBhcnJheS4KCShBUk1fRUxGX0FCSV9WRVJTSU9OKTogRGVmaW5lLgoJKEFSTV9FTEZfT1NfQUJJX1ZFUlNJT04pOiBEZWZpbmUuCgkoUl9BUk1fVEhNX0FCUzUpOiBGaXggcmlnaHRzaGlmdCBhbmQgc2l6ZS4KCShSX0FSTV9USE1fUEMyMik6IEZpeCBzaXplLgoJKGVsZjMyX2FybV9pbmZvX3RvX2hvd3RvX3JlbCk6IFJlbmFtZSB0byBlbGYzMl9hcm1faW5mb190b19ob3d0by4KCShlbGYzMl9hcm1fcmVsb2NfbWFwKTogQ2hhbmdlIHR5cGUgb2YgZmllbGQgYmZkX3JlbG9jX3ZhbCB0bwoJYmZkX3JlbG9jX2NvZGVfcmVhbF90eXBlLgoKCSogZWxmMzItYXJtLmggKHN0cnVjdCBlbGYzMl9hcm1fbGlua19oYXNoX3RhYmxlKTogQWRkIG5ldyBmaWVsZDoKCW5vX3BpcGVsaW5lX2tub3dsZWRnZS4KCShlbGYzMl9hcm1fbGlua19oYXNoX2NyZWF0ZSk6IEluaXRpYWxpc2UgbmV3IGZpZWxkIHRvIHplcm8uCgkoYmZkX2VsZjMyX2FybV9wcm9jZXNzX2JlZm9yZV9hbGxvY2F0aW9uKTogQWRkIG5ldyBwYXJhZW10ZXI6Cglub19waXBlbGluZV9rbm93bGVkZ2UuICBVc2UgdGhpcyBwYXJhbWV0ZXIgdG8gaW5pdGlhbGlzZSB0aGUgZmllbGQKCWluIHRoZSBnbG9iYWxzIGRhdGEgc3RydWN0dXJlLgoJKGVsZjMyX2FybV9maW5hbF9saW5rX3JlbG9jYXRlKTogT25seSBhZGQgaW4gcGlwZWxpbmUgb2Zmc2V0IGlmCglub19waXBlbGluZV9rbm93bGVkZ2UgaXMgZmFsc2UgYW5kIHRoZSBiaW5hcnkgaXMgZnJvbSBhbiBvbGQKCXRvb2xjaGFpbi4KCShlbGYzMl9hcm1fbWVyZ2VfcHJpdmF0ZV9kYXRhKTogR2VuZXJhdGUgYW4gZXJyb3IgaWYgYW4gYXR0ZW1wdCBpcwoJbWFkZSB0byBsaW5sIHRvZ2V0aGVyIGJpZyBlbmRpYW4gYW5kIGxpdHRsZSBlbmRpYW4gY29kZS4KCShlbGYzMl9hcm1fcG9zdF9wcm9jZXNzX2hlYWRlcnMpOiBOZXcgZnVuY3Rpb246ICBJbml0aWFsaXNlIHRoZQoJRUlfT1NBQkkgYW5kIEVJX0FCSVZFUlNJT04gZmllbGRzIG9mIHRoZSBuZXdseSBjcmVhdGVkIEVMRiBwcm9ncmFtCgloZWFkZXIuCgkoZWxmX2JhY2tlbmRfcG9zdF9wcm9jZXNzX2hlYWRlcnMpOiBEZWZpbmUuCgoxOTk5LTA1LTI4ICBOaWNrIENsaWZ0b24gIDxuaWNrY0BjeWdudXMuY29tPgoKCSogZWxmLWJmZC5oIChzdHJ1Y3QgZWxmX2JhY2tlbmRfZGF0YSk6IEFkZCBuZXcgZmllbGQ6CgllbGZfYmFja2VuZF9wb3N0X3Byb2Nlc3NfaGVhZGVycy4KCgkqIGVsZnh4LXRhcmdldC5oIChlbGZfYmFja2VuZF9wb3N0X3Byb2Nlc3NfaGVhZGVycyk6IERlZmluZSB0bwoJTlVMTCBpZiBub3QgYWxyZWFkeSBkZWZpbmVkLgoJKGVsZk5OX2JlZCk6IEluaXRpYWxpc2UgZWxmX2JhY2tlbmRfcG9zdF9wcm9jZXNzX2hlYWRlcnMgZmllbGQuCgoJKiBlbGYuYyAocHJlcF9oZWFkZXJzKTogU2V0IHRoZSBFSV9PU0FCSSBhbmQgRUlfQUJJVkVSU0lPTiBmaWVsZHMKCXRvIHplcm8uCgkoX2JmZF9lbGZfY29tcHV0ZV9zZWN0aW9uX2ZpbGVfcG9zaXRpb25zKTogQ2FsbAoJZWxmX2JhY2tlbmRfcG9zdF9wcm9jZXNzX2hlYWRlcnMgaWYgZGVmaW5lZC4KCjE5OTktMDUtMjggIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5AemVtYnUuY29tPgoKCSogY29uZmlndXJlLmluOiBDaGVjayB3aGV0aGVyIGdldHVpZCBhbmQgZ2V0Z2lkIGV4aXN0LgoJKiBhcmNoaXZlLmM6IERlZmluZSBnZXR1aWQgYW5kIGdldGdpZCBhcyBtYWNyb3MgaWYgSEFWRV9HRVRVSUQgb3IKCUhBVkVfR0VUR0lEIGFyZSBub3QgZGVmaW5lZCwgcmVzcGVjdGl2ZWx5LgoJKGJmZF93cml0ZV9hcm1hcCk6IERvbid0IHNwZWNpYWwgY2FzZSBvbiBfV0lOMzIgZm9yIGdldHVpZCBhbmQKCWdldGdpZC4KCSogY29uZmlndXJlLmhvc3Q6IFNldCBhY19jdl9mdW5jX2dldHt1Z31pZCBmb3IgKi0qLXdpbmRvd3MqLgoJKiBjb25maWd1cmUsIGNvbmZpZy5pbjogUmVidWlsZC4KCjE5OTktMDUtMjggIE1hcnRpbiBEb3JleSAgPG1kb3JleUBtYWRnZS5jb20+CgoJKiBlbGYzMi1pOTYwLmM6IE5ldyBmaWxlLgoJKiBlbGYuYyAocHJlcF9oZWFkZXJzKTogSGFuZGxlIGJmZF9hcmNoX2k5NjAuCgkqIHRhcmdldHMuYyAoYmZkX3RhcmdldF92ZWN0b3IpOiBBZGQgJmJmZF9lbGYzMl9pOTYwX3ZlYy4KCSogY29uZmlnLmJmZCAoaTk2MC0qLWVsZiopOiBOZXcgdGFyZ2V0LgoJKiBjb25maWd1cmUuaW4gKGJmZF9lbGYzMl9pOTYwX3ZlYyk6IE5ldyB0YXJnZXQgdmVjdG9yLgoJKiBNYWtlZmlsZS5hbSAoQkZEMzJfQkFDS0VORFMpOiBBZGQgZWxmMzItaTk2MC5sby4KCShCRkQzMl9CQUNLRU5EU19DRklMRVMpOiBBZGQgZWxmMzItaTk2MC5jLgoJKiBNYWtlZmlsZS5pbiwgYWNsb2NhbC5tNCwgY29uZmlndXJlOiBSZWJ1aWxkLgoKMTk5OS0wNS0yNyAgTmljayBDbGlmdG9uICA8bmlja2NAY3lnbnVzLmNvbT4KCgkqIGVsZmFybS1vYWJpLmMgKGVsZjMyX2FybV9ob3d0b190YWJsZSk6IEFkZCBlbnRyeSBmb3IKCVJfQVJNX1BMVDMyLgoJKGZpbmRfaG93dG8pOiBOZXcgZnVuY3Rpb246IEZpbmQgZW50cmllcyBpbiB0aGUKCWVsZjMyX2FybV9ob3d0b190YWJsZS4KCShlbGYzMl9hcm1faW5mb190b19ob3d0byk6IFVzZSBmaW5kX2hvd3RvIGlmIHRoZSBlbnRyeSBjYW5ub3QgYmUKCWNvbXB1dGVkIHNpbXBseS4KCShlbGYzMl9hcm1fcmVsb2NfdHlwZV9sb29rdXApOiBBZGQgbG9va3VwIGZvcgoJQkZEX1JFTE9DX0FSTV9QTFQzMi4KCjE5OTktMDUtMjUgIFBoaWxpcCBCbHVuZGVsbCAgPHBiQG5leHVzLmNvLnVrPgoKCSogYmZkL2VsZjMyLWFybS5oIChlbGYzMl9hcm1fbGlua19oYXNoX25ld2Z1bmMpOiBOZXcgZnVuY3Rpb24uCgkoZWxmMzJfYXJtX2xpbmtfaGFzaF90YWJsZV9jcmVhdGUpOiBVc2UgYWJvdmUgZnVuY3Rpb24gYXMgdGhlCgljb25zdHJ1Y3RvciBmb3IgaGFzaCB0YWJsZSBlbnRyaWVzLgoJKGVsZjMyX2FybV9yZWxvY2F0ZV9zZWN0aW9uKTogQXZvaWQgY3Jhc2ggd2hlbiB0aGVyZSBpcyBubyBvdXRwdXQKCXNlY3Rpb24uCgkoZWxmMzJfYXJtX2ZpbmFsX2xpbmtfcmVsb2NhdGUpOiBOZXcgcGFyYW1ldGVyIGguCgkoZWxmMzJfYXJtX3JlbG9jYXRlX3NlY3Rpb24pOiBQYXNzIHN5bWJvbCBoYXNoIGVudHJ5IHRvIGFib3ZlCglyb3V0aW5lLgoJKGVsZjMyX2FybV9nY19zd2VlcF9ob29rLCBlbGYzMl9hcm1fY2hlY2sgcmVsb2NzKTogQ29ycmVjdAoJY29tbWVudHMuCgoxOTk5LTA1LTI1ICBDYXRoZXJpbmUgTW9vcmUgIDxjbG1AY3lnbnVzLmNvbT4KCgkqIGNvZmYtYXJtLmMgKGNvZmZfYXJtX3JlbG9jYXRlX3NlY3Rpb24pOiBEb24ndCBlbWl0CgliYXNlIGZpbGUgZW50cmllcyBmb3IgcGMtcmVsYXRpdmUgdmFsdWVzLgoKMTk5OS0wNS0yNSAgREogRGVsb3JpZSAgPGRqQGN5Z251cy5jb20+CgoJKiBwZWljb2RlLmggKGNvZmZfc3dhcF9zeW1faW4pOiBXaGVuIHdlIGNyZWF0ZSB0aGUgYWN0dWFsIHNlY3Rpb24KCXRvIHJlZmxlY3QgdGhlIG5vdC10aGVyZSBzZWN0aW9uIENfU0VDVElPTiBzeW1ib2xzIHJlZmVyIHRvLAoJY2hhbmdlIHRoZSBzeW1ib2wgY2xhc3MgdG8gQ19TVEFUIGFzIHRoZSBzZWN0aW9uIGlzIG5vdyByZWFsbHkKCXRoZXJlLgoKMTk5OS0wNS0yNCAgUGhpbGlwIEJsdW5kZWxsICA8cGJAbmV4dXMuY28udWs+CgoJKiBlbGYzMi1hcm0uaCAoZWxmMzJfYXJtX3JlbG9jYXRlX3NlY3Rpb24pOiBVbmRvIGNoYW5nZSBvZgoJMTk5OS0wMy0yNS4KCk1vbiBNYXkgMTcgMTM6MzU6MzUgMTk5OSAgU3RhbiBDb3ggIDxzY294QGN5Z251cy5jb20+CgoJKiBjb2ZmLWFybS5jIChfYmZkX2NvZmZfYXJtX3NldF9wcml2YXRlX2ZsYWdzKTogQ2hhbmdlZAoJRl9QSUNfSU5UIHRvIEZfUElDLgoJKiBjb2ZmY29kZS5oIChjb2ZmX3NldF9hcmNoX21hY2hfaG9vayk6IEFkZGVkIEZfQVJNXzJhLCBhbmQKCUZfQVJNXzNNIGxhYmVscy4gIENoYW5nZWQgRl9QSUNfSU5UIHRvIEZfUElDLgoKMTk5OS0wNS0xNiAgTmljayBDbGlmdG9uICA8bmlja2NAY3lnbnVzLmNvbT4KCgkqIGNvZmYtbWNvcmUuYyAoaW5fcmVsb2NfcCk6IFJlaW5zdGF0ZS4KCjE5OTktMDUtMTUgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQGN5Z251cy5jb20+CgoJKiByZWxvYy5jIChCRkRfUkVMT0NfTUNPUkVfUlZBKTogRGVmaW5lLgoJKiBiZmQtaW4yLmg6IFJlZ2VuZXJhdGUuCgkqIGNvZmYtbWNvcmUuYyAoaW5fcmVsb2NfcCk6IFJlbW92ZSBkZWZpbnRpb24uCgkobWNvcmVfY29mZl9ob3d0byk6IEFkZCBJTUFHRV9SRUxfTUNPUkVfUlZBLgoJKG1jb3JlX2NvZmZfcmVsb2NfdHlwZV9sb29rdXApOiBNYXAgQkZEX1JFTE9DX1JWQSB0bwoJSU1BR0VfUkVMX01DT1JFX1JWQS4KCShjb2ZmX21jb3JlX3J0eXBlX3RvX2hvd3RvKTogQWRkIHNwZWNpYWwgcHJvY2Vzc2luZyBmb3IKCUlNQUdFX1JFTF9NQ09SRV9SVkEuCgkoY29mZl9tY29yZV9yZWxvY2F0ZV9zZWN0aW9uKTogQWRkIHN1cHBvcnQgZm9yCglJTUFHRV9SRUxfTUNPUkVfUlZBLgoJKiBlbGYzMi1tY29yZSAobWNvcmVfZWxmX2hvd3RvXyk6IEFkZCBSX01DT1JFX1JFTEFUSVZFLgoJKG1jb3JlX2VsZl9yZWxvY190eXBlX2xvb2t1cCk6IE1hcCBCRkRfUkVMT0NfUlZBIHRvCglSX01DT1JFX1JFTEFUSVZFLgoJKG1jb3JlX2VsZl9yZWxvY2F0ZV9zZWN0aW9uKTogRGVsZXRlIHJlZHVuZGFudCBjYXNlIGxhYmVscy4KCkZyaSBNYXkgMTQgMTA6NTk6NTUgMTk5OSAgQW5kcmVhcyBTY2h3YWIgIDxzY2h3YWJAaXNzYW4uY3MudW5pLWRvcnRtdW5kLmRlPgoKCSogZWxmMzItYXJtLmggKGVsZjMyX2FybV9yZWxvY2F0ZV9zZWN0aW9uKTogRml4IG9wZXJhdG9yCglwcmVjZWRlbmNlIGJldHdlZW4gYml0LWFuZCBhbmQgY29tcGFyaXNvbi4KClRodSBNYXkgMTMgMDk6NDU6MjMgMTk5OSAgSm9lbCBTaGVycmlsbCAoam9lbEBPQVJjb3JwLmNvbSkKCgkqIGNvbmZpZy5iZmQgKGlbMzQ1Nl04NiotKi1ydGVtcyosIG02OGsqLSotcnRlbXMqKTogQWRkZWQgdG8KCWxpc3Qgb2YgdGFyZ2V0IGZvcm1hdHMgKHRhcmdfc2VsdmVjcykuCgkoaVszNDU2XTg2Ki0qLXJ0ZW1zZWxmKiwgbWlwcyplbC0qLXJ0ZW1zKik6IE5ldyB0YXJnZXRzLgoJKHBvd2VycGNsZSotKnJ0ZW1zKiwgc2gtKi1ydGVtc2VsZiopOiBOZXcgdGFyZ2V0cy4KCjE5OTktMDUtMTAgIERKIERlbG9yaWUgIDxkakBjeWdudXMuY29tPgoKCSogZWNvZmYuYyAoX2JmZF9lY29mZl93cml0ZV9hcm1hcCk6IGdpdmUgdGhlIHN5bXRhYiBlbGVtZW50IGEKCXJlYXNvbmFibGUgbW9kZSB1bnRpbCAiYXIgeCIgaXMgc21hcnQgZW5vdWdoIHRvIHNraXAgaXQgKGZpeGVzCglnY2MvbGliZ2NjLmEgYnVpbGRzIG9uIG1pcHMtZWNvZmYgdGFyZ2V0cwoKCSogY29mZmNvZGUuaCAoc3R5cF90b19zZWNfZmxhZ3MpOiBFeHBsYWluIGhvdyBDT01EQVRzIGFyZSBzdXBwb3NlZAoJdG8gd29yay4gIEhhY2sgdG8gc3VwcG9ydCBNUyBpbXBvcnQgbGlicmFyaWVzLCB3aGljaCB1c2UgZGlmZmVyZW50CglDT01EQVQgdHlwZXMgdGhhbiBHTlUuCgkoY29mZl9zbHVycF9zeW1ib2xfdGFibGUpOiBDX1NFQ1RJT04gc3ltYm9scyBhcmUgbG9jYWw7IHRoZXkgcmVmZXIKCXRvIGltcGxpZWQgemVyby1sZW5ndGggc2VjdGlvbnMgKHNlZSBwZWljb2RlIGJlbG93KQoJKiBjb2ZmZ2VuLmMgKGNvZmZfZ2V0X25vcm1hbGl6ZWRfc3ltdGFiKTogUHJvcGVybHkgcmVhZCBsb25nIE1TCglmaWxlbmFtZSBzeW1ib2xzLCB3aGljaCB1c2Ugb25lICpvciBtb3JlKiBhdXhlbnRzLgoJKiBjb2Zmc3dhcC5oIChjb2ZmX3N3YXBfYXV4X2luKTogZGl0dG8KCSogcGVpY29kZS5oIChjb2ZmX3N3YXBfc3ltX2luKTogQnVpbGQgdGhlIGltcGxpZWQgemVyby1sZW5ndGgKCXNlY3Rpb25zCgpUdWUgTWF5IDExIDE1OjUxOjU4IDE5OTkgIEplZmZyZXkgQSBMYXcgIChsYXdAY3lnbnVzLmNvbSkKCgkqIGVsZjMyLXY4NTAuYyAodjg1MF9lbGZfaG93dG9fdGFibGUpOiBNYWtlIHBhcnRpYWxfaW5wbGFjZSBmYWxzZQoJZm9yIGFsbCByZWxvY2F0aW9ucy4KCjE5OTktMDUtMTAgIENhdGhlcmluZSBNb29yZSAgPGNsbUBjeWdudXMuY29tPgoKCSogYmZkLWluLmggKGJmZF9hcm1fYWxsb2NhdGVfaW50ZXJ3b3JraW5nX3NlY3Rpb25zKTogIFN0YXRpYwoJaWYgQ09GRl9JTUFHRV9XSVRIX1BFLgoJKGJmZF9hcm1fcHJvY2Vzc19iZWZvcmVfYWxsb2NhdGlvbik6IExpa2V3aXNlLgoJKGJmZF9hcm1fZ2V0X2JmZF9mb3JfaW50ZXJ3b3JraW5nKTogTGlrZXdpc2UuCgkqIGNvZmYtYXJtLmM6IExpa2V3aXNlLgoJKiBiZmQtaW4yLmg6IFJlZ2VuZXJhdGUuCgkqIGNvbmZpZ3VyZS5pbiAoYXJtcGVfbGl0dGxlX3ZlYyk6IFJlbW92ZSBjb2ZmLWFybS5sby4KCShhcm1wZV9iaWdfdmVjKTogTGlrZXdpc2UuCgkqIGNvbmZpZ3VyZTogUmVidWlsZC4KCjE5OTktMDUtMTAgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQGN5Z251cy5jb20+CgoJKiBlbGYuYyAoZWxmX2Zha2Vfc2VjdGlvbnMpOiBDaGVjayBmb3IgLnJlbC4gYXMgc3RhcnQgb2YgcmVsCglzZWN0aW9uLCBub3QganVzdCAucmVsLiAgU2FtZSBmb3IgLnJlbGEuCgoxOTk5LTA1LTA3ICBOaWNrIENsaWZ0b24gIDxuaWNrY0BjeWdudXMuY29tPgoKCSogY29mZi1tY29yZS5jIChjb2ZmX21jb3JlX3JlbG9jYXRlX3NlY3Rpb24pOiBSZXBsYWNlIGFzc2VydCBhYm91dAoJZW5kaWFuaXNtIHdpdGggYW4gZXJyb3IgbWVzc2FnZS4KClRodSBNYXkgIDYgMTc6MDk6MDkgMTk5OSAgRnJlZCBGaXNoICA8Zm5mQGJlLmNvbT4KCgkqIGR3YXJmMi5jIChyZWFkX2FiYnJldnMpOiBDaGFuZ2UgY2FzdCBvZiBkd2FyZl9hYmJyZXZfYnVmZmVyCglhc3NpZ25tZW50IGZyb20gInVuc2lnbmVkIGNoYXIgKiIgdG8gImNoYXIgKiIuCgkoZGVjb2RlX2xpbmVfaW5mbyk6IExpa2V3aXNlIGZvciBkd2FyZl9saW5lX2J1ZmZlciBhc3NpZ25tZW50LgoKMTk5OS0wNS0wNSAgQ2F0aGVyaW5lIE1vb3JlICA8Y2xtQGN5Z251cy5jb20+CgoJKiBjb2ZmLWFybS5jIChjb2ZmX2FybV9yZWxvY2F0ZV9zZWN0aW9uKTogIEFkZCBvbmUgdG8KCWFkZHJlc3Mgb2YgQVJNX1JWQTMyIHRodW1iIGZ1bmN0aW9ucy4KCjE5OTktMDUtMDUgIENhdGhlcmluZSBNb29yZSAgPGNsbUBjeWdudXMuY29tPgoKCSogZWxmMzItbTY4ay5jIChlbGYzMl9tNjhrX3NldF9wcml2YXRlX2ZsYWdzKTogTmV3LgoJKGVsZjMyX202OGtfY29weV9wcml2YXRlX2JmZF9kYXRhKTogTmV3LgoJKGVsZjMyX202OGtfbWVyZ2VfcHJpdmF0ZV9iZmRfZGF0YSk6IE5ldy4KCShlbGYzMl9tNjhrX3ByaW50X3ByaXZhdGVfYmZkX2RhdGEpOiBOZXcuCgkoQ1BVMzJfRkxBRyk6IERlZmluZS4KCShQTFRfQ1BVMzJfRU5UUllfU0laRSk6IERlZmluZS4KCShlbGZfY3B1MzJfcGx0MF9lbnRyeSk6IERlY2xhcmUuCgkoZWxmX2NwdTMyX3BsdF9lbnRyeSk6IERlY2xhcmUuCgkoZWxmX202OGtfYWRqdXN0X2R5bmFtaWNfc3ltYm9sKTogR2VuZXJhdGUgY3B1MzIgcGx0IGVudHJpZXMuCgkoZWxmX202OGtfZmluaXNoX2R5bmFtaWNfc3ltYm9sKTogTGlrZXdpc2UuCgkoZWxmX202OGtfZmluaXNoX2R5bmFtaWNfc2VjdGlvbnMpOiBMaWtld2lzZS4KCShlbGZfYmFja2VuZF9wbHRfaGVhZGVyX3NpemUpOiBSZW1vdmUgZGVmaW5pdGlvbi4KCShiZmRfZWxmMzJfYmZkX2NvcHlfcHJpdmF0ZV9iZmRfZGF0YSk6IERlZmluZS4KCShiZmRfZWxmMzJfYmZkX21lcmdlX3ByaXZhdGVfYmZkX2RhdGEpOiBEZWZpbmUuCgkoYmZkX2VsZjMyX2JmZF9zZXRfcHJpdmF0ZV9mbGFncyk6IERlZmluZS4KCShiZmRfZWxmMzJfYmZkX3ByaW50X3ByaXZhdGVfYmZkX2RhdGEpOiBEZWZpbmUuCgpNb24gTWF5ICAzIDA5OjI0OjQ5IDE5OTkgIEplZmZyZXkgQSBMYXcgIChsYXdAY3lnbnVzLmNvbSkKCgkqIHNvbS5jIChzb21fZml4dXBfZm9ybWF0cyk6IEZpeCBjb21tZW50cyBmb3IgUl9TSE9SVF9QQ1JFTF9NT0RFCglhbmQgUl9MT05HX1BDUkVMX01PREUuCgoxOTk5LTA0LTI5ICBOaWNrIENsaWZ0b24gIDxuaWNrY0BjeWdudXMuY29tPgoKCSogY29mZi1tY29yZS5jIChjb2ZmX21jb3JlX3JlbG9jYXRlX3NlY3Rpb24pOiBGaXggdHlwb3MuCgpGcmkgQXByIDI4IDE2OjM2OjE5IDE5OTkgIFN0YW4gQ294ICA8c2NveEBjeWdudXMuY29tPgoKCSogZWxmMzItc2guYyAoc2hfZWxmX3JlbG9jYXRlX3NlY3Rpb24pOiBJbmNsdWRlIHJlbG9jYXRpb24gYWRkZW5kCglpbiByZWxvY2F0aW9uIGNhbGN1bGF0aW9uLgoKMTk5OS0wNC0yNiAgVG9tIFRyb21leSAgPHRyb21leUBjeWdudXMuY29tPgoKCSogYWNsb2NhbC5tNCwgY29uZmlndXJlOiBVcGRhdGVkIGZvciBuZXcgdmVyc2lvbiBvZiBsaWJ0b29sLgoKMTk5OS0wNC0yMSAgTmljayBDbGlmdG9uICA8bmlja2NAY3lnbnVzLmNvbT4KCgkqIGNvZmYtbWNvcmUuYzogQWRkIHN1cHBvcnQgZm9yIG1jb3JlIHJlbG9jcy4KCjE5OTktMDQtMjAgIEdhdmluIFJvbWlnLUtvY2ggIDxnYXZpbkBjeWdudXMuY29tPgoKCSogZWxmMzItbWlwcy5jIChfYmZkX21pcHNfZWxmX3ByaW50X3ByaXZhdGVfYmZkX2RhdGEpOiBTY3JhcCB0aGUKCWluY29ycmVjdCB1c2UgRUZfTUlQU194eEJJVFBUUlMuCgoxOTk5LTA0LTE4ICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQHplbWJ1LmNvbT4KCgkqIGVsZjY0LWFscGhhLmMgKGVsZjY0X2FscGhhX3JlbGF4X3NlY3Rpb24pOiBSZW1vdmUgdW51c2VkIGxvY2FsCgl2YXJpYWJsZSBpbnNuLgoKCSogYmZkLWluMi5oOiBSZWJ1aWxkLgoJKiBsaWJiZmQuaDogUmVidWlsZC4KClNhdCBBcHIgMTcgMjA6NTU6MTUgMTk5OSAgQ2F0aGVyaW5lIE1vb3JlICA8Y2xtQGN5Z251cy5jb20+CgoJKiBjb2ZmLWFybS5jIChjb2ZmX2FybV9ydHlwZV90b19ob3d0byk6IFJlbW92ZSBBUk0yNkQgdHJhbnNmb3JtLgoJKGNvZmZfYXJtX3JlbG9jYXRlX3NlY3Rpb24pOiAgQWRkIEFSTTI2RCB0cmFuc2Zvcm0uICBPbmx5CgljaGFuZ2UgdG8gQVJNMjZEIGZvciByZWxvY2F0ZWFibGUgbGlua3MuCgoxOTk5LTA0LTE2ICBHYXZpbiBSb21pZy1Lb2NoICA8Z2F2aW5AY3lnbnVzLmNvbT4KCgkqIGVsZjMyLW1pcHMuYyAoX2JmZF9taXBzX2VsZl9wcmludF9wcml2YXRlX2JmZF9kYXRhKTogTmV3LgoJKGJmZF9lbGYzMl9iZmRfcHJpbnRfcHJpdmF0ZV9iZmRfZGF0YSk6IE5ldy4KCjE5OTktMDQtMTUgIERvdWcgRXZhbnMgIDxkZXZhbnNAY2FzZXkuY3lnbnVzLmNvbT4KCgkqIGVsZjMyLWFybS5oIChlbGYzMl9hcm1fZmluYWxfbGlua19yZWxvY2F0ZSk6ICBGb3IgUl9BUk1fVEhNX0FCUzUsCglyZWZldGNoIGFkZGVuZCBpZiBVU0VfUkVMLCBhZGQgbWFueSBjb21tZW50cyByZWdhcmRpbmcgY3VycmVudCBzdGF0ZS4KCUZvciBSX0FSTV9USE1fUEMyMiwgcmVmZXRjaCBhZGRlbmQgaWYgVVNFX1JFTCwgc2ltcGxpZnkuCgkqIGVsZmFybS1uYWJpLmMgKGVsZjMyX2FybV9ob3d0b190YWJsZSk6IEZvciBSX0FSTV9USE1fQUJTNSwgZml4CglzaXplIGFuZCByaWdodHNoaWZ0LiAgRm9yIFJfQVJNX1RITV9QQzIyLCBmaXggYml0c2l6ZS4KCSogZWxmYXJtLW9hYmkuYyAoZWxmMzJfYXJtX2hvd3RvX3RhYmxlKTogRGl0dG8uCgpXZWQgQXByIDE0IDE0OjMzOjA4IDE5OTkgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBlbGYzMi1taXBzLmMgKF9iZmRfbWlwc19lbGZfcmVhZF9lY29mZl9pbmZvKTogWmVybyBgZGVidWcnLgoJKiBlbGY2NC1hbHBoYS5jIChlbGY2NF9hbHBoYV9yZWFkX2Vjb2ZmX2luZm8pOiBMaWtld2lzZS4KCjE5OTktMDQtMTMgIERhdmlkIE1vc2JlcmdlciAgPGRhdmlkbUBocGwuaHAuY29tPgoKCSogZHdhcmYyLmMgKGRlY29kZV9saW5lX2luZm8pOiBEb24ndCB0cnVuY2F0ZSBhZGRyZXNzIHRvIGxlYXN0CglzaWduaWZpY2FudCAzMiBiaXRzIChicmVha3MgNjQgYml0IHRhcmdldHMpLgoJKGxvb2t1cF9hZGRyZXNzX2luX2Z1bmN0aW9uX3RhYmxlKTogRGl0dG8uCgkoY29tcF91bml0X2NvbnRhaW5zX2FkZHJlc3MpOiBEaXR0by4KClR1ZSBBcHIgMTMgMjE6Mjc6MTkgMTk5OSAgQ2F0aGVyaW5lIE1vb3JlICA8Y2xtQGN5Z251cy5jb20+CgoJKiBjb2ZmLWFybS5jIChhcm1fZW1pdF9iYXNlX2ZpbGVfZW50cnkpOiBOZXcgcm91dGluZS4KCShBMlQzX09GRlNFVCk6IERlZmluZS4KCShUMkEzX09GRlNFVCk6IERlZmluZS4KCShjb2ZmX2FybV9yZWxvY2F0ZV9zZWN0aW9uKTogIEVtaXQgYmFzZSBmaWxlIGVudHJpZXMgZm9yIGludGVyd29ya2luZwoJc3R1YnMuCgoxOTk5LTA0LTEzICBQaGlsaXAgQmx1bmRlbGwgIDxwaGlsYkBnbnUub3JnPgoKCSogZWxmYXJtLW5hYmkuYyAoZWxmMzJfYXJtX2hvd3RvX3RhYmxlKTogQWRkIGR1bW15IGVudHJpZXMgZm9yCglyZWxvY3MgMTcgdGhyb3VnaCAxOS4KClN1biBBcHIgMTEgMDE6MjU6MTcgMTk5OSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGVsZmNvZGUuaDogUmVtb3ZlIGZubWF0Y2guaC4KCSogZWxmbGluay5oIChlbGZfbGlua19hc3NpZ25fc3ltX3ZlcnNpb24pOiBDYWxsIGJhY2sgdG8gbGQKCWluc3RlYWQgb2YgY2FsbGluZyBmbm1hdGNoLgoKCSogY29uZmlnLmJmZCAoaT84Ni0qLWJlb3NlbGYpOiBJbmNsdWRlIHBlIHZlY3MuCgpTdW4gQXByIDExIDAxOjE0OjA2IDE5OTkgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBlbGYzMi1pMzg2LmMgKGVsZl9pMzg2X2ZpbmlzaF9keW5hbWljX3NlY3Rpb25zKTogQWxsb3cgLnBsdAoJdG8gZ28gbWlzc2luZy4KCjE5OTktMDQtMTAgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBlbGYzMi1pMzg2LmMgKGVsZl9pMzg2X3JlbG9jYXRlX3NlY3Rpb24pOiBNaW5kIG5vX3VuZGVmaW5lZAoJd2hlbiB0cnlpbmcgdG8gcmVzb2x2ZSBkeW5hbWljIHN5bWJvbCByZWZlcmVuY2VzLgoJKiBlbGYzMi1tNjhrLmMgKGVsZl9tNjhrX3JlbG9jYXRlX3NlY3Rpb24pOiBMaWtld2lzZS4KCSogZWxmMzItbWlwcy5jIChtaXBzX2VsZl9yZWxvY2F0ZV9zZWN0aW9uKTogTGlrZXdpc2UuCgkqIGVsZjMyLXBwYy5jIChwcGNfZWxmX3JlbG9jYXRlX3NlY3Rpb24pOiBMaWtld2lzZS4KCSogZWxmMzItc3BhcmMuYyAoZWxmMzJfc3BhcmNfcmVsb2NhdGVfc2VjdGlvbik6IExpa2V3aXNlLgoJKiBlbGY2NC1hbHBoYS5jIChlbGY2NF9hbHBoYV9yZWxvY2F0ZV9zZWN0aW9uKTogTGlrZXdpc2UuCgkqIGVsZjY0LXNwYXJjLmMgKHNwYXJjNjRfZWxmX3JlbG9jYXRlX3NlY3Rpb24pOiBMaWtld2lzZS4KCSogZWxmbGluay5oIChlbGZfbGlua19vdXRwdXRfZXh0c3ltKTogTGlrZXdpc2UuCgpTYXQgQXByIDEwIDE1OjEyOjA5IDE5OTkgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBzZWN0aW9uLmMgKF9iZmRfc3RyaXBfc2VjdGlvbl9mcm9tX291dHB1dCk6IE5ldyBmdW5jdGlvbiBtb3ZlZCBmcm9tCgkqIGVsZjY0LWFscGhhLmMgKGVsZjY0X2FscGhhX3N0cmlwX3NlY3Rpb25fZnJvbV9vdXRwdXQpOiAuLi4gaGVyZS4KCSogZWxmMzItaTM4Ni5jIChlbGZfaTM4Nl9zaXplX2R5bmFtaWNfc2VjdGlvbnMpOiBVc2UgaXQuCgkqIGVsZjMyLW02OGsuYyAoZWxmX202OGtfc2l6ZV9keW5hbWljX3NlY3Rpb25zKTogTGlrZXdpc2UuCgkqIGVsZjMyLW1pcHMuYyAobWlwc19lbGZfc2l6ZV9keW5hbWljX3NlY3Rpb25zKTogTGlrZXdpc2UuCgkqIGVsZjMyLXBwYy5jIChwcGNfZWxmX3NpemVfZHluYW1pY19zZWN0aW9ucyk6IExpa2V3aXNlLgoJKiBlbGYzMi1zcGFyYy5jIChlbGYzMl9zcGFyY19zaXplX2R5bmFtaWNfc2VjdGlvbnMpOiBMaWtld2lzZS4KCSogZWxmNjQtc3BhcmMuYyAoc3BhcmM2NF9lbGZfc2l6ZV9keW5hbWljX3NlY3Rpb25zKTogTGlrZXdpc2UuCgkqIGJmZC1pbjIuaDogVXBkYXRlLgoKMTk5OS0wNC0wOSAgSWFuIExhbmNlIFRheWxvciAgPGlhbkB6ZW1idS5jb20+CgoJKiBlbGY2NC1zcGFyYy5jOiBGaXggaW5jb3JyZWN0IGNhbGxzIHRvIGJmZF9jaGVja19vdmVyZmxvdy4KCjE5OTktMDQtMDggIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQGN5Z251cy5jb20+CgoJKiBjb2ZmLW1jb3JlLmM6IE5ldyBGaWxlOiBTdXBwb3J0IGZvciBtY29yZS1wZSB0YXJnZXRzLgoJKiBjcHUtbWNvcmUuYzogTmV3IEZpbGU6IFN1cHBvcnQgZm9yIG1jb3JlIHRhcmdldHMuCgkqIGVsZjMyLW1jb3JlLmM6IE5ldyBGaWxlOiBTdXBwb3J0IGZvciBtY29yZS1lbGYgdGFyZ2V0LgoJKiBwZS1tY29yZS5jOiBOZXcgRmlsZTogRGVmaW5pdGlvbnMgZm9yIG1jb3JlLXBlIHRhcmdldC4KCSogcGVpLW1jb3JlLmM6IE5ldyBGaWxlOiBEZWZpbml0aW9ucyBmb3IgbWNvcmUtcGVpIHRhcmdldC4KCSogTWFrZWZpbGUuYW06IEFkZCBzdXBwb3J0IGZvciBNQ29yZSB0YXJnZXRzLgoJKiBNYWtlZmlsZS5pbjogUmVnZW5lcmF0ZS4KCSogY29uZmlnLmJmZDogQWRkIHN1cHBvcnQgZm9yIE1Db3JlIHRhcmdldHMuCgkqIGNvbmZpZ3VyZS5pbjogQWRkIHN1cHBvcnQgZm9yIE1Db3JlIHRhcmdldHMuCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KCSogYXJjaHVyZXMuYzogQWRkIHN1cHBvcnQgZm9yIE1Db3JlIGFyY2hpdGVjdHVyZS4KCSogYmZkLWluMi5oOiBSZWdlbmVyYXRlLgoJKiBjb2ZmY29kZS5oOiBBZGQgc3VwcG9ydCBmb3IgbWNvcmUtcGUgdGFyZ2V0cy4KCSogZWxmLmM6IEFkZCBzdXBwb3J0IGZvciBtY29yZS1lbGYgdGFyZ2V0LgoJKiByZWxvYy5jOiBBZGQgc3VwcG9ydCBmb3IgTUNvcmUgcmVsb2NzLgoJKiB0YXJnZXRzLmM6IEFkZCBzdXBwb3J0IGZvciBNQ29yZSB0YXJnZXRzLgoKMTk5OS0wNC0wNyAgTmljayBDbGlmdG9uICA8bmlja2NAY3lnbnVzLmNvbT4KCgkqIGVsZmFybS1uYWJpLmMgKGVsZjMyX2FybV9ob3d0b190YWJsZSk6IEFkZCBlbnRyaWVzIGZvcgoJUl9BUk1fWFBDMjUgYW5kIFJfQVJNX1RITV9YUEMyMi4KCShlbGYzMl9hcm1fcmVsb2NfbWFwKTogUmVtb3ZlIHJlZHVuZGFudCBlbnRyaWVzLgoKMTk5OS0wNC0wNiAgSWFuIExhbmNlIFRheWxvciAgPGlhbkB6ZW1idS5jb20+CgoJKiBzeXNkZXAuaCAoTENfTUVTU0FHRVMpOiBOZXZlciBkZWZpbmUuCgoxOTk5LTA0LTA2ICBDaHJpcyBUb3JlayAgPHRvcmVrQGJzZGkuY29tPgoKCSogcmVsb2MuYyAoYmZkX2NoZWNrX292ZXJmbG93KTogQWRkIGFkZHJzaXplIHBhcmFtZXRlci4gIENoYW5nZQoJYWxsIGNhbGxlcnMuICBSZXdyaXRlIGNvbXBsZXRlbHkuCgkoX2JmZF9yZWxvY2F0ZV9jb250ZW50cyk6IFJld3JpdGUgb3ZlcmZsb3cgY2hlY2tpbmcuCgkqIGJmZC1pbjIuaDogUmVidWlsZC4KCjE5OTktMDQtMDUgIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5AemVtYnUuY29tPgoKCUZyb20gR2FicmllbCBQYXViZXJ0IDxwYXViZXJ0QGlyYW0uZXM+OgoJKiBlbGYzMi1wcGMuYyAocHBjX2VsZl9ob3d0b19yYXcpOiBTZXQgUl9QUENfR09UMTZfTE8sCglSX1BQQ19QTFQxNl9MTyBhbmQgUl9QUENfU0VDVE9GRl9MTyB0byBiZSBjb21wbGFpbl9vdmVyZmxvd19kb250LgoJU2V0IFJfUFBDX1BMVDE2X0hBLCBSX1BQQ19TRUNUT0ZGX0hBIGFuZCBSX1BQQ19FTUJfTkFERFIxNl9IQSB0bwoJaGF2ZSBhIHJpZ2h0c2hpZnQgb2YgMTYgYW5kIHVzZSBwcGNfZWxmX2FkZHIxNl9oYV9yZWxvYy4KCSogcHBjYm9vdC5jIChwcGNib290X3ZlYyk6IFVzZSBsaXR0bGUgZW5kaWFuIHJvdXRpbmVzIGZvcgoJaGVhZGVycy4KCgkqIGVsZi5jIChlbGZjb3JlX3N0cm5kdXApOiBPbmx5IGRlZmluZSBpZiBpdCB3aWxsIGJlIHVzZWQuCgkqIGVsZjMyLXBwYy5jIChwcGNfZWxmX3JlbGF4X3NlY3Rpb24pOiBSZW1vdmUgdW51c2VkIGxvY2FscyBpcmVsCglhbmQgaXJlbGVuZC4KCShwcGNfZWxmX2NoZWNrX3JlbG9jcyk6IFJlbW92ZSB1bnVzZWQgbG9jYWwgaS4KCShwcGNfZWxmX2djX21hcmtfaG9vayk6IEFkZCBkZWZhdWx0IGNhc2UgdG8gc3dpdGNoLgoKCUZyb20gQmVybmQgTml0emxlciA8bml0emxlckBrYWdjcGQwMS5hZzAxLmtvZGFrLkNPTT46CgkqIHNyZWMuYyAoc3JlY19zY2FuKTogQWNjZXB0IFxyIGluIHN5bWJvbCBkZWZpbml0aW9ucy4KCShzcmVjX29iamVjdF9wKTogU2V0IEhBU19TWU1TIGlmIHdlIHNhdyBhbnkgc3ltYm9scy4KCShzeW1ib2xzcmVjX29iamVjdF9wKTogTGlrZXdpc2UuCgoxOTk5LTA0LTA0ICBEb24gQm93bWFuIDxkb25AcGl4c2NpLmNvbT4KCgkqIGNvbmZpZy5iZmQ6IEFkZCBtaXBzKmVsLSotdnh3b3JrcyogYW5kIG1pcHMqLSotdnh3b3JrcyouCgoxOTk5LTA0LTA0ICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQHplbWJ1LmNvbT4KCgkqIGR3YXJmMS5jIChwYXJzZV9saW5lX3RhYmxlKTogUmVtb3ZlIHVudXNlZCBsb2NhbHMgbGFzdF9wYyBhbmQKCWxhc3RfbGluZS4KCSogZWxmLWJmZC5oIChfYmZkX2VsZmNvcmVfc2VjdGlvbl9mcm9tX3BoZHIpOiBEZWNsYXJlLgoJKiBlbGYzMi1pMzg2LmMgKGVsZl9pMzg2X2djX21hcmtfaG9vayk6IEFkZCBkZWZhdWx0IGNhc2UgdG8KCXN3aXRjaC4KCSogZWxmbGluay5oIChOQU1FKGJmZF9lbGYsc2l6ZV9keW5hbWljX3NlY3Rpb25zKSk6IFJlbW92ZSB1bnVzZWQKCWxvY2FsIGkuCgkqIHN5bXMuYyAoX2JmZF9zdGFiX3NlY3Rpb25fZmluZF9uZWFyZXN0X2xpbmUpOiBSZW1vdmUgdW51c2VkCglsb2NhbCB2YWwuCgoxOTk5LTAzLTMxICBOaWNrIENsaWZ0b24gIDxuaWNrY0BjeWdudXMuY29tPgoKCSogY29uZmlnLmJmZDogQWRkIHN1cHBvcnQgZm9yIGFybS1lcG9jLXBlIHRhcmdldC4KCSogY29uZmlndXJlLmluOiBBZGQgc3VwcG9ydCBmb3IgYXJtLWVwb2MtcGUgdGFyZ2V0LgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUuCgkqIHRhcmdldHMuYzogQWRkIHN1cHBvcnQgZm9yIGFybS1lcG9jLXBlIHRhcmdldC4KCSogY29mZi1hcm0uYzogQWxsb3cgaGVhZGVyIGZpbGVzIHRvIG92ZXJyaWRlIGRlZmluaXRpb24gb2YKCVRBUkdFVF9VTkRFUlNDT1JFIGFuZCBVU0VSX0xBQkVMX1BSRUZJWC4KCSogcGUtYXJtLmg6IEFsbG93IHByZXZpb3VzIGhlYWRlciBmaWxlcyB0byBvdmVycmlkZSBkZWZpbml0aW9uIG9mCglUQVJHRVRfTElUVExFX1NZTSBhbmQgVEFSR0VUX0JJR19TWU0uCgkqIHBlaS1hcm0uaDogQWxsb3cgcHJldmlvdXMgaGVhZGVyIGZpbGVzIHRvIG92ZXJyaWRlIGRlZmluaXRpb24gb2YKCVRBUkdFVF9MSVRUTEVfU1lNIGFuZCBUQVJHRVRfQklHX1NZTS4KCSogZXBvYy1wZS1hcm0uYzogTmV3IGZpbGUuICBTdXBwb3J0IGFybS1lcG9jLXBlIHRhcmdldC4KCSogZXBvYy1wZWktYXJtLmM6IE5ldyBmaWxlLiAgU3VwcG9ydCBhcm0tZXBvYy1wZWkgdGFyZ2V0LgoKMTk5OS0wMy0zMCAgTmljayBDbGlmdG9uICA8bmlja2NAY3lnbnVzLmNvbT4KCgkqIGVsZi5jIChlbGZfbWFwX3N5bWJvbHMpOiBIYW5kbGUgdGhlIGNhc2Ugd2hlcmUgc2VjdGlvbgoJc3ltYm9scyBhcmUgZ2VuZXJhdGVkIGZvciBjb250ZW50LWxlc3Mgc2VjdGlvbnMgd2hpY2ggYXJlCglub3QgbWFwcGVkIHRvIHRoZSBvdXRwdXQgZmlsZS4KCgkqIGxpbmtlci5jOiBSZXBsYWNlIGRpcmVjdCByZWZlcmVuY2VzIHRvIGZpZWxkcyBpbiBCRkQgc3RydWN0dXJlCgl3aXRoIGFjY2Vzc29yIG1hY3Jvcy4KCgkqIGVsZmxpbmsuaDogUmVwbGFjZSBkaXJlY3QgcmVmZXJlbmNlcyB0byBmaWVsZHMgaW4gQkZEIHN0cnVjdHVyZQoJd2l0aCBhY2Nlc3NvciBtYWNyb3MuCgoxOTk5LTAzLTI1ICBQaGlsaXAgQmx1bmRlbGwgIDxwYkBuZXh1cy5jby51az4KCgkqIGNvbmZpZy5iZmQ6IEVsaW1pbmF0ZSByZWR1bmRhbmN5IGluIGNoZWNrcyBmb3IgTGludXgvQVJNLgoKCSogZWxmMzItYXJtLmggKGVsZjMyX2FybV9yZWxvY2F0ZV9zZWN0aW9uKTogVGFrZSB0aGUgcmlnaHRzaGlmdCBpbnRvCglhY2NvdW50IHdoZW4gYWRqdXN0aW5nIHNlY3Rpb24gc3ltYm9scyBkdXJpbmcgYSBwYXJ0aWFsIGxpbmsuCgoxOTk5LTAzLTI0ICBOaWNrIENsaWZ0b24gIDxuaWNrY0BjeWdudXMuY29tPgoKCSogY29mZi1zcGFyYy5jIChzdHJ1Y3QgY29mZl9yZWxvY19tYXApOiBDaGFuZ2UgdHlwZSBvZiBmaWVsZAoJICAnYmZkX3JlbG9jX3ZhbCcgdG8gYmZkX3JlbG9jX2NvZGVfcmVhbF90eXBlLgoJKiBlbGYtbTEwMjAwLmMgKHN0cnVjdCBtbjEwMjAwX3JlbG9jX21hcCk6IERpdHRvLgoJKiBlbGYtbTEwMzAwLmMgKHN0cnVjdCBtbjEwMzAwX3JlbG9jX21hcCk6IERpdHRvLgoJKiBlbGYzMi1hcmMuYyAoc3RydWN0IGFyY19yZWxvY19tYXApOiBEaXR0by4KCSogZWxmMzItZDEwdi5jIChzdHJ1Y3QgZDEwdl9yZWxvY19tYXApOiBEaXR0by4KCSogZWxmMzItZDMwdi5jIChzdHJ1Y3QgZDMwdl9yZWxvY19tYXApOiBEaXR0by4KCSogZWxmMzItZnIzMC5jIChzdHJ1Y3QgZnIzMF9yZWxvY19tYXApOiBEaXR0by4KCSogZWxmMzItbTMyci5jIChzdHJ1Y3QgbTMycl9yZWxvY19tYXApOiBEaXR0by4KCSogZWxmMzItc2guYyAoc3RydWN0IGVsZl9yZWxvY19tYXApOiBEaXR0by4KCSogZWxmMzItc3BhcmMuYyAoc3RydWN0IGVsZl9yZWxvY19tYXApOiBEaXR0by4KCSogZWxmMzItdjg1MC5jIChzdHJ1Y3Qgdjg1MF9yZWxvY19tYXApOiBEaXR0by4KCSogZWxmNjQtc3BhcmMuYyAoc3RydWN0IGVsZl9yZWxvY19tYXApOiBEaXR0by4KCSogZWxmYXJtLW5hYmkuYyAoc3RydWN0IGVsZjMyX2FybV9yZWxvY19tYXApOiBEaXR0by4KCSogZWxmYXJtLW9hYmkuYyAoc3RydWN0IGVsZjMyX2FybV9yZWxvY19tYXApOiBEaXR0by4KCjE5OTktMDMtMTcgIE1hcnRpbiBIdW50ICA8aHVudEBjeWdudXMuY29tPgoKCSogc3ltcy5jIChfYmZkX3N0YWJfc2VjdGlvbl9maW5kX25lYXJlc3RfbGluZSk6IENoYW5nZWQgdGhpcwoJZnVuY3Rpb24gc28gc291cmNlLWxldmVsIGFzc2VtYmx5IHdvcmtzLiAgSWYgbXVsdGlwbGUgTl9TT3MKCWFyZSBzZWVuIHdpdGhvdXQgYW5kIE5fRlVOcywgY3JlYXRlIGFuIGluZGV4dGFibGUgZW50cnkgd2l0aAoJYSBOVUxMIGZ1bmN0aW9uIG5hbWUuCgoxOTk5LTAzLTE2ICBHYXZpbiBSb21pZy1Lb2NoICA8Z2F2aW5AY3lnbnVzLmNvbT4KCgkqIGVsZjMyLW1pcHMuYyAoX2JmZF9taXBzX2VsZl9tZXJnZV9wcml2YXRlX2JmZF9kYXRhKSBBbGxvdyBtZXJnaW5nCglvZiBjZXJ0aWFuIHNpbWlsYXIgY3B1cy4KCjE5OTktMDMtMTYgIEdhdmluIFJvbWlnLUtvY2ggIDxnYXZpbkBjeWdudXMuY29tPgoKCSogZWxmMzItbWlwcy5jIChfYmZkX21pcHNfZWxmX2ZpbmFsX3dyaXRlX3Byb2Nlc3NpbmcpOgoJQWRkIHRoZSA1MDAwLiAgQ2hhbmdlIHRoZSBhcmNoaXRlY3R1cmUgZm9yIHRoZSA1NDAwIHRvIG1pcHM0LgoJKGVsZl9taXBzX21hY2gpOiBBZGQgcjUwMDAuCgoxOTk5LTAzLTExICBEb3VnIEV2YW5zICA8ZGV2YW5zQGNhc2V5LmN5Z251cy5jb20+CgoJKiBjcHUtaTk2MC5jIChzY2FuX2k5NjBfbWFjaCk6IFJlY29nbml6ZSBpOTYwOmthX3NhIGFuZCBpOTYwOmtiX3NiLgoKMTk5OS0wMy0xMSAgTmljayBDbGlmdG9uICA8bmlja2NAY3lnbnVzLmNvbT4KCgkqIGJpbmFyeS5jIChiaW5hcnlfc2V0X3NlY3Rpb25fY29udGVudHMpOiBHZW5lcmF0ZSB3YXJuaW5nIGFib3V0CglodWdlIGZpbGUgb2Zmc2V0cyBmb3IgYW55IHNlY3Rpb24gdGhhdCB3aWxsIG9jY3VweSBmaWxlIHNwYWNlLCBub3QKCWp1c3QgdGhvc2UgdGhhdCBhcmUgbG9hZGFibGUuCgoxOTk5LTAyLTI0ICBKaW0gQmxhbmR5ICA8amltYkB6d2luZ2xpLmN5Z251cy5jb20+CgoJKiBsaWJiZmQuaDogUmVnZW5lcmF0ZSBhZnRlciBOaWNrIENsaWZ0b24ncyBGZWIgMTcgY2hhbmdlcy4KCjE5OTktMDItMjIgIEppbSBMZW1rZSAgPGpsZW1rZUBjeWdudXMuY29tPgoKCSogZWxmMzItcHBjLmM6IEFkZCBwcGNfZWxmX3JlbGF4X3NlY3Rpb24oKSBmb3IgdGhlIGxkIG9wdGlvbiBtcGM4NjBjMC4KCk1vbiBGZWIgMjIgMTg6MjY6NTEgMTk5OSAgSWFuIExhbmNlIFRheWxvciAgPGlhbkBjeWdudXMuY29tPgoKCSogZWxmLWJmZC5oIChFTEZfTElOS19IQVNIX1JFRl9SRUdVTEFSX05PTldFQUspOiBEZWZpbmUuCgkqIGVsZmxpbmsuaDogUmV2ZXJ0IGFsbCBjaGFuZ2VzIHNpbmNlIEZlYiAxNi4gIEluc3RlYWQ6CgkoZWxmX2xpbmtfYWRkX29iamVjdF9zeW1ib2xzKTogU2V0IFJFRl9SRUdVTEFSX05PTldFQUsgZmxhZyBpZgoJYXBwcm9wcmlhdGUuICBDb3B5IGl0IHRvIHZlcnNpb24gc3ltYm9scy4KCShlbGZfZml4X3N5bWJvbF9mbGFncyk6IFNldCBSRUZfUkVHVUxBUl9OT05XRUFLIGZvciBub24gRUxGCglzeW1ib2xzIGlmIGFwcHJvcHJpYXRlLgoJKGVsZl9hZGp1c3RfZHluYW1pY19zeW1ib2wpOiBTZXQgUkVGX1JFR1VMQVJfTk9OV0VBSyBmb3Igd2Vha2RlZgoJc3ltYm9sIGlmIGFwcHJvcHJpYXRlLgoJKGVsZl9saW5rX291dHB1dF9leHRzeW0pOiBJZiBzeW1ib2wgaXMgbWFya2VkIGFzIHVuZGVmaW5lZCwgYW5kCgloYXMgbm8gbm9ud2VhayByZWZlcmVuY2VzLCBtYXJrIGl0IGFzIHdlYWsgdW5kZWZpbmVkLgoKRnJpIEZlYiAxOSAxNjowMToxMiAxOTk5ICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQGN5Z251cy5jb20+CgoJKiBlbGZsaW5rLmggKGVsZl9tZXJnZV9zeW1ib2wpOiBXaGVuIG92ZXJyaWRpbmcgYSBkeW5hbWljCglkZWZpbml0aW9uIHdpdGggYSB3ZWFrIHVuZGVmaW5lZCBzeW1ib2wsIHNldCBORUVEU19QTFQgaWYgaXQgaXMgYQoJZnVuY3Rpb24uCgkoZWxmX2xpbmtfYWRkX29iamVjdF9zeW1ib2xzKTogRG9uJ3QgY29weSB0aGUgb3RoZXIgZmllbGQgaWYgd2UKCWFyZSBvdmVycmlkZGluZy4KClRodSBGZWIgMTggMTg6MDc6NDMgMTk5OSAgSWFuIExhbmNlIFRheWxvciAgPGlhbkBjeWdudXMuY29tPgoKCSogZWxmbGluay5oIChlbGZfbWVyZ2Vfc3ltYm9sKTogRG8gbm90IG1lcmdlIGFueSBzeW1ib2wgZnJvbSBhCglzaGFyZWQgb2JqZWN0IHdpdGggYSB3ZWFrIHVuZGVmaW5lZCBzeW1ib2wuCgoxOTk5LTAyLTE4ICBOaWNrIENsaWZ0b24gIDxuaWNrY0BjeWdudXMuY29tPgoKCSogZWxmYXJtLW5hYmkuYzogU2V0IHBhcnRpYWxfaW5wbGFjZSBiYWNrIHRvIGZhbHNlLgoKMTk5OS0wMi0xNyAgTmljayBDbGlmdG9uICA8bmlja2NAY3lnbnVzLmNvbT4KCgkqIGNvZmYtYXJtLmMgKFRBUkdFVF9VTkRFUlNDT1JFKTogUmUtZW5hYmxlLgoJKFVTRVJfTEFCRUxfUFJFRklYKTogU2V0IHRvICJfIi4KCglUaGUgZm9sbG93aW5nIHBhdGNoZXMgYXJlIGZyb206IFNjb3R0IEJhbWJyb3VnaAoJPHNjb3R0YkBjb3JlbGNvbXB1dGVyLmNvbT4KCgkqIGxpYmFvdXQuaCAoTV9BUk02X05FVEJTRCk6IFNldCB0byAxNDMuCgoJKiByZWxvYy5jOiBBZGQgQVJNIFBJQyByZWxvY3M6ICAgQkZEX1JFTE9DX0FSTV9HT1QxMiwKCUJGRF9SRUxPQ19BUk1fR09UMzIsIEJGRF9SRUxPQ19BUk1fSlVNUF9TTE9ULCBCRkRfUkVMT0NfQVJNX0NPUFksCglCRkRfUkVMT0NfQVJNX0dMT0JfREFULCBCRkRfUkVMT0NfQVJNX1BMVDMyLAoJQkZEX1JFTE9DX0FSTV9SRUxBVElWRSwgQkZEX1JFTE9DX0FSTV9HT1RPRkYsIEJGRF9SRUxPQ19BUk1fR09UUEMuCgkqIGJmZC1pbjIuaDogUmVnZW5lcmF0ZS4KCgkqIGVsZmFybS1uYWJpLmMgKGVsZjMyX2FybV9ob3d0b190YWJsZSk6IFNldCBwYXJ0aWFsX2lucGxhY2UgdG8KCSd0cnVlJyBhcyBSRUwgcmVsb2NzIGFyZSBub3cgYmVpbmcgdXNlZC4gIEFkZCBuZXcgUElDIHJlbG9jczoKCVJfQVJNX0NPUFksIFJfQVJNX0dMT0JfREFULCBSX0FSTV9KVU1QX1NMT1QsIFJfQVJNX1JFTEFUSVZFLAoJUl9BUk1fR09UT0ZGLCBSX0FSTV9HT1RQQywgUl9BUk1fR09UMzIsIFJfQVJNX1BMVDMyLgoKCSogZWxmMzItYXJtLmggKGVsZjMyX2FybV9tZXJnZV9wcml2YXRlX2JmZF9kYXRhKTogQ2hlY2sgYnl0ZSBvcmRlcgoJb2YgdGFyZ2V0cy4KCShlbGYzMl9hcm1fZmluYWxfbGlua19yZWxvY2F0ZSk6IENoYW5nZSBwYXJhbWV0ZXJzIHNvIHRoYXQgZW50aXJlCglyZWxvYyBpcyBwYXNzZWQuICBBZGQgc3VwcG9ydCBmb3IgUElDIHJlbG9jcy4KCShlbGYzMl9hcm1fcmVsb2NhdGVfc2VjdGlvbik6IFBhc3MgZW50aXJlIHJlbG9jIHRvCgllbGYzMl9hcm1fZmluYWxfbGlua19yZWxvY2F0ZS4KCShlbGYzMl9hcm1fY2hlY2tfcmVsb2NzKTogSGFuZGxlIG5ldyBQSUMgcmVsb2NzLgoJKGVsZjMyX2FybV9hZGp1c3RfZHluYW1pY19zeW1ib2wpOiBOZXcgZnVuY3Rpb24uCgkoZWxmMzJfYXJtX3NpemVfZHluYW1pY19zZWN0aW9ucyk6IE5ldyBmdW5jdGlvbi4KCShlbGYzMl9hcm1fZGlzY2FyZF9jb3BpZXMpOiBOZXcgZnVuY3Rpb24uCgkoZWxmMzJfYXJtX2ZpbmlzaF9keW5hbWljX3N5bWJvbCk6IE5ldyBmdW5jdGlvbi4KCShlbGYzMl9hcm1fZmluaXNoX2R5bmFtaWNfc2VjdGlvbnMpOiBOZXcgZnVuY3Rpb24uCgkoRUxGX01BWFBBR0VfU0laRSk6IERlZmluZS4KCShiZmRfZWxmMzJfYmZkX3JlbG9jX3R5cGVfbG9va3VwKTogRGVmaW5lLgoJKGVsZl9iYWNrZW5kX3JlbG9jYXRlX3NlY3Rpb24pOiBEZWZpbmUuCgkoZWxmX2JhY2tlbmRfYWRqdXN0X2R5bmFtaWNfc3ltYm9sKTogRGVmaW5lLgoJKGVsZl9iYWNrZW5kX2NyZWF0ZV9keW5hbWljX3NlY3Rpb25zKTogRGVmaW5lLgoJKGVsZl9iYWNrZW5kX2ZpbmlzaF9keW5hbWljX3N5bWJvbCk6IERlZmluZS4KCShlbGZfYmFja2VuZF9maW5pc2hfZHluYW1pY19zZWN0aW9ucyk6IERlZmluZS4KCShlbGZfYmFja2VuZF9zaXplX2R5bmFtaWNfc2VjdGlvbnMpOiBEZWZpbmUuCgkoZWxmX2JhY2tlbmRfcGx0X3JlYWRvbmx5KTogRGVmaW5lLgoJKGVsZl9iYWNrZW5kX3dhbnRfZ290X3BsdCk6IERlZmluZS4KCShlbGZfYmFja2VuZF93YW50X3BsdF9zeW0pOiBEZWZpbmUuCgpXZWQgRmViIDE3IDEyOjAyOjI2IDE5OTkgIFN0YW4gQ294ICA8c2NveEBjeWdudXMuY29tPgoKCSogZWxmMzItbWlwcy5jIChfYmZkX21pcHNfZWxmX3NlY3Rpb25fZnJvbV9zaGRyKTogTWFrZSByZWdpbmZvCglzZWN0aW9ucyBTRUNfTElOS19PTkNFIGFuZCBTRUNfTElOS19EVVBMSUNBVEVTX1NBTUVfU0laRS4KCShfYmZkX21pcHNfZWxmX2Zha2Vfc2VjdGlvbnMpOiBMaWtld2lzZS4KCldlZCBGZWIgMTcgMTI6MDc6MjMgMTk5OSAgQW5kcmVhcyBTY2h3YWIgIDxzY2h3YWJAaXNzYW4uY3MudW5pLWRvcnRtdW5kLmRlPgoKCSogZWxmYXJtLW9hYmkuYyAoYmZkX2VsZjMyX2FybV9hbGxvY2F0ZV9pbnRlcndvcmtpbmdfc2VjdGlvbnMsCgliZmRfZWxmMzJfYXJtX2dldF9iZmRfZm9yX2ludGVyd29ya2luZywKCWJmZF9lbGYzMl9hcm1fcHJvY2Vzc19iZWZvcmVfYWxsb2NhdGlvbik6IERlZmluZSB0byBhdm9pZCBjbGFzaAoJd2l0aCBlbGZhcm0tbmFiaS5jLgoKCSogZWxmMzItYXJtLmg6IERvbid0IGRlY2xhcmUgZWxmMzJfYXJtX2luZm9fdG9faG93dG8uCgkoZWxmMzJfdGh1bWJfdG9fYXJtX3N0dWIsIGVsZjMyX2FybV90b190aHVtYl9zdHViLAoJZWxmMzJfYXJtX2ZpbmRfbmVhcmVzdF9saW5lKTogTWFrZSB0aGVtIHN0YXRpYy4KClR1ZSBGZWIgMTYgMjI6NDQ6MzcgMTk5OSAgSWFuIExhbmNlIFRheWxvciAgPGlhbkBjeWdudXMuY29tPgoKCSogZWxmbGluay5oIChlbGZfbWVyZ2Vfc3ltYm9sKTogQWRkIHBmbGFncyBwYXJhbWV0ZXIuICBDaGFuZ2UgYWxsCgljYWxsZXJzLiAgRG8gbm90IG1lcmdlIGEgZGVmaW5pdGlvbiBmcm9tIGEgc2hhcmVkIG9iamVjdCB3aXRoIGEKCXdlYWsgdW5kZWZpbmVkIHN5bWJvbC4KCShlbGZfbGlua19hZGRfb2JqZWN0X3N5bWJvbHMpOiBEbyBub3QgY2hhbmdlIHRoZSBzeW1ib2wgdHlwZSBvcgoJc2l6ZSBpZiB0aGUgb2xkIHN5bWJvbCBvdmVycmlkZXMgdGhlIG5ldyBvbmUuCgoxOTk5LTAyLTA4ICBOaWNrIENsaWZ0b24gIDxuaWNrY0BjeWdudXMuY29tPgoKCSogY29uZmlnLmJmZDogQWRkIHN1cHBvcnQgZm9yIHN0cm9uZ2FybSB0YXJnZXQuCgpNb24gRmViICA4IDExOjE4OjE0IDE5OTkgIEFuZHJlYXMgU2Nod2FiICA8c2Nod2FiQGlzc2FuLmNzLnVuaS1kb3J0bXVuZC5kZT4KCgkqIGVsZjMyLW02OGsuYyAocmVsb2NfbWFwKTogVXNlIHRoZSBjb3JyZWN0IHR5cGVzIGZvciB0aGUgc3RydWN0CglmaWVsZHMgaW5zdGVhZCBvZiB1bnNpZ25lZCBjaGFyLgoKRnJpIEZlYiAgNSAwMDoyMjozNiAxOTk5ICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQGN5Z251cy5jb20+CgoJKiBNYWtlZmlsZS5hbTogUmVidWlsZCBkZXBlbmRlbmNpZXMuCgkqIE1ha2VmaWxlLmluOiBSZWJ1aWxkLgoKVGh1IEZlYiAgNCAyMjozMDoxMyAxOTk5ICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQGN5Z251cy5jb20+CgoJKiBjb25maWd1cmUuaW46IENoYW5nZSBBQ19QUkVSRVEgdG8gMi4xMy4gIFJlbW92ZSBBTV9DWUdXSU4zMi4KCUNoYW5nZSBBTV9FWEVFWFQgdG8gQUNfRVhFRVhUIGFuZCBBTV9QUk9HX0lOU1RBTEwgdG8KCUFDX1BST0dfSU5TVEFMTC4gIEFkZCBjb21tZW50cyB0byB1c2VzIG9mIEFDX0RFRklORS4KCSogYWNpbmNsdWRlLm00OiBBZGQgY29tbWVudHMgdG8gdXNlcyBvZiBBQ19ERUZJTkUuCgkqIGFjY29uZmlnLmg6IFJlbW92ZS4KCSogY29uZmlndXJlOiBSZWJ1aWxkIHdpdGggY3VycmVudCBhdXRvY29uZi9hdXRvbWFrZS4KCSogYWNsb2NhbC5tNDogTGlrZXdpc2UuCgkqIGNvbmZpZy5pbjogTGlrZXdpc2UuCgkqIE1ha2VmaWxlLmluOiBMaWtld2lzZS4KCjE5OTktMDItMDQgIERKIERlbG9yaWUgIDxkakBjeWdudXMuY29tPgoKCSogbGliYmZkLmMgKHJlYWxfcmVhZCk6IGRvbid0IGNhbGwgZnJlYWQgZm9yIHplcm8gYnl0ZXMuICBUaGlzCgljb3ZlcnMgdXAgYSBidWcgKG9yIG1pc3VzZSBvZiBiZmQpIHRoYXQncyBleHBvc2VkIGJ5IFNvbGFyaXMuCgpUaHUgRmViICA0IDEyOjM4OjEwIDE5OTkgIFN0YW4gQ294ICA8c2NveEBjeWdudXMuY29tPgoKCSogZWxmMzItbWlwcy5jIChtaXBzX2VsZl9yZWxvY2F0ZV9zZWN0aW9uKTogSW5zdXJlIHRoYXQgdGhlIHRhcmdldAoJb2YgYSBqdW1wIGlzIGluIHRoZSBjdXJyZW50IDI1NiBNQiByZWdpb24uCgpUaHUgRmViICA0IDEyOjE1OjM4IDE5OTkgIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5AY3lnbnVzLmNvbT4KCgkqIGZvcm1hdC5jIChiZmRfY2hlY2tfZm9ybWF0X21hdGNoZXMpOiBDaGFuZ2UgbGFzdCBwYXRjaCB0byBvbmx5Cgl0YWtlIGVmZmVjdCBmb3IgdGhlIGJpbmFyeSB0YXJnZXQuCgpXZWQgRmViICAzIDE5OjQwOjEyIDE5OTkgIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5AY3lnbnVzLmNvbT4KCgkqIGVsZjMyLWkzODYuYyAoZWxmX2kzODZfcmVsb2NfdHlwZV9sb29rdXApOiBBZGQgQkZEX1JFTE9DX0NUT1IuCgpXZWQgRmViICAzIDE1OjAyOjQ0IDE5OTkgIENhdGhlcmluZSBNb29yZSAgPGNsbUBjeWdudXMuY29tPgoKCSogZWxmMzItZnIzMC5jIChmcjMwX2VsZl9jaGVja19yZWxvY3MpOiAgTmV3IHJvdXRpbmUuCgpUdWUgRmViICAyIDIxOjM4OjI4IDE5OTkgIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5AY3lnbnVzLmNvbT4KCgkqIGZvcm1hdC5jIChiZmRfY2hlY2tfZm9ybWF0X21hdGNoZXMpOiBJZiB0aGUgdGFyZ2V0IHdhcwoJcHJldmlvdXNseSBzcGVjaWZpZWQsIGRvbid0IGNoZWNrIG90aGVyIHRhcmdldHMgd2hlbiBjaGVja2luZyBmb3IKCWFuIGFyY2hpdmUgZmlsZS4KClR1ZSBGZWIgIDIgMTg6MTY6NDMgMTk5OSAgQ2F0aGVyaW5lIE1vb3JlICA8Y2xtQGN5Z251cy5jb20+CgoJKiBlbGYzMi1hcm0uaCAoZWxmMzJfYXJtX3JlbG9jX21hcCk6ICBSZW1vdmVkLgoJKGVsZjMyX2FybV9yZWxvY190eXBlX2xvb2t1cCk6ICBSZW1vdmVkCgkqIGVsZmFybS1uYWJpLmMgKGVsZjMyX2FybV9yZWxvY19tYXApOiAgTmV3LgoJKGVsZjMyX2FybV9yZWxvY190eXBlX2xvb2t1cCk6ICBOZXcuCgkqIGVsZmFybS1vYWJpLmMgKGVsZjMyX2FybV9yZWxvY19tYXApOiAgTmV3LgoJKGVsZjMyX2FybV9yZWxvY190eXBlX2xvb2t1cCk6ICBOZXcuCgpNb24gRmViICAxIDE5OjQ5OjIxIDE5OTkgIENhdGhlcmluZSBNb29yZSAgPGNsbUBjeWdudXMuY29tPgoKCSogZWxmYXJtLW5hYmkuYzogIFJlbmFtZWQgZnJvbSBlbGYzMi1hcm0tbmV3YWJpLmMuCgkqIGVsZmFybS1vYWJpLmM6ICBSZW5hbWVkIGZyb20gZWxmMzItYXJtLW9sZGFiaS5jCgkqIE1ha2VmaWxlLmFtOiAgVXNlIG5ldyBmaWxlcy4KCSogTWFrZWZpbGUuaW46ICBSZWdlbmVyYXRlLgoJKiBjb25maWd1cmUuaW46ICBVc2UgbmV3IGZpbGVzLgoJKiBjb25maWd1cmU6ICBSZWdlbmVyYXRlLgoKMTk5OS0wMi0wMSAgTmljayBDbGlmdG9uICA8bmlja2NAY3lnbnVzLmNvbT4KCgkqIGVsZjMyLWZyMzAuYyAoZnIzMF9lbGZfZ2NfbWFya19ob29rKTogTmV3IGZ1bmN0aW9uLgoJKGZyMzBfZWxmX2djX3N3ZWVwX2hvb2spOiBOZXcgZnVuY3Rpb24uCgkoZWxmX2JhY2tlbmRfY2FuX2djX3NlY3Rpb25zKTogRGVmaW5lLgoKTW9uIEZlYiAgMSAxMjoyMTo0NyAxOTk5ICBDYXRoZXJpbmUgTW9vcmUgIDxjbG1AY3lnbnVzLmNvbT4KCgkqIHRhcmdldHMuYyAoYmZkX3RhcmdldF92ZWN0b3IpOiAgQWRkIGJmZF9lbGYzMl9saXR0bGVhcm1fb2FiaV92ZWMKCWFuZCBiZmRfZWxmMzJfYmlnYXJtX29hYmlfdmVjLgoKTW9uIEZlYiAgMSAxMTo0NjozMSAxOTk5ICBDYXRoZXJpbmUgTW9vcmUgIDxjbG1AY3lnbnVzLmNvbT4KCgkqIE1ha2VmaWxlLmFtIChlbGYzMi1hcm0tb2xkYWJpLmxvKTogIE5ldy4KCShlbGYzMi1hcm0tbmV3YWJpLmxvKTogIE5ldy4KCSogTWFrZWZpbGUuaW46ICBSZWdlbmVyYXRlLgoJKiBjb25maWcuYmZkICh0aHVtYi0qLWVsZik6ICBSZW1vdmUgZGVmaW5pdGlvbiBvZiB0YXJnX3VuZGVyc2NvcmUuCgkoYXJtLSotZWxmKTogIExpa2V3aXNlLgoJKGFybS0qLW9hYmkpOiAgTmV3LgoJKHRodW1iLSotb2FiaSk6ICBOZXcuCgkqIGNvbmZpZ3VyZTogIFJlZ2VuZXJhdGUuCgkqIGNvbmZpZ3VyZS5pbiAoYmZkX2VsZjMyX2xpdHRsZWFybV9vYWJpX3ZlYyk6ICBOZXcuCgkoYmZkX2VsZjMyX2JpZ2FybV9vYWJpX3ZlYyk6ICBOZXcuCgkqIGVsZjMyLWFybS1uZXdhYmkuYzogIE5ldy4KCSogZWxmMzItYXJtLW9sZGFiaS5jOiAgTmV3LgoJKiBlbGYzMi1hcm0uYzogIFJlbW92ZWQuCgkqIGVsZjMyLWFybS5oOiAgTmV3LgoKTW9uIEZlYiAgMSAxMTo1MjoxMiAxOTk5ICBGcmFuayBDaC4gRWlnbGVyICA8ZmNoZUBjeWdudXMuY29tPgoKCSogYmluYXJ5LmMgKGJpbmFyeV9zZXRfc2VjdGlvbl9jb250ZW50cyk6IE9taXQgd2FybmluZ3MgZm9yCgl1bmxvYWRhYmxlIHNlY3Rpb25zLgoKMTk5OS0wMS0zMSAgTWljaGFlbCBNZWlzc25lciAgPG1laXNzbmVyQGN5Z251cy5jb20+CgoJKiBjb25maWcuYmZkIChwb3dlcnBjeyxsZX0tKi12eHdvcmtzKik6IEFkZCBhbGlhc2VzIHRvCglwb3dlcnBjeyxsZX0tKi1lYWJpLgoKMTk5OS0wMS0yOSAgTmljayBDbGlmdG9uICA8bmlja2NAY3lnbnVzLmNvbT4KCgkqIGR3YXJmMi5jIChyZWFkX3Vuc2lnbmVkX2xlYjEyOCk6IFJlbW92ZSB1bnVzZWQgdmFyaWFibGVzLgoJKiBkd2FyZjIuYyAocmVhZF9zaWduZWRfbGViMTI4KTogUmVtb3ZlIHVudXNlZCB2YXJpYWJsZXMuCgpGcmkgSmFuIDI5IDAwOjQ3OjIxIDE5OTkgIEguSi4gTHUgIDxoamxAZ251Lm9yZz4KCgkqIGVsZi5jIChhc3NpZ25fZmlsZV9wb3NpdGlvbnNfZm9yX3NlZ21lbnRzKTogT25seSBhZGp1c3QKCXBfYWxpZ24gd2hlbiBuZWVkZWQuCgpUaHUgSmFuIDI4IDIwOjA1OjIyIDE5OTkgIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5AY3lnbnVzLmNvbT4KCgkqIGJpbmFyeS5jIChiaW5hcnlfc2V0X3NlY3Rpb25fY29udGVudHMpOiBEb24ndCByZXR1cm4gZWFybHkgZm9yIGEKCW5vbi1sb2FkYWJsZSBzZWN0aW9uLCBpbiBjYXNlIHRoZSBmaXJzdCBzZWN0aW9uIGlzIG5vbi1sb2FkYWJsZS4KCURvbid0IHNldCB0aGUgbG93IGxtYSBmb3IgYSBTRUNfTkVWRVJfTE9BRCBzZWN0aW9uLiAgRnJvbSBNYWNpZWoKCVcuIFJvenlja2kgPG1hY3JvQGRzMi5wZy5nZGEucGw+LgoKMTk5OS0wMS0yOCAgTmljayBDbGlmdG9uICA8bmlja2NAY3lnbnVzLmNvbT4KCgkqIGVsZjMyLWZyMzAuYyAoZnIzMF9yZWxvY19tYXApOiBBZGQgUl9GUjMwX0dOVV9WVElOSEVSSVQgYW5kCglSX0ZSMzBfR05VX1ZURU5UUlkgcmVsb2NzLgoKVGh1IEphbiAyOCAxMTowODoxNiAxOTk5ICBDYXRoZXJpbmUgTW9vcmUgIDxjbG1AY3lnbnVzLmNvbT4KCgkqIGVsZmxpbmsuaCAoZWxmX2xpbmtfb3V0cHV0X3N5bSk6ICBaZXJvIHN5bXMgd2hpY2ggYXJlCglwYXJ0IG9mIHNlY3Rpb25zIHdoaWNoIGhhdmUgYmVlbiBleGNsdWRlZC4KCldlZCBKYW4gMjcgMTM6MzU6MzUgMTk5OSAgU3RhbiBDb3ggIDxzY294QGN5Z251cy5jb20+CgoJKiBjb2ZmLWFybS5jIChfYmZkX2NvZmZfYXJtX3NldF9wcml2YXRlX2ZsYWdzKTogQ2hhbmdlZCBGX1BJQwoJdG8gRl9QSUNfSU5ULgoJKiBjb2ZmY29kZS5oIChjb2ZmX3NldF9hcmNoX21hY2hfaG9vayk6IFJlbW92ZWQgRl9BUk1fMmEgYW5kCglGX0FSTV8zTSBsYWJlbHMuICBDaGFuZ2VkIEZfUElDIHRvIEZfUElDX0lOVC4KCjE5OTktMDEtMjcgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQGN5Z251cy5jb20+CgoJKiBlbGYzMi1mcjMwLmMgKGZyMzBfZWxmX2hvd3RvX3RhYmxlKTogRml4IG5hbWUgb2YgUl9GUjMwXzQ4CglyZWxvY2F0aW9uLgoJKGZyMzBfZmluYWxfbGlua19yZWxvY2F0ZSk6IFVzZSBjb21wdXRlZCB2YWx1ZSBhcyByZXN1bHQgb2YKCXJlbG9jYXRpb24uCgoxOTk5LTAxLTI2ICBGcmFuayBDaC4gRWlnbGVyICA8ZmNoZUBjeWdudXMuY29tPgoKCSogYmluYXJ5LmMgKGJpbmFyeV9zZXRfc2VjdGlvbl9jb250ZW50cyk6IEVtaXQgd2FybmluZyBmb3IKCWh1Z2UgZmlsZSBvZmZzZXRzIGR1ZSB0byB3aWRlbHktZGlzcGVyc2VkIHNlY3Rpb24gTE1Bcy4KCk1vbiBKYW4gMTggMDM6MzU6MzUgMTk5OSAgSWFuIExhbmNlIFRheWxvciAgPGlhbkBjeWdudXMuY29tPgoKCSogZWxmLmMgKGFzc2lnbl9maWxlX3Bvc2l0aW9uc19mb3Jfc2VnbWVudHMpOiBJZiBub3QgRF9QQUdFRCwKCWFsaWduIGZpcnN0IHNlY3Rpb24gdG8gbGFyZ2VzdCBzZWN0aW9uIGFsaWdubWVudCwgbm90IGZpcnN0CglzZWN0aW9uIGFsaWdubWVudC4KCjE5OTktMDEtMDQgIEphc29uIE1vbGVuZGEgIChqc21AYnVnc2hhY2suY3lnbnVzLmNvbSkKCgkqIGNvbmZpZ3VyZS5pbjogUmVxdWlyZSBhdXRvY29uZiAyLjEyLjEgb3IgaGlnaGVyLgoKVHVlIERlYyAyMiAxNToyMTo0MSAxOTk4ICBDYXRoZXJpbmUgTW9vcmUgIDxjbG1AY3lnbnVzLmNvbT4KCgkqIGFyY2h1cmVzLmMgKGJmZF9tYWNoX2kzODZfaTM4Nl9pbnRlbF9zeW50YXgpOiAgRGVmaW5lLgoJKiBiZmQtaW4yLmg6ICBMaWtld2lzZS4KCSogY3B1LWkzODYuYyAoYmZkX2kzODZfYXJjaF9pbnRlbF9zeW50YXgpOiAgTmV3LgoKMTk5OC0xMi0xNiAgR2F2aW4gUm9taWctS29jaCAgPGdhdmluQGN5Z251cy5jb20+CgoJKiBhcmNodXJlcy5jLGJmZC1pbjIuaCAoYmZkX21hY2hfbWlwczQxMTEpOiBOZXcuCgkqIGNwdS1taXBzLmM6IEFkZCBzdXBwb3J0IGZvciBhbmQgaW5kZXBlbmRlbnQgNDExMS4KCSogZWxmMzItbWlwcy5jIChlbGZfbWlwc19tYWNoKTogRV9NSVBTX01BQ0hfNDExMSAtPiBiZmRfbWFjaF9taXBzNDExMS4KCShfYmZkX21pcHNfZWxmX2ZpbmFsX3dyaXRlX3Byb2Nlc3NpbmcpOgoJYmZkX21hY2hfbWlwczQxMTEgLT4gRV9NSVBTX0FSQ0hfMyB8IEVfTUlQU19NQUNIXzQxMTEuCgoxOTk4LTEyLTE1ICBHYXZpbiBSb21pZy1Lb2NoICA8Z2F2aW5AY3lnbnVzLmNvbT4KCgkqIGVsZjMyLW1pcHMuYyAoZWxmX21pcHNfYWJpX25hbWUpOiBOZXcuCgkoX2JmZF9taXBzX2VsZl9tZXJnZV9wcml2YXRlX2JmZF9kYXRhKTogQ29tcGFyZSBFRl9NSVBTX0FCSSBmbGFncy4KCjE5OTgtMTItMTIgIEdhdmluIFJvbWlnLUtvY2ggIDxnYXZpbkBjeWdudXMuY29tPgoKCSogZWxmMzItbWlwcy5jIChfYmZkX21pcHNfZWxmX2ZpbmFsX3dyaXRlX3Byb2Nlc3NpbmcpOgoJSGFuZGxlIGJmZF9tYWNoX21pcHM0MzAwLgoKMTk5OC0xMi0xMSAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQGN5Z251cy5jb20+CgoJKiBlbGYzMi1pMzg2LmM6IFJlbW92ZSBsZWFrZWQgZGV2ZWxvcG1lbnQgY29kZSBmcm9tIHBhdGNoCgkxOTk4LTEyLTEwIGJ5IFJpY2hhcmQgSGVuZGVyc29uLgoKMTk5OC0xMi0xMCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGVsZjMyLWkzODYuYyAoZWxmX2kzODZfcmVsb2NhdGVfc2VjdGlvbik6IERvbid0IGZhaWwgcmVsb2NhdGlvbnMKCWluIGRlYnVnIHNlY3Rpb25zIGZvciBzeW1ib2wgZGVmaW5lZCBleHRlcm5hbGx5LgoKVGh1IERlYyAxMCAxMDo1ODozOCAxOTk4ICBBbmRyZWFzIFNjaHdhYiAgPHNjaHdhYkBpc3Nhbi5jcy51bmktZG9ydG11bmQuZGU+CgoJKiB0YXJnZXRzLmMgKGJmZF90YXJnZXRfdmVjdG9yKTogUmVtb3ZlIGR1cGxpY2F0ZSBlbnRyeSBmb3IKCXRla2hleF92ZWMuCgoxOTk4LTEyLTA5ICBOaWNrIENsaWZ0b24gIDxuaWNrY0BjeWdudXMuY29tPgoKCSogZWxmMzItZnIzMC5jIChmcjMwX2VsZl9ob3d0b190YWJsZSk6IFNldCBzcmNfbWFzayBmaWVsZHMgdG8gMAoJc2luY2Ugd2UgYXJlIHVzaW5nIFJFTEFzLgoKVHVlIERlYyAgOCAyMjoxNTo0OCAxOTk4ICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQGN5Z251cy5jb20+CgoJU0NPIE9wZW4gU2VydmVyIFJlbGVhc2UgNSBjb3JlIGZpbGUgc3VwcG9ydCwgZnJvbSBKb3VrZSBOdW1hbgoJPGpudW1hbkBoaXNjb20ubmw+OgoJKiBzY281LWNvcmUuYzogTmV3IGZpbGUuCgkqIGNvbmZpZ3VyZS5pbiAoaVszNDU2XTg2LSotc2NvMy4ydjUqKTogVXNlIHNjbzUtY29yZS5sby4KCShzY281LWNvcmUubG8pOiBEZWZpbmUgU0NPNV9DT1JFIGluIENPUkVGTEFHLgoJKiBNYWtlZmlsZS5hbTogUmVidWlsZCBkZXBlbmRlbmNpZXMuCgkoT1BUSU9OQUxfQkFDS0VORFMpOiBBZGQgc2NvNS1jb3JlLmxvLgoJKE9QVElPTkFMX0JBQ0tFTkRTX0NGSUxFUyk6IEFkZCBzY281LWNvcmUuYy4KCSogYmZkLmMgKHN0cnVjdCBfYmZkKTogQWRkIHNjbzVfY29yZV9kYXRhIGZpZWxkIHRvIHRkYXRhLgoJKiB0YXJnZXRzLmMgKHNjbzVfY29yZV92ZWMpOiBBZGQgdG8gdGFyZ2V0IGxpc3QgaWYgU0NPNV9DT1JFLgoJKiBiZmQtaW4yLmgsIGNvbmZpZ3VyZSwgTWFrZWZpbGUuaW46IFJlYnVpbGQuCgpUdWUgRGVjICA4IDE5OjM4OjQyIDE5OTggIE1hcmsgS2xlaW4gIDxta2xlaW5AZGlzLmNvbT4KCgkqIGNvbmZpZy5iZmQgKGhwcGEqLSotbXBlaXgqKTogTmV3IHRhcmdldC4KCSogY29uZmlndXJlLmluOiBBZGQgQUNfSEVBREVSX0RJUkVOVC4KCShocHBhKi0qLW1wZWl4Kik6IE5ldyB0YXJnZXQuCgkqIGNvbmZpZ3VyZS5ob3N0IChocHBhKi0qLW1wZWl4Kik6IE5ldyBob3N0LgoJKiBocHV4LWNvcmUuYzogQ2hlY2sgSE9TVF9IUFBBTVBFSVguICBVc2UgSEFWRV9ESVJFTlRfSCBhbmQKCWZyaWVuZHMgcmF0aGVyIHRoYW4ganVzdCBpbmNsdWRpbmcgPHN5cy9kaXIuaD4uCgkqIHNvbS5oIChzdHJ1Y3Qgc29tX3N5bWJvbCk6IEFkZCBocHBhX3ByaXZfbGV2ZWwgYW5kIGFwdG8KCXRjX2RhdGEuICBDaGFuZ2UgYWxsIHVzZXJzLgoJKHN0cnVjdCBzb21kYXRhKTogQWRkIGNvbXBfdW5pdCBmaWVsZC4KCShvYmpfc29tX2NvbXBpbGF0aW9uX3VuaXQpOiBEZWZpbmUuCgkoYmZkX3NvbV9hdHRhY2hfY29tcGlsYXRpb25fdW5peCk6IERlY2xhcmUuCgkqIHNvbS5jOiBDaGVjayBIT1NUX0hQUEFNUEVJWC4KCShzdHJ1Y3Qgc29tX21pc2Nfc3ltYm9sX2luZm8pOiBBZGQgbmV3IGZpZWxkIHByaXZfbGV2ZWwuCgkoc29tX29iamVjdF9zZXR1cCk6IEFkZCBjdXJyZW50X29mZnNldCBwYXJhbWV0ZXIuICBDaGFuZ2UgYWxsCgljYWxsZXJzLgoJKHNldHVwX3NlY3Rpb25zKTogTGlrZXdpc2UuCgkoc29tX29iamVjdF9wKTogRm9yIEVYRUNMSUJNQUdJQywgcmVhZCB0aGUgbHN0IGhlYWRlci4KCShzb21fd3JpdGVfc3ltYm9sX3N0cmluZ3MpOiBBZGQgY29tcGlsYXRpb25fdW5pdCBwYXJhbWV0ZXIuCglDaGFuZ2UgYWxsIGNhbGxlcnMuCgkoc29tX2ZpbmlzaF93cml0aW5nKTogV3JpdGUgb3V0IGNvbXBpbGF0aW9uX3VuaXQuCgkoc29tX2JmZF9kZXJpdmVfbWlzY19zeW1ib2xfaW5mbyk6IFNldCBwcml2X2xldmVsLgoJKHNvbV9idWlsZF9hbmRfd3JpdGVfc3ltYm9sX3RhYmxlKTogU2V0IHhsZWFzdCBmaWVsZCB0byAzLgoJKHNvbV9zbHVycF9zeW1ib2xfdGFibGUpOiBTZXQgc3ltYm9sIHByaXZfbGV2ZWwuCgkoYmZkX3NvbV9hdHRhY2hfY29tcGlsYXRpb25fdW5pdCk6IE5ldyBmdW5jdGlvbi4KCShzb21fYmZkX2FyX3dyaXRlX3N5bWJvbF9zdHVmZik6IFNldCB4bGVhc3QgZmllbGQgdG8gMy4gIFNldAoJcHJpdl9sZXZlbCBpbnRvIHN5bWJvbF92YWx1ZS4KCSogY29uZmlndXJlLCBjb25maWcuaW46IFJlYnVpbGQuCgpUdWUgRGVjICA4IDE2OjIxOjM1IDE5OTggIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5AY3lnbnVzLmNvbT4KCgkqIGhwdXgtY29yZS5jIChocHV4X2NvcmVfY29yZV9maWxlX3ApOiBDaGFuZ2UgY2FsbCB0byBub25leGlzdGVudAoJd2FybmluZyBmdW5jdGlvbiB0byBjYWxsIF9iZmRfZXJyb3JfaGFuZGxlciBpbnN0ZWFkLgoKCSogbGliYmZkLmMgKENPRVJDRTMyKTogQ2FzdCB0aHJvdWdoIHVuc2lnbmVkIGxvbmcgYW5kIGxvbmcgdG8KCWF2b2lkIGJ1ZyBpbiBvbGQgdmVyc2lvbiBvZiBnY2MuCgoJKiBlbGY2NC1hbHBoYS5jIChlbGY2NF9hbHBoYV9hZGRpdGlvbmFsX3Byb2dyYW1faGVhZGVycyk6IFJlbW92ZS4KCShlbGZfYmFja2VuZF9hZGRpdGlvbmFsX3Byb2dyYW1faGVhZGVycyk6IERvbid0IGRlZmluZS4KCjE5OTgtMTItMDggIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQGN5Z251cy5jb20+CgoJKiBlbGYzMi1mcjMwLmMgKGZyMzBfZmluYWxfbGlua19yZWxvY2F0ZSk6IEZpeCBQQyByZWxhdGl2ZQoJcmVsb2NhdGlvbnMgdG8gaW5jbHVkZSBvZmZzZXQgb2YgMiBpbmNsdWRlZCBpbiB0aGUgaW5zbnMsIGFuZCB0aGUKCW9mZnNldCBvZiB0aGUgcmVsb2NzIHdpdGhpbiB0aGUgc2VjdGlvbi4KCldlZCBEZWMgIDIgMTU6MDM6NTkgMTk5OCAgRGF2aWQgVGF5bG9yICA8dGF5bG9yQHRleGFzLmN5Z251cy5jb20+CgoJVGhlIGZvbGxvd2luZyBjaGFuZ2VzIHdlcmUgbWFkZSBieSBEYXZpZCBUYXlsb3IKCTx0YXlsb3JAdGV4YXMuY3lnbnVzLmNvbT4sIEVkaXRoIEVwc3RlaW4KCTxlZXBzdGVpbkBzb3BoaWEuY3lnbnVzLmNvbT4sIEppbSBCbGFuZHkKCTxqaW1iQHp3aW5nbGkuY3lnbnVzLmNvbT4sIGFuZCBFbGVuYSBaYW5ub25pCgk8ZXphbm5vbmlAa3dpa2VtYXJ0LmN5Z251cy5jb20+IGFzIHBhcnQgb2YgdGhlIHByb2plY3QgdG8gbWVyZ2UgaW4KCWNoYW5nZXMgb3JpZ2luYWxseSBtYWRlIGJ5IEhQOyBIUCBkaWQgbm90IGNyZWF0ZSBDaGFuZ2VMb2cKCWVudHJpZXMuCgoJKiBhY2xvY2FsLm00LCBjb25maWd1cmUsIE1ha2VmaWxlLmluOiBSZWJ1aWx0IHVzaW5nIGxhdGVzdAoJYXV0b21ha2UgbWFjcm8gbGlicmFyeS4KCgkqIGhwdXgtY29yZS5jIChocHV4X2NvcmVfY29yZV9maWxlX3ApOiB0aGlzIGZ1bmN0aW9uIG5vdwoJdW5kZXJzdGFuZHMgSFBVWCAxMC4zMCB0aHJlYWQgaW5mby4gWWVzLCB0aGUgdGhyZWFkIHN0YWNrcyBjYW4gYmUKCWZvdW5kIGluIHRoZSBjb3JlZmlsZSEgQWxzbywgaW4gaHB1eF9jb3JlX2NvcmVfZmlsZV9wLCBpZiB3ZQoJZW5jb3VudGVyIGEgc2VjdGlvbiB3aXRoIGFuIHVua25vd24gdHlwZSwgZG9uJ3QgcHVudC4gIEluc3RlYWQsCglqdXN0IHNraXAgaXQuICBBbHNvLCBjb3VudCB0aGUgbnVtYmVyIG9mIHNlY3Rpb25zIG9mIGtub3duIHR5cGUKCXRoYXQgd2UgZW5jb3VudGVyLiAgSWYgd2UgZW5jb3VudGVyIGF0IGxlYXN0IG9uZSBnb29kIG9uZSwgdGhlbgoJd2UnbGwgZGVjbGFyZSB0aGF0IHRoZSBmaWxlIGlzIGEgY29yZSBmaWxlLiAgSWYgd2UgZW5jb3VudGVyIGFueQoJdW5rbm93biBvbmVzIGJ1dCBzb21lIGtub3duIG9uZXMsIHRoZW4gd2UnbGwgaXNzdWUgYSB3YXJuaW5nIChidXQKCXN0aWxsIGRlY2xhcmUgaXQgdG8gYmUgYSBjb3JlIGZpbGUpLiBBbHNvLCBjb3JyZWN0bHkgZGVjaWRlIHdoZW4gYQoJZmlsZSBpcyBub3QgYSBjb3JlLgoJKFBST0NfSU5GT19IQVNfVEhSRUFEX0lEKTogZGVmaW5lIGlmIENPUkVfQU5PTl9TSE1FTSBkZWZpbmVkLgoJKENPUkVfQU5PTl9TSE1FTSk6IGRlZmluZSBpZiBub3QgZGVmaW5lZC4KCShocHV4X2NvcmVfc3RydWN0KTogYWRkIG1lbWJlcnMgbHdwaWQgYW5kIHVzZXJfdGlkLgoJKGNvcmVfa2VybmVsX3RocmVhZF9pZCwgY29yZV91c2VyX3RocmVhZF9pZCk6IG5ldyBtYWNyb3MuCgkobWFrZV9iZmRfYXNlY3Rpb24pOiB1c2UgYmZkX2FsbG9jIHRvIGFsbG9jYXRlIHJvb20gZm9yIGEgY29weSBvZgoJdGhlIG5hbWUgYmVmb3JlIHN0b3JpbmcgaXQgaW4gdGhlIGJmZC4KCShocHV4X2NvcmVfY29yZV9maWxlX3ApOiBoYW5kbGUgdGhyZWFkcy4KCgkqIGxpYmhwcGEuaCAoR0VUX0ZJRUxEKTogcHJvdGVjdCBhZ2FpbnN0IHJlZGVmaW5pdGlvbi4KCShIUFBBX1dJREUpOiBkZWZpbmUuCgkoR0VUX0ZJRUxEKTogZGVmaW5lLgoJKEdFVF9CSVQpOiBkZWZpbmUuCgkoTUFTSyk6IGRlZmluZS4KCShDQVRFTkFURSk6IGRlZmluZS4KCShFTEVWRU4pOiBkZWZpbmUuCgkoc2lnbl9leHRlbmQpOiByZWRlZmluZS4KCShhc3NlbWJsZV82KTogZGVmaW5lLgoJKGFzc2VtYmxlXzEyKTogcmV3cml0ZS4KCShhc3NlbWJsZV8xNik6IGRlZmluZS4KCShhc3NlbWJsZV8xNmEpOiBkZWZpbmUuCgkoYXNzZW1ibGVfMTcpOiByZXdyaXRlLgoJKGFzc2VtYmxlXzIyKTogZGVmaW5lLgoKMTk5OC0xMi0wNyAgTmljayBDbGlmdG9uICA8bmlja2NAY3lnbnVzLmNvbT4KCgkqIGVsZjMyLWZyMzAuYyAoZnIzMF9maW5hbF9saW5rX3JlbG9jYXRlKTogVXNpbmcgc2lnbmVkCglyZWxvY2F0aW9ucyBmb3Igc2lnbmVkIHZhbHVlcy4KClN1biBEZWMgIDYgMTY6MzA6MzMgMTk5OCAgSWFuIExhbmNlIFRheWxvciAgPGlhbkBjeWdudXMuY29tPgoKCSogbWlwc2JzZC5jIChNWShzZXRfYXJjaF9tYWNoKSk6IE1ha2Ugc3RhdGljLgoJKiBhb3V0eC5oIChOQU1FKGFvdXQsbWFjaGluZV90eXBlKSk6IEZvciBiZmRfYXJjaF9taXBzLCB1c2UKCWJmZF9tYWNoX21pcHMqIG1hY3JvcyByYXRoZXIgdGhhbiBzaW1wbGUgbnVtYmVycy4KCglDT0ZGIHdlYWsgc3ltYm9sIHN1cHBvcnQsIGJhc2VkIG9uIHBhdGNoZXMgZnJvbSBNYXJrIEVsYnJlY2h0Cgk8c25vd2JhbGwzQHVzYS5uZXQ+OgoJKiBjb2ZmY29kZS5oIChjb2ZmX3NsdXJwX3N5bWJvbF90YWJsZSk6IEhhbmRsZSBDX1dFQUtFWFQuCgkqIGNvZmZnZW4uYyAoY29mZl9yZW51bWJlcl9zeW1ib2xzKTogSGFuZGxlIHdlYWsgc3ltYm9scy4KCShjb2ZmX3dyaXRlX2FsaWVuX3N5bWJvbCk6IExpa2V3aXNlLgoJKiBjb2ZmbGluay5jIChjb2ZmX2xpbmtfY2hlY2tfYXJfc3ltYm9scyk6IExpa2V3aXNlLgoJKGNvZmZfbGlua19hZGRfc3ltYm9scyk6IExpa2V3aXNlLgoJKF9iZmRfY29mZl9saW5rX2lucHV0X2JmZCk6IExpa2V3aXNlLgoJKF9iZmRfY29mZl93cml0ZV9nbG9iYWxfc3ltKTogTGlrZXdpc2UuCgoJKiBlbGYuYyAoY29weV9wcml2YXRlX2JmZF9kYXRhKTogQWx3YXlzIGluaXRpYWxpemUgdGhlCglpbmNsdWRlc19waGRycyBmaWVsZC4KCgkqIGVsZmxpbmsuaCAoZWxmX2ZpeF9zeW1ib2xfZmxhZ3MpOiBDaGVjayBmb3IgY2FzZSB3aGVyZSBhIG5vbi1FTEYKCWZpbGUgZGVmaW5lcyBhIHN5bWJvbCBmaXJzdCBtZW50aW9uZWQgaW4gYW4gRUxGIGZpbGUuCgoJKiBiZmQtaW4uaDogQWx3YXlzIGRlZmluZSBCRkRfSE9TVF82NF9CSVQgYW5kIEJGRF9IT1NUX1VfNjRfQklUIGlmCglwb3NzaWJsZSwgcmF0aGVyIHRoYW4gb25seSBpZiBCRkQ2NC4KCSogZWxmbGluay5oIChjb21wdXRlX2J1Y2tldF9jb3VudCk6IEp1c3QgY2hlY2sgQkZEX0hPU1RfVV82NF9CSVQsCglub3QgX19HTlVDX18uCgkqIGJmZC1pbjIuaDogUmVidWlsZC4KCgkqIHNyZWMuYyAoc3JlY19zZXRfc2VjdGlvbl9jb250ZW50cyk6IENvcnJlY3QgdGVzdCB0byBhdm9pZAoJc3dpdGNoaW5nIHRvIDQgYnl0ZSBhZGRyZXNzZXMgYWZ0ZXIgc2VlaW5nIGEgc2Vjb25kIHNlY3Rpb24gd2hpY2gKCXJlcXVpcmVzIDMgYnl0ZSBhZGRyZXNzZXMuICBGcm9tIEpvZWwgU2NoYW50egoJPGpvZWwuc2NoYW50ekBhcmdvc3lzLmJvZWluZy5jb20+LgoKCSogY29uZmlnLmJmZCAobTY4Ki0qLWdudSopOiBOZXcgdGFyZ2V0LiAgRnJvbSBBeW1lcmljIFZpbmNlbnQKCTxheW1lcmljLnZpbmNlbnRAZW1pLnUtYm9yZGVhdXguZnI+LgoKMTk5OC0xMi0wNCAgSmltIEJsYW5keSAgPGppbWJAendpbmdsaS5jeWdudXMuY29tPgoKCSogZWxmMzItcHBjLmMgKHBwY19lbGZfbWVyZ2VfcHJpdmF0ZV9iZmRfZGF0YSk6IEZpeCBsb2dpYyB0bwoJZGVjaWRlIHdoZXRoZXIgdGhlIG91dHB1dCBmaWxlIGlzIC1tcmVsb2NhdGFibGUtbGliLAoJLW1yZWxvY2F0YWJsZSwgb3IgbmVpdGhlci4gIChnZGIuYmFzZS9ub2RlYnVnLmV4cCkKCjE5OTgtMTItMDMgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQGN5Z251cy5jb20+CgoJKiBlbGYzMi1mcjMwLmM6IEFkZCBzdXBwb3J0IGZvciBSX0ZSMzBfNDggcmVsb2MuCgkqIHJlbG9jLmM6IEFkZCBCRkRfUkVMT0NfRlIzMF80OCByZWxvY2F0aW9uLgoJKiBiZmQtaW4yLmg6IFJlZ2VuZXJhdGUuCgkqIGxpYmJmZC5oOiBSZWdlbmVyYXRlCgpXZWQgRGVjICAyIDAwOjU4OjM3IDE5OTggIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5AY3lnbnVzLmNvbT4KCgkqIGVsZmxpbmsuaCAoZWxmX2FkanVzdF9keW5hbWljX3N5bWJvbCk6IFdhcm4gb24gYW4gYXR0ZW1wdCB0bwoJbGluayBhZ2FpbnN0IGEgZHluYW1pYyBzeW1ib2wgd2l0aCBubyB0eXBlIG9yIHNpemUuCgoxOTk4LTEyLTAxICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAY3lnbnVzLmNvbT4KCgkqIGVsZjMyLWkzODYuYyAoaTM4Nl9jaGVja19yZWxvY3MpIFtSXzM4Nl8zMl06IERvbid0IGVtaXQKCXJlbG9jYXRpb24gZm9yIHNlY3Rpb24gd2hpY2ggZG9lcyBub3QgZ2V0IGxvYWRlZC4KCShlbGZfaTM4Nl9yZWxvY2F0ZV9zZWN0aW9uKSBbUl8zODZfMzJdOiBMaWtld2lzZS4KClR1ZSBEZWMgIDEgMTE6MzM6MzMgMTk5OCAgSmltIFdpbHNvbiAgPHdpbHNvbkBjeWdudXMuY29tPgoKCSogY29mZi1oODMwMC5jIChoODMwMF9iZmRfbGlua19hZGRfc3ltYm9scyk6IE1ha2UgcmVsb2Nfc2l6ZSwKCXJlbG9jX2NvdW50IGFuZCBpIGxvbmcgaW5zdGVhZCBvZiB1bnNpZ25lZCBsb25nLiAgSGFuZGxlIGVycm9yCglyZXR1cm4gZnJvbSBiZmRfY2Fub25pY2FsaXplX3JlbG9jLgoKMTk5OC0xMi0wMSAgTmljayBDbGlmdG9uICA8bmlja2NAY3lnbnVzLmNvbT4KCgkqIGVsZjMyLXY4NTAuYyAodjg1MF9lbGZfcmVsb2NhdGVfc2VjdGlvbik6IERldGVjdCB0aGUgYWJzZW5jZSBvZgoJYSBoYXNoIHRhYmxlLgoKTW9uIE5vdiAzMCAxNToyODowOSAxOTk4ICBKIm9ybiBSZW5uZWNrZSA8YW15bGFhckBjeWdudXMuY28udWs+CgoJKiBlbGYzMi1zaC5jIChlbGYvc2guaCk6IEluY2x1ZGUuCglzaF9yZWxvY190eXBlOiBEZWxldGUuICBDaGFuZ2VkIGFsbCByZWZlcmVuY2VzIHRvIGVsZl9zaF9yZWxvY190eXBlLgoJKHNoX2VsZl9ob3d0b190YWIpOiBBZGQgSE9XVE8gZm9yIFJfU0hfU1dJVENIOC4KCShzaF9yZWxvY19tYXApOiBNYXAgQkZEX1JFTE9DXzhfUENSRUwgdG8gUl9TSF9TV0lUQ0g4LgoJKHNoX2VsZl9yZWxheF9kZWxldGVfYnl0ZXMpOiBIYW5kbGUgUl9TSF9TV0lUQ0g4LgoJKiBNYWtlZmlsZS5pbjogQWRkIGRlcGVuZGVuY3kgb2YgZWxmMzItc2gubG8gb24gJChJTkNESVIpL2VsZi9zaC5oLgoKRnJpIE5vdiAyNyAxNzo1MTozOCAxOTk4ICBHZW9mZiBLZWF0aW5nICA8Z2VvZmZrQG96ZW1haWwuY29tLmF1PgoKCSogZWxmbGluay5oIChjb21wdXRlX2J1Y2tldF9jb3VudCk6IERvbid0IGFsbG93IG1pbnNpemU9PTAsIGl0CgljYXVzZXMgZGl2aXNpb24gYnkgemVybyBsYXRlciBvbi4KClRodSBOb3YgMjYgMTE6MTk6MzUgMTk5OCAgRGF2ZSBCcm9sbGV5ICA8YnJvbGxleUBjeWdudXMuY29tPgoKCSogZWxmMzItZnIzMC5jIChmcjMwX2VsZl9wYzlfcmVsb2MsZnIzMF9lbGZfcGMxMl9yZWxvYyk6IE5vdAoJbmVlZGVkLgoKMTk5OC0xMS0yNSAgREogRGVsb3JpZSAgPGRqQGN5Z251cy5jb20+CgoJKiBjb2ZmLWkzODYuYyAoaTNjb2ZmX29iamVjdF9wKTogUmVtb3ZlIGhhY2suICBVc2UgbmV3IGVtdWxhdGlvbgoJaG9vayBub3cuCgpUdWUgTm92IDI0IDEwOjI1OjI3IDE5OTggIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQGN5Z251cy5jb20+CgoJKiBlbGYzMi1mcjMwLmMgKGZyMzBfZWxmX3JlbG9jYXRlX3NlY3Rpb24pOiBDYWxsCglmcjMwX2ZpbmFsX2xpbmtfcmVsb2NhdGUuCgkoZnIzMF9maW5hbF9saW5rX3JlbG9jYXRlKTogTmV3IGZ1bmN0aW9uOiBIYW5kbGUgSTIwIGFuZCBJMzIKCXJlbG9jcy4KCShmcjMwX2VsZl9pMzJfcmVsb2MpOiBOZXcgZnVuY3Rpb246IEhhbmRsZSBJMzIgcmVsb2NzLgoJKGZyMzBfZWxmX3BjOV9yZWxvYyk6IE5ldyBmdW5jdGlvbjogSGFuZGxlIDlfUENSRUwgcmVsb2NzLgoJKGZyMzBfZWxmX3BjMTJfcmVsb2MpOiBOZXcgZnVuY3Rpb246IEhhbmRsZSAxMl9QQ1JFTCByZWxvY3MuCgoJKiBlbGYzMi12ODUwLmMgKHY4NTBfZWxmX3JlbG9jYXRlX3NlY3Rpb24pOiBSZXNldCBoaTE2cyByZWxvYwoJY2hhaW4gdG8gZW1wdHkuCgoJVGhlIGZvbGxvd2luZyBjaGFuZ2VzIGFyZSBiYXNlZCBvbiBhIHBhdGNoIHN1Ym1pdHRlZCBieSBHaWFubHVjYQoJTW9ybyA8Z2xjdHJAYWJjLml0PjoKCgkodjg1MF9lbGZfcGVyZm9ybV9yZWxvY2F0aW9uKTogT25seSB1cGRhdGUgYSBoaTE2cyByZWxvYyBpZiBpdCBoYXMKCW5vdCBhbHJlYWR5IGJlZW4gdXBkYXRlZC4KCShmaW5kX3JlbWVtYmVyZWRfaGkxNnNfcmVsb2MpOiBOZXcgcGFyYW1ldGVyICdhbHJlYWR5X2ZvdW5kJwoJcmV0dXJucyBzdGF0ZSBvZiByZW1lbWJlcmVkIGhpMTZzIHJlbG9jLgoJKHJlbWVtYmVyX2hpMTZzX3JlbG9jKTogU2V0ICdmb3VuZCcgZmllbGQgdG8gZmFsc2UuCgkoaGkxNnNfbG9jYXRpb24pOiBBZGQgJ2ZvdW5kJyBmaWVsZC4KCjE5OTgtMTEtMjMgIERKIERlbG9yaWUgIDxkakBjeWdudXMuY29tPgoKCSogY29mZi1pMzg2LmMgKGJmZF9wZV9kbGxfbm90X3JlY29nbml6ZWRfaGFjayk6IHRoZSBsaW5rZXIgd2FudHMKCXRvIHNlZSAuRExMIGZpbGVzIGFzIHVucmVjb2duaXplZC4KCShpM2NvZmZfb2JqZWN0X3ApOiBTb3JyeSwgaGFkIHRvIGhhY2sgaXQgdG8gbm90IHJlY29nbml6ZSB0aGVzZQoJZmlsZXMgKHBlaS1pMzg2KSBvbiByZXF1ZXN0LgoKMTk5OC0xMS0yMyAgREogRGVsb3JpZSAgPGRqQGN5Z251cy5jb20+CgoJKiBvcG5jbHMuYyAoYmZkX21ha2VfcmVhZGFibGUpOiBuZWVkIG1vcmUgY2xlYW51cCBmb3Igc3ltYm9scyBhbmQKCXJlbGVudHMuICBDYWxsIGJmZF9jaGVja19mb3JtYXQgdG8gcmVpbml0aWFsaXplLgoKRnJpIE5vdiAyMCAxNDoyMTozNiAxOTk4ICBOaWNrIENsaWZ0b24gIDxuaWNrY0BjeWdudXMuY29tPgoKCSogZWxmMzItZnIzMC5jIChmcjMwX2VsZl9yZWxvY2F0ZV9zZWN0aW9uKTogUmVtb3ZlIHNwdXJpb3VzCgl3YXJuaW5ncy4KClRodSBOb3YgMTkgMTQ6NDI6MTUgMTk5OCAgR2VvZmZyZXkgTm9lciAgPG5vZXJAY3lnbnVzLmNvbT4KCgkqIGFjbG9jYWwubTQ6IHJlZ2VuZXJhdGUKCSogY29uZmlndXJlOiByZWdlbmVyYXRlCgpUdWUgTm92IDE3IDIwOjIzOjM1IDE5OTggIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBlbGYtYmZkLmggKHN0cnVjdCBlbGZfbGlua19oYXNoX2VudHJ5KTogQWRkIHZ0YWJsZV9lbnRyaWVzX3NpemUuCgkqIGVsZi5jIChfYmZkX2VsZl9saW5rX2hhc2hfbmV3ZnVuYyk6IENsZWFyIGl0LgoJKiBlbGZsaW5rLmggKGVsZl9nY19wcm9wYWdhdGVfdnRhYmxlX2VudHJpZXNfdXNlZCk6IENvcHkgaXQsIGFuZAoJcmVzcGVjdCBpdCBhcyBhbiB1cHBlciBib3VuZCBvbiB3aGF0IG1lbW9yeSB0byByZWZlcmVuY2UuCgkoZWxmX2djX3NtYXNoX3VudXNlZF92dGVudHJ5X3JlbG9jcyk6IExpa2V3aXNlLgoJKGVsZl9nY19yZWNvcmRfdnRlbnRyeSk6IEhhbmRsZSBhcy15ZXQgdW5kZWZpbmVkIHZ0YWJsZXMuICBTZXQgYW5kCgl1cGRhdGUgdnRhYmxlX2VudHJpZXNfc2l6ZSBhcHByb3ByaWF0ZWx5LgoKVHVlIE5vdiAxNyAxNToyODozMSAxOTk4ICBOaWNrIENsaWZ0b24gIDxuaWNrY0BjeWdudXMuY29tPgoKCSogZWxmMzItZnIzMC5jIChmcjMwX3JlbG9jX3R5cGVfbG9va3VwKTogVXNlZCBpbnRlZ2VycyB0byBob2xkCglyZWxvYyBudW1iZXIuCgpNb24gTm92IDE2IDIyOjE5OjIxIDE5OTggIERKIERlbG9yaWUgIDxkakBjeWdudXMuY29tPgoKCSogYXJjaGl2ZS5jIChiZmRfYXJfaGRyX2Zyb21fZmlsZXN5c3RlbSk6IHN1cHBvcnQgQkZEX0lOX01FTU9SWQoJYmZkczsgdGhleSBoYXZlIG5vICJmaWxlIiBzbyB3ZSBmYWtlIGl0LgoJKiBiZmQtaW4yLmg6IGFkZCBiZmRfbWFrZV93cml0YWJsZSBhbmQgYmZkX21ha2VfcmVhZGFibGUgKHJlZ2VuKQoJKiBsaWJiZmQuYyAoYmZkX3dyaXRlKTogQWxsb3cgd3JpdGluZyB0byBCRkRfSU5fTUVNT1JZIGJmZHMgYnkKCXJlc2l6aW5nIHRoZSBtZW1vcnkgYnVmZmVyLgoJKiBvcG5jbHMuYyAoYmZkX21ha2Vfd3JpdGFibGUpOiBOZXcgZnVuY3Rpb247IGxldHMgeW91IHdyaXRlIGEKCWJmZF9jcmVhdGUnZCBiZmQgdG8gYW4gaW4tbWVtb3J5IGJ1ZmZlci4KCShiZmRfbWFrZV9yZWFkYWJsZSk6IE5ldyBmdW5jdGlvbjsgbGV0cyB5b3UgcmVhZCBiYWNrIHRoYXQgYnVmZmVyCglhcyBpZiBpdCB3ZXJlIGZyb20gYmZkX29wZW5yLiAgVXNlZCB0byBidWlsZCBnZW5lcmF0ZWQgYXJjaGl2ZQoJbWVtYmVycyAod2luc3VwJ3MgbGQncyBkbGx0b29sKQoKTW9uIE5vdiAxNiAxOToxNToxOSAxOTk4ICBEYXZlIEJyb2xsZXkgIDxicm9sbGV5QGN5Z251cy5jb20+CgoJKiBwby9iZmQucG90OiBSZWdlbmVyYXRlZC4KCk1vbiBOb3YgMTYgMTA6NTc6MDYgMTk5OCAgTmljayBDbGlmdG9uICA8bmlja2NAY3lnbnVzLmNvbT4KCgkqIGVsZjMyLXY4NTAuYyAoaGkxNnNfbG9jYXRpb24pOiBSZXBsYWNlZCBmaXhlZCBzaXplIGFycmF5IHdpdGgKCWxpbmtlZCBsaXN0LgoKU3VuIE5vdiAxNSAyMDoyODoyNSAxOTk4ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogZWxmNjQtYWxwaGEuYyAoZWxmNjRfYWxwaGFfcmVsYXhfc2VjdGlvbik6IFNlYXJjaCBmb3IgdGhlIHByb3BlcgoJZWxlbWVudCBvZiB0aGUgZ290ZW50cnkgbGlzdCBmb3IgbG9jYWwgc3ltYm9scyB0b28uCgkoZWxmNjRfYWxwaGFfcmVsb2NhdGVfc2VjdGlvbik6IFVuaWZ5IGxvY2FsIGFuZCBnbG9iYWwgaGFuZGxpbmcuCglBc3NlcnQgdGhhdCBnb3RlbnQtPnVzZV9jb3VudCA+IDAuCgpTYXQgTm92IDE0IDE1OjE2OjAxIDE5OTggIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5AY3lnbnVzLmNvbT4KCgkqIGNvbmZpZ3VyZS5pbiAodm1zX2FscGhhX3ZlYyk6IFJlbmFtZSBmcm9tIGV2YXhfYWxwaGFfdmVjLCBhbmQKCXVwZGF0ZSBmb3IgZmlsZSBuYW1lIGNoYW5nZXMgb2YgSnVseSAyLCAxOTk4LgoJKHZtc192YXhfdmVjKTogTmV3LgoJKiBjb25maWd1cmU6IFJlYnVpbGQuCgpUaHUgTm92IDEyIDE5OjE5OjU0IDE5OTggIERhdmUgQnJvbGxleSAgPGJyb2xsZXlAY3lnbnVzLmNvbT4KCgkqIHBvL2JmZC5wb3Q6IFJlZ2VuZXJhdGVkLgoKVHVlIE5vdiAxMCAxNjoxNzowNiAxOTk4ICBHZW9mZnJleSBOb2VyICA8bm9lckBjeWdudXMuY29tPgoKCSogYWNpbmNsdWRlLm00LCBjb25maWcuYmZkOiBkZXRlY3QgY3lnd2luKiBpbnN0ZWFkIG9mIGN5Z3dpbjMyKi4KCSogYWNsb2NhbC5tNCwgY29uZmlndXJlOiByZWdlbmVyYXRlCgpUdWUgTm92IDEwIDE1OjEzOjU5IDE5OTggIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQGN5Z251cy5jb20+CgoJKiBlbGYuYyAocHJlcF9oZWFkZXJzKTogQWRkIHN1cHBvcnQgZm9yIGJmZF9hcmNoX2ZyMzAuCgpUdWUgTm92IDEwIDEzOjM3OjM2IDE5OTggIEZlbGl4IExlZSAgPGZsZWVAY3lnbnVzLmNvbT4KCgkqIGFjaW5jbHVkZS5tNCAoQkZEX0hBVkVfU1lTX1BST0NGU19UWVBFLAoJQkZEX0hBVkVfU1lTX1BST0NGU19UWVBFX01FTUJFUik6IGRpZG4ndCBkZWZpbmUgbWFjcm8gd2hlbiB2YWx1ZQoJd2FzIGNhY2hlZC4KCSogYWNsb2NhbC5tNCwgY29uZmlndXJlOiByZWdlbmVyYXRlZC4KClR1ZSBOb3YgMTAgMTQ6MzE6MDEgMTk5OCAgQ2F0aGVyaW5lIE1vb3JlICA8Y2xtQGN5Z251cy5jb20+CgoJKiBlbGYzMi1kMTB2LmMgKHJlbG9jX3R5cGUpOiAgQWRkIFJfRDEwVl9HTlVfVlRJTkhFUklUIGFuZAoJUl9EMTBWX0dOVV9WVEVOVFJZIHJlbG9jcy4KCShlbGZfZDEwdl9ob3d0b190YWJsZSk6ICBMaWtld2lzZS4KCShkMTB2X3JlbG9jX21hcCBkMTB2X3JlbG9jX21hcCk6ICBMaWtld2lzZS4KCShlbGYzMl9kMTB2X2djX21hcmtfaG9vayk6ICBOZXcuCgkoZWxmMzJfZDEwdl9nY19zd2VlcF9ob29rKTogIE5ldy4KCShlbGYzMl9kMTB2X2NoZWNrX3JlbG9jcyk6ICBOZXcuCgkoZWxmMzJfZDEwdl9yZWxvY2F0ZV9zZWN0aW9uKTogIE5ldy4KCShlbGZfYmFja2VuZF9yZWxvY2F0ZV9zZWN0aW9uKTogIERlZmluZS4KCShlbGZfYmFja2VuZF9jYW5fZ2Nfc2VjdGlvbnMpOiAgRGVmaW5lLgoKU2F0IE5vdiAgNyAxODowNzo1MSAxOTk4ICBQZXRlciBTY2hhdWVyICA8cGV0ZXIuc2NoYXVlckByZWdlbnQuZS10ZWNobmlrLnR1LW11ZW5jaGVuLmRlPgoKCSogTWFrZWZpbGUuYW0gKEJGRDMyX0JBQ0tFTkRTKTogTW92ZSB2bXMgZmlsZXMgaGVyZS4uLgoJKEJGRDY0X0JBQ0tFTkRTKTogLi4uZnJvbSBoZXJlLgoJKEJGRDMyX0JBQ0tFTkRTX0NGSUxFUyk6IE1vdmUgdm1zIGZpbGVzIGhlcmUuLi4KCShCRkQ2NF9CQUNLRU5EU19DRklMRVMpOiAuLi5mcm9tIGhlcmUuCgkqIE1ha2VmaWxlLmluOiBSZWJ1aWxkLgoKV2VkIE5vdiAgNCAxNTo1ODo0OCAxOTk4ICBOaWNrIENsaWZ0b24gIDxuaWNrY0BjeWdudXMuY29tPgoKCSogTWFrZWZpbGUuYW06IEFkZCBGUjMwIHRhcmdldC4KCSogTWFrZWZpbGUuaW46IEFkZCBGUjMwIHRhcmdldC4KCSogYXJjaHVyZXMuYzogQWRkIHN1cHBvcnQgZm9yIEZSMzAuCgkqIGNvbmZpZy5iZmQ6IEFkZCBzdXBwb3J0IGZvciBGUjMwLgoJKiBjb25maWd1cmUuaW46IEFkZCBzdXBwb3J0IGZvciBGUjMwLgoJKiByZWxvYy5jOiBBZGQgc3VwcG9ydCBmb3IgRlIzMCByZWxvY2F0aW9ucy4KCSogdGFyZ2V0cy5jOiBBZGQgc3VwcG9ydCBmb3IgRlIzMCByZWxvY2F0aW9ucy4KCSogYmZkLWluMi5oOiBSZWdlbmVyYXRlLgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUuCgkqIGxpYmJmZC5oOiAgUmVnZW5lcmF0ZS4KCSogY3B1LWZyMzAuYzogTmV3IGZpbGUuCgkqIGVsZjMyLWZyMzAuYzogTmV3IGZpbGUuCgpNb24gTm92ICAyIDE0OjU5OjMzIDE5OTggIEdlb2ZmcmV5IE5vZXIgIDxub2VyQGN5Z251cy5jb20+CgoJKiBjb25maWd1cmUuaW46IGRldGVjdCBjeWd3aW4qIGluc3RlYWQgb2YgY3lnd2luMzIqCgkqIGNvbmZpZ3VyZTogcmVnZW5lcmF0ZQoKU3VuIE5vdiAgMSAxOTozMjoyOCAxOTk4ICBKZWZmcmV5IEEgTGF3ICAobGF3QGN5Z251cy5jb20pCgoJKiBlbGYtbTEwMzAwLmMgKG1uMTAzMDBfZWxmX3JlbGF4X3NlY3Rpb24pOiBEbyBub3QgdXNlIGFsbG9jYSwKCXVzZSBiZmRfbWFsbG9jIGFuZCBmcmVlIGluc3RlYWQgYW5kIGNoZWNrIHJldHVybiB2YWx1ZSBmcm9tIGJmZF9tYWxsb2MuCgpTdW4gTm92ICAxIDE2OjIwOjM1IDE5OTggIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5AY3lnbnVzLmNvbT4KCgkqIGxpYmJmZC1pbi5oIChfYmZkX2R3YXJmMV9maW5kX25lYXJlc3RfbGluZSk6IERlY2xhcmUuCgkqIGxpYmJmZC5oOiBSZWJ1aWxkLgoKCSogZWxmMzItbWlwcy5jIChtaXBzX2VsZl9keW5zeW1fc2VjX25hbWVzKTogQ29tbWVudCBvdXQuCgkoU0laRU9GX01JUFNfRFlOU1lNX1NFQ05BTUVTKTogTGlrZXdpc2UuCgkoTUlQU19URVhUX0RZTlNZTV9TRUNOKTogTGlrZXdpc2UuCgkoX2JmZF9taXBzX2VsZl9mYWtlX3NlY3Rpb25zKTogRG9uJ3Qgc2V0IHNoX2luZm8gZmllbGQgb2YgYSAuaGFzaAoJc2VjdGlvbi4KCShzdHJ1Y3QgbWlwc19lbGZfbGlua19oYXNoX3RhYmxlKTogUmVtb3ZlIGR5bnN5bV9zZWNfc3RyaW5kZXgKCWZpZWxkLgoJKG1pcHNfZWxmX2xpbmtfaGFzaF90YWJsZV9jcmVhdGUpOiBEb24ndCBpbml0aWFsaXplCglkeW5zeW1fc2VjX3N0cmluZGV4LgoJKG1pcHNfZWxmX2djX21hcmtfaG9vayk6IEFkZCBkZWZhdWx0IGNhc2UgdG8gYXZvaWQgd2FybmluZy4KCShtaXBzX2VsZl9zaXplX2R5bmFtaWNfc2VjdGlvbnMpOiBHZW5lcmF0ZSBhIHNlY3Rpb24gc3ltYm9sIGZvcgoJZXZlcnkgb3V0cHV0IHNlY3Rpb24uCgkobWlwc19lbGZfZmluaXNoX2R5bmFtaWNfc2VjdGlvbnMpOiBDb3VudCBhbGwgc2VjdGlvbnMgZm9yCglEVF9NSVBTX1VOUkVGRVhUTk8uCgkobWlwc19lbGZfZmluaXNoX2R5bmFtaWNfc2VjdGlvbnMpOiBVc2UgZHluYW1pYyBzeW1ib2xzIGZvciBhbGwKCW91dHB1dCBzZWN0aW9ucy4KClN1biBOb3YgIDEgMTI6NDY6NTMgMTk5OCAgR2VvZmYgS2VhdGluZyAgPGdlb2Zma0BvemVtYWlsLmNvbS5hdT4KCgkqIGVsZjMyLXBwYy5jIChwcGNfZWxmX2FkanVzdF9keW5hbWljX3N5bWJvbCk6IEFsbG9jYXRlIHR3byBzbG90cwoJZm9yIGxhdGVyIFBMVCBlbnRyaWVzIGluIGxhcmdlIFBMVHMuCgkocHBjX2VsZl9maW5pc2hfZHluYW1pY19zeW1ib2wpOiBBbGxvdyBmb3IgdGhlIGV4dHJhIHNsb3RzLgoKU2F0IE9jdCAzMSAyMDoxMDowOSAxOTk4ICBKZWZmcmV5IEEgTGF3ICAobGF3QGN5Z251cy5jb20pCgoJKiBlbGYzMi1wcGMuYyAocHBjX2VsZl9yZWxvYWRfc2VjdGlvbik6IEZpeCB0eXBvLgoKMTk5OC0xMC0yNiAxNTo1OCAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQGN5Z251cy5jb20+CgoJKiBlbGYtYmZkLmggKHN0cnVjdCBlbGZfbGlua19oYXNoX2VudHJ5KTogQWRkIG5ldyBmaWVsZCBlbGZfaGFzaF92YWx1ZS4KCSogZWxmbGluay5oIChlbGZfY29sbGVjdF9oYXNoX2NvZGVzKTogTmV3IGZ1bmN0aW9uLiAgVGhpcyBmdW5jdGlvbiBpcwoJY2FsbGVkIGZvciBlYWNoIGV4cG9ydGVkIHN5bWJvbCBhbmQgd2UgY29tcHV0ZSB0aGUgRUxGIGhhc2ggdmFsdWUgZm9yCglpdC4KCShjb21wdXRlX2J1Y2tldF92YWx1ZSk6IE5ldyBmdW5jdGlvbi4gIEl0IGlzIGNhbGxlZCBmcm9tCglzaXplX2R5bmFtaWNfc2VjdGlvbnMgdG8gZGV0ZXJtaW5lIHRoZSBoYXNoIHRhYmxlIHNpemUuICBXaGVuIHdlIGFyZQoJb3B0aW1pemluZyBhIGJldHRlciwgYnV0IHNsb3dlciwgYWxnb3JpdGhtIGlzIHVzZWQuCgkoc2l6ZV9keW5hbWljX3NlY3Rpb25zKTogQ2FsbCBjb21wdXRlX2J1Y2tldF92YWx1ZS4KCgkqIGVsZi5jIChiZmRfZWxmX2hhc2gpOiBPcHRpbWl6ZSB0aGUgaGFzaCBmdW5jdGlvbiBhIGJpdC4KCk1vbiBPY3QgMTkgMjA6MDM6MjEgMTk5OCAgQ2F0aGVyaW5lIE1vb3JlICA8Y2xtQGN5Z251cy5jb20+CgoJKiBlbGYzMi1zaC5jOiAgQWRkIEhPV1RPIGVudHJpZXMgZm9yIFJfU0hfR05VX1ZUSU5IRVJJVCBhbmQKCVJfU0hfR05VX1ZURU5UUlkuCgkoc2hfZWxmX2djX21hcmtfaG9vayk6ICBOZXcuCgkoc2hfZWxmX2djX3N3ZWVwX2hvb2spOiAgTmV3LgoJKHNoX2VsZl9jaGVja19yZWxvY3MpOiAgTmV3LgoJKGVsZl9iYWNrZW5kX2Nhbl9nY19zZWN0aW9ucyk6ICBEZWZpbmUuCgpNb24gT2N0IDE5IDE2OjU3OjA1IDE5OTggIEZlbGl4IExlZSAgPGZsZWVAY3lnbnVzLmNvbT4KCgkqIGFjaW5jbHVkZS5tNDogdW5kbyBwcmV2aW91cyBnZXR0ZXh0IGNoYW5nZQoJKiBhY2xvY2FsLm00OiByZWJ1aWxkIHdpdGggcmlnaHQgdmVyc2lvbiBvZiBhY2xvY2FsLgoKTW9uIE9jdCAxOSAwMTo0NzoyMSAxOTk4ICBGZWxpeCBMZWUgIDxmbGVlQGN5Z251cy5jb20+CgoJKiBhY2luY2x1ZGUubTQsIGFjbG9jYWwubTQ6IG1vdmUgZ2V0dGV4dC1yZWxhdGVkIGZyYWdtZW50cyBmcm9tCglhY2xvY2FsLm00IHRvIGFjaW5jbHVkZS5tNCwgc28gdGhleSBkb24ndCBnZXQgbG9zdC4KCgkqIGVsZmNvcmUuaDogcmV3cml0ZSBmb3IgYmV0dGVyIGNvcmVmaWxlIHN1cHBvcnQuCgkqIGVsZi5jIChlbGZjb3JlXyopOiBuZXcgZnVuY3Rpb25zLgoJKiBlbGYtYmZkLmggKGVsZl9vYmpfdGRhdGEpOiBuZXcgc3RydWN0dXJlIG1lbWJlcnMuCgkqIGFjY29uZmlnLmgsIGFjaW5jbHVkZS5tNCwgY29uZmlndXJlLmluOiBhZGQgZmVhdHVyZS10ZXN0cyBmb3IKCWZsYXZvciBvZiBwcm9jZnMuCgkqIGFjbG9jYWwubTQsIGNvbmZpZy5pbiwgY29uZmlndXJlLCBNYWtlZmlsZS5pbjogcmVnZW5lcmF0ZWQuCgpGcmkgT2N0IDE2IDE0OjA3OjQ1IDE5OTggIENhdGhlcmluZSBNb29yZSAgPGNsbUBjeWdudXMuY29tPgoKCSogZWxmMzItbTMyci5jOiAgQWRkIEhPV1RPIGVudHJpZXMgZm9yIFJfTTMyUl9HTlVfVlRJTkhFUklUCglhbmQgUl9NMzJSX0dOVV9WVEVOVFJZLgoJKGVsZl9iYWNrZW5kX2Nhbl9nY19zZWN0aW9ucyk6ICBEZWZpbmUuCgkobTMycl9lbGZfY2hlY2tfcmVsb2NzKTogIE5ldy4KCShtMzJyX2VsZl9nY19tYXJrX2hvb2spOiAgTmV3LgoJKG0zMnJfZWxmX2djX3N3ZWVwX2hvb2spOiAgTmV3LgoJKG0zMnJfZWxmX3JlbG9jYXRlX3NlY3Rpb24pOiAgSGFuZGxlIFZUIHJlbG9jcy4KCk1vbiBPY3QgMTIgMTQ6MTg6NDAgMTk5OCAgTmljayBDbGlmdG9uICA8bmlja2NAY3lnbnVzLmNvbT4KCgkqIGNvZmYtYXJtLmMgKGFybV9yZWxvY2F0ZV9zZWN0aW9uKTogUmVtb3ZlIHJlZHVuZGFudCB0ZXN0LgoKCSogYmZkLWluMi5oIChzdHJ1Y3QgcmVsb2NfaG93dG9fc3RydWN0KTogSW1wcm92ZSBjb21tZW50IHRvIG1ha2UKCWNsZWF0IHRoYXQgdGhlICdiaXRzaXplJyBmaWVsZCBpcyB0aGUgc2l6ZSBvZiB0aGUgYml0ZmllbGQgQUZURVIKCXJlbG9jYXRpb24gbm90IGJlZm9yZS4KCgkqIGVsZjMyLW0zMnIuYyAoUl9NMzJSXzE4X1BDUkVMKTogRml4IHNpemUgb2YgYml0ZmllbGQuCgoJKiBjb2ZmLW1pcHMuYyAobWlwc19yZWxvY2F0ZV9oaSk6IENvcGUgd2l0aCBtaXNzaW5nIHJlZmhpIG9yIHJlZmxvCglyZWxvY3MuCgpUdWUgT2N0ICA2IDA5OjIwOjQ0IDE5OTggIENhdGhlcmluZSBNb29yZSAgPGNsbUBjeWdudXMuY29tPgoKCSogZWxmMzItc3BhcmMuYzogIEFkZCBIT1dUTyBlbnRyaWVzIGZvciBSX1NQQVJDX0dOVV9WVElOSEVSSVQgYW5kCglSX1NQQVJDX0dOVV9WVEVOVFJZLgoJKGVsZjMyX3NwYXJjX2NoZWNrX3JlbG9jcyk6ICBIYW5kbGUgdGhlbS4KCShlbGYzMl9zcGFyY19yZWxvY190eXBlX2xvb2t1cCk6ICBMaWtld2lzZS4KCShlbGYzMl9zcGFyY19yZWxvY2F0ZV9zZWN0aW9uKTogIExpa2V3aXNlLgoJKGVsZjMyX3NwYXJjX2djX21hcmtfaG9vayk6ICBOZXcuCgkoZWxmMzJfc3BhcmNfZ2Nfc3dlZXBfaG9vayk6ICBOZXcuCgpNb24gT2N0ICA1IDE0OjU1OjMwIDE5OTggIEplZmZyZXkgQSBMYXcgIChsYXdAY3lnbnVzLmNvbSkKCgkqIHNvbS5jIChzb21fZmluaXNoX3dyaXRpbmcpOiBQZXJmb3JtIHNvbWUgc2FuaXR5IGNoZWNrcyB3aGVuCgl3cml0aW5nIGFuIGV4ZWN1dGFibGUgb3Igc2hhcmVkIGxpYnJhcnkuCgpNb24gT2N0ICA1IDEyOjAyOjMxIDE5OTggIEdhdmluIFJvbWlnLUtvY2ggIDxnYXZpbkBjeWdudXMuY29tPgoKCSogZHdhcmYxLmMgOiBOZXcgZmlsZS4gIEFkZHMgX2JmZF9kd2FyZjFfZmluZF9uZWFyZXN0X2xpbmUuCgkqIGNvbmZpZ3VyZS5pbiAoZWxmKTogQWRkIGR3YXJmMS5sby4KCSogZWxmX2JmZC5oIChlbGZfb2JfdGRhdGEpOiBBZGQgZHdhcmYxX2ZpbmRfbGluZV9pbmZvLgoJKiBlbGYuYyAoX2JmZF9lbGZfZmluZF9uZWFyZXN0X2xpbmUpOiBBZGQgY2FsbCB0bwoJX2JmZF9kd2FyZjFfZmluZF9uZWFyZXN0X2xpbmUuCgkqIGVsZjMyLW1pcHMuYyAoX2JmZF9taXBzX2VsZl9maW5kX25lYXJlc3RfbGluZSk6CglBZGQgY2FsbCB0byBfYmZkX2R3YXJmMV9maW5kX25lYXJlc3RfbGluZS4KCSogY29uZmlndXJlOiBSZWJ1aWx0LgoKTW9uIE9jdCAgNSAxMDowNjoyMiAxOTk4ICBDYXRoZXJpbmUgTW9vcmUgIDxjbG1AY3lnbnVzLmNvbT4KCgkqIGVsZmxpbmsuaCAoZWxmX2djX3NlY3Rpb25zKTogIERvIG5vdCBhbGxvdyBnYXJiYWdlCgljb2xsZWN0aW9uIGlmIGR5bmFtaWMgc2VjdGlvbnMgaGF2ZSBiZWVuIGNyZWF0ZWQuCgpNb24gT2N0ICA1IDA5OjA3OjM3IDE5OTggIENhdGhlcmluZSBNb29yZSAgPGNsbUBjeWdudXMuY29tPgoKCSogZWxmMzItdjg1MC5jOiBBZGQgSE9XVE8gZW50cmllcyBmb3IgUl9WODUwX0dOVV9WVElOSEVSSVQgYW5kCglSX1Y4NTBfR05VX1ZURU5UUlkuCgkodjg1MF9lbGZfY2hlY2tfcmVsb2NzKTogIEhhbmRsZSBWVElOSEVSSVQgYW5kIFZURU5UUlkgcmVsb2NzLgoJKHY4NTBfZWxmX3BlcmZvcm1fcmVsb2NhdGlvbik6ICBMaWtld2lzZS4KCSh2ODUwX2VsZl9maW5hbF9saW5rX3JlbG9jYXRlKTogIExpa2V3aXNlLgoJKHY4NTBfZWxmX3JlbG9jYXRlX3NlY3Rpb24pOiAgTGlrZXdpc2UuCgkodjg1MF9lbGZfZ2Nfc3dlZXBfaG9vayk6ICBOZXcgcm91dGluZS4KCSh2ODUwX2VsZl9nY19tYXJrX2hvb2spOiAgTmV3IHJvdXRpbmUuCgkoZWxmX2JhY2tlbmRfY2FuX2djX3NlY3Rpb25zKTogIERlZmluZS4KCk1vbiBPY3QgIDUgMDk6MDQ6MjUgMTk5OCAgQ2F0aGVyaW5lIE1vb3JlICA8Y2xtQGN5Z251cy5jb20+CgoJKiBlbGYzMi1tNjhrLmMgKGVsZl9tNjhrX2djX3N3ZWVwX2hvb2spOiAgRG9uJ3QgYXNzdW1lCgl0aGF0IGR5bm9iaiBleGlzdHMuCgpTdW4gT2N0ICA0IDIzOjI5OjM0IDE5OTggIERhdmlkIEVkZWxzb2huICA8ZWRlbHNvaG5AbWhwY2MuZWR1PgoKCSogcnM2MDAwLWNvcmUuYyAocnM2MDAwY29mZl9jb3JlX2ZpbGVfbWF0Y2hlc19leGVjdXRhYmxlX3ApOgoJRGVjbGFyZSBzaXplIGFzIGJmZF9zaXplX3R5cGUuCgkocnM2MDAwY29mZl9nZXRfc2VjdGlvbl9jb250ZW50cyk6IERlY2xhcmUgY291bnQgYXMgYmZkX3NpemVfdHlwZS4KClN1biBPY3QgIDQgMjA6Mzg6MjkgMTk5OCAgSmVmZnJleSBBIExhdyAgKGxhd0BjeWdudXMuY29tKQoKCSogY3B1LWhwcGEuYyAoYmZkX2hwcGEyMF9hcmNoKTogRGVmaW5lLiAgTGluayBpdCBpbnRvIHRoZSBiZmRfaHBwYV9hcmNoCglzdHJ1Y3R1cmUuCgkqIHNvbS5jIChDUFVfUEFfUklTQzJfMCk6IERlZmluZS4KCShfUEFfUklTQzJfMF9JRCk6IExpa2V3aXNlLgoJKHNvbV9maW5pc2hfd3JpdGluZyk6IFVzZSBDUFVfUEFfUklTQzJfMCBmb3IgdGhlIHN5c3RlbV9pZCBhcyBuZWVkZWQuCgpTdW4gT2N0ICA0IDIxOjE5OjA5IDE5OTggIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5AY3lnbnVzLmNvbT4KCgkqIGVsZmxpbmsuaCAoZWxmX2xpbmtfYWRkX29iamVjdF9zeW1ib2xzKTogV2hlbiBhIHZlcnNpb25lZCBzeW1ib2wKCWhhcyBhIGJhc2Ugd2hpY2ggaXMgYWxyZWFkeSBkZWZpbmVkLCBvbmx5IGFkZCB0aGUgcmVmZXJlbmNlZAoJc3ltYm9sIHRvIHRoZSBkeW5hbWljIHN5bWJvbCB0YWJsZSBpZiBpdCBpcyBkZWZpbmVkIG9yIHJlZmVyZW5jZWQKCWJ5IGEgcmVndWxhciBmaWxlLgoKCSogZWxmMzItaTM4Ni5jIChlbGZfaTM4Nl9pbmZvX3RvX2hvd3RvX3JlbCk6IEhhbmRsZSB2dGFibGUgcmVsb2NzCgljb3JyZWN0bHkuCgoxOTk4LTA5LTI3ICBBbmRyZWFzIFNjaHdhYiAgPHNjaHdhYkBpc3Nhbi5pbmZvcm1hdGlrLnVuaS1kb3J0bXVuZC5kZT4KCgkqIGVsZmxpbmsuaCAoZWxmX2xpbmtfYWRkX29iamVjdF9zeW1ib2xzKTogVW5kbyBsYXN0IGNoYW5nZS4KCldlZCBTZXAgMjMgMTY6MDk6MzEgMTk5OCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGVsZmxpbmsuaCAoZWxmX2xpbmtfYWRkX29iamVjdF9zeW1ib2xzKTogRG9uJ3QgcmVjb3JkIGEgZHluYW1pYwoJc3ltYm9sIGZvciB0aGUgaW5kaXJlY3QgYWxpYXMgdG8gYSB2ZXJzaW9uZWQgc3ltYm9sLgoKTW9uIFNlcCAyMSAxMjoxNToyMiAxOTk4ICBDYXRoZXJpbmUgTW9vcmUgIDxjbG1AY3lnbnVzLmNvbT4KCgkqIGVsZjMyLWkzODYuYyAoZWxmMzJfaTM4Nl92dGluaGVyaXRfaG93dG8pOiBOZXcuCgkoZWxmMzJfaTM4Nl92dGVudHJ5X2hvd3RvKTogTmV3LgoJKGVsZl9pMzg2X3JlbG9jX3R5cGVfbG9va3VwKTogIFJldHVybiBlbGYzMl9pMzg2X3Z0ZW50cnlfaG93dG8KCW9yIGVsZjMyX2kzODZfdnRpbmhlcml0X2hvd3RvICBvbiBsb29rdXAuCgpTdW4gU2VwIDIwIDAwOjQ4OjA3IDE5OTggIEFuZHJlYXMgU2Nod2FiICA8c2Nod2FiQGlzc2FuLmluZm9ybWF0aWsudW5pLWRvcnRtdW5kLmRlPgoKCSogZWxmMzItbTY4ay5jOiBJbmNsdWRlICJlbGYvbTY4ay5oIi4gIFJlbW92ZSBkZWZpbml0aW9uIG9mIGVudW0KCXJlbG9jX3R5cGUuICBSZW5hbWUgUl82OEtfX21heCB0byBSXzY4S19tYXguCgkoaG93dG9fdGFibGUpOiBVc2UgX2JmZF9lbGZfcmVsX3Z0YWJsZV9yZWxvY19mbiBmb3IgYSBWVEVOVFJZCglyZWxvYy4KClN1biBTZXAgMjAgMDA6MDk6MjUgMTk5OCAgQ2hyaXMgVG9yZWsgIDx0b3Jla0Bic2RpLmNvbT4KCgkqIGxpYmJmZC5jIChiZmRfZ2V0YjMyKTogUmV3cml0ZSBleHByZXNzaW9uIHRvIGdldCBiZXR0ZXIgY29kZS4KCShiZmRfZ2V0bDMyLCBiZmRfZ2V0Yl9zaWduZWRfMzIsIGJmZF9nZXRsX3NpZ25lZF8zMik6IExpa2V3aXNlLgoKCSogbGliYmZkLmMgKGJmZF9sb2cyKTogQ2FzdCB0byBiZmRfdm1hIGJlZm9yZSBzaGlmdGluZywgbm90CglhZnRlci4KClNhdCBTZXAgMTkgMjI6NDI6MjMgMTk5OCAgRG91ZyBSYWJzb24gIDxkZnJAbmxzeXN0ZW1zLmNvbT4KCgkqIGVsZmxpbmsuaCAoZWxmX2xpbmtfYWRkX29iamVjdF9zeW1ib2xzKTogRW5zdXJlIHRoYXQgdGhlIHdhcm5pbmcKCW1lc3NhZ2UgaGFzIGEgbnVsbCBieXRlIHRlcm1pbmF0b3IuCgpGcmkgU2VwIDE4IDE0OjM1OjI5IDE5OTggIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQGN5Z251cy5jb20+CgoJKiBlbGYzMi12ODUwLmMgKHY4NTBfZWxmX3BlcmZvcm1fcmVsb2NhdGlvbik6IElnbm9yZSBjb250ZW50cyBvZgoJd29yZCBzdWJqZWN0IHRvIFJfVjg1MF8zMiByZWxvY2F0aW9uLgoKVGh1IFNlcCAxNyAxNzoyMDozNiAxOTk4ICBOaWNrIENsaWZ0b24gIDxuaWNrY0BjeWdudXMuY29tPgoKCSogZHdhcmYyLmM6IEFkZCBjb21tZW50IGRlc2NyaWJpbmcgcHJvYmxlbSBjb21wdXRpbmcgbGluZSBudW1iZXJzCglmb3IgdW5kZWZpbmVkIHN5bWJvbHMgYXQgbGluayB0aW1lLgoKVGh1IFNlcCAxNyAxNjowMzoyOCAxOTk4ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogZWxmNjQtYWxwaGEuYyAoZWxmNjRfYWxwaGFfYWRqdXN0X2R5bmFtaWNfc3ltYm9sKTogRG9uJ3QKCXRyYW5zZm9ybSBhIGRlZndlYWsgaW50byBhIHBsdCBlbnRyeS4KCShlbGY2NF9hbHBoYV9jYWxjX2R5bnJlbF9zaXplcyk6IEFsbG93IHJvb20gZm9yIHNlY29uZGFyeQoJcGx0IGVudHJ5IHJlZmVyZW5jZXMgdG8gcmVjZWl2ZSBhIFJFTEFUSVZFIHJlbG9jLgoJKGVsZjY0X2FscGhhX2ZpbmlzaF9keW5hbWljX3N5bWJvbCk6IEZpbGwgdGhlbSBpbi4KCShlbGY2NF9hbHBoYV9yZWxvY2F0ZV9zZWN0aW9uKTogQXNzZXJ0IHdlIGRvbid0IG92ZXJydW4KCXRoZSBhbGxvY2F0ZWQgcmVsb2NhdGlvbiBzcGFjZS4KCldlZCBTZXAgMTYgMTg6MDM6MTMgMTk5OCAgTmljayBDbGlmdG9uICA8bmlja2NAY3lnbnVzLmNvbT4KCgkqIGVsZi5jIChzd2FwX291dF9zeW1zKTogQWx3YXlzIHRyZWF0IHNlY3Rpb24gc3ltYm9scyBhcwoJc3BlY2lhbCwgZXZlbiBpZiB0aGV5IGFyZSBhdHRhY2hlZCB0byBhIGNvbW1vbiBzZWN0aW9uLgoKV2VkIFNlcCAxNiAxMDozNDoxMyAxOTk4ICBOaWNrIENsaWZ0b24gIDxuaWNrY0BjeWdudXMuY29tPgoKCSogZWxmMzItdjg1MC5jICh2ODUwX2VsZl9zeW1ib2xfcHJvY2Vzc2luZyk6IE1vdmUgc3ltYm9scyBpbgoJc2VjdGlvbnMgd2l0aCB2ODUwIGNvbW1vbiBzZWN0aW9uIGF0dHJpYnV0ZXMgaW50byBuYW1lZCB2ODUwCgljb21tb24gc2VjdGlvbnMuCgkodjg1MF9lbGZfYWRkX3N5bWJvbF9ob29rKTogTW92ZSBzeW1ib2xzIGluIHNlY3Rpb25zIHdpdGggdjg1MAoJY29tbW9uIHNlY3Rpb24gYXR0cmlidXRlcyBpbnRvIG5hbWVkIHY4NTAgY29tbW9uIHNlY3Rpb25zLgoKV2VkIFNlcCAxNiAxMToyNjo0OSBDRFQgMTk5OCAgQ2F0aGVyaW5lIE1vb3JlICA8Y2xtQGN5Z251cy5jb20+CgoJKiBlbGYzMi1hcm0uYyAoZWxmMzJfYXJtX2djX21hcmtfaG9vayk6ICBSZW1vdmUgcHJpbnQKCXN0YXRlbWVudC4KCjE5OTgtMDktMTUgIEdlb2ZmIEtlYXRpbmcgIDxnZW9mZmtAb3plbWFpbC5jb20uYXU+CgoJKiBlbGYzMi1wcGMuYyAocHBjX2VsZl9yZWxvY2F0ZV9zZWN0aW9uKTogUmV2ZXJzZSBvdXRwdXRfb2Zmc2V0CglwYXJ0IG9mIFZsYWRpbWlyJ3MgY2hhbmdlIG9mIDE5OTgtMDgtMTkuICBNYWtlIGEgUl9QUENfU0RBUkVMMTYKCXJlbG9jIHRvIHRoZSB3cm9uZyBzZWN0aW9uIGEgd2FybmluZywgbm90IGFuIGVycm9yLiAgLmR5bnNic3MKCWlzIG5vdCBhbiBvdXRwdXQgc2VjdGlvbiwgc28gdGhlcmUgaXMgbm8gbmVlZCB0byBjaGVjayBmb3IgaXQuCgpUdWUgU2VwIDE1IDEyOjQwOjA1IDE5OTggIENhdGhlcmluZSBNb29yZSAgPGNsbUBjeWdudXMuY29tPgoKCSogZWxmLWJmZC5oOiAgQWRkIGFyZ3VtZW50IHRvIGVsZl9iYWNrZW5kX2dldF9zeW1ib2xfdHlwZS4KClR1ZSBTZXAgMTUgMDg6MzQ6NDAgMTk5OCAgQ2F0aGVyaW5lIE1vb3JlICA8Y2xtQGN5Z251cy5jb20+CgoJKiBlbGYuYyAoc3dhcF9vdXRfc3ltcyk6ICBQYXNzIHR5cGUgdG8gZWxmX2JhY2tlbmRfZ2V0X3N5bWJvbF90eXBlLgoJKiBlbGYzMi1hcm0uYzogIEFkZCBIT1dUTyBlbnRyaWVzIGZvciBSX0FSTV9HTlVfVlRJTkhFUklUIGFuZAoJUl9BUk1fR05VX1ZURU5UUlkuCgkoZWxmMzJfYXJtX2djX21hcmtfaG9vayk6IE5ldy4KCShlbGYzMl9hcm1fZ2Nfc3dlZXBfaG9vayk6IE5ldy4KCShlbGYzMl9hcm1fY2hlY2tfcmVsb2NzKTogTmV3LgoJKGVsZjMyX2FybV9maW5hbF9saW5rX3JlbG9jYXRlKTogIEhhbmRsZSBWVElOSEVSSVQgYW5kIFZURU5UUlkKCXJlbG9jYXRpb25zLgoJKGVsZjMyX2FybV9yZWxvY2F0ZV9zZWN0aW9uKTogSGFuZGxlIFZUSU5IRVJJVCBhbmQgVlRFTlRSWQoJcmVsb2NhdGlvbnMuCgoxOTk4LTA5LTEwICBHZW9mZiBLZWF0aW5nICA8Z2VvZmZrQG96ZW1haWwuY29tLmF1PgoKCSogZWxmMzItcHBjLmMgKHBwY19lbGZfcmVsb2NhdGVfc2VjdGlvbik6IElmIGR5bm9iaiBpcyBOVUxMLAoJYXNzdW1lIHRoZXJlIGlzIG5vIFBMVCBvciBHT1QuCgpXZWQgU2VwICA5IDE0OjI0OjEyIDE5OTggIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQGN5Z251cy5jb20+CgoJKiBlbGYzMi1hcm0uYyAoZWxmMzJfYXJtX2ZpbmRfbmVhcmVzdF9saW5lKTogTmV3IGZ1bmN0aW9uOiAganVzdAoJbGlrZSBfZWxmX2JmZF9maW5kX25lYXJlc3RfbGluZSgpIGV4Y2VwdCB0aGF0IFNUVF9BUk1fVEZVTkMgaXMKCWFsc28gYWNjZXB0ZWQgYXMgYSBmdW5jdGlvbiBzeW1ib2wgdHlwZS4KCk1vbiBTZXAgIDcgMTM6MjQ6MDMgMTk5OCAgUGV0ZXIgU2NoYXVlciAgPHBlc0ByZWdlbnQuZS10ZWNobmlrLnR1LW11ZW5jaGVuLmRlPgoKCSogcnM2MDAwLWNvcmUuYyAoX0xPTkdfTE9ORyk6ICBEZWZpbmUgZm9yIEFJWCA0Lnggb25seS4KClNhdCBTZXAgIDUgMjA6NDA6MTggMTk5OCAgSWFuIExhbmNlIFRheWxvciAgPGlhbkBjeWdudXMuY29tPgoKCSogbGliYmZkLWluLmggKF9iZmRfbm9saW5rX2JmZF9nY19zZWN0aW9ucyk6IENvcnJlY3QgZGVmaW5pdGlvbiB0bwoJbWF0Y2ggZGVmaW5pdGlvbiBvZiBfYmZkX2djX3NlY3Rpb25zIGZpZWxkLgoJKiBsaWJiZmQuaDogUmVidWlsZC4KCkZyaSBTZXAgIDQgMTM6NTQ6MjMgMTk5OCAgRGF2aWQgTWlsbGVyICA8ZGF2ZW1AZG0uY29iYWx0bWljcm8uY29tPgoKCSogZWxmMzItc3BhcmMuYyAoZWxmMzJfc3BhcmNfcmVsb2NhdGVfc2VjdGlvbik6IFByb3Blcmx5IGFkanVzdAoJdGhlIGFkZGVuZCBvZiBhIGR5bmFtaWMgcmVsb2NhdGlvbiByZWZlcmVuY2luZyBhIHNlY3Rpb24uCgkqIGVsZjY0LXNwYXJjLmMgKHNwYXJjNjRfZWxmX3JlbG9jYXRlX3NlY3Rpb24pOiBMaWtld2lzZS4KCShzcGFyYzY0X2VsZl9maW5pc2hfZHluYW1pY19zeW1ib2wpOiBGaXggdGhlIFBMVCByZWxvY2F0aW9uIG9mZnNldC4KClRodSBTZXAgIDMgMTc6Mjg6NTAgMTk5OCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGVsZmxpbmsuaCAoYmZkX2VsZk5OX3NpemVfZHluYW1pY19zZWN0aW9ucyk6IFZlcmlmeSB0aGF0IHRoZQoJYmVkIGhhcyBhIHNpemVfZHluYW1pY19zZWN0aW9ucyByb3V0aW5lIGJlZm9yZSB0cnlpbmcgdG8gdXNlIGl0LgoKTW9uIEF1ZyAzMSAxNDo0OToyMiAxOTk4ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogZWxmMzItbWlwcy5jIChlbGZfbWlwc19nbnVfdnRlbnRyeV9ob3d0byk6IFVzZQoJX2JmZF9lbGZfcmVsX3Z0YWJsZV9yZWxvY19mbi4KCk1vbiBBdWcgMzEgMTA6MjM6NDAgMTk5OCAgQ2F0aGVyaW5lIE1vb3JlICA8Y2xtQGN5Z251cy5jb20+CgoJKiBNYWtlZmlsZS5hbTogIEFkZCBlbGYzMi1hcm0uYy4KCSogTWFrZWZpbGUuaW46ICBSZWJ1aWxkLgoJKiBlbGYtYmZkLmg6ICBBZGQgZWxmX2JhY2tlbmRfZ2V0X3N5bWJvbF90eXBlLgoJKiBlbGYuYyAoc3dhcF9vdXRfc3ltcyk6ICBJZiBkZWZpbmVkLCBjYWxsCgllbGZfYmFja2VuZF9nZXRfc3ltYm9sX3R5cGUuCgkqIGVsZjMyLWFybS5jOiBEZWZpbmUgZWxmX2JhY2tlbmRfZ2V0X3N5bWJvbF90eXBlLgoJKGVsZjMyX2FybV9nZXRfc3ltYm9sLXR5cGUpOiAgTmV3IHJvdXRpbmUuCgkocmVjb3JkX3RodW1iX3RvX2FybV9nbHVlKTogIENoYW5nZSB0byB1c2UgU1RUX0FSTV9URlVOQy4KCShiZmRfZWxmMzJfYXJtX3Byb2Nlc3NfYmVmb3JlX2FsbG9jYXRpb24pOiAgQ2hhbmdlIHRvCgljaGVjayBmb3IgU1RUX0FSTV9URlVOQy4KCShlbGYzMl9hcm1fZmluYWxfbGlua19yZWxvY2F0ZSk6ICBMaWtld2lzZS4KCSogZWxmeHgtdGFyZ2V0Lmg6ICBBZGQgZWxmX2JhY2tlbmRfZ2V0X3N5bWJvbF90eXBlLgoKRnJpIEF1ZyAyOCAxOTo0NDowNyAxOTk4ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogYXJjaHVyZXMuYyAoYmZkX21hY2hfYWxwaGFfZXZbNDU2XSk6IE5ldy4KCSogY3B1LWFscGhhLmM6IFJld29yayB0byBtYXRjaCB0aGVzZSB0eXBlcy4KCSogYmZkLWluMi5oOiBSZWJ1aWxkLgoKRnJpIEF1ZyAyOCAxOTozODo1MyAxOTk4ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogZWxmLWJmZC5oIChfYmZkX2VsZl9yZWxfdnRhYmxlX3JlbG9jX2ZuKTogRGVjbGFyZS4KCSogZWxmLmMgKF9iZmRfZWxmX3JlbF92dGFibGVfcmVsb2NfZm4pOiBOZXcuCgoJKiBlbGYzMi1pMzg2LmMgKGVsZl9ob3d0b190YWJsZSk6IEFkZCB2dGFibGUgcmVsb2NzLgoJKGVsZl9pMzg2X3JlbG9jX3R5cGVfbG9va3VwKTogUmVjb2duaXplIHRoZW0uCgkoZWxmX2kzODZfY2hlY2tfcmVsb2NzKTogUGFzcyB0aGVtIG9mZiB0byBnZW5lcmljIGNvZGUuCgkoZWxmX2kzODZfcmVsb2NhdGVfc2VjdGlvbik6IElnbm9yZSB0aGVtLgoJKGVsZl9pMzg2X2djX21hcmtfaG9vaywgZWxmX2kzODZfZ2Nfc3dlZXBfaG9vayk6IE5ldy4KCShlbGZfYmFja2VuZF9jYW5fZ2Nfc2VjdGlvbnMpOiBUcnVlLgoKVGh1IEF1ZyAyMCAxNTowMzo0NSAxOTk4ICBOaWNrIENsaWZ0b24gIDxuaWNrY0BjeWdudXMuY29tPgoKCSogZWxmMzItYXJtLmMgKGVsZjMyX3RodW1iX3RvX2FybV9zdHViKTogQ2hlY2sgc3ltX3NlYyBpcyBub3QgTlVMTAoJYmVmb3JlIGxvb2tpbmcgYXQgb3duZXIgZmllbGQuCgkoZWxmMzJfYXJtX3RvX3RodW1iX3N0dWIpOiBEaXR0by4KCShlbGYzMl9hcm1fcmVsb2NhdGVfc2VjdGlvbik6IENvbXB1dGUgbmFtZSBiZWZvcmUgY2FsbGluZwoJZWxmMzJfYXJtX2ZpbmFsX2xpbmtfcmVsb2NhdGUoKS4KClRodSBBdWcgMjAgMTE6MzA6MTcgMTk5OCAgTWljaGFlbCBTbnlkZXIgIDxtc255ZGVyQGNsZWF2ZXIuY3lnbnVzLmNvbT4KCgkqIGVsZi5jOiBjb21tZW50IGFuZCBmb3JtYXR0aW5nIGNsZWFudXBzLgoJKiBlbGZjb3JlLmg6IGRpdHRvLgoKV2VkIEF1ZyAxOSAxNTo0MzoyNiAxOTk4ICBNaWNoYWVsIFNueWRlciAgPG1zbnlkZXJAY2xlYXZlci5jeWdudXMuY29tPgoKCSogZWxmY29kZS5oIChlbGZfb2JqZWN0X3ApOiBSZWplY3QgZmlsZXMgb2YgaGVhZGVyIHR5cGUgRVRfQ09SRQoJKGNvcmUgZmlsZXMgYXJlIHRyZWF0ZWQgZGlmZmVyZW50bHkgdGhhbiBvYmplY3QgZmlsZXMpLgoJKiBlbGYtYmZkLmggKF9iZmRfZWxmX3dyaXRlX2NvcmVmaWxlX2NvbnRlbnRzLAoJYmZkX2VsZl9ta2NvcmVmaWxlKTogZGVjbGFyZS4KCSogZWxmeHgtdGFyZ2V0LmggKF9iZmRfZWxmX3dyaXRlX2NvcmVmaWxlX2NvbnRlbnRzLAoJYmZkX2VsZl9ta2NvcmVmaWxlKTogYWRkIHRvIGJmZF90YXJnZXQgdmVjdG9yLgoJKiBlbGZjb3JlLmggKGVsZl9jb3JlX2ZpbGVfcCk6IHNhdmUgdGhlIHByb2dyYW0gaGVhZGVyIHRhYmxlLAoJYW5kIHNldCB0aGUgYmZkIGFyY2hpdGVjdHVyZSBmcm9tIHRoZSBlbGYgZmlsZSBoZWFkZXIuCgkqIGVsZi5jIChiZmRfZWxmX21rY29yZWZpbGUpOiBuZXcgZnVuY3Rpb24uCgkoX2JmZF9lbGZfd3JpdGVfY29yZWZpbGVfY29udGVudHMpOiBuZXcgZnVuY3Rpb24uCgkoYXNzaWduX2ZpbGVfcG9zaXRpb25zX2Zvcl9zZWdtZW50cyk6IGFkZCBjYXNlcyBmb3IgaGFuZGxpbmcKCVBUX05PVEUgc2VnbWVudHMuICAoYXNzaWduX2ZpbGVfcG9zaXRpb25zX2V4Y2VwdF9yZWxvY3MpOgoJY29yZSBmaWxlcyBzaG91bGQgYmUgaGFuZGxlZCB0aGUgc2FtZSBhcyBleGVjIGZpbGVzLgoJKHByZXBfaGVhZGVycyk6IGlkZW50aWZ5IGNvcmUgZmlsZXMgYXMgdHlwZSBFVF9DT1JFLgoJKGNvcHlfcHJpdmF0ZV9iZmRfZGF0YSk6IGlkZW50aWZ5IHRoZSBzZWN0aW9ucyBiZWxvbmdpbmcgdG8KCXRoZSBQVF9OT1RFIHNlZ21lbnQuCgoJKiBlbGYzMi1zcGFyYy5jIChlbGYzMl9zcGFyY19maW5hbF93cml0ZV9wcm9jZXNzaW5nKToKCWFkZCBicmVhayBzdGF0ZW1lbnQgdG8gZGVmYXVsdCBjYXNlLgoKMTk5OC0wOC0xOSAgVmxhZGltaXIgTi4gTWFrYXJvdiAgPHZtYWthcm92QGN5Z251cy5jb20+CgoJKiBlbGYzMi1wcGMuYyAocHBjX2VsZl9yZWxvY2F0ZV9zZWN0aW9uKTogQ2hlY2sgdGhhdCBvdXRwdXQKCXNlY3Rpb24gKG5vdCBpbnB1dCkgd2lsbCBiZSBpbiBzZWN0aW9ucyAiLnNic3MiLCAiLnNic3MyIiwKCSIuc2RhdGEiLCBhbmQgIi5zZGF0YSIgZm9yIFJfUFBDX1NEQVJFTDE2LCBSX1BQQ19FTUJfU0RBMlJFTCwKCVJfUFBDX0VNQl9TREEyMSwgUl9QUENfRU1CX1JFTFNEQS4gIEluIGFsbCB0aGVzZSBjYXNlcyBhbHNvIGlnbm9yZQoJb3V0cHV0X29mZnNldCBmb3IgY29ycmVjdCBldmFsdWF0aW9uIG9mIGFkZGVuZC4KClR1ZSBBdWcgMTggMTE6NDg6MTIgMTk5OCAgQ2F0aGVyaW5lIE1vb3JlICA8Y2xtQGN5Z251cy5jb20+CgoJKiBlbGYzMi1hcm0uYzogQWRkIHByZWZpeCBiZmRfIHRvIGVsZjMyX2FybV9nZXRfYmZkX2Zvcl9pbnRlcndvcmtpbmcsCgllbGYzMl9hcm1fYWxsb2NhdGVfaW50ZXJ3b3JraW5nX3NlY3Rpb25zIGFuZAoJZWxmMzJfYXJtX3Byb2Nlc3NfYmVmb3JlX2FsbG9jYXRpb24uCgpUdWUgQXVnIDE4IDExOjQ2OjAwIDE5OTggIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQGN5Z251cy5jb20+CgoJKiBiZmQtaW4uaDogQW1tZW5kIHByb3RvdHlwZSBmb3IKCWVsZjMyX2FybV9wcm9jZXNzX2JlZm9yZV9hbGxvY2F0aW9uIHRvIHJlbW92ZSBzdXJwbHVzIHRoaXJkCglhcmd1bWVudC4KCgkqIGJmZC1pbjIuaDogUmVnZW5lcmF0ZS4KClNhdCBBdWcgMTUgMjA6NTU6MDggMTk5OCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGVsZjY0LWFscGhhLmMgKGVsZjY0X2FscGhhX3JlbGF4X3NlY3Rpb24pOiBIYW5kbGUgaW5kaXJlY3Qgc3ltYm9scy4KCkZyaSBBdWcgMTQgMDk6MTI6MjggMTk5OCAgU3RhbiBDb3ggIDxzY294QGN5Z251cy5jb20+CgoJKiBhb3V0eC5oIChhb3V0X2xpbmtfaW5wdXRfc2VjdGlvbl9leHQpOiBVc2UgdGhlIHJlbG9jYXRpb24gYWxyZWFkeQoJY2FsY3VsYXRlZCBmb3IgUkVMT0NfU1BBUkNfUkVWMzIgY2FzZS4KClRodSBBdWcgMTMgMTQ6MDI6MDIgMTk5OCAgQ2F0aGVyaW5lIE1vb3JlICA8Y2xtQGN5Z251cy5jb20+CgoJKiBiZmQtaW4uaDogIEFkZCBwcm90b3R5cGVzIGZvciBlbGYzMl9hcm1fZ2V0X2JmZF9mb3JfaW50ZXJ3b3JraW5nLAoJZWxmMzJfYXJtX2FsbG9jYXRlX2ludGVyd29ya2luZ19zZWN0aW9ucyBhbmQKCWVsZjMyX2FybV9wcm9jZXNzX2JlZm9yZV9hbGxvY2F0aW9uLgoJKiBiZmQtaW4yLmg6ICBSZWdlbmVyYXRlZC4KCSogZWxmMzItYXJtLmMgRGVmaW5lIGVsZjMyX2FybV9saW5rX2hhc2hfdGFibGUuCgkoaW5zZXJ0X3RodW1iX2JyYW5jaCk6IE5ldyByb3V0aW5lLgoJKGZpbmRfdGh1bWJfZ2x1ZSk6IE5ldyByb3V0aW5lLgoJKGZpbmRfYXJtX2dsdWUpOiBOZXcgcm91dGluZS4KCShyZWNvcmRfYXJtX3RvX3RodW1iX2dsdWUpOiBOZXcgcm91dGluZS4KCShyZWNvcmRfdGh1bWJfdG9fYXJtX2dsdWUpOiBOZXcgcm91dGluZS4KCShlbGYzMl9hcm1fbGlua19oYXNoX3RhYmxlX2NyZWF0ZSk6IE5ldyByb3V0aW5lLgoJKGVsZjMyX2FybV9nZXRfYmZkX2Zvcl9pbnRlcndvcmtpbmcpOiBOZXcgcm91dGluZS4KCShlbGYzMl9hcm1fYWxsb2NhdGVfaW50ZXJ3b3JraW5nX3NlY3Rpb25zKSBOZXcgcm91dGluZS4KCShlbGYzMl9hcm1fcHJvY2Vzc19iZWZvcmVfYWxsb2NhdGlvbikgTmV3IHJvdXRpbmUuCgkoZWxmMzJfdGh1bWJfdG9fYXJtX3N0dWIpOiBOZXcgcm91dGluZS4KCShlbGYzMl9hcm1fdG9fdGh1bWJfc3R1Yik6IE5ldyByb3V0aW5lLgoJKGVsZjMyX3ByaW50X3ByaXZhdGVfYmZkX2RhdGEpOiBGaXggdHlwby4KCShlbGYzMl9hcm1fZmluYWxfbGlua19yZWxvY2F0ZSk6ICBBZGQgYXJndW1lbnQgc3ltX3NlYy4KCUNoZWNrIGZvciBicmFuY2hlcyB0byB0aHVtYiBzeW1ib2xzIGluIGNhc2UgUl9BUk1fUEMyNC4KCUNoZWNrIGZvciBicmFuY2hlcyB0byBhcm0gc3ltYm9scyBpbiBjYXNlIFJfQVJNX1RITV9QQzIyLgoJKGVsZjMyX2FybV9yZWxvY2F0ZV9zZWN0aW9uKTogIFBhc3Mgc3ltYm9sIHNlY3Rpb24gdG8KCWVsZjMyX2FybV9maW5hbF9saW5rX3JlbG9jYXRlLgoKV2VkIEF1ZyAxMiAxOTowMDozOSAxOTk4ICBHZW9mZiBLZWF0aW5nICA8Z2VvZmZrQG96ZW1haWwuY29tLmF1PgoKCSogZWxmMzItcHBjLmMgKHBwY19lbGZfYWRqdXN0X2R5bmFtaWNfc3ltYm9sKTogR2VuZXJhdGUgUExUCgllbnRyaWVzIHVubGVzcyB0aGUgc3ltYm9sIGlzIGRlZmluZWQgaW4gdGhlIGV4ZWN1dGFibGU7IGluCglwYXJ0aWN1bGFyLCB1bmRlZmluZWQgd2VhayBzeW1ib2xzIGdldCBhIFBMVCBlbnRyeS4KCldlZCBBdWcgMTIgMTQ6NDg6MzMgMTk5OCAgSWFuIExhbmNlIFRheWxvciAgPGlhbkBjeWdudXMuY29tPgoKCSogbGliYW91dC5oOiBSZW1vdmUgbmVzdGVkIGNvbW1lbnQgdG8gYXZvaWQgd2FybmluZy4KCldlZCBBdWcgMTIgMDg6MTA6MTEgMTk5OCBDYXRoZXJpbmUgTW9vcmUgIDxjbG1AY3lnbnVzLmNvbT4KCgkqIGVsZjMyLWFybS5jIChlbGYzMl9hcm1fZmluYWxfbGlua19yZWxvY2F0ZSk6ICBSZXdvcmsKCVJfQVJNX1BDMjQgcmVsb2NhdGlvbi4KClR1ZSBBdWcgMTEgMTQ6NDI6MjYgMTk5OCAgQ2F0aGVyaW5lIE1vb3JlICA8Y2xtQGN5Z251cy5jb20+CgoJKiBlbGYzMi1hcm0uYyAoZWxmMzJfYXJtX2ZpbmFsX2xpbmtfcmVsb2NhdGUpOiAgUmVtb3ZlIHVudXNlZAoJYXJndW1lbnQgaXNfbG9jYWwuICBBZGQgYXJndW1lbnQgc3ltX2ZsYWdzLiAgQ2hlY2sgc3ltX2ZsYWdzCglpbiBSX0FSTV9BQlMzMiBjYXNlLiAgSW5jbHVkZSBhZGRlbmQgZm9yIFJfQVJNX1RITV9QQzIyIGNhc2UuCgkoZWxmMzJfYXJtX3JlbG9jYXRlX3NlY3Rpb24pOiAgRG9uJ3QgcGFzcyBsb2NhbCBzeW0gYW5kIHBhc3MKCXN5bV9mbGFncyB0byBlbGYzMl9hcm1fZmluYWxfbGlua19yZWxvY2F0ZS4KCk1vbiBBdWcgMTAgMjA6Mzg6MzkgMTk5OCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGVsZjY0LWFscGhhLmMgKGVsZjY0X2FscGhhX2NhbGNfZHlucmVsX3NpemVzKTogQ29ycmVjdCBsYXN0IGNoYW5nZQoJdG8gbm90IGNvdW50IHRvbyBmZXcgcmVsb2NzIGZvciBkeW5hbWljbHkgbGlua2VkIGV4ZWN1dGFibGVzLgoKTW9uIEF1ZyAxMCAxNTozNTozNCAxOTk4ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogZWxmNjQtYWxwaGEuYyAoYWxwaGFfZWxmX2R5bmFtaWNfc3ltYm9sX3ApOiBOZXZlciBjb25zaWRlcgoJc3ltYm9scyB3aXRob3V0IGEgZHluYW1pYyBpbmRleCBkeW5hbWljLiAgQ29uc2lkZXIgYWxsIHdlYWsKCXN5bWJvbHMgZHluYW1pYy4KCShlbGY2NF9hbHBoYV9zdHJpcF9zZWN0aW9uX2Zyb21fb3V0cHV0KTogRG9uJ3QgYXNzdW1lIDEtMQoJY29ycmVzcG9uZGFuY2UgYmV0d2VlbiBpbnB1dCBhbmQgb3V0cHV0IHNlY3Rpb25zLgoKTW9uIEF1ZyAxMCAxNTozMTozOSAxOTk4ICBBbmRyZWFzIFNjaHdhYiAgPHNjaHdhYkBpc3Nhbi5pbmZvcm1hdGlrLnVuaS1kb3J0bXVuZC5kZT4KCgkqIGVsZmxpbmsuaCAoZWxmX2djX2NvbW1vbl9maW5hbGl6ZV9nb3Rfb2Zmc2V0cyk6IEZvciBiYWNrZW5kcwoJdGhhdCB1c2UgYSAuZ290LnBsdCBzZWN0aW9uIHN0YXJ0IHRoZSBnb3Qgb2Zmc2V0IGF0IHplcm8uCgpNb24gQXVnIDEwIDE3OjMxOjIxIDE5OTggIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5AY3lnbnVzLmNvbT4KCgkqIGllZWUuYyAoaWVlZV93cml0ZV9wcm9jZXNzb3IpOiBDb3JyZWN0IHRoZSBwcm9jZXNzb3IgSUQgd3JpdHRlbgoJb3V0IGZvciBiZmRfYXJjaF9tNjhrLCBhY2NvbW1vZGF0aW5nIGNoYW5nZSBvZiBNYXJjaCAyNS4KClN1biBBdWcgIDkgMjA6NTU6NDQgMTk5OCAgQ2F0aGVyaW5lIE1vb3JlICA8Y2xtQGN5Z251cy5jb20+CgoJKiBlbGYzMi1hcm0uYyAoZWxmMzJfYXJtX2ZpbmFsX2xpbmtfcmVsb2NhdGUpOiAgUmV3b3JrCglSX0FSTV9USE1fUlBDMjIgcmVsb2NhdGlvbnMuCgpTYXQgQXVnICA4IDE1OjE1OjMwIDE5OTggIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBlbGY2NC1hbHBoYS5jIChhbHBoYV9lbGZfZHluYW1pY19zeW1ib2xfcCk6IFVuZGVmIHdlYWsgc3ltYm9scwoJYXJlIGFsd2F5cyBkeW5hbWljLgoJKGVsZjY0X2FscGhhX2NhbGNfZHlucmVsX3NpemVzKTogQWxsb3cgZW5vdWdoIHJvb20gZm9yIFJFTEFUSVZFCgkuZ290IHJlbG9jcyBpbiAtQnN5bWJvbGljIHNoYXJlZCBvYmplY3RzLgoKV2VkIEF1ZyAgNSAxNTo0ODowOCAxOTk4ICBOaWNrIENsaWZ0b24gIDxuaWNrY0BjeWdudXMuY29tPgoKCSogZWxmMzItYXJtLmM6IEFkZCBwcml2YXRlIGZsYWdzIHRvIEVMRiBoZWFkZXIuCgkoZWxmMzJfYXJtX3ByaW50X3ByaXZhdGVfYmZkX2RhdGEpOiBOZXcgRnVuY3Rpb24uCgkoZWxmMzJfYXJtX3NldF9wcml2YXRlX2ZsYWdzKTogTmV3IEZ1bmN0aW9uLgoJKGVsZjMyX2FybV9jb3B5X3ByaXZhdGVfZmxhZ3MpOiBOZXcgRnVuY3Rpb24uCgkoZWxmMzJfYXJtX21lcmdlX3ByaXZhdGVfYmZkX2RhdGEpOiBOZXcgRnVuY3Rpb24uCgpNb24gQXVnICAzIDE3OjEwOjE1IDE5OTggIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5AY3lnbnVzLmNvbT4KCgkqIGVsZjMyLXNwYXJjLmMgKGVsZjMyX3NwYXJjX2NoZWNrX3JlbG9jcyk6IFBlcm1pdCBXUExUMzAgYWdhaW5zdAoJYSBsb2NhbCBzeW1ib2wuCgkoZWxmMzJfc3BhcmNfcmVsb2NhdGVfc2VjdGlvbik6IExpa2V3aXNlLgoKU3VuIEF1ZyAgMiAwMzoxOToyMyAxOTk4ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogZWxmMzItcHBjLmMgKHBwY19lbGZfY2hlY2tfcmVsb2NzKTogSW5pdCBzZ290IHRvIE5VTEwuICBDcmVhdGUgdGhlCgkuZ290IGlmIGFueSByZWxvY2F0aW9uIHJlZmVycnMgdG8gX0dMT0JBTF9PRkZTRVRfVEFCTEVfLgoJKHBwY19lbGZfcmVsb2NhdGVfc2VjdGlvbik6IFB1bGwgc2dvdCBhbmQgc3BsdCBzZWFyY2ggdG8gdGhlIHN0YXJ0CglvZiB0aGUgZnVuY3Rpb24uICBSZWNvZ25pemUgbm8gLnBsdCBhcyBzdGF0aWMgbGlua2luZy4KCjE5OTgtMDgtMDEgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBjeWdudXMuY29tPgoKCSogZWxmMzItbWlwcy5jIChfYmZkX21pcHNfZWxmX3NlY3Rpb25fZnJvbV9zaGRyKTogRG9uJ3QgcGFzcwoJIi5saWJsaXN0IiBzdHJpbmcgdGhyb3VnaCBnZXR0ZXh0LgoKRnJpIEp1bCAzMSAxNjozODoxNCAxOTk4ICBDYXRoZXJpbmUgTW9vcmUgIDxjbG1AY3lnbnVzLmNvbT4KCgkqIE1ha2VmaWxlLmFtOiBBZGQgc3VwcG9ydCBmb3IgZWxmMzItYXJtLmxvLgoJKiBNYWtlZmlsZS5pbjogUmVidWlsZC4KCSogY29uZmlnLmJmZCAoYXJtLSotZWxmKTogIERlZmluZSB0YXJnX2RlZnZlYyBhbmQgdGFyZ19zZWx2ZWNzLgoJKHRodW1iLSotZWxmKTogRGVmaW5lIHRhcmdfZGVmdmVjIGFuZCB0YXJnX3NlbHZlY3MuCgkqIGNvbmZpZ3VyZS5pbjogIEhhbmRsZSBiZmRfZWxmMzJfbGl0dGxlYXJtX3ZlYyBhbmQgYmZkX2VsZjMyX2JpZ2FybV92ZWMuCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KCSogZWxmLmM6IChwcmVwX2hlYWRlcnMpOiAgU3VwcG9ydCBhcmNoX3R5cGUgb2YgRU1fQVJNLgoJKiB0YXJnZXRzLmM6ICBTdXBwb3J0IG5ldyB0YXJnZXRzIGJmZF9lbGYzMl9iaWdhcm1fdmVjIGFuZAoJYmZkX3RhcmdldCBiZmRfZWxmMzJfbGl0dGxlYXJtX3ZlYy4KCSogZWxmMzItYXJtLmM6ICBOZXcgZmlsZS4KClR1ZSBKdW4gMjggMTk6MDU6MjggMTk5OCAgU3RhbiBDb3ggIDxzY294QGN5Z251cy5jb20+CgoJKiBsaWJhb3V0LmggKE1fU1BBUkNMSVRFX0xFKTogTmV3IG1hY2hpbmUuCgkqIHN1bm9zLmMgKE1BQ0hUWVBFX09LKTogQWRkIG1hY2hpbmUgTV9TUEFSQ0xJVEVfTEUuCgkqIGFvdXRmMS5oIChzdW5vc19zZXRfYXJjaF9tYWNoKTogQWRkIG1hY2hpbmUgTV9TUEFSQ0xJVEVfTEUuCgkoc3Vub3Nfd3JpdGVfb2JqZWN0X2NvbnRlbnRzKTogQWRkIG1hY2hpbmUgYmZkX21hY2hfc3BhcmNfc3BhcmNsaXRlX2xlCgkqIGFvdXR4LmggKGhvd3RvX3RhYmxlX2V4dCk6IEFkZCByZWxvY2F0aW9uIFJfU1BBUkNfUkVWMzIuCgkoTkFNRShhb3V0LG1hY2hpbmVfdHlwZSkpIEFkZCBtYWNoaW5lIGJmZF9tYWNoX3NwYXJjX3NwYXJjbGl0ZV9sZQoJKGFvdXRfbGlua19pbnB1dF9zZWN0aW9uX2V4dCk6IEFkZCBSRUxPQ19TUEFSQ19SRVYzMiBzdXBwb3J0LgoJKiBlbGYzMi1zcGFyYy5jIChfYmZkX3NwYXJjX2VsZl9ob3d0b190YWJsZSwgc3BhcmNfcmVsb2NfbWFwLAoJZWxmMzJfc3BhcmNfcmVsb2NhdGVfc2VjdGlvbik6IFJlbmFtZSBSX1NQQVJDXzMyTEUgdG8gYmUgUl9TUEFSQ19SRVYzMgoJKiBsaWJiZmQuaCAoYmZkX3JlbG9jX2NvZGVfcmVhbF9uYW1lcyk6IFJlbmFtZSBCRkRfUkVMT0NfU1BBUkNfMzJMRSB0bwoJYmUgQkZEX1JFTE9DX1NQQVJDX1JFVjMyLgoJKiByZWxvYy5jOiBEaXR0by4KCSogY29uZmlnLmJmZCAoc3BhcmM4NngtKi1hb3V0KTogTmV3CgpGcmkgSnVsIDI0IDEzOjU0OjE5IDE5OTggIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQGN5Z251cy5jb20+CgoJKiBsaW5rZXIuYyAoX2JmZF9nZW5lcmljX2ZpbmFsX2xpbmspOiBBbGxvY2F0ZSBOVUxMIHN5bWJvbCBiZWZvcmUKCWFjdHVhbGx5IG1hcHBpbmcgdGhlIG91dHB1dCBzZWN0aW9ucy4KCkZyaSBKdWwgMjQgMTE6MjQ6MjkgMTk5OCAgSmVmZnJleSBBIExhdyAgKGxhd0BjeWdudXMuY29tKQoKCgkqIGVsZi1tMTAzMDAuYyAobW4xMDMwMF9lbGZfaG93dG8pOiBBZGQgUl9NTjEwMzAwXzI0IGVudHJ5LgoJKG1uMTAzMDBfZWxmX3JlbG9jX21hcCk6IFNpbWlsYXJseS4KCShtbjEwMzAwX2VsZl9maW5hbF9saW5rX3JlbG9jYXRlKTogSGFuZGxlIFJfTU4xMDMwMF8yNC4KCkZyaSBKdWwgMjQgMTI6MzY6MDQgMTk5OCAgSWFuIExhbmNlIFRheWxvciAgPGlhbkBjeWdudXMuY29tPgoKCSogZWxmMzItbWlwcy5jIChlbGZfbWlwc19ob3d0b190YWJsZSk6IEFkZCByZWxvYyB0eXBlcyB1c2VkIG9uCglJcml4IDYuCgkoYmZkX2VsZjMyX2JmZF9yZWxvY190eXBlX2xvb2t1cCk6IEFkZCBkZWZhdWx0IGNhc2UuCgkqIGVsZjY0LW1pcHMuYzogUmVwbGFjZSBhbGwgdXNlcyBvZiBtaXBzX2VsZjY0X3JlbG9jX3R5cGUgd2l0aAoJZWxmX21pcHNfcmVsb2NfdHlwZSBkZWZpbmVkIGluIGVsZi9taXBzLmguCgoxOTk4LTA3LTI0ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAY3lnbnVzLmNvbT4KCgkqIGVsZjY0LW1pcHMuYzogUmVtb3ZlIHJlbG9jX3R5cGUgZGVmaW5pdGlvbiBjb21wbGV0ZWx5LiAgSXQncyBub3cKCWluIGVsZi9taXBzLmguCgpUaHUgSnVsIDIzIDEzOjMzOjE5IDE5OTggIERvdWcgRXZhbnMgIDxkZXZhbnNAY2FudWNrLmN5Z251cy5jb20+CgoJKiBlbGY2NC1taXBzLmMgKG1pcHNfZWxmNjRfcmVsb2NfdHlwZSk6ICNpZiAwIG91dCBtb3JlIHJlbG9jYXRpb25zCglhcyB0aGV5IGFyZSBkZWZpbmVkIGluIGVsZi9taXBzLmggbm93LgoKVGh1IEp1bCAyMyAxMToyOTo0MyAxOTk4ICBKZWZmcmV5IEEgTGF3ICAobGF3QGN5Z251cy5jb20pCgoKCSogUmUtYWRkIGxvc3QgY2hhbmdlOgoJKiBlbGYtbTEwMzAwLmMgKGVsZjMyX21uMTAzMDBfbGlua19oYXNoX2VudHJ5KTogQWRkIG5ldyBmaWVsZAoJIm1vdm1fc3RhY2tfc2l6ZSIuCgkobW4xMDMwMF9lbGZfcmVsYXhfc2VjdGlvbik6IEluY2x1ZGUgc3RhY2sgc3BhY2UgZm9yIHJlZ2lzdGVyIHNhdmVzCglpbiB0aGUgaW1tOCBmaWVsZCBvZiBhICJjYWxsIiBpbnN0cnVjdGlvbi4KCShjb21wdXRlX2Z1bmN0aW9uX2luZm8pOiBEZXRlcm1pbmUgaG93IG11Y2ggc3RhY2sgaXMgYWxsb2NhdGVkIGJ5Cgl0aGUgbW92bSBpbnN0cnVjdGlvbi4gIEZpeCB0eXBvLgoJKGVsZjMyX21uMTAzMDBfbGlua19oYXNoX25ld2Z1bmMpOiBJbml0aWFsaXplIG1vdm1fc3RhY2tfc2l6ZS4KClRodSBKdWwgMjMgMTE6Mzg6MDUgMTk5OCAgSWFuIExhbmNlIFRheWxvciAgPGlhbkBjeWdudXMuY29tPgoKCSogZWxmMzItc3BhcmMuYyAoZWxmX2JhY2tlbmRfZ290X2hlYWRlcl9zaXplKTogRGVmaW5lIGFzIDQuCgkqIGVsZjY0LXNwYXJjLmMgKGVsZl9iYWNrZW5kX2dvdF9oZWFkZXJfc2l6ZSk6IERlZmluZSBhcyA4LgoKMTk5OC0wNy0yMiAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQGN5Z251cy5jb20+CgoJKiBlbGYzMi1wcGMuYzogQ2hhbmdlIHVzZSBvZiBwcF9yZWxvY190eXBlIHRvIGVsZl9wcGNfcmVsb2NfdHlwZS4KCldlZCBKdWwgMjIgMTY6Mjc6MTggMTk5OCAgTmljayBDbGlmdG9uICA8bmlja2NAY3lnbnVzLmNvbT4KCgkqIGVsZjMyLWhwcGEuaDogTGV0IEVMRiBoZWFkZXIgZGVmaW5lIHRoZSBlbnVtIGNvbnRhaW5pbmcgdGhlCglleHRlcm5hbCByZWxvYyBudW1iZXJzLgoJKiBlbGYzMi1pMzg2Lmg6IExpa2V3aXNlLgoKMTk5OC0wNy0yMiAxNDo1NyAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQGN5Z251cy5jb20+CgoJKiBlbGYtbTEwMzAwLmM6IExldCBFTEYgaGVhZGVyIG5vdyBkZWZpbmUgdGhlIG1hY3JvcyB0byBnZXQgdGhlIGVudW0uCgkqIGVsZjMyLW1pcHMuYzogTGlrZXdpc2UuCgkqIGVsZjMyLXBwYy5jOiBMaWtld2lzZS4KCldlZCBKdWwgMjIgMTM6NTM6NTIgMTk5OCAgTmljayBDbGlmdG9uICA8bmlja2NAY3lnbnVzLmNvbT4KCgkqIGJmZC1pbjIuaDogQ2hhbmdlIHR5cGUgb2YgJ2NsYXNzJyBwYXJhbWV0ZXIgdG8gJ3Vuc2lnbmVkIGludCcgaW4KCWJmZF9jb2ZmX3NldF9zeW1ib2xfY2xhc3MoKSwgaW4gb3JkZXIgdG8gYXZvaWQgSyZSIGNvbXBhdGFiaWxpdHkKCXByYmxlbXMuCgkqIGJmZC1pbi5oOiBSZWdlbmVyYXRlLgoJKiBjb2ZmZ2VuLmMgKGJmZF9jb2ZmX3NldF9zeW1ib2xfY2xhc3MpOiBDaGFuZ2UgdHlwZSBvZiAnY2xhc3MnCglwYXJhbWV0ZXIgdG8gJ3Vuc2lnbmVkIGludCcgdG8gYXZvaWQgSyZSIGNvbXBhdGFiaWxpdHkgcHJvYmxlbXMuCgpXZWQgSnVsIDIyIDE2OjQzOjI0IDE5OTggIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5AY3lnbnVzLmNvbT4KCgkqIGllZWUuYyAoaWVlZV9maW5kX25lYXJlc3RfbGluZSk6IENoYW5nZSBmaWxlbmFtZV9wdHIgYW5kCglmdW5jdGlvbm5hbWVfcHRyIHRvIGJlIGNvbnN0LiAgQ2hhbmdlIGxpbmVfcHRyIHRvIGJlIHVuc2lnbmVkLgoKCSogY29mZmNvZGUuaCAoY29mZl9saW5rX291dHB1dF9oYXNfYmVndW4pOiBTaW1wbGlmeSBoYW5kbGluZyB3aGVuCgltYWNybyBpcyBub3QgZGVmaW5lZC4gIENoYW5nZSBzZWNvbmQgcGFyYW1ldGVyIGZyb20gYmZkX2xpbmtfaW5mbwoJdG8gY29mZl9maW5hbF9saW5rX2luZm8uICBBZGQgcHJvdG90eXBlLgoJKGNvZmZfZmluYWxfbGlua19wb3N0c2NyaXB0KTogU2ltcGxpZnkgaGFuZGxpbmcgd2hlbiBtYWNybyBpcyBub3QKCWRlZmluZWQuICBBZGQgcHJvdG90eXBlLgoKMTk5OC0wNy0yMiAxMzowOCAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQGN5Z251cy5jb20+CgoJKiBlbGYtbW4xMDMwMC5jOiBCZWZvcmUgaW5jbHVkZSBzeXN0ZW0gc3BlY2lmaWMgRUxGIGhlYWRlciBkZWZpbmUKCVNUQVJUX1JFTE9DX05VTUJFUlMsIFJFTE9DX05VTUJFUiwgYW5kIEVORF9SRUxPQ19OVU1CRVJTLgoJKiBlbGYzMi1taXBzLmM6IExpa2V3aXNlLgoJKiBlbGYzMi1wcGMuYzogTGlrZXdpc2UuCgpXZWQgSnVsIDIyIDEzOjQ2OjUxIDE5OTggIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5AY3lnbnVzLmNvbT4KCgkqIGVsZjY0LW1pcHMuYyAobWlwc19lbGY2NF9yZWxvY190eXBlKTogQ29weSBVbHJpY2gncyBlbGYzMi1taXBzLmMKCXRlbXBvcmFyeSBwYXRjaCBvdmVyIHRvIGVsZjY0LW1pcHMuYyBhcyB3ZWxsLgoKMTk5OC0wNy0yMSAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQGN5Z251cy5jb20+CgoJKiBlbGYzMi1taXBzLmMgKHJlbG9jX3R5cGUpOiBUZW1wb3JhcmlseSBkaXNhYmxlIGRlZmluaXRpb24gb2YKCXN0YW5kYXJkIHJlbG9jYXRpb24gc2luY2UgdGhleSBhcmUgbm93IGRlZmluZWQgaW4gZWxmL21pcHMuaC4KClR1ZSBKdWwgMjEgMDk6NDc6MDAgMTk5OCAgQ2F0aGVyaW5lIE1vb3JlICA8Y2xtQGN5Z251cy5jb20+CgoJKiBlbGYtbTEwMjAwLmMgKG1uMTAyMDBfZWxmX2ZpbmFsX2xpbmtfcmVsb2NhdGUpOgoJTW9kaWZ5IHJhbmdlIHRlc3QgZm9yIGNhc2UgUl9NTjEwMjAwXzguCgoJKiBlbGYtbTEwMzAwLmMgKG1uMTAzMDBfZWxmX2ZpbmFsX2xpbmtfcmVsb2NhdGUpOgoJTW9kaWZ5IHJhbmdlIHRlc3QgZm9yIGNhc2UgUl9NTjEwMzAwXzguCgpNb24gSnVsIDIwIDE4OjUwOjU0IDE5OTggIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBlbGYtYmZkLmggKHN0cnVjdCBlbGZfYmFja2VuZF9kYXRhKTogQWRkIGdvdF8gJiBwbHRfaGVhZGVyX3NpemUuCgkqIGVsZjMyLWkzODYuYyAoZWxmX2JhY2tlbmRfZ290X2hlYWRlcl9zaXplKTogRGVmaW5lLgoJKGVsZl9iYWNrZW5kX3BsdF9oZWFkZXJfc2l6ZSk6IERlZmluZS4KCSogZWxmMzItbTY4ay5jLCBlbGYzMi1taXBzLmMsIGVsZjMyLXBwYy5jOiBMaWtld2lzZS4KCSogZWxmMzItc3BhcmMuYywgZWxmNjQtYWxwaGEuYywgZWxmNjQtc3BhcmMuYzogTGlrZXdpc2UuCgkqIGVsZnh4LXRhcmdldC5oOiBQcm92aWRlIGEgZGVmYXVsdCBvZiB6ZXJvLgoJKiBlbGZsaW5rLmMgKF9iZmRfZWxmX2NyZWF0ZV9nb3Rfc2VjdGlvbik6IFVzZSBnb3RfaGVhZGVyX3NpemUuCgkqIGVsZmxpbmsuaCAoZWxmX2djX2NvbW1vbl9maW5hbGl6ZV9nb3Rfb2Zmc2V0cyk6IExpa2V3aXNlLgoKCSogZWxmMzItcHBjLmMgKHBwY19lbGZfYWRqdXN0X2R5bmFtaWNfc3ltYm9sKTogRG9uJ3QgcmVtb3ZlIGEgUExUCgllbnRyeSBmcm9tIGFuIGV4ZWN1dGFibGUsIGV2ZW4gaWYgdGhlIHBsdCByZWZjb3VudCBnb2VzIHRvIDAuCgpNb24gSnVsIDIwIDEyOjQ3OjI2IDE5OTggIEFuZHJlYXMgU2Nod2FiICA8c2Nod2FiQGlzc2FuLmluZm9ybWF0aWsudW5pLWRvcnRtdW5kLmRlPgoKCSogYW91dHguaCAoTkFNRShhb3V0LGZpbmRfbmVhcmVzdF9saW5lKSk6IEFsc28gcmVtZW1iZXIgdGhlCglkaXJlY3RvcnkgbmFtZSBhdCB0aGUgbGluZSBudW1iZXIuCgoJKiBlbGYuYyAoX2JmZF9lbGZfZmluZF9uZWFyZXN0X2xpbmUpOiBBbHNvIGNvbnNpZGVyIHN5bWJvbHMKCXdpdGggYW4gdW5zcGVjaWZpZWQgdHlwZS4KCldlZCBKdWwgMTUgMTE6MjA6MDEgMTk5OCAgSWFuIExhbmNlIFRheWxvciAgPGlhbkBjeWdudXMuY29tPgoKCSogc3Vub3MuYzogQWRkIHVuZGVmIG9mIHZhbGlkIHRvIGF2b2lkIHByb2JsZW0gb24gU3VuT1MuCgpUdWUgSnVsIDE0IDE1OjMwOjU5IDE5OTggIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBjb25maWcuYmZkIChpPzg2LXBjLWJlb3N7cGUsZWxmLH0qKTogUmVjb2duaXplLgoKVHVlIEp1bCAxNCAxMToyMjoyMSAxOTk4ICBBbmRyZWFzIFNjaHdhYiAgPHNjaHdhYkBpc3Nhbi5pbmZvcm1hdGlrLnVuaS1kb3J0bXVuZC5kZT4KCgkqIGVsZjMyLW02OGsuYyAoZWxmX202OGtfY2hlY2tfcmVsb2NzKTogQWxzbyByZWZlcmVuY2UgY291bnQKCVJfNjhLX1BDeHggYW5kIFJfNjhLX3h4IHJlbG9jYXRpb25zLiAgTWFrZSBzdXJlIHRoYXQKCUVMRl9MSU5LX0hBU0hfTkVFRFNfUExUIGlzIGFsd2F5cyBzZXQgZm9yIGEgUExUIHJlbG9jIHJlZmVyZW5jZS4KCShlbGZfbTY4a19nY19zd2VlcF9ob29rKTogQWxzbyByZWZlcmVuY2UgY291bnQgUl82OEtfUEN4eCBhbmQKCVJfNjhLX3h4IHJlbG9jYXRpb25zLgoJKGVsZl9tNjhrX2FkanVzdF9keW5hbWljX3N5bWJvbCk6IFJlc2V0IHRoZSBwbHQgb2Zmc2V0IG9mIGEgc3ltYm9sCgl0aGF0IGhhcyBubyBwbHQgZW50cnkuCgkoZWxmX202OGtfcmVsb2NhdGVfc2VjdGlvbik6IElnbm9yZSB0aGUgcGx0IG9mZnNldCBpbiBhIHN0YXRpYwoJbGluay4KCSogZWxmbGluay5oIChlbGZfYWRqdXN0X2R5bmFtaWNfc3ltYm9sKTogUmVzZXQgdGhlIHBsdCBvZmZzZXQgZm9yCglhbiBpZ25vcmVkIHN5bWJvbC4KCShlbGZfZ2NfY29tbW9uX2ZpbmFsaXplX2dvdF9vZmZzZXRzKTogU2V0IHRoZSBnb3Qgb2Zmc2V0cyBhbHNvIGluCglhIHN0YXRpYyBsaW5rLgoKCSogZWxmMzItbTY4ay5jIChSXzY4S19HTlVfVlRJTkhFUklULCBSXzY4S19HTlVfVlRFTlRSWSk6IE5ldyByZWxvYwoJdHlwZXMuCgkoaG93dG9fdGFibGUsIHJlbG9jX21hcCk6IEFkZCBlbnRyaWVzIGZvciB0aGVtLgoJKGVsZl9tNjhrX2NoZWNrX3JlbG9jcyk6IEhhbmRsZSB0aGVtLiAgSW1wbGVtZW50IHJlZmVyZW5jZQoJY291bnRpbmcgZm9yIGdvdCBhbmQgcGx0IGVudHJpZXMuCgkoZWxmX202OGtfZ2NfbWFya19ob29rLCBlbGZfbTY4a19nY19zd2VlcF9ob29rKTogTmV3IGZ1bmN0aW9ucy4KCShlbGZfbTY4a19hZGp1c3RfZHluYW1pY19zeW1ib2wpOiBIYW5kbGUgdW5yZWZlcmVuY2VkIHBsdAoJc3ltYm9scy4KCShydHlwZV90b19ob3d0b19yZWwsIGVsZl9pbmZvX3RvX2hvd3RvX3JlbCk6IERlbGV0ZS4KCShlbGZfbTY4a19yZWxvY2F0ZV9zZWN0aW9uKTogSGFuZGxlIHRoZSBuZXcgcmVsb2MgdHlwZXMuCgkoYmZkX2VsZjMyX2JmZF9maW5hbF9saW5rLCBlbGZfYmFja2VuZF9nY19tYXJrX2hvb2ssCgllbGZfYmFja2VuZF9nY19zd2VlcF9ob29rLCBlbGZfYmFja2VuZF9jYW5fZ2Nfc2VjdGlvbnMpOiBEZWZpbmUuCgkqIGVsZmxpbmsuaCAoZWxmX2xpbmtfYWRkX29iamVjdF9zeW1ib2xzKTogV2hlbiBjcmVhdGluZyBhbgoJaW5kaXJlY3QgcmVmZXJlbmNlIGZvciBzeW1ib2wgdmVyc2lvbmluZyBhbHNvIGNvcHkgdGhlIHBsdAoJb2Zmc2V0LgoJKGVsZl9maXhfc3ltYm9sX2ZsYWdzKTogV2hlbiBjbGVhcmluZyB0aGUgRUxGX0xJTktfSEFTSF9ORUVEU19QTFQKCWZsYWcgYWxzbyByZXNldCB0aGUgcGx0IG9mZnNldC4KCShlbGZfbGlua19hc3NpZ25fc3ltX3ZlcnNpb24pOiBMaWtld2lzZS4KCShlbGZfZ2NfY29tbW9uX2ZpbmFsaXplX2dvdF9vZmZzZXRzKTogSW5jcmVtZW50IHRoZSBnb3Qgb2Zmc2V0IGJ5Cgl0aGUgc2l6ZSBvZiB0aGUgZW50cnkgaW4gYnl0ZXMuCgkoZWxmX2djX2FsbG9jYXRlX2dvdF9vZmZzZXRzKTogTGlrZXdpc2UuCgpUdWUgSnVsIDE0IDExOjE4OjE0IDE5OTggIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5AY3lnbnVzLmNvbT4KCgkqIGVsZmxpbmsuaCAoZWxmX2djX3NlY3Rpb25zKTogUmV0dXJuIHRydWUgcmF0aGVyIHRoYW4gZmFsbGluZyBvZmYKCXRoZSBib3R0b20uCgoJKiBjb2ZmZ2VuLmMgKGJmZF9jb2ZmX3NldF9zeW1ib2xfY2xhc3MpOiBDYWxsIGJmZF9hbGxvYywgbm90Cgl4bWFsbG9jLgoKTW9uIEp1bCAxMyAxMTowNjozMSAxOTk4ICBOaWNrIENsaWZ0b24gIDxuaWNrY0BjeWdudXMuY29tPgoKCSogY29mZi1hcm0uYzogU3VwcmVzcyBkZWZpbml0aW9uIG9mIFRBUkdFVF9VTkRFUlNDT1JFIGFuZCBhZGQgYQoJY29tbWVudCBkZXNjcmliaW5nIHdoZW4gaXQgc2hvdWxkIGJlIGVuYWJsZWQuCglDaGFuZ2VkIGRlZmluaXRpb24gb2YgVVNFUl9MQUJFTF9QUkVGSVggdG8gIiIsIHRvIGZhbGwgaW50byBsaW5lCgl3aXRoIEdDQyBzb3VyY2VzLgoKTW9uIEp1bCAxMyAxMzowNjo1NCAxOTk4ICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQGN5Z251cy5jb20+CgoJKiBpZWVlLmMgKGllZWVfc2x1cnBfZXh0ZXJuYWxfc3ltYm9scyk6IEhhbmRsZSBjYWxsIG9wdGltaXphdGlvbgoJaW5mb3JtYXRpb24gQVROIHJlY29yZHMuCgpGcmkgSnVsIDEwIDE2OjMxOjA2IDE5OTggIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5AY3lnbnVzLmNvbT4KCgkqIGllZWUuYyAoaWVlZV9zbHVycF9leHRlcm5hbF9zeW1ib2xzKTogU2VsZWN0IGFuIGFwcHJvcHJpYXRlCglzZWN0aW9uIGZvciBhbiBhYnNvbHV0ZSBzeW1ib2wgaW4gYSBmdWxseSBsaW5rZWQgZmlsZS4gIEJhc2VkIG9uCglwYXRjaCBmcm9tIENocmlzdGlhbiBIb2xsYW5kIDxDSG9sbGFuZEBkZS5sdWNlbnQuY29tPi4KCldlZCBKdWwgIDggMTE6Mjk6NTYgMTk5OCAgTWFuZnJlZCBIb2xsc3RlaW4gIDxtYW5mcmVkQHMtZGlyZWt0bmV0LmRlPgoKCSogY29mZi1tODhrLmMgKG04OGtfc3BlY2lhbF9yZWxvYyk6IERvbid0IGxvc2UgdGhlIGluZm9ybWF0aW9uCgl0aGF0IGEgc3ltYm9sIGlzIHVuZGVmaW5lZC4KClR1ZSBKdWwgIDcgMjE6NDc6MDIgMTk5OCAgSmVmZnJleSBBIExhdyAgKGxhd0BjeWdudXMuY29tKQoKCSogc29tLmMgKHNvbV9iZmRfZ2Nfc2VjdGlvbnMpOiBEZWZpbmUuCgpNb24gSnVsICA2IDExOjM1OjUwIDE5OTggIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQGN5Z251cy5jb20+CgoJKiBjb2ZmLWFybS5jIChhb3V0YXJtX3N0ZF9yZWxvY19ob3d0byk6IERvIG5vdCBjb21wbGFpbiBhYm91dAoJb3ZlcmZsb3dzIGluIEFSTV8yNkQgcGF0Y2hlcywgc2luY2UgdGhleSBoYXZlIGFscmVhZHkgYmVlbgoJaW1wbG1lbnRlZC4gIFBhdGNoIHN1Ym1pdHRlZCBieSBEci4gUi5KLiBCbGFjayA8cmpiQGRjcy5nbGEuYWMudWs+CgpTYXQgSnVsICA0IDEyOjI1OjM2IDE5OTggIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5AY3lnbnVzLmNvbT4KCgkqIGNvZmZjb2RlLmggKGNvZmZfd3JpdGVfb2JqZWN0X2NvbnRlbnRzKTogSWYgd2UgaGF2ZSBhbnkgbG9uZwoJc2VjdGlvbiBuYW1lcywgY2FsbCBjb2ZmX3dyaXRlX3N5bWJvbHMgZXZlbiBpZiB0aGVyZSBhcmUgbm8KCXN5bWJvbHMuCgpGcmkgSnVsICAzIDEzOjExOjM1IDE5OTggIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5AY3lnbnVzLmNvbT4KCgkqIGVsZi5jIChjb3B5X3ByaXZhdGVfYmZkX2RhdGEpOiBPbmx5IHNldCBwaGRyX2luY2x1ZGVkIG9uY2UgZm9yIGEKCVBUX0xPQUQgc2VnbWVudCwgcmF0aGVyIHRoYW4gb25seSBzZXR0aW5nIGl0IG9uY2UgZm9yIHRoZSBlbnRpcmUKCWZpbGUuCgoJKiBlbGYuYyAoX2JmZF9lbGZfbWFrZV9zZWN0aW9uX2Zyb21fc2hkcik6IFdoZW4gc2V0dGluZyB0aGUgTE1BLAoJcmF0aGVyIHRoYW4gaWdub3JpbmcgZXZlcnkgcGhkciB3aXRoIGEgcF9wYWRkciBvZiAwLCBpZ25vcmUgYWxsCgl0aGUgcGhkcnMgaWYgdGhleSBhbGwgaGF2ZSBhIHBfcGFkZHIgb2YgMC4KCgkqIHN0YWJzLmMgKF9iZmRfd3JpdGVfc3RhYl9zdHJpbmdzKTogQ2hlY2sgd2hldGhlciB0aGUgLnN0YWJzdHIKCXNlY3Rpb24gd2FzIGRpc2NhcmRlZCBmcm9tIHRoZSBsaW5rLgoKRnJpIEp1bCAgMyAxNDozOTowNSAxOTk4ICBKIm9ybiBSZW5uZWNrZSA8YW15bGFhckBjeWdudXMuY28udWs+CgoJKiBjb2ZmLXNoLmMgKHNoX2luc25fdXNlc19mcmVnKTogSWdub3JlIGxvd2VzdCBiaXQgb2YgcmVnaXN0ZXIgbnVtYmVyLgoKRnJpIEp1bCAgMyAxNDozNTo0OCAxOTk4ICBKIm9ybiBSZW5uZWNrZSA8YW15bGFhckBjeWdudXMuY28udWs+CgoJKiBjb2ZmLXNoLmMgKHNoX2luc25zX2NvbmZsaWN0KTogTG9hZCBvZiBmcHNjciBjb25mbGljdHMgd2l0aAoJZmxvYXRpbmcgcG9pbnQgb3BlcmF0aW9ucy4KClRodSBKdWwgIDIgMTg6Mzc6MjUgMTk5OCAgSWFuIExhbmNlIFRheWxvciAgPGlhbkBjeWdudXMuY29tPgoKCSogY29mZmxpbmsuYyAoX2JmZF9jb2ZmX2xpbmtfaW5wdXRfYmZkKTogU2tpcCB1bmRlZmluZWQgZ2xvYmFsCglmdW5jdGlvbiBzeW1ib2xzLgoKVGh1IEp1bCAgMiAxNDo1OTo0MiAxOTk4ICBLbGF1cyBLYWVtcGYgIDxra2FlbXBmQHJtaS5kZT4KCglNZXJnZSBvZiB2YXgvdm1zIChyZWFkLW9ubHkpIHN1cHBvcnQKCSogY29uZmlndXJlLmNvbTogU3VwcG9ydCBWYXggdGFyZ2V0LgoJKiBtYWtlZmlsZS52bXM6IFN1cHBvcnQgVmF4IHRhcmdldC4KCSogdm1zLmg6IFJlbmFtZWQgZnJvbSBldmF4LmgsIG1lcmdlZCB2YXgvdm1zIChyZWFkLW9ubHkpIHN1cHBvcnQuCgkqIHZtcy5jOiBSZW5hbWVkIGZyb20gZXZheC1hbHBoYS5jLCBtZXJnZWQgdmF4L3ZtcyAocmVhZC1vbmx5KQoJc3VwcG9ydC4KCSogdm1zLWhkci5jOiBSZW5hbWVkIGZyb20gZXZheC1lbWguYywgbWVyZ2VkIHZheC92bXMgKHJlYWQtb25seSkKCXN1cHBvcnQuCgkqIHZtcy1nc2QuYzogUmVuYW1lZCBmcm9tIGV2YXgtZWdzZC5jLCBtZXJnZWQgdmF4L3ZtcyAocmVhZC1vbmx5KQoJc3VwcG9ydC4KCSogdm1zLXRpci5jOiBSZW5hbWVkIGZyb20gZXZheC1ldGlyLmMsIG1lcmdlZCB2YXgvdm1zIChyZWFkLW9ubHkpCglzdXBwb3J0LgoJKiB2bXMtbWlzYy5jOiBSZW5hbWVkIGZyb20gZXZheC1taXNjLmMsIG1lcmdlZCB2YXgvdm1zIChyZWFkLW9ubHkpCglzdXBwb3J0LgoJKiBsaWJiZmQuYyAocmVhbF9yZWFkKTogVXNlIHVuYnVmZmVyZWQgcmVhZCBvbiBWTVMvVmF4LgoJKiB0YXJnZXRzLmMgKGJmZF90YXJnZXRfb3ZheF9mbGF2b3VyKTogTmV3IGZsYXZvdXIuCgkodm1zX2FscGhhX3ZlYyk6IFJlbmFtZWQgZnJvbSBldmF4X2FscGhhX3ZlYy4KCSh2bXNfdmF4X3ZlYyk6IE5ldy4KCSh0YXJnZXRfdmVjdG9yKTogVXBkYXRlIGFjY29yZGluZ2x5LgoJKiBjb25maWcuYmZkIChhbHBoYSotKi0qdm1zKik6IFVzZSB2bXNfYWxwaGFfdmVjLCBub3QKCWV2YXhfYWxwaGFfdmVjLgoJKHZheCotKi0qdm1zKik6IE5ldyB0YXJnZXQuCgkqIE1ha2VmaWxlLmFtOiBVcGRhdGUgZm9yIHJlbmFtZWQgZmlsZXMuICBSZWJ1aWxkIGRlcGVuZGVuY2llcy4KCSogYmZkLWluMi5oOiBSZWJ1aWxkLgoJKiBjb25maWd1cmUuaW4sIE1ha2VmaWxlLmluLCBhY2xvY2FsLm00OiBSZWJ1aWxkLgoKVGh1IEp1bCAgMiAxMzozMTo1NSAxOTk4ICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQGN5Z251cy5jb20+CgoJQmFzZWQgb24gcGF0Y2ggZnJvbSBNYXR0IFNlbWVyc2t5IDxtYXR0c0BzY2QuaHAuY29tPjoKCSogbGlua2VyLmMgKF9iZmRfZ2VuZXJpY19maW5hbF9saW5rKTogRm9yY2UgYSB0cmFpbGluZyBOVUxMCglwb2ludGVyIG9uIGFiZmQtPm91dHN5bWJvbHMuCgkoZ2VuZXJpY19hZGRfb3V0cHV0X3N5bWJvbCk6IEhhbmRsZSBOVUxMIHN5bSBwYXJhbWV0ZXIuCgpXZWQgSnVsICAxIDE3OjA1OjUzIDE5OTggIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQGN5Z251cy5jb20+CgoJKiBlbGYuYyAoY29weV9wcml2YXRlX2JmZF9kYXRhKTogQWRkIHN1cHBvcnQgZm9yIGNoYW5naW5nIFZNQSBvcgoJTE1BIG9mIHNlY3Rpb25zLgoKV2VkIEp1bCAgMSAxNjo1ODo1MCAxOTk4ICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQGN5Z251cy5jb20+CgoJKiBjb2ZmLXNoLmMgKHNoX3JlbGF4X2RlbGV0ZV9ieXRlcyk6IENvcnJlY3QgYWRkcmVzcyBjb21wYXJpc29ucwoJd2hlbiBoYW5kbGluZyAzMiBiaXQgaW1tZWRpYXRlIHJlbG9jcy4KCSogZWxmMzItc2guYyAoc2hfZWxmX3JlbGF4X2RlbGV0ZV9ieXRlcyk6IExpa2V3aXNlLgoKVHVlIEp1biAzMCAwOTo1NTowMyAxOTk4ICBKZWZmcmV5IEEgTGF3ICAobGF3QGN5Z251cy5jb20pCgoJKiBzZWN0aW9uLmMgKFNURF9TRUNUSU9OKTogQWNjb3VudCBmb3IgcmVjZW50bHkgYWRkZWQgZ2NfbWFyawoJZmllbGQgaW4gc3RydWN0IGFzZWN0aW9uLgoKCSogZWxmLW0xMDMwMC5jIChiZmRfbW4xMDMwMF9lbGZfbWVyZ2VfcHJpdmF0ZV9iZmRfZGF0YSk6IE5ldyBmdW5jdGlvbi4KCShiZmRfZWxmMzJfYmZkX21lcmdlX3ByaXZhdGVfYmZkX2RhdGEpOiBEZWZpbmUuCgpUaHUgSnVuIDI1IDE4OjMxOjQxIDE5OTggIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJRUxGIFNlY3Rpb24tbGV2ZWwgR2FyYmFnZSBDb2xsZWN0aW9uOgoJKiBiZmQuYyAoYmZkX2djX3NlY3Rpb25zKTogTmV3LgoJKiBhb3V0LWFkb2JlLmM6IEhvb2sgdG8gZGVmYXVsdCBpbXBsZW1lbnRhdGlvbi4KCSogYW91dC10YXJnZXQuaCwgYW91dC10aWMzMC5jLCBiaW5hcnkuYywgYm91dC5jOiBMaWtld2lzZS4KCSogY29mZi1hbHBoYS5jLCBjb2ZmLW1pcHMuYywgY29mZi1yczYwMDAuYywgY29mZmNvZGUuaDogTGlrZXdpc2UuCgkqIGV2YXgtYWxwaGEuYywgaTM4Nm1zZG9zLmMsIGkzODZvczlrLmMsIGllZWUuYzogTGlrZXdpc2UuCgkqIGloZXguYywgbmxtLXRhcmdldC5oLCBvYXN5cy5jLCBwcGNib290LmMsIHNyZWMuYzogTGlrZXdpc2UuCgkqIHRla2hleC5jLCB2ZXJzYWRvcy5jOiBMaWtld2lzZS4KCSogbGliYmZkLWluLmggKF9iZmRfbm9saW5rX2JmZF9nY19zZWN0aW9ucyk6IE5ldy4KCSogdGFyZ2V0cy5jIChCRkRfSlVNUF9UQUJMRV9MSU5LKTogQWRkIF9iZmRfZ2Nfc2VjdGlvbnMuCgoJKiByZWxvYy5jIChCRkRfUkVMT0NfVlRBQkxFX0lOSEVSSVQsIEJGRF9SRUxPQ19WVEFCTEVfRU5UUlkpOiBOZXcuCgkoYmZkX2dlbmVyaWNfZ2Nfc2VjdGlvbnMpOiBOZXcuCgkqIHNlY3Rpb24uYyAoU0VDX0tFRVApOiBOZXcuCgkoYXNlY3Rpb24pOiBBZGQgZ2NfbWFyayBtZW1iZXIuCgoJKiBlbGZjb2RlLmggKGVsZl9nYyopOiBOZXcgbmFtZSByZW1hcHBpbmdzLgoJKiBlbGZsaW5rLmggKGVsZl9saW5rX2lucHV0X2JmZCk6IERvbid0IHNldCBjb250ZW50cyBvbiBzdGFicwoJc2VjdGlvbnMgdG8gYmUgZXhjbHVkZWQuCgkoZWxmX2djX21hcmssIGVsZl9nY19zd2VlcCwgZWxmX2djX3N3ZWVwX3N5bWJvbCk6IE5ldy4KCShlbGZfZ2NfcHJvcG9nYXRlX3Z0YWJsZV9lbnRyaWVzX3VzZWQpOiBOZXcuCgkoZWxmX2djX3NtYXNoX3VudXNlZF92dGVudHJ5X3JlbG9jcyk6IE5ldy4KCShlbGZfZ2Nfc2VjdGlvbnMsIGVsZl9nY19yZWNvcmRfdnRpbmhlcml0LCBlbGZfZ2NfcmVjb3JkX3Z0ZW50cnkpOiBOZXcuCgkoZWxmX2djX2NvbW1vbl9maW5hbGl6ZV9nb3Rfb2Zmc2V0cyk6IE5ldy4KCShlbGZfZ2NfYWxsb2NhdGVfZ290X29mZnNldHMsIGVsZl9nY19jb21tb25fZmluYWxfbGluayk6IE5ldy4KCSogZWxmeHgtdGFyZ2V0Lmg6IEFkZCBhbmQgZGVmYXVsdCBnYyBob29rcy4KCgkqIGVsZi1iZmQuaCAoc3RydWN0IGVsZl9saW5rX2hhc2hfZW50cnkpOiBTd2FwIGdvdF9vZmZzZXQvcGx0X29mZnNldAoJZm9yIHVuaW9ucy4KCShzdHJ1Y3QgZWxmX29ial90ZGF0YSk6IExpa2V3aXNlIGZvciBsb2NhbF9nb3Rfb2Zmc2V0cy4KCSogZWxmLmMsIGVsZi1pMzg2LmMsIGVsZjMyLW02OGsuYywgZWxmMzItbWlwcy5jOiBVcGRhdGUgYWxsIHVzZXMuCgkqIGVsZjMyLXBwYy5jLCBlbGYzMi1zcGFyYy5jLCBlbGY2NC1hbHBoYS5jOiBMaWtld2lzZS4KCSogZWxmNjQtc3BhcmMuYywgZWxmbGluay5oOiBMaWtld2lzZS4KCgkqIGVsZi1iZmQuaCAoc3RydWN0IGVsZl9saW5rX2hhc2hfZW50cnkpOiBBZGQgdnRhYmxlIG1lbWJlcnMuCgkoRUxGX0xJTktfSEFTSF9NQVJLKTogRGVmaW5lLgoJKHN0cnVjdCBlbGZfYmFja2VuZF9kYXRhKTogQWRkIEdDIGhvb2tzLgoJKiBlbGYuYyAoX2JmZF9lbGZfbGlua19oYXNoX25ld2Z1bmMpOiBaZXJvIHZ0YWJsZSBtZW1iZXJzLgoKCSogZWxmLW0xMDMwMC5jIChtbjEwMzAwX2VsZl9jaGVja19yZWxvY3MpOiBOZXcuCgkobW4xMDMwMF9lbGZfZ2NfbWFya19ob29rKTogTmV3LgoJKFJfTU4xMDMwMF9HTlVfVlRJTkhFUklULCBSX01OMTAzMDBfR05VX1ZURU5UUlkpOiBOZXcuCgkoZWxmX21uMTAzMDBfaG93dG8sIG1uMTAzMDBfcmVsb2NfbWFwKTogSGFuZGxlIHRoZW0uCgkobW4xMDMwMF9lbGZfZmluYWxfbGlua19yZWxvY2F0ZSk6IExpa2V3aXNlLgoJKG1uMTAzMDBfZWxmX3JlbG9jYXRlX3NlY3Rpb24pOiBMaWtld2lzZS4KCShlbGZfYmFja2VuZF9jYW5fZ2Nfc2VjdGlvbnMpOiBEZWZpbmUuCgkqIGVsZjMyLW1pcHMuYyAoUl9NSVBTX0dOVV9WVElOSEVSSVQsIFJfTUlQU19HTlVfVlRFTlRSWSk6IE5ldy4KCShlbGZfbWlwc19nbnVfdnRpbmhlcml0X2hvd3RvLCBlbGZfbWlwc19nbnVfdnRlbnRyeV9ob3d0byk6IE5ldy4KCShiZmRfZWxmMzJfYmZkX3JlbG9jX3R5cGVfbG9va3VwKTogSGFuZGxlIHRoZW0uCgkobWlwc19pbmZvX3RvX2hvd3RvX3JlbCk6IExpa2V3aXNlLgoJKG1pcHNfZWxmX3JlbG9jYXRlX3NlY3Rpb24pOiBMaWtld2lzZS4KCShtaXBzX2VsZl9jaGVja19yZWxvY3MpOiBMaWtld2lzZS4KCShtaXBzX2VsZl9nY19tYXJrX2hvb2ssIG1pcHNfZWxmX2djX3N3ZWVwX2hvb2spOiBOZXcuCgkoZWxmX2JhY2tlbmRfY2FuX2djX3NlY3Rpb25zKTogRGVmaW5lLgoJKiBlbGYzMi1wcGMuYyAoUl9QUENfR05VX1ZUSU5IRVJJVCwgUl9QUENfR05VX1ZURU5UUlkpOiBOZXcuCgkocHBjX2VsZl9ob3d0b19yYXcpOiBIYW5kbGUgdGhlbS4KCShwcGNfZWxmX3JlbG9jX3R5cGVfbG9va3VwKTogTGlrZXdpc2UuCgkocHBjX2VsZl9yZWxvY2F0ZV9zZWN0aW9uKTogTGlrZXdpc2UuCgkocHBjX2VsZl9jaGVja19yZWxvY3MpOiBSZWZlcmVuY2UgY291bnQgLmdvdCBhbmQgLnBsdCBlbnRyaWVzLgoJSGFuZGxlIG5ldyB2dGFibGUgcmVsb2NzLgoJKHBwY19lbGZfYWRqdXN0X2R5bmFtaWNfc3ltYm9sKTogUmVjb2duaXplIHVudXNlZCAucGx0IGVudHJpZXMuCgkocHBjX2VsZl9nY19tYXJrX2hvb2ssIHBwY19lbGZfZ2Nfc3dlZXBfaG9vayk6IE5ldy4KCShlbGZfYmFja2VuZF9jYW5fZ2Nfc2VjdGlvbnMpOiBEZWZpbmUuCgpGcmkgSnVuIDI2IDEwOjQ4OjIzIDE5OTggIEplZmZyZXkgQSBMYXcgIChsYXdAY3lnbnVzLmNvbSkKCgkqIGFyY2h1cmVzLmMgKGJmZF9tYWNoX21uMTAzMDApOiBEZWZpbmUuCgkqIGVsZi1tMTAzMDAuYzogSW5jbHVkZSBlbGYvbW4xMDMwMC5oCgkoZWxmX21uMTAzMDBfbWFjaCk6IE5ldyBmdW5jdGlvbi4KCShfYmZkX21uMTAzMDBfZWxmX2ZpbmFsX3dyaXRlX3Byb2Nlc3NpbmcpOiBMaWtld2lzZS4KCShfYmZkX21uMTAzMDBfZWxmX29iamVjdF9wKTogTGlrZXdpc2UuCgkoZWxmX2JhY2tlbmRmaW5hbF93cml0ZV9wcm9jZXNzaW5nKTogRGVmaW5lLgoJKGVsZl9iYWNrZW5kX29iamVjdF9wKTogTGlrZXdpc2UuCgpUaHUgSnVuIDI1IDE4OjMxOjA4IDE5OTggIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQGN5Z251cy5jb20+CgoJKiBlbGYzMi12ODUwLmMgKHY4NTBfZWxmX3BlcmZvcm1fcmVsb2NhdGlvbik6IEZpeCBISTE2X1MKCXJlbG9jYXRpb24uCgpXZWQgSnVuIDI0IDE3OjE3OjU3IDE5OTggIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5AY3lnbnVzLmNvbT4KCgkqIGVsZmxpbmsuaCAoZWxmX2JmZF9maW5hbF9saW5rKTogTG9vcCBvdmVyIGlucHV0X2JmZHMgdXNpbmcgdGhlCglsaW5rX25leHQgZmllbGQsIG5vdCB0aGUgbmV4dCBmaWVsZC4KClN1biBKdW4gMjEgMTk6Mzg6MzkgMTk5OCAgSWFuIExhbmNlIFRheWxvciAgPGlhbkBjeWdudXMuY29tPgoKCSogZWxmLmMgKG1hcF9zZWN0aW9uc190b19zZWdtZW50cyk6IENoZWNrIHRoZSBzZWN0aW9uIGFkZHJlc3MKCWFnYWluc3QgdGhlIHBoZHIgc2l6ZSBib3RoIHdpdGggYW5kIHdpdGhvdXQgYSBtb2R1bG8gb2YKCW1heHBhZ2VzaXplLgoKRnJpIEp1biAxOSAxNzowODoxOCAxOTk4ICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQGN5Z251cy5jb20+CgoJKiBlbGYzMi1taXBzLmMgKG1pcHNfZWxmX3NpemVfZHluYW1pY19zZWN0aW9ucyk6IE9ubHkgc3RyaXAgYQoJbGlua2VyIGNyZWF0ZWQgZW1wdHkgaW5wdXQgc2VjdGlvbiBpZiB0aGUgb3V0cHV0IHNlY3Rpb24gaGFzIHRoZQoJc2FtZSBuYW1lLgoKCSogZWxmbGluay5oIChlbGZfbGlua19vdXRwdXRfZXh0c3ltKTogUHJpbnQgYW4gZXJyb3IgbWVzc2FnZSBpZgoJX2JmZF9lbGZfc2VjdGlvbl9mcm9tX2JmZF9zZWN0aW9uIGZhaWxzLgoKCSogZWxmLmMgKF9iZmRfZWxmX3NlY3Rpb25fZnJvbV9iZmRfc2VjdGlvbik6IENhbGwgYmZkX3NldF9lcnJvciBvbgoJZmFpbHVyZS4KClR1ZSBKdW4gMTYgMTE6NTU6NTUgMTk5OCAgSWFuIExhbmNlIFRheWxvciAgPGlhbkBjeWdudXMuY29tPgoKCSogZWxmLmMgKGNvcHlfcHJpdmF0ZV9iZmRfZGF0YSk6IEltcHJvdmUgaGFuZGxpbmcgb2YgU29sYXJpcwoJbmF0aXZlIGxpbmtlciBvdXRwdXQuICBBdm9pZCBwdXR0aW5nIGFuIGVtcHR5IHNlY3Rpb24gaW4gbW9yZSB0aGFuCglvbmUgc2VnbWVudC4KCkZyaSBKdW4gMTIgMTM6MzA6MTcgMTk5OCAgVG9tIFRyb21leSAgPHRyb21leUBjeWdudXMuY29tPgoKCSogcG8vTWFrZS1pbiAoYWxsLXllcyk6IElmIG1haW50YWluZXIgbW9kZSwgZGVwZW5kIG9uIC5wb3QgZmlsZS4KCSgkKFBBQ0tBR0UpLnBvdCk6IFVuY29uZGl0aW9uYWxseSBkZXBlbmQgb24gUE9URklMRVMuCgpGcmkgSnVuIDEyIDEzOjM0OjAyIDE5OTggIERvdWcgRXZhbnMgIDxkZXZhbnNAY2FudWNrLmN5Z251cy5jb20+CgoJKiBlbGYuYyAoc3dhcF9vdXRfc3ltcyk6IE5ldyBhcmcgcmVsb2NhdGFibGVfcC4KCURvbid0IGFkZCBzZWN0aW9uIFZNQSB0byBzeW1ib2xzIGZvciByZWxvY2F0YWJsZSBvdXRwdXQuCgkoX2JmZF9lbGZfY29tcHV0ZV9zZWN0aW9uX2ZpbGVfcG9zaXRpb25zKTogVXBkYXRlIGNhbGwgdG8KCXN3YXBfb3V0X3N5bXMuCgpNb24gSnVuICA4IDE1OjIwOjU3IDE5OTggIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQGN5Z251cy5jb20+CgoJKiBlbGYzMi12ODUwLmMgKHY4NTBfZWxmX3BlcmZvcm1fcmVsb2NhdGlvbik6IE1ha2UgY29tcGFyaXNvbnMKCWFnYWluc3QgJ2FkZGVuZCcgYmUgc2lnbmVkIHJhdGhlciB0aGFuIHVuc2lnbmVkLgoKU2F0IEp1biAgNiAwMDozMToyMSAxOTk4ICBOaWNrIENsaWZ0b24gIDxuaWNrY0BjeWdudXMuY29tPgoKCSogZWxmMzItbTMyci5jOiBBZGQgcHJvdG90eXBzIGZvciBzdGF0aWMgZnVuY3Rpb25zLgoKCSogY29mZi1hcm0uYzogQWRkIHByb3RvdHlwZXMgZm9yIHN0YXRpYyBmdW5jdGlvbnMuCgpGcmkgSnVuICA1IDE3OjIxOjUxIDE5OTggIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQGN5Z251cy5jb20+CgoJKiBlbGYuYyAoZWxmX3NvcnRfc2VjdGlvbnMpOiBTb3J0IGJ5IExNQSBmaXJzdCB0aGVuIFZNQSwgc2luY2UgdGhlCglMTUEgaXMgdXNlZCB0byBvcmRlciBzZWN0aW9ucyBpbiBhIHNlZ21lbnQuCgoJKiBlbGYzMi12ODUwLmM6IEFkZCBwcm90b3R5cGVzIGZvciBzdGF0aWMgZnVuY3Rpb25zLgoJQ2hhbmdlIHR5cGUgb2YgYWRkZW5kIHBhcmFtZXRlciB0byBiZmRfdm1hIGluIHZhcmlvdXMgZnVuY3Rpb25zLgoKRnJpIEp1biAgNSAxODowOTo1OCAxOTk4ICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQGN5Z251cy5jb20+CgoJKiBhb3V0eC5oIChob3d0b190YWJsZV9leHQpOiBDaGFuZ2UgUkVMT0NfQkFTRTEzIHRvIHVzZQoJY29tcGxhaW5fb3ZlcmZsb3dfc2lnbmVkIGluc3RlYWQgb2YgY29tcGxhaW5fb3ZlcmZsb3dfYml0ZmllbGQuCgpGcmkgSnVuICA1IDE1OjExOjExIDE5OTggIEFuZHJlYXMgU2Nod2FiICA8c2Nod2FiQGlzc2FuLmluZm9ybWF0aWsudW5pLWRvcnRtdW5kLmRlPgoKCSogZWxmLmMgKGVsZl9tYXBfc3ltYm9scyk6IERvbid0IGFkZCBzZWN0aW9uIFZNQSB0byBzeW1ib2wgdmFsdWUKCXdoZW4gY29tcGFyaW5nIGFnYWluc3QgMC4KCldlZCBKdW4gIDMgMTc6NTI6NDkgMTk5OCAgSWFuIExhbmNlIFRheWxvciAgPGlhbkBjeWdudXMuY29tPgoKCSogTWFrZWZpbGUuYW0gKGNvbmZpZy5zdGF0dXMpOiBOZXcgdGFyZ2V0LgoJKiBNYWtlZmlsZS5pbjogUmVidWlsZC4KCldlZCBKdW4gIDMgMTI6MTg6MjQgMTk5OCAgU3RhbiBDb3ggIDxzY294QGVxdWlub3guY3lnbnVzLmNvbT4KCgkqIGVsZjMyLXNwYXJjLmMgKGVsZjMyX3NwYXJjX21lcmdlX3ByaXZhdGVfYmZkX2RhdGEpOiBHaXZlIGFuCgllcnJvciBpZiBwcmV2aW91cyBvYmplY3QgZW5kaWFubmVzcyBkb2Vzbid0IG1hdGNoIGN1cnJlbnQgb2JqZWN0LgoKVHVlIEp1biAgMiAxNzo1MDo1OSAxOTk4ICBOaWNrIENsaWZ0b24gIDxuaWNrY0BjeWdudXMuY29tPgoKCSogZWxmMzItdjg1MC5jICh2ODUwX2VsZl9wcmludF9wcml2YXRlX2JmZF9kYXRhKTogQ2FsbAoJX2JmZF9lbGZfcHJpbnRfcHJpdmF0ZSliZmRfZGF0YSAoKS4KClR1ZSBKdW4gIDIgMTU6Mjk6MzUgMTk5OCAgSWFuIExhbmNlIFRheWxvciAgPGlhbkBjeWdudXMuY29tPgoKCSogZWxmbGluay5oIChlbGZfbWVyZ2Vfc3ltYm9sKTogRG9uJ3QgYWx3YXlzIHNldCB0eXBlX2NoYW5nZV9vawoJYW5kIHNpemVfY2hhbmdlX29rLgoJKGVsZl9saW5rX2FkZF9vYmplY3Rfc3ltYm9scyk6IFNldCB0eXBlX2NoYW5nZV9vayBhbmQKCXNpemVfY2hhbmdlX29rIGJlZm9yZSBjYWxsaW5nIGVsZl9tZXJnZV9zeW1ib2wuCgoJKiBlbGYzMi1taXBzLmMgKG1pcHNfZWxmX3JlbG9jYXRlX3NlY3Rpb24pOiBJZiB3ZSBpc3N1ZSBhbgoJdW5kZWZpbmVkIHN5bWJvbCBlcnJvciwgZG9uJ3QgYWxzbyBpc3N1ZSBhbiBvdmVyZmxvdyBlcnJvci4KClR1ZSBKdW4gIDIgMTM6NTE6MDAgMTk5OCAgR2VvZmYgS2VhdGluZyAgPGdlb2Zma0BvemVtYWlsLmNvbS5hdT4KCgkqIGVsZjMyLXBwYy5jIChwcGNfZWxmX3JlbG9jYXRlX3NlY3Rpb24pOiBUaGUgdGFyZ2V0IG9mIGFuCglSX1BQQ19MT0NBTDI0UEMgcmVsb2NhdGlvbiBzaG91bGQgYmUgbG9jYWw7IGlmIG5vdCwgcHJpbnQgYW4gZXJyb3IKCW1lc3NhZ2UgaW5zdGVhZCBvZiBjcmFzaGluZy4KCk1vbiBKdW4gIDEgMTg6MjM6MTIgMTk5OCAgWXVsaSBCYXJjb2hlbiAgPHl1bGkuYmFyY29oZW5AdGVscmFkLmNvLmlsPgoKCSogYXJjaHVyZXMuYyAoYmZkX21hY2hfY3B1MzIpOiBEZWZpbmUuCgkoYmZkX2RlZmF1bHRfc2Nhbik6IEFkZCBjYXNlIGZvciA2ODA2MC4gIEZpeCA2ODMzMiBjYXNlIHRvIHVzZQoJYmZkX21hY2hfY3B1MzIuCgkqIGNwdS1tNjhrLmMgKGFyY2hfaW5mb19zdHJ1Y3QpOiBBZGQgbTY4azpjcHUzMi4KCSogaWVlZS5jOiBJbmNsdWRlIDxjdHlwZS5oPi4KCShpZWVlX29iamVjdF9wKTogUGFyc2Ugb3V0IHByb2Nlc3MgSUQgc3RyaW5nIHRvIG1ha2UgaXQgbW9yZQoJbGlrZWx5IHRvIGJlIGFjY2VwdGFibGUgZm9yIGJmZF9zY2FuX2FyY2guCgkqIGJmZC1pbjIuaDogUmVidWlsZC4KCk1vbiBKdW4gIDEgMTE6MTI6MDIgMTk5OCAgTmljayBDbGlmdG9uICA8bmlja2NAY3lnbnVzLmNvbT4KCgkqIGVsZjMyLW0zMnIuYyAobTMycl9lbGZfcHJpbnRfcHJpdmF0ZV9iZmRfZGF0YSk6IEFsc28gY2FsbAoJX2JmZF9lbGZfcHJpbnRfcHJpdmF0ZV9iZmRfZGF0YSgpIHNvIHRoYXQgdGhlIHByb2dyYW0gaGVhZGVyIHdpbGwKCWJlIGRpc3BsYXllZC4KCk1vbiBKdW4gIDEgMTI6MTQ6MjggMTk5OCAgSWFuIExhbmNlIFRheWxvciAgPGlhbkBjeWdudXMuY29tPgoKCSogcGVpY29kZS5oIChjb2ZmX3N3YXBfc3ltX2luKTogQ2hlY2sgZm9yIENfU0VDVElPTiByYXRoZXIgdGhhbgoJMHg2OC4gIFJlaW5kZW50LiAgQWRkIHNvbWUgY29tbWVudHMuCgpGcmkgTWF5IDI5IDA5OjU4OjA4IDE5OTggIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQGN5Z251cy5jb20+CgoJKiBlbGYuYyAoY29weV9wcml2YXRlX2JmZF9kYXRhKTogQWRqdXN0IHBoeXNpY2FsIGFkZHJlc3Mgb2YKCXNlZ21lbnQgaW4gb3V0cHV0IEJGRCB0byBjb250YWluIExNQXMgb2YgaXRzIHNlY3Rpb25zLgoKVHVlIE1heSAyNiAxOTozNzo0NyAxOTk4ICBTdGFuIENveCAgPHNjb3hAZXF1aW5veC5jeWdudXMuY29tPgoKCSogZWxmMzItc3BhcmMuYyAoX2JmZF9zcGFyY19lbGZfaG93dG9fdGFibGUsIHNwYXJjX3JlbG9jX21hcCwKCWVsZjMyX3NwYXJjX3JlbG9jYXRlX3NlY3Rpb24pOiBBZGRlZCBSX1NQQVJDXzMyTEUgZm9yIGxpdHRsZQoJZW5kaWFuIGRhdGEgMzIgYml0IHJlbG9jYXRpb25zLgoJKGVsZjMyX3NwYXJjX21lcmdlX3ByaXZhdGVfYmZkX2RhdGEpOiBDaGVjayBpZiBsaW5raW5nIGxpdHRsZQoJZW5kaWFuIG9iamVjdHMgd2l0aCBiaWcgZW5kaWFuIG9iamVjdHMuCgkoZWxmMzJfc3BhcmNfb2JqZWN0X3ApOiBTZXQgYmZkX21hY2hfc3BhcmNfc3BhcmNsaXRlX2xlLgoJKGVsZjMyX3NwYXJjX2ZpbmFsX3dyaXRlX3Byb2Nlc3NpbmcpOiBTZXQgRUZfU1BBUkNfTEVEQVRBIGluIGVfZmxhZ3MuCgkqIGxpYmJmZC5oIChiZmRfcmVsb2NfY29kZV9yZWFsX25hbWVzKTogQWRkZWQgQkZEX1JFTE9DX1NQQVJDXzMyTEUuCgkqIHJlbG9jLmM6IFNhbWUuCgkqIGNwdS1zcGFyYy5jIChhcmNoX2luZm9fc3RydWN0KTogQWRkZWQgc3BhcmM6c3BhcmNsaXRlX2xlCgkqIGFyY2h1cmVzLmMgKGJmZF9tYWNoX3NwYXJjX3NwYXJjbGl0ZV9sZSk6IE5ldy4KCSogYmZkLWluMi5oIChCRkRfUkVMT0NfU1BBUkNfMzJMRSwgYmZkX21hY2hfc3BhcmNfc3BhcmNsaXRlX2xlKTogTmV3LgoKVGh1IE1heSAyMSAxNjo1OToyOCAxOTk4ICBOaWNrIENsaWZ0b24gIDxuaWNrY0BjeWdudXMuY29tPgoKCSogcGVpY29kZS5oIChhZGRfZGF0YV9lbnRyeSk6IEZpeCBwcmVjZWRlbmNlIG9mIG9wZXJhdG9ycyBpbiBpZiAoKQoJc3RhdGVtZW50LgoKVHVlIE1heSAxOSAxODo0MToxOSAxOTk4ICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQGN5Z251cy5jb20+CgoJKiBiZmQtaW4uaDogTW92ZSBvdmVyIHBhdGNoIHRvIGJmZC1pbjIuaC4KCgkqIHJlbG9jLmMgKGJmZF9jaGVja19vdmVyZmxvdyk6IEFkZCBjYXN0cyBiZWZvcmUgc2hpZnRzIHdoaWNoIG1heQoJbm90IGZpdCBpbiAzMiBiaXRzLgoJKF9iZmRfcmVsb2NhdGVfY29udGVudHMpOiBMaWtld2lzZS4KCk1vbiBNYXkgMTggMTQ6NDQ6MTUgMTk5OCAgTmljayBDbGlmdG9uICA8bmlja2NAY3lnbnVzLmNvbT4KCgkqIHBlaWNvZGUuaCAoYWRkX2RhdGFfZW50cnkpOiBJZiB0aGUgc2VjdGlvbiBoYXMgbm8gcHJpdmF0ZSBkYXRhCgl0aGVuIGRvIG5vdCBjcmVhdGUgYSBEYXRhIERpY3Rpb25hcnkgZW50cnkgZm9yIGl0LgoKTW9uIE1heSAxOCAwMDowOToyOCAxOTk4ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogZWxmNjQtYWxwaGEuYyAoZWxmNjRfYWxwaGFfcmVsYXhfc2VjdGlvbik6IFNldCBhZ2FpbiBvbiBjaGFuZ2VzLgoJKGVsZjY0X2FscGhhX2Nhbl9tZXJnZV9nb3RzLCBlbGY2NF9hbHBoYV9tZXJnZV9nb3RzLAoJZWxmNjRfYWxwaGFfc2l6ZV9nb3Rfc2VjdGlvbnMpOiBSZXdyaXRlLCBoYW5kbGluZyBtdWx0aXBsZSBnb3QKCXN1YnNlY3Rpb25zIGR1cmluZyByZWxheGF0aW9uIG1vcmUgY29ycmVjdGx5LgoKVGh1IE1heSAxNCAxNDoyMjo1OCAxOTk4ICBOaWNrIENsaWZ0b24gIDxuaWNrY0BjeWdudXMuY29tPgoKCSogYmZkLWluMi5oOiBBZGQgbmV3IHByb3RvdHlwZTogYmZkX2NvZmZfc2V0X3N5bWJvbF9jbGFzcyAoKS4KCUFkZCBleHRyYSBhcmd1bWVudCB0byBiZmRfYXJtX3Byb2Nlc3NfYmVmb3JlX2FsbG9jYXRpb24gKCkuCgkqIGJmZC1pbi5oOiBSZWZsZWN0IGNoYW5nZXMgbWFkZSBpbiBiZmQtaW4yLmguCgkqIGNvZmZnZW4uYyAoYmZkX2NvZmZfc2V0X3N5bWJvbF9jbGFzcyk6IE5ldyBmdW5jdGlvbi4gIFNldCB0aGUKCWNvZmYgY2xhc3Mgb2YgYSBCRkQgc3ltYm9sLgoJKiBjb2ZmLWFybS5jOiBBZGQgc3VwcG9ydCBmb3IgaW50ZXJ3b3JraW5nIGJldHdlZW4gVGh1bWIgY29kZSBhbmQKCW5vbi1pbnRlcndvcmtpbmcgYXdhcmUgQVJNIGNvZGUuCgpTdW4gTWF5IDEwIDIyOjMzOjU5IDE5OTggIEplZmZyZXkgQSBMYXcgIChsYXdAY3lnbnVzLmNvbSkKCgkqIHBvL01ha2UtaW4gKGluc3RhbGwtaW5mbyk6IE5ldyB0YXJnZXQuCgpUaHUgTWF5ICA3IDE3OjQwOjU2IDE5OTggIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5AY3lnbnVzLmNvbT4KCgkqIGZpbGVtb2RlLmM6IFJlbW92ZTsgbm90IHVzZWQuCgoJSWYgc3lzZGVwLmggaW5jbHVkZXMgYSBoZWFkZXIgZmlsZSwgZG9uJ3QgaW5jbHVkZSBpdCBhZ2FpbjoKCSogYWl4Mzg2LWNvcmUuYzogRG9uJ3QgaW5jbHVkZSA8c3RkaW8uaD4sIDxzdGRkZWYuaD4sIG9yCgk8ZXJybm8uaD4uCgkqIGFvdXR4Lmg6IERvbid0IGluY2x1ZGUgPHN0cmluZy5oPi4gIFVzZSAic3lzZGVwLmgiIHJhdGhlciB0aGFuCgk8c3lzZGVwLmg+LgoJKiBhcmNoaXZlLmM6IERvbid0IGluY2x1ZGUgPHN0cmluZy5oPiBvciA8ZXJybm8uaD4uCgkqIGV2YXgtYWxwaGEuYzsgRG9uJ3QgaW5jbHVkZSA8c3RkaW8uaD4uCgkqIGV2YXgtZWdzZC5jOiBMaWtld2lzZS4KCSogZXZheC1ldGlyLmM6IExpa2V3aXNlLgoJKiBldmF4LW1pc2MuYzogTGlrZXdpc2UuCgkqIGV2YXgtZW1oLmM6IExpa2V3aXNlLiAgQWxzbywgZG9uJ3QgaW5jbHVkZSA8c3lzL3R5cGVzLmg+LgoJKiBocHBhYnNkLWNvcmUuYzogRG9uJ3QgaW5jbHVkZSA8c3RkaW8uaD4sIDxzeXMvdHlwZXMuaD4sIG9yCgk8ZXJybm8uaD4uCgkqIGhwdXgtY29yZS5jOiBMaWtld2lzZS4KCSogbmV0YnNkLWNvcmUuYzogTGlrZXdpc2UuCgkqIHNvbS5jOiBMaWtld2lzZS4KCSogbGliYmZkLmM6IERvbid0IGluY2x1ZGUgPHN5cy90eXBlcy5oPi4KCSogbmxtY29kZS5oOiBEb24ndCBpbmNsdWRlIDxzdHJpbmcuaD4uCgkqIG9zZi1jb3JlLmM6IERvbid0IGluY2x1ZGUgPHN0cmluZy5oPiBvciA8c3RkaW8uaD4uCgkqIHB0cmFjZS1jb3JlLmM6IERvbid0IGluY2x1ZGUgPHN0ZGlvLmg+LCA8c3lzL3R5cGVzLmg+LAoJPGVycm5vLmg+LCBvciA8dW5pc3RkLmg+LgoJKiB0cmFkLWNvcmUuYzogRG9uJ3QgaW5jbHVkZSA8c3RkaW8uaD4gb3IgPHN5cy90eXBlcy5oPi4KClRodSBNYXkgIDcgMTM6MTI6NTAgMTk5OCAgS2xhdXMgS2FlbXBmICA8a2thZW1wZkBwcm9naXMuZGU+CgoJKiBjb25maWd1cmUuY29tOiBJZiB0aGUgdmVyc2lvbiBudW1iZXIgY2FuIG5vdCBiZSBmb3VuZCBpbgoJY29uZmlndXJlLmluLCBzZXQgaXQgdG8gInVua25vd24iIHJhdGhlciB0aGFuICIyLjguMSIuCgpXZWQgTWF5ICA2IDA5OjQ2OjA1IDE5OTggIEdhdmluIEtvY2ggIDxnYXZpbkBjeWdudXMuY29tPgoKCSogZWxmMzItbWlwcy5jIChlbGZfbWlwc19tYWNoKTogTmV3LgoJKF9iZmRfbWlwc19lbGZfb2JqZWN0X3ApOiBVc2UgZWxmX21pcHNfbWFjaC4KCShfYmZkX21pcHNfZWxmX2ZpbmFsX3dyaXRlX3Byb2Nlc3NpbmcpOiBVc2UgdGhlIG5hbWVzCglvZiBtYWNoaW5lcywgcmF0aGVyIHRoYW4gdGhlIG51bWJlcnMuICBTZXQgYm90aCB0aGUgQVJDSAoJYW5kIE1BQ0ggaW4gZV9mbGFncy4gIEhhbmRsZSBhIGZldyBtb3JlIHNwZWNpZmljIG1hY2hpbmVzLgoJKF9iZmRfbWlwc19lbGZfbWVyZ2VfcHJpdmF0ZV9iZmRfZGF0YSk6IE1lcmdlIGJvdGgKCUVGX01JUFNfQVJDSCBhbmQgRUZfTUlQU19NQUNILgoKVHVlIE1heSAgNSAyMTowMTo1MyAxOTk4ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogc3ltcy5jIChiZmRfaXNfbG9jYWxfbGFiZWwpOiBSZXZlcnQgbGFzdCBjaGFuZ2UuCgkqIHNyZWMuYyAoc3JlY193cml0ZV9zeW1ib2xzKTogRGlzY2FyZCBkZWJ1Z2dpbmcgc3ltYm9scy4KClR1ZSBNYXkgIDUgMjM6MzY6MDYgMTk5OCAgSWFuIExhbmNlIFRheWxvciAgPGlhbkBjeWdudXMuY29tPgoKCSogc29tLmM6IEluY2x1ZGUgPGN0eXBlLmg+LgoJKiBzb20uaDogRG9uJ3QgaW5jbHVkZSBzeXNkZXAuaC4KClR1ZSBNYXkgIDUgMTg6Mjk6MjQgMTk5OCAgVG9tIFRyb21leSAgPHRyb21leUBjeWdudXMuY29tPgoKCSogbGliYmZkLmg6IFJlYnVpbHQuCgkqIGxpYmJmZC1pbi5oOiBSZW1vdmVkIGdldHRleHQgaW5jbHVkZXMgYW5kIGRlZmluZXMuCgkqIHN5c2RlcC5oOiBNb3ZlZCBnZXR0ZXh0LXJlbGF0ZWQgaW5jbHVkZXMgYW5kIGRlZmluZXMgaGVyZS4KClR1ZSBNYXkgIDUgMTY6NDc6NTQgMTk5OCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIHNyZWMuYyAoc3JlY193cml0ZV9zeW1ib2xzKTogVXNlIGJmZF9pc19sb2NhbF9sYWJlbCByYXRoZXIgdGhhbgoJYW4gYWQtaG9jIHRlc3QuICBLaWxsIGJvZ3VzICNpZiAwIGNvZGUuCgkqIHN5bXMuYyAoYmZkX2lzX2xvY2FsX2xhYmVsKTogQ29uc2lkZXIgQlNGX0RFQlVHR0lORyBzeW1ib2xzIGxvY2FsLgoKTW9uIE1heSAgNCAxNjoxMDozMyAxOTk4ICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQGN5Z251cy5jb20+CgoJKiBzdW5vcy5jIChzdW5vc19jaGVja19keW5hbWljX3JlbG9jKTogRG9uJ3QgdXNlIHRoZSBQTFQgYWRkcmVzcwoJd2hlbiBnZW5lcmF0aW5nIGEgbm9ybWFsIGV4ZWN1dGFibGUgZm9yIGEgc3ltYm9sIGRlZmluZWQgaW4gYQoJcmVndWxhciBmaWxlLiAgV2hlbiBjb3B5aW5nIGEgcmVsb2MgaW50byB0aGUgb3V0cHV0IGZpbGUsIGFkanVzdAoJdGhlIGFkZGVuZCBmb3IgYSBQQyByZWxhdGl2ZSByZWxvYyBhZ2FpbnN0IGEgZ2xvYmFsIHN5bWJvbC4KCk1vbiBNYXkgIDQgMTA6MDg6MTggMTk5OCAgVG9tIFRyb21leSAgPHRyb21leUBjeWdudXMuY29tPgoKCSogbGliYmZkLmg6IFJlYnVpbHQuCgkqIGxpYmJmZC1pbi5oIChfKTogRGVmaW5lIGFzIGRnZXR0ZXh0LgoKTW9uIE1heSAgNCAxMTowMjoyMyAxOTk4ICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQGN5Z251cy5jb20+CgoJKiBjb2ZmLWFybS5jIChjb2ZmX2FybV9yZWxvY2F0ZV9zZWN0aW9uKTogQ2FzdCB0byBiZmRfc2lnbmVkX3ZtYSwKCW5vdCBzaWduZWQuCgkqIHBlaWNvZGUuaCAocGVfc2F2ZWRfY29mZl9iZmRfcHJpbnRfcHJpdmF0ZV9iZmRfZGF0YSk6IFVzZSBQQVJBTVMKCXdoZW4gZGVjbGFyaW5nIHBhcmFtZXRlciB0eXBlcy4KCShwZV9zYXZlZF9jb2ZmX2JmZF9jb3B5X3ByaXZhdGVfYmZkX2RhdGEpOiBMaWtld2lzZS4KCldlZCBBcHIgMjkgMTU6MzU6MDMgMTk5OCAgSWFuIExhbmNlIFRheWxvciAgPGlhbkBjeWdudXMuY29tPgoKCSogY29uZmlnLmJmZDogSWYgd2UgaW5jbHVkZSBhbnkgRUxGIHRhcmdldHMgaW4gdGFyZ19kZWZ2ZWMgYW5kL29yCgl0YXJnX3NlbHZlY3MsIHRoZW4gYWRkIHRoZSBnZW5lcmljIEVMRiB0YXJnZXRzIHRvIHRhcmdfc2VsdmVjcy4KCSogZWxmMzItZ2VuLmMgKGR1bW15KTogTmV3IHN0YXRpYyBjb25zdCB2YXJpYWJsZS4KCShlbGZfZ2VuZXJpY19pbmZvX3RvX2hvd3RvKTogTmV3IHN0YXRpYyBmdW5jdGlvbi4KCShlbGZfZ2VuZXJpY19pbmZvX3RvX2hvd3RvX3JlbCk6IE5ldyBzdGF0aWMgZnVuY3Rpb24uCgkoZWxmX2luZm9fdG9faG93dG8pOiBEZWZpbmUgYXMgZWxmX2dlbmVyaWNfaW5mb190b19ob3d0by4KCShlbGZfaW5mb190b19ob3d0b19yZWwpOiBEZWZpbmUgYXMgZWxmX2dlbmVyaWNfaW5mb190b19ob3d0b19yZWwuCgkqIGVsZjY0LWdlbi5jOiBTYW1lIGNoYW5nZXMgYXMgZWxmMzItZ2VuLmMuCgkqIGVsZmNvZGUuaCAoZWxmX29iamVjdF9wKTogRm9yIHRoZSBnZW5lcmljIHRhcmdldCwgaWdub3JlIGEKCWZhaWx1cmUgb2YgYmZkX2RlZmF1bHRfc2V0X2FyY2hfbWFjaC4gIEZpeCBpbmRlbnRhdGlvbiBhIGJpdC4KClR1ZSBBcHIgMjggMjA6MDU6NTIgMTk5OCAgSWFuIExhbmNlIFRheWxvciAgPGlhbkBjeWdudXMuY29tPgoKCSogY29uZmlndXJlLmluIChXSU4zMkxJQkFERCk6IEFkZCAtbGludGwgb24gY3lnd2luMzIuCgkqIGNvbmZpZ3VyZTogUmVidWlsZC4KClR1ZSBBcHIgMjggMTI6MTY6NTcgMTk5OCAgSmFzb24gTW9sZW5kYSAgKGNyYXNoQGJ1Z3NoYWNrLmN5Z251cy5jb20pCgoJKiBjb25maWcuYmZkOiAgVXBkYXRlIE9TUjUvVW5peHdhcmUgcGF0dGVybnMuCgpNb24gQXByIDI3IDE4OjAyOjI0IDE5OTggIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBlbGYuYyAoYXNzaWduX2ZpbGVfcG9zaXRpb25zX2Zvcl9zZWdtZW50cyk6IEFsbG93IGZvciBob2xlcwoJYmV0d2VlbiBzZWN0aW9ucyBhZGRlZCBieSBhIGxpbmsgc2NyaXB0LgoKTW9uIEFwciAyNyAxMTo0OTo1NSAxOTk4ICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQGN5Z251cy5jb20+CgoJKiBjb25maWd1cmUuaW46IENoYW5nZSB2ZXJzaW9uIG51bWJlciB0byAyLjkuNAoJKiBjb25maWd1cmU6IFJlYnVpbGQuCgoJQmFzZWQgb24gcGF0Y2ggZnJvbSBILkouIEx1IDxoamxAZ251Lm9yZz46CgkqIGVsZi5jIChiZmRfZWxmX2dldF9iZmRfbmVlZGVkX2xpc3QpOiBOZXcgZnVuY3Rpb24uCgkqIGJmZC1pbi5oIChiZmRfZWxmX2dldF9iZmRfbmVlZGVkX2xpc3QpOiBEZWNsYXJlLgoJKiBiZmQtaW4yLmg6IFJlYnVpbGQuCgpTYXQgQXByIDI1IDIwOjA3OjUzIDE5OTggIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBlbGY2NC1hbHBoYS5jIChzdHJ1Y3QgYWxwaGFfcmVsYXhfaW5mbyk6IFJlcGxhY2UgZWxmc3ltIHdpdGggb3RoZXIuCglDaGFuZ2UgYWxsIHVzZXJzLgoKU2F0IEFwciAyNSAxODoyOTowNyAxOTk4ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogZWxmNjQtYWxwaGEuYyAoc3RydWN0IGFscGhhX3JlbGF4X2luZm8pOiBBZGQgdHNlYyAmIGVsZnN5bSBtZW1iZXJzLgoJKGVsZjY0X2FscGhhX3JlbGF4X3NlY3Rpb24pOiBGaWxsIHRoZW0gaW4uCgkoZWxmNjRfYWxwaGFfcmVsYXhfb3B0X2NhbGwpOiBJbXBsZW1lbnQgbW9yZSB0aGFuIGEgc3R1Yi4KCShlbGY2NF9hbHBoYV9hZGRfc3ltYm9sX2hvb2spOiBEb24ndCBzZXQgU0VDX0xPQUQgb3IgZGVmYXVsdAoJYWxpZ25tZW50IG9uIC5zY29tbW9uLgoJKGVsZjY0X2FscGhhX21lcmdlX2dvdHMpOiBNZXJnZSB1c2UgY291bnRzIGFzIHdlbGwuCgpTYXQgQXByIDI1IDE0OjA3OjI5IDE5OTggIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBlbGY2NC1hbHBoYS5jIChlbGY2NF9hbHBoYV9yZWxheF9zZWN0aW9uKTogVXNlIHRoZSBwcm9wZXIgc2VjdGlvbgoJZm9yIGNhbGN1bGF0aW5nIGEgbG9jYWwgc3ltYm9sJ3MgYWRkcmVzcy4KCShlbGY2NF9hbHBoYV9jYWxjX2dvdF9vZmZzZXRzKTogU2tpcCBlbnRyaWVzIHdpdGggMCB1c2UgY291bnQuCglTZXQgdGhlIC5nb3QncyBjb29rZWQgc2l6ZSBhcyB3ZWxsIGFzIHRoZSByYXcgc2l6ZS4KCkZyaSBBcHIgMjQgMDk6MTY6MDAgMTk5OCAgTmljayBDbGlmdG9uICA8bmlja2NAY3lnbnVzLmNvbT4KCgkqIGVsZjMyLXY4NTAuYyAodjg1MF9lbGZfcHJpbnRfcHJpdmF0ZV9iZmRfZGF0YSk6IEFkZAoJaW50ZXJuYXRpb25hbGlzYXRpb24gb2YgcHJpbnRlZCBpbmZvcm1hdGlvbi4KCgkqIGNvZmYtYXJtLmMgKGNvZmZfYXJtX3ByaW50X3ByaXZhdGVfYmZkX2RhdGEpOiBBZGQKCWludGVybmF0aW9uYWxpc2F0aW9uIG9mIHByaW50ZWQgaW5mb3JtYXRpb24uCgpGcmkgQXByIDI0IDEyOjA5OjE4IDE5OTggIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5AY3lnbnVzLmNvbT4KCgkqIHN5bXMuYyAoc3RydWN0IGluZGV4ZW50cnkpOiBDaGFuZ2UgZGlyZWN0b3J5X25hbWUsIGZpbGVfbmFtZSwKCWFuZCBmdW5jdGlvbl9uYW1lIGZpZWxkcyB0byBjaGFyICouCgkoc3RydWN0IHN0YWJfZmluZF9pbmZvKTogQ2hhbmdlIGNhY2hlZF9maWxlX25hbWUgZmllbGQgdG8gY2hhciAqLgoKVGh1IEFwciAyMyAwODoxMzowNCAxOTk4ICBOaWNrIENsaWZ0b24gIDxuaWNrY0BjeWdudXMuY29tPgoKCSogcGVpY29kZS5oIChkaXJfbmFtZXMpOiBBZGQgbWlzc2luZyBOXygpIG1hY3JvcyB0byBkaXJfbmFtZXMgYXJyYXkuCgpXZWQgQXByIDIyIDEzOjA2OjE1IDE5OTggIFRvbSBUcm9tZXkgIDx0cm9tZXlAY3lnbnVzLmNvbT4KCgkqIHBvL01ha2UtaW4gKE1LSU5TVEFMTERJUlMpOiBEb24ndCBsb29rIGluICQodG9wX3NyY2RpcikuCgpXZWQgQXByIDIyIDE3OjQ4OjQ4IDE5OTggIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5AY3lnbnVzLmNvbT4KCgkqIE1ha2VmaWxlLmFtIChpbnN0YWxsLWRhdGEtbG9jYWwpOiBNYWtlICQoaW5jbHVkZWRpcikuCgkqIE1ha2VmaWxlLmluOiBSZWJ1aWxkLgoKV2VkIEFwciAyMiAxMzowNjoxNSAxOTk4ICBUb20gVHJvbWV5ICA8dHJvbWV5QGN5Z251cy5jb20+CgoJKiBsaWJiZmQtaW4uaDogVXNlIGBnZXR0ZXh0JyBhbmQgbm90IGBkZ2V0dGV4dCcgZm9yIG5vdy4KCldlZCBBcHIgMjIgMTI6NTM6NDAgMTk5OCAgSWFuIExhbmNlIFRheWxvciAgPGlhbkBjeWdudXMuY29tPgoKCSogTWFrZWZpbGUuYW0gKElOQ0xVREVTKTogQWRkIC1JJChzcmNkaXIpLy4uL2ludGwgLUkuLi9pbnRsLgoJKiBNYWtlZmlsZS5pbjogUmVidWlsZC4KCgkqIGJmZC1pbjIuaDogUmVidWlsZCBmb3IgTmljaydzIGNoYW5nZXMuCgpUdWUgQXByIDIxIDIzOjExOjUxIDE5OTggIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBhcmNoaXZlLmMgKF9iZmRfZ2VuZXJpY19yZWFkX2FyX2hkcl9tYWcpOiBGaXggbG9zc2FnZSBpbiBsYXN0CgljaGFuZ2Ugd3J0IGxlbmd0aCA9PSBtYXhfbmFtZWxlbi4KClR1ZSBBcHIgMjEgMjE6MTk6MzYgMTk5OCAgVG9tIFRyb21leSAgPHRyb21leUBzY3JpYmJsZXMuY3lnbnVzLmNvbT4KCgkqIE1hbnkgZmlsZXM6IEFkZGVkIGdldHRleHQgaW52b2NhdGlvbnMgYXJvdW5kIHVzZXItdmlzaWJsZQoJc3RyaW5ncy4KCSogbGliYmZkLWluLmg6IEFkZGVkIGdldHRleHQgaW5jbHVkZXMgYW5kIGRlZmluZXMuCgkqIGFjY29uZmlnLmggKEVOQUJMRV9OTFMsIEhBVkVfQ0FUR0VUUywgSEFWRV9HRVRURVhULCBIQVZFX1NUUENQWSwKCUhBVkVfTENfTUVTU0FHRVMpOiBEZWZpbmUuCgkqIGNvbmZpZ3VyZS5pbjogQ2FsbCBDWV9HTlVfR0VUVEVYVC4gIENyZWF0ZSBwby9NYWtlZmlsZS5pbiBhbmQKCXBvL01ha2VmaWxlLgoJKiBNYWtlZmlsZS5hbSAoU1VCRElSUyk6IEFkZGVkIHBvLgoJKFBPVEZJTEVTKTogTmV3IG1hY3JvLgoJKHBvL1BPVEZJTEVTLmluKTogTmV3IHRhcmdldC4KCShTT1VSQ0VfSEZJTEVTKTogTmV3IG1hY3JvLgoJKEhGSUxFUyk6IFVzZSBpdC4KCSogcG8vTWFrZS1pbiwgcG8vUE9URklMRVMuaW4sIHBvL2JmZC5wb3Q6IE5ldyBmaWxlcy4KClR1ZSBBcHIgMjEgMTM6Mzg6MTggMTk5OCBQZXRlciBTY2hhdWVyICAocGVzQHJlZ2VudC5lLXRlY2huaWsudHUtbXVlbmNoZW4uZGUpCgoJKiBlbGZjb3JlLmggKGJmZF9wcnN0YXR1cyk6ICBDb3B5IGNvcmVfcHJzdGF0dXMgZnJvbSB0aGUgZmlyc3QKCU5UX1BSU1RBVFVTIG5vdGUgc2VjdGlvbiBlbmNvdW50ZXJlZCwgaXQgY29udGFpbnMgdGhlIHN0YXR1cyBvZgoJdGhlIGN1cnJlbnRseSBleGVjdXRpbmcgdGhyZWFkIHdoZW4gdGhlIGNvcmUgZmlsZSB3YXMgd3JpdHRlbi4KClR1ZSBBcHIgMjEgMTA6MDA6MTIgMTk5OCAgTmljayBDbGlmdG9uICA8bmlja2NAY3lnbnVzLmNvbT4KCgkqIGxpYmNvZmYuaDogQWRkIGV4dHJhIHBhcmFtZXRlciB0bwoJYmZkX2NvZmZfbGlua19vdXRwdXRfaGFzX2JlZ3VuIG92ZXJyaWRlYWJsZSBmdW5jdGlvbi4KCSogY29mZmxpbmsuYzogUGFzcyBleHRyYSBwYXJhbWV0ZXIgdG8KCWJmZF9jb2ZmX2xpbmtfb3V0cHV0X2hhc19iZWd1biBmdW5jdGlvbi4KCSogYmZkLWluLmg6IEFkZCBwcm90b3R5cGVzIGZvciBleHBvcnRlZCBBUk0gaW50ZXJ3b3JraW5nCglmdW5jdGlvbnMuCgkqIHBlaWNvZGUuaDogQVJNIHNwZWNpZmljIGNvZGUgcmVvcmdhbmlzZWQgdG8gY29uZm9ybSB0byBCRkQKCWNvZGluZyBjb252ZW50aW9ucy4KCSogY29mZmNvZGUuaDogQVJNIHNwZWNpZmljIGNvZGUgcmVvcmdhbmlzZWQgdG8gY29uZm9ybSB0byBCRkQKCWNvZGluZyBjb252ZW50aW9ucy4KCSogY29mZi1hcm0uYzogQ29kZSByZW9yZ2FuaXNlZCB0byBjb25mb3JtIHRvIHRoZSBCRkQgY29kaW5nCgljb252ZW50aW9ucy4gIEdsb2JhbCB2YXJpYWJsZXMgaGF2ZSBiZWVuIG1vdmVkIGludG8gYW4gQVJNCglzcGVjaWZpYyBoYXNoIHRhYmxlIHN0cnVjdHVyZSBhbmQgYSBuZXcgZnVuY3Rpb246CgliZmRfYXJtX2dldF9iZmRfZm9yX2ludGVyd29ya2luZygpIGhhcyBiZWVuIGNyZWF0ZWQgd2hpY2ggaXMKCWNhbGxlZCBmcm9tIHRoZSBsaW5rZXIgc2NyaXB0cy4KClR1ZSBBcHIgMjEgMDA6MTE6NTEgMTk5OCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGFyY2hpdmUuYyAoX2JmZF9nZW5lcmljX3JlYWRfYXJfaGRyX21hZyk6IFNpbXBsaWZ5IGVuZC1vZi1uYW1lIHRlc3QuCgoJKiBlbGY2NC1hbHBoYS5jIChlbGY2NF9hbHBoYV9maW5kX3JlbG9jX2F0X29mcyk6IFJlbmFtZWQgZnJvbQoJZWxmNjRfYWxwaGFfcmVsYXhfZmluZF9yZWxvY19vZnMuICBDaGFuZ2VkIGFsbCBjYWxsZXJzLgoJKGVsZjY0X2FscGhhX2FkZF9zeW1ib2xfaG9vayk6IFB1dCBzbWFsbCBjb21tb25zIGluIC5zY29tbW9uIG5vdCAuc2Jzcy4KCShlbGY2NF9hbHBoYV9zaXplX2dvdF9zZWN0aW9ucyk6IERvbid0IG1lcmdlIC5nb3Qgc2VjdGlvbnMgdHdpY2UuCgpTYXQgQXByIDE4IDAxOjIxOjA0IDE5OTggIFN0YW4gQ294ICA8c2NveEBjeWdudXMuY29tPgoKCSogY29uZmlnLmJmZDogQWRkZWQgc3BhcmM4Nnggc3VwcG9ydC4KCkZyaSBBcHIgMTcgMjI6Mjk6MDQgMTk5OCAgSWFuIExhbmNlIFRheWxvciAgPGlhbkBjeWdudXMuY29tPgoKCSogZWxmMzItbWlwcy5jIChtaXBzX2VsZl9yZWxvY2F0ZV9zZWN0aW9uKTogRG8gbm90IGNvbXBsYWluIGFib3V0CglhbiBvdXQgb2YgcmFuZ2UgcGMtcmVsYXRpdmUganVtcC9jYWxsIHRvIGFuIHVuZGVmaW5lZCB3ZWFrIHN5bWJvbC4KClRodSBBcHIgMTYgMTM6NDk6MDAgMTk5OCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGVsZjY0LWFscGhhLmMgKGVsZjY0X2FscGhhX2RvX3JlbG9jX2dwZGlzcCk6IERvIGFsbCBncGRpc3AKCWNvbXBhcmlzb25zIHNpZ25lZC4KClRodSBBcHIgMTYgMTE6NDM6MzMgMTk5OCAgSWFuIExhbmNlIFRheWxvciAgPGlhbkBjeWdudXMuY29tPgoKCSogYXJjaGl2ZS5jIChiZmRfZ2VuZXJpY19hcmNoaXZlX3ApOiBJZiBhIHNsdXJwIHN1YnJvdXRpbmUgcmV0dXJucwoJYW4gZXJyb3Igb3RoZXIgdGhhbiBiZmRfZXJyb3Jfc3lzdGVtX2NhbGwsIHNldCB0aGUgZXJyb3IgdG8KCWJmZF9lcnJvcl93cm9uZ19mb3JtYXQuCgoJKiB0YXJnZXRzLmMgKGJmZF90YXJnZXRfdmVjdG9yKSBbU0VMRUNUX1ZFQ1Mgbm90IGRlZmluZWRdOiBBZGQKCWJmZF9lbGYzMl9wb3dlcnBjbGVfdmVjLgoKCSogZWxmLmMgKGNvcHlfcHJpdmF0ZV9iZmRfZGF0YSk6IElmIGFsbCB0aGUgcF9wYWRkciBmaWVsZHMgaW4gdGhlCglwcm9ncmFtIHNlZ21lbnRzIGFyZSB6ZXJvLCBkb24ndCBzZXQgcF9wYWRkcl92YWxpZC4KCldlZCBBcHIgMTUgMjI6MTU6MTYgMTk5OCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGVsZjY0LWFscGhhLmM6IEluaXRpYWwgaW1wbGVtZW50YXRpb24gb2YgcmVsYXhhdGlvbiAtLQoJKHN0cnVjdCBhbHBoYV9lbGZfbGlua19oYXNoX2VudHJ5KTogQWRkIHVzZV9jb3VudCBtZW1iZXIuCgkoZWxmNjRfYWxwaGFfY2hlY2tfcmVsb2NzKTogSW5pdGlhbGl6ZSBhbmQgaW5jcmVtZW50IGl0LgoJKGVsZjY0X2FscGhhX2Nhbl9tZXJnZV9nb3RzKTogQ2hlY2sgaXQgd2hlbiBjb25zaWRlcmluZyBtZXJnaW5nLgoJKGVsZjY0X2FscGhhX21lcmdlX2dvdHMpOiBEcm9wIGVudHJpZXMgd2l0aCB6ZXJvIHVzZS4KCShlbGY2NF9hbHBoYV9jYWxjX2dvdF9vZmZzZXRzX2Zvcl9zeW1ib2wpOiBMaWtld2lzZS4KCShlbGY2NF9hbHBoYV9hbHdheXNfc2l6ZV9zZWN0aW9ucyk6IFNwbGl0IG91dCBnb3Qgc2l6aW5nIC4uLgoJKGVsZjY0X2FscGhhX3NpemVfZ290X3NlY3Rpb25zKTogLi4uIGhlcmUuICBOZXcgZnVuY3Rpb24uCgkoZWxmNjRfYWxwaGFfcmVsYXhfZmluZF9yZWxvY19vZnMpOiBOZXcgZnVuY3Rpb24uCgkoZWxmNjRfYWxwaGFfcmVsYXhfd2l0aF9saXR1c2UpOiBMaWtld2lzZS4KCShlbGY2NF9hbHBoYV9yZWxheF93aXRob3V0X2xpdHVzZSk6IExpa2V3aXNlLgoJKGVsZjY0X2FscGhhX3JlbGF4X29wdF9jYWxsKTogTGlrZXdpc2UuCgkoZWxmNjRfYWxwaGFfcmVsYXhfc2VjdGlvbik6IExpa2V3aXNlLgoJKGVsZjY0X2FscGhhX2FkZF9zeW1ib2xfaG9vayk6IExpa2V3aXNlLgoJKGVsZjY0X2FscGhhX2hvd3RvX3RhYmxlKTogSW1wbGVtZW50IEdQUkVMSElHSC9MT1cgJiBJTU1FRF9HUF8xNi4KCShlbGY2NF9hbHBoYV9yZWxvY2F0ZV9zZWN0aW9uKTogTGlrZXdpc2UuCgkoYmZkX2VsZjY0X2JmZF9yZWxheF9zZWN0aW9uKTogRGVmaW5lLgoJKGVsZl9iYWNrZW5kX2FkZF9zeW1ib2xfaG9vayk6IExpa2V3aXNlLgoKV2VkIEFwciAxNSAxNjowODo0NiAxOTk4ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogZWxmLmMgKHByZXBfaGVhZGVycyk6IFVzZSBuZXcgRU1fU1BBUkNWOSBzeW1ib2wuCgkqIGVsZjY0LXNwYXJjLmMgKEVMRl9NQUNISU5FX0NPREUpOiBMaWtld2lzZS4KCShFTEZfTUFDSElORV9BTFQxKTogTmV3LiAgU2V0IHRvIEVNX09MRF9TUEFSQzY0LgoKV2VkIEFwciAxNSAxMTozNDozMyAxOTk4ICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQGN5Z251cy5jb20+CgoJKiBjb25maWd1cmUuaW46IEFkZCAtbGtlcm5lbDMyIHRvIFdJTjMyTElCQUREIG9uIGN5Z3dpbjMyLgoJKiBjb25maWd1cmU6IFJlYnVpbGQuCgpNb24gQXByIDEzIDE2OjQ2OjI3IDE5OTggIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5AY3lnbnVzLmNvbT4KCgkqIE1ha2VmaWxlLmFtIChsaWJiZmRfbGFfTElCQUREKTogQWRkIEBXSU4zMkxJQkFEREAuCgkobGliYmZkX2xhX0xERkxBR1MpOiBBZGQgQFdJTjMyTERGTEFHU0AuCgkqIGNvbmZpZ3VyZS5pbjogRGVmaW5lIGFuZCBzdWJzdGl0dXRlIFdJTjMyTERGTEFHUyBhbmQKCVdJTjMyTElCQURELgoJKiBhY2xvY2FsLm00OiBSZWJ1aWxkIHdpdGggbmV3IGxpYnRvb2wuCgkqIGNvbmZpZ3VyZSwgTWFrZWZpbGUuaW46IFJlYnVpbGQuCgpGcmkgQXByIDEwIDEzOjQ0OjI3IDE5OTggIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5AY3lnbnVzLmNvbT4KCgkqIGNvZmZjb2RlLmggKGNvZmZfd3JpdGVfb2JqZWN0X2NvbnRlbnRzKTogTW92ZSBhIFBFIENPTURBVCBzeW1ib2wKCWJlZm9yZSBhbnkgb3RoZXIgc3ltYm9scyBpbiB0aGUgc2FtZSBzZWN0aW9uLgoKV2VkIEFwciAgOCAxNDo1MDoyMyAxOTk4ICBNaWNoYWVsIE1laXNzbmVyICA8bWVpc3NuZXJAY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy5iZmQgKHBvd2VycGMqLSotKik6IFJlbW92ZSBQb3dlclBDIE5UIHN1cHBvcnQgZnJvbSBFTEYKCXN5c3RlbXMuCgpUdWUgQXByICA3IDE2OjI1OjMxIDE5OTggIEdhdmluIFJvbWlnLUtvY2ggIDxnYXZpbkBjeWdudXMuY29tPgoKCSogZHdhcmYyLmMgKGNvbXBfdW5pdCk6IE1vdmUgaXQgZWFybGllciBpbiB0aGUgc291cmNlLiBBZGQKCWFkZHJfc2l6ZS4KCShyZWFkX2FkZHJlc3MpOiBSZXBsYWNlICdiZGYqJyBhcmd1bWVudCB3aXRoICdjb21wX3VuaXQqJyBhcmd1bWVudC4KCVVzZSBhZGRyX3NpemUgZm9yIGFkZHJlc3Mgc2l6ZSwgcmF0aGVyIHRoYW4gc2l6ZW9mKGJmZF92bWEpLgoJKHJlYWRfYXR0cmlidXRlKTogUmVwbGFjZSBiZGYqIGFyZ3VtZW50IHdpdGggJ2NvbXBfdW5pdConIGFyZ3VtZW50LgoJRml4IGNhbGwgdG8gcmVhZF9hZGRyZXNzLgoJKGRlY29kZV9saW5lX2luZm8pOiBSZXBsYWNlIGJkZiogYXJndW1lbnQgd2l0aCAnY29tcF91bml0KicgYXJndW1lbnQuCglTY3JhcCBvdGhlciB1bm5lZWRlZCBhcmd1bWVudHMuICBGaXggY2FsbCB0byByZWFkX2FkZHJlc3MuCgkoc2Nhbl91bml0X2Zvcl9mdW5jdGlvbnMpOiBGaXggY2FsbCB0byByZWFkX2F0dHJpYnV0ZS4KCShwYXJzZV9jb21wX3VuaXQpOiBXZSBub3cgaGFuZGxlIG1vcmUgdmFsdWVzIGZvciBhZGRyX3NpemUuCglTZXQgYWRkcl9zaXplIGluIHVuaXQuICBGaXggY2FsbCB0byByZWFkX2F0dHJpYnV0ZSBhbmQKCWRlY29kZV9saW5lX2luZm8uCgpUdWUgQXByICA3IDE1OjQ0OjQ3IDE5OTggIEdhdmluIFJvbWlnLUtvY2ggPGdhdmluQGN5Z251cy5jb20+CgoJKiBkd2FyZjIuYyAocGFyc2VfY29tcF91bml0KTogRHJvcCB1c2Ugb2YgdW5pdC0+bmFtZSB3aGVuIGl0IGlzIG51bGwuCgpUdWUgQXByICA3IDEyOjM1OjE4IDE5OTggIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5AY3lnbnVzLmNvbT4KCgkqIGFyY2h1cmVzLmMgKGJmZF9kZWZhdWx0X3NjYW4pOiBBZGQgbTY4ayBjYXNlcyBiYWNrIHRvIGRlZmF1bHQKCXN3aXRjaCwgcmV2ZXJ0aW5nIHBhdGNoIG9mIE1hcmNoIDI1LCBzaW5jZSBJRUVFIHN1cHBvcnQgZGVwZW5kcwoJdXBvbiB0aGVtLgoKTW9uIEFwciAgNiAxNDowNjo0MCAxOTk4ICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQGN5Z251cy5jb20+CgoJKiBNYWtlZmlsZS5hbSAoZGlzdHN0dWZmKTogTmV3IHRhcmdldC4KCSogTWFrZWZpbGUuaW46IFJlYnVpbGQuCgpTdW4gQXByICA1IDE2OjIxOjQ0IDE5OTggIEplZmZyZXkgQSBMYXcgIChsYXdAY3lnbnVzLmNvbSkKCgkqIHNvbS5jIChzb21fYmZkX2FyX3dyaXRlX3N5bWJvbF9zdHVmZik6IEZpeCBjb21wdXRhdGlvbiBvZgoJc29tX29mZnNldCB3aGVuIHdlIGhhdmUgYW4gZXh0ZW5kZWQgbmFtZSB0YWJsZS4KClN1biBBcHIgIDUgMTY6MDQ6MzkgMTk5OCAgSC5KLiBMdSAgPGhqbEBnbnUub3JnPgoKCSogTWFrZWZpbGUuYW0gKHN0YW1wLWxpYik6IENoZWNrIHRoYXQgLmxpYnMvbGliYmZkLmEgZXhpc3RzIGJlZm9yZQoJdHJ5aW5nIHRvIGNvcHkgaXQuCgkqIE1ha2VmaWxlLmluOiBSZWJ1aWxkLgoKRnJpIEFwciAgMyAxMTowOTo0MiAxOTk4ICBBbmRyZWFzIFNjaHdhYiAgPHNjaHdhYkBpc3Nhbi5pbmZvcm1hdGlrLnVuaS1kb3J0bXVuZC5kZT4KCgkqIGVsZjMyLW02OGsuYyAoZWxmX202OGtfc2l6ZV9keW5hbWljX3NlY3Rpb25zKTogR2VuZXJhdGUgc2VjdGlvbgoJc3ltYm9scyB3aGVuIGNyZWF0aW5nIGEgc2hhcmVkIGxpYnJhcnkuCgkoZWxmX202OGtfYWRqdXN0X2R5bmluZHgpOiBOZXcgZnVuY3Rpb24sIHVzZWQgYnkgYWJvdmUgY29kZS4KCShlbGZfbTY4a19maW5pc2hfZHluYW1pY19zZWN0aW9ucyk6IEluaXRpYWxpemUgdGhlIHNlY3Rpb24KCXN5bWJvbHMuCgkoZWxmX202OGtfcmVsb2NhdGVfc2VjdGlvbik6IENoYW5nZSBhYm9ydCB0byBCRkRfQVNTRVJULgoKV2VkIEFwciAgMSAxNjowNDowMiAxOTk4ICBOaWNrIENsaWZ0b24gIDxuaWNrY0BjeWdudXMuY29tPgoKCSogY29mZi1hcm0uYyAoaW5fcmVsb2NfcCk6IFVzZSBBUk1fUlZBMzIgaW4gcGxhY2Ugb2YgY29uc3RhbnQKCXZhbHVlIDExLgoKV2VkIEFwciAgMSAxMzozNjo1OCAxOTk4ICBBbmRyZWFzIFNjaHdhYiAgPHNjaHdhYkBpc3Nhbi5pbmZvcm1hdGlrLnVuaS1kb3J0bXVuZC5kZT4KCgkqIGVsZjMyLW02OGsuYyAoZWxmX202OGtfcmVsb2NhdGVfc2VjdGlvbiwgY2FzZSBSXzY4S19QTFQqTyk6IEZpeAoJYXNzZXJ0aW9uLgoKVHVlIE1hciAzMSAwMDoxMjoxMiAxOTk4ICBKZWZmcmV5IEEgTGF3ICAobGF3QGN5Z251cy5jb20pCgoJKiBlbGYtbTEwMzAwLmMgKG1uMTAzMDBfZWxmX3JlbGF4X3NlY3Rpb24pOiBDb3JyZWN0bHkgaGFuZGxlCglhYnNvbHV0ZSBzeW1ib2xzLgoKTW9uIE1hciAzMCAxMjo0NjoxNSAxOTk4ICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQGN5Z251cy5jb20+CgoJKiBjb25maWd1cmUuaW46IFNldCB2ZXJzaW9uIHRvIDIuOS4xLgoJKiBjb25maWd1cmU6IFJlYnVpbGQuCgoJKiBCcmFuY2hlZCBiaW51dGlscyAyLjkuCgpNb24gTWFyIDMwIDEyOjIwOjUwIDE5OTggIEJyZW50IEJhY2NhbGEgIDxiYWNjYWxhQGZyZWVzb2Z0Lm9yZz4KCgkqIHN5bXMuYyAoRU5BQkxFX0NBQ0hJTkcpOiBEZWZpbmUuCgkoc3RydWN0IGluZGV4ZW50cnkpOiBEZWZpbmUuCgkoc3RydWN0IHN0YWJfY2FjaGUpOiBSZW1vdmUuCgkoY21waW5kZXhlbnRyeSk6IE5ldyBzdGF0aWMgZnVuY3Rpb24uCgkoc3RydWN0IHN0YWJfZmluZF9pbmZvKTogQWRkIG5ldyBmaWVsZHM6IGluZGV4dGFibGUsCglpbmRleHRhYmxlc2l6ZSwgY2FjaGVkX2luZGV4ZW50cnksIGNhY2hlZF9vZmZzZXQsIGNhY2hlZF9zdGFiLCBhbmQKCWNhY2hlZF9maWxlX25hbWUuICBSZW1vdmUgZmllbGRzOiBmaWxlX2NhY2hlLCBmdW5jdGlvbl9jYWNoZSwgYW5kCglsaW5lX2NhY2hlLgoJKF9iZmRfc3RhYl9zZWN0aW9uX2ZpbmRfbmVhcmVzdF9saW5lKTogUmV3cml0ZSB0byBidWlsZCBhIHNvcnRlZAoJaW5kZXggdGFibGUgYW5kIHNlYXJjaCBpdC4KCk1vbiBNYXIgMzAgMTA6Mzk6MzQgMTk5OCAgSWFuIExhbmNlIFRheWxvciAgPGlhbkBjeWdudXMuY29tPgoKCSogZWxmLmMgKF9iZmRfZWxmX2NvcHlfcHJpdmF0ZV9zZWN0aW9uX2RhdGEpOiBDYWxsCgljb3B5X3ByaXZhdGVfYmZkX2RhdGEgb25jZSB3ZSd2ZSBzZWVuIHRoZSBsYXN0IFNFQ19BTExPQyBzZWN0aW9uLgoKCSogY3B1LW1pcHMuYzogUmVtb3ZlIHRyYWlsaW5nIGNvbW1hIGF0IGVuZCBvZiBlbnVtZXJhdGlvbiBsaXN0LgoKU2F0IE1hciAyOCAxNjozMzowMiAxOTk4ICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQGN5Z251cy5jb20+CgoJKiBjb2ZmLWFybS5jOiBEZWZpbmUgYWxsIGdsb2JhbGx5IHZpc2libGUgdmFyaWFibGVzIGFuZCBmdW5jdGlvbnMKCW9ubHkgd2hlbiBDT0ZGX1dJVEhfUEUgaXMgbm90IGRlZmluZWQuCgkqIGNvbmZpZ3VyZS5pbiAoYXJtcGVfbGl0dGxlX3ZlYywgYXJtcGVfYmlnX3ZlYyk6IEFkZAoJY29mZi1hcm0ubG8uCgkqIGNvbmZpZ3VyZTogUmVidWlsZC4KCkZyaSBNYXIgMjcgMTY6MDY6MDIgMTk5OCAgSWFuIExhbmNlIFRheWxvciAgPGlhbkBjeWdudXMuY29tPgoKCUZpeCBzb21lIGdjYyAtV2FsbCB3YXJuaW5nczoKCSogYW91dC1hcm0uYyAoTVkoZml4X3BjcmVsXzI2KSk6IEFkZCBjYXN0cyB0byBhdm9pZCB3YXJuaW5ncy4KCSogYXJjaGl2ZS5jIChfYmZkX2dlbmVyaWNfcmVhZF9hcl9oZHJfbWFnKTogTGlrZXdpc2UuCgkqIGFyY2h1cmVzLmMgKGJmZF9kZWZhdWx0X3NjYW4pOiBMaWtld2lzZS4KCSogYmZkLmMgKGJmZF9zY2FuX3ZtYSk6IExpa2V3aXNlLgoJKiBiaW5hcnkuYyAobWFuZ2xlX25hbWUpOiBMaWtld2lzZQoJKiBjb2ZmLWFybS5jIChhb3V0YXJtX2ZpeF9wY3JlbF8yNik6IExpa2V3aXNlLgoJKiBjb2ZmLXNoLmMgKHNoX3JlbG9jYXRlX3NlY3Rpb24pOiBMaWtld2lzZS4KCSogY29mZi1zdGdvMzIuYyAoY3JlYXRlX2dvMzJfc3R1Yik6IExpa2V3aXNlLgoJKiBjb2ZmY29kZS5oIChjb2ZmX3NsdXJwX2xpbmVfdGFibGUpOiBMaWtld2lzZS4KCSogZWNvZmYuYyAoX2JmZF9lY29mZl93cml0ZV9hcm1hcCk6IExpa2V3aXNlLgoJKiBlbGYuYyAoX2JmZF9lbGZfbWFrZV9zZWN0aW9uX2Zyb21fc2hkcik6IExpa2V3aXNlLgoJKGFzc2lnbl9maWxlX3Bvc2l0aW9uc19mb3Jfc2VnbWVudHMpOiBMaWtld2lzZS4KCSogZWxmMzItbWlwcy5jIChtaXBzX2VsZl9yZWxvY2F0ZV9zZWN0aW9uKTogTGlrZXdpc2UuCgkqIGVsZjMyLXBwYy5jIChwcGNfZWxmX2FkZF9zeW1ib2xfaG9vayk6IExpa2V3aXNlLgoJKiBvYXN5cy5jIChvYXN5c193cml0ZV9zZWN0aW9ucyk6IExpa2V3aXNlLgoJKiBwcGNib290LmMgKHBwY2Jvb3Rfb2JqZWN0X3ApOiBMaWtld2lzZS4KCShtYW5nbGVfbmFtZSk6IExpa2V3aXNlLgoJKiByaXNjaXguYyAocmlzY2l4X2ZpeF9wY3JlbF8yNik6IExpa2V3aXNlLgoJKiBzcmVjLmMgKHNyZWNfc2Nhbik6IExpa2V3aXNlLgoJKiBzdGFicy5jIChfYmZkX3dyaXRlX3NlY3Rpb25fc3RhYnMpOiBMaWtld2lzZS4KCSogc3Vub3MuYyAoc3Vub3NfYWRkX2R5bmFtaWNfc3ltYm9scyk6IExpa2V3aXNlLgoJKiBhb3V0LW5zMzJrLmMgKF9iZmRfbnMzMmtfcmVsb2NhdGVfY29udGVudHMpOiBBZGQgZGVmYXVsdCBjYXNlIHRvCglzd2l0Y2guICBEZWNsYXJlIHBhcmFtZXRlcnMgZm9yIGZ1bmN0aW9uIHBvaW50ZXJzLgoJKiBhcmNodXJlcy5jIChiZmRfZGVmYXVsdF9zY2FuKTogQWRkIGJyYWNlcyB0byBhdm9pZCBhbWJpZ3VvdXMgaWYKCXdhcm5pbmcuCgkqIGVsZi5jIChlbGZfc29ydF9zZWN0aW9ucyk6IExpa2V3aXNlLgoJKiBjb2ZmLWFybS5jIChjb2ZmX3RodW1iX3BjcmVsX2NvbW1vbik6IEluaXRpYWxpemUgcmVsb2NhdGlvbi4KCUFkZCBkZWZhdWx0IGNhc2VzIHRvIHN3aXRjaGVzLgoJKGNvZmZfYXJtX3JlbG9jYXRlX3NlY3Rpb24pOiBSZW1vdmUgdW51c2VkIGxvY2FsIHZhcmlhYmxlcy4KCUFsd2F5cyBzZXQgcnN0YXQuCgkoY29mZl9hcm1fYmZkX3NldF9wcml2YXRlX2ZsYWdzKTogQ2hhbmdlIGZsYWcgdmFyaWFibGUgdG8gdHlwZQoJZmxhZ3dvcmQuCgkqIGNvZmYtbWlwcy5jIChtaXBzX3JlbG9jYXRlX3NlY3Rpb24pOiBJbml0aWFsaXplIHVzZV9sby4KCSogY29mZi1wcGMuYyAocHBjX3JlY29yZF90b2NfZW50cnkpOiBDaGFuZ2UgaSB0byB1bnNpZ25lZCBpbnQuCgkoZHVtcF90b2MpOiBDaGFuZ2UgY2F0IHRvIGNvbnN0LCBhbmQgaW5pdGlhbGl6ZSBpdC4KCSogY29mZi1zaC5jIChzaF9yZWxheF9kZWxldGVfYnl0ZXMpOiBJbml0aWFsaXplIHN0YXJ0IGFuZCB2b2ZmLgoJKiBlbGYzMi1zaC5jIChzaF9lbGZfcmVsYXhfZGVsZXRlX2J5dGVzKTogTGlrZXdpc2UuCgkoc2hfZWxmX3JlbG9jYXRlX3NlY3Rpb24pOiBJbml0aWFsaXplIHJfc3ltbmR4LgoJKiBjb2ZmY29kZS5oIChjb2ZmX2NvbXB1dGVfc2VjdGlvbl9maWxlX3Bvc2l0aW9ucyk6IE9ubHkgZGVjbGFyZQoJb2xkX3NvZmFyIGlmIEFMSUdOX1NFQ1RJT05TX0lOX0ZJTEUuCgkoY29mZl93cml0ZV9vYmplY3RfY29udGVudHMpOiBJbml0aWFsaXplIGNzeW0uCgkqIGNvZmZnZW4uYyAoY29mZl9wb2ludGVyaXplX2F1eCk6IE1ha2UgdHlwZSBhbmQgY2xhc3MgdW5zaWduZWQuCgkqIGNwdS1uczMyay5jIChfYmZkX25zMzJrX2dldF9kaXNwbGFjZW1lbnQpOiBBZGQgZGVmYXVsdCBjYXNlIHRvCglzd2l0Y2guCgkqIGR3YXJmMi5jOiBJbmNsdWRlIGxpYmliZXJ0eS5oLgoJKHJlYWRfMl9zaWduZWRfYnl0ZXMsIHJlYWRfNF9zaWduZWRfYnl0ZXMpOiBDb21tZW50IG91dC4KCShkZWNvZGVfbGluZV9pbmZvKTogUmVtb3ZlIHVudXNlZCBsb2NhbCB2YXJpYWJsZXMuCgkqIGVsZjMyLW0zMnIuYyAobTMycl9lbGZfc2RhMTZfcmVsb2MpOiBMaWtld2lzZS4KCShtMzJyX2VsZl9yZWxvY2F0ZV9zZWN0aW9uKTogTGlrZXdpc2UuCgkqIGVsZjMyLXY4NTAuYyAodjg1MF9lbGZfc3RvcmVfYWRkZW5kX2luX2luc24pOiBMaWtld2lzZS4KCSh2ODUwX2VsZl9yZWxvYyk6IExpa2V3aXNlLgoJKiBlbGYtYmZkLmggKGVsZl9saW5rZXJfc2VjdGlvbl90KTogTWFrZSBhbGlnbm1lbnQgdW5zaWduZWQuCgkoc3RydWN0IGVsZl9vYmpfdGRhdGEpOiBNYWtlIGN2ZXJkZWZzIGFuZCBjdmVycmVmcyB1bnNpZ25lZC4KCSogZWxmLmMgKGFzc2lnbl9maWxlX3Bvc2l0aW9uc19mb3Jfc2VnbWVudHMpOiBBbHdheXMgc2V0IGFkanVzdC4KCSogZWxmMzItZDMwdi5jIChiZmRfZWxmX2QzMHZfcmVsb2MpOiBJbml0aWFsaXplIHRtcF9hZGRyLiAgRnVsbHkKCXBhcmVudGhlc2l6ZSBleHByZXNzaW9uLgoJKiBlbGYzMi1tMzJyLmMgKG0zMnJfZWxmX3JlbG9jYXRlX3NlY3Rpb24pOiBBbHdheXMgaW5pdGlhbGl6ZSBoLgoJKG0zMnJfZWxmX29iamVjdF9wKTogUmV0dXJuIGEgdmFsdWUuCgkobTMycl9lbGZfcHJpbnRfcHJpdmF0ZV9iZmRfZGF0YSk6IENoYW5nZSBmcHJpbnRmIGZvcm1hdCBzdHJpbmcuCgkqIGVsZjMyLW1pcHMuYyAobWlwc19lbGZfZmluYWxfbGluayk6IEluaXRpYWxpemUgbGFzdC4KCShtaXBzX2VsZl9maW5pc2hfZHluYW1pY19zZWN0aW9ucyk6IEluaXRpYWxpemUgbGFzdCBhbmQgZGluZHguCgkqIGVsZjMyLXY4NTAuYyAodjg1MF9lbGZfb2JqZWN0X3ApOiBSZXR1cm4gYSB2YWx1ZS4KCSh2ODUwX2VsZl9wcmludF9wcml2YXRlX2JmZF9kYXRhKTogQ2hhbmdlIGZwcmludGYgZm9ybWF0IHN0cmluZy4KCSogZWxmY29kZS5oIChlbGZfc2x1cnBfc3ltYm9sX3RhYmxlKTogQ2hhbmdlIHN5bWNvdW50IGFuZCBpIHRvCgl1bnNpZ25lZCBsb25nLgoJKiBlbGZsaW5rLmggKGVsZl9saW5rX2FkZF9vYmplY3Rfc3ltYm9scyk6IENoYW5nZSB2ZXJudW0gdG8KCXVuc2lnbmVkIGludCwgYW5kIGluaXRpYWxpemUgaXQuICBDaGFuZ2UgZnByaW50ZiBmb3JtYXQgc3RyaW5nLgoJKE5BTUUoYmZkX2VsZixzaXplX2R5bmFtaWNfc2VjdGlvbnMpKTogQ2FzdCAtMSB0byBiZmRfc2l6ZV90eXBlCgl3aGVuIHNldHRpbmcgb3IgY29tcGFyaW5nIHRvIHNvbmFtZV9pbmR4LgoJKGVsZl9jcmVhdGVfcG9pbnRlcl9saW5rZXJfc2VjdGlvbik6IENoYW5nZSBudW1fc3ltYm9scyB0bwoJdW5zaWduZWQgaW50LgoJKiBsaWJjb2ZmLWluLmggKGNvZmZfZGF0YV90eXBlKTogQ2hhbmdlIGZsYWdzIHRvIGZsYWd3b3JkLgoJKiBwZWljb2RlLmggKHBlX3ByaW50X2lkYXRhKTogSW5pdGlhbGl6ZSBpZHguICBDaGFuZ2UgaiB0bwoJYmZkX3NpemVfdHlwZS4gIEluaXRpYWxpemUgaGludF9tZW1iZXIuICBSZW1vdmUgdXNlbGVzcyB0ZXN0IHRvCgl0aW1lX3N0YW1wLgoJKHBlX3ByaW50X2VkYXRhKTogQ2hhbmdlIG51bV9mdW5jdGlvbnMgYW5kIG51bV9uYW1lcyBpbiBzdHJ1Y3QKCUVEVF90eXBlIHRvIHVuc2lnbmVkIGxvbmcuICBSZW1vdmUgY2FzdC4gIENoYW5nZSBmcHJpbnRmIGZvcm1hdAoJc3RyaW5nLgoJKiBwcGNib290LmMgKHBwY2Jvb3Rfb2JqZWN0X3ApOiBDaGFuZ2UgaSB0byBzaXplX3QuCgkqIHJlbG9jLmMgKGJmZF9nZXRfcmVsb2Nfc2l6ZSk6IENoYW5nZSByZXR1cm4gdHlwZSB0byB1bnNpZ25lZAoJaW50LgoJKiByZWxvYzE2LmMgKGJmZF9jb2ZmX3JlbG9jMTZfcmVsYXhfc2VjdGlvbik6IENoYW5nZSBzaHJpbmtzIHRvCglpbnQgKi4gIFVwZGF0ZSB1c2VzLiAgQ2hhbmdlIGogdG8gbG9uZy4KCSogYmZkLWluMi5oLCBsaWJjb2ZmLmg6IFJlYnVpbGQuCgpGcmkgTWFyIDI3IDEwOjEwOjQ2IDE5OTggIENhdGhlcmluZSBNb29yZSA8Y2xtQGN5Z251cy5jb20+CgoJKiBlbGYzMi12ODUwLmMgUmVtb3ZlIGRlZmluaXRpb24gb2YgVVNFX1JFTC4KCSh2ODUwX2VsZl9pbmZvX3RvX2hvd3RvX3JlbGEpOiBOZXcgZnVuY3Rpb24uCgkodjg1MF9lbGZfcGVyZm9ybV9yZWxvY2F0aW9uKTogIFJlbmFtZWQgZnJvbQoJdjg1MF9lbGZfc3RvcmVfYWRkZW5kX2luX2luc24uICBSZW1vdmVkIHJlcGxhY2UgYXJndW1lbnQuCgkodjg1MF9lbGZfcmVsb2MpOiBzdG9yZSB0aGUgcmVsb2NhdGlvbiBpbiB0aGUgYWRkZW5kIGZpZWxkIGluc3RlYWQKCW9mIHRoZSBpbnNuLgoJKHY4NTBfZWxmX2ZpbmFsX2xpbmtfcmVsb2NhdGUpOiAgTm93IGNhbGxzCgl2ODUwX2VsZl9wZXJmb3JtX3JlbG9jYXRpb24uCgkodjg1MF9lbGZfcmVsb2NhdGVfc2VjdGlvbik6ICBSZW1vdmUgY29kZSB0byBnZW5lcmF0ZSBSRUwKCXJlbG9jYXRpb25zLgoKVGh1IE1hciAyNiAxMzozMjoxNyAxOTk4ICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQGN5Z251cy5jb20+CgoJKiBjb2ZmY29kZS5oIChjb2ZmX25ld19zZWN0aW9uX2hvb2spOiBTZXQgdGhlIHR5cGUgYW5kIHN0b3JhZ2UKCWNsYXNzIGluIHRoZSBuYXRpdmUgc3ltYm9sIGluZm9ybWF0aW9uIGFsbG9jYXRlZCBmb3IgYSBuZXcgc2VjdGlvbgoJc3ltYm9sLgoKVGh1IE1hciAyNiAxMDoxMzo0MSAxOTk4ICBOaWNrIENsaWZ0b24gIDxuaWNrY0BjeWdudXMuY29tPgoKCSogcGVpY29kZS5oOiBDaGFpbiB0b2dldGhlciBjYWxscyB0bwoJY29mZl9iZmRfY29weV9wcml2YXRlX2JmZF9kYXRhIGFuZAoJY29mZl9iZmRfcHJpbnRfcHJpdmF0ZV9iZmRfZGF0YS4KCgkqIGNvZmYtYXJtLmM6IEFkZCBwcm90b3R5cGVzIGZvcgoJY29mZl9hcm1fYmZkX3ByaW50X3ByaXZhdGVfYmZkX2RhdGEgYW5kCgljb2ZmX2FybV9iZmRfY29weV9wcml2YXRlX2JmZF9kYXRhLgoKV2VkIE1hciAyNSAxNTo0NTo1NSAxOTk4ICBOaWNrIENsaWZ0b24gIDxuaWNrY0BjeWdudXMuY29tPgoKCSogY29mZmNvZGUuaCAoY29mZl9ta29iamVjdF9ob29rKTogU2V0IHByaXZhdGUgZmFsZ3MgZXZlbiBmb3IgYSBQRQoJYnVpbGQuCgoJKiBwZWljb2RlLmg6IENhbGwgYXJtLWNvZmYgcHJpdmF0ZSBkYXRhIGZ1bmN0aW9ucyBhZnRlciBoYW5kbGluZwoJcGUgcHJpdmF0ZSBkYXRhLgoKCSogY29mZi1hcm0uYzogVHVybiBzdGF0aWNzIGludG8gZ2xvYmFscyBzbyB0aGF0IHRoZXkgY2FuIGJlIHNoYXJlZAoJYm90aCBwZSBhbmQgcGVpIGJhY2tlbmRzLgoKV2VkIE1hciAyNSAxNToxOTozOCAxOTk4ICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQGN5Z251cy5jb20+CgoJKiBhb3V0ZjEuaCAoc3Vub3Nfc2V0X2FyY2hfbWFjaCk6IFVzZSBiZmRfbWFjaF9tNjgqIHJhdGhlciB0aGFuCglwbGFpbiBudW1iZXJzLgoJKHN1bm9zX3dyaXRlX29iamVjdF9jb250ZW50cyk6IExpa2V3aXNlLgoJKiBhb3V0eC5oIChOQU1FKGFvdXQsbWFjaGluZV90eXBlKSk6IExpa2V3aXNlLgoJKiBjb2ZmY29kZS5oIChjb2ZmX3NldF9hcmNoX21hY2hfaG9vayk6IExpa2V3aXNlLgoKV2VkIE1hciAyNSAxMzo1OToyNCAxOTk4ICBBbmRyZWFzIFNjaHdhYiAgPHNjaHdhYkBpc3Nhbi5pbmZvcm1hdGlrLnVuaS1kb3J0bXVuZC5kZT4KCgkqIGFyY2h1cmVzLmMgKGJmZF9tYWNoX202OCopOiBBZGQgZGVmaW5pdGlvbnMgZm9yIHZhcmlvdXMgbTY4awoJdmFyaWFudHMuCgkoYmZkX2RlZmF1bHRfc2Nhbik6IFJlbW92ZSBtNjhrIHNwZWNpYWwgY2FzZXMuCgkqIGJmZC1pbjIuaDogUmVidWlsZC4KCSogbWlwc2JzZC5jIChNWSh3cml0ZV9vYmplY3RfY29udGVudHMpKTogVXNlIGJmZF9tYWNoX202OCogcmF0aGVyCgl0aGFuIHBsYWluIG51bWJlcnMuCgkqIHNwYXJjbHlueC5jIChOQU1FKGx5bngsc2V0X2FyY2hfbWFjaCkpOiBMaWtld2lzZS4KCSogY3B1LW02OGsuYyAoYXJjaF9pbmZvX3N0cnVjdCk6IExpa2V3aXNlLiAgQWRkIGVudHJ5IGZvcgoJbTY4azo2ODAwMC4KCShiZmRfbTY4a19hcmNoKTogU2V0IG1hY2ggZmllbGQgdG8gemVybyB0byBzaWduYWwgbm8gZXhwbGljaXQKCXNlbGVjdGlvbiwgY2hhbmdlIHByaW50YWJsZV9uYW1lIHRvIGp1c3QgIm02OGsiIGFuZCBtYWtlIHRoYXQgdGhlCglkZWZhdWx0IGluc3RlYWQgb2YgbTY4azo2ODAyMC4KCgkqIGFvdXQtdGljMzAuYyAoTkFNRSk6IERlZmluZSB0aGlzIHRvIGF2b2lkIG11bHRpcGxlIGRlZmluaXRpb25zCglmcm9tIGFvdXR4LmguCgkoTVlfZ2V0X3NlY3Rpb25fY29udGVudHMpOiBEZWZpbmUgYXMgYW91dF8zMl9nZXRfc2VjdGlvbl9jb250ZW50cwoJcmF0aGVyIHRoYW4gTkFNRShhb3V0LGdldF9zZWN0aW9uX2NvbnRlbnRzKS4KCgkqIGVsZi1tMTAzMDAuYyAoZWxmMzJfbW4xMDMwMF9saW5rX2hhc2hfdGFibGVfY3JlYXRlKTogRml4IGNhc3QuCgoJKiBldmF4LWFscGhhLmMgKGV2YXhfc2V0X2FyY2hfbWFjaCk6IE9ubHkgYWNjZXB0IGJmZF9hcmNoX2FscGhhCglhbmQgY2FsbCBiZmRfZGVmYXVsdF9zZXRfYXJjaF9tYWNoIHRvIGRvIHRoZSByZWFsIHdvcmsuCgpXZWQgTWFyIDI1IDEwOjQxOjM1IDE5OTggIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBib3V0LmMgKEJBTFgpOiBJbmNsdWRlIHJldHVybiByZWdpc3RlciBnMTQgYXMgcGFydCBvZiB0aGUgaW5zbi4KCShCQUxYX01BU0spOiBOZXcuCgkoY2FsbGp4X2NhbGxiYWNrKTogVXNlIGl0LgoKV2VkIE1hciAyNSAxMToxOToyOCAxOTk4ICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQGN5Z251cy5jb20+CgoJKiBsaWJiZmQtaW4uaCAoQkZEX0FMSUdOKTogQ2FzdCB0aGlzIHBhcmFtZXRlciB0byBiZmRfdm1hLgoJKiBsaWJiZmQuaDogUmVidWlsZC4KCgkqIGVsZi1tMTAzMDAuYyAoZWxmMzJfbW4xMDMwMF9maW5pc2hfaGFzaF90YWJsZV9lbnRyeSk6IENoYW5nZQoJYnl0ZV9jb3VudCB0byB1bnNpZ25lZCBpbnQuCgkobW4xMDMwMF9lbGZfcmVsYXhfc2VjdGlvbik6IEluaXRpYWxpemUgaW50ZXJuYWxfcmVsb2NzLiAgUmVtb3ZlCgl1bnVzZWQgbG9jYWwgdmFyaWFibGVzLgoKCSogZXZheC1hbHBoYS5jIChldmF4X2Nsb3NlX2FuZF9jbGVhbnVwKTogUmVtb3ZlIHVudXNlZCBsb2NhbAoJdmFyaWFibGVzIGVyIGFuZCBlcjEuCgoJKiBjcHUtdjg1MC5jOiBJbmNsdWRlIDxjdHlwZS5oPi4KCShzY2FuKTogQ2FzZSBpc2RpZ2l0IGFyZ3VtZW50IHRvIHVuc2lnbmVkIGNoYXIuCgoJRnJvbSBZYW4gTWVyb3RoIDxZQU4uTUVST1RIQHN0LmNvbT46CgkqIGloZXguYyAoaWhleF9zY2FuKTogQWRkIGV4dGJhc2UgdmFyaWFibGUgc28gdGhhdCBnZXR0aW5nIGFuCglleHRlbmRlZCBsaW5lYXIgYWRkcmVzcyByZWNvcmQgZG9lcyBub3QgaWdub3JlIGFueSBwcmV2aW91cwoJZXh0ZW5kZWQgYWRkcmVzcy4KCShpaGV4X3dyaXRlX29iamVjdF9jb250ZW50cyk6IFdoZW4gd3JpdGluZyBvdXQgYW4gZXh0ZW5kZWQgbGluZWFyCglhZGRyZXNzIHJlY29yZCwgemVybyBvdXQgYW55IHByZXZpb3VzIGV4dGVuZGVkIGFkZHJlc3MuCgpUdWUgTWFyIDI0IDE2OjA5OjQzIDE5OTggIE1hbmZyZWQgSG9sbHN0ZWluICA8bWFuZnJlZEBzLWRpcmVrdG5ldC5kZT4KCgkqIGllZWUuYyAoZG9fb25lKTogQ2hlY2sgc2VjdGlvbiBiZWZvcmUgZGVyZWZlcmVuY2luZyBpdC4KCShpZWVlX2Nhbm9uaWNhbGl6ZV9yZWxvYyk6IExpa2V3aXNlIHdpdGggc3JjLT5yZWxlbnQuc3ltX3B0cl9wdHIuCgkoaWVlZV9nZW5lcmljX3N0YXRfYXJjaF9lbHQpOiBMaWtld2lzZSB3aXRoIGFiZmQtPm15X2FyY2hpdmUuCgpNb24gTWFyIDIzIDE4OjUxOjQ3IDE5OTggIEpvZWwgU2hlcnJpbGwgIDxqb2VsQE9BUmNvcnAuY29tPgoKCSogY29uZmlnLmJmZDogKHNoKi0qLXJ0ZW1zKik6IFN3aXRjaGVkIGZyb20gRUxGIHRvIENPRkYuCgpNb24gTWFyIDIzIDE0OjIzOjM2IDE5OTggIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQGN5Z251cy5jb20+CgoJKiBjb2ZmLWFybS5jOiBBZGQgaW50ZXJ3b3JraW5nIGZ1bmN0aW9ucyB0byBwZSBiYWNrZW5kcy4KCkZyaSBNYXIgMjAgMTg6NDc6MjAgMTk5OCAgSWFuIExhbmNlIFRheWxvciAgPGlhbkBjeWdudXMuY29tPgoKCSogY29uZmlndXJlLmluOiBVc2UgQU1fRElTQUJMRV9TSEFSRUQuCgkqIGFjbG9jYWwubTQsIGNvbmZpZ3VyZTogUmVidWlsZCB3aXRoIGxpYnRvb2wgMS4yLgoKRnJpIE1hciAyMCAxMToyNTo0MSAxOTk4ICBOaWNrIENsaWZ0b24gIDxuaWNrY0BjeWdudXMuY29tPgoKCSogY29mZi1hcm0uYyAoY29mZl9hcm1fcmVsb2NhdGVfc2VjdGlvbik6IEJldHRlciBlcnJvciBtZXNzYWdlcwoJd2hlbiBpbnRlcm93cmtpbmcgY29uZmx1Y3RzIG9jY3VyLiAgQ291cnRlc3kgb2YgSm9uYXRoYW4gV2FsdG9uCglhbmQgVG9ueSBUaG9tcHNvbi4KCShhb3V0YXJtX3N0ZF9yZWxvY19ob3d0byk6IEZpeGVkIGJpdHNpemUgZmllbGRzIG9mIHJpZ2h0c2hpZnRlZAoJcmVsb2NhdGlvbnMuICBQYXRjaCBjb3VydGVzeSBvZiBKb25hdGhhbiBXYWx0b24gYW5kIFRvbnkKCVRob21wc29uLgoKRnJpIE1hciAyMCAwMjoyNjo0MyAxOTk4ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogZWxmMzItc3BhcmMuYyAoZWxmMzJfc3BhcmNfYWRqdXN0X2R5bmFtaWNfc3ltYm9sKTogUmV2ZXJ0CglwYXJ0IG9mIEZlYiAyMiBjaGFuZ2UgY29udHJvbGluZyB3aGVuIHRvIG92ZXJyaWRlIHRoZSBleGlzdGluZwoJc3ltYm9sIHdpdGggdGhlIC5wbHQgZW50cnkuCgpXZWQgTWFyIDE4IDA5OjI2OjI1IDE5OTggIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQGN5Z251cy5jb20+CgoJKiBjb25maWcuYmZkICh0YXJnX2NwdSk6IEFkZCB0aHVtYi1wZSB0YXJnZXQuCgoJKiBjb2ZmY29kZS5oIChPVEhFUl9HTE9CQUxfQ0xBU1MpOiBTdXBwb3J0IHRodW1iIGV4dGVybmFsCglmdW5jdGlvbnMgaW4gUEUgYnVpbGQuCgpTdW4gTWFyICA4IDIzOjM3OjI2IDE5OTggIFN0YW4gQ294ICA8c2NveEBlcXVpbm94LmN5Z251cy5jb20+CgoJKiBjb25maWcuYmZkIChzcGFyY2xpdGUtKi1lbGYqKTogQWRkZWQuCgpNb24gRmViIDIzIDE5OjMxOjE5IDE5OTggIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5AY3lnbnVzLmNvbT4KCgkqIGNvbmZpZ3VyZS5pbjogQWRkIGVsZi5sbyB0byBlbGYgc2hlbGwgdmFyaWFibGUuCgkqIE1ha2VmaWxlLmFtIChCRkRfTElCUyk6IFJlbW92ZSBlbGYubG8uCgkoQkZEX0xJQlNfQ0ZJTEVTKTogUmVtb3ZlIGVsZi5jLgoJKEJGRDMyX0JBQ0tFTkRTKTogQWRkIGVsZi5sby4KCShCRkQzMl9CQUNLRU5EU19DRklMRVMpOiBBZGQgZWxmLmMuCgkqIGNvbmZpZ3VyZSwgTWFrZWZpbGUuaW46IFJlYnVpbGQuCgoxOTk4LTAyLTIzIDE1OjUzICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogZWxmMzItaTM4Ni5jIChlbGZfaTM4Nl9yZWxvY2F0ZV9zZWN0aW9uKTogQSBwYy1yZWxhdGl2ZQoJcmVsb2NhdGlvbiBhZ2FpbnN0IGEgbm9uLWxvY2FsIHN5bWJvbCBzaG91bGQgbm90IGhhdmUgYSBkeW5hbWljCglyZWxvY2F0aW9uLgoKTW9uIEZlYiAyMyAxNjoxNzowOCAxOTk4ICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQGN5Z251cy5jb20+CgoJKiBwZWljb2RlLmggKGNvZmZfc3dhcF9maWxlaGRyX2luKTogRG9uJ3Qgc2V0IEJGRCBmbGFnIEhBU19TWU1TIGluCglDT0ZGIGZpbGVoZHIgZmxhZ3MuCgkocGVfcHJpbnRfcHJpdmF0ZV9iZmRfZGF0YSk6IFByaW50IFBFIGZsYWdzLiAgRnJvbSBNaWtleQoJPGplZmZkYkBuZXR6b25lLmNvbT4uCgpTdW4gRmViIDIyIDIwOjM5OjAwIDE5OTggIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBlbGYzMi1zcGFyYy5jIChlbGYzMl9zcGFyY19hZGp1c3RfZHluYW1pY19zeW1ib2wpOiBEb24ndCBjcmVhdGUKCWEgcGx0IGVudHJ5IHdoZW4gd2UgY2FuIGRldGVybWluZSB0aGF0IHdlIGF1dGhvcml0YXRpdmVseSBkZWZpbmUKCXRoZSBzeW1ib2wuCgpTdW4gRmViIDIyIDIwOjMzOjA1IDE5OTggIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBjb25maWd1cmUuaW4gKENPUkVGSUxFIHNlbGVjdGlvbik6IFJlbW92ZSBzcGFyYy0qLWxpbnV4Ki4gIFRoZXkKCWRvbid0IGFjdHVhbGx5IHVzZSB0cmFkLWNvcmUsIGJ1dCBhIFN1bk9TLXN0eWxlIGNvcmUgZmlsZSBoYW5kbGVkCglieSBnZGIgZGlyZWN0bHkuCgkqIGhvc3RzL3NwYXJjbGludXguaDogUmVtb3ZlLgoKV2VkIEZlYiAxOCAxNTozMTowNiAxOTk4ICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQGN5Z251cy5jb20+CgoJKiBwZWljb2RlLmggKHBlX3ByaW50X2lkYXRhKTogSWYgdGhlcmUgaXMgbm8gLmlkYXRhIHNlY3Rpb24sIGxvb2sKCWZvciB0aGUgaW1wb3J0IHRhYmxlcyBpbiBzb21lIG90aGVyIHNlY3Rpb24uICBNYWtlIHRoZSBpbml0aWFsCglsYWJlbCBsaW5lIHVwIGJldHRlciB3aXRoIHRoZSBkYXRhLiAgUHJpbnQgdGhlIGltcG9ydCBhZGRyZXNzCgl0YWJsZSBldmVuIGlmIHRoZXJlIGlzIG5vIGltcG9ydCBuYW1lIHRhYmxlLiAgSWYgdGhlIGltcG9ydAoJYWRkcmVzcyB0YWJsZSBob2xkcyBhY3R1YWwgYWRkcmVzc2VzLCBwcmludCB0aGVtLgoKVHVlIEZlYiAxNyAxMjo1ODozNCAxOTk4ICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQGN5Z251cy5jb20+CgoJKiBsaWJiZmQuYyAoYmZkX3NlZWspOiBJZiBmc2VlayBmYWlscywgc2F2ZSBlcnJubyBhcm91bmQgY2FsbCB0bwoJYmZkX3RlbGwuICBJZiBlcnJubyBpcyBFSU5WQUwsIHNldCBiZmRfZXJyb3JfZmlsZV90cnVuY2F0ZWQsIG5vdAoJYmZkX2Vycm9yX3N5c3RlbV9jYWxsLgoKRnJpIEZlYiAxMyAxMzoxMTozMyAxOTk4ICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQGN5Z251cy5jb20+CgoJKiBNYWtlZmlsZS5hbSAoQVVUT01BS0VfT1BUSU9OUyk6IERlZmluZS4KCSogY29uZmlndXJlLCBNYWtlZmlsZS5pbiwgYWNsb2NhbC5tNDogUmVidWlsZCB3aXRoIGF1dG9tYWtlIDEuMmUuCgoJRnJvbSBILkouIEx1IDxoamxAZ251Lm9yZz46CgkqIE1ha2VmaWxlLmFtIChsaWJiZmRfbGFfTERGTEFHUyk6IERlZmluZS4KCSogTWFrZWZpbGUuaW46IFJlYnVpbGQuCgpUaHUgRmViIDEyIDE3OjMxOjExIDE5OTggIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5AY3lnbnVzLmNvbT4KCglOZXRCU0QgcGF0Y2hlcyBmcm9tIEdvcmRvbiBXLiBSb3NzIDxnd3JAbWMuY29tPjoKCSogbmV0YnNkLmggKE1BQ0hUWVBFX09LKTogRGVmaW5lLgoJKE1ZKHdyaXRlX29iamVjdF9jb250ZW50cykpOiBVc2UgREVGQVVMVF9BUkNIIGFuZCBERUZBVUxUX01JRCB3aGVuCgljYWxsaW5nIE5fU0VUX01BQ0hUWVBFLCByYXRoZXIgdGhhbiBoYXZpbmcgYSBzd2l0Y2guCgkqIGxpYmFvdXQuaCAoZW51bSBtYWNoaW5lX3R5cGUpOiBBZGQgTV9QTUFYX05FVEJTRCwgTV9WQVhfTkVUQlNELAoJYW5kIE1fQUxQSEFfTkVUQlNELgoJKiBpMzg2bmV0YnNkLmMgKE1BQ0hUWVBFX09LKTogRG9uJ3QgZGVmaW5lLgoJKERFRkFVTFRfTUlEKTogRGVmaW5lLgoJKiBtNjhrNGtuZXRic2QuYyAoU0VHTUVOVF9TSVpFKTogRG9uJ3QgZGVmaW5lLgoJKE1BQ0hUWVBFX09LKTogRG9uJ3QgZGVmaW5lLgoJKERFRkFVTFRfTUlEKTogRGVmaW5lLgoJKiBtNjhrbmV0YnNkLmM6IChNQUNIVFlQRV9PSyk6IERvbid0IGRlZmluZS4KCShERUZBVUxUX01JRCk6IERlZmluZS4KCSogbnMzMmtuZXRic2QuYyAoTUFDSFRZUEVfT0spOiBEb24ndCBkZWZpbmUuCgkoREVGQVVMVF9NSUQpOiBEZWZpbmUuCgkqIHNwYXJjbmV0YnNkLmMgKE1BQ0hUWVBFX09LKTogRG9uJ3QgZGVmaW5lLgoJKERFRkFVTFRfTUlEKTogRGVmaW5lLgoKCU5ldEJTRCBwYXRjaGVzIGZyb20gR29yZG9uIFcuIFJvc3MgPGd3ckBtYy5jb20+OgoJKiB2YXhuZXRic2QuYzogTmV3IGZpbGUuCgkqIG5ldGJzZC1jb3JlLmM6IENsZWFuIHVwLiAgUmVtb3ZlIHVudXNlZCBtYWNyb3MuICBVc2UgbmV0YnNkCglyYXRoZXIgdGhhbiBuZXRic2RfY29yZS4KCSogdGFyZ2V0cy5jICh2YXhuZXRic2RfdmVjKTogRGVjbGFyZS4KCShiZmRfdGFyZ2V0X3ZlY3Rvcik6IEFkZCB2YXhuZXRic2RfdmVjLiAgSWYgTkVUQlNEX0NPUkUgaXMKCWRlZmluZWQsIGFkZCBuZXRic2RfY29yZV92ZWMuCgkqIGNvbmZpZ3VyZS5pbjogU2V0IENPUkVGSUxFIGZvciBhbHBoYSotKi1uZXRic2QqIGFuZAoJcG93ZXJwYy0qLW5ldGJzZCogdG8gbmV0YnNkLWNvcmUubG8uICBJZiBDT1JFRklMRSBpcwoJbmV0YnNkLWNvcmUubG8sIHNldCBDT1JFRkxBRyB0byAtRE5FVEJTRF9DT1JFLgoJKiBjb25maWcuYmZkIChhbHBoYSotKi1uZXRic2QqKTogTmV3IHRhcmdldC4KCSogTWFrZWZpbGUuYW06IFJlYnVpbGQgZGVwZW5kZW5jaWVzLgoJKEJGRDMyX0JBQ0tFTkRTKTogQWRkIHZheG5ldGJzZC5sby4KCShCRkQzMl9CQUNLRU5EU19DRklMRVMpOiBBZGQgdmF4bmV0YnNkLmMuCgkqIGNvbmZpZ3VyZSwgTWFrZWZpbGUuaW46IFJlYnVpbGQuCgoJKiBjb25maWd1cmUuaG9zdDogUmVtb3ZlIHRoZSBvbGQgc2hhcmVkIGxpYnJhcnkgYnVpbGQgc3R1ZmYuICBXZQoJbm93IHVzZSBsaWJ0b29sIGluc3RlYWQuCgpXZWQgRmViIDExIDE3OjEzOjA5IDE5OTggIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiB0ZWtoZXguYyAodGVraGV4X3dyaXRlX29iamVjdF9jb250ZW50cyk6IENhbGwgdGVraGV4X2luaXQuCgpUdWUgRmViIDEwIDE5OjIzOjI4IDE5OTggIEguSi4gTHUgIDxoamxAZ251Lm9yZz4KCgkqIGNvbmZpZ3VyZS5pbjogVGFrZSBzdGFiLXN5bXMubG8gb3V0IG9mIHNwYXJjbGludXhfdmVjIGxpc3QuCgkqIGNvbmZpZ3VyZTogUmVidWlsZC4KClR1ZSBGZWIgMTAgMTU6MTY6MzggMTk5OCAgTmljayBDbGlmdG9uICA8bmlja2NAY3lnbnVzLmNvbT4KCSogZWxmMzItdjg1MC5jIChyZW1lbWJlcl9oaTE2c19yZWxvYyk6IE5ldyBmdW5jdGlvbi4KCShmaW5kX3JlbWVtYmVyZWRfaGkxNnNfcmVsb2MpOiBOZXcgZnVuY3Rpb24uCgkodjg1MF9lbGZfc3RvcmVfYWRkZW5kX2luX2luc24pOiBVc2UgdGhlIGFib3ZlIG5ldyBmdW5jdGlvbnMgdG8KCW1hdGNoIHVwIEhJNlMgcmVsb2NzIHdpdGggTE8xNiByZWxvY3MuCgpUdWUgRmViIDEwIDE1OjAxOjM5IDE5OTggIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5AY3lnbnVzLmNvbT4KCgkqIGNvbmZpZ3VyZS5pbjogQ2hhbmdlIC1saW51eCogdG8gLWxpbnV4LWdudSouCgkqIGNvbmZpZy5iZmQsIGNvbmZpZ3VyZS5ob3N0OiBMaWtld2lzZS4KCSogY29uZmlndXJlOiBSZWJ1aWxkLgoKTW9uIEZlYiAgOSAxOTo0MDo1OSAxOTk4ICBOaWNrIENsaWZ0b24gIDxuaWNrY0BjeWdudXMuY29tPgoKCSogZWxmMzItdjg1MC5jICh2ODUwX2VsZl9zdG9yZV9hZGRlbmRfaW5faW5zbik6IEZpeCBhbm90aGVyCglMTzE2L0hJMTZTIGJ1ZyBhbmQgaW1wcm92ZSBjb21tZW50cyBhYm91dCB3aGF0IGlzIGdvaW5nIG9uLgoKU2F0IEZlYiAgNyAxNToyNzowMyAxOTk4ICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQGN5Z251cy5jb20+CgoJKiBjb25maWd1cmUsIGFjbG9jYWwubTQ6IFJlYnVpbGQgd2l0aCBuZXcgbGlidG9vbC4KCkZyaSBGZWIgIDYgMTQ6NDg6MjAgMTk5OCAgTmljayBDbGlmdG9uICA8bmlja2NAY3lnbnVzLmNvbT4KCgkqIGVsZjMyLXY4NTAuYyAodjg1MF9lbGZfbWVyZ2VfcHJpdmF0ZV9iZmRfZGF0YSk6IERvIG5vdCBjb21wbGFpbgoJd2hlbiBtZXJnaW5nIHY4NTAgY29kZSBpbnRvIHY4NTBlL3Y4NTBlYSBjb2RlLiAgRG8gbm90IGluaXRpYWxpc2UKCW91dHB1dCBmbGFncyBpZiB0aGUgaW5wdXQgaXMgdGhlIGRlZmF1bHQgYXJjaGl0ZWN0dXJlLgoKRnJpIEZlYiAgNiAxMTo1MDoyMiAxOTk4ICBKZWZmcmV5IEEgTGF3ICAobGF3QGN5Z251cy5jb20pCgoJKiBlbGYzMi1taXBzLmMgKGJmZF9lbGYzMl9iZmRfcmVsb2NfdHlwZV9sb29rdXApOiBGb3IgQkZEX1JFTE9DX0NUT1IKCWdldCB0aGUgc2l6ZSBmcm9tIGJmZF9hcmNoX2JpdHNfcGVyX2FkZHJlc3MgaW5zdGVhZCBvZiBkaXJlY3RseQoJZnJvbSB0aGUgaXNhLgoKVGh1IEZlYiAgNSAxNDoyMTozNCAxOTk4ICBNaWNoYWVsIE1laXNzbmVyICA8bWVpc3NuZXJAY3lnbnVzLmNvbT4KCgkqIGxpYmJmZC1pbi5oIChCRkRfQUxJR04pOiBJZiByb3VuZGluZyB1cCB3b3VsZCBjYXVzZSB0aGUgYWRkcmVzcwoJdG8gd3JhcCwganVzdCByZXR1cm4gYWxsIDEncyBiaXRzIGluc3RlYWQuCgkqIGxpYmJmZC5oOiBSZWdlbmVyYXRlLgoKVGh1IEZlYiAgNSAxMTo1MTowNSAxOTk4ICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQGN5Z251cy5jb20+CgoJKiBjb2ZmLWkzODYuYyAoY29mZl9wZV9pMzg2X3JlbG9jYXRlX3NlY3Rpb24pOiBOZXcgc3RhdGljIGZ1bmN0aW9uCglpZiBDT0ZGX1dJVEhfUEUuCgkoY29mZl9yZWxvY2F0ZV9zZWN0aW9uKTogSWYgQ09GRl9XSVRIX1BFLCBkZWZpbmUgYXMKCWNvZmZfcGVfaTM4Nl9yZWxvY2F0ZV9zZWN0aW9uLgoJKiBjb2ZmY29kZS5oIChjb2ZmX3dyaXRlX29iamVjdF9jb250ZW50cyk6IElmIENPRkZfSU1BR0VfV0lUSF9QRSwKCXNraXAgZW1wdHkgc2VjdGlvbnMsIHRvIG1hdGNoIGNvZmZfd3JpdGVfb2JqZWN0X2NvbnRlbnRzLgoKCSogZWxmNjQtbWlwcy5jIChtaXBzX2VsZjY0X3N3YXBfcmVsb2NhX291dCk6IFN3YXAgb3V0IHJfYWRkZW5kLAoJcmF0aGVyIHRoYW4gc3dhcHBpbmcgb3V0IHJfb2Zmc2V0IHR3aWNlLiAgRnJvbSBMdWtlIERlbGxlcgoJPGx1a2VkQGNzZS51bnN3LmVkdS5hdT4uCgpXZWQgRmViICA0IDE5OjExOjI4IDE5OTggIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5AY3lnbnVzLmNvbT4KCgkqIGNvbmZpZ3VyZS5pbjogU2V0IGxpYnRvb2xfZW5hYmxlX3NoYXJlZCByYXRoZXIgdGhhbgoJbGlidG9vbF9zaGFyZWQuICBSZW1vdmUgZGl2ZXJzaW9uIGhhY2suCgkqIGNvbmZpZ3VyZSwgTWFrZWZpbGUuaW4sIGRvYy9NYWtlZmlsZS5pbiwgYWNsb2NhbC5tNDogUmVidWlsZAoJd2l0aCBuZXcgbGlidG9vbC4KCldlZCBGZWIgIDQgMTY6MTA6MjEgMTk5OCAgQnJlbnQgQmFjY2FsYSAgPGJhY2NhbGFAZnJlZXNvZnQub3JnPgoKCSogc3ltcy5jIChzdHJ1Y3Qgc3RhYl9jYWNoZSk6IERlZmluZS4KCShzdHJ1Y3Qgc3RhYl9maW5kX2luZm8pOiBSZW1vdmUgY2FjaGVkX29mZnNldCwgY2FjaGVkX3N0YWIsCgljYWNoZWRfc3RyLCBhbmQgY2FjaGVkX3N0cm9mZiBmaWVsZHMuICBBZGQgZmlsZV9jYWNoZSwKCWZ1bmN0aW9uX2NhY2hlLCBhbmQgbGluZV9jYWNoZSBmaWVsZHMuCgkoX2JmZF9zdGFiX3NlY3Rpb25fZmluZF9uZWFyZXN0X2xpbmUpOiBVc2UgZXh0ZW5zaXZlIGNhY2hpbmcgdG8KCXNwZWVkIHVwIHNlYXJjaGVzLgoKV2VkIEZlYiAgNCAxMzozNDoyMiAxOTk4ICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQGN5Z251cy5jb20+CgoJKiBwZWljb2RlLmggKHBlX3ByaW50X2lkYXRhKTogQ2hlY2sgZm9yIGltcG9ydCBvZiBvcmRpbmFsIHJhdGhlcgoJdGhhbiBuYW1lLgoJKHBlX3ByaW50X2VkYXRhKTogSWYgdGhlcmUgaXMgbm8gLmVkYXRhIHNlY3Rpb24sIGxvb2sgZm9yIHRoZQoJZXhwb3J0IGRhdGEgaW4gc29tZSBvdGhlciBzZWN0aW9uLgoKTW9uIEZlYiAgMiAyMDowNTo0MiAxOTk4ICBKYXNvbiBNb2xlbmRhICAoY3Jhc2hAYnVnc2hhY2suY3lnbnVzLmNvbSkKCgkqIGNvbmZpZ3VyZS5pbjogQ2hhbmdlIHZlcnNpb24gdG8gMi44LjQuCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZWQuCgpNb24gRmViICAyIDE3OjM5OjM5IDE5OTggIFN0ZXZlIEhhd29ydGggIDxzdGV2ZUBwbS5jc2Uucm1pdC5FRFUuQVU+CgoJQWRkIHRtczMyMGMzMCBzdXBwb3J0OgoJKiBjcHUtdGljMzAuYzogTmV3IGZpbGUuCgkqIGFvdXQtdGljMzAuYzogTmV3IGZpbGUuCgkqIGNvZmYtdGljMzAuYzogTmV3IGZpbGUuCgkqIGFyY2h1cmVzLmMgKGJmZF9hcmNoX3RpYzMwKTogRGVmaW5lLgoJKGJmZF90aWMzMF9hcmNoKTogRGVjbGFyZS4KCShiZmRfYXJjaHVyZXNfbGlzdCk6IEFkZCBiZmRfdGljMzBfYXJjaC4KCSogdGFyZ2V0cy5jIChiZmRfdGFyZ2V0X3ZlY3Rvcik6IEFkZCB0aWMzMF9hb3V0X3ZlYyBhbmQKCXRpYzMwX2NvZmZfdmVjLgoJKiByZWxvYy5jIChCRkRfUkVMT0NfVElDMzBfTERQKTogRGVmaW5lLgoJKiBjb2ZmY29kZS5oIChjb2ZmX3NldF9hcmNoX21hY2hfaG9vayk6IEFkZCB0aWMzMCBjYXNlLgoJKGNvZmZfc2V0X2ZsYWdzKTogTGlrZXdpc2UuCgkqIGNvbmZpZy5iZmQgKHRpYzMwLSotKmFvdXQqLCB0aWMzMC0qLSpjb2ZmKik6IE5ldyB0YXJnZXRzLgoJKiBjb25maWd1cmUuaW4gKHRpYzMwX2FvdXRfdmVjLCB0aWMzMF9jb2ZmX3ZlYyk6IE5ldyB2ZWN0b3JzLgoJKiBNYWtlZmlsZS5hbTogUmVidWlsZCBkZXBlbmRlbmNpZXMuCgkoQUxMX01BQ0hJTkVTKTogQWRkIGNwdS10aWMzMC5sby4KCShBTExfTUFDSElORVNfQ0ZJTEVTKTogQWRkIGNwdS10aWMzMC5jLgoJKEJGRDMyX0JBQ0tFTkRTKTogQWRkIGFvdXQtdGljMzAubG8gYW5kIGNvZmYtdGljMzAubG8uCgkoQkZEMzJfQkFDS0VORFNfQ0ZJTEVTKTogQWRkIGFvdXQtdGljMzAuYyBhbmQgY29mZi10aWMzMC5jLgoJKiBjb25maWd1cmUsIE1ha2VmaWxlLmluLCBiZmQtaW4yLmgsIGxpYmJmZC5oOiBSZWJ1aWxkLgoKTW9uIEZlYiAgMiAxMjoyNToxMiAxOTk4ICBOaWNrIENsaWZ0b24gIDxuaWNrY0BjeWdudXMuY29tPgoKCSogZWxmMzItdjg1MC5jICh2ODUwX2VsZl9zdG9yZV9hZGRlbmRfaW5faW5zbik6IEFsbG93IEhJMTZfUyByZWxvYwoJdG8gbGFnIGJlaGluZCBMTzE2IHJlbG9jIGJ5IGEgY291cGxlIG9mIGluc3RydWN0aW9ucy4KCk1vbiBGZWIgIDIgMTQ6MDk6NDYgMTk5OCAgSWFuIExhbmNlIFRheWxvciAgPGlhbkBjeWdudXMuY29tPgoKCSogTWFrZWZpbGUuYW0gKCQoc3JjZGlyKS9iZmQtaW4yLmgpOiBBZGQgZHVtbXkgY29tbWFuZCB0byBmb3JjZQoJbWFrZSB0byByZWV4YW1pbmUgdGhlIGZpbGUgdGltZXN0YW1wLgoJKCQoc3JjZGlyKS9saWJiZmQuaCwgJChzcmNkZGlyKS9saWJjb2ZmLmgpOiBMaWtld2lzZS4KCgkqIGVsZjY0LWFscGhhLmMgKEVMRl9NQVhQQUdFU0laRSk6IENoYW5nZSB0byAweDEwMDAwIGZyb20KCTB4MTAwMDAwLgoKRnJpIEphbiAzMCAxOTowNzowNyAxOTk4ICBHZW9mZiBLZWF0aW5nICA8Z2VvZmZrQG96ZW1haWwuY29tLmF1PgoKCSogZWxmMzItcHBjLmMgKHBwY19lbGZfY3JlYXRlX2R5bmFtaWNfc2VjdGlvbnMpOiBOZXcgcHJvY2VkdXJlCgl0byBjcmVhdGUgLmR5bnNic3MgYW5kIC5yZWxhLnNic3Mgc2VjdGlvbnMuCgkocHBjX2VsZl9hZGp1c3RfZHluYW1pY19zeW1ib2wpOiBQdXQgc3BhY2UgZm9yIHNtYWxsIGRhdGEgdG8gYmUKCWNvcGllZCBmcm9tIGR5bmFtaWMgb2JqZWN0cyBpbnRvIC5zYnNzLgoJKHBwY19lbGZfc2l6ZV9keW5hbWljX3NlY3Rpb25zKTogU3RyaXAgLnJlbGEuc2JzcyBpZiB3ZSBkb24ndAoJdXNlIGl0LiAgQ29ycmVjdCB0eXBvIG9mIC5yZWxhLnNkYXRhMi4KCShwcGNfZWxmX2ZpbmlzaF9keW5hbWljX3N5bWJvbCk6IEdlbmVyYXRlIHJlbG9jIHRvIHdoZXJlIHdlCglwdXQgdGhlIGRhdGEsIHdoaWNoIG1heSBub3cgYmUgaW4gLnNic3MuCgkocHBjX2VsZl9yZWxvY2F0ZV9zZWN0aW9uKTogQSBTREFSRUwxNiByZWxvYyBjYW4gYmUgaW4gZHluc2Jzcy4KCShlbGZfYmFja2VuZF9jcmVhdGVfZHluYW1pY19zZWN0aW9ucyk6IERlZmluZSBhcwoJcHBjX2VsZl9jcmVhdGVfZHluYW1pY19zZWN0aW9ucy4KCgkqIGVsZjMyLXBwYy5jIChwcGNfZWxmX2NoZWNrX3JlbG9jcyk6IERvbid0IGVtaXQgUl9QUENfUkVMKiByZWxvY3MKCWFnYWluc3QgX0dMT0JBTF9PRkZTRVRfVEFCTEVfLgoJKHBwY19lbGZfcmVsb2NhdGVfc2VjdGlvbik6IERvbid0IGVtaXQgUl9QUENfUkVMMzIgcmVsb2NzIGluCglzaGFyZWQgbGlicmFyaWVzIHdoaWNoIHJlZmVyIHRvIGxvY2FsIHN5bWJvbHMuICBNYWtlIHN1cmUgdGhhdCB0aGUKCXRlc3QgZm9yIGFsbG9jYXRpbmcgc3BhY2UgZm9yIGEgcmVsb2MgaW4gYSBzaGFyZWQgb2JqZWN0IGlzIHRoZQoJc2FtZSBhcyB0aGUgdGVzdCBmb3IgZW1pdHRpbmcgYSByZWxvYy4KClRodSBKYW4gMjkgMTU6NTU6MzUgMTk5OCAgSi5KLiB2YW4gZGVyIEhlaWpkZW4gIDxKLkoudmFuZGVySGVpamRlbkBzdHVkZW50LnV0d2VudGUubmw+CgoJKiBjb25maWcuYmZkIChpWzM0NTZdLSotbWluZ3czMiopOiBOZXcgdGFyZ2V0LgoJKiBhY2luY2x1ZGUubTQgKEJGRF9CSU5BUllfT1BFTik6IENoZWNrIGZvciBtaW5ndzMyLgoJKiBhY2xvY2FsLm00LCBjb25maWd1cmU6IFJlYnVpbGQuCgpXZWQgSmFuIDI4IDEzOjQxOjI2IDE5OTggIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5AY3lnbnVzLmNvbT4KCgkqIGVsZi5jIChfYmZkX2VsZl9jbG9zZV9hbmRfY2xlYW51cCk6IE9ubHkgY2hlY2sgdGhlIHN0cnRhYiBpZiB3ZQoJaGF2ZSBhIGJmZF9vYmplY3QuCgpUdWUgSmFuIDI3IDIxOjQzOjU1IDE5OTggIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJU3BhcmMgdjkgQUJJIGNvbXBsaWFudCBQTFQ6CgkqIGVsZjY0LXNwYXJjLmMgKFBMVF9IRUFERVJfU0laRSk6IFY5IEFCSSB1c2VzIDQgZW50cmllcy4KCShwbHRfdGVtcGxhdGVzLCBzcGFyYzY0X2VsZl9idWlsZF9wbHRfZW50cnkpOiBEZWxldGUuCgkoTEFSR0VfUExUX1RIUkVTSE9MRCk6IE5ldyBkZWZpbmUuCgkoR09UX1JFU0VSVkVEX0VOVFJJRVMpOiBWOSBBQkkgb25seSB1c2VzIDEuCgkoc3BhcmM2NF9lbGZfYnVpbGRfcGx0KTogTmV3IGZ1bmN0aW9uLgoJKHNwYXJjNjRfZWxmX3BsdF9lbnRyeV9vZmZzZXQpOiBMaWtld2lzZS4KCShzcGFyYzY0X2VsZl9wbHRfcHRyX29mZnNldCk6IExpa2V3aXNlLgoJKHNwYXJjNjRfZWxmX2FkanVzdF9keW5hbWljX3N5bWJvbCk6IENoYW5nZSBoLT5wbHRfb2Zmc2V0IHRvCgljb250YWluIHRoZSBpbmRleCBmb3IgY29udmVuaWVuY2UuICBTa2lwIHRoZSBpbml0aWFsIGVudHJpZXMKCWluIC5yZWxhLnBsdC4KCShzcGFyYzY0X2VsZl9zaXplX2R5bmFtaWNfc2VjdGlvbnMpOiBaZXJvIHRoZSBhbGxvY2F0ZWQgY29udGVudHMKCW1lbW9yeSBmb3IgdGhlIGJlbmVmaXQgb2YgLnJlbGEucGx0LgoJKHNwYXJjNjRfZWxmX3JlbG9jYXRlX3NlY3Rpb24pOiBDYWxsIHNwYXJjNjRfZWxmX3BsdF9lbnRyeV9vZmZzZXQuCgkoc3BhcmM2NF9lbGZfZmluaXNoX2R5bmFtaWNfc3ltYm9sKTogS2lsbCB0ZW1wbGF0ZSBzdHVmZi4gIFVzZQoJc3BhcmM2NF9lbGZfcGx0X2VudHJ5X29mZnNldCAmIHNwYXJjNjRfZWxmX3BsdF9wdHJfb2Zmc2V0IGZvciByZWxvYy4KCShzcGFyYzY0X2VsZl9maW5pc2hfZHluYW1pY19zZWN0aW9ucyk6IERUX1BMVEdPVCBwb2ludHMgdG8gLnBsdC4KCUNhbGwgc3BhcmM2NF9lbGZfYnVpbGRfcGx0LgoJKGVsZl9iYWNrZW5kX3dhbnRfZ290X3BsdCk6IE5vLgoJKGVsZl9iYWNrZW5kX3BsdF9yZWFkb25seSk6IE5vLgoJKGVsZl9iYWNrZW5kX3BsdF9hbGlnbm1lbnQpOiA4LgoKCSogZWxmLmMgKF9iZmRfZWxmX2Nsb3NlX2FuZF9jbGVhbnVwKTogTmV3IGZ1bmN0aW9uOyBmcmVlIHRoZSBzaHN0cnRhYi4KCSogZWxmLWJmZC5oIChfYmZkX2VsZl9jbG9zZV9hbmRfY2xlYW51cCk6IERlY2xhcmUgaXQuCgkqIGVsZnh4LXRhcmdldC5oIChiZmRfZWxmTk5fY2xvc2VfYW5kX2NsZWFudXApOiBBcnJhbmdlIGZvciBpdAoJdG8gYmUgY2FsbGVkLgoKVHVlIEphbiAyNyAyMTo0NToxNSAxOTk4ICBKZWZmcmV5IEEgTGF3ICAobGF3QGN5Z251cy5jb20pCgoJKiBhcmNodXJlcy5jIChiZmRfbWFjaF9taXBzKik6IEFkZCBkZWZpbml0aW9ucyBmb3IgdmFyaW91cyBNSVBTCglwcm9jZXNzb3JzLgoJKiBjcHUtbWlwcy5jIChhcmNoX2luZm9fc3RydWN0KTogQWRkIG1pcHMgdmFyaWFudHMuCgkqIGJmZC1pbjIuaDogUmVidWlsdC4KClR1ZSBKYW4gMjcgMTU6MDY6MDQgMTk5OCAgTmljayBDbGlmdG9uICA8bmlja2NAY3lnbnVzLmNvbT4KCgkqIGNvZmYtYXJtLmMgKGNvZmZfYXJtX3JlbG9jYXRlX3NlY3Rpb24pOiBQcmVzZXJ2ZSB0aGUgY29udGVudHMgb2YKCXQyYTNfYl9pbnNuLgoKVHVlIEphbiAyNyAxMjo0NzoyNyAxOTk4ICBSb2JlcnQgTGlwZSAgPHJvYmVydGxAZGdpaS5jb20+CgoJKiBjb25maWcuYmZkIChpWzM0NTZdODYtc2NvMy4ydjUqKTogRUxGIG5vdyB0aGUgZGVmYXVsdC4KCShpWzM0NTZdODZzY28zLjJ2NSpjb2ZmKTogTmV3IHRhcmdldC4KCk1vbiBKYW4gMjYgMTU6NDE6MzAgMTk5OCAgSWFuIExhbmNlIFRheWxvciAgPGlhbkBjeWdudXMuY29tPgoKCSogYmZkLWluMi5oOiBSZWJ1aWxkIHdpdGggY2hhbmdlcyB0byBjaGV3LS10YWIgZXhwYW5zaW9uLgoKVGh1IEphbiAyMiAyMToyNjo0OCAxOTk4ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogYmZkLmMgKGJmZF9nZXRfZXJyb3JfaGFuZGxlcik6IEFkZCBvcnRob2dvbmFsIGZ1bmN0aW9uLgoJKiBiZmQtaW4yLmg6IFJlZ2VuZXJhdGUuCgpUaHUgSmFuIDIyIDIxOjEzOjM5IDE5OTggIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiB0ZWtoZXguYyAodGVraGV4X3dyaXRlX29iamVjdF9jb250ZW50cyk6IENoZWNrIGZvciBubyBzeW1ib2xzLgoKV2VkIEphbiAyMSAyMToxOTowMyAxOTk4ICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQGN5Z251cy5jb20+CgoJKiBjb2ZmLWkzODYuYyAoY29mZl9pMzg2X3J0eXBlX3RvX2hvd3RvKTogSWYgQ09GRl9XSVRIX1BFLCBkb24ndAoJYWRqdXN0IGFkZGVuZCBmb3IgYW4gb3V0cHV0IGNvbW1vbiBzeW1ib2wgKGZyb20gSmltbXkgQmxhaXIKCTxqaW1teWJAd3JzLmNvbT4pLiAgSWYgQ09GRl9XSVRIX1BFLCBhZGp1c3QgYWRkZW5kIGZvciBQQyByZWxhdGl2ZQoJZGVmaW5lZCBzeW1ib2wgdG8gY291bnRlcmFjdCBhZGp1c3RtZW50IG1hZGUgaW4gZ2VuZXJpYyByZWxvY2F0aW9uCgljb2RlLgoKCSogZHdhcmYyLmM6IEluY2x1ZGUgc3lzZGVwLmgsIG5vdCBzdGRpby5oIGFuZCBzdGRsaWIuaC4KCldlZCBKYW4gMjEgMjE6MTY6MDYgMTk5OCAgTWFuZnJlZCBIb2xsc3RlaW4gIDxtYW5mcmVkQHMtZGlyZWt0bmV0LmRlPgoKCSogY29mZi1tODhrLmMgKEdFVF9TQ05ESFJfTlJFTE9DKTogRml4IHR5cG8gaW4gbWFjcm8gbmFtZS4KCShHRVRfU0NOREhSX05MTk5PKTogTGlrZXdpc2UuCgpNb24gSmFuIDE5IDEyOjQ5OjUyIDE5OTggIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5AY3lnbnVzLmNvbT4KCgkqIGNwdS1zaC5jIChhcmNoX2luZm9fc3RydWN0KTogQ29ycmVjdCBuZXh0IGZpZWxkIG9mIHNoM2UuCgpXZWQgSmFuIDE0IDE3OjIzOjI3IDE5OTggIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQGN5Z251cy5jb20+CgoJKiBlbGYzMi1tMzJyLmM6IEFkZCBtYWNyb3MgdG8gaGFuZGxlIE5PUCBpbnNlcnRpb24uCgpXZWQgSmFuIDE0IDE2OjE1OjIyIDE5OTggIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiB4Y29mZmxpbmsuYyAoeGNvZmZfbWFya19zeW1ib2wpOiBEb24ndCBtYXJrIHRoZSBhYnNvbHV0ZSBzZWN0aW9uLgoJKHhjb2ZmX21hcmspOiBMaWtld2lzZS4KCSh4Y29mZl9idWlsZF9sZHN5bXMpOiBNYXJrIGFic29sdXRlIHN5bWJvbHMuCgpXZWQgSmFuIDE0IDE2OjAzOjExIDE5OTggIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBib3V0LmMgKGJfb3V0X3dyaXRlX29iamVjdF9jb250ZW50cyk6IFNvcnQgc3ltYm9scyBiZWZvcmUgb3V0cHV0Cgl0byBrZWVwIHtDQUxMLEJBTH1OQU1FIHN5bWJvbHMgYWRqYWNlbnQuCgkoYl9vdXRfc3ltYm9sX2NtcCk6IE5ldyBmdW5jdGlvbi4KCkZvciBvbGRlciBjaGFuZ2VzIHNlZSBDaGFuZ2VMb2ctOTY5NwoMCkxvY2FsIFZhcmlhYmxlczoKbW9kZTogY2hhbmdlLWxvZwpsZWZ0LW1hcmdpbjogOApmaWxsLWNvbHVtbjogNzQKdmVyc2lvbi1jb250cm9sOiBuZXZlcgpFbmQ6Cg==